summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2007-03-22 21:23:21 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2007-03-22 21:23:21 +0000
commitcbf5993c43f49281173f185863577d86bfac6eae (patch)
tree90737c96cf15b97273a2bdc5950b3cf09f1d94ca
downloadcoreutils-tarball-coreutils-6.9.tar.gz
coreutils-6.9coreutils-6.9
-rw-r--r--.gitignore39
-rw-r--r--.hgignore147
-rw-r--r--.kludge-stamp0
-rw-r--r--.prev-version1
-rw-r--r--.vg-suppressions79
-rw-r--r--.x-po-check4
-rw-r--r--.x-sc_file_system8
-rw-r--r--.x-sc_obsolete_symbols6
-rw-r--r--.x-sc_prohibit_atoi_atof11
-rw-r--r--.x-sc_require_config_h28
-rw-r--r--.x-sc_space_tab11
-rw-r--r--.x-sc_sun_os_names2
-rw-r--r--.x-sc_trailing_blank1
-rw-r--r--.x-sc_unmarked_diagnostics2
-rw-r--r--.x-sc_useless_cpp_parens13
-rw-r--r--ABOUT-NLS1111
-rw-r--r--AUTHORS98
-rw-r--r--COPYING339
-rw-r--r--ChangeLog5539
-rw-r--r--ChangeLog-200511011
-rw-r--r--GNUmakefile58
-rw-r--r--INSTALL234
-rw-r--r--Makefile.am88
-rw-r--r--Makefile.cfg40
-rw-r--r--Makefile.in1010
-rw-r--r--Makefile.maint623
-rw-r--r--NEWS1853
-rw-r--r--README221
-rw-r--r--THANKS531
-rw-r--r--THANKS-to-translators38
-rw-r--r--THANKStt.in4
-rw-r--r--TODO198
-rw-r--r--aclocal.m41172
-rwxr-xr-xbootstrap550
-rw-r--r--bootstrap.conf112
-rw-r--r--build-aux/ChangeLog232
-rwxr-xr-xbuild-aux/compile142
-rwxr-xr-xbuild-aux/config.guess1516
-rwxr-xr-xbuild-aux/config.rpath660
-rwxr-xr-xbuild-aux/config.sub1622
-rwxr-xr-xbuild-aux/cvsu514
-rwxr-xr-xbuild-aux/depcomp584
-rwxr-xr-xbuild-aux/install-sh519
-rwxr-xr-xbuild-aux/mdate-sh201
-rwxr-xr-xbuild-aux/missing367
-rw-r--r--build-aux/texinfo.tex8359
-rwxr-xr-xbuild-aux/vc-list-files60
-rwxr-xr-xbuild-aux/ylwrap223
-rwxr-xr-xconfigure55781
-rw-r--r--configure.ac307
-rw-r--r--doc/ChangeLog1971
-rw-r--r--doc/Makefile.am74
-rw-r--r--doc/Makefile.in976
-rw-r--r--doc/constants.texi1
-rw-r--r--doc/coreutils.info15863
-rw-r--r--doc/coreutils.texi14638
-rw-r--r--doc/fdl.texi452
-rw-r--r--doc/getdate.texi553
-rw-r--r--doc/perm.texi604
-rw-r--r--doc/stamp-vti4
-rw-r--r--doc/version.texi4
-rw-r--r--gl/modules/getloadavg.diff16
-rw-r--r--lib/ChangeLog8749
-rw-r--r--lib/Makefile.am38
-rw-r--r--lib/Makefile.in1636
-rw-r--r--lib/TODO40
-rw-r--r--lib/__fpending.c30
-rw-r--r--lib/__fpending.h34
-rw-r--r--lib/acl-internal.h86
-rw-r--r--lib/acl.c256
-rw-r--r--lib/acl.h35
-rw-r--r--lib/acl_entries.c39
-rw-r--r--lib/alloca.c489
-rw-r--r--lib/alloca_.h54
-rw-r--r--lib/allocsa.c137
-rw-r--r--lib/allocsa.h128
-rw-r--r--lib/allocsa.valgrind7
-rw-r--r--lib/argmatch.c278
-rw-r--r--lib/argmatch.h103
-rw-r--r--lib/asnprintf.c35
-rw-r--r--lib/asprintf.c35
-rw-r--r--lib/at-func.c86
-rw-r--r--lib/atexit.c13
-rw-r--r--lib/backupfile.c364
-rw-r--r--lib/backupfile.h61
-rw-r--r--lib/base64.c561
-rw-r--r--lib/base64.h56
-rw-r--r--lib/basename.c129
-rw-r--r--lib/buffer-lcm.c59
-rw-r--r--lib/buffer-lcm.h2
-rw-r--r--lib/c-ctype.c396
-rw-r--r--lib/c-ctype.h280
-rw-r--r--lib/c-strcase.h55
-rw-r--r--lib/c-strcasecmp.c57
-rw-r--r--lib/c-strncasecmp.c57
-rw-r--r--lib/c-strtod.c79
-rw-r--r--lib/c-strtod.h2
-rw-r--r--lib/c-strtold.c2
-rw-r--r--lib/calloc.c44
-rw-r--r--lib/canon-host.c92
-rw-r--r--lib/canon-host.h30
-rw-r--r--lib/canonicalize.c307
-rw-r--r--lib/canonicalize.h54
-rw-r--r--lib/chdir-long.c265
-rw-r--r--lib/chdir-long.h35
-rw-r--r--lib/chown.c104
-rw-r--r--lib/cloexec.c59
-rw-r--r--lib/cloexec.h2
-rw-r--r--lib/close-stream.c76
-rw-r--r--lib/close-stream.h2
-rw-r--r--lib/closeout.c86
-rw-r--r--lib/closeout.h33
-rwxr-xr-xlib/config.charset639
-rw-r--r--lib/config.hin1959
-rw-r--r--lib/creat-safer.c32
-rw-r--r--lib/cycle-check.c87
-rw-r--r--lib/cycle-check.h54
-rw-r--r--lib/dev-ino.h13
-rw-r--r--lib/diacrit.c163
-rw-r--r--lib/diacrit.h29
-rw-r--r--lib/dirchownmod.c144
-rw-r--r--lib/dirchownmod.h2
-rw-r--r--lib/dirent_.h42
-rw-r--r--lib/dirfd.c29
-rw-r--r--lib/dirfd.h29
-rw-r--r--lib/dirname.c85
-rw-r--r--lib/dirname.h70
-rw-r--r--lib/dup-safer.c45
-rw-r--r--lib/dup2.c58
-rw-r--r--lib/error.c338
-rw-r--r--lib/error.h66
-rw-r--r--lib/euidaccess-stat.c143
-rw-r--r--lib/euidaccess-stat.h5
-rw-r--r--lib/euidaccess.c221
-rw-r--r--lib/euidaccess.h3
-rw-r--r--lib/exclude.c275
-rw-r--r--lib/exclude.h44
-rw-r--r--lib/exitfail.c26
-rw-r--r--lib/exitfail.h20
-rw-r--r--lib/fchdir.c279
-rw-r--r--lib/fchmodat.c50
-rw-r--r--lib/fchown-stub.c16
-rw-r--r--lib/fchownat.c50
-rw-r--r--lib/fcntl--.h28
-rw-r--r--lib/fcntl-safer.h24
-rw-r--r--lib/fcntl_.h116
-rw-r--r--lib/fd-reopen.c49
-rw-r--r--lib/fd-reopen.h23
-rw-r--r--lib/fd-safer.c57
-rw-r--r--lib/file-has-acl.c87
-rw-r--r--lib/file-type.c72
-rw-r--r--lib/file-type.h30
-rw-r--r--lib/fileblocks.c75
-rw-r--r--lib/filemode.c181
-rw-r--r--lib/filemode.h33
-rw-r--r--lib/filenamecat.c124
-rw-r--r--lib/filenamecat.h22
-rw-r--r--lib/fnmatch.c354
-rw-r--r--lib/fnmatch_.h65
-rw-r--r--lib/fnmatch_loop.c1210
-rw-r--r--lib/fopen-safer.c68
-rw-r--r--lib/fprintftime.c2
-rw-r--r--lib/fprintftime.h30
-rw-r--r--lib/free.c31
-rw-r--r--lib/fstatat.c57
-rw-r--r--lib/fsusage.c264
-rw-r--r--lib/fsusage.h41
-rw-r--r--lib/ftruncate.c90
-rw-r--r--lib/fts-cycle.c161
-rw-r--r--lib/fts.c1712
-rw-r--r--lib/fts_.h233
-rw-r--r--lib/full-read.c19
-rw-r--r--lib/full-read.h24
-rw-r--r--lib/full-write.c81
-rw-r--r--lib/full-write.h35
-rw-r--r--lib/gai_strerror.c78
-rw-r--r--lib/getaddrinfo.c418
-rw-r--r--lib/getaddrinfo.h155
-rw-r--r--lib/getcwd.c428
-rw-r--r--lib/getdate.c3359
-rw-r--r--lib/getdate.h23
-rw-r--r--lib/getdate.y1520
-rw-r--r--lib/getdelim.c126
-rw-r--r--lib/getdelim.h28
-rw-r--r--lib/getgroups.c66
-rw-r--r--lib/gethostname.c52
-rw-r--r--lib/gethrxtime.c69
-rw-r--r--lib/gethrxtime.h38
-rw-r--r--lib/getline.c30
-rw-r--r--lib/getline.h28
-rw-r--r--lib/getloadavg.c1020
-rw-r--r--lib/getndelim2.c143
-rw-r--r--lib/getndelim2.h43
-rw-r--r--lib/getopt.c1191
-rw-r--r--lib/getopt1.c171
-rw-r--r--lib/getopt_.h226
-rw-r--r--lib/getopt_int.h131
-rw-r--r--lib/getpagesize.h68
-rw-r--r--lib/getpass.c233
-rw-r--r--lib/getpass.h31
-rw-r--r--lib/gettext.h270
-rw-r--r--lib/gettime.c49
-rw-r--r--lib/gettimeofday.c142
-rw-r--r--lib/getugroups.c104
-rw-r--r--lib/getusershell.c171
-rw-r--r--lib/gnulib.mk2255
-rw-r--r--lib/group-member.c133
-rw-r--r--lib/group-member.h26
-rw-r--r--lib/hard-locale.c71
-rw-r--r--lib/hard-locale.h26
-rw-r--r--lib/hash-pjw.c41
-rw-r--r--lib/hash-pjw.h25
-rw-r--r--lib/hash.c1048
-rw-r--r--lib/hash.h88
-rw-r--r--lib/human.c479
-rw-r--r--lib/human.h83
-rw-r--r--lib/i-ring.c69
-rw-r--r--lib/i-ring.h45
-rw-r--r--lib/idcache.c221
-rw-r--r--lib/imaxtostr.c3
-rw-r--r--lib/inet_ntop.c238
-rw-r--r--lib/inet_ntop.h42
-rw-r--r--lib/intprops.h78
-rw-r--r--lib/inttostr.c51
-rw-r--r--lib/inttostr.h30
-rw-r--r--lib/inttypes_.h1095
-rw-r--r--lib/isapipe.c91
-rw-r--r--lib/isapipe.h6
-rw-r--r--lib/lchmod.h35
-rw-r--r--lib/lchown.c47
-rw-r--r--lib/lchown.h42
-rw-r--r--lib/linebuffer.c96
-rw-r--r--lib/linebuffer.h46
-rw-r--r--lib/localcharset.c460
-rw-r--r--lib/localcharset.h41
-rw-r--r--lib/long-options.c89
-rw-r--r--lib/long-options.h26
-rw-r--r--lib/lstat.c76
-rw-r--r--lib/lstat.h24
-rw-r--r--lib/malloc.c35
-rw-r--r--lib/mbchar.c36
-rw-r--r--lib/mbchar.h353
-rw-r--r--lib/mbscasecmp.c103
-rw-r--r--lib/mbswidth.c179
-rw-r--r--lib/mbswidth.h61
-rw-r--r--lib/mbuiter.h222
-rw-r--r--lib/md5.c451
-rw-r--r--lib/md5.h124
-rw-r--r--lib/memcasecmp.c49
-rw-r--r--lib/memcasecmp.h23
-rw-r--r--lib/memchr.c201
-rw-r--r--lib/memcmp.c363
-rw-r--r--lib/memcoll.c96
-rw-r--r--lib/memcoll.h28
-rw-r--r--lib/memcpy.c36
-rw-r--r--lib/memmove.c26
-rw-r--r--lib/mempcpy.c29
-rw-r--r--lib/memrchr.c190
-rw-r--r--lib/memset.c28
-rw-r--r--lib/memxfrm.c106
-rw-r--r--lib/memxfrm.h2
-rw-r--r--lib/mkancesdirs.c154
-rw-r--r--lib/mkancesdirs.h4
-rw-r--r--lib/mkdir-p.c209
-rw-r--r--lib/mkdir-p.h36
-rw-r--r--lib/mkdir.c63
-rw-r--r--lib/mkdirat.c43
-rw-r--r--lib/mkstemp-safer.c35
-rw-r--r--lib/mkstemp.c45
-rw-r--r--lib/mktime.c663
-rw-r--r--lib/modechange.c386
-rw-r--r--lib/modechange.h31
-rw-r--r--lib/mountlist.c885
-rw-r--r--lib/mountlist.h41
-rw-r--r--lib/mpsort.c157
-rw-r--r--lib/mpsort.h2
-rw-r--r--lib/nanosleep.c192
-rw-r--r--lib/netinet_in_.h37
-rw-r--r--lib/obstack.c431
-rw-r--r--lib/obstack.h513
-rw-r--r--lib/offtostr.c3
-rw-r--r--lib/open-safer.c50
-rw-r--r--lib/openat-die.c51
-rw-r--r--lib/openat-priv.h55
-rw-r--r--lib/openat-proc.c95
-rw-r--r--lib/openat.c270
-rw-r--r--lib/openat.h127
-rw-r--r--lib/pathmax.h47
-rw-r--r--lib/physmem.c305
-rw-r--r--lib/physmem.h27
-rw-r--r--lib/pipe-safer.c57
-rw-r--r--lib/posixtm.c328
-rw-r--r--lib/posixtm.h37
-rw-r--r--lib/posixver.c56
-rw-r--r--lib/posixver.h1
-rw-r--r--lib/printf-args.c141
-rw-r--r--lib/printf-args.h136
-rw-r--r--lib/printf-parse.c538
-rw-r--r--lib/printf-parse.h74
-rw-r--r--lib/putenv.c138
-rw-r--r--lib/quote.c41
-rw-r--r--lib/quote.h22
-rw-r--r--lib/quotearg.c697
-rw-r--r--lib/quotearg.h140
-rw-r--r--lib/raise.c31
-rw-r--r--lib/rand-isaac.c301
-rw-r--r--lib/rand-isaac.h44
-rw-r--r--lib/randint.c228
-rw-r--r--lib/randint.h52
-rw-r--r--lib/randperm.c103
-rw-r--r--lib/randperm.h4
-rw-r--r--lib/randread.c298
-rw-r--r--lib/randread.h34
-rw-r--r--lib/readlink.c50
-rw-r--r--lib/readtokens.c204
-rw-r--r--lib/readtokens.h43
-rw-r--r--lib/readtokens0.c100
-rw-r--r--lib/readtokens0.h43
-rw-r--r--lib/readutmp.c166
-rw-r--r--lib/readutmp.h217
-rw-r--r--lib/realloc.c45
-rw-r--r--lib/ref-add.sin30
-rw-r--r--lib/ref-del.sin25
-rw-r--r--lib/regcomp.c3832
-rw-r--r--lib/regex.c71
-rw-r--r--lib/regex.h675
-rw-r--r--lib/regex_internal.c1741
-rw-r--r--lib/regex_internal.h857
-rw-r--r--lib/regexec.c4398
-rw-r--r--lib/rename-dest-slash.c88
-rw-r--r--lib/rename.c57
-rw-r--r--lib/rmdir.c74
-rw-r--r--lib/root-dev-ino.c40
-rw-r--r--lib/root-dev-ino.h50
-rw-r--r--lib/rpmatch.c79
-rw-r--r--lib/safe-read.c78
-rw-r--r--lib/safe-read.h35
-rw-r--r--lib/safe-write.c19
-rw-r--r--lib/safe-write.h25
-rw-r--r--lib/same-inode.h26
-rw-r--r--lib/same.c126
-rw-r--r--lib/same.h27
-rw-r--r--lib/save-cwd.c103
-rw-r--r--lib/save-cwd.h34
-rw-r--r--lib/savedir.c137
-rw-r--r--lib/savedir.h27
-rw-r--r--lib/savewd.c307
-rw-r--r--lib/savewd.h149
-rw-r--r--lib/setenv.c332
-rw-r--r--lib/setenv.h54
-rw-r--r--lib/settime.c71
-rw-r--r--lib/sha1.c416
-rw-r--r--lib/sha1.h87
-rw-r--r--lib/sha256.c546
-rw-r--r--lib/sha256.h88
-rw-r--r--lib/sha512.c596
-rw-r--r--lib/sha512.h89
-rw-r--r--lib/sig2str.c344
-rw-r--r--lib/sig2str.h44
-rw-r--r--lib/snprintf.c77
-rw-r--r--lib/socket_.h85
-rw-r--r--lib/stat-macros.h3
-rw-r--r--lib/stat-time.h134
-rw-r--r--lib/stat_.h275
-rw-r--r--lib/stdbool_.h118
-rw-r--r--lib/stdint_.h504
-rw-r--r--lib/stdio--.h28
-rw-r--r--lib/stdio-safer.h24
-rw-r--r--lib/stdio_.h192
-rw-r--r--lib/stdlib--.h25
-rw-r--r--lib/stdlib-safer.h21
-rw-r--r--lib/stdlib_.h141
-rw-r--r--lib/stpcpy.c49
-rw-r--r--lib/strcspn.c41
-rw-r--r--lib/strdup.c55
-rw-r--r--lib/strftime.c1462
-rw-r--r--lib/strftime.h21
-rw-r--r--lib/string_.h544
-rw-r--r--lib/strintcmp.c33
-rw-r--r--lib/stripslash.c45
-rw-r--r--lib/strndup.c37
-rw-r--r--lib/strnlen.c31
-rw-r--r--lib/strnlen1.c36
-rw-r--r--lib/strnlen1.h40
-rw-r--r--lib/strnumcmp-in.h246
-rw-r--r--lib/strnumcmp.c32
-rw-r--r--lib/strnumcmp.h2
-rw-r--r--lib/strpbrk.c42
-rw-r--r--lib/strtod.c174
-rw-r--r--lib/strtoimax.c76
-rw-r--r--lib/strtol.c436
-rw-r--r--lib/strtoll.c33
-rw-r--r--lib/strtoul.c20
-rw-r--r--lib/strtoull.c27
-rw-r--r--lib/strtoumax.c2
-rw-r--r--lib/strverscmp.c131
-rw-r--r--lib/strverscmp.h24
-rw-r--r--lib/sys_time_.h44
-rw-r--r--lib/t-fpending.c42
-rw-r--r--lib/tempname.c315
-rw-r--r--lib/tempname.h40
-rw-r--r--lib/time_.h107
-rw-r--r--lib/time_r.c47
-rw-r--r--lib/timespec.h37
-rw-r--r--lib/u64.h160
-rw-r--r--lib/uinttostr.c3
-rw-r--r--lib/umaxtostr.c3
-rw-r--r--lib/unicodeio.c257
-rw-r--r--lib/unicodeio.h49
-rw-r--r--lib/unistd--.h28
-rw-r--r--lib/unistd-safer.h23
-rw-r--r--lib/unistd_.h192
-rw-r--r--lib/unlinkdir.c68
-rw-r--r--lib/unlinkdir.h27
-rw-r--r--lib/unlocked-io.h137
-rw-r--r--lib/unsetenv.c92
-rw-r--r--lib/userspec.c303
-rw-r--r--lib/userspec.h10
-rw-r--r--lib/utime.c109
-rw-r--r--lib/utimecmp.c325
-rw-r--r--lib/utimecmp.h38
-rw-r--r--lib/utimens.c189
-rw-r--r--lib/utimens.h3
-rw-r--r--lib/vasnprintf.c935
-rw-r--r--lib/vasnprintf.h81
-rw-r--r--lib/vasprintf.c52
-rw-r--r--lib/vasprintf.h69
-rw-r--r--lib/verify.h141
-rw-r--r--lib/version-etc-fsf.c31
-rw-r--r--lib/version-etc.c173
-rw-r--r--lib/version-etc.h37
-rw-r--r--lib/wchar_.h42
-rw-r--r--lib/wctype_.h154
-rw-r--r--lib/wcwidth.h57
-rw-r--r--lib/xalloc-die.c42
-rw-r--r--lib/xalloc.h271
-rw-r--r--lib/xfts.c64
-rw-r--r--lib/xfts.h5
-rw-r--r--lib/xgetcwd.c41
-rw-r--r--lib/xgetcwd.h18
-rw-r--r--lib/xgethostname.c79
-rw-r--r--lib/xgethostname.h1
-rw-r--r--lib/xmalloc.c123
-rw-r--r--lib/xmemcoll.c58
-rw-r--r--lib/xmemcoll.h2
-rw-r--r--lib/xmemxfrm.c63
-rw-r--r--lib/xmemxfrm.h2
-rw-r--r--lib/xnanosleep.c107
-rw-r--r--lib/xnanosleep.h1
-rw-r--r--lib/xreadlink-with-size.c105
-rw-r--r--lib/xreadlink.c131
-rw-r--r--lib/xreadlink.h34
-rw-r--r--lib/xstrndup.c37
-rw-r--r--lib/xstrndup.h24
-rw-r--r--lib/xstrtod.c72
-rw-r--r--lib/xstrtod.h31
-rw-r--r--lib/xstrtoimax.c6
-rw-r--r--lib/xstrtol.c263
-rw-r--r--lib/xstrtol.h87
-rw-r--r--lib/xstrtold.c2
-rw-r--r--lib/xstrtoul.c6
-rw-r--r--lib/xstrtoumax.c6
-rw-r--r--lib/xtime.h87
-rw-r--r--lib/yesno.c64
-rw-r--r--lib/yesno.h26
-rw-r--r--m4/ChangeLog5000
-rw-r--r--m4/absolute-header.m444
-rw-r--r--m4/acl.m478
-rw-r--r--m4/alloca.m450
-rw-r--r--m4/allocsa.m415
-rw-r--r--m4/argmatch.m410
-rw-r--r--m4/arpa_inet_h.m418
-rw-r--r--m4/assert.m419
-rw-r--r--m4/atexit.m418
-rw-r--r--m4/autobuild.m434
-rw-r--r--m4/backupfile.m416
-rw-r--r--m4/base64.m416
-rw-r--r--m4/bison.m424
-rw-r--r--m4/boottime.m465
-rw-r--r--m4/c-strtod.m453
-rw-r--r--m4/calloc.m443
-rw-r--r--m4/canon-host.m415
-rw-r--r--m4/canonicalize.m417
-rw-r--r--m4/chdir-long.m438
-rw-r--r--m4/check-decl.m449
-rw-r--r--m4/chown.m483
-rw-r--r--m4/clock_time.m430
-rw-r--r--m4/cloexec.m410
-rw-r--r--m4/close-stream.m413
-rw-r--r--m4/closeout.m413
-rw-r--r--m4/codeset.m421
-rw-r--r--m4/config-h.m413
-rw-r--r--m4/cycle-check.m411
-rw-r--r--m4/d-ino.m435
-rw-r--r--m4/d-type.m435
-rw-r--r--m4/dirfd.m474
-rw-r--r--m4/dirname.m418
-rw-r--r--m4/dos.m471
-rw-r--r--m4/double-slash-root.m438
-rw-r--r--m4/dup2.m415
-rw-r--r--m4/eealloc.m432
-rw-r--r--m4/eoverflow.m470
-rw-r--r--m4/error.m422
-rw-r--r--m4/euidaccess-stat.m411
-rw-r--r--m4/euidaccess.m447
-rw-r--r--m4/exclude.m410
-rw-r--r--m4/exitfail.m413
-rw-r--r--m4/extensions.m458
-rw-r--r--m4/fchdir.m428
-rw-r--r--m4/fcntl-safer.m411
-rw-r--r--m4/fcntl_h.m481
-rw-r--r--m4/fd-reopen.m415
-rw-r--r--m4/file-type.m410
-rw-r--r--m4/fileblocks.m420
-rw-r--r--m4/filemode.m412
-rw-r--r--m4/filenamecat.m413
-rw-r--r--m4/flexmember.m441
-rw-r--r--m4/fnmatch.m4127
-rw-r--r--m4/fpending.m478
-rw-r--r--m4/fprintftime.m410
-rw-r--r--m4/free.m440
-rw-r--r--m4/fstypename.m422
-rw-r--r--m4/fsusage.m4265
-rw-r--r--m4/ftruncate.m446
-rw-r--r--m4/fts.m428
-rw-r--r--m4/getaddrinfo.m488
-rw-r--r--m4/getcwd-abort-bug.m4106
-rw-r--r--m4/getcwd-path-max.m4189
-rw-r--r--m4/getcwd.m464
-rw-r--r--m4/getdate.m433
-rw-r--r--m4/getdelim.m429
-rw-r--r--m4/getgroups.m429
-rw-r--r--m4/gethostname.m418
-rw-r--r--m4/gethrxtime.m474
-rw-r--r--m4/getline.m479
-rw-r--r--m4/getloadavg.m4155
-rw-r--r--m4/getndelim2.m419
-rw-r--r--m4/getopt.m483
-rw-r--r--m4/getpagesize.m413
-rw-r--r--m4/getpass.m447
-rw-r--r--m4/gettext.m4420
-rw-r--r--m4/gettime.m415
-rw-r--r--m4/gettimeofday.m4101
-rw-r--r--m4/getugroups.m413
-rw-r--r--m4/getusershell.m410
-rw-r--r--m4/glibc21.m430
-rw-r--r--m4/gnulib-common.m422
-rw-r--r--m4/gnulib-comp.m4945
-rw-r--r--m4/group-member.m429
-rw-r--r--m4/hard-locale.m411
-rw-r--r--m4/hash.m413
-rw-r--r--m4/host-os.m482
-rw-r--r--m4/human.m413
-rw-r--r--m4/i-ring.m410
-rw-r--r--m4/iconv.m4101
-rw-r--r--m4/idcache.m410
-rw-r--r--m4/inet_ntop.m419
-rw-r--r--m4/inline.m440
-rw-r--r--m4/intmax_t.m461
-rw-r--r--m4/inttostr.m437
-rw-r--r--m4/inttypes-pri.m436
-rw-r--r--m4/inttypes.m4223
-rw-r--r--m4/inttypes_h.m426
-rw-r--r--m4/isapipe.m489
-rw-r--r--m4/jm-macros.m4180
-rw-r--r--m4/jm-winsz1.m447
-rw-r--r--m4/jm-winsz2.m428
-rw-r--r--m4/lchmod.m414
-rw-r--r--m4/lchown.m419
-rw-r--r--m4/lib-check.m461
-rw-r--r--m4/lib-ignore.m443
-rw-r--r--m4/lib-ld.m4110
-rw-r--r--m4/lib-link.m4709
-rw-r--r--m4/lib-prefix.m4185
-rw-r--r--m4/link-follow.m464
-rw-r--r--m4/localcharset.m416
-rw-r--r--m4/long-options.m412
-rw-r--r--m4/longdouble.m431
-rw-r--r--m4/longlong.m472
-rw-r--r--m4/ls-mntd-fs.m4337
-rw-r--r--m4/lstat.m417
-rw-r--r--m4/mbchar.m413
-rw-r--r--m4/mbiter.m417
-rw-r--r--m4/mbrtowc.m431
-rw-r--r--m4/mbscasecmp.m416
-rw-r--r--m4/mbstate_t.m430
-rw-r--r--m4/mbswidth.m442
-rw-r--r--m4/md5.m414
-rw-r--r--m4/memcasecmp.m410
-rw-r--r--m4/memchr.m418
-rw-r--r--m4/memcmp.m419
-rw-r--r--m4/memcoll.m413
-rw-r--r--m4/memcpy.m418
-rw-r--r--m4/memmove.m418
-rw-r--r--m4/mempcpy.m426
-rw-r--r--m4/memrchr.m425
-rw-r--r--m4/memset.m418
-rw-r--r--m4/memxfrm.m415
-rw-r--r--m4/mkancesdirs.m410
-rw-r--r--m4/mkdir-p.m416
-rw-r--r--m4/mkdir-slash.m448
-rw-r--r--m4/mkstemp.m456
-rw-r--r--m4/mktime.m4227
-rw-r--r--m4/modechange.m410
-rw-r--r--m4/mountlist.m423
-rw-r--r--m4/mpsort.m413
-rw-r--r--m4/nanosleep.m4116
-rw-r--r--m4/netinet_in_h.m432
-rw-r--r--m4/nls.m431
-rw-r--r--m4/openat.m493
-rw-r--r--m4/pathmax.m411
-rw-r--r--m4/perl.m445
-rw-r--r--m4/physmem.m439
-rw-r--r--m4/po.m4428
-rw-r--r--m4/posixtm.m412
-rw-r--r--m4/posixver.m445
-rw-r--r--m4/prereq.m453
-rw-r--r--m4/progtest.m492
-rw-r--r--m4/putenv.m439
-rw-r--r--m4/quote.m413
-rw-r--r--m4/quotearg.m415
-rw-r--r--m4/randint.m412
-rw-r--r--m4/randperm.m410
-rw-r--r--m4/randread.m411
-rw-r--r--m4/readlink.m429
-rw-r--r--m4/readtokens.m413
-rw-r--r--m4/readutmp.m462
-rw-r--r--m4/regex.m4211
-rw-r--r--m4/rename-dest-slash.m441
-rw-r--r--m4/rename.m452
-rw-r--r--m4/rmdir-errno.m449
-rw-r--r--m4/rmdir.m410
-rw-r--r--m4/root-dev-ino.m416
-rw-r--r--m4/rpmatch.m416
-rw-r--r--m4/safe-read.m418
-rw-r--r--m4/safe-write.m418
-rw-r--r--m4/same.m414
-rw-r--r--m4/save-cwd.m412
-rw-r--r--m4/savedir.m410
-rw-r--r--m4/savewd.m49
-rw-r--r--m4/setenv.m482
-rw-r--r--m4/settime.m415
-rw-r--r--m4/sha1.m414
-rw-r--r--m4/sha256.m415
-rw-r--r--m4/sha512.m415
-rw-r--r--m4/sig2str.m419
-rw-r--r--m4/snprintf.m431
-rw-r--r--m4/socklen.m452
-rw-r--r--m4/sockpfaf.m458
-rw-r--r--m4/ssize_t.m421
-rw-r--r--m4/st_dm_mode.m422
-rw-r--r--m4/stat-prog.m487
-rw-r--r--m4/stat-time.m463
-rw-r--r--m4/stdarg.m440
-rw-r--r--m4/stdbool.m4115
-rw-r--r--m4/stdint.m4369
-rw-r--r--m4/stdint_h.m426
-rw-r--r--m4/stdio-safer.m415
-rw-r--r--m4/stdio_h.m443
-rw-r--r--m4/stdlib-safer.m410
-rw-r--r--m4/stdlib_h.m431
-rw-r--r--m4/stpcpy.m423
-rw-r--r--m4/strcspn.m416
-rw-r--r--m4/strdup.m422
-rw-r--r--m4/strftime.m433
-rw-r--r--m4/string_h.m478
-rw-r--r--m4/strndup.m453
-rw-r--r--m4/strnlen.m431
-rw-r--r--m4/strnumcmp.m427
-rw-r--r--m4/strpbrk.m418
-rw-r--r--m4/strtod.m420
-rw-r--r--m4/strtoimax.m434
-rw-r--r--m4/strtol.m410
-rw-r--r--m4/strtoll.m423
-rw-r--r--m4/strtoul.m410
-rw-r--r--m4/strtoull.m423
-rw-r--r--m4/strtoumax.m434
-rw-r--r--m4/strverscmp.m421
-rw-r--r--m4/sys_socket_h.m454
-rw-r--r--m4/sys_stat_h.m432
-rw-r--r--m4/sys_time_h.m461
-rw-r--r--m4/tempname.m422
-rw-r--r--m4/time_h.m476
-rw-r--r--m4/time_r.m441
-rw-r--r--m4/timespec.m416
-rw-r--r--m4/tm_gmtoff.m414
-rw-r--r--m4/tzset.m459
-rw-r--r--m4/unicodeio.m411
-rw-r--r--m4/unistd-safer.m413
-rw-r--r--m4/unistd_h.m451
-rw-r--r--m4/unlink-busy.m435
-rw-r--r--m4/unlinkdir.m433
-rw-r--r--m4/unlocked-io.m442
-rw-r--r--m4/uptime.m423
-rw-r--r--m4/userspec.m413
-rw-r--r--m4/utimbuf.m439
-rw-r--r--m4/utime.m430
-rw-r--r--m4/utimecmp.m414
-rw-r--r--m4/utimens.m415
-rw-r--r--m4/utimes-null.m441
-rw-r--r--m4/utimes.m483
-rw-r--r--m4/vasnprintf.m468
-rw-r--r--m4/vasprintf.m443
-rw-r--r--m4/wchar.m429
-rw-r--r--m4/wchar_t.m420
-rw-r--r--m4/wctype.m441
-rw-r--r--m4/wcwidth.m430
-rw-r--r--m4/wint_t.m428
-rw-r--r--m4/xalloc.m424
-rw-r--r--m4/xfts.m414
-rw-r--r--m4/xgetcwd.m412
-rw-r--r--m4/xnanosleep.m412
-rw-r--r--m4/xstrndup.m415
-rw-r--r--m4/xstrtod.m417
-rw-r--r--m4/xstrtol.m411
-rw-r--r--m4/yesno.m413
-rw-r--r--man/Makefile.am208
-rw-r--r--man/Makefile.in900
-rw-r--r--man/base64.156
-rw-r--r--man/base64.x4
-rw-r--r--man/basename.152
-rw-r--r--man/basename.x6
-rw-r--r--man/cat.178
-rw-r--r--man/cat.x4
-rw-r--r--man/chgrp.196
-rw-r--r--man/chgrp.x4
-rw-r--r--man/chmod.1147
-rw-r--r--man/chmod.x88
-rw-r--r--man/chown.1130
-rw-r--r--man/chown.x30
-rw-r--r--man/chroot.146
-rw-r--r--man/chroot.x6
-rw-r--r--man/cksum.142
-rw-r--r--man/cksum.x4
-rw-r--r--man/comm.152
-rw-r--r--man/comm.x4
-rw-r--r--man/cp.1158
-rw-r--r--man/cp.x4
-rw-r--r--man/csplit.179
-rw-r--r--man/csplit.x4
-rw-r--r--man/cut.188
-rw-r--r--man/cut.x4
-rw-r--r--man/date.1229
-rw-r--r--man/date.x4
-rw-r--r--man/dd.1162
-rw-r--r--man/dd.x4
-rw-r--r--man/df.1108
-rw-r--r--man/df.x30
-rw-r--r--man/dir.1247
-rw-r--r--man/dir.x4
-rw-r--r--man/dircolors.153
-rw-r--r--man/dircolors.x4
-rw-r--r--man/dirname.152
-rw-r--r--man/dirname.x6
-rw-r--r--man/du.1153
-rw-r--r--man/du.x28
-rw-r--r--man/echo.184
-rw-r--r--man/echo.x4
-rw-r--r--man/env.147
-rw-r--r--man/env.x4
-rw-r--r--man/expand.153
-rw-r--r--man/expand.x6
-rw-r--r--man/expr.1113
-rw-r--r--man/expr.x4
-rw-r--r--man/factor.145
-rw-r--r--man/factor.x4
-rw-r--r--man/false.146
-rw-r--r--man/false.x4
-rw-r--r--man/fmt.163
-rw-r--r--man/fmt.x4
-rw-r--r--man/fold.151
-rw-r--r--man/fold.x4
-rw-r--r--man/groups.139
-rw-r--r--man/groups.x4
-rw-r--r--man/head.161
-rw-r--r--man/head.x4
-rwxr-xr-xman/help2man636
-rw-r--r--man/hostid.142
-rw-r--r--man/hostid.x4
-rw-r--r--man/hostname.142
-rw-r--r--man/hostname.x4
-rw-r--r--man/id.159
-rw-r--r--man/id.x4
-rw-r--r--man/install.1113
-rw-r--r--man/install.x4
-rw-r--r--man/join.179
-rw-r--r--man/join.x4
-rw-r--r--man/kill.167
-rw-r--r--man/kill.x6
-rw-r--r--man/link.144
-rw-r--r--man/link.x6
-rw-r--r--man/ln.1109
-rw-r--r--man/ln.x6
-rw-r--r--man/logname.139
-rw-r--r--man/logname.x4
-rw-r--r--man/ls.1247
-rw-r--r--man/ls.x4
-rw-r--r--man/md5sum.161
-rw-r--r--man/md5sum.x4
-rw-r--r--man/mkdir.152
-rw-r--r--man/mkdir.x6
-rw-r--r--man/mkfifo.146
-rw-r--r--man/mkfifo.x6
-rw-r--r--man/mknod.160
-rw-r--r--man/mknod.x6
-rw-r--r--man/mv.198
-rw-r--r--man/mv.x6
-rw-r--r--man/nice.150
-rw-r--r--man/nice.x6
-rw-r--r--man/nl.1103
-rw-r--r--man/nl.x4
-rw-r--r--man/nohup.146
-rw-r--r--man/nohup.x4
-rw-r--r--man/od.1147
-rw-r--r--man/od.x4
-rw-r--r--man/paste.149
-rw-r--r--man/paste.x4
-rw-r--r--man/pathchk.148
-rw-r--r--man/pathchk.x4
-rw-r--r--man/pinky.168
-rw-r--r--man/pinky.x4
-rw-r--r--man/pr.1137
-rw-r--r--man/pr.x4
-rw-r--r--man/printenv.146
-rw-r--r--man/printenv.x4
-rw-r--r--man/printf.1100
-rw-r--r--man/printf.x4
-rw-r--r--man/ptx.196
-rw-r--r--man/ptx.x4
-rw-r--r--man/pwd.145
-rw-r--r--man/pwd.x6
-rw-r--r--man/readlink.167
-rw-r--r--man/readlink.x6
-rw-r--r--man/rm.1107
-rw-r--r--man/rm.x32
-rw-r--r--man/rmdir.153
-rw-r--r--man/rmdir.x6
-rw-r--r--man/seq.163
-rw-r--r--man/seq.x4
-rw-r--r--man/sha1sum.161
-rw-r--r--man/sha1sum.x4
-rw-r--r--man/sha224sum.161
-rw-r--r--man/sha224sum.x4
-rw-r--r--man/sha256sum.161
-rw-r--r--man/sha256sum.x4
-rw-r--r--man/sha384sum.161
-rw-r--r--man/sha384sum.x4
-rw-r--r--man/sha512sum.161
-rw-r--r--man/sha512sum.x4
-rw-r--r--man/shred.1106
-rw-r--r--man/shred.x4
-rw-r--r--man/shuf.167
-rw-r--r--man/shuf.x4
-rw-r--r--man/sleep.148
-rw-r--r--man/sleep.x6
-rw-r--r--man/sort.1129
-rw-r--r--man/sort.x4
-rw-r--r--man/split.164
-rw-r--r--man/split.x4
-rw-r--r--man/stat.1181
-rw-r--r--man/stat.x6
-rw-r--r--man/stty.1405
-rw-r--r--man/stty.x4
-rw-r--r--man/su.159
-rw-r--r--man/su.x4
-rw-r--r--man/sum.147
-rw-r--r--man/sum.x4
-rw-r--r--man/sync.141
-rw-r--r--man/sync.x6
-rw-r--r--man/tac.151
-rw-r--r--man/tac.x4
-rw-r--r--man/tail.197
-rw-r--r--man/tail.x4
-rw-r--r--man/tee.147
-rw-r--r--man/tee.x4
-rw-r--r--man/test.1173
-rw-r--r--man/test.x4
-rw-r--r--man/touch.171
-rw-r--r--man/touch.x4
-rw-r--r--man/tr.1141
-rw-r--r--man/tr.x4
-rw-r--r--man/true.146
-rw-r--r--man/true.x4
-rw-r--r--man/tsort.140
-rw-r--r--man/tsort.x4
-rw-r--r--man/tty.142
-rw-r--r--man/tty.x4
-rw-r--r--man/uname.169
-rw-r--r--man/uname.x6
-rw-r--r--man/unexpand.156
-rw-r--r--man/unexpand.x6
-rw-r--r--man/uniq.171
-rw-r--r--man/uniq.x4
-rw-r--r--man/unlink.144
-rw-r--r--man/unlink.x6
-rw-r--r--man/uptime.142
-rw-r--r--man/uptime.x4
-rw-r--r--man/users.140
-rw-r--r--man/users.x4
-rw-r--r--man/vdir.1247
-rw-r--r--man/vdir.x4
-rw-r--r--man/wc.163
-rw-r--r--man/wc.x4
-rw-r--r--man/who.188
-rw-r--r--man/who.x4
-rw-r--r--man/whoami.140
-rw-r--r--man/whoami.x4
-rw-r--r--man/yes.142
-rw-r--r--man/yes.x4
-rw-r--r--old/fileutils/ChangeLog8398
-rw-r--r--old/fileutils/ChangeLog-19976166
-rw-r--r--old/fileutils/NEWS760
-rw-r--r--old/sh-utils/ChangeLog4866
-rw-r--r--old/sh-utils/ChangeLog.01720
-rw-r--r--old/sh-utils/NEWS284
-rw-r--r--old/textutils/ChangeLog8753
-rw-r--r--old/textutils/NEWS472
-rw-r--r--po/ChangeLog229
-rw-r--r--po/LINGUAS34
-rw-r--r--po/Makefile.in.in395
-rw-r--r--po/Makevars53
-rw-r--r--po/POTFILES.in125
-rw-r--r--po/Rules-quot47
-rw-r--r--po/af.gmobin0 -> 39850 bytes
-rw-r--r--po/af.po8160
-rw-r--r--po/be.gmobin0 -> 95131 bytes
-rw-r--r--po/be.po8432
-rw-r--r--po/bg.gmobin0 -> 308151 bytes
-rw-r--r--po/bg.po10822
-rw-r--r--po/boldquot.sed10
-rw-r--r--po/ca.gmobin0 -> 224987 bytes
-rw-r--r--po/ca.po10913
-rw-r--r--po/coreutils.pot7620
-rw-r--r--po/cs.gmobin0 -> 21047 bytes
-rw-r--r--po/cs.po12478
-rw-r--r--po/da.gmobin0 -> 118287 bytes
-rw-r--r--po/da.po10327
-rw-r--r--po/de.gmobin0 -> 274817 bytes
-rw-r--r--po/de.po10852
-rw-r--r--po/el.gmobin0 -> 19860 bytes
-rw-r--r--po/el.po13711
-rw-r--r--po/en@boldquot.header25
-rw-r--r--po/en@quot.header22
-rw-r--r--po/es.gmobin0 -> 145058 bytes
-rw-r--r--po/es.po12218
-rw-r--r--po/et.gmobin0 -> 228318 bytes
-rw-r--r--po/et.po9626
-rw-r--r--po/eu.gmobin0 -> 16814 bytes
-rw-r--r--po/eu.po9851
-rw-r--r--po/fi.gmobin0 -> 170380 bytes
-rw-r--r--po/fi.po10633
-rw-r--r--po/fr.gmobin0 -> 219395 bytes
-rw-r--r--po/fr.po14733
-rw-r--r--po/ga.gmobin0 -> 266577 bytes
-rw-r--r--po/ga.po10446
-rw-r--r--po/gl.gmobin0 -> 56772 bytes
-rw-r--r--po/gl.po12856
-rw-r--r--po/hu.gmobin0 -> 285910 bytes
-rw-r--r--po/hu.po10045
-rw-r--r--po/insert-header.sin23
-rw-r--r--po/it.gmobin0 -> 73552 bytes
-rw-r--r--po/it.po9766
-rw-r--r--po/ja.gmobin0 -> 96529 bytes
-rw-r--r--po/ja.po11467
-rw-r--r--po/ko.gmobin0 -> 47903 bytes
-rw-r--r--po/ko.po10107
-rw-r--r--po/ms.gmobin0 -> 32410 bytes
-rw-r--r--po/ms.po8517
-rw-r--r--po/nb.gmobin0 -> 40667 bytes
-rw-r--r--po/nb.po8844
-rw-r--r--po/nl.gmobin0 -> 269918 bytes
-rw-r--r--po/nl.po9969
-rw-r--r--po/no.gmobin0 -> 14149 bytes
-rw-r--r--po/no.po11946
-rw-r--r--po/pl.gmobin0 -> 267642 bytes
-rw-r--r--po/pl.po9870
-rw-r--r--po/pt.gmobin0 -> 7375 bytes
-rw-r--r--po/pt.po10404
-rw-r--r--po/pt_BR.gmobin0 -> 40292 bytes
-rw-r--r--po/pt_BR.po9548
-rw-r--r--po/quot.sed6
-rw-r--r--po/remove-potcdate.sin19
-rw-r--r--po/ru.gmobin0 -> 270508 bytes
-rw-r--r--po/ru.po9913
-rw-r--r--po/rw.gmobin0 -> 782 bytes
-rw-r--r--po/rw.po9370
-rw-r--r--po/sk.gmobin0 -> 22547 bytes
-rw-r--r--po/sk.po12332
-rw-r--r--po/sl.gmobin0 -> 235090 bytes
-rw-r--r--po/sl.po10703
-rw-r--r--po/stamp-po1
-rw-r--r--po/sv.gmobin0 -> 258018 bytes
-rw-r--r--po/sv.po9698
-rw-r--r--po/tr.gmobin0 -> 179762 bytes
-rw-r--r--po/tr.po10708
-rw-r--r--po/zh_CN.gmobin0 -> 62579 bytes
-rw-r--r--po/zh_CN.po8294
-rw-r--r--po/zh_TW.gmobin0 -> 101230 bytes
-rw-r--r--po/zh_TW.po9374
-rw-r--r--src/Makefile.am365
-rw-r--r--src/Makefile.in2065
-rw-r--r--src/base64.c322
-rw-r--r--src/basename.c144
-rw-r--r--src/c99-to-c89.diff118
-rw-r--r--src/cat.c788
-rw-r--r--src/chgrp.c314
-rw-r--r--src/chmod.c532
-rw-r--r--src/chown-core.c514
-rw-r--r--src/chown-core.h87
-rw-r--r--src/chown.c338
-rw-r--r--src/chroot.c118
-rw-r--r--src/cksum.c316
-rw-r--r--src/comm.c285
-rw-r--r--src/copy.c2007
-rw-r--r--src/copy.h218
-rw-r--r--src/cp-hash.c187
-rw-r--r--src/cp-hash.h6
-rw-r--r--src/cp.c1072
-rw-r--r--src/csplit.c1515
-rw-r--r--src/cut.c884
-rw-r--r--src/date.c563
-rwxr-xr-xsrc/dcgen57
-rw-r--r--src/dd.c1744
-rw-r--r--src/df.c967
-rw-r--r--src/dircolors.c512
-rw-r--r--src/dircolors.h164
-rw-r--r--src/dircolors.hin171
-rw-r--r--src/dirname.c117
-rw-r--r--src/du.c1021
-rw-r--r--src/echo.c276
-rw-r--r--src/env.c205
-rw-r--r--src/expand.c438
-rw-r--r--src/expr.c873
-rw-r--r--src/extract-magic135
-rw-r--r--src/factor.c220
-rw-r--r--src/false.c2
-rw-r--r--src/fmt.c1015
-rw-r--r--src/fold.c318
-rw-r--r--src/fs.h43
-rwxr-xr-xsrc/groups.sh83
-rw-r--r--src/head.c1064
-rw-r--r--src/hostid.c96
-rw-r--r--src/hostname.c125
-rw-r--r--src/id.c388
-rw-r--r--src/install.c708
-rw-r--r--src/join.c940
-rw-r--r--src/kill.c373
-rw-r--r--src/lbracket.c2
-rw-r--r--src/link.c99
-rw-r--r--src/ln.c534
-rw-r--r--src/logname.c91
-rw-r--r--src/ls-dir.c2
-rw-r--r--src/ls-ls.c2
-rw-r--r--src/ls-vdir.c2
-rw-r--r--src/ls.c4430
-rw-r--r--src/ls.h10
-rw-r--r--src/md5sum.c723
-rw-r--r--src/mkdir.c205
-rw-r--r--src/mkfifo.c129
-rw-r--r--src/mknod.c221
-rw-r--r--src/mv.c486
-rw-r--r--src/nice.c195
-rw-r--r--src/nl.c617
-rw-r--r--src/nohup.c216
-rw-r--r--src/od.c1937
-rw-r--r--src/paste.c497
-rw-r--r--src/pathchk.c433
-rw-r--r--src/pinky.c623
-rw-r--r--src/pr.c2878
-rw-r--r--src/printenv.c134
-rw-r--r--src/printf.c687
-rw-r--r--src/ptx.c2224
-rw-r--r--src/pwd.c323
-rw-r--r--src/readlink.c174
-rw-r--r--src/remove.c1565
-rw-r--r--src/remove.h96
-rw-r--r--src/rm.c374
-rw-r--r--src/rmdir.c226
-rw-r--r--src/seq.c375
-rw-r--r--src/setuidgid.c129
-rw-r--r--src/shred.c1214
-rw-r--r--src/shuf.c421
-rw-r--r--src/sleep.c152
-rw-r--r--src/sort.c3174
-rw-r--r--src/split.c582
-rw-r--r--src/stat.c979
-rw-r--r--src/stty.c1892
-rw-r--r--src/su.c526
-rw-r--r--src/sum.c269
-rw-r--r--src/sync.c78
-rw-r--r--src/system.h583
-rw-r--r--src/tac-pipe.c263
-rw-r--r--src/tac.c666
-rw-r--r--src/tail.c1697
-rw-r--r--src/tee.c220
-rw-r--r--src/test.c849
-rw-r--r--src/touch.c420
-rw-r--r--src/tr.c1896
-rw-r--r--src/true.c82
-rw-r--r--src/tsort.c559
-rw-r--r--src/tty.c129
-rw-r--r--src/uname.c325
-rw-r--r--src/unexpand.c540
-rw-r--r--src/uniq.c552
-rw-r--r--src/unlink.c94
-rw-r--r--src/uptime.c245
-rw-r--r--src/users.c154
-rw-r--r--src/wc.c704
-rwxr-xr-xsrc/wheel-gen.pl115
-rw-r--r--src/wheel-size.h1
-rw-r--r--src/wheel.h491
-rw-r--r--src/who.c827
-rw-r--r--src/whoami.c98
-rw-r--r--src/yes.c96
-rw-r--r--tests/Coreutils.pm541
-rw-r--r--tests/Makefile.am60
-rw-r--r--tests/Makefile.am.in54
-rw-r--r--tests/Makefile.in922
-rw-r--r--tests/README3
-rw-r--r--tests/acl37
-rw-r--r--tests/chgrp/Makefile.am14
-rw-r--r--tests/chgrp/Makefile.in724
-rwxr-xr-xtests/chgrp/basic132
-rwxr-xr-xtests/chgrp/default-no-deref51
-rwxr-xr-xtests/chgrp/deref84
-rwxr-xr-xtests/chgrp/no-x76
-rwxr-xr-xtests/chgrp/posix-H89
-rwxr-xr-xtests/chgrp/recurse73
-rw-r--r--tests/chmod/Makefile.am16
-rw-r--r--tests/chmod/Makefile.in726
-rwxr-xr-xtests/chmod/c-option67
-rwxr-xr-xtests/chmod/equal-x54
-rwxr-xr-xtests/chmod/equals65
-rwxr-xr-xtests/chmod/inaccessible47
-rwxr-xr-xtests/chmod/no-x81
-rwxr-xr-xtests/chmod/octal48
-rwxr-xr-xtests/chmod/setgid76
-rwxr-xr-xtests/chmod/umask-x53
-rwxr-xr-xtests/chmod/usage112
-rw-r--r--tests/chown/Makefile.am10
-rw-r--r--tests/chown/Makefile.in721
-rwxr-xr-xtests/chown/basic69
-rwxr-xr-xtests/chown/deref60
-rwxr-xr-xtests/chown/preserve-root88
-rwxr-xr-xtests/chown/separator72
-rw-r--r--tests/cp/Makefile.am39
-rw-r--r--tests/cp/Makefile.in751
-rwxr-xr-xtests/cp/acl90
-rwxr-xr-xtests/cp/backup-158
-rwxr-xr-xtests/cp/backup-dir52
-rwxr-xr-xtests/cp/backup-is-src58
-rwxr-xr-xtests/cp/cp-HL61
-rwxr-xr-xtests/cp/cp-deref52
-rwxr-xr-xtests/cp/cp-i51
-rwxr-xr-xtests/cp/cp-mv-backup117
-rwxr-xr-xtests/cp/cp-parents82
-rwxr-xr-xtests/cp/deref-slink49
-rwxr-xr-xtests/cp/dir-rm-dest49
-rwxr-xr-xtests/cp/dir-slash54
-rwxr-xr-xtests/cp/dir-vs-file54
-rwxr-xr-xtests/cp/fail-perm80
-rwxr-xr-xtests/cp/file-perm-race71
-rwxr-xr-xtests/cp/into-self63
-rwxr-xr-xtests/cp/link50
-rwxr-xr-xtests/cp/link-no-deref48
-rwxr-xr-xtests/cp/link-preserve106
-rwxr-xr-xtests/cp/no-deref-link159
-rwxr-xr-xtests/cp/no-deref-link259
-rwxr-xr-xtests/cp/no-deref-link356
-rwxr-xr-xtests/cp/parent-perm-race78
-rwxr-xr-xtests/cp/perm98
-rwxr-xr-xtests/cp/preserve-245
-rwxr-xr-xtests/cp/r-vs-symlink61
-rwxr-xr-xtests/cp/same-file213
-rwxr-xr-xtests/cp/slink-2-slink56
-rwxr-xr-xtests/cp/sparse57
-rwxr-xr-xtests/cp/special-bits70
-rwxr-xr-xtests/cp/src-base-dot54
-rwxr-xr-xtests/cp/symlink-slash58
-rw-r--r--tests/cp/trailing-slash2
-rw-r--r--tests/cut/1.I1
-rw-r--r--tests/cut/1.X1
-rw-r--r--tests/cut/2.I1
-rw-r--r--tests/cut/2.X1
-rw-r--r--tests/cut/3.I1
-rw-r--r--tests/cut/3.X1
-rw-r--r--tests/cut/4.I1
-rw-r--r--tests/cut/4.X1
-rw-r--r--tests/cut/5.I0
-rw-r--r--tests/cut/5.X0
-rw-r--r--tests/cut/6.I1
-rw-r--r--tests/cut/6.X1
-rw-r--r--tests/cut/7.I1
-rw-r--r--tests/cut/7.X1
-rw-r--r--tests/cut/8.I2
-rw-r--r--tests/cut/8.X2
-rw-r--r--tests/cut/8bit-delim.I1
-rw-r--r--tests/cut/8bit-delim.X1
-rw-r--r--tests/cut/9.I0
-rw-r--r--tests/cut/9.X0
-rw-r--r--tests/cut/Makefile.am82
-rw-r--r--tests/cut/Makefile.in792
-rwxr-xr-xtests/cut/Test.pm132
-rw-r--r--tests/cut/a.I1
-rw-r--r--tests/cut/a.X1
-rw-r--r--tests/cut/b.I1
-rw-r--r--tests/cut/b.X1
-rw-r--r--tests/cut/c.I1
-rw-r--r--tests/cut/c.X1
-rwxr-xr-xtests/cut/cut-tests3105
-rw-r--r--tests/cut/d.I1
-rw-r--r--tests/cut/d.X1
-rw-r--r--tests/cut/e.I1
-rw-r--r--tests/cut/e.X1
-rw-r--r--tests/cut/empty-bl.I1
-rw-r--r--tests/cut/empty-bl.X0
-rw-r--r--tests/cut/empty-f1.I0
-rw-r--r--tests/cut/empty-f1.X0
-rw-r--r--tests/cut/empty-f2.I0
-rw-r--r--tests/cut/empty-f2.X0
-rw-r--r--tests/cut/empty-fl.I1
-rw-r--r--tests/cut/empty-fl.X0
-rw-r--r--tests/cut/f.I1
-rw-r--r--tests/cut/f.X1
-rw-r--r--tests/cut/g.I1
-rw-r--r--tests/cut/g.X1
-rw-r--r--tests/cut/h.I1
-rw-r--r--tests/cut/h.X0
-rw-r--r--tests/cut/i.I1
-rw-r--r--tests/cut/i.X1
-rw-r--r--tests/cut/j.I1
-rw-r--r--tests/cut/j.X1
-rw-r--r--tests/cut/k.I1
-rw-r--r--tests/cut/k.X1
-rw-r--r--tests/cut/l.I1
-rw-r--r--tests/cut/l.X1
-rw-r--r--tests/cut/m.I1
-rw-r--r--tests/cut/m.X1
-rw-r--r--tests/cut/missing-bl.I1
-rw-r--r--tests/cut/missing-bl.X0
-rw-r--r--tests/cut/missing-fl.I1
-rw-r--r--tests/cut/missing-fl.X0
-rw-r--r--tests/cut/multichar-od.I1
-rw-r--r--tests/cut/multichar-od.X1
-rw-r--r--tests/cut/n.I1
-rw-r--r--tests/cut/n.X1
-rw-r--r--tests/cut/nul-idelim.Ibin0 -> 6 bytes
-rw-r--r--tests/cut/nul-idelim.X1
-rw-r--r--tests/cut/nul-odelim.I1
-rw-r--r--tests/cut/nul-odelim.Xbin0 -> 4 bytes
-rw-r--r--tests/cut/o-delim.I1
-rw-r--r--tests/cut/o-delim.X1
-rw-r--r--tests/cut/o.I1
-rw-r--r--tests/cut/o.X1
-rw-r--r--tests/cut/od-abut.I1
-rw-r--r--tests/cut/od-abut.X1
-rw-r--r--tests/cut/od-overlap.I1
-rw-r--r--tests/cut/od-overlap.X1
-rw-r--r--tests/cut/od-overlap2.I1
-rw-r--r--tests/cut/od-overlap2.X1
-rw-r--r--tests/cut/od-overlap3.I1
-rw-r--r--tests/cut/od-overlap3.X1
-rw-r--r--tests/cut/od-overlap4.I1
-rw-r--r--tests/cut/od-overlap4.X1
-rw-r--r--tests/cut/od-overlap5.I1
-rw-r--r--tests/cut/od-overlap5.X1
-rw-r--r--tests/cut/out-delim1.I1
-rw-r--r--tests/cut/out-delim1.X1
-rw-r--r--tests/cut/out-delim2.I1
-rw-r--r--tests/cut/out-delim2.X1
-rw-r--r--tests/cut/out-delim3.I1
-rw-r--r--tests/cut/out-delim3.X1
-rw-r--r--tests/cut/out-delim3a.I1
-rw-r--r--tests/cut/out-delim3a.X1
-rw-r--r--tests/cut/out-delim4.I1
-rw-r--r--tests/cut/out-delim4.X1
-rw-r--r--tests/cut/out-delim5.I1
-rw-r--r--tests/cut/out-delim5.X1
-rw-r--r--tests/cut/out-delim6.I1
-rw-r--r--tests/cut/out-delim6.X1
-rw-r--r--tests/cut/p.I1
-rw-r--r--tests/cut/p.X1
-rw-r--r--tests/cut/q.I2
-rw-r--r--tests/cut/q.X2
-rw-r--r--tests/cut/r.I2
-rw-r--r--tests/cut/r.X2
-rw-r--r--tests/cut/s.I2
-rw-r--r--tests/cut/s.X2
-rw-r--r--tests/cut/t.I2
-rw-r--r--tests/cut/t.X2
-rw-r--r--tests/cut/u.I0
-rw-r--r--tests/cut/u.X0
-rw-r--r--tests/cut/v.I0
-rw-r--r--tests/cut/v.X0
-rw-r--r--tests/cut/w.I0
-rw-r--r--tests/cut/w.X0
-rw-r--r--tests/cut/x.I1
-rw-r--r--tests/cut/x.X1
-rw-r--r--tests/cut/y.I1
-rw-r--r--tests/cut/y.X0
-rw-r--r--tests/cut/z.I1
-rw-r--r--tests/cut/z.X0
-rw-r--r--tests/dd/Makefile.am13
-rw-r--r--tests/dd/Makefile.in720
-rwxr-xr-xtests/dd/misc92
-rwxr-xr-xtests/dd/not-rewound50
-rwxr-xr-xtests/dd/skip-seek98
-rwxr-xr-xtests/dd/skip-seek257
-rwxr-xr-xtests/dd/unblock-sync56
-rw-r--r--tests/dircolors/Makefile.am13
-rw-r--r--tests/dircolors/Makefile.in720
-rwxr-xr-xtests/dircolors/simple60
-rwxr-xr-xtests/du/2g93
-rwxr-xr-xtests/du/8gb77
-rw-r--r--tests/du/Makefile.am37
-rw-r--r--tests/du/Makefile.in749
-rwxr-xr-xtests/du/basic113
-rwxr-xr-xtests/du/deref50
-rwxr-xr-xtests/du/deref-args69
-rwxr-xr-xtests/du/exclude79
-rwxr-xr-xtests/du/fd-leak61
-rwxr-xr-xtests/du/files0-from107
-rwxr-xr-xtests/du/hard-link71
-rwxr-xr-xtests/du/inacc-dest83
-rwxr-xr-xtests/du/inaccessible-cwd53
-rwxr-xr-xtests/du/long-from-unreadable89
-rwxr-xr-xtests/du/long-sloop99
-rwxr-xr-xtests/du/no-deref54
-rwxr-xr-xtests/du/no-x72
-rwxr-xr-xtests/du/one-file-system61
-rwxr-xr-xtests/du/restore-wd49
-rwxr-xr-xtests/du/slash54
-rwxr-xr-xtests/du/slink79
-rwxr-xr-xtests/du/trailing-slash68
-rwxr-xr-xtests/du/two-args51
-rw-r--r--tests/envvar-check58
-rw-r--r--tests/expensive30
-rw-r--r--tests/expr/Makefile.am10
-rw-r--r--tests/expr/Makefile.in720
-rwxr-xr-xtests/expr/basic189
-rw-r--r--tests/factor/Makefile.am10
-rw-r--r--tests/factor/Makefile.in720
-rwxr-xr-xtests/factor/basic114
-rw-r--r--tests/fmt/Makefile.am13
-rw-r--r--tests/fmt/Makefile.in720
-rwxr-xr-xtests/fmt/basic87
-rwxr-xr-xtests/fmt/long-line81
-rw-r--r--tests/group-names37
-rw-r--r--tests/head/Makefile.am69
-rw-r--r--tests/head/Makefile.in779
-rw-r--r--tests/head/Test.pm110
-rw-r--r--tests/head/basic-0-09.I9
-rw-r--r--tests/head/basic-0-09.X9
-rw-r--r--tests/head/basic-0-10.I10
-rw-r--r--tests/head/basic-0-10.X10
-rw-r--r--tests/head/basic-0-11.I11
-rw-r--r--tests/head/basic-0-11.X10
-rw-r--r--tests/head/fail-1.I1
-rw-r--r--tests/head/fail-1.X1
-rwxr-xr-xtests/head/head-tests1377
-rw-r--r--tests/head/idem-0.I0
-rw-r--r--tests/head/idem-0.X0
-rw-r--r--tests/head/idem-1.I1
-rw-r--r--tests/head/idem-1.X1
-rw-r--r--tests/head/idem-2.I1
-rw-r--r--tests/head/idem-2.X1
-rw-r--r--tests/head/idem-3.I1
-rw-r--r--tests/head/idem-3.X1
-rw-r--r--tests/head/in15
-rw-r--r--tests/head/in-102413
-rw-r--r--tests/head/no-oct-1.I12
-rw-r--r--tests/head/no-oct-1.X8
-rw-r--r--tests/head/no-oct-2.I12
-rw-r--r--tests/head/no-oct-2.X10
-rw-r--r--tests/head/no-oct-3.I12
-rw-r--r--tests/head/no-oct-3.X8
-rw-r--r--tests/head/no-oct-4.I12
-rw-r--r--tests/head/no-oct-4.X8
-rw-r--r--tests/head/null-1.Ibin0 -> 4 bytes
-rw-r--r--tests/head/null-1.Xbin0 -> 4 bytes
-rw-r--r--tests/head/obs-0.I2
-rw-r--r--tests/head/obs-0.X1
-rw-r--r--tests/head/obs-1.I0
-rw-r--r--tests/head/obs-1.X0
-rw-r--r--tests/head/obs-2.I1
-rw-r--r--tests/head/obs-2.X1
-rw-r--r--tests/head/obs-3.I1
-rw-r--r--tests/head/obs-3.X1
-rw-r--r--tests/head/posix-0.I2
-rw-r--r--tests/head/posix-0.X1
-rw-r--r--tests/head/posix-1.I0
-rw-r--r--tests/head/posix-1.X0
-rw-r--r--tests/head/posix-2.I1
-rw-r--r--tests/head/posix-2.X1
-rw-r--r--tests/head/posix-3.I1
-rw-r--r--tests/head/posix-3.X1
-rwxr-xr-xtests/help-version222
-rw-r--r--tests/input-tty10
-rw-r--r--tests/install/Makefile.am7
-rw-r--r--tests/install/Makefile.in717
-rwxr-xr-xtests/install/basic-1154
-rwxr-xr-xtests/install/create-leading49
-rwxr-xr-xtests/install/d-slashdot48
-rwxr-xr-xtests/install/trap52
-rw-r--r--tests/join/1a.I11
-rw-r--r--tests/join/1a.I21
-rw-r--r--tests/join/1a.X1
-rw-r--r--tests/join/1b.I11
-rw-r--r--tests/join/1b.I21
-rw-r--r--tests/join/1b.X1
-rw-r--r--tests/join/1c.I11
-rw-r--r--tests/join/1c.I21
-rw-r--r--tests/join/1c.X2
-rw-r--r--tests/join/1d.I12
-rw-r--r--tests/join/1d.I21
-rw-r--r--tests/join/1d.X2
-rw-r--r--tests/join/1e.I12
-rw-r--r--tests/join/1e.I21
-rw-r--r--tests/join/1e.X1
-rw-r--r--tests/join/1f.I11
-rw-r--r--tests/join/1f.I22
-rw-r--r--tests/join/1f.X2
-rw-r--r--tests/join/2a.I13
-rw-r--r--tests/join/2a.I23
-rw-r--r--tests/join/2a.X3
-rw-r--r--tests/join/2b.I13
-rw-r--r--tests/join/2b.I23
-rw-r--r--tests/join/2b.X3
-rw-r--r--tests/join/2c.I14
-rw-r--r--tests/join/2c.I23
-rw-r--r--tests/join/2c.X4
-rw-r--r--tests/join/3a.I12
-rw-r--r--tests/join/3a.I22
-rw-r--r--tests/join/3a.X2
-rw-r--r--tests/join/4a.I11
-rw-r--r--tests/join/4a.I21
-rw-r--r--tests/join/4a.X1
-rw-r--r--tests/join/4b.I11
-rw-r--r--tests/join/4b.I21
-rw-r--r--tests/join/4b.X1
-rw-r--r--tests/join/4c.I12
-rw-r--r--tests/join/4c.I21
-rw-r--r--tests/join/4c.X1
-rw-r--r--tests/join/4d.I12
-rw-r--r--tests/join/4d.I21
-rw-r--r--tests/join/4d.X0
-rw-r--r--tests/join/4e.I11
-rw-r--r--tests/join/4e.I22
-rw-r--r--tests/join/4e.X1
-rw-r--r--tests/join/5a.I12
-rw-r--r--tests/join/5a.I22
-rw-r--r--tests/join/5a.X2
-rw-r--r--tests/join/5b.I14
-rw-r--r--tests/join/5b.I24
-rw-r--r--tests/join/5b.X4
-rw-r--r--tests/join/5c.I12
-rw-r--r--tests/join/5c.I23
-rw-r--r--tests/join/5c.X2
-rw-r--r--tests/join/5d.I11
-rw-r--r--tests/join/5d.I20
-rw-r--r--tests/join/5d.X1
-rw-r--r--tests/join/5e.I14
-rw-r--r--tests/join/5e.I24
-rw-r--r--tests/join/5e.X4
-rw-r--r--tests/join/5f.I14
-rw-r--r--tests/join/5f.I24
-rw-r--r--tests/join/5f.X4
-rw-r--r--tests/join/5g.I14
-rw-r--r--tests/join/5g.I24
-rw-r--r--tests/join/5g.X4
-rw-r--r--tests/join/5h.I14
-rw-r--r--tests/join/5h.I23
-rw-r--r--tests/join/5h.X4
-rw-r--r--tests/join/5i.I14
-rw-r--r--tests/join/5i.I23
-rw-r--r--tests/join/5i.X4
-rw-r--r--tests/join/5j.I14
-rw-r--r--tests/join/5j.I23
-rw-r--r--tests/join/5j.X3
-rw-r--r--tests/join/5k.I14
-rw-r--r--tests/join/5k.I23
-rw-r--r--tests/join/5k.X3
-rw-r--r--tests/join/5l.I13
-rw-r--r--tests/join/5l.I24
-rw-r--r--tests/join/5l.X3
-rw-r--r--tests/join/5m.I13
-rw-r--r--tests/join/5m.I24
-rw-r--r--tests/join/5m.X4
-rw-r--r--tests/join/6a.I13
-rw-r--r--tests/join/6a.I24
-rw-r--r--tests/join/6a.X2
-rw-r--r--tests/join/6b.I13
-rw-r--r--tests/join/6b.I24
-rw-r--r--tests/join/6b.X3
-rw-r--r--tests/join/6c.I14
-rw-r--r--tests/join/6c.I23
-rw-r--r--tests/join/6c.X4
-rw-r--r--tests/join/7a.I13
-rw-r--r--tests/join/7a.I23
-rw-r--r--tests/join/7a.X3
-rw-r--r--tests/join/8-bit-t.I12
-rw-r--r--tests/join/8-bit-t.I22
-rw-r--r--tests/join/8-bit-t.X2
-rw-r--r--tests/join/8a.I14
-rw-r--r--tests/join/8a.I24
-rw-r--r--tests/join/8a.X4
-rw-r--r--tests/join/8b.I14
-rw-r--r--tests/join/8b.I24
-rw-r--r--tests/join/8b.X5
-rw-r--r--tests/join/9a.I12
-rw-r--r--tests/join/9a.I22
-rw-r--r--tests/join/9a.X2
-rw-r--r--tests/join/Makefile.am74
-rw-r--r--tests/join/Makefile.in784
-rw-r--r--tests/join/TODO2
-rw-r--r--tests/join/Test.pm153
-rw-r--r--tests/join/bigfield.I11
-rw-r--r--tests/join/bigfield.I21
-rw-r--r--tests/join/bigfield.X1
-rw-r--r--tests/join/invalid-j.X0
-rwxr-xr-xtests/join/join-tests747
-rw-r--r--tests/join/sp-vs-blank.I11
-rw-r--r--tests/join/sp-vs-blank.I21
-rw-r--r--tests/join/sp-vs-blank.X1
-rw-r--r--tests/join/trailing-sp.I11
-rw-r--r--tests/join/trailing-sp.I21
-rw-r--r--tests/join/trailing-sp.X1
-rw-r--r--tests/lang-default10
-rw-r--r--tests/ln/Makefile.am6
-rw-r--r--tests/ln/Makefile.in716
-rwxr-xr-xtests/ln/backup-142
-rwxr-xr-xtests/ln/hard-backup54
-rwxr-xr-xtests/ln/misc166
-rwxr-xr-xtests/ln/sf-154
-rwxr-xr-xtests/ln/target-150
-rw-r--r--tests/ls-2/Makefile.am13
-rw-r--r--tests/ls-2/Makefile.in720
-rwxr-xr-xtests/ls-2/tests164
-rw-r--r--tests/ls/Makefile.am36
-rw-r--r--tests/ls/Makefile.in747
-rwxr-xr-xtests/ls/color-dtype-dir67
-rwxr-xr-xtests/ls/dangle67
-rwxr-xr-xtests/ls/dired56
-rwxr-xr-xtests/ls/file-type90
-rwxr-xr-xtests/ls/follow-slink86
-rwxr-xr-xtests/ls/infloop61
-rwxr-xr-xtests/ls/inode83
-rwxr-xr-xtests/ls/m-option61
-rwxr-xr-xtests/ls/nameless-uid65
-rwxr-xr-xtests/ls/no-arg76
-rwxr-xr-xtests/ls/recursive85
-rwxr-xr-xtests/ls/rt-171
-rwxr-xr-xtests/ls/stat-dtype86
-rwxr-xr-xtests/ls/stat-failed75
-rwxr-xr-xtests/ls/stat-vs-dirent83
-rwxr-xr-xtests/ls/symlink-slash52
-rwxr-xr-xtests/ls/time-1145
-rw-r--r--tests/md5sum/Makefile.am13
-rw-r--r--tests/md5sum/Makefile.in720
-rwxr-xr-xtests/md5sum/basic-189
-rwxr-xr-xtests/md5sum/newline-169
-rw-r--r--tests/misc/Makefile.am88
-rw-r--r--tests/misc/Makefile.in798
-rwxr-xr-xtests/misc/base64169
-rwxr-xr-xtests/misc/basename95
-rwxr-xr-xtests/misc/cat-proc60
-rwxr-xr-xtests/misc/close-stdout77
-rwxr-xr-xtests/misc/csplit116
-rwxr-xr-xtests/misc/cut51
-rwxr-xr-xtests/misc/date323
-rwxr-xr-xtests/misc/date-sec67
-rwxr-xr-xtests/misc/df34
-rwxr-xr-xtests/misc/df-P60
-rwxr-xr-xtests/misc/dirname89
-rwxr-xr-xtests/misc/expand54
-rwxr-xr-xtests/misc/false-status45
-rwxr-xr-xtests/misc/fold68
-rwxr-xr-xtests/misc/head-c49
-rwxr-xr-xtests/misc/head-elide-tail123
-rwxr-xr-xtests/misc/head-pos51
-rwxr-xr-xtests/misc/mknod56
-rwxr-xr-xtests/misc/nice86
-rwxr-xr-xtests/misc/nl63
-rwxr-xr-xtests/misc/nohup128
-rwxr-xr-xtests/misc/paste-no-nl64
-rwxr-xr-xtests/misc/pathchk157
-rwxr-xr-xtests/misc/pr61
-rwxr-xr-xtests/misc/printf114
-rwxr-xr-xtests/misc/printf-hex52
-rwxr-xr-xtests/misc/pwd-long132
-rwxr-xr-xtests/misc/pwd-unreadable-parent70
-rwxr-xr-xtests/misc/sha224sum63
-rwxr-xr-xtests/misc/sha256sum69
-rwxr-xr-xtests/misc/sha384sum69
-rwxr-xr-xtests/misc/sha512sum69
-rwxr-xr-xtests/misc/shuf68
-rwxr-xr-xtests/misc/sort-compress92
-rwxr-xr-xtests/misc/sort-merge50
-rwxr-xr-xtests/misc/sort-rand54
-rwxr-xr-xtests/misc/split-a96
-rwxr-xr-xtests/misc/split-fail88
-rwxr-xr-xtests/misc/split-l64
-rwxr-xr-xtests/misc/stat-fmt48
-rwxr-xr-xtests/misc/stat-printf78
-rwxr-xr-xtests/misc/tac-continue92
-rwxr-xr-xtests/misc/test-diag53
-rwxr-xr-xtests/misc/tty-eof128
-rwxr-xr-xtests/misc/wc-files066
-rwxr-xr-xtests/misc/wc-files0-from108
-rwxr-xr-xtests/mk-script382
-rw-r--r--tests/mkdir/Makefile.am9
-rw-r--r--tests/mkdir/Makefile.in720
-rwxr-xr-xtests/mkdir/p-135
-rwxr-xr-xtests/mkdir/p-235
-rwxr-xr-xtests/mkdir/p-369
-rwxr-xr-xtests/mkdir/p-slashdot48
-rwxr-xr-xtests/mkdir/p-thru-slink46
-rwxr-xr-xtests/mkdir/p-v56
-rwxr-xr-xtests/mkdir/parents76
-rwxr-xr-xtests/mkdir/perm109
-rwxr-xr-xtests/mkdir/special-158
-rwxr-xr-xtests/mkdir/t-slash50
-rw-r--r--tests/mv/Makefile.am50
-rw-r--r--tests/mv/Makefile.in761
-rwxr-xr-xtests/mv/acl105
-rwxr-xr-xtests/mv/atomic69
-rwxr-xr-xtests/mv/backup-dir57
-rwxr-xr-xtests/mv/backup-is-src66
-rwxr-xr-xtests/mv/childproof92
-rwxr-xr-xtests/mv/diag70
-rwxr-xr-xtests/mv/dir-file47
-rwxr-xr-xtests/mv/dir2dir66
-rwxr-xr-xtests/mv/dup-source90
-rwxr-xr-xtests/mv/force58
-rwxr-xr-xtests/mv/hard-297
-rwxr-xr-xtests/mv/hard-389
-rwxr-xr-xtests/mv/hard-459
-rwxr-xr-xtests/mv/hard-link-168
-rwxr-xr-xtests/mv/hard-verbose56
-rwxr-xr-xtests/mv/i-158
-rwxr-xr-xtests/mv/i-277
-rwxr-xr-xtests/mv/i-472
-rwxr-xr-xtests/mv/i-551
-rwxr-xr-xtests/mv/i-link-no70
-rwxr-xr-xtests/mv/into-self69
-rwxr-xr-xtests/mv/into-self-276
-rwxr-xr-xtests/mv/into-self-357
-rwxr-xr-xtests/mv/into-self-454
-rwxr-xr-xtests/mv/leak-fd81
-rwxr-xr-xtests/mv/mv-special-197
-rwxr-xr-xtests/mv/no-target-dir70
-rwxr-xr-xtests/mv/part-fail79
-rwxr-xr-xtests/mv/part-hardlink67
-rwxr-xr-xtests/mv/part-rename55
-rwxr-xr-xtests/mv/part-symlink229
-rwxr-xr-xtests/mv/partition-perm55
-rwxr-xr-xtests/mv/perm-157
-rwxr-xr-xtests/mv/reply-no58
-rwxr-xr-xtests/mv/to-symlink63
-rwxr-xr-xtests/mv/trailing-slash77
-rwxr-xr-xtests/mv/update71
-rw-r--r--tests/mv/vfat66
-rw-r--r--tests/od/Makefile.am12
-rw-r--r--tests/od/Makefile.in719
-rwxr-xr-xtests/od/od-N53
-rwxr-xr-xtests/od/x864
-rwxr-xr-xtests/other-fs-tmpdir61
-rw-r--r--tests/pr/0F330
-rw-r--r--tests/pr/0FF396
-rw-r--r--tests/pr/0FFnt36
-rw-r--r--tests/pr/0FFt35
-rw-r--r--tests/pr/0FnFnt37
-rw-r--r--tests/pr/0FnFt36
-rw-r--r--tests/pr/0Fnt36
-rw-r--r--tests/pr/0Ft35
-rw-r--r--tests/pr/2-S_f-t_notab7
-rw-r--r--tests/pr/2-Sf-t_notab7
-rw-r--r--tests/pr/2f-t_notab7
-rw-r--r--tests/pr/2s_f-t_notab7
-rw-r--r--tests/pr/2s_w60f-t_nota7
-rw-r--r--tests/pr/2sf-t_notab7
-rw-r--r--tests/pr/2sw60f-t_notab7
-rw-r--r--tests/pr/2w60f-t_notab7
-rw-r--r--tests/pr/3-0F198
-rw-r--r--tests/pr/3-5l17f-t45
-rw-r--r--tests/pr/3-FF462
-rw-r--r--tests/pr/3a2l17-FF119
-rw-r--r--tests/pr/3a3f-0F18
-rw-r--r--tests/pr/3a3l15-t45
-rw-r--r--tests/pr/3a3l8f-t21
-rw-r--r--tests/pr/3b2l17-FF119
-rw-r--r--tests/pr/3b3f-0F18
-rw-r--r--tests/pr/3b3f-0FF26
-rw-r--r--tests/pr/3b3f-FF42
-rw-r--r--tests/pr/3b3l15-t45
-rw-r--r--tests/pr/3b3l8f-t21
-rw-r--r--tests/pr/3f-0F30
-rw-r--r--tests/pr/3f-FF71
-rw-r--r--tests/pr/3l17f-t45
-rw-r--r--tests/pr/3l24-t72
-rw-r--r--tests/pr/3ml17f-t45
-rw-r--r--tests/pr/3ml24-FF168
-rw-r--r--tests/pr/3ml24-t72
-rw-r--r--tests/pr/3ml24-t-FF168
-rw-r--r--tests/pr/4-7l24-FF96
-rw-r--r--tests/pr/4l24-FF144
-rw-r--r--tests/pr/FF594
-rw-r--r--tests/pr/FFn64
-rw-r--r--tests/pr/FFtn60
-rw-r--r--tests/pr/FnFn68
-rw-r--r--tests/pr/Ja3l17f-lm54
-rw-r--r--tests/pr/Jb3l17f-lm54
-rw-r--r--tests/pr/Jml17f-lm-lo118
-rw-r--r--tests/pr/Makefile.am157
-rw-r--r--tests/pr/Makefile.in868
-rw-r--r--tests/pr/Test.pm405
-rw-r--r--tests/pr/W-72l17f-ll92
-rw-r--r--tests/pr/W20l17f-ll92
-rw-r--r--tests/pr/W26l17f-ll92
-rw-r--r--tests/pr/W27l17f-ll92
-rw-r--r--tests/pr/W28l17f-ll92
-rw-r--r--tests/pr/W35Ja3l17f-lm54
-rw-r--r--tests/pr/W35Jb3l17f-lm54
-rw-r--r--tests/pr/W35Jml17f-lmlo118
-rw-r--r--tests/pr/W35a3l17f-lm54
-rw-r--r--tests/pr/W35b3l17f-lm54
-rw-r--r--tests/pr/W35ml17f-lm-lo118
-rw-r--r--tests/pr/W72Jl17f-ll92
-rw-r--r--tests/pr/a2l15-FF195
-rw-r--r--tests/pr/a2l17-FF153
-rw-r--r--tests/pr/a3-0F330
-rw-r--r--tests/pr/a3f-0F30
-rw-r--r--tests/pr/a3f-0FF34
-rw-r--r--tests/pr/a3f-FF54
-rw-r--r--tests/pr/a3l15-t75
-rw-r--r--tests/pr/a3l17f-lm54
-rw-r--r--tests/pr/a3l8f-t37
-rw-r--r--tests/pr/b2l15-FF195
-rw-r--r--tests/pr/b2l17-FF153
-rw-r--r--tests/pr/b3-0F330
-rw-r--r--tests/pr/b3f-0F30
-rw-r--r--tests/pr/b3f-0FF34
-rw-r--r--tests/pr/b3f-FF54
-rw-r--r--tests/pr/b3l15-t75
-rw-r--r--tests/pr/b3l17f-lm54
-rw-r--r--tests/pr/b3l8f-t37
-rw-r--r--tests/pr/col-0.C.I0
-rw-r--r--tests/pr/col-0.C.X0
-rw-r--r--tests/pr/col-0.I0
-rw-r--r--tests/pr/col-0.X0
-rw-r--r--tests/pr/col-02.C.I3
-rw-r--r--tests/pr/col-02.C.X2
-rw-r--r--tests/pr/col-02.I3
-rw-r--r--tests/pr/col-02.X2
-rw-r--r--tests/pr/col-2.C.I3
-rw-r--r--tests/pr/col-2.C.X2
-rw-r--r--tests/pr/col-2.I3
-rw-r--r--tests/pr/col-2.X2
-rw-r--r--tests/pr/col-inval.C.I0
-rw-r--r--tests/pr/col-inval.C.X0
-rw-r--r--tests/pr/col-inval.I0
-rw-r--r--tests/pr/col-inval.X0
-rw-r--r--tests/pr/col-last.I3
-rw-r--r--tests/pr/col-last.X2
-rw-r--r--tests/pr/col-long.C.I3
-rw-r--r--tests/pr/col-long.C.X2
-rw-r--r--tests/pr/col-long.I3
-rw-r--r--tests/pr/col-long.X2
-rw-r--r--tests/pr/dbl-sp-a.I2
-rw-r--r--tests/pr/dbl-sp-a.X14
-rw-r--r--tests/pr/dbl-sp-b.I2
-rw-r--r--tests/pr/dbl-sp-b.X4
-rw-r--r--tests/pr/i-opt-a.I1
-rw-r--r--tests/pr/i-opt-a.X1
-rw-r--r--tests/pr/i-opt-b.I1
-rw-r--r--tests/pr/i-opt-b.X1
-rw-r--r--tests/pr/l17f-t79
-rw-r--r--tests/pr/l24-FF216
-rw-r--r--tests/pr/l24-t120
-rw-r--r--tests/pr/loli63
-rw-r--r--tests/pr/margin-0.I0
-rw-r--r--tests/pr/margin-0.X0
-rw-r--r--tests/pr/ml17f-0F51
-rw-r--r--tests/pr/ml17f-lm-lo118
-rw-r--r--tests/pr/ml17f-t79
-rw-r--r--tests/pr/ml17f-t-0F79
-rw-r--r--tests/pr/ml20-FF-t260
-rw-r--r--tests/pr/ml24-FF216
-rw-r--r--tests/pr/ml24-t120
-rw-r--r--tests/pr/ml24-t-FF216
-rw-r--r--tests/pr/n+2-5l17f-0FF43
-rw-r--r--tests/pr/n+2l17f-0FF51
-rw-r--r--tests/pr/n+2l17f-bl94
-rw-r--r--tests/pr/n+3-7l24-FF120
-rw-r--r--tests/pr/n+3l17f-0FF47
-rw-r--r--tests/pr/n+3l17f-bl90
-rw-r--r--tests/pr/n+3ml13f-bl-FF103
-rw-r--r--tests/pr/n+3ml17f-bl-tn103
-rw-r--r--tests/pr/n+3ml17f-tn-bl103
-rw-r--r--tests/pr/n+4-8a2l17-FF85
-rw-r--r--tests/pr/n+4b2l10f-0FF21
-rw-r--r--tests/pr/n+5-8b3l10f-FF25
-rw-r--r--tests/pr/n+5a3l6f-0FF21
-rw-r--r--tests/pr/n+6a2l17-FF68
-rw-r--r--tests/pr/n+6b3l6f-FF40
-rw-r--r--tests/pr/n+7l24-FF72
-rw-r--r--tests/pr/n+8l20-FF120
-rw-r--r--tests/pr/nJml17f-lmlmlo118
-rw-r--r--tests/pr/nJml17f-lmlolm118
-rw-r--r--tests/pr/nN1+3l17f-bl90
-rw-r--r--tests/pr/nN15l17f-bl111
-rw-r--r--tests/pr/nSml13-bl-FF123
-rw-r--r--tests/pr/nSml13-t-t-FF134
-rw-r--r--tests/pr/nSml13-t-tFFFF134
-rw-r--r--tests/pr/nSml17-bl-FF111
-rw-r--r--tests/pr/nSml17-t-t-FF118
-rw-r--r--tests/pr/nSml17-t-tFFFF118
-rw-r--r--tests/pr/narrow-1.I1
-rw-r--r--tests/pr/narrow-1.X1
-rw-r--r--tests/pr/ncut-a.I5
-rw-r--r--tests/pr/ncut-a.X5
-rw-r--r--tests/pr/ncut-b.I5
-rw-r--r--tests/pr/ncut-b.X5
-rw-r--r--tests/pr/neg-page.I0
-rw-r--r--tests/pr/neg-page.X0
-rw-r--r--tests/pr/nl17f-bl111
-rw-r--r--tests/pr/o3Jml17f-lm-lo118
-rw-r--r--tests/pr/o3a3Sl17f-tn28
-rw-r--r--tests/pr/o3a3Snl17f-tn28
-rw-r--r--tests/pr/o3a3l17f-tn28
-rw-r--r--tests/pr/o3b3Sl17f-tn28
-rw-r--r--tests/pr/o3b3Snl17f-tn28
-rw-r--r--tests/pr/o3b3l17f-tn28
-rw-r--r--tests/pr/o3mSl17f-bl-tn137
-rw-r--r--tests/pr/o3mSnl17fbltn137
-rw-r--r--tests/pr/o3ml17f-bl-tn137
-rwxr-xr-xtests/pr/pr-tests7155
-rw-r--r--tests/pr/t-0FF33
-rw-r--r--tests/pr/t-FF60
-rw-r--r--tests/pr/t-bl77
-rw-r--r--tests/pr/t-t63
-rw-r--r--tests/pr/tFFn60
-rw-r--r--tests/pr/tFFt56
-rw-r--r--tests/pr/tFFt-bl74
-rw-r--r--tests/pr/tFFt-ll56
-rw-r--r--tests/pr/tFFt-lm56
-rw-r--r--tests/pr/tFnFt63
-rw-r--r--tests/pr/t_notab5
-rw-r--r--tests/pr/t_tab4
-rw-r--r--tests/pr/t_tab_4
-rw-r--r--tests/pr/ta3-0FF12
-rw-r--r--tests/pr/ta3-FF22
-rw-r--r--tests/pr/tb3-0FF12
-rw-r--r--tests/pr/tb3-FF22
-rw-r--r--tests/pr/tn63
-rw-r--r--tests/pr/tn2e5o3-t_tab2
-rw-r--r--tests/pr/tn2e8-t_tab2
-rw-r--r--tests/pr/tn2e8o3-t_tab2
-rw-r--r--tests/pr/tn_2e8-t_tab2
-rw-r--r--tests/pr/tn_2e8S-t_tab2
-rw-r--r--tests/pr/tne8-t_tab4
-rw-r--r--tests/pr/tne8o3-t_tab4
-rw-r--r--tests/pr/tt-0FF33
-rw-r--r--tests/pr/tt-FF60
-rw-r--r--tests/pr/tt-bl76
-rw-r--r--tests/pr/tt-t63
-rw-r--r--tests/pr/tta3-0FF12
-rw-r--r--tests/pr/tta3-FF22
-rw-r--r--tests/pr/ttb3-0FF12
-rw-r--r--tests/pr/ttb3-FF22
-rw-r--r--tests/pr/w72l17f-ll92
-rw-r--r--tests/priv-check94
-rw-r--r--tests/readlink/Makefile.am6
-rw-r--r--tests/readlink/Makefile.in716
-rwxr-xr-xtests/readlink/can-e136
-rwxr-xr-xtests/readlink/can-f169
-rwxr-xr-xtests/readlink/can-m172
-rwxr-xr-xtests/readlink/rl-171
-rw-r--r--tests/rm/Makefile.am51
-rw-r--r--tests/rm/Makefile.in763
-rwxr-xr-xtests/rm/cycle57
-rwxr-xr-xtests/rm/dangling-symlink60
-rwxr-xr-xtests/rm/deep-163
-rwxr-xr-xtests/rm/dir-no-w64
-rwxr-xr-xtests/rm/dir-nonrecur55
-rwxr-xr-xtests/rm/dot-rel48
-rwxr-xr-xtests/rm/empty-inacc57
-rwxr-xr-xtests/rm/f-144
-rwxr-xr-xtests/rm/fail-2eperm75
-rwxr-xr-xtests/rm/fail-eacces54
-rwxr-xr-xtests/rm/fail-eperm160
-rwxr-xr-xtests/rm/hash57
-rwxr-xr-xtests/rm/i-157
-rwxr-xr-xtests/rm/i-never53
-rwxr-xr-xtests/rm/i-no-r52
-rwxr-xr-xtests/rm/ignorable49
-rwxr-xr-xtests/rm/inaccessible76
-rwxr-xr-xtests/rm/interactive-always113
-rwxr-xr-xtests/rm/interactive-once133
-rwxr-xr-xtests/rm/ir-176
-rwxr-xr-xtests/rm/isatty77
-rwxr-xr-xtests/rm/no-give-up58
-rwxr-xr-xtests/rm/one-file-system67
-rwxr-xr-xtests/rm/r-167
-rwxr-xr-xtests/rm/r-268
-rwxr-xr-xtests/rm/r-365
-rwxr-xr-xtests/rm/r-456
-rwxr-xr-xtests/rm/readdir-bug60
-rwxr-xr-xtests/rm/rm169
-rwxr-xr-xtests/rm/rm276
-rwxr-xr-xtests/rm/rm395
-rwxr-xr-xtests/rm/rm452
-rwxr-xr-xtests/rm/rm574
-rwxr-xr-xtests/rm/sunos-148
-rwxr-xr-xtests/rm/unread257
-rwxr-xr-xtests/rm/unread362
-rw-r--r--tests/rmdir/Makefile.am11
-rw-r--r--tests/rmdir/Makefile.in720
-rwxr-xr-xtests/rmdir/fail-perm52
-rwxr-xr-xtests/rmdir/ignore45
-rwxr-xr-xtests/rmdir/t-slash47
-rwxr-xr-xtests/rwx-to-mode49
-rw-r--r--tests/sample-test55
-rw-r--r--tests/seq/Makefile.am10
-rw-r--r--tests/seq/Makefile.in720
-rwxr-xr-xtests/seq/basic90
-rw-r--r--tests/setgid-check43
-rw-r--r--tests/sha1sum/Makefile.am13
-rw-r--r--tests/sha1sum/Makefile.in720
-rwxr-xr-xtests/sha1sum/basic-191
-rwxr-xr-xtests/sha1sum/sample-vec548
-rw-r--r--tests/shred/Makefile.am12
-rw-r--r--tests/shred/Makefile.in719
-rwxr-xr-xtests/shred/exact55
-rwxr-xr-xtests/shred/remove56
-rw-r--r--tests/sort/01a.I3
-rw-r--r--tests/sort/01a.X3
-rw-r--r--tests/sort/02a.I3
-rw-r--r--tests/sort/02a.X0
-rw-r--r--tests/sort/02b.I3
-rw-r--r--tests/sort/02b.X0
-rw-r--r--tests/sort/02c.I2
-rw-r--r--tests/sort/02c.X0
-rw-r--r--tests/sort/02d.I3
-rw-r--r--tests/sort/02d.X0
-rw-r--r--tests/sort/02e.I3
-rw-r--r--tests/sort/02e.X0
-rw-r--r--tests/sort/02m.I2
-rw-r--r--tests/sort/02m.X0
-rw-r--r--tests/sort/02n.I2
-rw-r--r--tests/sort/02n.X0
-rw-r--r--tests/sort/02o.I3
-rw-r--r--tests/sort/02o.X0
-rw-r--r--tests/sort/02p.I3
-rw-r--r--tests/sort/02p.X0
-rw-r--r--tests/sort/03a.I2
-rw-r--r--tests/sort/03a.X2
-rw-r--r--tests/sort/03b.I2
-rw-r--r--tests/sort/03b.X2
-rw-r--r--tests/sort/03c.I2
-rw-r--r--tests/sort/03c.X2
-rw-r--r--tests/sort/03d.I0
-rw-r--r--tests/sort/03d.X0
-rw-r--r--tests/sort/03e.I0
-rw-r--r--tests/sort/03e.X0
-rw-r--r--tests/sort/03f.I0
-rw-r--r--tests/sort/03f.X0
-rw-r--r--tests/sort/03g.I0
-rw-r--r--tests/sort/03g.X0
-rw-r--r--tests/sort/03h.I0
-rw-r--r--tests/sort/03h.X0
-rw-r--r--tests/sort/03i.I0
-rw-r--r--tests/sort/03i.X0
-rw-r--r--tests/sort/04a.I2
-rw-r--r--tests/sort/04a.X0
-rw-r--r--tests/sort/04b.I2
-rw-r--r--tests/sort/04b.X2
-rw-r--r--tests/sort/04c.I2
-rw-r--r--tests/sort/04c.X2
-rw-r--r--tests/sort/04d.I2
-rw-r--r--tests/sort/04d.X2
-rw-r--r--tests/sort/04e.I2
-rw-r--r--tests/sort/04e.X2
-rw-r--r--tests/sort/05a.I2
-rw-r--r--tests/sort/05a.X2
-rw-r--r--tests/sort/05b.I2
-rw-r--r--tests/sort/05b.X2
-rw-r--r--tests/sort/05c.I2
-rw-r--r--tests/sort/05c.X2
-rw-r--r--tests/sort/05d.I2
-rw-r--r--tests/sort/05d.X2
-rw-r--r--tests/sort/05e.I2
-rw-r--r--tests/sort/05e.X2
-rw-r--r--tests/sort/05f.I2
-rw-r--r--tests/sort/05f.X2
-rw-r--r--tests/sort/06a.I2
-rw-r--r--tests/sort/06a.X2
-rw-r--r--tests/sort/06b.I2
-rw-r--r--tests/sort/06b.X2
-rw-r--r--tests/sort/06c.I2
-rw-r--r--tests/sort/06c.X2
-rw-r--r--tests/sort/06d.I2
-rw-r--r--tests/sort/06d.X2
-rw-r--r--tests/sort/06e.I2
-rw-r--r--tests/sort/06e.X2
-rw-r--r--tests/sort/06f.I2
-rw-r--r--tests/sort/06f.X2
-rw-r--r--tests/sort/07a.I2
-rw-r--r--tests/sort/07a.X2
-rw-r--r--tests/sort/07b.I2
-rw-r--r--tests/sort/07b.X2
-rw-r--r--tests/sort/07c.I2
-rw-r--r--tests/sort/07c.X2
-rw-r--r--tests/sort/07d.I2
-rw-r--r--tests/sort/07d.X2
-rw-r--r--tests/sort/08a.I0
-rw-r--r--tests/sort/08a.X0
-rw-r--r--tests/sort/08b.I0
-rw-r--r--tests/sort/08b.X0
-rw-r--r--tests/sort/09a.I2
-rw-r--r--tests/sort/09a.X2
-rw-r--r--tests/sort/09b.I2
-rw-r--r--tests/sort/09b.X2
-rw-r--r--tests/sort/09c.I2
-rw-r--r--tests/sort/09c.X2
-rw-r--r--tests/sort/09d.I2
-rw-r--r--tests/sort/09d.X2
-rw-r--r--tests/sort/10a.I2
-rw-r--r--tests/sort/10a.X2
-rw-r--r--tests/sort/10a0.I2
-rw-r--r--tests/sort/10a0.X2
-rw-r--r--tests/sort/10a1.I2
-rw-r--r--tests/sort/10a1.X2
-rw-r--r--tests/sort/10a2.I2
-rw-r--r--tests/sort/10a2.X2
-rw-r--r--tests/sort/10b.I2
-rw-r--r--tests/sort/10b.X2
-rw-r--r--tests/sort/10c.I2
-rw-r--r--tests/sort/10c.X2
-rw-r--r--tests/sort/10d.I2
-rw-r--r--tests/sort/10d.X2
-rw-r--r--tests/sort/10e.I2
-rw-r--r--tests/sort/10e.X2
-rw-r--r--tests/sort/10f.I2
-rw-r--r--tests/sort/10f.X2
-rw-r--r--tests/sort/10g.I2
-rw-r--r--tests/sort/10g.X2
-rw-r--r--tests/sort/11a.I2
-rw-r--r--tests/sort/11a.X2
-rw-r--r--tests/sort/11b.I2
-rw-r--r--tests/sort/11b.X2
-rw-r--r--tests/sort/11c.I2
-rw-r--r--tests/sort/11c.X2
-rw-r--r--tests/sort/11d.I2
-rw-r--r--tests/sort/11d.X2
-rw-r--r--tests/sort/12a.I2
-rw-r--r--tests/sort/12a.X2
-rw-r--r--tests/sort/12b.I2
-rw-r--r--tests/sort/12b.X2
-rw-r--r--tests/sort/12c.I2
-rw-r--r--tests/sort/12c.X2
-rw-r--r--tests/sort/12d.I2
-rw-r--r--tests/sort/12d.X2
-rw-r--r--tests/sort/13a.I2
-rw-r--r--tests/sort/13a.X2
-rw-r--r--tests/sort/13b.I2
-rw-r--r--tests/sort/13b.X2
-rw-r--r--tests/sort/14a.I3
-rw-r--r--tests/sort/14a.X2
-rw-r--r--tests/sort/14b.I3
-rw-r--r--tests/sort/14b.X2
-rw-r--r--tests/sort/15a.I2
-rw-r--r--tests/sort/15a.X1
-rw-r--r--tests/sort/15b.I2
-rw-r--r--tests/sort/15b.X1
-rw-r--r--tests/sort/15c.I2
-rw-r--r--tests/sort/15c.X1
-rw-r--r--tests/sort/15d.I2
-rw-r--r--tests/sort/15d.X1
-rw-r--r--tests/sort/15e.I2
-rw-r--r--tests/sort/15e.X1
-rw-r--r--tests/sort/16a.I6
-rw-r--r--tests/sort/16a.X6
-rw-r--r--tests/sort/17.I1
-rw-r--r--tests/sort/17.X0
-rw-r--r--tests/sort/18a.I2
-rw-r--r--tests/sort/18a.X2
-rw-r--r--tests/sort/18b.I2
-rw-r--r--tests/sort/18b.X2
-rw-r--r--tests/sort/18c.I2
-rw-r--r--tests/sort/18c.X2
-rw-r--r--tests/sort/18d.I2
-rw-r--r--tests/sort/18d.X2
-rw-r--r--tests/sort/18e.I2
-rw-r--r--tests/sort/18e.X2
-rw-r--r--tests/sort/19a.I3
-rw-r--r--tests/sort/19a.X3
-rw-r--r--tests/sort/19b.I3
-rw-r--r--tests/sort/19b.X3
-rw-r--r--tests/sort/20a.I10
-rw-r--r--tests/sort/20a.X10
-rw-r--r--tests/sort/21a.I3
-rw-r--r--tests/sort/21a.X3
-rw-r--r--tests/sort/21b.I3
-rw-r--r--tests/sort/21b.X3
-rw-r--r--tests/sort/21c.I3
-rw-r--r--tests/sort/21c.X3
-rw-r--r--tests/sort/21d.I3
-rw-r--r--tests/sort/21d.X3
-rw-r--r--tests/sort/21e.I3
-rw-r--r--tests/sort/21e.X3
-rw-r--r--tests/sort/21f.I3
-rw-r--r--tests/sort/21f.X3
-rw-r--r--tests/sort/21g.I2
-rw-r--r--tests/sort/21g.X2
-rw-r--r--tests/sort/22a.I2
-rw-r--r--tests/sort/22a.X2
-rw-r--r--tests/sort/22b.I2
-rw-r--r--tests/sort/22b.X2
-rw-r--r--tests/sort/Makefile.am99
-rw-r--r--tests/sort/Makefile.in809
-rwxr-xr-xtests/sort/Test.pm292
-rw-r--r--tests/sort/bigfield.I2
-rw-r--r--tests/sort/bigfield.X2
-rw-r--r--tests/sort/create-empty.X0
-rw-r--r--tests/sort/incompat1.I0
-rw-r--r--tests/sort/incompat1.X0
-rw-r--r--tests/sort/incompat2.I0
-rw-r--r--tests/sort/incompat2.X0
-rw-r--r--tests/sort/incompat3.I0
-rw-r--r--tests/sort/incompat3.X0
-rw-r--r--tests/sort/incompat4.I0
-rw-r--r--tests/sort/incompat4.X0
-rw-r--r--tests/sort/incompat5.I0
-rw-r--r--tests/sort/incompat5.X0
-rw-r--r--tests/sort/incompat6.I0
-rw-r--r--tests/sort/incompat6.X0
-rw-r--r--tests/sort/n1.I2
-rw-r--r--tests/sort/n1.X2
-rw-r--r--tests/sort/n10a.I2
-rw-r--r--tests/sort/n10a.X2
-rw-r--r--tests/sort/n10b.I2
-rw-r--r--tests/sort/n10b.X2
-rw-r--r--tests/sort/n11a.I2
-rw-r--r--tests/sort/n11a.X2
-rw-r--r--tests/sort/n11b.I2
-rw-r--r--tests/sort/n11b.X2
-rw-r--r--tests/sort/n2.I2
-rw-r--r--tests/sort/n2.X2
-rw-r--r--tests/sort/n3.I2
-rw-r--r--tests/sort/n3.X2
-rw-r--r--tests/sort/n4.I2
-rw-r--r--tests/sort/n4.X2
-rw-r--r--tests/sort/n5.I2
-rw-r--r--tests/sort/n5.X2
-rw-r--r--tests/sort/n6.I2
-rw-r--r--tests/sort/n6.X2
-rw-r--r--tests/sort/n7.I2
-rw-r--r--tests/sort/n7.X2
-rw-r--r--tests/sort/n8a.I2
-rw-r--r--tests/sort/n8a.X2
-rw-r--r--tests/sort/n8b.I2
-rw-r--r--tests/sort/n8b.X2
-rw-r--r--tests/sort/n9a.I2
-rw-r--r--tests/sort/n9a.X2
-rw-r--r--tests/sort/n9b.I2
-rw-r--r--tests/sort/n9b.X2
-rw-r--r--tests/sort/neg-nls.I2
-rw-r--r--tests/sort/neg-nls.X2
-rw-r--r--tests/sort/no-file1.X0
-rw-r--r--tests/sort/nul-nls.Ibin0 -> 6 bytes
-rw-r--r--tests/sort/nul-nls.Xbin0 -> 6 bytes
-rw-r--r--tests/sort/nul-tab.Ibin0 -> 10 bytes
-rw-r--r--tests/sort/nul-tab.Xbin0 -> 10 bytes
-rw-r--r--tests/sort/o-no-file1.X0
-rw-r--r--tests/sort/o2.I0
-rw-r--r--tests/sort/o2.X0
-rwxr-xr-xtests/sort/sort-tests2223
-rw-r--r--tests/sort/use-nl.I2
-rw-r--r--tests/sort/use-nl.X2
-rw-r--r--tests/sparse-file33
-rw-r--r--tests/stty/Makefile.am6
-rw-r--r--tests/stty/Makefile.in716
-rwxr-xr-xtests/stty/basic-1106
-rwxr-xr-xtests/stty/row-col-188
-rw-r--r--tests/sum/Makefile.am13
-rw-r--r--tests/sum/Makefile.in720
-rwxr-xr-xtests/sum/basic-175
-rwxr-xr-xtests/sum/sysv76
-rw-r--r--tests/tac/Makefile.am70
-rw-r--r--tests/tac/Makefile.in780
-rw-r--r--tests/tac/Test.pm84
-rw-r--r--tests/tac/b2-e.I2
-rw-r--r--tests/tac/b2-e.X2
-rw-r--r--tests/tac/b2-f.I2
-rw-r--r--tests/tac/b2-f.X2
-rw-r--r--tests/tac/b2-g.I2
-rw-r--r--tests/tac/b2-g.X2
-rw-r--r--tests/tac/b2-h.I2
-rw-r--r--tests/tac/b2-h.X2
-rw-r--r--tests/tac/b2-i.I2
-rw-r--r--tests/tac/b2-i.X2
-rw-r--r--tests/tac/b2-j.I2
-rw-r--r--tests/tac/b2-j.X2
-rw-r--r--tests/tac/b2-k.I2
-rw-r--r--tests/tac/b2-k.X2
-rw-r--r--tests/tac/basic-0.I0
-rw-r--r--tests/tac/basic-0.X0
-rw-r--r--tests/tac/basic-a.I1
-rw-r--r--tests/tac/basic-a.X1
-rw-r--r--tests/tac/basic-b.I1
-rw-r--r--tests/tac/basic-b.X1
-rw-r--r--tests/tac/basic-c.I1
-rw-r--r--tests/tac/basic-c.X1
-rw-r--r--tests/tac/basic-d.I2
-rw-r--r--tests/tac/basic-d.X2
-rw-r--r--tests/tac/basic-e.I2
-rw-r--r--tests/tac/basic-e.X2
-rw-r--r--tests/tac/basic-f.I2
-rw-r--r--tests/tac/basic-f.X2
-rw-r--r--tests/tac/basic-g.I2
-rw-r--r--tests/tac/basic-g.X2
-rw-r--r--tests/tac/basic-h.I2
-rw-r--r--tests/tac/basic-h.X2
-rw-r--r--tests/tac/basic-i.I2
-rw-r--r--tests/tac/basic-i.X2
-rw-r--r--tests/tac/basic-j.I2
-rw-r--r--tests/tac/basic-j.X2
-rw-r--r--tests/tac/basic-k.I2
-rw-r--r--tests/tac/basic-k.X2
-rw-r--r--tests/tac/opt-b.I4
-rw-r--r--tests/tac/opt-b.X4
-rw-r--r--tests/tac/opt-br.I1
-rw-r--r--tests/tac/opt-br.X1
-rw-r--r--tests/tac/opt-br2.I1
-rw-r--r--tests/tac/opt-br2.X1
-rw-r--r--tests/tac/opt-r.I1
-rw-r--r--tests/tac/opt-r.X1
-rw-r--r--tests/tac/opt-r2.I1
-rw-r--r--tests/tac/opt-r2.X1
-rw-r--r--tests/tac/opt-s.I1
-rw-r--r--tests/tac/opt-s.X1
-rw-r--r--tests/tac/opt-sb.I1
-rw-r--r--tests/tac/opt-sb.X1
-rwxr-xr-xtests/tac/tac-tests945
-rw-r--r--tests/tail-2/Makefile.am34
-rw-r--r--tests/tail-2/Makefile.in744
-rwxr-xr-xtests/tail-2/append-only55
-rwxr-xr-xtests/tail-2/assert78
-rwxr-xr-xtests/tail-2/assert-266
-rwxr-xr-xtests/tail-2/big-4gb71
-rwxr-xr-xtests/tail-2/proc-ksyms38
-rwxr-xr-xtests/tail-2/start-middle53
-rwxr-xr-xtests/tail-2/tail-n0f76
-rw-r--r--tests/tail/Makefile.am78
-rw-r--r--tests/tail/Makefile.in788
-rwxr-xr-xtests/tail/Test.pm144
-rw-r--r--tests/tail/c-2-minus.I1
-rw-r--r--tests/tail/c-2-minus.X1
-rw-r--r--tests/tail/c-2.I1
-rw-r--r--tests/tail/c-2.X1
-rw-r--r--tests/tail/c2-minus.I1
-rw-r--r--tests/tail/c2-minus.X1
-rw-r--r--tests/tail/c2.I1
-rw-r--r--tests/tail/c2.X1
-rw-r--r--tests/tail/err-1.I0
-rw-r--r--tests/tail/err-1.X0
-rw-r--r--tests/tail/err-2.I0
-rw-r--r--tests/tail/err-2.X0
-rw-r--r--tests/tail/err-3.I0
-rw-r--r--tests/tail/err-3.X0
-rw-r--r--tests/tail/err-4.I0
-rw-r--r--tests/tail/err-4.X0
-rw-r--r--tests/tail/err-5.I0
-rw-r--r--tests/tail/err-5.X0
-rw-r--r--tests/tail/err-6.I0
-rw-r--r--tests/tail/err-6.X0
-rw-r--r--tests/tail/f-pipe-1.I2
-rw-r--r--tests/tail/f-pipe-1.X1
-rw-r--r--tests/tail/minus-1.I0
-rw-r--r--tests/tail/minus-1.X0
-rw-r--r--tests/tail/minus-2.I12
-rw-r--r--tests/tail/minus-2.X10
-rw-r--r--tests/tail/n-1.I12
-rw-r--r--tests/tail/n-1.X10
-rw-r--r--tests/tail/n-2.I12
-rw-r--r--tests/tail/n-2.X10
-rw-r--r--tests/tail/n-3.I12
-rw-r--r--tests/tail/n-3.X3
-rw-r--r--tests/tail/n-4.I5
-rw-r--r--tests/tail/n-4.X5
-rw-r--r--tests/tail/n-4a.I5
-rw-r--r--tests/tail/n-4a.X5
-rw-r--r--tests/tail/n-5.I5
-rw-r--r--tests/tail/n-5.X0
-rw-r--r--tests/tail/n-5a.I5
-rw-r--r--tests/tail/n-5a.X1
-rw-r--r--tests/tail/n-5b.I5
-rw-r--r--tests/tail/n-5b.X0
-rw-r--r--tests/tail/obs-1.I1
-rw-r--r--tests/tail/obs-1.X1
-rw-r--r--tests/tail/obs-2.I2
-rw-r--r--tests/tail/obs-2.X1
-rw-r--r--tests/tail/obs-3.I2
-rw-r--r--tests/tail/obs-3.X1
-rw-r--r--tests/tail/obs-b.I2561
-rw-r--r--tests/tail/obs-b.X2560
-rw-r--r--tests/tail/obs-c3.I1
-rw-r--r--tests/tail/obs-c3.X1
-rw-r--r--tests/tail/obs-c4.I1
-rw-r--r--tests/tail/obs-c4.X1
-rw-r--r--tests/tail/obs-c5.I1
-rw-r--r--tests/tail/obs-c5.X1
-rw-r--r--tests/tail/obs-l.I12
-rw-r--r--tests/tail/obs-l.X10
-rw-r--r--tests/tail/obs-l1.I1
-rw-r--r--tests/tail/obs-l1.X1
-rw-r--r--tests/tail/obs-l2.I2
-rw-r--r--tests/tail/obs-l2.X1
-rw-r--r--tests/tail/obs-l3.I2
-rw-r--r--tests/tail/obs-l3.X1
-rw-r--r--tests/tail/obs-plus-4.I2
-rw-r--r--tests/tail/obs-plus-4.X2
-rw-r--r--tests/tail/obs-plus-5.I2
-rw-r--r--tests/tail/obs-plus-5.X1
-rw-r--r--tests/tail/obs-plus-c1.I1
-rw-r--r--tests/tail/obs-plus-c1.X1
-rw-r--r--tests/tail/obs-plus-c2.I1
-rw-r--r--tests/tail/obs-plus-c2.X0
-rw-r--r--tests/tail/obs-plus-l4.I2
-rw-r--r--tests/tail/obs-plus-l4.X2
-rw-r--r--tests/tail/obs-plus-l5.I2
-rw-r--r--tests/tail/obs-plus-l5.X1
-rw-r--r--tests/tail/obs-plus-x1.I1
-rw-r--r--tests/tail/obs-plus-x1.X1
-rw-r--r--tests/tail/obs-plus-x2.I12
-rw-r--r--tests/tail/obs-plus-x2.X3
-rwxr-xr-xtests/tail/tail-tests2079
-rw-r--r--tests/tee/Makefile.am6
-rw-r--r--tests/tee/Makefile.in716
-rwxr-xr-xtests/tee/basic50
-rwxr-xr-xtests/tee/dash41
-rw-r--r--tests/test/1a.X0
-rw-r--r--tests/test/1b.X0
-rw-r--r--tests/test/1c.X0
-rw-r--r--tests/test/1d.X0
-rw-r--r--tests/test/1e.X0
-rw-r--r--tests/test/1f.X0
-rw-r--r--tests/test/1g.X0
-rw-r--r--tests/test/1h.X0
-rw-r--r--tests/test/1i.X0
-rw-r--r--tests/test/1j.X0
-rw-r--r--tests/test/1k.X0
-rw-r--r--tests/test/Makefile.am154
-rw-r--r--tests/test/Makefile.in864
-rw-r--r--tests/test/N-1b.X0
-rw-r--r--tests/test/N-1c.X0
-rw-r--r--tests/test/N-1d.X0
-rw-r--r--tests/test/N-1e.X0
-rw-r--r--tests/test/N-1f.X0
-rw-r--r--tests/test/N-1g.X0
-rw-r--r--tests/test/N-1h.X0
-rw-r--r--tests/test/N-1i.X0
-rw-r--r--tests/test/N-1j.X0
-rw-r--r--tests/test/N-1k.X0
-rw-r--r--tests/test/N-and-1.X0
-rw-r--r--tests/test/N-and-2.X0
-rw-r--r--tests/test/N-and-3.X0
-rw-r--r--tests/test/N-and-4.X0
-rw-r--r--tests/test/N-eq-1.X0
-rw-r--r--tests/test/N-eq-2.X0
-rw-r--r--tests/test/N-eq-3.X0
-rw-r--r--tests/test/N-eq-4.X0
-rw-r--r--tests/test/N-eq-5.X0
-rw-r--r--tests/test/N-eq-6.X0
-rw-r--r--tests/test/N-gt-1.X0
-rw-r--r--tests/test/N-gt-2.X0
-rw-r--r--tests/test/N-gt-3.X0
-rw-r--r--tests/test/N-gt-4.X0
-rw-r--r--tests/test/N-gt-5.X0
-rw-r--r--tests/test/N-lt-1.X0
-rw-r--r--tests/test/N-lt-2.X0
-rw-r--r--tests/test/N-lt-3.X0
-rw-r--r--tests/test/N-lt-4.X0
-rw-r--r--tests/test/N-lt-5.X0
-rw-r--r--tests/test/N-or-1.X0
-rw-r--r--tests/test/N-or-2.X0
-rw-r--r--tests/test/N-or-3.X0
-rw-r--r--tests/test/N-or-4.X0
-rw-r--r--tests/test/N-paren-1.X0
-rw-r--r--tests/test/N-paren-2.X0
-rw-r--r--tests/test/N-paren-3.X0
-rw-r--r--tests/test/N-paren-4.X0
-rw-r--r--tests/test/N-paren-5.X0
-rw-r--r--tests/test/N-streq-1.X0
-rw-r--r--tests/test/N-streq-2.X0
-rw-r--r--tests/test/N-streq-3.X0
-rw-r--r--tests/test/N-streq-4.X0
-rw-r--r--tests/test/N-streq-5.X0
-rw-r--r--tests/test/N-streq-6.X0
-rw-r--r--tests/test/N-strne-1.X0
-rw-r--r--tests/test/N-strne-2.X0
-rw-r--r--tests/test/N-strne-3.X0
-rw-r--r--tests/test/N-strne-4.X0
-rw-r--r--tests/test/N-strne-5.X0
-rw-r--r--tests/test/N-strne-6.X0
-rw-r--r--tests/test/N-t1.X0
-rw-r--r--tests/test/N-t2.X0
-rw-r--r--tests/test/NNP-1b.X0
-rw-r--r--tests/test/NNP-1c.X0
-rw-r--r--tests/test/NNP-1d.X0
-rw-r--r--tests/test/NNP-1e.X0
-rw-r--r--tests/test/NNP-1f.X0
-rw-r--r--tests/test/NNP-1g.X0
-rw-r--r--tests/test/NNP-1h.X0
-rw-r--r--tests/test/NNP-1i.X0
-rw-r--r--tests/test/NNP-1j.X0
-rw-r--r--tests/test/NNP-1k.X0
-rw-r--r--tests/test/NNP-and-1.X0
-rw-r--r--tests/test/NNP-and-2.X0
-rw-r--r--tests/test/NNP-and-3.X0
-rw-r--r--tests/test/NNP-and-4.X0
-rw-r--r--tests/test/NNP-eq-1.X0
-rw-r--r--tests/test/NNP-eq-2.X0
-rw-r--r--tests/test/NNP-eq-3.X0
-rw-r--r--tests/test/NNP-eq-4.X0
-rw-r--r--tests/test/NNP-eq-5.X0
-rw-r--r--tests/test/NNP-eq-6.X0
-rw-r--r--tests/test/NNP-gt-1.X0
-rw-r--r--tests/test/NNP-gt-2.X0
-rw-r--r--tests/test/NNP-gt-3.X0
-rw-r--r--tests/test/NNP-gt-4.X0
-rw-r--r--tests/test/NNP-gt-5.X0
-rw-r--r--tests/test/NNP-lt-1.X0
-rw-r--r--tests/test/NNP-lt-2.X0
-rw-r--r--tests/test/NNP-lt-3.X0
-rw-r--r--tests/test/NNP-lt-4.X0
-rw-r--r--tests/test/NNP-lt-5.X0
-rw-r--r--tests/test/NNP-or-1.X0
-rw-r--r--tests/test/NNP-or-2.X0
-rw-r--r--tests/test/NNP-or-3.X0
-rw-r--r--tests/test/NNP-or-4.X0
-rw-r--r--tests/test/NNP-streq-1.X0
-rw-r--r--tests/test/NNP-streq-2.X0
-rw-r--r--tests/test/NNP-streq-3.X0
-rw-r--r--tests/test/NNP-streq-4.X0
-rw-r--r--tests/test/NNP-streq-5.X0
-rw-r--r--tests/test/NNP-strne-1.X0
-rw-r--r--tests/test/NNP-strne-2.X0
-rw-r--r--tests/test/NNP-strne-3.X0
-rw-r--r--tests/test/NNP-strne-4.X0
-rw-r--r--tests/test/NNP-strne-5.X0
-rw-r--r--tests/test/NNP-t1.X0
-rw-r--r--tests/test/NNP-t2.X0
-rw-r--r--tests/test/NP-1b.X0
-rw-r--r--tests/test/NP-1c.X0
-rw-r--r--tests/test/NP-1d.X0
-rw-r--r--tests/test/NP-1e.X0
-rw-r--r--tests/test/NP-1f.X0
-rw-r--r--tests/test/NP-1g.X0
-rw-r--r--tests/test/NP-1h.X0
-rw-r--r--tests/test/NP-1i.X0
-rw-r--r--tests/test/NP-1j.X0
-rw-r--r--tests/test/NP-1k.X0
-rw-r--r--tests/test/NP-and-1.X0
-rw-r--r--tests/test/NP-and-2.X0
-rw-r--r--tests/test/NP-and-3.X0
-rw-r--r--tests/test/NP-and-4.X0
-rw-r--r--tests/test/NP-eq-1.X0
-rw-r--r--tests/test/NP-eq-2.X0
-rw-r--r--tests/test/NP-eq-3.X0
-rw-r--r--tests/test/NP-eq-4.X0
-rw-r--r--tests/test/NP-eq-5.X0
-rw-r--r--tests/test/NP-eq-6.X0
-rw-r--r--tests/test/NP-gt-1.X0
-rw-r--r--tests/test/NP-gt-2.X0
-rw-r--r--tests/test/NP-gt-3.X0
-rw-r--r--tests/test/NP-gt-4.X0
-rw-r--r--tests/test/NP-gt-5.X0
-rw-r--r--tests/test/NP-lt-1.X0
-rw-r--r--tests/test/NP-lt-2.X0
-rw-r--r--tests/test/NP-lt-3.X0
-rw-r--r--tests/test/NP-lt-4.X0
-rw-r--r--tests/test/NP-lt-5.X0
-rw-r--r--tests/test/NP-or-1.X0
-rw-r--r--tests/test/NP-or-2.X0
-rw-r--r--tests/test/NP-or-3.X0
-rw-r--r--tests/test/NP-or-4.X0
-rw-r--r--tests/test/NP-streq-1.X0
-rw-r--r--tests/test/NP-streq-2.X0
-rw-r--r--tests/test/NP-streq-3.X0
-rw-r--r--tests/test/NP-streq-4.X0
-rw-r--r--tests/test/NP-streq-5.X0
-rw-r--r--tests/test/NP-strne-1.X0
-rw-r--r--tests/test/NP-strne-2.X0
-rw-r--r--tests/test/NP-strne-3.X0
-rw-r--r--tests/test/NP-strne-4.X0
-rw-r--r--tests/test/NP-strne-5.X0
-rw-r--r--tests/test/NP-t1.X0
-rw-r--r--tests/test/NP-t2.X0
-rw-r--r--tests/test/P-1b.X0
-rw-r--r--tests/test/P-1c.X0
-rw-r--r--tests/test/P-1d.X0
-rw-r--r--tests/test/P-1e.X0
-rw-r--r--tests/test/P-1f.X0
-rw-r--r--tests/test/P-1g.X0
-rw-r--r--tests/test/P-1h.X0
-rw-r--r--tests/test/P-1i.X0
-rw-r--r--tests/test/P-1j.X0
-rw-r--r--tests/test/P-1k.X0
-rw-r--r--tests/test/P-and-1.X0
-rw-r--r--tests/test/P-and-2.X0
-rw-r--r--tests/test/P-and-3.X0
-rw-r--r--tests/test/P-and-4.X0
-rw-r--r--tests/test/P-eq-1.X0
-rw-r--r--tests/test/P-eq-2.X0
-rw-r--r--tests/test/P-eq-3.X0
-rw-r--r--tests/test/P-eq-4.X0
-rw-r--r--tests/test/P-eq-5.X0
-rw-r--r--tests/test/P-eq-6.X0
-rw-r--r--tests/test/P-gt-1.X0
-rw-r--r--tests/test/P-gt-2.X0
-rw-r--r--tests/test/P-gt-3.X0
-rw-r--r--tests/test/P-gt-4.X0
-rw-r--r--tests/test/P-gt-5.X0
-rw-r--r--tests/test/P-lt-1.X0
-rw-r--r--tests/test/P-lt-2.X0
-rw-r--r--tests/test/P-lt-3.X0
-rw-r--r--tests/test/P-lt-4.X0
-rw-r--r--tests/test/P-lt-5.X0
-rw-r--r--tests/test/P-or-1.X0
-rw-r--r--tests/test/P-or-2.X0
-rw-r--r--tests/test/P-or-3.X0
-rw-r--r--tests/test/P-or-4.X0
-rw-r--r--tests/test/P-streq-1.X0
-rw-r--r--tests/test/P-streq-2.X0
-rw-r--r--tests/test/P-streq-3.X0
-rw-r--r--tests/test/P-streq-4.X0
-rw-r--r--tests/test/P-streq-5.X0
-rw-r--r--tests/test/P-strne-1.X0
-rw-r--r--tests/test/P-strne-2.X0
-rw-r--r--tests/test/P-strne-3.X0
-rw-r--r--tests/test/P-strne-4.X0
-rw-r--r--tests/test/P-strne-5.X0
-rw-r--r--tests/test/P-t1.X0
-rw-r--r--tests/test/P-t2.X0
-rw-r--r--tests/test/Test.pm150
-rw-r--r--tests/test/and-1.X0
-rw-r--r--tests/test/and-2.X0
-rw-r--r--tests/test/and-3.X0
-rw-r--r--tests/test/and-4.X0
-rw-r--r--tests/test/eq-1.X0
-rw-r--r--tests/test/eq-2.X0
-rw-r--r--tests/test/eq-3.X0
-rw-r--r--tests/test/eq-4.X0
-rw-r--r--tests/test/eq-5.X0
-rw-r--r--tests/test/eq-6.X0
-rw-r--r--tests/test/ge-1.X0
-rw-r--r--tests/test/ge-2.X0
-rw-r--r--tests/test/ge-3.X0
-rw-r--r--tests/test/ge-4.X0
-rw-r--r--tests/test/ge-5.X0
-rw-r--r--tests/test/gt-1.X0
-rw-r--r--tests/test/gt-2.X0
-rw-r--r--tests/test/gt-3.X0
-rw-r--r--tests/test/gt-4.X0
-rw-r--r--tests/test/gt-5.X0
-rw-r--r--tests/test/inv-1.X0
-rw-r--r--tests/test/le-1.X0
-rw-r--r--tests/test/le-2.X0
-rw-r--r--tests/test/le-3.X0
-rw-r--r--tests/test/le-4.X0
-rw-r--r--tests/test/le-5.X0
-rw-r--r--tests/test/lt-1.X0
-rw-r--r--tests/test/lt-2.X0
-rw-r--r--tests/test/lt-3.X0
-rw-r--r--tests/test/lt-4.X0
-rw-r--r--tests/test/lt-5.X0
-rw-r--r--tests/test/ne-1.X0
-rw-r--r--tests/test/ne-2.X0
-rw-r--r--tests/test/ne-3.X0
-rw-r--r--tests/test/ne-4.X0
-rw-r--r--tests/test/ne-5.X0
-rw-r--r--tests/test/ne-6.X0
-rw-r--r--tests/test/or-1.X0
-rw-r--r--tests/test/or-2.X0
-rw-r--r--tests/test/or-3.X0
-rw-r--r--tests/test/or-4.X0
-rw-r--r--tests/test/paren-1.X0
-rw-r--r--tests/test/paren-2.X0
-rw-r--r--tests/test/paren-3.X0
-rw-r--r--tests/test/paren-4.X0
-rw-r--r--tests/test/paren-5.X0
-rw-r--r--tests/test/streq-1.X0
-rw-r--r--tests/test/streq-2.X0
-rw-r--r--tests/test/streq-3.X0
-rw-r--r--tests/test/streq-4.X0
-rw-r--r--tests/test/streq-5.X0
-rw-r--r--tests/test/streq-6.X0
-rw-r--r--tests/test/strne-1.X0
-rw-r--r--tests/test/strne-2.X0
-rw-r--r--tests/test/strne-3.X0
-rw-r--r--tests/test/strne-4.X0
-rw-r--r--tests/test/strne-5.X0
-rw-r--r--tests/test/strne-6.X0
-rw-r--r--tests/test/t1.X0
-rw-r--r--tests/test/t2.X0
-rwxr-xr-xtests/test/test-tests4743
-rw-r--r--tests/touch/Makefile.am30
-rw-r--r--tests/touch/Makefile.in742
-rwxr-xr-xtests/touch/dangling-symlink56
-rwxr-xr-xtests/touch/dir-112
-rwxr-xr-xtests/touch/empty-file93
-rwxr-xr-xtests/touch/fail-diag59
-rwxr-xr-xtests/touch/fifo48
-rwxr-xr-xtests/touch/no-create-missing56
-rwxr-xr-xtests/touch/no-rights57
-rwxr-xr-xtests/touch/not-owner76
-rwxr-xr-xtests/touch/obsolescent60
-rwxr-xr-xtests/touch/read-only51
-rwxr-xr-xtests/touch/relative59
-rw-r--r--tests/tr/1.I1
-rw-r--r--tests/tr/1.X1
-rw-r--r--tests/tr/2.I1
-rw-r--r--tests/tr/2.X1
-rw-r--r--tests/tr/3.I1
-rw-r--r--tests/tr/3.X1
-rw-r--r--tests/tr/4.I1
-rw-r--r--tests/tr/4.X1
-rw-r--r--tests/tr/5.I1
-rw-r--r--tests/tr/5.X1
-rw-r--r--tests/tr/6.I1
-rw-r--r--tests/tr/6.X1
-rw-r--r--tests/tr/7.I1
-rw-r--r--tests/tr/7.X1
-rw-r--r--tests/tr/8.I1
-rw-r--r--tests/tr/8.X1
-rw-r--r--tests/tr/9.I1
-rw-r--r--tests/tr/9.X1
-rw-r--r--tests/tr/Makefile.am82
-rw-r--r--tests/tr/Makefile.in792
-rw-r--r--tests/tr/TODO1
-rwxr-xr-xtests/tr/Test.pm152
-rw-r--r--tests/tr/a.I1
-rw-r--r--tests/tr/a.X1
-rw-r--r--tests/tr/b.I1
-rw-r--r--tests/tr/b.X1
-rw-r--r--tests/tr/bs-055.I1
-rw-r--r--tests/tr/bs-055.X1
-rw-r--r--tests/tr/bs-at-end.I1
-rw-r--r--tests/tr/bs-at-end.X1
-rw-r--r--tests/tr/c.I1
-rw-r--r--tests/tr/c.X1
-rw-r--r--tests/tr/d.I1
-rw-r--r--tests/tr/d.X1
-rw-r--r--tests/tr/dncase.I1
-rw-r--r--tests/tr/dncase.X1
-rw-r--r--tests/tr/e.Ibin0 -> 21 bytes
-rw-r--r--tests/tr/e.Xbin0 -> 11 bytes
-rw-r--r--tests/tr/empty-cc.I0
-rw-r--r--tests/tr/empty-cc.X0
-rw-r--r--tests/tr/empty-eq.I0
-rw-r--r--tests/tr/empty-eq.X0
-rw-r--r--tests/tr/esc.I1
-rw-r--r--tests/tr/esc.X1
-rw-r--r--tests/tr/f.I1
-rw-r--r--tests/tr/f.X1
-rw-r--r--tests/tr/fowler-1.I1
-rw-r--r--tests/tr/fowler-1.X1
-rw-r--r--tests/tr/g.I1
-rw-r--r--tests/tr/g.X1
-rw-r--r--tests/tr/h.I1
-rw-r--r--tests/tr/h.X0
-rw-r--r--tests/tr/i.I1
-rw-r--r--tests/tr/i.X1
-rw-r--r--tests/tr/j.I1
-rw-r--r--tests/tr/j.X0
-rw-r--r--tests/tr/k.I1
-rw-r--r--tests/tr/k.X1
-rw-r--r--tests/tr/l.I1
-rw-r--r--tests/tr/l.X0
-rw-r--r--tests/tr/m.I1
-rw-r--r--tests/tr/m.X0
-rw-r--r--tests/tr/n.I1
-rw-r--r--tests/tr/n.X0
-rw-r--r--tests/tr/null.I0
-rw-r--r--tests/tr/null.X0
-rw-r--r--tests/tr/o-rep-1.I0
-rw-r--r--tests/tr/o-rep-1.X0
-rw-r--r--tests/tr/o-rep-2.I1
-rw-r--r--tests/tr/o-rep-2.X1
-rw-r--r--tests/tr/o.I1
-rw-r--r--tests/tr/o.X0
-rw-r--r--tests/tr/p.I1
-rw-r--r--tests/tr/p.X0
-rw-r--r--tests/tr/q.I1
-rw-r--r--tests/tr/q.X1
-rw-r--r--tests/tr/r.I1
-rw-r--r--tests/tr/r.X1
-rw-r--r--tests/tr/range-a-a.I1
-rw-r--r--tests/tr/range-a-a.X1
-rw-r--r--tests/tr/rep-1.I1
-rw-r--r--tests/tr/rep-1.X1
-rw-r--r--tests/tr/rep-2.I1
-rw-r--r--tests/tr/rep-2.X1
-rw-r--r--tests/tr/rep-3.I1
-rw-r--r--tests/tr/rep-3.X1
-rw-r--r--tests/tr/rep-cclass.I1
-rw-r--r--tests/tr/rep-cclass.X1
-rw-r--r--tests/tr/repeat-0.I1
-rw-r--r--tests/tr/repeat-0.X1
-rw-r--r--tests/tr/repeat-bs-9.I1
-rw-r--r--tests/tr/repeat-bs-9.X1
-rw-r--r--tests/tr/repeat-compl.I1
-rw-r--r--tests/tr/repeat-compl.X1
-rw-r--r--tests/tr/repeat-xC.I1
-rw-r--r--tests/tr/repeat-xC.X1
-rw-r--r--tests/tr/repeat-zeros.I1
-rw-r--r--tests/tr/repeat-zeros.X1
-rw-r--r--tests/tr/ross-0a.I0
-rw-r--r--tests/tr/ross-0a.X0
-rw-r--r--tests/tr/ross-0b.I0
-rw-r--r--tests/tr/ross-0b.X0
-rw-r--r--tests/tr/ross-1a.I1
-rw-r--r--tests/tr/ross-1a.X1
-rw-r--r--tests/tr/ross-1b.I0
-rw-r--r--tests/tr/ross-1b.X0
-rw-r--r--tests/tr/ross-2.I1
-rw-r--r--tests/tr/ross-2.X1
-rw-r--r--tests/tr/ross-3.I1
-rw-r--r--tests/tr/ross-3.X1
-rw-r--r--tests/tr/ross-4.I0
-rw-r--r--tests/tr/ross-4.X0
-rw-r--r--tests/tr/ross-5.I0
-rw-r--r--tests/tr/ross-5.X0
-rw-r--r--tests/tr/ross-6.I0
-rw-r--r--tests/tr/ross-6.X0
-rw-r--r--tests/tr/s.I1
-rw-r--r--tests/tr/s.X8
-rw-r--r--tests/tr/t.I1
-rw-r--r--tests/tr/t.X8
-rwxr-xr-xtests/tr/tr-tests2367
-rw-r--r--tests/tr/u.I1
-rw-r--r--tests/tr/u.X1
-rw-r--r--tests/tr/upcase.I1
-rw-r--r--tests/tr/upcase.X1
-rw-r--r--tests/tr/v.I1
-rw-r--r--tests/tr/v.X1
-rw-r--r--tests/tr/w.I1
-rw-r--r--tests/tr/w.X1
-rw-r--r--tests/tr/x.I1
-rw-r--r--tests/tr/x.X1
-rw-r--r--tests/tr/y.I1
-rw-r--r--tests/tr/y.X1
-rw-r--r--tests/tr/z.I1
-rw-r--r--tests/tr/z.X1
-rw-r--r--tests/tsort/Makefile.am13
-rw-r--r--tests/tsort/Makefile.in720
-rwxr-xr-xtests/tsort/basic-183
-rw-r--r--tests/umask-check37
-rw-r--r--tests/unexpand/Makefile.am13
-rw-r--r--tests/unexpand/Makefile.in720
-rwxr-xr-xtests/unexpand/basic-1102
-rw-r--r--tests/uniq/1.I0
-rw-r--r--tests/uniq/1.X0
-rw-r--r--tests/uniq/10.I2
-rw-r--r--tests/uniq/10.X2
-rw-r--r--tests/uniq/101.I2
-rw-r--r--tests/uniq/101.X2
-rw-r--r--tests/uniq/102.I2
-rw-r--r--tests/uniq/102.X1
-rw-r--r--tests/uniq/11.I3
-rw-r--r--tests/uniq/11.X3
-rw-r--r--tests/uniq/110.I2
-rw-r--r--tests/uniq/110.X2
-rw-r--r--tests/uniq/111.I2
-rw-r--r--tests/uniq/111.X2
-rw-r--r--tests/uniq/112.I2
-rw-r--r--tests/uniq/112.X0
-rw-r--r--tests/uniq/113.I2
-rw-r--r--tests/uniq/113.X2
-rw-r--r--tests/uniq/114.I5
-rw-r--r--tests/uniq/114.X5
-rw-r--r--tests/uniq/115.I5
-rw-r--r--tests/uniq/115.X5
-rw-r--r--tests/uniq/116.I2
-rw-r--r--tests/uniq/116.X3
-rw-r--r--tests/uniq/117.I5
-rw-r--r--tests/uniq/117.X6
-rw-r--r--tests/uniq/118.I2
-rw-r--r--tests/uniq/118.X0
-rw-r--r--tests/uniq/119.I1
-rw-r--r--tests/uniq/119.X0
-rw-r--r--tests/uniq/12.I2
-rw-r--r--tests/uniq/12.X0
-rw-r--r--tests/uniq/120.I3
-rw-r--r--tests/uniq/120.X0
-rw-r--r--tests/uniq/121.I3
-rw-r--r--tests/uniq/121.X0
-rw-r--r--tests/uniq/13.I2
-rw-r--r--tests/uniq/13.X0
-rw-r--r--tests/uniq/2.I2
-rw-r--r--tests/uniq/2.X1
-rw-r--r--tests/uniq/20.I2
-rw-r--r--tests/uniq/20.X1
-rw-r--r--tests/uniq/21.I2
-rw-r--r--tests/uniq/21.X0
-rw-r--r--tests/uniq/22.I3
-rw-r--r--tests/uniq/22.X0
-rw-r--r--tests/uniq/23.I3
-rw-r--r--tests/uniq/23.X1
-rw-r--r--tests/uniq/3.I2
-rw-r--r--tests/uniq/3.X1
-rw-r--r--tests/uniq/31.I2
-rw-r--r--tests/uniq/31.X1
-rw-r--r--tests/uniq/32.I2
-rw-r--r--tests/uniq/32.X2
-rw-r--r--tests/uniq/33.I2
-rw-r--r--tests/uniq/33.X2
-rw-r--r--tests/uniq/34.I2
-rw-r--r--tests/uniq/34.X1
-rw-r--r--tests/uniq/35.I2
-rw-r--r--tests/uniq/35.X1
-rw-r--r--tests/uniq/4.I2
-rw-r--r--tests/uniq/4.X2
-rw-r--r--tests/uniq/42.I2
-rw-r--r--tests/uniq/42.X1
-rw-r--r--tests/uniq/43.I2
-rw-r--r--tests/uniq/43.X1
-rw-r--r--tests/uniq/5.I3
-rw-r--r--tests/uniq/5.X2
-rw-r--r--tests/uniq/50.I2
-rw-r--r--tests/uniq/50.X2
-rw-r--r--tests/uniq/51.I2
-rw-r--r--tests/uniq/51.X1
-rw-r--r--tests/uniq/52.I2
-rw-r--r--tests/uniq/52.X2
-rw-r--r--tests/uniq/53.I2
-rw-r--r--tests/uniq/53.X1
-rw-r--r--tests/uniq/54.I2
-rw-r--r--tests/uniq/54.X1
-rw-r--r--tests/uniq/55.I2
-rw-r--r--tests/uniq/55.X2
-rw-r--r--tests/uniq/56.I1
-rw-r--r--tests/uniq/56.X1
-rw-r--r--tests/uniq/57.I2
-rw-r--r--tests/uniq/57.X1
-rw-r--r--tests/uniq/6.I3
-rw-r--r--tests/uniq/6.X2
-rw-r--r--tests/uniq/60.I2
-rw-r--r--tests/uniq/60.X2
-rw-r--r--tests/uniq/61.I2
-rw-r--r--tests/uniq/61.X2
-rw-r--r--tests/uniq/62.I2
-rw-r--r--tests/uniq/62.X1
-rw-r--r--tests/uniq/63.I2
-rw-r--r--tests/uniq/63.X1
-rw-r--r--tests/uniq/64.I2
-rw-r--r--tests/uniq/64.X2
-rw-r--r--tests/uniq/65.I2
-rw-r--r--tests/uniq/65.X1
-rw-r--r--tests/uniq/7.I3
-rw-r--r--tests/uniq/7.X3
-rw-r--r--tests/uniq/8.I2
-rw-r--r--tests/uniq/8.X2
-rw-r--r--tests/uniq/9.I2
-rw-r--r--tests/uniq/9.X0
-rw-r--r--tests/uniq/90.Ibin0 -> 6 bytes
-rw-r--r--tests/uniq/90.Xbin0 -> 6 bytes
-rw-r--r--tests/uniq/91.I2
-rw-r--r--tests/uniq/91.X2
-rw-r--r--tests/uniq/92.I2
-rw-r--r--tests/uniq/92.X2
-rw-r--r--tests/uniq/93.I2
-rw-r--r--tests/uniq/93.X1
-rw-r--r--tests/uniq/94.I2
-rw-r--r--tests/uniq/94.X1
-rw-r--r--tests/uniq/Makefile.am76
-rw-r--r--tests/uniq/Makefile.in786
-rw-r--r--tests/uniq/Test.pm130
-rw-r--r--tests/uniq/obs-plus40.I2
-rw-r--r--tests/uniq/obs-plus40.X1
-rw-r--r--tests/uniq/obs-plus41.I2
-rw-r--r--tests/uniq/obs-plus41.X1
-rw-r--r--tests/uniq/obs-plus44.I2
-rw-r--r--tests/uniq/obs-plus44.X1
-rw-r--r--tests/uniq/obs-plus45.I2
-rw-r--r--tests/uniq/obs-plus45.X1
-rw-r--r--tests/uniq/obs30.I2
-rw-r--r--tests/uniq/obs30.X1
-rwxr-xr-xtests/uniq/uniq-tests2223
-rw-r--r--tests/very-expensive11
-rw-r--r--tests/wc/Makefile.am62
-rw-r--r--tests/wc/Makefile.in772
-rwxr-xr-xtests/wc/Test.pm70
-rw-r--r--tests/wc/a0.I0
-rw-r--r--tests/wc/a0.X1
-rw-r--r--tests/wc/a1.I0
-rw-r--r--tests/wc/a1.X1
-rw-r--r--tests/wc/a2.I0
-rw-r--r--tests/wc/a2.X1
-rw-r--r--tests/wc/a3.I1
-rw-r--r--tests/wc/a3.X1
-rw-r--r--tests/wc/a4.I1
-rw-r--r--tests/wc/a4.X1
-rw-r--r--tests/wc/a5.I1
-rw-r--r--tests/wc/a5.X1
-rw-r--r--tests/wc/a6.I2
-rw-r--r--tests/wc/a6.X1
-rw-r--r--tests/wc/a7.I1
-rw-r--r--tests/wc/a7.X1
-rw-r--r--tests/wc/a8.I1
-rw-r--r--tests/wc/a8.X1
-rw-r--r--tests/wc/a9.I2
-rw-r--r--tests/wc/a9.X1
-rw-r--r--tests/wc/b0.I0
-rw-r--r--tests/wc/b0.X1
-rw-r--r--tests/wc/b1.I2
-rw-r--r--tests/wc/b1.X1
-rw-r--r--tests/wc/c0.I2
-rw-r--r--tests/wc/c0.X1
-rw-r--r--tests/wc/c1.I3
-rw-r--r--tests/wc/c1.X1
-rw-r--r--tests/wc/c2.I2
-rw-r--r--tests/wc/c2.X1
-rwxr-xr-xtests/wc/wc-tests531
2926 files changed, 812896 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4567b1b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,39 @@
+*.1
+*.I[12]
+*.[EIOX]
+*.gmo
+*.o
+*/.deps
+*~
+.kludge-stamp
+ABOUT-NLS
+INSTALL
+Makefile
+Makefile.in
+THANKS-to-translators
+aclocal.m4
+autom4te.cache
+config.cache
+config.h
+config.hin
+config.log
+config.status
+configure
+coreutils-*.tar.bz2
+coreutils-*.tar.bz2.sig
+coreutils-*.tar.gz
+coreutils-*.tar.gz.sig
+coreutils-*.xdelta
+coreutils-*.xdelta.sig
+stamp-h1
+tests/cut/cut-tests
+tests/head/head-tests
+tests/join/join-tests
+tests/pr/pr-tests
+tests/sort/sort-tests
+tests/tac/tac-tests
+tests/tail/tail-tests
+tests/test/test-tests
+tests/tr/tr-tests
+tests/uniq/uniq-tests
+tests/wc/wc-tests
diff --git a/.hgignore b/.hgignore
new file mode 100644
index 0000000..efbf44f
--- /dev/null
+++ b/.hgignore
@@ -0,0 +1,147 @@
+.*/Makefile$
+.*/Makefile\.in$
+.*/\.deps/
+.*\.1$
+.*\.o$
+.*~$
+^Makefile$
+^Makefile\.in$
+^THANKS-to-translators$
+^aclocal\.m4$
+^autom4te\.cache/
+^config\.h$
+^config\.hin$
+^config\.log$
+^config\.status$
+^configure$
+^doc/constants\.texi$
+^doc/coreutils\.info$
+^doc/stamp-vti$
+^doc/version\.texi$
+^lib/alloca\.h$
+^lib/charset\.alias$
+^lib/getdate\.c$
+^lib/libcoreutils\.a$
+^lib/ref-add\.sed$
+^lib/ref-del\.sed$
+^lib/t-fpending$
+^po/.*\.gmo$
+^po/.*\.po$
+^po/POTFILES$
+^po/stamp-po$
+^po/remove-potcdate.sed$
+^src/\[$
+^src/base64$
+^src/basename$
+^src/cat$
+^src/chgrp$
+^src/chmod$
+^src/chown$
+^src/chroot$
+^src/cksum$
+^src/comm$
+^src/cp$
+^src/csplit$
+^src/cut$
+^src/date$
+^src/dd$
+^src/df$
+^src/dir$
+^src/dircolors$
+^src/dircolors\.h$
+^src/dirname$
+^src/du$
+^src/echo$
+^src/env$
+^src/expand$
+^src/expr$
+^src/factor$
+^src/false$
+^src/fmt$
+^src/fold$
+^src/fs\.h$
+^src/ginstall$
+^src/groups$
+^src/head$
+^src/hostid$
+^src/hostname$
+^src/id$
+^src/join$
+^src/kill$
+^src/link$
+^src/ln$
+^src/localedir\.h$
+^src/logname$
+^src/ls$
+^src/md5sum$
+^src/mkdir$
+^src/mkfifo$
+^src/mknod$
+^src/mv$
+^src/nice$
+^src/nl$
+^src/nohup$
+^src/od$
+^src/paste$
+^src/pathchk$
+^src/pinky$
+^src/pr$
+^src/printenv$
+^src/printf$
+^src/ptx$
+^src/pwd$
+^src/readlink$
+^src/rm$
+^src/rmdir$
+^src/seq$
+^src/setuidgid$
+^src/sha1sum$
+^src/sha224sum$
+^src/sha256sum$
+^src/sha384sum$
+^src/sha512sum$
+^src/shred$
+^src/sleep$
+^src/sort$
+^src/split$
+^src/stat$
+^src/stty$
+^src/su$
+^src/sum$
+^src/sync$
+^src/tac$
+^src/tail$
+^src/tee$
+^src/test$
+^src/touch$
+^src/tr$
+^src/true$
+^src/tsort$
+^src/tty$
+^src/uname$
+^src/unexpand$
+^src/uniq$
+^src/unlink$
+^src/uptime$
+^src/users$
+^src/vdir$
+^src/wc$
+^src/wheel-size\.h$
+^src/wheel\.h$
+^src/who$
+^src/whoami$
+^src/yes$
+^stamp-h1$
+^tests/.*\.I[12]$
+^tests/.*\.[EIOX]$
+^tests/cut/cut-tests$
+^tests/head/head-tests$
+^tests/join/join-tests$
+^tests/pr/pr-tests$
+^tests/sort/sort-tests$
+^tests/tac/tac-tests$
+^tests/tail/tail-tests$
+^tests/test/test-tests$
+^tests/tr/tr-tests$
+^tests/uniq/uniq-tests$
+^tests/wc/wc-tests$
diff --git a/.kludge-stamp b/.kludge-stamp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.kludge-stamp
diff --git a/.prev-version b/.prev-version
new file mode 100644
index 0000000..341291e
--- /dev/null
+++ b/.prev-version
@@ -0,0 +1 @@
+6.7
diff --git a/.vg-suppressions b/.vg-suppressions
new file mode 100644
index 0000000..a6cb2fe
--- /dev/null
+++ b/.vg-suppressions
@@ -0,0 +1,79 @@
+# Suppress valgrind diagnostics we don't care about.
+
+# Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+{
+ libc_dl_open
+ Memcheck:Cond
+ fun:_dl_relocate_object
+ obj:/lib/libc-2.3.2.so
+ fun:_dl_catch_error
+ fun:_dl_open
+}
+
+{
+ libc_dl_catch_error__map_object
+ Memcheck:Addr1
+ obj:/lib/ld-2.3.2.so
+ fun:_dl_map_object
+ obj:/lib/libc-2.3.2.so
+ fun:_dl_catch_error
+}
+{
+ libc_dl_catch_error__map_versions
+ Memcheck:Addr1
+ obj:/lib/ld-2.3.2.so
+ fun:_dl_check_map_versions
+ obj:/lib/libc-2.3.2.so
+ fun:_dl_catch_error
+}
+
+{
+ jm_libc_sigaction
+ Memcheck:Param
+ sigaction(act)
+ fun:__libc_sigaction
+}
+
+{
+ libc_expand_dynamic_string_token
+ Memcheck:Cond
+ fun:strlen
+ fun:expand_dynamic_string_token
+ obj:*
+ obj:*
+ obj:*
+ obj:*
+ obj:*
+}
+{
+ libc__dl_new_object
+ Memcheck:Cond
+ fun:strlen
+ fun:_dl_new_object
+ obj:*
+ obj:*
+ obj:*
+ obj:*
+}
+{
+ libc_fillin_rpath
+ Memcheck:Cond
+ fun:strlen
+ fun:fillin_rpath
+}
diff --git a/.x-po-check b/.x-po-check
new file mode 100644
index 0000000..202ec8e
--- /dev/null
+++ b/.x-po-check
@@ -0,0 +1,4 @@
+ChangeLog(-[0-9]+)?$
+^old/
+^src/c99-to-c98\.diff$
+^gl/.*
diff --git a/.x-sc_file_system b/.x-sc_file_system
new file mode 100644
index 0000000..a2e3887
--- /dev/null
+++ b/.x-sc_file_system
@@ -0,0 +1,8 @@
+ChangeLog
+Makefile.maint
+NEWS
+config-log
+po/
+src/df.c
+src/stat.c
+tests/misc/df-P
diff --git a/.x-sc_obsolete_symbols b/.x-sc_obsolete_symbols
new file mode 100644
index 0000000..a2fe831
--- /dev/null
+++ b/.x-sc_obsolete_symbols
@@ -0,0 +1,6 @@
+ChangeLog*
+Makefile.maint
+config.hin
+configure
+m4/jm-macros.m4
+src/system.h
diff --git a/.x-sc_prohibit_atoi_atof b/.x-sc_prohibit_atoi_atof
new file mode 100644
index 0000000..d995223
--- /dev/null
+++ b/.x-sc_prohibit_atoi_atof
@@ -0,0 +1,11 @@
+^configure$
+ChangeLog
+^TODO$
+^lib/mktime\.c$
+^lib/getloadavg\.c$
+^lib/euidaccess\.c$
+^lib/euidaccess-stat\.c$
+^lib/group-member\.c$
+^Makefile\.maint$
+^doc/coreutils.texi$
+^src/stty.c$
diff --git a/.x-sc_require_config_h b/.x-sc_require_config_h
new file mode 100644
index 0000000..415a113
--- /dev/null
+++ b/.x-sc_require_config_h
@@ -0,0 +1,28 @@
+^lib/at-func\.c$
+^lib/bcopy\.c$
+^lib/buffer-lcm\.c$
+^lib/c-strtold\.c$
+^lib/fnmatch_loop\.c$
+^lib/full-read\.c$
+^lib/imaxtostr\.c$
+^lib/mempcpy\.c$
+^lib/memset\.c$
+^lib/offtostr\.c$
+^lib/regcomp\.c$
+^lib/regex_internal\.c$
+^lib/regexec\.c$
+^lib/safe-write\.c$
+^lib/strtoll\.c$
+^lib/strtoul\.c$
+^lib/strtoull\.c$
+^lib/strtoumax\.c$
+^lib/umaxtostr\.c$
+^lib/xstrtold\.c$
+^lib/xstrtoul\.c$
+^src/false\.c$
+^src/lbracket\.c$
+^src/ls-dir\.c$
+^src/ls-ls\.c$
+^src/ls-vdir\.c$
+^src/rand-isaac\.c$
+^src/tac-pipe\.c$
diff --git a/.x-sc_space_tab b/.x-sc_space_tab
new file mode 100644
index 0000000..f52ebd0
--- /dev/null
+++ b/.x-sc_space_tab
@@ -0,0 +1,11 @@
+config(ure|\.(guess|sub))
+tests/pr
+lib/regex.c
+config-log
+tests/misc/nl
+po/de.po
+m4/lib-ld.m4
+m4/lib-prefix.m4
+m4/po.m4
+aclocal.m4
+src/c99-to-c89.diff
diff --git a/.x-sc_sun_os_names b/.x-sc_sun_os_names
new file mode 100644
index 0000000..3ffc52c
--- /dev/null
+++ b/.x-sc_sun_os_names
@@ -0,0 +1,2 @@
+config-log
+build-aux/config.guess
diff --git a/.x-sc_trailing_blank b/.x-sc_trailing_blank
new file mode 100644
index 0000000..92571d6
--- /dev/null
+++ b/.x-sc_trailing_blank
@@ -0,0 +1 @@
+^tests/pr/
diff --git a/.x-sc_unmarked_diagnostics b/.x-sc_unmarked_diagnostics
new file mode 100644
index 0000000..aac8984
--- /dev/null
+++ b/.x-sc_unmarked_diagnostics
@@ -0,0 +1,2 @@
+^lib/xstrtol\.h$
+^build-aux/cvsu$
diff --git a/.x-sc_useless_cpp_parens b/.x-sc_useless_cpp_parens
new file mode 100644
index 0000000..01eb4b4
--- /dev/null
+++ b/.x-sc_useless_cpp_parens
@@ -0,0 +1,13 @@
+^build-aux/config.guess
+^configure
+^lib/alloca.c
+^lib/fts.c
+^lib/getdate.c
+^lib/getloadavg.c
+^lib/gettext.h
+^lib/getusershell.c
+^lib/mbswidth.c
+^lib/strtod.c
+^lib/xstrtol.c
+^m4/
+^tests/misc/pwd-unreadable-parent
diff --git a/ABOUT-NLS b/ABOUT-NLS
new file mode 100644
index 0000000..3575535
--- /dev/null
+++ b/ABOUT-NLS
@@ -0,0 +1,1111 @@
+1 Notes on the Free Translation Project
+***************************************
+
+Free software is going international! The Free Translation Project is
+a way to get maintainers of free software, translators, and users all
+together, so that free software will gradually become able to speak many
+languages. A few packages already provide translations for their
+messages.
+
+ If you found this `ABOUT-NLS' file inside a distribution, you may
+assume that the distributed package does use GNU `gettext' internally,
+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 on translations can contact the appropriate team.
+
+ When reporting bugs in the `intl/' directory or bugs which may be
+related to internationalization, you should tell about the version of
+`gettext' which is used. The information can be found in the
+`intl/VERSION' file, in internationalized packages.
+
+1.1 Quick configuration advice
+==============================
+
+If you want to exploit the full power of internationalization, you
+should configure it using
+
+ ./configure --with-included-gettext
+
+to force usage of internationalizing routines provided within this
+package, despite the existence of internationalizing capabilities in the
+operating system where this package is being installed. So far, only
+the `gettext' implementation in the GNU C library version 2 provides as
+many features (such as locale alias, message inheritance, automatic
+charset conversion or plural form handling) as the implementation here.
+It is also not possible to offer this additional functionality on top
+of a `catgets' implementation. Future versions of GNU `gettext' will
+very likely convey even more functionality. So it might be a good idea
+to change to GNU `gettext' as soon as possible.
+
+ So you need _not_ provide this option if you are using GNU libc 2 or
+you have installed a recent copy of the GNU gettext package with the
+included `libintl'.
+
+1.2 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 already
+provides the GNU `gettext' functions. If not, the included GNU
+`gettext' library will be used. This library is wholly contained
+within this package, usually in the `intl/' subdirectory, so prior
+installation of the GNU `gettext' package is _not_ required.
+Installers may use special options at configuration time for changing
+the default behaviour. The commands:
+
+ ./configure --with-included-gettext
+ ./configure --disable-nls
+
+will, respectively, bypass any pre-existing `gettext' to use the
+internationalizing routines provided within this package, or else,
+_totally_ disable translation of messages.
+
+ When you already have GNU `gettext' installed on your system and run
+configure without an option for your new package, `configure' will
+probably detect the previously built and installed `libintl.a' file and
+will decide to use this. This might not be 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.
+
+ The configuration process will not test for the `catgets' function
+and therefore it will not be used. The reason is that even an
+emulation of `gettext' on top of `catgets' could not provide all the
+extensions of the GNU `gettext' library.
+
+ Internationalized packages usually have many `po/LL.po' files, where
+LL gives an ISO 639 two-letter code identifying the language. Unless
+translations have been forbidden at `configure' time by using the
+`--disable-nls' switch, all available translations are installed
+together with the package. However, the environment variable `LINGUAS'
+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.
+
+1.3 Using This Package
+======================
+
+As a user, if your language has been installed for this package, you
+only have to set the `LANG' environment variable to the appropriate
+`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code,
+and `CC' is an ISO 3166 two-letter country code. For example, let's
+suppose that you speak German and live in Germany. At the shell
+prompt, merely execute `setenv LANG de_DE' (in `csh'),
+`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
+This can be done from your `.login' or `.profile' file, once and for
+all.
+
+ You might think that the country code specification is redundant.
+But in fact, some languages have dialects in different countries. For
+example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
+country code serves to distinguish the dialects.
+
+ The locale naming convention of `LL_CC', with `LL' denoting the
+language and `CC' denoting the country, is the one use on systems based
+on GNU libc. On other systems, some variations of this scheme are
+used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
+locales supported by your system for your language by running the
+command `locale -a | grep '^LL''.
+
+ Not all programs have translations for all languages. By default, an
+English message is shown in place of a nonexistent translation. If you
+understand other languages, you can set up a priority list of languages.
+This is done through a different environment variable, called
+`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
+for the purpose of message handling, but you still need to have `LANG'
+set to the primary language; this is required by other parts of the
+system libraries. For example, some Swedish users who would rather
+read translations in German than English for when Swedish is not
+available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
+
+ Special advice for Norwegian users: The language code for Norwegian
+bokma*l changed from `no' to `nb' recently (in 2003). During the
+transition period, while some message catalogs for this language are
+installed under `nb' and some older ones under `no', it's recommended
+for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
+older translations are used.
+
+ In the `LANGUAGE' environment variable, but not in the `LANG'
+environment variable, `LL_CC' combinations can be abbreviated as `LL'
+to denote the language's main dialect. For example, `de' is equivalent
+to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
+(Portuguese as spoken in Portugal) in this context.
+
+1.4 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. The up-to-date list of
+teams can be found at the Free Translation Project's homepage,
+`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
+area.
+
+ 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.
+
+1.5 Available Packages
+======================
+
+Languages are not equally supported in all packages. The following
+matrix shows the current state of internationalization, as of July
+2006. The matrix shows, in regard of each package, for which languages
+PO files have been submitted to translation coordination, with a
+translation percentage of at least 50%.
+
+ Ready PO files af am ar az be bg bs ca cs cy da de el en en_GB eo
+ +----------------------------------------------------+
+ GNUnet | [] |
+ a2ps | [] [] [] [] [] |
+ aegis | () |
+ ant-phone | () |
+ anubis | [] |
+ ap-utils | |
+ aspell | [] [] [] [] |
+ bash | [] [] [] |
+ batchelor | [] |
+ bfd | |
+ bibshelf | [] |
+ binutils | [] |
+ bison | [] [] |
+ bison-runtime | [] |
+ bluez-pin | [] [] [] [] [] |
+ cflow | [] |
+ clisp | [] [] |
+ console-tools | [] [] |
+ coreutils | [] [] [] [] |
+ cpio | |
+ cpplib | [] [] [] |
+ cryptonit | [] |
+ darkstat | [] () [] |
+ dialog | [] [] [] [] [] [] |
+ diffutils | [] [] [] [] [] [] |
+ doodle | [] |
+ e2fsprogs | [] [] |
+ enscript | [] [] [] [] |
+ error | [] [] [] [] |
+ fetchmail | [] [] () [] |
+ fileutils | [] [] |
+ findutils | [] [] [] |
+ flex | [] [] [] |
+ fslint | [] |
+ gas | |
+ gawk | [] [] [] |
+ gbiff | [] |
+ gcal | [] |
+ gcc | [] |
+ gettext-examples | [] [] [] [] [] |
+ gettext-runtime | [] [] [] [] [] |
+ gettext-tools | [] [] |
+ gimp-print | [] [] [] [] |
+ gip | [] |
+ gliv | [] |
+ glunarclock | [] |
+ gmult | [] [] |
+ gnubiff | () |
+ gnucash | () () [] |
+ gnucash-glossary | [] () |
+ gnuedu | |
+ gnulib | [] [] [] [] [] [] |
+ gnunet-gtk | |
+ gnutls | |
+ gpe-aerial | [] [] |
+ gpe-beam | [] [] |
+ gpe-calendar | [] [] |
+ gpe-clock | [] [] |
+ gpe-conf | [] [] |
+ gpe-contacts | |
+ gpe-edit | [] |
+ gpe-filemanager | |
+ gpe-go | [] |
+ gpe-login | [] [] |
+ gpe-ownerinfo | [] [] |
+ gpe-package | |
+ gpe-sketchbook | [] [] |
+ gpe-su | [] [] |
+ gpe-taskmanager | [] [] |
+ gpe-timesheet | [] |
+ gpe-today | [] [] |
+ gpe-todo | |
+ gphoto2 | [] [] [] [] |
+ gprof | [] [] |
+ gpsdrive | () () |
+ gramadoir | [] [] |
+ grep | [] [] [] [] [] [] |
+ gretl | |
+ gsasl | |
+ gss | |
+ gst-plugins | [] [] [] [] |
+ gst-plugins-base | [] [] [] |
+ gst-plugins-good | [] [] [] [] [] [] [] |
+ gstreamer | [] [] [] [] [] [] [] |
+ gtick | [] () |
+ gtkam | [] [] [] |
+ gtkorphan | [] [] |
+ gtkspell | [] [] [] [] |
+ gutenprint | [] |
+ hello | [] [] [] [] [] |
+ id-utils | [] [] |
+ impost | |
+ indent | [] [] [] |
+ iso_3166 | [] [] |
+ iso_3166_1 | [] [] [] [] [] |
+ iso_3166_2 | |
+ iso_3166_3 | [] |
+ iso_4217 | [] |
+ iso_639 | [] [] |
+ jpilot | [] |
+ jtag | |
+ jwhois | |
+ kbd | [] [] [] [] |
+ keytouch | |
+ keytouch-editor | |
+ keytouch-keyboa... | |
+ latrine | () |
+ ld | [] |
+ leafpad | [] [] [] [] [] |
+ libc | [] [] [] [] [] |
+ libexif | [] |
+ libextractor | [] |
+ libgpewidget | [] [] [] |
+ libgpg-error | [] |
+ libgphoto2 | [] [] |
+ libgphoto2_port | [] [] |
+ libgsasl | |
+ libiconv | [] [] |
+ libidn | [] [] |
+ lifelines | [] () |
+ lilypond | [] |
+ lingoteach | |
+ lynx | [] [] [] [] |
+ m4 | [] [] [] [] |
+ mailutils | [] |
+ make | [] [] |
+ man-db | [] () [] [] |
+ minicom | [] [] [] |
+ mysecretdiary | [] [] |
+ nano | [] [] () [] |
+ nano_1_0 | [] () [] [] |
+ opcodes | [] |
+ parted | |
+ pilot-qof | [] |
+ psmisc | [] |
+ pwdutils | |
+ python | |
+ qof | |
+ radius | [] |
+ recode | [] [] [] [] [] [] |
+ rpm | [] [] |
+ screem | |
+ scrollkeeper | [] [] [] [] [] [] [] [] |
+ sed | [] [] [] |
+ sh-utils | [] [] |
+ shared-mime-info | [] [] [] |
+ sharutils | [] [] [] [] [] [] |
+ shishi | |
+ silky | |
+ skencil | [] () |
+ sketch | [] () |
+ solfege | |
+ soundtracker | [] [] |
+ sp | [] |
+ stardict | [] |
+ system-tools-ba... | [] [] [] [] [] [] [] [] [] |
+ tar | [] |
+ texinfo | [] [] [] |
+ textutils | [] [] [] |
+ tin | () () |
+ tp-robot | [] |
+ tuxpaint | [] [] [] [] [] |
+ unicode-han-tra... | |
+ unicode-transla... | |
+ util-linux | [] [] [] [] |
+ vorbis-tools | [] [] [] [] |
+ wastesedge | () |
+ wdiff | [] [] [] [] |
+ wget | [] [] |
+ xchat | [] [] [] [] [] |
+ xkeyboard-config | |
+ xpad | [] [] |
+ +----------------------------------------------------+
+ af am ar az be bg bs ca cs cy da de el en en_GB eo
+ 11 0 1 2 8 21 1 42 43 2 62 99 18 1 16 16
+
+ es et eu fa fi fr ga gl gu he hi hr hu id is it
+ +--------------------------------------------------+
+ GNUnet | |
+ a2ps | [] [] [] () |
+ aegis | |
+ ant-phone | [] |
+ anubis | [] |
+ ap-utils | [] [] |
+ aspell | [] [] [] |
+ bash | [] [] [] |
+ batchelor | [] [] |
+ bfd | [] |
+ bibshelf | [] [] [] |
+ binutils | [] [] [] |
+ bison | [] [] [] [] [] [] |
+ bison-runtime | [] [] [] [] [] |
+ bluez-pin | [] [] [] [] [] |
+ cflow | |
+ clisp | [] [] |
+ console-tools | |
+ coreutils | [] [] [] [] [] [] |
+ cpio | [] [] [] |
+ cpplib | [] [] |
+ cryptonit | [] |
+ darkstat | [] () [] [] [] |
+ dialog | [] [] [] [] [] [] [] [] |
+ diffutils | [] [] [] [] [] [] [] [] [] |
+ doodle | [] [] |
+ e2fsprogs | [] [] [] |
+ enscript | [] [] [] |
+ error | [] [] [] [] [] |
+ fetchmail | [] |
+ fileutils | [] [] [] [] [] [] |
+ findutils | [] [] [] [] |
+ flex | [] [] [] |
+ fslint | [] |
+ gas | [] [] |
+ gawk | [] [] [] [] |
+ gbiff | [] |
+ gcal | [] [] |
+ gcc | [] |
+ gettext-examples | [] [] [] [] [] |
+ gettext-runtime | [] [] [] [] [] [] |
+ gettext-tools | [] [] [] |
+ gimp-print | [] [] |
+ gip | [] [] [] |
+ gliv | () |
+ glunarclock | [] [] [] |
+ gmult | [] [] [] |
+ gnubiff | () () |
+ gnucash | () () () |
+ gnucash-glossary | [] [] |
+ gnuedu | [] |
+ gnulib | [] [] [] [] [] [] [] [] |
+ gnunet-gtk | |
+ gnutls | |
+ gpe-aerial | [] [] |
+ gpe-beam | [] [] |
+ gpe-calendar | [] [] [] [] |
+ gpe-clock | [] [] [] [] |
+ gpe-conf | [] |
+ gpe-contacts | [] [] |
+ gpe-edit | [] [] [] [] |
+ gpe-filemanager | [] |
+ gpe-go | [] [] [] |
+ gpe-login | [] [] [] |
+ gpe-ownerinfo | [] [] [] [] [] |
+ gpe-package | [] |
+ gpe-sketchbook | [] [] |
+ gpe-su | [] [] [] [] |
+ gpe-taskmanager | [] [] [] |
+ gpe-timesheet | [] [] [] [] |
+ gpe-today | [] [] [] [] |
+ gpe-todo | [] |
+ gphoto2 | [] [] [] [] [] |
+ gprof | [] [] [] [] |
+ gpsdrive | () () [] () |
+ gramadoir | [] [] |
+ grep | [] [] [] [] [] [] [] [] [] [] [] [] |
+ gretl | [] [] [] |
+ gsasl | [] |
+ gss | [] |
+ gst-plugins | [] [] [] |
+ gst-plugins-base | [] [] |
+ gst-plugins-good | [] [] [] |
+ gstreamer | [] [] [] |
+ gtick | [] [] [] [] [] |
+ gtkam | [] [] [] [] |
+ gtkorphan | [] [] |
+ gtkspell | [] [] [] [] [] [] |
+ gutenprint | [] |
+ hello | [] [] [] [] [] [] [] [] [] [] [] [] [] |
+ id-utils | [] [] [] [] [] |
+ impost | [] [] |
+ indent | [] [] [] [] [] [] [] [] [] [] |
+ iso_3166 | [] [] [] |
+ iso_3166_1 | [] [] [] [] [] [] [] |
+ iso_3166_2 | [] |
+ iso_3166_3 | [] |
+ iso_4217 | [] [] [] [] |
+ iso_639 | [] [] [] [] [] |
+ jpilot | [] [] |
+ jtag | [] |
+ jwhois | [] [] [] [] [] |
+ kbd | [] [] |
+ keytouch | [] |
+ keytouch-editor | [] |
+ keytouch-keyboa... | [] |
+ latrine | [] [] [] |
+ ld | [] [] |
+ leafpad | [] [] [] [] [] [] |
+ libc | [] [] [] [] [] |
+ libexif | [] |
+ libextractor | [] |
+ libgpewidget | [] [] [] [] [] |
+ libgpg-error | |
+ libgphoto2 | [] [] [] |
+ libgphoto2_port | [] [] |
+ libgsasl | [] [] |
+ libiconv | [] |
+ libidn | [] [] |
+ lifelines | () |
+ lilypond | [] |
+ lingoteach | [] [] [] |
+ lynx | [] [] [] |
+ m4 | [] [] [] [] |
+ mailutils | [] [] |
+ make | [] [] [] [] [] [] [] [] |
+ man-db | () |
+ minicom | [] [] [] [] |
+ mysecretdiary | [] [] [] |
+ nano | [] () [] [] [] [] |
+ nano_1_0 | [] [] [] [] [] |
+ opcodes | [] [] [] [] |
+ parted | [] [] [] [] |
+ pilot-qof | |
+ psmisc | [] [] [] |
+ pwdutils | |
+ python | |
+ qof | |
+ radius | [] [] |
+ recode | [] [] [] [] [] [] [] [] |
+ rpm | [] [] |
+ screem | |
+ scrollkeeper | [] [] [] |
+ sed | [] [] [] [] [] |
+ sh-utils | [] [] [] [] [] [] [] |
+ shared-mime-info | [] [] [] [] [] [] |
+ sharutils | [] [] [] [] [] [] [] [] |
+ shishi | |
+ silky | [] |
+ skencil | [] [] |
+ sketch | [] [] |
+ solfege | [] |
+ soundtracker | [] [] [] |
+ sp | [] |
+ stardict | [] |
+ system-tools-ba... | [] [] [] [] [] [] [] [] |
+ tar | [] [] [] [] [] [] |
+ texinfo | [] [] |
+ textutils | [] [] [] [] [] |
+ tin | [] () |
+ tp-robot | [] [] [] [] |
+ tuxpaint | [] [] |
+ unicode-han-tra... | |
+ unicode-transla... | [] [] |
+ util-linux | [] [] [] [] [] [] [] |
+ vorbis-tools | [] [] |
+ wastesedge | () |
+ wdiff | [] [] [] [] [] [] [] [] |
+ wget | [] [] [] [] [] [] [] [] |
+ xchat | [] [] [] [] [] [] [] [] |
+ xkeyboard-config | [] [] [] [] |
+ xpad | [] [] [] |
+ +--------------------------------------------------+
+ es et eu fa fi fr ga gl gu he hi hr hu id is it
+ 89 21 16 2 41 119 61 14 1 8 1 6 61 30 0 53
+
+ ja ko ku ky lg lt lv mk mn ms mt nb ne nl nn no
+ +--------------------------------------------------+
+ GNUnet | |
+ a2ps | () [] [] () |
+ aegis | () |
+ ant-phone | [] |
+ anubis | [] [] [] |
+ ap-utils | [] |
+ aspell | [] [] |
+ bash | [] |
+ batchelor | [] [] |
+ bfd | |
+ bibshelf | [] |
+ binutils | |
+ bison | [] [] [] |
+ bison-runtime | [] [] [] |
+ bluez-pin | [] [] [] |
+ cflow | |
+ clisp | [] |
+ console-tools | |
+ coreutils | [] |
+ cpio | |
+ cpplib | [] |
+ cryptonit | [] |
+ darkstat | [] [] |
+ dialog | [] [] |
+ diffutils | [] [] [] |
+ doodle | |
+ e2fsprogs | [] |
+ enscript | [] |
+ error | [] |
+ fetchmail | [] [] |
+ fileutils | [] [] |
+ findutils | [] |
+ flex | [] [] |
+ fslint | [] [] |
+ gas | |
+ gawk | [] [] |
+ gbiff | [] |
+ gcal | |
+ gcc | |
+ gettext-examples | [] [] |
+ gettext-runtime | [] [] [] |
+ gettext-tools | [] [] |
+ gimp-print | [] [] |
+ gip | [] [] |
+ gliv | [] |
+ glunarclock | [] [] |
+ gmult | [] [] |
+ gnubiff | |
+ gnucash | () () |
+ gnucash-glossary | [] |
+ gnuedu | |
+ gnulib | [] [] [] [] |
+ gnunet-gtk | |
+ gnutls | |
+ gpe-aerial | [] |
+ gpe-beam | [] |
+ gpe-calendar | [] |
+ gpe-clock | [] [] |
+ gpe-conf | [] [] |
+ gpe-contacts | [] |
+ gpe-edit | [] [] |
+ gpe-filemanager | [] |
+ gpe-go | [] [] |
+ gpe-login | [] [] |
+ gpe-ownerinfo | [] |
+ gpe-package | [] |
+ gpe-sketchbook | [] [] |
+ gpe-su | [] [] |
+ gpe-taskmanager | [] [] [] |
+ gpe-timesheet | [] |
+ gpe-today | [] |
+ gpe-todo | |
+ gphoto2 | [] [] |
+ gprof | |
+ gpsdrive | () () () |
+ gramadoir | () |
+ grep | [] [] [] |
+ gretl | |
+ gsasl | [] |
+ gss | |
+ gst-plugins | [] |
+ gst-plugins-base | |
+ gst-plugins-good | [] |
+ gstreamer | [] |
+ gtick | [] |
+ gtkam | [] |
+ gtkorphan | [] |
+ gtkspell | [] [] |
+ gutenprint | |
+ hello | [] [] [] [] [] [] [] [] |
+ id-utils | [] |
+ impost | |
+ indent | [] [] |
+ iso_3166 | [] |
+ iso_3166_1 | [] [] |
+ iso_3166_2 | [] |
+ iso_3166_3 | [] |
+ iso_4217 | [] [] [] |
+ iso_639 | [] [] |
+ jpilot | () () () |
+ jtag | |
+ jwhois | [] |
+ kbd | [] |
+ keytouch | [] |
+ keytouch-editor | |
+ keytouch-keyboa... | |
+ latrine | [] |
+ ld | |
+ leafpad | [] [] |
+ libc | [] [] [] [] [] |
+ libexif | |
+ libextractor | |
+ libgpewidget | [] |
+ libgpg-error | |
+ libgphoto2 | [] |
+ libgphoto2_port | [] |
+ libgsasl | [] |
+ libiconv | |
+ libidn | [] [] |
+ lifelines | [] |
+ lilypond | |
+ lingoteach | [] |
+ lynx | [] [] |
+ m4 | [] [] |
+ mailutils | |
+ make | [] [] [] |
+ man-db | () |
+ minicom | [] |
+ mysecretdiary | [] |
+ nano | [] [] [] |
+ nano_1_0 | [] [] [] |
+ opcodes | [] |
+ parted | [] [] |
+ pilot-qof | |
+ psmisc | [] [] [] |
+ pwdutils | |
+ python | |
+ qof | |
+ radius | |
+ recode | [] |
+ rpm | [] [] |
+ screem | [] |
+ scrollkeeper | [] [] [] [] |
+ sed | [] [] |
+ sh-utils | [] [] |
+ shared-mime-info | [] [] [] [] [] |
+ sharutils | [] [] |
+ shishi | |
+ silky | [] |
+ skencil | |
+ sketch | |
+ solfege | |
+ soundtracker | |
+ sp | () |
+ stardict | [] [] |
+ system-tools-ba... | [] [] [] [] |
+ tar | [] [] [] |
+ texinfo | [] [] [] |
+ textutils | [] [] [] |
+ tin | |
+ tp-robot | [] |
+ tuxpaint | [] |
+ unicode-han-tra... | |
+ unicode-transla... | |
+ util-linux | [] [] |
+ vorbis-tools | [] |
+ wastesedge | [] |
+ wdiff | [] [] |
+ wget | [] [] |
+ xchat | [] [] [] [] |
+ xkeyboard-config | [] |
+ xpad | [] [] [] |
+ +--------------------------------------------------+
+ ja ko ku ky lg lt lv mk mn ms mt nb ne nl nn no
+ 40 24 2 1 1 3 1 2 3 21 0 15 1 101 5 3
+
+ nso or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
+ +------------------------------------------------------+
+ GNUnet | |
+ a2ps | () [] [] [] [] [] [] |
+ aegis | () () |
+ ant-phone | [] [] |
+ anubis | [] [] [] |
+ ap-utils | () |
+ aspell | [] [] |
+ bash | [] [] [] |
+ batchelor | [] [] |
+ bfd | |
+ bibshelf | [] |
+ binutils | [] [] |
+ bison | [] [] [] [] [] |
+ bison-runtime | [] [] [] [] |
+ bluez-pin | [] [] [] [] [] [] [] [] [] |
+ cflow | [] |
+ clisp | [] |
+ console-tools | [] |
+ coreutils | [] [] [] [] |
+ cpio | [] [] [] |
+ cpplib | [] |
+ cryptonit | [] [] |
+ darkstat | [] [] [] [] [] [] |
+ dialog | [] [] [] [] [] [] [] [] [] |
+ diffutils | [] [] [] [] [] [] |
+ doodle | [] [] |
+ e2fsprogs | [] [] |
+ enscript | [] [] [] [] [] |
+ error | [] [] [] [] |
+ fetchmail | [] [] [] |
+ fileutils | [] [] [] [] [] |
+ findutils | [] [] [] [] [] [] |
+ flex | [] [] [] [] [] |
+ fslint | [] [] [] [] |
+ gas | |
+ gawk | [] [] [] [] |
+ gbiff | [] |
+ gcal | [] |
+ gcc | [] |
+ gettext-examples | [] [] [] [] [] [] [] [] |
+ gettext-runtime | [] [] [] [] [] [] [] [] |
+ gettext-tools | [] [] [] [] [] [] [] |
+ gimp-print | [] [] |
+ gip | [] [] [] [] |
+ gliv | [] [] [] [] |
+ glunarclock | [] [] [] [] [] [] |
+ gmult | [] [] [] [] |
+ gnubiff | () |
+ gnucash | () [] |
+ gnucash-glossary | [] [] [] |
+ gnuedu | |
+ gnulib | [] [] [] [] [] |
+ gnunet-gtk | [] |
+ gnutls | [] [] |
+ gpe-aerial | [] [] [] [] [] [] [] |
+ gpe-beam | [] [] [] [] [] [] [] |
+ gpe-calendar | [] [] [] [] [] [] [] [] |
+ gpe-clock | [] [] [] [] [] [] [] [] |
+ gpe-conf | [] [] [] [] [] [] [] |
+ gpe-contacts | [] [] [] [] [] |
+ gpe-edit | [] [] [] [] [] [] [] [] |
+ gpe-filemanager | [] [] |
+ gpe-go | [] [] [] [] [] [] |
+ gpe-login | [] [] [] [] [] [] [] [] |
+ gpe-ownerinfo | [] [] [] [] [] [] [] [] |
+ gpe-package | [] [] |
+ gpe-sketchbook | [] [] [] [] [] [] [] [] |
+ gpe-su | [] [] [] [] [] [] [] [] |
+ gpe-taskmanager | [] [] [] [] [] [] [] [] |
+ gpe-timesheet | [] [] [] [] [] [] [] [] |
+ gpe-today | [] [] [] [] [] [] [] [] |
+ gpe-todo | [] [] [] [] |
+ gphoto2 | [] [] [] [] [] |
+ gprof | [] [] [] |
+ gpsdrive | [] [] [] |
+ gramadoir | [] [] |
+ grep | [] [] [] [] [] [] [] [] |
+ gretl | [] |
+ gsasl | [] [] |
+ gss | [] [] [] |
+ gst-plugins | [] [] [] [] |
+ gst-plugins-base | [] |
+ gst-plugins-good | [] [] [] [] |
+ gstreamer | [] [] [] |
+ gtick | [] [] [] |
+ gtkam | [] [] [] [] |
+ gtkorphan | [] |
+ gtkspell | [] [] [] [] [] [] [] [] |
+ gutenprint | [] |
+ hello | [] [] [] [] [] [] [] [] |
+ id-utils | [] [] [] [] |
+ impost | [] |
+ indent | [] [] [] [] [] [] |
+ iso_3166 | [] [] [] [] [] [] |
+ iso_3166_1 | [] [] [] [] |
+ iso_3166_2 | |
+ iso_3166_3 | [] [] [] [] |
+ iso_4217 | [] [] [] [] |
+ iso_639 | [] [] [] [] |
+ jpilot | |
+ jtag | [] |
+ jwhois | [] [] [] [] |
+ kbd | [] [] [] |
+ keytouch | [] |
+ keytouch-editor | [] |
+ keytouch-keyboa... | [] |
+ latrine | [] [] |
+ ld | [] |
+ leafpad | [] [] [] [] [] [] |
+ libc | [] [] [] [] [] |
+ libexif | [] |
+ libextractor | [] [] |
+ libgpewidget | [] [] [] [] [] [] [] |
+ libgpg-error | [] [] |
+ libgphoto2 | [] |
+ libgphoto2_port | [] [] [] |
+ libgsasl | [] [] [] [] |
+ libiconv | |
+ libidn | [] [] () |
+ lifelines | [] [] |
+ lilypond | |
+ lingoteach | [] |
+ lynx | [] [] [] |
+ m4 | [] [] [] [] [] |
+ mailutils | [] [] [] [] |
+ make | [] [] [] [] |
+ man-db | [] [] |
+ minicom | [] [] [] [] [] |
+ mysecretdiary | [] [] [] [] |
+ nano | [] [] |
+ nano_1_0 | [] [] [] [] |
+ opcodes | [] [] |
+ parted | [] |
+ pilot-qof | [] |
+ psmisc | [] [] |
+ pwdutils | [] [] |
+ python | |
+ qof | [] |
+ radius | [] [] |
+ recode | [] [] [] [] [] [] [] |
+ rpm | [] [] [] [] |
+ screem | |
+ scrollkeeper | [] [] [] [] [] [] [] |
+ sed | [] [] [] [] [] [] [] [] [] |
+ sh-utils | [] [] [] |
+ shared-mime-info | [] [] [] [] [] |
+ sharutils | [] [] [] [] |
+ shishi | [] |
+ silky | [] |
+ skencil | [] [] [] |
+ sketch | [] [] [] |
+ solfege | [] |
+ soundtracker | [] [] |
+ sp | |
+ stardict | [] [] [] |
+ system-tools-ba... | [] [] [] [] [] [] [] [] [] |
+ tar | [] [] [] [] [] |
+ texinfo | [] [] [] [] |
+ textutils | [] [] [] |
+ tin | () |
+ tp-robot | [] |
+ tuxpaint | [] [] [] [] [] |
+ unicode-han-tra... | |
+ unicode-transla... | |
+ util-linux | [] [] [] [] |
+ vorbis-tools | [] [] |
+ wastesedge | |
+ wdiff | [] [] [] [] [] [] |
+ wget | [] [] [] [] |
+ xchat | [] [] [] [] [] [] [] |
+ xkeyboard-config | [] [] |
+ xpad | [] [] [] |
+ +------------------------------------------------------+
+ nso or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
+ 0 2 3 58 31 53 5 76 72 5 42 48 12 51 130 2
+
+ tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu
+ +---------------------------------------------------+
+ GNUnet | [] | 2
+ a2ps | [] [] [] | 19
+ aegis | | 0
+ ant-phone | [] [] | 6
+ anubis | [] [] [] | 11
+ ap-utils | () [] | 4
+ aspell | [] [] [] | 14
+ bash | [] | 11
+ batchelor | [] [] | 9
+ bfd | | 1
+ bibshelf | [] | 7
+ binutils | [] [] [] | 9
+ bison | [] [] [] | 19
+ bison-runtime | [] [] [] | 16
+ bluez-pin | [] [] [] [] [] [] | 28
+ cflow | [] [] | 4
+ clisp | | 6
+ console-tools | [] [] | 5
+ coreutils | [] [] | 17
+ cpio | [] [] [] | 9
+ cpplib | [] [] [] [] | 11
+ cryptonit | | 5
+ darkstat | [] () () | 15
+ dialog | [] [] [] [] [] | 30
+ diffutils | [] [] [] [] | 28
+ doodle | [] | 6
+ e2fsprogs | [] [] | 10
+ enscript | [] [] [] | 16
+ error | [] [] [] [] | 18
+ fetchmail | [] [] | 12
+ fileutils | [] [] [] | 18
+ findutils | [] [] [] | 17
+ flex | [] [] | 15
+ fslint | [] | 9
+ gas | [] | 3
+ gawk | [] [] | 15
+ gbiff | [] | 5
+ gcal | [] | 5
+ gcc | [] [] [] | 6
+ gettext-examples | [] [] [] [] [] [] | 26
+ gettext-runtime | [] [] [] [] [] [] | 28
+ gettext-tools | [] [] [] [] [] | 19
+ gimp-print | [] [] | 12
+ gip | [] [] | 12
+ gliv | [] [] | 8
+ glunarclock | [] [] [] | 15
+ gmult | [] [] [] [] | 15
+ gnubiff | [] | 1
+ gnucash | () | 2
+ gnucash-glossary | [] [] | 9
+ gnuedu | [] | 2
+ gnulib | [] [] [] [] [] | 28
+ gnunet-gtk | | 1
+ gnutls | | 2
+ gpe-aerial | [] [] | 14
+ gpe-beam | [] [] | 14
+ gpe-calendar | [] [] [] [] | 19
+ gpe-clock | [] [] [] [] | 20
+ gpe-conf | [] [] | 14
+ gpe-contacts | [] [] | 10
+ gpe-edit | [] [] [] [] | 19
+ gpe-filemanager | [] | 5
+ gpe-go | [] [] | 14
+ gpe-login | [] [] [] [] [] | 20
+ gpe-ownerinfo | [] [] [] [] | 20
+ gpe-package | [] | 5
+ gpe-sketchbook | [] [] | 16
+ gpe-su | [] [] [] | 19
+ gpe-taskmanager | [] [] [] | 19
+ gpe-timesheet | [] [] [] [] | 18
+ gpe-today | [] [] [] [] [] | 20
+ gpe-todo | [] | 6
+ gphoto2 | [] [] [] [] | 20
+ gprof | [] [] | 11
+ gpsdrive | | 4
+ gramadoir | [] | 7
+ grep | [] [] [] [] | 33
+ gretl | | 4
+ gsasl | [] [] | 6
+ gss | [] | 5
+ gst-plugins | [] [] [] | 15
+ gst-plugins-base | [] [] [] | 9
+ gst-plugins-good | [] [] [] | 18
+ gstreamer | [] [] [] | 17
+ gtick | [] | 11
+ gtkam | [] | 13
+ gtkorphan | [] | 7
+ gtkspell | [] [] [] [] [] [] | 26
+ gutenprint | | 3
+ hello | [] [] [] [] [] | 39
+ id-utils | [] [] | 14
+ impost | [] | 4
+ indent | [] [] [] [] | 25
+ iso_3166 | [] [] [] | 15
+ iso_3166_1 | [] [] | 20
+ iso_3166_2 | | 2
+ iso_3166_3 | [] [] | 9
+ iso_4217 | [] [] | 14
+ iso_639 | [] | 14
+ jpilot | [] [] [] [] | 7
+ jtag | [] | 3
+ jwhois | [] [] [] | 13
+ kbd | [] [] | 12
+ keytouch | [] | 4
+ keytouch-editor | | 2
+ keytouch-keyboa... | | 2
+ latrine | [] [] | 8
+ ld | [] [] [] [] | 8
+ leafpad | [] [] [] [] | 23
+ libc | [] [] [] | 23
+ libexif | [] | 4
+ libextractor | [] | 5
+ libgpewidget | [] [] [] | 19
+ libgpg-error | [] | 4
+ libgphoto2 | [] | 8
+ libgphoto2_port | [] [] [] | 11
+ libgsasl | [] | 8
+ libiconv | [] | 4
+ libidn | [] [] | 10
+ lifelines | | 4
+ lilypond | | 2
+ lingoteach | [] | 6
+ lynx | [] [] [] | 15
+ m4 | [] [] [] | 18
+ mailutils | [] | 8
+ make | [] [] [] | 20
+ man-db | [] | 6
+ minicom | [] | 14
+ mysecretdiary | [] [] | 12
+ nano | [] [] | 15
+ nano_1_0 | [] [] [] | 18
+ opcodes | [] [] | 10
+ parted | [] [] [] | 10
+ pilot-qof | [] | 3
+ psmisc | [] | 10
+ pwdutils | [] | 3
+ python | | 0
+ qof | [] | 2
+ radius | [] | 6
+ recode | [] [] [] | 25
+ rpm | [] [] [] [] | 14
+ screem | [] | 2
+ scrollkeeper | [] [] [] [] | 26
+ sed | [] [] [] | 22
+ sh-utils | [] | 15
+ shared-mime-info | [] [] [] [] | 23
+ sharutils | [] [] [] | 23
+ shishi | | 1
+ silky | [] | 4
+ skencil | [] | 7
+ sketch | | 6
+ solfege | | 2
+ soundtracker | [] [] | 9
+ sp | [] | 3
+ stardict | [] [] [] [] | 11
+ system-tools-ba... | [] [] [] [] [] [] [] | 37
+ tar | [] [] [] [] | 19
+ texinfo | [] [] [] | 15
+ textutils | [] [] [] | 17
+ tin | | 1
+ tp-robot | [] [] [] | 10
+ tuxpaint | [] [] [] | 16
+ unicode-han-tra... | | 0
+ unicode-transla... | | 2
+ util-linux | [] [] [] | 20
+ vorbis-tools | [] [] | 11
+ wastesedge | | 1
+ wdiff | [] [] | 22
+ wget | [] [] [] | 19
+ xchat | [] [] [] [] | 28
+ xkeyboard-config | [] [] [] [] | 11
+ xpad | [] [] [] | 14
+ +---------------------------------------------------+
+ 77 teams tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu
+ 172 domains 0 1 1 78 39 0 135 13 1 50 3 54 0 2054
+
+ 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 July 2006 seems to be old, you may fetch a more recent copy of
+this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
+matrix with full percentage details can be found at
+`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
+
+1.6 Using `gettext' in new packages
+===================================
+
+If you are writing a freely available program and want to
+internationalize it you are welcome to use GNU `gettext' in your
+package. Of course you have to respect the GNU Library General Public
+License which covers the use of the GNU `gettext' library. This means
+in particular that even non-free programs can use `libintl' as a shared
+library, whereas only free software can use `libintl' as a static
+library or use modified versions of `libintl'.
+
+ Once the sources are changed appropriately and the setup can handle
+the use of `gettext' the only thing missing are the translations. The
+Free Translation Project is also available for packages which are not
+developed inside the GNU project. Therefore the information given above
+applies also for every other Free Software Project. Contact
+`translation@iro.umontreal.ca' to make the `.pot' files available to
+the translation teams.
+
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..5200633
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,98 @@
+Here are the names of the programs in this package,
+each followed by the name(s) of its author(s).
+
+base64: Simon Josefsson
+basename: FIXME unknown
+cat: Torbjorn Granlund, Richard M. Stallman
+chgrp: David MacKenzie, Jim Meyering
+chmod: David MacKenzie, Jim Meyering
+chown: David MacKenzie, Jim Meyering
+chroot: Roland McGrath
+cksum: Q. Frank Xia
+comm: Richard Stallman, David MacKenzie
+cp: Torbjorn Granlund, David MacKenzie, Jim Meyering
+csplit: Stuart Kemp, David MacKenzie
+cut: David Ihnat, David MacKenzie, Jim Meyering
+date: David MacKenzie
+dd: Paul Rubin, David MacKenzie, Stuart Kemp
+df: Torbjorn Granlund, David MacKenzie, Paul Eggert
+dir: Richard Stallman, David MacKenzie
+dircolors: H. Peter Anvin
+dirname: David MacKenzie, Jim Meyering
+du: Torbjorn Granlund, David MacKenzie, Paul Eggert, Jim Meyering
+echo: FIXME unknown
+env: Richard Mlynarik, David MacKenzie
+expand: David MacKenzie
+expr: Mike Parker
+factor: Paul Rubin
+false: Jim Meyering
+fmt: Ross Paterson
+fold: David MacKenzie
+ginstall: David MacKenzie
+groups: David MacKenzie
+head: David MacKenzie, Jim Meyering
+hostid: Jim Meyering
+hostname: Jim Meyering
+id: Arnold Robbins, David MacKenzie
+join: Mike Haertel
+kill: Paul Eggert
+link: Michael Stone
+ln: Mike Parker, David MacKenzie
+logname: FIXME: unknown
+ls: Richard Stallman, David MacKenzie
+md5sum: Ulrich Drepper, Scott Miller, David Madore
+mkdir: David MacKenzie
+mkfifo: David MacKenzie
+mknod: David MacKenzie
+mv: Mike Parker, David MacKenzie, Jim Meyering
+nice: David MacKenzie
+nl: Scott Bartram, David MacKenzie
+nohup: Jim Meyering
+od: Jim Meyering
+paste: David M. Ihnat, David MacKenzie
+pathchk: Paul Eggert, David MacKenzie, Jim Meyering
+pinky: Joseph Arceneaux, David MacKenzie, Kaveh Ghazi
+pr: Pete TerMaat, Roland Huebner
+printenv: David MacKenzie, Richard Mlynarik
+printf: David MacKenzie
+ptx: F. Pinard
+pwd: Jim Meyering
+readlink: Dmitry V. Levin
+rm: Paul Rubin, David MacKenzie, Richard Stallman, Jim Meyering
+rmdir: David MacKenzie
+seq: Ulrich Drepper
+sha1sum: Ulrich Drepper, Scott Miller, David Madore
+sha224sum: Ulrich Drepper, Scott Miller, David Madore
+sha256sum: Ulrich Drepper, Scott Miller, David Madore
+sha384sum: Ulrich Drepper, Scott Miller, David Madore
+sha512sum: Ulrich Drepper, Scott Miller, David Madore
+shred: Colin Plumb
+shuf: Paul Eggert
+sleep: Jim Meyering, Paul Eggert
+sort: Mike Haertel, Paul Eggert
+split: Torbjorn Granlund, Richard M. Stallman
+stat: Michael Meskes
+stty: David MacKenzie
+su: David MacKenzie
+sum: Kayvan Aghaiepour, David MacKenzie
+sync: Jim Meyering
+tac: Jay Lepreau, David MacKenzie
+tail: Paul Rubin, David MacKenzie, Ian Lance Taylor, Jim Meyering
+tee: Mike Parker, Richard M. Stallman, David MacKenzie
+test: Kevin Braunsdorf, Matthew Bradburn
+touch: Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie, Randy Smith
+tr: Jim Meyering
+true: Jim Meyering
+tsort: Mark Kettenis
+tty: David MacKenzie
+uname: David MacKenzie
+unexpand: David MacKenzie
+uniq: Richard Stallman, David MacKenzie
+unlink: Michael Stone
+uptime: Joseph Arceneaux, David MacKenzie, Kaveh Ghazi
+users: Joseph Arceneaux, David MacKenzie
+vdir: Richard Stallman, David MacKenzie
+wc: Paul Rubin, David MacKenzie
+who: Joseph Arceneaux, David MacKenzie, Michael Stone
+whoami: Richard Mlynarik
+yes: David MacKenzie
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..d511905
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..034a6d6
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,5539 @@
+2007-03-22 Jim Meyering <jim@meyering.net>
+
+ Version 6.9.
+ * NEWS: Record release date and new version number.
+ * configure.ac (AC_INIT): New version number.
+
+ * tests/mv/hard-3: Correct the preceding change: $3 -> $2.
+
+2007-03-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ Improve a test script.
+ * tests/mv/hard-3: Check for 'ls' failure, too.
+ Generate more-useful debugging output when 'ls' fails.
+
+2007-03-21 Jim Meyering <jim@meyering.net>
+
+ Fix a test script not to claim an ext2 file system is of type xfs.
+ * tests/du/slink: When using df --local and df --type=TYPE,
+ test only the exit code. Don't bother with stdout.
+ Prompted by a report by Thomas Schwinge of an inaccurate diagnostic.
+
+ * gl/lib/savewd.c: Remove this file, since the savewd_save change
+ is now in gnulib. The other wasn't useful.
+
+2007-03-20 Jim Meyering <jim@meyering.net>
+
+ * gl/lib/acl.c: Remove this file, now that gnulib's version subsumes it.
+
+ Skip part of this test when "." is not a local file system.
+ * tests/install/basic-1: Otherwise, it would fail on some NFS
+ file systems.
+ * tests/mkdir/p-3: Likewise.
+
+2007-03-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/Makefile.am (dir_LDADD, ls_LDADD, vdir_LDADD):
+ Add $(LIB_ACL_TRIVIAL).
+
+2007-03-18 Jim Meyering <jim@meyering.net>
+
+ Fix a generic NFS-related test failure.
+ * tests/mkdir/p-3: When setting up an unreadable "." in an
+ inaccessible parent, make the parent inaccessible *after* making "."
+ unreadable. Otherwise, running "chmod a-r ." in an already-
+ inaccessible parent would fail on NFS with "Stale NFS file handle".
+
+ Fix a bug in how pr -m -s works.
+ * NEWS: Describe how the fix affects pr.
+ * src/pr.c (init_parameters): The --merge (-m) option does
+ not imply --expand-tabs (-e), so don't set "untabify_input".
+ Reported by Wis Macomson.
+ * tests/misc/pr: New file. Test for the above fix.
+ * tests/misc/Makefile.am (TESTS): Add pr.
+ * THANKS: Update.
+
+2007-03-17 Jim Meyering <jim@meyering.net>
+
+ Detect use of AC_CONFIG_AUX_DIR also when its argument is quoted.
+ * bootstrap: Put ""s around use of $build_aux, in case
+ someone uses a name containing shell meta-characters.
+ Reported by Alfred M. Szmidt.
+ * tests/misc/tty-eof: Add shuf to the list of tested commands.
+
+ Avoid test failure on NFS-mounted Solaris ZFS file system.
+ * tests/du/basic: Skip a test if "." is on a non-local file system.
+
+ Avoid an obscure build failure, prefer waitpid over wait.
+ * src/install.c (strip): Use waitpid, not wait. It's equivalent,
+ but feels less obsolescent.
+
+ * bootstrap: Don't use \> in grep regexp. For HP-UX.
+
+2007-03-16 Jim Meyering <jim@meyering.net>
+
+ Begin adding support for Solaris ZFS (4 entries per trivial ACL)
+ * gl/lib/acl.c (ACL_NOT_WELL_SUPPORTED): New macro.
+ (file_has_acl, copy_acl): Use it, rather than enumerating errno values.
+ (is_trivial_acl): New function. Incomplete, for now.
+ (file_has_acl, copy_acl): Use the new function, rather than
+ counting the number of entries in an ACL.
+
+ * bootstrap: Update from gnulib.
+
+ * .x-sc_prohibit_atoi_atof: Add TODO here, too.
+
+2007-03-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/copy.c: Include filemode.h.
+ (overwrite_prompt): Say "try to overwrite", not "overwrite", to
+ make it clearer that the attempt may fail. Problem reported by
+ Dan Jacobson in:
+ http://lists.gnu.org/archive/html/bug-coreutils/2007-03/msg00130.html
+ Output symbolic mode as well as numeric.
+ * tests/mv/i-2 (fail): Adjust to new prompt format.
+
+2007-03-15 Jim Meyering <jim@meyering.net>
+
+ Enforce policy: don't use *scanf functions.
+ * Makefile.maint (sc_prohibit_atoi_atof): Add to regexp and diagnostic.
+ * .x-sc_prohibit_atoi_atof: Give stty a temporary pass.
+ * TODO: note that stty.c needs this small clean-up.
+
+2007-03-13 Jim Meyering <jim@meyering.net>
+
+ Prepare to work on ACL-related failure when using Solaris ZFS.
+ * gl/lib/acl.c: New file, copied from gnulib.
+
+ Work around a failing test due to an NFS-based race condition.
+ * tests/cp/sparse: Accept a report that the copy is *smaller*.
+
+2007-03-12 Jim Meyering <jim@meyering.net>
+
+ Make bootstrap.conf a tiny bit more generic.
+ * bootstrap.conf (XGETTEXT_OPTIONS): Exclude gettext-related .m4
+ files when e.g., AM_GNU_GETTEXT([external] appears in configure.ac.
+
+2007-03-10 Jim Meyering <jim@meyering.net>
+
+ Try to fix today's NFS-related failure: Treat ESTALE like EACCES.
+ * gl/lib/savewd.c: Copy this file from gnulib, then change
+ "errno != EACCES" to (errno != EACCES && errno != ESTALE).
+ The symptom was this failure in tests/install/basic-1:
+ ginstall: cannot create directory `rel/a': Stale NFS file handle
+
+ The preceding change solved part of the problem. Now ginstall fails.
+ * tests/install/basic-1: Temporarily, don't redirect ginstall's
+ stderr to /dev/null, so I can see why the NFS autobuilder's NFS test
+ is failing.
+
+ * tests/install/basic-1: When setting up an unreadable "." in an
+ inaccessible parent, make the parent inaccessible *after* making "."
+ unreadable. Otherwise, running "chmod a-r ." in an already-
+ inaccessible parent would fail on NFS with "Stale NFS file handle".
+ Reported by Bob Proulx.
+
+ * Makefile.maint (po-check): Exclude c99-to-c89.diff.
+
+2007-03-09 Jim Meyering <jim@meyering.net>
+
+ Avoid test failures on Darwin 7.9.0 (MacOS X 10.3.9)
+ * tests/chgrp/basic: Don't let failure by chgrp to set the
+ group of a symlink make this test fail. Do give a diagnostic.
+ In the chgrp-no-change-ctime test, add darwin7.9.0 as another
+ known-failing system.
+ When failing on some other system, print $host_triplet, too.
+ Also avoid test failures on Darwin 8.8.x (MacOS X 10.4).
+ Reported by Peter Fales.
+
+2007-03-08 Jim Meyering <jim@meyering.net>
+
+ * src/c99-to-c89.diff: Reflect the new c99'ism, update offsets.
+
+2007-03-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ rm without -f: give a better diagnostic when euidaccess fails.
+ * src/remove.c (write_protected_non_symlink): Return int, not bool,
+ so that we can indicate failure too (as a postive error number).
+ (prompt): If write_protected_non_symlink fails, report that error
+ number and fail rather than charging ahead and removing the dubious
+ entry. Redo the logic of printing a diagnostic so that we need to
+ invoke quote (full_filename (...)) only once. More details at:
+ <http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/9952/focus=9996>
+
+2007-03-08 Jim Meyering <jim@meyering.net>
+
+ Generalize a few more cvs-isms.
+ * bootstrap (checkout_only_file): Rename from CVS_only_file.
+ Change comments and diagnostics not to say "CVS".
+
+ * bootstrap: Run libtool, if necessary.
+
+ Make bootstrap a little more general.
+ * bootstrap (build_aux): Factor out/use this definition.
+ Formally require a "AC_CONFIG_AUX_DIR($build_aux)" line in configure.ac.
+ (insert_sorted_if_absent): Move function definition "up", to
+ precede new first use.
+ If $build_aux/ doesn't exist initially, create it, and
+ mark it as ignored.
+
+2007-03-03 Andrew Church <achurch@achurch.org> (tiny change)
+ Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix a bug: cp -x would fail to set mount point permissions.
+ * NEWS: mention cp -x bug fix
+ * src/copy.c (copy_internal): Don't return immediately after
+ copying a mount point that we do not intend to recurse under.
+ Based on a patch by Andrew Church.
+
+2007-03-03 Jim Meyering <jim@meyering.net>
+
+ pwd-unreadable-parent: Skip test on ia64/Linux, too.
+ * tests/misc/pwd-unreadable-parent: Also skip when $REPLACE_GETCWD.
+ Reported by Bob Proulx.
+
+2007-03-02 Jim Meyering <jim@meyering.net>
+
+ pwd-unreadable-parent: Skip test on non-Linux/GNU systems.
+ * tests/misc/pwd-unreadable-parent: Rather than trying to decide
+ whether this test has a chance of succeeding, run it only when
+ $(host_os) is linux-gnu. It was failing on powerpc-apple-darwin8.8.0
+ * tests/misc/Makefile.am (TESTS_ENVIRONMENT): Add host_os=$(host_os).
+
+ * tests/misc/pwd-long: Also allow "+" in $PWD.
+
+ Remove another coreutils-ism. Formatting cleanup.
+ * Makefile.maint (my-distcheck): Update an outdated comment.
+ (emit_upload_commands): Use $(PACKAGE) rather than "coreutils".
+ (my-distcheck): Skip the c99/c89 check if there's no such .diff file.
+
+2007-03-01 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (warn_cflags): Hoist, adding "-Dlint -O".
+ (my-distcheck): Use the new variable, instead of too-long literal.
+
+ Make "make syntax-check" rules less coreutils-specific.
+ * Makefile.maint (sc_cast_of_x_alloc_return_value): Use CVS_LIST_EXCEPT.
+ (sc_cast_of_alloca_return_value): Likewise.
+ (sc_root_tests): Do nothing if there is no check-root target
+ in tests/Makefile.am.
+
+ Run the writable-files check only for release-building targets.
+ * Makefile.maint (local-checks-available): Remove writable-files.
+ (alpha beta major): Put it here, instead.
+
+ "make syntax-check" now runs only Makefile.cfg-selected tests
+ * Makefile.maint (syntax-check-rules): Hoist this definition so that
+ it precedes the indirect use in the definition of $(local-check).
+ (local-check): Use :=, not just "=".
+ (syntax-check): Depend on $(local-check), not $(syntax-check-rules).
+
+2007-02-28 Bruno Haible <bruno@clisp.org>
+
+ * bootstrap.conf (gnulib_modules): Replace xreadlink with
+ xreadlink-with-size. Add xreadlink.
+ * src/copy.c (copy_internal): Update.
+ * src/ls.c (is_directory): Update.
+ * src/stat.c (print_stat): Update.
+ * src/readlink.c (main): Use the one-argument xreadlink function.
+
+2007-02-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doc/coreutils.texi (Common options): --si outputs "M", not "MB".
+ Problem reported by Philip Rowlands in
+ <http://lists.gnu.org/archive/html/bug-coreutils/2007-02/msg00283.html>.
+
+2007-02-28 Jim Meyering <jim@meyering.net>
+
+ * .x-sc_file_system: Add the new test, tests/misc/df-P, to this
+ list of exceptions, for the "make distcheck" sc_file_system rule.
+
+ * Makefile.maint (gnulib_snapshot_date): Remove now-unused definition.
+
+2007-02-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ Make df -P immune to effects of e.g., the BLOCK_SIZE envvar.
+ * NEWS: With -P, the default block size and output format is not
+ affected by DF_BLOCK_SIZE, BLOCK_SIZE, or BLOCKSIZE.
+ * src/df.c (main): Implement this.
+
+2007-02-27 Jim Meyering <jim@meyering.net>
+
+ Add a test for the above.
+ * tests/misc/df-P: New file.
+ * tests/misc/Makefile.am (TESTS): Add df-P.
+
+2007-02-25 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (announcement): Adjust so that it works with
+ announce-gen's --gnulib-snapshot-time-stamp option.
+ Indent one of the command lines using TAB, not 8 spaces.
+
+ Post-release version change.
+ * NEWS: Add a line for 6.8+.
+ * configure.ac (AC_INIT): Set new version string.
+
+2007-02-24 Jim Meyering <jim@meyering.net>
+
+ Version 6.8.
+ * NEWS: Record release date and new version number.
+ * configure.ac (AC_INIT): New version number.
+
+ Don't skip this test on new-enough Linux/GNU systems.
+ * tests/misc/pwd-unreadable-parent: Test $REPLACE_GETCWD = 0,
+ rather than for __GETCWD_PREFIX in config.h (the latter is no
+ longer defined, ever, due to gnulib changes).
+ * tests/misc/Makefile.am (TESTS_ENVIRONMENT): Define REPLACE_GETCWD.
+
+ Remove the "gnits" option; it prohibits my using "+" as a version
+ string suffix, and all it does (beyond the default "gnu" option)
+ is to _require_ the THANKS file.
+ * configure.ac (AM_INIT_AUTOMAKE): Remove it.
+
+ Remove all AUTOMAKE_OPTIONS settings in Makefile.am files.
+ * tests/chgrp/Makefile.am, tests/chmod/Makefile.am:
+ * tests/chown/Makefile.am, tests/cp/Makefile.am:
+ * tests/du/Makefile.am, tests/expr/Makefile.am:
+ * tests/factor/Makefile.am, tests/general/Makefile.am:
+ * tests/install/Makefile.am, tests/ln/Makefile.am:
+ * tests/ls/Makefile.am, tests/mkdir/Makefile.am:
+ * tests/mv/Makefile.am, tests/readlink/Makefile.am:
+ * tests/rm/Makefile.am, tests/rmdir/Makefile.am:
+ * tests/seq/Makefile.am, tests/stty/Makefile.am:
+ * tests/tee/Makefile.am, tests/touch/Makefile.am:
+
+ * README: Document the OSF/1 4.0d build failure and work-around.
+ Reported by Bruno Haible.
+
+ * NEWS: Use a simple "+" suffix to denote pre-release, not "-dirty".
+ Nicer connotations.
+ * configure.ac: Use 6.7+, not 6.7-dirty.
+
+2007-02-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: sort no longer compresses temporaries by default.
+ * bootstrap.conf: Remove findprog.
+ * doc/coreutils.texi (sort invocation): The default is to not
+ compress. Don't treat "" specially.
+ * src/sort.c: Don't include findprog.h.
+ (create_temp): Compress only if the user specified --compress-program.
+ * tests/misc/sort-compress: Adjusts tests to match new behavior.
+
+2007-02-24 Jim Meyering <jim@meyering.net>
+
+ Avoid a shell syntax error, when building with an inadequate Perl.
+ * man/Makefile.am (.x.1): Add quotes around $(PERL) in case, since
+ it can expand to "/.../missing perl".
+
+ * man/Makefile.am (.x.1): Warn when unable to update a man page.
+ Suggestion from Bruno Haible.
+
+2007-02-23 Bruno Haible <bruno@clisp.org>
+
+ Handle better the combination of old Perl and a pre-c99 compiler.
+ * man/Makefile.am (.x.1): If the autoconf test has determined that
+ perl is missing or not a sufficient version, do nothing.
+
+ * tests/readlink/can-e: Put the closing double-quote at the end of a
+ backquoted word, not in the middle. Works around a bug in sh on
+ OSF/1 4.0d.
+ * tests/readlink/can-f: Likewise.
+ * tests/readlink/can-m: Likewise.
+
+ * tests/du/slink: Skip the test if executing on an nfsv3 file system.
+ This avoids a test failure at least on OSF/1 4.0d.
+
+2007-02-23 Jim Meyering <jim@meyering.net>
+
+ * src/date.c (usage): Split a diagnostic that had grown to be
+ longer than the C89 maximum of 509 bytes.
+
+2007-02-23 Ed Santiago <ed@edsantiago.com>
+
+ * src/date.c (usage): Mention that --rfc-3339 uses space, not 'T',
+ for a separator. Include sample RFC 2822 and 3339 output.
+
+2007-02-23 Jim Meyering <jim@meyering.net>
+
+ With -Dlint, make shuf free all heap-allocated storage.
+ * src/shuf.c (main): Move declaration of input_lines to
+ function scope, and initialize to NULL, so we can free it.
+ [lint]: Free all malloc'd memory.
+ * tests/misc/shuf: Also test shuf's -e and -i options.
+
+2007-02-22 Jim Meyering <jim@meyering.net>
+
+ Merge in a change from some other incarnation of this file (gzip?)
+ * bootstrap (gnulib_tool): Skip get_translations if there is no po/ dir.
+
+ Adjust preceding change not to perform an unaligned access.
+ * src/copy.c (copy_reg): Undo previous change. Instead, make
+ it clearer that we're using a single-byte sentinel, and
+ [lint]: Initialize sizeof (uintptr_t) - 1 bytes after the sentinel.
+ Reported by Andreas Schwab.
+
+ Placate valgrind, wrt ./cp --sparse=always
+ * src/copy.c (copy_reg): Place the sentinel by setting a
+ full word's worth of bits, not just a single byte's worth.
+ This avoids a harmless (but distracting) case of memory being
+ used-uninitialized.
+
+2007-02-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ Honor dd's noatime flag if possible, even if not supported on build fs
+ * doc/coreutils.texi (dd invocation): Warn that noatime might not be
+ reliable.
+ * src/dd.c (flags, usage): Look at O_NOATIME, not
+ HAVE_WORKING_O_NOATIME, to decide whether to support the noatime
+ flag, so that dd attempts O_NOATIME even if the build file system
+ does not support it. Problem reported by Jim Meyering today in
+ bug-coreutils.
+ * tests/dd/misc: Generate a warning, not a failure, if noatime
+ exists but fails.
+
+2007-02-21 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/date: Remove vestigial use of Data::Dumper.
+
+2007-02-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/copy.c (cached_umask): Cast -1 to mode_t to avoid a warning
+ about out-of-range initializer with Sun C 5.8.
+
+2007-02-20 Jim Meyering <jim@meyering.net>
+
+ * bootstrap (CVS_only_file): Use README-hacking.
+
+ Now that we use GIT, not cvs, rename README-cvs.
+ * README-hacking: Renamed from...
+ Update to reflect that we now use git.
+
+ * README-cvs: ...this.
+
+ * src/env.c (main): When invoked with no arguments (i.e. when printing
+ the environment), use a local variable to iterate through the global
+ "environ" array, rather than "environ" itself. This is solely to
+ avoid changing the environment for an LD_PRELOAD-substituted "puts"
+ or "exit" function. Tiny patch by Harvey Eneman. See
+ <http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/9735>.
+ * THANKS: Update.
+
+ * bootstrap: Move definitions of temporary directory names and the
+ new bt_regex "up" to precede all uses, so it's clearer what their
+ scope is. Also, use [.], rather than \\., since the former works
+ even if eval'd.
+
+ * bootstrap: Remove occurrences of $bt (._bootmp) from lib/Makefile.
+ Based on the bison 2007-02-19 change by Joel E. Denny.
+
+2007-02-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: sort now uses a --compress-program option rather than
+ an environment variable.
+ * doc/coreutils.texi (sort invocation): Document this.
+ * src/sort.c (usage): Likewise.
+ (COMPRESS_PROGRAM_OPTION): New const.
+ (long_options, create_temp, main): Support new option.
+ * tests/misc/sort-compress: Test it.
+
+2007-02-19 Jim Meyering <jim@meyering.net>
+
+ * bootstrap: Fix typo s/dowloading/downloading/ in --help output.
+
+2007-02-18 Jim Meyering <jim@meyering.net>
+
+ * src/system.h: Don't include exit.h, now that it's subsumed
+ by the gnulib-generated stdlib.h.
+
+ * tests/rm/fail-eacces: Skip this test when running as root.
+ Reported by Matthew Woehlke.
+
+ * bootstrap: Use "._bootmp" as the temporary directory name,
+ not ".#bootmp". The latter's "#" caused trouble with the new,
+ gnulib-added "LINK_WARNING_H = $(top_srcdir)/.#bootmp/..." line.
+
+2007-02-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * bootstrap.conf (gnulib_modules): Add c-strcase. Remove strcase.
+ * src/dircolors.c: Include c-strcase.h.
+ (dc_parse_stream): Use c_strcasecmp rather than
+ strcasecmp to avoid unreliable results in locales like Turkish
+ where strcasecmp is incompatible with the C locale.
+
+2007-02-13 Jim Meyering <jim@meyering.net>
+
+ Also check for and print stderr output, in case a program fails.
+ * tests/misc/tty-eof: Occasionally (not reproducible), this
+ test would fail, with one or more programs exiting nonzero, e.g.,
+ tty-eof: sha224sum exited with status 1 (expected 0)
+ Now, maybe we'll get a clue, the next time that happens.
+
+2007-02-12 Jim Meyering <jim@meyering.net>
+
+ * .x-sc_useless_cpp_parens: Ignore a false-positive in a shell script.
+
+ * tests/misc/pwd-unreadable-parent: Skip the test if we're
+ definitely using the replacement.
+ * tests/misc/Makefile.am (TESTS_ENVIRONMENT): Define CONFIG_HEADER.
+
+2007-02-10 Jim Meyering <jim@meyering.net>
+
+ Remove excess leading spaces that would make help2man misbehave.
+ * src/printf.c (usage): Remove excess spaces on 2nd line of %b desc.
+ * src/nl.c (usage): Remove excess spaces on 2nd line of pBRE desc.
+ * src/dd.c (usage): Remove excess spaces on 2nd line of sync desc.
+ * src/date.c (usage): Use two spaces after each optional flag, not one.
+ Reported by Thomas Huriaux in <http://bugs.debian.org/410407>.
+
+ * Makefile.maint (longopt_re): Relax the regexp, making square
+ brackets optional, so it matches the newly reported violations, too.
+
+ * src/csplit.c (usage): Use two spaces (not one) to separate
+ each option string from its description, so help2man formats
+ the derived man page properly. Reported by Thomas Huriaux in
+ <http://bugs.debian.org/410407>.
+ * src/df.c (usage): Likewise.
+ * src/du.c (usage): Likewise.
+ * src/install.c (usage): Likewise.
+ * src/ls.c (usage): Likewise.
+
+2007-02-03 Jim Meyering <jim@meyering.net>
+
+ Test for today's gnulib/lib/getcwd.c fix affecting pwd and readlink
+ * NEWS: Mention the bug fix.
+ * tests/misc/pwd-unreadable-parent: New file.
+ * tests/misc/Makefile.am (TESTS): Ad pwd-unreadable-parent.
+
+2007-02-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Document fix for cp --preserve=mode.
+ * src/copy.c (copy_internal): Omit the group- or other-writeable
+ permissions when creating a directory, to avoid a race condition
+ if the special mode bits aren't right just after the directory is
+ created.
+ * src/cp.c (make_dir_parents_private): Likewise.
+ * tests/cp/parent-perm-race: Test for the "cp --preserve=mode"
+ race fix in copy.c.
+
+ * NEWS: Document fix for cp --parents.
+ * src/cp.c (make_dir_parents_private): Report the error sooner with
+ "cp --parents DIR/FILE DEST" when DIR is a non-directory, thus not
+ creating the directory, DEST/DIR.
+ * tests/cp/cp-parents: Test for the non-race-condition bug fixed
+ by the above change.
+
+2007-02-02 Jim Meyering <jim@meyering.net>
+
+ * src/nl.c (proc_text): Use "NULL", not "(struct re_registers *) 0".
+
+ * src/c99-to-c89.diff: Make shred.c Index: and a/b prefixes
+ consistent, so this can be applied with patch -p0.
+ Reported by Matthew Woehlke.
+
+ * Makefile.maint (patch-check): Use patch with its -p2 option,
+ since that makes this check slightly more strict.
+
+2007-01-29 Jim Meyering <jim@meyering.net>
+
+ Plug a leak in ls.
+ * src/ls.c (print_dir): Don't leak a "DIR"+fd upon failure to
+ determine dev/inode or upon detecting a symlink loop.
+
+ * src/ls.c: Rename three global variables.
+ (cwd_file): Rename from 'files'.
+ (cwd_n_alloc): Rename from 'nfiles'.
+ (cwd_n_used): Rename from 'files_index'.
+
+ Shave 8 bytes off the size of "struct fileinfo".
+ * src/ls.c (fileinfo): Put all members of type "bool" together.
+
+2007-01-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ Modify "ls" to sort its data faster, using the new gnulib mpsort
+ module rather than qsort. This is particularly a win in
+ environments where strcoll is slow, since mpsort typically calls
+ strcoll less often than qsort does.
+ * bootstrap.conf (gnulib_modules): Add mpsort.
+ * src/ls.c: Include mpsort.h.
+ (sorted_file, sorted_file_alloc): New vars, for a new vector of
+ pointers to the file info, for speed.
+ (clear_files, extract_dirs_from_files, sort_files, print_current_files):
+ (print_many_per_line, print_horizontal, print_with_commas):
+ (calculate_columns): Set and use new vector.
+ (initialize_ordering_vector): New function.
+
+2007-01-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ Adjust to today's change to gnulib, which added a module for
+ string.h to replace the little include files like strcase.h.
+ * src/dircolors.c: Don't include strcase.h.
+ * src/system.h: Don't include mempcpy.h, memrchr.h, stpcpy.h, strpbrk.h.
+
+2007-01-26 Jim Meyering <jim@meyering.net>
+
+ * src/dd.c (advance_input_after_read_error): Change diagnostic to
+ say "invalid file offset" rather than "screwy file offset".
+
+ * .x-sc_cast_of_argument_to_free: Remove this file.
+ * Makefile.am (EXTRA_DIST): Likewise.
+
+2007-01-25 Dan Hipschman <dsh@linux.ucla.edu>
+
+ * src/sort.c (create_temp): Remove superfluous access-X_OK
+ check. find_in_path does this for us.
+
+2007-01-24 Jim Meyering <jim@meyering.net>
+
+ Remove usually-skipped test.
+ * tests/cp/open-perm-race: Remove this file. It is subsumed
+ by parent-perm-race.
+ * tests/cp/Makefile.am (TESTS): Remove open-perm-race.
+ * tests/sort/Makefile.am: Regenerate.
+
+ Pass "make distcheck" again.
+ * src/sort.c (usage): Split a diagnostic that had grown to be
+ longer than the C89 maximum of 509 bytes.
+ * .x-sc_cast_of_argument_to_free: New file. Allow a cast in sort.c.
+ FIXME: this is just temporary, while we wait to remove the offending
+ access-calling code.
+ * Makefile.am (EXTRA_DIST): Add .x-sc_cast_of_argument_to_free.
+ * Makefile.maint (sc_cast_of_argument_to_free): Use the
+ canonical, $$($(CVS_LIST_EXCEPT)).
+ * m4/.gitignore, m4/.cvsignore, lib/.gitignore, lib/.cvsignore: Update.
+
+2007-01-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: New option sort -C, proposed by XCU ERN 127, which looks
+ like it will be approved. Also add --check=quiet, --check=silent
+ as long aliases, and --check=diagnose-first as an alias for -c.
+ * doc/coreutils.texi (sort invocation): Document this.
+ Also, mention that sort -c can take at most one file.
+ * src/sort.c: Implement this.
+ Include argmatch.h.
+ (usage): Document the change.
+ (CHECK_OPTION): New constant.
+ (long_options): --check now takes an optional argument, and is now
+ treated differently from 'c'.
+ (check_args, check_types): New constant arrays.
+ (check): New arg CHECKONLY, which suppresses diagnostic if -C.
+ (main): Parse the new options.
+ * tests/sort/Test.pm (02d, 02d, incompat5, incompat6):
+ New tests for -C.
+
+2007-01-24 Jim Meyering <jim@meyering.net>
+
+ Fix a typo.
+ * tests/misc/sort-compress: Use $abs_top_builddir, not $top_builddir.
+ * tests/misc/Makefile.am (TESTS_ENVIRONMENT): Likewise.
+
+ Don't depend on "which".
+ * tests/misc/sort-compress (SORT): Use $abs_builddir, now which.
+ * tests/misc/Makefile.am (TESTS_ENVIRONMENT): Export top_builddir.
+
+2007-01-24 Dan Hipschman <dsh@linux.ucla.edu>
+
+ Test sort compression.
+ * tests/misc/Makefile.am: Add the test.
+ * tests/misc/sort-compress: New file containing the tests.
+
+2007-01-24 Jim Meyering <jim@meyering.net>
+
+ * NEWS: sort temp file compression: tweak wording.
+ * src/sort.c (struct sortfile) [name]: Declare member to be const.
+
+2007-01-21 Jim Meyering <jim@meyering.net>
+
+ * src/sort.c (MAX_FORK_RETRIES_COMPRESS, MAX_FORK_RETRIES_DECOMPRESS):
+ In pipe_fork callers, use these named constants, not "2" and "8".
+ (proctab, nprocs): Declare to be "static".
+ (pipe_fork) [lint]: Initialize local, pid,
+ to avoid unwarranted may-be-used-uninitialized warning.
+ (create_temp): Use the active voice. Describe parameters, too.
+
+2007-01-21 James Youngman <jay@gnu.org>
+
+ Centralize all the uses of sigprocmask(). Don't restore an invalid
+ saved mask.
+ * src/sort.c (enter_cs, leave_cs): New functions for protecting
+ code sequences against signal delivery.
+ * (exit_cleanup): Use enter_cs and leave_cs instead of
+ calling sigprocmask directly.
+ (create_temp_file, pipe_fork, zaptemp): Likewise
+
+2007-01-21 Dan Hipschman <dsh@linux.ucla.edu>
+
+ Add compression of temp files to sort.
+ * NEWS: Mention this.
+ * bootstrap.conf: Import findprog.
+ * configure.ac: Add AC_FUNC_FORK.
+ * doc/coreutils.texi: Document GNUSORT_COMPRESSOR environment
+ variable.
+ * src/sort.c (compress_program): New global, holds the name of the
+ external compression program.
+ (struct sortfile): New type used by mergepfs and friends instead
+ of filenames to hold PIDs of compressor processes.
+ (proctab): New global, holds compressor PIDs on which to wait.
+ (enum procstate, struct procnode): New types used by proctab.
+ (proctab_hasher, proctab_comparator): New functions for proctab.
+ (nprocs): New global, number of forked but unreaped children.
+ (reap, reap_some): New function, wait for/cleanup forked processes.
+ (register_proc, update_proc, wait_proc): New functions for adding,
+ modifying and removing proctab entries.
+ (create_temp_file): Change parameter type to pointer to file
+ descriptor, and return type to pointer to struct tempnode.
+ (dup2_or_die): New function used in create_temp and open_temp.
+ (pipe_fork): New function, creates a pipe and child process.
+ (create_temp): Creates a temp file and possibly a compression
+ program to which we filter output.
+ (open_temp): Opens a compressed temp file and creates a
+ decompression process through which to filter the input.
+ (mergefps): Change FILES parameter type to struct sortfile array
+ and update access accordingly. Use open_temp and reap_some.
+ (avoid_trashing_input, merge): Change FILES parameter like
+ mergefps and call create_temp instead of create_temp_file.
+ (sort): Call create_temp instead of create_temp_file.
+ Use reap_some.
+ (avoid_trashing_input, merge, sort, main): Adapt to mergefps.
+
+ The idea of compressing sorts temporary files was first
+ suggested/implemented by Jay Soffian in 1998, and again
+ by Charles Randall in 2001.
+
+2007-01-20 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/pwd-long: Work properly even when run from the
+ wrong one of two or more bind-mounted sibling directories.
+ Suggestion from Mike Stone in <http://bugs.debian.org/380552>.
+
+2007-01-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ Standardize on list of signals when an app catches signals.
+ * src/csplit.c (main): Also catch SIGALRM, SIGPIPE, SIGPOLL,
+ SIGPROF, SIGVTALRM, SIGXCPU, SIGXFSZ.
+ * src/ls.c (main): Likewise (except SIGPIPE was already caught).
+ Note that ls.c is special, as it also catches SIGTSTP.
+ * src/sort.c (main): Likewise. Also catch SIGQUIT. More details in
+ <http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/9510>.
+
+2007-01-19 Dan Hipschman <dsh@linux.ucla.edu>
+ and Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/sort.c (cleanup): Clear temphead at the end.
+ (exit_cleanup): New function.
+ (main): Don't invoke atexit until we're ready.
+ Invoke it with exit_cleanup, not with cleanup and close_stdout,
+ to avoid a race condition with cleanup and signal handling. More
+ details: http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/9508
+
+2007-01-18 Jim Meyering <jim@meyering.net>
+
+ * src/c99-to-c89.diff: Adjust remove.c offsets.
+
+2007-01-17 Jim Meyering <jim@meyering.net>
+
+ Make "rm --interactive=never ..." never prompt.
+ * NEWS: Mention this.
+ * src/remove.h (enum rm_interactive): New ternary type.
+ (struct rm_options) [interactive]: Use it, here -- rather than bool.
+ * src/remove.c (prompt): Reflect type change.
+ * src/mv.c (rm_option_init): Initialize to RMI_NEVER now.
+ * src/rm.c (main): Add a FIXME comment for '-d' option.
+ Adapt to type change of rm_options.interactive.
+
+ * tests/rm/i-never: New file. Test for the above fix.
+ * tests/rm/Makefile.am (TESTS): Add i-never.
+
+2007-01-15 Jim Meyering <jim@meyering.net>
+
+ * bootstrap (gnulib_tool): When adding to .cvsignore and .gitignore,
+ emit foo.h, for each foo_.h. This yields one false-positive, fts.h,
+ but that's ok, since fts_.h will eventually be renamed.
+
+ * src/remove.c (remove_dir): Don't use errno in diagnostic.
+ Root-only test failure reported by Alex van Hout and Jon Grosshart in
+ <http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/9415/focus=9415>.
+
+ * bootstrap.conf (avoided_gnulib_modules): Fix my typo:
+ s/--avoid=canonicalize-lgpl/--avoid=canonicalize-gpl/
+
+2007-01-14 Bruno Haible <bruno@clisp.org>
+
+ Enable use of gnulib's new fchdir module.
+ * bootstrap.conf (avoided_gnulib_modules): Avoid canonicalize-lgpl,
+ since we use canonicalize.
+ (gnulib_modules): Add fchdir.
+ * m4/jm-macros.m4 (coreutils_MACROS): Remove fchdir-stub.
+
+2007-01-13 Jim Meyering <jim@meyering.net>
+
+ * Transform all Makefile.am files so that when running "make check",
+ CU_TEST_NAME is set to the name of the test. This is so that when I
+ run valgrind-enabled (--log-file-qualifier=CU_TEST_NAME) "make check"
+ on the entire package it is more convenient to map a leak or error
+ found in a valgrind log file back to the offending test.
+ Use this command:
+ (echo tests/Makefile.am.in; find tests -name Makefile.am) \
+ |xargs perl -pi -e '/^(\s*)PATH=...VG_PATH_PREFIX/ and ' \
+ -e 'print $1,q|CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst |,"\\\n"'
+
+2007-01-11 Jim Meyering <jim@meyering.net>
+
+ Avoid a leak in expr's implementation of the ":" (match) operator.
+ * src/expr.c (docolon): Free the regexp buffer using regfree, rather
+ than doing it manually, being careful to set fastmap to NULL first.
+ Free any re_regs.start and .end members, if necessary.
+
+ * tests/misc/test-diag: Work also when libc's error function
+ reports the entire program name ("../../src/test"), rather than
+ just the final component.
+
+2007-01-10 Jim Meyering <jim@meyering.net>
+
+ Don't use fts_statp uninitialized for "chown -RLh --preserve-root ...".
+ * src/chown-core.c (FTSENT_IS_DIRECTORY): New macro.
+ (change_file_owner): Perform the ROOT_DEV_INO_CHECK only for a
+ directory. Non-directory entries lack fts_statp data when using
+ the FTS_NOSTAT option.
+
+2007-01-07 Jim Meyering <jim@meyering.net>
+
+ * tests/sample-test: Update copyright date to 2007.
+ * Makefile.maint (copyright-check): Also check the copyright date
+ in tests/sample-test.
+
+2007-01-06 Jim Meyering <jim@meyering.net>
+
+ * tests/fmt/basic (pfx-only, pfx-of-pfx): New tests,
+ based on examples from G.P. Halkes in
+ <http://article.gmane.org/gmane.comp.gnu.core-utils.bugs/9388>.
+
+2007-01-06 G.P. Halkes <buscom@ghalkes.nl>
+
+ * src/fmt.c (copy_rest): Correct prefix handling.
+ Don't elide a line with the prefix followed by only white space.
+ (get_line): Move EOF-check to loop-termination condition.
+ * tests/fmt/basic (pfx-1): Adjust test to expect desired result.
+ (pfx-2): Remove test; its premise was contrary to the documentation.
+
+2007-01-05 Jim Meyering <jim@meyering.net>
+
+ Avoid a used-uninitialized bug for invalid input, i.e., when the size
+ of the input, not counting newlines, is 1 % 4.
+ * gl/lib/base64.c (base64_decode): Don't hard-code inlen==4.
+ It may be smaller when flushing.
+
+2007-01-05 Mike Frysinger <vapier@gentoo.org>
+
+ * src/dircolors.hin: Add a TERM directive for cons25.
+
+2007-01-04 Jim Meyering <jim@meyering.net>
+
+ * Makefile.cfg (local-checks-to-skip): Skip strftime-check, in
+ case you don't have convenient access to glibc info documentation.
+
+ Use the release year, not the current year.
+ * src/groups.sh (version): Use a better name: @RELEASE_YEAR@.
+ * src/Makefile.am (RELEASE_YEAR): Define it.
+ (.sh): Use it.
+ Thanks to a prod from Eric Blake.
+
+ Ensure that "group --version" always prints the current year.
+ * src/groups.sh (version): Use @CURRENT_YEAR@, rather than 2006.
+ * src/Makefile.am (.sh): Also substitute for @CURRENT_YEAR@.
+ Suggestion from Eric Blake.
+
+ When decoding, always allow newlines in input, with almost no
+ performance impact.
+ * src/base64.c (do_decode): Initialize decode context.
+ Call base64_decode one more time, after all input is processed.
+ (usage): When decoding, newlines are always accepted.
+
+ * tests/misc/base64: Add a bunch of tests, for the above.
+ * gl/lib/base64.c: Include <string.h>.
+ (base64_decode_ctx_init, get_4, decode_4): New functions.
+ (base64_decode): Efficiently handle interspersed newlines.
+ (base64_decode_alloc): Update signature.
+ * gl/lib/base64.h (struct base64_decode_context): Define.
+ (base64_decode_ctx_init): Add prototype.
+ (base64_decode, base64_decode_alloc): Update prototypes.
+
+ * gl/lib/base64.c: Copied from gnulib.
+ * gl/lib/base64.h: Likewise.
+
+2007-01-03 Jim Meyering <jim@meyering.net>
+
+ * THANKS: Add Evan Hunt.
+
+2007-01-03 Bruno Haible <bruno@clisp.org>
+
+ Avoid spurious test failures on MacOS X 10.3.9, in a German locale.
+ * tests/chown/deref: Apply lang-default.
+ * tests/misc/split-a: Likewise.
+ * tests/mv/reply-no: Likewise.
+
+ * src/copy.c (copy_internal): Use mkfifo as a fallback if mknod fails.
+ Needed on MacOS X.
+
+2007-01-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ Now, "ls -FRL" always follows symbolic links on Linux.
+ * NEWS: Mention this bug fix.
+ * src/ls.c (gobble_file): Fix bug reported by
+ Nobuyuki Tsuchimura in
+ http://lists.gnu.org/archive/html/bug-coreutils/2006-12/msg00152.html
+ where "ls -FRL" didn't follow a symbolic link in some cases on Linux.
+ * tests/ls/follow-slink: Add a test for this case.
+
+2007-01-01 Jim Meyering <jim@meyering.net>
+
+ * tests/rm/fail-eperm: Revert last change. The PATH=... setting
+ is not honored at least on HP-UX 11.23 systems.
+ Instead, simply transform the actual output diagnostic.
+ Test failure reported by Bob Proulx.
+
+2006-12-30 Jim Meyering <jim@meyering.net>
+
+ * bootstrap (gnulib_extra_files): Remove announce-gen.
+ * bootstrap.conf (gnulib_modules): Add it here instead, now that
+ it's a module.
+
+ * tests/misc/base64: Factor a long, repetitive string.
+
+ * src/c99-to-c89.diff: Adjust remove.c offsets.
+
+ Clean up after the change of 2006-12-28.
+ * src/remove.c (AD_pop_and_chdir): Change **DIRP parameter to *DIRP,
+ now that this function never modifies the pointer. Adjust comments
+ and code accordingly.
+ (remove_dir): Set "dirp" to NULL right after AD_pop_and_chdir call,
+ now that AD_pop_and_chdir no longer does that.
+
+ * tests/rm/fail-eperm: Avoid spurious differences (the error function
+ from latest glibc no longer prints the full program_name): so don't
+ invoke rm via ../../src/rm. Instead, invoke it via "PATH=../../src rm".
+
+ * tests/mv/acl (skip): Skip this test also if the destination
+ directory, which is on a different file system, lacks ACL support.
+
+ * src/copy.c (copy_reg): Rewrite a comment that was rendered
+ inaccurate by the 2006-10-18 change.
+
+2006-12-28 Jim Meyering <jim@meyering.net>
+
+ When moving "up" the hierarchy, be careful to remove a just-emptied
+ directory before opening ".", to avoid trouble with file system
+ implementations that cache readdir results at opendir-time.
+ * src/remove.c (AD_pop_and_chdir): Add a file descriptor parameter.
+ Don't update **DIRP. Don't call fdopendir here.
+ (remove_dir): Call fdopendir here instead.
+ Report and patch from Mikulas Patocka:
+ <http://lists.gnu.org/archive/html/bug-coreutils/2006-12/msg00170.html>
+
+2006-12-27 Jim Meyering <jim@meyering.net>
+
+ * src/tail.c (usage): Mention +N for --bytes and --lines.
+ Suggestion from Evan Hunt.
+
+2006-12-26 Jim Meyering <jim@meyering.net>
+
+ * configure.ac: Require autoconf-2.61 and automake-1.10.
+ Without the former (even with autoconf-2.60), "make distcheck"
+ would fail (without the 2006-09-26 autoconf AC_CHECK_DECL fix),
+ due to an inttypes.h generated with CFLAGS including -pedantic.
+ With the old decl check, @HAVE_DECL_STRTOUMAX@ would be 0.
+
+ * Makefile.maint (VC-tag): Define, so as to gpg-sign each release
+ tag, using the release version number as the message.
+ (vc-dist): Use $(VC-tag), rather than "$(VC) tag".
+
+2006-12-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: dd bs= operands now silently override later ibs= and obs=,
+ as POSIX requires.
+ * src/dd.c (scanargs): Implement it.
+ * tests/dd/misc (outbytes): Test it.
+ * doc/coreutils.texi (dd invocation): Specify that bs=N
+ overrides later ibs and obs, undoing part of the
+ previous change. (The behavior was wrong.)
+
+2006-12-20 Jim Meyering <jim@meyering.net>
+
+ "rm -rf /etc/motd" (run by non-root) now prints a diagnostic.
+ * src/remove.c (remove_entry): Handle EACCES for a non-directory, too.
+ Don't let a non-directory get by with errno == EPERM, either.
+ Check the file type directly (using cached stat value), rather
+ than trying to guess it from errno values.
+ Karl Berry reported that a cross-partition "mv /etc/issue ~"
+ failed with the um,... suboptimal diagnostic,
+ "mv: cannot remove `/etc/issue': Not a directory".
+ * tests/rm/Makefile.am (TESTS): Add fail-eacces.
+ * tests/rm/fail-eacces: New file.
+ * NEWS: Mention that both mv and rm are affected.
+
+ "cut -f 2- A B" no longer triggers a double-free bug
+ * src/cut.c (cut_fields): Set file-scoped global to NULL after
+ freeing it. This avoids a double-free (and core dump on some systems)
+ for this usage: "echo 1>a; echo 2>b; cut -f2- a b". Reported by
+ James Hunt in <http://bugzilla.redhat.com/220312>.
+ * NEWS: List this bug fix.
+ * THANKS: Mention him.
+ * tests/misc/cut: New file.
+ * tests/misc/Makefile.am (TESTS): Add cut.
+
+2006-12-15 Jim Meyering <jim@meyering.net>
+
+ * tests/cp/open-perm-race: Correct the gdb-existence check.
+ Don't run either subsequent gdb command in a sub-shell.
+ Reported by Thomas Schwinge.
+ * THANKS: bring up to date.
+
+2006-12-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ Make sure cp -p isn't too generous with file permissions.
+ * tests/cp/Makefile.am (TESTS): Add file-perm-race.
+ * tests/cp/file-perm-race: New file.
+
+ Ensure cp -pR --parents isn't too generous with parent permissions.
+ * tests/cp/Makefile.am (TESTS): Add parent-perm-race.
+ * tests/cp/parent-perm-race: New file.
+
+2006-12-14 Jim Meyering <jim@meyering.net>
+
+ * tests/chgrp/default-no-deref: Don't assume that files are created
+ with the primary group by default. That's not true in a directory
+ with the set-GID bit set.
+
+ Don't hang when there's no input tty.
+ * tests/cp/open-perm-race: Skip this test if there is no
+ controlling input `terminal'.
+
+ Test for a hard-to-detect race fix, using gdb.
+ * tests/cp/open-perm-race: New file, to test for the
+ cp --preserve=ownership fix of 2006-12-06.
+
+ * tests/cp/Makefile.am (TESTS_ENVIRONMENT): Define abs_top_builddir.
+ (TESTS): Add open-perm-race.
+
+ * src/chgrp.c (main): Don't prohibit -RLh, aka -RL with --no-dereference.
+ * src/chown.c (main): Likewise.
+ * src/chown-core.c (change_file_owner): Add to a comment.
+ * tests/chown/preserve-root: Add tests.
+
+ * NEWS: --preserve-root now works with chgrp, chmod, and chown.
+ * src/chmod.c (process_file): Do honor the --preserve-root option.
+ * src/chown-core.c (change_file_owner): Likewise, but here, also
+ handle the case in which a traversal would go "through" a symlink
+ to root. Reported by Matthew M. Boedicker
+ * tests/chown/preserve-root: Test for the above.
+ * tests/chown/Makefile.am (TESTS): Add preserve-root.
+
+ * NEWS: Mention the chmod fix induced by the 2006-12-11 change
+ to gnulib's m4/openat.m4.
+
+2006-12-13 Andreas Schwab <schwab@suse.de>
+
+ Don't fail if mv/acl test succeeds.
+ * tests/mv/acl (skip): Check for acl support in the file system.
+ * tests/mv/Makefile.am (XFAIL_TESTS): Remove.
+ (TESTS_ENVIRONMENT): Pass CONFIG_HEADER.
+
+2006-12-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ Remove some arbitrary restrictions on size fields, so that
+ commands like "sort -k 18446744073709551616" no longer fail merely
+ because 18446744073709551616 doesn't fit in uintmax_t. The trick
+ is that these fields can all be treated as effectively infinity;
+ their exact values don't matter, since no internal buffer can be
+ that long.
+ * src/join.c (string_to_join_field): Verify that SIZE_MAX <=
+ ULONG_MAX if the code assumes this. Silently truncate too-large
+ values to SIZE_MAX, as the remaining code will do the right thing
+ in this case.
+ * src/sort.c (parse_field_count): Likewise.
+ * src/uniq.c (size_opt, main): Likewise.
+ * tests/join/Test.pm (bigfield): New test.
+ * tests/sort/Test.pm (bigfield): New test.
+ * tests/uniq/Test.pm (121): New test.
+
+2006-12-13 Jim Meyering <jim@meyering.net>
+
+ * tests/chgrp/default-no-deref: New test.
+ * tests/chgrp/Makefile.am (TESTS): Add default-no-deref.
+
+2006-12-12 Jim Meyering <jim@meyering.net>
+
+ * src/system.h (SETVBUF): Remove definition, now that the
+ autoconf macro, AC_FUNC_SETVBUF_REVERSED, does nothing.
+ * src/tee.c (tee_files): s/SETVBUF/setvbuf/.
+ * src/od.c (open_next_file): Likewise.
+
+2006-12-09 Jim Meyering <jim@meyering.net>
+
+ * man/Makefile.am (.x.1): Make help2man use $(PACKAGE_STRING) as the
+ "source". I.e. "GNU coreutils 6.7".
+
+ * NEWS: With the change from "-pre" to "-dirty" suffix, also change
+ from NEXT_VER-pre to CUR_VER-dirty. So, this is 6.7-dirty.
+ * configure.ac (AC_INIT): s/6.8-dirty/6.7-dirty/.
+
+ * tests/uniq/Test.pm (test_vector): Skip the pipe-reading test
+ whenever uniq is expected to fail. This should catch the other case
+ [test #112] in which uniq emits "cat: write error: Broken pipe" on
+ some systems.
+
+2006-12-08 Jim Meyering <jim@meyering.net>
+
+ Include bootstrap tool version info in the announcement form.
+ * Makefile.maint (gnulib_snapshot_date): Define.
+ (announcement): Use two new announce-gen options,
+ --bootstrap-tools and --gnulib-snapshot-date.
+ * Makefile.cfg (gnulib_dir): Set.
+
+ Post-release version change.
+ * NEWS: Add a line for 6.8-dirty.
+ * configure.ac (AC_INIT): Set new version string.
+
+2006-12-07 Jim Meyering jim@meyering.net
+
+ Version 6.7.
+ * NEWS: Record release date. Remove '-pre' suffix.
+ * configure.ac (AC_INIT): Remove version string suffix.
+
+2006-12-07 Jim Meyering <jim@meyering.net>
+
+ Make the output of "make check" more reproducible.
+ * tests/touch/empty-file: Use envvar-check, so "make check" doesn't
+ evoke diagnostics like this when COLUMNS=0 in the environment:
+ ls: ignoring invalid width in environment variable COLUMNS: 0
+ * tests/touch/no-rights: Likewise.
+ * tests/help-version: Likewise.
+ * tests/uniq/Test.pm: Don't perform the pipe-reading version of test
+ 118, since it emits "cat: write error: Broken pipe" on some systems.
+
+2006-12-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Document the cp -p fix for special bits.
+ * src/copy.c (set_owner): Now returns a three-way result, so
+ that the caller can clear the special bits. All callers changed.
+ (copy_reg): Don't set the special bits if chown failed.
+ (copy_internal): Likewise.
+ * tests/cp/special-bits: Test this fix.
+
+2006-12-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Document the cp --preserve=ownership fix.
+ * m4/jm-macros.m4 (coreutils_MACROS): Check for fchmod.
+ * src/copy.c (fchmod_or_lchmod): New function.
+ (copy_reg): New arg OMITTED_PERMISSIONS. All uses changed.
+ Omit confusing and unused ", dst_mode" arg to 'open' without O_CREAT.
+ When creating a file, use O_EXCL, so we're more likely to detect
+ funny business by other processes. At the end, if permissions
+ were omitted, chmod them back in.
+ (copy_internal): If the ownership might change, omit some permissions
+ at first, then restore them after chowning the file.
+ * src/cp.c (make_dir_parents_private): Likewise.
+ * src/copy.c (cached_umask): New function.
+ * src/copy.h (cached_umask): New decl.
+
+2006-12-06 Jim Meyering <jim@meyering.net>
+
+ Make the output of "make check" more reproducible.
+ * tests/misc/date-sec: Don't emit any diagnostic about sleeping.
+
+2006-12-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/install.c (install_file_in_file): Preserve time stamps
+ before changing owner or file mode bits, for consistency with
+ other coreutils programs.
+
+2006-12-03 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/date-sec: Output a fixed string.
+
+ * NEWS: du --one-file-system (-x) would skip subdirectories of any
+ directory listed as second or subsequent command line argument.
+ * tests/du/one-file-system: New file. Test for today's fts.c fix.
+ * tests/du/Makefile.am (TESTS): Add one-file-system.
+ Reported by Mike Frysinger.
+
+2006-12-02 Jim Meyering <jim@meyering.net>
+
+ * tests/du/basic: Generate 4KB file simply using printf, rather than
+ seq+head. This avoids a spurious "Broken pipe" diagnostic from seq.
+
+2006-11-28 Jim Meyering <jim@meyering.net>
+
+ * tests/mv/no-target-dir: Detect a buggy rename syscall. If found,
+ skip this test. This happens at least on ia64 linux-2.4.19 w/ext3.
+ Reported by Matthew Woehlke.
+
+ * tests/mv/dir2dir: Also accept EBUSY.
+ Reported by Matthew Woehlke.
+
+2006-11-27 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (patch-check): Rewrite to diagnose failure.
+ * src/c99-to-c89.diff: Adjust shred.c offsets.
+
+2006-11-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ Improve the check for departures from C89, and fix the departures
+ I found.
+ * Makefile.maint (my-distcheck): Also check for C89 compatibility
+ as best we can with GCC.
+ * src/stat.c (PRINTF_OPTION): Omit comma before } in enum
+ declaration; C89 doesn't allow this.
+ * src/dcgen: Don't generate string literals longer than
+ what C89 requires support for.
+ * src/cut.c (usage): Don't use string literals longer than
+ what C89 requires support for.
+ * src/date.c (usage): Likewise.
+ * src/dd.c (usage): Likewise.
+ * src/du.c (usage): Likewise.
+ * src/ls.c (usage): Likewise.
+ * src/od.c (usage): Likewise.
+ * src/readlink.c (usage): Likewise.
+ * src/seq.c (usage): Likewise.
+ * src/shred.c (usage): Likewise.
+
+2006-11-26 Mike Frysinger <vapier@gentoo.org>
+
+ Recognize new archive, audio and image formats.
+ Give audio files a separate color.
+ * src/dircolors.hin: Add comments for common .sh and .csh scripts.
+ Add .bz2, .tbz2, .tz, .rar, .ace, .zoo, .cpio, .7z, .rz as archive
+ suffixes. Add .mng, .pcx, .m2v, .mkv, .ogm, .mp4, .m4v, .mp4v, .vob,
+ .qt, .nuv, .wmv, .asf, .rm, .rmvb, .flc, .yuv as image formats.
+ Add .aac, .au, .mid, .midi, .mka, .ra as audio suffixes. Change
+ audio color to 00;36 to differentiate from image/video color.
+
+2006-11-26 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (patch-check): Compile patched sources with
+ CFLAGS='-Wdeclaration-after-statement -Werror', to ensure that
+ no violations remain.
+
+ * src/c99-to-c89.diff: Remove 3 bogus hunks.
+
+ * src/remove.c (fd_to_subdirp): Remove unused parameter, ds.
+ Update callers.
+
+ * src/c99-to-c89.diff: Adjust for changes in rm.c and in remove.c.
+
+ * src/rm.c (main): Remove unnecessary (assuming C99) braces.
+
+2006-11-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port parts of the code to C89 to minimize the need for c99-to-c89.diff,
+ while trying to retain the readability of C99 as much as possible.
+ * src/remove.c (rm_1): Remove decl of local, fd_cwd.
+ Replace each of two uses with literal AT_FDCWD.
+ (cache_stat_init): Return its argument, for convenience.
+ Update the caller in remove_dir.
+ (AD_pop_and_chdir): Return prev_dir rather than storing through
+ a pointer argument. All uses changed.
+ (AD_ensure_initialized): New function.
+ (AD_mark_helper): Use it, to avoid the need for declaration
+ after statement.
+ (rm): Move cycle_check_init call into callee...
+ (rm_1): ...here.
+ Use an else clause in place of a "continue" statement.
+ (close_preserve_errno): Remove.
+ (fd_to_subdirp): Rewrite to avoid the need for decl after statement.
+
+2006-11-25 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (EXTRA_DIST): Remove announce-gen from here, too.
+
+2006-11-24 Theodoros V. Kalamatianos <thkala@softlab.ece.ntua.gr> (tiny change)
+
+ * tests/du/inacc-dest: Skip this test when running as root.
+
+2006-11-23 Jim Meyering <jim@meyering.net>
+
+ * announce-gen: Remove file. It's moving to gnulib.
+ * bootstrap: Pull it from gnulib/build-aux instead.
+ * Makefile.maint (announcement): Reflect move to ./build-aux.
+
+ * tests/du/deref-args: Use "printf %65536s x" to create a 64KB file,
+ rather than a pipeline that would sometimes evoke a diagnostic
+ like "seq: write error: Broken pipe".
+
+ * tests/help-version: Suppress dd transfer rate output.
+
+ * configure.ac (AC_INIT): Bump to 6.7-pre, not 6.6-pre.
+
+2006-11-22 Jim Meyering <jim@meyering.net>
+
+ * announce-gen (print_news_deltas): Fix silly, but harmless typo:
+ change "(:?..." to "(?:..." in regexps.
+
+ Post-release version change.
+ * NEWS: Add a line for 6.7-pre.
+ * configure.ac (AC_INIT): Bump to 6.7 and add "-pre" suffix.
+
+ Version 6.6.
+ * NEWS: Record release date. Remove "-pre" suffix.
+ * configure.ac (AC_INIT): Remove "-pre" suffix from version string.
+
+ * announce-gen: Remove unused --release-archive-directory option.
+ (print_news_deltas): Accept new adjective, "Noteworthy", in addition
+ to the old "Major".
+ Match version numbers in NEWS using tighter regular expressions.
+ (main): Require the --gpg-key-id=ID option.
+ * Makefile.maint (announcement): Don't use now-removed
+ --release-archive-directory=... option.
+
+ * NEWS: Mention the three noteworthy changes, all fixed via gnulib.
+
+2006-11-21 Jim Meyering <jim@meyering.net>
+
+ * tests/rm/one-file-system: Upon setup failure (e.g., mount failure),
+ skip the test rather than failing. Reported by Michael Deutschmann.
+
+ * tests/rm/fail-eperm: Use the "(exit N); exit N" idiom,
+ rather than just "exit N".
+
+ Arrange for "make check-root" to run the new root-only test.
+ * tests/Makefile.am (t7): New target, to run tests/ls/nameless-uid.
+ (all_t): Add t7.
+
+2006-11-20 Jim Meyering <jim@meyering.net>
+
+ Add a root-only test for today's lib/idcache.c fix.
+ * tests/ls/nameless-uid: New file.
+ * tests/ls/Makefile.am (TESTS): Add nameless-uid.
+ (TESTS_ENVIRONMENT): Add PERL to the list.
+
+2006-11-19 Jim Meyering <jim@meyering.net>
+
+ * tests/tail-2/assert-2: Mark as a very-expensive test, because I
+ find the 7-second sleep annoyingly long. Besides, this test is
+ probably far too specific and timing sensitive ever to trigger again.
+ * tests/tail-2/assert: Likewise.
+
+ Post-release version change.
+ * NEWS: Add a line for 6.6-pre.
+ * configure.ac (AC_INIT): Bump to 6.6 and add "-pre" suffix.
+
+ Version 6.5.
+ * NEWS: Record release date. Remove "-cvs" suffix.
+ * configure.ac (AC_INIT): Remove "-cvs" suffix from version string.
+
+2006-11-18 Jim Meyering <jim@meyering.net>
+
+ "ln --backup f f" produces a misleading diagnostic:
+ ln: creating hard link `f' => `f': No such file or directory
+ * src/ln.c (do_link): Give a better diagnostic in this unusual case.
+ (do_link): Rename local: s/lstat_ok/dest_lstat_ok/.
+ * tests/ln/Makefile.am (TESTS): Add hard-backup.
+ * tests/ln/hard-backup: New test for the above.
+ * NEWS: Mention this fix.
+
+2006-11-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * bootstrap.conf (gnulib_modules): Add sys_stat, since we use it
+ directly too.
+ * lib/.cvsignore, lib/.gitignore: Add root-dev-ino.c, root-dev-ino.h.
+ * m4/.cvsignore, m4/.gitignore: Add root-dev-ino.m4.
+ * src/ls.c (DIRED_FPUTS_LITERAL, PUSH_CURRENT_DIRED_POS):
+ Omit unnecessary parenthesization of args.
+ * src/od.c (EQUAL_BLOCKS): Likewise.
+ * src/system.h (STREQ, ASSIGN_STRDUPA): Likewise.
+
+2006-11-16 Jim Meyering <jim@meyering.net>
+
+ * tests/tail-2/append-only: If chattr +a fails, exit 77 (to tell
+ automake we're skipping this test), and give a diagnostic to tell
+ the user the same thing. Reported by Mike Grayson.
+
+2006-11-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * man/Makefile.am (dist_man_MANS): Replace all optional manpages
+ with `$(MAN)', computed at configure time; also, list them ...
+ (optional_mans): ... in this new variable.
+ (max_aux, EXTRA_DIST): Ensure that we distribute all manpages.
+
+2006-11-16 Jim Meyering <jim@meyering.net>
+
+ Help valgrind see that there is no leak in dd.c.
+ * src/dd.c (dd_copy): Declare real_buf and real_obuf to be static,
+ so we need not free them at all. This is easier than freeing
+ both buffers at each of the early "return"s.
+
+ * src/csplit.c (load_buffer): Plug an inconsequential leak.
+
+2006-11-15 Jim Meyering <jim@meyering.net>
+
+ * .x-po-check: Exclude gl/ files. Otherwise, po-check would
+ complain that some of gl/lib/*.[ch] are not listed in POTFILES.in.
+
+2006-11-14 Jim Meyering <jim@meyering.net>
+
+ * gl/m4/root-dev-ino.m4: Now that this is part of a real "module",
+ remove the now-unnecessary use of AC_LIBSOURCES.
+
+ Adapt to new version of gnulib-tool.
+ * gl/modules/root-dev-ino: New file.
+ * lib/root-dev-ino.c, lib/root-dev-ino.h: Move these files ...
+ * gl/lib/root-dev-ino.c, gl/lib/root-dev-ino.h: ... to here.
+ * m4/root-dev-ino.m4: Move this file ...
+ * gl/m4/root-dev-ino.m4: ... to here.
+
+ * bootstrap.conf (gnulib_modules): Add root-dev-ino.
+
+2006-11-13 Jim Meyering <jim@meyering.net>
+
+ * src/sort.c (insertkey): Use xmemdup, rather than xmalloc+assignment.
+ From Paul Eggert.
+
+ Plug another technically-unimportant leak in sort.
+ * src/sort.c (main): Don't allocate memory for each new key here.
+ (insertkey): Allocate memory for each key here, instead.
+ (key_init): Rename from new_key. Don't allocate.
+
+ * src/sort.c (main): Plug a tiny memory leak.
+ Move declaration of local "minus" down to be nearer point of use.
+
+2006-11-12 Jim Meyering <jim@meyering.net>
+
+ du would exit early, when encountering an inaccessible directory
+ Reported by Mike Frysinger, in
+ http://article.gmane.org/gmane.comp.gnu.core-utils.bugs/8831
+ * tests/du/inacc-dest: New test, based on an example from Mike Frysinger.
+ * tests/chgrp/no-x: Remove the "fts_read failed: ..."
+ diagnostic from the expected output when using native fdopendir.
+ * tests/chmod/no-x: Likewise.
+ * tests/du/no-x: Likewise.
+ * NEWS: Mention this bug fix.
+ * tests/du/Makefile.am (TESTS): Add inacc-dest.
+
+ * Makefile.maint (sc_cast_of_x_alloc_return_value): Add an exclusion
+ for xalloc.h itself.
+
+ Avoid false-positive when testing via valgrind.
+ * tests/mv/atomic: Grep strace output for a more specific pattern
+ than just "unlink", since that got a false positive when testing
+ under valgrind: unlink("/tmp/valgrind_proc_9657_cmdline_A51E9991") = 0
+ * tests/mv/Makefile.am (TESTS_ENVIRONMENT): Define EGREP.
+
+2006-10-28 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (patch-check): Make it easier to regenerate
+ the src/c99-to-c89.diff file. E.g., I do this:
+ make patch-check REGEN_PATCH=1; ediff src/c99-to-c89.diff new-diff
+
+ * src/c99-to-c89.diff: Update to reflect new offsets in rm.c.
+
+2006-10-26 Jim Meyering <jim@meyering.net>
+
+ * src/system.h (ftello): Add a compile-time check for the highly
+ unlikely condition of off_t narrower than long int, rather than
+ handling it at run time. Based on a patch from Paul Eggert.
+
+2006-10-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/chmod/c-option: When double-quoting part of a word, prefer
+ to double-quote the whole word. This is a bit easier to read (at
+ least for me), and in some cases it avoids a shell bug with Tru64
+ 4.0 sh reported by Nelson H. F. Beebe. For example, instead of
+ "$abs_srcdir"/../setgid-check we now write
+ "$abs_srcdir/../setgid-check".
+ * tests/cp/cp-parents: Likewise.
+ * tests/du/inaccessible-cwd: Likewise.
+ * tests/du/long-from-unreadable: Likewise.
+ * tests/install/basic-1: Likewise.
+ * tests/install/trap: Likewise.
+ * tests/misc/close-stdout: Likewise.
+ * tests/mkdir/concurrent-1: Likewise.
+ * tests/mkdir/p-1: Likewise.
+ * tests/mkdir/p-3: Likewise.
+ * tests/mkdir/parents: Likewise.
+ * tests/mkdir/perm: Likewise.
+ * tests/readlink/can-e: Likewise.
+ * tests/readlink/can-f: Likewise.
+ * tests/readlink/can-m: Likewise.
+ * tests/rm/inaccessible: Likewise.
+ * tests/rm/unread3: Likewise.
+ * tests/touch/no-create-missing: Likewise.
+
+ * lib/.cvsignore: Add uinttostr.c.
+
+2006-10-25 Jim Meyering <jim@meyering.net>
+
+ Portability to Tru64 V4.0.
+ * src/system.h (ftello) [!HAVE_FSEEKO && !defined ftello]:
+ Define inline replacement function.
+ This (along with a yesterday's fix for autoconf's
+ _AC_SYS_LARGEFILE_MACRO_VALUE macro) makes it so coreutils
+ now builds once more on Tru64 V4.0. Reported by Nelson Beebe.
+
+2006-10-25 Bruno Haible <bruno@clisp.org>
+
+ * src/cat.c (infile): Add "const" to declaration.
+ * src/csplit.c (prefix): Likewise.
+ * src/printf.c (cfcc_msg): Likewise.
+ * src/tail.c (valid_file_spec): Likewise.
+ * src/cut.c (cut_file): Likewise, for a parameter.
+ * src/expr.c (str_value): Likewise.
+ * src/fold.c (fold_file): Likewise.
+ * src/pr.c (init_header): Likewise.
+ * src/dircolors.c (dc_parse_stream): Likewise, for a local.
+ * src/tr.c (make_printable_str): Likewise.
+ * src/nl.c (body_type, header_type, footer_type, current_type):
+ (separator_str, build_type_arg, nl_file): Likewise, for many.
+ * src/paste.c (main): Don't assign a read-only string to 'optarg'.
+ * src/tac.c (separator, tac_seekable, copy_to_temp): Likewise.
+
+2006-10-25 Jim Meyering <jim@meyering.net>
+
+ * tests/sample-test: Update copyright year list to include only
+ the current year, since this is what I'll want in any new test.
+
+2006-10-24 Jim Meyering <jim@meyering.net>
+
+ * src/c99-to-c89.diff: Update to reflect new offsets.
+
+ * NEWS: new feature: rm accepts new option: --one-file-system
+ Suggested by Steve McIntyre in <http://bugs.debian.org/392925>.
+ * src/remove.h (struct rm_options) [one_file_system]: New member.
+ * src/rm.c (rm_option_init): Initialize it.
+ (usage): Document the option.
+ * src/mv.c (rm_option_init): Likewise.
+ * src/remove.c (remove_dir): With --one-file-system and --recursive,
+ for each directory command line argument, do not affect a file system
+ different from that of the starting directory. And give a diagnostic.
+ * src/rm.c (ONE_FILE_SYSTEM): New enum.
+ (main): Handle new option.
+ * tests/rm/one-file-system: Test the above.
+ * tests/rm/Makefile.am (TESTS): Add one-file-system.
+ * tests/Makefile.am (check-root): Add the rm/one-file-system
+ test to the list.
+ (EXTRA_DIST): Add other-fs-tmpdir.
+
+ * tests/mv/setup: Removed. Renamed to...
+ * tests/other-fs-tmpdir: ...this new file.
+ * tests/mv/Makefile.am (EXTRA_DIST): Remove setup.
+ * tests/mv/acl: Reflect renaming: use ../other-fs-tmpdir.
+ * tests/mv/backup-is-src: Likewise.
+ * tests/mv/hard-link-1: Likewise.
+ * tests/mv/leak-fd: Likewise.
+ * tests/mv/mv-special-1: Likewise.
+ * tests/mv/part-fail: Likewise.
+ * tests/mv/part-hardlink: Likewise.
+ * tests/mv/part-rename: Likewise.
+ * tests/mv/part-symlink: Likewise.
+ * tests/mv/partition-perm: Likewise.
+ * tests/mv/to-symlink: Likewise.
+ * tests/mv/into-self-2: Likewise.
+
+ Don't let a failure in one test stop "make -k" from running the others.
+ * tests/Makefile.am (t1 t2 t3 t4 t5): New targets.
+ (check-root): Depend on them, rather than executing the five
+ commands in a single rule. Reported by Greg Schafer.
+
+2006-10-23 Bob Proulx <bob@proulx.com> (tiny change)
+
+ * Makefile.maint (alpha beta major): Use a better log message for
+ the automatic commit of .prev-version.
+
+2006-10-23 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/pwd-long: Undo last change, since it made Perl invoke
+ pwd via a shell. Instead, ensure that the absolute name of the
+ pwd binary consists solely of reasonable characters.
+ Whoops. Don't exec the perl script. Otherwise, the sh-trap-based
+ clean-up code isn't run.
+
+ * NEWS: Add a line for 6.5-cvs.
+ * configure.ac (AC_INIT): Bump to 6.5 and add "-cvs" suffix.
+
+2006-10-22 Jim Meyering <jim@meyering.net>
+
+ Version 6.4.
+
+ * NEWS: Record the 6.4 release date.
+ * configure.ac (AC_INIT): Remove "-cvs" suffix from version string.
+
+ * Makefile.maint: Complete the adaptation to function with a working
+ directory that is using git (rather than cvs) for version control.
+
+2006-10-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * tests/chmod/c-option: Double-quote instances of `$abs_srcdir'.
+ * tests/cp/cp-parents: Likewise.
+ * tests/mkdir/parents: Likewise.
+ * tests/mkdir/perm: Likewise.
+
+ * tests/sample-test: Quote variables containing absolute build
+ tree paths. In the cleanup trap, make sure `cd' succeeds before
+ `chmod'ing and `rm'ing the temporary files.
+ * tests/chgrp/basic: Likewise.
+ * tests/chgrp/deref: Likewise.
+ * tests/chgrp/no-x: Likewise.
+ * tests/chgrp/posix-H: Likewise.
+ * tests/chgrp/recurse: Likewise.
+ * tests/chmod/c-option: Likewise.
+ * tests/chmod/equal-x: Likewise.
+ * tests/chmod/equals: Likewise.
+ * tests/chmod/inaccessible: Likewise.
+ * tests/chmod/no-x: Likewise.
+ * tests/chmod/octal: Likewise.
+ * tests/chmod/setgid: Likewise.
+ * tests/chmod/umask-x: Likewise.
+ * tests/chmod/usage: Likewise.
+ * tests/chown/basic: Likewise.
+ * tests/chown/deref: Likewise.
+ * tests/chown/separator: Likewise.
+ * tests/cp/acl: Likewise.
+ * tests/cp/backup-1: Likewise.
+ * tests/cp/backup-dir: Likewise.
+ * tests/cp/backup-is-src: Likewise.
+ * tests/cp/cp-HL: Likewise.
+ * tests/cp/cp-deref: Likewise.
+ * tests/cp/cp-i: Likewise.
+ * tests/cp/cp-mv-backup: Likewise.
+ * tests/cp/cp-parents: Likewise.
+ * tests/cp/deref-slink: Likewise.
+ * tests/cp/dir-rm-dest: Likewise.
+ * tests/cp/dir-slash: Likewise.
+ * tests/cp/dir-vs-file: Likewise.
+ * tests/cp/fail-perm: Likewise.
+ * tests/cp/into-self: Likewise.
+ * tests/cp/link: Likewise.
+ * tests/cp/link-no-deref: Likewise.
+ * tests/cp/link-preserve: Likewise.
+ * tests/cp/no-deref-link1: Likewise.
+ * tests/cp/no-deref-link2: Likewise.
+ * tests/cp/no-deref-link3: Likewise.
+ * tests/cp/perm: Likewise.
+ * tests/cp/preserve-2: Likewise.
+ * tests/cp/r-vs-symlink: Likewise.
+ * tests/cp/same-file: Likewise.
+ * tests/cp/slink-2-slink: Likewise.
+ * tests/cp/sparse: Likewise.
+ * tests/cp/special-bits: Likewise.
+ * tests/cp/src-base-dot: Likewise.
+ * tests/cp/symlink-slash: Likewise.
+ * tests/dd/not-rewound: Likewise.
+ * tests/dd/skip-seek2: Likewise.
+ * tests/dd/unblock-sync: Likewise.
+ * tests/du/2g: Likewise.
+ * tests/du/8gb: Likewise.
+ * tests/du/basic: Likewise.
+ * tests/du/deref: Likewise.
+ * tests/du/deref-args: Likewise.
+ * tests/du/exclude: Likewise.
+ * tests/du/fd-leak: Likewise.
+ * tests/du/hard-link: Likewise.
+ * tests/du/inaccessible-cwd: Likewise.
+ * tests/du/long-from-unreadable: Likewise.
+ * tests/du/long-sloop: Likewise.
+ * tests/du/no-deref: Likewise.
+ * tests/du/no-x: Likewise.
+ * tests/du/restore-wd: Likewise.
+ * tests/du/slash: Likewise.
+ * tests/du/slink: Likewise.
+ * tests/du/trailing-slash: Likewise.
+ * tests/du/two-args: Likewise.
+ * tests/fmt/long-line: Likewise.
+ * tests/install/basic-1: Likewise.
+ * tests/install/create-leading: Likewise.
+ * tests/install/d-slashdot: Likewise.
+ * tests/install/trap: Likewise.
+ * tests/ln/misc: Likewise.
+ * tests/ln/target-1: Likewise.
+ * tests/ls/color-dtype-dir: Likewise.
+ * tests/ls/dangle: Likewise.
+ * tests/ls/dired: Likewise.
+ * tests/ls/file-type: Likewise.
+ * tests/ls/follow-slink: Likewise.
+ * tests/ls/infloop: Likewise.
+ * tests/ls/inode: Likewise.
+ * tests/ls/m-option: Likewise.
+ * tests/ls/no-arg: Likewise.
+ * tests/ls/recursive: Likewise.
+ * tests/ls/rt-1: Likewise.
+ * tests/ls/stat-dtype: Likewise.
+ * tests/ls/stat-failed: Likewise.
+ * tests/ls/stat-vs-dirent: Likewise.
+ * tests/misc/cat-proc: Likewise.
+ * tests/misc/close-stdout: Likewise.
+ * tests/misc/csplit: Likewise.
+ * tests/misc/date-sec: Likewise.
+ * tests/misc/false-status: Likewise.
+ * tests/misc/head-c: Likewise.
+ * tests/misc/head-pos: Likewise.
+ * tests/misc/mknod: Likewise.
+ * tests/misc/nl: Likewise.
+ * tests/misc/nohup: Likewise.
+ * tests/misc/pathchk1: Likewise.
+ * tests/misc/printf: Likewise.
+ * tests/misc/printf-hex: Likewise.
+ * tests/misc/pwd-long: Likewise.
+ * tests/misc/shuf: Likewise.
+ * tests/misc/sort-rand: Likewise.
+ * tests/misc/split-a: Likewise.
+ * tests/misc/split-fail: Likewise.
+ * tests/misc/split-l: Likewise.
+ * tests/misc/stat-fmt: Likewise.
+ * tests/misc/tac-continue: Likewise.
+ * tests/misc/wc-files0: Likewise.
+ * tests/mkdir/concurrent-1: Likewise.
+ * tests/mkdir/p-1: Likewise.
+ * tests/mkdir/p-2: Likewise.
+ * tests/mkdir/p-3: Likewise.
+ * tests/mkdir/p-slashdot: Likewise.
+ * tests/mkdir/p-thru-slink: Likewise.
+ * tests/mkdir/p-v: Likewise.
+ * tests/mkdir/parents: Likewise.
+ * tests/mkdir/perm: Likewise.
+ * tests/mkdir/t-slash: Likewise.
+ * tests/mv/acl: Likewise.
+ * tests/mv/atomic: Likewise.
+ * tests/mv/backup-dir: Likewise.
+ * tests/mv/childproof: Likewise.
+ * tests/mv/diag: Likewise.
+ * tests/mv/dir-file: Likewise.
+ * tests/mv/dir2dir: Likewise.
+ * tests/mv/dup-source: Likewise.
+ * tests/mv/hard-2: Likewise.
+ * tests/mv/hard-3: Likewise.
+ * tests/mv/hard-4: Likewise.
+ * tests/mv/hard-link-1: Likewise.
+ * tests/mv/hard-verbose: Likewise.
+ * tests/mv/i-2: Likewise.
+ * tests/mv/i-3: Likewise.
+ * tests/mv/i-4: Likewise.
+ * tests/mv/i-5: Likewise.
+ * tests/mv/i-link-no: Likewise.
+ * tests/mv/into-self-4: Likewise.
+ * tests/mv/leak-fd: Likewise.
+ * tests/mv/mv-special-1: Likewise.
+ * tests/mv/no-target-dir: Likewise.
+ * tests/mv/part-fail: Likewise.
+ * tests/mv/part-hardlink: Likewise.
+ * tests/mv/part-rename: Likewise.
+ * tests/mv/part-symlink: Likewise.
+ * tests/mv/partition-perm: Likewise.
+ * tests/mv/perm-1: Likewise.
+ * tests/mv/reply-no: Likewise.
+ * tests/mv/trailing-slash: Likewise.
+ * tests/mv/update: Likewise.
+ * tests/od/od-N: Likewise.
+ * tests/od/x8: Likewise.
+ * tests/readlink/can-e: Likewise.
+ * tests/readlink/can-f: Likewise.
+ * tests/readlink/can-m: Likewise.
+ * tests/readlink/rl-1: Likewise.
+ * tests/rm/cycle: Likewise.
+ * tests/rm/dangling-symlink: Likewise.
+ * tests/rm/deep-1: Likewise.
+ * tests/rm/dir-no-w: Likewise.
+ * tests/rm/dir-nonrecur: Likewise.
+ * tests/rm/dot-rel: Likewise.
+ * tests/rm/empty-inacc: Likewise.
+ * tests/rm/f-1: Likewise.
+ * tests/rm/fail-2eperm: Likewise.
+ * tests/rm/hash: Likewise.
+ * tests/rm/i-1: Likewise.
+ * tests/rm/i-no-r: Likewise.
+ * tests/rm/ignorable: Likewise.
+ * tests/rm/inaccessible: Likewise.
+ * tests/rm/interactive-always: Likewise.
+ * tests/rm/interactive-once: Likewise.
+ * tests/rm/ir-1: Likewise.
+ * tests/rm/isatty: Likewise.
+ * tests/rm/no-give-up: Likewise.
+ * tests/rm/r-1: Likewise.
+ * tests/rm/r-2: Likewise.
+ * tests/rm/r-3: Likewise.
+ * tests/rm/r-4: Likewise.
+ * tests/rm/readdir-bug: Likewise.
+ * tests/rm/rm1: Likewise.
+ * tests/rm/rm2: Likewise.
+ * tests/rm/rm3: Likewise.
+ * tests/rm/rm4: Likewise.
+ * tests/rm/rm5: Likewise.
+ * tests/rm/sunos-1: Likewise.
+ * tests/rm/unread2: Likewise.
+ * tests/rm/unread3: Likewise.
+ * tests/rmdir/fail-perm: Likewise.
+ * tests/rmdir/t-slash: Likewise.
+ * tests/shred/exact: Likewise.
+ * tests/shred/remove: Likewise.
+ * tests/sum/sysv: Likewise.
+ * tests/tail-2/append-only: Likewise.
+ * tests/tail-2/assert: Likewise.
+ * tests/tail-2/assert-2: Likewise.
+ * tests/tail-2/big-4gb: Likewise.
+ * tests/tail-2/fflush: Likewise.
+ * tests/tail-2/infloop-1: Likewise.
+ * tests/tail-2/proc-ksyms: Likewise.
+ * tests/tail-2/start-middle: Likewise.
+ * tests/tail-2/tail-n0f: Likewise.
+ * tests/tee/basic: Likewise.
+ * tests/tee/dash: Likewise.
+ * tests/touch/fail-diag: Likewise.
+ * tests/touch/no-create-missing: Likewise.
+ * tests/touch/not-owner: Likewise.
+ * tests/touch/obsolescent: Likewise.
+ * tests/touch/read-only: Likewise.
+ * tests/touch/relative: Likewise.
+
+2006-10-21 Jim Meyering <jim@meyering.net>
+
+ * NEWS: (cp --backup fix): Fix a typo.
+
+ * .gitignore: Remove some references to files in subdirectories.
+ * build-aux/.gitignore, doc/.gitignore, lib/.gitignore: New files.
+ * m4/.gitignore, po/.gitignore, src/.gitignore: Likewise.
+
+ * src/copy.c (copy_internal): Add a comment saying why we prefer
+ mknod over mkfifo.
+
+ Enable an fts optimization (call lstat only for directories,
+ on some file system types) also with the --preserve-root option
+ of chown or chgrp.
+ * src/chown-core.c (change_file_owner): Compare fts_statp-based
+ dev/ino against root dev/ino only for directories.
+ (chown_files): Don't let the root_dev_ino setting influence whether
+ we use FTS_NOSTAT: fts always sets *fts_statp for a directory.
+
+2006-10-20 Jim Meyering <jim@meyering.net>
+
+ * src/od.c (usage): Change description of default to use "-w16",
+ not the now-invalid "-w 16" syntax. From Dan Jacobson.
+
+2006-10-19 Jim Meyering <jim@meyering.net>
+
+ * bootstrap: Add names to each .gitignore file (if it exists)
+ as well as to .cvsignore.
+
+ * Makefile.maint (po-check): This rule didn't detect the new use
+ of "gettext" (as opposed to the use of "_" everywhere else) in
+ lib/xstrtol.h. Adjust the grep regexp so that now it does.
+
+2006-10-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/copy.c (copy_reg): Rewrite slightly to avoid duplicate code
+ when opening dst_name.
+ (copy_reg, copy_internal): Use (SYSCALL != 0) rather than plain
+ (SYSCALL) to test for failure in a system call.
+
+ * src/copy.c (copy_internal): Use mknod rather than mkfifo to copy
+ a fifo. This preserves the special mode bits on Solaris 10, which
+ is compatible with what Solaris 10 cp -R does.
+
+ * src/copy.c (copy_internal): Remove redundant and confusing local
+ variable src_type.
+
+ * src/copy.c (copy_internal): Don't pass mkdir a mode greater than
+ 7777. This matches historical 'cp' behavior and avoids some
+ (though not all) implementation-defined behavior of mkdir.
+ * src/cp.c (make_dir_parents_private): Likewise.
+ * src/copy.c (copy_internal): Don't pass 'open' a mode greater
+ than 777. This is required by POSIX. It doesn't make any difference
+ in actual behavior on any host that I know of.
+
+2006-10-17 Jim Meyering <jim@meyering.net>
+
+ * src/dd.c (usage): Use two spaces (not one) to separate the
+ "fdatasync" option string from its description, so help2man formats
+ the derived man page properly. Reported by Samuel Thibault
+ in <http://bugs.debian.org/393649>.
+
+2006-10-16 Jim Meyering <jim@meyering.net>
+
+ * .x-sc_trailing_blank: Remove names of files that are no longer
+ version-controlled.
+
+2006-10-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/groups.sh (version): Reword message to match the other programs.
+ Problem reported by Eric Blake.
+
+2006-10-14 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (headers_with_interesting_macro_defs): Define.
+ (.re-defmac, sc_always_defined_macros): New rules.
+
+ * src/system.h (EXIT_FAILURE, EXIT_SUCCESS): Remove definitions.
+ Instead, include "exit.h". This hereby retires the work-around for
+ "Sony NEWS-OS Release 4.0C"'s bug due to "#define EXIT_FAILURE 0".
+
+ * src/cksum.c (uint_fast32_t): Don't define.
+ Instead, include <stdint.h>.
+
+ * src/pinky.c (S_IWGRP): Don't define.
+ It's already defined by "stat-macros.h" (included via system.h).
+
+ * Makefile.cfg: Remove cruft that's now handled via bootstrap.
+ * Makefile.maint: Likewise, remove these targets/rules/variables:
+ (local_updates, update, cvs-update, wget_files, get-targets): Remove.
+ (cvs_files, wget-update, automake_repo): Likewise.
+ Move the comment about cvsu to build-aux/vc-list-files,
+ where cvsu is actually used.
+
+ * Makefile.maint (cvs-update): Use $(CVS), not "cvs".
+
+ Work also when the working directory (with e.g. coreutils sources)
+ is version controlled with git, rather than CVS.
+ * bootstrap (CVS_only_file): Test for the existence of README-cvs,
+ rather than CVS.
+ In messages and comments, say e.g., "checked-out sources",
+ rather than "CVS sources".
+ (version_controlled_file): New function. Work for git as well as
+ for CVS. Don't use grep's -q option.
+ (slurp): Call it here, in place of CVS-specific code.
+
+ * NEWS: cp -r --backup dir1 dir2, would rename an existing dir1/dir2
+ to dir1/dir2~.
+ * src/copy.c (copy_internal): Although we do create a backup of each
+ destination directory when in move mode, don't do that when copying.
+ Reported by Peter Breitenlohner, in
+ <http://article.gmane.org/gmane.comp.gnu.core-utils.bugs/8616>.
+ * tests/cp/backup-dir: New file. Test for the above.
+ * tests/cp/Makefile.am (TESTS): Add backup-dir.
+
+2006-10-13 Jim Meyering <jim@meyering.net>
+
+ More chown/chgrp dereferencing-related fixes.
+ * src/chown-core.c (change_file_owner): Don't use fts_statp if
+ we're dereferencing symlinks.
+ Reverse conjuncts, so that we use dereference file_stats
+ (aka ent->fts_statp) only *after* we've confirmed that
+ chopt->affect_symlink_referent is true. Otherwise, we might
+ use ent->fts_statp uninitialized.
+ Don't turn on FTS_NOSTAT when dereferencing symlinks.
+ * tests/chown/deref: Update the expected diagnostic, now that
+ this test case (trying to use "chown --dereference ..." on a
+ dangling symlink) takes a different code path.
+
+2006-10-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ Sync from Bison, as follows:
+
+ 2006-10-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix problems with translating English-language diagnostics.
+ * bootstrap: Fix bug introduced in recent bootstrap changes, with
+ respect to bison-runtime pot generation. The YY_ stuff
+ wasn't being captured.
+
+2006-10-13 Jim Meyering <jim@meyering.net>
+
+ * src/chown-core.c (change_file_owner): Use fstatat, not stat,
+ now that we're using fts_open with FTS_CWDFD.
+ * tests/chgrp/posix-H: Add --preserve-root to an invocation of
+ chgrp, to exercise the above fix.
+ * NEWS: Mention the above.
+
+ * src/du-tests: Clean up a little, though it's still not portable.
+
+ * .vg-suppressions: Add 3 more for debian unstable.
+
+ * tests/ls/Test.pm: Remove long-unused file.
+ * Makefile.am (EXTRA_DIST): Add bootstrap.conf.
+ Suggestions from Bruno Haible.
+
+2006-10-12 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * Makefile.am (THANKS-to-translators): Add missing $(srcdir).
+ (MAINTAINERCLEANFILES): Add .kludge-stamp.
+ * man/Makefile.am (MAINTAINERCLEANFILES): Typo $(dist_man_MANS)
+ instead of $(man_MANS).
+
+2006-10-12 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * configure.ac: Avoid compiler warnings about default return
+ type in function definitions and unused variables in tests.
+ * src/who.c (print_user) [HAVE_UT_HOST]: hostlen is only needed
+ if this is #defined.
+
+2006-10-12 Jim Meyering <jim@meyering.net>
+
+ * configure.ac: Reflect s/gl_MACROS/coreutils_MACROS/ renaming.
+ Call gl_INIT directly, rather than through the above.
+
+2006-10-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * bootstrap (symlink_to_gnulib): Fix bug: the dot_dots shell
+ variable was sometimes used without being initialized. This
+ messed up the installation of the INSTALL file in some cases.
+
+2006-10-11 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c (usage): Correct description of -s, --size.
+ It works even without -l. Suggestion from Karl Berry.
+
+2006-10-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/ls.c (quote_name): Use initializer rather than memset to
+ initialize an object to zero. This is easier to read and is less
+ likely to introduce a runtime error due to a mixup. It causes
+ gcc -W to issue a warning, but you can work around this by
+ appending -Wno-missing-field-initializers.
+ * src/pathchk.c (portable_chars_only): Likewise.
+ * src/shred.c (main): Likewise.
+ * src/stty.c (main): Likewise.
+ * src/tr.c (card_of_complement): Likewise.
+ * src/wc.c (wc): Likewise.
+
+2006-10-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/sort.c (usage): Mention again that sort fields are origin 1.
+
+ * NEWS: Fix typo: iso-8602 -> iso-8601. Problem reported by
+ Bob Proulx.
+
+ * bootstrap (usage, main program, symlink_to_gnulib): Add option
+ --copy. Inspired by a suggestion from Bruno Haible.
+
+2006-10-09 Jim Meyering <jim@meyering.net>
+
+ Avoid a compiler warning.
+ * src/pathchk.c (portable_chars_only): Initialize variable of type
+ mbstate_t via memset, rather than via '{0}'. Patch from Bruno Haible.
+
+2006-10-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix bug reported today by Mike Frysinger: mkdir -pv is logging the
+ wrong file name in some cases. Lars Wendler reported a bug in
+ my original fix.
+ * src/install.c (make_ancestor): New arg COMPONENT.
+ * src/mkdir.c (make_ancestor): Likewise.
+ * tests/install/basic-1: Check for install -Dv bug.
+ * tests/mkdir/Makefile.am (TESTS): Add p-v.
+ * tests/mkdir/p-v: New file, to test this bug.
+
+2006-10-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/chgrp.c: Don't include lchown.h; no longer needed.
+ * src/chown.c: Likewise.
+
+ * tests/ls/stat-dtype: Use a dynamic test to decide whether the
+ current file system has useful d_type info.
+
+ * src/dd.c (flags): noatime and nofollow now depend on
+ HAVE_WORKING_O_NOATIME and HAVE_WORKING_O_NOFOLLOW, too.
+ (usage): Output info about noatime and nofollow only if
+ they are known to work.
+ * src/remove.c (AD_push): Inspect HAVE_WORKING_O_NOFOLLOW rather
+ than O_NOFOLLOW, when testing whether it's possible to avoid a
+ race condition reliably.
+
+2006-10-05 Jim Meyering <jim@meyering.net>
+
+ * src/c99-to-c89.diff: Update to reflect new offsets.
+
+ * tests/install/basic-1: Skip the latter part of this test if the
+ just-built dd binary is not readable. Otherwise, this test would fail
+ when binaries were created as root. Reported by Bauke Jan Douma in
+ <http://article.gmane.org/gmane.comp.gnu.core-utils.bugs/8433>.
+
+2006-10-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/system.h (ST_BLKSIZE): Ceiling at SIZE_MAX / 8 + 1, not at 4
+ MiB, since XFS hosts can legitimately have large values of
+ st_blksize. Problem reported by Tony Ernst in
+ <http://savannah.gnu.org/bugs/?17903>.
+
+2006-10-04 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (nonexistent_file_errno): Remove ENAMETOOLONG.
+ Paul Eggert pointed out that the specified file may exist,
+ in spite of such an errno value.
+ * tests/rm/Makefile.am (TESTS): Remove ignore-name-too-long.
+ * tests/rm/ignore-name-too-long: Remove file.
+ * NEWS: Update here, too.
+
+2006-10-03 Jim Meyering <jim@meyering.net>
+
+ * tests/rm/fail-eperm: Report failure also if rm is terminated by
+ a signal.
+
+ * src/c99-to-c89.diff: Convert two c99'isms -- one in remove.c
+ and one in shred.c -- that were added before coreutils-6.3.
+ Reported by Michael Deutschmann.
+
+ * src/c99-to-c89.diff: Update to reflect new offsets.
+
+ * src/remove.c (remove_entry): With -f, exit successfully in spite
+ of a missing file under some very unusual conditions (with errno
+ being any of ENOENT, ENOTDIR, ENAMETOOLONG).
+
+ With --force (-f), rm no longer fails for ENOTDIR.
+ * src/remove.c (ignorable_missing): New function.
+ Use it everywhere, rather than open-coding the test.
+ Andreas Schwab reported the ENOTDIR problem.
+ (ignorable_missing): Similarly, don't fail for ENAMETOOLONG.
+
+ * NEWS: Mention the bug fix.
+ * tests/rm/ignorable: New file. Test for the ENOTDIR case.
+ * tests/rm/ignore-name-too-long: New file. Test for ENAMETOOLONG.
+ * tests/rm/Makefile.am (TESTS): Add the new file names.
+
+ * bootstrap: Undo last change to this file, since now gnulib-tool
+ sticks with the automake default in generating dependencies.
+
+ * NEWS: Add a line for 6.4-cvs.
+ * configure.ac (AC_INIT): Bump to 6.4 and add "-cvs" suffix.
+
+2006-09-30 Jim Meyering <jim@meyering.net>
+
+ Version 6.3.
+ * NEWS: Record the 6.3 release date.
+ * configure.ac (AC_INIT): Remove "-cvs" suffix from version string.
+
+ * NEWS: Mention Paul's Solaris 8 vs. 10 work-around.
+
+ * src/c99-to-c89.diff: Update offsets.
+
+2006-09-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/rm/readdir-bug: Don't use $(...) in a shell script,
+ as it doesn't work with Solaris /bin/sh.
+
+2006-09-29 Jim Meyering <jim@meyering.net>
+
+ * NEWS: Mention Paul's fix (to gnulib's canon-host.c) for
+ the pinky segfault.
+
+ * tests/seq/basic [neg-2, eq-wid-2]: Comment out tests that
+ use .1 as the increment. Actual output varies too much.
+ [eq-wid-3]: New, commented out test.
+
+ * src/shuf.c (read_input): Fix an off-by-one error that
+ would cause an infloop for piped input of 8KB or more.
+ * NEWS: Mention the fix.
+ * tests/misc/shuf: Test for the above fix.
+
+ Since any system may be affected by the Darwin readdir bug,
+ perform the extra rewinddir unconditionally. The performance
+ impact of rewinding a directory is negligible.
+ * src/remove.c (NEED_REWIND): Define to use
+ CONSECUTIVE_READDIR_UNLINK_THRESHOLD unconditionally.
+
+ * tests/seq/basic: Use .11 as the upper bound, in case the ".1"
+ increment translates to a slightly larger value.
+ This corrects a test failure on FreeBSD 6.1 reported by Nelson Beebe.
+ The final expected value wasn't being printed.
+
+ Work around a readdir bug in Darwin 7.9.0 (MacOS X 10.3.9) on HFS+
+ and NFS, whereby rm would not remove all files in a directory.
+ * src/remove.c (CONSECUTIVE_READDIR_UNLINK_THRESHOLD): Reduce to 10.
+ (NEED_REWIND): New macro, so that we incur the cost of the work-around
+ rewinddir only on afflicted systems.
+ * NEWS: Clarify and correct.
+ * tests/rm/readdir-bug: New file. Test for the above fix.
+ * tests/rm/Makefile.am (TESTS): Add it.
+ Prompted by testing and analysis from Bruno Haible:
+ http://lists.gnu.org/archive/html/bug-coreutils/2006-09/msg00326.html
+
+2006-09-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/rm/fail-eperm: Unset BASH_ENV, CDPATH, and ENV, too;
+ suggested for Debian stable, which uses Perl 5.8.4.
+
+2006-09-28 Jim Meyering <jim@meyering.net>
+
+ Automatically generated dependencies are important even
+ when all of the sources in a directory come from gnulib.
+ * bootstrap (gnulib_tool): Remove the "no-dependencies" automake
+ option that gnulib-tool adds to what becomes our lib/gnulib.mk.
+
+ * tests/rm/fail-eperm: Enable Perl's (-T) taint checking.
+ Ensure that IFS is set properly and unset PATH.
+ Sanitize inputs.
+ Work properly even when the name of the selected file starts with "-".
+ Invoke rm via "../../src/rm", and adjust expected output.
+ Prompted by a patch from Tim Waugh.
+
+ * README-cvs: Add Bison to the list of required packages.
+
+2006-09-26 Jim Meyering <jim@meyering.net>
+
+ * src/c99-to-c89.diff: Update offsets.
+
+ * NEWS: rm works around a bug in Darwin 8.6.1 w/NFS that kept
+ it from removing a directory containing 188 or more entries.
+ * src/remove.c (CONSECUTIVE_READDIR_UNLINK_THRESHOLD): Decrease by
+ 20, go work around the buggy readdir on Darwin 8.6.1 with NFS.
+ Reported by Matthew Woehlke.
+
+2006-09-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: "groups user" no longer outputs "user :"; you need at least
+ two users. "groups" now processes options like --help more compatibly.
+ * src/groups.sh: Implement the option-processing change.
+ Handle user and group names with special characters more robustly.
+ Report write errors instead of exiting silently with status 1.
+
+2006-09-26 Jim Meyering <jim@meyering.net>
+
+ * README: Warn not to run autoreconf manually. Use bootstrap instead.
+
+ * src/groups.sh: When invoked with 0 or 1 argument, just exec "id".
+ Rewrite to avoid using temporary, $status.
+
+ * NEWS: Mention the bug fix.
+ * src/groups.sh: Don't hide a write failure.
+ Reported by Iain Calder <ic56@rogers.com>.
+
+2006-09-25 Jim Meyering <jim@meyering.net>
+
+ * src/chown.c (usage): Clarify --dereference description.
+ * src/chgrp.c (usage): Likewise. Suggestion from Jamie McClelland.
+
+2006-09-24 Jim Meyering <jim@meyering.net>
+
+ * NEWS: Mention these fixes.
+ * src/copy.c (copy_reg): With --verbose (-v), print
+ "removed `file_name'" just after unlinking a file.
+ (copy_internal): Likewise, in three more places.
+ Marc Lehman reported that "touch x; ln x y; mv -v x y" was silent.
+ * tests/mv/hard-verbose: New file. Test for the above fix.
+ * tests/mv/Makefile.am (TESTS): Add hard-verbose.
+
+ * tests/help-version (sync_args): Don't call sync, since it spins up
+ disks that I've deliberately caused to spin down (but not unmounted).
+
+ * NEWS: Mention the improvement to sort.
+
+ * tests/tail-2/proc-ksyms: Require that /proc/ksyms be readable
+ as well as existing.
+
+ * tests/ls/stat-dtype: Don't use tmpfs on linux-2.4 or older,
+ since that predated addition of d_type support.
+
+2006-09-23 Jim Meyering <jim@meyering.net>
+
+ * gl/modules/getloadavg.diff: New file. Work around the way the latest
+ version of the getloadavg module interacts with our bootstrap script.
+ * bootstrap (gnulib_tool_options): Add "--local-dir gl".
+ * Makefile.am (EXTRA_DIST): Sort file names.
+ Add bootstrap and gl/modules/getloadavg.diff
+
+2006-09-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * bootstrap: Add support for --force.
+ (usage): New function. Describe usage less tersely.
+ (CVS_only_file): New var.
+
+ * NEWS: Document fix for cp -i and mv -i.
+ * src/copy.c (copy_internal): With -i, prompt even if the source
+ is a directory and the destination is not. This is required by
+ POSIX and gives the user a chance to bail out before failing.
+ * tests/cp/Makefile.am (TESTS): Add cp-i.
+ * tests/cp/cp-i: New file.
+ * tests/mv/Makefile.am (TESTS): Add i-5.
+ * tests/mv/i-5: New file.
+
+2006-09-20 Jim Meyering <jim@meyering.net>
+
+ * NEWS: Mention the chmod bug fix.
+
+ * tests/chmod/inaccessible: New test, specifically for this bug.
+ Based on a test case from Paul Eggert.
+ * tests/chmod/Makefile.am (TESTS): Add inaccessible.
+
+ Fix the 2006-09-18 bug differently.
+ * src/chmod.c: (process_file): Upon FTS_NS for a top-level file,
+ tell fts_read to stat the file again, in case it has become
+ accessible since the initial fts_open call.
+ * src/chown-core.c (change_file_owner): Likewise.
+
+ * src/chmod.c: Revert last change. There is a better way.
+ * src/chown-core.c: Likewise.
+
+2006-09-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/ln.c (target_directory_operand): Rewrite to avoid porting
+ problem on Tandem reported by Matthew Woehlke in
+ <https://savannah.gnu.org/bugs/?17172>.
+
+2006-09-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix bug where chmod, chown, and chgrp did not process operands
+ left-to-right in some cases.
+ * src/chmod.c (wd_errno): New var.
+ (chmod_file): New function, with most of the contents of the
+ old prcess_file function.
+ (process_files): Use it. This gives file names to fts one
+ at a time, so that they are processed left-to-right as POSIX
+ requires.
+ * src/chown-core.c (wd_errno, chown_files): Likewise.
+ (chown_file): New function.
+ * tests/install/basic-1: Redo test so as to not workaround
+ the chmod bug, thereby testing for it.
+
+ * src/shuf.c (main): Quote the entire range when reporting an
+ invalid one, rather than just the part that contained the error.
+
+ * tests/stty/row-col-1: Rewrite to avoid temporary file that is
+ sometimes left behind if the test is skipped or interrupted.
+
+ * bootstrap (symlink_to_gnulib): New function.
+ (cp_mark_as_generated): Use it, to prefer symlinks-to-gnulib
+ to copies-of-gnulib.
+ (cp_mark_as_generated, slurp, gnulib_files):
+ Avoid making a copy if it's the same as the old version.
+ (gnulib_files): Add support for this variable (used by Bison).
+
+ * tests/ls/stat-vs-dirent: Fix quoting problem in diagnostic
+ indicating flaw in kernel. Reword to say that the flaw isn't
+ serious for coreutils, since the flaw does affect ls -i.
+
+ * tests/chgrp/basic: Fix bug in test case exposed by building on
+ Solaris 8 in a setgid directory. The test case incorrectly
+ assumed that 'symlink' would be in group $g1.
+
+2006-09-18 Jim Meyering <jim@meyering.net>
+
+ * NEWS: Add a line for 6.3-cvs.
+ * configure.ac (AC_INIT): Bump to 6.3 and add "-cvs" suffix.
+
+ Version 6.2.
+ * NEWS: Record the 6.2 release date.
+ * configure.ac (AC_INIT): Remove "-cvs" suffix from version string.
+
+2006-09-17 Jim Meyering <jim@meyering.net>
+
+ * tests/chgrp/basic: On an OpenBSD system, rather than failing
+ due to a known problem, merely warn about it.
+ Rewrite to avoid testing output of chgrp --verbose and chgrp -c.
+ Instead, use stat to test file system for desired results, directly.
+ * tests/chgrp/Makefile.am (TESTS_ENVIRONMENT): Set host_triplet.
+
+ * tests/envvar-check: Add more variable names to the list of those
+ that can affect these programs and tests: _POSIX2_VERSION, COLUMNS,
+ QUOTING_STYLE, TABSIZE, TERM, TMPDIR.
+
+2006-09-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Document that mkdir -p and install -d now fork on occasion.
+ * bootstrap.conf (gnulib_modules): Add savewd.
+ * src/install.c: Include savewd.h.
+ (process_dir): New function.
+ (main, install_file_in_file_parents): Use it, along with the new
+ savewd module, to avoid some race conditions.
+ * src/mkdir.c: Include savewd.h.
+ (struct mkdir_options): New members make_ancestor_function, mode,
+ mode_bits.
+ (make_ancestor): Return 1 if the resulting directory is not readable.
+ (process_dir): New function.
+ (main): Use it, along with new savewd module, to avoid some
+ race conditions. Fill in new slots of struct mkdir_options, so
+ that callees get the values.
+ * tests/install/basic-1: Test for coreutils 5.97 bug that was
+ fixed in coreutils 6.0, and which should still be fixed with
+ this change.
+ * tests/mkdir/p-3: Likewise.
+
+2006-09-15 Jim Meyering <jim@meyering.net>
+
+ * bootstrap.conf (gnulib_modules): Add rename-dest-slash.
+ The 2006-09-08 changes made it so "mv dir new-name/" would
+ fail on NetBSD 1.6. This makes it work once again.
+
+2006-09-14 Jim Meyering <jim@meyering.net>
+
+ * src/mv.c (main): Remove unnecessary (always-true) test for 2 <= n.
+ Instead, since it's a little fragile, assert the condition.
+ (target_directory_operand): Update comment to reflect latest change.
+
+2006-09-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/who.c (print_user): Rewrite to avoid warning from
+ GCC 4.1.1 with -Wall.
+
+2006-09-12 Jim Meyering <jim@meyering.net>
+
+ * tests/mv/atomic: Check for specific strace output, rather than
+ simply nonempty. RHEL AS 4 would fail this test due to strace
+ generating "[ Process PID=14434 runs in 32 bit mode. ]".
+ Reported by Nelson Beebe.
+
+2006-09-11 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (remove_dir): Move new cache_stat_init call onto
+ it's own line.
+ (rm_1): Move declaration of "st" and new cache_stat_init call
+ "down" to nearer where they're used.
+ * src/c99-to-c89.diff: Add another set of curly braces.
+
+2006-09-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/expr.c (eval6): Fix buffer overrun, or bad performance, if
+ substr's last operand is very large. Performance problem reported
+ by Sebastian Kreft.
+
+2006-09-09 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (sc_prohibit_jm_in_m4): Don't hang when there
+ are no .m4 files.
+ (sc_require_config_h): Skip this test if there are no version-
+ controlled .c files.
+ (sc_prohibit_assert_without_use): Likewise.
+
+2006-09-08 Jim Meyering <jim@meyering.net>
+
+ * bootstrap: Export CVS_RSH separate from its assignment, to work
+ even with Solaris 10's /bin/sh. Suggestion from Mark D. Baushke.
+
+2006-09-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: tail now ignores the -f option if POSIXLY_CORRECT is set,
+ no file operand is given, and standard input is any FIFO.
+ This is in response to Open Group XCU ERN 114.
+ * src/tail.c (main): Likewise.
+
+2006-09-08 Jim Meyering <jim@meyering.net>
+
+ mv and "cp -r" no longer fail when invoked with two arguments
+ where the first one names a directory and the second name ends in
+ a slash and doesn't exist. E.g., "mv dir B/", for nonexistent B,
+ now succeeds, once more. This reverts part of the 2004-06-27
+ change for 5.3.0.
+ * NEWS: Say the above.
+ * src/mv.c (target_directory_operand): Don't require (here)
+ that the target operand "look like" a directory. This change
+ pushes the test down to the rename syscall level, where a
+ "mv dir existing-non-dir/" will mistakenly succeed on older systems
+ that ignore trailing slashes in the rename destination argument.
+ * src/cp.c (target_directory_operand): Likewise, but for cp.
+ * tests/mv/trailing-slash: Exercise the above fixes.
+ * tests/cp/trailing-slash: New file.
+ * tests/cp/Makefile.am (EXTRA_DIST): Add trailing-slash.
+
+ * bootstrap: Use the previously unused variable, $src,
+ to avoid repeating "$GNULIB_SRCDIR/$file".
+
+ * bootstrap (cp_mark_as_generated): Don't use "local", to
+ accommodate ancient "/bin/sh". Suggested by Ralf Wildenhues.
+ Rename now-global "$src" and "$dst" to have cp_ prefix.
+ Safer, and avoids confusion.
+
+ * bootstrap (cp_mark_as_generated): New function.
+ (slurp): Use it to prepend editor hints and a warning that
+ the file we're copying is generated.
+ Suggestion from Bruce Korb.
+ (cp_mark_as_generated): Don't add C-style comments for .l or .y files.
+ Fix last-minute typo.
+
+2006-09-07 Jim Meyering <jim@meyering.net>
+
+ * bootstrap: Revert last change. There are less disruptive ways
+ to mark these generated files as read-only.
+
+ * src/c99-to-c89.diff: Update to have proper offsets.
+
+2006-09-06 Jim Meyering <jim@meyering.net>
+
+ Ensure that some gnulib-tool-generated files are read-only.
+ * bootstrap (slurp): Put the body of this function in a sub-shell,
+ with "umask a-w" so that all new files are read-only. Remove each
+ file before we write to it, in case it's read-only.
+ Make po/Makevars and runtime-po/Makevars read-only, too.
+
+2006-09-05 Jim Meyering <jim@meyering.net>
+
+ * tests/cp/acl: Skip this test when cp lacks ACL support.
+ * tests/cp/Makefile.am (TESTS_ENVIRONMENT): Set $(CONFIG_HEADER).
+
+ * src/c99-to-c89.diff (remove.c): Adapt one hunk to match the new
+ context from change of 2006-09-02.
+
+2006-09-04 Jim Meyering <jim@meyering.net>
+
+ * README-cvs: Fix typo in update command.
+
+2006-09-03 Jim Meyering <jim@meyering.net>
+
+ * NEWS: Tweak the wording in the new change description so that
+ no one can think this change causes e.g., `rm -fr foo../' to fail.
+
+ * tests/rm/inaccessible: Adjust for movement of config.h to lib/.
+ Use $CONFIG_HEADER, rather than hard-coding it.
+ * tests/rm/Makefile.am (TESTS_ENVIRONMENT): Set $CONFIG_HEADER.
+
+2006-09-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: rm now rejects attempts to remove /, ./, and ../.
+ * src/basename.c: Don't include dirname.h, since system.h does it now.
+ * src/chmod.c: Likewise.
+ * src/copy.c: Likewise.
+ * src/cp.c: Likewise.
+ * src/df.c: Likewise.
+ * src/dircolors.c: Likewise.
+ * src/dirname.c: Likewise.
+ * src/du.c: Likewise.
+ * src/install.c: Likewise.
+ * src/ln.c: Likewise.
+ * src/ls.c: Likewise.
+ * src/mkdir.c: Likewise.
+ * src/mv.c: Likewise.
+ * src/remove.c: Likewise.
+ * src/rm.c: Likewise.
+ * src/rmdir.c: Likewise.
+ * src/shred.c: Likewise.
+ * src/split.c: Likewise.
+ * src/su.c: Likewise.
+ * src/system.h: Include "dirname.h", since dot_or_dotdot needs it
+ now.
+ (dot_or_dotdot): Succeed even if "." or ".." is followed by a
+ slash.
+ * src/rm.c (usage, main): --preserve-root is now the default.
+ * src/remove.h: Fix comment.
+ * src/remove.c (cache_fstatat, cache_stat_init): New functions.
+ (cache_statted, cache_stat_ok): New functions.
+ (write_protected_non_symlink): Remove struct stat ** buf_p arg,
+ which is no longer needed with the new functions. All callers
+ changed.
+ (prompt, is_dir_lstat, remove_entry, remove_dir):
+ New struct stat * arg. All callers changed.
+ (write_protected_non_symlink, prompt, is_dir_lstat, remove_entry):
+ (remove_cwd_entries, remove_dir, rm_1):
+ Use and maintain the file status cache.
+ (prompt, remove_entry): Omit the first "directory" in the diagnostic
+ "Cannot remove directory `foo': is a directory". This causes "rm"
+ to pass a test case that it would otherwise fail now that it
+ "knows" more about its argument. I think the diagnostic is better
+ without the first "directory" anyway.
+ (prompt): Remove the no-longer-needed IS_DIR arg; all callers changed.
+ (rm_1): Reject attempts to remove /, ./, or ../.
+ * tests/rm/Makefile.am (TESTS): Add r-4.
+ * tests/rm/r-4: New file.
+
+2006-09-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/stat.c: Include <stddef.h>
+ (alignof): New macro.
+ (HAVE_STRUCT_STATXFS_F_FSID___VAL, HAVE_STRUCT_STATXFS_F_FSID_VAL):
+ Remove.
+ (STRUCT_STATXFS_F_FSID_IS_INTEGER): New macro.
+ (FSID_VAL): Remove.
+ (print_statfs): If f_fsid isn't an integer, grab its words one
+ at a time in little-endian order. This is a bit easier to configure
+ and should avoid a compilation failure on MacOS reported by Bruno
+ Haible.
+
+2006-08-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/stat.c (HAVE_STRUCT_STATXFS_F_FSID_VAL, FSID_VAL): New macros, to
+ work around a Mac OS X porting problem reported by Bruno Haible in
+ <http://lists.gnu.org/archive/html/bug-coreutils/2006-08/msg00308.html>.
+ (print_statfs): Use them.
+
+ * bootstrap.conf (gnulib_modules): Add isapipe.
+ * src/tail.c: Include isapipe.h.
+ (IS_PIPE_LIKE_FILE_TYPE): Remove.
+ (IS_TAILABLE_FILE_TYPE): Just list both FIFOs and sockets as
+ tailable, since this seems to be portable.
+ (main): Use isapipe, to fix a bug on MacOS X reported by Bruno Haible in
+ <http://lists.gnu.org/archive/html/bug-coreutils/2006-08/msg00304.html>.
+
+ * src/system.h (LOCALEDIR): Remove, since configmake.h now defines
+ it for us.
+
+2006-08-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/copy.c (copy_internal): Don't test whether macros like
+ S_ISLNK are defined, since they're always defined now.
+ * src/cp.c (main): Likewise.
+ * src/ln.c (main): Likewise.
+ * src/ls.c (get_link_name, make_link_name): Likewise.
+ * src/mknod.c (main): Likewise.
+ * src/mkfifo.c (usage): Likewise.
+ * src/who.c (S_IWGRP): Likewise.
+
+ Adjust to recent gnulib changes for the gnulib module.
+ * bootstrap.conf (gnulib_modules): Add fcntl.
+ * src/system.h (SEEK_SET, SEEK_CUR, SEEK_END): Remove. Other code
+ is already assuming these macros are defined.
+ (O_DIRECT, O_DIRECTORY, O_DSYNC, O_NDELAY, O_NOATIME, O_NONBLOCK):
+ (O_NOCTTY, O_NOFOLLOW, O_NOLINKS, O_RSYNC, O_SYNC, O_BINARY, O_TEXT):
+ Remove; the fcntl module now handles these.
+
+ Adjust to recent gnulib changes for the inttypes module.
+ * bootstrap.conf (gnulib_modules): Remove stdint; add inttypes.
+ (excluded_files): Don't exclude m4/inttypes-h.m4 or m4/inttypes-pri.m4.
+
+ * src/system.h: Don't bother to include <stdint.h>, since we can
+ now assume inttypes.h does the equivalent of including stdint.h.
+
+2006-08-27 Jim Meyering <jim@meyering.net>
+
+ * src/copy.c (copy_internal): Don't make a backup if the last
+ component of the source name is "." or "..".
+ Reported by Andreas Schwab in http://savannah.gnu.org/bugs/?17540.
+ * NEWS: Mention this.
+ * tests/cp/src-base-dot: New file. Test for the above fix.
+ * tests/cp/Makefile.am (TESTS): Add src-base-dot.
+
+ * src/system.h (DOT_OR_DOTDOT): Remove macro. Rewrite as a...
+ (dot_or_dotdot): ...new static inline function.
+ * src/remove.c (rm_1): Reflect this renaming.
+ * src/ls.c (basename_is_dot_or_dotdot): Likewise.
+
+ * src/copy.c (copy_internal): Add comments.
+
+2006-08-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/Makefile.am (AM_CPPFLAGS): Remove -I$(srcdir) and -I../lib,
+ since Automake supplies them for us. It always did -I$(srcdir),
+ and with the recent change to AC_CONFIG_HEADERS in configure.ac it
+ is now also doing -I../lib.
+
+ * bootstrap (get_translations): Skip this if WGET_COMMAND is empty.
+ Fail if the first "echo" fails. Suppress diagnostics from "ls po/*.po"
+ since there might not be any .po files.
+ (WGET_COMMAND): Set to empty if wget doesn't
+ seem to be available.
+
+2006-08-26 Jim Meyering <jim@meyering.net>
+
+ This test was failing in some environments.
+ * tests/ls/color-dtype-dir: Don't rely on eval "`dircolors -b`"
+ to set LS_COLORS in the environment.
+ * tests/envvar-check: Instead, ensure that LS_COLORS is not set.
+ Reported by Bob Proulx.
+
+ * src/c99-to-c89.diff: Remove hunk for copy.c; no longer needed.
+
+ * Makefile.am (EXTRA_DIST): Remove these files here, too:
+ .x-sc_no_if_have_config_h, .x-sc_prohibit_assert_without_use,
+ .x-sc_two_space_separator_in_usage.
+
+ Fix "mv --verbose --backup" so its output includes the
+ " (backup: foo.~1~)" suffix also when backing up a directory.
+ * NEWS: Report this bug fix.
+ * src/copy.c (emit_verbose): New function, factored out of...
+ (copy_internal): ...here. Use the new function.
+ * tests/mv/backup-dir: Test for the above fix.
+ * tests/mv/Makefile.am (TESTS): Add backup-dir.
+
+2006-08-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * .x-sc_no_if_have_config_h: Remove; no longer needed.
+ * .x-sc_prohibit_assert_without_use: Remove; it was empty.
+ * .x-sc_two_space_separator_in_usage: Likewise.
+ * Makefile.maint (sc_no_have_config_h): Renamed from
+ sc_no_if_have_config_h, since it now checks that HAVE_CONFIG_H
+ is absent everywhere.
+ * bootstrap.conf (gnulib_modules): Add config-h.
+ * src/shred.c: Include <config.h> unconditionally, since
+ we now assume config.h exists.
+ * src/dircolors.c: Likewise.
+
+2006-08-26 Jim Meyering <jim@meyering.net>
+
+ "ls --color" would highlight other-writable and sticky directories
+ no differently than regular directories on a file system with
+ dirent.d_type support.
+ * NEWS: Say the above.
+ * src/ls.c (gobble_file): With --color, also stat the file when
+ we know it is a directory.
+ Derived from an anonymous one-line fix and bug report:
+ <http://savannah.gnu.org/bugs/?15043>.
+ * tests/ls/color-dtype-dir: New file. Test for the above fix.
+ * tests/ls/Makefile.am (TESTS): Add color-dtype-dir.
+
+2006-08-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * .cvsignore: Remove stamp-h1. Add coreutils-*, to ignore
+ tarballs.
+ * bootstrap.conf: Add configmake, verify.
+ * src/.cvsignore: Remove localedir.h.
+ * src/Makefile.am (localedir, DISTCLEANFILES, localedir.h): Remove;
+ subsumed by configmake.
+ * src/system.h: Include configmake.h rather than localedir.h
+ (LOCALEDIR): New macro.
+
+ Rewrite to avoid some unnecessary casts, macros, literals.
+ * src/shred.c (DEFAULT_PASSES, VERBOSE_UPDATE): Now constants,
+ not macros.
+ (SECTOR_SIZE, SECTOR_MASK): New constants.
+ (fillpattern, dopass, do_wipefd, main): Remove unnecessary casts,
+ and use the SECTOR_* constants when applicable. Check for size <
+ 0 rather than size == -1, since negative-size files are a sign of
+ trouble anyway.
+
+2006-08-25 Bruno Haible <bruno@clisp.org>
+
+ * src/shred.c (dopass): Assume a continuable error if EIO even
+ if the current position is not a multiple of 512.
+
+2006-08-24 Jim Meyering <jim@meyering.net>
+
+ * src/stat.c (print_statfs): Fix typo: remove extra "sizeof".
+
+2006-08-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/stat.c (HAVE_STRUCT_STATXFS_F_FSID___VAL): Define. This
+ macro was being used without being defined.
+ (SB_F_NAMEMAX): Remove cast.
+ (f_fsid) [BeOS]: Likewise.
+ (OUT_NAMEMAX): Renamed from NAMEMAX_FORMAT, with a new meaning.
+ All uses changed.
+ (out_string, out_int, out_uint, out_uint_o, out_uint_x): New
+ functions.
+ (xstrcat): Remove. All uses changed to use the above functions.
+ (print_statfs, print_stat): 2nd arg is now the prefix len, not the
+ buffer len. All uses changed. Output '?', not '*', for unknown
+ data or errors. Do not assume signed values can be interchanged
+ with unsigned when printing.
+ (print_statfs): For %i, print the fsid as a single int, not as a
+ pair.
+ (print_it): Quote invalid format better.
+
+ * NEWS: printf supports the I flag.
+ * src/printf.c (print_formatted) [glibc 2.2 or later]: Likewise.
+
+2006-08-23 Bruno Haible <bruno@clisp.org>
+
+ * src/stat.c (STRUCT_STATVFS, statfs, f_fsid, f_blocks, f_bfree) [BeOS]:
+ (f_bavail, f_bsize, STATFS_FRSIZE, f_files, f_ffree) [BeOS]:
+ (STATXFS_FILE_SYSTEM_TYPE_MEMBER_NAME) [BeOS]: Define.
+
+ * src/ls.c (SA_RESTART): Fallback define.
+
+2006-08-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/system.h (EDQUOT): Define if not already defined.
+ Problem reported by Bruno Haible for BeOS.
+
+ * .cvsignore: Remove config.h, config.hin, as they are now
+ in lib.
+ * configure.ac (AC_CONFIG_HEADERS): Move config.h and config.hin
+ to lib.
+ * src/Makefile.am (AM_CPPFLAGS): Remove '-I..'; no longer needed.
+
+ * bootstrap (slurp): Define gl_LOCK_EARLY instead of gl_LOCK,
+ to accommodate today's gnulib change.
+
+2006-08-23 Jim Meyering <jim@meyering.net>
+
+ * NEWS: Mention the sweeping infrastructure changes.
+
+2006-08-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * bootstrap.conf (gnulib_modules): Add gnupload.
+ * Makefile.maint (emit_upload_commands): gnupload is now
+ in build-aux.
+ * gnupload: Remove from CVS, since it's now a gnulib module.
+
+ * bootstrap (bootstrap_conf_cleanup): Remove.
+ (excluded_files): New var.
+ * bootstrap.conf: Likewise.
+ * bootstrap (slurp): Exclude files early if they're in the
+ excluded_files list. That way, their names don't get put into
+ .cvsignore.
+
+ * aclocal.m4, config.hin, configure:
+ Remove from CVS, since ./bootstrap generates them automatically.
+ * .cvsignore: Add INSTALL, Makefile.in, aclocal.m4, config.hin,
+ configure, *.cache, *.lineno, *.log.
+ Remove more-specific entries. This catches files like configure.lineno.
+ * man/.cvsignore: Add Makefile.in.
+ * src/.cvsignore: Add Makefile.in.
+ Remove .version, dir.c, install, mvdir, stamp-v, vdir.c, version.c.
+
+ * tests/.cvsignore:
+ * tests/chgrp/.cvsignore:
+ * tests/chmod/.cvsignore:
+ * tests/chown/.cvsignore:
+ * tests/cp/.cvsignore:
+ * tests/cut/.cvsignore:
+ * tests/dd/.cvsignore:
+ * tests/dircolors/.cvsignore:
+ * tests/du/.cvsignore:
+ * tests/expr/.cvsignore:
+ * tests/factor/.cvsignore:
+ * tests/fmt/.cvsignore:
+ * tests/head/.cvsignore:
+ * tests/install/.cvsignore:
+ * tests/join/.cvsignore:
+ * tests/ln/.cvsignore:
+ * tests/ls/.cvsignore:
+ * tests/ls-2/.cvsignore:
+ * tests/md5sum/.cvsignore:
+ * tests/misc/.cvsignore:
+ * tests/mkdir/.cvsignore:
+ * tests/mv/.cvsignore:
+ * tests/od/.cvsignore:
+ * tests/pr/.cvsignore:
+ * tests/readlink/.cvsignore:
+ * tests/rm/.cvsignore:
+ * tests/rmdir/.cvsignore:
+ * tests/seq/.cvsignore:
+ * tests/sha1sum/.cvsignore:
+ * tests/shred/.cvsignore:
+ * tests/sort/.cvsignore:
+ * tests/stty/.cvsignore:
+ * tests/sum/.cvsignore:
+ * tests/tac/.cvsignore:
+ * tests/tail/.cvsignore:
+ * tests/tail-2/.cvsignore:
+ * tests/tee/.cvsignore:
+ * tests/test/.cvsignore:
+ * tests/touch/.cvsignore:
+ * tests/tr/.cvsignore:
+ * tests/tsort/.cvsignore:
+ * tests/unexpand/.cvsignore:
+ * tests/uniq/.cvsignore:
+ * tests/wc/.cvsignore:
+ Add Makefile.in. Sort entries if necessary. Remove *.I, *.E,
+ *.X, *.O, *-tests, build-script, mk-script if they're never
+ created in this directory.
+
+2006-08-22 Bruno Haible <bruno@clisp.org>
+
+ BeOS portability.
+ * src/uptime.c: Include OS.h if it exists.
+ (print_uptime): On BeOS, use the get_system_info function (actually a
+ macro). Loop through utmp entries only if utmp.h or utmpx.h exists.
+ (uptime): Call read_utmp only if utmp.h or utmpx.h exists.
+
+2006-08-22 Jim Meyering <jim@meyering.net>
+
+ * .cvsignore: Add ABOUT-NLS.
+
+ Move the check-AUTHORS rule to be run as part of "make distcheck",
+ rather than "make check".
+ * src/Makefile.am (check): Don't depend on check-AUTHORS; it would
+ cause "make check" to fail on systems unable to build all binaries.
+ * Makefile.maint (check-AUTHORS): New rule.
+ (local-checks-available): Add it here.
+ Reported by Bruno Haible. Needed for BeOS.
+
+2006-08-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/df.c (print_header, show_dev): Use a column width that
+ depends on the block size of -P is specified and not autoscaling.
+ Problem reported by Gustavo G. Rondina in:
+ http://lists.gnu.org/archive/html/bug-coreutils/2006-08/msg00164.html
+
+2006-08-21 Jim Meyering <jim@meyering.net>
+
+ * tests/dircolors/simple (a): Don't fail with an unexpected diagnostic
+ when the shell variable, SHELL, is not set.
+ Trigger the failure with "(unset SHELL; make check TESTS=simple)".
+ Reported by Sven Joachim in <http://bugs.debian.org/355368>.
+
+ * src/od.c: Now that HAVE_UNSIGNED_LONG_LONG is no longer defined
+ in config.h, change the uses to HAVE_UNSIGNED_LONG_LONG_INT.
+ Otherwise, on a system with 4-byte longs, "od -t u8" fails with this:
+ od: invalid type string `u8';
+ this system doesn't provide a 8-byte integral type
+ FIXME: add a test for this, but skip it when sizeof uintmax < 8.
+
+2006-08-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ Add a bootstrap procedure, so that the CVS version contains fewer
+ files and we bootstrap the rest from gnulib, gettext, etc.
+ * README-cvs: New file.
+ * bootstrap: New file.
+ * bootstrap.conf: New file.
+ * .x-sc_trailing_blank: Remove config-log, .gdb-history. Add .po.
+ * configure.ac (AC_PREREQ): Move here from m4/*.m4, for benefit
+ of gnulib-tool.
+ (gl_DEFAULT_POSIX2_VERSION, gl_USE_SYSTEM_EXTENSIONS, gl_PERL):
+ (gl_IGNORE_UNUSED_LIBRARIES): Remove; now done by gnulib.
+ (gl_EARLY): Add.
+ (gl_MACROS): Call just after gl_EARLY, just for clarity.
+ * src/c99-to-c89.diff: Remove patch to ls.c; no longer needed.
+ * src/kill.c (strtoimax): Remove decl.
+ * src/ls.c: Include "wcwidth.h" instead of rolling it ourselves.
+ * src/wc.c: Likewise.
+ * src/ls.c (sort_files): Rewrite to avoid need for C99-style
+ declaration, so that we don't need to patch this file.
+ * src/printf.c (strtoimax, strtoumax): Remove decls.
+ * src/su.c: Include getpass.h.
+ (getpass): remove.
+ * src/system.h: Include mempcpy.h, stpcpy.h, strpbrk.h.
+ Include inttypes.h unconditionally.
+ (LONGEST_MODIFIER, PRIdMAX, PRIoMAX, PRIuMAX, PRIxMAX): Remove.
+ (stpcpy, strndup, strstr, strtoul, mempcpy, CHAR_MIN, CHAR_MAX):
+ (SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, SHRT_MIN, SHRT_MAX, INT_MAX):
+ (INT_MIN, INTMAX_MAX, INTMAX_MIN, UINT_MAX, LONG_MAX, ULONG_MAX):
+ (SIZE_MAX, SSIZE_MAX, UINTMAX_MAX): Remove.
+
+ * ABOUT-NLS, INSTALL, Makefile.in, man/Makefile.in:
+ * src/Makefile.in, tests/Makefile.in, tests/chgrp/Makefile.in:
+ * tests/chmod/Makefile.in, tests/chown/Makefile.in:
+ * tests/cp/Makefile.in, tests/cut/Makefile.in:
+ * tests/dd/Makefile.in, tests/dircolors/Makefile.in:
+ * tests/du/Makefile.in, tests/expr/Makefile.in:
+ * tests/factor/Makefile.in, tests/fmt/Makefile.in:
+ * tests/general/Makefile.in, tests/head/Makefile.in:
+ * tests/install/Makefile.in, tests/join/Makefile.in:
+ * tests/ln/Makefile.in, tests/ls/Makefile.in:
+ * tests/ls-2/Makefile.in, tests/md5sum/Makefile.in:
+ * tests/misc/Makefile.in, tests/mkdir/Makefile.in:
+ * tests/mv/Makefile.in, tests/od/Makefile.in:
+ * tests/pr/Makefile.in, tests/readlink/Makefile.in:
+ * tests/rm/Makefile.in, tests/rmdir/Makefile.in:
+ * tests/seq/Makefile.in, tests/sha1sum/Makefile.in:
+ * tests/shred/Makefile.in, tests/sort/Makefile.in:
+ * tests/stty/Makefile.in, tests/sum/Makefile.in:
+ * tests/tac/Makefile.in, tests/tail/Makefile.in:
+ * tests/tail-2/Makefile.in, tests/tee/Makefile.in:
+ * tests/test/Makefile.in, tests/touch/Makefile.in:
+ * tests/tr/Makefile.in, tests/tsort/Makefile.in:
+ * tests/unexpand/Makefile.in, tests/uniq/Makefile.in:
+ * tests/wc/Makefile.in:
+ Remove from CVS, since ./bootstrap generates them automatically.
+
+2006-08-20 Eric Blake <ebb9@byu.net>
+
+ * src/stat.c (USE_STATVFS): Reinstate the patch from 2006-08-15;
+ the patch from 2006-08-18 broke on cygwin.
+
+2006-08-20 Jim Meyering <jim@meyering.net>
+
+ * NEWS: Add a line for 6.2-cvs.
+ * configure.ac (AC_INIT): Bump to 6.2 and add "-cvs" suffix.
+
+2006-08-19 Jim Meyering <jim@meyering.net>
+
+ * Version 6.1.
+ * NEWS: Record the 6.1 release date.
+ * configure.ac (AC_INIT): Remove "-cvs" suffix from version string.
+
+ * tests/Makefile.am (EXTRA_DIST): Add sparse-file.
+
+ Avoid test failure when `make check' is run through debuild.
+ * tests/help-version: Ensure that $SHELL is set to some value
+ and exported. Patch from Sven Joachim. For details, see
+ <http://bugs.debian.org/355368>.
+
+ * tests/ls/stat-dtype: Test for the 2006-08-17 `ls -CF' fix.
+
+ * README: Describe potential "pre-C99 build failure", and work-around.
+
+ Some of my 2006-07-03 changes to tests/*/Makefile.am were being
+ backed out due to updates provoked by the copyright changes.
+ * tests/Makefile.am.in (PATH): Prepend $(VG_PATH_PREFIX), so that
+ it propagates to the derived Makefile.am files.
+ ($(srcdir)/Makefile.am): Mark generated .am files as read-only,
+ so we don't mistakenly edit them again.
+ * tests/cut/Makefile.am: Regenerate.
+ * tests/head/Makefile.am: Likewise.
+ * tests/join/Makefile.am: Likewise.
+ * tests/pr/Makefile.am: Likewise.
+ * tests/sort/Makefile.am: Likewise.
+ * tests/tac/Makefile.am: Likewise.
+ * tests/tail/Makefile.am: Likewise.
+ * tests/test/Makefile.am: Likewise.
+ * tests/tr/Makefile.am: Likewise.
+ * tests/uniq/Makefile.am: Likewise.
+ * tests/wc/Makefile.am: Likewise.
+
+ * NEWS: Fix cp --sparse so that it preserves tail-end sparseness, even
+ when the file's apparent size is not a multiple of its block size.
+ * src/copy.c (copy_reg): Don't write a NUL before calling ftruncate.
+ For some file sizes, writing that single byte would unnecessarily
+ waste a few file blocks. That write may have been necessary in the
+ early days of Linux, but now, removing it should be safe.
+ Based on a patch by Alan Curry: <http://bugs.debian.org/370792>
+ * tests/cp/sparse: New test for the above.
+ * tests/cp/Makefile.am (TESTS): Add sparse.
+
+ * tests/sparse-file: New file, essence factored out of...
+ * tests/du/8gb: ... here. Use the new script.
+
+2006-08-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/system.h (select_plural): Reduce by 1000000, not 1000, since
+ the CVS gettext manual now suggests 1000000.
+
+2006-08-18 Bruno Haible <bruno@clisp.org>
+
+ Add support for NetBSD 3.0.
+ * src/stat.c (USE_STATVFS): Set to 1 if 'struct statvfs' has a field
+ f_fstypename.
+ (STATXFS_FILE_SYSTEM_TYPE_MEMBER_NAME): Define also if 'struct statvfs'
+ has a field f_fstypename.
+ This undoes the 2006-08-15 to src/stat.c.
+
+2006-08-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ Copyright notice fixes.
+
+ * COPYING: Upgrade to latest version from FSF.
+
+ * src/uname.c: Use (C) in copyright notice.
+
+ * .vg-suppressions: Add copyright notice.
+ * ChangeLog: Likewise.
+ * ChangeLog-2005: Likewise.
+ * Makefile.am: Likewise.
+ * NEWS: Likewise.
+ * README: Likewise.
+ * README-valgrind: Likewise.
+ * TODO: Likewise.
+ * announce-gen: Likewise.
+ * man/Makefile.am: Likewise.
+ * man/chmod.x: Likewise.
+ * man/chown.x: Likewise.
+ * man/df.x: Likewise.
+ * man/du.x: Likewise.
+ * man/rm.x: Likewise.
+ * src/dircolors.hin: Likewise.
+ * src/du-tests: Likewise.
+ * src/extract-magic: Likewise.
+ * src/tac-pipe.c: Likewise.
+ * src/wheel-gen.pl: Likewise.
+ * tests/Coreutils.pm: Likewise.
+ * tests/Makefile.am.in: Likewise.
+ * tests/acl: Likewise.
+ * tests/envvar-check: Likewise.
+ * tests/expensive: Likewise.
+ * tests/group-names: Likewise.
+ * tests/help-version: Likewise.
+ * tests/mk-script: Likewise.
+ * tests/priv-check: Likewise.
+ * tests/rwx-to-mode: Likewise.
+ * tests/sample-test: Likewise.
+ * tests/setgid-check: Likewise.
+ * tests/chgrp/basic: Likewise.
+ * tests/chgrp/deref: Likewise.
+ * tests/chgrp/no-x: Likewise.
+ * tests/chgrp/posix-H: Likewise.
+ * tests/chgrp/recurse: Likewise.
+ * tests/chmod/c-option: Likewise.
+ * tests/chmod/equal-x: Likewise.
+ * tests/chmod/equals: Likewise.
+ * tests/chmod/no-x: Likewise.
+ * tests/chmod/octal: Likewise.
+ * tests/chmod/setgid: Likewise.
+ * tests/chmod/umask-x: Likewise.
+ * tests/chmod/usage: Likewise.
+ * tests/chown/basic: Likewise.
+ * tests/chown/deref: Likewise.
+ * tests/chown/separator: Likewise.
+ * tests/cp/Makefile.am: Likewise.
+ * tests/cp/acl: Likewise.
+ * tests/cp/backup-1: Likewise.
+ * tests/cp/backup-is-src: Likewise.
+ * tests/cp/cp-HL: Likewise.
+ * tests/cp/cp-deref: Likewise.
+ * tests/cp/cp-mv-backup: Likewise.
+ * tests/cp/cp-parents: Likewise.
+ * tests/cp/deref-slink: Likewise.
+ * tests/cp/dir-rm-dest: Likewise.
+ * tests/cp/dir-slash: Likewise.
+ * tests/cp/dir-vs-file: Likewise.
+ * tests/cp/fail-perm: Likewise.
+ * tests/cp/into-self: Likewise.
+ * tests/cp/link: Likewise.
+ * tests/cp/link-no-deref: Likewise.
+ * tests/cp/link-preserve: Likewise.
+ * tests/cp/no-deref-link1: Likewise.
+ * tests/cp/no-deref-link2: Likewise.
+ * tests/cp/no-deref-link3: Likewise.
+ * tests/cp/perm: Likewise.
+ * tests/cp/preserve-2: Likewise.
+ * tests/cp/r-vs-symlink: Likewise.
+ * tests/cp/same-file: Likewise.
+ * tests/cp/slink-2-slink: Likewise.
+ * tests/cp/special-bits: Likewise.
+ * tests/cp/symlink-slash: Likewise.
+ * tests/cut/Makefile.am: Likewise.
+ * tests/cut/Test.pm: Likewise.
+ * tests/dd/misc: Likewise.
+ * tests/dd/not-rewound: Likewise.
+ * tests/dd/skip-seek: Likewise.
+ * tests/dd/skip-seek2: Likewise.
+ * tests/dd/unblock-sync: Likewise.
+ * tests/dircolors/simple: Likewise.
+ * tests/du/2g: Likewise.
+ * tests/du/8gb: Likewise.
+ * tests/du/Makefile.am: Likewise.
+ * tests/du/basic: Likewise.
+ * tests/du/deref: Likewise.
+ * tests/du/deref-args: Likewise.
+ * tests/du/exclude: Likewise.
+ * tests/du/fd-leak: Likewise.
+ * tests/du/files0-from: Likewise.
+ * tests/du/hard-link: Likewise.
+ * tests/du/inaccessible-cwd: Likewise.
+ * tests/du/long-from-unreadable: Likewise.
+ * tests/du/long-sloop: Likewise.
+ * tests/du/no-deref: Likewise.
+ * tests/du/no-x: Likewise.
+ * tests/du/restore-wd: Likewise.
+ * tests/du/slash: Likewise.
+ * tests/du/slink: Likewise.
+ * tests/du/trailing-slash: Likewise.
+ * tests/du/two-args: Likewise.
+ * tests/expr/basic: Likewise.
+ * tests/factor/basic: Likewise.
+ * tests/fmt/basic: Likewise.
+ * tests/fmt/long-line: Likewise.
+ * tests/general/Makefile.am: Likewise.
+ * tests/general/atgeneral.m4: Likewise.
+ * tests/general/dd.at: Likewise.
+ * tests/head/Makefile.am: Likewise.
+ * tests/head/Test.pm: Likewise.
+ * tests/install/basic-1: Likewise.
+ * tests/install/create-leading: Likewise.
+ * tests/install/d-slashdot: Likewise.
+ * tests/install/trap: Likewise.
+ * tests/join/Makefile.am: Likewise.
+ * tests/join/Test.pm: Likewise.
+ * tests/ln/backup-1: Likewise.
+ * tests/ln/misc: Likewise.
+ * tests/ln/sf-1: Likewise.
+ * tests/ln/target-1: Likewise.
+ * tests/ls/Makefile.am: Likewise.
+ * tests/ls/Test.pm: Likewise.
+ * tests/ls/dangle: Likewise.
+ * tests/ls/dired: Likewise.
+ * tests/ls/file-type: Likewise.
+ * tests/ls/follow-slink: Likewise.
+ * tests/ls/infloop: Likewise.
+ * tests/ls/inode: Likewise.
+ * tests/ls/m-option: Likewise.
+ * tests/ls/no-arg: Likewise.
+ * tests/ls/recursive: Likewise.
+ * tests/ls/rt-1: Likewise.
+ * tests/ls/stat-dtype: Likewise.
+ * tests/ls/stat-failed: Likewise.
+ * tests/ls/stat-vs-dirent: Likewise.
+ * tests/ls/symlink-slash: Likewise.
+ * tests/ls/time-1: Likewise.
+ * tests/ls-2/tests: Likewise.
+ * tests/md5sum/basic-1: Likewise.
+ * tests/md5sum/newline-1: Likewise.
+ * tests/misc/Makefile.am: Likewise.
+ * tests/misc/base64: Likewise.
+ * tests/misc/basename: Likewise.
+ * tests/misc/cat-proc: Likewise.
+ * tests/misc/close-stdout: Likewise.
+ * tests/misc/csplit: Likewise.
+ * tests/misc/date: Likewise.
+ * tests/misc/date-sec: Likewise.
+ * tests/misc/df: Likewise.
+ * tests/misc/dirname: Likewise.
+ * tests/misc/expand: Likewise.
+ * tests/misc/false-status: Likewise.
+ * tests/misc/fold: Likewise.
+ * tests/misc/head-c: Likewise.
+ * tests/misc/head-elide-tail: Likewise.
+ * tests/misc/head-pos: Likewise.
+ * tests/misc/mknod: Likewise.
+ * tests/misc/nice: Likewise.
+ * tests/misc/nl: Likewise.
+ * tests/misc/nohup: Likewise.
+ * tests/misc/paste-no-nl: Likewise.
+ * tests/misc/pathchk1: Likewise.
+ * tests/misc/printf: Likewise.
+ * tests/misc/printf-hex: Likewise.
+ * tests/misc/pwd-long: Likewise.
+ * tests/misc/sha224sum: Likewise.
+ * tests/misc/sha256sum: Likewise.
+ * tests/misc/sha384sum: Likewise.
+ * tests/misc/sha512sum: Likewise.
+ * tests/misc/shuf: Likewise.
+ * tests/misc/sort-merge: Likewise.
+ * tests/misc/sort-rand: Likewise.
+ * tests/misc/split-a: Likewise.
+ * tests/misc/split-fail: Likewise.
+ * tests/misc/split-l: Likewise.
+ * tests/misc/stat-fmt: Likewise.
+ * tests/misc/stat-printf: Likewise.
+ * tests/misc/tac-continue: Likewise.
+ * tests/misc/test-diag: Likewise.
+ * tests/misc/tty-eof: Likewise.
+ * tests/misc/wc-files0: Likewise.
+ * tests/misc/wc-files0-from: Likewise.
+ * tests/mkdir/concurrent-1: Likewise.
+ * tests/mkdir/p-1: Likewise.
+ * tests/mkdir/p-2: Likewise.
+ * tests/mkdir/p-3: Likewise.
+ * tests/mkdir/p-slashdot: Likewise.
+ * tests/mkdir/p-thru-slink: Likewise.
+ * tests/mkdir/parents: Likewise.
+ * tests/mkdir/perm: Likewise.
+ * tests/mkdir/special-1: Likewise.
+ * tests/mkdir/t-slash: Likewise.
+ * tests/mkdir/writable-under-readonly: Likewise.
+ * tests/mv/Makefile.am: Likewise.
+ * tests/mv/acl: Likewise.
+ * tests/mv/atomic: Likewise.
+ * tests/mv/backup-is-src: Likewise.
+ * tests/mv/childproof: Likewise.
+ * tests/mv/diag: Likewise.
+ * tests/mv/dir-file: Likewise.
+ * tests/mv/dir2dir: Likewise.
+ * tests/mv/dup-source: Likewise.
+ * tests/mv/force: Likewise.
+ * tests/mv/hard-2: Likewise.
+ * tests/mv/hard-3: Likewise.
+ * tests/mv/hard-4: Likewise.
+ * tests/mv/hard-link-1: Likewise.
+ * tests/mv/i-1: Likewise.
+ * tests/mv/i-2: Likewise.
+ * tests/mv/i-3: Likewise.
+ * tests/mv/i-4: Likewise.
+ * tests/mv/i-link-no: Likewise.
+ * tests/mv/into-self: Likewise.
+ * tests/mv/into-self-2: Likewise.
+ * tests/mv/into-self-3: Likewise.
+ * tests/mv/into-self-4: Likewise.
+ * tests/mv/leak-fd: Likewise.
+ * tests/mv/mv-special-1: Likewise.
+ * tests/mv/no-target-dir: Likewise.
+ * tests/mv/part-fail: Likewise.
+ * tests/mv/part-hardlink: Likewise.
+ * tests/mv/part-rename: Likewise.
+ * tests/mv/part-symlink: Likewise.
+ * tests/mv/partition-perm: Likewise.
+ * tests/mv/perm-1: Likewise.
+ * tests/mv/reply-no: Likewise.
+ * tests/mv/setup: Likewise.
+ * tests/mv/to-symlink: Likewise.
+ * tests/mv/trailing-slash: Likewise.
+ * tests/mv/update: Likewise.
+ * tests/mv/vfat: Likewise.
+ * tests/od/od-N: Likewise.
+ * tests/od/x8: Likewise.
+ * tests/pr/Makefile.am: Likewise.
+ * tests/pr/Test.pm: Likewise.
+ * tests/readlink/can-e: Likewise.
+ * tests/readlink/can-f: Likewise.
+ * tests/readlink/can-m: Likewise.
+ * tests/readlink/rl-1: Likewise.
+ * tests/rm/Makefile.am: Likewise.
+ * tests/rm/cycle: Likewise.
+ * tests/rm/dangling-symlink: Likewise.
+ * tests/rm/deep-1: Likewise.
+ * tests/rm/dir-no-w: Likewise.
+ * tests/rm/dir-nonrecur: Likewise.
+ * tests/rm/dot-rel: Likewise.
+ * tests/rm/empty-inacc: Likewise.
+ * tests/rm/empty-name: Likewise.
+ * tests/rm/f-1: Likewise.
+ * tests/rm/fail-2eperm: Likewise.
+ * tests/rm/fail-eperm: Likewise.
+ * tests/rm/hash: Likewise.
+ * tests/rm/i-1: Likewise.
+ * tests/rm/i-no-r: Likewise.
+ * tests/rm/inaccessible: Likewise.
+ * tests/rm/interactive-always: Likewise.
+ * tests/rm/interactive-once: Likewise.
+ * tests/rm/ir-1: Likewise.
+ * tests/rm/isatty: Likewise.
+ * tests/rm/no-give-up: Likewise.
+ * tests/rm/r-1: Likewise.
+ * tests/rm/r-2: Likewise.
+ * tests/rm/r-3: Likewise.
+ * tests/rm/rm1: Likewise.
+ * tests/rm/rm2: Likewise.
+ * tests/rm/rm3: Likewise.
+ * tests/rm/rm4: Likewise.
+ * tests/rm/rm5: Likewise.
+ * tests/rm/sunos-1: Likewise.
+ * tests/rm/unread2: Likewise.
+ * tests/rm/unread3: Likewise.
+ * tests/rm/unreadable: Likewise.
+ * tests/rmdir/fail-perm: Likewise.
+ * tests/rmdir/ignore: Likewise.
+ * tests/rmdir/t-slash: Likewise.
+ * tests/seq/basic: Likewise.
+ * tests/sha1sum/basic-1: Likewise.
+ * tests/sha1sum/sample-vec: Likewise.
+ * tests/shred/exact: Likewise.
+ * tests/shred/remove: Likewise.
+ * tests/sort/Makefile.am: Likewise.
+ * tests/sort/Test.pm: Likewise.
+ * tests/sort-time/Makefile: Likewise.
+ * tests/sort-time/README: Likewise.
+ * tests/sort-time/rand-gen: Likewise.
+ * tests/stty/basic-1: Likewise.
+ * tests/stty/row-col-1: Likewise.
+ * tests/sum/basic-1: Likewise.
+ * tests/sum/sysv: Likewise.
+ * tests/tac/Makefile.am: Likewise.
+ * tests/tac/Test.pm: Likewise.
+ * tests/tail/Makefile.am: Likewise.
+ * tests/tail/Test.pm: Likewise.
+ * tests/tail-2/Makefile.am: Likewise.
+ * tests/tail-2/append-only: Likewise.
+ * tests/tail-2/assert: Likewise.
+ * tests/tail-2/assert-2: Likewise.
+ * tests/tail-2/big-4gb: Likewise.
+ * tests/tail-2/fflush: Likewise.
+ * tests/tail-2/infloop-1: Likewise.
+ * tests/tail-2/proc-ksyms: Likewise.
+ * tests/tail-2/start-middle: Likewise.
+ * tests/tail-2/tail-n0f: Likewise.
+ * tests/tee/basic: Likewise.
+ * tests/tee/dash: Likewise.
+ * tests/test/Makefile.am: Likewise.
+ * tests/test/Test.pm: Likewise.
+ * tests/touch/Makefile.am: Likewise.
+ * tests/touch/dangling-symlink: Likewise.
+ * tests/touch/empty-file: Likewise.
+ * tests/touch/fail-diag: Likewise.
+ * tests/touch/fifo: Likewise.
+ * tests/touch/no-create-missing: Likewise.
+ * tests/touch/no-rights: Likewise.
+ * tests/touch/not-owner: Likewise.
+ * tests/touch/obsolescent: Likewise.
+ * tests/touch/read-only: Likewise.
+ * tests/touch/relative: Likewise.
+ * tests/tr/Makefile.am: Likewise.
+ * tests/tr/Test.pm: Likewise.
+ * tests/tr/failures: Likewise.
+ * tests/tsort/basic-1: Likewise.
+ * tests/unexpand/basic-1: Likewise.
+ * tests/uniq/Makefile.am: Likewise.
+ * tests/uniq/Test.pm: Likewise.
+ * tests/wc/Makefile.am: Likewise.
+ * tests/wc/Test.pm: Likewise.
+
+2006-08-17 Jim Meyering <jim@meyering.net>
+
+ ls -CF would misalign columns in some cases.
+ * src/ls.c (get_type_indicator): New function. extracted from...
+ (print_type_indicator): ...here. Use it.
+ (length_of_file_name_and_frills): Use it here, too, rather than
+ assuming stat.st_mode is valid.
+ Reported by Andreas Schwab, here:
+ <http://article.gmane.org/gmane.comp.gnu.core-utils.bugs/7774>
+ See the test for this above. FYI, I did ls -CF /proc and visually
+ inspected the result.
+
+ * src/copy.c (copy_internal, same_file_ok): Adjust comments not
+ to mention the now-removed cp_options.xstat member.
+
+ * Makefile.maint (patch-check): Adapt to work now that the patch
+ modifies more than one file in src/.
+
+ With this patch, permit building with Solaris cc on Solaris 7.
+ * src/c99-to-c89.diff: Add diffs to convert more c99-isms.
+ This integrates patches from Bruno Haible.
+
+2006-08-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix some problems reported by Bruno Haible.
+ * tests/chmod/setgid (abs_srcdir): Remove; not used or needed.
+ Skip this test if "chmod g+s d" silently does nothing.
+ * tests/ls-2/tests: Skip this test suite if we can't set up files
+ properly for the setuid-etc test. This simplifies some of the
+ hacks we were using to work around porting problems.
+
+2006-08-16 Jim Meyering <jim@meyering.net>
+
+ * tests/cp/Makefile.am: Don't mark "acl" as XFAIL.
+ * tests/cp/acl: Instead, skip the test if either setfacl
+ or getfacl fails.
+ Reported by Michael Stone.
+
+2006-08-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/lang-default (LC_ALL): Set to "C", so we get
+ English-language diagnostics. Unset the other variables; it
+ should be portable to use 'unset' for this stuff nowadays.
+ Problem reported by Bruno Haible. Using "C" reverses the
+ 2000-10-22 change to fileutils in this area.
+
+ Fix bugs when printing plurals of numbers that are not
+ unsigned long int values.
+ * src/system.h (select_plural): New function.
+ * src/md5sum.c (digest_check): Use select_plural to avoid bug.
+ * src/uptime.c (print_uptime): Likewise.
+ * src/dd.c (print_stats): Likewise. Also, don't use ngettext to
+ print a floating point number, as reducing to 0 or 1 doesn't work
+ for some languages. Instead, just use "s" for seconds since it
+ doesn't need a plural form.
+
+2006-08-16 Bruno Haible <bruno@clisp.org>
+
+ Old versions of gzip would write --help output to stderr, and it
+ would be annoying to see that in the output of every "make" command.
+ * Makefile.maint (gzip_rsyncable): Throw away stderr output of
+ "gzip --help".
+
+2006-08-16 Andreas Schwab <schwab@suse.de>
+
+ * tests/cp/acl: Don't use non-portable == operator for test.
+
+2006-08-16 Jim Meyering <jim@meyering.net>
+
+ * tests/ls/stat-dtype: Use stat to test file system type, rather
+ than df -T, in case /etc/mtab lies. Reported by Michael Stone.
+
+2006-08-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Mention that df exits with nonzero status if it generates
+ no output. This change was in 6.0 but inadvertently unmentioned.
+ * src/df.c (file_systems_processed): Renamed from n_valid_args, and now
+ a boolean.
+ (show_dev): Don't set it until we actually output something.
+ Print the header if this is the first output.
+ (main): Don't print a header, as that is now show_dev's job.
+ * tests/misc/Makefile.am (TESTS): Add df.
+ * tests/misc/df: New file.
+
+2006-08-15 Eric Blake <ebb9@byu.net>
+
+ * src/stat.c (USE_STATVFS): Define to 0 if f_type is needed, but
+ statvfs.f_type not present. See
+ <http://savannah.gnu.org/bugs/?func=detailitem&item_id=16325>.
+
+2006-08-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/dd.c (print_stats): Don't substitute "1" for number, as this
+ causes confusion for the Hungarian translators. Problem reported
+ by Egmont Koblinger here:
+ http://article.gmane.org/gmane.comp.gnu.core-utils.bugs/7726
+
+2006-08-15 Jim Meyering <jim@meyering.net>
+
+ * .x-sc_require_config_h: Add lib/at-func.c.
+
+ * NEWS: Add a line for 6.1-cvs.
+ * configure.ac (AC_INIT): Bump to 6.1 and add "-cvs" suffix.
+
+2006-08-15 Jim Meyering <jim@meyering.net>
+
+ * Version 6.0.
+ * NEWS: Record the 6.0 release date.
+ * configure.ac (AC_INIT): Remove "-cvs" suffix from version string.
+
+ * TODO: Add an item (convert to use gnulib-tool), add to the plan
+ for id-vs-getgrouplist, and remove a few completed items.
+
+ * Makefile.maint (alpha beta major): Fix syntax error.
+
+2006-08-13 Jim Meyering <jim@meyering.net>
+
+ * src/shred.c (usage): Don't indent the second line of an item.
+ Otherwise, help2man would misformat the output.
+ Reported by Adam Buchbinder in <https://launchpad.net/bugs/48917>.
+
+2006-08-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * configure.ac (AM_GNU_GETTEXT): Upgrade to need-formatstring-macros.
+ Suggested by Eric Blake to avoid problems like
+ <http://lists.gnu.org/archive/html/bug-coreutils/2006-07/msg00087.html>.
+
+2006-08-11 Jim Meyering <jim@meyering.net>
+
+ * tests/ls/stat-vs-dirent: Too many (losing) systems trigger the
+ failure that this test checks for (stat/dirent inode mismatch at
+ a mount point), so continue to give a diagnostic about the failure,
+ but don't actually count it as a failure.
+
+2006-08-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * ABOUT-NLS: Update from gettext 0.15.
+ * configure.ac (AM_GNU_GETTEXT_VERSION): Update from 0.13.1 to 0.15.
+
+ * src/csplit.c (struct control): Remove fastmap member.
+ (extract_regexp): Allocate fastmap separately, since otherwise
+ it might move due to a realloc. This fixes a bug that led
+ to a core dump on 64-bit sparc Solaris 10 (Sun Studio 10).
+
+2006-08-10 Jim Meyering <jim@meyering.net>
+
+ * tests/ls/stat-dtype: If "." is tmpfs, skip this test unless uname -s
+ reports "Linux". This avoids a failure on Solaris 10's tmpfs.
+ Redirect both stdout and stderr of df invocations.
+
+ * src/dircolors.hin: Add a TERM directive for each of the following:
+ ansi, color-xterm, gnome, konsole, kterm, rxvt-cygwin,
+ rxvt-cygwin-native, screen.linux, xterm-256color.
+ Sort the TERM directives.
+ From Mike Frysinger.
+
+2006-08-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/dd.c (usage): Warn about oflag=append without conv=notrunc.
+ See Debian bug 373736.
+
+ * src/dircolors.hin: Add mlterm, rxvt-unicode; this fixes Debian
+ bug 317503.
+
+ * src/.cvsignore: Add shuf.
+
+ * Makefile.maint: Remove the po-update procedure; it doesn't
+ work with the new repository on http://www.iro.umontreal.ca/.
+ For now I guess we'll have to fix things by hand.
+ (do-po-update, po-update): Remove. All references removed.
+
+ * src/shuf.c (next_line): New function.
+ (read_input): Use it, to avoid relying on GCC-specific behavior
+ with void * arithmetic. Problem reported by Bob Proulx.
+ * Makefile.maint (my-distcheck): Compile with -Wpointer-arith
+ to detect this sort of problem automatically in the future.
+
+2006-08-09 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c: Add a compile-time check to ensure that filetype
+ and filetype_letter have the same number of elements.
+
+ * tests/misc/sort-rand: Remove use of --seed=S.
+
+2006-08-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ Add a command 'shuf', and modify shred and sort to use the new
+ random number generator library of 'shuf'.
+
+ * AUTHORS: Add shuf.
+ * README: Likewise.
+ * NEWS: Likewise. Mention new --random-source option for shred
+ and sort. Move "sort +1 -2" notice to the appropriate section,
+ and clarify its role with respect to POSIXLY_CORRECT.
+ * man/.cvsignore: Add shuf.1.
+ * man/Makefile.am (dist_man_MANS): Add shuf.1.
+ (shuf.1): New dependency.
+ * man/shuf.x: New file.
+ * src/Makefile.am (bin_PROGRAMS): Add shuf.
+ (EXTRA_DIST): Remove rand-isaac.c.
+ (shuf_LDADD): New macro.
+ * src/rand-isaac.c: Remove, moving most of its contents to
+ lib/rand-isaac.c.
+ * src/shuf.c: New file.
+ * src/shred.c: Use new random-number interface rather than rand-isaac.c.
+ Don't include rand-isaac.c; include randint.h and randread.h instead.
+ (RANDOM_SOURCE_OPTION): New enum.
+ (long_opts, usage, main): New option --random-source.
+ * src/sort.c: Likewise.
+ * src/shred.c (struct irand_state, irand_init, irand32, irand_mod): Remove.
+ All callers changed to use randint interface.
+ (fillrand): Remove. All callers changed to use randread interface.
+ (dopass): Remove dependency on ISAAC buffer size.
+ (genpattern): Don't wipe the random state here.
+ (randint_source): New static var.
+ (clear_random_data): New function.
+ (main): Allocate random source, and arrange to wipe it on exit.
+ * src/sort.c: Include md5.h, randread.h, xmemxfrm.h.
+ (longopts, usage, main): Remove undocumented --seed option;
+ it's now replaced by --random-source.
+ (rand_state, get_hash): Remove.
+ (randread_source): New static var.
+ (random_state, cmp_hashes, compare_random): New functions; they guarantee
+ no collisions in the random hash function.
+ (keycompare): Use compare_random for -R; don't fall back on comparing
+ via memcoll, since compare_random does the right thing.
+ * tests/misc/Makefile.am (TESTS): Add shuf.
+ * tests/misc/shuf: New file.
+
+2006-07-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/copy.c (set_author): Preserve the st_author field via the
+ file descriptor dest_desc.
+
+2006-07-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: chmod now preserves setuid and setgid bits on directories
+ if you use a numeric mode with them clear, e.g., "chmod 755 DIR".
+
+ Fix test case problems if working directory is setgid,
+ reported by Bob Proulx.
+ * tests/cp/fail-perm: Use symbolic mode so that we clear
+ setgid bit more reliably on directories.
+ * tests/mkdir/special-1 (set_mode_string): Likewise.
+
+2006-07-27 Jim Meyering <jim@meyering.net>
+
+ * src/chgrp.c (usage): Use correct grammar in description of the
+ --reference option
+ * src/chown.c (usage): Likewise.
+
+2006-07-26 Thomas Schwinge <tschwinge@gnu.org> (tiny change)
+
+ * src/copy.c (set_author) [HAVE_STRUCT_STAT_ST_AUTHOR]:
+ Correctly access SRC_SB's element ST_AUTHOR.
+
+2006-07-26 Jim Meyering <jim@meyering.net>
+
+ * tests/ls/stat-failed: Adapt to match new expected output.
+ From Paul Eggert.
+
+ * src/ls.c (print_color_indicator): Test for S_IFREG first, rather
+ than having the code test for all of the other types first.
+ Hoist the set-uid/gid-testing code "up" into this new block.
+ Classify any other type of file (e.g., S_TYPEISSHM, etc.) as
+ C_ORPHAN, not as C_FILE.
+
+2006-07-26 Jim Meyering <jim@meyering.net>
+
+ Checking in a change from Paul.
+
+ 2006-07-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/ls.c (DT_INIT): Remove. All uses removed.
+ (enum filetype): Use an ordinary enum rather than trying to keep
+ the values in sync with DT_FIFO etc. That way, we don't have
+ to make special assumptions about them. All uses changed.
+ (whiteout): New constant member of enum filetype.
+ (filetype_letter): New constant, for use with enum filetype.
+ (FILETYPE_INDICATORS): New initializer list.
+ (print_dir): Add case for DT_WHT.
+ (gobble_file): If stat fails, don't discard information from
+ readdir; instead, preserve it so it can be printed.
+ (print_long_format): Fall back on readdir result if stat info
+ is not available. Use "?" to denote each unknown mode char,
+ instead of an overall "?", since we now know some of the mode
+ typically.
+ (print_type_indicator): Now that MODE isn't necessarily
+ useful, guard all uses.
+ Now that two blocks in the type-checking tree can set "type = C_FILE",
+ move the suffix-handling code out and down.
+
+2006-07-26 Jim Meyering <jim@meyering.net>
+
+ Prepare for the above change.
+ * src/ls.c [struct fileinfo] (stat_ok): Rename from stat_failed,
+ and adjust uses. From a patch by Paul Eggert.
+
+2006-07-26 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c: Correct indentation/formatting in a few places.
+
+2006-07-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/cp/fail-perm: Use "chmod 0500" rather than "chmod 500".
+ Problem report and fix from Bob Proulx.
+ * NEWS: Clarify the "chmod 0500" news, and correct the vague
+ statements about compatibility with BSD.
+
+2006-07-25 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c (gobble_file): When handling a stat-failed entry,
+ print the entry name not the absolute_name -- to be consistent
+ with the usual case.
+ * tests/ls/stat-failed: Update accordingly.
+
+ * src/ls.c: Add parens around the new uses of ?: ternary operator.
+
+ * src/dircolors.hin: Mention that ORPHAN refers not just to dangling
+ symlinks.
+
+ Get --dired offsets right when handling stat-failed entries.
+ * src/ls.c (print_long_format): Be careful to increment P by the
+ appropriate amount, even when inode_number_width and nlink_width
+ are zero.
+ * tests/ls/stat-failed: Test for the above.
+
+ * src/ls.c (gobble_file) [USE_ACL]: Don't use-uninitialized the
+ have_acl member. That would happen for a directory with both a
+ non-stat'able entry and one with an ACL.
+
+ * src/ls.c (gobble_file): Make it so failure to stat a
+ non-command-line file provokes an exit status of 1, not 0.
+ Say "cannot access" rather than "cannot stat".
+ * tests/ls/stat-failed: New file/test, for the above.
+ * tests/ls/Makefile.am (TESTS): Add stat-failed.
+ * tests/ls-2/tests (no-a-isdir-b): Update to reflect addition
+ of "cannot access " to diagnostic.
+
+ * src/ls.c: Declare stat_failed to be "bool", not "int" everywhere.
+
+ * src/ls.c [enum filetype] (command_line): Remove member. Not needed.
+ Replace all occurrences of "type == command_line" with the
+ equivalent, "command_line_arg".
+
+ * src/ls.c: Apply the stat-failed parts of Red Hat's
+ coreutils-selinux.patch. From Ulrich Drepper.
+ This makes it so files not mentioned on the command line (e.g.,
+ names read from a directory that *is* mentioned on the command
+ line) for which stat fails are still listed. With --color,
+ such files are colored just like ORPHANs (aka dangling symlinks).
+
+ * src/df.c (n_valid_args): Declare global to be static.
+
+2006-07-24 Jim Meyering <jim@meyering.net>
+
+ * tests/ls/stat-dtype: Skip this test on reiserfs, since that file
+ system lacks d_type support.
+
+2006-07-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * man/chmod.x: Update to reflect recent changes to coreutils.texi.
+
+2006-07-21 Jim Meyering <jim@meyering.net>
+
+ * src/su.c (usage): Correct typo in --help output: s/commmand/command/
+ Reported by Tim Waugh.
+ Also remove the comment duplicating much of --help output.
+
+ * src/ls.c (FILE_TYPE_INDICATOR_OPTION): Reposition this new
+ name so the list remains alphabetized.
+
+ Fix another bug: ls --indicator-style=file-type would call
+ stat for a symlink, even though it wasn't always needed.
+ In some cases, that unnecessary stat would cause ls to fail.
+ * src/ls.c (gobble_file): Don't treat symlinks specially (in
+ requiring a stat syscall). Remove the offending exclusion.
+
+ * NEWS: Mention the fix.
+
+ * tests/ls/stat-dtype: New file/test, for the above fix.
+ Also exercises the new df feature, below.
+
+ * src/df.c (main): Fail and don't print the headers if no
+ file system is processed. This makes it easy to test whether
+ a specified directory is on a file system of a given type or types.
+ Otherwise, applications would have had to parse df's output.
+ E.g., is "." either ext3 or reiserfs: df -t ext3 -t reiserfs .
+
+ Fix a bug: ls --file-type worked like --indicator-style=slash,
+ rather than like --indicator-style=file-type.
+ * src/ls.c (FILE_TYPE_INDICATOR_OPTION): New enum member.
+ (long_options): Map "file-type" to FILE_TYPE_INDICATOR_OPTION,
+ not to 'p'.
+ (decode_switches): Handle new case: FILE_TYPE_INDICATOR_OPTION.
+ * NEWS: Mention the fix.
+ * tests/ls-2/tests (file-type): New test, for the above fix.
+
+2006-07-19 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c (print_dir): Give a better diagnostic for failed opendir.
+
+ * Makefile.am (EXTRA_DIST): Add build-aux/vc-list-files.
+
+2006-07-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: chmod, install, and mkdir now leave setgid and setuid bits
+ of directories alone unless you specify them explicitly.
+ install and mkdir now implement X correctly.
+ install now creates parent directories with mode 755, without
+ changing their owner or group.
+ * src/chmod.c (process_file): Adjust to mode_adjust API change.
+ * src/install.c: Include mkancesdirs.h.
+ (announce_mkdir, make_ancestor): New functions.
+ (DEFAULT_MODE): New macro, specifying initial value of 'mode'.
+ (mode): Use it.
+ (dir_mode, dir_mode_bits): New vars.
+ (main): Set dir modes separately from nondir, so that the X
+ op of -m works correctly.
+ (main): Remove cwd_errno cruft, since make_dir_parents no longer
+ affects cwd. Adjust to new make_dir_parents API.
+ (install_file_in_file_parents): 2nd arg is now char *, not char
+ const *. Use mkancesdirs instead of rolling our own code.
+ (change_attributes): Don't worry about AFS, since that kludge
+ should not be needed any more.
+ * src/mkdir.c (struct mkdir_options): New struct.
+ (announce_mkdir, make_ancestor): New functions.
+ (main): Use them. Adjust to mode_adjust API change. Stick with
+ umask 0. Use make_dir_parents for all the work.
+ * src/mkfifo.c (main): Adjust to new mode_adjust API.
+ * src/mknod.c (main): Likewise.
+ * tests/chmod/setgid: Do the setgid test instead of bailing.
+ * tests/mkdir/p-3: Remove re_protect case that no longer applies.
+ GNU chmod now behaves like other versions of chmod.
+ * tests/mkdir/perm: Add a test for the X bug.
+
+2006-07-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/base64.c (do_decode): Output to parameter OUT, not to stdout.
+ This doesn't fix any bugs, since OUT always equals stdout, but it
+ makes the code easier to understand.
+
+2006-07-14 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (CVS_LIST): Use new file, build-aux/vc-list-files,
+ rather than open-coding it. Now supports mercurial, too.
+ * .hgignore: New file.
+ * Makefile.am (EXTRA_DIST): Add .hgignore, which ignores nearly
+ all generated files, including ones like configure and po/*.po
+ that are currently version-controlled in cvs.
+
+ * Makefile.am (EXTRA_DIST): Add a few more .??* files.
+ They've been in CVS, just haven't been distributed before this.
+ Distribute ChangeLog-2005, too.
+ (MAINTAINERCLEANFILES): Add THANKS-to-translators.
+
+2006-07-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/system.h: Assume <dirent.h> exists, since gnulib assumes
+ this now as well.
+
+2006-07-09 Jim Meyering <jim@meyering.net>
+
+ * tests/mv/dir2dir: Adjust so failing with ENOTEMPTY is ok, too.
+ That happens with Linux/tmpfs.
+ * tests/mv/Makefile.am (TESTS): Add dir2dir.
+
+2006-07-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ Adjust to recent updates from gnulib.
+ * src/dd.c (apply_translations): Use toupper rather than
+ islower followed by toupper; it's simpler and typically
+ faster now that we assume at least C89 semantics. Similarly
+ for tolower.
+ * src/sort.c (inittables): Likewise.
+ * src/expand.c (expand): Don't assume that isprint etc. return
+ booleans (needed for pre-C99 hosts).
+ * src/fmt.c (check_punctuation): Likewise.
+ * src/ptx.c (initialize_regex, fix_output_parameters): Likewise.
+ * src/tr.c (is_char_class_member): Likewise.
+ * src/unexpand.c (unexpand): Likewise.
+ * src/join.c (is_blank): Remove; no longer needed. All uses
+ replaced by isblank (to_uchar (...)).
+ * src/pinky.c (create_fullname): Don't assume char is unsigned.
+ * src/printf.c (print_esc): Likewise.
+ * src/ptx.c (SKIP_NON_WHITE, SKIP_WHITE, SKIP_WHITE_BACKWARDS):
+ (copy_unescaped_string): Likewise.
+ * src/stat.c (print_it): Likewise.
+ * src/system.h (_D_EXACT_NAMELEN): Renamed from NLENGTH, for
+ convenience on GNU systems. All uses changed. Don't bother
+ looking for any dirent.h substitute other than ndir.h.
+ (D_INO): Remove unnecessary parentheses.
+ (IN_CTYPE_DOMAIN, ISGRAPH, ISPRINT, ISALNUM, ISALPHA):
+ (ISCNTRL, ISLOWER, ISPUNCT, ISSPACE, ISUPPER, ISXDIGIT):
+ (ISDIGIT_LOCALE, TOLOWER, TOUPPER): Remove. All uses changed
+ to ctype.h equivalents.
+ (isblank): Renamed from ISBLANK. Check for HAVE_DECL_ISBLANK too.
+ All uses changed.
+
+2006-07-08 Jim Meyering <jim@meyering.net>
+
+ * tests/mv/dir2dir: New file, test for 2006-07-05 fix in copy.c.
+
+ * Makefile.maint (sc_the_the): New rule.
+
+ * src/dd.c (skip): Remove one of two adjacent "the"s in a comment.
+ * tests/Coreutils.pm (run_tests): Remove one of two adjacent "then"s
+ in a comment.
+
+2006-07-07 Jim Meyering <jim@meyering.net>
+
+ * NEWS: Mention that mv can now remove an empty destination directory,
+ and give an example. Prompted by a report from Florent Bayle.
+
+2006-07-05 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c (usage): Correct the description of -G: it is useful
+ only in a long listing. Reported by Martin Pool in
+ <https://launchpad.net/distros/ubuntu/+source/coreutils/+bug/51653>.
+
+ * man/chmod.x: Correct the description of the sticky bit. Reported
+ by Chris Moore via Ian Jackson in <http://bugs.debian.org/376745>.
+
+ * src/copy.c (copy_internal): Don't work around old NFS clients like
+ SunOS-4.1.4 and Irix 5.3 that set errno to values like EIO and
+ ENOTEMPTY upon failed rename. Otherwise, we risk misinterpreting
+ a banal failure as a recursive move-into-self failure.
+ Reported by Florent Bayle in <http://bugs.debian.org/376749>.
+
+ * src/c99-to-c89.diff: Regenerate, to remove fuzz.
+
+2006-07-03 Jim Meyering <jim@meyering.net>
+
+ Plug another unusual leak.
+ (AD_mark_helper): Free malloc'd filename if hash_insert says
+ that string is already in the hash table.
+
+ The dev/inode of the topmost directory in each hierarchy were not
+ being recorded.
+ * src/remove.c (remove_cwd_entries): Don't call cycle_check here.
+ (AD_push): Call it from here instead.
+
+ Fix two small leaks.
+ * src/remove.c (AD_stack_clear): New function.
+ (rm_1): Use it.
+ (AD_pop_and_chdir): Free *prev_dir just before longjmp.
+
+ * tests/Makefile.am, tests/*/Makefile.am: (TESTS_ENVIRONMENT):
+ Add $VG_PATH_PREFIX as a prefix to $PATH
+
+ * tests/envvar-check (vars): Add CDPATH and POSIXLY_CORRECT.
+ * tests/Makefile.am (evar-check): Remove rule.
+ (EXTRA_DIST): Remove .env-warn.
+ * tests/.env-warn: Remove file. No longer used.
+ Suggestion from Eric Blake.
+
+2006-07-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/system.h: Include <stdint.h> unconditionally, since we
+ now assume the stdint module.
+
+2006-07-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: With no operand, 'tail -f' now silently ignores the '-f'
+ only if standard input is a FIFO or pipe and POSIXLY_CORRECT is set.
+ * src/tail.c (main): Implement this.
+ * tests/tail/Test.pm (f-pipe-1): Renamed from f-1.
+ (test_vector): Set POSIXLY_CORRECT for the f-pipe-* tests.
+
+2006-07-01 Jim Meyering <jim@meyering.net>
+
+ * src/ln.c (do_link): Use new, shorter URL, for ag-review link.
+
+ * .x-sc_require_config_h: Add ^lib/xstrtold\.c$, so make distcheck
+ passes once again.
+
+2006-06-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: seq now uses long double internally rather than double.
+ It now defaults to a minimal fixed point format if possible.
+ It lets you use %a, %A, %E, %F, %G.
+ * src/Makefile.am (seq_LDADD): Remove $(SEQ_LIBM); add $(POW_LIB).
+ * src/seq.c: Don't include <math.h> or <xstrtol.h>; no longer needed.
+ (isfinite) [!defined isfinite]: New macro.
+ (separator, terminator): Now points to const.
+ (first, step, last): Remove.
+ (usage): Update to match new behavior.
+ (struct operand, operand): New type.
+ (scan_arg): Renamed from scan_double_arg, since we no longer use double.
+ All uses changed.
+ Compute and return a value of type operand, not double.
+ (long_double_format): Renamed from valid_format, and now returns a
+ new format with an "L" added if needed, if the original format was
+ valid. Allow %a, %A, %E, %F, and %G formats.
+ (print_numbers): Take numeric values as args rather than from globals.
+ Print long double, not double.
+ (get_width_format): Remove.
+ (get_default_format): New function.
+ (main): Implement new way of calculating default format.
+ Don't worry about locale's representation of the decimal point, since
+ the arguments are always processed in the C locale.
+ * tests/seq/basic (neg-2): Adjust to new default format.
+ (eq-wid-1, eq-wid-2): Resurrect these tests, since the new
+ implementation should do the right thing.
+
+2006-06-30 Jim Meyering <jim@meyering.net>
+
+ * tests/stty/basic-1: Work around an intermittent test failure
+ on HP-UX 11.11. Report and analysis from Bob Proulx.
+ http://article.gmane.org/gmane.comp.gnu.core-utils.bugs/7475
+
+2006-06-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Support obsolete usages like "sort +1 -2" even when
+ conforming to POSIX 1003.1-2001, since this is a pure extension to
+ POSIX. Problem reported by Christian in:
+ http://lists.gnu.org/archive/html/bug-coreutils/2006-06/msg00220.html
+ * src/sort.c (main): Implement this.
+
+ * src/system.h (CLOSEDIR): Remove. All uses changed to closedir.
+ Autoconf 2.60 says this stuff was obsolete.
+
+2006-06-28 Jim Meyering <jim@meyering.net>
+
+ * src/c99-to-c89.diff: Regenerate, to remove fuzz.
+
+2006-06-28 Bob Proulx <bob@proulx.com> (tiny change)
+
+ * tests/mv/i-link-no: Work around HP-UX /bin/sh tracing problem
+ (set -x when VERBOSE=yes) when stderr is redirected before stdout
+ causing shell tracing of the stdout redirection to be written to
+ the stderr file. Avoid problem and test failure on HP-UX by
+ redirecting stderr last.
+ * tests/dd/unblock-sync: Order shell file redirections for
+ stderr and stdout in the common style.
+ tests/acl: Likewise.
+
+2006-06-27 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/cat-proc: Try to avoid any spurious numeric
+ differences in frequently-changing /proc/cpuinfo.
+ Reported by Nelson Beebe.
+
+2006-06-26 Jim Meyering <jim@meyering.net>
+
+ Attempt rmdir (actually, unlinkat-with-AT_REMOVEDIR) upon any
+ fd_to_subdirp failure, not just when errno == EACCES.
+ * src/remove.c (remove_dir): Use unlinkat-with-AT_REMOVEDIR, not
+ rmdir, here, even though rmdir may happen to be adequate.
+
+ * NEWS: rm no longer fails to remove an empty, unreadable directory
+ * src/remove.c (remove_cwd_entries): If we can't open a directory,
+ and the failure is not being ignored, try to remove the directory
+ with rmdir (aka unlinkat-with-AT_REMOVEDIR), in case it's empty.
+ Problem report and test case from Paul Eggert in
+ <http://article.gmane.org/gmane.comp.gnu.core-utils.bugs/7425>.
+
+ * tests/rm/empty-inacc: New test, for the above.
+
+ Avoid a segfault for wc --files0=- < /dev/null.
+ * src/wc.c (compute_number_width): Return right away if nfiles == 0.
+
+2006-06-25 Jim Meyering <jim@meyering.net>
+
+ * NEWS: wc accepts a new option --files0-from=FILE, where FILE
+ contains a list of NUL-separated file names.
+
+ * src/wc.c: Include "readtokens.h".
+ (usage): Describe the new option, and adjust the `Usage':
+ with this option, no FILE may be specified on the command line.
+ (main): Handle the new option.
+ * tests/misc/wc-files0: New tests, for the above.
+ * tests/misc/wc-files0-from: Likewise.
+ * tests/misc/Makefile.am (TESTS): Add wc-files0.
+
+2006-06-24 Jim Meyering <jim@meyering.net>
+
+ * src/md5sum.c (DIGEST_BUFFER): Remove now-unused definitions.
+
+2006-06-22 Jim Meyering <jim@meyering.net>
+
+ * src/tee.c (tee_files): Rename from tee, to avoid conflict with
+ the function in glibc's <fcntl.h>. Reported by Andreas Schwab.
+
+2006-06-19 Jim Meyering <jim@meyering.net>
+
+ * Makefile.cfg (local-checks-to-skip): Add changelog-check,
+ so this check is not run as part of "make distcheck".
+
+2006-06-18 Bob Proulx <bob@proulx.com> (tiny change)
+
+ * tests/misc/pwd-long: Fix typo (s/neq/ne/) in previous change.
+
+2006-06-18 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/pwd-long: Make error output a little clearer.
+
+2006-06-17 Jim Meyering <jim@meyering.net>
+
+ * tests/rm/inaccessible: Skip this test on systems without openat
+ support. Reported by Bob Proulx.
+
+2006-06-15 Bob Proulx <bob@proulx.com> (tiny change)
+
+ * tests/misc/mknod: Improve permission checks to handle
+ running mkdir test in set-gid directories.
+
+2006-06-14 Jim Meyering <jim@meyering.net>
+
+ * tests/du/basic: Revamp not to hard-code file system block sizes.
+
+2006-06-12 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * tests/du/Makefile.am (TESTS_ENVIRONMENT): Pass $(PERL), for
+ files0-from test.
+
+2006-06-11 Jim Meyering <jim@meyering.net>
+
+ * .gitignore: New file.
+ * Makefile.am (EXTRA_DIST): Add .gitignore.
+
+ Setting TIME_STYLE=long-iso in the environment would make the
+ cp/same-file test fail.
+ * tests/envvar-check (vars): Add TIME_STYLE to the list.
+ * tests/cp/same-file: Revert last change.
+ Source the envvar-check script, to ensure that TIME_STYLE
+ settings don't affect these tests.
+
+2006-06-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/cp/same-file: Execute 'ls' in the C locale, so that it
+ uses POSIX time stamp formats. Problem reported by John Nixon in
+ <http://lists.gnu.org/archive/html/bug-coreutils/2006-06/msg00062.html>.
+
+2006-06-10 Jim Meyering <jim@meyering.net>
+
+ * NEWS: Mention the AIX-strndup-bug vs. dircolors workaround.
+
+ Require a "Version N.M" line at the top of the ChangeLog
+ file only when making the actual release, not when running
+ "make distcheck".
+ * Makefile.maint (maintainer-distcheck): Don't depend on
+ changelog-check.
+ (alpha beta major): Depend on it here, instead.
+
+2006-06-08 Jim Meyering <jim@meyering.net>
+
+ Ensure that cat works with any of the options, -A -v -e -E -T,
+ when applied to files in /proc and /sys, even when the FIONREAD
+ ioctl produces nonsensical results. Before this change, cat would
+ produce no output (or truncated output), for some linux kernels.
+
+ * src/cat.c (write_pending): New function, factored out of cat.
+ (cat): Also interpret a negative ioctl/FIONREAD count as indicating
+ that there are bytes to read. Some versions of linux-2.6.16 do that.
+ Write any pending output before returning.
+ Reported by Dan Jacobson in <http://bugs.debian.org/370583>.
+ * NEWS: Mention this bug fix.
+ * tests/misc/cat-proc: New file. Test for the above.
+ * tests/misc/Makefile.am (TESTS): Add cat-proc.
+
+2006-06-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/expr.c (eval4): Detect overflow properly when multiplying
+ INTMAX_MIN * -1.
+
+2006-06-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: The 'expr' command now detects and reports integer overflow.
+ (It would be better to use extended precision instead, but that
+ would be more work.)
+ * src/expr.c (integer_overflow): New function.
+ (eval4, eval3): Check for integer overflow.
+
+2006-06-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix problems when building with Solaris/SVR4/etc. make, which uses a
+ different and somewhat bogus implementation of VPATH. In the
+ directory tests/misc, rename tests whose names might appear in the
+ Automake-generated rules. For example, we can't use a test named
+ 'test', since Automake generates a rule that contains the text
+ "if test -f ./$$tst; ...", and this might expand to something like
+ "if ../../../coreutils-6.0/tests/misc/test -f ./$$test; ...",
+ which executes the 'test' script rather than the 'test' command.
+ * tests/misc/false-status: Renamed from tests/misc/false.
+ * tests/misc/pwd-long: Renamed from tests/misc/pwd.
+ * tests/misc/sort-merge: Renamed from tests/misc/sort.
+ ($prog): Set to 'sort' rather than to $PROG.
+ * tests/misc/test-diag: Renamed from tests/misc/test.
+ * tests/misc/Makefile.am (PROG): Take the basename of $$tst,
+ in case Solaris make has prepended the directory.
+ (TESTS): Adjust to above renamings.
+ * tests/misc/expand: Don't assign to PROG; no longer needed
+ now that Makefile.am sets PROG to the basename.
+ * tests/misc/fold: Likewise.
+
+2006-06-03 Jim Meyering <jim@meyering.net>
+
+ Make `cp --link --no-dereference' work also on systems where the
+ link system call cannot create a hard link to a symbolic link.
+ * src/copy.c (copy_internal) [LINK_FOLLOWS_SYMLINKS]: Don't use
+ the link syscall on a symlink when it would do the wrong thing.
+ Based on the patch by Aurelien Jarno: <http://bugs.debian.org/329451>
+ * tests/cp/link-no-deref: New file/test for the above.
+ * tests/cp/Makefile.am (TESTS): Add link-no-deref.
+ * NEWS: Mention the change (doesn't affect Linux).
+
+2006-06-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix some porting problems in the test cases reported by
+ Ralf Wildenhues for HP-UX 11.23 in:
+ http://lists.gnu.org/archive/html/bug-coreutils/2006-05/msg00238.html
+ * tests/help-version: Don't assume that \< \> works in sed.
+ * tests/misc/close-stdout: Don't assume that >&- works.
+ Add a /dev/full test.
+ * tests/touch/no-create-missing: Don't assume that >&- works.
+
+2006-05-30 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c (usage): Add `v' to the list of sorting-related options.
+ From Justin Pryzby.
+
+2006-05-28 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * tests/cp/fail-perm: source lang-default.
+ * tests/rm/inaccessible: Likewise.
+
+2006-05-28 Jim Meyering <jim@meyering.net>
+
+ * tests/rm/inaccessible: AIX 4.3.3 gives a different diagnostic.
+ Recognize it, too. Reported by Ralf Wildenhues, in
+ http://lists.gnu.org/archive/html/bug-coreutils/2006-05/msg00192.html
+
+2006-05-27 Jim Meyering <jim@meyering.net>
+
+ * src/chgrp.c: Support new options: --preserve-root and
+ --no-preserve-root. Somehow this program was skipped when those
+ options were added to chown, chmod, and rm. Reported by
+ vaqflabuopac@spammotel.com in <http://bugs.debian.org/365656>.
+ * NEWS: Mention this.
+
+2006-05-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Remove mention of --seed. We'll replace it with something
+ better, and don't want to indicate that it is supported.
+ * src/sort.c (usage): Likewise.
+
+2006-05-20 Jim Meyering <jim@meyering.net>
+
+ * src/chmod.c (main): Use FTS_PHYSICAL here, too.
+
+ * src/du.c (main): Rename local, s/symlink_deref_bit/symlink_deref_bits/
+ and arrange for -D to set fts' FTS_PHYSICAL bit as well as
+ FTS_COMFOLLOW. Spotted by Justin Pryzby.
+
+ * gnupload: Merge changes from automake, retaining the ""--to...
+ kludge to placate overzealous `make distcheck' check.
+
+2006-05-19 Jim Meyering <jim@meyering.net>
+
+ * src/du.c (main): Don't let -D, -L, or -P turn off the internal
+ FTS_TIGHT_CYCLE_CHECK directory traversal option.
+ Reported by Justin Pryzby in http://bugs.debian.org/367691
+
+2006-05-15 Jim Meyering <jim@meyering.net>
+
+ * src/cp.c (usage): Correct description of -a: s/-dpR/-dpPR/.
+ From Tomas Pospisek.
+
+2006-05-13 Jim Meyering <jim@meyering.net>
+
+ * tests/mv/no-target-dir: Test two more cases.
+
+2006-05-11 Jim Meyering <jim@meyering.net>
+
+ mv -T DIR EMPTY_DIR no longer fails unconditionally
+ * src/copy.c (copy_internal): Don't manually prohibit a move where
+ the destination is an existing directory. Sometimes doing that is
+ valid. Let the rename system call enforce the rules. That is
+ allowed only when the source is a directory and the destination
+ directory (to be replaced) is empty. Reported by Eric Blake.
+ * tests/mv/no-target-dir: New file/test for this.
+ * tests/mv/Makefile.am (TESTS): Add no-target-dir.
+ * NEWS: Mention this.
+
+ * tests/mv/atomic: New file/test for yesterday's fix.
+ * tests/mv/Makefile.am (TESTS): Add atomic.
+
+ * tests/du/long-sloop: Avoid harmless `ambiguous redirect' diagnostic.
+
+2006-05-10 Jim Meyering <jim@meyering.net>
+
+ * src/copy.c (copy_internal): Don't explicitly unlink the destination
+ when moving a symlink into the place of an existing non-directory.
+ Reported by Joshua Hudson.
+ * NEWS: mention this.
+
+2006-05-07 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (patch-check): Fail if patch generates any output,
+ even merely for changed offsets.
+
+ * src/c99-to-c89.diff: Adjust to reflect new offsets.
+
+ * NEWS: Mention changes affecting df, pwd, shred.
+
+2006-05-06 Jim Meyering <jim@meyering.net>
+
+ * tests/ls/stat-vs-dirent: New test, to detect the bogus file
+ system condition where dirent.d_ino != stat.st_ino.
+ * tests/ls/Makefile.am (TESTS): Add stat-vs-dirent.
+
+2006-05-06 Eric Blake <ebb9@byu.net>
+
+ * tests/ls/inode: Expand to test inode from readdir case.
+ * tests/ls/follow-slink: Expand to test broken links encountered
+ implicitly, favoring Solaris 9 and OpenBSD 3.4 behavior.
+
+2006-05-06 Eric Blake <ebb9@byu.net>
+
+ * tests/mv/leak-fd: Work even on case-insensitive file system.
+
+2006-05-04 Jim Meyering <jim@meyering.net>
+
+ * NEWS: Mention the 2006-03-19 pwd-related change that makes
+ lib/getcwd.c work around inconsistent file system dirent.d_ino data.
+
+2006-05-03 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c (DEFINE_SORT_FUNCTIONS, LIST_SORTFUNCTION_VARIANTS):
+ Use better macro parameter names: s/basename/key_name/,
+ s/basefunc/key_cmp_func. Fix typo in comment.
+
+2006-04-29 Eric Blake <ebb9@byu.net>
+
+ * src/ls.c (main): On systems with d_type, directories_first only
+ implies format_needs_type, not format_needs_stat.
+
+2006-05-03 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c (xstrcoll_df_version, rev_xstrcoll_df_version): Add space
+ after comma in arg list, from Eric Blake.
+
+2006-04-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/misc/date (relative-3): New test, derived from a bug
+ report by John Thomas McDole.
+
+2006-04-23 Francesco Montorsi <fr_m@hotmail.com>
+
+ New option for ls: --group-directories-first.
+ It makes ls list directories before files.
+ * NEWS [New features]: Mention it.
+ * src/ls.c (sort_type): Rearrange to use as an array index when
+ choosing sort function; added new sort_numtypes member for
+ compile-time check.
+ (time_type): Add new time_numtypes member for compile-time check.
+ (directories_first): New global variable.
+ (GROUP_DIRECTORIES_FIRST_OPTION): New enum.
+ (long_options): Add --directories-first.
+ (main): Support new option.
+ (is_directory): New function.
+ (extract_dirs_from_files): Use it.
+ (DIRFIRST_CHECK, DEFINE_SORT_FUNCTIONS)
+ (LIST_SORTFUNCTION_VARIANTS): New macros.
+ (sort_functions): New global variable.
+ (sort_files): Use it.
+ (usage): Document new option.
+
+2006-04-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/shred.c (fillrand): The assertion was way too weak, due to
+ what must be a typo. Strengthen it to its intended value.
+ (dopass): Don't use alloca; it's not worth the aggravation here,
+ since it's used only to get a page-aligned buffer, and page
+ alignment doesn't buy us much here. I'm suspicious that alloca
+ causes problems on some hosts, due to a recent bug report by Adam
+ Waltman: http://bugs.gentoo.org/130246.
+
+2006-04-18 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/tty-eof: Add new programs, base64, sha224sum, sha256sum,
+ sha384sum, sha512sum.
+
+2006-04-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/chmod.c (describe_change): Adjust to filemode changes.
+ * src/ls.c (HAVE_ST_DM_MODE): Remove; moved to ../lib/filemode.c.
+ (print_long_format): Use (new) filemodestring rather than
+ (old) mode_string, so that we get more file types right, at least
+ in theory. Adjust to filemode changes.
+ * src/stat.c (human_access): Likewise.
+
+2006-04-18 Jim Meyering <jim@meyering.net>
+
+ * src/ptx.c (main) [DEFAULT_IGNORE_FILE]: Remove code to use a default
+ ignore file. This has never been enabled. Reported by Eric Blake.
+
+2006-04-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/ln.c (linkfunc): Remove. This method ran into a compiler/linker
+ bug in Interix. Just call symlink or link directly. All uses changed.
+ * src/setuidgid.c (main) [! HAVE_SETGROUPS]: Don't call setgroups.
+ * src/stat.c (USE_STATVFS): New macro.
+ Include <sys/statvfs.h> and use statvfs only if USE_STATVFS.
+ (NAMEMAX_FORMAT): define a bit more clearly, now that the
+ statvfs-using code is a bit more regular.
+ * src/system.h (sync) [!HAVE_SYNC]: New macro.
+
+2006-04-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: csplit, nl, expr now conform to POSIX better, and are
+ more-compatible with traditional Unix, with respect to regular
+ expressions.
+ * src/csplit.c (extract_regexp): Set re_syntax_options to a
+ value that is compatible with what POSIX requires.
+ * src/nl.c (build_type_arg): Likewise.
+ * src/expr.c (docolon): Likewise. Also, don't let anchors match
+ newline; this fixes an incompatibility with tradition and with POSIX.
+ Don't warn about leading ^. POSIX says it is unspecified whether
+ ^ is a special character, which means that implementations can
+ either treat it as special or not, but either way a warning is not
+ allowed (unless the regexp is otherwise invalid). Instead, anchor
+ the expression but treat ^ as an anchor; this is the traditional
+ behavior (e.g., Solaris 10).
+ (eval4, eval3, eval2): Treat non-numeric args, division by zero,
+ and the like as invalid expressions (exit status 2), not as
+ failure of 'expr' (exit status 3). This is more consistent with
+ how Solaris behaves.
+ * tests/expr/basic (fail-a): Adjust exit status to match new expr
+ behavior, for status 2 versus 3.
+ (anchor): New test.
+ (bre1, bre2, bre3, bre4, bre5, bre6, bre7, bre8, bre9, bre10):
+ (bre11, bre12, bre13, bre14, bre15, bre16, bre17, bre18, bre19, bre20):
+ (bre21, bre22, bre23, bre24, bre25, bre26, bre27, bre28, bre29, bre30):
+ (bre31, bre32, bre33, bre34, bre35, bre36, bre37, bre38, bre39, bre40):
+ (bre41, bre42, bre43, bre44, bre45, bre46, bre47, bre48, bre49, bre50):
+ (bre51, bre52, bre53, bre54, bre55, bre56, bre57, bre58, bre59, bre60):
+ (bre61, bre62): New tests.
+ * tests/misc/csplit: Use \{...\} in test RE, to test that we're
+ conforming to POSIX.
+
+ Port to Solaris 8.
+ * tests/du/long-from-unreachable: Solaris 8 sh doesn't understand
+ "if !". Do not assume that 'sed' can handle long, newline-free input.
+ * tests/du/long-sloop: Likewise. Evaluate expr once, not $n times.
+
+2006-04-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ Adjust to new regex.h API (with new fastmap type), and clean
+ up the regex storage allocation a bit.
+
+ * src/csplit.c (struct control): Put re_compiled member at the
+ end, since it's large. Change regexpr member from char * to bool;
+ all uses changed. Add new member fastmap.
+ (extract_regexp): regexp arg is now char const *, not char *.
+ Don't bother duplicating the regular expression; it's not needed.
+ Set fastmap from new fastmap member. Don't bother allocating
+ a buffer, as the regexp code does a better job than we do.
+ * src/expr.c (docolon): Allocate and use a fastmap.
+ Don't bother allocating a buffer.
+ * src/nl.c (body_fastmap, header_fastmap, footer_fastmap):
+ New vars.
+ (build_type_arg): New fastmap arg. All uses changed.
+ Don't bother allocating a buffer, but set a fastmap.
+ * src/ptx.c (context_regex_string, word_regex_string): Remove.
+ (context_regex, word_regex): New vars, replacing the above.
+ All uses changed.
+ (struct regex_data): New type.
+ (compile_regex): Renamed from alloc_and_compile_regex, since
+ we no longer allocate storage. Arg is now a struct regex_data *,
+ not a const char *. All uses changed. Don't allocate the fastmap;
+ instead, take it from the caller. Don't convert size_t to int,
+ to avoid arithmetic overflow problems. Don't bother freeing
+ storage afterwards; it's not worth the aggravation.
+ * src/tac.c (compiled_separator_fastmap): New ver.
+ (main): Use it. Don't bother allocating a buffer.
+
+2006-03-30 Jim Meyering <jim@meyering.net>
+
+ * src/dd.c (iwrite): Remove assignment without effect.
+ Reported by Felix Rauch Valenti.
+
+2006-03-22 Eric Blake <ebb9@byu.net>
+
+ * src/ptx.c (usage): Remove mention of --copyright/-C.
+ (main): Alias --copyright to --version plus a deprecation warning.
+ * NEWS: Mention this.
+
+2006-03-27 Jim Meyering <jim@meyering.net>
+
+ * src/Makefile.am (uptime_LDADD): Add $(POW_LIB), for uptime's
+ use of strtod. Tiny patch from Nickolai Zeldovich.
+
+2006-03-11 Eric Blake <ebb9@byu.net>
+
+ * tests/misc/dirname: New file.
+ * tests/basename/Makefile.am: Delete.
+ * tests/basename/basic: Move to...
+ * tests/misc/basename: ... this new file. Add some tests,
+ including fixed behavior for //.
+ * tests/misc/Makefile.am (TESTS): Sort. Add basename, dirname.
+ * tests/Makefile.am (SUBDIRS): Remove basename.
+ * configure.ac (AC_CONFIG_FILES): Remove tests/basename.
+
+ Improvements to dirname/basename handling on platforms like
+ cygwin with distinct // and with drive letters.
+ * NEWS: Document new behavior.
+ * src/basename.c (main): Don't strip suffix from file system
+ roots.
+ * src/cp.c (target_directory_operand): Use new last_component.
+ (ASSIGN_BASENAME_STRDUPA): Likewise. Reduce time spent
+ traversing the string.
+ * src/dircolors.c (guess_shell_syntax): Use new last_component.
+ * src/install.c (target_directory_operand, install_file_in_dir):
+ Likewise.
+ * src/ln.c (target_directory_operand, main): Likewise.
+ * src/ls.c (basename_is_dot_or_dotdot): Likewise.
+ * src/mv.c (target_directory_operand, movefile): Likewise.
+ * src/remove.c (rm_1): Likewise.
+ * src/shred.c (wipename): Likewise.
+ * src/split.c (next_file_name): Likewise.
+ * src/su.c (log_su, run_shell): Likewise.
+
+2006-03-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: nohup diagnostics are now more precise, and nohup now
+ redirects stderr to nohup.out if stdout is closed and stderr is a tty.
+ * src/nohup.c (main): Implement this.
+ * tests/misc/nohup: Test the new behavior.
+
+2006-03-12 Jim Meyering <jim@meyering.net>
+
+ * src/copy.c (set_author): Rename function, from preserve_author.
+
+ * src/remove.c (AD_pop_and_chdir): Use new macro,
+ CYCLE_CHECK_REFLECT_CHDIR_UP, rather than open-coding it.
+
+ * src/system.h (SAME_INODE): Remove definition.
+ Include "same-inode.h", instead.
+
+2006-03-11 Eric Blake <ebb9@byu.net>
+
+ * src/pwd.c (robust_getcwd): Prepend only one slash, not two.
+
+2006-03-10 Jim Meyering <jim@meyering.net>
+
+ Fix a bug whereby a user with write access to a directory being removed
+ could cause the removal of that directory to fail with an erroneous
+ diagnostic about a directory cycle. Reported by Vineet Chadha.
+
+ * NEWS: Mention this.
+ * src/remove.c (AD_pop_and_chdir): If the directory we're about to
+ leave (and try to rmdir) is the one whose dev_ino is being used to
+ detect a cycle, reset cycle_check_state.dev_ino to that of the parent.
+
+2006-03-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Document dd's new 'directory' and 'nolinks' flags.
+ * src/dd.c (set_fd_flags): Handle file-creation flags on file
+ descriptors, rather than ignoring them.
+ * tests/dd/misc: Add test cases for append, nofollow, directory,
+ and nolinks flags. Simplify redirection to /dev/null in some cases.
+
+ * tests/dd/misc: iflags->iflag. This fixes a typo that meant the
+ noatime test never tested anything.
+
+2006-03-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/dd.c (flags, usage): New flags directory, nolinks.
+ * src/system.h (O_NOLINKS): Define to 0 if not already defined.
+
+ * src/ls.c (usage): Mention that -f disables --color.
+ Problem reported by Niels Möller.
+
+2006-03-03 Justin Pryzby <pryzbyj@justinpryzby.com>
+
+ * man/*.x: Add references to syscalls from utilities of the same name.
+
+2006-03-05 Jim Meyering <jim@meyering.net>
+
+ * tests/help-version: Set SHELL, if not already set, in order to
+ avoid failure when `make check' is run through debuild; dircolors
+ would fail due to lack of $SHELL. Reported by Sven Joachim.
+
+ Make `base64 --wrap=N' work for N=0, and for N larger than SIZE_MAX.
+ * src/base64.c (wrap_write, do_encode, main): Change type of
+ parameters and locals, wrap_column, form size_t to uintmax_t.
+ (main): Adjust to use xstrtoumax, accordingly.
+
+2006-03-03 Jim Meyering <jim@meyering.net>
+
+ Don't fail when run from an environment with SHELL not a Bourne
+ shell, e.g. `env SHELL=/bin/csh make check' would fail this test.
+ * tests/dircolors/simple: Invoke each non-failing test with -b.
+ Reported by Michael Stone.
+
+2006-02-27 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/base64: Derive --decode-using tests from the
+ encode-based ones.
+
+ * tests/misc/base64: Factor out a long constant string.
+ Split lines to stay within 80 columns.
+
+ * tests/misc/Makefile.am (TESTS): Add base64.
+ * tests/misc/base64: Test base64. From Simon Josefsson.
+
+ * src/base64.c (do_decode): Use correct type for parameter,
+ ignore_garbage: s/size_t/bool/.
+
+ * src/base64.c: Don't include .h files already included by system.h:
+ <string.h>, <stdlib.h>, <stdbool.h>, <limits.h>, <errno.h>.
+ Include "system.h" before the other lib/*.h header files.
+ Include <sys/types.h> before "system.h".
+ (wrap_write): Remove declaration of unused local, initial_column.
+ (wrap_write): Correct declaration syntax: s/size_t * V/size_t *V/.
+
+ * README: Add base64 to the list.
+
+2006-02-17 Simon Josefsson <jas@extundo.com>
+
+ New program: base64.
+ * AUTHORS: Mention base64.
+ * NEWS: Likewise.
+ * man/Makefile.am: Build base64.1.
+ * man/base64.x: New file.
+ * src/Makefile.am (bin_PROGRAMS): Add base64.
+ * src/base64.c: New file.
+
+2006-02-25 Eric Blake <ebb9@byu.net>
+
+ In ls, avoid calling stat for --inode (-i), when possible.
+ * src/pwd.c (NOT_AN_INODE_NUMBER, D_INO): Move to ...
+ * src/system.h: ... here, for use in ...
+ * src/ls.c (main): ... here. Prefer dirent.d_ino to stat when
+ possible.
+ (gobble_file): Add inode argument.
+ (print_dir): Pass inode if available.
+ (usage): Remove inaccuracy.
+
+2006-02-23 Jim Meyering <jim@meyering.net>
+
+ * TODO: Update/correct some obsolete entries.
+
+2006-02-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doc/coreutils.texi (join invocation): Mention `sort -k 1b,1'.
+ * src/join.c (usage): Likewise.
+ Documentation problem reported by Philip Kensche.
+
+2006-02-20 Eric Blake <ebb9@byu.net>
+
+ * man/rm.x: Update documentation to match previous patch.
+
+2006-02-18 Eric Blake <ebb9@byu.net>
+
+ New option for rm: --interactive=once (-I).
+ * NEWS: Document it, along with change to rm --interactive.
+ * TODO: Remove entry for implementing rm -I
+ * src/rm.c (INTERACTIVE_OPTION): New enum value.
+ (interactive_type): New enum.
+ (long_opts): Let interactive take an optional argument.
+ (interactive_args, interactive_types): New option arguments.
+ (usage): Document -I, --interactive=WHEN. Use program_name
+ instead of a basename.
+ (main): New -I option, new behavior to --interactive.
+ * tests/rm/interactive-once: New tests.
+ * tests/rm/interactive-always: Ditto.
+ * tests/rm/Makefile.am (TESTS): Run them.
+
+2006-02-18 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (sc_two_space_separator_in_usage): Make the regular
+ expression match more of the target lines, e.g., those that start with
+ `-S,' (short option followed by a comma) or that include `=[...]'.
+ Patch by Nicolas François.
+ Fix the four offenders thus exposed:
+ * src/join.c (usage): Use two spaces (not one) to separate the
+ --first-only option string from its description, so help2man formats
+ the derived man page properly.
+ * src/pr.c (usage): Likewise.
+ * src/uniq.c (usage): Likewise.
+ * src/install.c (usage): Likewise.
+
+2006-02-15 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (alpha beta major): For `make major', ensure that the
+ version string is of the form N.N[.N]*, where N is one or more digits.
+
+2006-02-14 Jim Meyering <jim@meyering.net>
+
+ * INSTALL: Update from gnulib.
+
+2006-02-13 Jim Meyering <jim@meyering.net>
+
+ * GNUmakefile (all): Emit diagnostics to stderr, not stdout.
+
+2006-02-12 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (patch-check): New target.
+ (local-checks-available): Add to the list.
+
+2006-02-11 Jim Meyering <jim@meyering.net>
+
+ * src/c99-to-c89.diff: New file.
+ * src/Makefile.am (EXTRA_DIST): Add c99-to-c89.diff.
+
+ * .x-po-check: New file, with exclusions so that `make distcheck'
+ passes once again.
+ * Makefile.am (EXTRA_DIST): Add .x-po-check.
+
+ rm -r must remove an empty directory, even if it is inaccessible.
+ * src/remove.c (close_preserve_errno): New function.
+ (fd_to_subdirp): Don't print a diagnostic in this function.
+ Do it from the callers instead, unless rmdir succeeds.
+ (remove_cwd_entries, remove_dir): Adjust callers.
+ * tests/rm/empty-inacc: New test for the above.
+ * tests/rm/Makefile.am (TESTS): Add empty-inacc.
+ * NEWS: Mention this bug fix.
+ * tests/rm/rm2: Adjust two expected diagnostics, now that they're
+ a tiny bit less precise: cannot remove `a/1': ... instead of
+ cannot open directory `a/1': ...
+
+ * Makefile.maint (syntax-check-rules): Automatically derive this
+ list of sc_-prefixed rule names.
+
+2006-02-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.maint (CVS_LIST): Don't assume cvsu is available.
+ (CVS_LIST_EXCEPT): New macro, to simplify exception-processing.
+ Most uses of CVS_LIST changed to use CVS_LIST_EXCEPT.
+ (syntax-check-rules): Bring back sc_changelong. (Hmm, why did it
+ go away? was that an accident?)
+ (sc_cast_of_argument_to_free, sc_cast_of_x_alloc_return_value):
+ (sc_cast_of_alloca_return_value, sc_space_tab, sc_prohibit_atoi_atof):
+ (sc_error_exit_success, sc_file_system, sc_no_if_have_config_h):
+ (sc_system_h_headers, sc_sun_os_names, sc_trailing_blank):
+ (sc_two_space_separator_in_usage, sc_unmarked_diagnostics):
+ (sc_obsolete_symbols, sc_changelog, sc_prohibit_jm_in_m4):
+ (sc_useless_cpp_parens, makefile-check, m4-check, po-check):
+ (author_mark_check, makefile_path_separator_check):
+ Output line numbers, to simplify navigation of Emacs *compilation*
+ buffers.
+ (sc_prohibit_atoi_atof, sc_file_system):
+ Rework slightly so that Makefile.maint doesn't get reported as a
+ violation of its own syntax rules.
+ (sc_dd_max_sym_length): Use ifneq to do nothing, instead of doing
+ it at run-time (which didn't work with Bison). Fix a makefile typo,
+ caught by Makefile.maint itself: spaces where a tab should be.
+ (po-check): Check lib/*.[ch] even if not in CVS; used by Bison,
+ which copies from ../gnulib/lib/*.[ch] to lib/*.[ch].
+ Ignore djgpp and man subdirectories, to avoid false matches with
+ Bison and coreutils, respectively. Use sort -u to remove the
+ resulting duplicates.
+ * gnupload: Rework slightly to avoid bogus warning from
+ sc_two_space_separator_in_usage.
+
+2006-02-10 Jim Meyering <jim@meyering.net>
+
+ Use gzip's --rsyncable option only if it's available.
+ * Makefile.maint (gzip_rsyncable): New variable.
+ (GZIP_ENV): Use it.
+
+2006-02-08 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (local-checks-available): Define in terms of
+ the expansion, $(syntax-check-rules), rather than the single,
+ top-level target `syntax-check', so that it's easier to exclude
+ individual rules (via $(local-checks-to-skip)).
+ (tgz-md5, tgz-sha1, ...): Remove now-unused definitions.
+
+2006-02-07 Jim Meyering <jim@meyering.net>
+
+ * src/system.h (!defined O_DIRECT): If O_DIRECTIO is defined (as it
+ is on Tru64), define O_DIRECT to that. Patch From James Lemley.
+
+ * tests/help-version (expected_failure_status_vdir):
+ Redirect an expected disk-full diagnostic to /dev/null.
+
+2006-02-06 Jim Meyering <jim@meyering.net>
+
+ * src/unexpand.c (usage): Use two spaces (not one) to separate the
+ --first-only option string from its description, so help2man formats
+ the derived man page properly.
+ * src/rm.c (usage): Likewise for --no-preserve-root.
+ * src/chown.c (usage): Likewise.
+ * src/chgrp.c (usage): Likewise.
+
+ Add a rule to ensure that the above doesn't happen again.
+ * Makefile.maint (sc_two_space_separator_in_usage): New rule.
+ (syntax-check-rules): Add it.
+ * .x-sc_two_space_separator_in_usage: New empty file.
+ * Makefile.am (EXTRA_DIST): Add .x-sc_two_space_separator_in_usage.
+
+2006-02-06 Jim Meyering <jim@meyering.net>
+
+ * src/cp.c (usage): Use two spaces (not one) to separate each
+ option string from its description, so help2man formats the
+ derived man page properly.
+ * src/mv.c (usage): Likewise.
+ Patch from Nicolas François in http://bugs.debian.org/351601.
+
+2006-02-04 Jim Meyering <jim@meyering.net>
+
+ * src/copy.c (copy_internal): cp -RL would fail when encountering
+ the same directory more than once in the hierarchy beneath a single
+ command-line argument. That is legitimate, e.g. when there are
+ two or more symbolic links, each pointing to some directory that
+ would not otherwise be copied. Reported by Christophe LYON.
+ * tests/cp/cp-deref: New file. Test for today's fix.
+ * tests/cp/Makefile.am (TESTS): Add cp-deref.
+ * NEWS: Document this.
+
+2006-02-03 Jim Meyering <jim@meyering.net>
+
+ * configure.ac: Require automake-1.9.6, not 1.8.3.
+
+2006-02-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/od.c (usage): Mention that -t a ignores high order bit.
+ Documentation problem reported by Ed Avis.
+
+2006-02-01 Jim Meyering <jim@meyering.net>
+
+ * src/pwd.c (find_dir_entry): Remove unused local, `ent_sb_valid'.
+
+2006-01-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/head.c (main): Use a better diagnostic when someone uses a
+ trailing numeric option in an invalid way. Problem reported by
+ Karl Berry.
+ * src/tail.c (parse_options): Likewise.
+
+2006-01-30 Jim Meyering <jim@meyering.net>
+
+ * man/wc.x: Include `count' keyword in man page synopsis,
+ per suggestion from http://bugs.debian.org/181585.
+
+2006-01-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/df.c (show_dev): If the file system claims to have
+ more available than total blocks, report the number of used
+ blocks as being total - available (a negative number) rather
+ than as garbage. Problem reported by Toralf Foerster.
+
+2006-01-24 Jim Meyering <jim@meyering.net>
+
+ * src/tail.c (tail_forever): Don't exit-nonzero when an attempt
+ to put a regular file in O_NONBLOCK mode fails with EPERM.
+ That happens on Linux (up to 2.6.15) when using tail -f on a file with
+ the append-only attribute. Reported by Dean Gaudet. For details,
+ see http://savannah.gnu.org/bugs/?func=detailitem&item_id=15473.
+ * NEWS: Mention this fix.
+ * tests/tail-2/append-only: New file. Test for the above.
+ * tests/tail-2/Makefile.am (TESTS): Add append-only.
+ * tests/Makefile.am (check-root): Add tail-2/append-only
+
+2006-01-21 Jim Meyering <jim@meyering.net>
+
+ * NEWS: Mention fts-related improvements and bug fixes.
+
+2006-01-19 Jim Meyering <jim@meyering.net>
+
+ * tests/fmt/basic (pfx-1, pfx-2): New tests, to demonstrate the bug
+ reported as http://bugs.debian.org/147577. Forwarded by Thomas Hood.
+
+2006-01-18 Jim Meyering <jim@meyering.net>
+
+ * tests/du/Makefile.am (TESTS): Add long-from-unreadable.
+
+2006-01-17 Jim Meyering <jim@meyering.net>
+
+ Now that fts no longer changes the current working directory, adjust
+ its clients accordingly -- note that du.c uses fts but doesn't need
+ any adjustment, since it doesn't operate on the actual files,
+ but rather just uses the stat buffers provided by fts.
+
+ * src/chown-core.c: Include "openat.h".
+ Don't include "lchown.h".
+ (restricted_chown): Accept a new parameter, CWD_FD, and use it in
+ calling openat, lchownat, chownat, rather than open, lchown, chown.
+ Update caller.
+ * src/chmod.c: Include "openat.h".
+ (process_file): Use chmodat (fts->fts_cwd_fd,... in place of chmod (...
+
+ * tests/du/long-from-unreadable: New test, to exercise one small
+ corner of fts.c.
+
+2006-01-13 Jim Meyering <jim@meyering.net>
+
+ * tests/Makefile.am (SUBDIRS): Add comments discouraging the
+ addition of new directories under tests/.
+
+ * tests/acl: Redirect stdin to /dev/null. Otherwise, FreeBSD 5.0's
+ getfacl would hang.
+
+2006-01-12 Jim Meyering <jim@meyering.net>
+
+ * tests/du/long-sloop: Adjust not to hard-code the expected
+ diagnostic corresponding to ELOOP. Solaris' diagnostic differs
+ from that of GNU libc. Reported by Paul Eggert.
+
+ * tests/du/long-sloop: Create file at end of symlink chain.
+
+ * tests/misc/test: New file, with a test for one of the
+ bugs fixed by yesterday's test.c changes.
+ * tests/misc/Makefile.am (TESTS): Add test.
+
+2006-01-11 Jim Meyering <jim@meyering.net>
+
+ * tests/du/long-sloop: New file. Test for today's fts.c bug fix.
+ That bug could make du -L, chgrp -L, or chown -L fail to diagnose
+ a very long sequence of symbolic links (not necessarily a loop).
+ * tests/du/Makefile.am (TESTS): Add long-sloop.
+
+2006-01-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/test.c (test_syntax_error): Append a newline. All callers
+ changed, except for the ones that didn't already append a newline.
+ Bug reported by Eric Blake.
+
+2006-01-11 Jim Meyering <jim@meyering.net>
+
+ * src/system.h (X2NREALLOC): Now that verify_true is no longer
+ void, cast its result to void, to avoid gcc's warning that
+ ``left-hand operand of comma expression has no effect''.
+ (DECIMAL_DIGIT_ACCUMULATE, X2REALLOC): Likewise.
+
+2006-01-10 Jim Meyering <jim@meyering.net>
+
+ * tests/chmod/no-x: Add a test for today's fts.c fix.
+
+2006-01-10 Jim Meyering <jim@meyering.net> (tiny change)
+
+ * src/ls.c (gobble_file): Use DTTOIF only if it's defined.
+ This is necessary for Dragonfly. Patch by Joerg Sonnenberger.
+
+2006-01-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/system.h (X2NREALLOC, X2REALLOC, DECIMAL_DIGIT_ACCUMULATE):
+ Use verify_true instead of verify_expr, to sync with gnulib.
+
+2006-01-08 Jim Meyering <jim@meyering.net>
+
+ * src/date.c (usage): Adjust the formatting of the entries for
+ %::z and %:::z (separate with two spaces, not one) so that help2man
+ formats them properly. Reported by Philip Rowlands.
+
+2006-01-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * configure.ac (gl_IGNORE_UNUSED_LIBRARIES): Add.
+
+2006-01-06 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (copyright-check): Use date +%Y in place of
+ hard-coded 2005.
+
+ * src/remove.c (rm_1): Remove `static' attribute on local `status'.
+ First off, the attribute should have been `volatile' (not static)
+ to avoid longjmp-related risk of clobber. Secondly, now there is
+ no longer any risk of a local variable being clobbered, so there's
+ no need for any attribute at all.
+
+2006-01-05 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c: Give a few functions the inline attribute.
+ (AD_pop_and_chdir): Use gotos to avoid some duplication.
+ (AD_push): Rewrite an assertion so that the entire computation
+ goes away when assertions are turned off.
+
+ * src/tail.c (ENOSYS) [!defined ENOSYS]: Don't define here.
+ It's already defined in "system.h".
+ * Makefile.maint: Add a FIXME comment.
+
+2006-01-04 Jim Meyering <jim@meyering.net>
+
+ * ChangeLog: Remove entries from 2005-10-22 and earlier.
+ * ChangeLog-2005: New file, for entries up to version 5.92.
+
+2006-01-03 Jim Meyering <jim@meyering.net>
+
+ * tests/du/no-x: Also allow a slightly different diagnostic -- the
+ one you get when using openat-enabled fts.c and du (coming soon).
+ * tests/chmod/no-x: Likewise.
+ * tests/chgrp/no-x: Likewise.
+
+ * src/system.h (O_DIRECTORY) [!defined O_DIRECTORY]: Define.
+
+2006-01-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/chown-core.c (RC_do_ordinary_chown): New enum value.
+ (restricted_chown): Return it, if the file cannot be accessed due
+ to EPERM, or if no uid or gid are required, or if the file is
+ neither a directory nor a regular file. Rewrite to avoid gotos.
+ (change_file_owner): Handle RC_do_ordinary_chown case.
+ Rewrite to avoid gotos.
+ * tests/chgrp/basic: Make sure we can change the group of
+ inaccessible files.
+
+ * src/date.c (usage): Explain %g, %G, and %V a bit better.
+
+2006-01-02 Jim Meyering <jim@meyering.net>
+
+ * src/copy.c (set_owner): Correct a comment.
+
+ * src/tail.c (parse_options): Change warning to say that --retry
+ is useful `mainly' (not `only') when following by name.
+ Reported here: http://bugs.debian.org/273781
+
+2006-01-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Document that mkfifo and mknod -m no longer set special bits.
+ * src/copy.c: Include lchmod.h.
+ (copy_internal): Use lchmod rather than chmod.
+ * src/cp.c: Include lchmod.h.
+ (re_protect, make_dir_parents_private): Use lchmod rather than chmod.
+ * src/mkdir.c: Include lchmod.h.
+ (usage): Clarify -m's operation.
+ (main): Use lchmod rather than chmod. Don't use lchmod unless the
+ new mode contains bits outside the 777 range.
+ * src/mkfifo.c (usage): Clarify -m's operation.
+ (main): If -m is given, don't invoke chmod; use umask 0 instead.
+ Report an error if -m asks for bits outside the 777 range.
+ * src/mknod.c (usage, main): Likewise.
+
+ * src/mkdir.c, src/mkfifo.c, src/mknod.c: Undo 2005-12-19 changes.
+
+2005-12-27 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (sc_obsolete_symbols): Prohibit use of O_NDELAY.
+ (sc_prohibit_assert_without_use): New rule.
+ (syntax-check-rules): Add it to the list.
+ * .x-sc_prohibit_assert_without_use: New empty file.
+ * Makefile.am (EXTRA_DIST): Add it.
+
+ * Makefile.maint (CVS_LIST): Define in terms of $(srcdir).
+
+ * cp.c, df.c, link.c, mknod.c, nice.c, sleep.c, unlink.c:
+ Don't include <assert.h>; it wasn't used.
+
+2005-12-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/chown-core.c (restricted_chown):
+ Don't try O_WRONLY unless O_RDONLY failed wth EACCES.
+ * src/remove.c (fd_to_subdirp): Open with O_DIRECTORY | O_NOCTTY
+ | O_NOFOLLOW too, for consistency with other dir-openers.
+ Use POSIX-preferred O_NONBLOCK rather than O_NDELAY.
+ (is_empty_dir): Likewise.
+ * src/shred.c (wipename): Likewise. Don't bother trying to open
+ dir for writing, since POSIX prohibits it.
+
+2005-12-22 Jim Meyering <jim@meyering.net>
+
+ * tests/help-version: Redirect stderr to /dev/full, to suppress
+ write error diagnostic.
+
+2005-12-19 Jim Meyering <jim@meyering.net>
+
+ * src/mkdir.c, src/mknod.c, src/mkfifo.c (main)
+ Avoid a minor race condition when `-m MODE' is specified, by using
+ open, fchown, and close rather than just chown. To do that reliably --
+ even with an overly restrictive umask -- ensure that each mkdir,
+ mknod and mkfifo call uses a mode including at least owner-read access.
+ * src/mknod.c (main): When `-m MODE' is specified, exit nonzero if
+ the subsequent chown (or equivalent open,fchown,close) fails.
+ * tests/misc/mknod: New tests.
+ * tests/misc/Makefile.am (TESTS): Add mknod.
+
+2005-12-17 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (is_empty_dir): Open with O_NDELAY, so we don't hang,
+ e.g., on a named pipe.
+ (OPEN_NO_FOLLOW_SYMLINK): Remove definition. Use O_NOFOLLOW in
+ place of all uses, since it is guaranteed (system.h) to be defined.
+
+2005-12-05 Andreas Gruenbacher <agruen@suse.de>
+
+ Add POSIX ACL support
+ * src/ls.c: Switch back from HAVE_ACL to USE_ACL: The acl() syscall
+ is no requirement for ACL support; particularly, it does not exist
+ on systems that have POSIX ACLs.
+ * src/copy.h (cp_option_init) [umask_kill]: Remove member.
+ * src/cp.c (umask_kill): With default acls, the umask is not to be
+ applied. Remove umask_kill, don't change the process umask, and let
+ the kernel apply the umask where appropriate.
+ * src/cp.c (make_dir_parents_private): Fix logic for POSIX ACLs.
+ * src/copy.c (get_dest_mode): Remove; it is obsolete after removing
+ umask_kill.
+ (copy_reg, copy_internal): Use copy_acl and set_acl
+ instead of fchown/chown. Fix the logic for POSIX ACLs.
+ (chown_succeded): Remove; we now always copy acls and
+ preserve S_ISUID, S_ISGID, and S_ISVTX when needed, no matter if we
+ did a chown before or not.
+ * src/mv.c, src/install.c (cp_option_init): Don't set umask_kill member.
+ * src/Makefile.am (dir_LDADD, ls_LDADD, vdir_LDADD, cp_LDADD,
+ mv_LDADD, ginstall_LDADD): On systems with an ACL library, arrange
+ to link with it via $(LIB_ACL), for the utilities that need it.
+
+2005-12-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/remove.c (OPENAT_CWD_RESTORE__REQUIRE): Remove.
+ (OPENAT_CWD_RESTORE__ALLOW_FAILURE): Likewise.
+ (fd_to_subdirp): Remove openat_cwd_restore_allow_failure arg; its
+ value is now signified by whether cwd_errno is null.
+ (fd_to_subdirp, remove_dir, rm_1); Change cwd failure indicator from
+ pointer-to-bool to pointer-to-errno-value. All callers changed.
+ (rm_1): Don't bother setting a local cwd failure flag and then
+ ORing it into the caller's. Just set the caller's.
+ (rm): Use cwd failure errno value to print a slightly-better
+ diagnostic.
+
+2005-12-15 Jim Meyering <jim@meyering.net>
+
+ * src/stat.c (print_it): Properly handle a backslash at the
+ end of a --printf format string. Reported by Paul Eggert.
+ * tests/misc/stat-printf (end-bs): Add a test for the above.
+
+2005-12-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/acl: Port to pre-POSIX shells like Solaris 8 /bin/sh.
+ Don't assume /etc/passwd contains user names; use 'id' instead.
+
+2005-12-15 Jim Meyering <jim@meyering.net>
+
+ stat: revert behavior of --format=FMT (-c)
+ stat: add new option: --printf=FMT
+ * NEWS: Mention this.
+ * src/stat.c (isodigit, octtobin, hextobin): Define.
+ (PRINTF_OPTION): Define.
+ (interpret_backslash_escapes, trailing_delim): New globals.
+ (usage): Document them. Alphabetize on long option names.
+ (print_esc_char): New function.
+ (print_it): Rewrite, in order to handle backslash escapes.
+ (main): Handle new option. Set globals for --format, too.
+
+ * tests/misc/stat-printf: Test --printf and --format.
+ * tests/misc/Makefile.am (TESTS): Add stat-printf.
+
+2005-12-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: sort now reports incompatible options.
+ * src/sort.c (incompatible_options, check_ordering_compatibility):
+ New functions.
+ (main): Use them. Don't bother with a usage message for
+ "sort -c a b", for consistency with other error diagnostics.
+ * tests/sort/Test.pm (incompat1, incompat2, incompat3, incompat4):
+ New tests.
+
+ * src/cat.c (main): Undo previous change. close_stdout already
+ does the check, so the previous change wasn't necessary.
+
+2005-12-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/cat.c (main): Check for close (STDOUT_FILENO) failure.
+
+2005-12-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ Install a more-conservative approach for sort -R. It's the
+ same basic idea as the existing code, except it uses the full ISAAC
+ approach (called the "more kosher" approach in the existing comments).
+ This makes "sort -R" quite a bit slower (about a factor of 2 on my
+ little tests involving 10000 lines on a 2.4 GHz P4), but I think it's
+ better to be conservative here at first, and review any performance
+ improvements carefully.
+ * .x-sc_require_config_h: Add src/rand-isaac.c.
+ * src/rand-isaac.h: Remove. All uses now simply include rand-isaac.c.
+ * src/Makefile.am (noinst_HEADERS): Remove rand-isaac.h.
+ (shred_SOURCES, sort_SOURCES): Remove.
+ (EXTRA_DIST): Add rand-isaac.c.
+ * src/rand-isaac.c: Revert to what used to be in shred.c, without
+ changing it to allow for varying numbers of words in the state.
+ Alter so that we include rand-isaac.c directly rather than
+ compiling it and linking to it. Don't include config.h or
+ system.h; that's the includer's responsibility.
+ Omit functions that are specific to shred.
+ (ISAAC_LOG, ISAAC_WORDS, ISAAC_BYTES, struct isaac_state, ind):
+ (isaac_step, struct irand_state):
+ Resurrect these, with the same defns that used to be in shred.c.
+ (ISAAC_SIZE, isaac_new, isaac_copy): Remove.
+ (isaac_refill, isaac_seed_start, isaac_seed_data, irand_init, irand32):
+ static again.
+ (struct isaac_state, isaac_refill, isaac_mix, isaac_init):
+ (isaac_seed_start, isaac_seed_data, isaac_seed_finish, isaac_seed):
+ (irand_init, irand32, irand_mod):
+ Number of words is constant again.
+ (struct irand_state, irand_init, irand32, irand_mod): Move to shred.c.
+ * src/shred.c: Include rand-isaac.c rather than rand-isaac.h.
+ * src/sort.c: Likewise.
+ * src/shred.c (fillrand, dopass, main): Undo previous change.
+ (struct irand_state, irand_init, irand32, irand_mod): Moved back here,
+ from rand-isaac.c.
+ * src/sort.c: Don't include md5.h; it wasn't needed.
+ (struct keyfield): Rename random_hash to random, for consistency
+ with the other member names. All uses changed.
+ (usage): Tweak wording to mention STRING for --seed option.
+ (short_options): Rorder for consistency with other programs.
+ (rand_state): Now a struct, not a pointer to one. All uses changed.
+ (HASH_WORDS, HASH_SIZE): Remove.
+ (get_hash): Remove comments around resbuf size, since we can assume C89.
+ Use a "more-kosher" (but slower) approach of invoking isaac_refill.
+ (keycompare): Adjust to the new get_hash.
+ Add a FIXME.
+ (badfieldspec): Omit recently-introduced comment; it isn't needed.
+ (main): Don't set need_random simply because gkey has it set; that
+ doesn't necessarily mean we'll need random numbers.
+ Redo seeding to match new get_hash approach.
+
+2005-12-10 Jim Meyering <jim@meyering.net>
+
+ * src/Makefile.am (noinst_HEADERS): Add rand-isaac.h.
+
+ Avoid shred segfault on 64-bit systems.
+ * src/rand-isaac.c (isaac_refill): Don't try to negate a
+ local of type uint32_t. Make the local an `int' instead.
+
+ * NEWS: Mention sort's new options.
+
+ * src/rand-isaac.c (isaac_mix): Declare to be static.
+ Mark all other functions as `extern' so the tight-scope
+ part of `make distcheck' passes once again.
+ * src/rand-isaac.h (isaac_mix): Remove declaration.
+
+ * src/sort.c (get_hash): Change position of `*' in parameter
+ type to conform with convention.
+ (main): Split a long line so it fits in 80 columns.
+ (keycompare): Remove stray SPACE before TAB that was
+ causing `make distcheck' to fail.
+
+ * src/shred.c: Don't include gethrxtime.h. No longer needed.
+
+ * tests/misc/sort-rand: New file: basic tests for the new options.
+ * tests/misc/Makefile.am (TESTS): Add sort-rand.
+
+2005-12-10 Frederik Eaton <frederik@ofb.net>
+
+ * src/Makefile.am (sort_LDADD): Add $(LIB_GETHRXTIME).
+ (shred_SOURCES, sort_SOURCES): New macros, so we compile rand-isaac.c.
+ * src/rand-isaac.c: New file, containing ISAAC code that was in shred.c.
+ Make state size runtime-configurable.
+ (isaac_new, isaac_copy): New functions.
+ * src/rand-isaac.h: New file.
+ * src/shred.c: Include rand-isaac.h. Move ISAAC code to rand-isaac.c.
+ (fillrand, main): Adjust to the fact that the state size is now
+ runtime-configurable.
+ * src/sort.c (short_options, long_options, WORDS, keycompare, main):
+ (usage): Add options --random-sort and --seed to implement a random
+ shuffle.
+ Include md5.h and rand-isaac.h.
+ (get_hash): New function.
+ (rand_state): New var.
+ (HASH_WORDS, HASH_SIZE): New macros.
+
+2005-12-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/dd/misc: Add test for dd iflags=noatime.
+
+2005-12-09 Jim Meyering <jim@meyering.net>
+
+ * src/sort.c (usage): Mention white space vs -b and -t options.
+ From The Wanderer.
+
+2005-12-09 Eric Blake <ebb9@byu.net>
+
+ * src/test.c (main): Fix misleading comment.
+
+2005-12-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Mention dd's new noatime flag.
+ * src/system.h (O_NOATIME): Define to 0 if not already defined.
+ * src/dd.c (flags, usage): Add support for noatime flag.
+
+2005-12-07 Jim Meyering <jim@meyering.net>
+
+ Distribute the cvsu script, used only by `make syntax-check'.
+ * Makefile.am (EXTRA_DIST): Add build-aux/cvsu.
+ * Makefile.maint (CVS_LIST): Use build-aux/cvsu, now that we
+ distribute a copy of this script.
+ * .x-sc_unmarked_diagnostics: Add build-aux/cvsu.
+
+ * tests/mv/acl: exit-77 before the trap, not after, if we fail
+ to create a temporary directory on another partition.
+ From Andreas Gruenbacher.
+
+2005-12-06 Tomas Pospisek <tpo@sourcepole.ch> (tiny change)
+
+ * man/basename.x: Cross-reference to dirname and readlink.
+ * man/dirname.x: Cross-reference to basename and readlink.
+
+2005-12-05 Andreas Gruenbacher
+
+ * src/copy.c [!HAVE_FCHOWN]: Define fchown(...) to -1.
+ (set_owner, preserve_author): New functions, factored out of copy_reg.
+ (copy_reg): Use them.
+ (copy_internal): Use them here, too.
+
+2005-12-04 Jim Meyering <jim@meyering.net>
+
+ * src/sleep.c (usage): Say what happens with two or more arguments.
+ Suggested by Justin Pryzby.
+
+ * src/uptime.c (print_uptime): Move decl of `upsecs' into scope
+ where it's used.
+
+2005-12-03 Jim Meyering <jim@meyering.net>
+
+ * src/rm.c (long_opts): Change the name of each undocumented, for-
+ testing-only option to start with `-', so that it cannot render
+ ambiguous any prefix it happens to share with some other option name.
+ Problem reported by Eric Blake.
+ * src/head.c (long_options): Likewise.
+ * src/tail.c (long_options): Likewise.
+
+ * tests/misc/head-elide-tail: Update uses of undocumented, for-
+ testing-only --presume* options to start with `---'.
+ * tests/rm/dangling-symlink: Likewise.
+ * tests/rm/dir-no-w: Likewise.
+ * tests/rm/isatty: Likewise.
+
+2005-11-30 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint: Add a comment about cvsu.
+
+2005-11-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: df updates for "none", "proc", inaccessible file systems.
+ * src/df.c (show_point): Ignore inaccessible file systems.
+ (usage): -a includes dummy file systems, not size-0 file systems.
+
+ * src/od.c (unsigned_long_long_int): Renamed from ulonglong_t,
+ to avoid collision with POSIX name space. All uses changed.
+
+2005-11-24 Jim Meyering <jim@meyering.net>
+
+ * tests/Makefile.am (EXTRA_DIST): Add acl to the list.
+ * tests/acl: Add `$0: ' prefix to diagnostics.
+
+ * .x-sc_require_config_h: Add lib/buffer-lcm.c to the list.
+
+2005-11-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/copy.c: Improve performance a bit by optimizing away
+ unnecessary system calls and going to a block size of at least
+ 8192 (on normal hosts, anyway). This improved performance 5% on my
+ Debian stable host (2.4.27 kernel, x86, copying from root
+ ext3 file system to itself).
+ Include "buffer-lcm.h".
+ (copy_reg): Omit last argument. All callers changed.
+ Use xmalloc to allocate rather than trusting alloca
+ (which is unwise with large block sizes).
+ Declare locals more locally, if possible.
+ Use uintptr_t words instead of int words, for a bit more speed
+ when looking for null blocks on 64-bit hosts.
+ Optimize away reads of zero bytes on regular files.
+ In the typical case, insist on 8 KiB buffers, at least.
+ Avoid unnecessary extra call to fstat when checking for sparse files.
+ Avoid now-unnecessary cast to off_t, and "0L".
+ Avoid unnecessary test of *new_dst when checking for same owner
+ and group.
+
+2005-11-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/remove.c (rm): Don't assume C99 for-loop syntax.
+
+2005-11-22 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (AD_push): Remove debugging cruft.
+
+ * tests/rm/unread2 (rm): Change expected diagnostic,
+ `cannot open directory' to `cannot remove', to align with
+ new version of rm.
+ * tests/rm/rm2: Ensure that rm now continues removing entries
+ even after certain types of failure.
+
+ * src/remove.c: Rewrite. Now, this module is reentrant on systems
+ that provide openat (Solaris), and on systems like Linux+procfs
+ where our openat emulation code is reentrant. This also fixes a
+ few low-probability leaks and eliminates some code that could,
+ in very unusual circumstances, cause rm() (via a callee) to exit.
+ * NEWS: Mention this.
+
+ * configure.ac: Put copyright dates all on one line so the
+ emacs function that updates them works properly.
+
+2005-11-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * configure.ac (AM_PROG_CC_C_O): Add. Needed for CVS Automake.
+ Problem reported by Eric Blake.
+ (AC_PROG_CC_STDC): Use this instead of AC_PROG_CC, so that
+ we get a standard-conforming compiler. This relies on the new
+ m4/c.m4 file. Note that it's a bit tricky, since c.m4 doesn't
+ define AC_PROG_CC_STDC; we are relying on Autoconf 2.59 internals.
+ m4/c.m4 can go away with Autoconf 2.60 comes out.
+
+2005-11-17 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (AD_mark_helper): Make a `char *' parameter `const'.
+ (AD_mark_current_as_unremovable): Likewise, but for a local.
+ (rm_1): Likewise.
+
+ * tests/mv/acl: Let traps handle removing temporary directories.
+
+ Expect acl-related tests to fail, until the corresponding
+ patches are committed.
+ * tests/mv/Makefile.am (XFAIL_TESTS): Add acl.
+ * tests/cp/Makefile.am (XFAIL_TESTS): Likewise.
+
+ ACL tests, from Andreas Gruenbacher.
+ * tests/acl, tests/mv/acl, tests/cp/acl: New files.
+ * tests/mv/Makefile.am (TESTS): Add acl.
+ * tests/cp/Makefile.am (TESTS): Add acl.
+
+ * src/ls.c (basename_is_dot_or_dotdot): Correct wording in comment.
+
+2005-11-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Improve quality of ln's diagnostics.
+ * src/ln.c (do_link, usage): Likewise.
+ (do_link): Don't use alloca on a buffer of unbounded size.
+
+2005-11-16 Jim Meyering <jim@meyering.net>
+
+ * tests/cp/fail-perm: Accommodate HPUX. It appears to fail
+ with EACCES rather than EPERM. Reported by Peter O'Gorman here:
+ http://article.gmane.org/gmane.comp.gnu.core-utils.bugs/5766
+ This also affects AIX 4.3.3, according to Ralf Wildenhues, in
+ http://lists.gnu.org/archive/html/bug-coreutils/2006-05/msg00192.html
+
+2005-11-14 Jim Meyering <jim@meyering.net>
+
+ * NEWS (sort): Mention consequences of today's mkstemp-safer.c fix.
+
+2005-11-13 Jim Meyering <jim@meyering.net>
+
+ * announce-gen: Accept new option, --gpg-key-id=ID and
+ emit a blurb telling how to use the .sig files.
+ * Makefile.cfg (gpg_key_ID): Define.
+ * Makefile.maint (announcement): Use new option and key.
+
+ Require that most .c files include <config.h>.
+ * Makefile.maint (sc_require_config_h): New rule.
+ (syntax-check-rules): Add it.
+ * .x-sc_require_config_h: New file listing exceptions to the
+ above rule. Some are legit, others are simply grandfathered in.
+ * Makefile.am (EXTRA_DIST): Add .x-sc_require_config_h here, too.
+
+2005-11-12 Jim Meyering <jim@meyering.net>
+
+ * src/checksum.h, src/md5.c, src/sha1sum.c: Remove now-unused files.
+
+2005-11-11 Jim Meyering <jim@meyering.net>
+
+ * NEWS: Mention `readlink -f' bug fix in 5.3.0 news.
+ Mention new readlink options in 5.3.0's `New features' section.
+ Spotted by Thomas Hood.
+
+2005-11-08 Jim Meyering <jim@meyering.net>
+
+ * NEWS: Merge in changes from b5_9x branch.
+
+2005-11-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: ls now defaults to --time-style='locale', which in turn acts
+ like --time-style='posix-long-iso' if the locale settings are messed up.
+ * src/ls.c (decode_switches): Implement this.
+
+2005-11-08 Jim Meyering <jim@meyering.net>
+
+ * tests/du/2g: s/expensive/very expensive/ in a comment.
+ From Paul Townsend.
+
+2005-10-17 Eric Blake <ebb9@byu.net>
+
+ * src/ls.c (usage): Fix descriptions of --sort, --time.
+ Reported by Vitaly A. Ostanin.
+
+2005-11-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/ln.c: Include filenamecat.c.
+ (FILE_BASENAME_CONCAT): Remove.
+ (do_link): Remove last arg DEST_IS_DIR. All callers changed.
+ (main): Use file_name_concat, base_name, and strip_trailing_slashes
+ instead of FILE_BASENAME_CONCAT. This simplifies the code, and avoids
+ the use of alloca.
+
+2005-11-04 Jim Meyering <jim@meyering.net>
+
+ * src/du.c (process_file): Don't overflow for files of size >= 2^31
+ on systems with stat.st_blocks of a signed 32-bit type.
+ This bug causes trouble on some AIX 5.1 systems.
+ Report and trivial patch from Paul Townsend:
+ <http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00033.html>
+ * NEWS: Mention this.
+
+ * tests/du/2g: New (very-expensive) test for the above-fixed bug.
+ * tests/du/Makefile.am (TESTS): Add it here.
+ * tests/very-expensive: New file.
+ * tests/Makefile.am (EXTRA_DIST): Add it here.
+ * tests/cp/perm: Mark this test as `very-expensive', too.
+
+2005-11-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Mention that rm -d and maybe ln -d are scheduled for
+ removal in 2006.
+ * src/remove.h (struct rm_options): Remove unlink_dirs. All uses
+ removed.
+ * src/rm.c (usage): Don't mention rm -d.
+
+2005-11-02 Jim Meyering <jim@meyering.net>
+
+ * tests/dd/skip-seek: Fix typo in comment: s/fileutils/coreutils.
+ From Andreas Schwab.
+
+ * tests/dd/unblock-sync: Redirect stderr to /dev/null so the
+ `M+N records in/out' lines don't pollute `make check' output.
+
+ * tests/dd/skip-seek (sk-seek4): New test, to exercise the bug
+ fixed on 2005-10-31. This test uses the new, IN_PIPE specifier.
+ * tests/Coreutils.pm: Accept a new type of input specifier: IN_PIPE,
+ to indicate that the input file should be piped into the command
+ under test (via `cat FILE | $prog ...').
+
+ * src/remove.c (remove_entry): Emit a better diagnostic when rm
+ (without -r) fails to remove a directory on a non-Linux system.
+ This change affects only newer Solaris systems (with priv_*
+ functions like priv_allocset). Reported by Keith Thompson.
+
+ * tests/rm/dir-nonrecur: New file/test for the above fix.
+ * tests/rm/Makefile.am (TESTS): Add dir-nonrecur.
+
+2005-11-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: "tail -c 2 FILE" and "touch 0101000000" now operate as
+ POSIX 1002.1-2001 requires.
+ * src/tail.c (parse_obsolete_option): Implement this.
+ Problem reported by Vincent Lefevre.
+ * src/touch.c (main): Pass PDS_PRE_2000 to posixtime.
+ * tests/tail/Test.pm (c-2, c-2-minus, c2, c2-minus): New tests.
+ (test_vector): Add special cases for _POSIX2_VERSION, and
+ regularize the old ones a bit.
+ * tests/touch/obsolescent: Add y2000 test.
+
+2005-10-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/dd.c (skip): Fix off-by-one error reported by
+ Theodoros V. Kalamatianos.
+
+2005-10-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/mkdir/p-3: Require that the test be run as non-root.
+ Problem and trivial fix reported by Theodoros V. Kalamatianos.
+
+2005-10-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/ln.c (FILE_BASENAME_CONCAT): Omit unnecessary slashes in the
+ boundary between DEST and SOURCE in the result.
+
+2005-10-26 Dmitry V. Levin <ldv@altlinux.org>
+
+ * src/md5sum.c (main) [!O_BINARY]: Changed default read mode
+ back to text, to sync with documentation and for backwards
+ compatibility.
+
+2005-10-25 Jim Meyering <jim@meyering.net>
+
+ * tests/dircolors/simple (other-wr): Add an explicit test for
+ the dircolors bug (NULL-dereference) fixed yesterday.
+
+2005-10-24 Jim Meyering <jim@meyering.net>
+
+ * src/tac.c (tac_file): When determining whether a file is seekable,
+ also test whether it is a tty. Using only the lseek-based test would
+ give a false positive on Solaris. Reported by Peter Fales.
+
+2005-10-24 Dmitry V. Levin <ldv@altlinux.org>
+
+ * tests/install/d-slashdot: New test, for "install -d" failure.
+ * tests/install/Makefile.am (TESTS): Add d-slashdot.
+ * tests/mkdir/p-slashdot: New test, for "mkdir -p" failure.
+ * tests/mkdir/Makefile.am (TESTS): Add p-slashdot.
+
+2005-10-24 Jim Meyering <jim@meyering.net>
+
+ * src/dircolors.c (ls_codes): Add missing comma.
+ Anonymous report and patch from
+ http://savannah.gnu.org/bugs/?func=detailitem&item_id=14849
+
+ * src/dircolors.c: Add compile-time assertion that the slack_codes
+ and ls_codes arrays have the same number of elements. This would
+ have prevented the above-fixed bug.
+
+ * src/expand.c (parse_tab_stops): Add a comment to make this function
+ identical to the one in unexpand.c.
+ * src/unexpand.c (parse_tab_stops): Adjust syntax to make this function
+ identical to the one in expand.c.
+
+ * src/expand.c (next_file): Don't assume fopen cannot return stdin.
+
+2005-10-23 Jim Meyering <jim@meyering.net>
+
+ * src/md5sum.c (digest_check, main): Use ptr_align rather than
+ a dangerous pointer-value-to-`unsigned' cast.
+ * NEWS: mention the new sha* programs.
+ * AUTHORS: Add new sha* programs.
+
+2005-08-28 David Madore <david.madore@ens.fr>
+
+ Add new programs: sha224sum, sha256sum, sha384sum, sha512sum.
+ * README: Add their names to the list.
+ * src/md5sum.c: Provide framework for computing sha-2 hashes.
+ * src/Makefile.am (sha224sum, sha256sum, sha384sum, sha512sum):
+ Rules for compiling sha-2 utilities
+ (noinst_HEADERS): Remove checksum.h.
+ * man/sha512sum.x, man/sha384sum.x, man/sha256sum.x, man/sha224sum.x:
+ New files.
+ * man/Makefile.am (dist_man_MANS): Add the corresponding .1 names.
+ (sha224sum.1, sha256sum.1, sha384sum.1, sha512sum.1): New dependencies.
+ * tests/misc/sha224sum, tests/misc/sha256sum: New files.
+ * tests/misc/sha384sum, tests/misc/sha512sum: New files.
+ * tests/misc/Makefile.am (TESTS): Add new sha224sum, sha256sum,
+ sha384sum, sha512sum test scripts here rather that each in its
+ own directory.
+
+2005-08-28 David Madore <david.madore@ens.fr>
+
+ * tests/sha1sum/basic-1 (million-a): Add the "million a's" test (one
+ of the FIPS test vectors).
+
+2005-10-23 Jim Meyering <jim@meyering.net>
+
+ * configure.ac: Use 6.0-cvs as the version string.
+ * NEWS: Adjust accordingly.
+
+
+ -----
+
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without
+ modification, are permitted provided the copyright notice
+ and this notice are preserved.
diff --git a/ChangeLog-2005 b/ChangeLog-2005
new file mode 100644
index 0000000..4ec81dc
--- /dev/null
+++ b/ChangeLog-2005
@@ -0,0 +1,11011 @@
+2005-10-22 Jim Meyering <jim@meyering.net>
+
+ * Version 5.92.
+
+ * configure.ac: Remove -cvs suffix from version string.
+ * NEWS: Add today's date.
+
+ * tests/mkdir/writable-under-readonly: New test, neither run
+ nor distributed via tarballs.
+
+2005-10-20 Jim Meyering <jim@meyering.net>
+
+ * tests/chmod/octal: New file/test, to exercise today's
+ lib/modechange.c fix.
+ * tests/chmod/Makefile.am (TESTS): Add octal.
+ * NEWS: Mention this chmod fix as well as the dircolors one.
+
+2005-10-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/dircolors.c (append_quoted): Quote ' correctly.
+ Problem reported by Eric Blake.
+
+2005-10-19 Jim Meyering <jim@meyering.net>
+
+ * tests/dircolors/simple (quote): Add test for the above fix.
+
+2005-10-18 Jim Meyering <jim@meyering.net>
+
+ * tests/chgrp/basic: Add a comment explaining (probably) why this
+ test fails on OpenBSD 3.2 when run in an NFS-mounted directory.
+
+2005-10-17 Jim Meyering <jim@meyering.net>
+
+ * configure.ac: Use 5.92-cvs as the version string.
+ * NEWS: Adjust accordingly.
+
+ * Makefile.maint (my-distcheck): Depend on
+ $(release_archive_dir)/$(prev-tgz) here, so that if it's missing
+ we fail earlier.
+
+2005-10-16 Jim Meyering <jim@meyering.net>
+
+ * Version 5.91.
+
+ * Makefile.maint (VERSION_REGEXP): New variable.
+ (news-date-check, changelog-check): Use tighter regular expressions.
+
+ * configure.ac: Remove -cvs suffix from version string.
+ * NEWS: Add today's date.
+
+ * NEWS: Mention the `mkdir -p' bug fix.
+
+2005-10-15 Jim Meyering <jim@meyering.net>
+
+ * src/who.c (usage): Undocument deprecated --idle (-i) option.
+
+ * src/df.c (main): Warn about the deprecated --kilobytes option.
+ * src/ls.c (decode_switches): Likewise.
+
+ * src/du.c (usage): Document -m, once again.
+ (main): Warn about use of deprecated long options:
+ --kilobytes and --megabytes.
+ * src/tail.c (parse_options): Remove --allow-missing option.
+ You can use --retry instead.
+ * src/stat.c (main): Remove --link -l options.
+ You can use --dereference (-L) instead.
+
+2005-09-30 Eric Blake <ebb9@byu.net> (tiny change)
+
+ * man/Makefile.am (.x.1): Remove temp directory first.
+ * NEWS: Document dircolors change of 2005-09-05.
+
+2005-10-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/sort.c (sortlines_temp): Redo previous change, since I'm
+ no longer confident that the m4/stdbool.m4 patch suffices.
+
+2005-10-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/sort.c (sortlines_temp): Undo previous change, since
+ today's change to m4/stdbool.m4 should catch it.
+
+2005-10-06 Jim Meyering <jim@meyering.net>
+
+ * TODO: rm: add support for a -I option, like that from FreeBSD's.
+
+2005-10-05 Jim Meyering <jim@meyering.net>
+
+ * src/sort.c (sortlines_temp): Declare temporary as `int' rather
+ than `bool' to work around AIX 5.3 compiler bug in 64-bit mode.
+ From James Lemley.
+
+2005-10-03 Jim Meyering <jim@meyering.net>
+
+ * src/factor.c (MAX_N_FACTORS): Define in terms of sizeof (uintmax_t)
+ rather than hard-coding to 128. From Thomas M.Ott.
+
+2005-10-02 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (sc_unmarked_diagnostics):
+ Search only cvs-controlled files.
+ * .x-sc_unmarked_diagnostics: New file.
+ * Makefile.am (EXTRA_DIST): Add it.
+
+2005-10-01 Jim Meyering <jim@meyering.net>
+
+ * src/factor.c (main): Don't stop processing arguments upon
+ the first invalid one. Suggestion from Eric Blake
+ * tests/factor/basic: Add a test for this.
+
+2005-09-30 Jim Meyering <jim@meyering.net>
+
+ * configure.ac: Use 5.91-cvs as the version string.
+ * NEWS: Adjust accordingly.
+
+2005-09-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/dd.c (main): Don't assume size_t has the same width
+ as unsigned long. Problem reported by Eric Blake.
+
+ * NEWS: Clarify "tail - f" example.
+
+2005-09-29 Jim Meyering <jim@meyering.net>
+
+ * Version 5.90.
+
+ * configure.ac: Remove -cvs suffix from version string.
+ * NEWS: Add today's date.
+
+ * NEWS: Mention this bug fix:
+ stat now exits nonzero if a file operand does not exist
+
+2005-09-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/system.h (LONGEST_MODIFIER): Use ULONG_MAX_LT_ULLONG_MAX
+ instead of ULLONG_MAX, as the latter doesn't work with GCC 2.7.2.1.
+
+2005-09-28 Jim Meyering <jim@meyering.net>
+
+ * configure.ac: Use 5.90-cvs as the version string, not 5.3.1-cvs.
+ * NEWS: Adjust accordingly.
+
+ * README: Remove note about FreeBSD make test failure.
+
+2005-09-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/install/trap: Work around a bug in FreeBSD 5.0.
+
+2005-09-28 Jim Meyering <jim@meyering.net>
+
+ * README: Warn about a (now-)known problem on FreeBSD 5.0:
+
+2005-09-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/touch.c (touch): Handle "touch -c - >&-" by checking for EBADF
+ and ENOSYS.
+ Do not pass "-" to futimens; pass NULL instead.
+ If close (STDIN_FILENO) fails, report the error separately instead
+ of letting the 'close' pollute errno.
+ * tests/touch/empty-file: Test "touch -" too.
+ * tests/touch/no-create-missing: Likewise.
+ * tests/touch/read-only: Likewise.
+
+2005-09-26 Jim Meyering <jim@meyering.net>
+
+ * tests/touch/read-only: New test, for root of chmod/usage failure.
+ * tests/touch/Makefile.am (TESTS): Add read-only.
+
+ Work around the root cause of alpha-linux-1.sf.net test failure.
+ * tests/chmod/usage: Remove *all* files before each inner loop
+ iteration. Otherwise, with a touch program that fails on unwritable
+ files, (this happens at least on linux-2.2.20) a -w file left behind
+ from a previous iteration could cause a spurious test failure.
+
+2005-09-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/chmod/usage: Undo the s/files/file/ change, but add
+ comments about why the old version was desired.
+
+2005-09-25 Jim Meyering <jim@meyering.net>
+
+ * tests/ls-2/tests (setuid-etc): Work around output mismatch when
+ a just-created test file cannot be made set-group-ID.
+
+ Avoid test failures on alpha-linux-1.sf.net.
+ * tests/chmod/usage: Use newer trap and tmpdir-creation framework.
+ Fix apparent typos (s/files/file/) in inner loop.
+
+2005-09-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: "touch -" now touches standard output.
+ * src/touch.c (touch): Implement this.
+ (usage): Document this.
+
+ * src/copy.c (HAVE_FCHMOD, HAVE_FCHOWN): Define to 0 if not defined.
+ (copy_reg): New args CHOWN_SUCCEDED and DST_SB. All callers changed.
+ Add a "goto close_src_and_dst_desc;" that was missing in the
+ previous patch.
+ (copy_reg) [HAVE_FCHOWN]: Prefer fchown to chown.
+ (copy_reg) [HAVE_FCHMOD]: Prefer fchmod to chmod.
+ (copy_internal): Don't invoke chown if fchown worked,
+ and likewise for chmod and fchmod.
+
+2005-09-24 Jim Meyering <jim@meyering.net>
+
+ * src/shred.c: Use `#ifdef HAVE_CONFIG_H', not `#if HAVE_CONFIG_H',
+ for consistency with gnulib.
+ * src/dircolors.c: Likewise.
+
+ * Makefile.maint (sc_no_if_have_config_h): New rule.
+ (syntax-check-rules): Add it.
+ .x-sc_no_if_have_config_h: New file.
+ * Makefile.am (EXTRA_DIST): Add it.
+
+ * tests/seq/basic (eq-wid-1, eq-wid-2): Disable these tests for now.
+ They fail with non-gcc compilers and some combinations
+ of options and libraries on Solaris systems.
+
+ * tests/misc/date (uninit-64): Restore this test.
+ Add start-up code to detect, and work around, the cases in
+ which the test might fail.
+
+2005-09-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/misc/date (uninit-64): Remove this test. It wasn't
+ portable in theory (it doesn't work on hosts where 'int' is 64
+ bits, example) or in practice (Solaris 8 localtime returns garbage
+ in tm_year for the specified date, but that's not coreutils's
+ fault).
+
+2005-09-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/copy.c (copy_reg): Preserve time stamps if
+ x->preserve_timestamps is set, using futimens so that
+ we needn't resolve the path again.
+ (copy_internal): Don't preserve time stamps if copy_reg did it
+ already.
+ * src/install.c (change_timestamps): First arg is source
+ struct stat, not file name. All uses changed.
+ (install_file_in_file): Stat the source file.
+ Don't try to change time stamps if copy_file did it.
+ * src/system.h: Don't include utime.h; not needed.
+ (struct utimbuf) [!defined HAVE_STRUCT_UTIMBUF]: Remove; not needed.
+
+2005-09-23 Jim Meyering <jim@meyering.net>
+
+ * src/od.c: Use `verify' to ensure that our hard-coded
+ bytes_to_*_digits arrays are long enough. Of course, 17+-byte
+ integral types aren't on the near horizon, but just in case...
+ (MAX_INTEGRAL_TYPE_SIZE): Move definition to precede new first use.
+ (bytes_to_oct_digits, bytes_to_signed_dec_digits):
+ (bytes_to_unsigned_dec_digits, bytes_to_hex_digits): Change base
+ type from `char' to the clearer `unsigned int'.
+
+2005-09-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/rmdir.c (EEXIST, ENOTEMPTY): Remove unused macros.
+
+ Sync from gnulib.
+
+ * src/dircolors.c: Include strcase.h.
+ * src/pinky.c: Include canon-host.h rather than declaring
+ canon_host ourselves.
+ * src/who.c: Likewise.
+
+ * src/system.h (X2NREALLOC, X2REALLOC): Moved here from
+ ../lib/xalloc.h, with args properly parenthesized, and using
+ verify_expr rather than the old VERIFY_EXPR.
+
+2005-09-21 Jim Meyering <jim@meyering.net>
+
+ * tests/install/basic-1: Require that this test be run as non-root.
+ Otherwise, it fails due to the fact that the chmod 0 . doesn't
+ affect root.
+
+2005-09-20 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (write_protected_non_symlink): Change comment to
+ agree with the code.
+
+2005-09-19 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (remove_dir): Return RM_ERROR, not `1',
+ when attempting to remove `/' with --preserve-root.
+
+ * src/remove.c (remove_cwd_entries): Syntactic tweak: move an
+ assignment out of an if-expression.
+
+2005-09-17 Jim Meyering <jim@meyering.net>
+
+ * src/extract-magic (usage): Request that additions be sent to
+ bug-coreutils@gnu.org, too.
+
+2005-09-16 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/date (rfc822-1): Compensate for Solaris 5.9's /bin/sh,
+ which emits a diagnostic to stderr when this test's LC_ALL=de_DE
+ setting cannot be honored.
+
+ * tests/misc/date (subfmt-up1): Put quotes around format string
+ to protect `^' from interpretation by some shells.
+ Add a use of OUT_SUBST to compensate for Solaris strftime's slightly
+ different formatting of %c.
+
+ * src/dd.c (main): When failing to truncate, mention both the seek
+ block count and the block size, in case the block size is very large.
+ Now `make distcheck' should pass, once again.
+
+2005-09-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/copy.c: Include stat-time.h.
+ (copy_internal): Use its functions instead of the obsolete
+ TIMESPEC_NS macro.
+ * src/cp.c (re_protect): Likewise.
+ * src/date.c (main): Likewise.
+ * src/du.c (struct duinfo, duinfo_init, duinfo_set, duinfo_add):
+ (show_date, print_size, process_file): Likewise.
+ * src/install.c (change_timestamps): Likewise.
+ * src/ls.c (cmp_ctime, cmp_mtime, cmp_atime, print_long_format):
+ Likewise.
+ * src/pr.c (init_header): Likewise.
+ * src/stat.c (human_time, print_stat): Likewise.
+ * src/tail.c (record_open_fd, tail_forever): Likewise.
+ * src/test.c (get_mtime, binary_operator): Likewise.
+ * src/touch.c (touch, main): Likewise.
+ * src/test.c (get_mtime): Renamed from age_of. All uses changed.
+
+2005-09-16 Jim Meyering <jim@meyering.net>
+
+ Date no longer needs to allocate virtual memory to do its job,
+ so it can no longer fail due to an out-of-memory condition.
+
+ * src/date.c: Include fprintftime.h.
+ Don't include strftime.h or xanstrftime.h -- no longer needed.
+ (show_date): Use new fprintftime function rather than xanstrftime.
+ Correct comment: this function no longer handles a NULL format string.
+ * src/du.c: Likewise.
+ * NEWS: Mention this.
+
+ * tests/misc/date (subfmt-up1): Test the combination of the
+ to-upper-case modifier (^) and a conversion specifier that
+ expands to a string containing lower case characters.
+
+2005-09-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: uname -a no longer generates the -p and -i outputs if they
+ are unknown.
+ * src/uname.c (usage): Document this.
+ (main): Implement this.
+
+2005-09-14 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/date (tz-5w, tz-5wf): Test new %:z format with
+ a field width.
+
+2005-09-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/dd.c: Detect some very unlikely buffer overflows.
+ (INPUT_BLOCK_SLOP, OUTPUT_BLOCK_SLOP): New macros.
+ (MAX_BLOCKSIZE): Now accepts an arg. All uses changed.
+ (page_size): New var.
+ (scanargs, skip, main): Use more-straightforward way to detect overflow.
+ (dd_copy): Use page_size rather than invoking getpagesize.
+ Use INPUT_BLOCK_SLOP, OUTPUT_BLOCK_SLOP.
+ (main): Set page_size.
+ Avoid a call to stat in the usual case where ftruncate succeeds.
+
+ * src/expr.c (docolon): Add IF_LINT check to avoid GCC warning.
+
+ * configure.ac: Don't invoke AC_CONFIGURE_HOST directly; AB_INIT
+ does it for us, and our invocation evokes a diagnostic from
+ Autoconf 2.59.
+
+ * NEWS: date has a new --rfc-3339 option, and the old --iso-8601
+ option is deprecated. date, du, ls, and pr also have new time format
+ specifiers %:z, %::z, %:::z.
+ * src/date.c (TIME_SPEC_DATE): No longer needs to be nonzero, so
+ remove the "=1".
+ (TIME_SPEC_HOURS, TIME_SPEC_MINUTES): Must be at end now, so put
+ them there.
+ (time_spec_string, time_spec): Hours and minutes must be at
+ start now, so put them there.
+ (rfc_2822_format): Now a string constant, not a boolean. All uses
+ changed.
+ (iso_8601_format, rfc_format): Remove.
+ (RFC_3339_OPTION): New constant.
+ (long_options): Add --rfc-3339.
+ (usage): Add --rfc-3339. Don't mention --iso-8601.
+ Mention %:z, %::z, %:::z.
+ (main): Simplify calculation of 'format'; it was getting too hairy
+ to follow. Add --rfc-3339.
+ (show_date): Assume format arg is not NULL, which is the case
+ now. The default code is moved to 'main'. This simplifies things
+ and allows the default to be calculated just once.
+ * tests/misc/date: Add tests for --rfc-3339, %:z, %::z, %:::z.
+
+2005-09-13 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (GZIP_ENV): Add --rsyncable option.
+ (makefile-check): Escape a `$' in a diagnostic.
+
+ * configure.ac: Use AB_INIT (from autobuild).
+
+2005-09-11 Jim Meyering <jim@meyering.net>
+
+ * src/factor.c (usage): Remove leading spaces in 2-line
+ description, so that help2man doesn't mangle it.
+ Reported by Justin Pryzby.
+
+2005-09-10 Jim Meyering <jim@meyering.net>
+
+ csplit could produce corrupt output, given input lines longer than 8KB
+
+ * src/csplit.c (load_buffer): Don't read from free'd memory
+ when handling lines longer than the initial buffer length.
+ (save_to_hold_area): Don't leak the previous hold_area buffer.
+ Reported by Tristan Miller and Luke Kendall.
+ * NEWS: Mention this.
+ * tests/misc/csplit: New test for this.
+
+ * src/csplit.c (load_buffer): Avoid integer overflow in buffer
+ size calculations for very long lines.
+
+2005-09-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ Support regular expressions in 64-bit code correctly, by
+ importing the latest gnulib regexp code, and not assuming
+ that sizes fit in 32 bits.
+ * src/csplit.c (process_regexp): Store match length in regoff_t,
+ not int. Assume that negative return values less than -2
+ represent regoff_t overflow.
+ * src/expr.c (docolon): Likewise.
+ * src/nl.c (proc_text): Likewise.
+ * src/ptx.c (SKIP_SOMETHING, find_occurs_in_text): Likewise.
+ * src/tac.c (tac_seekable): Likewise.
+ * src/expr.c (docolon) Check for size calculation overflow.
+ * src/nl.c (build_type_arg): Likewise.
+ * src/ptx.c (matcher_error): New function.
+ (SKIP_SOMETHING): Use it to report matcher errors.
+ (alloc_and_compile_regex): No longer any need to worry about
+ int versus size_t mismatch.
+
+ * NEWS: Document "niceness" vs "nice value".
+ * configure.ac (utils_cv_func_setpriority): Simplify the tests.
+ Define HAVE_NICE rather than NICE_PRIORITY (since a niceness is
+ not a priority); all uses changed.
+ * src/nice.c (main): Hoist errno=0 outside the ifdef.
+
+2005-09-09 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/date (neg-secs2, fill-1, fill-2): Add new tests.
+
+2005-09-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ Use the phrase "niceness" instead of "nice value" to describe
+ the biased nice value that can go negative. This corrects
+ a discrepancy with POSIX, which states that nice values are
+ nonnegative.
+ * src/nice.c (GET_NICENESS): Renamed from GET_NICE_VALUE.
+ All uses changed.
+ (usage): Say "niceness" rather than "nice value".
+ (main): Say "niceness" rather than "priority" (which is something else
+ entirely nowadays).
+
+2005-09-07 Jim Meyering <jim@meyering.net>
+
+ * src/du.c (time_args): Use NULL in place of 0.
+
+2005-09-05 Jim Meyering <jim@meyering.net>
+
+ * src/dcgen: Don't omit comments until there is better documentation.
+
+ Colorize set-user-ID and set-group-ID files and sticky,
+ other-writable, and sticky-and-other-writable directories.
+ * src/dircolors.c (slack_codes): Add new dircolors mode names.
+ (ls_codes): Add corresponding two-letter ls mode strings.
+ * src/ls.c (indicator_no[]): Add new symbols.
+ (indicator_name[]): Add corresponding mode strings.
+ (color_indicator[]): Add an entry for each new mode string.
+ (print_color_indicator): Honor new types.
+ * src/dircolors.hin: Document the default colors for the new strings.
+ From Mike Frysinger, based on a patch from Fedora.
+ * tests/ls-2/tests (setuid-etc): New test, for the above.
+
+2005-08-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: "rm -FOO" now suggests "rm ./-FOO" if the file "-FOO"
+ exists and "-FOO" is not a valid option.
+ * src/rm.c: Include lstat.h, quotearg.h.
+ (diagnose_leading_hyphen): New function.
+ (main): Use it.
+
+2005-08-27 Jim Meyering <jim@meyering.net>
+
+ * src/du.c: Go ahead and leave the patch in (i.e., revert
+ today's change). It doesn't cause a problem after all, since
+ --exclude-from=- is always handled before --files0-from=F.
+
+ * src/du.c: Revert the du.c part of the change from 2005-07-02:
+ That change (to reopen stdin on F for --files0-from=F) made it so
+ --exclude-from=- and --files0-from=F would not work together.
+
+2005-08-23 Jim Meyering <jim@meyering.net>
+
+ * configure.ac: Use `5.3.1-cvs' as the version string.
+ * NEWS: Adjust accordingly.
+
+ * Makefile.maint (sc_useless_cpp_parens): New rule.
+ (syntax-check-rules): Add it.
+ * .x-sc_useless_cpp_parens: New file.
+ * Makefile.am (EXTRA_DIST): Add it.
+
+ * src/od.c: Include <float.h> unconditionally.
+ * src/uptime.c (print_uptime): Remove unnecessary parens in
+ `#if defined (SYMBOL)' expressions.
+ * src/system.h: Likewise.
+ * src/hostname.c: Likewise.
+ * src/su.c: Likewise.
+ * src/test.c: Likewise.
+
+2005-08-22 Jim Meyering <jim@meyering.net>
+
+ * src/tail.c (xwrite_stdout): Rename from xwrite. Remove always-
+ equal-to-STDOUT_FILENO parameter and associated assertion.
+ Adjust all callers.
+
+2005-08-21 Jim Meyering <jim@meyering.net>
+
+ * src/ln.c (do_link): If ln is invoked with --interactive (-i),
+ encounters an existing destination file, and gets an affirmative
+ response, then first try to unlink the destination file rather
+ than simply failing. Suggestion from Karl Berry.
+ FIXME: add test for this
+
+ * src/ln.c (main): Declare `target_directory' with const attribute.
+ * src/du.c (time_style): Add `const' attribute.
+ (tot_dui): Remove unnecessary (and too-short) initializer list.
+
+2005-08-19 Jim Meyering <jim@meyering.net>
+
+ * src/sort.c (usage) [-b,-t]: Ensure that there are at least two
+ spaces between each option and the corresponding description -- this
+ lets help2man format entries properly. Reported by Edward Welbourne.
+
+2005-08-17 Jim Meyering <jim@meyering.net>
+
+ * src/sort.c (usage): Fix typo s/POS 2/POS2/.
+ Reported by Edward Welbourne.
+
+ * tests/misc/date [neg-secs]: New test for today's strftime.c bug fix.
+ * tests/misc/date: Remove terminating "\n"s once again.
+ Automatically add them whenever EXIT != 0.
+
+2005-08-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/df.c (show_dev): New arg STAT_FILE. All uses changed.
+ This sometimes gives better results on networked file systems
+ that do not respect POSIX semantics. Problem reported by
+ Bruno Haible.
+
+2005-08-15 Jim Meyering <jim@meyering.net>
+
+ Don't print uninitialized data (or anything else) to stdout
+ upon localtime failure.
+ * src/date.c (show_date): Remove stray `puts (buf);' (debugging?)
+ from the 2004-02-02 change.
+ * tests/misc/date (uninit-64): New test for the above.
+ Rewrite all other OUT strings to include the terminating "\n".
+
+2005-08-14 Jim Meyering <jim@meyering.net>
+
+ * src/md5sum.c (usage): Fix typo s/formated/formatted/ reported
+ by Norbert Kiesel.
+
+ Use one fewer file descriptor in a common case.
+ * src/touch.c: Include "fd-reopen.h", rather than "fcntl--.h".
+ Use fd_reopen rather than open.
+
+2005-08-14 James Youngman <jay@gnu.org>
+
+ * src/test.c (age_of): Return the nanoseconds part of the timestamp,
+ if available.
+ (binary_operator) [-nt, -ot]: Use nanosecond values to break ties.
+
+2005-08-14 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c (long_time_expected_width): Revert last change, just to
+ be paranoid, and add a comment explaining why. Paul Eggert mentioned
+ the possibility.
+
+ * src/wc.c: Don't define mbrtowc at all.
+ If mbstate_t is not defined, then AC_TYPE_MBSTATE_T will define
+ it to `int' for us. Now wc.c really does compile on HP-UX 11.23.
+
+2005-08-13 Jim Meyering <jim@meyering.net>
+
+ * tests/date: Remove directory
+ * tests/Makefile.am (SUBDIRS): Remove date.
+ * configure.ac (AC_CONFIG_FILES): Remove tests/date/Makefile.
+
+ * tests/Coreutils.pm: New keywords, ENV and ENV_DEL, to support
+ tests/misc/date.
+
+ With todays additions, the generated shell script,
+ tests/date/date-tests had becoming far too large (over 350KB),
+ so use the superior-but-perl-requiring framework instead.
+ * tests/date/Test.pm: Move all tests from here...
+ * tests/misc/date: ...to this new file.
+ * tests/misc/Makefile.am (TESTS): Add date.
+
+ * tests/date/Test.pm (test_vector) [cross-dst]: New test for
+ just-fixed getdate.y bug.
+ * tests/date/Test.pm (test_vector): Add 364 more tests like the above.
+ Remove unused $sunos4 variable.
+
+2005-08-12 Jim Meyering <jim@meyering.net>
+
+ * src/nohup.c (main): Explain why we reopen stdin for write-only access.
+
+ * src/ls.c (long_time_expected_width): Don't test for failed localtime.
+ That cannot happen when the result date's year is in range.
+ Add an assertion instead.
+
+ * src/ls.c (sort_files): Use cleaner `sizeof *VAR_NAME'
+ rather than `sizeof (TYPE_NAME)'.
+ * src/ptx.c (sort_found_occurs, digest_word_file): Likewise.
+ (alloc_and_compile_regex): Likewise.
+
+ * src/wc.c: Test `!defined HAVE_MBSTATE_T' rather than
+ `defined mbstate_t' to detect missing support for mbstate_t.
+ The latter didn't work for HP-UX 11.23.
+
+ Add bulletproofing in case stdin is closed.
+ * src/dircolors.c (have_read_stdin): Remove global variable.
+ (dc_parse_stream): Always use stdin (freopen, if needed) rather
+ than sometimes using fopen to get a new file descriptor.
+ Call fclose unconditionally.
+ (main): Don't close stdin here. If needed, now it's already done
+ by dc_parse_stream.
+
+ * src/dircolors.c (dc_parse_file): Remove comment about
+ now-removed OPENOPTS.
+
+ * src/fold.c (fold_file): Cosmetic: use X2REALLOC rather than x2realloc.
+ * src/pr.c (main): Likewise.
+
+ * src/csplit.c (new_control_record): Cosmetic: use X2NREALLOC (only
+ two arguments) rather than x2nrealloc (with three).
+ * src/cut.c (ADD_RANGE_PAIR): Likewise.
+ * src/expand.c (add_tab_stop): Likewise.
+ * src/join.c (extract_field, getseq): Likewise.
+ * src/od.c (decode_format_string): Likewise.
+ * src/sort.c (add_temp_dir): Likewise.
+ * src/unexpand.c (add_tab_stop): Likewise.
+
+ * src/pr.c (main): Cosmetic: use '\0' in place of 0.
+
+2005-08-02 Jim Meyering <jim@meyering.net>
+
+ * src/date.c: Include "xanstrftime.h".
+ (show_date): Use xanstrftime instead of open-coding it.
+ * src/du.c: Likewise.
+
+2005-07-29 Jim Meyering <jim@meyering.net>
+
+ * src/date.c (show_date): Remove now-unnecessary code that
+ treated an empty format string as a special case.
+ * tests/date/Test.pm (empty-format): New test, for this case.
+
+2005-07-19 Jim Meyering <jim@meyering.net>
+
+ * src/md5sum.c (usage): Adjust printf argument list to match
+ new format string.
+
+2005-07-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: md5sum --check now accepts multiple input files, and
+ similarly for sha1sum. Extension suggested by Chris Girling.
+ * src/md5sum.c (usage, main): Support this new usage.
+
+2005-07-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix a problem noted by James Youngman: VPATH-style builds don't
+ work because of po file problems.
+ * src/Makefile.am (BUILT_SOURCES): Remove false.c.
+ (false.c): Remove; it's now a source file.
+ * src/false.c: New file.
+ * src/true.c (EXIT_STATUS): New macro.
+ (PROGRAM_NAME, usage): Behave like "false" if EXIT_STATUS indicates.
+ (usage): Remove "These option names may not be abbreviated."
+
+2005-07-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/nohup.c (main): Don't worry about POSIXLY_CORRECT. Today's
+ Austin Group Minutes says that the GNU behavior will be put
+ forward as proposed text for a future revision.
+
+2005-07-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/Makefile.am (nanosec_libs): Remove $(FESETROUND_LIBM); no longer
+ needed. Problem reported by Jeff Bailey.
+
+2005-07-12 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (copyright-check): Reflect rearrangement in
+ version-etc files.
+
+2005-07-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Binary input and output are now implemented more consistently.
+ These changes affect only platforms like MS-DOS that distinguish
+ between binary and text files.
+ * src/cat.c (usage, main, long_options) [O_BINARY]:
+ Remove support for -B. Use same rules as other programs to decide
+ whether to use binary I/O, except that the -bensAE options always
+ select text mode.
+ * src/cat.c (main): Avoid setmode; use POSIX-specified routines instead.
+ * src/cksum.c (cksum): Likewise.
+ * src/head.c (head_lines, head_file): Likewise.
+ * src/od.c (open_next_file): Likewise.
+ * src/split.c (main): Likewise.
+ * src/sum.c (bsd_sum_file, sysv_sym_file): Likewise.
+ * src/tac.c (copy_to_temp, tac_file, main): Likewise.
+ * src/tail.c (tail_bytes, tail_lines, tail_file, main): Likewise.
+ * src/tee.c (tee): Likewise.
+ * src/tr.c (main): Likewise.
+ * src/wc.c (wc): Likewise.
+ * src/copy.c (copy_reg): Always copy in binary mode.
+ * src/expand.c (expand): Always copy in text mode. POSIX says
+ the input and output must be text.
+ * src/unexpand.c (unexpand): Likewise.
+ * src/head.c (elide_tail_bytes_file, elide_tail_lines_file, head_bytes):
+ (head_lines, head_file): Always use binary mode except for std tty.
+ * src/md5sum.c (usage): Clarify whether text or binary is the default.
+ (split_3, main): BINARY is now a 3-way value. All uses changed.
+ (digest_file): Likewise. Clear *BINARY if we determine the file
+ to be text. All uses changed.
+ (main): Don't report a file to be binary if we actually read it
+ as text in MS-DOS, because it was a terminal.
+ * src/shred.c (wipefile): Always use binary mode. Clearly this
+ never worked right on DOS!
+ * src/system.h (setmode, fileno): Remove; no longer needed, we think.
+ (SET_MODE, SET_BINARY, SET_BINARY2): Remove.
+ [defined __DJGPP__]: Don't include <io.h> or <sys/exceptn.h>.
+ * src/wc.c (wc_file): FILE might be null now.
+ (main): Simplify code a bit, so that fewer places need the
+ setmode fixes.
+
+2005-07-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/comm.c, src/csplit.c, src/dd.c, src/join.c, src/md5sum.c:
+ * src/pr.c, src/sort.c, src/tee.c:
+ Don't include stdio.h; no longer needed.
+
+2005-07-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix porting problems reported by Eric Blake.
+
+ * configure.ac: Remove check for AC_HEADER_TIOCGWINSZ.
+ * src/cat.c, src/ls.c, src/stty.c: Include stropts.h if available,
+ because POSIX says that's where ioctl is declared.
+ * src/cat.c: Use HAVE_SYS_IOCTL_H instead of _POSIX_SOURCE
+ to decide whether to include <sys/ioctl.h>.
+ * src/stty.c: Use only HAVE_SYS_IOCTL_H to decide whether
+ to include <sys/ioctl.h>.
+
+ * src/id.c (print_user): Don't assume uid fits in unsigned int.
+ (print_group): Likewise, for gid.
+
+2005-07-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/system.h (DECIMAL_DIGIT_ACCUMULATE): Generate a hard error
+ (not just a warning) if GCC is used and the types don't match.
+
+2005-07-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/system.h (VERIFY_W_TYPEOF): Remove; no longer needed.
+ (DECIMAL_DIGIT_ACCUMULATE): Change last arg from T's maximum value
+ to T itself. All callers changed. Check that T is unsigned, and
+ that Accum is of type T. This fixes a bug in the unlikely case
+ where SIZE_MAX <= INT_MAX, and it no longer requires typeof to do
+ the proper validity checks.
+
+ * src/od.c: Adjust to verify.h change.
+ * src/system.h (VERIFY_W_TYPEOF): Likewise.
+
+2005-07-04 Jim Meyering <jim@meyering.net>
+
+ * src/system.h: Include "verify.h".
+
+ * src/system.h (verify): Rename from VERIFY_EXPR, to be lower case,
+ like assert. Use sizeof, rather than equivalent ((...)0), for
+ it's slightly simpler syntax. Suggestions from Paul Eggert.
+ (verify_decl): Rename from VERIFY.
+ * src/od.c: Reflect name change.
+
+2005-07-03 Jim Meyering <jim@meyering.net>
+
+ * NEWS: cp and mv: the --reply=X option is deprecated
+ Suggested by Bob Proulx, after numerous user complaints
+ about how --reply=no appeared not to work.
+ * src/mv.c (main): Using --reply now evokes a warning.
+ (usage): Remove description of --reply.
+ * src/cp.c (main): Using --reply now evokes a warning.
+ (usage): Remove description of --reply.
+ * tests/mv/i-link-no: Adjust for new diagnostic.
+ * tests/mv/reply-no: Likewise.
+
+ * src/printf.c (verify_numeric): Rename from verify.
+ Update caller.
+
+2005-07-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/copy.h: Include "lstat.h" rather than rolling our own.
+ * src/ls.c: Likewise.
+ * src/remove.c: Likewise.
+
+2005-07-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ Cleanup to isolate "safer" functions to a small part of the code.
+ * src/comm.c: Include stdio--.h, not stdio-safer.h.
+ (compare_files): Use fopen, not fopen_safer.
+ * src/copy.c: Include fcntl--.h, not unistd-safer.h.
+ (copy_reg): Don't call fd_safer; no longer needed
+ now that we include fcntl--.h.
+ * src/csplit.c: Include fd-reopen.h.
+ Include stdio--.h, not stdio-safer.h.
+ (input_desc): Remove. All uses changed to STDIN_FILENO.
+ (set_input_file): Reopen stdin, to simplify code.
+ (create_output_file): Use fopen, not fopen_safer.
+ * src/dd.c: Include fd-reopen.h.
+ (open_fd): Remove. All callers changed to use fd_reopen instead.
+ * src/join.c: Include stdio--.h, not stdio-safer.h.
+ (main): Use fopen, not fopen_safer.
+ * src/md5sum.c: Include stdio--.h.
+ (digest_check): Don't try to read both checksums and data from stdin.
+ * src/nohup.c: Include fd-reopen.h.
+ Include unistd--.h, not unistd-safer.h.
+ (main): Use fd_reopen to simplify code. When replacing stdin,
+ use "/dev/null" not "/", as that's less likely to go wrong these days.
+ (main): Use dup, not dup_safer.
+ * src/pr.c: Include stdio--.h, not stdio-safer.h.
+ (open_file): Invoke fopen, not fopen_safer.
+ * src/shred.c: Include fcntl--.h, not unistd-safer.h.
+ (wipename, wipe_file): Don't use fd_safer; no longer needed
+ now that we include fcntl--.h.
+ * src/sort.c: Include stdio--.h rather than stdio-safer.h.
+ Include stdlib--.h. Do not include unistd-safer.h.
+ (create_temp_file): Don't call fd_safer; no longer needed
+ now that we include *--.h files.
+ (xfopen): Don't call fopen_safer, for similar reasons.
+ * src/split.c: Include fcntl--.h rather than unistd-safer.h.
+ Include fd-reopen.h.
+ (input_desc): Remove. All uses replaced by STDIN_FILENO.
+ (cwrite): Don't call fd_safer; no longer needed now that
+ we include fcntl--.h.
+ (main): Reuse stdin rather than opening a new one. This
+ saves a file descriptor.
+ * src/stty.c: Include fd-reopen.h.
+ (display_all, display_settings, display_window_size, set_window_size):
+ Remove fd arg, since we now assume stdin. All callers changed.
+ (main): Reuse stdin rather than opening a new one. This
+ saves a file descriptor.
+ * src/tac.c: Include stdlib--.h rather than unistd-safer.h.
+ (copy_to_temp): Don't call fd_safer; no longer needed now
+ that we include stdlib--.h.
+ * src/tail.c: Include fcntl--.h, not unistd-safer.h.
+ (recheck, tail_file): Don't call fd_safer; no longer needed
+ now that we include fcntl--.h.
+ * src/tee.c: Include stdio--.h, not stdio-safer.h.
+ (tee): Don't call fopen_safer; no longer needed now that we
+ include stdio--.h.
+ * src/touch.c: Include fcntl--.h, not unistd-safer.h.
+ (touch): Don't call fd_safer; no longer needed now that
+ we include fcntl--.h.
+
+ * src/du.c (main): Reuse stdin rather than opening a new stream.
+ This saves a file descriptor.
+ * src/uniq.c: Don't include stdio-safer.h; no longer needed.
+ (writeline): Remove stream arg; we now always output to stdout.
+ All callers changed.
+ (check_file): Reuse stdout rather than opening a new stream.
+ This saves a file descriptor.
+
+2005-07-02 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (sc_obsolete_symbols): New rule.
+ (syntax-check-rules): Add it to the list.
+ * Makefile.am (EXTRA_DIST): Add .x-sc_obsolete_symbols.
+ * .x-sc_obsolete_symbols: New file.
+
+2005-07-01 Jim Meyering <jim@meyering.net>
+
+ * src/system.h: Assume HAVE_FCNTL_H (i.e., include <fcntl.h>
+ unconditionally, and don't include <sys/file.h>).
+ * src/system.h: Likewise for HAVE_UNISTD_H.
+
+2005-06-30 Jim Meyering <jim@meyering.net>
+
+ * src/cp.c: Add uses of ARGMATCH_VERIFY to ensure that
+ corresponding option string and value arrays are consistent.
+ * src/date.c: Likewise.
+ * src/du.c: Likewise.
+ * src/ls.c: Likewise.
+ cp.c and date.c each had a harmless trailing `, 0' (now-removed)
+ in a value list.
+
+ * src/system.h (VERIFY): Guard definition with #ifndef.
+ (VERIFY_EXPR): Undef before defining.
+
+2005-06-29 Jim Meyering <jim@meyering.net>
+
+ * src/pr.c (main, store_char): Use X2REALLOC rather than x2realloc.
+ * src/du.c (show_date): Likewise.
+ * src/date.c (show_date): Likewise.
+ * src/od.c (dump_strings): Likewise.
+ * src/sort.c (fillbuf): Likewise.
+ * src/chmod.c (main): Likewise.
+
+ * src/system.h (VERIFY): Rewrite to use string-concatenation
+ and __LINE__ so as not to require a struct name parameter.
+ (GL_CONCAT, GL_CONCAT2): Define helper macros.
+ * src/od.c: Update sole use.
+
+ * src/ls.c (gobble_file): Use stat.st_author, not stat.st_uid
+ when computing the --author column width. This bug might have
+ resulted in misaligned columns when using the --author option
+ on the Hurd. Spotted by Arnold Robbins.
+
+2005-06-28 Jim Meyering <jim@meyering.net>
+
+ * src/pr.c (main, store_char): Use x2realloc on 1-byte base types,
+ not x2nrealloc. The former is a little more concise and readable.
+ N.B. this sort of transformation is ok only when the base type is
+ unlikely ever to change to a multibyte type.
+ * src/du.c (show_date): Likewise.
+ * src/date.c (show_date): Likewise.
+ * src/od.c (dump_strings): Likewise.
+ * src/sort.c (fillbuf): Likewise.
+
+2005-06-24 Jim Meyering <jim@meyering.net>
+
+ * src/mv.c (usage): Clarify how --reply=no works.
+
+2005-06-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ Address the following "du" issues:
+
+ - The option name "--last-time=TYPE" is different from the ls's option
+ "--time=TYPE" with a similar meaning. I assume this wasn't intended.
+
+ - --time-style implies --time, but this is not true for "ls". It's
+ better to be consistent.
+
+ - Since we don't have POSIX compatibility concerns, there's no need
+ for the "posix-" styles, or for support of styles with newlines, or
+ for the "locale" style, except for parsing the TIME_STYLE
+ environment variable.
+
+ - It's cleaner (and these days, no less efficient) to use functions
+ rather than macros when possible.
+
+ - struct duinfo doesn't need a 'valid' flag; you can simply use a time
+ stamp that is less than all valid time stamps.
+
+ - The code needs a bit of reformatting to fit the usual GNU style.
+
+ * NEWS: du's --last-time option is now --time.
+ * doc/coreutils.texi (ls invocation): Fix typo: --time=use is
+ equivalent to --time=atime, not --time=ctime.
+ (ls invocation, du invocation): Fix typo: --time-style=long-iso
+ is equivalent to a time style with a leading "+".
+ (du invocation): --last-time is now --time.
+ --time-style no longer implies --time.
+ The locale and posix- stuff now works only for TIME_STYLE, not
+ for --time-style. Give equivalent format for --time-style=iso.
+ * src/du.c: Do not include hard-locale.h.
+ (struct duinfo): Remove 'valid' member. All uses changed to use
+ negative nsec instead.
+ (DUIINFO_INI, DUINFO_SET, DUINFO_ADD): Remove.
+ (duinfo_init, duinfo_set, duinfo_add): New functions, taking the
+ role of the removed macros.
+ (opt_time): Renamed from opt_last_time. All uses changed.
+ (TIME_OPTION): Renamed from LAST_TIME_OPTION. All uses changed.
+ (long_options, usage): Rename --last-time to --time.
+ (locale_time_style): Remove.
+ (time_style_args, time_style_types, usage): Remove support for
+ --time-style=locale.
+ (show_date): Now returns void, since nobody looked at the result.
+ Assume FORMAT is not null. An empty FORMAT now outputs an empty time.
+ Simplify nstrftime invocation.
+ (main): Put in ls compatibility workarounds only for TIME_STYLE,
+ not for --time-style. Omit unnecessary space in iso time style.
+
+2005-06-23 Jim Meyering <jim@meyering.net>
+
+ * src/du.c (time_format): Add `const' attribute.
+
+ * src/date.c (show_date): Use puts rather than printf ("%s\n",.
+
+ * src/du.c (show_date): Rename local `time_format' so as not to
+ shadow the file-scoped global by that name.
+ (show_date): Add a FIXME comment.
+
+ * src/du.c: Include hard-locale.h and strftime.h.
+ (DUINFO_INI, DUINFO_SET, DUINFO_ADD):
+ Enclose body in `do {...} while (0)', not just `{...}'.
+ Adjust uses (add semicolons).
+ Adjust formatting, indentation.
+ (usage): Tweak formatting to maintain more or less constant indentation.
+
+2005-06-14 William Brendling <wbrendling@gmail.com>
+
+ * src/du.c: Add --last-time and --time-style options.
+
+2005-06-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/umask-check: New file.
+ * tests/Makefile.am (EXTRA_DIST): Add umask-check.
+ * tests/mkdir/perm: Use umask-check.
+ * tests/cp/cp-parents: Likewise, instead of using chmod
+ as described below. Problem reported by Kevin Mudrick.
+
+2005-06-22 Jim Meyering <jim@meyering.net>
+
+ Make rmdir produce diagnostics like this:
+ rmdir: /tmp: Permission denied
+ not like this:
+ rmdir: `/tmp': Permission denied
+
+ * src/rmdir.c: Include "quotearg.h", not "quote.h".
+ (remove_parents, main): Use quotearg_colon, not quote.
+
+2005-06-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/cp/cp-parents: Use chmod to work around some hosts with
+ ACL problems. Problem reported by Kevin Mudrick.
+
+2005-06-21 Jim Meyering <jim@meyering.net>
+
+ * tests/du/deref-args: Use --apparent-size to avoid the vagaries
+ of counting blocks. Kevin Mudrick reported that this test would
+ fail on an nfs-mounted directory where attribute-caching is
+ turned on.
+
+2005-06-19 Jim Meyering <jim@meyering.net>
+
+ * src/tac.c (tac_mem, tac_stdin_to_mem): Remove #if-0'd functions.
+
+ * src/shred.c (usage): Use `file system', not `filesystem'.
+
+2005-06-18 Jim Meyering <jim@meyering.net>
+
+ * src/tr.c (unquote): Remove unnecessary `' quotes from a diagnostic.
+
+2005-06-17 Jim Meyering <jim@meyering.net>
+
+ * src/shred.c (usage): Clarify that shred works on an ext3 file
+ system as long as it's not in data=journal mode.
+ Tiny change by Mark Melahn.
+
+2005-06-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/hostid.c (main): Don't print fewer than 8 digits, or spurious
+ leading "f"s. "f" problem reported by Tim Waugh.
+ * NEWS: Document this.
+
+2005-06-16 Jim Meyering <jim@meyering.net>
+
+ Don't embed `this'-style quotes in format strings.
+ * src/tr.c: Rather than this: error (..., "...`%s'...", arg);
+ do this: error (..., "...%s...", quote (arg));
+ * src/od.c, src/tr.c, src/csplit.c, src/date.c, src/hostname.c:
+ * src/join.c, src/ptx.c, src/seq.c, src/sort.c, src/split.c:
+ * src/split.c, src/tail.c: Likewise.
+
+ * src/sleep.c: Include "quote.h". Remove hard-coded quotes, as above.
+ * src/nice.c, src/printf.c, src/fold.c, src/pr.c: Likewise.
+ * src/factor.c, src/cat.c, src/expr.c, src/stty.c: Likewise.
+
+ * src/mv.c: Finally remove support for --version-control=S (-V).
+ It was deprecated nearly 6 years ago and has been warning
+ users to switch to --backup=S since fileutils-4.0j.
+ * src/cp.c, src/install.c, src/ln.c: Likewise.
+
+2005-06-15 Jim Meyering <jim@meyering.net>
+
+ * src/install.c (main): Fix my typo: s/argv[optind]/file[i]/.
+ * tests/install/basic-1: Ensure that each `-d'-specified directory
+ is created. Ensure that rel-named dirs are not created when
+ chdir($PWD) fails.
+
+ * tests/mkdir/p-3: Add a test for just-fixed bug in mkdir-p.c.
+
+2005-06-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ Improve diagnostics for restore_cwd failure.
+ * src/install.c (main): Standardize on a diagnostic for
+ restore_cwd failure, and report errno.
+ (install_file_in_file_parents): Fail if restore_cwd fails and
+ one of the files is relative. This fixes a bug (albeit unlikely).
+ * src/mkdir.c (create_parents): Remove static var (now local to 'main').
+ (main): Standardize on a diagnostic for restore_cwd failure,
+ and report errno.
+ Don't bother to check cwd_errno unless create_parents.
+ Use mkdir rather than make_dir; it's simpler.
+
+ * src/install.c (main): Adjust to new make_dir_parents convention.
+ * src/mkdir.c (main): Likewise.
+
+2005-06-14 Jim Meyering <jim@meyering.net>
+
+ * tests/mkdir/p-3: Ensure mkdir succeeds if the following argument
+ is an absolute directory name.
+
+ * Makefile.maint (my-distcheck): Add -Wall to the list of options that
+ are used with -Werror. This target is not intended for general use.
+
+2005-06-13 Jim Meyering <jim@meyering.net>
+
+ * src/mkdir.c (main): Give a diagnostic for -- and skip -- each
+ relative directory name after make_dir_parents fails to restore
+ the working directory. Before, `mkdir -p' could create directories
+ in the wrong place in unusual circumstances.
+ * src/install.c (main): Likewise.
+ (install_file_in_file_parents): Update make_dir_parents caller.
+ * tests/mkdir/p-3: New test for today's mkdir.c/mkdir-p.c bug fixes.
+ * tests/mkdir/Makefile.am (TESTS): Add p-3.
+
+2005-06-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ Act on the Austin Group's response yesterday to XCU ERN 63; see
+ <http://www.opengroup.org/austin/docs/austin_260.txt>.
+ * NEWS: ls no longer outputs an extra space between mode and link count.
+ * doc/coreutils.texi: Remove the extra spaces in "ls -l" output.
+ * src/ls.c (any_has_acl): New var.
+ (clear_files): Clear it.
+ (gobble_file): Set it if a file has an ACL.
+ (print_long_format): Omit needless space unless some file has an ACL.
+
+2005-06-10 Jim Meyering <jim@meyering.net>
+
+ * src/system.h (VERIFY_W_TYPEOF): Add parentheses.
+
+2005-06-02 Jim Meyering <jim@meyering.net>
+
+ * src/sort.c (usage): Put `Ordering options:' line where it belongs.
+
+2005-06-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ Use "file name" when talking about file names, instead of "filename"
+ or "path", as per the GNU coding standards.
+ * src/basename.c: Don't use "path" or "filename".
+ * src/copy.c: Likewise.
+ * src/copy.h: Likewise.
+ * src/cp-hash.c: Likewise.
+ * src/cp.c: Likewise.
+ * src/df.c: Likewise.
+ * src/install.c: Likewise.
+ * src/ls.c: Likewise.
+ * src/pinky.c: Likewise.
+ * src/pr.c: Likewise.
+ * src/pwd.c: Likewise.
+ * src/remove.c: Likewise.
+ * src/rmdir.c: Likewise.
+ * src/sort.c: Likewise.
+ * src/system.h: Likewise.
+ * src/tty.c: Likewise.
+ * src/who.c: Likewise.
+ * src/cp.c (parents_option): Renamed from flag_path. All uses changed.
+ (make_dir_parents_private): Renamed from make_path_private.
+ All uses changed.
+ * src/cp.c (usage): Don't use "path" to describe a file name.
+ * src/readlink.c (usage): Likewise.
+ * src/rmdir.c (usage): Likewise.
+ * src/df.c: Don't include "path-concat.h"; not needed.
+ * src/install.c (install_file_in_file_parents): Renamed from
+ install_file_to_path. All uses changed.
+ * src/ln.c (FILE_BASENAME_CONCAT): Renamed from PATH_BASENAME_CONCAT.
+ All uses changed.
+ * src/ls.c (make_link_name): Renamed from make_link_path.
+ All uses changed.
+ * src/pwd.c (struct file_name): Renamed from struct Path.
+ All uses changed.
+ (file_name_free): Renamed from path_free. All uses changed.
+ (file_name_init): Renamed from path_init. All uses changed.
+ (file_name_prepend): Renamed from path_prepend. All uses changed.
+ * src/rmdir.c (remove_empty_parents): Renamed from empty_paths.
+ All uses changed.
+ (longopts): Add comment that --path is deprecated.
+
+2005-05-31 Jim Meyering <jim@meyering.net>
+
+ * src/copy.c (chown_privileges, chown_failure_ok): Mark as `extern'.
+ This is a crutch so that `make distcheck's sc_tight_scope rule
+ knows that they really are deliberately declared that way.
+
+2005-05-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port to Solaris 10's rules for whether programs can chown files.
+ * src/copy.c [HAVE_PRIV_H]: Include <priv.h>.
+ (DO_CHOWN): Remove. Replaced by chown_failure_ok. All callers
+ changed.
+ (copy_internal): If chown failed, don't worry about what happened
+ to the mode bits; they can't have changed.
+ (chown_privileges, chown_failure_ok): New functions.
+ * src/copy.h: Add copyright notice.
+ (struct cp_options): Remove myeuid member. Add chown_privileges
+ member.
+ (chown_privileges, chown_failure_ok): New function decls.
+ * src/cp.c (re_protect): Remove unnecessary call to geteuid.
+ Use chown_failure_ok rather than our own code.
+ * src/cp.c (cp_options_init): Use chown_privileges rather than geteuid.
+ * src/install.c (cp_option_init): Likewise.
+ * src/mv.c (cp_option_init): Likewise.
+
+2005-05-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/chgrp.c (getgrnam) [!defined _POSIX_VERSION]: Remove decl.
+ * src/chown-core.c (getgrnam, getgrgid) [!defined _POSIX_VERSION]:
+ Remove decls.
+ * src/cp.c (geteuid) [!defined _POSIX_VERSION]: Remove decl.
+ * src/id.c (getpwuid, getgrgid, getuid, getgid, geteuid, getegid)
+ [!defined _POSIX_VERSION]: Remove decls.
+ * src/install.c (getpwnam, getgrnam): Remove decl.
+ (getuid, getgid) [!defined _POSIX_VERSION]: Remove decls.
+ * src/md5sum.c (OPENOPTS, TEXT1T01, TEXTCNVT): Remove.
+ (digest_file): Use O_BINARY-using expr instead of OPENOPTS.
+ * src/system.h: Don't bother mentioning _POSIX_VERSION in comment.
+ * src/test.c: Include sys/param.h if it exists, not if _POSIX_VERSION
+ isn't defined.
+ Don't include <sys/file.h>; no longer needed.
+ (getegid, geteuid): Remove no-longer-necessary decls.
+
+ * src/pathchk.c (_POSIX_PATH_MAX) [!defined _POSIX_PATH_MAX]:
+ Define to 256, not 255, as per modern POSIX.
+
+2005-05-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: dd seek=N now conforms to POSIX if the output isn't seekable.
+ * src/dd.c (skip): Return the number of records that were not
+ skipped due to encountering EOF.
+ (dd_copy): If the file wasn't seekable and EOF was encountered,
+ write zeros past EOF until the desired offset is reached.
+
+ * NEWS: expr and test now correctly compare integers of unlimited size.
+ (Also, correct a comment that claimed that expr detects integer
+ overflow; it does so only when converting from strings.)
+ * src/expr.c: Include strnumcmp.h, xstrtol.h.
+ (looks_like_integer): New function.
+ (toarith): Use it. Also, use xstrtoimax rather than rolling our
+ own diagnostics.
+ (eval2): Don't look for trouble if !evaluate; this simplifies things.
+ Compare numbers using string comparison, so that overflow is
+ not possible.
+ * src/sort.c: Refactor so that others can use large-integer
+ comparison functions.
+ Include "strnumcmp.h".
+ (NEGATION_SIGN, NUMERIC_ZERO, fraccompare):
+ Remove; moved to strnumcmp.
+ (decimal_point): Now int, to simplify converison overhead with
+ new API. All uses changed.
+ (thousands_sep): Now -1 if there isn't one, as per new API.
+ All uses changed.
+ (numcompare): Move contents to strnumcmp module, except for
+ skipping blanks.
+ * src/test.c: Include inttostr.h, strnumcmp.h.
+ (whitespace, digit, digit_value, integer_expected_error): Remove.
+ (is_int): Remove; replaced by...
+ (find_int): New function.
+ (binary_operator): Don't let integers overflow in comparisons;
+ return the correct answer instead. Simplify the code.
+ (unary_operator): Convert the integer ourself, since find_int
+ no longer does so.
+ * tests/expr/basic (bigcmp): New test.
+ * tests/test/Test.pm (eq-6, gt-5, lt-5): New tests.
+
+2005-05-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: nohup now redirects a tty stdin to an unreadable fd
+ instead of closing it.
+ * doc/coreutils.texi (nohup invocation): Document this.
+ * src/nohup.c (main): Implement this.
+
+2005-05-26 Jim Meyering <jim@meyering.net>
+
+ * src/expr.c (toarith): Fix a sign error introduced on 2005-01-14.
+ Reported by David Alan Gilbert.
+ * tests/expr/basic: Add tests using arithmetic on negative integers.
+
+2005-05-19 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (AD_mark_helper, AD_mark_current_as_unremovable):
+ Remove inaccurate-but-harmless `const' attributes.
+
+ * src/join.c (decode_field_spec): Add an abort after
+ `error (EXIT_FAILURE, ...' to avoid a gcc warning in caller,
+ about variables being used uninitialized.
+
+2005-05-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * configure.ac: Add copyright notice. gl_LIB_CHECK -> cu_LIB_CHECK.
+ * src/Makefile.am: Add copyright notice.
+ (factor_LDADD): Remove, as factor no longer needs sqrt.
+ * src/hostname.c: Remove test for HAVE_LIMITS_H; we can assume
+ it's always true now.
+
+2005-05-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix Cygwin porting problem reported by Eric Blake.
+ * src/remove.c (DT_IS_DIR): Remove.
+ (DT_IS_KNOWN, DT_MUST_BE): New macros.
+ (remove_entry): Use them.
+
+2005-05-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/remove.c: Include unlinkdir.h.
+ (UNLINK_CAN_UNLINK_DIRS): Remove.
+ (remove_entry): Use cannot_unlink_dirs () rather than
+ UNLINK_CAN_UNLINK_DIRS.
+
+2005-05-14 Jim Meyering <jim@meyering.net>
+
+ Update FSF postal mail address.
+ * Makefile.maint, Makefile.cfg, gnupload
+ * src/basename.c, src/cat.c, src/checksum.h, src/chgrp.c
+ * src/chmod.c, src/chown-core.c, src/chown-core.h, src/chown.c
+ * src/chroot.c, src/cksum.c, src/comm.c, src/copy.c, src/copy.h
+ * src/cp-hash.c, src/cp-hash.h, src/cp.c, src/csplit.c, src/cut.c
+ * src/date.c, src/dcgen, src/dd.c, src/df.c, src/dircolors.c
+ * src/dirname.c, src/du.c, src/echo.c, src/env.c, src/expand.c
+ * src/expr.c, src/factor.c, src/fmt.c, src/fold.c, src/fs.h
+ * src/groups.sh, src/head.c, src/hostid.c, src/hostname.c, src/id.c
+ * src/install.c, src/join.c, src/kill.c, src/lbracket.c, src/link.c
+ * src/ln.c, src/logname.c, src/ls-dir.c, src/ls-ls.c, src/ls-vdir.c
+ * src/ls.c, src/ls.h, src/md5.c, src/md5sum.c, src/mkdir.c
+ * src/mkfifo.c, src/mknod.c, src/mv.c, src/nice.c, src/nl.c
+ * src/nohup.c, src/od.c, src/paste.c, src/pathchk.c, src/pinky.c
+ * src/pr.c, src/printenv.c, src/printf.c, src/ptx.c, src/pwd.c
+ * src/readlink.c, src/remove.c, src/remove.h, src/rm.c, src/rmdir.c
+ * src/seq.c, src/setuidgid.c, src/sha1sum.c, src/shred.c
+ * src/sleep.c, src/sort.c, src/split.c, src/stat.c, src/stty.c
+ * src/su.c, src/sum.c, src/sync.c, src/system.h, src/tac-pipe.c
+ * src/tac.c, src/tail.c, src/tee.c, src/test.c, src/touch.c
+ * src/tr.c, src/true.c, src/tsort.c, src/tty.c, src/uname.c
+ * src/unexpand.c, src/uniq.c, src/unlink.c, src/uptime.c
+ * src/users.c, src/wc.c, src/who.c, src/whoami.c, src/yes.c
+
+2005-05-13 Jim Meyering <jim@meyering.net>
+
+ * NEWS: `rm -r' now removes all of the files it should, even on
+ systems with a buggy readdir affecting file systems inaccessible
+ at configure time.
+
+ In some unusual circumstances `rm -r' would fail to remove --
+ or even consider -- all entries in a directory with more than 254
+ (SunOS) or 338 (Darwin) entries. This could cause trouble even on
+ other types of systems when using an affected file system via e.g.,
+ NFS. The underlying cause was a bug in readdir on those systems.
+ Coreutils-5.2.1 and earlier used a configure-time test designed
+ to detect precisely those problem systems, but it would detect
+ the problem and enable remove.c's work-around code only when its
+ configure-time test was run on a losing file system. Obviously,
+ it couldn't detect a problem if the offending file system wasn't
+ tested or even mounted at coreutils configure time. Now, rm itself
+ performs a minimal-cost run-time test to detect the problem.
+
+ * src/remove.c (CONSECUTIVE_READDIR_UNLINK_THRESHOLD): Define.
+ (remove_cwd_entries): When readdir returns NULL for a directory from
+ which we've removed more than CONSECUTIVE_READDIR_UNLINK_THRESHOLD
+ entries, call rewinddir and then resume the readdir/unlink loop.
+ (UNLINK_CAN_UNLINK_DIRS): Rename from ROOT_CAN_UNLINK_DIRS.
+
+2005-05-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: nohup now closes stdin if it is a terminal, unless
+ POSIXLY_CORRECT is set. This fixes a glitch noted by Wayne Pollock in
+ <https://www.opengroup.org/sophocles/show_mail.tpl?
+ source=L&listname=austin-group-l&id=8341>.
+ * doc/coreutils.texi (nohup invocation): Document this.
+ * src/nohup.c (main): Implement this.
+
+2005-05-12 Jim Meyering <jim@meyering.net>
+
+ * src/date.c: Assume `free (NULL)' works.
+ * src/dd.c: Likewise.
+ * src/df.c:Likewise.
+ * src/dircolors.c:Likewise.
+ * src/head.c: Likewise.
+ * src/ls.c: Likewise.
+ * src/md5sum.c: Likewise.
+ * src/pr.c: Likewise.
+ * src/sort.c: Likewise.
+
+2005-05-10 Jim Meyering <jim@meyering.net>
+
+ * tests/touch/not-owner: Skip this test if the user running it
+ owns `/' or has write access to it.
+
+ * src/copy.c (abandon_move): Remove erroneous UNWRITABLE check.
+ This makes `mv -i --reply=no f1 f2' work as expected (in not
+ performing the move operation). But note that specifying `-i'
+ after `--reply=no' does *not* work.
+ Tiny patch from Vlada Macek.
+ Correct a comment.
+ * tests/mv/reply-no: New file. Test for the above fix.
+ * tests/mv/Makefile.am (TESTS): Add reply-no.
+
+ * tests/ls-2/tests: Don't print PATH to stderr.
+
+2005-05-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: cp, ln, mv, rm no longer discard white space when intepreting
+ responses.
+
+2005-05-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: dd has new iflag= and oflag= flags "binary" and "text".
+ * src/dd.c (flags, usage): Add support for "binary" and "text".
+
+2005-05-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: chmod -w now complains if it differs from chmod a-w.
+ * src/chmod.c: Include quotearg.h.
+ (diagnose_surprises): New var.
+ (process_file): Diagnose surprises. Simplify the logic a bit,
+ while we're at it.
+ (main): Prepare to diagnose surprises. Remove useless code for
+ '-' option.
+ * tests/chmod/Makefile.am (TESTS): Add umask-x.
+ * tests/chmod/umask-x: New file.
+
+2005-05-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: ls --indicator-style=directory renamed to ls
+ --indicator-style=slash, to avoid confusion with ls --directory.
+ * src/ls.c (usage): Likewise.
+ (slash): Renamed from directory_only. All uses changed.
+
+2005-05-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: "chmod +1 foo" is now diagnosed.
+
+2005-04-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: ls -p now marks only directories. New option
+ --indicator-style=directory equivalent to -p.
+ * doc/coreutils.texi (ls invocation): Document this.
+ Also, mention ">" is for doors.
+ * src/ls.c (enum indicator_style): New constant directory_only,
+ for -p.
+ (indicator_style_args, indicator_style_types): Set it appropriately.
+ (decode_switches, gobble_file, print_type_indicator):
+ (length_of_file_name_and_frills):
+ Implement the change described in NEWS.
+ (decode_switches): Quote ">", too.
+ (usage): Update to match the new behavior. Describe ">".
+ * tests/ls/file-type: Test for new behavior. Omit -1 option.
+ The "ls --color" test wasn't being checked; add a check for
+ "ls --color=auto" instead.
+
+ * tests/head/Test.pm: Don't set _POSIX2_VERSION; no longer needed.
+ * tests/misc/split-fail: Likewise.
+ * tests/pr/Test.pm: Likewise.
+ * tests/sort/Test.pm: Fix comment to match new behavior of "sort".
+ * tests/tail/Test.pm (tv): Rename tests from obs to obs-plus
+ if they use file names starting with +.
+ (test_vector): Don't set _POSIX2_VERSION if obs but not obs-plus.
+ * tests/uniq/Test.pm (tv, test_vector): Likewise.
+
+ The following was partly derived from a tiny change by Eric Blake:
+ * tests/misc/nice: Don't use 'set -'. It's not portable to strict
+ POSIX 1003.1-2001 hosts. Also, don't set _POSIX2_VERSION.
+ * tests/mkdir/perm: Don't use 'set -'. Simplify test construction.
+ Work even if the underyling system attaches ACLs to new dirs.
+ * tests/mv/part-hardlink: Don't use 'set -'.
+ * tests/stty/row-col-1: Don't use 'set -'.
+
+2005-04-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Document fixes described below.
+ * src/chmod.c (change, umask_value): New static vars.
+ (reference_file): Move this static var to inside "main".
+ (process_file, process_files): Remove CHANGES arg; now taken from
+ static var. All uses changed.
+ (usage): Fix incorrect description of MODE operand.
+ (main): For invalid mode usages, output a brief usage message.
+ Adjust to new modechange API.
+ * install.c (main): Adjust to new modechange API.
+ Also, free the mode_change object when done.
+ * mkdir.c (main): Likewise.
+ * mkfifo.c (main): Likewise.
+ * mknod.c (main): Likewise.
+ * tests/chmod/equal-X: Check for =xX bug.
+ * tests/chmod/equals: Check for =u bug.
+ * tests/chmod/usage: Check for u+gr and ug,+x bugs.
+
+2005-04-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ Restore support for usages like "head -1" and "tail -1",
+ even when conforming to POSIX 1003.1-2001.
+ Fix bug with "POSIXLY_CORRECT=1 fold file -3".
+ join now supports a NUL field separator, e.g., "join -t '\0'".
+ join now detects and reports incompatible options, e.g.,
+ "join -t x -t y",
+ * NEWS: Document this.
+ * src/date.c: Remove posixver.h and its uses.
+ (COMMON_SHORT_OPTIONS): Remove.
+ (short_options): New constant.
+ (short_options, usage): -I now always takes an optional arg.
+ * src/expand.c: Remove posixver.h and its uses.
+ (shortopts): New constant. -DIGIT now always takes an optional arg.
+ (main): Revamp parsing of -DIGIT to let parse_tab_stops handle it.
+ Don't complain about -DIGIT.
+ * src/fold.c: Remove posixver.h and its uses.
+ (shortopts): New constant. -DIGIT now always takes an optional arg.
+ (main): Don't preprocess arg list; that was buggy. Use method
+ similar to expand.
+ * src/head.c: Remove posixver.h and its uses.
+ (header_mode_option): Remove.
+ (main): Don't complain about obsolete -NUM args.
+ * src/join.c: Remove posixver.h and its uses.
+ (obsolete_usage): Remove.
+ (join_field_1, join_field_2): Initialize to SIZE_MAX to indicate
+ they haven't been set yet.
+ (tab): Now int, not char. Initialize to -1 to indicate white space
+ separates columns, so that we can use NUL as a separator.
+ All uses changed.
+ (OBSOLETE_LONG_OPTIONS, get_option): Remove.
+ (string_to_join_field): Remove ERR_MSG_FMT arg; a single format
+ suffices. Use xstrtoul for sizes; it suffices.
+ (decode_field_spec): Report an error and exit on failure. Return void,
+ not bool.
+ (add_field_list): Likewise.
+ (set_join_field): New function.
+ (enum operand_status): New enum.
+ (add_file_name): New args OPERAND_STATUS, JOPTION_COUNT,
+ PREV_OPTC_STATUS, OPTC_STATUS to handle the bewildering array of
+ possibilities with obsolete option parsing.
+ (main): Use it. Do not depend on POSIX version.
+ Check for conflicting options. Parse obsolete options -j1 and -j2
+ so that it is a pure extension to POSIX 1003.1-2001.
+ Allow '-t\0' to specify a NUL tab, stealing the code from 'sort'.
+ * src/nice.c: Remove posixver.h and its uses.
+ (main): Always support -NUM option.
+ * src/od.c: Remove posixver.h and its uses.
+ (short_options): New constant, which always supports -w[num].
+ (COMMON_SHORT_OPTIONS): Remove.
+ * src/pr.c: Remove posixver.h and its uses.
+ (short_options): New constant, which always supports -S[string].
+ (COMMON_SHORT_OPTIONS): Remove.
+ * src/sort.c: Remove posixver.h and its uses.
+ (short_options): New constant, which always supports -y arg.
+ (COMMON_SHORT_OPTIONS): Remove.
+ (main): Redo workaround for Solaris compatibility with -y.
+ This change isn't visible to the user; it just cleans up the
+ code so that we don't need posixver.h.
+ * src/split.c: Remove posixver.h and its uses.
+ (main): Don't complain about -NUM option.
+ * src/tail.c (parse_obsolete_option): Don't complain about -NUM.
+ * src/unexpand.c: Remove posixver.h and its uses.
+ (main): Don't complain about -TAB.
+ * src/uniq.c (main): Don't complain about -NUM.
+
+2005-04-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/nohup.c (main): If getopt fails, exit with status 127,
+ not status 1. POSIX requires this.
+ * NEWS: Document this.
+
+ * src/nice.c (main): Report proper program name when getopt finds
+ trouble. Problem reported by Behdad Esfahbod.
+
+ * NEWS: Fix bug with "mkdir -m =+x dir"; the umask was being ignored
+ when the "+x" was being evaluated.
+ * mkdir.c (main): Compile mode with MODE_MASK_ALL and initial umask.
+ * mkfifo.c (main): Likewise.
+ * mknod.c (main): Likewise.
+ * tests/mkdir/perm: Test for the above bug.
+
+2005-04-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port test cases to Microsoft-Windows-related environments,
+ following suggestions from Eric Blake.
+ * tests/install/Makefile.am (TESTS_ENVIRONMENT): Add EXEEXT.
+ * tests/install/basic-1: Undo previous change.
+ (dd, dd2): New vars, which use $EXEEXT. All uses of dd and dd2 changed.
+ * tests/install/trap: Undo previous change.
+ (sig): New var. Use it insted of "trap '' CHLD".
+ Append $EXEEXT to executable name.
+
+ "fetish" -> "coreutils" in more places.
+ * tests/Coreutils.pm: Renamed from tests/Fetish.pm.
+ (package Coreutils): Renamed from package Fetish. All uses changed.
+ * tests/Makefile.am (EXTRA_DIST): Add Coreutils.pm and
+ remove Fetish.pm.
+
+2005-04-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/mv/setup (dot_mount_point): Use stat -L, in case the
+ directory is actually a symbolic link. Problem reported by
+ Eric Blake.
+
+ * tests/mv/mv-special-1: Use test -p to test for fifos, rather
+ than the (incorrect) test -f and the (inadequate) ls. ls is
+ inadequate because on some hosts a buggy mv will create a file of
+ the wrong type (problem reported by Eric Blake). Skip this test
+ if test -p doesn't work.
+
+ * tests/chmod/setgid: Use numeric group ids, not symbolic group names,
+ since the latter can have shell metacharacters in them (e.g., spaces).
+ This follows up to the 2005-01-17 patch, which missed this occurrence.
+
+2005-04-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ "fetish" -> "coreutils" in several places.
+ * Makefile.cfg (ftp): Remove fetish.sf.net.
+ * Makefile.maint (emit_upload_commands): Likewise.
+ * src/Makefile.am (LDADD, $(PROGRAMS)): fetish -> coreutils.
+ * tests/group-names (COREUTILS_GROUPS): Renamed from FETISH_GROUPS.
+ * tests/chmod/setgid (FETISH_GROUP): Renamed from COREUTILS_GROUP.
+
+ * tests/install/basic-1: Use "cat", not "test", to test for
+ ../../src/dd. Problem reported by Eric Blake.
+
+2005-04-18 Jim Meyering <jim@meyering.net>
+
+ * src/dd.c: Don't include stat-macros.h directly. system.h does that.
+
+2005-04-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ Work around a couple of "make check" failures reported for Cygwin
+ and ash by Eric Blake.
+ * tests/install/basic-1: Skip this test if ../../src/dd isn't readable.
+ * tests/install/trap: Skip this test if "trap '' CHLD" doesn't work.
+
+2005-04-16 Jim Meyering <jim@meyering.net>
+
+ * src/dd.c (S_TYPEISSHM): Remove definition.
+ Get the definition by including "stat-macros.h", instead.
+
+2005-04-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix test suite problems reported by Eric Blake on Cygwin.
+ * tests/mv/mv-special-1: Ignore chatter about when files are removed,
+ since POSIX doesn't require rename to fail across file systems.
+ * tests/mv/setup (dot_mount_point): Use stat rather than df, as
+ it's more reliable.
+ (other_partition_tmpdir): Remove df from name as that would be
+ misleading now.
+
+2005-04-14 Jim Meyering <jim@meyering.net>
+
+ * src/chown-core.c: Correct typo, fchmod -> fchown, in a comment.
+
+2005-04-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/ls.c (usage): "uid" -> "user ID".
+
+2005-04-12 Jim Meyering <jim@meyering.net>
+
+ * src/tsort.c (tsort): Use "%s" as the format string,
+ rather than a diagnostic or a file name.
+
+ * src/comm.c (compare_files): Remove declaration of unused local.
+
+ * src/chown-core.c (chopt_free): Mark parameter as unused.
+
+2005-04-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * man/chown.x: Reword to match user manual.
+ * man/id.x: Likewise.
+ * src/setuidgid.c (usage): Use "user ID", not "UID", and similarly
+ for "group ID".
+ * src/whoami.c (usage, main): Likewise.
+
+ Add bulletproofing for cases where stdin, stdout, or stderr are closed.
+ * src/comm.c: Include stdio-safer.h.
+ (compare_files): Exit right away on I/O error rather than continuing
+ and producing confusing output and error messages.
+ Return void, not int; all callers changed.
+ Use fopen_safer to avoid confusion with file descriptors.
+ * src/copy.c: Include unistd-safer.h.
+ (copy_reg): Use fd_safer.
+ * src/csplit.c: Include stdio-safer.h.
+ (input_desc): Remove unnecessary static initialization.
+ (set_input_file): Use STDIN_FILENO, not 0.
+ (create_output_file): Use fopen_safer.
+ * src/dircolors.c (dc_parse_file): Don't assume fopen does not
+ return stdin.
+ * src/head.c (head_file): Don't assume open does not return 0.
+ * src/join.c: Include stdio-safer.h.
+ (main): Use fopen_safer. Simplify the resulting code.
+ * src/md5sum.c (digest_file, digest_check):
+ Don't assume that fopen does not return stdin.
+ * src/nohup.c: Include unistd-safer.h.
+ (main): Don't dup stderr to stdin or stdout by mistake.
+ * src/od.c (check_and_close): Don't assume fopen does not return stdin.
+ * src/paste.c (paste_serial): Likewise.
+ * src/pr.c: Include stdio-safer.h.
+ (open_file): Use fopen_safer.
+ (close_file): Don't assume fopen does not return stdin.
+ * src/ptx.c (main): Don't assume fopen returns stdout after closing
+ stdout. Use freopen instead.
+ * src/shred.c: Include unistd-safer.h.
+ (wipename): Use fd_safer on directory file descriptor.
+ (wipefile): Remove special case for /dev/fd/* on older hosts.
+ It didn't work in general, and wasn't documented.
+ Use fd_safer.
+ * src/sort.c: Include unistd-safer.h.
+ (create_temp_file): Use fd_safer.
+ (xfclose): Don't assume fileno (stdin) == STDIN_FILENO, etc.
+ * src/split.c: Include unistd-safer.h.
+ (cwrite): Use fd_safer. Replace mystery constant 0666 with symbolic
+ version, as POSIX requires.
+ * src/sum.c (bsd_sum_file, sysv_sym_file):
+ Use same pattern as elsewhere for checking for stdin.
+ * src/tac.c: Include unistd-safer.h.
+ (copy_to_temp): Use fd_safer.
+ (tac_file): Don't assume fopen cannot return stdin.
+ * src/tail.c: Include unistd-safer.h rather than fcntl-safer.h.
+ (recheck, tail_file): Use fd_safer rather than open_safer.
+ * src/tee.c: Include stdio-safer.h.
+ (tee): Use fopen_safer.
+ * src/touch.c: Include unistd-safer.h.
+ (touch): Use fd_safer.
+ * src/tsort.c (have_read_stdin): Remove; no longer needed. All uses
+ removed.
+ (tsort): Do not assume fopen can't return stdin.
+ Close stdin before returning. All uses changed.
+ * src/unexpand.c (next_file): Don't assume fopen cannot return stdin.
+ * src/uniq.c: Include stdio_safer.h.
+ (check_file): Don't assume fopen cannot return stdin or stdout.
+
+2005-04-09 Jim Meyering <jim@meyering.net>
+
+ * src/dd.c (quit): Define with ATTRIBUTE_NORETURN.
+
+ Now that close_stdout closes standard output unconditionally,
+ these workarounds for dd and cat are no longer necessary.
+ * src/dd.c (close_stdout_wrapper): Remove function.
+ (main): Call atexit with close_stdout, instead.
+ * src/cat.c (close_stdout_wrapper): Likewise.
+ Don't close STDOUT_FILENO explicitly; close_stdout does it.
+
+ * src/system.h (__attribute__): Readability nit:
+ Change this:
+ # define __attribute__(x)
+ to this:
+ # define __attribute__(x) /* empty */
+
+2005-04-09 Jim Meyering <jim@meyering.net>
+
+ * src/rm.c (usage): Mention that --recursive removes listed
+ directories too, not just their contents.
+ Say that by default, rm does not remove directories.
+
+ * src/pr.c: Don't include "timespec.h". system.h does that.
+ * Makefile.maint (sc_system_h_headers): Propagate exit status
+ through trap.
+
+2005-04-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Document that dd no longer treats QUIT or PIPE specially,
+ and when conforming to POSIX no longer treats USR1 specially.
+ Document that dd no longer dumps core when handling signals.
+ * src/system.h (RETSIGTYPE): Remove; no longer needed. All uses
+ replaced with void.
+ * src/csplit.c (SA_NOCLDSTOP): Define to 0 if not defined.
+ All uses changed.
+ (siginterrupt) [!HAVE_SIGINTERRUPT]: New macro.
+ (delete_all_files): New arg IN_SIGNAL_HANDLER, to avoid undefined
+ behavior when called from a signal handler. All uses changed.
+ (main) [!defined SA_NOCLDSTOP]:
+ Use siginterrupt to specify that system calls should be interrupted.
+ * src/dd.c: Do not include safe-read.h or full-write.h; no longer needed.
+ (process_signals): Add forward decl.
+ (SA_NOCLDSTOP, sigprocmask, sigset_t) [!defined SA_NOCLDSTOP]:
+ New macros.
+ (siginterrupt) [! HAVE_SIGINTERRUPT]: New macro.
+ (SA_NODEFER) [!defined SA_NODEFER]: New macro.
+ (SA_RESETHAND) [!defined SA_RESETHAND]: New macro.
+ (caught_signals, interrupt_signal, info_signal_count, catch_siginfo):
+ New vars.
+ (usage): Mention -USR1 versus -INFO.
+ (cleanup): Don't invoke print_stats; the caller must do it now.
+ All callers changed.
+ (quit): Process signals just before exiting.
+ (interrupt_handler): Simply record the signal and return.
+ (siginfo_handler): Simply increment the signal counter and return.
+ (install_handler): Remove, replacing with:
+ (install_signal_handlers, process_signals, iread, iwrite):
+ New functions. All callers to safe_read and full_write replaced
+ by iread and iwrite. All callers to install_handler replaced by
+ install_handlers.
+ * src/ls.c (SA_NOCLDSTOP): Define to 0 if not defined.
+ All uses changed.
+ (siginterrupt) [! HAVE_SIGINTERRUPT]: New macro.
+ (main) [! SA_NOCLDSTOP]: Use it.
+ * src/shred.c: Remove all uses of signals; modern hosts have
+ /dev/random and don't need this gorp.
+ Do not include signal.h.
+ (env, sigill_handler, isaac_seed_machdep): Remove. All uses removed.
+ * src/sort.c (SA_NOCLDSTOP): Define to 0 if not defined.
+ All uses changed.
+ (siginterrupt) [! HAVE_SIGINTERRUPT]: New macro.
+ (main) [! SA_NOCLDSTOP]: Use it.
+
+ * src/dd.c: Do not include inttostr.h, no longer needed.
+ (print_stats, main): Rewrite and simplify formats to use PRIuMAX
+ instead of umaxtostr.
+ (print_stats): Work even in languages that have special
+ forms for two of things, for r_truncate and w_bytes. We can't
+ fix delta_s in this way, since ngettext doesn't support floating-point.
+ (main): Rewrite to avoid casts.
+
+2005-04-07 Jim Meyering <jim@meyering.net>
+
+ Placate gcc-4's -Wuninitialized.
+ * src/md5sum.c (digest_check) [lint]: Initialize hex_digest to NULL.
+ * src/test.c (binary_operator) [lint]: Initialize lt and rt to 0.
+
+ * src/test.c (is_int, age_of, binop): Declare `char *' parameters to
+ be `const'.
+ (binop): Move function definition to precede first use so we can...
+ (binop): ...remove prototype.
+
+2005-04-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * man/Makefile.am (.x.1): Remove "COMMAND.td/" from examples.
+ * src/basename.c (usage): Add examples.
+ * src/cat.c (usage): Likewise.
+ * src/chgrp.c (usage): Likewise.
+ * src/chown.c (usage): Likewise.
+ * src/dirname.c (usage): Likewise.
+
+2005-04-05 Jim Meyering <jim@meyering.net>
+
+ * src/nice.c (usage): Mention that some shells provide a
+ built-in function by the same name.
+ * src/nohup.c (usage): Likewise.
+ * src/printenv.c (usage):Likewise.
+
+2005-04-04 Dmitry V. Levin <ldv@altlinux.org>
+
+ * src/tee.c (tee): When closing files, do not close stdout,
+ leave this job to close_stdout() instead.
+ * configure.ac (AC_CONFIG_FILES): Add tests/tee/Makefile.
+ * tests/Makefile.am (SUBDIRS): Add tee.
+ * tests/tee/Makefile.am: New file.
+ * tests/tee/.cvsignore: Likewise.
+ * tests/tee/{basic,dash}: New tee tests.
+
+2005-04-04 Jim Meyering <jim@meyering.net>
+
+ * src/echo.c (usage): Mention that some shells provide a
+ built-in function by the same name.
+ * src/kill.c (usage): Likewise
+ * src/printf.c (usage): Likewise.
+ * src/pwd.c (usage): Likewise.
+ * src/stat.c (usage): Likewise.
+ * src/test.c (usage): Likewise.
+ * src/true.c (usage):
+ * src/system.h (USAGE_BUILTIN_WARNING): New macro.
+
+ * man/echo.x: Remove `DESCRIPTION' section, now that --help includes it.
+ * man/printf.x: Likewise.
+ * man/pwd.x: Likewise.
+
+2005-04-03 Jim Meyering <jim@meyering.net>
+
+ * src/pr.c (main): Fix off-by-one error.
+ pr -$(perl -e 'print "0"x63 . 1') would write one byte beyond the
+ end of a malloc'd buffer.
+
+2005-04-01 Jim Meyering <jim@meyering.net>
+
+ * src/pr.c (main): Free column_count_string when done with it.
+
+ Don't let pr treat +1:-1 like +1:18446744073709551615.
+ * src/pr.c (strtoumax): Remove declaration.
+ (first_last_page): Use xstrtoumax in place of strtoumax,
+ so we don't interpret a negative page number (e.g., in an option
+ like --pages=1:-1) as valid.
+ * tests/pr/Test.pm (neg-page): Add a test for this.
+
+2005-03-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/pinky.c (short_pinky): Adjust to read_utmp signature change.
+ * src/uptime.c (uptime): New arg OPTIONS. All uses changed.
+ * src/users.c (users): Likewise.
+ * src/who.c (who): Likewise.
+ * src/uptime.c (main): Check PIDs when invoked with zero arguments.
+ * src/users.c (main): Likewise.
+ * src/who.c (main): Likewise. Also with two arguments.
+ Omit duplicate code in 2-arg case.
+ (UT_PID): Moved to ../lib/readutmp.h.
+
+2005-03-29 Jim Meyering <jim@meyering.net>
+
+ * src/system.h (ptr_align): Declare `ptr' parameter to be a
+ `const' pointer, since this function never writes through it.
+
+ * src/uname.c: Indent cpp directives to reflect nesting.
+
+2005-03-28 Jim Meyering <jim@meyering.net>
+
+ * src/seq.c (get_width_format) [HAVE_RINT && HAVE_MODF && HAVE_FLOOR]:
+ Add `void' to make this an ANSI-style function declaration.
+ * src/remove.c (ds_init): Likewise.
+ * src/pr.c (print_sep_string): Likewise.
+
+ * src/stty.c (speeds): Declare this array to be static.
+ * src/Makefile.am (sc_tight_scope): Adjust to catch any
+ new declarations like that of stty.c's `speeds'.
+
+ * src/system.h (GETOPT_HELP_OPTION_DECL): Use NULL, not `0'.
+ (GETOPT_VERSION_OPTION_DECL): Likewise.
+ * src/chown.c (long_options): Likewise.
+ * src/chgrp.c (long_options): Likewise.
+ * src/chmod.c (long_options): Likewise.
+ * src/cp.c (sparse_type_string, reply_args, decode_preserve_arg):
+ Likewise.
+ * src/chown-core.c (chopt_init): Likewise.
+ * src/comm.c (long_options): Likewise.
+ * src/copy.c (copy_reg): Likewise.
+ * src/csplit.c (extract_regexp): Likewise.
+ * src/cut.c (longopts): Likewise.
+ * src/date.c (time_spec_string): Likewise.
+ * src/df.c (find_mount_point, show_point): Likewise.
+ * src/expr.c (docolon): Likewise.
+ * src/fmt.c (long_options): Likewise.
+ * src/ls.c (time_style_args, indicator_style_args, long_options)
+ (format_args, sort_args, time_args, decode_switches)
+ (gobble_file): Likewise.
+ * src/md5sum.c (long_options): Likewise.
+ * src/mv.c (reply_args): Likewise.
+ * src/paste.c (longopts): Likewise.
+ * src/pinky.c (print_entry): Likewise.
+ * src/pr.c (long_options): Likewise.
+ * src/ptx.c (long_options, format_args): Likewise.
+ * src/readlink.c (longopts): Likewise.
+ * src/sort.c (long_options, mergefps): Likewise.
+ * src/stat.c (long_options): Likewise.
+ * src/tac.c (main): Likewise.
+ * src/tail.c (follow_mode_string): Likewise.
+ * src/touch.c (longopts, time_args): Likewise.
+ * src/uniq.c (delimit_method_string): Likewise.
+ * src/uptime.c (print_uptime): Likewise.
+ * src/who.c (print_user): Likewise.
+
+2005-03-27 Jim Meyering <jim@meyering.net>
+
+ * src/dcgen: Simplify further, clean up.
+ Add a standard-output-closing global destructor.
+ Require perl-5.002.
+ * src/wheel-gen.pl: Use the same global destructor as dcgen.
+
+2005-03-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/dcgen: Squeeze multiple blanks into one. Output a simple
+ array of adjacent strings rather than a more complicated data
+ structure; this saves space in the dircolors executable.
+ * src/dircolors.c (parse_line): Use char *, not unsigned char *.
+ This avoids casts.
+ (dc_parse_stream, main): Avoid casts.
+ Adjust to simpler data structure generated by new dcgen.
+
+2005-03-25 Eric Blake <ebb9@byu.net> (tiny change)
+
+ * src/ls.c (usage): Document usage of LS_COLORS.
+
+2005-03-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/dircolors.hin: Add "TERM cygwin".
+
+2005-03-25 Jim Meyering <jim@meyering.net>
+
+ * src/system.h (DECIMAL_DIGIT_ACCUMULATE): Reverse the sense of
+ the return value, and update callers:
+ * src/cut.c (set_fields): Update use of DECIMAL_DIGIT_ACCUMULATE.
+ * src/expand.c (parse_tab_stops, main): Likewise.
+ * src/split.c (main): Likewise.
+ * src/unexpand.c (parse_tab_stops, main): Likewise.
+ * src/uniq.c (main): Likewise.
+
+2005-03-22 Jim Meyering <jim@meyering.net>
+
+ * build-aux: New directory. Renamed from config.
+ * configure.ac: Reflect renaming: config -> build-aux.
+ * Makefile.am (dist-hook): Likewise.
+ * Makefile.maint: Likewise.
+ * Makefile.cfg (cvs_files): Likewise.
+ * .x-sc_sun_os_names: Likewise.
+ * .x-sc_trailing_blank: Likewise.
+
+ * src/ls.c (get_funky_string): Use '\a', rather than 7, for
+ portability to EBCDIC hosts.
+
+2005-03-20 Jim Meyering <jim@meyering.net>
+
+ * src/pr.c (init_header): Add missing `%' in new format string.
+ (init_header): Use zero-filled `.%09d' format, not space-filled `.%9d'.
+
+2005-03-19 Jim Meyering <jim@meyering.net>
+
+ * src/Makefile.am (pr_LDADD): Now that pr uses gettime, add
+ $(LIB_CLOCK_GETTIME) to get the required -lrt on newer Linux systems.
+
+2005-03-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: pr -D "FORMAT" now accepts the same formats that
+ date +"FORMAT" does.
+ * src/pr.c: Include strftime.h, timespec.h.
+ (init_header): Obtain and format nanosecond part of time stamp.
+
+ * NEWS: nohup now ignores the umask when creating nohup.out.
+ nohup now closes stderr if it is a terminal and stdout is closed.
+ * src/nohup.c (main): Likewise. Be a little more paranoid about
+ return values; e.g., check for any negative return from open.
+ Assume free (NULL) works.
+ Close file descriptor leak when redirecting standard output to a file.
+
+2005-03-17 Jim Meyering <jim@meyering.net>
+
+ * src/cut.c (set_fields): Use DECIMAL_DIGIT_ACCUMULATE macro,
+ in place of functionally-equivalent code.
+ * src/expand.c (parse_tab_stops, main): Likewise.
+ * src/split.c (main): Likewise.
+ * src/unexpand.c (parse_tab_stops, main): Likewise.
+ * src/uniq.c (main): Likewise.
+ * src/od.c: Use VERIFY macro in place of an equivalent open-coded
+ declaration.
+ * src/system.h (VERIFY, VERIFY_EXPR, DECIMAL_DIGIT_ACCUMULATE):
+ New macros.
+
+ Before, this command would make uniq skip 11 fields and print
+ only the first line:
+ $ _POSIX2_VERSION=1 ./uniq -f1 -1 <(seq --format='1 %g' 2)
+ 1 1
+ 1 2
+ * src/uniq.c (main): Interpret `uniq -f1 -1' like `uniq -f1',
+ not like `uniq -f11'.
+
+2005-03-15 Jim Meyering <jim@meyering.net>
+
+ Both `pr -0' and e.g., `pr -03' would evoke `column count too large'.
+ `pr -0' should give a better diagnostic and `pr -03' should be
+ equivalent to `pr -3'.
+ * src/pr.c (parse_column_count): Change return type to void.
+ Call error (EXIT_FAILURE, ... for an invalid string.
+ (main): Allocate space for column_count_string using malloc.
+ Accumulate all old-style column-count digits before converting.
+ When the number of columns is specified via both old-style,
+ (e.g., -3), and a long option (--columns=5), ensure that only
+ the last one specified takes effect.
+ * tests/pr/Test.pm: Add tests for the above.
+
+2005-03-15 Corinna Vinschen <corinna@vinschen.de> (tiny change)
+
+ * src/copy.c (copy_reg): Copy regular files in binary mode.
+
+2005-03-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Restate why ls limits time stamp lengths.
+
+2005-03-12 Jim Meyering <jim@meyering.net>
+
+ Add a little infrastructure to help prevent future bugs like the
+ one fixed below.
+ * src/stat.c (xstrcat): New function.
+ (print_statfs, print_stat): Add buf_len parameter and convert all
+ uses of strcat to xstrcat. Update callers.
+ (print_it): Call print_func with buf_len parameter.
+
+ Invoking stat -c FMT with a lone format directive of %s, %f, %h, %s,
+ could cause a buffer overrun error.
+ * src/stat.c (print_it): Allocate 2 more bytes, to accommodate our
+ conversion of the stat %s format string to the longer printf %llu one.
+ Patch from Guochun Shi.
+
+2005-03-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/ls.c (TIME_STAMP_LEN_MAXIMUM): New constant.
+ (long_time_expected_width, print_long_format): Use it, to avoid
+ some possible denial-of-service attacks.
+ * NEWS: Document this.
+
+2005-03-11 Jim Meyering <jim@meyering.net>
+
+ Prompt once again for `mv -i A B' when A and B are hard links
+ to the same file. This fixes a bug introduced by my 2003-04-04
+ (coreutils-5.0.1) change. Reported by Thomas Wolff via Eric Blake.
+ * src/copy.c (abandon_move): New function, factored out of
+ copy_internal, now that this code is being used from two places.
+ (copy_internal): Perform the same interactive-related test for
+ whether it's alright to proceed and (usually) overwrite the
+ destination file.
+ * tests/mv/i-4: Add tests for the above.
+
+ Don't segfault for a very long date format string, e.g.,
+ ls -ld --time-style=+%99999999H .
+ * src/ls.c (long_time_expected_width): Use x2nrealloc, not alloca,
+ so format string abuse cannot provoke stack overflow.
+ (print_long_format): Likewise.
+
+ Don't segfault for a long header date string, e.g.,
+ echo a|pr -D +%9999999A
+ * src/pr.c (init_header): Use x2nrealloc, rather than alloca.
+ Don't bother with fixed-sized initial buffer; always use x*alloc.
+
+ * src/pr.c (init_header): Use slightly clearer INT_BUFSIZE_BOUND
+ in place of equivalent INT_STRLEN_BOUND + 1.
+ * src/expr.c (tostring, printv): Likewise.
+
+2005-03-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/system.h: Include intprops.h.
+ (TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM, INT_STRLEN_BOUND): Remove;
+ they are now defined in intprops.h.
+
+2005-03-09 Jim Meyering <jim@meyering.net>
+
+ * TODO: Remove entry about named pipes. It was fixed in 5.3.0.
+
+2005-03-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/date.c (usage): Redo to match recent documentation changes.
+ Don't bother documenting which usages are GNU extensions; the list
+ wasn't correct, and is better left to the printed manual anyway.
+
+2005-03-06 Jim Meyering <jim@meyering.net>
+
+ Factor out column-count processing.
+ * src/pr.c: Include "inttostr.h".
+ (parse_column_count): New function.
+ (main): Use the new function for both old-style, -9, and long,
+ --columns=-9, options.
+
+ * src/cksum.c: Remove `register' keyword.
+ * src/cut.c: Likewise.
+ * src/dd.c: Likewise.
+ * src/env.c: Likewise.
+ * src/factor.c: Likewise.
+ * src/fmt.c: Likewise.
+ * src/fold.c: Likewise.
+ * src/id.c: Likewise.
+ * src/logname.c: Likewise.
+ * src/ls.c: Likewise.
+ * src/pr.c: Likewise.
+ * src/printf.c: Likewise.
+ * src/shred.c: Likewise.
+ * src/sort.c: Likewise.
+ * src/sum.c: Likewise.
+ * src/test.c: Likewise.
+ * src/tsort.c: Likewise.
+ * src/uniq.c: Likewise.
+ * src/wc.c: Likewise.
+ * src/whoami.c: Likewise.
+
+2005-03-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/Makefile.am (nanosec_libs): Remove $(LIB_XANOSLEEP); no
+ longer needed.
+
+2005-03-01 Jim Meyering <jim@meyering.net>
+
+ * src/copy.c (copy_internal): Change test of source type from
+ !S_ISREG to S_ISLNK. Reported by Paul Eggert in
+ http://lists.gnu.org/archive/html/bug-coreutils/2004-10/msg00050.html.
+
+2005-02-28 Jim Meyering <jim@meyering.net>
+
+ * NEWS: Mention that xnanosleep fixes sleep failure on linux-2.6.8.1.
+
+2005-02-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/Makefile.am (dd_LDADD, shred_LDADD): Add $(LIB_GETHRXTIME).
+ (nanosec_libs): Add $(LIB_XNANOSLEEP). Needed for newer GNU/Linux
+ hosts with clock_gettime.
+
+2005-02-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Describe user-visible change to dd.
+ * src/Makefile.am (dd_LDADD, shred_LDADD, nanosec_libs):
+ Remove $(LIB_CLOCK_GETTIME). These functions now use
+ gethrxtime instead.
+ * src/dd.c: Include gethrxtime.h, xtime.h.
+ (start_time): Now of type xtime_t, not struct timespec.
+ (print_stats, main): Use gethrxtime rather than gettime.
+ * src/ls.c (time): Remove obsolete decl.
+ (get_current_time): gettimeofday always returns 0, so don't
+ check its result.
+ * src/shred.c: Include gethrxtime.h.
+ (isaac_seed): Use gethrxtime rather than a mishmash.
+ * src/touch.c (time): Remove obsolete decl.
+
+ * tests/misc/split-fail: Don't assume that the current host
+ supports integers wider than 32 bits. Fix comment typo.
+ * tests/od/x8: Likewise.
+
+ * src/chown-core.c (enum RCH_status): Remove trailing comma,
+ as it's not valid in standard C89.
+
+2005-02-15 Jim Meyering <jim@meyering.net>
+
+ * src/stat.c (human_fstype): Add case/definition for S_MAGIC_XFS
+ so that file systems of type `xfs' are recognized as such.
+ * src/fs.h: Regenerate.
+ Reported by Bernd Eckenfels.
+ * src/stat.c (human_fstype): Likewise for S_MAGIC_JFS/jfs.
+ * src/fs.h: Regenerate.
+ Reported by Andreas Schwab.
+
+ * src/nice.c (NZERO) [NZERO == 0]: Undefine and define to 20,
+ to work around the invalid definition from Darwin 7.7.0.
+ Test failure reported by Sébastien Maret.
+
+2005-02-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/sort.c (mergefps): Use binary search rather than linear one
+ when comparing new line to lines already in main memory.
+ Idea suggested by James Lemley.
+
+2005-02-09 Jim Meyering <jim@meyering.net>
+
+ * src/copy.c (valid_options): Add an assertion that
+ not both hard_link and symbolic_link are set.
+
+2005-02-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Document stat -f -c %S, plus changes to default formats.
+ * doc/coreutils.texi (stat invocation): Normalize terminology,
+ capitalization, and sort order to match --help output. Mention %c
+ for file systems. Add new -f -c format %S, and document %s versus %S;
+ problem reported by Jeroen van Wolffelaar.
+ * src/stat.c (usage): Likewise.
+ (STATFS_FRSIZE): New macro.
+ (print_statfs): Use it, for stat -f -c %S.
+ (do_statfs): Change default formats to output %S.
+
+2005-02-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/system.h: Include "memrchr.h".
+ (memrchr) [!HAVE_DECL_MEMRCHR]: Remove decl.
+
+2005-02-02 Jim Meyering <jim@meyering.net>
+
+ * tests/du/8gb: Also adjust the test (s/64/128/) to detect
+ systems that don't support sparse files.
+ Check for $2 -ge 128, rather than $2 = 128, in case
+ there is a file system type that doesn't support sparse files,
+ yet for which metadata takes up additional space.
+ Both reported by Andreas Schwab.
+
+2005-02-01 Eric Blake <ebb9@byu.net> (tiny change)
+
+ * tests/du/8gb: Create a larger test file, so we properly
+ detect that sparse files can be created on NTFS under cygwin.
+
+2005-01-30 Jim Meyering <jim@meyering.net>
+
+ * src/head.c (elide_tail_bytes_pipe): Correct wording in diagnostic.
+
+ * src/stty.c: Remove unnecessary parentheses in all #if directives.
+
+2005-01-29 Eric Blake <ebb9@byu.net> (tiny change)
+
+ * .cvsignore: Ignore config.cache and config.status.lineno.
+ * src/stty.c [VSWTCH]: Some systems, like Cygwin, use VSWTC
+ instead of VSWTCH, for use with CSWTCH.
+
+2005-01-29 Eric Blake <ebb9@byu.net> (tiny change)
+
+ * tests/Makefile.am (.PHONY): Add check-root and root-hint.
+ * tests/rwx-to-mode: Ignore ACL designation.
+ * tests/setgid-check: Likewise.
+ * tests/chown/separator: Quote user and group names.
+
+2005-01-24 Jim Meyering <jim@meyering.net>
+
+ * src/cp.c (usage): Merge the descriptions of --no-dereference and -P.
+ Suggestion from Johan Boule.
+
+2005-01-17 Eric Blake <ebb9@byu.net> (tiny change)
+
+ * src/Makefile.am (all_programs.list): Strip $(EXEEXT) and remove
+ duplicates.
+ * man/Makefile.am (all_programs): Revert previous patch; updated
+ all_programs.list fixes this.
+ (.x.1): No need to add $(EXEEXT).
+
+2005-01-03 Corinna Vinschen <corinna@vinschen.de> (tiny change)
+
+ * src/system.h: Use S_BLKSIZE value for ST_NBLOCKSIZE where
+ available.
+
+2005-01-22 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (v_etc_file): The version string has moved to
+ version-etc-fsf.c, search that new file, not version-etc.c.
+
+2005-01-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/group-names: Use numeric group ids, not symbolic group names,
+ since the latter can have shell metacharacters in them (e.g., spaces).
+ Problem reported by Eric Blake.
+ * tests/chgrp/basic: Assume groups are numeric, not symbolic.
+ * tests/chgrp/deref: Likewise.
+ * tests/chgrp/posix-H: Likewise.
+ * tests/chgrp/recurse: Likewise.
+
+2005-01-15 Jim Meyering <jim@meyering.net>
+
+ * src/shred.c (isaac_seed) [HAVE_GETHRTIME]: #if-0 this block,
+ because just calling gethrtime evokes an `illegal instruction'
+ failure when compiled with Sun's c89 on Solaris 8 and 9.
+ Reported by Nelson Beebe.
+
+ * src/shred.c (isaac_seed) [HAVE_GETHRTIME]: Don't call ISAAC_SEED
+ twice with the same value of `t'.
+ Replace nested #if-#else blocks with #if-#elif-#elif chain.
+
+2005-01-14 Jim Meyering <jim@meyering.net>
+
+ The test, tests/tail/f-1, failed on powerpc-apple-darwin7.7.0.
+ * src/tail.c (IS_TAILABLE_FILE_TYPE): Adjust definition also to include
+ sockets, since that's what you get when reading from a command-line-
+ supplied pipe on Darwin 7.7.
+ (IS_PIPE_LIKE_FILE_TYPE): Define.
+ (main): Use new IS_PIPE_LIKE_FILE_TYPE rather than simply S_ISFIFO.
+ Reported by Nelson Beebe.
+ This same change is also required on NetBSD/sparc-1.5.
+ Reported by Adrian Bunk.
+
+ * src/expr.c (toarith): Rewrite to detect/diagnose integer overflow,
+ rather than suffering silently.
+ Before, expr would silently overflow and wrap around:
+ $ expr 9223372036854775808 = 0 # $(echo 2^63|bc)
+ 1
+ Now it detects the problem and exits nonzero:
+ $ ./expr $(echo 2^63|bc) = 0
+ ./expr: 9223372036854775808: integer is too large
+
+ * tests/chown/separator (id_gn): Exit 77, not 1, for a test-framework
+ failure, so that doesn't cause `make check' to stop. Nelson Beebe
+ reported that this test would fail with the diagnostic,
+ `cannot find name for group ID 10', on one of his systems.
+
+2005-01-13 Jim Meyering <jim@meyering.net>
+
+ * src/test.c (is_int): Don't overflow when evaluating integer
+ constants. Before, ./test $(echo 2^64|bc) -eq 0 && echo FAIL
+ would print `FAIL'.
+
+ * tests/Fetish.pm (run_tests): Add code (if-0'd out) to detect
+ names of temporary files that would clash on 8.3 file systems.
+ * tests/mk-script (validate): Likewise.
+
+2005-01-12 Jim Meyering <jim@meyering.net>
+
+ * tests/dd/skip-seek: Shorten test names to accommodate 8.3 systems.
+
+ * tests/tr/Test.pm (repeat-xC): Change test name from
+ `repeat-Compl', to avoid 8.3 conflict with `repeat-compl'.
+ Reported by Eric Blake.
+ (repeat-000): Rename to `repeat-zeros' for the same reason.
+
+2005-01-11 Jim Meyering <jim@meyering.net>
+
+ * configure.ac: Update version to 5.3.1.
+
+2005-01-11 Eric Blake <ebb9@byu.net>
+
+ * src/Makefile.am (check-README, check-AUTHORS): Account for $(EXEEXT).
+ * man/Makefile.am (all_programs): Account for $(EXEEXT).
+
+2005-01-11 Jim Meyering <jim@meyering.net>
+
+ * src/unexpand.c (add_tab_stop): Properly diagnose a tabstop list
+ with decreasing values.
+
+ * src/expand.c (main): Likewise.
+ * src/unexpand.c (main): Check for overflow in tabstop values
+ specified via the obsolete form. E.g., now this command fails:
+ _POSIX2_VERSION=1 ./unexpand -$(echo '2^64+1'|bc)
+ Before it would act like `_POSIX2_VERSION=1 ./unexpand -1'.
+ * tests/unexpand/basic-1 (obs-ovflo): New test for this.
+
+2005-01-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ Respond to POSIX interpretations about pathchk -p dated 2005-01-06.
+ * NEWS: Document the changes.
+ * doc/coreutils.texi (pathchk invocation): Likewise.
+ * src/pathchk.c (PORTABILITY_OPTION): New constant.
+ (longopts, usage, main, validate_file_name):
+ Add support for new -P option.
+ Reject empty file names (unless -p is not specified and the
+ current system allows empty file names).
+ Change --portability so that is now equivalent to -p -P.
+ Don't test whether file name is too long, if it is known to exist.
+ (no_leading_hyphen): New function.
+ * tests/misc/pathchk1: Add tests for empty file names and
+ pathchk -P.
+
+2005-01-08 Jim Meyering <jim@meyering.net>
+
+ * Version 5.3.0.
+
+ `pr --columns=N' was not equivalent to `pr -N' when also using
+ either -s or -w.
+
+ * src/pr.c (main): Set `explicit_columns' for --columns=N,
+ not just for -N. This bug has existed since the introduction
+ of the --columns=N option on 1998-08-15.
+ * NEWS: Document this.
+ * tests/pr/Test.pm (test_vector): For each -N test, automatically
+ create a new test vector using --columns=N.
+
+2005-01-07 Paul Eggert <eggert@twinsun.com>
+
+ * src/pr.c (main): Check for column count overflow with
+ usages like "pr -2147483648".
+
+2005-01-07 Jim Meyering <jim@meyering.net>
+
+ * src/pr.c (init_fps): Use xnmalloc, rather than xmalloc.
+
+2005-01-06 Jim Meyering <jim@meyering.net>
+
+ * README: List the precise HP-UX version numbers that are affected.
+ Suggestion from Bob Proulx.
+
+ * Makefile.maint (sc_changelog): Specify find's `-maxdepth 2'
+ predicate before `-name ChangeLog' to avoid a harmless warning
+ from find-4.2.10.
+
+2005-01-05 Jim Meyering <jim@meyering.net>
+
+ * tests/help-version: Punt on the uptime test, since it fails when
+ it can't get boot time, and I don't want that to stop `make check'.
+
+ * src/du.c (process_file): Evaluate exclusion rules against
+ the entire file name, not just the last component.
+ Reported by Robert Lindgren.
+ * tests/du/exclude: Test for this.
+ * NEWS: Document this.
+
+ Ensure that tests/Makefile.am's check-root actions stay up to date.
+ * Makefile.maint (sc_root_tests): New rule.
+ (syntax-check-rules): Add it to the list.
+
+2005-01-04 Jim Meyering <jim@meyering.net>
+
+ * man/shred.x: Change one-line summary to reflect that shred does
+ not remove files by default. Suggestion from Helen Faulkner in
+ http://bugs.debian.org/288552
+
+ * README: Request VERBOSE=yes output when reporting test failures.
+ Other minor changes.
+
+ * tests/Makefile.am (check-root): Update.
+
+2005-01-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/system.h: Undo previous change; we now use Autoconf.
+
+2005-01-03 Jim Meyering <jim@meyering.net>
+
+ * tests/stty/row-col-1: Don't set rows or columns to zero, to avoid
+ a bug in the TIOCGWINSZ ioctl on at least Solaris5.9 systems. Setting
+ either (or both) to zero would succeed, but subsequent `stty size'
+ would say `no size information for this device' due to the ioctl
+ failing with EINVAL.
+
+ * src/system.h: If PRIdMAX, PRIoMAX, PRIuMAX, and PRIxMAX are
+ not all defined and either ULONG_MAX or ULLONG_MAX is not defined,
+ then fail at compile-time rather than let tools like od produce
+ invalid results at run time.
+
+2004-12-21 Jim Meyering <jim@meyering.net>
+
+ * src/csplit.c (usage): Say the default names are `xx00, xx01, ...',
+ not `xx01, xx02, ...'.
+ Reported by Matt Kraai in http://bugs.debian.org/286605
+
+ * tests/misc/split-fail: Avoid spurious failure on x86 Solaris5.9
+ when using c89.
+
+2004-12-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/split.c (usage): Mention default size. Suggested by Dan Jacobson.
+
+2004-12-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Mention that one should eval "`dircolors`" rather than
+ `dircolors`.
+
+2004-12-17 Jim Meyering <jim@meyering.net>
+
+ * tests/mv/hard-link-1: Rearrange to use newer trap-handling code,
+ so temporary directories aren't left behind upon e.g., interrupt.
+
+2004-12-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/ls.c (print_dir): Use "%s: not listing already-listed
+ directory", not "not listing already-listed directory: %s", to
+ format already-listed directories, to be consistent with other
+ diagnostics involving file names and colons.
+
+2004-12-15 Jim Meyering <jim@meyering.net>
+
+ * src/Makefile.am (__LDADD): Define, so that building `[' on
+ Solaris still uses the -lgen library that it requires in order
+ to get a definition of eaccess.
+
+2004-12-14 Jim Meyering <jim@meyering.net>
+
+ tac would exit immediately upon I/O or temp-file creation failure.
+ Now it continues on, processing any remaining command line arguments.
+
+ * src/tac.c: Include quotearg.h.
+ Use quotearg_colon in most diagnostics.
+ (copy_to_temp): Rewrite not to exit upon I/O or temp-file-creation
+ failure. Before, this command (with /full/tmp being a full partition)
+ TMPDIR=/full/tmp ./tac /proc/modules tac.c
+ would exit immediately upon the write error while trying to copy
+ non-seekable /proc/modules to the full partition. Now it still
+ reports the failure but continues on with the remaining file.
+ (tac_nonseekable): Return false also if copy_to_temp fails.
+ [DONT_UNLINK_WHILE_OPEN]: Add a FIXME comment explaining that
+ using atexit like this is wrong.
+ * NEWS: Document this.
+ * tests/misc/tac-continue: New test for this.
+ * tests/misc/Makefile.am (TESTS): Add tac-continue.
+
+ * tests/chown/basic: Add a few more tests.
+
+2004-12-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/ls.c (gobble_file): Change arg name to be command_line_arg
+ rather than explicit_arg, for consistency with copy.c.
+ (extract_dirs_from_files): Remove ignore_dot_and_dot_dot arg, since
+ it is deducible from dirname arg. All callers changed.
+ (extract_dirs_from_files, print_dir, queue_directory):
+ Add command_line_arg arg. All callers changed.
+ (struct pending): Add command_line_arg member.
+ (main): Use NULL rather than 0 when appropriate.
+ (set_exit_status, file_failure): New functions.
+ (queue_directory): Store command_line_arg into new structure.
+ (print_dir, gobble_file, get_link_name):
+ Use file_failure to report problems in accessing files,
+ so that the exit status is set consistently.
+ (print_dir): Simplify readdir failure code yet again.
+ If closedir fails, report "closing directory" rather than "reading
+ directory" failure.
+ (xstrcoll): Use set_exit_status to set status on failure.
+ * tests/ls-2/tests (no-a-isdir-b): This now exits with status 2,
+ not status 1.
+
+2004-12-11 Jim Meyering <jim@meyering.net>
+
+ Avoid a race condition vulnerability in chown, when used with
+ --from=O:G and without the (-h) --no-dereference option.
+ * src/chown-core.c (restricted_chown): New function.
+ (change_file_owner): Call it.
+ Reported by Ulrich Drepper.
+ * NEWS: Mention this.
+
+2004-12-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * ls now exits with status 1 on minor problems, 2 if serious trouble.
+ * NEWS: Document this.
+ * src/ls.c (LS_MINOR_PROBLEM, LS_FAILURE): New constants.
+ All uses of EXIT_FAILURE replaced with LS_FAILURE, unless
+ specified below.
+ (main): Initialize exit failure to LS_FAILURE.
+ (print_dir, gobble_file, get_link_name, xstrcoll):
+ Set exit status to LS_MINOR_PROBLEM if the failure is minor.
+ (print_dir): Do not give up on entire directory merely because readdir
+ returns EOVERFLOW.
+ (usage): Explain exit status.
+ * tests/help-version: ls and variants now exit with status 2
+ on serious trouble.
+
+2004-12-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Document new UTC+HH:MM date syntax, and put date changes
+ together.
+
+2004-12-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/factor.c (factor): Don't list 1 as a factor of 1.
+ Problem reported by Thomas Folz-Donahue.
+
+2004-12-06 Jim Meyering <jim@meyering.net>
+
+ * tests/du/files0-from: Sanitize environment.
+ Otherwise, e.g., BLOCKSIZE=k would cause a failure, and that
+ setting is the default (exported from /etc/profile) on at least one
+ NetBSD 1.6 system.
+ * tests/du/no-deref: Likewise.
+ * tests/cp/symlink-slash: Likewise.
+ * tests/ls/symlink-slash: Likewise
+
+2004-12-05 Jim Meyering <jim@meyering.net>
+
+ * tests/tail/Test.pm (err-6) ["tail -c"]: Avoid test failure when
+ _POSIX2_VERSION=199209 is in the environment, or when building on
+ e.g., OpenBSD 3.2.
+
+2004-12-04 Jim Meyering <jim@meyering.net>
+
+ * NEWS: Mention cut's new --complement option.
+
+2004-10-01 Paolo Bonzini <bonzini@gnu.org>
+
+ * cut.c (complement, COMPLEMENT_OPTION): New.
+ (longopts): Add --complement.
+ (usage): Say not that -b, -c, and -f `print' fields,
+ but rather that they `select' fields for printing.
+ Describe the new --complement option.
+ (mark_range_start): Extracted from set_fields.
+ (print_kth): Support --complement.
+ (compare_ranges): New function.
+ (set_fields): Rewrite the part that populates range_start_ht,
+ merging it with the part that populates printable_field.
+ (main): Handle --complement.
+
+2004-12-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/tail.c (tail_file): Set errnum to -1 if the initial "tail"
+ failed. This works around an assertion failure reported by
+ Roberto Nibali in:
+ http://lists.gnu.org/archive/html/bug-coreutils/2004-12/msg00012.html
+
+2004-12-02 Jim Meyering <jim@meyering.net>
+
+ With using --color and with LS_COLORS saying not to color
+ executables, don't stat every file.
+ * src/ls.c (is_colored): New function.
+ (gobble_file): Use it.
+ (main): Use it here, in place of too-strict tests against NULL:
+ if either ORPHAN or MISSING was set to 0 from LS_COLORS, the
+ old test would fail.
+
+2004-12-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/comm.c (compare_files): Assume setlocale exists.
+ * src/join.c (keycmp): Likewise.
+ * src/seq.c (decimal_point): Treat like sort. Now char.
+ All uses changed.
+ (main): Assume localeconv exists. Use same code as sort.
+ * src/sort.c (C_DECIMAL_POINT): Remove. Use changed to '.'.
+ Assume setlocale exists.
+ (thousands_sep): Renamed from th_sep.
+ (IS_THOUSANDS_SEP): Remove. All uses replaced by comparisons.
+ (NONZERO): Parenthesize use of arg.
+ (numcompare): Avoid duplicate loads. Use ISDIGIT as boolean, for
+ consistency. Avoid unnecessary negation by reversing
+ fraccompare args.
+ (main): Rewrite localeconv call to match seq.c.
+ * src/system.h: Assume locale.h exists.
+ (HAVE_SETLOCALE): Remove.
+ * src/uniq.c (different): Assume setlocale exists.
+
+ * src/ls.c (sort_files): Minor cleanup. Remove an unnecessary
+ 'volatile' on a local variable. Rewrite to avoid unnecessary
+ double-assignment to 'func' in the usual case where strcoll does
+ not fail.
+
+2004-11-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/pinky.c (gethostname): Remove decl.
+ (scan_entries): Use IS_USER_PROCESS instead of by-hand code.
+ * src/uptime.c (print_uptime): Use IS_USER_PROCESS and
+ UT_TYPE_BOOT_TIME instead of by-hand code.
+ * src/users.c (list_entries_users): Use IS_USER_PROCESS
+ instead of by-hand code.
+ * src/who.c (USER_PROCESS, RUN_LVL, INIT_PROCESS, LOGIN_PROCESS,
+ DEAD_PROCESS, BOOT_TIME, NEW_TIME, UT_TYPE_UNDEF, UT_TYPE): Remove.
+ (IS_USER_PROCESS): Move to ../lib/readutmp.h.
+ (UT_TYPE_RUN_LVL, UT_TYPE_INIT_PROCESS, UT_TYPE_LOGIN_PROCESS,
+ UT_TYPE_DEAD_PROCESS, UT_TYPE_NEW_TIME): New macros.
+ (gethostname): Remove decl.
+ (list_entries_who, scan_entries): Use the new macros defined above,
+ for consistency with pinky, uptime, and users.
+
+2004-11-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix problem reported by Scott S. Tinsley for HP-UX 11.11 using
+ HP's ANSI C compiler. Declaring int functions causes warnings on
+ some modern systems and shouldn't be needed to compile on ancient
+ ones.
+ * src/copy.h (stat, lstat, rename): Remove decls.
+ * src/install.c (stat): Remove decl.
+ * src/ln.c (link, symlink): Remove decls.
+
+2004-11-25 Jim Meyering <jim@meyering.net>
+
+ * man/help2man: Import help2man-1.35.1.
+ * man/Makefile.am (.x.1): Remove now-unnecessary use of
+ locally-added --program-name=NAME option. Now, help2man gets
+ the name from the [NAME] section (i.e. from our .x file).
+ * man/install.x: Use `install', not `ginstall' in the one-line
+ description. Reported by Brendan O'Dea.
+ * man/sha1sum.x: Use `sha1sum', not `shasum'.
+
+2004-11-24 Jim Meyering <jim@meyering.net>
+
+ Since the changes of 2004-05-22, the u.saved_cwd member at
+ the bottom of the active-directory stack was no longer
+ strictly necessary. This change removes that member and uses
+ the newer cwd_state parameter for the final restore_cwd.
+
+ * src/remove.c (struct AD_ent) [u]: Remove now-unnecessary union.
+ [dev_ino]: Rename from `a'.
+ (AD_pop_and_chdir): Add a parameter to play the role of just-removed
+ bottom-of-stack cwd-state member.
+ (AD_pop_and_chdir): No longer return boolean. Adjust caller.
+ (AD_push_initial): Remove CWD parameter. Adjust caller.
+
+2004-11-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ Minor performance improvements and cleanups for "touch".
+ * src/touch.c (posix_date): Remove; not needed as a static var.
+ All uses rewritten.
+ (touch): Use new futimens function to operate more efficiently
+ in some cases. Don't stat/fstat existing file when
+ (!amtime_now && change_times == (CH_ATIME | CH_MTIME)); the
+ old time stamps aren't needed in that case.
+ (main): change_times is int, not bool. Simplify test for
+ change_times.
+
+2004-11-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/install.c (usage): Avoid usage that runs afoul of Docbook
+ translation. Problem reported by Eric S. Raymond.
+
+ Restore dd's noctty flag, reverting the change of 2004-04-08.
+ POSIX does not allow "dd" to use O_NOCTTY by default.
+ * NEWS: Add noctty flag to dd.
+ * doc/coreutils.texi (dd invocation): Likewise.
+ * src/dd.c (flags, usage, main): Likewise.
+
+2004-11-19 Alfred M. Szmidt <ams@gnu.org>
+
+ * src/ls.c (usage): Clarified description of --no-group (-G),
+ --human-readable (-h), --inode (-i), --size (-s), --time,
+ and --time-style.
+
+2004-11-19 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c (usage): Clarify description of --author.
+ Tweak indentation so that help2man creates better nroff.
+ Reported by Dan Jacobson.
+
+ * src/uniq.c (check_file): Don't check stdout for errors here.
+
+ * src/pwd.c (find_dir_entry): Update comment to match reality.
+
+2004-11-18 Jim Meyering <jim@meyering.net>
+
+ * src/pwd.c (robust_getcwd): Correct the comment: this function
+ constructs the directory name. The caller prints it.
+
+2004-11-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/stat.c (STATFS): New macro, for portability to Solaris 9.
+ (do_statfs): Use it.
+
+ * src/basename.c, src/chroot.c, src/cksum.c, src/dd.c, src/dirname.c,
+ src/factor.c, src/hostid.c, src/hostname.c, src/link.c, src/logname.c,
+ src/nohup.c, src/printenv.c, src/pwd.c, src/setuidgid.c, src/sleep.c,
+ src/sync.c, src/tsort.c, src/unlink.c, src/uptime.c, src/users.c,
+ src/whoami.c, src/yes.c (main): Use getopt_long rather than getopt.
+ * src/readlink.c (main): argv is not const.
+
+ * src/cut.c (usage): Improve documentation along the lines suggested
+ by Debian 5.2.1-2.
+ * src/echo.c (usage): Likewise.
+ * src/expr.c (usage): Likewise.
+
+ * src/dircolors.hin: Add putty, screen-bce.
+
+ * src/pinky.c (print_entry): Fix memory leak.
+ * src/who.c (print_user): Likewise.
+
+2004-11-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: New dd operand "status=noxfer".
+ * src/dd.c (C_ASCII, C_EBCDIC, C_IBM, C_BLOCK, C_UNBLOCK,
+ C_LCASE, C_UCASE, C_SWAB, C_NOERROR, C_NOTRUNC, C_SYNC, C_TWOBUFS,
+ C_NOCREAT, C_EXCL, C_FDATASYNC, C_FSYNC): Now constants, not
+ macros.
+ (STATUS_NOXFER, statuses): New constants.
+ (usage, print_stats, scanargs): Add support for status=noxfer.
+ (usage): Update status output to match new behavior.
+ (print_stats): Always output complete byte count.
+ Put space between numbers and units, as SI requires.
+ Use ngettext so that i18n can use plurals for "byte" and "second".
+ Don't multiply by 1e-9 (inexact); divide by 1e9 (which is exact).
+ (iflag_error_msgid, oflag_error_msgid): Remove; replace uses by
+ the string.
+ * tests/dd/skip-seek (@Tests): Use status=noxfer to avoid
+ problems with regression testing.
+
+2004-11-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: dd now outputs total bytes, seconds, and bytes per second.
+ * src/Makefile.am (dd_LDADD): Add $(LIB_CLOCK_GETTIME).
+ * src/dd.c: Include "human.h".
+ (w_bytes, start_time): New vars.
+ (usage): Document new I/O statistics output
+ (print_stats): Output new I/O statistics.
+ (cleanup): Do statistics after closing stdin and stdout, so that
+ the times are more accurate.
+ (write_output, dd_copy): Count output bytes.
+ (main): Get initial value of clock.
+
+2004-11-14 Jim Meyering <jim@meyering.net>
+
+ Backslash-escape `-'s in email addresses, so that they are
+ rendered properly in UTF-locales.
+ * man/help2man (escape_hyphens): New function.
+ (main): Call it on email addresses.
+
+ * src/sort.c (zaptemp): Mark new diagnostic for translation.
+
+ * tests/misc/close-stdout: New file. Test today's closeout.c change.
+ * tests/misc/Makefile.am (TESTS): Add close-stdout.
+
+2004-11-13 Jim Meyering <jim@meyering.net>
+
+ * src/test.c (usage): Put the description of `[-n] STRING'
+ on two lines, one for `-n STRING' and one for `STRING' so that
+ help2man properly escapes the `-'. Otherwise, the hyphen is
+ rendered inappropriately in UTF-8 locales.
+ Reported by Uwe Zeisberger in http://bugs.debian.org/281069.
+
+2004-11-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Document the following changes.
+
+ * src/sort.c: Avoid O(N**2) behavior when there are many temporary
+ files.
+ (temptail): New variable, so that we can easily append to list.
+ (create_temp_file): Create new files at end of list, so that
+ searching the list has O(N*NMERGE) behavior instead of O(N**2).
+ (zaptemp): Update temptail if needed.
+ (mergefps, merge): Accept new arg that counts temp files, and keep it
+ up to date as we create and remove temporaries. This is for
+ efficiency, so that we don't call zaptemp so often.
+ All callers changed.
+ (sort): Don't create array in reverse order, since the list of
+ temporaries is now in the correct order.
+
+ (zaptemp): Protect against race condition: if 'sort' is
+ interrupted in the middle of zaptemp, it might unlink the
+ temporary file twice, and the second time this happens the file
+ might already have been created by some other process.
+
+ (zaptemp): Warn if a temporary file is not removed.
+
+ (create_temp_file): Use offsetof for clarity.
+ (die): Move it up earlier, to clean up the code a bit.
+
+ * src/pr.c (strtoumax): Declare if not declared.
+ (skip_to_page, first_page_number, last_page_number, page_number,
+ first_last_page, print_header):
+ Use uintmax_t for page numbers.
+ (first_last_page): Remove unnecessary forward declaration.
+ Do not modify arg (it is now a const pointer).
+ Return a true if successful, false (without print a diagnostic)
+ otherwise.
+ (main): If +XXX does not specify a valid page range, treat it
+ as a file name. This follows the response to Open Group XCU ERN 41
+ <http://www.opengroup.org/sophocles/show_mail.tpl?source=L&listname=austin-group-l&id=7717>,
+ which says the behavior is allowed.
+ (skip_to_page): When starting page number exceeds page count,
+ print both numbers in the diagnostic.
+ (print_header): Detect page number overflow.
+
+2004-11-07 Jim Meyering <jim@meyering.net>
+
+ * src/uname.c [__APPLE__]: Include <mach/machine.h> and <mach-o/arch.h>.
+ (main) [__APPLE__]: Get the processor type via syscall rather than
+ hard-coding "powerpc". From Toby Peterson.
+
+ * src/sort.c (merge): Remove declarations of now-unused variables.
+
+2004-11-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/sort.c (first_same_file): Remove. Move most of the code to....
+ (avoid_trashing_input): New function.
+ (merge): Avoid some silly merges, e.g., copying a single file to
+ a temporary file when there are exactly 17 input files to merge.
+ Take a count of temporary files rather than a max_merge arg.
+ All uses changed.
+
+2004-11-06 Jim Meyering <jim@meyering.net>
+
+ * src/sort.c (xfclose): Don't close stdout here (just flush it),
+ since close_stdout now closes stdout unconditionally.
+
+2004-11-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/sort.c (inittables, sort_buffer_size, getmonth, mergefps,
+ first_same_file, merge, sort, main): Use size_t for indexes to arrays.
+ This fixes some unlikely havoc-wreaking bugs (e.g., more than INT_MAX
+ temporary files).
+ (getmonth, keycompare, compare): Rewrite to avoid need for alloca,
+ thus avoiding unchecked stack overflow in some cases. As a side
+ effect this improve the performance of "sort -M" by a factor of 4
+ on my benchmarks.
+
+2004-11-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/stty.c: Include "vasprintf.h" since we use vasprintf now.
+
+ * src/Makefile.am (check-AUTHORS): Don't assume \? works in a sed
+ expression; it's not portable. Problem reported by Albert Chin.
+ Don't invoke a program more than once.
+ * src/groups.sh (version): New variable, containing author info,
+ for benefit of AUTHORS check. Use it when acting on --version option.
+ * AUTHORS: Remove duplicate lines. Remove bogus "chroot:"
+ in groups line.
+
+ * src/system.h: Don't #define and #undef getopt around <stdlib.h>,
+ as this breaks the new regime that does "#define getopt rpl_getopt".
+ Problem reported by Albert Chin for Solaris 9 with Sun cc in:
+ http://lists.gnu.org/archive/html/bug-gnulib/2004-11/msg00019.html
+ I suppose this may cause problems on ancient hosts with
+ incompatible getopt declarations, but we'll cross that bridge if
+ the problem gets reported to us by someone who can test the fix.
+
+2004-11-03 Jim Meyering <jim@meyering.net>
+
+ * src/tac.c: quote(...) file names in diagnostics.
+
+2004-10-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Document getdate changes.
+
+2004-10-29 Jim Meyering <jim@meyering.net>
+
+ * src/tac.c (tac_file): Remove temporary prototype and move this
+ function `down' so that it precedes definition of tac_nonseekable.
+
+ `tac /proc/modules' would print nothing
+ Reported by Harald Dunkel in http://bugs.debian.org/278604.
+
+ * src/tac.c (copy_to_temp): Renamed from save_stdin, since
+ now it copies a general file descriptor, not just stdin.
+ (tac_nonseekable): Renamed/adapted from tac_stdin.
+ (tac_file): Get fd via `open' directly rather than via fopen/fileno,
+ since we never used the stream. Perform "-" to stdin mapping here
+ rather than in main. Determine whether a file is seekable,
+ by trying to `lseek' to its end, and dispatch to tac_seekable or
+ tac_nonseekable accordingly.
+ (main): Rewrite argument handling now that it uses only tac_file.
+ * NEWS: Mention it here.
+
+2004-10-21 Jim Meyering <jim@meyering.net>
+
+ * tests/mv/leak-fd: New file.
+ * tests/mv/Makefile.am (TESTS): Add it.
+ * tests/rm/dot-rel: New file.
+ * tests/rm/Makefile.am (TESTS): Add it.
+
+ Correct my patch of 2004-10-18.
+ * src/remove.c (rm): Destroy the saved_cwd here (via cwd_state),
+ if necessary, not in remove_dir. Otherwise, removing multiple
+ `.'-relative nonempty directories no longer worked.
+
+2004-10-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/fmt.c (usage): Improve description of --prefix.
+ Problem reported by Edward Welbourne.
+
+ * man/uniq.x: Change summary so that it doesn't imply that
+ uniq writes to its input file. Problem reported by
+ Dan Jacobson.
+
+2004-10-18 Jim Meyering <jim@meyering.net>
+
+ Plug a leak that would cause a cross-device mv to fail when
+ operating on too many command-line-specified nonempty directories.
+ * src/remove.c (remove_dir): Destroy the `struct saved_cwd' on the
+ top of the stack before returning. This usually closes the file
+ descriptor that was used to return to the original working directory.
+ Reported by Cyril Bouthors in
+ http://article.gmane.org/gmane.comp.gnu.core-utils.bugs/3048
+ * NEWS: Mention it here.
+
+ * src/pathchk.c (validate_file_name): Give a more descriptive
+ diagnostic when pathconf fails. This also avoids an unwarranted
+ warning from gcc-3.3.5 about a format not being a string literal.
+
+ * src/sleep.c (main): Remove declaration of unused local, c.
+ * src/printenv.c (main): Likewise.
+ * src/logname.c (main): Likewise.
+ * src/uptime.c (main): Likewise, for optc.
+ * src/tsort.c (main): Likewise, for opt.
+
+2004-10-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * AUTHORS: Add self to pathchk.
+ * src/pathchk.c (AUTHORS): Add self.
+ Change "path" to "file name" whenever possible.
+ Remove usage comment, as it was a duplication of the code or doc.
+ Include <wchar.h> if available.
+ (mbrlen, mbstate_t) [! (HAVE_MBRLEN && HAVE_MBSTATE_T)]: Define.
+ (NEED_PATHCONF_WRAPPER, PATH_MAX, PATH_MAX_FOR, NAME_MAX,
+ pathconf_wrapper, portable_chars, dir_ok): Remove.
+ (NAME_MAX_MINIMUM, PATH_MAX_MINIMUM): New macros.
+ (pathconf, _PC_NAME_MAX, _PC_PATH_MAX): Define if nonexistent.
+ (portable_chars_only): New arg FILELEN.
+ Don't assume ASCII; we might be on an EBCDIC host.
+ Don't assume unibyte locale in diagnostic.
+ (component_start, component_len): New functions.
+ (validate_file_name): Renamed from validate_path. All uses changed.
+ Pretty much a complete rewrite.
+ Don't make copy of file arg. Always append trailing slash to
+ pathconf arg, just in case it's a symlink (this is pure paranoia;
+ we don't know of any hosts where the trailing slash is required).
+ Use size_t instead of long int when possible.
+ Avoid need to call pathconf in most practical cases.
+ Don't use euidaccess several times to test searchability;
+ just use lstat once. Reword diagnostic to put the (often very long)
+ file names last.
+
+2004-10-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/printf.c (usage): Mention Unicode, and use H for hex digits.
+
+2004-10-13 Jim Meyering <jim@meyering.net>
+
+ * NEWS: Mention today's fts.c fix.
+
+2004-10-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/stty/row-col-1: Set LC_ALL=C.
+
+2004-10-12 Jim Meyering <jim@meyering.net>
+
+ * src/dircolors.hin: Add .flac and .mpc as audio suffixes.
+ From Jesus Climent in http://bugs.debian.org/276149.
+
+2004-10-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/ls.c (ignore_mode): Renamed from ignore, to avoid shadowing
+ problems. All uses changed.
+
+2004-10-05 Jim Meyering <jim@meyering.net>
+
+ * .x-sc_trailing_blank: Add an exclusion for config/texinfo.tex,
+ since Karl says its trailing blanks are there to stay :-)
+
+2004-10-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/expr.c (NEW, OLD): Remove, partly to avoid
+ reference to obsolescent macro XMALLOC.
+ All uses replaced by xmalloc and free.
+
+2004-09-28 Jim Meyering <jim@meyering.net>
+
+ * src/tail.c (usage): Clarify: --retry works only with --follow=name.
+ Reported by Nik A. Melchior in http://bugs.debian.org/273781.
+
+2004-09-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/od.c (format_address_paren): c is optional, so don't output
+ it if it's '\0'.
+
+2004-09-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ Add support for ls --hide. Idea suggested by Bardur Arantsson.
+ * NEWS: Document this.
+ * src/ls.c (file_ignored): Renamed from file_interesting, with
+ inverted return value. Accept the file name, not a struct dirent *.
+ All uses changed. Avoid the expense of calling fnmatch if the
+ file is ignorable due to leading '.'.
+ (all_files, really_all_files): Removed; replaced by:
+ (ignore): New variable. All uses changed.
+ (IGNORE_DEFAULT, IGNORE_DOT_AND_DOTDOT, IGNORE_MINIMAL, HIDE_OPTION):
+ New constants.
+ (hide_patterns): New variable.
+ (long_options, decode_switches, file_ignored, usage):
+ Add support for --hide.
+ (patterns_match): New function.
+ (usage): Replace "hide" with "ignore" in explanation, to avoid
+ confusion.
+
+2004-09-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/ls.c (gobble_file, print_long_format): Don't assume that
+ human-readable output has a byte count equal to its column width;
+ this isn't always true in locales where the radix character is not
+ '.' or ','.
+ (format_user_or_group): Revamp code to match the above fix;
+ this avoids the (very faint) possibility of integer overflow.
+
+2004-09-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Mention that "chmod -r -w x" now works as expected.
+ * src/chmod.c (main): Revamp option processing to support this.
+ * tests/chmod/Makefile.am (TESTS): Add 'usage'.
+ * tests/chmod/usage: New set of tests for usage like that.
+
+2004-09-24 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (CVS_LIST): Use --types=AFGM option so that
+ it lists only cvs-controlled regular files.
+
+ * src/csplit.c (xalloc_die): Declare to be `extern', not `static'
+ to avoid a warning from gcc-3.4.1. Reported by Paul Eggert.
+
+2004-09-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.maint (CVS_LIST): New macro.
+ (sc_space_tab, sc_prohibit_atoi_atof, sc_file_system,
+ sc_prohibit_jm_in_m4, sc_system_h_headers, sc_sun_os_names,
+ sc_trailing_blank, po-check): Use it instead of the
+ nonstandard "cvsu --list".
+
+ * src/tail.c (parse_obsolete_option): Bring back support
+ for obsolete option followed by non-obsolete, or by more
+ than one file. When obsolete, conform to SUSv2 rather than
+ original POSIX 1003.2-1992, as SUSv2 corrected the case of
+ "tail -c". Add support for the SUSv2 "b" modifier.
+ * NEWS: Mention the above.
+ * tests/tail/Test.pm: New test case obs-b to check the above.
+ err-[134] no longer need _POSIX2_VERSION=199209.
+ Fix comments to match revised behavior.
+
+2004-09-22 Jim Meyering <jim@meyering.net>
+
+ * Use automake-1.9.2. Regenerate dependent files.
+
+ * src/remove.c (struct dirstack_state) [current_arg_jumpbuf]:
+ Improve the comment.
+
+ Clean up scoping etc. so that some make `distcheck' tests pass.
+ * src/csplit.c (xalloc_die): Declare to be static.
+ * src/chown-core.c (chown_files): Declare as `extern'.
+ * src/cp-hash.c (remember_created): Likewise.
+ * src/copy.c (copy): Likewise.
+ * src/checksum.h (enum) [ALG_MD5]: Define to be 1, not 0.
+
+ * src/id.c, src/nl.c, src/expand.c: Remove trailing blanks.
+ * src/unexpand.c: Likewise.
+
+ * src/Makefile.am (check-AUTHORS): New rule.
+ (check): Depend on it.
+ * AUTHORS: Update.
+
+ * Makefile.maint (syntax-check-rules): Remove duplicate sc_tight_scope.
+ (sc_system_h_headers): Also exclude copy.h; it includes <stdbool.h>.
+
+2004-09-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/ls.c (decode_switches): Don't compare a short value
+ to SIZE_MAX: GCC sometimes complains.
+
+2004-09-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: The following commands now reject unknown options:
+ basename dirname factor hostname link nohup sync unlink yes
+ Also, pathchk no longer accepts trailing options.
+
+ * src/basename.c: Include <getopt.h>.
+ * src/chroot.c: Likewise.
+ * src/dirname.c: Likewise.
+ * src/factor.c: Likewise.
+ * src/hostid.c: Likewise.
+ * src/hostname.c: Likewise.
+ * src/nohup.c: Likewise.
+ * src/pwd.c: Likewise.
+ * src/setuidgid.c: Likewise.
+ * src/sync.c: Likewise.
+
+ * src/basename.c (main): Reject unknown options.
+ * src/dirname.c (main): Likewise.
+ * src/factor.c (main): Likewise.
+ * src/hostid.c (main): Likewise.
+ * src/hostname.c (main): Likewise.
+ * src/link.c (main): Likewise.
+ * src/nohup.c (main): Likewise.
+ * src/pwd.c (main): Likewise.
+ * src/setuidgid.c (main): Likewise.
+ * src/sync.c (main): Likewise.
+ * src/unlink.c (main): Likewise.
+ * src/yes.c (main): Likewise.
+
+ * src/cat.c (main): Remove unused "case 0".
+ * src/chgrp.c (main): Likewise.
+ * src/chmod.c (main): Likewise.
+ * src/chown.c (main): Likewise.
+ * src/comm.c (main): Likewise.
+ * src/cp.c (main): Likewise.
+ * src/csplit.c (main): Likewise.
+ * src/cut.c (main): Likewise.
+ * src/date.c (main): Likewise.
+ * src/df.c (main): Likewise.
+ * src/du.c (main): Likewise.
+ * src/env.c (main): Likewise.
+ * src/expand.c (main): Likewise.
+ * src/fold.c (main): Likewise.
+ * src/head.c (main): Likewise.
+ * src/id.c (main): Likewise.
+ * src/install.c (main): Likewise.
+ * src/join.c (main): Likewise.
+ * src/ln.c (main): Likewise.
+ * src/ls.c (decode_switches): Likewise.
+ * src/mkdir.c (main): Likewise.
+ * src/mkfifo.c (main): Likewise.
+ * src/mknode.c (main): Likewise.
+ * src/mv.c (main): Likewise.
+ * src/nl.c (main): Likewise.
+ * src/paste.c (main): Likewise.
+ * src/pinky.c (main): Likewise.
+ * src/pr.c (main): Likewise.
+ * src/ptx.c (main): Likewise.
+ * src/readlink.c (main): Likewise.
+ * src/rm.c (main): Likewise.
+ * src/rmdir.c (main): Likewise.
+ * src/seq.c (main): Likewise.
+ * src/shred.c (main): Likewise.
+ * src/split.c (main): Likewise.
+ * src/sum.c (main): Likewise.
+ * src/tac.c (main): Likewise.
+ * src/tail.c (main): Likewise.
+ * src/tee.c (main): Likewise.
+ * src/touch.c (main): Likewise.
+ * src/tr.c (main): Likewise.
+ * src/tty.c (main): Likewise.
+ * src/uname.c (main): Likewise.
+ * src/unexpand.c (main): Likewise.
+ * src/wc.c (main): Likewise.
+ * src/who.c (main): Likewise.
+
+ * src/chroot.c (main): Use getopt where it suffices, not getopt_long.
+ * src/cksum.c (main): Likewise.
+ * src/dd.c (main): Likewise.
+ * src/logname.c (main): Likewise.
+ * src/printenv.c (main): Likewise.
+ * src/sleep.c (main): Likewise.
+ * src/tsort.c (main): Likewise.
+ * src/uptime.c (main): Likewise.
+ * src/users.c (main): Likewise.
+ * src/whoami.c (main): Likewise.
+
+ * src/du.c (long_options): Standardize on NULL vs 0.
+ * src/rm.c (long_opts): Likewise.
+
+ * src/logname.c (long_options): Remove.
+ * src/printenv.c (long_options): Likewise.
+ * src/sleep.c (long_options): Likewise.
+ * src/tsort.c (long_options): Likewise.
+ * src/uptime.c (longopts): Likewise.
+ * src/users.c (longopts): Likewise.
+ * src/whoami.c (long_options): Likewise.
+
+ * src/pathchk.c (longopts): Add --help, --version.
+ (main): Use longopts rather than parse_long_options.
+ * src/stty.c (longpts, main): Likewise.
+
+ * src/pathchk.c (main): Don't reorder arguments, so that
+ we can check weird file names.
+
+ * src/readlink.c: Don't include "long-options.h".
+ * src/sort.c: Likewise.
+ * src/stty.c: Likewise.
+
+ * src/split.c (verbose): Now bool, not int.
+ (VERBOSE_OPTION): New enum.
+ (longopts, main): Use it.
+
+ * tests/factor/basic: Adjust to new wording in diagnostic
+ that results from the above changes.
+
+2004-09-21 Jim Meyering <jim@meyering.net>
+
+ * man/rm.x: Say "the response is affirmative" rather than "the
+ response begins with y or Y", so that the documentation is
+ accurate in non-English locales. Problem reported by Munzir Taha.
+
+2004-09-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/echo.c (main): Don't pass NULL to strcmp when
+ POSIXLY_CORRECT and given no arguments.
+
+ * src/md5sum.c (STRING_OPTION): Remove.
+ (long_options, main): Remove support for undocumented and
+ obsolete --string option, as suggested in the 1996-09-26 patch.
+ * NEWS: Document this.
+
+ * tests/rm/fail-eperm: Don't try to remove writeable files in a
+ sticky /tmp directory, as SVR4-like systems (e.g., Solaris 9) let
+ you remove such files. Problem reported by Bert Fischer in:
+ http://lists.gnu.org/archive/html/bug-coreutils/2004-09/msg00074.html
+
+2004-09-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/md5sum.c (STATUS_OPTION, STRING_OPTION): New enums.
+ (long_options, main): Use them instead of magic numbers 2 and 1.
+ For --string, optarg can't possibly be NULL.
+
+ * src/dd.c (usage): Distinguish between options and operands.
+ (scanargs): Don't mess with argc, argv; getopt_long handles this now.
+ Say "operands" for operands, not "options".
+ (main): Use getopt_long, so that "dd --" works as POSIX requires.
+ * tests/dd/misc: Check for "dd --".
+
+ * src/chroot.c (main): Reject unknown options instead of
+ interpreting them as a directory to chroot to.
+
+ * src/cksum.c: Remove obsolete comment about POSIX 1003.2/D11.2.
+ The current standard (POSIX 1003.1-2004) is correct.
+ (crc_remainder) [defined CRCTAB]: Renamed from "remainder" to avoid
+ collision with builtin function.
+ (main) [defined CRCTAB]: Output in lowercase hexadecimal, and
+ output the first 0 as 8 digits, to make it easier to compare to
+ the text of the standard. Output crctab to be a const array.
+ (crctab): Use result of above changes.
+ (long_options): Remove; not needed if empty.
+ (main): getopt_long can't return 0 here, so simplify the code.
+
+2004-09-13 Jim Meyering <jim@meyering.net>
+
+ * src/Makefile.am (localedir.h): Don't redirect directly to target.
+
+2004-09-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/id.c (print_full_info): Don't exit with failure status simply
+ because a user or group number can't be turned into a name.
+ Problem reported by Felipe Kellermann in:
+ http://lists.gnu.org/archive/html/bug-coreutils/2004-09/msg00081.html
+
+2004-09-12 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (my-distcheck): When building with -Werror, also
+ require -Wshadow.
+
+2004-09-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: "tail" now handles obscure POSIX 1003.2-1992 cases better.
+ * src/tail.c (parse_obsolete_option): Renamed from
+ parse_obsolescent_option, since the options are obsolete now.
+ Remove bool *arg; just exit if there's an error. Revamp to follow
+ POSIX 1003.2-1992 more precisely, to handle cases like "tail -
+ file" and "tail -10 -- file" correctly when we are conforming to
+ the older standard.
+ (main): Adjust to this change.
+ * tests/tail/Test.pm (test_vector): minus-* requires
+ _POSIX2_VERSION=199209 now, to work correctly if there is
+ an input file. err-1 and err-3 no longer errors if there
+ is another file.
+
+2004-09-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/test.c (usage): Document -r, -w, -x more carefully.
+
+2004-09-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/test.c (usage): Document "test" (with no args) and "[ ]".
+ Document that -h and -L don't dereference.
+
+ * NEWS: Document that "tr xy -z" now works as per POSIX.
+ Sort the descriptions.
+ * src/tr.c (main): Don't reorder options.
+ * tests/tr/Test.pm (fowler-1): New test case.
+
+2004-09-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/touch.c (main): Fix POSIX-conformance bug: "touch --
+ MMDDhhmm file" must be treated like "touch MMDDhhmm file" when
+ conforming to pre-2001 POSIX.
+ * NEWS: Document this.
+ * tests/touch/obsolescent: Test for this bug. Also, set
+ _POSIX2_VERSION=199209 and POSIXLY_CORRECT=1 so that it's
+ a better test for obsolescent features.
+
+ * src/sort.c (main): Emulate Solaris 8 and 9 "sort -y", so that
+ "sort -y abc" is like "sort abc" whereas "sort -y 100" is like
+ plain "sort".
+
+ * src/od.c: Several changes for POSIX and FreeBSD compatibility.
+ (COMMON_SHORT_OPTIONS): Add -B, -D, -e, -F, -H, -I, -L, -O, -s, -X.
+ (long_options, main): --strings is now -S, not -s.
+ (usage): Reflect the usage changes.
+ (parse_old_offset): Do not issue a diagnostic on failure;
+ callers now do this as necessary.
+ (main): Support POSIX syntax. Remove unused case 0 from getopt_long.
+ Add support for new short options (many undocumented) for
+ compatibility with FreeBSD. Remove FIXME for -s; it's now
+ POSIX-compatible. Default format is now oS, not o2.
+ * NEWS: Describe the above.
+
+2004-09-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/stty.c (valid_options): Remove.
+ (main): Fix some bugs in handling invalid option-combinations
+ like "stty -F".
+ (recover_mode): Arg is now char const *, not char *.
+ (main): Use STDIN_FILENO, not 0.
+ Simplify option-parsing code a tad.
+ * tests/stty/basic-1: Check for the fixed bugs.
+
+2004-09-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/stat.c (HAVE_STRUCT_STATXFS_F_TYPE): Fix typo that prevented
+ it from ever being nonzero. Reported by Pozsar Balazs in:
+ http://lists.gnu.org/archive/html/bug-coreutils/2004-08/msg00189.html
+ (human_fstype): Add ramfs, squashfs, sysfs.
+ Reported by Pozsar Balazs in:
+ http://lists.gnu.org/archive/html/bug-coreutils/2004-08/msg00188.html
+ (human_fstype): Return char const *, not char *.
+ Simplify internals a bit, and avoid casts.
+
+ * src/dd.c (usage): "alternated EBCDIC" -> "alternate EBCDIC".
+ (bit_count): Remove. All uses changed to....
+ (multiple_bits_set): New function.
+ (scanargs): Use it, and check separately for each set of
+ incompatible options, to improve diagnostics.
+ (MX): Remove.
+ (apply_translations): Move checks for incompatible options
+ to scanargs, so that they're done consistently.
+
+2004-09-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ Output correct errno-related diagnostic on "paste" I/O errors.
+ * src/paste.c (write_error, xputchar): New functions.
+ (paste_parallel): Use correct errno value after input error.
+ (paste_parallel, paste_serial): Report errno value after output error.
+
+ Port to diet libc. Problem reported by Felix von Leitner in:
+ http://lists.gnu.org/archive/html/bug-coreutils/2004-08/msg00171.html
+ * src/paste.c (dummy_closed, CLOSED, dummy_endlist, ENDLIST): Remove;
+ it's not portable C to assume FILE is a complete type.
+ (paste_parallel): Use index test instead of ENDLIST, and NULL
+ instead of CLOSED.
+
+2004-08-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ POSIX-conformance fixes for "expand" and "unexpand".
+ Also, consistently use "tab stop" rather than "tabstop".
+ * NEWS: Document fixes.
+ * src/expand.c: Revamp to resemble the new unexpand.c better.
+ (usage): -i does not convert tabs after non-tabs.
+ (add_tab_stop): Renamed from add_tabstop. All uses changed.
+ (parse_tab_stop): Renamed from parse_tabstop. All uses changed.
+ (validate_tab_stop): Renamed from validate_tabstop. All uses changed.
+ (next_file, main): Check fclose against 0, not EOF.
+ (expand): Remove unnecessary casts.
+ Add another loop nesting level, for lines, so that per-line variables
+ are initialized cleanly.
+ Revamp tab checking. Check for write error immediately, rather
+ than just once at the end of the program.
+ * src/unexpand.c: Lkewise (for the expand.c changes).
+ (TAB_STOP_SENTINEL): Remove.
+ (tab_size): Now size_t, not uintmax_t, since we need to store
+ the sequences of blanks.
+ (max_column_width): New var.
+ (usage): Say "blank" where POSIX requires this.
+ (add_tab_stop): Calculate maximum column width.
+ (unexpand): Store the pending blanks, instead of merely counting them.
+ Follow POSIX's rules about -a requiring two blanks before a tab stop.
+ Get rid of internal label and goto.
+ * tests/unexpand/basic-1: Fix infloop-3 to match POSIX.
+ Add blanks-1 through blanks-13.
+
+2004-08-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: "chown : file", "chown '' file", and "chgrp '' file" now
+ succeed without changing the uid and gid, like FreeBSD.
+ * src/chgrp.c (parse_group): Return gid_t rather than storing it
+ through a pointer. Treat "chgrp '' file" as a no-op change,
+ as FreeBSD does.
+ (main): Set chopt.group_name to NULL if the group is the empty
+ string.
+ * src/chown-core.c (describe_change): Describe changes to -1:-1
+ without using "to OWNERSHIP" phrase.
+ * src/chown.c (usage): "chown '' file" is now allowed.
+ (main): Do not set user name to the empty string if the group
+ name is null.
+ * tests/chgrp/basic: Test "chgrp '' file".
+ * tests/chown/Makefile.am (TESTS): Add separator.
+ * tests/chown/separator: New file, partly taken from
+ Dmitry V. Levin's suggestion in
+ <http://lists.gnu.org/archive/html/bug-coreutils/2004-08/msg00102.html>
+
+2004-08-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/install/basic-1: Test for the -d regression.
+
+2004-08-11 Dmitry V. Levin <ldv@altlinux.org>
+
+ * src/install.c (main): Fix -d regression introduced with
+ --target-directory support at 2004-06-25.
+
+2004-08-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/copy.c (copy_internal): When preserving links, unlink
+ a destination with link count greater than one. This is so
+ that commands like "cp -a" don't get confused when copying into
+ a destination that already contains many hard links. Problem
+ reported by Tim Waugh in:
+ http://lists.gnu.org/archive/html/bug-coreutils/2004-08/msg00053.html
+
+2004-08-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ Convert all files to UTF-8.
+ * tests/fmt/basic (8-bit-pfx): Use UTF-8, not Latin-1.
+ * tests/sort/Test.pm (16a): Likewise.
+ * tests/uniq/Test.pm (8): Likewise.
+ * tests/misc/printf-hex: Use ASCII, not Latin-1.
+
+ * NEWS: Document "sort -o -" and "tee -" POSIX-conformance fixes.
+ * src/shred.c (usage): "-" is an operand, not an option.
+ * src/sort.c (die, xfopen, mergefps, first_same_file, merge):
+ A null file arg means standard output.
+ (main): "-o -" means to write to a file named "-",
+ not to standard output.
+ * src/tee.c (usage, tee): "tee -" writes to standard output, not
+ to a file named "-".
+
+2004-08-10 Dmitry V. Levin <ldv@altlinux.org>
+
+ * src/install.c (change_timestamps): Fix int->bool conversion
+ bugs introduced on 2004-07-29.
+
+2004-08-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/shred.c (wipename): Work even if the directory is writeable
+ and not readable. Prefer write access, since this should work
+ better with fdatasync.
+
+ * src/csplit.c (xalloc_die): New function.
+ (main): Remove now-obsolete initialization of xalloc_fail_func.
+
+ * src/md5sum.c: Adjust to sha->sha1 renaming.
+
+2004-08-08 Dmitry V. Levin <ldv@altlinux.org>
+
+ Minor code cleanup.
+ * src/readlink.c (canonicalize_fname): Remove unneeded proxy function.
+ (can_mode): Make variable local.
+
+2004-08-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/system.h (O_BINARY) [!O_BINARY && defined O_BINARY]:
+ Do not define, to avoid annoying compiler messages on QNX 6.3.
+ Problem reported by Johan in:
+ http://lists.gnu.org/archive/html/bug-coreutils/2004-08/msg00050.html
+
+2004-08-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/system.h (PRIdMAX, PRIoMAX, PRIuMAX, PRIxMAX):
+ Define to a concatenation of string literals, not to an expression;
+ needed for concatenation contexts.
+ (INTMAX_MAX, INTMAX_MIN): New macros.
+
+ * src/stat.c (print_stat): Don't assume st_ino / st_dev fits in
+ unsigned long; this isn't true for st_ino on Solaris 9.
+
+2004-08-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/uname.c: Do not depend on HAVE_SYSCTL when deciding
+ whether to include files. Include <sys/param.h> if
+ HAVE_SYS_PARAM_H (not HAVE_SYSCTL).
+ (main) [defined __POWERPC__]: Add a kludge to work around a
+ Mac OS X bug, so that uname -p defaults to "powerpc" if
+ sysctl ((int[]) {CTL_HW, HW_MACHINE_ARCH}, 2, buffer, &bufsize, 0, 0)
+ fails. Problem reported by Petter Reinholdtsen in:
+ http://lists.gnu.org/archive/html/bug-gnu-utils/2003-02/msg00201.html
+
+ * src/uniq.c (hard_LC_COLLATE, ignore_case, different, check_file,
+ main): Use bool for booleans.
+ (writeline, check_file): Use uintmax_t for line counts.
+ (check_file): Check for and report line number overflow,
+ when that matters.
+ * src/wc.c (iswspace, wc): Use to_uchar rather than a cast.
+ (print_lines, print_words, print_chars, print_bytes, print_linelength,
+ have_read_stdin, wc, wc_file, main):
+ Use bool for booleans.
+ (exit_status): Remove.
+ (wc, wc_file): Return bool status. All callers changed.
+ * src/who.c (scan_entries): 0 -> STDIN_FILENO.
+ * src/whoami.c (main): Print uids using unsigned long int, not
+ unsigned int.
+
+ * src/unexpand.c: Int cleanup and minor reorganization to be more
+ like src/expand.c.
+ Include quote.h, xstrndup.h.
+ (TAB_STOP_SENTINEL): Increase from INT_MAX to INTMAX_MAX.
+ (convert_entire_line, have_read_stdin, parse_tabstops, next_file,
+ unexpand, main):
+ Use bool for booleans.
+ (tab_size, tab_list, add_tabstop, validate_tabstops, unexpand):
+ Use uintmax_t for column counts.
+ (first_free_tab, validate_tabstops, unexpand): Use size_t for sizes.
+ (add_tabstop, parse_tabstops, main): Don't reserve UINTMAX_MAX
+ as a tab stop.
+ (parse_tabstops): Don't use ISBLANK on possibly-signed char.
+ Detect overflow in tab stop string.
+ (next_file, main): Use EXIT_FAILURE/EXIT_SUCCESS instead of 1/0.
+ (unexpand): Concatenate input files the same way expand does.
+
+ * src/touch.c (no_create, use_ref, posix_date, amtime_now,
+ touch, main): Use bool for booleans.
+ (main): Avoid integer overflow when given more than INT_MAX
+ options.
+ * src/tsort.c (struct item, n_strings): Use size_t for sizes.
+ (have_read_stdin, count_items, scan_zeros, detect_loop,
+ recurse_tree, walk_tree, tsort, main):
+ Use bool for booleans.
+ (exit_status): Remove.
+ (tsort): Return a success flag instead of storing into a global.
+ (main): Use it.
+ * src/tty.c (silent, main): Use bool for booleans.
+ (main): 0 -> STDIN_FILENO.
+ * src/uname.c (print_element): Use bool for booleans.
+
+ * src/test.c (TRUE, FALSE, SHELL_BOOLEAN, TRUTH_OR, TRUTH_AND):
+ Remove. All uses replaced by C99 boolean primitives.
+ (TEST_TRUE, TEST_FALSE): New constants, for readability.
+ (test_unop, binop, unary_operator, binary_operator, two_arguments,
+ three_arguments, posixtest, expr, term, and, or, is_int, age_of,
+ one_argument, main): Use bool for booleans.
+ (advance, unary_advance): Now inline procedures rather than a macros.
+ (is_int): Renamed from isint, to avoid namespace clash with ctype.h.
+ (term, and, or): When it's easy, loop instead of recursing.
+ (term): Avoid integer overflow if there are INT_MAX-3 args (!).
+ (binary_operator, unary_operator): Simplify by systematically rewriting
+ true==FOO to FOO (where FOO is a boolean).
+ (unary_operator): Don't consider a file to be a regular file
+ merely because its mode&S_IFMT is zero. Just use S_ISREG.
+ Remove unnecessary casts. Remove ifdefs for things like
+ S_ISSOCK that are no longer needed, since stat-macros.h always
+ defines them now.
+
+ * src/tac-pipe.c (buf_init_from_stdin, find_bol, tac_mem):
+ Use bool for booleans.
+ (buf_init_from_stdin, buf_free, find_bol, print_line):
+ Use size_t for sizes.
+ * src/tac.c (separator_ends_record, tac_seekable, tac_file,
+ tac_stdin, tac_stdin_to_mem, main): Use bool for booleans.
+ (match_length, G_buffer_size, tac_seekable, main): Use size_t for sizes.
+ (tac_seekable): Use ptrdiff_t for pointer subtraction.
+ Report an error if the result is out of range.
+ (tac_seekable, main): Check for integer overflow in buffer size
+ calculations.
+ (main): Remove unnecessary casts.
+
+ * src/su.c (run_shell): Pass a new n_additional_args arg, so that
+ the callee doesn't have to count 'em. All callers changed.
+ Don't allocate more space for the arg vector than we'll need.
+ Use memcpy to copy the args rather than rolling our own loop.
+ Use size_t for sizes.
+ (fast_startup, simulate_login, change_environment, log_su,
+ correct_password, restricted_shell, main): Use bool for booleans.
+ (longopts): Don't assume change_environment is an int.
+ Use NULL, not 0, for pointers.
+ (xsetenv): New function, replacing xputenv and concat.
+ All callers changed.
+ (elements): Remove; no longer needed.
+ (log_su, correct_passwd, main): Prefer !x to x==NULL.
+ (log_su): 2 -> STDERR_FILENO.
+ (modify_environment, main): Don't assume that getenv's returned value
+ has an indefinite lifetime.
+ (modify_environment): Allocate a larger environ.
+ (main): Remove an impossible 'case 0'; if it happens now, it'll
+ get diagnosed. Don't assume getpwnam results outlive endpwent.
+ Check for null or empty pw_name, pw_dir and for null pw_passwd.
+
+ * src/stty.c (VA_START): Remove. All callers now use va_start.
+ (_POSIX_VDISABLE): Remove unnecessary cast.
+ (struct control_info, visible): Use cc_t for control chars.
+ (struct control_info): Use size_t for sizes.
+ (recover_mode, set_mode, display_speed, display_window_size,
+ valid_options, main, display_changed):
+ Use bool for booleans.
+ (integer_arg): Return unsigned long int, not long int.
+ Accept new max arg; all callers changed, to specify a maximum
+ value for integer parameters instead of silently overflowing.
+ (wrap): Do not overrun the stack buffer if the output contains
+ more than 1024 bytes. Instead, malloc a buffer.
+ (main): Remove a "what is this?!?" FIXME. Nobody knows what it is.
+ Remove unnecessary casts.
+ (set_control_char): Allow int values only up to cc_t range.
+ (screen_columns): Don't reject INT_MAX.
+ (display_changed, display_all, display_speed, recover_mode):
+ Don't assume cc_t fits in int.
+
+ * src/remove.h: Add copyright notice.
+ (struct rm_options): Use bool for booleans.
+ * src/rmdir.c (empty_paths, ignore_fail_on_non_empty, verbose,
+ errno_rmdir_non_empty, remove_parents, main): Likewise.
+ * src/sum.c (have_read_stdin, bsd_sum_file, sysv_sum_file,
+ main): Likewise.
+ (main): Don't dump core if invoked with argv[0]==NULL.
+ * src/tee.c (tee, append, ignore_interrupts, main, tee):
+ Use bool for booleans.
+ (tee): Use ssize_t for read returns.
+
+ * src/ptx.c: Add a FIXME mentioning that there are many
+ unchecked integer overflows in this file.
+ (gnu_extensions, auto_reference, input_reference, right_reference,
+ ignore_case, initialize_regex, fix_output_parameters,
+ output_one_roff_line, output_one_text_line, output_one_dumb_line, main):
+ Use bool for booleans.
+ (SKIP_SOMETHING, compare_words, digest_break_file,
+ find_occurs_in_text, fix_output_parameters):
+ Use to_uchar instead of a caset.
+ (print_field): Rewrite to avoid cast.
+
+ * src/printf.c (posixly_correct): Use bool for booleans.
+ (verify, main): Use EXIT_FAILURE/EXIT_SUCCESS instead of 1/0.
+ (STRTOX): Rewrite to avoid casts.
+ (print_esc_char): Arg is char, not int.
+ * src/readlink.c (canonicalize): Remove. All uses now merely inspect
+ can_mode.
+ (no_newline, verbose): Use bool for booleans.
+ (can_mode): Now of type int; use -1 to denote otherwise-uninitialized.
+ * src/shred.c (struct Options, main): Use bool for booleans.
+ (isaac_seed_data, fillpattern, wipefile): Rewrite to avoid casts.
+ * src/split.c (cwrite, bytes_split, lines_split, line_bytes_split):
+ Use bool for booleans.
+ * src/stat.c (G_fail): Remove.
+ (print_statfs): Print various gotta-be-nonnegative values using
+ unsigned long int, not long int or int.
+ (do_statfs, do_stat): Return a boolean success flag.
+ (do_stat, main): Use bool for booleans.
+
+ * src/pr.c: Add a FIXME mentioning that there are many
+ unchecked integer overflows in this file.
+ (TRUE, FALSE): Remove. All uses replaced by true and false.
+ (struct COLUMN, read_line, print_page, print_stored, open_file,
+ skip_to_page, init_fps, parallel_files, align_empty_cols,
+ empty_line, FF_only, explicit_columns, extremities, keep_FF,
+ print_a_FF, print_a_header, use_form_feed, have_read_stdin,
+ print_across_flag, storing_columns, balance_columns,
+ truncate_lines, join_lines, untabify_input, failed_opens,
+ numbered_lines, skip_count, use_esc_sequence, use_cntrl_prefix,
+ double_space, ignore_failed_opens, use_col_separator,
+ pad_vertically, last_line, main, init_parameters, skip_read,
+ read_line, print_stored):
+ Use bool for booleans.
+ (struct COLUMN, char_to_clump, store_char, print_char):
+ Use char for chars.
+ (clump_buff, print_clump): Use char[], not int[], for an array whose
+ elements are always chars.
+ (first_last_page, main, getoptarg, balance, add_line_number,
+ char_to_uclump): Remove unnecessary casts.
+ (init_parameters): Allocate chars, not ints, for clump_buff.
+ (print_char): Use to_uchar before invoking ISPRINT.
+ (char_to_clump): Convert to unsigned char before invoking ISPRINT.
+
+ * src/nohup.c (main): Use bool for booleans.
+ * src/paste.c (paste_parallel, paste_serial, main): Likewise.
+ * src/pathchk.c (validate-path, main, portable_chars_only): Likewise.
+ (portable_chars_only): Use to_uchar rather than a cast.
+ * src/printenv.c (main): Use bool for booleans.
+ Do not assume that the environ has at most one matching entry
+ for each option (integer overflow was possible otherwise).
+
+ * src/od.c (FMT_BYTES_ALLOCATED): Now an enum, not a decimal
+ constant. Do not assume PRIdMAX etc. are strings of length 3 or
+ less.
+ (struct tspec): Use it. fmt_string is now an array, not
+ a pointer, as there's little point to the indirection here.
+ (struct tspec, flag_dump_strings,
+ traditional, flag_pseudo_start, limit_bytes_to_format,
+ abbreviate_duplicate_blocks, have_read_stdin, simple_strtoul,
+ decode_one_format, open_next_file, check_and_close,
+ decode_format_string, skip, write_block, read_char, read_block,
+ parse_old_offset, dump, dump_strings, main):
+ Use bool for booleans.
+ (struct tspec): Use void *, not char *, for generic pointers.
+ (bytes_to_oct_digits, bytes_to_signed_dec_digits,
+ bytes_to_unsigned_dec_digits, bytes_to_hex_digits):
+ Use char, not unsigned int, since char suffices.
+ (print_s_char, print_char, print_s_short, print_short,
+ print_int, print_long, print_long_long, print_float,
+ print_double, print_long_double): Rewrite to avoid casts.
+ These now take void * arguments, instead of char *.
+ Use the same body for all functions, except for the choice
+ of type. Assume C89 to simplify handling of signed char.
+ (dump_hexl_mode_trailer, print_named_ascii, print_ascii):
+ Rewrite to avoid casts.
+ (print_named_ascii, print_ascii): Now takes void *, not char *.
+ (decode_one_format): Use int for printf field widths, not
+ unsigned int. Pass void * to subsidiary printers,
+ not char *. Simplify handling of floating-point formats
+ by factoring out common code dealing with precision and field width.
+ (decode_format_string): Avoid need for temporary copy of
+ each decoded struct tspec.
+ (get_lcm): Remove unnecessary cast.
+ (main): Fix bug where more than INT_MAX failed decodes were ignored.
+
+2004-08-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/nl.c (TRUE, FALSE): Remove; all uses changed to true, false.
+ (enum number_format): Remove.
+ (FORMAT_RIGHT_NOLZ, FORMAT_RIGHT_LZ, FORMAT_LEFT): Now strings,
+ not enum values.
+ (DEFAULT_SECTION_DELIMITERS): Now an array constant, not a macro.
+ (section_del): Now const.
+ (print_fmt): Remove.
+ (starting_line_number, page_incr, blank_join, line_no,
+ print_lineno, proc_text, main):
+ Use intmax_t for line numbers.
+ (reset_numbers, have_read_stdin, build_type_arg, nl_file, main):
+ Use bool for booleans.
+ (lineno_format): Now a string, not an enum value.
+ (build_print_fmt): Remove. All calls removed. This work is
+ now done within print_lineno.
+ (build_type_arg): Use size_t for sizes.
+ (print_lineno): Check for line number overflow.
+ (proc_text, main): Remove unnecessary cast.
+
+ * src/ln.c (symbolic_link, interactive, remove_existing_files,
+ verbose, hard_dir_link, dereference_dest_dir_symlinks,
+ do_link, main): Use bool for booleans.
+
+ * src/ls.c (struct fileinfo, file_interesting,
+ extract_dirs_from_files, color_symlink_as_referent,
+ FILE_OR_LINK_MODE, sort_reverse, print_owner, print_group,
+ numeric_ids, print_block_size, dired, print_with_color,
+ check_symlink_color, print_inode, recursive, immediate_dirs,
+ all_files, really_all_files, qmark_funny_chars,
+ print_dir_name, format_needs_stat, format_needs_type, visit_dir,
+ main, decode_switches, parse_ls_color, print_dir, file_interesting,
+ gobble_file, make_link_path, basename_is_dot_or_dotdot,
+ extract_dirs_from_files, print_long_format):
+ Use bool for booleans.
+ (dir_defaulted): Remove; no longer needed.
+ (main): Use int to count files, since it suffices for argv.
+ Rewrite to avoid need for dir_defaulted.
+ (main, print_dir, gobble_file, get_link_name,
+ xstrcoll):
+ Set exit status to EXIT_SUCCES/EXIT_FAILURE rather than 0/1.
+ (decode_switches): Put back check for ws.ws_col <= SIZE_MAX.
+ Remove unnecessary cast to int. Use int instead of unsigned
+ int to count from 0 to 1.
+ (get_funky_string, print_type_indicator): Use char for bytes, not int.
+ (make_link_path): Use NULL for null pointers.
+ (quote_name): Use to_uchar instead of cast.
+
+ * src/id.c (use_name, main, print_user, xgetgroups, print_group_list,
+ print_full_info): Use bool for booleans.
+ (problems): Remove, replacing with....
+ (ok): New var (inverted from old sense).
+ (print_user, print_group, print_full_info):
+ Print uids/gids with %lu, not %u.
+ (xgetgroups): Don't run out of memory if getgroups or getugroups
+ returns -1.
+ * src/setuidgid.c (main): Print uids/gids with %lu, not %ld.
+
+ * src/factor.c (wheel_tab): Use unsigned char instead of unsigned
+ int, since it suffices.
+ (factor, print_factors): Use size_t for sizes.
+ (print_factors, do_stdin, main): Use bool for booleans.
+ * src/fold.c (TAB_WIDTH): New macro; use it instead of "8".
+ (fold_file, main): Use bool for booleans.
+ (fold_file, main): Use size_t for sizes.
+ (main): Allow -w options up to SIZE_MAX - TAB_WIDTH - 1, instead
+ of prohibiting widths greater than INT_MAX.
+ * src/head.c (presume_input_pipe, print_headers, have_read_stdin,
+ write_header, elide_tail_bytes_pipe, elide_tail_bytes_file,
+ elide_tail_lines_pipe, elide_tail_lines_seekable,
+ elide_tail_lines_file, head_bytes, head_lines, head, head_file,
+ string_to_integer, main):
+ Use bool for booleans.
+ (main): Rewrite to avoid cast.
+
+ * src/csplit.c (struct line): Use size_t for sizes.
+ (main): Remove unnecessary cast.
+ * src/cut.c (cut_fields): Use to_uchar rather than a cast.
+ * src/cut.c (cut_file, main): Use bool for booleans.
+ * src/date.c (show_date, rfc_format, batch_convert, main): Likewise.
+ * src/env.c (main): Likewise.
+ * src/expr.c (nextarg): Likewise.
+ * src/env.c (main): Remove unused and nonstandard envp arg.
+
+ * src/fmt.c (COST, MAXWORDS): Add a comment describing some of
+ fmt's arbitrary limits.
+ (TRUE, FALSE): Remove; all uses changed to (true, false).
+ (main): Use bool for booleans.
+ Limit maximum width to MAXCHARS / 2. Use xstrtoul, not xstrtol,
+ to parse width.
+ (copy_rest): Remove unnecessary cast.
+ (get_prefix): Rewrite to avoid cast.
+ (check_punctuation): Use char *, not unsigned char *; C89 requires
+ this. Avoid off-by-one buffer read overrun when line is empty.
+ (flush_paragraph): Don't assume wptr-parabuf is <= INT_MAX.
+ Remove unnecessary casts.
+ * tests/fmt/basic (wide-1, wide-2, bad-suffix): Adjust to above
+ changes.
+
+ * src/expand.c (convert_entire_line, have_read_stdin, parse_tabstops,
+ next_file, expand, main):
+ Use bool for booleans.
+ (tab_size, tab_list, add_tabstop, parse_tabstops, validate_tabstops,
+ expand, main):
+ Use uintmax_t for column counts.
+ (add_tabstop): Don't reserve -1 (now UINTMAX_MAX) as a special value.
+ All callers changed.
+ (parse_tabstops): Don't pass a negative char to isblank.
+ Avoid memory leak with large tab stops.
+ (validate_tabstops, expand): Don't assume number of tab stops is
+ <= INT_MAX.
+ (next_file, main): Use EXIT_SUCCESS/EXIT_FAILURE rather than 0/1 when
+ storing values into exit_status.
+ (expand): Use same pattern as unexpand for reading chars.
+ Report an error when input line is too long, instead of silently
+ screwing up. Do not mishandle tab stops when backspacing left
+ over start of line.
+
+ * src/dircolors.c (have_read_stdin, append_quoted,
+ dc_parse_stream, dc_parse_file, main): Use bool for booleans.
+ (dc_parse_stream): Use enum for state, rather than int.
+ Use ssize_t to store getline result.
+
+ * src/dd.c (translation_needed, parse_integer, scanargs,
+ apply_translations, char_is_saved, swab_buffer, skip_via_lseek):
+ Use bool for booleans.
+ (translate_buffer): Use to_uchar rather than a cast.
+ (swab_buffer, copy_simple, copy_with_unblock):
+ Use size_t for sizes.
+
+ * src/seq.c (equal_width, valid_format, main): Use bool for booleans.
+ * src/sleep.c (apply_suffix): Likewise.
+ * src/tail.c (struct File_spec, reopen_inaccessible_files, count_lines,
+ forever, from_start, print_headers, have_read_stdin, valid_file_spec,
+ write_header, file_lines, pipe_lines, pipe_bytes, recheck,
+ tail_forever, tail_bytes, tail_lines, tail, tail_file,
+ parse_obsolescent_option, parse_options, main): Likewise.
+ * src/sleep.c (apply_suffix): Invert sense of result.
+ Use int (not unsigned int) for multiplier, as this generates better
+ code with some compilers. Simplify code a bit.
+ * src/tail.c (struct File_spec, max_n_unchanged_stats_between_opens,
+ parse_options): Use uintmax_t, not unsigned int or unsigned long int,
+ for state counters.
+ (tail_bytes, tail_lines): Redo test of return value (-1, 0, 1) to
+ make it a bit clearer.
+
+ * src/hostname.c: Include "xgethostname.h".
+ (xgethostname): Remove decl; xgethostname.h has it.
+ (sethostname) [!defined(HAVE_SETHOSTNAME) && defined(HAVE_SYSINFO)
+ && defined (HAVE_SYS_SYSTEMINFO_H) && defined(HAVE_LIMITS_H)]: Use
+ prototypes rather than K&R form. Assume any negative value from
+ sysinfo denotes failure, not just -1.
+ (main): Simplify use of sethostname.
+
+ * src/pinky.c (include_idle, include_heading, include_fullname,
+ include_project, include_plan, include_home_and_shell, do_short_format,
+ include_where, main): Use bool for booleans.
+ (count_ampersands, create_fullname, scan_entries, short_pinky):
+ Use size_t for sizes.
+ (create_fullname): Check for overflow in size calculations.
+ (idle_string): Don't assume that the number of idle days
+ is less than 10**8 and/or INT_MAX/(24*60*60).
+ (main): No need to pass a non-NULL last arg to getopt_long.
+ * src/uptime.c (print_uptime, uptime): Use size_t for sizes.
+ (print_uptime): Remove unused local variable.
+ (main): No need to pass a non-NULL last arg to getopt_long.
+ * src/users.c (list_entries_users, users): Use size_t for sizes.
+ (list_entries_users): Use char for bytes.
+ (main): No need to pass a non-NULL last arg to getopt_long.
+ * src/who.c (do_lookup, short_list, short_output, include_idle,
+ include_heading, include_mesg, include_exit, need_boottime,
+ need_deadprocs, need_login, need_initspawn, need_clockchange,
+ need_runlevel, need_users, my_line_only, main): Use bool for booleans.
+ (print_runlevel): Use unsigned char for bytes.
+ (list_entries_who, scan_entries, who): Use size_t for sizes.
+ (main): No need to pass a non-NULL last arg to getopt_long.
+
+ * src/install.c (isdir): Remove decl.
+ (install_file_to_path): Rely on make_path to fail if the destination
+ is not a directory, by passing preserve_existing==true to it.
+ Hence we no longer need to call isdir.
+ Free dest_dir immediately when it's no longer needed, rather than
+ waiting until the end of the function.
+ (copy_file): Don't bother calling isdir, as copy will do the
+ right thing if the destination is a directory.
+
+ * src/du.c (fts_debug, opt_all, apparent_size, opt_count_all,
+ print_grand_total, opt_separate_dirs, hash_ins, process_file, main):
+ Use bool for booleans.
+ (max_depth): Now size_t, not int, to avoid an arbitrary limit
+ of INT_MAX on depth.
+ (G_fail): Remove: no longer needed, now that the relevant
+ functions return bool.
+ (process_file): Use return value to signal success rather than
+ setting a global. Remove first_call static var; not needed, since
+ we can look at n_alloc. Use size_t for depths. Remove FIXME
+ about size_t casts, as it's now fixed. Use xnrealloc rather
+ than the obsolescent XREALLOC. Don't bother to check whether
+ reallocation is needed unless level > prev_level.
+ (du_files): Invert sense of result, for consistency with
+ other coreutils code. All callers changed.
+ (main): Allow --max-depth values up to SIZE_MAX.
+
+ * src/df.c (inode_format, show_all_fs, show_local_fs,
+ show_listed_fs, posix_format, require_sync, print_type,
+ selected_fstype, excluded_fstype, show_dev, show_point, main):
+ Use bool for booleans.
+ (df_readable, show_dev): Use UINTMAX_MAX instead of -1.
+ (show_dev, show_point, main):
+ Use EXIT_SUCCESS/EXIT_FAILURE instead of 0/1.
+ Don't assume disk name lengths are <= INT_MAX.
+ Rewrite pct calculation to avoid cast.
+ (show_point): Don't assume resolved length is <= SSIZE_MAX.
+
+ * src/cut.c (hash_int) [!defined UINTPTR_MAX]: Use size_t
+ instead of uintptr_t.
+ * src/shred.c (UINT_MAX_32_BITS): Remove.
+ (word32): Remove. All uses changed to uint32_t.
+ (isaac_seed_data): Remove unnecessary cast.
+ * src/system.h (ptr_align): Use size_t; in practice, this is just as
+ good as uintptr_t in checking for alignments, and has fewer
+ configuration hassles.
+
+ * src/Makefile.am (localedir.h): Make it readonly; this
+ undoes part of the 2004-07-27 patch.
+
+2004-07-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/sort.c (UCHAR): Remove; all uses changed to to_uchar.
+ (IS_THOUSANDS_SEP): Use bool when appropriate.
+ (numcompare, main): Use char, not int, when the value is always a char.
+ (numcompare): Remove "register"; compilers are smart enough these days.
+ * src/system.h (errno, CHAR_BIT): Remove decls;
+ no longer needed now we assume C89 or better.
+ Include <inttypes.h> before <stdint.h>, as it's the
+ Autoconf-recommended pattern.
+ (to_uchar): New inline function, moved here from tr.c.
+ Use full names for int types, e.g. "long int" rather than "long".
+ * src/tr.c (to_uchar): Remove; now in system.h.
+ (is_char_class_member): Use bool when appropriate.
+
+ * src/mkdir.c (create_parents, main): Use bool when appropriate.
+ (main): Use EXIT_SUCCESS/EXIT_FAILURE instead of 0/1.
+
+2004-07-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/mkfifo.c (main): Use EXIT_SUCCESS and EXIT_FAILURE, not 0 and 1.
+
+ * src/chmod.c (recurse, force_silent, process_file, process_files,
+ main): Use bool when appropriate.
+ * src/cksum.c (cksum, main): Likewise.
+ * src/comm.c (hard_LC_COLLATE, only_file_1, only_file_2, both,
+ compare_files, main): Likewise.
+
+ * src/copy.h (struct cp_options): Likewise.
+ * src/copy.c (copy_internal, is_ancestor, copy_dir, copy_reg,
+ same_file_ok, seen_file, copy_internal, valid_options, copy): Likewise.
+ * src/cp-hash.h (remember_created): Likewise.
+ * src/cp-hash.c (remember_created): Likewise.
+ * src/cp.c (struct dir_attr, flag_path, remove_trailing_slashes,
+ re_protect, make_path_private, target_directory_operand, do_copy,
+ cp_option_init, decode_preserve_arg, main): Likewise.
+ * src/install.c (isdir, change_timestamps, change_attributes,
+ copy_file, install_file_to_path, install_file_in_dir,
+ install_file_in_file, strip_files, dir_arg, cp_option_init, main,
+ change_attributes, change_timestamps): Likewise.
+ * src/mv.c (remove_trailing_slashes, rm_option_init,
+ cp_option_init, do_move, movefile, main): Likewise.
+ * src/remove.c (right_justify), full_filename_, AD_pop_and_chdir,
+ AD_push, prompt, remove_dir): Likewise.
+ * src/rm.c (rm_option_init, main): Likewise.
+
+ * src/remove.c (top_dir, pop_dir, full_filename_):
+ Use size_t for sizes.
+ * src/cp.c (target_directory_operand): Do not clear *NEW_DST if stat
+ succeeds. It's not necessary in that case, as *NEW_DST is always
+ false already.
+ (do_copy): Rewrite slightly to avoid need for "unreachable" comment.
+ (main): Use EXIT_SUCCESS, EXIT_FAILURE instead of 0, 1.
+ * src/rm.c (main): Likewise.
+
+ md5sum, sha1sum integer cleanups.
+
+ * src/checksum.h: Don't include config.h, sys/types.h, stdio.h:
+ not needed.
+ (ALG_UNSPECIFIED): Remove.
+ (ALG_MDT): Don't make it equal to CHAR_MAX + 1; this isn't necessary.
+ * src/md5.c: Don't include any files other than checksum.h.
+ * src/sha1sum.c: Likewise.
+ * src/md5sum.c (OPENOPTS, have_read_stdin, status_only, warn,
+ bsd_split_3, split_3, hex_digits, digest_file, digest_check, main):
+ Use bool when appropriate.
+ (digest_check): Increase limit of number of input lines to
+ UINTMAX_MAX from INT_MAX. Diagnose any overflows of this counter.
+ Use ngettext instead of hard-to-i18nize hardcoded stuff for plurals.
+
+2004-07-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/cat.c (exit_status): Remove. Now done by passing a boolean
+ 'ok' flag around.
+ (simple_cat, cat): Return true if successful. All callers changed.
+ (simple_cat, cat, main): Use bool for booleans.
+ (simple_cat): Use size_t for sizes.
+ (cat, main): Use the same names for parameters that we use for
+ long options, to avoid confusion. This inverts the sense of the
+ show_tabs (formerly output_tabs) and number_nonblank
+ (formerly numbers_at_empty_lines) variables.
+ (main): Don't mess up (due to integer overflow) if we are given
+ INT_MAX - INT_MIN + 1 options.
+ [O_BINARY]: Don't invoke isatty unless the other options require it.
+ (main): When deciding whether to use simple_cat, don't worry
+ about binary option; it's irrelevant.
+
+ * src/dcgen: Remove comments, trailing white space, and empty
+ lines from the output strings, to save space.
+ Use a narrower type like 'unsigned char' for line lengths, if
+ that will do.
+ Make the output variables static, not extern.
+
+ * src/chgrp.c (parse_group): Require base 10 when parsing
+ groups as integers.
+ (main): int -> bool when appropriate.
+ * src/chown.c (main): Likewise.
+ * src/chown-core.c: Include inttostr.h.
+ (UINT_MAX_DECIMAL_DIGITS, uint_to_string): Remove.
+ (gid_to_name, uid_to_name): Use imaxtostr/umaxtostr
+ instead of uint_to_string).
+ (describe_change): Instead of an int flag, use a char *
+ auxiliary; this avoids the need for casts.
+ Assume free (NULL) works.
+ (change_file_owner): Return true/false, not 0/-1, since
+ we don't set errno. All callers changed.
+ Use bool when appropriate.
+ (chown_files): Likewise.
+ * src/chown-core.h (chown_files): Likewise.
+
+ * tests/chown/basic: Test for proper handling of uids like
+ "010", which must be parsed as decimal.
+
+ * tests/misc/pwd: Don't assume that Perl's getpwd agrees with our
+ pwd when there are multiple names for the working directory
+ (which can happen with an automounter, sigh).
+
+ * src/Makefile.am ($(SCRIPTS)): Don't depend on Makefile;
+ this causes Solaris 8 'make' to refuse to build "groups".
+ (localedir.h): Don't depend on Makefile: this causes Solaris
+ 8 'make' to build localedir.h unnecessarily. The dependence
+ on Makefile is ineffective anyway, since $(localedir) might
+ change even if Makefile hasn't.
+
+ * src/remove.c (remove_dir): If we can't save the state of the
+ working directory, pretend we started from "/", not ".".
+ This avoids a bug on hosts like Solaris that don't let you
+ remove the working directory.
+
+2004-07-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/printf.c (strtiomax, strtoumax): Declare if not already
+ declared: this fixes a portability bug with Solaris 8 + GCC.
+ (STRTOX): Parenthesize use of macro arg as expression.
+ (vstrtoimax, vstrtoumax, vstrtold): Remove now-unnecessary
+ parentheses.
+ * configure.ac: Check for declaration of strtoumax, for
+ src/printf.c.
+
+ * src/Makefile.am (cp_LDADD, ginstall_LDADD, mv_LDADD,
+ pathchk_LDADD, rm_LDADD, test_LDADD): New vars, for eaccess.
+
+ * tests/readlink/can-e: Don't assume that we can remove the
+ working directory: this isn't possible under Solaris 8, say.
+ * tests/readlink/can-f: Likewise.
+ * tests/readlink/can-m: Likewise.
+
+ * src/copy.c (copy_internal): find_backup_file_name no longer
+ returns NULL, so don't bother to check for this.
+ * src/cp.c (do_copy): Likewise.
+ * src/ln.c (do_link): Likewise.
+
+2004-07-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/nice.c (GET_NICE_VALUE): Renamed from GET_PRIORITY.
+ All uses changed.
+ (NZERO): New macro, if system doesn't define it already.
+ (usage): Distinguish priorities from nice values.
+ Don't assume NZERO is 20.
+ (main): Use bool instead of int where appropriate.
+ If user specifies an adjustment out of range, always truncate it
+ to an inrange value instead of sometimes giving an error message
+ and sometimes not.
+ Do not assume that -1 is an error return from "nice" or
+ "getpriority", as it might be the current nice value minus NZERO.
+ If nice/setpriority fails with errno == EPERM, go ahead and run
+ the command anyway; POSIX requires this.
+
+ * src/pathchk.c: Include euidaccess.h.
+ (dir_ok): Use euidaccess, not access.
+ * src/test.c (R_OK, W_OK, X_OK, FOK): Remove; system.h defines them.
+ (eaccess): Remove. All users changed to use euidaccess instead.
+
+2004-07-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/uptime.c (print_uptime) [defined BOOT_MSG]:
+ Don't assume ut_line is null-terminated.
+ * src/who.c (print_line): New arguments USERLEN and LINELEN,
+ since USER and LINE might not be null terminated. All callers
+ changed.
+
+2004-07-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix bug with "tail -f" reported by Rob Holland in
+ <http://lists.gnu.org/archive/html/bug-coreutils/2004-07/msg00054.html>.
+ Also, remove the undocumented and unsupported-since-2000
+ --max-consecutive-size-changes options. Fix another related bug:
+ "tail" got confused if stdin, stdout, or stderr were closed.
+ Also, use output buffering even with "tail -f".
+
+ * NEWS: Document this, plus yesterday's patch.
+ * doc/coreutils.texi (tail invocation): "size has remained the same"
+ -> "file has not changed", which is more accurate for fifos.
+ * src/tail.c: Include fcntl-safer.h.
+ (COPY_TO_EOF): Set to UINTMAX_MAX, not OFF_T_MAX (which was wrong).
+ (COPY_A_BUFFER): New macro.
+ (struct File_spec): New members mtime, mode, blocking.
+ Remove member n_consecutive_size_changes.
+ (DEFAULT_MAX_N_CONSECUTIVE_SIZE_CHANGES,
+ max_n_consecutive_size_changes_between_opens,
+ MAX_CONSECUTIVE_SIZE_CHANGES_OPTION): Remove.
+ (long_options, tail_forever, parse_options):
+ Remove (non-)support for --max-consecutive-size-changes.
+ (record_open_fd): New function.
+ (recheck, tail_file): Use it. Don't assume that stdin is open.
+ (dump_remainder): Add support for new COPY_A_BUFFER special value.
+ Treat errno==EAGAIN like EOF, since it might be a nonblocking read.
+ (recheck): New arg BLOCKING, specifying whether to use blocking reads.
+ All uses changed.
+ (n_live_files): Remove, replacing with...
+ (any_live_files): New function. All uses changed.
+ (tail_forever): Use nonblocking I/O unless we know that blocking I/O
+ is safe; this avoids some hangs when reading from a fifo.
+ Avoid invoking fstat or sleep when using blocking I/O.
+ Do not check for changes to size if the file is not a regular file,
+ as the size is undefined in that case.
+ Check for changes to mtime or mode, too; this works for non-regular
+ files.
+ (tail_forever, main): Redo fflush strategy to work even when input
+ is nonblocking. Don't use unbuffered output; just flush when needed.
+
+2004-07-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/tail.c (main): Ignore -f if no file operand is specified
+ and standard input is a pipe.
+ * doc/coreutils.texi (tail invocation): Do not ignore -f for
+ all pipes, just for when standard input is a pipe and no
+ file operand is specified.
+ * tests/tail/Test.pm: Reinstate f-1 test, since we now pass.
+ Add a new commented-out f-2 test, which we still fail.
+ (test_vector): All f-* tests are special cases, not just f-1.
+
+2004-07-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/uptime.c: Include c-strtod.h.
+ (print_uptime): Use c_strtod instead of setlocale and sscanf.
+ Use long int rather than int to count days (for 64-bit hosts),
+ and check for arithmetic overflow when converting double to time_t.
+
+2004-07-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/printf.c (vstrtold): Renamed from vstrtod.
+ Now returns long double. All uses changed.
+ (print_direc): Use "L" length modifier when printing floating point
+ numbers, since we're now printing long double.
+
+2004-07-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ printf cleanup, to avoid undefined behavior, to add support for
+ formats that Bash supports, and to support wide integers like
+ Bash does.
+
+ * NEWS: Document this.
+ * src/printf.c (UNSPECIFIED): Remove. All uses now replaced by
+ booleans, so that we don't reserve any values for precision or
+ width (like Bash).
+ (STRTOX): Use prototype, not K&R-style definition.
+ (vstrtoimax): Renamed from xstrtol (to avoid confusion with xstrtol
+ in ../lib), with type change to intmax_t.
+ All uses changed.
+ (vstrtoumax): Renamed from xstrtoul, with type change to uintmax_t.
+ All uses changed.
+ (vstrtod): Renamed from xstrtod. All uses changed.
+ (print_direc): Use boolean arg instead of special value to indicate
+ a missing precision or width. LENGTH no longer includes
+ length modifiers or conversion character. New arg CONVERSION
+ now specifies conversion character.
+ Use intmax_t-width formatting for integers (like Bash).
+ Add support for C99 %a, %A, %F (like Bash).
+ Add support for field width with %c (POSIX requires this).
+ Add a FIXME for lack of support for field width and precision
+ for %b.
+ Add support for '\'', '0' flags.
+ Check for invalid combinations of flags, field width, precision,
+ and conversion, to prevent use of undefined behavior.
+ Allow multiple length modifiers, for formats like "%lld" (like Bash).
+ Add support for C99 'j', 't', 'z' length modifiers (like Bash).
+ In error message, output entire invalid conversion specification,
+ instead of merely outputting % followed by the conversion char.
+ * tests/misc/printf: Add tests for the above.
+
+2004-04-03 Dmitry V. Levin <ldv@altlinux.org>
+
+ Change "readlink -f" to be more compatible with prior implementations.
+ Add more canonicalize options, -e and -m.
+ Add comprehensive tests for all readlink modes.
+
+ * m4/canonicalize.m4 (AC_FUNC_CANONICALIZE_FILE_NAME):
+ Do not add canonicalize.c here.
+
+ * src/readlink.c (longopts): Add new options.
+ (usage): Document them.
+ (canonicalize_fname): New proxy function.
+ (main): Handle new options.
+ * doc/coreutils.texi (readlink invocation): Document new
+ "readlink -f" behaviour and new canonicalize options, -e and -m.
+
+ * configure.ac (AC_CONFIG_FILES): Add tests/readlink/Makefile.
+ * tests/Makefile.am (SUBDIRS): Add readlink.
+ * tests/readlink/Makefile.am: New file.
+ * tests/readlink/{rl-1,can-e,can-f,can-m}: New readlink tests.
+ * tests/misc/Makefile.am (TESTS): Remove basic readlink test.
+ * tests/misc/readlink: Remove file.
+
+2004-07-04 Jim Meyering <jim@meyering.net>
+
+ * src/copy.c (copy_internal): Add a FIXME comment.
+
+2004-07-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/copy.c (copy_dir): Assume path_concat returns non-NULL.
+ * src/cp.c (do_copy): Likewise.
+ * src/mv.c (movefile): Likewise.
+
+ * src/cp.c (make_path_private): 2nd arg is now size_t, not int,
+ to avoid problem when path_concat dir name is longer than 2 GiB (!).
+
+ * src/nohup.c (main): Don't pass NULL first argument to path_concat.
+ This cleans up the semantics a bit, as we no longer try to open the
+ same file twice.
+
+2004-07-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Add short names -t and -T for --target-directory
+ and --no-target-directory options, respectively.
+
+ * src/cp.c (NO_TARGET_DIRECTORY_OPTION, TARGET_DIRECTORY_OPTION):
+ Remove. All uses changed to 'T' and 't', respectively.
+ * src/install.c, src/ln.c, src/mv.c: Likewise.
+
+ * src/cp.c (long_opts, usage, do_copy, main): Add -t and -T as
+ aliases for --target-directory and --no-target-directory,
+ respectively.
+ * src/install.c (long_options, main, usage): Likewise.
+ * src/ln.c, src/mv.c: Likewise.
+
+2004-07-01 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (sc_file_system): New target.
+ (syntax-check-rules): Add it.
+ .x-sc_file_system: New file.
+ * Makefile.am (EXTRA_DIST): Add it.
+
+ * man/sync.x: Use "file system" rather than "filesystem".
+ * man/stat.x, man/df.x: Likewise.
+
+2004-06-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/df.c (usage, main): Output "file system" rather than
+ "filesystem".
+ * src/du.c (usage): Likewise.
+ * src/shred.c (usage): Likewise.
+ * src/stat.c (usage): Likewise.
+ * src/stat.c (long_options, usage): Rename "--filesystem" to
+ "--file-system". But keep the old name around, for compatibility
+ reasons.
+
+2004-06-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ Add support for --no-target-directory option.
+
+ * NEWS: Document it.
+ * doc/coreutils.texi (Common options, Target directory, cp
+ invocation, install invocation, mv invocation, ln invocation):
+ Likewise.
+ (link invocation): Explain how to rewrite link using ln now
+ that we have --no-target-directory.
+ (ln invocation): Explain that --no-target-directory subsumes
+ --no-dereference.
+ (unlink invocation): Modify wording to match new wording in
+ link invocation.
+
+ * src/cp.c (NO_TARGET_DIRECTORY_OPTION): New constant.
+ (long_opts, usage, do_copy, main): Add support for
+ --no-target-directory,
+ * src/install.c (NO_TARGET_DIRECTORY_OPTION, long_options, main,
+ usage): Likewise.
+ * src/ln.c (NO_TARGET_DIRECTORY_OPTION, long_options, usage,
+ main): Likewise.
+ * src/mv.c (NO_TARGET_DIRECTORY_OPTION, long_options, usage,
+ main): Likewise.
+ * src/mv.c (enum): Sort values.
+
+2004-06-29 Jim Meyering <jim@meyering.net>
+
+ Don't let verbose-mode output from a subshell obscure actual differences.
+ * tests/rm/inaccessible: Turn off command-echoing just before
+ invoking subshell, then turn it back on if VERBOSE=yes afterward.
+
+2004-06-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ Add support for 'install --target-directory', an option
+ that has been documented for years but not implemented (!).
+ * doc/coreutils.texi (install invocation): Document
+ --target-directory in synopsis, too.
+ * src/install.c (TARGET_DIRECTORY_OPTION): New var.
+ (long_options, main, usage): Add --target-directory.
+ (target_directory_operand): New function, stolen from mv.c.
+ (main): Use it. Check for -d and --target-directory.
+ Alter wording of diagnostics to match other programs.
+
+2004-06-28 Jim Meyering <jim@meyering.net>
+
+ * src/cp.c (usage): Fix copy+paste error in description of
+ --target-directory: s/move/copy/. From Paul Jarc.
+
+2004-06-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ Use more-consistent rules among cp, ln, and mv when dealing with
+ last operands that are (or look like) directories.
+
+ * src/cp.c (target_directory_operand): New, nearly-common function,
+ It reports an error if the destination appears to be a directory
+ (e.g., because it has a trailing slash) but is not.
+ * src/ln.c, src/mv.c: Likewise.
+ * src/cp.c (do_copy): Use it.
+ * src/ln.c (main): Likewise.
+ * src/mv.c (main): Likewise.
+
+ * src/cp.c (do_copy): Don't assume argc is positive.
+ Don't bother to lstat dest, since copy() will do that for us.
+ Use "const" to avoid the need for cast.
+
+ * src/cp.c (do_copy): Don't output a usage message because of file
+ problems (e.g., an operand is not a directory). Use it only for
+ syntax. Standardize on "target %s is not a directory" for the
+ diagnostic.
+ * src/ln.c (main): Likewise.
+ * src/mv.c (main): Likewise.
+
+ * src/cp.c (do_copy): Remove test for trailing slash, since
+ target_directory_operand now does this.
+ * src/ln.c (main): Likewise.
+ * src/mv.c (movefile): Likewise.
+
+ * src/cp.c (main): Reject multiple target directories.
+ Check whether a specified target is a directory when parsing the
+ options, using stat. This gives more-accurate diagnostics.
+ * src/ln.c (main): Likewise.
+
+ * src/ln.c (isdir): Remove decl; no longer needed.
+ * src/mv.c (isdir, lstat): Likewise.
+
+ * src/ln.c (do_link): New arg dest_is_dir. All uses changed.
+ Don't check the destination ourself; rely on dest_is_dir.
+ This way we can avoid lstatting the destination in the
+ usual case, and in the worst case we lstat 1, not 3 times.
+ Don't bother to unlink unless link failed; this saves a syscall.
+ Remove unnecessary backup_succeeded flag;
+ it was identical to "dest_backup != NULL".
+
+ * src/ln.c (main): Use int to count to argc, not unsigned int.
+ This handles negative operand counts.
+ * src/mv.c (main): Likewise.
+
+ * src/mv.c (do_move): Don't call hash_init; expect the caller to
+ do it, for consistency with cp.c and ln.c. All callers changed.
+ (movefile): dest_is_dir parameter is now bool, not int.
+ (main): Standardize on "missing destination file operand after %s"
+ for the diagnostic, for consistency with cp.c.
+
+ * tests/mv/diag: Don't assume "mv --target=nonexistentdir"
+ will complain about the arg count.
+ Adjust to new (briefer) diagnostics.
+ * tests/cp/fail-perm: Add a test to verify that we get the new
+ diagnostic when failing to copy through a symlink-to-inaccessible-dir.
+
+2004-06-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix a bug: formerly, if d/x was a directory and x a file, "ln x
+ d/" incorrectly created a link d/x/x. It also saves some system
+ calls.
+
+ * NEWS: Document the fix.
+
+ * src/ln.c (main): Don't append basename to dest if this
+ results in an existing directory name.
+ * tests/ln/misc: See whether a trailing slash is followed too far.
+
+2004-06-26 Jim Meyering <jim@meyering.net>
+
+ * src/printf.c (main): When given no arguments, print the standard
+ "missing operand\nTry printf --help..." message -- to be consistent.
+
+2004-06-26 Jim Meyering <jim@meyering.net>
+
+ * src/mknod.c (main): Add \n at the end of message output via fprintf.
+
+2004-06-25 Jim Meyering <jim@meyering.net>
+
+ * tests/ln/misc: Add test for ln subscript error.
+
+2004-06-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/ln.c (do_link): Remove unnecessary call to lstat.
+ (main): Avoid subscript error when the destination is "".
+
+2004-06-23 Jim Meyering <jim@meyering.net>
+
+ * tests/*: Replace all occurrences of `(exit N); exit' with
+ `(exit N); exit N'. Otherwise, those many tests could exit with
+ improper exit status when exiting via e.g., a trapped interrupt.
+ Thanks to a report from Bob Proulx.
+
+2004-06-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/who.c (idle_string, print_user): New arg boottime,
+ specifying the most recent boot time. All uses changed.
+ (idle_string) Consider a line to be "old" if it hasn't been used
+ since the last boot time. Watch out for overflow when computing
+ times, and for times in the future.
+ (idle_string): Record latest boot time.
+
+2004-06-22 Jim Meyering <jim@meyering.net>
+
+ * src/test.c (usage): Correct description of `-t FD'. The file
+ descriptor, FD, is no longer optional. Reported by Ton Nijkes.
+
+2004-06-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ The 2004-06-19 fix for who and pinky was incomplete, as ctime
+ has undefined behavior if the year precedes -999 or follows 9999.
+ Since we have to stop using ctime anyway, we might as well use
+ strftime and fix the FIXME, and support internationalized dates.
+
+ * NEWS: Document the new behavior.
+ * src/who.c: Include "hard-locale.h".
+ (time_format, time_format_width): New vars.
+ (time_string, print_line): Use them.
+ (main): Set them.
+ (time_string): Use localtime + strftime instead of
+ ctime, to avoid problems with years before -999 or after 9999.
+ * src/pinky.c: Likewise.
+
+2004-06-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix bug: GNU 'ls' didn't count columns correctly if user or group
+ names contained multibyte characters where the column count
+ differed from the byte count. This patch also corrects
+ some comments.
+
+ * src/ls.c (format_user_or_group): New function, which counts
+ columns correctly.
+ (format_user, format_group): Use it.
+ (format_user_or_group_width): New function, which counts columns
+ correctly.
+ (format_user_width, format_group_width): Use it.
+
+2004-06-21 Jim Meyering <jim@meyering.net>
+
+ * tests/priv-check: Quote "$PATH" in PATH=$PATH.
+ Suggestion from Andreas Schwab.
+
+ * tests/priv-check: When running as root, be sure to propagate
+ PATH through to the process we exec as non-root.
+ Reported by michael@aplatform.com.
+
+ * src/mknod.c (main): Don't segfault when calculating the
+ expected number of operands for `mknod NAME'.
+
+2004-06-20 Jim Meyering <jim@meyering.net>
+
+ * src/dd.c (input_seek_errno): Declare file-scoped variable as static.
+
+2004-06-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/basename.c (main):
+ Standardize on the diagnostics given when someone gives
+ too few operands ("missing operand after `xxx'") or
+ too many operands ("extra operand `xxx'").
+ Include "quote.h" and/or "error.h" if it wasn't already being included.
+ * src/chgrp.c (main): Likewise.
+ * src/chmod.c (main): Likewise.
+ * src/chown.c (main): Likewise.
+ * src/chroot.c (main): Likewise.
+ * src/comm.c (main): Likewise.
+ * src/cp.c (do_copy): Likewise.
+ * src/csplit.c (main): Likewise.
+ * src/date.c (main): Likewise.
+ * src/dircolors.c (main): Likewise.
+ * src/dirname.c (main): Likewise.
+ * src/du.c (main): Likewise.
+ * src/expr.c (main): Likewise.
+ * src/hostid.c (main): Likewise.
+ * src/hostname.c (main): Likewise.
+ * src/id.c (main): Likewise.
+ * src/install.c (main): Likewise.
+ * src/join.c (add_file_name, main): Likewise.
+ * src/link.c (main): Likewise.
+ * src/ln.c (main): Likewise.
+ * src/logname.c (main): Likewise.
+ * src/md5sum.c (main): Likewise.
+ * src/mkdir.c (main): Likewise.
+ * src/mkfifo.c (main): Likewise.
+ * src/mknod.c (main): Likewise.
+ * src/mv.c (main): Likewise.
+ * src/nohup.c (main): Likewise.
+ * src/od.c (main): Likewise.
+ * src/pathchk.c (main): Likewise.
+ * src/ptx.c (main): Likewise.
+ * src/readlink.c (main): Likewise.
+ * src/rm.c (main): Likewise.
+ * src/rmdir.c (main): Likewise.
+ * src/seq.c (main): Likewise.
+ * src/setuidgid.c (main): Likewise.
+ * src/shred.c (main): Likewise.
+ * src/sleep.c (main): Likewise.
+ * src/sort.c (main): Likewise.
+ * src/split.c (main): Likewise.
+ * src/stat.c (main): Likewise.
+ * src/test.c (beyond, main): Likewise.
+ * src/touch.c (main): Likewise.
+ * src/tr.c (main): Likewise.
+ * src/tsort.c (main): Likewise.
+ * src/tty.c (main): Likewise.
+ * src/uname.c (main): Likewise.
+ * src/uniq.c (main): Likewise.
+ * src/unlink.c (main): Likewise.
+ * src/uptime.c (main): Likewise.
+ * src/users.c (main): Likewise.
+ * src/who.c (main): Likewise.
+ * src/whoami.c (main): Likewise.
+
+ * tests/basename/basic: Adjust to new diagnostics.
+ * tests/du/files0-from: Likewise.
+ * tests/expr/basic: Likewise.
+ * tests/mv/diag: Likewise.
+ * tests/tsort/basic-1: Likewise.
+
+2004-06-20 Jim Meyering <jim@meyering.net>
+
+ * src/ln.c: Remove declaration of yesno.
+ Instead, include yesno.h.
+ * src/copy.c: Likewise.
+
+ * src/remove.c: Remove declaration of yesno.
+ Instead, include yesno.h.
+ (top_dir): Remove now-unnecessary cast of obstack_base.
+ (pop_dir): Likewise.
+ (full_filename_): Likewise.
+
+2004-06-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ Don't dump core if ctime returns NULL; this is possible on
+ hosts with 64-bit time_t and 32-bit int.
+ * src/who.c: Include "inttostr.h".
+ (time_string): If ctime fails, print the raw time as an integer
+ instead of dumping core.
+ * src/pinky.c: Likewise, as follows:
+ Include "inttostr.h".
+ (time_string): New function, copied from who.c.
+ (print_entry): Use it.
+
+2004-06-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/who.c (print_line): Don't truncate user names at 8 bytes.
+ Problem reported by Guido Leenders in:
+ http://lists.gnu.org/archive/html/bug-coreutils/2004-06/msg00056.html
+ * NEWS: document this.
+
+2004-06-19 Jim Meyering <jim@meyering.net>
+
+ * src/system.h (case_GETOPT_VERSION_CHAR): Switch back to
+ using GNU_PACKAGE (from PACKAGE) once again. This restores
+ `GNU' to the parenthesized package name in --version output.
+ Before, the first argument from AC_INIT, `GNU coreutils', would
+ be propagated to the PACKAGE variable. Now, `GNU ' is trimmed.
+ Reported by Richard Stallman.
+
+2004-06-17 Jim Meyering <jim@meyering.net>
+
+ * src/tr.c (to_uchar): Rename function from `uchar'. The latter
+ would clash with a typedef in Tru64's <sys/types.h>. From Albert Chin.
+
+2004-06-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Remove more special cases for POSIXLY_CORRECT when POSIX
+ allows the GNU behavior. "--" is now supported by chroot, hostid,
+ hosname, pwd, sync, yes.
+ * doc/coreutils.texi (yes invocation, false invocation,
+ true invocation): Document this.
+ * src/chroot.c (main): Handle "--".
+ * src/hostid.c (main): Likewise.
+ * src/hostname.c (main): Likewise.
+ * src/pwd.c (main): Likewise.
+ * src/sync.c (main): Likewise.
+ * src/yes.c (main): Likewise.
+ * src/true.c (main): Recognize --help and --version even if
+ POSIXLY_CORRECT is set.
+ * src/yes.c (main): Likewise.
+
+2004-06-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Remove special cases for POSIXLY_CORRECT when POSIX allows
+ the GNU behavior.
+ * doc/coreutils.texi (pr invocation, unlink invocation): Document this.
+ * src/ls.c (decode_switches): Pay attention to TABSIZE even if
+ POSIXLY_CORRECT is set. POSIX reserves upper-case environment
+ variables to the implementation, so it's OK for ls to depend on
+ TABSIZE.
+ * src/pr.c: Include "hard-locale.h".
+ (main): When in a non-POSIX locale, ignore POSIXLY_CORRECT, since
+ POSIX specifies the behavior only in the POSIX locale.
+ * src/printf.c (print_esc): Support \x, \u, \U even if POSIXLY_CORRECT,
+ since POSIX says the behavior is unspecified here.
+ * src/tail.c (parse_obsolescent_option): Support multiple file operands
+ even if POSIXLY_CORRECT, since POSIX does not require a diagnostic.
+ * src/printf.c (main): Recognize --help, --version even if
+ POSIXLY_CORRECT. POSIX does not specify any options, but it
+ does not prohibit options either, so "printf" is like "expr" here.
+ * src/unlink.c (main): Likewise.
+ * tests/misc/printf: Adjust to the new semantics for \x if
+ POSIXLY_CORRECT.
+
+2004-06-14 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/pwd: New test, for fix of 2004-04-19.
+ * tests/misc/Makefile.am (TESTS): Add pwd.
+ (BUILD_SRC_DIR): Define BUILD_SRC_DIR.
+
+ * src/copy.c: Remove declaration of euidaccess.
+ Instead, include "euidaccess.h".
+
+2004-06-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/who.c (PIDSTR_DECL_AND_INIT): Don't assume pid_t fits in int.
+ (UT_ID) [!HAVE_STRUCT_XTMP_UT_ID]: Remove bogus comment,
+ as (sizeof "??") reliably returns 3.
+ (print_line): Guard against idle and pid being too long
+ (which is possible when printing headers).
+ (print_user): Allocate enough bytes for idlestr. Use IDLESTR_LEN.
+ Avoid unnecessary cast of sizeof to int.
+ (make_id_equals_comment): Do not assume that UT_ID returns
+ a string; it might return a non-null-terminated array.
+ Use strncat instead. It's not very often where strncat is
+ exactly what you want, but this is one of those rare cases.
+
+2004-06-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/who.c (list_entries_who): Don't output a trailing space.
+
+2004-06-09 Jim Meyering <jim@meyering.net>
+
+ * src/touch.c (usage): Improve wording in description of the
+ --time=WORD option. Reported by Dan Jacobson.
+
+ * src/chown-core.c (change_file_owner): Change names of parameters
+ old_uid and old_gid to required_uid and required_gid respectively.
+
+ * src/chmod.c (mode_changed): Return false, not 0, now that the
+ function returns `bool'.
+
+2004-06-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ Adjust chmod and chown to be similar if -c or -v are given. In
+ particular, a no-op chown is no longer reported as a change; this
+ reverts to previous behavior. Also, fix both commands so that -v
+ report failures even if the failure is not due to the chmod or
+ chown syscalls.
+
+ * src/chmod.c (CH_NOT_APPLIED): New constant.
+ (describe_change): Handle it.
+ (process_file): Use it, if a symlink wasn't changed.
+ (mode_changed): Return bool, not int. Accept new argument
+ NEW_MODE; all callers changed. This lets us avoid statting the
+ file unless the new mode has unusual bits.
+ (process_file): Return -1 on error. With -v, report all errors
+ verbosely, not just some.
+
+ * src/chown-core.c (change_file_owner): Return -1 on error, not
+ 1 sometimes and -1 on others. Our caller ORs together our results,
+ and (-1 | 1) == 0 on ones-complement hosts.
+ With -v report all errors verbosely, not just some.
+ Fix bug when chopt->root_dev_ino && !chopt->affect_symlink_referent:
+ file_stats wasn't set properly in that case.
+
+ * tests/chgrp/basic: Adjust to above changes.
+
+2004-05-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/chgrp/basic: Test that chgrp -h does not fail on
+ symlinks, even on hosts where that's not supported.
+ Test that if -R is specified without -H or L, -h is assumed.
+ Test that chown() is not optimized away.
+
+2004-05-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ Several fixes to chgrp and chown for compatibility with POSIX and BSD:
+
+ Check for incompatible options. When -R and --dereference are
+ both used, then either -H or -L must also be used. When -R and -h
+ are both used, then -P must be in effect.
+
+ -H, -L, and -P have no effect unless -R is also specified.
+ If -P and -R are both specified, -h is assumed.
+
+ Do not optimize away the chown() system call when the file's owner
+ and group already have the desired value. This optimization was
+ incorrect, as it failed to updated the last-changed time and reset
+ special permission bits, as POSIX requires.
+
+ Do not report an error if the owner or group of a
+ recursively-encountered symbolic link cannot be updated because
+ the file system does not support it.
+
+ * NEWS: Document the above.
+
+ * src/chgrp.c (main): Check for incompatible options. -R --dereference
+ requires either -H or -L, and -R -h requires -P. If -H, specify
+ FTS_PHYSICAL as well as FTS_COMFOLLOW; this is faster. Make this
+ file as much like chown.c as possible.
+ * src/chown.c (main): Likewise.
+
+ * src/chown-core.c (change_file_owner): Use ent->fts_statp only if
+ needed. Chown a directory only after chowning its children; this
+ avoids problems if the new directory ownership doesn't permit
+ access to the children. Dereference symlinks before doing
+ ROOT_DEV_INO_CHECK, not after, so that we catch symlinks to /.
+ Do not optimize away the chown() system call when the file's owner
+ and group already have the desired value. POSIX does not permit
+ this optimization. Rely on chown and lchown to do the right
+ thing with symlinks and/or -1 arguments, now that we have wrappers
+ to do this. Use ENOTSUPP not ENOSYS, and ignore all ENOTSUPP
+ errors, not just command-line errors.
+ (chown_files): Pass FTS_NOSTAT to xfts_open if we don't need file status.
+
+ * src/system.h (ENOTSUP): Remove.
+
+ * tests/chgrp/basic: Use chown --from to discover whether the
+ group changed, since chgrp now changes unconditionally. This
+ complicates the sed script a bit. Do not specify --dereference,
+ since it's the default (and we want to test this). Adjust output
+ to match the fact that chgrp no longer optimizes the case of
+ changing a file's group to the same value as before.
+ * tests/chgrp/posix-H: Do not attempt to combine -h and -H; these
+ options are incompatible, and their behavior is undefined with POSIX.
+ (changed, not_changed): Adjust to match the fact that -h is no longer
+ specified. Sort names.
+ * tests/chown/deref: Adjust error-diagnostic spelling to match new
+ behavior.
+
+2004-06-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/uname.c (main): Fix typo introduced on 2003-05-10 that
+ prevented a diagnostic of any operands.
+
+2004-06-08 Jim Meyering <jim@meyering.net>
+
+ * src/shred.c (direct_mode): Turn it on/off with directio, too.
+
+2004-06-07 Jim Meyering <jim@meyering.net>
+
+ Enable direct-mode I/O (bypassing the buffer cache), if possible.
+ Prompted by a suggestion from Kalle Olavi Niemitalo
+ in http://bugs.debian.org/207035.
+ * src/shred.c (direct_mode): New function.
+ (do_wipefd): Turn on direct-mode I/O.
+ (dopass): If a file's first write fails with EINVAL,
+ turn off direct-mode I/O and retry the write.
+
+2004-06-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/tr.c (main): "tr -d a b" is now a fatal error even if
+ POSIXLY_CORRECT is set. The POSIX SYNOPSIS does not allow this
+ option combination.
+
+2004-06-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/shred.c (dopass): Don't subtract 1 from the offset after
+ a write error. Problem reported by Jon Peatfield in:
+ http://lists.gnu.org/archive/html/bug-coreutils/2004-06/msg00020.html
+
+2004-06-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix bug reported by Buciuman Adrian in
+ <http://mail.gnu.org/archive/html/bug-coreutils/2003-08/msg00105.html>
+ where 'dd' created a file that was too large. The bug was that dd
+ assumed that the input file offset does not advance after a failed
+ read; but POSIX says that the input file offset is undefined after
+ a failed read.
+
+ * src/dd.c (MAX_BLOCKSIZE): New macro.
+ (input_seekable, input_seek_errno, input_offset,
+ input_offset_overflow): New vars.
+ (scanargs): Reject block sizes greater than MAX_BLOCKSIZE.
+ (advance_input_offset): New function.
+ (skip_via_lseek): Set errno to zero when reporting our failure,
+ so that we don't report based on garbage errno.
+ (skip): If fdesc is standard input, advance the input offset.
+ Do not quit if reading, and if noerror was specified;
+ POSIX seems to require this.
+ If read fails on output file, report the earlier lseek failure
+ instead; this fixes a FIXME in dd_copy.
+ (advance_input_after_read_error): New function.
+ (dd_copy): Use it, instead of assuming that failed reads
+ do not advance the file pointer. Advance input offset
+ after nonfailed reads. Advance only a partial block if
+ the previous read (before the failed read) succeeded, and
+ do not generate an output block of zeros in this case.
+ (main): Determine initial input offset, seekability of input,
+ and error if it wasn't seekable.
+
+2004-06-02 Jim Meyering <jim@meyering.net>
+
+ rm (without -f) could hang unnecessarily when attempting to
+ remove a symlink to a file on an off-line NFS-mounted partition.
+ Reported by David Howells in https://bugzilla.redhat.com/124699.
+ * src/remove.c (write_protected_non_symlink): New function.
+ Don't invoke euidaccess on symlinks.
+ (prompt): Use write_protected_non_symlink rather than using
+ euidaccess directly, being careful not to call lstat twice for a file.
+
+ Fix a bug in how the --output-delimiter=D option works with
+ abutting byte or character ranges. Reported by David Krider in
+ http://lists.gnu.org/archive/html/bug-coreutils/2004-05/msg00132.html
+ * src/cut.c (print_kth): Remove special case for open-ended range.
+ (set_fields): Record the range start index for an interval even
+ when it abuts another interval on its low side.
+ Also record the range start index of the longest right-open-interval.
+ * tests/cut/Test.pm: Add tests of --output-delimiter=S with
+ abutting and overlapping byte ranges.
+
+2004-06-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ Some POSIX-conformance cleanups for tr.
+
+ * src/tr.c (posix_pedantic): Remove; no longer needed since
+ we need to test this in just one place now.
+ (usage): Mention -C.
+ (unquote): Note that \055, \n, etc are escaped.
+ Do not worry about POSIXLY_CORRECT when warning about ambiguous
+ escape sequences.
+ \ at end of string stands for itself.
+ Do not diagnose invalid backslash escapes: POSIX says the behavior
+ is unspecified in this case, so we don't need to diagnose it.
+ (main): Add support for -C (currently an alias for -c).
+ Do not diagnose 'tr [:upper:] [:upper:], as POSIX does not require
+ a diagnostic here.
+ * tests/tr/Test.pm: New tests bs-055, bs-at-end, repeat-Compl.
+ Fix comment for range-a-a.
+
+2004-05-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ Improve the efficiency (and in one case, correctness) of code
+ that reads symlinks.
+
+ * src/copy.c (copy_internal): Don't use alloca, as it can mess up
+ royally if the link length is long (e.g., GNU/Hurd). Use
+ xreadlink instead, it's safer. Don't bother to read the link if
+ it's the wrong size. Add a FIXME because this area is a bit murky
+ and undocumented.
+ * src/ls.c (get_link_name): Update use of xreadlink.
+ * src/readlink.c (main): Likewise.
+ * src/stat.c (print_stat): Likewise.
+
+2004-06-01 Jim Meyering <jim@meyering.net>
+
+ * src/env.c (main): Prefer the notation `STREQ (a, b)'
+ over `!strcmp (a, b)'.
+ * src/sort.c (main, sort_buffer_size): Prefer the notation
+ `STREQ (a, b)' over `strcmp (a, b) == 0'.
+ * src/date.c (batch_convert): Likewise.
+ * src/expr.c (nextarg): Likewise.
+ * src/su.c (correct_password, restricted_shell, main): Likewise.
+ * src/ptx.c (swallow_file_in_memory, main): Likewise.
+ * src/test.c (binary_operator, and, or, main): Likewise.
+
+2004-05-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: echo compatibility cleanup.
+ * doc/coreutils.texi (echo invocation): Document the changes.
+ * src/echo.c (V9_ECHO): Remove; always enabled.
+ (DEFAULT_ECHO_TO_XPG): Renamed from V9_DEFAULT, so that
+ we use the same naming convention as bash. Now an enum,
+ not a macro.
+ (usage): Reword to mention -e/-E more accurately.
+ Mention \0NNN (the POSIX syntax) rather than \NNN (nonstandard).
+ (hextobin): New function.
+ (main): Use bool rather than int for local vars when appropriate.
+ Do not allow options if POSIXLY_CORRECT, unless we are using
+ BSD semantics and the first argument is "-n".
+ Don't pass unnecessary extra arg to parse_long_options.
+ do_v9 now defaults to DEFAULT_ECHO_TO_XPG, not to allow_options.
+ Do not look for options if !allow_options.
+ Use size_t rather than int when appropriate.
+ Open-code option test rather than using strrchr.
+ Use faster test for "-".
+ Avoid redundant argc test.
+ Add support for \x, for Bash compatibility.
+ Use e.g. '\a' rather than '\007', for portability to EBCDIC hosts.
+ When '\c' is encountered, stop printing immediately, as POSIX
+ requires.
+ Add support for \xhh syntax.
+ Add support for \0ooo syntax; POSIX requires this.
+
+2004-06-01 Jim Meyering <jim@meyering.net>
+
+ * Use automake-1.8b. Regenerate dependent files.
+
+2004-05-31 Jim Meyering <jim@meyering.net>
+
+ * tests/Makefile.am.in (TESTS_ENVIRONMENT): Define PATH to include
+ the build src/ directory -- at the front.
+ ($(srcdir)/$x-tests): Depend on Makefile.am.
+ Use $x as the program name, except when it would be `test' (test is
+ the sole program tested via mk-script that is also a shell built-in).
+ In that case, use the old ../../src/$x.
+
+2004-05-30 Jim Meyering <jim@meyering.net>
+
+ Work around HPUX /bin/cc compiler bug that is exposed, now that
+ sets are arrays of type `bool'. More details here:
+ http://lists.gnu.org/archive/html/bug-gnulib/2004-05/msg00094.html
+ FIXME: verify that the above URL points to the right message
+
+ * src/tr.c (card_of_complement): Use cleaner `sizeof in_set'
+ rather than `N_CHARS * sizeof(in_set[0])'. Using HPUX's /bin/cc
+ (aC++/ANSI C B3910B A.05.55 [Dec 04 2003]) on an ia64-hp-hpux11.22
+ system, those two expressions are not the same (256 vs. 1024).
+ The effect of this problem was that `tr -c x y' would fail:
+ tr: when not truncating set1, string2 must be non-empty
+ (set_initialize): Remove unnecessary initialization of the `in_set'
+ buffer; that initialization triggered the same compiler bug as above.
+
+2004-05-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ tr cleanup, mostly having to do with integer type ranges.
+ Remove all casts.
+
+ * tests/tr/Test.pm: Add a few tests for the below. Alas, most of
+ the test cases wouldn't be portable, or would take too much CPU
+ time, or both.
+
+ * src/tr.c (N_CHARS, N_CHAR_CLASSES): Now an enum, not a macro.
+ This is safe since the code already assumes N_CHARS fits in int.
+ (Filter): Remove: we want to prototype everything.
+ (ORD, CHR): Remove. All uses removed. Some replaced with:
+ (uchar): New function. All places where a char must be converted
+ to an unsigned char are now done this way, not by ad-hoc methods.
+ (count): New type. Use it whenever counts or states are needed.
+ (BEGIN_STATE): Increase from INT_MAX - 1 (which was bogus, anyway,
+ since we used it in an unsigned int context) to UINTMAX_MAX - 1.
+ (REPEAT_COUNT_MAXIMUM): New macro. Use it in place of BEGIN_STATE
+ whenever appropriate.
+ (NOT_A_CHAR): Remove global macro; now a local enum.
+ (UL_LOWER, UL_UPPER, UL_NONE): No longer specify values, since
+ the rest of the code no longer depends on them.
+ (class_ok): Remove; all uses changed to use inline comparisons.
+ (RE_NO_TYPE): Remove; wasn't used or needed.
+ (struct List_element): normal_char and equiv_code are now unsigned
+ char, not int.
+ first_char, last_char, and the_repeated_char are now unsigned char,
+ not unsigned int. repeat_count is now count, not size_t.
+ All uses changed.
+ (struct Spec_list): state is now count, not unsigned int.
+ lengthis now count, not size_t.
+ n_indefinite_repeats is now size_t, not int.
+ has_equiv_class, has_char_class, and has_restricted_char_class
+ are now bool, not int. All uses changed.
+ (struct E_string): s is now char *, not unsigned char *.
+ escaped is now bool *, not int *. All uses changed.
+ (ES_MATCH): Remove macro, replacing with:
+ (es_match): New inline function. All uses changed.
+ (squeeze_repeats, complement, posix_pedantic, truncate_set1,
+ translating): Now bool, not int.
+ (io_buf): Now char array, not unsigned char.
+ (SET_TYPE): Remove. All uses replaced with bool.
+ (is_equiv_class_member, unquote, append_range, append_char_class,
+ append_equiv_class, find_closing_delim, star_digits_closebracket,
+ build_spec_list, parse_str, homogeneous_spec_list):
+ Now returns bool, not int. All uses changed.
+ (is_equiv_class_member): Now inline.
+ (is_equiv_class_member, is_char_class_member, make_printable_str,
+ append_normal_char, append_range, append_repeated_char,
+ get_s2_spec_stats):
+ Args are now of proper integer type.
+ (unquote, look_up_char_class, make_printable_str,
+ append_equiv_class, build_spec_list, squeeze_filter):
+ Avoid unsigned char *p; gently convert *p to unsigned char instead.
+ (unquote, get_spec_stats): Do not jump past declarations and then
+ use them; C doesn't allow this in portable programs.
+ (make_printable_str): Check for overflow in size calculations.
+ (xmemdup): Remove. All uses rewritten.
+ (find_bracketed_repeat): Args are now of proper pointer-to-integer
+ type. Do not reject [c*0]. Use xstrtoumax, not xstrtoul.
+ (find_bracketed_repeat, star_digits_closebracket): Check that the
+ digits are not escaped.
+ (build_spec_list): Don't bother to copy opnd_str; not needed.
+ (build_spec_list, get_next): Simplify internal logic a bit.
+ (card_of_complement): Fix bug due to char overflow.
+ (get_spec_stats): Don't assume len fits into int.
+ Check for integer overflow. Use abort() rather than assert(0).
+ (string2_extend): Fix subscript error: is_char_class_member (..., 255)
+ was being invoked.
+ (squeeze_filter): READER is never null now; simplify code.
+ READER arg now has a simpler type. Remove unnecessary casts.
+ (squeeze_filter, main): Calls to fwrite improperly checked result
+ against zero, rather than against requested size.
+ (plain_read): New function.
+ (read_and_delete, read_and_xlate):
+ Remove unused filter arg, and don't worry about hit_eof.
+ Simplify by using plain_read.
+ (set_initialize): Args are bool and bool *, not int and SET_TYPE *.
+ (main): Always pass a non-null procedure to squeeze_filter.
+ Rewrite so that class_ok isn't needed.
+
+2004-05-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/shred.c (dosync): Ignore EBADF errors, as IRIX 6.5
+ fdatasync reports EBADF when syncing (unwritable) directories.
+ Problem reported by Albert Chin-A-Young in:
+ http://lists.gnu.org/archive/html/bug-coreutils/2004-05/msg00165.html
+
+2004-05-29 Jim Meyering <jim@meyering.net>
+
+ * tests/chown/deref: Fix typo: use ls -ldo, not ls -ldg.
+ Patch from Albert Chin.
+
+ * src/ptx.c (text_buffer_maxend): Remove declaration of unused variable.
+
+ * src/remove.c (push_dir): Merge declaration and adjacent assignment
+ into a single statement.
+
+2004-05-28 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (AD_mark_helper): Eliminate an unnecessary comparison.
+
+2004-05-22 Jim Meyering <jim@meyering.net>
+
+ rm -r would get a failed assertion when run from an inaccessible
+ directory and with two or more command line arguments including an
+ absolute-named directory followed by a relative-named directory.
+
+ * src/remove.h (struct rm_options) [require_restore_cwd]: New member.
+ * src/remove.c (struct cwd_state): Define.
+ (AD_pop_and_chdir): Redesign interface so that a restore_cwd failure
+ can be detected by the caller. Instead of returning a malloc'd
+ directory name, communicate it to caller via a new parameter, and
+ return an indication of whether restore_cwd failed. Update caller.
+ Eliminate an unnecessary call to AC_stack_top.
+ (remove_dir): Change type of cwd_state parameter to `struct cwd_state'
+ so we can now communicate to caller whether/how functions like
+ restore_cwd have failed. Update caller.
+ (rm_1): Fail if we've failed to restore the working directory
+ and the name of the next file to remove is `.'-relative.
+ (rm): Fail if the require_restore_cwd flag is true and we've
+ failed to restore the working directory.
+ * src/mv.c (rm_option_init): Initialize new member,
+ x->require_restore_cwd.
+ * src/rm.c (rm_option_init): Likewise.
+
+2004-05-21 Jim Meyering <jim@meyering.net>
+
+ * tests/rm/inaccessible: New test for the above fix.
+ * tests/rm/Makefile.am (TESTS): Add inaccessible.
+
+ * src/remove.c (rm): Use free rather than XFREE.
+ (remove_dir): Use xmalloc, not XMALLOC.
+ (ds_init): Likewise.
+
+2004-05-20 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (sc_unmarked_diagnostics): Now that the unmarked
+ diagnostics in shred.c have been fixed, don't exempt shred.c from
+ this check.
+
+ * src/shred.c: Use translatable diagnostics, e.g.
+ change "%s: remove" to _("%s: failed to remove") and
+ change "%s: close" to _("%s: failed to close").
+
+2004-05-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/shred.c (names): Bring back lower-case letters, "_", and
+ ".". But continue to omit +, =, %, @, #, as they're either
+ shell metacharacters (for some shells) or are not in some
+ character sets, or (in the case of '%') must be a
+ metacharacter somewhere.
+
+2004-05-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/cut.c (cut_fields): Adjust to new signature of getndelim2.
+
+2004-05-17 Jim Meyering <jim@meyering.net>
+
+ * src/shred.c (incname): Decrement `len' only once per loop iteration.
+
+ chgrp and chown now dereference symlinks by default, per POSIX.
+ Reported by Michal Politowski as http://bugs.debian.org/249177.
+
+ * src/chown-core.c (chopt_init): Affect each symlink referent by default.
+ * src/chown.c (usage): Update to reflect this.
+ * src/chgrp.c (usage): Likewise.
+ * NEWS: Describe the change.
+ Adapt tests accordingly.
+ * tests/chgrp/basic: Use -h where necessary to retain semantics.
+ * tests/chgrp/deref: Likewise.
+ * tests/chgrp/posix-H: Likewise.
+
+2004-05-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ In shred, check for errors from fdatasync more carefully. If
+ fdatasync fails with errno==EINVAL, it means this implementation
+ does not support synchronized I/O for this file. Do not report
+ this as an error, as (for example) AIX 5.2 fdatasync reports it
+ for raw disk devices. Problem reported by Albert Chin in
+ <http://mail.gnu.org/archive/html/bug-gnu-utils/2004-05/msg00028.html>.
+
+ Check for write errors, though: the old code ignored them.
+ Improve error checking in a few other cases, too (e.g., close of a
+ directory).
+
+ Also, change several 'int' values to 'bool', so that the error
+ checking is a bit clearer. Similarly, change unsigned values
+ to size_t where appropriate.
+
+ * src/shred.c: Include "dirname.h".
+ (datasync) [!HAVE_FDATASYNC]: Remove.
+ (dosync): New function.
+ (dopass): Use it. Return 1 on write error, -1 on other error.
+ All callers changed. Report write error if dosync does.
+ (do_wipefd, wipefd, wipename, wipefile): Return bool (true/false),
+ not int (0/-1). All callers changed. Return false if there's a
+ write error.
+ (incname): Return bool (true/false), not int (0/1). Accept
+ size_t length, not unsigned. All callers changed. Do not
+ bother checking for non-digits; it can't happen. Replace
+ recursion with iteration.
+ (wipename): Use dir_name, base_name, etc. instead of assuming
+ Unix file names. Use size_t for length, not unsigned.
+ Report error if unlink or close fails.
+ (wipename, main): Use bool for booleans.
+
+ (names): Use only digits and uppercase letters, for greater
+ portability.
+
+2004-05-16 Jim Meyering <jim@meyering.net>
+
+ * tests/chown/deref: New test for the yesterday's change.
+ * tests/chown/Makefile.am (TESTS): Add deref.
+
+2004-05-15 Jim Meyering <jim@meyering.net>
+
+ chown --dereference did nothing when the owner/group of a
+ symlink matched the desired owner/group. Reported by David Malone.
+ Also reported in 1999 as http://bugs.debian.org/39642.
+
+ * src/chown-core.c (change_file_owner): When --dereference has
+ been specified, and when processing a symlink, stat it to get the
+ owner and group of the referent.
+
+2004-05-14 Jim Meyering <jim@meyering.net>
+
+ * man/pwd.x, man/echo.x, man/printf.x: Fix typo:
+ s/supercede/supersede/ reported by Andrew Fabbro.
+
+2004-05-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ Improve performance of `sort -m' on large files, at the cost of
+ making some contrived examples unsafe. POSIX allows this
+ optimization. Performance problem reported by Jonathan Baker in
+ <http://mail.gnu.org/archive/html/bug-coreutils/2004-05/msg00071.html>.
+
+ * src/sort.c (first_same_file): Do not treat input pipes
+ differently from other files.
+ * doc/coreutils.texi (sort invocation): Document that "sort -m -o F"
+ might write F before reading all the input.
+ * NEWS: Likewise.
+
+2004-05-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/od.c (print_ascii, dump_strings): Use e.g. '\a' rather than
+ '\007', for portability to EBCDIC hosts.
+ * src/printf.c (print_esc_char): Likewise.
+ * src/tr.c (unquote, make_printable_str): Likewise.
+
+2004-05-12 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (AD_pop_and_chdir): Move lstat-`.' into if-block
+ where the result is used. This avoids one unnecessary lstat call
+ per command line argument.
+
+2004-05-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ Don't assume that "make -C" works; Solaris "make" doesn't have -C.
+
+ * src/Makefile.am (all_programs.list): New rule, copied from
+ man/Makefile.am and tests/Makefile.am, except that we use the
+ system tr rather than ./tr and we don't use tr -s.
+ * tests/Makefile.am (all_programs): Use it.
+ * man/Makefile.am (all_programs): Likewise. Renamed from programs,
+ for consistency. All uses changed.
+
+2004-05-11 Jim Meyering <jim@meyering.net>
+
+ * tests/rm/unread3: New test, for the above fix and today's
+ lib/save-cwd.c improvement.
+ * tests/rm/Makefile.am (TESTS): Add unread3.
+
+ * src/rm.c: Don't include "save-cwd.h". It's no longer used.
+
+2004-05-10 Jim Meyering <jim@meyering.net>
+
+ * tests/install/trap: New file. Test for bug fix of 2004-04-18.
+ * tests/install/Makefile.am (TESTS): Add trap.
+
+ * src/remove.c (AD_push): Don't use errno in diagnostic about
+ `changed dev/ino'.
+
+ Remove these generated files from CVS.
+ * tests/cut/cut-tests, tests/date/date-tests, tests/join/join-tests:
+ * tests/ls/ls-tests, tests/pr/pr-tests, tests/tac/tac-tests:
+ * tests/tail/tail-tests, tests/test/test-tests, tests/tr/range-tests:
+ * tests/tr/tr-tests, tests/wc/wc-tests:
+
+2004-05-09 Jim Meyering <jim@meyering.net>
+
+ * src/tr.c (unquote): Use xcalloc rather than xmalloc and
+ a loop initializing the just-allocated memory to zero.
+
+2004-05-08 Jim Meyering <jim@meyering.net>
+
+ * tests/rm/no-give-up: New file; check for today's fix.
+ * tests/rm/Makefile.am (TESTS): Add no-give-up.
+
+2004-05-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix bug where "rm" gave up too easily, reported by Dan Jacobsen in
+ <http://mail.gnu.org/archive/html/bug-coreutils/2004-05/msg00013.html>.
+
+ * src/remove.c (remove_entry): Check for errno values like ENOENT
+ that show the file cannot be directory, instead of for errno
+ values like EPERM that show the file might be a directory. This
+ is necessary because, when a single unlink() call has multiple
+ reasons to fail, it can set errno to any of those reasons; it's
+ only the rare errno value like ENOENT that excludes all the other
+ possible reasons to fail even when the file is a directory.
+ (remove_cwd_entries): Don't attempt chdir if the file is known
+ to not be a directory.
+ (remove_dir): Use the same method that remove_cwd_entries uses
+ (for some reason they differed). Don't assert that saved_errno
+ must be EPERM; it might be just about anything.
+
+2004-05-06 Jim Meyering <jim@meyering.net>
+
+ * src/id.c (xgetgroups): Use xnmalloc, rather than xmalloc.
+ Don't add `1' to the buffer size (it was to protect against malloc
+ implementations that fail to allocate a buffer of size zero).
+ That is no longer necessary, since we use a malloc wrapper
+ on such systems.
+
+ * src/wc.c (get_input_fstatus): Use xnmalloc, rather than xmalloc.
+ * src/head.c (elide_tail_bytes_pipe): Likewise.
+ * src/df.c (main): Likewise.
+ * src/shred.c (do_wipefd): Likewise.
+ * src/users.c (list_entries_users): Likewise.
+ * src/tail.c (main): Likewise.
+ * src/md5sum.c (main): Likewise.
+
+2004-04-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/df.c (show_disk, show_point): If several filesystems are
+ mounted on the same mount point, prefer the last one, not the first.
+ Problem reported by Christian Jones in
+ <http://mail.gnu.org/archive/html/bug-coreutils/2004-04/msg00200.html>.
+ (show_disk): Remove unused statp arg. Return bool, not int.
+ (show_point): Rewrite to avoid gotos. Use the same algorithm
+ for lofs and dummies for each pass through the mount table,
+ rather than subtly different algorithms (which are probably
+ inadvertent).
+
+2004-05-03 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (EXTRA_DIST): Add m4/ChangeLog, now that we no longer
+ have m4/Makefile*.
+
+2004-05-01 Jim Meyering <jim@meyering.net>
+
+ When chown or chgrp is modifying the referent of a symlink,
+ use the chown(2) function, if possible.
+ * src/chown-core.c (change_file_owner): Don't hard-code the
+ open/fchown/close kludge here. Use `chown' instead.
+ The chown function works just fine on conforming systems.
+ Other systems now go through the new chown wrapper that
+ resorts to the old kludge.
+
+ * src/chown-core.c (change_file_owner): Add a comment.
+
+2004-04-27 Jim Meyering <jim@meyering.net>
+
+ * src/ptx.c: Make over 40 global extern variables `static'.
+ (syntax_table, re_syntax_table): Remove declarations of two unused
+ variables (they were exposed by the above change).
+
+ * src/du.c (G_fail, opt_nul_terminate_output): Declare `static'.
+ * src/ln.c (backup_type): Likewise.
+
+ * src/remove.c (rm): Add `extern' keyword.
+ * src/cp-hash.c (forget_created, remember_created)
+ (src_to_dest_lookup, remember_copied, hash_init, forget_all): Likewise.
+ * src/copy.c (dest_info_init, src_info_init, copy): Likewise.
+ * src/chown-core.c (chopt_init, chopt_free, gid_to_name)
+ (uid_to_name, chown_files): Likewise.
+
+ * src/Makefile.am (sc_tight_scope): New rule.
+ * Makefile.maint (sc_tight_scope): New rule.
+ (syntax-check-rules): Add it.
+
+2004-04-26 Jim Meyering <jim@meyering.net>
+
+ * Use automake-1.8.4. Regenerate dependent files.
+
+ * src/sort.c (limfield): Make a comment clearer.
+
+2004-04-25 Paul Eggert <eggert@twinsun.com>
+
+ Fix POSIX-conformance bug: "sort -k 3,3.5b" is supposed to skip
+ leading blanks when computing the location of the field end;
+ it is not supposed to skip trailing blanks. Solaris 8 "sort"
+ does conform to POSIX. Also fix the documentation to clarify
+ this and related issues.
+
+ * doc/coreutils.texi (sort invocation): Mention -k earlier, so
+ that the options are in alphabetical order. Describe how -b works
+ more-accurately; this involves fixing some examples, too. Mention
+ what happens if the start field falls after an end field or after
+ a line end. Warn about using -k without -b, -g, -M, -n, or -t.
+ Add an example of how to sort IPv4 addresses and Apache Common
+ Log Format dates. Remove a duplicate example.
+ (Putting the tools together): Use separate options rather
+ than agglomerating them.
+ * src/sort.c (limfield): Use skipeblanks, not skipsblanks, to
+ decode whether to skip leading blanks.
+ (trailing_blanks): Remove.
+ (fillbuf, getmonth, keycompare): Don't trim trailing blanks.
+
+ * tests/pr/Test.pm: Fix typo in env_default comment.
+ * tests/sort/Test.pm: Likewise.
+ (18c, 18d): Reverse the order of output lines, so that the
+ test cases conform to POSIX.
+
+2004-04-22 Paul Eggert <eggert@twinsun.com>
+
+ More signal-handling cleanup for ls.c. Do not allow signals to
+ happen between arbitrary output bytes, as the
+ restore-default-color sequence can bollix up multibyte chars or
+ color-change sequences in the ordinary output. Instead, process
+ signals only between printing a file name and changing the color
+ back to non_filename_text color. That way, if the signal handler
+ changes the color (to the default), 'ls' will change it back when
+ 'ls' continues (after being suspended).
+
+ Also, do not bother with signal-handling unless stdout is a
+ controlling terminal; this lets stdio buffer better when "ls
+ --color" is piped or sent to a file.
+
+ * src/ls.c (sigprocmask, sigset_t) [!defined SA_NOCLDSTOP]: New macros.
+ Do not include "full-write.h"; no longer needed.
+ (tcgetpgrp) [! HAVE_TCGETPGRP]: New macro.
+ (put_indicator_direct): Remove. All callers changed to use
+ put_indicator.
+ (caught_signals, interrupt_signal, stop_signal_count): New vars.
+ (restore_default_color): Don't bother checking for put_indicator
+ failure.
+ (sighandler): Don't handle SIGTSTP; that's another handler now.
+ Simply set interrupt_signal to the signal, then exit.
+ (stophandler, process_signals): New functions.
+ (main): Don't output any color changes until _after_ the signal
+ handlers are set up. This fixes a race condition where 'ls'
+ could be interrupted while initializing colors, and leaving the
+ terminal in an undesirable state.
+ Don't mess with signal-handling if standard output is not a
+ controlling terminal.
+ When exiting, restore the default color, then restore the
+ default signal handling, then act on any signals that weren't
+ acted on yet.
+ Do not print //DIRED// etc. in colors; this avoids the need
+ to catch signals when printing them.
+ (print_name_with_quoting): Process signals just before switching
+ color back to non_filename_text.
+
+2004-04-23 Jim Meyering <jim@meyering.net>
+
+ Avoid segfault on systems for which SIZE_MAX != (size_t) -1.
+ * src/ls.c (quote_name): Use SIZE_MAX, not -1, in calls
+ of quotearg_buffer. Patch by Mikulas Patocka.
+
+2004-04-18 Paul Eggert <eggert@twinsun.com>
+
+ tee ignored SIGPIPE, but POSIX doesn't allow this.
+
+ * src/tee.c (main): Do not ignore SIGPIPE, as POSIX 1003.1-2001
+ does not allow this. This undoes the 1996-10-24 patch.
+
+2004-04-18 Paul Eggert <eggert@twinsun.com>
+
+ Signal-handling cleanup for coreutils. Here are the highlights:
+
+ - csplit sometimes failed to remove files when interrupted.
+ - csplit didn't clean up if two signals arrived nearly simultaneously.
+ - install -s would infloop on System V if SIGCHLD was ignored.
+ - ls could incorrectly restore color if multiple signals
+ arrived nearly simultaneously.
+
+ * src/csplit.c (sigprocmask, sigset_t) [!defined SA_NOCLDSTOP]:
+ Define.
+ (filename_space, prefix, suffix, digits, files_created, remove_files):
+ Now volatile.
+ (caught_signals): New var.
+ (cleanup): Block signals while deleting all files.
+ (cleanup_fatal, handle_line_error, regexp_error):
+ Mark with ATTRIBUTE_NORETURN.
+ (create_output_file, close_output_file, interrupt_handler):
+ Block signals while changing the number of output files,
+ to fix some race conditions.
+ (delete_all_files): Do nothing if remove_files is zero.
+ Clear files_created.
+ (main): Don't mess with signals until after argument processing
+ is done.
+
+ * src/csplit.c (main): Rewrite signal-catching code to make it
+ similar to other coreutils programs. When processing signals,
+ block all signals that we catch, but do not block signals that we
+ don't catch. Avoid problems with unsigned int warnings.
+ * src/ls.c (main): Likewise.
+ * src/sort.c (main): Likewise.
+
+ * src/csplit.c (interrupt_handler):
+ Use void, not (obsolete) RETSIGTYPE.
+ * src/shred.c (sigill_handler, isaac_seed_machdep): Likewise.
+
+ * src/csplit.c (interrupt_handler) [defined SA_NOCLDSTOP]:
+ Use simpler "signal (sig, SIG_DFL)" rather than sigaction equivalent.
+ * src/ls.c (sighandler) [defined SA_NOCLDSTOP]: Likewise.
+ * src/sort.c (sighandler) [defined SA_NOCLDSTOP]: Likewise.
+ * src/nohup.c (main) [!defined _POSIX_SOURCE]: Likewise, except
+ for SIG_IGN.
+ * src/tee.c (main) [!defined _POSIX_SOURCE]: Likewise.
+
+ * src/install.c: Include <signal.h>.
+ (main) [defined SIGCHLD]: Set SIGCHLD handler to the default, if -s is
+ given, since System V fork+wait does not work if SIGCHLD is ignored.
+
+ * src/ls.c (sighandler) [!defined SA_NOCLDSTOP]: Reset signal
+ handler to self, not to SIG_IGN, since SIGTSTP can be received
+ more than once.
+ (main): Use SA_RESTART, as that is simpler than checking for EINTR
+ failures all over the place.
+
+2004-04-20 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (is_empty_dir): Clarify comment.
+
+ * man/help2man: Accept new option: --program-name=NAME, so that we
+ can override the one in --version output. This is needed solely
+ so that test.1 doesn't refer to `[' as the program name.
+ Reported by Benjamin Cutler as http://bugs.debian.org/205251.
+ * man/Makefile.am (.x.1): Use help2man's new --program-name option.
+
+ * src/pwd.c: Don't include pathmax.h; system.h already does it.
+
+ * src/cut.c (cut_fields): Free buffer upon getndelim2 failure.
+
+2004-04-19 Jim Meyering <jim@meyering.net>
+
+ * src/shred.c (isaac_seed_start) [AVOID_USED_UNINITIALIZED_WARNINGS]:
+ Initialize a buffer to avoid warnings from tools like valgrind.
+
+ * Makefile.maint (sc_trailing_blank): New rule.
+ (syntax-check-rules): Add it.
+ * .x-sc_trailing_blank: New file.
+
+ Make pwd work even if the resulting name is so long that getcwd fails.
+ * src/pwd.c: (path_free, path_init, path_prepend): New functions.
+ (nth_parent, find_dir_entry, robust_getcwd): New functions.
+ (main): First try getcwd, then, upon failure, robust_getcwd.
+
+2004-04-18 Jim Meyering <jim@meyering.net>
+
+ * src/who.c (print_user): Use xrealloc here, rather than
+ unchecked realloc. Remove anachronistic casts.
+
+ * src/remove.c (full_filename_): Don't leak upon failed realloc.
+
+ * src/system.h (readdir_ignoring_dot_and_dotdot): New inline function,
+ from remove.c.
+ * src/remove.c (readdir_ignoring_dotdirs): Move function to system.h,
+ renaming it. Update uses.
+
+2004-04-17 Jim Meyering <jim@meyering.net>
+
+ * configure.ac: Depend on automake-1.8.3.
+
+ * src/join.c (add_file_name): Declare function to be `static'.
+ (string_to_join_field): Likewise.
+ * src/remove.c (ds_init, ds_free): Likewise.
+
+ * Makefile.maint (sc_prohibit_jm_in_m4): New rule.
+ (syntax-check-rules): Add to the list.
+
+2004-04-13 Paul Eggert <eggert@twinsun.com>
+
+ Use page-aligned buffers whenever we bother to do I/O using buffer
+ sizes that are tailored for the files.
+
+ * src/cat.c: Include getpagesize.h.
+ * src/copy.c: Likewise.
+ * src/shred.c: Likewise.
+ * src/split.c: Likewise.
+ * src/cat.c (main): Align I/O buffers to page boundaries.
+ * src/copy.c (copy_reg): Likewise.
+ * src/shred.c (dopass): Likewise.
+ * src/split.c (main): Likewise.
+ * src/dd.c (ROUND_UP_OFFSET, PTR_ALIGN): Remove.
+ All uses replaced by ptr_align.
+ * src/od.c (gcd, lcm): Remove; now in system.h.
+ * src/system.h (gcd, lcm, ptr_align): New functions, moved from od.c.
+
+2004-04-14 Jim Meyering <jim@meyering.net>
+
+ Remove m4/Makefile.am: it's no longer needed, with newer automake
+ * configure.ac (AC_CONFIG_FILES): Remove m4/Makefile.in from the list.
+ * Makefile.am (SUBDIRS): Remove `m4' from the list.
+
+2004-04-13 Jim Meyering <jim@meyering.net>
+
+ * configure.ac: Change `jm_' in AC_DEFINE'd names to `gl_'.
+
+2004-03-27 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS: cp -pu and mv -u (when copying) now take the destination
+ file system time stamp resolution into account.
+ * doc/coreutils.texi (mv invocation): Document this.
+ (cp invocation): Document -u (it was missing!) with new behavior.
+
+ * src/copy.c: Include "utimecmp.h".
+ (copy_internal): Compare time stamps using utimecmp rather than
+ MTIME_CMP.
+
+2004-04-09 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (.re-list): New rule/file, to replace
+ hard-coded list of header file names.
+ (sc_system_h_headers): Use the new file.
+ Don't look for sys2.h anymore.
+
+ * src/system.h: Include new "stat-macros.h" rather than hard-coding
+ all of its macro definitions -- the list was slightly out of date.
+ Suggestion from Dmitry V. Levin.
+
+2004-04-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Remove noctty flag from dd. Suggested by Philippe Troin.
+ * doc/coreutils.texi (dd invocation): Likewise.
+ * src/shred.c (O_NOCTTY): Remove redundant decl.
+ * src/dd.c (flags, usage): Remove noctty flag.
+ (main): Always use O_NOCTTY when opening files.
+
+2004-04-08 Jim Meyering <jim@meyering.net>
+
+ * src/dd.c (dd_copy): Mark two diagnostics for translations.
+ (set_fd_flags): Undo part of today's change: it's a little
+ cleaner -- and more efficient in the common case -- to go
+ ahead and OR in the -1 when fcntl fails.
+
+ * Makefile.maint (sc_dd_max_sym_length): New target.
+ (syntax-check-rules): Add it.
+
+ * src/md5sum.c (PROGRAM_NAME) [algorithm == ALG_SHA1]:
+ Correct spelling: s/shasum/sha1sum. Reported by Jesse Kornblum.
+
+ * src/dd.c (set_fd_flags): Don't OR in -1 when fcntl fails.
+ Rename parameter, flags, to avoid shadowing global.
+ (LONGEST_SYMBOL): Tweak comment.
+
+2004-04-07 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS: New dd conv= symbols nocreat, excl, fdatasync, fsync,
+ and new dd options iflag= and oflag=.
+ * src/dd.c (usage): Likewise.
+ * src/Makefile.am (dd_LDADD, shred_LDADD): Add fdatasync's lib.
+ * src/dd.c (fdatasync) [!HAVE_FDATASYNC]: New macro.
+ (C_NOCREAT, C_EXCL, C_FDATASYNC, C_FSYNC): New macros.
+ (input_flags, output_flags): New vars.
+ (LONGEST_SYMBOL): New macro.
+ (struct symbol_value): Renamed from struct conversion. Members
+ symbol and value renamed from convname and conversion. The
+ symbol value is now an array instead of a pointer; this saves
+ a bit of space and time in practice. All uses changed.
+ (conversions): Add nocreat, excl, fdatasync, fsync. Now const.
+ (flags): New constant array.
+ (iflag_error_msgid, oflag_error_msgid): New constants.
+ (parse_symbols): Renamed from parse_conversion and generalized
+ to handle either conversion or flag symbols.
+ (scanargs): Adjust uses of parse_symbols accodingly. Add
+ support for iflag= and oflag=. Reject attempts to use
+ both excl and nocreat.
+ (set_fd_flags): New function.
+ (dd_copy): Just return X rather than calling quit (X), since our
+ caller invokes quit with the returned value. Add support for
+ fdatasync and fsync.
+ (main): Add support for iflag=, oflag=, and new conv= symbols.
+ * src/system.h (O_DIRECT, O_DSYNC, O_NDELAY, O_NOFOLLOW,
+ O_RSYNC, O_SYNC): Define to 0 if not already defined.
+
+ * NEWS: Remove duplicate mention of BLOCKSIZE.
+
+2004-04-02 Andreas Schwab <schwab@suse.de>
+
+ * src/stty.c: Add support for IUTF8 input flag.
+
+2004-04-06 Jim Meyering <jim@meyering.net>
+
+ * src/system.h (makedev) [mkdev && !makedev]: Define in terms of mkdev.
+ Interix spells it `mkdev'. Reported by Mark Funkenhauser.
+
+2004-04-04 Jim Meyering <jim@meyering.net>
+
+ A specified format is no longer automatically newline terminated.
+ If you want a newline at the end of your format, use `\n'.
+ * src/stat.c (print_it): Don't print a newline at the end of
+ every format.
+ (do_statfs): Add a newline at end of each default format string.
+
+2004-03-30 Paul Eggert <eggert@twinsun.com>
+
+ * src/nohup.c (main): Adjust to new calling convention
+ for set_cloexec_flag.
+
+2004-03-31 Jim Meyering <jim@meyering.net>
+
+ * tests/Fetish.pm (run_tests): Remove `.orig' file.
+ Remove debugging diagnostic.
+
+ Specifying an invalid --width=N (-w) or --gap-size=N (-g)
+ would not elicit an error.
+ * src/ptx.c: Include "xstrtol.h" and "quotearg.h".
+ (main): Don't use atoi. Use xstrtoul instead.
+
+2004-03-30 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (sc_prohibit_atoi_atof): New rule.
+ (syntax-check-rules): Add it.
+ * .x-sc_prohibit_atoi_atof: New file.
+
+2004-03-29 Jim Meyering <jim@meyering.net>
+
+ * tests/du/files0-from: Use new OUT_SUBST directive, so that this
+ test is not sensitive to system-dependent block size differences.
+ Prompted by a report of Solaris 8 differences from Paul Eggert.
+
+ * tests/Fetish.pm: Accept new directives: OUT_SUBST, ERR_SUBST.
+ Rename `%tmp' to `%actual'. Reverse order of last two args to
+ _compare_files (to $actual, $expected) so as to match declaration.
+
+2004-03-28 Paul Eggert <eggert@twinsun.com>
+
+ Fix some gotchas encountered when porting to Solaris 8, using
+ the Forte 6u2 compiler.
+
+ * src/hostname.c [HAVE_SETHOSTNAME && !defined sethostname]:
+ Declare sethostname, since no Solaris header does it.
+ * src/who.c: Include "vasprintf.h", for asprintf.
+
+2004-03-28 Jim Meyering <jim@meyering.net>
+
+ Minor optimization:
+ * src/du.c (process_file): Don't record dev/inode for directories.
+
+ Under some circumstances, without -c, du would mistakenly count the
+ space of hard-linked files, not just the first one it encountered.
+ Reported by Anthony Thyssen.
+ * src/du.c (du_files): Don't ever clear the set of `seen' dev/inodes.
+
+ * src/du.c: Rename global `print_totals' to `print_grand_total'.
+
+ * src/du.c (main): Rearrange filtering loop to be a tiny bit
+ more efficient.
+
+ * src/chown-core.c: Don't include savedir.h -- no longer needed.
+ * src/chmod.c: Likewise.
+
+2004-03-25 Jim Meyering <jim@meyering.net>
+
+ * src/du.c (main): Remove now-unused declaration of `i'.
+
+2004-03-24 Paul Eggert <eggert@twinsun.com>
+
+ * src/du.c (main): Filter out file names of length zero before
+ invoking fts, so that they don't cause fatal errors.
+
+2004-03-25 Jim Meyering <jim@meyering.net>
+
+ * tests/du/files0-from (zero-len): Add a test for the above.
+
+2004-02-25 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS: New environment var BLOCKSIZE.
+ * lib/human.c (humblock): Support BLOCKSIZE as well as BLOCK_SIZE.
+ * tests/envvar-check: Test for it. Factor the code to simplify it.
+
+2004-03-23 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS: Shorten the du --files0-from announcement, and say
+ "NUL-terminated" rather than "NUL-separated".
+ * src/du.c (EXPECTED_BYTES_PER_FILE_NAME, DEFAULT_PROJECTED_N_FILES):
+ Remove: not used.
+ (usage): Say "NUL-terminated", not "NUL-separated".
+ (main): Check for I/O error when istream is closed.
+ Allow --files0-from=F even if F is empty; this specifies no files.
+ (du_files): Now that we allow the list of files to be empty,
+ handle that case.
+ * tests/du/files0-from: Adjust to above changes to src/du.c.
+
+2004-03-24 Jim Meyering <jim@meyering.net>
+
+ * tests/tail-2/assert: Avoid race condition that could cause
+ spurious failure. Based on a patch from Andreas Schwab.
+
+2004-03-23 Jim Meyering <jim@meyering.net>
+
+ * src/du.c (main): Free the hash table, too.
+
+2004-03-22 Jim Meyering <jim@meyering.net>
+
+ * man/Makefile.am (.x.1): Remove --info-page= option, reverting
+ the change of 2004-01-22. I can no longer reproduce the problem
+ that prompted that change, and `info coreutils pr' would display the
+ `printing text' section of the manual, not the one on `pr invocation'.
+
+ * tests/du/files0-from (nul-1, nul-2): Adjust expected diagnostics
+ to match corrected output.
+
+ * src/du.c: Include "readtokens0.h" rather than "readtokens.h".
+ (main): Use readtoken0 functions rather than readtokens.
+ Don't use errno when diagnosing readtokens0 failure.
+ Fix off-by-one error in the token number reported in a diagnostic.
+ (du_files): Return bool, rather than int.
+ (main): Call readtokens0_free.
+
+2004-03-21 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (ds_free): Plug a small leak.
+
+ * tests/Fetish.pm: Fix typo in comment.
+
+2004-03-07 Jim Meyering <jim@meyering.net>
+
+ * NEWS: du accepts a new option --files0-from=FILE, where FILE
+ contains a list of NUL-separated file names.
+
+ * src/du.c: Include "readtokens.h".
+ (usage): Describe the new option, and adjust the `Usage':
+ with this option, no FILE may be specified on the command line.
+ (main): Handle the new option.
+
+ * tests/du/files0-from: New tests, for the above.
+ * tests/du/Makefile.am (TESTS): Add files0-from.
+
+ * src/factor.c (do_stdin): Reflect changes in use of readtoken.
+ * src/tsort.c (tsort): Likewise.
+
+2004-02-29 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS: Add support for a new notation @N to get_date to represent
+ the time stamp with numeric value N. Improve support for
+ fractional time stamps. date's -d and -f options now accept them.
+ Likewise for touch -t. date has a new option --iso-8601=ns.
+
+ * doc/coreutils.texi (touch invocation):
+ Describe use of fractional seconds.
+ (date invocation, Options for date): Likewise.
+ * doc/getdate.texi (General date syntax, Time of day items): Likewise.
+ * doc/coreutils.texi (date invocation): Mention effect of LC_TIME.
+ (Options for date): Describe new --iso-8601=ns option.
+
+ * doc/getdate.texi: Add copyright notice. Change getdate to
+ get_date when talking about the function name.
+ (Seconds since the Epoch): New section, containing the time_t
+ info moved from Date input formats section, along with new
+ info about the @ syntax. Mention negative time stamps,
+ fractional time stamps, and leap seconds.
+ (General date syntax): Modernize examples a bit to reflect new
+ features.
+ (General date syntax, Relative items in date strings):
+ Use ' rather than " to quote formats.
+ (Time of day items): Add an example with fractional seconds.
+ Describe fractional-second syntax.
+
+ * src/Makefile.am (touch_LDADD): New macro, since `touch' now
+ needs clock_gettime.
+
+ * src/date.c (enum Time_spec): New enum TIME_SPEC_NS.
+ (time_spec_string, time_spec, show_date): Support it.
+ (usage): Remove description of -ITIMESPEC, as it's obsolete and
+ confusing. Mention --iso-8601=ns.
+ (batch_convert): getline returns ssize_t, not int.
+
+ * src/touch.c (newtime): Now an array of two timespecs, one
+ for access and one for modification.
+ (ref_stats): Remove.
+ (get_reldate): Use get_date's parameter profile.
+ (touch, main): Adjust to above changes.
+ (main): Work even if tm_year == INT_MAX (so long as long int is wider).
+ Use gettime instead of gettimeofday, for new get_date signature.
+
+ * tests/date/Test.pm (test_vector): New tests epoch, ns-10, ns-max32,
+ ns-relative.
+
+2004-03-15 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (alpha beta major): `Make' the emit_upload_commands
+ target before updating $(prev_version_file).
+
+ * tests/misc/date-sec: New file, to test for just-fixed bug in date.
+ See today's change in lib/getdate.y.
+ * tests/misc/Makefile.am (TESTS): Add date-sec.
+
+2004-03-14 Jim Meyering <jim@meyering.net>
+
+ * announce-gen (print_changelog_deltas): Use `.sig' suffix for
+ signature files, not `.asc'. Reported by angico@yahoo.com.
+
+2004-03-13 Jim Meyering <jim@meyering.net>
+
+ * src/cp.c (do_copy): Tweak wording in a diagnostic.
+ Suggestion from Karl Berry.
+ Include "quoatearg.h".
+ (do_copy): Use quotearg_colon (not quote) for diagnostics
+ that begin with `"%s:'.
+
+ * src/nl.c (usage): Specify that nl uses _basic_ regular expressions.
+ Suggestion from Dan Jacobson.
+
+2004-03-12 Jim Meyering <jim@meyering.net>
+
+ * Version 5.2.1.
+
+ Sometimes, when source and destination partition are different,
+ mv mistakenly fails to preserve a hard link. Reported by IIDA Yosiaki.
+
+ * src/copy.c: When moving a set of N hard-linked files between
+ partitions, via two or more command line arguments where the
+ command line argument containing the Nth link contains no other
+ link to that same file, mv would mistakenly copy the file, rather
+ than hard-linking it to the other(s). That happens because when the
+ final link is processed, its link count has been reduced to 1 since
+ the other links have been `copied' to the destination partition
+ and the source links have been removed.
+ (copy_internal): When in move mode, use the source dev/inode
+ pair to look up destination name even when st_nlink == 1.
+ * src/cp-hash.c (src_to_dest_lookup): New function.
+ * src/cp-hash.h (src_to_dest_lookup): Add prototype.
+ * tests/mv/part-hardlink: New file. Test for the above fix.
+ * tests/mv/Makefile.am (TESTS): Add part-hardlink.
+
+ * announce-gen: Sync with autoconf.
+
+ * tests/ls/time-1: Exit 77 (not 1) if we can't set up for the test.
+ This was triggered on a Linux-2.2.19 system using a file system
+ NFS-mounted from some sort of Sun.
+
+2004-03-11 Jim Meyering <jim@meyering.net>
+
+ * Use automake-1.8.3. Regenerate dependent files.
+
+2004-03-10 Jim Meyering <jim@meyering.net>
+
+ * tests/du/deref-args: Also convert sizes in the 70-79 kB range,
+ so that this test works with SELinux-enabled systems.
+ Based on a patch from Tim Waugh.
+
+ `join -1 x' would give a misleading diagnostic
+ * src/join.c (string_to_join_field): Report that a non-numeric field
+ number is invalid, rather than `so large that it is not representable'.
+ * tests/join/Test.pm (invalid-j): New partial test for the above fix.
+
+2004-03-06 Jim Meyering <jim@meyering.net>
+
+ cp --sparse=always sparse-image-file.img /dev/hda1 could
+ produce an invalid copy on the destination device.
+
+ * src/copy.c (copy_reg): Even with --sparse=always, try to
+ make `holes' only if the destination is a regular file.
+ Reported by Szakacsits Szabolcs.
+
+2004-03-03 Paul Eggert <eggert@twinsun.com>
+
+ * src/nohup.c (main): Don't invoke set_cloexec_flag with
+ a file descriptor of -1.
+
+2004-03-02 Dmitry V. Levin <ldv@altlinux.org>
+
+ * src/nohup.c: Include "cloexec.h".
+ (main): Set the copy of stderr to close on exec.
+
+2004-03-01 Paul Eggert <eggert@twinsun.com>
+
+ * configure.ac: Include <signal.h> when checking for strsignal,
+ sys_siglist, and friends. Problem reported by Tony Leneis in
+ <http://mail.gnu.org/archive/html/bug-coreutils/2004-02/msg00136.html>.
+
+2004-02-25 Paul Eggert <eggert@twinsun.com>
+
+ * tests/du/deref-args, tests/du/exclude, tests/du/slash:
+ * tests/du/trailing-slash: Run envvar-check in case BLOCK_SIZE
+ etc. are set.
+
+2004-02-23 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS: Document how chown's USER.GROUP argument is now parsed.
+
+2004-02-23 Jim Meyering <jim@meyering.net>
+
+ * src/seq.c (usage): Remove stray space after \n in --help output.
+
+2004-02-22 Jim Meyering <jim@meyering.net>
+
+ * src/du.c (usage): Separate -H and --si. Say that the meaning
+ of -H will soon change to that of --dereference-args (-D).
+
+2004-02-21 Jim Meyering <jim@meyering.net>
+
+ * src/comm.c (usage): Tell what comm does when there are no options.
+ Reword in terms of FILE1 and FILE2 rather than `left file' and
+ `right file'. Suggestion from Dan Jacobson.
+
+2004-02-15 Paul Eggert <eggert@twinsun.com>
+
+ Fix some POSIX-conformance bugs in expr.
+
+ * NEWS: document the following changes to src/expr.c.
+ * doc/coreutils.texi (expr invocation): Likewise.
+ Document what forms integers may take, and say "integer"
+ consistently instead of "number". Warn about operands
+ that "expr" can misinterpret, and how to work around the
+ problem.
+ * src/expr.c (eval, eval7, eval6, eval5, eval4, eval3, eval2, eval1):
+ Accept a bool argument specifying whether to evaluate the
+ expression. This is to allow short-circuit evaluation. All
+ callers changed.
+ (null): Report that a string is zero even if it has
+ a form like "-0" or "00".
+ (eval1, eval): Use short-circuit evaluation for | and &.
+ (eval): Return 0 if both arguments are null or zero, instead
+ of returning the first argument.
+ * tests/expr/basic: Add some tests for the above.
+
+2004-02-17 Jim Meyering <jim@meyering.net>
+
+ * Version 5.2.0.
+
+ `make check' from a build inside a chroot environment would fail
+ * tests/help-version: Specify an argument (`/') for df, in the
+ unusual event that there is no valid entry in /etc/mtab.
+ Likewise for id: add the -u option, so we don't get spurious
+ failures when there are no user or group names.
+ Patch by Tim Waugh.
+
+ * src/sort.c (usage) [-u]: Add punctuation so that the description in
+ the help2man-generated (line-joined) man page is more readable.
+ Reported by Tim Waugh.
+ [-T]: Add a semicolon, for the same reason.
+
+2004-02-15 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (dist-hook): Qualify target with $(srcdir)/ prefix.
+
+2004-02-11 Jim Meyering <jim@meyering.net>
+
+ * tests/Makefile.am.in ($(srcdir)/Makefile.am): Use more portable
+ $(srcdir)/../Makefile.am.in, rather than $<.
+ Suggestion from Michael Elizabeth Chastain.
+
+2004-02-10 Jim Meyering <jim@meyering.net>
+
+ * config/install-sh: Make this script executable.
+ * Makefile.am (dist-hook): New target, to ensure that config/install-sh
+ is executable. Otherwise, on systems that lack a suitable install
+ binary, `make install' would fail, because of the way this script
+ is invoked (without `$SHELL ' prefix).
+ Reported by Bob Proulx.
+
+2004-02-08 Jim Meyering <jim@meyering.net>
+
+ * Version 5.1.3.
+
+ * tests/rm/rm5: Avoid triggering a bug in OSF/Tru64's sed
+ that would cause an unwarranted test failure.
+ * tests/rm/rm3: Likewise.
+
+2004-02-07 Jim Meyering <jim@meyering.net>
+
+ Remove xstat function pointer member. The way it was used was not
+ portable, since some systems (OSF V5.1, Solaris 2.5.1) provide static
+ inline `stat' and `lstat' functions, thus making the tests of
+ `xstat == lstat' in copy.c always fail.
+ * src/copy.h (struct cp_options) [xstat]: Remove member.
+ (XSTAT): New macro.
+ * src/copy.c (copy_dir): Set `.dereference' member, not .xstat.
+ (copy_internal): Use `XSTAT (x, ...)' in place of `*(x->xstat) (...)'.
+ Use `x->dereference == DEREF_NEVER' in place of `x->xstat == lstat'.
+ (valid_options): Remove now-obsolete FIXME comments.
+
+ * src/cp.c (re_protect): Use `XSTAT (x, ...)' in place of
+ `*(x->xstat) (...)'.
+ (do_copy): Declare/use local xstat rather than x->xstat.
+ (main): Remove code that set x.xstat.
+ * src/mv.c (cp_option_init): Don't initialize xstat member.
+ * src/install.c (cp_option_init): Likewise.
+
+ * Makefile.cfg (gnu_ftp_host-alpha, etc.): Un-factor .gnu.org suffix,
+ so that emit_upload_commands can use these variables, too.
+
+2004-02-06 Jim Meyering <jim@meyering.net>
+
+ * tests/rm/deep-1: Remove `du' stack space test.
+ Apparently, `ulimit -s N' isn't portable enough.
+ This test will be restored (with a guard against losing ulimit)
+ in its own file later.
+
+ * tests/rm/deep-1 (deep): Remove progress-style diagnostics,
+ since this test doesn't take long enough to merit them.
+ Run du on $tmp (the containing dir), not $deep, the full path to leaf.
+
+ * Makefile.maint (signatures): Remove definition.
+ Now, automake's gnupload handles this.
+ (%.sig: %): Remove now-unused rule.
+ (rel-files): Use automake's $(DIST_ARCHIVES), rather than
+ `$(distdir).tar.bz2 $(distdir).tar.gz'.
+ (emit-upload-commands): Adjust to use gnupload.
+
+2004-02-05 Jim Meyering <jim@meyering.net>
+
+ * src/system.h (ST_TIME_CMP_NS, ST_TIME_CMP): Remove definitions.
+ (ATIME_CMP, CTIME_CMP, MTIME_CMP, TIMESPEC_NS): Likewise.
+ Now, those are all defined in timespec.h.
+ Include timespec.h.
+
+ * src/date.c: Don't include timespec.h, now that system.h does it.
+
+2004-02-02 Paul Eggert <eggert@twinsun.com>
+
+ Don't dump core if localtime returns NULL (possible on
+ hosts with 64-bit time_t and 32-bit int).
+ * src/date.c: Include "inttostr.h".
+ (batch_convert, main):
+ If time conversion fails, exit with nonzero status.
+ (show_date): Return int to report conversion failure.
+ Print the time as an int if localtime fails.
+ * src/uptime.c: Print "??" if the current clock can't
+ be converted by localtime. This won't happen until the year
+ 2*31 + 1900, but we don't want to dump core even if the current
+ clock has the wrong value.
+
+ * src/stat.c: Include "inttostr.h".
+ (human_time): Print the date/time as a number of seconds since the
+ epoch if it can't be converted by localtime. This is better than
+ just saying "invalid", and is consistent with what "ls" does.
+ Don't dump core if the year has more than 48 digits; this isn't
+ possible on any contemporary host, but we might as well do it right.
+
+2004-01-31 Paul Eggert <eggert@twinsun.com>
+
+ * src/stat.c (human_time): Accept time rather than
+ pointer-to-const-time parameter, for clarity. All callers changed.
+
+2004-02-02 Jim Meyering <jim@meyering.net>
+
+ * src/stat.c (do_stat): Remove extra trailing newline from
+ default formats. Reported by Nelson H. F. Beebe.
+
+ Print actual fractional seconds in time stamps, not just `.00000000'.
+ * src/stat.c (human_time): Add and use new parameter, t_ns.
+ (print_stat): Update callers.
+ * src/ls.c (TIMESPEC_NS): Remove definition.
+ * src/system.h (TIMESPEC_NS): Define here, instead, now that stat.c
+ also uses this macro.
+ Nelson H. F. Beebe noticed that ls --full-time printed nonzero
+ fractional seconds for files on an XFS file system, but that stat's
+ fractional seconds were always zero.
+
+2004-01-28 Paul Eggert <eggert@twinsun.com>
+
+ * src/seq.c (print_numbers): Use 'double' for loop index, not
+ 'int', to avoid problems with integer overflow. On almost all
+ machines 'double' works in every case where 'int' works, and
+ it works on other cases besides.
+
+2004-01-27 Jim Meyering <jim@meyering.net>
+
+ * src/seq.c (usage): Mention that if INCREMENT is omitted,
+ it defaults to 1, even when FIRST is larger than LAST.
+ Reword so as not to exclude the possibility that INCREMENT be zero.
+
+2004-01-25 Jim Meyering <jim@meyering.net>
+
+ * Version 5.1.2.
+
+ * Makefile.maint (signatures): Comment out definition.
+
+2004-01-23 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (header_regexp): Add exitfail.
+
+ * man/Makefile.am (EXTRA_DIST): Add help2man.
+ Reported by Nelson H. F. Beebe.
+
+ * man/Makefile.am (.x.1): Prefix help2man invocation with `$(PERL) --'
+ so it works on systems with Perl installed somewhere other than in
+ /usr/bin.
+
+ * src/paste.c (paste_parallel): Declare local, chr, to be of type
+ `int', not `char', since it must hold EOF. This bug would make
+ paste infloop on some systems. Test failures reported by
+ Nelson H. F. Beebe and Christian Krackowizer.
+
+2004-01-22 Jim Meyering <jim@meyering.net>
+
+ * tests/rmdir/fail-perm: New file. Test for just-fixed rmdir bug.
+ * tests/rmdir/Makefile.am (TESTS): Add fail-perm.
+
+ * man/help2man: Fix it so using --info-page='coreutils PROG' works.
+ * man/Makefile.am (.x.1): Invoke our own (tweaked) copy of help2man.
+ Use --info-page='coreutils PROG' option.
+ Now, readlink.1 refers the user to `info coreutils readlink'
+ rather than to `info readlink'. Reported by Matt Swift.
+
+2004-01-21 Paul Eggert <eggert@twinsun.com>
+
+ Exit status cleanup.
+
+ * src/basename.c (usage): Use EXIT_SUCCESS, not 0, for clarity.
+ * src/cat.c, src/chgrp.c, src/chmod.c, src/chown.c, src/chroot.c,
+ * src/cksum.c, src/comm.c, src/cp.c, src/csplit.c, src/cut.c,
+ * src/date.c, src/dd.c, src/df.c, src/dircolors.c, src/dirname.c,
+ * src/du.c, src/echo.c, src/env.c, src/expand.c, src/expr.c,
+ * src/factor.c, src/fmt.c, src/fold.c, src/head.c, src/hostid.c,
+ * src/hostname.c, src/id.c, src/install.c, src/join.c, src/kill.c,
+ * src/link.c, src/ln.c, src/logname.c, src/ls.c, src/md5sum.c,
+ * src/mkdir.c, src/mkfifo.c, src/mknod.c, src/mv.c, src/nice.c,
+ * src/nl.c, src/nohup.c, src/od.c, src/paste.c, src/pathchk.c,
+ * src/pinky.c, src/pr.c, src/printenv.c, src/printf.c, src/pwd.c,
+ * src/rm.c, src/rmdir.c, src/seq.c, src/setuidgid.c, src/shred.c,
+ * src/sleep.c, src/sort.c, src/split.c, src/stat.c, src/stty.c,
+ * src/su.c, src/sum.c, src/sync.c, src/tac.c, src/tail.c, src/tee.c,
+ * src/test.c, src/touch.c, src/tr.c, src/tsort.c, src/tty.c,
+ * src/uname.c, src/unexpand.c, src/uniq.c, src/unlink.c, src/uptime.c,
+ * src/users.c, src/wc.c, src/who.c, src/whoami.c, src/yes.c: Likewise.
+
+ * src/cat.c (usage): Don't bother normalizing exit status
+ since the arg is already the correct exit status now.
+ * src/cksum.c, src/comm.c, src/csplit.c, src/cut.c,
+ * src/dircolors.c, src/expand.c, src/fmt.c, src/fold.c, src/head.c,
+ * src/join.c, src/md5sum.c, src/nl.c, src/od.c, src/paste.c,
+ * src/pr.c, src/split.c, src/sum.c, src/tac.c, src/tail.c, src/tr.c,
+ * src/tsort.c, unexpand.c, src/src/uniq.c, src/src/wc.c: Likewise.
+
+ * src/chown.c (main): Removed unused local 'fail'.
+
+ * src/chroot.c (CHROOT_FOUND_BUT_CANNOT_INVOKE, CHROOT_FAILURE):
+ Remove.
+
+ * src/chroot.c (main): Initialize exit_failure to EXIT_FAIL.
+ * src/env.c, src/nice.c, src/su.c: Likewise.
+ * src/nohup.c (main): Likewise, to NOHUP_FAILURE.
+ * src/setuidgid.c (main): Likewise, to SETUIDGID_FAILURE.
+ * src/expr.c (main): Use initialize_exit_failure rather than
+ setting exit_failure directly; this optimizes away redundant
+ assignments.
+ * src/printenv.c, src/sort.c, src/test.c, src/tty.c: Likewise.
+
+ * src/chroot.c (main): Exit with status 1 rather than 127
+ if chroot itself fails, as per documentation.
+
+ * src/chroot.c (main): Use EXIT_ENOENT and EXIT_CANNOT_INVOKE
+ rather than roll-your-own symbols or integers.
+ * src/env.c (main): Likewise.
+ * src/nohup.c (main): Likewise.
+ * src/su.c (run_shell): Likewise.
+
+ * src/cp.c (exit_status): Remove static var....
+ (main): Making it local here instead. Use =, not |=, to set it.
+
+ * src/cut.c (FATAL_ERROR, main): Exit with status EXIT_FAILURE,
+ not 2, on errors.
+ * src/date.c (batch_convert, main): Likewise.
+ * src/dd.c (dd_copy): Likewise.
+ * src/pr.c (first_last_page, main, getoptarg): Likewise.
+ * src/tr.c (main): Likewise.
+ * src/date.c (main): Don't assume EXIT_FAILURE == 1, as
+ POSIX doesn't require it.
+ * src/dd.c (write_output, skip, dd_copy): Likewise.
+ * src/df.c (main): Likewise.
+ * src/id.c (main): Likewise.
+ * src/install.c (main): Likewise.
+ * src/ln.c (main): Likewise.
+ * src/ls.c (main): Likewise.
+ * src/mv.c (main): Likewise.
+ * src/shred.c (main): Likewise.
+
+ * src/env.c (main): Exit with status 1, not 2, on errors detected
+ by env proper.
+ * src/hostname.c (main): Likewise.
+ * src/nl.c (main): Likewise.
+ * src/stty.c (main): Likewise.
+
+ * src/expr.c (EXPR_FAILURE): Renamed from EXPR_ERROR, for
+ consistency with the other programs' naming conventions.
+ All uses changed.
+
+ * src/factor.c (main): Do not report a usage error simply
+ because stdin has bad numbers.
+
+ * src/id.c (problems): Now a boolean int, not a counter,
+ so that we don't have to worry about int overflow. All uses changed.
+ * src/touch.c (err): Likewise.
+
+ * src/md5sum.c (main): Use int, not size_t, to store boolean int.
+
+ * src/mkfifo.c (main): Exit with status 1, not 4, if not implemented.
+ * src/mknod.c: Likewise.
+
+ * src/nice.c (main): Exit with status EXIT_FAIL, not EXIT_FAILURE,
+ on error; this is in case EXIT_FAILURE is unusual.
+ * src/su.c (main): Likewise.
+
+ * src/nohup.c (NOHUP_FOUND_BUT_CANNOT_INVOKE): Remove; all uses
+ changed to EXIT_CANNOT_INVOKE.
+
+ * src/printenv.c (PRINTENV_FAILURE): New constant.
+ (main): Exit with status PRINTENV_FAILURE, not EXIT_FAILURE, on
+ command-line syntax problems.
+
+ * src/rmdir.c (remove_parents): Don't set 'fail' to a negative number.
+ (main): Avoid integer overflow when seeing whether errors occurred.
+
+ * src/seq.c (print_numbers): Now returns void, not (zero) int.
+ All callers changed.
+ (main): Remove unused local variable 'errs'. Always exit successfully
+ if we reach the end.
+
+ * src/setuidgid.c (SETUIDGID_FAILURE): Renamed from FAIL_STATUS,
+ for consistency with other programs here. All uses changed.
+ (main): Use 'error' to exit rather than invoking 'exit' here.
+
+ * src/sort.c: Don't include <assert.h>.
+ (SORT_OUT_OF_ORDER, SORT_FAILURE): Now enums, not macros.
+ (usage): Don't use 'assert'.
+ (main): Remove redundant assignment to exit_failure.
+
+ * src/system.h (EXIT_FAIL, EXIT_CANNOT_INVOKE, EXIT_ENOENT):
+ New enum values.
+ (initialize_exit_failure): New inline function.
+ Include exitfail.h here, since we refer to exit_failure.
+ All callers changed to not include exitfail.h.
+
+ * src/tty.c (TTY_FAILURE, TTY_WRITE_ERROR): New enum values;
+ substitute them for the corresponding integer constants.
+
+ * tests/help-version (expected_failure_status_date): Remove, as
+ 'date' is now normal.
+ (expected_failure_status_nohup): New var.
+
+2004-01-21 Jim Meyering <jim@meyering.net>
+
+ * tests/touch/relative: Remove `command' syntax.
+ Thanks to Nelson H. F. Beebe and Paul Eggert.
+
+ * tests/touch/relative: Test only year/month/day, not hours/min/sec,
+ so as to avoid problems with systems using TAI clocks.
+ Although it's no longer necessary, set TZ=UTC0 also for the
+ initial touch command. Reported by Paul Jarc here:
+ http://article.gmane.org/gmane.comp.gnu.core-utils.bugs/1504
+
+2004-01-20 Diego Biurrun <diego@biurrun.de>
+
+ * src/dircolors.hin: Add .mov to the list of media files.
+
+2004-01-19 Paul Eggert <eggert@twinsun.com>
+
+ * tests/touch/relative: Use TZ=UTC0, not TZ=utc (which isn't
+ portable). Problem reported by Christian Krackowizer. Also, use
+ +0000 rather than +0 to specify a time zone, as the documentation
+ requires four digits.
+
+2004-01-19 Jim Meyering <jim@meyering.net>
+
+ * tests/mv/hard-4: Run envvar-check in case SIMPLE_BACKUP_SUFFIX is set.
+ * tests/mv/backup-is-src: Likewise.
+ Problem reported by Peter Horst
+
+2004-01-17 Jim Meyering <jim@meyering.net>
+
+ * announce-gen (print_changelog_deltas): Use .sig suffix, not .asc.
+
+ * Version 5.1.1.
+
+2003-12-15 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS, doc/coreutils.texi: touch -r and -d can now both be specified,
+ with -r specifying the origin for -d.
+ * src/touch.c (flexible_date): Remove static var.
+ (get_reldate): New function.
+ (main): Use it, to implement this new behavior.
+
+2004-01-16 Jim Meyering <jim@meyering.net>
+
+ * tests/touch/relative: New test for the above.
+ * tests/touch/Makefile.am (TESTS): Add relative.
+
+2004-01-13 Jim Meyering <jim@meyering.net>
+
+ * src/system.h: Include contents of sys2.h.
+ * src/sys2.h: Remove file.
+ * src/Makefile.am (noinst_HEADERS): Remove sys2.h.
+
+ * Use automake-1.8.2. Regenerate dependent files.
+
+ * Update to gettext-0.13.1.
+ * configure.ac: Use gettext-0.13.1.
+ * .x-sc_space_tab: Add m4/po.m4 to the list of exceptions.
+
+2004-01-12 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (%.sig): Use .sig suffix rather than .asc.
+
+ * Makefile.maint (po-check): Ensure that cvsu works before using it.
+ Reported by Alexandre Duret-Lutz.
+
+ * src/tail.c (main): Warn about following stdin only when it's a tty.
+
+ * configure.ac: Use gl_DEFAULT_POSIX2_VERSION.
+
+2004-01-10 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/stat-fmt: Use backticks, not `$()' notation.
+
+2004-01-09 Jim Meyering <jim@meyering.net>
+
+ * configure.ac: Quote underquoted `jm_DUMMY_1' to avoid new warning.
+
+2004-01-08 Jim Meyering <jim@meyering.net>
+
+ * src/stat.c (human_fstype): Use %lx, not %x format for `unsigned long'.
+ From Andreas Schwab.
+
+ * tests/Makefile.am (TESTS_ENVIRONMENT): Remove `/vg' (prerelease test
+ remnant) from PATH component. That would cause tests in this directory
+ not to run the just-built binaries, but rather whatever happened
+ to be in one's PATH. Reported by Christian Krackowizer.
+
+2004-01-04 Jim Meyering <jim@meyering.net>
+
+ * src/csplit.c (new_control_record): Use x2nrealloc
+ rather than xrealloc.
+
+ * src/cp.c (re_protect): Use ASSIGN_STRDUPA rather than
+ alloca and strcpy.
+ (make_path_private): Likewise.
+
+2004-01-03 Jim Meyering <jim@meyering.net>
+
+ * src/paste.c: Use `bool' (not int) as the type for a few
+ global variables.
+ (collapse_escapes): Rewrite to set globals rather than modifying
+ its parameter.
+ Use size_t (not int) for all counters and related index variables.
+ (paste_parallel): Remove needless complexity of
+ using xrealloc in the loop; just allocate the buffers up front.
+ Free the two temporary buffers.
+ Move declarations of locals `down' into scope where used.
+ (paste_serial): Remove `register' attributes.
+ (main): Simplify delim-related code.
+ Free `delims', now that it's malloc'd.
+
+2004-01-02 Jim Meyering <jim@meyering.net>
+
+ * src/chroot.c: Include "quote.h".
+ (CHROOT_FOUND_BUT_CANNOT_INVOKE, CHROOT_FAILURE): Define.
+ (main): Exit with status of 127, not 1, for too-few-args,
+ chroot failure, or chdir failure.
+ Give a better diagnostic upon execvp failure.
+
+ * src/du.c (usage): Mention that, with its current meaning,
+ -H is deprecated.
+
+ * src/tail.c (main): Warn about following stdin when it's a tty.
+ Fail when following by name but no names are specified.
+
+2003-12-30 Jim Meyering <jim@meyering.net>
+
+ * src/fold.c (main): Use memcpy, not strcpy.
+
+ * src/copy.c (copy_internal): Use ASSIGN_STRDUPA rather than
+ alloca and strcpy.
+
+2003-12-28 Jim Meyering <jim@meyering.net>
+
+ * src/unexpand.c (n_tabs_allocated): New global.
+ (add_tabstop): Use x2nrealloc rather than xrealloc.
+ * src/expand.c: Likewise.
+
+ * tests/misc/expand: New file.
+ * tests/misc/Makefile.am (TESTS): Add expand.
+
+ * src/sort.c (add_temp_dir): Use x2nrealloc rather than xrealloc.
+ (fillbuf): Use x2nrealloc rather than xrealloc.
+ (sort): Use xnmalloc rather than xmalloc.
+ (main): Likewise.
+
+2003-12-27 Jim Meyering <jim@meyering.net>
+
+ * src/tee.c (tee): Use xnmalloc rather than xmalloc.
+
+2003-12-29 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS: Remove support for join -j1 FIELD, -j2 FIELD, and -o LIST1
+ LIST2 in POSIX 1003.1-2001 hosts, as required by POSIX.
+
+ * doc/coreutils.texi (join invocation): Remove documentation
+ accordingly. Document that -t makes all separators significant.
+
+ * src/join.c: Include posixver.h.
+ (obsolete_usage): New var.
+ (longopts): Put obsolete options first.
+ (OBSOLETE_LONG_OPTIONS): New constant.
+ (get_option, add_file_name): New functions.
+ (main): Use them to support new behavior.
+ (usage): Remove documentation for -j1 FIELD and -j2 FIELD.
+ Do not mark -j FIELD as obsolescent; it is longstanding
+ UNIX tradition and is a valid extension to POSIX.
+
+ * tests/join/Test.pm (tv): Avoid obsolete -o usage.
+
+2003-12-28 Paul Eggert <eggert@twinsun.com>
+
+ * src/join.c (add_field_list): Don't use alloca with unbounded
+ size; just modify the argument, which is no longer const *.
+
+ Various other minor cleanups, mostly to avoid the need for casts.
+
+ (extract_field): Renamed from ADD_FIELD, as it's now a function.
+
+ (struct field.beg): Now char *, not unsigned char const *. All
+ uses changed. It shouldn't be const since xmemcoll writes on its
+ arguments.
+ (extract_field): Likewise, for 2nd arg.
+ (keycmp): Remove now-unnecessary cast of xmemcoll args.
+
+ (is_blank): New function, to avoid need to cast arg to unsigned char.
+ (extract_field): Use it.
+
+ (xfields): Rewrite pretty much from scratch.
+
+ (hard_LC_COLLATE): Now bool, not int.
+ (get_line, getseq, add_field_list): Now returns bool, not int.
+ (decode_field_spec, add_field_list): Return true on success (not
+ false), for consistency with the rest of the code. All uses changed.
+
+ (tab): Now char, not unsigned char. This wasn't 100% necessary
+ but is slightly cleaner.
+ (prjoin): Hoist (tab ? tab : ' ') expression, to help the compiler.
+
+ (empty_filler): Now const *.
+
+ (make_blank): Remove; wasn't needed. Remove all calls.
+ (main): Don't set uni_blank.nfields; zero is fine.
+
+2003-12-27 Jim Meyering <jim@meyering.net>
+
+ * src/join.c: Include "quote.h".
+ (min, max): Remove definitions.
+ Make a few function parameters and corresponding
+ locals `const'. Use bool for boolean variables.
+ Use size_t (not int) for all counters and related index variables.
+ (prjoin): Remove now-useless assertion.
+ (string_to_join_field): New function.
+ (main): Accept join fields as large as SIZE_MAX.
+ (keycmp): Rename `min' to MIN and max to MAX.
+
+2003-12-26 Jim Meyering <jim@meyering.net>
+
+ fold -s didn't work on e.g., alpha-based systems.
+ * src/fold.c (fold_file): Adjust types (int->size_t) so that using
+ x2nrealloc works properly on systems with differing sizes for int
+ and size_t. Reported by Nelson Beebe.
+
+ * src/fold.c: Use `bool' (not int) as the type for a few
+ global variables.
+
+2003-12-23 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls.c (length_of_file_names_and_frills):
+ Remove forward decl; not needed.
+ (print_file_name_and_frills, length_of_file_name_and_frills):
+ With -m, don't output spaces before inum or size.
+ (print_with_commas): Don't output space just before newline.
+
+2003-12-24 Jim Meyering <jim@meyering.net>
+
+ * tests/ls/Makefile.am (TESTS): Add m-option.
+ * tests/ls/m-option: New file. Test for above fixes.
+
+2003-12-20 Jim Meyering <jim@meyering.net>
+
+ * Version 5.1.0.
+
+ * src/pr.c: Change type of global, buff_allocated, to size_t.
+
+ * src/join.c [struct seq]: Change types of members count and alloc
+ from `int' to `size_t'.
+
+ * tests/Makefile.am (root-hint): Tweak wording.
+
+ * src/du.c: Accept new option (-0, --null) that makes it so each
+ output line is NUL-terminated rather than newline-terminated.
+
+ * src/dd.c (apply_translations): Don't prohibit conv=unblock,sync.
+ Reported by Volker Paul.
+ * tests/dd/Makefile.am (TESTS): Add unblock-sync.
+ * tests/dd/unblock-sync: New test for the above.
+
+2003-12-19 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/nohup: Double quote back-ticked expression,
+ in case it ends up having an unexpected value.
+
+ * tests/ls/no-arg: Use ls's -1 option in both runs.
+
+ * src/du.c (fts_debug): New global.
+ (FTS_CROSS_CHECK, DEBUG_OPT): Define.
+ (main): Make fts use FTS_TIGHT_CYCLE_CHECK.
+ (main) [DU_DEBUG]: Accept -d option.
+
+2003-12-18 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c (format_user): Increment dired_pos via two statements,
+ `dired_pos += width; dired_pos++;' rather than one,
+ `dired_pos += width + 1;' since the latter could conceivably overflow.
+ (format_group): Likewise.
+ From Paul Eggert.
+
+ * configure.ac: Require automake-1.8.
+
+2003-12-12 Jim Meyering <jim@meyering.net>
+
+ * Use automake-1.8. Regenerate dependent files.
+
+2003-12-08 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (news-date-check): New rule.
+ (alpha beta major): Depend on it.
+
+2003-12-03 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS: ls -l (and similar options) now adjust all columns to
+ fit the data. Generalized from a suggestion by Leah Q for file sizes.
+ * src/ls.c (INODE_DIGITS, LOGIN_NAME_MAX, ID_LENGTH_MAX): Remove.
+ (format_user_width, format_group_width, unsigned_file_size,
+ format_group): New functions.
+ (block_size_width): Renamed from block_size_size.
+ (inode_number_width, nlink_width, owner_width, group_width,
+ author_width, major_device_number_width, minor_device_number_width,
+ file_size_width): New vars.
+ (clear_files): Initialize them.
+ (gobble_file): Set them. Don't ceiling block_size_width to 7.
+ (print_long_file): Use them.
+ (gobble_file): Use a new local variable 'f' to make the code
+ smaller and more consistent with other functions.
+ (format_user): Output to stdout, not to a buffer, so that we
+ don't have to worry about buffer overrun. Update dired_pos.
+ (print_long_file): Don't put owner, group, author into buffer;
+ just print them directly. Don't assume link counts and
+ major and minor numbers fit into unsigned long int.
+ * tests/cp/same-file, tests/mv/part-symlink: Don't assume that
+ 'ls' output is fixed-width.
+
+2003-12-02 Jim Meyering <jim@meyering.net>
+
+ * src/md5sum.c: Include sha1.h (reflect renaming: sha.h -> sha1.h.
+
+2003-11-27 Jim Meyering <jim@meyering.net>
+
+ * Use automake-1.7f. Regenerate dependent files.
+
+2003-11-24 Paul Eggert <eggert@twinsun.com>
+
+ Parse floating-point operands and options in the C locale.
+ POSIX requires this for printf, and we might as well be
+ consistent elsewhere (tail, sleep, seq).
+
+ * src/printf.c: Remove decls of strtod, strtol, strtoul; no longer
+ needed now that we assume C89. Include "c-strtod.h".
+ (xstrtod): Call c_strtod, not strtod.
+ * src/sleep.c: Include "c-strtod.h".
+ (main): Update xstrtod call to include new argument, c_strtod.
+ * src/seq.c (scan_double_arg): Likewise.
+ * src/tail.c (parse_options): Likewise.
+
+2003-11-24 Jim Meyering <jim@meyering.net>
+
+ * tests/rm/fail-2eperm: Handle another errno variant (HPUX, EPERM).
+ Reported by Mark Conty.
+
+2003-11-22 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (sc_xalloc_h_in_src): Remove rule. Subsumed by...
+ (sc_system_h_headers): Do this test only if sys2.h exists.
+
+2003-11-20 Jim Meyering <jim@meyering.net>
+
+ * tests/help-version: Ensure that the bug-reporting address is
+ included in the --help output for every program.
+ * tests/Makefile.am (TESTS_ENVIRONMENT): Add $PACKAGE_BUGREPORT.
+
+ * src/ptx.c (usage): Output bug-reporting address.
+ Reported by Dan Jacobson.
+
+2003-11-19 Jim Meyering <jim@meyering.net>
+
+ * src/join.c (usage): Mention that FILE1 and FILE2 must be sorted
+ on the join fields. Suggestion from Bruce Robertson.
+
+2003-11-18 Jim Meyering <jim@meyering.net>
+
+ `od -c -w9999999' could segfault
+ * src/od.c (dump): Use xnmalloc/free, not alloca.
+
+2003-11-16 Jim Meyering <jim@meyering.net>
+
+ * Use autoconf-2.59. Regenerate dependent files.
+
+ * tests/du/hard-link: Minor tweak: use mkdir -p.
+
+ Fix read-from-free'd-buffer error detected by valgrind.
+ * src/csplit.c (remove_line): Don't return a pointer to data in
+ a freed buffer. Instead, arrange to free the buffer on the
+ subsequent call.
+
+ * tests/misc/csplit: New test for above fix.
+
+2003-11-11 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c (extract_dirs_from_files): Avoid useless copy operations.
+ This avoids a warning from valgrind about memcpy with overlapping
+ source and destination.
+
+ * configure.ac: Require automake-1.7.8.
+
+2003-11-09 Jim Meyering <jim@meyering.net>
+
+ * Use automake-1.7.9. Regenerate dependent files.
+
+ * src/rm.c: Support new options: --preserve-root and --no-preserve-root.
+ * src/chown.c: Likewise.
+
+ * src/chown-core.c: Include "root-dev-ino.h".
+ (chopt_init): Initialize new member.
+ (change_file_owner): Support rm's new --preserve-root option.
+
+ * src/remove.c: Include "root-dev-ino.h".
+ (remove_cwd_entries): Remove now-obsolete FIXME comment.
+ (remove_dir): Support rm's new --preserve-root option.
+
+ * src/chown.c: Include "root-dev-ino.h".
+ Add new options: --preserve-root and --no-preserve-root.
+
+ * src/chmod.c: Include "root-dev-ino.h".
+ (process_file): Use newly-factored-out ROOT_DEV_INO_CHECK and
+ ROOT_DEV_INO_WARN macros.
+ (get_root_dev_ino): Remove function definition, now that it's
+ been moved to a separate file.
+ (usage): Describe new options.
+
+ * src/mv.c (rm_option_init): Initialized new member.
+
+ * src/remove.h: Include "dev-ino.h".
+ (struct rm_options): Add new member: root_dev_ino.
+ * src/chown-core.h: Include "dev-ino.h".
+ (struct Chown_option): Add new member: root_dev_ino.
+
+2003-11-06 Jim Meyering <jim@meyering.net>
+
+ * src/paste.c (paste_parallel): Use `sizeof *var' rather than
+ hard-coding `sizeof FILE*'.
+
+2003-11-05 Dennis Smit <ds@nerds-incorporated.org>
+
+ * src/wc.c (main): Free `fstatus' so there is no confusion about
+ whether it's leaked or not.
+ * src/who.c (who): Likewise for `utmp_buf'.
+
+2003-11-05 Paul Eggert <eggert@twinsun.com>
+
+ Fix 'cut' problems with size_t overflow and unsigned int.
+ More generally, resize integer variables to fit use more precisely.
+ * src/cut.c (ADD_RANGE_PAIR): Remove unnecessary parens.
+ (struct range_pair): Make members to be of type size_t, not unsigned.
+ (max_range_endpoint, eol_range_start): Now size_t, not unsigned.
+ (suppress_non_delimited, output_delimiter_specified,
+ have_read_stdin, print_kth, set_fields): Now bool, nt int.
+ (delim): Now unsigned char, not int.
+ (mark_printable_field, is_printable_field, is_range_start_index,
+ set_fields, set_fields, cut_bytes, cut_fields):
+ Use size_t, not unsigned, for field and byte counts.
+ (hash_int): Use uintptr_t, not unsigned, for pointers converted
+ to integers. This squeezes more info out of them.
+ (set_fields, cut_bytes, cut_fields, main):
+ Use bool, not int, for booleans.
+ (set_fields): Allocate zeroed byte array with xzalloc, not xcalloc.
+
+2003-11-05 Paul Eggert <eggert@twinsun.com>
+
+ * man/Makefile.am (check-programs-vs-x):
+ Work even if $(programs) contains '$'.
+ Work even if 'missing=1' in environment.
+ Don't report an error simply because $(programs) outputs nothing.
+
+2003-11-05 Jim Meyering <jim@meyering.net>
+
+ * Use autoconf-2.58. Regenerate dependent files.
+
+ * src/tr.c (spec_init): Fix typo in last change.
+
+ * src/sys2.h (case_GETOPT_VERSION_CHAR): Cast NULL to `(char *)' in
+ call to variadic version_etc function, so that it works even on systems
+ for which sizeof char* != sizeof int.
+ * src/true.c (main): Likewise.
+ * basename.c, chroot.c, cksum.c, dd.c, dirname.c, echo.c, expr.c:
+ * factor.c, hostid.c, hostname.c, link.c, logname.c, nice.c, nohup.c:
+ * pathchk.c, printenv.c, printf.c, pwd.c, setuidgid.c, sleep.c, stty.c:
+ * sync.c, test.c, tsort.c, unlink.c, uptime.c, users.c, whoami.c, yes.c:
+ Similarly, cast NULL to `(char *)' in call to variadic function,
+ parse_long_options, so that it works even on systems for which
+ sizeof char* != sizeof int.
+ A similar problem was reported by Harti Brandt in
+ http://mail.gnu.org/archive/html/bug-gnu-utils/2003-10/msg00320.html.
+
+ * src/users.c (users): Free `utmp_buf' explicitly so that people
+ don't mistake this for a real leak.
+ Patch by Dennis Smit <ds@nerds-incorporated.org.
+
+2003-11-04 Paul Eggert <eggert@twinsun.com>
+
+ * README: Document _POSIX2_VERSION.
+
+2003-11-04 Jim Meyering <jim@meyering.net>
+
+ * src/tac.c (memrchr): Remove #if-0'd function.
+ (tac_stdin_to_mem): Clean up #if-0'd code.
+
+ * src/od.c (decode_format_string): Remove unnecessary casts.
+ Use more maintainable `sizeof *var'.
+ (main): Call decode_format_string rather than decode_one_format,
+ now that `spec' may be NULL.
+
+ * src/chmod.c (AUTHORS): Add my name.
+
+ * src/split.c (next_file_name): Use `sizeof *var' rather than
+ hard-coding `sizeof size_t'.
+
+ * src/sort.c (new_key): Use xzalloc, not xcalloc (1, ...).
+
+ * src/cut.c (ADD_RANGE_PAIR): Use x2nrealloc rather than xrealloc,
+ to avoid potential overflow in pointer arithmetic.
+ (set_fields): Use not `1', but rather `sizeof *printable_field' as
+ second argument to xcalloc.
+ * src/od.c (decode_format_string, dump_strings): Use x2nrealloc
+ rather than xrealloc.
+ * src/date.c (show_date): Likewise.
+ * src/join.c (ADD_FIELD, initseq, getseq): Likewise.
+ * src/pr.c (store_char): Likewise.
+ * src/fold.c (fold_file): Likewise.
+
+ * src/copy.c (triple_hash, triple_hash_no_name): Adjust to reflect
+ type changes (unsigned int -> size_t) in hash.c.
+ * src/cp-hash.c (src_to_dest_hash): Likewise.
+ * src/du.c (entry_hash): Likewise.
+ * src/ls.c (dev_ino_hash): Likewise.
+ * src/cut.c (hash_int): Likewise. Declare function as static.
+
+2003-11-03 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/Makefile.am (TESTS_ENVIRONMENT): Define PACKAGE_VERSION.
+ * tests/misc/fold: Fail the test immediately if we're not running
+ the expected version of fold.
+
+2003-11-02 Jim Meyering <jim@meyering.net>
+
+ * src/tr.c (append_normal_char, append_range, append_char_class)
+ (append_repeated_char, append_equiv_class, spec_init): Use `sizeof *var'
+ rather than `sizeof EXPLICIT_TYPE'. The former is more maintainable
+ and usually shorter.
+ * src/copy.c (copy_internal): Likewise.
+ * src/join.c (initseq, add_field, make_blank): Likewise.
+ * src/od.c (main): Likewise.
+ * src/cp.c (make_path_private): Likewise.
+ * src/tsort.c (new_item, record_relation): Likewise.
+
+ * src/df.c (add_fs_type, add_excluded_fs_type, main): Likewise.
+ (main): Also remove anachronistic cast of xmalloc return value.
+ * src/ptx.c (alloc_and_compile_regex, main): Likewise.
+ (main): Also remove anachronistic cast of xmalloc return value.
+ * src/sort.c (inittables): Likewise.
+ (sort): Also Split a long line.
+
+2003-10-25 Jim Meyering <jim@meyering.net>
+
+ * src/copy.c (triple_hash, triple_hash_no_name): Adjust to reflect
+ type changes (unsigned int -> size_t) in hash.c.
+ * src/cp-hash.c (src_to_dest_hash): Likewise.
+ * src/du.c (entry_hash): Likewise.
+ * src/ls.c (dev_ino_hash): Likewise.
+ * src/cut.c (hash_int): Likewise. Declare function as static.
+
+2003-10-21 Jim Meyering <jim@meyering.net>
+
+ Don't fail when run with VERBOSE=yes.
+ * tests/chgrp/basic: Do `set +x' before starting the subshell
+ from which we invoke chgrp. Otherwise, the output from the
+ VERBOSE=yes-induced `set -x' would result in spurious differences.
+ Reported by Russel Coker via Michael Stone.
+
+2003-10-19 Jim Meyering <jim@meyering.net>
+
+ chmod now uses fts to perform a directory traversal when -R is
+ specified. Before, it operated on full path names, and as such
+ would encounter the PATH_MAX (often 4096) limit.
+
+ * src/chmod.c: Include "xfts.h".
+ (process_file): Rename from change_file_mode.
+ Adapt to be used with fts.
+ (process_files): New function.
+
+2003-10-18 Jim Meyering <jim@meyering.net>
+
+ * tests/du/deref-args: Ensure that du -D now dereferences all
+ symlinks specified on the command line, not just those that
+ reference directories.
+
+ * basename.c, cat.c, chroot.c, cksum.c, comm.c, cp.c, csplit.c, cut.c:
+ * dd.c, df.c, dirname.c, du.c, echo.c, env.c, expr.c, factor.c, head.c:
+ * hostid.c, hostname.c, id.c, link.c, ln.c, logname.c, ls.c, md5sum.c:
+ * mv.c, nice.c, nl.c, nohup.c, paste.c, pathchk.c, pinky.c, pr.c:
+ * printenv.c, printf.c, pwd.c, rm.c, setuidgid.c, sleep.c, sort.c:
+ * split.c, stty.c, sum.c, sync.c, tac.c, tail.c, tee.c, test.c:
+ * touch.c, tsort.c, uniq.c, unlink.c, uptime.c, users.c, wc.c:
+ * who.c, whoami.c, yes.c (AUTHORS): Revert the WRITTEN_BY/AUTHORS change
+ of 2003-09-19. Now, AUTHORS is a comma-separated list of strings.
+ Update the call to parse_long_options so that `AUTHORS, NULL' are the
+ last parameters.
+ * src/true.c (main): Append NULL to version_etc argument list.
+ * src/sys2.h (case_GETOPT_VERSION_CHAR): Likewise.
+
+2003-10-17 Andreas Schwab <schwab@suse.de>
+
+ * tests/mk-script: Get $srcdir from first parameter instead of
+ hardcoding it.
+ (main): Update usage.
+
+ * tests/Makefile.am.in ($(srcdir)/$x-tests): Pass $(srcdir) as
+ first argument of mk-script.
+ ($(srcdir)/Makefile.am): Likewise. Prepend $(srcdir) to target.
+
+2003-10-17 Jim Meyering <jim@meyering.net>
+
+ * src/mv.c (usage): Tweak descriptions of -i and -f so that the
+ generated `man' page is more readable. Suggestion from Dan Jacobson.
+
+ * src/chown-core.c (change_file_owner): Handle the cases in
+ which fts_info indicates an error with the given entry.
+
+ * src/du.c (main): Simply assign to bit_flags.
+ Don't bother with bit arithmetic.
+
+ * tests/chmod/no-x: New file.
+ * tests/chgrp/no-x: New file.
+ * tests/chmod/Makefile.am (TESTS): Add no-x.
+ * tests/chgrp/Makefile.am (TESTS): Likewise.
+
+ * src/du.c: Include "xfts.h".
+ (du_files): Use xfts_open, rather than fts_open.
+ * src/chown-core.c (chown_files): Likewise.
+
+2003-10-16 Jim Meyering <jim@meyering.net>
+
+ * src/chgrp.c (main): Simply assign to bit_flags.
+ Don't bother with bit arithmetic.
+ * src/chown.c (main): Likewise.
+ Rename a couple of local variables.
+ Remove unnecessary casts.
+
+ * src/tail.c (start_bytes): Rename local, remainder, to avoid
+ gcc's warning about shadowing a global.
+
+2003-10-15 Jim Meyering <jim@meyering.net>
+
+ chown and chgrp now accept POSIX-mandated -H, -L, -P options and
+ use fts to perform a directory traversal when -R is specified.
+ Before, they operated on full path names, and as such would
+ encounter the PATH_MAX (often 4096) limit.
+ They are more efficient. For example, before, chgrp -R would
+ take almost 5 seconds to change about 2000 directories and fail
+ (with `File name too long'), while now it succeeds on a hierarchy
+ of depth 20,000 in 1/10 the time.
+
+ * src/chown.c: Include "userspec.h" and "fts_.h".
+ (WRITTEN_BY): Add my name.
+ (getpwnam, getgrnam, getgrgid): Remove declarations.
+ (endpwent): Remove definition.
+ (usage): Update.
+ (main): Handle new options.
+ Call new function, chown_files rather than change_file_owner.
+
+ * src/chgrp.c: Include "fts_.h".
+ (WRITTEN_BY): Add my name.
+ (MAXUID, MAXGID): Remove definitions. Use GID_T_MAX instead of
+ the latter.
+ (usage): Update.
+ (main): Handle new options.
+ Call new function, chown_files rather than change_file_owner.
+
+ Rewrite to iterate through hierarchies using fts rather than
+ via explicit recursion.
+ * src/chown-core.c: Include "fts_.h"
+ (change_file_owner): Rewrite to use FTS* and FTSENT* and to operate
+ on a single file at a time.
+ (chown_files): New function.
+ * src/chown-core.h [enum Dereference_symlink]: Remove declaration.
+ [struct Chown_option] (recurse, force_silent): Change type to `bool'.
+ [struct Chown_option] (dereference): Remove member with ambiguous name.
+ [struct Chown_option] (affect_symlink_referent): New member.
+ (chown_files): New prototype.
+
+ * tests/chgrp/recurse: Update tests accordingly.
+ * tests/chgrp/posix-H: New tests for the above.
+ * tests/chgrp/Makefile.am (TESTS): Add posix-H.
+
+ * src/ln.c (usage): Clarify that --directory, -d, -F probably won't
+ work even for superuser. Suggestion from Dan Jacobson.
+
+2003-10-14 Paul Eggert <eggert@twinsun.com>
+
+ Fix some number-parsing bugs, e.g., "head -n 100k@" wasn't
+ properly diagnosed.
+ * lib/human.c, lib/xstrtoimax.c, lib/xstrtol.c, lib/xstrtol.h,
+ lib/xstrtoul.c, lib/xstrtoumax.c: Sync with gnulib.
+ * src/sort.c (parse_field_count): Handle the case where overflow
+ and invalid suffix char are both reported.
+
+2003-10-14 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c (decode_switches) [TIOCGWINSZ]: Comment out the
+ warning-inducing test, ws.ws_col <= SIZE_MAX, since it was always
+ true on Linux.
+
+2003-10-13 Paul Eggert <eggert@twinsun.com>
+
+ Fix to avoid a denial-of-service attack if the display width is
+ enormous. Also, clean up the code a bit by removing duplicate code.
+
+ * src/ls.c (init_column_info): Remove forward decl; no longer needed.
+ (calculate_columns): New function, that contains code that used
+ to be common to print_many_per_line and print_horizontal.
+ (print_many_per_line, print_horizontal): Use it.
+ (decode_switches): Set max_idx here, not in calculate_columns.
+ (print_current_files): Don't call init_column_info; calculate_columns
+ now does that.
+ (init_column_info): Don't allocate a lot more space than is needed
+ to represent the current set of files. Allocate all the new
+ size_t cells in one call to xnmalloc, rather than a row at a time.
+
+2003-10-13 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c (init_column_info): Add another FIXME comment.
+
+2003-10-13 Paul Eggert <eggert@twinsun.com>
+
+ Fix address-arithmetic bug in 'ls', reported by Georgi Guninski.
+ Remove several arbitrary limits on hosts where int cannot represent
+ all size_t values.
+
+ * src/ls.c (struct bin_str.len, length_of_file_name_and_frills, indent,
+ nfiles, files_index, tabsize, line_length, struct column_info.line_len,
+ struct column_info.col_arr[0], max_idx):
+ Now size_t, not int.
+ (get_funky_string): Return bool indicating success, instead of
+ a negative count to indicate failure. Store number of columns
+ through new parameter OUTPUT_COUNT; that way, they can never
+ go negative. Change equals_end from int to bool. All uses
+ changed.
+ (struct column_info.valid_len): Now bool, not int. All uses changed.
+ (dired_dump_obstack, get_funky_string, clear_files,
+ extract_dirs_from_files, print_current_files,
+ print_many_per_line, print_horizontal, init_column_info,
+ put_indicator, length_of_file_name_and_frills,
+ print_with_commas): Use size_t, not int, for local variables
+ that count sizes.
+ (decode_switches): Decode sizes using xstrtoul, not xstrtol.
+ Check for TIOCGWINSZ returing negative values (or values greater
+ than SIZE_MAX!).
+ (visit_dir, main, parse_ls_color, queue_directory, add_ignore_pattern,
+ init_column_info):
+ Use xmalloc and xnmalloc, not XMALLOC.
+ (gobble_file): Use xnrealloc, not XREALLOC.
+ (print_color_indicator): Remove now-unnecessary cast to size_t.
+
+2003-10-12 Paul Eggert <eggert@twinsun.com>
+
+ * tests/du/no-x: Change wording of diagnostic to match latest du.c.
+ * tests/sort/sort-tests: Remove from CVS; assume that people
+ brave enough to check coreutils out from CVS can rebuild it.
+
+2003-10-12 Jim Meyering <jim@meyering.net>
+
+ New options: --preserve-root and --no-preserve-root.
+ * src/chmod.c (change_file_mode): Honor new option.
+ (change_file_mode): Strip trailing slashes on directory
+ argument passed to change_dir_mode.
+ (get_root_dev_ino): New function.
+ (main): Initialize global, root_dev_ino.
+
+ * src/copy.c (copy_internal): Don't #ifdef-out simple uses of
+ S_ISLNK or S_ISSOCK. The S_IS* macros are guaranteed to be defined
+ via system.h.
+ * src/chmod.c (change_file_mode): Likewise.
+
+2003-10-08 Jim Meyering <jim@meyering.net>
+
+ * src/csplit.c (main): Remove obsolete FIXME.
+
+2003-10-07 Jim Meyering <jim@meyering.net>
+
+ * Use automake-1.7.8. Regenerate dependent files.
+
+2003-09-29 Paul Eggert <eggert@twinsun.com>
+
+ csplit cleanup.
+
+ * doc/coreutils.texi (csplit invocation):
+ The regexp offset need not have a sign; POSIX requires support
+ for signless offets.
+
+ Be more careful about int widths. For example, remove some
+ arbitrary limits by replacing 'unsigned' with 'size_t',
+ 'uintmax_t', etc. Use standard bool rather than a homegrown type.
+ * lib/Makefile.am (libfetish_a_SOURCES): Add xstrtoimax.c.
+ * src/csplit.c (FALSE, TRUE, boolean): Remove. All uses changed
+ to <stdbool.h> usage.
+ (struct control): offset is now intmax_t, not int.
+ repeat_forever is now bool, not int.
+ (struct cstring): len is now size_t, not unsigned int.
+ (struct buffer_record): bytes_alloc, bytes_used, num_lines are now
+ size_t, not unsigned. start_line, first_available are now
+ uintmax_t, not unsigned.
+ (hold_count, control_used): Now size_t, not unsigned.
+ (last_line_number, current_line, bytes_written):
+ Now uintmax_t, not unsigned.
+ (save_to_hold_area, red_input, keep_new_line, record_line_starts,
+ create_new_buffer, get_new_buffer, load_buffer, find_line,
+ process_regexp, split_file, new_control_record, extract_regexp,
+ get_format_width, get_format_prec, max_out):
+ size args, locals, and returned values are now size_t, not unsigned
+ or int.
+ (get_first_line_in_buffer, find_line, write_to_file,
+ handle_line_error, process_line_count, regexp_error, process_regexp,
+ split_file):
+ File line, byte, and repetition counts are now uintmax_t, not unsigned.
+ (check_for_offset): Don't require a sign before the offset.
+ Use xstrtoimax to do the real work.
+ (extract_regexp): Remove harmful cast of size to unsigned.
+ 256 -> 1<<CHAR_BIT, for clarity.
+ (get_format_flags): Return at most 3, to avoid worries about overflow.
+
+ (bytes_to_octal_digits): Remove.
+
+ (cleanup): Don't check whether output_stream is NULL, since
+ close_output_file does that for us.
+
+ (new_line_control, create_new_buffer): Use "foo *p = xmalloc
+ (sizeof *p);" instead of the more long-winded alternatives.
+
+ (get_new_buffer): Use O(1) algorithm for resizing a buffer
+ to a much larger size, instead of an O(N) algorithm.
+
+ (process_regexp): Use plain NULL rather than casted 0.
+
+ (make_filename): Use %u, not %d, to format unsigned file number.
+
+ (new_control_record): Use xrealloc exclusively, since it handles
+ NULL reliably.
+
+ (extract_regexp): Change misspelled word in diagnostic.
+
+ (get_format_width): Even if a minimum field width is specified,
+ allow room for enough octal digits to represent the value of
+ the maximum representible integer. This fixes a potential
+ buffer overrun. Calculate this room at compile-time, not
+ at run-time; this removes the need for bytes_to_octal_digits.
+ Check for overflow; this removes a FIXME.
+
+ (get_format_prec): Don't allow precision to be signed; it's
+ not ANSI. Check for overflow. Remove hardcoded "11" as
+ default precision; this fixes a potential buffer overrun
+ on hosts with wider size_t.
+
+ (get_format_conv_type): Change local variable to be of type
+ unsigned char, not int; this removes a potential subscript
+ violation on hosts where char is signed.
+
+ (max_out): Replace "for (;*p;)" with more-standard "while (*p)".
+ Allow "%%" in format. Don't overflow when
+ counting lots of percents.
+
+ (usage): Default sprintf format is %02u, not %d.
+
+2003-10-05 Jim Meyering <jim@meyering.net>
+
+ * src/chown-core.c (change_file_owner): Remove set-but-not-used local.
+
+ * src/du.c (du_files): Mark diagnostic for translation.
+
+2003-10-04 Jim Meyering <jim@meyering.net>
+
+ * src/du.c (du_files): Ignore any failure of fts_close.
+ Give better diagnostics for failed fts_open.
+
+ * src/du.c (MAX_N_DESCRIPTORS): Remove now-unused definition.
+
+ Deprecate existing use of -H (aka --si).
+ * src/du.c (enum) [HUMAN_SI_OPTION]: New member.
+ [long_options]: Use HUMAN_SI_OPTION, not 'H'.
+ (main): Warn that the meaning of -H will soon change to be
+ POSIX compliant.
+
+2003-10-03 Jim Meyering <jim@meyering.net>
+
+ * src/du.c: Accept --no-dereference (-P).
+
+2003-10-02 Jim Meyering <jim@meyering.net>
+
+ * tests/du/trailing-slash: Adjust for slightly different output.
+
+ Rewrite du.c to use fts.
+ * src/du.c: Include "fts_.h", not ftw.h.
+ (opt_dereference_arguments, arg_length, suffix_length): Remove globals.
+ (IS_FTW_DIR_TYPE): Remove definition.
+ (IS_DIR_TYPE): Define.
+ (is_symlink_to_dir): Remove now-unnecessary function.
+ (process_file, du_files): Rewrite to use fts.
+
+ * tests/du/inaccessible-cwd: Ensure that even when run from an
+ inaccessible directory, du can still operate on accessible
+ directories elsewhere.
+ * tests/du/Makefile.am (TESTS): Add inaccessible-cwd.
+
+ * tests/rm/deep-1: Ensure that du can process a hierarchy
+ of depth 400 while using no more than 50KB of stack space.
+
+2003-10-01 Akim Demaille <akim@epita.fr>
+
+ * announce-gen (print_news_deltas): New function, extracted from main.
+ (main): Make `news_file' an array.
+ Use '...=s' => \@var for --news and --url-directory specs.
+ Before there were a couple of portability problems.
+
+2003-09-28 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (sc_cast_of_alloca_return_value): New rule.
+ (syntax-check-rules): Add it.
+
+ * src/copy.c: Remove unnecessary cast of alloca, since now it's
+ guaranteed to be (void *).
+ * src/cp.c: Likewise.
+ * src/join.c: Likewise.
+ * src/ln.c: Likewise.
+ * src/ls.c: Likewise.
+ * src/od.c: Likewise.
+ * src/sys2.h (ASSIGN_STRDUPA): Likewise.
+
+2003-09-27 Jim Meyering <jim@meyering.net>
+
+ Don't exhaust virtual memory when processing large inputs.
+ Fix this by removing csplit's internal free-list management;
+ instead rely on malloc for that.
+
+ * src/csplit.c (free_list): Remove global.
+ (clear_all_line_control): Remove function.
+ (get_new_buffer): Always use create_new_buffer to obtain a
+ new buffer, rather than searching free_list.
+ (free_buffer): Just call free.
+ Reported by Nikola Milutinovic.
+
+2003-09-26 Jim Meyering <jim@meyering.net>
+
+ * man/rm.x: Also list `chattr' in SEE ALSO section.
+ Suggestion from Mark Hubbart.
+
+2003-09-25 Jim Meyering <jim@meyering.net>
+
+ * configure.ac: Don't invoke AC_AIX or AC_MINIX explicitly, now
+ that we use gl_USE_SYSTEM_EXTENSIONS, since it AC_REQUIREs them.
+
+ * Use autoconf-2.57d. Regenerate dependent files.
+
+2003-09-24 Jim Meyering <jim@meyering.net>
+
+ Minor efficiency tweak.
+ * src/ln.c (PATH_BASENAME_CONCAT): Use memcpy rather than strcpy.
+ (do_link): Likewise.
+
+2003-09-23 Jim Meyering <jim@meyering.net>
+
+ * src/paste.c (paste_serial): Save errno after input error,
+ to report proper errno value.
+ Based on a patch from Paul Eggert.
+
+ * src/tee.c (tee): Adjust fwrite arguments so that the return
+ value is the number of bytes written.
+
+2003-09-16 Paul Eggert <eggert@twinsun.com>
+
+ Don't assume ferror sets errno. Bug reported by Bruno Haible.
+
+ * src/comm.c (compare_files): Save errno after input error,
+ to report proper errno value.
+ * src/fold.c (fold_file): Likewise.
+ * src/od.c (check_and_close, skip, read_char, read_block): Likewise.
+ * src/unexpand.c (unexpand): Likewise.
+
+ * src/csplit.c (close_output_file): Don't report bogus errno value
+ after ferror discovers an output error. We don't know the proper
+ errno value, since it might have been caused by any of a whole
+ bunch of calls, and it might have been trashed in the meantime.
+ Fixing this problem will require much more extensive changes;
+ in the meantime just say "write error".
+ * src/od.c (check_and_close, dump, dump_strings): Likewise.
+ * src/uniq.c (check_file): Likewise.
+
+ * src/join.c (get_line): Report error right away if I/O fails,
+ so that the proper errno value is used.
+ * src/tac.c (tac_seekable, tac_file, save_stdin): Likewise.
+ * src/tee.c (tee): Likewise.
+ * src/uniq.c (check_file): Likewise.
+
+ * src/od.c (skip): If a read fails, don't retry it later, so
+ that we report the proper errno.
+
+ * src/tac.c (tac_mem): Don't return a value; nobody uses it.
+
+ * src/tee.c (tee): Once a write failure has occurred, don't bother
+ writing anything more to that stream.
+
+ * src/uniq.c (check_file): Check for ferror (stdout) even if
+ ostream == stdout.
+
+ * src/yes.c (UNROLL): Remove.
+ (main): Exit immediately when write failure is detected.
+ Simplify code by assigning to argv when argc == 1.
+
+2003-09-21 Paul Eggert <eggert@twinsun.com>
+
+ * src/ptx.c: Switch encoding from Latin-1 to UTF-8.
+ (WRITTEN_BY): Change "Franc,ois" (actually using
+ c-with-cedilla in Latin-1) to "F.", so that it's ASCII, as
+ xgettext requires.
+
+2003-09-19 Jim Meyering <jim@meyering.net>
+
+ `du -D symlink-to-dir' would mistakenly omit the slash in
+ lines like this: 24 symlink-to-dir/subdir
+ * src/du.c (process_file): Fix offset calculation.
+ Reported by Jeff Sheinberg as Debian bug #211591;
+ http://bugs.debian.org/205251
+
+ * tests/du/deref-args: New file/test for the above.
+ * tests/du/Makefile.am (TESTS): Add deref-args.
+
+ * src/du.c (process_file): Remove useless disjunct.
+
+ * src/sys2.h (case_GETOPT_VERSION_CHAR): Rename parameter, Authors,
+ to Written_by.
+ * nearly all src/*.c files (WRITTEN_BY): Rename from AUTHORS.
+ Begin each WRITTEN_BY string with `Written by ' and end it with `.'.
+ Mark each WRITTEN_BY string as translatable.
+
+ * basename.c, cat.c, chroot.c, cksum.c, comm.c, cp.c, csplit.c, cut.c:
+ * dd.c, df.c, dirname.c, du.c, echo.c, env.c, expr.c, factor.c, head.c:
+ * hostid.c, hostname.c, id.c, link.c, ln.c, logname.c, ls.c, md5sum.c:
+ * mv.c, nice.c, nl.c, nohup.c, paste.c, pathchk.c, pinky.c, pr.c:
+ * printenv.c, printf.c, pwd.c, rm.c, setuidgid.c, sleep.c, sort.c:
+ * split.c, stty.c, sum.c, sync.c, tac.c, tail.c, tee.c, test.c:
+ * touch.c, tsort.c, uniq.c, unlink.c, uptime.c, users.c, wc.c:
+ * who.c, whoami.c, yes.c: Revert yesterday's changes.
+ Instead, a subsequent change will embed `Written by ' in
+ each string along with the author names.
+
+ * src/true.c: Revert yesterday's changes.
+ * src/sys2.h: Likewise.
+
+2003-09-18 Jim Meyering <jim@meyering.net>
+
+ * basename.c, cat.c, chroot.c, cksum.c, comm.c, cp.c, csplit.c, cut.c:
+ * dd.c, df.c, dirname.c, du.c, echo.c, env.c, expr.c, factor.c, head.c:
+ * hostid.c, hostname.c, id.c, link.c, ln.c, logname.c, ls.c, md5sum.c:
+ * mv.c, nice.c, nl.c, nohup.c, paste.c, pathchk.c, pinky.c, pr.c:
+ * printenv.c, printf.c, pwd.c, rm.c, setuidgid.c, sleep.c, sort.c:
+ * split.c, stty.c, sum.c, sync.c, tac.c, tail.c, tee.c, test.c:
+ * touch.c, tsort.c, uniq.c, unlink.c, uptime.c, users.c, wc.c:
+ * who.c, whoami.c, yes.c: Update AUTHORS definition to be a
+ comma-separated list of strings and/or update the call to
+ parse_long_options so that `AUTHORS, NULL' are the last parameters.
+ * src/true.c (main): Append NULL to version_etc argument list.
+ * src/sys2.h (case_GETOPT_VERSION_CHAR): Likewise.
+
+ * src/sort.c (numcompare): Rename local, logb, to log_b to avoid
+ shadowing the math function name. Also rename loga to log_a.
+
+2003-09-14 Jim Meyering <jim@meyering.net>
+
+ * src/factor.c (print_factors): Give a separate diagnostic
+ for numbers that are too large, but otherwise valid.
+ Reported by Dániel Varga.
+
+2003-09-10 Jim Meyering <jim@meyering.net>
+
+ * Use automake-1.7.7. Regenerate dependent files.
+
+ * tests/Makefile.am (all_programs): Use ../src/tr -s ' ' '\n' in place
+ of `fmt -1'. Using the just-built tr is a little cleaner.
+ Christian Krackowizer reported that HPUX 10.20 doesn't have fmt.
+ * man/Makefile.am (programs, check-x-vs-1): Likewise.
+
+2003-09-09 Jim Meyering <jim@meyering.net>
+
+ * src/copy.c: Alphabetize includes.
+ Remove duplicate inclusion of "same.h".
+
+2003-09-08 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (GZIP_ENV): Remove --rsyncable.
+ Didn't give enough of a benefit, mainly because it's not yet
+ in wide enough use.
+
+ * Version 5.0.91.
+
+ * man/Makefile.am (programs): Use ../src, not $(srcdir)/../src.
+ (check-programs-vs-x): Fail if $(programs) is empty.
+
+ * src/remove.c: Add a comment.
+
+2003-09-07 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (D_INO, ENABLE_CYCLE_CHECK) [D_INO_IN_DIRENT]:
+ Don't define. These symbols are no longer used.
+
+ * tests/misc/tty-eof: Write ^D as \cD.
+ Complete the change of 2003-08-02.
+
+ * Makefile.maint (po-check): Use cvsu, so that a temporary source
+ file in lib/ or src/ doesn't induce an unwarranted failure.
+ Add a kludge to filter out the sole generated source file that
+ also has translatable messages: src/false.c.
+
+2003-09-06 Jim Meyering <jim@meyering.net>
+
+ * src/tail.c (enum): Add ALLOW_MISSING_OPTION.
+ (parse_options): Give a diagnostic for (but still accept) the
+ deprecated --allow-missing option.
+
+2003-09-04 Paul Eggert <eggert@twinsun.com>
+
+ Don't ignore -S if input is a pipe. Bug report by Michael McFarland in
+ <http://mail.gnu.org/archive/html/bug-coreutils/2003-09/msg00008.html>.
+
+ * src/sort.c (sort_buffer_size): Omit SIZE_BOUND arg. Compute the
+ size_bound ourselves. if an input file is a pipe and the user
+ specified a size, use that size instead of trying to guess the
+ pipe size. This has the beneficial side effect of avoiding the
+ overhead of default_sort_size in that case. All callers changed.
+ (sort): Remove static var size; now done by sort_buffer_size.
+
+2003-09-05 Jim Meyering <jim@meyering.net>
+
+ * Use automake-1.7.6b and autoconf-2.57b. Regenerate dependent files.
+
+ * tests/tail-2/tail-n0f: Wait .5 seconds for backgrounded process
+ to start, rather than just .1. Upon failure, print unexpected state.
+
+2003-09-04 Paul Eggert <eggert@twinsun.com>
+
+ * src/head.c (elide_tail_lines_pipe): Don't assign 0 or
+ SAFE_READ_ERROR to tmp->nbytes.
+ * src/tail.c (pipe_lines, pipe_bytes): Likewise.
+
+ * src/head.c (struct linebuffer): Change nbytes and nlines
+ from unsigned int to size_t. unsigned int is safe (after the
+ 2003-09-03 patch) but size_t is cleaner.
+ * src/tail.c (struct linebuffer, struct charbuffer): Likewise.
+ (pipe_bytes): Likewise for local variable 'i', which was 'int'.
+
+ Standardize on BUFSIZ as opposed to other macro names and values.
+ * src/head.c (BUFSIZE): Remove. All uses changed to BUFSIZ.
+ * src/tail.c (BUFSIZ) [!defined BUFSIZ]: Remove.
+ stdio.h has always defined it,
+ and other code already assumes it's defined.
+ * src/tr.c (BUFSIZ) [!defined BUFSIZ]: Likewise.
+ (IO_BUF_SIZE): Remove; replace all uses with sizeof io_buf.
+ (io_buf): IO_BUF_SIZE -> BUFSIZ.
+
+2003-09-04 Paul Eggert <eggert@twinsun.com>
+
+ * src/seq.c (step): Default to 1.
+ (print_numbers): Allow the output to be empty.
+ (main): The default step is 1, even if LAST < FIRST;
+ as per documentation.
+ * tests/seq/basic (onearg-2): Output should be empty.
+
+2003-09-05 Jim Meyering <jim@meyering.net>
+
+ * Makefile.cfg (wget_files): Temporarily disable, until master
+ versions are restored to ftp.gnu.org.
+
+ * configure.ac (AM_INIT_AUTOMAKE): Specify automake-1.7.6.
+
+ Make seq's --width (-w) option work properly even when the
+ endpoint requiring the larger width is negative and smaller than
+ the other endpoint.
+ * src/seq.c (get_width_format): Include `-' in the set of bytes
+ allowed in a `simple' number (no decimal point, no exponent).
+ Reported by Patrick Mauritz.
+
+2003-09-02 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS: sort -t '\0' now uses a NUL tab.
+ sort option order no longer matters, unless POSIX requires it.
+ * src/sort.c (usage): Say "blanks" instead of "whitespace",
+ Similar fixes for many comments.
+ (TAB_DEFAULT): New constant, so that we can support NUL as
+ the field separator.
+ (tab): Now int, not char. Initialize to TAB_DEFAULT.
+ (specify_sort_size): If multiple sizes are specified, use the largest.
+ (begfield, limfield): Support NUL tab char.
+ (set_ordering): Do not let -i override -d.
+ (main): Report an error if incompatible -o or -t options are given.
+ Report an error for "-t ''". Allow "-t '\0'" to specify a NUL tab.
+
+2003-09-05 Jim Meyering <jim@meyering.net>
+
+ * tests/sort/Test.pm [o2, nul-tab]: New tests for the above.
+
+2003-09-03 Andreas Schwab <schwab@suse.de>
+
+ Bug report and patch here:
+ <http://mail.gnu.org/archive/html/bug-coreutils/2003-09/msg00009.html>
+ * src/tail.c (pipe_lines): Don't truncate return value from safe_read.
+ * src/head.c (elide_tail_lines_pipe): Likewise.
+
+2003-09-03 Jim Meyering <jim@meyering.net>
+
+ * src/du.c (AUTHORS): Remove Larry McVoy's name, since the relatively
+ small amount of code from him was first moved to lib/human.c, and was
+ subsequently rewritten entirely.
+ * src/df.c (AUTHORS): Likewise.
+
+2003-08-22 Lawrence Teo <lcteo@uncc.edu>
+
+ * src/md5sum.c (split_3): Accept the BSD format for generic
+ message digest modes. Currently works with BSD's MD5 and SHA1
+ formats since these are the two algorithms presently used in
+ coreutils. Updated comments to reflect this change.
+ (bsd_split_3): Updated comments.
+
+ * tests/md5sum/basic-1: New test to make sure that
+ `md5sum --check' doesn't accept the BSD SHA1 format (adapted
+ from `check-bsd' test in tests/sha1sum/basic-1).
+
+ * tests/sha1sum/basic-1 (check-bsd2, check-bsd3): New tests for
+ --check exit status and BSD SHA1 format (adapted from tests
+ in tests/md5sum/basic-1).
+
+2003-08-30 Jim Meyering <jim@meyering.net>
+
+ * src/ln.c (do_link): Use SAME_INODE rather than open-coding it.
+
+ When source and destination arguments refer to the same file, reside
+ on a partition (e.g. VFAT) on which distinct names may refer to the
+ same directory entry (often due to variations in case), and when the
+ link count for the file is 1, mv no longer unlinks the file. Instead,
+ it gives the expected diagnostic that the source and destination are
+ the same. WARNING: this is an incomplete fix. If the file happens
+ to have a link count of 2 or greater, such an erroneous mv command
+ will still unlink it.
+ Although that is not possible on vfat or umsdos, it is possible on
+ other file system types, e.g., ntfs, and hpfs.
+ * src/copy.c (same_file_ok): Invoke same_name (which might still
+ return false for names that refer to the same directory entry)
+ only if the link count is 2 or more.
+ * tests/mv/vfat: Show how to demonstrate the above problem.
+ This test is not run.
+ * tests/mv/Makefile.am (EXTRA_DIST): Add vfat.
+
+2003-08-27 Jim Meyering <jim@meyering.net>
+
+ * src/who.c: Change meaning of -l from --lookup to --login, per POSIX.
+ who's -l option has been eliciting an unconditional warning about
+ this impending change since sh-utils-2.0.12 (April 2002).
+
+ * src/paste.c (paste_parallel): Don't output `EOF' (aka -1) as a `char'.
+ This would happen for nonempty files not ending with a newline.
+ Reported by Dan Jacobson.
+ * tests/misc/paste-no-nl: New file. Test for above-fixed bug.
+ * tests/misc/Makefile.am (TESTS): Add paste-no-nl.
+
+ * src/stat.c (print_it): Avoid buffer overrun that would
+ occur when the user-specified format string ends with `%'.
+ Patch by Tommi Kyntola.
+ * tests/misc/stat-fmt: New file. Test for above-fixed bug.
+ * tests/misc/Makefile.am (TESTS): Add stat-fmt.
+
+2003-08-26 Jim Meyering <jim@meyering.net>
+
+ Apply changes from bison.
+ * GNUmakefile (SHELL): Define to `sh', if necessary.
+ Add copyright.
+ * Makefile.maint (WGETFLAGS): Define to `-C off'.
+ Update all uses of $(WGET).
+
+2003-08-22 Akim Demaille <akim@epita.fr>
+
+ * Makefile.cfg (local-checks-to-skip): New.
+ * Makefile.maint (local-check): Rename as...
+ (local-checks-available): this.
+ (local-check): New.
+
+2003-08-26 Akim Demaille <akim@epita.fr>
+
+ * announce-gen (print_changelog_deltas): Neutralize "<#" as
+ "<\#" to avoid magic from Gnus when posting parts of this script.
+
+2003-08-25 Jim Meyering <jim@meyering.net>
+
+ * src/stat.c (main): Warn about use of deprecated `-l' option.
+
+2003-08-22 Jim Meyering <jim@meyering.net>
+
+ * src/stat.c (do_stat): For link count at end of line, use %h format,
+ instead of %-5h. The latter would make stat emit trailing spaces.
+ Reported by Dan Jacobson.
+
+2003-08-20 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (EXTRA_DIST): Add .x-sc_space_tab .x-sc_sun_os_names
+
+2003-08-19 Jim Meyering <jim@meyering.net>
+
+ * src/system.h: Include stdlib.h unconditionally,
+ as we're now assuming that part of hosted C89.
+
+2003-08-18 Jim Meyering <jim@meyering.net>
+
+ * src/sys2.h (textdomain, bindtextdomain) [! ENABLE_NLS]: Define away,
+ to avoid warnings from gcc.
+
+2003-08-17 Jim Meyering <jim@meyering.net>
+
+ Avoid unnecessary and sometimes time-consuming hostname lookups.
+ * src/who.c (print_user): Use strchr, not strrchr.
+ * src/pinky.c (print_entry): Likewise.
+ Patch by Michael Stone.
+ This fixes a typo I introduced in who-users.c on 1996-02-23.
+
+ * Makefile.maint (makefile-check): Add 0-9 to the range of characters
+ disallowed between `@...@'.
+
+2003-08-16 Paul Eggert <eggert@twinsun.com>
+
+ * configure.ac (fu_cv_sys_truncating_statfs): Remove; now
+ done by gnulib .m4 files.
+ (jm_DUMMY_1): Require gl_READUTMP, not jm_PREREQ_READUTMP.
+ * src/sys2.h (strtoull): Remove unused declaration.
+
+2003-08-16 Jim Meyering <jim@meyering.net>
+
+ * man/Makefile.am (.x.1): Ensure that generated PROGRAM.1 files
+ are read-only.
+
+ * src/tail.c (tail_lines): Fix a potential (but very hard to exercise)
+ race condition bug. The bug would be triggered when tailing a file
+ with file pointer not at beginning of file, and where the file was
+ truncated to have a length of less than the initial offset at just
+ the right moment (between the two lseek calls in this function).
+
+ An invalid initial value for *read_pos would result in
+ `tail -n0 -f FILE' and `tail -c0 -f FILE' doing what amounted to a
+ busy-wait rather than sleeping between iterations. The bug manifests
+ itself only when tailing regular files that are initially nonempty.
+ * src/tail.c (tail_bytes): Set *read_pos to new file offset after
+ each xlseek call.
+ (tail_lines): Likewise, after lseek calls.
+ Reported by Nick Estes. See http://bugs.debian.org/205251 for details.
+ * tests/tail-2/tail-n0f: New file. Test for above fix.
+ * tests/tail-2/Makefile.am (TESTS): Add tail-n0f.
+
+2003-08-15 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (sc_space_tab): Use exclusion list in separate file.
+ (sc_sun_os_names): Likewise.
+ * .x-sc_space_tab, .x-sc_sun_os_names: New files.
+
+ * man/help2man: Remove some SPACEs before TAB.
+
+2003-08-14 Paul Eggert <eggert@twinsun.com>
+
+ * Makefile.maint (LC_ALL): Set to C.
+ * man/Makefile.am (ASSORT): New var.
+ (check-x-vs-1, programs): Use it.
+ * src/Makefile.am (ASSORT, check-README, ../AUTHORS): Likewise.
+ * tests/Makefile.am (ASSORT, all_programs): Likewise.
+
+2003-08-11 Jim Meyering <jim@meyering.net>
+
+ fold -s -wN would infloop for N < 8 with TABs in the input.
+ E.g., this would not terminate: printf 'a\tb' | fold -w2 -s
+ * src/fold.c (fold_file): Move contents of `else'-block
+ out of conditional so it's used also for --spaces (-s).
+ * tests/misc/fold: Test for the above fix.
+ * tests/misc/Makefile.am (TESTS): Add fold.
+
+2003-08-10 Jim Meyering <jim@meyering.net>
+
+ * src/nice.c [!NICE_PRIORITY]: Include <sys/resource.h> after
+ system.h so the types from time.h and sys/time.h are available.
+ It appears that this is necessary for OpenBSD, NetBSD, and
+ Darwin 6.5 (MacOS 10.2.5). Reported by Nelson Beebe.
+
+2003-08-06 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS: Add support for setting file timestamps to microsecond
+ resolution, on hosts that support this.
+ * src/copy.c, src/cp.c, src/install.c, src/touch.c: Include utimens.h.
+ * src/copy.c (copy_internal):
+ Set file timestamps with utimens, not utime.
+ * src/cp.c (re_protect): Likewise.
+ * src/install.c (change_timestamps): Likewise.
+ * src/touch.c (newtime, touch, main): Likewise.
+
+2003-08-09 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (sc_sun_os_names): New rule based on a regexp
+ from Paul Eggert.
+ (syntax-check-rules): Add it.
+
+ * src/tail.c (main): Tweak Solaris OS version number in comment.
+ * src/wc.c (wc): Likewise
+ * tests/tail-2/fflush: Likewise.
+
+ * src/tail.c: Add new undocumented option, --presume-input-pipe.
+ (pipe_lines): Use memchr to skip lines, rather than an explicit loop.
+
+2003-08-08 Paul Eggert <eggert@twinsun.com>
+
+ Use new gnulib 'extensions' module.
+ * configure.ac: Invoke gl_USE_SYSTEM_EXTENSIONS instead of
+ AC_GNU_SOURCE.
+
+2003-08-08 Paul Eggert <eggert@twinsun.com>
+
+ * tests/du/basic: Ensure that a/b/F has at least 65 bytes too.
+
+2003-08-09 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/split-fail: Reflect that `split -a 0' is now accepted.
+ For tests of obsolete behavior, don't presume that unsetting
+ _POSIX2_VERSION is equivalent to _POSIX2_VERSION=199209.
+
+2003-08-07 Paul Eggert <eggert@twinsun.com>
+
+ * doc/coreutils.texi (split invocation):
+ Add -d or --numeric-suffixes option to 'split'.
+ From a suggestion by Jesse Kornblum.
+ * src/split.c (suffix_alphabet): New var.
+ (longopts, usage, next_file_name, main): Support -d.
+ (next_file_name, main): Allow -a0, as POSIX requires.
+ (next_file_name): Don't assume ASCII-like encoding;
+ 'a' through 'z' are not contiguous in EBCDIC.
+
+2003-08-05 Paul Eggert <eggert@twinsun.com>
+
+ Merge getline from gnulib.
+ * lib/getline.h, lib/getline.c, m4/getline.m4: Merge from gnulib.
+ * lib/getndelim2.h, lib/getndelim2.c, m4/getndelim2.m4, m4/ssize_t.m4:
+ New files, from gnulib.
+ * lib/getdelim2.c, lib/getdelim2.h: Remove.
+ * lib/Makefile.am (libfetish_a_SOURCES): Change getdelim2.c and
+ getdelim2.h to getndelim2.c and getndelim2.h.
+ * m4/jm-macros.m4 (jm_MACROS): Use gl_GETNDELIM2 rather than
+ checking for getdelim.
+ (jm_CHECK_ALL_TYPES): Use gt_TYPE_SSIZE_T for ssize_t rather
+ than rolling our own.
+ * src/cut.c: Include getndelim2.h rather than getdelim2.h.
+ (cut_fields): Invoke getndelim2 rather than getdelim2.
+
+2003-08-04 Jim Meyering <jim@meyering.net>
+
+ * src/sort.c (main): Use unsigned int instead of int for `nsigs'
+ and for the indices to iterate through nsigs.
+
+2003-08-02 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c: Minor code cleanups, mostly to use more accurate
+ types and to remove unnecessary casts.
+ (min, max): Remove. All uses changed to MIN and MAX.
+ (hard_lc_collate, hard_LC_TIME, struct buffer.eof, struct
+ keyfield.skipsblanks, struct keyfield.skipeblanks, struct
+ keyfield.numeric, struct keyfield.general_numeric, struct
+ keyfield.month, struct keyfield.reverse, reverse, unique,
+ have_read_stdin): Now bool, not int. All uses changed.
+ (eolchar): Now char, not int.
+ (struct keyfield.ignore): Now bool const *, not int *.
+ (struct keyfield.translate): Now char const *, not char *.
+ (struct month.name): Likewise.
+ (blanks, nonprinting, nondictionary): Now bool[], not int[].
+ (cleanup, inittables, keycompare, check, mergefps, first_same_file,
+ check, sort, main): Use const * pointers when possible.
+ (month_cmp): Rewrite to avoid casts.
+ (inittables): Initialize tables unconditionally, to avoid branches.
+ (fillbuf): Return bool, not int. All uses changed.
+ (fillbuf, keycompare, new_key, main):
+ Use SIZE_MAX rather than (size_t) -1.
+ (trailing_blanks): Renamed from trim_trailing_blanks.
+ Return the number of blanks to trim. All uses changed.
+ (getmonth): Use trailing_blanks rather than open code.
+ (keycompare): Do not cast char * to unsigned char *; not needed.
+ CMP_WITH_IGNORE converts args to UCHAR, so no need to convert it
+ ourselves.
+ (compare, main): Use | rather than || to avoid jumps.
+ Replace "diff = NONZERO (alen)" with "diff = 1", since alen must
+ be nonzero there.
+ (check, first_same_file, sort, main):
+ Use bool instead of int local vars when possible.
+ (check): Merge the old 'checkfp' and 'check' into a single function,
+ that returns a boolean (true if the file was ordered).
+ All uses changed.
+ (main): Use int instead of unsigned for iterating through nsigs.
+ Rename local var "posix_pedantic" to "posixly_correct".
+
+2003-08-02 Jim Meyering <jim@meyering.net>
+
+ * src/nice.c [!NICE_PRIORITY]: Include <time.h> before <sys/resource.h>
+ to avoid compilation error on Ultrix. Reported by Christian Krackowizer.
+
+ * src/cut.c (cut_fields): Don't read again after encountering an
+ initial EOF. E.g., `cut -f2' would do so.
+ * tests/misc/tty-eof: Add a test for the above fix.
+
+ * src/sort.c (sortlines): Add description and references.
+ From Paul Eggert.
+
+ * tests/Makefile.am (TESTS_ENVIRONMENT): Set PATH so that
+ the tests in help-version will use the just-built binaries.
+ Reported by Christian Krackowizer.
+
+2003-07-31 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS: Add --rfc-2822 option to GNU date.
+ * doc/coreutils.texi (Time directives, Options for date, Examples
+ of date): Likewise.
+ * src/date.c (long_options, usage, main): Likewise.
+ * doc/getdate.texi (General date syntax): Likewise.
+ * doc/coreutils.texi (Options for date): Fix a typo in format:
+ it's now %d not %_d. Add URLs.
+
+2003-08-01 Jim Meyering <jim@meyering.net>
+
+ * tests/shred/remove: Ensure that $? is 0 for the final `exit 0'.
+ Otherwise, with at least the /bin/sh from HPUX 10.20,
+ the trap code would end up converting that to exit 1 and thus an
+ unexpected test failure. Reported by Christian Krackowizer.
+
+2003-07-31 Paul Eggert <eggert@twinsun.com>
+
+ * src/ptx.c: Do not include bumpalloc.h.
+ (WORD_TABLE): New member alloc.
+ (ALLOC_NEW_WORD): Remove.
+ (occurs_alloc): New var.
+ (digest_word_file, find_occurs_in_text): Check for arithmetic
+ overflow when computing table size. Use xrealloc rather than
+ bumpalloc primitives.
+
+2003-07-29 Jim Meyering <jim@meyering.net>
+
+ * Version 5.0.90.
+
+ * README: When running tests as root, suggest using
+ sudo with NON_ROOT_USERNAME=$USER.
+
+ * tests/Makefile.am (all_programs): Makefile is in ../src, not
+ $(srcdir)/../src.
+
+2003-07-28 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (GZIP_ENV): Try Debian/gzip's new --rsyncable option.
+
+2003-07-28 Paul Eggert <eggert@twinsun.com>
+
+ * lib/stdbool.hin (_Bool): Make it signed char, instead of
+ an enum type, so that it's guaranteed to promote to int.
+ * src/sort.c (sortlines_temp): Undo previous change.
+
+2003-07-28 Jim Meyering <jim@meyering.net>
+
+ * src/sort.c (sortlines_temp): Declare local `swap' to be `int', not
+ `bool'. Otherwise, at least one buggy compiler (alpha gcc-2.95.4)
+ would cause lines[-1 - swap] (with swap = false) to evaluate to
+ lines[4294967295].
+
+2003-07-27 Jim Meyering <jim@meyering.net>
+
+ * tests/priv-check (my_uid): Use `!', not `^' in case pattern `[!0-9]',
+ since /bin/sh of at least NetBSD 1.6 and OpenBSD 3.2 don't accept `^'.
+
+ * src/remove.c (prompt) [! recursive]: Don't prompt about unwritable
+ directories, as required by POSIX. Reported by Karl Berry.
+ * tests/rm/dir-no-w: New file. Test for the above fix.
+ * tests/rm/Makefile.am (TESTS): Add dir-no-w.
+
+ * tests/mk-script: Emit `$xx', not its expansion.
+
+2003-07-27 Paul Eggert <eggert@twinsun.com>
+
+ This change was inspired by a similar proposal by Stepan Kasal.
+ * src/sort.c (mergelines, sortlines_temp): New functions.
+ (sortlines): Use them, to reduce the number of times that
+ we need to copy 'struct line' values. This improved CPU
+ performance by about 30% on one 18 MB test.
+ (sort): Don't invoke sortlines unless we have 2 or more lines.
+
+2003-07-26 Stepan Kasal <kasal@ucw.cz>
+
+ * src/sort.c (sort): Don't require two `struct line's per text line,
+ the new sort algorithm requires just 1.5.
+
+2003-07-27 Jim Meyering <jim@meyering.net>
+
+ * src/pathchk.c (validate_path): Use %lu, not %ld.
+ From Paul Eggert.
+ * src/cut.c (is_printable_field): Simplify bit arithmetic.
+ From Paul Eggert.
+ * src/ls.c (sort_files): Put `volatile' in the right place.
+ From Paul Eggert.
+
+2003-07-26 Jim Meyering <jim@meyering.net>
+
+ Use only one bit per field/offset in array, not one `int'.
+ * src/cut.c (printable_field): Change type to `unsigned char'.
+ (mark_printable_field, is_printable_field): New functions.
+ Use them in place of all direct accesses of `printable_field'.
+
+ * src/expand.c (parse_tabstops): Detect overflow properly.
+ * src/cut.c (set_fields): Likewise.
+
+ * src/rm.c: Include "dirname.h".
+ (usage): Use base_name (program_name) in body of --help output.
+ This lets me...
+ * man/Makefile.am (.x.1): ...back out the kludge of 2003-07-22.
+ Idea from Brendan O'Dea, who suggested using
+ `program_name = basename (argv[0]);' everywhere --
+ can't do that, but using base_name works just fine here.
+
+ * src/Makefile.am (AM_INSTALLCHECK_STD_OPTIONS_EXEMPT): Exempt test.
+
+2003-07-24 Paul Eggert <eggert@twinsun.com>
+
+ Fix some POSIX-compliance problems with 'test'. This makes
+ 'test' more compatible with Bash.
+
+ * NEWS, doc/coreutils.texi: Document the following.
+ * src/test.c: Include exitfail.h.
+ (TEST_FAILURE): New constant, used for exit status if 'test' fails.
+ (test-syntax_error): Use it.
+ (binary_operator): Now takes bool arg specifying whether left operand
+ is -l ARG, so that caller determines this rather than us.
+ All uses changed.
+ (term): Use posixtest to evaluate parenthesized subexpressions.
+ (unary_operator, one_argument): Remove support for -t without operand.
+ (one_argument): Take argument from argv[pos].
+ (one_argument, two_arguments, three_arguments): Advance pos.
+ All callers changed.
+ (three_arguments): Look for binary ops before "!". Then look
+ for parenthesized one_argument expressions, instead of trusting
+ expr () to do the right thing.
+ (posixtest): Now takes number of args. All callers changed.
+ Treat "( A B )" like "A B".
+ (main): Set exit_failure to TEST_FAILURE. Don't depend on
+ POSIXLY_CORRECT, as we now conform to POSIX by default.
+ (main) [!LBRACKET]: Do not recognize "--help" or "--verbose" unless.
+ * tests/test/Test.pm (test_vector): Add several tests to check
+ the above. Syntax errors now exit with status 2, not 1.
+ * man/Makefile.am (mapped_name): Use `../src/[' binary to create test.1.
+
+2003-07-26 Jim Meyering <jim@meyering.net>
+
+ * tests/help-version: Adjust for above change in test behavior:
+ `[' exits with 2, not 1, and test doesn't accept --help or --version.
+
+ * Makefile.maint (ME): Don't use trick suggested in Make manual.
+ It doesn't work for make-3.79.1. Reported by Christian Krackowizer.
+
+ * Makefile.maint (sc_system_h_headers): Another syntax check.
+ (syntax-check-rules): Add it to the list.
+
+ * src/pathchk.c (validate_path): Cast strlen value to `unsigned long'
+ so it matches `%ld' format even on 32-bit systems.
+
+ * src/fmt.c (flush_paragraph): Cast field width to `int' to
+ avoid warning on 64-bit systems.
+
+ * src/ls.c (sort_files): Make `func' volatile, so it can't be
+ clobbered by a `longjmp' into this function.
+
+2003-07-25 Jim Meyering <jim@meyering.net>
+
+ * src/pathchk.c (validate_path): Use %ld format (not %d) for size_t
+ value.
+
+ * tests/misc/split-fail: Disable the --line-bytes=$_4gb test,
+ because it'd evoke spurious failure on 64-bit systems.
+
+2003-07-24 Jim Meyering <jim@meyering.net>
+
+ * src/dd.c (usage): Document the fact that SIGUSR1 makes dd
+ output its current record counts. Reported by Jurriaan.
+
+ * tests/wc/Test.pm (test_vector): Disable the `PIPE' tests when running
+ `wc' with no options. This goes along with the change of 2003-07-20.
+
+2003-07-23 Jim Meyering <jim@meyering.net>
+
+ Don't include headers already included by system.h:
+ * src/tr.c: Don't include errno.h.
+ * src/true.c: Don't include version-etc.h.
+ * src/test.c: Don't include limits.h or error.h.
+ * src/stat.c: Don't include unistd.h or time.h.
+ * src/readlink.c: Don't include stdlib.h, unistd.h, or limits.h.
+ * src/pr.c: Don't include time.h.
+ * src/pathchk.c: Don't include errno.h.
+ * src/nice.c: Don't include sys/time.h.
+ * src/ls.c: Don't include stdlib.h.
+
+ * basename.c, cat.c, chroot.c, cksum.c, comm.c, csplit.c, cut.c, date.c:
+ * dd.c, dirname.c, echo.c, env.c, expand.c, expr.c, factor.c, fmt.c:
+ * fold.c, head.c, hostid.c, hostname.c, id.c, join.c, kill.c, logname.c:
+ * md5sum.c, nice.c, nl.c, nohup.c, od.c, paste.c, pathchk.c, pinky.c:
+ * pr.c, printenv.c, printf.c, ptx.c, pwd.c, seq.c, setuidgid.c, shred.c:
+ * sleep.c, sort.c, split.c, stat.c, stty.c, su.c, sum.c, tac.c, tail.c:
+ * tee.c, test.c, tr.c, true.c, tsort.c, tty.c, uname.c, unexpand.c:
+ * uniq.c, uptime.c, users.c, wc.c, who.c, whoami.c, yes.c:
+ Don't include closeout.h.
+
+ * tests/rm/fail-2eperm: Add a check for whether $NON_ROOT_USERNAME
+ can access the required version of rm.
+ * tests/rm/Makefile.am (TESTS_ENVIRONMENT): Define PACKAGE_VERSION.
+
+ * tests/cut/Test.pm (out-delim3a): New test.
+
+ * man/help2man: Update to version 1.33.
+
+ * src/expand.c (parse_tabstops): Detect overflow in tabstop sizes.
+
+ * src/dircolors.c: Include xstrndup.h.
+ (xstrndup): Remove function, now that it's been factored out into
+ it's own file.
+
+2003-07-22 Paul Eggert <eggert@twinsun.com>
+
+ * src/wc.c (wc): Fix typo in computation of file from file_x,
+ which caused the former to be used uninitialized if file_x was
+ nonzero.
+
+2003-07-22 Jim Meyering <jim@meyering.net>
+
+ * src/cut.c (set_fields): Use xcalloc in place of xmalloc+memset.
+
+ * man/Makefile.am (.x.1): Substitute 's,$t/$*,$*,' on output of
+ help2man, to avoid having `rm.td/rm' appear in rm.1. Reported by
+ Thomas Luzat. See http://bugs.debian.org/202413 for details.
+
+ * src/cut.c (main) [lint]: Initialize spec_list_string to avoid warning.
+
+ * src/hostid.c: Don't include <unistd.h>. system.h already does that.
+
+ * src/cut.c (set_fields): Mark all selected indices before trying to
+ determine range endpoints.
+ * tests/cut/Test.pm: New test for the above fix.
+
+ Begin to address this comment: What if someone wants to
+ extract the 1,000,000-th field of some huge input file?
+ The first step is to rearrange things so that the values
+ in the printable_field array are all 0/1 rather than 0/1/2.
+ * src/cut.c (RANGE_START_SENTINEL): Remove.
+ Store range-start indices in a hash table, rather than
+ overloading the `printable_field' array.
+ (range_start_ht): New global.
+ (hash_int, hash_compare_ints, is_range_start_index): New functions.
+ (print_kth): Use is_range_start_index; don't test printable_field.
+ (set_fields): Detect overflow.
+ (set_fields): Insert each range-start index into range_start_ht.
+ (main): Call set_fields only once, and only after
+ output_delimiter_specified and (if required) range_start_ht have
+ been defined.
+
+2003-07-20 Paul Eggert <eggert@twinsun.com>
+
+ * src/wc.c (get_input_fstatus): Fix typo: `stat' was being
+ invoked with a null pointer when there were no file arguments.
+
+2003-07-20 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (sc_changelog): Add another nit-picky check.
+
+ * src/wc.c (write_counts): Add a comment.
+ (wc): Rename `file' parameter.
+ Set new local, `file', to be the file name, or (when it's NULL)
+ _("standard output") so that all uses of `file' use the proper value.
+ Use STREQ, not strcmp.
+
+2003-07-20 Paul Eggert <eggert@twinsun.com>
+
+ wc count field widths now are heuristically adjusted depending
+ on the input size, if known. If only one count is printed, it
+ is guaranteed to be printed without leading spaces.
+
+ Previously, wc did not align the count fields if
+ POSIXLY_CORRECT was set, but POSIX did not actually require
+ this undesirable behavior, so it has been removed.
+
+ * NEWS: Document this.
+ * doc/coreutils.texi (wc invocation): Likewise.
+
+ * src/wc.c (number_width): New var.
+ (posixly_correct): Remove.
+ (struct fstatus): New struct.
+ (write_counts): Output fields of width number_width.
+ Do not worry about POSIXLY_CORRECT.
+ Use null file, not empty-string file, to denote stdin,
+ since "" is a valid file name on some hosts.
+ (wc, wc_file): New arg fstatus. Use it to avoid invoking fstat
+ if possible.
+ (wc): Avoid problems if end_pos - current_pos overflows.
+ Do not print odd message if stdin has a read error.
+ (get_input_fstatus, compute_number_width): New functions.
+ (main): Use them to implement the new behavior.
+ Ignore POSIXLY_CORRECT.
+
+ * tests/wc/Test.pm: Adjust to the new output widths.
+
+2003-07-19 Jim Meyering <jim@meyering.net>
+
+ * tests/rm/fail-eperm: Don't create temporary directory --
+ we don't use it.
+
+ * tests/shred/remove: Don't open-code test for UID != 0.
+ Use priv-check's require-non-root instead.
+ Update to use newer framework.
+
+ * tests/help-version (expected_failure_status_expr): Record that
+ expr exits with status of 3 for e.g., a write error.
+
+ * tests/priv-check: Use `id -u' to see if we're running as root,
+ rather than trying go write to an write-protected file.
+ When running as root, ensure $NON_ROOT_USERNAME is valid.
+ When running as root with `require-non-root', ensure that `.'
+ is writable by $NON_ROOT_USERNAME, then reinvoke $0 set-user-ID
+ to $NON_ROOT_USERNAME. If `.' is not writable, then skip the test.
+
+ * src/printenv.c: Include "exitfail.h".
+ (main): Set exit_failure rather than calling close_stdout_set_status.
+ * src/date.c: Likewise.
+ * src/sort.c: Likewise.
+ * src/tty.c: Likewise.
+
+2003-07-18 Jim Meyering <jim@meyering.net>
+
+ * tests/touch/not-owner: Update to use newer framework.
+
+ * tests/rm/fail-eperm: Use $srcdir/../priv-check, create a temporary
+ directory, and remove Perl-coded `you may not run as root' test.
+ * tests/cp/fail-perm: Use $srcdir/../priv-check, rather than
+ hard-coding something not quite equivalent.
+ Paul Jarc reported the inconsistent diagnostics.
+
+ * src/sort.c (main): Use close_stdout via atexit.
+ Now `sort --version' and `sort --help' fail, as they should
+ when their output is redirected to /dev/full.
+
+ * src/su.c (usage): Don't call close_stdout here.
+ (main): Use close_stdout via atexit.
+ Now `su --version > /dev/full' fails, as it should.
+ Somehow, the change of 2000-05-07 that purports to fix this
+ was not checked in.
+
+ * tests/help-version (--help/--version vs. /dev/full): Special-case
+ `[' to protect it from expected_failure_status-`eval'.
+
+ * src/uniq.c (writeline): Use a SPACE, not a TAB between the
+ count and the corresponding line, as required by POSIX.
+ Reported by Clement Wang.
+ * tests/uniq/Test.pm (101, 102): Update tests of -c accordingly.
+
+ * tests/expr/basic: Add tests for when exit status is 2.
+
+ * src/nohup.c (NOHUP_FOUND_BUT_CANNOT_INVOKE, NOHUP_FAILURE):
+ Use an anonymous `enum', rather than #define.
+
+2003-07-17 Paul Eggert <eggert@twinsun.com>
+
+ * src/expr.c: Include "exitfail.h", "quotearg.h".
+ (EXPR_INVALID, EXPR_ERROR): New constants.
+ (nomoreargs, null, toarith, nextarg): Return bool, not int.
+ (syntax_error): New function, exiting with status 2. Use it
+ insteading of printing "syntax error" ourselves.
+ (main): Initialize exit_failure to EXPR_ERROR.
+ Exit with EXPR_INVALID on syntax error (too few arguments).
+ (nextarg): Use strcmp, not strcoll; strcoll might return
+ an undesirable 0, or might fail.
+ (docolon, eval4, eval3): Exit with status 3 on invalid argument type
+ or other such error.
+ (eval2): Report an error if strcoll fails in a string comparison.
+ * src/sort.c: Include "exitfail.h".
+ (main): Set exit_failure, not xalloc_exit_failure and
+ xmemcoll_exit_failure.
+ * tests/expr/basic: Invalid value exits with status 3, not 2.
+
+2003-07-16 Jim Meyering <jim@meyering.net>
+
+ * configure.ac (AC_INIT): Use 5.0.90 as the version, rather than 5.0.2,
+ per GNU maintainer guidelines. The next non-beta release will be 5.1.
+
+ This script would have caught at least two recent bugs:
+ those in [ and kill.
+ * tests/help-version: Revive this script.
+ It wasn't doing anything useful, since $all_programs wasn't being
+ defined by the invoking Makefile.am.
+ Reflect that nohup is no longer a script, so don't exclude it.
+ Add framework to handle the programs added since it was last run:
+ kill, stat, unlink, [, link, readlink.
+ Fix path-related problems deriving from the move of this script
+ from src/ to its present location.
+ * tests/Makefile.am (all_programs): Define.
+ (TESTS_ENVIRONMENT): Use it.
+
+ * src/kill.c (main): Fix bug introduced on 2003-05-10 (for 5.0.1)
+ whereby kill would always attempt to operate on argv[0] and fail.
+
+ * src/test.c (integer_expected_error): Improve diagnostic -- now,
+ it also matches the one from bash's builtin test.
+ (binary_operator): Add \n at end of diagnostic.
+
+ * tests/rm/fail-2eperm: Remove setuidgid-related code. Move it to ...
+ * tests/priv-check: Move setuidgid-related and
+ NON_ROOT_USERNAME-checking code to this file.
+
+ * README: Update section on testing as `root'.
+ Suggestion from Paul Jarc.
+
+ * src/test.c (AUTHORS): Replace 3-letter usernames with the actual
+ names of authors that I just found in bash's builtins/test.def.
+
+ Running `[' with no arguments would evoke a segfault.
+ * src/test.c (main) [LBRACKET]: Move initialization of argv to
+ precede potential use via test_syntax_error.
+
+ * src/Makefile.am (AM_CPPFLAGS): Rename from `INCLUDES', to avoid
+ warning from automake -Wall.
+
+2003-07-15 Jim Meyering <jim@meyering.net>
+
+ * Version 5.0.1.
+
+ * Makefile.maint (%.asc): Remove target first, so gpg doesn't
+ prompt us about it.
+
+ * announce-gen (print_changelog_deltas): Relax tests for matching
+ version-number line in NEWS.
+ Change the .sig suffix to .asc here, too.
+
+2003-07-14 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (%.asc): Renamed from %.sig.
+ Generate and use ascii-armored signatures.
+ Use gpg's -o option.
+
+2003-07-13 Jim Meyering <jim@meyering.net>
+
+ * src/nohup.c (NOHUP_FAILURE, NOHUP_FOUND_BUT_CANNOT_INVOKE): Define.
+ (main): Use them.
+
+ * Makefile.maint (syntax-check): Move each individual check into
+ its own target.
+ (syntax-check-rules): This is the list of syntax-check targets.
+ (sc_unmarked_diagnostics, sc_cast_of_argument_to_free):
+ (sc_cast_of_x_alloc_return_value, sc_space_tab):
+ (sc_error_exit_success, sc_xalloc_h_in_src): New targets.
+
+2003-07-12 Jim Meyering <jim@meyering.net>
+
+ * configure.ac: Remove uses of OPTIONAL_BIN_ZCRIPTS and last
+ traces of the nohup script.
+
+ * src/Makefile.am (bin_SCRIPTS): Remove use of just-removed
+ $(OPTIONAL_BIN_ZCRIPTS).
+
+ * src/Makefile.am (localedir.h): Put the `2>&1' after the redirect
+ target, not before the `>'.
+
+ * src/remove.c (remove_dir): Give a diagnostic upon failed save_cwd,
+ now that that function no longer calls `error'.
+
+ * src/df.c (find_mount_point): Emit a diagnostic for each
+ failed syscall, rather than relying on caller to do that.
+ The caller couldn't do a good job, anyhow -- too many different
+ ways to fail (each with a different referent).
+ Give a diagnostic upon failed save_cwd, now that that function
+ no longer calls `error'.
+ (show_point): Don't diagnose find_mount_point's errors, now that
+ it handles them itself.
+
+ * src/df.c (find_mount_point): Don't let free clobber errno upon
+ failed chdir.
+
+ * src/sys2.h: Remove alloca-related block.
+ * src/system.h: Include <alloca.h> here, instead.
+
+ It appears that the `#pragma alloca' included via "system.h" is
+ adequate, since join.c uses alloca, yet lacked an in-file #pragma.
+ * src/copy.c, src/cp.c, src/df.c, src/install.c, src/ln.c:
+ * src/ls.c, src/mv.c, src/remove.c: Remove `#pragma alloca'.
+
+ * src/chown-core.c (change_file_owner): Do not restore any special
+ permission bits (e.g., set-user-ID, set-group-ID) that are reset
+ by chown(2) on some systems. Suggestion and insistence :-) from
+ Michael Stone.
+
+ * tests/input-tty: Also check `test -t 1'.
+ This is necessary on linux-2.4.21. Otherwise, the stty/basic-1
+ test would block when run in the background.
+
+2003-07-11 Jim Meyering <jim@meyering.net>
+
+ * tests/sample-test: Also fail if cat-to-create-expected-output
+ fails. Otherwise, if both `exp' and `out' were to end up empty
+ because of e.g., a full disk, they would mistakenly compare equal.
+
+ * src/nohup.c: New file. Rewrite of nohup.sh in C.
+ This solves a portability problem: on at least Solaris systems,
+ when nohup.sh used the vendor /bin/sh, it would exit with status
+ of `1' rather than the required 126 or 127 upon failure to exec
+ the specified program.
+
+ * src/Makefile.am (EXTRA_SCRIPTS): Remove definition.
+ (bin_PROGRAMS): Add nohup.
+ (EXTRA_DIST): Remove nohup.sh.
+ (all_programs): Remove use of $(EXTRA_SCRIPTS).
+ * src/nohup.sh: Remove file.
+ * man/Makefile.am (nohup.1): Depend on nohup.c, rather than nohup.sh.
+
+ * tests/misc/nohup: Tests for the above.
+ * tests/misc/Makefile.am (TESTS): Add nohup.
+
+ * src/head.c (diagnose_copy_fd_failure): New function, renamed from
+ the macro, COPY_FD_DIAGNOSE.
+ (diagnose_copy_fd_failure): Enclose diagnostic in _(...).
+ (head_file): Likewise.
+
+ * src/date.c: Include "quote.h".
+ (batch_convert): Use the quote function rather than using literal `...'
+ in a diagnostic.
+
+ * src/setuidgid.c (main): Enclose diagnostic in _(...).
+ * src/fmt.c (main): Likewise.
+ * src/mknod.c (main): Likewise.
+ * src/tac.c (tac_seekable): Likewise.
+ * src/yes.c (main): Likewise.
+ * src/od.c (main): Likewise.
+ * src/install.c (change_attributes): Likewise.
+
+2003-07-10 Jim Meyering <jim@meyering.net>
+
+ * src/head.c (usage): Use 1024*1024 in place of 1048576.
+ * src/tail.c (usage): Likewise.
+
+ * tests/rm/fail-2eperm: Now that we have setuidgid, use it in
+ place of the kludge in this test. Suggestion from Paul Jarc.
+
+ * src/Makefile.am (noinst_PROGRAMS): Define to setuidgid.
+ * src/setuidgid.c: New program, solely for testing (not installed).
+
+ * src/chown-core.c (change_file_owner): Don't leak file descriptors
+ when dereferencing symlinks.
+
+2003-07-09 Jim Meyering <jim@meyering.net>
+
+ * tests/du/slash: New file/test for today's lib/ftw.c fix.
+ * tests/du/Makefile.am (TESTS): Add slash
+
+ * src/tail.c (xlseek): Avoid warning about ``return without value
+ from function returning non-void''.
+
+2003-07-08 Jim Meyering <jim@meyering.net>
+
+ * man/help2man: Update to version 1.29.
+
+ * man/help2man: Add END handler to close STDOUT and check for errors.
+
+2003-06-30 Paul Eggert <eggert@twinsun.com>
+
+ Add support for a "[" that conforms to the GNU coding standards,
+ i.e., that does not depend on its name.
+ * src/lbracket.c: New file.
+ * README: Add "[".
+ * man/Makefile.am (programs): Ignore "[", since it doesn't have
+ a separate man page.
+ * src/Makefile.am (bin_PROGRAMS): Add "[".
+ (__SOURCES): New var.
+ * src/test.c (LBRACKET): Define to 0 if not defined.
+ (main): Use LBRACKET rather than argv[0].
+
+ * src/test.c (one_argument): Do not check for -t if POSIXLY_CORRECT.
+ Reported by Paul Jarc and Dan Jacobson.
+
+ * src/test.c (main): Do not recognize --help or --version if
+ POSIXLY_CORRECT, when invoked as "test". Handle "[ ]" correctly.
+ Do not bother testing that margv[margc] is non-null.
+
+2003-07-04 Jim Meyering <jim@meyering.net>
+
+ * src/who.c (print_line): Rewrite to use asprintf, in order to be
+ able to avoid emitting trailing spaces. Reported by Dan Jacobson.
+
+ * tests/misc/head-elide-tail: Add tests of head's new --lines=-N
+ option, and perform the +1600 invocations of head IFF the envvar
+ RUN_EXPENSIVE_TESTS is set.
+
+2003-07-03 Jim Meyering <jim@meyering.net>
+
+ * src/cp.c (do_copy): Give a better diagnostic when failing due
+ to nonexistent destination directory. Reported by Dmitry Rutsky.
+ See http://bugs.debian.org/199730 for details.
+
+2003-06-27 Jim Meyering <jim@meyering.net>
+
+ split's --verbose option did nothing [broken in 4.5.10 and 5.0]
+ * src/split.c (longopts): Use `1', not `0' as the value for
+ for &verbose. Reported by Keith Thompson.
+
+ Test for the above fix.
+ * tests/misc/split-a: Also use --verbose and compare stderr
+ output with what we'd expect.
+
+2003-06-20 Jim Meyering <jim@meyering.net>
+
+ * src/copy.c (copy_internal) [HAVE_STRUCT_STAT_ST_AUTHOR]:
+ Use `error_t' (rather than int) as type for local `err'.
+ From Alfred M. Szmidt.
+
+2003-06-19 Marcus Brinkmann <marcus@gnu.org>
+
+ * src/copy.c (copy_internal) [HAVE_STRUCT_STAT_ST_AUTHOR]:
+ Fix author preservation code.
+
+2003-06-19 Jim Meyering <jim@meyering.net>
+
+ * src/ln.c (ENABLE_HARD_LINK_TO_SYMLINK_WARNING): Define to 0.
+ (do_link): Don't warn about hard link to symlink.
+
+2003-06-18 Jim Meyering <jim@meyering.net>
+
+ * src/cut.c: Include "getdelim2.h", not "getstr.h".
+ Reflect renaming: getstr -> getdelim2.
+
+ * src/comm.c, src/join.c, src/nl.c, src/uniq.c: Reflect renaming:
+ readline -> readlinebuffer.
+
+2003-06-09 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * src/readlink.c: Include <sys/types.h> before system.h (because
+ the latter includes <sys/stat.h>). Required on Ultrix 4.3.
+
+2003-06-17 Jim Meyering <jim@meyering.net>
+
+ * src/system.h (initialize_main): Define.
+ Use it in every `main'. Applied via this:
+ p='initialize_main (&argc, &argv);'
+ perl -ni -e '/program_name.=.argv.0/ and print " '"$p"'\n"; print' \
+ $(grep -l program_name.=.argv.0 *.c)
+ test.c uses margc/margv, so I made the change manually for that file.
+ Based on a patch from Bernard Giroud.
+
+2003-06-09 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ Fix for build failure on Ultrix 4.3.
+ * src/stat.c: Include sys/statvfs.h in preference to sys/vfs.h.
+ Include sys/param.h and sys/mount.h on ultrix.
+
+2003-06-16 Jim Meyering <jim@meyering.net>
+
+ * src/touch.c (O_NDELAY, O_NONBLOCK, O_NOCTTY, EISDIR): Remove
+ definitions.
+ * src/system.h (O_NDELAY, O_NONBLOCK, O_NOCTTY, EISDIR): Define
+ them here instead, but with one change: define EISDIR to -1, not 0.
+
+ * src/cat.c (cat): Remove `#ifndef ENOSYS', now that it's
+ guaranteed to be defined.
+ * src/system.h (ENOSYS, ENOTSUP): Define to -1 if not defined.
+
+ * README: Mention the CVS repository.
+ Encourage addition of test cases.
+
+2003-06-12 Jim Meyering <jim@meyering.net>
+
+ * src/touch.c (touch): Call close only if necessary.
+ From Bruno Haible.
+
+ * src/wc.c (usage): Correct wording: wc prints counts in the order
+ `newline, word, byte'. Reported by Keith M. Briggs.
+ * man/wc.x: Fix it here, too. And change `lines' to `newlines'.
+
+2003-06-10 Jim Meyering <jim@meyering.net>
+
+ * tests/date/Test.pm: Add a test for the new format, e.g., May-23-2003.
+
+2003-06-07 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (syntax-check): Add commented-out (over-aggressive)
+ rule.
+
+2003-06-06 Jim Meyering <jim@meyering.net>
+
+ * src/extract-magic (main): Avoid newer 3-arg form of open,
+ so this script works also with e.g., perl5.005_03.
+ Patch by John David Anglin.
+
+2003-06-04 Paul Eggert <eggert@twinsun.com>
+
+ * src/system.h: Include <stdbool.h> unconditionally.
+
+2003-06-04 Jim Meyering <jim@meyering.net>
+
+ * man/Makefile.am (check-programs-vs-x): Rename target
+ from check-programs-vs-1. Adjust rule to check for the
+ primary (.x) file, not the generated one (.1).
+
+2003-06-03 Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>
+
+ * man/kill.x: New file.
+ * man/Makefile.am (dist_man_MANS): Add kill.1.
+ (kill.1): New rule.
+
+2003-06-04 Jim Meyering <jim@meyering.net>
+
+ Ensure that the .x file for a new program is never forgotten again.
+ * man/Makefile.am (programs): Define.
+ (check-programs-vs-1): New phony target.
+ (check-local): Depend on it.
+
+2003-06-03 Jim Meyering <jim@meyering.net>
+
+ Avoid unnecessary copying of environment.
+ * src/env.c (main): Rather than clearing the environment and --
+ unless told to ignore environment -- copying all settings from
+ the saved, original environment, clear the environment only when
+ that is requested. Suggested by Jens Elkner.
+
+2003-06-02 Jim Meyering <jim@meyering.net>
+
+ * src/system.h: Always include <string.h>, since we assume C89.
+ Include <limits.h> without checking for HAVE_LIMITS_H.
+
+ * src/test.c [!TEST_STANDALONE]: Remove #if-0'd block.
+ (STREQ, S_IXUGO): Remove redundant (in system.h) definitions.
+
+2003-06-01 Jim Meyering <jim@meyering.net>
+
+ Avoid a race condition in `tail -f' described by Ken Raeburn in
+ http://mail.gnu.org/archive/html/bug-textutils/2003-05/msg00007.html
+ * src/tail.c (file_lines): Add new parameter, *read_pos, and set it.
+ (pipe_lines, pipe_bytes, start_bytes, start_lines): Likewise.
+ (tail_bytes, tail_lines, tail): Likewise.
+ (tail_file): Use the new `read_pos' value as the size,
+ rather than stats.st_size from the fstat call.
+
+2003-05-28 Jim Meyering <jim@meyering.net>
+
+ * src/extract-magic: Allow expansion of `$file' in the here-
+ document corresponding to the comment at the top of fs.h.
+
+2003-05-26 Jim Meyering <jim@meyering.net>
+
+ * src/stat.c: Fix portability problem on FreeBSD5.0: don't include
+ <sys/statvfs.h> on systems without HAVE_STRUCT_STATVFS_F_BASETYPE.
+ Use #if/#elif/... cascade so we get only one set of include files.
+ Reported by Nelson Beebe.
+
+2003-05-24 Jim Meyering <jim@meyering.net>
+
+ * src/md5sum.c (split_3): Accept the BSD format only when in MD5 mode.
+ * tests/sha1sum/basic-1: Make sure `sha1sum --check' doesn't
+ accept the BSD format.
+
+2003-03-28 Joe Orton <jorton@redhat.com>
+
+ * src/md5sum.c (bsd_split_3): New function.
+ (split_3): Detect checksums from BSD 'md5' command and handle them
+ using bsd_split_3.
+
+ * tests/md5sum/basic-1: New tests for --check exit status, and for
+ BSD-style checksum files.
+
+2003-05-21 Jim Meyering <jim@meyering.net>
+
+ * src/head.c (elide_tail_lines_pipe): Fix a thinko.
+ This sort of thing is why it'd be *Really Good* to factor
+ out the common code used here and in tail.c.
+
+2003-05-14 Jim Meyering <jim@meyering.net>
+
+ * src/head.c (usage): Document new feature: --bytes=-N and --lines=-N.
+
+ * tests/du/slink: Skip this test if `.' is on an XFS file system.
+
+ * tests/du/fd-leak: New file. Test for the bug in du that
+ was fixed by the 2003-05-12 change to lib/ftw.c.
+ * tests/du/Makefile.am (TESTS): Add fd-leak.
+
+ * src/head.c (AUTHORS): Enclose string in N_(...), now that it
+ includes a translatable word, `and'.
+
+ * src/dd.c (usage): Don't use `,' as the thousands separator
+ in e.g. 1,000,000 and 1,048,576. Instead, do this:
+ `SIZE may be ..., MB 1000*1000, M 1024*1024 and so on...'
+ * src/df.c (usage): Likewise.
+ * src/du.c (usage): Likewise.
+ * src/ls.c (usage): Likewise.
+
+ * Makefile.maint (syntax-check): Add another check.
+
+2003-05-13 Paul Eggert <eggert@twinsun.com>
+
+ Fix uniq to conform to POSIX, which requires that "uniq -d -u"
+ must output nothing. Problem reported by Josh Hyman.
+
+ * src/uniq.c (enum output_mode, mode): Remove, replacing with:
+ (output_unique, output_first_repeated, output_later_repeated):
+ New vars. All uses of "mode" changed to use these variables,
+ which are not mutually exclusive as "mode" was.
+ (writeline): New arg "match", used to control whether to
+ obey output_first_repeated or output_later_repeated.
+ All callers changed.
+ (check_file, main): Adjust to above changes.
+
+ * tests/uniq/Test.pm: Test that 'uniq -d -u' outputs nothing.
+
+2003-05-14 Jim Meyering <jim@meyering.net>
+
+ * tests/rm/rm3: Use tr's \n notation rather than \012.
+ This package can afford to do that, since its tests are guaranteed use
+ GNU tr, which has accepted the more modern notation for 10 years.
+ * tests/rm/rm5: Likewise.
+ * tests/cp/same-file: Likewise.
+ * tests/stty/row-col-1: Likewise.
+ * tests/stty/basic-1: Likewise.
+ * tests/rm/deep-1: Likewise.
+ * tests/mv/part-symlink: Likewise.
+ * tests/mkdir/perm: Likewise.
+ * tests/misc/nice: Likewise.
+
+2003-05-13 Jim Meyering <jim@meyering.net>
+
+ * src/copy.c (struct F_triple) [name]: Remove const attribute.
+ (triple_free): Don't apply cast to argument of free.
+ (seen_file): Add cast here instead.
+
+ * src/cp-hash.c (struct Src_to_dest) [name]: Remove const attribute.
+ (src_to_dest_free): Don't apply cast to argument of free.
+
+ * src/sort.c (zaptemp): Don't apply cast to argument of free.
+ * src/pr.c (init_fps, init_store_cols): Likewise.
+ * src/join.c (delseq, freeline): Likewise.
+ * src/expr.c (OLD): Likewise.
+ * src/sort.c (sort): Likewise.
+ * src/head.c (elide_tail_lines_pipe): Likewise.
+
+ * src/tail.c: Include "quote.h".
+ Use quote in diagnostics. Change many error format strings
+ from just `%s' to e.g., `error reading %s'.
+ (pipe_lines): Change type of parameter, n_lines, to uintmax_t.
+ Rewrite newline-counting loop to use memchr.
+
+ * src/head.c (elide_tail_lines_pipe): Use `if', not assert.
+ Now that assert is no longer used, don't include <assert.h>.
+
+2003-05-12 Jim Meyering <jim@meyering.net>
+
+ * src/head.c: Include <assert.h>.
+ (AUTHORS): Add my name.
+ (elide_tail_lines_pipe): New function.
+
+2003-05-10 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (syntax-check): Check for `error (EXIT_SUCCESS,'.
+
+ * src/readlink.c (main): Set program_name before first use.
+ Remove that (redundant) first use.
+ Don't exit successfully just because --verbose was specified.
+ Pass 0, not EXIT_SUCCESS, as first argument to error; when that
+ parameter is 0, error does not exit.
+
+ * src/uname.c (main): When failing due to too many arguments, also say
+ that, rather than just "Try `uname --help' for more information.".
+ * src/comm.c (main): Likewise, but for too few arguments.
+ * src/logname.c: Include error.h.
+ (main): Say why we're failing.
+
+ * src/uniq.c (main): Don't segfault when argc < optind.
+ * src/who.c (main): Handle argc < optind.
+ * src/df.c (main): Likewise.
+ * src/install.c (main): Likewise.
+ * src/mv.c (main): Likewise.
+ * src/pwd.c (main): Likewise.
+ * src/tty.c (main): Likewise.
+ * src/chroot.c (main): Likewise.
+ * src/hostname.c: Likewise.
+ * src/du.c (main): Likewise.
+ * src/expand.c (main): Likewise.
+ * src/env.c (main): Likewise.
+ * src/unexpand.c (main): Likewise.
+ * src/printenv.c (main): Likewise.
+ * src/sync.c (main): Handle argc == 0.
+ * src/expr.c (main): Likewise.
+ * src/printf.c (main): Likewise.
+ * src/basename.c (main): Likewise.
+ * src/ln.c (main): Test for `missing argument' before computing n_files.
+ * src/tail.c (main): Test for the case of no arguments before
+ computing n_files.
+
+ * src/kill.c (send_signals): Don't check command line arguments here.
+ (main): Check them here instead. Handle argc < optind.
+
+ * src/logname.c (main): Use error, rather than fprintf, for the sake
+ of consistency.
+
+ * src/rm.c (main): Don't overrun array bound if argc is 0.
+
+2003-05-09 Jim Meyering <jim@meyering.net>
+
+ * src/sort.c (main): Don't overrun array bound if argc is 0.
+ That would happen when invoked via: execl ("/usr/bin/sort", NULL);
+ Reported by Wartan Hachaturow.
+
+2003-05-07 Jim Meyering <jim@meyering.net>
+
+ Implement support so that `head --lines=-N' works on seekable files.
+ * src/head.c (enum Copy_fd_status): Define.
+ (COPY_FD_DIAGNOSE): New macro.
+ (elide_tail_lines_seekable): New funtion.
+ (elide_tail_lines_file): Call it here.
+
+2003-05-06 Jim Meyering <jim@meyering.net>
+
+ * src/sys2.h (CHAR_BIT): Remove duplicate definition.
+
+2003-05-04 Jim Meyering <jim@meyering.net>
+
+ * tests/head/Test.pm: Remove tests of --bytes=-N; using that framework
+ caused the addition of thousands of small files to the tar archive.
+ * tests/misc/head-elide-tail: New file. Add them here instead.
+ * tests/misc/Makefile.am (TESTS): Add head-elide-tail.
+
+2003-05-04 Paul Eggert <eggert@twinsun.com>
+
+ * src/remove.c (HAVE_WORKING_READDIR): Define to 0 if not defined.
+ (IF_READDIR_NEEDS_REWINDDIR): Remove.
+ (remove_cwd_entries): Rewrite to avoid IF_READDIR_NEEDS_REWINDDIR,
+ which was a bit weird because it couldn't be emulated by a function.
+
+2003-05-03 Jim Meyering <jim@meyering.net>
+
+ Extend head to accept --lines=-N (--bytes=-N) and to print all
+ but the N lines (bytes) at the end of the file.
+ * src/head.c: Include full-write.h, full-read.h, inttostr.h, quote.h.
+ Use quote() in diagnostics, rather than literal `' marks.
+ (copy_fd, elide_tail_bytes_pipe, elide_tail_bytes_file):
+ New functions.
+ (elide_tail_lines_pipe, elide_tail_lines_file): New functions.
+ (head_file): Reorganize so as to call head from only one place.
+ (main): Likewise, for head_file.
+ Handle new, undocumented option, --presume-input-pipe.
+ Handle negative line and byte counts.
+ * tests/head/Test.pm: Add lots of tests to exercise --bytes=-N.
+
+ * tests/du/8gb: Skip test if the file system of `.' doesn't support
+ sparse files -- otherwise it'd create a file of size 8GB.
+
+2003-05-02 Jim Meyering <jim@meyering.net>
+
+ * src/fmt.c (usage): Don't mention obsolescent -WIDTH option.
+ Instead explain about `-' and standard input.
+ (main): Give a proper diagnostic for e.g., `fmt -c -72'.
+ Reported by Keith Thompson.
+ * tests/fmt/basic: Add test for the above fix.
+
+ * src/fmt.c: Include "quote.h".
+ Use quote() in diagnostics, rather than literal `' marks.
+ (main): Exit nonzero when unable to open an input file.
+ * tests/fmt/basic: Add test for the above fix.
+
+ * src/fmt.c (main): Diagnose invalid suffix on obsolescent width
+ specifications like `-72x'.
+ * tests/fmt/basic: Add test for the above fix.
+
+ Work around nasty readdir bug on Darwin6.5.
+ * src/remove.c (IF_READDIR_NEEDS_REWINDDIR): Define.
+ [! HAVE_WORKING_READDIR] (remove_cwd_entries): If readdir has just
+ returned NULL and there has been at least one successful unlink or
+ rmdir call since the opendir or previous rewinddir, then call
+ rewinddir and reiterate the loop.
+
+ Factor out common code.
+ * src/remove.c (readdir_ignoring_dotdirs): New function.
+ (is_empty_dir): Use it here.
+ (remove_cwd_entries): Use it here.
+
+2003-05-01 Jim Meyering <jim@meyering.net>
+
+ * tests/rm/r-3: Create 500 rather than just 300 files.
+ There's a bug in Darwin6.5's readdir that shows up only with
+ 338 or more files.
+ Fix a bug in this test: `cd $pwd' (not to `..'), now that $tmp
+ has two components.
+
+ * src/tail.c:
+ Change type of n_units, n_bytes, n_lines to be `uintmax_t'.
+ (dump_remainder): Move two declarations `down' into the scope
+ where they are used.
+ (xlseek): Return the resulting offset.
+ (file_lines): Rename parameter, file_length, to end_pos.
+ (pipe_lines): Don't coerce safe_read return value to `int'.
+ Adapt tests accordingly.
+ (pipe_bytes) [struct charbuffer] (nbytes): Change type from `int'
+ to `unsigned int'.
+ Change type of `total_bytes' from `int' to `size_t',
+ since the former wouldn't always be wide enough.
+ Don't coerce safe_read return value to `int',
+ and adapt tests accordingly.
+ Now that testing for a read error no longer involves
+ using `tmp', handle that case *after* freeing `tmp'.
+ (start_bytes): Clean up.
+ (tail_bytes): Now that `n_bytes' may be larger than
+ OFF_T_MAX, test for that condition and, if it's true, don't
+ use lseek optimizations.
+ (parse_options): Don't fail just because N_UNITS is larger than
+ the maximum size of a file -- tail may be applied to an input
+ stream (e.g., a pipe) with more data than that.
+
+ * Makefile.maint (syntax-check): Rename from alloc-check.
+ Also check for SPACE-TAB sequences.
+ Also check for malloc/calloc/realloc casts.
+
+2003-05-01 Jim Meyering <jim@meyering.net>
+
+ * src/tail.c (start_lines): Rewrite to use memchr. Clean up.
+
+2003-04-28 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/tty-eof: Send two tokens, not just one, so we don't
+ make the now-more-picky tsort fail.
+
+2003-04-24 Jim Meyering <jim@meyering.net>
+
+ * src/tsort.c (tsort): Remove unnecessary test of have_read_stdin.
+ (main): Minor syntactic clean-up.
+
+ * src/tsort.c (tsort): Fail if the input contains an odd number of
+ tokens. Reported by junkio@cox.net.
+
+ * tests/tsort/basic-1: Test for the above fix.
+
+2003-04-21 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/printf: Add tests for the printf fixes below.
+
+ * Makefile.cfg (cvs_files): Add $(srcdir)/config/depcomp to the list.
+
+2003-04-20 Paul Eggert <eggert@twinsun.com>
+
+ Fix printf POSIX compatibility bug reported by Ben Harris in
+ <http://mail.gnu.org/archive/html/bug-coreutils/2003-04/msg00070.html>.
+ * doc/coreutils.texi (printf invocation): It's \NNN in the format,
+ \0NNN in the %b operand.
+ * src/printf.c (usage): Likewise.
+ (print_esc): New arg OCTAL0 to specify whether \0NNN or \NNN
+ is desired. All uses changed. Behave like Bash printf if %b
+ operand uses \NNN where the initial N is not 0.
+
+2003-04-17 Jim Meyering <jim@meyering.net>
+
+ * src/stty.c: Remove uses of PROTOTYPE macro.
+
+2003-04-15 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint: Remove (or replace-with-TAB(s) to retain alignment)
+ each sequence of spaces before a TAB character.
+
+2003-04-13 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (is_empty_dir): Don't closedir (NULL).
+
+2003-04-12 Jim Meyering <jim@meyering.net>
+
+ Giving nl an invalid STYLE argument (in --header-numbering=STYLE (-h),
+ --body-numbering=STYLE (-b), or --footer-numbering=STYLE (-f)) or
+ FORMAT (--number-format=FORMAT (-n)) would not give a useful diagnostic.
+ * src/nl.c (main): Fix those problems and remove literal quote marks
+ (e.g., "`%s'") from format string; instead use "%s" in each format
+ string and `quote (optarg)' as the corresponding argument.
+ Also, diagnose all invalid command line options before failing.
+
+ * src/nl.c (proc_text): Fix a bug that would make nl output extra
+ newlines in some cases. Details here: http://bugs.debian.org/177256.
+ This bug was introduced on 2001-11-10 for textutils-2.0.17.
+ * tests/misc/nl: Add test for the above-fixed bug.
+
+ * tests/misc/readlink: New file. Test the --canonicalize option.
+ * tests/misc/Makefile.am (TESTS): Add readlink.
+
+2003-04-11 Jim Meyering <jim@meyering.net>
+
+ Clean up.
+ * src/chown.c, src/cp.c, src/dircolors.hin, src/du.c, src/ln.c:
+ * src/mkfifo.c, src/ptx.c, src/spline.c, src/stty.c, src/tail.c:
+ * src/test.c, src/unexpand.c: Remove (or replace-with-TAB(s) to
+ retain alignment) each sequence of spaces before a TAB character.
+
+ * src/ls.c: Include <stdlib.h> unconditionally.
+
+ * Makefile.maint (xalloc-check): Rename from header-check.
+
+ * src/yes.c: Include error.h after system.h, not before.
+
+ Clean up.
+ * src/copy.c, src/cp-hash.c, src/cp.c, src/csplit.c, src/cut.c:
+ * src/date.c, src/df.c, src/du.c, src/expand.c, src/expr.c, src/id.c:
+ * src/join.c, src/md5sum.c, src/nl.c, src/od.c, src/paste.c, src/pr.c:
+ * src/ptx.c, src/sort.c, src/split.c, src/su.c, src/tail.c, src/tee.c:
+ * src/tr.c: * src/unexpand.c, src/users.c:
+ Remove anachronistic casts of xmalloc, xrealloc, and xcalloc
+ return values and of xrealloc's first argument.
+ Fix the former with this:
+ perl -pi -e 's/\([^(]*?\*\) *(x(m|c|re)alloc)\b/$1/'
+
+2003-04-10 Jim Meyering <jim@meyering.net>
+
+ * src/stty.c (wrapf): Declare with format attribute.
+
+ The S_MAGIC_... names shouldn't be maintained in two places (prior
+ to this change, one would have to keep stat.c and fs.h in sync).
+ This change makes it so those names and the corresponding
+ hexadecimal constants all reside in stat.c. fs.h is now generated.
+ * src/Makefile.am (fs.h): New rule to generate fs.h from stat.c.
+ (BUILT_SOURCES): Add fs.h, now that it's generated.
+ (EXTRA_DIST): Add extract-magic.
+ * src/extract-magic: New script to extract fs.h definitions from stat.c.
+ * src/stat.c (human_fstype) [__linux__]: Append each hex constant from
+ fs.h in a comment after the corresponding `case S_MAGIC_...:' statement.
+
+ * tests/tail-2/big-4gb: Skip this test (don't fail) if creating a
+ file with nominal length > 4GB fails. Reported by Michael Deutschmann.
+
+ * man/unexpand.x: Add `SEE ALSO' reference to expand.
+ * man/expand.x: Add `SEE ALSO' reference to unexpand.
+ Suggestion from Dan Jacobson.
+
+2003-04-10 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+
+ * src/fs.h (S_MAGIC_DEVPTS): New magic for Linux's devpts.
+ * src/stat.c (human_fstype): Handle Linux's devpts.
+
+2003-04-09 Paul Eggert <eggert@twinsun.com>
+
+ * src/split.c (line_bytes_split): Arg is of type size_t, since
+ that's all that is supported for now.
+ (main): Check for overflow in obsolescent line count option.
+
+2003-04-09 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/split-fail: Add a new test for the above fix.
+
+ * src/split.c (bytes_split): Use size_t temporary (rather than
+ uintmax_t original) in remaining computations. From Paul Eggert.
+
+ Handle command line option arguments larger than 2^31.
+ This allows e.g., splitting into files of size 2GB and larger,
+ and running split --lines=N with N=2^31 or more.
+ But for --line-bytes=N, the restriction that N <= SIZE_MAX
+ remains (for now), due to the way it is implemented.
+
+ * src/split.c: Include "inttostr.h".
+ (bytes_split, lines_split, line_bytes_split, main):
+ Use uintmax_t, not size_t, for file sizes.
+ (main): Give a better diagnostic for option arguments == 0.
+ Use umaxtostr to print file sizes.
+ Reported by Luke Hassell.
+
+2003-04-08 Jim Meyering <jim@meyering.net>
+
+ * src/rm.c (usage): Mention that --directory (-d) works only
+ on some systems. Suggestion from Samuel Tardieu.
+
+ * tests/basename/basic: Run $PERL to see if it is available,
+ rather than testing its value.
+ * tests/sum/sysv, tests/tsort/basic-1, tests/unexpand/basic-1:
+ * tests/basename/basic, tests/dd/skip-seek, tests/dircolors/simple:
+ * tests/expr/basic, tests/factor/basic, tests/fmt/basic:
+ * tests/ls-2/tests, tests/md5sum/basic-1, tests/md5sum/newline-1:
+ * tests/misc/sort, tests/misc/tty-eof, tests/mv/i-1:
+ * tests/rm/empty-name, tests/rm/fail-eperm, tests/rm/unreadable:
+ * tests/seq/basic, tests/sha1sum/basic-1, tests/sha1sum/sample-vec:
+ * tests/sum/basic-1, tests/seq/basic: Likewise.
+
+ * tests/misc/Makefile.am (TESTS): Add split-fail.
+ * tests/misc/split-fail: New file.
+
+ * src/split.c: Rename local variables: nchars -> n_bytes.
+ (lines_split): Rename local, nlines -> n_lines.
+ (main): Rename local variable: s/accum/n_units/.
+ (main): Use STDIN_FILENO, not literal `0'.
+
+2003-04-07 Jim Meyering <jim@meyering.net>
+
+ * src/stat.c: Add #include directives for Ultrix 4.4.
+ Based on a suggested change from Bert Deknuydt.
+
+2003-04-06 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (makefile-check): New rule.
+ (local-check): Add it.
+
+2003-04-05 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (nearly all of them):
+ Use $(VAR) rather than @VAR@, now that we can rely on automake to
+ emit a definition for each substituted variable.
+ * tests/Makefile.am.in: Likewise.
+
+ * tests/rm/rm5: Add a comment explaining why this test fails when
+ using Tru64's broken sed.
+ * tests/rm/rm3: Likewise.
+
+ Make `kill -t' output signal descriptions (not `?') on Tru64.
+ * src/kill.c (sys_siglist): Also check for __sys_siglist.
+ Patch by Tony Leneis.
+ * configure.ac: Also check for declaration of __sys_siglist.
+ Required for Tru64 4.0D, 4.0F, and 5.1.
+ Reported by Tony Leneis.
+
+2003-04-04 Jim Meyering <jim@meyering.net>
+
+ * src/Makefile.am (PERL): Remove unnecessary definition.
+
+ Because of inappropriate (but POSIX-mandated) behavior of rename,
+ `mv a b' would not remove `a' in some unusual cases. Work around
+ this by unlinking `a' when necessary.
+
+ * src/copy.c (same_file_ok): Add an output parameter.
+ Set it in the offending case.
+ (copy_internal): When necessary, unlink SRC_PATH and inform caller.
+ Reported by Ed Avis.
+ * tests/mv/hard-4: New test for the above.
+ * tests/mv/Makefile.am (TESTS): Add hard-4.
+
+ Clean up rules for automatically generated sources:
+ * src/Makefile.am (dircolors.h, wheel-size.h, wheel.h, false.c):
+ Make each generated file be read-only.
+ Add each file name to BUILT_SOURCES separately.
+ (MAINTAINERCLEANFILES): Set to $(BUILT_SOURCES).
+
+ Put LOCALEDIR macro definition in new file: localedir.h.
+ * src/Makefile.am (DEFS): Remove definition.
+ (localedir.h): New rule.
+ (BUILT_SOURCES, DISTCLEANFILES): Add localedir.h.
+ * src/system.h: Include "localedir.h".
+
+2003-04-02 Jim Meyering <jim@meyering.net>
+
+ * Version 5.0.
+
+ * tests/misc/Makefile.am (TESTS): Add false.
+
+ * Makefile.maint (TMPDIR): Make sure it's defined.
+ (my-distcheck): Build in $(TMPDIR), not `.'.
+
+ * src/Makefile.am (false.c): Change all occurrences of
+ `(EXIT_SUCCESS)' to `(EXIT_FAILURE)' so that false exits
+ unsuccessfully also with --help. Reported by Paul Jarc,
+ * tests/misc/false: New test for the above.
+
+2003-03-30 Jim Meyering <jim@meyering.net>
+
+ * NEWS: Note the location of older NEWS files.
+
+ * src/remove.c (is_empty_dir): Don't let a failing closedir
+ clobber errno. Spotted by Arnold Robbins.
+
+ * src/env.c: Fix typo in comment. From Arnold Robbins.
+
+2003-03-29 Jim Meyering <jim@meyering.net>
+
+ * Version 4.5.12.
+
+ * README: Note to expect build problems for stat.c on Ultrix 4.3.
+ Note that there are some harmless test failures when running
+ `make check' as root on some systems.
+
+2003-03-28 Jim Meyering <jim@meyering.net>
+
+ * tests/stty/row-col-1: Skip this test if stty can't get window size.
+ This happens when connecting to sparc-solaris5.7 via ssh from within
+ emacs. Reported by Karl Berry.
+
+ * tests/du/basic: Use seq, not `yes' to generate 4KB of data.
+ Otherwise, on systems (DJGPP) that emulate pipes using files,
+ this test would never complete, waiting for `yes' to terminate.
+ * tests/du/slink: As above, use seq, not `yes' to generate link target.
+ * tests/rm/hash: As above, use seq, not `yes' to generate dir name.
+ Reported by Rich Dawe.
+
+2003-03-27 Jim Meyering <jim@meyering.net>
+
+ * src/id.c: Remove Arnold Robbins' obsolete e-mail address
+ from `written by...' comment, at his request.
+
+2003-03-24 Paul Eggert <eggert@twinsun.com>
+
+ Fix buffer overrun problem reported by TAKAI Kousuke, along
+ with some other POSIX incompatibilities.
+
+ * src/printf.c (print_esc): Do not treat \x specially if
+ POSIXLY_CORRECT. Avoid buffer overrun if the format ends
+ in backslash. Treat incomplete escape sequences as strings
+ of characters, as POSIX requires.
+ (print_formatted): Allow multiple flags. Avoid buffer overrun
+ if the format is incomplete.
+
+2003-03-24 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/printf: Add tests for the above fixes and changes.
+
+2003-03-26 Jim Meyering <jim@meyering.net>
+
+ * src/copy.h (struct cp_options): Add a comment.
+
+2003-03-23 Jim Meyering <jim@meyering.net>
+
+ * README: Describe problem with 64-bit mode on HPUX 11.x,
+ with patch for /usr/include/inttypes.h.
+ * TODO: Plan to add an autoconf test to work around the bug.
+
+2003-03-22 Jim Meyering <jim@meyering.net>
+
+ * src/stat.c: Don't include <sys/sysmacros.h>.
+ That is already done via system.h. Otherwise, the multiple
+ inclusion would evoke redefinition warnings from Cray's /bin/cc,
+ aka Cray Standard C Version 4.0.3 (057126) Mar 22 2003 22:02:28.
+ (human_fstype): Factor some directives `up', out of this function.
+ Cast away `const' to avoid error from Cray's /bin/cc.
+
+2003-03-20 Jim Meyering <jim@meyering.net>
+
+ * announce-gen (print_changelog_deltas): Ensure that a newline
+ precedes each row of `*'s.
+
+2003-03-20 Jim Meyering <jim@meyering.net>
+
+ * Version 4.5.11.
+
+ * src/seq.c (valid_format): Also accept ` ' and `'' as valid
+ format flag characters.
+ Do not require that a field width be specified.
+ Do not fail when given a field width of `0'.
+ Reported by Dan Jacobson.
+ * tests/seq/basic: Add new tests for the above-fixed bug.
+
+ * src/Makefile.am (all-local): Append $(EXEEXT) to use of `su'
+ (install-root): Likewise.
+ (install-exec-local): Likewise.
+ Based on a patch from Richard Dawe.
+
+2003-03-19 Jim Meyering <jim@meyering.net>
+
+ * man/Makefile.am (.x.1): Use $(LN_S) instead of 'ln -s',
+ because the DJGPP 2.03 port of 'ln -s' doesn't work.
+ Include $(EXEEXT) in program names.
+ Since $(LN_S) may degenerate to `cp -p', be careful
+ to invoke it from the destination directory.
+ Mostly from Richard Dawe.
+ * configure.ac: Use AC_PROG_LN_S.
+
+ * tests/mv/part-symlink: Unset CDPATH. Otherwise, having the
+ CDPATH shell variable set could cause this test to fail.
+ Reported by Karl Berry.
+
+2003-03-18 Jim Meyering <jim@meyering.net>
+
+ * src/fmt.c [struct Word] (paren, period, punct, final): Change the
+ type of each member from bool <MEMBER>:1 to unsigned int <MEMBER>:1.
+ AIX 5.1's xlc could not compile the former.
+ Patch by Petter Reinholdtsen. Also reported by Mike Jetzer.
+
+2003-03-17 Richard Dawe <rich@phekda.freeserve.co.uk>
+
+ * configure.ac: Include $(EXEEXT) in OPTIONAL_BIN_PROGS'
+ program names, since automake only adds $(EXEEXT) to programs
+ in its *_PROGRAMS.
+
+2003-03-16 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (rm): Put two local variables in static storage,
+ so they can't be clobbered by the potential longjmp.
+
+2003-03-15 Jim Meyering <jim@meyering.net>
+
+ * Makefile.cfg (gnu_rel_host): Fix code to match the comment
+ so that a version number with a two-digit component can still count
+ as an alpha release. Reported by Richard A Downing.
+ (gnu_rel_host): Define in terms of $(RELEASE_TYPE) instead.
+
+2003-03-14 Jim Meyering <jim@meyering.net>
+
+ * src/ansi2knr.c: Remove no-longer-used file.
+ * src/ansi2knr.1: Likewise.
+
+ * Makefile.maint (prev_version_file): Don't use ?= for this particular
+ assignment, since it causes trouble with old versions of GNU make
+ (e.g. 3.76.1). The other uses of `?=' are inoffensive. Details here.
+ http://mail.gnu.org/archive/html/bug-coreutils/2003-03/msg00028.html
+ Patch from Alexandre Duret-Lutz.
+
+ * Use patched automake-1.7.3. Regenerate Makefile.in files in
+ subdirectories so that each includes a definition of ACLOCAL_M4.
+
+ * announce-gen (main): Label the compressed source URLs.
+
+ * Version 4.5.10.
+
+ * tests/du/slink: Relax the test for the `local'ness of a file system,
+ so that now it works also for tmpfs.
+
+ * tests/du/hard-link: Transform output from first du, so that this
+ test doesn't fail on file systems like tmpfs that order directory
+ entries differently.
+
+2003-03-13 Jim Meyering <jim@meyering.net>
+
+ * tests/du/8gb: Work around what appears to be an NFS failure that
+ would make this test fail on some systems.
+
+2003-03-11 Jim Meyering <jim@meyering.net>
+
+ * tests/du/basic: Make the test file exactly 4k bytes long.
+
+ * src/split.c (longopts): Don't hard-code `2' here.
+ Instead, just specify `&verbose', and ...
+ (main): ... remove the `case 2:' block for --verbose.
+
+ * tests/du/basic: Make the test file larger than 64 bytes, so that
+ we don't immediately disqualify file systems (e.g., NetApp) on which
+ smaller files take up zero disk blocks. Reported by Vin Shelton.
+
+2003-03-10 Jim Meyering <jim@meyering.net>
+
+ Don't segfault for a negative field width or precision in format string.
+ Note that this is just a stopgap fix. The longer term solution may
+ involve adapting bash's builtins/printf.def.
+
+ * src/printf.c: (UNSPECIFIED): Define.
+ (print_direc): Use the special value, UNSPECIFIED, to indicate
+ that field_width or precision has not been specified.
+ (print_formatted): Fail if field_width or precision is the
+ special value, UNSPECIFIED.
+ Reported by Oliver Kiddle <okiddle@yahoo.co.uk>
+
+ * src/sys2.h (INT_MIN): Define, if necessary.
+ * tests/misc/printf: Add a test for the above-fixed bug.
+
+2003-03-09 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (AD_stack_pop): Cast sizeof... to int before
+ changing its sign. This avoids a warning from gcc on 64-bit systems.
+ Reported by Bob Proulx.
+ (pop_dir): Reverse order of sign change and cast, to be consistent
+ with the above.
+
+2003-03-08 Jim Meyering <jim@meyering.net>
+
+ * tests/Makefile.am (evar-check): Check for POSIXLY_CORRECT not as a
+ shell variable, but only in the environment. With /bin/sh->bash, the
+ shell variable is set to `y', and that would cause a spurious warning.
+ Reported by Bob Proulx.
+
+ * tests/Makefile.am (check-root): Remove touch/fifo.
+ It doesn't appear to have to be run as root.
+
+ * tests/rm/fail-2eperm: Rather than simply using the first non-root
+ user name, make sure that the selected user name has a usable shell.
+ Reported by Paul Jarc.
+
+ Before, when using shred on a device, one had to specify --exact,
+ or be careful to choose a size that would not be rounded up and
+ exceed the maximum value; that could result in a failure of
+ the final write.
+ * src/shred.c (do_wipefd): --exact is now the default for non-regular
+ files. Suggestion from Ben Elliston.
+ (usage): Say it.
+
+ * tests/misc/tty-eof: Require at least version 1.11 of Expect.pm.
+ Old versions of Expect.pm (e.g., 1.07) lack the log_user function.
+ Patch by Bob Proulx.
+
+ * src/Makefile.am (check-misc): Check for use of `defined' in
+ #define directives.
+ Change to $(srcdir) before running grep.
+
+ * src/sleep.c: Remove now-unused #include and #define directives.
+
+ * src/du.c (process_file): If a file's size is not being counted
+ e.g., because it's a hard link to a file we've already counted,
+ then don't print a line for it.
+
+ * tests/du/hard-link: New test for the above-fixed bug.
+ * tests/du/Makefile.am (TESTS): Add hard-link.
+
+ `du -S' didn't work
+ * src/du.c: Revert most of the `reorganization' change of 2003-02-20,
+ and make the two-array approach work.
+
+ * tests/du/basic: Correct/add tests for the above fix.
+ Set LC_ALL, etc., now that we use sort.
+ Check the block/size of a small file, too.
+ Correct expected results for simple dir1/dir2/file case.
+ Add another test of du -S.
+
+2003-03-07 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ Avoid build failure with gcc on hppa1.1-hp-hpux10.20 (see GCC PR
+ middle-end/9986). As one of GCC's optimizations, it transforms a
+ fputs_unlocked call to a fputc_unlocked call when the string is
+ one character long. However, hpux doesn't have fputc_unlocked.
+
+ * expr.c (usage): Use putchar, not fputs, to output a single character.
+ * ls.c (dired_dump_obstack): Likewise.
+ * ptx.c (output_one_tex_line, output_one_dumb_line): Likewise.
+ * stat.c (print_it): Likewise.
+
+2003-03-07 Jim Meyering <jim@meyering.net>
+
+ * src/cp.c: Remove everything associated with mmap-stack.c.
+ This reverts the two changes of 2003-02-21.
+ * src/du.c: Remove everything associated with mmap-stack.c.
+ This reverts the change of 2003-02-19.
+
+2003-03-06 Jim Meyering <jim@meyering.net>
+
+ * tests/cp/same-file: Unset CDPATH. Otherwise, having the
+ CDPATH shell variable set could cause this test to fail.
+ Reported by Karl Berry.
+
+2003-03-05 Jim Meyering <jim@meyering.net>
+
+ * Version 4.5.9.
+
+ * src/printf.c (print_esc): Remove pointless comparison of unsigned
+ integer with zero, to avoid a warning from Intel's ecc.
+ Reported by Nelson Beebe.
+
+ * src/du.c (process_file): Sizes must all be of type uintmax_t.
+ Otherwise, for files or totals that are too big, numbers would
+ be truncated. Patch mostly by Michael Stone.
+ Reported by Ingo Saitz as Debian bug #183210.
+
+ * tests/du/8gb: New test for the above-fixed bug.
+ * tests/du/Makefile.am (TESTS): Add 8gb.
+
+ * src/du.c (MAX_N_DESCRIPTORS): Use 3 * UTILS_OPEN_MAX / 4
+ rather than UTILS_OPEN_MAX - 10.
+
+2003-03-04 Jim Meyering <jim@meyering.net>
+
+ * README: Refer new feature discussion to bug-coreutils@gnu.org,
+ rather than bug-gnu-utils, now that the former is better known.
+ Suggestion from Göran Uddeborg.
+
+ * src/stat.c (usage): Capitalize consistently.
+ Reported by Göran Uddeborg.
+
+ * Makefile.maint (rel-files): Include $(signatures), so that
+ those files are also copied into $(release_archive_dir).
+
+ * src/df.c (find_mount_point): Call error here, now that restore_cwd
+ no longer does it.
+ * src/remove.c (AD_pop_and_chdir): Likewise.
+
+ * tests/Makefile.am (check-root): Add fail-2eperm.
+
+2003-03-03 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (remove_cwd_entries): Include the full filename of
+ the offending file, not just the basename.
+
+ * tests/misc/tty-eof: Set $ME properly.
+
+ * Makefile.maint (THIS_VERSION_REGEXP, PREV_VERSION_REGEXP):
+ Remove now-unused variables.
+ (tag-prev-version, prev-cvs-tag): Likewise.
+
+ * src/remove.c (remove_cwd_entries) [!ROOT_CAN_UNLINK_DIRS]: Give an
+ accurate diagnostic when failing to remove a file owned by some other
+ user. Reported by Ivo Timmermans via Michael Stone.
+ This fixes Debian bug# 178471.
+
+ * tests/rm/Makefile.am (TESTS): Add fail-2eperm.
+ * tests/rm/fail-2eperm: New test, for the above-fixed bug.
+ Based on a report from Ivo Timmermans.
+
+2003-03-02 Jim Meyering <jim@meyering.net>
+
+ * src/copy.c (copy_internal) [un_backup]: When recovering from a
+ failure to create a hard link, do not remove the entry associating
+ the source dev/ino with the destination file name.
+ * tests/mv/Makefile.am (TESTS): Add hard-3.
+ * tests/mv/hard-3: New test, for the above-fixed bug.
+ Inspired by a report from Iida Yosiaki.
+
+2003-03-01 Jim Meyering <jim@meyering.net>
+
+ * src/df.c (print_header): Don't embed spaces in a separate `Type'
+ header string. Instead, put `Filesystem' and `Type' headers in the
+ same string, so translators can use horizontal space as needed.
+ Reported by Jean Charles Delepine.
+
+2003-02-28 Jim Meyering <jim@meyering.net>
+
+ * src/copy.c (copy_internal): When link fails because of an
+ existing destination file, unlink that file and try again.
+ Reported by Iida Yosiaki.
+
+ * tests/mv/Makefile.am (TESTS): Add hard-2.
+ * tests/mv/hard-2: New test for the above-fixed bug.
+ Based on a test case from Iida Yosiaki.
+
+2003-02-26 Jim Meyering <jim@meyering.net>
+
+ * tests/du/basic: Don't test du's -b option here. Directory byte
+ counts are smaller (512 rather than 4096) on at least OSF/1 5.1
+ and IBM AIX 4.2. Reported by Nelson Beebe.
+
+2003-02-25 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (announcement): Now that ChangeLog entries
+ are output by announce-gen, don't do it here.
+ * announce-gen (print_changelog_deltas): New function.
+ (main): Use it.
+
+2003-02-22 Jim Meyering <jim@meyering.net>
+
+ * announce-gen: New option: --release-type=TYPE
+ * Makefile.maint (beta, major): New targets. Remove `release'.
+ Put them all together on a line.
+ Pass the release type (via RELEASE_TYPE envvar) to the MAKE
+ invocation of `announcement'.
+ (announcement): Invoke announce-gen with --release-type=$RELEASE_TYPE.
+
+ * announce-gen: New option: --news=NEWS_FILE.
+ Extract NEWS entries here, not via rules in Makefile.maint.
+ * Makefile.maint (announcement): Now that NEWS entries are
+ extracted by announce-gen, don't do it here.
+ (news-r1, news-r2): Remove now-unused definitions.
+
+2003-02-21 Jim Meyering <jim@meyering.net>
+
+ * Version 4.5.8.
+
+ Merge in changes from autoconf's version of this file.
+ * Makefile.maint (www-gnu): Define.
+ (standards.texi-url_prefix): Use $(www-gnu).
+ (make-stds.texi-url_prefix): Likewise.
+
+ * src/cp.c: Include "mmap-stack.h".
+ (main): Invoke `run' through a macro that (when possible) runs it
+ with a large, mmap'd stack.
+
+ * src/cp.c (run): New function, preparing for the above.
+ Exit from this function, not from main
+ (main): Call run.
+
+ * src/du.c: New option: --apparent-size.
+ (enum) [APPARENT_SIZE_OPTION]: New member.
+ (long_options): Add it.
+ (usage): Describe it.
+ (main): Handle it.
+ ['b']: Set apparent_size.
+ David Eisner reported that the behavior of --bytes had changed.
+ Paul Eggert proposed the use of a new option, --apparent-size.
+
+ * src/du.c (apparent_size): New global.
+ (print_only_size): Reflect the fact that we're printing byte counts,
+ not ST_NBLOCKSIZE-byte-block counts.
+ (print_size): Call print_only_size rather than duplicating its code.
+ (process_file): Accumulate byte counts, rather than block counts.
+
+ * src/du.c (process_file): Always reset size_to_propagate_to_parent
+ for --separate-dirs (-S).
+
+2003-02-20 Jim Meyering <jim@meyering.net>
+
+ * Use automake-1.7.3. Regenerate dependent files.
+
+ * src/stat.c (print_stat): New format: %B (to print ST_NBLOCKSIZE).
+ This makes %b (number of ST_NBLOCKSIZE-byte blocks) more useful.
+ (usage) [%B]: Describe it.
+ [%b]: Refer to %B.
+
+ * src/du.c (process_file): Reorganize the code to use only
+ one `sum' array, and change how -S works back to the way it was
+ before 2003-01-31. Patch by Bruno Haible.
+
+ * tests/du/basic: New test.
+ * tests/du/Makefile.am (TESTS): Add basic.
+
+ * tests/envvar-check: Add checks for the following:
+ BLOCK_SIZE, DU_BLOCK_SIZE, DF_BLOCK_SIZE, LS_BLOCK_SIZE.
+
+ * tests/Makefile.am: Rename phony target envvar-check to evar-check
+ so as not to conflict with the distributed file by the same name.
+
+ * src/du.c (process_file): Set info->skip before any possible return.
+
+ Report correct usage for directories, not 0.
+ * src/du.c (process_file): Return for `file_type == FTW_DPRE'
+ _before_ recording the dev/ino of a directory.
+ Reported by Bruno Haible.
+
+ Now, df always displays the device file name corresponding to the
+ listed mount point under `Filesystem'. Before, for an unmounted
+ block- or character-special file argument, it would display the
+ command-line argument instead.
+ * src/df.c (show_disk): Return a value indicating whether
+ there was a match. Don't try to find a mount point here.
+ (show_entry): If show_disk doesn't find a match, call show_point.
+
+2003-02-19 Jim Meyering <jim@meyering.net>
+
+ * src/du.c: Include "mmap-stack.h".
+ (du_files): Add prototype with ATTRIBUTE_NORETURN.
+ Exit from this function, not from...
+ (main): ...here.
+ Instead, if possible, invoke du_files through a macro that
+ runs it with a large, mmap'd stack.
+
+ * src/join.c (usage): Change wording in --help output:
+ use FILENUM instead of `SIDE' and say what FILENUM means.
+ Reported by Bernhard Gabler.
+
+ * src/df.c (print_header): Rather than using a hard-coded literal
+ string of spaces matching the length of the English `...Type' header,
+ output the right number of spaces to match the selected translation.
+ Reported by Yann Dirson and Jean Charles Delepine as Debian bug 131113.
+
+ * src/split.c (bytes_split): Remove unnecessary `else' after break.
+ (lines_split): Likewise. and correct misleading indentation.
+
+ * src/split.c: Include "full-read.h".
+ (bytes_split, lines_split, line_bytes_split): Use full_read,
+ not safe_read. The way split was using the latter, a short read
+ could cause split to terminate before EOF.
+
+ * tests/misc/tty-eof: Test all programs that can read stdin,
+ requiring no arguments and that write to standard output.
+
+ * tests/misc/tty-eof: New file. Renamed from ...
+ * tests/misc/cat-tty-eof: Remove file. Rename to tty-eof.
+ * tests/misc/Makefile.am (TESTS): Reflect renaming.
+
+2003-02-18 Jim Meyering <jim@meyering.net>
+
+ cksum would perform an extra read after encountering EOF
+ * src/cksum.c (cksum): Exit the loop upon EOF, too.
+ Patch by Michael Bacarella.
+
+ Test for the bug fixed today in cksum, md5sum, and sha1sum.
+ * tests/misc/cat-tty-eof: Generalize, clean-up, and test for
+ cat, cksum, md5sum, and sha1sum all in the same loop.
+
+2003-02-14 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c: Include "euidaccess.h".
+ Remove declaration of euidaccess.
+
+2003-02-12 Jim Meyering <jim@meyering.net>
+
+ * src/pathchk.c (portable_chars_only): Remove unnecessary `const'
+ in cast to avoid warning from icc. Reported by Alexandre Duret-Lutz.
+
+2003-02-10 Jim Meyering <jim@meyering.net>
+
+ * src/test.c: Don't include group-member.h.
+ Include euidaccess.h.
+ (eaccess): Rewrite function to set the real uid and gid temporarily
+ to the effective uid and gid, then invoke 'access', and then set the
+ real uid and gid back. On systems that lack setreuid or setregid,
+ fall back on the kludges in euidaccess. Before, it would not work
+ for e.g., files with ACLs, files that were marked immutable,
+ or on file systems mounted read-only. Nelson Beebe raised the issue.
+ Paul Eggert suggested the new implementation.
+
+2003-02-09 Jim Meyering <jim@meyering.net>
+
+ * src/test.c (test_stat): Remove function. It's job is done (only
+ when necessary) by the wrapper in lib/stat.c. Adjust all uses.
+
+2003-02-08 Jim Meyering <jim@meyering.net>
+
+ * Version 4.5.7.
+
+ * tests/mv/part-symlink: Don't assume that the file owner username
+ length is less than 9 in ls output: instead, omit that field
+ altogether. Reported by, and suggested fix from, Ferdinand.
+
+ * tests/du/restore-wd: New test for just-fixed bug in ftw.c.
+ * tests/du/Makefile.am (TESTS): Add restore-wd.
+
+ * src/rm.c: Correct now-invalid comment about cycle-detection.
+
+2003-02-06 Jim Meyering <jim@meyering.net>
+
+ * NEWS: Add entries from old/*/NEWS
+ from fileutils-4.1 through 4.1.11 and
+ from sh-utils-2.0 through 2.0.15. Suggestion from Karl Berry.
+
+ * Version 4.5.6.
+
+ * src/du.c (process_file): Don't return early for excluded files
+ or for files whose dev/inode we've already seen.
+
+2003-02-05 Jim Meyering <jim@meyering.net>
+
+ * tests/du/exclude: New file.
+ * tests/du/Makefile.am (TESTS): Add exclude.
+
+2003-02-04 Dmitry V. Levin <ldv@altlinux.org>
+
+ * src/who.c (print_boottime, print_deadprocs, print_runlevel):
+ Fix memory allocation arithmetic.
+
+2003-02-04 Jim Meyering <jim@meyering.net>
+
+ `df /dev/block-or-char-device-file--not-mounted' now reports
+ the name of the file system on which the file resides, usually `/'.
+ Before, it would leave the `Mounted on' field blank.
+ * src/df.c (show_disk): Move function to precede find_mount_point.
+ (show_disk): Add parameter: STATP.
+ If we don't find a matching device name, then resort to calling
+ find_mount_point. Reported by Bob Proulx.
+
+2003-02-03 Andreas Schwab <schwab@suse.de>
+
+ * tests/rm/cycle: Require non-root.
+ * tests/rm/isatty: Likewise.
+
+2003-02-02 Jim Meyering <jim@meyering.net>
+
+ * Version 4.5.5.
+
+ * man/Makefile.am (check-x-vs-1): Use @PATH_SEPARATOR@, not `:'.
+
+ Ensure that there are no offending uses of `:'.
+ * Makefile.maint (makefile_path_separator_check): New rule.
+ (local-check): Add it to the list.
+
+2003-02-01 Jim Meyering <jim@meyering.net>
+
+ * src/du.c (MAX_N_DESCRIPTORS): Define.
+
+ * src/stat.c (G_fail): New global.
+ (human_time): Diagnose failed localtime, not failed nstrftime.
+ (main): Fail if G_fail is set.
+
+2003-01-31 Richard Dawe <rich@phekda.freeserve.co.uk>
+
+ * tests/basename/Makefile.am: Use @PATH_SEPARATOR@ instead of
+ hard-coding the path-separator. Also double-quote the new PATH,
+ to avoid problems when the path-separator is a semi-colon or when
+ `pwd` contains e.g. a space.
+ * tests/chgrp/Makefile.am: Likewise.
+ * tests/chmod/Makefile.am: Likewise.
+ * tests/chown/Makefile.am: Likewise.
+ * tests/cp/Makefile.am: Likewise.
+ * tests/dd/Makefile.am: Likewise.
+ * tests/dircolors/Makefile.am: Likewise.
+ * tests/du/Makefile.am: Likewise.
+ * tests/expr/Makefile.am: Likewise.
+ * tests/factor/Makefile.am: Likewise.
+ * tests/fmt/Makefile.am: Likewise.
+ * tests/install/Makefile.am: Likewise.
+ * tests/ln/Makefile.am: Likewise.
+ * tests/ls/Makefile.am: Likewise.
+ * tests/ls-2/Makefile.am: Likewise.
+ * tests/md5sum/Makefile.am: Likewise.
+ * tests/misc/Makefile.am: Likewise.
+ * tests/mkdir/Makefile.am: Likewise.
+ * tests/mv/Makefile.am: Likewise.
+ * tests/od/Makefile.am: Likewise.
+ * tests/rm/Makefile.am: Likewise.
+ * tests/rmdir/Makefile.am: Likewise.
+ * tests/seq/Makefile.am: Likewise.
+ * tests/sha1sum/Makefile.am: Likewise.
+ * tests/shred/Makefile.am: Likewise.
+ * tests/stty/Makefile.am: Likewise.
+ * tests/sum/Makefile.am: Likewise.
+ * tests/tail-2/Makefile.am: Likewise.
+ * tests/touch/Makefile.am: Likewise.
+ * tests/tsort/Makefile.am: Likewise.
+ * tests/unexpand/Makefile.am: Likewise.
+
+2003-01-31 Jim Meyering <jim@meyering.net>
+
+ * src/stat.c: Include "file-type.h"
+ (print_human_type): Remove function.
+ (human_access): Rename from print_human_access. Return a string.
+ (human_time): Rename from print_human_time. Return a string.
+ (print_stat): Arrange so that field width and an alignment specifier
+ are honored for the %A, %F, %x, %y, and %z formats.
+ [%F]: Use file_type; this gives slightly different file type strings,
+ e.g., `directory' instead of `Directory' and `regular file' or
+ `regular empty file' instead of `Regular file'.
+ Prompted by a report from Richard Dawe that the uses of
+ S_IFSOCK and S_IFIFO in print_human_time were not portable
+ to systems using e.g., DJGPP.
+
+2003-01-31 Richard Dawe <rich@phekda.freeserve.co.uk>
+
+ * src/stat.c (print_stat): Use S_ISLNK rather than an explicit
+ test using S_IFMT and S_IFLNK. S_IFLNK may not be defined.
+
+2003-01-31 Jim Meyering <jim@meyering.net>
+
+ * src/du.c (main): Upon processing an invalid option or an invalid
+ --exclude-from or --max-depth option argument, don't exit right away,
+ in case there are others. Rather record the failure and exit after
+ processing other options.
+
+ * GNUmakefile (TAR_OPTIONS): Set and export, in order to make
+ tar archive easier to reproduce.
+
+ Rewrite to perform directory traversal using nftw.
+
+ * src/du.c: Include "dirname.h", "ftw.h", and "quotearg.h".
+ (AUTHORS): Add self.
+ (opt_one_file_system): Move global into `main'.
+ (path, xstat, exit_status): Remove declarations.
+ (arg_length, suffix_length): New globals.
+ (G_fail): New global, sort of like the old `exit_status'.
+ (IS_FTW_DIR_TYPE): Define.
+ (print_only_size): New function.
+ (process_file): New function.
+ (str_init, ensure_space, str_copyc, str_concatc): Remove functions.
+ (str_trunc, pop_dir, count_entry): Likewise.
+ (du_files): Rewrite to use nftw.
+
+2003-01-30 Jim Meyering <jim@meyering.net>
+
+ * tests/du/trailing-slash: Ensure that du/ftw follows a command-line
+ symlink-to-directory with -L, even without the trailing slash.
+
+2003-01-27 Jim Meyering <jim@meyering.net>
+
+ * src/Makefile.am (check-misc): Check for st_blocks, too.
+
+ * src/stat.c (print_stat): Use ST_NBLOCKS rather than `->st_blocks'.
+ Reported by Richard Dawe.
+
+2003-01-27 Andreas Schwab <schwab@suse.de>
+
+ * src/ls.c (quote_name): Add fourth parameter, width, into which to
+ store the screen columns, and return the number of bytes instead.
+ (print_dir): Pass NULL as fourth parameter of quote_name.
+ (print_name_with_quoting): Likewise.
+ (length_of_file_name_and_frills): Get the width from the fourth
+ parameter of quote_name instead of return value.
+
+2003-01-27 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c (decode_switches): If `dired' is set without
+ `format == long_format', then silently reset dired. This doesn't
+ change the behavior of ls (all prior uses of dired were protected
+ by `&& format == long_format'), and lets us...
+ (DIRED_INDENT): ... remove the `format == long_format' conjunct.
+ (PUSH_CURRENT_DIRED_POS): Likewise.
+ (main): Likewise.
+
+2003-01-22 Jim Meyering <jim@meyering.net>
+
+ * tests/du/no-x: New test, for functionality added to lib/ftw.c.
+ * tests/du/Makefile.am (TESTS): Add no-x.
+
+2003-01-21 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (remove_entry) [ROOT_CAN_UNLINK_DIRS
+ && HAVE_STRUCT_DIRENT_D_TYPE]: If a file has d_type == DT_UNKNOWN
+ it may still be a directory -- or not (e.g., with FreeBSD on an
+ NFS-mounted file system), so resort to calling lstat to find out.
+ Based on a patch by Michael van Elst.
+
+ * tests/cp/same-file: Don't assume that the file owner username
+ length is less than 9 in ls output: instead, omit that field
+ altogether. Reported by, and suggested fix from, Ferdinand.
+
+2003-01-20 Jim Meyering <jim@meyering.net>
+
+ * tests/date/Test.pm (wide-fmt): New test to demonstrate that
+ large format widths no longer cause strftime to infloop.
+
+ * Makefile.maint (mail_gpg_sign_cookie): Remove now-unused definition.
+
+2003-01-19 Jim Meyering <jim@meyering.net>
+
+ * src/readlink.c: Include "canonicalize.h".
+
+2003-01-18 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c (Dereference_symlink) [DEREF_COMMAND_LINE_SYMLINK_TO_DIR]:
+ New member.
+ (enum) [DEREFERENCE_COMMAND_LINE_SYMLINK_TO_DIR_OPTION]: New member.
+ (long_options): Add option --dereference-command-line-symlink-to-dir.
+ (main): Make DEREF_COMMAND_LINE_SYMLINK_TO_DIR be the default,
+ rather than DEREF_COMMAND_LINE_ARGUMENTS, when none of the
+ -d, -F, -l options is specified.
+ (decode_switches): Handle --dereference-command-line-symlink-to-dir.
+ (gobble_file): Honor DEREF_COMMAND_LINE_SYMLINK_TO_DIR.
+ Change --dereference-command-line (-H) to dereference *all*
+ command line arguments, including broken symlinks.
+
+2003-01-15 Paul Eggert <eggert@twinsun.com>
+
+ Change ls -H back to the way it was yesterday, since this is
+ compatible with FreeBSD and the POSIX spec is confusing
+ and somewhat contradictory.
+
+ * src/ls.c (DEREF_COMMAND_LINE_ARGUMENTS): Change name back
+ from DEREF_COMMAND_LINE_SYMLINK_TO_DIR, updating all uses.
+ (long_options): Change the long option name back.
+ (usage): Change the usage back.
+ (gobble_file): When -H is specified, dereference a top-level
+ arg even if it points to a non-directory.
+
+2003-01-15 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c (gobble_file): Fall back on using lstat when required:
+ when --dereference (-L) is not specified, and
+ - when operating on a dangling symlink
+ - when operating on command-line-symlink-to-directories
+ This fixes numerous problems. Here are examples:
+ - `ls dangling-symlink' would fail with `no such file...'
+ Now it prints `dangling-symlink'.
+ - `ls -i symlink' would mistakenly print the inode of the referent.
+ Now it prints the inode of the symlink. Likewise for --size (-s).
+ Based on a patch from Michael Stone.
+ Reported by Deepak Goel as Debian bug #173793.
+
+ Rename ls's --dereference-command-line (-H)
+ option to --dereference-command-line-symlink-to-dir.
+ * src/ls.c [enum Dereference_symlink]
+ (DEREF_COMMAND_LINE_SYMLINK_TO_DIR): Rename from
+ DEREF_COMMAND_LINE_ARGUMENTS. Update all uses.
+ (long_options): Rename the long option.
+ (usage): Say that --dereference-... changes how ls treats
+ only symlinks to directories specified on the command line.
+
+2003-01-14 Jim Meyering <jim@meyering.net>
+
+ * tests/ls/dangle: New file/test, for the above fix.
+ * tests/ls/inode: Another new file/test, for the above fix.
+ * tests/ls/Makefile.am (TESTS): Add dangle and inode.
+
+ * src/ls.c (gobble_file): Fix a bug introduced in 4.5.4 that made it
+ so that ls --color would no longer highlight the names of files with
+ the execute bit set when not specified on the command line.
+ Patch by Michael Stone. Reported by Stephen Depooter as
+ Debian bug 175135.
+
+ * tests/ls-2/tests (color-exe): New test, for the above fix.
+
+2003-01-13 Jim Meyering <jim@meyering.net>
+
+ * tests/shred/exact: Also test for just fixed bug with --zero.
+
+ * src/shred.c (long_opts): --zero does not require an argument.
+ Patch by Michael Stone. Reported by Roland Turner as Debian bug 172019.
+
+2003-01-12 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (cvs-update): Skip any file with local modifications.
+
+ * src/unexpand.c (usage): Document --first-only and mention that
+ --tabs=N (-t) enables --all (-a). Reported by wiregauze@yahoo.com.
+
+2002-12-01 Dmitry V. Levin <ldv@altlinux.org>
+
+ * src/df.c: Include "canonicalize.h".
+ Use canonicalize_file_name unconditionally.
+
+2003-01-09 Jim Meyering <jim@meyering.net>
+
+ * README: Add readlink.
+
+2002-11-30 Dmitry V. Levin <ldv@altlinux.org>
+
+ * src/df.c: Include "xgetcwd.h".
+ * src/pwd.c: Likewise.
+
+2002-11-30 Dmitry V. Levin <ldv@altlinux.org>
+
+ * src/shred.c: Remove declaration of xstrdup.
+ We already get it via xalloc.h which is included via system.h.
+
+2002-08-27 Dmitry V. Levin <ldv@altlinux.org>
+
+ New program: readlink.
+
+ * src/Makefile.am (bin_PROGRAMS): Add readlink.
+ * src/readlink.c: New file.
+
+ * man/readlink.x: New file.
+ * man/Makefile.am (dist_man_MANS): Add readlink.1.
+ (readlink.1): New rule.
+
+2003-01-09 Jim Meyering <jim@meyering.net>
+
+ When selecting ranges of byte offsets (as opposed to ranges of fields)
+ and when --output-delimiter=STRING is specified, output STRING between
+ ranges of selected bytes.
+ * src/cut.c (RANGE_START_SENTINEL): Define.
+ (output_delimiter_specified): New global.
+ (print_kth): Add parameter. Adjust all callers.
+ (set_fields): Mark each range-start index with RANGE_START_SENTINEL.
+ (cut_bytes): When requested, output STRING between ranges of
+ selected bytes.
+ (main): Make a diagnostic a little clearer.
+ Based on a patch from Jan Nieuwenhuizen.
+
+ * tests/cut/Test.pm: New tests for the above.
+
+ * src/cut.c (set_fields): Make code agree with comment:
+ Don't merge abutting ranges like 4- and 2-3. This makes no
+ difference currently, but is required to support an upcoming change.
+
+2003-01-07 Jim Meyering <jim@meyering.net>
+
+ * src/cut.c (set_fields): Fix typo in comment.
+
+ * tests/touch/not-owner: New test, mostly extracted from fail-diag.
+ * tests/touch/Makefile.am (TESTS): Add not-owner.
+ * tests/touch/fail-diag: Remove the test for non-owner diagnostic.
+ Now, this tests only the nonexistent-directory diagnostic.
+ Suggestion from Michael Stone.
+
+ * tests/touch/fail-diag: Fix typo: s/ld/ls/.
+
+2003-01-04 Jim Meyering <jim@meyering.net>
+
+ * src/copy.h: Remove use of PARAMS.
+ * src/remove.h: Likewise.
+ * src/chown-core.h: Likewise.
+
+ rm could be tricked into mistakenly reporting a cycle.
+ * src/remove.c: [cycle_check_state]: New global.
+ (remove_cwd_entries): Adapt to new semantics of cycle_check.
+ (rm): Call cycle_check_init and cycle_check_free for each file.
+ * tests/rm/cycle (rm): New test, for the above fix.
+ * tests/rm/Makefile.am (TESTS): Add cycle.
+
+ When rm detects a cycle, don't abort the entire command,
+ but rather just the affected command line argument.
+ * src/remove.c: Include <setjmp.h>
+ (struct dirstack_state) [current_arg_jumpbuf]: New member.
+ (remove_cwd_entries): Call longjmp if we detect a cycle.
+ (rm): Call setjmp here.
+
+ * src/remove.c (cycle_check, is_power_of_two): Remove functions.
+ Instead, include cycle-check.h and use it.
+
+ * src/remove.h (struct dev_ino): Remove declaration.
+
+ * src/remove.c (remove_cwd_entries): Fix typos in comment.
+
+ Don't include trailing /. in diagnostics about directories.
+ * src/remove.c (full_filename_): When FILENAME is just `.'
+ and there is a nonempty directory-name part, don't append `/.'.
+ * tests/rm/unread2: Remove trailing /. from diagnostic.
+ * tests/rm/rm2: Likewise.
+
+ * src/remove.c (struct dirstack_state): Define.
+ To be used in place of these file-scoped globals ...
+ (dir_stack, len_stack, Active_dir): Remove globals.
+ (ds_init, ds_free): New functions.
+ (full_filename): Define.
+ (full_filename_): Rename from full_filename.
+
+ Begin to make AD_* functions more generic.
+ * src/remove.c (AD_push_initial): Don't set status to RM_OK here.
+ (AD_push): Likewise.
+ (AD_INIT_OTHER_MEMBERS): Define.
+ (remove_dir): Define the `status' member manually after each
+ call to AD_push or AD_push_initial.
+
+ * src/Makefile.am (check-misc): New rule, to ensure that no more
+ S_IS* macro definitions sneak into the code.
+ (check): Depend on check-misc.
+
+ * src/remove.c [S_ISLNK]: Don't define. It's already defined in sys2.h.
+ * src/du.c (count_entry) [S_ISLNK]: Don't define.
+ * src/shred.c [S_ISLNK, S_ISFIFO, S_ISSOCK]: Don't define.
+
+2003-01-03 Jim Meyering <jim@meyering.net>
+
+ * src/true.c: Add copyright.
+ (AUTHORS): I suppose I've written it.
+
+ * src/Makefile.am (false.c): Make the generated file be read-only.
+
+2003-01-04 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c: Include "dev-ino.h".
+ [struct dev_ino]: Remove declaration.
+
+2003-01-02 Jim Meyering <jim@meyering.net>
+
+ * src/cp.c (do_copy): Tweak diagnostic to be consistent with the one
+ from mv: s/missing file arguments/missing file argument/.
+ With --target-directory=DIR, cp and mv work with a single file argument.
+ Reported by Karl Berry.
+
+ * tests/rm/isatty: Enable this test.
+
+2002-12-31 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (AD_push_initial): Don't set status to RM_OK here.
+ (AD_push): Likewise.
+ (AD_INIT_OTHER_MEMBERS): Define.
+ (remove_dir): Define the `status' member manually after each
+ call to AD_push or AD_push_initial.
+
+ * src/ls.c [struct dev_ino]: Remove definition.
+ Include "dev-ino.h" instead.
+
+2002-12-28 Jim Meyering <jim@meyering.net>
+
+ * tests/du/Makefile.am (TESTS): Add no-deref.
+ * tests/du/no-deref: New script.
+
+2002-12-23 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (remove_cwd_entries): Fix typo in comment.
+
+2002-12-21 Jim Meyering <jim@meyering.net>
+
+ * announce-gen: Generate MML-formatted announcement.
+ This makes it a *lot* harder to send stale MD5/SHA1 signatures.
+
+2002-12-20 Jim Meyering <jim@meyering.net>
+
+ * src/touch.c (touch): Change the wording of a diagnostic so
+ that it makes sense both when the file exists and when it doesn't.
+ Suggestion from Michael Stone.
+
+2002-12-18 Jim Meyering <jim@meyering.net>
+
+ * src/stty.c (valid_options): Declare to be static.
+
+2002-12-15 Jim Meyering <jim@meyering.net>
+
+ * Makefile.cfg: Remove rules related to generating m4/jm-glibc-io.m4.
+
+ * src/chmod.c, src/copy.c, src/copy.h, src/cp-hash.h, src/csplit.c:
+ * src/date.c, src/expr.c, src/fmt.c, src/id.c, src/install.c:
+ * src/ls.c, src/od.c, src/pathchk.c, src/pr.c, src/remove.c:
+ * src/shred.c, src/sort.c, src/stat.c, src/stty.c, src/sum.c:
+ * src/tee.c, src/test.c: Remove all uses of `PARAMS'.
+
+ * src/remove.c (PARAMS): Remove definition.
+ * src/sys2.h: Likewise.
+
+ * src/ls.c, src/stat.c, src/date.c: Remove declaration of nstrftime.
+ Include strftime.h instead.
+
+2002-12-14 Jim Meyering <jim@meyering.net>
+
+ * Makefile.cfg ($(url_dir_list)): Use .../coreutils, not .../fetish.
+
+ * src/system.h [! HAVE_DECL_MEMRCHR]: Declare memrchr.
+ This is necessary at least for Irix6.5 when using c89.
+ Reported by Nelson Beebe.
+
+ * tests/misc/Makefile.am (TESTS): Add cat-tty-eof.
+
+ * tests/misc/cat-tty-eof: New test.
+
+ * src/mknod.c (usage): Specify how major and minor mode numbers
+ are interpreted. Report forwarded by Kristin E Thomas.
+ * src/mknod.c: Remove now-redundant usage-specifying comment.
+
+2002-12-13 Jim Meyering <jim@meyering.net>
+
+ * Version 4.5.4.
+
+ * tests/du/trailing-slash: Allow for a directory of size `0'.
+ That happens at least on file systems of type tmpfs on linux-2.4.18.
+
+ * announce-gen: New script to begin replacing the commands
+ associated with the rule here...
+ * Makefile.maint (announcement): Invoke announce-gen.
+ * Makefile.am (EXTRA_DIST): Add announce-gen.
+
+ * tests/cp/preserve-2: New file/test, for latest fix.
+ * tests/cp/Makefile.am (TESTS): Add preserve-2.
+
+2002-12-11 TAKAI Kousuke <takai@vlsi.kuee.kyoto-u.ac.jp>
+
+ Fix a bug whereby cp would fail to parse an option like
+ --preserve=mode,ownership.
+ * src/cp.c (decode_preserve_arg): Advance `comma' to
+ point the character following the comma.
+
+2002-12-11 Jim Meyering <jim@meyering.net>
+
+ * src/pathchk.c (NEED_PATHCONF_WRAPPER): Undefine before defining,
+ in case it's already defined.
+
+2002-12-09 Jim Meyering <jim@meyering.net>
+
+ * tests/touch/fail-diag: Don't get a test failure if /no exists.
+ Instead, evoke a framework failure if /no-$$ exists.
+ Reported by Michael Stone.
+
+2002-12-08 Jim Meyering <jim@meyering.net>
+
+ * src/du.c (lstat) [! LSTAT_FOLLOWS_SLASHED_SYMLINK]:
+ Define to rpl_lstat, so that even on systems like Solaris 5.8,
+ du honors (per POSIX) the trailing slash on an argument referring
+ to a symlink-to-directory.
+
+2002-12-06 Jim Meyering <jim@meyering.net>
+
+ * Use autoconf-2.57. Regenerate dependent files.
+ * Use automake-1.7.2. Regenerate dependent files.
+
+ * src/ls.c (gobble_file): Also stat the file if it's a
+ regular file and --indicator-style=classify (aka -F).
+ Thanks to Ed Santiago for opening my eyes.
+
+ * tests/ls/file-type: New file. Test for the above.
+ A test to contrast ls -F and ls --indicator-style=file-type.
+ * tests/ls/Makefile.am (TESTS): Add file-type.
+
+2002-12-04 Jim Meyering <jim@meyering.net>
+
+ * tests/ls/follow-slink: Make sure the symlink was created.
+ Richard Dawe reported that `ln -s link link' succeeds, but creates
+ no file on systems running some version of the DJGPP libc.
+
+2002-12-03 Jim Meyering <jim@meyering.net>
+
+ * src/Makefile.am (AUTOMAKE_OPTIONS): Remove definition (to ansi2knr)
+ since this package no longer panders to K&R compilers.
+
+2002-12-02 Jim Meyering <jim@meyering.net>
+
+ * tests/du/slink: Skip this test if `.' is on a non-local file system.
+
+ * tests/Fetish.pm (_at_replace): Do the substitution only if there's
+ something to replace.
+
+2002-12-01 Jim Meyering <jim@meyering.net>
+
+ * src/stat.c: Don't include <string.h> or <ctype.h>.
+ That's already done via system.h.
+ * src/dircolors.c: Don't include <ctype.h>.
+
+2002-11-30 Jim Meyering <jim@meyering.net>
+
+ * ls.c (gobble_file): Remove the block of code that caused
+ `ls --color -F symlink-to-dir' to list the files in
+ `symlink-to-dir/.'. Now, it prints `symlink-to-dir@', (just
+ like `ls -F symlink-to-dir') but with the addition of highlighting.
+ Similarly, `ls --color -dF symlink-to-dir' would print
+ `symlink-to-dir/'; now it prints `symlink-to-dir@'.
+ Reported by Jeff Sheinberg as Debian bug #168203.
+ * tests/ls-2/tests (sl-F-color, sl-dF-color): New tests for the above.
+
+ ls is now more efficient: with certain options, it no longer needs
+ to stat each directory entry on systems with valid dirent.d_type.
+ * src/ls.c (print_dir): Add DT_LNK and DT_REG.
+ (main): Make --recursive set format_needs_type, not format_needs_stat.
+ (gobble_file): Remove a FIXME comment, now that it's fixed.
+
+2002-11-24 Jim Meyering <jim@meyering.net>
+
+ * src/du.c (du_files): Don't strip any trailing slash.
+ Rewrite so that `/' is no longer represented internally as
+ the empty string.
+ (count_entry): When appending a file name component,
+ account for the fact that the current path may end in `/'.
+ François Pinard reported that `du symlink-to-dir/' was not
+ equivalent to `du symlink-to-dir/.'. Now it is.
+ * tests/du/trailing-slash: New file/test, for the above fix.
+ * tests/du/Makefile.am (TESTS): Add trailing-slash.
+
+2002-11-23 Jim Meyering <jim@meyering.net>
+
+ * src/tac.c (output): Declare some local variables to be of type size_t,
+ rather than `int' to avoid warnings from gcc.
+
+2002-11-21 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls.c (decode_switches): Use case-sensitive matching to
+ decode the QUOTING_STYLE environment variable. This is more
+ consistent with the documentation, and with --quoting-style.
+
+2002-11-21 Martin Buck <martin.buck@ascom.ch
+
+ * src/stty.c (struct speeds): Add support for all baud rates defined
+ in linux-2.4.19.
+
+2002-11-19 Jim Meyering <jim@meyering.net>
+
+ * tests/sum/sysv: Export LC_ALL=C, to avoid failure when
+ run in a UTF locale. Report and suggested fix by Bruno Haible.
+ * tests/fmt/basic: Likewise.
+
+2002-11-17 Jim Meyering <jim@meyering.net>
+
+ * configure.ac: Update via autoupdate.
+ Add `AM_GNU_GETTEXT_VERSION(0.11.5)'.
+
+ * src/mv.c (movefile): Don't remove trailing slashes from SOURCE.
+ Reported by Hans Ginzel.
+
+2002-11-15 Jim Meyering <jim@meyering.net>
+
+ * Makefile.cfg (gnu_rel_host): Define.
+ (url_dir_list): Choose from (alpha|ftp).gnu.org depending
+ on whether $(VERSION) looks like a major release number.
+
+ * Makefile.maint (mail_gpg_sign_cookie): Backslash-escape `#'.
+ (release): Rename from `alpha'.
+ (alpha): Depend on release.
+
+ * Makefile.maint (signatures): Define with ?=, so it's easy to override.
+
+2002-11-14 Jim Meyering <jim@meyering.net>
+
+ * Makefile.maint (mail_gpg_sign_cookie): Make optional.
+ (announcement): Use the new variable.
+
+ * Makefile.maint: Sync with Bison, i.e.:
+ (po-check): Scan .l and .y files instead of the
+ .c and the .h files that they generate. This fixes the bug
+ reported by Tim Van Holder in:
+ <http://mail.gnu.org/pipermail/bison-patches/2002-November/001352.html>
+ Look for N_ as well as for _. Try to avoid matching #define for
+ N_ and _.
+ From Paul Eggert.
+
+2002-11-12 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c (HAVE_SYMLINKS): Remove unnecessary macro definition.
+ Replace sole use with equivalent `#ifdef S_ISLNK'.
+ Inconsistency reported by Dmitry V. Levin.
+
+2002-11-11 Jim Meyering <jim@meyering.net>
+
+ * src/stat.c (usage): Transform --help items output via s/ - / /,
+ so that help2man produces properly formatted man pages.
+ Reported by Herbert Xu as Debian bug #168400.
+
+2002-11-10 Jim Meyering <jim@meyering.net>
+
+ * src/ls.c (sighandler): Handle SIGTSTP specially.
+ Based on suggestions from Solar Designer and Dmitry V. Levin.
+ Add comments.
+
+ * Makefile.cfg (cvs_files): Define. From autoconf.
+ (local_updates): Likewise.
+
+ * src/ls.c (restore_default_color_handler, sigtstp_handler):
+ Remove functions.
+ (sighandler): New function, based on the one in sort.c.
+ (main): Use sigaction, if possible; otherwise signal.
+ Handle these signals:
+ SIGHUP, SIGINT, SIGPIPE, SIGQUIT, SIGTERM, SIGTSTP.
+ Don't register our handler if the signal is already being ignored.
+
+ * src/dd.c (interrupt_handler): Use raise, rather than kill+getpid.
+ * src/csplit.c (interrupt_handler): Likewise.
+ * src/sort.c (sighandler): Likewise.
+ (main): Declare `i' and `nsigs' to be unsigned, not int.
+
+2002-11-09 Jim Meyering <jim@meyering.net>
+
+ ls --color: restore terminal text color upon signal.
+ * src/ls.c: Include "full-write.h" and <signal.h>.
+ (restore_default_color, restore_default_color_handler): New functions.
+ (sigtstp_handler, put_indicator_direct): New functions.
+ (main) [print_with_color]: Register signal handlers.
+ Patch mostly by Solar Designer and Stanislav Ievlev.
+
+ Update from autoconf.
+ * Makefile.maint (AMTAR): Remove definition.
+ (update, cvs-update, po-update, do-po-update): New rules.
+ (wget-update): Update (thus renaming to cvs-update).
+ (automake_repo): Use anoncvs@sources.redhat.com.
+
+2002-11-06 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/Makefile.am (TESTS): Add printf-hex.
+
+ * tests/misc/printf: Be careful to test the code in this package,
+ not the shell built-in function.
+
+ * src/printf.c (print_esc): A hexadecimal escape sequence has
+ at most two hex. digits, not three. Reported by Padraig Brady.
+ (usage): Update description.
+ * tests/misc/printf-hex: New file/test, for the above fix.
+
+2002-10-07 Paul Eggert <eggert@twinsun.com>
+
+ Add support for locale-specific size indications (e.g.,
+ thousands-separators) and for explicit size suffixes on output.
+
+ * doc/coreutils.texi (Block size): Say that:
+ This affects display format as well as block size.
+ Fractional block counts are rounded up.
+ ls file size blocksize defaults to 1.
+ A block size spec preceded by ' generates thousands separators.
+ A suffix without a preceding integer generates suffixes.
+ (tail invocation): 32k -> 32 KiB.
+ (What information is listed): ls -h is now equivalent to
+ ls --block-size=human, and ls -H is now equivalent to
+ ls --block-size=si. Displayed file size is now always affected by
+ --block-size.
+
+ * lib/inttostr.c, lib/inttostr.h, lib/imaxtostr.c, lib/offtostr.c,
+ lib/umaxtostr.c: New files, taken from GNU tar.
+
+ * lib/Makefile.am (libfetish_a_SOURCES): Add imaxtostr.c, offtostr.c,
+ umaxtostr.c.
+ (EXTRA_DIST): Add inttostr.c.
+
+ * lib/human.c, lib/human.h: Rewrite to support locale-specific
+ notations like thousands separators.
+ Specify what includer of include.h must include beforehand.
+ (human_group_digits, human_suppress_point_zero, human_autoscale,
+ human_base_1024, human_SI, human_B): New enum values.
+ (human_readable): Rename from human_readable_inexact; put the
+ options before the sizes. All uses changed. The old human_readable
+ function has been removed; use inttostr.h instead.
+ (human_options): Renamed from human_block_size, with new signature
+ that allows block sizes up to UINTMAX_MAX. All callers changed.
+
+ * m4/prereq.m4 (jm_PREREQ_HUMAN): Check for locale.h, localeconv,
+ AC_HEADER_STDBOOL. No need to check for limits.h since it's in
+ freestanding C89. No need to check for stdlib.h or string.h since
+ autoconf does this now.
+
+ * src/cksum.c (cksum): Use primitives from inttostr.h, not
+ human.h, to print large numbers simply.
+ * src/csplit.c (handle_line_error, parse_patterns): Likewise.
+ * src/dd.c (print_stats, main): Likewise.
+ * src/df.c (print_header): Likewise.
+ * src/factor.c (print_factors): Likewise.
+ * src/ls.c (print_long_format, print_file_name_and_frills): Likewise.
+ * src/shred.c (dopass): Likewise.
+ * src/sort.c (checkfp): Likewise.
+ * src/sum.c (bsd_sum_file, sysv_sym_file): Likewise.
+ * src/tail.c (xlseek): Likewise.
+ * src/wc.c (write_counts, wc): Likewise.
+
+ * src/df.c (human_output_opts): New var.
+ (output_block_size): Now uintmax_t, not int, to handle larger
+ block sizes. All uses changed.
+ * src/du.c: Likewise.
+ * src/ls.c: Likewise.
+
+ * src/df.c (print_header): In the header line, prefer SI to human
+ representation if it's shorter; if neither is shorter, try to
+ intuit what the user would prefer.
+
+ * src/expr.c (inttostr): Remove; use new imaxtostr library
+ function instead.
+
+ * src/ls.c (file_output_block_size): New var, to distinguish
+ file sizes from other sizes.
+ (decode_switches): Set it.
+
+ * src/shred.c (OUTPUT_BLOCK_SIZE): remove.
+ (dopass): When printing progress, use floor for what has been done
+ so far (since we should be conservative there), and ceiling for
+ what needs to be done (since that's what other programs use).
+
+2002-10-19 Jim Meyering <jim@meyering.net>
+
+ * src/pinky.c (print_heading): Align TTY and Name headings.
+ Reported by Karl Eichwalder.
+
+2002-10-18 Jim Meyering <jim@meyering.net>
+
+ * src/split.c (cwrite): Change type of `bytes' parameter to size_t
+ Remove now-useless cast.
+ (stdread): Remove function.
+ (bytes_split): Use size_t instead of int.
+ Use safe_read, not stdread.
+ (lines_split): Likewise.
+ Use memchr rather than a `while' loop.
+ (line_bytes_split): Use size_t instead of int.
+ Use safe_read, not stdread.
+ (main): Add some FIXME comments to remind me to remove casts.
+
+ * src/system.h (ST_BLKSIZE): Correct comment describing how to
+ reproduce HPUX-11 cat failure. From Petter Reinholdtsen.
+
+2002-10-17 Jim Meyering <jim@meyering.net>
+
+ Fix a problem that could make e.g., `cat' misbehave on systems which
+ give invalid (unreasonably large) values for stat.st_blksize.
+ * src/system.h (ST_BLKSIZE): Ensure that the result is in [1..4MB].
+ Reported by Petter Reinholdtsen.
+
+2002-10-14 Jim Meyering <jim@meyering.net>
+
+ Specifying a printf conversion specifer as nl's separator string
+ could cause nl to segfault.
+ * src/nl.c (build_print_fmt): Don't include separator string
+ in the printf format; it might contain `%'.
+ Use a better bound on the length of the print_fmt buffer.
+ (print_lineno): Print the separator here instead.
+ Reported by Doug Coleman.
+
+ * tests/misc/nl: New file/tests, including a test for the above.
+ * tests/misc/Makefile.am (TESTS): Add nl.
+
+ * tests/misc/split-l: New test, to make sure `split --lines=N' works.
+ * tests/misc/Makefile.am (TESTS): Add split-l.
+
+2002-10-13 Jim Meyering <jim@meyering.net>
+
+ * Version 4.5.3.
+
+ * src/du.c (usage): Tweak description of --dereference-args/-D.
+
+ * src/du.c (count_entry): Also save cwd when dereferencing (via
+ --dereference-args, -D) a command-line argument.
+ Reported by Michal Svec. Based on a patch by Andreas Schwab.
+
+ * src/Makefile.am (../AUTHORS): New target/rule.
+
+2002-10-12 Jim Meyering <jim@meyering.net>
+
+ * src/paste.c (paste_parallel): Declare local, `delims_saved', to be
+ of type size_t, since that's the way it's used and avoids a warning.
+
+ * src/csplit.c (struct cstring) [len]: Declare to be unsigned int,
+ since that's how it's always used and avoids a new warning from gcc.
+ (read_input): Adapt to new safe_read ABI.
+
+ * src/cut.c (cut_fields): Add a temporary size_t variable, n_bytes,
+ to avoid warnings.
+
+ * src/pinky.c (print_long_entry): fread returns size_t.
+ Declare local `bytes' accordingly, to avoid warning.
+
+ tail -c +N would perform an extra read after encountering EOF
+ [this change is analogous (bytes vs. lines) to the one of 2002-01-27]
+ * src/tail.c (start_bytes): Detect EOF, inform caller.
+ (tail_bytes): Upon EOF in start_bytes, return immediately.
+ (file_lines): Reorganize to use memrchr rather than an explicit loop.
+ Adapt to new safe_read ABI.
+
+2002-10-11 Jim Meyering <jim@meyering.net>
+
+ * tests/du/deref: New file/test, for the above fix.
+ * tests/du/Makefile.am (TESTS): Add deref.
+
+2002-10-10 Jim Meyering <jim@meyering.net>
+
+ * tests/ln/Makefile.am (TESTS): Add target-1.
+ * tests/ln/target-1: New file/test, for the fix on 2002-10-08.
+
+2002-10-09 Jim Meyering <jim@meyering.net>
+
+ * tests/cp/backup-is-src: Ensure that certain environment variables
+ are not set (e.g., SIMPLE_BACKUP_SUFFIX). Reported by Duncan Roe.
+
+ * tests/tail-2/big-4gb: Mark this as an expensive test; it would
+ consume 4GB of disk space on systems without support for sparse files.
+ Fix a logic error that'd make it `cat err' even though dd didn't fail.
+
+ * src/dircolors.hin (.jar): Fix typo: s/;3$/;31/.
+ Patch by steven@magelico.net, forwarded by Michael Stone.
+
+ * tests/ls/dired: Ensure that ls produces English messages.
+ Patch by Alexey Vyskubov, forwarded by Michael Stone.
+
+2002-10-08 Dmitry V. Levin <ldv@altlinux.org>
+
+ * src/ln.c (main): Fix target_directory parsing when n_files == 1.
+
+2002-10-08 Jim Meyering <jim@meyering.net>
+
+ * tests/tail-2/big-4gb: Use double quotes around diagnostic.
+ Fix syntax in test: use =, not ==.
+ Reported by Bob Proulx.
+ Change all the rest like this: grep -lR "testing framework'" .\
+ |xargs perl -pi -e 's/'\''(\$0: failure in testing framework)'\''/"$1"/'
+
+ * src/sum.c (sysv_sum_file): Adapt to new safe_read ABI.
+ * src/tr.c (squeeze_filter, read_and_delete, read_and_xlate): Likewise.
+ * src/tac.c (save_stdin, tac_stdin_to_mem): Likewise.
+ * src/wc.c (wc): Likewise.
+
+2002-10-07 Paul Eggert <eggert@twinsun.com>
+
+ * src/cat.c (cat):
+ Don't advance the write pointer past the end of the write buffer.
+ * src/sort.c (begfield, limfield): Likewise.
+
+2002-10-07 Jim Meyering <jim@meyering.net>
+
+ * src/cat.c (simple_cat, cat): Adapt to new safe_read ABI.
+ * src/head.c (head_bytes, head_lines): Likewise.
+
+2002-10-06 Jim Meyering <jim@meyering.net>
+
+ * src/dd.c (scanargs): Ensure that specified block sizes (specified
+ via ibs=N, obs=N, and bs=N) are no larger than SSIZE_MAX.
+ (skip, dd_copy): Adapt to new safe_read ABI.
+
+ * Makefile.maint (signatures): Define.
+ (%.sig): New rule.
+ (announcement): Depend on $(signatures).
+
+ * Makefile.maint (announcement): Output all URLs for detached
+ signatures, not just the last one from the previous loop.
+
+2002-10-05 Jim Meyering <jim@meyering.net>
+
+ * Version 4.5.2.
+
+ * src/remove.c (remove_entry) [ROOT_CAN_UNLINK_DIRS]: With `rm -i DIR',
+ don't recurse into directory, DIR. Prompted by a report from
+ Leonardo Milano.
+
+ * tests/rm/i-no-r: New file/test, for the above fix.
+ * tests/rm/Makefile.am (TESTS): Add i-no-r.
+
+ * tests/tail-2/big-4gb: New file/test, for the fix of 2002-09-27.
+ * tests/tail-2/Makefile.am (TESTS): Add big-4gb.
+
+2002-10-03 Jim Meyering <jim@meyering.net>
+
+ * src/rm.c (AUTHORS): Mark translatable string with `N_ (...)'.
+ * src/df.c (AUTHORS): Likewise.
+ * src/du.c (AUTHORS): Likewise.
+ * src/tail.c (AUTHORS): Likewise.
+ * src/touch.c (AUTHORS): Likewise.
+
+2002-10-02 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (SUBDIRS): Remove `old'.
+ (EXTRA_DIST): List the files in old/.
+ * configure.ac (AC_CONFIG_FILES): Remove old/* names.
+ Suggestion from Akim Demaille.
+
+2002-10-01 Jim Meyering <jim@meyering.net>
+
+ * src/sys2.h (SSIZE_MAX): Define.
+
+2002-09-30 Jim Meyering <jim@meyering.net>
+
+ * src/csplit.c: Don't include stdlib.h here. It's already included
+ via system.h.
+
+2002-09-29 Jim Meyering <jim@meyering.net>
+
+ * src/tr.c (find_bracketed_repeat): Rearrange pointer/integer
+ expression to avoid bogus warning from gcc.
+
+ * src/cat.c (simple_cat): Use a temporary to avoid bogus warnings.
+ (cat): Declare insize and outsize to be of type size_t, not int.
+ Rearrange pointer/integer expressions to avoid bogus warnings.
+ (main): Declare insize and outsize to be of type size_t, not int.
+
+ * src/tail.c (parse_options): Give a sensible diagnostic for
+ an invalid byte or line count. Reported by Mikko Tuumanen.
+
+ * src/touch.c (main): Split a long line.
+
+ * tests/du/Makefile.am (TESTS): Add slink.
+ * tests/du/slink: New test for system.h change of 2002-08-31.
+
+ In move mode, always first try to rename. Before, upon failure to
+ rename a directory, this code would never attempt to rename any
+ other file in that directory, but would thenceforth always copy.
+ On some systems (e.g., NetApp's OnTap-6.4), renaming a directory
+ may fail with EXDEV, yet renaming files within that directory to
+ a newly-created destination directory succeeds.
+ * src/copy.c (copy_internal): Remove local, move_mode;
+ use x->move_mode instead. Based on a patch from Tom Haynes.
+
+2002-09-28 Jim Meyering <jim@meyering.net>
+
+ * src/split.c (FAIL_ONLY_ONE_WAY): New macro.
+ Factor out some duplication.
+ (main): Use it.
+ [case 'a']: Use strtoul rather than strtol to avoid compiler warnings.
+
+ * src/sort.c (begfield, limfield): Rearrange comparisons to avoid
+ compiler warnings.
+ (fillbuf, keycompare): Cast literal `-1' to size_t in comparisons,
+ to avoid compiler warnings.
+
+ * src/shred.c (dopass): Use a uintmax_t temporary to avoid bogus
+ compiler warnings.
+
+ Fix things so `mkdir -p' can create very deep directories, e.g.,
+ mkdir -p $(perl -e 'print "a/" x 40000') now works.
+ * src/mkdir.c (main): For --parents (-p), call make_path with the
+ entire directory name, so we don't ever require that file operations
+ like stat or chmod be performed on the entire command line argument.
+ * makepath.c (make_path): Restore umask *before* creating the final
+ component.
+
+2002-09-27 Andreas Schwab <schwab@suse.de>
+
+ * src/tail.c (tail_bytes): Change type of bytes_remaining to off_t
+ to avoid overflow. Reported by Hans Lermen.
+
+2002-09-26 Jim Meyering <jim@meyering.net>
+
+ * src/install.c (get_ids): Use strtoul, not strtol. Remove some casts.
+
+2002-09-25 Jim Meyering <jim@meyering.net>
+
+ * src/test.c (eaccess): Change type of local `euid' from int to uid_t
+ and add a cast, to avoid a warning about `signed and unsigned type in
+ conditional expression'.
+
+2002-09-22 Jim Meyering <jim@meyering.net>
+
+ * src/rmdir.c: Include "dirname.h", for declaration of
+ strip_trailing_slashes.
+
+ * src/stat.c (PRIdMAX, PRIuMAX): Remove definitions.
+ Now they're defined through system.h.
+
+ * src/cp-hash.c, src/dd.c, src/df.c, src/du.c, src/ls.c,
+ * src/stat.c, src/wc.c: Remove all inclusions of inttypes.h,
+ since it's already included from sys2.h via system.h.
+
+ * Use automake-1.6f. Regenerate dependent files.
+
+ * src/Makefile.am (PERL): Remove duplicate definition.
+
+ fmt's -s, -t, -c options didn't work properly for long lines.
+ Since get_line may end up calling put_paragraph (for long lines),
+ be sure to set global, `other_indent', before it is used there.
+
+ * src/fmt.c (set_other_indent): New function, factored out of...
+ (get_paragraph): ... here. Call it.
+ (get_line): Call set_other_indent before calling flush_paragraph,
+ which calls fmt_paragraph, which in turn calls put_paragraph,
+ which uses other_indent.
+
+ * tests/fmt/Makefile.am (TESTS): Add long-line.
+ * tests/fmt/long-line: New file/test, for the above fix.
+
+2002-09-21 Jim Meyering <jim@meyering.net>
+
+ * src/od.c: No longer include deprecated <values.h>.
+ It was required solely for now-removed reference to BITSPERBYTE.
+ * src/install.c: Likewise.
+ Suggestion from Bruno Haible.
+
+2002-09-06 Andreas Schwab <schwab@suse.de>
+
+ `rmdir -p dir-specified-with-trailing-slash/' would fail.
+ * src/rmdir.c (remove_parents): Strip trailing slashes.
+
+2002-09-20 Jim Meyering <jim@meyering.net>
+
+ * tests/rmdir/t-slash: New file/test, for the above fix.
+ * tests/rmdir/Makefile.am (TESTS): Add t-slash.
+
+ * Makefile.maint (announcement): Arrange to gpg-sign the message.
+ Add a URL for each detached signature file.
+
+2002-09-07 Bruno Haible <bruno@clisp.org>
+
+ * configure.ac: Add need-ngettext to AM_GNU_GETTEXT invocation.
+
+2002-09-18 Jim Meyering <jim@meyering.net>
+
+ `od -t x8' used the wrong (`l'-prefixed) printf format.
+ Likewise for the o8 and u8 formats.
+ * src/od.c (ISPEC_TO_FORMAT): Define macro.
+ (decode_one_format): Use PRIdMAX, PRIoMAX, etc. for LONG_LONG.
+ Reported by Arun Sharma.
+
+2002-09-17 Jim Meyering <jim@meyering.net>
+
+ * src/sys2.h (PRIdMAX, PRIoMAX, PRIuMAX, PRIxMAX): Define if necessary.
+ From gettext's intl/loadmsgcat.c.
+
+ * tests/od/x8: New file/test, for the above fix.
+ * tests/od/Makefile.am (TESTS): Add x8.
+
+2002-09-15 Jim Meyering <jim@meyering.net>
+
+ * Use autoconf-2.54. Regenerate dependent files.
+
+ * src/csplit.c (get_format_width): Add cast to avoid
+ warning about `signed and unsigned type in conditional expression'.
+
+2002-09-14 Jim Meyering <jim@meyering.net>
+
+ * src/who.c (print_user): Change type of local to size_t
+ to avoid warnings about `comparison between signed and unsigned'.
+ * src/ptx.c (generate_all_output): Likewise.
+
+ * src/dd.c (main, skip): Add casts to avoid warnings about
+ `comparison between signed and unsigned'.
+
+ * src/id.c (print_full_info, print_group_list): Add casts to avoid
+ warnings about `signed and unsigned type in conditional expression'.
+
+ * src/md5sum.c: Change type of global, digest_hex_bytes, to size_t
+ to avoid warnings about `comparison between signed and unsigned'.
+ (split_3): Change parameter names to be readable and add comment.
+ Clean up the test for whether a line may be ignored.
+
+2002-09-13 Jim Meyering <jim@meyering.net>
+
+ * src/printf.c (main): Handle leading command line argument of `--'.
+ Reported by Raul: DervishD <raul@pleyades.net>
+ * tests/misc/printf: New file: test for the above.
+ * tests/misc/Makefile.am (TESTS): Add printf.
+
+ * src/date.c (usage): Explain that %S's range of [0..60] is required --
+ rather than 0..59 -- to accommodate the occasional positive leap second.
+ Reported by Richard Neill.
+
+2002-09-12 Jim Meyering <jim@meyering.net>
+
+ * src/Makefile.am (nanosec_libs): Define.
+ (sleep_LDADD, tail_LDADD): Use it here.
+
+ Factor nanosleep-related code into ../lib/xnanosleep.c.
+ * src/sleep.c: Include xnanosleep.h.
+ Factor out fenv.h-related code.
+ (timespec_subtract): Remove function.
+ (main): Remove code that deals with computing start and stop times
+ as well as the loop around nanosleep. Now that's in xnanosleep.c.
+
+ Allow S (in --sleep-interval=S) to be a floating point value.
+ * src/tail.c: Include xnanosleep.h and xstrtod.h.
+ Move declaration of global variable, sleep_interval, to ...
+ (main): ...here.
+ (usage): Update description of --sleep-interval option.
+ (tail_forever): New parameter, sleep_interval. Update caller.
+ Use xnanosleep, rather than sleep.
+ (parse_options): New parameter, sleep_interval. Update caller.
+ Use xstrtod, now that we accept floating point values.
+ Prompted by a patch from Augey Mikus.
+
+2002-09-06 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (prompt): Change comment to give a better note to
+ translators. From Michael Piefel.
+
+2002-09-02 Jim Meyering <jim@meyering.net>
+
+ * README: A good problem report/patch includes diffs against
+ the most recent test release.
+
+ * src/pathchk.c (NEED_PATHCONF_WRAPPER): Define.
+ (pathconf_wrapper): Define only if NEED_PATHCONF_WRAPPER is set.
+
+ * src/kill.c (print_table_row): Use an unsigned type for widths
+ to avoid warning about comparison between signed and unsigned.
+ (list_signals): Likewise.
+
+ * src/od.c (skip): Add a cast to avoid warning about comparison
+ between signed and unsigned.
+ * src/install.c (get_ids): Likewise. Also rearrange range-checking
+ comparisons to make them more readable.
+
+2002-09-01 Jim Meyering <jim@meyering.net>
+
+ * Version 4.5.1.
+
+2002-08-31 Jim Meyering <jim@meyering.net>
+
+ Symlinks were always reported as using 0 blocks.
+ * src/system.h (ST_NBLOCKS): Don't depend on file type.
+ This reverts the change of 2000-01-30.
+ Based on a report and patch from Neil Brown via Michael Stone.
+ This fixes Debian Bug#156358.
+
+ * Most files: Change `exit (0)' to `exit (EXIT_SUCCESS)',
+ `exit (1)' to `exit (EXIT_FAILURE)', and
+ `usage (1)' to `usage (EXIT_FAILURE)'.
+
+ * chgrp.c, chmod.c, chown.c, chroot.c, cp.c, date.c, dd.c, du.c,
+ * hostname.c, id.c, install.c, ln.c, mkdir.c, mkfifo.c, mknod.c,
+ * nice.c, pinky.c, printf.c, pwd.c, shred.c, sleep.c, stty.c,
+ * su.c, tac-pipe.c, tail.c, tee.c, touch.c, uname.c, uptime.c,
+ * users.c, who.c: Change `error (1, ...' to `error (EXIT_FAILURE, ...'.
+ But don't change `error (0, ...' to `error (EXIT_SUCCESS, ...', since
+ error never exits successfully.
+
+2002-08-29 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (remove_cwd_entries): Use closedir (not CLOSEDIR)
+ when ignoring any return value.
+
+ * src/remove.c (remove_cwd_entries): Detect and diagnose readdir
+ failures. On some systems (at least EMC Celerra and Solaris5.8),
+ this appears to be necessary.
+ (is_empty_dir): Likewise. Also, always close directory handle.
+ * src/ls.c (print_dir): Likewise.
+ (print_dir): Rename local variable: reading -> dirp.
+ Reported by Mike Coleman.
+
+2002-08-28 Jim Meyering <jim@meyering.net>
+
+ * src/remove.c (remove_cwd_entries): Use CLOSEDIR, not closedir.
+ Give a diagnostic and fail if closedir fails.
+
+2002-08-26 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (THANKS-to-translators): New rule.
+ (EXTRA_DIST): Add both THANKS-to-translators and THANKStt.in.
+ * THANKStt.in: New file.
+
+ * src/cat.c (close_stdout_wrapper): New, kludgey, function and
+ file-scoped global.
+ (main): Register it with atexit.
+ Close STDOUT_FILENO, to avoid a problem when writing to
+ /dev/audio on at least Solaris 5.7 and 5.8 systems.
+ Reported by Shing-Shong Shei.
+
+2002-08-25 Jim Meyering <jim@meyering.net>
+
+ * src/cat.c (main): Close STDIN_FILENO rather than a literal `0'.
+ * src/tac.c (main): Likewise.
+ * src/tail.c (main): Likewise.
+ * src/tee.c (main): Likewise.
+ * src/tr.c (main): Likewise.
+ * src/wc.c (main): Likewise.
+
+2002-08-20 Jim Meyering <jim@meyering.net>
+
+ * tests/mv/setup: Rewrite not to use `: ${VAR=not_set}' paradigm.
+
+2002-08-10 Paul Eggert <eggert@twinsun.com>
+
+ * src/nohup.sh: Don't use "exec --"; it's not portable and
+ shouldn't be needed.
+
+2002-08-09 Jim Meyering <jim@meyering.net>
+
+ * src/pr.c (main): Don't ignore -COLUMN if it's the last option.
+ (usage): Clarify help text for the -COLUMN option.
+ Patch by Padraig Brady.
+ * tests/pr/Test.pm [col-last]: New test for the above.
+
+ * configure.ac: Start with version 4.5.1, chosen so that it's larger
+ than the latest version numbers of the component packages.
+
+ * man/Makefile.am (check-x-vs-1): Set and export PATH so we use
+ programs in ../src.
+
+2002-08-08 Jim Meyering <jim@meyering.net>
+
+ * src/date.c: Guard inclusion of <langinfo.h> with
+ `#if HAVE_LANGINFO_CODESET', not `#if HAVE_LANGINFO_H'.
+ * src/sort.c: Likewise.
+ Patch by GOTO Masanori.
+
+2002-08-05 Paul Eggert <eggert@twinsun.com>
+
+ Fix some minor time-related bugs with POSIX time arguments.
+ Some valid time stamps were being rejected (notably -1, and
+ time stamps before 1900 on 64-bit hosts). And some invalid
+ time stamps were being accepted, e.g. September 31.
+
+ * src/date.c (main): Adjust to posixtime signature change.
+ * src/touch.c (main): Likewise. Remove unnecessary initialization.
+ Use localtime, not posixtm, to warn about obsolete "touch".
+
+2002-08-05 Jim Meyering <jim@meyering.net>
+
+ * tests/misc/Makefile.am (TESTS): Add nice and pathchk1.
+
+2002-08-04 Jim Meyering <jim@meyering.net>
+
+ * src/Makefile.am (check-README): New target/rule.
+ (check): Depend on it.
+
+ * configure.ac (AC_CONFIG_FILES): Add old/Makefile and old/*/Makefile.
+
+2002-08-03 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (SUBDIRS): Add old.
+ * old/: New directory, containing legacy ChangeLog* and NEWS files
+ from the fileutils, sh-utils, and textutils packages.
+
+ * src/Makefile.am (AM_INSTALLCHECK_STD_OPTIONS_EXEMPT): Set to false.
+
+2002-08-02 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS, doc/coreutils.texi: uniq now obeys LC_COLLATE.
+
+ * src/uniq.c: Include hard-locale.h, xmemcoll.h.
+ (hard_LC_COLLATE): New var.
+ (different): Args are now char *, not const char *.
+ Use xmemcoll instead of memcmp to compare lines, so that
+ LC_COLLATE has effect. However, use memcmp if it is an
+ easy locale.
+ (check_file): Do not include newline in comparison, so that
+ xmemcoll has a byte to stomp on temporarily.
+ (main): Set hard_LC_COLLATE.
+
+2002-07-29 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (SUBDIRS): Remove djgpp, for now.
+
+2002-07-20 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (false.c): Convert only the final EXIT_SUCCESS
+ into EXIT_FAILURE. Otherwise, false --help and false --version
+ would fail.
+
+2002-07-08 Jim Meyering <jim@meyering.net>
+
+ * src/Makefile.am (uninstall-local): Search for @GNU_PACKAGE@,
+ rather than the hard-coded `sh-utils'.
+
+2002-07-01 Jim Meyering <jim@meyering.net>
+
+ * configure.ac: Merge the three files from fileutils,
+ textutils, and sh-utils.
+ * Makefile.am: Likewise.
+ * src/Makefile.am: Likewise.
+
+
+ -----
+
+ Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without
+ modification, are permitted provided the copyright notice
+ and this notice are preserved.
diff --git a/GNUmakefile b/GNUmakefile
new file mode 100644
index 0000000..38d5524
--- /dev/null
+++ b/GNUmakefile
@@ -0,0 +1,58 @@
+# Having a separate GNUmakefile lets me `include' the dynamically
+# generated rules created via Makefile.maint as well as Makefile.maint itself.
+# This makefile is used only if you run GNU Make.
+# It is necessary if you want to build targets usually of interest
+# only to the maintainer.
+
+# Copyright (C) 2001, 2003, 2006 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+# Systems where /bin/sh is not the default shell need this. The $(shell)
+# command below won't work with e.g. stock DOS/Windows shells.
+ifeq ($(wildcard /bin/s[h]),/bin/sh)
+SHELL = /bin/sh
+else
+# will be used only with the next shell-test line, then overwritten
+# by a configured-in value
+SHELL = sh
+endif
+
+have-Makefile := $(shell test -f Makefile && echo yes)
+
+# If the user runs GNU make but has not yet run ./configure,
+# give them a diagnostic.
+ifeq ($(have-Makefile),yes)
+
+# Make tar archive easier to reproduce.
+export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner
+
+include Makefile
+include $(srcdir)/Makefile.cfg
+include $(srcdir)/Makefile.maint
+
+else
+
+all:
+ @echo There seems to be no Makefile in this directory. 1>&2
+ @echo "You must run ./configure before running \`make'." 1>&2
+ @exit 1
+
+endif
+
+# Tell version 3.79 and up of GNU make to not build goals in this
+# directory in parallel. This is necessary in case someone tries to
+# build multiple targets on one command line.
+.NOTPARALLEL:
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..5458714
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,234 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006 Free Software Foundation, Inc.
+
+This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system.
+
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about. Run `./configure --help' for
+details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you can use GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+Installation Names
+==================
+
+By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `config.site' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
+
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+`configure' recognizes the following options to control how it operates.
+
+`--help'
+`-h'
+ Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..1a63077
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,88 @@
+# Make coreutils. -*-Makefile-*-
+
+# Copyright (C) 1990, 1993-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+SUBDIRS = lib src doc man po tests
+EXTRA_DIST = Makefile.cfg Makefile.maint GNUmakefile \
+ .gitignore \
+ .hgignore \
+ .kludge-stamp .prev-version THANKS-to-translators THANKStt.in \
+ .vg-suppressions \
+ .x-po-check \
+ .x-sc_file_system .x-sc_obsolete_symbols \
+ .x-sc_prohibit_atoi_atof \
+ .x-sc_require_config_h \
+ .x-sc_space_tab .x-sc_sun_os_names \
+ .x-sc_trailing_blank \
+ .x-sc_unmarked_diagnostics \
+ .x-sc_useless_cpp_parens \
+ ChangeLog-2005 \
+ bootstrap \
+ bootstrap.conf \
+ build-aux/cvsu \
+ build-aux/vc-list-files \
+ gl/modules/getloadavg.diff \
+ m4/ChangeLog \
+ old/fileutils/ChangeLog \
+ old/fileutils/ChangeLog-1997 \
+ old/fileutils/NEWS \
+ old/sh-utils/ChangeLog \
+ old/sh-utils/ChangeLog.0 \
+ old/sh-utils/NEWS \
+ old/textutils/ChangeLog \
+ old/textutils/NEWS
+
+install-root:
+ cd src && $(MAKE) $@
+
+ACLOCAL_AMFLAGS = -I m4
+
+# Some tests always need root privileges, others need them only sometimes.
+check-root:
+ cd tests && $(MAKE) $@
+
+dist-hook:
+ test -x $(srcdir)/build-aux/install-sh
+
+distcheck-hook:
+ $(MAKE) my-distcheck
+
+# Just prior to distribution, ...
+# transform the automake-generated rule that runs `rm -f rm'.
+# On some systems, that command would fail with a diagnostic like
+# `rm: cannot unlink `rm': Text file busy' when `.' appears so early
+# in the shell's search path that running `rm' would run the `rm'
+# executable in the current directory.
+# Similarly, adjust the clean-binPROGRAMS rule.
+
+rm_subst = \
+ s!(rm -f (rm|\$$\(bin_PROGRAMS\)))$$!$$1 > /dev/null 2>&1 || /bin/$$1!
+MAINTAINERCLEANFILES = .kludge-stamp
+.kludge-stamp: $(srcdir)/src/Makefile.in
+ perl -pi -e '$(rm_subst)' $(srcdir)/src/Makefile.in
+ touch $@
+
+
+MAINTAINERCLEANFILES += THANKS-to-translators
+THANKS-to-translators: po/LINGUAS THANKStt.in
+ ( \
+ cat $(srcdir)/THANKStt.in; \
+ for lang in `cat $(srcdir)/po/LINGUAS`; do \
+ echo http://www.iro.umontreal.ca/contrib/po/HTML/team-$$lang.html; \
+ done; \
+ ) > $@-tmp && mv $@-tmp $@
diff --git a/Makefile.cfg b/Makefile.cfg
new file mode 100644
index 0000000..4ade0bd
--- /dev/null
+++ b/Makefile.cfg
@@ -0,0 +1,40 @@
+# Customize Makefile.maint. -*- makefile -*-
+# Copyright (C) 2003-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# Use alpha.gnu.org for alpha and beta releases.
+# Use ftp.gnu.org for major releases.
+gnu_ftp_host-alpha = alpha.gnu.org
+gnu_ftp_host-beta = alpha.gnu.org
+gnu_ftp_host-major = ftp.gnu.org
+gnu_rel_host = $(gnu_ftp_host-$(RELEASE_TYPE))
+
+url_dir_list = \
+ ftp://$(gnu_rel_host)/gnu/coreutils
+
+# The GnuPG ID of the key used to sign the tarballs.
+gpg_key_ID = D333CBA1
+
+# Tests not to run as part of "make distcheck".
+# Exclude changelog-check here so that there's less churn in ChangeLog
+# files -- otherwise, you'd need to have the upcoming version number
+# at the top of the file for each `make distcheck' run.
+local-checks-to-skip = changelog-check strftime-check
+
+# The local directory containing the checked-out copy of gnulib used in
+# this release. Used solely to get a date for the "announcement" target.
+gnulib_dir = /gnulib
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000..a2cd3ba
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,1010 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils. -*-Makefile-*-
+
+# Copyright (C) 1990, 1993-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(top_srcdir)/configure ABOUT-NLS \
+ AUTHORS COPYING ChangeLog INSTALL NEWS THANKS TODO \
+ build-aux/ChangeLog build-aux/compile build-aux/config.guess \
+ build-aux/config.rpath build-aux/config.sub build-aux/depcomp \
+ build-aux/install-sh build-aux/mdate-sh build-aux/missing \
+ build-aux/texinfo.tex build-aux/ylwrap
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ { test ! -d $(distdir) \
+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = lib src doc man po tests
+EXTRA_DIST = Makefile.cfg Makefile.maint GNUmakefile \
+ .gitignore \
+ .hgignore \
+ .kludge-stamp .prev-version THANKS-to-translators THANKStt.in \
+ .vg-suppressions \
+ .x-po-check \
+ .x-sc_file_system .x-sc_obsolete_symbols \
+ .x-sc_prohibit_atoi_atof \
+ .x-sc_require_config_h \
+ .x-sc_space_tab .x-sc_sun_os_names \
+ .x-sc_trailing_blank \
+ .x-sc_unmarked_diagnostics \
+ .x-sc_useless_cpp_parens \
+ ChangeLog-2005 \
+ bootstrap \
+ bootstrap.conf \
+ build-aux/cvsu \
+ build-aux/vc-list-files \
+ gl/modules/getloadavg.diff \
+ m4/ChangeLog \
+ old/fileutils/ChangeLog \
+ old/fileutils/ChangeLog-1997 \
+ old/fileutils/NEWS \
+ old/sh-utils/ChangeLog \
+ old/sh-utils/ChangeLog.0 \
+ old/sh-utils/NEWS \
+ old/textutils/ChangeLog \
+ old/textutils/NEWS
+
+ACLOCAL_AMFLAGS = -I m4
+
+# Just prior to distribution, ...
+# transform the automake-generated rule that runs `rm -f rm'.
+# On some systems, that command would fail with a diagnostic like
+# `rm: cannot unlink `rm': Text file busy' when `.' appears so early
+# in the shell's search path that running `rm' would run the `rm'
+# executable in the current directory.
+# Similarly, adjust the clean-binPROGRAMS rule.
+rm_subst = \
+ s!(rm -f (rm|\$$\(bin_PROGRAMS\)))$$!$$1 > /dev/null 2>&1 || /bin/$$1!
+
+MAINTAINERCLEANFILES = .kludge-stamp THANKS-to-translators
+all: all-recursive
+
+.SUFFIXES:
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
+ cd $(srcdir) && $(AUTOMAKE) --gnu \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d $(distdir) || mkdir $(distdir)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-hook
+ -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r $(distdir)
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__remove_distdir)
+
+dist dist-all: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir); chmod a+w $(distdir)
+ mkdir $(distdir)/_build
+ mkdir $(distdir)/_inst
+ chmod a-w $(distdir)
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \
+ && cd $(distdir)/_build \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+ $(am__remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @cd $(distuninstallcheck_dir) \
+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+ install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am am--refresh check check-am clean clean-generic \
+ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
+ dist-hook dist-shar dist-tarZ dist-zip distcheck distclean \
+ distclean-generic distclean-tags distcleancheck distdir \
+ distuninstallcheck dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
+ tags-recursive uninstall uninstall-am
+
+
+install-root:
+ cd src && $(MAKE) $@
+
+# Some tests always need root privileges, others need them only sometimes.
+check-root:
+ cd tests && $(MAKE) $@
+
+dist-hook:
+ test -x $(srcdir)/build-aux/install-sh
+
+distcheck-hook:
+ $(MAKE) my-distcheck
+.kludge-stamp: $(srcdir)/src/Makefile.in
+ perl -pi -e '$(rm_subst)' $(srcdir)/src/Makefile.in
+ touch $@
+THANKS-to-translators: po/LINGUAS THANKStt.in
+ ( \
+ cat $(srcdir)/THANKStt.in; \
+ for lang in `cat $(srcdir)/po/LINGUAS`; do \
+ echo http://www.iro.umontreal.ca/contrib/po/HTML/team-$$lang.html; \
+ done; \
+ ) > $@-tmp && mv $@-tmp $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Makefile.maint b/Makefile.maint
new file mode 100644
index 0000000..1c9d697
--- /dev/null
+++ b/Makefile.maint
@@ -0,0 +1,623 @@
+# -*-Makefile-*-
+# This Makefile fragment is shared between the coreutils,
+# CPPI, Bison, and Autoconf.
+
+## Copyright (C) 2001-2007 Free Software Foundation, Inc.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+## 02110-1301, USA.
+
+# This is reported not to work with make-3.79.1
+# ME := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
+ME := Makefile.maint
+
+# Do not save the original name or timestamp in the .tar.gz file.
+# Use --rsyncable if available.
+gzip_rsyncable := \
+ $(shell gzip --help 2>/dev/null|grep rsyncable >/dev/null && echo --rsyncable)
+GZIP_ENV = '--no-name --best $(gzip_rsyncable)'
+
+CVS = cvs
+GIT = git
+VC = $(GIT)
+VC-tag = git-tag -s -m '$(VERSION)'
+
+CVS_LIST = build-aux/vc-list-files
+
+CVS_LIST_EXCEPT = \
+ $(CVS_LIST) | if test -f .x-$@; then grep -vEf .x-$@; else grep -v ChangeLog; fi
+
+ifeq ($(origin prev_version_file), undefined)
+ prev_version_file = .prev-version
+endif
+
+PREV_VERSION := $(shell cat $(prev_version_file))
+VERSION_REGEXP = $(subst .,\.,$(VERSION))
+
+tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]')
+tag-this-version = $(subst .,_,$(VERSION))
+this-vc-tag = $(tag-package)-$(tag-this-version)
+my_distdir = $(PACKAGE)-$(VERSION)
+
+# Old releases are stored here.
+# Used for diffs and xdeltas.
+release_archive_dir ?= ../release
+
+# Prevent programs like 'sort' from considering distinct strings to be equal.
+# Doing it here saves us from having to set LC_ALL elsewhere in this file.
+export LC_ALL = C
+
+
+
+## --------------- ##
+## Sanity checks. ##
+## --------------- ##
+
+# FIXME: add a check to prohibit definition in src/*.c of symbols defined
+# in system.h. E.g. today I removed from tail.c a useless definition of
+# ENOSYS. It was useless because system.h ensures it's defined.
+
+# Collect the names of rules starting with `sc_'.
+syntax-check-rules := $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' $(ME))
+.PHONY: $(syntax-check-rules)
+
+# Checks that don't require cvs.
+# Run `changelog-check' last, as previous test may reveal problems requiring
+# new ChangeLog entries.
+local-checks-available = \
+ po-check copyright-check m4-check author_mark_check \
+ changelog-check patch-check strftime-check $(syntax-check-rules) \
+ makefile_path_separator_check \
+ makefile-check check-AUTHORS
+.PHONY: $(local-checks-available)
+
+local-check := $(filter-out $(local-checks-to-skip), $(local-checks-available))
+
+syntax-check: $(local-check)
+# @grep -nE '# *include <(limits|std(def|arg|bool))\.h>' \
+# $$(find -type f -name '*.[chly]') && \
+# { echo '$(ME): found conditional include' 1>&2; \
+# exit 1; } || :
+
+# grep -nE '^# *include <(string|stdlib)\.h>' \
+# $(srcdir)/{lib,src}/*.[chy] && \
+# { echo '$(ME): FIXME' 1>&2; \
+# exit 1; } || :
+# FIXME: don't allow `#include .strings\.h' anywhere
+
+sc_cast_of_argument_to_free:
+ @grep -nE '\<free \(\(' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): don'\''t cast free argument' 1>&2; \
+ exit 1; } || :
+
+sc_cast_of_x_alloc_return_value:
+ @grep -nE '\*\) *x(m|c|re)alloc\>' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): don'\''t cast x*alloc return value' 1>&2; \
+ exit 1; } || :
+
+sc_cast_of_alloca_return_value:
+ @grep -nE '\*\) *alloca\>' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): don'\''t cast alloca return value' 1>&2; \
+ exit 1; } || :
+
+sc_space_tab:
+ @grep -n '[ ] ' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): found SPACE-TAB sequence; remove the SPACE' \
+ 1>&2; exit 1; } || :
+
+# Don't use *scanf or the old ato* functions in `real' code.
+# They provide no error checking mechanism.
+# Instead, use strto* functions.
+sc_prohibit_atoi_atof:
+ @grep -nE '\<([fs]?scanf|ato([filq]|ll))\>' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): do not use *scan''f, ato''f, ato''i, ato''l, ato''ll, or ato''q' \
+ 1>&2; exit 1; } || :
+
+# Using EXIT_SUCCESS as the first argument to error is misleading,
+# since when that parameter is 0, error does not exit. Use `0' instead.
+sc_error_exit_success:
+ @grep -nF 'error (EXIT_SUCCESS,' \
+ $$(find -type f -name '*.[chly]') && \
+ { echo '$(ME): found error (EXIT_SUCCESS' 1>&2; \
+ exit 1; } || :
+
+sc_file_system:
+ @grep -ni 'file''system' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): found use of "file''system";' \
+ 'rewrite to use "file system"' 1>&2; \
+ exit 1; } || :
+
+sc_no_have_config_h:
+ @grep -n 'HAVE''_CONFIG_H' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): found use of HAVE''_CONFIG_H; remove' \
+ 1>&2; exit 1; } || :
+
+# Nearly all .c files must include <config.h>.
+sc_require_config_h:
+ @if $(CVS_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
+ grep -L '^# *include <config\.h>' \
+ $$($(CVS_LIST_EXCEPT) | grep '\.c$$') \
+ | grep . && \
+ { echo '$(ME): the above files do not include <config.h>' \
+ 1>&2; exit 1; } || :; \
+ else :; \
+ fi
+
+# Prohibit the inclusion of assert.h without an actual use of assert.
+sc_prohibit_assert_without_use:
+ @if $(CVS_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
+ files=$$(grep -l '# *include <assert\.h>' \
+ $$($(CVS_LIST_EXCEPT) | grep '\.c$$')) && \
+ grep -L '\<assert (' $$files \
+ | grep . && \
+ { echo "$(ME): the above files include <assert.h> but don't use it" \
+ 1>&2; exit 1; } || :; \
+ else :; \
+ fi
+
+sc_obsolete_symbols:
+ @grep -nE '\<(HAVE''_FCNTL_H|O''_NDELAY)\>' \
+ $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): do not use HAVE''_FCNTL_H or O''_NDELAY' \
+ 1>&2; exit 1; } || :
+
+# FIXME: warn about definitions of EXIT_FAILURE, EXIT_SUCCESS, STREQ
+
+# Each nonempty line must start with a year number, or a TAB.
+sc_changelog:
+ @grep -n '^[^12 ]' $$(find . -maxdepth 2 -name ChangeLog) && \
+ { echo '$(ME): found unexpected prefix in a ChangeLog' 1>&2; \
+ exit 1; } || :
+
+# Ensure that dd's definition of LONGEST_SYMBOL stays in sync
+# with the strings from the two affected variables.
+dd_c = $(srcdir)/src/dd.c
+sc_dd_max_sym_length:
+ifneq ($(wildcard $(dd_c)),)
+ @len=$$( (sed -n '/conversions\[\] =$$/,/^};/p' $(dd_c);\
+ sed -n '/flags\[\] =$$/,/^};/p' $(dd_c) ) \
+ |sed -n '/"/s/^[^"]*"\([^"]*\)".*/\1/p' \
+ | wc --max-line-length); \
+ max=$$(sed -n '/^#define LONGEST_SYMBOL /s///p' $(dd_c) \
+ |tr -d '"' | wc --max-line-length); \
+ if test "$$len" = "$$max"; then :; else \
+ echo 'dd.c: LONGEST_SYMBOL is not longest' 1>&2; \
+ exit 1; \
+ fi
+endif
+
+# Many m4 macros names once began with `jm_'.
+# On 2004-04-13, they were all changed to start with gl_ instead.
+# Make sure that none are inadvertently reintroduced.
+sc_prohibit_jm_in_m4:
+ @grep -nE 'jm_[A-Z]' \
+ $$($(CVS_LIST) m4 |grep '\.m4$$'; echo /dev/null) && \
+ { echo '$(ME): do not use jm_ in m4 macro names' \
+ 1>&2; exit 1; } || :
+
+sc_root_tests:
+ @if test -d tests \
+ && grep check-root tests/Makefile.am>/dev/null 2>&1; then \
+ t1=sc-root.expected; t2=sc-root.actual; \
+ grep -nl '^PRIV_CHECK_ARG=require-root' \
+ $$($(CVS_LIST) tests) |sed s,tests,., |sort > $$t1; \
+ sed -n 's, cd \([^ ]*\) .*MAKE..check TESTS=\(.*\),./\1/\2,p' \
+ $(srcdir)/tests/Makefile.am |sort > $$t2; \
+ diff -u $$t1 $$t2 || diff=1; \
+ rm -f $$t1 $$t2; \
+ test "$$diff" \
+ && { echo 'tests/Makefile.am: missing check-root action'>&2; \
+ exit 1; } || :; \
+ fi
+
+headers_with_interesting_macro_defs = \
+ exit.h \
+ fcntl_.h \
+ fnmatch_.h \
+ intprops.h \
+ inttypes_.h \
+ lchown.h \
+ openat.h \
+ stat-macros.h \
+ stdint_.h
+
+# Create a list of regular expressions matching the names
+# of macros that are guaranteed by parts of gnulib to be defined.
+.re-defmac:
+ @(cd $(srcdir)/lib; \
+ for f in $(headers_with_interesting_macro_defs); do \
+ test -f $$f && \
+ sed -n '/^# *define \([^_ (][^ (]*\)[ (].*/s//\1/p' $$f; \
+ done; \
+ ) | sort -u \
+ | grep -Ev 'ATTRIBUTE_NORETURN|SIZE_MAX' \
+ | sed 's/^/^# *define /' \
+ > $@-t
+ @mv $@-t $@
+
+# Don't define macros that we already get from gnulib header files.
+sc_always_defined_macros: .re-defmac
+ @if test -f $(srcdir)/src/system.h; then \
+ trap 'rc=$$?; rm -f .re-defmac; exit $$rc' 0 1 2 3 15; \
+ grep -f .re-defmac $$($(CVS_LIST)) \
+ && { echo '$(ME): define the above via some gnulib .h file' \
+ 1>&2; exit 1; } || :; \
+ fi
+
+# Create a list of regular expressions matching the names
+# of files included from system.h. Exclude a couple.
+.re-list:
+ @sed -n '/^# *include /s///p' $(srcdir)/src/system.h \
+ | grep -Ev 'sys/(param|file)\.h' \
+ | sed 's/ .*//;;s/^["<]/^# *include [<"]/;s/\.h[">]$$/\\.h[">]/' \
+ > $@-t
+ @mv $@-t $@
+
+# Files in src/ should not include directly any of
+# the headers already included via system.h.
+sc_system_h_headers: .re-list
+ @if test -f $(srcdir)/src/system.h; then \
+ trap 'rc=$$?; rm -f .re-list; exit $$rc' 0 1 2 3 15; \
+ grep -nE -f .re-list \
+ $$($(CVS_LIST) src | \
+ grep -Ev '((copy|system)\.h|parse-gram\.c)$$') \
+ && { echo '$(ME): the above are already included via system.h'\
+ 1>&2; exit 1; } || :; \
+ fi
+
+sc_sun_os_names:
+ @grep -nEi \
+ 'solaris[^[:alnum:]]*2\.(7|8|9|[1-9][0-9])|sunos[^[:alnum:]][6-9]' \
+ $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): found misuse of Sun OS version numbers' 1>&2; \
+ exit 1; } || :
+
+sc_the_the:
+ @grep -ni '\<the ''the\>' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): found use of "the ''the";' 1>&2; \
+ exit 1; } || :
+
+sc_tight_scope:
+ $(MAKE) -C src $@
+
+sc_trailing_blank:
+ @grep -n '[ ]$$' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): found trailing blank(s)' \
+ 1>&2; exit 1; } || :
+
+# Match lines like the following, but where there is only one space
+# between the options and the description:
+# -D, --all-repeated[=delimit-method] print all duplicate lines\n
+longopt_re = --[a-z][0-9A-Za-z-]*(\[?=[0-9A-Za-z-]*\]?)?
+sc_two_space_separator_in_usage:
+ @grep -nE '^ *(-[A-Za-z],)? $(longopt_re) [^ ].*\\$$' \
+ $$($(CVS_LIST_EXCEPT)) && \
+ { echo "$(ME): help2man requires at least two spaces between"; \
+ echo "$(ME): an option and its description"; \
+ 1>&2; exit 1; } || :
+
+# Look for diagnostics that aren't marked for translation.
+# This won't find any for which error's format string is on a separate line.
+sc_unmarked_diagnostics:
+ @grep -nE \
+ '\<error \([^"]*"[^"]*[a-z]{3}' $$($(CVS_LIST_EXCEPT)) \
+ | grep -v '_''(' && \
+ { echo '$(ME): found unmarked diagnostic(s)' 1>&2; \
+ exit 1; } || :
+
+# Avoid useless parentheses like those in this example:
+# #if defined (SYMBOL) || defined (SYM2)
+sc_useless_cpp_parens:
+ @grep -n '^# *if .*defined *(' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): found useless parentheses in cpp directive' \
+ 1>&2; exit 1; } || :
+
+# Ensure that the c99-to-c89 patch applies cleanly.
+patch-check:
+ rm -rf src-c89 $@.1 $@.2
+ cp -a src src-c89
+ (cd src-c89; patch -p2 -V never --fuzz=0) < src/c99-to-c89.diff \
+ > $@.1 2>&1
+ if test "$${REGEN_PATCH+set}" = set; then \
+ diff -upr src src-c89 > new-diff || : ; fi
+ grep -v '^patching file ' $@.1 > $@.2 || :
+ msg=ok; test -s $@.2 && msg='fuzzy patch' || : ; \
+ rm -f src-c89/*.o || msg='rm failed'; \
+ $(MAKE) -C src-c89 CFLAGS='-Wdeclaration-after-statement -Werror' \
+ || msg='compile failure with extra options'; \
+ rm -rf src-c89 $@.1 $@.2; \
+ test "$$msg" = ok && : || echo "$$msg" 1>&2; \
+ test "$$msg" = ok
+
+# Ensure that date's --help output stays in sync with the info
+# documentation for GNU strftime. The only exception is %N,
+# which date accepts but GNU strftime does not.
+extract_char = sed 's/^[^%][^%]*%\(.\).*/\1/'
+strftime-check:
+ if test -f $(srcdir)/src/date.c; then \
+ grep '^ %. ' $(srcdir)/src/date.c | sort \
+ | $(extract_char) > $@-src; \
+ { echo N; \
+ info libc date calendar format | grep '^ `%.'\' \
+ | $(extract_char); } | sort > $@-info; \
+ diff -u $@-src $@-info || exit 1; \
+ rm -f $@-src $@-info; \
+ fi
+
+check-AUTHORS:
+ $(MAKE) -C src $@
+
+# Ensure that we use only the standard $(VAR) notation,
+# not @...@ in Makefile.am, now that we can rely on automake
+# to emit a definition for each substituted variable.
+makefile-check:
+ grep -nE '@[A-Z_0-9]+@' `find . -name Makefile.am` \
+ && { echo 'Makefile.maint: use $$(...), not @...@' 1>&2; exit 1; } || :
+
+news-date-check: NEWS
+ today=`date +%Y-%m-%d`; \
+ if head NEWS | grep '^\*.* $(VERSION_REGEXP) ('$$today')' \
+ >/dev/null; then \
+ :; \
+ else \
+ echo "version or today's date is not in NEWS" 1>&2; \
+ exit 1; \
+ fi
+
+changelog-check:
+ if head ChangeLog | grep 'Version $(VERSION_REGEXP)\.$$' \
+ >/dev/null; then \
+ :; \
+ else \
+ echo "$(VERSION) not in ChangeLog" 1>&2; \
+ exit 1; \
+ fi
+
+m4-check:
+ @grep -n 'AC_DEFUN([^[]' m4/*.m4 \
+ && { echo 'Makefile.maint: quote the first arg to AC_DEFUN' 1>&2; \
+ exit 1; } || :
+
+# Verify that all source files using _() are listed in po/POTFILES.in.
+# FIXME: don't hard-code file names below; use a more general mechanism.
+po-check:
+ if test -f po/POTFILES.in; then \
+ grep -E -v '^(#|$$)' po/POTFILES.in \
+ | grep -v '^src/false\.c$$' | sort > $@-1; \
+ files=; \
+ for file in $$($(CVS_LIST_EXCEPT)) lib/*.[ch]; do \
+ case $$file in \
+ djgpp/* | man/*) continue;; \
+ */c99-to-c89.diff) continue;; \
+ esac; \
+ case $$file in \
+ *.[ch]) \
+ base=`expr " $$file" : ' \(.*\)\..'`; \
+ { test -f $$base.l || test -f $$base.y; } && continue;; \
+ esac; \
+ files="$$files $$file"; \
+ done; \
+ grep -E -l '\b(N?_|gettext *)\([^)"]*("|$$)' $$files \
+ | sort -u > $@-2; \
+ diff -u $@-1 $@-2 || exit 1; \
+ rm -f $@-1 $@-2; \
+ fi
+
+# In a definition of #define AUTHORS "... and ..." where the RHS contains
+# the English word `and', the string must be marked with `N_ (...)' so that
+# gettext recognizes it as a string requiring translation.
+author_mark_check:
+ @grep -n '^# *define AUTHORS "[^"]* and ' src/*.c |grep -v ' N_ (' && \
+ { echo 'Makefile.maint: enclose the above strings in N_ (...)' 1>&2; \
+ exit 1; } || :
+
+# Sometimes it is useful to change the PATH environment variable
+# in Makefiles. When doing so, it's better not to use the Unix-centric
+# path separator of `:', but rather the automake-provided `@PATH_SEPARATOR@'.
+# It'd be better to use `find -print0 ...|xargs -0 ...', but less portable,
+# and there probably aren't many projects with so many Makefile.am files
+# that we'd have to worry about limits on command line length.
+msg = 'Makefile.maint: Do not use `:'\'' above; use @PATH_SEPARATOR@ instead'
+makefile_path_separator_check:
+ @grep -n 'PATH=.*:' `find $(srcdir) -name Makefile.am` \
+ && { echo $(msg) 1>&2; exit 1; } || :
+
+# Check that `make alpha' will not fail at the end of the process.
+writable-files:
+ if test -d $(release_archive_dir); then :; else \
+ mkdir $(release_archive_dir); \
+ fi
+ for file in $(distdir).tar.gz $(xd-delta) \
+ $(release_archive_dir)/$(distdir).tar.gz \
+ $(release_archive_dir)/$(xd-delta); do \
+ test -e $$file || continue; \
+ test -w $$file \
+ || { echo ERROR: $$file is not writable; fail=1; }; \
+ done; \
+ test "$$fail" && exit 1 || :
+
+v_etc_file = lib/version-etc.c
+sample-test = tests/sample-test
+# Make sure that the copyright date in $(v_etc_file) is up to date.
+copyright-check:
+ @if test -f $(v_etc_file); then \
+ grep 'enum { COPYRIGHT_YEAR = '$$(date +%Y)' };' $(v_etc_file) \
+ >/dev/null \
+ || { echo 'out of date copyright in $(v_etc_file); update it' 1>&2; \
+ exit 1; }; \
+ fi
+ @if test -f $(sample-test); then \
+ grep '# Copyright (C) '$$(date +%Y)' Free' $(sample-test) \
+ >/dev/null \
+ || { echo 'out of date copyright in $(sample-test); update it' 1>&2; \
+ exit 1; }; \
+ fi
+
+
+# Sanity checks with the repository.
+# Abort early if this tag has already been used.
+vc-tag-check:
+ used=no; \
+ if $(VC) --help | grep CVS; then \
+ $(CVS) -n log -h README|grep -e $(this-vc-tag): >/dev/null \
+ && used=yes; \
+ else \
+ $(GIT) tag -l '^$(this-vc-tag)$$' && used=yes; \
+ fi; \
+ if test "$$used" = yes; then \
+ echo "$(this-vc-tag) has already been used; not tagging" 1>&2; \
+ exit 1; \
+ fi
+
+vc-diff-check:
+ $(VC) diff > vc-diffs || :
+ if test -s vc-diffs; then \
+ cat vc-diffs; \
+ echo "Some files are locally modified:" 1>&2; \
+ exit 1; \
+ else \
+ rm vc-diffs; \
+ fi
+
+cvs-check: vc-diff-check vc-tag-check
+
+maintainer-distcheck:
+ $(MAKE) distcheck
+ $(MAKE) my-distcheck
+
+
+# Tag before making distribution. Also, don't make a distribution if
+# checks fail. Also, make sure the NEWS file is up-to-date.
+# FIXME: use dist-hook/my-dist like distcheck-hook/my-distcheck.
+vc-dist: $(local-check) cvs-check maintainer-distcheck
+ $(VC-tag) $(this-vc-tag)
+ $(MAKE) dist
+
+# Use this to make sure we don't run these programs when building
+# from a virgin tgz file, below.
+null_AM_MAKEFLAGS = \
+ ACLOCAL=false \
+ AUTOCONF=false \
+ AUTOMAKE=false \
+ AUTOHEADER=false \
+ MAKEINFO=false
+
+warn_cflags = -Dlint -O -Werror -Wall -Wformat -Wshadow -Wpointer-arith
+
+# Use -Wformat -Werror to detect format-string/arg-list mismatches.
+# Also, check for shadowing problems with -Wshadow, and for pointer
+# arithmetic problems with -Wpointer-arith.
+# These CFLAGS are pretty strict. If you build this target, you probably
+# have to have a recent version of gcc and glibc headers.
+TMPDIR ?= /tmp
+t=$(TMPDIR)/$(PACKAGE)/test
+my-distcheck: $(local-check) $(release_archive_dir)/$(prev-tgz)
+ -rm -rf $(t)
+ mkdir -p $(t)
+ GZIP=$(GZIP_ENV) $(AMTAR) -C $(t) -zxf $(distdir).tar.gz
+ cd $(t)/$(distdir) \
+ && ./configure --disable-nls \
+ && $(MAKE) CFLAGS='$(warn_cflags)' \
+ AM_MAKEFLAGS='$(null_AM_MAKEFLAGS)' \
+ && $(MAKE) dvi \
+ && $(MAKE) check \
+ && $(MAKE) distclean
+ (cd $(t) && mv $(distdir) $(distdir).old \
+ && $(AMTAR) -zxf - ) < $(distdir).tar.gz
+ diff -ur $(t)/$(distdir).old $(t)/$(distdir)
+ if test -f $(srcdir)/src/c99-to-c89.diff; then \
+ cd $(t)/$(distdir) \
+ && (cd src && patch -V never --fuzz=0 <c99-to-c89.diff) \
+ && ./configure --disable-largefile \
+ CFLAGS='-Werror -ansi -pedantic -Wno-long-long' \
+ && $(MAKE); \
+ fi
+ -rm -rf $(t)
+ @echo "========================"; \
+ echo "$(distdir).tar.gz is ready for distribution"; \
+ echo "========================"
+
+WGET = wget
+WGETFLAGS = -C off
+
+rel-check:
+ tarz=/tmp/rel-check-tarz-$$$$; \
+ md5_tmp=/tmp/rel-check-md5-$$$$; \
+ set -e; \
+ trap 'status=$$?; rm -f $$tarz $$md5_tmp; exit $$status' 0 1 2 3 15; \
+ $(WGET) $(WGETFLAGS) -q --output-document=$$tarz $(url); \
+ echo "$(md5) -" > $$md5_tmp; \
+ md5sum -c $$md5_tmp < $$tarz
+
+prev-tgz = $(PACKAGE)-$(PREV_VERSION).tar.gz
+xd-delta = $(PACKAGE)-$(PREV_VERSION)-$(VERSION).xdelta
+
+rel-files = $(xd-delta) $(DIST_ARCHIVES)
+
+# Approximate the date of last gnulib "update" by the ChangeLog file's
+# mtime, and provide that date in the announcement.
+announcement: NEWS ChangeLog $(rel-files)
+ @cl_date=$$(stat --printf @%Y $(gnulib_dir)/ChangeLog); \
+ utc_date=$$(date -u --date $$cl_date '+%Y-%m-%d %T %z'); \
+ ./build-aux/announce-gen \
+ --release-type=$(RELEASE_TYPE) \
+ --package=$(PACKAGE) \
+ --prev=$(PREV_VERSION) \
+ --curr=$(VERSION) \
+ --gpg-key-id=$(gpg_key_ID) \
+ --news=NEWS \
+ --bootstrap-tools=autoconf,automake,bison,gnulib \
+ --gnulib-snapshot-time-stamp="$$utc_date" \
+ $(addprefix --url-dir=, $(url_dir_list))
+
+## ---------------- ##
+## Updating files. ##
+## ---------------- ##
+
+ftp-gnu = ftp://ftp.gnu.org/gnu
+www-gnu = http://www.gnu.org
+
+# Use mv, if you don't have/want move-if-change.
+move_if_change ?= move-if-change
+
+emit_upload_commands:
+ @echo =====================================
+ @echo =====================================
+ @echo "$(srcdir)/build-aux/gnupload $(GNUPLOADFLAGS) \\"
+ @echo " --to $(gnu_rel_host):$(PACKAGE) \\"
+ @echo " $(rel-files)"
+ @echo '# send the /tmp/announcement e-mail'
+ @echo =====================================
+ @echo =====================================
+
+$(xd-delta): $(release_archive_dir)/$(prev-tgz) $(distdir).tar.gz
+ xdelta delta -9 $^ $@ || :
+
+.PHONY: alpha beta major
+alpha beta major: news-date-check changelog-check $(local-check) writable-files
+ test $@ = major \
+ && { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$' \
+ || { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\
+ || :
+ $(MAKE) vc-dist
+ $(MAKE) $(xd-delta)
+ $(MAKE) -s announcement RELEASE_TYPE=$@ > /tmp/announce-$(my_distdir)
+ ln $(rel-files) $(release_archive_dir)
+ chmod a-w $(rel-files)
+ $(MAKE) -s emit_upload_commands RELEASE_TYPE=$@
+ echo $(VERSION) > $(prev_version_file)
+ $(VC) commit -m \
+ '$(prev_version_file): Record previous version: $(VERSION).' \
+ $(prev_version_file)
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..16fe151
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,1853 @@
+GNU coreutils NEWS -*- outline -*-
+
+* Noteworthy changes in release 6.9 (2007-03-22) [stable]
+
+** Bug fixes
+
+ cp -x (--one-file-system) would fail to set mount point permissions
+
+ The default block size and output format for df -P are now unaffected by
+ the DF_BLOCK_SIZE, BLOCK_SIZE, and BLOCKSIZE environment variables. It
+ is still affected by POSIXLY_CORRECT, though.
+
+ Using pr -m -s (i.e. merging files, with TAB as the output separator)
+ no longer inserts extraneous spaces between output columns.
+
+
+* Noteworthy changes in release 6.8 (2007-02-24) [not-unstable]
+
+** Bug fixes
+
+ chgrp, chmod, and chown now honor the --preserve-root option.
+ Before, they would warn, yet continuing traversing and operating on /.
+
+ chmod no longer fails in an environment (e.g., a chroot) with openat
+ support but with insufficient /proc support.
+
+ "cp --parents F/G D" no longer creates a directory D/F when F is not
+ a directory (and F/G is therefore invalid).
+
+ "cp --preserve=mode" would create directories that briefly had
+ too-generous permissions in some cases. For example, when copying a
+ directory with permissions 777 the destination directory might
+ temporarily be setgid on some file systems, which would allow other
+ users to create subfiles with the same group as the directory. Fix
+ similar problems with 'install' and 'mv'.
+
+ cut no longer dumps core for usage like "cut -f2- f1 f2" with two or
+ more file arguments. This was due to a double-free bug, introduced
+ in coreutils-5.3.0.
+
+ dd bs= operands now silently override any later ibs= and obs=
+ operands, as POSIX and tradition require.
+
+ "ls -FRL" always follows symbolic links on Linux. Introduced in
+ coreutils-6.0.
+
+ A cross-partition "mv /etc/passwd ~" (by non-root) now prints
+ a reasonable diagnostic. Before, it would print this:
+ "mv: cannot remove `/etc/passwd': Not a directory".
+
+ pwd and "readlink -e ." no longer fail unnecessarily when a parent
+ directory is unreadable.
+
+ "rm -rf /etc/passwd" (run by non-root) now prints a diagnostic.
+ Before it would print nothing.
+
+ "rm --interactive=never F" no longer prompts for an unwritable F
+
+** New features
+
+ sort's new --compress-program=PROG option specifies a compression
+ program to use when writing and reading temporary files.
+ This can help save both time and disk space when sorting large inputs.
+
+ sort accepts the new option -C, which acts like -c except no diagnostic
+ is printed. Its --check option now accepts an optional argument, and
+ --check=quiet and --check=silent are now aliases for -C, while
+ --check=diagnose-first is an alias for -c or plain --check.
+
+
+* Noteworthy changes in release 6.7 (2006-12-08) [stable]
+
+** Bug fixes
+
+ When cp -p copied a file with special mode bits set, the same bits
+ were set on the copy even when ownership could not be preserved.
+ This could result in files that were setuid to the wrong user.
+ To fix this, special mode bits are now set in the copy only if its
+ ownership is successfully preserved. Similar problems were fixed
+ with mv when copying across file system boundaries. This problem
+ affects all versions of coreutils through 6.6.
+
+ cp --preserve=ownership would create output files that temporarily
+ had too-generous permissions in some cases. For example, when
+ copying a file with group A and mode 644 into a group-B sticky
+ directory, the output file was briefly readable by group B.
+ Fix similar problems with cp options like -p that imply
+ --preserve=ownership, with install -d when combined with either -o
+ or -g, and with mv when copying across file system boundaries.
+ This bug affects coreutils 6.0 through 6.6.
+
+ du --one-file-system (-x) would skip subdirectories of any directory
+ listed as second or subsequent command line argument. This bug affects
+ coreutils-6.4, 6.5 and 6.6.
+
+
+* Noteworthy changes in release 6.6 (2006-11-22) [stable]
+
+** Bug fixes
+
+ ls would segfault (dereference a NULL pointer) for a file with a
+ nameless group or owner. This bug was introduced in coreutils-6.5.
+
+ A bug in the latest official m4/gettext.m4 (from gettext-0.15)
+ made configure fail to detect gettext support, due to the unusual
+ way in which coreutils uses AM_GNU_GETTEXT.
+
+** Improved robustness
+
+ Now, du (and the other fts clients: chmod, chgrp, chown) honor a
+ trailing slash in the name of a symlink-to-directory even on
+ Solaris 9, by working around its buggy fstatat implementation.
+
+
+* Major changes in release 6.5 (2006-11-19) [stable]
+
+** Bug fixes
+
+ du (and the other fts clients: chmod, chgrp, chown) would exit early
+ when encountering an inaccessible directory on a system with native
+ openat support (i.e., linux-2.6.16 or newer along with glibc-2.4
+ or newer). This bug was introduced with the switch to gnulib's
+ openat-based variant of fts, for coreutils-6.0.
+
+ "ln --backup f f" now produces a sensible diagnostic
+
+** New features
+
+ rm accepts a new option: --one-file-system
+
+
+* Major changes in release 6.4 (2006-10-22) [stable]
+
+** Bug fixes
+
+ chgrp and chown would malfunction when invoked with both -R and -H and
+ with one or more of the following: --preserve-root, --verbose, --changes,
+ --from=o:g (chown only). This bug was introduced with the switch to
+ gnulib's openat-based variant of fts, for coreutils-6.0.
+
+ cp --backup dir1 dir2, would rename an existing dir2/dir1 to dir2/dir1~.
+ This bug was introduced in coreutils-6.0.
+
+ With --force (-f), rm no longer fails for ENOTDIR.
+ For example, "rm -f existing-non-directory/anything" now exits
+ successfully, ignoring the error about a nonexistent file.
+
+
+* Major changes in release 6.3 (2006-09-30) [stable]
+
+** Improved robustness
+
+ pinky no longer segfaults on Darwin 7.9.0 (MacOS X 10.3.9) due to a
+ buggy native getaddrinfo function.
+
+ rm works around a bug in Darwin 7.9.0 (MacOS X 10.3.9) that would
+ sometimes keep it from removing all entries in a directory on an HFS+
+ or NFS-mounted partition.
+
+ sort would fail to handle very large input (around 40GB) on systems with a
+ mkstemp function that returns a file descriptor limited to 32-bit offsets.
+
+** Bug fixes
+
+ chmod would fail unnecessarily in an unusual case: when an initially-
+ inaccessible argument is rendered accessible by chmod's action on a
+ preceding command line argument. This bug also affects chgrp, but
+ it is harder to demonstrate. It does not affect chown. The bug was
+ introduced with the switch from explicit recursion to the use of fts
+ in coreutils-5.1.0 (2003-10-15).
+
+ cp -i and mv -i occasionally neglected to prompt when the copy or move
+ action was bound to fail. This bug dates back to before fileutils-4.0.
+
+ With --verbose (-v), cp and mv would sometimes generate no output,
+ or neglect to report file removal.
+
+ For the "groups" command:
+
+ "groups" no longer prefixes the output with "user :" unless more
+ than one user is specified; this is for compatibility with BSD.
+
+ "groups user" now exits nonzero when it gets a write error.
+
+ "groups" now processes options like --help more compatibly.
+
+ shuf would infloop, given 8KB or more of piped input
+
+** Portability
+
+ Versions of chmod, chown, chgrp, du, and rm (tools that use openat etc.)
+ compiled for Solaris 8 now also work when run on Solaris 10.
+
+
+* Major changes in release 6.2 (2006-09-18) [stable candidate]
+
+** Changes in behavior
+
+ mkdir -p and install -d (or -D) now use a method that forks a child
+ process if the working directory is unreadable and a later argument
+ uses a relative file name. This avoids some race conditions, but it
+ means you may need to kill two processes to stop these programs.
+
+ rm now rejects attempts to remove the root directory, e.g., `rm -fr /'
+ now fails without removing anything. Likewise for any file name with
+ a final `./' or `../' component.
+
+ tail now ignores the -f option if POSIXLY_CORRECT is set, no file
+ operand is given, and standard input is any FIFO; formerly it did
+ this only for pipes.
+
+** Infrastructure changes
+
+ Coreutils now uses gnulib via the gnulib-tool script.
+ If you check the source out from CVS, then follow the instructions
+ in README-cvs. Although this represents a large change to the
+ infrastructure, it should cause no change in how the tools work.
+
+** Bug fixes
+
+ cp --backup no longer fails when the last component of a source file
+ name is "." or "..".
+
+ "ls --color" would highlight other-writable and sticky directories
+ no differently than regular directories on a file system with
+ dirent.d_type support.
+
+ "mv -T --verbose --backup=t A B" now prints the " (backup: B.~1~)"
+ suffix when A and B are directories as well as when they are not.
+
+ mv and "cp -r" no longer fail when invoked with two arguments
+ where the first one names a directory and the second name ends in
+ a slash and doesn't exist. E.g., "mv dir B/", for nonexistent B,
+ now succeeds, once more. This bug was introduced in coreutils-5.3.0.
+
+
+* Major changes in release 6.1 (2006-08-19) [unstable]
+
+** Changes in behavior
+
+ df now considers BSD "kernfs" file systems to be dummies
+
+** New features
+
+ printf now supports the 'I' flag on hosts whose underlying printf
+ implementations support 'I', e.g., "printf %Id 2".
+
+** Bug fixes
+
+ cp --sparse preserves sparseness at the end of a file, even when
+ the file's apparent size is not a multiple of its block size.
+ [introduced with the original design, in fileutils-4.0r, 2000-04-29]
+
+ df (with a command line argument) once again prints its header
+ [introduced in coreutils-6.0]
+
+ ls -CF would misalign columns in some cases involving non-stat'able files
+ [introduced in coreutils-6.0]
+
+* Major changes in release 6.0 (2006-08-15) [unstable]
+
+** Improved robustness
+
+ df: if the file system claims to have more available than total blocks,
+ report the number of used blocks as being "total - available"
+ (a negative number) rather than as garbage.
+
+ dircolors: a new autoconf run-test for AIX's buggy strndup function
+ prevents malfunction on that system; may also affect cut, expand,
+ and unexpand.
+
+ fts no longer changes the current working directory, so its clients
+ (chmod, chown, chgrp, du) no longer malfunction under extreme conditions.
+
+ pwd and other programs using lib/getcwd.c work even on file systems
+ where dirent.d_ino values are inconsistent with those from stat.st_ino.
+
+ rm's core is now reentrant: rm --recursive (-r) now processes
+ hierarchies without changing the working directory at all.
+
+** Changes in behavior
+
+ basename and dirname now treat // as different from / on platforms
+ where the two are distinct.
+
+ chmod, install, and mkdir now preserve a directory's set-user-ID and
+ set-group-ID bits unless you explicitly request otherwise. E.g.,
+ `chmod 755 DIR' and `chmod u=rwx,go=rx DIR' now preserve DIR's
+ set-user-ID and set-group-ID bits instead of clearing them, and
+ similarly for `mkdir -m 755 DIR' and `mkdir -m u=rwx,go=rx DIR'. To
+ clear the bits, mention them explicitly in a symbolic mode, e.g.,
+ `mkdir -m u=rwx,go=rx,-s DIR'. To set them, mention them explicitly
+ in either a symbolic or a numeric mode, e.g., `mkdir -m 2755 DIR',
+ `mkdir -m u=rwx,go=rx,g+s' DIR. This change is for convenience on
+ systems where these bits inherit from parents. Unfortunately other
+ operating systems are not consistent here, and portable scripts
+ cannot assume the bits are set, cleared, or preserved, even when the
+ bits are explicitly mentioned. For example, OpenBSD 3.9 `mkdir -m
+ 777 D' preserves D's setgid bit but `chmod 777 D' clears it.
+ Conversely, Solaris 10 `mkdir -m 777 D', `mkdir -m g-s D', and
+ `chmod 0777 D' all preserve D's setgid bit, and you must use
+ something like `chmod g-s D' to clear it.
+
+ `cp --link --no-dereference' now works also on systems where the
+ link system call cannot create a hard link to a symbolic link.
+ This change has no effect on systems with a Linux-based kernel.
+
+ csplit and nl now use POSIX syntax for regular expressions, not
+ Emacs syntax. As a result, character classes like [[:print:]] and
+ interval expressions like A\{1,9\} now have their usual meaning,
+ . no longer matches the null character, and \ must precede the + and
+ ? operators.
+
+ date: a command like date -d '2006-04-23 21 days ago' would print
+ the wrong date in some time zones. (see the test for an example)
+
+ df changes:
+
+ df now considers "none" and "proc" file systems to be dummies and
+ therefore does not normally display them. Also, inaccessible file
+ systems (which can be caused by shadowed mount points or by
+ chrooted bind mounts) are now dummies, too.
+
+ df now fails if it generates no output, so you can inspect the
+ exit status of a command like "df -t ext3 -t reiserfs DIR" to test
+ whether DIR is on a file system of type "ext3" or "reiserfs".
+
+ expr no longer complains about leading ^ in a regular expression
+ (the anchor is ignored), or about regular expressions like A** (the
+ second "*" is ignored). expr now exits with status 2 (not 3) for
+ errors it detects in the expression's values; exit status 3 is now
+ used only for internal errors (such as integer overflow, which expr
+ now checks for).
+
+ install and mkdir now implement the X permission symbol correctly,
+ e.g., `mkdir -m a+X dir'; previously the X was ignored.
+
+ install now creates parent directories with mode u=rwx,go=rx (755)
+ instead of using the mode specified by the -m option; and it does
+ not change the owner or group of parent directories. This is for
+ compatibility with BSD and closes some race conditions.
+
+ ln now uses different (and we hope clearer) diagnostics when it fails.
+ ln -v now acts more like FreeBSD, so it generates output only when
+ successful and the output is easier to parse.
+
+ ls now defaults to --time-style='locale', not --time-style='posix-long-iso'.
+ However, the 'locale' time style now behaves like 'posix-long-iso'
+ if your locale settings appear to be messed up. This change
+ attempts to have the default be the best of both worlds.
+
+ mkfifo and mknod no longer set special mode bits (setuid, setgid,
+ and sticky) with the -m option.
+
+ nohup's usual diagnostic now more precisely specifies the I/O
+ redirections, e.g., "ignoring input and appending output to
+ nohup.out". Also, nohup now redirects stderr to nohup.out (or
+ $HOME/nohup.out) if stdout is closed and stderr is a tty; this is in
+ response to Open Group XCU ERN 71.
+
+ rm --interactive now takes an optional argument, although the
+ default of using no argument still acts like -i.
+
+ rm no longer fails to remove an empty, unreadable directory
+
+ seq changes:
+
+ seq defaults to a minimal fixed point format that does not lose
+ information if seq's operands are all fixed point decimal numbers.
+ You no longer need the `-f%.f' in `seq -f%.f 1048575 1024 1050623',
+ for example, since the default format now has the same effect.
+
+ seq now lets you use %a, %A, %E, %F, and %G formats.
+
+ seq now uses long double internally rather than double.
+
+ sort now reports incompatible options (e.g., -i and -n) rather than
+ silently ignoring one of them.
+
+ stat's --format=FMT option now works the way it did before 5.3.0:
+ FMT is automatically newline terminated. The first stable release
+ containing this change was 5.92.
+
+ stat accepts the new option --printf=FMT, where FMT is *not*
+ automatically newline terminated.
+
+ stat: backslash escapes are interpreted in a format string specified
+ via --printf=FMT, but not one specified via --format=FMT. That includes
+ octal (\ooo, at most three octal digits), hexadecimal (\xhh, one or
+ two hex digits), and the standard sequences (\a, \b, \f, \n, \r, \t,
+ \v, \", \\).
+
+ With no operand, 'tail -f' now silently ignores the '-f' only if
+ standard input is a FIFO or pipe and POSIXLY_CORRECT is set.
+ Formerly, it ignored the '-f' when standard input was a FIFO, pipe,
+ or socket.
+
+** Scheduled for removal
+
+ ptx's --copyright (-C) option is scheduled for removal in 2007, and
+ now evokes a warning. Use --version instead.
+
+ rm's --directory (-d) option is scheduled for removal in 2006. This
+ option has been silently ignored since coreutils 5.0. On systems
+ that support unlinking of directories, you can use the "unlink"
+ command to unlink a directory.
+
+ Similarly, we are considering the removal of ln's --directory (-d,
+ -F) option in 2006. Please write to <bug-coreutils@gnu.org> if this
+ would cause a problem for you. On systems that support hard links
+ to directories, you can use the "link" command to create one.
+
+** New programs
+
+ base64: base64 encoding and decoding (RFC 3548) functionality.
+ sha224sum: print or check a SHA224 (224-bit) checksum
+ sha256sum: print or check a SHA256 (256-bit) checksum
+ sha384sum: print or check a SHA384 (384-bit) checksum
+ sha512sum: print or check a SHA512 (512-bit) checksum
+ shuf: Shuffle lines of text.
+
+** New features
+
+ chgrp now supports --preserve-root, --no-preserve-root (default),
+ as it was documented to do, and just as chmod, chown, and rm do.
+
+ New dd iflag= and oflag= flags:
+
+ 'directory' causes dd to fail unless the file is a directory, on
+ hosts that support this (e.g., Linux kernels, version 2.1.126 and
+ later). This has limited utility but is present for completeness.
+
+ 'noatime' causes dd to read a file without updating its access
+ time, on hosts that support this (e.g., Linux kernels, version
+ 2.6.8 and later).
+
+ 'nolinks' causes dd to fail if the file has multiple hard links,
+ on hosts that support this (e.g., Solaris 10 and later).
+
+ ls accepts the new option --group-directories-first, to make it
+ list directories before files.
+
+ rm now accepts the -I (--interactive=once) option. This new option
+ prompts once if rm is invoked recursively or if more than three
+ files are being deleted, which is less intrusive than -i prompting
+ for every file, but provides almost the same level of protection
+ against mistakes.
+
+ shred and sort now accept the --random-source option.
+
+ sort now accepts the --random-sort (-R) option and `R' ordering option.
+
+ sort now supports obsolete usages like "sort +1 -2" unless
+ POSIXLY_CORRECT is set. However, when conforming to POSIX
+ 1003.1-2001 "sort +1" still sorts the file named "+1".
+
+ wc accepts a new option --files0-from=FILE, where FILE contains a
+ list of NUL-terminated file names.
+
+** Bug fixes
+
+ cat with any of the options, -A -v -e -E -T, when applied to a
+ file in /proc or /sys (linux-specific), would truncate its output,
+ usually printing nothing.
+
+ cp -p would fail in a /proc-less chroot, on some systems
+
+ When `cp -RL' encounters the same directory more than once in the
+ hierarchy beneath a single command-line argument, it no longer confuses
+ them with hard-linked directories.
+
+ fts-using tools (chmod, chown, chgrp, du) no longer fail due to
+ a double-free bug -- it could be triggered by making a directory
+ inaccessible while e.g., du is traversing the hierarchy under it.
+
+ fts-using tools (chmod, chown, chgrp, du) no longer misinterpret
+ a very long symlink chain as a dangling symlink. Before, such a
+ misinterpretation would cause these tools not to diagnose an ELOOP error.
+
+ ls --indicator-style=file-type would sometimes stat a symlink
+ unnecessarily.
+
+ ls --file-type worked like --indicator-style=slash (-p),
+ rather than like --indicator-style=file-type.
+
+ mv: moving a symlink into the place of an existing non-directory is
+ now done atomically; before, mv would first unlink the destination.
+
+ mv -T DIR EMPTY_DIR no longer fails unconditionally. Also, mv can
+ now remove an empty destination directory: mkdir -p a b/a; mv a b
+
+ rm (on systems with openat) can no longer exit before processing
+ all command-line arguments.
+
+ rm is no longer susceptible to a few low-probability memory leaks.
+
+ rm -r no longer fails to remove an inaccessible and empty directory
+
+ rm -r's cycle detection code can no longer be tricked into reporting
+ a false positive (introduced in fileutils-4.1.9).
+
+ shred --remove FILE no longer segfaults on Gentoo systems
+
+ sort would fail for large inputs (~50MB) on systems with a buggy
+ mkstemp function. sort and tac now use the replacement mkstemp
+ function, and hence are no longer subject to limitations (of 26 or 32,
+ on the maximum number of files from a given template) on HP-UX 10.20,
+ SunOS 4.1.4, Solaris 2.5.1 and OSF1/Tru64 V4.0F&V5.1.
+
+ tail -f once again works on a file with the append-only
+ attribute (affects at least Linux ext2, ext3, xfs file systems)
+
+* Major changes in release 5.97 (2006-06-24) [stable]
+* Major changes in release 5.96 (2006-05-22) [stable]
+* Major changes in release 5.95 (2006-05-12) [stable]
+* Major changes in release 5.94 (2006-02-13) [stable]
+
+[see the b5_9x branch for details]
+
+* Major changes in release 5.93 (2005-11-06) [stable]
+
+** Bug fixes
+
+ dircolors no longer segfaults upon an attempt to use the new
+ STICKY_OTHER_WRITABLE (OWT) attribute.
+
+ du no longer overflows a counter when processing a file larger than
+ 2^31-1 on some 32-bit systems (at least some AIX 5.1 configurations).
+
+ md5sum once again defaults to using the ` ' non-binary marker
+ (rather than the `*' binary marker) by default on Unix-like systems.
+
+ mkdir -p and install -d no longer exit nonzero when asked to create
+ a directory like `nonexistent/.'
+
+ rm emits a better diagnostic when (without -r) it fails to remove
+ a directory on e.g., Solaris 9/10 systems.
+
+ tac now works when stdin is a tty, even on non-Linux systems.
+
+ "tail -c 2 FILE" and "touch 0101000000" now operate as POSIX
+ 1003.1-2001 requires, even when coreutils is conforming to older
+ POSIX standards, as the newly-required behavior is upward-compatible
+ with the old.
+
+ The documentation no longer mentions rm's --directory (-d) option.
+
+** Build-related bug fixes
+
+ installing .mo files would fail
+
+
+* Major changes in release 5.92 (2005-10-22) [stable]
+
+** Bug fixes
+
+ chmod now diagnoses an invalid mode string starting with an octal digit
+
+ dircolors now properly quotes single-quote characters
+
+
+* Major changes in release 5.91 (2005-10-17) [stable candidate]
+
+** Bug fixes
+
+ "mkdir -p /a/b/c" no longer fails merely because a leading prefix
+ directory (e.g., /a or /a/b) exists on a read-only file system.
+
+** Removed options
+
+ tail's --allow-missing option has been removed. Use --retry instead.
+
+ stat's --link and -l options have been removed.
+ Use --dereference (-L) instead.
+
+** Deprecated options
+
+ Using ls, du, or df with the --kilobytes option now evokes a warning
+ that the long-named option is deprecated. Use `-k' instead.
+
+ du's long-named --megabytes option now evokes a warning.
+ Use -m instead.
+
+
+* Major changes in release 5.90 (2005-09-29) [unstable]
+
+** Bring back support for `head -NUM', `tail -NUM', etc. even when
+ conforming to POSIX 1003.1-2001. The following changes apply only
+ when conforming to POSIX 1003.1-2001; there is no effect when
+ conforming to older POSIX versions.
+
+ The following usages now behave just as when conforming to older POSIX:
+
+ date -I
+ expand -TAB1[,TAB2,...]
+ fold -WIDTH
+ head -NUM
+ join -j FIELD
+ join -j1 FIELD
+ join -j2 FIELD
+ join -o FIELD_NAME1 FIELD_NAME2...
+ nice -NUM
+ od -w
+ pr -S
+ split -NUM
+ tail -[NUM][bcl][f] [FILE]
+
+ The following usages no longer work, due to the above changes:
+
+ date -I TIMESPEC (use `date -ITIMESPEC' instead)
+ od -w WIDTH (use `od -wWIDTH' instead)
+ pr -S STRING (use `pr -SSTRING' instead)
+
+ A few usages still have behavior that depends on which POSIX standard is
+ being conformed to, and portable applications should beware these
+ problematic usages. These include:
+
+ Problematic Standard-conforming replacement, depending on
+ usage whether you prefer the behavior of:
+ POSIX 1003.2-1992 POSIX 1003.1-2001
+ sort +4 sort -k 5 sort ./+4
+ tail +4 tail -n +4 tail ./+4
+ tail - f tail f [see (*) below]
+ tail -c 4 tail -c 10 ./4 tail -c4
+ touch 12312359 f touch -t 12312359 f touch ./12312359 f
+ uniq +4 uniq -s 4 uniq ./+4
+
+ (*) "tail - f" does not conform to POSIX 1003.1-2001; to read
+ standard input and then "f", use the command "tail -- - f".
+
+ These changes are in response to decisions taken in the January 2005
+ Austin Group standardization meeting. For more details, please see
+ "Utility Syntax Guidelines" in the Minutes of the January 2005
+ Meeting <http://www.opengroup.org/austin/docs/austin_239.html>.
+
+** Binary input and output are now implemented more consistently.
+ These changes affect only platforms like MS-DOS that distinguish
+ between binary and text files.
+
+ The following programs now always use text input/output:
+
+ expand unexpand
+
+ The following programs now always use binary input/output to copy data:
+
+ cp install mv shred
+
+ The following programs now always use binary input/output to copy
+ data, except for stdin and stdout when it is a terminal.
+
+ head tac tail tee tr
+ (cat behaves similarly, unless one of the options -bensAE is used.)
+
+ cat's --binary or -B option has been removed. It existed only on
+ MS-DOS-like platforms, and didn't work as documented there.
+
+ md5sum and sha1sum now obey the -b or --binary option, even if
+ standard input is a terminal, and they no longer report files to be
+ binary if they actually read them in text mode.
+
+** Changes for better conformance to POSIX
+
+ cp, ln, mv, rm changes:
+
+ Leading white space is now significant in responses to yes-or-no questions.
+ For example, if "rm" asks "remove regular file `foo'?" and you respond
+ with " y" (i.e., space before "y"), it counts as "no".
+
+ dd changes:
+
+ On a QUIT or PIPE signal, dd now exits without printing statistics.
+
+ On hosts lacking the INFO signal, dd no longer treats the USR1
+ signal as if it were INFO when POSIXLY_CORRECT is set.
+
+ If the file F is non-seekable and contains fewer than N blocks,
+ then before copying "dd seek=N of=F" now extends F with zeroed
+ blocks until F contains N blocks.
+
+ fold changes:
+
+ When POSIXLY_CORRECT is set, "fold file -3" is now equivalent to
+ "fold file ./-3", not the obviously-erroneous "fold file ./-w3".
+
+ ls changes:
+
+ -p now marks only directories; it is equivalent to the new option
+ --indicator-style=slash. Use --file-type or
+ --indicator-style=file-type to get -p's old behavior.
+
+ nice changes:
+
+ Documentation and diagnostics now refer to "nicenesses" (commonly
+ in the range -20...19) rather than "nice values" (commonly 0...39).
+
+ nohup changes:
+
+ nohup now ignores the umask when creating nohup.out.
+
+ nohup now closes stderr if it is a terminal and stdout is closed.
+
+ nohup now exits with status 127 (not 1) when given an invalid option.
+
+ pathchk changes:
+
+ It now rejects the empty name in the normal case. That is,
+ "pathchk -p ''" now fails, and "pathchk ''" fails unless the
+ current host (contra POSIX) allows empty file names.
+
+ The new -P option checks whether a file name component has leading "-",
+ as suggested in interpretation "Austin-039:XCU:pathchk:pathchk -p"
+ <http://www.opengroup.org/austin/interps/doc.tpl?gdid=6232>.
+ It also rejects the empty name even if the current host accepts it; see
+ <http://www.opengroup.org/austin/interps/doc.tpl?gdid=6233>.
+
+ The --portability option is now equivalent to -p -P.
+
+** Bug fixes
+
+ chmod, mkdir, mkfifo, and mknod formerly mishandled rarely-used symbolic
+ permissions like =xX and =u, and did not properly diagnose some invalid
+ strings like g+gr, ug,+x, and +1. These bugs have been fixed.
+
+ csplit could produce corrupt output, given input lines longer than 8KB
+
+ dd now computes statistics using a realtime clock (if available)
+ rather than the time-of-day clock, to avoid glitches if the
+ time-of-day is changed while dd is running. Also, it avoids
+ using unsafe code in signal handlers; this fixes some core dumps.
+
+ expr and test now correctly compare integers of unlimited magnitude.
+
+ expr now detects integer overflow when converting strings to integers,
+ rather than silently wrapping around.
+
+ ls now refuses to generate time stamps containing more than 1000 bytes, to
+ foil potential denial-of-service attacks on hosts with very large stacks.
+
+ "mkdir -m =+x dir" no longer ignores the umask when evaluating "+x",
+ and similarly for mkfifo and mknod.
+
+ "mkdir -p /tmp/a/b dir" no longer attempts to create the `.'-relative
+ directory, dir (in /tmp/a), when, after creating /tmp/a/b, it is unable
+ to return to its initial working directory. Similarly for "install -D
+ file /tmp/a/b/file".
+
+ "pr -D FORMAT" now accepts the same formats that "date +FORMAT" does.
+
+ stat now exits nonzero if a file operand does not exist
+
+** Improved robustness
+
+ Date no longer needs to allocate virtual memory to do its job,
+ so it can no longer fail due to an out-of-memory condition,
+ no matter how large the result.
+
+** Improved portability
+
+ hostid now prints exactly 8 hexadecimal digits, possibly with leading zeros,
+ and without any spurious leading "fff..." on 64-bit hosts.
+
+ nice now works on Darwin 7.7.0 in spite of its invalid definition of NZERO.
+
+ `rm -r' can remove all entries in a directory even when it is on a
+ file system for which readdir is buggy and that was not checked by
+ coreutils' old configure-time run-test.
+
+ sleep no longer fails when resumed after being suspended on linux-2.6.8.1,
+ in spite of that kernel's buggy nanosleep implementation.
+
+** New features
+
+ chmod -w now complains if its behavior differs from what chmod a-w
+ would do, and similarly for chmod -r, chmod -x, etc.
+
+ cp and mv: the --reply=X option is deprecated
+
+ date accepts the new option --rfc-3339=TIMESPEC. The old --iso-8601 (-I)
+ option is deprecated; it still works, but new applications should avoid it.
+ date, du, ls, and pr's time formats now support new %:z, %::z, %:::z
+ specifiers for numeric time zone offsets like -07:00, -07:00:00, and -07.
+
+ dd has new iflag= and oflag= flags "binary" and "text", which have an
+ effect only on nonstandard platforms that distinguish text from binary I/O.
+
+ dircolors now supports SETUID, SETGID, STICKY_OTHER_WRITABLE,
+ OTHER_WRITABLE, and STICKY, with ls providing default colors for these
+ categories if not specified by dircolors.
+
+ du accepts new options: --time[=TYPE] and --time-style=STYLE
+
+ join now supports a NUL field separator, e.g., "join -t '\0'".
+ join now detects and reports incompatible options, e.g., "join -t x -t y",
+
+ ls no longer outputs an extra space between the mode and the link count
+ when none of the listed files has an ACL.
+
+ md5sum --check now accepts multiple input files, and similarly for sha1sum.
+
+ If stdin is a terminal, nohup now redirects it from /dev/null to
+ prevent the command from tying up an OpenSSH session after you logout.
+
+ "rm -FOO" now suggests "rm ./-FOO" if the file "-FOO" exists and
+ "-FOO" is not a valid option.
+
+ stat -f -c %S outputs the fundamental block size (used for block counts).
+ stat -f's default output format has been changed to output this size as well.
+ stat -f recognizes file systems of type XFS and JFS
+
+ "touch -" now touches standard output, not a file named "-".
+
+ uname -a no longer generates the -p and -i outputs if they are unknown.
+
+* Major changes in release 5.3.0 (2005-01-08) [unstable]
+
+** Bug fixes
+
+ Several fixes to chgrp and chown for compatibility with POSIX and BSD:
+
+ Do not affect symbolic links by default.
+ Now, operate on whatever a symbolic link points to, instead.
+ To get the old behavior, use --no-dereference (-h).
+
+ --dereference now works, even when the specified owner
+ and/or group match those of an affected symlink.
+
+ Check for incompatible options. When -R and --dereference are
+ both used, then either -H or -L must also be used. When -R and -h
+ are both used, then -P must be in effect.
+
+ -H, -L, and -P have no effect unless -R is also specified.
+ If -P and -R are both specified, -h is assumed.
+
+ Do not optimize away the chown() system call when the file's owner
+ and group already have the desired value. This optimization was
+ incorrect, as it failed to update the last-changed time and reset
+ special permission bits, as POSIX requires.
+
+ "chown : file", "chown '' file", and "chgrp '' file" now succeed
+ without changing the uid or gid, instead of reporting an error.
+
+ Do not report an error if the owner or group of a
+ recursively-encountered symbolic link cannot be updated because
+ the file system does not support it.
+
+ chmod now accepts multiple mode-like options, e.g., "chmod -r -w f".
+
+ chown is no longer subject to a race condition vulnerability, when
+ used with --from=O:G and without the (-h) --no-dereference option.
+
+ cut's --output-delimiter=D option works with abutting byte ranges.
+
+ dircolors's documentation now recommends that shell scripts eval
+ "`dircolors`" rather than `dircolors`, to avoid shell expansion pitfalls.
+
+ du no longer segfaults when a subdirectory of an operand
+ directory is removed while du is traversing that subdirectory.
+ Since the bug was in the underlying fts.c module, it also affected
+ chown, chmod, and chgrp.
+
+ du's --exclude-from=FILE and --exclude=P options now compare patterns
+ against the entire name of each file, rather than against just the
+ final component.
+
+ echo now conforms to POSIX better. It supports the \0ooo syntax for
+ octal escapes, and \c now terminates printing immediately. If
+ POSIXLY_CORRECT is set and the first argument is not "-n", echo now
+ outputs all option-like arguments instead of treating them as options.
+
+ expand and unexpand now conform to POSIX better. They check for
+ blanks (which can include characters other than space and tab in
+ non-POSIX locales) instead of spaces and tabs. Unexpand now
+ preserves some blanks instead of converting them to tabs or spaces.
+
+ "ln x d/" now reports an error if d/x is a directory and x a file,
+ instead of incorrectly creating a link to d/x/x.
+
+ ls no longer segfaults on systems for which SIZE_MAX != (size_t) -1.
+
+ md5sum and sha1sum now report an error when given so many input
+ lines that their line counter overflows, instead of silently
+ reporting incorrect results.
+
+ Fixes for "nice":
+
+ If it fails to lower the niceness due to lack of permissions,
+ it goes ahead and runs the command anyway, as POSIX requires.
+
+ It no longer incorrectly reports an error if the current niceness
+ happens to be -1.
+
+ It no longer assumes that nicenesses range from -20 through 19.
+
+ It now consistently adjusts out-of-range nicenesses to the
+ closest values in range; formerly it sometimes reported an error.
+
+ pathchk no longer accepts trailing options, e.g., "pathchk -p foo -b"
+ now treats -b as a file name to check, not as an invalid option.
+
+ `pr --columns=N' was not equivalent to `pr -N' when also using
+ either -s or -w.
+
+ pr now supports page numbers up to 2**64 on most hosts, and it
+ detects page number overflow instead of silently wrapping around.
+ pr now accepts file names that begin with "+" so long as the rest of
+ the file name does not look like a page range.
+
+ printf has several changes:
+
+ It now uses 'intmax_t' (not 'long int') to format integers, so it
+ can now format 64-bit integers on most modern hosts.
+
+ On modern hosts it now supports the C99-inspired %a, %A, %F conversion
+ specs, the "'" and "0" flags, and the ll, j, t, and z length modifiers
+ (this is compatible with recent Bash versions).
+
+ The printf command now rejects invalid conversion specifications
+ like %#d, instead of relying on undefined behavior in the underlying
+ printf function.
+
+ ptx now diagnoses invalid values for its --width=N (-w)
+ and --gap-size=N (-g) options.
+
+ mv (when moving between partitions) no longer fails when
+ operating on too many command-line-specified nonempty directories.
+
+ "readlink -f" is more compatible with prior implementations
+
+ rm (without -f) no longer hangs when attempting to remove a symlink
+ to a file on an off-line NFS-mounted partition.
+
+ rm no longer gets a failed assertion under some unusual conditions.
+
+ rm no longer requires read access to the current directory.
+
+ "rm -r" would mistakenly fail to remove files under a directory
+ for some types of errors (e.g., read-only file system, I/O error)
+ when first encountering the directory.
+
+ "sort" fixes:
+
+ "sort -o -" now writes to a file named "-" instead of to standard
+ output; POSIX requires this.
+
+ An unlikely race condition has been fixed where "sort" could have
+ mistakenly removed a temporary file belonging to some other process.
+
+ "sort" no longer has O(N**2) behavior when it creates many temporary files.
+
+ tac can now handle regular, nonseekable files like Linux's
+ /proc/modules. Before, it would produce no output for such a file.
+
+ tac would exit immediately upon I/O or temp-file creation failure.
+ Now it continues on, processing any remaining command line arguments.
+
+ "tail -f" no longer mishandles pipes and fifos. With no operands,
+ tail now ignores -f if standard input is a pipe, as POSIX requires.
+ When conforming to POSIX 1003.2-1992, tail now supports the SUSv2 b
+ modifier (e.g., "tail -10b file") and it handles some obscure cases
+ more correctly, e.g., "tail +cl" now reads the file "+cl" rather
+ than reporting an error, "tail -c file" no longer reports an error,
+ and "tail - file" no longer reads standard input.
+
+ tee now exits when it gets a SIGPIPE signal, as POSIX requires.
+ To get tee's old behavior, use the shell command "(trap '' PIPE; tee)".
+ Also, "tee -" now writes to standard output instead of to a file named "-".
+
+ "touch -- MMDDhhmm[yy] file" is now equivalent to
+ "touch MMDDhhmm[yy] file" even when conforming to pre-2001 POSIX.
+
+ tr no longer mishandles a second operand with leading "-".
+
+ who now prints user names in full instead of truncating them after 8 bytes.
+
+ The following commands now reject unknown options instead of
+ accepting them as operands, so that users are properly warned that
+ options may be added later. Formerly they accepted unknown options
+ as operands; e.g., "basename -a a" acted like "basename -- -a a".
+
+ basename dirname factor hostname link nohup sync unlink yes
+
+** New features
+
+ For efficiency, `sort -m' no longer copies input to a temporary file
+ merely because the input happens to come from a pipe. As a result,
+ some relatively-contrived examples like `cat F | sort -m -o F - G'
+ are no longer safe, as `sort' might start writing F before `cat' is
+ done reading it. This problem cannot occur unless `-m' is used.
+
+ When outside the default POSIX locale, the 'who' and 'pinky'
+ commands now output time stamps like "2004-06-21 13:09" instead of
+ the traditional "Jun 21 13:09".
+
+ pwd now works even when run from a working directory whose name
+ is longer than PATH_MAX.
+
+ cp, install, ln, and mv have a new --no-target-directory (-T) option,
+ and -t is now a short name for their --target-directory option.
+
+ cp -pu and mv -u (when copying) now don't bother to update the
+ destination if the resulting time stamp would be no newer than the
+ preexisting time stamp. This saves work in the common case when
+ copying or moving multiple times to the same destination in a file
+ system with a coarse time stamp resolution.
+
+ cut accepts a new option, --complement, to complement the set of
+ selected bytes, characters, or fields.
+
+ dd now also prints the number of bytes transferred, the time, and the
+ transfer rate. The new "status=noxfer" operand suppresses this change.
+
+ dd has new conversions for the conv= option:
+
+ nocreat do not create the output file
+ excl fail if the output file already exists
+ fdatasync physically write output file data before finishing
+ fsync likewise, but also write metadata
+
+ dd has new iflag= and oflag= options with the following flags:
+
+ append append mode (makes sense for output file only)
+ direct use direct I/O for data
+ dsync use synchronized I/O for data
+ sync likewise, but also for metadata
+ nonblock use non-blocking I/O
+ nofollow do not follow symlinks
+ noctty do not assign controlling terminal from file
+
+ stty now provides support (iutf8) for setting UTF-8 input mode.
+
+ With stat, a specified format is no longer automatically newline terminated.
+ If you want a newline at the end of your output, append `\n' to the format
+ string.
+
+ 'df', 'du', and 'ls' now take the default block size from the
+ BLOCKSIZE environment variable if the BLOCK_SIZE, DF_BLOCK_SIZE,
+ DU_BLOCK_SIZE, and LS_BLOCK_SIZE environment variables are not set.
+ Unlike the other variables, though, BLOCKSIZE does not affect
+ values like 'ls -l' sizes that are normally displayed as bytes.
+ This new behavior is for compatibility with BSD.
+
+ du accepts a new option --files0-from=FILE, where FILE contains a
+ list of NUL-terminated file names.
+
+ Date syntax as used by date -d, date -f, and touch -d has been
+ changed as follows:
+
+ Dates like `January 32' with out-of-range components are now rejected.
+
+ Dates can have fractional time stamps like 2004-02-27 14:19:13.489392193.
+
+ Dates can be entered via integer counts of seconds since 1970 when
+ prefixed by `@'. For example, `@321' represents 1970-01-01 00:05:21 UTC.
+
+ Time zone corrections can now separate hours and minutes with a colon,
+ and can follow standard abbreviations like "UTC". For example,
+ "UTC +0530" and "+05:30" are supported, and are both equivalent to "+0530".
+
+ Date values can now have leading TZ="..." assignments that override
+ the environment only while that date is being processed. For example,
+ the following shell command converts from Paris to New York time:
+
+ TZ="America/New_York" date --date='TZ="Europe/Paris" 2004-10-31 06:30'
+
+ `date' has a new option --iso-8601=ns that outputs
+ nanosecond-resolution time stamps.
+
+ echo -e '\xHH' now outputs a byte whose hexadecimal value is HH,
+ for compatibility with bash.
+
+ ls now exits with status 1 on minor problems, 2 if serious trouble.
+
+ ls has a new --hide=PATTERN option that behaves like
+ --ignore=PATTERN, except that it is overridden by -a or -A.
+ This can be useful for aliases, e.g., if lh is an alias for
+ "ls --hide='*~'", then "lh -A" lists the file "README~".
+
+ In the following cases POSIX allows the default GNU behavior,
+ so when POSIXLY_CORRECT is set:
+
+ false, printf, true, unlink, and yes all support --help and --option.
+ ls supports TABSIZE.
+ pr no longer depends on LC_TIME for the date format in non-POSIX locales.
+ printf supports \u, \U, \x.
+ tail supports two or more files when using the obsolete option syntax.
+
+ The usual `--' operand is now supported by chroot, hostid, hostname,
+ pwd, sync, and yes.
+
+ `od' now conforms to POSIX better, and is more compatible with BSD:
+
+ The older syntax "od [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]" now works
+ even without --traditional. This is a change in behavior if there
+ are one or two operands and the last one begins with +, or if
+ there are two operands and the latter one begins with a digit.
+ For example, "od foo 10" and "od +10" now treat the last operand as
+ an offset, not as a file name.
+
+ -h is no longer documented, and may be withdrawn in future versions.
+ Use -x or -t x2 instead.
+
+ -i is now equivalent to -t dI (not -t d2), and
+ -l is now equivalent to -t dL (not -t d4).
+
+ -s is now equivalent to -t d2. The old "-s[NUM]" or "-s NUM"
+ option has been renamed to "-S NUM".
+
+ The default output format is now -t oS, not -t o2, i.e., short int
+ rather than two-byte int. This makes a difference only on hosts like
+ Cray systems where the C short int type requires more than two bytes.
+
+ readlink accepts new options: --canonicalize-existing (-e)
+ and --canonicalize-missing (-m).
+
+ The stat option --filesystem has been renamed to --file-system, for
+ consistency with POSIX "file system" and with cp and du --one-file-system.
+
+** Removed features
+
+ md5sum and sha1sum's undocumented --string option has been removed.
+
+ tail's undocumented --max-consecutive-size-changes option has been removed.
+
+* Major changes in release 5.2.1 (2004-03-12) [stable]
+
+** Bug fixes
+
+ mv could mistakenly fail to preserve hard links when moving two
+ or more arguments between partitions.
+
+ `cp --sparse=always F /dev/hdx' no longer tries to use lseek to create
+ holes in the destination.
+
+ nohup now sets the close-on-exec flag for its copy of the stderr file
+ descriptor. This avoids some nohup-induced hangs. For example, before
+ this change, if you ran `ssh localhost', then `nohup sleep 600 </dev/null &',
+ and then exited that remote shell, the ssh session would hang until the
+ 10-minute sleep terminated. With the fixed nohup, the ssh session
+ terminates immediately.
+
+ `expr' now conforms to POSIX better:
+
+ Integers like -0 and 00 are now treated as zero.
+
+ The `|' operator now returns 0, not its first argument, if both
+ arguments are null or zero. E.g., `expr "" \| ""' now returns 0,
+ not the empty string.
+
+ The `|' and `&' operators now use short-circuit evaluation, e.g.,
+ `expr 1 \| 1 / 0' no longer reports a division by zero.
+
+** New features
+
+ `chown user.group file' now has its traditional meaning even when
+ conforming to POSIX 1003.1-2001, so long as no user has a name
+ containing `.' that happens to equal `user.group'.
+
+
+* Major changes in release 5.2.0 (2004-02-19) [stable]
+
+** Bug fixes
+
+ none
+
+
+* Major changes in release 5.1.3 (2004-02-08): candidate to become stable 5.2.0
+
+** Bug fixes
+
+ `cp -d' now works as required even on systems like OSF V5.1 that
+ declare stat and lstat as `static inline' functions.
+
+ time stamps output by stat now include actual fractional seconds,
+ when available -- or .0000000 for files without that information.
+
+ seq no longer infloops when printing 2^31 or more numbers.
+ For reference, seq `echo 2^31|bc` > /dev/null takes about one hour
+ on a 1.6 GHz Athlon 2000 XP. Now it can output 2^53-1 numbers before
+ misbehaving.
+
+* Major changes in release 5.1.2 (2004-01-25):
+
+** Bug fixes
+
+ rmdir -p exits with status 1 on error; formerly it sometimes exited
+ with status 0 when given more than one argument.
+
+ nohup now always exits with status 127 when it finds an error,
+ as POSIX requires; formerly it sometimes exited with status 1.
+
+ Several programs (including cut, date, dd, env, hostname, nl, pr,
+ stty, and tr) now always exit with status 1 when they find an error;
+ formerly they sometimes exited with status 2.
+
+ factor no longer reports a usage error if stdin has the wrong format.
+
+ paste no longer infloops on ppc systems (bug introduced in 5.1.1)
+
+
+* Major changes in release 5.1.1 (2004-01-17):
+
+** Configuration option
+
+ You can select the default level of POSIX conformance at configure-time,
+ e.g., by ./configure DEFAULT_POSIX2_VERSION=199209
+
+** Bug fixes
+
+ fold -s works once again on systems with differing sizes for int
+ and size_t (bug introduced in 5.1.0)
+
+** New features
+
+ touch -r now specifies the origin for any relative times in the -d
+ operand, if both options are given. For example, "touch -r FOO -d
+ '-5 seconds' BAR" sets BAR's modification time to be five seconds
+ before FOO's.
+
+ join: The obsolete options "-j1 FIELD", "-j2 FIELD", and
+ "-o LIST1 LIST2..." are no longer supported on POSIX 1003.1-2001 systems.
+ Portable scripts should use "-1 FIELD", "-2 FIELD", and
+ "-o LIST1,LIST2..." respectively. If join was compiled on a
+ POSIX 1003.1-2001 system, you may enable the old behavior
+ by setting _POSIX2_VERSION=199209 in your environment.
+ [This change was reverted in coreutils 5.3.1.]
+
+
+* Major changes in release 5.1.0 (2003-12-21):
+
+** New features
+
+ chgrp, chmod, and chown can now process (with -R) hierarchies of virtually
+ unlimited depth. Before, they would fail to operate on any file they
+ encountered with a relative name of length PATH_MAX (often 4096) or longer.
+
+ chgrp, chmod, chown, and rm accept the new options:
+ --preserve-root, --no-preserve-root (default)
+
+ chgrp and chown now accept POSIX-mandated -L, -H, and -P options
+
+ du can now process hierarchies of virtually unlimited depth.
+ Before, du was limited by the user's stack size and it would get a
+ stack overflow error (often a segmentation fault) when applied to
+ a hierarchy of depth around 30,000 or larger.
+
+ du works even when run from an inaccessible directory
+
+ du -D now dereferences all symlinks specified on the command line,
+ not just the ones that reference directories
+
+ du now accepts -P (--no-dereference), for compatibility with du
+ of NetBSD and for consistency with e.g., chown and chgrp
+
+ du's -H option will soon have the meaning required by POSIX
+ (--dereference-args, aka -D) rather then the current meaning of --si.
+ Now, using -H elicits a warning to that effect.
+
+ When given -l and similar options, ls now adjusts the output column
+ widths to fit the data, so that output lines are shorter and have
+ columns that line up better. This may adversely affect shell
+ scripts that expect fixed-width columns, but such shell scripts were
+ not portable anyway, even with old GNU ls where the columns became
+ ragged when a datum was too wide.
+
+ du accepts a new option, -0/--null, to make it produce NUL-terminated
+ output lines
+
+** Bug fixes
+
+ printf, seq, tail, and sleep now parse floating-point operands
+ and options in the C locale. POSIX requires this for printf.
+
+ od -c -w9999999 no longer segfaults
+
+ csplit no longer reads from freed memory (dumping core on some systems)
+
+ csplit would mistakenly exhaust virtual memory in some cases
+
+ ls --width=N (for very large N) is no longer subject to an address
+ arithmetic bug that could result in bounds violations.
+
+ ls --width=N (with -x or -C) no longer allocates more space
+ (potentially much more) than necessary for a given directory.
+
+ dd `unblock' and `sync' may now be combined (e.g., dd conv=unblock,sync)
+
+* Major changes in release 5.0.91 (2003-09-08):
+
+** New features
+
+ date accepts a new option --rfc-2822, an alias for --rfc-822.
+
+ split accepts a new option -d or --numeric-suffixes.
+
+ cp, install, mv, and touch now preserve microsecond resolution on
+ file timestamps, on platforms that have the 'utimes' system call.
+ Unfortunately there is no system call yet to preserve file
+ timestamps to their full nanosecond resolution; microsecond
+ resolution is the best we can do right now.
+
+ sort now supports the zero byte (NUL) as a field separator; use -t '\0'.
+ The -t '' option, which formerly had no effect, is now an error.
+
+ sort option order no longer matters for the options -S, -d, -i, -o, and -t.
+ Stronger options override weaker, and incompatible options are diagnosed.
+
+ `sha1sum --check' now accepts the BSD format for SHA1 message digests
+ in addition to the BSD format for MD5 ones.
+
+ who -l now means `who --login', not `who --lookup', per POSIX.
+ who's -l option has been eliciting an unconditional warning about
+ this impending change since sh-utils-2.0.12 (April 2002).
+
+** Bug fixes
+
+ Mistakenly renaming a file onto itself, e.g., via `mv B b' when `B' is
+ the same directory entry as `b' no longer destroys the directory entry
+ referenced by both `b' and `B'. Note that this would happen only on
+ file systems like VFAT where two different names may refer to the same
+ directory entry, usually due to lower->upper case mapping of file names.
+ Now, the above can happen only on file systems that perform name mapping and
+ that support hard links (stat.st_nlink > 1). This mitigates the problem
+ in two ways: few file systems appear to be affected (hpfs and ntfs are),
+ when the bug is triggered, mv no longer removes the last hard link to a file.
+ *** ATTENTION ***: if you know how to distinguish the following two cases
+ without writing to the file system in question, please let me know:
+ 1) B and b refer to the same directory entry on a file system like NTFS
+ (B may well have a link count larger than 1)
+ 2) B and b are hard links to the same file
+
+ stat no longer overruns a buffer for format strings ending in `%'
+
+ fold -s -wN would infloop for N < 8 with TABs in the input.
+ E.g., this would not terminate: printf 'a\t' | fold -w2 -s
+
+ `split -a0', although of questionable utility, is accepted once again.
+
+ `df DIR' used to hang under some conditions on OSF/1 5.1. Now it doesn't.
+
+ seq's --width (-w) option now works properly even when the endpoint
+ requiring the larger width is negative and smaller than the other endpoint.
+
+ seq's default step is 1, even if LAST < FIRST.
+
+ paste no longer mistakenly outputs 0xFF bytes for a nonempty input file
+ without a trailing newline.
+
+ `tail -n0 -f FILE' and `tail -c0 -f FILE' no longer perform what amounted
+ to a busy wait, rather than sleeping between iterations.
+
+ tail's long-undocumented --allow-missing option now elicits a warning
+
+
+* Major changes in release 5.0.90 (2003-07-29):
+
+** New features
+
+ sort is now up to 30% more CPU-efficient in some cases
+
+ `test' is now more compatible with Bash and POSIX:
+
+ `test -t', `test --help', and `test --version' now silently exit
+ with status 0. To test whether standard output is a terminal, use
+ `test -t 1'. To get help and version info for `test', use
+ `[ --help' and `[ --version'.
+
+ `test' now exits with status 2 (not 1) if there is an error.
+
+ wc count field widths now are heuristically adjusted depending on the input
+ size, if known. If only one count is printed, it is guaranteed to
+ be printed without leading spaces.
+
+ Previously, wc did not align the count fields if POSIXLY_CORRECT was set,
+ but POSIX did not actually require this undesirable behavior, so it
+ has been removed.
+
+** Bug fixes
+
+ kill no longer tries to operate on argv[0] (introduced in 5.0.1)
+ Why wasn't this noticed? Although many tests use kill, none of
+ them made an effort to avoid using the shell's built-in kill.
+
+ `[' invoked with no arguments no longer evokes a segfault
+
+ rm without --recursive (aka -r or -R) no longer prompts regarding
+ unwritable directories, as required by POSIX.
+
+ uniq -c now uses a SPACE, not a TAB between the count and the
+ corresponding line, as required by POSIX.
+
+ expr now exits with status 2 if the expression is syntactically valid,
+ and with status 3 if an error occurred. POSIX requires this.
+
+ expr now reports trouble if string comparison fails due to a collation error.
+
+ split now generates suffixes properly on EBCDIC hosts.
+
+ split -a0 now works, as POSIX requires.
+
+ `sort --version' and `sort --help' fail, as they should
+ when their output is redirected to /dev/full.
+
+ `su --version > /dev/full' now fails, as it should.
+
+** Fewer arbitrary limitations
+
+ cut requires 97% less memory when very large field numbers or
+ byte offsets are specified.
+
+
+* Major changes in release 5.0.1 (2003-07-15):
+
+** New programs
+- new program: `[' (much like `test')
+
+** New features
+- head now accepts --lines=-N (--bytes=-N) to print all but the
+ N lines (bytes) at the end of the file
+- md5sum --check now accepts the output of the BSD md5sum program, e.g.,
+ MD5 (f) = d41d8cd98f00b204e9800998ecf8427e
+- date -d DATE can now parse a DATE string like May-23-2003
+- chown: `.' is no longer recognized as a separator in the OWNER:GROUP
+ specifier on POSIX 1003.1-2001 systems. If chown *was not* compiled
+ on such a system, then it still accepts `.', by default. If chown
+ was compiled on a POSIX 1003.1-2001 system, then you may enable the
+ old behavior by setting _POSIX2_VERSION=199209 in your environment.
+- chown no longer tries to preserve set-user-ID and set-group-ID bits;
+ on some systems, the chown syscall resets those bits, and previous
+ versions of the chown command would call chmod to restore the original,
+ pre-chown(2) settings, but that behavior is problematic.
+ 1) There was a window whereby a malicious user, M, could subvert a
+ chown command run by some other user and operating on files in a
+ directory where M has write access.
+ 2) Before (and even now, on systems with chown(2) that doesn't reset
+ those bits), an unwary admin. could use chown unwittingly to create e.g.,
+ a set-user-ID root copy of /bin/sh.
+
+** Bug fixes
+- chown --dereference no longer leaks a file descriptor per symlink processed
+- `du /' once again prints the `/' on the last line
+- split's --verbose option works once again [broken in 4.5.10 and 5.0]
+- tail -f is no longer subject to a race condition that could make it
+ delay displaying the last part of a file that had stopped growing. That
+ bug could also make tail -f give an unwarranted `file truncated' warning.
+- du no longer runs out of file descriptors unnecessarily
+- df and `readlink --canonicalize' no longer corrupt the heap on
+ non-glibc, non-solaris systems
+- `env -u UNSET_VARIABLE' no longer dumps core on non-glibc systems
+- readlink's --canonicalize option now works on systems like Solaris that
+ lack the canonicalize_file_name function but do have resolvepath.
+- mv now removes `a' in this example on all systems: touch a; ln a b; mv a b
+ This behavior is contrary to POSIX (which requires that the mv command do
+ nothing and exit successfully), but I suspect POSIX will change.
+- date's %r format directive now honors locale settings
+- date's `-' (no-pad) format flag now affects the space-padded-by-default
+ conversion specifiers, %e, %k, %l
+- fmt now diagnoses invalid obsolescent width specifications like `-72x'
+- fmt now exits nonzero when unable to open an input file
+- tsort now fails when given an odd number of input tokens,
+ as required by POSIX. Before, it would act as if the final token
+ appeared one additional time.
+
+** Fewer arbitrary limitations
+- tail's byte and line counts are no longer limited to OFF_T_MAX.
+ Now the limit is UINTMAX_MAX (usually 2^64).
+- split can now handle --bytes=N and --lines=N with N=2^31 or more.
+
+** Portability
+- `kill -t' now prints signal descriptions (rather than `?') on systems
+ like Tru64 with __sys_siglist but no strsignal function.
+- stat.c now compiles on Ultrix systems
+- sleep now works on AIX systems that lack support for clock_gettime
+- rm now works around Darwin6.5's broken readdir function
+ Before `rm -rf DIR' would fail to remove all files in DIR
+ if there were more than 338.
+
+* Major changes in release 5.0 (2003-04-02):
+- false --help now exits nonzero
+
+[4.5.12]
+* printf no longer treats \x specially when POSIXLY_CORRECT is set
+* printf avoids buffer overrun with format ending in a backslash and
+* printf avoids buffer overrun with incomplete conversion specifier
+* printf accepts multiple flags in a single conversion specifier
+
+[4.5.11]
+* seq no longer requires that a field width be specified
+* seq no longer fails when given a field width of `0'
+* seq now accepts ` ' and `'' as valid format flag characters
+* df now shows a HOSTNAME: prefix for each remote-mounted file system on AIX 5.1
+* portability tweaks for HP-UX, AIX 5.1, DJGPP
+
+[4.5.10]
+* printf no longer segfaults for a negative field width or precision
+* shred now always enables --exact for non-regular files
+* du no longer lists hard-linked files more than once
+* du no longer dumps core on some systems due to `infinite' recursion
+ via nftw's use of the buggy replacement function in getcwd.c
+* portability patches for a few vendor compilers and 64-bit systems
+* du -S *really* now works like it did before the change in 4.5.5
+
+[4.5.9]
+* du no longer truncates file sizes or sums to fit in 32-bit size_t
+* work around Linux kernel bug in getcwd (fixed in 2.4.21-pre4), so that pwd
+ now fails if the name of the working directory is so long that getcwd
+ truncates it. Before it would print the truncated name and exit successfully.
+* `df /some/mount-point' no longer hangs on a GNU libc system when another
+ hard-mounted NFS file system (preceding /some/mount-point in /proc/mounts)
+ is inaccessible.
+* rm -rf now gives an accurate diagnostic when failing to remove a file
+ under certain unusual conditions
+* mv and `cp --preserve=links' now preserve multiple hard links even under
+ certain unusual conditions where they used to fail
+
+[4.5.8]
+* du -S once again works like it did before the change in 4.5.5
+* stat accepts a new file format, %B, for the size of each block reported by %b
+* du accepts new option: --apparent-size
+* du --bytes (-b) works the same way it did in fileutils-3.16 and before
+* du reports proper sizes for directories (not zero) (broken in 4.5.6 or 4.5.7)
+* df now always displays under `Filesystem', the device file name
+ corresponding to the listed mount point. Before, for a block- or character-
+ special file command line argument, df would display that argument. E.g.,
+ `df /dev/hda' would list `/dev/hda' as the `Filesystem', rather than say
+ /dev/hda3 (the device on which `/' is mounted), as it does now.
+* test now works properly when invoked from a set user ID or set group ID
+ context and when testing access to files subject to alternate protection
+ mechanisms. For example, without this change, a set-UID program that invoked
+ `test -w F' (to see if F is writable) could mistakenly report that it *was*
+ writable, even though F was on a read-only file system, or F had an ACL
+ prohibiting write access, or F was marked as immutable.
+
+[4.5.7]
+* du would fail with more than one DIR argument when any but the last did not
+ contain a slash (due to a bug in ftw.c)
+
+[4.5.6]
+* du no longer segfaults on Solaris systems (fixed heap-corrupting bug in ftw.c)
+* du --exclude=FILE works once again (this was broken by the rewrite for 4.5.5)
+* du no longer gets a failed assertion for certain hierarchy lay-outs
+ involving hard-linked directories
+* `who -r' no longer segfaults when using non-C-locale messages
+* df now displays a mount point (usually `/') for non-mounted
+ character-special and block files
+
+[4.5.5]
+* ls --dired produces correct byte offset for file names containing
+ nonprintable characters in a multibyte locale
+* du has been rewritten to use a variant of GNU libc's ftw.c
+* du now counts the space associated with a directory's directory entry,
+ even if it cannot list or chdir into that subdirectory.
+* du -S now includes the st_size of each entry corresponding to a subdirectory
+* rm on FreeBSD can once again remove directories from NFS-mounted file systems
+* ls has a new option --dereference-command-line-symlink-to-dir, which
+ corresponds to the new default behavior when none of -d, -l -F, -H, -L
+ has been specified.
+* ls dangling-symlink now prints `dangling-symlink'.
+ Before, it would fail with `no such file or directory'.
+* ls -s symlink-to-non-dir and ls -i symlink-to-non-dir now print
+ attributes of `symlink', rather than attributes of their referents.
+* Fix a bug introduced in 4.5.4 that made it so that ls --color would no
+ longer highlight the names of files with the execute bit set when not
+ specified on the command line.
+* shred's --zero (-z) option no longer gobbles up any following argument.
+ Before, `shred --zero file' would produce `shred: missing file argument',
+ and worse, `shred --zero f1 f2 ...' would appear to work, but would leave
+ the first file untouched.
+* readlink: new program
+* cut: new feature: when used to select ranges of byte offsets (as opposed
+ to ranges of fields) and when --output-delimiter=STRING is specified,
+ output STRING between ranges of selected bytes.
+* rm -r can no longer be tricked into mistakenly reporting a cycle.
+* when rm detects a directory cycle, it no longer aborts the entire command,
+ but rather merely stops processing the affected command line argument.
+
+[4.5.4]
+* cp no longer fails to parse options like this: --preserve=mode,ownership
+* `ls --color -F symlink-to-dir' works properly
+* ls is much more efficient on directories with valid dirent.d_type.
+* stty supports all baud rates defined in linux-2.4.19.
+* `du symlink-to-dir/' would improperly remove the trailing slash
+* `du ""' would evoke a bounds violation.
+* In the unlikely event that running `du /' resulted in `stat ("/", ...)'
+ failing, du would give a diagnostic about `' (empty string) rather than `/'.
+* printf: a hexadecimal escape sequence has at most two hex. digits, not three.
+* The following features have been added to the --block-size option
+ and similar environment variables of df, du, and ls.
+ - A leading "'" generates numbers with thousands separators.
+ For example:
+ $ ls -l --block-size="'1" file
+ -rw-rw-r-- 1 eggert src 47,483,707 Sep 24 23:40 file
+ - A size suffix without a leading integer generates a suffix in the output.
+ For example:
+ $ ls -l --block-size="K"
+ -rw-rw-r-- 1 eggert src 46371K Sep 24 23:40 file
+* ls's --block-size option now affects file sizes in all cases, not
+ just for --block-size=human-readable and --block-size=si. Fractional
+ sizes are now always rounded up, for consistency with df and du.
+* df now displays the block size using powers of 1000 if the requested
+ block size seems to be a multiple of a power of 1000.
+* nl no longer gets a segfault when run like this `yes|nl -s%n'
+
+[4.5.3]
+* du --dereference-args (-D) no longer fails in certain cases
+* `ln --target-dir=DIR' no longer fails when given a single argument
+
+[4.5.2]
+* `rm -i dir' (without --recursive (-r)) no longer recurses into dir
+* `tail -c N FILE' now works with files of size >= 4GB
+* `mkdir -p' can now create very deep (e.g. 40,000-component) directories
+* rmdir -p dir-with-trailing-slash/ no longer fails
+* printf now honors the `--' command line delimiter
+* od's 8-byte formats x8, o8, and u8 now work
+* tail now accepts fractional seconds for its --sleep-interval=S (-s) option
+
+[4.5.1]
+* du and ls now report sizes of symbolic links (before they'd always report 0)
+* uniq now obeys the LC_COLLATE locale, as per POSIX 1003.1-2001 TC1.
+
+========================================================================
+Here are the NEWS entries made from fileutils-4.1 until the
+point at which the packages merged to form the coreutils:
+
+[4.1.11]
+* `rm symlink-to-unwritable' doesn't prompt [introduced in 4.1.10]
+[4.1.10]
+* rm once again gives a reasonable diagnostic when failing to remove a file
+ owned by someone else in a sticky directory [introduced in 4.1.9]
+* df now rounds all quantities up, as per POSIX.
+* New ls time style: long-iso, which generates YYYY-MM-DD HH:MM.
+* Any time style can be preceded by "posix-"; this causes "ls" to
+ use traditional timestamp format when in the POSIX locale.
+* The default time style is now posix-long-iso instead of posix-iso.
+ Set TIME_STYLE="posix-iso" to revert to the behavior of 4.1.1 thru 4.1.9.
+* `rm dangling-symlink' doesn't prompt [introduced in 4.1.9]
+* stat: remove support for --secure/-s option and related %S and %C format specs
+* stat: rename --link/-l to --dereference/-L.
+ The old options will continue to work for a while.
+[4.1.9]
+* rm can now remove very deep hierarchies, in spite of any limit on stack size
+* new programs: link, unlink, and stat
+* New ls option: --author (for the Hurd).
+* `touch -c no-such-file' no longer fails, per POSIX
+[4.1.8]
+* mv no longer mistakenly creates links to preexisting destination files
+ that aren't moved
+[4.1.7]
+* rm: close a hole that would allow a running rm process to be subverted
+[4.1.6]
+* New cp option: --copy-contents.
+* cp -r is now equivalent to cp -R. Use cp -R -L --copy-contents to get the
+ traditional (and rarely desirable) cp -r behavior.
+* ls now accepts --time-style=+FORMAT, where +FORMAT works like date's format
+* The obsolete usage `touch [-acm] MMDDhhmm[YY] FILE...' is no longer
+ supported on systems conforming to POSIX 1003.1-2001. Use touch -t instead.
+* cp and inter-partition mv no longer give a misleading diagnostic in some
+ unusual cases
+[4.1.5]
+* cp -r no longer preserves symlinks
+* The block size notation is now compatible with SI and with IEC 60027-2.
+ For example, --block-size=1MB now means --block-size=1000000,
+ whereas --block-size=1MiB now means --block-size=1048576.
+ A missing `B' (e.g. `1M') has the same meaning as before.
+ A trailing `B' now means decimal, not binary; this is a silent change.
+ The nonstandard `D' suffix (e.g. `1MD') is now obsolescent.
+* -H or --si now outputs the trailing 'B', for consistency with the above.
+* Programs now output trailing 'K' (not 'k') to mean 1024, as per IEC 60027-2.
+* New df, du short option -B is short for --block-size.
+* You can omit an integer `1' before a block size suffix,
+ e.g. `df -BG' is equivalent to `df -B 1G' and to `df --block-size=1G'.
+* The following options are now obsolescent, as their names are
+ incompatible with IEC 60027-2:
+ df, du: -m or --megabytes (use -BM or --block-size=1M)
+ df, du, ls: --kilobytes (use --block-size=1K)
+[4.1.4]
+* df --local no longer lists smbfs file systems whose name starts with //
+* dd now detects the Linux/tape/lseek bug at run time and warns about it.
+[4.1.3]
+* ls -R once again outputs a blank line between per-directory groups of files.
+ This was broken by the cycle-detection change in 4.1.1.
+* dd once again uses `lseek' on character devices like /dev/mem and /dev/kmem.
+ On systems with the linux kernel (at least up to 2.4.16), dd must still
+ resort to emulating `skip=N' behavior using reads on tape devices, because
+ lseek has no effect, yet appears to succeed. This may be a kernel bug.
+[4.1.2]
+* cp no longer fails when two or more source files are the same;
+ now it just gives a warning and doesn't copy the file the second time.
+ E.g., cp a a d/ produces this:
+ cp: warning: source file `a' specified more than once
+* chmod would set the wrong bit when given symbolic mode strings like
+ these: g=o, o=g, o=u. E.g., `chmod a=,o=w,ug=o f' would give a mode
+ of --w-r---w- rather than --w--w--w-.
+[4.1.1]
+* mv (likewise for cp), now fails rather than silently clobbering one of
+ the source files in the following example:
+ rm -rf a b c; mkdir a b c; touch a/f b/f; mv a/f b/f c
+* ls -R detects directory cycles, per POSIX. It warns and doesn't infloop.
+* cp's -P option now means the same as --no-dereference, per POSIX.
+ Use --parents to get the old meaning.
+* When copying with the -H and -L options, cp can preserve logical
+ links between source files with --preserve=links
+* cp accepts new options:
+ --preserve[={mode,ownership,timestamps,links,all}]
+ --no-preserve={mode,ownership,timestamps,links,all}
+* cp's -p and --preserve options remain unchanged and are equivalent
+ to `--preserve=mode,ownership,timestamps'
+* mv and cp accept a new option: --reply={yes,no,query}; provides a consistent
+ mechanism to control whether one is prompted about certain existing
+ destination files. Note that cp's and mv's -f options don't have the
+ same meaning: cp's -f option no longer merely turns off `-i'.
+* remove portability limitations (e.g., PATH_MAX on the Hurd, fixes for
+ 64-bit systems)
+* mv now prompts before overwriting an existing, unwritable destination file
+ when stdin is a tty, unless --force (-f) is specified, as per POSIX.
+* mv: fix the bug whereby `mv -uf source dest' would delete source,
+ even though it's older than dest.
+* chown's --from=CURRENT_OWNER:CURRENT_GROUP option now works
+* cp now ensures that the set-user-ID and set-group-ID bits are cleared for
+ the destination file when when copying and not preserving permissions.
+* `ln -f --backup k k' gives a clearer diagnostic
+* ls no longer truncates user names or group names that are longer
+ than 8 characters.
+* ls's new --dereference-command-line option causes it to dereference
+ symbolic links on the command-line only. It is the default unless
+ one of the -d, -F, or -l options are given.
+* ls -H now means the same as ls --dereference-command-line, as per POSIX.
+* ls -g now acts like ls -l, except it does not display owner, as per POSIX.
+* ls -n now implies -l, as per POSIX.
+* ls can now display dates and times in one of four time styles:
+
+ - The `full-iso' time style gives full ISO-style time stamps like
+ `2001-05-14 23:45:56.477817180 -0700'.
+ - The 'iso' time style gives ISO-style time stamps like '2001-05-14 '
+ and '05-14 23:45'.
+ - The 'locale' time style gives locale-dependent time stamps like
+ 'touko 14 2001' and 'touko 14 23:45' (in a Finnish locale).
+ - The 'posix-iso' time style gives traditional POSIX-locale
+ time stamps like 'May 14 2001' and 'May 14 23:45' unless the user
+ specifies a non-POSIX locale, in which case it uses ISO-style dates.
+ This is the default.
+
+ You can specify a time style with an option like --time-style='iso'
+ or with an environment variable like TIME_STYLE='iso'. GNU Emacs 21
+ and later can parse ISO dates, but older Emacs versions cannot, so
+ if you are using an older version of Emacs outside the default POSIX
+ locale, you may need to set TIME_STYLE="locale".
+
+* --full-time is now an alias for "-l --time-style=full-iso".
+
+
+========================================================================
+Here are the NEWS entries made from sh-utils-2.0 until the
+point at which the packages merged to form the coreutils:
+
+ [2.0.15]
+* date no longer accepts e.g., September 31 in the MMDDhhmm syntax
+* fix a bug in this package's .m4 files and in configure.ac
+ [2.0.14]
+* nohup's behavior is changed as follows, to conform to POSIX 1003.1-2001:
+ - nohup no longer adjusts scheduling priority; use "nice" for that.
+ - nohup now redirects stderr to stdout, if stderr is not a terminal.
+ - nohup exit status is now 126 if command was found but not invoked,
+ 127 if nohup failed or if command was not found.
+ [2.0.13]
+* uname and uptime work better on *BSD systems
+* pathchk now exits nonzero for a path with a directory component
+ that specifies a non-directory
+ [2.0.12]
+* kill: new program
+* who accepts new options: --all (-a), --boot (-b), --dead (-d), --login,
+ --process (-p), --runlevel (-r), --short (-s), --time (-t), --users (-u).
+ The -u option now produces POSIX-specified results and is the same as
+ the long option `--users'. --idle is no longer the same as -u.
+* The following changes apply on systems conforming to POSIX 1003.1-2001:
+ - `date -I' is no longer supported. Instead, use `date --iso-8601'.
+ - `nice -NUM' is no longer supported. Instead, use `nice -n NUM'.
+ [This change was reverted in coreutils 5.3.1.]
+* New 'uname' options -i or --hardware-platform, and -o or --operating-system.
+ 'uname -a' now outputs -i and -o information at the end.
+ New uname option --kernel-version is an alias for -v.
+ Uname option --release has been renamed to --kernel-release,
+ and --sysname has been renamed to --kernel-name;
+ the old options will work for a while, but are no longer documented.
+* 'expr' now uses the LC_COLLATE locale for string comparison, as per POSIX.
+* 'expr' now requires '+' rather than 'quote' to quote tokens;
+ this removes an incompatibility with POSIX.
+* date -d 'last friday' would print a date/time that was one hour off
+ (e.g., 23:00 on *thursday* rather than 00:00 of the preceding friday)
+ when run such that the current time and the target date/time fall on
+ opposite sides of a daylight savings time transition.
+ This problem arose only with relative date strings like `last monday'.
+ It was not a problem with strings that include absolute dates.
+* factor is twice as fast, for large numbers
+ [2.0.11]
+* setting the date now works properly, even when using -u
+* `date -f - < /dev/null' no longer dumps core
+* some DOS/Windows portability changes
+ [2.0j]
+* `date -d DATE' now parses certain relative DATEs correctly
+ [2.0i]
+* fixed a bug introduced in 2.0h that made many programs fail with a
+ `write error' when invoked with the --version option
+ [2.0h]
+* all programs fail when printing --help or --version output to a full device
+* printf exits nonzero upon write failure
+* yes now detects and terminates upon write failure
+* date --rfc-822 now always emits day and month names from the `C' locale
+* portability tweaks for Solaris8, Ultrix, and DOS
+ [2.0g]
+* date now handles two-digit years with leading zeros correctly.
+* printf interprets unicode, \uNNNN \UNNNNNNNN, on systems with the
+ required support; from Bruno Haible.
+* stty's rprnt attribute now works on HPUX 10.20
+* seq's --equal-width option works more portably
+ [2.0f]
+* fix build problems with ut_name vs. ut_user
+ [2.0e]
+* stty: fix long-standing bug that caused test failures on at least HPUX
+ systems when COLUMNS was set to zero
+* still more portability fixes
+* unified lib/: now that directory and most of the configuration framework
+ is common between fileutils, textutils, and sh-utils
+ [2.0d]
+* fix portability problem with sleep vs lib/strtod.c's requirement for -lm
+ [2.0c]
+* fix portability problems with nanosleep.c and with the new code in sleep.c
+ [2.0b]
+* Regenerate lib/Makefile.in so that nanosleep.c is distributed.
+ [2.0a]
+* sleep accepts floating point arguments on command line
+* sleep's clock continues counting down when sleep is suspended
+* when a suspended sleep process is resumed, it continues sleeping if
+ there is any time remaining
+* who once again prints whatever host information it has, even without --lookup
+
+========================================================================
+For older NEWS entries for the fileutils, textutils, and sh-utils
+packages, see ./old/*/NEWS.
+
+ This package began as the union of the following:
+ textutils-2.1, fileutils-4.1.11, sh-utils-2.0.15.
+
+========================================================================
+
+Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts. A copy of the license is included in the ``GNU Free
+Documentation License'' file as part of this distribution.
diff --git a/README b/README
new file mode 100644
index 0000000..236b2d5
--- /dev/null
+++ b/README
@@ -0,0 +1,221 @@
+These are the GNU core utilities. This package is the union of
+the GNU fileutils, sh-utils, and textutils packages.
+
+Most of these programs have significant advantages over their Unix
+counterparts, such as greater speed, additional options, and fewer
+arbitrary limits.
+
+The programs that can be built with this package are:
+
+ [ base64 basename cat chgrp chmod chown chroot cksum comm cp csplit cut date
+ dd df dir dircolors dirname du echo env expand expr factor false fmt fold
+ ginstall groups head hostid hostname id join kill link ln logname ls
+ md5sum mkdir mkfifo mknod mv nice nl nohup od paste pathchk pinky pr
+ printenv printf ptx pwd readlink rm rmdir seq sha1sum sha224sum sha256sum
+ sha384sum sha512sum shred shuf sleep sort split stat stty su sum sync tac
+ tail tee test touch tr true tsort tty uname unexpand uniq unlink uptime
+ users vdir wc who whoami yes
+
+See the file NEWS for a list of major changes in the current release.
+
+See the file INSTALL for compilation and installation instructions.
+
+These programs are intended to conform to POSIX (with BSD and other
+extensions), like the rest of the GNU system. By default they conform
+to older POSIX (1003.2-1992), and therefore support obsolete usages
+like "head -10" and "chown owner.group file". This default is
+overridden at build-time by the value of <unistd.h>'s _POSIX2_VERSION
+macro, and this in turn can be overridden at runtime as described in
+the documentation under "Standards conformance".
+
+The ls, dir, and vdir commands are all separate executables instead of
+one program that checks argv[0] because people often rename these
+programs to things like gls, gnuls, l, etc. Renaming a program
+file shouldn't affect how it operates, so that people can get the
+behavior they want with whatever name they want.
+
+Special thanks to Paul Eggert, Brian Matthews, Bruce Evans, Karl Berry,
+Kaveh Ghazi, and François Pinard for help with debugging and porting
+these programs. Many thanks to all of the people who have taken the
+time to submit problem reports and fixes. All contributed changes are
+attributed in the ChangeLog files.
+
+And thanks to the following people who have provided accounts for
+portability testing on many different types of systems: Bob Proulx,
+Christian Robert, François Pinard, Greg McGary, Harlan Stenn,
+Joel N. Weber, Mark D. Roth, Matt Schalit, Nelson H. F. Beebe,
+Réjean Payette, Sam Tardieu.
+
+Thanks to Michael Stone for inflicting test releases of this package
+on Debian's unstable distribution, and to all the kind folks who used
+that distribution and found and reported bugs.
+
+Note that each man page is now automatically generated from a template
+and from the corresponding --help usage message. Patches to the template
+files (man/*.x) are welcome. However, the authoritative documentation
+is in texinfo form in the doc directory.
+
+If you run the tests on a SunOS4.1.4 system, expect the ctime-part of
+the ls `time-1' test to fail. I believe that is due to a bug in the
+way Sun implemented link(2) and chmod(2).
+
+
+***********************
+Pre-C99 build failure
+-----------------------
+
+There is a new, implicit build requirement:
+To build the coreutils from source, you should have a C99-conforming
+compiler, due to the use of declarations after non-declaration statements
+in several files in src/. There is code in configure to find and, if
+possible, enable an appropriate compiler. However, if configure doesn't
+find a C99 compiler, it continues nonetheless, and your build will fail.
+If that happens, simply apply the included patch using the following
+command, and then run make again:
+
+ cd src && patch < c99-to-c89.diff
+
+
+***********************
+HPUX 11.x build failure
+-----------------------
+
+A known problem exists when compiling on HPUX on both hppa and ia64
+in 64-bit mode (i.e. +DD64) on HP-UX 11.0, 11.11, and 11.23. This
+is not due to a bug in the package but instead due to a bug in the
+system header file which breaks things in 64-bit mode. The default
+compilation mode is 32-bit and the software compiles fine using the
+default mode. To build this software in 64-bit mode you will need
+to fix the system /usr/include/inttypes.h header file. After
+correcting that file the software also compiles fine in 64-bit mode.
+Here is one possible patch to correct the problem:
+
+--- /usr/include/inttypes.h.orig Thu May 30 01:00:00 1996
++++ /usr/include/inttypes.h Sun Mar 23 00:20:36 2003
+@@ -489 +489 @@
+-#ifndef __STDC_32_MODE__
++#ifndef __LP64__
+
+
+************************
+OSF/1 4.0d build failure
+------------------------
+
+If you use /usr/bin/make on an OSF/1 4.0d system, it will fail due
+to the presence of the "[" target. That version of make appears to
+treat "[" as some syntax relating to locks. To work around that,
+the best solution is to use GNU make. Otherwise, simply remove
+all mention of "[$(EXEEXT)" from src/Makefile.
+
+
+
+**********************
+Running tests as root:
+----------------------
+
+If you run the tests as root, note that a few of them create files
+and/or run programs as a non-root user, `nobody' by default.
+If you want to use some other non-root username, specify it via
+the NON_ROOT_USERNAME environment variable. Depending on the
+permissions with which the working directories have been created,
+using `nobody' may fail, because that user won't have the required
+read and write access to the build and test directories.
+I find that it is best to unpack and build as a non-privileged
+user, and then to run the following command as that user in order
+to run the privilege-requiring tests:
+
+ sudo env NON_ROOT_USERNAME=$USER make -k check
+
+If you can run the tests as root, please do so and report any
+problems. We get much less test coverage in that mode, and it's
+arguably more important that these tools work well when run by
+root than when run by less privileged users.
+
+
+***************
+Reporting bugs:
+---------------
+
+IMPORTANT: if you take the time to report a test failure,
+please be sure to include the output of running `make check'
+in verbose mode for each failing test. For example,
+if the test that fails is tests/mv/hard-link-1, then you
+would run this command:
+
+ env VERBOSE=yes make check -C tests/mv TESTS=hard-link-1 >> log 2>&1
+
+For some tests, you can get even more detail by including
+DEBUG=yes in the environment:
+
+ env DEBUG=yes VERBOSE=yes make check -C tests/mv TESTS=hard-link-1 >> log 2>&1
+
+and then include the contents of the file `log' in your bug report.
+
+***************************************
+
+There are many tests, but nowhere near as many as we need.
+Additions and corrections are very welcome.
+
+If you see a problem that you've already reported, feel free to re-report
+it -- it won't bother me to get a reminder. Besides, the more messages I
+get regarding a particular problem the sooner it'll be fixed -- usually.
+If you sent a complete patch and, after a couple weeks you haven't
+received any acknowledgement, please ping us. A complete patch includes
+a well-written ChangeLog entry, unified (diff -u format) diffs relative
+to the most recent test release (or, better, relative to the latest
+sources in the CVS repository), an explanation for why the patch is
+necessary or useful, and if at all possible, enough information to
+reproduce whatever problem prompted it. Plus, you'll earn lots of
+karma if you include a test case to exercise any bug(s) you fix.
+Instructions for checking out the latest source via CVS are here:
+
+ http://savannah.gnu.org/cvs/?group=coreutils
+
+
+If your patch adds a new feature, please try to get some sort of consensus
+that it is a worthwhile change. One way to do that is to send mail to
+bug-coreutils@gnu.org including as much description and justification
+as you can. Based on the feedback that generates, you may be able to
+convince us that it's worth adding.
+
+
+WARNING: Now that we use the ./bootstrap script, you should not run
+autoreconf manually. Doing that will overwrite essential source files
+with older versions, which may make the package unbuildable or introduce
+subtle bugs.
+
+
+WARNING: If you modify files like configure.in, m4/*.m4, aclocal.m4,
+or any Makefile.am, then don't be surprised if what gets regenerated no
+longer works. To make things work, you'll have to be using appropriate
+versions of automake and autoconf. As for what versions are `appropriate',
+use the versions of
+
+ * autoconf specified via AC_PREREQ in m4/jm-macros.m4
+ * automake specified via AM_INIT_AUTOMAKE in configure.ac
+
+Usually it's fine to use versions that are newer than those specified.
+
+All of these programs except `test' recognize the `--version' option.
+When reporting bugs, please include in the subject line both the package
+name/version and the name of the program for which you found a problem.
+
+For general documentation on the coding and usage standards
+this distribution follows, see the GNU Coding Standards,
+http://www.gnu.org/prep/standards_toc.html.
+
+Mail suggestions and bug reports for these programs to
+the address on the last line of --help output.
+
+
+========================================================================
+
+Copyright (C) 1998, 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts. A copy of the license is included in the ``GNU Free
+Documentation License'' file as part of this distribution.
diff --git a/THANKS b/THANKS
new file mode 100644
index 0000000..ad05b13
--- /dev/null
+++ b/THANKS
@@ -0,0 +1,531 @@
+These people have contributed to the GNU coreutils (formerly, the fileutils,
+textutils, and/or sh-utils packages). Some have reported problems, others
+have contributed improvements to the documentation, actual code, and even
+complete programs. Those contributions are described in the ChangeLog
+files. If your name has been left out, if you'd rather not be listed,
+or if you'd prefer a different address be used, please send a note to
+the bug-report mailing list (as seen on last line of e.g., cp --help).
+
+??? kytek@cybercomm.net
+A Costa agcosta@gis.net
+Aaron Hawley ashawley@uvm.edu
+Achim Blumensath blume@corona.oche.de
+Adam Klein aklein@debian.org
+Adrian Bunk bunk@stusta.de
+Akim Demaille demaille@inf.enst.fr
+Alain Magloire alain@qnx.com
+Alan Iwi iwi@atm.ox.ac.uk
+Albert Chin-A-Young china@thewrittenword.com
+Albert Hopkins ahopkins@dynacare.com
+Alberto Accomazzi alberto@cfa0.harvard.edu
+aldomel aldomel@ix.netcom.com
+Alen Muzinic zveki@fly.cc.fer.hr
+Alexandre Duret-Lutz duret_g@epita.fr
+Alexey Solovyov alekso@math.uu.se
+Alexey Vyskubov alexey@pippuri.mawhrin.net
+Alfred M. Szmidt ams@kemisten.nu
+Andi Kleen freitag@alancoxonachip.com
+Andre Novaes Cunha Andre.Cunha@br.global-one.net
+Andreas Gruenbacher ag@bestbits.at
+Andreas Jaeger jaeger@gnu.org
+Andreas Luik luik@isa.de
+Andreas Schwab schwab@suse.de
+Andreas Stolcke stolcke@ICSI.Berkeley.EDU
+Andrei Gaponenko andr@triumf.ca
+Andres Soolo andres@soolo.matti.ee
+Andrew Burgess aab@cichlid.com
+Andrew Dalke dalke@bioreason.com
+Andrew Fabbro andrew@fabbro.org
+Andrew Pham andpha@us.ibm.com
+Andrew Tridgell tridge@samba.org
+Andrey Borzenkov arvidjaar@mail.ru
+Andries Brouwer Andries.Brouwer@cwi.nl
+Andy Longton alongton@metamark.com
+Anthony Thyssen anthony@griffith.edu.au
+Antonio Rendas ajrendas@yahoo.com
+Ariel Faigon ariel@cthulhu.engr.sgi.com
+Arne H. Juul arnej@solan.unit.no
+Arne Henrik Juul arnej@imf.unit.no
+Arnold Robbins arnold@skeeve.com
+Arthur Pool pool@commerce.uq.edu.au
+Arun Sharma arun.sharma@intel.com
+Arvind Autar Autar022@planet.nl
+Augey Mikus mikus@dqc.org
+Aurelien Jarno aurel32@debian.org
+Austin Donnelly Austin.Donnelly@cl.cam.ac.uk
+Axel Kittenberger Anshil@gmx.net
+Bauke Jan Douma bjdouma@xs4all.nl
+Ben Elliston bje@air.net.au
+Ben Harris bjh21@netbsd.org
+Benjamin Cutler cutlerbc@simla.colostate.edu
+Bengt Martensson bengt@mathematik.uni-Bremen.de
+Bernard Giroud bernard.giroud@creditlyonnais.ch
+Bernd Eckenfels ecki@debian.org
+Bernd Leibing bernd.leibing@rz.uni-ulm.de
+Bernd Melchers melchers@cis.fu-berlin.de
+Bernhard Baehr bernhard.baehr@gmx.de
+Bernhard Gabler bernhard@uni-koblenz.de
+Bernhard Rosenkraenzer bero@redhat.de
+Bert Deknuydt Bert.Deknuydt@esat.kuleuven.ac.be
+Bill Peters peters@gaffel.as.arizona.edu
+Bjorn Helgaas helgaas@rsn.hp.com
+Bob McCracken kerouac@ravenet.com
+Bob Proulx rwp@fc.hp.com
+Branden Robinson branden@necrotic.deadbeast.net
+Brendan O'Dea bod@compusol.com.au
+Brian Kimball bfk@footbag.org
+Brian Youmans 3diff@gnu.org
+Bruce Korb bkorb@veritas.com
+Bruce Robertson brucer@theodolite.dyndns.org
+Bruno Haible haible@clisp.cons.org
+Carl Johnson carlj@cjlinux.home.org
+Carl Lowenstein cdl@mpl.UCSD.EDU
+Carlos Canau Carlos.Canau@relay.puug.pt
+Charles Karney karney@pppl.gov
+Charles Randall crandall@matchlogic.com
+Chip Salzenberg chip@valinux.com
+Chris Faylor cgf@cygnus.com
+Chris J. Bednar cjb@AdvancedDataSolutions.com
+Chris Lesniewski ctl@mit.edu
+Chris Sylvain csylvain@umm.edu
+Chris Yeo cyeo@biking.org
+Christi Alice Scarborough christi@chiark.greenend.org.uk
+Christian Harkort christian.harkort@web.de
+Christian Krackowizer ckrackowiz@std.schuler-ag.com
+Christian Rose menthos@menthos.com
+Christian von Roques roques@pond.sub.org
+Christophe LYON christophe.lyon@st.com
+Chuck Hedrick hedrick@klinzhai.rutgers.edu
+Clark Morgan cmorgan@aracnet.com
+Clement Wang clem.wang@overture.com
+Colin Plumb colin@nyx.net
+Colin Watson cjw44@riva.ucam.org
+Collin Rogowski collin@rogowski.de
+Cray-Cyber Project http://www.cray-cyber.org
+Cyril Bouthors cyril@bouthors.org
+Dale Scheetz dwarf@polaris.net
+Dan Hagerty hag@gnu.ai.it.edu
+Dan Jacobson http://www.geocities.com/jidani
+Dan Pascu dan@services.iiruc.ro
+Daniel Bergstrom noa@melody.se
+Dániel Varga danielv@axelero.hu
+Danny Levinson danny.levinson@overture.com
+Darren Salt ds@youmustbejoking.demon.co.uk
+Dave Beckett dajobe@dajobe.org
+David Alan Gilbert gilbertd@treblig.org
+David Dyck dcd@tc.fluke.COM
+David Eisner cradle@umd.edu
+David Flynn dav@chess.plus.com
+David Godfrey dave@delta.demon.co.uk
+David Luyer david_luyer@pacific.net.au
+David Madore david.madore@ens.fr
+David Malone dwmalone@cnri.dit.ie
+Dean Gaudet dean-savannah@arctic.org
+Deepak Goel deego@gnufans.org
+Dennis Henriksen opus@flamingo.osrl.dk
+Dennis Smit ds@nerds-incorporated.org
+Derek Clegg dclegg@next.com
+Dick Streefland dick_streefland@tasking.com
+Dirk Lattermann dlatt@t-online.de
+Dirk-Jan Faber djfaber@snow.nl
+Dmitry Rutsky rutsky@school.ioffe.rssi.ru
+Dmitry V. Levin ldv@altlinux.org
+Don Parsons dparsons@synapse.kent.edu
+Donni Erpel donald@appc11.gsi.de
+Doug Coleman coleman@iarc1.ece.utexas.edu
+Doug McLaren dougmc@comco.com
+Dragos Harabor dharabor@us.oracle.com
+Duncan Roe duncanr@optimation.com.au
+Ed Avis ed@membled.com
+Edward Welbourne eddy@opera.com
+Edzer Pebesma Edzer.Pebesma@rivm.nl
+Eirik Fuller eirik@hackrat.com
+Eivind eivindt@multinet.no
+Eli Zaretskii eliz@is.elta.co.il
+Emile LeBlanc leblanc@math.toronto.edu
+Eric Backus ericb@lsid.hp.com
+Eric Blake ebb9@byu.net
+Eric G. Miller egm2@jps.net
+Eric Pemente pemente@northpark.edu
+Eric S. Raymond esr@snark.thyrsus.com
+Erik Bennett bennett@cvo.oneworld.com
+Erik Corry erik@kroete2.freinet.de
+Evan Hunt ethanol@armory.com
+Felix Lee flee@teleport.com
+Felix Rauch Valenti frauch@cse.unsw.edu.au
+Ferdinand fw@scenic.mine.nu
+Fletcher Mattox fletcher@cs.utexas.edu
+Florent Bayle florent@sarcelle.net
+Florin Iucha fiucha@hsys.mic.ro
+Francesco Montorsi fr_m@hotmail.com
+François Pinard pinard@iro.umontreal.ca
+Frank Adler fadler@allesklar.de
+Frank T Lofaro ftlofaro@snooks.Egr.UNLV.EDU
+Fred Fish fnf@ninemoons.com
+Frédéric L. W. Meunier 0@pervalidus.net
+Frederik Eaton frederik@caltech.edu
+Gabor Z. Papp gzp@gzp.org.hu
+Gaël Quéri gqueri@mail.dotcom.fr
+Galen Hazelwood galenh@micron.net
+Gary Anderson ganderson@clark.net
+Gary V. Vaughan gary@gnu.org
+Gaute Hvoslef Kvalnes gaute@verdsveven.com
+Geoff Collyer geoff at collyer.net
+Geoff Kuenning geoff@cs.hmc.edu
+Geoff Odhner geoff@franklin.com
+Geoff Whale geoffw@cse.unsw.EDU.AU
+Gerhard Poul gpoul@gnu.org
+Germano Leichsenring germano@jedi.cs.kobe-u.ac.jp
+Göran Uddeborg goeran@uddeborg.pp.se
+Guochun Shi gshi@ncsa.uiuc.edu
+GOTO Masanori gotom@debian.or.jp
+Greg Louis glouis@dynamicro.on.ca
+Greg McGary gkm@gnu.org
+Greg Schafer gschafer@zip.com.au
+Greg Troxel gdt@bbn.com
+Greg Wooledge gawooledge@sherwin.com
+Gregory Leblanc gleblanc@cu-portland.edu
+Guido Leenders guido.leenders@invantive.com
+H. J. Lu hjl@valinux.com
+Hans Ginzel hans@matfyz.cz
+Hans Lermen lermen@fgan.de
+Hans Verkuil hans@wyst.hobby.nl
+Harald Dunkel harald.dunkel@t-online.de
+Harry Liu rliu@lek.ugcs.caltech.edu
+Harti Brandt brandt@fokus.fraunhofer.de
+Harvey Eneman Harvey.Eneman@oracle.com
+Helen Faulkner helen_ml_faulkner@yahoo.co.uk
+Herbert Xu herbert@gondor.apana.org.au
+Holger Berger hberger@ess.nec.de
+Hon-Yin Kok hkok@yoda.unl.edu
+Hugh Daniel hugh@xanadu.com
+Ian Bruce ian.bruce@myrealbox.com
+Iain Calder ic56@rogers.com
+Ian Jackson ijackson@chiark.greenend.org.uk
+Ian Lance Taylor ian@cygnus.com
+Ian Turner vectro@pipeline.com
+Iida Yosiaki iida@gnu.org
+Ingo Saitz ingo@debian.org
+Ivo Timmermans ivo@debian.org
+James james@albion.glarp.com
+James Antill jmanti%essex.ac.uk@seralph21.essex.ac.uk
+James Lemley James.Lemley@acxiom.com
+James Hunt jamesodhunt@hotmail.com
+James Sneeringer jvs@ocslink.com
+James Tanis jtt@soscorp.com
+James Youngman james+usenet@free-lunch.demon.co.uk
+Jamie Lokier jamie@imbolc.ucc.ie
+Jamie McClelland jm@mayfirst.org
+Jan Fedak J.Fedak@sh.cvut.cz
+Jan Nieuwenhuizen janneke@gnu.org
+Janos Farkas chexum@shadow.banki.hu
+Jarkko Hietaniemi jhi@epsilon.hut.fi
+Jean Charles Delepine delepine@u-picardie.fr
+Jeff Moore jbm@mordor.com
+Jeff Sheinberg jeff@bsrd.net
+Jens Elkner elkner@imsgroup.de
+Jens Schmidt jms@jsds.hamburg.com
+Jerome Abela abela@hsc.fr
+Jérôme Zago bug-coreutils-ml@agt-the-walker.net
+Jesse Kornblum kornblum@usna.edu
+Jesse Thilo jgt2@eecs.lehigh.edu
+Jie Xu xuj@iag.net
+Jim Blandy jimb@cyclic.com
+Jim Dennis jimd@starshine.org
+Joakim Rosqvist dvljrt@cs.umu.se
+Jochen Hein jochen@jochen.org
+Joe Orton joe@manyfish.co.uk
+Joerg Sonnenberger joerg@britannica.bec.de
+Johan Boule bohan@bohan.dyndns.org
+Johan Danielsson joda@pdc.kth.se
+John Bley jbb6@acpub.duke.edu
+John David Anglin dave.anglin@nrc.ca
+John Gatewood Ham zappaman@alphabox.compsci.buu.ac.th
+John Gotts jgotts@umich.edu
+John Kendall kendall@capps.com
+John Kodis kodis@acm.org
+John Murphy jam@philabs.research.philips.com
+John Roll john@panic.harvard.edu
+John Salmon johns@mullet.anu.edu.au
+John Summerfield summer@OS2.ami.com.au
+Jon Peatfield J.S.Peatfield@damtp.cam.ac.uk
+Joost van Baal joostvb@xs4all.nl
+Jorge Stolfi stolfi@ic.unicamp.br
+Joseph S. Myers jsm28@cam.ac.uk
+Joshua Hudson joshudson@gmail.com
+Juan F. Codagnone juam@arnet.com.ar
+Juan M. Guerrero st001906@hrz1.hrz.tu-darmstadt.de
+Jungshik Shin jshin@pantheon.yale.edu
+Jürgen Fluk louis@dachau.marco.de
+Jurriaan thunder7@xs4all.nl
+Justin Pryzby justinpryzby@users.sourceforge.net
+jvogel jvogel@linkny.com
+Kai Henningsen kai@debian.org
+Kai-Uwe Rommel rommel@informatik.tu-muenchen.de
+Kalle Olavi Niemitalo kon@iki.fi
+Kamal Paul Nigam Kamal_Paul_Nigam@gs35.sp.cs.cmu.edu
+Karl Eichwalder keichwa@gmx.net
+Karl Heuer kwzh@gnu.org
+Karl-Michael Schneider schneide@phil.uni-passau.de
+Karsten Thygesen karthy@kom.auc.dk
+Kaveh R. Ghazi ghazi@caip.rutgers.edu
+Keith M. Briggs keith.briggs@bt.com
+Keith Owens kaos@audio.apana.org.au
+Keith Thompson kst@cts.com
+Ken Pizzini kenp@halcyon.com
+Kevin Mudrick kmudrick@healthmarketscience.com
+Kristin E Thomas kristint@us.ibm.com
+Kjetil Torgrim Homme kjetilho@ifi.uio.no
+Kristoffer Rose kris@diku.dk
+Larry McVoy lm@sgi.com
+Lars Hecking lhecking@nmrc.ucc.ie
+Leah Q eequor@earthlink.net
+Lehti Rami rammer@cs.tut.fi
+Leonard N. Zubkoff lnz@dandelion.com
+Leonardo Milano lmilano@udel.edu
+Lorne Baker lbaker@nitro.avint.net
+Luke Hassell lukehassell@yahoo.com
+Luke Kendall lukekendall@optushome.com.au
+M. P. Suzuki mpsuzuki@hiroshima-u.ac.jp
+Maciej Kwapulinski pikpok@univ.gda.pl
+Manas Garg manas@cygsoft.com
+Manfred Hollstein manfred@s-direktnet.de
+Marc Boucher marc@mbsi.ca
+Marc Haber mh+debian-bugs@zugschlus.de
+Marc Lehman schmorp@schmorp.de
+Marc Olzheim marcolz@stack.nl
+Marco Franzen Marco.Franzen@Thyron.com
+Marcus Brinkmann http://www.marcus-brinkmann.de
+Marcus Daniels marcus@ee.pdx.edu
+Mark A. Thomas thommark@access.digex.net
+Mark Conty Mark_Conty@cargill.com
+Mark D. Roth roth@uiuc.edu
+Mark Funkenhauser mfunkenhauser@rogers.com
+Mark Harris mark@monitor.designacc.com
+Mark Hewitt mhewitt@armature.com
+Mark Hounschell markh@compro.net
+Mark Hubbart discord@mac.com
+Mark Kettenis kettenis@phys.uva.nl
+Mark Melahn mmelahn@gmail.com
+Mark Nudelman marknu@flash.net
+Mark W. Eichin eichin@cygnus.com
+Markus Demleitner msdemlei@auriga.ari.uni-heidelberg.de
+Martin martin@dresden.nacamar.de
+Martin Buck martin.buck@ascom.ch
+Martin Gallant martyg@goodbit.net
+Martin Hippe martin.hippe@schlund.de
+Martin Michlmayr tbm@cyrius.com
+Martin Mitchell martin@debian.org
+Martin P.J. Zinser zinser@decus.de
+Marty Leisner leisner@sdsp.mc.xerox.com
+Masami Takikawa takikawm@CS.ORST.EDU
+Mate Wierdl mw@moni.msci.memphis.edu
+Matej Vela mvela@public.srce.hr
+Matt Kraai kraai@ftbfs.org
+Matt Perry matt@primefactor.com
+Matt Schalit mschalit@pacbell.net
+Matt Swift swift@alum.mit.edu
+Matthew Arnison maffew@cat.org.au
+Matthew M. Boedicker matthewm@boedicker.org
+Matthew Braun matthew@ans.net
+Matthew Clarke Matthew_Clarke@mindlink.bc.ca
+Matthew S. Levine mslevine@theory.lcs.mit.edu
+Matthew Smith matts@bluesguitar.org
+Matthew Swift swift@alum.mit.edu
+Matthew Woehlke mw_triad@users.sourceforge.net
+Matthias Urlichs smurf@noris.de
+Matti Aarnio matti.aarnio@zmailer.org
+Mattias Wadenstein maswan@acc.umu.se
+Meelis Roos mroos@tartu.cyber.ee
+Michael michael@aplatform.com
+Michael ??? michael@roka.net
+Michael Bacarella mbac@netgraft.com>
+Michael Deutschmann michael@talamasca.ocis.net
+Michael Elizabeth Chastain mec.gnu@mindspring.com
+Michael Gaughen mgaughen@polyserve.com
+Michael Hasselberg mikelh@zonta.ping.de
+Michael Hohn hohn@math.utah.edu
+Michael J. Croghan mcroghan@usatoday.com
+Michael McFarland sidlon@yahoo.com
+Michael Piefel piefel@informatik.hu-berlin.de
+Michael Steffens michael.steffens@s.netic.de
+Michael Stone mstone@debian.org
+Michael Stutz stutz@dsl.org
+Michael van Elst mlelstv@dev.de.cw.net
+Michael Veksler mveksler@techunix.technion.ac.il
+Michail Litvak mci@owl.openwall.com
+Michal Politowski mpol@charybda.icm.edu.pl
+Michal Svec msvec@suse.cz
+Michel Robitaille robitail@IRO.UMontreal.CA
+Michiel Bacchiani bacchian@raven.bu.edu
+Mike Castle dalgoda@ix.netcom.com
+Mike Coleman mkc@mathdogs.com
+Mike Jetzer mjetzer@mke.catalystwms.com
+Mike Frysinger vapier@gentoo.org
+Mikko Tuumanen m@sorvankyla.yok.utu.fi
+Mikulas Patocka mikulas@artax.karlin.mff.cuni.cz
+Miles Bader miles@gnu.ai.mit.edu
+Minh Tran-Le tranle@intellicorp.com
+Morten Welinder terra@diku.dk
+Neal H Walfield neal@cs.uml.edu
+Neil Brown neilb@cse.unsw.edu.au
+Nelson H. F. Beebe beebe@math.utah.edu
+Nick Estes debian@nickstoys.com
+Nick Lawes nlawes@silverplatter.com
+Nickolai Zeldovich nickolai@cs.stanford.edu
+Nicolas François nicolas.francois@centraliens.net
+Niklas Edmundsson nikke@acc.umu.se
+Nikola Milutinovic Nikola.Milutinovic@ev.co.yu
+Noah Friedman friedman@splode.com
+Noel Cragg noel@red-bean.com
+Norbert Kiesel nkiesel@tbdnetworks.com
+Olatunji Oluwabukunmi Ruwase tjruwase@stanford.edu
+Olav Morkrid olav@funcom.com
+Ole Laursen olau@hardworking.dk
+Oliver Kiddle okiddle@yahoo.co.uk
+Ørn E. Hansen oehansen@daimi.aau.dk
+Oskar Liljeblad osk@hem.passagen.se
+Patrick Mauritz oxygene@studentenbude.ath.cx
+Paul Eggert eggert@twinsun.com
+Paul Jarc prj@po.cwru.edu
+Paul Nevai nevai@ops.mps.ohio-state.edu
+Paul Sauer paul@alexa.com
+Paul Slootman paul@debian.org
+Paul Townsend aab@purdue.edu
+Paul Worrall paul@basilisk.uklinux.net
+Pawel Prokop pablo@wizard.ae.krakow.pl
+Per Cederqvist ceder@lysator.liu.se
+Per Kristian Hove perhov@math.ntnu.no
+Peter Breitenlohner peb@mppmu.mpg.de
+Peter Eriksson peter@ifm.liu.se
+Peter Fales psfales@lucent.com
+Peter Horst peter@ointment.org
+Peter Moulder reiter@netspace.net.au
+Peter O'Gorman bug-coreutils@mlists.thewrittenword.com
+Peter Samuelson psamuels@sampo.creighton.edu
+Peter Seebach seebs@taniemarie.solon.com
+Petter Reinholdtsen pere@hungry.com
+Phelippe Neveu pneveu@pcigeomatics.com
+Phil Richards phil.richards@vf.vodafone.co.uk
+Philippe De Muyter phdm@macqel.be
+Philippe Schnoebelen Philippe.Schnoebelen@imag.fr
+Phillip Jones mouse@datastacks.com
+Piergiorgio Sartor sartor@sony.de
+Piotr Kwapulinski kwap@univ.gda.pl
+Prashant TR tr@eth.net
+Rainer Orth ro@TechFak.Uni-Bielefeld.DE
+Ralf W. Stephan stephan@tmt.de
+Ralf Wildenhues Ralf.Wildenhues@gmx.de
+Ralph Loader loader@maths.ox.ac.uk
+Raul Miller moth@magenta.com
+Raúl Núñez de Arenas Coronado raul@pleyades.net
+Reuben Thomas rrt@sc3d.org
+Richard A Downing richard.downing@bcs.org.uk
+Richard Braakman dark@xs4all.nl
+Richard Dawe rich@phekda.freeserve.co.uk
+Richard J. Rauenzahn rrauenza@hairball.cup.hp.com
+Richard Neill rn214@hermes.cam.ac.uk
+Richard Sharman rsharman@magmacom.com
+Rick Sladkey jrs@world.std.com
+Rik Faith faith@cs.unc.edu
+Risto Kankkunen kankkune@lingsoft.fi
+Robert H. de Vries robert@and.nl
+Robert Lindgren robert@orcafat.com
+Robert Millan zeratul2@wanadoo.es
+Rogier Wolff R.E.Wolff@BitWizard.nl
+Roland Huebner ro-huebner@gmx.de
+Roland Turner raz.tah.bet@raz.cx
+Ronald F. Guilmette rfg@netcom.com
+Ross Alexander r.alexander@auckland.ac.nz
+Ross Paterson rap@doc.ic.ac.uk
+Ross Ridge rridge@calum.csclub.uwaterloo.ca
+Sami Farin sfarin@ratol.fi
+Samuel Tardieu sam@rfc1149.net
+Samuel Thibault samuel.thibault@ens-lyon.org
+Samuli Karkkainen Samuli.Karkkainen@hut.fi
+Sander van Malssen svm@kozmix.ow.nl
+Santiago Vila Doncel sanvila@unex.es
+Savochkin Andrey Vladimirovich saw@msu.ru
+Scott Lurndal slurn@griffin.engr.sgi.com
+Sébastien Maret smaret@umich.edu
+Shing-Shong Shei shei@cs.indiana.edu
+Soeren Sonnenburg sonnenburg@informatik.hu-berlin.de
+Solar Designer solar@owl.openwall.com
+Stanislav Ievlev inger@altlinux.ru
+Stavros Passas stabat@ics.forth.gr
+Stéphane Chazelas Stephane_CHAZELAS@yahoo.fr
+Stephen Depooter sbdep@myrealbox.com
+Stephen Eglen eglen@pcg.wustl.edu
+Stephen Gildea gildea@stop.mail-abuse.org
+Stephen Smoogen smooge@mindspring.com
+Steve McConnel steve@acadcomp.sil.org
+Steve McIntyre steve@einval.com
+Steven G. Johnson stevenj@alum.mit.edu
+Steven Mocking ufo@quicknet.nl
+Steven P Watson steven@magelico.net
+Stuart Kemp skemp@peter.bmc.com
+Sven Joachim sven_joachim@web.de
+Szakacsits Szabolcs szaka@sienet.hu
+Tadayoshi Funaba tadf@kt.rim.or.jp
+TAKAI Kousuke takai@vlsi.kuee.kyoto-u.ac.jp
+Theodore Ts'o tytso@rsts-11.mit.edu
+The Wanderer inverseparadox@comcast.net
+Thomas Bushnell thomas@gnu.ai.mit.edu
+Thomas Goerlich thomas@schnappmatik.de
+Thomas Hood jdthood@yahoo.co.uk
+Thomas Luzat thomas@luzat.com
+Thomas M.Ott thmo-13@gmx.de
+Thomas Quinot thomas@Cuivre.FR.EU.ORG
+Thomas Schwinge tschwinge@gnu.org
+Thomas Wolff mined@towo.net
+Tim J. Robbins tjr@FreeBSD.org
+Tim Mooney mooney@dogbert.cc.ndsu.NoDak.edu
+Tim Smithers mouse@dmouse.com.au
+Tim Waugh twaugh@redhat
+Toby Peterson toby@opendarwin.org
+Todd A. Jacobs tjacobs@codegnome.org
+Tom Haynes thomas@netapp.com
+Tom Quinn trq@dionysos.thphys.ox.ac.uk
+Tomas Pospisek tpo@sourcepole.ch
+Tommi Kyntola tkyntola@cc.hut.fi
+Ton Hospel thospel@mail.dma.be
+Ton Nijkes ton@murphy.nl
+Tony Kocurko akocurko@mun.ca
+Tony Leneis tony@plaza.ds.adp.com
+Tony Robinson ajr@eng.cam.ac.uk
+Toralf Förster toralf.foerster@gmx.de
+Torbjorn Granlund tege@nada.kth.se
+Torbjorn Lindgren tl@funcom.no
+Torsten Landschoff torsten@pclab.ifg.uni-kiel.de
+Tristan Miller psychonaut@nothingisreal.com
+Ulrich Drepper drepper@gnu.org
+Ulrich Hermisson ulrich_hermisson@hotmail.com
+Urs Thuermann urs@isnogud.escape.de
+Uwe H. Steinfeld usteinfeld@gmx.net
+Vesselin Atanasov vesselin@bgnet.bg
+Vin Shelton acs@alumni.princeton.edu
+Vineet Chadha chadha@acis.ufl.edu
+Vitaly A. Ostanin vyt@altlinux.org
+Vlada Macek tuttle@bbs.fsik.cvut.cz
+Volker Borchert bt@teknon.de
+Volker Paul vpaul@dohle.com
+Wartan Hachaturow wart@tepkom.ru
+Wayne Stewart wstewa@atl.com
+Wenjun Zheng zwj@yahoo.com
+Werner Almesberger Werner.Almesberger@epfl.ch
+Wichert Akkerman wichert@cistron.nl
+Will Edgington wedgingt@acm.org
+William Bader william@nscs.fast.net
+William Dowling will@franklin.com
+William Lewis wiml@omnigroup.com
+wiregauze wiregauze@yahoo.com
+Wis Macomson wis.macomson@intel.com
+Wojciech Purczynski cliph@isec.pl
+Wolfram Kleff kleff@cs.uni-bonn.de
+Won-kyu Park wkpark@chem.skku.ac.kr
+Yann Dirson dirson@debian.org
+Zvi Har'El rl@math.technion.ac.il
+
+;; Local Variables:
+;; coding: utf-8
+;; End:
diff --git a/THANKS-to-translators b/THANKS-to-translators
new file mode 100644
index 0000000..34ef259
--- /dev/null
+++ b/THANKS-to-translators
@@ -0,0 +1,38 @@
+The following teams have translated the many diagnostics of this
+package into many different languages. Thank you!
+
+---
+http://www.iro.umontreal.ca/contrib/po/HTML/team-af.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-be.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-bg.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-ca.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-cs.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-da.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-de.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-el.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-es.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-et.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-eu.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-fi.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-fr.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-ga.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-gl.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-hu.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-it.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-ja.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-ko.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-ms.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-nb.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-nl.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-no.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-pl.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-pt.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-pt_BR.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-ru.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-rw.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-sk.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-sl.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-sv.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-tr.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-zh_CN.html
+http://www.iro.umontreal.ca/contrib/po/HTML/team-zh_TW.html
diff --git a/THANKStt.in b/THANKStt.in
new file mode 100644
index 0000000..25e7a99
--- /dev/null
+++ b/THANKStt.in
@@ -0,0 +1,4 @@
+The following teams have translated the many diagnostics of this
+package into many different languages. Thank you!
+
+---
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..0e62630
--- /dev/null
+++ b/TODO
@@ -0,0 +1,198 @@
+stty.c:
+ use xstrtoul, not sscanf
+
+printf:
+ Now that gnulib supports *printf("%a"), import one of the
+ *printf-posix modules so that printf(1) will support %a even on
+ platforms where the native *printf(3) is deficient.
+ Suggestion form Eric Blake.
+
+strip: add an option to specify the program used to strip binaries.
+ suggestion from Karl Berry
+
+doc/coreutils.texi:
+ Address this comment: FIXME: mv's behavior in this case is system-dependent
+ Better still: fix the code so it's *not* system-dependent.
+
+ls: add --format=FORMAT option that controls how each line is printed.
+
+cp --no-preserve=X should not attempt to preserve attribute X
+ reported by Andreas Schwab
+
+copy.c: Address the FIXME-maybe comment in copy_internal.
+And once that's done, add an exclusion so that `cp --link'
+no longer incurs the overhead of saving src. dev/ino and dest. filename
+in the hash table.
+
+See if we can be consistent about where --verbose sends its output:
+ These all send --verbose output to stdout:
+ head, tail, rm, cp, mv, ln, chmod, chown, chgrp, install, ln
+ These send it to stderr:
+ shred mkdir split
+ readlink is different
+
+Write an autoconf test to work around build failure in HPUX's 64-bit mode.
+See notes in README -- and remove them once there's a work-around.
+
+Integrate use of sendfile, suggested here:
+ http://mail.gnu.org/archive/html/bug-fileutils/2003-03/msg00030.html
+I don't plan to do that, since a few tests demonstrate no significant benefit.
+
+Should printf '\0123' print "\n3"?
+ per report from TAKAI Kousuke on Mar 27
+ http://mail.gnu.org/archive/html/bug-coreutils/2003-03/index.html
+
+printf: consider adapting builtins/printf.def from bash
+
+df: add `--total' option, suggested here http://bugs.debian.org/186007
+
+seq: give better diagnostics for invalid formats:
+ e.g. no or too many % directives
+seq: consider allowing format string to contain no %-directives
+
+resolve RH report on cp -a forwarded by Tim Waugh
+
+tail: don't use xlseek; it *exits*.
+ Instead, maybe use a macro and return nonzero.
+
+add mktemp? Suggested by Nelson Beebe
+
+tr: support nontrivial equivalence classes, e.g. [=e=] with LC_COLLATE=fr_FR
+
+lib/strftime.c: Since %N is the only format that we need but that
+ glibc's strftime doesn't support, consider using a wrapper that
+ would expand /%(-_)?\d*N/ to the desired string and then pass the
+ resulting string to glibc's strftime.
+
+sort: Compress temporary files when doing large external sort/merges.
+ This improves performance when you can compress/uncompress faster than
+ you can read/write, which is common in these days of fast CPUs.
+ suggestion from Charles Randall on 2001-08-10
+
+unexpand: [http://www.opengroup.org/onlinepubs/007908799/xcu/unexpand.html]
+ printf 'x\t \t y\n'|unexpand -t 8,9 should print its input, unmodified.
+ printf 'x\t \t y\n'|unexpand -t 5,8 should print "x\ty\n"
+
+Let GNU su use the `wheel' group if appropriate.
+ (there are a couple patches, already)
+
+sort: Investigate better sorting algorithms; see Knuth vol. 3.
+
+ We tried list merge sort, but it was about 50% slower than the
+ recursive algorithm currently used by sortlines, and it used more
+ comparisons. We're not sure why this was, as the theory suggests it
+ should do fewer comparisons, so perhaps this should be revisited.
+ List merge sort was implemented in the style of Knuth algorithm
+ 5.2.4L, with the optimization suggested by exercise 5.2.4-22. The
+ test case was 140,213,394 bytes, 426,4424 lines, text taken from the
+ GCC 3.3 distribution, sort.c compiled with GCC 2.95.4 and running on
+ Debian 3.0r1 GNU/Linux, 2.4GHz Pentium 4, single pass with no
+ temporary files and plenty of RAM.
+
+ Since comparisons seem to be the bottleneck, perhaps the best
+ algorithm to try next should be merge insertion. See Knuth section
+ 5.3.1, who credits Lester Ford, Jr. and Selmer Johnson, American
+ Mathematical Monthly 66 (1959), 387-389.
+
+cp --recursive: perform dir traversals in source and dest hierarchy rather
+ than forming full file names. The latter (current) approach fails
+ unnecessarily when the names become very long.
+
+Remove suspicious uses of alloca (ones that may allocate more than
+ about 4k)
+
+Adapt these contribution guidelines for coreutils:
+ http://sources.redhat.com/automake/contribute.html
+
+
+Changes expected to go in, someday.
+======================================
+
+ dd patch from Olivier Delhomme
+
+ Andreas Gruenbacher's xattr changes
+
+ Apply Bruno Haible's hostname changes
+
+ test/mv/*: clean up $other_partition_tmpdir in all cases
+
+ ls: when both -l and --dereference-command-line-symlink-to-dir are
+ specified, consider whether to let the latter select whether to
+ dereference command line symlinks to directories. Since -l has
+ an implicit --NO-dereference-command-line-symlink-to-dir meaning.
+ Pointed out by Karl Berry.
+
+ A more efficient version of factor, and possibly one that
+ accepts inputs of size 2^64 and larger.
+
+ dd: consider adding an option to suppress `bytes/block read/written'
+ output to stderr. Suggested here:
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=165045
+
+ Pending copyright papers:
+ ------------------------
+ ls --color: Ed Avis' patch to suppress escape sequences for
+ non-highlighted files
+
+ getpwnam from Bruce Korb
+
+ pb (progress bar) from Miika Pekkarinen
+
+ ------------------------------
+
+Have euidaccess.m4 check for eaccess as well as euidaccess
+If found, then do `#define euidaccess eaccess'.
+
+Remove long-deprecated options. Search case-insensitive for
+`deprecated' and `remove in '. Automate this.
+
+Add a distcheck-time test to ensure that every distributed
+file is either read-only(indicating generated) or is
+version-controlled and up to date.
+
+Implement Ulrich Drepper's suggestion to use getgrouplist rather
+ than getugroups. This affects only `id', but makes a big difference
+ on systems with many users and/or groups, and makes id usable once
+ again on systems where access restrictions make getugroups fail.
+ But first we'll need a run-test (either in an autoconf macro or at
+ run time) to avoid the segfault bug in libc-2.3.2's getgrouplist.
+ In that case, we'd revert to using a new (to-be-written) getgrouplist
+ module that does most of what `id' already does. Or just avoid the
+ buggy use of getgrouplist by never passing it a buffer of length zero.
+ See https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=200327
+
+remove `%s' notation:
+ grep -E "\`%.{,4}s'" src/*.c
+
+remove or adjust chown's --changes option, since it
+ can't always do what it currently says it does.
+
+Adapt tools like wc, tr, fmt, etc. (most of the textutils) to be
+ multibyte aware. The problem is that I want to avoid duplicating
+ significant blocks of logic, yet I also want to incur only minimal
+ (preferably `no') cost when operating in single-byte mode.
+
+Remove all uses of the `register' keyword
+
+pr's use of nstrftime can make it malloc a very large (up to SIZE_MAX) buffer
+
+ls.c: use gettime rather than clock_gettime, gettimeofday, time
+
+-----
+
+Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software Foundation,
+Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..f425eb0
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,1172 @@
+# generated automatically by aclocal 1.10 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_if(m4_PACKAGE_VERSION, [2.61a],,
+[m4_fatal([this file was generated for autoconf 2.61a.
+You have another version of autoconf. If you want to use that,
+you should regenerate the build system entirely.], [63])])
+
+# Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.10'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.10], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.10])dnl
+_AM_AUTOCONF_VERSION(m4_PACKAGE_VERSION)])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 9
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], UPC, [depcc="$UPC" am_compiler_list=],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 3
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+done
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 12
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.60])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $1 | $1:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+ am__include=include
+ am__quote=
+ _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_PROG_CC_C_O
+# --------------
+# Like AC_PROG_CC_C_O, but changed for automake.
+AC_DEFUN([AM_PROG_CC_C_O],
+[AC_REQUIRE([AC_PROG_CC_C_O])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+ac_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+dnl Make sure AC_PROG_CC is never called again, or it will override our
+dnl setting of CC.
+m4_define([AC_PROG_CC],
+ [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
+])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2005, 2006
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+AC_DEFUN([AM_C_PROTOTYPES],
+[AC_REQUIRE([AC_C_PROTOTYPES])
+if test "$ac_cv_prog_cc_stdc" != no; then
+ U= ANSI2KNR=
+else
+ U=_ ANSI2KNR=./ansi2knr
+fi
+# Ensure some checks needed by ansi2knr itself.
+AC_REQUIRE([AC_HEADER_STDC])
+AC_CHECK_HEADERS([string.h])
+AC_SUBST([U])dnl
+AC_SUBST([ANSI2KNR])dnl
+_AM_SUBST_NOTMAKE([ANSI2KNR])dnl
+])
+
+AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputing VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([m4/absolute-header.m4])
+m4_include([m4/acl.m4])
+m4_include([m4/alloca.m4])
+m4_include([m4/allocsa.m4])
+m4_include([m4/argmatch.m4])
+m4_include([m4/arpa_inet_h.m4])
+m4_include([m4/assert.m4])
+m4_include([m4/atexit.m4])
+m4_include([m4/autobuild.m4])
+m4_include([m4/backupfile.m4])
+m4_include([m4/base64.m4])
+m4_include([m4/bison.m4])
+m4_include([m4/boottime.m4])
+m4_include([m4/c-strtod.m4])
+m4_include([m4/calloc.m4])
+m4_include([m4/canon-host.m4])
+m4_include([m4/canonicalize.m4])
+m4_include([m4/chdir-long.m4])
+m4_include([m4/check-decl.m4])
+m4_include([m4/chown.m4])
+m4_include([m4/clock_time.m4])
+m4_include([m4/cloexec.m4])
+m4_include([m4/close-stream.m4])
+m4_include([m4/closeout.m4])
+m4_include([m4/codeset.m4])
+m4_include([m4/config-h.m4])
+m4_include([m4/cycle-check.m4])
+m4_include([m4/d-ino.m4])
+m4_include([m4/d-type.m4])
+m4_include([m4/dirfd.m4])
+m4_include([m4/dirname.m4])
+m4_include([m4/dos.m4])
+m4_include([m4/double-slash-root.m4])
+m4_include([m4/dup2.m4])
+m4_include([m4/eealloc.m4])
+m4_include([m4/eoverflow.m4])
+m4_include([m4/error.m4])
+m4_include([m4/euidaccess-stat.m4])
+m4_include([m4/euidaccess.m4])
+m4_include([m4/exclude.m4])
+m4_include([m4/exitfail.m4])
+m4_include([m4/extensions.m4])
+m4_include([m4/fchdir.m4])
+m4_include([m4/fcntl-safer.m4])
+m4_include([m4/fcntl_h.m4])
+m4_include([m4/fd-reopen.m4])
+m4_include([m4/file-type.m4])
+m4_include([m4/fileblocks.m4])
+m4_include([m4/filemode.m4])
+m4_include([m4/filenamecat.m4])
+m4_include([m4/flexmember.m4])
+m4_include([m4/fnmatch.m4])
+m4_include([m4/fpending.m4])
+m4_include([m4/fprintftime.m4])
+m4_include([m4/free.m4])
+m4_include([m4/fstypename.m4])
+m4_include([m4/fsusage.m4])
+m4_include([m4/ftruncate.m4])
+m4_include([m4/fts.m4])
+m4_include([m4/getaddrinfo.m4])
+m4_include([m4/getcwd-abort-bug.m4])
+m4_include([m4/getcwd-path-max.m4])
+m4_include([m4/getcwd.m4])
+m4_include([m4/getdate.m4])
+m4_include([m4/getdelim.m4])
+m4_include([m4/getgroups.m4])
+m4_include([m4/gethostname.m4])
+m4_include([m4/gethrxtime.m4])
+m4_include([m4/getline.m4])
+m4_include([m4/getloadavg.m4])
+m4_include([m4/getndelim2.m4])
+m4_include([m4/getopt.m4])
+m4_include([m4/getpagesize.m4])
+m4_include([m4/getpass.m4])
+m4_include([m4/gettext.m4])
+m4_include([m4/gettime.m4])
+m4_include([m4/gettimeofday.m4])
+m4_include([m4/getugroups.m4])
+m4_include([m4/getusershell.m4])
+m4_include([m4/glibc21.m4])
+m4_include([m4/gnulib-common.m4])
+m4_include([m4/gnulib-comp.m4])
+m4_include([m4/group-member.m4])
+m4_include([m4/hard-locale.m4])
+m4_include([m4/hash.m4])
+m4_include([m4/host-os.m4])
+m4_include([m4/human.m4])
+m4_include([m4/i-ring.m4])
+m4_include([m4/iconv.m4])
+m4_include([m4/idcache.m4])
+m4_include([m4/inet_ntop.m4])
+m4_include([m4/inline.m4])
+m4_include([m4/intmax_t.m4])
+m4_include([m4/inttostr.m4])
+m4_include([m4/inttypes-pri.m4])
+m4_include([m4/inttypes.m4])
+m4_include([m4/inttypes_h.m4])
+m4_include([m4/isapipe.m4])
+m4_include([m4/jm-macros.m4])
+m4_include([m4/jm-winsz1.m4])
+m4_include([m4/jm-winsz2.m4])
+m4_include([m4/lchmod.m4])
+m4_include([m4/lchown.m4])
+m4_include([m4/lib-check.m4])
+m4_include([m4/lib-ignore.m4])
+m4_include([m4/lib-ld.m4])
+m4_include([m4/lib-link.m4])
+m4_include([m4/lib-prefix.m4])
+m4_include([m4/link-follow.m4])
+m4_include([m4/localcharset.m4])
+m4_include([m4/long-options.m4])
+m4_include([m4/longdouble.m4])
+m4_include([m4/longlong.m4])
+m4_include([m4/ls-mntd-fs.m4])
+m4_include([m4/lstat.m4])
+m4_include([m4/mbchar.m4])
+m4_include([m4/mbiter.m4])
+m4_include([m4/mbrtowc.m4])
+m4_include([m4/mbscasecmp.m4])
+m4_include([m4/mbstate_t.m4])
+m4_include([m4/mbswidth.m4])
+m4_include([m4/md5.m4])
+m4_include([m4/memcasecmp.m4])
+m4_include([m4/memchr.m4])
+m4_include([m4/memcmp.m4])
+m4_include([m4/memcoll.m4])
+m4_include([m4/memcpy.m4])
+m4_include([m4/memmove.m4])
+m4_include([m4/mempcpy.m4])
+m4_include([m4/memrchr.m4])
+m4_include([m4/memset.m4])
+m4_include([m4/memxfrm.m4])
+m4_include([m4/mkancesdirs.m4])
+m4_include([m4/mkdir-p.m4])
+m4_include([m4/mkdir-slash.m4])
+m4_include([m4/mkstemp.m4])
+m4_include([m4/mktime.m4])
+m4_include([m4/modechange.m4])
+m4_include([m4/mountlist.m4])
+m4_include([m4/mpsort.m4])
+m4_include([m4/nanosleep.m4])
+m4_include([m4/netinet_in_h.m4])
+m4_include([m4/nls.m4])
+m4_include([m4/openat.m4])
+m4_include([m4/pathmax.m4])
+m4_include([m4/perl.m4])
+m4_include([m4/physmem.m4])
+m4_include([m4/po.m4])
+m4_include([m4/posixtm.m4])
+m4_include([m4/posixver.m4])
+m4_include([m4/prereq.m4])
+m4_include([m4/progtest.m4])
+m4_include([m4/putenv.m4])
+m4_include([m4/quote.m4])
+m4_include([m4/quotearg.m4])
+m4_include([m4/randint.m4])
+m4_include([m4/randperm.m4])
+m4_include([m4/randread.m4])
+m4_include([m4/readlink.m4])
+m4_include([m4/readtokens.m4])
+m4_include([m4/readutmp.m4])
+m4_include([m4/regex.m4])
+m4_include([m4/rename-dest-slash.m4])
+m4_include([m4/rename.m4])
+m4_include([m4/rmdir-errno.m4])
+m4_include([m4/rmdir.m4])
+m4_include([m4/root-dev-ino.m4])
+m4_include([m4/rpmatch.m4])
+m4_include([m4/safe-read.m4])
+m4_include([m4/safe-write.m4])
+m4_include([m4/same.m4])
+m4_include([m4/save-cwd.m4])
+m4_include([m4/savedir.m4])
+m4_include([m4/savewd.m4])
+m4_include([m4/setenv.m4])
+m4_include([m4/settime.m4])
+m4_include([m4/sha1.m4])
+m4_include([m4/sha256.m4])
+m4_include([m4/sha512.m4])
+m4_include([m4/sig2str.m4])
+m4_include([m4/snprintf.m4])
+m4_include([m4/socklen.m4])
+m4_include([m4/sockpfaf.m4])
+m4_include([m4/ssize_t.m4])
+m4_include([m4/st_dm_mode.m4])
+m4_include([m4/stat-prog.m4])
+m4_include([m4/stat-time.m4])
+m4_include([m4/stdarg.m4])
+m4_include([m4/stdbool.m4])
+m4_include([m4/stdint.m4])
+m4_include([m4/stdint_h.m4])
+m4_include([m4/stdio-safer.m4])
+m4_include([m4/stdio_h.m4])
+m4_include([m4/stdlib-safer.m4])
+m4_include([m4/stdlib_h.m4])
+m4_include([m4/stpcpy.m4])
+m4_include([m4/strcspn.m4])
+m4_include([m4/strdup.m4])
+m4_include([m4/strftime.m4])
+m4_include([m4/string_h.m4])
+m4_include([m4/strndup.m4])
+m4_include([m4/strnlen.m4])
+m4_include([m4/strnumcmp.m4])
+m4_include([m4/strpbrk.m4])
+m4_include([m4/strtod.m4])
+m4_include([m4/strtoimax.m4])
+m4_include([m4/strtol.m4])
+m4_include([m4/strtoll.m4])
+m4_include([m4/strtoul.m4])
+m4_include([m4/strtoull.m4])
+m4_include([m4/strtoumax.m4])
+m4_include([m4/strverscmp.m4])
+m4_include([m4/sys_socket_h.m4])
+m4_include([m4/sys_stat_h.m4])
+m4_include([m4/sys_time_h.m4])
+m4_include([m4/tempname.m4])
+m4_include([m4/time_h.m4])
+m4_include([m4/time_r.m4])
+m4_include([m4/timespec.m4])
+m4_include([m4/tm_gmtoff.m4])
+m4_include([m4/tzset.m4])
+m4_include([m4/unicodeio.m4])
+m4_include([m4/unistd-safer.m4])
+m4_include([m4/unistd_h.m4])
+m4_include([m4/unlink-busy.m4])
+m4_include([m4/unlinkdir.m4])
+m4_include([m4/unlocked-io.m4])
+m4_include([m4/uptime.m4])
+m4_include([m4/userspec.m4])
+m4_include([m4/utimbuf.m4])
+m4_include([m4/utime.m4])
+m4_include([m4/utimecmp.m4])
+m4_include([m4/utimens.m4])
+m4_include([m4/utimes-null.m4])
+m4_include([m4/utimes.m4])
+m4_include([m4/vasnprintf.m4])
+m4_include([m4/vasprintf.m4])
+m4_include([m4/wchar.m4])
+m4_include([m4/wchar_t.m4])
+m4_include([m4/wctype.m4])
+m4_include([m4/wcwidth.m4])
+m4_include([m4/wint_t.m4])
+m4_include([m4/xalloc.m4])
+m4_include([m4/xfts.m4])
+m4_include([m4/xgetcwd.m4])
+m4_include([m4/xnanosleep.m4])
+m4_include([m4/xstrndup.m4])
+m4_include([m4/xstrtod.m4])
+m4_include([m4/xstrtol.m4])
+m4_include([m4/yesno.m4])
diff --git a/bootstrap b/bootstrap
new file mode 100755
index 0000000..3294085
--- /dev/null
+++ b/bootstrap
@@ -0,0 +1,550 @@
+#! /bin/sh
+
+# Bootstrap this package from checked-out sources.
+
+# Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# Written by Paul Eggert.
+
+nl='
+'
+
+# Ensure file names are sorted consistently across platforms.
+# Also, ensure diagnostics are in English, e.g., "wget --help" below.
+LC_ALL=C
+export LC_ALL
+
+# Temporary directory names.
+bt='._bootmp'
+bt_regex=`echo "$bt"| sed 's/\./[.]/g'`
+bt2=${bt}2
+
+usage() {
+ echo >&2 "\
+Usage: $0 [OPTION]...
+Bootstrap this package from the checked-out sources.
+
+Options:
+ --gnulib-srcdir=DIRNAME Specify the local directory where gnulib
+ sources reside. Use this if you already
+ have gnulib sources on your machine, and
+ do not want to waste your bandwidth downloading
+ them again.
+ --copy Copy files instead of creating symbolic links.
+ --force Attempt to bootstrap even if the sources seem
+ not to have been checked out.
+ --skip-po Do not download po files.
+ --cvs-user=USERNAME Set the username to use when checking out
+ sources from the gnulib repository.
+
+If the file .bootstrap.conf exists in the current working directory, its
+contents are read as shell variables to configure the bootstrap.
+
+Running without arguments will suffice in most cases.
+"
+}
+
+# Configuration.
+
+# List of gnulib modules needed.
+gnulib_modules=
+
+# Any gnulib files needed that are not in modules.
+gnulib_files=
+
+# Translation Project URL, for the registry of all projects
+# and for the translation-team master directory.
+TP_URL='http://www.iro.umontreal.ca/translation/registry.cgi?domain='
+TP_PO_URL='http://www.iro.umontreal.ca/translation/teams/PO/'
+
+extract_package_name='
+ /^AC_INIT(/{
+ /.*,.*,.*,/{
+ s///
+ s/[][]//g
+ p
+ q
+ }
+ s/AC_INIT(\[*//
+ s/]*,.*//
+ s/^GNU //
+ y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
+ s/[^A-Za-z0-9_]/-/g
+ p
+ }
+'
+package=`sed -n "$extract_package_name" configure.ac` || exit
+gnulib_name=lib$package
+
+build_aux=build-aux
+# Extra files from gnulib, which override files from other sources.
+gnulib_extra_files="
+ $build_aux/install-sh
+ $build_aux/missing
+ $build_aux/mdate-sh
+ $build_aux/texinfo.tex
+ $build_aux/depcomp
+ $build_aux/config.guess
+ $build_aux/config.sub
+ doc/INSTALL
+"
+
+# Other locale categories that need message catalogs.
+EXTRA_LOCALE_CATEGORIES=
+
+# Additional xgettext options to use. Use "\\\newline" to break lines.
+XGETTEXT_OPTIONS='\\\
+ --flag=_:1:pass-c-format\\\
+ --flag=N_:1:pass-c-format\\\
+ --flag=error:3:c-format --flag=error_at_line:5:c-format\\\
+'
+
+# Files we don't want to import.
+excluded_files=
+
+# File that should exist in the top directory of a checked out hierarchy,
+# but not in a distribution tarball.
+checkout_only_file=README-hacking
+
+# Whether to use copies instead of symlinks.
+copy=false
+
+# Override the default configuration, if necessary.
+test -r bootstrap.conf && . ./bootstrap.conf
+
+# Translate configuration into internal form.
+
+# Parse options.
+
+for option
+do
+ case $option in
+ --help)
+ usage
+ exit;;
+ --gnulib-srcdir=*)
+ GNULIB_SRCDIR=`expr "$option" : '--gnulib-srcdir=\(.*\)'`;;
+ --cvs-user=*)
+ CVS_USER=`expr "$option" : '--cvs-user=\(.*\)'`;;
+ --skip-po)
+ SKIP_PO=t;;
+ --force)
+ checkout_only_file=;;
+ --copy)
+ copy=true;;
+ *)
+ echo >&2 "$0: $option: unknown option"
+ exit 1;;
+ esac
+done
+
+if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
+ echo "$0: Bootstrapping from a non-checked-out distribution is risky." >&2
+ exit 1
+fi
+
+# If $STR is not already on a line by itself in $FILE, insert it,
+# sorting the new contents of the file and replacing $FILE with the result.
+insert_sorted_if_absent() {
+ file=$1
+ str=$2
+ echo "$str" | sort -u - $file | cmp -s - $file \
+ || echo "$str" | sort -u - $file -o $file \
+ || exit 1
+}
+
+# Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac.
+found_aux_dir=no
+grep '^[ ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \
+ >/dev/null && found_aux_dir=yes
+grep '^[ ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \
+ >/dev/null && found_aux_dir=yes
+if test $found_aux_dir = no; then
+ echo "$0: expected line not found in configure.ac. Add the following:" >&2
+ echo " AC_CONFIG_AUX_DIR([$build_aux])" >&2.
+fi
+
+# If $build_aux doesn't exist, create it now, otherwise some bits
+# below will malfunction. If creating it, also mark it as ignored.
+if test ! -d $build_aux; then
+ mkdir $build_aux
+ for ig in .cvsignore .gitignore; do
+ test -f $ig && insert_sorted_if_absent $ig $build_aux
+ done
+fi
+
+echo "$0: Bootstrapping from checked-out $package sources..."
+
+cleanup_gnulib() {
+ status=$?
+ rm -fr gnulib
+ exit $status
+}
+
+# Get gnulib files.
+
+case ${GNULIB_SRCDIR--} in
+-)
+ if [ ! -d gnulib ]; then
+ echo "$0: getting gnulib files..."
+
+ case ${CVS_AUTH-pserver} in
+ pserver)
+ CVS_PREFIX=':pserver:anonymous@';;
+ ssh)
+ CVS_PREFIX="$CVS_USER${CVS_USER+@}";;
+ *)
+ echo "$0: $CVS_AUTH: Unknown CVS access method" >&2
+ exit 1;;
+ esac
+
+ case $CVS_RSH in
+ '') CVS_RSH=ssh; export CVS_RSH;;
+ esac
+
+ trap cleanup_gnulib 1 2 13 15
+
+ cvs -z3 -q -d ${CVS_PREFIX}cvs.savannah.gnu.org:/cvsroot/gnulib co gnulib ||
+ cleanup_gnulib
+
+ trap - 1 2 13 15
+ fi
+ GNULIB_SRCDIR=gnulib
+esac
+
+gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
+<$gnulib_tool || exit
+
+# Get translations.
+
+get_translations() {
+ subdir=$1
+ domain=$2
+
+ case $WGET_COMMAND in
+ '')
+ echo "$0: wget not available; skipping translations";;
+ ?*)
+ echo "$0: getting translations into $subdir for $domain..." &&
+
+ (cd $subdir && rm -f dummy `ls | sed -n '/\.gmo$/p; /\.po/p'`) &&
+ $WGET_COMMAND -O "$subdir/$domain.html" "$TP_URL$domain" &&
+
+ sed -n 's|.*"http://[^"]*/translation/teams/PO/\([^/"]*\)/'"$domain"'-\([^/"]*\)\.[^."]*\.po".*|\1.\2|p' <"$subdir/$domain.html" |
+ sort -k 1,1 -k 2,2n -k2,2 -k3,3n -k3,3 -k4,4n -k4,4 -k5,5n -k5.5 |
+ awk -F. '
+ { if (lang && $1 != lang) print lang, ver }
+ { lang = $1; ver = substr($0, index($0, ".") + 1) }
+ END { if (lang) print lang, ver }
+ ' | awk -v domain="$domain" -v subdir="$subdir" '
+ {
+ lang = $1
+ ver = $2
+ urlfmt = ""
+ printf "{ $WGET_COMMAND -O %s/%s.po '\'"$TP_PO_URL"'/%s/%s-%s.%s.po'\'' &&\n", subdir, lang, lang, domain, ver, lang
+ printf " msgfmt -c -o /dev/null %s/%s.po || {\n", subdir, lang
+ printf " echo >&2 '\'"$0"': omitting translation for %s'\''\n", lang
+ printf " rm -f %s/%s.po; }; } &&\n", subdir, lang
+ }
+ END { print ":" }
+ ' | WGET_COMMAND="$WGET_COMMAND" sh;;
+ esac &&
+ ls "$subdir"/*.po 2>/dev/null |
+ sed 's|.*/||; s|\.po$||' >"$subdir/LINGUAS" &&
+ rm -f "$subdir/$domain.html"
+}
+
+case $SKIP_PO in
+'')
+ case `wget --help` in
+ *'--no-cache'*)
+ WGET_COMMAND='wget -nv --no-cache';;
+ *'--cache=on/off'*)
+ WGET_COMMAND='wget -nv --cache=off';;
+ *'--non-verbose'*)
+ WGET_COMMAND='wget -nv';;
+ *)
+ WGET_COMMAND='';;
+ esac
+
+ if test -d po; then
+ get_translations po $package || exit
+ fi
+
+ if test -d runtime-po; then
+ get_translations runtime-po $package-runtime || exit
+ fi;;
+esac
+
+symlink_to_gnulib()
+{
+ src=$GNULIB_SRCDIR/$1
+ dst=${2-$1}
+
+ test -f "$src" && {
+ if $copy; then
+ {
+ test ! -h "$dst" || {
+ echo "$0: rm -f $dst" &&
+ rm -f "$dst"
+ }
+ } &&
+ test -f "$dst" &&
+ cmp -s "$src" "$dst" || {
+ echo "$0: cp -fp $src $dst" &&
+ cp -fp "$src" "$dst"
+ }
+ else
+ test -h "$dst" &&
+ src_ls=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i=$1 &&
+ dst_ls=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i=$1 &&
+ test "$src_i" = "$dst_i" || {
+ dot_dots=
+ case $src in
+ /*) ;;
+ *)
+ case /$dst/ in
+ *//* | */../* | */./* | /*/*/*/*/*/)
+ echo >&2 "$0: invalid symlink calculation: $src -> $dst"
+ exit 1;;
+ /*/*/*/*/) dot_dots=../../../;;
+ /*/*/*/) dot_dots=../../;;
+ /*/*/) dot_dots=../;;
+ esac;;
+ esac
+
+ echo "$0: ln -fs $dot_dots$src $dst" &&
+ ln -fs "$dot_dots$src" "$dst"
+ }
+ fi
+ }
+}
+
+cp_mark_as_generated()
+{
+ cp_src=$1
+ cp_dst=$2
+
+ if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then
+ symlink_to_gnulib "$cp_dst"
+ else
+ case $cp_dst in
+ *.[ch]) c1='/* '; c2=' */';;
+ *.texi) c1='@c '; c2= ;;
+ *.m4|*/Make*|Make*) c1='# ' ; c2= ;;
+ *) c1= ; c2= ;;
+ esac
+
+ if test -z "$c1"; then
+ cmp -s "$cp_src" "$cp_dst" || {
+ echo "$0: cp -f $cp_src $cp_dst" &&
+ rm -f "$cp_dst" &&
+ sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst"
+ }
+ else
+ # Copy the file first to get proper permissions if it
+ # doesn't already exist. Then overwrite the copy.
+ cp "$cp_src" "$cp_dst-t" &&
+ (
+ echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
+ echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
+ sed "s!$bt_regex/!!g" "$cp_src"
+ ) > $cp_dst-t &&
+ if cmp -s "$cp_dst-t" "$cp_dst"; then
+ rm -f "$cp_dst-t"
+ else
+ echo "$0: cp $cp_src $cp_dst # with edits" &&
+ mv -f "$cp_dst-t" "$cp_dst"
+ fi
+ fi
+ fi
+}
+
+version_controlled_file() {
+ dir=$1
+ file=$2
+ found=no
+ if test -d CVS; then
+ grep -F "/$file/" $dir/CVS/Entries 2>/dev/null |
+ grep '^/[^/]*/[0-9]' > /dev/null && found=yes
+ elif test -d .git; then
+ git-rm -n "$dir/$file" > /dev/null 2>&1 && found=yes
+ else
+ echo "$0: no version control for $dir/$file?" >&2
+ fi
+ test $found = yes
+}
+
+slurp() {
+ for dir in . `(cd $1 && find * -type d -print)`; do
+ copied=
+ sep=
+ for file in `ls $1/$dir`; do
+ test -d $1/$dir/$file && continue
+ for excluded_file in $excluded_files; do
+ test "$dir/$file" = "$excluded_file" && continue 2
+ done
+ if test $file = Makefile.am; then
+ copied=$copied${sep}gnulib.mk; sep=$nl
+ remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g"
+ sed "$remove_intl" $1/$dir/$file | cmp -s - $dir/gnulib.mk || {
+ echo "$0: Copying $1/$dir/$file to $dir/gnulib.mk ..." &&
+ rm -f $dir/gnulib.mk &&
+ sed "$remove_intl" $1/$dir/$file >$dir/gnulib.mk
+ }
+ elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
+ version_controlled_file $dir $file; then
+ echo "$0: $dir/$file overrides $1/$dir/$file"
+ else
+ copied=$copied$sep$file; sep=$nl
+ if test $file = gettext.m4; then
+ echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
+ rm -f $dir/$file
+ sed '
+ /^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
+ AC_DEFUN([AM_INTL_SUBDIR], [
+ /^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
+ AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
+ $a\
+ AC_DEFUN([gl_LOCK_EARLY], [])
+ ' $1/$dir/$file >$dir/$file
+ else
+ cp_mark_as_generated $1/$dir/$file $dir/$file
+ fi
+ fi || exit
+ done
+
+ for dot_ig in .cvsignore .gitignore; do
+ ig=$dir/$dot_ig
+ if test -n "$copied" && test -f $ig; then
+ insert_sorted_if_absent $ig "$copied"
+ # If an ignored file name ends with _.h, then also add
+ # the name with just ".h". Many gnulib headers are generated,
+ # e.g., stdint_.h -> stdint.h, dirent_.h ->..., etc.
+ f=`echo "$copied"|sed 's/_\.h$/.h/'`
+ insert_sorted_if_absent $ig "$f"
+ fi
+ done
+ done
+}
+
+
+# Create boot temporary directories to import from gnulib and gettext.
+rm -fr $bt $bt2 &&
+mkdir $bt $bt2 || exit
+
+# Import from gnulib.
+
+gnulib_tool_options="\
+ --import\
+ --no-changelog\
+ --aux-dir $bt/$build_aux\
+ --doc-base $bt/doc\
+ --lib $gnulib_name\
+ --m4-base $bt/m4/\
+ --source-base $bt/lib/\
+ --tests-base $bt/tests\
+ --local-dir gl\
+"
+echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
+$gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
+slurp $bt || exit
+
+for file in $gnulib_files; do
+ symlink_to_gnulib $file || exit
+done
+
+
+# Import from gettext.
+with_gettext=yes
+grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \
+ with_gettext=no
+
+if test $with_gettext = yes; then
+ echo "$0: (cd $bt2; autopoint) ..."
+ cp configure.ac $bt2 &&
+ (cd $bt2 && autopoint && rm configure.ac) &&
+ slurp $bt2 $bt || exit
+
+ rm -fr $bt $bt2 || exit
+fi
+
+
+# Reconfigure, getting other files.
+
+for command in \
+ libtool \
+ 'aclocal --force -I m4' \
+ 'autoconf --force' \
+ 'autoheader --force' \
+ 'automake --add-missing --copy --force-missing';
+do
+ if test "$command" = libtool; then
+ grep '^[ ]*AM_PROG_LIBTOOL\>' configure.ac >/dev/null ||
+ continue
+ command='libtoolize -c -f'
+ fi
+ echo "$0: $command ..."
+ $command || exit
+done
+
+
+# Get some extra files from gnulib, overriding existing files.
+
+for file in $gnulib_extra_files; do
+ case $file in
+ */INSTALL) dst=INSTALL;;
+ *) dst=$file;;
+ esac
+ symlink_to_gnulib $file $dst || exit
+done
+
+if test $with_gettext = yes; then
+ # Create gettext configuration.
+ echo "$0: Creating po/Makevars from po/Makevars.template ..."
+ rm -f po/Makevars
+ sed '
+ /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
+ /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
+ /^XGETTEXT_OPTIONS *=/{
+ s/$/ \\/
+ a\
+ '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
+ }
+ ' po/Makevars.template >po/Makevars
+
+ if test -d runtime-po; then
+ # Similarly for runtime-po/Makevars, but not quite the same.
+ rm -f runtime-po/Makevars
+ sed '
+ /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
+ /^subdir *=.*/s/=.*/= runtime-po/
+ /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
+ /^XGETTEXT_OPTIONS *=/{
+ s/$/ \\/
+ a\
+ '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
+ }
+ ' <po/Makevars.template >runtime-po/Makevars
+
+ # Copy identical files from po to runtime-po.
+ (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
+ fi
+fi
+
+echo "$0: done. Now you can run './configure'."
diff --git a/bootstrap.conf b/bootstrap.conf
new file mode 100644
index 0000000..3043321
--- /dev/null
+++ b/bootstrap.conf
@@ -0,0 +1,112 @@
+# Bootstrap configuration.
+
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+
+# We don't need these modules, even though gnulib-tool mistakenly
+# includes them because of gettext and fchdir dependencies.
+avoided_gnulib_modules='
+ --avoid=lock
+ --avoid=size_max
+ --avoid=xsize
+ --avoid=canonicalize-lgpl
+'
+
+# These modules are obsolete and can probably be removed soon,
+# but leave them in for now to minimize changes.
+obsolete_gnulib_modules='
+ atexit free memchr memcmp memcpy memmove memset rename
+ strcspn strtod strtol utime
+'
+
+# gnulib modules used by this package.
+gnulib_modules="
+ $avoided_gnulib_modules
+ $obsolete_gnulib_modules
+ acl alloca announce-gen argmatch assert backupfile base64
+ c-strcase c-strtod
+ c-strtold calloc canon-host canonicalize chown cloexec
+ config-h configmake
+ closeout cycle-check d-ino d-type diacrit dirfd dirname dup2
+ error euidaccess exclude exitfail fchdir fcntl fcntl-safer fdl
+ file-type fileblocks filemode filenamecat fnmatch-gnu
+ fopen-safer
+ fprintftime fsusage ftruncate fts getdate getgroups gethrxtime
+ getline getloadavg getndelim2 getopt getpagesize getpass-gnu
+ gettext gettime gettimeofday getugroups getusershell gnupload
+ group-member hard-locale hash hash-pjw host-os human idcache
+ inttostr inttypes isapipe
+ lchmod lchown lib-ignore linebuffer link-follow
+ long-options lstat malloc mbswidth md5 memcasecmp mempcpy
+ memrchr mkancesdirs mkdir mkdir-p mkstemp mktime modechange
+ mountlist mpsort obstack pathmax perl physmem posixtm posixver putenv
+ quote quotearg raise readlink readtokens readtokens0 readutmp
+ realloc regex rename-dest-slash rmdir rmdir-errno
+ root-dev-ino
+ rpmatch
+ safe-read same
+ save-cwd savedir savewd settime sha1 sig2str ssize_t stat-macros
+ stat-time stdbool stdlib-safer stpcpy strftime
+ strpbrk strtoimax strtoumax strverscmp sys_stat timespec tzset
+ unicodeio unistd-safer unlink-busy unlinkdir unlocked-io
+ uptime userspec utimecmp utimens vasprintf verify version-etc-fsf
+ wcwidth winsz-ioctl winsz-termios xalloc xgetcwd xgethostname
+ xmemcoll xnanosleep xreadlink xreadlink-with-size xstrtod xstrtoimax
+ xstrtol xstrtold xstrtoumax yesno
+"
+
+# Other locale categories that need message catalogs.
+EXTRA_LOCALE_CATEGORIES=LC_TIME
+
+# Additional xgettext options to use. Use "\\\newline" to break lines.
+XGETTEXT_OPTIONS=$XGETTEXT_OPTIONS'\\\
+ --from-code=UTF-8\\\
+ --flag=asprintf:2:c-format --flag=vasprintf:2:c-format\\\
+ --flag=asnprintf:3:c-format --flag=vasnprintf:3:c-format\\\
+ --flag=wrapf:1:c-format\\\
+'
+
+# If "AM_GNU_GETTEXT(external" or "AM_GNU_GETTEXT([external]"
+# appears in configure.ac, exclude some unnecessary files.
+# Without grep's -E option (not portable enough, pre-configure),
+# the following test is ugly. Also, this depends on the existence
+# of configure.ac, not the obsolescent-named configure.in. But if
+# you're using this infrastructure, you should care about such things.
+
+gettext_external=0
+grep '^[ ]*AM_GNU_GETTEXT(external\>' configure.ac > /dev/null &&
+ gettext_external=1
+grep '^[ ]*AM_GNU_GETTEXT(\[external\]' configure.ac > /dev/null &&
+ gettext_external=1
+
+if test $gettext_external = 1; then
+ # Gettext supplies these files, but we don't need them since
+ # we don't have an intl subdirectory.
+ excluded_files='
+ m4/glibc2.m4
+ m4/intdiv0.m4
+ m4/lcmessage.m4
+ m4/lock.m4
+ m4/printf-posix.m4
+ m4/size_max.m4
+ m4/uintmax_t.m4
+ m4/ulonglong.m4
+ m4/visibility.m4
+ m4/xsize.m4
+ '
+fi
diff --git a/build-aux/ChangeLog b/build-aux/ChangeLog
new file mode 100644
index 0000000..c18b1c2
--- /dev/null
+++ b/build-aux/ChangeLog
@@ -0,0 +1,232 @@
+2007-01-30 Jim Meyering <jim@meyering.net>
+
+ * vc-list-files: Select column 2, not 3 (hg-0.9.3's manifest format
+ now has only two columns).
+
+2006-10-14 Jim Meyering <jim@meyering.net>
+
+ * vc-list-files: Don't filter git-ls-files output through cut.
+ Add a comment about cvsu.
+
+2006-08-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * .cvsignore: New file.
+
+2006-08-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * compile, config.guess, config.rpath, config.sub, depcomp:
+ * install-sh, mdate-sh, missing, texinfo.tex:
+ Remove from CVS, since ../bootstrap generates them automatically.
+
+2006-08-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * ChangeLog: Add copyright notice.
+ * vc-list-files: Likewise.
+ * mkinstalldirs: Remove; no longer needed.
+
+2006-08-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * texinfo.tex: Update from gnulib.
+
+2006-07-25 Jim Meyering <jim@meyering.net>
+
+ * vc-list-files: Handle git repositories, too.
+
+2006-07-19 Jim Meyering <jim@meyering.net>
+
+ * vc-list-files: Command line args correspond to an "include"
+ list, not an exclude list.
+
+2006-07-14 Jim Meyering <jim@meyering.net>
+
+ * vc-list-files: New file.
+
+2006-07-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * config.guess, config.sub, install-sh, texinfo.tex:
+ Update from gnulib.
+
+2006-05-29 Jim Meyering <jim@meyering.net>
+
+ * config.guess, config.rpath, config.sub, install-sh:
+ * mkinstalldirs, texinfo.tex: Update from gnulib.
+
+2006-02-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * install-sh: Update from gnulib.
+
+2006-01-31 Jim Meyering <jim@meyering.net>
+
+ * config.guess, missing, texinfo.tex: Update from gnulib.
+
+2006-01-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * config.guess, config.sub, depcomp, texinfo.tex: Sync from gnulib.
+
+2005-12-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * config.guess: Sync from gnulib.
+
+2005-12-07 Jim Meyering <jim@meyering.net>
+
+ * cvsu: New file.
+
+2005-11-12 Jim Meyering <jim@meyering.net>
+
+ * config.guess, install-sh: Update from gnulib.
+
+2005-10-23 Jim Meyering <jim@meyering.net>
+
+ * compile: New file, used to build sha* programs from md5sum.c.
+
+2005-10-13 Jim Meyering <jim@meyering.net>
+
+ * texinfo.tex: Sync from gnulib.
+
+2005-09-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ * install-sh, config.guess: Sync from gnulib.
+
+2005-07-01 Jim Meyering <jim@meyering.net>
+
+ * config.guess, config.sub, mdate-sh, missing, mkinstalldirs:
+ * texinfo.tex: Update from gnulib.
+
+2005-06-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * config.guess, config.sub, texinfo.tex: Sync from gnulib.
+
+2005-05-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * config.guess: Sync from gnulib.
+
+2005-05-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * depcomp, install-sh, mdate-sh, missing, pmkinstalldirs:
+ Sync from gnulib (scriptversion change only).
+
+2005-05-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * config.guess, config.sub: Sync from gnulib.
+
+2005-05-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * config.guess, config.sub, texinfo.tex: Sync from gnulib.
+
+2005-03-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * config.rpath: Sync from gnulib.
+
+2005-02-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * config.guess, config.sub, depcomp, install-sh, mdate-sh, missing,
+ mkinstalldirs: Sync from gnulib.
+
+2005-01-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ * config.sub: Sync from gnulib.
+
+2004-12-17 Jim Meyering <jim@meyering.net>
+
+ * install-sh: Sync from gnulib.
+
+2004-12-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * mdate-sh: Sync from gnulib.
+
+2004-11-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * config.sub, texinfo.tex: Sync from gnulib.
+
+2004-11-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * config.guess, config.sub: Sync from gnulib.
+
+2004-11-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * texinfo.tex: Sync from gnulib.
+
+2004-11-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * texinfo.tex: Sync from gnulib.
+
+2004-10-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * config.guess, install-sh, texinfo.tex: Sync from gnulib.
+
+2004-10-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * config.guess, config.sub, install-sh, missing, texinfo.tex:
+ Sync from gnulib.
+
+2004-09-24 Jim Meyering <jim@meyering.net>
+
+ * cvsu: Remove file. The version of cvsu from the cvsutils package
+ does the same job with --find --type=... options.
+ * cvsu: New file, used by rules in coreutils' Makefile.maint.
+
+2004-08-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * config.guess, config.sub, install-sh, texinfo.tex: Sync from gnulib.
+
+2004-03-30 Paul Eggert <eggert@twinsun.com>
+
+ * config.guess, config.sub, install-sh, texinfo.tex: Sync from gnulib.
+
+2003-08-16 Paul Eggert <eggert@twinsun.com>
+
+ * config.rpath, texinfo.tex: Sync with gnulib.
+
+2003-04-21 Jim Meyering <jim@meyering.net>
+
+ * depcomp: New version, now that this file is on the list
+ in ../Makefile.cfg.
+
+2003-01-12 Jim Meyering <jim@meyering.net>
+
+ Lots of syntactic clean-up, mostly from Karl Berry.
+ * install-sh: Use consistent indentation, two spaces per level.
+ (scriptversion): New variable.
+ Change initializations like `variable=""' to `variable='.
+ (usage): New variable.
+ Use `test', not `['.
+ Use `test -z "$var"', not `[ x"$var" = x ]'.
+ Use `test -n "$var"', not `[ x"$var" != x ]'.
+ Alphabetize case entries.
+ Accept --help and --version options.
+ Remove unnecessary `else :' clauses.
+ Add a `Local variables' eval block to help emacs users update
+ the time-stamp variable added above.
+
+2002-12-20 Jim Meyering <jim@meyering.net>
+
+ * install-sh: Set the execute bit on this file.
+ Reported by Vin Shelton.
+
+2002-11-09 Jim Meyering <jim@meyering.net>
+
+ Make it work even when names contain spaces or shell metachars.
+ * install-sh: Write diagnostics to stderr, not stdout.
+ Normalize spacing in diagnostics: use one space (not two, and not a TAB)
+ after the leading `install:'.
+ Add double quotes around `$src' here: $doit $instcmd "$src" "$dsttmp"
+
+ Merge in some changes from the version in automake.
+ * install-sh: Remove unnecessary quotes around `case' argument.
+ Use `[ cond1 ] || [ cond2 ]' rather than `[ cond1 -o cond2 ]'.
+ Use `:' rather than `true'.
+
+2002-02-17 Jim Meyering <jim@meyering.net>
+
+ * config.guess (main): Don't use `head -1'; it's no longer portable.
+ Use `sed 1q' instead.
+
+
+ -----
+
+ Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software
+ Foundation, Inc.
+
+ Copying and distribution of this file, with or without
+ modification, are permitted provided the copyright notice
+ and this notice are preserved.
diff --git a/build-aux/compile b/build-aux/compile
new file mode 100755
index 0000000..1b1d232
--- /dev/null
+++ b/build-aux/compile
@@ -0,0 +1,142 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand `-c -o'.
+
+scriptversion=2005-05-14.22
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case $1 in
+ '')
+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand `-c -o'.
+Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file `INSTALL'.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "compile $scriptversion"
+ exit $?
+ ;;
+esac
+
+ofile=
+cfile=
+eat=
+
+for arg
+do
+ if test -n "$eat"; then
+ eat=
+ else
+ case $1 in
+ -o)
+ # configure might choose to run compile as `compile cc -o foo foo.c'.
+ # So we strip `-o arg' only if arg is an object.
+ eat=1
+ case $2 in
+ *.o | *.obj)
+ ofile=$2
+ ;;
+ *)
+ set x "$@" -o "$2"
+ shift
+ ;;
+ esac
+ ;;
+ *.c)
+ cfile=$1
+ set x "$@" "$1"
+ shift
+ ;;
+ *)
+ set x "$@" "$1"
+ shift
+ ;;
+ esac
+ fi
+ shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+ # If no `-o' option was seen then we might have been invoked from a
+ # pattern rule where we don't need one. That is ok -- this is a
+ # normal compilation that the losing compiler can handle. If no
+ # `.c' file was seen then we are probably linking. That is also
+ # ok.
+ exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use `[/.-]' here to ensure that we don't use the same name
+# that we are using for the .o file. Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
+while true; do
+ if mkdir "$lockdir" >/dev/null 2>&1; then
+ break
+ fi
+ sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+ mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+ mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/build-aux/config.guess b/build-aux/config.guess
new file mode 100755
index 0000000..0f0fe71
--- /dev/null
+++ b/build-aux/config.guess
@@ -0,0 +1,1516 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+# Inc.
+
+timestamp='2007-03-06'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub. If it succeeds, it prints the system name on stdout, and
+# exits with 0. Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int x;" > $dummy.c ;
+ for c in cc gcc c89 c99 ; do
+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found ;
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ sysctl="sysctl -n hw.machine_arch"
+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+ case "${UNAME_MACHINE_ARCH}" in
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently, or will in the future.
+ case "${UNAME_MACHINE_ARCH}" in
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ eval $set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep __ELF__ >/dev/null
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "${UNAME_VERSION}" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+ exit ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit ;;
+ *:SolidBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ exit ;;
+ macppc:MirBSD:*:*)
+ echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ ;;
+ *5.*)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE="alpha" ;;
+ "EV5 (21164)")
+ UNAME_MACHINE="alphaev5" ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE="alphaev56" ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE="alphapca56" ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE="alphapca57" ;;
+ "EV6 (21264)")
+ UNAME_MACHINE="alphaev6" ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE="alphaev67" ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE="alphaev69" ;;
+ "EV7 (21364)")
+ UNAME_MACHINE="alphaev7" ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE="alphaev79" ;;
+ esac
+ # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+ exit ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+ exit ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit ;;
+ arm:riscos:*:*|arm:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit ;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7; exit ;;
+ esac ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ i86pc:SunOS:5.*:*)
+ echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ exit ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ case "`/bin/arch`" in
+ sun3)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ ;;
+ sun4)
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+ exit ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c &&
+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`$dummy $dummyarg` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ then
+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+ [ ${TARGET_BINARY_INTERFACE}x = x ]
+ then
+ echo m88k-dg-dgux${UNAME_RELEASE}
+ else
+ echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+ exit ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ exit ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+ exit ;;
+ *:AIX:*:[45])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+ 9000/31? ) HP_ARCH=m68000 ;;
+ 9000/[34]?? ) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if [ "${HP_ARCH}" = "" ]; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+ eval $set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep __LP64__ >/dev/null
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo unknown-hitachi-hiuxwe2
+ exit ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+ exit ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+ exit ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:FreeBSD:*:*)
+ case ${UNAME_MACHINE} in
+ pc98)
+ echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ amd64)
+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ *)
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ esac
+ exit ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit ;;
+ *:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit ;;
+ *:Interix*:[3456]*)
+ case ${UNAME_MACHINE} in
+ x86)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ EM64T | authenticamd)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ esac ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+ exit ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+ exit ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ exit ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit ;;
+ arm*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ avr32*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ cris:Linux:*:*)
+ echo cris-axis-linux-gnu
+ exit ;;
+ crisv32:Linux:*:*)
+ echo crisv32-axis-linux-gnu
+ exit ;;
+ frv:Linux:*:*)
+ echo frv-unknown-linux-gnu
+ exit ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ mips:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips
+ #undef mipsel
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mipsel
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^CPU/{
+ s: ::g
+ p
+ }'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips64
+ #undef mips64el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mips64el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips64
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^CPU/{
+ s: ::g
+ p
+ }'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ or32:Linux:*:*)
+ echo or32-unknown-linux-gnu
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
+ exit ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ vax:Linux:*:*)
+ echo ${UNAME_MACHINE}-dec-linux-gnu
+ exit ;;
+ x86_64:Linux:*:*)
+ echo x86_64-unknown-linux-gnu
+ exit ;;
+ xtensa:Linux:*:*)
+ echo xtensa-unknown-linux-gnu
+ exit ;;
+ i*86:Linux:*:*)
+ # The BFD linker knows what the default object file format is, so
+ # first see if it will tell us. cd to the root directory to prevent
+ # problems with other programs or directories called `ld' in the path.
+ # Set LC_ALL=C to ensure ld outputs messages in English.
+ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+ | sed -ne '/supported targets:/!d
+ s/[ ][ ]*/ /g
+ s/.*supported targets: *//
+ s/ .*//
+ p'`
+ case "$ld_supported_targets" in
+ elf32-i386)
+ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+ ;;
+ a.out-i386-linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+ exit ;;
+ coff-i386)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+ exit ;;
+ "")
+ # Either a pre-BFD a.out linker (linux-gnuoldld) or
+ # one that does not give us useful --help.
+ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+ exit ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <features.h>
+ #ifdef __ELF__
+ # ifdef __GLIBC__
+ # if __GLIBC__ >= 2
+ LIBC=gnu
+ # else
+ LIBC=gnulibc1
+ # endif
+ # else
+ LIBC=gnulibc1
+ # endif
+ #else
+ #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+ LIBC=gnu
+ #else
+ LIBC=gnuaout
+ #endif
+ #endif
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^LIBC/{
+ s: ::g
+ p
+ }'`"
+ test x"${LIBC}" != x && {
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit
+ }
+ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+ ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ exit ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ exit ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i386.
+ echo i386-pc-msdosdjgpp
+ exit ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+ exit ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ echo ${UNAME_MACHINE}-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo ${UNAME_MACHINE}-stratus-vos
+ exit ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+ exit ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+ exit ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-7:SUPER-UX:*:*)
+ echo sx7-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8:SUPER-UX:*:*)
+ echo sx8-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-nec-superux${UNAME_RELEASE}
+ exit ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ exit ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit ;;
+ NSE-?:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "$cputype" = "386"; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
+ i*86:rdos:*:*)
+ echo ${UNAME_MACHINE}-pc-rdos
+ exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+ printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+ printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+# include <sys/param.h>
+# if defined (BSD)
+# if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+# else
+# if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# endif
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# else
+ printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+ case `getsysinfo -f cpu_type` in
+ c1*)
+ echo c1-convex-bsd
+ exit ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ c34*)
+ echo c34-convex-bsd
+ exit ;;
+ c38*)
+ echo c38-convex-bsd
+ exit ;;
+ c4*)
+ echo c4-convex-bsd
+ exit ;;
+ esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+and
+ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/build-aux/config.rpath b/build-aux/config.rpath
new file mode 100755
index 0000000..e082db6
--- /dev/null
+++ b/build-aux/config.rpath
@@ -0,0 +1,660 @@
+#! /bin/sh
+# Output a system dependent set of variables, describing how to set the
+# run time search path of shared libraries in an executable.
+#
+# Copyright 1996-2006 Free Software Foundation, Inc.
+# Taken from GNU libtool, 2001
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+#
+# The first argument passed to this file is the canonical host specification,
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
+# should be set by the caller.
+#
+# The set of defined variables is at the end of this script.
+
+# Known limitations:
+# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
+# than 256 bytes, otherwise the compiler driver will dump core. The only
+# known workaround is to choose shorter directory names for the build
+# directory and/or the installation directory.
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+shrext=.so
+
+host="$1"
+host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+# Code taken from libtool.m4's _LT_CC_BASENAME.
+
+for cc_temp in $CC""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
+
+# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
+
+wl=
+if test "$GCC" = yes; then
+ wl='-Wl,'
+else
+ case "$host_os" in
+ aix*)
+ wl='-Wl,'
+ ;;
+ darwin*)
+ case $cc_basename in
+ xlc*)
+ wl='-Wl,'
+ ;;
+ esac
+ ;;
+ mingw* | pw32* | os2*)
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ wl='-Wl,'
+ ;;
+ irix5* | irix6* | nonstopux*)
+ wl='-Wl,'
+ ;;
+ newsos6)
+ ;;
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ wl='-Wl,'
+ ;;
+ pgcc | pgf77 | pgf90)
+ wl='-Wl,'
+ ;;
+ ccc*)
+ wl='-Wl,'
+ ;;
+ como)
+ wl='-lopt='
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ wl='-Wl,'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ osf3* | osf4* | osf5*)
+ wl='-Wl,'
+ ;;
+ sco3.2v5*)
+ ;;
+ solaris*)
+ wl='-Wl,'
+ ;;
+ sunos4*)
+ wl='-Qoption ld '
+ ;;
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ wl='-Wl,'
+ ;;
+ sysv4*MP*)
+ ;;
+ unicos*)
+ wl='-Wl,'
+ ;;
+ uts4*)
+ ;;
+ esac
+fi
+
+# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
+
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+
+case "$host_os" in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ # Unlike libtool, we use -rpath here, not --rpath, since the documented
+ # option of GNU ld is called -rpath, not --rpath.
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ case "$host_os" in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ fi
+ ;;
+ amigaos*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we cannot use
+ # them.
+ ld_shlibs=no
+ ;;
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ cygwin* | mingw* | pw32*)
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ interix3*)
+ hardcode_direct=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ netbsd*)
+ ;;
+ solaris*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
+ sunos4*)
+ hardcode_direct=yes
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ if test "$ld_shlibs" = no; then
+ hardcode_libdir_flag_spec=
+ fi
+else
+ case "$host_os" in
+ aix3*)
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ else
+ aix_use_runtimelinking=no
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+ fi
+ hardcode_direct=yes
+ hardcode_libdir_separator=':'
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct=yes
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ ;;
+ esac
+ fi
+ # Begin _LT_AC_SYS_LIBPATH_AIX.
+ echo 'int main () { return 0; }' > conftest.c
+ ${CC} ${LDFLAGS} conftest.c -o conftest
+ aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+ if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+ fi
+ if test -z "$aix_libpath"; then
+ aix_libpath="/usr/lib:/lib"
+ fi
+ rm -f conftest.c conftest
+ # End _LT_AC_SYS_LIBPATH_AIX.
+ if test "$aix_use_runtimelinking" = yes; then
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ else
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ fi
+ fi
+ ;;
+ amigaos*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs=no
+ ;;
+ bsdi[45]*)
+ ;;
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ libext=lib
+ ;;
+ darwin* | rhapsody*)
+ hardcode_direct=no
+ if test "$GCC" = yes ; then
+ :
+ else
+ case $cc_basename in
+ xlc*)
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+ fi
+ ;;
+ dgux*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+ freebsd1*)
+ ld_shlibs=no
+ ;;
+ freebsd2.2*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ freebsd2*)
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ hpux9*)
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ hpux10*)
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+ hpux11*)
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct=no
+ ;;
+ *)
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+ irix5* | irix6* | nonstopux*)
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ netbsd*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ newsos6)
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ openbsd*)
+ hardcode_direct=yes
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ else
+ case "$host_os" in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ osf3*)
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ osf4* | osf5*)
+ if test "$GCC" = yes; then
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ # Both cc and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ hardcode_libdir_separator=:
+ ;;
+ solaris*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ sunos4*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ ;;
+ sysv4)
+ case $host_vendor in
+ sni)
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ hardcode_direct=no
+ ;;
+ motorola)
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ ;;
+ sysv4.3*)
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ ld_shlibs=yes
+ fi
+ ;;
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ ;;
+ sysv5* | sco3.2v5* | sco5v6*)
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator=':'
+ ;;
+ uts4*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+fi
+
+# Check dynamic linker characteristics
+# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER.
+# Unlike libtool.m4, here we don't care about _all_ names of the library, but
+# only about the one the linker finds when passed -lNAME. This is the last
+# element of library_names_spec in libtool.m4, or possibly two of them if the
+# linker has special search rules.
+library_names_spec= # the last element of library_names_spec in libtool.m4
+libname_spec='lib$name'
+case "$host_os" in
+ aix3*)
+ library_names_spec='$libname.a'
+ ;;
+ aix4* | aix5*)
+ library_names_spec='$libname$shrext'
+ ;;
+ amigaos*)
+ library_names_spec='$libname.a'
+ ;;
+ beos*)
+ library_names_spec='$libname$shrext'
+ ;;
+ bsdi[45]*)
+ library_names_spec='$libname$shrext'
+ ;;
+ cygwin* | mingw* | pw32*)
+ shrext=.dll
+ library_names_spec='$libname.dll.a $libname.lib'
+ ;;
+ darwin* | rhapsody*)
+ shrext=.dylib
+ library_names_spec='$libname$shrext'
+ ;;
+ dgux*)
+ library_names_spec='$libname$shrext'
+ ;;
+ freebsd1*)
+ ;;
+ kfreebsd*-gnu)
+ library_names_spec='$libname$shrext'
+ ;;
+ freebsd* | dragonfly*)
+ case "$host_os" in
+ freebsd[123]*)
+ library_names_spec='$libname$shrext$versuffix' ;;
+ *)
+ library_names_spec='$libname$shrext' ;;
+ esac
+ ;;
+ gnu*)
+ library_names_spec='$libname$shrext'
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $host_cpu in
+ ia64*)
+ shrext=.so
+ ;;
+ hppa*64*)
+ shrext=.sl
+ ;;
+ *)
+ shrext=.sl
+ ;;
+ esac
+ library_names_spec='$libname$shrext'
+ ;;
+ interix3*)
+ library_names_spec='$libname$shrext'
+ ;;
+ irix5* | irix6* | nonstopux*)
+ library_names_spec='$libname$shrext'
+ case "$host_os" in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
+ *) libsuff= shlibsuff= ;;
+ esac
+ ;;
+ esac
+ ;;
+ linux*oldld* | linux*aout* | linux*coff*)
+ ;;
+ linux*)
+ library_names_spec='$libname$shrext'
+ ;;
+ knetbsd*-gnu)
+ library_names_spec='$libname$shrext'
+ ;;
+ netbsd*)
+ library_names_spec='$libname$shrext'
+ ;;
+ newsos6)
+ library_names_spec='$libname$shrext'
+ ;;
+ nto-qnx*)
+ library_names_spec='$libname$shrext'
+ ;;
+ openbsd*)
+ library_names_spec='$libname$shrext$versuffix'
+ ;;
+ os2*)
+ libname_spec='$name'
+ shrext=.dll
+ library_names_spec='$libname.a'
+ ;;
+ osf3* | osf4* | osf5*)
+ library_names_spec='$libname$shrext'
+ ;;
+ solaris*)
+ library_names_spec='$libname$shrext'
+ ;;
+ sunos4*)
+ library_names_spec='$libname$shrext$versuffix'
+ ;;
+ sysv4 | sysv4.3*)
+ library_names_spec='$libname$shrext'
+ ;;
+ sysv4*MP*)
+ library_names_spec='$libname$shrext'
+ ;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ library_names_spec='$libname$shrext'
+ ;;
+ uts4*)
+ library_names_spec='$libname$shrext'
+ ;;
+esac
+
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
+shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
+escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+
+LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
+
+# How to pass a linker flag through the compiler.
+wl="$escaped_wl"
+
+# Static library suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally "so").
+shlibext="$shlibext"
+
+# Format of library name prefix.
+libname_spec="$escaped_libname_spec"
+
+# Library names that the linker finds when passed -lNAME.
+library_names_spec="$escaped_library_names_spec"
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator="$hardcode_libdir_separator"
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct="$hardcode_direct"
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L="$hardcode_minus_L"
+
+EOF
diff --git a/build-aux/config.sub b/build-aux/config.sub
new file mode 100755
index 0000000..5defff6
--- /dev/null
+++ b/build-aux/config.sub
@@ -0,0 +1,1622 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+# Inc.
+
+timestamp='2007-01-18'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine. It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support. The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit ;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+ *)
+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+ if [ $basic_machine != $1 ]
+ then os=`echo $1 | sed 's/.*-/-/'`
+ else os=; fi
+ ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work. We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+ -sun*os*)
+ # Prevent following clause from handling this invalid input.
+ ;;
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+ -apple | -axis | -knuth | -cray)
+ os=
+ basic_machine=$1
+ ;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -sco6)
+ os=-sco5v6
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco4)
+ os=-sco3.2v4
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2v[4-9]*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -udk*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -isc)
+ os=-isc2.2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -clix*)
+ basic_machine=clipper-intergraph
+ ;;
+ -isc*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -lynx*)
+ os=-lynxos
+ ;;
+ -ptx*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ ;;
+ -windowsnt*)
+ os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ ;;
+ -psos*)
+ os=-psos
+ ;;
+ -mint | -mint[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+ # Recognize the basic CPU types without company name.
+ # Some are omitted here because they have special meanings below.
+ 1750a | 580 \
+ | a29k \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | bfin \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | fido | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+ | m32c | m32r | m32rle | m68000 | m68k | m88k \
+ | maxq | mb | microblaze | mcore | mep \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64vr | mips64vrel \
+ | mips64orion | mips64orionel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+ | mt \
+ | msp430 \
+ | nios | nios2 \
+ | ns16k | ns32k \
+ | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+ | score \
+ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+ | spu | strongarm \
+ | tahoe | thumb | tic4x | tic80 | tron \
+ | v850 | v850e \
+ | we32k \
+ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+ | z8k)
+ basic_machine=$basic_machine-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12)
+ # Motorola 68HC11/12.
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+ ms1)
+ basic_machine=mt-unknown
+ ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ basic_machine=$basic_machine-pc
+ ;;
+ # Object if more than one company name word.
+ *-*-*)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+ # Recognize the basic CPU types with company name.
+ 580-* \
+ | a29k-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | avr-* | avr32-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
+ | m32c-* | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | mt-* \
+ | msp430-* \
+ | nios-* | nios2-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tron-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | xstormy16-* | xtensa-* \
+ | ymp-* \
+ | z8k-*)
+ ;;
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
+ 386bsd)
+ basic_machine=i386-unknown
+ os=-bsd
+ ;;
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ basic_machine=m68000-att
+ ;;
+ 3b*)
+ basic_machine=we32k-att
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
+ alliant | fx80)
+ basic_machine=fx80-alliant
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=-bsd
+ ;;
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+ ;;
+ amiga | amiga-*)
+ basic_machine=m68k-unknown
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=-amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=-sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=-sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=-bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=-bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=-bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=-bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=-bsd
+ ;;
+ cray | j90)
+ basic_machine=j90-cray
+ os=-unicos
+ ;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16c)
+ basic_machine=cr16c-unknown
+ os=-elf
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ crisv32 | crisv32-* | etraxfs*)
+ basic_machine=crisv32-axis
+ ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+ crx)
+ basic_machine=crx-unknown
+ os=-elf
+ ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ ;;
+ decsystem10* | dec10*)
+ basic_machine=pdp10-dec
+ os=-tops10
+ ;;
+ decsystem20* | dec20*)
+ basic_machine=pdp10-dec
+ os=-tops20
+ ;;
+ delta | 3300 | motorola-3300 | motorola-delta \
+ | 3300-motorola | delta-motorola)
+ basic_machine=m68k-motorola
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+ ;;
+ dpx2* | dpx2*-bull)
+ basic_machine=m68k-bull
+ os=-sysv3
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=-ebmon
+ ;;
+ elxsi)
+ basic_machine=elxsi-elxsi
+ os=-bsd
+ ;;
+ encore | umax | mmax)
+ basic_machine=ns32k-encore
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
+ ;;
+ fx2800)
+ basic_machine=i860-alliant
+ ;;
+ genix)
+ basic_machine=ns32k-ns
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=-sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
+ ;;
+ h3050r* | hiux*)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=-hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=-xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=-hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=-sysv3
+ ;;
+ hp300-*)
+ basic_machine=m68k-hp
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=-bsd
+ ;;
+ hp300hpux)
+ basic_machine=m68k-hp
+ os=-hpux
+ ;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ basic_machine=m68000-hp
+ ;;
+ hp9k3[2-9][0-9])
+ basic_machine=m68k-hp
+ ;;
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hppa-next)
+ os=-nextstep3
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=-osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=-proelf
+ ;;
+ i370-ibm* | ibm*)
+ basic_machine=i370-ibm
+ ;;
+# I'm not sure what "Sysv32" means. Should this be sysv3.2?
+ i*86v32)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv32
+ ;;
+ i*86v4*)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv4
+ ;;
+ i*86v)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv
+ ;;
+ i*86sol2)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-solaris2
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=-mach
+ ;;
+ i386-vsta | vsta)
+ basic_machine=i386-unknown
+ os=-vsta
+ ;;
+ iris | iris4d)
+ basic_machine=mips-sgi
+ case $os in
+ -irix*)
+ ;;
+ *)
+ os=-irix4
+ ;;
+ esac
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=-sysv
+ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ mingw32)
+ basic_machine=i386-pc
+ os=-mingw32
+ ;;
+ miniframe)
+ basic_machine=m68000-convergent
+ ;;
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+ mips3*-*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ ;;
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=-morphos
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+ ms1-*)
+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=-sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-unknown
+ os=-netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=-linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=-newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=-newsos
+ ;;
+ news-3600 | risc-news)
+ basic_machine=mips-sony
+ os=-newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=-sysv
+ ;;
+ next | m*-next )
+ basic_machine=m68k-next
+ case $os in
+ -nextstep* )
+ ;;
+ -ns2*)
+ os=-nextstep2
+ ;;
+ *)
+ os=-nextstep3
+ ;;
+ esac
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=-cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=-cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=-nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=-mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=-nonstopux
+ ;;
+ np1)
+ basic_machine=np1-gould
+ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ openrisc | openrisc-*)
+ basic_machine=or32-unknown
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
+ ;;
+ pa-hitachi)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=-osf
+ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ pc98)
+ basic_machine=i386-pc
+ ;;
+ pc98-*)
+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
+ basic_machine=i686-pc
+ ;;
+ pentiumii | pentium2 | pentiumiii | pentium3)
+ basic_machine=i686-pc
+ ;;
+ pentium4)
+ basic_machine=i786-pc
+ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium4-*)
+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pn)
+ basic_machine=pn-gould
+ ;;
+ power) basic_machine=power-ibm
+ ;;
+ ppc) basic_machine=powerpc-unknown
+ ;;
+ ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppcle | powerpclittle | ppc-le | powerpc-little)
+ basic_machine=powerpcle-unknown
+ ;;
+ ppcle-* | powerpclittle-*)
+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64) basic_machine=powerpc64-unknown
+ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ basic_machine=powerpc64le-unknown
+ ;;
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ps2)
+ basic_machine=i386-ibm
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+ rdos)
+ basic_machine=i386-pc
+ os=-rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ rm[46]00)
+ basic_machine=mips-siemens
+ ;;
+ rtpc | rtpc-*)
+ basic_machine=romp-ibm
+ ;;
+ s390 | s390-*)
+ basic_machine=s390-ibm
+ ;;
+ s390x | s390x-*)
+ basic_machine=s390x-ibm
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ sb1)
+ basic_machine=mipsisa64sb1-unknown
+ ;;
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
+ ;;
+ sde)
+ basic_machine=mipsisa32-sde
+ os=-elf
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+ sh)
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+ sh5el)
+ basic_machine=sh5le-unknown
+ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+ sparclite-wrs | simso-wrs)
+ basic_machine=sparclite-wrs
+ os=-vxworks
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=-sysv2
+ ;;
+ spur)
+ basic_machine=spur-unknown
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=-sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=-sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=-sunos4
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=-sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=-sunos4
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=-sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=-sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=-solaris2
+ ;;
+ sun3 | sun3-*)
+ basic_machine=m68k-sun
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=-dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=-unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=-unicos
+ ;;
+ tic54x | c54x*)
+ basic_machine=tic54x-unknown
+ os=-coff
+ ;;
+ tic55x | c55x*)
+ basic_machine=tic55x-unknown
+ os=-coff
+ ;;
+ tic6x | c6x*)
+ basic_machine=tic6x-unknown
+ os=-coff
+ ;;
+ tx39)
+ basic_machine=mipstx39-unknown
+ ;;
+ tx39el)
+ basic_machine=mipstx39el-unknown
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=-tops20
+ ;;
+ tower | tower-32)
+ basic_machine=m68k-ncr
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=-sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=-sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=-vms
+ ;;
+ vpp*|vx|vx-*)
+ basic_machine=f301-fujitsu
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=-vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=-vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=-vxworks
+ ;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ z8k-*-coff)
+ basic_machine=z8k-unknown
+ os=-sim
+ ;;
+ none)
+ basic_machine=none-none
+ os=-none
+ ;;
+
+# Here we handle the default manufacturer of certain CPU types. It is in
+# some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ basic_machine=hppa1.1-winbond
+ ;;
+ op50n)
+ basic_machine=hppa1.1-oki
+ ;;
+ op60c)
+ basic_machine=hppa1.1-oki
+ ;;
+ romp)
+ basic_machine=romp-ibm
+ ;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
+ rs6000)
+ basic_machine=rs6000-ibm
+ ;;
+ vax)
+ basic_machine=vax-dec
+ ;;
+ pdp10)
+ # there are many clones, so DEC is not a safe bet
+ basic_machine=pdp10-unknown
+ ;;
+ pdp11)
+ basic_machine=pdp11-dec
+ ;;
+ we32k)
+ basic_machine=we32k-att
+ ;;
+ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+ basic_machine=cydra-cydrome
+ ;;
+ orion)
+ basic_machine=orion-highlevel
+ ;;
+ orion105)
+ basic_machine=clipper-highlevel
+ ;;
+ mac | mpw | mac-mpw)
+ basic_machine=m68k-apple
+ ;;
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+ *-unknown)
+ # Make sure to match an already-canonicalized machine name.
+ ;;
+ *)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+ *-digital*)
+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+ ;;
+ *-commodore*)
+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ ;;
+ *)
+ ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+ # First match some system type aliases
+ # that might get confused with valid system types.
+ # -solaris* is a basic system type, with this one exception.
+ -solaris1 | -solaris1.*)
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ ;;
+ -solaris)
+ os=-solaris2
+ ;;
+ -svr4*)
+ os=-sysv4
+ ;;
+ -unixware*)
+ os=-sysv4.2uw
+ ;;
+ -gnu/linux*)
+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ ;;
+ # First accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST END IN A *, to match a version number.
+ # -sysv* is not here because it comes later, after sysvr4.
+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+ | -openbsd* | -solidbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+ | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i*86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto-qnx*)
+ ;;
+ -nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+ -linux-dietlibc)
+ os=-linux-dietlibc
+ ;;
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+ -sunos5*)
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ ;;
+ -sunos6*)
+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ ;;
+ -opened*)
+ os=-openedition
+ ;;
+ -os400*)
+ os=-os400
+ ;;
+ -wince*)
+ os=-wince
+ ;;
+ -osfrose*)
+ os=-osfrose
+ ;;
+ -osf*)
+ os=-osf
+ ;;
+ -utek*)
+ os=-bsd
+ ;;
+ -dynix*)
+ os=-bsd
+ ;;
+ -acis*)
+ os=-aos
+ ;;
+ -atheos*)
+ os=-atheos
+ ;;
+ -syllable*)
+ os=-syllable
+ ;;
+ -386bsd)
+ os=-bsd
+ ;;
+ -ctix* | -uts*)
+ os=-sysv
+ ;;
+ -nova*)
+ os=-rtmk-nova
+ ;;
+ -ns2 )
+ os=-nextstep2
+ ;;
+ -nsk*)
+ os=-nsk
+ ;;
+ # Preserve the version number of sinix5.
+ -sinix5.*)
+ os=`echo $os | sed -e 's|sinix|sysv|'`
+ ;;
+ -sinix*)
+ os=-sysv4
+ ;;
+ -tpf*)
+ os=-tpf
+ ;;
+ -triton*)
+ os=-sysv3
+ ;;
+ -oss*)
+ os=-sysv3
+ ;;
+ -svr4)
+ os=-sysv4
+ ;;
+ -svr3)
+ os=-sysv3
+ ;;
+ -sysvr4)
+ os=-sysv4
+ ;;
+ # This must come after -sysvr4.
+ -sysv*)
+ ;;
+ -ose*)
+ os=-ose
+ ;;
+ -es1800*)
+ os=-ose
+ ;;
+ -xenix)
+ os=-xenix
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
+ ;;
+ -aros*)
+ os=-aros
+ ;;
+ -kaos*)
+ os=-kaos
+ ;;
+ -zvmoe)
+ os=-zvmoe
+ ;;
+ -none)
+ ;;
+ *)
+ # Get rid of the `-' at the beginning of $os.
+ os=`echo $os | sed 's/[^-]*-//'`
+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system. Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+ score-*)
+ os=-elf
+ ;;
+ spu-*)
+ os=-elf
+ ;;
+ *-acorn)
+ os=-riscix1.2
+ ;;
+ arm*-rebel)
+ os=-linux
+ ;;
+ arm*-semi)
+ os=-aout
+ ;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+ ;;
+ pdp11-*)
+ os=-none
+ ;;
+ *-dec | vax-*)
+ os=-ultrix4.2
+ ;;
+ m68*-apollo)
+ os=-domain
+ ;;
+ i386-sun)
+ os=-sunos4.0.2
+ ;;
+ m68000-sun)
+ os=-sunos3
+ # This also exists in the configure program, but was not the
+ # default.
+ # os=-sunos4
+ ;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ mep-*)
+ os=-elf
+ ;;
+ mips*-cisco)
+ os=-elf
+ ;;
+ mips*-*)
+ os=-elf
+ ;;
+ or32-*)
+ os=-coff
+ ;;
+ *-tti) # must be before sparc entry or we get the wrong os.
+ os=-sysv3
+ ;;
+ sparc-* | *-sun)
+ os=-sunos4.1.1
+ ;;
+ *-be)
+ os=-beos
+ ;;
+ *-haiku)
+ os=-haiku
+ ;;
+ *-ibm)
+ os=-aix
+ ;;
+ *-knuth)
+ os=-mmixware
+ ;;
+ *-wec)
+ os=-proelf
+ ;;
+ *-winbond)
+ os=-proelf
+ ;;
+ *-oki)
+ os=-proelf
+ ;;
+ *-hp)
+ os=-hpux
+ ;;
+ *-hitachi)
+ os=-hiux
+ ;;
+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+ os=-sysv
+ ;;
+ *-cbm)
+ os=-amigaos
+ ;;
+ *-dg)
+ os=-dgux
+ ;;
+ *-dolphin)
+ os=-sysv3
+ ;;
+ m68k-ccur)
+ os=-rtu
+ ;;
+ m88k-omron*)
+ os=-luna
+ ;;
+ *-next )
+ os=-nextstep
+ ;;
+ *-sequent)
+ os=-ptx
+ ;;
+ *-crds)
+ os=-unos
+ ;;
+ *-ns)
+ os=-genix
+ ;;
+ i370-*)
+ os=-mvs
+ ;;
+ *-next)
+ os=-nextstep3
+ ;;
+ *-gould)
+ os=-sysv
+ ;;
+ *-highlevel)
+ os=-bsd
+ ;;
+ *-encore)
+ os=-bsd
+ ;;
+ *-sgi)
+ os=-irix
+ ;;
+ *-siemens)
+ os=-sysv4
+ ;;
+ *-masscomp)
+ os=-rtu
+ ;;
+ f30[01]-fujitsu | f700-fujitsu)
+ os=-uxpv
+ ;;
+ *-rom68k)
+ os=-coff
+ ;;
+ *-*bug)
+ os=-coff
+ ;;
+ *-apple)
+ os=-macos
+ ;;
+ *-atari*)
+ os=-mint
+ ;;
+ *)
+ os=-none
+ ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer. We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+ *-unknown)
+ case $os in
+ -riscix*)
+ vendor=acorn
+ ;;
+ -sunos*)
+ vendor=sun
+ ;;
+ -aix*)
+ vendor=ibm
+ ;;
+ -beos*)
+ vendor=be
+ ;;
+ -hpux*)
+ vendor=hp
+ ;;
+ -mpeix*)
+ vendor=hp
+ ;;
+ -hiux*)
+ vendor=hitachi
+ ;;
+ -unos*)
+ vendor=crds
+ ;;
+ -dgux*)
+ vendor=dg
+ ;;
+ -luna*)
+ vendor=omron
+ ;;
+ -genix*)
+ vendor=ns
+ ;;
+ -mvs* | -opened*)
+ vendor=ibm
+ ;;
+ -os400*)
+ vendor=ibm
+ ;;
+ -ptx*)
+ vendor=sequent
+ ;;
+ -tpf*)
+ vendor=ibm
+ ;;
+ -vxsim* | -vxworks* | -windiss*)
+ vendor=wrs
+ ;;
+ -aux*)
+ vendor=apple
+ ;;
+ -hms*)
+ vendor=hitachi
+ ;;
+ -mpw* | -macos*)
+ vendor=apple
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ vendor=atari
+ ;;
+ -vos*)
+ vendor=stratus
+ ;;
+ esac
+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+ ;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/build-aux/cvsu b/build-aux/cvsu
new file mode 100755
index 0000000..03e3d06
--- /dev/null
+++ b/build-aux/cvsu
@@ -0,0 +1,514 @@
+#! /usr/bin/perl -w
+
+# cvsu - do a quick check to see what files are out of date.
+#
+# Copyright (C) 2000-2005 Pavel Roskin <proski@gnu.org>
+# Initially written by Tom Tromey <tromey@cygnus.com>
+# Completely rewritten by Pavel Roskin <proski@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 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.
+
+
+require 5.004;
+use Getopt::Long;
+use File::Basename;
+use Time::Local;
+use strict;
+
+use vars qw($list_types %messages %options @batch_list $batch_cmd
+ $no_recurse $explain_type $find_mode $short_print
+ $no_cvsignore $nolinks $file $single_filename $curr_dir
+ @common_ignores $ignore_rx %entries %subdirs %removed);
+
+use constant SUBDIR_FOUND => 1;
+use constant SUBDIR_CVS => 2;
+
+# This list comes from the CVS manual.
+use constant STANDARD_IGNORES =>
+ ('RCS', 'SCCS', 'CVS', 'CVS.adm', 'RCSLOG', 'cvslog.*', 'tags',
+ 'TAGS', '.make.state', '.nse_depinfo', '*~', '#*', '.#*', ',*',
+ "_\$*", "*\$", '*.old', '*.bak', '*.BAK', '*.orig', '*.rej',
+ '.del-*', '*.a', '*.olb', '*.o', '*.obj', '*.so', '*.exe',
+ '*.Z', '*.elc', '*.ln', 'core');
+
+# 3-letter month names in POSIX locale, for fast date decoding
+my %months = (
+ "Jan" => 0,
+ "Feb" => 1,
+ "Mar" => 2,
+ "Apr" => 3,
+ "May" => 4,
+ "Jun" => 5,
+ "Jul" => 6,
+ "Aug" => 7,
+ "Sep" => 8,
+ "Oct" => 9,
+ "Nov" => 10,
+ "Dec" => 11
+);
+
+# print usage information and exit
+sub usage ()
+{
+ print "Usage:\n" .
+ " cvsu [OPTIONS] [FILE] ...\n" .
+ "Options:\n" .
+ " --local Disable recursion\n" .
+ " --explain Verbosely print status of files\n" .
+ " --find Emulate find - filenames only\n" .
+ " --short Don't print paths\n" .
+ " --ignore Don't read .cvsignore\n" .
+ " --messages List known file types and long messages\n" .
+ " --nolinks Disable recognizing hard and soft links\n" .
+ " --types=[^]LIST Print only file types [not] from LIST\n" .
+ " --batch=COMMAND Execute this command on files\n" .
+ " --help Print this usage information\n" .
+ " --version Print version number\n" .
+ "Abbreviations and short options are supported\n";
+ exit 0;
+}
+
+# print version information and exit
+sub version ()
+{
+ print "cvsu - CVS offline examiner, version 0.2.3\n";
+ exit 0;
+}
+
+# If types begin with '^', make inversion
+sub adjust_types ()
+{
+ if ($list_types =~ m{^\^(.*)$}) {
+ $list_types = "";
+ foreach (keys %messages) {
+ $list_types .= $_
+ if (index ($1, $_) < 0);
+ }
+ }
+}
+
+# list known messages and exit
+sub list_messages ()
+{
+ my $default_mark;
+ print "Recognizable file types are:\n";
+ foreach (sort keys %messages) {
+ if (index($list_types, $_) >= 0) {
+ $default_mark = "*";
+ } else {
+ $default_mark = " ";
+ }
+ print " $default_mark $_ $messages{$_}\n";
+ }
+ print "* indicates file types listed by default\n";
+ exit 0;
+}
+
+# Initialize @common_ignores
+# Also read $HOME/.cvsignore and append it to @common_ignores
+sub init_ignores ()
+{
+ my $HOME = $ENV{"HOME"};
+
+ push @common_ignores, STANDARD_IGNORES;
+
+ unless (defined($HOME)) {
+ return;
+ }
+
+ my $home_cvsignore = "${HOME}/.cvsignore";
+
+ if (-f "$home_cvsignore") {
+
+ unless (open (CVSIGNORE, "< $home_cvsignore")) {
+ error ("couldn't open $home_cvsignore: $!");
+ }
+
+ while (<CVSIGNORE>) {
+ push (@common_ignores, split);
+ }
+
+ close (CVSIGNORE);
+ }
+
+ my $CVSIGNOREENV = $ENV{"CVSIGNORE"};
+
+ unless (defined($CVSIGNOREENV)) {
+ return;
+ }
+
+ my @ignores_var = split (/ /, $CVSIGNOREENV);
+ push (@common_ignores, @ignores_var);
+
+}
+
+# Print message and exit (like "die", but without raising an exception).
+# Newline is added at the end.
+sub error ($)
+{
+ print STDERR "cvsu: ERROR: " . shift(@_) . "\n";
+ exit 1;
+}
+
+# execute commands from @exec_list with $exec_cmd
+sub do_batch ()
+{
+ my @cmd_list = split (' ', $batch_cmd);
+ system (@cmd_list, @batch_list);
+}
+
+# print files status
+# Parameter 1: status in one-letter representation
+sub file_status ($)
+{
+ my $type = shift (@_);
+ my $item;
+ my $pathfile;
+
+ return
+ if $ignore_rx ne '' && $type =~ /[?SLD]/ && $file =~ /$ignore_rx/;
+
+ return
+ if (index($list_types, $type) < 0);
+
+ $pathfile = $curr_dir . $file;
+
+ if (defined($batch_cmd)) {
+ push (@batch_list, $pathfile);
+ # 1000 items in the command line might be too much for HP-UX
+ if ($#batch_list > 1000) {
+ do_batch();
+ undef @batch_list;
+ }
+ }
+
+ if ($short_print) {
+ $item = $file;
+ } else {
+ $item = $pathfile;
+ }
+
+ if ($find_mode) {
+ print "$item\n";
+ } else {
+ $type = $messages{$type}
+ if ($explain_type);
+ print "$type $item\n";
+ }
+}
+
+# load entries from CVS/Entries and CVS/Entries.Log
+# Parameter 1: file name for CVS/Entries
+# Return: list of entries in the format used in CVS/Entries
+sub load_entries ($);
+sub load_entries ($)
+{
+ my $entries_file = shift (@_);
+ my $entries_log_file = "$entries_file.Log";
+ my %ent = ();
+
+ unless (open (ENTRIES, "< $entries_file")) {
+ error ("couldn't open $entries_file: $!");
+ }
+ while (<ENTRIES>) {
+ chomp;
+ $ent{$_} = 1;
+ }
+ close (ENTRIES);
+
+ if (open (ENTRIES, "< $entries_log_file")) {
+ while (<ENTRIES>) {
+ chomp;
+ if ( m{^A (.+)} ) {
+ $ent{$1} = 1;
+ } elsif ( m{^R (.+)} ) {
+ delete $ent{$1};
+ } else {
+ # Note: "cvs commit" helps even when you are offline
+ error ("$entries_log_file:$.: unrecognizable line, " .
+ "try \"cvs commit\"");
+ }
+ }
+ close (ENTRIES);
+ }
+
+ return keys %ent;
+}
+
+# process one directory
+# Parameter 1: directory name
+sub process_arg ($);
+sub process_arg ($)
+{
+ my $arg = shift (@_);
+ my %found_files = ();
+
+ # $file, $curr_dir, and $ignore_rx must be seen in file_status
+ local $file = "";
+ local $ignore_rx = "";
+ local $single_filename = 0;
+
+ if ( $arg eq "" or -d $arg ) {
+ $curr_dir = $arg;
+ my $real_curr_dir = $curr_dir eq "" ? "." : $curr_dir;
+
+ error ("$real_curr_dir is not a directory")
+ unless ( -d $real_curr_dir );
+
+ # Scan present files.
+ file_status (".");
+ opendir (DIR, $real_curr_dir) ||
+ error ("couldn't open directory $real_curr_dir: $!");
+ foreach (readdir (DIR)) {
+ $found_files {$_} = 1;
+ }
+ closedir (DIR);
+ } else {
+ $single_filename = basename $arg;
+ $curr_dir = dirname $arg;
+ $found_files{$single_filename} = 1 if lstat $arg;
+ }
+
+ $curr_dir .= "/"
+ unless ( $curr_dir eq "" || $curr_dir =~ m{/$} );
+
+ # Scan CVS/Entries.
+ my %entries = ();
+ my %subdirs = ();
+ my %removed = ();
+
+ foreach ( load_entries ("${curr_dir}CVS/Entries") ) {
+ if ( m{^D/([^/]+)/} ) {
+ $subdirs{$1} = SUBDIR_FOUND if !$single_filename;
+ } elsif ( m{^/([^/]+)/([^/])[^/]*/([^/]*)/} ) {
+ if ( !$single_filename or $single_filename eq $1 ) {
+ $entries{$1} = $3;
+ $removed{$1} = 1
+ if $2 eq '-';
+ }
+ } elsif ( m{^D$} ) {
+ next;
+ } else {
+ error ("${curr_dir}CVS/Entries: unrecognizable line");
+ }
+ }
+
+ if ( $single_filename && !$entries{$single_filename} &&
+ !$found_files{$single_filename} ) {
+ error ("nothing known about $arg");
+ }
+
+ # Scan .cvsignore if any
+ unless ($no_cvsignore) {
+ my (@ignore_list) = ();
+
+ if (-f "${curr_dir}.cvsignore") {
+ open (CVSIGNORE, "< ${curr_dir}.cvsignore")
+ || error ("couldn't open ${curr_dir}.cvsignore: $!");
+ while (<CVSIGNORE>) {
+ push (@ignore_list, split);
+ }
+ close (CVSIGNORE);
+ }
+
+ my ($iter);
+ foreach $iter (@ignore_list, @common_ignores) {
+ if ($iter eq '!') {
+ $ignore_rx = ''
+ } else {
+ if ($ignore_rx eq '') {
+ $ignore_rx = '^(';
+ } else {
+ $ignore_rx .= '|';
+ }
+ $ignore_rx .= glob_to_rx ($iter);
+ }
+ }
+ $ignore_rx .= ')$'
+ if $ignore_rx ne '';
+ }
+
+ # File is missing
+ foreach $file (sort keys %entries) {
+ unless ($found_files{$file}) {
+ if ($removed{$file}) {
+ file_status("R");
+ } else {
+ file_status("U");
+ }
+ }
+ }
+
+ foreach $file (sort keys %found_files) {
+ next if ($file eq '.' || $file eq '..');
+ lstat ($curr_dir . $file) ||
+ error ("lstat() failed on $curr_dir . $file");
+ if (! $nolinks && -l _) {
+ file_status ("L");
+ } elsif (-d _) {
+ if ($file eq 'CVS') {
+ file_status ("C");
+ } elsif ($subdirs{$file}) {
+ $subdirs{$file} = SUBDIR_CVS;
+ } else {
+ file_status ("D"); # Unknown directory
+ }
+ } elsif (! (-f _) && ! (-l _)) {
+ file_status ("S"); # This must be something very special
+ } elsif (! $nolinks && (stat _) [3] > 1 ) {
+ file_status ("H"); # Hard link
+ } elsif (! $entries{$file}) {
+ file_status ("?");
+ } elsif ($entries{$file} =~ /^Initial |^dummy /) {
+ file_status ("A");
+ } elsif ($entries{$file} =~ /^Result of merge/) {
+ file_status ("G");
+ } elsif ($entries{$file} !~
+ /^(...) (...) (..) (..):(..):(..) (....)$/) {
+ error ("Invalid timestamp for $curr_dir$file: $entries{$file}");
+ } else {
+ my $cvtime = timegm($6, $5, $4, $3, $months{$2}, $7 - 1900);
+ my $mtime = (stat _) [9];
+ if ($cvtime == $mtime) {
+ file_status ("F");
+ } elsif ($cvtime < $mtime) {
+ file_status ("M");
+ } else {
+ file_status ("O");
+ }
+ }
+ }
+
+ # Now do directories.
+ unless ($no_recurse) {
+ my $save_curr_dir = $curr_dir;
+ foreach $file (sort keys %subdirs) {
+ if ($subdirs{$file} == SUBDIR_FOUND) {
+ $curr_dir = $save_curr_dir;
+ file_status ("X");
+ } elsif ($subdirs{$file} == SUBDIR_CVS) {
+ process_arg ($save_curr_dir . $file)
+ }
+ }
+ }
+}
+
+# Turn a glob into a regexp without recognizing square brackets.
+sub glob_to_rx_simple ($)
+{
+ my ($expr) = @_;
+ # Quote all non-word characters, convert ? to . and * to .*
+ $expr =~ s/(\W)/\\$1/g;
+ $expr =~ s/\\\*/.*/g;
+ $expr =~ s/\\\?/./g;
+ return $expr;
+}
+
+# Turn a glob into a regexp
+sub glob_to_rx ($)
+{
+ my $result = '';
+ my ($expr) = @_;
+ # Find parts in square brackets and copy them literally
+ # Text outside brackets is processed by glob_to_rx_simple()
+ while ($expr ne '') {
+ if ($expr =~ /^(.*?)(\[.*?\])(.*)/) {
+ $expr = $3;
+ $result .= glob_to_rx_simple ($1) . $2;
+ } else {
+ $result .= glob_to_rx_simple ($expr);
+ last;
+ }
+ }
+ return $result;
+}
+
+sub Main ()
+{
+ # types of files to be listed
+ $list_types = "^.FCL";
+
+ # long status messages
+ %messages = (
+ "?" => "Unlisted file",
+ "." => "Known directory",
+ "F" => "Up-to-date file",
+ "C" => "CVS admin directory",
+ "M" => "Modified file",
+ "S" => "Special file",
+ "D" => "Unlisted directory",
+ "L" => "Symbolic link",
+ "H" => "Hard link",
+ "U" => "Lost file",
+ "X" => "Lost directory",
+ "A" => "Newly added",
+ "O" => "Older copy",
+ "G" => "Result of merge",
+ "R" => "Removed file"
+ );
+
+ undef @batch_list; # List of files for batch processing
+ undef $batch_cmd; # Command to be executed on files
+ $no_recurse = 0; # If this is set, do only local files
+ $explain_type = 0; # Verbosely print status of files
+ $find_mode = 0; # Don't print status at all
+ $short_print = 0; # Print only filenames without path
+ $no_cvsignore = 0; # Ignore .cvsignore
+ $nolinks = 0; # Do not test for soft- or hard-links
+ my $want_msg = 0; # List possible filetypes and exit
+ my $want_help = 0; # Print help and exit
+ my $want_ver = 0; # Print version and exit
+
+ my %options = (
+ "types=s" => \$list_types,
+ "batch=s" => \$batch_cmd,
+ "local" => \$no_recurse,
+ "explain" => \$explain_type,
+ "find" => \$find_mode,
+ "short" => \$short_print,
+ "ignore" => \$no_cvsignore,
+ "messages" => \$want_msg,
+ "nolinks" => \$nolinks,
+ "help" => \$want_help,
+ "version" => \$want_ver
+ );
+
+ GetOptions(%options);
+
+ adjust_types();
+
+ list_messages() if $want_msg;
+ usage() if $want_help;
+ version() if $want_ver;
+
+ unless ($no_cvsignore) {
+ init_ignores();
+ }
+
+ if ($#ARGV < 0) {
+ @ARGV = ("");
+ }
+
+ foreach (@ARGV) {
+ process_arg ($_);
+ }
+
+ if ($#batch_list >= 0) {
+ do_batch();
+ }
+}
+
+Main();
diff --git a/build-aux/depcomp b/build-aux/depcomp
new file mode 100755
index 0000000..ca5ea4e
--- /dev/null
+++ b/build-aux/depcomp
@@ -0,0 +1,584 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2006-10-15.18
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+ '')
+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+ depmode Dependency tracking mode.
+ source Source file read by `PROGRAMS ARGS'.
+ object Object file output by `PROGRAMS ARGS'.
+ DEPDIR directory where to store dependencies.
+ depfile Dependency file to output.
+ tmpdepfile Temporary file to use when outputing dependencies.
+ libtool Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "depcomp $scriptversion"
+ exit $?
+ ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+ echo "depcomp: Variables source, object and depmode must be set" 1>&2
+ exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags. We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write. Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+ # HP compiler uses -M and no extra arg.
+ gccflag=-M
+ depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want. Yay! Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff. Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am. Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+ for arg
+ do
+ case $arg in
+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+ *) set fnord "$@" "$arg" ;;
+ esac
+ shift # fnord
+ shift # $arg
+ done
+ "$@"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ mv "$tmpdepfile" "$depfile"
+ ;;
+
+gcc)
+## There are various ways to get dependency output from gcc. Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+## up in a subdir. Having to rename by hand is ugly.
+## (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+## -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+## than renaming).
+ if test -z "$gccflag"; then
+ gccflag=-MD,
+ fi
+ "$@" -Wp,"$gccflag$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+ sed -e 's/^[^:]*: / /' \
+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header). We avoid this by adding
+## dummy dependencies for each header file. Too bad gcc doesn't do
+## this for us directly.
+ tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'. On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+sgi)
+ if test "$libtool" = yes; then
+ "$@" "-Wp,-MDupdate,$tmpdepfile"
+ else
+ "$@" -MDupdate "$tmpdepfile"
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+
+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
+ echo "$object : \\" > "$depfile"
+
+ # Clip off the initial element (the dependent). Don't try to be
+ # clever and replace this with sed code, as IRIX sed won't handle
+ # lines with more than a fixed number of characters (4096 in
+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
+ # the IRIX cc adds comments like `#:fec' to the end of the
+ # dependency line.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+ tr '
+' ' ' >> $depfile
+ echo >> $depfile
+
+ # The second pass generates a dummy entry for each header file.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+ >> $depfile
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+aix)
+ # The C for AIX Compiler uses -M and outputs the dependencies
+ # in a .u file. In older versions, this file always lives in the
+ # current directory. Also, the AIX compiler puts `$object:' at the
+ # start of each line; $object doesn't have directory information.
+ # Version 6 uses the directory in both cases.
+ stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
+ tmpdepfile="$stripped.u"
+ if test "$libtool" = yes; then
+ "$@" -Wc,-M
+ else
+ "$@" -M
+ fi
+ stat=$?
+
+ if test -f "$tmpdepfile"; then :
+ else
+ stripped=`echo "$stripped" | sed 's,^.*/,,'`
+ tmpdepfile="$stripped.u"
+ fi
+
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+
+ if test -f "$tmpdepfile"; then
+ outname="$stripped.o"
+ # Each line is of the form `foo.o: dependent.h'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
+ sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+icc)
+ # Intel's C compiler understands `-MD -MF file'. However on
+ # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+ # ICC 7.0 will fill foo.d with something like
+ # foo.o: sub/foo.c
+ # foo.o: sub/foo.h
+ # which is wrong. We want:
+ # sub/foo.o: sub/foo.c
+ # sub/foo.o: sub/foo.h
+ # sub/foo.c:
+ # sub/foo.h:
+ # ICC 7.1 will output
+ # foo.o: sub/foo.c sub/foo.h
+ # and will wrap long lines using \ :
+ # foo.o: sub/foo.c ... \
+ # sub/foo.h ... \
+ # ...
+
+ "$@" -MD -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ # Each line is of the form `foo.o: dependent.h',
+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+ sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp2)
+ # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+ # compilers, which have integrated preprocessors. The correct option
+ # to use with these is +Maked; it writes dependencies to a file named
+ # 'foo.d', which lands next to the object file, wherever that
+ # happens to be.
+ # Much of this is similar to the tru64 case; see comments there.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+ if test "$libtool" = yes; then
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir.libs/$base.d
+ "$@" -Wc,+Maked
+ else
+ tmpdepfile1=$dir$base.d
+ tmpdepfile2=$dir$base.d
+ "$@" +Maked
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+ # Add `dependent.h:' lines.
+ sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile" "$tmpdepfile2"
+ ;;
+
+tru64)
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in `foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+ if test "$libtool" = yes; then
+ # With Tru64 cc, shared objects can also be used to make a
+ # static library. This mechanism is used in libtool 1.4 series to
+ # handle both shared and static libraries in a single compilation.
+ # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+ #
+ # With libtool 1.5 this exception was removed, and libtool now
+ # generates 2 separate objects for the 2 libraries. These two
+ # compilations output dependencies in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+ # automatically cleaned when .libs/ is deleted, while ignoring
+ # the former would cause a distcleancheck panic.
+ tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
+ tmpdepfile2=$dir$base.o.d # libtool 1.5
+ tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
+ tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1=$dir$base.o.d
+ tmpdepfile2=$dir$base.d
+ tmpdepfile3=$dir$base.d
+ tmpdepfile4=$dir$base.d
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+#nosideeffect)
+ # This comment above is used by automake to tell side-effect
+ # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout, regardless of -o.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove `-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ test -z "$dashmflag" && dashmflag=-M
+ # Require at least two characters before searching for `:'
+ # in the target name. This is to cope with DOS-style filenames:
+ # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+ "$@" $dashmflag |
+ sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+dashXmstdout)
+ # This case only exists to satisfy depend.m4. It is never actually
+ # run, as this mode is specially recognized in the preamble.
+ exit 1
+ ;;
+
+makedepend)
+ "$@" || exit $?
+ # Remove any Libtool call
+ if test "$libtool" = yes; then
+ while test $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+ # X makedepend
+ shift
+ cleared=no
+ for arg in "$@"; do
+ case $cleared in
+ no)
+ set ""; shift
+ cleared=yes ;;
+ esac
+ case "$arg" in
+ -D*|-I*)
+ set fnord "$@" "$arg"; shift ;;
+ # Strip any option that makedepend may not understand. Remove
+ # the object too, otherwise makedepend will parse it as a source file.
+ -*|$object)
+ ;;
+ *)
+ set fnord "$@" "$arg"; shift ;;
+ esac
+ done
+ obj_suffix="`echo $object | sed 's/^.*\././'`"
+ touch "$tmpdepfile"
+ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile" "$tmpdepfile".bak
+ ;;
+
+cpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove `-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ "$@" -E |
+ sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+ sed '$ s: \\$::' > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ cat < "$tmpdepfile" >> "$depfile"
+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvisualcpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout, regardless of -o,
+ # because we must use -o when running libtool.
+ "$@" || exit $?
+ IFS=" "
+ for arg
+ do
+ case "$arg" in
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+ set fnord "$@"
+ shift
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
+ esac
+ done
+ "$@" -E |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
+ echo " " >> "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+none)
+ exec "$@"
+ ;;
+
+*)
+ echo "Unknown depmode $depmode" 1>&2
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/build-aux/install-sh b/build-aux/install-sh
new file mode 100755
index 0000000..a5897de
--- /dev/null
+++ b/build-aux/install-sh
@@ -0,0 +1,519 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2006-12-25.00
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" "" $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+ doit_exec=exec
+else
+ doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+ test "$posix_glob" != "?" || {
+ if (set -f) 2>/dev/null; then
+ posix_glob=
+ else
+ posix_glob=:
+ fi
+ }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+ --help display this help and exit.
+ --version display version info and exit.
+
+ -c (ignored)
+ -C install only if different (preserve the last data modification time)
+ -d create directories instead of installing files.
+ -g GROUP $chgrpprog installed files to GROUP.
+ -m MODE $chmodprog installed files to MODE.
+ -o USER $chownprog installed files to USER.
+ -s $stripprog installed files.
+ -t DIRECTORY install into DIRECTORY.
+ -T report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+ case $1 in
+ -c) ;;
+
+ -C) copy_on_change=true;;
+
+ -d) dir_arg=true;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) mode=$2
+ case $mode in
+ *' '* | *' '* | *'
+'* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
+
+ -o) chowncmd="$chownprog $2"
+ shift;;
+
+ -s) stripcmd=$stripprog;;
+
+ -t) dst_arg=$2
+ shift;;
+
+ -T) no_target_directory=true;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ --) shift
+ break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
+ esac
+ shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dst_arg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dst_arg"
+ shift # fnord
+ fi
+ shift # arg
+ dst_arg=$arg
+ done
+fi
+
+if test $# -eq 0; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call `install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
+
+if test -z "$dir_arg"; then
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
+for src
+do
+ # Protect names starting with `-'.
+ case $src in
+ -*) src=./$src;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
+ else
+
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dst_arg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+
+ dst=$dst_arg
+ # Protect names starting with `-'.
+ case $dst in
+ -*) dst=./$dst;;
+ esac
+
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
+ fi
+ dstdir=$dst
+ dst=$dstdir/`basename "$src"`
+ dstdir_status=0
+ else
+ # Prefer dirname, but fall back on a substitute if dirname fails.
+ dstdir=`
+ (dirname "$dst") 2>/dev/null ||
+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$dst" : 'X\(//\)[^/]' \| \
+ X"$dst" : 'X\(//\)$' \| \
+ X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+ echo X"$dst" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'
+ `
+
+ test -d "$dstdir"
+ dstdir_status=$?
+ fi
+ fi
+
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writeable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
+ esac
+
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
+
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
+
+ case $dstdir in
+ /*) prefix='/';;
+ -*) prefix='./';;
+ *) prefix='';;
+ esac
+
+ eval "$initialize_posix_glob"
+
+ oIFS=$IFS
+ IFS=/
+ $posix_glob set -f
+ set fnord $dstdir
+ shift
+ $posix_glob set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test -z "$d" && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
+ fi
+ fi
+ fi
+
+ if test -n "$dir_arg"; then
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ else
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+ # Copy the file name to the temp name.
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+ eval "$initialize_posix_glob" &&
+ $posix_glob set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ $posix_glob set +f &&
+
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+ {
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
+
+ trap '' 0
+ fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/build-aux/mdate-sh b/build-aux/mdate-sh
new file mode 100755
index 0000000..cd916c0
--- /dev/null
+++ b/build-aux/mdate-sh
@@ -0,0 +1,201 @@
+#!/bin/sh
+# Get modification time of a file or directory and pretty-print it.
+
+scriptversion=2005-06-29.22
+
+# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005 Free Software
+# Foundation, Inc.
+# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case $1 in
+ '')
+ echo "$0: No file. Try \`$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: mdate-sh [--help] [--version] FILE
+
+Pretty-print the modification time of FILE.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "mdate-sh $scriptversion"
+ exit $?
+ ;;
+esac
+
+# Prevent date giving response in another language.
+LANG=C
+export LANG
+LC_ALL=C
+export LC_ALL
+LC_TIME=C
+export LC_TIME
+
+# GNU ls changes its time format in response to the TIME_STYLE
+# variable. Since we cannot assume `unset' works, revert this
+# variable to its documented default.
+if test "${TIME_STYLE+set}" = set; then
+ TIME_STYLE=posix-long-iso
+ export TIME_STYLE
+fi
+
+save_arg1=$1
+
+# Find out how to get the extended ls output of a file or directory.
+if ls -L /dev/null 1>/dev/null 2>&1; then
+ ls_command='ls -L -l -d'
+else
+ ls_command='ls -l -d'
+fi
+
+# A `ls -l' line looks as follows on OS/2.
+# drwxrwx--- 0 Aug 11 2001 foo
+# This differs from Unix, which adds ownership information.
+# drwxrwx--- 2 root root 4096 Aug 11 2001 foo
+#
+# To find the date, we split the line on spaces and iterate on words
+# until we find a month. This cannot work with files whose owner is a
+# user named `Jan', or `Feb', etc. However, it's unlikely that `/'
+# will be owned by a user whose name is a month. So we first look at
+# the extended ls output of the root directory to decide how many
+# words should be skipped to get the date.
+
+# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
+set x`ls -l -d /`
+
+# Find which argument is the month.
+month=
+command=
+until test $month
+do
+ shift
+ # Add another shift to the command.
+ command="$command shift;"
+ case $1 in
+ Jan) month=January; nummonth=1;;
+ Feb) month=February; nummonth=2;;
+ Mar) month=March; nummonth=3;;
+ Apr) month=April; nummonth=4;;
+ May) month=May; nummonth=5;;
+ Jun) month=June; nummonth=6;;
+ Jul) month=July; nummonth=7;;
+ Aug) month=August; nummonth=8;;
+ Sep) month=September; nummonth=9;;
+ Oct) month=October; nummonth=10;;
+ Nov) month=November; nummonth=11;;
+ Dec) month=December; nummonth=12;;
+ esac
+done
+
+# Get the extended ls output of the file or directory.
+set dummy x`eval "$ls_command \"\$save_arg1\""`
+
+# Remove all preceding arguments
+eval $command
+
+# Because of the dummy argument above, month is in $2.
+#
+# On a POSIX system, we should have
+#
+# $# = 5
+# $1 = file size
+# $2 = month
+# $3 = day
+# $4 = year or time
+# $5 = filename
+#
+# On Darwin 7.7.0 and 7.6.0, we have
+#
+# $# = 4
+# $1 = day
+# $2 = month
+# $3 = year or time
+# $4 = filename
+
+# Get the month.
+case $2 in
+ Jan) month=January; nummonth=1;;
+ Feb) month=February; nummonth=2;;
+ Mar) month=March; nummonth=3;;
+ Apr) month=April; nummonth=4;;
+ May) month=May; nummonth=5;;
+ Jun) month=June; nummonth=6;;
+ Jul) month=July; nummonth=7;;
+ Aug) month=August; nummonth=8;;
+ Sep) month=September; nummonth=9;;
+ Oct) month=October; nummonth=10;;
+ Nov) month=November; nummonth=11;;
+ Dec) month=December; nummonth=12;;
+esac
+
+case $3 in
+ ???*) day=$1;;
+ *) day=$3; shift;;
+esac
+
+# Here we have to deal with the problem that the ls output gives either
+# the time of day or the year.
+case $3 in
+ *:*) set `date`; eval year=\$$#
+ case $2 in
+ Jan) nummonthtod=1;;
+ Feb) nummonthtod=2;;
+ Mar) nummonthtod=3;;
+ Apr) nummonthtod=4;;
+ May) nummonthtod=5;;
+ Jun) nummonthtod=6;;
+ Jul) nummonthtod=7;;
+ Aug) nummonthtod=8;;
+ Sep) nummonthtod=9;;
+ Oct) nummonthtod=10;;
+ Nov) nummonthtod=11;;
+ Dec) nummonthtod=12;;
+ esac
+ # For the first six month of the year the time notation can also
+ # be used for files modified in the last year.
+ if (expr $nummonth \> $nummonthtod) > /dev/null;
+ then
+ year=`expr $year - 1`
+ fi;;
+ *) year=$3;;
+esac
+
+# The result.
+echo $day $month $year
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/build-aux/missing b/build-aux/missing
new file mode 100755
index 0000000..1c8ff70
--- /dev/null
+++ b/build-aux/missing
@@ -0,0 +1,367 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2006-05-10.23
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+ configure_ac=configure.ac
+else
+ configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+ # Try to run requested program, and just exit if it succeeds.
+ run=
+ shift
+ "$@" && exit 0
+ # Exit code 63 means version mismatch. This often happens
+ # when the user try to use an ancient version of a tool on
+ # a file that requires a minimum version. In this case we
+ # we should proceed has if the program had been absent, or
+ # if --run hadn't been passed.
+ if test $? = 63; then
+ run=:
+ msg="probably too old"
+ fi
+ ;;
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+ --run try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+ aclocal touch file \`aclocal.m4'
+ autoconf touch file \`configure'
+ autoheader touch file \`config.h.in'
+ autom4te touch the output file, or create a stub one
+ automake touch all \`Makefile.in' files
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
+ flex create \`lex.yy.c', if possible, from existing .c
+ help2man touch the output file
+ lex create \`lex.yy.c', if possible, from existing .c
+ makeinfo touch the output file
+ tar try tar, gnutar, gtar, then tar without non-portable flags
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake@gnu.org>."
+ exit $?
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+ exit $?
+ ;;
+
+ -*)
+ echo 1>&2 "$0: Unknown \`$1' option"
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+ ;;
+
+esac
+
+# Now exit if we have it, but it failed. Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case $1 in
+ lex|yacc)
+ # Not GNU programs, they don't have --version.
+ ;;
+
+ tar)
+ if test -n "$run"; then
+ echo 1>&2 "ERROR: \`tar' requires --run"
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ exit 1
+ fi
+ ;;
+
+ *)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ # Could not run --version or --help. This is probably someone
+ # running `$TOOL --version' or `$TOOL --help' to check whether
+ # $TOOL exists and not knowing $TOOL uses missing.
+ exit 1
+ fi
+ ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $1 in
+ aclocal*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
+ to install the \`Automake' and \`Perl' packages. Grab them from
+ any GNU archive site."
+ touch aclocal.m4
+ ;;
+
+ autoconf)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`${configure_ac}'. You might want to install the
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
+ archive site."
+ touch configure
+ ;;
+
+ autoheader)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
+ from any GNU archive site."
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+ test -z "$files" && files="config.h"
+ touch_files=
+ for f in $files; do
+ case $f in
+ *:*) touch_files="$touch_files "`echo "$f" |
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+ *) touch_files="$touch_files $f.in";;
+ esac
+ done
+ touch $touch_files
+ ;;
+
+ automake*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+ You might want to install the \`Automake' and \`Perl' packages.
+ Grab them from any GNU archive site."
+ find . -type f -name Makefile.am -print |
+ sed 's/\.am$/.in/' |
+ while read f; do touch "$f"; done
+ ;;
+
+ autom4te)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them.
+ You can get \`$1' as part of \`Autoconf' from any GNU
+ archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo "#! /bin/sh"
+ echo "# Created by GNU Automake missing as a replacement of"
+ echo "# $ $@"
+ echo "exit 0"
+ chmod +x $file
+ exit 1
+ fi
+ ;;
+
+ bison|yacc)
+ echo 1>&2 "\
+WARNING: \`$1' $msg. You should only need it if
+ you modified a \`.y' file. You may need the \`Bison' package
+ in order for those modifications to take effect. You can get
+ \`Bison' from any GNU archive site."
+ rm -f y.tab.c y.tab.h
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.y)
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.c
+ fi
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.h
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f y.tab.h; then
+ echo >y.tab.h
+ fi
+ if test ! -f y.tab.c; then
+ echo 'main() { return 0; }' >y.tab.c
+ fi
+ ;;
+
+ lex|flex)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.l' file. You may need the \`Flex' package
+ in order for those modifications to take effect. You can get
+ \`Flex' from any GNU archive site."
+ rm -f lex.yy.c
+ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+ case $LASTARG in
+ *.l)
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" lex.yy.c
+ fi
+ ;;
+ esac
+ fi
+ if test ! -f lex.yy.c; then
+ echo 'main() { return 0; }' >lex.yy.c
+ fi
+ ;;
+
+ help2man)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a dependency of a manual page. You may need the
+ \`Help2man' package in order for those modifications to take
+ effect. You can get \`Help2man' from any GNU archive site."
+
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo ".ab help2man is required to generate this page"
+ exit 1
+ fi
+ ;;
+
+ makeinfo)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.texi' or \`.texinfo' file, or any other file
+ indirectly affecting the aspect of the manual. The spurious
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+ # The file to touch is that specified with -o ...
+ file=`echo "$*" | sed -n "$sed_output"`
+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -z "$file"; then
+ # ... or it is the one specified with @setfilename ...
+ infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+ file=`sed -n '
+ /^@setfilename/{
+ s/.* \([^ ]*\) *$/\1/
+ p
+ q
+ }' $infile`
+ # ... or it is derived from the source name (dir/f.texi becomes f.info)
+ test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+ fi
+ # If the file does not exist, the user really needs makeinfo;
+ # let's fail without touching anything.
+ test -f $file || exit 1
+ touch $file
+ ;;
+
+ tar)
+ shift
+
+ # We have already tried tar in the generic part.
+ # Look for gnutar/gtar before invocation to avoid ugly error
+ # messages.
+ if (gnutar --version > /dev/null 2>&1); then
+ gnutar "$@" && exit 0
+ fi
+ if (gtar --version > /dev/null 2>&1); then
+ gtar "$@" && exit 0
+ fi
+ firstarg="$1"
+ if shift; then
+ case $firstarg in
+ *o*)
+ firstarg=`echo "$firstarg" | sed s/o//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ case $firstarg in
+ *h*)
+ firstarg=`echo "$firstarg" | sed s/h//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ fi
+
+ echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+ You may want to install GNU tar or Free paxutils, or check the
+ command line arguments."
+ exit 1
+ ;;
+
+ *)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them. Check the \`README' file,
+ it often tells you about the needed prerequisites for installing
+ this package. You may also peek at any GNU archive site, in case
+ some other package would contain this missing \`$1' program."
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex
new file mode 100644
index 0000000..629b88b
--- /dev/null
+++ b/build-aux/texinfo.tex
@@ -0,0 +1,8359 @@
+% texinfo.tex -- TeX macros to handle Texinfo files.
+%
+% Load plain if necessary, i.e., if running under initex.
+\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
+%
+\def\texinfoversion{2007-03-14.11}
+%
+% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+% 2007 Free Software Foundation, Inc.
+%
+% This texinfo.tex file 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 texinfo.tex file is distributed in the hope that it will be
+% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+% General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this texinfo.tex file; see the file COPYING. If not, write
+% to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+% Boston, MA 02110-1301, USA.
+%
+% As a special exception, when this file is read by TeX when processing
+% a Texinfo source document, you may use the result without
+% restriction. (This has been our intent since Texinfo was invented.)
+%
+% Please try the latest version of texinfo.tex before submitting bug
+% reports; you can get the latest version from:
+% http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
+% ftp://tug.org/tex/texinfo.tex
+% (and all CTAN mirrors, see http://www.ctan.org).
+% The texinfo.tex in any given distribution could well be out
+% of date, so if that's what you're using, please check.
+%
+% Send bug reports to bug-texinfo@gnu.org. Please include including a
+% complete document in each bug report with which we can reproduce the
+% problem. Patches are, of course, greatly appreciated.
+%
+% To process a Texinfo manual with TeX, it's most reliable to use the
+% texi2dvi shell script that comes with the distribution. For a simple
+% manual foo.texi, however, you can get away with this:
+% tex foo.texi
+% texindex foo.??
+% tex foo.texi
+% tex foo.texi
+% dvips foo.dvi -o # or whatever; this makes foo.ps.
+% The extra TeX runs get the cross-reference information correct.
+% Sometimes one run after texindex suffices, and sometimes you need more
+% than two; texi2dvi does it as many times as necessary.
+%
+% It is possible to adapt texinfo.tex for other languages, to some
+% extent. You can get the existing language-specific files from the
+% full Texinfo distribution.
+%
+% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
+
+
+\message{Loading texinfo [version \texinfoversion]:}
+
+% If in a .fmt file, print the version number
+% and turn on active characters that we couldn't do earlier because
+% they might have appeared in the input file name.
+\everyjob{\message{[Texinfo version \texinfoversion]}%
+ \catcode`+=\active \catcode`\_=\active}
+
+
+\chardef\other=12
+
+% We never want plain's \outer definition of \+ in Texinfo.
+% For @tex, we can use \tabalign.
+\let\+ = \relax
+
+% Save some plain tex macros whose names we will redefine.
+\let\ptexb=\b
+\let\ptexbullet=\bullet
+\let\ptexc=\c
+\let\ptexcomma=\,
+\let\ptexdot=\.
+\let\ptexdots=\dots
+\let\ptexend=\end
+\let\ptexequiv=\equiv
+\let\ptexexclam=\!
+\let\ptexfootnote=\footnote
+\let\ptexgtr=>
+\let\ptexhat=^
+\let\ptexi=\i
+\let\ptexindent=\indent
+\let\ptexinsert=\insert
+\let\ptexlbrace=\{
+\let\ptexless=<
+\let\ptexnewwrite\newwrite
+\let\ptexnoindent=\noindent
+\let\ptexplus=+
+\let\ptexrbrace=\}
+\let\ptexslash=\/
+\let\ptexstar=\*
+\let\ptext=\t
+
+% If this character appears in an error message or help string, it
+% starts a new line in the output.
+\newlinechar = `^^J
+
+% Use TeX 3.0's \inputlineno to get the line number, for better error
+% messages, but if we're using an old version of TeX, don't do anything.
+%
+\ifx\inputlineno\thisisundefined
+ \let\linenumber = \empty % Pre-3.0.
+\else
+ \def\linenumber{l.\the\inputlineno:\space}
+\fi
+
+% Set up fixed words for English if not already set.
+\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
+\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
+\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
+\ifx\putwordin\undefined \gdef\putwordin{in}\fi
+\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
+\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
+\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
+\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi
+\ifx\putwordof\undefined \gdef\putwordof{of}\fi
+\ifx\putwordon\undefined \gdef\putwordon{on}\fi
+\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi
+\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi
+\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi
+\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi
+\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi
+\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi
+\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi
+%
+\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
+\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
+\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
+\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
+\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
+\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
+\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
+\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
+\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
+\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
+\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
+\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
+%
+\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi
+\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi
+\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi
+\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
+\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
+
+% Since the category of space is not known, we have to be careful.
+\chardef\spacecat = 10
+\def\spaceisspace{\catcode`\ =\spacecat}
+
+% sometimes characters are active, so we need control sequences.
+\chardef\colonChar = `\:
+\chardef\commaChar = `\,
+\chardef\dashChar = `\-
+\chardef\dotChar = `\.
+\chardef\exclamChar= `\!
+\chardef\lquoteChar= `\`
+\chardef\questChar = `\?
+\chardef\rquoteChar= `\'
+\chardef\semiChar = `\;
+\chardef\underChar = `\_
+
+% Ignore a token.
+%
+\def\gobble#1{}
+
+% The following is used inside several \edef's.
+\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
+
+% Hyphenation fixes.
+\hyphenation{
+ Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
+ ap-pen-dix bit-map bit-maps
+ data-base data-bases eshell fall-ing half-way long-est man-u-script
+ man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
+ par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
+ spell-ing spell-ings
+ stand-alone strong-est time-stamp time-stamps which-ever white-space
+ wide-spread wrap-around
+}
+
+% Margin to add to right of even pages, to left of odd pages.
+\newdimen\bindingoffset
+\newdimen\normaloffset
+\newdimen\pagewidth \newdimen\pageheight
+
+% For a final copy, take out the rectangles
+% that mark overfull boxes (in case you have decided
+% that the text looks ok even though it passes the margin).
+%
+\def\finalout{\overfullrule=0pt}
+
+% @| inserts a changebar to the left of the current line. It should
+% surround any changed text. This approach does *not* work if the
+% change spans more than two lines of output. To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change).
+%
+\def\|{%
+ % \vadjust can only be used in horizontal mode.
+ \leavevmode
+ %
+ % Append this vertical mode material after the current line in the output.
+ \vadjust{%
+ % We want to insert a rule with the height and depth of the current
+ % leading; that is exactly what \strutbox is supposed to record.
+ \vskip-\baselineskip
+ %
+ % \vadjust-items are inserted at the left edge of the type. So
+ % the \llap here moves out into the left-hand margin.
+ \llap{%
+ %
+ % For a thicker or thinner bar, change the `1pt'.
+ \vrule height\baselineskip width1pt
+ %
+ % This is the space between the bar and the text.
+ \hskip 12pt
+ }%
+ }%
+}
+
+% Sometimes it is convenient to have everything in the transcript file
+% and nothing on the terminal. We don't just call \tracingall here,
+% since that produces some useless output on the terminal. We also make
+% some effort to order the tracing commands to reduce output in the log
+% file; cf. trace.sty in LaTeX.
+%
+\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
+\def\loggingall{%
+ \tracingstats2
+ \tracingpages1
+ \tracinglostchars2 % 2 gives us more in etex
+ \tracingparagraphs1
+ \tracingoutput1
+ \tracingmacros2
+ \tracingrestores1
+ \showboxbreadth\maxdimen \showboxdepth\maxdimen
+ \ifx\eTeXversion\undefined\else % etex gives us more logging
+ \tracingscantokens1
+ \tracingifs1
+ \tracinggroups1
+ \tracingnesting2
+ \tracingassigns1
+ \fi
+ \tracingcommands3 % 3 gives us more in etex
+ \errorcontextlines16
+}%
+
+% add check for \lastpenalty to plain's definitions. If the last thing
+% we did was a \nobreak, we don't want to insert more space.
+%
+\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
+ \removelastskip\penalty-50\smallskip\fi\fi}
+\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
+ \removelastskip\penalty-100\medskip\fi\fi}
+\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
+ \removelastskip\penalty-200\bigskip\fi\fi}
+
+% For @cropmarks command.
+% Do @cropmarks to get crop marks.
+%
+\newif\ifcropmarks
+\let\cropmarks = \cropmarkstrue
+%
+% Dimensions to add cropmarks at corners.
+% Added by P. A. MacKay, 12 Nov. 1986
+%
+\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
+\newdimen\cornerlong \cornerlong=1pc
+\newdimen\cornerthick \cornerthick=.3pt
+\newdimen\topandbottommargin \topandbottommargin=.75in
+
+% Main output routine.
+\chardef\PAGE = 255
+\output = {\onepageout{\pagecontents\PAGE}}
+
+\newbox\headlinebox
+\newbox\footlinebox
+
+% \onepageout takes a vbox as an argument. Note that \pagecontents
+% does insertions, but you have to call it yourself.
+\def\onepageout#1{%
+ \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
+ %
+ \ifodd\pageno \advance\hoffset by \bindingoffset
+ \else \advance\hoffset by -\bindingoffset\fi
+ %
+ % Do this outside of the \shipout so @code etc. will be expanded in
+ % the headline as they should be, not taken literally (outputting ''code).
+ \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
+ \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
+ %
+ {%
+ % Have to do this stuff outside the \shipout because we want it to
+ % take effect in \write's, yet the group defined by the \vbox ends
+ % before the \shipout runs.
+ %
+ \indexdummies % don't expand commands in the output.
+ \normalturnoffactive % \ in index entries must not stay \, e.g., if
+ % the page break happens to be in the middle of an example.
+ % We don't want .vr (or whatever) entries like this:
+ % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
+ % "\acronym" won't work when it's read back in;
+ % it needs to be
+ % {\code {{\tt \backslashcurfont }acronym}
+ \shipout\vbox{%
+ % Do this early so pdf references go to the beginning of the page.
+ \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
+ %
+ \ifcropmarks \vbox to \outervsize\bgroup
+ \hsize = \outerhsize
+ \vskip-\topandbottommargin
+ \vtop to0pt{%
+ \line{\ewtop\hfil\ewtop}%
+ \nointerlineskip
+ \line{%
+ \vbox{\moveleft\cornerthick\nstop}%
+ \hfill
+ \vbox{\moveright\cornerthick\nstop}%
+ }%
+ \vss}%
+ \vskip\topandbottommargin
+ \line\bgroup
+ \hfil % center the page within the outer (page) hsize.
+ \ifodd\pageno\hskip\bindingoffset\fi
+ \vbox\bgroup
+ \fi
+ %
+ \unvbox\headlinebox
+ \pagebody{#1}%
+ \ifdim\ht\footlinebox > 0pt
+ % Only leave this space if the footline is nonempty.
+ % (We lessened \vsize for it in \oddfootingyyy.)
+ % The \baselineskip=24pt in plain's \makefootline has no effect.
+ \vskip 24pt
+ \unvbox\footlinebox
+ \fi
+ %
+ \ifcropmarks
+ \egroup % end of \vbox\bgroup
+ \hfil\egroup % end of (centering) \line\bgroup
+ \vskip\topandbottommargin plus1fill minus1fill
+ \boxmaxdepth = \cornerthick
+ \vbox to0pt{\vss
+ \line{%
+ \vbox{\moveleft\cornerthick\nsbot}%
+ \hfill
+ \vbox{\moveright\cornerthick\nsbot}%
+ }%
+ \nointerlineskip
+ \line{\ewbot\hfil\ewbot}%
+ }%
+ \egroup % \vbox from first cropmarks clause
+ \fi
+ }% end of \shipout\vbox
+ }% end of group with \indexdummies
+ \advancepageno
+ \ifnum\outputpenalty>-20000 \else\dosupereject\fi
+}
+
+\newinsert\margin \dimen\margin=\maxdimen
+
+\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
+{\catcode`\@ =11
+\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
+% marginal hacks, juha@viisa.uucp (Juha Takala)
+\ifvoid\margin\else % marginal info is present
+ \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
+\dimen@=\dp#1 \unvbox#1
+\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
+\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
+}
+
+% Here are the rules for the cropmarks. Note that they are
+% offset so that the space between them is truly \outerhsize or \outervsize
+% (P. A. MacKay, 12 November, 1986)
+%
+\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
+\def\nstop{\vbox
+ {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
+\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
+\def\nsbot{\vbox
+ {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
+
+% Parse an argument, then pass it to #1. The argument is the rest of
+% the input line (except we remove a trailing comment). #1 should be a
+% macro which expects an ordinary undelimited TeX argument.
+%
+\def\parsearg{\parseargusing{}}
+\def\parseargusing#1#2{%
+ \def\argtorun{#2}%
+ \begingroup
+ \obeylines
+ \spaceisspace
+ #1%
+ \parseargline\empty% Insert the \empty token, see \finishparsearg below.
+}
+
+{\obeylines %
+ \gdef\parseargline#1^^M{%
+ \endgroup % End of the group started in \parsearg.
+ \argremovecomment #1\comment\ArgTerm%
+ }%
+}
+
+% First remove any @comment, then any @c comment.
+\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
+\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
+
+% Each occurence of `\^^M' or `<space>\^^M' is replaced by a single space.
+%
+% \argremovec might leave us with trailing space, e.g.,
+% @end itemize @c foo
+% This space token undergoes the same procedure and is eventually removed
+% by \finishparsearg.
+%
+\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M}
+\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M}
+\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
+ \def\temp{#3}%
+ \ifx\temp\empty
+ % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
+ \let\temp\finishparsearg
+ \else
+ \let\temp\argcheckspaces
+ \fi
+ % Put the space token in:
+ \temp#1 #3\ArgTerm
+}
+
+% If a _delimited_ argument is enclosed in braces, they get stripped; so
+% to get _exactly_ the rest of the line, we had to prevent such situation.
+% We prepended an \empty token at the very beginning and we expand it now,
+% just before passing the control to \argtorun.
+% (Similarily, we have to think about #3 of \argcheckspacesY above: it is
+% either the null string, or it ends with \^^M---thus there is no danger
+% that a pair of braces would be stripped.
+%
+% But first, we have to remove the trailing space token.
+%
+\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
+
+% \parseargdef\foo{...}
+% is roughly equivalent to
+% \def\foo{\parsearg\Xfoo}
+% \def\Xfoo#1{...}
+%
+% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
+% favourite TeX trick. --kasal, 16nov03
+
+\def\parseargdef#1{%
+ \expandafter \doparseargdef \csname\string#1\endcsname #1%
+}
+\def\doparseargdef#1#2{%
+ \def#2{\parsearg#1}%
+ \def#1##1%
+}
+
+% Several utility definitions with active space:
+{
+ \obeyspaces
+ \gdef\obeyedspace{ }
+
+ % Make each space character in the input produce a normal interword
+ % space in the output. Don't allow a line break at this space, as this
+ % is used only in environments like @example, where each line of input
+ % should produce a line of output anyway.
+ %
+ \gdef\sepspaces{\obeyspaces\let =\tie}
+
+ % If an index command is used in an @example environment, any spaces
+ % therein should become regular spaces in the raw index file, not the
+ % expansion of \tie (\leavevmode \penalty \@M \ ).
+ \gdef\unsepspaces{\let =\space}
+}
+
+
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
+
+% Define the framework for environments in texinfo.tex. It's used like this:
+%
+% \envdef\foo{...}
+% \def\Efoo{...}
+%
+% It's the responsibility of \envdef to insert \begingroup before the
+% actual body; @end closes the group after calling \Efoo. \envdef also
+% defines \thisenv, so the current environment is known; @end checks
+% whether the environment name matches. The \checkenv macro can also be
+% used to check whether the current environment is the one expected.
+%
+% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
+% are not treated as enviroments; they don't open a group. (The
+% implementation of @end takes care not to call \endgroup in this
+% special case.)
+
+
+% At runtime, environments start with this:
+\def\startenvironment#1{\begingroup\def\thisenv{#1}}
+% initialize
+\let\thisenv\empty
+
+% ... but they get defined via ``\envdef\foo{...}'':
+\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
+\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
+
+% Check whether we're in the right environment:
+\def\checkenv#1{%
+ \def\temp{#1}%
+ \ifx\thisenv\temp
+ \else
+ \badenverr
+ \fi
+}
+
+% Evironment mismatch, #1 expected:
+\def\badenverr{%
+ \errhelp = \EMsimple
+ \errmessage{This command can appear only \inenvironment\temp,
+ not \inenvironment\thisenv}%
+}
+\def\inenvironment#1{%
+ \ifx#1\empty
+ out of any environment%
+ \else
+ in environment \expandafter\string#1%
+ \fi
+}
+
+% @end foo executes the definition of \Efoo.
+% But first, it executes a specialized version of \checkenv
+%
+\parseargdef\end{%
+ \if 1\csname iscond.#1\endcsname
+ \else
+ % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03
+ \expandafter\checkenv\csname#1\endcsname
+ \csname E#1\endcsname
+ \endgroup
+ \fi
+}
+
+\newhelp\EMsimple{Press RETURN to continue.}
+
+
+%% Simple single-character @ commands
+
+% @@ prints an @
+% Kludge this until the fonts are right (grr).
+\def\@{{\tt\char64}}
+
+% This is turned off because it was never documented
+% and you can use @w{...} around a quote to suppress ligatures.
+%% Define @` and @' to be the same as ` and '
+%% but suppressing ligatures.
+%\def\`{{`}}
+%\def\'{{'}}
+
+% Used to generate quoted braces.
+\def\mylbrace {{\tt\char123}}
+\def\myrbrace {{\tt\char125}}
+\let\{=\mylbrace
+\let\}=\myrbrace
+\begingroup
+ % Definitions to produce \{ and \} commands for indices,
+ % and @{ and @} for the aux/toc files.
+ \catcode`\{ = \other \catcode`\} = \other
+ \catcode`\[ = 1 \catcode`\] = 2
+ \catcode`\! = 0 \catcode`\\ = \other
+ !gdef!lbracecmd[\{]%
+ !gdef!rbracecmd[\}]%
+ !gdef!lbraceatcmd[@{]%
+ !gdef!rbraceatcmd[@}]%
+!endgroup
+
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
+\let\, = \c
+\let\dotaccent = \.
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \t
+\let\ubaraccent = \b
+\let\udotaccent = \d
+
+% Other special characters: @questiondown @exclamdown @ordf @ordm
+% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+
+% Dotless i and dotless j, used for accents.
+\def\imacro{i}
+\def\jmacro{j}
+\def\dotless#1{%
+ \def\temp{#1}%
+ \ifx\temp\imacro \ptexi
+ \else\ifx\temp\jmacro \j
+ \else \errmessage{@dotless can be used only with i or j}%
+ \fi\fi
+}
+
+% The \TeX{} logo, as in plain, but resetting the spacing so that a
+% period following counts as ending a sentence. (Idea found in latex.)
+%
+\edef\TeX{\TeX \spacefactor=1000 }
+
+% @LaTeX{} logo. Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+ L\kern-.36em
+ {\setbox0=\hbox{T}%
+ \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}%
+ \kern-.15em
+ \TeX
+}
+
+% Be sure we're in horizontal mode when doing a tie, since we make space
+% equivalent to this in @example-like environments. Otherwise, a space
+% at the beginning of a line will start with \penalty -- and
+% since \penalty is valid in vertical mode, we'd end up putting the
+% penalty on the vertical list instead of in the new paragraph.
+{\catcode`@ = 11
+ % Avoid using \@M directly, because that causes trouble
+ % if the definition is written into an index file.
+ \global\let\tiepenalty = \@M
+ \gdef\tie{\leavevmode\penalty\tiepenalty\ }
+}
+
+% @: forces normal size whitespace following.
+\def\:{\spacefactor=1000 }
+
+% @* forces a line break.
+\def\*{\hfil\break\hbox{}\ignorespaces}
+
+% @/ allows a line break.
+\let\/=\allowbreak
+
+% @. is an end-of-sentence period.
+\def\.{.\spacefactor=\endofsentencespacefactor\space}
+
+% @! is an end-of-sentence bang.
+\def\!{!\spacefactor=\endofsentencespacefactor\space}
+
+% @? is an end-of-sentence query.
+\def\?{?\spacefactor=\endofsentencespacefactor\space}
+
+% @frenchspacing on|off says whether to put extra space after punctuation.
+%
+\def\onword{on}
+\def\offword{off}
+%
+\parseargdef\frenchspacing{%
+ \def\temp{#1}%
+ \ifx\temp\onword \plainfrenchspacing
+ \else\ifx\temp\offword \plainnonfrenchspacing
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
+ \fi\fi
+}
+
+% @w prevents a word break. Without the \leavevmode, @w at the
+% beginning of a paragraph, when TeX is still in vertical mode, would
+% produce a whole line of output instead of starting the paragraph.
+\def\w#1{\leavevmode\hbox{#1}}
+
+% @group ... @end group forces ... to be all on one page, by enclosing
+% it in a TeX vbox. We use \vtop instead of \vbox to construct the box
+% to keep its height that of a normal line. According to the rules for
+% \topskip (p.114 of the TeXbook), the glue inserted is
+% max (\topskip - \ht (first item), 0). If that height is large,
+% therefore, no glue is inserted, and the space between the headline and
+% the text is small, which looks bad.
+%
+% Another complication is that the group might be very large. This can
+% cause the glue on the previous page to be unduly stretched, because it
+% does not have much material. In this case, it's better to add an
+% explicit \vfill so that the extra space is at the bottom. The
+% threshold for doing this is if the group is more than \vfilllimit
+% percent of a page (\vfilllimit can be changed inside of @tex).
+%
+\newbox\groupbox
+\def\vfilllimit{0.7}
+%
+\envdef\group{%
+ \ifnum\catcode`\^^M=\active \else
+ \errhelp = \groupinvalidhelp
+ \errmessage{@group invalid in context where filling is enabled}%
+ \fi
+ \startsavinginserts
+ %
+ \setbox\groupbox = \vtop\bgroup
+ % Do @comment since we are called inside an environment such as
+ % @example, where each end-of-line in the input causes an
+ % end-of-line in the output. We don't want the end-of-line after
+ % the `@group' to put extra space in the output. Since @group
+ % should appear on a line by itself (according to the Texinfo
+ % manual), we don't worry about eating any user text.
+ \comment
+}
+%
+% The \vtop produces a box with normal height and large depth; thus, TeX puts
+% \baselineskip glue before it, and (when the next line of text is done)
+% \lineskip glue after it. Thus, space below is not quite equal to space
+% above. But it's pretty close.
+\def\Egroup{%
+ % To get correct interline space between the last line of the group
+ % and the first line afterwards, we have to propagate \prevdepth.
+ \endgraf % Not \par, as it may have been set to \lisppar.
+ \global\dimen1 = \prevdepth
+ \egroup % End the \vtop.
+ % \dimen0 is the vertical size of the group's box.
+ \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox
+ % \dimen2 is how much space is left on the page (more or less).
+ \dimen2 = \pageheight \advance\dimen2 by -\pagetotal
+ % if the group doesn't fit on the current page, and it's a big big
+ % group, force a page break.
+ \ifdim \dimen0 > \dimen2
+ \ifdim \pagetotal < \vfilllimit\pageheight
+ \page
+ \fi
+ \fi
+ \box\groupbox
+ \prevdepth = \dimen1
+ \checkinserts
+}
+%
+% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
+% message, so this ends up printing `@group can only ...'.
+%
+\newhelp\groupinvalidhelp{%
+group can only be used in environments such as @example,^^J%
+where each line of input produces a line of output.}
+
+% @need space-in-mils
+% forces a page break if there is not space-in-mils remaining.
+
+\newdimen\mil \mil=0.001in
+
+% Old definition--didn't work.
+%\parseargdef\need{\par %
+%% This method tries to make TeX break the page naturally
+%% if the depth of the box does not fit.
+%{\baselineskip=0pt%
+%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
+%\prevdepth=-1000pt
+%}}
+
+\parseargdef\need{%
+ % Ensure vertical mode, so we don't make a big box in the middle of a
+ % paragraph.
+ \par
+ %
+ % If the @need value is less than one line space, it's useless.
+ \dimen0 = #1\mil
+ \dimen2 = \ht\strutbox
+ \advance\dimen2 by \dp\strutbox
+ \ifdim\dimen0 > \dimen2
+ %
+ % Do a \strut just to make the height of this box be normal, so the
+ % normal leading is inserted relative to the preceding line.
+ % And a page break here is fine.
+ \vtop to #1\mil{\strut\vfil}%
+ %
+ % TeX does not even consider page breaks if a penalty added to the
+ % main vertical list is 10000 or more. But in order to see if the
+ % empty box we just added fits on the page, we must make it consider
+ % page breaks. On the other hand, we don't want to actually break the
+ % page after the empty box. So we use a penalty of 9999.
+ %
+ % There is an extremely small chance that TeX will actually break the
+ % page at this \penalty, if there are no other feasible breakpoints in
+ % sight. (If the user is using lots of big @group commands, which
+ % almost-but-not-quite fill up a page, TeX will have a hard time doing
+ % good page breaking, for example.) However, I could not construct an
+ % example where a page broke at this \penalty; if it happens in a real
+ % document, then we can reconsider our strategy.
+ \penalty9999
+ %
+ % Back up by the size of the box, whether we did a page break or not.
+ \kern -#1\mil
+ %
+ % Do not allow a page break right after this kern.
+ \nobreak
+ \fi
+}
+
+% @br forces paragraph break (and is undocumented).
+
+\let\br = \par
+
+% @page forces the start of a new page.
+%
+\def\page{\par\vfill\supereject}
+
+% @exdent text....
+% outputs text on separate line in roman font, starting at standard page margin
+
+% This records the amount of indent in the innermost environment.
+% That's how much \exdent should take out.
+\newskip\exdentamount
+
+% This defn is used inside fill environments such as @defun.
+\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
+
+% This defn is used inside nofill environments such as @example.
+\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
+ \leftline{\hskip\leftskip{\rm#1}}}}
+
+% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
+% paragraph. For more general purposes, use the \margin insertion
+% class. WHICH is `l' or `r'.
+%
+\newskip\inmarginspacing \inmarginspacing=1cm
+\def\strutdepth{\dp\strutbox}
+%
+\def\doinmargin#1#2{\strut\vadjust{%
+ \nobreak
+ \kern-\strutdepth
+ \vtop to \strutdepth{%
+ \baselineskip=\strutdepth
+ \vss
+ % if you have multiple lines of stuff to put here, you'll need to
+ % make the vbox yourself of the appropriate size.
+ \ifx#1l%
+ \llap{\ignorespaces #2\hskip\inmarginspacing}%
+ \else
+ \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
+ \fi
+ \null
+ }%
+}}
+\def\inleftmargin{\doinmargin l}
+\def\inrightmargin{\doinmargin r}
+%
+% @inmargin{TEXT [, RIGHT-TEXT]}
+% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
+% else use TEXT for both).
+%
+\def\inmargin#1{\parseinmargin #1,,\finish}
+\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0 > 0pt
+ \def\lefttext{#1}% have both texts
+ \def\righttext{#2}%
+ \else
+ \def\lefttext{#1}% have only one text
+ \def\righttext{#1}%
+ \fi
+ %
+ \ifodd\pageno
+ \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
+ \else
+ \def\temp{\inleftmargin\lefttext}%
+ \fi
+ \temp
+}
+
+% @include file insert text of that file as input.
+%
+\def\include{\parseargusing\filenamecatcodes\includezzz}
+\def\includezzz#1{%
+ \pushthisfilestack
+ \def\thisfile{#1}%
+ {%
+ \makevalueexpandable
+ \def\temp{\input #1 }%
+ \expandafter
+ }\temp
+ \popthisfilestack
+}
+\def\filenamecatcodes{%
+ \catcode`\\=\other
+ \catcode`~=\other
+ \catcode`^=\other
+ \catcode`_=\other
+ \catcode`|=\other
+ \catcode`<=\other
+ \catcode`>=\other
+ \catcode`+=\other
+ \catcode`-=\other
+}
+
+\def\pushthisfilestack{%
+ \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
+}
+\def\pushthisfilestackX{%
+ \expandafter\pushthisfilestackY\thisfile\StackTerm
+}
+\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
+ \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
+}
+
+\def\popthisfilestack{\errthisfilestackempty}
+\def\errthisfilestackempty{\errmessage{Internal error:
+ the stack of filenames is empty.}}
+
+\def\thisfile{}
+
+% @center line
+% outputs that line, centered.
+%
+\parseargdef\center{%
+ \ifhmode
+ \let\next\centerH
+ \else
+ \let\next\centerV
+ \fi
+ \next{\hfil \ignorespaces#1\unskip \hfil}%
+}
+\def\centerH#1{%
+ {%
+ \hfil\break
+ \advance\hsize by -\leftskip
+ \advance\hsize by -\rightskip
+ \line{#1}%
+ \break
+ }%
+}
+\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
+
+% @sp n outputs n lines of vertical space
+
+\parseargdef\sp{\vskip #1\baselineskip}
+
+% @comment ...line which is ignored...
+% @c is the same as @comment
+% @ignore ... @end ignore is another way to write a comment
+
+\def\comment{\begingroup \catcode`\^^M=\other%
+\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
+\commentxxx}
+{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
+
+\let\c=\comment
+
+% @paragraphindent NCHARS
+% We'll use ems for NCHARS, close enough.
+% NCHARS can also be the word `asis' or `none'.
+% We cannot feasibly implement @paragraphindent asis, though.
+%
+\def\asisword{asis} % no translation, these are keywords
+\def\noneword{none}
+%
+\parseargdef\paragraphindent{%
+ \def\temp{#1}%
+ \ifx\temp\asisword
+ \else
+ \ifx\temp\noneword
+ \defaultparindent = 0pt
+ \else
+ \defaultparindent = #1em
+ \fi
+ \fi
+ \parindent = \defaultparindent
+}
+
+% @exampleindent NCHARS
+% We'll use ems for NCHARS like @paragraphindent.
+% It seems @exampleindent asis isn't necessary, but
+% I preserve it to make it similar to @paragraphindent.
+\parseargdef\exampleindent{%
+ \def\temp{#1}%
+ \ifx\temp\asisword
+ \else
+ \ifx\temp\noneword
+ \lispnarrowing = 0pt
+ \else
+ \lispnarrowing = #1em
+ \fi
+ \fi
+}
+
+% @firstparagraphindent WORD
+% If WORD is `none', then suppress indentation of the first paragraph
+% after a section heading. If WORD is `insert', then do indent at such
+% paragraphs.
+%
+% The paragraph indentation is suppressed or not by calling
+% \suppressfirstparagraphindent, which the sectioning commands do.
+% We switch the definition of this back and forth according to WORD.
+% By default, we suppress indentation.
+%
+\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
+\def\insertword{insert}
+%
+\parseargdef\firstparagraphindent{%
+ \def\temp{#1}%
+ \ifx\temp\noneword
+ \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
+ \else\ifx\temp\insertword
+ \let\suppressfirstparagraphindent = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @firstparagraphindent option `\temp'}%
+ \fi\fi
+}
+
+% Here is how we actually suppress indentation. Redefine \everypar to
+% \kern backwards by \parindent, and then reset itself to empty.
+%
+% We also make \indent itself not actually do anything until the next
+% paragraph.
+%
+\gdef\dosuppressfirstparagraphindent{%
+ \gdef\indent{%
+ \restorefirstparagraphindent
+ \indent
+ }%
+ \gdef\noindent{%
+ \restorefirstparagraphindent
+ \noindent
+ }%
+ \global\everypar = {%
+ \kern -\parindent
+ \restorefirstparagraphindent
+ }%
+}
+
+\gdef\restorefirstparagraphindent{%
+ \global \let \indent = \ptexindent
+ \global \let \noindent = \ptexnoindent
+ \global \everypar = {}%
+}
+
+
+% @asis just yields its argument. Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math outputs its argument in math mode.
+%
+% One complication: _ usually means subscripts, but it could also mean
+% an actual _ character, as in @math{@var{some_variable} + 1}. So make
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+ \catcode`\_ = \active
+ \gdef\mathunderscore{%
+ \catcode`\_=\active
+ \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+ }
+}
+% Another complication: we want \\ (and @\) to output a \ character.
+% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
+% this is not advertised and we don't care. Texinfo does not
+% otherwise define @\.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+ \tex
+ \mathunderscore
+ \let\\ = \mathbackslash
+ \mathactive
+ $\finishmath
+}
+\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex.
+
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
+%
+{
+ \catcode`^ = \active
+ \catcode`< = \active
+ \catcode`> = \active
+ \catcode`+ = \active
+ \gdef\mathactive{%
+ \let^ = \ptexhat
+ \let< = \ptexless
+ \let> = \ptexgtr
+ \let+ = \ptexplus
+ }
+}
+
+% @bullet and @minus need the same treatment as @math, just above.
+\def\bullet{$\ptexbullet$}
+\def\minus{$-$}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in the cm
+% typewriter fonts as three actual period characters; on the other hand,
+% in other typewriter fonts three periods are wider than 1.5em. So do
+% whichever is larger.
+%
+\def\dots{%
+ \leavevmode
+ \setbox0=\hbox{...}% get width of three periods
+ \ifdim\wd0 > 1.5em
+ \dimen0 = \wd0
+ \else
+ \dimen0 = 1.5em
+ \fi
+ \hbox to \dimen0{%
+ \hskip 0pt plus.25fil
+ .\hskip 0pt plus1fil
+ .\hskip 0pt plus1fil
+ .\hskip 0pt plus.5fil
+ }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+ \dots
+ \spacefactor=\endofsentencespacefactor
+}
+
+% @comma{} is so commas can be inserted into text without messing up
+% Texinfo's parsing.
+%
+\let\comma = ,
+
+% @refill is a no-op.
+\let\refill=\relax
+
+% If working on a large document in chapters, it is convenient to
+% be able to disable indexing, cross-referencing, and contents, for test runs.
+% This is done with @novalidate (before @setfilename).
+%
+\newif\iflinks \linkstrue % by default we want the aux files.
+\let\novalidate = \linksfalse
+
+% @setfilename is done at the beginning of every texinfo file.
+% So open here the files we need to have open while reading the input.
+% This makes it possible to make a .fmt file for texinfo.
+\def\setfilename{%
+ \fixbackslash % Turn off hack to swallow `\input texinfo'.
+ \iflinks
+ \tryauxfile
+ % Open the new aux file. TeX will close it automatically at exit.
+ \immediate\openout\auxfile=\jobname.aux
+ \fi % \openindices needs to do some work in any case.
+ \openindices
+ \let\setfilename=\comment % Ignore extra @setfilename cmds.
+ %
+ % If texinfo.cnf is present on the system, read it.
+ % Useful for site-wide @afourpaper, etc.
+ \openin 1 texinfo.cnf
+ \ifeof 1 \else \input texinfo.cnf \fi
+ \closein 1
+ %
+ \comment % Ignore the actual filename.
+}
+
+% Called from \setfilename.
+%
+\def\openindices{%
+ \newindex{cp}%
+ \newcodeindex{fn}%
+ \newcodeindex{vr}%
+ \newcodeindex{tp}%
+ \newcodeindex{ky}%
+ \newcodeindex{pg}%
+}
+
+% @bye.
+\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
+
+
+\message{pdf,}
+% adobe `portable' document format
+\newcount\tempnum
+\newcount\lnkcount
+\newtoks\filename
+\newcount\filenamelength
+\newcount\pgn
+\newtoks\toksA
+\newtoks\toksB
+\newtoks\toksC
+\newtoks\toksD
+\newbox\boxA
+\newcount\countA
+\newif\ifpdf
+\newif\ifpdfmakepagedest
+
+% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
+% can be set). So we test for \relax and 0 as well as \undefined,
+% borrowed from ifpdf.sty.
+\ifx\pdfoutput\undefined
+\else
+ \ifx\pdfoutput\relax
+ \else
+ \ifcase\pdfoutput
+ \else
+ \pdftrue
+ \fi
+ \fi
+\fi
+
+% PDF uses PostScript string constants for the names of xref targets,
+% for display in the outlines, and in other places. Thus, we have to
+% double any backslashes. Otherwise, a name like "\node" will be
+% interpreted as a newline (\n), followed by o, d, e. Not good.
+% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
+% (and related messages, the final outcome is that it is up to the TeX
+% user to double the backslashes and otherwise make the string valid, so
+% that's what we do).
+
+% double active backslashes.
+%
+{\catcode`\@=0 \catcode`\\=\active
+ @gdef@activebackslashdouble{%
+ @catcode`@\=@active
+ @let\=@doublebackslash}
+}
+
+% To handle parens, we must adopt a different approach, since parens are
+% not active characters. hyperref.dtx (which has the same problem as
+% us) handles it with this amazing macro to replace tokens, with minor
+% changes for Texinfo. It is included here under the GPL by permission
+% from the author, Heiko Oberdiek.
+%
+% #1 is the tokens to replace.
+% #2 is the replacement.
+% #3 is the control sequence with the string.
+%
+\def\HyPsdSubst#1#2#3{%
+ \def\HyPsdReplace##1#1##2\END{%
+ ##1%
+ \ifx\\##2\\%
+ \else
+ #2%
+ \HyReturnAfterFi{%
+ \HyPsdReplace##2\END
+ }%
+ \fi
+ }%
+ \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
+}
+\long\def\HyReturnAfterFi#1\fi{\fi#1}
+
+% #1 is a control sequence in which to do the replacements.
+\def\backslashparens#1{%
+ \xdef#1{#1}% redefine it as its expansion; the definition is simply
+ % \lastnode when called from \setref -> \pdfmkdest.
+ \HyPsdSubst{(}{\realbackslash(}{#1}%
+ \HyPsdSubst{)}{\realbackslash)}{#1}%
+}
+
+\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
+with PDF output, and none of those formats could be found. (.eps cannot
+be supported due to the design of the PDF format; use regular TeX (DVI
+output) for that.)}
+
+\ifpdf
+ \input pdfcolor
+ \pdfcatalog{/PageMode /UseOutlines}
+ %
+ % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
+ \def\dopdfimage#1#2#3{%
+ \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
+ \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+ %
+ % pdftex (and the PDF format) support .png, .jpg, .pdf (among
+ % others). Let's try in that order.
+ \let\pdfimgext=\empty
+ \begingroup
+ \openin 1 #1.png \ifeof 1
+ \openin 1 #1.jpg \ifeof 1
+ \openin 1 #1.jpeg \ifeof 1
+ \openin 1 #1.JPG \ifeof 1
+ \openin 1 #1.pdf \ifeof 1
+ \errhelp = \nopdfimagehelp
+ \errmessage{Could not find image file #1 for pdf}%
+ \else \gdef\pdfimgext{pdf}%
+ \fi
+ \else \gdef\pdfimgext{JPG}%
+ \fi
+ \else \gdef\pdfimgext{jpeg}%
+ \fi
+ \else \gdef\pdfimgext{jpg}%
+ \fi
+ \else \gdef\pdfimgext{png}%
+ \fi
+ \closein 1
+ \endgroup
+ %
+ % without \immediate, pdftex seg faults when the same image is
+ % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.)
+ \ifnum\pdftexversion < 14
+ \immediate\pdfimage
+ \else
+ \immediate\pdfximage
+ \fi
+ \ifdim \wd0 >0pt width \imagewidth \fi
+ \ifdim \wd2 >0pt height \imageheight \fi
+ \ifnum\pdftexversion<13
+ #1.\pdfimgext
+ \else
+ {#1.\pdfimgext}%
+ \fi
+ \ifnum\pdftexversion < 14 \else
+ \pdfrefximage \pdflastximage
+ \fi}
+ %
+ \def\pdfmkdest#1{{%
+ % We have to set dummies so commands such as @code, and characters
+ % such as \, aren't expanded when present in a section title.
+ \indexnofonts
+ \turnoffactive
+ \activebackslashdouble
+ \makevalueexpandable
+ \def\pdfdestname{#1}%
+ \backslashparens\pdfdestname
+ \pdfdest name{\pdfdestname} xyz%
+ }}
+ %
+ % used to mark target names; must be expandable.
+ \def\pdfmkpgn#1{#1}
+ %
+ \let\linkcolor = \Blue % was Cyan, but that seems light?
+ \def\endlink{\Black\pdfendlink}
+ %
+ % Adding outlines to PDF; macros for calculating structure of outlines
+ % come from Petr Olsak
+ \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
+ \else \csname#1\endcsname \fi}
+ \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
+ \advance\tempnum by 1
+ \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
+ %
+ % #1 is the section text, which is what will be displayed in the
+ % outline by the pdf viewer. #2 is the pdf expression for the number
+ % of subentries (or empty, for subsubsections). #3 is the node text,
+ % which might be empty if this toc entry had no corresponding node.
+ % #4 is the page number
+ %
+ \def\dopdfoutline#1#2#3#4{%
+ % Generate a link to the node text if that exists; else, use the
+ % page number. We could generate a destination for the section
+ % text in the case where a section has no node, but it doesn't
+ % seem worth the trouble, since most documents are normally structured.
+ \def\pdfoutlinedest{#3}%
+ \ifx\pdfoutlinedest\empty
+ \def\pdfoutlinedest{#4}%
+ \else
+ % Doubled backslashes in the name.
+ {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
+ \backslashparens\pdfoutlinedest}%
+ \fi
+ %
+ % Also double the backslashes in the display string.
+ {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
+ \backslashparens\pdfoutlinetext}%
+ %
+ \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
+ }
+ %
+ \def\pdfmakeoutlines{%
+ \begingroup
+ % Thanh's hack / proper braces in bookmarks
+ \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
+ \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
+ %
+ % Read toc silently, to get counts of subentries for \pdfoutline.
+ \def\numchapentry##1##2##3##4{%
+ \def\thischapnum{##2}%
+ \def\thissecnum{0}%
+ \def\thissubsecnum{0}%
+ }%
+ \def\numsecentry##1##2##3##4{%
+ \advancenumber{chap\thischapnum}%
+ \def\thissecnum{##2}%
+ \def\thissubsecnum{0}%
+ }%
+ \def\numsubsecentry##1##2##3##4{%
+ \advancenumber{sec\thissecnum}%
+ \def\thissubsecnum{##2}%
+ }%
+ \def\numsubsubsecentry##1##2##3##4{%
+ \advancenumber{subsec\thissubsecnum}%
+ }%
+ \def\thischapnum{0}%
+ \def\thissecnum{0}%
+ \def\thissubsecnum{0}%
+ %
+ % use \def rather than \let here because we redefine \chapentry et
+ % al. a second time, below.
+ \def\appentry{\numchapentry}%
+ \def\appsecentry{\numsecentry}%
+ \def\appsubsecentry{\numsubsecentry}%
+ \def\appsubsubsecentry{\numsubsubsecentry}%
+ \def\unnchapentry{\numchapentry}%
+ \def\unnsecentry{\numsecentry}%
+ \def\unnsubsecentry{\numsubsecentry}%
+ \def\unnsubsubsecentry{\numsubsubsecentry}%
+ \readdatafile{toc}%
+ %
+ % Read toc second time, this time actually producing the outlines.
+ % The `-' means take the \expnumber as the absolute number of
+ % subentries, which we calculated on our first read of the .toc above.
+ %
+ % We use the node names as the destinations.
+ \def\numchapentry##1##2##3##4{%
+ \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
+ \def\numsecentry##1##2##3##4{%
+ \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
+ \def\numsubsecentry##1##2##3##4{%
+ \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
+ \def\numsubsubsecentry##1##2##3##4{% count is always zero
+ \dopdfoutline{##1}{}{##3}{##4}}%
+ %
+ % PDF outlines are displayed using system fonts, instead of
+ % document fonts. Therefore we cannot use special characters,
+ % since the encoding is unknown. For example, the eogonek from
+ % Latin 2 (0xea) gets translated to a | character. Info from
+ % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
+ %
+ % xx to do this right, we have to translate 8-bit characters to
+ % their "best" equivalent, based on the @documentencoding. Right
+ % now, I guess we'll just let the pdf reader have its way.
+ \indexnofonts
+ \setupdatafile
+ \catcode`\\=\active \otherbackslash
+ \input \jobname.toc
+ \endgroup
+ }
+ %
+ \def\skipspaces#1{\def\PP{#1}\def\D{|}%
+ \ifx\PP\D\let\nextsp\relax
+ \else\let\nextsp\skipspaces
+ \ifx\p\space\else\addtokens{\filename}{\PP}%
+ \advance\filenamelength by 1
+ \fi
+ \fi
+ \nextsp}
+ \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
+ \ifnum\pdftexversion < 14
+ \let \startlink \pdfannotlink
+ \else
+ \let \startlink \pdfstartlink
+ \fi
+ % make a live url in pdf output.
+ \def\pdfurl#1{%
+ \begingroup
+ % it seems we really need yet another set of dummies; have not
+ % tried to figure out what each command should do in the context
+ % of @url. for now, just make @/ a no-op, that's the only one
+ % people have actually reported a problem with.
+ %
+ \normalturnoffactive
+ \def\@{@}%
+ \let\/=\empty
+ \makevalueexpandable
+ \leavevmode\Red
+ \startlink attr{/Border [0 0 0]}%
+ user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
+ \endgroup}
+ \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
+ \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+ \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
+ \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
+ \def\maketoks{%
+ \expandafter\poptoks\the\toksA|ENDTOKS|\relax
+ \ifx\first0\adn0
+ \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
+ \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
+ \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
+ \else
+ \ifnum0=\countA\else\makelink\fi
+ \ifx\first.\let\next=\done\else
+ \let\next=\maketoks
+ \addtokens{\toksB}{\the\toksD}
+ \ifx\first,\addtokens{\toksB}{\space}\fi
+ \fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \next}
+ \def\makelink{\addtokens{\toksB}%
+ {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
+ \def\pdflink#1{%
+ \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
+ \linkcolor #1\endlink}
+ \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
+\else
+ \let\pdfmkdest = \gobble
+ \let\pdfurl = \gobble
+ \let\endlink = \relax
+ \let\linkcolor = \relax
+ \let\pdfmakeoutlines = \relax
+\fi % \ifx\pdfoutput
+
+
+\message{fonts,}
+
+% Change the current font style to #1, remembering it in \curfontstyle.
+% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
+% italics, not bold italics.
+%
+\def\setfontstyle#1{%
+ \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
+ \csname ten#1\endcsname % change the current font
+}
+
+% Select #1 fonts with the current style.
+%
+\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
+
+\def\rm{\fam=0 \setfontstyle{rm}}
+\def\it{\fam=\itfam \setfontstyle{it}}
+\def\sl{\fam=\slfam \setfontstyle{sl}}
+\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
+\def\tt{\fam=\ttfam \setfontstyle{tt}}
+
+% Texinfo sort of supports the sans serif font style, which plain TeX does not.
+% So we set up a \sf.
+\newfam\sffam
+\def\sf{\fam=\sffam \setfontstyle{sf}}
+\let\li = \sf % Sometimes we call it \li, not \sf.
+
+% We don't need math for this font style.
+\def\ttsl{\setfontstyle{ttsl}}
+
+
+% Default leading.
+\newdimen\textleading \textleading = 13.2pt
+
+% Set the baselineskip to #1, and the lineskip and strut size
+% correspondingly. There is no deep meaning behind these magic numbers
+% used as factors; they just match (closely enough) what Knuth defined.
+%
+\def\lineskipfactor{.08333}
+\def\strutheightpercent{.70833}
+\def\strutdepthpercent {.29167}
+%
+\def\setleading#1{%
+ \normalbaselineskip = #1\relax
+ \normallineskip = \lineskipfactor\normalbaselineskip
+ \normalbaselines
+ \setbox\strutbox =\hbox{%
+ \vrule width0pt height\strutheightpercent\baselineskip
+ depth \strutdepthpercent \baselineskip
+ }%
+}
+
+
+% Set the font macro #1 to the font named #2, adding on the
+% specified font prefix (normally `cm').
+% #3 is the font's design size, #4 is a scale factor
+\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
+
+
+% Use cm as the default font prefix.
+% To specify the font prefix, you must define \fontprefix
+% before you read in texinfo.tex.
+\ifx\fontprefix\undefined
+\def\fontprefix{cm}
+\fi
+% Support font families that don't use the same naming scheme as CM.
+\def\rmshape{r}
+\def\rmbshape{bx} %where the normal face is bold
+\def\bfshape{b}
+\def\bxshape{bx}
+\def\ttshape{tt}
+\def\ttbshape{tt}
+\def\ttslshape{sltt}
+\def\itshape{ti}
+\def\itbshape{bxti}
+\def\slshape{sl}
+\def\slbshape{bxsl}
+\def\sfshape{ss}
+\def\sfbshape{ss}
+\def\scshape{csc}
+\def\scbshape{csc}
+
+% Definitions for a main text size of 11pt. This is the default in
+% Texinfo.
+%
+\def\definetextfontsizexi{%
+% Text fonts (11.2pt, magstep1).
+\def\textnominalsize{11pt}
+\edef\mainmagstep{\magstephalf}
+\setfont\textrm\rmshape{10}{\mainmagstep}
+\setfont\texttt\ttshape{10}{\mainmagstep}
+\setfont\textbf\bfshape{10}{\mainmagstep}
+\setfont\textit\itshape{10}{\mainmagstep}
+\setfont\textsl\slshape{10}{\mainmagstep}
+\setfont\textsf\sfshape{10}{\mainmagstep}
+\setfont\textsc\scshape{10}{\mainmagstep}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstep1}
+\setfont\deftt\ttshape{10}{\magstep1}
+\setfont\defttsl\ttslshape{10}{\magstep1}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}
+\setfont\smalltt\ttshape{9}{1000}
+\setfont\smallbf\bfshape{10}{900}
+\setfont\smallit\itshape{9}{1000}
+\setfont\smallsl\slshape{9}{1000}
+\setfont\smallsf\sfshape{9}{1000}
+\setfont\smallsc\scshape{10}{900}
+\setfont\smallttsl\ttslshape{10}{900}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}
+\setfont\smallertt\ttshape{8}{1000}
+\setfont\smallerbf\bfshape{10}{800}
+\setfont\smallerit\itshape{8}{1000}
+\setfont\smallersl\slshape{8}{1000}
+\setfont\smallersf\sfshape{8}{1000}
+\setfont\smallersc\scshape{10}{800}
+\setfont\smallerttsl\ttslshape{10}{800}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}
+\setfont\titleit\itbshape{10}{\magstep4}
+\setfont\titlesl\slbshape{10}{\magstep4}
+\setfont\titlett\ttbshape{12}{\magstep3}
+\setfont\titlettsl\ttslshape{10}{\magstep4}
+\setfont\titlesf\sfbshape{17}{\magstep1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\authorrm{\secrm}
+\def\authortt{\sectt}
+
+% Chapter (and unnumbered) fonts (17.28pt).
+\def\chapnominalsize{17pt}
+\setfont\chaprm\rmbshape{12}{\magstep2}
+\setfont\chapit\itbshape{10}{\magstep3}
+\setfont\chapsl\slbshape{10}{\magstep3}
+\setfont\chaptt\ttbshape{12}{\magstep2}
+\setfont\chapttsl\ttslshape{10}{\magstep3}
+\setfont\chapsf\sfbshape{17}{1000}
+\let\chapbf=\chaprm
+\setfont\chapsc\scbshape{10}{\magstep3}
+\font\chapi=cmmi12 scaled \magstep2
+\font\chapsy=cmsy10 scaled \magstep3
+
+% Section fonts (14.4pt).
+\def\secnominalsize{14pt}
+\setfont\secrm\rmbshape{12}{\magstep1}
+\setfont\secit\itbshape{10}{\magstep2}
+\setfont\secsl\slbshape{10}{\magstep2}
+\setfont\sectt\ttbshape{12}{\magstep1}
+\setfont\secttsl\ttslshape{10}{\magstep2}
+\setfont\secsf\sfbshape{12}{\magstep1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep2}
+\font\seci=cmmi12 scaled \magstep1
+\font\secsy=cmsy10 scaled \magstep2
+
+% Subsection fonts (13.15pt).
+\def\ssecnominalsize{13pt}
+\setfont\ssecrm\rmbshape{12}{\magstephalf}
+\setfont\ssecit\itbshape{10}{1315}
+\setfont\ssecsl\slbshape{10}{1315}
+\setfont\ssectt\ttbshape{12}{\magstephalf}
+\setfont\ssecttsl\ttslshape{10}{1315}
+\setfont\ssecsf\sfbshape{12}{\magstephalf}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1315}
+\font\sseci=cmmi12 scaled \magstephalf
+\font\ssecsy=cmsy10 scaled 1315
+
+% Reduced fonts for @acro in text (10pt).
+\def\reducednominalsize{10pt}
+\setfont\reducedrm\rmshape{10}{1000}
+\setfont\reducedtt\ttshape{10}{1000}
+\setfont\reducedbf\bfshape{10}{1000}
+\setfont\reducedit\itshape{10}{1000}
+\setfont\reducedsl\slshape{10}{1000}
+\setfont\reducedsf\sfshape{10}{1000}
+\setfont\reducedsc\scshape{10}{1000}
+\setfont\reducedttsl\ttslshape{10}{1000}
+\font\reducedi=cmmi10
+\font\reducedsy=cmsy10
+
+% reset the current fonts
+\textfonts
+\rm
+} % end of 11pt text font size definitions
+
+
+% Definitions to make the main text be 10pt Computer Modern, with
+% section, chapter, etc., sizes following suit. This is for the GNU
+% Press printing of the Emacs 22 manual. Maybe other manuals in the
+% future. Used with @smallbook, which sets the leading to 12pt.
+%
+\def\definetextfontsizex{%
+% Text fonts (10pt).
+\def\textnominalsize{10pt}
+\edef\mainmagstep{1000}
+\setfont\textrm\rmshape{10}{\mainmagstep}
+\setfont\texttt\ttshape{10}{\mainmagstep}
+\setfont\textbf\bfshape{10}{\mainmagstep}
+\setfont\textit\itshape{10}{\mainmagstep}
+\setfont\textsl\slshape{10}{\mainmagstep}
+\setfont\textsf\sfshape{10}{\mainmagstep}
+\setfont\textsc\scshape{10}{\mainmagstep}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstephalf}
+\setfont\deftt\ttshape{10}{\magstephalf}
+\setfont\defttsl\ttslshape{10}{\magstephalf}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}
+\setfont\smalltt\ttshape{9}{1000}
+\setfont\smallbf\bfshape{10}{900}
+\setfont\smallit\itshape{9}{1000}
+\setfont\smallsl\slshape{9}{1000}
+\setfont\smallsf\sfshape{9}{1000}
+\setfont\smallsc\scshape{10}{900}
+\setfont\smallttsl\ttslshape{10}{900}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}
+\setfont\smallertt\ttshape{8}{1000}
+\setfont\smallerbf\bfshape{10}{800}
+\setfont\smallerit\itshape{8}{1000}
+\setfont\smallersl\slshape{8}{1000}
+\setfont\smallersf\sfshape{8}{1000}
+\setfont\smallersc\scshape{10}{800}
+\setfont\smallerttsl\ttslshape{10}{800}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}
+\setfont\titleit\itbshape{10}{\magstep4}
+\setfont\titlesl\slbshape{10}{\magstep4}
+\setfont\titlett\ttbshape{12}{\magstep3}
+\setfont\titlettsl\ttslshape{10}{\magstep4}
+\setfont\titlesf\sfbshape{17}{\magstep1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\authorrm{\secrm}
+\def\authortt{\sectt}
+
+% Chapter fonts (14.4pt).
+\def\chapnominalsize{14pt}
+\setfont\chaprm\rmbshape{12}{\magstep1}
+\setfont\chapit\itbshape{10}{\magstep2}
+\setfont\chapsl\slbshape{10}{\magstep2}
+\setfont\chaptt\ttbshape{12}{\magstep1}
+\setfont\chapttsl\ttslshape{10}{\magstep2}
+\setfont\chapsf\sfbshape{12}{\magstep1}
+\let\chapbf\chaprm
+\setfont\chapsc\scbshape{10}{\magstep2}
+\font\chapi=cmmi12 scaled \magstep1
+\font\chapsy=cmsy10 scaled \magstep2
+
+% Section fonts (12pt).
+\def\secnominalsize{12pt}
+\setfont\secrm\rmbshape{12}{1000}
+\setfont\secit\itbshape{10}{\magstep1}
+\setfont\secsl\slbshape{10}{\magstep1}
+\setfont\sectt\ttbshape{12}{1000}
+\setfont\secttsl\ttslshape{10}{\magstep1}
+\setfont\secsf\sfbshape{12}{1000}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep1}
+\font\seci=cmmi12
+\font\secsy=cmsy10 scaled \magstep1
+
+% Subsection fonts (10pt).
+\def\ssecnominalsize{10pt}
+\setfont\ssecrm\rmbshape{10}{1000}
+\setfont\ssecit\itbshape{10}{1000}
+\setfont\ssecsl\slbshape{10}{1000}
+\setfont\ssectt\ttbshape{10}{1000}
+\setfont\ssecttsl\ttslshape{10}{1000}
+\setfont\ssecsf\sfbshape{10}{1000}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1000}
+\font\sseci=cmmi10
+\font\ssecsy=cmsy10
+
+% Reduced fonts for @acro in text (9pt).
+\def\reducednominalsize{9pt}
+\setfont\reducedrm\rmshape{9}{1000}
+\setfont\reducedtt\ttshape{9}{1000}
+\setfont\reducedbf\bfshape{10}{900}
+\setfont\reducedit\itshape{9}{1000}
+\setfont\reducedsl\slshape{9}{1000}
+\setfont\reducedsf\sfshape{9}{1000}
+\setfont\reducedsc\scshape{10}{900}
+\setfont\reducedttsl\ttslshape{10}{900}
+\font\reducedi=cmmi9
+\font\reducedsy=cmsy9
+
+% reduce space between paragraphs
+\divide\parskip by 2
+
+% reset the current fonts
+\textfonts
+\rm
+} % end of 10pt text font size definitions
+
+
+% We provide the user-level command
+% @fonttextsize 10
+% (or 11) to redefine the text font size. pt is assumed.
+%
+\def\xword{10}
+\def\xiword{11}
+%
+\parseargdef\fonttextsize{%
+ \def\textsizearg{#1}%
+ \wlog{doing @fonttextsize \textsizearg}%
+ %
+ % Set \globaldefs so that documents can use this inside @tex, since
+ % makeinfo 4.8 does not support it, but we need it nonetheless.
+ %
+ \begingroup \globaldefs=1
+ \ifx\textsizearg\xword \definetextfontsizex
+ \else \ifx\textsizearg\xiword \definetextfontsizexi
+ \else
+ \errhelp=\EMsimple
+ \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
+ \fi\fi
+ \endgroup
+}
+
+
+% In order for the font changes to affect most math symbols and letters,
+% we have to define the \textfont of the standard families. Since
+% texinfo doesn't allow for producing subscripts and superscripts except
+% in the main text, we don't bother to reset \scriptfont and
+% \scriptscriptfont (which would also require loading a lot more fonts).
+%
+\def\resetmathfonts{%
+ \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
+ \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
+ \textfont\ttfam=\tentt \textfont\sffam=\tensf
+}
+
+% The font-changing commands redefine the meanings of \tenSTYLE, instead
+% of just \STYLE. We do this because \STYLE needs to also set the
+% current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire
+% \tenSTYLE to set the current font.
+%
+% Each font-changing command also sets the names \lsize (one size lower)
+% and \lllsize (three sizes lower). These relative commands are used in
+% the LaTeX logo and acronyms.
+%
+% This all needs generalizing, badly.
+%
+\def\textfonts{%
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
+ \let\tenttsl=\textttsl
+ \def\curfontsize{text}%
+ \def\lsize{reduced}\def\lllsize{smaller}%
+ \resetmathfonts \setleading{\textleading}}
+\def\titlefonts{%
+ \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
+ \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
+ \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
+ \let\tenttsl=\titlettsl
+ \def\curfontsize{title}%
+ \def\lsize{chap}\def\lllsize{subsec}%
+ \resetmathfonts \setleading{25pt}}
+\def\titlefont#1{{\titlefonts\rm #1}}
+\def\chapfonts{%
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
+ \let\tenttsl=\chapttsl
+ \def\curfontsize{chap}%
+ \def\lsize{sec}\def\lllsize{text}%
+ \resetmathfonts \setleading{19pt}}
+\def\secfonts{%
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
+ \let\tenttsl=\secttsl
+ \def\curfontsize{sec}%
+ \def\lsize{subsec}\def\lllsize{reduced}%
+ \resetmathfonts \setleading{16pt}}
+\def\subsecfonts{%
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
+ \let\tenttsl=\ssecttsl
+ \def\curfontsize{ssec}%
+ \def\lsize{text}\def\lllsize{small}%
+ \resetmathfonts \setleading{15pt}}
+\let\subsubsecfonts = \subsecfonts
+\def\reducedfonts{%
+ \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
+ \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
+ \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
+ \let\tenttsl=\reducedttsl
+ \def\curfontsize{reduced}%
+ \def\lsize{small}\def\lllsize{smaller}%
+ \resetmathfonts \setleading{10.5pt}}
+\def\smallfonts{%
+ \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
+ \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
+ \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
+ \let\tenttsl=\smallttsl
+ \def\curfontsize{small}%
+ \def\lsize{smaller}\def\lllsize{smaller}%
+ \resetmathfonts \setleading{10.5pt}}
+\def\smallerfonts{%
+ \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
+ \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
+ \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
+ \let\tenttsl=\smallerttsl
+ \def\curfontsize{smaller}%
+ \def\lsize{smaller}\def\lllsize{smaller}%
+ \resetmathfonts \setleading{9.5pt}}
+
+% Set the fonts to use with the @small... environments.
+\let\smallexamplefonts = \smallfonts
+
+% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample
+% can fit this many characters:
+% 8.5x11=86 smallbook=72 a4=90 a5=69
+% If we use \scriptfonts (8pt), then we can fit this many characters:
+% 8.5x11=90+ smallbook=80 a4=90+ a5=77
+% For me, subjectively, the few extra characters that fit aren't worth
+% the additional smallness of 8pt. So I'm making the default 9pt.
+%
+% By the way, for comparison, here's what fits with @example (10pt):
+% 8.5x11=71 smallbook=60 a4=75 a5=58
+%
+% I wish the USA used A4 paper.
+% --karl, 24jan03.
+
+
+% Set up the default fonts, so we can use them for creating boxes.
+%
+\definetextfontsizexi
+
+% Define these so they can be easily changed for other fonts.
+\def\angleleft{$\langle$}
+\def\angleright{$\rangle$}
+
+% Count depth in font-changes, for error checks
+\newcount\fontdepth \fontdepth=0
+
+% Fonts for short table of contents.
+\setfont\shortcontrm\rmshape{12}{1000}
+\setfont\shortcontbf\bfshape{10}{\magstep1} % no cmb12
+\setfont\shortcontsl\slshape{12}{1000}
+\setfont\shortconttt\ttshape{12}{1000}
+
+%% Add scribe-like font environments, plus @l for inline lisp (usually sans
+%% serif) and @ii for TeX italic
+
+% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
+% unless the following character is such as not to need one.
+\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else
+ \ptexslash\fi\fi\fi}
+\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
+\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
+
+% like \smartslanted except unconditionally uses \ttsl.
+% @var is set to this for defun arguments.
+\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
+
+% like \smartslanted except unconditionally use \sl. We never want
+% ttsl for book titles, do we?
+\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
+
+\let\i=\smartitalic
+\let\slanted=\smartslanted
+\let\var=\smartslanted
+\let\dfn=\smartslanted
+\let\emph=\smartitalic
+
+% @b, explicit bold.
+\def\b#1{{\bf #1}}
+\let\strong=\b
+
+% @sansserif, explicit sans.
+\def\sansserif#1{{\sf #1}}
+
+% We can't just use \exhyphenpenalty, because that only has effect at
+% the end of a paragraph. Restore normal hyphenation at the end of the
+% group within which \nohyphenation is presumably called.
+%
+\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation}
+\def\restorehyphenation{\hyphenchar\font = `- }
+
+% Set sfcode to normal for the chars that usually have another value.
+% Can't use plain's \frenchspacing because it uses the `\x notation, and
+% sometimes \x has an active definition that messes things up.
+%
+\catcode`@=11
+ \def\plainfrenchspacing{%
+ \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
+ \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
+ \def\endofsentencespacefactor{1000}% for @. and friends
+ }
+ \def\plainnonfrenchspacing{%
+ \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
+ \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
+ \def\endofsentencespacefactor{3000}% for @. and friends
+ }
+\catcode`@=\other
+\def\endofsentencespacefactor{3000}% default
+
+\def\t#1{%
+ {\tt \rawbackslash \plainfrenchspacing #1}%
+ \null
+}
+\def\samp#1{`\tclose{#1}'\null}
+\setfont\keyrm\rmshape{8}{1000}
+\font\keysy=cmsy9
+\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
+ \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
+ \vbox{\hrule\kern-0.4pt
+ \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
+ \kern-0.4pt\hrule}%
+ \kern-.06em\raise0.4pt\hbox{\angleright}}}}
+\def\key #1{{\nohyphenation \uppercase{#1}}\null}
+% The old definition, with no lozenge:
+%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
+\def\ctrl #1{{\tt \rawbackslash \hat}#1}
+
+% @file, @option are the same as @samp.
+\let\file=\samp
+\let\option=\samp
+
+% @code is a modification of @t,
+% which makes spaces the same size as normal in the surrounding text.
+\def\tclose#1{%
+ {%
+ % Change normal interword space to be same as for the current font.
+ \spaceskip = \fontdimen2\font
+ %
+ % Switch to typewriter.
+ \tt
+ %
+ % But `\ ' produces the large typewriter interword space.
+ \def\ {{\spaceskip = 0pt{} }}%
+ %
+ % Turn off hyphenation.
+ \nohyphenation
+ %
+ \rawbackslash
+ \plainfrenchspacing
+ #1%
+ }%
+ \null
+}
+
+% We *must* turn on hyphenation at `-' and `_' in @code.
+% Otherwise, it is too hard to avoid overfull hboxes
+% in the Emacs manual, the Library manual, etc.
+
+% Unfortunately, TeX uses one parameter (\hyphenchar) to control
+% both hyphenation at - and hyphenation within words.
+% We must therefore turn them both off (\tclose does that)
+% and arrange explicitly to hyphenate at a dash.
+% -- rms.
+{
+ \catcode`\-=\active \catcode`\_=\active
+ \catcode`\'=\active \catcode`\`=\active
+ %
+ \global\def\code{\begingroup
+ \catcode\rquoteChar=\active \catcode\lquoteChar=\active
+ \let'\codequoteright \let`\codequoteleft
+ %
+ \catcode\dashChar=\active \catcode\underChar=\active
+ \ifallowcodebreaks
+ \let-\codedash
+ \let_\codeunder
+ \else
+ \let-\realdash
+ \let_\realunder
+ \fi
+ \codex
+ }
+}
+
+\def\realdash{-}
+\def\codedash{-\discretionary{}{}{}}
+\def\codeunder{%
+ % this is all so @math{@code{var_name}+1} can work. In math mode, _
+ % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
+ % will therefore expand the active definition of _, which is us
+ % (inside @code that is), therefore an endless loop.
+ \ifusingtt{\ifmmode
+ \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
+ \else\normalunderscore \fi
+ \discretionary{}{}{}}%
+ {\_}%
+}
+\def\codex #1{\tclose{#1}\endgroup}
+
+% An additional complication: the above will allow breaks after, e.g.,
+% each of the four underscores in __typeof__. This is undesirable in
+% some manuals, especially if they don't have long identifiers in
+% general. @allowcodebreaks provides a way to control this.
+%
+\newif\ifallowcodebreaks \allowcodebreakstrue
+
+\def\keywordtrue{true}
+\def\keywordfalse{false}
+
+\parseargdef\allowcodebreaks{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\keywordtrue
+ \allowcodebreakstrue
+ \else\ifx\txiarg\keywordfalse
+ \allowcodebreaksfalse
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
+ \fi\fi
+}
+
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+
+% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
+% `example' (@kbd uses ttsl only inside of @example and friends),
+% or `code' (@kbd uses normal tty font always).
+\parseargdef\kbdinputstyle{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\worddistinct
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+ \else\ifx\txiarg\wordexample
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+ \else\ifx\txiarg\wordcode
+ \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
+ \fi\fi\fi
+}
+\def\worddistinct{distinct}
+\def\wordexample{example}
+\def\wordcode{code}
+
+% Default is `distinct.'
+\kbdinputstyle distinct
+
+\def\xkey{\key}
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
+\ifx\one\xkey\ifx\threex\three \key{#2}%
+\else{\tclose{\kbdfont\look}}\fi
+\else{\tclose{\kbdfont\look}}\fi}
+
+% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
+\let\indicateurl=\code
+\let\env=\code
+\let\command=\code
+
+% @uref (abbreviation for `urlref') takes an optional (comma-separated)
+% second argument specifying the text to display and an optional third
+% arg as text to display instead of (rather than in addition to) the url
+% itself. First (mandatory) arg is the url. Perhaps eventually put in
+% a hypertex \special here.
+%
+\def\uref#1{\douref #1,,,\finish}
+\def\douref#1,#2,#3,#4\finish{\begingroup
+ \unsepspaces
+ \pdfurl{#1}%
+ \setbox0 = \hbox{\ignorespaces #3}%
+ \ifdim\wd0 > 0pt
+ \unhbox0 % third arg given, show only that
+ \else
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0 > 0pt
+ \ifpdf
+ \unhbox0 % PDF: 2nd arg given, show only it
+ \else
+ \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
+ \fi
+ \else
+ \code{#1}% only url given, so show it
+ \fi
+ \fi
+ \endlink
+\endgroup}
+
+% @url synonym for @uref, since that's how everyone uses it.
+%
+\let\url=\uref
+
+% rms does not like angle brackets --karl, 17may97.
+% So now @email is just like @uref, unless we are pdf.
+%
+%\def\email#1{\angleleft{\tt #1}\angleright}
+\ifpdf
+ \def\email#1{\doemail#1,,\finish}
+ \def\doemail#1,#2,#3\finish{\begingroup
+ \unsepspaces
+ \pdfurl{mailto:#1}%
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
+ \endlink
+ \endgroup}
+\else
+ \let\email=\uref
+\fi
+
+% Check if we are currently using a typewriter font. Since all the
+% Computer Modern typewriter fonts have zero interword stretch (and
+% shrink), and it is reasonable to expect all typewriter fonts to have
+% this property, we can check that font parameter.
+%
+\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
+
+% Typeset a dimension, e.g., `in' or `pt'. The only reason for the
+% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
+%
+\def\dmn#1{\thinspace #1}
+
+\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
+
+% @l was never documented to mean ``switch to the Lisp font'',
+% and it is not used as such in any manual I can find. We need it for
+% Polish suppressed-l. --karl, 22sep96.
+%\def\l#1{{\li #1}\null}
+
+% Explicit font changes: @r, @sc, undocumented @ii.
+\def\r#1{{\rm #1}} % roman font
+\def\sc#1{{\smallcaps#1}} % smallcaps font
+\def\ii#1{{\it #1}} % italic font
+
+% @acronym for "FBI", "NATO", and the like.
+% We print this one point size smaller, since it's intended for
+% all-uppercase.
+%
+\def\acronym#1{\doacronym #1,,\finish}
+\def\doacronym#1,#2,#3\finish{%
+ {\selectfonts\lsize #1}%
+ \def\temp{#2}%
+ \ifx\temp\empty \else
+ \space ({\unsepspaces \ignorespaces \temp \unskip})%
+ \fi
+}
+
+% @abbr for "Comput. J." and the like.
+% No font change, but don't do end-of-sentence spacing.
+%
+\def\abbr#1{\doabbr #1,,\finish}
+\def\doabbr#1,#2,#3\finish{%
+ {\plainfrenchspacing #1}%
+ \def\temp{#2}%
+ \ifx\temp\empty \else
+ \space ({\unsepspaces \ignorespaces \temp \unskip})%
+ \fi
+}
+
+% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
+%
+\def\pounds{{\it\$}}
+
+% @euro{} comes from a separate font, depending on the current style.
+% We use the free feym* fonts from the eurosym package by Henrik
+% Theiling, which support regular, slanted, bold and bold slanted (and
+% "outlined" (blackboard board, sort of) versions, which we don't need).
+% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
+%
+% Although only regular is the truly official Euro symbol, we ignore
+% that. The Euro is designed to be slightly taller than the regular
+% font height.
+%
+% feymr - regular
+% feymo - slanted
+% feybr - bold
+% feybo - bold slanted
+%
+% There is no good (free) typewriter version, to my knowledge.
+% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
+% Hmm.
+%
+% Also doesn't work in math. Do we need to do math with euro symbols?
+% Hope not.
+%
+%
+\def\euro{{\eurofont e}}
+\def\eurofont{%
+ % We set the font at each command, rather than predefining it in
+ % \textfonts and the other font-switching commands, so that
+ % installations which never need the symbol don't have to have the
+ % font installed.
+ %
+ % There is only one designed size (nominal 10pt), so we always scale
+ % that to the current nominal size.
+ %
+ % By the way, simply using "at 1em" works for cmr10 and the like, but
+ % does not work for cmbx10 and other extended/shrunken fonts.
+ %
+ \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
+ %
+ \ifx\curfontstyle\bfstylename
+ % bold:
+ \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
+ \else
+ % regular:
+ \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
+ \fi
+ \thiseurofont
+}
+
+% @registeredsymbol - R in a circle. The font for the R should really
+% be smaller yet, but lllsize is the best we can do for now.
+% Adapted from the plain.tex definition of \copyright.
+%
+\def\registeredsymbol{%
+ $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
+ \hfil\crcr\Orb}}%
+ }$%
+}
+
+% @textdegree - the normal degrees sign.
+%
+\def\textdegree{$^\circ$}
+
+% Laurent Siebenmann reports \Orb undefined with:
+% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38
+% so we'll define it if necessary.
+%
+\ifx\Orb\undefined
+\def\Orb{\mathhexbox20D}
+\fi
+
+
+\message{page headings,}
+
+\newskip\titlepagetopglue \titlepagetopglue = 1.5in
+\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
+
+% First the title page. Must do @settitle before @titlepage.
+\newif\ifseenauthor
+\newif\iffinishedtitlepage
+
+% Do an implicit @contents or @shortcontents after @end titlepage if the
+% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
+%
+\newif\ifsetcontentsaftertitlepage
+ \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
+\newif\ifsetshortcontentsaftertitlepage
+ \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
+
+\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+ \endgroup\page\hbox{}\page}
+
+\envdef\titlepage{%
+ % Open one extra group, as we want to close it in the middle of \Etitlepage.
+ \begingroup
+ \parindent=0pt \textfonts
+ % Leave some space at the very top of the page.
+ \vglue\titlepagetopglue
+ % No rule at page bottom unless we print one at the top with @title.
+ \finishedtitlepagetrue
+ %
+ % Most title ``pages'' are actually two pages long, with space
+ % at the top of the second. We don't want the ragged left on the second.
+ \let\oldpage = \page
+ \def\page{%
+ \iffinishedtitlepage\else
+ \finishtitlepage
+ \fi
+ \let\page = \oldpage
+ \page
+ \null
+ }%
+}
+
+\def\Etitlepage{%
+ \iffinishedtitlepage\else
+ \finishtitlepage
+ \fi
+ % It is important to do the page break before ending the group,
+ % because the headline and footline are only empty inside the group.
+ % If we use the new definition of \page, we always get a blank page
+ % after the title page, which we certainly don't want.
+ \oldpage
+ \endgroup
+ %
+ % Need this before the \...aftertitlepage checks so that if they are
+ % in effect the toc pages will come out with page numbers.
+ \HEADINGSon
+ %
+ % If they want short, they certainly want long too.
+ \ifsetshortcontentsaftertitlepage
+ \shortcontents
+ \contents
+ \global\let\shortcontents = \relax
+ \global\let\contents = \relax
+ \fi
+ %
+ \ifsetcontentsaftertitlepage
+ \contents
+ \global\let\contents = \relax
+ \global\let\shortcontents = \relax
+ \fi
+}
+
+\def\finishtitlepage{%
+ \vskip4pt \hrule height 2pt width \hsize
+ \vskip\titlepagebottomglue
+ \finishedtitlepagetrue
+}
+
+%%% Macros to be used within @titlepage:
+
+\let\subtitlerm=\tenrm
+\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
+
+\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines
+ \let\tt=\authortt}
+
+\parseargdef\title{%
+ \checkenv\titlepage
+ \leftline{\titlefonts\rm #1}
+ % print a rule at the page bottom also.
+ \finishedtitlepagefalse
+ \vskip4pt \hrule height 4pt width \hsize \vskip4pt
+}
+
+\parseargdef\subtitle{%
+ \checkenv\titlepage
+ {\subtitlefont \rightline{#1}}%
+}
+
+% @author should come last, but may come many times.
+% It can also be used inside @quotation.
+%
+\parseargdef\author{%
+ \def\temp{\quotation}%
+ \ifx\thisenv\temp
+ \def\quotationauthor{#1}% printed in \Equotation.
+ \else
+ \checkenv\titlepage
+ \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
+ {\authorfont \leftline{#1}}%
+ \fi
+}
+
+
+%%% Set up page headings and footings.
+
+\let\thispage=\folio
+
+\newtoks\evenheadline % headline on even pages
+\newtoks\oddheadline % headline on odd pages
+\newtoks\evenfootline % footline on even pages
+\newtoks\oddfootline % footline on odd pages
+
+% Now make TeX use those variables
+\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
+ \else \the\evenheadline \fi}}
+\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
+ \else \the\evenfootline \fi}\HEADINGShook}
+\let\HEADINGShook=\relax
+
+% Commands to set those variables.
+% For example, this is what @headings on does
+% @evenheading @thistitle|@thispage|@thischapter
+% @oddheading @thischapter|@thispage|@thistitle
+% @evenfooting @thisfile||
+% @oddfooting ||@thisfile
+
+
+\def\evenheading{\parsearg\evenheadingxxx}
+\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
+\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddheading{\parsearg\oddheadingxxx}
+\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
+\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
+
+\def\evenfooting{\parsearg\evenfootingxxx}
+\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
+\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddfooting{\parsearg\oddfootingxxx}
+\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
+\def\oddfootingyyy #1\|#2\|#3\|#4\finish{%
+ \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
+ %
+ % Leave some space for the footline. Hopefully ok to assume
+ % @evenfooting will not be used by itself.
+ \global\advance\pageheight by -12pt
+ \global\advance\vsize by -12pt
+}
+
+\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
+
+
+% @headings double turns headings on for double-sided printing.
+% @headings single turns headings on for single-sided printing.
+% @headings off turns them off.
+% @headings on same as @headings double, retained for compatibility.
+% @headings after turns on double-sided headings after this page.
+% @headings doubleafter turns on double-sided headings after this page.
+% @headings singleafter turns on single-sided headings after this page.
+% By default, they are off at the start of a document,
+% and turned `on' after @end titlepage.
+
+\def\headings #1 {\csname HEADINGS#1\endcsname}
+
+\def\HEADINGSoff{%
+\global\evenheadline={\hfil} \global\evenfootline={\hfil}
+\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
+\HEADINGSoff
+% When we turn headings on, set the page number to 1.
+% For double-sided printing, put current file name in lower left corner,
+% chapter name on inside top of right hand pages, document
+% title on inside top of left hand pages, and page numbers on outside top
+% edge of all pages.
+\def\HEADINGSdouble{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+\let\contentsalignmacro = \chappager
+
+% For single-sided printing, chapter title goes across top left of page,
+% page number on top right.
+\def\HEADINGSsingle{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+\def\HEADINGSon{\HEADINGSdouble}
+
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
+\let\HEADINGSdoubleafter=\HEADINGSafter
+\def\HEADINGSdoublex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
+\def\HEADINGSsinglex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+
+% Subroutines used in generating headings
+% This produces Day Month Year style of output.
+% Only define if not already defined, in case a txi-??.tex file has set
+% up a different format (e.g., txi-cs.tex does this).
+\ifx\today\undefined
+\def\today{%
+ \number\day\space
+ \ifcase\month
+ \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
+ \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
+ \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
+ \fi
+ \space\number\year}
+\fi
+
+% @settitle line... specifies the title of the document, for headings.
+% It generates no output of its own.
+\def\thistitle{\putwordNoTitle}
+\def\settitle{\parsearg{\gdef\thistitle}}
+
+
+\message{tables,}
+% Tables -- @table, @ftable, @vtable, @item(x).
+
+% default indentation of table text
+\newdimen\tableindent \tableindent=.8in
+% default indentation of @itemize and @enumerate text
+\newdimen\itemindent \itemindent=.3in
+% margin between end of table item and start of table text.
+\newdimen\itemmargin \itemmargin=.1in
+
+% used internally for \itemindent minus \itemmargin
+\newdimen\itemmax
+
+% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
+% these defs.
+% They also define \itemindex
+% to index the item name in whatever manner is desired (perhaps none).
+
+\newif\ifitemxneedsnegativevskip
+
+\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
+
+\def\internalBitem{\smallbreak \parsearg\itemzzz}
+\def\internalBitemx{\itemxpar \parsearg\itemzzz}
+
+\def\itemzzz #1{\begingroup %
+ \advance\hsize by -\rightskip
+ \advance\hsize by -\tableindent
+ \setbox0=\hbox{\itemindicate{#1}}%
+ \itemindex{#1}%
+ \nobreak % This prevents a break before @itemx.
+ %
+ % If the item text does not fit in the space we have, put it on a line
+ % by itself, and do not allow a page break either before or after that
+ % line. We do not start a paragraph here because then if the next
+ % command is, e.g., @kindex, the whatsit would get put into the
+ % horizontal list on a line by itself, resulting in extra blank space.
+ \ifdim \wd0>\itemmax
+ %
+ % Make this a paragraph so we get the \parskip glue and wrapping,
+ % but leave it ragged-right.
+ \begingroup
+ \advance\leftskip by-\tableindent
+ \advance\hsize by\tableindent
+ \advance\rightskip by0pt plus1fil
+ \leavevmode\unhbox0\par
+ \endgroup
+ %
+ % We're going to be starting a paragraph, but we don't want the
+ % \parskip glue -- logically it's part of the @item we just started.
+ \nobreak \vskip-\parskip
+ %
+ % Stop a page break at the \parskip glue coming up. However, if
+ % what follows is an environment such as @example, there will be no
+ % \parskip glue; then the negative vskip we just inserted would
+ % cause the example and the item to crash together. So we use this
+ % bizarre value of 10001 as a signal to \aboveenvbreak to insert
+ % \parskip glue after all. Section titles are handled this way also.
+ %
+ \penalty 10001
+ \endgroup
+ \itemxneedsnegativevskipfalse
+ \else
+ % The item text fits into the space. Start a paragraph, so that the
+ % following text (if any) will end up on the same line.
+ \noindent
+ % Do this with kerns and \unhbox so that if there is a footnote in
+ % the item text, it can migrate to the main vertical list and
+ % eventually be printed.
+ \nobreak\kern-\tableindent
+ \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
+ \unhbox0
+ \nobreak\kern\dimen0
+ \endgroup
+ \itemxneedsnegativevskiptrue
+ \fi
+}
+
+\def\item{\errmessage{@item while not in a list environment}}
+\def\itemx{\errmessage{@itemx while not in a list environment}}
+
+% @table, @ftable, @vtable.
+\envdef\table{%
+ \let\itemindex\gobble
+ \tablecheck{table}%
+}
+\envdef\ftable{%
+ \def\itemindex ##1{\doind {fn}{\code{##1}}}%
+ \tablecheck{ftable}%
+}
+\envdef\vtable{%
+ \def\itemindex ##1{\doind {vr}{\code{##1}}}%
+ \tablecheck{vtable}%
+}
+\def\tablecheck#1{%
+ \ifnum \the\catcode`\^^M=\active
+ \endgroup
+ \errmessage{This command won't work in this context; perhaps the problem is
+ that we are \inenvironment\thisenv}%
+ \def\next{\doignore{#1}}%
+ \else
+ \let\next\tablex
+ \fi
+ \next
+}
+\def\tablex#1{%
+ \def\itemindicate{#1}%
+ \parsearg\tabley
+}
+\def\tabley#1{%
+ {%
+ \makevalueexpandable
+ \edef\temp{\noexpand\tablez #1\space\space\space}%
+ \expandafter
+ }\temp \endtablez
+}
+\def\tablez #1 #2 #3 #4\endtablez{%
+ \aboveenvbreak
+ \ifnum 0#1>0 \advance \leftskip by #1\mil \fi
+ \ifnum 0#2>0 \tableindent=#2\mil \fi
+ \ifnum 0#3>0 \advance \rightskip by #3\mil \fi
+ \itemmax=\tableindent
+ \advance \itemmax by -\itemmargin
+ \advance \leftskip by \tableindent
+ \exdentamount=\tableindent
+ \parindent = 0pt
+ \parskip = \smallskipamount
+ \ifdim \parskip=0pt \parskip=2pt \fi
+ \let\item = \internalBitem
+ \let\itemx = \internalBitemx
+}
+\def\Etable{\endgraf\afterenvbreak}
+\let\Eftable\Etable
+\let\Evtable\Etable
+\let\Eitemize\Etable
+\let\Eenumerate\Etable
+
+% This is the counter used by @enumerate, which is really @itemize
+
+\newcount \itemno
+
+\envdef\itemize{\parsearg\doitemize}
+
+\def\doitemize#1{%
+ \aboveenvbreak
+ \itemmax=\itemindent
+ \advance\itemmax by -\itemmargin
+ \advance\leftskip by \itemindent
+ \exdentamount=\itemindent
+ \parindent=0pt
+ \parskip=\smallskipamount
+ \ifdim\parskip=0pt \parskip=2pt \fi
+ \def\itemcontents{#1}%
+ % @itemize with no arg is equivalent to @itemize @bullet.
+ \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
+ \let\item=\itemizeitem
+}
+
+% Definition of @item while inside @itemize and @enumerate.
+%
+\def\itemizeitem{%
+ \advance\itemno by 1 % for enumerations
+ {\let\par=\endgraf \smallbreak}% reasonable place to break
+ {%
+ % If the document has an @itemize directly after a section title, a
+ % \nobreak will be last on the list, and \sectionheading will have
+ % done a \vskip-\parskip. In that case, we don't want to zero
+ % parskip, or the item text will crash with the heading. On the
+ % other hand, when there is normal text preceding the item (as there
+ % usually is), we do want to zero parskip, or there would be too much
+ % space. In that case, we won't have a \nobreak before. At least
+ % that's the theory.
+ \ifnum\lastpenalty<10000 \parskip=0in \fi
+ \noindent
+ \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
+ \vadjust{\penalty 1200}}% not good to break after first line of item.
+ \flushcr
+}
+
+% \splitoff TOKENS\endmark defines \first to be the first token in
+% TOKENS, and \rest to be the remainder.
+%
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
+
+% Allow an optional argument of an uppercase letter, lowercase letter,
+% or number, to specify the first label in the enumerated list. No
+% argument is the same as `1'.
+%
+\envparseargdef\enumerate{\enumeratey #1 \endenumeratey}
+\def\enumeratey #1 #2\endenumeratey{%
+ % If we were given no argument, pretend we were given `1'.
+ \def\thearg{#1}%
+ \ifx\thearg\empty \def\thearg{1}\fi
+ %
+ % Detect if the argument is a single token. If so, it might be a
+ % letter. Otherwise, the only valid thing it can be is a number.
+ % (We will always have one token, because of the test we just made.
+ % This is a good thing, since \splitoff doesn't work given nothing at
+ % all -- the first parameter is undelimited.)
+ \expandafter\splitoff\thearg\endmark
+ \ifx\rest\empty
+ % Only one token in the argument. It could still be anything.
+ % A ``lowercase letter'' is one whose \lccode is nonzero.
+ % An ``uppercase letter'' is one whose \lccode is both nonzero, and
+ % not equal to itself.
+ % Otherwise, we assume it's a number.
+ %
+ % We need the \relax at the end of the \ifnum lines to stop TeX from
+ % continuing to look for a <number>.
+ %
+ \ifnum\lccode\expandafter`\thearg=0\relax
+ \numericenumerate % a number (we hope)
+ \else
+ % It's a letter.
+ \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
+ \lowercaseenumerate % lowercase letter
+ \else
+ \uppercaseenumerate % uppercase letter
+ \fi
+ \fi
+ \else
+ % Multiple tokens in the argument. We hope it's a number.
+ \numericenumerate
+ \fi
+}
+
+% An @enumerate whose labels are integers. The starting integer is
+% given in \thearg.
+%
+\def\numericenumerate{%
+ \itemno = \thearg
+ \startenumeration{\the\itemno}%
+}
+
+% The starting (lowercase) letter is in \thearg.
+\def\lowercaseenumerate{%
+ \itemno = \expandafter`\thearg
+ \startenumeration{%
+ % Be sure we're not beyond the end of the alphabet.
+ \ifnum\itemno=0
+ \errmessage{No more lowercase letters in @enumerate; get a bigger
+ alphabet}%
+ \fi
+ \char\lccode\itemno
+ }%
+}
+
+% The starting (uppercase) letter is in \thearg.
+\def\uppercaseenumerate{%
+ \itemno = \expandafter`\thearg
+ \startenumeration{%
+ % Be sure we're not beyond the end of the alphabet.
+ \ifnum\itemno=0
+ \errmessage{No more uppercase letters in @enumerate; get a bigger
+ alphabet}
+ \fi
+ \char\uccode\itemno
+ }%
+}
+
+% Call \doitemize, adding a period to the first argument and supplying the
+% common last two arguments. Also subtract one from the initial value in
+% \itemno, since @item increments \itemno.
+%
+\def\startenumeration#1{%
+ \advance\itemno by -1
+ \doitemize{#1.}\flushcr
+}
+
+% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
+% to @enumerate.
+%
+\def\alphaenumerate{\enumerate{a}}
+\def\capsenumerate{\enumerate{A}}
+\def\Ealphaenumerate{\Eenumerate}
+\def\Ecapsenumerate{\Eenumerate}
+
+
+% @multitable macros
+% Amy Hendrickson, 8/18/94, 3/6/96
+%
+% @multitable ... @end multitable will make as many columns as desired.
+% Contents of each column will wrap at width given in preamble. Width
+% can be specified either with sample text given in a template line,
+% or in percent of \hsize, the current width of text on page.
+
+% Table can continue over pages but will only break between lines.
+
+% To make preamble:
+%
+% Either define widths of columns in terms of percent of \hsize:
+% @multitable @columnfractions .25 .3 .45
+% @item ...
+%
+% Numbers following @columnfractions are the percent of the total
+% current hsize to be used for each column. You may use as many
+% columns as desired.
+
+
+% Or use a template:
+% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+% @item ...
+% using the widest term desired in each column.
+
+% Each new table line starts with @item, each subsequent new column
+% starts with @tab. Empty columns may be produced by supplying @tab's
+% with nothing between them for as many times as empty columns are needed,
+% ie, @tab@tab@tab will produce two empty columns.
+
+% @item, @tab do not need to be on their own lines, but it will not hurt
+% if they are.
+
+% Sample multitable:
+
+% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+% @item first col stuff @tab second col stuff @tab third col
+% @item
+% first col stuff
+% @tab
+% second col stuff
+% @tab
+% third col
+% @item first col stuff @tab second col stuff
+% @tab Many paragraphs of text may be used in any column.
+%
+% They will wrap at the width determined by the template.
+% @item@tab@tab This will be in third column.
+% @end multitable
+
+% Default dimensions may be reset by user.
+% @multitableparskip is vertical space between paragraphs in table.
+% @multitableparindent is paragraph indent in table.
+% @multitablecolmargin is horizontal space to be left between columns.
+% @multitablelinespace is space to leave between table items, baseline
+% to baseline.
+% 0pt means it depends on current normal line spacing.
+%
+\newskip\multitableparskip
+\newskip\multitableparindent
+\newdimen\multitablecolspace
+\newskip\multitablelinespace
+\multitableparskip=0pt
+\multitableparindent=6pt
+\multitablecolspace=12pt
+\multitablelinespace=0pt
+
+% Macros used to set up halign preamble:
+%
+\let\endsetuptable\relax
+\def\xendsetuptable{\endsetuptable}
+\let\columnfractions\relax
+\def\xcolumnfractions{\columnfractions}
+\newif\ifsetpercent
+
+% #1 is the @columnfraction, usually a decimal number like .5, but might
+% be just 1. We just use it, whatever it is.
+%
+\def\pickupwholefraction#1 {%
+ \global\advance\colcount by 1
+ \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}%
+ \setuptable
+}
+
+\newcount\colcount
+\def\setuptable#1{%
+ \def\firstarg{#1}%
+ \ifx\firstarg\xendsetuptable
+ \let\go = \relax
+ \else
+ \ifx\firstarg\xcolumnfractions
+ \global\setpercenttrue
+ \else
+ \ifsetpercent
+ \let\go\pickupwholefraction
+ \else
+ \global\advance\colcount by 1
+ \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a
+ % separator; typically that is always in the input, anyway.
+ \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
+ \fi
+ \fi
+ \ifx\go\pickupwholefraction
+ % Put the argument back for the \pickupwholefraction call, so
+ % we'll always have a period there to be parsed.
+ \def\go{\pickupwholefraction#1}%
+ \else
+ \let\go = \setuptable
+ \fi%
+ \fi
+ \go
+}
+
+% multitable-only commands.
+%
+% @headitem starts a heading row, which we typeset in bold.
+% Assignments have to be global since we are inside the implicit group
+% of an alignment entry. Note that \everycr resets \everytab.
+\def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}%
+%
+% A \tab used to include \hskip1sp. But then the space in a template
+% line is not enough. That is bad. So let's go back to just `&' until
+% we encounter the problem it was intended to solve again.
+% --karl, nathan@acm.org, 20apr99.
+\def\tab{\checkenv\multitable &\the\everytab}%
+
+% @multitable ... @end multitable definitions:
+%
+\newtoks\everytab % insert after every tab.
+%
+\envdef\multitable{%
+ \vskip\parskip
+ \startsavinginserts
+ %
+ % @item within a multitable starts a normal row.
+ % We use \def instead of \let so that if one of the multitable entries
+ % contains an @itemize, we don't choke on the \item (seen as \crcr aka
+ % \endtemplate) expanding \doitemize.
+ \def\item{\crcr}%
+ %
+ \tolerance=9500
+ \hbadness=9500
+ \setmultitablespacing
+ \parskip=\multitableparskip
+ \parindent=\multitableparindent
+ \overfullrule=0pt
+ \global\colcount=0
+ %
+ \everycr = {%
+ \noalign{%
+ \global\everytab={}%
+ \global\colcount=0 % Reset the column counter.
+ % Check for saved footnotes, etc.
+ \checkinserts
+ % Keeps underfull box messages off when table breaks over pages.
+ %\filbreak
+ % Maybe so, but it also creates really weird page breaks when the
+ % table breaks over pages. Wouldn't \vfil be better? Wait until the
+ % problem manifests itself, so it can be fixed for real --karl.
+ }%
+ }%
+ %
+ \parsearg\domultitable
+}
+\def\domultitable#1{%
+ % To parse everything between @multitable and @item:
+ \setuptable#1 \endsetuptable
+ %
+ % This preamble sets up a generic column definition, which will
+ % be used as many times as user calls for columns.
+ % \vtop will set a single line and will also let text wrap and
+ % continue for many paragraphs if desired.
+ \halign\bgroup &%
+ \global\advance\colcount by 1
+ \multistrut
+ \vtop{%
+ % Use the current \colcount to find the correct column width:
+ \hsize=\expandafter\csname col\the\colcount\endcsname
+ %
+ % In order to keep entries from bumping into each other
+ % we will add a \leftskip of \multitablecolspace to all columns after
+ % the first one.
+ %
+ % If a template has been used, we will add \multitablecolspace
+ % to the width of each template entry.
+ %
+ % If the user has set preamble in terms of percent of \hsize we will
+ % use that dimension as the width of the column, and the \leftskip
+ % will keep entries from bumping into each other. Table will start at
+ % left margin and final column will justify at right margin.
+ %
+ % Make sure we don't inherit \rightskip from the outer environment.
+ \rightskip=0pt
+ \ifnum\colcount=1
+ % The first column will be indented with the surrounding text.
+ \advance\hsize by\leftskip
+ \else
+ \ifsetpercent \else
+ % If user has not set preamble in terms of percent of \hsize
+ % we will advance \hsize by \multitablecolspace.
+ \advance\hsize by \multitablecolspace
+ \fi
+ % In either case we will make \leftskip=\multitablecolspace:
+ \leftskip=\multitablecolspace
+ \fi
+ % Ignoring space at the beginning and end avoids an occasional spurious
+ % blank line, when TeX decides to break the line at the space before the
+ % box from the multistrut, so the strut ends up on a line by itself.
+ % For example:
+ % @multitable @columnfractions .11 .89
+ % @item @code{#}
+ % @tab Legal holiday which is valid in major parts of the whole country.
+ % Is automatically provided with highlighting sequences respectively
+ % marking characters.
+ \noindent\ignorespaces##\unskip\multistrut
+ }\cr
+}
+\def\Emultitable{%
+ \crcr
+ \egroup % end the \halign
+ \global\setpercentfalse
+}
+
+\def\setmultitablespacing{%
+ \def\multistrut{\strut}% just use the standard line spacing
+ %
+ % Compute \multitablelinespace (if not defined by user) for use in
+ % \multitableparskip calculation. We used define \multistrut based on
+ % this, but (ironically) that caused the spacing to be off.
+ % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
+\ifdim\multitablelinespace=0pt
+\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
+\global\advance\multitablelinespace by-\ht0
+\fi
+%% Test to see if parskip is larger than space between lines of
+%% table. If not, do nothing.
+%% If so, set to same dimension as multitablelinespace.
+\ifdim\multitableparskip>\multitablelinespace
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
+ %% than skip between lines in the table.
+\fi%
+\ifdim\multitableparskip=0pt
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
+ %% than skip between lines in the table.
+\fi}
+
+
+\message{conditionals,}
+
+% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
+% @ifnotxml always succeed. They currently do nothing; we don't
+% attempt to check whether the conditionals are properly nested. But we
+% have to remember that they are conditionals, so that @end doesn't
+% attempt to close an environment group.
+%
+\def\makecond#1{%
+ \expandafter\let\csname #1\endcsname = \relax
+ \expandafter\let\csname iscond.#1\endcsname = 1
+}
+\makecond{iftex}
+\makecond{ifnotdocbook}
+\makecond{ifnothtml}
+\makecond{ifnotinfo}
+\makecond{ifnotplaintext}
+\makecond{ifnotxml}
+
+% Ignore @ignore, @ifhtml, @ifinfo, and the like.
+%
+\def\direntry{\doignore{direntry}}
+\def\documentdescription{\doignore{documentdescription}}
+\def\docbook{\doignore{docbook}}
+\def\html{\doignore{html}}
+\def\ifdocbook{\doignore{ifdocbook}}
+\def\ifhtml{\doignore{ifhtml}}
+\def\ifinfo{\doignore{ifinfo}}
+\def\ifnottex{\doignore{ifnottex}}
+\def\ifplaintext{\doignore{ifplaintext}}
+\def\ifxml{\doignore{ifxml}}
+\def\ignore{\doignore{ignore}}
+\def\menu{\doignore{menu}}
+\def\xml{\doignore{xml}}
+
+% Ignore text until a line `@end #1', keeping track of nested conditionals.
+%
+% A count to remember the depth of nesting.
+\newcount\doignorecount
+
+\def\doignore#1{\begingroup
+ % Scan in ``verbatim'' mode:
+ \obeylines
+ \catcode`\@ = \other
+ \catcode`\{ = \other
+ \catcode`\} = \other
+ %
+ % Make sure that spaces turn into tokens that match what \doignoretext wants.
+ \spaceisspace
+ %
+ % Count number of #1's that we've seen.
+ \doignorecount = 0
+ %
+ % Swallow text until we reach the matching `@end #1'.
+ \dodoignore{#1}%
+}
+
+{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
+ \obeylines %
+ %
+ \gdef\dodoignore#1{%
+ % #1 contains the command name as a string, e.g., `ifinfo'.
+ %
+ % Define a command to find the next `@end #1'.
+ \long\def\doignoretext##1^^M@end #1{%
+ \doignoretextyyy##1^^M@#1\_STOP_}%
+ %
+ % And this command to find another #1 command, at the beginning of a
+ % line. (Otherwise, we would consider a line `@c @ifset', for
+ % example, to count as an @ifset for nesting.)
+ \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
+ %
+ % And now expand that command.
+ \doignoretext ^^M%
+ }%
+}
+
+\def\doignoreyyy#1{%
+ \def\temp{#1}%
+ \ifx\temp\empty % Nothing found.
+ \let\next\doignoretextzzz
+ \else % Found a nested condition, ...
+ \advance\doignorecount by 1
+ \let\next\doignoretextyyy % ..., look for another.
+ % If we're here, #1 ends with ^^M\ifinfo (for example).
+ \fi
+ \next #1% the token \_STOP_ is present just after this macro.
+}
+
+% We have to swallow the remaining "\_STOP_".
+%
+\def\doignoretextzzz#1{%
+ \ifnum\doignorecount = 0 % We have just found the outermost @end.
+ \let\next\enddoignore
+ \else % Still inside a nested condition.
+ \advance\doignorecount by -1
+ \let\next\doignoretext % Look for the next @end.
+ \fi
+ \next
+}
+
+% Finish off ignored text.
+{ \obeylines%
+ % Ignore anything after the last `@end #1'; this matters in verbatim
+ % environments, where otherwise the newline after an ignored conditional
+ % would result in a blank line in the output.
+ \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
+}
+
+
+% @set VAR sets the variable VAR to an empty value.
+% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
+%
+% Since we want to separate VAR from REST-OF-LINE (which might be
+% empty), we can't just use \parsearg; we have to insert a space of our
+% own to delimit the rest of the line, and then take it out again if we
+% didn't need it.
+% We rely on the fact that \parsearg sets \catcode`\ =10.
+%
+\parseargdef\set{\setyyy#1 \endsetyyy}
+\def\setyyy#1 #2\endsetyyy{%
+ {%
+ \makevalueexpandable
+ \def\temp{#2}%
+ \edef\next{\gdef\makecsname{SET#1}}%
+ \ifx\temp\empty
+ \next{}%
+ \else
+ \setzzz#2\endsetzzz
+ \fi
+ }%
+}
+% Remove the trailing space \setxxx inserted.
+\def\setzzz#1 \endsetzzz{\next{#1}}
+
+% @clear VAR clears (i.e., unsets) the variable VAR.
+%
+\parseargdef\clear{%
+ {%
+ \makevalueexpandable
+ \global\expandafter\let\csname SET#1\endcsname=\relax
+ }%
+}
+
+% @value{foo} gets the text saved in variable foo.
+\def\value{\begingroup\makevalueexpandable\valuexxx}
+\def\valuexxx#1{\expandablevalue{#1}\endgroup}
+{
+ \catcode`\- = \active \catcode`\_ = \active
+ %
+ \gdef\makevalueexpandable{%
+ \let\value = \expandablevalue
+ % We don't want these characters active, ...
+ \catcode`\-=\other \catcode`\_=\other
+ % ..., but we might end up with active ones in the argument if
+ % we're called from @code, as @code{@value{foo-bar_}}, though.
+ % So \let them to their normal equivalents.
+ \let-\realdash \let_\normalunderscore
+ }
+}
+
+% We have this subroutine so that we can handle at least some @value's
+% properly in indexes (we call \makevalueexpandable in \indexdummies).
+% The command has to be fully expandable (if the variable is set), since
+% the result winds up in the index file. This means that if the
+% variable's value contains other Texinfo commands, it's almost certain
+% it will fail (although perhaps we could fix that with sufficient work
+% to do a one-level expansion on the result, instead of complete).
+%
+\def\expandablevalue#1{%
+ \expandafter\ifx\csname SET#1\endcsname\relax
+ {[No value for ``#1'']}%
+ \message{Variable `#1', used in @value, is not set.}%
+ \else
+ \csname SET#1\endcsname
+ \fi
+}
+
+% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
+% with @set.
+%
+% To get special treatment of `@end ifset,' call \makeond and the redefine.
+%
+\makecond{ifset}
+\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
+\def\doifset#1#2{%
+ {%
+ \makevalueexpandable
+ \let\next=\empty
+ \expandafter\ifx\csname SET#2\endcsname\relax
+ #1% If not set, redefine \next.
+ \fi
+ \expandafter
+ }\next
+}
+\def\ifsetfail{\doignore{ifset}}
+
+% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
+% defined with @set, or has been undefined with @clear.
+%
+% The `\else' inside the `\doifset' parameter is a trick to reuse the
+% above code: if the variable is not set, do nothing, if it is set,
+% then redefine \next to \ifclearfail.
+%
+\makecond{ifclear}
+\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
+\def\ifclearfail{\doignore{ifclear}}
+
+% @dircategory CATEGORY -- specify a category of the dir file
+% which this file should belong to. Ignore this in TeX.
+\let\dircategory=\comment
+
+% @defininfoenclose.
+\let\definfoenclose=\comment
+
+
+\message{indexing,}
+% Index generation facilities
+
+% Define \newwrite to be identical to plain tex's \newwrite
+% except not \outer, so it can be used within macros and \if's.
+\edef\newwrite{\makecsname{ptexnewwrite}}
+
+% \newindex {foo} defines an index named foo.
+% It automatically defines \fooindex such that
+% \fooindex ...rest of line... puts an entry in the index foo.
+% It also defines \fooindfile to be the number of the output channel for
+% the file that accumulates this index. The file's extension is foo.
+% The name of an index should be no more than 2 characters long
+% for the sake of vms.
+%
+\def\newindex#1{%
+ \iflinks
+ \expandafter\newwrite \csname#1indfile\endcsname
+ \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
+ \fi
+ \expandafter\xdef\csname#1index\endcsname{% % Define @#1index
+ \noexpand\doindex{#1}}
+}
+
+% @defindex foo == \newindex{foo}
+%
+\def\defindex{\parsearg\newindex}
+
+% Define @defcodeindex, like @defindex except put all entries in @code.
+%
+\def\defcodeindex{\parsearg\newcodeindex}
+%
+\def\newcodeindex#1{%
+ \iflinks
+ \expandafter\newwrite \csname#1indfile\endcsname
+ \openout \csname#1indfile\endcsname \jobname.#1
+ \fi
+ \expandafter\xdef\csname#1index\endcsname{%
+ \noexpand\docodeindex{#1}}%
+}
+
+
+% @synindex foo bar makes index foo feed into index bar.
+% Do this instead of @defindex foo if you don't want it as a separate index.
+%
+% @syncodeindex foo bar similar, but put all entries made for index foo
+% inside @code.
+%
+\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
+\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
+
+% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
+% #3 the target index (bar).
+\def\dosynindex#1#2#3{%
+ % Only do \closeout if we haven't already done it, else we'll end up
+ % closing the target index.
+ \expandafter \ifx\csname donesynindex#2\endcsname \undefined
+ % The \closeout helps reduce unnecessary open files; the limit on the
+ % Acorn RISC OS is a mere 16 files.
+ \expandafter\closeout\csname#2indfile\endcsname
+ \expandafter\let\csname\donesynindex#2\endcsname = 1
+ \fi
+ % redefine \fooindfile:
+ \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
+ \expandafter\let\csname#2indfile\endcsname=\temp
+ % redefine \fooindex:
+ \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
+}
+
+% Define \doindex, the driver for all \fooindex macros.
+% Argument #1 is generated by the calling \fooindex macro,
+% and it is "foo", the name of the index.
+
+% \doindex just uses \parsearg; it calls \doind for the actual work.
+% This is because \doind is more useful to call from other macros.
+
+% There is also \dosubind {index}{topic}{subtopic}
+% which makes an entry in a two-level index such as the operation index.
+
+\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
+\def\singleindexer #1{\doind{\indexname}{#1}}
+
+% like the previous two, but they put @code around the argument.
+\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
+\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
+
+% Take care of Texinfo commands that can appear in an index entry.
+% Since there are some commands we want to expand, and others we don't,
+% we have to laboriously prevent expansion for those that we don't.
+%
+\def\indexdummies{%
+ \escapechar = `\\ % use backslash in output files.
+ \def\@{@}% change to @@ when we switch to @ as escape char in index files.
+ \def\ {\realbackslash\space }%
+ %
+ % Need these in case \tex is in effect and \{ is a \delimiter again.
+ % But can't use \lbracecmd and \rbracecmd because texindex assumes
+ % braces and backslashes are used only as delimiters.
+ \let\{ = \mylbrace
+ \let\} = \myrbrace
+ %
+ % I don't entirely understand this, but when an index entry is
+ % generated from a macro call, the \endinput which \scanmacro inserts
+ % causes processing to be prematurely terminated. This is,
+ % apparently, because \indexsorttmp is fully expanded, and \endinput
+ % is an expandable command. The redefinition below makes \endinput
+ % disappear altogether for that purpose -- although logging shows that
+ % processing continues to some further point. On the other hand, it
+ % seems \endinput does not hurt in the printed index arg, since that
+ % is still getting written without apparent harm.
+ %
+ % Sample source (mac-idx3.tex, reported by Graham Percival to
+ % help-texinfo, 22may06):
+ % @macro funindex {WORD}
+ % @findex xyz
+ % @end macro
+ % ...
+ % @funindex commtest
+ %
+ % The above is not enough to reproduce the bug, but it gives the flavor.
+ %
+ % Sample whatsit resulting:
+ % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
+ %
+ % So:
+ \let\endinput = \empty
+ %
+ % Do the redefinitions.
+ \commondummies
+}
+
+% For the aux and toc files, @ is the escape character. So we want to
+% redefine everything using @ as the escape character (instead of
+% \realbackslash, still used for index files). When everything uses @,
+% this will be simpler.
+%
+\def\atdummies{%
+ \def\@{@@}%
+ \def\ {@ }%
+ \let\{ = \lbraceatcmd
+ \let\} = \rbraceatcmd
+ %
+ % Do the redefinitions.
+ \commondummies
+ \otherbackslash
+}
+
+% Called from \indexdummies and \atdummies.
+%
+\def\commondummies{%
+ %
+ % \definedummyword defines \#1 as \string\#1\space, thus effectively
+ % preventing its expansion. This is used only for control% words,
+ % not control letters, because the \space would be incorrect for
+ % control characters, but is needed to separate the control word
+ % from whatever follows.
+ %
+ % For control letters, we have \definedummyletter, which omits the
+ % space.
+ %
+ % These can be used both for control words that take an argument and
+ % those that do not. If it is followed by {arg} in the input, then
+ % that will dutifully get written to the index (or wherever).
+ %
+ \def\definedummyword ##1{\def##1{\string##1\space}}%
+ \def\definedummyletter##1{\def##1{\string##1}}%
+ \let\definedummyaccent\definedummyletter
+ %
+ \commondummiesnofonts
+ %
+ \definedummyletter\_%
+ %
+ % Non-English letters.
+ \definedummyword\AA
+ \definedummyword\AE
+ \definedummyword\L
+ \definedummyword\OE
+ \definedummyword\O
+ \definedummyword\aa
+ \definedummyword\ae
+ \definedummyword\l
+ \definedummyword\oe
+ \definedummyword\o
+ \definedummyword\ss
+ \definedummyword\exclamdown
+ \definedummyword\questiondown
+ \definedummyword\ordf
+ \definedummyword\ordm
+ %
+ % Although these internal commands shouldn't show up, sometimes they do.
+ \definedummyword\bf
+ \definedummyword\gtr
+ \definedummyword\hat
+ \definedummyword\less
+ \definedummyword\sf
+ \definedummyword\sl
+ \definedummyword\tclose
+ \definedummyword\tt
+ %
+ \definedummyword\LaTeX
+ \definedummyword\TeX
+ %
+ % Assorted special characters.
+ \definedummyword\bullet
+ \definedummyword\comma
+ \definedummyword\copyright
+ \definedummyword\registeredsymbol
+ \definedummyword\dots
+ \definedummyword\enddots
+ \definedummyword\equiv
+ \definedummyword\error
+ \definedummyword\euro
+ \definedummyword\expansion
+ \definedummyword\minus
+ \definedummyword\pounds
+ \definedummyword\point
+ \definedummyword\print
+ \definedummyword\result
+ \definedummyword\textdegree
+ %
+ % We want to disable all macros so that they are not expanded by \write.
+ \macrolist
+ %
+ \normalturnoffactive
+ %
+ % Handle some cases of @value -- where it does not contain any
+ % (non-fully-expandable) commands.
+ \makevalueexpandable
+}
+
+% \commondummiesnofonts: common to \commondummies and \indexnofonts.
+%
+\def\commondummiesnofonts{%
+ % Control letters and accents.
+ \definedummyletter\!%
+ \definedummyaccent\"%
+ \definedummyaccent\'%
+ \definedummyletter\*%
+ \definedummyaccent\,%
+ \definedummyletter\.%
+ \definedummyletter\/%
+ \definedummyletter\:%
+ \definedummyaccent\=%
+ \definedummyletter\?%
+ \definedummyaccent\^%
+ \definedummyaccent\`%
+ \definedummyaccent\~%
+ \definedummyword\u
+ \definedummyword\v
+ \definedummyword\H
+ \definedummyword\dotaccent
+ \definedummyword\ringaccent
+ \definedummyword\tieaccent
+ \definedummyword\ubaraccent
+ \definedummyword\udotaccent
+ \definedummyword\dotless
+ %
+ % Texinfo font commands.
+ \definedummyword\b
+ \definedummyword\i
+ \definedummyword\r
+ \definedummyword\sc
+ \definedummyword\t
+ %
+ % Commands that take arguments.
+ \definedummyword\acronym
+ \definedummyword\cite
+ \definedummyword\code
+ \definedummyword\command
+ \definedummyword\dfn
+ \definedummyword\emph
+ \definedummyword\env
+ \definedummyword\file
+ \definedummyword\kbd
+ \definedummyword\key
+ \definedummyword\math
+ \definedummyword\option
+ \definedummyword\pxref
+ \definedummyword\ref
+ \definedummyword\samp
+ \definedummyword\strong
+ \definedummyword\tie
+ \definedummyword\uref
+ \definedummyword\url
+ \definedummyword\var
+ \definedummyword\verb
+ \definedummyword\w
+ \definedummyword\xref
+}
+
+% \indexnofonts is used when outputting the strings to sort the index
+% by, and when constructing control sequence names. It eliminates all
+% control sequences and just writes whatever the best ASCII sort string
+% would be for a given command (usually its argument).
+%
+\def\indexnofonts{%
+ % Accent commands should become @asis.
+ \def\definedummyaccent##1{\let##1\asis}%
+ % We can just ignore other control letters.
+ \def\definedummyletter##1{\let##1\empty}%
+ % Hopefully, all control words can become @asis.
+ \let\definedummyword\definedummyaccent
+ %
+ \commondummiesnofonts
+ %
+ % Don't no-op \tt, since it isn't a user-level command
+ % and is used in the definitions of the active chars like <, >, |, etc.
+ % Likewise with the other plain tex font commands.
+ %\let\tt=\asis
+ %
+ \def\ { }%
+ \def\@{@}%
+ % how to handle braces?
+ \def\_{\normalunderscore}%
+ %
+ % Non-English letters.
+ \def\AA{AA}%
+ \def\AE{AE}%
+ \def\L{L}%
+ \def\OE{OE}%
+ \def\O{O}%
+ \def\aa{aa}%
+ \def\ae{ae}%
+ \def\l{l}%
+ \def\oe{oe}%
+ \def\o{o}%
+ \def\ss{ss}%
+ \def\exclamdown{!}%
+ \def\questiondown{?}%
+ \def\ordf{a}%
+ \def\ordm{o}%
+ %
+ \def\LaTeX{LaTeX}%
+ \def\TeX{TeX}%
+ %
+ % Assorted special characters.
+ % (The following {} will end up in the sort string, but that's ok.)
+ \def\bullet{bullet}%
+ \def\comma{,}%
+ \def\copyright{copyright}%
+ \def\registeredsymbol{R}%
+ \def\dots{...}%
+ \def\enddots{...}%
+ \def\equiv{==}%
+ \def\error{error}%
+ \def\euro{euro}%
+ \def\expansion{==>}%
+ \def\minus{-}%
+ \def\pounds{pounds}%
+ \def\point{.}%
+ \def\print{-|}%
+ \def\result{=>}%
+ \def\textdegree{degrees}%
+ %
+ % We need to get rid of all macros, leaving only the arguments (if present).
+ % Of course this is not nearly correct, but it is the best we can do for now.
+ % makeinfo does not expand macros in the argument to @deffn, which ends up
+ % writing an index entry, and texindex isn't prepared for an index sort entry
+ % that starts with \.
+ %
+ % Since macro invocations are followed by braces, we can just redefine them
+ % to take a single TeX argument. The case of a macro invocation that
+ % goes to end-of-line is not handled.
+ %
+ \macrolist
+}
+
+\let\indexbackslash=0 %overridden during \printindex.
+\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
+
+% Most index entries go through here, but \dosubind is the general case.
+% #1 is the index name, #2 is the entry text.
+\def\doind#1#2{\dosubind{#1}{#2}{}}
+
+% Workhorse for all \fooindexes.
+% #1 is name of index, #2 is stuff to put there, #3 is subentry --
+% empty if called from \doind, as we usually are (the main exception
+% is with most defuns, which call us directly).
+%
+\def\dosubind#1#2#3{%
+ \iflinks
+ {%
+ % Store the main index entry text (including the third arg).
+ \toks0 = {#2}%
+ % If third arg is present, precede it with a space.
+ \def\thirdarg{#3}%
+ \ifx\thirdarg\empty \else
+ \toks0 = \expandafter{\the\toks0 \space #3}%
+ \fi
+ %
+ \edef\writeto{\csname#1indfile\endcsname}%
+ %
+ \ifvmode
+ \dosubindsanitize
+ \else
+ \dosubindwrite
+ \fi
+ }%
+ \fi
+}
+
+% Write the entry in \toks0 to the index file:
+%
+\def\dosubindwrite{%
+ % Put the index entry in the margin if desired.
+ \ifx\SETmarginindex\relax\else
+ \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
+ \fi
+ %
+ % Remember, we are within a group.
+ \indexdummies % Must do this here, since \bf, etc expand at this stage
+ \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
+ % so it will be output as is; and it will print as backslash.
+ %
+ % Process the index entry with all font commands turned off, to
+ % get the string to sort by.
+ {\indexnofonts
+ \edef\temp{\the\toks0}% need full expansion
+ \xdef\indexsorttmp{\temp}%
+ }%
+ %
+ % Set up the complete index entry, with both the sort key and
+ % the original text, including any font commands. We write
+ % three arguments to \entry to the .?? file (four in the
+ % subentry case), texindex reduces to two when writing the .??s
+ % sorted result.
+ \edef\temp{%
+ \write\writeto{%
+ \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
+ }%
+ \temp
+}
+
+% Take care of unwanted page breaks:
+%
+% If a skip is the last thing on the list now, preserve it
+% by backing up by \lastskip, doing the \write, then inserting
+% the skip again. Otherwise, the whatsit generated by the
+% \write will make \lastskip zero. The result is that sequences
+% like this:
+% @end defun
+% @tindex whatever
+% @defun ...
+% will have extra space inserted, because the \medbreak in the
+% start of the @defun won't see the skip inserted by the @end of
+% the previous defun.
+%
+% But don't do any of this if we're not in vertical mode. We
+% don't want to do a \vskip and prematurely end a paragraph.
+%
+% Avoid page breaks due to these extra skips, too.
+%
+% But wait, there is a catch there:
+% We'll have to check whether \lastskip is zero skip. \ifdim is not
+% sufficient for this purpose, as it ignores stretch and shrink parts
+% of the skip. The only way seems to be to check the textual
+% representation of the skip.
+%
+% The following is almost like \def\zeroskipmacro{0.0pt} except that
+% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
+%
+\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
+%
+% ..., ready, GO:
+%
+\def\dosubindsanitize{%
+ % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
+ \skip0 = \lastskip
+ \edef\lastskipmacro{\the\lastskip}%
+ \count255 = \lastpenalty
+ %
+ % If \lastskip is nonzero, that means the last item was a
+ % skip. And since a skip is discardable, that means this
+ % -\skip0 glue we're inserting is preceded by a
+ % non-discardable item, therefore it is not a potential
+ % breakpoint, therefore no \nobreak needed.
+ \ifx\lastskipmacro\zeroskipmacro
+ \else
+ \vskip-\skip0
+ \fi
+ %
+ \dosubindwrite
+ %
+ \ifx\lastskipmacro\zeroskipmacro
+ % If \lastskip was zero, perhaps the last item was a penalty, and
+ % perhaps it was >=10000, e.g., a \nobreak. In that case, we want
+ % to re-insert the same penalty (values >10000 are used for various
+ % signals); since we just inserted a non-discardable item, any
+ % following glue (such as a \parskip) would be a breakpoint. For example:
+ %
+ % @deffn deffn-whatever
+ % @vindex index-whatever
+ % Description.
+ % would allow a break between the index-whatever whatsit
+ % and the "Description." paragraph.
+ \ifnum\count255>9999 \penalty\count255 \fi
+ \else
+ % On the other hand, if we had a nonzero \lastskip,
+ % this make-up glue would be preceded by a non-discardable item
+ % (the whatsit from the \write), so we must insert a \nobreak.
+ \nobreak\vskip\skip0
+ \fi
+}
+
+% The index entry written in the file actually looks like
+% \entry {sortstring}{page}{topic}
+% or
+% \entry {sortstring}{page}{topic}{subtopic}
+% The texindex program reads in these files and writes files
+% containing these kinds of lines:
+% \initial {c}
+% before the first topic whose initial is c
+% \entry {topic}{pagelist}
+% for a topic that is used without subtopics
+% \primary {topic}
+% for the beginning of a topic that is used with subtopics
+% \secondary {subtopic}{pagelist}
+% for each subtopic.
+
+% Define the user-accessible indexing commands
+% @findex, @vindex, @kindex, @cindex.
+
+\def\findex {\fnindex}
+\def\kindex {\kyindex}
+\def\cindex {\cpindex}
+\def\vindex {\vrindex}
+\def\tindex {\tpindex}
+\def\pindex {\pgindex}
+
+\def\cindexsub {\begingroup\obeylines\cindexsub}
+{\obeylines %
+\gdef\cindexsub "#1" #2^^M{\endgroup %
+\dosubind{cp}{#2}{#1}}}
+
+% Define the macros used in formatting output of the sorted index material.
+
+% @printindex causes a particular index (the ??s file) to get printed.
+% It does not print any chapter heading (usually an @unnumbered).
+%
+\parseargdef\printindex{\begingroup
+ \dobreak \chapheadingskip{10000}%
+ %
+ \smallfonts \rm
+ \tolerance = 9500
+ \everypar = {}% don't want the \kern\-parindent from indentation suppression.
+ %
+ % See if the index file exists and is nonempty.
+ % Change catcode of @ here so that if the index file contains
+ % \initial {@}
+ % as its first line, TeX doesn't complain about mismatched braces
+ % (because it thinks @} is a control sequence).
+ \catcode`\@ = 11
+ \openin 1 \jobname.#1s
+ \ifeof 1
+ % \enddoublecolumns gets confused if there is no text in the index,
+ % and it loses the chapter title and the aux file entries for the
+ % index. The easiest way to prevent this problem is to make sure
+ % there is some text.
+ \putwordIndexNonexistent
+ \else
+ %
+ % If the index file exists but is empty, then \openin leaves \ifeof
+ % false. We have to make TeX try to read something from the file, so
+ % it can discover if there is anything in it.
+ \read 1 to \temp
+ \ifeof 1
+ \putwordIndexIsEmpty
+ \else
+ % Index files are almost Texinfo source, but we use \ as the escape
+ % character. It would be better to use @, but that's too big a change
+ % to make right now.
+ \def\indexbackslash{\backslashcurfont}%
+ \catcode`\\ = 0
+ \escapechar = `\\
+ \begindoublecolumns
+ \input \jobname.#1s
+ \enddoublecolumns
+ \fi
+ \fi
+ \closein 1
+\endgroup}
+
+% These macros are used by the sorted index file itself.
+% Change them to control the appearance of the index.
+
+\def\initial#1{{%
+ % Some minor font changes for the special characters.
+ \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
+ %
+ % Remove any glue we may have, we'll be inserting our own.
+ \removelastskip
+ %
+ % We like breaks before the index initials, so insert a bonus.
+ \nobreak
+ \vskip 0pt plus 3\baselineskip
+ \penalty 0
+ \vskip 0pt plus -3\baselineskip
+ %
+ % Typeset the initial. Making this add up to a whole number of
+ % baselineskips increases the chance of the dots lining up from column
+ % to column. It still won't often be perfect, because of the stretch
+ % we need before each entry, but it's better.
+ %
+ % No shrink because it confuses \balancecolumns.
+ \vskip 1.67\baselineskip plus .5\baselineskip
+ \leftline{\secbf #1}%
+ % Do our best not to break after the initial.
+ \nobreak
+ \vskip .33\baselineskip plus .1\baselineskip
+}}
+
+% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
+% then page number (#2) flushed to the right margin. It is used for index
+% and table of contents entries. The paragraph is indented by \leftskip.
+%
+% A straightforward implementation would start like this:
+% \def\entry#1#2{...
+% But this frozes the catcodes in the argument, and can cause problems to
+% @code, which sets - active. This problem was fixed by a kludge---
+% ``-'' was active throughout whole index, but this isn't really right.
+%
+% The right solution is to prevent \entry from swallowing the whole text.
+% --kasal, 21nov03
+\def\entry{%
+ \begingroup
+ %
+ % Start a new paragraph if necessary, so our assignments below can't
+ % affect previous text.
+ \par
+ %
+ % Do not fill out the last line with white space.
+ \parfillskip = 0in
+ %
+ % No extra space above this paragraph.
+ \parskip = 0in
+ %
+ % Do not prefer a separate line ending with a hyphen to fewer lines.
+ \finalhyphendemerits = 0
+ %
+ % \hangindent is only relevant when the entry text and page number
+ % don't both fit on one line. In that case, bob suggests starting the
+ % dots pretty far over on the line. Unfortunately, a large
+ % indentation looks wrong when the entry text itself is broken across
+ % lines. So we use a small indentation and put up with long leaders.
+ %
+ % \hangafter is reset to 1 (which is the value we want) at the start
+ % of each paragraph, so we need not do anything with that.
+ \hangindent = 2em
+ %
+ % When the entry text needs to be broken, just fill out the first line
+ % with blank space.
+ \rightskip = 0pt plus1fil
+ %
+ % A bit of stretch before each entry for the benefit of balancing
+ % columns.
+ \vskip 0pt plus1pt
+ %
+ % Swallow the left brace of the text (first parameter):
+ \afterassignment\doentry
+ \let\temp =
+}
+\def\doentry{%
+ \bgroup % Instead of the swallowed brace.
+ \noindent
+ \aftergroup\finishentry
+ % And now comes the text of the entry.
+}
+\def\finishentry#1{%
+ % #1 is the page number.
+ %
+ % The following is kludged to not output a line of dots in the index if
+ % there are no page numbers. The next person who breaks this will be
+ % cursed by a Unix daemon.
+ \def\tempa{{\rm }}%
+ \def\tempb{#1}%
+ \edef\tempc{\tempa}%
+ \edef\tempd{\tempb}%
+ \ifx\tempc\tempd
+ \ %
+ \else
+ %
+ % If we must, put the page number on a line of its own, and fill out
+ % this line with blank space. (The \hfil is overwhelmed with the
+ % fill leaders glue in \indexdotfill if the page number does fit.)
+ \hfil\penalty50
+ \null\nobreak\indexdotfill % Have leaders before the page number.
+ %
+ % The `\ ' here is removed by the implicit \unskip that TeX does as
+ % part of (the primitive) \par. Without it, a spurious underfull
+ % \hbox ensues.
+ \ifpdf
+ \pdfgettoks#1.%
+ \ \the\toksA
+ \else
+ \ #1%
+ \fi
+ \fi
+ \par
+ \endgroup
+}
+
+% Like plain.tex's \dotfill, except uses up at least 1 em.
+\def\indexdotfill{\cleaders
+ \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
+
+\def\primary #1{\line{#1\hfil}}
+
+\newskip\secondaryindent \secondaryindent=0.5cm
+\def\secondary#1#2{{%
+ \parfillskip=0in
+ \parskip=0in
+ \hangindent=1in
+ \hangafter=1
+ \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
+ \ifpdf
+ \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
+ \else
+ #2
+ \fi
+ \par
+}}
+
+% Define two-column mode, which we use to typeset indexes.
+% Adapted from the TeXbook, page 416, which is to say,
+% the manmac.tex format used to print the TeXbook itself.
+\catcode`\@=11
+
+\newbox\partialpage
+\newdimen\doublecolumnhsize
+
+\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
+ % Grab any single-column material above us.
+ \output = {%
+ %
+ % Here is a possibility not foreseen in manmac: if we accumulate a
+ % whole lot of material, we might end up calling this \output
+ % routine twice in a row (see the doublecol-lose test, which is
+ % essentially a couple of indexes with @setchapternewpage off). In
+ % that case we just ship out what is in \partialpage with the normal
+ % output routine. Generally, \partialpage will be empty when this
+ % runs and this will be a no-op. See the indexspread.tex test case.
+ \ifvoid\partialpage \else
+ \onepageout{\pagecontents\partialpage}%
+ \fi
+ %
+ \global\setbox\partialpage = \vbox{%
+ % Unvbox the main output page.
+ \unvbox\PAGE
+ \kern-\topskip \kern\baselineskip
+ }%
+ }%
+ \eject % run that output routine to set \partialpage
+ %
+ % Use the double-column output routine for subsequent pages.
+ \output = {\doublecolumnout}%
+ %
+ % Change the page size parameters. We could do this once outside this
+ % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
+ % format, but then we repeat the same computation. Repeating a couple
+ % of assignments once per index is clearly meaningless for the
+ % execution time, so we may as well do it in one place.
+ %
+ % First we halve the line length, less a little for the gutter between
+ % the columns. We compute the gutter based on the line length, so it
+ % changes automatically with the paper format. The magic constant
+ % below is chosen so that the gutter has the same value (well, +-<1pt)
+ % as it did when we hard-coded it.
+ %
+ % We put the result in a separate register, \doublecolumhsize, so we
+ % can restore it in \pagesofar, after \hsize itself has (potentially)
+ % been clobbered.
+ %
+ \doublecolumnhsize = \hsize
+ \advance\doublecolumnhsize by -.04154\hsize
+ \divide\doublecolumnhsize by 2
+ \hsize = \doublecolumnhsize
+ %
+ % Double the \vsize as well. (We don't need a separate register here,
+ % since nobody clobbers \vsize.)
+ \vsize = 2\vsize
+}
+
+% The double-column output routine for all double-column pages except
+% the last.
+%
+\def\doublecolumnout{%
+ \splittopskip=\topskip \splitmaxdepth=\maxdepth
+ % Get the available space for the double columns -- the normal
+ % (undoubled) page height minus any material left over from the
+ % previous page.
+ \dimen@ = \vsize
+ \divide\dimen@ by 2
+ \advance\dimen@ by -\ht\partialpage
+ %
+ % box0 will be the left-hand column, box2 the right.
+ \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
+ \onepageout\pagesofar
+ \unvbox255
+ \penalty\outputpenalty
+}
+%
+% Re-output the contents of the output page -- any previous material,
+% followed by the two boxes we just split, in box0 and box2.
+\def\pagesofar{%
+ \unvbox\partialpage
+ %
+ \hsize = \doublecolumnhsize
+ \wd0=\hsize \wd2=\hsize
+ \hbox to\pagewidth{\box0\hfil\box2}%
+}
+%
+% All done with double columns.
+\def\enddoublecolumns{%
+ % The following penalty ensures that the page builder is exercised
+ % _before_ we change the output routine. This is necessary in the
+ % following situation:
+ %
+ % The last section of the index consists only of a single entry.
+ % Before this section, \pagetotal is less than \pagegoal, so no
+ % break occurs before the last section starts. However, the last
+ % section, consisting of \initial and the single \entry, does not
+ % fit on the page and has to be broken off. Without the following
+ % penalty the page builder will not be exercised until \eject
+ % below, and by that time we'll already have changed the output
+ % routine to the \balancecolumns version, so the next-to-last
+ % double-column page will be processed with \balancecolumns, which
+ % is wrong: The two columns will go to the main vertical list, with
+ % the broken-off section in the recent contributions. As soon as
+ % the output routine finishes, TeX starts reconsidering the page
+ % break. The two columns and the broken-off section both fit on the
+ % page, because the two columns now take up only half of the page
+ % goal. When TeX sees \eject from below which follows the final
+ % section, it invokes the new output routine that we've set after
+ % \balancecolumns below; \onepageout will try to fit the two columns
+ % and the final section into the vbox of \pageheight (see
+ % \pagebody), causing an overfull box.
+ %
+ % Note that glue won't work here, because glue does not exercise the
+ % page builder, unlike penalties (see The TeXbook, pp. 280-281).
+ \penalty0
+ %
+ \output = {%
+ % Split the last of the double-column material. Leave it on the
+ % current page, no automatic page break.
+ \balancecolumns
+ %
+ % If we end up splitting too much material for the current page,
+ % though, there will be another page break right after this \output
+ % invocation ends. Having called \balancecolumns once, we do not
+ % want to call it again. Therefore, reset \output to its normal
+ % definition right away. (We hope \balancecolumns will never be
+ % called on to balance too much material, but if it is, this makes
+ % the output somewhat more palatable.)
+ \global\output = {\onepageout{\pagecontents\PAGE}}%
+ }%
+ \eject
+ \endgroup % started in \begindoublecolumns
+ %
+ % \pagegoal was set to the doubled \vsize above, since we restarted
+ % the current page. We're now back to normal single-column
+ % typesetting, so reset \pagegoal to the normal \vsize (after the
+ % \endgroup where \vsize got restored).
+ \pagegoal = \vsize
+}
+%
+% Called at the end of the double column material.
+\def\balancecolumns{%
+ \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
+ \dimen@ = \ht0
+ \advance\dimen@ by \topskip
+ \advance\dimen@ by-\baselineskip
+ \divide\dimen@ by 2 % target to split to
+ %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}%
+ \splittopskip = \topskip
+ % Loop until we get a decent breakpoint.
+ {%
+ \vbadness = 10000
+ \loop
+ \global\setbox3 = \copy0
+ \global\setbox1 = \vsplit3 to \dimen@
+ \ifdim\ht3>\dimen@
+ \global\advance\dimen@ by 1pt
+ \repeat
+ }%
+ %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
+ \setbox0=\vbox to\dimen@{\unvbox1}%
+ \setbox2=\vbox to\dimen@{\unvbox3}%
+ %
+ \pagesofar
+}
+\catcode`\@ = \other
+
+
+\message{sectioning,}
+% Chapters, sections, etc.
+
+% \unnumberedno is an oxymoron, of course. But we count the unnumbered
+% sections so that we can refer to them unambiguously in the pdf
+% outlines by their "section number". We avoid collisions with chapter
+% numbers by starting them at 10000. (If a document ever has 10000
+% chapters, we're in trouble anyway, I'm sure.)
+\newcount\unnumberedno \unnumberedno = 10000
+\newcount\chapno
+\newcount\secno \secno=0
+\newcount\subsecno \subsecno=0
+\newcount\subsubsecno \subsubsecno=0
+
+% This counter is funny since it counts through charcodes of letters A, B, ...
+\newcount\appendixno \appendixno = `\@
+%
+% \def\appendixletter{\char\the\appendixno}
+% We do the following ugly conditional instead of the above simple
+% construct for the sake of pdftex, which needs the actual
+% letter in the expansion, not just typeset.
+%
+\def\appendixletter{%
+ \ifnum\appendixno=`A A%
+ \else\ifnum\appendixno=`B B%
+ \else\ifnum\appendixno=`C C%
+ \else\ifnum\appendixno=`D D%
+ \else\ifnum\appendixno=`E E%
+ \else\ifnum\appendixno=`F F%
+ \else\ifnum\appendixno=`G G%
+ \else\ifnum\appendixno=`H H%
+ \else\ifnum\appendixno=`I I%
+ \else\ifnum\appendixno=`J J%
+ \else\ifnum\appendixno=`K K%
+ \else\ifnum\appendixno=`L L%
+ \else\ifnum\appendixno=`M M%
+ \else\ifnum\appendixno=`N N%
+ \else\ifnum\appendixno=`O O%
+ \else\ifnum\appendixno=`P P%
+ \else\ifnum\appendixno=`Q Q%
+ \else\ifnum\appendixno=`R R%
+ \else\ifnum\appendixno=`S S%
+ \else\ifnum\appendixno=`T T%
+ \else\ifnum\appendixno=`U U%
+ \else\ifnum\appendixno=`V V%
+ \else\ifnum\appendixno=`W W%
+ \else\ifnum\appendixno=`X X%
+ \else\ifnum\appendixno=`Y Y%
+ \else\ifnum\appendixno=`Z Z%
+ % The \the is necessary, despite appearances, because \appendixletter is
+ % expanded while writing the .toc file. \char\appendixno is not
+ % expandable, thus it is written literally, thus all appendixes come out
+ % with the same letter (or @) in the toc without it.
+ \else\char\the\appendixno
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+% Each @chapter defines this as the name of the chapter.
+% page headings and footings can use it. @section does likewise.
+% However, they are not reliable, because we don't use marks.
+\def\thischapter{}
+\def\thissection{}
+
+\newcount\absseclevel % used to calculate proper heading level
+\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
+
+% @raisesections: treat @section as chapter, @subsection as section, etc.
+\def\raisesections{\global\advance\secbase by -1}
+\let\up=\raisesections % original BFox name
+
+% @lowersections: treat @chapter as section, @section as subsection, etc.
+\def\lowersections{\global\advance\secbase by 1}
+\let\down=\lowersections % original BFox name
+
+% we only have subsub.
+\chardef\maxseclevel = 3
+%
+% A numbered section within an unnumbered changes to unnumbered too.
+% To achive this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unmlevel = \maxseclevel
+%
+% Trace whether the current chapter is an appendix or not:
+% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
+\def\chapheadtype{N}
+
+% Choose a heading macro
+% #1 is heading type
+% #2 is heading level
+% #3 is text for heading
+\def\genhead#1#2#3{%
+ % Compute the abs. sec. level:
+ \absseclevel=#2
+ \advance\absseclevel by \secbase
+ % Make sure \absseclevel doesn't fall outside the range:
+ \ifnum \absseclevel < 0
+ \absseclevel = 0
+ \else
+ \ifnum \absseclevel > 3
+ \absseclevel = 3
+ \fi
+ \fi
+ % The heading type:
+ \def\headtype{#1}%
+ \if \headtype U%
+ \ifnum \absseclevel < \unmlevel
+ \chardef\unmlevel = \absseclevel
+ \fi
+ \else
+ % Check for appendix sections:
+ \ifnum \absseclevel = 0
+ \edef\chapheadtype{\headtype}%
+ \else
+ \if \headtype A\if \chapheadtype N%
+ \errmessage{@appendix... within a non-appendix chapter}%
+ \fi\fi
+ \fi
+ % Check for numbered within unnumbered:
+ \ifnum \absseclevel > \unmlevel
+ \def\headtype{U}%
+ \else
+ \chardef\unmlevel = 3
+ \fi
+ \fi
+ % Now print the heading:
+ \if \headtype U%
+ \ifcase\absseclevel
+ \unnumberedzzz{#3}%
+ \or \unnumberedseczzz{#3}%
+ \or \unnumberedsubseczzz{#3}%
+ \or \unnumberedsubsubseczzz{#3}%
+ \fi
+ \else
+ \if \headtype A%
+ \ifcase\absseclevel
+ \appendixzzz{#3}%
+ \or \appendixsectionzzz{#3}%
+ \or \appendixsubseczzz{#3}%
+ \or \appendixsubsubseczzz{#3}%
+ \fi
+ \else
+ \ifcase\absseclevel
+ \chapterzzz{#3}%
+ \or \seczzz{#3}%
+ \or \numberedsubseczzz{#3}%
+ \or \numberedsubsubseczzz{#3}%
+ \fi
+ \fi
+ \fi
+ \suppressfirstparagraphindent
+}
+
+% an interface:
+\def\numhead{\genhead N}
+\def\apphead{\genhead A}
+\def\unnmhead{\genhead U}
+
+% @chapter, @appendix, @unnumbered. Increment top-level counter, reset
+% all lower-level sectioning counters to zero.
+%
+% Also set \chaplevelprefix, which we prepend to @float sequence numbers
+% (e.g., figures), q.v. By default (before any chapter), that is empty.
+\let\chaplevelprefix = \empty
+%
+\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
+\def\chapterzzz#1{%
+ % section resetting is \global in case the chapter is in a group, such
+ % as an @include file.
+ \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+ \global\advance\chapno by 1
+ %
+ % Used for \float.
+ \gdef\chaplevelprefix{\the\chapno.}%
+ \resetallfloatnos
+ %
+ \message{\putwordChapter\space \the\chapno}%
+ %
+ % Write the actual heading.
+ \chapmacro{#1}{Ynumbered}{\the\chapno}%
+ %
+ % So @section and the like are numbered underneath this chapter.
+ \global\let\section = \numberedsec
+ \global\let\subsection = \numberedsubsec
+ \global\let\subsubsection = \numberedsubsubsec
+}
+
+\outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz
+\def\appendixzzz#1{%
+ \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+ \global\advance\appendixno by 1
+ \gdef\chaplevelprefix{\appendixletter.}%
+ \resetallfloatnos
+ %
+ \def\appendixnum{\putwordAppendix\space \appendixletter}%
+ \message{\appendixnum}%
+ %
+ \chapmacro{#1}{Yappendix}{\appendixletter}%
+ %
+ \global\let\section = \appendixsec
+ \global\let\subsection = \appendixsubsec
+ \global\let\subsubsection = \appendixsubsubsec
+}
+
+\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
+\def\unnumberedzzz#1{%
+ \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+ \global\advance\unnumberedno by 1
+ %
+ % Since an unnumbered has no number, no prefix for figures.
+ \global\let\chaplevelprefix = \empty
+ \resetallfloatnos
+ %
+ % This used to be simply \message{#1}, but TeX fully expands the
+ % argument to \message. Therefore, if #1 contained @-commands, TeX
+ % expanded them. For example, in `@unnumbered The @cite{Book}', TeX
+ % expanded @cite (which turns out to cause errors because \cite is meant
+ % to be executed, not expanded).
+ %
+ % Anyway, we don't want the fully-expanded definition of @cite to appear
+ % as a result of the \message, we just want `@cite' itself. We use
+ % \the<toks register> to achieve this: TeX expands \the<toks> only once,
+ % simply yielding the contents of <toks register>. (We also do this for
+ % the toc entries.)
+ \toks0 = {#1}%
+ \message{(\the\toks0)}%
+ %
+ \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
+ %
+ \global\let\section = \unnumberedsec
+ \global\let\subsection = \unnumberedsubsec
+ \global\let\subsubsection = \unnumberedsubsubsec
+}
+
+% @centerchap is like @unnumbered, but the heading is centered.
+\outer\parseargdef\centerchap{%
+ % Well, we could do the following in a group, but that would break
+ % an assumption that \chapmacro is called at the outermost level.
+ % Thus we are safer this way: --kasal, 24feb04
+ \let\centerparametersmaybe = \centerparameters
+ \unnmhead0{#1}%
+ \let\centerparametersmaybe = \relax
+}
+
+% @top is like @unnumbered.
+\let\top\unnumbered
+
+% Sections.
+\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
+\def\seczzz#1{%
+ \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
+ \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
+}
+
+\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
+\def\appendixsectionzzz#1{%
+ \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
+ \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
+}
+\let\appendixsec\appendixsection
+
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
+\def\unnumberedseczzz#1{%
+ \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
+ \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
+}
+
+% Subsections.
+\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
+\def\numberedsubseczzz#1{%
+ \global\subsubsecno=0 \global\advance\subsecno by 1
+ \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
+}
+
+\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
+\def\appendixsubseczzz#1{%
+ \global\subsubsecno=0 \global\advance\subsecno by 1
+ \sectionheading{#1}{subsec}{Yappendix}%
+ {\appendixletter.\the\secno.\the\subsecno}%
+}
+
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
+\def\unnumberedsubseczzz#1{%
+ \global\subsubsecno=0 \global\advance\subsecno by 1
+ \sectionheading{#1}{subsec}{Ynothing}%
+ {\the\unnumberedno.\the\secno.\the\subsecno}%
+}
+
+% Subsubsections.
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
+\def\numberedsubsubseczzz#1{%
+ \global\advance\subsubsecno by 1
+ \sectionheading{#1}{subsubsec}{Ynumbered}%
+ {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
+\def\appendixsubsubseczzz#1{%
+ \global\advance\subsubsecno by 1
+ \sectionheading{#1}{subsubsec}{Yappendix}%
+ {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
+\def\unnumberedsubsubseczzz#1{%
+ \global\advance\subsubsecno by 1
+ \sectionheading{#1}{subsubsec}{Ynothing}%
+ {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% These macros control what the section commands do, according
+% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
+% Define them by default for a numbered chapter.
+\let\section = \numberedsec
+\let\subsection = \numberedsubsec
+\let\subsubsection = \numberedsubsubsec
+
+% Define @majorheading, @heading and @subheading
+
+% NOTE on use of \vbox for chapter headings, section headings, and such:
+% 1) We use \vbox rather than the earlier \line to permit
+% overlong headings to fold.
+% 2) \hyphenpenalty is set to 10000 because hyphenation in a
+% heading is obnoxious; this forbids it.
+% 3) Likewise, headings look best if no \parindent is used, and
+% if justification is not attempted. Hence \raggedright.
+
+
+\def\majorheading{%
+ {\advance\chapheadingskip by 10pt \chapbreak }%
+ \parsearg\chapheadingzzz
+}
+
+\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
+\def\chapheadingzzz#1{%
+ {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #1\hfill}}%
+ \bigskip \par\penalty 200\relax
+ \suppressfirstparagraphindent
+}
+
+% @heading, @subheading, @subsubheading.
+\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
+ \suppressfirstparagraphindent}
+\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
+ \suppressfirstparagraphindent}
+\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
+ \suppressfirstparagraphindent}
+
+% These macros generate a chapter, section, etc. heading only
+% (including whitespace, linebreaking, etc. around it),
+% given all the information in convenient, parsed form.
+
+%%% Args are the skip and penalty (usually negative)
+\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
+
+%%% Define plain chapter starts, and page on/off switching for it
+% Parameter controlling skip before chapter headings (if needed)
+
+\newskip\chapheadingskip
+
+\def\chapbreak{\dobreak \chapheadingskip {-4000}}
+\def\chappager{\par\vfill\supereject}
+\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi}
+
+\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
+
+\def\CHAPPAGoff{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chapbreak
+\global\let\pagealignmacro=\chappager}
+
+\def\CHAPPAGon{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chappager
+\global\let\pagealignmacro=\chappager
+\global\def\HEADINGSon{\HEADINGSsingle}}
+
+\def\CHAPPAGodd{%
+\global\let\contentsalignmacro = \chapoddpage
+\global\let\pchapsepmacro=\chapoddpage
+\global\let\pagealignmacro=\chapoddpage
+\global\def\HEADINGSon{\HEADINGSdouble}}
+
+\CHAPPAGon
+
+% Chapter opening.
+%
+% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
+% Yappendix, Yomitfromtoc), #3 the chapter number.
+%
+% To test against our argument.
+\def\Ynothingkeyword{Ynothing}
+\def\Yomitfromtockeyword{Yomitfromtoc}
+\def\Yappendixkeyword{Yappendix}
+%
+\def\chapmacro#1#2#3{%
+ \pchapsepmacro
+ {%
+ \chapfonts \rm
+ %
+ % Have to define \thissection before calling \donoderef, because the
+ % xref code eventually uses it. On the other hand, it has to be called
+ % after \pchapsepmacro, or the headline will change too soon.
+ \gdef\thissection{#1}%
+ \gdef\thischaptername{#1}%
+ %
+ % Only insert the separating space if we have a chapter/appendix
+ % number, and don't print the unnumbered ``number''.
+ \def\temptype{#2}%
+ \ifx\temptype\Ynothingkeyword
+ \setbox0 = \hbox{}%
+ \def\toctype{unnchap}%
+ \gdef\thischapternum{}%
+ \gdef\thischapter{#1}%
+ \else\ifx\temptype\Yomitfromtockeyword
+ \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
+ \def\toctype{omit}%
+ \gdef\thischapternum{}%
+ \gdef\thischapter{}%
+ \else\ifx\temptype\Yappendixkeyword
+ \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
+ \def\toctype{app}%
+ \xdef\thischapternum{\appendixletter}%
+ % We don't substitute the actual chapter name into \thischapter
+ % because we don't want its macros evaluated now. And we don't
+ % use \thissection because that changes with each section.
+ %
+ \xdef\thischapter{\putwordAppendix{} \appendixletter:
+ \noexpand\thischaptername}%
+ \else
+ \setbox0 = \hbox{#3\enspace}%
+ \def\toctype{numchap}%
+ \xdef\thischapternum{\the\chapno}%
+ \xdef\thischapter{\putwordChapter{} \the\chapno:
+ \noexpand\thischaptername}%
+ \fi\fi\fi
+ %
+ % Write the toc entry for this chapter. Must come before the
+ % \donoderef, because we include the current node name in the toc
+ % entry, and \donoderef resets it to empty.
+ \writetocentry{\toctype}{#1}{#3}%
+ %
+ % For pdftex, we have to write out the node definition (aka, make
+ % the pdfdest) after any page break, but before the actual text has
+ % been typeset. If the destination for the pdf outline is after the
+ % text, then jumping from the outline may wind up with the text not
+ % being visible, for instance under high magnification.
+ \donoderef{#2}%
+ %
+ % Typeset the actual heading.
+ \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+ \hangindent=\wd0 \centerparametersmaybe
+ \unhbox0 #1\par}%
+ }%
+ \nobreak\bigskip % no page break after a chapter title
+ \nobreak
+}
+
+% @centerchap -- centered and unnumbered.
+\let\centerparametersmaybe = \relax
+\def\centerparameters{%
+ \advance\rightskip by 3\rightskip
+ \leftskip = \rightskip
+ \parfillskip = 0pt
+}
+
+
+% I don't think this chapter style is supported any more, so I'm not
+% updating it with the new noderef stuff. We'll see. --karl, 11aug03.
+%
+\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
+%
+\def\unnchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt\raggedright
+ \rm #1\hfill}}\bigskip \par\nobreak
+}
+\def\chfopen #1#2{\chapoddpage {\chapfonts
+\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
+\par\penalty 5000 %
+}
+\def\centerchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+ \parindent=0pt
+ \hfill {\rm #1}\hfill}}\bigskip \par\nobreak
+}
+\def\CHAPFopen{%
+ \global\let\chapmacro=\chfopen
+ \global\let\centerchapmacro=\centerchfopen}
+
+
+% Section titles. These macros combine the section number parts and
+% call the generic \sectionheading to do the printing.
+%
+\newskip\secheadingskip
+\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
+
+% Subsection titles.
+\newskip\subsecheadingskip
+\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
+
+% Subsubsection titles.
+\def\subsubsecheadingskip{\subsecheadingskip}
+\def\subsubsecheadingbreak{\subsecheadingbreak}
+
+
+% Print any size, any type, section title.
+%
+% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is
+% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
+% section number.
+%
+\def\sectionheading#1#2#3#4{%
+ {%
+ % Switch to the right set of fonts.
+ \csname #2fonts\endcsname \rm
+ %
+ % Insert space above the heading.
+ \csname #2headingbreak\endcsname
+ %
+ % Only insert the space after the number if we have a section number.
+ \def\sectionlevel{#2}%
+ \def\temptype{#3}%
+ %
+ \ifx\temptype\Ynothingkeyword
+ \setbox0 = \hbox{}%
+ \def\toctype{unn}%
+ \gdef\thissection{#1}%
+ \else\ifx\temptype\Yomitfromtockeyword
+ % for @headings -- no section number, don't include in toc,
+ % and don't redefine \thissection.
+ \setbox0 = \hbox{}%
+ \def\toctype{omit}%
+ \let\sectionlevel=\empty
+ \else\ifx\temptype\Yappendixkeyword
+ \setbox0 = \hbox{#4\enspace}%
+ \def\toctype{app}%
+ \gdef\thissection{#1}%
+ \else
+ \setbox0 = \hbox{#4\enspace}%
+ \def\toctype{num}%
+ \gdef\thissection{#1}%
+ \fi\fi\fi
+ %
+ % Write the toc entry (before \donoderef). See comments in \chapmacro.
+ \writetocentry{\toctype\sectionlevel}{#1}{#4}%
+ %
+ % Write the node reference (= pdf destination for pdftex).
+ % Again, see comments in \chapmacro.
+ \donoderef{#3}%
+ %
+ % Interline glue will be inserted when the vbox is completed.
+ % That glue will be a valid breakpoint for the page, since it'll be
+ % preceded by a whatsit (usually from the \donoderef, or from the
+ % \writetocentry if there was no node). We don't want to allow that
+ % break, since then the whatsits could end up on page n while the
+ % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000.
+ \nobreak
+ %
+ % Output the actual section heading.
+ \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+ \hangindent=\wd0 % zero if no section number
+ \unhbox0 #1}%
+ }%
+ % Add extra space after the heading -- half of whatever came above it.
+ % Don't allow stretch, though.
+ \kern .5 \csname #2headingskip\endcsname
+ %
+ % Do not let the kern be a potential breakpoint, as it would be if it
+ % was followed by glue.
+ \nobreak
+ %
+ % We'll almost certainly start a paragraph next, so don't let that
+ % glue accumulate. (Not a breakpoint because it's preceded by a
+ % discardable item.)
+ \vskip-\parskip
+ %
+ % This is purely so the last item on the list is a known \penalty >
+ % 10000. This is so \startdefun can avoid allowing breakpoints after
+ % section headings. Otherwise, it would insert a valid breakpoint between:
+ %
+ % @section sec-whatever
+ % @deffn def-whatever
+ \penalty 10001
+}
+
+
+\message{toc,}
+% Table of contents.
+\newwrite\tocfile
+
+% Write an entry to the toc file, opening it if necessary.
+% Called from @chapter, etc.
+%
+% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
+% We append the current node name (if any) and page number as additional
+% arguments for the \{chap,sec,...}entry macros which will eventually
+% read this. The node name is used in the pdf outlines as the
+% destination to jump to.
+%
+% We open the .toc file for writing here instead of at @setfilename (or
+% any other fixed time) so that @contents can be anywhere in the document.
+% But if #1 is `omit', then we don't do anything. This is used for the
+% table of contents chapter openings themselves.
+%
+\newif\iftocfileopened
+\def\omitkeyword{omit}%
+%
+\def\writetocentry#1#2#3{%
+ \edef\writetoctype{#1}%
+ \ifx\writetoctype\omitkeyword \else
+ \iftocfileopened\else
+ \immediate\openout\tocfile = \jobname.toc
+ \global\tocfileopenedtrue
+ \fi
+ %
+ \iflinks
+ {\atdummies
+ \edef\temp{%
+ \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
+ \temp
+ }%
+ \fi
+ \fi
+ %
+ % Tell \shipout to create a pdf destination on each page, if we're
+ % writing pdf. These are used in the table of contents. We can't
+ % just write one on every page because the title pages are numbered
+ % 1 and 2 (the page numbers aren't printed), and so are the first
+ % two pages of the document. Thus, we'd have two destinations named
+ % `1', and two named `2'.
+ \ifpdf \global\pdfmakepagedesttrue \fi
+}
+
+
+% These characters do not print properly in the Computer Modern roman
+% fonts, so we must take special care. This is more or less redundant
+% with the Texinfo input format setup at the end of this file.
+%
+\def\activecatcodes{%
+ \catcode`\"=\active
+ \catcode`\$=\active
+ \catcode`\<=\active
+ \catcode`\>=\active
+ \catcode`\\=\active
+ \catcode`\^=\active
+ \catcode`\_=\active
+ \catcode`\|=\active
+ \catcode`\~=\active
+}
+
+
+% Read the toc file, which is essentially Texinfo input.
+\def\readtocfile{%
+ \setupdatafile
+ \activecatcodes
+ \input \jobname.toc
+}
+
+\newskip\contentsrightmargin \contentsrightmargin=1in
+\newcount\savepageno
+\newcount\lastnegativepageno \lastnegativepageno = -1
+
+% Prepare to read what we've written to \tocfile.
+%
+\def\startcontents#1{%
+ % If @setchapternewpage on, and @headings double, the contents should
+ % start on an odd page, unlike chapters. Thus, we maintain
+ % \contentsalignmacro in parallel with \pagealignmacro.
+ % From: Torbjorn Granlund <tege@matematik.su.se>
+ \contentsalignmacro
+ \immediate\closeout\tocfile
+ %
+ % Don't need to put `Contents' or `Short Contents' in the headline.
+ % It is abundantly clear what they are.
+ \def\thischapter{}%
+ \chapmacro{#1}{Yomitfromtoc}{}%
+ %
+ \savepageno = \pageno
+ \begingroup % Set up to handle contents files properly.
+ \raggedbottom % Worry more about breakpoints than the bottom.
+ \advance\hsize by -\contentsrightmargin % Don't use the full line length.
+ %
+ % Roman numerals for page numbers.
+ \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
+}
+
+
+% Normal (long) toc.
+\def\contents{%
+ \startcontents{\putwordTOC}%
+ \openin 1 \jobname.toc
+ \ifeof 1 \else
+ \readtocfile
+ \fi
+ \vfill \eject
+ \contentsalignmacro % in case @setchapternewpage odd is in effect
+ \ifeof 1 \else
+ \pdfmakeoutlines
+ \fi
+ \closein 1
+ \endgroup
+ \lastnegativepageno = \pageno
+ \global\pageno = \savepageno
+}
+
+% And just the chapters.
+\def\summarycontents{%
+ \startcontents{\putwordShortTOC}%
+ %
+ \let\numchapentry = \shortchapentry
+ \let\appentry = \shortchapentry
+ \let\unnchapentry = \shortunnchapentry
+ % We want a true roman here for the page numbers.
+ \secfonts
+ \let\rm=\shortcontrm \let\bf=\shortcontbf
+ \let\sl=\shortcontsl \let\tt=\shortconttt
+ \rm
+ \hyphenpenalty = 10000
+ \advance\baselineskip by 1pt % Open it up a little.
+ \def\numsecentry##1##2##3##4{}
+ \let\appsecentry = \numsecentry
+ \let\unnsecentry = \numsecentry
+ \let\numsubsecentry = \numsecentry
+ \let\appsubsecentry = \numsecentry
+ \let\unnsubsecentry = \numsecentry
+ \let\numsubsubsecentry = \numsecentry
+ \let\appsubsubsecentry = \numsecentry
+ \let\unnsubsubsecentry = \numsecentry
+ \openin 1 \jobname.toc
+ \ifeof 1 \else
+ \readtocfile
+ \fi
+ \closein 1
+ \vfill \eject
+ \contentsalignmacro % in case @setchapternewpage odd is in effect
+ \endgroup
+ \lastnegativepageno = \pageno
+ \global\pageno = \savepageno
+}
+\let\shortcontents = \summarycontents
+
+% Typeset the label for a chapter or appendix for the short contents.
+% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
+%
+\def\shortchaplabel#1{%
+ % This space should be enough, since a single number is .5em, and the
+ % widest letter (M) is 1em, at least in the Computer Modern fonts.
+ % But use \hss just in case.
+ % (This space doesn't include the extra space that gets added after
+ % the label; that gets put in by \shortchapentry above.)
+ %
+ % We'd like to right-justify chapter numbers, but that looks strange
+ % with appendix letters. And right-justifying numbers and
+ % left-justifying letters looks strange when there is less than 10
+ % chapters. Have to read the whole toc once to know how many chapters
+ % there are before deciding ...
+ \hbox to 1em{#1\hss}%
+}
+
+% These macros generate individual entries in the table of contents.
+% The first argument is the chapter or section name.
+% The last argument is the page number.
+% The arguments in between are the chapter number, section number, ...
+
+% Chapters, in the main contents.
+\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
+%
+% Chapters, in the short toc.
+% See comments in \dochapentry re vbox and related settings.
+\def\shortchapentry#1#2#3#4{%
+ \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
+}
+
+% Appendices, in the main contents.
+% Need the word Appendix, and a fixed-size box.
+%
+\def\appendixbox#1{%
+ % We use M since it's probably the widest letter.
+ \setbox0 = \hbox{\putwordAppendix{} M}%
+ \hbox to \wd0{\putwordAppendix{} #1\hss}}
+%
+\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
+
+% Unnumbered chapters.
+\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
+\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
+
+% Sections.
+\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
+\let\appsecentry=\numsecentry
+\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
+
+% Subsections.
+\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsecentry=\numsubsecentry
+\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
+
+% And subsubsections.
+\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsubsecentry=\numsubsubsecentry
+\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
+
+% This parameter controls the indentation of the various levels.
+% Same as \defaultparindent.
+\newdimen\tocindent \tocindent = 15pt
+
+% Now for the actual typesetting. In all these, #1 is the text and #2 is the
+% page number.
+%
+% If the toc has to be broken over pages, we want it to be at chapters
+% if at all possible; hence the \penalty.
+\def\dochapentry#1#2{%
+ \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
+ \begingroup
+ \chapentryfonts
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+ \endgroup
+ \nobreak\vskip .25\baselineskip plus.1\baselineskip
+}
+
+\def\dosecentry#1#2{\begingroup
+ \secentryfonts \leftskip=\tocindent
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsecentry#1#2{\begingroup
+ \subsecentryfonts \leftskip=2\tocindent
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsubsecentry#1#2{\begingroup
+ \subsubsecentryfonts \leftskip=3\tocindent
+ \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+% We use the same \entry macro as for the index entries.
+\let\tocentry = \entry
+
+% Space between chapter (or whatever) number and the title.
+\def\labelspace{\hskip1em \relax}
+
+\def\dopageno#1{{\rm #1}}
+\def\doshortpageno#1{{\rm #1}}
+
+\def\chapentryfonts{\secfonts \rm}
+\def\secentryfonts{\textfonts}
+\def\subsecentryfonts{\textfonts}
+\def\subsubsecentryfonts{\textfonts}
+
+
+\message{environments,}
+% @foo ... @end foo.
+
+% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
+%
+% Since these characters are used in examples, it should be an even number of
+% \tt widths. Each \tt character is 1en, so two makes it 1em.
+%
+\def\point{$\star$}
+\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
+\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+
+% The @error{} command.
+% Adapted from the TeXbook's \boxit.
+%
+\newbox\errorbox
+%
+{\tentt \global\dimen0 = 3em}% Width of the box.
+\dimen2 = .55pt % Thickness of rules
+% The text. (`r' is open on the right, `e' somewhat less so on the left.)
+\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
+%
+\setbox\errorbox=\hbox to \dimen0{\hfil
+ \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
+ \advance\hsize by -2\dimen2 % Rules.
+ \vbox{%
+ \hrule height\dimen2
+ \hbox{\vrule width\dimen2 \kern3pt % Space to left of text.
+ \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
+ \kern3pt\vrule width\dimen2}% Space to right.
+ \hrule height\dimen2}
+ \hfil}
+%
+\def\error{\leavevmode\lower.7ex\copy\errorbox}
+
+% @tex ... @end tex escapes into raw Tex temporarily.
+% One exception: @ is still an escape character, so that @end tex works.
+% But \@ or @@ will get a plain tex @ character.
+
+\envdef\tex{%
+ \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
+ \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
+ \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
+ \catcode `\%=14
+ \catcode `\+=\other
+ \catcode `\"=\other
+ \catcode `\|=\other
+ \catcode `\<=\other
+ \catcode `\>=\other
+ \escapechar=`\\
+ %
+ \let\b=\ptexb
+ \let\bullet=\ptexbullet
+ \let\c=\ptexc
+ \let\,=\ptexcomma
+ \let\.=\ptexdot
+ \let\dots=\ptexdots
+ \let\equiv=\ptexequiv
+ \let\!=\ptexexclam
+ \let\i=\ptexi
+ \let\indent=\ptexindent
+ \let\noindent=\ptexnoindent
+ \let\{=\ptexlbrace
+ \let\+=\tabalign
+ \let\}=\ptexrbrace
+ \let\/=\ptexslash
+ \let\*=\ptexstar
+ \let\t=\ptext
+ \let\frenchspacing=\plainfrenchspacing
+ %
+ \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
+ \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
+ \def\@{@}%
+}
+% There is no need to define \Etex.
+
+% Define @lisp ... @end lisp.
+% @lisp environment forms a group so it can rebind things,
+% including the definition of @end lisp (which normally is erroneous).
+
+% Amount to narrow the margins by for @lisp.
+\newskip\lispnarrowing \lispnarrowing=0.4in
+
+% This is the definition that ^^M gets inside @lisp, @example, and other
+% such environments. \null is better than a space, since it doesn't
+% have any width.
+\def\lisppar{\null\endgraf}
+
+% This space is always present above and below environments.
+\newskip\envskipamount \envskipamount = 0pt
+
+% Make spacing and below environment symmetrical. We use \parskip here
+% to help in doing that, since in @example-like environments \parskip
+% is reset to zero; thus the \afterenvbreak inserts no space -- but the
+% start of the next paragraph will insert \parskip.
+%
+\def\aboveenvbreak{{%
+ % =10000 instead of <10000 because of a special case in \itemzzz and
+ % \sectionheading, q.v.
+ \ifnum \lastpenalty=10000 \else
+ \advance\envskipamount by \parskip
+ \endgraf
+ \ifdim\lastskip<\envskipamount
+ \removelastskip
+ % it's not a good place to break if the last penalty was \nobreak
+ % or better ...
+ \ifnum\lastpenalty<10000 \penalty-50 \fi
+ \vskip\envskipamount
+ \fi
+ \fi
+}}
+
+\let\afterenvbreak = \aboveenvbreak
+
+% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will
+% also clear it, so that its embedded environments do the narrowing again.
+\let\nonarrowing=\relax
+
+% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
+% environment contents.
+\font\circle=lcircle10
+\newdimen\circthick
+\newdimen\cartouter\newdimen\cartinner
+\newskip\normbskip\newskip\normpskip\newskip\normlskip
+\circthick=\fontdimen8\circle
+%
+\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
+\def\ctr{{\hskip 6pt\circle\char'010}}
+\def\cbl{{\circle\char'012\hskip -6pt}}
+\def\cbr{{\hskip 6pt\circle\char'011}}
+\def\carttop{\hbox to \cartouter{\hskip\lskip
+ \ctl\leaders\hrule height\circthick\hfil\ctr
+ \hskip\rskip}}
+\def\cartbot{\hbox to \cartouter{\hskip\lskip
+ \cbl\leaders\hrule height\circthick\hfil\cbr
+ \hskip\rskip}}
+%
+\newskip\lskip\newskip\rskip
+
+\envdef\cartouche{%
+ \ifhmode\par\fi % can't be in the midst of a paragraph.
+ \startsavinginserts
+ \lskip=\leftskip \rskip=\rightskip
+ \leftskip=0pt\rightskip=0pt % we want these *outside*.
+ \cartinner=\hsize \advance\cartinner by-\lskip
+ \advance\cartinner by-\rskip
+ \cartouter=\hsize
+ \advance\cartouter by 18.4pt % allow for 3pt kerns on either
+ % side, and for 6pt waste from
+ % each corner char, and rule thickness
+ \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
+ % Flag to tell @lisp, etc., not to narrow margin.
+ \let\nonarrowing = t%
+ \vbox\bgroup
+ \baselineskip=0pt\parskip=0pt\lineskip=0pt
+ \carttop
+ \hbox\bgroup
+ \hskip\lskip
+ \vrule\kern3pt
+ \vbox\bgroup
+ \kern3pt
+ \hsize=\cartinner
+ \baselineskip=\normbskip
+ \lineskip=\normlskip
+ \parskip=\normpskip
+ \vskip -\parskip
+ \comment % For explanation, see the end of \def\group.
+}
+\def\Ecartouche{%
+ \ifhmode\par\fi
+ \kern3pt
+ \egroup
+ \kern3pt\vrule
+ \hskip\rskip
+ \egroup
+ \cartbot
+ \egroup
+ \checkinserts
+}
+
+
+% This macro is called at the beginning of all the @example variants,
+% inside a group.
+\def\nonfillstart{%
+ \aboveenvbreak
+ \hfuzz = 12pt % Don't be fussy
+ \sepspaces % Make spaces be word-separators rather than space tokens.
+ \let\par = \lisppar % don't ignore blank lines
+ \obeylines % each line of input is a line of output
+ \parskip = 0pt
+ \parindent = 0pt
+ \emergencystretch = 0pt % don't try to avoid overfull boxes
+ \ifx\nonarrowing\relax
+ \advance \leftskip by \lispnarrowing
+ \exdentamount=\lispnarrowing
+ \else
+ \let\nonarrowing = \relax
+ \fi
+ \let\exdent=\nofillexdent
+}
+
+% If you want all examples etc. small: @set dispenvsize small.
+% If you want even small examples the full size: @set dispenvsize nosmall.
+% This affects the following displayed environments:
+% @example, @display, @format, @lisp
+%
+\def\smallword{small}
+\def\nosmallword{nosmall}
+\let\SETdispenvsize\relax
+\def\setnormaldispenv{%
+ \ifx\SETdispenvsize\smallword
+ % end paragraph for sake of leading, in case document has no blank
+ % line. This is redundant with what happens in \aboveenvbreak, but
+ % we need to do it before changing the fonts, and it's inconvenient
+ % to change the fonts afterward.
+ \ifnum \lastpenalty=10000 \else \endgraf \fi
+ \smallexamplefonts \rm
+ \fi
+}
+\def\setsmalldispenv{%
+ \ifx\SETdispenvsize\nosmallword
+ \else
+ \ifnum \lastpenalty=10000 \else \endgraf \fi
+ \smallexamplefonts \rm
+ \fi
+}
+
+% We often define two environments, @foo and @smallfoo.
+% Let's do it by one command:
+\def\makedispenv #1#2{
+ \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}
+ \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}
+ \expandafter\let\csname E#1\endcsname \afterenvbreak
+ \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
+}
+
+% Define two synonyms:
+\def\maketwodispenvs #1#2#3{
+ \makedispenv{#1}{#3}
+ \makedispenv{#2}{#3}
+}
+
+% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
+%
+% @smallexample and @smalllisp: use smaller fonts.
+% Originally contributed by Pavel@xerox.
+%
+\maketwodispenvs {lisp}{example}{%
+ \nonfillstart
+ \tt\quoteexpand
+ \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
+ \gobble % eat return
+}
+% @display/@smalldisplay: same as @lisp except keep current font.
+%
+\makedispenv {display}{%
+ \nonfillstart
+ \gobble
+}
+
+% @format/@smallformat: same as @display except don't narrow margins.
+%
+\makedispenv{format}{%
+ \let\nonarrowing = t%
+ \nonfillstart
+ \gobble
+}
+
+% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
+\envdef\flushleft{%
+ \let\nonarrowing = t%
+ \nonfillstart
+ \gobble
+}
+\let\Eflushleft = \afterenvbreak
+
+% @flushright.
+%
+\envdef\flushright{%
+ \let\nonarrowing = t%
+ \nonfillstart
+ \advance\leftskip by 0pt plus 1fill
+ \gobble
+}
+\let\Eflushright = \afterenvbreak
+
+
+% @quotation does normal linebreaking (hence we can't use \nonfillstart)
+% and narrows the margins. We keep \parskip nonzero in general, since
+% we're doing normal filling. So, when using \aboveenvbreak and
+% \afterenvbreak, temporarily make \parskip 0.
+%
+\envdef\quotation{%
+ {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+ \parindent=0pt
+ %
+ % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+ \ifx\nonarrowing\relax
+ \advance\leftskip by \lispnarrowing
+ \advance\rightskip by \lispnarrowing
+ \exdentamount = \lispnarrowing
+ \else
+ \let\nonarrowing = \relax
+ \fi
+ \parsearg\quotationlabel
+}
+
+% We have retained a nonzero parskip for the environment, since we're
+% doing normal filling.
+%
+\def\Equotation{%
+ \par
+ \ifx\quotationauthor\undefined\else
+ % indent a bit.
+ \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
+ \fi
+ {\parskip=0pt \afterenvbreak}%
+}
+
+% If we're given an argument, typeset it in bold with a colon after.
+\def\quotationlabel#1{%
+ \def\temp{#1}%
+ \ifx\temp\empty \else
+ {\bf #1: }%
+ \fi
+}
+
+
+% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
+% If we want to allow any <char> as delimiter,
+% we need the curly braces so that makeinfo sees the @verb command, eg:
+% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org
+%
+% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook.
+%
+% [Knuth] p.344; only we need to do the other characters Texinfo sets
+% active too. Otherwise, they get lost as the first character on a
+% verbatim line.
+\def\dospecials{%
+ \do\ \do\\\do\{\do\}\do\$\do\&%
+ \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
+ \do\<\do\>\do\|\do\@\do+\do\"%
+}
+%
+% [Knuth] p. 380
+\def\uncatcodespecials{%
+ \def\do##1{\catcode`##1=\other}\dospecials}
+%
+% [Knuth] pp. 380,381,391
+% Disable Spanish ligatures ?` and !` of \tt font
+\begingroup
+ \catcode`\`=\active\gdef`{\relax\lq}
+\endgroup
+%
+% Setup for the @verb command.
+%
+% Eight spaces for a tab
+\begingroup
+ \catcode`\^^I=\active
+ \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
+\endgroup
+%
+\def\setupverb{%
+ \tt % easiest (and conventionally used) font for verbatim
+ \def\par{\leavevmode\endgraf}%
+ \catcode`\`=\active
+ \tabeightspaces
+ % Respect line breaks,
+ % print special symbols as themselves, and
+ % make each space count
+ % must do in this order:
+ \obeylines \uncatcodespecials \sepspaces
+}
+
+% Setup for the @verbatim environment
+%
+% Real tab expansion
+\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
+%
+\def\starttabbox{\setbox0=\hbox\bgroup}
+
+% Allow an option to not replace quotes with a regular directed right
+% quote/apostrophe (char 0x27), but instead use the undirected quote
+% from cmtt (char 0x0d). The undirected quote is ugly, so don't make it
+% the default, but it works for pasting with more pdf viewers (at least
+% evince), the lilypond developers report. xpdf does work with the
+% regular 0x27.
+%
+\def\codequoteright{%
+ \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
+ '%
+ \else
+ \char'15
+ \fi
+}
+%
+% and a similar option for the left quote char vs. a grave accent.
+% Modern fonts display ASCII 0x60 as a grave accent, so some people like
+% the code environments to do likewise.
+%
+\def\codequoteleft{%
+ \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
+ `%
+ \else
+ \char'22
+ \fi
+}
+%
+\begingroup
+ \catcode`\^^I=\active
+ \gdef\tabexpand{%
+ \catcode`\^^I=\active
+ \def^^I{\leavevmode\egroup
+ \dimen0=\wd0 % the width so far, or since the previous tab
+ \divide\dimen0 by\tabw
+ \multiply\dimen0 by\tabw % compute previous multiple of \tabw
+ \advance\dimen0 by\tabw % advance to next multiple of \tabw
+ \wd0=\dimen0 \box0 \starttabbox
+ }%
+ }
+ \catcode`\'=\active
+ \gdef\rquoteexpand{\catcode\rquoteChar=\active \def'{\codequoteright}}%
+ %
+ \catcode`\`=\active
+ \gdef\lquoteexpand{\catcode\lquoteChar=\active \def`{\codequoteleft}}%
+ %
+ \gdef\quoteexpand{\rquoteexpand \lquoteexpand}%
+\endgroup
+
+% start the verbatim environment.
+\def\setupverbatim{%
+ \let\nonarrowing = t%
+ \nonfillstart
+ % Easiest (and conventionally used) font for verbatim
+ \tt
+ \def\par{\leavevmode\egroup\box0\endgraf}%
+ \catcode`\`=\active
+ \tabexpand
+ \quoteexpand
+ % Respect line breaks,
+ % print special symbols as themselves, and
+ % make each space count
+ % must do in this order:
+ \obeylines \uncatcodespecials \sepspaces
+ \everypar{\starttabbox}%
+}
+
+% Do the @verb magic: verbatim text is quoted by unique
+% delimiter characters. Before first delimiter expect a
+% right brace, after last delimiter expect closing brace:
+%
+% \def\doverb'{'<char>#1<char>'}'{#1}
+%
+% [Knuth] p. 382; only eat outer {}
+\begingroup
+ \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
+ \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
+\endgroup
+%
+\def\verb{\begingroup\setupverb\doverb}
+%
+%
+% Do the @verbatim magic: define the macro \doverbatim so that
+% the (first) argument ends when '@end verbatim' is reached, ie:
+%
+% \def\doverbatim#1@end verbatim{#1}
+%
+% For Texinfo it's a lot easier than for LaTeX,
+% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
+% we need not redefine '\', '{' and '}'.
+%
+% Inspired by LaTeX's verbatim command set [latex.ltx]
+%
+\begingroup
+ \catcode`\ =\active
+ \obeylines %
+ % ignore everything up to the first ^^M, that's the newline at the end
+ % of the @verbatim input line itself. Otherwise we get an extra blank
+ % line in the output.
+ \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}%
+ % We really want {...\end verbatim} in the body of the macro, but
+ % without the active space; thus we have to use \xdef and \gobble.
+\endgroup
+%
+\envdef\verbatim{%
+ \setupverbatim\doverbatim
+}
+\let\Everbatim = \afterenvbreak
+
+
+% @verbatiminclude FILE - insert text of file in verbatim environment.
+%
+\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
+%
+\def\doverbatiminclude#1{%
+ {%
+ \makevalueexpandable
+ \setupverbatim
+ \input #1
+ \afterenvbreak
+ }%
+}
+
+% @copying ... @end copying.
+% Save the text away for @insertcopying later.
+%
+% We save the uninterpreted tokens, rather than creating a box.
+% Saving the text in a box would be much easier, but then all the
+% typesetting commands (@smallbook, font changes, etc.) have to be done
+% beforehand -- and a) we want @copying to be done first in the source
+% file; b) letting users define the frontmatter in as flexible order as
+% possible is very desirable.
+%
+\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
+\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}}
+%
+\def\insertcopying{%
+ \begingroup
+ \parindent = 0pt % paragraph indentation looks wrong on title page
+ \scanexp\copyingtext
+ \endgroup
+}
+
+
+\message{defuns,}
+% @defun etc.
+
+\newskip\defbodyindent \defbodyindent=.4in
+\newskip\defargsindent \defargsindent=50pt
+\newskip\deflastargmargin \deflastargmargin=18pt
+
+% Start the processing of @deffn:
+\def\startdefun{%
+ \ifnum\lastpenalty<10000
+ \medbreak
+ \else
+ % If there are two @def commands in a row, we'll have a \nobreak,
+ % which is there to keep the function description together with its
+ % header. But if there's nothing but headers, we need to allow a
+ % break somewhere. Check specifically for penalty 10002, inserted
+ % by \defargscommonending, instead of 10000, since the sectioning
+ % commands also insert a nobreak penalty, and we don't want to allow
+ % a break between a section heading and a defun.
+ %
+ \ifnum\lastpenalty=10002 \penalty2000 \fi
+ %
+ % Similarly, after a section heading, do not allow a break.
+ % But do insert the glue.
+ \medskip % preceded by discardable penalty, so not a breakpoint
+ \fi
+ %
+ \parindent=0in
+ \advance\leftskip by \defbodyindent
+ \exdentamount=\defbodyindent
+}
+
+\def\dodefunx#1{%
+ % First, check whether we are in the right environment:
+ \checkenv#1%
+ %
+ % As above, allow line break if we have multiple x headers in a row.
+ % It's not a great place, though.
+ \ifnum\lastpenalty=10002 \penalty3000 \fi
+ %
+ % And now, it's time to reuse the body of the original defun:
+ \expandafter\gobbledefun#1%
+}
+\def\gobbledefun#1\startdefun{}
+
+% \printdefunline \deffnheader{text}
+%
+\def\printdefunline#1#2{%
+ \begingroup
+ % call \deffnheader:
+ #1#2 \endheader
+ % common ending:
+ \interlinepenalty = 10000
+ \advance\rightskip by 0pt plus 1fil
+ \endgraf
+ \nobreak\vskip -\parskip
+ \penalty 10002 % signal to \startdefun and \dodefunx
+ % Some of the @defun-type tags do not enable magic parentheses,
+ % rendering the following check redundant. But we don't optimize.
+ \checkparencounts
+ \endgroup
+}
+
+\def\Edefun{\endgraf\medbreak}
+
+% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
+% the only thing remainnig is to define \deffnheader.
+%
+\def\makedefun#1{%
+ \expandafter\let\csname E#1\endcsname = \Edefun
+ \edef\temp{\noexpand\domakedefun
+ \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
+ \temp
+}
+
+% \domakedefun \deffn \deffnx \deffnheader
+%
+% Define \deffn and \deffnx, without parameters.
+% \deffnheader has to be defined explicitly.
+%
+\def\domakedefun#1#2#3{%
+ \envdef#1{%
+ \startdefun
+ \parseargusing\activeparens{\printdefunline#3}%
+ }%
+ \def#2{\dodefunx#1}%
+ \def#3%
+}
+
+%%% Untyped functions:
+
+% @deffn category name args
+\makedefun{deffn}{\deffngeneral{}}
+
+% @deffn category class name args
+\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
+
+% \defopon {category on}class name args
+\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deffngeneral {subind}category name args
+%
+\def\deffngeneral#1#2 #3 #4\endheader{%
+ % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
+ \dosubind{fn}{\code{#3}}{#1}%
+ \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
+}
+
+%%% Typed functions:
+
+% @deftypefn category type name args
+\makedefun{deftypefn}{\deftypefngeneral{}}
+
+% @deftypeop category class type name args
+\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
+
+% \deftypeopon {category on}class type name args
+\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypefngeneral {subind}category type name args
+%
+\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
+ \dosubind{fn}{\code{#4}}{#1}%
+ \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+%%% Typed variables:
+
+% @deftypevr category type var args
+\makedefun{deftypevr}{\deftypecvgeneral{}}
+
+% @deftypecv category class type var args
+\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
+
+% \deftypecvof {category of}class type var args
+\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypecvgeneral {subind}category type var args
+%
+\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
+ \dosubind{vr}{\code{#4}}{#1}%
+ \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+%%% Untyped variables:
+
+% @defvr category var args
+\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
+
+% @defcv category class var args
+\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
+
+% \defcvof {category of}class var args
+\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
+
+%%% Type:
+% @deftp category name args
+\makedefun{deftp}#1 #2 #3\endheader{%
+ \doind{tp}{\code{#2}}%
+ \defname{#1}{}{#2}\defunargs{#3\unskip}%
+}
+
+% Remaining @defun-like shortcuts:
+\makedefun{defun}{\deffnheader{\putwordDeffunc} }
+\makedefun{defmac}{\deffnheader{\putwordDefmac} }
+\makedefun{defspec}{\deffnheader{\putwordDefspec} }
+\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} }
+\makedefun{defvar}{\defvrheader{\putwordDefvar} }
+\makedefun{defopt}{\defvrheader{\putwordDefopt} }
+\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
+\makedefun{defmethod}{\defopon\putwordMethodon}
+\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
+\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
+\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
+
+% \defname, which formats the name of the @def (not the args).
+% #1 is the category, such as "Function".
+% #2 is the return type, if any.
+% #3 is the function name.
+%
+% We are followed by (but not passed) the arguments, if any.
+%
+\def\defname#1#2#3{%
+ % Get the values of \leftskip and \rightskip as they were outside the @def...
+ \advance\leftskip by -\defbodyindent
+ %
+ % How we'll format the type name. Putting it in brackets helps
+ % distinguish it from the body text that may end up on the next line
+ % just below it.
+ \def\temp{#1}%
+ \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
+ %
+ % Figure out line sizes for the paragraph shape.
+ % The first line needs space for \box0; but if \rightskip is nonzero,
+ % we need only space for the part of \box0 which exceeds it:
+ \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip
+ % The continuations:
+ \dimen2=\hsize \advance\dimen2 by -\defargsindent
+ % (plain.tex says that \dimen1 should be used only as global.)
+ \parshape 2 0in \dimen0 \defargsindent \dimen2
+ %
+ % Put the type name to the right margin.
+ \noindent
+ \hbox to 0pt{%
+ \hfil\box0 \kern-\hsize
+ % \hsize has to be shortened this way:
+ \kern\leftskip
+ % Intentionally do not respect \rightskip, since we need the space.
+ }%
+ %
+ % Allow all lines to be underfull without complaint:
+ \tolerance=10000 \hbadness=10000
+ \exdentamount=\defbodyindent
+ {%
+ % defun fonts. We use typewriter by default (used to be bold) because:
+ % . we're printing identifiers, they should be in tt in principle.
+ % . in languages with many accents, such as Czech or French, it's
+ % common to leave accents off identifiers. The result looks ok in
+ % tt, but exceedingly strange in rm.
+ % . we don't want -- and --- to be treated as ligatures.
+ % . this still does not fix the ?` and !` ligatures, but so far no
+ % one has made identifiers using them :).
+ \df \tt
+ \def\temp{#2}% return value type
+ \ifx\temp\empty\else \tclose{\temp} \fi
+ #3% output function name
+ }%
+ {\rm\enskip}% hskip 0.5 em of \tenrm
+ %
+ \boldbrax
+ % arguments will be output next, if any.
+}
+
+% Print arguments in slanted roman (not ttsl), inconsistently with using
+% tt for the name. This is because literal text is sometimes needed in
+% the argument list (groff manual), and ttsl and tt are not very
+% distinguishable. Prevent hyphenation at `-' chars.
+%
+\def\defunargs#1{%
+ % use sl by default (not ttsl),
+ % tt for the names.
+ \df \sl \hyphenchar\font=0
+ %
+ % On the other hand, if an argument has two dashes (for instance), we
+ % want a way to get ttsl. Let's try @var for that.
+ \let\var=\ttslanted
+ #1%
+ \sl\hyphenchar\font=45
+}
+
+% We want ()&[] to print specially on the defun line.
+%
+\def\activeparens{%
+ \catcode`\(=\active \catcode`\)=\active
+ \catcode`\[=\active \catcode`\]=\active
+ \catcode`\&=\active
+}
+
+% Make control sequences which act like normal parenthesis chars.
+\let\lparen = ( \let\rparen = )
+
+% Be sure that we always have a definition for `(', etc. For example,
+% if the fn name has parens in it, \boldbrax will not be in effect yet,
+% so TeX would otherwise complain about undefined control sequence.
+{
+ \activeparens
+ \global\let(=\lparen \global\let)=\rparen
+ \global\let[=\lbrack \global\let]=\rbrack
+ \global\let& = \&
+
+ \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
+ \gdef\magicamp{\let&=\amprm}
+}
+
+\newcount\parencount
+
+% If we encounter &foo, then turn on ()-hacking afterwards
+\newif\ifampseen
+\def\amprm#1 {\ampseentrue{\bf\&#1 }}
+
+\def\parenfont{%
+ \ifampseen
+ % At the first level, print parens in roman,
+ % otherwise use the default font.
+ \ifnum \parencount=1 \rm \fi
+ \else
+ % The \sf parens (in \boldbrax) actually are a little bolder than
+ % the contained text. This is especially needed for [ and ] .
+ \sf
+ \fi
+}
+\def\infirstlevel#1{%
+ \ifampseen
+ \ifnum\parencount=1
+ #1%
+ \fi
+ \fi
+}
+\def\bfafterword#1 {#1 \bf}
+
+\def\opnr{%
+ \global\advance\parencount by 1
+ {\parenfont(}%
+ \infirstlevel \bfafterword
+}
+\def\clnr{%
+ {\parenfont)}%
+ \infirstlevel \sl
+ \global\advance\parencount by -1
+}
+
+\newcount\brackcount
+\def\lbrb{%
+ \global\advance\brackcount by 1
+ {\bf[}%
+}
+\def\rbrb{%
+ {\bf]}%
+ \global\advance\brackcount by -1
+}
+
+\def\checkparencounts{%
+ \ifnum\parencount=0 \else \badparencount \fi
+ \ifnum\brackcount=0 \else \badbrackcount \fi
+}
+\def\badparencount{%
+ \errmessage{Unbalanced parentheses in @def}%
+ \global\parencount=0
+}
+\def\badbrackcount{%
+ \errmessage{Unbalanced square braces in @def}%
+ \global\brackcount=0
+}
+
+
+\message{macros,}
+% @macro.
+
+% To do this right we need a feature of e-TeX, \scantokens,
+% which we arrange to emulate with a temporary file in ordinary TeX.
+\ifx\eTeXversion\undefined
+ \newwrite\macscribble
+ \def\scantokens#1{%
+ \toks0={#1}%
+ \immediate\openout\macscribble=\jobname.tmp
+ \immediate\write\macscribble{\the\toks0}%
+ \immediate\closeout\macscribble
+ \input \jobname.tmp
+ }
+\fi
+
+\def\scanmacro#1{%
+ \begingroup
+ \newlinechar`\^^M
+ \let\xeatspaces\eatspaces
+ % Undo catcode changes of \startcontents and \doprintindex
+ % When called from @insertcopying or (short)caption, we need active
+ % backslash to get it printed correctly. Previously, we had
+ % \catcode`\\=\other instead. We'll see whether a problem appears
+ % with macro expansion. --kasal, 19aug04
+ \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
+ % ... and \example
+ \spaceisspace
+ %
+ % Append \endinput to make sure that TeX does not see the ending newline.
+ % I've verified that it is necessary both for e-TeX and for ordinary TeX
+ % --kasal, 29nov03
+ \scantokens{#1\endinput}%
+ \endgroup
+}
+
+\def\scanexp#1{%
+ \edef\temp{\noexpand\scanmacro{#1}}%
+ \temp
+}
+
+\newcount\paramno % Count of parameters
+\newtoks\macname % Macro name
+\newif\ifrecursive % Is it recursive?
+
+% List of all defined macros in the form
+% \definedummyword\macro1\definedummyword\macro2...
+% Currently is also contains all @aliases; the list can be split
+% if there is a need.
+\def\macrolist{}
+
+% Add the macro to \macrolist
+\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
+\def\addtomacrolistxxx#1{%
+ \toks0 = \expandafter{\macrolist\definedummyword#1}%
+ \xdef\macrolist{\the\toks0}%
+}
+
+% Utility routines.
+% This does \let #1 = #2, with \csnames; that is,
+% \let \csname#1\endcsname = \csname#2\endcsname
+% (except of course we have to play expansion games).
+%
+\def\cslet#1#2{%
+ \expandafter\let
+ \csname#1\expandafter\endcsname
+ \csname#2\endcsname
+}
+
+% Trim leading and trailing spaces off a string.
+% Concepts from aro-bend problem 15 (see CTAN).
+{\catcode`\@=11
+\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
+\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
+\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
+\def\unbrace#1{#1}
+\unbrace{\gdef\trim@@@ #1 } #2@{#1}
+}
+
+% Trim a single trailing ^^M off a string.
+{\catcode`\^^M=\other \catcode`\Q=3%
+\gdef\eatcr #1{\eatcra #1Q^^MQ}%
+\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
+\gdef\eatcrb#1Q#2Q{#1}%
+}
+
+% Macro bodies are absorbed as an argument in a context where
+% all characters are catcode 10, 11 or 12, except \ which is active
+% (as in normal texinfo). It is necessary to change the definition of \.
+
+% It's necessary to have hard CRs when the macro is executed. This is
+% done by making ^^M (\endlinechar) catcode 12 when reading the macro
+% body, and then making it the \newlinechar in \scanmacro.
+
+\def\scanctxt{%
+ \catcode`\"=\other
+ \catcode`\+=\other
+ \catcode`\<=\other
+ \catcode`\>=\other
+ \catcode`\@=\other
+ \catcode`\^=\other
+ \catcode`\_=\other
+ \catcode`\|=\other
+ \catcode`\~=\other
+}
+
+\def\scanargctxt{%
+ \scanctxt
+ \catcode`\\=\other
+ \catcode`\^^M=\other
+}
+
+\def\macrobodyctxt{%
+ \scanctxt
+ \catcode`\{=\other
+ \catcode`\}=\other
+ \catcode`\^^M=\other
+ \usembodybackslash
+}
+
+\def\macroargctxt{%
+ \scanctxt
+ \catcode`\\=\other
+}
+
+% \mbodybackslash is the definition of \ in @macro bodies.
+% It maps \foo\ => \csname macarg.foo\endcsname => #N
+% where N is the macro parameter number.
+% We define \csname macarg.\endcsname to be \realbackslash, so
+% \\ in macro replacement text gets you a backslash.
+
+{\catcode`@=0 @catcode`@\=@active
+ @gdef@usembodybackslash{@let\=@mbodybackslash}
+ @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
+}
+\expandafter\def\csname macarg.\endcsname{\realbackslash}
+
+\def\macro{\recursivefalse\parsearg\macroxxx}
+\def\rmacro{\recursivetrue\parsearg\macroxxx}
+
+\def\macroxxx#1{%
+ \getargs{#1}% now \macname is the macname and \argl the arglist
+ \ifx\argl\empty % no arguments
+ \paramno=0%
+ \else
+ \expandafter\parsemargdef \argl;%
+ \fi
+ \if1\csname ismacro.\the\macname\endcsname
+ \message{Warning: redefining \the\macname}%
+ \else
+ \expandafter\ifx\csname \the\macname\endcsname \relax
+ \else \errmessage{Macro name \the\macname\space already defined}\fi
+ \global\cslet{macsave.\the\macname}{\the\macname}%
+ \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
+ \addtomacrolist{\the\macname}%
+ \fi
+ \begingroup \macrobodyctxt
+ \ifrecursive \expandafter\parsermacbody
+ \else \expandafter\parsemacbody
+ \fi}
+
+\parseargdef\unmacro{%
+ \if1\csname ismacro.#1\endcsname
+ \global\cslet{#1}{macsave.#1}%
+ \global\expandafter\let \csname ismacro.#1\endcsname=0%
+ % Remove the macro name from \macrolist:
+ \begingroup
+ \expandafter\let\csname#1\endcsname \relax
+ \let\definedummyword\unmacrodo
+ \xdef\macrolist{\macrolist}%
+ \endgroup
+ \else
+ \errmessage{Macro #1 not defined}%
+ \fi
+}
+
+% Called by \do from \dounmacro on each macro. The idea is to omit any
+% macro definitions that have been changed to \relax.
+%
+\def\unmacrodo#1{%
+ \ifx #1\relax
+ % remove this
+ \else
+ \noexpand\definedummyword \noexpand#1%
+ \fi
+}
+
+% This makes use of the obscure feature that if the last token of a
+% <parameter list> is #, then the preceding argument is delimited by
+% an opening brace, and that opening brace is not consumed.
+\def\getargs#1{\getargsxxx#1{}}
+\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
+\def\getmacname #1 #2\relax{\macname={#1}}
+\def\getmacargs#1{\def\argl{#1}}
+
+% Parse the optional {params} list. Set up \paramno and \paramlist
+% so \defmacro knows what to do. Define \macarg.blah for each blah
+% in the params list, to be ##N where N is the position in that list.
+% That gets used by \mbodybackslash (above).
+
+% We need to get `macro parameter char #' into several definitions.
+% The technique used is stolen from LaTeX: let \hash be something
+% unexpandable, insert that wherever you need a #, and then redefine
+% it to # just before using the token list produced.
+%
+% The same technique is used to protect \eatspaces till just before
+% the macro is used.
+
+\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
+ \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
+\def\parsemargdefxxx#1,{%
+ \if#1;\let\next=\relax
+ \else \let\next=\parsemargdefxxx
+ \advance\paramno by 1%
+ \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
+ {\xeatspaces{\hash\the\paramno}}%
+ \edef\paramlist{\paramlist\hash\the\paramno,}%
+ \fi\next}
+
+% These two commands read recursive and nonrecursive macro bodies.
+% (They're different since rec and nonrec macros end differently.)
+
+\long\def\parsemacbody#1@end macro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+\long\def\parsermacbody#1@end rmacro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+
+% This defines the macro itself. There are six cases: recursive and
+% nonrecursive macros of zero, one, and many arguments.
+% Much magic with \expandafter here.
+% \xdef is used so that macro definitions will survive the file
+% they're defined in; @include reads the file inside a group.
+\def\defmacro{%
+ \let\hash=##% convert placeholders to macro parameter chars
+ \ifrecursive
+ \ifcase\paramno
+ % 0
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\scanmacro{\temp}}%
+ \or % 1
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\braceorline
+ \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+ \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+ \egroup\noexpand\scanmacro{\temp}}%
+ \else % many
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname xxx\endcsname
+ \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+ \fi
+ \else
+ \ifcase\paramno
+ % 0
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\norecurse{\the\macname}%
+ \noexpand\scanmacro{\temp}\egroup}%
+ \or % 1
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\braceorline
+ \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+ \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+ \egroup
+ \noexpand\norecurse{\the\macname}%
+ \noexpand\scanmacro{\temp}\egroup}%
+ \else % many
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \expandafter\noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname xxx\endcsname
+ \paramlist{%
+ \egroup
+ \noexpand\norecurse{\the\macname}%
+ \noexpand\scanmacro{\temp}\egroup}%
+ \fi
+ \fi}
+
+\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
+
+% \braceorline decides whether the next nonwhitespace character is a
+% {. If so it reads up to the closing }, if not, it reads the whole
+% line. Whatever was read is then fed to the next control sequence
+% as an argument (by \parsebrace or \parsearg)
+\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
+\def\braceorlinexxx{%
+ \ifx\nchar\bgroup\else
+ \expandafter\parsearg
+ \fi \macnamexxx}
+
+
+% @alias.
+% We need some trickery to remove the optional spaces around the equal
+% sign. Just make them active and then expand them all to nothing.
+\def\alias{\parseargusing\obeyspaces\aliasxxx}
+\def\aliasxxx #1{\aliasyyy#1\relax}
+\def\aliasyyy #1=#2\relax{%
+ {%
+ \expandafter\let\obeyedspace=\empty
+ \addtomacrolist{#1}%
+ \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
+ }%
+ \next
+}
+
+
+\message{cross references,}
+
+\newwrite\auxfile
+\newif\ifhavexrefs % True if xref values are known.
+\newif\ifwarnedxrefs % True if we warned once that they aren't known.
+
+% @inforef is relatively simple.
+\def\inforef #1{\inforefzzz #1,,,,**}
+\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+ node \samp{\ignorespaces#1{}}}
+
+% @node's only job in TeX is to define \lastnode, which is used in
+% cross-references. The @node line might or might not have commas, and
+% might or might not have spaces before the first comma, like:
+% @node foo , bar , ...
+% We don't want such trailing spaces in the node name.
+%
+\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
+%
+% also remove a trailing comma, in case of something like this:
+% @node Help-Cross, , , Cross-refs
+\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
+\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
+
+\let\nwnode=\node
+\let\lastnode=\empty
+
+% Write a cross-reference definition for the current node. #1 is the
+% type (Ynumbered, Yappendix, Ynothing).
+%
+\def\donoderef#1{%
+ \ifx\lastnode\empty\else
+ \setref{\lastnode}{#1}%
+ \global\let\lastnode=\empty
+ \fi
+}
+
+% @anchor{NAME} -- define xref target at arbitrary point.
+%
+\newcount\savesfregister
+%
+\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
+\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
+\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
+
+% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
+% anchor), which consists of three parts:
+% 1) NAME-title - the current sectioning name taken from \thissection,
+% or the anchor name.
+% 2) NAME-snt - section number and type, passed as the SNT arg, or
+% empty for anchors.
+% 3) NAME-pg - the page number.
+%
+% This is called from \donoderef, \anchor, and \dofloat. In the case of
+% floats, there is an additional part, which is not written here:
+% 4) NAME-lof - the text as it should appear in a @listoffloats.
+%
+\def\setref#1#2{%
+ \pdfmkdest{#1}%
+ \iflinks
+ {%
+ \atdummies % preserve commands, but don't expand them
+ \edef\writexrdef##1##2{%
+ \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
+ ##1}{##2}}% these are parameters of \writexrdef
+ }%
+ \toks0 = \expandafter{\thissection}%
+ \immediate \writexrdef{title}{\the\toks0 }%
+ \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
+ \writexrdef{pg}{\folio}% will be written later, during \shipout
+ }%
+ \fi
+}
+
+% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
+% the node name, #2 the name of the Info cross-reference, #3 the printed
+% node name, #4 the name of the Info file, #5 the name of the printed
+% manual. All but the node name can be omitted.
+%
+\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
+\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
+\def\ref#1{\xrefX[#1,,,,,,,]}
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
+ \unsepspaces
+ \def\printedmanual{\ignorespaces #5}%
+ \def\printedrefname{\ignorespaces #3}%
+ \setbox1=\hbox{\printedmanual\unskip}%
+ \setbox0=\hbox{\printedrefname\unskip}%
+ \ifdim \wd0 = 0pt
+ % No printed node name was explicitly given.
+ \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
+ % Use the node name inside the square brackets.
+ \def\printedrefname{\ignorespaces #1}%
+ \else
+ % Use the actual chapter/section title appear inside
+ % the square brackets. Use the real section title if we have it.
+ \ifdim \wd1 > 0pt
+ % It is in another manual, so we don't have it.
+ \def\printedrefname{\ignorespaces #1}%
+ \else
+ \ifhavexrefs
+ % We know the real title if we have the xref values.
+ \def\printedrefname{\refx{#1-title}{}}%
+ \else
+ % Otherwise just copy the Info node name.
+ \def\printedrefname{\ignorespaces #1}%
+ \fi%
+ \fi
+ \fi
+ \fi
+ %
+ % Make link in pdf output.
+ \ifpdf
+ \leavevmode
+ \getfilename{#4}%
+ {\indexnofonts
+ \turnoffactive
+ % See comments at \activebackslashdouble.
+ {\activebackslashdouble \xdef\pdfxrefdest{#1}%
+ \backslashparens\pdfxrefdest}%
+ %
+ \ifnum\filenamelength>0
+ \startlink attr{/Border [0 0 0]}%
+ goto file{\the\filename.pdf} name{\pdfxrefdest}%
+ \else
+ \startlink attr{/Border [0 0 0]}%
+ goto name{\pdfmkpgn{\pdfxrefdest}}%
+ \fi
+ }%
+ \linkcolor
+ \fi
+ %
+ % Float references are printed completely differently: "Figure 1.2"
+ % instead of "[somenode], p.3". We distinguish them by the
+ % LABEL-title being set to a magic string.
+ {%
+ % Have to otherify everything special to allow the \csname to
+ % include an _ in the xref name, etc.
+ \indexnofonts
+ \turnoffactive
+ \expandafter\global\expandafter\let\expandafter\Xthisreftitle
+ \csname XR#1-title\endcsname
+ }%
+ \iffloat\Xthisreftitle
+ % If the user specified the print name (third arg) to the ref,
+ % print it instead of our usual "Figure 1.2".
+ \ifdim\wd0 = 0pt
+ \refx{#1-snt}{}%
+ \else
+ \printedrefname
+ \fi
+ %
+ % if the user also gave the printed manual name (fifth arg), append
+ % "in MANUALNAME".
+ \ifdim \wd1 > 0pt
+ \space \putwordin{} \cite{\printedmanual}%
+ \fi
+ \else
+ % node/anchor (non-float) references.
+ %
+ % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
+ % insert empty discretionaries after hyphens, which means that it will
+ % not find a line break at a hyphen in a node names. Since some manuals
+ % are best written with fairly long node names, containing hyphens, this
+ % is a loss. Therefore, we give the text of the node name again, so it
+ % is as if TeX is seeing it for the first time.
+ \ifdim \wd1 > 0pt
+ \putwordsection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
+ \else
+ % _ (for example) has to be the character _ for the purposes of the
+ % control sequence corresponding to the node, but it has to expand
+ % into the usual \leavevmode...\vrule stuff for purposes of
+ % printing. So we \turnoffactive for the \refx-snt, back on for the
+ % printing, back off for the \refx-pg.
+ {\turnoffactive
+ % Only output a following space if the -snt ref is nonempty; for
+ % @unnumbered and @anchor, it won't be.
+ \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
+ \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
+ }%
+ % output the `[mynode]' via a macro so it can be overridden.
+ \xrefprintnodename\printedrefname
+ %
+ % But we always want a comma and a space:
+ ,\space
+ %
+ % output the `page 3'.
+ \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
+ \fi
+ \fi
+ \endlink
+\endgroup}
+
+% This macro is called from \xrefX for the `[nodename]' part of xref
+% output. It's a separate macro only so it can be changed more easily,
+% since square brackets don't work well in some documents. Particularly
+% one that Bob is working on :).
+%
+\def\xrefprintnodename#1{[#1]}
+
+% Things referred to by \setref.
+%
+\def\Ynothing{}
+\def\Yomitfromtoc{}
+\def\Ynumbered{%
+ \ifnum\secno=0
+ \putwordChapter@tie \the\chapno
+ \else \ifnum\subsecno=0
+ \putwordSection@tie \the\chapno.\the\secno
+ \else \ifnum\subsubsecno=0
+ \putwordSection@tie \the\chapno.\the\secno.\the\subsecno
+ \else
+ \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
+ \fi\fi\fi
+}
+\def\Yappendix{%
+ \ifnum\secno=0
+ \putwordAppendix@tie @char\the\appendixno{}%
+ \else \ifnum\subsecno=0
+ \putwordSection@tie @char\the\appendixno.\the\secno
+ \else \ifnum\subsubsecno=0
+ \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno
+ \else
+ \putwordSection@tie
+ @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
+ \fi\fi\fi
+}
+
+% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
+% If its value is nonempty, SUFFIX is output afterward.
+%
+\def\refx#1#2{%
+ {%
+ \indexnofonts
+ \otherbackslash
+ \expandafter\global\expandafter\let\expandafter\thisrefX
+ \csname XR#1\endcsname
+ }%
+ \ifx\thisrefX\relax
+ % If not defined, say something at least.
+ \angleleft un\-de\-fined\angleright
+ \iflinks
+ \ifhavexrefs
+ \message{\linenumber Undefined cross reference `#1'.}%
+ \else
+ \ifwarnedxrefs\else
+ \global\warnedxrefstrue
+ \message{Cross reference values unknown; you must run TeX again.}%
+ \fi
+ \fi
+ \fi
+ \else
+ % It's defined, so just use it.
+ \thisrefX
+ \fi
+ #2% Output the suffix in any case.
+}
+
+% This is the macro invoked by entries in the aux file. Usually it's
+% just a \def (we prepend XR to the control sequence name to avoid
+% collisions). But if this is a float type, we have more work to do.
+%
+\def\xrdef#1#2{%
+ {% The node name might contain 8-bit characters, which in our current
+ % implementation are changed to commands like @'e. Don't let these
+ % mess up the control sequence name.
+ \indexnofonts
+ \turnoffactive
+ \xdef\safexrefname{#1}%
+ }%
+ %
+ \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
+ %
+ % Was that xref control sequence that we just defined for a float?
+ \expandafter\iffloat\csname XR\safexrefname\endcsname
+ % it was a float, and we have the (safe) float type in \iffloattype.
+ \expandafter\let\expandafter\floatlist
+ \csname floatlist\iffloattype\endcsname
+ %
+ % Is this the first time we've seen this float type?
+ \expandafter\ifx\floatlist\relax
+ \toks0 = {\do}% yes, so just \do
+ \else
+ % had it before, so preserve previous elements in list.
+ \toks0 = \expandafter{\floatlist\do}%
+ \fi
+ %
+ % Remember this xref in the control sequence \floatlistFLOATTYPE,
+ % for later use in \listoffloats.
+ \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
+ {\safexrefname}}%
+ \fi
+}
+
+% Read the last existing aux file, if any. No error if none exists.
+%
+\def\tryauxfile{%
+ \openin 1 \jobname.aux
+ \ifeof 1 \else
+ \readdatafile{aux}%
+ \global\havexrefstrue
+ \fi
+ \closein 1
+}
+
+\def\setupdatafile{%
+ \catcode`\^^@=\other
+ \catcode`\^^A=\other
+ \catcode`\^^B=\other
+ \catcode`\^^C=\other
+ \catcode`\^^D=\other
+ \catcode`\^^E=\other
+ \catcode`\^^F=\other
+ \catcode`\^^G=\other
+ \catcode`\^^H=\other
+ \catcode`\^^K=\other
+ \catcode`\^^L=\other
+ \catcode`\^^N=\other
+ \catcode`\^^P=\other
+ \catcode`\^^Q=\other
+ \catcode`\^^R=\other
+ \catcode`\^^S=\other
+ \catcode`\^^T=\other
+ \catcode`\^^U=\other
+ \catcode`\^^V=\other
+ \catcode`\^^W=\other
+ \catcode`\^^X=\other
+ \catcode`\^^Z=\other
+ \catcode`\^^[=\other
+ \catcode`\^^\=\other
+ \catcode`\^^]=\other
+ \catcode`\^^^=\other
+ \catcode`\^^_=\other
+ % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
+ % in xref tags, i.e., node names. But since ^^e4 notation isn't
+ % supported in the main text, it doesn't seem desirable. Furthermore,
+ % that is not enough: for node names that actually contain a ^
+ % character, we would end up writing a line like this: 'xrdef {'hat
+ % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
+ % argument, and \hat is not an expandable control sequence. It could
+ % all be worked out, but why? Either we support ^^ or we don't.
+ %
+ % The other change necessary for this was to define \auxhat:
+ % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
+ % and then to call \auxhat in \setq.
+ %
+ \catcode`\^=\other
+ %
+ % Special characters. Should be turned off anyway, but...
+ \catcode`\~=\other
+ \catcode`\[=\other
+ \catcode`\]=\other
+ \catcode`\"=\other
+ \catcode`\_=\other
+ \catcode`\|=\other
+ \catcode`\<=\other
+ \catcode`\>=\other
+ \catcode`\$=\other
+ \catcode`\#=\other
+ \catcode`\&=\other
+ \catcode`\%=\other
+ \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
+ %
+ % This is to support \ in node names and titles, since the \
+ % characters end up in a \csname. It's easier than
+ % leaving it active and making its active definition an actual \
+ % character. What I don't understand is why it works in the *value*
+ % of the xrdef. Seems like it should be a catcode12 \, and that
+ % should not typeset properly. But it works, so I'm moving on for
+ % now. --karl, 15jan04.
+ \catcode`\\=\other
+ %
+ % Make the characters 128-255 be printing characters.
+ {%
+ \count1=128
+ \def\loop{%
+ \catcode\count1=\other
+ \advance\count1 by 1
+ \ifnum \count1<256 \loop \fi
+ }%
+ }%
+ %
+ % @ is our escape character in .aux files, and we need braces.
+ \catcode`\{=1
+ \catcode`\}=2
+ \catcode`\@=0
+}
+
+\def\readdatafile#1{%
+\begingroup
+ \setupdatafile
+ \input\jobname.#1
+\endgroup}
+
+
+\message{insertions,}
+% including footnotes.
+
+\newcount \footnoteno
+
+% The trailing space in the following definition for supereject is
+% vital for proper filling; pages come out unaligned when you do a
+% pagealignmacro call if that space before the closing brace is
+% removed. (Generally, numeric constants should always be followed by a
+% space to prevent strange expansion errors.)
+\def\supereject{\par\penalty -20000\footnoteno =0 }
+
+% @footnotestyle is meaningful for info output only.
+\let\footnotestyle=\comment
+
+{\catcode `\@=11
+%
+% Auto-number footnotes. Otherwise like plain.
+\gdef\footnote{%
+ \let\indent=\ptexindent
+ \let\noindent=\ptexnoindent
+ \global\advance\footnoteno by \@ne
+ \edef\thisfootno{$^{\the\footnoteno}$}%
+ %
+ % In case the footnote comes at the end of a sentence, preserve the
+ % extra spacing after we do the footnote number.
+ \let\@sf\empty
+ \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
+ %
+ % Remove inadvertent blank space before typesetting the footnote number.
+ \unskip
+ \thisfootno\@sf
+ \dofootnote
+}%
+
+% Don't bother with the trickery in plain.tex to not require the
+% footnote text as a parameter. Our footnotes don't need to be so general.
+%
+% Oh yes, they do; otherwise, @ifset (and anything else that uses
+% \parseargline) fails inside footnotes because the tokens are fixed when
+% the footnote is read. --karl, 16nov96.
+%
+\gdef\dofootnote{%
+ \insert\footins\bgroup
+ % We want to typeset this text as a normal paragraph, even if the
+ % footnote reference occurs in (for example) a display environment.
+ % So reset some parameters.
+ \hsize=\pagewidth
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\ht\strutbox % top baseline for broken footnotes
+ \splitmaxdepth\dp\strutbox
+ \floatingpenalty\@MM
+ \leftskip\z@skip
+ \rightskip\z@skip
+ \spaceskip\z@skip
+ \xspaceskip\z@skip
+ \parindent\defaultparindent
+ %
+ \smallfonts \rm
+ %
+ % Because we use hanging indentation in footnotes, a @noindent appears
+ % to exdent this text, so make it be a no-op. makeinfo does not use
+ % hanging indentation so @noindent can still be needed within footnote
+ % text after an @example or the like (not that this is good style).
+ \let\noindent = \relax
+ %
+ % Hang the footnote text off the number. Use \everypar in case the
+ % footnote extends for more than one paragraph.
+ \everypar = {\hang}%
+ \textindent{\thisfootno}%
+ %
+ % Don't crash into the line above the footnote text. Since this
+ % expands into a box, it must come within the paragraph, lest it
+ % provide a place where TeX can split the footnote.
+ \footstrut
+ \futurelet\next\fo@t
+}
+}%end \catcode `\@=11
+
+% In case a @footnote appears in a vbox, save the footnote text and create
+% the real \insert just after the vbox finished. Otherwise, the insertion
+% would be lost.
+% Similarily, if a @footnote appears inside an alignment, save the footnote
+% text to a box and make the \insert when a row of the table is finished.
+% And the same can be done for other insert classes. --kasal, 16nov03.
+
+% Replace the \insert primitive by a cheating macro.
+% Deeper inside, just make sure that the saved insertions are not spilled
+% out prematurely.
+%
+\def\startsavinginserts{%
+ \ifx \insert\ptexinsert
+ \let\insert\saveinsert
+ \else
+ \let\checkinserts\relax
+ \fi
+}
+
+% This \insert replacement works for both \insert\footins{foo} and
+% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
+%
+\def\saveinsert#1{%
+ \edef\next{\noexpand\savetobox \makeSAVEname#1}%
+ \afterassignment\next
+ % swallow the left brace
+ \let\temp =
+}
+\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
+\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
+
+\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
+
+\def\placesaveins#1{%
+ \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
+ {\box#1}%
+}
+
+% eat @SAVE -- beware, all of them have catcode \other:
+{
+ \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-)
+ \gdef\gobblesave @SAVE{}
+}
+
+% initialization:
+\def\newsaveins #1{%
+ \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
+ \next
+}
+\def\newsaveinsX #1{%
+ \csname newbox\endcsname #1%
+ \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
+ \checksaveins #1}%
+}
+
+% initialize:
+\let\checkinserts\empty
+\newsaveins\footins
+\newsaveins\margin
+
+
+% @image. We use the macros from epsf.tex to support this.
+% If epsf.tex is not installed and @image is used, we complain.
+%
+% Check for and read epsf.tex up front. If we read it only at @image
+% time, we might be inside a group, and then its definitions would get
+% undone and the next image would fail.
+\openin 1 = epsf.tex
+\ifeof 1 \else
+ % Do not bother showing banner with epsf.tex v2.7k (available in
+ % doc/epsf.tex and on ctan).
+ \def\epsfannounce{\toks0 = }%
+ \input epsf.tex
+\fi
+\closein 1
+%
+% We will only complain once about lack of epsf.tex.
+\newif\ifwarnednoepsf
+\newhelp\noepsfhelp{epsf.tex must be installed for images to
+ work. It is also included in the Texinfo distribution, or you can get
+ it from ftp://tug.org/tex/epsf.tex.}
+%
+\def\image#1{%
+ \ifx\epsfbox\undefined
+ \ifwarnednoepsf \else
+ \errhelp = \noepsfhelp
+ \errmessage{epsf.tex not found, images will be ignored}%
+ \global\warnednoepsftrue
+ \fi
+ \else
+ \imagexxx #1,,,,,\finish
+ \fi
+}
+%
+% Arguments to @image:
+% #1 is (mandatory) image filename; we tack on .eps extension.
+% #2 is (optional) width, #3 is (optional) height.
+% #4 is (ignored optional) html alt text.
+% #5 is (ignored optional) extension.
+% #6 is just the usual extra ignored arg for parsing this stuff.
+\newif\ifimagevmode
+\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
+ \catcode`\^^M = 5 % in case we're inside an example
+ \normalturnoffactive % allow _ et al. in names
+ % If the image is by itself, center it.
+ \ifvmode
+ \imagevmodetrue
+ \nobreak\bigskip
+ % Usually we'll have text after the image which will insert
+ % \parskip glue, so insert it here too to equalize the space
+ % above and below.
+ \nobreak\vskip\parskip
+ \nobreak
+ \line\bgroup
+ \fi
+ %
+ % Output the image.
+ \ifpdf
+ \dopdfimage{#1}{#2}{#3}%
+ \else
+ % \epsfbox itself resets \epsf?size at each figure.
+ \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
+ \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
+ \epsfbox{#1.eps}%
+ \fi
+ %
+ \ifimagevmode \egroup \bigbreak \fi % space after the image
+\endgroup}
+
+
+% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
+% etc. We don't actually implement floating yet, we always include the
+% float "here". But it seemed the best name for the future.
+%
+\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
+
+% There may be a space before second and/or third parameter; delete it.
+\def\eatcommaspace#1, {#1,}
+
+% #1 is the optional FLOATTYPE, the text label for this float, typically
+% "Figure", "Table", "Example", etc. Can't contain commas. If omitted,
+% this float will not be numbered and cannot be referred to.
+%
+% #2 is the optional xref label. Also must be present for the float to
+% be referable.
+%
+% #3 is the optional positioning argument; for now, it is ignored. It
+% will somehow specify the positions allowed to float to (here, top, bottom).
+%
+% We keep a separate counter for each FLOATTYPE, which we reset at each
+% chapter-level command.
+\let\resetallfloatnos=\empty
+%
+\def\dofloat#1,#2,#3,#4\finish{%
+ \let\thiscaption=\empty
+ \let\thisshortcaption=\empty
+ %
+ % don't lose footnotes inside @float.
+ %
+ % BEWARE: when the floats start float, we have to issue warning whenever an
+ % insert appears inside a float which could possibly float. --kasal, 26may04
+ %
+ \startsavinginserts
+ %
+ % We can't be used inside a paragraph.
+ \par
+ %
+ \vtop\bgroup
+ \def\floattype{#1}%
+ \def\floatlabel{#2}%
+ \def\floatloc{#3}% we do nothing with this yet.
+ %
+ \ifx\floattype\empty
+ \let\safefloattype=\empty
+ \else
+ {%
+ % the floattype might have accents or other special characters,
+ % but we need to use it in a control sequence name.
+ \indexnofonts
+ \turnoffactive
+ \xdef\safefloattype{\floattype}%
+ }%
+ \fi
+ %
+ % If label is given but no type, we handle that as the empty type.
+ \ifx\floatlabel\empty \else
+ % We want each FLOATTYPE to be numbered separately (Figure 1,
+ % Table 1, Figure 2, ...). (And if no label, no number.)
+ %
+ \expandafter\getfloatno\csname\safefloattype floatno\endcsname
+ \global\advance\floatno by 1
+ %
+ {%
+ % This magic value for \thissection is output by \setref as the
+ % XREFLABEL-title value. \xrefX uses it to distinguish float
+ % labels (which have a completely different output format) from
+ % node and anchor labels. And \xrdef uses it to construct the
+ % lists of floats.
+ %
+ \edef\thissection{\floatmagic=\safefloattype}%
+ \setref{\floatlabel}{Yfloat}%
+ }%
+ \fi
+ %
+ % start with \parskip glue, I guess.
+ \vskip\parskip
+ %
+ % Don't suppress indentation if a float happens to start a section.
+ \restorefirstparagraphindent
+}
+
+% we have these possibilities:
+% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap
+% @float Foo,lbl & no caption: Foo 1.1
+% @float Foo & @caption{Cap}: Foo: Cap
+% @float Foo & no caption: Foo
+% @float ,lbl & Caption{Cap}: 1.1: Cap
+% @float ,lbl & no caption: 1.1
+% @float & @caption{Cap}: Cap
+% @float & no caption:
+%
+\def\Efloat{%
+ \let\floatident = \empty
+ %
+ % In all cases, if we have a float type, it comes first.
+ \ifx\floattype\empty \else \def\floatident{\floattype}\fi
+ %
+ % If we have an xref label, the number comes next.
+ \ifx\floatlabel\empty \else
+ \ifx\floattype\empty \else % if also had float type, need tie first.
+ \appendtomacro\floatident{\tie}%
+ \fi
+ % the number.
+ \appendtomacro\floatident{\chaplevelprefix\the\floatno}%
+ \fi
+ %
+ % Start the printed caption with what we've constructed in
+ % \floatident, but keep it separate; we need \floatident again.
+ \let\captionline = \floatident
+ %
+ \ifx\thiscaption\empty \else
+ \ifx\floatident\empty \else
+ \appendtomacro\captionline{: }% had ident, so need a colon between
+ \fi
+ %
+ % caption text.
+ \appendtomacro\captionline{\scanexp\thiscaption}%
+ \fi
+ %
+ % If we have anything to print, print it, with space before.
+ % Eventually this needs to become an \insert.
+ \ifx\captionline\empty \else
+ \vskip.5\parskip
+ \captionline
+ %
+ % Space below caption.
+ \vskip\parskip
+ \fi
+ %
+ % If have an xref label, write the list of floats info. Do this
+ % after the caption, to avoid chance of it being a breakpoint.
+ \ifx\floatlabel\empty \else
+ % Write the text that goes in the lof to the aux file as
+ % \floatlabel-lof. Besides \floatident, we include the short
+ % caption if specified, else the full caption if specified, else nothing.
+ {%
+ \atdummies
+ %
+ % since we read the caption text in the macro world, where ^^M
+ % is turned into a normal character, we have to scan it back, so
+ % we don't write the literal three characters "^^M" into the aux file.
+ \scanexp{%
+ \xdef\noexpand\gtemp{%
+ \ifx\thisshortcaption\empty
+ \thiscaption
+ \else
+ \thisshortcaption
+ \fi
+ }%
+ }%
+ \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
+ \ifx\gtemp\empty \else : \gtemp \fi}}%
+ }%
+ \fi
+ \egroup % end of \vtop
+ %
+ % place the captured inserts
+ %
+ % BEWARE: when the floats start floating, we have to issue warning
+ % whenever an insert appears inside a float which could possibly
+ % float. --kasal, 26may04
+ %
+ \checkinserts
+}
+
+% Append the tokens #2 to the definition of macro #1, not expanding either.
+%
+\def\appendtomacro#1#2{%
+ \expandafter\def\expandafter#1\expandafter{#1#2}%
+}
+
+% @caption, @shortcaption
+%
+\def\caption{\docaption\thiscaption}
+\def\shortcaption{\docaption\thisshortcaption}
+\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
+\def\defcaption#1#2{\egroup \def#1{#2}}
+
+% The parameter is the control sequence identifying the counter we are
+% going to use. Create it if it doesn't exist and assign it to \floatno.
+\def\getfloatno#1{%
+ \ifx#1\relax
+ % Haven't seen this figure type before.
+ \csname newcount\endcsname #1%
+ %
+ % Remember to reset this floatno at the next chap.
+ \expandafter\gdef\expandafter\resetallfloatnos
+ \expandafter{\resetallfloatnos #1=0 }%
+ \fi
+ \let\floatno#1%
+}
+
+% \setref calls this to get the XREFLABEL-snt value. We want an @xref
+% to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we
+% first read the @float command.
+%
+\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}%
+
+% Magic string used for the XREFLABEL-title value, so \xrefX can
+% distinguish floats from other xref types.
+\def\floatmagic{!!float!!}
+
+% #1 is the control sequence we are passed; we expand into a conditional
+% which is true if #1 represents a float ref. That is, the magic
+% \thissection value which we \setref above.
+%
+\def\iffloat#1{\expandafter\doiffloat#1==\finish}
+%
+% #1 is (maybe) the \floatmagic string. If so, #2 will be the
+% (safe) float type for this float. We set \iffloattype to #2.
+%
+\def\doiffloat#1=#2=#3\finish{%
+ \def\temp{#1}%
+ \def\iffloattype{#2}%
+ \ifx\temp\floatmagic
+}
+
+% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
+%
+\parseargdef\listoffloats{%
+ \def\floattype{#1}% floattype
+ {%
+ % the floattype might have accents or other special characters,
+ % but we need to use it in a control sequence name.
+ \indexnofonts
+ \turnoffactive
+ \xdef\safefloattype{\floattype}%
+ }%
+ %
+ % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
+ \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
+ \ifhavexrefs
+ % if the user said @listoffloats foo but never @float foo.
+ \message{\linenumber No `\safefloattype' floats to list.}%
+ \fi
+ \else
+ \begingroup
+ \leftskip=\tocindent % indent these entries like a toc
+ \let\do=\listoffloatsdo
+ \csname floatlist\safefloattype\endcsname
+ \endgroup
+ \fi
+}
+
+% This is called on each entry in a list of floats. We're passed the
+% xref label, in the form LABEL-title, which is how we save it in the
+% aux file. We strip off the -title and look up \XRLABEL-lof, which
+% has the text we're supposed to typeset here.
+%
+% Figures without xref labels will not be included in the list (since
+% they won't appear in the aux file).
+%
+\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
+\def\listoffloatsdoentry#1-title\finish{{%
+ % Can't fully expand XR#1-lof because it can contain anything. Just
+ % pass the control sequence. On the other hand, XR#1-pg is just the
+ % page number, and we want to fully expand that so we can get a link
+ % in pdf output.
+ \toksA = \expandafter{\csname XR#1-lof\endcsname}%
+ %
+ % use the same \entry macro we use to generate the TOC and index.
+ \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
+ \writeentry
+}}
+
+
+\message{localization,}
+
+% @documentlanguage is usually given very early, just after
+% @setfilename. If done too late, it may not override everything
+% properly. Single argument is the language abbreviation.
+% It would be nice if we could set up a hyphenation file here.
+%
+\parseargdef\documentlanguage{%
+ \tex % read txi-??.tex file in plain TeX.
+ % Read the file if it exists.
+ \openin 1 txi-#1.tex
+ \ifeof 1
+ \errhelp = \nolanghelp
+ \errmessage{Cannot read language file txi-#1.tex}%
+ \else
+ \input txi-#1.tex
+ \fi
+ \closein 1
+ \endgroup
+}
+\newhelp\nolanghelp{The given language definition file cannot be found or
+is empty. Maybe you need to install it? In the current directory
+should work if nowhere else does.}
+
+% Set the catcode of characters 128 through 255 to the specified number.
+%
+\def\setnonasciicharscatcode#1{%
+ \count255=128
+ \loop\ifnum\count255<256
+ \global\catcode\count255=#1
+ \advance\count255 by 1
+ \repeat
+}
+
+% @documentencoding sets the definition of non-ASCII characters
+% according to the specified encoding.
+%
+\parseargdef\documentencoding{%
+ % Encoding being declared for the document.
+ \def\declaredencoding{\csname #1.enc\endcsname}%
+ %
+ % Supported encodings: names converted to tokens in order to be able
+ % to compare them with \ifx.
+ \def\ascii{\csname US-ASCII.enc\endcsname}%
+ \def\latnine{\csname ISO-8859-15.enc\endcsname}%
+ \def\latone{\csname ISO-8859-1.enc\endcsname}%
+ \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
+ \def\utfeight{\csname UTF-8.enc\endcsname}%
+ %
+ \ifx \declaredencoding \ascii
+ \asciichardefs
+ %
+ \else \ifx \declaredencoding \lattwo
+ \setnonasciicharscatcode\active
+ \lattwochardefs
+ %
+ \else \ifx \declaredencoding \latone
+ \setnonasciicharscatcode\active
+ \latonechardefs
+ %
+ \else \ifx \declaredencoding \latnine
+ \setnonasciicharscatcode\active
+ \latninechardefs
+ %
+ \else \ifx \declaredencoding \utfeight
+ \setnonasciicharscatcode\active
+ \utfeightchardefs
+ %
+ \else
+ \message{Unknown document encoding #1, ignoring.}%
+ %
+ \fi % utfeight
+ \fi % latnine
+ \fi % latone
+ \fi % lattwo
+ \fi % ascii
+}
+
+% A message to be logged when using a character that isn't available
+% the default font encoding (OT1).
+%
+\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
+
+% Take account of \c (plain) vs. \, (Texinfo) difference.
+\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
+
+% First, make active non-ASCII characters in order for them to be
+% correctly categorized when TeX reads the replacement text of
+% macros containing the character definitions.
+\setnonasciicharscatcode\active
+%
+% Latin1 (ISO-8859-1) character definitions.
+\def\latonechardefs{%
+ \gdef^^a0{~}
+ \gdef^^a1{\exclamdown}
+ \gdef^^a2{\missingcharmsg{CENT SIGN}}
+ \gdef^^a3{{\pounds}}
+ \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+ \gdef^^a5{\missingcharmsg{YEN SIGN}}
+ \gdef^^a6{\missingcharmsg{BROKEN BAR}}
+ \gdef^^a7{\S}
+ \gdef^^a8{\"{}}
+ \gdef^^a9{\copyright}
+ \gdef^^aa{\ordf}
+ \gdef^^ab{\missingcharmsg{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK}}
+ \gdef^^ac{$\lnot$}
+ \gdef^^ad{\-}
+ \gdef^^ae{\registeredsymbol}
+ \gdef^^af{\={}}
+ %
+ \gdef^^b0{\textdegree}
+ \gdef^^b1{$\pm$}
+ \gdef^^b2{$^2$}
+ \gdef^^b3{$^3$}
+ \gdef^^b4{\'{}}
+ \gdef^^b5{$\mu$}
+ \gdef^^b6{\P}
+ %
+ \gdef^^b7{$^.$}
+ \gdef^^b8{\cedilla\ }
+ \gdef^^b9{$^1$}
+ \gdef^^ba{\ordm}
+ %
+ \gdef^^bb{\missingcharmsg{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK}}
+ \gdef^^bc{$1\over4$}
+ \gdef^^bd{$1\over2$}
+ \gdef^^be{$3\over4$}
+ \gdef^^bf{\questiondown}
+ %
+ \gdef^^c0{\`A}
+ \gdef^^c1{\'A}
+ \gdef^^c2{\^A}
+ \gdef^^c3{\~A}
+ \gdef^^c4{\"A}
+ \gdef^^c5{\ringaccent A}
+ \gdef^^c6{\AE}
+ \gdef^^c7{\cedilla C}
+ \gdef^^c8{\`E}
+ \gdef^^c9{\'E}
+ \gdef^^ca{\^E}
+ \gdef^^cb{\"E}
+ \gdef^^cc{\`I}
+ \gdef^^cd{\'I}
+ \gdef^^ce{\^I}
+ \gdef^^cf{\"I}
+ %
+ \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER ETH}}
+ \gdef^^d1{\~N}
+ \gdef^^d2{\`O}
+ \gdef^^d3{\'O}
+ \gdef^^d4{\^O}
+ \gdef^^d5{\~O}
+ \gdef^^d6{\"O}
+ \gdef^^d7{$\times$}
+ \gdef^^d8{\O}
+ \gdef^^d9{\`U}
+ \gdef^^da{\'U}
+ \gdef^^db{\^U}
+ \gdef^^dc{\"U}
+ \gdef^^dd{\'Y}
+ \gdef^^de{\missingcharmsg{LATIN CAPITAL LETTER THORN}}
+ \gdef^^df{\ss}
+ %
+ \gdef^^e0{\`a}
+ \gdef^^e1{\'a}
+ \gdef^^e2{\^a}
+ \gdef^^e3{\~a}
+ \gdef^^e4{\"a}
+ \gdef^^e5{\ringaccent a}
+ \gdef^^e6{\ae}
+ \gdef^^e7{\cedilla c}
+ \gdef^^e8{\`e}
+ \gdef^^e9{\'e}
+ \gdef^^ea{\^e}
+ \gdef^^eb{\"e}
+ \gdef^^ec{\`{\dotless i}}
+ \gdef^^ed{\'{\dotless i}}
+ \gdef^^ee{\^{\dotless i}}
+ \gdef^^ef{\"{\dotless i}}
+ %
+ \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER ETH}}
+ \gdef^^f1{\~n}
+ \gdef^^f2{\`o}
+ \gdef^^f3{\'o}
+ \gdef^^f4{\^o}
+ \gdef^^f5{\~o}
+ \gdef^^f6{\"o}
+ \gdef^^f7{$\div$}
+ \gdef^^f8{\o}
+ \gdef^^f9{\`u}
+ \gdef^^fa{\'u}
+ \gdef^^fb{\^u}
+ \gdef^^fc{\"u}
+ \gdef^^fd{\'y}
+ \gdef^^fe{\missingcharmsg{LATIN SMALL LETTER THORN}}
+ \gdef^^ff{\"y}
+}
+
+% Latin9 (ISO-8859-15) encoding character definitions.
+\def\latninechardefs{%
+ % Encoding is almost identical to Latin1.
+ \latonechardefs
+ %
+ \gdef^^a4{\euro}
+ \gdef^^a6{\v S}
+ \gdef^^a8{\v s}
+ \gdef^^b4{\v Z}
+ \gdef^^b8{\v z}
+ \gdef^^bc{\OE}
+ \gdef^^bd{\oe}
+ \gdef^^be{\"Y}
+}
+
+% Latin2 (ISO-8859-2) character definitions.
+\def\lattwochardefs{%
+ \gdef^^a0{~}
+ \gdef^^a1{\missingcharmsg{LATIN CAPITAL LETTER A WITH OGONEK}}
+ \gdef^^a2{\u{}}
+ \gdef^^a3{\L}
+ \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+ \gdef^^a5{\v L}
+ \gdef^^a6{\'S}
+ \gdef^^a7{\S}
+ \gdef^^a8{\"{}}
+ \gdef^^a9{\v S}
+ \gdef^^aa{\cedilla S}
+ \gdef^^ab{\v T}
+ \gdef^^ac{\'Z}
+ \gdef^^ad{\-}
+ \gdef^^ae{\v Z}
+ \gdef^^af{\dotaccent Z}
+ %
+ \gdef^^b0{\textdegree}
+ \gdef^^b1{\missingcharmsg{LATIN SMALL LETTER A WITH OGONEK}}
+ \gdef^^b2{\missingcharmsg{OGONEK}}
+ \gdef^^b3{\l}
+ \gdef^^b4{\'{}}
+ \gdef^^b5{\v l}
+ \gdef^^b6{\'s}
+ \gdef^^b7{\v{}}
+ \gdef^^b8{\cedilla\ }
+ \gdef^^b9{\v s}
+ \gdef^^ba{\cedilla s}
+ \gdef^^bb{\v t}
+ \gdef^^bc{\'z}
+ \gdef^^bd{\H{}}
+ \gdef^^be{\v z}
+ \gdef^^bf{\dotaccent z}
+ %
+ \gdef^^c0{\'R}
+ \gdef^^c1{\'A}
+ \gdef^^c2{\^A}
+ \gdef^^c3{\u A}
+ \gdef^^c4{\"A}
+ \gdef^^c5{\'L}
+ \gdef^^c6{\'C}
+ \gdef^^c7{\cedilla C}
+ \gdef^^c8{\v C}
+ \gdef^^c9{\'E}
+ \gdef^^ca{\missingcharmsg{LATIN CAPITAL LETTER E WITH OGONEK}}
+ \gdef^^cb{\"E}
+ \gdef^^cc{\v E}
+ \gdef^^cd{\'I}
+ \gdef^^ce{\^I}
+ \gdef^^cf{\v D}
+ %
+ \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER D WITH STROKE}}
+ \gdef^^d1{\'N}
+ \gdef^^d2{\v N}
+ \gdef^^d3{\'O}
+ \gdef^^d4{\^O}
+ \gdef^^d5{\H O}
+ \gdef^^d6{\"O}
+ \gdef^^d7{$\times$}
+ \gdef^^d8{\v R}
+ \gdef^^d9{\ringaccent U}
+ \gdef^^da{\'U}
+ \gdef^^db{\H U}
+ \gdef^^dc{\"U}
+ \gdef^^dd{\'Y}
+ \gdef^^de{\cedilla T}
+ \gdef^^df{\ss}
+ %
+ \gdef^^e0{\'r}
+ \gdef^^e1{\'a}
+ \gdef^^e2{\^a}
+ \gdef^^e3{\u a}
+ \gdef^^e4{\"a}
+ \gdef^^e5{\'l}
+ \gdef^^e6{\'c}
+ \gdef^^e7{\cedilla c}
+ \gdef^^e8{\v c}
+ \gdef^^e9{\'e}
+ \gdef^^ea{\missingcharmsg{LATIN SMALL LETTER E WITH OGONEK}}
+ \gdef^^eb{\"e}
+ \gdef^^ec{\v e}
+ \gdef^^ed{\'\i}
+ \gdef^^ee{\^\i}
+ \gdef^^ef{\v d}
+ %
+ \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER D WITH STROKE}}
+ \gdef^^f1{\'n}
+ \gdef^^f2{\v n}
+ \gdef^^f3{\'o}
+ \gdef^^f4{\^o}
+ \gdef^^f5{\H o}
+ \gdef^^f6{\"o}
+ \gdef^^f7{$\div$}
+ \gdef^^f8{\v r}
+ \gdef^^f9{\ringaccent u}
+ \gdef^^fa{\'u}
+ \gdef^^fb{\H u}
+ \gdef^^fc{\"u}
+ \gdef^^fd{\'y}
+ \gdef^^fe{\cedilla t}
+ \gdef^^ff{\dotaccent{}}
+}
+
+% UTF-8 character definitions.
+%
+% This code to support UTF-8 is based on LaTeX's utf8.def, with some
+% changes for Texinfo conventions. It is included here under the GPL by
+% permission from Frank Mittelbach and the LaTeX team.
+%
+\newcount\countUTFx
+\newcount\countUTFy
+\newcount\countUTFz
+
+\gdef\UTFviiiTwoOctets#1#2{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\endcsname}
+%
+\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
+%
+\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
+
+\gdef\UTFviiiDefined#1{%
+ \ifx #1\relax
+ \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
+ \else
+ \expandafter #1%
+ \fi
+}
+
+\begingroup
+ \catcode`\~13
+ \catcode`\"12
+
+ \def\UTFviiiLoop{%
+ \global\catcode\countUTFx\active
+ \uccode`\~\countUTFx
+ \uppercase\expandafter{\UTFviiiTmp}%
+ \advance\countUTFx by 1
+ \ifnum\countUTFx < \countUTFy
+ \expandafter\UTFviiiLoop
+ \fi}
+
+ \countUTFx = "C2
+ \countUTFy = "E0
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
+ \UTFviiiLoop
+
+ \countUTFx = "E0
+ \countUTFy = "F0
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
+ \UTFviiiLoop
+
+ \countUTFx = "F0
+ \countUTFy = "F4
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiFourOctets\string~}}
+ \UTFviiiLoop
+\endgroup
+
+\begingroup
+ \catcode`\"=12
+ \catcode`\<=12
+ \catcode`\.=12
+ \catcode`\,=12
+ \catcode`\;=12
+ \catcode`\!=12
+ \catcode`\~=13
+
+ \gdef\DeclareUnicodeCharacter#1#2{%
+ \countUTFz = "#1\relax
+ \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+ \begingroup
+ \parseXMLCharref
+ \def\UTFviiiTwoOctets##1##2{%
+ \csname u8:##1\string ##2\endcsname}%
+ \def\UTFviiiThreeOctets##1##2##3{%
+ \csname u8:##1\string ##2\string ##3\endcsname}%
+ \def\UTFviiiFourOctets##1##2##3##4{%
+ \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter
+ \gdef\UTFviiiTmp{#2}%
+ \endgroup}
+
+ \gdef\parseXMLCharref{%
+ \ifnum\countUTFz < "A0\relax
+ \errhelp = \EMsimple
+ \errmessage{Cannot define Unicode char value < 00A0}%
+ \else\ifnum\countUTFz < "800\relax
+ \parseUTFviiiA,%
+ \parseUTFviiiB C\UTFviiiTwoOctets.,%
+ \else\ifnum\countUTFz < "10000\relax
+ \parseUTFviiiA;%
+ \parseUTFviiiA,%
+ \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
+ \else
+ \parseUTFviiiA;%
+ \parseUTFviiiA,%
+ \parseUTFviiiA!%
+ \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
+ \fi\fi\fi
+ }
+
+ \gdef\parseUTFviiiA#1{%
+ \countUTFx = \countUTFz
+ \divide\countUTFz by 64
+ \countUTFy = \countUTFz
+ \multiply\countUTFz by 64
+ \advance\countUTFx by -\countUTFz
+ \advance\countUTFx by 128
+ \uccode `#1\countUTFx
+ \countUTFz = \countUTFy}
+
+ \gdef\parseUTFviiiB#1#2#3#4{%
+ \advance\countUTFz by "#10\relax
+ \uccode `#3\countUTFz
+ \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
+\endgroup
+
+\def\utfeightchardefs{%
+ \DeclareUnicodeCharacter{00A0}{\tie}
+ \DeclareUnicodeCharacter{00A1}{\exclamdown}
+ \DeclareUnicodeCharacter{00A3}{\pounds}
+ \DeclareUnicodeCharacter{00A8}{\"{ }}
+ \DeclareUnicodeCharacter{00A9}{\copyright}
+ \DeclareUnicodeCharacter{00AA}{\ordf}
+ \DeclareUnicodeCharacter{00AD}{\-}
+ \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
+ \DeclareUnicodeCharacter{00AF}{\={ }}
+
+ \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
+ \DeclareUnicodeCharacter{00B4}{\'{ }}
+ \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
+ \DeclareUnicodeCharacter{00BA}{\ordm}
+ \DeclareUnicodeCharacter{00BF}{\questiondown}
+
+ \DeclareUnicodeCharacter{00C0}{\`A}
+ \DeclareUnicodeCharacter{00C1}{\'A}
+ \DeclareUnicodeCharacter{00C2}{\^A}
+ \DeclareUnicodeCharacter{00C3}{\~A}
+ \DeclareUnicodeCharacter{00C4}{\"A}
+ \DeclareUnicodeCharacter{00C5}{\AA}
+ \DeclareUnicodeCharacter{00C6}{\AE}
+ \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
+ \DeclareUnicodeCharacter{00C8}{\`E}
+ \DeclareUnicodeCharacter{00C9}{\'E}
+ \DeclareUnicodeCharacter{00CA}{\^E}
+ \DeclareUnicodeCharacter{00CB}{\"E}
+ \DeclareUnicodeCharacter{00CC}{\`I}
+ \DeclareUnicodeCharacter{00CD}{\'I}
+ \DeclareUnicodeCharacter{00CE}{\^I}
+ \DeclareUnicodeCharacter{00CF}{\"I}
+
+ \DeclareUnicodeCharacter{00D1}{\~N}
+ \DeclareUnicodeCharacter{00D2}{\`O}
+ \DeclareUnicodeCharacter{00D3}{\'O}
+ \DeclareUnicodeCharacter{00D4}{\^O}
+ \DeclareUnicodeCharacter{00D5}{\~O}
+ \DeclareUnicodeCharacter{00D6}{\"O}
+ \DeclareUnicodeCharacter{00D8}{\O}
+ \DeclareUnicodeCharacter{00D9}{\`U}
+ \DeclareUnicodeCharacter{00DA}{\'U}
+ \DeclareUnicodeCharacter{00DB}{\^U}
+ \DeclareUnicodeCharacter{00DC}{\"U}
+ \DeclareUnicodeCharacter{00DD}{\'Y}
+ \DeclareUnicodeCharacter{00DF}{\ss}
+
+ \DeclareUnicodeCharacter{00E0}{\`a}
+ \DeclareUnicodeCharacter{00E1}{\'a}
+ \DeclareUnicodeCharacter{00E2}{\^a}
+ \DeclareUnicodeCharacter{00E3}{\~a}
+ \DeclareUnicodeCharacter{00E4}{\"a}
+ \DeclareUnicodeCharacter{00E5}{\aa}
+ \DeclareUnicodeCharacter{00E6}{\ae}
+ \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
+ \DeclareUnicodeCharacter{00E8}{\`e}
+ \DeclareUnicodeCharacter{00E9}{\'e}
+ \DeclareUnicodeCharacter{00EA}{\^e}
+ \DeclareUnicodeCharacter{00EB}{\"e}
+ \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
+ \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
+ \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
+ \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
+
+ \DeclareUnicodeCharacter{00F1}{\~n}
+ \DeclareUnicodeCharacter{00F2}{\`o}
+ \DeclareUnicodeCharacter{00F3}{\'o}
+ \DeclareUnicodeCharacter{00F4}{\^o}
+ \DeclareUnicodeCharacter{00F5}{\~o}
+ \DeclareUnicodeCharacter{00F6}{\"o}
+ \DeclareUnicodeCharacter{00F8}{\o}
+ \DeclareUnicodeCharacter{00F9}{\`u}
+ \DeclareUnicodeCharacter{00FA}{\'u}
+ \DeclareUnicodeCharacter{00FB}{\^u}
+ \DeclareUnicodeCharacter{00FC}{\"u}
+ \DeclareUnicodeCharacter{00FD}{\'y}
+ \DeclareUnicodeCharacter{00FF}{\"y}
+
+ \DeclareUnicodeCharacter{0100}{\=A}
+ \DeclareUnicodeCharacter{0101}{\=a}
+ \DeclareUnicodeCharacter{0102}{\u{A}}
+ \DeclareUnicodeCharacter{0103}{\u{a}}
+ \DeclareUnicodeCharacter{0106}{\'C}
+ \DeclareUnicodeCharacter{0107}{\'c}
+ \DeclareUnicodeCharacter{0108}{\^C}
+ \DeclareUnicodeCharacter{0109}{\^c}
+ \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
+ \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
+ \DeclareUnicodeCharacter{010C}{\v{C}}
+ \DeclareUnicodeCharacter{010D}{\v{c}}
+ \DeclareUnicodeCharacter{010E}{\v{D}}
+
+ \DeclareUnicodeCharacter{0112}{\=E}
+ \DeclareUnicodeCharacter{0113}{\=e}
+ \DeclareUnicodeCharacter{0114}{\u{E}}
+ \DeclareUnicodeCharacter{0115}{\u{e}}
+ \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
+ \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
+ \DeclareUnicodeCharacter{011A}{\v{E}}
+ \DeclareUnicodeCharacter{011B}{\v{e}}
+ \DeclareUnicodeCharacter{011C}{\^G}
+ \DeclareUnicodeCharacter{011D}{\^g}
+ \DeclareUnicodeCharacter{011E}{\u{G}}
+ \DeclareUnicodeCharacter{011F}{\u{g}}
+
+ \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
+ \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
+ \DeclareUnicodeCharacter{0124}{\^H}
+ \DeclareUnicodeCharacter{0125}{\^h}
+ \DeclareUnicodeCharacter{0128}{\~I}
+ \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
+ \DeclareUnicodeCharacter{012A}{\=I}
+ \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
+ \DeclareUnicodeCharacter{012C}{\u{I}}
+ \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
+
+ \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
+ \DeclareUnicodeCharacter{0131}{\dotless{i}}
+ \DeclareUnicodeCharacter{0132}{IJ}
+ \DeclareUnicodeCharacter{0133}{ij}
+ \DeclareUnicodeCharacter{0134}{\^J}
+ \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
+ \DeclareUnicodeCharacter{0139}{\'L}
+ \DeclareUnicodeCharacter{013A}{\'l}
+
+ \DeclareUnicodeCharacter{0141}{\L}
+ \DeclareUnicodeCharacter{0142}{\l}
+ \DeclareUnicodeCharacter{0143}{\'N}
+ \DeclareUnicodeCharacter{0144}{\'n}
+ \DeclareUnicodeCharacter{0147}{\v{N}}
+ \DeclareUnicodeCharacter{0148}{\v{n}}
+ \DeclareUnicodeCharacter{014C}{\=O}
+ \DeclareUnicodeCharacter{014D}{\=o}
+ \DeclareUnicodeCharacter{014E}{\u{O}}
+ \DeclareUnicodeCharacter{014F}{\u{o}}
+
+ \DeclareUnicodeCharacter{0150}{\H{O}}
+ \DeclareUnicodeCharacter{0151}{\H{o}}
+ \DeclareUnicodeCharacter{0152}{\OE}
+ \DeclareUnicodeCharacter{0153}{\oe}
+ \DeclareUnicodeCharacter{0154}{\'R}
+ \DeclareUnicodeCharacter{0155}{\'r}
+ \DeclareUnicodeCharacter{0158}{\v{R}}
+ \DeclareUnicodeCharacter{0159}{\v{r}}
+ \DeclareUnicodeCharacter{015A}{\'S}
+ \DeclareUnicodeCharacter{015B}{\'s}
+ \DeclareUnicodeCharacter{015C}{\^S}
+ \DeclareUnicodeCharacter{015D}{\^s}
+ \DeclareUnicodeCharacter{015E}{\cedilla{S}}
+ \DeclareUnicodeCharacter{015F}{\cedilla{s}}
+
+ \DeclareUnicodeCharacter{0160}{\v{S}}
+ \DeclareUnicodeCharacter{0161}{\v{s}}
+ \DeclareUnicodeCharacter{0162}{\cedilla{t}}
+ \DeclareUnicodeCharacter{0163}{\cedilla{T}}
+ \DeclareUnicodeCharacter{0164}{\v{T}}
+
+ \DeclareUnicodeCharacter{0168}{\~U}
+ \DeclareUnicodeCharacter{0169}{\~u}
+ \DeclareUnicodeCharacter{016A}{\=U}
+ \DeclareUnicodeCharacter{016B}{\=u}
+ \DeclareUnicodeCharacter{016C}{\u{U}}
+ \DeclareUnicodeCharacter{016D}{\u{u}}
+ \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
+ \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
+
+ \DeclareUnicodeCharacter{0170}{\H{U}}
+ \DeclareUnicodeCharacter{0171}{\H{u}}
+ \DeclareUnicodeCharacter{0174}{\^W}
+ \DeclareUnicodeCharacter{0175}{\^w}
+ \DeclareUnicodeCharacter{0176}{\^Y}
+ \DeclareUnicodeCharacter{0177}{\^y}
+ \DeclareUnicodeCharacter{0178}{\"Y}
+ \DeclareUnicodeCharacter{0179}{\'Z}
+ \DeclareUnicodeCharacter{017A}{\'z}
+ \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
+ \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
+ \DeclareUnicodeCharacter{017D}{\v{Z}}
+ \DeclareUnicodeCharacter{017E}{\v{z}}
+
+ \DeclareUnicodeCharacter{01C4}{D\v{Z}}
+ \DeclareUnicodeCharacter{01C5}{D\v{z}}
+ \DeclareUnicodeCharacter{01C6}{d\v{z}}
+ \DeclareUnicodeCharacter{01C7}{LJ}
+ \DeclareUnicodeCharacter{01C8}{Lj}
+ \DeclareUnicodeCharacter{01C9}{lj}
+ \DeclareUnicodeCharacter{01CA}{NJ}
+ \DeclareUnicodeCharacter{01CB}{Nj}
+ \DeclareUnicodeCharacter{01CC}{nj}
+ \DeclareUnicodeCharacter{01CD}{\v{A}}
+ \DeclareUnicodeCharacter{01CE}{\v{a}}
+ \DeclareUnicodeCharacter{01CF}{\v{I}}
+
+ \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
+ \DeclareUnicodeCharacter{01D1}{\v{O}}
+ \DeclareUnicodeCharacter{01D2}{\v{o}}
+ \DeclareUnicodeCharacter{01D3}{\v{U}}
+ \DeclareUnicodeCharacter{01D4}{\v{u}}
+
+ \DeclareUnicodeCharacter{01E2}{\={\AE}}
+ \DeclareUnicodeCharacter{01E3}{\={\ae}}
+ \DeclareUnicodeCharacter{01E6}{\v{G}}
+ \DeclareUnicodeCharacter{01E7}{\v{g}}
+ \DeclareUnicodeCharacter{01E8}{\v{K}}
+ \DeclareUnicodeCharacter{01E9}{\v{k}}
+
+ \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
+ \DeclareUnicodeCharacter{01F1}{DZ}
+ \DeclareUnicodeCharacter{01F2}{Dz}
+ \DeclareUnicodeCharacter{01F3}{dz}
+ \DeclareUnicodeCharacter{01F4}{\'G}
+ \DeclareUnicodeCharacter{01F5}{\'g}
+ \DeclareUnicodeCharacter{01F8}{\`N}
+ \DeclareUnicodeCharacter{01F9}{\`n}
+ \DeclareUnicodeCharacter{01FC}{\'{\AE}}
+ \DeclareUnicodeCharacter{01FD}{\'{\ae}}
+ \DeclareUnicodeCharacter{01FE}{\'{\O}}
+ \DeclareUnicodeCharacter{01FF}{\'{\o}}
+
+ \DeclareUnicodeCharacter{021E}{\v{H}}
+ \DeclareUnicodeCharacter{021F}{\v{h}}
+
+ \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
+ \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
+ \DeclareUnicodeCharacter{0228}{\cedilla{E}}
+ \DeclareUnicodeCharacter{0229}{\cedilla{e}}
+ \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
+ \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
+
+ \DeclareUnicodeCharacter{0232}{\=Y}
+ \DeclareUnicodeCharacter{0233}{\=y}
+ \DeclareUnicodeCharacter{0237}{\dotless{j}}
+
+ \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
+ \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
+ \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
+ \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
+ \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
+ \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
+ \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
+ \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
+ \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
+ \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
+ \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
+ \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
+
+ \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
+ \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
+
+ \DeclareUnicodeCharacter{1E20}{\=G}
+ \DeclareUnicodeCharacter{1E21}{\=g}
+ \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
+ \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
+ \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
+ \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
+ \DeclareUnicodeCharacter{1E26}{\"H}
+ \DeclareUnicodeCharacter{1E27}{\"h}
+
+ \DeclareUnicodeCharacter{1E30}{\'K}
+ \DeclareUnicodeCharacter{1E31}{\'k}
+ \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
+ \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
+ \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
+ \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
+ \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
+ \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
+ \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
+ \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
+ \DeclareUnicodeCharacter{1E3E}{\'M}
+ \DeclareUnicodeCharacter{1E3F}{\'m}
+
+ \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
+ \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
+ \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
+ \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
+ \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
+ \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
+ \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
+ \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
+ \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
+ \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
+
+ \DeclareUnicodeCharacter{1E54}{\'P}
+ \DeclareUnicodeCharacter{1E55}{\'p}
+ \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
+ \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
+ \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
+ \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
+ \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
+ \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
+ \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
+ \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
+
+ \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
+ \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
+ \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
+ \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
+ \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
+ \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
+ \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
+ \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
+ \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
+ \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
+
+ \DeclareUnicodeCharacter{1E7C}{\~V}
+ \DeclareUnicodeCharacter{1E7D}{\~v}
+ \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
+ \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
+
+ \DeclareUnicodeCharacter{1E80}{\`W}
+ \DeclareUnicodeCharacter{1E81}{\`w}
+ \DeclareUnicodeCharacter{1E82}{\'W}
+ \DeclareUnicodeCharacter{1E83}{\'w}
+ \DeclareUnicodeCharacter{1E84}{\"W}
+ \DeclareUnicodeCharacter{1E85}{\"w}
+ \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
+ \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
+ \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
+ \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
+ \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
+ \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
+ \DeclareUnicodeCharacter{1E8C}{\"X}
+ \DeclareUnicodeCharacter{1E8D}{\"x}
+ \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
+ \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
+
+ \DeclareUnicodeCharacter{1E90}{\^Z}
+ \DeclareUnicodeCharacter{1E91}{\^z}
+ \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
+ \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
+ \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
+ \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
+ \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
+ \DeclareUnicodeCharacter{1E97}{\"t}
+ \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
+ \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
+
+ \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
+ \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
+
+ \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
+ \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
+ \DeclareUnicodeCharacter{1EBC}{\~E}
+ \DeclareUnicodeCharacter{1EBD}{\~e}
+
+ \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
+ \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
+ \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
+ \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
+
+ \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
+ \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
+
+ \DeclareUnicodeCharacter{1EF2}{\`Y}
+ \DeclareUnicodeCharacter{1EF3}{\`y}
+ \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
+
+ \DeclareUnicodeCharacter{1EF8}{\~Y}
+ \DeclareUnicodeCharacter{1EF9}{\~y}
+
+ \DeclareUnicodeCharacter{2013}{--}
+ \DeclareUnicodeCharacter{2014}{---}
+ \DeclareUnicodeCharacter{2022}{\bullet}
+ \DeclareUnicodeCharacter{2026}{\dots}
+ \DeclareUnicodeCharacter{20AC}{\euro}
+
+ \DeclareUnicodeCharacter{2192}{\expansion}
+ \DeclareUnicodeCharacter{21D2}{\result}
+
+ \DeclareUnicodeCharacter{2212}{\minus}
+ \DeclareUnicodeCharacter{2217}{\point}
+ \DeclareUnicodeCharacter{2261}{\equiv}
+}% end of \utfeightchardefs
+
+
+% US-ASCII character definitions.
+\def\asciichardefs{% nothing need be done
+ \relax
+}
+
+% Make non-ASCII characters printable again for compatibility with
+% existing Texinfo documents that may use them, even without declaring a
+% document encoding.
+%
+\setnonasciicharscatcode \other
+
+
+\message{formatting,}
+
+\newdimen\defaultparindent \defaultparindent = 15pt
+
+\chapheadingskip = 15pt plus 4pt minus 2pt
+\secheadingskip = 12pt plus 3pt minus 2pt
+\subsecheadingskip = 9pt plus 2pt minus 2pt
+
+% Prevent underfull vbox error messages.
+\vbadness = 10000
+
+% Don't be so finicky about underfull hboxes, either.
+\hbadness = 2000
+
+% Following George Bush, just get rid of widows and orphans.
+\widowpenalty=10000
+\clubpenalty=10000
+
+% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
+% using an old version of TeX, don't do anything. We want the amount of
+% stretch added to depend on the line length, hence the dependence on
+% \hsize. We call this whenever the paper size is set.
+%
+\def\setemergencystretch{%
+ \ifx\emergencystretch\thisisundefined
+ % Allow us to assign to \emergencystretch anyway.
+ \def\emergencystretch{\dimen0}%
+ \else
+ \emergencystretch = .15\hsize
+ \fi
+}
+
+% Parameters in order: 1) textheight; 2) textwidth;
+% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
+% 7) physical page height; 8) physical page width.
+%
+% We also call \setleading{\textleading}, so the caller should define
+% \textleading. The caller should also set \parskip.
+%
+\def\internalpagesizes#1#2#3#4#5#6#7#8{%
+ \voffset = #3\relax
+ \topskip = #6\relax
+ \splittopskip = \topskip
+ %
+ \vsize = #1\relax
+ \advance\vsize by \topskip
+ \outervsize = \vsize
+ \advance\outervsize by 2\topandbottommargin
+ \pageheight = \vsize
+ %
+ \hsize = #2\relax
+ \outerhsize = \hsize
+ \advance\outerhsize by 0.5in
+ \pagewidth = \hsize
+ %
+ \normaloffset = #4\relax
+ \bindingoffset = #5\relax
+ %
+ \ifpdf
+ \pdfpageheight #7\relax
+ \pdfpagewidth #8\relax
+ \fi
+ %
+ \setleading{\textleading}
+ %
+ \parindent = \defaultparindent
+ \setemergencystretch
+}
+
+% @letterpaper (the default).
+\def\letterpaper{{\globaldefs = 1
+ \parskip = 3pt plus 2pt minus 1pt
+ \textleading = 13.2pt
+ %
+ % If page is nothing but text, make it come out even.
+ \internalpagesizes{46\baselineskip}{6in}%
+ {\voffset}{.25in}%
+ {\bindingoffset}{36pt}%
+ {11in}{8.5in}%
+}}
+
+% Use @smallbook to reset parameters for 7x9.25 trim size.
+\def\smallbook{{\globaldefs = 1
+ \parskip = 2pt plus 1pt
+ \textleading = 12pt
+ %
+ \internalpagesizes{7.5in}{5in}%
+ {\voffset}{.25in}%
+ {\bindingoffset}{16pt}%
+ {9.25in}{7in}%
+ %
+ \lispnarrowing = 0.3in
+ \tolerance = 700
+ \hfuzz = 1pt
+ \contentsrightmargin = 0pt
+ \defbodyindent = .5cm
+}}
+
+% Use @smallerbook to reset parameters for 6x9 trim size.
+% (Just testing, parameters still in flux.)
+\def\smallerbook{{\globaldefs = 1
+ \parskip = 1.5pt plus 1pt
+ \textleading = 12pt
+ %
+ \internalpagesizes{7.4in}{4.8in}%
+ {-.2in}{-.4in}%
+ {0pt}{14pt}%
+ {9in}{6in}%
+ %
+ \lispnarrowing = 0.25in
+ \tolerance = 700
+ \hfuzz = 1pt
+ \contentsrightmargin = 0pt
+ \defbodyindent = .4cm
+}}
+
+% Use @afourpaper to print on European A4 paper.
+\def\afourpaper{{\globaldefs = 1
+ \parskip = 3pt plus 2pt minus 1pt
+ \textleading = 13.2pt
+ %
+ % Double-side printing via postscript on Laserjet 4050
+ % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
+ % To change the settings for a different printer or situation, adjust
+ % \normaloffset until the front-side and back-side texts align. Then
+ % do the same for \bindingoffset. You can set these for testing in
+ % your texinfo source file like this:
+ % @tex
+ % \global\normaloffset = -6mm
+ % \global\bindingoffset = 10mm
+ % @end tex
+ \internalpagesizes{51\baselineskip}{160mm}
+ {\voffset}{\hoffset}%
+ {\bindingoffset}{44pt}%
+ {297mm}{210mm}%
+ %
+ \tolerance = 700
+ \hfuzz = 1pt
+ \contentsrightmargin = 0pt
+ \defbodyindent = 5mm
+}}
+
+% Use @afivepaper to print on European A5 paper.
+% From romildo@urano.iceb.ufop.br, 2 July 2000.
+% He also recommends making @example and @lisp be small.
+\def\afivepaper{{\globaldefs = 1
+ \parskip = 2pt plus 1pt minus 0.1pt
+ \textleading = 12.5pt
+ %
+ \internalpagesizes{160mm}{120mm}%
+ {\voffset}{\hoffset}%
+ {\bindingoffset}{8pt}%
+ {210mm}{148mm}%
+ %
+ \lispnarrowing = 0.2in
+ \tolerance = 800
+ \hfuzz = 1.2pt
+ \contentsrightmargin = 0pt
+ \defbodyindent = 2mm
+ \tableindent = 12mm
+}}
+
+% A specific text layout, 24x15cm overall, intended for A4 paper.
+\def\afourlatex{{\globaldefs = 1
+ \afourpaper
+ \internalpagesizes{237mm}{150mm}%
+ {\voffset}{4.6mm}%
+ {\bindingoffset}{7mm}%
+ {297mm}{210mm}%
+ %
+ % Must explicitly reset to 0 because we call \afourpaper.
+ \globaldefs = 0
+}}
+
+% Use @afourwide to print on A4 paper in landscape format.
+\def\afourwide{{\globaldefs = 1
+ \afourpaper
+ \internalpagesizes{241mm}{165mm}%
+ {\voffset}{-2.95mm}%
+ {\bindingoffset}{7mm}%
+ {297mm}{210mm}%
+ \globaldefs = 0
+}}
+
+% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
+% Perhaps we should allow setting the margins, \topskip, \parskip,
+% and/or leading, also. Or perhaps we should compute them somehow.
+%
+\parseargdef\pagesizes{\pagesizesyyy #1,,\finish}
+\def\pagesizesyyy#1,#2,#3\finish{{%
+ \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
+ \globaldefs = 1
+ %
+ \parskip = 3pt plus 2pt minus 1pt
+ \setleading{\textleading}%
+ %
+ \dimen0 = #1
+ \advance\dimen0 by \voffset
+ %
+ \dimen2 = \hsize
+ \advance\dimen2 by \normaloffset
+ %
+ \internalpagesizes{#1}{\hsize}%
+ {\voffset}{\normaloffset}%
+ {\bindingoffset}{44pt}%
+ {\dimen0}{\dimen2}%
+}}
+
+% Set default to letter.
+%
+\letterpaper
+
+
+\message{and turning on texinfo input format.}
+
+% Define macros to output various characters with catcode for normal text.
+\catcode`\"=\other
+\catcode`\~=\other
+\catcode`\^=\other
+\catcode`\_=\other
+\catcode`\|=\other
+\catcode`\<=\other
+\catcode`\>=\other
+\catcode`\+=\other
+\catcode`\$=\other
+\def\normaldoublequote{"}
+\def\normaltilde{~}
+\def\normalcaret{^}
+\def\normalunderscore{_}
+\def\normalverticalbar{|}
+\def\normalless{<}
+\def\normalgreater{>}
+\def\normalplus{+}
+\def\normaldollar{$}%$ font-lock fix
+
+% This macro is used to make a character print one way in \tt
+% (where it can probably be output as-is), and another way in other fonts,
+% where something hairier probably needs to be done.
+%
+% #1 is what to print if we are indeed using \tt; #2 is what to print
+% otherwise. Since all the Computer Modern typewriter fonts have zero
+% interword stretch (and shrink), and it is reasonable to expect all
+% typewriter fonts to have this, we can check that font parameter.
+%
+\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
+
+% Same as above, but check for italic font. Actually this also catches
+% non-italic slanted fonts since it is impossible to distinguish them from
+% italic fonts. But since this is only used by $ and it uses \sl anyway
+% this is not a problem.
+\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
+
+% Turn off all special characters except @
+% (and those which the user can use as if they were ordinary).
+% Most of these we simply print from the \tt font, but for some, we can
+% use math or other variants that look better in normal text.
+
+\catcode`\"=\active
+\def\activedoublequote{{\tt\char34}}
+\let"=\activedoublequote
+\catcode`\~=\active
+\def~{{\tt\char126}}
+\chardef\hat=`\^
+\catcode`\^=\active
+\def^{{\tt \hat}}
+
+\catcode`\_=\active
+\def_{\ifusingtt\normalunderscore\_}
+\let\realunder=_
+% Subroutine for the previous macro.
+\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
+
+\catcode`\|=\active
+\def|{{\tt\char124}}
+\chardef \less=`\<
+\catcode`\<=\active
+\def<{{\tt \less}}
+\chardef \gtr=`\>
+\catcode`\>=\active
+\def>{{\tt \gtr}}
+\catcode`\+=\active
+\def+{{\tt \char 43}}
+\catcode`\$=\active
+\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+
+% If a .fmt file is being used, characters that might appear in a file
+% name cannot be active until we have parsed the command line.
+% So turn them off again, and have \everyjob (or @setfilename) turn them on.
+% \otherifyactive is called near the end of this file.
+\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
+
+% Used sometimes to turn off (effectively) the active characters even after
+% parsing them.
+\def\turnoffactive{%
+ \normalturnoffactive
+ \otherbackslash
+}
+
+\catcode`\@=0
+
+% \backslashcurfont outputs one backslash character in current font,
+% as in \char`\\.
+\global\chardef\backslashcurfont=`\\
+\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work
+
+% \realbackslash is an actual character `\' with catcode other, and
+% \doublebackslash is two of them (for the pdf outlines).
+{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
+
+% In texinfo, backslash is an active character; it prints the backslash
+% in fixed width font.
+\catcode`\\=\active
+@def@normalbackslash{{@tt@backslashcurfont}}
+% On startup, @fixbackslash assigns:
+% @let \ = @normalbackslash
+
+% \rawbackslash defines an active \ to do \backslashcurfont.
+% \otherbackslash defines an active \ to be a literal `\' character with
+% catcode other.
+@gdef@rawbackslash{@let\=@backslashcurfont}
+@gdef@otherbackslash{@let\=@realbackslash}
+
+% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
+% the literal character `\'.
+%
+@def@normalturnoffactive{%
+ @let\=@normalbackslash
+ @let"=@normaldoublequote
+ @let~=@normaltilde
+ @let^=@normalcaret
+ @let_=@normalunderscore
+ @let|=@normalverticalbar
+ @let<=@normalless
+ @let>=@normalgreater
+ @let+=@normalplus
+ @let$=@normaldollar %$ font-lock fix
+ @unsepspaces
+}
+
+% Make _ and + \other characters, temporarily.
+% This is canceled by @fixbackslash.
+@otherifyactive
+
+% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
+% That is what \eatinput is for; after that, the `\' should revert to printing
+% a backslash.
+%
+@gdef@eatinput input texinfo{@fixbackslash}
+@global@let\ = @eatinput
+
+% On the other hand, perhaps the file did not have a `\input texinfo'. Then
+% the first `\' in the file would cause an error. This macro tries to fix
+% that, assuming it is called before the first `\' could plausibly occur.
+% Also turn back on active characters that might appear in the input
+% file name, in case not using a pre-dumped format.
+%
+@gdef@fixbackslash{%
+ @ifx\@eatinput @let\ = @normalbackslash @fi
+ @catcode`+=@active
+ @catcode`@_=@active
+}
+
+% Say @foo, not \foo, in error messages.
+@escapechar = `@@
+
+% These look ok in all fonts, so just make them not special.
+@catcode`@& = @other
+@catcode`@# = @other
+@catcode`@% = @other
+
+
+@c Local variables:
+@c eval: (add-hook 'write-file-hooks 'time-stamp)
+@c page-delimiter: "^\\\\message"
+@c time-stamp-start: "def\\\\texinfoversion{"
+@c time-stamp-format: "%:y-%02m-%02d.%02H"
+@c time-stamp-end: "}"
+@c End:
+
+@c vim:sw=2:
+
+@ignore
+ arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
+@end ignore
diff --git a/build-aux/vc-list-files b/build-aux/vc-list-files
new file mode 100755
index 0000000..b170638
--- /dev/null
+++ b/build-aux/vc-list-files
@@ -0,0 +1,60 @@
+#!/bin/sh
+# List the specified version-controlled files.
+
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# List the specified version-controlled files.
+# With no argument, list them all.
+# This script must be run solely from the top of a $srcdir build directory.
+
+# If there's an argument, it must be a single, "."-relative directory name,
+# with no trailing slashes. In mercurial mode, it's used as part of a
+# "grep" pattern (prepend "^", append "/"), and in cvs mode, it's simply
+# used as an argument to the cvsu script.
+# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
+
+include_prefix=
+case $# in
+ 0) ;;
+ 1) include_prefix=$1 ;;
+ *) echo "$0: too many arguments" 1>&2; exit 1 ;;
+esac
+
+if test -d .git; then
+ if test "x$include_prefix" = x; then
+ git-ls-files
+ else
+ git-ls-files | grep "^$include_prefix/"
+ fi
+elif test -d .hg; then
+ if test "x$include_prefix" = x; then
+ hg manifest | cut -d ' ' -f 2
+ else
+ hg manifest | cut -d ' ' -f 2 | grep "^$include_prefix/"
+ fi
+elif test -x build-aux/cvsu; then
+ build-aux/cvsu --find --types=AFGM $include_prefix
+else
+ awk -F/ '{ \
+ if (!$1 && $3 !~ /^-/) { \
+ f=FILENAME; \
+ sub(/CVS\/Entries/, "", f); \
+ print f $2; \
+ }}' \
+ $(find ${*-*} -name Entries -print) /dev/null;
+fi
diff --git a/build-aux/ylwrap b/build-aux/ylwrap
new file mode 100755
index 0000000..102bd89
--- /dev/null
+++ b/build-aux/ylwrap
@@ -0,0 +1,223 @@
+#! /bin/sh
+# ylwrap - wrapper for lex/yacc invocations.
+
+scriptversion=2005-05-14.22
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+case "$1" in
+ '')
+ echo "$0: No files given. Try \`$0 --help' for more information." 1>&2
+ exit 1
+ ;;
+ --basedir)
+ basedir=$2
+ shift 2
+ ;;
+ -h|--h*)
+ cat <<\EOF
+Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]...
+
+Wrapper for lex/yacc invocations, renaming files as desired.
+
+ INPUT is the input file
+ OUTPUT is one file PROG generates
+ DESIRED is the file we actually want instead of OUTPUT
+ PROGRAM is program to run
+ ARGS are passed to PROG
+
+Any number of OUTPUT,DESIRED pairs may be used.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v|--v*)
+ echo "ylwrap $scriptversion"
+ exit $?
+ ;;
+esac
+
+
+# The input.
+input="$1"
+shift
+case "$input" in
+ [\\/]* | ?:[\\/]*)
+ # Absolute path; do nothing.
+ ;;
+ *)
+ # Relative path. Make it absolute.
+ input="`pwd`/$input"
+ ;;
+esac
+
+pairlist=
+while test "$#" -ne 0; do
+ if test "$1" = "--"; then
+ shift
+ break
+ fi
+ pairlist="$pairlist $1"
+ shift
+done
+
+# The program to run.
+prog="$1"
+shift
+# Make any relative path in $prog absolute.
+case "$prog" in
+ [\\/]* | ?:[\\/]*) ;;
+ *[\\/]*) prog="`pwd`/$prog" ;;
+esac
+
+# FIXME: add hostname here for parallel makes that run commands on
+# other machines. But that might take us over the 14-char limit.
+dirname=ylwrap$$
+trap "cd `pwd`; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15
+mkdir $dirname || exit 1
+
+cd $dirname
+
+case $# in
+ 0) $prog "$input" ;;
+ *) $prog "$@" "$input" ;;
+esac
+ret=$?
+
+if test $ret -eq 0; then
+ set X $pairlist
+ shift
+ first=yes
+ # Since DOS filename conventions don't allow two dots,
+ # the DOS version of Bison writes out y_tab.c instead of y.tab.c
+ # and y_tab.h instead of y.tab.h. Test to see if this is the case.
+ y_tab_nodot="no"
+ if test -f y_tab.c || test -f y_tab.h; then
+ y_tab_nodot="yes"
+ fi
+
+ # The directory holding the input.
+ input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'`
+ # Quote $INPUT_DIR so we can use it in a regexp.
+ # FIXME: really we should care about more than `.' and `\'.
+ input_rx=`echo "$input_dir" | sed 's,\\\\,\\\\\\\\,g;s,\\.,\\\\.,g'`
+
+ while test "$#" -ne 0; do
+ from="$1"
+ # Handle y_tab.c and y_tab.h output by DOS
+ if test $y_tab_nodot = "yes"; then
+ if test $from = "y.tab.c"; then
+ from="y_tab.c"
+ else
+ if test $from = "y.tab.h"; then
+ from="y_tab.h"
+ fi
+ fi
+ fi
+ if test -f "$from"; then
+ # If $2 is an absolute path name, then just use that,
+ # otherwise prepend `../'.
+ case "$2" in
+ [\\/]* | ?:[\\/]*) target="$2";;
+ *) target="../$2";;
+ esac
+
+ # We do not want to overwrite a header file if it hasn't
+ # changed. This avoid useless recompilations. However the
+ # parser itself (the first file) should always be updated,
+ # because it is the destination of the .y.c rule in the
+ # Makefile. Divert the output of all other files to a temporary
+ # file so we can compare them to existing versions.
+ if test $first = no; then
+ realtarget="$target"
+ target="tmp-`echo $target | sed s/.*[\\/]//g`"
+ fi
+ # Edit out `#line' or `#' directives.
+ #
+ # We don't want the resulting debug information to point at
+ # an absolute srcdir; it is better for it to just mention the
+ # .y file with no path.
+ #
+ # We want to use the real output file name, not yy.lex.c for
+ # instance.
+ #
+ # We want the include guards to be adjusted too.
+ FROM=`echo "$from" | sed \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
+ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
+ TARGET=`echo "$2" | sed \
+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
+ -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
+
+ sed -e "/^#/!b" -e "s,$input_rx,," -e "s,$from,$2," \
+ -e "s,$FROM,$TARGET," "$from" >"$target" || ret=$?
+
+ # Check whether header files must be updated.
+ if test $first = no; then
+ if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
+ echo "$2" is unchanged
+ rm -f "$target"
+ else
+ echo updating "$2"
+ mv -f "$target" "$realtarget"
+ fi
+ fi
+ else
+ # A missing file is only an error for the first file. This
+ # is a blatant hack to let us support using "yacc -d". If -d
+ # is not specified, we don't want an error when the header
+ # file is "missing".
+ if test $first = yes; then
+ ret=1
+ fi
+ fi
+ shift
+ shift
+ first=no
+ done
+else
+ ret=$?
+fi
+
+# Remove the directory.
+cd ..
+rm -rf $dirname
+
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/configure b/configure
new file mode 100755
index 0000000..67e2503
--- /dev/null
+++ b/configure
@@ -0,0 +1,55781 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.61a for GNU coreutils 6.9.
+#
+# Report bugs to <bug-coreutils@gnu.org>.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+if test "x$CONFIG_SHELL" = x; then
+ if (eval ":") 2>/dev/null; then
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+
+ if test $as_have_required = yes && (eval ":
+(as_func_return () {
+ (exit \$1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0) || { (exit 1); exit 1; }
+
+(
+ as_lineno_1=\$LINENO
+ as_lineno_2=\$LINENO
+ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
+ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
+") 2> /dev/null; then
+ :
+else
+ as_candidate_shells=
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ case $as_dir in
+ /*)
+ for as_base in sh bash ksh sh5; do
+ as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+ done;;
+ esac
+done
+IFS=$as_save_IFS
+
+
+ for as_shell in $as_candidate_shells $SHELL; do
+ # Try only shells that exist, to save several forks.
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { ("$as_shell") 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+_ASEOF
+}; then
+ CONFIG_SHELL=$as_shell
+ as_have_required=yes
+ if { "$as_shell" 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+(as_func_return () {
+ (exit $1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = "$1" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test $exitcode = 0) || { (exit 1); exit 1; }
+
+(
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
+
+_ASEOF
+}; then
+ break
+fi
+
+fi
+
+ done
+
+ if test "x$CONFIG_SHELL" != x; then
+ for as_var in BASH_ENV ENV
+ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ done
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+
+ if test $as_have_required = no; then
+ echo This script requires a shell more modern than all the
+ echo shells that I found on your system. Please install a
+ echo modern shell, or manually run the script under such a
+ echo shell if you do have one.
+ { (exit 1); exit 1; }
+fi
+
+
+fi
+
+fi
+
+
+
+(eval "as_func_return () {
+ (exit \$1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0") || {
+ echo No shell found that supports shell functions.
+ echo Please tell autoconf@gnu.org about your system,
+ echo including any error possibly output before this
+ echo message
+}
+
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line after each line using $LINENO; the second 'sed'
+ # does the real work. The second script uses 'N' to pair each
+ # line-number line with the line containing $LINENO, and appends
+ # trailing '-' during substitution so that $LINENO is not a special
+ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # scripts with optimization help from Paolo Bonzini. Blame Lee
+ # E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+ case `echo 'x\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ *) ECHO_C='\c';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir
+fi
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+
+exec 7<&0 </dev/null 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Identity of this package.
+PACKAGE_NAME='GNU coreutils'
+PACKAGE_TARNAME='coreutils'
+PACKAGE_VERSION='6.9'
+PACKAGE_STRING='GNU coreutils 6.9'
+PACKAGE_BUGREPORT='bug-coreutils@gnu.org'
+
+ac_unique_file="src/ls.c"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_header_list=
+ac_func_list=
+gt_needs=
+ac_subst_vars='SHELL
+PATH_SEPARATOR
+PACKAGE_NAME
+PACKAGE_TARNAME
+PACKAGE_VERSION
+PACKAGE_STRING
+PACKAGE_BUGREPORT
+exec_prefix
+prefix
+program_transform_name
+bindir
+sbindir
+libexecdir
+datarootdir
+datadir
+sysconfdir
+sharedstatedir
+localstatedir
+includedir
+oldincludedir
+docdir
+infodir
+htmldir
+dvidir
+pdfdir
+psdir
+libdir
+localedir
+mandir
+DEFS
+ECHO_C
+ECHO_N
+ECHO_T
+LIBS
+build_alias
+host_alias
+target_alias
+build
+build_cpu
+build_vendor
+build_os
+host
+host_cpu
+host_vendor
+host_os
+INSTALL_PROGRAM
+INSTALL_SCRIPT
+INSTALL_DATA
+am__isrc
+CYGPATH_W
+PACKAGE
+VERSION
+ACLOCAL
+AUTOCONF
+AUTOMAKE
+AUTOHEADER
+MAKEINFO
+install_sh
+STRIP
+INSTALL_STRIP_PROGRAM
+mkdir_p
+AWK
+SET_MAKE
+am__leading_dot
+AMTAR
+am__tar
+am__untar
+CC
+CFLAGS
+LDFLAGS
+CPPFLAGS
+ac_ct_CC
+EXEEXT
+OBJEXT
+DEPDIR
+am__include
+am__quote
+AMDEP_TRUE
+AMDEP_FALSE
+AMDEPBACKSLASH
+CCDEPMODE
+am__fastdepCC_TRUE
+am__fastdepCC_FALSE
+CPP
+GREP
+EGREP
+RANLIB
+LN_S
+GL_COND_LIBTOOL_TRUE
+GL_COND_LIBTOOL_FALSE
+LIB_ACL
+LIB_ACL_TRIVIAL
+ALLOCA
+ALLOCA_H
+ARPA_INET_H
+GNULIB_CHOWN
+GNULIB_DUP2
+GNULIB_FCHDIR
+GNULIB_FTRUNCATE
+GNULIB_GETCWD
+GNULIB_GETLOGIN_R
+GNULIB_READLINK
+HAVE_DUP2
+HAVE_FTRUNCATE
+HAVE_READLINK
+HAVE_DECL_GETLOGIN_R
+REPLACE_CHOWN
+REPLACE_FCHDIR
+REPLACE_GETCWD
+LIB_CLOCK_GETTIME
+LIB_EACCESS
+ABSOLUTE_DIRENT_H
+DIRENT_H
+ABSOLUTE_FCNTL_H
+FCNTL_H
+FNMATCH_H
+ABSOLUTE_SYS_SOCKET_H
+HAVE_SYS_SOCKET_H
+HAVE_WINSOCK2_H
+HAVE_WS2TCPIP_H
+SYS_SOCKET_H
+STDBOOL_H
+HAVE__BOOL
+YACC
+YFLAGS
+LIB_GETHRXTIME
+NEED_SETGID
+KMEM_GROUP
+GETLOADAVG_LIBS
+GETOPT_H
+ABSOLUTE_SYS_TIME_H
+HAVE_SYS_TIME_H
+HAVE_STRUCT_TIMEVAL
+REPLACE_GETTIMEOFDAY
+SYS_TIME_H
+LIBICONV
+LTLIBICONV
+HAVE_LONG_LONG_INT
+HAVE_UNSIGNED_LONG_LONG_INT
+HAVE_INTTYPES_H
+HAVE_SYS_TYPES_H
+ABSOLUTE_STDINT_H
+HAVE_STDINT_H
+HAVE_SYS_INTTYPES_H
+HAVE_SYS_BITYPES_H
+BITSIZEOF_PTRDIFF_T
+BITSIZEOF_SIG_ATOMIC_T
+BITSIZEOF_SIZE_T
+BITSIZEOF_WCHAR_T
+BITSIZEOF_WINT_T
+HAVE_SIGNED_SIG_ATOMIC_T
+HAVE_SIGNED_WCHAR_T
+HAVE_SIGNED_WINT_T
+PTRDIFF_T_SUFFIX
+SIG_ATOMIC_T_SUFFIX
+SIZE_T_SUFFIX
+WCHAR_T_SUFFIX
+WINT_T_SUFFIX
+STDINT_H
+PRI_MACROS_BROKEN
+GNULIB_IMAXABS
+GNULIB_IMAXDIV
+GNULIB_STRTOIMAX
+GNULIB_STRTOUMAX
+HAVE_DECL_IMAXABS
+HAVE_DECL_IMAXDIV
+HAVE_DECL_STRTOIMAX
+HAVE_DECL_STRTOUMAX
+ABSOLUTE_INTTYPES_H
+PRIPTR_PREFIX
+INTTYPES_H
+GLIBC21
+GNULIB_MEMMEM
+GNULIB_MEMPCPY
+GNULIB_MEMRCHR
+GNULIB_STPCPY
+GNULIB_STPNCPY
+GNULIB_STRCHRNUL
+GNULIB_STRDUP
+GNULIB_STRNDUP
+GNULIB_STRNLEN
+GNULIB_STRPBRK
+GNULIB_STRSEP
+GNULIB_STRCASESTR
+GNULIB_STRTOK_R
+GNULIB_MBSLEN
+GNULIB_MBSCHR
+GNULIB_MBSRCHR
+GNULIB_MBSSTR
+GNULIB_MBSCASECMP
+GNULIB_MBSNCASECMP
+GNULIB_MBSPCASECMP
+GNULIB_MBSCASESTR
+GNULIB_MBSCSPN
+GNULIB_MBSPBRK
+GNULIB_MBSSPN
+GNULIB_MBSSEP
+GNULIB_MBSTOK_R
+HAVE_DECL_MEMMEM
+HAVE_MEMPCPY
+HAVE_DECL_MEMRCHR
+HAVE_STPCPY
+HAVE_STPNCPY
+HAVE_STRCASECMP
+HAVE_DECL_STRNCASECMP
+HAVE_STRCHRNUL
+HAVE_DECL_STRDUP
+HAVE_STRNDUP
+HAVE_DECL_STRNDUP
+HAVE_DECL_STRNLEN
+HAVE_STRPBRK
+HAVE_STRSEP
+HAVE_STRCASESTR
+HAVE_DECL_STRTOK_R
+GNULIB_GETSUBOPT
+GNULIB_MKDTEMP
+GNULIB_MKSTEMP
+HAVE_GETSUBOPT
+HAVE_MKDTEMP
+REPLACE_MKSTEMP
+REPLACE_LOCALTIME_R
+REPLACE_NANOSLEEP
+REPLACE_STRPTIME
+REPLACE_TIMEGM
+LIB_NANOSLEEP
+ABSOLUTE_NETINET_IN_H
+HAVE_NETINET_IN_H
+NETINET_IN_H
+PERL
+DEFAULT_POSIX2_VERSION
+GNULIB_FPRINTF_POSIX
+GNULIB_PRINTF_POSIX
+GNULIB_SNPRINTF
+GNULIB_SPRINTF_POSIX
+GNULIB_VFPRINTF_POSIX
+GNULIB_VPRINTF_POSIX
+GNULIB_VSNPRINTF
+GNULIB_VSPRINTF_POSIX
+REPLACE_FPRINTF
+REPLACE_VFPRINTF
+REPLACE_PRINTF
+REPLACE_VPRINTF
+REPLACE_SNPRINTF
+HAVE_DECL_SNPRINTF
+REPLACE_VSNPRINTF
+HAVE_DECL_VSNPRINTF
+REPLACE_SPRINTF
+REPLACE_VSPRINTF
+ABSOLUTE_STDIO_H
+ABSOLUTE_STDLIB_H
+ABSOLUTE_STRING_H
+POW_LIB
+ABSOLUTE_SYS_STAT_H
+SYS_STAT_H
+ABSOLUTE_TIME_H
+TIME_H_DEFINES_STRUCT_TIMESPEC
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC
+HAVE_UNISTD_H
+ABSOLUTE_UNISTD_H
+EOVERFLOW
+ABSOLUTE_WCHAR_H
+WCHAR_H
+HAVE_WINT_T
+ABSOLUTE_WCTYPE_H
+HAVE_WCTYPE_H
+WCTYPE_H
+LIBCOREUTILS_LIBDEPS
+LIBCOREUTILS_LTLIBDEPS
+GNU_PACKAGE
+HELP2MAN
+OPTIONAL_BIN_PROGS
+MAN
+DF_PROG
+U
+ANSI2KNR
+LIBOBJS
+LIB_FDATASYNC
+SEQ_LIBM
+LIB_CRYPT
+USE_NLS
+MSGFMT
+GMSGFMT
+MSGFMT_015
+GMSGFMT_015
+XGETTEXT
+XGETTEXT_015
+MSGMERGE
+INTL_MACOSX_LIBS
+INTLLIBS
+LIBINTL
+LTLIBINTL
+POSUB
+LTLIBOBJS
+gl_LIBOBJS
+gl_LTLIBOBJS'
+ac_subst_files=''
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP
+YACC
+YFLAGS
+DEFAULT_POSIX2_VERSION'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+ { (exit 1); exit 1; }; }
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-.]/_/g'`
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+ { (exit 1); exit 1; }; }
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-.]/_/g'`
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+ { (exit 1); exit 1; }; }
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-.]/_/g'`
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+ { (exit 1); exit 1; }; }
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-.]/_/g'`
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) { $as_echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; }
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ { $as_echo "$as_me: error: missing argument to $ac_option" >&2
+ { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute directory names.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; }
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ { $as_echo "$as_me: error: Working directory cannot be determined" >&2
+ { (exit 1); exit 1; }; }
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
+ { (exit 1); exit 1; }; }
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$0" ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$0" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+ { (exit 1); exit 1; }; }
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
+ { (exit 1); exit 1; }; }
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures GNU coreutils 6.9 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/coreutils]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of GNU coreutils 6.9:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --disable-assert turn off assertions
+ --disable-rpath do not hardcode runtime library paths
+ --disable-largefile omit support for large files
+ --disable-nls do not use Native Language Support
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-gnu-ld assume the C compiler uses GNU ld default=no
+ --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
+ --without-libiconv-prefix don't search for libiconv in includedir and libdir
+ --without-included-regex
+ don't compile regex; this is the default on 32-bit
+ systems with recent-enough versions of the GNU C
+ Library (use with caution on other systems). On
+ systems with 64-bit ptrdiff_t and 32-bit int,
+ --with-included-regex is the default, in case regex
+ functions operate on very long strings (>2GB)
+ --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib
+ --without-libintl-prefix don't search for libintl in includedir and libdir
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+ YACC The `Yet Another C Compiler' implementation to use. Defaults to
+ `bison -y'. Values other than `bison -y' will most likely break
+ on most systems.
+ YFLAGS YFLAGS contains the list arguments that will be passed by
+ default to Bison. This script will default YFLAGS to the empty
+ string to avoid a default value of `-d' given by some make
+ applications.
+ DEFAULT_POSIX2_VERSION
+ POSIX version to default to; see 'config.hin'.
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <bug-coreutils@gnu.org>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" || continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+GNU coreutils configure 6.9
+generated by GNU Autoconf 2.61a
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by GNU coreutils $as_me 6.9, which was
+generated by GNU Autoconf 2.61a. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+ 2)
+ ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ ac_configure_args="$ac_configure_args '$ac_arg'"
+ ;;
+ esac
+ done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+$as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) $as_unset $ac_var ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -n "$CONFIG_SITE"; then
+ set x "$CONFIG_SITE"
+elif test "x$prefix" != xNONE; then
+ set x "$prefix/share/config.site" "$prefix/etc/config.site"
+else
+ set x "$ac_default_prefix/share/config.site" \
+ "$ac_default_prefix/etc/config.site"
+fi
+shift
+for ac_site_file
+do
+ if test -r "$ac_site_file"; then
+ { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special
+ # files actually), so we avoid doing that.
+ if test -f "$cache_file"; then
+ { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+ac_header_list="$ac_header_list arpa/inet.h"
+ac_func_list="$ac_func_list pathconf"
+ac_header_list="$ac_header_list sys/param.h"
+ac_func_list="$ac_func_list canonicalize_file_name"
+ac_func_list="$ac_func_list resolvepath"
+ac_func_list="$ac_func_list dup2"
+ac_header_list="$ac_header_list libgen.h"
+ac_func_list="$ac_func_list fchdir"
+ac_header_list="$ac_header_list dirent.h"
+ac_header_list="$ac_header_list fcntl.h"
+ac_func_list="$ac_func_list mempcpy"
+ac_func_list="$ac_func_list btowc"
+ac_func_list="$ac_func_list iswctype"
+ac_func_list="$ac_func_list mbsrtowcs"
+ac_func_list="$ac_func_list wmemchr"
+ac_func_list="$ac_func_list wmemcpy"
+ac_func_list="$ac_func_list wmempcpy"
+ac_header_list="$ac_header_list wctype.h"
+ac_header_list="$ac_header_list stdio_ext.h"
+ac_header_list="$ac_header_list sys/vfs.h"
+ac_header_list="$ac_header_list sys/fs_types.h"
+ac_func_list="$ac_func_list ftruncate"
+ac_func_list="$ac_func_list lchmod"
+ac_func_list="$ac_func_list fdopendir"
+ac_header_list="$ac_header_list sys/socket.h"
+ac_header_list="$ac_header_list netinet/in.h"
+ac_header_list="$ac_header_list netdb.h"
+ac_func_list="$ac_func_list microuptime"
+ac_func_list="$ac_func_list nanouptime"
+ac_header_list="$ac_header_list termios.h"
+ac_func_list="$ac_func_list __fsetlocking"
+ac_func_list="$ac_func_list tcgetattr"
+ac_func_list="$ac_func_list tcsetattr"
+ac_func_list="$ac_func_list gettimeofday"
+ac_func_list="$ac_func_list nanotime"
+ac_header_list="$ac_header_list sys/time.h"
+ac_header_list="$ac_header_list stdint.h"
+ac_header_list="$ac_header_list inttypes.h"
+ac_header_list="$ac_header_list wchar.h"
+ac_func_list="$ac_func_list isascii"
+ac_func_list="$ac_func_list mbsinit"
+ac_header_list="$ac_header_list unistd.h"
+ac_func_list="$ac_func_list fchmod"
+ac_func_list="$ac_func_list alarm"
+ac_header_list="$ac_header_list sys/statvfs.h"
+ac_func_list="$ac_func_list siginterrupt"
+ac_header_list="$ac_header_list sys/select.h"
+ac_func_list="$ac_func_list readlink"
+ac_header_list="$ac_header_list utmp.h"
+ac_header_list="$ac_header_list utmpx.h"
+ac_func_list="$ac_func_list utmpname"
+ac_func_list="$ac_func_list utmpxname"
+ac_header_list="$ac_header_list locale.h"
+ac_func_list="$ac_func_list mbrtowc"
+ac_func_list="$ac_func_list wcrtomb"
+ac_func_list="$ac_func_list wcscoll"
+ac_func_list="$ac_func_list setenv"
+ac_func_list="$ac_func_list settimeofday"
+ac_func_list="$ac_func_list stime"
+ac_header_list="$ac_header_list stdio.h"
+ac_header_list="$ac_header_list stdlib.h"
+ac_func_list="$ac_func_list mblen"
+ac_func_list="$ac_func_list mbrlen"
+ac_func_list="$ac_func_list tzset"
+ac_header_list="$ac_header_list string.h"
+ac_func_list="$ac_func_list lstat"
+ac_header_list="$ac_header_list sys/stat.h"
+ac_header_list="$ac_header_list time.h"
+ac_func_list="$ac_func_list pipe"
+ac_header_list="$ac_header_list priv.h"
+ac_header_list="$ac_header_list utime.h"
+ac_func_list="$ac_func_list futimes"
+ac_func_list="$ac_func_list futimesat"
+ac_func_list="$ac_func_list vasnprintf"
+ac_func_list="$ac_func_list iswcntrl"
+ac_func_list="$ac_func_list wcwidth"
+ac_header_list="$ac_header_list hurd.h"
+ac_header_list="$ac_header_list paths.h"
+ac_header_list="$ac_header_list stropts.h"
+ac_header_list="$ac_header_list sys/ioctl.h"
+ac_header_list="$ac_header_list sys/resource.h"
+ac_header_list="$ac_header_list sys/systeminfo.h"
+ac_header_list="$ac_header_list sys/wait.h"
+ac_header_list="$ac_header_list syslog.h"
+ac_header_list="$ac_header_list grp.h"
+ac_header_list="$ac_header_list pwd.h"
+ac_func_list="$ac_func_list strxfrm"
+ac_func_list="$ac_func_list directio"
+ac_func_list="$ac_func_list endgrent"
+ac_func_list="$ac_func_list endpwent"
+ac_func_list="$ac_func_list fchown"
+ac_func_list="$ac_func_list iswspace"
+ac_func_list="$ac_func_list mkfifo"
+ac_func_list="$ac_func_list setgroups"
+ac_func_list="$ac_func_list sethostname"
+ac_func_list="$ac_func_list sync"
+ac_func_list="$ac_func_list sysctl"
+ac_func_list="$ac_func_list sysinfo"
+ac_func_list="$ac_func_list tcgetpgrp"
+ac_header_list="$ac_header_list OS.h"
+gt_needs="$gt_needs need-formatstring-macros"
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ { $as_echo "$as_me:$LINENO: former value: $ac_old_val" >&5
+$as_echo "$as_me: former value: $ac_old_val" >&2;}
+ { $as_echo "$as_me:$LINENO: current value: $ac_new_val" >&5
+$as_echo "$as_me: current value: $ac_new_val" >&2;}
+ ac_cache_corrupted=:
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+ac_aux_dir=
+for ac_dir in build-aux "$srcdir"/build-aux; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in build-aux \"$srcdir\"/build-aux" >&5
+$as_echo "$as_me: error: cannot find install-sh or install.sh in build-aux \"$srcdir\"/build-aux" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+ac_config_headers="$ac_config_headers lib/config.h:lib/config.hin"
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
+$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
+ { (exit 1); exit 1; }; }
+
+{ $as_echo "$as_me:$LINENO: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if test "${ac_cv_build+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+ { (exit 1); exit 1; }; }
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
+$as_echo "$as_me: error: invalid value of canonical build" >&2;}
+ { (exit 1); exit 1; }; };;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:$LINENO: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if test "${ac_cv_host+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
+$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
+$as_echo "$as_me: error: invalid value of canonical host" >&2;}
+ { (exit 1); exit 1; }; };;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: autobuild project... ${PACKAGE_NAME:-$PACKAGE}" >&5
+$as_echo "$as_me: autobuild project... ${PACKAGE_NAME:-$PACKAGE}" >&6;}
+ { $as_echo "$as_me:$LINENO: autobuild revision... ${PACKAGE_VERSION:-$VERSION}" >&5
+$as_echo "$as_me: autobuild revision... ${PACKAGE_VERSION:-$VERSION}" >&6;}
+ hostname=`hostname`
+ if test "$hostname"; then
+ { $as_echo "$as_me:$LINENO: autobuild hostname... $hostname" >&5
+$as_echo "$as_me: autobuild hostname... $hostname" >&6;}
+ fi
+
+ date=`date +%Y%m%d-%H%M%S`
+ if test "$?" != 0; then
+ date=`date`
+ fi
+ if test "$date"; then
+ { $as_echo "$as_me:$LINENO: autobuild timestamp... $date" >&5
+$as_echo "$as_me: autobuild timestamp... $date" >&6;}
+ fi
+
+am__api_version='1.10'
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+ ./ | .// | /cC/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+done
+IFS=$as_save_IFS
+
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&5
+$as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+$as_echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+done
+IFS=$as_save_IFS
+
+fi
+
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ test -d ./--version && rmdir ./--version
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+ [\\/$]* | ?:[\\/]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:$LINENO: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='coreutils'
+ VERSION='6.9'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+ am__include=include
+ am__quote=
+ _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ fi
+fi
+
+
+{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+ enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compiler --version >&5") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compiler -v >&5") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compiler -V >&5") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+#
+# List of possible output files, starting from the most likely.
+# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
+# only as a last resort. b.out is created by i960 compilers.
+ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
+#
+# The IRIX 6 linker writes into existing files which may not be
+# executable, retaining their permissions. Remove them first so a
+# subsequent execution test works.
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { (ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+
+{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+if test -z "$ac_file"; then
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_compiler_gnu=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ CFLAGS=""
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ :
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_c89=$ac_arg
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+ case $ac_cv_prog_cc_stdc in
+ no) ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;;
+ *) { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C99" >&5
+$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
+if test "${ac_cv_prog_cc_c99+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include <stdio.h>
+
+// Check varargs macros. These examples are taken from C99 6.10.3.5.
+#define debug(...) fprintf (stderr, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+ int x = 1234;
+ int y = 5678;
+ debug ("Flag");
+ debug ("X = %d\n", x);
+ showlist (The first, second, and third items.);
+ report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+ your preprocessor is broken;
+#endif
+#if BIG_OK
+#else
+ your preprocessor is broken;
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+ int datasize;
+ double data[];
+};
+
+struct named_init {
+ int number;
+ const wchar_t *name;
+ double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+ // See if C++-style comments work.
+ // Iterate through items via the restricted pointer.
+ // Also check for declarations in for loops.
+ for (unsigned int i = 0; *(text+i) != '\0'; ++i)
+ continue;
+ return 0;
+}
+
+// Check varargs and va_copy.
+static void
+test_varargs (const char *format, ...)
+{
+ va_list args;
+ va_start (args, format);
+ va_list args_copy;
+ va_copy (args_copy, args);
+
+ const char *str;
+ int number;
+ float fnumber;
+
+ while (*format)
+ {
+ switch (*format++)
+ {
+ case 's': // string
+ str = va_arg (args_copy, const char *);
+ break;
+ case 'd': // int
+ number = va_arg (args_copy, int);
+ break;
+ case 'f': // float
+ fnumber = va_arg (args_copy, double);
+ break;
+ default:
+ break;
+ }
+ }
+ va_end (args_copy);
+ va_end (args);
+}
+
+int
+main ()
+{
+
+ // Check bool.
+ _Bool success = false;
+
+ // Check restrict.
+ if (test_restrict ("String literal") == 0)
+ success = true;
+ char *restrict newvar = "Another string";
+
+ // Check varargs.
+ test_varargs ("s, d' f .", "string", 65, 34.234);
+ test_varargs_macros ();
+
+ // Check flexible array members.
+ struct incomplete_array *ia =
+ malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+ ia->datasize = 10;
+ for (int i = 0; i < ia->datasize; ++i)
+ ia->data[i] = i * 1.234;
+
+ // Check named initializers.
+ struct named_init ni = {
+ .number = 34,
+ .name = L"Test wide string",
+ .average = 543.34343,
+ };
+
+ ni.number = 58;
+
+ int dynamic_array[ni.number];
+ dynamic_array[ni.number - 1] = 543;
+
+ // work around unused variable warnings
+ return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
+ || dynamic_array[ni.number - 1] != 543);
+
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -std=gnu99 -c99 -xc99=all -qlanglvl=extc99
+do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_c99=$ac_arg
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c99" in
+ x)
+ { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c99"
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c99" >&5
+$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c99" != xno; then
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+else
+ { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_c89=$ac_arg
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+else
+ ac_cv_prog_cc_stdc=no
+fi
+
+
+fi
+
+ ;;
+esac
+ { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO Standard C" >&5
+$as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; }
+ if test "${ac_cv_prog_cc_stdc+set}" = set; then
+ $as_echo_n "(cached) " >&6
+fi
+
+ case $ac_cv_prog_cc_stdc in
+ no) { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ '') { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ *) { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+$as_echo "$ac_cv_prog_cc_stdc" >&6; } ;;
+esac
+
+
+if test "x$CC" != xcc; then
+ { $as_echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5
+$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
+else
+ { $as_echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5
+$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
+fi
+set dummy $CC; ac_cc=`$as_echo "$2" |
+ sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+# Make sure it works both with $CC and with simple cc.
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+rm -f conftest2.*
+if { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ test -f conftest2.$ac_objext && { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); };
+then
+ eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+ if test "x$CC" != xcc; then
+ # Test first that cc exists at all.
+ if { ac_try='cc -c conftest.$ac_ext >&5'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+ rm -f conftest2.*
+ if { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ test -f conftest2.$ac_objext && { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); };
+ then
+ # cc works too.
+ :
+ else
+ # cc exists but doesn't like -o.
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
+ fi
+ fi
+ fi
+else
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
+fi
+rm -f core conftest*
+
+fi
+if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_MINUS_C_MINUS_O 1
+_ACEOF
+
+fi
+
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+ac_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if test "${ac_cv_prog_CPP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ :
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ # Broken: success on invalid input.
+continue
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:$LINENO: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ :
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ # Broken: success on invalid input.
+continue
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ # Extract the first word of "grep ggrep" to use in msg output
+if test -z "$GREP"; then
+set dummy grep ggrep; ac_prog_name=$2
+if test "${ac_cv_path_GREP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_path_GREP_found=false
+# Loop through the user's path and test for each of PROGNAME-LIST
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+ # Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ ac_count=`expr $ac_count + 1`
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+
+ $ac_path_GREP_found && break 3
+ done
+done
+
+done
+IFS=$as_save_IFS
+
+
+fi
+
+GREP="$ac_cv_path_GREP"
+if test -z "$GREP"; then
+ { { $as_echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ # Extract the first word of "egrep" to use in msg output
+if test -z "$EGREP"; then
+set dummy egrep; ac_prog_name=$2
+if test "${ac_cv_path_EGREP+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_path_EGREP_found=false
+# Loop through the user's path and test for each of PROGNAME-LIST
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+ # Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ ac_count=`expr $ac_count + 1`
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+
+ $ac_path_EGREP_found && break 3
+ done
+done
+
+done
+IFS=$as_save_IFS
+
+
+fi
+
+EGREP="$ac_cv_path_EGREP"
+if test -z "$EGREP"; then
+ { { $as_echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+if test $ac_cv_c_compiler_gnu = yes; then
+ { $as_echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5
+$as_echo_n "checking whether $CC needs -traditional... " >&6; }
+if test "${ac_cv_prog_gcc_traditional+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_pattern="Autoconf.*'x'"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sgtty.h>
+Autoconf TIOCGETP
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "$ac_pattern" >/dev/null 2>&1; then
+ ac_cv_prog_gcc_traditional=yes
+else
+ ac_cv_prog_gcc_traditional=no
+fi
+rm -f conftest*
+
+
+ if test $ac_cv_prog_gcc_traditional = no; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <termio.h>
+Autoconf TCGETA
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "$ac_pattern" >/dev/null 2>&1; then
+ ac_cv_prog_gcc_traditional=yes
+fi
+rm -f conftest*
+
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5
+$as_echo "$ac_cv_prog_gcc_traditional" >&6; }
+ if test $ac_cv_prog_gcc_traditional = yes; then
+ CC="$CC -traditional"
+ fi
+fi
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+{ $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+
+cat >>confdefs.h <<\_ACEOF
+#define _GNU_SOURCE 1
+_ACEOF
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for AIX" >&5
+$as_echo_n "checking for AIX... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef _AIX
+ yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+cat >>confdefs.h <<\_ACEOF
+#define _ALL_SOURCE 1
+_ACEOF
+
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f conftest*
+
+
+{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_header_stdc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_header_stdc=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ return 2;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+if test "${ac_cv_header_minix_config_h+set}" = set; then
+ { $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5
+$as_echo_n "checking for minix/config.h... " >&6; }
+if test "${ac_cv_header_minix_config_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
+$as_echo "$ac_cv_header_minix_config_h" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking minix/config.h usability" >&5
+$as_echo_n "checking minix/config.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <minix/config.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking minix/config.h presence" >&5
+$as_echo_n "checking minix/config.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <minix/config.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5
+$as_echo_n "checking for minix/config.h... " >&6; }
+if test "${ac_cv_header_minix_config_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_header_minix_config_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
+$as_echo "$ac_cv_header_minix_config_h" >&6; }
+
+fi
+if test $ac_cv_header_minix_config_h = yes; then
+ MINIX=yes
+else
+ MINIX=
+fi
+
+
+if test "$MINIX" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define _POSIX_SOURCE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define _POSIX_1_SOURCE 2
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define _MINIX 1
+_ACEOF
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether it is safe to define __EXTENSIONS__" >&5
+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if test "${ac_cv_safe_to_define___extensions__+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+# define __EXTENSIONS__ 1
+ $ac_includes_default
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_safe_to_define___extensions__=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_safe_to_define___extensions__=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_safe_to_define___extensions__" >&5
+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+ test $ac_cv_safe_to_define___extensions__ = yes &&
+ cat >>confdefs.h <<\_ACEOF
+#define __EXTENSIONS__ 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define _POSIX_PTHREAD_SEMANTICS 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define _TANDEM_SOURCE 1
+_ACEOF
+
+
+
+
+
+
+
+
+
+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments. Useless!
+{ $as_echo "$as_me:$LINENO: checking for working alloca.h" >&5
+$as_echo_n "checking for working alloca.h... " >&6; }
+if test "${ac_cv_working_alloca_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <alloca.h>
+int
+main ()
+{
+char *p = (char *) alloca (2 * sizeof (int));
+ if (p) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_working_alloca_h=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_working_alloca_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
+$as_echo "$ac_cv_working_alloca_h" >&6; }
+if test $ac_cv_working_alloca_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA_H 1
+_ACEOF
+
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for alloca" >&5
+$as_echo_n "checking for alloca... " >&6; }
+if test "${ac_cv_func_alloca_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# ifdef _MSC_VER
+# include <malloc.h>
+# define alloca _alloca
+# else
+# ifdef HAVE_ALLOCA_H
+# include <alloca.h>
+# else
+# ifdef _AIX
+ #pragma alloca
+# else
+# ifndef alloca /* predefined by HP cc +Olibcalls */
+char *alloca ();
+# endif
+# endif
+# endif
+# endif
+#endif
+
+int
+main ()
+{
+char *p = (char *) alloca (1);
+ if (p) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_alloca_works=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_alloca_works=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
+$as_echo "$ac_cv_func_alloca_works" >&6; }
+
+if test $ac_cv_func_alloca_works = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA 1
+_ACEOF
+
+else
+ # The SVR3 libPW and SVR4 libucb both contain incompatible functions
+# that cause trouble. Some versions do not even contain alloca or
+# contain a buggy version. If you still want to use their alloca,
+# use ar to extract alloca.o from them instead of compiling alloca.c.
+
+ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
+
+cat >>confdefs.h <<\_ACEOF
+#define C_ALLOCA 1
+_ACEOF
+
+
+{ $as_echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
+$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
+if test "${ac_cv_os_cray+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#if defined CRAY && ! defined CRAY2
+webecray
+#else
+wenotbecray
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "webecray" >/dev/null 2>&1; then
+ ac_cv_os_cray=yes
+else
+ ac_cv_os_cray=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
+$as_echo "$ac_cv_os_cray" >&6; }
+if test $ac_cv_os_cray = yes; then
+ for ac_func in _getb67 GETB67 getb67; do
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define CRAY_STACKSEG_END $ac_func
+_ACEOF
+
+ break
+fi
+
+ done
+fi
+
+{ $as_echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
+$as_echo_n "checking stack direction for C alloca... " >&6; }
+if test "${ac_cv_c_stack_direction+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_c_stack_direction=0
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+find_stack_direction ()
+{
+ static char *addr = 0;
+ auto char dummy;
+ if (addr == 0)
+ {
+ addr = &dummy;
+ return find_stack_direction ();
+ }
+ else
+ return (&dummy > addr) ? 1 : -1;
+}
+
+int
+main ()
+{
+ return find_stack_direction () < 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_c_stack_direction=1
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_c_stack_direction=-1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
+$as_echo "$ac_cv_c_stack_direction" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define STACK_DIRECTION $ac_cv_c_stack_direction
+_ACEOF
+
+
+fi
+
+
+
+for ac_header in stdlib.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+{ $as_echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5
+$as_echo_n "checking for GNU libc compatible malloc... " >&6; }
+if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_malloc_0_nonnull=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#if defined STDC_HEADERS || defined HAVE_STDLIB_H
+# include <stdlib.h>
+#else
+char *malloc ();
+#endif
+
+int
+main ()
+{
+return ! malloc (0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_malloc_0_nonnull=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_malloc_0_nonnull=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_malloc_0_nonnull" >&5
+$as_echo "$ac_cv_func_malloc_0_nonnull" >&6; }
+if test $ac_cv_func_malloc_0_nonnull = yes; then
+ gl_cv_func_malloc_0_nonnull=1
+else
+ gl_cv_func_malloc_0_nonnull=0
+fi
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define MALLOC_0_IS_NONNULL $gl_cv_func_malloc_0_nonnull
+_ACEOF
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for long long int" >&5
+$as_echo_n "checking for long long int... " >&6; }
+if test "${ac_cv_type_long_long_int+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+long long int ll = 9223372036854775807ll;
+ long long int nll = -9223372036854775807LL;
+ typedef int a[((-9223372036854775807LL < 0
+ && 0 < 9223372036854775807ll)
+ ? 1 : -1)];
+ int i = 63;
+int
+main ()
+{
+long long int llmax = 9223372036854775807ll;
+ return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+ | (llmax / ll) | (llmax % ll));
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ if test "$cross_compiling" = yes; then
+ ac_cv_type_long_long_int=yes
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <limits.h>
+ #ifndef LLONG_MAX
+ # define HALF \
+ (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+ # define LLONG_MAX (HALF - 1 + HALF)
+ #endif
+int
+main ()
+{
+long long int n = 1;
+ int i;
+ for (i = 0; ; i++)
+ {
+ long long int m = n << i;
+ if (m >> i != n)
+ return 1;
+ if (LLONG_MAX / 2 < m)
+ break;
+ }
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_long_long_int=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_type_long_long_int=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_long_long_int=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_long_long_int" >&5
+$as_echo "$ac_cv_type_long_long_int" >&6; }
+ if test $ac_cv_type_long_long_int = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LONG_LONG_INT 1
+_ACEOF
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for long double" >&5
+$as_echo_n "checking for long double... " >&6; }
+if test "${gt_cv_c_long_double+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$GCC" = yes; then
+ gt_cv_c_long_double=yes
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* The Stardent Vistra knows sizeof(long double), but does not support it. */
+ long double foo = 0.0;
+ /* On Ultrix 4.3 cc, long double is 4 and double is 8. */
+ int array [2*(sizeof(long double) >= sizeof(double)) - 1];
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_c_long_double=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_c_long_double=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_c_long_double" >&5
+$as_echo "$gt_cv_c_long_double" >&6; }
+ if test $gt_cv_c_long_double = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LONG_DOUBLE 1
+_ACEOF
+
+ fi
+
+
+
+
+
+for ac_header in $ac_header_list
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for d_ino member in directory struct" >&5
+$as_echo_n "checking for d_ino member in directory struct... " >&6; }
+if test "${jm_cv_struct_dirent_d_ino+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#include <dirent.h>
+
+int
+main ()
+{
+struct dirent dp; dp.d_ino = 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ jm_cv_struct_dirent_d_ino=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ jm_cv_struct_dirent_d_ino=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $jm_cv_struct_dirent_d_ino" >&5
+$as_echo "$jm_cv_struct_dirent_d_ino" >&6; }
+ if test $jm_cv_struct_dirent_d_ino = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define D_INO_IN_DIRENT 1
+_ACEOF
+
+ fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether system is Windows or MSDOS" >&5
+$as_echo_n "checking whether system is Windows or MSDOS... " >&6; }
+if test "${ac_cv_win_or_dos+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __CYGWIN__
+neither MSDOS nor Windows
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_win_or_dos=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_win_or_dos=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_win_or_dos" >&5
+$as_echo "$ac_cv_win_or_dos" >&6; }
+
+ if test x"$ac_cv_win_or_dos" = xyes; then
+ ac_fs_accepts_drive_letter_prefix=1
+ ac_fs_backslash_is_file_name_separator=1
+ { $as_echo "$as_me:$LINENO: checking whether drive letter can start relative path" >&5
+$as_echo_n "checking whether drive letter can start relative path... " >&6; }
+if test "${ac_cv_drive_letter_can_be_relative+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#if defined __CYGWIN__
+drive letters are always absolute
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_drive_letter_can_be_relative=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_drive_letter_can_be_relative=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_drive_letter_can_be_relative" >&5
+$as_echo "$ac_cv_drive_letter_can_be_relative" >&6; }
+ if test x"$ac_cv_drive_letter_can_be_relative" = xyes; then
+ ac_fs_drive_letter_can_be_relative=1
+ else
+ ac_fs_drive_letter_can_be_relative=0
+ fi
+ else
+ ac_fs_accepts_drive_letter_prefix=0
+ ac_fs_backslash_is_file_name_separator=0
+ ac_fs_drive_letter_can_be_relative=0
+ fi
+
+
+cat >>confdefs.h <<_ACEOF
+#define FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX $ac_fs_accepts_drive_letter_prefix
+_ACEOF
+
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR $ac_fs_backslash_is_file_name_separator
+_ACEOF
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE $ac_fs_drive_letter_can_be_relative
+_ACEOF
+
+
+{ $as_echo "$as_me:$LINENO: checking for long file names" >&5
+$as_echo_n "checking for long file names... " >&6; }
+if test "${ac_cv_sys_long_file_names+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_sys_long_file_names=yes
+# Test for long file names in all the places we know might matter:
+# . the current directory, where building will happen
+# $prefix/lib where we will be installing things
+# $exec_prefix/lib likewise
+# $TMPDIR if set, where it might want to write temporary files
+# /tmp where it might want to write temporary files
+# /var/tmp likewise
+# /usr/tmp likewise
+for ac_dir in . "$TMPDIR" /tmp /var/tmp /usr/tmp "$prefix/lib" "$exec_prefix/lib"; do
+ # Skip $TMPDIR if it is empty or bogus, and skip $exec_prefix/lib
+ # in the usual case where exec_prefix is '${prefix}'.
+ case $ac_dir in #(
+ . | /* | ?:[\\/]*) ;; #(
+ *) continue;;
+ esac
+ test -w "$ac_dir/." || continue # It is less confusing to not echo anything here.
+ ac_xdir=$ac_dir/cf$$
+ (umask 077 && mkdir "$ac_xdir" 2>/dev/null) || continue
+ ac_tf1=$ac_xdir/conftest9012345
+ ac_tf2=$ac_xdir/conftest9012346
+ touch "$ac_tf1" 2>/dev/null && test -f "$ac_tf1" && test ! -f "$ac_tf2" ||
+ ac_cv_sys_long_file_names=no
+ rm -f -r "$ac_xdir" 2>/dev/null
+ test $ac_cv_sys_long_file_names = no && break
+done
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_long_file_names" >&5
+$as_echo "$ac_cv_sys_long_file_names" >&6; }
+if test $ac_cv_sys_long_file_names = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LONG_FILE_NAMES 1
+_ACEOF
+
+fi
+
+
+
+
+
+for ac_func in $ac_func_list
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if test "${ac_cv_c_inline+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_inline=$ac_kw
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+
+case $ac_cv_c_inline in
+ inline | yes) ;;
+ *)
+ case $ac_cv_c_inline in
+ no) ac_val=;;
+ *) ac_val=$ac_cv_c_inline;;
+ esac
+ cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+ ;;
+esac
+
+{ $as_echo "$as_me:$LINENO: checking for C/C++ restrict keyword" >&5
+$as_echo_n "checking for C/C++ restrict keyword... " >&6; }
+if test "${ac_cv_c_restrict+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_c_restrict=no
+ # Try the official restrict keyword, then gcc's __restrict, and
+ # the less common variants.
+ for ac_kw in restrict __restrict __restrict__ _Restrict; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+typedef int * int_ptr;
+ int foo (int_ptr $ac_kw ip) {
+ return ip[0];
+ }
+int
+main ()
+{
+int s[1];
+ int * $ac_kw t = s;
+ t[0] = 0;
+ return foo(t)
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_restrict=$ac_kw
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test "$ac_cv_c_restrict" != no && break
+ done
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_restrict" >&5
+$as_echo "$ac_cv_c_restrict" >&6; }
+ case $ac_cv_c_restrict in
+ restrict) ;;
+ no)
+cat >>confdefs.h <<\_ACEOF
+#define restrict
+_ACEOF
+ ;;
+ *) cat >>confdefs.h <<_ACEOF
+#define restrict $ac_cv_c_restrict
+_ACEOF
+ ;;
+ esac
+
+
+ { $as_echo "$as_me:$LINENO: checking whether strtold conforms to C99" >&5
+$as_echo_n "checking whether strtold conforms to C99... " >&6; }
+if test "${gl_cv_func_c99_strtold+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* On HP-UX before 11.23, strtold returns a struct instead of
+ long double. Reject implementations like that, by requiring
+ compatibility with the C99 prototype. */
+ #include <stdlib.h>
+ static long double (*p) (char const *, char **) = strtold;
+ static long double
+ test (char const *nptr, char **endptr)
+ {
+ long double r;
+ r = strtold (nptr, endptr);
+ return r;
+ }
+int
+main ()
+{
+return test ("1.0", NULL) != 1 || p ("1.0", NULL) != 1;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ gl_cv_func_c99_strtold=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_c99_strtold=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_c99_strtold" >&5
+$as_echo "$gl_cv_func_c99_strtold" >&6; }
+ if test $gl_cv_func_c99_strtold = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_C99_STRTOLD 1
+_ACEOF
+
+ fi
+
+{ $as_echo "$as_me:$LINENO: checking for size_t" >&5
+$as_echo_n "checking for size_t... " >&6; }
+if test "${ac_cv_type_size_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+typedef size_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_size_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_size_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
+$as_echo "$ac_cv_type_size_t" >&6; }
+if test $ac_cv_type_size_t = yes; then
+ :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+fi
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether canonicalize_file_name is declared" >&5
+$as_echo_n "checking whether canonicalize_file_name is declared... " >&6; }
+if test "${ac_cv_have_decl_canonicalize_file_name+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef canonicalize_file_name
+ (void) canonicalize_file_name;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_canonicalize_file_name=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_canonicalize_file_name=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_canonicalize_file_name" >&5
+$as_echo "$ac_cv_have_decl_canonicalize_file_name" >&6; }
+if test $ac_cv_have_decl_canonicalize_file_name = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CANONICALIZE_FILE_NAME 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CANONICALIZE_FILE_NAME 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+ GNULIB_CHOWN=0;
+ GNULIB_DUP2=0;
+ GNULIB_FCHDIR=0;
+ GNULIB_FTRUNCATE=0;
+ GNULIB_GETCWD=0;
+ GNULIB_GETLOGIN_R=0;
+ GNULIB_READLINK=0;
+ HAVE_DUP2=1;
+ HAVE_FTRUNCATE=1;
+ HAVE_READLINK=1;
+ HAVE_DECL_GETLOGIN_R=1;
+ REPLACE_CHOWN=0;
+ REPLACE_FCHDIR=0;
+ REPLACE_GETCWD=0;
+
+{ $as_echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5
+$as_echo_n "checking for uid_t in sys/types.h... " >&6; }
+if test "${ac_cv_type_uid_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "uid_t" >/dev/null 2>&1; then
+ ac_cv_type_uid_t=yes
+else
+ ac_cv_type_uid_t=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5
+$as_echo "$ac_cv_type_uid_t" >&6; }
+if test $ac_cv_type_uid_t = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define uid_t int
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define gid_t int
+_ACEOF
+
+fi
+
+
+for ac_header in unistd.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+{ $as_echo "$as_me:$LINENO: checking for working chown" >&5
+$as_echo_n "checking for working chown... " >&6; }
+if test "${ac_cv_func_chown_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_chown_works=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <fcntl.h>
+
+int
+main ()
+{
+ char *f = "conftest.chown";
+ struct stat before, after;
+
+ if (creat (f, 0600) < 0)
+ return 1;
+ if (stat (f, &before) < 0)
+ return 1;
+ if (chown (f, (uid_t) -1, (gid_t) -1) == -1)
+ return 1;
+ if (stat (f, &after) < 0)
+ return 1;
+ return ! (before.st_uid == after.st_uid && before.st_gid == after.st_gid);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_chown_works=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_chown_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+rm -f conftest.chown
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_chown_works" >&5
+$as_echo "$ac_cv_func_chown_works" >&6; }
+if test $ac_cv_func_chown_works = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CHOWN 1
+_ACEOF
+
+fi
+
+
+ { $as_echo "$as_me:$LINENO: checking whether chown(2) dereferences symlinks" >&5
+$as_echo_n "checking whether chown(2) dereferences symlinks... " >&6; }
+if test "${gl_cv_func_chown_follows_symlink+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_chown_follows_symlink=yes
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h>
+
+ int
+ main ()
+ {
+ char const *dangling_symlink = "conftest.dangle";
+
+ unlink (dangling_symlink);
+ if (symlink ("conftest.no-such", dangling_symlink))
+ abort ();
+
+ /* Exit successfully on a conforming system,
+ i.e., where chown must fail with ENOENT. */
+ exit ( ! (chown (dangling_symlink, getuid (), getgid ()) != 0
+ && errno == ENOENT));
+ }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_chown_follows_symlink=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_chown_follows_symlink=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_chown_follows_symlink" >&5
+$as_echo "$gl_cv_func_chown_follows_symlink" >&6; }
+
+ if test $gl_cv_func_chown_follows_symlink = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define CHOWN_MODIFIES_SYMLINK 1
+_ACEOF
+
+ fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether // is distinct from /" >&5
+$as_echo_n "checking whether // is distinct from /... " >&6; }
+if test "${gl_cv_double_slash_root+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test x"$cross_compiling" = xyes ; then
+ # When cross-compiling, there is no way to tell whether // is special
+ # short of a list of hosts. However, the only known hosts to date
+ # that have a distinct // are Apollo DomainOS (too old to port to),
+ # Cygwin, and z/OS. If anyone knows of another system for which // has
+ # special semantics and is distinct from /, please report it to
+ # <bug-gnulib@gnu.org>.
+ case $host in
+ *-cygwin | i370-ibm-openedition)
+ gl_cv_double_slash_root=yes ;;
+ *)
+ # Be optimistic and assume that / and // are the same when we
+ # don't know.
+ gl_cv_double_slash_root='unknown, assuming no' ;;
+ esac
+ else
+ set x `ls -di / //`
+ if test $2 = $4 && wc //dev/null >/dev/null 2>&1; then
+ gl_cv_double_slash_root=no
+ else
+ gl_cv_double_slash_root=yes
+ fi
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_double_slash_root" >&5
+$as_echo "$gl_cv_double_slash_root" >&6; }
+ if test "$gl_cv_double_slash_root" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define DOUBLE_SLASH_IS_DISTINCT_ROOT 1
+_ACEOF
+
+ fi
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether strerror_r is declared" >&5
+$as_echo_n "checking whether strerror_r is declared... " >&6; }
+if test "${ac_cv_have_decl_strerror_r+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strerror_r
+ (void) strerror_r;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strerror_r=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_strerror_r=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strerror_r" >&5
+$as_echo "$ac_cv_have_decl_strerror_r" >&6; }
+if test $ac_cv_have_decl_strerror_r = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR_R 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR_R 0
+_ACEOF
+
+
+fi
+
+
+
+for ac_func in strerror_r
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+{ $as_echo "$as_me:$LINENO: checking whether strerror_r returns char *" >&5
+$as_echo_n "checking whether strerror_r returns char *... " >&6; }
+if test "${ac_cv_func_strerror_r_char_p+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ ac_cv_func_strerror_r_char_p=no
+ if test $ac_cv_have_decl_strerror_r = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+ char buf[100];
+ char x = *strerror_r (0, buf, sizeof buf);
+ char *p = strerror_r (0, buf, sizeof buf);
+ return !p || x;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_func_strerror_r_char_p=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ else
+ # strerror_r is not declared. Choose between
+ # systems that have relatively inaccessible declarations for the
+ # function. BeOS and DEC UNIX 4.0 fall in this category, but the
+ # former has a strerror_r that returns char*, while the latter
+ # has a strerror_r that returns `int'.
+ # This test should segfault on the DEC system.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+ extern char *strerror_r ();
+int
+main ()
+{
+char buf[100];
+ char x = *strerror_r (0, buf, sizeof buf);
+ return ! isalpha (x);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_strerror_r_char_p=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_strerror_r_char_p" >&5
+$as_echo "$ac_cv_func_strerror_r_char_p" >&6; }
+if test $ac_cv_func_strerror_r_char_p = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STRERROR_R_CHAR_P 1
+_ACEOF
+
+fi
+
+{ $as_echo "$as_me:$LINENO: checking whether euidaccess is declared" >&5
+$as_echo_n "checking whether euidaccess is declared... " >&6; }
+if test "${ac_cv_have_decl_euidaccess+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef euidaccess
+ (void) euidaccess;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_euidaccess=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_euidaccess=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_euidaccess" >&5
+$as_echo "$ac_cv_have_decl_euidaccess" >&6; }
+if test $ac_cv_have_decl_euidaccess = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_EUIDACCESS 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_EUIDACCESS 0
+_ACEOF
+
+
+fi
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether setregid is declared" >&5
+$as_echo_n "checking whether setregid is declared... " >&6; }
+if test "${ac_cv_have_decl_setregid+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef setregid
+ (void) setregid;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_setregid=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_setregid=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_setregid" >&5
+$as_echo "$ac_cv_have_decl_setregid" >&6; }
+if test $ac_cv_have_decl_setregid = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_SETREGID 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_SETREGID 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking type of array argument to getgroups" >&5
+$as_echo_n "checking type of array argument to getgroups... " >&6; }
+if test "${ac_cv_type_getgroups+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_type_getgroups=cross
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Thanks to Mike Rendell for this test. */
+$ac_includes_default
+#define NGID 256
+#undef MAX
+#define MAX(x, y) ((x) > (y) ? (x) : (y))
+
+int
+main ()
+{
+ gid_t gidset[NGID];
+ int i, n;
+ union { gid_t gval; long int lval; } val;
+
+ val.lval = -1;
+ for (i = 0; i < NGID; i++)
+ gidset[i] = val.gval;
+ n = getgroups (sizeof (gidset) / MAX (sizeof (int), sizeof (gid_t)) - 1,
+ gidset);
+ /* Exit non-zero if getgroups seems to require an array of ints. This
+ happens when gid_t is short int but getgroups modifies an array
+ of ints. */
+ return n > 0 && gidset[n] != val.gval;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_getgroups=gid_t
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_type_getgroups=int
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+if test $ac_cv_type_getgroups = cross; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <unistd.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1; then
+ ac_cv_type_getgroups=gid_t
+else
+ ac_cv_type_getgroups=int
+fi
+rm -f conftest*
+
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_getgroups" >&5
+$as_echo "$ac_cv_type_getgroups" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define GETGROUPS_T $ac_cv_type_getgroups
+_ACEOF
+
+
+{ $as_echo "$as_me:$LINENO: checking for getgroups" >&5
+$as_echo_n "checking for getgroups... " >&6; }
+if test "${ac_cv_func_getgroups+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define getgroups to an innocuous variant, in case <limits.h> declares getgroups.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define getgroups innocuous_getgroups
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char getgroups (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef getgroups
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getgroups ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_getgroups || defined __stub___getgroups
+choke me
+#endif
+
+int
+main ()
+{
+return getgroups ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_getgroups=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_getgroups=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_getgroups" >&5
+$as_echo "$ac_cv_func_getgroups" >&6; }
+
+
+# If we don't yet have getgroups, see if it's in -lbsd.
+# This is reported to be necessary on an ITOS 3000WS running SEIUX 3.1.
+ac_save_LIBS=$LIBS
+if test $ac_cv_func_getgroups = no; then
+ { $as_echo "$as_me:$LINENO: checking for getgroups in -lbsd" >&5
+$as_echo_n "checking for getgroups in -lbsd... " >&6; }
+if test "${ac_cv_lib_bsd_getgroups+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getgroups ();
+int
+main ()
+{
+return getgroups ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_bsd_getgroups=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_bsd_getgroups=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_getgroups" >&5
+$as_echo "$ac_cv_lib_bsd_getgroups" >&6; }
+if test $ac_cv_lib_bsd_getgroups = yes; then
+ GETGROUPS_LIB=-lbsd
+fi
+
+fi
+
+# Run the program to test the functionality of the system-supplied
+# getgroups function only if there is such a function.
+if test $ac_cv_func_getgroups = yes; then
+ { $as_echo "$as_me:$LINENO: checking for working getgroups" >&5
+$as_echo_n "checking for working getgroups... " >&6; }
+if test "${ac_cv_func_getgroups_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_getgroups_works=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+/* On Ultrix 4.3, getgroups (0, 0) always fails. */
+ return getgroups (0, 0) == -1;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_getgroups_works=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_getgroups_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_getgroups_works" >&5
+$as_echo "$ac_cv_func_getgroups_works" >&6; }
+ if test $ac_cv_func_getgroups_works = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_GETGROUPS 1
+_ACEOF
+
+ fi
+fi
+LIBS=$ac_save_LIBS
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for st_dm_mode in struct stat" >&5
+$as_echo_n "checking for st_dm_mode in struct stat... " >&6; }
+if test "${ac_cv_struct_st_dm_mode+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <sys/stat.h>
+int
+main ()
+{
+struct stat s; s.st_dm_mode;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_struct_st_dm_mode=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_struct_st_dm_mode=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_struct_st_dm_mode" >&5
+$as_echo "$ac_cv_struct_st_dm_mode" >&6; }
+
+ if test $ac_cv_struct_st_dm_mode = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ST_DM_MODE 1
+_ACEOF
+
+ fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether strmode is declared" >&5
+$as_echo_n "checking whether strmode is declared... " >&6; }
+if test "${ac_cv_have_decl_strmode+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strmode
+ (void) strmode;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strmode=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_strmode=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strmode" >&5
+$as_echo "$ac_cv_have_decl_strmode" >&6; }
+if test $ac_cv_have_decl_strmode = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRMODE 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRMODE 0
+_ACEOF
+
+
+fi
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for mbstate_t" >&5
+$as_echo_n "checking for mbstate_t... " >&6; }
+if test "${ac_cv_type_mbstate_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+# include <wchar.h>
+int
+main ()
+{
+mbstate_t x; return sizeof x;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_mbstate_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_mbstate_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_mbstate_t" >&5
+$as_echo "$ac_cv_type_mbstate_t" >&6; }
+ if test $ac_cv_type_mbstate_t = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MBSTATE_T 1
+_ACEOF
+
+ else
+
+cat >>confdefs.h <<\_ACEOF
+#define mbstate_t int
+_ACEOF
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether <sys/socket.h> is self-contained" >&5
+$as_echo_n "checking whether <sys/socket.h> is self-contained... " >&6; }
+if test "${gl_cv_header_sys_socket_h_selfcontained+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/socket.h>
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_header_sys_socket_h_selfcontained=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_header_sys_socket_h_selfcontained=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_sys_socket_h_selfcontained" >&5
+$as_echo "$gl_cv_header_sys_socket_h_selfcontained" >&6; }
+ if test $gl_cv_header_sys_socket_h_selfcontained = yes; then
+ SYS_SOCKET_H=''
+ else
+ SYS_SOCKET_H='sys/socket.h'
+
+
+for ac_header in sys/socket.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ { $as_echo "$as_me:$LINENO: checking absolute name of <sys/socket.h>" >&5
+$as_echo_n "checking absolute name of <sys/socket.h>... " >&6; }
+if test "${gl_cv_absolute_sys_socket_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_sys_socket_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/socket.h>
+_ACEOF
+ gl_cv_absolute_sys_socket_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/sys/socket.h#{s#.*"\(.*/sys/socket.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_absolute_sys_socket_h" >&5
+$as_echo "$gl_cv_absolute_sys_socket_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_SYS_SOCKET_H "$gl_cv_absolute_sys_socket_h"
+_ACEOF
+
+
+ ABSOLUTE_SYS_SOCKET_H=\"$gl_cv_absolute_sys_socket_h\"
+
+ if test $ac_cv_header_sys_socket_h = yes; then
+ HAVE_SYS_SOCKET_H=1
+ HAVE_WINSOCK2_H=0
+ HAVE_WS2TCPIP_H=0
+ else
+ HAVE_SYS_SOCKET_H=0
+
+
+for ac_header in winsock2.h ws2tcpip.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ if test $ac_cv_header_winsock2_h = yes; then
+ HAVE_WINSOCK2_H=1
+ else
+ HAVE_WINSOCK2_H=0
+ fi
+ if test $ac_cv_header_ws2tcpip_h = yes; then
+ HAVE_WS2TCPIP_H=1
+ else
+ HAVE_WS2TCPIP_H=0
+ fi
+ fi
+
+
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for IPv4 sockets" >&5
+$as_echo_n "checking for IPv4 sockets... " >&6; }
+ if test "${gl_cv_socket_ipv4+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
+int
+main ()
+{
+int x = AF_INET; struct in_addr y; struct sockaddr_in z;
+ if (&x && &y && &z) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_socket_ipv4=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_socket_ipv4=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $gl_cv_socket_ipv4" >&5
+$as_echo "$gl_cv_socket_ipv4" >&6; }
+ if test $gl_cv_socket_ipv4 = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_IPV4 1
+_ACEOF
+
+ fi
+
+ { $as_echo "$as_me:$LINENO: checking for IPv6 sockets" >&5
+$as_echo_n "checking for IPv6 sockets... " >&6; }
+ if test "${gl_cv_socket_ipv6+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
+int
+main ()
+{
+int x = AF_INET6; struct in6_addr y; struct sockaddr_in6 z;
+ if (&x && &y && &z) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_socket_ipv6=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_socket_ipv6=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $gl_cv_socket_ipv6" >&5
+$as_echo "$gl_cv_socket_ipv6" >&6; }
+ if test $gl_cv_socket_ipv6 = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_IPV6 1
+_ACEOF
+
+ fi
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether getcwd (NULL, 0) allocates memory for result" >&5
+$as_echo_n "checking whether getcwd (NULL, 0) allocates memory for result... " >&6; }
+if test "${gl_cv_func_getcwd_null+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_getcwd_null=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+# include <stdlib.h>
+# include <unistd.h>
+# ifndef getcwd
+ char *getcwd ();
+# endif
+ int
+ main ()
+ {
+ if (chdir ("/") != 0)
+ exit (1);
+ else
+ {
+ char *f = getcwd (NULL, 0);
+ exit (! (f && f[0] == '/' && !f[1]));
+ }
+ }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_getcwd_null=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_getcwd_null=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_getcwd_null" >&5
+$as_echo "$gl_cv_func_getcwd_null" >&6; }
+
+{ $as_echo "$as_me:$LINENO: checking whether getcwd is declared" >&5
+$as_echo_n "checking whether getcwd is declared... " >&6; }
+if test "${ac_cv_have_decl_getcwd+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getcwd
+ (void) getcwd;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getcwd=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_getcwd=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getcwd" >&5
+$as_echo "$ac_cv_have_decl_getcwd" >&6; }
+if test $ac_cv_have_decl_getcwd = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETCWD 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETCWD 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if test "${ac_cv_header_stdbool_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <stdbool.h>
+ #ifndef bool
+ "error: bool is not defined"
+ #endif
+ #ifndef false
+ "error: false is not defined"
+ #endif
+ #if false
+ "error: false is not 0"
+ #endif
+ #ifndef true
+ "error: true is not defined"
+ #endif
+ #if true != 1
+ "error: true is not 1"
+ #endif
+ #ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+ #endif
+
+ struct s { _Bool s: 1; _Bool t; } s;
+
+ char a[true == 1 ? 1 : -1];
+ char b[false == 0 ? 1 : -1];
+ char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+ char d[(bool) 0.5 == true ? 1 : -1];
+ bool e = &s;
+ char f[(_Bool) 0.0 == false ? 1 : -1];
+ char g[true];
+ char h[sizeof (_Bool)];
+ char i[sizeof s.t];
+ enum { j = false, k = true, l = false * true, m = true * 256 };
+ _Bool n[m];
+ char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+ char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+ #if defined __xlc__ || defined __GNUC__
+ /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
+ reported by James Lemley on 2005-10-05; see
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+ This test is not quite right, since xlc is allowed to
+ reject this program, as the initializer for xlcbug is
+ not one of the forms that C requires support for.
+ However, doing the test right would require a run-time
+ test, and that would make cross-compilation harder.
+ Let us hope that IBM fixes the xlc bug, and also adds
+ support for this kind of constant expression. In the
+ meantime, this test will reject xlc, which is OK, since
+ our stdbool.h substitute should suffice. We also test
+ this with GCC, where it should work, to detect more
+ quickly whether someone messes up the test in the
+ future. */
+ char digs[] = "0123456789";
+ int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
+ #endif
+ /* Catch a bug in an HP-UX C compiler. See
+ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ */
+ _Bool q = true;
+ _Bool *pq = &q;
+
+int
+main ()
+{
+
+ *pq |= q;
+ *pq |= ! q;
+ /* Refer to every declared value, to avoid compiler optimizations. */
+ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+ + !m + !n + !o + !p + !q + !pq);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_header_stdbool_h=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_header_stdbool_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+ { $as_echo "$as_me:$LINENO: checking for _Bool" >&5
+$as_echo_n "checking for _Bool... " >&6; }
+if test "${ac_cv_type__Bool+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+typedef _Bool ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type__Bool=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type__Bool=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type__Bool" >&5
+$as_echo "$ac_cv_type__Bool" >&6; }
+if test $ac_cv_type__Bool = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+ if test $ac_cv_header_stdbool_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STDBOOL_H 1
+_ACEOF
+
+ fi
+
+
+
+ # Define two additional variables used in the Makefile substitution.
+
+ if test "$ac_cv_header_stdbool_h" = yes; then
+ STDBOOL_H=''
+ else
+ STDBOOL_H='stdbool.h'
+ fi
+
+
+ if test "$ac_cv_type__Bool" = yes; then
+ HAVE__BOOL=1
+ else
+ HAVE__BOOL=0
+ fi
+
+
+
+
+
+
+ # getdate.y works with bison only.
+ : ${YACC='bison -y'}
+
+
+ { $as_echo "$as_me:$LINENO: checking for compound literals" >&5
+$as_echo_n "checking for compound literals... " >&6; }
+if test "${gl_cv_compound_literals+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+struct s { int i, j; }; struct s s = (struct s) { 1, 2 };
+int
+main ()
+{
+struct s t = (struct s) { 3, 4 };
+ if (t.i != 0) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_compound_literals=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_compound_literals=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_compound_literals" >&5
+$as_echo "$gl_cv_compound_literals" >&6; }
+ if test $gl_cv_compound_literals = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_COMPOUND_LITERALS 1
+_ACEOF
+
+ fi
+
+{ $as_echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5
+$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
+if test "${ac_cv_struct_tm+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <time.h>
+
+int
+main ()
+{
+struct tm tm;
+ int *p = &tm.tm_sec;
+ return !p;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_struct_tm=time.h
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_struct_tm=sys/time.h
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5
+$as_echo "$ac_cv_struct_tm" >&6; }
+if test $ac_cv_struct_tm = sys/time.h; then
+
+cat >>confdefs.h <<\_ACEOF
+#define TM_IN_SYS_TIME 1
+_ACEOF
+
+fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for struct tm.tm_gmtoff" >&5
+$as_echo_n "checking for struct tm.tm_gmtoff... " >&6; }
+if test "${ac_cv_member_struct_tm_tm_gmtoff+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <time.h>
+
+int
+main ()
+{
+static struct tm ac_aggr;
+if (ac_aggr.tm_gmtoff)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_tm_tm_gmtoff=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <time.h>
+
+int
+main ()
+{
+static struct tm ac_aggr;
+if (sizeof ac_aggr.tm_gmtoff)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_tm_tm_gmtoff=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_tm_tm_gmtoff=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_gmtoff" >&5
+$as_echo "$ac_cv_member_struct_tm_tm_gmtoff" >&6; }
+if test $ac_cv_member_struct_tm_tm_gmtoff = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_TM_GMTOFF 1
+_ACEOF
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether getdelim is declared" >&5
+$as_echo_n "checking whether getdelim is declared... " >&6; }
+if test "${ac_cv_have_decl_getdelim+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getdelim
+ (void) getdelim;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getdelim=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_getdelim=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getdelim" >&5
+$as_echo "$ac_cv_have_decl_getdelim" >&6; }
+if test $ac_cv_have_decl_getdelim = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETDELIM 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETDELIM 0
+_ACEOF
+
+
+fi
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for arithmetic hrtime_t" >&5
+$as_echo_n "checking for arithmetic hrtime_t... " >&6; }
+if test "${gl_cv_arithmetic_hrtime_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <time.h>
+int
+main ()
+{
+hrtime_t x = 0; return x/x;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_arithmetic_hrtime_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_arithmetic_hrtime_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_arithmetic_hrtime_t" >&5
+$as_echo "$gl_cv_arithmetic_hrtime_t" >&6; }
+ if test $gl_cv_arithmetic_hrtime_t = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ARITHMETIC_HRTIME_T 1
+_ACEOF
+
+ fi
+
+
+
+
+ :
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for ssize_t" >&5
+$as_echo_n "checking for ssize_t... " >&6; }
+if test "${gt_cv_ssize_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+int
+main ()
+{
+int x = sizeof (ssize_t *) + sizeof (ssize_t);
+ return !x;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_ssize_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_ssize_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_ssize_t" >&5
+$as_echo "$gt_cv_ssize_t" >&6; }
+ if test $gt_cv_ssize_t = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define ssize_t int
+_ACEOF
+
+ fi
+
+
+ if test -z "$GETOPT_H"; then
+
+for ac_header in getopt.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ GETOPT_H=getopt.h
+fi
+
+done
+
+ fi
+
+ if test -z "$GETOPT_H"; then
+
+for ac_func in getopt_long_only
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ GETOPT_H=getopt.h
+fi
+done
+
+ fi
+
+ if test -z "$GETOPT_H"; then
+ { $as_echo "$as_me:$LINENO: checking whether optreset is declared" >&5
+$as_echo_n "checking whether optreset is declared... " >&6; }
+if test "${ac_cv_have_decl_optreset+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <getopt.h>
+
+int
+main ()
+{
+#ifndef optreset
+ (void) optreset;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_optreset=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_optreset=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_optreset" >&5
+$as_echo "$ac_cv_have_decl_optreset" >&6; }
+if test $ac_cv_have_decl_optreset = yes; then
+ GETOPT_H=getopt.h
+fi
+
+ fi
+
+ if test -z "$GETOPT_H"; then
+ { $as_echo "$as_me:$LINENO: checking for working GNU getopt function" >&5
+$as_echo_n "checking for working GNU getopt function... " >&6; }
+if test "${gl_cv_func_gnu_getopt+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ { $as_echo "$as_me:$LINENO: checking whether getopt_clip is declared" >&5
+$as_echo_n "checking whether getopt_clip is declared... " >&6; }
+if test "${ac_cv_have_decl_getopt_clip+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <getopt.h>
+
+int
+main ()
+{
+#ifndef getopt_clip
+ (void) getopt_clip;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getopt_clip=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_getopt_clip=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getopt_clip" >&5
+$as_echo "$ac_cv_have_decl_getopt_clip" >&6; }
+if test $ac_cv_have_decl_getopt_clip = yes; then
+ gl_cv_func_gnu_getopt=no
+else
+ gl_cv_func_gnu_getopt=yes
+fi
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <getopt.h>
+int
+main ()
+{
+
+ char *myargv[3];
+ myargv[0] = "conftest";
+ myargv[1] = "-+";
+ myargv[2] = 0;
+ return getopt (2, myargv, "+a") != '?';
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_gnu_getopt=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_gnu_getopt=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_gnu_getopt" >&5
+$as_echo "$gl_cv_func_gnu_getopt" >&6; }
+ if test "$gl_cv_func_gnu_getopt" = "no"; then
+ GETOPT_H=getopt.h
+ fi
+ fi
+
+{ $as_echo "$as_me:$LINENO: checking whether getenv is declared" >&5
+$as_echo_n "checking whether getenv is declared... " >&6; }
+if test "${ac_cv_have_decl_getenv+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getenv
+ (void) getenv;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getenv=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_getenv=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getenv" >&5
+$as_echo "$ac_cv_have_decl_getenv" >&6; }
+if test $ac_cv_have_decl_getenv = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETENV 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETENV 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether getpass is declared" >&5
+$as_echo_n "checking whether getpass is declared... " >&6; }
+if test "${ac_cv_have_decl_getpass+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getpass
+ (void) getpass;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getpass=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_getpass=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getpass" >&5
+$as_echo "$ac_cv_have_decl_getpass" >&6; }
+if test $ac_cv_have_decl_getpass = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETPASS 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETPASS 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether fflush_unlocked is declared" >&5
+$as_echo_n "checking whether fflush_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_fflush_unlocked+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef fflush_unlocked
+ (void) fflush_unlocked;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_fflush_unlocked=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_fflush_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_fflush_unlocked" >&5
+$as_echo "$ac_cv_have_decl_fflush_unlocked" >&6; }
+if test $ac_cv_have_decl_fflush_unlocked = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FFLUSH_UNLOCKED 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FFLUSH_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether flockfile is declared" >&5
+$as_echo_n "checking whether flockfile is declared... " >&6; }
+if test "${ac_cv_have_decl_flockfile+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef flockfile
+ (void) flockfile;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_flockfile=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_flockfile=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_flockfile" >&5
+$as_echo "$ac_cv_have_decl_flockfile" >&6; }
+if test $ac_cv_have_decl_flockfile = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FLOCKFILE 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FLOCKFILE 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether fputs_unlocked is declared" >&5
+$as_echo_n "checking whether fputs_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_fputs_unlocked+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef fputs_unlocked
+ (void) fputs_unlocked;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_fputs_unlocked=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_fputs_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_fputs_unlocked" >&5
+$as_echo "$ac_cv_have_decl_fputs_unlocked" >&6; }
+if test $ac_cv_have_decl_fputs_unlocked = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FPUTS_UNLOCKED 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FPUTS_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether funlockfile is declared" >&5
+$as_echo_n "checking whether funlockfile is declared... " >&6; }
+if test "${ac_cv_have_decl_funlockfile+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef funlockfile
+ (void) funlockfile;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_funlockfile=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_funlockfile=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_funlockfile" >&5
+$as_echo "$ac_cv_have_decl_funlockfile" >&6; }
+if test $ac_cv_have_decl_funlockfile = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FUNLOCKFILE 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FUNLOCKFILE 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether putc_unlocked is declared" >&5
+$as_echo_n "checking whether putc_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_putc_unlocked+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef putc_unlocked
+ (void) putc_unlocked;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_putc_unlocked=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_putc_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_putc_unlocked" >&5
+$as_echo "$ac_cv_have_decl_putc_unlocked" >&6; }
+if test $ac_cv_have_decl_putc_unlocked = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PUTC_UNLOCKED 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PUTC_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_header_sys_time_h = yes; then
+ { $as_echo "$as_me:$LINENO: checking absolute name of <sys/time.h>" >&5
+$as_echo_n "checking absolute name of <sys/time.h>... " >&6; }
+if test "${gl_cv_absolute_sys_time_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_sys_time_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/time.h>
+_ACEOF
+ gl_cv_absolute_sys_time_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/sys/time.h#{s#.*"\(.*/sys/time.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_absolute_sys_time_h" >&5
+$as_echo "$gl_cv_absolute_sys_time_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_SYS_TIME_H "$gl_cv_absolute_sys_time_h"
+_ACEOF
+
+
+ ABSOLUTE_SYS_TIME_H=\"$gl_cv_absolute_sys_time_h\"
+ HAVE_SYS_TIME_H=1
+ else
+ ABSOLUTE_SYS_TIME_H=\"no/such/file/sys/time.h\"
+ HAVE_SYS_TIME_H=0
+ fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for struct timeval" >&5
+$as_echo_n "checking for struct timeval... " >&6; }
+if test "${gl_cv_sys_struct_timeval+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#if HAVE_SYS_TIME_H
+ #include <sys/time.h>
+ #endif
+ #include <time.h>
+
+int
+main ()
+{
+static struct timeval x; x.tv_sec = x.tv_usec;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_sys_struct_timeval=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_sys_struct_timeval=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_sys_struct_timeval" >&5
+$as_echo "$gl_cv_sys_struct_timeval" >&6; }
+ if test $gl_cv_sys_struct_timeval = yes; then
+ HAVE_STRUCT_TIMEVAL=1
+ else
+ HAVE_STRUCT_TIMEVAL=0
+ fi
+
+
+ REPLACE_GETTIMEOFDAY=0
+
+ if test $HAVE_SYS_TIME_H = 0 || test $HAVE_STRUCT_TIMEVAL = 0; then
+ SYS_TIME_H=sys/time.h
+ else
+ SYS_TIME_H=
+ fi
+
+
+
+
+
+
+ if test "X$prefix" = "XNONE"; then
+ acl_final_prefix="$ac_default_prefix"
+ else
+ acl_final_prefix="$prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ acl_final_exec_prefix='${prefix}'
+ else
+ acl_final_exec_prefix="$exec_prefix"
+ fi
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+ prefix="$acl_save_prefix"
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ { $as_echo "$as_me:$LINENO: checking for ld used by GCC" >&5
+$as_echo_n "checking for ld used by GCC... " >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | [A-Za-z]:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the path of ld
+ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+ { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${acl_cv_path_LD+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$LD"; then
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ acl_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break ;;
+ *)
+ test "$with_gnu_ld" != yes && break ;;
+ esac
+ fi
+ done
+ IFS="$ac_save_ifs"
+else
+ acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+ { $as_echo "$as_me:$LINENO: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${acl_cv_prog_gnu_ld+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ acl_cv_prog_gnu_ld=yes ;;
+*)
+ acl_cv_prog_gnu_ld=no ;;
+esac
+fi
+{ $as_echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5
+$as_echo "$acl_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$acl_cv_prog_gnu_ld
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for shared library run path origin" >&5
+$as_echo_n "checking for shared library run path origin... " >&6; }
+if test "${acl_cv_rpath+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+ . ./conftest.sh
+ rm -f ./conftest.sh
+ acl_cv_rpath=done
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5
+$as_echo "$acl_cv_rpath" >&6; }
+ wl="$acl_cv_wl"
+ acl_libext="$acl_cv_libext"
+ acl_shlibext="$acl_cv_shlibext"
+ acl_libname_spec="$acl_cv_libname_spec"
+ acl_library_names_spec="$acl_cv_library_names_spec"
+ acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+ acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+ acl_hardcode_direct="$acl_cv_hardcode_direct"
+ acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
+ # Check whether --enable-rpath was given.
+if test "${enable_rpath+set}" = set; then
+ enableval=$enable_rpath; :
+else
+ enable_rpath=yes
+fi
+
+
+
+ acl_libdirstem=lib
+ searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+ if test -n "$searchpath"; then
+ acl_save_IFS="${IFS= }"; IFS=":"
+ for searchdir in $searchpath; do
+ if test -d "$searchdir"; then
+ case "$searchdir" in
+ */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+ *) searchdir=`cd "$searchdir" && pwd`
+ case "$searchdir" in
+ */lib64 ) acl_libdirstem=lib64 ;;
+ esac ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_IFS"
+ fi
+
+
+
+
+
+
+
+
+
+ use_additional=yes
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+
+# Check whether --with-libiconv-prefix was given.
+if test "${with_libiconv_prefix+set}" = set; then
+ withval=$with_libiconv_prefix;
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/$acl_libdirstem"
+ fi
+ fi
+
+fi
+
+ LIBICONV=
+ LTLIBICONV=
+ INCICONV=
+ LIBICONV_PREFIX=
+ rpathdirs=
+ ltrpathdirs=
+ names_already_handled=
+ names_next_round='iconv '
+ while test -n "$names_next_round"; do
+ names_this_round="$names_next_round"
+ names_next_round=
+ for name in $names_this_round; do
+ already_handled=
+ for n in $names_already_handled; do
+ if test "$n" = "$name"; then
+ already_handled=yes
+ break
+ fi
+ done
+ if test -z "$already_handled"; then
+ names_already_handled="$names_already_handled $name"
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+ eval value=\"\$HAVE_LIB$uppername\"
+ if test -n "$value"; then
+ if test "$value" = yes; then
+ eval value=\"\$LIB$uppername\"
+ test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value"
+ eval value=\"\$LTLIB$uppername\"
+ test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value"
+ else
+ :
+ fi
+ else
+ found_dir=
+ found_la=
+ found_so=
+ found_a=
+ eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
+ if test -n "$acl_shlibext"; then
+ shrext=".$acl_shlibext" # typically: shrext=.so
+ else
+ shrext=
+ fi
+ if test $use_additional = yes; then
+ dir="$additional_libdir"
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ for x in $LDFLAGS $LTLIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ case "$x" in
+ -L*)
+ dir=`echo "X$x" | sed -e 's/^X-L//'`
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
+ ;;
+ esac
+ if test "X$found_dir" != "X"; then
+ break
+ fi
+ done
+ fi
+ if test "X$found_dir" != "X"; then
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name"
+ if test "X$found_so" != "X"; then
+ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ else
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $found_dir"
+ fi
+ if test "$acl_hardcode_direct" = yes; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ else
+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $found_dir"
+ fi
+ else
+ haveit=
+ for x in $LDFLAGS $LIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir"
+ fi
+ if test "$acl_hardcode_minus_L" != no; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ else
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+ fi
+ fi
+ fi
+ fi
+ else
+ if test "X$found_a" != "X"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a"
+ else
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name"
+ fi
+ fi
+ additional_includedir=
+ case "$found_dir" in
+ */$acl_libdirstem | */$acl_libdirstem/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+ LIBICONV_PREFIX="$basedir"
+ additional_includedir="$basedir/include"
+ ;;
+ esac
+ if test "X$additional_includedir" != "X"; then
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ for x in $CPPFLAGS $INCICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ fi
+ if test -n "$found_la"; then
+ save_libdir="$libdir"
+ case "$found_la" in
+ */* | *\\*) . "$found_la" ;;
+ *) . "./$found_la" ;;
+ esac
+ libdir="$save_libdir"
+ for dep in $dependency_libs; do
+ case "$dep" in
+ -L*)
+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+ haveit=
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ haveit=
+ for x in $LDFLAGS $LIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir"
+ fi
+ fi
+ haveit=
+ for x in $LDFLAGS $LTLIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ ;;
+ -R*)
+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
+ if test "$enable_rpath" != no; then
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $dir"
+ fi
+ fi
+ ;;
+ -l*)
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+ ;;
+ *.la)
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+ ;;
+ *)
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$dep"
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep"
+ ;;
+ esac
+ done
+ fi
+ else
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name"
+ fi
+ fi
+ fi
+ done
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n "$acl_hardcode_libdir_separator"; then
+ alldirs=
+ for found_dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+ done
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
+ else
+ for found_dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$found_dir"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
+ done
+ fi
+ fi
+ if test "X$ltrpathdirs" != "X"; then
+ for found_dir in $ltrpathdirs; do
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir"
+ done
+ fi
+
+
+{ $as_echo "$as_me:$LINENO: checking for off_t" >&5
+$as_echo_n "checking for off_t... " >&6; }
+if test "${ac_cv_type_off_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+typedef off_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_off_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_off_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
+$as_echo "$ac_cv_type_off_t" >&6; }
+if test $ac_cv_type_off_t = yes; then
+ :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define off_t long int
+_ACEOF
+
+fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for unsigned long long int" >&5
+$as_echo_n "checking for unsigned long long int... " >&6; }
+if test "${ac_cv_type_unsigned_long_long_int+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+unsigned long long int ull = 18446744073709551615ULL;
+ typedef int a[(18446744073709551615ULL <= (unsigned long long int) -1
+ ? 1 : -1)];
+ int i = 63;
+int
+main ()
+{
+unsigned long long int ullmax = 18446744073709551615ull;
+ return (ull << 63 | ull >> 63 | ull << i | ull >> i
+ | ullmax / ull | ullmax % ull);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_type_unsigned_long_long_int=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_unsigned_long_long_int=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long_int" >&5
+$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
+ if test $ac_cv_type_unsigned_long_long_int = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_UNSIGNED_LONG_LONG_INT 1
+_ACEOF
+
+ fi
+
+
+
+
+
+
+ if test $ac_cv_type_long_long_int = yes; then
+ HAVE_LONG_LONG_INT=1
+ else
+ HAVE_LONG_LONG_INT=0
+ fi
+
+
+ if test $ac_cv_type_unsigned_long_long_int = yes; then
+ HAVE_UNSIGNED_LONG_LONG_INT=1
+ else
+ HAVE_UNSIGNED_LONG_LONG_INT=0
+ fi
+
+
+ if test $ac_cv_header_inttypes_h = yes; then
+ HAVE_INTTYPES_H=1
+ else
+ HAVE_INTTYPES_H=0
+ fi
+
+
+ if test $ac_cv_header_sys_types_h = yes; then
+ HAVE_SYS_TYPES_H=1
+ else
+ HAVE_SYS_TYPES_H=0
+ fi
+
+
+ if test $ac_cv_header_stdint_h = yes; then
+ { $as_echo "$as_me:$LINENO: checking absolute name of <stdint.h>" >&5
+$as_echo_n "checking absolute name of <stdint.h>... " >&6; }
+if test "${gl_cv_absolute_stdint_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_stdint_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdint.h>
+_ACEOF
+ gl_cv_absolute_stdint_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/stdint.h#{s#.*"\(.*/stdint.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_absolute_stdint_h" >&5
+$as_echo "$gl_cv_absolute_stdint_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_STDINT_H "$gl_cv_absolute_stdint_h"
+_ACEOF
+
+
+ ABSOLUTE_STDINT_H=\"$gl_cv_absolute_stdint_h\"
+ HAVE_STDINT_H=1
+ else
+ ABSOLUTE_STDINT_H=\"no/such/file/stdint.h\"
+ HAVE_STDINT_H=0
+ fi
+
+
+
+ if test $ac_cv_header_stdint_h = yes; then
+ { $as_echo "$as_me:$LINENO: checking whether stdint.h conforms to C99" >&5
+$as_echo_n "checking whether stdint.h conforms to C99... " >&6; }
+if test "${gl_cv_header_working_stdint_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ gl_cv_header_working_stdint_h=no
+ cat >conftest.$ac_ext <<_ACEOF
+
+ /* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stddef.h>
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#include ABSOLUTE_STDINT_H
+#ifdef INT8_MAX
+int8_t a1 = INT8_MAX;
+int8_t a1min = INT8_MIN;
+#endif
+#ifdef INT16_MAX
+int16_t a2 = INT16_MAX;
+int16_t a2min = INT16_MIN;
+#endif
+#ifdef INT32_MAX
+int32_t a3 = INT32_MAX;
+int32_t a3min = INT32_MIN;
+#endif
+#ifdef INT64_MAX
+int64_t a4 = INT64_MAX;
+int64_t a4min = INT64_MIN;
+#endif
+#ifdef UINT8_MAX
+uint8_t b1 = UINT8_MAX;
+#else
+typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
+#endif
+#ifdef UINT16_MAX
+uint16_t b2 = UINT16_MAX;
+#endif
+#ifdef UINT32_MAX
+uint32_t b3 = UINT32_MAX;
+#endif
+#ifdef UINT64_MAX
+uint64_t b4 = UINT64_MAX;
+#endif
+int_least8_t c1 = INT8_C (0x7f);
+int_least8_t c1max = INT_LEAST8_MAX;
+int_least8_t c1min = INT_LEAST8_MIN;
+int_least16_t c2 = INT16_C (0x7fff);
+int_least16_t c2max = INT_LEAST16_MAX;
+int_least16_t c2min = INT_LEAST16_MIN;
+int_least32_t c3 = INT32_C (0x7fffffff);
+int_least32_t c3max = INT_LEAST32_MAX;
+int_least32_t c3min = INT_LEAST32_MIN;
+int_least64_t c4 = INT64_C (0x7fffffffffffffff);
+int_least64_t c4max = INT_LEAST64_MAX;
+int_least64_t c4min = INT_LEAST64_MIN;
+uint_least8_t d1 = UINT8_C (0xff);
+uint_least8_t d1max = UINT_LEAST8_MAX;
+uint_least16_t d2 = UINT16_C (0xffff);
+uint_least16_t d2max = UINT_LEAST16_MAX;
+uint_least32_t d3 = UINT32_C (0xffffffff);
+uint_least32_t d3max = UINT_LEAST32_MAX;
+uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
+uint_least64_t d4max = UINT_LEAST64_MAX;
+int_fast8_t e1 = INT_FAST8_MAX;
+int_fast8_t e1min = INT_FAST8_MIN;
+int_fast16_t e2 = INT_FAST16_MAX;
+int_fast16_t e2min = INT_FAST16_MIN;
+int_fast32_t e3 = INT_FAST32_MAX;
+int_fast32_t e3min = INT_FAST32_MIN;
+int_fast64_t e4 = INT_FAST64_MAX;
+int_fast64_t e4min = INT_FAST64_MIN;
+uint_fast8_t f1 = UINT_FAST8_MAX;
+uint_fast16_t f2 = UINT_FAST16_MAX;
+uint_fast32_t f3 = UINT_FAST32_MAX;
+uint_fast64_t f4 = UINT_FAST64_MAX;
+#ifdef INTPTR_MAX
+intptr_t g = INTPTR_MAX;
+intptr_t gmin = INTPTR_MIN;
+#endif
+#ifdef UINTPTR_MAX
+uintptr_t h = UINTPTR_MAX;
+#endif
+intmax_t i = INTMAX_MAX;
+uintmax_t j = UINTMAX_MAX;
+struct s {
+ int check_PTRDIFF: PTRDIFF_MIN < 0 && 0 < PTRDIFF_MAX ? 1 : -1;
+ int check_SIG_ATOMIC: SIG_ATOMIC_MIN <= 0 && 0 < SIG_ATOMIC_MAX ? 1 : -1;
+ int check_SIZE: 0 < SIZE_MAX ? 1 : -1;
+ int check_WCHAR: WCHAR_MIN <= 0 && 0 < WCHAR_MAX ? 1 : -1;
+ int check_WINT: WINT_MIN <= 0 && 0 < WINT_MAX ? 1 : -1;
+
+ /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */
+ int check_UINT8_C:
+ (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
+ int check_UINT16_C:
+ (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
+
+ /* Detect bugs in OpenBSD 3.9 stdint.h. */
+#ifdef UINT8_MAX
+ int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
+#endif
+#ifdef UINT16_MAX
+ int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
+#endif
+#ifdef UINT32_MAX
+ int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
+#endif
+#ifdef UINT64_MAX
+ int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
+#endif
+ int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
+ int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
+ int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
+ int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
+ int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
+ int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
+ int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
+ int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
+ int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
+ int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
+ int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
+};
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_header_working_stdint_h=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_working_stdint_h" >&5
+$as_echo "$gl_cv_header_working_stdint_h" >&6; }
+ fi
+ if test "$gl_cv_header_working_stdint_h" = yes; then
+ STDINT_H=
+ else
+
+
+for ac_header in sys/inttypes.h sys/bitypes.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ if test $ac_cv_header_sys_inttypes_h = yes; then
+ HAVE_SYS_INTTYPES_H=1
+ else
+ HAVE_SYS_INTTYPES_H=0
+ fi
+
+ if test $ac_cv_header_sys_bitypes_h = yes; then
+ HAVE_SYS_BITYPES_H=1
+ else
+ HAVE_SYS_BITYPES_H=0
+ fi
+
+
+
+
+
+
+
+
+
+
+ for gltype in ptrdiff_t sig_atomic_t size_t wchar_t wint_t ; do
+ { $as_echo "$as_me:$LINENO: checking for bit size of $gltype" >&5
+$as_echo_n "checking for bit size of $gltype... " >&6; }
+if { as_var=gl_cv_bitsizeof_${gltype}; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) result=$ac_lo;;
+'') result=unknown ;;
+esac
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+static long int longval () { return sizeof ($gltype) * CHAR_BIT; }
+static unsigned long int ulongval () { return sizeof ($gltype) * CHAR_BIT; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if ((sizeof ($gltype) * CHAR_BIT) < 0)
+ {
+ long int i = longval ();
+ if (i != (sizeof ($gltype) * CHAR_BIT))
+ return 1;
+ fprintf (f, "%ld", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != (sizeof ($gltype) * CHAR_BIT))
+ return 1;
+ fprintf (f, "%lu", i);
+ }
+ /* Do not output a trailing newline, as this causes \r\n confusion
+ on some platforms. */
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ result=`cat conftest.val`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+result=unknown
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+ eval gl_cv_bitsizeof_${gltype}=\$result
+
+fi
+ac_res=`eval 'as_val=${'gl_cv_bitsizeof_${gltype}'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval result=\$gl_cv_bitsizeof_${gltype}
+ if test $result = unknown; then
+ result=0
+ fi
+ GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ cat >>confdefs.h <<_ACEOF
+#define BITSIZEOF_${GLTYPE} $result
+_ACEOF
+
+ eval BITSIZEOF_${GLTYPE}=\$result
+ done
+
+
+
+
+
+
+
+ for gltype in sig_atomic_t wchar_t wint_t ; do
+ { $as_echo "$as_me:$LINENO: checking whether $gltype is signed" >&5
+$as_echo_n "checking whether $gltype is signed... " >&6; }
+if { as_var=gl_cv_type_${gltype}_signed; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+ int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ result=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ result=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ eval gl_cv_type_${gltype}_signed=\$result
+
+fi
+ac_res=`eval 'as_val=${'gl_cv_type_${gltype}_signed'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval result=\$gl_cv_type_${gltype}_signed
+ GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ if test "$result" = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_SIGNED_${GLTYPE} 1
+_ACEOF
+
+ eval HAVE_SIGNED_${GLTYPE}=1
+ else
+ eval HAVE_SIGNED_${GLTYPE}=0
+ fi
+ done
+
+
+ gl_cv_type_ptrdiff_t_signed=yes
+ gl_cv_type_size_t_signed=no
+
+
+
+
+
+
+
+ for gltype in ptrdiff_t sig_atomic_t size_t wchar_t wint_t ; do
+ { $as_echo "$as_me:$LINENO: checking for $gltype integer literal suffix" >&5
+$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
+if { as_var=gl_cv_type_${gltype}_suffix; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval gl_cv_type_${gltype}_suffix=no
+ eval result=\$gl_cv_type_${gltype}_signed
+ if test "$result" = yes; then
+ glsufu=
+ else
+ glsufu=u
+ fi
+ for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+ case $glsuf in
+ '') gltype1='int';;
+ l) gltype1='long int';;
+ ll) gltype1='long long int';;
+ i64) gltype1='__int64';;
+ u) gltype1='unsigned int';;
+ ul) gltype1='unsigned long int';;
+ ull) gltype1='unsigned long long int';;
+ ui64)gltype1='unsigned __int64';;
+ esac
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+ extern $gltype foo;
+ extern $gltype1 foo;
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ eval gl_cv_type_${gltype}_suffix=\$glsuf
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" != no && break
+ done
+fi
+ac_res=`eval 'as_val=${'gl_cv_type_${gltype}_suffix'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" = no && result=
+ eval ${GLTYPE}_SUFFIX=\$result
+ cat >>confdefs.h <<_ACEOF
+#define ${GLTYPE}_SUFFIX $result
+_ACEOF
+
+ done
+
+
+
+ STDINT_H=stdint.h
+ fi
+
+
+
+
+for ac_header in inttypes.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ if test $ac_cv_header_inttypes_h = yes; then
+ { $as_echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5
+$as_echo_n "checking whether the inttypes.h PRIxNN macros are broken... " >&6; }
+if test "${gt_cv_inttypes_pri_broken+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <inttypes.h>
+#ifdef PRId32
+char *p = PRId32;
+#endif
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_inttypes_pri_broken=no
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_inttypes_pri_broken=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5
+$as_echo "$gt_cv_inttypes_pri_broken" >&6; }
+ fi
+ if test "$gt_cv_inttypes_pri_broken" = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define PRI_MACROS_BROKEN 1
+_ACEOF
+
+ PRI_MACROS_BROKEN=1
+ else
+ PRI_MACROS_BROKEN=0
+ fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether imaxabs is declared" >&5
+$as_echo_n "checking whether imaxabs is declared... " >&6; }
+if test "${ac_cv_have_decl_imaxabs+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef imaxabs
+ (void) imaxabs;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_imaxabs=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_imaxabs=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_imaxabs" >&5
+$as_echo "$ac_cv_have_decl_imaxabs" >&6; }
+if test $ac_cv_have_decl_imaxabs = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IMAXABS 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IMAXABS 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether imaxdiv is declared" >&5
+$as_echo_n "checking whether imaxdiv is declared... " >&6; }
+if test "${ac_cv_have_decl_imaxdiv+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef imaxdiv
+ (void) imaxdiv;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_imaxdiv=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_imaxdiv=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_imaxdiv" >&5
+$as_echo "$ac_cv_have_decl_imaxdiv" >&6; }
+if test $ac_cv_have_decl_imaxdiv = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IMAXDIV 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IMAXDIV 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether strtoimax is declared" >&5
+$as_echo_n "checking whether strtoimax is declared... " >&6; }
+if test "${ac_cv_have_decl_strtoimax+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strtoimax
+ (void) strtoimax;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strtoimax=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_strtoimax=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtoimax" >&5
+$as_echo "$ac_cv_have_decl_strtoimax" >&6; }
+if test $ac_cv_have_decl_strtoimax = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOIMAX 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOIMAX 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether strtoumax is declared" >&5
+$as_echo_n "checking whether strtoumax is declared... " >&6; }
+if test "${ac_cv_have_decl_strtoumax+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strtoumax
+ (void) strtoumax;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strtoumax=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_strtoumax=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtoumax" >&5
+$as_echo "$ac_cv_have_decl_strtoumax" >&6; }
+if test $ac_cv_have_decl_strtoumax = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOUMAX 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOUMAX 0
+_ACEOF
+
+
+fi
+
+
+
+ GNULIB_IMAXABS=0;
+ GNULIB_IMAXDIV=0;
+ GNULIB_STRTOIMAX=0;
+ GNULIB_STRTOUMAX=0;
+ HAVE_DECL_IMAXABS=1;
+ HAVE_DECL_IMAXDIV=1;
+ HAVE_DECL_STRTOIMAX=1;
+ HAVE_DECL_STRTOUMAX=1;
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether lchown is declared" >&5
+$as_echo_n "checking whether lchown is declared... " >&6; }
+if test "${ac_cv_have_decl_lchown+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef lchown
+ (void) lchown;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_lchown=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_lchown=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_lchown" >&5
+$as_echo "$ac_cv_have_decl_lchown" >&6; }
+if test $ac_cv_have_decl_lchown = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_LCHOWN 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_LCHOWN 0
+_ACEOF
+
+
+fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5
+$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
+if test "${am_cv_langinfo_codeset+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <langinfo.h>
+int
+main ()
+{
+char* cs = nl_langinfo(CODESET); return !cs;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ am_cv_langinfo_codeset=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ am_cv_langinfo_codeset=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5
+$as_echo "$am_cv_langinfo_codeset" >&6; }
+ if test $am_cv_langinfo_codeset = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LANGINFO_CODESET 1
+_ACEOF
+
+ fi
+
+{ $as_echo "$as_me:$LINENO: checking whether getc_unlocked is declared" >&5
+$as_echo_n "checking whether getc_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_getc_unlocked+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getc_unlocked
+ (void) getc_unlocked;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getc_unlocked=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_getc_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getc_unlocked" >&5
+$as_echo "$ac_cv_have_decl_getc_unlocked" >&6; }
+if test $ac_cv_have_decl_getc_unlocked = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETC_UNLOCKED 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETC_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5
+$as_echo_n "checking whether we are using the GNU C Library 2.1 or newer... " >&6; }
+if test "${ac_cv_gnu_library_2_1+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+ Lucky GNU user
+ #endif
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Lucky GNU user" >/dev/null 2>&1; then
+ ac_cv_gnu_library_2_1=yes
+else
+ ac_cv_gnu_library_2_1=no
+fi
+rm -f conftest*
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5
+$as_echo "$ac_cv_gnu_library_2_1" >&6; }
+
+ GLIBC21="$ac_cv_gnu_library_2_1"
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether mbrtowc and mbstate_t are properly declared" >&5
+$as_echo_n "checking whether mbrtowc and mbstate_t are properly declared... " >&6; }
+if test "${gl_cv_func_mbrtowc+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <wchar.h>
+int
+main ()
+{
+wchar_t wc;
+ char const s[] = "";
+ size_t n = 1;
+ mbstate_t state;
+ return ! (sizeof state && (mbrtowc) (&wc, s, n, &state));
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ gl_cv_func_mbrtowc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_mbrtowc=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mbrtowc" >&5
+$as_echo "$gl_cv_func_mbrtowc" >&6; }
+ if test $gl_cv_func_mbrtowc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MBRTOWC 1
+_ACEOF
+
+ fi
+
+
+ GNULIB_MEMMEM=0;
+ GNULIB_MEMPCPY=0;
+ GNULIB_MEMRCHR=0;
+ GNULIB_STPCPY=0;
+ GNULIB_STPNCPY=0;
+ GNULIB_STRCHRNUL=0;
+ GNULIB_STRDUP=0;
+ GNULIB_STRNDUP=0;
+ GNULIB_STRNLEN=0;
+ GNULIB_STRPBRK=0;
+ GNULIB_STRSEP=0;
+ GNULIB_STRCASESTR=0;
+ GNULIB_STRTOK_R=0;
+ GNULIB_MBSLEN=0;
+ GNULIB_MBSCHR=0;
+ GNULIB_MBSRCHR=0;
+ GNULIB_MBSSTR=0;
+ GNULIB_MBSCASECMP=0;
+ GNULIB_MBSNCASECMP=0;
+ GNULIB_MBSPCASECMP=0;
+ GNULIB_MBSCASESTR=0;
+ GNULIB_MBSCSPN=0;
+ GNULIB_MBSPBRK=0;
+ GNULIB_MBSSPN=0;
+ GNULIB_MBSSEP=0;
+ GNULIB_MBSTOK_R=0;
+ HAVE_DECL_MEMMEM=1;
+ HAVE_MEMPCPY=1;
+ HAVE_DECL_MEMRCHR=1;
+ HAVE_STPCPY=1;
+ HAVE_STPNCPY=1;
+ HAVE_STRCASECMP=1;
+ HAVE_DECL_STRNCASECMP=1;
+ HAVE_STRCHRNUL=1;
+ HAVE_DECL_STRDUP=1;
+ HAVE_STRNDUP=1;
+ HAVE_DECL_STRNDUP=1;
+ HAVE_DECL_STRNLEN=1;
+ HAVE_STRPBRK=1;
+ HAVE_STRSEP=1;
+ HAVE_STRCASESTR=1;
+ HAVE_DECL_STRTOK_R=1;
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if test "${ac_cv_c_bigendian+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ # See if sys/param.h defines the BYTE_ORDER macro.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \
+ && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN)
+ bogus endian macros
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ # It does; now see whether it defined to BIG_ENDIAN or not.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_bigendian=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_c_bigendian=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # It does not; compile a test program.
+if test "$cross_compiling" = yes; then
+ # try to guess the endianness by grepping values into an object file
+ ac_cv_c_bigendian=unknown
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; }
+short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; }
+int
+main ()
+{
+ _ascii (); _ebcdic ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then
+ ac_cv_c_bigendian=yes
+fi
+if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+ if test "$ac_cv_c_bigendian" = unknown; then
+ ac_cv_c_bigendian=no
+ else
+ # finding both strings is unlikely to happen, but who knows?
+ ac_cv_c_bigendian=unknown
+ fi
+fi
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+ /* Are we little or big endian? From Harbison&Steele. */
+ union
+ {
+ long int l;
+ char c[sizeof (long int)];
+ } u;
+ u.l = 1;
+ return u.c[sizeof (long int) - 1] == 1;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_c_bigendian=no
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_c_bigendian=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+case $ac_cv_c_bigendian in
+ yes)
+
+cat >>confdefs.h <<\_ACEOF
+#define WORDS_BIGENDIAN 1
+_ACEOF
+ ;;
+ no)
+ ;;
+ *)
+ { { $as_echo "$as_me:$LINENO: error: unknown endianness
+presetting ac_cv_c_bigendian=no (or yes) will help" >&5
+$as_echo "$as_me: error: unknown endianness
+presetting ac_cv_c_bigendian=no (or yes) will help" >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+
+{ $as_echo "$as_me:$LINENO: checking whether memrchr is declared" >&5
+$as_echo_n "checking whether memrchr is declared... " >&6; }
+if test "${ac_cv_have_decl_memrchr+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef memrchr
+ (void) memrchr;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_memrchr=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_memrchr=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_memrchr" >&5
+$as_echo "$ac_cv_have_decl_memrchr" >&6; }
+if test $ac_cv_have_decl_memrchr = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_MEMRCHR 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_MEMRCHR 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+ GNULIB_GETSUBOPT=0;
+ GNULIB_MKDTEMP=0;
+ GNULIB_MKSTEMP=0;
+ HAVE_GETSUBOPT=1;
+ HAVE_MKDTEMP=1;
+ REPLACE_MKSTEMP=0;
+
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then
+ enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+ { $as_echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5
+$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+if test "${ac_cv_sys_largefile_CC+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_sys_largefile_CC=no
+ if test "$GCC" != yes; then
+ ac_save_CC=$CC
+ while :; do
+ # IRIX 6.2 and later do not support large files by default,
+ # so use the C compiler's -n32 option if that helps.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+ CC="$CC -n32"
+ rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_sys_largefile_CC=' -n32'; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+ break
+ done
+ CC=$ac_save_CC
+ rm -f conftest.$ac_ext
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5
+$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+ if test "$ac_cv_sys_largefile_CC" != no; then
+ CC=$CC$ac_cv_sys_largefile_CC
+ fi
+
+ { $as_echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if test "${ac_cv_sys_file_offset_bits+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_sys_file_offset_bits=no; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_sys_file_offset_bits=64; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_file_offset_bits=unknown
+ break
+done
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5
+$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+;;
+esac
+rm -f conftest*
+ if test $ac_cv_sys_file_offset_bits = unknown; then
+ { $as_echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5
+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+if test "${ac_cv_sys_large_files+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_sys_large_files=no; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_sys_large_files=1; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_large_files=unknown
+ break
+done
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5
+$as_echo "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+;;
+esac
+rm -f conftest*
+ fi
+fi
+
+
+
+
+
+
+ REPLACE_LOCALTIME_R=GNULIB_PORTCHECK;
+ REPLACE_NANOSLEEP=GNULIB_PORTCHECK;
+ REPLACE_STRPTIME=GNULIB_PORTCHECK;
+ REPLACE_TIMEGM=GNULIB_PORTCHECK;
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for external symbol _system_configuration" >&5
+$as_echo_n "checking for external symbol _system_configuration... " >&6; }
+if test "${gl_cv_var__system_configuration+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/systemcfg.h>
+
+int
+main ()
+{
+double x = _system_configuration.physmem;
+ if (x > 0.0) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ gl_cv_var__system_configuration=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_var__system_configuration=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_var__system_configuration" >&5
+$as_echo "$gl_cv_var__system_configuration" >&6; }
+
+ if test $gl_cv_var__system_configuration = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE__SYSTEM_CONFIGURATION 1
+_ACEOF
+
+ fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for desired default level of POSIX conformance" >&5
+$as_echo_n "checking for desired default level of POSIX conformance... " >&6; }
+ gl_default_posix2_version=none-specified
+ if test -n "$ac_cv_env_DEFAULT_POSIX2_VERSION_set"; then
+ gl_default_posix2_version=$ac_cv_env_DEFAULT_POSIX2_VERSION_value
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_POSIX2_VERSION $gl_default_posix2_version
+_ACEOF
+
+ fi
+ { $as_echo "$as_me:$LINENO: result: $gl_default_posix2_version" >&5
+$as_echo "$gl_default_posix2_version" >&6; }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether lstat accepts an empty string" >&5
+$as_echo_n "checking whether lstat accepts an empty string... " >&6; }
+if test "${ac_cv_func_lstat_empty_string_bug+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_lstat_empty_string_bug=yes
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+struct stat sbuf;
+ return lstat ("", &sbuf) == 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_lstat_empty_string_bug=no
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_lstat_empty_string_bug=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_lstat_empty_string_bug" >&5
+$as_echo "$ac_cv_func_lstat_empty_string_bug" >&6; }
+if test $ac_cv_func_lstat_empty_string_bug = yes; then
+ gl_LIBOBJS="$gl_LIBOBJS lstat.$ac_objext"
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_LSTAT_EMPTY_STRING_BUG 1
+_ACEOF
+
+fi
+
+
+
+
+
+
+
+
+ GNULIB_FPRINTF_POSIX=0;
+ GNULIB_PRINTF_POSIX=0;
+ GNULIB_SNPRINTF=0;
+ GNULIB_SPRINTF_POSIX=0;
+ GNULIB_VFPRINTF_POSIX=0;
+ GNULIB_VPRINTF_POSIX=0;
+ GNULIB_VSNPRINTF=0;
+ GNULIB_VSPRINTF_POSIX=0;
+ REPLACE_FPRINTF=0;
+ REPLACE_VFPRINTF=0;
+ REPLACE_PRINTF=0;
+ REPLACE_VPRINTF=0;
+ REPLACE_SNPRINTF=0;
+ HAVE_DECL_SNPRINTF=1;
+ REPLACE_VSNPRINTF=0;
+ HAVE_DECL_VSNPRINTF=1;
+ REPLACE_SPRINTF=0;
+ REPLACE_VSPRINTF=0;
+
+{ $as_echo "$as_me:$LINENO: checking whether snprintf is declared" >&5
+$as_echo_n "checking whether snprintf is declared... " >&6; }
+if test "${ac_cv_have_decl_snprintf+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef snprintf
+ (void) snprintf;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_snprintf=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_snprintf=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_snprintf" >&5
+$as_echo "$ac_cv_have_decl_snprintf" >&6; }
+if test $ac_cv_have_decl_snprintf = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_SNPRINTF 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_SNPRINTF 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether strdup is declared" >&5
+$as_echo_n "checking whether strdup is declared... " >&6; }
+if test "${ac_cv_have_decl_strdup+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strdup
+ (void) strdup;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strdup=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_strdup=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strdup" >&5
+$as_echo "$ac_cv_have_decl_strdup" >&6; }
+if test $ac_cv_have_decl_strdup = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRDUP 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRDUP 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking absolute name of <string.h>" >&5
+$as_echo_n "checking absolute name of <string.h>... " >&6; }
+if test "${gl_cv_absolute_string_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_string_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+_ACEOF
+ gl_cv_absolute_string_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/string.h#{s#.*"\(.*/string.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_absolute_string_h" >&5
+$as_echo "$gl_cv_absolute_string_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_STRING_H "$gl_cv_absolute_string_h"
+_ACEOF
+
+
+ ABSOLUTE_STRING_H=\"$gl_cv_absolute_string_h\"
+
+
+{ $as_echo "$as_me:$LINENO: checking whether strndup is declared" >&5
+$as_echo_n "checking whether strndup is declared... " >&6; }
+if test "${ac_cv_have_decl_strndup+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strndup
+ (void) strndup;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strndup=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_strndup=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strndup" >&5
+$as_echo "$ac_cv_have_decl_strndup" >&6; }
+if test $ac_cv_have_decl_strndup = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRNDUP 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRNDUP 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether strnlen is declared" >&5
+$as_echo_n "checking whether strnlen is declared... " >&6; }
+if test "${ac_cv_have_decl_strnlen+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strnlen
+ (void) strnlen;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strnlen=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_strnlen=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strnlen" >&5
+$as_echo "$ac_cv_have_decl_strnlen" >&6; }
+if test $ac_cv_have_decl_strnlen = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRNLEN 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRNLEN 0
+_ACEOF
+
+
+fi
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5
+$as_echo_n "checking whether stat file-mode macros are broken... " >&6; }
+if test "${ac_cv_header_stat_broken+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#if defined S_ISBLK && defined S_IFDIR
+extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1];
+#endif
+
+#if defined S_ISBLK && defined S_IFCHR
+extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1];
+#endif
+
+#if defined S_ISLNK && defined S_IFREG
+extern char c3[S_ISLNK (S_IFREG) ? -1 : 1];
+#endif
+
+#if defined S_ISSOCK && defined S_IFREG
+extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1];
+#endif
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_header_stat_broken=no
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_header_stat_broken=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5
+$as_echo "$ac_cv_header_stat_broken" >&6; }
+if test $ac_cv_header_stat_broken = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STAT_MACROS_BROKEN 1
+_ACEOF
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for struct timespec in <time.h>" >&5
+$as_echo_n "checking for struct timespec in <time.h>... " >&6; }
+if test "${gl_cv_sys_struct_timespec_in_time_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <time.h>
+
+int
+main ()
+{
+static struct timespec x; x.tv_sec = x.tv_nsec;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_sys_struct_timespec_in_time_h=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_sys_struct_timespec_in_time_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_sys_struct_timespec_in_time_h" >&5
+$as_echo "$gl_cv_sys_struct_timespec_in_time_h" >&6; }
+
+ TIME_H_DEFINES_STRUCT_TIMESPEC=0
+ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0
+ if test $gl_cv_sys_struct_timespec_in_time_h = yes; then
+ TIME_H_DEFINES_STRUCT_TIMESPEC=1
+ else
+ { $as_echo "$as_me:$LINENO: checking for struct timespec in <sys/time.h>" >&5
+$as_echo_n "checking for struct timespec in <sys/time.h>... " >&6; }
+if test "${gl_cv_sys_struct_timespec_in_sys_time_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/time.h>
+
+int
+main ()
+{
+static struct timespec x; x.tv_sec = x.tv_nsec;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_sys_struct_timespec_in_sys_time_h=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_sys_struct_timespec_in_sys_time_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_sys_struct_timespec_in_sys_time_h" >&5
+$as_echo "$gl_cv_sys_struct_timespec_in_sys_time_h" >&6; }
+ if test $gl_cv_sys_struct_timespec_in_time_h = yes; then
+ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1
+ fi
+ fi
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking absolute name of <time.h>" >&5
+$as_echo_n "checking absolute name of <time.h>... " >&6; }
+if test "${gl_cv_absolute_time_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_time_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <time.h>
+_ACEOF
+ gl_cv_absolute_time_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/time.h#{s#.*"\(.*/time.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_absolute_time_h" >&5
+$as_echo "$gl_cv_absolute_time_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_TIME_H "$gl_cv_absolute_time_h"
+_ACEOF
+
+
+ ABSOLUTE_TIME_H=\"$gl_cv_absolute_time_h\"
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether clearerr_unlocked is declared" >&5
+$as_echo_n "checking whether clearerr_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_clearerr_unlocked+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef clearerr_unlocked
+ (void) clearerr_unlocked;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_clearerr_unlocked=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_clearerr_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_clearerr_unlocked" >&5
+$as_echo "$ac_cv_have_decl_clearerr_unlocked" >&6; }
+if test $ac_cv_have_decl_clearerr_unlocked = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CLEARERR_UNLOCKED 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CLEARERR_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether feof_unlocked is declared" >&5
+$as_echo_n "checking whether feof_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_feof_unlocked+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef feof_unlocked
+ (void) feof_unlocked;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_feof_unlocked=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_feof_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_feof_unlocked" >&5
+$as_echo "$ac_cv_have_decl_feof_unlocked" >&6; }
+if test $ac_cv_have_decl_feof_unlocked = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FEOF_UNLOCKED 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FEOF_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether ferror_unlocked is declared" >&5
+$as_echo_n "checking whether ferror_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_ferror_unlocked+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef ferror_unlocked
+ (void) ferror_unlocked;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_ferror_unlocked=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_ferror_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_ferror_unlocked" >&5
+$as_echo "$ac_cv_have_decl_ferror_unlocked" >&6; }
+if test $ac_cv_have_decl_ferror_unlocked = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FERROR_UNLOCKED 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FERROR_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether fgets_unlocked is declared" >&5
+$as_echo_n "checking whether fgets_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_fgets_unlocked+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef fgets_unlocked
+ (void) fgets_unlocked;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_fgets_unlocked=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_fgets_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_fgets_unlocked" >&5
+$as_echo "$ac_cv_have_decl_fgets_unlocked" >&6; }
+if test $ac_cv_have_decl_fgets_unlocked = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FGETS_UNLOCKED 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FGETS_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether fputc_unlocked is declared" >&5
+$as_echo_n "checking whether fputc_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_fputc_unlocked+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef fputc_unlocked
+ (void) fputc_unlocked;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_fputc_unlocked=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_fputc_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_fputc_unlocked" >&5
+$as_echo "$ac_cv_have_decl_fputc_unlocked" >&6; }
+if test $ac_cv_have_decl_fputc_unlocked = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FPUTC_UNLOCKED 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FPUTC_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether fread_unlocked is declared" >&5
+$as_echo_n "checking whether fread_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_fread_unlocked+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef fread_unlocked
+ (void) fread_unlocked;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_fread_unlocked=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_fread_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_fread_unlocked" >&5
+$as_echo "$ac_cv_have_decl_fread_unlocked" >&6; }
+if test $ac_cv_have_decl_fread_unlocked = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FREAD_UNLOCKED 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FREAD_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether fwrite_unlocked is declared" >&5
+$as_echo_n "checking whether fwrite_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_fwrite_unlocked+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef fwrite_unlocked
+ (void) fwrite_unlocked;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_fwrite_unlocked=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_fwrite_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_fwrite_unlocked" >&5
+$as_echo "$ac_cv_have_decl_fwrite_unlocked" >&6; }
+if test $ac_cv_have_decl_fwrite_unlocked = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FWRITE_UNLOCKED 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FWRITE_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether getchar_unlocked is declared" >&5
+$as_echo_n "checking whether getchar_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_getchar_unlocked+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getchar_unlocked
+ (void) getchar_unlocked;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getchar_unlocked=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_getchar_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getchar_unlocked" >&5
+$as_echo "$ac_cv_have_decl_getchar_unlocked" >&6; }
+if test $ac_cv_have_decl_getchar_unlocked = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETCHAR_UNLOCKED 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETCHAR_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether putchar_unlocked is declared" >&5
+$as_echo_n "checking whether putchar_unlocked is declared... " >&6; }
+if test "${ac_cv_have_decl_putchar_unlocked+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef putchar_unlocked
+ (void) putchar_unlocked;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_putchar_unlocked=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_putchar_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_putchar_unlocked" >&5
+$as_echo "$ac_cv_have_decl_putchar_unlocked" >&6; }
+if test $ac_cv_have_decl_putchar_unlocked = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PUTCHAR_UNLOCKED 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PUTCHAR_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether utime accepts a null argument" >&5
+$as_echo_n "checking whether utime accepts a null argument... " >&6; }
+if test "${ac_cv_func_utime_null+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ rm -f conftest.data; >conftest.data
+# Sequent interprets utime(file, 0) to mean use start of epoch. Wrong.
+if test "$cross_compiling" = yes; then
+ ac_cv_func_utime_null=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+ #ifdef HAVE_UTIME_H
+ # include <utime.h>
+ #endif
+int
+main ()
+{
+struct stat s, t;
+ return ! (stat ("conftest.data", &s) == 0
+ && utime ("conftest.data", 0) == 0
+ && stat ("conftest.data", &t) == 0
+ && t.st_mtime >= s.st_mtime
+ && t.st_mtime - s.st_mtime < 120);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_utime_null=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_utime_null=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_utime_null" >&5
+$as_echo "$ac_cv_func_utime_null" >&6; }
+if test $ac_cv_func_utime_null = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_UTIME_NULL 1
+_ACEOF
+
+fi
+rm -f conftest.data
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for struct utimbuf" >&5
+$as_echo_n "checking for struct utimbuf... " >&6; }
+if test "${gl_cv_sys_struct_utimbuf+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#if HAVE_SYS_TIME_H
+ #include <sys/time.h>
+ #endif
+ #include <time.h>
+ #ifdef HAVE_UTIME_H
+ #include <utime.h>
+ #endif
+
+int
+main ()
+{
+static struct utimbuf x; x.actime = x.modtime;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_sys_struct_utimbuf=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_sys_struct_utimbuf=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_sys_struct_utimbuf" >&5
+$as_echo "$gl_cv_sys_struct_utimbuf" >&6; }
+
+ if test $gl_cv_sys_struct_utimbuf = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STRUCT_UTIMBUF 1
+_ACEOF
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking determine whether the utimes function works" >&5
+$as_echo_n "checking determine whether the utimes function works... " >&6; }
+if test "${gl_cv_func_working_utimes+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_working_utimes=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <sys/time.h>
+#include <time.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <utime.h>
+
+int
+main ()
+{
+ static struct timeval timeval[2] = {{9, 10}, {999999, 999999}};
+ struct stat sbuf;
+ char const *file = "conftest.utimes";
+ FILE *f;
+ time_t now;
+ int fd;
+
+ int ok = ((f = fopen (file, "w"))
+ && fclose (f) == 0
+ && utimes (file, timeval) == 0
+ && lstat (file, &sbuf) == 0
+ && sbuf.st_atime == timeval[0].tv_sec
+ && sbuf.st_mtime == timeval[1].tv_sec);
+ unlink (file);
+ if (!ok)
+ exit (1);
+
+ ok =
+ ((f = fopen (file, "w"))
+ && fclose (f) == 0
+ && time (&now) != (time_t)-1
+ && utimes (file, NULL) == 0
+ && lstat (file, &sbuf) == 0
+ && now - sbuf.st_atime <= 2
+ && now - sbuf.st_mtime <= 2);
+ unlink (file);
+ if (!ok)
+ exit (1);
+
+ ok = (0 <= (fd = open (file, O_WRONLY|O_CREAT, 0444))
+ && close (fd) == 0
+ && utimes (file, NULL) == 0);
+ unlink (file);
+
+ exit (!ok);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_working_utimes=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_working_utimes=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_working_utimes" >&5
+$as_echo "$gl_cv_func_working_utimes" >&6; }
+
+ if test $gl_cv_func_working_utimes = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_WORKING_UTIMES 1
+_ACEOF
+
+ fi
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for EOVERFLOW" >&5
+$as_echo_n "checking for EOVERFLOW... " >&6; }
+if test "${ac_cv_decl_EOVERFLOW+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <errno.h>
+#ifdef EOVERFLOW
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+ have_eoverflow=1
+fi
+rm -f conftest*
+
+ if test -n "$have_eoverflow"; then
+ ac_cv_decl_EOVERFLOW=yes
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef EOVERFLOW
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+ have_eoverflow=1
+fi
+rm -f conftest*
+
+ if test -n "$have_eoverflow"; then
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EOVERFLOW) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EOVERFLOW) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EOVERFLOW) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EOVERFLOW) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((EOVERFLOW) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_decl_EOVERFLOW=$ac_lo;;
+'') ;;
+esac
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+
+static long int longval () { return EOVERFLOW; }
+static unsigned long int ulongval () { return EOVERFLOW; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if ((EOVERFLOW) < 0)
+ {
+ long int i = longval ();
+ if (i != (EOVERFLOW))
+ return 1;
+ fprintf (f, "%ld", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != (EOVERFLOW))
+ return 1;
+ fprintf (f, "%lu", i);
+ }
+ /* Do not output a trailing newline, as this causes \r\n confusion
+ on some platforms. */
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_decl_EOVERFLOW=`cat conftest.val`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+ else
+ ac_cv_decl_EOVERFLOW=E2BIG
+ fi
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_decl_EOVERFLOW" >&5
+$as_echo "$ac_cv_decl_EOVERFLOW" >&6; }
+ if test "$ac_cv_decl_EOVERFLOW" != yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define EOVERFLOW $ac_cv_decl_EOVERFLOW
+_ACEOF
+
+ EOVERFLOW="$ac_cv_decl_EOVERFLOW"
+
+ fi
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for wchar_t" >&5
+$as_echo_n "checking for wchar_t... " >&6; }
+if test "${gt_cv_c_wchar_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stddef.h>
+ wchar_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_c_wchar_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_c_wchar_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_c_wchar_t" >&5
+$as_echo "$gt_cv_c_wchar_t" >&6; }
+ if test $gt_cv_c_wchar_t = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_WCHAR_T 1
+_ACEOF
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for wint_t" >&5
+$as_echo_n "checking for wint_t... " >&6; }
+if test "${gt_cv_c_wint_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+ wint_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_c_wint_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_c_wint_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_c_wint_t" >&5
+$as_echo "$gt_cv_c_wint_t" >&6; }
+ if test $gt_cv_c_wint_t = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_WINT_T 1
+_ACEOF
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for inttypes.h" >&5
+$as_echo_n "checking for inttypes.h... " >&6; }
+if test "${gl_cv_header_inttypes_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <inttypes.h>
+int
+main ()
+{
+uintmax_t i = (uintmax_t) -1; return !i;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_header_inttypes_h=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_header_inttypes_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_inttypes_h" >&5
+$as_echo "$gl_cv_header_inttypes_h" >&6; }
+ if test $gl_cv_header_inttypes_h = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INTTYPES_H_WITH_UINTMAX 1
+_ACEOF
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for stdint.h" >&5
+$as_echo_n "checking for stdint.h... " >&6; }
+if test "${gl_cv_header_stdint_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <stdint.h>
+int
+main ()
+{
+uintmax_t i = (uintmax_t) -1; return !i;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_header_stdint_h=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_header_stdint_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_stdint_h" >&5
+$as_echo "$gl_cv_header_stdint_h" >&6; }
+ if test $gl_cv_header_stdint_h = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STDINT_H_WITH_UINTMAX 1
+_ACEOF
+
+ fi
+
+
+
+ ac_cv_type_long_long=$ac_cv_type_long_long_int
+ if test $ac_cv_type_long_long = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LONG_LONG 1
+_ACEOF
+
+ fi
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for intmax_t" >&5
+$as_echo_n "checking for intmax_t... " >&6; }
+if test "${gt_cv_c_intmax_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stddef.h>
+#include <stdlib.h>
+#if HAVE_STDINT_H_WITH_UINTMAX
+#include <stdint.h>
+#endif
+#if HAVE_INTTYPES_H_WITH_UINTMAX
+#include <inttypes.h>
+#endif
+
+int
+main ()
+{
+intmax_t x = -1; return !x;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_c_intmax_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_c_intmax_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_c_intmax_t" >&5
+$as_echo "$gt_cv_c_intmax_t" >&6; }
+ if test $gt_cv_c_intmax_t = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_INTMAX_T 1
+_ACEOF
+
+ else
+
+ test $ac_cv_type_long_long = yes \
+ && ac_type='long long' \
+ || ac_type='long'
+
+cat >>confdefs.h <<_ACEOF
+#define intmax_t $ac_type
+_ACEOF
+
+ fi
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking POSIX termios" >&5
+$as_echo_n "checking POSIX termios... " >&6; }
+if test "${ac_cv_sys_posix_termios+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <unistd.h>
+#include <termios.h>
+
+int
+main ()
+{
+/* SunOS 4.0.3 has termios.h but not the library calls. */
+ tcgetattr(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_sys_posix_termios=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_sys_posix_termios=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_posix_termios" >&5
+$as_echo "$ac_cv_sys_posix_termios" >&6; }
+
+
+ { $as_echo "$as_me:$LINENO: checking whether use of TIOCGWINSZ requires termios.h" >&5
+$as_echo_n "checking whether use of TIOCGWINSZ requires termios.h... " >&6; }
+if test "${jm_cv_sys_tiocgwinsz_needs_termios_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ jm_cv_sys_tiocgwinsz_needs_termios_h=no
+
+ if test $ac_cv_sys_posix_termios = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+# include <termios.h>
+# ifdef TIOCGWINSZ
+ yes
+# endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+ jm_cv_sys_tiocgwinsz_needs_termios_h=yes
+fi
+rm -f conftest*
+
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $jm_cv_sys_tiocgwinsz_needs_termios_h" >&5
+$as_echo "$jm_cv_sys_tiocgwinsz_needs_termios_h" >&6; }
+
+
+
+
+
+ if false; then
+ GL_COND_LIBTOOL_TRUE=
+ GL_COND_LIBTOOL_FALSE='#'
+else
+ GL_COND_LIBTOOL_TRUE='#'
+ GL_COND_LIBTOOL_FALSE=
+fi
+
+ gl_cond_libtool=false
+ gl_libdeps=
+ gl_ltlibdeps=
+ gl_source_base='lib'
+
+ gl_LIBOBJS="$gl_LIBOBJS acl.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS file-has-acl.$ac_objext"
+
+
+for ac_header in sys/acl.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_func in acl
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ ac_save_LIBS="$LIBS"
+ { $as_echo "$as_me:$LINENO: checking for library containing acl_get_file" >&5
+$as_echo_n "checking for library containing acl_get_file... " >&6; }
+if test "${ac_cv_search_acl_get_file+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char acl_get_file ();
+int
+main ()
+{
+return acl_get_file ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' acl; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_search_acl_get_file=$ac_res
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext
+ if test "${ac_cv_search_acl_get_file+set}" = set; then
+ break
+fi
+done
+if test "${ac_cv_search_acl_get_file+set}" = set; then
+ :
+else
+ ac_cv_search_acl_get_file=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_acl_get_file" >&5
+$as_echo "$ac_cv_search_acl_get_file" >&6; }
+ac_res=$ac_cv_search_acl_get_file
+if test "$ac_res" != no; then
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+ test "$ac_cv_search_acl_get_file" = "none required" ||
+ LIB_ACL=$ac_cv_search_acl_get_file
+fi
+
+
+
+for ac_header in acl/libacl.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+
+
+
+
+
+for ac_func in acl_get_file acl_get_fd acl_set_file acl_set_fd \
+ acl_free acl_from_mode acl_from_text \
+ acl_delete_def_file acl_extended_file
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ if test $ac_cv_header_sys_acl_h = yes; then
+ use_acl=1
+ if test $ac_cv_func_acl_get_file = yes; then
+ # If we detect the acl_get_file bug, disable ACL support altogether.
+
+ { $as_echo "$as_me:$LINENO: checking for working acl_get_file" >&5
+$as_echo_n "checking for working acl_get_file... " >&6; }
+if test "${gl_cv_func_working_acl_get_file+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_working_acl_get_file=cross-compiling
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/acl.h>
+ #include <errno.h>
+
+int
+main ()
+{
+return !! (!acl_get_file (".", ACL_TYPE_ACCESS)
+ && errno == ENOENT);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_working_acl_get_file=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_working_acl_get_file=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_working_acl_get_file" >&5
+$as_echo "$gl_cv_func_working_acl_get_file" >&6; }
+
+ if test $gl_cv_func_working_acl_get_file = yes; then
+ :
+else
+ use_acl=0
+fi
+
+
+ fi
+ else
+ use_acl=0
+ fi
+ if test $use_acl = 1 &&
+ test $ac_cv_func_acl_get_file = yes &&
+ test $ac_cv_func_acl_free = yes; then
+
+for ac_func in acl_entries
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ fi
+ LIBS="$ac_save_LIBS"
+ if test $use_acl = 1; then
+ ac_save_LIBS="$LIBS"
+ { $as_echo "$as_me:$LINENO: checking for library containing acl_trivial" >&5
+$as_echo_n "checking for library containing acl_trivial... " >&6; }
+if test "${ac_cv_search_acl_trivial+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char acl_trivial ();
+int
+main ()
+{
+return acl_trivial ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' sec; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_search_acl_trivial=$ac_res
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext
+ if test "${ac_cv_search_acl_trivial+set}" = set; then
+ break
+fi
+done
+if test "${ac_cv_search_acl_trivial+set}" = set; then
+ :
+else
+ ac_cv_search_acl_trivial=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_acl_trivial" >&5
+$as_echo "$ac_cv_search_acl_trivial" >&6; }
+ac_res=$ac_cv_search_acl_trivial
+if test "$ac_res" != no; then
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ACL_TRIVIAL 1
+_ACEOF
+
+ test "$ac_cv_search_acl_trivial" = "none required" ||
+ LIB_ACL_TRIVIAL="$ac_cv_search_acl_trivial"
+fi
+
+
+ LIBS="$ac_save_LIBS"
+ fi
+
+cat >>confdefs.h <<_ACEOF
+#define USE_ACL $use_acl
+_ACEOF
+
+
+
+
+
+
+
+ if test $ac_cv_func_alloca_works = no; then
+ :
+ fi
+
+ # Define an additional variable used in the Makefile substitution.
+ if test $ac_cv_working_alloca_h = yes; then
+ { $as_echo "$as_me:$LINENO: checking for alloca as a compiler built-in" >&5
+$as_echo_n "checking for alloca as a compiler built-in... " >&6; }
+if test "${gl_cv_rpl_alloca+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#if defined __GNUC__ || defined _AIX || defined _MSC_VER
+ Need own alloca
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Need own alloca" >/dev/null 2>&1; then
+ gl_cv_rpl_alloca=yes
+else
+ gl_cv_rpl_alloca=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_rpl_alloca" >&5
+$as_echo "$gl_cv_rpl_alloca" >&6; }
+ if test $gl_cv_rpl_alloca = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA 1
+_ACEOF
+
+ ALLOCA_H=alloca.h
+ else
+ ALLOCA_H=
+ fi
+ else
+ ALLOCA_H=alloca.h
+ fi
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA_H 1
+_ACEOF
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS argmatch.$ac_objext"
+
+
+
+
+
+
+
+
+ if test $ac_cv_header_arpa_inet_h = yes; then
+ ARPA_INET_H=''
+ else
+ ARPA_INET_H='arpa/inet.h'
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+done
+IFS=$as_save_IFS
+
+fi
+
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ test -d ./--version && rmdir ./--version
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+
+ { $as_echo "$as_me:$LINENO: checking whether to enable assertions" >&5
+$as_echo_n "checking whether to enable assertions... " >&6; }
+ # Check whether --enable-assert was given.
+if test "${enable_assert+set}" = set; then
+ enableval=$enable_assert; { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define NDEBUG 1
+_ACEOF
+
+else
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+
+
+
+
+for ac_func in atexit
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_atexit = no; then
+
+ :
+
+ fi
+
+
+ gl_LIBOBJS="$gl_LIBOBJS backupfile.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS c-strtod.$ac_objext"
+
+
+ :
+
+
+ gl_LIBOBJS="$gl_LIBOBJS c-strtold.$ac_objext"
+
+
+
+ :
+
+ { $as_echo "$as_me:$LINENO: checking for GNU libc compatible calloc" >&5
+$as_echo_n "checking for GNU libc compatible calloc... " >&6; }
+if test "${ac_cv_func_calloc_0_nonnull+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_calloc_0_nonnull=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+exit (!calloc (0, 0) || calloc ((size_t) -1 / 8 + 1, 8));
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_calloc_0_nonnull=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_calloc_0_nonnull=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_calloc_0_nonnull" >&5
+$as_echo "$ac_cv_func_calloc_0_nonnull" >&6; }
+if test $ac_cv_func_calloc_0_nonnull = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CALLOC 1
+_ACEOF
+
+else
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_CALLOC 0
+_ACEOF
+
+ gl_LIBOBJS="$gl_LIBOBJS calloc.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define calloc rpl_calloc
+_ACEOF
+
+fi
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS canon-host.$ac_objext"
+
+ :
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS canonicalize.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_CANONICALIZE 1
+_ACEOF
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether this system has an arbitrary file name length limit" >&5
+$as_echo_n "checking whether this system has an arbitrary file name length limit... " >&6; }
+if test "${gl_cv_have_arbitrary_file_name_length_limit+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <unistd.h>
+#include <limits.h>
+#if defined PATH_MAX || defined MAXPATHLEN
+have_arbitrary_file_name_length_limit
+#endif
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "have_arbitrary_file_name_length_limit" >/dev/null 2>&1; then
+ gl_cv_have_arbitrary_file_name_length_limit=yes
+else
+ gl_cv_have_arbitrary_file_name_length_limit=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_have_arbitrary_file_name_length_limit" >&5
+$as_echo "$gl_cv_have_arbitrary_file_name_length_limit" >&6; }
+
+ if test $gl_cv_have_arbitrary_file_name_length_limit = yes; then
+ gl_LIBOBJS="$gl_LIBOBJS chdir-long.$ac_objext"
+
+ :
+
+ fi
+
+
+
+
+
+
+
+ if test $ac_cv_func_chown_works = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define CHOWN_FAILS_TO_HONOR_ID_OF_NEGATIVE_ONE 1
+_ACEOF
+
+ fi
+
+ # If chown has either of the above problems, then we need the wrapper.
+ if test $ac_cv_func_chown_works$gl_cv_func_chown_follows_symlink = yesyes; then
+ : # no wrapper needed
+ else
+ REPLACE_CHOWN=1
+ gl_LIBOBJS="$gl_LIBOBJS chown.$ac_objext"
+
+ { $as_echo "$as_me:$LINENO: checking for fchown" >&5
+$as_echo_n "checking for fchown... " >&6; }
+if test "${ac_cv_func_fchown+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define fchown to an innocuous variant, in case <limits.h> declares fchown.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define fchown innocuous_fchown
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char fchown (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef fchown
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char fchown ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_fchown || defined __stub___fchown
+choke me
+#endif
+
+int
+main ()
+{
+return fchown ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_fchown=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_fchown=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_fchown" >&5
+$as_echo "$ac_cv_func_fchown" >&6; }
+if test $ac_cv_func_fchown = yes; then
+ :
+else
+ gl_LIBOBJS="$gl_LIBOBJS fchown-stub.$ac_objext"
+fi
+
+
+ fi
+
+
+
+ GNULIB_CHOWN=1
+
+
+
+
+ # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function.
+ # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4.
+
+ # Save and restore LIBS so e.g., -lrt, isn't added to it. Otherwise, *all*
+ # programs in the package would end up linked with that potentially-shared
+ # library, inducing unnecessary run-time overhead.
+ gl_saved_libs=$LIBS
+ { $as_echo "$as_me:$LINENO: checking for library containing clock_gettime" >&5
+$as_echo_n "checking for library containing clock_gettime... " >&6; }
+if test "${ac_cv_search_clock_gettime+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char clock_gettime ();
+int
+main ()
+{
+return clock_gettime ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' rt posix4; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_search_clock_gettime=$ac_res
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext
+ if test "${ac_cv_search_clock_gettime+set}" = set; then
+ break
+fi
+done
+if test "${ac_cv_search_clock_gettime+set}" = set; then
+ :
+else
+ ac_cv_search_clock_gettime=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_clock_gettime" >&5
+$as_echo "$ac_cv_search_clock_gettime" >&6; }
+ac_res=$ac_cv_search_clock_gettime
+if test "$ac_res" != no; then
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+ test "$ac_cv_search_clock_gettime" = "none required" ||
+ LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime
+fi
+
+
+
+
+for ac_func in clock_gettime clock_settime
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ LIBS=$gl_saved_libs
+
+
+ gl_LIBOBJS="$gl_LIBOBJS cloexec.$ac_objext"
+
+
+ gl_LIBOBJS="$gl_LIBOBJS close-stream.$ac_objext"
+
+ :
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_CLOSE_STREAM 1
+_ACEOF
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS closeout.$ac_objext"
+
+ :
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS cycle-check.$ac_objext"
+
+ { $as_echo "$as_me:$LINENO: checking for d_ino member in directory struct" >&5
+$as_echo_n "checking for d_ino member in directory struct... " >&6; }
+if test "${jm_cv_struct_dirent_d_ino+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#include <dirent.h>
+
+int
+main ()
+{
+struct dirent dp; dp.d_ino = 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ jm_cv_struct_dirent_d_ino=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ jm_cv_struct_dirent_d_ino=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $jm_cv_struct_dirent_d_ino" >&5
+$as_echo "$jm_cv_struct_dirent_d_ino" >&6; }
+ if test $jm_cv_struct_dirent_d_ino = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define D_INO_IN_DIRENT 1
+_ACEOF
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for d_type member in directory struct" >&5
+$as_echo_n "checking for d_type member in directory struct... " >&6; }
+if test "${jm_cv_struct_dirent_d_type+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#include <dirent.h>
+
+int
+main ()
+{
+struct dirent dp; dp.d_type = 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ jm_cv_struct_dirent_d_type=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ jm_cv_struct_dirent_d_type=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $jm_cv_struct_dirent_d_type" >&5
+$as_echo "$jm_cv_struct_dirent_d_type" >&6; }
+ if test $jm_cv_struct_dirent_d_type = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STRUCT_DIRENT_D_TYPE 1
+_ACEOF
+
+ fi
+
+
+
+
+
+
+for ac_func in dirfd
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ { $as_echo "$as_me:$LINENO: checking whether dirfd is declared" >&5
+$as_echo_n "checking whether dirfd is declared... " >&6; }
+if test "${ac_cv_have_decl_dirfd+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <dirent.h>
+
+int
+main ()
+{
+#ifndef dirfd
+ (void) dirfd;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_dirfd=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_dirfd=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_dirfd" >&5
+$as_echo "$ac_cv_have_decl_dirfd" >&6; }
+if test $ac_cv_have_decl_dirfd = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_DIRFD 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_DIRFD 0
+_ACEOF
+
+
+fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether dirfd is a macro" >&5
+$as_echo_n "checking whether dirfd is a macro... " >&6; }
+if test "${gl_cv_func_dirfd_macro+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#include <dirent.h>
+#ifdef dirfd
+ dirent_header_defines_dirfd
+#endif
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "dirent_header_defines_dirfd" >/dev/null 2>&1; then
+ gl_cv_func_dirfd_macro=yes
+else
+ gl_cv_func_dirfd_macro=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_dirfd_macro" >&5
+$as_echo "$gl_cv_func_dirfd_macro" >&6; }
+
+ # Use the replacement only if we have no function, macro,
+ # or declaration with that name.
+ if test $ac_cv_func_dirfd,$ac_cv_have_decl_dirfd,$gl_cv_func_dirfd_macro \
+ = no,no,no; then
+
+for ac_func in dirfd
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ { $as_echo "$as_me:$LINENO: checking how to get the file descriptor associated with an open DIR*" >&5
+$as_echo_n "checking how to get the file descriptor associated with an open DIR*... " >&6; }
+if test "${gl_cv_sys_dir_fd_member_name+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ dirfd_save_CFLAGS=$CFLAGS
+ for ac_expr in d_fd dd_fd; do
+
+ CFLAGS="$CFLAGS -DDIR_FD_MEMBER_NAME=$ac_expr"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <dirent.h>
+int
+main ()
+{
+DIR *dir_p = opendir("."); (void) dir_p->DIR_FD_MEMBER_NAME;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ dir_fd_found=yes
+
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS=$dirfd_save_CFLAGS
+ test "$dir_fd_found" = yes && break
+ done
+ test "$dir_fd_found" = yes || ac_expr=no_such_member
+
+ gl_cv_sys_dir_fd_member_name=$ac_expr
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_sys_dir_fd_member_name" >&5
+$as_echo "$gl_cv_sys_dir_fd_member_name" >&6; }
+ if test $gl_cv_sys_dir_fd_member_name != no_such_member; then
+
+cat >>confdefs.h <<_ACEOF
+#define DIR_FD_MEMBER_NAME $gl_cv_sys_dir_fd_member_name
+_ACEOF
+
+ fi
+
+
+ fi
+
+
+ gl_LIBOBJS="$gl_LIBOBJS basename.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS dirname.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS stripslash.$ac_objext"
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether // is distinct from /" >&5
+$as_echo_n "checking whether // is distinct from /... " >&6; }
+if test "${gl_cv_double_slash_root+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test x"$cross_compiling" = xyes ; then
+ # When cross-compiling, there is no way to tell whether // is special
+ # short of a list of hosts. However, the only known hosts to date
+ # that have a distinct // are Apollo DomainOS (too old to port to),
+ # Cygwin, and z/OS. If anyone knows of another system for which // has
+ # special semantics and is distinct from /, please report it to
+ # <bug-gnulib@gnu.org>.
+ case $host in
+ *-cygwin | i370-ibm-openedition)
+ gl_cv_double_slash_root=yes ;;
+ *)
+ # Be optimistic and assume that / and // are the same when we
+ # don't know.
+ gl_cv_double_slash_root='unknown, assuming no' ;;
+ esac
+ else
+ set x `ls -di / //`
+ if test $2 = $4 && wc //dev/null >/dev/null 2>&1; then
+ gl_cv_double_slash_root=no
+ else
+ gl_cv_double_slash_root=yes
+ fi
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_double_slash_root" >&5
+$as_echo "$gl_cv_double_slash_root" >&6; }
+ if test "$gl_cv_double_slash_root" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define DOUBLE_SLASH_IS_DISTINCT_ROOT 1
+_ACEOF
+
+ fi
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_func_dup2 = no; then
+ HAVE_DUP2=0
+ gl_LIBOBJS="$gl_LIBOBJS dup2.$ac_objext"
+ fi
+
+
+
+ GNULIB_DUP2=1
+
+
+ { $as_echo "$as_me:$LINENO: checking for error_at_line" >&5
+$as_echo_n "checking for error_at_line... " >&6; }
+if test "${ac_cv_lib_error_at_line+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <error.h>
+int
+main ()
+{
+error_at_line (0, 0, "", 0, "an error occurred");
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_error_at_line=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_error_at_line=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_error_at_line" >&5
+$as_echo "$ac_cv_lib_error_at_line" >&6; }
+if test $ac_cv_lib_error_at_line = no; then
+ gl_LIBOBJS="$gl_LIBOBJS error.$ac_objext"
+fi
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+for ac_func in euidaccess
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_euidaccess = no; then
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Solaris 9 needs -lgen to get the eaccess function.
+ # Save and restore LIBS so -lgen isn't added to it. Otherwise, *all*
+ # programs in the package would end up linked with that potentially-shared
+ # library, inducing unnecessary run-time overhead.
+ gl_saved_libs=$LIBS
+ { $as_echo "$as_me:$LINENO: checking for library containing eaccess" >&5
+$as_echo_n "checking for library containing eaccess... " >&6; }
+if test "${ac_cv_search_eaccess+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char eaccess ();
+int
+main ()
+{
+return eaccess ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' gen; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_search_eaccess=$ac_res
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext
+ if test "${ac_cv_search_eaccess+set}" = set; then
+ break
+fi
+done
+if test "${ac_cv_search_eaccess+set}" = set; then
+ :
+else
+ ac_cv_search_eaccess=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_eaccess" >&5
+$as_echo "$ac_cv_search_eaccess" >&6; }
+ac_res=$ac_cv_search_eaccess
+if test "$ac_res" != no; then
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+ test "$ac_cv_search_eaccess" = "none required" ||
+ LIB_EACCESS=$ac_cv_search_eaccess
+fi
+
+
+
+for ac_func in eaccess
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ LIBS=$gl_saved_libs
+
+ fi
+
+
+ gl_LIBOBJS="$gl_LIBOBJS exclude.$ac_objext"
+
+
+ gl_LIBOBJS="$gl_LIBOBJS exitfail.$ac_objext"
+
+ :
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_func_fchdir = no; then
+ REPLACE_FCHDIR=1
+ gl_LIBOBJS="$gl_LIBOBJS fchdir.$ac_objext"
+ :
+
+cat >>confdefs.h <<\_ACEOF
+#define FCHDIR_REPLACEMENT 1
+_ACEOF
+
+ { $as_echo "$as_me:$LINENO: checking absolute name of <dirent.h>" >&5
+$as_echo_n "checking absolute name of <dirent.h>... " >&6; }
+if test "${gl_cv_absolute_dirent_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_dirent_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <dirent.h>
+_ACEOF
+ gl_cv_absolute_dirent_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/dirent.h#{s#.*"\(.*/dirent.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_absolute_dirent_h" >&5
+$as_echo "$gl_cv_absolute_dirent_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_DIRENT_H "$gl_cv_absolute_dirent_h"
+_ACEOF
+
+
+ ABSOLUTE_DIRENT_H=\"$gl_cv_absolute_dirent_h\"
+ DIRENT_H='dirent.h'
+ else
+ DIRENT_H=
+ fi
+
+
+
+
+
+ GNULIB_FCHDIR=1
+
+
+ { $as_echo "$as_me:$LINENO: checking for working fcntl.h" >&5
+$as_echo_n "checking for working fcntl.h... " >&6; }
+if test "${gl_cv_header_working_fcntl_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ gl_cv_header_working_fcntl_h=cross-compiling
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
+ #include <fcntl.h>
+ #ifndef O_NOATIME
+ #define O_NOATIME 0
+ #endif
+ #ifndef O_NOFOLLOW
+ #define O_NOFOLLOW 0
+ #endif
+ static int const constants[] =
+ {
+ O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
+ O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
+ };
+
+int
+main ()
+{
+
+ int status = !constants;
+ {
+ static char const sym[] = "conftest.sym";
+ if (symlink (".", sym) != 0
+ || close (open (sym, O_RDONLY | O_NOFOLLOW)) == 0)
+ status |= 32;
+ }
+ {
+ static char const file[] = "confdefs.h";
+ int fd = open (file, O_RDONLY | O_NOATIME);
+ char c;
+ struct stat st0, st1;
+ if (fd < 0
+ || fstat (fd, &st0) != 0
+ || sleep (1) != 0
+ || read (fd, &c, 1) != 1
+ || close (fd) != 0
+ || stat (file, &st1) != 0
+ || st0.st_atime != st1.st_atime)
+ status |= 64;
+ }
+ return status;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_header_working_fcntl_h=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+case $? in #(
+ 32) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
+ 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
+ 96) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
+ *) gl_cv_header_working_fcntl_h='no';;
+ esac
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_working_fcntl_h" >&5
+$as_echo "$gl_cv_header_working_fcntl_h" >&6; }
+
+ case $gl_cv_header_working_fcntl_h in #(
+ *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
+ *) ac_val=1;;
+ esac
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_WORKING_O_NOATIME $ac_val
+_ACEOF
+
+
+ case $gl_cv_header_working_fcntl_h in #(
+ *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
+ *) ac_val=1;;
+ esac
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_WORKING_O_NOFOLLOW $ac_val
+_ACEOF
+
+
+ { $as_echo "$as_me:$LINENO: checking absolute name of <fcntl.h>" >&5
+$as_echo_n "checking absolute name of <fcntl.h>... " >&6; }
+if test "${gl_cv_absolute_fcntl_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_fcntl_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <fcntl.h>
+_ACEOF
+ gl_cv_absolute_fcntl_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/fcntl.h#{s#.*"\(.*/fcntl.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_absolute_fcntl_h" >&5
+$as_echo "$gl_cv_absolute_fcntl_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_FCNTL_H "$gl_cv_absolute_fcntl_h"
+_ACEOF
+
+
+ ABSOLUTE_FCNTL_H=\"$gl_cv_absolute_fcntl_h\"
+
+ FCNTL_H='fcntl.h'
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS open-safer.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS creat-safer.$ac_objext"
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_FCNTL_SAFER 1
+_ACEOF
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS file-type.$ac_objext"
+
+
+ { $as_echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5
+$as_echo_n "checking for struct stat.st_blocks... " >&6; }
+if test "${ac_cv_member_struct_stat_st_blocks+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static struct stat ac_aggr;
+if (ac_aggr.st_blocks)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_stat_st_blocks=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static struct stat ac_aggr;
+if (sizeof ac_aggr.st_blocks)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_stat_st_blocks=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_stat_st_blocks=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blocks" >&5
+$as_echo "$ac_cv_member_struct_stat_st_blocks" >&6; }
+if test $ac_cv_member_struct_stat_st_blocks = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_BLOCKS 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ST_BLOCKS 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS fileblocks.$ac_objext"
+fi
+
+
+ if test $ac_cv_member_struct_stat_st_blocks = no; then
+
+
+
+
+
+
+
+ :
+
+ fi
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS filemode.$ac_objext"
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS filenamecat.$ac_objext"
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for flexible array member" >&5
+$as_echo_n "checking for flexible array member... " >&6; }
+if test "${ac_cv_c_flexmember+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+ #include <stdio.h>
+ #include <stddef.h>
+ struct s { int n; double d[]; };
+int
+main ()
+{
+int m = getchar ();
+ struct s *p = malloc (offsetof (struct s, d)
+ + m * sizeof (double));
+ p->d[0] = 0.0;
+ return p->d != (double *) NULL;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_flexmember=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_c_flexmember=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_flexmember" >&5
+$as_echo "$ac_cv_c_flexmember" >&6; }
+ if test $ac_cv_c_flexmember = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define FLEXIBLE_ARRAY_MEMBER
+_ACEOF
+
+ else
+ cat >>confdefs.h <<\_ACEOF
+#define FLEXIBLE_ARRAY_MEMBER 1
+_ACEOF
+
+ fi
+
+ # No macro. You should also use one of fnmatch-posix or fnmatch-gnu.
+
+
+
+ FNMATCH_H=
+ { $as_echo "$as_me:$LINENO: checking for working GNU fnmatch" >&5
+$as_echo_n "checking for working GNU fnmatch... " >&6; }
+if test "${ac_cv_func_fnmatch_gnu+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_fnmatch_gnu=cross
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <fnmatch.h>
+ static int
+ y (char const *pattern, char const *string, int flags)
+ {
+ return fnmatch (pattern, string, flags) == 0;
+ }
+ static int
+ n (char const *pattern, char const *string, int flags)
+ {
+ return fnmatch (pattern, string, flags) == FNM_NOMATCH;
+ }
+
+int
+main ()
+{
+char const *Apat = 'A' < '\\\\' ? "[A-\\\\\\\\]" : "[\\\\\\\\-A]";
+ char const *apat = 'a' < '\\\\' ? "[a-\\\\\\\\]" : "[\\\\\\\\-a]";
+ static char const A_1[] = { 'A' - 1, 0 };
+ static char const A01[] = { 'A' + 1, 0 };
+ static char const a_1[] = { 'a' - 1, 0 };
+ static char const a01[] = { 'a' + 1, 0 };
+ static char const bs_1[] = { '\\\\' - 1, 0 };
+ static char const bs01[] = { '\\\\' + 1, 0 };
+ return
+ !(n ("a*", "", 0)
+ && y ("a*", "abc", 0)
+ && n ("d*/*1", "d/s/1", FNM_PATHNAME)
+ && y ("a\\\\bc", "abc", 0)
+ && n ("a\\\\bc", "abc", FNM_NOESCAPE)
+ && y ("*x", ".x", 0)
+ && n ("*x", ".x", FNM_PERIOD)
+ && y (Apat, "\\\\", 0) && y (Apat, "A", 0)
+ && y (apat, "\\\\", 0) && y (apat, "a", 0)
+ && n (Apat, A_1, 0) == ('A' < '\\\\')
+ && n (apat, a_1, 0) == ('a' < '\\\\')
+ && y (Apat, A01, 0) == ('A' < '\\\\')
+ && y (apat, a01, 0) == ('a' < '\\\\')
+ && y (Apat, bs_1, 0) == ('A' < '\\\\')
+ && y (apat, bs_1, 0) == ('a' < '\\\\')
+ && n (Apat, bs01, 0) == ('A' < '\\\\')
+ && n (apat, bs01, 0) == ('a' < '\\\\')
+ && y ("xxXX", "xXxX", FNM_CASEFOLD)
+ && y ("a++(x|yy)b", "a+xyyyyxb", FNM_EXTMATCH)
+ && n ("d*/*1", "d/s/1", FNM_FILE_NAME)
+ && y ("*", "x", FNM_FILE_NAME | FNM_LEADING_DIR)
+ && y ("x*", "x/y/z", FNM_FILE_NAME | FNM_LEADING_DIR)
+ && y ("*c*", "c/x", FNM_FILE_NAME | FNM_LEADING_DIR));
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_fnmatch_gnu=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_fnmatch_gnu=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_fnmatch_gnu" >&5
+$as_echo "$ac_cv_func_fnmatch_gnu" >&6; }
+if test $ac_cv_func_fnmatch_gnu = yes; then
+ rm -f lib/fnmatch.h
+else
+ { $as_echo "$as_me:$LINENO: checking whether isblank is declared" >&5
+$as_echo_n "checking whether isblank is declared... " >&6; }
+if test "${ac_cv_have_decl_isblank+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+
+int
+main ()
+{
+#ifndef isblank
+ (void) isblank;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_isblank=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_isblank=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_isblank" >&5
+$as_echo "$ac_cv_have_decl_isblank" >&6; }
+if test $ac_cv_have_decl_isblank = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ISBLANK 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ISBLANK 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+gl_LIBOBJS="$gl_LIBOBJS fnmatch.$ac_objext"
+FNMATCH_H=fnmatch.h
+
+fi
+
+
+ if test $ac_cv_func_fnmatch_gnu != yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define fnmatch gnu_fnmatch
+_ACEOF
+
+ fi
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS fopen-safer.$ac_objext"
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_FOPEN_SAFER 1
+_ACEOF
+
+
+
+
+
+
+
+
+
+
+for ac_func in __fpending
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ fp_headers='
+# include <stdio.h>
+# if HAVE_STDIO_EXT_H
+# include <stdio_ext.h>
+# endif
+'
+ { $as_echo "$as_me:$LINENO: checking whether __fpending is declared" >&5
+$as_echo_n "checking whether __fpending is declared... " >&6; }
+if test "${ac_cv_have_decl___fpending+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$fp_headers
+
+int
+main ()
+{
+#ifndef __fpending
+ (void) __fpending;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl___fpending=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl___fpending=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl___fpending" >&5
+$as_echo "$ac_cv_have_decl___fpending" >&6; }
+if test $ac_cv_have_decl___fpending = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL___FPENDING 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL___FPENDING 0
+_ACEOF
+
+
+fi
+
+
+ if test $ac_cv_func___fpending = no; then
+ { $as_echo "$as_me:$LINENO: checking how to determine the number of pending output bytes on a stream" >&5
+$as_echo_n "checking how to determine the number of pending output bytes on a stream... " >&6; }
+if test "${ac_cv_sys_pending_output_n_bytes+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ for ac_expr in \
+ \
+ '# glibc2' \
+ 'fp->_IO_write_ptr - fp->_IO_write_base' \
+ \
+ '# traditional Unix' \
+ 'fp->_ptr - fp->_base' \
+ \
+ '# BSD' \
+ 'fp->_p - fp->_bf._base' \
+ \
+ '# SCO, Unixware' \
+ '(fp->__ptr ? fp->__ptr - fp->__base : 0)' \
+ \
+ '# old glibc?' \
+ 'fp->__bufp - fp->__buffer' \
+ \
+ '# old glibc iostream?' \
+ 'fp->_pptr - fp->_pbase' \
+ \
+ '# VMS' \
+ '(*fp)->_ptr - (*fp)->_base' \
+ \
+ '# e.g., DGUX R4.11; the info is not available' \
+ 1 \
+ ; do
+
+ # Skip each embedded comment.
+ case "$ac_expr" in '#'*) continue;; esac
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdio.h>
+
+int
+main ()
+{
+FILE *fp = stdin; (void) ($ac_expr);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ fp_done=yes
+
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test "$fp_done" = yes && break
+ done
+
+ ac_cv_sys_pending_output_n_bytes=$ac_expr
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_pending_output_n_bytes" >&5
+$as_echo "$ac_cv_sys_pending_output_n_bytes" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define PENDING_OUTPUT_N_BYTES $ac_cv_sys_pending_output_n_bytes
+_ACEOF
+
+ fi
+
+
+ gl_LIBOBJS="$gl_LIBOBJS fprintftime.$ac_objext"
+
+
+ { $as_echo "$as_me:$LINENO: checking whether free (NULL) is known to work" >&5
+$as_echo_n "checking whether free (NULL) is known to work... " >&6; }
+if test "${gl_cv_func_free+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <unistd.h>
+int
+main ()
+{
+#if _POSIX_VERSION < 199009L && \
+ (defined unix || defined _unix || defined _unix_ \
+ || defined __unix || defined __unix__)
+ #error "'free (NULL)' is not known to work"
+ #endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_func_free=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_free=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_free" >&5
+$as_echo "$gl_cv_func_free" >&6; }
+
+ if test $gl_cv_func_free = no; then
+ gl_LIBOBJS="$gl_LIBOBJS free.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define free rpl_free
+_ACEOF
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_header in sys/mount.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+ #if HAVE_SYS_PARAM_H
+ #include <sys/param.h>
+ #endif
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+{ $as_echo "$as_me:$LINENO: checking how to get file system space usage" >&5
+$as_echo "$as_me: checking how to get file system space usage" >&6;}
+ac_fsusage_space=no
+
+# Perform only the link test since it seems there are no variants of the
+# statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
+# because that got a false positive on SCO OSR5. Adding the declaration
+# of a `struct statvfs' causes this test to fail (as it should) on such
+# systems. That system is reported to work fine with STAT_STATFS4 which
+# is what it gets when this test fails.
+if test $ac_fsusage_space = no; then
+ # SVR4
+ { $as_echo "$as_me:$LINENO: checking for statvfs function (SVR4)" >&5
+$as_echo_n "checking for statvfs function (SVR4)... " >&6; }
+if test "${fu_cv_sys_stat_statvfs+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#if defined __GLIBC__ && !defined __BEOS__
+Do not use statvfs on systems with GNU libc, because that function stats
+all preceding entries in /proc/mounts, and that makes df hang if even
+one of the corresponding file systems is hard-mounted, but not available.
+statvfs in GNU libc on BeOS operates differently: it only makes a system
+call.
+#endif
+#include <sys/statvfs.h>
+int
+main ()
+{
+struct statvfs fsd; statvfs (0, &fsd);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ fu_cv_sys_stat_statvfs=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ fu_cv_sys_stat_statvfs=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_statvfs" >&5
+$as_echo "$fu_cv_sys_stat_statvfs" >&6; }
+ if test $fu_cv_sys_stat_statvfs = yes; then
+ ac_fsusage_space=yes
+
+cat >>confdefs.h <<\_ACEOF
+#define STAT_STATVFS 1
+_ACEOF
+
+ fi
+fi
+
+if test $ac_fsusage_space = no; then
+ # DEC Alpha running OSF/1
+ { $as_echo "$as_me:$LINENO: checking for 3-argument statfs function (DEC OSF/1)" >&5
+$as_echo_n "checking for 3-argument statfs function (DEC OSF/1)... " >&6; }
+ if test "${fu_cv_sys_stat_statfs3_osf1+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ fu_cv_sys_stat_statfs3_osf1=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/mount.h>
+ int
+ main ()
+ {
+ struct statfs fsd;
+ fsd.f_fsize = 0;
+ return statfs (".", &fsd, sizeof (struct statfs)) != 0;
+ }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ fu_cv_sys_stat_statfs3_osf1=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+fu_cv_sys_stat_statfs3_osf1=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_statfs3_osf1" >&5
+$as_echo "$fu_cv_sys_stat_statfs3_osf1" >&6; }
+ if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
+ ac_fsusage_space=yes
+
+cat >>confdefs.h <<\_ACEOF
+#define STAT_STATFS3_OSF1 1
+_ACEOF
+
+ fi
+fi
+
+if test $ac_fsusage_space = no; then
+# AIX
+ { $as_echo "$as_me:$LINENO: checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)" >&5
+$as_echo_n "checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)... " >&6; }
+ if test "${fu_cv_sys_stat_statfs2_bsize+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ fu_cv_sys_stat_statfs2_bsize=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+#ifdef HAVE_SYS_VFS_H
+#include <sys/vfs.h>
+#endif
+ int
+ main ()
+ {
+ struct statfs fsd;
+ fsd.f_bsize = 0;
+ return statfs (".", &fsd) != 0;
+ }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ fu_cv_sys_stat_statfs2_bsize=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+fu_cv_sys_stat_statfs2_bsize=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_statfs2_bsize" >&5
+$as_echo "$fu_cv_sys_stat_statfs2_bsize" >&6; }
+ if test $fu_cv_sys_stat_statfs2_bsize = yes; then
+ ac_fsusage_space=yes
+
+cat >>confdefs.h <<\_ACEOF
+#define STAT_STATFS2_BSIZE 1
+_ACEOF
+
+ fi
+fi
+
+if test $ac_fsusage_space = no; then
+# SVR3
+ { $as_echo "$as_me:$LINENO: checking for four-argument statfs (AIX-3.2.5, SVR3)" >&5
+$as_echo_n "checking for four-argument statfs (AIX-3.2.5, SVR3)... " >&6; }
+ if test "${fu_cv_sys_stat_statfs4+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ fu_cv_sys_stat_statfs4=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <sys/statfs.h>
+ int
+ main ()
+ {
+ struct statfs fsd;
+ return statfs (".", &fsd, sizeof fsd, 0) != 0;
+ }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ fu_cv_sys_stat_statfs4=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+fu_cv_sys_stat_statfs4=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_statfs4" >&5
+$as_echo "$fu_cv_sys_stat_statfs4" >&6; }
+ if test $fu_cv_sys_stat_statfs4 = yes; then
+ ac_fsusage_space=yes
+
+cat >>confdefs.h <<\_ACEOF
+#define STAT_STATFS4 1
+_ACEOF
+
+ fi
+fi
+
+if test $ac_fsusage_space = no; then
+# 4.4BSD and NetBSD
+ { $as_echo "$as_me:$LINENO: checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)" >&5
+$as_echo_n "checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)... " >&6; }
+ if test "${fu_cv_sys_stat_statfs2_fsize+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ fu_cv_sys_stat_statfs2_fsize=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+ int
+ main ()
+ {
+ struct statfs fsd;
+ fsd.f_fsize = 0;
+ return statfs (".", &fsd) != 0;
+ }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ fu_cv_sys_stat_statfs2_fsize=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+fu_cv_sys_stat_statfs2_fsize=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_statfs2_fsize" >&5
+$as_echo "$fu_cv_sys_stat_statfs2_fsize" >&6; }
+ if test $fu_cv_sys_stat_statfs2_fsize = yes; then
+ ac_fsusage_space=yes
+
+cat >>confdefs.h <<\_ACEOF
+#define STAT_STATFS2_FSIZE 1
+_ACEOF
+
+ fi
+fi
+
+if test $ac_fsusage_space = no; then
+ # Ultrix
+ { $as_echo "$as_me:$LINENO: checking for two-argument statfs with struct fs_data (Ultrix)" >&5
+$as_echo_n "checking for two-argument statfs with struct fs_data (Ultrix)... " >&6; }
+ if test "${fu_cv_sys_stat_fs_data+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ fu_cv_sys_stat_fs_data=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+#ifdef HAVE_SYS_FS_TYPES_H
+#include <sys/fs_types.h>
+#endif
+ int
+ main ()
+ {
+ struct fs_data fsd;
+ /* Ultrix's statfs returns 1 for success,
+ 0 for not mounted, -1 for failure. */
+ return statfs (".", &fsd) != 1;
+ }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ fu_cv_sys_stat_fs_data=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+fu_cv_sys_stat_fs_data=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_stat_fs_data" >&5
+$as_echo "$fu_cv_sys_stat_fs_data" >&6; }
+ if test $fu_cv_sys_stat_fs_data = yes; then
+ ac_fsusage_space=yes
+
+cat >>confdefs.h <<\_ACEOF
+#define STAT_STATFS2_FS_DATA 1
+_ACEOF
+
+ fi
+fi
+
+if test $ac_fsusage_space = no; then
+ # SVR2
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/filsys.h>
+
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STAT_READ_FILSYS 1
+_ACEOF
+
+ ac_fsusage_space=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f conftest.err conftest.$ac_ext
+fi
+
+if test $ac_fsusage_space = yes; then
+ gl_cv_fs_space=yes
+else
+ gl_cv_fs_space=no
+fi
+
+
+
+ if test $gl_cv_fs_space = yes; then
+ gl_LIBOBJS="$gl_LIBOBJS fsusage.$ac_objext"
+
+
+
+
+
+for ac_header in dustat.h sys/fs/s5param.h sys/filsys.h sys/statfs.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+ { $as_echo "$as_me:$LINENO: checking for statfs that truncates block counts" >&5
+$as_echo_n "checking for statfs that truncates block counts... " >&6; }
+ if test "${fu_cv_sys_truncating_statfs+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#if !defined(sun) && !defined(__sun)
+choke -- this is a workaround for a Sun-specific problem
+#endif
+#include <sys/types.h>
+#include <sys/vfs.h>
+int
+main ()
+{
+struct statfs t; long c = *(t.f_spare);
+ if (c) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ fu_cv_sys_truncating_statfs=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ fu_cv_sys_truncating_statfs=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $fu_cv_sys_truncating_statfs = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STATFS_TRUNCATES_BLOCK_COUNTS 1
+_ACEOF
+
+ fi
+ { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_truncating_statfs" >&5
+$as_echo "$fu_cv_sys_truncating_statfs" >&6; }
+
+
+ fi
+
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_func_ftruncate = no; then
+ HAVE_FTRUNCATE=0
+ gl_LIBOBJS="$gl_LIBOBJS ftruncate.$ac_objext"
+
+
+for ac_func in chsize
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+ case "$host_os" in
+ mingw*)
+ # Yes, we know mingw lacks ftruncate.
+ ;;
+ *)
+ # If someone lacks ftruncate, make configure fail, and request
+ # a bug report to inform us about it.
+ if test x"$SKIP_FTRUNCATE_CHECK" != xyes; then
+ { { $as_echo "$as_me:$LINENO: error: Your system lacks the ftruncate function.
+ Please report this, along with the output of \"uname -a\", to the
+ bug-coreutils@gnu.org mailing list. To continue past this point,
+ rerun configure with SKIP_FTRUNCATE_CHECK=yes.
+ E.g., ./configure SKIP_FTRUNCATE_CHECK=yes
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: Your system lacks the ftruncate function.
+ Please report this, along with the output of \"uname -a\", to the
+ bug-coreutils@gnu.org mailing list. To continue past this point,
+ rerun configure with SKIP_FTRUNCATE_CHECK=yes.
+ E.g., ./configure SKIP_FTRUNCATE_CHECK=yes
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ esac
+ fi
+
+
+
+ GNULIB_FTRUNCATE=1
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS fts.$ac_objext"
+
+
+ gl_LIBOBJS="$gl_LIBOBJS openat-die.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS openat-proc.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in fchmodat mkdirat openat
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ case $ac_cv_func_openat+$ac_cv_func_lstat_dereferences_slashed_symlink in
+ yes+yes) ;;
+ yes+*) gl_LIBOBJS="$gl_LIBOBJS fstatat.$ac_objext";;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define __OPENAT_PREFIX rpl_
+_ACEOF
+
+
+ :
+;;
+ esac
+
+ # Assume we'll use the replacement function.
+ # The only case in which we won't is when we have fchownat, and it works.
+ use_replacement_fchownat=yes
+
+ { $as_echo "$as_me:$LINENO: checking for fchownat" >&5
+$as_echo_n "checking for fchownat... " >&6; }
+if test "${ac_cv_func_fchownat+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define fchownat to an innocuous variant, in case <limits.h> declares fchownat.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define fchownat innocuous_fchownat
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char fchownat (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef fchownat
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char fchownat ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_fchownat || defined __stub___fchownat
+choke me
+#endif
+
+int
+main ()
+{
+return fchownat ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_fchownat=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_fchownat=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_fchownat" >&5
+$as_echo "$ac_cv_func_fchownat" >&6; }
+if test $ac_cv_func_fchownat = yes; then
+ have_fchownat=yes
+else
+ have_fchownat=no
+fi
+
+ if test $have_fchownat = yes; then
+
+ { $as_echo "$as_me:$LINENO: checking whether fchownat works with AT_SYMLINK_NOFOLLOW" >&5
+$as_echo_n "checking whether fchownat works with AT_SYMLINK_NOFOLLOW... " >&6; }
+if test "${gl_cv_func_fchownat_nofollow_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_dangle=conftest.dangle
+ # Remove any remnants of a previous test.
+ rm -f $gl_dangle
+ # Arrange for deletion of the temporary file this test creates.
+ ac_clean_files="$ac_clean_files $gl_dangle"
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_fchownat_nofollow_works=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <sys/types.h>
+int
+main ()
+{
+ return (fchownat (AT_FDCWD, "$gl_dangle", -1, getgid (),
+ AT_SYMLINK_NOFOLLOW) != 0
+ && errno == ENOENT);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_fchownat_nofollow_works=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_fchownat_nofollow_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_fchownat_nofollow_works" >&5
+$as_echo "$gl_cv_func_fchownat_nofollow_works" >&6; }
+ if test $gl_cv_func_fchownat_nofollow_works = no; then
+ have_fchownat_bug=yes
+fi
+
+
+ if test $have_fchownat_bug = no; then
+ use_replacement_fchownat=no
+ fi
+ fi
+
+ if test $use_replacement_fchownat = yes; then
+ gl_LIBOBJS="$gl_LIBOBJS fchownat.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define fchownat rpl_fchownat
+_ACEOF
+
+ fi
+
+
+
+ # Checks for header files.
+
+
+
+
+
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GNULIB_FTS 1
+_ACEOF
+
+
+
+ { $as_echo "$as_me:$LINENO: checking how to do getaddrinfo, freeaddrinfo and getnameinfo" >&5
+$as_echo "$as_me: checking how to do getaddrinfo, freeaddrinfo and getnameinfo" >&6;}
+
+ { $as_echo "$as_me:$LINENO: checking for library containing getaddrinfo" >&5
+$as_echo_n "checking for library containing getaddrinfo... " >&6; }
+if test "${ac_cv_search_getaddrinfo+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getaddrinfo ();
+int
+main ()
+{
+return getaddrinfo ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' nsl socket; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_search_getaddrinfo=$ac_res
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext
+ if test "${ac_cv_search_getaddrinfo+set}" = set; then
+ break
+fi
+done
+if test "${ac_cv_search_getaddrinfo+set}" = set; then
+ :
+else
+ ac_cv_search_getaddrinfo=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_getaddrinfo" >&5
+$as_echo "$ac_cv_search_getaddrinfo" >&6; }
+ac_res=$ac_cv_search_getaddrinfo
+if test "$ac_res" != no; then
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+
+for ac_func in getaddrinfo
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+
+ { $as_echo "$as_me:$LINENO: checking for getaddrinfo in ws2tcpip.h and -lws2_32" >&5
+$as_echo_n "checking for getaddrinfo in ws2tcpip.h and -lws2_32... " >&6; }
+if test "${gl_cv_w32_getaddrinfo+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_cv_w32_getaddrinfo=no
+ am_save_LIBS="$LIBS"
+ LIBS="$LIBS -lws2_32"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#ifdef HAVE_WS2TCPIP_H
+#include <ws2tcpip.h>
+#endif
+
+int
+main ()
+{
+getaddrinfo(0, 0, 0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ gl_cv_w32_getaddrinfo=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$am_save_LIBS"
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_w32_getaddrinfo" >&5
+$as_echo "$gl_cv_w32_getaddrinfo" >&6; }
+ if test "$gl_cv_w32_getaddrinfo" = "yes"; then
+ LIBS="$LIBS -lws2_32"
+ else
+ gl_LIBOBJS="$gl_LIBOBJS getaddrinfo.$ac_objext"
+ fi
+
+fi
+done
+
+
+
+for ac_func in gai_strerror
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+
+ { $as_echo "$as_me:$LINENO: checking for library containing gethostbyname" >&5
+$as_echo_n "checking for library containing gethostbyname... " >&6; }
+if test "${ac_cv_search_gethostbyname+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' inet nsl; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_search_gethostbyname=$ac_res
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext
+ if test "${ac_cv_search_gethostbyname+set}" = set; then
+ break
+fi
+done
+if test "${ac_cv_search_gethostbyname+set}" = set; then
+ :
+else
+ ac_cv_search_gethostbyname=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_gethostbyname" >&5
+$as_echo "$ac_cv_search_gethostbyname" >&6; }
+ac_res=$ac_cv_search_gethostbyname
+if test "$ac_res" != no; then
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+ { $as_echo "$as_me:$LINENO: checking for library containing getservbyname" >&5
+$as_echo_n "checking for library containing getservbyname... " >&6; }
+if test "${ac_cv_search_getservbyname+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getservbyname ();
+int
+main ()
+{
+return getservbyname ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' inet nsl socket xnet; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_search_getservbyname=$ac_res
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext
+ if test "${ac_cv_search_getservbyname+set}" = set; then
+ break
+fi
+done
+if test "${ac_cv_search_getservbyname+set}" = set; then
+ :
+else
+ ac_cv_search_getservbyname=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_getservbyname" >&5
+$as_echo "$ac_cv_search_getservbyname" >&6; }
+ac_res=$ac_cv_search_getservbyname
+if test "$ac_res" != no; then
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+
+for ac_func in gethostbyname
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+
+ { $as_echo "$as_me:$LINENO: checking for gethostbyname in winsock2.h and -lws2_32" >&5
+$as_echo_n "checking for gethostbyname in winsock2.h and -lws2_32... " >&6; }
+if test "${gl_cv_w32_gethostbyname+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_cv_w32_gethostbyname=no
+ am_save_LIBS="$LIBS"
+ LIBS="$LIBS -lws2_32"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
+
+int
+main ()
+{
+gethostbyname(0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ gl_cv_w32_gethostbyname=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$am_save_LIBS"
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_w32_gethostbyname" >&5
+$as_echo "$gl_cv_w32_gethostbyname" >&6; }
+ if test "$gl_cv_w32_gethostbyname" = "yes"; then
+ LIBS="$LIBS -lws2_32"
+ fi
+
+fi
+done
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether getaddrinfo is declared" >&5
+$as_echo_n "checking whether getaddrinfo is declared... " >&6; }
+if test "${ac_cv_have_decl_getaddrinfo+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* sys/types.h is not needed according to POSIX, but the
+ sys/socket.h in i386-unknown-freebsd4.10 and
+ powerpc-apple-darwin5.5 required it. */
+#include <sys/types.h>
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_WS2TCPIP_H
+#include <ws2tcpip.h>
+#endif
+
+
+int
+main ()
+{
+#ifndef getaddrinfo
+ (void) getaddrinfo;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getaddrinfo=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_getaddrinfo=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getaddrinfo" >&5
+$as_echo "$ac_cv_have_decl_getaddrinfo" >&6; }
+if test $ac_cv_have_decl_getaddrinfo = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETADDRINFO 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETADDRINFO 0
+_ACEOF
+
+
+fi
+{ $as_echo "$as_me:$LINENO: checking whether freeaddrinfo is declared" >&5
+$as_echo_n "checking whether freeaddrinfo is declared... " >&6; }
+if test "${ac_cv_have_decl_freeaddrinfo+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* sys/types.h is not needed according to POSIX, but the
+ sys/socket.h in i386-unknown-freebsd4.10 and
+ powerpc-apple-darwin5.5 required it. */
+#include <sys/types.h>
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_WS2TCPIP_H
+#include <ws2tcpip.h>
+#endif
+
+
+int
+main ()
+{
+#ifndef freeaddrinfo
+ (void) freeaddrinfo;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_freeaddrinfo=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_freeaddrinfo=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_freeaddrinfo" >&5
+$as_echo "$ac_cv_have_decl_freeaddrinfo" >&6; }
+if test $ac_cv_have_decl_freeaddrinfo = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FREEADDRINFO 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FREEADDRINFO 0
+_ACEOF
+
+
+fi
+{ $as_echo "$as_me:$LINENO: checking whether gai_strerror is declared" >&5
+$as_echo_n "checking whether gai_strerror is declared... " >&6; }
+if test "${ac_cv_have_decl_gai_strerror+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* sys/types.h is not needed according to POSIX, but the
+ sys/socket.h in i386-unknown-freebsd4.10 and
+ powerpc-apple-darwin5.5 required it. */
+#include <sys/types.h>
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_WS2TCPIP_H
+#include <ws2tcpip.h>
+#endif
+
+
+int
+main ()
+{
+#ifndef gai_strerror
+ (void) gai_strerror;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_gai_strerror=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_gai_strerror=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_gai_strerror" >&5
+$as_echo "$ac_cv_have_decl_gai_strerror" >&6; }
+if test $ac_cv_have_decl_gai_strerror = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GAI_STRERROR 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GAI_STRERROR 0
+_ACEOF
+
+
+fi
+{ $as_echo "$as_me:$LINENO: checking whether getnameinfo is declared" >&5
+$as_echo_n "checking whether getnameinfo is declared... " >&6; }
+if test "${ac_cv_have_decl_getnameinfo+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* sys/types.h is not needed according to POSIX, but the
+ sys/socket.h in i386-unknown-freebsd4.10 and
+ powerpc-apple-darwin5.5 required it. */
+#include <sys/types.h>
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_WS2TCPIP_H
+#include <ws2tcpip.h>
+#endif
+
+
+int
+main ()
+{
+#ifndef getnameinfo
+ (void) getnameinfo;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getnameinfo=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_getnameinfo=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getnameinfo" >&5
+$as_echo "$ac_cv_have_decl_getnameinfo" >&6; }
+if test $ac_cv_have_decl_getnameinfo = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETNAMEINFO 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETNAMEINFO 0
+_ACEOF
+
+
+fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for struct addrinfo" >&5
+$as_echo_n "checking for struct addrinfo... " >&6; }
+if test "${ac_cv_type_struct_addrinfo+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_WS2TCPIP_H
+#include <ws2tcpip.h>
+#endif
+
+
+typedef struct addrinfo ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_struct_addrinfo=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_struct_addrinfo=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_struct_addrinfo" >&5
+$as_echo "$ac_cv_type_struct_addrinfo" >&6; }
+if test $ac_cv_type_struct_addrinfo = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_ADDRINFO 1
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+ gl_abort_bug=no
+ case $gl_cv_func_getcwd_null in
+ yes)
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether getcwd handles long file names properly" >&5
+$as_echo_n "checking whether getcwd handles long file names properly... " >&6; }
+if test "${gl_cv_func_getcwd_path_max+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ # Arrange for deletion of the temporary directory this test creates.
+ ac_clean_files="$ac_clean_files confdir3"
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_getcwd_path_max=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <errno.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <limits.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+
+#ifndef AT_FDCWD
+# define AT_FDCWD 0
+#endif
+#ifdef ENAMETOOLONG
+# define is_ENAMETOOLONG(x) ((x) == ENAMETOOLONG)
+#else
+# define is_ENAMETOOLONG(x) 0
+#endif
+
+/* Don't get link errors because mkdir is redefined to rpl_mkdir. */
+#undef mkdir
+
+#ifndef S_IRWXU
+# define S_IRWXU 0700
+#endif
+
+/* The length of this name must be 8. */
+#define DIR_NAME "confdir3"
+#define DIR_NAME_LEN 8
+#define DIR_NAME_SIZE (DIR_NAME_LEN + 1)
+
+/* The length of "../". */
+#define DOTDOTSLASH_LEN 3
+
+/* Leftover bytes in the buffer, to work around library or OS bugs. */
+#define BUF_SLOP 20
+
+int
+main ()
+{
+#ifndef PATH_MAX
+ /* The Hurd doesn't define this, so getcwd can't exhibit the bug --
+ at least not on a local file system. And if we were to start worrying
+ about remote file systems, we'd have to enable the wrapper function
+ all of the time, just to be safe. That's not worth the cost. */
+ exit (0);
+#elif ((INT_MAX / (DIR_NAME_SIZE / DOTDOTSLASH_LEN + 1) \
+ - DIR_NAME_SIZE - BUF_SLOP) \
+ <= PATH_MAX)
+ /* FIXME: Assuming there's a system for which this is true,
+ this should be done in a compile test. */
+ exit (0);
+#else
+ char buf[PATH_MAX * (DIR_NAME_SIZE / DOTDOTSLASH_LEN + 1)
+ + DIR_NAME_SIZE + BUF_SLOP];
+ char *cwd = getcwd (buf, PATH_MAX);
+ size_t initial_cwd_len;
+ size_t cwd_len;
+ int fail = 0;
+ size_t n_chdirs = 0;
+
+ if (cwd == NULL)
+ exit (1);
+
+ cwd_len = initial_cwd_len = strlen (cwd);
+
+ while (1)
+ {
+ size_t dotdot_max = PATH_MAX * (DIR_NAME_SIZE / DOTDOTSLASH_LEN);
+ char *c = NULL;
+
+ cwd_len += DIR_NAME_SIZE;
+ /* If mkdir or chdir fails, it could be that this system cannot create
+ any file with an absolute name longer than PATH_MAX, such as cygwin.
+ If so, leave fail as 0, because the current working directory can't
+ be too long for getcwd if it can't even be created. For other
+ errors, be pessimistic and consider that as a failure, too. */
+ if (mkdir (DIR_NAME, S_IRWXU) < 0 || chdir (DIR_NAME) < 0)
+ {
+ if (! (errno == ERANGE || is_ENAMETOOLONG (errno)))
+ fail = 2;
+ break;
+ }
+
+ if (PATH_MAX <= cwd_len && cwd_len < PATH_MAX + DIR_NAME_SIZE)
+ {
+ c = getcwd (buf, PATH_MAX);
+ if (!c && errno == ENOENT)
+ {
+ fail = 1;
+ break;
+ }
+ if (c || ! (errno == ERANGE || is_ENAMETOOLONG (errno)))
+ {
+ fail = 2;
+ break;
+ }
+ }
+
+ if (dotdot_max <= cwd_len - initial_cwd_len)
+ {
+ if (dotdot_max + DIR_NAME_SIZE < cwd_len - initial_cwd_len)
+ break;
+ c = getcwd (buf, cwd_len + 1);
+ if (!c)
+ {
+ if (! (errno == ERANGE || errno == ENOENT
+ || is_ENAMETOOLONG (errno)))
+ {
+ fail = 2;
+ break;
+ }
+ if (AT_FDCWD || errno == ERANGE || errno == ENOENT)
+ {
+ fail = 1;
+ break;
+ }
+ }
+ }
+
+ if (c && strlen (c) != cwd_len)
+ {
+ fail = 2;
+ break;
+ }
+ ++n_chdirs;
+ }
+
+ /* Leaving behind such a deep directory is not polite.
+ So clean up here, right away, even though the driving
+ shell script would also clean up. */
+ {
+ size_t i;
+
+ /* Try rmdir first, in case the chdir failed. */
+ rmdir (DIR_NAME);
+ for (i = 0; i <= n_chdirs; i++)
+ {
+ if (chdir ("..") < 0)
+ break;
+ rmdir (DIR_NAME);
+ }
+ }
+
+ exit (fail);
+#endif
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_getcwd_path_max=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+case $? in
+ 1) gl_cv_func_getcwd_path_max='no, but it is partly working';;
+ *) gl_cv_func_getcwd_path_max=no;;
+ esac
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_getcwd_path_max" >&5
+$as_echo "$gl_cv_func_getcwd_path_max" >&6; }
+ case $gl_cv_func_getcwd_path_max in
+ no,*)
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_PARTLY_WORKING_GETCWD 1
+_ACEOF
+;;
+ esac
+
+
+
+
+
+
+
+for ac_func in getpagesize
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ { $as_echo "$as_me:$LINENO: checking whether getcwd aborts when 4k < cwd_length < 16k" >&5
+$as_echo_n "checking whether getcwd aborts when 4k < cwd_length < 16k... " >&6; }
+if test "${gl_cv_func_getcwd_abort_bug+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ # Remove any remnants of a previous test.
+ rm -rf confdir-14B---
+ # Arrange for deletion of the temporary directory this test creates.
+ ac_clean_files="$ac_clean_files confdir-14B---"
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_getcwd_abort_bug=yes
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <limits.h>
+#include <string.h>
+#include <sys/stat.h>
+
+/* Don't get link errors because mkdir is redefined to rpl_mkdir. */
+#undef mkdir
+
+#ifndef S_IRWXU
+# define S_IRWXU 0700
+#endif
+
+/* FIXME: skip the run-test altogether on systems without getpagesize. */
+#if ! HAVE_GETPAGESIZE
+# define getpagesize() 0
+#endif
+
+/* This size is chosen to be larger than PATH_MAX (4k), yet smaller than
+ the 16kB pagesize on ia64 linux. Those conditions make the code below
+ trigger a bug in glibc's getcwd implementation before 2.4.90-10. */
+#define TARGET_LEN (5 * 1024)
+
+int
+main ()
+{
+ char const *dir_name = "confdir-14B---";
+ char *cwd;
+ size_t initial_cwd_len;
+ int fail = 0;
+ size_t desired_depth;
+ size_t d;
+
+ /* The bug is triggered when PATH_MAX < getpagesize (), so skip
+ this relative expensive and invasive test if that's not true. */
+ if (getpagesize () <= PATH_MAX)
+ return 0;
+
+ cwd = getcwd (NULL, 0);
+ if (cwd == NULL)
+ return 0;
+
+ initial_cwd_len = strlen (cwd);
+ free (cwd);
+ desired_depth = ((TARGET_LEN - 1 - initial_cwd_len)
+ / (1 + strlen (dir_name)));
+ for (d = 0; d < desired_depth; d++)
+ {
+ if (mkdir (dir_name, S_IRWXU) < 0 || chdir (dir_name) < 0)
+ {
+ fail = 3; /* Unable to construct deep hierarchy. */
+ break;
+ }
+ }
+
+ /* If libc has the bug in question, this invocation of getcwd
+ results in a failed assertion. */
+ cwd = getcwd (NULL, 0);
+ if (cwd == NULL)
+ fail = 4; /* getcwd failed. This is ok, and expected. */
+ free (cwd);
+
+ /* Call rmdir first, in case the above chdir failed. */
+ rmdir (dir_name);
+ while (0 < d--)
+ {
+ if (chdir ("..") < 0)
+ break;
+ rmdir (dir_name);
+ }
+
+ return 0;
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_getcwd_abort_bug=no
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_getcwd_abort_bug=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_getcwd_abort_bug" >&5
+$as_echo "$gl_cv_func_getcwd_abort_bug" >&6; }
+ if test $gl_cv_func_getcwd_abort_bug = yes; then
+ gl_abort_bug=yes
+fi
+
+;;
+ esac
+
+ case $gl_cv_func_getcwd_null,$gl_cv_func_getcwd_path_max,$gl_abort_bug in
+ yes,yes,no) ;;
+ *)
+ REPLACE_GETCWD=1
+ gl_LIBOBJS="$gl_LIBOBJS getcwd.$ac_objext"
+
+
+
+ :
+;;
+ esac
+
+
+
+ GNULIB_GETCWD=1
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for struct tm.tm_zone" >&5
+$as_echo_n "checking for struct tm.tm_zone... " >&6; }
+if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <$ac_cv_struct_tm>
+
+
+int
+main ()
+{
+static struct tm ac_aggr;
+if (ac_aggr.tm_zone)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_tm_tm_zone=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <$ac_cv_struct_tm>
+
+
+int
+main ()
+{
+static struct tm ac_aggr;
+if (sizeof ac_aggr.tm_zone)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_tm_tm_zone=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_tm_tm_zone=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5
+$as_echo "$ac_cv_member_struct_tm_tm_zone" >&6; }
+if test $ac_cv_member_struct_tm_tm_zone = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TM_TM_ZONE 1
+_ACEOF
+
+
+fi
+
+if test "$ac_cv_member_struct_tm_tm_zone" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_TM_ZONE 1
+_ACEOF
+
+else
+ { $as_echo "$as_me:$LINENO: checking whether tzname is declared" >&5
+$as_echo_n "checking whether tzname is declared... " >&6; }
+if test "${ac_cv_have_decl_tzname+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <time.h>
+
+int
+main ()
+{
+#ifndef tzname
+ (void) tzname;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_tzname=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_tzname=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_tzname" >&5
+$as_echo "$ac_cv_have_decl_tzname" >&6; }
+if test $ac_cv_have_decl_tzname = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_TZNAME 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_TZNAME 0
+_ACEOF
+
+
+fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for tzname" >&5
+$as_echo_n "checking for tzname... " >&6; }
+if test "${ac_cv_var_tzname+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <time.h>
+#if !HAVE_DECL_TZNAME
+extern char *tzname[];
+#endif
+
+int
+main ()
+{
+return tzname[0][0];
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_var_tzname=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_var_tzname=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5
+$as_echo "$ac_cv_var_tzname" >&6; }
+ if test $ac_cv_var_tzname = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_TZNAME 1
+_ACEOF
+
+ fi
+fi
+
+
+
+
+
+
+
+
+
+for ac_func in getdelim
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+
+
+
+
+
+ if test $ac_cv_func_getdelim = no; then
+
+
+
+for ac_func in flockfile funlockfile
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+ fi
+
+
+
+ if test $ac_cv_func_getgroups_works = no; then
+ gl_LIBOBJS="$gl_LIBOBJS getgroups.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define getgroups rpl_getgroups
+_ACEOF
+
+
+
+
+ fi
+ test -n "$GETGROUPS_LIB" && LIBS="$GETGROUPS_LIB $LIBS"
+
+
+
+for ac_func in gethostname
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_gethostname = no; then
+
+
+for ac_func in uname
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+ fi
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether gethrtime is declared" >&5
+$as_echo_n "checking whether gethrtime is declared... " >&6; }
+if test "${ac_cv_have_decl_gethrtime+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <time.h>
+
+int
+main ()
+{
+#ifndef gethrtime
+ (void) gethrtime;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_gethrtime=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_gethrtime=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_gethrtime" >&5
+$as_echo "$ac_cv_have_decl_gethrtime" >&6; }
+if test $ac_cv_have_decl_gethrtime = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETHRTIME 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETHRTIME 0
+_ACEOF
+
+
+fi
+
+
+ case $ac_cv_have_decl_gethrtime,$gl_cv_arithmetic_hrtime_t in
+ yes,yes) ;;
+ *)
+ gl_LIBOBJS="$gl_LIBOBJS gethrxtime.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_func_nanouptime != yes; then
+ LIB_GETHRXTIME=
+ { $as_echo "$as_me:$LINENO: checking whether CLOCK_MONOTONIC or CLOCK_REALTIME is defined" >&5
+$as_echo_n "checking whether CLOCK_MONOTONIC or CLOCK_REALTIME is defined... " >&6; }
+if test "${gl_cv_have_clock_gettime_macro+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+# include <time.h>
+# if defined CLOCK_MONOTONIC || defined CLOCK_REALTIME
+ have_clock_gettime_macro
+# endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "have_clock_gettime_macro" >/dev/null 2>&1; then
+ gl_cv_have_clock_gettime_macro=yes
+else
+ gl_cv_have_clock_gettime_macro=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_have_clock_gettime_macro" >&5
+$as_echo "$gl_cv_have_clock_gettime_macro" >&6; }
+ if test $gl_cv_have_clock_gettime_macro = yes; then
+ LIB_GETHRXTIME=$LIB_CLOCK_GETTIME
+ fi
+
+ fi
+;;
+ esac
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether getline is declared" >&5
+$as_echo_n "checking whether getline is declared... " >&6; }
+if test "${ac_cv_have_decl_getline+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getline
+ (void) getline;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getline=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_getline=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getline" >&5
+$as_echo "$ac_cv_have_decl_getline" >&6; }
+if test $ac_cv_have_decl_getline = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETLINE 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETLINE 0
+_ACEOF
+
+
+fi
+
+
+
+ gl_getline_needs_run_time_check=no
+ { $as_echo "$as_me:$LINENO: checking for getline" >&5
+$as_echo_n "checking for getline... " >&6; }
+if test "${ac_cv_func_getline+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define getline to an innocuous variant, in case <limits.h> declares getline.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define getline innocuous_getline
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char getline (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef getline
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getline ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_getline || defined __stub___getline
+choke me
+#endif
+
+int
+main ()
+{
+return getline ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_getline=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_getline=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_getline" >&5
+$as_echo "$ac_cv_func_getline" >&6; }
+if test $ac_cv_func_getline = yes; then
+ gl_getline_needs_run_time_check=yes
+else
+ am_cv_func_working_getline=no
+fi
+
+ if test $gl_getline_needs_run_time_check = yes; then
+ { $as_echo "$as_me:$LINENO: checking for working getline function" >&5
+$as_echo_n "checking for working getline function... " >&6; }
+if test "${am_cv_func_working_getline+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ echo fooN |tr -d '\012'|tr N '\012' > conftest.data
+ if test "$cross_compiling" = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ >= 2)
+ Lucky GNU user
+ #endif
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Lucky GNU user" >/dev/null 2>&1; then
+ am_cv_func_working_getline=yes
+else
+ am_cv_func_working_getline=no
+fi
+rm -f conftest*
+
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+# include <stdio.h>
+# include <stdlib.h>
+# include <string.h>
+ int main ()
+ { /* Based on a test program from Karl Heuer. */
+ char *line = NULL;
+ size_t siz = 0;
+ int len;
+ FILE *in = fopen ("./conftest.data", "r");
+ if (!in)
+ return 1;
+ len = getline (&line, &siz, in);
+ exit ((len == 4 && line && strcmp (line, "foo\n") == 0) ? 0 : 1);
+ }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ am_cv_func_working_getline=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+am_cv_func_working_getline=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_func_working_getline" >&5
+$as_echo "$am_cv_func_working_getline" >&6; }
+ fi
+
+ if test $am_cv_func_working_getline = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define getline gnu_getline
+_ACEOF
+
+ gl_LIBOBJS="$gl_LIBOBJS getline.$ac_objext"
+
+
+
+
+
+
+
+for ac_func in getdelim
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+
+
+
+
+
+ if test $ac_cv_func_getdelim = no; then
+
+
+
+for ac_func in flockfile funlockfile
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+ fi
+
+
+ fi
+
+ gl_have_func=no # yes means we've found a way to get the load average.
+
+# Make sure getloadavg.c is where it belongs, at configure-time.
+test -f "$srcdir/lib/getloadavg.c" ||
+ { { $as_echo "$as_me:$LINENO: error: $srcdir/lib/getloadavg.c is missing" >&5
+$as_echo "$as_me: error: $srcdir/lib/getloadavg.c is missing" >&2;}
+ { (exit 1); exit 1; }; }
+
+gl_save_LIBS=$LIBS
+
+# Check for getloadavg, but be sure not to touch the cache variable.
+({ $as_echo "$as_me:$LINENO: checking for getloadavg" >&5
+$as_echo_n "checking for getloadavg... " >&6; }
+if test "${ac_cv_func_getloadavg+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define getloadavg to an innocuous variant, in case <limits.h> declares getloadavg.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define getloadavg innocuous_getloadavg
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char getloadavg (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef getloadavg
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getloadavg ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_getloadavg || defined __stub___getloadavg
+choke me
+#endif
+
+int
+main ()
+{
+return getloadavg ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_getloadavg=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_getloadavg=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_getloadavg" >&5
+$as_echo "$ac_cv_func_getloadavg" >&6; }
+if test $ac_cv_func_getloadavg = yes; then
+ exit 0
+else
+ exit 1
+fi
+) && gl_have_func=yes
+
+# On HPUX9, an unprivileged user can get load averages through this function.
+
+for ac_func in pstat_getdynamic
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+# Solaris has libkstat which does not require root.
+
+{ $as_echo "$as_me:$LINENO: checking for kstat_open in -lkstat" >&5
+$as_echo_n "checking for kstat_open in -lkstat... " >&6; }
+if test "${ac_cv_lib_kstat_kstat_open+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lkstat $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char kstat_open ();
+int
+main ()
+{
+return kstat_open ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_kstat_kstat_open=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_kstat_kstat_open=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_kstat_kstat_open" >&5
+$as_echo "$ac_cv_lib_kstat_kstat_open" >&6; }
+if test $ac_cv_lib_kstat_kstat_open = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBKSTAT 1
+_ACEOF
+
+ LIBS="-lkstat $LIBS"
+
+fi
+
+test $ac_cv_lib_kstat_kstat_open = yes && gl_have_func=yes
+
+# Some systems with -lutil have (and need) -lkvm as well, some do not.
+# On Solaris, -lkvm requires nlist from -lelf, so check that first
+# to get the right answer into the cache.
+# For kstat on solaris, we need libelf to force the definition of SVR4 below.
+if test $gl_have_func = no; then
+ { $as_echo "$as_me:$LINENO: checking for elf_begin in -lelf" >&5
+$as_echo_n "checking for elf_begin in -lelf... " >&6; }
+if test "${ac_cv_lib_elf_elf_begin+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lelf $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char elf_begin ();
+int
+main ()
+{
+return elf_begin ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_elf_elf_begin=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_elf_elf_begin=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_elf_elf_begin" >&5
+$as_echo "$ac_cv_lib_elf_elf_begin" >&6; }
+if test $ac_cv_lib_elf_elf_begin = yes; then
+ LIBS="-lelf $LIBS"
+fi
+
+fi
+if test $gl_have_func = no; then
+ { $as_echo "$as_me:$LINENO: checking for kvm_open in -lkvm" >&5
+$as_echo_n "checking for kvm_open in -lkvm... " >&6; }
+if test "${ac_cv_lib_kvm_kvm_open+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lkvm $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char kvm_open ();
+int
+main ()
+{
+return kvm_open ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_kvm_kvm_open=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_kvm_kvm_open=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_kvm_kvm_open" >&5
+$as_echo "$ac_cv_lib_kvm_kvm_open" >&6; }
+if test $ac_cv_lib_kvm_kvm_open = yes; then
+ LIBS="-lkvm $LIBS"
+fi
+
+ # Check for the 4.4BSD definition of getloadavg.
+ { $as_echo "$as_me:$LINENO: checking for getloadavg in -lutil" >&5
+$as_echo_n "checking for getloadavg in -lutil... " >&6; }
+if test "${ac_cv_lib_util_getloadavg+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lutil $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getloadavg ();
+int
+main ()
+{
+return getloadavg ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_util_getloadavg=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_util_getloadavg=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_util_getloadavg" >&5
+$as_echo "$ac_cv_lib_util_getloadavg" >&6; }
+if test $ac_cv_lib_util_getloadavg = yes; then
+ LIBS="-lutil $LIBS" gl_have_func=yes gl_cv_func_getloadavg_setgid=yes
+fi
+
+fi
+
+if test $gl_have_func = no; then
+ # There is a commonly available library for RS/6000 AIX.
+ # Since it is not a standard part of AIX, it might be installed locally.
+ gl_getloadavg_LIBS=$LIBS
+ LIBS="-L/usr/local/lib $LIBS"
+ { $as_echo "$as_me:$LINENO: checking for getloadavg in -lgetloadavg" >&5
+$as_echo_n "checking for getloadavg in -lgetloadavg... " >&6; }
+if test "${ac_cv_lib_getloadavg_getloadavg+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgetloadavg $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getloadavg ();
+int
+main ()
+{
+return getloadavg ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_getloadavg_getloadavg=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_getloadavg_getloadavg=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_getloadavg_getloadavg" >&5
+$as_echo "$ac_cv_lib_getloadavg_getloadavg" >&6; }
+if test $ac_cv_lib_getloadavg_getloadavg = yes; then
+ LIBS="-lgetloadavg $LIBS"
+else
+ LIBS=$gl_getloadavg_LIBS
+fi
+
+fi
+
+# Make sure it is really in the library, if we think we found it,
+# otherwise set up the replacement function.
+
+for ac_func in getloadavg
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS getloadavg.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define C_GETLOADAVG 1
+_ACEOF
+
+# Figure out what our getloadavg.c needs.
+gl_have_func=no
+if test "${ac_cv_header_sys_dg_sys_info_h+set}" = set; then
+ { $as_echo "$as_me:$LINENO: checking for sys/dg_sys_info.h" >&5
+$as_echo_n "checking for sys/dg_sys_info.h... " >&6; }
+if test "${ac_cv_header_sys_dg_sys_info_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_dg_sys_info_h" >&5
+$as_echo "$ac_cv_header_sys_dg_sys_info_h" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking sys/dg_sys_info.h usability" >&5
+$as_echo_n "checking sys/dg_sys_info.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <sys/dg_sys_info.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking sys/dg_sys_info.h presence" >&5
+$as_echo_n "checking sys/dg_sys_info.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/dg_sys_info.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: sys/dg_sys_info.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: sys/dg_sys_info.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: sys/dg_sys_info.h: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: sys/dg_sys_info.h: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: sys/dg_sys_info.h: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: sys/dg_sys_info.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: sys/dg_sys_info.h: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/dg_sys_info.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: sys/dg_sys_info.h: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for sys/dg_sys_info.h" >&5
+$as_echo_n "checking for sys/dg_sys_info.h... " >&6; }
+if test "${ac_cv_header_sys_dg_sys_info_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_header_sys_dg_sys_info_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_dg_sys_info_h" >&5
+$as_echo "$ac_cv_header_sys_dg_sys_info_h" >&6; }
+
+fi
+if test $ac_cv_header_sys_dg_sys_info_h = yes; then
+ gl_have_func=yes
+
+cat >>confdefs.h <<\_ACEOF
+#define DGUX 1
+_ACEOF
+
+
+{ $as_echo "$as_me:$LINENO: checking for dg_sys_info in -ldgc" >&5
+$as_echo_n "checking for dg_sys_info in -ldgc... " >&6; }
+if test "${ac_cv_lib_dgc_dg_sys_info+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldgc $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dg_sys_info ();
+int
+main ()
+{
+return dg_sys_info ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_dgc_dg_sys_info=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_dgc_dg_sys_info=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dgc_dg_sys_info" >&5
+$as_echo "$ac_cv_lib_dgc_dg_sys_info" >&6; }
+if test $ac_cv_lib_dgc_dg_sys_info = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBDGC 1
+_ACEOF
+
+ LIBS="-ldgc $LIBS"
+
+fi
+
+fi
+
+
+
+# We cannot check for <dwarf.h>, because Solaris 2 does not use dwarf (it
+# uses stabs), but it is still SVR4. We cannot check for <elf.h> because
+# Irix 4.0.5F has the header but not the library.
+if test $gl_have_func = no && test "$ac_cv_lib_elf_elf_begin" = yes; then
+ gl_have_func=yes
+
+cat >>confdefs.h <<\_ACEOF
+#define SVR4 1
+_ACEOF
+
+fi
+
+if test $gl_have_func = no; then
+ if test "${ac_cv_header_inq_stats_cpustats_h+set}" = set; then
+ { $as_echo "$as_me:$LINENO: checking for inq_stats/cpustats.h" >&5
+$as_echo_n "checking for inq_stats/cpustats.h... " >&6; }
+if test "${ac_cv_header_inq_stats_cpustats_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_inq_stats_cpustats_h" >&5
+$as_echo "$ac_cv_header_inq_stats_cpustats_h" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking inq_stats/cpustats.h usability" >&5
+$as_echo_n "checking inq_stats/cpustats.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <inq_stats/cpustats.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking inq_stats/cpustats.h presence" >&5
+$as_echo_n "checking inq_stats/cpustats.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <inq_stats/cpustats.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: inq_stats/cpustats.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: inq_stats/cpustats.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: inq_stats/cpustats.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: inq_stats/cpustats.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: inq_stats/cpustats.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: inq_stats/cpustats.h: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: inq_stats/cpustats.h: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: inq_stats/cpustats.h: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: inq_stats/cpustats.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: inq_stats/cpustats.h: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: inq_stats/cpustats.h: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: inq_stats/cpustats.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: inq_stats/cpustats.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: inq_stats/cpustats.h: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: inq_stats/cpustats.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: inq_stats/cpustats.h: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for inq_stats/cpustats.h" >&5
+$as_echo_n "checking for inq_stats/cpustats.h... " >&6; }
+if test "${ac_cv_header_inq_stats_cpustats_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_header_inq_stats_cpustats_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_inq_stats_cpustats_h" >&5
+$as_echo "$ac_cv_header_inq_stats_cpustats_h" >&6; }
+
+fi
+if test $ac_cv_header_inq_stats_cpustats_h = yes; then
+ gl_have_func=yes
+
+cat >>confdefs.h <<\_ACEOF
+#define UMAX 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define UMAX4_3 1
+_ACEOF
+
+fi
+
+
+fi
+
+if test $gl_have_func = no; then
+ if test "${ac_cv_header_sys_cpustats_h+set}" = set; then
+ { $as_echo "$as_me:$LINENO: checking for sys/cpustats.h" >&5
+$as_echo_n "checking for sys/cpustats.h... " >&6; }
+if test "${ac_cv_header_sys_cpustats_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_cpustats_h" >&5
+$as_echo "$ac_cv_header_sys_cpustats_h" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking sys/cpustats.h usability" >&5
+$as_echo_n "checking sys/cpustats.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <sys/cpustats.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking sys/cpustats.h presence" >&5
+$as_echo_n "checking sys/cpustats.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/cpustats.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: sys/cpustats.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: sys/cpustats.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/cpustats.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: sys/cpustats.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: sys/cpustats.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: sys/cpustats.h: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/cpustats.h: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: sys/cpustats.h: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/cpustats.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: sys/cpustats.h: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/cpustats.h: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: sys/cpustats.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/cpustats.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: sys/cpustats.h: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/cpustats.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: sys/cpustats.h: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for sys/cpustats.h" >&5
+$as_echo_n "checking for sys/cpustats.h... " >&6; }
+if test "${ac_cv_header_sys_cpustats_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_header_sys_cpustats_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_cpustats_h" >&5
+$as_echo "$ac_cv_header_sys_cpustats_h" >&6; }
+
+fi
+if test $ac_cv_header_sys_cpustats_h = yes; then
+ gl_have_func=yes; cat >>confdefs.h <<\_ACEOF
+#define UMAX 1
+_ACEOF
+
+fi
+
+
+fi
+
+if test $gl_have_func = no; then
+
+for ac_header in mach/mach.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+fi
+
+
+for ac_header in nlist.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ { $as_echo "$as_me:$LINENO: checking for struct nlist.n_un.n_name" >&5
+$as_echo_n "checking for struct nlist.n_un.n_name... " >&6; }
+if test "${ac_cv_member_struct_nlist_n_un_n_name+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <nlist.h>
+
+int
+main ()
+{
+static struct nlist ac_aggr;
+if (ac_aggr.n_un.n_name)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_nlist_n_un_n_name=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <nlist.h>
+
+int
+main ()
+{
+static struct nlist ac_aggr;
+if (sizeof ac_aggr.n_un.n_name)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_nlist_n_un_n_name=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_nlist_n_un_n_name=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_nlist_n_un_n_name" >&5
+$as_echo "$ac_cv_member_struct_nlist_n_un_n_name" >&6; }
+if test $ac_cv_member_struct_nlist_n_un_n_name = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_NLIST_N_UN_N_NAME 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NLIST_NAME_UNION 1
+_ACEOF
+
+fi
+
+
+fi
+
+done
+
+fi
+done
+
+
+# Some definitions of getloadavg require that the program be installed setgid.
+{ $as_echo "$as_me:$LINENO: checking whether getloadavg requires setgid" >&5
+$as_echo_n "checking whether getloadavg requires setgid... " >&6; }
+if test "${gl_cv_func_getloadavg_setgid+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#define CONFIGURING_GETLOADAVG
+#include "$srcdir/lib/getloadavg.c"
+#ifdef LDAV_PRIVILEGED
+Yowza Am I SETGID yet
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Yowza Am I SETGID yet" >/dev/null 2>&1; then
+ gl_cv_func_getloadavg_setgid=yes
+else
+ gl_cv_func_getloadavg_setgid=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_getloadavg_setgid" >&5
+$as_echo "$gl_cv_func_getloadavg_setgid" >&6; }
+if test $gl_cv_func_getloadavg_setgid = yes; then
+ NEED_SETGID=true
+
+cat >>confdefs.h <<\_ACEOF
+#define GETLOADAVG_PRIVILEGED 1
+_ACEOF
+
+else
+ NEED_SETGID=false
+fi
+
+if test $gl_cv_func_getloadavg_setgid = yes; then
+ { $as_echo "$as_me:$LINENO: checking group of /dev/kmem" >&5
+$as_echo_n "checking group of /dev/kmem... " >&6; }
+if test "${gl_cv_group_kmem+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ # On Solaris, /dev/kmem is a symlink. Get info on the real file.
+ ac_ls_output=`ls -lgL /dev/kmem 2>/dev/null`
+ # If we got an error (system does not support symlinks), try without -L.
+ test -z "$ac_ls_output" && ac_ls_output=`ls -lg /dev/kmem`
+ gl_cv_group_kmem=`echo $ac_ls_output \
+ | sed -ne 's/[ ][ ]*/ /g
+ s/^.[sSrwx-]* *[0-9]* *\([^0-9]*\) *.*/\1/
+ / /s/.* //;p'`
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_group_kmem" >&5
+$as_echo "$gl_cv_group_kmem" >&6; }
+ KMEM_GROUP=$gl_cv_group_kmem
+fi
+if test "x$gl_save_LIBS" = x; then
+ GETLOADAVG_LIBS=$LIBS
+else
+ GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"`
+fi
+LIBS=$gl_save_LIBS
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS getndelim2.$ac_objext"
+
+
+
+
+
+
+ if test -n "$GETOPT_H"; then
+
+ gl_LIBOBJS="$gl_LIBOBJS getopt.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS getopt1.$ac_objext"
+
+ GETOPT_H=getopt.h
+
+cat >>confdefs.h <<\_ACEOF
+#define __GETOPT_PREFIX rpl_
+_ACEOF
+
+
+
+
+
+
+
+
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+for ac_header in OS.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_func in getpagesize
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS getpass.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether __fsetlocking is declared" >&5
+$as_echo_n "checking whether __fsetlocking is declared... " >&6; }
+if test "${ac_cv_have_decl___fsetlocking+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdio.h>
+ #if HAVE_STDIO_EXT_H
+ #include <stdio_ext.h>
+ #endif
+
+int
+main ()
+{
+#ifndef __fsetlocking
+ (void) __fsetlocking;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl___fsetlocking=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl___fsetlocking=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl___fsetlocking" >&5
+$as_echo "$ac_cv_have_decl___fsetlocking" >&6; }
+if test $ac_cv_have_decl___fsetlocking = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL___FSETLOCKING 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL___FSETLOCKING 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+cat >>confdefs.h <<\_ACEOF
+#define getpass gnu_getpass
+_ACEOF
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS gettime.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for gettimeofday with POSIX signature" >&5
+$as_echo_n "checking for gettimeofday with POSIX signature... " >&6; }
+if test "${gl_cv_func_gettimeofday_posix_signature+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/time.h>
+ struct timeval c;
+
+int
+main ()
+{
+
+ int (*f) (struct timeval *restrict, void *restrict) = gettimeofday;
+ int x = f (&c, 0);
+ return !(x | c.tv_sec | c.tv_usec);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_func_gettimeofday_posix_signature=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_gettimeofday_posix_signature=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_gettimeofday_posix_signature" >&5
+$as_echo "$gl_cv_func_gettimeofday_posix_signature" >&6; }
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether gettimeofday clobbers localtime buffer" >&5
+$as_echo_n "checking whether gettimeofday clobbers localtime buffer... " >&6; }
+if test "${gl_cv_func_gettimeofday_clobber+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_gettimeofday_clobber=yes
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+ #include <sys/time.h>
+ #include <time.h>
+ #include <stdlib.h>
+
+int
+main ()
+{
+
+ time_t t = 0;
+ struct tm *lt;
+ struct tm saved_lt;
+ struct timeval tv;
+ lt = localtime (&t);
+ saved_lt = *lt;
+ gettimeofday (&tv, NULL);
+ return memcmp (lt, &saved_lt, sizeof (struct tm)) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_gettimeofday_clobber=no
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_gettimeofday_clobber=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_gettimeofday_clobber" >&5
+$as_echo "$gl_cv_func_gettimeofday_clobber" >&6; }
+
+ if test $gl_cv_func_gettimeofday_clobber = yes; then
+ REPLACE_GETTIMEOFDAY=1
+ SYS_TIME_H=sys/time.h
+
+ gl_LIBOBJS="$gl_LIBOBJS gettimeofday.$ac_objext"
+
+
+for ac_header in sys/timeb.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_func in _ftime
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define gmtime rpl_gmtime
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define localtime rpl_localtime
+_ACEOF
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GETTIMEOFDAY_CLOBBERS_LOCALTIME 1
+_ACEOF
+
+ fi
+
+
+ if test $gl_cv_func_gettimeofday_posix_signature != yes; then
+ REPLACE_GETTIMEOFDAY=1
+ SYS_TIME_H=sys/time.h
+ if test $gl_cv_func_gettimeofday_clobber != yes; then
+ gl_LIBOBJS="$gl_LIBOBJS gettimeofday.$ac_objext"
+
+
+for ac_header in sys/timeb.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_func in _ftime
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+ fi
+ fi
+
+
+ gl_LIBOBJS="$gl_LIBOBJS getugroups.$ac_objext"
+
+ { $as_echo "$as_me:$LINENO: checking type of array argument to getgroups" >&5
+$as_echo_n "checking type of array argument to getgroups... " >&6; }
+if test "${ac_cv_type_getgroups+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_type_getgroups=cross
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Thanks to Mike Rendell for this test. */
+$ac_includes_default
+#define NGID 256
+#undef MAX
+#define MAX(x, y) ((x) > (y) ? (x) : (y))
+
+int
+main ()
+{
+ gid_t gidset[NGID];
+ int i, n;
+ union { gid_t gval; long int lval; } val;
+
+ val.lval = -1;
+ for (i = 0; i < NGID; i++)
+ gidset[i] = val.gval;
+ n = getgroups (sizeof (gidset) / MAX (sizeof (int), sizeof (gid_t)) - 1,
+ gidset);
+ /* Exit non-zero if getgroups seems to require an array of ints. This
+ happens when gid_t is short int but getgroups modifies an array
+ of ints. */
+ return n > 0 && gidset[n] != val.gval;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_getgroups=gid_t
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_type_getgroups=int
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+if test $ac_cv_type_getgroups = cross; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <unistd.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1; then
+ ac_cv_type_getgroups=gid_t
+else
+ ac_cv_type_getgroups=int
+fi
+rm -f conftest*
+
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_getgroups" >&5
+$as_echo "$ac_cv_type_getgroups" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define GETGROUPS_T $ac_cv_type_getgroups
+_ACEOF
+
+
+
+
+
+for ac_func in getusershell
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for group_member" >&5
+$as_echo_n "checking for group_member... " >&6; }
+if test "${ac_cv_func_group_member+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define group_member to an innocuous variant, in case <limits.h> declares group_member.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define group_member innocuous_group_member
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char group_member (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef group_member
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char group_member ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_group_member || defined __stub___group_member
+choke me
+#endif
+
+int
+main ()
+{
+return group_member ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_group_member=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_group_member=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_group_member" >&5
+$as_echo "$ac_cv_func_group_member" >&6; }
+if test $ac_cv_func_group_member = yes; then
+ :
+else
+
+ gl_LIBOBJS="$gl_LIBOBJS group-member.$ac_objext"
+
+
+
+
+fi
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS hard-locale.$ac_objext"
+
+
+ gl_LIBOBJS="$gl_LIBOBJS hash.$ac_objext"
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking host operating system" >&5
+$as_echo_n "checking host operating system... " >&6; }
+if test "${gl_cv_host_operating_system+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ case $host_os in
+
+ # These operating system names do not use the default heuristic below.
+ # They are in reverse order, so that more-specific prefixes come first.
+ winnt*) os='Windows NT';;
+ vos*) os='VOS';;
+ sysv*) os='Unix System V';;
+ superux*) os='SUPER-UX';;
+ sunos*) os='SunOS';;
+ stop*) os='STOP';;
+ sco*) os='SCO Unix';;
+ riscos*) os='RISC OS';;
+ riscix*) os='RISCiX';;
+ qnx*) os='QNX';;
+ pw32*) os='PW32';;
+ ptx*) os='ptx';;
+ plan9*) os='Plan 9';;
+ osf*) os='Tru64';;
+ os2*) os='OS/2';;
+ openbsd*) os='OpenBSD';;
+ nsk*) os='NonStop Kernel';;
+ nonstopux*) os='NonStop-UX';;
+ netbsd*-gnu*) os='GNU/NetBSD';; # NetBSD kernel+libc, GNU userland
+ netbsd*) os='NetBSD';;
+ knetbsd*-gnu) os='GNU/kNetBSD';; # NetBSD kernel, GNU libc+userland
+ kfreebsd*-gnu) os='GNU/kFreeBSD';; # FreeBSD kernel, GNU libc+userland
+ msdosdjgpp*) os='DJGPP';;
+ mpeix*) os='MPE/iX';;
+ mint*) os='MiNT';;
+ mingw*) os='MinGW';;
+ lynxos*) os='LynxOS';;
+ linux*) os='GNU/Linux';;
+ hpux*) os='HP-UX';;
+ hiux*) os='HI-UX';;
+ gnu*) os='GNU';;
+ freebsd*) os='FreeBSD';;
+ dgux*) os='DG/UX';;
+ bsdi*) os='BSD/OS';;
+ bsd*) os='BSD';;
+ beos*) os='BeOS';;
+ aux*) os='A/UX';;
+ atheos*) os='AtheOS';;
+ amigaos*) os='Amiga OS';;
+ aix*) os='AIX';;
+
+ # The default heuristic takes the initial alphabetic string
+ # from $host_os, but capitalizes its first letter.
+ [A-Za-z]*)
+ os=`
+ expr "X$host_os" : 'X\([A-Za-z]\)' | tr '[a-z]' '[A-Z]'
+ ``
+ expr "X$host_os" : 'X.\([A-Za-z]*\)'
+ `
+ ;;
+
+ # If $host_os does not start with an alphabetic string, use it unchanged.
+ *)
+ os=$host_os;;
+ esac
+ gl_cv_host_operating_system=$os
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_host_operating_system" >&5
+$as_echo "$gl_cv_host_operating_system" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define HOST_OPERATING_SYSTEM "$gl_cv_host_operating_system"
+_ACEOF
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS human.$ac_objext"
+
+ :
+
+
+ gl_LIBOBJS="$gl_LIBOBJS i-ring.$ac_objext"
+
+
+
+
+
+
+ am_save_CPPFLAGS="$CPPFLAGS"
+
+ for element in $INCICONV; do
+ haveit=
+ for x in $CPPFLAGS; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X$element"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+ fi
+ done
+
+
+ { $as_echo "$as_me:$LINENO: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if test "${am_cv_func_iconv+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ am_cv_func_iconv="no, consider installing GNU libiconv"
+ am_cv_lib_iconv=no
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ am_cv_func_iconv=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ if test "$am_cv_func_iconv" != yes; then
+ am_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBICONV"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ am_cv_lib_iconv=yes
+ am_cv_func_iconv=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$am_save_LIBS"
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+ if test "$am_cv_func_iconv" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ICONV 1
+_ACEOF
+
+ fi
+ if test "$am_cv_lib_iconv" = yes; then
+ { $as_echo "$as_me:$LINENO: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+ { $as_echo "$as_me:$LINENO: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
+ else
+ CPPFLAGS="$am_save_CPPFLAGS"
+ LIBICONV=
+ LTLIBICONV=
+ fi
+
+
+
+ if test "$am_cv_func_iconv" = yes; then
+ { $as_echo "$as_me:$LINENO: checking for iconv declaration" >&5
+$as_echo_n "checking for iconv declaration... " >&6; }
+ if test "${am_cv_proto_iconv+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ am_cv_proto_iconv_arg1=""
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ am_cv_proto_iconv_arg1="const"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
+fi
+
+ am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+ { $as_echo "$as_me:$LINENO: result: ${ac_t:-
+ }$am_cv_proto_iconv" >&5
+$as_echo "${ac_t:-
+ }$am_cv_proto_iconv" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define ICONV_CONST $am_cv_proto_iconv_arg1
+_ACEOF
+
+ fi
+
+
+ gl_LIBOBJS="$gl_LIBOBJS idcache.$ac_objext"
+
+
+
+for ac_func in inet_ntop
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether inet_ntop is declared" >&5
+$as_echo_n "checking whether inet_ntop is declared... " >&6; }
+if test "${ac_cv_have_decl_inet_ntop+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <arpa/inet.h>
+
+int
+main ()
+{
+#ifndef inet_ntop
+ (void) inet_ntop;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_inet_ntop=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_inet_ntop=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_inet_ntop" >&5
+$as_echo "$ac_cv_have_decl_inet_ntop" >&6; }
+if test $ac_cv_have_decl_inet_ntop = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_INET_NTOP 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_INET_NTOP 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether the compiler generally respects inline" >&5
+$as_echo_n "checking whether the compiler generally respects inline... " >&6; }
+if test "${gl_cv_c_inline_effective+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test $ac_cv_c_inline = no; then
+ gl_cv_c_inline_effective=no
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifdef __NO_INLINE__
+ #error "inline is not effective"
+ #endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_c_inline_effective=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_c_inline_effective=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_c_inline_effective" >&5
+$as_echo "$gl_cv_c_inline_effective" >&6; }
+ if test $gl_cv_c_inline_effective = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_INLINE 1
+_ACEOF
+
+ fi
+
+
+ gl_LIBOBJS="$gl_LIBOBJS imaxtostr.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS offtostr.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS umaxtostr.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS uinttostr.$ac_objext"
+
+
+
+ :
+
+ :
+ :
+ :
+ :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether inttypes.h conforms to C99" >&5
+$as_echo_n "checking whether inttypes.h conforms to C99... " >&6; }
+if test "${gl_cv_header_working_inttypes_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ gl_cv_header_working_inttypes_h=no
+ if test "$gl_cv_header_working_stdint_h" = yes \
+ && test $ac_cv_header_inttypes_h = yes \
+ && test "$ac_cv_have_decl_imaxabs" = yes \
+ && test "$ac_cv_have_decl_imaxdiv" = yes \
+ && test "$ac_cv_have_decl_strtoimax" = yes \
+ && test "$ac_cv_have_decl_strtoumax" = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+
+ /* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stddef.h>
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_FORMAT_MACROS 1 /* to make it work also in C++ mode */
+#include ABSOLUTE_INTTYPES_H
+
+/* No need to duplicate the tests of stdint.m4; they are subsumed by
+ $gl_cv_header_working_stdint_h = yes. */
+
+/* Tests for macros supposed to be defined in inttypes.h. */
+
+const char *k = /* implicit string concatenation */
+#ifdef INT8_MAX
+ PRId8 PRIi8
+#endif
+#ifdef UINT8_MAX
+ PRIo8 PRIu8 PRIx8 PRIX8
+#endif
+#ifdef INT16_MAX
+ PRId16 PRIi16
+#endif
+#ifdef UINT16_MAX
+ PRIo16 PRIu16 PRIx16 PRIX16
+#endif
+#ifdef INT32_MAX
+ PRId32 PRIi32
+#endif
+#ifdef UINT32_MAX
+ PRIo32 PRIu32 PRIx32 PRIX32
+#endif
+#ifdef INT64_MAX
+ PRId64 PRIi64
+#endif
+#ifdef UINT64_MAX
+ PRIo64 PRIu64 PRIx64 PRIX64
+#endif
+ PRIdLEAST8 PRIiLEAST8 PRIoLEAST8 PRIuLEAST8 PRIxLEAST8 PRIXLEAST8
+ PRIdLEAST16 PRIiLEAST16 PRIoLEAST16 PRIuLEAST16 PRIxLEAST16 PRIXLEAST16
+ PRIdLEAST32 PRIiLEAST32 PRIoLEAST32 PRIuLEAST32 PRIxLEAST32 PRIXLEAST32
+ PRIdLEAST64 PRIiLEAST64
+ PRIoLEAST64 PRIuLEAST64 PRIxLEAST64 PRIXLEAST64
+ PRIdFAST8 PRIiFAST8 PRIoFAST8 PRIuFAST8 PRIxFAST8 PRIXFAST8
+ PRIdFAST16 PRIiFAST16 PRIoFAST16 PRIuFAST16 PRIxFAST16 PRIXFAST16
+ PRIdFAST32 PRIiFAST32 PRIoFAST32 PRIuFAST32 PRIxFAST32 PRIXFAST32
+ PRIdFAST64 PRIiFAST64
+ PRIoFAST64 PRIuFAST64 PRIxFAST64 PRIXFAST64
+ PRIdMAX PRIiMAX PRIoMAX PRIuMAX PRIxMAX PRIXMAX
+#ifdef INTPTR_MAX
+ PRIdPTR PRIiPTR
+#endif
+#ifdef UINTPTR_MAX
+ PRIoPTR PRIuPTR PRIxPTR PRIXPTR
+#endif
+ ;
+const char *l = /* implicit string concatenation */
+#ifdef INT8_MAX
+ SCNd8 SCNi8
+#endif
+#ifdef UINT8_MAX
+ SCNo8 SCNu8 SCNx8
+#endif
+#ifdef INT16_MAX
+ SCNd16 SCNi16
+#endif
+#ifdef UINT16_MAX
+ SCNo16 SCNu16 SCNx16
+#endif
+#ifdef INT32_MAX
+ SCNd32 SCNi32
+#endif
+#ifdef UINT32_MAX
+ SCNo32 SCNu32 SCNx32
+#endif
+#ifdef INT64_MAX
+ SCNd64 SCNi64
+#endif
+#ifdef UINT64_MAX
+ SCNo64 SCNu64 SCNx64
+#endif
+ SCNdLEAST8 SCNiLEAST8 SCNoLEAST8 SCNuLEAST8 SCNxLEAST8
+ SCNdLEAST16 SCNiLEAST16 SCNoLEAST16 SCNuLEAST16 SCNxLEAST16
+ SCNdLEAST32 SCNiLEAST32 SCNoLEAST32 SCNuLEAST32 SCNxLEAST32
+ SCNdLEAST64 SCNiLEAST64
+ SCNoLEAST64 SCNuLEAST64 SCNxLEAST64
+ SCNdFAST8 SCNiFAST8 SCNoFAST8 SCNuFAST8 SCNxFAST8
+ SCNdFAST16 SCNiFAST16 SCNoFAST16 SCNuFAST16 SCNxFAST16
+ SCNdFAST32 SCNiFAST32 SCNoFAST32 SCNuFAST32 SCNxFAST32
+ SCNdFAST64 SCNiFAST64
+ SCNoFAST64 SCNuFAST64 SCNxFAST64
+ SCNdMAX SCNiMAX SCNoMAX SCNuMAX SCNxMAX
+#ifdef INTPTR_MAX
+ SCNdPTR SCNiPTR
+#endif
+#ifdef UINTPTR_MAX
+ SCNoPTR SCNuPTR SCNxPTR
+#endif
+ ;
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_header_working_inttypes_h=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_working_inttypes_h" >&5
+$as_echo "$gl_cv_header_working_inttypes_h" >&6; }
+
+ if false && test $gl_cv_header_working_inttypes_h = yes; then
+ INTTYPES_H=''
+ else
+
+
+ if test $ac_cv_header_inttypes_h = yes; then
+ { $as_echo "$as_me:$LINENO: checking absolute name of <inttypes.h>" >&5
+$as_echo_n "checking absolute name of <inttypes.h>... " >&6; }
+if test "${gl_cv_absolute_inttypes_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_inttypes_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <inttypes.h>
+_ACEOF
+ gl_cv_absolute_inttypes_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/inttypes.h#{s#.*"\(.*/inttypes.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_absolute_inttypes_h" >&5
+$as_echo "$gl_cv_absolute_inttypes_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_INTTYPES_H "$gl_cv_absolute_inttypes_h"
+_ACEOF
+
+
+ ABSOLUTE_INTTYPES_H=\"$gl_cv_absolute_inttypes_h\"
+ else
+ ABSOLUTE_INTTYPES_H=\"no/such/file/inttypes.h\"
+ fi
+
+
+ PRIPTR_PREFIX=
+ if test -n "$STDINT_H"; then
+ PRIPTR_PREFIX='"l"'
+ else
+ for glpfx in '' l ll I64; do
+ case $glpfx in
+ '') gltype1='int';;
+ l) gltype1='long int';;
+ ll) gltype1='long long int';;
+ I64) gltype1='__int64';;
+ esac
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdint.h>
+ extern intptr_t foo;
+ extern $gltype1 foo;
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ PRIPTR_PREFIX='"'$glpfx'"'
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test -n "$PRIPTR_PREFIX" && break
+ done
+ fi
+
+
+ if test "$ac_cv_have_decl_imaxabs" = yes; then
+ HAVE_DECL_IMAXABS=1
+ else
+ HAVE_DECL_IMAXABS=0
+ fi
+
+ if test "$ac_cv_have_decl_imaxdiv" = yes; then
+ HAVE_DECL_IMAXDIV=1
+ else
+ HAVE_DECL_IMAXDIV=0
+ fi
+
+ if test "$ac_cv_have_decl_strtoimax" = yes; then
+ HAVE_DECL_STRTOIMAX=1
+ else
+ HAVE_DECL_STRTOIMAX=0
+ fi
+
+ if test "$ac_cv_have_decl_strtoumax" = yes; then
+ HAVE_DECL_STRTOUMAX=1
+ else
+ HAVE_DECL_STRTOUMAX=0
+ fi
+
+ INTTYPES_H='inttypes.h'
+ fi
+
+
+
+ # OpenVMS has isapipe already, so check for it.
+
+for ac_func in isapipe
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_isapipe = no; then
+
+ { $as_echo "$as_me:$LINENO: checking whether pipes are FIFOs (and for their link count)" >&5
+$as_echo_n "checking whether pipes are FIFOs (and for their link count)... " >&6; }
+if test "${gl_cv_pipes_are_fifos+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ gl_cv_pipes_are_fifos=cross-compiling
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdio.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
+ #ifndef S_ISFIFO
+ #define S_ISFIFO(m) 0
+ #endif
+ #ifndef S_ISSOCK
+ #define S_ISSOCK(m) 0
+ #endif
+ int
+ main (int argc, char **argv)
+ {
+ int fd[2];
+ struct stat st;
+ if (pipe (fd) != 0 || fstat (fd[0], &st) != 0)
+ return 1;
+ if (2 <= argc && argv[1][0] == '-')
+ {
+ char const *yesno = (S_ISFIFO (st.st_mode) ? "yes" : "no");
+ if (st.st_nlink <= 1)
+ {
+ long int i = st.st_nlink;
+ if (i != st.st_nlink)
+ return 1;
+ printf ("%s (%ld)\n", yesno, i);
+ }
+ else
+ {
+ unsigned long int i = st.st_nlink;
+ if (i != st.st_nlink)
+ return 1;
+ printf ("%s (%lu)\n", yesno, i);
+ }
+ }
+ else
+ {
+ if (! S_ISFIFO (st.st_mode) && ! S_ISSOCK (st.st_mode))
+ return 1;
+ }
+ return 0;
+ }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_pipes_are_fifos=`./conftest$ac_exeext -`
+ test -z "$gl_cv_pipes_are_fifos" && gl_cv_pipes_are_fifos=no
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_pipes_are_fifos=unknown
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_pipes_are_fifos" >&5
+$as_echo "$gl_cv_pipes_are_fifos" >&6; }
+
+ case $gl_cv_pipes_are_fifos in #(
+ 'yes ('*')')
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_FIFO_PIPES 1
+_ACEOF
+;; #(
+ 'no ('*')')
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_FIFO_PIPES 0
+_ACEOF
+;;
+ esac
+
+ case $gl_cv_pipes_are_fifos in #(
+ *'('*')')
+
+cat >>confdefs.h <<_ACEOF
+#define PIPE_LINK_COUNT_MAX `expr "$gl_cv_pipes_are_fifos" : '.*\((.*)\)'`
+_ACEOF
+;;
+ esac
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in lchown
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for flag to ignore unused libraries" >&5
+$as_echo_n "checking for flag to ignore unused libraries... " >&6; }
+if test "${gl_cv_ignore_unused_libraries+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ gl_cv_ignore_unused_libraries=none
+ gl_saved_ldflags=$LDFLAGS
+ gl_saved_libs=$LIBS
+ # Link with -lm to detect binutils 2.16 bug with --as-needed; see
+ # <http://lists.gnu.org/archive/html/bug-gnulib/2006-06/msg00131.html>.
+ LIBS="$LIBS -lm"
+ # Use long option sequences like '-z ignore' to test for the feature,
+ # to forestall problems with linkers that have -z, -i, -g, -n, etc. flags.
+ # GCC + binutils likes '-Wl,--as-needed'.
+ # GCC + Solaris ld likes '-Wl,-z,ignore'.
+ # Sun C likes '-z ignore'.
+ # Don't try bare '--as-needed'; nothing likes it and the HP-UX 11.11
+ # native cc issues annoying warnings and then ignores it,
+ # which would cause us to incorrectly conclude that it worked.
+ for gl_flags in \
+ '-Wl,--as-needed' \
+ '-Wl,-z,ignore' \
+ '-z ignore'
+ do
+ LDFLAGS="$gl_flags $LDFLAGS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ gl_cv_ignore_unused_libraries=$gl_flags
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$gl_saved_ldflags
+ test "$gl_cv_ignore_unused_libraries" != none && break
+ done
+ LIBS=$gl_saved_libs
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_ignore_unused_libraries" >&5
+$as_echo "$gl_cv_ignore_unused_libraries" >&6; }
+
+ test "$gl_cv_ignore_unused_libraries" != none &&
+ LDFLAGS="$LDFLAGS $gl_cv_ignore_unused_libraries"
+
+ { $as_echo "$as_me:$LINENO: checking whether link(2) dereferences a symlink specified with a trailing slash" >&5
+$as_echo_n "checking whether link(2) dereferences a symlink specified with a trailing slash... " >&6; }
+if test "${jm_ac_cv_func_link_follows_symlink+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ # Create a regular file.
+ echo > conftest.file
+ if test "$cross_compiling" = yes; then
+ jm_ac_cv_func_link_follows_symlink=yes
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+# include <sys/types.h>
+# include <sys/stat.h>
+# include <unistd.h>
+# include <stdlib.h>
+
+# define SAME_INODE(Stat_buf_1, Stat_buf_2) \
+ ((Stat_buf_1).st_ino == (Stat_buf_2).st_ino \
+ && (Stat_buf_1).st_dev == (Stat_buf_2).st_dev)
+
+ int
+ main ()
+ {
+ const char *file = "conftest.file";
+ const char *sym = "conftest.sym";
+ const char *hard = "conftest.hard";
+ struct stat sb_file, sb_hard;
+
+ /* Create a symlink to the regular file. */
+ if (symlink (file, sym))
+ abort ();
+
+ /* Create a hard link to that symlink. */
+ if (link (sym, hard))
+ abort ();
+
+ if (lstat (hard, &sb_hard))
+ abort ();
+ if (lstat (file, &sb_file))
+ abort ();
+
+ /* If the dev/inode of hard and file are the same, then
+ the link call followed the symlink. */
+ return SAME_INODE (sb_hard, sb_file) ? 0 : 1;
+ }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ jm_ac_cv_func_link_follows_symlink=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+jm_ac_cv_func_link_follows_symlink=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $jm_ac_cv_func_link_follows_symlink" >&5
+$as_echo "$jm_ac_cv_func_link_follows_symlink" >&6; }
+ if test $jm_ac_cv_func_link_follows_symlink = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define LINK_FOLLOWS_SYMLINKS 1
+_ACEOF
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS long-options.$ac_objext"
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether lstat dereferences a symlink specified with a trailing slash" >&5
+$as_echo_n "checking whether lstat dereferences a symlink specified with a trailing slash... " >&6; }
+if test "${ac_cv_func_lstat_dereferences_slashed_symlink+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ rm -f conftest.sym conftest.file
+echo >conftest.file
+if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_lstat_dereferences_slashed_symlink=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+struct stat sbuf;
+ /* Linux will dereference the symlink and fail.
+ That is better in the sense that it means we will not
+ have to compile and use the lstat wrapper. */
+ return lstat ("conftest.sym/", &sbuf) == 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_lstat_dereferences_slashed_symlink=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_lstat_dereferences_slashed_symlink=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+else
+ # If the `ln -s' command failed, then we probably don't even
+ # have an lstat function.
+ ac_cv_func_lstat_dereferences_slashed_symlink=no
+fi
+rm -f conftest.sym conftest.file
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5
+$as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; }
+
+test $ac_cv_func_lstat_dereferences_slashed_symlink = yes &&
+
+cat >>confdefs.h <<_ACEOF
+#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
+_ACEOF
+
+
+if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then
+ gl_LIBOBJS="$gl_LIBOBJS lstat.$ac_objext"
+fi
+
+ :
+
+
+for ac_header in stdlib.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+{ $as_echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5
+$as_echo_n "checking for GNU libc compatible malloc... " >&6; }
+if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_malloc_0_nonnull=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#if defined STDC_HEADERS || defined HAVE_STDLIB_H
+# include <stdlib.h>
+#else
+char *malloc ();
+#endif
+
+int
+main ()
+{
+return ! malloc (0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_malloc_0_nonnull=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_malloc_0_nonnull=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_malloc_0_nonnull" >&5
+$as_echo "$ac_cv_func_malloc_0_nonnull" >&6; }
+if test $ac_cv_func_malloc_0_nonnull = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MALLOC 1
+_ACEOF
+
+else
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_MALLOC 0
+_ACEOF
+
+ gl_LIBOBJS="$gl_LIBOBJS malloc.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define malloc rpl_malloc
+_ACEOF
+
+fi
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+ GNULIB_MBSCASECMP=1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether mbrtowc and mbstate_t are properly declared" >&5
+$as_echo_n "checking whether mbrtowc and mbstate_t are properly declared... " >&6; }
+if test "${gl_cv_func_mbrtowc+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <wchar.h>
+int
+main ()
+{
+wchar_t wc;
+ char const s[] = "";
+ size_t n = 1;
+ mbstate_t state;
+ return ! (sizeof state && (mbrtowc) (&wc, s, n, &state));
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ gl_cv_func_mbrtowc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_mbrtowc=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mbrtowc" >&5
+$as_echo "$gl_cv_func_mbrtowc" >&6; }
+ if test $gl_cv_func_mbrtowc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MBRTOWC 1
+_ACEOF
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking whether mbswidth is declared in <wchar.h>" >&5
+$as_echo_n "checking whether mbswidth is declared in <wchar.h>... " >&6; }
+if test "${ac_cv_have_decl_mbswidth+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+
+int
+main ()
+{
+
+ char *p = (char *) mbswidth;
+ return !p;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_mbswidth=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_mbswidth=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_mbswidth" >&5
+$as_echo "$ac_cv_have_decl_mbswidth" >&6; }
+ if test $ac_cv_have_decl_mbswidth = yes; then
+ ac_val=1
+ else
+ ac_val=0
+ fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_MBSWIDTH_IN_WCHAR_H $ac_val
+_ACEOF
+
+
+ { $as_echo "$as_me:$LINENO: checking for mbstate_t" >&5
+$as_echo_n "checking for mbstate_t... " >&6; }
+if test "${ac_cv_type_mbstate_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+# include <wchar.h>
+int
+main ()
+{
+mbstate_t x; return sizeof x;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_mbstate_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_mbstate_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_mbstate_t" >&5
+$as_echo "$ac_cv_type_mbstate_t" >&6; }
+ if test $ac_cv_type_mbstate_t = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MBSTATE_T 1
+_ACEOF
+
+ else
+
+cat >>confdefs.h <<\_ACEOF
+#define mbstate_t int
+_ACEOF
+
+ fi
+
+
+
+
+ :
+
+
+ gl_LIBOBJS="$gl_LIBOBJS md5.$ac_objext"
+
+
+ :
+
+
+ gl_LIBOBJS="$gl_LIBOBJS memcasecmp.$ac_objext"
+
+
+
+for ac_func in memchr
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_memchr = no; then
+
+
+for ac_header in bp-sym.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for working memcmp" >&5
+$as_echo_n "checking for working memcmp... " >&6; }
+if test "${ac_cv_func_memcmp_working+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_memcmp_working=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+ /* Some versions of memcmp are not 8-bit clean. */
+ char c0 = '\100', c1 = '\200', c2 = '\201';
+ if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0)
+ return 1;
+
+ /* The Next x86 OpenStep bug shows up only when comparing 16 bytes
+ or more and with at least one buffer not starting on a 4-byte boundary.
+ William Lewis provided this test program. */
+ {
+ char foo[21];
+ char bar[21];
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ char *a = foo + i;
+ char *b = bar + i;
+ strcpy (a, "--------01111111");
+ strcpy (b, "--------10000000");
+ if (memcmp (a, b, 16) >= 0)
+ return 1;
+ }
+ return 0;
+ }
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_memcmp_working=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_memcmp_working=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5
+$as_echo "$ac_cv_func_memcmp_working" >&6; }
+test $ac_cv_func_memcmp_working = no && gl_LIBOBJS="$gl_LIBOBJS memcmp.$ac_objext"
+
+ if test $ac_cv_func_memcmp_working = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define memcmp rpl_memcmp
+_ACEOF
+
+ :
+ fi
+
+
+ gl_LIBOBJS="$gl_LIBOBJS memcoll.$ac_objext"
+
+ { $as_echo "$as_me:$LINENO: checking for working strcoll" >&5
+$as_echo_n "checking for working strcoll... " >&6; }
+if test "${ac_cv_func_strcoll_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_strcoll_works=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+return (strcoll ("abc", "def") >= 0 ||
+ strcoll ("ABC", "DEF") >= 0 ||
+ strcoll ("123", "456") >= 0)
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_strcoll_works=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_strcoll_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_strcoll_works" >&5
+$as_echo "$ac_cv_func_strcoll_works" >&6; }
+if test $ac_cv_func_strcoll_works = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STRCOLL 1
+_ACEOF
+
+fi
+
+
+
+
+for ac_func in memcpy
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_memcpy = no; then
+
+ :
+
+ fi
+
+
+
+for ac_func in memmove
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_memmove = no; then
+
+ :
+
+ fi
+
+
+
+
+
+
+
+
+for ac_func in mempcpy
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_mempcpy = no; then
+ HAVE_MEMPCPY=0
+
+ :
+
+ fi
+
+
+
+ GNULIB_MEMPCPY=1
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_have_decl_memrchr = no; then
+ HAVE_DECL_MEMRCHR=0
+ fi
+
+
+for ac_func in memrchr
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_memrchr = no; then
+ :
+ fi
+
+
+
+ GNULIB_MEMRCHR=1
+
+
+
+for ac_func in memset
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_memset = no; then
+
+ :
+
+ fi
+
+
+ gl_LIBOBJS="$gl_LIBOBJS mkancesdirs.$ac_objext"
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether mkdir fails due to a trailing slash" >&5
+$as_echo_n "checking whether mkdir fails due to a trailing slash... " >&6; }
+if test "${gl_cv_func_mkdir_trailing_slash_bug+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ # Arrange for deletion of the temporary directory this test might create.
+ ac_clean_files="$ac_clean_files confdir-slash"
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_mkdir_trailing_slash_bug=yes
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+# include <sys/types.h>
+# include <sys/stat.h>
+# include <stdlib.h>
+# ifdef HAVE_UNISTD_H
+# include <unistd.h>
+# endif
+ int main ()
+ {
+ rmdir ("confdir-slash");
+ exit (mkdir ("confdir-slash/", 0700));
+ }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_mkdir_trailing_slash_bug=no
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_mkdir_trailing_slash_bug=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mkdir_trailing_slash_bug" >&5
+$as_echo "$gl_cv_func_mkdir_trailing_slash_bug" >&6; }
+
+ if test $gl_cv_func_mkdir_trailing_slash_bug = yes; then
+ gl_LIBOBJS="$gl_LIBOBJS mkdir.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define mkdir rpl_mkdir
+_ACEOF
+
+ :
+ fi
+
+
+ gl_LIBOBJS="$gl_LIBOBJS dirchownmod.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS mkdir-p.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for working mkstemp" >&5
+$as_echo_n "checking for working mkstemp... " >&6; }
+if test "${gl_cv_func_working_mkstemp+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ mkdir conftest.mkstemp
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_working_mkstemp=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+int i;
+ off_t large = (off_t) 4294967295u;
+ if (large < 0)
+ large = 2147483647;
+ for (i = 0; i < 70; i++)
+ {
+ char templ[] = "conftest.mkstemp/coXXXXXX";
+ int (*mkstemp_function) (char *) = mkstemp;
+ int fd = mkstemp_function (templ);
+ if (fd < 0 || lseek (fd, large, SEEK_SET) != large)
+ return 1;
+ close (fd);
+ }
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_working_mkstemp=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_working_mkstemp=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ rm -rf conftest.mkstemp
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_working_mkstemp" >&5
+$as_echo "$gl_cv_func_working_mkstemp" >&6; }
+
+ if test $gl_cv_func_working_mkstemp != yes; then
+ REPLACE_MKSTEMP=1
+ gl_LIBOBJS="$gl_LIBOBJS mkstemp.$ac_objext"
+
+
+ fi
+
+
+
+ GNULIB_MKSTEMP=1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for working mktime" >&5
+$as_echo_n "checking for working mktime... " >&6; }
+if test "${ac_cv_func_working_mktime+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_working_mktime=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Test program from Paul Eggert and Tony Leneis. */
+#include <limits.h>
+#include <stdlib.h>
+#include <time.h>
+
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#ifndef HAVE_ALARM
+# define alarm(X) /* empty */
+#endif
+
+/* Work around redefinition to rpl_putenv by other config tests. */
+#undef putenv
+
+static time_t time_t_max;
+static time_t time_t_min;
+
+/* Values we'll use to set the TZ environment variable. */
+static char *tz_strings[] = {
+ (char *) 0, "TZ=GMT0", "TZ=JST-9",
+ "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00"
+};
+#define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0]))
+
+/* Return 0 if mktime fails to convert a date in the spring-forward gap.
+ Based on a problem report from Andreas Jaeger. */
+static int
+spring_forward_gap ()
+{
+ /* glibc (up to about 1998-10-07) failed this test. */
+ struct tm tm;
+
+ /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0"
+ instead of "TZ=America/Vancouver" in order to detect the bug even
+ on systems that don't support the Olson extension, or don't have the
+ full zoneinfo tables installed. */
+ putenv ("TZ=PST8PDT,M4.1.0,M10.5.0");
+
+ tm.tm_year = 98;
+ tm.tm_mon = 3;
+ tm.tm_mday = 5;
+ tm.tm_hour = 2;
+ tm.tm_min = 0;
+ tm.tm_sec = 0;
+ tm.tm_isdst = -1;
+ return mktime (&tm) != (time_t) -1;
+}
+
+static int
+mktime_test1 (now)
+ time_t now;
+{
+ struct tm *lt;
+ return ! (lt = localtime (&now)) || mktime (lt) == now;
+}
+
+static int
+mktime_test (now)
+ time_t now;
+{
+ return (mktime_test1 (now)
+ && mktime_test1 ((time_t) (time_t_max - now))
+ && mktime_test1 ((time_t) (time_t_min + now)));
+}
+
+static int
+irix_6_4_bug ()
+{
+ /* Based on code from Ariel Faigon. */
+ struct tm tm;
+ tm.tm_year = 96;
+ tm.tm_mon = 3;
+ tm.tm_mday = 0;
+ tm.tm_hour = 0;
+ tm.tm_min = 0;
+ tm.tm_sec = 0;
+ tm.tm_isdst = -1;
+ mktime (&tm);
+ return tm.tm_mon == 2 && tm.tm_mday == 31;
+}
+
+static int
+bigtime_test (j)
+ int j;
+{
+ struct tm tm;
+ time_t now;
+ tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j;
+ now = mktime (&tm);
+ if (now != (time_t) -1)
+ {
+ struct tm *lt = localtime (&now);
+ if (! (lt
+ && lt->tm_year == tm.tm_year
+ && lt->tm_mon == tm.tm_mon
+ && lt->tm_mday == tm.tm_mday
+ && lt->tm_hour == tm.tm_hour
+ && lt->tm_min == tm.tm_min
+ && lt->tm_sec == tm.tm_sec
+ && lt->tm_yday == tm.tm_yday
+ && lt->tm_wday == tm.tm_wday
+ && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst)
+ == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst))))
+ return 0;
+ }
+ return 1;
+}
+
+static int
+year_2050_test ()
+{
+ /* The correct answer for 2050-02-01 00:00:00 in Pacific time,
+ ignoring leap seconds. */
+ unsigned long int answer = 2527315200UL;
+
+ struct tm tm;
+ time_t t;
+ tm.tm_year = 2050 - 1900;
+ tm.tm_mon = 2 - 1;
+ tm.tm_mday = 1;
+ tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
+ tm.tm_isdst = -1;
+
+ /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0"
+ instead of "TZ=America/Vancouver" in order to detect the bug even
+ on systems that don't support the Olson extension, or don't have the
+ full zoneinfo tables installed. */
+ putenv ("TZ=PST8PDT,M4.1.0,M10.5.0");
+
+ t = mktime (&tm);
+
+ /* Check that the result is either a failure, or close enough
+ to the correct answer that we can assume the discrepancy is
+ due to leap seconds. */
+ return (t == (time_t) -1
+ || (0 < t && answer - 120 <= t && t <= answer + 120));
+}
+
+int
+main ()
+{
+ time_t t, delta;
+ int i, j;
+
+ /* This test makes some buggy mktime implementations loop.
+ Give up after 60 seconds; a mktime slower than that
+ isn't worth using anyway. */
+ alarm (60);
+
+ for (;;)
+ {
+ t = (time_t_max << 1) + 1;
+ if (t <= time_t_max)
+ break;
+ time_t_max = t;
+ }
+ time_t_min = - ((time_t) ~ (time_t) 0 == (time_t) -1) - time_t_max;
+
+ delta = time_t_max / 997; /* a suitable prime number */
+ for (i = 0; i < N_STRINGS; i++)
+ {
+ if (tz_strings[i])
+ putenv (tz_strings[i]);
+
+ for (t = 0; t <= time_t_max - delta; t += delta)
+ if (! mktime_test (t))
+ return 1;
+ if (! (mktime_test ((time_t) 1)
+ && mktime_test ((time_t) (60 * 60))
+ && mktime_test ((time_t) (60 * 60 * 24))))
+ return 1;
+
+ for (j = 1; ; j <<= 1)
+ if (! bigtime_test (j))
+ return 1;
+ else if (INT_MAX / 2 < j)
+ break;
+ if (! bigtime_test (INT_MAX))
+ return 1;
+ }
+ return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ());
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_working_mktime=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_working_mktime=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_working_mktime" >&5
+$as_echo "$ac_cv_func_working_mktime" >&6; }
+if test $ac_cv_func_working_mktime = no; then
+ gl_LIBOBJS="$gl_LIBOBJS mktime.$ac_objext"
+fi
+
+ if test $ac_cv_func_working_mktime = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define mktime rpl_mktime
+_ACEOF
+
+
+
+
+ fi
+
+
+ gl_LIBOBJS="$gl_LIBOBJS modechange.$ac_objext"
+
+
+
+
+
+for ac_func in listmntent getmntinfo
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+
+
+
+
+
+
+# We must include grp.h before ucred.h on OSF V4.0, since ucred.h uses
+# NGROUPS (as the array dimension for a struct member) without a definition.
+
+for ac_header in sys/ucred.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <grp.h>
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_header in sys/mount.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+ #if HAVE_SYS_PARAM_H
+ #include <sys/param.h>
+ #endif
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+for ac_header in mntent.h sys/fs_types.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ getfsstat_includes="\
+$ac_includes_default
+#if HAVE_SYS_PARAM_H
+# include <sys/param.h> /* needed by powerpc-apple-darwin1.3.7 */
+#endif
+#if HAVE_SYS_UCRED_H
+# include <grp.h> /* needed for definition of NGROUPS */
+# include <sys/ucred.h> /* needed by powerpc-apple-darwin1.3.7 */
+#endif
+#if HAVE_SYS_MOUNT_H
+# include <sys/mount.h>
+#endif
+#if HAVE_SYS_FS_TYPES_H
+# include <sys/fs_types.h> /* needed by powerpc-apple-darwin1.3.7 */
+#endif
+"
+{ $as_echo "$as_me:$LINENO: checking for struct fsstat.f_fstypename" >&5
+$as_echo_n "checking for struct fsstat.f_fstypename... " >&6; }
+if test "${ac_cv_member_struct_fsstat_f_fstypename+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$getfsstat_includes
+
+int
+main ()
+{
+static struct fsstat ac_aggr;
+if (ac_aggr.f_fstypename)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_fsstat_f_fstypename=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$getfsstat_includes
+
+int
+main ()
+{
+static struct fsstat ac_aggr;
+if (sizeof ac_aggr.f_fstypename)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_fsstat_f_fstypename=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_fsstat_f_fstypename=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_fsstat_f_fstypename" >&5
+$as_echo "$ac_cv_member_struct_fsstat_f_fstypename" >&6; }
+if test $ac_cv_member_struct_fsstat_f_fstypename = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_FSSTAT_F_FSTYPENAME 1
+_ACEOF
+
+
+fi
+
+
+# Determine how to get the list of mounted file systems.
+ac_list_mounted_fs=
+
+# If the getmntent function is available but not in the standard library,
+# make sure LIBS contains the appropriate -l option.
+# getmntent is in the standard C library on UNICOS, in -lsun on Irix 4,
+# -lseq on Dynix/PTX, -lgen on Unixware.
+{ $as_echo "$as_me:$LINENO: checking for library containing getmntent" >&5
+$as_echo_n "checking for library containing getmntent... " >&6; }
+if test "${ac_cv_search_getmntent+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getmntent ();
+int
+main ()
+{
+return getmntent ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' sun seq gen; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_search_getmntent=$ac_res
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext
+ if test "${ac_cv_search_getmntent+set}" = set; then
+ break
+fi
+done
+if test "${ac_cv_search_getmntent+set}" = set; then
+ :
+else
+ ac_cv_search_getmntent=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_getmntent" >&5
+$as_echo "$ac_cv_search_getmntent" >&6; }
+ac_res=$ac_cv_search_getmntent
+if test "$ac_res" != no; then
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+
+for ac_func in getmntent
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+# This test must precede the ones for getmntent because Unicos-9 is
+# reported to have the getmntent function, but its support is incompatible
+# with other getmntent implementations.
+
+# NOTE: Normally, I wouldn't use a check for system type as I've done for
+# `CRAY' below since that goes against the whole autoconf philosophy. But
+# I think there is too great a chance that some non-Cray system has a
+# function named listmntent to risk the false positive.
+
+if test -z "$ac_list_mounted_fs"; then
+ # Cray UNICOS 9
+ { $as_echo "$as_me:$LINENO: checking for listmntent of Cray/Unicos-9" >&5
+$as_echo_n "checking for listmntent of Cray/Unicos-9... " >&6; }
+ if test "${fu_cv_sys_mounted_cray_listmntent+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ fu_cv_sys_mounted_cray_listmntent=no
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef _CRAY
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+ test $ac_cv_func_listmntent = yes \
+ && fu_cv_sys_mounted_cray_listmntent=yes
+
+fi
+rm -f conftest*
+
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_mounted_cray_listmntent" >&5
+$as_echo "$fu_cv_sys_mounted_cray_listmntent" >&6; }
+ if test $fu_cv_sys_mounted_cray_listmntent = yes; then
+ ac_list_mounted_fs=found
+
+cat >>confdefs.h <<\_ACEOF
+#define MOUNTED_LISTMNTENT 1
+_ACEOF
+
+ fi
+fi
+
+if test -z "$ac_list_mounted_fs"; then
+ # AIX.
+ { $as_echo "$as_me:$LINENO: checking for mntctl function and struct vmount" >&5
+$as_echo_n "checking for mntctl function and struct vmount... " >&6; }
+ if test "${fu_cv_sys_mounted_vmount+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <fshelp.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ fu_cv_sys_mounted_vmount=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ fu_cv_sys_mounted_vmount=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_mounted_vmount" >&5
+$as_echo "$fu_cv_sys_mounted_vmount" >&6; }
+ if test $fu_cv_sys_mounted_vmount = yes; then
+ ac_list_mounted_fs=found
+
+cat >>confdefs.h <<\_ACEOF
+#define MOUNTED_VMOUNT 1
+_ACEOF
+
+ fi
+fi
+
+if test $ac_cv_func_getmntent = yes; then
+
+ # This system has the getmntent function.
+ # Determine whether it's the one-argument variant or the two-argument one.
+
+ if test -z "$ac_list_mounted_fs"; then
+ # 4.3BSD, SunOS, HP-UX, Dynix, Irix
+ { $as_echo "$as_me:$LINENO: checking for one-argument getmntent function" >&5
+$as_echo_n "checking for one-argument getmntent function... " >&6; }
+ if test "${fu_cv_sys_mounted_getmntent1+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* SunOS 4.1.x /usr/include/mntent.h needs this for FILE */
+#include <stdio.h>
+
+#include <mntent.h>
+#if !defined MOUNTED
+# if defined _PATH_MOUNTED /* GNU libc */
+# define MOUNTED _PATH_MOUNTED
+# endif
+# if defined MNT_MNTTAB /* HP-UX. */
+# define MOUNTED MNT_MNTTAB
+# endif
+# if defined MNTTABNAME /* Dynix. */
+# define MOUNTED MNTTABNAME
+# endif
+#endif
+
+int
+main ()
+{
+ struct mntent *mnt = 0; char *table = MOUNTED;
+ if (sizeof mnt && sizeof table) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ fu_cv_sys_mounted_getmntent1=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ fu_cv_sys_mounted_getmntent1=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_mounted_getmntent1" >&5
+$as_echo "$fu_cv_sys_mounted_getmntent1" >&6; }
+ if test $fu_cv_sys_mounted_getmntent1 = yes; then
+ ac_list_mounted_fs=found
+
+cat >>confdefs.h <<\_ACEOF
+#define MOUNTED_GETMNTENT1 1
+_ACEOF
+
+ fi
+ fi
+
+ if test -z "$ac_list_mounted_fs"; then
+ # SVR4
+ { $as_echo "$as_me:$LINENO: checking for two-argument getmntent function" >&5
+$as_echo_n "checking for two-argument getmntent function... " >&6; }
+ if test "${fu_cv_sys_mounted_getmntent2+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/mnttab.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "getmntent" >/dev/null 2>&1; then
+ fu_cv_sys_mounted_getmntent2=yes
+else
+ fu_cv_sys_mounted_getmntent2=no
+fi
+rm -f conftest*
+
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_mounted_getmntent2" >&5
+$as_echo "$fu_cv_sys_mounted_getmntent2" >&6; }
+ if test $fu_cv_sys_mounted_getmntent2 = yes; then
+ ac_list_mounted_fs=found
+
+cat >>confdefs.h <<\_ACEOF
+#define MOUNTED_GETMNTENT2 1
+_ACEOF
+
+
+for ac_func in hasmntopt
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ fi
+ fi
+
+fi
+
+if test -z "$ac_list_mounted_fs"; then
+ # DEC Alpha running OSF/1, and Apple Darwin 1.3.
+ # powerpc-apple-darwin1.3.7 needs sys/param.h sys/ucred.h sys/fs_types.h
+
+ { $as_echo "$as_me:$LINENO: checking for getfsstat function" >&5
+$as_echo_n "checking for getfsstat function... " >&6; }
+ if test "${fu_cv_sys_mounted_getfsstat+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#if HAVE_STRUCT_FSSTAT_F_FSTYPENAME
+# define FS_TYPE(Ent) ((Ent).f_fstypename)
+#else
+# define FS_TYPE(Ent) mnt_names[(Ent).f_type]
+#endif
+$getfsstat_includes
+
+int
+main ()
+{
+struct statfs *stats;
+ int numsys = getfsstat ((struct statfs *)0, 0L, MNT_WAIT);
+ char *t = FS_TYPE (*stats);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ fu_cv_sys_mounted_getfsstat=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ fu_cv_sys_mounted_getfsstat=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_mounted_getfsstat" >&5
+$as_echo "$fu_cv_sys_mounted_getfsstat" >&6; }
+ if test $fu_cv_sys_mounted_getfsstat = yes; then
+ ac_list_mounted_fs=found
+
+cat >>confdefs.h <<\_ACEOF
+#define MOUNTED_GETFSSTAT 1
+_ACEOF
+
+ fi
+fi
+
+if test -z "$ac_list_mounted_fs"; then
+ # SVR3
+ { $as_echo "$as_me:$LINENO: checking for FIXME existence of three headers" >&5
+$as_echo_n "checking for FIXME existence of three headers... " >&6; }
+ if test "${fu_cv_sys_mounted_fread_fstyp+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/statfs.h>
+#include <sys/fstyp.h>
+#include <mnttab.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ fu_cv_sys_mounted_fread_fstyp=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ fu_cv_sys_mounted_fread_fstyp=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_mounted_fread_fstyp" >&5
+$as_echo "$fu_cv_sys_mounted_fread_fstyp" >&6; }
+ if test $fu_cv_sys_mounted_fread_fstyp = yes; then
+ ac_list_mounted_fs=found
+
+cat >>confdefs.h <<\_ACEOF
+#define MOUNTED_FREAD_FSTYP 1
+_ACEOF
+
+ fi
+fi
+
+if test -z "$ac_list_mounted_fs"; then
+ # 4.4BSD and DEC OSF/1.
+ { $as_echo "$as_me:$LINENO: checking for getmntinfo function" >&5
+$as_echo_n "checking for getmntinfo function... " >&6; }
+ if test "${fu_cv_sys_mounted_getmntinfo+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ test "$ac_cv_func_getmntinfo" = yes \
+ && fu_cv_sys_mounted_getmntinfo=yes \
+ || fu_cv_sys_mounted_getmntinfo=no
+
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_mounted_getmntinfo" >&5
+$as_echo "$fu_cv_sys_mounted_getmntinfo" >&6; }
+ if test $fu_cv_sys_mounted_getmntinfo = yes; then
+ { $as_echo "$as_me:$LINENO: checking whether getmntinfo returns statvfs structures" >&5
+$as_echo_n "checking whether getmntinfo returns statvfs structures... " >&6; }
+ if test "${fu_cv_sys_mounted_getmntinfo2+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#if HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+#include <sys/types.h>
+#if HAVE_SYS_MOUNT_H
+# include <sys/mount.h>
+#endif
+#if HAVE_SYS_STATVFS_H
+# include <sys/statvfs.h>
+#endif
+extern int getmntinfo (struct statfs **, int);
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ fu_cv_sys_mounted_getmntinfo2=no
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ fu_cv_sys_mounted_getmntinfo2=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_mounted_getmntinfo2" >&5
+$as_echo "$fu_cv_sys_mounted_getmntinfo2" >&6; }
+ if test $fu_cv_sys_mounted_getmntinfo2 = no; then
+ ac_list_mounted_fs=found
+
+cat >>confdefs.h <<\_ACEOF
+#define MOUNTED_GETMNTINFO 1
+_ACEOF
+
+ else
+ ac_list_mounted_fs=found
+
+cat >>confdefs.h <<\_ACEOF
+#define MOUNTED_GETMNTINFO2 1
+_ACEOF
+
+ fi
+ fi
+fi
+
+if test -z "$ac_list_mounted_fs"; then
+ # Ultrix
+ { $as_echo "$as_me:$LINENO: checking for getmnt function" >&5
+$as_echo_n "checking for getmnt function... " >&6; }
+ if test "${fu_cv_sys_mounted_getmnt+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/fs_types.h>
+#include <sys/mount.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ fu_cv_sys_mounted_getmnt=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ fu_cv_sys_mounted_getmnt=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_mounted_getmnt" >&5
+$as_echo "$fu_cv_sys_mounted_getmnt" >&6; }
+ if test $fu_cv_sys_mounted_getmnt = yes; then
+ ac_list_mounted_fs=found
+
+cat >>confdefs.h <<\_ACEOF
+#define MOUNTED_GETMNT 1
+_ACEOF
+
+ fi
+fi
+
+if test -z "$ac_list_mounted_fs"; then
+ # BeOS
+
+
+for ac_func in next_dev fs_stat_dev
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+for ac_header in fs_info.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ { $as_echo "$as_me:$LINENO: checking for BEOS mounted file system support functions" >&5
+$as_echo_n "checking for BEOS mounted file system support functions... " >&6; }
+ if test $ac_cv_header_fs_info_h = yes \
+ && test $ac_cv_func_next_dev = yes \
+ && test $ac_cv_func_fs_stat_dev = yes; then
+ fu_result=yes
+ else
+ fu_result=no
+ fi
+ { $as_echo "$as_me:$LINENO: result: $fu_result" >&5
+$as_echo "$fu_result" >&6; }
+ if test $fu_result = yes; then
+ ac_list_mounted_fs=found
+
+cat >>confdefs.h <<\_ACEOF
+#define MOUNTED_FS_STAT_DEV 1
+_ACEOF
+
+ fi
+fi
+
+if test -z "$ac_list_mounted_fs"; then
+ # SVR2
+ { $as_echo "$as_me:$LINENO: checking whether it is possible to resort to fread on /etc/mnttab" >&5
+$as_echo_n "checking whether it is possible to resort to fread on /etc/mnttab... " >&6; }
+ if test "${fu_cv_sys_mounted_fread+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <mnttab.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ fu_cv_sys_mounted_fread=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ fu_cv_sys_mounted_fread=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $fu_cv_sys_mounted_fread" >&5
+$as_echo "$fu_cv_sys_mounted_fread" >&6; }
+ if test $fu_cv_sys_mounted_fread = yes; then
+ ac_list_mounted_fs=found
+
+cat >>confdefs.h <<\_ACEOF
+#define MOUNTED_FREAD 1
+_ACEOF
+
+ fi
+fi
+
+if test -z "$ac_list_mounted_fs"; then
+ { { $as_echo "$as_me:$LINENO: error: could not determine how to read list of mounted file systems" >&5
+$as_echo "$as_me: error: could not determine how to read list of mounted file systems" >&2;}
+ { (exit 1); exit 1; }; }
+ # FIXME -- no need to abort building the whole package
+ # Can't build mountlist.c or anything that needs its functions
+fi
+
+if test $ac_list_mounted_fs = found; then
+ gl_cv_list_mounted_fs=yes
+else
+ gl_cv_list_mounted_fs=no
+fi
+
+
+
+ if test $gl_cv_list_mounted_fs = yes; then
+ gl_LIBOBJS="$gl_LIBOBJS mountlist.$ac_objext"
+
+
+for ac_header in sys/mntent.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+ { $as_echo "$as_me:$LINENO: checking for struct statfs.f_fstypename" >&5
+$as_echo_n "checking for struct statfs.f_fstypename... " >&6; }
+if test "${ac_cv_member_struct_statfs_f_fstypename+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <sys/types.h>
+ #include <sys/param.h>
+ #include <sys/mount.h>
+
+
+int
+main ()
+{
+static struct statfs ac_aggr;
+if (ac_aggr.f_fstypename)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_statfs_f_fstypename=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <sys/types.h>
+ #include <sys/param.h>
+ #include <sys/mount.h>
+
+
+int
+main ()
+{
+static struct statfs ac_aggr;
+if (sizeof ac_aggr.f_fstypename)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_statfs_f_fstypename=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_statfs_f_fstypename=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_statfs_f_fstypename" >&5
+$as_echo "$ac_cv_member_struct_statfs_f_fstypename" >&6; }
+if test $ac_cv_member_struct_statfs_f_fstypename = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATFS_F_FSTYPENAME 1
+_ACEOF
+
+
+fi
+
+
+
+ fi
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS mpsort.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+
+ nanosleep_save_libs=$LIBS
+
+ # Solaris 2.5.1 needs -lposix4 to get the nanosleep function.
+ # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4.
+ { $as_echo "$as_me:$LINENO: checking for library containing nanosleep" >&5
+$as_echo_n "checking for library containing nanosleep... " >&6; }
+if test "${ac_cv_search_nanosleep+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char nanosleep ();
+int
+main ()
+{
+return nanosleep ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' rt posix4; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_search_nanosleep=$ac_res
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext
+ if test "${ac_cv_search_nanosleep+set}" = set; then
+ break
+fi
+done
+if test "${ac_cv_search_nanosleep+set}" = set; then
+ :
+else
+ ac_cv_search_nanosleep=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_nanosleep" >&5
+$as_echo "$ac_cv_search_nanosleep" >&6; }
+ac_res=$ac_cv_search_nanosleep
+if test "$ac_res" != no; then
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+ test "$ac_cv_search_nanosleep" = "none required" ||
+ LIB_NANOSLEEP=$ac_cv_search_nanosleep
+fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for working nanosleep" >&5
+$as_echo_n "checking for working nanosleep... " >&6; }
+if test "${gl_cv_func_nanosleep+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_nanosleep=cross-compiling
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <errno.h>
+ #include <limits.h>
+ #include <signal.h>
+ #if HAVE_SYS_TIME_H
+ #include <sys/time.h>
+ #endif
+ #include <time.h>
+ #include <unistd.h>
+ #define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+ #define TYPE_MAXIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) -1 \
+ : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+
+ static void
+ check_for_SIGALRM (int sig)
+ {
+ if (sig != SIGALRM)
+ _exit (1);
+ }
+
+ int
+ main ()
+ {
+ static struct timespec ts_sleep;
+ static struct timespec ts_remaining;
+ static struct sigaction act;
+ if (! nanosleep)
+ return 1;
+ act.sa_handler = check_for_SIGALRM;
+ sigemptyset (&act.sa_mask);
+ sigaction (SIGALRM, &act, NULL);
+ ts_sleep.tv_sec = 0;
+ ts_sleep.tv_nsec = 1;
+ alarm (1);
+ if (nanosleep (&ts_sleep, NULL) != 0)
+ return 1;
+ ts_sleep.tv_sec = TYPE_MAXIMUM (time_t);
+ ts_sleep.tv_nsec = 999999999;
+ alarm (1);
+ if (nanosleep (&ts_sleep, &ts_remaining) == -1 && errno == EINTR
+ && TYPE_MAXIMUM (time_t) - 10 < ts_remaining.tv_sec)
+ return 0;
+ return 119;
+ }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_nanosleep=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+case $? in 119) gl_cv_func_nanosleep='no (mishandles large arguments)';; *) gl_cv_func_nanosleep=no;;
+ esac
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_nanosleep" >&5
+$as_echo "$gl_cv_func_nanosleep" >&6; }
+ if test "$gl_cv_func_nanosleep" = yes; then
+ REPLACE_NANOSLEEP=0
+ else
+ REPLACE_NANOSLEEP=1
+ if test "$gl_cv_func_nanosleep" = 'no (mishandles large arguments)'; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_BUG_BIG_NANOSLEEP 1
+_ACEOF
+
+ for ac_lib in $LIB_CLOCK_GETTIME; do
+ case " $LIB_NANOSLEEP " in
+ *" $ac_lib "*) ;;
+ *) LIB_NANOSLEEP="$LIB_NANOSLEEP $ac_lib";;
+ esac
+ done
+ fi
+ gl_LIBOBJS="$gl_LIBOBJS nanosleep.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ fi
+
+
+ LIBS=$nanosleep_save_libs
+
+
+ { $as_echo "$as_me:$LINENO: checking whether <netinet/in.h> is self-contained" >&5
+$as_echo_n "checking whether <netinet/in.h> is self-contained... " >&6; }
+if test "${gl_cv_header_netinet_in_h_selfcontained+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <netinet/in.h>
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_header_netinet_in_h_selfcontained=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_header_netinet_in_h_selfcontained=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_netinet_in_h_selfcontained" >&5
+$as_echo "$gl_cv_header_netinet_in_h_selfcontained" >&6; }
+ if test $gl_cv_header_netinet_in_h_selfcontained = yes; then
+ NETINET_IN_H=''
+ else
+ NETINET_IN_H='netinet/in.h'
+
+for ac_header in netinet/in.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ { $as_echo "$as_me:$LINENO: checking absolute name of <netinet/in.h>" >&5
+$as_echo_n "checking absolute name of <netinet/in.h>... " >&6; }
+if test "${gl_cv_absolute_netinet_in_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_netinet_in_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <netinet/in.h>
+_ACEOF
+ gl_cv_absolute_netinet_in_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/netinet/in.h#{s#.*"\(.*/netinet/in.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_absolute_netinet_in_h" >&5
+$as_echo "$gl_cv_absolute_netinet_in_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_NETINET_IN_H "$gl_cv_absolute_netinet_in_h"
+_ACEOF
+
+
+ ABSOLUTE_NETINET_IN_H=\"$gl_cv_absolute_netinet_in_h\"
+
+ if test $ac_cv_header_netinet_in_h = yes; then
+ HAVE_NETINET_IN_H=1
+ else
+ HAVE_NETINET_IN_H=0
+ fi
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+done
+IFS=$as_save_IFS
+
+fi
+
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ test -d ./--version && rmdir ./--version
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+ { $as_echo "$as_me:$LINENO: checking for obstacks" >&5
+$as_echo_n "checking for obstacks... " >&6; }
+if test "${ac_cv_func_obstack+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+ #include "obstack.h"
+int
+main ()
+{
+struct obstack mem;
+ #define obstack_chunk_alloc malloc
+ #define obstack_chunk_free free
+ obstack_init (&mem);
+ obstack_free (&mem, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_obstack=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_obstack=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_obstack" >&5
+$as_echo "$ac_cv_func_obstack" >&6; }
+if test $ac_cv_func_obstack = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_OBSTACK 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS obstack.$ac_objext"
+fi
+
+
+ gl_LIBOBJS="$gl_LIBOBJS openat-die.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS openat-proc.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in fchmodat mkdirat openat
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ case $ac_cv_func_openat+$ac_cv_func_lstat_dereferences_slashed_symlink in
+ yes+yes) ;;
+ yes+*) gl_LIBOBJS="$gl_LIBOBJS fstatat.$ac_objext";;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define __OPENAT_PREFIX rpl_
+_ACEOF
+
+
+ :
+;;
+ esac
+
+ # Assume we'll use the replacement function.
+ # The only case in which we won't is when we have fchownat, and it works.
+ use_replacement_fchownat=yes
+
+ { $as_echo "$as_me:$LINENO: checking for fchownat" >&5
+$as_echo_n "checking for fchownat... " >&6; }
+if test "${ac_cv_func_fchownat+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define fchownat to an innocuous variant, in case <limits.h> declares fchownat.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define fchownat innocuous_fchownat
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char fchownat (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef fchownat
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char fchownat ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_fchownat || defined __stub___fchownat
+choke me
+#endif
+
+int
+main ()
+{
+return fchownat ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_fchownat=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_fchownat=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_fchownat" >&5
+$as_echo "$ac_cv_func_fchownat" >&6; }
+if test $ac_cv_func_fchownat = yes; then
+ have_fchownat=yes
+else
+ have_fchownat=no
+fi
+
+ if test $have_fchownat = yes; then
+
+ { $as_echo "$as_me:$LINENO: checking whether fchownat works with AT_SYMLINK_NOFOLLOW" >&5
+$as_echo_n "checking whether fchownat works with AT_SYMLINK_NOFOLLOW... " >&6; }
+if test "${gl_cv_func_fchownat_nofollow_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_dangle=conftest.dangle
+ # Remove any remnants of a previous test.
+ rm -f $gl_dangle
+ # Arrange for deletion of the temporary file this test creates.
+ ac_clean_files="$ac_clean_files $gl_dangle"
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_fchownat_nofollow_works=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <sys/types.h>
+int
+main ()
+{
+ return (fchownat (AT_FDCWD, "$gl_dangle", -1, getgid (),
+ AT_SYMLINK_NOFOLLOW) != 0
+ && errno == ENOENT);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_fchownat_nofollow_works=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_fchownat_nofollow_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_fchownat_nofollow_works" >&5
+$as_echo "$gl_cv_func_fchownat_nofollow_works" >&6; }
+ if test $gl_cv_func_fchownat_nofollow_works = no; then
+ have_fchownat_bug=yes
+fi
+
+
+ if test $have_fchownat_bug = no; then
+ use_replacement_fchownat=no
+ fi
+ fi
+
+ if test $use_replacement_fchownat = yes; then
+ gl_LIBOBJS="$gl_LIBOBJS fchownat.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define fchownat rpl_fchownat
+_ACEOF
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for perl5.005 or newer" >&5
+$as_echo_n "checking for perl5.005 or newer... " >&6; }
+ if test "${PERL+set}" = set; then
+ # `PERL' is set in the user's environment.
+ candidate_perl_names="$PERL"
+ perl_specified=yes
+ else
+ candidate_perl_names='perl perl5'
+ perl_specified=no
+ fi
+
+ found=no
+
+ PERL="$am_missing_run perl"
+ for perl in $candidate_perl_names; do
+ # Run test in a subshell; some versions of sh will print an error if
+ # an executable is not found, even if stderr is redirected.
+ if ( $perl -e 'require 5.005; use File::Compare' ) > /dev/null 2>&1; then
+ PERL=$perl
+ found=yes
+ break
+ fi
+ done
+
+ { $as_echo "$as_me:$LINENO: result: $found" >&5
+$as_echo "$found" >&6; }
+ test $found = no && { $as_echo "$as_me:$LINENO: WARNING:
+WARNING: You don't seem to have perl5.005 or newer installed, or you lack
+ a usable version of the Perl File::Compare module. As a result,
+ you may be unable to run a few tests or to regenerate certain
+ files if you modify the sources from which they are derived.
+ " >&5
+$as_echo "$as_me: WARNING:
+WARNING: You don't seem to have perl5.005 or newer installed, or you lack
+ a usable version of the Perl File::Compare module. As a result,
+ you may be unable to run a few tests or to regenerate certain
+ files if you modify the sources from which they are derived.
+ " >&2;}
+
+
+ gl_LIBOBJS="$gl_LIBOBJS physmem.$ac_objext"
+
+ # Prerequisites of lib/physmem.c.
+
+
+
+
+
+
+
+
+for ac_header in sys/pstat.h sys/sysmp.h sys/sysinfo.h \
+ machine/hal_sysinfo.h sys/table.h sys/param.h sys/sysctl.h \
+ sys/systemcfg.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+
+
+
+for ac_func in pstat_getstatic pstat_getdynamic sysmp getsysinfo sysctl table
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS posixtm.$ac_objext"
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS posixver.$ac_objext"
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for SVID conformant putenv" >&5
+$as_echo_n "checking for SVID conformant putenv... " >&6; }
+if test "${jm_cv_func_svid_putenv+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ jm_cv_func_svid_putenv=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+ /* Put it in env. */
+ if (putenv ("CONFTEST_putenv=val"))
+ return 1;
+
+ /* Try to remove it. */
+ if (putenv ("CONFTEST_putenv"))
+ return 1;
+
+ /* Make sure it was deleted. */
+ if (getenv ("CONFTEST_putenv") != 0)
+ return 1;
+
+ return 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ jm_cv_func_svid_putenv=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+jm_cv_func_svid_putenv=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $jm_cv_func_svid_putenv" >&5
+$as_echo "$jm_cv_func_svid_putenv" >&6; }
+ if test $jm_cv_func_svid_putenv = no; then
+ gl_LIBOBJS="$gl_LIBOBJS putenv.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define putenv rpl_putenv
+_ACEOF
+
+ fi
+
+
+ gl_LIBOBJS="$gl_LIBOBJS quote.$ac_objext"
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS quotearg.$ac_objext"
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for mbstate_t" >&5
+$as_echo_n "checking for mbstate_t... " >&6; }
+if test "${ac_cv_type_mbstate_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+# include <wchar.h>
+int
+main ()
+{
+mbstate_t x; return sizeof x;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_mbstate_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_mbstate_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_mbstate_t" >&5
+$as_echo "$ac_cv_type_mbstate_t" >&6; }
+ if test $ac_cv_type_mbstate_t = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MBSTATE_T 1
+_ACEOF
+
+ else
+
+cat >>confdefs.h <<\_ACEOF
+#define mbstate_t int
+_ACEOF
+
+ fi
+
+ { $as_echo "$as_me:$LINENO: checking whether mbrtowc and mbstate_t are properly declared" >&5
+$as_echo_n "checking whether mbrtowc and mbstate_t are properly declared... " >&6; }
+if test "${gl_cv_func_mbrtowc+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <wchar.h>
+int
+main ()
+{
+wchar_t wc;
+ char const s[] = "";
+ size_t n = 1;
+ mbstate_t state;
+ return ! (sizeof state && (mbrtowc) (&wc, s, n, &state));
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ gl_cv_func_mbrtowc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_mbrtowc=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_mbrtowc" >&5
+$as_echo "$gl_cv_func_mbrtowc" >&6; }
+ if test $gl_cv_func_mbrtowc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MBRTOWC 1
+_ACEOF
+
+ fi
+
+
+
+for ac_func in raise
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_func_readlink = no; then
+ HAVE_READLINK=0
+ gl_LIBOBJS="$gl_LIBOBJS readlink.$ac_objext"
+
+ :
+
+ fi
+
+
+
+ GNULIB_READLINK=1
+
+
+ gl_LIBOBJS="$gl_LIBOBJS readtokens.$ac_objext"
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_header_utmp_h = yes || test $ac_cv_header_utmpx_h = yes; then
+ gl_LIBOBJS="$gl_LIBOBJS readutmp.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether getutent is declared" >&5
+$as_echo_n "checking whether getutent is declared... " >&6; }
+if test "${ac_cv_have_decl_getutent+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#ifdef HAVE_UTMP_H
+# include <utmp.h>
+#endif
+
+
+int
+main ()
+{
+#ifndef getutent
+ (void) getutent;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getutent=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_getutent=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getutent" >&5
+$as_echo "$ac_cv_have_decl_getutent" >&6; }
+if test $ac_cv_have_decl_getutent = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETUTENT 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETUTENT 0
+_ACEOF
+
+
+fi
+
+
+ utmp_includes="\
+$ac_includes_default
+#ifdef HAVE_UTMPX_H
+# include <utmpx.h>
+#endif
+#ifdef HAVE_UTMP_H
+# if defined _THREAD_SAFE && defined UTMP_DATA_INIT
+ /* When including both utmp.h and utmpx.h on AIX 4.3, with _THREAD_SAFE
+ defined, work around the duplicate struct utmp_data declaration. */
+# define utmp_data gl_aix_4_3_workaround_utmp_data
+# endif
+# include <utmp.h>
+#endif
+"
+ { $as_echo "$as_me:$LINENO: checking for struct utmpx.ut_user" >&5
+$as_echo_n "checking for struct utmpx.ut_user... " >&6; }
+if test "${ac_cv_member_struct_utmpx_ut_user+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (ac_aggr.ut_user)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_user=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (sizeof ac_aggr.ut_user)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_user=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmpx_ut_user=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmpx_ut_user" >&5
+$as_echo "$ac_cv_member_struct_utmpx_ut_user" >&6; }
+if test $ac_cv_member_struct_utmpx_ut_user = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMPX_UT_USER 1
+_ACEOF
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: checking for struct utmp.ut_user" >&5
+$as_echo_n "checking for struct utmp.ut_user... " >&6; }
+if test "${ac_cv_member_struct_utmp_ut_user+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (ac_aggr.ut_user)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_user=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (sizeof ac_aggr.ut_user)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_user=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmp_ut_user=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmp_ut_user" >&5
+$as_echo "$ac_cv_member_struct_utmp_ut_user" >&6; }
+if test $ac_cv_member_struct_utmp_ut_user = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMP_UT_USER 1
+_ACEOF
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: checking for struct utmpx.ut_name" >&5
+$as_echo_n "checking for struct utmpx.ut_name... " >&6; }
+if test "${ac_cv_member_struct_utmpx_ut_name+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (ac_aggr.ut_name)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_name=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (sizeof ac_aggr.ut_name)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_name=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmpx_ut_name=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmpx_ut_name" >&5
+$as_echo "$ac_cv_member_struct_utmpx_ut_name" >&6; }
+if test $ac_cv_member_struct_utmpx_ut_name = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMPX_UT_NAME 1
+_ACEOF
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: checking for struct utmp.ut_name" >&5
+$as_echo_n "checking for struct utmp.ut_name... " >&6; }
+if test "${ac_cv_member_struct_utmp_ut_name+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (ac_aggr.ut_name)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_name=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (sizeof ac_aggr.ut_name)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_name=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmp_ut_name=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmp_ut_name" >&5
+$as_echo "$ac_cv_member_struct_utmp_ut_name" >&6; }
+if test $ac_cv_member_struct_utmp_ut_name = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMP_UT_NAME 1
+_ACEOF
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: checking for struct utmpx.ut_type" >&5
+$as_echo_n "checking for struct utmpx.ut_type... " >&6; }
+if test "${ac_cv_member_struct_utmpx_ut_type+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (ac_aggr.ut_type)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_type=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (sizeof ac_aggr.ut_type)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_type=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmpx_ut_type=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmpx_ut_type" >&5
+$as_echo "$ac_cv_member_struct_utmpx_ut_type" >&6; }
+if test $ac_cv_member_struct_utmpx_ut_type = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMPX_UT_TYPE 1
+_ACEOF
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: checking for struct utmp.ut_type" >&5
+$as_echo_n "checking for struct utmp.ut_type... " >&6; }
+if test "${ac_cv_member_struct_utmp_ut_type+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (ac_aggr.ut_type)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_type=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (sizeof ac_aggr.ut_type)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_type=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmp_ut_type=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmp_ut_type" >&5
+$as_echo "$ac_cv_member_struct_utmp_ut_type" >&6; }
+if test $ac_cv_member_struct_utmp_ut_type = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMP_UT_TYPE 1
+_ACEOF
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: checking for struct utmpx.ut_pid" >&5
+$as_echo_n "checking for struct utmpx.ut_pid... " >&6; }
+if test "${ac_cv_member_struct_utmpx_ut_pid+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (ac_aggr.ut_pid)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_pid=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (sizeof ac_aggr.ut_pid)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_pid=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmpx_ut_pid=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmpx_ut_pid" >&5
+$as_echo "$ac_cv_member_struct_utmpx_ut_pid" >&6; }
+if test $ac_cv_member_struct_utmpx_ut_pid = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMPX_UT_PID 1
+_ACEOF
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: checking for struct utmp.ut_pid" >&5
+$as_echo_n "checking for struct utmp.ut_pid... " >&6; }
+if test "${ac_cv_member_struct_utmp_ut_pid+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (ac_aggr.ut_pid)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_pid=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (sizeof ac_aggr.ut_pid)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_pid=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmp_ut_pid=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmp_ut_pid" >&5
+$as_echo "$ac_cv_member_struct_utmp_ut_pid" >&6; }
+if test $ac_cv_member_struct_utmp_ut_pid = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMP_UT_PID 1
+_ACEOF
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: checking for struct utmpx.ut_id" >&5
+$as_echo_n "checking for struct utmpx.ut_id... " >&6; }
+if test "${ac_cv_member_struct_utmpx_ut_id+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (ac_aggr.ut_id)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_id=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (sizeof ac_aggr.ut_id)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_id=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmpx_ut_id=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmpx_ut_id" >&5
+$as_echo "$ac_cv_member_struct_utmpx_ut_id" >&6; }
+if test $ac_cv_member_struct_utmpx_ut_id = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMPX_UT_ID 1
+_ACEOF
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: checking for struct utmp.ut_id" >&5
+$as_echo_n "checking for struct utmp.ut_id... " >&6; }
+if test "${ac_cv_member_struct_utmp_ut_id+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (ac_aggr.ut_id)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_id=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (sizeof ac_aggr.ut_id)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_id=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmp_ut_id=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmp_ut_id" >&5
+$as_echo "$ac_cv_member_struct_utmp_ut_id" >&6; }
+if test $ac_cv_member_struct_utmp_ut_id = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMP_UT_ID 1
+_ACEOF
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: checking for struct utmpx.ut_exit" >&5
+$as_echo_n "checking for struct utmpx.ut_exit... " >&6; }
+if test "${ac_cv_member_struct_utmpx_ut_exit+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (ac_aggr.ut_exit)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_exit=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (sizeof ac_aggr.ut_exit)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_exit=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmpx_ut_exit=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmpx_ut_exit" >&5
+$as_echo "$ac_cv_member_struct_utmpx_ut_exit" >&6; }
+if test $ac_cv_member_struct_utmpx_ut_exit = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMPX_UT_EXIT 1
+_ACEOF
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: checking for struct utmp.ut_exit" >&5
+$as_echo_n "checking for struct utmp.ut_exit... " >&6; }
+if test "${ac_cv_member_struct_utmp_ut_exit+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (ac_aggr.ut_exit)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_exit=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (sizeof ac_aggr.ut_exit)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_exit=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmp_ut_exit=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmp_ut_exit" >&5
+$as_echo "$ac_cv_member_struct_utmp_ut_exit" >&6; }
+if test $ac_cv_member_struct_utmp_ut_exit = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMP_UT_EXIT 1
+_ACEOF
+
+
+fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for struct utmpx.ut_exit.ut_exit" >&5
+$as_echo_n "checking for struct utmpx.ut_exit.ut_exit... " >&6; }
+if test "${ac_cv_member_struct_utmpx_ut_exit_ut_exit+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (ac_aggr.ut_exit.ut_exit)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_exit_ut_exit=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (sizeof ac_aggr.ut_exit.ut_exit)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_exit_ut_exit=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmpx_ut_exit_ut_exit=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmpx_ut_exit_ut_exit" >&5
+$as_echo "$ac_cv_member_struct_utmpx_ut_exit_ut_exit" >&6; }
+if test $ac_cv_member_struct_utmpx_ut_exit_ut_exit = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMPX_UT_EXIT_UT_EXIT 1
+_ACEOF
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: checking for struct utmp.ut_exit.ut_exit" >&5
+$as_echo_n "checking for struct utmp.ut_exit.ut_exit... " >&6; }
+if test "${ac_cv_member_struct_utmp_ut_exit_ut_exit+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (ac_aggr.ut_exit.ut_exit)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_exit_ut_exit=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (sizeof ac_aggr.ut_exit.ut_exit)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_exit_ut_exit=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmp_ut_exit_ut_exit=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmp_ut_exit_ut_exit" >&5
+$as_echo "$ac_cv_member_struct_utmp_ut_exit_ut_exit" >&6; }
+if test $ac_cv_member_struct_utmp_ut_exit_ut_exit = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMP_UT_EXIT_UT_EXIT 1
+_ACEOF
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: checking for struct utmpx.ut_exit.e_exit" >&5
+$as_echo_n "checking for struct utmpx.ut_exit.e_exit... " >&6; }
+if test "${ac_cv_member_struct_utmpx_ut_exit_e_exit+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (ac_aggr.ut_exit.e_exit)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_exit_e_exit=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (sizeof ac_aggr.ut_exit.e_exit)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_exit_e_exit=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmpx_ut_exit_e_exit=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmpx_ut_exit_e_exit" >&5
+$as_echo "$ac_cv_member_struct_utmpx_ut_exit_e_exit" >&6; }
+if test $ac_cv_member_struct_utmpx_ut_exit_e_exit = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMPX_UT_EXIT_E_EXIT 1
+_ACEOF
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: checking for struct utmp.ut_exit.e_exit" >&5
+$as_echo_n "checking for struct utmp.ut_exit.e_exit... " >&6; }
+if test "${ac_cv_member_struct_utmp_ut_exit_e_exit+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (ac_aggr.ut_exit.e_exit)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_exit_e_exit=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (sizeof ac_aggr.ut_exit.e_exit)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_exit_e_exit=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmp_ut_exit_e_exit=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmp_ut_exit_e_exit" >&5
+$as_echo "$ac_cv_member_struct_utmp_ut_exit_e_exit" >&6; }
+if test $ac_cv_member_struct_utmp_ut_exit_e_exit = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMP_UT_EXIT_E_EXIT 1
+_ACEOF
+
+
+fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for struct utmpx.ut_exit.ut_termination" >&5
+$as_echo_n "checking for struct utmpx.ut_exit.ut_termination... " >&6; }
+if test "${ac_cv_member_struct_utmpx_ut_exit_ut_termination+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (ac_aggr.ut_exit.ut_termination)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_exit_ut_termination=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (sizeof ac_aggr.ut_exit.ut_termination)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_exit_ut_termination=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmpx_ut_exit_ut_termination=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmpx_ut_exit_ut_termination" >&5
+$as_echo "$ac_cv_member_struct_utmpx_ut_exit_ut_termination" >&6; }
+if test $ac_cv_member_struct_utmpx_ut_exit_ut_termination = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMPX_UT_EXIT_UT_TERMINATION 1
+_ACEOF
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: checking for struct utmp.ut_exit.ut_termination" >&5
+$as_echo_n "checking for struct utmp.ut_exit.ut_termination... " >&6; }
+if test "${ac_cv_member_struct_utmp_ut_exit_ut_termination+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (ac_aggr.ut_exit.ut_termination)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_exit_ut_termination=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (sizeof ac_aggr.ut_exit.ut_termination)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_exit_ut_termination=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmp_ut_exit_ut_termination=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmp_ut_exit_ut_termination" >&5
+$as_echo "$ac_cv_member_struct_utmp_ut_exit_ut_termination" >&6; }
+if test $ac_cv_member_struct_utmp_ut_exit_ut_termination = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMP_UT_EXIT_UT_TERMINATION 1
+_ACEOF
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: checking for struct utmpx.ut_exit.e_termination" >&5
+$as_echo_n "checking for struct utmpx.ut_exit.e_termination... " >&6; }
+if test "${ac_cv_member_struct_utmpx_ut_exit_e_termination+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (ac_aggr.ut_exit.e_termination)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_exit_e_termination=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmpx ac_aggr;
+if (sizeof ac_aggr.ut_exit.e_termination)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmpx_ut_exit_e_termination=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmpx_ut_exit_e_termination=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmpx_ut_exit_e_termination" >&5
+$as_echo "$ac_cv_member_struct_utmpx_ut_exit_e_termination" >&6; }
+if test $ac_cv_member_struct_utmpx_ut_exit_e_termination = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMPX_UT_EXIT_E_TERMINATION 1
+_ACEOF
+
+
+fi
+
+ { $as_echo "$as_me:$LINENO: checking for struct utmp.ut_exit.e_termination" >&5
+$as_echo_n "checking for struct utmp.ut_exit.e_termination... " >&6; }
+if test "${ac_cv_member_struct_utmp_ut_exit_e_termination+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (ac_aggr.ut_exit.e_termination)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_exit_e_termination=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$utmp_includes
+
+int
+main ()
+{
+static struct utmp ac_aggr;
+if (sizeof ac_aggr.ut_exit.e_termination)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_utmp_ut_exit_e_termination=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_utmp_ut_exit_e_termination=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_utmp_ut_exit_e_termination" >&5
+$as_echo "$ac_cv_member_struct_utmp_ut_exit_e_termination" >&6; }
+if test $ac_cv_member_struct_utmp_ut_exit_e_termination = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UTMP_UT_EXIT_E_TERMINATION 1
+_ACEOF
+
+
+fi
+
+ fi
+
+
+for ac_header in stdlib.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+{ $as_echo "$as_me:$LINENO: checking for GNU libc compatible realloc" >&5
+$as_echo_n "checking for GNU libc compatible realloc... " >&6; }
+if test "${ac_cv_func_realloc_0_nonnull+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_realloc_0_nonnull=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#if defined STDC_HEADERS || defined HAVE_STDLIB_H
+# include <stdlib.h>
+#else
+char *realloc ();
+#endif
+
+int
+main ()
+{
+return ! realloc (0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_realloc_0_nonnull=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_realloc_0_nonnull=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_realloc_0_nonnull" >&5
+$as_echo "$ac_cv_func_realloc_0_nonnull" >&6; }
+if test $ac_cv_func_realloc_0_nonnull = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_REALLOC 1
+_ACEOF
+
+else
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_REALLOC 0
+_ACEOF
+
+ gl_LIBOBJS="$gl_LIBOBJS realloc.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define realloc rpl_realloc
+_ACEOF
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-included-regex was given.
+if test "${with_included_regex+set}" = set; then
+ withval=$with_included_regex;
+fi
+
+
+ case $with_included_regex in #(
+ yes|no) ac_use_included_regex=$with_included_regex
+ ;;
+ '')
+ # If the system regex support is good enough that it passes the
+ # following run test, then default to *not* using the included regex.c.
+ # If cross compiling, assume the test would fail and use the included
+ # regex.c.
+ { $as_echo "$as_me:$LINENO: checking for working re_compile_pattern" >&5
+$as_echo_n "checking for working re_compile_pattern... " >&6; }
+if test "${gl_cv_func_re_compile_pattern_working+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_re_compile_pattern_working=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+ #if HAVE_LOCALE_H
+ #include <locale.h>
+ #endif
+ #include <limits.h>
+ #include <regex.h>
+
+int
+main ()
+{
+static struct re_pattern_buffer regex;
+ unsigned char folded_chars[UCHAR_MAX + 1];
+ int i;
+ const char *s;
+ struct re_registers regs;
+
+ #if HAVE_LOCALE_H
+ /* http://sourceware.org/ml/libc-hacker/2006-09/msg00008.html
+ This test needs valgrind to catch the bug on Debian
+ GNU/Linux 3.1 x86, but it might catch the bug better
+ on other platforms and it shouldn't hurt to try the
+ test here. */
+ if (setlocale (LC_ALL, "en_US.UTF-8"))
+ {
+ static char const pat[] = "insert into";
+ static char const data[] =
+ "\xFF\0\x12\xA2\xAA\xC4\xB1,K\x12\xC4\xB1*\xACK";
+ re_set_syntax (RE_SYNTAX_GREP | RE_HAT_LISTS_NOT_NEWLINE
+ | RE_ICASE);
+ memset (&regex, 0, sizeof regex);
+ s = re_compile_pattern (pat, sizeof pat - 1, &regex);
+ if (s)
+ return 1;
+ if (re_search (&regex, data, sizeof data - 1,
+ 0, sizeof data - 1, &regs)
+ != -1)
+ return 1;
+ if (! setlocale (LC_ALL, "C"))
+ return 1;
+ }
+ #endif
+
+ /* This test is from glibc bug 3957, reported by Andrew Mackey. */
+ re_set_syntax (RE_SYNTAX_EGREP | RE_HAT_LISTS_NOT_NEWLINE);
+ memset (&regex, 0, sizeof regex);
+ s = re_compile_pattern ("a[^x]b", 6, &regex);
+ if (s)
+ return 1;
+
+ /* This should fail, but succeeds for glibc-2.5. */
+ if (re_search (&regex, "a\nb", 3, 0, 3, &regs) != -1)
+ return 1;
+
+ /* This regular expression is from Spencer ere test number 75
+ in grep-2.3. */
+ re_set_syntax (RE_SYNTAX_POSIX_EGREP);
+ memset (&regex, 0, sizeof regex);
+ for (i = 0; i <= UCHAR_MAX; i++)
+ folded_chars[i] = i;
+ regex.translate = folded_chars;
+ s = re_compile_pattern ("a[[:]:]]b\n", 11, &regex);
+ /* This should fail with _Invalid character class name_ error. */
+ if (!s)
+ return 1;
+
+ /* This should succeed, but does not for glibc-2.1.3. */
+ memset (&regex, 0, sizeof regex);
+ s = re_compile_pattern ("{1", 2, &regex);
+
+ if (s)
+ return 1;
+
+ /* The following example is derived from a problem report
+ against gawk from Jorge Stolfi <stolfi@ic.unicamp.br>. */
+ memset (&regex, 0, sizeof regex);
+ s = re_compile_pattern ("[an\371]*n", 7, &regex);
+ if (s)
+ return 1;
+
+ /* This should match, but does not for glibc-2.2.1. */
+ if (re_match (&regex, "an", 2, 0, &regs) != 2)
+ return 1;
+
+ memset (&regex, 0, sizeof regex);
+ s = re_compile_pattern ("x", 1, &regex);
+ if (s)
+ return 1;
+
+ /* glibc-2.2.93 does not work with a negative RANGE argument. */
+ if (re_search (&regex, "wxy", 3, 2, -2, &regs) != 1)
+ return 1;
+
+ /* The version of regex.c in older versions of gnulib
+ ignored RE_ICASE. Detect that problem too. */
+ re_set_syntax (RE_SYNTAX_EMACS | RE_ICASE);
+ memset (&regex, 0, sizeof regex);
+ s = re_compile_pattern ("x", 1, &regex);
+ if (s)
+ return 1;
+
+ if (re_search (&regex, "WXY", 3, 0, 3, &regs) < 0)
+ return 1;
+
+ /* REG_STARTEND was added to glibc on 2004-01-15.
+ Reject older versions. */
+ if (! REG_STARTEND)
+ return 1;
+
+ /* Reject hosts whose regoff_t values are too narrow.
+ These include glibc 2.3.5 on hosts with 64-bit ptrdiff_t
+ and 32-bit int. */
+ if (sizeof (regoff_t) < sizeof (ptrdiff_t)
+ || sizeof (regoff_t) < sizeof (ssize_t))
+ return 1;
+
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_re_compile_pattern_working=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_re_compile_pattern_working=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_re_compile_pattern_working" >&5
+$as_echo "$gl_cv_func_re_compile_pattern_working" >&6; }
+ case $gl_cv_func_re_compile_pattern_working in #(
+ yes) ac_use_included_regex=no;; #(
+ no) ac_use_included_regex=yes;;
+ esac
+ ;;
+ *) { { $as_echo "$as_me:$LINENO: error: Invalid value for --with-included-regex: $with_included_regex" >&5
+$as_echo "$as_me: error: Invalid value for --with-included-regex: $with_included_regex" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+
+ if test $ac_use_included_regex = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define _REGEX_LARGE_OFFSETS 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_syntax_options rpl_re_syntax_options
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_set_syntax rpl_re_set_syntax
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_compile_pattern rpl_re_compile_pattern
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_compile_fastmap rpl_re_compile_fastmap
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_search rpl_re_search
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_search_2 rpl_re_search_2
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_match rpl_re_match
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_match_2 rpl_re_match_2
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_set_registers rpl_re_set_registers
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_comp rpl_re_comp
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_exec rpl_re_exec
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define regcomp rpl_regcomp
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define regexec rpl_regexec
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define regerror rpl_regerror
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define regfree rpl_regfree
+_ACEOF
+
+ gl_LIBOBJS="$gl_LIBOBJS regex.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether isblank is declared" >&5
+$as_echo_n "checking whether isblank is declared... " >&6; }
+if test "${ac_cv_have_decl_isblank+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+
+int
+main ()
+{
+#ifndef isblank
+ (void) isblank;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_isblank=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_isblank=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_isblank" >&5
+$as_echo "$ac_cv_have_decl_isblank" >&6; }
+if test $ac_cv_have_decl_isblank = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ISBLANK 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ISBLANK 0
+_ACEOF
+
+
+fi
+
+
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking whether rename is broken" >&5
+$as_echo_n "checking whether rename is broken... " >&6; }
+if test "${gl_cv_func_rename_trailing_slash_bug+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ rm -rf conftest.d1 conftest.d2
+ mkdir conftest.d1 ||
+ { { $as_echo "$as_me:$LINENO: error: cannot create temporary directory" >&5
+$as_echo "$as_me: error: cannot create temporary directory" >&2;}
+ { (exit 1); exit 1; }; }
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_rename_trailing_slash_bug=yes
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+# include <stdio.h>
+# include <stdlib.h>
+ int
+ main ()
+ {
+ exit (rename ("conftest.d1/", "conftest.d2") ? 1 : 0);
+ }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_rename_trailing_slash_bug=no
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_rename_trailing_slash_bug=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+ rm -rf conftest.d1 conftest.d2
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_rename_trailing_slash_bug" >&5
+$as_echo "$gl_cv_func_rename_trailing_slash_bug" >&6; }
+ if test $gl_cv_func_rename_trailing_slash_bug = yes; then
+ gl_LIBOBJS="$gl_LIBOBJS rename.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define rename rpl_rename
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define RENAME_TRAILING_SLASH_BUG 1
+_ACEOF
+
+ :
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking whether rename is broken with respect to destination slashes" >&5
+$as_echo_n "checking whether rename is broken with respect to destination slashes... " >&6; }
+if test "${gl_cv_func_rename_trailing_dest_slash_bug+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ rm -rf conftest.d1 conftest.d2
+ mkdir conftest.d1 ||
+ { { $as_echo "$as_me:$LINENO: error: cannot create temporary directory" >&5
+$as_echo "$as_me: error: cannot create temporary directory" >&2;}
+ { (exit 1); exit 1; }; }
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_rename_trailing_dest_slash_bug=yes
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+# include <stdio.h>
+ int
+ main ()
+ {
+ return (rename ("conftest.d1", "conftest.d2/") ? 1 : 0);
+ }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_rename_trailing_dest_slash_bug=no
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_rename_trailing_dest_slash_bug=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+ rm -rf conftest.d1 conftest.d2
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_rename_trailing_dest_slash_bug" >&5
+$as_echo "$gl_cv_func_rename_trailing_dest_slash_bug" >&6; }
+ if test $gl_cv_func_rename_trailing_dest_slash_bug = yes; then
+ gl_LIBOBJS="$gl_LIBOBJS rename-dest-slash.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define rename rpl_rename_dest_slash
+_ACEOF
+
+ fi
+
+
+
+for ac_func in rmdir
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for rmdir-not-empty errno value" >&5
+$as_echo_n "checking for rmdir-not-empty errno value... " >&6; }
+if test "${gl_cv_func_rmdir_errno_not_empty+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ # Arrange for deletion of the temporary directory this test creates.
+ ac_clean_files="$ac_clean_files confdir2"
+ mkdir confdir2; : > confdir2/file
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_rmdir_errno_not_empty=ENOTEMPTY
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stdio.h>
+#include <errno.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+ int main ()
+ {
+ FILE *s;
+ int val;
+ rmdir ("confdir2");
+ val = errno;
+ s = fopen ("confdir2/errno", "w");
+ fprintf (s, "%d\n", val);
+ return 0;
+ }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_rmdir_errno_not_empty=`cat confdir2/errno`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_rmdir_errno_not_empty='configure error in rmdir-errno.m4'
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_rmdir_errno_not_empty" >&5
+$as_echo "$gl_cv_func_rmdir_errno_not_empty" >&6; }
+
+
+cat >>confdefs.h <<_ACEOF
+#define RMDIR_ERRNO_NOT_EMPTY $gl_cv_func_rmdir_errno_not_empty
+_ACEOF
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS root-dev-ino.$ac_objext"
+
+
+ :
+
+
+
+for ac_func in rpmatch
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_rpmatch = no; then
+ :
+ fi
+
+
+ gl_LIBOBJS="$gl_LIBOBJS safe-read.$ac_objext"
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS safe-write.$ac_objext"
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS same.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS save-cwd.$ac_objext"
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS savedir.$ac_objext"
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_func_setenv = no; then
+ gl_LIBOBJS="$gl_LIBOBJS setenv.$ac_objext"
+
+
+
+
+
+
+
+
+
+for ac_header in search.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_func in tsearch
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+ { $as_echo "$as_me:$LINENO: checking if environ is properly declared" >&5
+$as_echo_n "checking if environ is properly declared... " >&6; }
+ if test "${gt_cv_var_environ_declaration+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <unistd.h>
+ extern struct { int foo; } environ;
+int
+main ()
+{
+environ.foo = 1;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_var_environ_declaration=no
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_var_environ_declaration=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $gt_cv_var_environ_declaration" >&5
+$as_echo "$gt_cv_var_environ_declaration" >&6; }
+ if test $gt_cv_var_environ_declaration = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ENVIRON_DECL 1
+_ACEOF
+
+ fi
+
+
+ fi
+
+
+
+for ac_func in unsetenv
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ if test $ac_cv_func_unsetenv = no; then
+ gl_LIBOBJS="$gl_LIBOBJS unsetenv.$ac_objext"
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking if environ is properly declared" >&5
+$as_echo_n "checking if environ is properly declared... " >&6; }
+ if test "${gt_cv_var_environ_declaration+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <unistd.h>
+ extern struct { int foo; } environ;
+int
+main ()
+{
+environ.foo = 1;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_var_environ_declaration=no
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_var_environ_declaration=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $gt_cv_var_environ_declaration" >&5
+$as_echo "$gt_cv_var_environ_declaration" >&6; }
+ if test $gt_cv_var_environ_declaration = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ENVIRON_DECL 1
+_ACEOF
+
+ fi
+
+
+ else
+ { $as_echo "$as_me:$LINENO: checking for unsetenv() return type" >&5
+$as_echo_n "checking for unsetenv() return type... " >&6; }
+if test "${gt_cv_func_unsetenv_ret+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+int unsetenv (const char *name);
+#else
+int unsetenv();
+#endif
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_func_unsetenv_ret='int'
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_func_unsetenv_ret='void'
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_func_unsetenv_ret" >&5
+$as_echo "$gt_cv_func_unsetenv_ret" >&6; }
+ if test $gt_cv_func_unsetenv_ret = 'void'; then
+
+cat >>confdefs.h <<\_ACEOF
+#define VOID_UNSETENV 1
+_ACEOF
+
+ fi
+ fi
+
+
+ gl_LIBOBJS="$gl_LIBOBJS settime.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS sha1.$ac_objext"
+
+
+ :
+
+
+
+
+for ac_func in sig2str
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_sig2str = no; then
+
+ :
+
+ fi
+
+
+
+
+for ac_func in snprintf
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ if test $ac_cv_func_snprintf = no; then
+
+
+ gl_LIBOBJS="$gl_LIBOBJS snprintf.$ac_objext"
+ if test $ac_cv_func_snprintf = yes; then
+ REPLACE_SNPRINTF=1
+ fi
+ :
+
+ fi
+
+
+
+
+ if test $ac_cv_have_decl_snprintf = no; then
+ HAVE_DECL_SNPRINTF=0
+ fi
+
+
+
+ GNULIB_SNPRINTF=1
+
+ { $as_echo "$as_me:$LINENO: checking for socklen_t" >&5
+$as_echo_n "checking for socklen_t... " >&6; }
+if test "${ac_cv_type_socklen_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #if HAVE_SYS_SOCKET_H
+ # include <sys/socket.h>
+ #elif HAVE_WS2TCPIP_H
+ # include <ws2tcpip.h>
+ #endif
+
+typedef socklen_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_socklen_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_socklen_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5
+$as_echo "$ac_cv_type_socklen_t" >&6; }
+if test $ac_cv_type_socklen_t = yes; then
+ :
+else
+ { $as_echo "$as_me:$LINENO: checking for socklen_t equivalent" >&5
+$as_echo_n "checking for socklen_t equivalent... " >&6; }
+ if test "${gl_cv_socklen_t_equiv+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ # Systems have either "struct sockaddr *" or
+ # "void *" as the second argument to getpeername
+ gl_cv_socklen_t_equiv=
+ for arg2 in "struct sockaddr" void; do
+ for t in int size_t "unsigned int" "long int" "unsigned long int"; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/socket.h>
+
+ int getpeername (int, $arg2 *, $t *);
+int
+main ()
+{
+$t len;
+ getpeername (0, 0, &len);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_socklen_t_equiv="$t"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test "$gl_cv_socklen_t_equiv" != "" && break
+ done
+ test "$gl_cv_socklen_t_equiv" != "" && break
+ done
+
+fi
+
+ if test "$gl_cv_socklen_t_equiv" = ""; then
+ { { $as_echo "$as_me:$LINENO: error: Cannot find a type to use in place of socklen_t" >&5
+$as_echo "$as_me: error: Cannot find a type to use in place of socklen_t" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ { $as_echo "$as_me:$LINENO: result: $gl_cv_socklen_t_equiv" >&5
+$as_echo "$gl_cv_socklen_t_equiv" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define socklen_t $gl_cv_socklen_t_equiv
+_ACEOF
+
+fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for ssize_t" >&5
+$as_echo_n "checking for ssize_t... " >&6; }
+if test "${gt_cv_ssize_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+int
+main ()
+{
+int x = sizeof (ssize_t *) + sizeof (ssize_t);
+ return !x;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_ssize_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_ssize_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_ssize_t" >&5
+$as_echo "$gt_cv_ssize_t" >&6; }
+ if test $gt_cv_ssize_t = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define ssize_t int
+_ACEOF
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for struct stat.st_atim.tv_nsec" >&5
+$as_echo_n "checking for struct stat.st_atim.tv_nsec... " >&6; }
+if test "${ac_cv_member_struct_stat_st_atim_tv_nsec+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/stat.h>
+
+int
+main ()
+{
+static struct stat ac_aggr;
+if (ac_aggr.st_atim.tv_nsec)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_stat_st_atim_tv_nsec=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/stat.h>
+
+int
+main ()
+{
+static struct stat ac_aggr;
+if (sizeof ac_aggr.st_atim.tv_nsec)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_stat_st_atim_tv_nsec=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_stat_st_atim_tv_nsec=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_atim_tv_nsec" >&5
+$as_echo "$ac_cv_member_struct_stat_st_atim_tv_nsec" >&6; }
+if test $ac_cv_member_struct_stat_st_atim_tv_nsec = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC 1
+_ACEOF
+
+{ $as_echo "$as_me:$LINENO: checking whether struct stat.st_atim is of type struct timespec" >&5
+$as_echo_n "checking whether struct stat.st_atim is of type struct timespec... " >&6; }
+if test "${ac_cv_typeof_struct_stat_st_atim_is_struct_timespec+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #if HAVE_SYS_TIME_H
+ # include <sys/time.h>
+ #endif
+ #include <time.h>
+ struct timespec ts;
+ struct stat st;
+
+int
+main ()
+{
+
+ st.st_atim = ts;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&5
+$as_echo "$ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&6; }
+ if test $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC 1
+_ACEOF
+
+ fi
+else
+ { $as_echo "$as_me:$LINENO: checking for struct stat.st_atimespec.tv_nsec" >&5
+$as_echo_n "checking for struct stat.st_atimespec.tv_nsec... " >&6; }
+if test "${ac_cv_member_struct_stat_st_atimespec_tv_nsec+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/stat.h>
+
+int
+main ()
+{
+static struct stat ac_aggr;
+if (ac_aggr.st_atimespec.tv_nsec)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_stat_st_atimespec_tv_nsec=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/stat.h>
+
+int
+main ()
+{
+static struct stat ac_aggr;
+if (sizeof ac_aggr.st_atimespec.tv_nsec)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_stat_st_atimespec_tv_nsec=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_stat_st_atimespec_tv_nsec=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_atimespec_tv_nsec" >&5
+$as_echo "$ac_cv_member_struct_stat_st_atimespec_tv_nsec" >&6; }
+if test $ac_cv_member_struct_stat_st_atimespec_tv_nsec = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC 1
+_ACEOF
+
+
+else
+ { $as_echo "$as_me:$LINENO: checking for struct stat.st_atimensec" >&5
+$as_echo_n "checking for struct stat.st_atimensec... " >&6; }
+if test "${ac_cv_member_struct_stat_st_atimensec+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/stat.h>
+
+int
+main ()
+{
+static struct stat ac_aggr;
+if (ac_aggr.st_atimensec)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_stat_st_atimensec=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/stat.h>
+
+int
+main ()
+{
+static struct stat ac_aggr;
+if (sizeof ac_aggr.st_atimensec)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_stat_st_atimensec=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_stat_st_atimensec=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_atimensec" >&5
+$as_echo "$ac_cv_member_struct_stat_st_atimensec" >&6; }
+if test $ac_cv_member_struct_stat_st_atimensec = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_ATIMENSEC 1
+_ACEOF
+
+
+else
+ { $as_echo "$as_me:$LINENO: checking for struct stat.st_atim.st__tim.tv_nsec" >&5
+$as_echo_n "checking for struct stat.st_atim.st__tim.tv_nsec... " >&6; }
+if test "${ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/stat.h>
+
+int
+main ()
+{
+static struct stat ac_aggr;
+if (ac_aggr.st_atim.st__tim.tv_nsec)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/stat.h>
+
+int
+main ()
+{
+static struct stat ac_aggr;
+if (sizeof ac_aggr.st_atim.st__tim.tv_nsec)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" >&5
+$as_echo "$ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" >&6; }
+if test $ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC 1
+_ACEOF
+
+
+else
+ { $as_echo "$as_me:$LINENO: checking for struct stat.st_spare1" >&5
+$as_echo_n "checking for struct stat.st_spare1... " >&6; }
+if test "${ac_cv_member_struct_stat_st_spare1+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/stat.h>
+
+int
+main ()
+{
+static struct stat ac_aggr;
+if (ac_aggr.st_spare1)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_stat_st_spare1=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/stat.h>
+
+int
+main ()
+{
+static struct stat ac_aggr;
+if (sizeof ac_aggr.st_spare1)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_stat_st_spare1=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_stat_st_spare1=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_spare1" >&5
+$as_echo "$ac_cv_member_struct_stat_st_spare1" >&6; }
+if test $ac_cv_member_struct_stat_st_spare1 = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_SPARE1 1
+_ACEOF
+
+
+fi
+
+fi
+
+fi
+
+fi
+
+fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for va_copy" >&5
+$as_echo_n "checking for va_copy... " >&6; }
+ if test "${gl_cv_func_va_copy+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdarg.h>
+int
+main ()
+{
+
+#ifndef va_copy
+void (*func) (va_list, va_list) = va_copy;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_func_va_copy=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_va_copy=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $gl_cv_func_va_copy" >&5
+$as_echo "$gl_cv_func_va_copy" >&6; }
+ if test $gl_cv_func_va_copy = no; then
+ # Provide a substitute, either __va_copy or as a simple assignment.
+ if test "${gl_cv_func___va_copy+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdarg.h>
+int
+main ()
+{
+
+#ifndef __va_copy
+error, bail out
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_func___va_copy=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func___va_copy=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $gl_cv_func___va_copy = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define va_copy __va_copy
+_ACEOF
+
+ else
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define va_copy gl_va_copy
+_ACEOF
+
+ fi
+ fi
+
+
+
+
+ # Define two additional variables used in the Makefile substitution.
+
+ if test "$ac_cv_header_stdbool_h" = yes; then
+ STDBOOL_H=''
+ else
+ STDBOOL_H='stdbool.h'
+ fi
+
+
+ if test "$ac_cv_type__Bool" = yes; then
+ HAVE__BOOL=1
+ else
+ HAVE__BOOL=0
+ fi
+
+
+
+
+
+ if test $ac_cv_type_long_long_int = yes; then
+ HAVE_LONG_LONG_INT=1
+ else
+ HAVE_LONG_LONG_INT=0
+ fi
+
+
+ if test $ac_cv_type_unsigned_long_long_int = yes; then
+ HAVE_UNSIGNED_LONG_LONG_INT=1
+ else
+ HAVE_UNSIGNED_LONG_LONG_INT=0
+ fi
+
+
+ if test $ac_cv_header_inttypes_h = yes; then
+ HAVE_INTTYPES_H=1
+ else
+ HAVE_INTTYPES_H=0
+ fi
+
+
+ if test $ac_cv_header_sys_types_h = yes; then
+ HAVE_SYS_TYPES_H=1
+ else
+ HAVE_SYS_TYPES_H=0
+ fi
+
+
+ if test $ac_cv_header_stdint_h = yes; then
+ { $as_echo "$as_me:$LINENO: checking absolute name of <stdint.h>" >&5
+$as_echo_n "checking absolute name of <stdint.h>... " >&6; }
+if test "${gl_cv_absolute_stdint_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_stdint_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdint.h>
+_ACEOF
+ gl_cv_absolute_stdint_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/stdint.h#{s#.*"\(.*/stdint.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_absolute_stdint_h" >&5
+$as_echo "$gl_cv_absolute_stdint_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_STDINT_H "$gl_cv_absolute_stdint_h"
+_ACEOF
+
+
+ ABSOLUTE_STDINT_H=\"$gl_cv_absolute_stdint_h\"
+ HAVE_STDINT_H=1
+ else
+ ABSOLUTE_STDINT_H=\"no/such/file/stdint.h\"
+ HAVE_STDINT_H=0
+ fi
+
+
+
+ if test $ac_cv_header_stdint_h = yes; then
+ { $as_echo "$as_me:$LINENO: checking whether stdint.h conforms to C99" >&5
+$as_echo_n "checking whether stdint.h conforms to C99... " >&6; }
+if test "${gl_cv_header_working_stdint_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ gl_cv_header_working_stdint_h=no
+ cat >conftest.$ac_ext <<_ACEOF
+
+ /* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stddef.h>
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#include ABSOLUTE_STDINT_H
+#ifdef INT8_MAX
+int8_t a1 = INT8_MAX;
+int8_t a1min = INT8_MIN;
+#endif
+#ifdef INT16_MAX
+int16_t a2 = INT16_MAX;
+int16_t a2min = INT16_MIN;
+#endif
+#ifdef INT32_MAX
+int32_t a3 = INT32_MAX;
+int32_t a3min = INT32_MIN;
+#endif
+#ifdef INT64_MAX
+int64_t a4 = INT64_MAX;
+int64_t a4min = INT64_MIN;
+#endif
+#ifdef UINT8_MAX
+uint8_t b1 = UINT8_MAX;
+#else
+typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
+#endif
+#ifdef UINT16_MAX
+uint16_t b2 = UINT16_MAX;
+#endif
+#ifdef UINT32_MAX
+uint32_t b3 = UINT32_MAX;
+#endif
+#ifdef UINT64_MAX
+uint64_t b4 = UINT64_MAX;
+#endif
+int_least8_t c1 = INT8_C (0x7f);
+int_least8_t c1max = INT_LEAST8_MAX;
+int_least8_t c1min = INT_LEAST8_MIN;
+int_least16_t c2 = INT16_C (0x7fff);
+int_least16_t c2max = INT_LEAST16_MAX;
+int_least16_t c2min = INT_LEAST16_MIN;
+int_least32_t c3 = INT32_C (0x7fffffff);
+int_least32_t c3max = INT_LEAST32_MAX;
+int_least32_t c3min = INT_LEAST32_MIN;
+int_least64_t c4 = INT64_C (0x7fffffffffffffff);
+int_least64_t c4max = INT_LEAST64_MAX;
+int_least64_t c4min = INT_LEAST64_MIN;
+uint_least8_t d1 = UINT8_C (0xff);
+uint_least8_t d1max = UINT_LEAST8_MAX;
+uint_least16_t d2 = UINT16_C (0xffff);
+uint_least16_t d2max = UINT_LEAST16_MAX;
+uint_least32_t d3 = UINT32_C (0xffffffff);
+uint_least32_t d3max = UINT_LEAST32_MAX;
+uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
+uint_least64_t d4max = UINT_LEAST64_MAX;
+int_fast8_t e1 = INT_FAST8_MAX;
+int_fast8_t e1min = INT_FAST8_MIN;
+int_fast16_t e2 = INT_FAST16_MAX;
+int_fast16_t e2min = INT_FAST16_MIN;
+int_fast32_t e3 = INT_FAST32_MAX;
+int_fast32_t e3min = INT_FAST32_MIN;
+int_fast64_t e4 = INT_FAST64_MAX;
+int_fast64_t e4min = INT_FAST64_MIN;
+uint_fast8_t f1 = UINT_FAST8_MAX;
+uint_fast16_t f2 = UINT_FAST16_MAX;
+uint_fast32_t f3 = UINT_FAST32_MAX;
+uint_fast64_t f4 = UINT_FAST64_MAX;
+#ifdef INTPTR_MAX
+intptr_t g = INTPTR_MAX;
+intptr_t gmin = INTPTR_MIN;
+#endif
+#ifdef UINTPTR_MAX
+uintptr_t h = UINTPTR_MAX;
+#endif
+intmax_t i = INTMAX_MAX;
+uintmax_t j = UINTMAX_MAX;
+struct s {
+ int check_PTRDIFF: PTRDIFF_MIN < 0 && 0 < PTRDIFF_MAX ? 1 : -1;
+ int check_SIG_ATOMIC: SIG_ATOMIC_MIN <= 0 && 0 < SIG_ATOMIC_MAX ? 1 : -1;
+ int check_SIZE: 0 < SIZE_MAX ? 1 : -1;
+ int check_WCHAR: WCHAR_MIN <= 0 && 0 < WCHAR_MAX ? 1 : -1;
+ int check_WINT: WINT_MIN <= 0 && 0 < WINT_MAX ? 1 : -1;
+
+ /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */
+ int check_UINT8_C:
+ (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
+ int check_UINT16_C:
+ (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
+
+ /* Detect bugs in OpenBSD 3.9 stdint.h. */
+#ifdef UINT8_MAX
+ int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
+#endif
+#ifdef UINT16_MAX
+ int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
+#endif
+#ifdef UINT32_MAX
+ int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
+#endif
+#ifdef UINT64_MAX
+ int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
+#endif
+ int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
+ int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
+ int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
+ int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
+ int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
+ int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
+ int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
+ int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
+ int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
+ int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
+ int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
+};
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_header_working_stdint_h=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_working_stdint_h" >&5
+$as_echo "$gl_cv_header_working_stdint_h" >&6; }
+ fi
+ if test "$gl_cv_header_working_stdint_h" = yes; then
+ STDINT_H=
+ else
+
+
+for ac_header in sys/inttypes.h sys/bitypes.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ if test $ac_cv_header_sys_inttypes_h = yes; then
+ HAVE_SYS_INTTYPES_H=1
+ else
+ HAVE_SYS_INTTYPES_H=0
+ fi
+
+ if test $ac_cv_header_sys_bitypes_h = yes; then
+ HAVE_SYS_BITYPES_H=1
+ else
+ HAVE_SYS_BITYPES_H=0
+ fi
+
+
+
+
+
+
+
+
+
+
+ for gltype in ptrdiff_t sig_atomic_t size_t wchar_t wint_t ; do
+ { $as_echo "$as_me:$LINENO: checking for bit size of $gltype" >&5
+$as_echo_n "checking for bit size of $gltype... " >&6; }
+if { as_var=gl_cv_bitsizeof_${gltype}; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=$ac_mid; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) result=$ac_lo;;
+'') result=unknown ;;
+esac
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+static long int longval () { return sizeof ($gltype) * CHAR_BIT; }
+static unsigned long int ulongval () { return sizeof ($gltype) * CHAR_BIT; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if ((sizeof ($gltype) * CHAR_BIT) < 0)
+ {
+ long int i = longval ();
+ if (i != (sizeof ($gltype) * CHAR_BIT))
+ return 1;
+ fprintf (f, "%ld", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != (sizeof ($gltype) * CHAR_BIT))
+ return 1;
+ fprintf (f, "%lu", i);
+ }
+ /* Do not output a trailing newline, as this causes \r\n confusion
+ on some platforms. */
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ result=`cat conftest.val`
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+result=unknown
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+ eval gl_cv_bitsizeof_${gltype}=\$result
+
+fi
+ac_res=`eval 'as_val=${'gl_cv_bitsizeof_${gltype}'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval result=\$gl_cv_bitsizeof_${gltype}
+ if test $result = unknown; then
+ result=0
+ fi
+ GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ cat >>confdefs.h <<_ACEOF
+#define BITSIZEOF_${GLTYPE} $result
+_ACEOF
+
+ eval BITSIZEOF_${GLTYPE}=\$result
+ done
+
+
+
+
+
+
+
+ for gltype in sig_atomic_t wchar_t wint_t ; do
+ { $as_echo "$as_me:$LINENO: checking whether $gltype is signed" >&5
+$as_echo_n "checking whether $gltype is signed... " >&6; }
+if { as_var=gl_cv_type_${gltype}_signed; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+ int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ result=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ result=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ eval gl_cv_type_${gltype}_signed=\$result
+
+fi
+ac_res=`eval 'as_val=${'gl_cv_type_${gltype}_signed'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval result=\$gl_cv_type_${gltype}_signed
+ GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ if test "$result" = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_SIGNED_${GLTYPE} 1
+_ACEOF
+
+ eval HAVE_SIGNED_${GLTYPE}=1
+ else
+ eval HAVE_SIGNED_${GLTYPE}=0
+ fi
+ done
+
+
+ gl_cv_type_ptrdiff_t_signed=yes
+ gl_cv_type_size_t_signed=no
+
+
+
+
+
+
+
+ for gltype in ptrdiff_t sig_atomic_t size_t wchar_t wint_t ; do
+ { $as_echo "$as_me:$LINENO: checking for $gltype integer literal suffix" >&5
+$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
+if { as_var=gl_cv_type_${gltype}_suffix; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval gl_cv_type_${gltype}_suffix=no
+ eval result=\$gl_cv_type_${gltype}_signed
+ if test "$result" = yes; then
+ glsufu=
+ else
+ glsufu=u
+ fi
+ for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+ case $glsuf in
+ '') gltype1='int';;
+ l) gltype1='long int';;
+ ll) gltype1='long long int';;
+ i64) gltype1='__int64';;
+ u) gltype1='unsigned int';;
+ ul) gltype1='unsigned long int';;
+ ull) gltype1='unsigned long long int';;
+ ui64)gltype1='unsigned __int64';;
+ esac
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+ extern $gltype foo;
+ extern $gltype1 foo;
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ eval gl_cv_type_${gltype}_suffix=\$glsuf
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" != no && break
+ done
+fi
+ac_res=`eval 'as_val=${'gl_cv_type_${gltype}_suffix'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" = no && result=
+ eval ${GLTYPE}_SUFFIX=\$result
+ cat >>confdefs.h <<_ACEOF
+#define ${GLTYPE}_SUFFIX $result
+_ACEOF
+
+ done
+
+
+
+ STDINT_H=stdint.h
+ fi
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking absolute name of <stdio.h>" >&5
+$as_echo_n "checking absolute name of <stdio.h>... " >&6; }
+if test "${gl_cv_absolute_stdio_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_stdio_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdio.h>
+_ACEOF
+ gl_cv_absolute_stdio_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/stdio.h#{s#.*"\(.*/stdio.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_absolute_stdio_h" >&5
+$as_echo "$gl_cv_absolute_stdio_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_STDIO_H "$gl_cv_absolute_stdio_h"
+_ACEOF
+
+
+ ABSOLUTE_STDIO_H=\"$gl_cv_absolute_stdio_h\"
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking absolute name of <stdlib.h>" >&5
+$as_echo_n "checking absolute name of <stdlib.h>... " >&6; }
+if test "${gl_cv_absolute_stdlib_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_stdlib_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+_ACEOF
+ gl_cv_absolute_stdlib_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/stdlib.h#{s#.*"\(.*/stdlib.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_absolute_stdlib_h" >&5
+$as_echo "$gl_cv_absolute_stdlib_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_STDLIB_H "$gl_cv_absolute_stdlib_h"
+_ACEOF
+
+
+ ABSOLUTE_STDLIB_H=\"$gl_cv_absolute_stdlib_h\"
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS mkstemp-safer.$ac_objext"
+
+
+
+
+
+
+for ac_func in stpcpy
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_stpcpy = no; then
+ HAVE_STPCPY=0
+
+ :
+
+ fi
+
+
+
+ GNULIB_STPCPY=1
+
+
+
+for ac_func in strcspn
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_strcspn = no; then
+ :
+ fi
+
+
+
+
+for ac_func in strdup
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+
+
+
+
+ if test $ac_cv_have_decl_strdup = no; then
+ HAVE_DECL_STRDUP=0
+ fi
+ :
+
+
+
+ GNULIB_STRDUP=1
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS strftime.$ac_objext"
+
+ # This defines (or not) HAVE_TZNAME and HAVE_TM_ZONE.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define my_strftime nstrftime
+_ACEOF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_have_decl_strndup = no; then
+ HAVE_DECL_STRNDUP=0
+ fi
+
+ # AIX 4.3.3, AIX 5.1 have a function that fails to add the terminating '\0'.
+ { $as_echo "$as_me:$LINENO: checking for working strndup" >&5
+$as_echo_n "checking for working strndup... " >&6; }
+if test "${gl_cv_func_strndup+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ { $as_echo "$as_me:$LINENO: checking for strndup" >&5
+$as_echo_n "checking for strndup... " >&6; }
+if test "${ac_cv_func_strndup+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define strndup to an innocuous variant, in case <limits.h> declares strndup.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define strndup innocuous_strndup
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char strndup (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef strndup
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char strndup ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_strndup || defined __stub___strndup
+choke me
+#endif
+
+int
+main ()
+{
+return strndup ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_strndup=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_strndup=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_strndup" >&5
+$as_echo "$ac_cv_func_strndup" >&6; }
+if test $ac_cv_func_strndup = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#ifdef _AIX
+ too risky
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "too risky" >/dev/null 2>&1; then
+ gl_cv_func_strndup=no
+else
+ gl_cv_func_strndup=yes
+fi
+rm -f conftest*
+
+else
+ gl_cv_func_strndup=no
+fi
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+
+ /* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+ #include <stdlib.h>
+int
+main ()
+{
+
+#ifndef HAVE_DECL_STRNDUP
+ extern char *strndup (const char *, size_t);
+#endif
+ char *s;
+ s = strndup ("some longer string", 15);
+ free (s);
+ s = strndup ("shorter string", 13);
+ return s[13] != '\0';
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_strndup=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_strndup=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_strndup" >&5
+$as_echo "$gl_cv_func_strndup" >&6; }
+ if test $gl_cv_func_strndup = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STRNDUP 1
+_ACEOF
+
+ else
+ HAVE_STRNDUP=0
+ gl_LIBOBJS="$gl_LIBOBJS strndup.$ac_objext"
+ :
+ fi
+
+
+
+ GNULIB_STRNDUP=1
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_have_decl_strnlen = no; then
+ HAVE_DECL_STRNLEN=0
+ fi
+
+ { $as_echo "$as_me:$LINENO: checking for working strnlen" >&5
+$as_echo_n "checking for working strnlen... " >&6; }
+if test "${ac_cv_func_strnlen_working+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_strnlen_working=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+#define S "foobar"
+#define S_LEN (sizeof S - 1)
+
+ /* At least one implementation is buggy: that of AIX 4.3 would
+ give strnlen (S, 1) == 3. */
+
+ int i;
+ for (i = 0; i < S_LEN + 1; ++i)
+ {
+ int expected = i <= S_LEN ? i : S_LEN;
+ if (strnlen (S, i) != expected)
+ return 1;
+ }
+ return 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_strnlen_working=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_strnlen_working=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_strnlen_working" >&5
+$as_echo "$ac_cv_func_strnlen_working" >&6; }
+test $ac_cv_func_strnlen_working = no && gl_LIBOBJS="$gl_LIBOBJS strnlen.$ac_objext"
+
+ if test $ac_cv_func_strnlen_working = no; then
+ # This is necessary because automake-1.6.1 doens't understand
+ # that the above use of AC_FUNC_STRNLEN means we may have to use
+ # lib/strnlen.c.
+ #AC_LIBOBJ(strnlen)
+
+cat >>confdefs.h <<\_ACEOF
+#define strnlen rpl_strnlen
+_ACEOF
+
+ :
+ fi
+
+
+
+ GNULIB_STRNLEN=1
+
+
+
+
+for ac_func in strpbrk
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_strpbrk = no; then
+ HAVE_STRPBRK=0
+ :
+ fi
+
+
+
+ GNULIB_STRPBRK=1
+
+
+ { $as_echo "$as_me:$LINENO: checking for working strtod" >&5
+$as_echo_n "checking for working strtod... " >&6; }
+if test "${ac_cv_func_strtod+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_strtod=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+$ac_includes_default
+#ifndef strtod
+double strtod ();
+#endif
+int
+main()
+{
+ {
+ /* Some versions of Linux strtod mis-parse strings with leading '+'. */
+ char *string = " +69";
+ char *term;
+ double value;
+ value = strtod (string, &term);
+ if (value != 69 || term != (string + 4))
+ return 1;
+ }
+
+ {
+ /* Under Solaris 2.4, strtod returns the wrong value for the
+ terminating character under some conditions. */
+ char *string = "NaN";
+ char *term;
+ strtod (string, &term);
+ if (term != string && *(term - 1) == 0)
+ return 1;
+ }
+ return 0;
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_strtod=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_strtod=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_strtod" >&5
+$as_echo "$ac_cv_func_strtod" >&6; }
+if test $ac_cv_func_strtod = no; then
+ gl_LIBOBJS="$gl_LIBOBJS strtod.$ac_objext"
+{ $as_echo "$as_me:$LINENO: checking for pow" >&5
+$as_echo_n "checking for pow... " >&6; }
+if test "${ac_cv_func_pow+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define pow to an innocuous variant, in case <limits.h> declares pow.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define pow innocuous_pow
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char pow (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef pow
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pow ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_pow || defined __stub___pow
+choke me
+#endif
+
+int
+main ()
+{
+return pow ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_pow=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_pow=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_pow" >&5
+$as_echo "$ac_cv_func_pow" >&6; }
+
+if test $ac_cv_func_pow = no; then
+ { $as_echo "$as_me:$LINENO: checking for pow in -lm" >&5
+$as_echo_n "checking for pow in -lm... " >&6; }
+if test "${ac_cv_lib_m_pow+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pow ();
+int
+main ()
+{
+return pow ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_m_pow=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_m_pow=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_m_pow" >&5
+$as_echo "$ac_cv_lib_m_pow" >&6; }
+if test $ac_cv_lib_m_pow = yes; then
+ POW_LIB=-lm
+else
+ { $as_echo "$as_me:$LINENO: WARNING: cannot find library containing definition of pow" >&5
+$as_echo "$as_me: WARNING: cannot find library containing definition of pow" >&2;}
+fi
+
+fi
+
+fi
+
+ if test $ac_cv_func_strtod = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define strtod rpl_strtod
+_ACEOF
+
+ :
+ fi
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether <inttypes.h> defines strtoimax as a macro" >&5
+$as_echo_n "checking whether <inttypes.h> defines strtoimax as a macro... " >&6; }
+if test "${jm_cv_func_strtoimax_macro+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <inttypes.h>
+#ifdef strtoimax
+ inttypes_h_defines_strtoimax
+#endif
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "inttypes_h_defines_strtoimax" >/dev/null 2>&1; then
+ jm_cv_func_strtoimax_macro=yes
+else
+ jm_cv_func_strtoimax_macro=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $jm_cv_func_strtoimax_macro" >&5
+$as_echo "$jm_cv_func_strtoimax_macro" >&6; }
+
+ if test "$jm_cv_func_strtoimax_macro" != yes; then
+
+for ac_func in strtoimax
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_strtoimax = no; then
+
+ { $as_echo "$as_me:$LINENO: checking whether strtoll is declared" >&5
+$as_echo_n "checking whether strtoll is declared... " >&6; }
+if test "${ac_cv_have_decl_strtoll+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strtoll
+ (void) strtoll;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strtoll=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_strtoll=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtoll" >&5
+$as_echo "$ac_cv_have_decl_strtoll" >&6; }
+if test $ac_cv_have_decl_strtoll = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOLL 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOLL 0
+_ACEOF
+
+
+fi
+
+
+
+
+ fi
+ fi
+
+
+
+ GNULIB_STRTOIMAX=1
+
+
+
+for ac_func in strtol
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+
+
+
+ if test "$ac_cv_type_long_long_int" = yes; then
+
+for ac_func in strtoll
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_strtoll = no; then
+
+ :
+
+ fi
+ fi
+
+
+
+for ac_func in strtoul
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+
+
+
+ if test "$ac_cv_type_unsigned_long_long_int" = yes; then
+
+for ac_func in strtoull
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_strtoull = no; then
+
+ :
+
+ fi
+ fi
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether <inttypes.h> defines strtoumax as a macro" >&5
+$as_echo_n "checking whether <inttypes.h> defines strtoumax as a macro... " >&6; }
+if test "${jm_cv_func_strtoumax_macro+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <inttypes.h>
+#ifdef strtoumax
+ inttypes_h_defines_strtoumax
+#endif
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "inttypes_h_defines_strtoumax" >/dev/null 2>&1; then
+ jm_cv_func_strtoumax_macro=yes
+else
+ jm_cv_func_strtoumax_macro=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $jm_cv_func_strtoumax_macro" >&5
+$as_echo "$jm_cv_func_strtoumax_macro" >&6; }
+
+ if test "$jm_cv_func_strtoumax_macro" != yes; then
+
+for ac_func in strtoumax
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_strtoumax = no; then
+
+ { $as_echo "$as_me:$LINENO: checking whether strtoull is declared" >&5
+$as_echo_n "checking whether strtoull is declared... " >&6; }
+if test "${ac_cv_have_decl_strtoull+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strtoull
+ (void) strtoull;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strtoull=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_strtoull=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtoull" >&5
+$as_echo "$ac_cv_have_decl_strtoull" >&6; }
+if test $ac_cv_have_decl_strtoull = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOULL 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOULL 0
+_ACEOF
+
+
+fi
+
+
+
+
+ fi
+ fi
+
+
+
+ GNULIB_STRTOUMAX=1
+
+
+
+
+
+for ac_func in strverscmp
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_strverscmp = no; then
+
+ :
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking whether <sys/socket.h> is self-contained" >&5
+$as_echo_n "checking whether <sys/socket.h> is self-contained... " >&6; }
+if test "${gl_cv_header_sys_socket_h_selfcontained+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/socket.h>
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_header_sys_socket_h_selfcontained=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_header_sys_socket_h_selfcontained=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_sys_socket_h_selfcontained" >&5
+$as_echo "$gl_cv_header_sys_socket_h_selfcontained" >&6; }
+ if test $gl_cv_header_sys_socket_h_selfcontained = yes; then
+ SYS_SOCKET_H=''
+ else
+ SYS_SOCKET_H='sys/socket.h'
+
+
+for ac_header in sys/socket.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ { $as_echo "$as_me:$LINENO: checking absolute name of <sys/socket.h>" >&5
+$as_echo_n "checking absolute name of <sys/socket.h>... " >&6; }
+if test "${gl_cv_absolute_sys_socket_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_sys_socket_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/socket.h>
+_ACEOF
+ gl_cv_absolute_sys_socket_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/sys/socket.h#{s#.*"\(.*/sys/socket.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_absolute_sys_socket_h" >&5
+$as_echo "$gl_cv_absolute_sys_socket_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_SYS_SOCKET_H "$gl_cv_absolute_sys_socket_h"
+_ACEOF
+
+
+ ABSOLUTE_SYS_SOCKET_H=\"$gl_cv_absolute_sys_socket_h\"
+
+ if test $ac_cv_header_sys_socket_h = yes; then
+ HAVE_SYS_SOCKET_H=1
+ HAVE_WINSOCK2_H=0
+ HAVE_WS2TCPIP_H=0
+ else
+ HAVE_SYS_SOCKET_H=0
+
+
+for ac_header in winsock2.h ws2tcpip.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ if test $ac_cv_header_winsock2_h = yes; then
+ HAVE_WINSOCK2_H=1
+ else
+ HAVE_WINSOCK2_H=0
+ fi
+ if test $ac_cv_header_ws2tcpip_h = yes; then
+ HAVE_WS2TCPIP_H=1
+ else
+ HAVE_WS2TCPIP_H=0
+ fi
+ fi
+
+
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+done
+IFS=$as_save_IFS
+
+fi
+
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ test -d ./--version && rmdir ./--version
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether mkdir is declared" >&5
+$as_echo_n "checking whether mkdir is declared... " >&6; }
+if test "${ac_cv_have_decl_mkdir+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/stat.h>
+
+int
+main ()
+{
+#ifndef mkdir
+ (void) mkdir;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_mkdir=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_mkdir=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_mkdir" >&5
+$as_echo "$ac_cv_have_decl_mkdir" >&6; }
+if test $ac_cv_have_decl_mkdir = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_MKDIR 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_MKDIR 0
+_ACEOF
+
+
+for ac_header in io.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+fi
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking absolute name of <sys/stat.h>" >&5
+$as_echo_n "checking absolute name of <sys/stat.h>... " >&6; }
+if test "${gl_cv_absolute_sys_stat_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_sys_stat_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/stat.h>
+_ACEOF
+ gl_cv_absolute_sys_stat_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/sys/stat.h#{s#.*"\(.*/sys/stat.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_absolute_sys_stat_h" >&5
+$as_echo "$gl_cv_absolute_sys_stat_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_SYS_STAT_H "$gl_cv_absolute_sys_stat_h"
+_ACEOF
+
+
+ ABSOLUTE_SYS_STAT_H=\"$gl_cv_absolute_sys_stat_h\"
+
+ SYS_STAT_H='sys/stat.h'
+
+
+ { $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+done
+IFS=$as_save_IFS
+
+fi
+
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ test -d ./--version && rmdir ./--version
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+done
+IFS=$as_save_IFS
+
+fi
+
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ test -d ./--version && rmdir ./--version
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS tempname.$ac_objext"
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether localtime_r is compatible with its POSIX signature" >&5
+$as_echo_n "checking whether localtime_r is compatible with its POSIX signature... " >&6; }
+if test "${gl_cv_time_r_posix+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <time.h>
+int
+main ()
+{
+/* We don't need to append 'restrict's to the argument types,
+ even though the POSIX signature has the 'restrict's,
+ since C99 says they can't affect type compatibility. */
+ struct tm * (*ptr) (time_t const *, struct tm *) = localtime_r;
+ if (ptr) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_time_r_posix=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_time_r_posix=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_time_r_posix" >&5
+$as_echo "$gl_cv_time_r_posix" >&6; }
+ if test $gl_cv_time_r_posix = yes; then
+ REPLACE_LOCALTIME_R=0
+ else
+ REPLACE_LOCALTIME_R=1
+ gl_LIBOBJS="$gl_LIBOBJS time_r.$ac_objext"
+
+ :
+
+ fi
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether tzset clobbers localtime buffer" >&5
+$as_echo_n "checking whether tzset clobbers localtime buffer... " >&6; }
+if test "${gl_cv_func_tzset_clobber+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_tzset_clobber=yes
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <time.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+ time_t t1 = 853958121;
+ struct tm *p, s;
+ putenv ("TZ=GMT0");
+ p = localtime (&t1);
+ s = *p;
+ putenv ("TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00");
+ tzset ();
+ return (p->tm_year != s.tm_year
+ || p->tm_mon != s.tm_mon
+ || p->tm_mday != s.tm_mday
+ || p->tm_hour != s.tm_hour
+ || p->tm_min != s.tm_min
+ || p->tm_sec != s.tm_sec);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_tzset_clobber=no
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_tzset_clobber=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_func_tzset_clobber" >&5
+$as_echo "$gl_cv_func_tzset_clobber" >&6; }
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_RUN_TZSET_TEST 1
+_ACEOF
+
+
+ if test $gl_cv_func_tzset_clobber = yes; then
+
+ gl_LIBOBJS="$gl_LIBOBJS gettimeofday.$ac_objext"
+
+
+for ac_header in sys/timeb.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_func in _ftime
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define gmtime rpl_gmtime
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define localtime rpl_localtime
+_ACEOF
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define tzset rpl_tzset
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define TZSET_CLOBBERS_LOCALTIME 1
+_ACEOF
+
+ fi
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_header_unistd_h = yes; then
+ HAVE_UNISTD_H=1
+ { $as_echo "$as_me:$LINENO: checking absolute name of <unistd.h>" >&5
+$as_echo_n "checking absolute name of <unistd.h>... " >&6; }
+if test "${gl_cv_absolute_unistd_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_unistd_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <unistd.h>
+_ACEOF
+ gl_cv_absolute_unistd_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/unistd.h#{s#.*"\(.*/unistd.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_absolute_unistd_h" >&5
+$as_echo "$gl_cv_absolute_unistd_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_UNISTD_H "$gl_cv_absolute_unistd_h"
+_ACEOF
+
+
+ ABSOLUTE_UNISTD_H=\"$gl_cv_absolute_unistd_h\"
+ else
+ HAVE_UNISTD_H=0
+ fi
+
+
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS dup-safer.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS fd-safer.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS pipe-safer.$ac_objext"
+
+ { $as_echo "$as_me:$LINENO: checking whether a running program can be unlinked" >&5
+$as_echo_n "checking whether a running program can be unlinked... " >&6; }
+if test "${jm_cv_func_unlink_busy_text+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ jm_cv_func_unlink_busy_text=no
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+ int
+ main (int argc, char **argv)
+ {
+ return !argc || unlink (argv[0]) != 0;
+ }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ jm_cv_func_unlink_busy_text=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+jm_cv_func_unlink_busy_text=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $jm_cv_func_unlink_busy_text" >&5
+$as_echo "$jm_cv_func_unlink_busy_text" >&6; }
+
+ if test $jm_cv_func_unlink_busy_text = no; then
+ INSTALL=$ac_install_sh
+ fi
+
+
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS unlinkdir.$ac_objext"
+
+ # The Hurd, the Linux kernel, the FreeBSD kernel version 2.2 and later,
+ # and Cygwin never let anyone (even root) unlink directories.
+ # If anyone knows of another system for which unlink can never
+ # remove a directory, please report it to <bug-coreutils@gnu.org>.
+ # Unfortunately this is difficult to test for, since it requires root access
+ # and might create garbage in the file system,
+ # so the code below simply relies on the kernel name and version number.
+ case $host in
+ *-*-gnu[0-9]* | \
+ *-*-linux-* | *-*-linux | \
+ *-*-freebsd2.2* | *-*-freebsd[3-9]* | *-*-freebsd[1-9][0-9]* | \
+ *-cygwin)
+
+cat >>confdefs.h <<\_ACEOF
+#define UNLINK_CANNOT_UNLINK_DIR 1
+_ACEOF
+;;
+ esac
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define USE_UNLOCKED_IO 1
+_ACEOF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for /proc/uptime" >&5
+$as_echo_n "checking for /proc/uptime... " >&6; }
+if test "${jm_cv_have_proc_uptime+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ jm_cv_have_proc_uptime=no
+ test -f /proc/uptime \
+ && test "$cross_compiling" = no \
+ && cat < /proc/uptime >/dev/null 2>/dev/null \
+ && jm_cv_have_proc_uptime=yes
+fi
+{ $as_echo "$as_me:$LINENO: result: $jm_cv_have_proc_uptime" >&5
+$as_echo "$jm_cv_have_proc_uptime" >&6; }
+ if test $jm_cv_have_proc_uptime = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_PROC_UPTIME 1
+_ACEOF
+
+ fi
+
+
+ gl_LIBOBJS="$gl_LIBOBJS userspec.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_func_utime_null = no; then
+ gl_LIBOBJS="$gl_LIBOBJS utime.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define utime rpl_utime
+_ACEOF
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether utimes accepts a null argument" >&5
+$as_echo_n "checking whether utimes accepts a null argument... " >&6; }
+if test "${ac_cv_func_utimes_null+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ rm -f conftest.data; > conftest.data
+if test "$cross_compiling" = yes; then
+ ac_cv_func_utimes_null=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* In case stat has been defined to rpl_stat, undef it here. */
+#undef stat
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+int
+main () {
+struct stat s, t;
+return ! (stat ("conftest.data", &s) == 0
+ && utimes ("conftest.data", 0) == 0
+ && stat ("conftest.data", &t) == 0
+ && t.st_mtime >= s.st_mtime
+ && t.st_mtime - s.st_mtime < 120));
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_utimes_null=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_utimes_null=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+rm -f core core.* *.core
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_utimes_null" >&5
+$as_echo "$ac_cv_func_utimes_null" >&6; }
+
+ if test $ac_cv_func_utimes_null = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_UTIMES_NULL 1
+_ACEOF
+
+ fi
+
+
+
+ fi
+
+
+ gl_LIBOBJS="$gl_LIBOBJS utimecmp.$ac_objext"
+
+
+ :
+
+
+ gl_LIBOBJS="$gl_LIBOBJS utimens.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_func_vasnprintf = no; then
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS vasnprintf.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS printf-args.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS printf-parse.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS asnprintf.$ac_objext"
+ if test $ac_cv_func_vasnprintf = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define REPLACE_VASNPRINTF 1
+_ACEOF
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for ptrdiff_t" >&5
+$as_echo_n "checking for ptrdiff_t... " >&6; }
+if test "${ac_cv_type_ptrdiff_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+typedef ptrdiff_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_ptrdiff_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_ptrdiff_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5
+$as_echo "$ac_cv_type_ptrdiff_t" >&6; }
+if test $ac_cv_type_ptrdiff_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_PTRDIFF_T 1
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in snprintf wcslen
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+
+ fi
+
+
+
+for ac_func in vasprintf
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ if test $ac_cv_func_vasprintf = no; then
+
+ gl_LIBOBJS="$gl_LIBOBJS vasprintf.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS asprintf.$ac_objext"
+ if test $ac_cv_func_vasprintf = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define REPLACE_VASPRINTF 1
+_ACEOF
+
+ fi
+
+
+
+
+
+
+
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking whether <wchar.h> is standalone" >&5
+$as_echo_n "checking whether <wchar.h> is standalone... " >&6; }
+if test "${gl_cv_header_wchar_h_standalone+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#include <wchar.h>
+wchar_t w;
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_header_wchar_h_standalone=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_header_wchar_h_standalone=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_header_wchar_h_standalone" >&5
+$as_echo "$gl_cv_header_wchar_h_standalone" >&6; }
+ if test $gl_cv_header_wchar_h_standalone = yes; then
+ WCHAR_H=
+ else
+ { $as_echo "$as_me:$LINENO: checking absolute name of <wchar.h>" >&5
+$as_echo_n "checking absolute name of <wchar.h>... " >&6; }
+if test "${gl_cv_absolute_wchar_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_wchar_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <wchar.h>
+_ACEOF
+ gl_cv_absolute_wchar_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/wchar.h#{s#.*"\(.*/wchar.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_absolute_wchar_h" >&5
+$as_echo "$gl_cv_absolute_wchar_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_WCHAR_H "$gl_cv_absolute_wchar_h"
+_ACEOF
+
+
+ ABSOLUTE_WCHAR_H=\"$gl_cv_absolute_wchar_h\"
+ WCHAR_H=wchar.h
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $gt_cv_c_wint_t = yes; then
+ HAVE_WINT_T=1
+ else
+ HAVE_WINT_T=0
+ fi
+
+
+ WCTYPE_H=wctype.h
+ if test $ac_cv_header_wctype_h = yes; then
+ if test "$ac_cv_func_iswcntrl" = yes; then
+ WCTYPE_H=
+ fi
+ { $as_echo "$as_me:$LINENO: checking absolute name of <wctype.h>" >&5
+$as_echo_n "checking absolute name of <wctype.h>... " >&6; }
+if test "${gl_cv_absolute_wctype_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_wctype_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <wctype.h>
+_ACEOF
+ gl_cv_absolute_wctype_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/wctype.h#{s#.*"\(.*/wctype.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gl_cv_absolute_wctype_h" >&5
+$as_echo "$gl_cv_absolute_wctype_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_WCTYPE_H "$gl_cv_absolute_wctype_h"
+_ACEOF
+
+
+ ABSOLUTE_WCTYPE_H=\"$gl_cv_absolute_wctype_h\"
+ HAVE_WCTYPE_H=1
+ else
+ ABSOLUTE_WCTYPE_H=\"no/such/file/wctype.h\"
+ HAVE_WCTYPE_H=0
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether wcwidth is declared" >&5
+$as_echo_n "checking whether wcwidth is declared... " >&6; }
+if test "${ac_cv_have_decl_wcwidth+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* AIX 3.2.5 declares wcwidth in <string.h>. */
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+
+
+int
+main ()
+{
+#ifndef wcwidth
+ (void) wcwidth;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_wcwidth=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_wcwidth=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_wcwidth" >&5
+$as_echo "$ac_cv_have_decl_wcwidth" >&6; }
+if test $ac_cv_have_decl_wcwidth = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_WCWIDTH 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_WCWIDTH 0
+_ACEOF
+
+
+fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether use of TIOCGWINSZ requires sys/ioctl.h" >&5
+$as_echo_n "checking whether use of TIOCGWINSZ requires sys/ioctl.h... " >&6; }
+if test "${jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h=no
+
+ if test $jm_cv_sys_tiocgwinsz_needs_termios_h = no; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+# include <sys/ioctl.h>
+# ifdef TIOCGWINSZ
+ yes
+# endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+ jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h=yes
+fi
+rm -f conftest*
+
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h" >&5
+$as_echo "$jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h" >&6; }
+ if test $jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define GWINSZ_IN_SYS_IOCTL 1
+_ACEOF
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking whether use of TIOCGWINSZ requires termios.h" >&5
+$as_echo_n "checking whether use of TIOCGWINSZ requires termios.h... " >&6; }
+if test "${jm_cv_sys_tiocgwinsz_needs_termios_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ jm_cv_sys_tiocgwinsz_needs_termios_h=no
+
+ if test $ac_cv_sys_posix_termios = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+# include <termios.h>
+# ifdef TIOCGWINSZ
+ yes
+# endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+ jm_cv_sys_tiocgwinsz_needs_termios_h=yes
+fi
+rm -f conftest*
+
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $jm_cv_sys_tiocgwinsz_needs_termios_h" >&5
+$as_echo "$jm_cv_sys_tiocgwinsz_needs_termios_h" >&6; }
+
+
+ { $as_echo "$as_me:$LINENO: checking whether use of struct winsize requires sys/ptem.h" >&5
+$as_echo_n "checking whether use of struct winsize requires sys/ptem.h... " >&6; }
+if test "${jm_cv_sys_struct_winsize_needs_sys_ptem_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ jm_cv_sys_struct_winsize_needs_sys_ptem_h=yes
+ if test $ac_cv_sys_posix_termios = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <termios.h>
+int
+main ()
+{
+struct winsize x;
+ if (sizeof x > 0) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ jm_cv_sys_struct_winsize_needs_sys_ptem_h=no
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $jm_cv_sys_struct_winsize_needs_sys_ptem_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/ptem.h>
+int
+main ()
+{
+struct winsize x;
+ if (sizeof x > 0) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ :
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ jm_cv_sys_struct_winsize_needs_sys_ptem_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $jm_cv_sys_struct_winsize_needs_sys_ptem_h" >&5
+$as_echo "$jm_cv_sys_struct_winsize_needs_sys_ptem_h" >&6; }
+ if test $jm_cv_sys_struct_winsize_needs_sys_ptem_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define WINSIZE_IN_PTEM 1
+_ACEOF
+
+ fi
+
+ gl_LIBOBJS="$gl_LIBOBJS xmalloc.$ac_objext"
+
+
+
+ :
+
+
+ :
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS xgetcwd.$ac_objext"
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS xnanosleep.$ac_objext"
+
+
+
+ :
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS xstrtod.$ac_objext"
+
+
+ gl_LIBOBJS="$gl_LIBOBJS xstrtol.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS xstrtoul.$ac_objext"
+
+
+ gl_LIBOBJS="$gl_LIBOBJS xstrtold.$ac_objext"
+
+
+ gl_LIBOBJS="$gl_LIBOBJS yesno.$ac_objext"
+
+ :
+
+ LIBCOREUTILS_LIBDEPS="$gl_libdeps"
+
+ LIBCOREUTILS_LTLIBDEPS="$gl_ltlibdeps"
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for library containing strerror" >&5
+$as_echo_n "checking for library containing strerror... " >&6; }
+if test "${ac_cv_search_strerror+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char strerror ();
+int
+main ()
+{
+return strerror ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' cposix; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_search_strerror=$ac_res
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext
+ if test "${ac_cv_search_strerror+set}" = set; then
+ break
+fi
+done
+if test "${ac_cv_search_strerror+set}" = set; then
+ :
+else
+ ac_cv_search_strerror=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
+$as_echo "$ac_cv_search_strerror" >&6; }
+ac_res=$ac_cv_search_strerror
+if test "$ac_res" != no; then
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for function prototypes" >&5
+$as_echo_n "checking for function prototypes... " >&6; }
+if test "$ac_cv_prog_cc_c89" != no; then
+ { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define PROTOTYPES 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define __PROTOTYPES 1
+_ACEOF
+
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test "$ac_cv_prog_cc_stdc" != no; then
+ U= ANSI2KNR=
+else
+ U=_ ANSI2KNR=./ansi2knr
+fi
+# Ensure some checks needed by ansi2knr itself.
+
+
+for ac_header in string.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+{ $as_echo "$as_me:$LINENO: checking for working volatile" >&5
+$as_echo_n "checking for working volatile... " >&6; }
+if test "${ac_cv_c_volatile+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+volatile int x;
+int * volatile y = (int *) 0;
+return !x && !y;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_volatile=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_c_volatile=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_volatile" >&5
+$as_echo "$ac_cv_c_volatile" >&6; }
+if test $ac_cv_c_volatile = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define volatile
+_ACEOF
+
+fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for long double with more range or precision than double" >&5
+$as_echo_n "checking for long double with more range or precision than double... " >&6; }
+if test "${ac_cv_type_long_double_wider+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <float.h>
+ long double const a[] =
+ {
+ 0.0L, DBL_MIN, DBL_MAX, DBL_EPSILON,
+ LDBL_MIN, LDBL_MAX, LDBL_EPSILON
+ };
+ long double
+ f (long double x)
+ {
+ return ((x + (unsigned long int) 10) * (-1 / x) + a[0]
+ + (x ? f (x) : 'c'));
+ }
+
+int
+main ()
+{
+static int test_array [1 - 2 * !((0 < ((DBL_MAX_EXP < LDBL_MAX_EXP)
+ + (DBL_MANT_DIG < LDBL_MANT_DIG)
+ - (LDBL_MAX_EXP < DBL_MAX_EXP)
+ - (LDBL_MANT_DIG < DBL_MANT_DIG)))
+ && (int) LDBL_EPSILON == 0
+ )];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_long_double_wider=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_long_double_wider=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_long_double_wider" >&5
+$as_echo "$ac_cv_type_long_double_wider" >&6; }
+ if test $ac_cv_type_long_double_wider = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LONG_DOUBLE_WIDER 1
+_ACEOF
+
+ fi
+
+ ac_cv_c_long_double=$ac_cv_type_long_double_wider
+ if test $ac_cv_c_long_double = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LONG_DOUBLE 1
+_ACEOF
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_header in sys/sysctl.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+ #if HAVE_SYS_PARAM_H
+ #include <sys/param.h>
+ #endif
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+{ $as_echo "$as_me:$LINENO: checking for mode_t" >&5
+$as_echo_n "checking for mode_t... " >&6; }
+if test "${ac_cv_type_mode_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+typedef mode_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_mode_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_mode_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5
+$as_echo "$ac_cv_type_mode_t" >&6; }
+if test $ac_cv_type_mode_t = yes; then
+ :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define mode_t int
+_ACEOF
+
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for pid_t" >&5
+$as_echo_n "checking for pid_t... " >&6; }
+if test "${ac_cv_type_pid_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+typedef pid_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_pid_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_pid_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5
+$as_echo "$ac_cv_type_pid_t" >&6; }
+if test $ac_cv_type_pid_t = yes; then
+ :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define pid_t int
+_ACEOF
+
+fi
+
+{ $as_echo "$as_me:$LINENO: checking whether sys/types.h defines makedev" >&5
+$as_echo_n "checking whether sys/types.h defines makedev... " >&6; }
+if test "${ac_cv_header_sys_types_h_makedev+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+int
+main ()
+{
+return makedev(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_header_sys_types_h_makedev=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_header_sys_types_h_makedev=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_types_h_makedev" >&5
+$as_echo "$ac_cv_header_sys_types_h_makedev" >&6; }
+
+if test $ac_cv_header_sys_types_h_makedev = no; then
+if test "${ac_cv_header_sys_mkdev_h+set}" = set; then
+ { $as_echo "$as_me:$LINENO: checking for sys/mkdev.h" >&5
+$as_echo_n "checking for sys/mkdev.h... " >&6; }
+if test "${ac_cv_header_sys_mkdev_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_mkdev_h" >&5
+$as_echo "$ac_cv_header_sys_mkdev_h" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking sys/mkdev.h usability" >&5
+$as_echo_n "checking sys/mkdev.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <sys/mkdev.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking sys/mkdev.h presence" >&5
+$as_echo_n "checking sys/mkdev.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/mkdev.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: sys/mkdev.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: sys/mkdev.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/mkdev.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: sys/mkdev.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: sys/mkdev.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: sys/mkdev.h: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/mkdev.h: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: sys/mkdev.h: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/mkdev.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: sys/mkdev.h: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/mkdev.h: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: sys/mkdev.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/mkdev.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: sys/mkdev.h: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/mkdev.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: sys/mkdev.h: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for sys/mkdev.h" >&5
+$as_echo_n "checking for sys/mkdev.h... " >&6; }
+if test "${ac_cv_header_sys_mkdev_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_header_sys_mkdev_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_mkdev_h" >&5
+$as_echo "$ac_cv_header_sys_mkdev_h" >&6; }
+
+fi
+if test $ac_cv_header_sys_mkdev_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define MAJOR_IN_MKDEV 1
+_ACEOF
+
+fi
+
+
+
+ if test $ac_cv_header_sys_mkdev_h = no; then
+ if test "${ac_cv_header_sys_sysmacros_h+set}" = set; then
+ { $as_echo "$as_me:$LINENO: checking for sys/sysmacros.h" >&5
+$as_echo_n "checking for sys/sysmacros.h... " >&6; }
+if test "${ac_cv_header_sys_sysmacros_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_sysmacros_h" >&5
+$as_echo "$ac_cv_header_sys_sysmacros_h" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking sys/sysmacros.h usability" >&5
+$as_echo_n "checking sys/sysmacros.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <sys/sysmacros.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking sys/sysmacros.h presence" >&5
+$as_echo_n "checking sys/sysmacros.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/sysmacros.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: sys/sysmacros.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: sys/sysmacros.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: sys/sysmacros.h: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: sys/sysmacros.h: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: sys/sysmacros.h: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: sys/sysmacros.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: sys/sysmacros.h: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: sys/sysmacros.h: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for sys/sysmacros.h" >&5
+$as_echo_n "checking for sys/sysmacros.h... " >&6; }
+if test "${ac_cv_header_sys_sysmacros_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_header_sys_sysmacros_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_sysmacros_h" >&5
+$as_echo "$ac_cv_header_sys_sysmacros_h" >&6; }
+
+fi
+if test $ac_cv_header_sys_sysmacros_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define MAJOR_IN_SYSMACROS 1
+_ACEOF
+
+fi
+
+
+ fi
+fi
+
+{ $as_echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
+$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
+if test "${ac_cv_header_time+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <sys/time.h>
+#include <time.h>
+
+int
+main ()
+{
+if ((struct tm *) 0)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_header_time=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_header_time=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
+$as_echo "$ac_cv_header_time" >&6; }
+if test $ac_cv_header_time = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define TIME_WITH_SYS_TIME 1
+_ACEOF
+
+fi
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking whether free is declared" >&5
+$as_echo_n "checking whether free is declared... " >&6; }
+if test "${ac_cv_have_decl_free+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef free
+ (void) free;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_free=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_free=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_free" >&5
+$as_echo "$ac_cv_have_decl_free" >&6; }
+if test $ac_cv_have_decl_free = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FREE 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FREE 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether geteuid is declared" >&5
+$as_echo_n "checking whether geteuid is declared... " >&6; }
+if test "${ac_cv_have_decl_geteuid+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef geteuid
+ (void) geteuid;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_geteuid=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_geteuid=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_geteuid" >&5
+$as_echo "$ac_cv_have_decl_geteuid" >&6; }
+if test $ac_cv_have_decl_geteuid = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETEUID 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETEUID 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether getlogin is declared" >&5
+$as_echo_n "checking whether getlogin is declared... " >&6; }
+if test "${ac_cv_have_decl_getlogin+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getlogin
+ (void) getlogin;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getlogin=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_getlogin=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getlogin" >&5
+$as_echo "$ac_cv_have_decl_getlogin" >&6; }
+if test $ac_cv_have_decl_getlogin = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETLOGIN 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETLOGIN 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether getuid is declared" >&5
+$as_echo_n "checking whether getuid is declared... " >&6; }
+if test "${ac_cv_have_decl_getuid+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getuid
+ (void) getuid;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getuid=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_getuid=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getuid" >&5
+$as_echo "$ac_cv_have_decl_getuid" >&6; }
+if test $ac_cv_have_decl_getuid = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETUID 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETUID 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether lseek is declared" >&5
+$as_echo_n "checking whether lseek is declared... " >&6; }
+if test "${ac_cv_have_decl_lseek+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef lseek
+ (void) lseek;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_lseek=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_lseek=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_lseek" >&5
+$as_echo "$ac_cv_have_decl_lseek" >&6; }
+if test $ac_cv_have_decl_lseek = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_LSEEK 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_LSEEK 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether malloc is declared" >&5
+$as_echo_n "checking whether malloc is declared... " >&6; }
+if test "${ac_cv_have_decl_malloc+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef malloc
+ (void) malloc;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_malloc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_malloc=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_malloc" >&5
+$as_echo "$ac_cv_have_decl_malloc" >&6; }
+if test $ac_cv_have_decl_malloc = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_MALLOC 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_MALLOC 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether memchr is declared" >&5
+$as_echo_n "checking whether memchr is declared... " >&6; }
+if test "${ac_cv_have_decl_memchr+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef memchr
+ (void) memchr;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_memchr=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_memchr=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_memchr" >&5
+$as_echo "$ac_cv_have_decl_memchr" >&6; }
+if test $ac_cv_have_decl_memchr = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_MEMCHR 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_MEMCHR 0
+_ACEOF
+
+
+fi
+
+
+{ $as_echo "$as_me:$LINENO: checking whether realloc is declared" >&5
+$as_echo_n "checking whether realloc is declared... " >&6; }
+if test "${ac_cv_have_decl_realloc+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef realloc
+ (void) realloc;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_realloc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_realloc=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_realloc" >&5
+$as_echo "$ac_cv_have_decl_realloc" >&6; }
+if test $ac_cv_have_decl_realloc = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_REALLOC 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_REALLOC 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+ headers='
+#include <sys/types.h>
+
+#include <unistd.h>
+
+#if HAVE_GRP_H
+# include <grp.h>
+#endif
+
+#if HAVE_PWD_H
+# include <pwd.h>
+#endif
+'
+ { $as_echo "$as_me:$LINENO: checking whether getgrgid is declared" >&5
+$as_echo_n "checking whether getgrgid is declared... " >&6; }
+if test "${ac_cv_have_decl_getgrgid+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$headers
+
+int
+main ()
+{
+#ifndef getgrgid
+ (void) getgrgid;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getgrgid=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_getgrgid=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getgrgid" >&5
+$as_echo "$ac_cv_have_decl_getgrgid" >&6; }
+if test $ac_cv_have_decl_getgrgid = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETGRGID 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETGRGID 0
+_ACEOF
+
+
+fi
+{ $as_echo "$as_me:$LINENO: checking whether getpwuid is declared" >&5
+$as_echo_n "checking whether getpwuid is declared... " >&6; }
+if test "${ac_cv_have_decl_getpwuid+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$headers
+
+int
+main ()
+{
+#ifndef getpwuid
+ (void) getpwuid;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getpwuid=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_getpwuid=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_getpwuid" >&5
+$as_echo "$ac_cv_have_decl_getpwuid" >&6; }
+if test $ac_cv_have_decl_getpwuid = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETPWUID 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETPWUID 0
+_ACEOF
+
+
+fi
+{ $as_echo "$as_me:$LINENO: checking whether ttyname is declared" >&5
+$as_echo_n "checking whether ttyname is declared... " >&6; }
+if test "${ac_cv_have_decl_ttyname+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$headers
+
+int
+main ()
+{
+#ifndef ttyname
+ (void) ttyname;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_ttyname=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_ttyname=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_ttyname" >&5
+$as_echo "$ac_cv_have_decl_ttyname" >&6; }
+if test $ac_cv_have_decl_ttyname = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_TTYNAME 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_TTYNAME 0
+_ACEOF
+
+
+fi
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether isblank is declared" >&5
+$as_echo_n "checking whether isblank is declared... " >&6; }
+if test "${ac_cv_have_decl_isblank+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+
+int
+main ()
+{
+#ifndef isblank
+ (void) isblank;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_isblank=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_isblank=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_isblank" >&5
+$as_echo "$ac_cv_have_decl_isblank" >&6; }
+if test $ac_cv_have_decl_isblank = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ISBLANK 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ISBLANK 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define PREFER_NONREENTRANT_EUIDACCESS 1
+_ACEOF
+
+
+
+
+ case " $LIBOBJS " in
+ *" euidaccess-stat.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS euidaccess-stat.$ac_objext"
+ ;;
+esac
+
+
+
+
+ case " $LIBOBJS " in
+ *" fd-reopen.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS fd-reopen.$ac_objext"
+ ;;
+esac
+
+
+
+
+ case " $LIBOBJS " in
+ *" xfts.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS xfts.$ac_objext"
+ ;;
+esac
+
+
+ :
+
+
+
+
+
+ case " $LIBOBJS " in
+ *" memxfrm.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS memxfrm.$ac_objext"
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+ case " $LIBOBJS " in
+ *" randint.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS randint.$ac_objext"
+ ;;
+esac
+
+
+
+
+
+
+ case " $LIBOBJS " in
+ *" randperm.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS randperm.$ac_objext"
+ ;;
+esac
+
+
+
+
+ case " $LIBOBJS " in
+ *" randread.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS randread.$ac_objext"
+ ;;
+esac
+
+ case " $LIBOBJS " in
+ *" rand-isaac.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS rand-isaac.$ac_objext"
+ ;;
+esac
+
+
+
+
+ case " $LIBOBJS " in
+ *" sha256.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS sha256.$ac_objext"
+ ;;
+esac
+
+
+
+ :
+
+
+
+ case " $LIBOBJS " in
+ *" sha512.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS sha512.$ac_objext"
+ ;;
+esac
+
+
+
+ :
+
+{ $as_echo "$as_me:$LINENO: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if test "${ac_cv_c_inline+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_inline=$ac_kw
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+
+case $ac_cv_c_inline in
+ inline | yes) ;;
+ *)
+ case $ac_cv_c_inline in
+ no) ac_val=;;
+ *) ac_val=$ac_cv_c_inline;;
+ esac
+ cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+ ;;
+esac
+
+
+
+ case " $LIBOBJS " in
+ *" strintcmp.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS strintcmp.$ac_objext"
+ ;;
+esac
+
+
+
+
+
+
+ case " $LIBOBJS " in
+ *" strnumcmp.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS strnumcmp.$ac_objext"
+ ;;
+esac
+
+
+
+
+
+ # gnulib settings.
+
+
+ # We don't use c-stack.c.
+ # AC_REQUIRE([gl_C_STACK])
+
+ # Invoke macros of modules that may migrate into gnulib.
+ # There's no need to list gnulib modules here, since gnulib-tool
+ # handles that; see ../bootstrap.conf.
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:$LINENO: checking for _LARGEFILE_SOURCE value needed for large files" >&5
+$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
+if test "${ac_cv_sys_largefile_source+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h> /* for off_t */
+ #include <stdio.h>
+int
+main ()
+{
+int (*fp) (FILE *, off_t, int) = fseeko;
+ return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_sys_largefile_source=no; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#define _LARGEFILE_SOURCE 1
+#include <sys/types.h> /* for off_t */
+ #include <stdio.h>
+int
+main ()
+{
+int (*fp) (FILE *, off_t, int) = fseeko;
+ return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_sys_largefile_source=1; break
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_cv_sys_largefile_source=unknown
+ break
+done
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_source" >&5
+$as_echo "$ac_cv_sys_largefile_source" >&6; }
+case $ac_cv_sys_largefile_source in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source
+_ACEOF
+;;
+esac
+rm -f conftest*
+
+# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
+# in glibc 2.1.3, but that breaks too many other things.
+# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
+if test $ac_cv_sys_largefile_source != unknown; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_FSEEKO 1
+_ACEOF
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GNU_PACKAGE="GNU $PACKAGE"
+
+cat >>confdefs.h <<_ACEOF
+#define GNU_PACKAGE "$GNU_PACKAGE"
+_ACEOF
+
+
+
+
+HELP2MAN=${HELP2MAN-"${am_missing_run}help2man"}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for struct stat.st_author" >&5
+$as_echo_n "checking for struct stat.st_author... " >&6; }
+if test "${ac_cv_member_struct_stat_st_author+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <sys/stat.h>
+
+
+int
+main ()
+{
+static struct stat ac_aggr;
+if (ac_aggr.st_author)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_stat_st_author=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <sys/stat.h>
+
+
+int
+main ()
+{
+static struct stat ac_aggr;
+if (sizeof ac_aggr.st_author)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_stat_st_author=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_stat_st_author=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_author" >&5
+$as_echo "$ac_cv_member_struct_stat_st_author" >&6; }
+if test $ac_cv_member_struct_stat_st_author = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_AUTHOR 1
+_ACEOF
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for ino_t" >&5
+$as_echo_n "checking for ino_t... " >&6; }
+if test "${ac_cv_type_ino_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+typedef ino_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_ino_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_ino_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_ino_t" >&5
+$as_echo "$ac_cv_type_ino_t" >&6; }
+if test $ac_cv_type_ino_t = yes; then
+ :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define ino_t unsigned long int
+_ACEOF
+
+fi
+
+
+ { $as_echo "$as_me:$LINENO: checking for major_t" >&5
+$as_echo_n "checking for major_t... " >&6; }
+if test "${ac_cv_type_major_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+typedef major_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_major_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_major_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_major_t" >&5
+$as_echo "$ac_cv_type_major_t" >&6; }
+if test $ac_cv_type_major_t = yes; then
+ :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define major_t unsigned int
+_ACEOF
+
+fi
+
+ { $as_echo "$as_me:$LINENO: checking for minor_t" >&5
+$as_echo_n "checking for minor_t... " >&6; }
+if test "${ac_cv_type_minor_t+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+typedef minor_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_minor_t=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_minor_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_minor_t" >&5
+$as_echo "$ac_cv_type_minor_t" >&6; }
+if test $ac_cv_type_minor_t = yes; then
+ :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define minor_t unsigned int
+_ACEOF
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+ # By default, argmatch should fail calling usage (1).
+
+cat >>confdefs.h <<\_ACEOF
+#define ARGMATCH_DIE usage (1)
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define ARGMATCH_DIE_DECL extern void usage ()
+_ACEOF
+
+
+ # used by ls
+
+ # used by shred
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ test $ac_cv_header_sys_param_h = yes &&
+ test $ac_cv_header_sys_mount_h = yes &&
+
+for ac_header in nfs/vfs.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+for ac_header in nfs/nfs_client.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+fi
+
+done
+
+
+ statvfs_includes="\
+$ac_includes_default
+#include <sys/statvfs.h>
+"
+ statfs_includes="\
+$ac_includes_default
+#if HAVE_SYS_VFS_H
+# include <sys/vfs.h>
+#elif HAVE_SYS_MOUNT_H && HAVE_SYS_PARAM_H
+# include <sys/param.h>
+# include <sys/mount.h>
+# if HAVE_NETINET_IN_H && HAVE_NFS_NFS_CLNT_H && HAVE_NFS_VFS_H
+# include <netinet/in.h>
+# include <nfs/nfs_clnt.h>
+# include <nfs/vfs.h>
+# endif
+#elif HAVE_OS_H
+# include <fs_info.h>
+#endif
+"
+ if test "$fu_cv_sys_stat_statvfs" = yes &&
+ { { $as_echo "$as_me:$LINENO: checking for struct statvfs.f_basetype" >&5
+$as_echo_n "checking for struct statvfs.f_basetype... " >&6; }
+if test "${ac_cv_member_struct_statvfs_f_basetype+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$statvfs_includes
+
+int
+main ()
+{
+static struct statvfs ac_aggr;
+if (ac_aggr.f_basetype)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_statvfs_f_basetype=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$statvfs_includes
+
+int
+main ()
+{
+static struct statvfs ac_aggr;
+if (sizeof ac_aggr.f_basetype)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_statvfs_f_basetype=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_statvfs_f_basetype=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_statvfs_f_basetype" >&5
+$as_echo "$ac_cv_member_struct_statvfs_f_basetype" >&6; }
+if test $ac_cv_member_struct_statvfs_f_basetype = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATVFS_F_BASETYPE 1
+_ACEOF
+
+
+fi
+
+ test $ac_cv_member_struct_statvfs_f_basetype = yes ||
+ { { $as_echo "$as_me:$LINENO: checking for struct statvfs.f_fstypename" >&5
+$as_echo_n "checking for struct statvfs.f_fstypename... " >&6; }
+if test "${ac_cv_member_struct_statvfs_f_fstypename+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$statvfs_includes
+
+int
+main ()
+{
+static struct statvfs ac_aggr;
+if (ac_aggr.f_fstypename)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_statvfs_f_fstypename=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$statvfs_includes
+
+int
+main ()
+{
+static struct statvfs ac_aggr;
+if (sizeof ac_aggr.f_fstypename)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_statvfs_f_fstypename=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_statvfs_f_fstypename=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_statvfs_f_fstypename" >&5
+$as_echo "$ac_cv_member_struct_statvfs_f_fstypename" >&6; }
+if test $ac_cv_member_struct_statvfs_f_fstypename = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATVFS_F_FSTYPENAME 1
+_ACEOF
+
+
+fi
+
+ test $ac_cv_member_struct_statvfs_f_fstypename = yes ||
+ { test $ac_cv_member_struct_statfs_f_fstypename != yes &&
+ { { $as_echo "$as_me:$LINENO: checking for struct statvfs.f_type" >&5
+$as_echo_n "checking for struct statvfs.f_type... " >&6; }
+if test "${ac_cv_member_struct_statvfs_f_type+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$statvfs_includes
+
+int
+main ()
+{
+static struct statvfs ac_aggr;
+if (ac_aggr.f_type)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_statvfs_f_type=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$statvfs_includes
+
+int
+main ()
+{
+static struct statvfs ac_aggr;
+if (sizeof ac_aggr.f_type)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_statvfs_f_type=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_statvfs_f_type=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_statvfs_f_type" >&5
+$as_echo "$ac_cv_member_struct_statvfs_f_type" >&6; }
+if test $ac_cv_member_struct_statvfs_f_type = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATVFS_F_TYPE 1
+_ACEOF
+
+
+fi
+
+ test $ac_cv_member_struct_statvfs_f_type = yes; }; }; }; }
+ then
+ { $as_echo "$as_me:$LINENO: checking for struct statvfs.f_namemax" >&5
+$as_echo_n "checking for struct statvfs.f_namemax... " >&6; }
+if test "${ac_cv_member_struct_statvfs_f_namemax+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$statvfs_includes
+
+int
+main ()
+{
+static struct statvfs ac_aggr;
+if (ac_aggr.f_namemax)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_statvfs_f_namemax=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$statvfs_includes
+
+int
+main ()
+{
+static struct statvfs ac_aggr;
+if (sizeof ac_aggr.f_namemax)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_statvfs_f_namemax=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_statvfs_f_namemax=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_statvfs_f_namemax" >&5
+$as_echo "$ac_cv_member_struct_statvfs_f_namemax" >&6; }
+if test $ac_cv_member_struct_statvfs_f_namemax = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATVFS_F_NAMEMAX 1
+_ACEOF
+
+
+fi
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$statvfs_includes
+int
+main ()
+{
+static statvfs s;
+ return (s.s_fsid ^ 0) == 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STRUCT_STATVFS_F_FSID_IS_INTEGER 1
+_ACEOF
+
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ else
+ { $as_echo "$as_me:$LINENO: checking for struct statfs.f_namelen" >&5
+$as_echo_n "checking for struct statfs.f_namelen... " >&6; }
+if test "${ac_cv_member_struct_statfs_f_namelen+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$statfs_includes
+
+int
+main ()
+{
+static struct statfs ac_aggr;
+if (ac_aggr.f_namelen)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_statfs_f_namelen=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$statfs_includes
+
+int
+main ()
+{
+static struct statfs ac_aggr;
+if (sizeof ac_aggr.f_namelen)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_statfs_f_namelen=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_statfs_f_namelen=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_statfs_f_namelen" >&5
+$as_echo "$ac_cv_member_struct_statfs_f_namelen" >&6; }
+if test $ac_cv_member_struct_statfs_f_namelen = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATFS_F_NAMELEN 1
+_ACEOF
+
+
+fi
+{ $as_echo "$as_me:$LINENO: checking for struct statfs.f_type" >&5
+$as_echo_n "checking for struct statfs.f_type... " >&6; }
+if test "${ac_cv_member_struct_statfs_f_type+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$statfs_includes
+
+int
+main ()
+{
+static struct statfs ac_aggr;
+if (ac_aggr.f_type)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_statfs_f_type=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$statfs_includes
+
+int
+main ()
+{
+static struct statfs ac_aggr;
+if (sizeof ac_aggr.f_type)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_statfs_f_type=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_statfs_f_type=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_statfs_f_type" >&5
+$as_echo "$ac_cv_member_struct_statfs_f_type" >&6; }
+if test $ac_cv_member_struct_statfs_f_type = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATFS_F_TYPE 1
+_ACEOF
+
+
+fi
+
+ if test $ac_cv_header_OS_h != yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$statfs_includes
+int
+main ()
+{
+static statfs s;
+ return (s.s_fsid ^ 0) == 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STRUCT_STATFS_F_FSID_IS_INTEGER 1
+_ACEOF
+
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ fi
+
+
+ # for dd.c and shred.c
+ coreutils_saved_libs=$LIBS
+ { $as_echo "$as_me:$LINENO: checking for library containing fdatasync" >&5
+$as_echo_n "checking for library containing fdatasync... " >&6; }
+if test "${ac_cv_search_fdatasync+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char fdatasync ();
+int
+main ()
+{
+return fdatasync ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' rt posix4; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_search_fdatasync=$ac_res
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext
+ if test "${ac_cv_search_fdatasync+set}" = set; then
+ break
+fi
+done
+if test "${ac_cv_search_fdatasync+set}" = set; then
+ :
+else
+ ac_cv_search_fdatasync=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_fdatasync" >&5
+$as_echo "$ac_cv_search_fdatasync" >&6; }
+ac_res=$ac_cv_search_fdatasync
+if test "$ac_res" != no; then
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+ test "$ac_cv_search_fdatasync" = "none required" ||
+ LIB_FDATASYNC=$ac_cv_search_fdatasync
+fi
+
+
+
+for ac_func in fdatasync
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ LIBS=$coreutils_saved_libs
+
+ # See if linking `seq' requires -lm.
+ # It does on nearly every system. The single exception (so far) is
+ # BeOS which has all the math functions in the normal runtime library
+ # and doesn't have a separate math library.
+
+
+ ac_seq_body='
+ static double x, y;
+ x = floor (x);
+ x = rint (x);
+ x = modf (x, &y);'
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+$ac_seq_body
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ :
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_seq_save_LIBS="$LIBS"
+ LIBS="$LIBS -lm"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+$ac_seq_body
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ SEQ_LIBM=-lm
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$ac_seq_save_LIBS"
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+
+
+
+ # Build df only if there's a point to it.
+ if test $gl_cv_list_mounted_fs = yes && test $gl_cv_fs_space = yes; then
+ DF_PROG='df$(EXEEXT)'
+ fi
+
+
+
+for ac_header in vfork.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_func in fork vfork
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+if test "x$ac_cv_func_fork" = xyes; then
+ { $as_echo "$as_me:$LINENO: checking for working fork" >&5
+$as_echo_n "checking for working fork... " >&6; }
+if test "${ac_cv_func_fork_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_fork_works=cross
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+ /* By Ruediger Kuhlmann. */
+ return fork () < 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_fork_works=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_fork_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_fork_works" >&5
+$as_echo "$ac_cv_func_fork_works" >&6; }
+
+else
+ ac_cv_func_fork_works=$ac_cv_func_fork
+fi
+if test "x$ac_cv_func_fork_works" = xcross; then
+ case $host in
+ *-*-amigaos* | *-*-msdosdjgpp*)
+ # Override, as these systems have only a dummy fork() stub
+ ac_cv_func_fork_works=no
+ ;;
+ *)
+ ac_cv_func_fork_works=yes
+ ;;
+ esac
+ { $as_echo "$as_me:$LINENO: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5
+$as_echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;}
+fi
+ac_cv_func_vfork_works=$ac_cv_func_vfork
+if test "x$ac_cv_func_vfork" = xyes; then
+ { $as_echo "$as_me:$LINENO: checking for working vfork" >&5
+$as_echo_n "checking for working vfork... " >&6; }
+if test "${ac_cv_func_vfork_works+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_vfork_works=cross
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Thanks to Paul Eggert for this test. */
+$ac_includes_default
+#include <sys/wait.h>
+#ifdef HAVE_VFORK_H
+# include <vfork.h>
+#endif
+/* On some sparc systems, changes by the child to local and incoming
+ argument registers are propagated back to the parent. The compiler
+ is told about this with #include <vfork.h>, but some compilers
+ (e.g. gcc -O) don't grok <vfork.h>. Test for this by using a
+ static variable whose address is put into a register that is
+ clobbered by the vfork. */
+static void
+#ifdef __cplusplus
+sparc_address_test (int arg)
+# else
+sparc_address_test (arg) int arg;
+#endif
+{
+ static pid_t child;
+ if (!child) {
+ child = vfork ();
+ if (child < 0) {
+ perror ("vfork");
+ _exit(2);
+ }
+ if (!child) {
+ arg = getpid();
+ write(-1, "", 0);
+ _exit (arg);
+ }
+ }
+}
+
+int
+main ()
+{
+ pid_t parent = getpid ();
+ pid_t child;
+
+ sparc_address_test (0);
+
+ child = vfork ();
+
+ if (child == 0) {
+ /* Here is another test for sparc vfork register problems. This
+ test uses lots of local variables, at least as many local
+ variables as main has allocated so far including compiler
+ temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris
+ 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should
+ reuse the register of parent for one of the local variables,
+ since it will think that parent can't possibly be used any more
+ in this routine. Assigning to the local variable will thus
+ munge parent in the parent process. */
+ pid_t
+ p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(),
+ p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid();
+ /* Convince the compiler that p..p7 are live; otherwise, it might
+ use the same hardware register for all 8 local variables. */
+ if (p != p1 || p != p2 || p != p3 || p != p4
+ || p != p5 || p != p6 || p != p7)
+ _exit(1);
+
+ /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent
+ from child file descriptors. If the child closes a descriptor
+ before it execs or exits, this munges the parent's descriptor
+ as well. Test for this by closing stdout in the child. */
+ _exit(close(fileno(stdout)) != 0);
+ } else {
+ int status;
+ struct stat st;
+
+ while (wait(&status) != child)
+ ;
+ return (
+ /* Was there some problem with vforking? */
+ child < 0
+
+ /* Did the child fail? (This shouldn't happen.) */
+ || status
+
+ /* Did the vfork/compiler bug occur? */
+ || parent != getpid()
+
+ /* Did the file descriptor bug occur? */
+ || fstat(fileno(stdout), &st) != 0
+ );
+ }
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_vfork_works=yes
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_vfork_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_vfork_works" >&5
+$as_echo "$ac_cv_func_vfork_works" >&6; }
+
+fi;
+if test "x$ac_cv_func_fork_works" = xcross; then
+ ac_cv_func_vfork_works=$ac_cv_func_vfork
+ { $as_echo "$as_me:$LINENO: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5
+$as_echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;}
+fi
+
+if test "x$ac_cv_func_vfork_works" = xyes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_WORKING_VFORK 1
+_ACEOF
+
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define vfork fork
+_ACEOF
+
+fi
+if test "x$ac_cv_func_fork_works" = xyes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_WORKING_FORK 1
+_ACEOF
+
+fi
+
+
+
+for ac_func in uname
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+ OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS uname\$(EXEEXT)"
+ MAN="$MAN uname.1"
+fi
+done
+
+
+for ac_func in chroot
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+ OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS chroot\$(EXEEXT)"
+ MAN="$MAN chroot.1"
+fi
+done
+
+
+for ac_func in gethostid
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+ OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS hostid\$(EXEEXT)"
+ MAN="$MAN hostid.1"
+fi
+done
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether use of struct winsize requires sys/ptem.h" >&5
+$as_echo_n "checking whether use of struct winsize requires sys/ptem.h... " >&6; }
+if test "${jm_cv_sys_struct_winsize_needs_sys_ptem_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ jm_cv_sys_struct_winsize_needs_sys_ptem_h=yes
+ if test $ac_cv_sys_posix_termios = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <termios.h>
+int
+main ()
+{
+struct winsize x;
+ if (sizeof x > 0) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ jm_cv_sys_struct_winsize_needs_sys_ptem_h=no
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $jm_cv_sys_struct_winsize_needs_sys_ptem_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/ptem.h>
+int
+main ()
+{
+struct winsize x;
+ if (sizeof x > 0) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ :
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ jm_cv_sys_struct_winsize_needs_sys_ptem_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $jm_cv_sys_struct_winsize_needs_sys_ptem_h" >&5
+$as_echo "$jm_cv_sys_struct_winsize_needs_sys_ptem_h" >&6; }
+ if test $jm_cv_sys_struct_winsize_needs_sys_ptem_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define WINSIZE_IN_PTEM 1
+_ACEOF
+
+ fi
+
+{ $as_echo "$as_me:$LINENO: checking whether localtime caches TZ" >&5
+$as_echo_n "checking whether localtime caches TZ... " >&6; }
+if test "${utils_cv_localtime_cache+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ if test x$ac_cv_func_tzset = xyes; then
+if test "$cross_compiling" = yes; then
+ # If we have tzset, assume the worst when cross-compiling.
+utils_cv_localtime_cache=yes
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <time.h>
+#if STDC_HEADERS
+# include <stdlib.h>
+#endif
+extern char **environ;
+void unset_TZ (void)
+{
+ char **from, **to;
+ for (to = from = environ; (*to = *from); from++)
+ if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
+ to++;
+}
+int main()
+{
+ time_t now = time ((time_t *) 0);
+ int hour_GMT0, hour_unset;
+ if (putenv ("TZ=GMT0") != 0)
+ exit (1);
+ hour_GMT0 = localtime (&now)->tm_hour;
+ unset_TZ ();
+ hour_unset = localtime (&now)->tm_hour;
+ if (putenv ("TZ=PST8") != 0)
+ exit (1);
+ if (localtime (&now)->tm_hour == hour_GMT0)
+ exit (1);
+ unset_TZ ();
+ if (localtime (&now)->tm_hour != hour_unset)
+ exit (1);
+ exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ utils_cv_localtime_cache=no
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+utils_cv_localtime_cache=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+else
+ # If we lack tzset, report that localtime does not cache TZ,
+ # since we can't invalidate the cache if we don't have tzset.
+ utils_cv_localtime_cache=no
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $utils_cv_localtime_cache" >&5
+$as_echo "$utils_cv_localtime_cache" >&6; }
+if test $utils_cv_localtime_cache = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define LOCALTIME_CACHE 1
+_ACEOF
+
+fi
+
+# SCO-ODT-3.0 is reported to need -los to link programs using initgroups
+
+for ac_func in initgroups
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+if test $ac_cv_func_initgroups = no; then
+
+{ $as_echo "$as_me:$LINENO: checking for initgroups in -los" >&5
+$as_echo_n "checking for initgroups in -los... " >&6; }
+if test "${ac_cv_lib_os_initgroups+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-los $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char initgroups ();
+int
+main ()
+{
+return initgroups ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_os_initgroups=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_os_initgroups=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_os_initgroups" >&5
+$as_echo "$ac_cv_lib_os_initgroups" >&6; }
+if test $ac_cv_lib_os_initgroups = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBOS 1
+_ACEOF
+
+ LIBS="-los $LIBS"
+
+fi
+
+fi
+
+
+for ac_func in syslog
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+if test $ac_cv_func_syslog = no; then
+ # syslog is not in the default libraries. See if it's in some other.
+ for lib in bsd socket inet; do
+ as_ac_Lib=`$as_echo "ac_cv_lib_$lib''_syslog" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for syslog in -l$lib" >&5
+$as_echo_n "checking for syslog in -l$lib... " >&6; }
+if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-l$lib $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char syslog ();
+int
+main ()
+{
+return syslog ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_Lib=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_Lib=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+ac_res=`eval 'as_val=${'$as_ac_Lib'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_Lib'}
+ $as_echo "$as_val"'` = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SYSLOG 1
+_ACEOF
+
+ LIBS="$LIBS -l$lib"; break
+fi
+
+ done
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for 3-argument setpriority function" >&5
+$as_echo_n "checking for 3-argument setpriority function... " >&6; }
+if test "${utils_cv_func_setpriority+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/time.h>
+ #include <sys/resource.h>
+
+int
+main ()
+{
+setpriority (0, 0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ utils_cv_func_setpriority=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ utils_cv_func_setpriority=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $utils_cv_func_setpriority" >&5
+$as_echo "$utils_cv_func_setpriority" >&6; }
+if test $utils_cv_func_setpriority = no; then
+
+for ac_func in nice
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+fi
+case $utils_cv_func_setpriority,$ac_cv_func_nice in
+*yes*)
+ OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS nice\$(EXEEXT)"
+ MAN="$MAN nice.1";;
+esac
+
+
+
+
+ if test $ac_cv_header_utmp_h = yes || test $ac_cv_header_utmpx_h = yes; then
+ OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS pinky\$(EXEEXT)"
+ OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS users\$(EXEEXT)"
+ OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS who\$(EXEEXT)"
+ MAN="$MAN pinky.1 users.1 who.1"
+ fi
+
+
+{ $as_echo "$as_me:$LINENO: checking ut_host in struct utmp" >&5
+$as_echo_n "checking ut_host in struct utmp... " >&6; }
+if test "${su_cv_func_ut_host_in_utmp+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <utmp.h>
+int
+main ()
+{
+struct utmp ut; return !sizeof ut.ut_host;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ su_cv_func_ut_host_in_utmp=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ su_cv_func_ut_host_in_utmp=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+
+{ $as_echo "$as_me:$LINENO: result: $su_cv_func_ut_host_in_utmp" >&5
+$as_echo "$su_cv_func_ut_host_in_utmp" >&6; }
+if test $su_cv_func_ut_host_in_utmp = yes; then
+ have_ut_host=1
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_UT_HOST 1
+_ACEOF
+
+fi
+
+if test -z "$have_ut_host"; then
+ { $as_echo "$as_me:$LINENO: checking ut_host in struct utmpx" >&5
+$as_echo_n "checking ut_host in struct utmpx... " >&6; }
+ if test "${su_cv_func_ut_host_in_utmpx+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <utmpx.h>
+int
+main ()
+{
+struct utmpx ut; return !sizeof ut.ut_host;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ su_cv_func_ut_host_in_utmpx=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ su_cv_func_ut_host_in_utmpx=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $su_cv_func_ut_host_in_utmpx" >&5
+$as_echo "$su_cv_func_ut_host_in_utmpx" >&6; }
+ if test $su_cv_func_ut_host_in_utmpx = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_UTMPX_H 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_UT_HOST 1
+_ACEOF
+
+ fi
+fi
+
+
+
+for ac_func in sysctl
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+
+
+
+
+for ac_header in sys/sysctl.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+ #if HAVE_SYS_PARAM_H
+ #include <sys/param.h>
+ #endif
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether we can get the system boot time" >&5
+$as_echo_n "checking whether we can get the system boot time... " >&6; }
+if test "${gnulib_cv_have_boot_time+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#if HAVE_SYSCTL && HAVE_SYS_SYSCTL_H
+# if HAVE_SYS_PARAM_H
+# include <sys/param.h> /* needed for OpenBSD 3.0 */
+# endif
+# include <sys/sysctl.h>
+#endif
+#if HAVE_UTMPX_H
+# include <utmpx.h>
+#elif HAVE_UTMP_H
+# include <utmp.h>
+#endif
+#if HAVE_OS_H
+# include <OS.h>
+#endif
+
+int
+main ()
+{
+
+#if defined BOOT_TIME || (defined CTL_KERN && defined KERN_BOOTTIME) || HAVE_OS_H
+/* your system *does* have the infrastructure to determine boot time */
+#else
+please_tell_us_how_to_determine_boot_time_on_your_system
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gnulib_cv_have_boot_time=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gnulib_cv_have_boot_time=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $gnulib_cv_have_boot_time" >&5
+$as_echo "$gnulib_cv_have_boot_time" >&6; }
+ if test $gnulib_cv_have_boot_time = yes; then
+ OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS uptime\$(EXEEXT)"
+ MAN="$MAN uptime.1"
+fi
+
+
+
+{ $as_echo "$as_me:$LINENO: checking POSIX termios" >&5
+$as_echo_n "checking POSIX termios... " >&6; }
+if test "${ac_cv_sys_posix_termios+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <unistd.h>
+#include <termios.h>
+
+int
+main ()
+{
+/* SunOS 4.0.3 has termios.h but not the library calls. */
+ tcgetattr(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_sys_posix_termios=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_sys_posix_termios=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_posix_termios" >&5
+$as_echo "$ac_cv_sys_posix_termios" >&6; }
+
+
+ { $as_echo "$as_me:$LINENO: checking whether use of TIOCGWINSZ requires sys/ioctl.h" >&5
+$as_echo_n "checking whether use of TIOCGWINSZ requires sys/ioctl.h... " >&6; }
+if test "${jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h=no
+
+ if test $jm_cv_sys_tiocgwinsz_needs_termios_h = no; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+# include <sys/ioctl.h>
+# ifdef TIOCGWINSZ
+ yes
+# endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+ jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h=yes
+fi
+rm -f conftest*
+
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h" >&5
+$as_echo "$jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h" >&6; }
+ if test $jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define GWINSZ_IN_SYS_IOCTL 1
+_ACEOF
+
+ fi
+
+
+if test $ac_cv_sys_posix_termios = yes; then
+ OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS stty\$(EXEEXT)" MAN="$MAN stty.1"
+
+ { $as_echo "$as_me:$LINENO: checking whether termios.h needs _XOPEN_SOURCE" >&5
+$as_echo_n "checking whether termios.h needs _XOPEN_SOURCE... " >&6; }
+ if test "${su_cv_sys_termios_needs_xopen_source+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <termios.h>
+#ifdef IUCLC
+yes
+#endif
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+ su_cv_sys_termios_needs_xopen_source=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#define _XOPEN_SOURCE
+#include <termios.h>
+#ifdef IUCLC
+yes
+#endif
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+ su_cv_sys_termios_needs_xopen_source=yes
+else
+ su_cv_sys_termios_needs_xopen_source=no
+fi
+rm -f conftest*
+
+fi
+rm -f conftest*
+
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $su_cv_sys_termios_needs_xopen_source" >&5
+$as_echo "$su_cv_sys_termios_needs_xopen_source" >&6; }
+ test $su_cv_sys_termios_needs_xopen_source = yes &&
+
+cat >>confdefs.h <<\_ACEOF
+#define TERMIOS_NEEDS_XOPEN_SOURCE 1
+_ACEOF
+
+
+ { $as_echo "$as_me:$LINENO: checking c_line in struct termios" >&5
+$as_echo_n "checking c_line in struct termios... " >&6; }
+ if test "${su_cv_sys_c_line_in_termios+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#if TERMIOS_NEEDS_XOPEN_SOURCE
+#define _XOPEN_SOURCE
+#endif
+#include <sys/types.h>
+#include <termios.h>
+int
+main ()
+{
+struct termios t; return !sizeof t.c_line;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ su_cv_sys_c_line_in_termios=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ su_cv_sys_c_line_in_termios=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $su_cv_sys_c_line_in_termios" >&5
+$as_echo "$su_cv_sys_c_line_in_termios" >&6; }
+ test $su_cv_sys_c_line_in_termios = yes \
+ &&
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_C_LINE 1
+_ACEOF
+
+fi
+
+# FIXME: note that this macro appears above, too.
+# I'm leaving it here for now. This whole thing needs to be modernized...
+
+ { $as_echo "$as_me:$LINENO: checking whether use of struct winsize requires sys/ptem.h" >&5
+$as_echo_n "checking whether use of struct winsize requires sys/ptem.h... " >&6; }
+if test "${jm_cv_sys_struct_winsize_needs_sys_ptem_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ jm_cv_sys_struct_winsize_needs_sys_ptem_h=yes
+ if test $ac_cv_sys_posix_termios = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <termios.h>
+int
+main ()
+{
+struct winsize x;
+ if (sizeof x > 0) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ jm_cv_sys_struct_winsize_needs_sys_ptem_h=no
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $jm_cv_sys_struct_winsize_needs_sys_ptem_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/ptem.h>
+int
+main ()
+{
+struct winsize x;
+ if (sizeof x > 0) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ :
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ jm_cv_sys_struct_winsize_needs_sys_ptem_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $jm_cv_sys_struct_winsize_needs_sys_ptem_h" >&5
+$as_echo "$jm_cv_sys_struct_winsize_needs_sys_ptem_h" >&6; }
+ if test $jm_cv_sys_struct_winsize_needs_sys_ptem_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define WINSIZE_IN_PTEM 1
+_ACEOF
+
+ fi
+
+
+ { $as_echo "$as_me:$LINENO: checking whether use of TIOCGWINSZ requires termios.h" >&5
+$as_echo_n "checking whether use of TIOCGWINSZ requires termios.h... " >&6; }
+if test "${jm_cv_sys_tiocgwinsz_needs_termios_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ jm_cv_sys_tiocgwinsz_needs_termios_h=no
+
+ if test $ac_cv_sys_posix_termios = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+# include <termios.h>
+# ifdef TIOCGWINSZ
+ yes
+# endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+ jm_cv_sys_tiocgwinsz_needs_termios_h=yes
+fi
+rm -f conftest*
+
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $jm_cv_sys_tiocgwinsz_needs_termios_h" >&5
+$as_echo "$jm_cv_sys_tiocgwinsz_needs_termios_h" >&6; }
+
+
+if test $jm_cv_sys_tiocgwinsz_needs_termios_h = no && \
+ test $jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h = no; then
+ { $as_echo "$as_me:$LINENO: checking TIOCGWINSZ in sys/pty.h" >&5
+$as_echo_n "checking TIOCGWINSZ in sys/pty.h... " >&6; }
+ if test "${su_cv_sys_tiocgwinsz_in_sys_pty_h+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#ifdef WINSIZE_IN_PTEM
+# include <sys/stream.h>
+# include <sys/ptem.h>
+#endif
+#include <sys/ioctl.h>
+#include <sys/tty.h>
+#include <sys/pty.h>
+int
+main ()
+{
+int x = TIOCGWINSZ;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ su_cv_sys_tiocgwinsz_in_sys_pty_h=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ su_cv_sys_tiocgwinsz_in_sys_pty_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $su_cv_sys_tiocgwinsz_in_sys_pty_h" >&5
+$as_echo "$su_cv_sys_tiocgwinsz_in_sys_pty_h" >&6; }
+
+ test $su_cv_sys_tiocgwinsz_in_sys_pty_h = yes \
+ &&
+cat >>confdefs.h <<\_ACEOF
+#define GWINSZ_IN_SYS_PTY 1
+_ACEOF
+
+fi
+
+# For src/kill.c.
+{ $as_echo "$as_me:$LINENO: checking whether strsignal is declared" >&5
+$as_echo_n "checking whether strsignal is declared... " >&6; }
+if test "${ac_cv_have_decl_strsignal+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <signal.h>
+
+int
+main ()
+{
+#ifndef strsignal
+ (void) strsignal;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strsignal=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_strsignal=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strsignal" >&5
+$as_echo "$ac_cv_have_decl_strsignal" >&6; }
+if test $ac_cv_have_decl_strsignal = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRSIGNAL 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRSIGNAL 0
+_ACEOF
+
+
+fi
+{ $as_echo "$as_me:$LINENO: checking whether sys_siglist is declared" >&5
+$as_echo_n "checking whether sys_siglist is declared... " >&6; }
+if test "${ac_cv_have_decl_sys_siglist+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <signal.h>
+
+int
+main ()
+{
+#ifndef sys_siglist
+ (void) sys_siglist;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_sys_siglist=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_sys_siglist=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_sys_siglist" >&5
+$as_echo "$ac_cv_have_decl_sys_siglist" >&6; }
+if test $ac_cv_have_decl_sys_siglist = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_SYS_SIGLIST 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_SYS_SIGLIST 0
+_ACEOF
+
+
+fi
+{ $as_echo "$as_me:$LINENO: checking whether _sys_siglist is declared" >&5
+$as_echo_n "checking whether _sys_siglist is declared... " >&6; }
+if test "${ac_cv_have_decl__sys_siglist+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <signal.h>
+
+int
+main ()
+{
+#ifndef _sys_siglist
+ (void) _sys_siglist;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl__sys_siglist=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl__sys_siglist=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl__sys_siglist" >&5
+$as_echo "$ac_cv_have_decl__sys_siglist" >&6; }
+if test $ac_cv_have_decl__sys_siglist = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL__SYS_SIGLIST 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL__SYS_SIGLIST 0
+_ACEOF
+
+
+fi
+{ $as_echo "$as_me:$LINENO: checking whether __sys_siglist is declared" >&5
+$as_echo_n "checking whether __sys_siglist is declared... " >&6; }
+if test "${ac_cv_have_decl___sys_siglist+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <signal.h>
+
+int
+main ()
+{
+#ifndef __sys_siglist
+ (void) __sys_siglist;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl___sys_siglist=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl___sys_siglist=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl___sys_siglist" >&5
+$as_echo "$ac_cv_have_decl___sys_siglist" >&6; }
+if test $ac_cv_have_decl___sys_siglist = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL___SYS_SIGLIST 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL___SYS_SIGLIST 0
+_ACEOF
+
+
+fi
+
+
+
+# For src/kill.c and src/printf.c.
+{ $as_echo "$as_me:$LINENO: checking whether strtoimax is declared" >&5
+$as_echo_n "checking whether strtoimax is declared... " >&6; }
+if test "${ac_cv_have_decl_strtoimax+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strtoimax
+ (void) strtoimax;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strtoimax=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_strtoimax=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtoimax" >&5
+$as_echo "$ac_cv_have_decl_strtoimax" >&6; }
+if test $ac_cv_have_decl_strtoimax = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOIMAX 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOIMAX 0
+_ACEOF
+
+
+fi
+{ $as_echo "$as_me:$LINENO: checking whether strtoumax is declared" >&5
+$as_echo_n "checking whether strtoumax is declared... " >&6; }
+if test "${ac_cv_have_decl_strtoumax+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strtoumax
+ (void) strtoumax;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strtoumax=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_strtoumax=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtoumax" >&5
+$as_echo "$ac_cv_have_decl_strtoumax" >&6; }
+if test $ac_cv_have_decl_strtoumax = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOUMAX 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOUMAX 0
+_ACEOF
+
+
+fi
+
+
+
+
+
+ # Check for libypsec.a on Dolphin M88K machines.
+
+{ $as_echo "$as_me:$LINENO: checking for main in -lypsec" >&5
+$as_echo_n "checking for main in -lypsec... " >&6; }
+if test "${ac_cv_lib_ypsec_main+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lypsec $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+
+int
+main ()
+{
+return main ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_ypsec_main=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_ypsec_main=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ypsec_main" >&5
+$as_echo "$ac_cv_lib_ypsec_main" >&6; }
+if test $ac_cv_lib_ypsec_main = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBYPSEC 1
+_ACEOF
+
+ LIBS="-lypsec $LIBS"
+
+fi
+
+
+ # m88k running dgux 5.4 needs this
+
+{ $as_echo "$as_me:$LINENO: checking for main in -lldgc" >&5
+$as_echo_n "checking for main in -lldgc... " >&6; }
+if test "${ac_cv_lib_ldgc_main+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lldgc $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+
+int
+main ()
+{
+return main ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_ldgc_main=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_ldgc_main=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ldgc_main" >&5
+$as_echo "$ac_cv_lib_ldgc_main" >&6; }
+if test $ac_cv_lib_ldgc_main = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBLDGC 1
+_ACEOF
+
+ LIBS="-lldgc $LIBS"
+
+fi
+
+
+ # The -lsun library is required for YP support on Irix-4.0.5 systems.
+ # m88k/svr3 DolphinOS systems using YP need -lypsec for id.
+ { $as_echo "$as_me:$LINENO: checking for library containing yp_match" >&5
+$as_echo_n "checking for library containing yp_match... " >&6; }
+if test "${ac_cv_search_yp_match+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char yp_match ();
+int
+main ()
+{
+return yp_match ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' sun ypsec; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_search_yp_match=$ac_res
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext
+ if test "${ac_cv_search_yp_match+set}" = set; then
+ break
+fi
+done
+if test "${ac_cv_search_yp_match+set}" = set; then
+ :
+else
+ ac_cv_search_yp_match=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_yp_match" >&5
+$as_echo "$ac_cv_search_yp_match" >&6; }
+ac_res=$ac_cv_search_yp_match
+if test "$ac_res" != no; then
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+
+ # SysV needs -lsec, older versions of Linux need -lshadow for
+ # shadow passwords. UnixWare 7 needs -lgen.
+ { $as_echo "$as_me:$LINENO: checking for library containing getspnam" >&5
+$as_echo_n "checking for library containing getspnam... " >&6; }
+if test "${ac_cv_search_getspnam+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getspnam ();
+int
+main ()
+{
+return getspnam ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' shadow sec gen; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_search_getspnam=$ac_res
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext
+ if test "${ac_cv_search_getspnam+set}" = set; then
+ break
+fi
+done
+if test "${ac_cv_search_getspnam+set}" = set; then
+ :
+else
+ ac_cv_search_getspnam=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_getspnam" >&5
+$as_echo "$ac_cv_search_getspnam" >&6; }
+ac_res=$ac_cv_search_getspnam
+if test "$ac_res" != no; then
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+
+
+for ac_header in shadow.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-coreutils@gnu.org ##
+## ------------------------------------ ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+if test `eval 'as_val=${'$as_ac_Header'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+ # Requirements for su.c.
+ shadow_includes="\
+$ac_includes_default
+#if HAVE_SHADOW_H
+# include <shadow.h>
+#endif
+"
+ { $as_echo "$as_me:$LINENO: checking for struct spwd.sp_pwdp" >&5
+$as_echo_n "checking for struct spwd.sp_pwdp... " >&6; }
+if test "${ac_cv_member_struct_spwd_sp_pwdp+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$shadow_includes
+
+int
+main ()
+{
+static struct spwd ac_aggr;
+if (ac_aggr.sp_pwdp)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_spwd_sp_pwdp=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$shadow_includes
+
+int
+main ()
+{
+static struct spwd ac_aggr;
+if (sizeof ac_aggr.sp_pwdp)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_member_struct_spwd_sp_pwdp=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_member_struct_spwd_sp_pwdp=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_spwd_sp_pwdp" >&5
+$as_echo "$ac_cv_member_struct_spwd_sp_pwdp" >&6; }
+if test $ac_cv_member_struct_spwd_sp_pwdp = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_SPWD_SP_PWDP 1
+_ACEOF
+
+
+fi
+
+
+for ac_func in getspnam
+do
+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+$as_echo_n "checking for $ac_func... " >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if test `eval 'as_val=${'$as_ac_var'}
+ $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+ # SCO-ODT-3.0 is reported to need -lufc for crypt.
+ # NetBSD needs -lcrypt for crypt.
+ cu_saved_libs="$LIBS"
+ { $as_echo "$as_me:$LINENO: checking for library containing crypt" >&5
+$as_echo_n "checking for library containing crypt... " >&6; }
+if test "${ac_cv_search_crypt+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char crypt ();
+int
+main ()
+{
+return crypt ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' ufc crypt; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_search_crypt=$ac_res
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext
+ if test "${ac_cv_search_crypt+set}" = set; then
+ break
+fi
+done
+if test "${ac_cv_search_crypt+set}" = set; then
+ :
+else
+ ac_cv_search_crypt=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_crypt" >&5
+$as_echo "$ac_cv_search_crypt" >&6; }
+ac_res=$ac_cv_search_crypt
+if test "$ac_res" != no; then
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+ test "$ac_cv_search_crypt" = "none required" ||
+ LIB_CRYPT="$ac_cv_search_crypt"
+fi
+
+ LIBS="$cu_saved_libs"
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking whether NLS is requested" >&5
+$as_echo_n "checking whether NLS is requested... " >&6; }
+ # Check whether --enable-nls was given.
+if test "${enable_nls+set}" = set; then
+ enableval=$enable_nls; USE_NLS=$enableval
+else
+ USE_NLS=yes
+fi
+
+ { $as_echo "$as_me:$LINENO: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
+
+
+
+
+
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+ ac_executable_p="test -x"
+else
+ ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_MSGFMT+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ case "$MSGFMT" in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$ac_save_IFS"
+ test -z "$ac_dir" && ac_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+ echo "$as_me: trying $ac_dir/$ac_word..." >&5
+ if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 &&
+ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+ ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext"
+ break 2
+ fi
+ fi
+ done
+ done
+ IFS="$ac_save_IFS"
+ test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":"
+ ;;
+esac
+fi
+MSGFMT="$ac_cv_path_MSGFMT"
+if test "$MSGFMT" != ":"; then
+ { $as_echo "$as_me:$LINENO: result: $MSGFMT" >&5
+$as_echo "$MSGFMT" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_GMSGFMT+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ case $GMSGFMT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+ ;;
+esac
+fi
+GMSGFMT=$ac_cv_path_GMSGFMT
+if test -n "$GMSGFMT"; then
+ { $as_echo "$as_me:$LINENO: result: $GMSGFMT" >&5
+$as_echo "$GMSGFMT" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+ case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+ *) MSGFMT_015=$MSGFMT ;;
+ esac
+
+ case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+ *) GMSGFMT_015=$GMSGFMT ;;
+ esac
+
+
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+ ac_executable_p="test -x"
+else
+ ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_XGETTEXT+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ case "$XGETTEXT" in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$ac_save_IFS"
+ test -z "$ac_dir" && ac_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+ echo "$as_me: trying $ac_dir/$ac_word..." >&5
+ if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 &&
+ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+ ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext"
+ break 2
+ fi
+ fi
+ done
+ done
+ IFS="$ac_save_IFS"
+ test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
+ ;;
+esac
+fi
+XGETTEXT="$ac_cv_path_XGETTEXT"
+if test "$XGETTEXT" != ":"; then
+ { $as_echo "$as_me:$LINENO: result: $XGETTEXT" >&5
+$as_echo "$XGETTEXT" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ rm -f messages.po
+
+ case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+ *) XGETTEXT_015=$XGETTEXT ;;
+ esac
+
+
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+ ac_executable_p="test -x"
+else
+ ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "msgmerge", so it can be a program name with args.
+set dummy msgmerge; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_MSGMERGE+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ case "$MSGMERGE" in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$ac_save_IFS"
+ test -z "$ac_dir" && ac_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+ echo "$as_me: trying $ac_dir/$ac_word..." >&5
+ if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then
+ ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext"
+ break 2
+ fi
+ fi
+ done
+ done
+ IFS="$ac_save_IFS"
+ test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":"
+ ;;
+esac
+fi
+MSGMERGE="$ac_cv_path_MSGMERGE"
+if test "$MSGMERGE" != ":"; then
+ { $as_echo "$as_me:$LINENO: result: $MSGMERGE" >&5
+$as_echo "$MSGMERGE" >&6; }
+else
+ { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$localedir" || localedir='${datadir}/locale'
+
+
+ ac_config_commands="$ac_config_commands po-directories"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5
+$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
+if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <CoreFoundation/CFPreferences.h>
+int
+main ()
+{
+CFPreferencesCopyAppValue(NULL, NULL)
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ gt_cv_func_CFPreferencesCopyAppValue=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_func_CFPreferencesCopyAppValue=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
+$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CFPREFERENCESCOPYAPPVALUE 1
+_ACEOF
+
+ fi
+ { $as_echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5
+$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; }
+if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <CoreFoundation/CFLocale.h>
+int
+main ()
+{
+CFLocaleCopyCurrent();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ gt_cv_func_CFLocaleCopyCurrent=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_func_CFLocaleCopyCurrent=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
+$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
+ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CFLOCALECOPYCURRENT 1
+_ACEOF
+
+ fi
+ INTL_MACOSX_LIBS=
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+ fi
+
+
+
+
+
+
+ LIBINTL=
+ LTLIBINTL=
+ POSUB=
+
+ case " $gt_needs " in
+ *" need-formatstring-macros "*) gt_api_version=3 ;;
+ *" need-ngettext "*) gt_api_version=2 ;;
+ *) gt_api_version=1 ;;
+ esac
+ gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+ gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
+ if test "$USE_NLS" = "yes"; then
+ gt_use_preinstalled_gnugettext=no
+
+
+ if test $gt_api_version -ge 3; then
+ gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+'
+ else
+ gt_revision_test_code=
+ fi
+ if test $gt_api_version -ge 2; then
+ gt_expression_test_code=' + * ngettext ("", "", 0)'
+ else
+ gt_expression_test_code=
+ fi
+
+ { $as_echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5
+$as_echo_n "checking for GNU gettext in libc... " >&6; }
+if { as_var=$gt_func_gnugettext_libc; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;
+int
+main ()
+{
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$gt_func_gnugettext_libc=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$gt_func_gnugettext_libc=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$gt_func_gnugettext_libc'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+
+
+
+
+
+ am_save_CPPFLAGS="$CPPFLAGS"
+
+ for element in $INCICONV; do
+ haveit=
+ for x in $CPPFLAGS; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X$element"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+ fi
+ done
+
+
+ { $as_echo "$as_me:$LINENO: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if test "${am_cv_func_iconv+set}" = set; then
+ $as_echo_n "(cached) " >&6
+else
+
+ am_cv_func_iconv="no, consider installing GNU libiconv"
+ am_cv_lib_iconv=no
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ am_cv_func_iconv=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ if test "$am_cv_func_iconv" != yes; then
+ am_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBICONV"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ am_cv_lib_iconv=yes
+ am_cv_func_iconv=yes
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$am_save_LIBS"
+ fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+ if test "$am_cv_func_iconv" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ICONV 1
+_ACEOF
+
+ fi
+ if test "$am_cv_lib_iconv" = yes; then
+ { $as_echo "$as_me:$LINENO: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+ { $as_echo "$as_me:$LINENO: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
+ else
+ CPPFLAGS="$am_save_CPPFLAGS"
+ LIBICONV=
+ LTLIBICONV=
+ fi
+
+
+
+
+
+
+
+
+ use_additional=yes
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+
+# Check whether --with-libintl-prefix was given.
+if test "${with_libintl_prefix+set}" = set; then
+ withval=$with_libintl_prefix;
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/$acl_libdirstem"
+ fi
+ fi
+
+fi
+
+ LIBINTL=
+ LTLIBINTL=
+ INCINTL=
+ LIBINTL_PREFIX=
+ rpathdirs=
+ ltrpathdirs=
+ names_already_handled=
+ names_next_round='intl '
+ while test -n "$names_next_round"; do
+ names_this_round="$names_next_round"
+ names_next_round=
+ for name in $names_this_round; do
+ already_handled=
+ for n in $names_already_handled; do
+ if test "$n" = "$name"; then
+ already_handled=yes
+ break
+ fi
+ done
+ if test -z "$already_handled"; then
+ names_already_handled="$names_already_handled $name"
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+ eval value=\"\$HAVE_LIB$uppername\"
+ if test -n "$value"; then
+ if test "$value" = yes; then
+ eval value=\"\$LIB$uppername\"
+ test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value"
+ eval value=\"\$LTLIB$uppername\"
+ test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value"
+ else
+ :
+ fi
+ else
+ found_dir=
+ found_la=
+ found_so=
+ found_a=
+ eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
+ if test -n "$acl_shlibext"; then
+ shrext=".$acl_shlibext" # typically: shrext=.so
+ else
+ shrext=
+ fi
+ if test $use_additional = yes; then
+ dir="$additional_libdir"
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ for x in $LDFLAGS $LTLIBINTL; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ case "$x" in
+ -L*)
+ dir=`echo "X$x" | sed -e 's/^X-L//'`
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
+ ;;
+ esac
+ if test "X$found_dir" != "X"; then
+ break
+ fi
+ done
+ fi
+ if test "X$found_dir" != "X"; then
+ LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name"
+ if test "X$found_so" != "X"; then
+ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
+ LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+ else
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $found_dir"
+ fi
+ if test "$acl_hardcode_direct" = yes; then
+ LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+ else
+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+ LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $found_dir"
+ fi
+ else
+ haveit=
+ for x in $LDFLAGS $LIBINTL; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir"
+ fi
+ if test "$acl_hardcode_minus_L" != no; then
+ LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+ else
+ LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
+ fi
+ fi
+ fi
+ fi
+ else
+ if test "X$found_a" != "X"; then
+ LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a"
+ else
+ LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name"
+ fi
+ fi
+ additional_includedir=
+ case "$found_dir" in
+ */$acl_libdirstem | */$acl_libdirstem/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+ LIBINTL_PREFIX="$basedir"
+ additional_includedir="$basedir/include"
+ ;;
+ esac
+ if test "X$additional_includedir" != "X"; then
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ for x in $CPPFLAGS $INCINTL; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ fi
+ if test -n "$found_la"; then
+ save_libdir="$libdir"
+ case "$found_la" in
+ */* | *\\*) . "$found_la" ;;
+ *) . "./$found_la" ;;
+ esac
+ libdir="$save_libdir"
+ for dep in $dependency_libs; do
+ case "$dep" in
+ -L*)
+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+ haveit=
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ haveit=
+ for x in $LDFLAGS $LIBINTL; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir"
+ fi
+ fi
+ haveit=
+ for x in $LDFLAGS $LTLIBINTL; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ ;;
+ -R*)
+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
+ if test "$enable_rpath" != no; then
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $dir"
+ fi
+ fi
+ ;;
+ -l*)
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+ ;;
+ *.la)
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+ ;;
+ *)
+ LIBINTL="${LIBINTL}${LIBINTL:+ }$dep"
+ LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep"
+ ;;
+ esac
+ done
+ fi
+ else
+ LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
+ LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name"
+ fi
+ fi
+ fi
+ done
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n "$acl_hardcode_libdir_separator"; then
+ alldirs=
+ for found_dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+ done
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
+ else
+ for found_dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$found_dir"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
+ done
+ fi
+ fi
+ if test "X$ltrpathdirs" != "X"; then
+ for found_dir in $ltrpathdirs; do
+ LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir"
+ done
+ fi
+
+ { $as_echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5
+$as_echo_n "checking for GNU gettext in libintl... " >&6; }
+if { as_var=$gt_func_gnugettext_libintl; eval "test \"\${$as_var+set}\" = set"; }; then
+ $as_echo_n "(cached) " >&6
+else
+ gt_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $INCINTL"
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBINTL"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+int
+main ()
+{
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$gt_func_gnugettext_libintl=yes"
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$gt_func_gnugettext_libintl=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
+ LIBS="$LIBS $LIBICONV"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+int
+main ()
+{
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ LIBINTL="$LIBINTL $LIBICONV"
+ LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+ eval "$gt_func_gnugettext_libintl=yes"
+
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+ CPPFLAGS="$gt_save_CPPFLAGS"
+ LIBS="$gt_save_LIBS"
+fi
+ac_res=`eval 'as_val=${'$gt_func_gnugettext_libintl'}
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ fi
+
+ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
+ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
+ && test "$PACKAGE" != gettext-runtime \
+ && test "$PACKAGE" != gettext-tools; }; then
+ gt_use_preinstalled_gnugettext=yes
+ else
+ LIBINTL=
+ LTLIBINTL=
+ INCINTL=
+ fi
+
+
+
+ if test -n "$INTL_MACOSX_LIBS"; then
+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
+ LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+ LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+ fi
+ fi
+
+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_NLS 1
+_ACEOF
+
+ else
+ USE_NLS=no
+ fi
+ fi
+
+ { $as_echo "$as_me:$LINENO: checking whether to use NLS" >&5
+$as_echo_n "checking whether to use NLS... " >&6; }
+ { $as_echo "$as_me:$LINENO: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
+ if test "$USE_NLS" = "yes"; then
+ { $as_echo "$as_me:$LINENO: checking where the gettext function comes from" >&5
+$as_echo_n "checking where the gettext function comes from... " >&6; }
+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+ gt_source="external libintl"
+ else
+ gt_source="libc"
+ fi
+ else
+ gt_source="included intl directory"
+ fi
+ { $as_echo "$as_me:$LINENO: result: $gt_source" >&5
+$as_echo "$gt_source" >&6; }
+ fi
+
+ if test "$USE_NLS" = "yes"; then
+
+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+ { $as_echo "$as_me:$LINENO: checking how to link with libintl" >&5
+$as_echo_n "checking how to link with libintl... " >&6; }
+ { $as_echo "$as_me:$LINENO: result: $LIBINTL" >&5
+$as_echo "$LIBINTL" >&6; }
+
+ for element in $INCINTL; do
+ haveit=
+ for x in $CPPFLAGS; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X$element"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+ fi
+ done
+
+ fi
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_GETTEXT 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DCGETTEXT 1
+_ACEOF
+
+ fi
+
+ POSUB=po
+ fi
+
+
+
+ INTLLIBS="$LIBINTL"
+
+
+
+
+
+
+
+
+ac_config_files="$ac_config_files Makefile doc/Makefile lib/Makefile man/Makefile po/Makefile.in src/Makefile tests/Makefile tests/chgrp/Makefile tests/chmod/Makefile tests/chown/Makefile tests/cp/Makefile tests/cut/Makefile tests/dd/Makefile tests/dircolors/Makefile tests/du/Makefile tests/expr/Makefile tests/factor/Makefile tests/fmt/Makefile tests/head/Makefile tests/install/Makefile tests/join/Makefile tests/ln/Makefile tests/ls-2/Makefile tests/ls/Makefile tests/md5sum/Makefile tests/misc/Makefile tests/mkdir/Makefile tests/mv/Makefile tests/od/Makefile tests/pr/Makefile tests/readlink/Makefile tests/rm/Makefile tests/rmdir/Makefile tests/seq/Makefile tests/sha1sum/Makefile tests/shred/Makefile tests/sort/Makefile tests/stty/Makefile tests/sum/Makefile tests/tac/Makefile tests/tail-2/Makefile tests/tail/Makefile tests/tee/Makefile tests/test/Makefile tests/touch/Makefile tests/tr/Makefile tests/tsort/Makefile tests/unexpand/Makefile tests/uniq/Makefile tests/wc/Makefile"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+$as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) $as_unset $ac_var ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ test "x$cache_file" != "x/dev/null" &&
+ { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+ { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then
+ { { $as_echo "$as_me:$LINENO: error: conditional \"GL_COND_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"GL_COND_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+test "X$DEFS" = X-DHAVE_CONFIG_H && DEFS=
+
+ gl_libobjs=
+ gl_ltlibobjs=
+ if test -n "$gl_LIBOBJS"; then
+ # Remove the extension.
+ sed_drop_objext='s/\.o$//;s/\.obj$//'
+ for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+ gl_libobjs="$gl_libobjs $i.$ac_objext"
+ gl_ltlibobjs="$gl_ltlibobjs $i.lo"
+ done
+ fi
+ gl_LIBOBJS=$gl_libobjs
+
+ gl_LTLIBOBJS=$gl_ltlibobjs
+
+
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line after each line using $LINENO; the second 'sed'
+ # does the real work. The second script uses 'N' to pair each
+ # line-number line with the line containing $LINENO, and appends
+ # trailing '-' during substitution so that $LINENO is not a special
+ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # scripts with optimization help from Paolo Bonzini. Blame Lee
+ # E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+ case `echo 'x\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ *) ECHO_C='\c';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir
+fi
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+
+# Save the log message, to keep $[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by GNU coreutils $as_me 6.9, which was
+generated by GNU Autoconf 2.61a. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf@gnu.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+GNU coreutils config.status 6.9
+configured by $0, generated by GNU Autoconf 2.61a,
+ with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2006 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
+ --he | --h)
+ # Conflict between --help and --header
+ { $as_echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; };;
+ --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) { $as_echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+ set X '$SHELL' '$0'$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
+ # from automake < 1.5.
+ eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
+ # Capture the value of LINGUAS because we need it to compute CATALOGS.
+ LINGUAS="${LINGUAS-%UNSET%}"
+
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "lib/config.h") CONFIG_HEADERS="$CONFIG_HEADERS lib/config.h:lib/config.hin" ;;
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+ "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
+ "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;;
+ "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
+ "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+ "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
+ "tests/chgrp/Makefile") CONFIG_FILES="$CONFIG_FILES tests/chgrp/Makefile" ;;
+ "tests/chmod/Makefile") CONFIG_FILES="$CONFIG_FILES tests/chmod/Makefile" ;;
+ "tests/chown/Makefile") CONFIG_FILES="$CONFIG_FILES tests/chown/Makefile" ;;
+ "tests/cp/Makefile") CONFIG_FILES="$CONFIG_FILES tests/cp/Makefile" ;;
+ "tests/cut/Makefile") CONFIG_FILES="$CONFIG_FILES tests/cut/Makefile" ;;
+ "tests/dd/Makefile") CONFIG_FILES="$CONFIG_FILES tests/dd/Makefile" ;;
+ "tests/dircolors/Makefile") CONFIG_FILES="$CONFIG_FILES tests/dircolors/Makefile" ;;
+ "tests/du/Makefile") CONFIG_FILES="$CONFIG_FILES tests/du/Makefile" ;;
+ "tests/expr/Makefile") CONFIG_FILES="$CONFIG_FILES tests/expr/Makefile" ;;
+ "tests/factor/Makefile") CONFIG_FILES="$CONFIG_FILES tests/factor/Makefile" ;;
+ "tests/fmt/Makefile") CONFIG_FILES="$CONFIG_FILES tests/fmt/Makefile" ;;
+ "tests/head/Makefile") CONFIG_FILES="$CONFIG_FILES tests/head/Makefile" ;;
+ "tests/install/Makefile") CONFIG_FILES="$CONFIG_FILES tests/install/Makefile" ;;
+ "tests/join/Makefile") CONFIG_FILES="$CONFIG_FILES tests/join/Makefile" ;;
+ "tests/ln/Makefile") CONFIG_FILES="$CONFIG_FILES tests/ln/Makefile" ;;
+ "tests/ls-2/Makefile") CONFIG_FILES="$CONFIG_FILES tests/ls-2/Makefile" ;;
+ "tests/ls/Makefile") CONFIG_FILES="$CONFIG_FILES tests/ls/Makefile" ;;
+ "tests/md5sum/Makefile") CONFIG_FILES="$CONFIG_FILES tests/md5sum/Makefile" ;;
+ "tests/misc/Makefile") CONFIG_FILES="$CONFIG_FILES tests/misc/Makefile" ;;
+ "tests/mkdir/Makefile") CONFIG_FILES="$CONFIG_FILES tests/mkdir/Makefile" ;;
+ "tests/mv/Makefile") CONFIG_FILES="$CONFIG_FILES tests/mv/Makefile" ;;
+ "tests/od/Makefile") CONFIG_FILES="$CONFIG_FILES tests/od/Makefile" ;;
+ "tests/pr/Makefile") CONFIG_FILES="$CONFIG_FILES tests/pr/Makefile" ;;
+ "tests/readlink/Makefile") CONFIG_FILES="$CONFIG_FILES tests/readlink/Makefile" ;;
+ "tests/rm/Makefile") CONFIG_FILES="$CONFIG_FILES tests/rm/Makefile" ;;
+ "tests/rmdir/Makefile") CONFIG_FILES="$CONFIG_FILES tests/rmdir/Makefile" ;;
+ "tests/seq/Makefile") CONFIG_FILES="$CONFIG_FILES tests/seq/Makefile" ;;
+ "tests/sha1sum/Makefile") CONFIG_FILES="$CONFIG_FILES tests/sha1sum/Makefile" ;;
+ "tests/shred/Makefile") CONFIG_FILES="$CONFIG_FILES tests/shred/Makefile" ;;
+ "tests/sort/Makefile") CONFIG_FILES="$CONFIG_FILES tests/sort/Makefile" ;;
+ "tests/stty/Makefile") CONFIG_FILES="$CONFIG_FILES tests/stty/Makefile" ;;
+ "tests/sum/Makefile") CONFIG_FILES="$CONFIG_FILES tests/sum/Makefile" ;;
+ "tests/tac/Makefile") CONFIG_FILES="$CONFIG_FILES tests/tac/Makefile" ;;
+ "tests/tail-2/Makefile") CONFIG_FILES="$CONFIG_FILES tests/tail-2/Makefile" ;;
+ "tests/tail/Makefile") CONFIG_FILES="$CONFIG_FILES tests/tail/Makefile" ;;
+ "tests/tee/Makefile") CONFIG_FILES="$CONFIG_FILES tests/tee/Makefile" ;;
+ "tests/test/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test/Makefile" ;;
+ "tests/touch/Makefile") CONFIG_FILES="$CONFIG_FILES tests/touch/Makefile" ;;
+ "tests/tr/Makefile") CONFIG_FILES="$CONFIG_FILES tests/tr/Makefile" ;;
+ "tests/tsort/Makefile") CONFIG_FILES="$CONFIG_FILES tests/tsort/Makefile" ;;
+ "tests/unexpand/Makefile") CONFIG_FILES="$CONFIG_FILES tests/unexpand/Makefile" ;;
+ "tests/uniq/Makefile") CONFIG_FILES="$CONFIG_FILES tests/uniq/Makefile" ;;
+ "tests/wc/Makefile") CONFIG_FILES="$CONFIG_FILES tests/wc/Makefile" ;;
+
+ *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp=
+ trap 'exit_status=$?
+ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} ||
+{
+ $as_echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+}
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+echo 'BEGIN {' >"$tmp/subs.awk"
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF"
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/'
+ echo "_ACEOF"
+} >conf$$subs.sh
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh
+
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF
+cat >>"\$tmp/subs.awk" <<\CEOF
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\).*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\).*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^"]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF
+CEOF
+cat >>"\$tmp/subs.awk" <<CEOF
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+CEOF
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[ ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+fi # test -n "$CONFIG_FILES"
+
+
+for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
+$as_echo "$as_me: error: Invalid tag $ac_tag." >&2;}
+ { (exit 1); exit 1; }; };;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+ ac_file_inputs="$ac_file_inputs $ac_f"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:$LINENO: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$tmp/stdin";;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ { as_dir="$ac_dir"
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+
+case `sed -n '/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p
+' $ac_file_inputs` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s&@configure_input@&$configure_input&;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+" $ac_file_inputs | $AWK -f "$tmp/subs.awk" >$tmp/out
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&2;}
+
+ rm -f "$tmp/stdin"
+ case $ac_file in
+ -) cat "$tmp/out"; rm -f "$tmp/out";;
+ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
+ esac
+ ;;
+ :H)
+ #
+ # CONFIG_HEADER
+ #
+_ACEOF
+
+# Transform confdefs.h into a sed script `conftest.defines', that
+# substitutes the proper values into config.h.in to produce config.h.
+rm -f conftest.defines conftest.tail
+# First, append a space to every undef/define line, to ease matching.
+echo 's/$/ /' >conftest.defines
+# Then, protect against being on the right side of a sed subst, or in
+# an unquoted here document, in config.status. If some macros were
+# called several times there might be several #defines for the same
+# symbol, which is useless. But do not sort them, since the last
+# AC_DEFINE must be honored.
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
+# NAME is the cpp macro being defined, VALUE is the value it is being given.
+# PARAMS is the parameter list in the macro definition--in most cases, it's
+# just an empty string.
+ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*'
+ac_dB='\\)[ (].*,\\1define\\2'
+ac_dC=' '
+ac_dD=' ,'
+
+uniq confdefs.h |
+ sed -n '
+ t rset
+ :rset
+ s/^[ ]*#[ ]*define[ ][ ]*//
+ t ok
+ d
+ :ok
+ s/[\\&,]/\\&/g
+ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
+ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
+ ' >>conftest.defines
+
+# Remove the space that was appended to ease matching.
+# Then replace #undef with comments. This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+# (The regexp can be short, since the line contains either #define or #undef.)
+echo 's/ $//
+s,^[ #]*u.*,/* & */,' >>conftest.defines
+
+# Break up conftest.defines:
+ac_max_sed_lines=50
+
+# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1"
+# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2"
+# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1"
+# et cetera.
+ac_in='$ac_file_inputs'
+ac_out='"$tmp/out1"'
+ac_nxt='"$tmp/out2"'
+
+while :
+do
+ # Write a here document:
+ cat >>$CONFIG_STATUS <<_ACEOF
+ # First, check the format of the line:
+ cat >"\$tmp/defines.sed" <<\\CEOF
+/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def
+/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def
+b
+:def
+_ACEOF
+ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
+ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
+ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
+ grep . conftest.tail >/dev/null || break
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+done
+rm -f conftest.defines conftest.tail
+
+echo "ac_result=$ac_in" >>$CONFIG_STATUS
+cat >>$CONFIG_STATUS <<\_ACEOF
+ if test x"$ac_file" != x-; then
+ $as_echo "/* $configure_input */" >"$tmp/config.h"
+ cat "$ac_result" >>"$tmp/config.h"
+ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
+ { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ rm -f $ac_file
+ mv "$tmp/config.h" $ac_file
+ fi
+ else
+ $as_echo "/* $configure_input */"
+ cat "$ac_result"
+ fi
+ rm -f "$tmp/out12"
+# Compute $ac_file's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $ac_file | $ac_file:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $ac_file" >`$as_dirname -- $ac_file ||
+$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X$ac_file : 'X\(//\)[^/]' \| \
+ X$ac_file : 'X\(//\)$' \| \
+ X$ac_file : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X$ac_file |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+ :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then
+ dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ { as_dir=$dirpart/$fdir
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+done
+ ;;
+ "po-directories":C)
+ for ac_file in $CONFIG_FILES; do
+ # Support "outfile[:infile[:infile...]]"
+ case "$ac_file" in
+ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ esac
+ # PO directories have a Makefile.in generated from Makefile.in.in.
+ case "$ac_file" in */Makefile.in)
+ # Adjust a relative srcdir.
+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+ # In autoconf-2.13 it is called $ac_given_srcdir.
+ # In autoconf-2.50 it is called $srcdir.
+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+ case "$ac_given_srcdir" in
+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+ /*) top_srcdir="$ac_given_srcdir" ;;
+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+ # Treat a directory as a PO directory if and only if it has a
+ # POTFILES.in file. This allows packages to have multiple PO
+ # directories under different names or in different locations.
+ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
+ rm -f "$ac_dir/POTFILES"
+ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
+ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+ POMAKEFILEDEPS="POTFILES.in"
+ # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
+ # on $ac_dir but don't depend on user-specified configuration
+ # parameters.
+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+ # The LINGUAS file contains the set of available languages.
+ if test -n "$OBSOLETE_ALL_LINGUAS"; then
+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+ fi
+ ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+ # Hide the ALL_LINGUAS assigment from automake < 1.5.
+ eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+ else
+ # The set of available languages was given in configure.in.
+ # Hide the ALL_LINGUAS assigment from automake < 1.5.
+ eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
+ fi
+ # Compute POFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+ # Compute UPDATEPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+ # Compute DUMMYPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+ # Compute GMOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+ case "$ac_given_srcdir" in
+ .) srcdirpre= ;;
+ *) srcdirpre='$(srcdir)/' ;;
+ esac
+ POFILES=
+ UPDATEPOFILES=
+ DUMMYPOFILES=
+ GMOFILES=
+ for lang in $ALL_LINGUAS; do
+ POFILES="$POFILES $srcdirpre$lang.po"
+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+ done
+ # CATALOGS depends on both $ac_dir and the user's LINGUAS
+ # environment variable.
+ INST_LINGUAS=
+ if test -n "$ALL_LINGUAS"; then
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "$LINGUAS"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ INST_LINGUAS="$INST_LINGUAS $presentlang"
+ fi
+ done
+ fi
+ CATALOGS=
+ if test -n "$INST_LINGUAS"; then
+ for lang in $INST_LINGUAS; do
+ CATALOGS="$CATALOGS $lang.gmo"
+ done
+ fi
+ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
+ if test -f "$f"; then
+ case "$f" in
+ *.orig | *.bak | *~) ;;
+ *) cat "$f" >> "$ac_dir/Makefile" ;;
+ esac
+ fi
+ done
+ fi
+ ;;
+ esac
+ done ;;
+
+ esac
+done # for ac_tag
+
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || { (exit 1); exit 1; }
+fi
+
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..cab46a2
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,307 @@
+# -*- autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+# Copyright (C) 1991, 1993-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+dnl Written by Jim Meyering.
+
+AC_PREREQ(2.61)
+AC_INIT([GNU coreutils],[6.9],[bug-coreutils@gnu.org])
+AC_CONFIG_SRCDIR(src/ls.c)
+
+AC_CONFIG_AUX_DIR(build-aux)
+AC_CONFIG_HEADERS([lib/config.h:lib/config.hin])
+
+AB_INIT()
+AM_INIT_AUTOMAKE([1.10 dist-bzip2])
+
+AC_PROG_CC_STDC
+AM_PROG_CC_C_O
+AC_PROG_CPP
+AC_PROG_GCC_TRADITIONAL
+AC_PROG_RANLIB
+AC_PROG_LN_S
+gl_EARLY
+gl_INIT
+coreutils_MACROS
+
+AC_FUNC_FORK
+
+AC_CHECK_FUNCS(uname,
+ OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS uname\$(EXEEXT)"
+ MAN="$MAN uname.1")
+AC_CHECK_FUNCS(chroot,
+ OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS chroot\$(EXEEXT)"
+ MAN="$MAN chroot.1")
+AC_CHECK_FUNCS(gethostid,
+ OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS hostid\$(EXEEXT)"
+ MAN="$MAN hostid.1")
+
+gl_WINSIZE_IN_PTEM
+
+AC_MSG_CHECKING(whether localtime caches TZ)
+AC_CACHE_VAL(utils_cv_localtime_cache,
+[if test x$ac_cv_func_tzset = xyes; then
+AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <time.h>
+#if STDC_HEADERS
+# include <stdlib.h>
+#endif
+extern char **environ;
+void unset_TZ (void)
+{
+ char **from, **to;
+ for (to = from = environ; (*to = *from); from++)
+ if (! (to[0][0] == 'T' && to[0][1] == 'Z' && to[0][2] == '='))
+ to++;
+}
+int main()
+{
+ time_t now = time ((time_t *) 0);
+ int hour_GMT0, hour_unset;
+ if (putenv ("TZ=GMT0") != 0)
+ exit (1);
+ hour_GMT0 = localtime (&now)->tm_hour;
+ unset_TZ ();
+ hour_unset = localtime (&now)->tm_hour;
+ if (putenv ("TZ=PST8") != 0)
+ exit (1);
+ if (localtime (&now)->tm_hour == hour_GMT0)
+ exit (1);
+ unset_TZ ();
+ if (localtime (&now)->tm_hour != hour_unset)
+ exit (1);
+ exit (0);
+}]])],
+[utils_cv_localtime_cache=no],
+[utils_cv_localtime_cache=yes],
+[# If we have tzset, assume the worst when cross-compiling.
+utils_cv_localtime_cache=yes])
+else
+ # If we lack tzset, report that localtime does not cache TZ,
+ # since we can't invalidate the cache if we don't have tzset.
+ utils_cv_localtime_cache=no
+fi])dnl
+AC_MSG_RESULT($utils_cv_localtime_cache)
+if test $utils_cv_localtime_cache = yes; then
+ AC_DEFINE(LOCALTIME_CACHE, 1, [FIXME])
+fi
+
+# SCO-ODT-3.0 is reported to need -los to link programs using initgroups
+AC_CHECK_FUNCS(initgroups)
+if test $ac_cv_func_initgroups = no; then
+ AC_CHECK_LIB(os, initgroups)
+fi
+
+AC_CHECK_FUNCS(syslog)
+if test $ac_cv_func_syslog = no; then
+ # syslog is not in the default libraries. See if it's in some other.
+ for lib in bsd socket inet; do
+ AC_CHECK_LIB($lib, syslog, [AC_DEFINE(HAVE_SYSLOG, 1, [FIXME])
+ LIBS="$LIBS -l$lib"; break])
+ done
+fi
+
+AC_CACHE_CHECK([for 3-argument setpriority function],
+ [utils_cv_func_setpriority],
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <sys/time.h>
+ #include <sys/resource.h>
+ ]],
+ [[setpriority (0, 0, 0);]])],
+ [utils_cv_func_setpriority=yes],
+ [utils_cv_func_setpriority=no])])
+if test $utils_cv_func_setpriority = no; then
+ AC_CHECK_FUNCS([nice])
+fi
+case $utils_cv_func_setpriority,$ac_cv_func_nice in
+*yes*)
+ OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS nice\$(EXEEXT)"
+ MAN="$MAN nice.1";;
+esac
+
+AC_DEFUN([coreutils_DUMMY_1],
+[
+ AC_REQUIRE([gl_READUTMP])
+ if test $ac_cv_header_utmp_h = yes || test $ac_cv_header_utmpx_h = yes; then
+ OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS pinky\$(EXEEXT)"
+ OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS users\$(EXEEXT)"
+ OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS who\$(EXEEXT)"
+ MAN="$MAN pinky.1 users.1 who.1"
+ fi
+])
+coreutils_DUMMY_1
+
+AC_MSG_CHECKING(ut_host in struct utmp)
+AC_CACHE_VAL(su_cv_func_ut_host_in_utmp,
+[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
+#include <utmp.h>]], [[struct utmp ut; return !sizeof ut.ut_host;]])],
+ [su_cv_func_ut_host_in_utmp=yes],
+ [su_cv_func_ut_host_in_utmp=no])])
+AC_MSG_RESULT($su_cv_func_ut_host_in_utmp)
+if test $su_cv_func_ut_host_in_utmp = yes; then
+ have_ut_host=1
+ AC_DEFINE(HAVE_UT_HOST, 1, [FIXME])
+fi
+
+if test -z "$have_ut_host"; then
+ AC_MSG_CHECKING(ut_host in struct utmpx)
+ AC_CACHE_VAL(su_cv_func_ut_host_in_utmpx,
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
+#include <utmpx.h>]], [[struct utmpx ut; return !sizeof ut.ut_host;]])],
+ [su_cv_func_ut_host_in_utmpx=yes],
+ [su_cv_func_ut_host_in_utmpx=no])])
+ AC_MSG_RESULT($su_cv_func_ut_host_in_utmpx)
+ if test $su_cv_func_ut_host_in_utmpx = yes; then
+ AC_DEFINE(HAVE_UTMPX_H, 1, [FIXME])
+ AC_DEFINE(HAVE_UT_HOST, 1, [FIXME])
+ fi
+fi
+
+GNULIB_BOOT_TIME(
+ [OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS uptime\$(EXEEXT)"
+ MAN="$MAN uptime.1"])
+
+AC_SYS_POSIX_TERMIOS()
+gl_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
+
+if test $ac_cv_sys_posix_termios = yes; then
+ OPTIONAL_BIN_PROGS="$OPTIONAL_BIN_PROGS stty\$(EXEEXT)" MAN="$MAN stty.1"
+
+ AC_MSG_CHECKING(whether termios.h needs _XOPEN_SOURCE)
+ AC_CACHE_VAL(su_cv_sys_termios_needs_xopen_source,
+ [AC_EGREP_CPP(yes, [#include <termios.h>
+#ifdef IUCLC
+yes
+#endif], su_cv_sys_termios_needs_xopen_source=no,
+ AC_EGREP_CPP(yes, [#define _XOPEN_SOURCE
+#include <termios.h>
+#ifdef IUCLC
+yes
+#endif], su_cv_sys_termios_needs_xopen_source=yes,
+ su_cv_sys_termios_needs_xopen_source=no))])
+ AC_MSG_RESULT($su_cv_sys_termios_needs_xopen_source)
+ test $su_cv_sys_termios_needs_xopen_source = yes &&
+ AC_DEFINE(TERMIOS_NEEDS_XOPEN_SOURCE, 1, [FIXME])
+
+ AC_MSG_CHECKING(c_line in struct termios)
+ AC_CACHE_VAL(su_cv_sys_c_line_in_termios,
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if TERMIOS_NEEDS_XOPEN_SOURCE
+#define _XOPEN_SOURCE
+#endif
+#include <sys/types.h>
+#include <termios.h>]], [[struct termios t; return !sizeof t.c_line;]])],
+ [su_cv_sys_c_line_in_termios=yes],
+ [su_cv_sys_c_line_in_termios=no])])
+ AC_MSG_RESULT($su_cv_sys_c_line_in_termios)
+ test $su_cv_sys_c_line_in_termios = yes \
+ && AC_DEFINE(HAVE_C_LINE, 1, [FIXME])
+fi
+
+# FIXME: note that this macro appears above, too.
+# I'm leaving it here for now. This whole thing needs to be modernized...
+gl_WINSIZE_IN_PTEM
+
+gl_HEADER_TIOCGWINSZ_IN_TERMIOS_H
+
+if test $jm_cv_sys_tiocgwinsz_needs_termios_h = no && \
+ test $jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h = no; then
+ AC_MSG_CHECKING(TIOCGWINSZ in sys/pty.h)
+ AC_CACHE_VAL(su_cv_sys_tiocgwinsz_in_sys_pty_h,
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
+#ifdef WINSIZE_IN_PTEM
+# include <sys/stream.h>
+# include <sys/ptem.h>
+#endif
+#include <sys/ioctl.h>
+#include <sys/tty.h>
+#include <sys/pty.h>]], [[int x = TIOCGWINSZ;]])],
+ [su_cv_sys_tiocgwinsz_in_sys_pty_h=yes],
+ [su_cv_sys_tiocgwinsz_in_sys_pty_h=no])])
+ AC_MSG_RESULT($su_cv_sys_tiocgwinsz_in_sys_pty_h)
+
+ test $su_cv_sys_tiocgwinsz_in_sys_pty_h = yes \
+ && AC_DEFINE(GWINSZ_IN_SYS_PTY, 1,
+ [Define if your system defines TIOCGWINSZ in sys/pty.h.])
+fi
+
+# For src/kill.c.
+AC_CHECK_DECLS([strsignal, sys_siglist, _sys_siglist, __sys_siglist], , ,
+ [AC_INCLUDES_DEFAULT
+#include <signal.h>])
+
+# For src/kill.c and src/printf.c.
+AC_CHECK_DECLS([strtoimax, strtoumax])
+
+cu_LIB_CHECK
+
+AM_GNU_GETTEXT([external], [need-formatstring-macros])
+AM_GNU_GETTEXT_VERSION([0.15])
+
+AC_CONFIG_FILES(
+ Makefile
+ doc/Makefile
+ lib/Makefile
+ man/Makefile
+ po/Makefile.in
+ src/Makefile
+ tests/Makefile
+ tests/chgrp/Makefile
+ tests/chmod/Makefile
+ tests/chown/Makefile
+ tests/cp/Makefile
+ tests/cut/Makefile
+ tests/dd/Makefile
+ tests/dircolors/Makefile
+ tests/du/Makefile
+ tests/expr/Makefile
+ tests/factor/Makefile
+ tests/fmt/Makefile
+ tests/head/Makefile
+ tests/install/Makefile
+ tests/join/Makefile
+ tests/ln/Makefile
+ tests/ls-2/Makefile
+ tests/ls/Makefile
+ tests/md5sum/Makefile
+ tests/misc/Makefile
+ tests/mkdir/Makefile
+ tests/mv/Makefile
+ tests/od/Makefile
+ tests/pr/Makefile
+ tests/readlink/Makefile
+ tests/rm/Makefile
+ tests/rmdir/Makefile
+ tests/seq/Makefile
+ tests/sha1sum/Makefile
+ tests/shred/Makefile
+ tests/sort/Makefile
+ tests/stty/Makefile
+ tests/sum/Makefile
+ tests/tac/Makefile
+ tests/tail-2/Makefile
+ tests/tail/Makefile
+ tests/tee/Makefile
+ tests/test/Makefile
+ tests/touch/Makefile
+ tests/tr/Makefile
+ tests/tsort/Makefile
+ tests/unexpand/Makefile
+ tests/uniq/Makefile
+ tests/wc/Makefile
+ )
+AC_OUTPUT
diff --git a/doc/ChangeLog b/doc/ChangeLog
new file mode 100644
index 0000000..38b5f9d
--- /dev/null
+++ b/doc/ChangeLog
@@ -0,0 +1,1971 @@
+2007-03-21 Eric Blake <ebb9@byu.net>
+
+ * coreutils.texi (md5sum invocation): Document escapes in output
+ format. Reported by Armijn Hemel.
+
+2007-03-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix manual in response to bug reports by Dan Jacobson.
+ * coreutils.texi (sort invocation): Explain numeric sorts better.
+ Compress self-congratulation into a simple "comparison is exact"
+ notice; the --general-numeric-sort option already explains the
+ tradeoffs.
+ (seq invocation): Add example of -f.
+
+2007-03-12 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (cp invocation): Mention that --preserve=timestamps
+ doesn't preserve time stamps on symbolic links.
+ Reported by Polo Talnir in <https://bugzilla.redhat.com/230866>.
+
+2007-02-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (df invocation): With -P, the default block size
+ and output format is not affected by DF_BLOCK_SIZE, BLOCK_SIZE, or
+ BLOCKSIZE.
+
+2007-01-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi
+ (Input processing in ptx, mkdir invocation, rmdir invocation):
+ @item -> @itemx to fix some typos.
+
+2007-01-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (mkdir invocation): Say how to set the file
+ permission bits of a parent directory with mkdir -p.
+
+2007-01-29 Jim Meyering <jim@meyering.net>
+
+ Document new syntax: "chown +0:+287 file", "chgrp +99 file"
+ * coreutils.texi (Disambiguating names and IDs): New section.
+ (chown invocation, chgrp invocation): Mention the new syntax
+ with an xref to the new section.
+
+2007-01-19 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (ls: General output formatting): Mention the
+ workarounds to accommodate the Apple Terminal bug.
+
+2007-01-04 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (base64 invocation): When decoding, newlines
+ are always accepted.
+
+2007-01-03 Jim Meyering <jim@meyering.net>
+
+ Document what the ".0" in e.g., "-k 2,3.0" means, and...
+ * coreutils.texi (sort invocation): ... that it can be applied to the
+ field-end spec, but not the field-start one. Patch from Evan Hunt.
+
+2006-12-21 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (dd invocation): Improve the documentation
+ for bs, ibs, obs, and cbs. Suggestion from Dan Jacobson.
+ Patch by Olivier Delhomme.
+ (dd invocation): Add to the description of cbs.
+ (dd invocation): Specify that bs=N overrides only any
+ _preceding_ ibs and obs settings. Spotted by Andreas Schwab.
+
+2006-12-14 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi: Remove two doubled words.
+ (Treating / specially): With --preserve-root, chgrp and chown
+ will not modify "/", even through a symlink.
+
+2006-11-28 Jim Meyering <jim@meyering.net>
+
+ * perm.texi (Mode Structure): Fix typo: s/setgid/setuid/.
+ Reported by Georg Neis as Debian bug 400778.
+
+2006-10-27 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (wc invocation): When giving the order in which
+ the various "counts" are listed, also mention "maximum line length".
+ Prompted by a report from Vincent LeFevre.
+
+2006-10-23 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (rm invocation): Describe --one-file-system.
+
+2006-09-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (groups invocation): "groups" no longer prefixes
+ the output with "user :" unless more than one user is specified.
+
+2006-09-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (cp invocation): Say that -i and -f are
+ independent. Clarify -i's behavior.
+ (Disk usage): Clarify intro. Problem reported by Van Ly.
+
+2006-09-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (tail invocation): Ignore -f when standard input
+ is a FIFO, too.
+
+2006-09-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (Treating / specially): --preserve-root is
+ now the default for rm.
+ (rm invocation): Likewise. Also, document that you can't
+ remove `.' or `..'. Use the POSIX term "root directory"
+ rather than the more-ambiguous "file system root".
+
+2006-08-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * .cvsignore: Add Makefile.in, coreutils.html, coreutils.pdf,
+ coreutils.ps, coreutils.tps. Remove coreutils.cm (dunno what it
+ is, but the makefile doesn't mention it). Remove coreutils.info
+ as it is subsumed by coreutils.info*.
+
+2006-08-22 Jim Meyering <jim@meyering.net>
+
+ * .cvsignore: Add files that are now generated by ../bootstrap.
+
+2006-08-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.in, fdl.texi, getdate.texi:
+ Remove from CVS, since ../bootstrap generates them automatically.
+
+2006-08-17 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (EXTRA_DIST): Reflect doclicense.texi->fdl.texi renaming.
+
+2006-08-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * ChangeLog: Add copyright notice.
+ * Makefile.am: Likewise.
+ * getdate.texi: Likewise.
+ * perm.texi: Likewise.
+ * getdate.texi: Update to version 1.2 of the GNU FDL.
+ * coreutils.texi: Likewise.
+ (Copying This Manual): Renamed from GNU Free Documentation License.
+ Now an appendix. Include fdl.texi rather than doclicense.texi.
+ * fdl.tex: Renamed from doclicense.texi. Latest version from FSF.
+ * perm.texi: Add copyright notice.
+
+2006-08-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (df invocation): df exits nonzero if it outputs
+ nothing.
+
+2006-08-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (dd invocation): Warn about oflag=append without
+ conv=notrunc. See Debian bug 373736.
+
+2006-08-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (shuf invocation, Random sources): New sections.
+ (Operating on sorted files): Add shuf.
+ (sort invocation, shred invocation): New option --random-source.
+ (sort invocation): Fix typo: -R -> -r.
+
+2006-07-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (install invocation, mkdir invocation):
+ Add cross-references to Directory Setuid and Setgid.
+ (install-invocation): The default mode is no longer equivalent to 755.
+ * perm.texi (Changing Special Mode Bits): Clarify u+s versus
+ a+s versus +s, and likewise for g+s.
+ (Numeric Modes): Bring back example of 0055 == 55. 4755 no
+ longer clears setgid bit on directories.
+ (Directory Setuid and Setgid): Numeric modes now affect setuid
+ and setgid on directories only if they set these bits. This
+ is so that leading 0 has no effect on numeric modes.
+
+2006-07-26 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (What information is listed): Mention that missing
+ pieces of information are marked with "?". From Paul Eggert.
+
+2006-07-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * perm.texi (Directory Setuid and Setgid): Explain that this is a
+ GNU extension, and that other systems behave differently here.
+
+2006-07-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (What information is listed): Clarify that the
+ restricted deletion flag is another name for the sticky bit.
+ * perm.texi (Mode Structure): The restricted deletion flag
+ restricts only unprivileged users.
+ (Mode Structure, Symbolic Modes, Numeric Modes): Be more careful
+ about distinguishing file mode bits from permissions bits,
+ and about execute versus search permission. The FreeBSD command
+ is chflags, not chrflags.
+
+2006-07-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi: Change GNU to @acronym{GNU} in a few places.
+ Use "set-user-ID" and "set-group-ID" a bit more consistently.
+ Use "appropriate privileges" rather than "super-user" a bit
+ more consistently.
+ (install invocation): Parent directories are now 755 without uid
+ or gid changing. The default mode is now 0755, not 755.
+ (mkdir invocation): Rewrite the top-level usage description, since
+ I couldn't easily follow the old one. It's now 3 lines not 8.
+ For -m, describe file permission bits versus other bits, and note
+ that mkdir is atomic if you don't mention special bits.
+ (chmod invocation): Mention what chmod does to setgid and setuid bits.
+ * perm.texi (Mode Structure): Modernize the explanation of the
+ setuid and setgid bits on directories.
+ (Changing Special Mode Bits): Mention that a implies both u and g
+ for s. Cross reference to new node.
+ (Numeric Modes): Don't claim that 0055 is the same as 55; this isn't
+ true any more. Mention new node.
+ 4755 is now like u=rwxs,go=rx,g-s, not like u=rwxs,go=rx.
+ (Directory Setuid and Setgid): New node.
+
+2006-07-08 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (Squeezing): Separate doubled "the", so typo-checkers
+ don't complain.
+
+ * Makefile.am (check-texinfo): Enforce the zeros vs. zeroes consistency.
+
+2006-07-08 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * coreutils.texi: Fix some typos. Use `zeros' consistently (both
+ `zeros' and `zeroes' are correct).
+
+2006-07-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (tail invocation): With no operand, 'tail -f' now
+ silently ignores the '-f' only if standard input is a FIFO or pipe
+ and POSIXLY_CORRECT is set.
+
+2006-06-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (seq invocation): seq now uses long double
+ internally rather than double. It now defaults to a minimal fixed
+ point format if possible. It lets you use %a, %A, %E, %F, %G.
+ Don't assume printf doesn't work for numbers that fit in 64 but
+ not 32 bits; typically they work these days. Improve discussion
+ of large integers and update the rounding-error numbers.
+
+2006-06-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (sort invocation): 'sort +1 -2' is now supported
+ even when conforming to POSIX 1003.1-2001, since this is a pure
+ extension to POSIX.
+
+2006-06-27 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (wc invocation): Remove ./ prefix from example.
+ From Padraig Brady.
+
+2006-06-26 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (wc invocation): Spell out `--files0-from' in
+ the example. Suggestion from Bob Proulx.
+
+ * coreutils.texi (wc invocation): Document new --files0-from option.
+
+2006-06-20 Eric Blake <ebb9@byu.net>
+
+ * coreutils.texi (sleep invocation): Document that accepting
+ multiple arguments and suffixes are extensions.
+ Reported by Dan Jacobson.
+
+2006-06-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.am (check-texinfo): Use $(_W) and $(W_) instead of
+ assuming grep -w (which is not portable).
+
+2006-05-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * Makefile.am: Use `AM_MAKEINFOFLAGS' rather than
+ overwriting `MAKEINFO', so that `missing' can do its job.
+
+ * Makefile.am (check-texinfo): Use `$(EGREP)' instead of `grep -E'.
+ (check-texinfo): Use literal `{' only in brackets, i.e., [{] or [}],
+ to avoid triggering an error from Solaris 2.6's grep.
+
+2006-05-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (sort invocation): Remove mention of --seed, since
+ it's going away.
+
+2006-05-04 Eric Blake <ebb9@byu.net>
+
+ * coreutils.texi (Examples of date): Give example of @seconds.
+
+2006-05-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (head invocation, tail invocation, sort invocation):
+ Give advice about porting to hosts that support only obsolete syntax.
+ Problem reported by Zack Weinberg.
+
+2006-04-23 Francesco Montorsi <fr_m@hotmail.com>
+
+ * coreutils.texi (Which files are listed): Describe new option:
+ --group-directories-first.
+
+2006-04-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (What information is listed): Add P for Solaris
+ 10 ports. Add commented-out entries for other types that POSIX
+ says are possible, or that I observed in FreeBSD documentation.
+
+2006-04-18 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (Input processing in ptx): Remove mention of the
+ default --ignore file, /usr/local/lib/eign. That file has never
+ been used. Reported by Eric Blake.
+
+2006-04-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (expr invocation): expr exit status is 3 only for
+ internal errors now; 2 is also for invalid values in expressions.
+
+ (What information is listed): Document 'ls' type letters.
+ Problem reported by Lincoln Martin.
+
+2006-04-09 Ori Avtalion <oavtal@bezeqint.net>
+
+ * coreutils.texi (Top): Add 'hostid' to System context menu line.
+ (trivial change)
+
+2006-03-22 Eric Blake <ebb9@byu.net>
+
+ * coreutils.texi (General options in ptx): Undocument --copyright.
+
+2006-03-27 Eric Blake <ebb9@byu.net>
+
+ * coreutils.texi (dirname invocation): Macro in previous patch
+ was too broad.
+
+2006-03-11 Eric Blake <ebb9@byu.net>
+
+ * coreutils.texi (basename invocation, dirname invocation):
+ Improve documentation to match recent // patches.
+
+2006-03-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (nohup invocation): nohup now redirects stderr to
+ nohup.out if stdout is closed and stderr is a tty.
+
+2006-03-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (dd invocation): New flags directory, nolinks.
+ Alphabetize nofollow.
+
+2006-02-17 Simon Josefsson <jas@extundo.com>
+
+ * coreutils.texi: Add base64 section.
+
+2006-02-20 Eric Blake <ebb9@byu.net>
+
+ * coreutils.texi (rm invocation): Fix typo in last patch.
+ (paste invocation): Fix whitespace.
+
+2006-02-18 Eric Blake <ebb9@byu.net>
+
+ * coreutils.texi (rm invocation): Document new -I option, and new
+ --interactive behavior.
+
+2006-02-12 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (Character sets): Don't say that an unknown
+ backslash-escape causes an error message -- it doesn't.
+ Mention that `\' also removes any special significance, so
+ is useful for [, ], *, -. Prompted by Richard Neill in
+ http://savannah.gnu.org/bugs/index.php?func=detailitem&item_id=14937
+
+2006-02-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (od invocation): Warn that -t a ignores the high
+ order bit.
+
+2006-01-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (tail invocation): In the obsolete usage, the
+ count is optional, so put square brackets around it.
+
+2006-01-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getdate.texi (General date syntax): Invalid dates are rejected.
+ (Time of day items): Mention the possibility of leap seconds.
+ Problem reported by Dr. David Alan Gilbert.
+
+ * coreutils.texi: Use @acronym around "ISO" uniformly.
+ (Date conversion specifiers): Explain %g, %G, and %V a bit better.
+
+2006-01-02 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (tail invocation): Say that --retry
+ is useful `mainly' (not `only') when following by name.
+
+2006-01-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi, perm.texi: Clarify file mode bits versus
+ file permission bits.
+ * coreutils.texi (mkfifo invocation, mknod invocation): -m
+ affects only file permission bits.
+
+2005-12-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (sort invocation): Clarify that a blank is a space
+ or a tab.
+
+2005-12-15 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (stat invocation) [--printf]: Describe new option.
+ [--format]: Add example. Distinguish from --printf.
+ Sort option descriptions.
+
+2005-12-05 Andreas Gruenbacher <agruen@suse.de>
+
+ * coreutils.texi (ls): Clarify the Alternate Access Method description.
+ (cp): Clarify that --preserve=mode also preserves acls.
+
+2005-12-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (sort invocation): Clarify explanation of
+ --random-sort, and use a simpler example.
+
+2005-12-10 Frederik Eaton <frederik@ofb.net>
+
+ * coreutils.texi (sort invocation): Add --random-sort (-R) and --seed.
+
+2005-12-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (dd invocation): New noatime flag.
+
+2005-11-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (df invocation): Document treatment of dummy file
+ systems better.
+
+2005-11-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (ln invocation): ln -v now outputs lines only for
+ successful links.
+ (tail invocation): Say that the obsolete form uses exactly one
+ option and at most one file.
+
+2005-11-13 Jim Meyering <jim@meyering.net>
+
+ * perm.texi (Mode Structure): Capitalize two sentences in an
+ enumerated list and fix a typo. From Aaron Hawley.
+
+2005-11-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (Formatting file timestamps): ls now defaults to
+ --time-style='locale', which in turn acts like
+ --time-style='posix-long-iso' if the locale settings are messed up.
+
+2005-11-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (rm invocation): Don't mention --directory (-d).
+
+2005-11-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (tail invocation): Describe obsolete usages
+ like "tail -2" more precisely.
+ (touch invocation): The old usage works only for 1969-1999 now.
+
+2005-08-28 David Madore <david.madore@ens.fr>
+
+ * coreutils.texi: Document SHA-1 and SHA-2 utilities.
+
+2005-10-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doc/coreutils.texi (Top, General output formatting, dir invocation):
+ (vdir invocation): Don't document the old v and d commands.
+
+2005-10-15 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (du invocation): Document du's -m option,
+ now that we've decided to keep it.
+ (who invocation): Remove documentation for deprecated --idle (-i).
+
+2005-10-13 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi: Avoid a few overfull/underfull hboxes.
+
+2005-09-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (touch invocation):
+ "touch -" now touches standard output.
+
+2005-09-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (who invocation): Remove a stray '+'.
+
+2005-09-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (uname invocation): uname -a no longer generates
+ the -p and -i outputs if they are unknown.
+
+2005-09-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (Time conversion specifiers, Options for date):
+ Document date --rfc-3339 and new specifiers %:z, %::z, %:::z. Use
+ "date and time" consistently; the old version sometimes said "time
+ and date". Fix a minor bug in the documentation for --rfc-2822:
+ it claimed day-of-month < 10 had leading space, not leading zero.
+ Use a consistent format for terms like "RFC".
+ (uname invocation): Mention that Linux outputs "unknown" for
+ -i and -p.
+
+2005-09-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (nice invocation): Document "niceness" versus
+ "nice value" versus "scheduling priority".
+
+2005-09-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (nice invocation): Use "niceness", not "nice value"
+ to talk about nice values offset by -20. Don't use the word
+ "priority" when niceness is intended.
+
+2005-08-15 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (join invocation): Itemize the defaults.
+ From Karl Berry.
+
+2005-08-12 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (cp invocation, mv invocation): Remove square
+ brackets in --reply=[HOW]. Reported by Oscar Liljeblad.
+
+2005-07-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (md5sum invocation): --check now allows multiple
+ FILE inputs.
+
+2005-07-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (false invocation):
+ Mention that false is often built-in, and that it exits
+ with status >1 on some hosts.
+ (true invocation): Remove now-incorrect "non-POSIX mode" reference.
+
+2005-07-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (nohup invocation): POSIXLY_CORRECT no longer
+ affects nohup's behavior. Input is redirected from /dev/null.
+
+2005-07-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (cat invocation): Remove -B or --binary option
+ (available on MS-DOS-like platforms only). Explain when text and
+ binary mode are used now.
+ (md5sum invocation): -b actually does have an effect on Unix: it
+ causes "*" to be output. Explain when text and binary mode are
+ used now.
+
+2005-07-03 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (cp invocation): Mark --reply as deprecated.
+ (mv invocation): Likewise.
+
+2005-06-24 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (cp invocation): Clarify how --reply=no works.
+
+2005-06-14 William Brendling <wbrendling@gmail.com>
+
+ * coreutils.texi (du invocation): New options --last-time and
+ --time-style.
+
+2005-06-19 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (ln invocation): Change a few `paths' to `file names'.
+ * Makefile.am (check-texinfo): Also catch uses of path, pathname.
+
+2005-06-17 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (shred invocation): Clarify that shred
+ works on ext3 as long as it's not in data=journal mode.
+ Patch from Mark Melahn.
+
+2005-06-16 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (Backup options): Undocument --version-control=S (-V).
+
+2005-06-07 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (ln invocation): Examples, from Bob Proulx.
+
+2005-06-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ Use "file name" when talking about file names, instead of "filename"
+ or "path", as per the GNU coding standards.
+ * coreutils.texi (readlink invocation): "path component" ->
+ "component", since we don't use the POSIX "path" nomenclature.
+
+2005-05-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getdate.texi (General date syntax): Don't say that date
+ date --iso-8601=ns generates acceptable dates; it doesn't yet.
+ Problem reported by Nic Ferrier.
+
+2005-05-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (dd invocation): New flags "binary" and "text".
+
+2005-05-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (chmod invocation): chmod -w complains if its
+ behavior differs from what chmod a-w would do.
+
+2005-05-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (ls invocation): ls --indicator-style=directory
+ renamed to ls --indicator-style=slash, to avoid confusion with ls
+ --directory.
+
+2005-04-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * perm.texi (Mode Structure, Changing Special Permissions):
+ (Conditional Executability, Numeric Modes):
+ These days the sticky bit is more often uses as the restricted
+ deletion flag, so modernize the discussion about this.
+ (Mode Structure): Linux/GNU -> GNU/Linux.
+ (Symbolic Modes): Don't imply that "+ur" or "u" is valid.
+ (Setting Permissions): Don't imply that "+t" is invalid.
+ Use "rwx" rather than the less-common "rxw" in an example.
+ (Copying Permissions): Say that ugo is a replacement for
+ a string of the other letters. Add spaces around examples.
+ Use "set-user-ID" rather than "set user ID" to avoid ambiguity.
+ Use "+t" rather than "o+t", since POSIX doesn't specify the latter.
+ Mention which combinations are portable and which are GNU.
+ (Numeric Modes): Don't imply they aren't portable; they are
+ nowadays.
+
+2005-04-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (Standards conformance): Do not mention head -10,
+ since it now works the same regardless of POSIX version.
+ (od invocation): -w N -> -w[N].
+ (pr invocation): -S STRING -> -SSTRING.
+ (fold invocation): -WIDTH works even when conforming to POSIX
+ 1003.1-2001.
+ (head invocation, tail invocation): Likewise for -NUM.
+ (split invocation): Likewise for -LINES.
+ (uniq invocation): Likewise for -N.
+ (expand invocation, unexpand invocation): Likewise for -TAB.
+ (nice invocation): Likewise for -ADJUSTMENT.
+ (sort invocation): Clarify explanation of +N option.
+ (uniq invocation): Likewise.
+ (join invocation): Remove special case for --help, --version.
+ (touch invocation): Clarify explanation of date options.
+ (Options for date): -I timespec -> -I[timespec].
+
+2005-04-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (install invocation): Use a= instead of 0 for
+ the point of departure for -m, and explain what it meeams.
+ (mkdir invocation, mkfifo invocation, mknod invocation):
+ The umask does not affect the point of departure.
+ Problem reported by Mike Stone.
+
+2005-04-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi: For consistency, standardize on "user ID" rather
+ than "uid" or "UID" or "user id". Similarly for "group ID".
+
+2005-04-09 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (rm invocation): Say that --recursive removes
+ listed directories too, not just their contents.
+
+2005-04-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (dd invocation): Document the distinction between
+ INFO and USR1 for dd, and the effect of POSIXLY_CORRECT here.
+
+2005-04-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (cat invocation, chown invocation)
+ (chgrp invocation, basename invocation, dirname invocation):
+ Add examples, which are copies of the examples newly added
+ to the usage messages.
+ (ln invocation): Use same format as other examples above,
+ for consistency.
+
+2005-03-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi: Clarify NUL vs null byte vs null character.
+
+2005-03-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (nohup invocation): Clarify nohup.out creation.
+
+2005-03-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (Formatting file timestamps): Very long timestamps
+ may be treated as errors.
+
+2005-03-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (date invocation): Use an example that makes it
+ clear tha the default date use space-padded day of month.
+ Replace "directive" with "conversion specifier" to be consistent
+ with POSIX. All uses changed.
+ Fix menu RHS to match actual directive lists.
+ (Time conversion specifiers): Renamed from Time directives.
+ Use @samp consistently, sometimes instead of @code.
+ Consistently ention which specifiers are GNU extensions.
+ Give more examples (in some cases, instead of ranges).
+ Say why %F is preferred for dates.
+ (Date conversion specifiers): Renamed from Date directives.
+ Likewise for other changes.
+ (Padding and other flags): Correct the description.
+ Document #. Give an example for %9B.
+
+2005-02-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi: Adjust to match current strftime.c.
+ (Time directives): Say that %k, %l, and %P are GNU extensions.
+ For %p and %P, mention handling of noon and midnight.
+ For %s, use ISO 8601, and mention handling of leap seconds.
+ For %S, clarify mention of leap seconds.
+ For %T, say that it's the same as %H:%M:%S.
+ For %X, don't say that it must be the same as %H:%M:%S.
+ For %z and %Z, clarify which time zones are used. These options
+ are now affected by --date, so don't claim that they're not.
+ (Date directives): %C is now all but the last two chars of %Y.
+ For %D, say that it's equivalent to %m/%d/%y.
+ For %e, use blank in example.
+ For %h, use @code for %b.
+ For %Y, mention what happens with outlandish years.
+ (Padding and other flags): Renamed from Padding.
+ Mention that the flags are GNU extensions.
+ Mention the 0 and ^ flags.
+ Mention field widths an modifiers.
+ (Examples of date): - is a flag, not a modifier.
+
+2005-01-07 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (sort invocation): Specify that a string
+ of zero digits is interpreted as 0. Reported by Ulrich Hermisson.
+
+2005-01-04 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (shred invocation): Clarify that shred works fine
+ with journaled file systems that are configured not to journal
+ file system data. Also mention BFS and NTFS.
+
+2004-12-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (ls invocation): Change minor problem to be
+ "subdirectory not found", since top-level trouble is now serious.
+ (dircolors invocation): Quote argument to eval. Problem reported
+ by Stephane Chazelas.
+
+2004-12-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (join invocation): Mention that blank separators
+ in the -o option need to be quoted. Problem reported by Phil Clayton.
+
+2004-12-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (id invocation): -G also prints main group.
+ Problem reported by Tim Waugh.
+
+2004-12-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (ls invocation): Document new "ls" exit status.
+
+2004-12-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getdate.texi (Time of day items, Time zone items):
+ Describe new formats +00:00, UTC+00:00.
+
+2004-12-04 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (cut invocation): Say when --complement is useful.
+
+2004-10-01 Paolo Bonzini <bonzini@gnu.org>
+
+ * coreutils.texi (cut invocation): Document --complement and
+ adjust the documentation of -b, -c, -f.
+
+2004-11-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (du invocation): Use if=/dev/null rather
+ than :|. Problem reported by Dan Jacobson.
+ Use "seek=2GiB" rather than the wordier "seek=`echo '2^31'|bc`".
+ Say "KiB" not the (inaccurate) "kilobytes".
+ Similarly for "GiB" and "gigabytes".
+
+2004-11-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi: Changes inspired by Debian coreutils 5.2.1-2.
+ (General output formatting): -x doesn't have an operand.
+ (Formatting the file names): Warn that even with -N unprintable
+ chars are still printed as '?' some times.
+ (rm invocation): Reword rm -d to note that it's sometimes useful
+ on non-directories.
+ (logname invocation, users invocation, who invocation):
+ The utmp and wtmp file names vary from system to system.
+
+ * getdate.texi (General date syntax): "next" is 1, not 2.
+ Document that "second" isn't allowed as an ordinal number.
+
+2004-11-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (dd invocation): Reword the new dd message.
+
+2004-11-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (dd invocation): dd now outputs total bytes,
+ seconds, and bytes per second.
+
+2004-11-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.am (_W, W_): New macros.
+ (check-texinfo): Use them instead of assuming grep -w (which is not
+ portable).
+
+2004-10-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi: Document TZ better, and adjust to new getdate.texi.
+ (Top): Update menu.
+ (pr invocation, Formatting file timestamps, touch invocation,
+ stat invocation, who invocation, date invocation, Options for date):
+ Mention TZ.
+ * getdate.texi: Sync from gnulib.
+
+2004-10-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (Standards conformance): Use "head -10" rather
+ than "head -1" as example of obsolete usage, since the POSIX
+ consensus is that "head -1" could be supported even if we don't
+ yet have clear consensus on "head -10". See today's revision to
+ the SUS FAQ
+ <http://www.opengroup.org/austin/papers/single_unix_faq.html>.
+
+2004-10-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (pathchk invocation): Options must precede operands.
+
+2004-10-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (pathchk invocation): Overall lengths are
+ OS limits, not file system limits. Component length checks
+ apply to all components, not merely to existing ones. Say
+ that nonexistent names are not errors. For -p, omit all
+ checks based on the underlying file system, not merely length
+ checks. Explain what the portable file name character set is.
+
+2004-10-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (printf invocation): Mention ISO/IEC 10646 as
+ well as Unicode. Various minor formatting cleanups.
+
+2004-10-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (sort invocation): Move LC_ALL, LC_COLLATE
+ index entries to proper paragraph.
+
+2004-10-12 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (check-texinfo): Add `builtin' and `builtins' to
+ the list of words to avoid.
+
+2004-10-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (Special built-in utilities): New node.
+ (printf invocation): builtin -> built-in, for consistency
+ with POSIX terminology.
+ (test invocation, pwd invocation):
+ Use specific rather than generic language to warn about
+ built-in commands.
+ (chroot invocation, env invocation, nice invocation, nohup invocation):
+ Warn that command must not be a special built-in.
+ (env invocation): Warn about environment variables with unusual
+ spellings, or duplicates.
+
+2004-09-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (ls invocation): Document "ls --hide".
+
+2004-09-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (chmod invocation): Warn about "chmod -w file".
+
+2004-09-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (tail invocation): Fix bugs in the description of
+ the obsolete syntax (e.g., it does not support -k or -m). Warn
+ about usages like "tail -" and "tail -c 4" that are ambigous on
+ older systems.
+
+2004-09-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (mv invocation, rm invocation): Say "the response
+ is affirmative" rather than "the response begins with y or Y",
+ so that the documentation is accurate in non-English locales.
+ Problem reported by Munzir Taha.
+
+2004-09-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (dd invocation): Distinguish between options
+ (e.g., --help) and operands (e.g., if=file). Move miscellaneous
+ stuff after the operand descriptions, for clarity.
+
+2004-09-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (sort invocation): -u disables the last-resort
+ comparison, too. Revamp its description.
+ (test invocation): Document -r, -w, -x more carefully.
+
+2004-09-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (Common options): Some programs don't reorder
+ options.
+ (tr invocation, echo invocation, printf invocation, test invocation,
+ expr invocation, basename invocation, chroot invocation,
+ nice invocation, nohup invocation, seq invocation):
+ This program doesn't reorder options.
+ (tr invocation): Mention --help, --version, --.
+ (echo invocation): Mention that -- isn't special.
+ (test invocation): Mention that the expression is optional,
+ and that test ! EXPR is like ! test EXPR.
+ Mention that -h and -L don't dereference symlinks.
+ (expr invocation): Mention --help, --version.
+
+ * coreutils.texi (sort invocation): Add remarks about sort -u
+ versus sort | uniq. Prompted by a question from Andrew Noymer.
+
+2004-09-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (od invocation): Several changes for POSIX
+ and FreeBSD compatibility. Add support for XSI syntax
+ (POSIX 1003.1-2004). Rename -s[N] to -S N. Remove documentation
+ for -h. -i is now -t dI (not d2) and -l is now -t dL (not d4).
+
+2004-09-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (String tests): Improve quality of warning about
+ quoting strings for the shell.
+
+2004-09-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (dd invocation): Specify which conversion options
+ are mutually exclusive. Give a bit more detail about ascii,
+ ebcdic, and ibm conversions.
+
+2004-08-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ POSIX-conformance fixes for "expand" and "unexpand".
+ * coreutils.texi: Standardize on "tab stop" (the POSIX usage)
+ rather than "tabstop".
+ (unexpand invocation): Use "blank" rather than "space" when
+ POSIX requires "blank". Define "blank". Initial blanks are
+ converted even if there's just one. For -a, convert two or
+ more blanks only if they occur just before a tab stop.
+
+2004-08-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (chown invocation): Fix synopsis:
+ group must always be preceded by separator.
+ "chown : file" and "chown '' file" don't change the owner or group.
+ Update the explanation of what happens to the set-user-ID or
+ set-group-ID bits, e.g., they sometimes are not cleared if they
+ denote mandatory locking. Change "find"-oriented examples to use
+ chown -h.
+
+2004-08-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (printf invocation): Clarify how "printf" is
+ supposed to work with extra arguments, missing arguments, etc.
+
+2004-08-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ POSIX-conformance fixes for "-" used as an operand.
+ * coreutils.texi (Common options): Clarify that "-" means
+ stdin/stdout only when it is an operand, not when it is an
+ option-argument.
+ (shred invocation): "shred -- -" is equivalent to "shred -",
+ not to "shred ./-".
+ (tee invocation): "tee -" means to copy (again) to stdout.
+
+2004-07-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (nice invocation): Document the "nice value", and
+ how it affects the scheduling priority. (The old documentation
+ implied that the nice value equaled the scheduling priority, which
+ isn't accurate.) Document that the range of nice values might
+ exceed -20..19. Specify what happens when you give a nice value
+ that is out of range, or when you don't have permissions to lower
+ the nice value. Bash doesn't have a builtin 'nice', so don't say
+ "most shells" have one.
+
+2004-04-03 Dmitry V. Levin <ldv@altlinux.org>
+
+ * coreutils.texi (readlink invocation): Document new
+ "readlink -f" behaviour and new canonicalize options, -e and -m.
+
+2004-07-02 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (check-texinfo): Disallow `filename' in .texi files.
+ Spell it like `file name' instead, to be consistent.
+ Fail if a @footnote directive follows non-punctuation.
+ Fail upon use of @url. Use @uref instead.
+
+2004-07-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (Common options, Target directory, cp invocation,
+ install invocation, mv invocation, ln invocation): Add -t as a
+ short option for --target-directory, and -T as a short option for
+ --no-target-directory. Clean up relevant synopses a bit, so that
+ the language is similar for all.
+
+2004-06-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi: Put the right amount of space at sentence ends.
+ Make sure "i.e." and "e.g." are followed by commas (the GNU style).
+ Put blank lines before and after every @example, prefer the
+ previous line to end in ":" (when not a sentence end, for consistency),
+ and prepend @noindent to the following line when appropriate.
+ In examples, use "--" arguments when needed to prevent undesired
+ interpretation of operands as options.
+ Use "file name" rather than "filename", as per the GNU coding standards.
+ Remove unwanted spaces before @footnote.
+ Use "---" when appropriate, instead of " -- ".
+ Use "name" (or something like that) rather than "path" or "pathname",
+ since the GNU coding standards don't allow "path".
+ Use @acronym, @command, @minus{}, @samp in a few places,
+ where appropriate.
+ (Target directory): Clarify description of example.
+ (fmt invocation): Give issue number for reference, and reword
+ for clarity.
+ (sort invocation): Note that xargs without -0 also mishandles
+ file names containing some special characters other than newline.
+ (Translating): Mention that \012 is not universally portable.
+ Use '\0' rather than '\000'.
+ (Squeezing): bourne -> Bourne.
+ Fix unportable usage of '\n' by replacing it with '[\n*]'.
+ (More details about version sort): Remove unnecessary indent
+ in examples.
+ (dd invocation): Use 'kill -s USR1', not 'kill -USR1', as POSIX
+ indicates that the former is more portable (the latter is an XSI
+ extension).
+ (shred invocation): Use @uref rather than @url, and use a more-typical
+ style for the date.
+ (kill invocation): Clarify usage; for example, "kill -s TERM -1"
+ isn't allowed.
+ (seq invocation): Reword to avoid implying that printf necessarily
+ fails for numbers outside the 32-bit range. Prefer separating
+ options from their operands.
+ (Opening the software toolbox): Give an online reference to
+ Robbins's article, and give a date. Don't imply that the
+ current documentation is unchanged from his article.
+ (Putting the tools together): Rework examples so that they don't
+ assume the C locale; nowadays many users now operate outside the C
+ locale by default. While we're at it, don't assume ASCII either.
+ Indent example to match actual output from GNU uniq. Remove some
+ unnecessary and confusing brackets from 'tr' operands. "Software
+ Tools in Pascal" is back in print, according to Amazon anyway.
+ Add references to Kernighan's online copies of examples.
+
+2004-06-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi, perm.texi: Standardize on "file system" rather
+ than "filesystem", as POSIX prefers it with a space.
+
+2004-06-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (Common options, Target directory, cp
+ invocation, install invocation, mv invocation, ln invocation):
+ Likewise.
+ (link invocation): Explain how to rewrite link using ln now
+ that we have --no-target-directory.
+ (ln invocation): Explain that --no-target-directory subsumes
+ --no-dereference.
+ (unlink invocation): Modify wording to match new wording in
+ link invocation.
+
+2004-06-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (install invocation): Document
+ --target-directory in synopsis, too.
+
+2004-06-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (yes invocation): "--" is now supported.
+ (false invocation, true invocation): --help and --version now
+ work unconditionally.
+
+2004-06-07 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi: Remove menu references to just-removed subsection.
+
+2004-06-06 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (tr invocation): Remove the section describing
+ how POSIXLY_CORRECT changes tr's behavior.
+
+2004-06-02 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (cut invocation): Clarify what --output-delimiter=STR
+ does with byte/character ranges.
+
+2004-06-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (tr invocation): Mention -C.
+
+2004-05-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (echo invocation): Document today's changes.
+
+2004-05-17 Jim Meyering <jim@meyering.net>
+
+ chgrp and chown now dereference symlinks by default, per POSIX.
+ * coreutils.texi (chgrp invocation, chown invocation): Document it.
+
+2004-05-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (sort invocation): Document that "sort -m -o F"
+ might write F before reading all the input.
+
+2004-05-09 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (stat invocation): Change IO to I/O.
+ * Makefile.am (check-texinfo): Check for the above.
+
+2004-04-25 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (sort invocation): Mention -k earlier, so
+ that the options are in alphabetical order. Describe how -b works
+ more-accurately; this involves fixing some examples, too. Mention
+ what happens if the start field falls after an end field or after
+ a line end. Warn about using -k without -b, -g, -M, -n, or -t.
+ Add an example of how to sort IPv4 addresses and Apache Common
+ Log Format dates. Remove a duplicate example.
+ (Putting the tools together): Use separate options rather
+ than agglomerating them.
+
+2004-03-27 Paul Eggert <eggert@twinsun.com>
+
+ cp -pu and mv -u (when copying) now take the destination
+ file system time stamp resolution into account.
+
+ * coreutils.texi (mv invocation): Document this.
+ (cp invocation): Document -u (it was missing!) with new behavior.
+
+2004-04-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * coreutils.texi (dd invocation): Remove noctty flag from dd.
+
+2004-04-07 Paul Eggert <eggert@twinsun.com>
+
+ New dd conv= symbols nocreat, excl, fdatasync, fsync,
+ and new dd options iflag= and oflag=.
+
+ * coreutils.texi (dd invocation): Document them.
+
+2004-04-07 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (stty invocation - Input): Document new iutf8 option.
+
+2004-04-04 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (stat invocation): Correct --format description.
+
+2004-02-25 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (Block size): Document new envvar BLOCKSIZE.
+
+2004-03-24 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (check-texinfo): Add a check to ensure future
+ consistency in using @sc{nul}, not `NUL'.
+
+2004-03-23 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi: Use @sc{nul} consistently for NUL.
+ (du invocation): FILE0 -> FILE.
+
+2004-03-23 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (du invocation): --files0-from is useful with
+ --total (-c), not with --summarize.
+
+2004-03-22 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi: Tweak a few lines that resulted in
+ `overfull hbox' warnings.
+
+2004-03-03 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (du invocation): Document new option: --file0-from=F.
+
+2004-02-29 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (touch invocation):
+ Describe use of fractional seconds.
+ (date invocation, Options for date): Likewise.
+ * getdate.texi (General date syntax, Time of day items): Likewise.
+ * coreutils.texi (date invocation): Mention effect of LC_TIME.
+ (Options for date): Describe new --iso-8601=ns option.
+
+ * getdate.texi: Add copyright notice. Change getdate to
+ get_date when talking about the function name.
+ (Seconds since the Epoch): New section, containing the time_t
+ info moved from Date input formats section, along with new
+ info about the @ syntax. Mention negative time stamps,
+ fractional time stamps, and leap seconds.
+ (General date syntax): Modernize examples a bit to reflect new
+ features.
+ (General date syntax, Relative items in date strings):
+ Use ' rather than " to quote formats.
+ (Time of day items): Add an example with fractional seconds.
+ Describe fractional-second syntax.
+
+2004-03-15 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (date invocation): Add missing `C' to %[...] range
+ in the `Date directives:: ...' menu entry. From Bob Proulx.
+
+ * coreutils.texi: Add FIXME comment:
+ The following don't have `invocation' nodes: [, pinky, shasum, uptime.
+
+2004-03-10 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (Sorting the output): Remove description of
+ ls's --sort=directory option. ls doesn't accept that option, yet.
+ Reported by Arvind Autar.
+
+ * coreutils.texi (cp invocation): Improve description of
+ cp's --sparse=WHEN option.
+
+ * coreutils.texi (nl invocation): Specify that these are _basic_
+ regular expressions (BRE), and add a link to grep's documentation.
+ Suggestion from Dan Jacobson.
+
+2004-02-23 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (chown invocation): Document that chown now falls
+ back on USER.GROUP parsing regardless of POSIX version, as POSIX
+ 1003.1-2001 allows that behavior as a compatible extension.
+
+2004-02-22 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (du invocation): Mention that using du's -H option
+ currently evokes a warning.
+
+2004-02-15 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (expr invocation):
+ Document what forms integers may take, and say "integer"
+ consistently instead of "number". Warn about operands
+ that "expr" can misinterpret, and how to work around the
+ problem.
+
+2004-02-17 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (csplit invocation): Correct typo (s/LINE/N/)
+ in description of `N' pattern. From Reuben Thomas <rrt@sc3d.org>
+
+2004-02-11 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (Time directives): The %s value *is* changed by the
+ --date=DATE option; don't say otherwise. Patch from Padraig Brady.
+
+2004-02-10 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (Formatting the file names):
+ Improve wording for --quoting-style documentation.
+ Suggestions by Bruno Haible.
+
+2004-02-02 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (nice invocation): Add examples.
+ Prompted by a suggestion from Dan Jacobson.
+ (factor invocation): Add an example.
+ Update timing numbers for a more modern CPU.
+
+2004-01-27 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (seq invocation): Remove `@dots{}' at end of synopsis.
+ Separate `Synopses' section into three examples.
+ Clarify first paragraph. @w{}-protect an expression.1
+ Use @option{--option}, rather than @code{--option}.
+
+2004-01-19 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (Exit status): Document that ordinary failure
+ might not exit with status 1 on unusual platforms.
+ Mention chroot, env, nice, and su as having unusual exit
+ status patterns. Don't bother to mention true and false
+ since their exit status patterns are actually normal.
+ (sort invocation, su invocation): Mention its unusual exit
+ status pattern.
+ (chroot invocation): Simplify description of exit status 1.
+ Remove duplicate description of status 127.
+ (env invocation): Use consistent tenses; simplifiy description
+ of status 1.
+ (nice invocation): Likewise.
+
+2003-12-15 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (touch invocation): touch -r and -d can now
+ both be specified, with -r specifying the origin for -d.
+
+2004-01-15 Alfred M. Szmidt <ams@kemisten.nu>
+
+ Factor out some common options.
+ * coreutils.texi (Common options): Define macros here.
+ (What information is listed, cp invocation): Use the macro(s).
+ (install invocation, mv invocation, ln invocation): Likewise.
+ (df invocation, du invocation): Likewise.
+
+2004-01-09 Jim Meyering <jim@meyering.net>
+
+ Document the exit status of each and every program.
+ * coreutils.texi (yes invocation): Document that a write error
+ makes `yes' exit unsuccessfully.
+ (chroot invocation): Enumerate the meaning of exit status values.
+ (nice invocation): Likewise.
+ (Exit status) [@macro exitstatus]: New macro.
+ Use @exitstatus to describe the exit status of most programs.
+
+2004-01-02 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (du invocation): Mention that -H will eventually
+ mean not --si, but --dereference-args (-D).
+
+2003-12-20 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (du invocation): Describe new option: -0, --null.
+
+2003-12-03 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (What information is listed, chroot invocation):
+ Adjust example 'ls' output to match new behavior with narrower
+ output columns.
+ (The cut command): Remove example that cut the output of
+ 'ls -l'. The output was incorrect even with the old 'ls', and
+ the whole idea of using 'cut' on 'ls -l' output is bogus anyway.
+
+2003-11-24 Paul Eggert <eggert@twinsun.com>
+
+ Parse floating-point operands and options in the C locale.
+ POSIX requires this for printf, and we might as well be
+ consistent elsewhere (tail, sleep, seq).
+
+ * coreutils.texi (tail invocation, printf invocation,
+ sleep invocation, seq invocation): Document this.
+
+2003-11-24 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (Traversing symlinks, Treating / specially):
+ New sections.
+ (rm invocation, chown invocation, chmod invocation, chgrp invocation):
+ Describe new options, --preserve-root and --no-preserve-root.
+
+2003-11-11 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (chown invocation) [chownchgrpoptions]: New macro
+ describing -H, -L, -P options. Use it here.
+ (chgrp invocation): And here.
+
+2003-11-09 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (dd invocation): Fix typo in example.
+
+2003-10-15 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (ln invocation): Note that --directory, -d, -F
+ probably won't work even for superuser. Suggestion from Dan Jacobson.
+
+2003-09-29 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (csplit invocation):
+ The regexp offset need not have a sign; POSIX requires support
+ for signless offets.
+
+2003-10-03 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (du invocation): Describe -P, --no-dereference.
+
+2003-09-28 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (Translating): Correct typo in menu description.
+ From A Costa.
+
+2003-09-02 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (sort invocation): -d now overrides -i.
+ "whitespace" -> "blanks"; "whitespace" isn't correct.
+ -t '\0' now specifies a NUL tab.
+
+2003-08-17 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (who invocation): Add an entry for -l, --login.
+ Remove `-l' from the entry for --lookup.
+ (who invocation): Begin adding missing option documentation.
+
+2003-08-07 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (split invocation):
+ Add -d or --numeric-suffixes option to 'split'.
+
+2003-07-31 Paul Eggert <eggert@twinsun.com>
+
+ * getdate.texi (General date syntax): Add --rfc-2822 option to GNU date.
+ * coreutils.texi (Options for date): Fix a typo in format:
+ it's now %d not %_d. Add URLs.
+
+2003-07-31 Paul Eggert <eggert@twinsun.com>
+
+ * getdate.texi (Relative items in date strings): Warn about
+ fuzz in relative units.
+
+2003-07-29 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (tail invocation): Restore two end-of-sentence words
+ that were mistakenly removed on 2002-09-13. Reported by Paul Worrall.
+
+2003-07-28 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (dd invocation): Explain that a SIGUSR1 signal
+ makes dd give a progress report to stderr.
+
+2003-07-24 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi: Document changes of 2003-07-24.
+
+2003-07-24 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (su invocation): Use `@subsection', not invalid
+ `@heading'.
+
+2003-07-17 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (expr invocation): Exit status is 2 if the
+ expression is syntactically invalid, 3 if there is some other error.
+ This change is for conformance to POSIX.
+
+2003-07-14 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (uname invocation): Explain the POSIX
+ terminology behind uname -m and uname -s.
+
+2003-07-13 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (chown invocation): Warn that chown
+ now clears set-user-ID and set-group-ID bits on some systems.
+ From Bob Proulx.
+ (nohup invocation): Tell what happens when stdout is not a terminal.
+ Based on a suggestion from Steven Mocking.
+
+2003-07-10 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (Standards conformance): Mention that uses like
+ `tail -1' and `head -1', like `sort +1', are non conforming.
+ (chown invocation): Say that using `.' as a separator may not work.
+
+2003-06-25 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (Time directives) [%s]: Add a cross reference
+ to the related examples.
+ (Examples of date): Add an @anchor here, along with a few more examples.
+ Suggestion from Dan Jacobson.
+
+2003-06-12 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (wc invocation): Tweak wording: wc prints counts in
+ the order `newline, word, byte'. Suggestion from Keith M. Briggs.
+ Also change `lines' to `newlines'.
+
+2003-05-14 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (head invocation): Document --bytes=-N and --lines=-N.
+
+2003-05-13 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (uniq invocation, squeezing, The uniq command):
+ Use "repeated" rather than "duplicate" to describe adjacent
+ duplicates; this simplifies the description and makes it more
+ consistent with POSIX.
+ (uniq invocation): Make it clear that -d and -u suppress the
+ output of lines, rather than cause some lines to be output.
+ Mention what happens if a line lacks enough fields or characters.
+
+2003-05-13 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (true invocation): Mention that it is possible to
+ make true --help or true --version (in non-POSIX mode) exit nonzero.
+ Suggestion from Paul Eggert.
+
+2003-05-10 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (Exit status): Remove `uniq' from the list.
+ It uses standard exit codes.
+ (More details about version sort): Note that strverscmp, and hence
+ `ls -v', does not use LC_COLLATE. Reported by From: Andrey Borzenkov.
+
+2003-04-21 Jim Meyering <jim@meyering.net>
+
+ Fix printf POSIX compatibility bug reported by Ben Harris in
+ <http://mail.gnu.org/archive/html/bug-coreutils/2003-04/msg00070.html>.
+ * coreutils.texi (printf invocation): It's \NNN in the format,
+ \0NNN in the %b operand.
+
+2003-04-10 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (check-texinfo): Check for uses of non-zero.
+ I prefer to spell it `nonzero'.
+
+ * coreutils.texi (readlink invocation): Tweak description a little.
+
+2003-04-04 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (constants.texi): Rename target (thus enabling it),
+ now that fileutils, textutils, and sh-utils have been merged.
+ (MAINTAINERCLEANFILES): Define.
+
+2003-04-02 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (false invocation): Note that false exits
+ unsuccessfully even with --help and --version.
+
+ * Makefile.am (check-texinfo): Don't fail if perl is missing.
+ Reported by Nelson Beebe.
+
+2003-03-27 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (printf invocation): Fix formatting bugs.
+ From Paul Eggert.
+ (sort invocation): Describe sort's --stable (-s) option.
+
+2003-03-13 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (shred invocation): Mention that --exact
+ is now the default for non-regular files.
+
+2003-03-02 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (Exit status): New section.
+ Suggestion from Michael Stone.
+
+2003-02-21 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (du invocation): Document --apparent-size.
+ Adjust documentation of --bytes (-b).
+ (stat invocation): Describe %B.
+
+2003-02-07 Richard Dawe <rich@phekda.freeserve.co.uk>
+
+ * coreutils.texi: Use @command instead of @code for program names.
+
+ * perm.texi (Mode Structure): Mention filesystem-specific
+ permissions and that mounting a filesystem as read-only may
+ override actual file permissions. Use @command instead
+ of @code for program names.
+
+2003-02-06 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi: Adjust alignment and mention `file, text, shell'
+ on the `* Coreutils:...' dirently line. From Karl Berry.
+
+2003-02-05 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (check-texinfo): Allow bare `POSIX' to be used on
+ direntry lines.
+
+ * coreutils.texi: Use new form of @direntry.
+ Put unlink in its proper place. Adjust wording in some
+ dir entry descriptions, mainly so they fit in 80 columns.
+ Don't use mark-up like @acronym{POSIX} in direntries.
+ Mostly from Karl Berry.
+
+2003-01-25 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (cut invocation): Describe new functionality of
+ --output-delimiter=STR.
+
+2003-01-24 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (The cut command): Give an example of using cut -c
+ with an output delimiter. From Jan Nieuwenhuizen.
+
+ * coreutils.texi (The cut command): Extend the new example a little.
+ (Formatting file timestamps): Fix typo: s/%M:S/%M:%S/.
+
+ * coreutils.texi: Change each use of `Core-utils' to `Coreutils'.
+ From Karl Berry.
+
+2003-01-19 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (Which files are listed): Document new option:
+ --dereference-command-line-symlink-to-dir.
+
+2003-01-15 Paul Eggert <eggert@twinsun.com>
+
+ Change ls -H back to the way it was yesterday, since this is
+ compatible with FreeBSD and the POSIX spec is confusing
+ and somewhat contradictory.
+
+ * coreutils.texi (Which files are listed, General output
+ formatting): Undo last change.
+
+2003-01-15 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (General output formatting): Reflect option name change:
+ s/--dereference-command-line/--dereference-command-line-symlink-to-dir/.
+ Say that this option changes how ls treats only symlinks to directories
+ specified on the command line.
+
+2002-08-27 Dmitry V. Levin <ldv@altlinux.org>
+
+ * coreutils.texi: Document readlink.
+
+2002-12-14 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (mknod invocation): Specify how major and minor mode
+ numbers are interpreted. Report forwarded by Kristin E Thomas.
+
+2002-11-13 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (Examples of expr): Remove bogus `^'s.
+ Reported by Thomas Goerlich.
+
+2002-11-09 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (What information is listed) [--dired]:
+ Correct parts of --dired description. Reported by Andre Spiegel.
+ Include a lot more description, with examples.
+
+2002-11-06 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (printf invocation): Fix typo in index:
+ change \0x prefix to \x.
+ Change \xhhh to \xhh.
+
+2002-10-07 Paul Eggert <eggert@twinsun.com>
+
+ Add support for locale-specific size indications (e.g.,
+ thousands-separators) and for explicit size suffixes on output.
+
+ * coreutils.texi (Block size): Say that:
+ This affects display format as well as block size.
+ Fractional block counts are rounded up.
+ ls file size blocksize defaults to 1.
+ A block size spec preceded by ' generates thousands separators.
+ A suffix without a preceding integer generates suffixes.
+ (tail invocation): 32k -> 32 KiB.
+ (What information is listed): ls -h is now equivalent to
+ ls --block-size=human, and ls -H is now equivalent to
+ ls --block-size=si. Displayed file size is now always affected by
+ --block-size.
+
+2002-09-13 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (tail invocation): In --sleep-interval=NUMBER,
+ NUMBER may now be a floating point number.
+ (stat invocation): Remove references to now-removed %S and %C.
+ (Time directives) [%S]: Explain why the range is [0..60].
+
+2002-08-30 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi [START-INFO-DIR-ENTRY]: Don't use sc{} on LHS.
+ Fix typo: s/permission/permissions/. From Michail Litvak.
+
+2002-08-02 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (uniq invocation): uniq now obeys LC_COLLATE.
+
+2002-07-29 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (nohup invocation): Change behavior to conform to
+ POSIX 1003.1-2001:
+ - Do not adjust scheduling priority.
+ - Redirects stderr to stdout, if stderr is not a terminal.
+ - Exit status is now 126 if command was found but not invoked,
+ 127 if nohup failed or if command was not found.
+
+2002-07-24 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (Time directives): Document %P, %R, %e, %F,
+ %g, %G, and %V
+
+2002-07-22 Martin Michlmayr <tbm@cyrius.com>
+
+ * coreutils.texi (Formatting the file names): Document
+ that -N/--literal are equivalent to --quoting-style=literal.
+ Reported by Oskar Liljeblad as Debian bug#103612.
+
+2002-07-10 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (du invocation): s/PAT/PATTERN/.
+ From Martin Michlmayr.
+
+2002-07-08 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (cp invocation): Remove unnecessary "$@" in example;
+ Texinfo would render the @" as an umlaut over the following character.
+ From Paul Eggert.
+ * Makefile.am (check-texinfo): Check for the above.
+
+2002-07-06 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (stat invocation): Remove description of --secure.
+
+2002-07-03 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (stat invocation): Rename --link/-l
+ to --dereference/-L. Rewrite description of --dereference.
+
+2002-06-26 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (Putting the tools together): Don't mention egrep,
+ since it's not part of POSIX 1003.1-2001.
+
+2002-06-21 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (stat invocation): New section. From Michael Meskes.
+
+2002-05-19 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (ls invocation): Document new option: --author.
+
+2002-06-03 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (rm invocation): Add the warning (also in the --help
+ output) that the contents of a removed file are often recoverable.
+
+2002-05-27 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (check-texinfo): Adapt to reflect that now we use
+ @acronym{POSIX}.
+
+2002-05-26 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi: Use @acronym in place of most uses of @sc.
+ * getdate.texi (Date input formats): Likewise.
+
+2002-04-28 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi: Change `@code{PROG}' to `@command{PROG}'.
+
+2002-04-28 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (kill invocation): Document the above.
+ Document POSIX signals better.
+
+2002-04-15 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi: Document kill.
+ Written by Marcus Brinkmann.
+
+2002-04-13 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi: Document link and unlink.
+
+2002-04-08 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi: Use new directives, @copying and @insertcopying,
+ thus now requiring texinfo-4.2 to create the .info file.
+
+2002-02-26 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (File characteristic tests): Document the
+ behavior of test -nt and -ot when one of the files does not exist,
+ using the same behavior that is documented in ksh93.
+
+2002-03-05 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (cut invocation): Say that selected input is
+ written in the same order that it is read, and is written
+ exactly once.
+
+2002-03-03 Paul Eggert <eggert@twinsun.com>
+
+ Make cp -r equivalent to cp -R. Add a new cp option --copy-contents
+ for people who want to emulate the traditional (and rarely desirable)
+ cp -r behavior.
+
+ * coreutils.texi (cp invocation): Document this.
+ Fix some related minor bugs: --no-dereference is no longer
+ equivalent to -d, and --archive (-a) can override the other
+ symlink options. Warn that cp -R is not portable on symbolic
+ links unless you also specify -P.
+
+2002-03-02 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (cp invocation): Document that cp -r
+ preserves symlinks. Emphasize non-portability of cp -r.
+
+2002-02-27 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (Time directives): Add %N for nanoseconds.
+ This documents the recent change to 'ls'.
+
+2002-02-28 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (pr invocation): Reword to avoid using `:'
+ in an @opindex entry -- info doesn't permit it.
+
+2002-02-27 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (Formatting file timestamps): Document new
+ time-formatting method: --time-style=+FORMAT.
+
+2002-02-18 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (seq invocation): In the example, use "tail
+ -n 3", not "tail -3", to conform to POSIX 1003.1-2001.
+
+2002-02-17 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (tsort background): New section.
+ From Ian Lance Taylor.
+ (tsort invocation): Add a more realistic example.
+
+2002-02-15 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi: Document _POSIX2_VERSION.
+ (Standards Conformance): New section.
+
+2002-01-24 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (START-INFO-DIR-ENTRY): Remove a few entries
+ and clean up a few others based on suggestions from Bob Proulx.
+
+2002-02-14 Paul Eggert <eggert@twinsun.com>
+
+ Add support for POSIX 1003.1-2001, which requires removal for
+ support of obsolete "+" option syntax in sort, tail, and uniq.
+ * coreutils.texi: Document this. (Also, document a similar
+ change to "touch", for fileutils).
+
+2002-01-12 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (shred invocation): List some journaled filesystems.
+
+2001-11-10 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (Date directives): Document %u.
+
+2001-11-07 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (paste invocation): Give examples.
+ Thanks to Dan Jacobson for suggesting the examples.
+
+2001-11-05 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (sort invocation): Recommend setting LC_ALL=C,
+ not LC_COLLATE=C. Explain how the latter can cause problems.
+ Based on a message from Paul Eggert.
+ (ls invocation): Recommend setting LC_ALL=C, not LC_COLLATE=C.
+
+2001-10-21 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (cp invocation): Describe --reply=...
+
+2001-10-17 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (cp invocation): `cp --no-dereference' is
+ no longer equivalent to `cp -d'.
+ `cp -d' is equivalent to `--no-dereference --preserve=links'.
+ cp's -P option means --no-dereference, not --parents.
+ Describe new optional argument to --preserve.
+ Describe new option: --no-preserve=ATTRIBUTE_LIST.
+
+2001-09-23 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (check-texinfo): Redirect stderr of `grep -w' to
+ /dev/null, so people with old versions of grep don't see the failure.
+
+2001-09-16 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (mv invocation): Describe new option:
+ --reply={yes,no,query}. Fix a few typos.
+
+2001-09-15 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (uniq invocation): The input need not
+ be sorted. Try to clarify -d versus -D versus -u.
+
+2001-09-12 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (tail invocation): Document new option: -F.
+ From Herbert Xu.
+
+2001-09-04 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi (join invocation): Describe the GNU
+ extension to join, which does not require sorted input when
+ the input contains no unpairable lines.
+
+2001-09-03 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi:
+ New 'uname' options -i or --hardware-platform,
+ and -o or --operating-system.
+ 'uname -a' now outputs -i and -o information at the end.
+ New uname option --kernel-version is an alias for -v.
+ Uname option --release has been renamed to --kernel-release,
+ and --sysname has been renamed to --kernel-name;
+ the old options will work for a while, but are no longer documented.
+
+2001-08-24 Herbert Xu <herbert@gondor.apana.org.au>
+
+ * coreutils.texi (cut invocation): Document how cut treats lines
+ with no separators.
+
+2001-06-19 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi: expr now uses LC_COLLATE for string comparison,
+ as per POSIX.
+
+2001-08-25 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi: Use @option, rather than @samp everywhere.
+
+2001-06-21 Paul Eggert <eggert@twinsun.com>
+
+ * coreutils.texi: 'expr' now requires '+' rather than 'quote'
+ to quote tokens.
+
+2001-07-14 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (cp invocation): Reflect 2001-07-08 change to
+ cp (via copy.c).
+
+2001-06-16 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (info_TEXINFOS): Reflect renaming: s/omni-/core/.
+ * coreutils.texi: Likewise.
+
+ * coreutils.texi: New, renamed from omni-utils.texi.
+ * omni-utils.texi: Removed, renamed to coreutils.texi.
+
+ * omni-utils.texi (ls invocation): Mention the effect of locale.
+ Reported by Keith Thompson.
+
+2001-05-24 Jim Meyering <jim@meyering.net>
+
+ * texinfo.tex: Update from master source.
+
+ * omni-utils.texi (ls invocation): Document more clearly what ls
+ does when given no arguments.
+
+2001-05-21 Jim Meyering <jim@meyering.net>
+
+ * textutils.texi: Remove file.
+
+ * Makefile.am ($(DVIS), $(INFO_DEPS)): Depend on $(EXTRA_DIST).
+ (DISABLED_constants.texi): New rule -- disabled for now.
+
+ This directory is now shared by fileutils, textutils, and sh-utils.
+
+
+ -----
+
+ Copyright (C) 2001, 2003, 2004, 2005, 2006 Free Software
+ Foundation, Inc.
+
+ Copying and distribution of this file, with or without
+ modification, are permitted provided the copyright notice
+ and this notice are preserved.
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 0000000..e0e2ee5
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,74 @@
+# Make coreutils documentation. -*-Makefile-*-
+
+# Copyright (C) 1995, 1996, 1997, 1998, 2001, 2002, 2003, 2004, 2005,
+# 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+info_TEXINFOS = coreutils.texi
+
+EXTRA_DIST = perm.texi getdate.texi constants.texi fdl.texi
+
+# The following is necessary if the package name is 8 characters or longer.
+# If the info documentation would be split into 10 or more separate files,
+# then this is necessary even if the package name is 7 characters long.
+#
+# Tell makeinfo to put everything in a single info file: <package>.info.
+# Otherwise, it would also generate files with names like <package>.info-[123],
+# and those names all map to one 14-byte name (<package>.info-) on some crufty
+# old systems.
+AM_MAKEINFOFLAGS = --no-split
+
+constants.texi: $(top_srcdir)/src/tail.c
+ LC_ALL=C \
+ sed -n -e 's/^#define \(DEFAULT_MAX[_A-Z]*\) \(.*\)/@set \1 \2/p' \
+ $(top_srcdir)/src/tail.c > t-$@
+ mv t-$@ $@
+
+MAINTAINERCLEANFILES = constants.texi
+
+$(DVIS): $(EXTRA_DIST)
+$(INFO_DEPS): $(EXTRA_DIST)
+
+# Extended regular expressions to match word starts and ends.
+_W = (^|[^A-Za-z0-9_])
+W_ = ([^A-Za-z0-9_]|$$)
+
+# List words/regexps here that should not appear in the texinfo documentation.
+# E.g., use @sc{nul}, not `NUL'
+# Use `time zone', not `timezone'.
+# Use `zeros', not `zeroes' (nothing wrong with `zeroes'. just be consistent).
+check-texinfo:
+ fail=0; \
+ grep timezone $(srcdir)/*.texi && fail=1; \
+ $(EGREP) '$(_W)IO$(W_)' $(srcdir)/*.texi && fail=1; \
+ grep non-zero $(srcdir)/*.texi && fail=1; \
+ grep '@url{' $(srcdir)/*.texi && fail=1; \
+ $(EGREP) '$(_W)NUL$(W_)' $(srcdir)/*.texi && fail=1; \
+ grep '\$$@"' $(srcdir)/*.texi && fail=1; \
+ grep -n '[^[:punct:]]@footnote' $(srcdir)/*.texi && fail=1; \
+ grep -n filename $(srcdir)/*.texi|$(EGREP) -v 'setfilename|[{]filename[}]' \
+ && fail=1; \
+ $(PERL) -e 1 2> /dev/null && { $(PERL) -ne \
+ '/\bPOSIX\b/ && !/\@acronym{POSIX}/ && !/^\* / || /{posix}/ and print,exit 1' \
+ $(srcdir)/*.texi 2> /dev/null || fail=1; }; \
+ $(EGREP) -i '$(_W)zeroes$(W_)' $(srcdir)/*.texi && fail=1; \
+ $(EGREP) -i '$(_W)builtins?$(W_)' $(srcdir)/*.texi && fail=1; \
+ $(EGREP) -i '$(_W)path(name)?s?$(W_)' $(srcdir)/*.texi \
+ | $(EGREP) -v '@vindex PATH$$|@env[{]PATH[}]' && fail=1; \
+ exit $$fail
+
+check: check-texinfo
diff --git a/doc/Makefile.in b/doc/Makefile.in
new file mode 100644
index 0000000..ca84e92
--- /dev/null
+++ b/doc/Makefile.in
@@ -0,0 +1,976 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils documentation. -*-Makefile-*-
+
+# Copyright (C) 1995, 1996, 1997, 1998, 2001, 2002, 2003, 2004, 2005,
+# 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/stamp-vti $(srcdir)/version.texi ChangeLog
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+INFO_DEPS = $(srcdir)/coreutils.info
+TEXINFO_TEX = $(top_srcdir)/build-aux/texinfo.tex
+am__TEXINFO_TEX_DIR = $(top_srcdir)/build-aux
+DVIS = coreutils.dvi
+PDFS = coreutils.pdf
+PSS = coreutils.ps
+HTMLS = coreutils.html
+TEXINFOS = coreutils.texi
+TEXI2DVI = texi2dvi
+TEXI2PDF = $(TEXI2DVI) --pdf --batch
+MAKEINFOHTML = $(MAKEINFO) --html
+AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
+DVIPS = dvips
+am__installdirs = "$(DESTDIR)$(infodir)"
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+info_TEXINFOS = coreutils.texi
+EXTRA_DIST = perm.texi getdate.texi constants.texi fdl.texi
+
+# The following is necessary if the package name is 8 characters or longer.
+# If the info documentation would be split into 10 or more separate files,
+# then this is necessary even if the package name is 7 characters long.
+#
+# Tell makeinfo to put everything in a single info file: <package>.info.
+# Otherwise, it would also generate files with names like <package>.info-[123],
+# and those names all map to one 14-byte name (<package>.info-) on some crufty
+# old systems.
+AM_MAKEINFOFLAGS = --no-split
+MAINTAINERCLEANFILES = constants.texi
+
+# Extended regular expressions to match word starts and ends.
+_W = (^|[^A-Za-z0-9_])
+W_ = ([^A-Za-z0-9_]|$$)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .dvi .html .info .pdf .ps .texi
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+.texi.info:
+ restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+ am__cwd=`pwd` && cd $(srcdir) && \
+ rm -rf $$backupdir && mkdir $$backupdir && \
+ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+ done; \
+ else :; fi && \
+ cd "$$am__cwd"; \
+ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+ -o $@ $<; \
+ then \
+ rc=0; \
+ cd $(srcdir); \
+ else \
+ rc=$$?; \
+ cd $(srcdir) && \
+ $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+ fi; \
+ rm -rf $$backupdir; exit $$rc
+
+.texi.dvi:
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+ $(TEXI2DVI) $<
+
+.texi.pdf:
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+ $(TEXI2PDF) $<
+
+.texi.html:
+ rm -rf $(@:.html=.htp)
+ if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+ -o $(@:.html=.htp) $<; \
+ then \
+ rm -rf $@; \
+ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+ mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
+ else \
+ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+ rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
+ exit 1; \
+ fi
+$(srcdir)/coreutils.info: coreutils.texi $(srcdir)/version.texi
+coreutils.dvi: coreutils.texi $(srcdir)/version.texi
+coreutils.pdf: coreutils.texi $(srcdir)/version.texi
+coreutils.html: coreutils.texi $(srcdir)/version.texi
+$(srcdir)/version.texi: $(srcdir)/stamp-vti
+$(srcdir)/stamp-vti: coreutils.texi $(top_srcdir)/configure
+ @(dir=.; test -f ./coreutils.texi || dir=$(srcdir); \
+ set `$(SHELL) $(top_srcdir)/build-aux/mdate-sh $$dir/coreutils.texi`; \
+ echo "@set UPDATED $$1 $$2 $$3"; \
+ echo "@set UPDATED-MONTH $$2 $$3"; \
+ echo "@set EDITION $(VERSION)"; \
+ echo "@set VERSION $(VERSION)") > vti.tmp
+ @cmp -s vti.tmp $(srcdir)/version.texi \
+ || (echo "Updating $(srcdir)/version.texi"; \
+ cp vti.tmp $(srcdir)/version.texi)
+ -@rm -f vti.tmp
+ @cp $(srcdir)/version.texi $@
+
+mostlyclean-vti:
+ -rm -f vti.tmp
+
+maintainer-clean-vti:
+ -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
+.dvi.ps:
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ $(DVIPS) -o $@ $<
+
+uninstall-dvi-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(DVIS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
+ rm -f "$(DESTDIR)$(dvidir)/$$f"; \
+ done
+
+uninstall-html-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(HTMLS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
+ rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
+ done
+
+uninstall-info-am:
+ @$(PRE_UNINSTALL)
+ @if test -d '$(DESTDIR)$(infodir)' && \
+ (install-info --version && \
+ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+ list='$(INFO_DEPS)'; \
+ for file in $$list; do \
+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
+ echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
+ install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
+ done; \
+ else :; fi
+ @$(NORMAL_UNINSTALL)
+ @list='$(INFO_DEPS)'; \
+ for file in $$list; do \
+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
+ relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
+ (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \
+ echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
+ rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
+ else :; fi); \
+ done
+
+uninstall-pdf-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(PDFS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
+ done
+
+uninstall-ps-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(PSS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(psdir)/$$f"; \
+ done
+
+dist-info: $(INFO_DEPS)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ list='$(INFO_DEPS)'; \
+ for base in $$list; do \
+ case $$base in \
+ $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
+ esac; \
+ if test -f $$base; then d=.; else d=$(srcdir); fi; \
+ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
+ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
+ if test -f $$file; then \
+ relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+ test -f $(distdir)/$$relfile || \
+ cp -p $$file $(distdir)/$$relfile; \
+ else :; fi; \
+ done; \
+ done
+
+mostlyclean-aminfo:
+ -rm -rf coreutils.aux coreutils.cp coreutils.cps coreutils.fl coreutils.fn \
+ coreutils.ky coreutils.log coreutils.op coreutils.pg \
+ coreutils.tmp coreutils.toc coreutils.tp coreutils.tps \
+ coreutils.vr coreutils.dvi coreutils.pdf coreutils.ps \
+ coreutils.html
+
+maintainer-clean-aminfo:
+ @list='$(INFO_DEPS)'; for i in $$list; do \
+ i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
+ echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
+ rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
+ done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-info
+check-am: all-am
+check: check-am
+all-am: Makefile $(INFO_DEPS)
+installdirs:
+ for dir in "$(DESTDIR)$(infodir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am: $(DVIS)
+
+html: html-am
+
+html-am: $(HTMLS)
+
+info: info-am
+
+info-am: $(INFO_DEPS)
+
+install-data-am: install-info-am
+
+install-dvi: install-dvi-am
+
+install-dvi-am: $(DVIS)
+ @$(NORMAL_INSTALL)
+ test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
+ @list='$(DVIS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(dvidir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(dvidir)/$$f"; \
+ done
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am: $(HTMLS)
+ @$(NORMAL_INSTALL)
+ test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
+ @list='$(HTMLS)'; for p in $$list; do \
+ if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ if test -d "$$d$$p"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
+ $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
+ echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \
+ else \
+ echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \
+ fi; \
+ done
+install-info: install-info-am
+
+install-info-am: $(INFO_DEPS)
+ @$(NORMAL_INSTALL)
+ test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ list='$(INFO_DEPS)'; \
+ for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ esac; \
+ if test -f $$file; then d=.; else d=$(srcdir); fi; \
+ file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
+ for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
+ $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
+ if test -f $$ifile; then \
+ relfile=`echo "$$ifile" | sed 's|^.*/||'`; \
+ echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \
+ $(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \
+ else : ; fi; \
+ done; \
+ done
+ @$(POST_INSTALL)
+ @if (install-info --version && \
+ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+ list='$(INFO_DEPS)'; \
+ for file in $$list; do \
+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
+ echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
+ install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
+ done; \
+ else : ; fi
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am: $(PDFS)
+ @$(NORMAL_INSTALL)
+ test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
+ @list='$(PDFS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/$$f"; \
+ done
+install-ps: install-ps-am
+
+install-ps-am: $(PSS)
+ @$(NORMAL_INSTALL)
+ test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
+ @list='$(PSS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(psdir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(psdir)/$$f"; \
+ done
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-aminfo \
+ maintainer-clean-generic maintainer-clean-vti
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-aminfo mostlyclean-generic mostlyclean-vti
+
+pdf: pdf-am
+
+pdf-am: $(PDFS)
+
+ps: ps-am
+
+ps-am: $(PSS)
+
+uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
+ uninstall-pdf-am uninstall-ps-am
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic dist-info \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-aminfo \
+ maintainer-clean-generic maintainer-clean-vti mostlyclean \
+ mostlyclean-aminfo mostlyclean-generic mostlyclean-vti pdf \
+ pdf-am ps ps-am uninstall uninstall-am uninstall-dvi-am \
+ uninstall-html-am uninstall-info-am uninstall-pdf-am \
+ uninstall-ps-am
+
+
+constants.texi: $(top_srcdir)/src/tail.c
+ LC_ALL=C \
+ sed -n -e 's/^#define \(DEFAULT_MAX[_A-Z]*\) \(.*\)/@set \1 \2/p' \
+ $(top_srcdir)/src/tail.c > t-$@
+ mv t-$@ $@
+
+$(DVIS): $(EXTRA_DIST)
+$(INFO_DEPS): $(EXTRA_DIST)
+
+# List words/regexps here that should not appear in the texinfo documentation.
+# E.g., use @sc{nul}, not `NUL'
+# Use `time zone', not `timezone'.
+# Use `zeros', not `zeroes' (nothing wrong with `zeroes'. just be consistent).
+check-texinfo:
+ fail=0; \
+ grep timezone $(srcdir)/*.texi && fail=1; \
+ $(EGREP) '$(_W)IO$(W_)' $(srcdir)/*.texi && fail=1; \
+ grep non-zero $(srcdir)/*.texi && fail=1; \
+ grep '@url{' $(srcdir)/*.texi && fail=1; \
+ $(EGREP) '$(_W)NUL$(W_)' $(srcdir)/*.texi && fail=1; \
+ grep '\$$@"' $(srcdir)/*.texi && fail=1; \
+ grep -n '[^[:punct:]]@footnote' $(srcdir)/*.texi && fail=1; \
+ grep -n filename $(srcdir)/*.texi|$(EGREP) -v 'setfilename|[{]filename[}]' \
+ && fail=1; \
+ $(PERL) -e 1 2> /dev/null && { $(PERL) -ne \
+ '/\bPOSIX\b/ && !/\@acronym{POSIX}/ && !/^\* / || /{posix}/ and print,exit 1' \
+ $(srcdir)/*.texi 2> /dev/null || fail=1; }; \
+ $(EGREP) -i '$(_W)zeroes$(W_)' $(srcdir)/*.texi && fail=1; \
+ $(EGREP) -i '$(_W)builtins?$(W_)' $(srcdir)/*.texi && fail=1; \
+ $(EGREP) -i '$(_W)path(name)?s?$(W_)' $(srcdir)/*.texi \
+ | $(EGREP) -v '@vindex PATH$$|@env[{]PATH[}]' && fail=1; \
+ exit $$fail
+
+check: check-texinfo
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/constants.texi b/doc/constants.texi
new file mode 100644
index 0000000..f6bffca
--- /dev/null
+++ b/doc/constants.texi
@@ -0,0 +1 @@
+@set DEFAULT_MAX_N_UNCHANGED_STATS_BETWEEN_OPENS 5
diff --git a/doc/coreutils.info b/doc/coreutils.info
new file mode 100644
index 0000000..4589ca2
--- /dev/null
+++ b/doc/coreutils.info
@@ -0,0 +1,15863 @@
+This is coreutils.info, produced by makeinfo version 4.8 from
+coreutils.texi.
+
+INFO-DIR-SECTION Basics
+START-INFO-DIR-ENTRY
+* Coreutils: (coreutils). Core GNU (file, text, shell) utilities.
+* Common options: (coreutils)Common options. Common options.
+* File permissions: (coreutils)File permissions. Access modes.
+* Date input formats: (coreutils)Date input formats.
+END-INFO-DIR-ENTRY
+
+INFO-DIR-SECTION Individual utilities
+START-INFO-DIR-ENTRY
+* base64: (coreutils)base64 invocation. Base64 encode/decode data.
+* basename: (coreutils)basename invocation. Strip directory and suffix.
+* cat: (coreutils)cat invocation. Concatenate and write files.
+* chgrp: (coreutils)chgrp invocation. Change file groups.
+* chmod: (coreutils)chmod invocation. Change file permissions.
+* chown: (coreutils)chown invocation. Change file owners/groups.
+* chroot: (coreutils)chroot invocation. Specify the root directory.
+* cksum: (coreutils)cksum invocation. Print POSIX CRC checksum.
+* comm: (coreutils)comm invocation. Compare sorted files by line.
+* cp: (coreutils)cp invocation. Copy files.
+* csplit: (coreutils)csplit invocation. Split by context.
+* cut: (coreutils)cut invocation. Print selected parts of lines.
+* date: (coreutils)date invocation. Print/set system date and time.
+* dd: (coreutils)dd invocation. Copy and convert a file.
+* df: (coreutils)df invocation. Report file system disk usage.
+* dir: (coreutils)dir invocation. List directories briefly.
+* dircolors: (coreutils)dircolors invocation. Color setup for ls.
+* dirname: (coreutils)dirname invocation. Strip non-directory suffix.
+* du: (coreutils)du invocation. Report on disk usage.
+* echo: (coreutils)echo invocation. Print a line of text.
+* env: (coreutils)env invocation. Modify the environment.
+* expand: (coreutils)expand invocation. Convert tabs to spaces.
+* expr: (coreutils)expr invocation. Evaluate expressions.
+* factor: (coreutils)factor invocation. Print prime factors
+* false: (coreutils)false invocation. Do nothing, unsuccessfully.
+* fmt: (coreutils)fmt invocation. Reformat paragraph text.
+* fold: (coreutils)fold invocation. Wrap long input lines.
+* groups: (coreutils)groups invocation. Print group names a user is in.
+* head: (coreutils)head invocation. Output the first part of files.
+* hostid: (coreutils)hostid invocation. Print numeric host identifier.
+* hostname: (coreutils)hostname invocation. Print or set system name.
+* id: (coreutils)id invocation. Print user identity.
+* install: (coreutils)install invocation. Copy and change attributes.
+* join: (coreutils)join invocation. Join lines on a common field.
+* kill: (coreutils)kill invocation. Send a signal to processes.
+* link: (coreutils)link invocation. Make hard links between files.
+* ln: (coreutils)ln invocation. Make links between files.
+* logname: (coreutils)logname invocation. Print current login name.
+* ls: (coreutils)ls invocation. List directory contents.
+* md5sum: (coreutils)md5sum invocation. Print or check MD5 digests.
+* mkdir: (coreutils)mkdir invocation. Create directories.
+* mkfifo: (coreutils)mkfifo invocation. Create FIFOs (named pipes).
+* mknod: (coreutils)mknod invocation. Create special files.
+* mv: (coreutils)mv invocation. Rename files.
+* nice: (coreutils)nice invocation. Modify niceness.
+* nl: (coreutils)nl invocation. Number lines and write files.
+* nohup: (coreutils)nohup invocation. Immunize to hangups.
+* od: (coreutils)od invocation. Dump files in octal, etc.
+* paste: (coreutils)paste invocation. Merge lines of files.
+* pathchk: (coreutils)pathchk invocation. Check file name portability.
+* pr: (coreutils)pr invocation. Paginate or columnate files.
+* printenv: (coreutils)printenv invocation. Print environment variables.
+* printf: (coreutils)printf invocation. Format and print data.
+* ptx: (coreutils)ptx invocation. Produce permuted indexes.
+* pwd: (coreutils)pwd invocation. Print working directory.
+* readlink: (coreutils)readlink invocation. Print referent of a symlink.
+* rm: (coreutils)rm invocation. Remove files.
+* rmdir: (coreutils)rmdir invocation. Remove empty directories.
+* seq: (coreutils)seq invocation. Print numeric sequences
+* sha1sum: (coreutils)sha1sum invocation. Print or check SHA-1 digests.
+* sha2: (coreutils)sha2 utilities. Print or check SHA-2 digests.
+* shred: (coreutils)shred invocation. Remove files more securely.
+* shuf: (coreutils)shuf invocation. Shuffling text files.
+* sleep: (coreutils)sleep invocation. Delay for a specified time.
+* sort: (coreutils)sort invocation. Sort text files.
+* split: (coreutils)split invocation. Split into fixed-size pieces.
+* stat: (coreutils)stat invocation. Report file(system) status.
+* stty: (coreutils)stty invocation. Print/change terminal settings.
+* su: (coreutils)su invocation. Modify user and group ID.
+* sum: (coreutils)sum invocation. Print traditional checksum.
+* sync: (coreutils)sync invocation. Synchronize memory and disk.
+* tac: (coreutils)tac invocation. Reverse files.
+* tail: (coreutils)tail invocation. Output the last part of files.
+* tee: (coreutils)tee invocation. Redirect to multiple files.
+* test: (coreutils)test invocation. File/string tests.
+* touch: (coreutils)touch invocation. Change file timestamps.
+* tr: (coreutils)tr invocation. Translate characters.
+* true: (coreutils)true invocation. Do nothing, successfully.
+* tsort: (coreutils)tsort invocation. Topological sort.
+* tty: (coreutils)tty invocation. Print terminal name.
+* uname: (coreutils)uname invocation. Print system information.
+* unexpand: (coreutils)unexpand invocation. Convert spaces to tabs.
+* uniq: (coreutils)uniq invocation. Uniquify files.
+* unlink: (coreutils)unlink invocation. Removal via unlink(2).
+* users: (coreutils)users invocation. Print current user names.
+* vdir: (coreutils)vdir invocation. List directories verbosely.
+* wc: (coreutils)wc invocation. Line, word, and byte counts.
+* who: (coreutils)who invocation. Print who is logged in.
+* whoami: (coreutils)whoami invocation. Print effective user ID.
+* yes: (coreutils)yes invocation. Print a string indefinitely.
+END-INFO-DIR-ENTRY
+
+ This manual documents version 6.9 of the GNU core utilities,
+including the standard programs for text and file manipulation.
+
+ Copyright (C) 1994, 1995, 1996, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.2 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, with no Front-Cover Texts,
+ and with no Back-Cover Texts. A copy of the license is included
+ in the section entitled "GNU Free Documentation License".
+
+
+File: coreutils.info, Node: Top, Next: Introduction, Up: (dir)
+
+GNU Coreutils
+*************
+
+This manual documents version 6.9 of the GNU core utilities, including
+the standard programs for text and file manipulation.
+
+ Copyright (C) 1994, 1995, 1996, 2000, 2001, 2002, 2003, 2004, 2005,
+2006 Free Software Foundation, Inc.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.2 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, with no Front-Cover Texts,
+ and with no Back-Cover Texts. A copy of the license is included
+ in the section entitled "GNU Free Documentation License".
+
+* Menu:
+
+* Introduction:: Caveats, overview, and authors.
+* Common options:: Common options.
+* Output of entire files:: cat tac nl od
+* Formatting file contents:: fmt pr fold
+* Output of parts of files:: head tail split csplit
+* Summarizing files:: wc sum cksum md5sum sha1sum sha2
+* Operating on sorted files:: sort shuf uniq comm ptx tsort
+* Operating on fields within a line:: cut paste join
+* Operating on characters:: tr expand unexpand
+* Directory listing:: ls dir vdir dircolors
+* Basic operations:: cp dd install mv rm shred
+* Special file types:: ln mkdir rmdir mkfifo mknod
+* Changing file attributes:: chgrp chmod chown touch
+* Disk usage:: df du stat sync
+* Printing text:: echo printf yes
+* Conditions:: false true test expr
+* Redirection:: tee
+* File name manipulation:: dirname basename pathchk
+* Working context:: pwd stty printenv tty
+* User information:: id logname whoami groups users who
+* System context:: date uname hostname hostid
+* Modified command invocation:: chroot env nice nohup su
+* Process control:: kill
+* Delaying:: sleep
+* Numeric operations:: factor seq
+* File permissions:: Access modes.
+* Date input formats:: Specifying date strings.
+* Opening the software toolbox:: The software tools philosophy.
+* Copying This Manual:: License for copying this manual.
+* Index:: General index.
+
+ --- The Detailed Node Listing ---
+
+Common Options
+
+* Exit status:: Indicating program success or failure.
+* Backup options:: Backup options
+* Block size:: Block size
+* Disambiguating names and IDs:: chgrp and chown owner and group syntax
+* Random sources:: Sources of random data
+* Target directory:: Target directory
+* Trailing slashes:: Trailing slashes
+* Traversing symlinks:: Traversing symlinks to directories
+* Treating / specially:: Treating / specially
+* Standards conformance:: Standards conformance
+
+Output of entire files
+
+* cat invocation:: Concatenate and write files.
+* tac invocation:: Concatenate and write files in reverse.
+* nl invocation:: Number lines and write files.
+* od invocation:: Write files in octal or other formats.
+* base64 invocation:: Transform data into printable data.
+
+Formatting file contents
+
+* fmt invocation:: Reformat paragraph text.
+* pr invocation:: Paginate or columnate files for printing.
+* fold invocation:: Wrap input lines to fit in specified width.
+
+Output of parts of files
+
+* head invocation:: Output the first part of files.
+* tail invocation:: Output the last part of files.
+* split invocation:: Split a file into fixed-size pieces.
+* csplit invocation:: Split a file into context-determined pieces.
+
+Summarizing files
+
+* wc invocation:: Print newline, word, and byte counts.
+* sum invocation:: Print checksum and block counts.
+* cksum invocation:: Print CRC checksum and byte counts.
+* md5sum invocation:: Print or check MD5 digests.
+* sha1sum invocation:: Print or check SHA-1 digests.
+* sha2 utilities:: Print or check SHA-2 digests.
+
+Operating on sorted files
+
+* sort invocation:: Sort text files.
+* shuf invocation:: Shuffle text files.
+* uniq invocation:: Uniquify files.
+* comm invocation:: Compare two sorted files line by line.
+* ptx invocation:: Produce a permuted index of file contents.
+* tsort invocation:: Topological sort.
+
+`ptx': Produce permuted indexes
+
+* General options in ptx:: Options which affect general program behavior.
+* Charset selection in ptx:: Underlying character set considerations.
+* Input processing in ptx:: Input fields, contexts, and keyword selection.
+* Output formatting in ptx:: Types of output format, and sizing the fields.
+* Compatibility in ptx:: The GNU extensions to `ptx'
+
+Operating on fields within a line
+
+* cut invocation:: Print selected parts of lines.
+* paste invocation:: Merge lines of files.
+* join invocation:: Join lines on a common field.
+
+Operating on characters
+
+* tr invocation:: Translate, squeeze, and/or delete characters.
+* expand invocation:: Convert tabs to spaces.
+* unexpand invocation:: Convert spaces to tabs.
+
+`tr': Translate, squeeze, and/or delete characters
+
+* Character sets:: Specifying sets of characters.
+* Translating:: Changing one set of characters to another.
+* Squeezing:: Squeezing repeats and deleting.
+
+Directory listing
+
+* ls invocation:: List directory contents
+* dir invocation:: Briefly list directory contents
+* vdir invocation:: Verbosely list directory contents
+* dircolors invocation:: Color setup for `ls'
+
+`ls': List directory contents
+
+* Which files are listed:: Which files are listed
+* What information is listed:: What information is listed
+* Sorting the output:: Sorting the output
+* More details about version sort:: More details about version sort
+* General output formatting:: General output formatting
+* Formatting the file names:: Formatting the file names
+
+Basic operations
+
+* cp invocation:: Copy files and directories
+* dd invocation:: Convert and copy a file
+* install invocation:: Copy files and set attributes
+* mv invocation:: Move (rename) files
+* rm invocation:: Remove files or directories
+* shred invocation:: Remove files more securely
+
+Special file types
+
+* link invocation:: Make a hard link via the link syscall
+* ln invocation:: Make links between files
+* mkdir invocation:: Make directories
+* mkfifo invocation:: Make FIFOs (named pipes)
+* mknod invocation:: Make block or character special files
+* readlink invocation:: Print the referent of a symbolic link
+* rmdir invocation:: Remove empty directories
+* unlink invocation:: Remove files via unlink syscall
+
+Changing file attributes
+
+* chown invocation:: Change file owner and group
+* chgrp invocation:: Change group ownership
+* chmod invocation:: Change access permissions
+* touch invocation:: Change file timestamps
+
+Disk usage
+
+* df invocation:: Report file system disk space usage
+* du invocation:: Estimate file space usage
+* stat invocation:: Report file or file system status
+* sync invocation:: Synchronize data on disk with memory
+
+Printing text
+
+* echo invocation:: Print a line of text
+* printf invocation:: Format and print data
+* yes invocation:: Print a string until interrupted
+
+Conditions
+
+* false invocation:: Do nothing, unsuccessfully
+* true invocation:: Do nothing, successfully
+* test invocation:: Check file types and compare values
+* expr invocation:: Evaluate expressions
+
+`test': Check file types and compare values
+
+* File type tests:: File type tests
+* Access permission tests:: Access permission tests
+* File characteristic tests:: File characteristic tests
+* String tests:: String tests
+* Numeric tests:: Numeric tests
+
+`expr': Evaluate expression
+
+* String expressions:: + : match substr index length
+* Numeric expressions:: + - * / %
+* Relations for expr:: | & < <= = == != >= >
+* Examples of expr:: Examples of using `expr'
+
+Redirection
+
+* tee invocation:: Redirect output to multiple files
+
+File name manipulation
+
+* basename invocation:: Strip directory and suffix from a file name
+* dirname invocation:: Strip non-directory suffix from a file name
+* pathchk invocation:: Check file name portability
+
+Working context
+
+* pwd invocation:: Print working directory
+* stty invocation:: Print or change terminal characteristics
+* printenv invocation:: Print all or some environment variables
+* tty invocation:: Print file name of terminal on standard input
+
+`stty': Print or change terminal characteristics
+
+* Control:: Control settings
+* Input:: Input settings
+* Output:: Output settings
+* Local:: Local settings
+* Combination:: Combination settings
+* Characters:: Special characters
+* Special:: Special settings
+
+User information
+
+* id invocation:: Print user identity
+* logname invocation:: Print current login name
+* whoami invocation:: Print effective user ID
+* groups invocation:: Print group names a user is in
+* users invocation:: Print login names of users currently logged in
+* who invocation:: Print who is currently logged in
+
+System context
+
+* date invocation:: Print or set system date and time
+* uname invocation:: Print system information
+* hostname invocation:: Print or set system name
+* hostid invocation:: Print numeric host identifier.
+
+`date': Print or set system date and time
+
+* Time conversion specifiers:: %[HIklMNpPrRsSTXzZ]
+* Date conversion specifiers:: %[aAbBcCdDeFgGhjmuUVwWxyY]
+* Literal conversion specifiers:: %[%nt]
+* Padding and other flags:: Pad with zeros, spaces, etc.
+* Setting the time:: Changing the system clock.
+* Options for date:: Instead of the current time.
+* Examples of date:: Examples.
+
+Modified command invocation
+
+* chroot invocation:: Run a command with a different root directory
+* env invocation:: Run a command in a modified environment
+* nice invocation:: Run a command with modified niceness
+* nohup invocation:: Run a command immune to hangups
+* su invocation:: Run a command with substitute user and group ID
+
+Process control
+
+* kill invocation:: Sending a signal to processes.
+
+Delaying
+
+* sleep invocation:: Delay for a specified time
+
+Numeric operations
+
+* factor invocation:: Print prime factors
+* seq invocation:: Print numeric sequences
+
+File permissions
+
+* Mode Structure:: Structure of file mode bits.
+* Symbolic Modes:: Mnemonic representation of file mode bits.
+* Numeric Modes:: File mode bits as octal numbers.
+* Directory Setuid and Setgid:: Set-user-ID and set-group-ID on directories.
+
+Date input formats
+
+* General date syntax:: Common rules.
+* Calendar date items:: 19 Dec 1994.
+* Time of day items:: 9:20pm.
+* Time zone items:: EST, PDT, GMT.
+* Day of week items:: Monday and others.
+* Relative items in date strings:: next tuesday, 2 years ago.
+* Pure numbers in date strings:: 19931219, 1440.
+* Seconds since the Epoch:: @1078100502.
+* Specifying time zone rules:: TZ="America/New_York", TZ="UTC0".
+* Authors of get_date:: Bellovin, Eggert, Salz, Berets, et al.
+
+Opening the software toolbox
+
+* Toolbox introduction:: Toolbox introduction
+* I/O redirection:: I/O redirection
+* The who command:: The `who' command
+* The cut command:: The `cut' command
+* The sort command:: The `sort' command
+* The uniq command:: The `uniq' command
+* Putting the tools together:: Putting the tools together
+
+Copying This Manual
+
+* GNU Free Documentation License:: License for copying this manual.
+
+
+File: coreutils.info, Node: Introduction, Next: Common options, Prev: Top, Up: Top
+
+1 Introduction
+**************
+
+This manual is a work in progress: many sections make no attempt to
+explain basic concepts in a way suitable for novices. Thus, if you are
+interested, please get involved in improving this manual. The entire
+GNU community will benefit.
+
+ The GNU utilities documented here are mostly compatible with the
+POSIX standard. Please report bugs to <bug-coreutils@gnu.org>.
+Remember to include the version number, machine architecture, input
+files, and any other information needed to reproduce the bug: your
+input, what you expected, what you got, and why it is wrong. Diffs are
+welcome, but please include a description of the problem as well, since
+this is sometimes difficult to infer. *Note Bugs: (gcc)Bugs.
+
+ This manual was originally derived from the Unix man pages in the
+distributions, which were written by David MacKenzie and updated by Jim
+Meyering. What you are reading now is the authoritative documentation
+for these utilities; the man pages are no longer being maintained. The
+original `fmt' man page was written by Ross Paterson. Franc,ois Pinard
+did the initial conversion to Texinfo format. Karl Berry did the
+indexing, some reorganization, and editing of the results. Brian
+Youmans of the Free Software Foundation office staff combined the
+manuals for textutils, fileutils, and sh-utils to produce the present
+omnibus manual. Richard Stallman contributed his usual invaluable
+insights to the overall process.
+
+
+File: coreutils.info, Node: Common options, Next: Output of entire files, Prev: Introduction, Up: Top
+
+2 Common options
+****************
+
+Certain options are available in all of these programs. Rather than
+writing identical descriptions for each of the programs, they are
+described here. (In fact, every GNU program accepts (or should accept)
+these options.)
+
+ Normally options and operands can appear in any order, and programs
+act as if all the options appear before any operands. For example,
+`sort -r passwd -t :' acts like `sort -r -t : passwd', since `:' is an
+option-argument of `-t'. However, if the `POSIXLY_CORRECT' environment
+variable is set, options must appear before operands, unless otherwise
+specified for a particular command.
+
+ A few programs can usefully have trailing operands with leading `-'.
+With such a program, options must precede operands even if
+`POSIXLY_CORRECT' is not set, and this fact is noted in the program
+description. For example, the `env' command's options must appear
+before its operands, since in some cases the operands specify a command
+that itself contains options.
+
+ Some of these programs recognize the `--help' and `--version'
+options only when one of them is the sole command line argument.
+
+`--help'
+ Print a usage message listing all available options, then exit
+ successfully.
+
+`--version'
+ Print the version number, then exit successfully.
+
+`--'
+ Delimit the option list. Later arguments, if any, are treated as
+ operands even if they begin with `-'. For example, `sort -- -r'
+ reads from the file named `-r'.
+
+
+ A single `-' operand is not really an option, though it looks like
+one. It stands for standard input, or for standard output if that is
+clear from the context. For example, `sort -' reads from standard
+input, and is equivalent to plain `sort', and `tee -' writes an extra
+copy of its input to standard output. Unless otherwise specified, `-'
+can appear as any operand that requires a file name.
+
+* Menu:
+
+* Exit status:: Indicating program success or failure.
+* Backup options:: -b -S, in some programs.
+* Block size:: BLOCK_SIZE and --block-size, in some programs.
+* Disambiguating names and IDs:: chgrp and chown owner and group syntax
+* Random sources:: --random-source, in some programs.
+* Target directory:: Specifying a target directory, in some programs.
+* Trailing slashes:: --strip-trailing-slashes, in some programs.
+* Traversing symlinks:: -H, -L, or -P, in some programs.
+* Treating / specially:: --preserve-root and --no-preserve-root.
+* Special built-in utilities:: `break', `:', `eval', ...
+* Standards conformance:: Conformance to the POSIX standard.
+
+
+File: coreutils.info, Node: Exit status, Next: Backup options, Up: Common options
+
+2.1 Exit status
+===============
+
+Nearly every command invocation yields an integral "exit status" that
+can be used to change how other commands work. For the vast majority
+of commands, an exit status of zero indicates success. Failure is
+indicated by a nonzero value--typically `1', though it may differ on
+unusual platforms as POSIX requires only that it be nonzero.
+
+ However, some of the programs documented here do produce other exit
+status values and a few associate different meanings with the values
+`0' and `1'. Here are some of the exceptions: `chroot', `env', `expr',
+`nice', `nohup', `printenv', `sort', `su', `test', `tty'.
+
+
+File: coreutils.info, Node: Backup options, Next: Block size, Prev: Exit status, Up: Common options
+
+2.2 Backup options
+==================
+
+Some GNU programs (at least `cp', `install', `ln', and `mv') optionally
+make backups of files before writing new versions. These options
+control the details of these backups. The options are also briefly
+mentioned in the descriptions of the particular programs.
+
+`-b'
+`--backup[=METHOD]'
+ Make a backup of each file that would otherwise be overwritten or
+ removed. Without this option, the original versions are destroyed.
+ Use METHOD to determine the type of backups to make. When this
+ option is used but METHOD is not specified, then the value of the
+ `VERSION_CONTROL' environment variable is used. And if
+ `VERSION_CONTROL' is not set, the default backup type is
+ `existing'.
+
+ Note that the short form of this option, `-b' does not accept any
+ argument. Using `-b' is equivalent to using `--backup=existing'.
+
+ This option corresponds to the Emacs variable `version-control';
+ the values for METHOD are the same as those used in Emacs. This
+ option also accepts more descriptive names. The valid METHODs are
+ (unique abbreviations are accepted):
+
+ `none'
+ `off'
+ Never make backups.
+
+ `numbered'
+ `t'
+ Always make numbered backups.
+
+ `existing'
+ `nil'
+ Make numbered backups of files that already have them, simple
+ backups of the others.
+
+ `simple'
+ `never'
+ Always make simple backups. Please note `never' is not to be
+ confused with `none'.
+
+
+`-S SUFFIX'
+`--suffix=SUFFIX'
+ Append SUFFIX to each backup file made with `-b'. If this option
+ is not specified, the value of the `SIMPLE_BACKUP_SUFFIX'
+ environment variable is used. And if `SIMPLE_BACKUP_SUFFIX' is not
+ set, the default is `~', just as in Emacs.
+
+
+
+File: coreutils.info, Node: Block size, Next: Disambiguating names and IDs, Prev: Backup options, Up: Common options
+
+2.3 Block size
+==============
+
+Some GNU programs (at least `df', `du', and `ls') display sizes in
+"blocks". You can adjust the block size and method of display to make
+sizes easier to read. The block size used for display is independent
+of any file system block size. Fractional block counts are rounded up
+to the nearest integer.
+
+ The default block size is chosen by examining the following
+environment variables in turn; the first one that is set determines the
+block size.
+
+`DF_BLOCK_SIZE'
+ This specifies the default block size for the `df' command.
+ Similarly, `DU_BLOCK_SIZE' specifies the default for `du' and
+ `LS_BLOCK_SIZE' for `ls'.
+
+`BLOCK_SIZE'
+ This specifies the default block size for all three commands, if
+ the above command-specific environment variables are not set.
+
+`BLOCKSIZE'
+ This specifies the default block size for all values that are
+ normally printed as blocks, if neither `BLOCK_SIZE' nor the above
+ command-specific environment variables are set. Unlike the other
+ environment variables, `BLOCKSIZE' does not affect values that are
+ normally printed as byte counts, e.g., the file sizes contained in
+ `ls -l' output.
+
+`POSIXLY_CORRECT'
+ If neither `COMMAND_BLOCK_SIZE', nor `BLOCK_SIZE', nor `BLOCKSIZE'
+ is set, but this variable is set, the block size defaults to 512.
+
+
+ If none of the above environment variables are set, the block size
+currently defaults to 1024 bytes in most contexts, but this number may
+change in the future. For `ls' file sizes, the block size defaults to
+1 byte.
+
+ A block size specification can be a positive integer specifying the
+number of bytes per block, or it can be `human-readable' or `si' to
+select a human-readable format. Integers may be followed by suffixes
+that are upward compatible with the SI prefixes
+(http://www.bipm.fr/enus/3_SI/si-prefixes.html) for decimal multiples
+and with the IEC 60027-2 prefixes for binary multiples
+(http://physics.nist.gov/cuu/Units/binary.html).
+
+ With human-readable formats, output sizes are followed by a size
+letter such as `M' for megabytes. `BLOCK_SIZE=human-readable' uses
+powers of 1024; `M' stands for 1,048,576 bytes. `BLOCK_SIZE=si' is
+similar, but uses powers of 1000 and appends `B'; `MB' stands for
+1,000,000 bytes.
+
+ A block size specification preceded by `'' causes output sizes to be
+displayed with thousands separators. The `LC_NUMERIC' locale specifies
+the thousands separator and grouping. For example, in an American
+English locale, `--block-size="'1kB"' would cause a size of 1234000
+bytes to be displayed as `1,234'. In the default C locale, there is no
+thousands separator so a leading `'' has no effect.
+
+ An integer block size can be followed by a suffix to specify a
+multiple of that size. A bare size letter, or one followed by `iB',
+specifies a multiple using powers of 1024. A size letter followed by
+`B' specifies powers of 1000 instead. For example, `1M' and `1MiB' are
+equivalent to `1048576', whereas `1MB' is equivalent to `1000000'.
+
+ A plain suffix without a preceding integer acts as if `1' were
+prepended, except that it causes a size indication to be appended to
+the output. For example, `--block-size="kB"' displays 3000 as `3kB'.
+
+ The following suffixes are defined. Large sizes like `1Y' may be
+rejected by your computer due to limitations of its arithmetic.
+
+`kB'
+ kilobyte: 10^3 = 1000.
+
+`k'
+`K'
+`KiB'
+ kibibyte: 2^10 = 1024. `K' is special: the SI prefix is `k' and
+ the IEC 60027-2 prefix is `Ki', but tradition and POSIX use `k' to
+ mean `KiB'.
+
+`MB'
+ megabyte: 10^6 = 1,000,000.
+
+`M'
+`MiB'
+ mebibyte: 2^20 = 1,048,576.
+
+`GB'
+ gigabyte: 10^9 = 1,000,000,000.
+
+`G'
+`GiB'
+ gibibyte: 2^30 = 1,073,741,824.
+
+`TB'
+ terabyte: 10^12 = 1,000,000,000,000.
+
+`T'
+`TiB'
+ tebibyte: 2^40 = 1,099,511,627,776.
+
+`PB'
+ petabyte: 10^15 = 1,000,000,000,000,000.
+
+`P'
+`PiB'
+ pebibyte: 2^50 = 1,125,899,906,842,624.
+
+`EB'
+ exabyte: 10^18 = 1,000,000,000,000,000,000.
+
+`E'
+`EiB'
+ exbibyte: 2^60 = 1,152,921,504,606,846,976.
+
+`ZB'
+ zettabyte: 10^21 = 1,000,000,000,000,000,000,000
+
+`Z'
+`ZiB'
+ 2^70 = 1,180,591,620,717,411,303,424. (`Zi' is a GNU extension to
+ IEC 60027-2.)
+
+`YB'
+ yottabyte: 10^24 = 1,000,000,000,000,000,000,000,000.
+
+`Y'
+`YiB'
+ 2^80 = 1,208,925,819,614,629,174,706,176. (`Yi' is a GNU
+ extension to IEC 60027-2.)
+
+ Block size defaults can be overridden by an explicit
+`--block-size=SIZE' option. The `-k' option is equivalent to
+`--block-size=1K', which is the default unless the `POSIXLY_CORRECT'
+environment variable is set. The `-h' or `--human-readable' option is
+equivalent to `--block-size=human-readable'. The `--si' option is
+equivalent to `--block-size=si'.
+
+
+File: coreutils.info, Node: Disambiguating names and IDs, Next: Random sources, Prev: Block size, Up: Common options
+
+2.4 chown and chgrp: Disambiguating user names and IDs
+======================================================
+
+Since the OWNER and GROUP arguments to `chown' and `chgrp' may be
+specified as names or numeric IDs, there is an apparent ambiguity.
+What if a user or group _name_ is a string of digits? (1) Should the
+command interpret it as a user name or as an ID? POSIX requires that
+`chown' and `chgrp' first attempt to resolve the specified string as a
+name, and only once that fails, then try to interpret it as an ID.
+This is troublesome when you want to specify a numeric ID, say 42, and
+it must work even in a pathological situation where `42' is a user name
+that maps to some other user ID, say 1000. Simply invoking `chown 42
+F', will set `F's owner ID to 1000--not what you intended.
+
+ GNU `chown' and `chgrp' provide a way to work around this, that at
+the same time may result in a significant performance improvement by
+eliminating a database look-up. Simply precede each numeric user ID
+and/or group ID with a `+', in order to force its interpretation as an
+integer:
+
+ chown +42 F
+ chgrp +$numeric_group_id another-file
+ chown +0:+0 /
+
+ GNU `chown' and `chgrp' skip the name look-up process for each
+`+'-prefixed string, because a string containing `+' is never a valid
+user or group name. This syntax is accepted on most common Unix
+systems, but not on Solaris 10.
+
+ ---------- Footnotes ----------
+
+ (1) Using a number as a user name is common in some environments.
+
+
+File: coreutils.info, Node: Random sources, Next: Target directory, Prev: Disambiguating names and IDs, Up: Common options
+
+2.5 Sources of random data
+==========================
+
+The `shuf', `shred', and `sort' commands sometimes need random data to
+do their work. For example, `sort -R' must choose a hash function at
+random, and it needs random data to make this selection.
+
+ Normally these commands use the device file `/dev/urandom' as the
+source of random data. Typically, this device gathers environmental
+noise from device drivers and other sources into an entropy pool, and
+uses the pool to generate random bits. If the pool is short of data,
+the device reuses the internal pool to produce more bits, using a
+cryptographically secure pseudorandom number generator.
+
+ `/dev/urandom' suffices for most practical uses, but applications
+requiring high-value or long-term protection of private data may
+require an alternate data source like `/dev/random' or `/dev/arandom'.
+The set of available sources depends on your operating system.
+
+ To use such a source, specify the `--random-source=FILE' option,
+e.g., `shuf --random-source=/dev/random'. The contents of FILE should
+be as random as possible. An error is reported if FILE does not
+contain enough bytes to randomize the input adequately.
+
+ To reproduce the results of an earlier invocation of a command, you
+can save some random data into a file and then use that file as the
+random source in earlier and later invocations of the command.
+
+ Some old-fashioned or stripped-down operating systems lack support
+for `/dev/urandom'. On these systems commands like `shuf' by default
+fall back on an internal pseudorandom generator initialized by a small
+amount of entropy.
+
+
+File: coreutils.info, Node: Target directory, Next: Trailing slashes, Prev: Random sources, Up: Common options
+
+2.6 Target directory
+====================
+
+The `cp', `install', `ln', and `mv' commands normally treat the last
+operand specially when it is a directory or a symbolic link to a
+directory. For example, `cp source dest' is equivalent to `cp source
+dest/source' if `dest' is a directory. Sometimes this behavior is not
+exactly what is wanted, so these commands support the following options
+to allow more fine-grained control:
+
+`-T'
+`--no-target-directory'
+ Do not treat the last operand specially when it is a directory or a
+ symbolic link to a directory. This can help avoid race conditions
+ in programs that operate in a shared area. For example, when the
+ command `mv /tmp/source /tmp/dest' succeeds, there is no guarantee
+ that `/tmp/source' was renamed to `/tmp/dest': it could have been
+ renamed to `/tmp/dest/source' instead, if some other process
+ created `/tmp/dest' as a directory. However, if `mv -T
+ /tmp/source /tmp/dest' succeeds, there is no question that
+ `/tmp/source' was renamed to `/tmp/dest'.
+
+ In the opposite situation, where you want the last operand to be
+ treated as a directory and want a diagnostic otherwise, you can use
+ the `--target-directory' (`-t') option.
+
+`-t DIRECTORY'
+`--target-directory=DIRECTORY'
+ Use DIRECTORY as the directory component of each destination file
+ name.
+
+ The interface for most programs is that after processing options
+ and a finite (possibly zero) number of fixed-position arguments,
+ the remaining argument list is either expected to be empty, or is
+ a list of items (usually files) that will all be handled
+ identically. The `xargs' program is designed to work well with
+ this convention.
+
+ The commands in the `mv'-family are unusual in that they take a
+ variable number of arguments with a special case at the _end_
+ (namely, the target directory). This makes it nontrivial to
+ perform some operations, e.g., "move all files from here to
+ ../d/", because `mv * ../d/' might exhaust the argument space, and
+ `ls | xargs ...' doesn't have a clean way to specify an extra
+ final argument for each invocation of the subject command. (It
+ can be done by going through a shell command, but that requires
+ more human labor and brain power than it should.)
+
+ The `--target-directory' (`-t') option allows the `cp', `install',
+ `ln', and `mv' programs to be used conveniently with `xargs'. For
+ example, you can move the files from the current directory to a
+ sibling directory, `d' like this:
+
+ ls | xargs mv -t ../d --
+
+ However, this doesn't move files whose names begin with `.'. If
+ you use the GNU `find' program, you can move those files too, with
+ this command:
+
+ find . -mindepth 1 -maxdepth 1 \
+ | xargs mv -t ../d
+
+ But both of the above approaches fail if there are no files in the
+ current directory, or if any file has a name containing a blank or
+ some other special characters. The following example removes
+ those limitations and requires both GNU `find' and GNU `xargs':
+
+ find . -mindepth 1 -maxdepth 1 -print0 \
+ | xargs --null --no-run-if-empty \
+ mv -t ../d
+
+
+The `--target-directory' (`-t') and `--no-target-directory' (`-T')
+options cannot be combined.
+
+
+File: coreutils.info, Node: Trailing slashes, Next: Traversing symlinks, Prev: Target directory, Up: Common options
+
+2.7 Trailing slashes
+====================
+
+Some GNU programs (at least `cp' and `mv') allow you to remove any
+trailing slashes from each SOURCE argument before operating on it. The
+`--strip-trailing-slashes' option enables this behavior.
+
+ This is useful when a SOURCE argument may have a trailing slash and
+specify a symbolic link to a directory. This scenario is in fact rather
+common because some shells can automatically append a trailing slash
+when performing file name completion on such symbolic links. Without
+this option, `mv', for example, (via the system's rename function) must
+interpret a trailing slash as a request to dereference the symbolic link
+and so must rename the indirectly referenced _directory_ and not the
+symbolic link. Although it may seem surprising that such behavior be
+the default, it is required by POSIX and is consistent with other parts
+of that standard.
+
+
+File: coreutils.info, Node: Traversing symlinks, Next: Treating / specially, Prev: Trailing slashes, Up: Common options
+
+2.8 Traversing symlinks
+=======================
+
+The following options modify how `chown' and `chgrp' traverse a
+hierarchy when the `--recursive' (`-R') option is also specified. If
+more than one of the following options is specified, only the final one
+takes effect. These options specify whether processing a symbolic link
+to a directory entails operating on just the symbolic link or on all
+files in the hierarchy rooted at that directory.
+
+ These options are independent of `--dereference' and
+`--no-dereference' (`-h'), which control whether to modify a symlink or
+its referent.
+
+`-H'
+ If `--recursive' (`-R') is specified and a command line argument
+ is a symbolic link to a directory, traverse it.
+
+`-L'
+ In a recursive traversal, traverse every symbolic link to a
+ directory that is encountered.
+
+`-P'
+ Do not traverse any symbolic links. This is the default if none
+ of `-H', `-L', or `-P' is specified.
+
+
+
+File: coreutils.info, Node: Treating / specially, Next: Special built-in utilities, Prev: Traversing symlinks, Up: Common options
+
+2.9 Treating / specially
+========================
+
+Certain commands can operate destructively on entire hierarchies. For
+example, if a user with appropriate privileges mistakenly runs `rm -rf
+/ tmp/junk', that may remove all files on the entire system. Since
+there are so few legitimate uses for such a command, GNU `rm' normally
+declines to operate on any directory that resolves to `/'. If you
+really want to try to remove all the files on your system, you can use
+the `--no-preserve-root' option, but the default behavior, specified by
+the `--preserve-option', is safer for most purposes.
+
+ The commands `chgrp', `chmod' and `chown' can also operate
+destructively on entire hierarchies, so they too support these options.
+Although, unlike `rm', they don't actually unlink files, these
+commands are arguably more dangerous when operating recursively on `/',
+since they often work much more quickly, and hence damage more files
+before an alert user can interrupt them. Tradition and POSIX require
+these commands to operate recursively on `/', so they default to
+`--no-preserve-root', but using the `--preserve-root' option makes them
+safer for most purposes. For convenience you can specify
+`--preserve-root' in an alias or in a shell function.
+
+ Note that the `--preserve-root' option also ensures that `chgrp' and
+`chown' do not modify `/' even when dereferencing a symlink pointing to
+`/'.
+
+
+File: coreutils.info, Node: Special built-in utilities, Next: Standards conformance, Prev: Treating / specially, Up: Common options
+
+2.10 Special built-in utilities
+===============================
+
+Some programs like `nice' can invoke other programs; for example, the
+command `nice cat file' invokes the program `cat' by executing the
+command `cat file'. However, "special built-in utilities" like `exit'
+cannot be invoked this way. For example, the command `nice exit' does
+not have a well-defined behavior: it may generate an error message
+instead of exiting.
+
+ Here is a list of the special built-in utilities that are
+standardized by POSIX 1003.1-2004.
+
+ . : break continue eval exec exit export readonly return set shift
+ times trap unset
+
+ For example, because `.', `:', and `exec' are special, the commands
+`nice . foo.sh', `nice :', and `nice exec pwd' do not work as you might
+expect.
+
+ Many shells extend this list. For example, Bash has several extra
+special built-in utilities like `history', and `suspend', and with Bash
+the command `nice suspend' generates an error message instead of
+suspending.
+
+
+File: coreutils.info, Node: Standards conformance, Prev: Special built-in utilities, Up: Common options
+
+2.11 Standards conformance
+==========================
+
+In a few cases, the GNU utilities' default behavior is incompatible
+with the POSIX standard. To suppress these incompatibilities, define
+the `POSIXLY_CORRECT' environment variable. Unless you are checking
+for POSIX conformance, you probably do not need to define
+`POSIXLY_CORRECT'.
+
+ Newer versions of POSIX are occasionally incompatible with older
+versions. For example, older versions of POSIX required the command
+`sort +1' to sort based on the second and succeeding fields in each
+input line, but starting with POSIX 1003.1-2001 the same command is
+required to sort the file named `+1', and you must instead use the
+command `sort -k 2' to get the field-based sort.
+
+ The GNU utilities normally conform to the version of POSIX that is
+standard for your system. To cause them to conform to a different
+version of POSIX, define the `_POSIX2_VERSION' environment variable to
+a value of the form YYYYMM specifying the year and month the standard
+was adopted. Two values are currently supported for `_POSIX2_VERSION':
+`199209' stands for POSIX 1003.2-1992, and `200112' stands for POSIX
+1003.1-2001. For example, if you have a newer system but are running
+software that assumes an older version of POSIX and uses `sort +1' or
+`tail +10', you can work around any compatibility problems by setting
+`_POSIX2_VERSION=199209' in your environment.
+
+
+File: coreutils.info, Node: Output of entire files, Next: Formatting file contents, Prev: Common options, Up: Top
+
+3 Output of entire files
+************************
+
+These commands read and write entire files, possibly transforming them
+in some way.
+
+* Menu:
+
+* cat invocation:: Concatenate and write files.
+* tac invocation:: Concatenate and write files in reverse.
+* nl invocation:: Number lines and write files.
+* od invocation:: Write files in octal or other formats.
+* base64 invocation:: Transform data into printable data.
+
+
+File: coreutils.info, Node: cat invocation, Next: tac invocation, Up: Output of entire files
+
+3.1 `cat': Concatenate and write files
+======================================
+
+`cat' copies each FILE (`-' means standard input), or standard input if
+none are given, to standard output. Synopsis:
+
+ cat [OPTION] [FILE]...
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-A'
+`--show-all'
+ Equivalent to `-vET'.
+
+`-b'
+`--number-nonblank'
+ Number all nonblank output lines, starting with 1.
+
+`-e'
+ Equivalent to `-vE'.
+
+`-E'
+`--show-ends'
+ Display a `$' after the end of each line.
+
+`-n'
+`--number'
+ Number all output lines, starting with 1.
+
+`-s'
+`--squeeze-blank'
+ Replace multiple adjacent blank lines with a single blank line.
+
+`-t'
+ Equivalent to `-vT'.
+
+`-T'
+`--show-tabs'
+ Display TAB characters as `^I'.
+
+`-u'
+ Ignored; for POSIX compatibility.
+
+`-v'
+`--show-nonprinting'
+ Display control characters except for LFD and TAB using `^'
+ notation and precede characters that have the high bit set with
+ `M-'.
+
+
+ On systems like MS-DOS that distinguish between text and binary
+files, `cat' normally reads and writes in binary mode. However, `cat'
+reads in text mode if one of the options `-bensAE' is used or if `cat'
+is reading from standard input and standard input is a terminal.
+Similarly, `cat' writes in text mode if one of the options `-bensAE' is
+used or if standard output is a terminal.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+ Examples:
+
+ # Output f's contents, then standard input, then g's contents.
+ cat f - g
+
+ # Copy standard input to standard output.
+ cat
+
+
+File: coreutils.info, Node: tac invocation, Next: nl invocation, Prev: cat invocation, Up: Output of entire files
+
+3.2 `tac': Concatenate and write files in reverse
+=================================================
+
+`tac' copies each FILE (`-' means standard input), or standard input if
+none are given, to standard output, reversing the records (lines by
+default) in each separately. Synopsis:
+
+ tac [OPTION]... [FILE]...
+
+ "Records" are separated by instances of a string (newline by
+default). By default, this separator string is attached to the end of
+the record that it follows in the file.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-b'
+`--before'
+ The separator is attached to the beginning of the record that it
+ precedes in the file.
+
+`-r'
+`--regex'
+ Treat the separator string as a regular expression. Users of `tac'
+ on MS-DOS/MS-Windows should note that, since `tac' reads files in
+ binary mode, each line of a text file might end with a CR/LF pair
+ instead of the Unix-style LF.
+
+`-s SEPARATOR'
+`--separator=SEPARATOR'
+ Use SEPARATOR as the record separator, instead of newline.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: nl invocation, Next: od invocation, Prev: tac invocation, Up: Output of entire files
+
+3.3 `nl': Number lines and write files
+======================================
+
+`nl' writes each FILE (`-' means standard input), or standard input if
+none are given, to standard output, with line numbers added to some or
+all of the lines. Synopsis:
+
+ nl [OPTION]... [FILE]...
+
+ `nl' decomposes its input into (logical) pages; by default, the line
+number is reset to 1 at the top of each logical page. `nl' treats all
+of the input files as a single document; it does not reset line numbers
+or logical pages between files.
+
+ A logical page consists of three sections: header, body, and footer.
+Any of the sections can be empty. Each can be numbered in a different
+style from the others.
+
+ The beginnings of the sections of logical pages are indicated in the
+input file by a line containing exactly one of these delimiter strings:
+
+`\:\:\:'
+ start of header;
+
+`\:\:'
+ start of body;
+
+`\:'
+ start of footer.
+
+ The two characters from which these strings are made can be changed
+from `\' and `:' via options (see below), but the pattern and length of
+each string cannot be changed.
+
+ A section delimiter is replaced by an empty line on output. Any text
+that comes before the first section delimiter string in the input file
+is considered to be part of a body section, so `nl' treats a file that
+contains no section delimiters as a single body section.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-b STYLE'
+`--body-numbering=STYLE'
+ Select the numbering style for lines in the body section of each
+ logical page. When a line is not numbered, the current line number
+ is not incremented, but the line number separator character is
+ still prepended to the line. The styles are:
+
+ `a'
+ number all lines,
+
+ `t'
+ number only nonempty lines (default for body),
+
+ `n'
+ do not number lines (default for header and footer),
+
+ `pBRE'
+ number only lines that contain a match for the basic regular
+ expression BRE. *Note Regular Expressions: (grep)Regular
+ Expressions.
+
+`-d CD'
+`--section-delimiter=CD'
+ Set the section delimiter characters to CD; default is `\:'. If
+ only C is given, the second remains `:'. (Remember to protect `\'
+ or other metacharacters from shell expansion with quotes or extra
+ backslashes.)
+
+`-f STYLE'
+`--footer-numbering=STYLE'
+ Analogous to `--body-numbering'.
+
+`-h STYLE'
+`--header-numbering=STYLE'
+ Analogous to `--body-numbering'.
+
+`-i NUMBER'
+`--page-increment=NUMBER'
+ Increment line numbers by NUMBER (default 1).
+
+`-l NUMBER'
+`--join-blank-lines=NUMBER'
+ Consider NUMBER (default 1) consecutive empty lines to be one
+ logical line for numbering, and only number the last one. Where
+ fewer than NUMBER consecutive empty lines occur, do not number
+ them. An empty line is one that contains no characters, not even
+ spaces or tabs.
+
+`-n FORMAT'
+`--number-format=FORMAT'
+ Select the line numbering format (default is `rn'):
+
+ `ln'
+ left justified, no leading zeros;
+
+ `rn'
+ right justified, no leading zeros;
+
+ `rz'
+ right justified, leading zeros.
+
+`-p'
+`--no-renumber'
+ Do not reset the line number at the start of a logical page.
+
+`-s STRING'
+`--number-separator=STRING'
+ Separate the line number from the text line in the output with
+ STRING (default is the TAB character).
+
+`-v NUMBER'
+`--starting-line-number=NUMBER'
+ Set the initial line number on each logical page to NUMBER
+ (default 1).
+
+`-w NUMBER'
+`--number-width=NUMBER'
+ Use NUMBER characters for line numbers (default 6).
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: od invocation, Next: base64 invocation, Prev: nl invocation, Up: Output of entire files
+
+3.4 `od': Write files in octal or other formats
+===============================================
+
+`od' writes an unambiguous representation of each FILE (`-' means
+standard input), or standard input if none are given. Synopses:
+
+ od [OPTION]... [FILE]...
+ od [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]
+ od [OPTION]... --traditional [FILE] [[+]OFFSET[.][b] [[+]LABEL[.][b]]]
+
+ Each line of output consists of the offset in the input, followed by
+groups of data from the file. By default, `od' prints the offset in
+octal, and each group of file data is a C `short int''s worth of input
+printed as a single octal number.
+
+ If OFFSET is given, it specifies how many input bytes to skip before
+formatting and writing. By default, it is interpreted as an octal
+number, but the optional trailing decimal point causes it to be
+interpreted as decimal. If no decimal is specified and the offset
+begins with `0x' or `0X' it is interpreted as a hexadecimal number. If
+there is a trailing `b', the number of bytes skipped will be OFFSET
+multiplied by 512.
+
+ If a command is of both the first and second forms, the second form
+is assumed if the last operand begins with `+' or (if there are two
+operands) a digit. For example, in `od foo 10' and `od +10' the `10'
+is an offset, whereas in `od 10' the `10' is a file name.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-A RADIX'
+`--address-radix=RADIX'
+ Select the base in which file offsets are printed. RADIX can be
+ one of the following:
+
+ `d'
+ decimal;
+
+ `o'
+ octal;
+
+ `x'
+ hexadecimal;
+
+ `n'
+ none (do not print offsets).
+
+ The default is octal.
+
+`-j BYTES'
+`--skip-bytes=BYTES'
+ Skip BYTES input bytes before formatting and writing. If BYTES
+ begins with `0x' or `0X', it is interpreted in hexadecimal;
+ otherwise, if it begins with `0', in octal; otherwise, in decimal.
+ Appending `b' multiplies BYTES by 512, `k' by 1024, and `m' by
+ 1048576.
+
+`-N BYTES'
+`--read-bytes=BYTES'
+ Output at most BYTES bytes of the input. Prefixes and suffixes on
+ `bytes' are interpreted as for the `-j' option.
+
+`-S N'
+`--strings[=N]'
+ Instead of the normal output, output only "string constants": at
+ least N consecutive ASCII graphic characters, followed by a null
+ (zero) byte.
+
+ If N is omitted with `--strings', the default is 3.
+
+`-t TYPE'
+`--format=TYPE'
+ Select the format in which to output the file data. TYPE is a
+ string of one or more of the below type indicator characters. If
+ you include more than one type indicator character in a single TYPE
+ string, or use this option more than once, `od' writes one copy of
+ each output line using each of the data types that you specified,
+ in the order that you specified.
+
+ Adding a trailing "z" to any type specification appends a display
+ of the ASCII character representation of the printable characters
+ to the output line generated by the type specification.
+
+ `a'
+ named character, ignoring high-order bit
+
+ `c'
+ ASCII character or backslash escape,
+
+ `d'
+ signed decimal
+
+ `f'
+ floating point
+
+ `o'
+ octal
+
+ `u'
+ unsigned decimal
+
+ `x'
+ hexadecimal
+
+ The type `a' outputs things like `sp' for space, `nl' for newline,
+ and `nul' for a null (zero) byte. Only the least significant
+ seven bits of each byte is used; the high-order bit is ignored.
+ Type `c' outputs ` ', `\n', and `\0', respectively.
+
+ Except for types `a' and `c', you can specify the number of bytes
+ to use in interpreting each number in the given data type by
+ following the type indicator character with a decimal integer.
+ Alternately, you can specify the size of one of the C compiler's
+ built-in data types by following the type indicator character with
+ one of the following characters. For integers (`d', `o', `u',
+ `x'):
+
+ `C'
+ char
+
+ `S'
+ short
+
+ `I'
+ int
+
+ `L'
+ long
+
+ For floating point (`f'):
+
+ F
+ float
+
+ D
+ double
+
+ L
+ long double
+
+`-v'
+`--output-duplicates'
+ Output consecutive lines that are identical. By default, when two
+ or more consecutive output lines would be identical, `od' outputs
+ only the first line, and puts just an asterisk on the following
+ line to indicate the elision.
+
+`-w[N]'
+`--width[=N]'
+ Dump `n' input bytes per output line. This must be a multiple of
+ the least common multiple of the sizes associated with the
+ specified output types.
+
+ If this option is not given at all, the default is 16. If N is
+ omitted, the default is 32.
+
+
+ The next several options are shorthands for format specifications.
+GNU `od' accepts any combination of shorthands and format specification
+options. These options accumulate.
+
+`-a'
+ Output as named characters. Equivalent to `-t a'.
+
+`-b'
+ Output as octal bytes. Equivalent to `-t o1'.
+
+`-c'
+ Output as ASCII characters or backslash escapes. Equivalent to
+ `-t c'.
+
+`-d'
+ Output as unsigned decimal two-byte units. Equivalent to `-t u2'.
+
+`-f'
+ Output as floats. Equivalent to `-t fF'.
+
+`-i'
+ Output as decimal ints. Equivalent to `-t dI'.
+
+`-l'
+ Output as decimal long ints. Equivalent to `-t dL'.
+
+`-o'
+ Output as octal two-byte units. Equivalent to `-t o2'.
+
+`-s'
+ Output as decimal two-byte units. Equivalent to `-t d2'.
+
+`-x'
+ Output as hexadecimal two-byte units. Equivalent to `-t x2'.
+
+`--traditional'
+ Recognize the non-option label argument that traditional `od'
+ accepted. The following syntax:
+
+ od --traditional [FILE] [[+]OFFSET[.][b] [[+]LABEL[.][b]]]
+
+ can be used to specify at most one file and optional arguments
+ specifying an offset and a pseudo-start address, LABEL. The LABEL
+ argument is interpreted just like OFFSET, but it specifies an
+ initial pseudo-address. The pseudo-addresses are displayed in
+ parentheses following any normal address.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: base64 invocation, Prev: od invocation, Up: Output of entire files
+
+3.5 `base64': Transform data into printable data.
+=================================================
+
+`base64' transforms data read from a file, or standard input, into (or
+from) base64 encoded form. The base64 encoded form uses printable
+ASCII characters to represent binary data, see RFC 3548
+(ftp://ftp.rfc-editor.org/in-notes/rfc3548.txt). Synopses:
+
+ base64 [OPTION]... [FILE]
+ base64 --decode [OPTION]... [FILE]
+
+ The base64 encoding expands data to roughly 133% of the original.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-w COLS'
+`--wrap=COLS'
+ During encoding, wrap lines after COLS characters. This must be a
+ positive number.
+
+ The default is to wrap after 76 characters. Use the value 0 to
+ disable line wrapping altogether.
+
+`-d'
+`--decode'
+ Change the mode of operation, from the default of encoding data, to
+ decoding data. Input is expected to be base64 encoded data, and
+ the output will be the original data.
+
+`-i'
+`--ignore-garbage'
+ When decoding, newlines are always accepted. During decoding,
+ ignore unrecognized bytes, to permit distorted data to be decoded.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: Formatting file contents, Next: Output of parts of files, Prev: Output of entire files, Up: Top
+
+4 Formatting file contents
+**************************
+
+These commands reformat the contents of files.
+
+* Menu:
+
+* fmt invocation:: Reformat paragraph text.
+* pr invocation:: Paginate or columnate files for printing.
+* fold invocation:: Wrap input lines to fit in specified width.
+
+
+File: coreutils.info, Node: fmt invocation, Next: pr invocation, Up: Formatting file contents
+
+4.1 `fmt': Reformat paragraph text
+==================================
+
+`fmt' fills and joins lines to produce output lines of (at most) a
+given number of characters (75 by default). Synopsis:
+
+ fmt [OPTION]... [FILE]...
+
+ `fmt' reads from the specified FILE arguments (or standard input if
+none are given), and writes to standard output.
+
+ By default, blank lines, spaces between words, and indentation are
+preserved in the output; successive input lines with different
+indentation are not joined; tabs are expanded on input and introduced on
+output.
+
+ `fmt' prefers breaking lines at the end of a sentence, and tries to
+avoid line breaks after the first word of a sentence or before the last
+word of a sentence. A "sentence break" is defined as either the end of
+a paragraph or a word ending in any of `.?!', followed by two spaces or
+end of line, ignoring any intervening parentheses or quotes. Like TeX,
+`fmt' reads entire "paragraphs" before choosing line breaks; the
+algorithm is a variant of that given by Donald E. Knuth and Michael F.
+Plass in "Breaking Paragraphs Into Lines", `Software--Practice &
+Experience' 11, 11 (November 1981), 1119-1184.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-c'
+`--crown-margin'
+ "Crown margin" mode: preserve the indentation of the first two
+ lines within a paragraph, and align the left margin of each
+ subsequent line with that of the second line.
+
+`-t'
+`--tagged-paragraph'
+ "Tagged paragraph" mode: like crown margin mode, except that if
+ indentation of the first line of a paragraph is the same as the
+ indentation of the second, the first line is treated as a one-line
+ paragraph.
+
+`-s'
+`--split-only'
+ Split lines only. Do not join short lines to form longer ones.
+ This prevents sample lines of code, and other such "formatted"
+ text from being unduly combined.
+
+`-u'
+`--uniform-spacing'
+ Uniform spacing. Reduce spacing between words to one space, and
+ spacing between sentences to two spaces.
+
+`-WIDTH'
+`-w WIDTH'
+`--width=WIDTH'
+ Fill output lines up to WIDTH characters (default 75). `fmt'
+ initially tries to make lines about 7% shorter than this, to give
+ it room to balance line lengths.
+
+`-p PREFIX'
+`--prefix=PREFIX'
+ Only lines beginning with PREFIX (possibly preceded by whitespace)
+ are subject to formatting. The prefix and any preceding
+ whitespace are stripped for the formatting and then re-attached to
+ each formatted output line. One use is to format certain kinds of
+ program comments, while leaving the code unchanged.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: pr invocation, Next: fold invocation, Prev: fmt invocation, Up: Formatting file contents
+
+4.2 `pr': Paginate or columnate files for printing
+==================================================
+
+`pr' writes each FILE (`-' means standard input), or standard input if
+none are given, to standard output, paginating and optionally
+outputting in multicolumn format; optionally merges all FILEs, printing
+all in parallel, one per column. Synopsis:
+
+ pr [OPTION]... [FILE]...
+
+ By default, a 5-line header is printed at each page: two blank lines;
+a line with the date, the file name, and the page count; and two more
+blank lines. A footer of five blank lines is also printed. With the
+`-F' option, a 3-line header is printed: the leading two blank lines are
+omitted; no footer is used. The default PAGE_LENGTH in both cases is 66
+lines. The default number of text lines changes from 56 (without `-F')
+to 63 (with `-F'). The text line of the header takes the form `DATE
+STRING PAGE', with spaces inserted around STRING so that the line takes
+up the full PAGE_WIDTH. Here, DATE is the date (see the `-D' or
+`--date-format' option for details), STRING is the centered header
+string, and PAGE identifies the page number. The `LC_MESSAGES' locale
+category affects the spelling of PAGE; in the default C locale, it is
+`Page NUMBER' where NUMBER is the decimal page number.
+
+ Form feeds in the input cause page breaks in the output. Multiple
+form feeds produce empty pages.
+
+ Columns are of equal width, separated by an optional string (default
+is `space'). For multicolumn output, lines will always be truncated to
+PAGE_WIDTH (default 72), unless you use the `-J' option. For single
+column output no line truncation occurs by default. Use `-W' option to
+truncate lines in that case.
+
+ The following changes were made in version 1.22i and apply to later
+versions of `pr': - Brian
+ * Some small LETTER OPTIONS (`-s', `-w') have been redefined for
+ better POSIX compliance. The output of some further cases has
+ been adapted to other Unix systems. These changes are not
+ compatible with earlier versions of the program.
+
+ * Some NEW CAPITAL LETTER options (`-J', `-S', `-W') have been
+ introduced to turn off unexpected interferences of small letter
+ options. The `-N' option and the second argument LAST_PAGE of
+ `+FIRST_PAGE' offer more flexibility. The detailed handling of
+ form feeds set in the input files requires the `-T' option.
+
+ * Capital letter options override small letter ones.
+
+ * Some of the option-arguments (compare `-s', `-e', `-i', `-n')
+ cannot be specified as separate arguments from the preceding
+ option letter (already stated in the POSIX specification).
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`+FIRST_PAGE[:LAST_PAGE]'
+`--pages=FIRST_PAGE[:LAST_PAGE]'
+ Begin printing with page FIRST_PAGE and stop with LAST_PAGE.
+ Missing `:LAST_PAGE' implies end of file. While estimating the
+ number of skipped pages each form feed in the input file results
+ in a new page. Page counting with and without `+FIRST_PAGE' is
+ identical. By default, counting starts with the first page of
+ input file (not first page printed). Line numbering may be
+ altered by `-N' option.
+
+`-COLUMN'
+`--columns=COLUMN'
+ With each single FILE, produce COLUMN columns of output (default
+ is 1) and print columns down, unless `-a' is used. The column
+ width is automatically decreased as COLUMN increases; unless you
+ use the `-W/-w' option to increase PAGE_WIDTH as well. This
+ option might well cause some lines to be truncated. The number of
+ lines in the columns on each page are balanced. The options `-e'
+ and `-i' are on for multiple text-column output. Together with
+ `-J' option column alignment and line truncation is turned off.
+ Lines of full length are joined in a free field format and `-S'
+ option may set field separators. `-COLUMN' may not be used with
+ `-m' option.
+
+`-a'
+`--across'
+ With each single FILE, print columns across rather than down. The
+ `-COLUMN' option must be given with COLUMN greater than one. If a
+ line is too long to fit in a column, it is truncated.
+
+`-c'
+`--show-control-chars'
+ Print control characters using hat notation (e.g., `^G'); print
+ other nonprinting characters in octal backslash notation. By
+ default, nonprinting characters are not changed.
+
+`-d'
+`--double-space'
+ Double space the output.
+
+`-D FORMAT'
+`--date-format=FORMAT'
+ Format header dates using FORMAT, using the same conventions as
+ for the command `date +FORMAT'; *Note date invocation::. Except
+ for directives, which start with `%', characters in FORMAT are
+ printed unchanged. You can use this option to specify an
+ arbitrary string in place of the header date, e.g.,
+ `--date-format="Monday morning"'.
+
+ Normally the date format defaults to `%Y-%m-%d %H:%M' (for
+ example, `2001-12-04 23:59'); but if the `POSIXLY_CORRECT'
+ environment variable is set and the `LC_TIME' locale category
+ specifies the POSIX locale, the default is `%b %e %H:%M %Y' (for
+ example, `Dec 4 23:59 2001'.
+
+ Time stamps are listed according to the time zone rules specified
+ by the `TZ' environment variable, or by the system default rules if
+ `TZ' is not set. *Note Specifying the Time Zone with `TZ':
+ (libc)TZ Variable.
+
+`-e[IN-TABCHAR[IN-TABWIDTH]]'
+`--expand-tabs[=IN-TABCHAR[IN-TABWIDTH]]'
+ Expand TABs to spaces on input. Optional argument IN-TABCHAR is
+ the input tab character (default is the TAB character). Second
+ optional argument IN-TABWIDTH is the input tab character's width
+ (default is 8).
+
+`-f'
+`-F'
+`--form-feed'
+ Use a form feed instead of newlines to separate output pages. The
+ default page length of 66 lines is not altered. But the number of
+ lines of text per page changes from default 56 to 63 lines.
+
+`-h HEADER'
+`--header=HEADER'
+ Replace the file name in the header with the centered string
+ HEADER. When using the shell, HEADER should be quoted and should
+ be separated from `-h' by a space.
+
+`-i[OUT-TABCHAR[OUT-TABWIDTH]]'
+`--output-tabs[=OUT-TABCHAR[OUT-TABWIDTH]]'
+ Replace spaces with TABs on output. Optional argument OUT-TABCHAR
+ is the output tab character (default is the TAB character).
+ Second optional argument OUT-TABWIDTH is the output tab
+ character's width (default is 8).
+
+`-J'
+`--join-lines'
+ Merge lines of full length. Used together with the column options
+ `-COLUMN', `-a -COLUMN' or `-m'. Turns off `-W/-w' line
+ truncation; no column alignment used; may be used with
+ `--sep-string[=STRING]'. `-J' has been introduced (together with
+ `-W' and `--sep-string') to disentangle the old (POSIX-compliant)
+ options `-w' and `-s' along with the three column options.
+
+`-l PAGE_LENGTH'
+`--length=PAGE_LENGTH'
+ Set the page length to PAGE_LENGTH (default 66) lines, including
+ the lines of the header [and the footer]. If PAGE_LENGTH is less
+ than or equal to 10 (or <= 3 with `-F'), the header and footer are
+ omitted, and all form feeds set in input files are eliminated, as
+ if the `-T' option had been given.
+
+`-m'
+`--merge'
+ Merge and print all FILEs in parallel, one in each column. If a
+ line is too long to fit in a column, it is truncated, unless the
+ `-J' option is used. `--sep-string[=STRING]' may be used. Empty
+ pages in some FILEs (form feeds set) produce empty columns, still
+ marked by STRING. The result is a continuous line numbering and
+ column marking throughout the whole merged file. Completely empty
+ merged pages show no separators or line numbers. The default
+ header becomes `DATE PAGE' with spaces inserted in the middle; this
+ may be used with the `-h' or `--header' option to fill up the
+ middle blank part.
+
+`-n[NUMBER-SEPARATOR[DIGITS]]'
+`--number-lines[=NUMBER-SEPARATOR[DIGITS]]'
+ Provide DIGITS digit line numbering (default for DIGITS is 5).
+ With multicolumn output the number occupies the first DIGITS
+ column positions of each text column or only each line of `-m'
+ output. With single column output the number precedes each line
+ just as `-m' does. Default counting of the line numbers starts
+ with the first line of the input file (not the first line printed,
+ compare the `--page' option and `-N' option). Optional argument
+ NUMBER-SEPARATOR is the character appended to the line number to
+ separate it from the text followed. The default separator is the
+ TAB character. In a strict sense a TAB is always printed with
+ single column output only. The TAB-width varies with the
+ TAB-position, e.g., with the left MARGIN specified by `-o' option.
+ With multicolumn output priority is given to `equal width of
+ output columns' (a POSIX specification). The TAB-width is fixed
+ to the value of the first column and does not change with
+ different values of left MARGIN. That means a fixed number of
+ spaces is always printed in the place of the NUMBER-SEPARATOR TAB.
+ The tabification depends upon the output position.
+
+`-N LINE_NUMBER'
+`--first-line-number=LINE_NUMBER'
+ Start line counting with the number LINE_NUMBER at first line of
+ first page printed (in most cases not the first line of the input
+ file).
+
+`-o MARGIN'
+`--indent=MARGIN'
+ Indent each line with a margin MARGIN spaces wide (default is
+ zero). The total page width is the size of the margin plus the
+ PAGE_WIDTH set with the `-W/-w' option. A limited overflow may
+ occur with numbered single column output (compare `-n' option).
+
+`-r'
+`--no-file-warnings'
+ Do not print a warning message when an argument FILE cannot be
+ opened. (The exit status will still be nonzero, however.)
+
+`-s[CHAR]'
+`--separator[=CHAR]'
+ Separate columns by a single character CHAR. The default for CHAR
+ is the TAB character without `-w' and `no character' with `-w'.
+ Without `-s' the default separator `space' is set. `-s[char]'
+ turns off line truncation of all three column options
+ (`-COLUMN'|`-a -COLUMN'|`-m') unless `-w' is set. This is a
+ POSIX-compliant formulation.
+
+`-SSTRING'
+`--sep-string[=STRING]'
+ Use STRING to separate output columns. The `-S' option doesn't
+ affect the `-W/-w' option, unlike the `-s' option which does. It
+ does not affect line truncation or column alignment. Without
+ `-S', and with `-J', `pr' uses the default output separator, TAB.
+ Without `-S' or `-J', `pr' uses a `space' (same as `-S" "').
+ `--sep-string' with no `=STRING' is equivalent to
+ `--sep-string=""'.
+
+`-t'
+`--omit-header'
+ Do not print the usual header [and footer] on each page, and do
+ not fill out the bottom of pages (with blank lines or a form
+ feed). No page structure is produced, but form feeds set in the
+ input files are retained. The predefined pagination is not
+ changed. `-t' or `-T' may be useful together with other options;
+ e.g.: `-t -e4', expand TAB characters in the input file to 4
+ spaces but don't make any other changes. Use of `-t' overrides
+ `-h'.
+
+`-T'
+`--omit-pagination'
+ Do not print header [and footer]. In addition eliminate all form
+ feeds set in the input files.
+
+`-v'
+`--show-nonprinting'
+ Print nonprinting characters in octal backslash notation.
+
+`-w PAGE_WIDTH'
+`--width=PAGE_WIDTH'
+ Set page width to PAGE_WIDTH characters for multiple text-column
+ output only (default for PAGE_WIDTH is 72). `-s[CHAR]' turns off
+ the default page width and any line truncation and column
+ alignment. Lines of full length are merged, regardless of the
+ column options set. No PAGE_WIDTH setting is possible with single
+ column output. A POSIX-compliant formulation.
+
+`-W PAGE_WIDTH'
+`--page_width=PAGE_WIDTH'
+ Set the page width to PAGE_WIDTH characters. That's valid with and
+ without a column option. Text lines are truncated, unless `-J' is
+ used. Together with one of the three column options (`-COLUMN',
+ `-a -COLUMN' or `-m') column alignment is always used. The
+ separator options `-S' or `-s' don't affect the `-W' option.
+ Default is 72 characters. Without `-W PAGE_WIDTH' and without any
+ of the column options NO line truncation is used (defined to keep
+ downward compatibility and to meet most frequent tasks). That's
+ equivalent to `-W 72 -J'. The header line is never truncated.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: fold invocation, Prev: pr invocation, Up: Formatting file contents
+
+4.3 `fold': Wrap input lines to fit in specified width
+======================================================
+
+`fold' writes each FILE (`-' means standard input), or standard input
+if none are given, to standard output, breaking long lines. Synopsis:
+
+ fold [OPTION]... [FILE]...
+
+ By default, `fold' breaks lines wider than 80 columns. The output
+is split into as many lines as necessary.
+
+ `fold' counts screen columns by default; thus, a tab may count more
+than one column, backspace decreases the column count, and carriage
+return sets the column to zero.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-b'
+`--bytes'
+ Count bytes rather than columns, so that tabs, backspaces, and
+ carriage returns are each counted as taking up one column, just
+ like other characters.
+
+`-s'
+`--spaces'
+ Break at word boundaries: the line is broken after the last blank
+ before the maximum line length. If the line contains no such
+ blanks, the line is broken at the maximum line length as usual.
+
+`-w WIDTH'
+`--width=WIDTH'
+ Use a maximum line length of WIDTH columns instead of 80.
+
+ For compatibility `fold' supports an obsolete option syntax
+ `-WIDTH'. New scripts should use `-w WIDTH' instead.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: Output of parts of files, Next: Summarizing files, Prev: Formatting file contents, Up: Top
+
+5 Output of parts of files
+**************************
+
+These commands output pieces of the input.
+
+* Menu:
+
+* head invocation:: Output the first part of files.
+* tail invocation:: Output the last part of files.
+* split invocation:: Split a file into fixed-size pieces.
+* csplit invocation:: Split a file into context-determined pieces.
+
+
+File: coreutils.info, Node: head invocation, Next: tail invocation, Up: Output of parts of files
+
+5.1 `head': Output the first part of files
+==========================================
+
+`head' prints the first part (10 lines by default) of each FILE; it
+reads from standard input if no files are given or when given a FILE of
+`-'. Synopsis:
+
+ head [OPTION]... [FILE]...
+
+ If more than one FILE is specified, `head' prints a one-line header
+consisting of:
+
+ ==> FILE NAME <==
+
+before the output for each FILE.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-c N'
+`--bytes=N'
+ Print the first N bytes, instead of initial lines. Appending `b'
+ multiplies N by 512, `k' by 1024, and `m' by 1048576. However, if
+ N starts with a `-', print all but the last N bytes of each file.
+
+`-n N'
+`--lines=N'
+ Output the first N lines. However, if N starts with a `-', print
+ all but the last N lines of each file.
+
+`-q'
+`--quiet'
+`--silent'
+ Never print file name headers.
+
+`-v'
+`--verbose'
+ Always print file name headers.
+
+
+ For compatibility `head' also supports an obsolete option syntax
+`-COUNTOPTIONS', which is recognized only if it is specified first.
+COUNT is a decimal number optionally followed by a size letter (`b',
+`k', `m') as in `-c', or `l' to mean count by lines, or other option
+letters (`cqv'). Scripts intended for standard hosts should use `-c
+COUNT' or `-n COUNT' instead. If your script must also run on hosts
+that support only the obsolete syntax, it is usually simpler to avoid
+`head', e.g., by using `sed 5q' instead of `head -5'.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: tail invocation, Next: split invocation, Prev: head invocation, Up: Output of parts of files
+
+5.2 `tail': Output the last part of files
+=========================================
+
+`tail' prints the last part (10 lines by default) of each FILE; it
+reads from standard input if no files are given or when given a FILE of
+`-'. Synopsis:
+
+ tail [OPTION]... [FILE]...
+
+ If more than one FILE is specified, `tail' prints a one-line header
+consisting of:
+
+ ==> FILE NAME <==
+
+before the output for each FILE.
+
+ GNU `tail' can output any amount of data (some other versions of
+`tail' cannot). It also has no `-r' option (print in reverse), since
+reversing a file is really a different job from printing the end of a
+file; BSD `tail' (which is the one with `-r') can only reverse files
+that are at most as large as its buffer, which is typically 32 KiB. A
+more reliable and versatile way to reverse files is the GNU `tac'
+command.
+
+ If any option-argument is a number N starting with a `+', `tail'
+begins printing with the Nth item from the start of each file, instead
+of from the end.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-c BYTES'
+`--bytes=BYTES'
+ Output the last BYTES bytes, instead of final lines. Appending
+ `b' multiplies BYTES by 512, `k' by 1024, and `m' by 1048576.
+
+`-f'
+`--follow[=HOW]'
+ Loop forever trying to read more characters at the end of the file,
+ presumably because the file is growing. If more than one file is
+ given, `tail' prints a header whenever it gets output from a
+ different file, to indicate which file that output is from.
+
+ There are two ways to specify how you'd like to track files with
+ this option, but that difference is noticeable only when a
+ followed file is removed or renamed. If you'd like to continue to
+ track the end of a growing file even after it has been unlinked,
+ use `--follow=descriptor'. This is the default behavior, but it
+ is not useful if you're tracking a log file that may be rotated
+ (removed or renamed, then reopened). In that case, use
+ `--follow=name' to track the named file by reopening it
+ periodically to see if it has been removed and recreated by some
+ other program.
+
+ No matter which method you use, if the tracked file is determined
+ to have shrunk, `tail' prints a message saying the file has been
+ truncated and resumes tracking the end of the file from the
+ newly-determined endpoint.
+
+ When a file is removed, `tail''s behavior depends on whether it is
+ following the name or the descriptor. When following by name,
+ tail can detect that a file has been removed and gives a message
+ to that effect, and if `--retry' has been specified it will
+ continue checking periodically to see if the file reappears. When
+ following a descriptor, tail does not detect that the file has
+ been unlinked or renamed and issues no message; even though the
+ file may no longer be accessible via its original name, it may
+ still be growing.
+
+ The option values `descriptor' and `name' may be specified only
+ with the long form of the option, not with `-f'.
+
+ If `POSIXLY_CORRECT' is set, the `-f' option is ignored if no FILE
+ operand is specified and standard input is a FIFO or a pipe.
+
+`-F'
+ This option is the same as `--follow=name --retry'. That is, tail
+ will attempt to reopen a file when it is removed. Should this
+ fail, tail will keep trying until it becomes accessible again.
+
+`--retry'
+ This option is useful mainly when following by name (i.e., with
+ `--follow=name'). Without this option, when tail encounters a
+ file that doesn't exist or is otherwise inaccessible, it reports
+ that fact and never checks it again.
+
+`--sleep-interval=NUMBER'
+ Change the number of seconds to wait between iterations (the
+ default is 1.0). During one iteration, every specified file is
+ checked to see if it has changed size. Historical implementations
+ of `tail' have required that NUMBER be an integer. However, GNU
+ `tail' accepts an arbitrary floating point number (using a period
+ before any fractional digits).
+
+`--pid=PID'
+ When following by name or by descriptor, you may specify the
+ process ID, PID, of the sole writer of all FILE arguments. Then,
+ shortly after that process terminates, tail will also terminate.
+ This will work properly only if the writer and the tailing process
+ are running on the same machine. For example, to save the output
+ of a build in a file and to watch the file grow, if you invoke
+ `make' and `tail' like this then the tail process will stop when
+ your build completes. Without this option, you would have had to
+ kill the `tail -f' process yourself.
+
+ $ make >& makerr & tail --pid=$! -f makerr
+
+ If you specify a PID that is not in use or that does not correspond
+ to the process that is writing to the tailed files, then `tail'
+ may terminate long before any FILEs stop growing or it may not
+ terminate until long after the real writer has terminated. Note
+ that `--pid' cannot be supported on some systems; `tail' will
+ print a warning if this is the case.
+
+`--max-unchanged-stats=N'
+ When tailing a file by name, if there have been N (default
+ n=5) consecutive iterations for which the file has not changed,
+ then `open'/`fstat' the file to determine if that file name is
+ still associated with the same device/inode-number pair as before.
+ When following a log file that is rotated, this is approximately
+ the number of seconds between when tail prints the last
+ pre-rotation lines and when it prints the lines that have
+ accumulated in the new log file. This option is meaningful only
+ when following by name.
+
+`-n N'
+`--lines=N'
+ Output the last N lines.
+
+`-q'
+`--quiet'
+`--silent'
+ Never print file name headers.
+
+`-v'
+`--verbose'
+ Always print file name headers.
+
+
+ For compatibility `tail' also supports an obsolete usage `tail
+-[COUNT][bcl][f] [FILE]', which is recognized only if it does not
+conflict with the usage described above. This obsolete form uses
+exactly one option and at most one file. In the option, COUNT is an
+optional decimal number optionally followed by a size letter (`b', `c',
+`l') to mean count by 512-byte blocks, bytes, or lines, optionally
+followed by `f' which has the same meaning as `-f'.
+
+ On older systems, the leading `-' can be replaced by `+' in the
+obsolete option syntax with the same meaning as in counts, and obsolete
+usage overrides normal usage when the two conflict. This obsolete
+behavior can be enabled or disabled with the `_POSIX2_VERSION'
+environment variable (*note Standards conformance::).
+
+ Scripts intended for use on standard hosts should avoid obsolete
+syntax and should use `-c COUNT[b]', `-n COUNT', and/or `-f' instead.
+If your script must also run on hosts that support only the obsolete
+syntax, you can often rewrite it to avoid problematic usages, e.g., by
+using `sed -n '$p'' rather than `tail -1'. If that's not possible, the
+script can use a test like `if tail -c +1 </dev/null >/dev/null 2>&1;
+then ...' to decide which syntax to use.
+
+ Even if your script assumes the standard behavior, you should still
+beware usages whose behaviors differ depending on the POSIX version.
+For example, avoid `tail - main.c', since it might be interpreted as
+either `tail main.c' or as `tail -- - main.c'; avoid `tail -c 4', since
+it might mean either `tail -c4' or `tail -c 10 4'; and avoid `tail +4',
+since it might mean either `tail ./+4' or `tail -n +4'.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: split invocation, Next: csplit invocation, Prev: tail invocation, Up: Output of parts of files
+
+5.3 `split': Split a file into fixed-size pieces
+================================================
+
+`split' creates output files containing consecutive sections of INPUT
+(standard input if none is given or INPUT is `-'). Synopsis:
+
+ split [OPTION] [INPUT [PREFIX]]
+
+ By default, `split' puts 1000 lines of INPUT (or whatever is left
+over for the last section), into each output file.
+
+ The output files' names consist of PREFIX (`x' by default) followed
+by a group of characters (`aa', `ab', ... by default), such that
+concatenating the output files in traditional sorted order by file name
+produces the original input file. If the output file names are
+exhausted, `split' reports an error without deleting the output files
+that it did create.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-a LENGTH'
+`--suffix-length=LENGTH'
+ Use suffixes of length LENGTH. The default LENGTH is 2.
+
+`-l LINES'
+`--lines=LINES'
+ Put LINES lines of INPUT into each output file.
+
+ For compatibility `split' also supports an obsolete option syntax
+ `-LINES'. New scripts should use `-l LINES' instead.
+
+`-b BYTES'
+`--bytes=BYTES'
+ Put the first BYTES bytes of INPUT into each output file.
+ Appending `b' multiplies BYTES by 512, `k' by 1024, and `m' by
+ 1048576.
+
+`-C BYTES'
+`--line-bytes=BYTES'
+ Put into each output file as many complete lines of INPUT as
+ possible without exceeding BYTES bytes. For lines longer than
+ BYTES bytes, put BYTES bytes into each output file until less than
+ BYTES bytes of the line are left, then continue normally. BYTES
+ has the same format as for the `--bytes' option.
+
+`-d'
+`--numeric-suffixes'
+ Use digits in suffixes rather than lower-case letters.
+
+`--verbose'
+ Write a diagnostic to standard error just before each output file
+ is opened.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: csplit invocation, Prev: split invocation, Up: Output of parts of files
+
+5.4 `csplit': Split a file into context-determined pieces
+=========================================================
+
+`csplit' creates zero or more output files containing sections of INPUT
+(standard input if INPUT is `-'). Synopsis:
+
+ csplit [OPTION]... INPUT PATTERN...
+
+ The contents of the output files are determined by the PATTERN
+arguments, as detailed below. An error occurs if a PATTERN argument
+refers to a nonexistent line of the input file (e.g., if no remaining
+line matches a given regular expression). After every PATTERN has been
+matched, any remaining input is copied into one last output file.
+
+ By default, `csplit' prints the number of bytes written to each
+output file after it has been created.
+
+ The types of pattern arguments are:
+
+`N'
+ Create an output file containing the input up to but not including
+ line N (a positive integer). If followed by a repeat count, also
+ create an output file containing the next N lines of the input
+ file once for each repeat.
+
+`/REGEXP/[OFFSET]'
+ Create an output file containing the current line up to (but not
+ including) the next line of the input file that contains a match
+ for REGEXP. The optional OFFSET is an integer. If it is given,
+ the input up to (but not including) the matching line plus or
+ minus OFFSET is put into the output file, and the line after that
+ begins the next section of input.
+
+`%REGEXP%[OFFSET]'
+ Like the previous type, except that it does not create an output
+ file, so that section of the input file is effectively ignored.
+
+`{REPEAT-COUNT}'
+ Repeat the previous pattern REPEAT-COUNT additional times. The
+ REPEAT-COUNT can either be a positive integer or an asterisk,
+ meaning repeat as many times as necessary until the input is
+ exhausted.
+
+
+ The output files' names consist of a prefix (`xx' by default)
+followed by a suffix. By default, the suffix is an ascending sequence
+of two-digit decimal numbers from `00' to `99'. In any case,
+concatenating the output files in sorted order by file name produces the
+original input file.
+
+ By default, if `csplit' encounters an error or receives a hangup,
+interrupt, quit, or terminate signal, it removes any output files that
+it has created so far before it exits.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-f PREFIX'
+`--prefix=PREFIX'
+ Use PREFIX as the output file name prefix.
+
+`-b SUFFIX'
+`--suffix=SUFFIX'
+ Use SUFFIX as the output file name suffix. When this option is
+ specified, the suffix string must include exactly one
+ `printf(3)'-style conversion specification, possibly including
+ format specification flags, a field width, a precision
+ specifications, or all of these kinds of modifiers. The format
+ letter must convert a binary integer argument to readable form;
+ thus, only `d', `i', `u', `o', `x', and `X' conversions are
+ allowed. The entire SUFFIX is given (with the current output file
+ number) to `sprintf(3)' to form the file name suffixes for each of
+ the individual output files in turn. If this option is used, the
+ `--digits' option is ignored.
+
+`-n DIGITS'
+`--digits=DIGITS'
+ Use output file names containing numbers that are DIGITS digits
+ long instead of the default 2.
+
+`-k'
+`--keep-files'
+ Do not remove output files when errors are encountered.
+
+`-z'
+`--elide-empty-files'
+ Suppress the generation of zero-length output files. (In cases
+ where the section delimiters of the input file are supposed to
+ mark the first lines of each of the sections, the first output
+ file will generally be a zero-length file unless you use this
+ option.) The output file sequence numbers always run
+ consecutively starting from 0, even when this option is specified.
+
+`-s'
+`-q'
+`--silent'
+`--quiet'
+ Do not print counts of output file sizes.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: Summarizing files, Next: Operating on sorted files, Prev: Output of parts of files, Up: Top
+
+6 Summarizing files
+*******************
+
+These commands generate just a few numbers representing entire contents
+of files.
+
+* Menu:
+
+* wc invocation:: Print newline, word, and byte counts.
+* sum invocation:: Print checksum and block counts.
+* cksum invocation:: Print CRC checksum and byte counts.
+* md5sum invocation:: Print or check MD5 digests.
+* sha1sum invocation:: Print or check SHA-1 digests.
+* sha2 utilities:: Print or check SHA-2 digests.
+
+
+File: coreutils.info, Node: wc invocation, Next: sum invocation, Up: Summarizing files
+
+6.1 `wc': Print newline, word, and byte counts
+==============================================
+
+`wc' counts the number of bytes, characters, whitespace-separated
+words, and newlines in each given FILE, or standard input if none are
+given or for a FILE of `-'. Synopsis:
+
+ wc [OPTION]... [FILE]...
+
+ `wc' prints one line of counts for each file, and if the file was
+given as an argument, it prints the file name following the counts. If
+more than one FILE is given, `wc' prints a final line containing the
+cumulative counts, with the file name `total'. The counts are printed
+in this order: newlines, words, characters, bytes, maximum line length.
+Each count is printed right-justified in a field with at least one
+space between fields so that the numbers and file names normally line
+up nicely in columns. The width of the count fields varies depending
+on the inputs, so you should not depend on a particular field width.
+However, as a GNU extension, if only one count is printed, it is
+guaranteed to be printed without leading spaces.
+
+ By default, `wc' prints three counts: the newline, words, and byte
+counts. Options can specify that only certain counts be printed.
+Options do not undo others previously given, so
+
+ wc --bytes --words
+
+prints both the byte counts and the word counts.
+
+ With the `--max-line-length' option, `wc' prints the length of the
+longest line per file, and if there is more than one file it prints the
+maximum (not the sum) of those lengths.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-c'
+`--bytes'
+ Print only the byte counts.
+
+`-m'
+`--chars'
+ Print only the character counts.
+
+`-w'
+`--words'
+ Print only the word counts.
+
+`-l'
+`--lines'
+ Print only the newline counts.
+
+`-L'
+`--max-line-length'
+ Print only the maximum line lengths.
+
+`--files0-from=FILE'
+ Rather than processing files named on the command line, process
+ those named in file FILE; each name is terminated by a null byte.
+ This is useful when the list of file names is so long that it may
+ exceed a command line length limitation. In such cases, running
+ `wc' via `xargs' is undesirable because it splits the list into
+ pieces and makes `wc' print a total for each sublist rather than
+ for the entire list. One way to produce a list of
+ null-byte-terminated file names is with GNU `find', using its
+ `-print0' predicate. For example, to find the length of the
+ longest line in any `.c' or `.h' file in the current hierarchy, do
+ this:
+
+ find . -name '*.[ch]' -print0 | wc -L --files0-from=- | tail -n1
+
+ Do not specify any FILE on the command line when using this option.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: sum invocation, Next: cksum invocation, Prev: wc invocation, Up: Summarizing files
+
+6.2 `sum': Print checksum and block counts
+==========================================
+
+`sum' computes a 16-bit checksum for each given FILE, or standard input
+if none are given or for a FILE of `-'. Synopsis:
+
+ sum [OPTION]... [FILE]...
+
+ `sum' prints the checksum for each FILE followed by the number of
+blocks in the file (rounded up). If more than one FILE is given, file
+names are also printed (by default). (With the `--sysv' option,
+corresponding file names are printed when there is at least one file
+argument.)
+
+ By default, GNU `sum' computes checksums using an algorithm
+compatible with BSD `sum' and prints file sizes in units of 1024-byte
+blocks.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-r'
+ Use the default (BSD compatible) algorithm. This option is
+ included for compatibility with the System V `sum'. Unless `-s'
+ was also given, it has no effect.
+
+`-s'
+`--sysv'
+ Compute checksums using an algorithm compatible with System V
+ `sum''s default, and print file sizes in units of 512-byte blocks.
+
+
+ `sum' is provided for compatibility; the `cksum' program (see next
+section) is preferable in new applications.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: cksum invocation, Next: md5sum invocation, Prev: sum invocation, Up: Summarizing files
+
+6.3 `cksum': Print CRC checksum and byte counts
+===============================================
+
+`cksum' computes a cyclic redundancy check (CRC) checksum for each
+given FILE, or standard input if none are given or for a FILE of `-'.
+Synopsis:
+
+ cksum [OPTION]... [FILE]...
+
+ `cksum' prints the CRC checksum for each file along with the number
+of bytes in the file, and the file name unless no arguments were given.
+
+ `cksum' is typically used to ensure that files transferred by
+unreliable means (e.g., netnews) have not been corrupted, by comparing
+the `cksum' output for the received files with the `cksum' output for
+the original files (typically given in the distribution).
+
+ The CRC algorithm is specified by the POSIX standard. It is not
+compatible with the BSD or System V `sum' algorithms (see the previous
+section); it is more robust.
+
+ The only options are `--help' and `--version'. *Note Common
+options::.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: md5sum invocation, Next: sha1sum invocation, Prev: cksum invocation, Up: Summarizing files
+
+6.4 `md5sum': Print or check MD5 digests
+========================================
+
+`md5sum' computes a 128-bit checksum (or "fingerprint" or
+"message-digest") for each specified FILE.
+
+ Note: The MD5 digest is more reliable than a simple CRC (provided by
+the `cksum' command) for detecting accidental file corruption, as the
+chances of accidentally having two files with identical MD5 are
+vanishingly small. However, it should not be considered truly secure
+against malicious tampering: although finding a file with a given MD5
+fingerprint, or modifying a file so as to retain its MD5 are considered
+infeasible at the moment, it is known how to produce different files
+with identical MD5 (a "collision"), something which can be a security
+issue in certain contexts. For more secure hashes, consider using
+SHA-1 or SHA-2. *Note sha1sum invocation::, and *Note sha2 utilities::.
+
+ If a FILE is specified as `-' or if no files are given `md5sum'
+computes the checksum for the standard input. `md5sum' can also
+determine whether a file and checksum are consistent. Synopsis:
+
+ md5sum [OPTION]... [FILE]...
+
+ For each FILE, `md5sum' outputs the MD5 checksum, a flag indicating
+a binary or text input file, and the file name. If FILE contains a
+backslash or newline, the line is started with a backslash, and each
+problematic character in the file name is escaped with a backslash,
+making the output unambiguous even in the presence of arbitrary file
+names. If FILE is omitted or specified as `-', standard input is read.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-b'
+`--binary'
+ Treat each input file as binary, by reading it in binary mode and
+ outputting a `*' flag. This is the inverse of `--text'. On
+ systems like GNU that do not distinguish between binary and text
+ files, this option merely flags each input file as binary: the MD5
+ checksum is unaffected. This option is the default on systems
+ like MS-DOS that distinguish between binary and text files, except
+ for reading standard input when standard input is a terminal.
+
+`-c'
+`--check'
+ Read file names and checksum information (not data) from each FILE
+ (or from stdin if no FILE was specified) and report whether the
+ checksums match the contents of the named files. The input to
+ this mode of `md5sum' is usually the output of a prior,
+ checksum-generating run of `md5sum'. Each valid line of input
+ consists of an MD5 checksum, a binary/text flag, and then a file
+ name. Binary files are marked with `*', text with ` '. For each
+ such line, `md5sum' reads the named file and computes its MD5
+ checksum. Then, if the computed message digest does not match the
+ one on the line with the file name, the file is noted as having
+ failed the test. Otherwise, the file passes the test. By
+ default, for each valid line, one line is written to standard
+ output indicating whether the named file passed the test. After
+ all checks have been performed, if there were any failures, a
+ warning is issued to standard error. Use the `--status' option to
+ inhibit that output. If any listed file cannot be opened or read,
+ if any valid line has an MD5 checksum inconsistent with the
+ associated file, or if no valid line is found, `md5sum' exits with
+ nonzero status. Otherwise, it exits successfully.
+
+`--status'
+ This option is useful only when verifying checksums. When
+ verifying checksums, don't generate the default one-line-per-file
+ diagnostic and don't output the warning summarizing any failures.
+ Failures to open or read a file still evoke individual diagnostics
+ to standard error. If all listed files are readable and are
+ consistent with the associated MD5 checksums, exit successfully.
+ Otherwise exit with a status code indicating there was a failure.
+
+`-t'
+`--text'
+ Treat each input file as text, by reading it in text mode and
+ outputting a ` ' flag. This is the inverse of `--binary'. This
+ option is the default on systems like GNU that do not distinguish
+ between binary and text files. On other systems, it is the
+ default for reading standard input when standard input is a
+ terminal.
+
+`-w'
+`--warn'
+ When verifying checksums, warn about improperly formatted MD5
+ checksum lines. This option is useful only if all but a few lines
+ in the checked input are valid.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: sha1sum invocation, Next: sha2 utilities, Prev: md5sum invocation, Up: Summarizing files
+
+6.5 `sha1sum': Print or check SHA-1 digests
+===========================================
+
+`sha1sum' computes a 160-bit checksum for each specified FILE. The
+usage and options of this command are precisely the same as for
+`md5sum'. *Note md5sum invocation::.
+
+ Note: The SHA-1 digest is more secure than MD5, and no collisions of
+it are known (different files having the same fingerprint). However,
+it is known that they can be produced with considerable, but not
+unreasonable, resources. For this reason, it is generally considered
+that SHA-1 should be gradually phased out in favor of the more secure
+SHA-2 hash algorithms. *Note sha2 utilities::.
+
+
+File: coreutils.info, Node: sha2 utilities, Prev: sha1sum invocation, Up: Summarizing files
+
+6.6 sha2 utilities: Print or check SHA-2 digests
+================================================
+
+The commands `sha224sum', `sha256sum', `sha384sum' and `sha512sum'
+compute checksums of various lengths (respectively 224, 256, 384 and
+512 bits), collectively known as the SHA-2 hashes. The usage and
+options of these commands are precisely the same as for `md5sum'.
+*Note md5sum invocation::.
+
+ Note: The SHA384 and SHA512 digests are considerably slower to
+compute, especially on 32-bit computers, than SHA224 or SHA256.
+
+
+File: coreutils.info, Node: Operating on sorted files, Next: Operating on fields within a line, Prev: Summarizing files, Up: Top
+
+7 Operating on sorted files
+***************************
+
+These commands work with (or produce) sorted files.
+
+* Menu:
+
+* sort invocation:: Sort text files.
+* shuf invocation:: Shuffle text files.
+* uniq invocation:: Uniquify files.
+* comm invocation:: Compare two sorted files line by line.
+* ptx invocation:: Produce a permuted index of file contents.
+* tsort invocation:: Topological sort.
+* tsort background:: Where tsort came from.
+
+
+File: coreutils.info, Node: sort invocation, Next: shuf invocation, Up: Operating on sorted files
+
+7.1 `sort': Sort text files
+===========================
+
+`sort' sorts, merges, or compares all the lines from the given files,
+or standard input if none are given or for a FILE of `-'. By default,
+`sort' writes the results to standard output. Synopsis:
+
+ sort [OPTION]... [FILE]...
+
+ `sort' has three modes of operation: sort (the default), merge, and
+check for sortedness. The following options change the operation mode:
+
+`-c'
+`--check'
+`--check=diagnose-first'
+ Check whether the given file is already sorted: if it is not all
+ sorted, print a diagnostic containing the first out-of-order line
+ and exit with a status of 1. Otherwise, exit successfully. At
+ most one input file can be given.
+
+`-C'
+`--check=quiet'
+`--check=silent'
+ Exit successfully if the given file is already sorted, and exit
+ with status 1 otherwise. At most one input file can be given.
+ This is like `-c', except it does not print a diagnostic.
+
+`-m'
+`--merge'
+ Merge the given files by sorting them as a group. Each input file
+ must always be individually sorted. It always works to sort
+ instead of merge; merging is provided because it is faster, in the
+ case where it works.
+
+
+ A pair of lines is compared as follows: `sort' compares each pair of
+fields, in the order specified on the command line, according to the
+associated ordering options, until a difference is found or no fields
+are left. If no key fields are specified, `sort' uses a default key of
+the entire line. Finally, as a last resort when all keys compare
+equal, `sort' compares entire lines as if no ordering options other
+than `--reverse' (`-r') were specified. The `--stable' (`-s') option
+disables this "last-resort comparison" so that lines in which all
+fields compare equal are left in their original relative order. The
+`--unique' (`-u') option also disables the last-resort comparison.
+
+ Unless otherwise specified, all comparisons use the character
+collating sequence specified by the `LC_COLLATE' locale.(1)
+
+ GNU `sort' (as specified for all GNU utilities) has no limit on
+input line length or restrictions on bytes allowed within lines. In
+addition, if the final byte of an input file is not a newline, GNU
+`sort' silently supplies one. A line's trailing newline is not part of
+the line for comparison purposes.
+
+ Exit status:
+
+ 0 if no error occurred
+ 1 if invoked with `-c' or `-C' and the input is not sorted
+ 2 if an error occurred
+
+ If the environment variable `TMPDIR' is set, `sort' uses its value
+as the directory for temporary files instead of `/tmp'. The
+`--temporary-directory' (`-T') option in turn overrides the environment
+variable.
+
+ The following options affect the ordering of output lines. They may
+be specified globally or as part of a specific key field. If no key
+fields are specified, global options apply to comparison of entire
+lines; otherwise the global options are inherited by key fields that do
+not specify any special options of their own. In pre-POSIX versions of
+`sort', global options affect only later key fields, so portable shell
+scripts should specify global options first.
+
+`-b'
+`--ignore-leading-blanks'
+ Ignore leading blanks when finding sort keys in each line. By
+ default a blank is a space or a tab, but the `LC_CTYPE' locale can
+ change this.
+
+`-d'
+`--dictionary-order'
+ Sort in "phone directory" order: ignore all characters except
+ letters, digits and blanks when sorting. By default letters and
+ digits are those of ASCII and a blank is a space or a tab, but the
+ `LC_CTYPE' locale can change this.
+
+`-f'
+`--ignore-case'
+ Fold lowercase characters into the equivalent uppercase characters
+ when comparing so that, for example, `b' and `B' sort as equal.
+ The `LC_CTYPE' locale determines character types.
+
+`-g'
+`--general-numeric-sort'
+ Sort numerically, using the standard C function `strtod' to convert
+ a prefix of each line to a double-precision floating point number.
+ This allows floating point numbers to be specified in scientific
+ notation, like `1.0e-34' and `10e100'. The `LC_NUMERIC' locale
+ determines the decimal-point character. Do not report overflow,
+ underflow, or conversion errors. Use the following collating
+ sequence:
+
+ * Lines that do not start with numbers (all considered to be
+ equal).
+
+ * NaNs ("Not a Number" values, in IEEE floating point
+ arithmetic) in a consistent but machine-dependent order.
+
+ * Minus infinity.
+
+ * Finite numbers in ascending numeric order (with -0 and +0
+ equal).
+
+ * Plus infinity.
+
+ Use this option only if there is no alternative; it is much slower
+ than `--numeric-sort' (`-n') and it can lose information when
+ converting to floating point.
+
+`-i'
+`--ignore-nonprinting'
+ Ignore nonprinting characters. The `LC_CTYPE' locale determines
+ character types. This option has no effect if the stronger
+ `--dictionary-order' (`-d') option is also given.
+
+`-M'
+`--month-sort'
+ An initial string, consisting of any amount of blanks, followed by
+ a month name abbreviation, is folded to UPPER case and compared in
+ the order `JAN' < `FEB' < ... < `DEC'. Invalid names compare low
+ to valid names. The `LC_TIME' locale category determines the
+ month spellings. By default a blank is a space or a tab, but the
+ `LC_CTYPE' locale can change this.
+
+`-n'
+`--numeric-sort'
+ Sort numerically. The number begins each line and consists of
+ optional blanks, an optional `-' sign, and zero or more digits
+ possibly separated by thousands separators, optionally followed by
+ a decimal-point character and zero or more digits. An empty
+ number is treated as `0'. The `LC_NUMERIC' locale specifies the
+ decimal-point character and thousands separator. By default a
+ blank is a space or a tab, but the `LC_CTYPE' locale can change
+ this.
+
+ Comparison is exact; there is no rounding error.
+
+ Neither a leading `+' nor exponential notation is recognized. To
+ compare such strings numerically, use the `--general-numeric-sort'
+ (`-g') option.
+
+`-r'
+`--reverse'
+ Reverse the result of comparison, so that lines with greater key
+ values appear earlier in the output instead of later.
+
+`-R'
+`--random-sort'
+ Sort by hashing the input keys and then sorting the hash values.
+ Choose the hash function at random, ensuring that it is free of
+ collisions so that differing keys have differing hash values.
+ This is like a random permutation of the inputs (*note shuf
+ invocation::), except that keys with the same value sort together.
+
+ If multiple random sort fields are specified, the same random hash
+ function is used for all fields. To use different random hash
+ functions for different fields, you can invoke `sort' more than
+ once.
+
+ The choice of hash function is affected by the `--random-source'
+ option.
+
+
+ Other options are:
+
+`--compress-program=PROG'
+ Compress any temporary files with the program PROG.
+
+ With no arguments, PROG must compress standard input to standard
+ output, and when given the `-d' option it must decompress standard
+ input to standard output.
+
+ Terminate with an error if PROG exits with nonzero status.
+
+ Whitespace and the backslash character should not appear in PROG;
+ they are reserved for future use.
+
+`-k POS1[,POS2]'
+`--key=POS1[,POS2]'
+ Specify a sort field that consists of the part of the line between
+ POS1 and POS2 (or the end of the line, if POS2 is omitted),
+ _inclusive_.
+
+ Each POS has the form `F[.C][OPTS]', where F is the number of the
+ field to use, and C is the number of the first character from the
+ beginning of the field. Fields and character positions are
+ numbered starting with 1; a character position of zero in POS2
+ indicates the field's last character. If `.C' is omitted from
+ POS1, it defaults to 1 (the beginning of the field); if omitted
+ from POS2, it defaults to 0 (the end of the field). OPTS are
+ ordering options, allowing individual keys to be sorted according
+ to different rules; see below for details. Keys can span multiple
+ fields.
+
+ Example: To sort on the second field, use `--key=2,2' (`-k 2,2').
+ See below for more examples.
+
+`-o OUTPUT-FILE'
+`--output=OUTPUT-FILE'
+ Write output to OUTPUT-FILE instead of standard output. Normally,
+ `sort' reads all input before opening OUTPUT-FILE, so you can
+ safely sort a file in place by using commands like `sort -o F F'
+ and `cat F | sort -o F'. However, `sort' with `--merge' (`-m')
+ can open the output file before reading all input, so a command
+ like `cat F | sort -m -o F - G' is not safe as `sort' might start
+ writing `F' before `cat' is done reading it.
+
+ On newer systems, `-o' cannot appear after an input file if
+ `POSIXLY_CORRECT' is set, e.g., `sort F -o F'. Portable scripts
+ should specify `-o OUTPUT-FILE' before any input files.
+
+`--random-source=FILE'
+ Use FILE as a source of random data used to determine which random
+ hash function to use with the `-R' option. *Note Random sources::.
+
+`-s'
+`--stable'
+ Make `sort' stable by disabling its last-resort comparison. This
+ option has no effect if no fields or global ordering options other
+ than `--reverse' (`-r') are specified.
+
+`-S SIZE'
+`--buffer-size=SIZE'
+ Use a main-memory sort buffer of the given SIZE. By default, SIZE
+ is in units of 1024 bytes. Appending `%' causes SIZE to be
+ interpreted as a percentage of physical memory. Appending `K'
+ multiplies SIZE by 1024 (the default), `M' by 1,048,576, `G' by
+ 1,073,741,824, and so on for `T', `P', `E', `Z', and `Y'.
+ Appending `b' causes SIZE to be interpreted as a byte count, with
+ no multiplication.
+
+ This option can improve the performance of `sort' by causing it to
+ start with a larger or smaller sort buffer than the default.
+ However, this option affects only the initial buffer size. The
+ buffer grows beyond SIZE if `sort' encounters input lines larger
+ than SIZE.
+
+`-t SEPARATOR'
+`--field-separator=SEPARATOR'
+ Use character SEPARATOR as the field separator when finding the
+ sort keys in each line. By default, fields are separated by the
+ empty string between a non-blank character and a blank character.
+ By default a blank is a space or a tab, but the `LC_CTYPE' locale
+ can change this.
+
+ That is, given the input line ` foo bar', `sort' breaks it into
+ fields ` foo' and ` bar'. The field separator is not considered
+ to be part of either the field preceding or the field following,
+ so with `sort -t " "' the same input line has three fields: an
+ empty field, `foo', and `bar'. However, fields that extend to the
+ end of the line, as `-k 2', or fields consisting of a range, as
+ `-k 2,3', retain the field separators present between the
+ endpoints of the range.
+
+ To specify a null character (ASCII NUL) as the field separator,
+ use the two-character string `\0', e.g., `sort -t '\0''.
+
+`-T TEMPDIR'
+`--temporary-directory=TEMPDIR'
+ Use directory TEMPDIR to store temporary files, overriding the
+ `TMPDIR' environment variable. If this option is given more than
+ once, temporary files are stored in all the directories given. If
+ you have a large sort or merge that is I/O-bound, you can often
+ improve performance by using this option to specify directories on
+ different disks and controllers.
+
+`-u'
+`--unique'
+ Normally, output only the first of a sequence of lines that compare
+ equal. For the `--check' (`-c' or `-C') option, check that no
+ pair of consecutive lines compares equal.
+
+ This option also disables the default last-resort comparison.
+
+ The commands `sort -u' and `sort | uniq' are equivalent, but this
+ equivalence does not extend to arbitrary `sort' options. For
+ example, `sort -n -u' inspects only the value of the initial
+ numeric string when checking for uniqueness, whereas `sort -n |
+ uniq' inspects the entire line. *Note uniq invocation::.
+
+`-z'
+`--zero-terminated'
+ Treat the input as a set of lines, each terminated by a null
+ character (ASCII NUL) instead of a line feed (ASCII LF). This
+ option can be useful in conjunction with `perl -0' or `find
+ -print0' and `xargs -0' which do the same in order to reliably
+ handle arbitrary file names (even those containing blanks or other
+ special characters).
+
+
+ Historical (BSD and System V) implementations of `sort' have
+differed in their interpretation of some options, particularly `-b',
+`-f', and `-n'. GNU sort follows the POSIX behavior, which is usually
+(but not always!) like the System V behavior. According to POSIX, `-n'
+no longer implies `-b'. For consistency, `-M' has been changed in the
+same way. This may affect the meaning of character positions in field
+specifications in obscure cases. The only fix is to add an explicit
+`-b'.
+
+ A position in a sort field specified with `-k' may have any of the
+option letters `Mbdfinr' appended to it, in which case the global
+ordering options are not used for that particular field. The `-b'
+option may be independently attached to either or both of the start and
+end positions of a field specification, and if it is inherited from the
+global options it will be attached to both. If input lines can contain
+leading or adjacent blanks and `-t' is not used, then `-k' is typically
+combined with `-b', `-g', `-M', or `-n'; otherwise the varying numbers
+of leading blanks in fields can cause confusing results.
+
+ If the start position in a sort field specifier falls after the end
+of the line or after the end field, the field is empty. If the `-b'
+option was specified, the `.C' part of a field specification is counted
+from the first nonblank character of the field.
+
+ On older systems, `sort' supports an obsolete origin-zero syntax
+`+POS1 [-POS2]' for specifying sort keys. This obsolete behavior can
+be enabled or disabled with the `_POSIX2_VERSION' environment variable
+(*note Standards conformance::); it can also be enabled when
+`POSIXLY_CORRECT' is not set by using the obsolete syntax with `-POS2'
+present.
+
+ Scripts intended for use on standard hosts should avoid obsolete
+syntax and should use `-k' instead. For example, avoid `sort +2',
+since it might be interpreted as either `sort ./+2' or `sort -k 3'. If
+your script must also run on hosts that support only the obsolete
+syntax, it can use a test like `if sort -k 1 </dev/null >/dev/null
+2>&1; then ...' to decide which syntax to use.
+
+ Here are some examples to illustrate various combinations of options.
+
+ * Sort in descending (reverse) numeric order.
+
+ sort -n -r
+
+ * Sort alphabetically, omitting the first and second fields and the
+ blanks at the start of the third field. This uses a single key
+ composed of the characters beginning at the start of the first
+ nonblank character in field three and extending to the end of each
+ line.
+
+ sort -k 3b
+
+ * Sort numerically on the second field and resolve ties by sorting
+ alphabetically on the third and fourth characters of field five.
+ Use `:' as the field delimiter.
+
+ sort -t : -k 2,2n -k 5.3,5.4
+
+ Note that if you had written `-k 2n' instead of `-k 2,2n' `sort'
+ would have used all characters beginning in the second field and
+ extending to the end of the line as the primary _numeric_ key.
+ For the large majority of applications, treating keys spanning
+ more than one field as numeric will not do what you expect.
+
+ Also note that the `n' modifier was applied to the field-end
+ specifier for the first key. It would have been equivalent to
+ specify `-k 2n,2' or `-k 2n,2n'. All modifiers except `b' apply
+ to the associated _field_, regardless of whether the modifier
+ character is attached to the field-start and/or the field-end part
+ of the key specifier.
+
+ * Sort the password file on the fifth field and ignore any leading
+ blanks. Sort lines with equal values in field five on the numeric
+ user ID in field three. Fields are separated by `:'.
+
+ sort -t : -k 5b,5 -k 3,3n /etc/passwd
+ sort -t : -n -k 5b,5 -k 3,3 /etc/passwd
+ sort -t : -b -k 5,5 -k 3,3n /etc/passwd
+
+ These three commands have equivalent effect. The first specifies
+ that the first key's start position ignores leading blanks and the
+ second key is sorted numerically. The other two commands rely on
+ global options being inherited by sort keys that lack modifiers.
+ The inheritance works in this case because `-k 5b,5b' and `-k
+ 5b,5' are equivalent, as the location of a field-end lacking a `.C'
+ character position is not affected by whether initial blanks are
+ skipped.
+
+ * Sort a set of log files, primarily by IPv4 address and secondarily
+ by time stamp. If two lines' primary and secondary keys are
+ identical, output the lines in the same order that they were
+ input. The log files contain lines that look like this:
+
+ 4.150.156.3 - - [01/Apr/2004:06:31:51 +0000] message 1
+ 211.24.3.231 - - [24/Apr/2004:20:17:39 +0000] message 2
+
+ Fields are separated by exactly one space. Sort IPv4 addresses
+ lexicographically, e.g., 212.61.52.2 sorts before 212.129.233.201
+ because 61 is less than 129.
+
+ sort -s -t ' ' -k 4.9n -k 4.5M -k 4.2n -k 4.14,4.21 file*.log |
+ sort -s -t '.' -k 1,1n -k 2,2n -k 3,3n -k 4,4n
+
+ This example cannot be done with a single `sort' invocation, since
+ IPv4 address components are separated by `.' while dates come just
+ after a space. So it is broken down into two invocations of
+ `sort': the first sorts by time stamp and the second by IPv4
+ address. The time stamp is sorted by year, then month, then day,
+ and finally by hour-minute-second field, using `-k' to isolate each
+ field. Except for hour-minute-second there's no need to specify
+ the end of each key field, since the `n' and `M' modifiers sort
+ based on leading prefixes that cannot cross field boundaries. The
+ IPv4 addresses are sorted lexicographically. The second sort uses
+ `-s' so that ties in the primary key are broken by the secondary
+ key; the first sort uses `-s' so that the combination of the two
+ sorts is stable.
+
+ * Generate a tags file in case-insensitive sorted order.
+
+ find src -type f -print0 | sort -z -f | xargs -0 etags --append
+
+ The use of `-print0', `-z', and `-0' in this case means that file
+ names that contain blanks or other special characters are not
+ broken up by the sort operation.
+
+ * Shuffle a list of directories, but preserve the order of files
+ within each directory. For instance, one could use this to
+ generate a music playlist in which albums are shuffled but the
+ songs of each album are played in order.
+
+ ls */* | sort -t / -k 1,1R -k 2,2
+
+
+ ---------- Footnotes ----------
+
+ (1) If you use a non-POSIX locale (e.g., by setting `LC_ALL' to
+`en_US'), then `sort' may produce output that is sorted differently
+than you're accustomed to. In that case, set the `LC_ALL' environment
+variable to `C'. Note that setting only `LC_COLLATE' has two problems.
+First, it is ineffective if `LC_ALL' is also set. Second, it has
+undefined behavior if `LC_CTYPE' (or `LANG', if `LC_CTYPE' is unset) is
+set to an incompatible value. For example, you get undefined behavior
+if `LC_CTYPE' is `ja_JP.PCK' but `LC_COLLATE' is `en_US.UTF-8'.
+
+
+File: coreutils.info, Node: shuf invocation, Next: uniq invocation, Prev: sort invocation, Up: Operating on sorted files
+
+7.2 `shuf': Shuffling text
+==========================
+
+`shuf' shuffles its input by outputting a random permutation of its
+input lines. Each output permutation is equally likely. Synopses:
+
+ shuf [OPTION]... [FILE]
+ shuf -e [OPTION]... [ARG]...
+ shuf -i LO-HI [OPTION]...
+
+ `shuf' has three modes of operation that affect where it obtains its
+input lines. By default, it reads lines from standard input. The
+following options change the operation mode:
+
+`-e'
+`--echo'
+ Treat each command-line operand as an input line.
+
+`-i LO-HI'
+`--input-range=LO-HI'
+ Act as if input came from a file containing the range of unsigned
+ decimal integers LO...HI, one per line.
+
+
+ `shuf''s other options can affect its behavior in all operation
+modes:
+
+`-n LINES'
+`--head-lines=LINES'
+ Output at most LINES lines. By default, all input lines are
+ output.
+
+`-o OUTPUT-FILE'
+`--output=OUTPUT-FILE'
+ Write output to OUTPUT-FILE instead of standard output. `shuf'
+ reads all input before opening OUTPUT-FILE, so you can safely
+ shuffle a file in place by using commands like `shuf -o F <F' and
+ `cat F | shuf -o F'.
+
+`--random-source=FILE'
+ Use FILE as a source of random data used to determine which
+ permutation to generate. *Note Random sources::.
+
+`-z'
+`--zero-terminated'
+ Treat the input and output as a set of lines, each terminated by a
+ zero byte (ASCII NUL (Null) character) instead of an ASCII LF
+ (Line Feed). This option can be useful in conjunction with `perl
+ -0' or `find -print0' and `xargs -0' which do the same in order to
+ reliably handle arbitrary file names (even those containing blanks
+ or other special characters).
+
+
+ For example:
+
+ shuf <<EOF
+ A man,
+ a plan,
+ a canal:
+ Panama!
+ EOF
+
+might produce the output
+
+ Panama!
+ A man,
+ a canal:
+ a plan,
+
+Similarly, the command:
+
+ shuf -e clubs hearts diamonds spades
+
+might output:
+
+ clubs
+ diamonds
+ spades
+ hearts
+
+and the command `shuf -i 1-4' might output:
+
+ 4
+ 2
+ 1
+ 3
+
+These examples all have four input lines, so `shuf' might produce any
+of the twenty-four possible permutations of the input. In general, if
+there are N input lines, there are N! (i.e., N factorial, or N * (N -
+1) * ... * 1) possible output permutations.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: uniq invocation, Next: comm invocation, Prev: shuf invocation, Up: Operating on sorted files
+
+7.3 `uniq': Uniquify files
+==========================
+
+`uniq' writes the unique lines in the given `input', or standard input
+if nothing is given or for an INPUT name of `-'. Synopsis:
+
+ uniq [OPTION]... [INPUT [OUTPUT]]
+
+ By default, `uniq' prints its input lines, except that it discards
+all but the first of adjacent repeated lines, so that no output lines
+are repeated. Optionally, it can instead discard lines that are not
+repeated, or all repeated lines.
+
+ The input need not be sorted, but repeated input lines are detected
+only if they are adjacent. If you want to discard non-adjacent
+duplicate lines, perhaps you want to use `sort -u'. *Note sort
+invocation::.
+
+ Comparisons use the character collating sequence specified by the
+`LC_COLLATE' locale category.
+
+ If no OUTPUT file is specified, `uniq' writes to standard output.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-f N'
+`--skip-fields=N'
+ Skip N fields on each line before checking for uniqueness. Use a
+ null string for comparison if a line has fewer than N fields.
+ Fields are sequences of non-space non-tab characters that are
+ separated from each other by at least one space or tab.
+
+ For compatibility `uniq' supports an obsolete option syntax `-N'.
+ New scripts should use `-f N' instead.
+
+`-s N'
+`--skip-chars=N'
+ Skip N characters before checking for uniqueness. Use a null
+ string for comparison if a line has fewer than N characters. If
+ you use both the field and character skipping options, fields are
+ skipped over first.
+
+ On older systems, `uniq' supports an obsolete option syntax `+N'.
+ This obsolete behavior can be enabled or disabled with the
+ `_POSIX2_VERSION' environment variable (*note Standards
+ conformance::), but portable scripts should avoid commands whose
+ behavior depends on this variable. For example, use `uniq ./+10'
+ or `uniq -s 10' rather than the ambiguous `uniq +10'.
+
+`-c'
+`--count'
+ Print the number of times each line occurred along with the line.
+
+`-i'
+`--ignore-case'
+ Ignore differences in case when comparing lines.
+
+`-d'
+`--repeated'
+ Discard lines that are not repeated. When used by itself, this
+ option causes `uniq' to print the first copy of each repeated line,
+ and nothing else.
+
+`-D'
+`--all-repeated[=DELIMIT-METHOD]'
+ Do not discard the second and subsequent repeated input lines, but
+ discard lines that are not repeated. This option is useful mainly
+ in conjunction with other options e.g., to ignore case or to
+ compare only selected fields. The optional DELIMIT-METHOD tells
+ how to delimit groups of repeated lines, and must be one of the
+ following:
+
+ `none'
+ Do not delimit groups of repeated lines. This is equivalent
+ to `--all-repeated' (`-D').
+
+ `prepend'
+ Output a newline before each group of repeated lines.
+
+ `separate'
+ Separate groups of repeated lines with a single newline.
+ This is the same as using `prepend', except that there is no
+ newline before the first group, and hence may be better
+ suited for output direct to users.
+
+ Note that when groups are delimited and the input stream contains
+ two or more consecutive blank lines, then the output is ambiguous.
+ To avoid that, filter the input through `tr -s '\n'' to replace
+ each sequence of consecutive newlines with a single newline.
+
+ This is a GNU extension.
+
+`-u'
+`--unique'
+ Discard the first repeated line. When used by itself, this option
+ causes `uniq' to print unique lines, and nothing else.
+
+`-w N'
+`--check-chars=N'
+ Compare at most N characters on each line (after skipping any
+ specified fields and characters). By default the entire rest of
+ the lines are compared.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: comm invocation, Next: ptx invocation, Prev: uniq invocation, Up: Operating on sorted files
+
+7.4 `comm': Compare two sorted files line by line
+=================================================
+
+`comm' writes to standard output lines that are common, and lines that
+are unique, to two input files; a file name of `-' means standard
+input. Synopsis:
+
+ comm [OPTION]... FILE1 FILE2
+
+ Before `comm' can be used, the input files must be sorted using the
+collating sequence specified by the `LC_COLLATE' locale. If an input
+file ends in a non-newline character, a newline is silently appended.
+The `sort' command with no options always outputs a file that is
+suitable input to `comm'.
+
+ With no options, `comm' produces three-column output. Column one
+contains lines unique to FILE1, column two contains lines unique to
+FILE2, and column three contains lines common to both files. Columns
+are separated by a single TAB character.
+
+ The options `-1', `-2', and `-3' suppress printing of the
+corresponding columns. Also see *Note Common options::.
+
+ Unlike some other comparison utilities, `comm' has an exit status
+that does not depend on the result of the comparison. Upon normal
+completion `comm' produces an exit code of zero. If there is an error
+it exits with nonzero status.
+
+
+File: coreutils.info, Node: tsort invocation, Next: tsort background, Prev: ptx invocation, Up: Operating on sorted files
+
+7.5 `tsort': Topological sort
+=============================
+
+`tsort' performs a topological sort on the given FILE, or standard
+input if no input file is given or for a FILE of `-'. For more details
+and some history, see *Note tsort background::. Synopsis:
+
+ tsort [OPTION] [FILE]
+
+ `tsort' reads its input as pairs of strings, separated by blanks,
+indicating a partial ordering. The output is a total ordering that
+corresponds to the given partial ordering.
+
+ For example
+
+ tsort <<EOF
+ a b c
+ d
+ e f
+ b c d e
+ EOF
+
+will produce the output
+
+ a
+ b
+ c
+ d
+ e
+ f
+
+ Consider a more realistic example. You have a large set of
+functions all in one file, and they may all be declared static except
+one. Currently that one (say `main') is the first function defined in
+the file, and the ones it calls directly follow it, followed by those
+they call, etc. Let's say that you are determined to take advantage of
+prototypes, so you have to choose between declaring all of those
+functions (which means duplicating a lot of information from the
+definitions) and rearranging the functions so that as many as possible
+are defined before they are used. One way to automate the latter
+process is to get a list for each function of the functions it calls
+directly. Many programs can generate such lists. They describe a call
+graph. Consider the following list, in which a given line indicates
+that the function on the left calls the one on the right directly.
+
+ main parse_options
+ main tail_file
+ main tail_forever
+ tail_file pretty_name
+ tail_file write_header
+ tail_file tail
+ tail_forever recheck
+ tail_forever pretty_name
+ tail_forever write_header
+ tail_forever dump_remainder
+ tail tail_lines
+ tail tail_bytes
+ tail_lines start_lines
+ tail_lines dump_remainder
+ tail_lines file_lines
+ tail_lines pipe_lines
+ tail_bytes xlseek
+ tail_bytes start_bytes
+ tail_bytes dump_remainder
+ tail_bytes pipe_bytes
+ file_lines dump_remainder
+ recheck pretty_name
+
+ then you can use `tsort' to produce an ordering of those functions
+that satisfies your requirement.
+
+ example$ tsort call-graph | tac
+ dump_remainder
+ start_lines
+ file_lines
+ pipe_lines
+ xlseek
+ start_bytes
+ pipe_bytes
+ tail_lines
+ tail_bytes
+ pretty_name
+ write_header
+ tail
+ recheck
+ parse_options
+ tail_file
+ tail_forever
+ main
+
+ `tsort' detects any cycles in the input and writes the first cycle
+encountered to standard error.
+
+ Note that for a given partial ordering, generally there is no unique
+total ordering. In the context of the call graph above, the function
+`parse_options' may be placed anywhere in the list as long as it
+precedes `main'.
+
+ The only options are `--help' and `--version'. *Note Common
+options::.
+
+
+File: coreutils.info, Node: tsort background, Prev: tsort invocation, Up: Operating on sorted files
+
+7.6 `tsort': Background
+=======================
+
+`tsort' exists because very early versions of the Unix linker processed
+an archive file exactly once, and in order. As `ld' read each object
+in the archive, it decided whether it was needed in the program based on
+whether it defined any symbols which were undefined at that point in
+the link.
+
+ This meant that dependencies within the archive had to be handled
+specially. For example, `scanf' probably calls `read'. That means
+that in a single pass through an archive, it was important for `scanf.o'
+to appear before read.o, because otherwise a program which calls
+`scanf' but not `read' might end up with an unexpected unresolved
+reference to `read'.
+
+ The way to address this problem was to first generate a set of
+dependencies of one object file on another. This was done by a shell
+script called `lorder'. The GNU tools don't provide a version of
+lorder, as far as I know, but you can still find it in BSD
+distributions.
+
+ Then you ran `tsort' over the `lorder' output, and you used the
+resulting sort to define the order in which you added objects to the
+archive.
+
+ This whole procedure has been obsolete since about 1980, because
+Unix archives now contain a symbol table (traditionally built by
+`ranlib', now generally built by `ar' itself), and the Unix linker uses
+the symbol table to effectively make multiple passes over an archive
+file.
+
+ Anyhow, that's where tsort came from. To solve an old problem with
+the way the linker handled archive files, which has since been solved
+in different ways.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: ptx invocation, Next: tsort invocation, Prev: comm invocation, Up: Operating on sorted files
+
+7.7 `ptx': Produce permuted indexes
+===================================
+
+`ptx' reads a text file and essentially produces a permuted index, with
+each keyword in its context. The calling sketch is either one of:
+
+ ptx [OPTION ...] [FILE ...]
+ ptx -G [OPTION ...] [INPUT [OUTPUT]]
+
+ The `-G' (or its equivalent: `--traditional') option disables all
+GNU extensions and reverts to traditional mode, thus introducing some
+limitations and changing several of the program's default option values.
+When `-G' is not specified, GNU extensions are always enabled. GNU
+extensions to `ptx' are documented wherever appropriate in this
+document. For the full list, see *Note Compatibility in ptx::.
+
+ Individual options are explained in the following sections.
+
+ When GNU extensions are enabled, there may be zero, one or several
+FILEs after the options. If there is no FILE, the program reads the
+standard input. If there is one or several FILEs, they give the name
+of input files which are all read in turn, as if all the input files
+were concatenated. However, there is a full contextual break between
+each file and, when automatic referencing is requested, file names and
+line numbers refer to individual text input files. In all cases, the
+program outputs the permuted index to the standard output.
+
+ When GNU extensions are _not_ enabled, that is, when the program
+operates in traditional mode, there may be zero, one or two parameters
+besides the options. If there are no parameters, the program reads the
+standard input and outputs the permuted index to the standard output.
+If there is only one parameter, it names the text INPUT to be read
+instead of the standard input. If two parameters are given, they give
+respectively the name of the INPUT file to read and the name of the
+OUTPUT file to produce. _Be very careful_ to note that, in this case,
+the contents of file given by the second parameter is destroyed. This
+behavior is dictated by System V `ptx' compatibility; GNU Standards
+normally discourage output parameters not introduced by an option.
+
+ Note that for _any_ file named as the value of an option or as an
+input text file, a single dash `-' may be used, in which case standard
+input is assumed. However, it would not make sense to use this
+convention more than once per program invocation.
+
+* Menu:
+
+* General options in ptx:: Options which affect general program behavior.
+* Charset selection in ptx:: Underlying character set considerations.
+* Input processing in ptx:: Input fields, contexts, and keyword selection.
+* Output formatting in ptx:: Types of output format, and sizing the fields.
+* Compatibility in ptx::
+
+
+File: coreutils.info, Node: General options in ptx, Next: Charset selection in ptx, Up: ptx invocation
+
+7.7.1 General options
+---------------------
+
+`-G'
+`--traditional'
+ As already explained, this option disables all GNU extensions to
+ `ptx' and switches to traditional mode.
+
+`--help'
+ Print a short help on standard output, then exit without further
+ processing.
+
+`--version'
+ Print the program version on standard output, then exit without
+ further processing.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: Charset selection in ptx, Next: Input processing in ptx, Prev: General options in ptx, Up: ptx invocation
+
+7.7.2 Charset selection
+-----------------------
+
+As it is set up now, the program assumes that the input file is coded
+using 8-bit ISO 8859-1 code, also known as Latin-1 character set,
+_unless_ it is compiled for MS-DOS, in which case it uses the character
+set of the IBM-PC. (GNU `ptx' is not known to work on smaller MS-DOS
+machines anymore.) Compared to 7-bit ASCII, the set of characters
+which are letters is different; this alters the behavior of regular
+expression matching. Thus, the default regular expression for a
+keyword allows foreign or diacriticized letters. Keyword sorting,
+however, is still crude; it obeys the underlying character set ordering
+quite blindly.
+
+`-f'
+`--ignore-case'
+ Fold lower case letters to upper case for sorting.
+
+
+
+File: coreutils.info, Node: Input processing in ptx, Next: Output formatting in ptx, Prev: Charset selection in ptx, Up: ptx invocation
+
+7.7.3 Word selection and input processing
+-----------------------------------------
+
+`-b FILE'
+`--break-file=FILE'
+ This option provides an alternative (to `-W') method of describing
+ which characters make up words. It introduces the name of a file
+ which contains a list of characters which can_not_ be part of one
+ word; this file is called the "Break file". Any character which
+ is not part of the Break file is a word constituent. If both
+ options `-b' and `-W' are specified, then `-W' has precedence and
+ `-b' is ignored.
+
+ When GNU extensions are enabled, the only way to avoid newline as a
+ break character is to write all the break characters in the file
+ with no newline at all, not even at the end of the file. When GNU
+ extensions are disabled, spaces, tabs and newlines are always
+ considered as break characters even if not included in the Break
+ file.
+
+`-i FILE'
+`--ignore-file=FILE'
+ The file associated with this option contains a list of words
+ which will never be taken as keywords in concordance output. It
+ is called the "Ignore file". The file contains exactly one word
+ in each line; the end of line separation of words is not subject
+ to the value of the `-S' option.
+
+`-o FILE'
+`--only-file=FILE'
+ The file associated with this option contains a list of words
+ which will be retained in concordance output; any word not
+ mentioned in this file is ignored. The file is called the "Only
+ file". The file contains exactly one word in each line; the end
+ of line separation of words is not subject to the value of the
+ `-S' option.
+
+ There is no default for the Only file. When both an Only file and
+ an Ignore file are specified, a word is considered a keyword only
+ if it is listed in the Only file and not in the Ignore file.
+
+`-r'
+`--references'
+ On each input line, the leading sequence of non-white space
+ characters will be taken to be a reference that has the purpose of
+ identifying this input line in the resulting permuted index. For
+ more information about reference production, see *Note Output
+ formatting in ptx::. Using this option changes the default value
+ for option `-S'.
+
+ Using this option, the program does not try very hard to remove
+ references from contexts in output, but it succeeds in doing so
+ _when_ the context ends exactly at the newline. If option `-r' is
+ used with `-S' default value, or when GNU extensions are disabled,
+ this condition is always met and references are completely
+ excluded from the output contexts.
+
+`-S REGEXP'
+`--sentence-regexp=REGEXP'
+ This option selects which regular expression will describe the end
+ of a line or the end of a sentence. In fact, this regular
+ expression is not the only distinction between end of lines or end
+ of sentences, and input line boundaries have no special
+ significance outside this option. By default, when GNU extensions
+ are enabled and if `-r' option is not used, end of sentences are
+ used. In this case, this REGEX is imported from GNU Emacs:
+
+ [.?!][]\"')}]*\\($\\|\t\\| \\)[ \t\n]*
+
+ Whenever GNU extensions are disabled or if `-r' option is used, end
+ of lines are used; in this case, the default REGEXP is just:
+
+ \n
+
+ Using an empty REGEXP is equivalent to completely disabling end of
+ line or end of sentence recognition. In this case, the whole file
+ is considered to be a single big line or sentence. The user might
+ want to disallow all truncation flag generation as well, through
+ option `-F ""'. *Note Syntax of Regular Expressions:
+ (emacs)Regexps.
+
+ When the keywords happen to be near the beginning of the input
+ line or sentence, this often creates an unused area at the
+ beginning of the output context line; when the keywords happen to
+ be near the end of the input line or sentence, this often creates
+ an unused area at the end of the output context line. The program
+ tries to fill those unused areas by wrapping around context in
+ them; the tail of the input line or sentence is used to fill the
+ unused area on the left of the output line; the head of the input
+ line or sentence is used to fill the unused area on the right of
+ the output line.
+
+ As a matter of convenience to the user, many usual backslashed
+ escape sequences from the C language are recognized and converted
+ to the corresponding characters by `ptx' itself.
+
+`-W REGEXP'
+`--word-regexp=REGEXP'
+ This option selects which regular expression will describe each
+ keyword. By default, if GNU extensions are enabled, a word is a
+ sequence of letters; the REGEXP used is `\w+'. When GNU
+ extensions are disabled, a word is by default anything which ends
+ with a space, a tab or a newline; the REGEXP used is `[^ \t\n]+'.
+
+ An empty REGEXP is equivalent to not using this option. *Note
+ Syntax of Regular Expressions: (emacs)Regexps.
+
+ As a matter of convenience to the user, many usual backslashed
+ escape sequences, as found in the C language, are recognized and
+ converted to the corresponding characters by `ptx' itself.
+
+
+
+File: coreutils.info, Node: Output formatting in ptx, Next: Compatibility in ptx, Prev: Input processing in ptx, Up: ptx invocation
+
+7.7.4 Output formatting
+-----------------------
+
+Output format is mainly controlled by the `-O' and `-T' options
+described in the table below. When neither `-O' nor `-T' are selected,
+and if GNU extensions are enabled, the program chooses an output format
+suitable for a dumb terminal. Each keyword occurrence is output to the
+center of one line, surrounded by its left and right contexts. Each
+field is properly justified, so the concordance output can be readily
+observed. As a special feature, if automatic references are selected
+by option `-A' and are output before the left context, that is, if
+option `-R' is _not_ selected, then a colon is added after the
+reference; this nicely interfaces with GNU Emacs `next-error'
+processing. In this default output format, each white space character,
+like newline and tab, is merely changed to exactly one space, with no
+special attempt to compress consecutive spaces. This might change in
+the future. Except for those white space characters, every other
+character of the underlying set of 256 characters is transmitted
+verbatim.
+
+ Output format is further controlled by the following options.
+
+`-g NUMBER'
+`--gap-size=NUMBER'
+ Select the size of the minimum white space gap between the fields
+ on the output line.
+
+`-w NUMBER'
+`--width=NUMBER'
+ Select the maximum output width of each final line. If references
+ are used, they are included or excluded from the maximum output
+ width depending on the value of option `-R'. If this option is not
+ selected, that is, when references are output before the left
+ context, the maximum output width takes into account the maximum
+ length of all references. If this option is selected, that is,
+ when references are output after the right context, the maximum
+ output width does not take into account the space taken by
+ references, nor the gap that precedes them.
+
+`-A'
+`--auto-reference'
+ Select automatic references. Each input line will have an
+ automatic reference made up of the file name and the line ordinal,
+ with a single colon between them. However, the file name will be
+ empty when standard input is being read. If both `-A' and `-r'
+ are selected, then the input reference is still read and skipped,
+ but the automatic reference is used at output time, overriding the
+ input reference.
+
+`-R'
+`--right-side-refs'
+ In the default output format, when option `-R' is not used, any
+ references produced by the effect of options `-r' or `-A' are
+ placed to the far right of output lines, after the right context.
+ With default output format, when the `-R' option is specified,
+ references are rather placed at the beginning of each output line,
+ before the left context. For any other output format, option `-R'
+ is ignored, with one exception: with `-R' the width of references
+ is _not_ taken into account in total output width given by `-w'.
+
+ This option is automatically selected whenever GNU extensions are
+ disabled.
+
+`-F STRING'
+`--flac-truncation=STRING'
+ This option will request that any truncation in the output be
+ reported using the string STRING. Most output fields
+ theoretically extend towards the beginning or the end of the
+ current line, or current sentence, as selected with option `-S'.
+ But there is a maximum allowed output line width, changeable
+ through option `-w', which is further divided into space for
+ various output fields. When a field has to be truncated because
+ it cannot extend beyond the beginning or the end of the current
+ line to fit in, then a truncation occurs. By default, the string
+ used is a single slash, as in `-F /'.
+
+ STRING may have more than one character, as in `-F ...'. Also, in
+ the particular case when STRING is empty (`-F ""'), truncation
+ flagging is disabled, and no truncation marks are appended in this
+ case.
+
+ As a matter of convenience to the user, many usual backslashed
+ escape sequences, as found in the C language, are recognized and
+ converted to the corresponding characters by `ptx' itself.
+
+`-M STRING'
+`--macro-name=STRING'
+ Select another STRING to be used instead of `xx', while generating
+ output suitable for `nroff', `troff' or TeX.
+
+`-O'
+`--format=roff'
+ Choose an output format suitable for `nroff' or `troff'
+ processing. Each output line will look like:
+
+ .xx "TAIL" "BEFORE" "KEYWORD_AND_AFTER" "HEAD" "REF"
+
+ so it will be possible to write a `.xx' roff macro to take care of
+ the output typesetting. This is the default output format when GNU
+ extensions are disabled. Option `-M' can be used to change `xx'
+ to another macro name.
+
+ In this output format, each non-graphical character, like newline
+ and tab, is merely changed to exactly one space, with no special
+ attempt to compress consecutive spaces. Each quote character: `"'
+ is doubled so it will be correctly processed by `nroff' or `troff'.
+
+`-T'
+`--format=tex'
+ Choose an output format suitable for TeX processing. Each output
+ line will look like:
+
+ \xx {TAIL}{BEFORE}{KEYWORD}{AFTER}{HEAD}{REF}
+
+ so it will be possible to write a `\xx' definition to take care of
+ the output typesetting. Note that when references are not being
+ produced, that is, neither option `-A' nor option `-r' is
+ selected, the last parameter of each `\xx' call is inhibited.
+ Option `-M' can be used to change `xx' to another macro name.
+
+ In this output format, some special characters, like `$', `%',
+ `&', `#' and `_' are automatically protected with a backslash.
+ Curly brackets `{', `}' are protected with a backslash and a pair
+ of dollar signs (to force mathematical mode). The backslash
+ itself produces the sequence `\backslash{}'. Circumflex and tilde
+ diacritical marks produce the sequence `^\{ }' and `~\{ }'
+ respectively. Other diacriticized characters of the underlying
+ character set produce an appropriate TeX sequence as far as
+ possible. The other non-graphical characters, like newline and
+ tab, and all other characters which are not part of ASCII, are
+ merely changed to exactly one space, with no special attempt to
+ compress consecutive spaces. Let me know how to improve this
+ special character processing for TeX.
+
+
+
+File: coreutils.info, Node: Compatibility in ptx, Prev: Output formatting in ptx, Up: ptx invocation
+
+7.7.5 The GNU extensions to `ptx'
+---------------------------------
+
+This version of `ptx' contains a few features which do not exist in
+System V `ptx'. These extra features are suppressed by using the `-G'
+command line option, unless overridden by other command line options.
+Some GNU extensions cannot be recovered by overriding, so the simple
+rule is to avoid `-G' if you care about GNU extensions. Here are the
+differences between this program and System V `ptx'.
+
+ * This program can read many input files at once, it always writes
+ the resulting concordance on standard output. On the other hand,
+ System V `ptx' reads only one file and sends the result to
+ standard output or, if a second FILE parameter is given on the
+ command, to that FILE.
+
+ Having output parameters not introduced by options is a dangerous
+ practice which GNU avoids as far as possible. So, for using `ptx'
+ portably between GNU and System V, you should always use it with a
+ single input file, and always expect the result on standard
+ output. You might also want to automatically configure in a `-G'
+ option to `ptx' calls in products using `ptx', if the configurator
+ finds that the installed `ptx' accepts `-G'.
+
+ * The only options available in System V `ptx' are options `-b',
+ `-f', `-g', `-i', `-o', `-r', `-t' and `-w'. All other options
+ are GNU extensions and are not repeated in this enumeration.
+ Moreover, some options have a slightly different meaning when GNU
+ extensions are enabled, as explained below.
+
+ * By default, concordance output is not formatted for `troff' or
+ `nroff'. It is rather formatted for a dumb terminal. `troff' or
+ `nroff' output may still be selected through option `-O'.
+
+ * Unless `-R' option is used, the maximum reference width is
+ subtracted from the total output line width. With GNU extensions
+ disabled, width of references is not taken into account in the
+ output line width computations.
+
+ * All 256 bytes, even null bytes, are always read and processed from
+ input file with no adverse effect, even if GNU extensions are
+ disabled. However, System V `ptx' does not accept 8-bit
+ characters, a few control characters are rejected, and the tilde
+ `~' is also rejected.
+
+ * Input line length is only limited by available memory, even if GNU
+ extensions are disabled. However, System V `ptx' processes only
+ the first 200 characters in each line.
+
+ * The break (non-word) characters default to be every character
+ except all letters of the underlying character set, diacriticized
+ or not. When GNU extensions are disabled, the break characters
+ default to space, tab and newline only.
+
+ * The program makes better use of output line width. If GNU
+ extensions are disabled, the program rather tries to imitate
+ System V `ptx', but still, there are some slight disposition
+ glitches this program does not completely reproduce.
+
+ * The user can specify both an Ignore file and an Only file. This
+ is not allowed with System V `ptx'.
+
+
+
+File: coreutils.info, Node: Operating on fields within a line, Next: Operating on characters, Prev: Operating on sorted files, Up: Top
+
+8 Operating on fields within a line
+***********************************
+
+* Menu:
+
+* cut invocation:: Print selected parts of lines.
+* paste invocation:: Merge lines of files.
+* join invocation:: Join lines on a common field.
+
+
+File: coreutils.info, Node: cut invocation, Next: paste invocation, Up: Operating on fields within a line
+
+8.1 `cut': Print selected parts of lines
+========================================
+
+`cut' writes to standard output selected parts of each line of each
+input file, or standard input if no files are given or for a file name
+of `-'. Synopsis:
+
+ cut [OPTION]... [FILE]...
+
+ In the table which follows, the BYTE-LIST, CHARACTER-LIST, and
+FIELD-LIST are one or more numbers or ranges (two numbers separated by
+a dash) separated by commas. Bytes, characters, and fields are
+numbered starting at 1. Incomplete ranges may be given: `-M' means
+`1-M'; `N-' means `N' through end of line or last field. The list
+elements can be repeated, can overlap, and can be specified in any
+order; but the selected input is written in the same order that it is
+read, and is written exactly once.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-b BYTE-LIST'
+`--bytes=BYTE-LIST'
+ Select for printing only the bytes in positions listed in
+ BYTE-LIST. Tabs and backspaces are treated like any other
+ character; they take up 1 byte. If an output delimiter is
+ specified, (see the description of `--output-delimiter'), then
+ output that string between ranges of selected bytes.
+
+`-c CHARACTER-LIST'
+`--characters=CHARACTER-LIST'
+ Select for printing only the characters in positions listed in
+ CHARACTER-LIST. The same as `-b' for now, but
+ internationalization will change that. Tabs and backspaces are
+ treated like any other character; they take up 1 character. If an
+ output delimiter is specified, (see the description of
+ `--output-delimiter'), then output that string between ranges of
+ selected bytes.
+
+`-f FIELD-LIST'
+`--fields=FIELD-LIST'
+ Select for printing only the fields listed in FIELD-LIST. Fields
+ are separated by a TAB character by default. Also print any line
+ that contains no delimiter character, unless the
+ `--only-delimited' (`-s') option is specified
+
+`-d INPUT_DELIM_BYTE'
+`--delimiter=INPUT_DELIM_BYTE'
+ With `-f', use the first byte of INPUT_DELIM_BYTE as the input
+ fields separator (default is TAB).
+
+`-n'
+ Do not split multi-byte characters (no-op for now).
+
+`-s'
+`--only-delimited'
+ For `-f', do not print lines that do not contain the field
+ separator character. Normally, any line without a field separator
+ is printed verbatim.
+
+`--output-delimiter=OUTPUT_DELIM_STRING'
+ With `-f', output fields are separated by OUTPUT_DELIM_STRING.
+ The default with `-f' is to use the input delimiter. When using
+ `-b' or `-c' to select ranges of byte or character offsets (as
+ opposed to ranges of fields), output OUTPUT_DELIM_STRING between
+ non-overlapping ranges of selected bytes.
+
+`--complement'
+ This option is a GNU extension. Select for printing the
+ complement of the bytes, characters or fields selected with the
+ `-b', `-c' or `-f' options. In other words, do _not_ print the
+ bytes, characters or fields specified via those options. This
+ option is useful when you have many fields and want to print all
+ but a few of them.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: paste invocation, Next: join invocation, Prev: cut invocation, Up: Operating on fields within a line
+
+8.2 `paste': Merge lines of files
+=================================
+
+`paste' writes to standard output lines consisting of sequentially
+corresponding lines of each given file, separated by a TAB character.
+Standard input is used for a file name of `-' or if no input files are
+given.
+
+ For example:
+
+ $ cat num2
+ 1
+ 2
+ $ cat let3
+ a
+ b
+ c
+ $ paste num2 let3
+ 1 a
+ 2 b
+ c
+
+ Synopsis:
+
+ paste [OPTION]... [FILE]...
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-s'
+`--serial'
+ Paste the lines of one file at a time rather than one line from
+ each file. Using the above example data:
+
+ $ paste -s num2 let3
+ 1 2
+ a b c
+
+`-d DELIM-LIST'
+`--delimiters=DELIM-LIST'
+ Consecutively use the characters in DELIM-LIST instead of TAB to
+ separate merged lines. When DELIM-LIST is exhausted, start again
+ at its beginning. Using the above example data:
+
+ $ paste -d '%_' num2 let3 num2
+ 1%a_1
+ 2%b_2
+ %c_
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: join invocation, Prev: paste invocation, Up: Operating on fields within a line
+
+8.3 `join': Join lines on a common field
+========================================
+
+`join' writes to standard output a line for each pair of input lines
+that have identical join fields. Synopsis:
+
+ join [OPTION]... FILE1 FILE2
+
+ Either FILE1 or FILE2 (but not both) can be `-', meaning standard
+input. FILE1 and FILE2 should be sorted on the join fields.
+
+ Normally, the sort order is that of the collating sequence specified
+by the `LC_COLLATE' locale. Unless the `-t' option is given, the sort
+comparison ignores blanks at the start of the join field, as in `sort
+-b'. If the `--ignore-case' option is given, the sort comparison
+ignores the case of characters in the join field, as in `sort -f'.
+
+ The `sort' and `join' commands should use consistent locales and
+options if the output of `sort' is fed to `join'. You can use a
+command like `sort -k 1b,1' to sort a file on its default join field,
+but if you select a non-default locale, join field, separator, or
+comparison options, then you should do so consistently between `join'
+and `sort'.
+
+ As a GNU extension, if the input has no unpairable lines the sort
+order can be any order that considers two fields to be equal if and
+only if the sort comparison described above considers them to be equal.
+For example:
+
+ $ cat file1
+ a a1
+ c c1
+ b b1
+ $ cat file2
+ a a2
+ c c2
+ b b2
+ $ join file1 file2
+ a a1 a2
+ c c1 c2
+ b b1 b2
+
+ The defaults are:
+ * the join field is the first field in each line;
+
+ * fields in the input are separated by one or more blanks, with
+ leading blanks on the line ignored;
+
+ * fields in the output are separated by a space;
+
+ * each output line consists of the join field, the remaining fields
+ from FILE1, then the remaining fields from FILE2.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-a FILE-NUMBER'
+ Print a line for each unpairable line in file FILE-NUMBER (either
+ `1' or `2'), in addition to the normal output.
+
+`-e STRING'
+ Replace those output fields that are missing in the input with
+ STRING.
+
+`-i'
+`--ignore-case'
+ Ignore differences in case when comparing keys. With this option,
+ the lines of the input files must be ordered in the same way. Use
+ `sort -f' to produce this ordering.
+
+`-1 FIELD'
+ Join on field FIELD (a positive integer) of file 1.
+
+`-2 FIELD'
+ Join on field FIELD (a positive integer) of file 2.
+
+`-j FIELD'
+ Equivalent to `-1 FIELD -2 FIELD'.
+
+`-o FIELD-LIST'
+ Construct each output line according to the format in FIELD-LIST.
+ Each element in FIELD-LIST is either the single character `0' or
+ has the form M.N where the file number, M, is `1' or `2' and N is
+ a positive field number.
+
+ A field specification of `0' denotes the join field. In most
+ cases, the functionality of the `0' field spec may be reproduced
+ using the explicit M.N that corresponds to the join field.
+ However, when printing unpairable lines (using either of the `-a'
+ or `-v' options), there is no way to specify the join field using
+ M.N in FIELD-LIST if there are unpairable lines in both files. To
+ give `join' that functionality, POSIX invented the `0' field
+ specification notation.
+
+ The elements in FIELD-LIST are separated by commas or blanks.
+ Blank separators typically need to be quoted for the shell. For
+ example, the commands `join -o 1.2,2.2' and `join -o '1.2 2.2''
+ are equivalent.
+
+ All output lines--including those printed because of any -a or -v
+ option--are subject to the specified FIELD-LIST.
+
+`-t CHAR'
+ Use character CHAR as the input and output field separator. Treat
+ as significant each occurrence of CHAR in the input file. Use
+ `sort -t CHAR', without the `-b' option of `sort', to produce this
+ ordering.
+
+`-v FILE-NUMBER'
+ Print a line for each unpairable line in file FILE-NUMBER (either
+ `1' or `2'), instead of the normal output.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: Operating on characters, Next: Directory listing, Prev: Operating on fields within a line, Up: Top
+
+9 Operating on characters
+*************************
+
+This commands operate on individual characters.
+
+* Menu:
+
+* tr invocation:: Translate, squeeze, and/or delete characters.
+* expand invocation:: Convert tabs to spaces.
+* unexpand invocation:: Convert spaces to tabs.
+
+
+File: coreutils.info, Node: tr invocation, Next: expand invocation, Up: Operating on characters
+
+9.1 `tr': Translate, squeeze, and/or delete characters
+======================================================
+
+Synopsis:
+
+ tr [OPTION]... SET1 [SET2]
+
+ `tr' copies standard input to standard output, performing one of the
+following operations:
+
+ * translate, and optionally squeeze repeated characters in the
+ result,
+
+ * squeeze repeated characters,
+
+ * delete characters,
+
+ * delete characters, then squeeze repeated characters from the
+ result.
+
+ The SET1 and (if given) SET2 arguments define ordered sets of
+characters, referred to below as SET1 and SET2. These sets are the
+characters of the input that `tr' operates on. The `--complement'
+(`-c', `-C') option replaces SET1 with its complement (all of the
+characters that are not in SET1).
+
+ Currently `tr' fully supports only single-byte characters.
+Eventually it will support multibyte characters; when it does, the `-C'
+option will cause it to complement the set of characters, whereas `-c'
+will cause it to complement the set of values. This distinction will
+matter only when some values are not characters, and this is possible
+only in locales using multibyte encodings when the input contains
+encoding errors.
+
+ The program accepts the `--help' and `--version' options. *Note
+Common options::. Options must precede operands.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+* Menu:
+
+* Character sets:: Specifying sets of characters.
+* Translating:: Changing one set of characters to another.
+* Squeezing:: Squeezing repeats and deleting.
+
+
+File: coreutils.info, Node: Character sets, Next: Translating, Up: tr invocation
+
+9.1.1 Specifying sets of characters
+-----------------------------------
+
+The format of the SET1 and SET2 arguments resembles the format of
+regular expressions; however, they are not regular expressions, only
+lists of characters. Most characters simply represent themselves in
+these strings, but the strings can contain the shorthands listed below,
+for convenience. Some of them can be used only in SET1 or SET2, as
+noted below.
+
+Backslash escapes
+ The following backslash escape sequences are recognized:
+
+ `\a'
+ Control-G.
+
+ `\b'
+ Control-H.
+
+ `\f'
+ Control-L.
+
+ `\n'
+ Control-J.
+
+ `\r'
+ Control-M.
+
+ `\t'
+ Control-I.
+
+ `\v'
+ Control-K.
+
+ `\OOO'
+ The character with the value given by OOO, which is 1 to 3
+ octal digits,
+
+ `\\'
+ A backslash.
+
+ While a backslash followed by a character not listed above is
+ interpreted as that character, the backslash also effectively
+ removes any special significance, so it is useful to escape `[',
+ `]', `*', and `-'.
+
+Ranges
+ The notation `M-N' expands to all of the characters from M through
+ N, in ascending order. M should collate before N; if it doesn't,
+ an error results. As an example, `0-9' is the same as
+ `0123456789'.
+
+ GNU `tr' does not support the System V syntax that uses square
+ brackets to enclose ranges. Translations specified in that format
+ sometimes work as expected, since the brackets are often
+ transliterated to themselves. However, they should be avoided
+ because they sometimes behave unexpectedly. For example, `tr -d
+ '[0-9]'' deletes brackets as well as digits.
+
+ Many historically common and even accepted uses of ranges are not
+ portable. For example, on EBCDIC hosts using the `A-Z' range will
+ not do what most would expect because `A' through `Z' are not
+ contiguous as they are in ASCII. If you can rely on a POSIX
+ compliant version of `tr', then the best way to work around this
+ is to use character classes (see below). Otherwise, it is most
+ portable (and most ugly) to enumerate the members of the ranges.
+
+Repeated characters
+ The notation `[C*N]' in SET2 expands to N copies of character C.
+ Thus, `[y*6]' is the same as `yyyyyy'. The notation `[C*]' in
+ STRING2 expands to as many copies of C as are needed to make SET2
+ as long as SET1. If N begins with `0', it is interpreted in
+ octal, otherwise in decimal.
+
+Character classes
+ The notation `[:CLASS:]' expands to all of the characters in the
+ (predefined) class CLASS. The characters expand in no particular
+ order, except for the `upper' and `lower' classes, which expand in
+ ascending order. When the `--delete' (`-d') and
+ `--squeeze-repeats' (`-s') options are both given, any character
+ class can be used in SET2. Otherwise, only the character classes
+ `lower' and `upper' are accepted in SET2, and then only if the
+ corresponding character class (`upper' and `lower', respectively)
+ is specified in the same relative position in SET1. Doing this
+ specifies case conversion. The class names are given below; an
+ error results when an invalid class name is given.
+
+ `alnum'
+ Letters and digits.
+
+ `alpha'
+ Letters.
+
+ `blank'
+ Horizontal whitespace.
+
+ `cntrl'
+ Control characters.
+
+ `digit'
+ Digits.
+
+ `graph'
+ Printable characters, not including space.
+
+ `lower'
+ Lowercase letters.
+
+ `print'
+ Printable characters, including space.
+
+ `punct'
+ Punctuation characters.
+
+ `space'
+ Horizontal or vertical whitespace.
+
+ `upper'
+ Uppercase letters.
+
+ `xdigit'
+ Hexadecimal digits.
+
+Equivalence classes
+ The syntax `[=C=]' expands to all of the characters that are
+ equivalent to C, in no particular order. Equivalence classes are
+ a relatively recent invention intended to support non-English
+ alphabets. But there seems to be no standard way to define them
+ or determine their contents. Therefore, they are not fully
+ implemented in GNU `tr'; each character's equivalence class
+ consists only of that character, which is of no particular use.
+
+
+
+File: coreutils.info, Node: Translating, Next: Squeezing, Prev: Character sets, Up: tr invocation
+
+9.1.2 Translating
+-----------------
+
+`tr' performs translation when SET1 and SET2 are both given and the
+`--delete' (`-d') option is not given. `tr' translates each character
+of its input that is in SET1 to the corresponding character in SET2.
+Characters not in SET1 are passed through unchanged. When a character
+appears more than once in SET1 and the corresponding characters in SET2
+are not all the same, only the final one is used. For example, these
+two commands are equivalent:
+
+ tr aaa xyz
+ tr a z
+
+ A common use of `tr' is to convert lowercase characters to
+uppercase. This can be done in many ways. Here are three of them:
+
+ tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+ tr a-z A-Z
+ tr '[:lower:]' '[:upper:]'
+
+But note that using ranges like `a-z' above is not portable.
+
+ When `tr' is performing translation, SET1 and SET2 typically have
+the same length. If SET1 is shorter than SET2, the extra characters at
+the end of SET2 are ignored.
+
+ On the other hand, making SET1 longer than SET2 is not portable;
+POSIX says that the result is undefined. In this situation, BSD `tr'
+pads SET2 to the length of SET1 by repeating the last character of SET2
+as many times as necessary. System V `tr' truncates SET1 to the length
+of SET2.
+
+ By default, GNU `tr' handles this case like BSD `tr'. When the
+`--truncate-set1' (`-t') option is given, GNU `tr' handles this case
+like the System V `tr' instead. This option is ignored for operations
+other than translation.
+
+ Acting like System V `tr' in this case breaks the relatively common
+BSD idiom:
+
+ tr -cs A-Za-z0-9 '\012'
+
+because it converts only zero bytes (the first element in the
+complement of SET1), rather than all non-alphanumerics, to newlines.
+
+By the way, the above idiom is not portable because it uses ranges, and
+it assumes that the octal code for newline is 012. Assuming a POSIX
+compliant `tr', here is a better way to write it:
+
+ tr -cs '[:alnum:]' '[\n*]'
+
+
+File: coreutils.info, Node: Squeezing, Prev: Translating, Up: tr invocation
+
+9.1.3 Squeezing repeats and deleting
+------------------------------------
+
+When given just the `--delete' (`-d') option, `tr' removes any input
+characters that are in SET1.
+
+ When given just the `--squeeze-repeats' (`-s') option, `tr' replaces
+each input sequence of a repeated character that is in SET1 with a
+single occurrence of that character.
+
+ When given both `--delete' and `--squeeze-repeats', `tr' first
+performs any deletions using SET1, then squeezes repeats from any
+remaining characters using SET2.
+
+ The `--squeeze-repeats' option may also be used when translating, in
+which case `tr' first performs translation, then squeezes repeats from
+any remaining characters using SET2.
+
+ Here are some examples to illustrate various combinations of options:
+
+ * Remove all zero bytes:
+
+ tr -d '\0'
+
+ * Put all words on lines by themselves. This converts all
+ non-alphanumeric characters to newlines, then squeezes each string
+ of repeated newlines into a single newline:
+
+ tr -cs '[:alnum:]' '[\n*]'
+
+ * Convert each sequence of repeated newlines to a single newline:
+
+ tr -s '\n'
+
+ * Find doubled occurrences of words in a document. For example,
+ people often write "the the" with the repeated words separated by
+ a newline. The Bourne shell script below works first by
+ converting each sequence of punctuation and blank characters to a
+ single newline. That puts each "word" on a line by itself. Next
+ it maps all uppercase characters to lower case, and finally it
+ runs `uniq' with the `-d' option to print out only the words that
+ were repeated.
+
+ #!/bin/sh
+ cat -- "$@" \
+ | tr -s '[:punct:][:blank:]' '[\n*]' \
+ | tr '[:upper:]' '[:lower:]' \
+ | uniq -d
+
+ * Deleting a small set of characters is usually straightforward.
+ For example, to remove all `a's, `x's, and `M's you would do this:
+
+ tr -d axM
+
+ However, when `-' is one of those characters, it can be tricky
+ because `-' has special meanings. Performing the same task as
+ above but also removing all `-' characters, we might try `tr -d
+ -axM', but that would fail because `tr' would try to interpret
+ `-a' as a command-line option. Alternatively, we could try
+ putting the hyphen inside the string, `tr -d a-xM', but that
+ wouldn't work either because it would make `tr' interpret `a-x' as
+ the range of characters `a'...`x' rather than the three. One way
+ to solve the problem is to put the hyphen at the end of the list
+ of characters:
+
+ tr -d axM-
+
+ Or you can use `--' to terminate option processing:
+
+ tr -d -- -axM
+
+ More generally, use the character class notation `[=c=]' with `-'
+ (or any other character) in place of the `c':
+
+ tr -d '[=-=]axM'
+
+ Note how single quotes are used in the above example to protect the
+ square brackets from interpretation by a shell.
+
+
+
+File: coreutils.info, Node: expand invocation, Next: unexpand invocation, Prev: tr invocation, Up: Operating on characters
+
+9.2 `expand': Convert tabs to spaces
+====================================
+
+`expand' writes the contents of each given FILE, or standard input if
+none are given or for a FILE of `-', to standard output, with tab
+characters converted to the appropriate number of spaces. Synopsis:
+
+ expand [OPTION]... [FILE]...
+
+ By default, `expand' converts all tabs to spaces. It preserves
+backspace characters in the output; they decrement the column count for
+tab calculations. The default action is equivalent to `-t 8' (set tabs
+every 8 columns).
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-t TAB1[,TAB2]...'
+`--tabs=TAB1[,TAB2]...'
+ If only one tab stop is given, set the tabs TAB1 spaces apart
+ (default is 8). Otherwise, set the tabs at columns TAB1, TAB2,
+ ... (numbered from 0), and replace any tabs beyond the last tab
+ stop given with single spaces. Tab stops can be separated by
+ blanks as well as by commas.
+
+ For compatibility, GNU `expand' also accepts the obsolete option
+ syntax, `-T1[,T2]...'. New scripts should use `-t T1[,T2]...'
+ instead.
+
+`-i'
+`--initial'
+ Only convert initial tabs (those that precede all non-space or
+ non-tab characters) on each line to spaces.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: unexpand invocation, Prev: expand invocation, Up: Operating on characters
+
+9.3 `unexpand': Convert spaces to tabs
+======================================
+
+`unexpand' writes the contents of each given FILE, or standard input if
+none are given or for a FILE of `-', to standard output, converting
+blanks at the beginning of each line into as many tab characters as
+needed. In the default POSIX locale, a "blank" is a space or a tab;
+other locales may specify additional blank characters. Synopsis:
+
+ unexpand [OPTION]... [FILE]...
+
+ By default, `unexpand' converts only initial blanks (those that
+precede all non-blank characters) on each line. It preserves backspace
+characters in the output; they decrement the column count for tab
+calculations. By default, tabs are set at every 8th column.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-t TAB1[,TAB2]...'
+`--tabs=TAB1[,TAB2]...'
+ If only one tab stop is given, set the tabs TAB1 columns apart
+ instead of the default 8. Otherwise, set the tabs at columns
+ TAB1, TAB2, ... (numbered from 0), and leave blanks beyond the tab
+ stops given unchanged. Tab stops can be separated by blanks as
+ well as by commas. This option implies the `-a' option.
+
+ For compatibility, GNU `unexpand' supports the obsolete option
+ syntax, `-TAB1[,TAB2]...', where tab stops must be separated by
+ commas. (Unlike `-t', this obsolete option does not imply `-a'.)
+ New scripts should use `--first-only -t TAB1[,TAB2]...' instead.
+
+`-a'
+`--all'
+ Also convert all sequences of two or more blanks just before a tab
+ stop, even if they occur after non-blank characters in a line.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: Directory listing, Next: Basic operations, Prev: Operating on characters, Up: Top
+
+10 Directory listing
+********************
+
+This chapter describes the `ls' command and its variants `dir' and
+`vdir', which list information about files.
+
+* Menu:
+
+* ls invocation:: List directory contents.
+* dir invocation:: Briefly ls.
+* vdir invocation:: Verbosely ls.
+* dircolors invocation:: Color setup for ls, etc.
+
+
+File: coreutils.info, Node: ls invocation, Next: dir invocation, Up: Directory listing
+
+10.1 `ls': List directory contents
+==================================
+
+The `ls' program lists information about files (of any type, including
+directories). Options and file arguments can be intermixed
+arbitrarily, as usual.
+
+ For non-option command-line arguments that are directories, by
+default `ls' lists the contents of directories, not recursively, and
+omitting files with names beginning with `.'. For other non-option
+arguments, by default `ls' lists just the file name. If no non-option
+argument is specified, `ls' operates on the current directory, acting
+as if it had been invoked with a single argument of `.'.
+
+ By default, the output is sorted alphabetically, according to the
+locale settings in effect.(1) If standard output is a terminal, the
+output is in columns (sorted vertically) and control characters are
+output as question marks; otherwise, the output is listed one per line
+and control characters are output as-is.
+
+ Because `ls' is such a fundamental program, it has accumulated many
+options over the years. They are described in the subsections below;
+within each section, options are listed alphabetically (ignoring case).
+The division of options into the subsections is not absolute, since some
+options affect more than one aspect of `ls''s operation.
+
+ Exit status:
+
+ 0 success
+ 1 minor problems (e.g., a subdirectory was not found)
+ 2 serious trouble (e.g., memory exhausted)
+
+ Also see *Note Common options::.
+
+* Menu:
+
+* Which files are listed::
+* What information is listed::
+* Sorting the output::
+* More details about version sort::
+* General output formatting::
+* Formatting file timestamps::
+* Formatting the file names::
+
+ ---------- Footnotes ----------
+
+ (1) If you use a non-POSIX locale (e.g., by setting `LC_ALL' to
+`en_US'), then `ls' may produce output that is sorted differently than
+you're accustomed to. In that case, set the `LC_ALL' environment
+variable to `C'.
+
+
+File: coreutils.info, Node: Which files are listed, Next: What information is listed, Up: ls invocation
+
+10.1.1 Which files are listed
+-----------------------------
+
+These options determine which files `ls' lists information for. By
+default, `ls' lists files and the contents of any directories on the
+command line, except that in directories it ignores files whose names
+start with `.'.
+
+`-a'
+`--all'
+ In directories, do not ignore file names that start with `.'.
+
+`-A'
+`--almost-all'
+ In directories, do not ignore all file names that start with `.';
+ ignore only `.' and `..'. The `--all' (`-a') option overrides
+ this option.
+
+`-B'
+`--ignore-backups'
+ In directories, ignore files that end with `~'. This option is
+ equivalent to `--ignore='*~' --ignore='.*~''.
+
+`-d'
+`--directory'
+ List just the names of directories, as with other types of files,
+ rather than listing their contents. Do not follow symbolic links
+ listed on the command line unless the `--dereference-command-line'
+ (`-H'), `--dereference' (`-L'), or
+ `--dereference-command-line-symlink-to-dir' options are specified.
+
+`-H'
+`--dereference-command-line'
+ If a command line argument specifies a symbolic link, show
+ information for the file the link references rather than for the
+ link itself.
+
+`--dereference-command-line-symlink-to-dir'
+ Do not dereference symbolic links, with one exception: if a
+ command line argument specifies a symbolic link that refers to a
+ directory, show information for that directory rather than for the
+ link itself. This is the default behavior when no other
+ dereferencing-related option has been specified (`--classify'
+ (`-F'), `--directory' (`-d'), (`-l'), `--dereference' (`-L'), or
+ `--dereference-command-line' (`-H')).
+
+`--group-directories-first'
+ Group all the directories before the files and then sort the
+ directories and the files separately using the selected sort key
+ (see -sort option). That is, this option specifies a primary sort
+ key, and the -sort option specifies a secondary key.
+
+`--hide=PATTERN'
+ In directories, ignore files whose names match the shell pattern
+ PATTERN, unless the `--all' (`-a') or `--almost-all' (`-A') is
+ also given. This option acts like `--ignore=PATTERN' except that
+ it has no effect if `--all' (`-a') or `--almost-all' (`-A') is
+ also given.
+
+ This option can be useful in shell aliases. For example, if `lx'
+ is an alias for `ls --hide='*~'' and `ly' is an alias for `ls
+ --ignore='*~'', then the command `lx -A' lists the file `README~'
+ even though `ly -A' would not.
+
+`-I PATTERN'
+`--ignore=PATTERN'
+ In directories, ignore files whose names match the shell pattern
+ (not regular expression) PATTERN. As in the shell, an initial `.'
+ in a file name does not match a wildcard at the start of PATTERN.
+ Sometimes it is useful to give this option several times. For
+ example,
+
+ $ ls --ignore='.??*' --ignore='.[^.]' --ignore='#*'
+
+ The first option ignores names of length 3 or more that start with
+ `.', the second ignores all two-character names that start with `.'
+ except `..', and the third ignores names that start with `#'.
+
+`-L'
+`--dereference'
+ When showing file information for a symbolic link, show information
+ for the file the link references rather than the link itself.
+ However, even with this option, `ls' still prints the name of the
+ link itself, not the name of the file that the link points to.
+
+`-R'
+`--recursive'
+ List the contents of all directories recursively.
+
+
+
+File: coreutils.info, Node: What information is listed, Next: Sorting the output, Prev: Which files are listed, Up: ls invocation
+
+10.1.2 What information is listed
+---------------------------------
+
+These options affect the information that `ls' displays. By default,
+only file names are shown.
+
+`--author'
+ List each file's author when producing long format directory
+ listings. In GNU/Hurd, file authors can differ from their owners,
+ but in other operating systems the two are the same.
+
+`-D'
+`--dired'
+ With the long listing (`-l') format, print an additional line after
+ the main output:
+
+ //DIRED// BEG1 END1 BEG2 END2 ...
+
+ The BEGN and ENDN are unsigned integers that record the byte
+ position of the beginning and end of each file name in the output.
+ This makes it easy for Emacs to find the names, even when they
+ contain unusual characters such as space or newline, without fancy
+ searching.
+
+ If directories are being listed recursively (`-R'), output a
+ similar line with offsets for each subdirectory name:
+
+ //SUBDIRED// BEG1 END1 ...
+
+ Finally, output a line of the form:
+
+ //DIRED-OPTIONS// --quoting-style=WORD
+
+ where WORD is the quoting style (*note Formatting the file
+ names::).
+
+ Here is an actual example:
+
+ $ mkdir -p a/sub/deeper a/sub2
+ $ touch a/f1 a/f2
+ $ touch a/sub/deeper/file
+ $ ls -gloRF --dired a
+ a:
+ total 8
+ -rw-r--r-- 1 0 Jun 10 12:27 f1
+ -rw-r--r-- 1 0 Jun 10 12:27 f2
+ drwxr-xr-x 3 4096 Jun 10 12:27 sub/
+ drwxr-xr-x 2 4096 Jun 10 12:27 sub2/
+
+ a/sub:
+ total 4
+ drwxr-xr-x 2 4096 Jun 10 12:27 deeper/
+
+ a/sub/deeper:
+ total 0
+ -rw-r--r-- 1 0 Jun 10 12:27 file
+
+ a/sub2:
+ total 0
+ //DIRED// 48 50 84 86 120 123 158 162 217 223 282 286
+ //SUBDIRED// 2 3 167 172 228 240 290 296
+ //DIRED-OPTIONS// --quoting-style=literal
+
+ Note that the pairs of offsets on the `//DIRED//' line above
+ delimit these names: `f1', `f2', `sub', `sub2', `deeper', `file'.
+ The offsets on the `//SUBDIRED//' line delimit the following
+ directory names: `a', `a/sub', `a/sub/deeper', `a/sub2'.
+
+ Here is an example of how to extract the fifth entry name,
+ `deeper', corresponding to the pair of offsets, 222 and 228:
+
+ $ ls -gloRF --dired a > out
+ $ dd bs=1 skip=222 count=6 < out 2>/dev/null; echo
+ deeper
+
+ Note that although the listing above includes a trailing slash for
+ the `deeper' entry, the offsets select the name without the
+ trailing slash. However, if you invoke `ls' with `--dired' along
+ with an option like `--escape' (aka `-b') and operate on a file
+ whose name contains special characters, notice that the backslash
+ _is_ included:
+
+ $ touch 'a b'
+ $ ls -blog --dired 'a b'
+ -rw-r--r-- 1 0 Jun 10 12:28 a\ b
+ //DIRED// 30 34
+ //DIRED-OPTIONS// --quoting-style=escape
+
+ If you use a quoting style that adds quote marks (e.g.,
+ `--quoting-style=c'), then the offsets include the quote marks.
+ So beware that the user may select the quoting style via the
+ environment variable `QUOTING_STYLE'. Hence, applications using
+ `--dired' should either specify an explicit
+ `--quoting-style=literal' option (aka `-N' or `--literal') on the
+ command line, or else be prepared to parse the escaped names.
+
+`--full-time'
+ Produce long format directory listings, and list times in full.
+ It is equivalent to using `--format=long' with
+ `--time-style=full-iso' (*note Formatting file timestamps::).
+
+`-g'
+ Produce long format directory listings, but don't display owner
+ information.
+
+`-G'
+`--no-group'
+ Inhibit display of group information in a long format directory
+ listing. (This is the default in some non-GNU versions of `ls',
+ so we provide this option for compatibility.)
+
+`-h'
+`--human-readable'
+ Append a size letter to each size, such as `M' for mebibytes.
+ Powers of 1024 are used, not 1000; `M' stands for 1,048,576 bytes.
+ Use the `--si' option if you prefer powers of 1000.
+
+`-i'
+`--inode'
+ Print the inode number (also called the file serial number and
+ index number) of each file to the left of the file name. (This
+ number uniquely identifies each file within a particular file
+ system.)
+
+`-l'
+`--format=long'
+`--format=verbose'
+ In addition to the name of each file, print the file type, file
+ mode bits, number of hard links, owner name, group name, size, and
+ timestamp (*note Formatting file timestamps::), normally the
+ modification time. Print question marks for information that
+ cannot be determined.
+
+ Normally the size is printed as a byte count without punctuation,
+ but this can be overridden (*note Block size::). For example, `-h'
+ prints an abbreviated, human-readable count, and
+ `--block-size="'1"' prints a byte count with the thousands
+ separator of the current locale.
+
+ For each directory that is listed, preface the files with a line
+ `total BLOCKS', where BLOCKS is the total disk allocation for all
+ files in that directory. The block size currently defaults to 1024
+ bytes, but this can be overridden (*note Block size::). The
+ BLOCKS computed counts each hard link separately; this is arguably
+ a deficiency.
+
+ The file type is one of the following characters:
+
+ `-'
+ regular file
+
+ `b'
+ block special file
+
+ `c'
+ character special file
+
+ `C'
+ high performance ("contiguous data") file
+
+ `d'
+ directory
+
+ `D'
+ door (Solaris 2.5 and up)
+
+ `l'
+ symbolic link
+
+ `M'
+ off-line ("migrated") file (Cray DMF)
+
+ `n'
+ network special file (HP-UX)
+
+ `p'
+ FIFO (named pipe)
+
+ `P'
+ port (Solaris 10 and up)
+
+ `s'
+ socket
+
+ `?'
+ some other file type
+
+ The file mode bits listed are similar to symbolic mode
+ specifications (*note Symbolic Modes::). But `ls' combines
+ multiple bits into the third character of each set of permissions
+ as follows:
+
+ `s'
+ If the set-user-ID or set-group-ID bit and the corresponding
+ executable bit are both set.
+
+ `S'
+ If the set-user-ID or set-group-ID bit is set but the
+ corresponding executable bit is not set.
+
+ `t'
+ If the restricted deletion flag or sticky bit, and the
+ other-executable bit, are both set. The restricted deletion
+ flag is another name for the sticky bit. *Note Mode
+ Structure::.
+
+ `T'
+ If the restricted deletion flag or sticky bit is set but the
+ other-executable bit is not set.
+
+ `x'
+ If the executable bit is set and none of the above apply.
+
+ `-'
+ Otherwise.
+
+ Following the file mode bits is a single character that specifies
+ whether an alternate access method such as an access control list
+ applies to the file. When the character following the file mode
+ bits is a space, there is no alternate access method. When it is
+ a printing character, then there is such a method.
+
+ For a file with an extended access control list, a `+' character is
+ listed. Basic access control lists are equivalent to the
+ permissions listed, and are not considered an alternate access
+ method.
+
+`-n'
+`--numeric-uid-gid'
+ Produce long format directory listings, but display numeric user
+ and group IDs instead of the owner and group names.
+
+`-o'
+ Produce long format directory listings, but don't display group
+ information. It is equivalent to using `--format=long' with
+ `--no-group' .
+
+`-s'
+`--size'
+ Print the disk allocation of each file to the left of the file
+ name. This is the amount of disk space used by the file, which is
+ usually a bit more than the file's size, but it can be less if the
+ file has holes.
+
+ Normally the disk allocation is printed in units of 1024 bytes,
+ but this can be overridden (*note Block size::).
+
+ For files that are NFS-mounted from an HP-UX system to a BSD
+ system, this option reports sizes that are half the correct
+ values. On HP-UX systems, it reports sizes that are twice the
+ correct values for files that are NFS-mounted from BSD systems.
+ This is due to a flaw in HP-UX; it also affects the HP-UX `ls'
+ program.
+
+`--si'
+ Append an SI-style abbreviation to each size, such as `M' for
+ megabytes. Powers of 1000 are used, not 1024; `M' stands for
+ 1,000,000 bytes. This option is equivalent to `--block-size=si'.
+ Use the `-h' or `--human-readable' option if you prefer powers of
+ 1024.
+
+
+
+File: coreutils.info, Node: Sorting the output, Next: More details about version sort, Prev: What information is listed, Up: ls invocation
+
+10.1.3 Sorting the output
+-------------------------
+
+These options change the order in which `ls' sorts the information it
+outputs. By default, sorting is done by character code (e.g., ASCII
+order).
+
+`-c'
+`--time=ctime'
+`--time=status'
+ If the long listing format (e.g., `-l', `-o') is being used, print
+ the status change time (the `ctime' in the inode) instead of the
+ modification time. When explicitly sorting by time (`--sort=time'
+ or `-t') or when not using a long listing format, sort according
+ to the status change time.
+
+`-f'
+ Primarily, like `-U'--do not sort; list the files in whatever
+ order they are stored in the directory. But also enable `-a' (list
+ all files) and disable `-l', `--color', and `-s' (if they were
+ specified before the `-f').
+
+`-r'
+`--reverse'
+ Reverse whatever the sorting method is--e.g., list files in reverse
+ alphabetical order, youngest first, smallest first, or whatever.
+
+`-S'
+`--sort=size'
+ Sort by file size, largest first.
+
+`-t'
+`--sort=time'
+ Sort by modification time (the `mtime' in the inode), newest first.
+
+`-u'
+`--time=atime'
+`--time=access'
+`--time=use'
+ If the long listing format (e.g., `--format=long') is being used,
+ print the last access time (the `atime' in the inode). When
+ explicitly sorting by time (`--sort=time' or `-t') or when not
+ using a long listing format, sort according to the access time.
+
+`-U'
+`--sort=none'
+ Do not sort; list the files in whatever order they are stored in
+ the directory. (Do not do any of the other unrelated things that
+ `-f' does.) This is especially useful when listing very large
+ directories, since not doing any sorting can be noticeably faster.
+
+`-v'
+`--sort=version'
+ Sort by version name and number, lowest first. It behaves like a
+ default sort, except that each sequence of decimal digits is
+ treated numerically as an index/version number. (*Note More
+ details about version sort::.)
+
+`-X'
+`--sort=extension'
+ Sort directory contents alphabetically by file extension
+ (characters after the last `.'); files with no extension are
+ sorted first.
+
+
+
+File: coreutils.info, Node: More details about version sort, Next: General output formatting, Prev: Sorting the output, Up: ls invocation
+
+10.1.4 More details about version sort
+--------------------------------------
+
+The version sort takes into account the fact that file names frequently
+include indices or version numbers. Standard sorting functions usually
+do not produce the ordering that people expect because comparisons are
+made on a character-by-character basis. The version sort addresses
+this problem, and is especially useful when browsing directories that
+contain many files with indices/version numbers in their names:
+
+ $ ls -1 $ ls -1v
+ foo.zml-1.gz foo.zml-1.gz
+ foo.zml-100.gz foo.zml-2.gz
+ foo.zml-12.gz foo.zml-6.gz
+ foo.zml-13.gz foo.zml-12.gz
+ foo.zml-2.gz foo.zml-13.gz
+ foo.zml-25.gz foo.zml-25.gz
+ foo.zml-6.gz foo.zml-100.gz
+
+ Note also that numeric parts with leading zeros are considered as
+fractional one:
+
+ $ ls -1 $ ls -1v
+ abc-1.007.tgz abc-1.007.tgz
+ abc-1.012b.tgz abc-1.01a.tgz
+ abc-1.01a.tgz abc-1.012b.tgz
+
+ This functionality is implemented using the `strverscmp' function.
+*Note String/Array Comparison: (libc)String/Array Comparison. One
+result of that implementation decision is that `ls -v' does not use the
+locale category, `LC_COLLATE'. As a result, non-numeric prefixes are
+sorted as if `LC_COLLATE' were set to `C'.
+
+
+File: coreutils.info, Node: General output formatting, Next: Formatting file timestamps, Prev: More details about version sort, Up: ls invocation
+
+10.1.5 General output formatting
+--------------------------------
+
+These options affect the appearance of the overall output.
+
+`-1'
+`--format=single-column'
+ List one file per line. This is the default for `ls' when standard
+ output is not a terminal.
+
+`-C'
+`--format=vertical'
+ List files in columns, sorted vertically. This is the default for
+ `ls' if standard output is a terminal. It is always the default
+ for the `dir' program. GNU `ls' uses variable width columns to
+ display as many files as possible in the fewest lines.
+
+`--color [=WHEN]'
+ Specify whether to use color for distinguishing file types. WHEN
+ may be omitted, or one of:
+ * none - Do not use color at all. This is the default.
+
+ * auto - Only use color if standard output is a terminal.
+
+ * always - Always use color.
+ Specifying `--color' and no WHEN is equivalent to `--color=always'.
+ Piping a colorized listing through a pager like `more' or `less'
+ usually produces unreadable results. However, using `more -f'
+ does seem to work.
+
+`-F'
+`--classify'
+`--indicator-style=classify'
+ Append a character to each file name indicating the file type.
+ Also, for regular files that are executable, append `*'. The file
+ type indicators are `/' for directories, `@' for symbolic links,
+ `|' for FIFOs, `=' for sockets, `>' for doors, and nothing for
+ regular files. Do not follow symbolic links listed on the command
+ line unless the `--dereference-command-line' (`-H'),
+ `--dereference' (`-L'), or
+ `--dereference-command-line-symlink-to-dir' options are specified.
+
+`--file-type'
+`--indicator-style=file-type'
+ Append a character to each file name indicating the file type.
+ This is like `-F', except that executables are not marked.
+
+`--indicator-style=WORD'
+ Append a character indicator with style WORD to entry names, as
+ follows:
+
+ `none'
+ Do not append any character indicator; this is the default.
+
+ `slash'
+ Append `/' for directories. This is the same as the `-p'
+ option.
+
+ `file-type'
+ Append `/' for directories, `@' for symbolic links, `|' for
+ FIFOs, `=' for sockets, and nothing for regular files. This
+ is the same as the `--file-type' option.
+
+ `classify'
+ Append `*' for executable regular files, otherwise behave as
+ for `file-type'. This is the same as the `-F' or
+ `--classify' option.
+
+`-k'
+ Print file sizes in 1024-byte blocks, overriding the default block
+ size (*note Block size::). This option is equivalent to
+ `--block-size=1K'.
+
+`-m'
+`--format=commas'
+ List files horizontally, with as many as will fit on each line,
+ separated by `, ' (a comma and a space).
+
+`-p'
+`--indicator-style=slash'
+ Append a `/' to directory names.
+
+`-x'
+`--format=across'
+`--format=horizontal'
+ List the files in columns, sorted horizontally.
+
+`-T COLS'
+`--tabsize=COLS'
+ Assume that each tab stop is COLS columns wide. The default is 8.
+ `ls' uses tabs where possible in the output, for efficiency. If
+ COLS is zero, do not use tabs at all.
+
+ Some terminal emulators (at least Apple Terminal 1.5 (133) from
+ Mac OS X 10.4.8) do not properly align columns to the right of a
+ TAB following a non-ASCII byte. If you use such a terminal
+ emulator, use the `-T0' option or put `TABSIZE=0' in your
+ environment to tell `ls' to align using spaces, not tabs.
+
+`-w'
+`--width=COLS'
+ Assume the screen is COLS columns wide. The default is taken from
+ the terminal settings if possible; otherwise the environment
+ variable `COLUMNS' is used if it is set; otherwise the default is
+ 80.
+
+
+
+File: coreutils.info, Node: Formatting file timestamps, Next: Formatting the file names, Prev: General output formatting, Up: ls invocation
+
+10.1.6 Formatting file timestamps
+---------------------------------
+
+By default, file timestamps are listed in abbreviated form. Most
+locales use a timestamp like `2002-03-30 23:45'. However, the default
+POSIX locale uses a date like `Mar 30 2002' for non-recent timestamps,
+and a date-without-year and time like `Mar 30 23:45' for recent
+timestamps.
+
+ A timestamp is considered to be "recent" if it is less than six
+months old, and is not dated in the future. If a timestamp dated today
+is not listed in recent form, the timestamp is in the future, which
+means you probably have clock skew problems which may break programs
+like `make' that rely on file timestamps.
+
+ Time stamps are listed according to the time zone rules specified by
+the `TZ' environment variable, or by the system default rules if `TZ'
+is not set. *Note Specifying the Time Zone with `TZ': (libc)TZ
+Variable.
+
+ The following option changes how file timestamps are printed.
+
+`--time-style=STYLE'
+ List timestamps in style STYLE. The STYLE should be one of the
+ following:
+
+ `+FORMAT'
+ List timestamps using FORMAT, where FORMAT is interpreted
+ like the format argument of `date' (*note date invocation::).
+ For example, `--time-style="+%Y-%m-%d %H:%M:%S"' causes `ls'
+ to list timestamps like `2002-03-30 23:45:56'. As with
+ `date', FORMAT's interpretation is affected by the `LC_TIME'
+ locale category.
+
+ If FORMAT contains two format strings separated by a newline,
+ the former is used for non-recent files and the latter for
+ recent files; if you want output columns to line up, you may
+ need to insert spaces in one of the two formats.
+
+ `full-iso'
+ List timestamps in full using ISO 8601 date, time, and time
+ zone format with nanosecond precision, e.g., `2002-03-30
+ 23:45:56.477817180 -0700'. This style is equivalent to
+ `+%Y-%m-%d %H:%M:%S.%N %z'.
+
+ This is useful because the time output includes all the
+ information that is available from the operating system. For
+ example, this can help explain `make''s behavior, since GNU
+ `make' uses the full timestamp to determine whether a file is
+ out of date.
+
+ `long-iso'
+ List ISO 8601 date and time in minutes, e.g., `2002-03-30
+ 23:45'. These timestamps are shorter than `full-iso'
+ timestamps, and are usually good enough for everyday work.
+ This style is equivalent to `+%Y-%m-%d %H:%M'.
+
+ `iso'
+ List ISO 8601 dates for non-recent timestamps (e.g.,
+ `2002-03-30 '), and ISO 8601 month, day, hour, and minute for
+ recent timestamps (e.g., `03-30 23:45'). These timestamps
+ are uglier than `long-iso' timestamps, but they carry nearly
+ the same information in a smaller space and their brevity
+ helps `ls' output fit within traditional 80-column output
+ lines. The following two `ls' invocations are equivalent:
+
+ newline='
+ '
+ ls -l --time-style="+%Y-%m-%d $newline%m-%d %H:%M"
+ ls -l --time-style="iso"
+
+ `locale'
+ List timestamps in a locale-dependent form. For example, a
+ Finnish locale might list non-recent timestamps like `maalis
+ 30 2002' and recent timestamps like `maalis 30 23:45'.
+ Locale-dependent timestamps typically consume more space than
+ `iso' timestamps and are harder for programs to parse because
+ locale conventions vary so widely, but they are easier for
+ many people to read.
+
+ The `LC_TIME' locale category specifies the timestamp format.
+ The default POSIX locale uses timestamps like `Mar 30 2002'
+ and `Mar 30 23:45'; in this locale, the following two `ls'
+ invocations are equivalent:
+
+ newline='
+ '
+ ls -l --time-style="+%b %e %Y$newline%b %e %H:%M"
+ ls -l --time-style="locale"
+
+ Other locales behave differently. For example, in a German
+ locale, `--time-style="locale"' might be equivalent to
+ `--time-style="+%e. %b %Y $newline%e. %b %H:%M"' and might
+ generate timestamps like `30. Ma"r 2002 ' and `30. Ma"r
+ 23:45'.
+
+ `posix-STYLE'
+ List POSIX-locale timestamps if the `LC_TIME' locale category
+ is POSIX, STYLE timestamps otherwise. For example, the
+ `posix-long-iso' style lists timestamps like `Mar 30 2002'
+ and `Mar 30 23:45' when in the POSIX locale, and like
+ `2002-03-30 23:45' otherwise.
+
+ You can specify the default value of the `--time-style' option with
+the environment variable `TIME_STYLE'; if `TIME_STYLE' is not set the
+default style is `locale'. GNU Emacs 21.3 and later use the `--dired'
+option and therefore can parse any date format, but if you are using
+Emacs 21.1 or 21.2 and specify a non-POSIX locale you may need to set
+`TIME_STYLE="posix-long-iso"'.
+
+ To avoid certain denial-of-service attacks, timestamps that would be
+longer than 1000 bytes may be treated as errors.
+
+
+File: coreutils.info, Node: Formatting the file names, Prev: Formatting file timestamps, Up: ls invocation
+
+10.1.7 Formatting the file names
+--------------------------------
+
+These options change how file names themselves are printed.
+
+`-b'
+`--escape'
+`--quoting-style=escape'
+ Quote nongraphic characters in file names using alphabetic and
+ octal backslash sequences like those used in C.
+
+`-N'
+`--literal'
+`--quoting-style=literal'
+ Do not quote file names. However, with `ls' nongraphic characters
+ are still printed as question marks if the output is a terminal
+ and you do not specify the `--show-control-chars' option.
+
+`-q'
+`--hide-control-chars'
+ Print question marks instead of nongraphic characters in file
+ names. This is the default if the output is a terminal and the
+ program is `ls'.
+
+`-Q'
+`--quote-name'
+`--quoting-style=c'
+ Enclose file names in double quotes and quote nongraphic
+ characters as in C.
+
+`--quoting-style=WORD'
+ Use style WORD to quote file names and other strings that may
+ contain arbitrary characters. The WORD should be one of the
+ following:
+
+ `literal'
+ Output strings as-is; this is the same as the `-N' or
+ `--literal' option.
+
+ `shell'
+ Quote strings for the shell if they contain shell
+ metacharacters or would cause ambiguous output. The quoting
+ is suitable for POSIX-compatible shells like `bash', but it
+ does not always work for incompatible shells like `csh'.
+
+ `shell-always'
+ Quote strings for the shell, even if they would normally not
+ require quoting.
+
+ `c'
+ Quote strings as for C character string literals, including
+ the surrounding double-quote characters; this is the same as
+ the `-Q' or `--quote-name' option.
+
+ `escape'
+ Quote strings as for C character string literals, except omit
+ the surrounding double-quote characters; this is the same as
+ the `-b' or `--escape' option.
+
+ `clocale'
+ Quote strings as for C character string literals, except use
+ surrounding quotation marks appropriate for the locale.
+
+ `locale'
+ Quote strings as for C character string literals, except use
+ surrounding quotation marks appropriate for the locale, and
+ quote `like this' instead of "like this" in the default C
+ locale. This looks nicer on many displays.
+
+ You can specify the default value of the `--quoting-style' option
+ with the environment variable `QUOTING_STYLE'. If that environment
+ variable is not set, the default value is `literal', but this
+ default may change to `shell' in a future version of this package.
+
+`--show-control-chars'
+ Print nongraphic characters as-is in file names. This is the
+ default unless the output is a terminal and the program is `ls'.
+
+
+
+File: coreutils.info, Node: dir invocation, Next: vdir invocation, Prev: ls invocation, Up: Directory listing
+
+10.2 `dir': Briefly list directory contents
+===========================================
+
+`dir' is equivalent to `ls -C -b'; that is, by default files are listed
+in columns, sorted vertically, and special characters are represented
+by backslash escape sequences.
+
+ *Note `ls': ls invocation.
+
+
+File: coreutils.info, Node: vdir invocation, Next: dircolors invocation, Prev: dir invocation, Up: Directory listing
+
+10.3 `vdir': Verbosely list directory contents
+==============================================
+
+`vdir' is equivalent to `ls -l -b'; that is, by default files are
+listed in long format and special characters are represented by
+backslash escape sequences.
+
+
+File: coreutils.info, Node: dircolors invocation, Prev: vdir invocation, Up: Directory listing
+
+10.4 `dircolors': Color setup for `ls'
+======================================
+
+`dircolors' outputs a sequence of shell commands to set up the terminal
+for color output from `ls' (and `dir', etc.). Typical usage:
+
+ eval "`dircolors [OPTION]... [FILE]`"
+
+ If FILE is specified, `dircolors' reads it to determine which colors
+to use for which file types and extensions. Otherwise, a precompiled
+database is used. For details on the format of these files, run
+`dircolors --print-database'.
+
+ The output is a shell command to set the `LS_COLORS' environment
+variable. You can specify the shell syntax to use on the command line,
+or `dircolors' will guess it from the value of the `SHELL' environment
+variable.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-b'
+`--sh'
+`--bourne-shell'
+ Output Bourne shell commands. This is the default if the `SHELL'
+ environment variable is set and does not end with `csh' or `tcsh'.
+
+`-c'
+`--csh'
+`--c-shell'
+ Output C shell commands. This is the default if `SHELL' ends with
+ `csh' or `tcsh'.
+
+`-p'
+`--print-database'
+ Print the (compiled-in) default color configuration database. This
+ output is itself a valid configuration file, and is fairly
+ descriptive of the possibilities.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: Basic operations, Next: Special file types, Prev: Directory listing, Up: Top
+
+11 Basic operations
+*******************
+
+This chapter describes the commands for basic file manipulation:
+copying, moving (renaming), and deleting (removing).
+
+* Menu:
+
+* cp invocation:: Copy files.
+* dd invocation:: Convert and copy a file.
+* install invocation:: Copy files and set attributes.
+* mv invocation:: Move (rename) files.
+* rm invocation:: Remove files or directories.
+* shred invocation:: Remove files more securely.
+
+
+File: coreutils.info, Node: cp invocation, Next: dd invocation, Up: Basic operations
+
+11.1 `cp': Copy files and directories
+=====================================
+
+`cp' copies files (or, optionally, directories). The copy is
+completely independent of the original. You can either copy one file to
+another, or copy arbitrarily many files to a destination directory.
+Synopses:
+
+ cp [OPTION]... [-T] SOURCE DEST
+ cp [OPTION]... SOURCE... DIRECTORY
+ cp [OPTION]... -t DIRECTORY SOURCE...
+
+ * If two file names are given, `cp' copies the first file to the
+ second.
+
+ * If the `--target-directory' (`-t') option is given, or failing
+ that if the last file is a directory and the
+ `--no-target-directory' (`-T') option is not given, `cp' copies
+ each SOURCE file to the specified directory, using the SOURCEs'
+ names.
+
+ Generally, files are written just as they are read. For exceptions,
+see the `--sparse' option below.
+
+ By default, `cp' does not copy directories. However, the `-R',
+`-a', and `-r' options cause `cp' to copy recursively by descending
+into source directories and copying files to corresponding destination
+directories.
+
+ By default, `cp' follows symbolic links only when not copying
+recursively. This default can be overridden with the `--archive'
+(`-a'), `-d', `--dereference' (`-L'), `--no-dereference' (`-P'), and
+`-H' options. If more than one of these options is specified, the last
+one silently overrides the others.
+
+ By default, `cp' copies the contents of special files only when not
+copying recursively. This default can be overridden with the
+`--copy-contents' option.
+
+ `cp' generally refuses to copy a file onto itself, with the
+following exception: if `--force --backup' is specified with SOURCE and
+DEST identical, and referring to a regular file, `cp' will make a
+backup file, either regular or numbered, as specified in the usual ways
+(*note Backup options::). This is useful when you simply want to make
+a backup of an existing file before changing it.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-a'
+`--archive'
+ Preserve as much as possible of the structure and attributes of the
+ original files in the copy (but do not attempt to preserve internal
+ directory structure; i.e., `ls -U' may list the entries in a copied
+ directory in a different order). Equivalent to `-dpPR'.
+
+`-b'
+`--backup[=METHOD]'
+ *Note Backup options::. Make a backup of each file that would
+ otherwise be overwritten or removed. As a special case, `cp'
+ makes a backup of SOURCE when the force and backup options are
+ given and SOURCE and DEST are the same name for an existing,
+ regular file. One useful application of this combination of
+ options is this tiny Bourne shell script:
+
+ #!/bin/sh
+ # Usage: backup FILE...
+ # Create a GNU-style backup of each listed FILE.
+ for i; do
+ cp --backup --force -- "$i" "$i"
+ done
+
+`--copy-contents'
+ If copying recursively, copy the contents of any special files
+ (e.g., FIFOs and device files) as if they were regular files.
+ This means trying to read the data in each source file and writing
+ it to the destination. It is usually a mistake to use this
+ option, as it normally has undesirable effects on special files
+ like FIFOs and the ones typically found in the `/dev' directory.
+ In most cases, `cp -R --copy-contents' will hang indefinitely
+ trying to read from FIFOs and special files like `/dev/console',
+ and it will fill up your destination disk if you use it to copy
+ `/dev/zero'. This option has no effect unless copying
+ recursively, and it does not affect the copying of symbolic links.
+
+`-d'
+ Copy symbolic links as symbolic links rather than copying the
+ files that they point to, and preserve hard links between source
+ files in the copies. Equivalent to `--no-dereference
+ --preserve=links'.
+
+`-f'
+`--force'
+ When copying without this option and an existing destination file
+ cannot be opened for writing, the copy fails. However, with
+ `--force'), when a destination file cannot be opened, `cp' then
+ unlinks it and tries to open it again. Contrast this behavior
+ with that enabled by `--link' and `--symbolic-link', whereby the
+ destination file is never opened but rather is unlinked
+ unconditionally. Also see the description of
+ `--remove-destination'.
+
+ This option is independent of the `--interactive' or `-i' option:
+ neither cancels the effect of the other.
+
+`-H'
+ If a command line argument specifies a symbolic link, then copy the
+ file it points to rather than the symbolic link itself. However,
+ copy (preserving its nature) any symbolic link that is encountered
+ via recursive traversal.
+
+`-i'
+`--interactive'
+ When copying a file other than a directory, prompt whether to
+ overwrite an existing destination file.
+
+`-l'
+`--link'
+ Make hard links instead of copies of non-directories.
+
+`-L'
+`--dereference'
+ Always follow symbolic links.
+
+`-P'
+`--no-dereference'
+ Copy symbolic links as symbolic links rather than copying the
+ files that they point to.
+
+`-p'
+`--preserve[=ATTRIBUTE_LIST]'
+ Preserve the specified attributes of the original files. If
+ specified, the ATTRIBUTE_LIST must be a comma-separated list of
+ one or more of the following strings:
+
+ `mode'
+ Preserve the file mode bits and access control lists.
+
+ `ownership'
+ Preserve the owner and group. On most modern systems, only
+ users with appropriate privileges may change the owner of a
+ file, and ordinary users may preserve the group ownership of
+ a file only if they happen to be a member of the desired
+ group.
+
+ `timestamps'
+ Preserve the times of last access and last modification, when
+ possible. In general, it is not possible to preserve these
+ attributes when the affected file is a symbolic link.
+ However, FreeBSD now provides the `lutimes' function, which
+ makes it possibile even for symbolic links. However, this
+ implementation does not yet take advantage of that.
+
+ `links'
+ Preserve in the destination files any links between
+ corresponding source files.
+
+ `all'
+ Preserve all file attributes. Equivalent to specifying all
+ of the above.
+
+ Using `--preserve' with no ATTRIBUTE_LIST is equivalent to
+ `--preserve=mode,ownership,timestamps'.
+
+ In the absence of this option, each destination file is created
+ with the mode bits of the corresponding source file, minus the
+ bits set in the umask and minus the set-user-ID and set-group-ID
+ bits. *Note File permissions::.
+
+`--no-preserve=ATTRIBUTE_LIST'
+ Do not preserve the specified attributes. The ATTRIBUTE_LIST has
+ the same form as for `--preserve'.
+
+`--parents'
+ Form the name of each destination file by appending to the target
+ directory a slash and the specified name of the source file. The
+ last argument given to `cp' must be the name of an existing
+ directory. For example, the command:
+
+ cp --parents a/b/c existing_dir
+
+ copies the file `a/b/c' to `existing_dir/a/b/c', creating any
+ missing intermediate directories.
+
+`--reply=HOW'
+ *Deprecated: to be removed in 2008.*
+ Using `--reply=yes' makes `cp' act as if `yes' were given as a
+ response to every prompt about a destination file. That
+ effectively cancels any preceding `--interactive' or `-i' option.
+ Specify `--reply=no' to make `cp' act as if `no' were given as a
+ response to every prompt about a destination file. Specify
+ `--reply=query' to make `cp' prompt the user about each existing
+ destination file.
+
+`-R'
+`-r'
+`--recursive'
+ Copy directories recursively. Symbolic links are not followed by
+ default; see the `--archive' (`-a'), `-d', `--dereference' (`-L'),
+ `--no-dereference' (`-P'), and `-H' options. Special files are
+ copied by creating a destination file of the same type as the
+ source; see the `--copy-contents' option. It is not portable to
+ use `-r' to copy symbolic links or special files. On some non-GNU
+ systems, `-r' implies the equivalent of `-L' and `--copy-contents'
+ for historical reasons. Also, it is not portable to use `-R' to
+ copy symbolic links unless you also specify `-P', as POSIX allows
+ implementations that dereference symbolic links by default.
+
+`--remove-destination'
+ Remove each existing destination file before attempting to open it
+ (contrast with `-f' above).
+
+`--sparse=WHEN'
+ A "sparse file" contains "holes"--a sequence of zero bytes that
+ does not occupy any physical disk blocks; the `read' system call
+ reads these as zeros. This can both save considerable disk space
+ and increase speed, since many binary files contain lots of
+ consecutive zero bytes. By default, `cp' detects holes in input
+ source files via a crude heuristic and makes the corresponding
+ output file sparse as well. Only regular files may be sparse.
+
+ The WHEN value can be one of the following:
+
+ `auto'
+ The default behavior: if the input file is sparse, attempt to
+ make the output file sparse, too. However, if an output file
+ exists but refers to a non-regular file, then do not attempt
+ to make it sparse.
+
+ `always'
+ For each sufficiently long sequence of zero bytes in the
+ input file, attempt to create a corresponding hole in the
+ output file, even if the input file does not appear to be
+ sparse. This is useful when the input file resides on a file
+ system that does not support sparse files (for example,
+ `efs' file systems in SGI IRIX 5.3 and earlier), but the
+ output file is on a type of file system that does support
+ them. Holes may be created only in regular files, so if the
+ destination file is of some other type, `cp' does not even
+ try to make it sparse.
+
+ `never'
+ Never make the output file sparse. This is useful in
+ creating a file for use with the `mkswap' command, since such
+ a file must not have any holes.
+
+`--strip-trailing-slashes'
+ Remove any trailing slashes from each SOURCE argument. *Note
+ Trailing slashes::.
+
+`-s'
+`--symbolic-link'
+ Make symbolic links instead of copies of non-directories. All
+ source file names must be absolute (starting with `/') unless the
+ destination files are in the current directory. This option merely
+ results in an error message on systems that do not support
+ symbolic links.
+
+`-S SUFFIX'
+`--suffix=SUFFIX'
+ Append SUFFIX to each backup file made with `-b'. *Note Backup
+ options::.
+
+`-t DIRECTORY'
+`--target-directory=DIRECTORY'
+ Specify the destination DIRECTORY. *Note Target directory::.
+
+`-T'
+`--no-target-directory'
+ Do not treat the last operand specially when it is a directory or a
+ symbolic link to a directory. *Note Target directory::.
+
+`-u'
+`--update'
+ Do not copy a non-directory that has an existing destination with
+ the same or newer modification time. If time stamps are being
+ preserved, the comparison is to the source time stamp truncated to
+ the resolutions of the destination file system and of the system
+ calls used to update time stamps; this avoids duplicate work if
+ several `cp -pu' commands are executed with the same source and
+ destination.
+
+`-v'
+`--verbose'
+ Print the name of each file before copying it.
+
+`-x'
+`--one-file-system'
+ Skip subdirectories that are on different file systems from the
+ one that the copy started on. However, mount point directories
+ _are_ copied.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: dd invocation, Next: install invocation, Prev: cp invocation, Up: Basic operations
+
+11.2 `dd': Convert and copy a file
+==================================
+
+`dd' copies a file (from standard input to standard output, by default)
+with a changeable I/O block size, while optionally performing
+conversions on it. Synopses:
+
+ dd [OPERAND]...
+ dd OPTION
+
+ The only options are `--help' and `--version'. *Note Common
+options::. `dd' accepts the following operands.
+
+`if=FILE'
+ Read from FILE instead of standard input.
+
+`of=FILE'
+ Write to FILE instead of standard output. Unless `conv=notrunc'
+ is given, `dd' truncates FILE to zero bytes (or the size specified
+ with `seek=').
+
+`ibs=BYTES'
+ Set the input block size to BYTES. This makes `dd' read BYTES per
+ block.
+
+`obs=BYTES'
+ Set the output block size to BYTES. This makes `dd' write BYTES
+ per block.
+
+`bs=BYTES'
+ Set both input and output block sizes to BYTES. This makes `dd'
+ read and write BYTES per block, overriding any `ibs' and `obs'
+ settings.
+
+`cbs=BYTES'
+ Set the conversion block size to BYTES. When converting
+ variable-length records to fixed-length ones (`conv=block') or the
+ reverse (`conv=unblock'), use BYTES as the fixed record length.
+
+`skip=BLOCKS'
+ Skip BLOCKS `ibs'-byte blocks in the input file before copying.
+
+`seek=BLOCKS'
+ Skip BLOCKS `obs'-byte blocks in the output file before copying.
+
+`count=BLOCKS'
+ Copy BLOCKS `ibs'-byte blocks from the input file, instead of
+ everything until the end of the file.
+
+`conv=CONVERSION[,CONVERSION]...'
+ Convert the file as specified by the CONVERSION argument(s). (No
+ spaces around any comma(s).)
+
+ Conversions:
+
+ `ascii'
+ Convert EBCDIC to ASCII, using the conversion table specified
+ by POSIX. This provides a 1:1 translation for all 256 bytes.
+
+ `ebcdic'
+ Convert ASCII to EBCDIC. This is the inverse of the `ascii'
+ conversion.
+
+ `ibm'
+ Convert ASCII to alternate EBCDIC, using the alternate
+ conversion table specified by POSIX. This is not a 1:1
+ translation, but reflects common historical practice for `~',
+ `[', and `]'.
+
+ The `ascii', `ebcdic', and `ibm' conversions are mutually
+ exclusive.
+
+ `block'
+ For each line in the input, output `cbs' bytes, replacing the
+ input newline with a space and padding with spaces as
+ necessary.
+
+ `unblock'
+ Replace trailing spaces in each `cbs'-sized input block with a
+ newline.
+
+ The `block' and `unblock' conversions are mutually exclusive.
+
+ `lcase'
+ Change uppercase letters to lowercase.
+
+ `ucase'
+ Change lowercase letters to uppercase.
+
+ The `lcase' and `ucase' conversions are mutually exclusive.
+
+ `swab'
+ Swap every pair of input bytes. GNU `dd', unlike others,
+ works when an odd number of bytes are read--the last byte is
+ simply copied (since there is nothing to swap it with).
+
+ `noerror'
+ Continue after read errors.
+
+ `nocreat'
+ Do not create the output file; the output file must already
+ exist.
+
+ `excl'
+ Fail if the output file already exists; `dd' must create the
+ output file itself.
+
+ The `excl' and `nocreat' conversions are mutually exclusive.
+
+ `notrunc'
+ Do not truncate the output file.
+
+ `sync'
+ Pad every input block to size of `ibs' with trailing zero
+ bytes. When used with `block' or `unblock', pad with spaces
+ instead of zero bytes.
+
+ `fdatasync'
+ Synchronize output data just before finishing. This forces a
+ physical write of output data.
+
+ `fsync'
+ Synchronize output data and metadata just before finishing.
+ This forces a physical write of output data and metadata.
+
+
+`iflag=FLAG[,FLAG]...'
+ Access the input file using the flags specified by the FLAG
+ argument(s). (No spaces around any comma(s).)
+
+`oflag=FLAG[,FLAG]...'
+ Access the output file using the flags specified by the FLAG
+ argument(s). (No spaces around any comma(s).)
+
+ Here are the flags. Not every flag is supported on every operating
+ system.
+
+ `append'
+ Write in append mode, so that even if some other process is
+ writing to this file, every `dd' write will append to the
+ current contents of the file. This flag makes sense only for
+ output. If you combine this flag with the `of=FILE' operand,
+ you should also specify `conv=notrunc' unless you want the
+ output file to be truncated before being appended to.
+
+ `direct'
+ Use direct I/O for data, avoiding the buffer cache.
+
+ `directory'
+ Fail unless the file is a directory. Most operating systems
+ do not allow I/O to a directory, so this flag has limited
+ utility.
+
+ `dsync'
+ Use synchronized I/O for data. For the output file, this
+ forces a physical write of output data on each write. For
+ the input file, this flag can matter when reading from a
+ remote file that has been written to synchronously by some
+ other process. Metadata (e.g., last-access and last-modified
+ time) is not necessarily synchronized.
+
+ `sync'
+ Use synchronized I/O for both data and metadata.
+
+ `nonblock'
+ Use non-blocking I/O.
+
+ `noatime'
+ Do not update the file's access time. Some older file
+ systems silently ignore this flag, so it is a good idea to
+ test it on your files before relying on it.
+
+ `noctty'
+ Do not assign the file to be a controlling terminal for `dd'.
+ This has no effect when the file is not a terminal. On many
+ hosts (e.g., GNU/Linux hosts), this option has no effect at
+ all.
+
+ `nofollow'
+ Do not follow symbolic links.
+
+ `nolinks'
+ Fail if the file has multiple hard links.
+
+ `binary'
+ Use binary I/O. This option has an effect only on nonstandard
+ platforms that distinguish binary from text I/O.
+
+ `text'
+ Use text I/O. Like `binary', this option has no effect on
+ standard platforms.
+
+
+ These flags are not supported on all systems, and `dd' rejects
+ attempts to use them when they are not supported. When reading
+ from standard input or writing to standard output, the `nofollow'
+ and `noctty' flags should not be specified, and the other flags
+ (e.g., `nonblock') can affect how other processes behave with the
+ affected file descriptors, even after `dd' exits.
+
+
+ The numeric-valued strings above (BYTES and BLOCKS) can be followed
+by a multiplier: `b'=512, `c'=1, `w'=2, `xM'=M, or any of the standard
+block size suffixes like `k'=1024 (*note Block size::).
+
+ Use different `dd' invocations to use different block sizes for
+skipping and I/O. For example, the following shell commands copy data
+in 512 KiB blocks between a disk and a tape, but do not save or restore
+a 4 KiB label at the start of the disk:
+
+ disk=/dev/rdsk/c0t1d0s2
+ tape=/dev/rmt/0
+
+ # Copy all but the label from disk to tape.
+ (dd bs=4k skip=1 count=0 && dd bs=512k) <$disk >$tape
+
+ # Copy from tape back to disk, but leave the disk label alone.
+ (dd bs=4k seek=1 count=0 && dd bs=512k) <$tape >$disk
+
+ Sending an `INFO' signal to a running `dd' process makes it print
+I/O statistics to standard error and then resume copying. In the
+example below, `dd' is run in the background to copy 10 million blocks.
+The `kill' command makes it output intermediate I/O statistics, and
+when `dd' completes, it outputs the final statistics.
+
+ $ dd if=/dev/zero of=/dev/null count=10MB & pid=$!
+ $ kill -s INFO $pid; wait $pid
+ 3385223+0 records in
+ 3385223+0 records out
+ 1733234176 bytes (1.7 GB) copied, 6.42173 seconds, 270 MB/s
+ 10000000+0 records in
+ 10000000+0 records out
+ 5120000000 bytes (5.1 GB) copied, 18.913 seconds, 271 MB/s
+
+ On systems lacking the `INFO' signal `dd' responds to the `USR1'
+signal instead, unless the `POSIXLY_CORRECT' environment variable is
+set.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: install invocation, Next: mv invocation, Prev: dd invocation, Up: Basic operations
+
+11.3 `install': Copy files and set attributes
+=============================================
+
+`install' copies files while setting their file mode bits and, if
+possible, their owner and group. Synopses:
+
+ install [OPTION]... [-T] SOURCE DEST
+ install [OPTION]... SOURCE... DIRECTORY
+ install [OPTION]... -t DIRECTORY SOURCE...
+ install [OPTION]... -d DIRECTORY...
+
+ * If two file names are given, `install' copies the first file to the
+ second.
+
+ * If the `--target-directory' (`-t') option is given, or failing
+ that if the last file is a directory and the
+ `--no-target-directory' (`-T') option is not given, `install'
+ copies each SOURCE file to the specified directory, using the
+ SOURCEs' names.
+
+ * If the `--directory' (`-d') option is given, `install' creates
+ each DIRECTORY and any missing parent directories. Parent
+ directories are created with mode `u=rwx,go=rx' (755), regardless
+ of the `-m' option or the current umask. *Note Directory Setuid
+ and Setgid::, for how the set-user-ID and set-group-ID bits of
+ parent directories are inherited.
+
+ `install' is similar to `cp', but allows you to control the
+attributes of destination files. It is typically used in Makefiles to
+copy programs into their destination directories. It refuses to copy
+files onto themselves.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-b'
+`--backup[=METHOD]'
+ *Note Backup options::. Make a backup of each file that would
+ otherwise be overwritten or removed.
+
+`-c'
+ Ignored; for compatibility with old Unix versions of `install'.
+
+`-d'
+`--directory'
+ Create any missing parent directories, giving them the default
+ attributes. Then create each given directory, setting their owner,
+ group and mode as given on the command line or to the defaults.
+
+`-g GROUP'
+`--group=GROUP'
+ Set the group ownership of installed files or directories to
+ GROUP. The default is the process's current group. GROUP may be
+ either a group name or a numeric group ID.
+
+`-m MODE'
+`--mode=MODE'
+ Set the file mode bits for the installed file or directory to MODE,
+ which can be either an octal number, or a symbolic mode as in
+ `chmod', with `a=' (no access allowed to anyone) as the point of
+ departure (*note File permissions::). The default mode is
+ `u=rwx,go=rx,a-s'--read, write, and execute for the owner, read
+ and execute for group and other, and with set-user-ID and
+ set-group-ID disabled. This default is not quite the same as
+ `755', since it disables instead of preserving set-user-ID and
+ set-group-ID on directories. *Note Directory Setuid and Setgid::.
+
+`-o OWNER'
+`--owner=OWNER'
+ If `install' has appropriate privileges (is run as root), set the
+ ownership of installed files or directories to OWNER. The default
+ is `root'. OWNER may be either a user name or a numeric user ID.
+
+`-p'
+`--preserve-timestamps'
+ Set the time of last access and the time of last modification of
+ each installed file to match those of each corresponding original
+ file. When a file is installed without this option, its last
+ access and last modification times are both set to the time of
+ installation. This option is useful if you want to use the last
+ modification times of installed files to keep track of when they
+ were last built as opposed to when they were last installed.
+
+`-s'
+`--strip'
+ Strip the symbol tables from installed binary executables.
+
+`-S SUFFIX'
+`--suffix=SUFFIX'
+ Append SUFFIX to each backup file made with `-b'. *Note Backup
+ options::.
+
+`-t DIRECTORY'
+`--target-directory=DIRECTORY'
+ Specify the destination DIRECTORY. *Note Target directory::.
+
+`-T'
+`--no-target-directory'
+ Do not treat the last operand specially when it is a directory or a
+ symbolic link to a directory. *Note Target directory::.
+
+`-v'
+`--verbose'
+ Print the name of each file before copying it.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: mv invocation, Next: rm invocation, Prev: install invocation, Up: Basic operations
+
+11.4 `mv': Move (rename) files
+==============================
+
+`mv' moves or renames files (or directories). Synopses:
+
+ mv [OPTION]... [-T] SOURCE DEST
+ mv [OPTION]... SOURCE... DIRECTORY
+ mv [OPTION]... -t DIRECTORY SOURCE...
+
+ * If two file names are given, `mv' moves the first file to the
+ second.
+
+ * If the `--target-directory' (`-t') option is given, or failing
+ that if the last file is a directory and the
+ `--no-target-directory' (`-T') option is not given, `mv' moves
+ each SOURCE file to the specified directory, using the SOURCEs'
+ names.
+
+ `mv' can move any type of file from one file system to another.
+Prior to version `4.0' of the fileutils, `mv' could move only regular
+files between file systems. For example, now `mv' can move an entire
+directory hierarchy including special device files from one partition
+to another. It first uses some of the same code that's used by `cp -a'
+to copy the requested directories and files, then (assuming the copy
+succeeded) it removes the originals. If the copy fails, then the part
+that was copied to the destination partition is removed. If you were
+to copy three directories from one partition to another and the copy of
+the first directory succeeded, but the second didn't, the first would
+be left on the destination partition and the second and third would be
+left on the original partition.
+
+ If a destination file exists but is normally unwritable, standard
+input is a terminal, and the `-f' or `--force' option is not given,
+`mv' prompts the user for whether to replace the file. (You might own
+the file, or have write permission on its directory.) If the response
+is not affirmative, the file is skipped.
+
+ _Warning_: If you try to move a symlink that points to a directory,
+and you specify the symlink with a trailing slash, then `mv' doesn't
+move the symlink but instead moves the directory referenced by the
+symlink. *Note Trailing slashes::.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-b'
+`--backup[=METHOD]'
+ *Note Backup options::. Make a backup of each file that would
+ otherwise be overwritten or removed.
+
+`-f'
+`--force'
+ Do not prompt the user before removing a destination file.
+
+`-i'
+`--interactive'
+ Prompt whether to overwrite each existing destination file,
+ regardless of its permissions. If the response is not
+ affirmative, the file is skipped.
+
+`--reply=HOW'
+ *Deprecated: to be removed in 2008.*
+ Specifying `--reply=yes' is equivalent to using `--force'.
+ Specify `--reply=no' to make `mv' act as if `no' were given as a
+ response to every prompt about a destination file. Specify
+ `--reply=query' to make `mv' prompt the user about each existing
+ destination file. Note that `--reply=no' has an effect only when
+ `mv' would prompt without `-i' or equivalent, i.e., when a
+ destination file exists and is not writable, standard input is a
+ terminal, and no `-f' (or equivalent) option is specified.
+
+`-u'
+`--update'
+ Do not move a non-directory that has an existing destination with
+ the same or newer modification time. If the move is across file
+ system boundaries, the comparison is to the source time stamp
+ truncated to the resolutions of the destination file system and of
+ the system calls used to update time stamps; this avoids duplicate
+ work if several `mv -u' commands are executed with the same source
+ and destination.
+
+`-v'
+`--verbose'
+ Print the name of each file before moving it.
+
+`--strip-trailing-slashes'
+ Remove any trailing slashes from each SOURCE argument. *Note
+ Trailing slashes::.
+
+`-S SUFFIX'
+`--suffix=SUFFIX'
+ Append SUFFIX to each backup file made with `-b'. *Note Backup
+ options::.
+
+`-t DIRECTORY'
+`--target-directory=DIRECTORY'
+ Specify the destination DIRECTORY. *Note Target directory::.
+
+`-T'
+`--no-target-directory'
+ Do not treat the last operand specially when it is a directory or a
+ symbolic link to a directory. *Note Target directory::.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: rm invocation, Next: shred invocation, Prev: mv invocation, Up: Basic operations
+
+11.5 `rm': Remove files or directories
+======================================
+
+`rm' removes each given FILE. By default, it does not remove
+directories. Synopsis:
+
+ rm [OPTION]... [FILE]...
+
+ If the `-I' or `--interactive=once' option is given, and there are
+more than three files or the `-r', `-R', or `--recursive' are given,
+then `rm' prompts the user for whether to proceed with the entire
+operation. If the response is not affirmative, the entire command is
+aborted.
+
+ Otherwise, if a file is unwritable, standard input is a terminal, and
+the `-f' or `--force' option is not given, or the `-i' or
+`--interactive=always' option _is_ given, `rm' prompts the user for
+whether to remove the file. If the response is not affirmative, the
+file is skipped.
+
+ Any attempt to remove a file whose last file name component is `.'
+or `..' is rejected without any prompting.
+
+ _Warning_: If you use `rm' to remove a file, it is usually possible
+to recover the contents of that file. If you want more assurance that
+the contents are truly unrecoverable, consider using `shred'.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-f'
+`--force'
+ Ignore nonexistent files and never prompt the user. Ignore any
+ previous `--interactive' (`-i') option.
+
+`-i'
+ Prompt whether to remove each file. If the response is not
+ affirmative, the file is skipped. Ignore any previous `--force'
+ (`-f') option. Equivalent to `--interactive=always'.
+
+`-I'
+ Prompt once whether to proceed with the command, if more than three
+ files are named or if a recursive removal is requested. Ignore any
+ previous `--force' (`-f') option. Equivalent to
+ `--interactive=once'.
+
+`--interactive [=WHEN]'
+ Specify when to issue an interactive prompt. WHEN may be omitted,
+ or one of:
+ * never - Do not prompt at all.
+
+ * once - Prompt once if more than three files are named or if a
+ recursive removal is requested. Equivalent to `-I'.
+
+ * always - Prompt for every file being removed. Equivalent to
+ `-i'.
+ Specifying `--interactive' and no WHEN is equivalent to
+ `--interactive=always'.
+
+`--one-file-system'
+ When removing a hierarchy recursively, skip any directory that is
+ on a file system different from that of the corresponding command
+ line argument.
+
+ This option is useful when removing a build "chroot" hierarchy,
+ which normally contains no valuable data. However, it is not
+ uncommon to bind-mount `/home' into such a hierarchy, to make it
+ easier to use one's start-up file. The catch is that it's easy to
+ forget to unmount `/home'. Then, when you use `rm -rf' to remove
+ your normally throw-away chroot, that command will remove
+ everything under `/home', too. Use the `--one-file-system'
+ option, and it will warn about and skip directories on other file
+ systems. Of course, this will not save your `/home' if it and your
+ chroot happen to be on the same file system.
+
+`--preserve-root'
+ Fail upon any attempt to remove the root directory, `/', when used
+ with the `--recursive' option. This is the default behavior.
+ *Note Treating / specially::.
+
+`--no-preserve-root'
+ Do not treat `/' specially when removing recursively. This option
+ is not recommended unless you really want to remove all the files
+ on your computer. *Note Treating / specially::.
+
+`-r'
+`-R'
+`--recursive'
+ Remove the listed directories and their contents recursively.
+
+`-v'
+`--verbose'
+ Print the name of each file before removing it.
+
+
+ One common question is how to remove files whose names begin with a
+`-'. GNU `rm', like every program that uses the `getopt' function to
+parse its arguments, lets you use the `--' option to indicate that all
+following arguments are non-options. To remove a file called `-f' in
+the current directory, you could type either:
+
+ rm -- -f
+
+or:
+
+ rm ./-f
+
+ The Unix `rm' program's use of a single `-' for this purpose
+predates the development of the getopt standard syntax.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: shred invocation, Prev: rm invocation, Up: Basic operations
+
+11.6 `shred': Remove files more securely
+========================================
+
+`shred' overwrites devices or files, to help prevent even very
+expensive hardware from recovering the data.
+
+ Ordinarily when you remove a file (*note rm invocation::), the data
+is not actually destroyed. Only the index listing where the file is
+stored is destroyed, and the storage is made available for reuse.
+There are undelete utilities that will attempt to reconstruct the index
+and can bring the file back if the parts were not reused.
+
+ On a busy system with a nearly-full drive, space can get reused in a
+few seconds. But there is no way to know for sure. If you have
+sensitive data, you may want to be sure that recovery is not possible
+by actually overwriting the file with non-sensitive data.
+
+ However, even after doing that, it is possible to take the disk back
+to a laboratory and use a lot of sensitive (and expensive) equipment to
+look for the faint "echoes" of the original data underneath the
+overwritten data. If the data has only been overwritten once, it's not
+even that hard.
+
+ The best way to remove something irretrievably is to destroy the
+media it's on with acid, melt it down, or the like. For cheap
+removable media like floppy disks, this is the preferred method.
+However, hard drives are expensive and hard to melt, so the `shred'
+utility tries to achieve a similar effect non-destructively.
+
+ This uses many overwrite passes, with the data patterns chosen to
+maximize the damage they do to the old data. While this will work on
+floppies, the patterns are designed for best effect on hard drives.
+For more details, see the source code and Peter Gutmann's paper `Secure
+Deletion of Data from Magnetic and Solid-State Memory'
+(http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html), from the
+proceedings of the Sixth USENIX Security Symposium (San Jose,
+California, July 22-25, 1996).
+
+ *Please note* that `shred' relies on a very important assumption:
+that the file system overwrites data in place. This is the traditional
+way to do things, but many modern file system designs do not satisfy
+this assumption. Exceptions include:
+
+ * Log-structured or journaled file systems, such as those supplied
+ with AIX and Solaris, and JFS, ReiserFS, XFS, Ext3 (in
+ `data=journal' mode), BFS, NTFS, etc. when they are configured to
+ journal _data_.
+
+ * File systems that write redundant data and carry on even if some
+ writes fail, such as RAID-based file systems.
+
+ * File systems that make snapshots, such as Network Appliance's NFS
+ server.
+
+ * File systems that cache in temporary locations, such as NFS
+ version 3 clients.
+
+ * Compressed file systems.
+
+ In the particular case of ext3 file systems, the above disclaimer
+applies (and `shred' is thus of limited effectiveness) only in
+`data=journal' mode, which journals file data in addition to just
+metadata. In both the `data=ordered' (default) and `data=writeback'
+modes, `shred' works as usual. Ext3 journaling modes can be changed by
+adding the `data=something' option to the mount options for a
+particular file system in the `/etc/fstab' file, as documented in the
+mount man page (man mount).
+
+ If you are not sure how your file system operates, then you should
+assume that it does not overwrite data in place, which means that shred
+cannot reliably operate on regular files in your file system.
+
+ Generally speaking, it is more reliable to shred a device than a
+file, since this bypasses the problem of file system design mentioned
+above. However, even shredding devices is not always completely
+reliable. For example, most disks map out bad sectors invisibly to the
+application; if the bad sectors contain sensitive data, `shred' won't
+be able to destroy it.
+
+ `shred' makes no attempt to detect or report this problem, just as
+it makes no attempt to do anything about backups. However, since it is
+more reliable to shred devices than files, `shred' by default does not
+truncate or remove the output file. This default is more suitable for
+devices, which typically cannot be truncated and should not be removed.
+
+ Finally, consider the risk of backups and mirrors. File system
+backups and remote mirrors may contain copies of the file that cannot
+be removed, and that will allow a shredded file to be recovered later.
+So if you keep any data you may later want to destroy using `shred', be
+sure that it is not backed up or mirrored.
+
+ shred [OPTION]... FILE[...]
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-f'
+`--force'
+ Override file permissions if necessary to allow overwriting.
+
+`-NUMBER'
+`-n NUMBER'
+`--iterations=NUMBER'
+ By default, `shred' uses 25 passes of overwrite. This is enough
+ for all of the useful overwrite patterns to be used at least once.
+ You can reduce this to save time, or increase it if you have a lot
+ of time to waste.
+
+`--random-source=FILE'
+ Use FILE as a source of random data used to overwrite and to
+ choose pass ordering. *Note Random sources::.
+
+`-s BYTES'
+`--size=BYTES'
+ Shred the first BYTES bytes of the file. The default is to shred
+ the whole file. BYTES can be followed by a size specification like
+ `K', `M', or `G' to specify a multiple. *Note Block size::.
+
+`-u'
+`--remove'
+ After shredding a file, truncate it (if possible) and then remove
+ it. If a file has multiple links, only the named links will be
+ removed.
+
+`-v'
+`--verbose'
+ Display status updates as sterilization proceeds.
+
+`-x'
+`--exact'
+ By default, `shred' rounds the size of a regular file up to the
+ next multiple of the file system block size to fully erase the
+ last block of the file. Use `--exact' to suppress that behavior.
+ Thus, by default if you shred a 10-byte regular file on a system
+ with 512-byte blocks, the resulting file will be 512 bytes long.
+ With this option, shred does not increase the apparent size of the
+ file.
+
+`-z'
+`--zero'
+ Normally, the last pass that `shred' writes is made up of random
+ data. If this would be conspicuous on your hard drive (for
+ example, because it looks like encrypted data), or you just think
+ it's tidier, the `--zero' option adds an additional overwrite pass
+ with all zero bits. This is in addition to the number of passes
+ specified by the `--iterations' option.
+
+
+ You might use the following command to erase all trace of the file
+system you'd created on the floppy disk in your first drive. That
+command takes about 20 minutes to erase a "1.44MB" (actually 1440 KiB)
+floppy.
+
+ shred --verbose /dev/fd0
+
+ Similarly, to erase all data on a selected partition of your hard
+disk, you could give a command like this:
+
+ shred --verbose /dev/sda5
+
+ A FILE of `-' denotes standard output. The intended use of this is
+to shred a removed temporary file. For example:
+
+ i=`tempfile -m 0600`
+ exec 3<>"$i"
+ rm -- "$i"
+ echo "Hello, world" >&3
+ shred - >&3
+ exec 3>-
+
+ However, the command `shred - >file' does not shred the contents of
+FILE, since the shell truncates FILE before invoking `shred'. Use the
+command `shred file' or (if using a Bourne-compatible shell) the
+command `shred - 1<>file' instead.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: Special file types, Next: Changing file attributes, Prev: Basic operations, Up: Top
+
+12 Special file types
+*********************
+
+This chapter describes commands which create special types of files (and
+`rmdir', which removes directories, one special file type).
+
+ Although Unix-like operating systems have markedly fewer special file
+types than others, not _everything_ can be treated only as the
+undifferentiated byte stream of "normal files". For example, when a
+file is created or removed, the system must record this information,
+which it does in a "directory"--a special type of file. Although you
+can read directories as normal files, if you're curious, in order for
+the system to do its job it must impose a structure, a certain order,
+on the bytes of the file. Thus it is a "special" type of file.
+
+ Besides directories, other special file types include named pipes
+(FIFOs), symbolic links, sockets, and so-called "special files".
+
+* Menu:
+
+* link invocation:: Make a hard link via the link syscall
+* ln invocation:: Make links between files.
+* mkdir invocation:: Make directories.
+* mkfifo invocation:: Make FIFOs (named pipes).
+* mknod invocation:: Make block or character special files.
+* readlink invocation:: Print the referent of a symbolic link.
+* rmdir invocation:: Remove empty directories.
+* unlink invocation:: Remove files via the unlink syscall
+
+
+File: coreutils.info, Node: link invocation, Next: ln invocation, Up: Special file types
+
+12.1 `link': Make a hard link via the link syscall
+==================================================
+
+`link' creates a single hard link at a time. It is a minimalist
+interface to the system-provided `link' function. *Note Hard Links:
+(libc)Hard Links. It avoids the bells and whistles of the more
+commonly-used `ln' command (*note ln invocation::). Synopsis:
+
+ link FILENAME LINKNAME
+
+ FILENAME must specify an existing file, and LINKNAME must specify a
+nonexistent entry in an existing directory. `link' simply calls `link
+(FILENAME, LINKNAME)' to create the link.
+
+ On a GNU system, this command acts like `ln --directory
+--no-target-directory FILENAME LINKNAME'. However, the `--directory'
+and `--no-target-directory' options are not specified by POSIX, and the
+`link' command is more portable in practice.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: ln invocation, Next: mkdir invocation, Prev: link invocation, Up: Special file types
+
+12.2 `ln': Make links between files
+===================================
+
+`ln' makes links between files. By default, it makes hard links; with
+the `-s' option, it makes symbolic (or "soft") links. Synopses:
+
+ ln [OPTION]... [-T] TARGET LINKNAME
+ ln [OPTION]... TARGET
+ ln [OPTION]... TARGET... DIRECTORY
+ ln [OPTION]... -t DIRECTORY TARGET...
+
+ * If two file names are given, `ln' creates a link to the first file
+ from the second.
+
+ * If one TARGET is given, `ln' creates a link to that file in the
+ current directory.
+
+ * If the `--target-directory' (`-t') option is given, or failing
+ that if the last file is a directory and the
+ `--no-target-directory' (`-T') option is not given, `ln' creates a
+ link to each TARGET file in the specified directory, using the
+ TARGETs' names.
+
+
+ Normally `ln' does not remove existing files. Use the `--force'
+(`-f') option to remove them unconditionally, the `--interactive'
+(`-i') option to remove them conditionally, and the `--backup' (`-b')
+option to rename them.
+
+ A "hard link" is another name for an existing file; the link and the
+original are indistinguishable. Technically speaking, they share the
+same inode, and the inode contains all the information about a
+file--indeed, it is not incorrect to say that the inode _is_ the file.
+On all existing implementations, you cannot make a hard link to a
+directory, and hard links cannot cross file system boundaries. (These
+restrictions are not mandated by POSIX, however.)
+
+ "Symbolic links" ("symlinks" for short), on the other hand, are a
+special file type (which not all kernels support: System V release 3
+(and older) systems lack symlinks) in which the link file actually
+refers to a different file, by name. When most operations (opening,
+reading, writing, and so on) are passed the symbolic link file, the
+kernel automatically "dereferences" the link and operates on the target
+of the link. But some operations (e.g., removing) work on the link
+file itself, rather than on its target. *Note Symbolic Links:
+(libc)Symbolic Links.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-b'
+`--backup[=METHOD]'
+ *Note Backup options::. Make a backup of each file that would
+ otherwise be overwritten or removed.
+
+`-d'
+`-F'
+`--directory'
+ Allow users with appropriate privileges to attempt to make hard
+ links to directories. However, note that this will probably fail
+ due to system restrictions, even for the super-user.
+
+`-f'
+`--force'
+ Remove existing destination files.
+
+`-i'
+`--interactive'
+ Prompt whether to remove existing destination files.
+
+`-n'
+`--no-dereference'
+ Do not treat the last operand specially when it is a symbolic link
+ to a directory. Instead, treat it as if it were a normal file.
+
+ When the destination is an actual directory (not a symlink to one),
+ there is no ambiguity. The link is created in that directory.
+ But when the specified destination is a symlink to a directory,
+ there are two ways to treat the user's request. `ln' can treat
+ the destination just as it would a normal directory and create the
+ link in it. On the other hand, the destination can be viewed as a
+ non-directory--as the symlink itself. In that case, `ln' must
+ delete or backup that symlink before creating the new link. The
+ default is to treat a destination that is a symlink to a directory
+ just like a directory.
+
+ This option is weaker than the `--no-target-directory' (`-T')
+ option, so it has no effect if both options are given.
+
+`-s'
+`--symbolic'
+ Make symbolic links instead of hard links. This option merely
+ produces an error message on systems that do not support symbolic
+ links.
+
+`-S SUFFIX'
+`--suffix=SUFFIX'
+ Append SUFFIX to each backup file made with `-b'. *Note Backup
+ options::.
+
+`-t DIRECTORY'
+`--target-directory=DIRECTORY'
+ Specify the destination DIRECTORY. *Note Target directory::.
+
+`-T'
+`--no-target-directory'
+ Do not treat the last operand specially when it is a directory or a
+ symbolic link to a directory. *Note Target directory::.
+
+`-v'
+`--verbose'
+ Print the name of each file after linking it successfully.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+ Examples:
+
+ Bad Example:
+
+ # Create link ../a pointing to a in that directory.
+ # Not really useful because it points to itself.
+ ln -s a ..
+
+ Better Example:
+
+ # Change to the target before creating symlinks to avoid being confused.
+ cd ..
+ ln -s adir/a .
+
+ Bad Example:
+
+ # Hard coded file names don't move well.
+ ln -s $(pwd)/a /some/dir/
+
+ Better Example:
+
+ # Relative file names survive directory moves and also
+ # work across networked file systems.
+ ln -s afile anotherfile
+ ln -s ../adir/afile yetanotherfile
+
+
+File: coreutils.info, Node: mkdir invocation, Next: mkfifo invocation, Prev: ln invocation, Up: Special file types
+
+12.3 `mkdir': Make directories
+==============================
+
+`mkdir' creates directories with the specified names. Synopsis:
+
+ mkdir [OPTION]... NAME...
+
+ `mkdir' creates each directory NAME in the order given. It reports
+an error if NAME already exists, unless the `-p' option is given and
+NAME is a directory.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-m MODE'
+`--mode=MODE'
+ Set the file permission bits of created directories to MODE, which
+ uses the same syntax as in `chmod' and uses `a=rwx' (read, write
+ and execute allowed for everyone) for the point of the departure.
+ *Note File permissions::.
+
+ Normally the directory has the desired file mode bits at the
+ moment it is created. As a GNU extension, MODE may also mention
+ special mode bits, but in this case there may be a temporary window
+ during which the directory exists but its special mode bits are
+ incorrect. *Note Directory Setuid and Setgid::, for how the
+ set-user-ID and set-group-ID bits of directories are inherited
+ unless overridden in this way.
+
+`-p'
+`--parents'
+ Make any missing parent directories for each argument, setting
+ their file permission bits to the umask modified by `u+wx'. Ignore
+ existing parent directories, and do not change their file
+ permission bits.
+
+ To set the file permission bits of any newly-created parent
+ directories to a value that includes `u+wx', you can set the umask
+ before invoking `mkdir'. For example, if the shell command
+ `(umask u=rwx,go=rx; mkdir -p P/Q)' creates the parent `P' it sets
+ the parent's permission bits to `u=rwx,go=rx'. To set a parent's
+ special mode bits as well, you can invoke `chmod' after `mkdir'.
+ *Note Directory Setuid and Setgid::, for how the set-user-ID and
+ set-group-ID bits of newly-created parent directories are
+ inherited.
+
+`-v'
+`--verbose'
+ Print a message for each created directory. This is most useful
+ with `--parents'.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: mkfifo invocation, Next: mknod invocation, Prev: mkdir invocation, Up: Special file types
+
+12.4 `mkfifo': Make FIFOs (named pipes)
+=======================================
+
+`mkfifo' creates FIFOs (also called "named pipes") with the specified
+names. Synopsis:
+
+ mkfifo [OPTION] NAME...
+
+ A "FIFO" is a special file type that permits independent processes
+to communicate. One process opens the FIFO file for writing, and
+another for reading, after which data can flow as with the usual
+anonymous pipe in shells or elsewhere.
+
+ The program accepts the following option. Also see *Note Common
+options::.
+
+`-m MODE'
+`--mode=MODE'
+ Set the mode of created FIFOs to MODE, which is symbolic as in
+ `chmod' and uses `a=rw' (read and write allowed for everyone) for
+ the point of departure. MODE should specify only file permission
+ bits. *Note File permissions::.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: mknod invocation, Next: readlink invocation, Prev: mkfifo invocation, Up: Special file types
+
+12.5 `mknod': Make block or character special files
+===================================================
+
+`mknod' creates a FIFO, character special file, or block special file
+with the specified name. Synopsis:
+
+ mknod [OPTION]... NAME TYPE [MAJOR MINOR]
+
+ Unlike the phrase "special file type" above, the term "special file"
+has a technical meaning on Unix: something that can generate or receive
+data. Usually this corresponds to a physical piece of hardware, e.g.,
+a printer or a disk. (These files are typically created at
+system-configuration time.) The `mknod' command is what creates files
+of this type. Such devices can be read either a character at a time or
+a "block" (many characters) at a time, hence we say there are "block
+special" files and "character special" files.
+
+ The arguments after NAME specify the type of file to make:
+
+`p'
+ for a FIFO
+
+`b'
+ for a block special file
+
+`c'
+ for a character special file
+
+
+ When making a block or character special file, the major and minor
+device numbers must be given after the file type. If a major or minor
+device number begins with `0x' or `0X', it is interpreted as
+hexadecimal; otherwise, if it begins with `0', as octal; otherwise, as
+decimal.
+
+ The program accepts the following option. Also see *Note Common
+options::.
+
+`-m MODE'
+`--mode=MODE'
+ Set the mode of created files to MODE, which is symbolic as in
+ `chmod' and uses `a=rw' as the point of departure. MODE should
+ specify only file permission bits. *Note File permissions::.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: readlink invocation, Next: rmdir invocation, Prev: mknod invocation, Up: Special file types
+
+12.6 `readlink': Print the referent of a symbolic link
+======================================================
+
+`readlink' may work in one of two supported modes:
+
+`Readlink mode'
+ `readlink' outputs the value of the given symbolic link. If
+ `readlink' is invoked with an argument other than the name of a
+ symbolic link, it produces no output and exits with a nonzero exit
+ code.
+
+`Canonicalize mode'
+ `readlink' outputs the absolute name of the given file which
+ contains no `.', `..' components nor any repeated separators (`/')
+ or symbolic links.
+
+
+ readlink [OPTION] FILE
+
+ By default, `readlink' operates in readlink mode.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-f'
+`--canonicalize'
+ Activate canonicalize mode. If any component of the file name
+ except the last one is missing or unavailable, `readlink' produces
+ no output and exits with a nonzero exit code.
+
+`-e'
+`--canonicalize-existing'
+ Activate canonicalize mode. If any component is missing or
+ unavailable, `readlink' produces no output and exits with a
+ nonzero exit code.
+
+`-m'
+`--canonicalize-missing'
+ Activate canonicalize mode. If any component is missing or
+ unavailable, `readlink' treats it as a directory.
+
+`-n'
+`--no-newline'
+ Do not output the trailing newline.
+
+`-s'
+`-q'
+`--silent'
+`--quiet'
+ Suppress most error messages.
+
+`-v'
+`--verbose'
+ Report error messages.
+
+
+ The `readlink' utility first appeared in OpenBSD 2.1.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: rmdir invocation, Next: unlink invocation, Prev: readlink invocation, Up: Special file types
+
+12.7 `rmdir': Remove empty directories
+======================================
+
+`rmdir' removes empty directories. Synopsis:
+
+ rmdir [OPTION]... DIRECTORY...
+
+ If any DIRECTORY argument does not refer to an existing empty
+directory, it is an error.
+
+ The program accepts the following option. Also see *Note Common
+options::.
+
+`--ignore-fail-on-non-empty'
+ Ignore each failure to remove a directory that is solely because
+ the directory is non-empty.
+
+`-p'
+`--parents'
+ Remove DIRECTORY, then try to remove each component of DIRECTORY.
+ So, for example, `rmdir -p a/b/c' is similar to `rmdir a/b/c a/b
+ a'. As such, it fails if any of those directories turns out not
+ to be empty. Use the `--ignore-fail-on-non-empty' option to make
+ it so such a failure does not evoke a diagnostic and does not
+ cause `rmdir' to exit unsuccessfully.
+
+`-v'
+`--verbose'
+ Give a diagnostic for each successful removal. DIRECTORY is
+ removed.
+
+
+ *Note rm invocation::, for how to remove non-empty directories
+(recursively).
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: unlink invocation, Prev: rmdir invocation, Up: Special file types
+
+12.8 `unlink': Remove files via the unlink syscall
+==================================================
+
+`unlink' deletes a single specified file name. It is a minimalist
+interface to the system-provided `unlink' function. *Note Deleting
+Files: (libc)Deleting Files. Synopsis: It avoids the bells and
+whistles of the more commonly-used `rm' command (*note rm invocation::).
+
+ unlink FILENAME
+
+ On some systems `unlink' can be used to delete the name of a
+directory. On others, it can be used that way only by a privileged
+user. In the GNU system `unlink' can never delete the name of a
+directory.
+
+ The `unlink' command honors the `--help' and `--version' options.
+To remove a file whose name begins with `-', prefix the name with `./',
+e.g., `unlink ./--help'.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: Changing file attributes, Next: Disk usage, Prev: Special file types, Up: Top
+
+13 Changing file attributes
+***************************
+
+A file is not merely its contents, a name, and a file type (*note
+Special file types::). A file also has an owner (a user ID), a group
+(a group ID), permissions (what the owner can do with the file, what
+people in the group can do, and what everyone else can do), various
+timestamps, and other information. Collectively, we call these a file's
+"attributes".
+
+ These commands change file attributes.
+
+* Menu:
+
+* chgrp invocation:: Change file groups.
+* chmod invocation:: Change access permissions.
+* chown invocation:: Change file owners and groups.
+* touch invocation:: Change file timestamps.
+
+
+File: coreutils.info, Node: chown invocation, Next: touch invocation, Prev: chmod invocation, Up: Changing file attributes
+
+13.1 `chown': Change file owner and group
+=========================================
+
+`chown' changes the user and/or group ownership of each given FILE to
+NEW-OWNER or to the user and group of an existing reference file.
+Synopsis:
+
+ chown [OPTION]... {NEW-OWNER | --reference=REF_FILE} FILE...
+
+ If used, NEW-OWNER specifies the new owner and/or group as follows
+(with no embedded white space):
+
+ [OWNER] [ : [GROUP] ]
+
+ Specifically:
+
+OWNER
+ If only an OWNER (a user name or numeric user ID) is given, that
+ user is made the owner of each given file, and the files' group is
+ not changed.
+
+OWNER`:'GROUP
+ If the OWNER is followed by a colon and a GROUP (a group name or
+ numeric group ID), with no spaces between them, the group
+ ownership of the files is changed as well (to GROUP).
+
+OWNER`:'
+ If a colon but no group name follows OWNER, that user is made the
+ owner of the files and the group of the files is changed to
+ OWNER's login group.
+
+`:'GROUP
+ If the colon and following GROUP are given, but the owner is
+ omitted, only the group of the files is changed; in this case,
+ `chown' performs the same function as `chgrp'.
+
+`:'
+ If only a colon is given, or if NEW-OWNER is empty, neither the
+ owner nor the group is changed.
+
+
+ If OWNER or GROUP is intended to represent a numeric user or group
+ID, then you may specify it with a leading `+'. *Note Disambiguating
+names and IDs::.
+
+ Some older scripts may still use `.' in place of the `:' separator.
+POSIX 1003.1-2001 (*note Standards conformance::) does not require
+support for that, but for backward compatibility GNU `chown' supports
+`.' so long as no ambiguity results. New scripts should avoid the use
+of `.' because it is not portable, and because it has undesirable
+results if the entire OWNER`.'GROUP happens to identify a user whose
+name contains `.'.
+
+ The `chown' command sometimes clears the set-user-ID or set-group-ID
+permission bits. This behavior depends on the policy and functionality
+of the underlying `chown' system call, which may make system-dependent
+file mode modifications outside the control of the `chown' command.
+For example, the `chown' command might not affect those bits when
+invoked by a user with appropriate privileges, or when the bits signify
+some function other than executable permission (e.g., mandatory
+locking). When in doubt, check the underlying system behavior.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-c'
+`--changes'
+ Verbosely describe the action for each FILE whose ownership
+ actually changes.
+
+`-f'
+`--silent'
+`--quiet'
+ Do not print error messages about files whose ownership cannot be
+ changed.
+
+`--from=OLD-OWNER'
+ Change a FILE's ownership only if it has current attributes
+ specified by OLD-OWNER. OLD-OWNER has the same form as NEW-OWNER
+ described above. This option is useful primarily from a security
+ standpoint in that it narrows considerably the window of potential
+ abuse. For example, to reflect a user ID numbering change for one
+ user's files without an option like this, `root' might run
+
+ find / -owner OLDUSER -print0 | xargs -0 chown -h NEWUSER
+
+ But that is dangerous because the interval between when the `find'
+ tests the existing file's owner and when the `chown' is actually
+ run may be quite large. One way to narrow the gap would be to
+ invoke chown for each file as it is found:
+
+ find / -owner OLDUSER -exec chown -h NEWUSER {} \;
+
+ But that is very slow if there are many affected files. With this
+ option, it is safer (the gap is narrower still) though still not
+ perfect:
+
+ chown -h -R --from=OLDUSER NEWUSER /
+
+`--dereference'
+ Do not act on symbolic links themselves but rather on what they
+ point to. This is the default.
+
+`-h'
+`--no-dereference'
+ Act on symbolic links themselves instead of what they point to.
+ This mode relies on the `lchown' system call. On systems that do
+ not provide the `lchown' system call, `chown' fails when a file
+ specified on the command line is a symbolic link. By default, no
+ diagnostic is issued for symbolic links encountered during a
+ recursive traversal, but see `--verbose'.
+
+`--preserve-root'
+ Fail upon any attempt to recursively change the root directory,
+ `/'. Without `--recursive', this option has no effect. *Note
+ Treating / specially::.
+
+`--no-preserve-root'
+ Cancel the effect of any preceding `--preserve-root' option.
+ *Note Treating / specially::.
+
+`--reference=REF_FILE'
+ Change the user and group of each FILE to be the same as those of
+ REF_FILE. If REF_FILE is a symbolic link, do not use the user and
+ group of the symbolic link, but rather those of the file it refers
+ to.
+
+`-v'
+`--verbose'
+ Output a diagnostic for every file processed. If a symbolic link
+ is encountered during a recursive traversal on a system without
+ the `lchown' system call, and `--no-dereference' is in effect,
+ then issue a diagnostic saying neither the symbolic link nor its
+ referent is being changed.
+
+`-R'
+`--recursive'
+ Recursively change ownership of directories and their contents.
+
+`-H'
+ If `--recursive' (`-R') is specified and a command line argument
+ is a symbolic link to a directory, traverse it. *Note Traversing
+ symlinks::.
+
+`-L'
+ In a recursive traversal, traverse every symbolic link to a
+ directory that is encountered. *Note Traversing symlinks::.
+
+`-P'
+ Do not traverse any symbolic links. This is the default if none
+ of `-H', `-L', or `-P' is specified. *Note Traversing symlinks::.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+ Examples:
+
+ # Change the owner of /u to "root".
+ chown root /u
+
+ # Likewise, but also change its group to "staff".
+ chown root:staff /u
+
+ # Change the owner of /u and subfiles to "root".
+ chown -hR root /u
+
+
+File: coreutils.info, Node: chgrp invocation, Next: chmod invocation, Up: Changing file attributes
+
+13.2 `chgrp': Change group ownership
+====================================
+
+`chgrp' changes the group ownership of each given FILE to GROUP (which
+can be either a group name or a numeric group ID) or to the group of an
+existing reference file. Synopsis:
+
+ chgrp [OPTION]... {GROUP | --reference=REF_FILE} FILE...
+
+ If GROUP is intended to represent a numeric group ID, then you may
+specify it with a leading `+'. *Note Disambiguating names and IDs::.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-c'
+`--changes'
+ Verbosely describe the action for each FILE whose group actually
+ changes.
+
+`-f'
+`--silent'
+`--quiet'
+ Do not print error messages about files whose group cannot be
+ changed.
+
+`--dereference'
+ Do not act on symbolic links themselves but rather on what they
+ point to. This is the default.
+
+`-h'
+`--no-dereference'
+ Act on symbolic links themselves instead of what they point to.
+ This mode relies on the `lchown' system call. On systems that do
+ not provide the `lchown' system call, `chgrp' fails when a file
+ specified on the command line is a symbolic link. By default, no
+ diagnostic is issued for symbolic links encountered during a
+ recursive traversal, but see `--verbose'.
+
+`--preserve-root'
+ Fail upon any attempt to recursively change the root directory,
+ `/'. Without `--recursive', this option has no effect. *Note
+ Treating / specially::.
+
+`--no-preserve-root'
+ Cancel the effect of any preceding `--preserve-root' option.
+ *Note Treating / specially::.
+
+`--reference=REF_FILE'
+ Change the group of each FILE to be the same as that of REF_FILE.
+ If REF_FILE is a symbolic link, do not use the group of the
+ symbolic link, but rather that of the file it refers to.
+
+`-v'
+`--verbose'
+ Output a diagnostic for every file processed. If a symbolic link
+ is encountered during a recursive traversal on a system without
+ the `lchown' system call, and `--no-dereference' is in effect,
+ then issue a diagnostic saying neither the symbolic link nor its
+ referent is being changed.
+
+`-R'
+`--recursive'
+ Recursively change the group ownership of directories and their
+ contents.
+
+`-H'
+ If `--recursive' (`-R') is specified and a command line argument
+ is a symbolic link to a directory, traverse it. *Note Traversing
+ symlinks::.
+
+`-L'
+ In a recursive traversal, traverse every symbolic link to a
+ directory that is encountered. *Note Traversing symlinks::.
+
+`-P'
+ Do not traverse any symbolic links. This is the default if none
+ of `-H', `-L', or `-P' is specified. *Note Traversing symlinks::.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+ Examples:
+
+ # Change the group of /u to "staff".
+ chgrp staff /u
+
+ # Change the group of /u and subfiles to "staff".
+ chgrp -hR staff /u
+
+
+File: coreutils.info, Node: chmod invocation, Next: chown invocation, Prev: chgrp invocation, Up: Changing file attributes
+
+13.3 `chmod': Change access permissions
+=======================================
+
+`chmod' changes the access permissions of the named files. Synopsis:
+
+ chmod [OPTION]... {MODE | --reference=REF_FILE} FILE...
+
+ `chmod' never changes the permissions of symbolic links, since the
+`chmod' system call cannot change their permissions. This is not a
+problem since the permissions of symbolic links are never used.
+However, for each symbolic link listed on the command line, `chmod'
+changes the permissions of the pointed-to file. In contrast, `chmod'
+ignores symbolic links encountered during recursive directory
+traversals.
+
+ A successful use of `chmod' clears the set-group-ID bit of a regular
+file if the file's group ID does not match the user's effective group
+ID or one of the user's supplementary group IDs, unless the user has
+appropriate privileges. Additional restrictions may cause the
+set-user-ID and set-group-ID bits of MODE or REF_FILE to be ignored.
+This behavior depends on the policy and functionality of the underlying
+`chmod' system call. When in doubt, check the underlying system
+behavior.
+
+ If used, MODE specifies the new file mode bits. For details, see
+the section on *Note File permissions::. If you really want MODE to
+have a leading `-', you should use `--' first, e.g., `chmod -- -w
+file'. Typically, though, `chmod a-w file' is preferable, and `chmod -w
+file' (without the `--') complains if it behaves differently from what
+`chmod a-w file' would do.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-c'
+`--changes'
+ Verbosely describe the action for each FILE whose permissions
+ actually changes.
+
+`-f'
+`--silent'
+`--quiet'
+ Do not print error messages about files whose permissions cannot be
+ changed.
+
+`--preserve-root'
+ Fail upon any attempt to recursively change the root directory,
+ `/'. Without `--recursive', this option has no effect. *Note
+ Treating / specially::.
+
+`--no-preserve-root'
+ Cancel the effect of any preceding `--preserve-root' option.
+ *Note Treating / specially::.
+
+`-v'
+`--verbose'
+ Verbosely describe the action or non-action taken for every FILE.
+
+`--reference=REF_FILE'
+ Change the mode of each FILE to be the same as that of REF_FILE.
+ *Note File permissions::. If REF_FILE is a symbolic link, do not
+ use the mode of the symbolic link, but rather that of the file it
+ refers to.
+
+`-R'
+`--recursive'
+ Recursively change permissions of directories and their contents.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: touch invocation, Prev: chown invocation, Up: Changing file attributes
+
+13.4 `touch': Change file timestamps
+====================================
+
+`touch' changes the access and/or modification times of the specified
+files. Synopsis:
+
+ touch [OPTION]... FILE...
+
+ Any FILE that does not exist is created empty.
+
+ A FILE of `-' causes `touch' to change the times of the file
+associated with standard output.
+
+ If changing both the access and modification times to the current
+time, `touch' can change the timestamps for files that the user running
+it does not own but has write permission for. Otherwise, the user must
+own the files.
+
+ Although `touch' provides options for changing two of the times--the
+times of last access and modification--of a file, there is actually a
+third one as well: the inode change time. This is often referred to as
+a file's `ctime'. The inode change time represents the time when the
+file's meta-information last changed. One common example of this is
+when the permissions of a file change. Changing the permissions
+doesn't access the file, so the atime doesn't change, nor does it
+modify the file, so the mtime doesn't change. Yet, something about the
+file itself has changed, and this must be noted somewhere. This is the
+job of the ctime field. This is necessary, so that, for example, a
+backup program can make a fresh copy of the file, including the new
+permissions value. Another operation that modifies a file's ctime
+without affecting the others is renaming. In any case, it is not
+possible, in normal operations, for a user to change the ctime field to
+a user-specified value.
+
+ Time stamps assume the time zone rules specified by the `TZ'
+environment variable, or by the system default rules if `TZ' is not
+set. *Note Specifying the Time Zone with `TZ': (libc)TZ Variable. You
+can avoid ambiguities during daylight saving transitions by using UTC
+time stamps.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-a'
+`--time=atime'
+`--time=access'
+`--time=use'
+ Change the access time only.
+
+`-c'
+`--no-create'
+ Do not create files that do not exist.
+
+`-d'
+`--date=TIME'
+ Use TIME instead of the current time. It can contain month names,
+ time zones, `am' and `pm', `yesterday', etc. For example,
+ `--date="2004-02-27 14:19:13.489392193 +0530"' specifies the
+ instant of time that is 489,392,193 nanoseconds after February 27,
+ 2004 at 2:19:13 PM in a time zone that is 5 hours and 30 minutes
+ east of UTC. *Note Date input formats::. File systems that do
+ not support high-resolution time stamps silently ignore any excess
+ precision here.
+
+`-f'
+ Ignored; for compatibility with BSD versions of `touch'.
+
+`-m'
+`--time=mtime'
+`--time=modify'
+ Change the modification time only.
+
+`-r FILE'
+`--reference=FILE'
+ Use the times of the reference FILE instead of the current time.
+ If this option is combined with the `--date=TIME' (`-d TIME')
+ option, the reference FILE's time is the origin for any relative
+ TIMEs given, but is otherwise ignored. For example, `-r foo -d
+ '-5 seconds'' specifies a time stamp equal to five seconds before
+ the corresponding time stamp for `foo'.
+
+`-t [[CC]YY]MMDDHHMM[.SS]'
+ Use the argument (optional four-digit or two-digit years, months,
+ days, hours, minutes, optional seconds) instead of the current
+ time. If the year is specified with only two digits, then CC is
+ 20 for years in the range 0 ... 68, and 19 for years in 69 ... 99.
+ If no digits of the year are specified, the argument is
+ interpreted as a date in the current year.
+
+
+ On older systems, `touch' supports an obsolete syntax, as follows.
+If no timestamp is given with any of the `-d', `-r', or `-t' options,
+and if there are two or more FILEs and the first FILE is of the form
+`MMDDHHMM[YY]' and this would be a valid argument to the `-t' option
+(if the YY, if any, were moved to the front), and if the represented
+year is in the range 1969-1999, that argument is interpreted as the time
+for the other files instead of as a file name. This obsolete behavior
+can be enabled or disabled with the `_POSIX2_VERSION' environment
+variable (*note Standards conformance::), but portable scripts should
+avoid commands whose behavior depends on this variable. For example,
+use `touch ./12312359 main.c' or `touch -t 12312359 main.c' rather than
+the ambiguous `touch 12312359 main.c'.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: Disk usage, Next: Printing text, Prev: Changing file attributes, Up: Top
+
+14 Disk usage
+*************
+
+No disk can hold an infinite amount of data. These commands report how
+much disk storage is in use or available, report other file and file
+status information, and write buffers to disk.
+
+* Menu:
+
+* df invocation:: Report file system disk space usage.
+* du invocation:: Estimate file space usage.
+* stat invocation:: Report file or file system status.
+* sync invocation:: Synchronize memory and disk.
+
+
+File: coreutils.info, Node: df invocation, Next: du invocation, Up: Disk usage
+
+14.1 `df': Report file system disk space usage
+==============================================
+
+`df' reports the amount of disk space used and available on file
+systems. Synopsis:
+
+ df [OPTION]... [FILE]...
+
+ With no arguments, `df' reports the space used and available on all
+currently mounted file systems (of all types). Otherwise, `df' reports
+on the file system containing each argument FILE.
+
+ Normally the disk space is printed in units of 1024 bytes, but this
+can be overridden (*note Block size::). Non-integer quantities are
+rounded up to the next higher unit.
+
+ If an argument FILE is a disk device file containing a mounted file
+system, `df' shows the space available on that file system rather than
+on the file system containing the device node (i.e., the root file
+system). GNU `df' does not attempt to determine the disk usage on
+unmounted file systems, because on most kinds of systems doing so
+requires extremely nonportable intimate knowledge of file system
+structures.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-a'
+`--all'
+ Include in the listing dummy file systems, which are omitted by
+ default. Such file systems are typically special-purpose
+ pseudo-file-systems, such as automounter entries.
+
+`-B SIZE'
+`--block-size=SIZE'
+ Scale sizes by SIZE before printing them (*note Block size::).
+ For example, `-BG' prints sizes in units of 1,073,741,824 bytes.
+
+`-h'
+`--human-readable'
+ Append a size letter to each size, such as `M' for mebibytes.
+ Powers of 1024 are used, not 1000; `M' stands for 1,048,576 bytes.
+ Use the `--si' option if you prefer powers of 1000.
+
+`-H'
+ Equivalent to `--si'.
+
+`-i'
+`--inodes'
+ List inode usage information instead of block usage. An inode
+ (short for index node) contains information about a file such as
+ its owner, permissions, timestamps, and location on the disk.
+
+`-k'
+ Print sizes in 1024-byte blocks, overriding the default block size
+ (*note Block size::). This option is equivalent to
+ `--block-size=1K'.
+
+`-l'
+`--local'
+ Limit the listing to local file systems. By default, remote file
+ systems are also listed.
+
+`--no-sync'
+ Do not invoke the `sync' system call before getting any usage data.
+ This may make `df' run significantly faster on systems with many
+ disks, but on some systems (notably SunOS) the results may be
+ slightly out of date. This is the default.
+
+`-P'
+`--portability'
+ Use the POSIX output format. This is like the default format
+ except for the following:
+
+ 1. The information about each file system is always printed on
+ exactly one line; a mount device is never put on a line by
+ itself. This means that if the mount device name is more
+ than 20 characters long (e.g., for some network mounts), the
+ columns are misaligned.
+
+ 2. The labels in the header output line are changed to conform
+ to POSIX.
+
+ 3. The default block size and output format are unaffected by the
+ `DF_BLOCK_SIZE', `BLOCK_SIZE' and `BLOCKSIZE' environment
+ variables. However, the default block size is still affected
+ by `POSIXLY_CORRECT': it is 512 if `POSIXLY_CORRECT' is set,
+ 1024 otherwise. *Note Block size::.
+
+`--si'
+ Append an SI-style abbreviation to each size, such as `M' for
+ megabytes. Powers of 1000 are used, not 1024; `M' stands for
+ 1,000,000 bytes. This option is equivalent to `--block-size=si'.
+ Use the `-h' or `--human-readable' option if you prefer powers of
+ 1024.
+
+`--sync'
+ Invoke the `sync' system call before getting any usage data. On
+ some systems (notably SunOS), doing this yields more up to date
+ results, but in general this option makes `df' much slower,
+ especially when there are many or very busy file systems.
+
+`-t FSTYPE'
+`--type=FSTYPE'
+ Limit the listing to file systems of type FSTYPE. Multiple file
+ system types can be specified by giving multiple `-t' options. By
+ default, nothing is omitted.
+
+`-T'
+`--print-type'
+ Print each file system's type. The types printed here are the
+ same ones you can include or exclude with `-t' and `-x'. The
+ particular types printed are whatever is supported by the system.
+ Here are some of the common names (this list is certainly not
+ exhaustive):
+
+ `nfs'
+ An NFS file system, i.e., one mounted over a network from
+ another machine. This is the one type name which seems to be
+ used uniformly by all systems.
+
+ `4.2, ufs, efs...'
+ A file system on a locally-mounted hard disk. (The system
+ might even support more than one type here; Linux does.)
+
+ `hsfs, cdfs'
+ A file system on a CD-ROM drive. HP-UX uses `cdfs', most
+ other systems use `hsfs' (`hs' for "High Sierra").
+
+ `pcfs'
+ An MS-DOS file system, usually on a diskette.
+
+
+`-x FSTYPE'
+`--exclude-type=FSTYPE'
+ Limit the listing to file systems not of type FSTYPE. Multiple
+ file system types can be eliminated by giving multiple `-x'
+ options. By default, no file system types are omitted.
+
+`-v'
+ Ignored; for compatibility with System V versions of `df'.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure. Failure includes the case where no output is
+generated, so you can inspect the exit status of a command like `df -t
+ext3 -t reiserfs DIR' to test whether DIR is on a file system of type
+`ext3' or `reiserfs'.
+
+
+File: coreutils.info, Node: du invocation, Next: stat invocation, Prev: df invocation, Up: Disk usage
+
+14.2 `du': Estimate file space usage
+====================================
+
+`du' reports the amount of disk space used by the specified files and
+for each subdirectory (of directory arguments). Synopsis:
+
+ du [OPTION]... [FILE]...
+
+ With no arguments, `du' reports the disk space for the current
+directory. Normally the disk space is printed in units of 1024 bytes,
+but this can be overridden (*note Block size::). Non-integer
+quantities are rounded up to the next higher unit.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-a'
+`--all'
+ Show counts for all files, not just directories.
+
+`--apparent-size'
+ Print apparent sizes, rather than disk usage. The apparent size
+ of a file is the number of bytes reported by `wc -c' on regular
+ files, or more generally, `ls -l --block-size=1' or `stat
+ --format=%s'. For example, a file containing the word `zoo' with
+ no newline would, of course, have an apparent size of 3. Such a
+ small file may require anywhere from 0 to 16 KiB or more of disk
+ space, depending on the type and configuration of the file system
+ on which the file resides. However, a sparse file created with
+ this command:
+
+ dd bs=1 seek=2GiB if=/dev/null of=big
+
+ has an apparent size of 2 GiB, yet on most modern systems, it
+ actually uses almost no disk space.
+
+`-b'
+`--bytes'
+ Equivalent to `--apparent-size --block-size=1'.
+
+`-B SIZE'
+`--block-size=SIZE'
+ Scale sizes by SIZE before printing them (*note Block size::).
+ For example, `-BG' prints sizes in units of 1,073,741,824 bytes.
+
+`-c'
+`--total'
+ Print a grand total of all arguments after all arguments have been
+ processed. This can be used to find out the total disk usage of a
+ given set of files or directories.
+
+`-D'
+`--dereference-args'
+ Dereference symbolic links that are command line arguments. Does
+ not affect other symbolic links. This is helpful for finding out
+ the disk usage of directories, such as `/usr/tmp', which are often
+ symbolic links.
+
+`--files0-from=FILE'
+ Rather than processing files named on the command line, process
+ those named in file FILE; each name is terminated by a null byte.
+ This is useful with the `--total' (`-c') option when the list of
+ file names is so long that it may exceed a command line length
+ limitation. In such cases, running `du' via `xargs' is undesirable
+ because it splits the list into pieces and makes `du' print a
+ total for each sublist rather than for the entire list. One way
+ to produce a list of null-byte-terminated file names is with GNU
+ `find', using its `-print0' predicate. Do not specify any FILE on
+ the command line when using this option.
+
+`-h'
+`--human-readable'
+ Append a size letter to each size, such as `M' for mebibytes.
+ Powers of 1024 are used, not 1000; `M' stands for 1,048,576 bytes.
+ Use the `--si' option if you prefer powers of 1000.
+
+`-H'
+ Currently, `-H' is the same as `--si', except that `-H' evokes a
+ warning. This option will be changed to be equivalent to
+ `--dereference-args' (`-D').
+
+`-k'
+ Print sizes in 1024-byte blocks, overriding the default block size
+ (*note Block size::). This option is equivalent to
+ `--block-size=1K'.
+
+`-l'
+`--count-links'
+ Count the size of all files, even if they have appeared already
+ (as a hard link).
+
+`-L'
+`--dereference'
+ Dereference symbolic links (show the disk space used by the file
+ or directory that the link points to instead of the space used by
+ the link).
+
+`-m'
+ Print sizes in 1,048,576-byte blocks, overriding the default block
+ size (*note Block size::). This option is equivalent to
+ `--block-size=1M'.
+
+`-P'
+`--no-dereference'
+ For each symbolic links encountered by `du', consider the disk
+ space used by the symbolic link.
+
+`--max-depth=DEPTH'
+ Show the total for each directory (and file if -all) that is at
+ most MAX_DEPTH levels down from the root of the hierarchy. The
+ root is at level 0, so `du --max-depth=0' is equivalent to `du -s'.
+
+`-0'
+`--null'
+ Output a null byte at the end of each line, rather than a newline.
+ This option enables other programs to parse the output of `du'
+ even when that output would contain file names with embedded
+ newlines.
+
+`--si'
+ Append an SI-style abbreviation to each size, such as `MB' for
+ megabytes. Powers of 1000 are used, not 1024; `MB' stands for
+ 1,000,000 bytes. Use the `-h' or `--human-readable' option if you
+ prefer powers of 1024.
+
+`-s'
+`--summarize'
+ Display only a total for each argument.
+
+`-S'
+`--separate-dirs'
+ Report the size of each directory separately, not including the
+ sizes of subdirectories.
+
+`--time'
+ Show time of the most recent modification of any file in the
+ directory, or any of its subdirectories.
+
+`--time=ctime'
+`--time=status'
+`--time=use'
+ Show the most recent status change time (the `ctime' in the inode)
+ of any file in the directory, instead of the modification time.
+
+`--time=atime'
+`--time=access'
+ Show the most recent access time (the `atime' in the inode) of any
+ file in the directory, instead of the modification time.
+
+`--time-style=STYLE'
+ List timestamps in style STYLE. This option has an effect only if
+ the `--time' option is also specified. The STYLE should be one of
+ the following:
+
+ `+FORMAT'
+ List timestamps using FORMAT, where FORMAT is interpreted
+ like the format argument of `date' (*note date invocation::).
+ For example, `--time-style="+%Y-%m-%d %H:%M:%S"' causes `du'
+ to list timestamps like `2002-03-30 23:45:56'. As with
+ `date', FORMAT's interpretation is affected by the `LC_TIME'
+ locale category.
+
+ `full-iso'
+ List timestamps in full using ISO 8601 date, time, and time
+ zone format with nanosecond precision, e.g., `2002-03-30
+ 23:45:56.477817180 -0700'. This style is equivalent to
+ `+%Y-%m-%d %H:%M:%S.%N %z'.
+
+ `long-iso'
+ List ISO 8601 date and time in minutes, e.g., `2002-03-30
+ 23:45'. These timestamps are shorter than `full-iso'
+ timestamps, and are usually good enough for everyday work.
+ This style is equivalent to `+%Y-%m-%d %H:%M'.
+
+ `iso'
+ List ISO 8601 dates for timestamps, e.g., `2002-03-30'. This
+ style is equivalent to `+%Y-%m-%d'.
+
+ You can specify the default value of the `--time-style' option
+ with the environment variable `TIME_STYLE'; if `TIME_STYLE' is not
+ set the default style is `long-iso'. For compatibility with `ls',
+ if `TIME_STYLE' begins with `+' and contains a newline, the
+ newline and any later characters are ignored; if `TIME_STYLE'
+ begins with `posix-' the `posix-' is ignored; and if `TIME_STYLE'
+ is `locale' it is ignored.
+
+`-x'
+`--one-file-system'
+ Skip directories that are on different file systems from the one
+ that the argument being processed is on.
+
+`--exclude=PATTERN'
+ When recursing, skip subdirectories or files matching PATTERN.
+ For example, `du --exclude='*.o'' excludes files whose names end
+ in `.o'.
+
+`-X FILE'
+`--exclude-from=FILE'
+ Like `--exclude', except take the patterns to exclude from FILE,
+ one per line. If FILE is `-', take the patterns from standard
+ input.
+
+
+ On BSD systems, `du' reports sizes that are half the correct values
+for files that are NFS-mounted from HP-UX systems. On HP-UX systems,
+it reports sizes that are twice the correct values for files that are
+NFS-mounted from BSD systems. This is due to a flaw in HP-UX; it also
+affects the HP-UX `du' program.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: stat invocation, Next: sync invocation, Prev: du invocation, Up: Disk usage
+
+14.3 `stat': Report file or file system status
+==============================================
+
+`stat' displays information about the specified file(s). Synopsis:
+
+ stat [OPTION]... [FILE]...
+
+ With no option, `stat' reports all information about the given files.
+But it also can be used to report the information of the file systems
+the given files are located on. If the files are links, `stat' can
+also give information about the files the links point to.
+
+`-L'
+`--dereference'
+ Change how `stat' treats symbolic links. With this option, `stat'
+ acts on the file referenced by each symbolic link argument.
+ Without it, `stat' acts on any symbolic link argument directly.
+
+`-f'
+`--file-system'
+ Report information about the file systems where the given files
+ are located instead of information about the files themselves.
+
+`-c'
+`--format=FORMAT'
+ Use FORMAT rather than the default format. FORMAT is
+ automatically newline-terminated, so running a command like the
+ following with two or more FILE operands produces a line of output
+ for each operand:
+ $ stat --format=%d:%i / /usr
+ 2050:2
+ 2057:2
+
+`--printf=FORMAT'
+ Use FORMAT rather than the default format. Like `--format', but
+ interpret backslash escapes, and do not output a mandatory
+ trailing newline. If you want a newline, include `\n' in the
+ FORMAT. Here's how you would use `--printf' to print the device
+ and inode numbers of `/' and `/usr':
+ $ stat --printf='%d:%i\n' / /usr
+ 2050:2
+ 2057:2
+
+`-t'
+`--terse'
+ Print the information in terse form, suitable for parsing by other
+ programs.
+
+ The valid format sequences for files are:
+
+ * %a - Access rights in octal
+
+ * %A - Access rights in human readable form
+
+ * %b - Number of blocks allocated (see `%B')
+
+ * %B - The size in bytes of each block reported by `%b'
+
+ * %d - Device number in decimal
+
+ * %D - Device number in hex
+
+ * %f - Raw mode in hex
+
+ * %F - File type
+
+ * %g - Group ID of owner
+
+ * %G - Group name of owner
+
+ * %h - Number of hard links
+
+ * %i - Inode number
+
+ * %n - File name
+
+ * %N - Quoted file name with dereference if symbolic link
+
+ * %o - I/O block size
+
+ * %s - Total size, in bytes
+
+ * %t - Major device type in hex
+
+ * %T - Minor device type in hex
+
+ * %u - User ID of owner
+
+ * %U - User name of owner
+
+ * %x - Time of last access
+
+ * %X - Time of last access as seconds since Epoch
+
+ * %y - Time of last modification
+
+ * %Y - Time of last modification as seconds since Epoch
+
+ * %z - Time of last change
+
+ * %Z - Time of last change as seconds since Epoch
+
+ The valid format sequences for file systems are:
+
+ * %a - Free blocks available to non-super-user
+
+ * %b - Total data blocks in file system
+
+ * %c - Total file nodes in file system
+
+ * %d - Free file nodes in file system
+
+ * %f - Free blocks in file system
+
+ * %i - File System ID in hex
+
+ * %l - Maximum length of file names
+
+ * %n - File name
+
+ * %s - Block size (for faster transfers)
+
+ * %S - Fundamental block size (for block counts)
+
+ * %t - Type in hex
+
+ * %T - Type in human readable form
+
+ Time stamps are listed according to the time zone rules specified
+ by the `TZ' environment variable, or by the system default rules if
+ `TZ' is not set. *Note Specifying the Time Zone with `TZ':
+ (libc)TZ Variable.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: sync invocation, Prev: stat invocation, Up: Disk usage
+
+14.4 `sync': Synchronize data on disk with memory
+=================================================
+
+`sync' writes any data buffered in memory out to disk. This can
+include (but is not limited to) modified superblocks, modified inodes,
+and delayed reads and writes. This must be implemented by the kernel;
+The `sync' program does nothing but exercise the `sync' system call.
+
+ The kernel keeps data in memory to avoid doing (relatively slow) disk
+reads and writes. This improves performance, but if the computer
+crashes, data may be lost or the file system corrupted as a result.
+The `sync' command ensures everything in memory is written to disk.
+
+ Any arguments are ignored, except for a lone `--help' or `--version'
+(*note Common options::).
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: Printing text, Next: Conditions, Prev: Disk usage, Up: Top
+
+15 Printing text
+****************
+
+This section describes commands that display text strings.
+
+* Menu:
+
+* echo invocation:: Print a line of text.
+* printf invocation:: Format and print data.
+* yes invocation:: Print a string until interrupted.
+
+
+File: coreutils.info, Node: echo invocation, Next: printf invocation, Up: Printing text
+
+15.1 `echo': Print a line of text
+=================================
+
+`echo' writes each given STRING to standard output, with a space
+between each and a newline after the last one. Synopsis:
+
+ echo [OPTION]... [STRING]...
+
+ The program accepts the following options. Also see *Note Common
+options::. Options must precede operands, and the normally-special
+argument `--' has no special meaning and is treated like any other
+STRING.
+
+`-n'
+ Do not output the trailing newline.
+
+`-e'
+ Enable interpretation of the following backslash-escaped
+ characters in each STRING:
+
+ `\a'
+ alert (bell)
+
+ `\b'
+ backspace
+
+ `\c'
+ suppress trailing newline
+
+ `\f'
+ form feed
+
+ `\n'
+ new line
+
+ `\r'
+ carriage return
+
+ `\t'
+ horizontal tab
+
+ `\v'
+ vertical tab
+
+ `\\'
+ backslash
+
+ `\0NNN'
+ the eight-bit value that is the octal number NNN (zero to
+ three octal digits)
+
+ `\NNN'
+ the eight-bit value that is the octal number NNN (one to
+ three octal digits)
+
+ `\xHH'
+ the eight-bit value that is the hexadecimal number HH (one or
+ two hexadecimal digits)
+
+`-E'
+ Disable interpretation of backslash escapes in each STRING. This
+ is the default. If `-e' and `-E' are both specified, the last one
+ given takes effect.
+
+
+ If the `POSIXLY_CORRECT' environment variable is set, then when
+`echo''s first argument is not `-n' it outputs option-like arguments
+instead of treating them as options. For example, `echo -ne hello'
+outputs `-ne hello' instead of plain `hello'.
+
+ POSIX does not require support for any options, and says that the
+behavior of `echo' is implementation-defined if any STRING contains a
+backslash or if the first argument is `-n'. Portable programs can use
+the `printf' command if they need to omit trailing newlines or output
+control characters or backslashes. *Note printf invocation::.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: printf invocation, Next: yes invocation, Prev: echo invocation, Up: Printing text
+
+15.2 `printf': Format and print data
+====================================
+
+`printf' does formatted printing of text. Synopsis:
+
+ printf FORMAT [ARGUMENT]...
+
+ `printf' prints the FORMAT string, interpreting `%' directives and
+`\' escapes to format numeric and string arguments in a way that is
+mostly similar to the C `printf' function. The differences are as
+follows:
+
+ * The FORMAT argument is reused as necessary to convert all the
+ given ARGUMENTs. For example, the command `printf %s a b' outputs
+ `ab'.
+
+ * Missing ARGUMENTs are treated as null strings or as zeros,
+ depending on whether the context expects a string or a number. For
+ example, the command `printf %sx%d' prints `x0'.
+
+ * An additional escape, `\c', causes `printf' to produce no further
+ output. For example, the command `printf 'A%sC\cD%sF' B E' prints
+ `ABC'.
+
+ * The hexadecimal escape sequence `\xHH' has at most two digits, as
+ opposed to C where it can have an unlimited number of digits. For
+ example, the command `printf '\x07e'' prints two bytes, whereas
+ the C statement `printf ("\x07e")' prints just one.
+
+ * `printf' has an additional directive, `%b', which prints its
+ argument string with `\' escapes interpreted in the same way as in
+ the FORMAT string, except that octal escapes are of the form
+ `\0OOO' where OOO is 0 to 3 octal digits. If a precision is also
+ given, it limits the number of bytes printed from the converted
+ string.
+
+ * Numeric arguments must be single C constants, possibly with leading
+ `+' or `-'. For example, `printf %.4d -3' outputs `-0003'.
+
+ * If the leading character of a numeric argument is `"' or `'' then
+ its value is the numeric value of the immediately following
+ character. Any remaining characters are silently ignored if the
+ `POSIXLY_CORRECT' environment variable is set; otherwise, a
+ warning is printed. For example, `printf "%d" "'a"' outputs `97'
+ on hosts that use the ASCII character set, since `a' has the
+ numeric value 97 in ASCII.
+
+
+ A floating-point argument must use a period before any fractional
+digits, but is printed according to the `LC_NUMERIC' category of the
+current locale. For example, in a locale whose radix character is a
+comma, the command `printf %g 3.14' outputs `3,14' whereas the command
+`printf %g 3,14' is an error.
+
+ `printf' interprets `\OOO' in FORMAT as an octal number (if OOO is 1
+to 3 octal digits) specifying a character to print, and `\xHH' as a
+hexadecimal number (if HH is 1 to 2 hex digits) specifying a character
+to print.
+
+ `printf' interprets two character syntaxes introduced in ISO C 99:
+`\u' for 16-bit Unicode (ISO/IEC 10646) characters, specified as four
+hexadecimal digits HHHH, and `\U' for 32-bit Unicode characters,
+specified as eight hexadecimal digits HHHHHHHH. `printf' outputs the
+Unicode characters according to the `LC_CTYPE' locale.
+
+ The processing of `\u' and `\U' requires a full-featured `iconv'
+facility. It is activated on systems with glibc 2.2 (or newer), or
+when `libiconv' is installed prior to this package. Otherwise `\u' and
+`\U' will print as-is.
+
+ The only options are a lone `--help' or `--version'. *Note Common
+options::. Options must precede operands.
+
+ The Unicode character syntaxes are useful for writing strings in a
+locale independent way. For example, a string containing the Euro
+currency symbol
+
+ $ /usr/local/bin/printf '\u20AC 14.95'
+
+will be output correctly in all locales supporting the Euro symbol
+(ISO-8859-15, UTF-8, and others). Similarly, a Chinese string
+
+ $ /usr/local/bin/printf '\u4e2d\u6587'
+
+will be output correctly in all Chinese locales (GB2312, BIG5, UTF-8,
+etc).
+
+ Note that in these examples, the full name of `printf' has been
+given, to distinguish it from the GNU `bash' built-in function `printf'.
+
+ For larger strings, you don't need to look up the hexadecimal code
+values of each character one by one. ASCII characters mixed with \u
+escape sequences is also known as the JAVA source file encoding. You
+can use GNU recode 3.5c (or newer) to convert strings to this encoding.
+Here is how to convert a piece of text into a shell script which will
+output this text in a locale-independent way:
+
+ $ LC_CTYPE=zh_CN.big5 /usr/local/bin/printf \
+ '\u4e2d\u6587\n' > sample.txt
+ $ recode BIG5..JAVA < sample.txt \
+ | sed -e "s|^|/usr/local/bin/printf '|" -e "s|$|\\\\n'|" \
+ > sample.sh
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: yes invocation, Prev: printf invocation, Up: Printing text
+
+15.3 `yes': Print a string until interrupted
+============================================
+
+`yes' prints the command line arguments, separated by spaces and
+followed by a newline, forever until it is killed. If no arguments are
+given, it prints `y' followed by a newline forever until killed.
+
+ Upon a write error, `yes' exits with status `1'.
+
+ The only options are a lone `--help' or `--version'. To output an
+argument that begins with `-', precede it with `--', e.g., `yes --
+--help'. *Note Common options::.
+
+
+File: coreutils.info, Node: Conditions, Next: Redirection, Prev: Printing text, Up: Top
+
+16 Conditions
+*************
+
+This section describes commands that are primarily useful for their exit
+status, rather than their output. Thus, they are often used as the
+condition of shell `if' statements, or as the last command in a
+pipeline.
+
+* Menu:
+
+* false invocation:: Do nothing, unsuccessfully.
+* true invocation:: Do nothing, successfully.
+* test invocation:: Check file types and compare values.
+* expr invocation:: Evaluate expressions.
+
+
+File: coreutils.info, Node: false invocation, Next: true invocation, Up: Conditions
+
+16.1 `false': Do nothing, unsuccessfully
+========================================
+
+`false' does nothing except return an exit status of 1, meaning
+"failure". It can be used as a place holder in shell scripts where an
+unsuccessful command is needed. In most modern shells, `false' is a
+built-in command, so when you use `false' in a script, you're probably
+using the built-in command, not the one documented here.
+
+ `false' honors the `--help' and `--version' options.
+
+ This version of `false' is implemented as a C program, and is thus
+more secure and faster than a shell script implementation, and may
+safely be used as a dummy shell for the purpose of disabling accounts.
+
+ Note that `false' (unlike all other programs documented herein)
+exits unsuccessfully, even when invoked with `--help' or `--version'.
+
+ Portable programs should not assume that the exit status of `false'
+is 1, as it is greater than 1 on some non-GNU hosts.
+
+
+File: coreutils.info, Node: true invocation, Next: test invocation, Prev: false invocation, Up: Conditions
+
+16.2 `true': Do nothing, successfully
+=====================================
+
+`true' does nothing except return an exit status of 0, meaning
+"success". It can be used as a place holder in shell scripts where a
+successful command is needed, although the shell built-in command `:'
+(colon) may do the same thing faster. In most modern shells, `true' is
+a built-in command, so when you use `true' in a script, you're probably
+using the built-in command, not the one documented here.
+
+ `true' honors the `--help' and `--version' options.
+
+ Note, however, that it is possible to cause `true' to exit with
+nonzero status: with the `--help' or `--version' option, and with
+standard output already closed or redirected to a file that evokes an
+I/O error. For example, using a Bourne-compatible shell:
+
+ $ ./true --version >&-
+ ./true: write error: Bad file number
+ $ ./true --version > /dev/full
+ ./true: write error: No space left on device
+
+ This version of `true' is implemented as a C program, and is thus
+more secure and faster than a shell script implementation, and may
+safely be used as a dummy shell for the purpose of disabling accounts.
+
+
+File: coreutils.info, Node: test invocation, Next: expr invocation, Prev: true invocation, Up: Conditions
+
+16.3 `test': Check file types and compare values
+================================================
+
+`test' returns a status of 0 (true) or 1 (false) depending on the
+evaluation of the conditional expression EXPR. Each part of the
+expression must be a separate argument.
+
+ `test' has file status checks, string operators, and numeric
+comparison operators.
+
+ `test' has an alternate form that uses opening and closing square
+brackets instead a leading `test'. For example, instead of `test -d
+/', you can write `[ -d / ]'. The square brackets must be separate
+arguments; for example, `[-d /]' does not have the desired effect.
+Since `test EXPR' and `[ EXPR ]' have the same meaning, only the former
+form is discussed below.
+
+ Synopses:
+
+ test EXPRESSION
+ test
+ [ EXPRESSION ]
+ [ ]
+ [ OPTION
+
+ Because most shells have a built-in `test' command, using an
+unadorned `test' in a script or interactively may get you different
+functionality than that described here.
+
+ If EXPRESSION is omitted, `test' returns false. If EXPRESSION is a
+single argument, `test' returns false if the argument is null and true
+otherwise. The argument can be any string, including strings like
+`-d', `-1', `--', `--help', and `--version' that most other programs
+would treat as options. To get help and version information, invoke
+the commands `[ --help' and `[ --version', without the usual closing
+brackets. *Note Common options::.
+
+ Exit status:
+
+ 0 if the expression is true,
+ 1 if the expression is false,
+ 2 if an error occurred.
+
+* Menu:
+
+* File type tests:: -[bcdfhLpSt]
+* Access permission tests:: -[gkruwxOG]
+* File characteristic tests:: -e -s -nt -ot -ef
+* String tests:: -z -n = !=
+* Numeric tests:: -eq -ne -lt -le -gt -ge
+* Connectives for test:: ! -a -o
+
+
+File: coreutils.info, Node: File type tests, Next: Access permission tests, Up: test invocation
+
+16.3.1 File type tests
+----------------------
+
+These options test for particular types of files. (Everything's a file,
+but not all files are the same!)
+
+`-b FILE'
+ True if FILE exists and is a block special device.
+
+`-c FILE'
+ True if FILE exists and is a character special device.
+
+`-d FILE'
+ True if FILE exists and is a directory.
+
+`-f FILE'
+ True if FILE exists and is a regular file.
+
+`-h FILE'
+`-L FILE'
+ True if FILE exists and is a symbolic link. Unlike all other
+ file-related tests, this test does not dereference FILE if it is a
+ symbolic link.
+
+`-p FILE'
+ True if FILE exists and is a named pipe.
+
+`-S FILE'
+ True if FILE exists and is a socket.
+
+`-t FD'
+ True if FD is a file descriptor that is associated with a terminal.
+
+
+
+File: coreutils.info, Node: Access permission tests, Next: File characteristic tests, Prev: File type tests, Up: test invocation
+
+16.3.2 Access permission tests
+------------------------------
+
+These options test for particular access permissions.
+
+`-g FILE'
+ True if FILE exists and has its set-group-ID bit set.
+
+`-k FILE'
+ True if FILE exists and has its "sticky" bit set.
+
+`-r FILE'
+ True if FILE exists and read permission is granted.
+
+`-u FILE'
+ True if FILE exists and has its set-user-ID bit set.
+
+`-w FILE'
+ True if FILE exists and write permission is granted.
+
+`-x FILE'
+ True if FILE exists and execute permission is granted (or search
+ permission, if it is a directory).
+
+`-O FILE'
+ True if FILE exists and is owned by the current effective user ID.
+
+`-G FILE'
+ True if FILE exists and is owned by the current effective group ID.
+
+
+
+File: coreutils.info, Node: File characteristic tests, Next: String tests, Prev: Access permission tests, Up: test invocation
+
+16.3.3 File characteristic tests
+--------------------------------
+
+These options test other file characteristics.
+
+`-e FILE'
+ True if FILE exists.
+
+`-s FILE'
+ True if FILE exists and has a size greater than zero.
+
+`FILE1 -nt FILE2'
+ True if FILE1 is newer (according to modification date) than
+ FILE2, or if FILE1 exists and FILE2 does not.
+
+`FILE1 -ot FILE2'
+ True if FILE1 is older (according to modification date) than
+ FILE2, or if FILE2 exists and FILE1 does not.
+
+`FILE1 -ef FILE2'
+ True if FILE1 and FILE2 have the same device and inode numbers,
+ i.e., if they are hard links to each other.
+
+
+
+File: coreutils.info, Node: String tests, Next: Numeric tests, Prev: File characteristic tests, Up: test invocation
+
+16.3.4 String tests
+-------------------
+
+These options test string characteristics. You may need to quote
+STRING arguments for the shell. For example:
+
+ test -n "$V"
+
+ The quotes here prevent the wrong arguments from being passed to
+`test' if `$V' is empty or contains special characters.
+
+`-z STRING'
+ True if the length of STRING is zero.
+
+`-n STRING'
+`STRING'
+ True if the length of STRING is nonzero.
+
+`STRING1 = STRING2'
+ True if the strings are equal.
+
+`STRING1 != STRING2'
+ True if the strings are not equal.
+
+
+
+File: coreutils.info, Node: Numeric tests, Next: Connectives for test, Prev: String tests, Up: test invocation
+
+16.3.5 Numeric tests
+--------------------
+
+Numeric relationals. The arguments must be entirely numeric (possibly
+negative), or the special expression `-l STRING', which evaluates to
+the length of STRING.
+
+`ARG1 -eq ARG2'
+`ARG1 -ne ARG2'
+`ARG1 -lt ARG2'
+`ARG1 -le ARG2'
+`ARG1 -gt ARG2'
+`ARG1 -ge ARG2'
+ These arithmetic binary operators return true if ARG1 is equal,
+ not-equal, less-than, less-than-or-equal, greater-than, or
+ greater-than-or-equal than ARG2, respectively.
+
+
+ For example:
+
+ test -1 -gt -2 && echo yes
+ => yes
+ test -l abc -gt 1 && echo yes
+ => yes
+ test 0x100 -eq 1
+ error--> test: integer expression expected before -eq
+
+
+File: coreutils.info, Node: Connectives for test, Prev: Numeric tests, Up: test invocation
+
+16.3.6 Connectives for `test'
+-----------------------------
+
+The usual logical connectives.
+
+`! EXPR'
+ True if EXPR is false.
+
+`EXPR1 -a EXPR2'
+ True if both EXPR1 and EXPR2 are true.
+
+`EXPR1 -o EXPR2'
+ True if either EXPR1 or EXPR2 is true.
+
+
+
+File: coreutils.info, Node: expr invocation, Prev: test invocation, Up: Conditions
+
+16.4 `expr': Evaluate expressions
+=================================
+
+`expr' evaluates an expression and writes the result on standard
+output. Each token of the expression must be a separate argument.
+
+ Operands are either integers or strings. Integers consist of one or
+more decimal digits, with an optional leading `-'. `expr' converts
+anything appearing in an operand position to an integer or a string
+depending on the operation being applied to it.
+
+ Strings are not quoted for `expr' itself, though you may need to
+quote them to protect characters with special meaning to the shell,
+e.g., spaces. However, regardless of whether it is quoted, a string
+operand should not be a parenthesis or any of `expr''s operators like
+`+', so you cannot safely pass an arbitrary string `$str' to expr
+merely by quoting it to the shell. One way to work around this is to
+use the GNU extension `+', (e.g., `+ "$str" = foo'); a more portable
+way is to use `" $str"' and to adjust the rest of the expression to take
+the leading space into account (e.g., `" $str" = " foo"').
+
+ You should not pass a negative integer or a string with leading `-'
+as `expr''s first argument, as it might be misinterpreted as an option;
+this can be avoided by parenthesization. Also, portable scripts should
+not use a string operand that happens to take the form of an integer;
+this can be worked around by inserting leading spaces as mentioned
+above.
+
+ Operators may be given as infix symbols or prefix keywords.
+Parentheses may be used for grouping in the usual manner. You must
+quote parentheses and many operators to avoid the shell evaluating them,
+however.
+
+ The only options are `--help' and `--version'. *Note Common
+options::. Options must precede operands.
+
+ Exit status:
+
+ 0 if the expression is neither null nor 0,
+ 1 if the expression is null or 0,
+ 2 if the expression is invalid,
+ 3 if an internal error occurred (e.g., arithmetic overflow).
+
+* Menu:
+
+* String expressions:: + : match substr index length
+* Numeric expressions:: + - * / %
+* Relations for expr:: | & < <= = == != >= >
+* Examples of expr:: Examples.
+
+
+File: coreutils.info, Node: String expressions, Next: Numeric expressions, Up: expr invocation
+
+16.4.1 String expressions
+-------------------------
+
+`expr' supports pattern matching and other string operators. These
+have lower precedence than both the numeric and relational operators (in
+the next sections).
+
+`STRING : REGEX'
+ Perform pattern matching. The arguments are converted to strings
+ and the second is considered to be a (basic, a la GNU `grep')
+ regular expression, with a `^' implicitly prepended. The first
+ argument is then matched against this regular expression.
+
+ If the match succeeds and REGEX uses `\(' and `\)', the `:'
+ expression returns the part of STRING that matched the
+ subexpression; otherwise, it returns the number of characters
+ matched.
+
+ If the match fails, the `:' operator returns the null string if
+ `\(' and `\)' are used in REGEX, otherwise 0.
+
+ Only the first `\( ... \)' pair is relevant to the return value;
+ additional pairs are meaningful only for grouping the regular
+ expression operators.
+
+ In the regular expression, `\+', `\?', and `\|' are operators
+ which respectively match one or more, zero or one, or separate
+ alternatives. SunOS and other `expr''s treat these as regular
+ characters. (POSIX allows either behavior.) *Note Regular
+ Expression Library: (regex)Top, for details of regular expression
+ syntax. Some examples are in *Note Examples of expr::.
+
+`match STRING REGEX'
+ An alternative way to do pattern matching. This is the same as
+ `STRING : REGEX'.
+
+`substr STRING POSITION LENGTH'
+ Returns the substring of STRING beginning at POSITION with length
+ at most LENGTH. If either POSITION or LENGTH is negative, zero,
+ or non-numeric, returns the null string.
+
+`index STRING CHARSET'
+ Returns the first position in STRING where the first character in
+ CHARSET was found. If no character in CHARSET is found in STRING,
+ return 0.
+
+`length STRING'
+ Returns the length of STRING.
+
+`+ TOKEN'
+ Interpret TOKEN as a string, even if it is a keyword like MATCH or
+ an operator like `/'. This makes it possible to test `expr length
+ + "$x"' or `expr + "$x" : '.*/\(.\)'' and have it do the right
+ thing even if the value of $X happens to be (for example) `/' or
+ `index'. This operator is a GNU extension. Portable shell
+ scripts should use `" $token" : ' \(.*\)'' instead of `+ "$token"'.
+
+
+ To make `expr' interpret keywords as strings, you must use the
+`quote' operator.
+
+
+File: coreutils.info, Node: Numeric expressions, Next: Relations for expr, Prev: String expressions, Up: expr invocation
+
+16.4.2 Numeric expressions
+--------------------------
+
+`expr' supports the usual numeric operators, in order of increasing
+precedence. The string operators (previous section) have lower
+precedence, the connectives (next section) have higher.
+
+`+ -'
+ Addition and subtraction. Both arguments are converted to
+ integers; an error occurs if this cannot be done.
+
+`* / %'
+ Multiplication, division, remainder. Both arguments are converted
+ to integers; an error occurs if this cannot be done.
+
+
+
+File: coreutils.info, Node: Relations for expr, Next: Examples of expr, Prev: Numeric expressions, Up: expr invocation
+
+16.4.3 Relations for `expr'
+---------------------------
+
+`expr' supports the usual logical connectives and relations. These are
+higher precedence than either the string or numeric operators (previous
+sections). Here is the list, lowest-precedence operator first.
+
+`|'
+ Returns its first argument if that is neither null nor zero,
+ otherwise its second argument if it is neither null nor zero,
+ otherwise 0. It does not evaluate its second argument if its
+ first argument is neither null nor zero.
+
+`&'
+ Return its first argument if neither argument is null or zero,
+ otherwise 0. It does not evaluate its second argument if its
+ first argument is null or zero.
+
+`< <= = == != >= >'
+ Compare the arguments and return 1 if the relation is true, 0
+ otherwise. `==' is a synonym for `='. `expr' first tries to
+ convert both arguments to integers and do a numeric comparison; if
+ either conversion fails, it does a lexicographic comparison using
+ the character collating sequence specified by the `LC_COLLATE'
+ locale.
+
+
+
+File: coreutils.info, Node: Examples of expr, Prev: Relations for expr, Up: expr invocation
+
+16.4.4 Examples of using `expr'
+-------------------------------
+
+Here are a few examples, including quoting for shell metacharacters.
+
+ To add 1 to the shell variable `foo', in Bourne-compatible shells:
+
+ foo=`expr $foo + 1`
+
+ To print the non-directory part of the file name stored in `$fname',
+which need not contain a `/':
+
+ expr $fname : '.*/\(.*\)' '|' $fname
+
+ An example showing that `\+' is an operator:
+
+ expr aaa : 'a\+'
+ => 3
+
+ expr abc : 'a\(.\)c'
+ => b
+ expr index abcdef cz
+ => 3
+ expr index index a
+ error--> expr: syntax error
+ expr index quote index a
+ => 0
+
+
+File: coreutils.info, Node: Redirection, Next: File name manipulation, Prev: Conditions, Up: Top
+
+17 Redirection
+**************
+
+Unix shells commonly provide several forms of "redirection"--ways to
+change the input source or output destination of a command. But one
+useful redirection is performed by a separate command, not by the shell;
+it's described here.
+
+* Menu:
+
+* tee invocation:: Redirect output to multiple files.
+
+
+File: coreutils.info, Node: tee invocation, Up: Redirection
+
+17.1 `tee': Redirect output to multiple files
+=============================================
+
+The `tee' command copies standard input to standard output and also to
+any files given as arguments. This is useful when you want not only to
+send some data down a pipe, but also to save a copy. Synopsis:
+
+ tee [OPTION]... [FILE]...
+
+ If a file being written to does not already exist, it is created.
+If a file being written to already exists, the data it previously
+contained is overwritten unless the `-a' option is used.
+
+ A FILE of `-' causes `tee' to send another copy of input to standard
+output, but this is typically not that useful as the copies are
+interleaved.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-a'
+`--append'
+ Append standard input to the given files rather than overwriting
+ them.
+
+`-i'
+`--ignore-interrupts'
+ Ignore interrupt signals.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: File name manipulation, Next: Working context, Prev: Redirection, Up: Top
+
+18 File name manipulation
+*************************
+
+This section describes commands that manipulate file names.
+
+* Menu:
+
+* basename invocation:: Strip directory and suffix from a file name.
+* dirname invocation:: Strip non-directory suffix from a file name.
+* pathchk invocation:: Check file name portability.
+
+
+File: coreutils.info, Node: basename invocation, Next: dirname invocation, Up: File name manipulation
+
+18.1 `basename': Strip directory and suffix from a file name
+============================================================
+
+`basename' removes any leading directory components from NAME.
+Synopsis:
+
+ basename NAME [SUFFIX]
+
+ If SUFFIX is specified and is identical to the end of NAME, it is
+removed from NAME as well. Note that since trailing slashes are
+removed prior to suffix matching, SUFFIX will do nothing if it contains
+slashes. `basename' prints the result on standard output.
+
+ Together, `basename' and `dirname' are designed such that if `ls
+"$name"' succeeds, then the command sequence `cd "$(dirname "$name")";
+ls "$(basename "$name")"' will, too. This works for everything except
+file names containing a trailing newline.
+
+ POSIX allows the implementation to define the results if NAME is
+empty or `//'. In the former case, GNU `basename' returns the empty
+string. In the latter case, the result is `//' on platforms where //
+is distinct from /, and `/' on platforms where there is no difference.
+
+ The only options are `--help' and `--version'. *Note Common
+options::. Options must precede operands.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+ Examples:
+
+ # Output "sort".
+ basename /usr/bin/sort
+
+ # Output "stdio".
+ basename include/stdio.h .h
+
+
+File: coreutils.info, Node: dirname invocation, Next: pathchk invocation, Prev: basename invocation, Up: File name manipulation
+
+18.2 `dirname': Strip non-directory suffix from a file name
+===========================================================
+
+`dirname' prints all but the final slash-delimited component of a
+string (presumably a file name). Synopsis:
+
+ dirname NAME
+
+ If NAME is a single component, `dirname' prints `.' (meaning the
+current directory).
+
+ Together, `basename' and `dirname' are designed such that if `ls
+"$name"' succeeds, then the command sequence `cd "$(dirname "$name")";
+ls "$(basename "$name")"' will, too. This works for everything except
+file names containing a trailing newline.
+
+ POSIX allows the implementation to define the results if NAME is
+`//'. With GNU `dirname', the result is `//' on platforms where // is
+distinct from /, and `/' on platforms where there is no difference.
+
+ The only options are `--help' and `--version'. *Note Common
+options::.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+ Examples:
+
+ # Output "/usr/bin".
+ dirname /usr/bin/sort
+
+ # Output ".".
+ dirname stdio.h
+
+
+File: coreutils.info, Node: pathchk invocation, Prev: dirname invocation, Up: File name manipulation
+
+18.3 `pathchk': Check file name portability
+===========================================
+
+`pathchk' checks portability of file names. Synopsis:
+
+ pathchk [OPTION]... NAME...
+
+ For each NAME, `pathchk' prints a message if any of these conditions
+is true:
+
+ 1. One of the existing directories in NAME does not have search
+ (execute) permission,
+
+ 2. The length of NAME is larger than the maximum supported by the
+ operating system.
+
+ 3. The length of one component of NAME is longer than its file
+ system's maximum.
+
+ A nonexistent NAME is not an error, so long a file with that name
+could be created under the above conditions.
+
+ The program accepts the following options. Also see *Note Common
+options::. Options must precede operands.
+
+`-p'
+ Instead of performing checks based on the underlying file system,
+ print a message if any of these conditions is true:
+
+ 1. A file name is empty.
+
+ 2. The length of a file name or one of its components exceeds the
+ POSIX minimum limits for portability.
+
+ 3. A file name contains a character outside the portable file
+ name character set, namely, the ASCII letters and digits, `-',
+ `.', `/', and `_'.
+
+`-P'
+ Print a message if a file name is empty, or if it contains a
+ component that begins with `-'.
+
+`--portability'
+ Print a message if a file name is not portable to all POSIX hosts.
+ This option is equivalent to `-p -P'.
+
+
+ Exit status:
+
+ 0 if all specified file names passed all checks,
+ 1 otherwise.
+
+
+File: coreutils.info, Node: Working context, Next: User information, Prev: File name manipulation, Up: Top
+
+19 Working context
+******************
+
+This section describes commands that display or alter the context in
+which you are working: the current directory, the terminal settings, and
+so forth. See also the user-related commands in the next section.
+
+* Menu:
+
+* pwd invocation:: Print working directory.
+* stty invocation:: Print or change terminal characteristics.
+* printenv invocation:: Print environment variables.
+* tty invocation:: Print file name of terminal on standard input.
+
+
+File: coreutils.info, Node: pwd invocation, Next: stty invocation, Up: Working context
+
+19.1 `pwd': Print working directory
+===================================
+
+`pwd' prints the fully resolved name of the current directory. That
+is, all components of the printed name will be actual directory
+names--none will be symbolic links.
+
+ Because most shells have a built-in `pwd' command, using an
+unadorned `pwd' in a script or interactively may get you different
+functionality than that described here.
+
+ The only options are a lone `--help' or `--version'. *Note Common
+options::.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: stty invocation, Next: printenv invocation, Prev: pwd invocation, Up: Working context
+
+19.2 `stty': Print or change terminal characteristics
+=====================================================
+
+`stty' prints or changes terminal characteristics, such as baud rate.
+Synopses:
+
+ stty [OPTION] [SETTING]...
+ stty [OPTION]
+
+ If given no line settings, `stty' prints the baud rate, line
+discipline number (on systems that support it), and line settings that
+have been changed from the values set by `stty sane'. By default, mode
+reading and setting are performed on the tty line connected to standard
+input, although this can be modified by the `--file' option.
+
+ `stty' accepts many non-option arguments that change aspects of the
+terminal line operation, as described below.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-a'
+`--all'
+ Print all current settings in human-readable form. This option
+ may not be used in combination with any line settings.
+
+`-F DEVICE'
+`--file=DEVICE'
+ Set the line opened by the file name specified in DEVICE instead of
+ the tty line connected to standard input. This option is necessary
+ because opening a POSIX tty requires use of the `O_NONDELAY' flag
+ to prevent a POSIX tty from blocking until the carrier detect line
+ is high if the `clocal' flag is not set. Hence, it is not always
+ possible to allow the shell to open the device in the traditional
+ manner.
+
+`-g'
+`--save'
+ Print all current settings in a form that can be used as an
+ argument to another `stty' command to restore the current
+ settings. This option may not be used in combination with any
+ line settings.
+
+
+ Many settings can be turned off by preceding them with a `-'. Such
+arguments are marked below with "May be negated" in their description.
+The descriptions themselves refer to the positive case, that is, when
+_not_ negated (unless stated otherwise, of course).
+
+ Some settings are not available on all POSIX systems, since they use
+extensions. Such arguments are marked below with "Non-POSIX" in their
+description. On non-POSIX systems, those or other settings also may not
+be available, but it's not feasible to document all the variations: just
+try it and see.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+* Menu:
+
+* Control:: Control settings
+* Input:: Input settings
+* Output:: Output settings
+* Local:: Local settings
+* Combination:: Combination settings
+* Characters:: Special characters
+* Special:: Special settings
+
+
+File: coreutils.info, Node: Control, Next: Input, Up: stty invocation
+
+19.2.1 Control settings
+-----------------------
+
+Control settings:
+
+`parenb'
+ Generate parity bit in output and expect parity bit in input. May
+ be negated.
+
+`parodd'
+ Set odd parity (even if negated). May be negated.
+
+`cs5'
+`cs6'
+`cs7'
+`cs8'
+ Set character size to 5, 6, 7, or 8 bits.
+
+`hup'
+`hupcl'
+ Send a hangup signal when the last process closes the tty. May be
+ negated.
+
+`cstopb'
+ Use two stop bits per character (one if negated). May be negated.
+
+`cread'
+ Allow input to be received. May be negated.
+
+`clocal'
+ Disable modem control signals. May be negated.
+
+`crtscts'
+ Enable RTS/CTS flow control. Non-POSIX. May be negated.
+
+
+File: coreutils.info, Node: Input, Next: Output, Prev: Control, Up: stty invocation
+
+19.2.2 Input settings
+---------------------
+
+`ignbrk'
+ Ignore break characters. May be negated.
+
+`brkint'
+ Make breaks cause an interrupt signal. May be negated.
+
+`ignpar'
+ Ignore characters with parity errors. May be negated.
+
+`parmrk'
+ Mark parity errors (with a 255-0-character sequence). May be
+ negated.
+
+`inpck'
+ Enable input parity checking. May be negated.
+
+`istrip'
+ Clear high (8th) bit of input characters. May be negated.
+
+`inlcr'
+ Translate newline to carriage return. May be negated.
+
+`igncr'
+ Ignore carriage return. May be negated.
+
+`icrnl'
+ Translate carriage return to newline. May be negated.
+
+`iutf8'
+ Assume input characters are UTF-8 encoded. May be negated.
+
+`ixon'
+ Enable XON/XOFF flow control (that is, `CTRL-S'/`CTRL-Q'). May be
+ negated.
+
+`ixoff'
+`tandem'
+ Enable sending of `stop' character when the system input buffer is
+ almost full, and `start' character when it becomes almost empty
+ again. May be negated.
+
+`iuclc'
+ Translate uppercase characters to lowercase. Non-POSIX. May be
+ negated.
+
+`ixany'
+ Allow any character to restart output (only the start character if
+ negated). Non-POSIX. May be negated.
+
+`imaxbel'
+ Enable beeping and not flushing input buffer if a character arrives
+ when the input buffer is full. Non-POSIX. May be negated.
+
+
+File: coreutils.info, Node: Output, Next: Local, Prev: Input, Up: stty invocation
+
+19.2.3 Output settings
+----------------------
+
+These arguments specify output-related operations.
+
+`opost'
+ Postprocess output. May be negated.
+
+`olcuc'
+ Translate lowercase characters to uppercase. Non-POSIX. May be
+ negated.
+
+`ocrnl'
+ Translate carriage return to newline. Non-POSIX. May be negated.
+
+`onlcr'
+ Translate newline to carriage return-newline. Non-POSIX. May be
+ negated.
+
+`onocr'
+ Do not print carriage returns in the first column. Non-POSIX.
+ May be negated.
+
+`onlret'
+ Newline performs a carriage return. Non-POSIX. May be negated.
+
+`ofill'
+ Use fill (padding) characters instead of timing for delays.
+ Non-POSIX. May be negated.
+
+`ofdel'
+ Use delete characters for fill instead of null characters.
+ Non-POSIX. May be negated.
+
+`nl1'
+`nl0'
+ Newline delay style. Non-POSIX.
+
+`cr3'
+`cr2'
+`cr1'
+`cr0'
+ Carriage return delay style. Non-POSIX.
+
+`tab3'
+`tab2'
+`tab1'
+`tab0'
+ Horizontal tab delay style. Non-POSIX.
+
+`bs1'
+`bs0'
+ Backspace delay style. Non-POSIX.
+
+`vt1'
+`vt0'
+ Vertical tab delay style. Non-POSIX.
+
+`ff1'
+`ff0'
+ Form feed delay style. Non-POSIX.
+
+
+File: coreutils.info, Node: Local, Next: Combination, Prev: Output, Up: stty invocation
+
+19.2.4 Local settings
+---------------------
+
+`isig'
+ Enable `interrupt', `quit', and `suspend' special characters. May
+ be negated.
+
+`icanon'
+ Enable `erase', `kill', `werase', and `rprnt' special characters.
+ May be negated.
+
+`iexten'
+ Enable non-POSIX special characters. May be negated.
+
+`echo'
+ Echo input characters. May be negated.
+
+`echoe'
+`crterase'
+ Echo `erase' characters as backspace-space-backspace. May be
+ negated.
+
+`echok'
+ Echo a newline after a `kill' character. May be negated.
+
+`echonl'
+ Echo newline even if not echoing other characters. May be negated.
+
+`noflsh'
+ Disable flushing after `interrupt' and `quit' special characters.
+ May be negated.
+
+`xcase'
+ Enable input and output of uppercase characters by preceding their
+ lowercase equivalents with `\', when `icanon' is set. Non-POSIX.
+ May be negated.
+
+`tostop'
+ Stop background jobs that try to write to the terminal. Non-POSIX.
+ May be negated.
+
+`echoprt'
+`prterase'
+ Echo erased characters backward, between `\' and `/'. Non-POSIX.
+ May be negated.
+
+`echoctl'
+`ctlecho'
+ Echo control characters in hat notation (`^C') instead of
+ literally. Non-POSIX. May be negated.
+
+`echoke'
+`crtkill'
+ Echo the `kill' special character by erasing each character on the
+ line as indicated by the `echoprt' and `echoe' settings, instead
+ of by the `echoctl' and `echok' settings. Non-POSIX. May be
+ negated.
+
+
+File: coreutils.info, Node: Combination, Next: Characters, Prev: Local, Up: stty invocation
+
+19.2.5 Combination settings
+---------------------------
+
+Combination settings:
+
+`evenp'
+`parity'
+ Same as `parenb -parodd cs7'. May be negated. If negated, same
+ as `-parenb cs8'.
+
+`oddp'
+ Same as `parenb parodd cs7'. May be negated. If negated, same as
+ `-parenb cs8'.
+
+`nl'
+ Same as `-icrnl -onlcr'. May be negated. If negated, same as
+ `icrnl -inlcr -igncr onlcr -ocrnl -onlret'.
+
+`ek'
+ Reset the `erase' and `kill' special characters to their default
+ values.
+
+`sane'
+ Same as:
+
+ cread -ignbrk brkint -inlcr -igncr icrnl -ixoff
+ -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr
+ -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0
+ ff0 isig icanon iexten echo echoe echok -echonl
+ -noflsh -xcase -tostop -echoprt echoctl echoke
+
+ and also sets all special characters to their default values.
+
+`cooked'
+ Same as `brkint ignpar istrip icrnl ixon opost isig icanon', plus
+ sets the `eof' and `eol' characters to their default values if
+ they are the same as the `min' and `time' characters. May be
+ negated. If negated, same as `raw'.
+
+`raw'
+ Same as:
+
+ -ignbrk -brkint -ignpar -parmrk -inpck -istrip
+ -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany
+ -imaxbel -opost -isig -icanon -xcase min 1 time 0
+
+ May be negated. If negated, same as `cooked'.
+
+`cbreak'
+ Same as `-icanon'. May be negated. If negated, same as `icanon'.
+
+`pass8'
+ Same as `-parenb -istrip cs8'. May be negated. If negated, same
+ as `parenb istrip cs7'.
+
+`litout'
+ Same as `-parenb -istrip -opost cs8'. May be negated. If
+ negated, same as `parenb istrip opost cs7'.
+
+`decctlq'
+ Same as `-ixany'. Non-POSIX. May be negated.
+
+`tabs'
+ Same as `tab0'. Non-POSIX. May be negated. If negated, same as
+ `tab3'.
+
+`lcase'
+`LCASE'
+ Same as `xcase iuclc olcuc'. Non-POSIX. May be negated.
+
+`crt'
+ Same as `echoe echoctl echoke'.
+
+`dec'
+ Same as `echoe echoctl echoke -ixany intr ^C erase ^? kill C-u'.
+
+
+File: coreutils.info, Node: Characters, Next: Special, Prev: Combination, Up: stty invocation
+
+19.2.6 Special characters
+-------------------------
+
+The special characters' default values vary from system to system.
+They are set with the syntax `name value', where the names are listed
+below and the value can be given either literally, in hat notation
+(`^C'), or as an integer which may start with `0x' to indicate
+hexadecimal, `0' to indicate octal, or any other digit to indicate
+decimal.
+
+ For GNU stty, giving a value of `^-' or `undef' disables that
+special character. (This is incompatible with Ultrix `stty', which
+uses a value of `u' to disable a special character. GNU `stty' treats
+a value `u' like any other, namely to set that special character to
+<U>.)
+
+`intr'
+ Send an interrupt signal.
+
+`quit'
+ Send a quit signal.
+
+`erase'
+ Erase the last character typed.
+
+`kill'
+ Erase the current line.
+
+`eof'
+ Send an end of file (terminate the input).
+
+`eol'
+ End the line.
+
+`eol2'
+ Alternate character to end the line. Non-POSIX.
+
+`swtch'
+ Switch to a different shell layer. Non-POSIX.
+
+`start'
+ Restart the output after stopping it.
+
+`stop'
+ Stop the output.
+
+`susp'
+ Send a terminal stop signal.
+
+`dsusp'
+ Send a terminal stop signal after flushing the input. Non-POSIX.
+
+`rprnt'
+ Redraw the current line. Non-POSIX.
+
+`werase'
+ Erase the last word typed. Non-POSIX.
+
+`lnext'
+ Enter the next character typed literally, even if it is a special
+ character. Non-POSIX.
+
+
+File: coreutils.info, Node: Special, Prev: Characters, Up: stty invocation
+
+19.2.7 Special settings
+-----------------------
+
+`min N'
+ Set the minimum number of characters that will satisfy a read until
+ the time value has expired, when `-icanon' is set.
+
+`time N'
+ Set the number of tenths of a second before reads time out if the
+ minimum number of characters have not been read, when `-icanon' is
+ set.
+
+`ispeed N'
+ Set the input speed to N.
+
+`ospeed N'
+ Set the output speed to N.
+
+`rows N'
+ Tell the tty kernel driver that the terminal has N rows.
+ Non-POSIX.
+
+`cols N'
+`columns N'
+ Tell the kernel that the terminal has N columns. Non-POSIX.
+
+`size'
+ Print the number of rows and columns that the kernel thinks the
+ terminal has. (Systems that don't support rows and columns in the
+ kernel typically use the environment variables `LINES' and
+ `COLUMNS' instead; however, GNU `stty' does not know anything
+ about them.) Non-POSIX.
+
+`line N'
+ Use line discipline N. Non-POSIX.
+
+`speed'
+ Print the terminal speed.
+
+`N'
+ Set the input and output speeds to N. N can be one of: 0 50 75
+ 110 134 134.5 150 200 300 600 1200 1800 2400 4800 9600 19200 38400
+ `exta' `extb'. `exta' is the same as 19200; `extb' is the same as
+ 38400. 0 hangs up the line if `-clocal' is set.
+
+
+File: coreutils.info, Node: printenv invocation, Next: tty invocation, Prev: stty invocation, Up: Working context
+
+19.3 `printenv': Print all or some environment variables
+========================================================
+
+`printenv' prints environment variable values. Synopsis:
+
+ printenv [OPTION] [VARIABLE]...
+
+ If no VARIABLEs are specified, `printenv' prints the value of every
+environment variable. Otherwise, it prints the value of each VARIABLE
+that is set, and nothing for those that are not set.
+
+ The only options are a lone `--help' or `--version'. *Note Common
+options::.
+
+ Exit status:
+
+ 0 if all variables specified were found
+ 1 if at least one specified variable was not found
+ 2 if a write error occurred
+
+
+File: coreutils.info, Node: tty invocation, Prev: printenv invocation, Up: Working context
+
+19.4 `tty': Print file name of terminal on standard input
+=========================================================
+
+`tty' prints the file name of the terminal connected to its standard
+input. It prints `not a tty' if standard input is not a terminal.
+Synopsis:
+
+ tty [OPTION]...
+
+ The program accepts the following option. Also see *Note Common
+options::.
+
+`-s'
+`--silent'
+`--quiet'
+ Print nothing; only return an exit status.
+
+
+ Exit status:
+
+ 0 if standard input is a terminal
+ 1 if standard input is not a terminal
+ 2 if given incorrect arguments
+ 3 if a write error occurs
+
+
+File: coreutils.info, Node: User information, Next: System context, Prev: Working context, Up: Top
+
+20 User information
+*******************
+
+This section describes commands that print user-related information:
+logins, groups, and so forth.
+
+* Menu:
+
+* id invocation:: Print user identity.
+* logname invocation:: Print current login name.
+* whoami invocation:: Print effective user ID.
+* groups invocation:: Print group names a user is in.
+* users invocation:: Print login names of users currently logged in.
+* who invocation:: Print who is currently logged in.
+
+
+File: coreutils.info, Node: id invocation, Next: logname invocation, Up: User information
+
+20.1 `id': Print user identity
+==============================
+
+`id' prints information about the given user, or the process running it
+if no user is specified. Synopsis:
+
+ id [OPTION]... [USERNAME]
+
+ By default, it prints the real user ID, real group ID, effective
+user ID if different from the real user ID, effective group ID if
+different from the real group ID, and supplemental group IDs.
+
+ Each of these numeric values is preceded by an identifying string and
+followed by the corresponding user or group name in parentheses.
+
+ The options cause `id' to print only part of the above information.
+Also see *Note Common options::.
+
+`-g'
+`--group'
+ Print only the group ID.
+
+`-G'
+`--groups'
+ Print only the group ID and the supplementary groups.
+
+`-n'
+`--name'
+ Print the user or group name instead of the ID number. Requires
+ `-u', `-g', or `-G'.
+
+`-r'
+`--real'
+ Print the real, instead of effective, user or group ID. Requires
+ `-u', `-g', or `-G'.
+
+`-u'
+`--user'
+ Print only the user ID.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: logname invocation, Next: whoami invocation, Prev: id invocation, Up: User information
+
+20.2 `logname': Print current login name
+========================================
+
+`logname' prints the calling user's name, as found in a
+system-maintained file (often `/var/run/utmp' or `/etc/utmp'), and
+exits with a status of 0. If there is no entry for the calling
+process, `logname' prints an error message and exits with a status of 1.
+
+ The only options are `--help' and `--version'. *Note Common
+options::.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: whoami invocation, Next: groups invocation, Prev: logname invocation, Up: User information
+
+20.3 `whoami': Print effective user ID
+======================================
+
+`whoami' prints the user name associated with the current effective
+user ID. It is equivalent to the command `id -un'.
+
+ The only options are `--help' and `--version'. *Note Common
+options::.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: groups invocation, Next: users invocation, Prev: whoami invocation, Up: User information
+
+20.4 `groups': Print group names a user is in
+=============================================
+
+`groups' prints the names of the primary and any supplementary groups
+for each given USERNAME, or the current process if no names are given.
+If more than one name is given, the name of each user is printed before
+the list of that user's groups. Synopsis:
+
+ groups [USERNAME]...
+
+ The group lists are equivalent to the output of the command `id -Gn'.
+
+ The only options are `--help' and `--version'. *Note Common
+options::.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: users invocation, Next: who invocation, Prev: groups invocation, Up: User information
+
+20.5 `users': Print login names of users currently logged in
+============================================================
+
+`users' prints on a single line a blank-separated list of user names of
+users currently logged in to the current host. Each user name
+corresponds to a login session, so if a user has more than one login
+session, that user's name will appear the same number of times in the
+output. Synopsis:
+
+ users [FILE]
+
+ With no FILE argument, `users' extracts its information from a
+system-maintained file (often `/var/run/utmp' or `/etc/utmp'). If a
+file argument is given, `users' uses that file instead. A common
+choice is `/var/log/wtmp'.
+
+ The only options are `--help' and `--version'. *Note Common
+options::.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: who invocation, Prev: users invocation, Up: User information
+
+20.6 `who': Print who is currently logged in
+============================================
+
+`who' prints information about users who are currently logged on.
+Synopsis:
+
+ `who' [OPTION] [FILE] [am i]
+
+ If given no non-option arguments, `who' prints the following
+information for each user currently logged on: login name, terminal
+line, login time, and remote hostname or X display.
+
+ If given one non-option argument, `who' uses that instead of a
+default system-maintained file (often `/var/run/utmp' or `/etc/utmp')
+as the name of the file containing the record of users logged on.
+`/var/log/wtmp' is commonly given as an argument to `who' to look at
+who has previously logged on.
+
+ If given two non-option arguments, `who' prints only the entry for
+the user running it (determined from its standard input), preceded by
+the hostname. Traditionally, the two arguments given are `am i', as in
+`who am i'.
+
+ Time stamps are listed according to the time zone rules specified by
+the `TZ' environment variable, or by the system default rules if `TZ'
+is not set. *Note Specifying the Time Zone with `TZ': (libc)TZ
+Variable.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-a'
+`--all'
+ Same as `-b -d --login -p -r -t -T -u'.
+
+`-b'
+`--boot'
+ Print the date and time of last system boot.
+
+`-d'
+`--dead'
+ Print information corresponding to dead processes.
+
+`-H'
+`--heading'
+ Print column headings.
+
+`-m'
+ Same as `who am i'.
+
+`-q'
+`--count'
+ Print only the login names and the number of users logged on.
+ Overrides all other options.
+
+`-s'
+ Ignored; for compatibility with other versions of `who'.
+
+`-u'
+ After the login time, print the number of hours and minutes that
+ the user has been idle. `.' means the user was active in the last
+ minute. `old' means the user has been idle for more than 24 hours.
+
+`-l'
+`--login'
+ List only the entries that correspond to processes via which the
+ system is waiting for a user to login. The user name is always
+ `LOGIN'.
+
+`--lookup'
+ Attempt to canonicalize hostnames found in utmp through a DNS
+ lookup. This is not the default because it can cause significant
+ delays on systems with automatic dial-up internet access.
+
+`-H'
+`--heading'
+ Print a line of column headings.
+
+`-w'
+`-T'
+`--mesg'
+`--message'
+`--writable'
+ After each login name print a character indicating the user's
+ message status:
+
+ `+' allowing `write' messages
+ `-' disallowing `write' messages
+ `?' cannot find terminal device
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: System context, Next: Modified command invocation, Prev: User information, Up: Top
+
+21 System context
+*****************
+
+This section describes commands that print or change system-wide
+information.
+
+* Menu:
+
+* date invocation:: Print or set system date and time.
+* uname invocation:: Print system information.
+* hostname invocation:: Print or set system name.
+* hostid invocation:: Print numeric host identifier.
+
+
+File: coreutils.info, Node: date invocation, Next: uname invocation, Up: System context
+
+21.1 `date': Print or set system date and time
+==============================================
+
+Synopses:
+
+ date [OPTION]... [+FORMAT]
+ date [-u|--utc|--universal] [ MMDDhhmm[[CC]YY][.ss] ]
+
+ Invoking `date' with no FORMAT argument is equivalent to invoking it
+with a default format that depends on the `LC_TIME' locale category.
+In the default C locale, this format is `'+%a %b %e %H:%M:%S %Z %Y'',
+so the output looks like `Thu Mar 3 13:47:51 PST 2005'.
+
+ Normally, `date' uses the time zone rules indicated by the `TZ'
+environment variable, or the system default rules if `TZ' is not set.
+*Note Specifying the Time Zone with `TZ': (libc)TZ Variable.
+
+ If given an argument that starts with a `+', `date' prints the
+current date and time (or the date and time specified by the `--date'
+option, see below) in the format defined by that argument, which is
+similar to that of the `strftime' function. Except for conversion
+specifiers, which start with `%', characters in the format string are
+printed unchanged. The conversion specifiers are described below.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+* Menu:
+
+* Time conversion specifiers:: %[HIklMNpPrRsSTXzZ]
+* Date conversion specifiers:: %[aAbBcCdDeFgGhjmuUVwWxyY]
+* Literal conversion specifiers:: %[%nt]
+* Padding and other flags:: Pad with zeros, spaces, etc.
+* Setting the time:: Changing the system clock.
+* Options for date:: Instead of the current time.
+* Examples of date:: Examples.
+
+
+File: coreutils.info, Node: Time conversion specifiers, Next: Date conversion specifiers, Up: date invocation
+
+21.1.1 Time conversion specifiers
+---------------------------------
+
+`date' conversion specifiers related to times.
+
+`%H'
+ hour (`00'...`23')
+
+`%I'
+ hour (`01'...`12')
+
+`%k'
+ hour (` 0'...`23'). This is a GNU extension.
+
+`%l'
+ hour (` 1'...`12'). This is a GNU extension.
+
+`%M'
+ minute (`00'...`59')
+
+`%N'
+ nanoseconds (`000000000'...`999999999'). This is a GNU extension.
+
+`%p'
+ locale's equivalent of either `AM' or `PM'; blank in many locales.
+ Noon is treated as `PM' and midnight as `AM'.
+
+`%P'
+ like `%p', except lower case. This is a GNU extension.
+
+`%r'
+ locale's 12-hour clock time (e.g., `11:11:04 PM')
+
+`%R'
+ 24-hour hour and minute. Same as `%H:%M'. This is a GNU
+ extension.
+
+`%s'
+ seconds since the epoch, i.e., since 1970-01-01 00:00:00 UTC.
+ Leap seconds are not counted unless leap second support is
+ available. *Note %s-examples::, for examples. This is a GNU
+ extension.
+
+`%S'
+ second (`00'...`60'). This may be `60' if leap seconds are
+ supported.
+
+`%T'
+ 24-hour hour, minute, and second. Same as `%H:%M:%S'.
+
+`%X'
+ locale's time representation (e.g., `23:13:48')
+
+`%z'
+ RFC 2822/ISO 8601 style numeric time zone (e.g., `-0600' or
+ `+0530'), or nothing if no time zone is determinable. This value
+ reflects the numeric time zone appropriate for the current time,
+ using the time zone rules specified by the `TZ' environment
+ variable. The time (and optionally, the time zone rules) can be
+ overridden by the `--date' option. This is a GNU extension.
+
+`%:z'
+ RFC 3339/ISO 8601 style numeric time zone with `:' (e.g., `-06:00'
+ or `+05:30'), or nothing if no time zone is determinable. This is
+ a GNU extension.
+
+`%::z'
+ Numeric time zone to the nearest second with `:' (e.g.,
+ `-06:00:00' or `+05:30:00'), or nothing if no time zone is
+ determinable. This is a GNU extension.
+
+`%:::z'
+ Numeric time zone with `:' using the minimum necessary precision
+ (e.g., `-06', `+05:30', or `-04:56:02'), or nothing if no time
+ zone is determinable. This is a GNU extension.
+
+`%Z'
+ alphabetic time zone abbreviation (e.g., `EDT'), or nothing if no
+ time zone is determinable. See `%z' for how it is determined.
+
+
+File: coreutils.info, Node: Date conversion specifiers, Next: Literal conversion specifiers, Prev: Time conversion specifiers, Up: date invocation
+
+21.1.2 Date conversion specifiers
+---------------------------------
+
+`date' conversion specifiers related to dates.
+
+`%a'
+ locale's abbreviated weekday name (e.g., `Sun')
+
+`%A'
+ locale's full weekday name, variable length (e.g., `Sunday')
+
+`%b'
+ locale's abbreviated month name (e.g., `Jan')
+
+`%B'
+ locale's full month name, variable length (e.g., `January')
+
+`%c'
+ locale's date and time (e.g., `Thu Mar 3 23:05:25 2005')
+
+`%C'
+ century. This is like `%Y', except the last two digits are
+ omitted. For example, it is `20' if `%Y' is `2000', and is `-0'
+ if `%Y' is `-001'. It is normally at least two characters, but it
+ may be more.
+
+`%d'
+ day of month (e.g., `01')
+
+`%D'
+ date; same as `%m/%d/%y'
+
+`%e'
+ day of month, space padded; same as `%_d'
+
+`%F'
+ full date in ISO 8601 format; same as `%Y-%m-%d'. This is a good
+ choice for a date format, as it is standard and is easy to sort in
+ the usual case where years are in the range 0000...9999. This is
+ a GNU extension.
+
+`%g'
+ year corresponding to the ISO week number, but without the century
+ (range `00' through `99'). This has the same format and value as
+ `%y', except that if the ISO week number (see `%V') belongs to the
+ previous or next year, that year is used instead. This is a GNU
+ extension.
+
+`%G'
+ year corresponding to the ISO week number. This has the same
+ format and value as `%Y', except that if the ISO week number (see
+ `%V') belongs to the previous or next year, that year is used
+ instead. It is normally useful only if `%V' is also used; for
+ example, the format `%G-%m-%d' is probably a mistake, since it
+ combines the ISO week number year with the conventional month and
+ day. This is a GNU extension.
+
+`%h'
+ same as `%b'
+
+`%j'
+ day of year (`001'...`366')
+
+`%m'
+ month (`01'...`12')
+
+`%u'
+ day of week (`1'...`7') with `1' corresponding to Monday
+
+`%U'
+ week number of year, with Sunday as the first day of the week
+ (`00'...`53'). Days in a new year preceding the first Sunday are
+ in week zero.
+
+`%V'
+ ISO week number, that is, the week number of year, with Monday as
+ the first day of the week (`01'...`53'). If the week containing
+ January 1 has four or more days in the new year, then it is
+ considered week 1; otherwise, it is week 53 of the previous year,
+ and the next week is week 1. (See the ISO 8601 standard.)
+
+`%w'
+ day of week (`0'...`6') with 0 corresponding to Sunday
+
+`%W'
+ week number of year, with Monday as first day of week
+ (`00'...`53'). Days in a new year preceding the first Monday are
+ in week zero.
+
+`%x'
+ locale's date representation (e.g., `12/31/99')
+
+`%y'
+ last two digits of year (`00'...`99')
+
+`%Y'
+ year. This is normally at least four characters, but it may be
+ more. Year `0000' precedes year `0001', and year `-001' precedes
+ year `0000'.
+
+
+File: coreutils.info, Node: Literal conversion specifiers, Next: Padding and other flags, Prev: Date conversion specifiers, Up: date invocation
+
+21.1.3 Literal conversion specifiers
+------------------------------------
+
+`date' conversion specifiers that produce literal strings.
+
+`%%'
+ a literal %
+
+`%n'
+ a newline
+
+`%t'
+ a horizontal tab
+
+
+File: coreutils.info, Node: Padding and other flags, Next: Setting the time, Prev: Literal conversion specifiers, Up: date invocation
+
+21.1.4 Padding and other flags
+------------------------------
+
+Unless otherwise specified, `date' normally pads numeric fields with
+zeros, so that, for example, numeric months are always output as two
+digits. Seconds since the epoch are not padded, though, since there is
+no natural width for them.
+
+ As a GNU extension, `date' recognizes any of the following optional
+flags after the `%':
+
+`-'
+ (hyphen) Do not pad the field; useful if the output is intended for
+ human consumption.
+
+`_'
+ (underscore) Pad with spaces; useful if you need a fixed number of
+ characters in the output, but zeros are too distracting.
+
+`0'
+ (zero) Pad with zeros even if the conversion specifier would
+ normally pad with spaces.
+
+`^'
+ Use upper case characters if possible.
+
+`#'
+ Use opposite case characters if possible. A field that is
+ normally upper case becomes lower case, and vice versa.
+
+Here are some examples of padding:
+
+ date +%d/%m -d "Feb 1"
+ => 01/02
+ date +%-d/%-m -d "Feb 1"
+ => 1/2
+ date +%_d/%_m -d "Feb 1"
+ => 1/ 2
+
+ As a GNU extension, you can specify the field width (after any flag,
+if present) as a decimal number. If the natural size of the output is
+of the field has less than the specified number of characters, the
+result is written right adjusted and padded to the given size. For
+example, `%9B' prints the right adjusted month name in a field of width
+9.
+
+ An optional modifier can follow the optional flag and width
+specification. The modifiers are:
+
+`E'
+ Use the locale's alternate representation for date and time. This
+ modifier applies to the `%c', `%C', `%x', `%X', `%y' and `%Y'
+ conversion specifiers. In a Japanese locale, for example, `%Ex'
+ might yield a date format based on the Japanese Emperors' reigns.
+
+`O'
+ Use the locale's alternate numeric symbols for numbers. This
+ modifier applies only to numeric conversion specifiers.
+
+ If the format supports the modifier but no alternate representation
+is available, it is ignored.
+
+
+File: coreutils.info, Node: Setting the time, Next: Options for date, Prev: Padding and other flags, Up: date invocation
+
+21.1.5 Setting the time
+-----------------------
+
+If given an argument that does not start with `+', `date' sets the
+system clock to the date and time specified by that argument (as
+described below). You must have appropriate privileges to set the
+system clock. The `--date' and `--set' options may not be used with
+such an argument. The `--universal' option may be used with such an
+argument to indicate that the specified date and time are relative to
+Coordinated Universal Time rather than to the local time zone.
+
+ The argument must consist entirely of digits, which have the
+following meaning:
+
+`MM'
+ month
+
+`DD'
+ day within month
+
+`hh'
+ hour
+
+`mm'
+ minute
+
+`CC'
+ first two digits of year (optional)
+
+`YY'
+ last two digits of year (optional)
+
+`ss'
+ second (optional)
+
+ The `--set' option also sets the system clock; see the next section.
+
+
+File: coreutils.info, Node: Options for date, Next: Examples of date, Prev: Setting the time, Up: date invocation
+
+21.1.6 Options for `date'
+-------------------------
+
+The program accepts the following options. Also see *Note Common
+options::.
+
+`-d DATESTR'
+`--date=DATESTR'
+ Display the date and time specified in DATESTR instead of the
+ current date and time. DATESTR can be in almost any common
+ format. It can contain month names, time zones, `am' and `pm',
+ `yesterday', etc. For example, `--date="2004-02-27
+ 14:19:13.489392193 +0530"' specifies the instant of time that is
+ 489,392,193 nanoseconds after February 27, 2004 at 2:19:13 PM in a
+ time zone that is 5 hours and 30 minutes east of UTC. *Note Date
+ input formats::.
+
+`-f DATEFILE'
+`--file=DATEFILE'
+ Parse each line in DATEFILE as with `-d' and display the resulting
+ date and time. If DATEFILE is `-', use standard input. This is
+ useful when you have many dates to process, because the system
+ overhead of starting up the `date' executable many times can be
+ considerable.
+
+`-r FILE'
+`--reference=FILE'
+ Display the date and time of the last modification of FILE,
+ instead of the current date and time.
+
+`-R'
+`--rfc-822'
+`--rfc-2822'
+ Display the date and time using the format `%a, %d %b %Y %H:%M:%S
+ %z', evaluated in the C locale so abbreviations are always in
+ English. For example:
+
+ Fri, 09 Sep 2005 13:51:39 -0700
+
+ This format conforms to Internet RFCs 2822
+ (ftp://ftp.rfc-editor.org/in-notes/rfc2822.txt) and 822
+ (ftp://ftp.rfc-editor.org/in-notes/rfc822.txt), the current and
+ previous standards for Internet email.
+
+`--rfc-3339=TIMESPEC'
+ Display the date using a format specified by Internet RFC 3339
+ (ftp://ftp.rfc-editor.org/in-notes/rfc3339.txt). This is a subset
+ of the ISO 8601 format, except that it also permits applications
+ to use a space rather than a `T' to separate dates from times.
+ Unlike the other standard formats, RFC 3339 format is always
+ suitable as input for the `--date' (`-d') and `--file' (`-f')
+ options, regardless of the current locale.
+
+ The argument TIMESPEC specifies how much of the time to include.
+ It can be one of the following:
+
+ `date'
+ Print just the full-date, e.g., `2005-09-14'. This is
+ equivalent to the format `%Y-%m-%d'.
+
+ `seconds'
+ Print the full-date and full-time separated by a space, e.g.,
+ `2005-09-14 00:56:06+05:30'. The output ends with a numeric
+ time-offset; here the `+05:30' means that local time is five
+ hours and thirty minutes east of UTC. This is equivalent to
+ the format `%Y-%m-%d %H:%M:%S%:z'.
+
+ `ns'
+ Like `seconds', but also print nanoseconds, e.g., `2005-09-14
+ 00:56:06.998458565+05:30'. This is equivalent to the format
+ `%Y-%m-%d %H:%M:%S.%N%:z'.
+
+
+`-s DATESTR'
+`--set=DATESTR'
+ Set the date and time to DATESTR. See `-d' above.
+
+`-u'
+`--utc'
+`--universal'
+ Use Coordinated Universal Time (UTC) by operating as if the `TZ'
+ environment variable were set to the string `UTC0'. Coordinated
+ Universal Time is often called "Greenwich Mean Time" (GMT) for
+ historical reasons.
+
+
+File: coreutils.info, Node: Examples of date, Prev: Options for date, Up: date invocation
+
+21.1.7 Examples of `date'
+-------------------------
+
+Here are a few examples. Also see the documentation for the `-d'
+option in the previous section.
+
+ * To print the date of the day before yesterday:
+
+ date --date='2 days ago'
+
+ * To print the date of the day three months and one day hence:
+
+ date --date='3 months 1 day'
+
+ * To print the day of year of Christmas in the current year:
+
+ date --date='25 Dec' +%j
+
+ * To print the current full month name and the day of the month:
+
+ date '+%B %d'
+
+ But this may not be what you want because for the first nine days
+ of the month, the `%d' expands to a zero-padded two-digit field,
+ for example `date -d 1may '+%B %d'' will print `May 01'.
+
+ * To print a date without the leading zero for one-digit days of the
+ month, you can use the (GNU extension) `-' flag to suppress the
+ padding altogether:
+
+ date -d 1may '+%B %-d
+
+ * To print the current date and time in the format required by many
+ non-GNU versions of `date' when setting the system clock:
+
+ date +%m%d%H%M%Y.%S
+
+ * To set the system clock forward by two minutes:
+
+ date --set='+2 minutes'
+
+ * To print the date in RFC 2822 format, use `date --rfc-2822'. Here
+ is some example output:
+
+ Fri, 09 Sep 2005 13:51:39 -0700
+
+ * To convert a date string to the number of seconds since the epoch
+ (which is 1970-01-01 00:00:00 UTC), use the `--date' option with
+ the `%s' format. That can be useful in sorting and/or graphing
+ and/or comparing data by date. The following command outputs the
+ number of the seconds since the epoch for the time two minutes
+ after the epoch:
+
+ date --date='1970-01-01 00:02:00 +0000' +%s
+ 120
+
+ If you do not specify time zone information in the date string,
+ `date' uses your computer's idea of the time zone when
+ interpreting the string. For example, if your computer's time
+ zone is that of Cambridge, Massachusetts, which was then 5 hours
+ (i.e., 18,000 seconds) behind UTC:
+
+ # local time zone used
+ date --date='1970-01-01 00:02:00' +%s
+ 18120
+
+ * If you're sorting or graphing dated data, your raw date values may
+ be represented as seconds since the epoch. But few people can
+ look at the date `946684800' and casually note "Oh, that's the
+ first second of the year 2000 in Greenwich, England."
+
+ date --date='2000-01-01 UTC' +%s
+ 946684800
+
+ An alternative is to use the `--utc' (`-u') option. Then you may
+ omit `UTC' from the date string. Although this produces the same
+ result for `%s' and many other format sequences, with a time zone
+ offset different from zero, it would give a different result for
+ zone-dependent formats like `%z'.
+
+ date -u --date=2000-01-01 +%s
+ 946684800
+
+ To convert such an unwieldy number of seconds back to a more
+ readable form, use a command like this:
+
+ # local time zone used
+ date -d '1970-01-01 UTC 946684800 seconds' +"%Y-%m-%d %T %z"
+ 1999-12-31 19:00:00 -0500
+
+ Or if you do not mind depending on the `@' feature present since
+ coreutils 5.3.0, you could shorten this to:
+
+ date -d @946684800 +"%F %T %z"
+ 1999-12-31 19:00:00 -0500
+
+ Often it is better to output UTC-relative date and time:
+
+ date -u -d '1970-01-01 946684800 seconds' +"%Y-%m-%d %T %z"
+ 2000-01-01 00:00:00 +0000
+
+
+
+File: coreutils.info, Node: uname invocation, Next: hostname invocation, Prev: date invocation, Up: System context
+
+21.2 `uname': Print system information
+======================================
+
+`uname' prints information about the machine and operating system it is
+run on. If no options are given, `uname' acts as if the `-s' option
+were given. Synopsis:
+
+ uname [OPTION]...
+
+ If multiple options or `-a' are given, the selected information is
+printed in this order:
+
+ KERNEL-NAME NODENAME KERNEL-RELEASE KERNEL-VERSION
+ MACHINE PROCESSOR HARDWARE-PLATFORM OPERATING-SYSTEM
+
+ The information may contain internal spaces, so such output cannot be
+parsed reliably. In the following example, RELEASE is
+`2.2.18ss.e820-bda652a #4 SMP Tue Jun 5 11:24:08 PDT 2001':
+
+ uname -a
+ => Linux dum 2.2.18 #4 SMP Tue Jun 5 11:24:08 PDT 2001 i686 unknown unknown GNU/Linux
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-a'
+`--all'
+ Print all of the below information, except omit the processor type
+ and the hardware platform name if they are unknown.
+
+`-i'
+`--hardware-platform'
+ Print the hardware platform name (sometimes called the hardware
+ implementation). Print `unknown' if the kernel does not make this
+ information easily available, as is the case with Linux kernels.
+
+`-m'
+`--machine'
+ Print the machine hardware name (sometimes called the hardware
+ class or hardware type).
+
+`-n'
+`--nodename'
+ Print the network node hostname.
+
+`-p'
+`--processor'
+ Print the processor type (sometimes called the instruction set
+ architecture or ISA). Print `unknown' if the kernel does not make
+ this information easily available, as is the case with Linux
+ kernels.
+
+`-o'
+`--operating-system'
+ Print the name of the operating system.
+
+`-r'
+`--kernel-release'
+ Print the kernel release.
+
+`-s'
+`--kernel-name'
+ Print the kernel name. POSIX 1003.1-2001 (*note Standards
+ conformance::) calls this "the implementation of the operating
+ system", because the POSIX specification itself has no notion of
+ "kernel". The kernel name might be the same as the operating
+ system name printed by the `-o' or `--operating-system' option,
+ but it might differ. Some operating systems (e.g., FreeBSD,
+ HP-UX) have the same name as their underlying kernels; others
+ (e.g., GNU/Linux, Solaris) do not.
+
+`-v'
+`--kernel-version'
+ Print the kernel version.
+
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: hostname invocation, Next: hostid invocation, Prev: uname invocation, Up: System context
+
+21.3 `hostname': Print or set system name
+=========================================
+
+With no arguments, `hostname' prints the name of the current host
+system. With one argument, it sets the current host name to the
+specified string. You must have appropriate privileges to set the host
+name. Synopsis:
+
+ hostname [NAME]
+
+ The only options are `--help' and `--version'. *Note Common
+options::.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: hostid invocation, Prev: hostname invocation, Up: System context
+
+21.4 `hostid': Print numeric host identifier.
+=============================================
+
+`hostid' prints the numeric identifier of the current host in
+hexadecimal. This command accepts no arguments. The only options are
+`--help' and `--version'. *Note Common options::.
+
+ For example, here's what it prints on one system I use:
+
+ $ hostid
+ 1bac013d
+
+ On that system, the 32-bit quantity happens to be closely related to
+the system's Internet address, but that isn't always the case.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: Modified command invocation, Next: Process control, Prev: System context, Up: Top
+
+22 Modified command invocation
+******************************
+
+This section describes commands that run other commands in some context
+different than the current one: a modified environment, as a different
+user, etc.
+
+* Menu:
+
+* chroot invocation:: Modify the root directory.
+* env invocation:: Modify environment variables.
+* nice invocation:: Modify niceness.
+* nohup invocation:: Immunize to hangups.
+* su invocation:: Modify user and group ID.
+
+
+File: coreutils.info, Node: chroot invocation, Next: env invocation, Up: Modified command invocation
+
+22.1 `chroot': Run a command with a different root directory
+============================================================
+
+`chroot' runs a command with a specified root directory. On many
+systems, only the super-user can do this. Synopses:
+
+ chroot NEWROOT [COMMAND [ARGS]...]
+ chroot OPTION
+
+ Ordinarily, file names are looked up starting at the root of the
+directory structure, i.e., `/'. `chroot' changes the root to the
+directory NEWROOT (which must exist) and then runs COMMAND with
+optional ARGS. If COMMAND is not specified, the default is the value
+of the `SHELL' environment variable or `/bin/sh' if not set, invoked
+with the `-i' option. COMMAND must not be a special built-in utility
+(*note Special built-in utilities::).
+
+ The only options are `--help' and `--version'. *Note Common
+options::. Options must precede operands.
+
+ Here are a few tips to help avoid common problems in using chroot.
+To start with a simple example, make COMMAND refer to a statically
+linked binary. If you were to use a dynamically linked executable, then
+you'd have to arrange to have the shared libraries in the right place
+under your new root directory.
+
+ For example, if you create a statically linked `ls' executable, and
+put it in `/tmp/empty', you can run this command as root:
+
+ $ chroot /tmp/empty /ls -Rl /
+
+ Then you'll see output like this:
+
+ /:
+ total 1023
+ -rwxr-xr-x 1 0 0 1041745 Aug 16 11:17 ls
+
+ If you want to use a dynamically linked executable, say `bash', then
+first run `ldd bash' to see what shared objects it needs. Then, in
+addition to copying the actual binary, also copy the listed files to
+the required positions under your intended new root directory.
+Finally, if the executable requires any other files (e.g., data, state,
+device files), copy them into place, too.
+
+ Exit status:
+
+ 1 if `chroot' itself fails
+ 126 if COMMAND is found but cannot be invoked
+ 127 if COMMAND cannot be found
+ the exit status of COMMAND otherwise
+
+
+File: coreutils.info, Node: env invocation, Next: nice invocation, Prev: chroot invocation, Up: Modified command invocation
+
+22.2 `env': Run a command in a modified environment
+===================================================
+
+`env' runs a command with a modified environment. Synopses:
+
+ env [OPTION]... [NAME=VALUE]... [COMMAND [ARGS]...]
+ env
+
+ Operands of the form `VARIABLE=VALUE' set the environment variable
+VARIABLE to value VALUE. VALUE may be empty (`VARIABLE='). Setting a
+variable to an empty value is different from unsetting it. These
+operands are evaluated left-to-right, so if two operands mention the
+same variable the earlier is ignored.
+
+ Environment variable names can be empty, and can contain any
+characters other than `=' and the null character (ASCII NUL). However,
+it is wise to limit yourself to names that consist solely of
+underscores, digits, and ASCII letters, and that begin with a
+non-digit, as applications like the shell do not work well with other
+names.
+
+ The first operand that does not contain the character `=' specifies
+the program to invoke; it is searched for according to the `PATH'
+environment variable. Any remaining arguments are passed as arguments
+to that program. The program should not be a special built-in utility
+(*note Special built-in utilities::).
+
+ If no command name is specified following the environment
+specifications, the resulting environment is printed. This is like
+specifying the `printenv' program.
+
+ The program accepts the following options. Also see *Note Common
+options::. Options must precede operands.
+
+`-u NAME'
+`--unset=NAME'
+ Remove variable NAME from the environment, if it was in the
+ environment.
+
+`-'
+`-i'
+`--ignore-environment'
+ Start with an empty environment, ignoring the inherited
+ environment.
+
+
+ Exit status:
+
+ 0 if no COMMAND is specified and the environment is output
+ 1 if `env' itself fails
+ 126 if COMMAND is found but cannot be invoked
+ 127 if COMMAND cannot be found
+ the exit status of COMMAND otherwise
+
+
+File: coreutils.info, Node: nice invocation, Next: nohup invocation, Prev: env invocation, Up: Modified command invocation
+
+22.3 `nice': Run a command with modified niceness
+=================================================
+
+`nice' prints or modifies a process's "niceness", a parameter that
+affects whether the process is scheduled favorably. Synopsis:
+
+ nice [OPTION]... [COMMAND [ARG]...]
+
+ If no arguments are given, `nice' prints the current niceness.
+Otherwise, `nice' runs the given COMMAND with its niceness adjusted.
+By default, its niceness is incremented by 10.
+
+ Nicenesses range at least from -20 (resulting in the most favorable
+scheduling) through 19 (the least favorable). Some systems may have a
+wider range of nicenesses; conversely, other systems may enforce more
+restrictive limits. An attempt to set the niceness outside the
+supported range is treated as an attempt to use the minimum or maximum
+supported value.
+
+ A niceness should not be confused with a scheduling priority, which
+lets applications determine the order in which threads are scheduled to
+run. Unlike a priority, a niceness is merely advice to the scheduler,
+which the scheduler is free to ignore. Also, as a point of
+terminology, POSIX defines the behavior of `nice' in terms of a "nice
+value", which is the nonnegative difference between a niceness and the
+minimum niceness. Though `nice' conforms to POSIX, its documentation
+and diagnostics use the term "niceness" for compatibility with
+historical practice.
+
+ COMMAND must not be a special built-in utility (*note Special
+built-in utilities::).
+
+ Because many shells have a built-in `nice' command, using an
+unadorned `nice' in a script or interactively may get you different
+functionality than that described here.
+
+ The program accepts the following option. Also see *Note Common
+options::. Options must precede operands.
+
+`-n ADJUSTMENT'
+`--adjustment=ADJUSTMENT'
+ Add ADJUSTMENT instead of 10 to the command's niceness. If
+ ADJUSTMENT is negative and you lack appropriate privileges, `nice'
+ issues a warning but otherwise acts as if you specified a zero
+ adjustment.
+
+ For compatibility `nice' also supports an obsolete option syntax
+ `-ADJUSTMENT'. New scripts should use `-n ADJUSTMENT' instead.
+
+
+ Exit status:
+
+ 0 if no COMMAND is specified and the niceness is output
+ 1 if `nice' itself fails
+ 126 if COMMAND is found but cannot be invoked
+ 127 if COMMAND cannot be found
+ the exit status of COMMAND otherwise
+
+ It is sometimes useful to run a non-interactive program with reduced
+niceness.
+
+ $ nice factor 4611686018427387903
+
+ Since `nice' prints the current niceness, you can invoke it through
+itself to demonstrate how it works.
+
+ The default behavior is to increase the niceness by `10':
+
+ $ nice
+ 0
+ $ nice nice
+ 10
+ $ nice -n 10 nice
+ 10
+
+ The ADJUSTMENT is relative to the current niceness. In the next
+example, the first `nice' invocation runs the second one with niceness
+10, and it in turn runs the final one with a niceness that is 3 more:
+
+ $ nice nice -n 3 nice
+ 13
+
+ Specifying a niceness larger than the supported range is the same as
+specifying the maximum supported value:
+
+ $ nice -n 10000000000 nice
+ 19
+
+ Only a privileged user may run a process with lower niceness:
+
+ $ nice -n -1 nice
+ nice: cannot set niceness: Permission denied
+ 0
+ $ sudo nice -n -1 nice
+ -1
+
+
+File: coreutils.info, Node: nohup invocation, Next: su invocation, Prev: nice invocation, Up: Modified command invocation
+
+22.4 `nohup': Run a command immune to hangups
+=============================================
+
+`nohup' runs the given COMMAND with hangup signals ignored, so that the
+command can continue running in the background after you log out.
+Synopsis:
+
+ nohup COMMAND [ARG]...
+
+ If standard input is a terminal, it is redirected from `/dev/null'
+so that terminal sessions do not mistakenly consider the terminal to be
+used by the command. This is a GNU extension; programs intended to be
+portable to non-GNU hosts should use `nohup COMMAND [ARG]... </dev/null'
+instead.
+
+ If standard output is a terminal, the command's standard output is
+appended to the file `nohup.out'; if that cannot be written to, it is
+appended to the file `$HOME/nohup.out'; and if that cannot be written
+to, the command is not run. Any `nohup.out' or `$HOME/nohup.out' file
+created by `nohup' is made readable and writable only to the user,
+regardless of the current umask settings.
+
+ If standard error is a terminal, it is normally redirected to the
+same file descriptor as the (possibly-redirected) standard output.
+However, if standard output is closed, standard error terminal output
+is instead appended to the file `nohup.out' or `$HOME/nohup.out' as
+above.
+
+ `nohup' does not automatically put the command it runs in the
+background; you must do that explicitly, by ending the command line
+with an `&'. Also, `nohup' does not alter the niceness of COMMAND; use
+`nice' for that, e.g., `nohup nice COMMAND'.
+
+ COMMAND must not be a special built-in utility (*note Special
+built-in utilities::).
+
+ The only options are `--help' and `--version'. *Note Common
+options::. Options must precede operands.
+
+ Exit status:
+
+ 126 if COMMAND is found but cannot be invoked
+ 127 if `nohup' itself fails or if COMMAND cannot be found
+ the exit status of COMMAND otherwise
+
+
+File: coreutils.info, Node: su invocation, Prev: nohup invocation, Up: Modified command invocation
+
+22.5 `su': Run a command with substitute user and group ID
+==========================================================
+
+`su' allows one user to temporarily become another user. It runs a
+command (often an interactive shell) with the real and effective user
+ID, group ID, and supplemental groups of a given USER. Synopsis:
+
+ su [OPTION]... [USER [ARG]...]
+
+ If no USER is given, the default is `root', the super-user. The
+shell to use is taken from USER's `passwd' entry, or `/bin/sh' if none
+is specified there. If USER has a password, `su' prompts for the
+password unless run by a user with effective user ID of zero (the
+super-user).
+
+ By default, `su' does not change the current directory. It sets the
+environment variables `HOME' and `SHELL' from the password entry for
+USER, and if USER is not the super-user, sets `USER' and `LOGNAME' to
+USER. By default, the shell is not a login shell.
+
+ Any additional ARGs are passed as additional arguments to the shell.
+
+ GNU `su' does not treat `/bin/sh' or any other shells specially
+(e.g., by setting `argv[0]' to `-su', passing `-c' only to certain
+shells, etc.).
+
+ `su' can optionally be compiled to use `syslog' to report failed,
+and optionally successful, `su' attempts. (If the system supports
+`syslog'.) However, GNU `su' does not check if the user is a member of
+the `wheel' group; see below.
+
+ The program accepts the following options. Also see *Note Common
+options::.
+
+`-c COMMAND'
+`--command=COMMAND'
+ Pass COMMAND, a single command line to run, to the shell with a
+ `-c' option instead of starting an interactive shell.
+
+`-f'
+`--fast'
+ Pass the `-f' option to the shell. This probably only makes sense
+ if the shell run is `csh' or `tcsh', for which the `-f' option
+ prevents reading the startup file (`.cshrc'). With Bourne-like
+ shells, the `-f' option disables file name pattern expansion
+ (globbing), which is not likely to be useful.
+
+`-'
+`-l'
+`--login'
+ Make the shell a login shell. This means the following. Unset all
+ environment variables except `TERM', `HOME', and `SHELL' (which
+ are set as described above), and `USER' and `LOGNAME' (which are
+ set, even for the super-user, as described above), and set `PATH'
+ to a compiled-in default value. Change to USER's home directory.
+ Prepend `-' to the shell's name, intended to make it read its
+ login startup file(s).
+
+`-m'
+`-p'
+`--preserve-environment'
+ Do not change the environment variables `HOME', `USER', `LOGNAME',
+ or `SHELL'. Run the shell given in the environment variable
+ `SHELL' instead of the shell from USER's passwd entry, unless the
+ user running `su' is not the super-user and USER's shell is
+ restricted. A "restricted shell" is one that is not listed in the
+ file `/etc/shells', or in a compiled-in list if that file does not
+ exist. Parts of what this option does can be overridden by
+ `--login' and `--shell'.
+
+`-s SHELL'
+`--shell=SHELL'
+ Run SHELL instead of the shell from USER's passwd entry, unless
+ the user running `su' is not the super-user and USER's shell is
+ restricted (see `-m' just above).
+
+
+ Exit status:
+
+ 1 if `su' itself fails
+ 126 if subshell is found but cannot be invoked
+ 127 if subshell cannot be found
+ the exit status of the subshell otherwise
+
+22.5.1 Why GNU `su' does not support the `wheel' group
+------------------------------------------------------
+
+(This section is by Richard Stallman.)
+
+ Sometimes a few of the users try to hold total power over all the
+rest. For example, in 1984, a few users at the MIT AI lab decided to
+seize power by changing the operator password on the Twenex system and
+keeping it secret from everyone else. (I was able to thwart this coup
+and give power back to the users by patching the kernel, but I wouldn't
+know how to do that in Unix.)
+
+ However, occasionally the rulers do tell someone. Under the usual
+`su' mechanism, once someone learns the root password who sympathizes
+with the ordinary users, he or she can tell the rest. The "wheel
+group" feature would make this impossible, and thus cement the power of
+the rulers.
+
+ I'm on the side of the masses, not that of the rulers. If you are
+used to supporting the bosses and sysadmins in whatever they do, you
+might find this idea strange at first.
+
+
+File: coreutils.info, Node: Process control, Next: Delaying, Prev: Modified command invocation, Up: Top
+
+23 Process control
+******************
+
+* Menu:
+
+* kill invocation:: Sending a signal to processes.
+
+
+File: coreutils.info, Node: kill invocation, Up: Process control
+
+23.1 `kill': Send a signal to processes
+=======================================
+
+The `kill' command sends a signal to processes, causing them to
+terminate or otherwise act upon receiving the signal in some way.
+Alternatively, it lists information about signals. Synopses:
+
+ kill [-s SIGNAL | --signal SIGNAL | -SIGNAL] PID...
+ kill [-l | --list | -t | --table] [SIGNAL]...
+
+ The first form of the `kill' command sends a signal to all PID
+arguments. The default signal to send if none is specified is `TERM'.
+The special signal number `0' does not denote a valid signal, but can
+be used to test whether the PID arguments specify processes to which a
+signal could be sent.
+
+ If PID is positive, the signal is sent to the process with the
+process ID PID. If PID is zero, the signal is sent to all processes in
+the process group of the current process. If PID is -1, the signal is
+sent to all processes for which the user has permission to send a
+signal. If PID is less than -1, the signal is sent to all processes in
+the process group that equals the absolute value of PID.
+
+ If PID is not positive, a system-dependent set of system processes
+is excluded from the list of processes to which the signal is sent.
+
+ If a negative PID argument is desired as the first one, it should be
+preceded by `--'. However, as a common extension to POSIX, `--' is not
+required with `kill -SIGNAL -PID'. The following commands are
+equivalent:
+
+ kill -15 -1
+ kill -TERM -1
+ kill -s TERM -- -1
+ kill -- -1
+
+ The first form of the `kill' command succeeds if every PID argument
+specifies at least one process that the signal was sent to.
+
+ The second form of the `kill' command lists signal information.
+Either the `-l' or `--list' option, or the `-t' or `--table' option
+must be specified. Without any SIGNAL argument, all supported signals
+are listed. The output of `-l' or `--list' is a list of the signal
+names, one per line; if SIGNAL is already a name, the signal number is
+printed instead. The output of `-t' or `--table' is a table of signal
+numbers, names, and descriptions. This form of the `kill' command
+succeeds if all SIGNAL arguments are valid and if there is no output
+error.
+
+ The `kill' command also supports the `--help' and `--version'
+options. *Note Common options::.
+
+ A SIGNAL may be a signal name like `HUP', or a signal number like
+`1', or an exit status of a process terminated by the signal. A signal
+name can be given in canonical form or prefixed by `SIG'. The case of
+the letters is ignored, except for the `-SIGNAL' option which must use
+upper case to avoid ambiguity with lower case option letters. The
+following signal names and numbers are supported on all POSIX compliant
+systems:
+
+`HUP'
+ 1. Hangup.
+
+`INT'
+ 2. Terminal interrupt.
+
+`QUIT'
+ 3. Terminal quit.
+
+`ABRT'
+ 6. Process abort.
+
+`KILL'
+ 9. Kill (cannot be caught or ignored).
+
+`ALRM'
+ 14. Alarm Clock.
+
+`TERM'
+ 15. Termination.
+
+Other supported signal names have system-dependent corresponding
+numbers. All systems conforming to POSIX 1003.1-2001 also support the
+following signals:
+
+`BUS'
+ Access to an undefined portion of a memory object.
+
+`CHLD'
+ Child process terminated, stopped, or continued.
+
+`CONT'
+ Continue executing, if stopped.
+
+`FPE'
+ Erroneous arithmetic operation.
+
+`ILL'
+ Illegal Instruction.
+
+`PIPE'
+ Write on a pipe with no one to read it.
+
+`SEGV'
+ Invalid memory reference.
+
+`STOP'
+ Stop executing (cannot be caught or ignored).
+
+`TSTP'
+ Terminal stop.
+
+`TTIN'
+ Background process attempting read.
+
+`TTOU'
+ Background process attempting write.
+
+`URG'
+ High bandwidth data is available at a socket.
+
+`USR1'
+ User-defined signal 1.
+
+`USR2'
+ User-defined signal 2.
+
+POSIX 1003.1-2001 systems that support the XSI extension also support
+the following signals:
+
+`POLL'
+ Pollable event.
+
+`PROF'
+ Profiling timer expired.
+
+`SYS'
+ Bad system call.
+
+`TRAP'
+ Trace/breakpoint trap.
+
+`VTALRM'
+ Virtual timer expired.
+
+`XCPU'
+ CPU time limit exceeded.
+
+`XFSZ'
+ File size limit exceeded.
+
+POSIX 1003.1-2001 systems that support the XRT extension also support
+at least eight real-time signals called `RTMIN', `RTMIN+1', ...,
+`RTMAX-1', `RTMAX'.
+
+
+File: coreutils.info, Node: Delaying, Next: Numeric operations, Prev: Process control, Up: Top
+
+24 Delaying
+***********
+
+* Menu:
+
+* sleep invocation:: Delay for a specified time.
+
+
+File: coreutils.info, Node: sleep invocation, Up: Delaying
+
+24.1 `sleep': Delay for a specified time
+========================================
+
+`sleep' pauses for an amount of time specified by the sum of the values
+of the command line arguments. Synopsis:
+
+ sleep NUMBER[smhd]...
+
+ Each argument is a number followed by an optional unit; the default
+is seconds. The units are:
+
+`s'
+ seconds
+
+`m'
+ minutes
+
+`h'
+ hours
+
+`d'
+ days
+
+ Historical implementations of `sleep' have required that NUMBER be
+an integer, and only accepted a single argument without a suffix.
+However, GNU `sleep' accepts arbitrary floating point numbers (using a
+period before any fractional digits).
+
+ The only options are `--help' and `--version'. *Note Common
+options::.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: Numeric operations, Next: File permissions, Prev: Delaying, Up: Top
+
+25 Numeric operations
+*********************
+
+These programs do numerically-related operations.
+
+* Menu:
+
+* factor invocation:: Show factors of numbers.
+* seq invocation:: Print sequences of numbers.
+
+
+File: coreutils.info, Node: factor invocation, Next: seq invocation, Up: Numeric operations
+
+25.1 `factor': Print prime factors
+==================================
+
+`factor' prints prime factors. Synopses:
+
+ factor [NUMBER]...
+ factor OPTION
+
+ If no NUMBER is specified on the command line, `factor' reads
+numbers from standard input, delimited by newlines, tabs, or spaces.
+
+ The only options are `--help' and `--version'. *Note Common
+options::.
+
+ The algorithm it uses is not very sophisticated, so for some inputs
+`factor' runs for a long time. The hardest numbers to factor are the
+products of large primes. Factoring the product of the two largest
+32-bit prime numbers takes about 80 seconds of CPU time on a 1.6 GHz
+Athlon.
+
+ $ p=`echo '4294967279 * 4294967291'|bc`
+ $ factor $p
+ 18446743979220271189: 4294967279 4294967291
+
+ Similarly, it takes about 80 seconds for GNU factor (from
+coreutils-5.1.2) to "factor" the largest 64-bit prime:
+
+ $ factor 18446744073709551557
+ 18446744073709551557: 18446744073709551557
+
+ In contrast, `factor' factors the largest 64-bit number in just over
+a tenth of a second:
+
+ $ factor `echo '2^64-1'|bc`
+ 18446744073709551615: 3 5 17 257 641 65537 6700417
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: seq invocation, Prev: factor invocation, Up: Numeric operations
+
+25.2 `seq': Print numeric sequences
+===================================
+
+`seq' prints a sequence of numbers to standard output. Synopses:
+
+ seq [OPTION]... LAST
+ seq [OPTION]... FIRST LAST
+ seq [OPTION]... FIRST INCREMENT LAST
+
+ `seq' prints the numbers from FIRST to LAST by INCREMENT. By
+default, each number is printed on a separate line. When INCREMENT is
+not specified, it defaults to `1', even when FIRST is larger than LAST.
+FIRST also defaults to `1'. So `seq 1' prints `1', but `seq 0' and
+`seq 10 5' produce no output. Floating-point numbers may be specified
+(using a period before any fractional digits).
+
+ The program accepts the following options. Also see *Note Common
+options::. Options must precede operands.
+
+`-f FORMAT'
+`--format=FORMAT'
+ Print all numbers using FORMAT. FORMAT must contain exactly one
+ of the `printf'-style floating point conversion specifications
+ `%a', `%e', `%f', `%g', `%A', `%E', `%F', `%G'. The `%' may be
+ followed by zero or more flags taken from the set `-+#0 '', then
+ an optional width containing one or more digits, then an optional
+ precision consisting of a `.' followed by zero or more digits.
+ FORMAT may also contain any number of `%%' conversion
+ specifications. All conversion specifications have the same
+ meaning as with `printf'.
+
+ The default format is derived from FIRST, STEP, and LAST. If
+ these all use a fixed point decimal representation, the default
+ format is `%.Pf', where P is the minimum precision that can
+ represent the output numbers exactly. Otherwise, the default
+ format is `%g'.
+
+`-s STRING'
+`--separator=STRING'
+ Separate numbers with STRING; default is a newline. The output
+ always terminates with a newline.
+
+`-w'
+`--equal-width'
+ Print all numbers with the same width, by padding with leading
+ zeros. FIRST, STEP, and LAST should all use a fixed point decimal
+ representation. (To have other kinds of padding, use `--format').
+
+
+ You can get finer-grained control over output with `-f':
+
+ $ seq -f '(%9.2E)' -9e5 1.1e6 1.3e6
+ (-9.00E+05)
+ ( 2.00E+05)
+ ( 1.30E+06)
+
+ If you want hexadecimal integer output, you can use `printf' to
+perform the conversion:
+
+ $ printf '%x\n' `seq 1048575 1024 1050623`
+ fffff
+ 1003ff
+ 1007ff
+
+ For very long lists of numbers, use xargs to avoid system
+limitations on the length of an argument list:
+
+ $ seq 1000000 | xargs printf '%x\n' | tail -n 3
+ f423e
+ f423f
+ f4240
+
+ To generate octal output, use the printf `%o' format instead of `%x'.
+
+ On most systems, seq can produce whole-number output for values up to
+at least `2^53'. Larger integers are approximated. The details differ
+depending on your floating-point implementation, but a common case is
+that `seq' works with integers through `2^64', and larger integers may
+not be numerically correct:
+
+ $ seq 18446744073709551616 1 18446744073709551618
+ 18446744073709551616
+ 18446744073709551616
+ 18446744073709551618
+
+ Be careful when using `seq' with a fractional INCREMENT; otherwise
+you may see surprising results. Most people would expect to see
+`0.000003' printed as the last number in this example:
+
+ $ seq -s ' ' 0 0.000001 0.000003
+ 0.000000 0.000001 0.000002
+
+ But that doesn't happen on many systems because `seq' is implemented
+using binary floating point arithmetic (via the C `long double'
+type)--which means decimal fractions like `0.000001' cannot be
+represented exactly. That in turn means some nonintuitive conditions
+like `0.000001 * 3 > 0.000003' will end up being true.
+
+ To work around that in the above example, use a slightly larger
+number as the LAST value:
+
+ $ seq -s ' ' 0 0.000001 0.0000031
+ 0.000000 0.000001 0.000002 0.000003
+
+ In general, when using an INCREMENT with a fractional part, where
+(LAST - FIRST) / INCREMENT is (mathematically) a whole number, specify
+a slightly larger (or smaller, if INCREMENT is negative) value for LAST
+to ensure that LAST is the final value printed by seq.
+
+ An exit status of zero indicates success, and a nonzero value
+indicates failure.
+
+
+File: coreutils.info, Node: File permissions, Next: Date input formats, Prev: Numeric operations, Up: Top
+
+26 File permissions
+*******************
+
+Each file has a set of "file mode bits" that control the kinds of
+access that users have to that file. They can be represented either in
+symbolic form or as an octal number.
+
+* Menu:
+
+* Mode Structure:: Structure of file mode bits.
+* Symbolic Modes:: Mnemonic representation of file mode bits.
+* Numeric Modes:: File mode bits as octal numbers.
+* Directory Setuid and Setgid:: Set-user-ID and set-group-ID on directories.
+
+
+File: coreutils.info, Node: Mode Structure, Next: Symbolic Modes, Up: File permissions
+
+26.1 Structure of File Mode Bits
+================================
+
+The file mode bits have two parts: the "file permission bits", which
+control ordinary access to the file, and "special mode bits", which
+affect only some files.
+
+ There are three kinds of permissions that a user can have for a file:
+
+ 1. permission to read the file. For directories, this means
+ permission to list the contents of the directory.
+
+ 2. permission to write to (change) the file. For directories, this
+ means permission to create and remove files in the directory.
+
+ 3. permission to execute the file (run it as a program). For
+ directories, this means permission to access files in the
+ directory.
+
+ There are three categories of users who may have different
+permissions to perform any of the above operations on a file:
+
+ 1. the file's owner;
+
+ 2. other users who are in the file's group;
+
+ 3. everyone else.
+
+ Files are given an owner and group when they are created. Usually
+the owner is the current user and the group is the group of the
+directory the file is in, but this varies with the operating system, the
+file system the file is created on, and the way the file is created.
+You can change the owner and group of a file by using the `chown' and
+`chgrp' commands.
+
+ In addition to the three sets of three permissions listed above, the
+file mode bits have three special components, which affect only
+executable files (programs) and, on most systems, directories:
+
+ 1. Set the process's effective user ID to that of the file upon
+ execution (called the "set-user-ID bit", or sometimes the "setuid
+ bit"). For directories on a few systems, give files created in
+ the directory the same owner as the directory, no matter who
+ creates them, and set the set-user-ID bit of newly-created
+ subdirectories.
+
+ 2. Set the process's effective group ID to that of the file upon
+ execution (called the "set-group-ID bit", or sometimes the "setgid
+ bit"). For directories on most systems, give files created in the
+ directory the same group as the directory, no matter what group
+ the user who creates them is in, and set the set-group-ID bit of
+ newly-created subdirectories.
+
+ 3. Prevent unprivileged users from removing or renaming a file in a
+ directory unless they own the file or the directory; this is
+ called the "restricted deletion flag" for the directory, and is
+ commonly found on world-writable directories like `/tmp'.
+
+ For regular files on some older systems, save the program's text
+ image on the swap device so it will load more quickly when run;
+ this is called the "sticky bit".
+
+ In addition to the file mode bits listed above, there may be file
+attributes specific to the file system, e.g., access control lists
+(ACLs), whether a file is compressed, whether a file can be modified
+(immutability), and whether a file can be dumped. These are usually
+set using programs specific to the file system. For example:
+
+ext2
+ On GNU and GNU/Linux the file attributes specific to the ext2 file
+ system are set using `chattr'.
+
+FFS
+ On FreeBSD the file flags specific to the FFS file system are set
+ using `chflags'.
+
+ Even if a file's mode bits allow an operation on that file, that
+operation may still fail, because:
+
+ * the file-system-specific attributes or flags do not permit it; or
+
+ * the file system is mounted as read-only.
+
+ For example, if the immutable attribute is set on a file, it cannot
+be modified, regardless of the fact that you may have just run `chmod
+a+w FILE'.
+
+
+File: coreutils.info, Node: Symbolic Modes, Next: Numeric Modes, Prev: Mode Structure, Up: File permissions
+
+26.2 Symbolic Modes
+===================
+
+"Symbolic modes" represent changes to files' mode bits as operations on
+single-character symbols. They allow you to modify either all or
+selected parts of files' mode bits, optionally based on their previous
+values, and perhaps on the current `umask' as well (*note Umask and
+Protection::).
+
+ The format of symbolic modes is:
+
+ [ugoa...][+-=]PERMS...[,...]
+
+where PERMS is either zero or more letters from the set `rwxXst', or a
+single letter from the set `ugo'.
+
+ The following sections describe the operators and other details of
+symbolic modes.
+
+* Menu:
+
+* Setting Permissions:: Basic operations on permissions.
+* Copying Permissions:: Copying existing permissions.
+* Changing Special Mode Bits:: Special mode bits.
+* Conditional Executability:: Conditionally affecting executability.
+* Multiple Changes:: Making multiple changes.
+* Umask and Protection:: The effect of the umask.
+
+
+File: coreutils.info, Node: Setting Permissions, Next: Copying Permissions, Up: Symbolic Modes
+
+26.2.1 Setting Permissions
+--------------------------
+
+The basic symbolic operations on a file's permissions are adding,
+removing, and setting the permission that certain users have to read,
+write, and execute or search the file. These operations have the
+following format:
+
+ USERS OPERATION PERMISSIONS
+
+The spaces between the three parts above are shown for readability only;
+symbolic modes cannot contain spaces.
+
+ The USERS part tells which users' access to the file is changed. It
+consists of one or more of the following letters (or it can be empty;
+*note Umask and Protection::, for a description of what happens then).
+When more than one of these letters is given, the order that they are
+in does not matter.
+
+`u'
+ the user who owns the file;
+
+`g'
+ other users who are in the file's group;
+
+`o'
+ all other users;
+
+`a'
+ all users; the same as `ugo'.
+
+ The OPERATION part tells how to change the affected users' access to
+the file, and is one of the following symbols:
+
+`+'
+ to add the PERMISSIONS to whatever permissions the USERS already
+ have for the file;
+
+`-'
+ to remove the PERMISSIONS from whatever permissions the USERS
+ already have for the file;
+
+`='
+ to make the PERMISSIONS the only permissions that the USERS have
+ for the file.
+
+ The PERMISSIONS part tells what kind of access to the file should be
+changed; it is normally zero or more of the following letters. As with
+the USERS part, the order does not matter when more than one letter is
+given. Omitting the PERMISSIONS part is useful only with the `='
+operation, where it gives the specified USERS no access at all to the
+file.
+
+`r'
+ the permission the USERS have to read the file;
+
+`w'
+ the permission the USERS have to write to the file;
+
+`x'
+ the permission the USERS have to execute the file, or search it if
+ it is a directory.
+
+ For example, to give everyone permission to read and write a regular
+file, but not to execute it, use:
+
+ a=rw
+
+ To remove write permission for all users other than the file's
+owner, use:
+
+ go-w
+
+The above command does not affect the access that the owner of the file
+has to it, nor does it affect whether other users can read or execute
+the file.
+
+ To give everyone except a file's owner no permission to do anything
+with that file, use the mode below. Other users could still remove the
+file, if they have write permission on the directory it is in.
+
+ go=
+
+Another way to specify the same thing is:
+
+ og-rwx
+
+
+File: coreutils.info, Node: Copying Permissions, Next: Changing Special Mode Bits, Prev: Setting Permissions, Up: Symbolic Modes
+
+26.2.2 Copying Existing Permissions
+-----------------------------------
+
+You can base a file's permissions on its existing permissions. To do
+this, instead of using a series of `r', `w', or `x' letters after the
+operator, you use the letter `u', `g', or `o'. For example, the mode
+
+ o+g
+
+adds the permissions for users who are in a file's group to the
+permissions that other users have for the file. Thus, if the file
+started out as mode 664 (`rw-rw-r--'), the above mode would change it
+to mode 666 (`rw-rw-rw-'). If the file had started out as mode 741
+(`rwxr----x'), the above mode would change it to mode 745
+(`rwxr--r-x'). The `-' and `=' operations work analogously.
+
+
+File: coreutils.info, Node: Changing Special Mode Bits, Next: Conditional Executability, Prev: Copying Permissions, Up: Symbolic Modes
+
+26.2.3 Changing Special Mode Bits
+---------------------------------
+
+In addition to changing a file's read, write, and execute/search
+permissions, you can change its special mode bits. *Note Mode
+Structure::, for a summary of these special mode bits.
+
+ To change the file mode bits to set the user ID on execution, use
+`u' in the USERS part of the symbolic mode and `s' in the PERMISSIONS
+part.
+
+ To change the file mode bits to set the group ID on execution, use
+`g' in the USERS part of the symbolic mode and `s' in the PERMISSIONS
+part.
+
+ To set both user and group ID on execution, omit the USERS part of
+the symbolic mode (or use `a') and use `s' in the PERMISSIONS part.
+
+ To change the file mode bits to set the restricted deletion flag or
+sticky bit, omit the USERS part of the symbolic mode (or use `a') and
+use `t' in the PERMISSIONS part.
+
+ For example, to set the set-user-ID mode bit of a program, you can
+use the mode:
+
+ u+s
+
+ To remove both set-user-ID and set-group-ID mode bits from it, you
+can use the mode:
+
+ a-s
+
+ To set the restricted deletion flag or sticky bit, you can use the
+mode:
+
+ +t
+
+ The combination `o+s' has no effect. On GNU systems the
+combinations `u+t' and `g+t' have no effect, and `o+t' acts like plain
+`+t'.
+
+ The `=' operator is not very useful with special mode bits. For
+example, the mode:
+
+ o=t
+
+does set the restricted deletion flag or sticky bit, but it also
+removes all read, write, and execute/search permissions that users not
+in the file's group might have had for it.
+
+ *Note Directory Setuid and Setgid::, for additional rules concerning
+set-user-ID and set-group-ID bits and directories.
+
+
+File: coreutils.info, Node: Conditional Executability, Next: Multiple Changes, Prev: Changing Special Mode Bits, Up: Symbolic Modes
+
+26.2.4 Conditional Executability
+--------------------------------
+
+There is one more special type of symbolic permission: if you use `X'
+instead of `x', execute/search permission is affected only if the file
+is a directory or already had execute permission.
+
+ For example, this mode:
+
+ a+X
+
+gives all users permission to search directories, or to execute files if
+anyone could execute them before.
+
+
+File: coreutils.info, Node: Multiple Changes, Next: Umask and Protection, Prev: Conditional Executability, Up: Symbolic Modes
+
+26.2.5 Making Multiple Changes
+------------------------------
+
+The format of symbolic modes is actually more complex than described
+above (*note Setting Permissions::). It provides two ways to make
+multiple changes to files' mode bits.
+
+ The first way is to specify multiple OPERATION and PERMISSIONS parts
+after a USERS part in the symbolic mode.
+
+ For example, the mode:
+
+ og+rX-w
+
+gives users other than the owner of the file read permission and, if it
+is a directory or if someone already had execute permission to it,
+gives them execute/search permission; and it also denies them write
+permission to the file. It does not affect the permission that the
+owner of the file has for it. The above mode is equivalent to the two
+modes:
+
+ og+rX
+ og-w
+
+ The second way to make multiple changes is to specify more than one
+simple symbolic mode, separated by commas. For example, the mode:
+
+ a+r,go-w
+
+gives everyone permission to read the file and removes write permission
+on it for all users except its owner. Another example:
+
+ u=rwx,g=rx,o=
+
+sets all of the permission bits for the file explicitly. (It gives
+users who are not in the file's group no permission at all for it.)
+
+ The two methods can be combined. The mode:
+
+ a+r,g+x-w
+
+gives all users permission to read the file, and gives users who are in
+the file's group permission to execute/search it as well, but not
+permission to write to it. The above mode could be written in several
+different ways; another is:
+
+ u+r,g+rx,o+r,g-w
+
+
+File: coreutils.info, Node: Umask and Protection, Prev: Multiple Changes, Up: Symbolic Modes
+
+26.2.6 The Umask and Protection
+-------------------------------
+
+If the USERS part of a symbolic mode is omitted, it defaults to `a'
+(affect all users), except that any permissions that are _set_ in the
+system variable `umask' are _not affected_. The value of `umask' can
+be set using the `umask' command. Its default value varies from system
+to system.
+
+ Omitting the USERS part of a symbolic mode is generally not useful
+with operations other than `+'. It is useful with `+' because it
+allows you to use `umask' as an easily customizable protection against
+giving away more permission to files than you intended to.
+
+ As an example, if `umask' has the value 2, which removes write
+permission for users who are not in the file's group, then the mode:
+
+ +w
+
+adds permission to write to the file to its owner and to other users who
+are in the file's group, but _not_ to other users. In contrast, the
+mode:
+
+ a+w
+
+ignores `umask', and _does_ give write permission for the file to all
+users.
+
+
+File: coreutils.info, Node: Numeric Modes, Next: Directory Setuid and Setgid, Prev: Symbolic Modes, Up: File permissions
+
+26.3 Numeric Modes
+==================
+
+As an alternative to giving a symbolic mode, you can give an octal
+(base 8) number that represents the mode. This number is always
+interpreted in octal; you do not have to add a leading `0', as you do
+in C. Mode `0055' is the same as mode `55'.
+
+ A numeric mode is usually shorter than the corresponding symbolic
+mode, but it is limited in that normally it cannot take into account the
+previous file mode bits; it can only set them absolutely. (As
+discussed in the next section, the set-user-ID and set-group-ID bits of
+directories are an exception to this general limitation.)
+
+ The permissions granted to the user, to other users in the file's
+group, and to other users not in the file's group each require three
+bits, which are represented as one octal digit. The three special mode
+bits also require one bit each, and they are as a group represented as
+another octal digit. Here is how the bits are arranged, starting with
+the lowest valued bit:
+
+ Value in Corresponding
+ Mode Mode Bit
+
+ Other users not in the file's group:
+ 1 Execute/search
+ 2 Write
+ 4 Read
+
+ Other users in the file's group:
+ 10 Execute/search
+ 20 Write
+ 40 Read
+
+ The file's owner:
+ 100 Execute/search
+ 200 Write
+ 400 Read
+
+ Special mode bits:
+ 1000 Restricted deletion flag or sticky bit
+ 2000 Set group ID on execution
+ 4000 Set user ID on execution
+
+ For example, numeric mode `4755' corresponds to symbolic mode
+`u=rwxs,go=rx', and numeric mode `664' corresponds to symbolic mode
+`ug=rw,o=r'. Numeric mode `0' corresponds to symbolic mode `a='.
+
+
+File: coreutils.info, Node: Directory Setuid and Setgid, Prev: Numeric Modes, Up: File permissions
+
+26.4 Directories and the Set-User-ID and Set-Group-ID Bits
+==========================================================
+
+On most systems, if a directory's set-group-ID bit is set, newly
+created subfiles inherit the same group as the directory, and newly
+created subdirectories inherit the set-group-ID bit of the parent
+directory. On a few systems, a directory's set-user-ID bit has a
+similar effect on the ownership of new subfiles and the set-user-ID
+bits of new subdirectories. These mechanisms let users share files
+more easily, by lessening the need to use `chmod' or `chown' to share
+new files.
+
+ These convenience mechanisms rely on the set-user-ID and set-group-ID
+bits of directories. If commands like `chmod' and `mkdir' routinely
+cleared these bits on directories, the mechanisms would be less
+convenient and it would be harder to share files. Therefore, a command
+like `chmod' does not affect the set-user-ID or set-group-ID bits of a
+directory unless the user specifically mentions them in a symbolic
+mode, or sets them in a numeric mode. For example, on systems that
+support set-group-ID inheritance:
+
+ # These commands leave the set-user-ID and
+ # set-group-ID bits of the subdirectories alone,
+ # so that they retain their default values.
+ mkdir A B C
+ chmod 755 A
+ chmod 0755 B
+ chmod u=rwx,go=rx C
+ mkdir -m 755 D
+ mkdir -m 0755 E
+ mkdir -m u=rwx,go=rx F
+
+ If you want to try to set these bits, you must mention them
+explicitly in the symbolic or numeric modes, e.g.:
+
+ # These commands try to set the set-user-ID
+ # and set-group-ID bits of the subdirectories.
+ mkdir G H
+ chmod 6755 G
+ chmod u=rwx,go=rx,a+s H
+ mkdir -m 6755 I
+ mkdir -m u=rwx,go=rx,a+s J
+
+ If you want to try to clear these bits, you must mention them
+explicitly in a symbolic mode, e.g.:
+
+ # This command tries to clear the set-user-ID
+ # and set-group-ID bits of the directory D.
+ chmod a-s D
+
+ This behavior is a GNU extension. Portable scripts should not rely
+on requests to set or clear these bits on directories, as POSIX allows
+implementations to ignore these requests.
+
+
+File: coreutils.info, Node: Date input formats, Next: Opening the software toolbox, Prev: File permissions, Up: Top
+
+27 Date input formats
+*********************
+
+First, a quote:
+
+ Our units of temporal measurement, from seconds on up to months,
+ are so complicated, asymmetrical and disjunctive so as to make
+ coherent mental reckoning in time all but impossible. Indeed, had
+ some tyrannical god contrived to enslave our minds to time, to
+ make it all but impossible for us to escape subjection to sodden
+ routines and unpleasant surprises, he could hardly have done
+ better than handing down our present system. It is like a set of
+ trapezoidal building blocks, with no vertical or horizontal
+ surfaces, like a language in which the simplest thought demands
+ ornate constructions, useless particles and lengthy
+ circumlocutions. Unlike the more successful patterns of language
+ and science, which enable us to face experience boldly or at least
+ level-headedly, our system of temporal calculation silently and
+ persistently encourages our terror of time.
+
+ ... It is as though architects had to measure length in feet,
+ width in meters and height in ells; as though basic instruction
+ manuals demanded a knowledge of five different languages. It is
+ no wonder then that we often look into our own immediate past or
+ future, last Tuesday or a week from Sunday, with feelings of
+ helpless confusion. ...
+
+ -- Robert Grudin, `Time and the Art of Living'.
+
+ This section describes the textual date representations that GNU
+programs accept. These are the strings you, as a user, can supply as
+arguments to the various programs. The C interface (via the `get_date'
+function) is not described here.
+
+* Menu:
+
+* General date syntax:: Common rules.
+* Calendar date items:: 19 Dec 1994.
+* Time of day items:: 9:20pm.
+* Time zone items:: EST, PDT, GMT.
+* Day of week items:: Monday and others.
+* Relative items in date strings:: next tuesday, 2 years ago.
+* Pure numbers in date strings:: 19931219, 1440.
+* Seconds since the Epoch:: @1078100502.
+* Specifying time zone rules:: TZ="America/New_York", TZ="UTC0".
+* Authors of get_date:: Bellovin, Eggert, Salz, Berets, et al.
+
+
+File: coreutils.info, Node: General date syntax, Next: Calendar date items, Up: Date input formats
+
+27.1 General date syntax
+========================
+
+A "date" is a string, possibly empty, containing many items separated
+by whitespace. The whitespace may be omitted when no ambiguity arises.
+The empty string means the beginning of today (i.e., midnight). Order
+of the items is immaterial. A date string may contain many flavors of
+items:
+
+ * calendar date items
+
+ * time of day items
+
+ * time zone items
+
+ * day of the week items
+
+ * relative items
+
+ * pure numbers.
+
+We describe each of these item types in turn, below.
+
+ A few ordinal numbers may be written out in words in some contexts.
+This is most useful for specifying day of the week items or relative
+items (see below). Among the most commonly used ordinal numbers, the
+word `last' stands for -1, `this' stands for 0, and `first' and `next'
+both stand for 1. Because the word `second' stands for the unit of
+time there is no way to write the ordinal number 2, but for convenience
+`third' stands for 3, `fourth' for 4, `fifth' for 5, `sixth' for 6,
+`seventh' for 7, `eighth' for 8, `ninth' for 9, `tenth' for 10,
+`eleventh' for 11 and `twelfth' for 12.
+
+ When a month is written this way, it is still considered to be
+written numerically, instead of being "spelled in full"; this changes
+the allowed strings.
+
+ In the current implementation, only English is supported for words
+and abbreviations like `AM', `DST', `EST', `first', `January',
+`Sunday', `tomorrow', and `year'.
+
+ The output of the `date' command is not always acceptable as a date
+string, not only because of the language problem, but also because
+there is no standard meaning for time zone items like `IST'. When using
+`date' to generate a date string intended to be parsed later, specify a
+date format that is independent of language and that does not use time
+zone items other than `UTC' and `Z'. Here are some ways to do this:
+
+ $ LC_ALL=C TZ=UTC0 date
+ Mon Mar 1 00:21:42 UTC 2004
+ $ TZ=UTC0 date +'%Y-%m-%d %H:%M:%SZ'
+ 2004-03-01 00:21:42Z
+ $ date --iso-8601=ns | tr T ' ' # --iso-8601 is a GNU extension.
+ 2004-02-29 16:21:42,692722128-0800
+ $ date --rfc-2822 # a GNU extension
+ Sun, 29 Feb 2004 16:21:42 -0800
+ $ date +'%Y-%m-%d %H:%M:%S %z' # %z is a GNU extension.
+ 2004-02-29 16:21:42 -0800
+ $ date +'@%s.%N' # %s and %N are GNU extensions.
+ @1078100502.692722128
+
+ Alphabetic case is completely ignored in dates. Comments may be
+introduced between round parentheses, as long as included parentheses
+are properly nested. Hyphens not followed by a digit are currently
+ignored. Leading zeros on numbers are ignored.
+
+ Invalid dates like `2005-02-29' or times like `24:00' are rejected.
+In the typical case of a host that does not support leap seconds, a
+time like `23:59:60' is rejected even if it corresponds to a valid leap
+second.
+
+
+File: coreutils.info, Node: Calendar date items, Next: Time of day items, Prev: General date syntax, Up: Date input formats
+
+27.2 Calendar date items
+========================
+
+A "calendar date item" specifies a day of the year. It is specified
+differently, depending on whether the month is specified numerically or
+literally. All these strings specify the same calendar date:
+
+ 1972-09-24 # ISO 8601.
+ 72-9-24 # Assume 19xx for 69 through 99,
+ # 20xx for 00 through 68.
+ 72-09-24 # Leading zeros are ignored.
+ 9/24/72 # Common U.S. writing.
+ 24 September 1972
+ 24 Sept 72 # September has a special abbreviation.
+ 24 Sep 72 # Three-letter abbreviations always allowed.
+ Sep 24, 1972
+ 24-sep-72
+ 24sep72
+
+ The year can also be omitted. In this case, the last specified year
+is used, or the current year if none. For example:
+
+ 9/24
+ sep 24
+
+ Here are the rules.
+
+ For numeric months, the ISO 8601 format `YEAR-MONTH-DAY' is allowed,
+where YEAR is any positive number, MONTH is a number between 01 and 12,
+and DAY is a number between 01 and 31. A leading zero must be present
+if a number is less than ten. If YEAR is 68 or smaller, then 2000 is
+added to it; otherwise, if YEAR is less than 100, then 1900 is added to
+it. The construct `MONTH/DAY/YEAR', popular in the United States, is
+accepted. Also `MONTH/DAY', omitting the year.
+
+ Literal months may be spelled out in full: `January', `February',
+`March', `April', `May', `June', `July', `August', `September',
+`October', `November' or `December'. Literal months may be abbreviated
+to their first three letters, possibly followed by an abbreviating dot.
+It is also permitted to write `Sept' instead of `September'.
+
+ When months are written literally, the calendar date may be given as
+any of the following:
+
+ DAY MONTH YEAR
+ DAY MONTH
+ MONTH DAY YEAR
+ DAY-MONTH-YEAR
+
+ Or, omitting the year:
+
+ MONTH DAY
+
+
+File: coreutils.info, Node: Time of day items, Next: Time zone items, Prev: Calendar date items, Up: Date input formats
+
+27.3 Time of day items
+======================
+
+A "time of day item" in date strings specifies the time on a given day.
+Here are some examples, all of which represent the same time:
+
+ 20:02:00.000000
+ 20:02
+ 8:02pm
+ 20:02-0500 # In EST (U.S. Eastern Standard Time).
+
+ More generally, the time of day may be given as
+`HOUR:MINUTE:SECOND', where HOUR is a number between 0 and 23, MINUTE
+is a number between 0 and 59, and SECOND is a number between 0 and 59
+possibly followed by `.' or `,' and a fraction containing one or more
+digits. Alternatively, `:SECOND' can be omitted, in which case it is
+taken to be zero. On the rare hosts that support leap seconds, SECOND
+may be 60.
+
+ If the time is followed by `am' or `pm' (or `a.m.' or `p.m.'), HOUR
+is restricted to run from 1 to 12, and `:MINUTE' may be omitted (taken
+to be zero). `am' indicates the first half of the day, `pm' indicates
+the second half of the day. In this notation, 12 is the predecessor of
+1: midnight is `12am' while noon is `12pm'. (This is the zero-oriented
+interpretation of `12am' and `12pm', as opposed to the old tradition
+derived from Latin which uses `12m' for noon and `12pm' for midnight.)
+
+ The time may alternatively be followed by a time zone correction,
+expressed as `SHHMM', where S is `+' or `-', HH is a number of zone
+hours and MM is a number of zone minutes. You can also separate HH
+from MM with a colon. When a time zone correction is given this way, it
+forces interpretation of the time relative to Coordinated Universal
+Time (UTC), overriding any previous specification for the time zone or
+the local time zone. For example, `+0530' and `+05:30' both stand for
+the time zone 5.5 hours ahead of UTC (e.g., India). The MINUTE part of
+the time of day may not be elided when a time zone correction is used.
+This is the best way to specify a time zone correction by fractional
+parts of an hour.
+
+ Either `am'/`pm' or a time zone correction may be specified, but not
+both.
+
+
+File: coreutils.info, Node: Time zone items, Next: Day of week items, Prev: Time of day items, Up: Date input formats
+
+27.4 Time zone items
+====================
+
+A "time zone item" specifies an international time zone, indicated by a
+small set of letters, e.g., `UTC' or `Z' for Coordinated Universal
+Time. Any included periods are ignored. By following a
+non-daylight-saving time zone by the string `DST' in a separate word
+(that is, separated by some white space), the corresponding daylight
+saving time zone may be specified. Alternatively, a
+non-daylight-saving time zone can be followed by a time zone
+correction, to add the two values. This is normally done only for
+`UTC'; for example, `UTC+05:30' is equivalent to `+05:30'.
+
+ Time zone items other than `UTC' and `Z' are obsolescent and are not
+recommended, because they are ambiguous; for example, `EST' has a
+different meaning in Australia than in the United States. Instead,
+it's better to use unambiguous numeric time zone corrections like
+`-0500', as described in the previous section.
+
+ If neither a time zone item nor a time zone correction is supplied,
+time stamps are interpreted using the rules of the default time zone
+(*note Specifying time zone rules::).
+
+
+File: coreutils.info, Node: Day of week items, Next: Relative items in date strings, Prev: Time zone items, Up: Date input formats
+
+27.5 Day of week items
+======================
+
+The explicit mention of a day of the week will forward the date (only
+if necessary) to reach that day of the week in the future.
+
+ Days of the week may be spelled out in full: `Sunday', `Monday',
+`Tuesday', `Wednesday', `Thursday', `Friday' or `Saturday'. Days may
+be abbreviated to their first three letters, optionally followed by a
+period. The special abbreviations `Tues' for `Tuesday', `Wednes' for
+`Wednesday' and `Thur' or `Thurs' for `Thursday' are also allowed.
+
+ A number may precede a day of the week item to move forward
+supplementary weeks. It is best used in expression like `third
+monday'. In this context, `last DAY' or `next DAY' is also acceptable;
+they move one week before or after the day that DAY by itself would
+represent.
+
+ A comma following a day of the week item is ignored.
+
+
+File: coreutils.info, Node: Relative items in date strings, Next: Pure numbers in date strings, Prev: Day of week items, Up: Date input formats
+
+27.6 Relative items in date strings
+===================================
+
+"Relative items" adjust a date (or the current date if none) forward or
+backward. The effects of relative items accumulate. Here are some
+examples:
+
+ 1 year
+ 1 year ago
+ 3 years
+ 2 days
+
+ The unit of time displacement may be selected by the string `year'
+or `month' for moving by whole years or months. These are fuzzy units,
+as years and months are not all of equal duration. More precise units
+are `fortnight' which is worth 14 days, `week' worth 7 days, `day'
+worth 24 hours, `hour' worth 60 minutes, `minute' or `min' worth 60
+seconds, and `second' or `sec' worth one second. An `s' suffix on
+these units is accepted and ignored.
+
+ The unit of time may be preceded by a multiplier, given as an
+optionally signed number. Unsigned numbers are taken as positively
+signed. No number at all implies 1 for a multiplier. Following a
+relative item by the string `ago' is equivalent to preceding the unit
+by a multiplier with value -1.
+
+ The string `tomorrow' is worth one day in the future (equivalent to
+`day'), the string `yesterday' is worth one day in the past (equivalent
+to `day ago').
+
+ The strings `now' or `today' are relative items corresponding to
+zero-valued time displacement, these strings come from the fact a
+zero-valued time displacement represents the current time when not
+otherwise changed by previous items. They may be used to stress other
+items, like in `12:00 today'. The string `this' also has the meaning
+of a zero-valued time displacement, but is preferred in date strings
+like `this thursday'.
+
+ When a relative item causes the resulting date to cross a boundary
+where the clocks were adjusted, typically for daylight saving time, the
+resulting date and time are adjusted accordingly.
+
+ The fuzz in units can cause problems with relative items. For
+example, `2003-07-31 -1 month' might evaluate to 2003-07-01, because
+2003-06-31 is an invalid date. To determine the previous month more
+reliably, you can ask for the month before the 15th of the current
+month. For example:
+
+ $ date -R
+ Thu, 31 Jul 2003 13:02:39 -0700
+ $ date --date='-1 month' +'Last month was %B?'
+ Last month was July?
+ $ date --date="$(date +%Y-%m-15) -1 month" +'Last month was %B!'
+ Last month was June!
+
+ Also, take care when manipulating dates around clock changes such as
+daylight saving leaps. In a few cases these have added or subtracted
+as much as 24 hours from the clock, so it is often wise to adopt
+universal time by setting the `TZ' environment variable to `UTC0'
+before embarking on calendrical calculations.
+
+
+File: coreutils.info, Node: Pure numbers in date strings, Next: Seconds since the Epoch, Prev: Relative items in date strings, Up: Date input formats
+
+27.7 Pure numbers in date strings
+=================================
+
+The precise interpretation of a pure decimal number depends on the
+context in the date string.
+
+ If the decimal number is of the form YYYYMMDD and no other calendar
+date item (*note Calendar date items::) appears before it in the date
+string, then YYYY is read as the year, MM as the month number and DD as
+the day of the month, for the specified calendar date.
+
+ If the decimal number is of the form HHMM and no other time of day
+item appears before it in the date string, then HH is read as the hour
+of the day and MM as the minute of the hour, for the specified time of
+day. MM can also be omitted.
+
+ If both a calendar date and a time of day appear to the left of a
+number in the date string, but no relative item, then the number
+overrides the year.
+
+
+File: coreutils.info, Node: Seconds since the Epoch, Next: Specifying time zone rules, Prev: Pure numbers in date strings, Up: Date input formats
+
+27.8 Seconds since the Epoch
+============================
+
+If you precede a number with `@', it represents an internal time stamp
+as a count of seconds. The number can contain an internal decimal
+point (either `.' or `,'); any excess precision not supported by the
+internal representation is truncated toward minus infinity. Such a
+number cannot be combined with any other date item, as it specifies a
+complete time stamp.
+
+ Internally, computer times are represented as a count of seconds
+since an epoch--a well-defined point of time. On GNU and POSIX
+systems, the epoch is 1970-01-01 00:00:00 UTC, so `@0' represents this
+time, `@1' represents 1970-01-01 00:00:01 UTC, and so forth. GNU and
+most other POSIX-compliant systems support such times as an extension
+to POSIX, using negative counts, so that `@-1' represents 1969-12-31
+23:59:59 UTC.
+
+ Traditional Unix systems count seconds with 32-bit two's-complement
+integers and can represent times from 1901-12-13 20:45:52 through
+2038-01-19 03:14:07 UTC. More modern systems use 64-bit counts of
+seconds with nanosecond subcounts, and can represent all the times in
+the known lifetime of the universe to a resolution of 1 nanosecond.
+
+ On most hosts, these counts ignore the presence of leap seconds.
+For example, on most hosts `@915148799' represents 1998-12-31 23:59:59
+UTC, `@915148800' represents 1999-01-01 00:00:00 UTC, and there is no
+way to represent the intervening leap second 1998-12-31 23:59:60 UTC.
+
+
+File: coreutils.info, Node: Specifying time zone rules, Next: Authors of get_date, Prev: Seconds since the Epoch, Up: Date input formats
+
+27.9 Specifying time zone rules
+===============================
+
+Normally, dates are interpreted using the rules of the current time
+zone, which in turn are specified by the `TZ' environment variable, or
+by a system default if `TZ' is not set. To specify a different set of
+default time zone rules that apply just to one date, start the date
+with a string of the form `TZ="RULE"'. The two quote characters (`"')
+must be present in the date, and any quotes or backslashes within RULE
+must be escaped by a backslash.
+
+ For example, with the GNU `date' command you can answer the question
+"What time is it in New York when a Paris clock shows 6:30am on October
+31, 2004?" by using a date beginning with `TZ="Europe/Paris"' as shown
+in the following shell transcript:
+
+ $ export TZ="America/New_York"
+ $ date --date='TZ="Europe/Paris" 2004-10-31 06:30'
+ Sun Oct 31 01:30:00 EDT 2004
+
+ In this example, the `--date' operand begins with its own `TZ'
+setting, so the rest of that operand is processed according to
+`Europe/Paris' rules, treating the string `2004-10-31 06:30' as if it
+were in Paris. However, since the output of the `date' command is
+processed according to the overall time zone rules, it uses New York
+time. (Paris was normally six hours ahead of New York in 2004, but
+this example refers to a brief Halloween period when the gap was five
+hours.)
+
+ A `TZ' value is a rule that typically names a location in the `tz'
+database (http://www.twinsun.com/tz/tz-link.htm). A recent catalog of
+location names appears in the TWiki Date and Time Gateway
+(http://twiki.org/cgi-bin/xtra/tzdate). A few non-GNU hosts require a
+colon before a location name in a `TZ' setting, e.g.,
+`TZ=":America/New_York"'.
+
+ The `tz' database includes a wide variety of locations ranging from
+`Arctic/Longyearbyen' to `Antarctica/South_Pole', but if you are at sea
+and have your own private time zone, or if you are using a non-GNU host
+that does not support the `tz' database, you may need to use a POSIX
+rule instead. Simple POSIX rules like `UTC0' specify a time zone
+without daylight saving time; other rules can specify simple daylight
+saving regimes. *Note Specifying the Time Zone with `TZ': (libc)TZ
+Variable.
+
+
+File: coreutils.info, Node: Authors of get_date, Prev: Specifying time zone rules, Up: Date input formats
+
+27.10 Authors of `get_date'
+===========================
+
+`get_date' was originally implemented by Steven M. Bellovin
+(<smb@research.att.com>) while at the University of North Carolina at
+Chapel Hill. The code was later tweaked by a couple of people on
+Usenet, then completely overhauled by Rich $alz (<rsalz@bbn.com>) and
+Jim Berets (<jberets@bbn.com>) in August, 1990. Various revisions for
+the GNU system were made by David MacKenzie, Jim Meyering, Paul Eggert
+and others.
+
+ This chapter was originally produced by Franc,ois Pinard
+(<pinard@iro.umontreal.ca>) from the `getdate.y' source code, and then
+edited by K. Berry (<kb@cs.umb.edu>).
+
+
+File: coreutils.info, Node: Opening the software toolbox, Next: Copying This Manual, Prev: Date input formats, Up: Top
+
+28 Opening the Software Toolbox
+*******************************
+
+An earlier version of this chapter appeared in 2 (June 1994). It was
+written by Arnold Robbins.
+
+* Menu:
+
+* Toolbox introduction:: Toolbox introduction
+* I/O redirection:: I/O redirection
+* The who command:: The `who' command
+* The cut command:: The `cut' command
+* The sort command:: The `sort' command
+* The uniq command:: The `uniq' command
+* Putting the tools together:: Putting the tools together
+
+
+File: coreutils.info, Node: Toolbox introduction, Next: I/O redirection, Up: Opening the software toolbox
+
+Toolbox Introduction
+====================
+
+This month's column is only peripherally related to the GNU Project, in
+that it describes a number of the GNU tools on your GNU/Linux system
+and how they might be used. What it's really about is the "Software
+Tools" philosophy of program development and usage.
+
+ The software tools philosophy was an important and integral concept
+in the initial design and development of Unix (of which Linux and GNU
+are essentially clones). Unfortunately, in the modern day press of
+Internetworking and flashy GUIs, it seems to have fallen by the
+wayside. This is a shame, since it provides a powerful mental model
+for solving many kinds of problems.
+
+ Many people carry a Swiss Army knife around in their pants pockets
+(or purse). A Swiss Army knife is a handy tool to have: it has several
+knife blades, a screwdriver, tweezers, toothpick, nail file, corkscrew,
+and perhaps a number of other things on it. For the everyday, small
+miscellaneous jobs where you need a simple, general purpose tool, it's
+just the thing.
+
+ On the other hand, an experienced carpenter doesn't build a house
+using a Swiss Army knife. Instead, he has a toolbox chock full of
+specialized tools--a saw, a hammer, a screwdriver, a plane, and so on.
+And he knows exactly when and where to use each tool; you won't catch
+him hammering nails with the handle of his screwdriver.
+
+ The Unix developers at Bell Labs were all professional programmers
+and trained computer scientists. They had found that while a
+one-size-fits-all program might appeal to a user because there's only
+one program to use, in practice such programs are
+
+ a. difficult to write,
+
+ b. difficult to maintain and debug, and
+
+ c. difficult to extend to meet new situations.
+
+ Instead, they felt that programs should be specialized tools. In
+short, each program "should do one thing well." No more and no less.
+Such programs are simpler to design, write, and get right--they only do
+one thing.
+
+ Furthermore, they found that with the right machinery for hooking
+programs together, that the whole was greater than the sum of the
+parts. By combining several special purpose programs, you could
+accomplish a specific task that none of the programs was designed for,
+and accomplish it much more quickly and easily than if you had to write
+a special purpose program. We will see some (classic) examples of this
+further on in the column. (An important additional point was that, if
+necessary, take a detour and build any software tools you may need
+first, if you don't already have something appropriate in the toolbox.)
+
+
+File: coreutils.info, Node: I/O redirection, Next: The who command, Prev: Toolbox introduction, Up: Opening the software toolbox
+
+I/O Redirection
+===============
+
+Hopefully, you are familiar with the basics of I/O redirection in the
+shell, in particular the concepts of "standard input," "standard
+output," and "standard error". Briefly, "standard input" is a data
+source, where data comes from. A program should not need to either
+know or care if the data source is a disk file, a keyboard, a magnetic
+tape, or even a punched card reader. Similarly, "standard output" is a
+data sink, where data goes to. The program should neither know nor
+care where this might be. Programs that only read their standard
+input, do something to the data, and then send it on, are called
+"filters", by analogy to filters in a water pipeline.
+
+ With the Unix shell, it's very easy to set up data pipelines:
+
+ program_to_create_data | filter1 | ... | filterN > final.pretty.data
+
+ We start out by creating the raw data; each filter applies some
+successive transformation to the data, until by the time it comes out
+of the pipeline, it is in the desired form.
+
+ This is fine and good for standard input and standard output. Where
+does the standard error come in to play? Well, think about `filter1' in
+the pipeline above. What happens if it encounters an error in the data
+it sees? If it writes an error message to standard output, it will just
+disappear down the pipeline into `filter2''s input, and the user will
+probably never see it. So programs need a place where they can send
+error messages so that the user will notice them. This is standard
+error, and it is usually connected to your console or window, even if
+you have redirected standard output of your program away from your
+screen.
+
+ For filter programs to work together, the format of the data has to
+be agreed upon. The most straightforward and easiest format to use is
+simply lines of text. Unix data files are generally just streams of
+bytes, with lines delimited by the ASCII LF (Line Feed) character,
+conventionally called a "newline" in the Unix literature. (This is
+`'\n'' if you're a C programmer.) This is the format used by all the
+traditional filtering programs. (Many earlier operating systems had
+elaborate facilities and special purpose programs for managing binary
+data. Unix has always shied away from such things, under the
+philosophy that it's easiest to simply be able to view and edit your
+data with a text editor.)
+
+ OK, enough introduction. Let's take a look at some of the tools,
+and then we'll see how to hook them together in interesting ways. In
+the following discussion, we will only present those command line
+options that interest us. As you should always do, double check your
+system documentation for the full story.
+
+
+File: coreutils.info, Node: The who command, Next: The cut command, Prev: I/O redirection, Up: Opening the software toolbox
+
+The `who' Command
+=================
+
+The first program is the `who' command. By itself, it generates a list
+of the users who are currently logged in. Although I'm writing this on
+a single-user system, we'll pretend that several people are logged in:
+
+ $ who
+ -| arnold console Jan 22 19:57
+ -| miriam ttyp0 Jan 23 14:19(:0.0)
+ -| bill ttyp1 Jan 21 09:32(:0.0)
+ -| arnold ttyp2 Jan 23 20:48(:0.0)
+
+ Here, the `$' is the usual shell prompt, at which I typed `who'.
+There are three people logged in, and I am logged in twice. On
+traditional Unix systems, user names are never more than eight
+characters long. This little bit of trivia will be useful later. The
+output of `who' is nice, but the data is not all that exciting.
+
+
+File: coreutils.info, Node: The cut command, Next: The sort command, Prev: The who command, Up: Opening the software toolbox
+
+The `cut' Command
+=================
+
+The next program we'll look at is the `cut' command. This program cuts
+out columns or fields of input data. For example, we can tell it to
+print just the login name and full name from the `/etc/passwd' file.
+The `/etc/passwd' file has seven fields, separated by colons:
+
+ arnold:xyzzy:2076:10:Arnold D. Robbins:/home/arnold:/bin/bash
+
+ To get the first and fifth fields, we would use `cut' like this:
+
+ $ cut -d: -f1,5 /etc/passwd
+ -| root:Operator
+ ...
+ -| arnold:Arnold D. Robbins
+ -| miriam:Miriam A. Robbins
+ ...
+
+ With the `-c' option, `cut' will cut out specific characters (i.e.,
+columns) in the input lines. This is useful for input data that has
+fixed width fields, and does not have a field separator. For example,
+list the Monday dates for the current month:
+
+ $ cal | cut -c 3-5
+ -|Mo
+ -|
+ -| 6
+ -| 13
+ -| 20
+ -| 27
+
+
+File: coreutils.info, Node: The sort command, Next: The uniq command, Prev: The cut command, Up: Opening the software toolbox
+
+The `sort' Command
+==================
+
+Next we'll look at the `sort' command. This is one of the most
+powerful commands on a Unix-style system; one that you will often find
+yourself using when setting up fancy data plumbing.
+
+ The `sort' command reads and sorts each file named on the command
+line. It then merges the sorted data and writes it to standard output.
+It will read standard input if no files are given on the command line
+(thus making it into a filter). The sort is based on the character
+collating sequence or based on user-supplied ordering criteria.
+
+
+File: coreutils.info, Node: The uniq command, Next: Putting the tools together, Prev: The sort command, Up: Opening the software toolbox
+
+The `uniq' Command
+==================
+
+Finally (at least for now), we'll look at the `uniq' program. When
+sorting data, you will often end up with duplicate lines, lines that
+are identical. Usually, all you need is one instance of each line.
+This is where `uniq' comes in. The `uniq' program reads its standard
+input. It prints only one copy of each repeated line. It does have
+several options. Later on, we'll use the `-c' option, which prints
+each unique line, preceded by a count of the number of times that line
+occurred in the input.
+
+
+File: coreutils.info, Node: Putting the tools together, Prev: The uniq command, Up: Opening the software toolbox
+
+Putting the Tools Together
+==========================
+
+Now, let's suppose this is a large ISP server system with dozens of
+users logged in. The management wants the system administrator to
+write a program that will generate a sorted list of logged in users.
+Furthermore, even if a user is logged in multiple times, his or her
+name should only show up in the output once.
+
+ The administrator could sit down with the system documentation and
+write a C program that did this. It would take perhaps a couple of
+hundred lines of code and about two hours to write it, test it, and
+debug it. However, knowing the software toolbox, the administrator can
+instead start out by generating just a list of logged on users:
+
+ $ who | cut -c1-8
+ -| arnold
+ -| miriam
+ -| bill
+ -| arnold
+
+ Next, sort the list:
+
+ $ who | cut -c1-8 | sort
+ -| arnold
+ -| arnold
+ -| bill
+ -| miriam
+
+ Finally, run the sorted list through `uniq', to weed out duplicates:
+
+ $ who | cut -c1-8 | sort | uniq
+ -| arnold
+ -| bill
+ -| miriam
+
+ The `sort' command actually has a `-u' option that does what `uniq'
+does. However, `uniq' has other uses for which one cannot substitute
+`sort -u'.
+
+ The administrator puts this pipeline into a shell script, and makes
+it available for all the users on the system (`#' is the system
+administrator, or `root', prompt):
+
+ # cat > /usr/local/bin/listusers
+ who | cut -c1-8 | sort | uniq
+ ^D
+ # chmod +x /usr/local/bin/listusers
+
+ There are four major points to note here. First, with just four
+programs, on one command line, the administrator was able to save about
+two hours worth of work. Furthermore, the shell pipeline is just about
+as efficient as the C program would be, and it is much more efficient in
+terms of programmer time. People time is much more expensive than
+computer time, and in our modern "there's never enough time to do
+everything" society, saving two hours of programmer time is no mean
+feat.
+
+ Second, it is also important to emphasize that with the
+_combination_ of the tools, it is possible to do a special purpose job
+never imagined by the authors of the individual programs.
+
+ Third, it is also valuable to build up your pipeline in stages, as
+we did here. This allows you to view the data at each stage in the
+pipeline, which helps you acquire the confidence that you are indeed
+using these tools correctly.
+
+ Finally, by bundling the pipeline in a shell script, other users can
+use your command, without having to remember the fancy plumbing you set
+up for them. In terms of how you run them, shell scripts and compiled
+programs are indistinguishable.
+
+ After the previous warm-up exercise, we'll look at two additional,
+more complicated pipelines. For them, we need to introduce two more
+tools.
+
+ The first is the `tr' command, which stands for "transliterate."
+The `tr' command works on a character-by-character basis, changing
+characters. Normally it is used for things like mapping upper case to
+lower case:
+
+ $ echo ThIs ExAmPlE HaS MIXED case! | tr '[:upper:]' '[:lower:]'
+ -| this example has mixed case!
+
+ There are several options of interest:
+
+`-c'
+ work on the complement of the listed characters, i.e., operations
+ apply to characters not in the given set
+
+`-d'
+ delete characters in the first set from the output
+
+`-s'
+ squeeze repeated characters in the output into just one character.
+
+ We will be using all three options in a moment.
+
+ The other command we'll look at is `comm'. The `comm' command takes
+two sorted input files as input data, and prints out the files' lines
+in three columns. The output columns are the data lines unique to the
+first file, the data lines unique to the second file, and the data
+lines that are common to both. The `-1', `-2', and `-3' command line
+options _omit_ the respective columns. (This is non-intuitive and
+takes a little getting used to.) For example:
+
+ $ cat f1
+ -| 11111
+ -| 22222
+ -| 33333
+ -| 44444
+ $ cat f2
+ -| 00000
+ -| 22222
+ -| 33333
+ -| 55555
+ $ comm f1 f2
+ -| 00000
+ -| 11111
+ -| 22222
+ -| 33333
+ -| 44444
+ -| 55555
+
+ The file name `-' tells `comm' to read standard input instead of a
+regular file.
+
+ Now we're ready to build a fancy pipeline. The first application is
+a word frequency counter. This helps an author determine if he or she
+is over-using certain words.
+
+ The first step is to change the case of all the letters in our input
+file to one case. "The" and "the" are the same word when doing
+counting.
+
+ $ tr '[:upper:]' '[:lower:]' < whats.gnu | ...
+
+ The next step is to get rid of punctuation. Quoted words and
+unquoted words should be treated identically; it's easiest to just get
+the punctuation out of the way.
+
+ $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' | ...
+
+ The second `tr' command operates on the complement of the listed
+characters, which are all the letters, the digits, the underscore, and
+the blank. The `\n' represents the newline character; it has to be
+left alone. (The ASCII tab character should also be included for good
+measure in a production script.)
+
+ At this point, we have data consisting of words separated by blank
+space. The words only contain alphanumeric characters (and the
+underscore). The next step is break the data apart so that we have one
+word per line. This makes the counting operation much easier, as we
+will see shortly.
+
+ $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
+ > tr -s ' ' '\n' | ...
+
+ This command turns blanks into newlines. The `-s' option squeezes
+multiple newline characters in the output into just one. This helps us
+avoid blank lines. (The `>' is the shell's "secondary prompt." This
+is what the shell prints when it notices you haven't finished typing in
+all of a command.)
+
+ We now have data consisting of one word per line, no punctuation,
+all one case. We're ready to count each word:
+
+ $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
+ > tr -s ' ' '\n' | sort | uniq -c | ...
+
+ At this point, the data might look something like this:
+
+ 60 a
+ 2 able
+ 6 about
+ 1 above
+ 2 accomplish
+ 1 acquire
+ 1 actually
+ 2 additional
+
+ The output is sorted by word, not by count! What we want is the most
+frequently used words first. Fortunately, this is easy to accomplish,
+with the help of two more `sort' options:
+
+`-n'
+ do a numeric sort, not a textual one
+
+`-r'
+ reverse the order of the sort
+
+ The final pipeline looks like this:
+
+ $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
+ > tr -s ' ' '\n' | sort | uniq -c | sort -n -r
+ -| 156 the
+ -| 60 a
+ -| 58 to
+ -| 51 of
+ -| 51 and
+ ...
+
+ Whew! That's a lot to digest. Yet, the same principles apply.
+With six commands, on two lines (really one long one split for
+convenience), we've created a program that does something interesting
+and useful, in much less time than we could have written a C program to
+do the same thing.
+
+ A minor modification to the above pipeline can give us a simple
+spelling checker! To determine if you've spelled a word correctly, all
+you have to do is look it up in a dictionary. If it is not there, then
+chances are that your spelling is incorrect. So, we need a dictionary.
+The conventional location for a dictionary is `/usr/dict/words'. On my
+GNU/Linux system,(1) this is a is a sorted, 45,402 word dictionary.
+
+ Now, how to compare our file with the dictionary? As before, we
+generate a sorted list of words, one per line:
+
+ $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
+ > tr -s ' ' '\n' | sort -u | ...
+
+ Now, all we need is a list of words that are _not_ in the
+dictionary. Here is where the `comm' command comes in.
+
+ $ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
+ > tr -s ' ' '\n' | sort -u |
+ > comm -23 - /usr/dict/words
+
+ The `-2' and `-3' options eliminate lines that are only in the
+dictionary (the second file), and lines that are in both files. Lines
+only in the first file (standard input, our stream of words), are words
+that are not in the dictionary. These are likely candidates for
+spelling errors. This pipeline was the first cut at a production
+spelling checker on Unix.
+
+ There are some other tools that deserve brief mention.
+
+`grep'
+ search files for text that matches a regular expression
+
+`wc'
+ count lines, words, characters
+
+`tee'
+ a T-fitting for data pipes, copies data to files and to standard
+ output
+
+`sed'
+ the stream editor, an advanced tool
+
+`awk'
+ a data manipulation language, another advanced tool
+
+ The software tools philosophy also espoused the following bit of
+advice: "Let someone else do the hard part." This means, take
+something that gives you most of what you need, and then massage it the
+rest of the way until it's in the form that you want.
+
+ To summarize:
+
+ 1. Each program should do one thing well. No more, no less.
+
+ 2. Combining programs with appropriate plumbing leads to results where
+ the whole is greater than the sum of the parts. It also leads to
+ novel uses of programs that the authors might never have imagined.
+
+ 3. Programs should never print extraneous header or trailer data,
+ since these could get sent on down a pipeline. (A point we didn't
+ mention earlier.)
+
+ 4. Let someone else do the hard part.
+
+ 5. Know your toolbox! Use each program appropriately. If you don't
+ have an appropriate tool, build one.
+
+ As of this writing, all the programs we've discussed are available
+via anonymous `ftp' from:
+`ftp://gnudist.gnu.org/textutils/textutils-1.22.tar.gz'. (There may be
+more recent versions available now.)
+
+ None of what I have presented in this column is new. The Software
+Tools philosophy was first introduced in the book `Software Tools', by
+Brian Kernighan and P.J. Plauger (Addison-Wesley, ISBN 0-201-03669-X).
+This book showed how to write and use software tools. It was written in
+1976, using a preprocessor for FORTRAN named `ratfor' (RATional
+FORtran). At the time, C was not as ubiquitous as it is now; FORTRAN
+was. The last chapter presented a `ratfor' to FORTRAN processor,
+written in `ratfor'. `ratfor' looks an awful lot like C; if you know
+C, you won't have any problem following the code.
+
+ In 1981, the book was updated and made available as `Software Tools
+in Pascal' (Addison-Wesley, ISBN 0-201-10342-7). Both books are still
+in print and are well worth reading if you're a programmer. They
+certainly made a major change in how I view programming.
+
+ The programs in both books are available from Brian Kernighan's home
+page (http://cm.bell-labs.com/who/bwk). For a number of years, there
+was an active Software Tools Users Group, whose members had ported the
+original `ratfor' programs to essentially every computer system with a
+FORTRAN compiler. The popularity of the group waned in the middle 1980s
+as Unix began to spread beyond universities.
+
+ With the current proliferation of GNU code and other clones of Unix
+programs, these programs now receive little attention; modern C
+versions are much more efficient and do more than these programs do.
+Nevertheless, as exposition of good programming style, and evangelism
+for a still-valuable philosophy, these books are unparalleled, and I
+recommend them highly.
+
+ Acknowledgment: I would like to express my gratitude to Brian
+Kernighan of Bell Labs, the original Software Toolsmith, for reviewing
+this column.
+
+ ---------- Footnotes ----------
+
+ (1) Redhat Linux 6.1, for the November 2000 revision of this article.
+
+
+File: coreutils.info, Node: Copying This Manual, Next: Index, Prev: Opening the software toolbox, Up: Top
+
+Appendix A Copying This Manual
+******************************
+
+* Menu:
+
+* GNU Free Documentation License:: License for copying this manual.
+
+
+File: coreutils.info, Node: GNU Free Documentation License, Up: Copying This Manual
+
+A.1 GNU Free Documentation License
+==================================
+
+ Version 1.2, November 2002
+
+ Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ 0. PREAMBLE
+
+ The purpose of this License is to make a manual, textbook, or other
+ functional and useful document "free" in the sense of freedom: to
+ assure everyone the effective freedom to copy and redistribute it,
+ with or without modifying it, either commercially or
+ noncommercially. Secondarily, this License preserves for the
+ author and publisher a way to get credit for their work, while not
+ being considered responsible for modifications made by others.
+
+ This License is a kind of "copyleft", which means that derivative
+ works of the document must themselves be free in the same sense.
+ It complements the GNU General Public License, which is a copyleft
+ license designed for free software.
+
+ We have designed this License in order to use it for manuals for
+ free software, because free software needs free documentation: a
+ free program should come with manuals providing the same freedoms
+ that the software does. But this License is not limited to
+ software manuals; it can be used for any textual work, regardless
+ of subject matter or whether it is published as a printed book.
+ We recommend this License principally for works whose purpose is
+ instruction or reference.
+
+ 1. APPLICABILITY AND DEFINITIONS
+
+ This License applies to any manual or other work, in any medium,
+ that contains a notice placed by the copyright holder saying it
+ can be distributed under the terms of this License. Such a notice
+ grants a world-wide, royalty-free license, unlimited in duration,
+ to use that work under the conditions stated herein. The
+ "Document", below, refers to any such manual or work. Any member
+ of the public is a licensee, and is addressed as "you". You
+ accept the license if you copy, modify or distribute the work in a
+ way requiring permission under copyright law.
+
+ A "Modified Version" of the Document means any work containing the
+ Document or a portion of it, either copied verbatim, or with
+ modifications and/or translated into another language.
+
+ A "Secondary Section" is a named appendix or a front-matter section
+ of the Document that deals exclusively with the relationship of the
+ publishers or authors of the Document to the Document's overall
+ subject (or to related matters) and contains nothing that could
+ fall directly within that overall subject. (Thus, if the Document
+ is in part a textbook of mathematics, a Secondary Section may not
+ explain any mathematics.) The relationship could be a matter of
+ historical connection with the subject or with related matters, or
+ of legal, commercial, philosophical, ethical or political position
+ regarding them.
+
+ The "Invariant Sections" are certain Secondary Sections whose
+ titles are designated, as being those of Invariant Sections, in
+ the notice that says that the Document is released under this
+ License. If a section does not fit the above definition of
+ Secondary then it is not allowed to be designated as Invariant.
+ The Document may contain zero Invariant Sections. If the Document
+ does not identify any Invariant Sections then there are none.
+
+ The "Cover Texts" are certain short passages of text that are
+ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+ that says that the Document is released under this License. A
+ Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+ be at most 25 words.
+
+ A "Transparent" copy of the Document means a machine-readable copy,
+ represented in a format whose specification is available to the
+ general public, that is suitable for revising the document
+ straightforwardly with generic text editors or (for images
+ composed of pixels) generic paint programs or (for drawings) some
+ widely available drawing editor, and that is suitable for input to
+ text formatters or for automatic translation to a variety of
+ formats suitable for input to text formatters. A copy made in an
+ otherwise Transparent file format whose markup, or absence of
+ markup, has been arranged to thwart or discourage subsequent
+ modification by readers is not Transparent. An image format is
+ not Transparent if used for any substantial amount of text. A
+ copy that is not "Transparent" is called "Opaque".
+
+ Examples of suitable formats for Transparent copies include plain
+ ASCII without markup, Texinfo input format, LaTeX input format,
+ SGML or XML using a publicly available DTD, and
+ standard-conforming simple HTML, PostScript or PDF designed for
+ human modification. Examples of transparent image formats include
+ PNG, XCF and JPG. Opaque formats include proprietary formats that
+ can be read and edited only by proprietary word processors, SGML or
+ XML for which the DTD and/or processing tools are not generally
+ available, and the machine-generated HTML, PostScript or PDF
+ produced by some word processors for output purposes only.
+
+ The "Title Page" means, for a printed book, the title page itself,
+ plus such following pages as are needed to hold, legibly, the
+ material this License requires to appear in the title page. For
+ works in formats which do not have any title page as such, "Title
+ Page" means the text near the most prominent appearance of the
+ work's title, preceding the beginning of the body of the text.
+
+ A section "Entitled XYZ" means a named subunit of the Document
+ whose title either is precisely XYZ or contains XYZ in parentheses
+ following text that translates XYZ in another language. (Here XYZ
+ stands for a specific section name mentioned below, such as
+ "Acknowledgements", "Dedications", "Endorsements", or "History".)
+ To "Preserve the Title" of such a section when you modify the
+ Document means that it remains a section "Entitled XYZ" according
+ to this definition.
+
+ The Document may include Warranty Disclaimers next to the notice
+ which states that this License applies to the Document. These
+ Warranty Disclaimers are considered to be included by reference in
+ this License, but only as regards disclaiming warranties: any other
+ implication that these Warranty Disclaimers may have is void and
+ has no effect on the meaning of this License.
+
+ 2. VERBATIM COPYING
+
+ You may copy and distribute the Document in any medium, either
+ commercially or noncommercially, provided that this License, the
+ copyright notices, and the license notice saying this License
+ applies to the Document are reproduced in all copies, and that you
+ add no other conditions whatsoever to those of this License. You
+ may not use technical measures to obstruct or control the reading
+ or further copying of the copies you make or distribute. However,
+ you may accept compensation in exchange for copies. If you
+ distribute a large enough number of copies you must also follow
+ the conditions in section 3.
+
+ You may also lend copies, under the same conditions stated above,
+ and you may publicly display copies.
+
+ 3. COPYING IN QUANTITY
+
+ If you publish printed copies (or copies in media that commonly
+ have printed covers) of the Document, numbering more than 100, and
+ the Document's license notice requires Cover Texts, you must
+ enclose the copies in covers that carry, clearly and legibly, all
+ these Cover Texts: Front-Cover Texts on the front cover, and
+ Back-Cover Texts on the back cover. Both covers must also clearly
+ and legibly identify you as the publisher of these copies. The
+ front cover must present the full title with all words of the
+ title equally prominent and visible. You may add other material
+ on the covers in addition. Copying with changes limited to the
+ covers, as long as they preserve the title of the Document and
+ satisfy these conditions, can be treated as verbatim copying in
+ other respects.
+
+ If the required texts for either cover are too voluminous to fit
+ legibly, you should put the first ones listed (as many as fit
+ reasonably) on the actual cover, and continue the rest onto
+ adjacent pages.
+
+ If you publish or distribute Opaque copies of the Document
+ numbering more than 100, you must either include a
+ machine-readable Transparent copy along with each Opaque copy, or
+ state in or with each Opaque copy a computer-network location from
+ which the general network-using public has access to download
+ using public-standard network protocols a complete Transparent
+ copy of the Document, free of added material. If you use the
+ latter option, you must take reasonably prudent steps, when you
+ begin distribution of Opaque copies in quantity, to ensure that
+ this Transparent copy will remain thus accessible at the stated
+ location until at least one year after the last time you
+ distribute an Opaque copy (directly or through your agents or
+ retailers) of that edition to the public.
+
+ It is requested, but not required, that you contact the authors of
+ the Document well before redistributing any large number of
+ copies, to give them a chance to provide you with an updated
+ version of the Document.
+
+ 4. MODIFICATIONS
+
+ You may copy and distribute a Modified Version of the Document
+ under the conditions of sections 2 and 3 above, provided that you
+ release the Modified Version under precisely this License, with
+ the Modified Version filling the role of the Document, thus
+ licensing distribution and modification of the Modified Version to
+ whoever possesses a copy of it. In addition, you must do these
+ things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title
+ distinct from that of the Document, and from those of
+ previous versions (which should, if there were any, be listed
+ in the History section of the Document). You may use the
+ same title as a previous version if the original publisher of
+ that version gives permission.
+
+ B. List on the Title Page, as authors, one or more persons or
+ entities responsible for authorship of the modifications in
+ the Modified Version, together with at least five of the
+ principal authors of the Document (all of its principal
+ authors, if it has fewer than five), unless they release you
+ from this requirement.
+
+ C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+
+ D. Preserve all the copyright notices of the Document.
+
+ E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+
+ F. Include, immediately after the copyright notices, a license
+ notice giving the public permission to use the Modified
+ Version under the terms of this License, in the form shown in
+ the Addendum below.
+
+ G. Preserve in that license notice the full lists of Invariant
+ Sections and required Cover Texts given in the Document's
+ license notice.
+
+ H. Include an unaltered copy of this License.
+
+ I. Preserve the section Entitled "History", Preserve its Title,
+ and add to it an item stating at least the title, year, new
+ authors, and publisher of the Modified Version as given on
+ the Title Page. If there is no section Entitled "History" in
+ the Document, create one stating the title, year, authors,
+ and publisher of the Document as given on its Title Page,
+ then add an item describing the Modified Version as stated in
+ the previous sentence.
+
+ J. Preserve the network location, if any, given in the Document
+ for public access to a Transparent copy of the Document, and
+ likewise the network locations given in the Document for
+ previous versions it was based on. These may be placed in
+ the "History" section. You may omit a network location for a
+ work that was published at least four years before the
+ Document itself, or if the original publisher of the version
+ it refers to gives permission.
+
+ K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the
+ section all the substance and tone of each of the contributor
+ acknowledgements and/or dedications given therein.
+
+ L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section
+ titles.
+
+ M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+
+ N. Do not retitle any existing section to be Entitled
+ "Endorsements" or to conflict in title with any Invariant
+ Section.
+
+ O. Preserve any Warranty Disclaimers.
+
+ If the Modified Version includes new front-matter sections or
+ appendices that qualify as Secondary Sections and contain no
+ material copied from the Document, you may at your option
+ designate some or all of these sections as invariant. To do this,
+ add their titles to the list of Invariant Sections in the Modified
+ Version's license notice. These titles must be distinct from any
+ other section titles.
+
+ You may add a section Entitled "Endorsements", provided it contains
+ nothing but endorsements of your Modified Version by various
+ parties--for example, statements of peer review or that the text
+ has been approved by an organization as the authoritative
+ definition of a standard.
+
+ You may add a passage of up to five words as a Front-Cover Text,
+ and a passage of up to 25 words as a Back-Cover Text, to the end
+ of the list of Cover Texts in the Modified Version. Only one
+ passage of Front-Cover Text and one of Back-Cover Text may be
+ added by (or through arrangements made by) any one entity. If the
+ Document already includes a cover text for the same cover,
+ previously added by you or by arrangement made by the same entity
+ you are acting on behalf of, you may not add another; but you may
+ replace the old one, on explicit permission from the previous
+ publisher that added the old one.
+
+ The author(s) and publisher(s) of the Document do not by this
+ License give permission to use their names for publicity for or to
+ assert or imply endorsement of any Modified Version.
+
+ 5. COMBINING DOCUMENTS
+
+ You may combine the Document with other documents released under
+ this License, under the terms defined in section 4 above for
+ modified versions, provided that you include in the combination
+ all of the Invariant Sections of all of the original documents,
+ unmodified, and list them all as Invariant Sections of your
+ combined work in its license notice, and that you preserve all
+ their Warranty Disclaimers.
+
+ The combined work need only contain one copy of this License, and
+ multiple identical Invariant Sections may be replaced with a single
+ copy. If there are multiple Invariant Sections with the same name
+ but different contents, make the title of each such section unique
+ by adding at the end of it, in parentheses, the name of the
+ original author or publisher of that section if known, or else a
+ unique number. Make the same adjustment to the section titles in
+ the list of Invariant Sections in the license notice of the
+ combined work.
+
+ In the combination, you must combine any sections Entitled
+ "History" in the various original documents, forming one section
+ Entitled "History"; likewise combine any sections Entitled
+ "Acknowledgements", and any sections Entitled "Dedications". You
+ must delete all sections Entitled "Endorsements."
+
+ 6. COLLECTIONS OF DOCUMENTS
+
+ You may make a collection consisting of the Document and other
+ documents released under this License, and replace the individual
+ copies of this License in the various documents with a single copy
+ that is included in the collection, provided that you follow the
+ rules of this License for verbatim copying of each of the
+ documents in all other respects.
+
+ You may extract a single document from such a collection, and
+ distribute it individually under this License, provided you insert
+ a copy of this License into the extracted document, and follow
+ this License in all other respects regarding verbatim copying of
+ that document.
+
+ 7. AGGREGATION WITH INDEPENDENT WORKS
+
+ A compilation of the Document or its derivatives with other
+ separate and independent documents or works, in or on a volume of
+ a storage or distribution medium, is called an "aggregate" if the
+ copyright resulting from the compilation is not used to limit the
+ legal rights of the compilation's users beyond what the individual
+ works permit. When the Document is included in an aggregate, this
+ License does not apply to the other works in the aggregate which
+ are not themselves derivative works of the Document.
+
+ If the Cover Text requirement of section 3 is applicable to these
+ copies of the Document, then if the Document is less than one half
+ of the entire aggregate, the Document's Cover Texts may be placed
+ on covers that bracket the Document within the aggregate, or the
+ electronic equivalent of covers if the Document is in electronic
+ form. Otherwise they must appear on printed covers that bracket
+ the whole aggregate.
+
+ 8. TRANSLATION
+
+ Translation is considered a kind of modification, so you may
+ distribute translations of the Document under the terms of section
+ 4. Replacing Invariant Sections with translations requires special
+ permission from their copyright holders, but you may include
+ translations of some or all Invariant Sections in addition to the
+ original versions of these Invariant Sections. You may include a
+ translation of this License, and all the license notices in the
+ Document, and any Warranty Disclaimers, provided that you also
+ include the original English version of this License and the
+ original versions of those notices and disclaimers. In case of a
+ disagreement between the translation and the original version of
+ this License or a notice or disclaimer, the original version will
+ prevail.
+
+ If a section in the Document is Entitled "Acknowledgements",
+ "Dedications", or "History", the requirement (section 4) to
+ Preserve its Title (section 1) will typically require changing the
+ actual title.
+
+ 9. TERMINATION
+
+ You may not copy, modify, sublicense, or distribute the Document
+ except as expressly provided for under this License. Any other
+ attempt to copy, modify, sublicense or distribute the Document is
+ void, and will automatically terminate your rights under this
+ License. However, parties who have received copies, or rights,
+ from you under this License will not have their licenses
+ terminated so long as such parties remain in full compliance.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+ The Free Software Foundation may publish new, revised versions of
+ the GNU Free Documentation License from time to time. Such new
+ versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns. See
+ `http://www.gnu.org/copyleft/'.
+
+ Each version of the License is given a distinguishing version
+ number. If the Document specifies that a particular numbered
+ version of this License "or any later version" applies to it, you
+ have the option of following the terms and conditions either of
+ that specified version or of any later version that has been
+ published (not as a draft) by the Free Software Foundation. If
+ the Document does not specify a version number of this License,
+ you may choose any version ever published (not as a draft) by the
+ Free Software Foundation.
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+ If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+ If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License, to
+permit their use in free software.
+
+
+File: coreutils.info, Node: Index, Prev: Copying This Manual, Up: Top
+
+Index
+*****
+
+
+* Menu:
+
+* !: Connectives for test.
+ (line 9)
+* !=: String tests. (line 25)
+* %: Numeric expressions. (line 15)
+* %b: printf invocation. (line 32)
+* &: Relations for expr. (line 17)
+* *: Numeric expressions. (line 15)
+* + <1>: Numeric expressions. (line 11)
+* +: String expressions. (line 53)
+* +PAGE_RANGE: pr invocation. (line 60)
+* - <1>: su invocation. (line 53)
+* - <2>: env invocation. (line 45)
+* -: Numeric expressions. (line 11)
+* - and Unix rm: rm invocation. (line 110)
+* -, removing files beginning with: rm invocation. (line 98)
+* --: Common options. (line 36)
+* --across: pr invocation. (line 84)
+* --address-radix: od invocation. (line 36)
+* --adjustment: nice invocation. (line 44)
+* --all <1>: uname invocation. (line 30)
+* --all <2>: who invocation. (line 36)
+* --all <3>: stty invocation. (line 26)
+* --all <4>: du invocation. (line 21)
+* --all <5>: df invocation. (line 32)
+* --all <6>: Which files are listed.
+ (line 13)
+* --all: unexpand invocation. (line 37)
+* --all-repeated: uniq invocation. (line 69)
+* --almost-all: Which files are listed.
+ (line 17)
+* --apparent-size: du invocation. (line 24)
+* --append: tee invocation. (line 25)
+* --archive: cp invocation. (line 54)
+* --author: What information is listed.
+ (line 10)
+* --backup <1>: ln invocation. (line 55)
+* --backup <2>: mv invocation. (line 50)
+* --backup <3>: install invocation. (line 40)
+* --backup <4>: cp invocation. (line 61)
+* --backup: Backup options. (line 13)
+* --before: tac invocation. (line 21)
+* --binary: md5sum invocation. (line 38)
+* --block-size <1>: du invocation. (line 45)
+* --block-size <2>: df invocation. (line 38)
+* --block-size: Block size. (line 138)
+* --block-size=SIZE: Block size. (line 12)
+* --body-numbering: nl invocation. (line 47)
+* --boot: who invocation. (line 40)
+* --bourne-shell: dircolors invocation.
+ (line 27)
+* --buffer-size: sort invocation. (line 237)
+* --bytes <1>: du invocation. (line 41)
+* --bytes <2>: cut invocation. (line 26)
+* --bytes <3>: wc invocation. (line 41)
+* --bytes <4>: split invocation. (line 37)
+* --bytes <5>: tail invocation. (line 36)
+* --bytes <6>: head invocation. (line 24)
+* --bytes: fold invocation. (line 23)
+* --c-shell: dircolors invocation.
+ (line 33)
+* --canonicalize: readlink invocation. (line 29)
+* --canonicalize-existing: readlink invocation. (line 35)
+* --canonicalize-missing: readlink invocation. (line 41)
+* --changes <1>: chmod invocation. (line 39)
+* --changes <2>: chgrp invocation. (line 20)
+* --changes: chown invocation. (line 70)
+* --characters: cut invocation. (line 34)
+* --chars: wc invocation. (line 45)
+* --check: sort invocation. (line 18)
+* --check-chars: uniq invocation. (line 103)
+* --classify: General output formatting.
+ (line 36)
+* --color: General output formatting.
+ (line 21)
+* --columns: pr invocation. (line 70)
+* --command: su invocation. (line 39)
+* --complement: cut invocation. (line 71)
+* --count <1>: who invocation. (line 55)
+* --count: uniq invocation. (line 55)
+* --count-links: du invocation. (line 91)
+* --crown-margin: fmt invocation. (line 34)
+* --csh: dircolors invocation.
+ (line 33)
+* --date <1>: Options for date. (line 11)
+* --date: touch invocation. (line 58)
+* --dead: who invocation. (line 44)
+* --decode: base64 invocation. (line 29)
+* --delimiter: cut invocation. (line 51)
+* --delimiters: paste invocation. (line 43)
+* --dereference <1>: stat invocation. (line 17)
+* --dereference <2>: du invocation. (line 96)
+* --dereference <3>: chgrp invocation. (line 30)
+* --dereference <4>: chown invocation. (line 103)
+* --dereference <5>: cp invocation. (line 125)
+* --dereference: Which files are listed.
+ (line 83)
+* --dereference-args: du invocation. (line 56)
+* --dereference-command-line: Which files are listed.
+ (line 36)
+* --dereference-command-line-symlink-to-dir: Which files are listed.
+ (line 41)
+* --dictionary-order: sort invocation. (line 85)
+* --digits: csplit invocation. (line 80)
+* --directory <1>: ln invocation. (line 61)
+* --directory <2>: install invocation. (line 48)
+* --directory: Which files are listed.
+ (line 28)
+* --dired: What information is listed.
+ (line 16)
+* --double-space: pr invocation. (line 96)
+* --echo: shuf invocation. (line 19)
+* --elide-empty-files: csplit invocation. (line 89)
+* --escape: Formatting the file names.
+ (line 11)
+* --exact: shred invocation. (line 133)
+* --exclude-from=FILE: du invocation. (line 201)
+* --exclude-type: df invocation. (line 138)
+* --exclude=PATTERN: du invocation. (line 195)
+* --expand-tabs: pr invocation. (line 120)
+* --fast: su invocation. (line 44)
+* --field-separator: sort invocation. (line 253)
+* --fields: cut invocation. (line 44)
+* --file <1>: Options for date. (line 22)
+* --file: stty invocation. (line 31)
+* --file-system: stat invocation. (line 23)
+* --file-type: General output formatting.
+ (line 47)
+* --files0-from=FILE <1>: du invocation. (line 62)
+* --files0-from=FILE: wc invocation. (line 60)
+* --first-line-number: pr invocation. (line 198)
+* --follow: tail invocation. (line 41)
+* --footer-numbering: nl invocation. (line 75)
+* --force <1>: ln invocation. (line 67)
+* --force <2>: shred invocation. (line 101)
+* --force <3>: rm invocation. (line 35)
+* --force <4>: mv invocation. (line 55)
+* --force: cp invocation. (line 96)
+* --form-feed: pr invocation. (line 128)
+* --format <1>: General output formatting.
+ (line 10)
+* --format <2>: What information is listed.
+ (line 130)
+* --format: od invocation. (line 76)
+* --format=FORMAT <1>: seq invocation. (line 24)
+* --format=FORMAT: stat invocation. (line 28)
+* --from: chown invocation. (line 80)
+* --full-time: What information is listed.
+ (line 100)
+* --general-numeric-sort: sort invocation. (line 98)
+* --group <1>: id invocation. (line 23)
+* --group: install invocation. (line 54)
+* --group-directories-first: Which files are listed.
+ (line 50)
+* --groups: id invocation. (line 27)
+* --hardware-platform: uname invocation. (line 35)
+* --head-lines: shuf invocation. (line 32)
+* --header: pr invocation. (line 134)
+* --header-numbering: nl invocation. (line 79)
+* --heading: who invocation. (line 48)
+* --help: Common options. (line 29)
+* --hide-control-chars: Formatting the file names.
+ (line 23)
+* --hide=PATTERN: Which files are listed.
+ (line 56)
+* --human-readable <1>: du invocation. (line 75)
+* --human-readable <2>: df invocation. (line 43)
+* --human-readable <3>: What information is listed.
+ (line 116)
+* --human-readable: Block size. (line 138)
+* --ignore-backups: Which files are listed.
+ (line 23)
+* --ignore-case <1>: join invocation. (line 69)
+* --ignore-case <2>: uniq invocation. (line 59)
+* --ignore-case: sort invocation. (line 92)
+* --ignore-environment: env invocation. (line 45)
+* --ignore-fail-on-non-empty: rmdir invocation. (line 17)
+* --ignore-garbage: base64 invocation. (line 35)
+* --ignore-interrupts: tee invocation. (line 30)
+* --ignore-leading-blanks: sort invocation. (line 79)
+* --ignore-nonprinting: sort invocation. (line 125)
+* --ignore=PATTERN: Which files are listed.
+ (line 69)
+* --indent: pr invocation. (line 204)
+* --indicator-style: General output formatting.
+ (line 36)
+* --initial: expand invocation. (line 34)
+* --inode: What information is listed.
+ (line 122)
+* --inodes: df invocation. (line 52)
+* --input-range: shuf invocation. (line 23)
+* --interactive <1>: ln invocation. (line 71)
+* --interactive <2>: rm invocation. (line 50)
+* --interactive <3>: mv invocation. (line 59)
+* --interactive: cp invocation. (line 116)
+* --iterations=NUMBER: shred invocation. (line 106)
+* --join-blank-lines: nl invocation. (line 87)
+* --join-lines: pr invocation. (line 147)
+* --keep-files: csplit invocation. (line 85)
+* --kernel-name: uname invocation. (line 65)
+* --kernel-release: uname invocation. (line 61)
+* --kernel-version: uname invocation. (line 76)
+* --key: sort invocation. (line 193)
+* --length: pr invocation. (line 156)
+* --line-bytes: split invocation. (line 43)
+* --lines <1>: wc invocation. (line 53)
+* --lines <2>: split invocation. (line 30)
+* --lines <3>: tail invocation. (line 130)
+* --lines: head invocation. (line 30)
+* --link: cp invocation. (line 121)
+* --literal: Formatting the file names.
+ (line 17)
+* --local: df invocation. (line 63)
+* --login <1>: su invocation. (line 53)
+* --login: who invocation. (line 68)
+* --lookup: who invocation. (line 73)
+* --machine: uname invocation. (line 41)
+* --max-depth=DEPTH: du invocation. (line 111)
+* --max-line-length: wc invocation. (line 57)
+* --max-unchanged-stats: tail invocation. (line 118)
+* --merge <1>: sort invocation. (line 32)
+* --merge: pr invocation. (line 164)
+* --mesg: who invocation. (line 86)
+* --message: who invocation. (line 86)
+* --mode <1>: mknod invocation. (line 43)
+* --mode <2>: mkfifo invocation. (line 21)
+* --mode <3>: mkdir invocation. (line 19)
+* --mode: install invocation. (line 60)
+* --month-sort: sort invocation. (line 131)
+* --name: id invocation. (line 31)
+* --no-create: touch invocation. (line 54)
+* --no-dereference <1>: du invocation. (line 107)
+* --no-dereference <2>: chgrp invocation. (line 35)
+* --no-dereference <3>: chown invocation. (line 108)
+* --no-dereference <4>: ln invocation. (line 75)
+* --no-dereference: cp invocation. (line 129)
+* --no-file-warnings: pr invocation. (line 211)
+* --no-group: What information is listed.
+ (line 110)
+* --no-newline: readlink invocation. (line 46)
+* --no-preserve-root <1>: chmod invocation. (line 54)
+* --no-preserve-root <2>: chgrp invocation. (line 48)
+* --no-preserve-root <3>: chown invocation. (line 121)
+* --no-preserve-root: rm invocation. (line 84)
+* --no-renumber: nl invocation. (line 108)
+* --no-sync: df invocation. (line 67)
+* --no-target-directory <1>: ln invocation. (line 109)
+* --no-target-directory <2>: mv invocation. (line 103)
+* --no-target-directory <3>: install invocation. (line 101)
+* --no-target-directory <4>: cp invocation. (line 272)
+* --no-target-directory: Target directory. (line 15)
+* --nodename: uname invocation. (line 46)
+* --null: du invocation. (line 117)
+* --number: cat invocation. (line 31)
+* --number-format: nl invocation. (line 95)
+* --number-lines: pr invocation. (line 177)
+* --number-nonblank: cat invocation. (line 20)
+* --number-separator: nl invocation. (line 112)
+* --number-width: nl invocation. (line 122)
+* --numeric-sort: sort invocation. (line 140)
+* --numeric-suffixes: split invocation. (line 51)
+* --numeric-uid-gid: What information is listed.
+ (line 232)
+* --omit-header: pr invocation. (line 235)
+* --omit-pagination: pr invocation. (line 246)
+* --one-file-system <1>: du invocation. (line 191)
+* --one-file-system <2>: rm invocation. (line 63)
+* --one-file-system: cp invocation. (line 291)
+* --only-delimited: cut invocation. (line 59)
+* --operating-system: uname invocation. (line 57)
+* --output <1>: shuf invocation. (line 37)
+* --output: sort invocation. (line 213)
+* --output-delimiter: cut invocation. (line 64)
+* --output-duplicates: od invocation. (line 146)
+* --output-tabs: pr invocation. (line 140)
+* --owner: install invocation. (line 72)
+* --page-increment: nl invocation. (line 83)
+* --page_width: pr invocation. (line 264)
+* --pages=PAGE_RANGE: pr invocation. (line 60)
+* --parents <1>: rmdir invocation. (line 22)
+* --parents <2>: mkdir invocation. (line 34)
+* --parents: cp invocation. (line 177)
+* --pid: tail invocation. (line 98)
+* --portability <1>: pathchk invocation. (line 46)
+* --portability: df invocation. (line 74)
+* --prefix: csplit invocation. (line 62)
+* --preserve: cp invocation. (line 134)
+* --preserve-environment: su invocation. (line 64)
+* --preserve-root <1>: chmod invocation. (line 49)
+* --preserve-root <2>: chgrp invocation. (line 43)
+* --preserve-root <3>: chown invocation. (line 116)
+* --preserve-root: rm invocation. (line 79)
+* --preserve-timestamps: install invocation. (line 78)
+* --print-database: dircolors invocation.
+ (line 38)
+* --print-type: df invocation. (line 113)
+* --printf=FORMAT: stat invocation. (line 37)
+* --processor: uname invocation. (line 50)
+* --quiet <1>: tty invocation. (line 18)
+* --quiet <2>: chmod invocation. (line 45)
+* --quiet <3>: chgrp invocation. (line 26)
+* --quiet <4>: chown invocation. (line 76)
+* --quiet <5>: readlink invocation. (line 52)
+* --quiet <6>: csplit invocation. (line 100)
+* --quiet <7>: tail invocation. (line 135)
+* --quiet: head invocation. (line 36)
+* --quote-name: Formatting the file names.
+ (line 30)
+* --quoting-style: Formatting the file names.
+ (line 11)
+* --random-sort: sort invocation. (line 162)
+* --random-source <1>: shred invocation. (line 112)
+* --random-source <2>: shuf invocation. (line 43)
+* --random-source: sort invocation. (line 226)
+* --read-bytes: od invocation. (line 63)
+* --real: id invocation. (line 36)
+* --recursive <1>: chmod invocation. (line 69)
+* --recursive <2>: chgrp invocation. (line 66)
+* --recursive <3>: chown invocation. (line 140)
+* --recursive <4>: rm invocation. (line 91)
+* --recursive <5>: cp invocation. (line 200)
+* --recursive: Which files are listed.
+ (line 90)
+* --reference <1>: Options for date. (line 30)
+* --reference <2>: touch invocation. (line 77)
+* --reference <3>: chmod invocation. (line 62)
+* --reference <4>: chgrp invocation. (line 52)
+* --reference: chown invocation. (line 125)
+* --regex: tac invocation. (line 26)
+* --remove: shred invocation. (line 123)
+* --remove-destination: cp invocation. (line 212)
+* --repeated: uniq invocation. (line 63)
+* --reply <1>: mv invocation. (line 64)
+* --reply: cp invocation. (line 188)
+* --retry: tail invocation. (line 84)
+* --reverse <1>: Sorting the output. (line 27)
+* --reverse: sort invocation. (line 157)
+* --rfc-2822: Options for date. (line 36)
+* --rfc-3339=TIMESPEC: Options for date. (line 48)
+* --rfc-822: Options for date. (line 36)
+* --save: stty invocation. (line 41)
+* --section-delimiter: nl invocation. (line 68)
+* --sep-string: pr invocation. (line 225)
+* --separate-dirs: du invocation. (line 134)
+* --separator <1>: pr invocation. (line 216)
+* --separator: tac invocation. (line 33)
+* --serial: paste invocation. (line 34)
+* --set: Options for date. (line 78)
+* --sh: dircolors invocation.
+ (line 27)
+* --shell: su invocation. (line 75)
+* --show-all: cat invocation. (line 16)
+* --show-control-chars <1>: Formatting the file names.
+ (line 78)
+* --show-control-chars: pr invocation. (line 90)
+* --show-ends: cat invocation. (line 27)
+* --show-nonprinting <1>: pr invocation. (line 251)
+* --show-nonprinting: cat invocation. (line 49)
+* --show-tabs: cat invocation. (line 42)
+* --si <1>: du invocation. (line 123)
+* --si <2>: df invocation. (line 93)
+* --si <3>: What information is listed.
+ (line 258)
+* --si: Block size. (line 138)
+* --silent <1>: tty invocation. (line 18)
+* --silent <2>: chmod invocation. (line 45)
+* --silent <3>: chgrp invocation. (line 26)
+* --silent <4>: chown invocation. (line 76)
+* --silent <5>: readlink invocation. (line 52)
+* --silent <6>: csplit invocation. (line 100)
+* --silent <7>: tail invocation. (line 135)
+* --silent: head invocation. (line 36)
+* --size: What information is listed.
+ (line 242)
+* --size=BYTES: shred invocation. (line 117)
+* --skip-bytes: od invocation. (line 55)
+* --skip-chars: uniq invocation. (line 41)
+* --skip-fields: uniq invocation. (line 31)
+* --sleep-interval: tail invocation. (line 90)
+* --sort: Sorting the output. (line 32)
+* --spaces: fold invocation. (line 29)
+* --sparse=WHEN: cp invocation. (line 216)
+* --split-only: fmt invocation. (line 47)
+* --squeeze-blank: cat invocation. (line 35)
+* --stable: sort invocation. (line 231)
+* --starting-line-number: nl invocation. (line 117)
+* --status: md5sum invocation. (line 69)
+* --strings: od invocation. (line 68)
+* --strip: install invocation. (line 88)
+* --strip-trailing-slashes <1>: mv invocation. (line 89)
+* --strip-trailing-slashes: cp invocation. (line 250)
+* --suffix <1>: ln invocation. (line 100)
+* --suffix <2>: mv invocation. (line 94)
+* --suffix <3>: install invocation. (line 92)
+* --suffix <4>: cp invocation. (line 263)
+* --suffix <5>: csplit invocation. (line 66)
+* --suffix: Backup options. (line 50)
+* --suffix-length: split invocation. (line 26)
+* --summarize: du invocation. (line 130)
+* --symbolic: ln invocation. (line 94)
+* --symbolic-link: cp invocation. (line 255)
+* --sync: df invocation. (line 100)
+* --sysv: sum invocation. (line 31)
+* --tabs <1>: unexpand invocation. (line 24)
+* --tabs: expand invocation. (line 22)
+* --tabsize: General output formatting.
+ (line 92)
+* --tagged-paragraph: fmt invocation. (line 40)
+* --target-directory <1>: ln invocation. (line 105)
+* --target-directory <2>: mv invocation. (line 99)
+* --target-directory <3>: install invocation. (line 97)
+* --target-directory <4>: cp invocation. (line 268)
+* --target-directory: Target directory. (line 31)
+* --temporary-directory: sort invocation. (line 273)
+* --terse: stat invocation. (line 48)
+* --text: md5sum invocation. (line 79)
+* --time <1>: du invocation. (line 138)
+* --time <2>: touch invocation. (line 50)
+* --time: Sorting the output. (line 13)
+* --time-style <1>: du invocation. (line 153)
+* --time-style: Formatting file timestamps.
+ (line 26)
+* --total: du invocation. (line 50)
+* --traditional: od invocation. (line 197)
+* --type: df invocation. (line 107)
+* --uniform-spacing: fmt invocation. (line 53)
+* --unique <1>: uniq invocation. (line 98)
+* --unique: sort invocation. (line 282)
+* --universal: Options for date. (line 83)
+* --unset: env invocation. (line 39)
+* --update <1>: mv invocation. (line 76)
+* --update: cp invocation. (line 277)
+* --user: id invocation. (line 41)
+* --utc: Options for date. (line 83)
+* --verbose <1>: chmod invocation. (line 59)
+* --verbose <2>: chgrp invocation. (line 58)
+* --verbose <3>: chown invocation. (line 132)
+* --verbose <4>: rmdir invocation. (line 31)
+* --verbose <5>: readlink invocation. (line 56)
+* --verbose <6>: mkdir invocation. (line 51)
+* --verbose <7>: ln invocation. (line 114)
+* --verbose <8>: shred invocation. (line 129)
+* --verbose <9>: rm invocation. (line 95)
+* --verbose <10>: mv invocation. (line 86)
+* --verbose <11>: install invocation. (line 106)
+* --verbose <12>: cp invocation. (line 287)
+* --verbose <13>: split invocation. (line 54)
+* --verbose <14>: tail invocation. (line 139)
+* --verbose: head invocation. (line 40)
+* --version: Common options. (line 33)
+* --warn: md5sum invocation. (line 88)
+* --width <1>: General output formatting.
+ (line 104)
+* --width <2>: fold invocation. (line 35)
+* --width <3>: pr invocation. (line 255)
+* --width <4>: fmt invocation. (line 59)
+* --width: od invocation. (line 153)
+* --words: wc invocation. (line 49)
+* --wrap: base64 invocation. (line 21)
+* --writable: who invocation. (line 86)
+* --zero: shred invocation. (line 143)
+* --zero-terminated <1>: shuf invocation. (line 48)
+* --zero-terminated: sort invocation. (line 296)
+* -0: du invocation. (line 116)
+* -1 <1>: General output formatting.
+ (line 10)
+* -1 <2>: join invocation. (line 74)
+* -1: comm invocation. (line 23)
+* -2 <1>: join invocation. (line 77)
+* -2: comm invocation. (line 23)
+* -3: comm invocation. (line 23)
+* -a <1>: uname invocation. (line 30)
+* -a <2>: who invocation. (line 36)
+* -a <3>: stty invocation. (line 26)
+* -a <4>: tee invocation. (line 25)
+* -a <5>: Connectives for test.
+ (line 12)
+* -a <6>: du invocation. (line 21)
+* -a <7>: df invocation. (line 32)
+* -a <8>: touch invocation. (line 50)
+* -a: cp invocation. (line 54)
+* -A: Which files are listed.
+ (line 17)
+* -a <1>: Which files are listed.
+ (line 13)
+* -a <2>: unexpand invocation. (line 37)
+* -a <3>: join invocation. (line 60)
+* -a <4>: split invocation. (line 26)
+* -a <5>: pr invocation. (line 84)
+* -a: od invocation. (line 166)
+* -A <1>: od invocation. (line 36)
+* -A: cat invocation. (line 16)
+* -b <1>: who invocation. (line 40)
+* -b: File type tests. (line 10)
+* -B: du invocation. (line 45)
+* -b: du invocation. (line 41)
+* -B: df invocation. (line 38)
+* -b <1>: ln invocation. (line 55)
+* -b <2>: mv invocation. (line 50)
+* -b <3>: install invocation. (line 40)
+* -b <4>: cp invocation. (line 61)
+* -b <5>: dircolors invocation.
+ (line 27)
+* -b: Formatting the file names.
+ (line 11)
+* -B: Which files are listed.
+ (line 23)
+* -b <1>: cut invocation. (line 26)
+* -b <2>: sort invocation. (line 79)
+* -b <3>: md5sum invocation. (line 38)
+* -b <4>: csplit invocation. (line 66)
+* -b <5>: split invocation. (line 37)
+* -b <6>: fold invocation. (line 23)
+* -b <7>: od invocation. (line 169)
+* -b <8>: nl invocation. (line 47)
+* -b <9>: tac invocation. (line 21)
+* -b <10>: cat invocation. (line 20)
+* -b: Backup options. (line 13)
+* -c <1>: su invocation. (line 39)
+* -c <2>: File type tests. (line 13)
+* -c <3>: stat invocation. (line 28)
+* -c <4>: du invocation. (line 50)
+* -c <5>: touch invocation. (line 54)
+* -c <6>: chmod invocation. (line 39)
+* -c <7>: chgrp invocation. (line 20)
+* -c <8>: chown invocation. (line 70)
+* -c <9>: install invocation. (line 44)
+* -c: dircolors invocation.
+ (line 33)
+* -C: General output formatting.
+ (line 15)
+* -c <1>: Sorting the output. (line 13)
+* -c <2>: cut invocation. (line 34)
+* -c <3>: uniq invocation. (line 55)
+* -c <4>: shuf invocation. (line 19)
+* -c <5>: sort invocation. (line 18)
+* -c: wc invocation. (line 41)
+* -C: split invocation. (line 43)
+* -c <1>: tail invocation. (line 36)
+* -c <2>: head invocation. (line 24)
+* -c <3>: pr invocation. (line 90)
+* -c <4>: fmt invocation. (line 34)
+* -c: od invocation. (line 172)
+* -COLUMN: pr invocation. (line 70)
+* -d <1>: Options for date. (line 11)
+* -d <2>: who invocation. (line 44)
+* -d: File type tests. (line 16)
+* -D: du invocation. (line 56)
+* -d <1>: touch invocation. (line 58)
+* -d <2>: ln invocation. (line 61)
+* -d <3>: install invocation. (line 48)
+* -d: cp invocation. (line 89)
+* -D: What information is listed.
+ (line 16)
+* -d <1>: Which files are listed.
+ (line 28)
+* -d <2>: paste invocation. (line 43)
+* -d: cut invocation. (line 51)
+* -D: uniq invocation. (line 69)
+* -d <1>: uniq invocation. (line 63)
+* -d <2>: sort invocation. (line 85)
+* -d <3>: split invocation. (line 51)
+* -d <4>: pr invocation. (line 96)
+* -d <5>: base64 invocation. (line 29)
+* -d <6>: od invocation. (line 176)
+* -d: nl invocation. (line 68)
+* -e: File characteristic tests.
+ (line 9)
+* -E: echo invocation. (line 63)
+* -e <1>: echo invocation. (line 20)
+* -e <2>: readlink invocation. (line 35)
+* -e <3>: join invocation. (line 64)
+* -e: pr invocation. (line 120)
+* -E: cat invocation. (line 27)
+* -e: cat invocation. (line 23)
+* -ef: File characteristic tests.
+ (line 23)
+* -eq: Numeric tests. (line 16)
+* -f <1>: su invocation. (line 44)
+* -f: Options for date. (line 22)
+* -F: stty invocation. (line 31)
+* -f <1>: File type tests. (line 19)
+* -f <2>: stat invocation. (line 23)
+* -f <3>: touch invocation. (line 68)
+* -f <4>: chmod invocation. (line 45)
+* -f <5>: chgrp invocation. (line 26)
+* -f <6>: chown invocation. (line 76)
+* -f <7>: readlink invocation. (line 29)
+* -f: ln invocation. (line 67)
+* -F: ln invocation. (line 61)
+* -f <1>: shred invocation. (line 101)
+* -f <2>: rm invocation. (line 35)
+* -f <3>: mv invocation. (line 55)
+* -f: cp invocation. (line 96)
+* -F: General output formatting.
+ (line 36)
+* -f <1>: Sorting the output. (line 20)
+* -f <2>: cut invocation. (line 44)
+* -f <3>: uniq invocation. (line 31)
+* -f <4>: sort invocation. (line 92)
+* -f: csplit invocation. (line 62)
+* -F: tail invocation. (line 79)
+* -f <1>: tail invocation. (line 41)
+* -f: pr invocation. (line 128)
+* -F: pr invocation. (line 128)
+* -f <1>: od invocation. (line 179)
+* -f: nl invocation. (line 75)
+* -f FORMAT: seq invocation. (line 24)
+* -G: id invocation. (line 27)
+* -g <1>: id invocation. (line 23)
+* -g: stty invocation. (line 41)
+* -G: Access permission tests.
+ (line 31)
+* -g <1>: Access permission tests.
+ (line 9)
+* -g: install invocation. (line 54)
+* -G: What information is listed.
+ (line 110)
+* -g <1>: What information is listed.
+ (line 105)
+* -g: sort invocation. (line 98)
+* -ge: Numeric tests. (line 16)
+* -gt: Numeric tests. (line 16)
+* -H: who invocation. (line 48)
+* -h: File type tests. (line 23)
+* -H: du invocation. (line 80)
+* -h: du invocation. (line 75)
+* -H: df invocation. (line 48)
+* -h: df invocation. (line 43)
+* -H: chgrp invocation. (line 70)
+* -h: chgrp invocation. (line 35)
+* -H: chown invocation. (line 143)
+* -h: chown invocation. (line 108)
+* -H: cp invocation. (line 109)
+* -h: What information is listed.
+ (line 116)
+* -H: Which files are listed.
+ (line 36)
+* -h <1>: pr invocation. (line 134)
+* -h: nl invocation. (line 79)
+* -H: Traversing symlinks. (line 18)
+* -h: Block size. (line 138)
+* -i <1>: env invocation. (line 45)
+* -i <2>: uname invocation. (line 35)
+* -i <3>: tee invocation. (line 30)
+* -i <4>: df invocation. (line 52)
+* -i: ln invocation. (line 71)
+* -I: rm invocation. (line 44)
+* -i <1>: rm invocation. (line 39)
+* -i <2>: mv invocation. (line 59)
+* -i <3>: cp invocation. (line 116)
+* -i: What information is listed.
+ (line 122)
+* -I: Which files are listed.
+ (line 69)
+* -i <1>: expand invocation. (line 34)
+* -i <2>: join invocation. (line 69)
+* -i <3>: uniq invocation. (line 59)
+* -i <4>: shuf invocation. (line 23)
+* -i <5>: sort invocation. (line 125)
+* -i <6>: pr invocation. (line 140)
+* -i <7>: base64 invocation. (line 35)
+* -i <8>: od invocation. (line 182)
+* -i: nl invocation. (line 83)
+* -J: pr invocation. (line 147)
+* -j: od invocation. (line 55)
+* -k <1>: Access permission tests.
+ (line 12)
+* -k <2>: du invocation. (line 85)
+* -k <3>: df invocation. (line 57)
+* -k <4>: General output formatting.
+ (line 72)
+* -k <5>: sort invocation. (line 193)
+* -k <6>: csplit invocation. (line 85)
+* -k: Block size. (line 138)
+* -l <1>: su invocation. (line 53)
+* -l: who invocation. (line 68)
+* -L <1>: File type tests. (line 23)
+* -L <2>: stat invocation. (line 17)
+* -L: du invocation. (line 96)
+* -l <1>: du invocation. (line 91)
+* -l: df invocation. (line 63)
+* -L <1>: chgrp invocation. (line 75)
+* -L <2>: chown invocation. (line 148)
+* -L: cp invocation. (line 125)
+* -l <1>: cp invocation. (line 121)
+* -l: What information is listed.
+ (line 130)
+* -L <1>: Which files are listed.
+ (line 83)
+* -L: wc invocation. (line 57)
+* -l <1>: wc invocation. (line 53)
+* -l <2>: split invocation. (line 30)
+* -l <3>: pr invocation. (line 156)
+* -l <4>: od invocation. (line 185)
+* -l: nl invocation. (line 87)
+* -L: Traversing symlinks. (line 22)
+* -le: Numeric tests. (line 16)
+* -lt: Numeric tests. (line 16)
+* -m <1>: su invocation. (line 64)
+* -m <2>: uname invocation. (line 41)
+* -m <3>: who invocation. (line 51)
+* -m <4>: du invocation. (line 101)
+* -m <5>: touch invocation. (line 73)
+* -m <6>: readlink invocation. (line 41)
+* -m <7>: mknod invocation. (line 43)
+* -m <8>: mkfifo invocation. (line 21)
+* -m <9>: mkdir invocation. (line 19)
+* -m <10>: install invocation. (line 60)
+* -m: General output formatting.
+ (line 78)
+* -M: sort invocation. (line 131)
+* -m <1>: sort invocation. (line 32)
+* -m <2>: wc invocation. (line 45)
+* -m: pr invocation. (line 164)
+* -n <1>: nice invocation. (line 44)
+* -n <2>: uname invocation. (line 46)
+* -n <3>: id invocation. (line 31)
+* -n <4>: String tests. (line 19)
+* -n <5>: echo invocation. (line 17)
+* -n <6>: readlink invocation. (line 46)
+* -n: ln invocation. (line 75)
+* -N: Formatting the file names.
+ (line 17)
+* -n <1>: What information is listed.
+ (line 232)
+* -n <2>: cut invocation. (line 55)
+* -n <3>: shuf invocation. (line 32)
+* -n <4>: sort invocation. (line 140)
+* -n <5>: csplit invocation. (line 80)
+* -n <6>: tail invocation. (line 130)
+* -n: head invocation. (line 30)
+* -N: pr invocation. (line 198)
+* -n: pr invocation. (line 177)
+* -N: od invocation. (line 63)
+* -n <1>: nl invocation. (line 95)
+* -n: cat invocation. (line 31)
+* -n NUMBER: shred invocation. (line 106)
+* -ne: Numeric tests. (line 16)
+* -nt: File characteristic tests.
+ (line 15)
+* -o <1>: uname invocation. (line 57)
+* -o: Connectives for test.
+ (line 15)
+* -O: Access permission tests.
+ (line 28)
+* -o <1>: install invocation. (line 72)
+* -o <2>: What information is listed.
+ (line 236)
+* -o <3>: shuf invocation. (line 37)
+* -o <4>: sort invocation. (line 213)
+* -o <5>: pr invocation. (line 204)
+* -o: od invocation. (line 188)
+* -ot: File characteristic tests.
+ (line 19)
+* -p <1>: su invocation. (line 64)
+* -p: uname invocation. (line 50)
+* -P: pathchk invocation. (line 42)
+* -p <1>: pathchk invocation. (line 29)
+* -p: File type tests. (line 28)
+* -P <1>: du invocation. (line 107)
+* -P <2>: df invocation. (line 74)
+* -P <3>: chgrp invocation. (line 79)
+* -P: chown invocation. (line 152)
+* -p <1>: rmdir invocation. (line 22)
+* -p <2>: mkdir invocation. (line 34)
+* -p <3>: install invocation. (line 78)
+* -p: cp invocation. (line 134)
+* -P: cp invocation. (line 129)
+* -p <1>: dircolors invocation.
+ (line 38)
+* -p <2>: General output formatting.
+ (line 83)
+* -p: nl invocation. (line 108)
+* -P: Traversing symlinks. (line 26)
+* -q <1>: who invocation. (line 55)
+* -q: readlink invocation. (line 52)
+* -Q: Formatting the file names.
+ (line 30)
+* -q <1>: Formatting the file names.
+ (line 23)
+* -q <2>: csplit invocation. (line 100)
+* -q <3>: tail invocation. (line 135)
+* -q: head invocation. (line 36)
+* -r: uname invocation. (line 61)
+* -R: Options for date. (line 36)
+* -r <1>: Options for date. (line 30)
+* -r <2>: id invocation. (line 36)
+* -r <3>: Access permission tests.
+ (line 15)
+* -r: touch invocation. (line 77)
+* -R <1>: chmod invocation. (line 69)
+* -R <2>: chgrp invocation. (line 66)
+* -R <3>: chown invocation. (line 140)
+* -R: rm invocation. (line 91)
+* -r <1>: rm invocation. (line 91)
+* -r: cp invocation. (line 200)
+* -R: cp invocation. (line 200)
+* -r: Sorting the output. (line 27)
+* -R <1>: Which files are listed.
+ (line 90)
+* -R: sort invocation. (line 162)
+* -r <1>: sort invocation. (line 157)
+* -r <2>: sum invocation. (line 25)
+* -r <3>: pr invocation. (line 211)
+* -r: tac invocation. (line 26)
+* -s <1>: su invocation. (line 75)
+* -s <2>: uname invocation. (line 65)
+* -s <3>: Options for date. (line 78)
+* -s <4>: who invocation. (line 59)
+* -s <5>: tty invocation. (line 18)
+* -s: File characteristic tests.
+ (line 12)
+* -S <1>: File type tests. (line 31)
+* -S: du invocation. (line 134)
+* -s <1>: du invocation. (line 130)
+* -s: readlink invocation. (line 52)
+* -S: ln invocation. (line 100)
+* -s: ln invocation. (line 94)
+* -S <1>: mv invocation. (line 94)
+* -S: install invocation. (line 92)
+* -s: install invocation. (line 88)
+* -S: cp invocation. (line 263)
+* -s: cp invocation. (line 255)
+* -S: Sorting the output. (line 32)
+* -s <1>: What information is listed.
+ (line 242)
+* -s <2>: paste invocation. (line 34)
+* -s <3>: cut invocation. (line 59)
+* -s: uniq invocation. (line 41)
+* -S: sort invocation. (line 237)
+* -s <1>: sort invocation. (line 231)
+* -s <2>: sum invocation. (line 31)
+* -s <3>: csplit invocation. (line 100)
+* -s: fold invocation. (line 29)
+* -S: pr invocation. (line 225)
+* -s <1>: pr invocation. (line 216)
+* -s <2>: fmt invocation. (line 47)
+* -s: od invocation. (line 191)
+* -S: od invocation. (line 68)
+* -s <1>: nl invocation. (line 112)
+* -s <2>: tac invocation. (line 33)
+* -s: cat invocation. (line 35)
+* -S: Backup options. (line 50)
+* -s BYTES: shred invocation. (line 117)
+* -su: su invocation. (line 25)
+* -T: who invocation. (line 86)
+* -t <1>: File type tests. (line 34)
+* -t: stat invocation. (line 48)
+* -T: df invocation. (line 113)
+* -t: df invocation. (line 107)
+* -T: ln invocation. (line 109)
+* -t: ln invocation. (line 105)
+* -T: mv invocation. (line 103)
+* -t: mv invocation. (line 99)
+* -T: install invocation. (line 101)
+* -t: install invocation. (line 97)
+* -T: cp invocation. (line 272)
+* -t: cp invocation. (line 268)
+* -T: General output formatting.
+ (line 92)
+* -t <1>: Sorting the output. (line 36)
+* -t <2>: unexpand invocation. (line 24)
+* -t: expand invocation. (line 22)
+* -T: sort invocation. (line 273)
+* -t <1>: sort invocation. (line 253)
+* -t: md5sum invocation. (line 79)
+* -T: pr invocation. (line 246)
+* -t <1>: pr invocation. (line 235)
+* -t <2>: fmt invocation. (line 40)
+* -t: od invocation. (line 76)
+* -T: cat invocation. (line 42)
+* -t: cat invocation. (line 38)
+* -u <1>: env invocation. (line 39)
+* -u <2>: Options for date. (line 83)
+* -u <3>: who invocation. (line 62)
+* -u <4>: id invocation. (line 41)
+* -u <5>: Access permission tests.
+ (line 18)
+* -u <6>: shred invocation. (line 123)
+* -u <7>: mv invocation. (line 76)
+* -u: cp invocation. (line 277)
+* -U: Sorting the output. (line 49)
+* -u <1>: Sorting the output. (line 42)
+* -u <2>: uniq invocation. (line 98)
+* -u <3>: sort invocation. (line 282)
+* -u <4>: fmt invocation. (line 53)
+* -u: cat invocation. (line 45)
+* -v <1>: uname invocation. (line 76)
+* -v <2>: chmod invocation. (line 59)
+* -v <3>: chgrp invocation. (line 58)
+* -v <4>: chown invocation. (line 132)
+* -v <5>: rmdir invocation. (line 31)
+* -v <6>: readlink invocation. (line 56)
+* -v <7>: mkdir invocation. (line 51)
+* -v <8>: ln invocation. (line 114)
+* -v <9>: shred invocation. (line 129)
+* -v <10>: rm invocation. (line 95)
+* -v <11>: mv invocation. (line 86)
+* -v <12>: install invocation. (line 106)
+* -v <13>: cp invocation. (line 287)
+* -v <14>: Sorting the output. (line 56)
+* -v <15>: tail invocation. (line 139)
+* -v <16>: head invocation. (line 40)
+* -v <17>: pr invocation. (line 251)
+* -v <18>: od invocation. (line 146)
+* -v <19>: nl invocation. (line 117)
+* -v: cat invocation. (line 49)
+* -w <1>: who invocation. (line 86)
+* -w <2>: Access permission tests.
+ (line 21)
+* -w <3>: General output formatting.
+ (line 104)
+* -w <4>: uniq invocation. (line 103)
+* -w <5>: md5sum invocation. (line 88)
+* -w <6>: wc invocation. (line 49)
+* -w: fold invocation. (line 35)
+* -W: pr invocation. (line 264)
+* -w <1>: pr invocation. (line 255)
+* -w <2>: fmt invocation. (line 59)
+* -w <3>: base64 invocation. (line 21)
+* -w <4>: od invocation. (line 153)
+* -w: nl invocation. (line 122)
+* -WIDTH: fmt invocation. (line 59)
+* -x <1>: Access permission tests.
+ (line 24)
+* -x <2>: du invocation. (line 191)
+* -x <3>: df invocation. (line 138)
+* -x <4>: shred invocation. (line 133)
+* -x <5>: cp invocation. (line 291)
+* -x: General output formatting.
+ (line 88)
+* -X: Sorting the output. (line 63)
+* -x: od invocation. (line 194)
+* -X FILE: du invocation. (line 201)
+* -z <1>: String tests. (line 15)
+* -z <2>: shred invocation. (line 143)
+* -z <3>: shuf invocation. (line 48)
+* -z <4>: sort invocation. (line 296)
+* -z: csplit invocation. (line 89)
+* .cshrc: su invocation. (line 44)
+* /: Numeric expressions. (line 15)
+* /bin/sh: su invocation. (line 12)
+* /etc/passwd: su invocation. (line 12)
+* /etc/shells: su invocation. (line 64)
+* 128-bit checksum: md5sum invocation. (line 6)
+* 16-bit checksum: sum invocation. (line 6)
+* 160-bit checksum: sha1sum invocation. (line 6)
+* 224-bit checksum: sha2 utilities. (line 6)
+* 256-bit checksum: sha2 utilities. (line 6)
+* 384-bit checksum: sha2 utilities. (line 6)
+* 4.2 file system type: df invocation. (line 125)
+* 512-bit checksum: sha2 utilities. (line 6)
+* <: Relations for expr. (line 22)
+* <=: Relations for expr. (line 22)
+* = <1>: Relations for expr. (line 22)
+* =: String tests. (line 22)
+* ==: Relations for expr. (line 22)
+* >: Relations for expr. (line 22)
+* >=: Relations for expr. (line 22)
+* \( regexp operator: String expressions. (line 24)
+* \+ regexp operator: String expressions. (line 28)
+* \? regexp operator: String expressions. (line 28)
+* \c: printf invocation. (line 23)
+* \OOO: printf invocation. (line 57)
+* \uhhhh: printf invocation. (line 62)
+* \Uhhhhhhhh: printf invocation. (line 62)
+* \xHH: printf invocation. (line 57)
+* \| regexp operator: String expressions. (line 28)
+* _POSIX2_VERSION <1>: touch invocation. (line 93)
+* _POSIX2_VERSION <2>: uniq invocation. (line 46)
+* _POSIX2_VERSION <3>: sort invocation. (line 328)
+* _POSIX2_VERSION <4>: tail invocation. (line 150)
+* _POSIX2_VERSION: Standards conformance.
+ (line 19)
+* abbreviations for months: Calendar date items. (line 38)
+* access permission tests: Access permission tests.
+ (line 6)
+* access permissions, changing: chmod invocation. (line 6)
+* access time: dd invocation. (line 171)
+* access time, changing: touch invocation. (line 50)
+* access time, printing or sorting files by: Sorting the output.
+ (line 42)
+* access time, show the most recent: du invocation. (line 149)
+* across columns: pr invocation. (line 84)
+* across, listing files: General output formatting.
+ (line 88)
+* adding permissions: Setting Permissions. (line 38)
+* addition: Numeric expressions. (line 11)
+* ago in date strings: Relative items in date strings.
+ (line 23)
+* all repeated lines, outputting: uniq invocation. (line 69)
+* alnum: Character sets. (line 91)
+* alpha: Character sets. (line 94)
+* alternate ebcdic, converting to: dd invocation. (line 67)
+* always color option: General output formatting.
+ (line 27)
+* always interactive option: rm invocation. (line 57)
+* am i: who invocation. (line 21)
+* am in date strings: Time of day items. (line 22)
+* and operator <1>: Relations for expr. (line 17)
+* and operator: Connectives for test.
+ (line 12)
+* append: dd invocation. (line 141)
+* appending to the output file: dd invocation. (line 141)
+* appropriate privileges <1>: nice invocation. (line 6)
+* appropriate privileges <2>: hostname invocation. (line 6)
+* appropriate privileges <3>: Setting the time. (line 6)
+* appropriate privileges: install invocation. (line 72)
+* arbitrary date strings, parsing: Options for date. (line 11)
+* arbitrary text, displaying: echo invocation. (line 6)
+* arithmetic tests: Numeric tests. (line 6)
+* ASCII dump of files: od invocation. (line 6)
+* ascii, converting to: dd invocation. (line 59)
+* atime, changing: touch invocation. (line 50)
+* atime, printing or sorting files by: Sorting the output. (line 42)
+* atime, show the most recent: du invocation. (line 149)
+* attributes, file: Changing file attributes.
+ (line 6)
+* authors of get_date: Authors of get_date. (line 6)
+* auto color option: General output formatting.
+ (line 25)
+* automounter file systems: df invocation. (line 32)
+* b for block special file: mknod invocation. (line 26)
+* background jobs, stopping at terminal write: Local. (line 41)
+* backslash escapes <1>: echo invocation. (line 20)
+* backslash escapes: Character sets. (line 14)
+* backslash sequences for file names: Formatting the file names.
+ (line 11)
+* backup files, ignoring: Which files are listed.
+ (line 23)
+* backup options: Backup options. (line 6)
+* backup suffix: Backup options. (line 50)
+* backups, making <1>: ln invocation. (line 55)
+* backups, making <2>: mv invocation. (line 50)
+* backups, making <3>: install invocation. (line 40)
+* backups, making <4>: cp invocation. (line 61)
+* backups, making: Backup options. (line 13)
+* backups, making only: cp invocation. (line 42)
+* base64: base64 invocation. (line 6)
+* Base64 decoding: base64 invocation. (line 29)
+* base64 encoding: base64 invocation. (line 6)
+* basename: basename invocation. (line 6)
+* baud rate, setting: Special. (line 43)
+* beeping at input buffer full: Input. (line 56)
+* beginning of time: Time conversion specifiers.
+ (line 41)
+* beginning of time, for POSIX: Seconds since the Epoch.
+ (line 13)
+* Bellovin, Steven M.: Authors of get_date. (line 6)
+* Berets, Jim: Authors of get_date. (line 6)
+* Berry, K. <1>: Authors of get_date. (line 14)
+* Berry, K.: Introduction. (line 19)
+* binary: dd invocation. (line 188)
+* binary I/O: dd invocation. (line 188)
+* binary input files: md5sum invocation. (line 38)
+* blank: Character sets. (line 97)
+* blank lines, numbering: nl invocation. (line 87)
+* blanks, ignoring leading: sort invocation. (line 79)
+* block (space-padding): dd invocation. (line 76)
+* block size <1>: dd invocation. (line 33)
+* block size: Block size. (line 6)
+* block size of conversion: dd invocation. (line 38)
+* block size of input: dd invocation. (line 25)
+* block size of output: dd invocation. (line 29)
+* block special check: File type tests. (line 10)
+* block special files: mknod invocation. (line 11)
+* block special files, creating: mknod invocation. (line 6)
+* BLOCK_SIZE: Block size. (line 12)
+* BLOCKSIZE: Block size. (line 12)
+* body, numbering: nl invocation. (line 17)
+* Bourne shell syntax for color setup: dircolors invocation.
+ (line 27)
+* breaks, cause interrupts: Input. (line 10)
+* breaks, ignoring: Input. (line 7)
+* brkint: Input. (line 10)
+* bs: dd invocation. (line 33)
+* BSD sum: sum invocation. (line 25)
+* BSD tail: tail invocation. (line 19)
+* BSD touch compatibility: touch invocation. (line 68)
+* bsN: Output. (line 55)
+* bugs, reporting: Introduction. (line 12)
+* built-in shell commands, conflicts with <1>: nice invocation.
+ (line 35)
+* built-in shell commands, conflicts with <2>: pwd invocation.
+ (line 10)
+* built-in shell commands, conflicts with: test invocation. (line 28)
+* byte count: wc invocation. (line 6)
+* byte-swapping: dd invocation. (line 95)
+* c for character special file: mknod invocation. (line 29)
+* C shell syntax for color setup: dircolors invocation.
+ (line 33)
+* C-s/C-q flow control: Input. (line 38)
+* calendar date item: Calendar date items. (line 6)
+* case folding: sort invocation. (line 92)
+* case translation: Local. (line 36)
+* case, ignored in dates: General date syntax. (line 64)
+* cat: cat invocation. (line 6)
+* cbreak: Combination. (line 52)
+* cbs: dd invocation. (line 38)
+* CD-ROM file system type: df invocation. (line 129)
+* cdfs file system type: df invocation. (line 129)
+* change or print terminal settings: stty invocation. (line 6)
+* changed files, verbosely describing: chgrp invocation. (line 20)
+* changed owners, verbosely describing: chown invocation. (line 70)
+* changing access permissions: chmod invocation. (line 6)
+* changing file attributes: Changing file attributes.
+ (line 6)
+* changing file ownership: chown invocation. (line 6)
+* changing file timestamps: touch invocation. (line 6)
+* changing group ownership <1>: chgrp invocation. (line 6)
+* changing group ownership: chown invocation. (line 6)
+* changing special mode bits: Changing Special Mode Bits.
+ (line 6)
+* character classes: Character sets. (line 78)
+* character count: wc invocation. (line 6)
+* character size: Control. (line 19)
+* character special check: File type tests. (line 13)
+* character special files: mknod invocation. (line 11)
+* character special files, creating: mknod invocation. (line 6)
+* characters, special: Characters. (line 6)
+* check file types: test invocation. (line 6)
+* checking for sortedness: sort invocation. (line 18)
+* checksum, 128-bit: md5sum invocation. (line 6)
+* checksum, 16-bit: sum invocation. (line 6)
+* checksum, 160-bit: sha1sum invocation. (line 6)
+* checksum, 224-bit: sha2 utilities. (line 6)
+* checksum, 256-bit: sha2 utilities. (line 6)
+* checksum, 384-bit: sha2 utilities. (line 6)
+* checksum, 512-bit: sha2 utilities. (line 6)
+* chgrp: chgrp invocation. (line 6)
+* chmod: chmod invocation. (line 6)
+* chown: chown invocation. (line 6)
+* chroot: chroot invocation. (line 6)
+* cksum: cksum invocation. (line 6)
+* clocal: Control. (line 33)
+* cntrl: Character sets. (line 100)
+* color database, printing: dircolors invocation.
+ (line 38)
+* color setup: dircolors invocation.
+ (line 6)
+* color, distinguishing file types with: General output formatting.
+ (line 21)
+* cols: Special. (line 27)
+* column to wrap data after: base64 invocation. (line 21)
+* COLUMNS: Special. (line 30)
+* columns: Special. (line 27)
+* COLUMNS: General output formatting.
+ (line 104)
+* combination settings: Combination. (line 6)
+* comm: comm invocation. (line 6)
+* command-line operands to shuffle: shuf invocation. (line 19)
+* commands for controlling processes: Process control. (line 6)
+* commands for delaying: Delaying. (line 6)
+* commands for exit status: Conditions. (line 6)
+* commands for file name manipulation: File name manipulation.
+ (line 6)
+* commands for invoking other commands: Modified command invocation.
+ (line 6)
+* commands for printing text: Printing text. (line 6)
+* commands for printing the working context: Working context. (line 6)
+* commands for printing user information: User information. (line 6)
+* commands for redirection: Redirection. (line 6)
+* commands for system context: System context. (line 6)
+* commas, outputting between files: General output formatting.
+ (line 78)
+* comments, in dates: General date syntax. (line 64)
+* common field, joining on: join invocation. (line 6)
+* common lines: comm invocation. (line 18)
+* common options: Common options. (line 6)
+* compare values: test invocation. (line 6)
+* comparing sorted files: comm invocation. (line 6)
+* comparison operators: Relations for expr. (line 22)
+* concatenate and write files: cat invocation. (line 6)
+* conditional executability: Conditional Executability.
+ (line 6)
+* conditions: Conditions. (line 6)
+* conflicts with shell built-ins <1>: nice invocation. (line 35)
+* conflicts with shell built-ins <2>: pwd invocation. (line 10)
+* conflicts with shell built-ins: test invocation. (line 28)
+* connectives, logical <1>: Relations for expr. (line 6)
+* connectives, logical: Connectives for test.
+ (line 6)
+* context splitting: csplit invocation. (line 6)
+* context, system: System context. (line 6)
+* control characters, using ^C: Local. (line 51)
+* control settings: Control. (line 6)
+* controlling terminal: dd invocation. (line 176)
+* conv: dd invocation. (line 53)
+* conversion block size: dd invocation. (line 38)
+* conversion specifiers, date: Date conversion specifiers.
+ (line 6)
+* conversion specifiers, literal: Literal conversion specifiers.
+ (line 6)
+* conversion specifiers, time: Time conversion specifiers.
+ (line 6)
+* converting tabs to spaces: expand invocation. (line 6)
+* converting while copying a file: dd invocation. (line 6)
+* cooked: Combination. (line 37)
+* Coordinated Universal Time: Options for date. (line 83)
+* copying directories recursively: cp invocation. (line 76)
+* copying existing permissions: Copying Permissions. (line 6)
+* copying files: cat invocation. (line 6)
+* copying files and directories: cp invocation. (line 6)
+* copying files and setting attributes: install invocation. (line 6)
+* core utilities: Top. (line 19)
+* count: dd invocation. (line 49)
+* cp: cp invocation. (line 6)
+* crashes and corruption: sync invocation. (line 11)
+* CRC checksum: cksum invocation. (line 6)
+* cread: Control. (line 30)
+* creating directories: mkdir invocation. (line 6)
+* creating FIFOs (named pipes): mkfifo invocation. (line 6)
+* creating links (hard only): link invocation. (line 6)
+* creating links (hard or soft): ln invocation. (line 6)
+* creating output file, avoiding: dd invocation. (line 103)
+* creating output file, requiring: dd invocation. (line 107)
+* crN: Output. (line 45)
+* crown margin: fmt invocation. (line 34)
+* crt: Combination. (line 74)
+* crterase: Local. (line 22)
+* crtkill: Local. (line 56)
+* crtscts: Control. (line 36)
+* csh syntax for color setup: dircolors invocation.
+ (line 33)
+* csN: Control. (line 19)
+* csplit: csplit invocation. (line 6)
+* cstopb: Control. (line 27)
+* ctime, printing or sorting by: Sorting the output. (line 13)
+* ctime, show the most recent: du invocation. (line 144)
+* ctlecho: Local. (line 51)
+* current working directory, printing: pwd invocation. (line 6)
+* cut: cut invocation. (line 6)
+* cyclic redundancy check: cksum invocation. (line 6)
+* data, erasing: shred invocation. (line 6)
+* database for color setup, printing: dircolors invocation.
+ (line 38)
+* date: date invocation. (line 6)
+* date conversion specifiers: Date conversion specifiers.
+ (line 6)
+* date format, ISO 8601: Calendar date items. (line 30)
+* date input formats: Date input formats. (line 6)
+* date options: Options for date. (line 6)
+* date strings, parsing: Options for date. (line 11)
+* day in date strings: Relative items in date strings.
+ (line 15)
+* day of week item: Day of week items. (line 6)
+* dd: dd invocation. (line 6)
+* dec: Combination. (line 77)
+* decctlq: Combination. (line 63)
+* Decode base64 data: base64 invocation. (line 29)
+* delay for a specified time: sleep invocation. (line 6)
+* delaying commands: Delaying. (line 6)
+* deleting characters: Squeezing. (line 6)
+* dereferencing symbolic links: ln invocation. (line 40)
+* descriptor follow option: tail invocation. (line 41)
+* destination directory <1>: ln invocation. (line 105)
+* destination directory <2>: mv invocation. (line 99)
+* destination directory <3>: install invocation. (line 97)
+* destination directory <4>: cp invocation. (line 268)
+* destination directory: Target directory. (line 15)
+* destinations, multiple output: tee invocation. (line 6)
+* device file, disk: df invocation. (line 19)
+* df: df invocation. (line 6)
+* DF_BLOCK_SIZE: Block size. (line 12)
+* dictionary order: sort invocation. (line 85)
+* differing lines: comm invocation. (line 18)
+* digit: Character sets. (line 103)
+* dir: dir invocation. (line 6)
+* dircolors: dircolors invocation.
+ (line 6)
+* direct: dd invocation. (line 149)
+* direct I/O: dd invocation. (line 149)
+* directories, copying: cp invocation. (line 6)
+* directories, copying recursively: cp invocation. (line 76)
+* directories, creating: mkdir invocation. (line 6)
+* directories, creating with given attributes: install invocation.
+ (line 48)
+* directories, removing (recursively): rm invocation. (line 91)
+* directories, removing empty: rmdir invocation. (line 6)
+* directory: dd invocation. (line 152)
+* directory check: File type tests. (line 16)
+* directory components, printing: dirname invocation. (line 6)
+* directory deletion, ignoring failures: rmdir invocation. (line 17)
+* directory deletion, reporting: rmdir invocation. (line 31)
+* directory I/O: dd invocation. (line 152)
+* directory listing: ls invocation. (line 6)
+* directory listing, brief: dir invocation. (line 6)
+* directory listing, recursive: Which files are listed.
+ (line 90)
+* directory listing, verbose: vdir invocation. (line 6)
+* directory order, listing by: Sorting the output. (line 20)
+* directory, stripping from file names: basename invocation. (line 6)
+* dired Emacs mode support: What information is listed.
+ (line 16)
+* dirname: dirname invocation. (line 6)
+* disabling special characters: Characters. (line 13)
+* disambiguating group names and IDs: Disambiguating names and IDs.
+ (line 6)
+* disk allocation: What information is listed.
+ (line 242)
+* disk device file: df invocation. (line 19)
+* disk usage: Disk usage. (line 6)
+* disk usage by file system: df invocation. (line 6)
+* disk usage for files: du invocation. (line 6)
+* diskette file system: df invocation. (line 133)
+* displacement of dates: Relative items in date strings.
+ (line 6)
+* displaying text: echo invocation. (line 6)
+* displaying value of a symbolic link: readlink invocation. (line 6)
+* division: Numeric expressions. (line 15)
+* do nothing, successfully: true invocation. (line 6)
+* do nothing, unsuccessfully: false invocation. (line 6)
+* DOS file system: df invocation. (line 133)
+* double spacing: pr invocation. (line 96)
+* down columns: pr invocation. (line 70)
+* dsusp: Characters. (line 53)
+* dsync: dd invocation. (line 157)
+* du: du invocation. (line 6)
+* DU_BLOCK_SIZE: Block size. (line 12)
+* ebcdic, converting to: dd invocation. (line 63)
+* echo <1>: Local. (line 18)
+* echo: echo invocation. (line 6)
+* echoctl: Local. (line 51)
+* echoe: Local. (line 22)
+* echok: Local. (line 26)
+* echoke: Local. (line 56)
+* echonl: Local. (line 29)
+* echoprt: Local. (line 46)
+* effective user and group IDs, printing: id invocation. (line 6)
+* effective user ID, printing: whoami invocation. (line 6)
+* efs file system type: df invocation. (line 125)
+* Eggert, Paul: Authors of get_date. (line 6)
+* eight-bit characters <1>: Combination. (line 55)
+* eight-bit characters: Control. (line 19)
+* eight-bit input: Input. (line 23)
+* ek: Combination. (line 22)
+* empty files, creating: touch invocation. (line 11)
+* empty lines, numbering: nl invocation. (line 87)
+* entire files, output of: Output of entire files.
+ (line 6)
+* env: env invocation. (line 6)
+* environment variables, printing: printenv invocation. (line 6)
+* environment, preserving: su invocation. (line 64)
+* environment, printing: env invocation. (line 30)
+* environment, running a program in a modified: env invocation.
+ (line 6)
+* eof: Characters. (line 32)
+* eol: Characters. (line 35)
+* eol2: Characters. (line 38)
+* epoch, for POSIX: Seconds since the Epoch.
+ (line 13)
+* epoch, seconds since: Time conversion specifiers.
+ (line 41)
+* equal string check: String tests. (line 22)
+* equivalence classes: Character sets. (line 127)
+* erase: Characters. (line 26)
+* erasing data: shred invocation. (line 6)
+* error messages, omitting <1>: chmod invocation. (line 45)
+* error messages, omitting <2>: chgrp invocation. (line 26)
+* error messages, omitting: chown invocation. (line 76)
+* evaluation of expressions: expr invocation. (line 6)
+* even parity: Control. (line 13)
+* evenp: Combination. (line 9)
+* exabyte, definition of: Block size. (line 116)
+* examples of date: Examples of date. (line 6)
+* examples of expr: Examples of expr. (line 6)
+* exbibyte, definition of: Block size. (line 120)
+* excl: dd invocation. (line 107)
+* excluding files from du: du invocation. (line 195)
+* executable file check: Access permission tests.
+ (line 24)
+* executables and file type, marking: General output formatting.
+ (line 36)
+* execute/search permission: Mode Structure. (line 18)
+* execute/search permission, symbolic: Setting Permissions. (line 63)
+* existence-of-file check: File characteristic tests.
+ (line 9)
+* existing backup method: Backup options. (line 39)
+* exit status commands: Conditions. (line 6)
+* exit status of chroot: chroot invocation. (line 47)
+* exit status of env: env invocation. (line 49)
+* exit status of expr: expr invocation. (line 39)
+* exit status of false: false invocation. (line 6)
+* exit status of ls: ls invocation. (line 29)
+* exit status of nice: nice invocation. (line 53)
+* exit status of nohup: nohup invocation. (line 42)
+* exit status of pathchk: pathchk invocation. (line 50)
+* exit status of printenv: printenv invocation. (line 17)
+* exit status of sort: sort invocation. (line 58)
+* exit status of su: su invocation. (line 80)
+* exit status of test: test invocation. (line 40)
+* exit status of true: true invocation. (line 6)
+* exit status of tty: tty invocation. (line 21)
+* expand: expand invocation. (line 6)
+* expr: expr invocation. (line 6)
+* expression evaluation <1>: expr invocation. (line 6)
+* expression evaluation: test invocation. (line 6)
+* expressions, numeric: Numeric expressions. (line 6)
+* expressions, string: String expressions. (line 6)
+* extension, sorting files by: Sorting the output. (line 63)
+* factor: factor invocation. (line 6)
+* failure exit status: false invocation. (line 6)
+* false: false invocation. (line 6)
+* fascism: su invocation. (line 87)
+* fdatasync: dd invocation. (line 121)
+* FDL, GNU Free Documentation License: GNU Free Documentation License.
+ (line 6)
+* ffN: Output. (line 63)
+* field separator character: sort invocation. (line 253)
+* fields, padding numeric: Padding and other flags.
+ (line 6)
+* FIFOs, creating: mkfifo invocation. (line 6)
+* file attributes, changing: Changing file attributes.
+ (line 6)
+* file characteristic tests: File characteristic tests.
+ (line 6)
+* file contents, dumping unambiguously: od invocation. (line 6)
+* file information, preserving: cp invocation. (line 134)
+* file mode bits, numeric: Numeric Modes. (line 6)
+* file name manipulation: File name manipulation.
+ (line 6)
+* file name pattern expansion, disabled: su invocation. (line 44)
+* file names, checking validity and portability: pathchk invocation.
+ (line 6)
+* file names, stripping directory and suffix: basename invocation.
+ (line 6)
+* file offset radix: od invocation. (line 36)
+* file ownership, changing: chown invocation. (line 6)
+* file sizes: du invocation. (line 45)
+* file space usage: du invocation. (line 6)
+* file status: stat invocation. (line 6)
+* file system disk usage: df invocation. (line 6)
+* file system sizes: df invocation. (line 38)
+* file system space, retrieving current data more slowly: df invocation.
+ (line 100)
+* file system space, retrieving old data more quickly: df invocation.
+ (line 67)
+* file system status: stat invocation. (line 6)
+* file system types, limiting output to certain: df invocation.
+ (line 63)
+* file system types, printing: df invocation. (line 113)
+* file systems: stat invocation. (line 23)
+* file systems and hard links: ln invocation. (line 6)
+* file systems, omitting copying to different: cp invocation. (line 291)
+* file timestamps, changing: touch invocation. (line 6)
+* file type and executables, marking: General output formatting.
+ (line 36)
+* file type tests: File type tests. (line 6)
+* file type, marking: General output formatting.
+ (line 47)
+* file types: Special file types. (line 9)
+* file types, special: Special file types. (line 6)
+* file utilities: Top. (line 19)
+* files beginning with -, removing: rm invocation. (line 98)
+* files, copying: cp invocation. (line 6)
+* fingerprint, 128-bit: md5sum invocation. (line 6)
+* fingerprint, 160-bit: sha1sum invocation. (line 6)
+* fingerprint, 224-bit: sha2 utilities. (line 6)
+* fingerprint, 256-bit: sha2 utilities. (line 6)
+* fingerprint, 384-bit: sha2 utilities. (line 6)
+* fingerprint, 512-bit: sha2 utilities. (line 6)
+* first in date strings: General date syntax. (line 26)
+* first part of files, outputting: head invocation. (line 6)
+* fixed-length records, converting to variable-length: dd invocation.
+ (line 38)
+* flow control, hardware: Control. (line 36)
+* flow control, software: Input. (line 43)
+* flushing, disabling: Local. (line 32)
+* fmt: fmt invocation. (line 6)
+* fold: fold invocation. (line 6)
+* folding long input lines: fold invocation. (line 6)
+* footers, numbering: nl invocation. (line 17)
+* force deletion: shred invocation. (line 101)
+* formatting file contents: Formatting file contents.
+ (line 6)
+* formatting of numbers in seq: seq invocation. (line 24)
+* formatting times <1>: date invocation. (line 20)
+* formatting times: pr invocation. (line 100)
+* fortnight in date strings: Relative items in date strings.
+ (line 15)
+* fsync: dd invocation. (line 125)
+* general date syntax: General date syntax. (line 6)
+* general numeric sort: sort invocation. (line 98)
+* get_date: Date input formats. (line 6)
+* gibibyte, definition of: Block size. (line 99)
+* gigabyte, definition of: Block size. (line 95)
+* giving away permissions: Umask and Protection.
+ (line 12)
+* globbing, disabled: su invocation. (line 44)
+* GMT: Options for date. (line 83)
+* grand total of disk space: du invocation. (line 50)
+* graph: Character sets. (line 106)
+* Greenwich Mean Time: Options for date. (line 83)
+* group IDs, disambiguating: Disambiguating names and IDs.
+ (line 6)
+* group names, disambiguating: Disambiguating names and IDs.
+ (line 6)
+* group owner, default: Mode Structure. (line 31)
+* group ownership of installed files, setting: install invocation.
+ (line 54)
+* group ownership, changing <1>: chgrp invocation. (line 6)
+* group ownership, changing: chown invocation. (line 6)
+* group wheel, not supported: su invocation. (line 87)
+* group, permissions for: Setting Permissions. (line 26)
+* groups: groups invocation. (line 6)
+* growing files: tail invocation. (line 41)
+* hangups, immunity to: nohup invocation. (line 6)
+* hard link check: File characteristic tests.
+ (line 23)
+* hard link, defined: ln invocation. (line 32)
+* hard links: dd invocation. (line 185)
+* hard links to directories: ln invocation. (line 61)
+* hard links, counting in du: du invocation. (line 91)
+* hard links, creating <1>: ln invocation. (line 6)
+* hard links, creating: link invocation. (line 6)
+* hard links, preserving: cp invocation. (line 89)
+* hardware class: uname invocation. (line 41)
+* hardware flow control: Control. (line 36)
+* hardware platform: uname invocation. (line 35)
+* hardware type: uname invocation. (line 41)
+* hat notation for control characters: Local. (line 51)
+* head: head invocation. (line 6)
+* head of output: shuf invocation. (line 32)
+* headers, numbering: nl invocation. (line 17)
+* help, online: Common options. (line 29)
+* hex dump of files: od invocation. (line 6)
+* High Sierra file system: df invocation. (line 129)
+* holes, copying files with: cp invocation. (line 216)
+* HOME: su invocation. (line 18)
+* horizontal, listing files: General output formatting.
+ (line 88)
+* host processor type: uname invocation. (line 50)
+* hostid: hostid invocation. (line 6)
+* hostname <1>: hostname invocation. (line 6)
+* hostname: uname invocation. (line 46)
+* hour in date strings: Relative items in date strings.
+ (line 15)
+* hsfs file system type: df invocation. (line 129)
+* human-readable output <1>: du invocation. (line 75)
+* human-readable output <2>: df invocation. (line 43)
+* human-readable output <3>: What information is listed.
+ (line 116)
+* human-readable output: Block size. (line 43)
+* hup[cl]: Control. (line 23)
+* hurd, author, printing: What information is listed.
+ (line 10)
+* ibs: dd invocation. (line 25)
+* icanon: Local. (line 11)
+* icrnl: Input. (line 32)
+* id: id invocation. (line 6)
+* idle time: who invocation. (line 62)
+* iexten: Local. (line 15)
+* if: dd invocation. (line 17)
+* iflag: dd invocation. (line 130)
+* ignbrk: Input. (line 7)
+* igncr: Input. (line 29)
+* ignore file systems: df invocation. (line 32)
+* Ignore garbage in base64 stream: base64 invocation. (line 35)
+* ignoring case: sort invocation. (line 92)
+* ignpar: Input. (line 13)
+* imaxbel: Input. (line 56)
+* immunity to hangups: nohup invocation. (line 6)
+* implementation, hardware: uname invocation. (line 35)
+* including files from du <1>: du invocation. (line 62)
+* including files from du: wc invocation. (line 60)
+* indenting lines: pr invocation. (line 204)
+* index: String expressions. (line 45)
+* information, about current users: who invocation. (line 6)
+* initial part of files, outputting: head invocation. (line 6)
+* initial tabs, converting: expand invocation. (line 34)
+* inlcr: Input. (line 26)
+* inode number, printing: What information is listed.
+ (line 122)
+* inode usage: df invocation. (line 52)
+* inode, and hard links: ln invocation. (line 32)
+* inodes, written buffered: sync invocation. (line 6)
+* inpck: Input. (line 20)
+* input block size: dd invocation. (line 25)
+* input encoding, UTF-8: Input. (line 35)
+* input range to shuffle: shuf invocation. (line 23)
+* input settings: Input. (line 6)
+* input tabs: pr invocation. (line 120)
+* install: install invocation. (line 6)
+* interactivity <1>: mv invocation. (line 64)
+* interactivity: cp invocation. (line 188)
+* intr: Characters. (line 20)
+* invocation of commands, modified: Modified command invocation.
+ (line 6)
+* isig: Local. (line 7)
+* ISO 8601 date format: Calendar date items. (line 30)
+* ISO/IEC 10646: printf invocation. (line 62)
+* ispeed: Special. (line 16)
+* istrip: Input. (line 23)
+* items in date strings: General date syntax. (line 6)
+* iterations, selecting the number of: shred invocation. (line 106)
+* iuclc: Input. (line 48)
+* iutf8: Input. (line 35)
+* ixany: Input. (line 52)
+* ixoff: Input. (line 43)
+* ixon: Input. (line 38)
+* join: join invocation. (line 6)
+* kernel name: uname invocation. (line 65)
+* kernel release: uname invocation. (line 61)
+* kernel version: uname invocation. (line 76)
+* kibibyte, definition of: Block size. (line 83)
+* kibibytes for file sizes: du invocation. (line 85)
+* kibibytes for file system sizes: df invocation. (line 57)
+* kill <1>: kill invocation. (line 6)
+* kill: Characters. (line 29)
+* kilobyte, definition of: Block size. (line 78)
+* Knuth, Donald E.: fmt invocation. (line 19)
+* language, in dates: General date syntax. (line 40)
+* last DAY <1>: Day of week items. (line 15)
+* last DAY: Options for date. (line 11)
+* last in date strings: General date syntax. (line 26)
+* last modified dates, displaying in du: du invocation. (line 138)
+* last part of files, outputting: tail invocation. (line 6)
+* LC_ALL <1>: ls invocation. (line 17)
+* LC_ALL: sort invocation. (line 49)
+* LC_COLLATE <1>: Relations for expr. (line 22)
+* LC_COLLATE <2>: join invocation. (line 14)
+* LC_COLLATE <3>: comm invocation. (line 12)
+* LC_COLLATE <4>: uniq invocation. (line 21)
+* LC_COLLATE: sort invocation. (line 49)
+* LC_CTYPE <1>: printf invocation. (line 62)
+* LC_CTYPE: sort invocation. (line 79)
+* LC_MESSAGES: pr invocation. (line 13)
+* LC_NUMERIC <1>: printf invocation. (line 51)
+* LC_NUMERIC <2>: sort invocation. (line 98)
+* LC_NUMERIC: Block size. (line 57)
+* LC_TIME <1>: date invocation. (line 11)
+* LC_TIME <2>: du invocation. (line 158)
+* LC_TIME <3>: Formatting file timestamps.
+ (line 30)
+* LC_TIME <4>: sort invocation. (line 131)
+* LC_TIME: pr invocation. (line 107)
+* LCASE: Combination. (line 71)
+* lcase: Combination. (line 71)
+* lcase, converting to: dd invocation. (line 87)
+* lchown <1>: chgrp invocation. (line 30)
+* lchown: chown invocation. (line 103)
+* leading directories, creating missing: install invocation. (line 48)
+* leading directory components, stripping: basename invocation.
+ (line 6)
+* left margin: pr invocation. (line 204)
+* length: String expressions. (line 50)
+* limiting output of du: du invocation. (line 111)
+* line: Special. (line 37)
+* line count: wc invocation. (line 6)
+* line numbering: nl invocation. (line 6)
+* line settings of terminal: stty invocation. (line 6)
+* line-breaking: fmt invocation. (line 19)
+* line-by-line comparison: comm invocation. (line 6)
+* LINES: Special. (line 30)
+* link: link invocation. (line 6)
+* links, creating <1>: ln invocation. (line 6)
+* links, creating: link invocation. (line 6)
+* Linux file system types: df invocation. (line 125)
+* literal conversion specifiers: Literal conversion specifiers.
+ (line 6)
+* litout: Combination. (line 59)
+* ln: ln invocation. (line 6)
+* ln format for nl: nl invocation. (line 98)
+* lnext: Characters. (line 62)
+* local file system types: df invocation. (line 125)
+* local settings: Local. (line 6)
+* logging out and continuing to run: nohup invocation. (line 6)
+* logical and operator <1>: Relations for expr. (line 17)
+* logical and operator: Connectives for test.
+ (line 12)
+* logical connectives <1>: Relations for expr. (line 6)
+* logical connectives: Connectives for test.
+ (line 6)
+* logical or operator <1>: Relations for expr. (line 11)
+* logical or operator: Connectives for test.
+ (line 15)
+* logical pages, numbering on: nl invocation. (line 12)
+* login name, printing: logname invocation. (line 6)
+* login sessions, printing users with: users invocation. (line 6)
+* login shell: su invocation. (line 18)
+* login shell, creating: su invocation. (line 53)
+* login time: who invocation. (line 11)
+* LOGNAME: su invocation. (line 18)
+* logname: logname invocation. (line 6)
+* long ls format: What information is listed.
+ (line 130)
+* lower: Character sets. (line 109)
+* lowercase, translating to output: Output. (line 12)
+* ls: ls invocation. (line 6)
+* LS_BLOCK_SIZE: Block size. (line 12)
+* LS_COLORS: dircolors invocation.
+ (line 16)
+* machine type: uname invocation. (line 41)
+* machine-readable stty output: stty invocation. (line 41)
+* MacKenzie, D.: Introduction. (line 19)
+* MacKenzie, David: Authors of get_date. (line 6)
+* Makefiles, installing programs in: install invocation. (line 30)
+* manipulating files: Basic operations. (line 6)
+* manipulation of file names: File name manipulation.
+ (line 6)
+* match: String expressions. (line 36)
+* matching patterns: String expressions. (line 11)
+* MD5: md5sum invocation. (line 6)
+* md5sum: md5sum invocation. (line 6)
+* mebibyte, definition of: Block size. (line 92)
+* mebibytes for file sizes: du invocation. (line 101)
+* megabyte, definition of: Block size. (line 88)
+* merging files: paste invocation. (line 6)
+* merging files in parallel: pr invocation. (line 6)
+* merging sorted files: sort invocation. (line 32)
+* message status: who invocation. (line 86)
+* message-digest, 128-bit: md5sum invocation. (line 6)
+* message-digest, 160-bit: sha1sum invocation. (line 6)
+* message-digest, 224-bit: sha2 utilities. (line 6)
+* message-digest, 256-bit: sha2 utilities. (line 6)
+* message-digest, 384-bit: sha2 utilities. (line 6)
+* message-digest, 512-bit: sha2 utilities. (line 6)
+* Meyering, J.: Introduction. (line 19)
+* Meyering, Jim: Authors of get_date. (line 6)
+* midnight in date strings: Time of day items. (line 22)
+* min: Special. (line 7)
+* minute in date strings: Relative items in date strings.
+ (line 15)
+* minutes, time zone correction by: Time of day items. (line 30)
+* MIT AI lab: su invocation. (line 92)
+* mkdir: mkdir invocation. (line 6)
+* mkfifo: mkfifo invocation. (line 6)
+* mknod: mknod invocation. (line 6)
+* modem control: Control. (line 33)
+* modes and umask: Umask and Protection.
+ (line 6)
+* modes of created directories, setting: mkdir invocation. (line 19)
+* modes of created FIFOs, setting: mkfifo invocation. (line 21)
+* modification time, sorting files by: Sorting the output. (line 36)
+* modified command invocation: Modified command invocation.
+ (line 6)
+* modified environment, running a program in a: env invocation.
+ (line 6)
+* modify time, changing: touch invocation. (line 73)
+* month in date strings: Relative items in date strings.
+ (line 15)
+* month names in date strings: Calendar date items. (line 38)
+* months, sorting by: sort invocation. (line 131)
+* months, written-out: General date syntax. (line 36)
+* MS-DOS file system: df invocation. (line 133)
+* mtime, changing: touch invocation. (line 73)
+* multicolumn output, generating: pr invocation. (line 6)
+* multiple changes to permissions: Multiple Changes. (line 6)
+* multiplication: Numeric expressions. (line 15)
+* multipliers after numbers: dd invocation. (line 204)
+* mv: mv invocation. (line 6)
+* name follow option: tail invocation. (line 41)
+* name of kernel: uname invocation. (line 65)
+* named pipe check: File type tests. (line 28)
+* named pipes, creating: mkfifo invocation. (line 6)
+* network node name: uname invocation. (line 46)
+* never interactive option: rm invocation. (line 52)
+* newer files, copying only: cp invocation. (line 277)
+* newer files, moving only: mv invocation. (line 76)
+* newer-than file check: File characteristic tests.
+ (line 15)
+* newline echoing after kill: Local. (line 26)
+* newline, echoing: Local. (line 29)
+* newline, translating to crlf: Output. (line 19)
+* newline, translating to return: Input. (line 26)
+* next DAY <1>: Day of week items. (line 15)
+* next DAY: Options for date. (line 11)
+* next in date strings: General date syntax. (line 26)
+* NFS file system type: df invocation. (line 120)
+* NFS mounts from BSD to HP-UX <1>: du invocation. (line 206)
+* NFS mounts from BSD to HP-UX: What information is listed.
+ (line 250)
+* nice: nice invocation. (line 6)
+* niceness: nice invocation. (line 6)
+* nl <1>: Combination. (line 18)
+* nl: nl invocation. (line 6)
+* nlN: Output. (line 39)
+* no-op: true invocation. (line 6)
+* noatime: dd invocation. (line 171)
+* nocreat: dd invocation. (line 103)
+* noctty: dd invocation. (line 176)
+* node name: uname invocation. (line 46)
+* noerror: dd invocation. (line 100)
+* noflsh: Local. (line 32)
+* nofollow: dd invocation. (line 182)
+* nohup: nohup invocation. (line 6)
+* nohup.out: nohup invocation. (line 6)
+* nolinks: dd invocation. (line 185)
+* non-directories, copying as special files: cp invocation. (line 76)
+* non-directory suffix, stripping: dirname invocation. (line 6)
+* nonblock: dd invocation. (line 168)
+* nonblocking I/O: dd invocation. (line 168)
+* none backup method: Backup options. (line 31)
+* none color option: General output formatting.
+ (line 23)
+* none, sorting option for ls: Sorting the output. (line 49)
+* nonempty file check: File characteristic tests.
+ (line 12)
+* nonprinting characters, ignoring: sort invocation. (line 125)
+* nonzero-length string check: String tests. (line 19)
+* noon in date strings: Time of day items. (line 22)
+* not-equal string check: String tests. (line 25)
+* notrunc: dd invocation. (line 113)
+* now in date strings: Relative items in date strings.
+ (line 33)
+* numbered backup method: Backup options. (line 35)
+* numbering lines: nl invocation. (line 6)
+* numbers, written-out: General date syntax. (line 26)
+* numeric expressions: Numeric expressions. (line 6)
+* numeric field padding: Padding and other flags.
+ (line 6)
+* numeric modes: Numeric Modes. (line 6)
+* numeric operations: Numeric operations. (line 6)
+* numeric sequences: seq invocation. (line 6)
+* numeric sort: sort invocation. (line 140)
+* numeric tests: Numeric tests. (line 6)
+* numeric uid and gid: What information is listed.
+ (line 232)
+* numeric user and group IDs: What information is listed.
+ (line 232)
+* obs: dd invocation. (line 29)
+* ocrnl: Output. (line 16)
+* octal dump of files: od invocation. (line 6)
+* octal numbers for file modes: Numeric Modes. (line 6)
+* od: od invocation. (line 6)
+* odd parity: Control. (line 13)
+* oddp: Combination. (line 14)
+* of: dd invocation. (line 20)
+* ofdel: Output. (line 34)
+* ofill: Output. (line 30)
+* oflag: dd invocation. (line 134)
+* olcuc: Output. (line 12)
+* older-than file check: File characteristic tests.
+ (line 19)
+* once interactive option: rm invocation. (line 54)
+* one file system, restricting du to: du invocation. (line 191)
+* one file system, restricting rm to: rm invocation. (line 63)
+* one-line output format: df invocation. (line 74)
+* onlcr: Output. (line 19)
+* onlret: Output. (line 27)
+* onocr: Output. (line 23)
+* operating on characters: Operating on characters.
+ (line 6)
+* operating on sorted files: Operating on sorted files.
+ (line 6)
+* operating system name: uname invocation. (line 57)
+* opost: Output. (line 9)
+* option delimiter: Common options. (line 36)
+* options for date: Options for date. (line 6)
+* or operator <1>: Relations for expr. (line 11)
+* or operator: Connectives for test.
+ (line 15)
+* ordinal numbers: General date syntax. (line 26)
+* ospeed: Special. (line 19)
+* other permissions: Setting Permissions. (line 29)
+* output block size: dd invocation. (line 29)
+* output file name prefix <1>: csplit invocation. (line 62)
+* output file name prefix: split invocation. (line 14)
+* output file name suffix: csplit invocation. (line 66)
+* output format: stat invocation. (line 28)
+* output format, portable: df invocation. (line 74)
+* output null-byte-terminated lines: du invocation. (line 117)
+* output of entire files: Output of entire files.
+ (line 6)
+* output of parts of files: Output of parts of files.
+ (line 6)
+* output settings: Output. (line 6)
+* output tabs: pr invocation. (line 140)
+* overwriting of input, allowed <1>: shuf invocation. (line 37)
+* overwriting of input, allowed: sort invocation. (line 213)
+* owned by effective group ID check: Access permission tests.
+ (line 31)
+* owned by effective user ID check: Access permission tests.
+ (line 28)
+* owner of file, permissions for: Setting Permissions. (line 23)
+* owner, default: Mode Structure. (line 31)
+* ownership of installed files, setting: install invocation. (line 72)
+* p for FIFO file: mknod invocation. (line 23)
+* pad character: Output. (line 34)
+* pad instead of timing for delaying: Output. (line 30)
+* padding of numeric fields: Padding and other flags.
+ (line 6)
+* paragraphs, reformatting: fmt invocation. (line 6)
+* parenb: Control. (line 9)
+* parent directories and cp: cp invocation. (line 177)
+* parent directories, creating: mkdir invocation. (line 34)
+* parent directories, creating missing: install invocation. (line 48)
+* parent directories, removing: rmdir invocation. (line 22)
+* parentheses for grouping: expr invocation. (line 31)
+* parity: Combination. (line 10)
+* parity errors, marking: Input. (line 16)
+* parity, ignoring: Input. (line 13)
+* parmrk: Input. (line 16)
+* parodd: Control. (line 13)
+* parsing date strings: Options for date. (line 11)
+* parts of files, output of: Output of parts of files.
+ (line 6)
+* pass8: Combination. (line 55)
+* passwd entry, and su shell: su invocation. (line 12)
+* paste: paste invocation. (line 6)
+* Paterson, R.: Introduction. (line 19)
+* PATH <1>: su invocation. (line 53)
+* PATH: env invocation. (line 24)
+* pathchk: pathchk invocation. (line 6)
+* pattern matching: String expressions. (line 11)
+* PC file system: df invocation. (line 133)
+* pcfs: df invocation. (line 133)
+* pebibyte, definition of: Block size. (line 113)
+* permission tests: Access permission tests.
+ (line 6)
+* permissions of installed files, setting: install invocation.
+ (line 60)
+* permissions, changing access: chmod invocation. (line 6)
+* permissions, copying existing: Copying Permissions. (line 6)
+* permissions, for changing file timestamps: touch invocation.
+ (line 16)
+* permissions, output by ls: What information is listed.
+ (line 190)
+* petabyte, definition of: Block size. (line 109)
+* phone directory order: sort invocation. (line 85)
+* pieces, splitting a file into: split invocation. (line 6)
+* Pinard, F. <1>: Authors of get_date. (line 14)
+* Pinard, F.: Introduction. (line 19)
+* pipe fitting: tee invocation. (line 6)
+* Plass, Michael F.: fmt invocation. (line 19)
+* platform, hardware: uname invocation. (line 35)
+* pm in date strings: Time of day items. (line 22)
+* portable file names, checking for: pathchk invocation. (line 6)
+* portable output format: df invocation. (line 74)
+* POSIX: Introduction. (line 11)
+* POSIX output format: df invocation. (line 74)
+* POSIXLY_CORRECT <1>: printf invocation. (line 42)
+* POSIXLY_CORRECT <2>: echo invocation. (line 68)
+* POSIXLY_CORRECT <3>: dd invocation. (line 237)
+* POSIXLY_CORRECT <4>: sort invocation. (line 221)
+* POSIXLY_CORRECT <5>: tail invocation. (line 75)
+* POSIXLY_CORRECT <6>: pr invocation. (line 107)
+* POSIXLY_CORRECT <7>: Standards conformance.
+ (line 6)
+* POSIXLY_CORRECT: Common options. (line 11)
+* POSIXLY_CORRECT, and block size: Block size. (line 12)
+* pr: pr invocation. (line 6)
+* prime factors: factor invocation. (line 6)
+* print: Character sets. (line 112)
+* print name of current directory: pwd invocation. (line 6)
+* print system information: uname invocation. (line 6)
+* print terminal file name: tty invocation. (line 6)
+* printenv: printenv invocation. (line 6)
+* printf: printf invocation. (line 6)
+* printing all or some environment variables: printenv invocation.
+ (line 6)
+* printing color database: dircolors invocation.
+ (line 38)
+* printing current user information: who invocation. (line 6)
+* printing current usernames: users invocation. (line 6)
+* printing groups a user is in: groups invocation. (line 6)
+* printing real and effective user and group IDs: id invocation.
+ (line 6)
+* printing text: echo invocation. (line 6)
+* printing text, commands for: Printing text. (line 6)
+* printing the current time: date invocation. (line 6)
+* printing the effective user ID: whoami invocation. (line 6)
+* printing the host identifier: hostid invocation. (line 6)
+* printing the hostname: hostname invocation. (line 6)
+* printing user's login name: logname invocation. (line 6)
+* printing, preparing files for: pr invocation. (line 6)
+* processes, commands for controlling: Process control. (line 6)
+* prompting, and ln: ln invocation. (line 71)
+* prompting, and mv: mv invocation. (line 34)
+* prompting, and rm: rm invocation. (line 11)
+* prompts, forcing: mv invocation. (line 59)
+* prompts, omitting: mv invocation. (line 55)
+* prterase: Local. (line 46)
+* ptx: ptx invocation. (line 6)
+* punct: Character sets. (line 115)
+* pure numbers in date strings: Pure numbers in date strings.
+ (line 6)
+* pwd: pwd invocation. (line 6)
+* quit: Characters. (line 23)
+* quoting style: Formatting the file names.
+ (line 34)
+* radix for file offsets: od invocation. (line 36)
+* random sort: sort invocation. (line 162)
+* random source for shredding: shred invocation. (line 112)
+* random source for shuffling: shuf invocation. (line 43)
+* random source for sorting: sort invocation. (line 226)
+* random sources: Random sources. (line 6)
+* ranges: Character sets. (line 50)
+* raw: Combination. (line 43)
+* read errors, ignoring: dd invocation. (line 100)
+* read from stdin and write to stdout and files: tee invocation.
+ (line 6)
+* read permission: Mode Structure. (line 12)
+* read permission, symbolic: Setting Permissions. (line 57)
+* read system call, and holes: cp invocation. (line 216)
+* readable file check: Access permission tests.
+ (line 15)
+* readlink: readlink invocation. (line 6)
+* real user and group IDs, printing: id invocation. (line 6)
+* recursive directory listing: Which files are listed.
+ (line 90)
+* recursively changing access permissions: chmod invocation. (line 69)
+* recursively changing file ownership: chown invocation. (line 140)
+* recursively changing group ownership: chgrp invocation. (line 66)
+* recursively copying directories: cp invocation. (line 76)
+* redirection: Redirection. (line 6)
+* reformatting paragraph text: fmt invocation. (line 6)
+* regular expression matching: String expressions. (line 11)
+* regular file check: File type tests. (line 19)
+* relations, numeric or string: Relations for expr. (line 6)
+* relative items in date strings: Relative items in date strings.
+ (line 6)
+* release of kernel: uname invocation. (line 61)
+* remainder: Numeric expressions. (line 15)
+* remote hostname: who invocation. (line 11)
+* removing empty directories: rmdir invocation. (line 6)
+* removing files after shredding: shred invocation. (line 123)
+* removing files or directories: rm invocation. (line 6)
+* removing files or directories (via the unlink syscall): unlink invocation.
+ (line 6)
+* removing permissions: Setting Permissions. (line 42)
+* repeated characters: Character sets. (line 71)
+* repeated lines, outputting: uniq invocation. (line 63)
+* repeated output of a string: yes invocation. (line 6)
+* restricted deletion flag: Mode Structure. (line 56)
+* restricted shell: su invocation. (line 64)
+* return, ignoring: Input. (line 29)
+* return, translating to newline <1>: Output. (line 16)
+* return, translating to newline: Input. (line 32)
+* reverse sorting <1>: Sorting the output. (line 27)
+* reverse sorting: sort invocation. (line 157)
+* reversing files: tac invocation. (line 6)
+* rm: rm invocation. (line 6)
+* rmdir: rmdir invocation. (line 6)
+* rn format for nl: nl invocation. (line 101)
+* root as default owner: install invocation. (line 72)
+* root directory, allow recursive destruction: rm invocation. (line 84)
+* root directory, allow recursive modification <1>: chmod invocation.
+ (line 54)
+* root directory, allow recursive modification <2>: chgrp invocation.
+ (line 48)
+* root directory, allow recursive modification: chown invocation.
+ (line 121)
+* root directory, disallow recursive destruction: rm invocation.
+ (line 79)
+* root directory, disallow recursive modification <1>: chmod invocation.
+ (line 49)
+* root directory, disallow recursive modification <2>: chgrp invocation.
+ (line 43)
+* root directory, disallow recursive modification: chown invocation.
+ (line 116)
+* root directory, running a program in a specified: chroot invocation.
+ (line 6)
+* root, becoming: su invocation. (line 6)
+* rows: Special. (line 22)
+* rprnt: Characters. (line 56)
+* RTS/CTS flow control: Control. (line 36)
+* running a program in a modified environment: env invocation.
+ (line 6)
+* running a program in a specified root directory: chroot invocation.
+ (line 6)
+* rz format for nl: nl invocation. (line 104)
+* Salz, Rich: Authors of get_date. (line 6)
+* same file check: File characteristic tests.
+ (line 23)
+* sane: Combination. (line 26)
+* scheduling, affecting: nice invocation. (line 6)
+* screen columns: fold invocation. (line 14)
+* seconds since the epoch: Time conversion specifiers.
+ (line 41)
+* section delimiters of pages: nl invocation. (line 68)
+* seek: dd invocation. (line 46)
+* self-backups: cp invocation. (line 42)
+* send a signal to processes: kill invocation. (line 6)
+* sentences and line-breaking: fmt invocation. (line 19)
+* separator for numbers in seq: seq invocation. (line 42)
+* seq: seq invocation. (line 6)
+* sequence of numbers: seq invocation. (line 6)
+* set-group-ID: Mode Structure. (line 49)
+* set-group-ID check: Access permission tests.
+ (line 9)
+* set-user-ID: Mode Structure. (line 42)
+* set-user-ID check: Access permission tests.
+ (line 18)
+* setgid: Mode Structure. (line 49)
+* setting permissions: Setting Permissions. (line 46)
+* setting the hostname: hostname invocation. (line 6)
+* setting the time: Setting the time. (line 6)
+* setuid: Mode Structure. (line 42)
+* setup for color: dircolors invocation.
+ (line 6)
+* sh syntax for color setup: dircolors invocation.
+ (line 27)
+* SHA-1: sha1sum invocation. (line 6)
+* SHA-2: sha2 utilities. (line 6)
+* sha1sum: sha1sum invocation. (line 6)
+* sha224sum: sha2 utilities. (line 6)
+* sha256sum: sha2 utilities. (line 6)
+* sha384sum: sha2 utilities. (line 6)
+* sha512sum: sha2 utilities. (line 6)
+* SHELL: su invocation. (line 18)
+* SHELL environment variable, and color: dircolors invocation.
+ (line 16)
+* shell utilities: Top. (line 19)
+* shred: shred invocation. (line 6)
+* shuf: shuf invocation. (line 6)
+* shuffling files: shuf invocation. (line 6)
+* SI output <1>: du invocation. (line 123)
+* SI output <2>: df invocation. (line 93)
+* SI output <3>: What information is listed.
+ (line 258)
+* SI output: Block size. (line 43)
+* simple backup method: Backup options. (line 44)
+* SIMPLE_BACKUP_SUFFIX: Backup options. (line 50)
+* single-column output of files: General output formatting.
+ (line 10)
+* size: Special. (line 30)
+* size for main memory sorting: sort invocation. (line 237)
+* size of file to shred: shred invocation. (line 117)
+* size of files, reporting: What information is listed.
+ (line 242)
+* size of files, sorting files by: Sorting the output. (line 32)
+* skip: dd invocation. (line 43)
+* sleep: sleep invocation. (line 6)
+* socket check: File type tests. (line 31)
+* software flow control: Input. (line 43)
+* sort: sort invocation. (line 6)
+* sort field: sort invocation. (line 193)
+* sort stability: sort invocation. (line 38)
+* sort zero-terminated lines <1>: shuf invocation. (line 48)
+* sort zero-terminated lines: sort invocation. (line 296)
+* sort's last-resort comparison: sort invocation. (line 38)
+* sorted files, operations on: Operating on sorted files.
+ (line 6)
+* sorting files: sort invocation. (line 6)
+* sorting ls output: Sorting the output. (line 6)
+* space: Character sets. (line 118)
+* sparse files, copying: cp invocation. (line 216)
+* special characters: Characters. (line 6)
+* special file types: Special file types. (line 6)
+* special files: mknod invocation. (line 11)
+* special settings: Special. (line 6)
+* specifying sets of characters: Character sets. (line 6)
+* speed: Special. (line 40)
+* split: split invocation. (line 6)
+* splitting a file into pieces: split invocation. (line 6)
+* splitting a file into pieces by context: csplit invocation. (line 6)
+* squeezing blank lines: cat invocation. (line 35)
+* squeezing repeat characters: Squeezing. (line 6)
+* Stallman, R.: Introduction. (line 19)
+* standard input: Common options. (line 41)
+* standard output: Common options. (line 41)
+* start: Characters. (line 44)
+* stat: stat invocation. (line 6)
+* status time, printing or sorting by: Sorting the output. (line 13)
+* status time, show the most recent: du invocation. (line 144)
+* sticky: Mode Structure. (line 56)
+* sticky bit check: Access permission tests.
+ (line 12)
+* stop: Characters. (line 47)
+* stop bits: Control. (line 27)
+* strftime and date: date invocation. (line 20)
+* string constants, outputting: od invocation. (line 68)
+* string expressions: String expressions. (line 6)
+* string tests: String tests. (line 6)
+* strip directory and suffix from file names: basename invocation.
+ (line 6)
+* stripping non-directory suffix: dirname invocation. (line 6)
+* stripping symbol table information: install invocation. (line 88)
+* stripping trailing slashes <1>: mv invocation. (line 89)
+* stripping trailing slashes: cp invocation. (line 250)
+* stty: stty invocation. (line 6)
+* su: su invocation. (line 6)
+* substitute user and group IDs: su invocation. (line 6)
+* substr: String expressions. (line 40)
+* subtracting permissions: Setting Permissions. (line 42)
+* subtraction: Numeric expressions. (line 11)
+* successful exit: true invocation. (line 6)
+* suffix, stripping from file names: basename invocation. (line 6)
+* sum: sum invocation. (line 6)
+* summarizing files: Summarizing files. (line 6)
+* super-user, becoming: su invocation. (line 6)
+* superblock, writing: sync invocation. (line 6)
+* supplementary groups, printing: groups invocation. (line 6)
+* susp: Characters. (line 50)
+* swab (byte-swapping): dd invocation. (line 95)
+* swap space, saving text image in: Mode Structure. (line 56)
+* swtch: Characters. (line 41)
+* symbol table information, stripping: install invocation. (line 88)
+* symbolic (soft) links, creating: ln invocation. (line 6)
+* symbolic link check: File type tests. (line 23)
+* symbolic link to directory, controlling traversal of: Traversing symlinks.
+ (line 6)
+* symbolic link to directory, never traverse <1>: chgrp invocation.
+ (line 79)
+* symbolic link to directory, never traverse <2>: chown invocation.
+ (line 152)
+* symbolic link to directory, never traverse: Traversing symlinks.
+ (line 26)
+* symbolic link to directory, traverse each that is encountered <1>: chgrp invocation.
+ (line 75)
+* symbolic link to directory, traverse each that is encountered <2>: chown invocation.
+ (line 148)
+* symbolic link to directory, traverse each that is encountered: Traversing symlinks.
+ (line 22)
+* symbolic link to directory, traverse each that is specified on the command line <1>: chgrp invocation.
+ (line 70)
+* symbolic link to directory, traverse each that is specified on the command line <2>: chown invocation.
+ (line 143)
+* symbolic link to directory, traverse each that is specified on the command line: Traversing symlinks.
+ (line 18)
+* symbolic link, defined: ln invocation. (line 40)
+* symbolic links and pwd: pwd invocation. (line 6)
+* symbolic links, changing group: chgrp invocation. (line 35)
+* symbolic links, changing owner <1>: chgrp invocation. (line 30)
+* symbolic links, changing owner: chown invocation. (line 80)
+* symbolic links, copying: cp invocation. (line 89)
+* symbolic links, copying with: cp invocation. (line 255)
+* symbolic links, dereferencing: Which files are listed.
+ (line 36)
+* symbolic links, dereferencing in du: du invocation. (line 96)
+* symbolic links, dereferencing in stat: stat invocation. (line 17)
+* symbolic links, following: dd invocation. (line 182)
+* symbolic links, permissions of: chmod invocation. (line 10)
+* symbolic modes: Symbolic Modes. (line 6)
+* sync <1>: sync invocation. (line 6)
+* sync: dd invocation. (line 165)
+* sync (padding with nulls): dd invocation. (line 116)
+* synchronize disk and memory: sync invocation. (line 6)
+* synchronized data and metadata I/O: dd invocation. (line 165)
+* synchronized data and metadata writes, before finishing: dd invocation.
+ (line 125)
+* synchronized data reads: dd invocation. (line 157)
+* synchronized data writes, before finishing: dd invocation. (line 121)
+* syslog: su invocation. (line 29)
+* system context: System context. (line 6)
+* system information, printing: uname invocation. (line 6)
+* system name, printing: hostname invocation. (line 6)
+* System V sum: sum invocation. (line 31)
+* tab stops, setting: expand invocation. (line 22)
+* tabN: Output. (line 51)
+* tabs: Combination. (line 66)
+* tabs to spaces, converting: expand invocation. (line 6)
+* tac: tac invocation. (line 6)
+* tagged paragraphs: fmt invocation. (line 40)
+* tail: tail invocation. (line 6)
+* tandem: Input. (line 43)
+* target directory <1>: ln invocation. (line 105)
+* target directory <2>: mv invocation. (line 99)
+* target directory <3>: install invocation. (line 97)
+* target directory <4>: cp invocation. (line 268)
+* target directory: Target directory. (line 6)
+* tebibyte, definition of: Block size. (line 106)
+* tee: tee invocation. (line 6)
+* telephone directory order: sort invocation. (line 85)
+* temporary directory: sort invocation. (line 273)
+* terabyte, definition of: Block size. (line 102)
+* TERM: su invocation. (line 53)
+* terminal check: File type tests. (line 34)
+* terminal file name, printing: tty invocation. (line 6)
+* terminal lines, currently used: who invocation. (line 11)
+* terminal settings: stty invocation. (line 6)
+* terminal, using color iff: General output formatting.
+ (line 25)
+* terse output: stat invocation. (line 48)
+* test: test invocation. (line 6)
+* text: dd invocation. (line 192)
+* text I/O: dd invocation. (line 192)
+* text image, saving in swap space: Mode Structure. (line 56)
+* text input files: md5sum invocation. (line 79)
+* text utilities: Top. (line 19)
+* text, displaying: echo invocation. (line 6)
+* text, reformatting: fmt invocation. (line 6)
+* this in date strings: Relative items in date strings.
+ (line 33)
+* time <1>: Special. (line 11)
+* time: touch invocation. (line 58)
+* time conversion specifiers: Time conversion specifiers.
+ (line 6)
+* time formats <1>: date invocation. (line 20)
+* time formats: pr invocation. (line 100)
+* time of day item: Time of day items. (line 6)
+* time setting: Setting the time. (line 6)
+* time style <1>: du invocation. (line 153)
+* time style: Formatting file timestamps.
+ (line 26)
+* time units: sleep invocation. (line 11)
+* time zone correction: Time of day items. (line 30)
+* time zone item <1>: Time zone items. (line 6)
+* time zone item: General date syntax. (line 44)
+* time, printing or setting: date invocation. (line 6)
+* TIME_STYLE <1>: du invocation. (line 181)
+* TIME_STYLE: Formatting file timestamps.
+ (line 106)
+* timestamps of installed files, preserving: install invocation.
+ (line 78)
+* timestamps, changing file: touch invocation. (line 6)
+* TMPDIR: sort invocation. (line 64)
+* today in date strings: Relative items in date strings.
+ (line 33)
+* tomorrow: Options for date. (line 11)
+* tomorrow in date strings: Relative items in date strings.
+ (line 29)
+* topological sort: tsort invocation. (line 6)
+* tostop: Local. (line 41)
+* total counts: wc invocation. (line 12)
+* touch: touch invocation. (line 6)
+* tr: tr invocation. (line 6)
+* trailing slashes: Trailing slashes. (line 6)
+* translating characters: Translating. (line 6)
+* true: true invocation. (line 6)
+* truncating output file, avoiding: dd invocation. (line 113)
+* tsort: tsort invocation. (line 6)
+* tty: tty invocation. (line 6)
+* Twenex: su invocation. (line 92)
+* two-way parity: Control. (line 9)
+* type size: od invocation. (line 113)
+* TZ <1>: Specifying time zone rules.
+ (line 6)
+* TZ <2>: Options for date. (line 83)
+* TZ <3>: date invocation. (line 16)
+* TZ <4>: who invocation. (line 26)
+* TZ <5>: stat invocation. (line 131)
+* TZ <6>: touch invocation. (line 37)
+* TZ <7>: Formatting file timestamps.
+ (line 18)
+* TZ: pr invocation. (line 113)
+* u, and disabling special characters: Characters. (line 13)
+* ucase, converting to: dd invocation. (line 90)
+* ufs file system type: df invocation. (line 125)
+* umask and modes: Umask and Protection.
+ (line 6)
+* uname: uname invocation. (line 6)
+* unblock: dd invocation. (line 81)
+* unexpand: unexpand invocation. (line 6)
+* Unicode: printf invocation. (line 62)
+* uniq: uniq invocation. (line 6)
+* unique lines, outputting: uniq invocation. (line 98)
+* uniquify files: uniq invocation. (line 6)
+* uniquifying output: sort invocation. (line 282)
+* unlink: unlink invocation. (line 6)
+* unprintable characters, ignoring: sort invocation. (line 125)
+* unsorted directory listing: Sorting the output. (line 20)
+* upper: Character sets. (line 121)
+* uppercase, translating to lowercase: Input. (line 48)
+* use time, changing: touch invocation. (line 50)
+* use time, printing or sorting files by: Sorting the output. (line 13)
+* use time, show the most recent: du invocation. (line 144)
+* USER: su invocation. (line 18)
+* user ID, switching: su invocation. (line 6)
+* user IDs, disambiguating: Disambiguating names and IDs.
+ (line 6)
+* user information, commands for: User information. (line 6)
+* user name, printing: logname invocation. (line 6)
+* user names, disambiguating: Disambiguating names and IDs.
+ (line 6)
+* usernames, printing current: users invocation. (line 6)
+* users: users invocation. (line 6)
+* UTC: Options for date. (line 83)
+* utmp <1>: who invocation. (line 15)
+* utmp <2>: users invocation. (line 14)
+* utmp: logname invocation. (line 6)
+* valid file names, checking for: pathchk invocation. (line 6)
+* variable-length records, converting to fixed-length: dd invocation.
+ (line 38)
+* vdir: vdir invocation. (line 6)
+* verbose ls format: What information is listed.
+ (line 130)
+* verifying MD5 checksums: md5sum invocation. (line 69)
+* version number, finding: Common options. (line 33)
+* version of kernel: uname invocation. (line 76)
+* version, sorting option for ls: Sorting the output. (line 56)
+* version-control Emacs variable: Backup options. (line 24)
+* VERSION_CONTROL <1>: ln invocation. (line 55)
+* VERSION_CONTROL <2>: mv invocation. (line 50)
+* VERSION_CONTROL <3>: install invocation. (line 40)
+* VERSION_CONTROL <4>: cp invocation. (line 61)
+* VERSION_CONTROL: Backup options. (line 13)
+* vertical sorted files in columns: General output formatting.
+ (line 15)
+* vtN: Output. (line 59)
+* wc: wc invocation. (line 6)
+* week in date strings: Relative items in date strings.
+ (line 15)
+* werase: Characters. (line 59)
+* wheel group, not supported: su invocation. (line 87)
+* who: who invocation. (line 6)
+* who am i: who invocation. (line 21)
+* whoami: whoami invocation. (line 6)
+* word count: wc invocation. (line 6)
+* working context: Working context. (line 6)
+* working directory, printing: pwd invocation. (line 6)
+* wrap data: base64 invocation. (line 21)
+* wrapping long input lines: fold invocation. (line 6)
+* writable file check: Access permission tests.
+ (line 21)
+* write permission: Mode Structure. (line 15)
+* write permission, symbolic: Setting Permissions. (line 60)
+* write, allowed: who invocation. (line 86)
+* wtmp <1>: who invocation. (line 15)
+* wtmp: users invocation. (line 14)
+* xcase: Local. (line 36)
+* xdigit: Character sets. (line 124)
+* XON/XOFF flow control: Input. (line 38)
+* year in date strings: Relative items in date strings.
+ (line 15)
+* yes: yes invocation. (line 6)
+* yesterday: Options for date. (line 11)
+* yesterday in date strings: Relative items in date strings.
+ (line 29)
+* yottabyte, definition of: Block size. (line 131)
+* Youmans, B.: Introduction. (line 19)
+* zero-length string check: String tests. (line 15)
+* zettabyte, definition of: Block size. (line 123)
+* |: Relations for expr. (line 11)
+
+
+
+Tag Table:
+Node: Top7718
+Node: Introduction20818
+Node: Common options22377
+Node: Exit status25162
+Node: Backup options25892
+Node: Block size27816
+Node: Disambiguating names and IDs32732
+Ref: Disambiguating names and IDs-Footnote-134290
+Node: Random sources34360
+Node: Target directory36109
+Node: Trailing slashes39594
+Node: Traversing symlinks40615
+Node: Treating / specially41686
+Node: Special built-in utilities43227
+Node: Standards conformance44362
+Node: Output of entire files45878
+Node: cat invocation46479
+Node: tac invocation48207
+Node: nl invocation49469
+Node: od invocation53348
+Node: base64 invocation59711
+Node: Formatting file contents61073
+Node: fmt invocation61524
+Node: pr invocation64337
+Node: fold invocation77122
+Node: Output of parts of files78582
+Node: head invocation79090
+Node: tail invocation80806
+Node: split invocation88629
+Node: csplit invocation90715
+Node: Summarizing files94827
+Node: wc invocation95475
+Node: sum invocation98360
+Node: cksum invocation99765
+Node: md5sum invocation100905
+Node: sha1sum invocation105599
+Node: sha2 utilities106379
+Node: Operating on sorted files107003
+Node: sort invocation107659
+Ref: sort invocation-Footnote-1127034
+Node: shuf invocation127586
+Node: uniq invocation130150
+Node: comm invocation134230
+Node: tsort invocation135558
+Node: tsort background138592
+Node: ptx invocation140355
+Node: General options in ptx143159
+Node: Charset selection in ptx143740
+Node: Input processing in ptx144642
+Node: Output formatting in ptx150063
+Node: Compatibility in ptx156629
+Node: Operating on fields within a line159858
+Node: cut invocation160262
+Node: paste invocation163581
+Node: join invocation164909
+Node: Operating on characters169133
+Node: tr invocation169569
+Node: Character sets171287
+Node: Translating175718
+Node: Squeezing177809
+Node: expand invocation180876
+Node: unexpand invocation182358
+Node: Directory listing184176
+Node: ls invocation184662
+Ref: ls invocation-Footnote-1186476
+Node: Which files are listed186698
+Node: What information is listed190358
+Node: Sorting the output199334
+Node: More details about version sort201654
+Node: General output formatting203152
+Node: Formatting file timestamps207060
+Node: Formatting the file names212401
+Node: dir invocation215317
+Node: vdir invocation215728
+Node: dircolors invocation216106
+Node: Basic operations217586
+Node: cp invocation218206
+Node: dd invocation230266
+Node: install invocation238684
+Node: mv invocation242911
+Node: rm invocation247201
+Node: shred invocation251515
+Node: Special file types259000
+Node: link invocation260496
+Node: ln invocation261502
+Node: mkdir invocation266564
+Node: mkfifo invocation268813
+Node: mknod invocation269818
+Node: readlink invocation271577
+Node: rmdir invocation273320
+Node: unlink invocation274593
+Node: Changing file attributes275552
+Node: chown invocation276366
+Node: chgrp invocation282552
+Node: chmod invocation285602
+Node: touch invocation288357
+Node: Disk usage292953
+Node: df invocation293545
+Node: du invocation299217
+Node: stat invocation307207
+Node: sync invocation311049
+Node: Printing text311976
+Node: echo invocation312350
+Node: printf invocation314527
+Node: yes invocation319234
+Node: Conditions319846
+Node: false invocation320437
+Node: true invocation321472
+Node: test invocation322751
+Node: File type tests324711
+Node: Access permission tests325593
+Node: File characteristic tests326478
+Node: String tests327243
+Node: Numeric tests327908
+Node: Connectives for test328705
+Node: expr invocation329058
+Node: String expressions331319
+Node: Numeric expressions333902
+Node: Relations for expr334540
+Node: Examples of expr335740
+Node: Redirection336468
+Node: tee invocation336913
+Node: File name manipulation337978
+Node: basename invocation338426
+Node: dirname invocation339873
+Node: pathchk invocation341079
+Node: Working context342743
+Node: pwd invocation343387
+Node: stty invocation344061
+Node: Control346821
+Node: Input347581
+Node: Output349057
+Node: Local350313
+Node: Combination351895
+Node: Characters354057
+Node: Special355611
+Node: printenv invocation356977
+Node: tty invocation357740
+Node: User information358446
+Node: id invocation359081
+Node: logname invocation360297
+Node: whoami invocation360924
+Node: groups invocation361411
+Node: users invocation362147
+Node: who invocation363094
+Node: System context365863
+Node: date invocation366353
+Node: Time conversion specifiers368011
+Node: Date conversion specifiers370411
+Node: Literal conversion specifiers373535
+Node: Padding and other flags373893
+Node: Setting the time376087
+Node: Options for date377093
+Node: Examples of date380398
+Ref: %s-examples381841
+Node: uname invocation384026
+Node: hostname invocation386599
+Node: hostid invocation387212
+Node: Modified command invocation387899
+Node: chroot invocation388525
+Node: env invocation390644
+Node: nice invocation392723
+Node: nohup invocation396219
+Node: su invocation398210
+Node: Process control402683
+Node: kill invocation402906
+Node: Delaying407272
+Node: sleep invocation407469
+Node: Numeric operations408333
+Node: factor invocation408665
+Node: seq invocation410003
+Node: File permissions414284
+Node: Mode Structure414902
+Node: Symbolic Modes418597
+Node: Setting Permissions419695
+Node: Copying Permissions422308
+Node: Changing Special Mode Bits423127
+Node: Conditional Executability424949
+Node: Multiple Changes425493
+Node: Umask and Protection427160
+Node: Numeric Modes428265
+Node: Directory Setuid and Setgid430165
+Node: Date input formats432427
+Node: General date syntax434780
+Node: Calendar date items437739
+Node: Time of day items439744
+Node: Time zone items441868
+Node: Day of week items443110
+Node: Relative items in date strings444107
+Node: Pure numbers in date strings446917
+Node: Seconds since the Epoch447906
+Node: Specifying time zone rules449535
+Node: Authors of get_date451907
+Node: Opening the software toolbox452667
+Node: Toolbox introduction453328
+Node: I/O redirection456051
+Node: The who command458885
+Node: The cut command459782
+Node: The sort command460845
+Node: The uniq command461549
+Node: Putting the tools together462239
+Ref: Putting the tools together-Footnote-1474196
+Node: Copying This Manual474270
+Node: GNU Free Documentation License474525
+Node: Index496926
+
+End Tag Table
diff --git a/doc/coreutils.texi b/doc/coreutils.texi
new file mode 100644
index 0000000..588147f
--- /dev/null
+++ b/doc/coreutils.texi
@@ -0,0 +1,14638 @@
+\input texinfo
+@c %**start of header
+@setfilename coreutils.info
+@settitle @sc{gnu} Coreutils
+
+@c %**end of header
+
+@include version.texi
+@include constants.texi
+
+@c Define new indices.
+@defcodeindex op
+@defcodeindex fl
+
+@c Put everything in one index (arbitrarily chosen to be the concept index).
+@syncodeindex fl cp
+@syncodeindex fn cp
+@syncodeindex ky cp
+@syncodeindex op cp
+@syncodeindex pg cp
+@syncodeindex vr cp
+
+@dircategory Basics
+@direntry
+* Coreutils: (coreutils). Core GNU (file, text, shell) utilities.
+* Common options: (coreutils)Common options. Common options.
+* File permissions: (coreutils)File permissions. Access modes.
+* Date input formats: (coreutils)Date input formats.
+@end direntry
+
+@c FIXME: the following need documentation
+@c * [: (coreutils)[ invocation. File/string tests.
+@c * pinky: (coreutils)pinky invocation. FIXME.
+@c * uptime: (coreutils)uptime invocation. FIXME.
+
+@dircategory Individual utilities
+@direntry
+* base64: (coreutils)base64 invocation. Base64 encode/decode data.
+* basename: (coreutils)basename invocation. Strip directory and suffix.
+* cat: (coreutils)cat invocation. Concatenate and write files.
+* chgrp: (coreutils)chgrp invocation. Change file groups.
+* chmod: (coreutils)chmod invocation. Change file permissions.
+* chown: (coreutils)chown invocation. Change file owners/groups.
+* chroot: (coreutils)chroot invocation. Specify the root directory.
+* cksum: (coreutils)cksum invocation. Print POSIX CRC checksum.
+* comm: (coreutils)comm invocation. Compare sorted files by line.
+* cp: (coreutils)cp invocation. Copy files.
+* csplit: (coreutils)csplit invocation. Split by context.
+* cut: (coreutils)cut invocation. Print selected parts of lines.
+* date: (coreutils)date invocation. Print/set system date and time.
+* dd: (coreutils)dd invocation. Copy and convert a file.
+* df: (coreutils)df invocation. Report file system disk usage.
+* dir: (coreutils)dir invocation. List directories briefly.
+* dircolors: (coreutils)dircolors invocation. Color setup for ls.
+* dirname: (coreutils)dirname invocation. Strip non-directory suffix.
+* du: (coreutils)du invocation. Report on disk usage.
+* echo: (coreutils)echo invocation. Print a line of text.
+* env: (coreutils)env invocation. Modify the environment.
+* expand: (coreutils)expand invocation. Convert tabs to spaces.
+* expr: (coreutils)expr invocation. Evaluate expressions.
+* factor: (coreutils)factor invocation. Print prime factors
+* false: (coreutils)false invocation. Do nothing, unsuccessfully.
+* fmt: (coreutils)fmt invocation. Reformat paragraph text.
+* fold: (coreutils)fold invocation. Wrap long input lines.
+* groups: (coreutils)groups invocation. Print group names a user is in.
+* head: (coreutils)head invocation. Output the first part of files.
+* hostid: (coreutils)hostid invocation. Print numeric host identifier.
+* hostname: (coreutils)hostname invocation. Print or set system name.
+* id: (coreutils)id invocation. Print user identity.
+* install: (coreutils)install invocation. Copy and change attributes.
+* join: (coreutils)join invocation. Join lines on a common field.
+* kill: (coreutils)kill invocation. Send a signal to processes.
+* link: (coreutils)link invocation. Make hard links between files.
+* ln: (coreutils)ln invocation. Make links between files.
+* logname: (coreutils)logname invocation. Print current login name.
+* ls: (coreutils)ls invocation. List directory contents.
+* md5sum: (coreutils)md5sum invocation. Print or check MD5 digests.
+* mkdir: (coreutils)mkdir invocation. Create directories.
+* mkfifo: (coreutils)mkfifo invocation. Create FIFOs (named pipes).
+* mknod: (coreutils)mknod invocation. Create special files.
+* mv: (coreutils)mv invocation. Rename files.
+* nice: (coreutils)nice invocation. Modify niceness.
+* nl: (coreutils)nl invocation. Number lines and write files.
+* nohup: (coreutils)nohup invocation. Immunize to hangups.
+* od: (coreutils)od invocation. Dump files in octal, etc.
+* paste: (coreutils)paste invocation. Merge lines of files.
+* pathchk: (coreutils)pathchk invocation. Check file name portability.
+* pr: (coreutils)pr invocation. Paginate or columnate files.
+* printenv: (coreutils)printenv invocation. Print environment variables.
+* printf: (coreutils)printf invocation. Format and print data.
+* ptx: (coreutils)ptx invocation. Produce permuted indexes.
+* pwd: (coreutils)pwd invocation. Print working directory.
+* readlink: (coreutils)readlink invocation. Print referent of a symlink.
+* rm: (coreutils)rm invocation. Remove files.
+* rmdir: (coreutils)rmdir invocation. Remove empty directories.
+* seq: (coreutils)seq invocation. Print numeric sequences
+* sha1sum: (coreutils)sha1sum invocation. Print or check SHA-1 digests.
+* sha2: (coreutils)sha2 utilities. Print or check SHA-2 digests.
+* shred: (coreutils)shred invocation. Remove files more securely.
+* shuf: (coreutils)shuf invocation. Shuffling text files.
+* sleep: (coreutils)sleep invocation. Delay for a specified time.
+* sort: (coreutils)sort invocation. Sort text files.
+* split: (coreutils)split invocation. Split into fixed-size pieces.
+* stat: (coreutils)stat invocation. Report file(system) status.
+* stty: (coreutils)stty invocation. Print/change terminal settings.
+* su: (coreutils)su invocation. Modify user and group ID.
+* sum: (coreutils)sum invocation. Print traditional checksum.
+* sync: (coreutils)sync invocation. Synchronize memory and disk.
+* tac: (coreutils)tac invocation. Reverse files.
+* tail: (coreutils)tail invocation. Output the last part of files.
+* tee: (coreutils)tee invocation. Redirect to multiple files.
+* test: (coreutils)test invocation. File/string tests.
+* touch: (coreutils)touch invocation. Change file timestamps.
+* tr: (coreutils)tr invocation. Translate characters.
+* true: (coreutils)true invocation. Do nothing, successfully.
+* tsort: (coreutils)tsort invocation. Topological sort.
+* tty: (coreutils)tty invocation. Print terminal name.
+* uname: (coreutils)uname invocation. Print system information.
+* unexpand: (coreutils)unexpand invocation. Convert spaces to tabs.
+* uniq: (coreutils)uniq invocation. Uniquify files.
+* unlink: (coreutils)unlink invocation. Removal via unlink(2).
+* users: (coreutils)users invocation. Print current user names.
+* vdir: (coreutils)vdir invocation. List directories verbosely.
+* wc: (coreutils)wc invocation. Line, word, and byte counts.
+* who: (coreutils)who invocation. Print who is logged in.
+* whoami: (coreutils)whoami invocation. Print effective user ID.
+* yes: (coreutils)yes invocation. Print a string indefinitely.
+@end direntry
+
+@copying
+This manual documents version @value{VERSION} of the @sc{gnu} core
+utilities, including the standard programs for text and file manipulation.
+
+Copyright @copyright{} 1994, 1995, 1996, 2000, 2001, 2002, 2003, 2004,
+2005, 2006 Free Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts. A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
+@end quotation
+@end copying
+
+@titlepage
+@title @sc{gnu} @code{Coreutils}
+@subtitle Core GNU utilities
+@subtitle for version @value{VERSION}, @value{UPDATED}
+@author David MacKenzie et al.
+
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+@end titlepage
+
+
+@ifnottex
+@node Top
+@top GNU Coreutils
+
+@insertcopying
+@end ifnottex
+
+@cindex core utilities
+@cindex text utilities
+@cindex shell utilities
+@cindex file utilities
+
+@menu
+* Introduction:: Caveats, overview, and authors.
+* Common options:: Common options.
+* Output of entire files:: cat tac nl od
+* Formatting file contents:: fmt pr fold
+* Output of parts of files:: head tail split csplit
+* Summarizing files:: wc sum cksum md5sum sha1sum sha2
+* Operating on sorted files:: sort shuf uniq comm ptx tsort
+* Operating on fields within a line:: cut paste join
+* Operating on characters:: tr expand unexpand
+* Directory listing:: ls dir vdir dircolors
+* Basic operations:: cp dd install mv rm shred
+* Special file types:: ln mkdir rmdir mkfifo mknod
+* Changing file attributes:: chgrp chmod chown touch
+* Disk usage:: df du stat sync
+* Printing text:: echo printf yes
+* Conditions:: false true test expr
+* Redirection:: tee
+* File name manipulation:: dirname basename pathchk
+* Working context:: pwd stty printenv tty
+* User information:: id logname whoami groups users who
+* System context:: date uname hostname hostid
+* Modified command invocation:: chroot env nice nohup su
+* Process control:: kill
+* Delaying:: sleep
+* Numeric operations:: factor seq
+* File permissions:: Access modes.
+* Date input formats:: Specifying date strings.
+* Opening the software toolbox:: The software tools philosophy.
+* Copying This Manual:: License for copying this manual.
+* Index:: General index.
+
+@detailmenu
+ --- The Detailed Node Listing ---
+
+Common Options
+
+* Exit status:: Indicating program success or failure.
+* Backup options:: Backup options
+* Block size:: Block size
+* Disambiguating names and IDs:: chgrp and chown owner and group syntax
+* Random sources:: Sources of random data
+* Target directory:: Target directory
+* Trailing slashes:: Trailing slashes
+* Traversing symlinks:: Traversing symlinks to directories
+* Treating / specially:: Treating / specially
+* Standards conformance:: Standards conformance
+
+Output of entire files
+
+* cat invocation:: Concatenate and write files.
+* tac invocation:: Concatenate and write files in reverse.
+* nl invocation:: Number lines and write files.
+* od invocation:: Write files in octal or other formats.
+* base64 invocation:: Transform data into printable data.
+
+Formatting file contents
+
+* fmt invocation:: Reformat paragraph text.
+* pr invocation:: Paginate or columnate files for printing.
+* fold invocation:: Wrap input lines to fit in specified width.
+
+Output of parts of files
+
+* head invocation:: Output the first part of files.
+* tail invocation:: Output the last part of files.
+* split invocation:: Split a file into fixed-size pieces.
+* csplit invocation:: Split a file into context-determined pieces.
+
+Summarizing files
+
+* wc invocation:: Print newline, word, and byte counts.
+* sum invocation:: Print checksum and block counts.
+* cksum invocation:: Print CRC checksum and byte counts.
+* md5sum invocation:: Print or check MD5 digests.
+* sha1sum invocation:: Print or check SHA-1 digests.
+* sha2 utilities:: Print or check SHA-2 digests.
+
+Operating on sorted files
+
+* sort invocation:: Sort text files.
+* shuf invocation:: Shuffle text files.
+* uniq invocation:: Uniquify files.
+* comm invocation:: Compare two sorted files line by line.
+* ptx invocation:: Produce a permuted index of file contents.
+* tsort invocation:: Topological sort.
+
+@command{ptx}: Produce permuted indexes
+
+* General options in ptx:: Options which affect general program behavior.
+* Charset selection in ptx:: Underlying character set considerations.
+* Input processing in ptx:: Input fields, contexts, and keyword selection.
+* Output formatting in ptx:: Types of output format, and sizing the fields.
+* Compatibility in ptx:: The @acronym{GNU} extensions to @command{ptx}
+
+Operating on fields within a line
+
+* cut invocation:: Print selected parts of lines.
+* paste invocation:: Merge lines of files.
+* join invocation:: Join lines on a common field.
+
+Operating on characters
+
+* tr invocation:: Translate, squeeze, and/or delete characters.
+* expand invocation:: Convert tabs to spaces.
+* unexpand invocation:: Convert spaces to tabs.
+
+@command{tr}: Translate, squeeze, and/or delete characters
+
+* Character sets:: Specifying sets of characters.
+* Translating:: Changing one set of characters to another.
+* Squeezing:: Squeezing repeats and deleting.
+
+Directory listing
+
+* ls invocation:: List directory contents
+* dir invocation:: Briefly list directory contents
+* vdir invocation:: Verbosely list directory contents
+* dircolors invocation:: Color setup for @command{ls}
+
+@command{ls}: List directory contents
+
+* Which files are listed:: Which files are listed
+* What information is listed:: What information is listed
+* Sorting the output:: Sorting the output
+* More details about version sort:: More details about version sort
+* General output formatting:: General output formatting
+* Formatting the file names:: Formatting the file names
+
+Basic operations
+
+* cp invocation:: Copy files and directories
+* dd invocation:: Convert and copy a file
+* install invocation:: Copy files and set attributes
+* mv invocation:: Move (rename) files
+* rm invocation:: Remove files or directories
+* shred invocation:: Remove files more securely
+
+Special file types
+
+* link invocation:: Make a hard link via the link syscall
+* ln invocation:: Make links between files
+* mkdir invocation:: Make directories
+* mkfifo invocation:: Make FIFOs (named pipes)
+* mknod invocation:: Make block or character special files
+* readlink invocation:: Print the referent of a symbolic link
+* rmdir invocation:: Remove empty directories
+* unlink invocation:: Remove files via unlink syscall
+
+Changing file attributes
+
+* chown invocation:: Change file owner and group
+* chgrp invocation:: Change group ownership
+* chmod invocation:: Change access permissions
+* touch invocation:: Change file timestamps
+
+Disk usage
+
+* df invocation:: Report file system disk space usage
+* du invocation:: Estimate file space usage
+* stat invocation:: Report file or file system status
+* sync invocation:: Synchronize data on disk with memory
+
+Printing text
+
+* echo invocation:: Print a line of text
+* printf invocation:: Format and print data
+* yes invocation:: Print a string until interrupted
+
+Conditions
+
+* false invocation:: Do nothing, unsuccessfully
+* true invocation:: Do nothing, successfully
+* test invocation:: Check file types and compare values
+* expr invocation:: Evaluate expressions
+
+@command{test}: Check file types and compare values
+
+* File type tests:: File type tests
+* Access permission tests:: Access permission tests
+* File characteristic tests:: File characteristic tests
+* String tests:: String tests
+* Numeric tests:: Numeric tests
+
+@command{expr}: Evaluate expression
+
+* String expressions:: + : match substr index length
+* Numeric expressions:: + - * / %
+* Relations for expr:: | & < <= = == != >= >
+* Examples of expr:: Examples of using @command{expr}
+
+Redirection
+
+* tee invocation:: Redirect output to multiple files
+
+File name manipulation
+
+* basename invocation:: Strip directory and suffix from a file name
+* dirname invocation:: Strip non-directory suffix from a file name
+* pathchk invocation:: Check file name portability
+
+Working context
+
+* pwd invocation:: Print working directory
+* stty invocation:: Print or change terminal characteristics
+* printenv invocation:: Print all or some environment variables
+* tty invocation:: Print file name of terminal on standard input
+
+@command{stty}: Print or change terminal characteristics
+
+* Control:: Control settings
+* Input:: Input settings
+* Output:: Output settings
+* Local:: Local settings
+* Combination:: Combination settings
+* Characters:: Special characters
+* Special:: Special settings
+
+User information
+
+* id invocation:: Print user identity
+* logname invocation:: Print current login name
+* whoami invocation:: Print effective user ID
+* groups invocation:: Print group names a user is in
+* users invocation:: Print login names of users currently logged in
+* who invocation:: Print who is currently logged in
+
+System context
+
+* date invocation:: Print or set system date and time
+* uname invocation:: Print system information
+* hostname invocation:: Print or set system name
+* hostid invocation:: Print numeric host identifier.
+
+@command{date}: Print or set system date and time
+
+* Time conversion specifiers:: %[HIklMNpPrRsSTXzZ]
+* Date conversion specifiers:: %[aAbBcCdDeFgGhjmuUVwWxyY]
+* Literal conversion specifiers:: %[%nt]
+* Padding and other flags:: Pad with zeros, spaces, etc.
+* Setting the time:: Changing the system clock.
+* Options for date:: Instead of the current time.
+* Examples of date:: Examples.
+
+Modified command invocation
+
+* chroot invocation:: Run a command with a different root directory
+* env invocation:: Run a command in a modified environment
+* nice invocation:: Run a command with modified niceness
+* nohup invocation:: Run a command immune to hangups
+* su invocation:: Run a command with substitute user and group ID
+
+Process control
+
+* kill invocation:: Sending a signal to processes.
+
+Delaying
+
+* sleep invocation:: Delay for a specified time
+
+Numeric operations
+
+* factor invocation:: Print prime factors
+* seq invocation:: Print numeric sequences
+
+File permissions
+
+* Mode Structure:: Structure of file mode bits.
+* Symbolic Modes:: Mnemonic representation of file mode bits.
+* Numeric Modes:: File mode bits as octal numbers.
+* Directory Setuid and Setgid:: Set-user-ID and set-group-ID on directories.
+
+Date input formats
+
+* General date syntax:: Common rules.
+* Calendar date items:: 19 Dec 1994.
+* Time of day items:: 9:20pm.
+* Time zone items:: @sc{est}, @sc{pdt}, @sc{gmt}.
+* Day of week items:: Monday and others.
+* Relative items in date strings:: next tuesday, 2 years ago.
+* Pure numbers in date strings:: 19931219, 1440.
+* Seconds since the Epoch:: @@1078100502.
+* Specifying time zone rules:: TZ="America/New_York", TZ="UTC0".
+* Authors of get_date:: Bellovin, Eggert, Salz, Berets, et al.
+
+Opening the software toolbox
+
+* Toolbox introduction:: Toolbox introduction
+* I/O redirection:: I/O redirection
+* The who command:: The @command{who} command
+* The cut command:: The @command{cut} command
+* The sort command:: The @command{sort} command
+* The uniq command:: The @command{uniq} command
+* Putting the tools together:: Putting the tools together
+
+Copying This Manual
+
+* GNU Free Documentation License:: License for copying this manual.
+
+@end detailmenu
+@end menu
+
+
+@node Introduction
+@chapter Introduction
+
+This manual is a work in progress: many sections make no attempt to explain
+basic concepts in a way suitable for novices. Thus, if you are interested,
+please get involved in improving this manual. The entire @sc{gnu} community
+will benefit.
+
+@cindex @acronym{POSIX}
+The @sc{gnu} utilities documented here are mostly compatible with the
+@acronym{POSIX} standard.
+@cindex bugs, reporting
+Please report bugs to @email{bug-coreutils@@gnu.org}. Remember
+to include the version number, machine architecture, input files, and
+any other information needed to reproduce the bug: your input, what you
+expected, what you got, and why it is wrong. Diffs are welcome, but
+please include a description of the problem as well, since this is
+sometimes difficult to infer. @xref{Bugs, , , gcc, Using and Porting GNU CC}.
+
+@cindex Berry, K.
+@cindex Paterson, R.
+@cindex Stallman, R.
+@cindex Pinard, F.
+@cindex MacKenzie, D.
+@cindex Meyering, J.
+@cindex Youmans, B.
+This manual was originally derived from the Unix man pages in the
+distributions, which were written by David MacKenzie and updated by Jim
+Meyering. What you are reading now is the authoritative documentation
+for these utilities; the man pages are no longer being maintained. The
+original @command{fmt} man page was written by Ross Paterson. Fran@,{c}ois
+Pinard did the initial conversion to Texinfo format. Karl Berry did the
+indexing, some reorganization, and editing of the results. Brian
+Youmans of the Free Software Foundation office staff combined the
+manuals for textutils, fileutils, and sh-utils to produce the present
+omnibus manual. Richard Stallman contributed his usual invaluable
+insights to the overall process.
+
+@node Common options
+@chapter Common options
+
+@macro optBackup
+@item -b
+@itemx @w{@kbd{--backup}[=@var{method}]}
+@opindex -b
+@opindex --backup
+@vindex VERSION_CONTROL
+@cindex backups, making
+@xref{Backup options}.
+Make a backup of each file that would otherwise be overwritten or removed.
+@end macro
+
+@macro optBackupSuffix
+@item -S @var{suffix}
+@itemx --suffix=@var{suffix}
+@opindex -S
+@opindex --suffix
+Append @var{suffix} to each backup file made with @option{-b}.
+@xref{Backup options}.
+@end macro
+
+@macro optTargetDirectory
+@item -t @var{directory}
+@itemx @w{@kbd{--target-directory}=@var{directory}}
+@opindex -t
+@opindex --target-directory
+@cindex target directory
+@cindex destination directory
+Specify the destination @var{directory}.
+@xref{Target directory}.
+@end macro
+
+@macro optNoTargetDirectory
+@item -T
+@itemx --no-target-directory
+@opindex -T
+@opindex --no-target-directory
+@cindex target directory
+@cindex destination directory
+Do not treat the last operand specially when it is a directory or a
+symbolic link to a directory. @xref{Target directory}.
+@end macro
+
+@macro optSi
+@itemx --si
+@opindex --si
+@cindex SI output
+Append an SI-style abbreviation to each size, such as @samp{M} for
+megabytes. Powers of 1000 are used, not 1024; @samp{M} stands for
+1,000,000 bytes. This option is equivalent to
+@option{--block-size=si}. Use the @option{-h} or
+@option{--human-readable} option if
+you prefer powers of 1024.
+@end macro
+
+@macro optHumanReadable
+@item -h
+@itemx --human-readable
+@opindex -h
+@opindex --human-readable
+@cindex human-readable output
+Append a size letter to each size, such as @samp{M} for mebibytes.
+Powers of 1024 are used, not 1000; @samp{M} stands for 1,048,576 bytes.
+Use the @option{--si} option if you prefer powers of 1000.
+@end macro
+
+@macro optStripTrailingSlashes
+@itemx @w{@kbd{--strip-trailing-slashes}}
+@opindex --strip-trailing-slashes
+@cindex stripping trailing slashes
+Remove any trailing slashes from each @var{source} argument.
+@xref{Trailing slashes}.
+@end macro
+
+@cindex common options
+
+Certain options are available in all of these programs. Rather than
+writing identical descriptions for each of the programs, they are
+described here. (In fact, every @sc{gnu} program accepts (or should accept)
+these options.)
+
+@vindex POSIXLY_CORRECT
+Normally options and operands can appear in any order, and programs act
+as if all the options appear before any operands. For example,
+@samp{sort -r passwd -t :} acts like @samp{sort -r -t : passwd}, since
+@samp{:} is an option-argument of @option{-t}. However, if the
+@env{POSIXLY_CORRECT} environment variable is set, options must appear
+before operands, unless otherwise specified for a particular command.
+
+A few programs can usefully have trailing operands with leading
+@samp{-}. With such a program, options must precede operands even if
+@env{POSIXLY_CORRECT} is not set, and this fact is noted in the
+program description. For example, the @command{env} command's options
+must appear before its operands, since in some cases the operands
+specify a command that itself contains options.
+
+Some of these programs recognize the @option{--help} and @option{--version}
+options only when one of them is the sole command line argument.
+
+@table @samp
+
+@item --help
+@opindex --help
+@cindex help, online
+Print a usage message listing all available options, then exit successfully.
+
+@item --version
+@opindex --version
+@cindex version number, finding
+Print the version number, then exit successfully.
+
+@item --
+@opindex --
+@cindex option delimiter
+Delimit the option list. Later arguments, if any, are treated as
+operands even if they begin with @samp{-}. For example, @samp{sort --
+-r} reads from the file named @file{-r}.
+
+@end table
+
+@cindex standard input
+@cindex standard output
+A single @samp{-} operand is not really an option, though it looks like one. It
+stands for standard input, or for standard output if that is clear from
+the context. For example, @samp{sort -} reads from standard input,
+and is equivalent to plain @samp{sort}, and @samp{tee -} writes an
+extra copy of its input to standard output. Unless otherwise
+specified, @samp{-} can appear as any operand that requires a file
+name.
+
+@menu
+* Exit status:: Indicating program success or failure.
+* Backup options:: -b -S, in some programs.
+* Block size:: BLOCK_SIZE and --block-size, in some programs.
+* Disambiguating names and IDs:: chgrp and chown owner and group syntax
+* Random sources:: --random-source, in some programs.
+* Target directory:: Specifying a target directory, in some programs.
+* Trailing slashes:: --strip-trailing-slashes, in some programs.
+* Traversing symlinks:: -H, -L, or -P, in some programs.
+* Treating / specially:: --preserve-root and --no-preserve-root.
+* Special built-in utilities:: @command{break}, @command{:}, @command{eval}, @dots{}
+* Standards conformance:: Conformance to the @acronym{POSIX} standard.
+@end menu
+
+
+@node Exit status
+@section Exit status
+
+@macro exitstatus
+An exit status of zero indicates success,
+and a nonzero value indicates failure.
+@end macro
+
+Nearly every command invocation yields an integral @dfn{exit status}
+that can be used to change how other commands work.
+For the vast majority of commands, an exit status of zero indicates
+success. Failure is indicated by a nonzero value---typically
+@samp{1}, though it may differ on unusual platforms as @acronym{POSIX}
+requires only that it be nonzero.
+
+However, some of the programs documented here do produce
+other exit status values and a few associate different
+meanings with the values @samp{0} and @samp{1}.
+Here are some of the exceptions:
+@command{chroot}, @command{env}, @command{expr},
+@command{nice}, @command{nohup}, @command{printenv},
+@command{sort}, @command{su}, @command{test}, @command{tty}.
+
+
+@node Backup options
+@section Backup options
+
+@cindex backup options
+
+Some @sc{gnu} programs (at least @command{cp}, @command{install},
+@command{ln}, and @command{mv}) optionally make backups of files
+before writing new versions.
+These options control the details of these backups. The options are also
+briefly mentioned in the descriptions of the particular programs.
+
+@table @samp
+
+@item -b
+@itemx @w{@kbd{--backup}[=@var{method}]}
+@opindex -b
+@opindex --backup
+@vindex VERSION_CONTROL
+@cindex backups, making
+Make a backup of each file that would otherwise be overwritten or removed.
+Without this option, the original versions are destroyed.
+Use @var{method} to determine the type of backups to make.
+When this option is used but @var{method} is not specified,
+then the value of the @env{VERSION_CONTROL}
+environment variable is used. And if @env{VERSION_CONTROL} is not set,
+the default backup type is @samp{existing}.
+
+Note that the short form of this option, @option{-b} does not accept any
+argument. Using @option{-b} is equivalent to using @option{--backup=existing}.
+
+@vindex version-control @r{Emacs variable}
+This option corresponds to the Emacs variable @samp{version-control};
+the values for @var{method} are the same as those used in Emacs.
+This option also accepts more descriptive names.
+The valid @var{method}s are (unique abbreviations are accepted):
+
+@table @samp
+@item none
+@itemx off
+@opindex none @r{backup method}
+Never make backups.
+
+@item numbered
+@itemx t
+@opindex numbered @r{backup method}
+Always make numbered backups.
+
+@item existing
+@itemx nil
+@opindex existing @r{backup method}
+Make numbered backups of files that already have them, simple backups
+of the others.
+
+@item simple
+@itemx never
+@opindex simple @r{backup method}
+Always make simple backups. Please note @samp{never} is not to be
+confused with @samp{none}.
+
+@end table
+
+@item -S @var{suffix}
+@itemx --suffix=@var{suffix}
+@opindex -S
+@opindex --suffix
+@cindex backup suffix
+@vindex SIMPLE_BACKUP_SUFFIX
+Append @var{suffix} to each backup file made with @option{-b}. If this
+option is not specified, the value of the @env{SIMPLE_BACKUP_SUFFIX}
+environment variable is used. And if @env{SIMPLE_BACKUP_SUFFIX} is not
+set, the default is @samp{~}, just as in Emacs.
+
+@end table
+
+@node Block size
+@section Block size
+
+@cindex block size
+
+Some @sc{gnu} programs (at least @command{df}, @command{du}, and
+@command{ls}) display sizes in ``blocks''. You can adjust the block size
+and method of display to make sizes easier to read. The block size
+used for display is independent of any file system block size.
+Fractional block counts are rounded up to the nearest integer.
+
+@opindex --block-size=@var{size}
+@vindex BLOCKSIZE
+@vindex BLOCK_SIZE
+@vindex DF_BLOCK_SIZE
+@vindex DU_BLOCK_SIZE
+@vindex LS_BLOCK_SIZE
+@vindex POSIXLY_CORRECT@r{, and block size}
+
+The default block size is chosen by examining the following environment
+variables in turn; the first one that is set determines the block size.
+
+@table @code
+
+@item DF_BLOCK_SIZE
+This specifies the default block size for the @command{df} command.
+Similarly, @env{DU_BLOCK_SIZE} specifies the default for @command{du} and
+@env{LS_BLOCK_SIZE} for @command{ls}.
+
+@item BLOCK_SIZE
+This specifies the default block size for all three commands, if the
+above command-specific environment variables are not set.
+
+@item BLOCKSIZE
+This specifies the default block size for all values that are normally
+printed as blocks, if neither @env{BLOCK_SIZE} nor the above
+command-specific environment variables are set. Unlike the other
+environment variables, @env{BLOCKSIZE} does not affect values that are
+normally printed as byte counts, e.g., the file sizes contained in
+@code{ls -l} output.
+
+@item POSIXLY_CORRECT
+If neither @env{@var{command}_BLOCK_SIZE}, nor @env{BLOCK_SIZE}, nor
+@env{BLOCKSIZE} is set, but this variable is set, the block size
+defaults to 512.
+
+@end table
+
+If none of the above environment variables are set, the block size
+currently defaults to 1024 bytes in most contexts, but this number may
+change in the future. For @command{ls} file sizes, the block size
+defaults to 1 byte.
+
+@cindex human-readable output
+@cindex SI output
+
+A block size specification can be a positive integer specifying the number
+of bytes per block, or it can be @code{human-readable} or @code{si} to
+select a human-readable format. Integers may be followed by suffixes
+that are upward compatible with the
+@uref{http://www.bipm.fr/enus/3_SI/si-prefixes.html, SI prefixes}
+for decimal multiples and with the
+@uref{http://physics.nist.gov/cuu/Units/binary.html, IEC 60027-2
+prefixes for binary multiples}.
+
+With human-readable formats, output sizes are followed by a size letter
+such as @samp{M} for megabytes. @code{BLOCK_SIZE=human-readable} uses
+powers of 1024; @samp{M} stands for 1,048,576 bytes.
+@code{BLOCK_SIZE=si} is similar, but uses powers of 1000 and appends
+@samp{B}; @samp{MB} stands for 1,000,000 bytes.
+
+@vindex LC_NUMERIC
+A block size specification preceded by @samp{'} causes output sizes to
+be displayed with thousands separators. The @env{LC_NUMERIC} locale
+specifies the thousands separator and grouping. For example, in an
+American English locale, @samp{--block-size="'1kB"} would cause a size
+of 1234000 bytes to be displayed as @samp{1,234}. In the default C
+locale, there is no thousands separator so a leading @samp{'} has no
+effect.
+
+An integer block size can be followed by a suffix to specify a
+multiple of that size. A bare size letter,
+or one followed by @samp{iB}, specifies
+a multiple using powers of 1024. A size letter followed by @samp{B}
+specifies powers of 1000 instead. For example, @samp{1M} and
+@samp{1MiB} are equivalent to @samp{1048576}, whereas @samp{1MB} is
+equivalent to @samp{1000000}.
+
+A plain suffix without a preceding integer acts as if @samp{1} were
+prepended, except that it causes a size indication to be appended to
+the output. For example, @samp{--block-size="kB"} displays 3000 as
+@samp{3kB}.
+
+The following suffixes are defined. Large sizes like @code{1Y}
+may be rejected by your computer due to limitations of its arithmetic.
+
+@table @samp
+@item kB
+@cindex kilobyte, definition of
+kilobyte: @math{10^3 = 1000}.
+@item k
+@itemx K
+@itemx KiB
+@cindex kibibyte, definition of
+kibibyte: @math{2^10 = 1024}. @samp{K} is special: the SI prefix is
+@samp{k} and the IEC 60027-2 prefix is @samp{Ki}, but tradition and
+@acronym{POSIX} use @samp{k} to mean @samp{KiB}.
+@item MB
+@cindex megabyte, definition of
+megabyte: @math{10^6 = 1,000,000}.
+@item M
+@itemx MiB
+@cindex mebibyte, definition of
+mebibyte: @math{2^20 = 1,048,576}.
+@item GB
+@cindex gigabyte, definition of
+gigabyte: @math{10^9 = 1,000,000,000}.
+@item G
+@itemx GiB
+@cindex gibibyte, definition of
+gibibyte: @math{2^30 = 1,073,741,824}.
+@item TB
+@cindex terabyte, definition of
+terabyte: @math{10^12 = 1,000,000,000,000}.
+@item T
+@itemx TiB
+@cindex tebibyte, definition of
+tebibyte: @math{2^40 = 1,099,511,627,776}.
+@item PB
+@cindex petabyte, definition of
+petabyte: @math{10^15 = 1,000,000,000,000,000}.
+@item P
+@itemx PiB
+@cindex pebibyte, definition of
+pebibyte: @math{2^50 = 1,125,899,906,842,624}.
+@item EB
+@cindex exabyte, definition of
+exabyte: @math{10^18 = 1,000,000,000,000,000,000}.
+@item E
+@itemx EiB
+@cindex exbibyte, definition of
+exbibyte: @math{2^60 = 1,152,921,504,606,846,976}.
+@item ZB
+@cindex zettabyte, definition of
+zettabyte: @math{10^21 = 1,000,000,000,000,000,000,000}
+@item Z
+@itemx ZiB
+@math{2^70 = 1,180,591,620,717,411,303,424}.
+(@samp{Zi} is a @acronym{GNU} extension to IEC 60027-2.)
+@item YB
+@cindex yottabyte, definition of
+yottabyte: @math{10^24 = 1,000,000,000,000,000,000,000,000}.
+@item Y
+@itemx YiB
+@math{2^80 = 1,208,925,819,614,629,174,706,176}.
+(@samp{Yi} is a @acronym{GNU} extension to IEC 60027-2.)
+@end table
+
+@opindex -k
+@opindex -h
+@opindex --block-size
+@opindex --human-readable
+@opindex --si
+
+Block size defaults can be overridden by an explicit
+@option{--block-size=@var{size}} option. The @option{-k}
+option is equivalent to @option{--block-size=1K}, which
+is the default unless the @env{POSIXLY_CORRECT} environment variable is
+set. The @option{-h} or @option{--human-readable} option is equivalent to
+@option{--block-size=human-readable}. The @option{--si} option is
+equivalent to @option{--block-size=si}.
+
+@node Disambiguating names and IDs
+@section chown and chgrp: Disambiguating user names and IDs
+@cindex user names, disambiguating
+@cindex user IDs, disambiguating
+@cindex group names, disambiguating
+@cindex group IDs, disambiguating
+@cindex disambiguating group names and IDs
+
+Since the @var{owner} and @var{group} arguments to @command{chown} and
+@command{chgrp} may be specified as names or numeric IDs, there is an
+apparent ambiguity.
+What if a user or group @emph{name} is a string of digits?
+@footnote{Using a number as a user name is common in some environments.}
+Should the command interpret it as a user name or as an ID?
+@acronym{POSIX} requires that @command{chown} and @command{chgrp}
+first attempt to resolve the specified string as a name, and
+only once that fails, then try to interpret it as an ID.
+This is troublesome when you want to specify a numeric ID, say 42,
+and it must work even in a pathological situation where
+@samp{42} is a user name that maps to some other user ID, say 1000.
+Simply invoking @code{chown 42 F}, will set @file{F}s owner ID to
+1000---not what you intended.
+
+GNU @command{chown} and @command{chgrp} provide a way to work around this,
+that at the same time may result in a significant performance improvement
+by eliminating a database look-up.
+Simply precede each numeric user ID and/or group ID with a @samp{+},
+in order to force its interpretation as an integer:
+
+@example
+chown +42 F
+chgrp +$numeric_group_id another-file
+chown +0:+0 /
+@end example
+
+GNU @command{chown} and @command{chgrp}
+skip the name look-up process for each @samp{+}-prefixed string,
+because a string containing @samp{+} is never a valid user or group name.
+This syntax is accepted on most common Unix systems, but not on Solaris 10.
+
+@node Random sources
+@section Sources of random data
+
+@cindex random sources
+
+The @command{shuf}, @command{shred}, and @command{sort} commands
+sometimes need random data to do their work. For example, @samp{sort
+-R} must choose a hash function at random, and it needs random data to
+make this selection.
+
+Normally these commands use the device file @file{/dev/urandom} as the
+source of random data. Typically, this device gathers environmental
+noise from device drivers and other sources into an entropy pool, and
+uses the pool to generate random bits. If the pool is short of data,
+the device reuses the internal pool to produce more bits, using a
+cryptographically secure pseudorandom number generator.
+
+@file{/dev/urandom} suffices for most practical uses, but applications
+requiring high-value or long-term protection of private data may
+require an alternate data source like @file{/dev/random} or
+@file{/dev/arandom}. The set of available sources depends on your
+operating system.
+
+To use such a source, specify the @option{--random-source=@var{file}}
+option, e.g., @samp{shuf --random-source=/dev/random}. The contents
+of @var{file} should be as random as possible. An error is reported
+if @var{file} does not contain enough bytes to randomize the input
+adequately.
+
+To reproduce the results of an earlier invocation of a command, you
+can save some random data into a file and then use that file as the
+random source in earlier and later invocations of the command.
+
+Some old-fashioned or stripped-down operating systems lack support for
+@command{/dev/urandom}. On these systems commands like @command{shuf}
+by default fall back on an internal pseudorandom generator initialized
+by a small amount of entropy.
+
+@node Target directory
+@section Target directory
+
+@cindex target directory
+
+The @command{cp}, @command{install}, @command{ln}, and @command{mv}
+commands normally treat the last operand specially when it is a
+directory or a symbolic link to a directory. For example, @samp{cp
+source dest} is equivalent to @samp{cp source dest/source} if
+@file{dest} is a directory. Sometimes this behavior is not exactly
+what is wanted, so these commands support the following options to
+allow more fine-grained control:
+
+@table @samp
+
+@item -T
+@itemx --no-target-directory
+@opindex --no-target-directory
+@cindex target directory
+@cindex destination directory
+Do not treat the last operand specially when it is a directory or a
+symbolic link to a directory. This can help avoid race conditions in
+programs that operate in a shared area. For example, when the command
+@samp{mv /tmp/source /tmp/dest} succeeds, there is no guarantee that
+@file{/tmp/source} was renamed to @file{/tmp/dest}: it could have been
+renamed to @file{/tmp/dest/source} instead, if some other process
+created @file{/tmp/dest} as a directory. However, if @file{mv
+-T /tmp/source /tmp/dest} succeeds, there is no
+question that @file{/tmp/source} was renamed to @file{/tmp/dest}.
+
+In the opposite situation, where you want the last operand to be
+treated as a directory and want a diagnostic otherwise, you can use
+the @option{--target-directory} (@option{-t}) option.
+
+@item -t @var{directory}
+@itemx @w{@kbd{--target-directory}=@var{directory}}
+@opindex --target-directory
+@cindex target directory
+@cindex destination directory
+Use @var{directory} as the directory component of each destination
+file name.
+
+The interface for most programs is that after processing options and a
+finite (possibly zero) number of fixed-position arguments, the remaining
+argument list is either expected to be empty, or is a list of items
+(usually files) that will all be handled identically. The @command{xargs}
+program is designed to work well with this convention.
+
+The commands in the @command{mv}-family are unusual in that they take
+a variable number of arguments with a special case at the @emph{end}
+(namely, the target directory). This makes it nontrivial to perform some
+operations, e.g., ``move all files from here to ../d/'', because
+@code{mv * ../d/} might exhaust the argument space, and @code{ls | xargs ...}
+doesn't have a clean way to specify an extra final argument for each
+invocation of the subject command. (It can be done by going through a
+shell command, but that requires more human labor and brain power than
+it should.)
+
+The @w{@kbd{--target-directory}} (@option{-t}) option allows the @command{cp},
+@command{install}, @command{ln}, and @command{mv} programs to be used
+conveniently with @command{xargs}. For example, you can move the files
+from the current directory to a sibling directory, @code{d} like this:
+
+@smallexample
+ls | xargs mv -t ../d --
+@end smallexample
+
+However, this doesn't move files whose names begin with @samp{.}.
+If you use the @sc{gnu} @command{find} program, you can move those
+files too, with this command:
+
+@example
+find . -mindepth 1 -maxdepth 1 \
+ | xargs mv -t ../d
+@end example
+
+But both of the above approaches fail if there are no files in the
+current directory, or if any file has a name containing a blank or
+some other special characters.
+The following example removes those limitations and requires both
+@sc{gnu} @command{find} and @sc{gnu} @command{xargs}:
+
+@example
+find . -mindepth 1 -maxdepth 1 -print0 \
+ | xargs --null --no-run-if-empty \
+ mv -t ../d
+@end example
+
+@end table
+
+@noindent
+The @option{--target-directory} (@option{-t}) and
+@option{--no-target-directory} (@option{-T})
+options cannot be combined.
+
+@node Trailing slashes
+@section Trailing slashes
+
+@cindex trailing slashes
+
+Some @sc{gnu} programs (at least @command{cp} and @command{mv}) allow you to
+remove any trailing slashes from each @var{source} argument before
+operating on it. The @w{@kbd{--strip-trailing-slashes}} option enables
+this behavior.
+
+This is useful when a @var{source} argument may have a trailing slash and
+@c FIXME: mv's behavior in this case is system-dependent
+specify a symbolic link to a directory. This scenario is in fact rather
+common because some shells can automatically append a trailing slash when
+performing file name completion on such symbolic links. Without this
+option, @command{mv}, for example, (via the system's rename function) must
+interpret a trailing slash as a request to dereference the symbolic link
+and so must rename the indirectly referenced @emph{directory} and not
+the symbolic link. Although it may seem surprising that such behavior
+be the default, it is required by @acronym{POSIX} and is consistent with
+other parts of that standard.
+
+@node Traversing symlinks
+@section Traversing symlinks
+
+@cindex symbolic link to directory, controlling traversal of
+
+The following options modify how @command{chown} and @command{chgrp}
+@c FIXME: note that `du' has these options, too, but they have slightly
+@c different meaning.
+traverse a hierarchy when the @option{--recursive} (@option{-R})
+option is also specified.
+If more than one of the following options is specified, only the final
+one takes effect.
+These options specify whether processing a symbolic link to a directory
+entails operating on just the symbolic link or on all files in the
+hierarchy rooted at that directory.
+
+These options are independent of @option{--dereference} and
+@option{--no-dereference} (@option{-h}), which control whether to modify
+a symlink or its referent.
+
+@table @samp
+
+@macro choptH
+@item -H
+@opindex -H
+@cindex symbolic link to directory, traverse each that is specified on the command line
+If @option{--recursive} (@option{-R}) is specified and
+a command line argument is a symbolic link to a directory, traverse it.
+@end macro
+@choptH
+
+@macro choptL
+@item -L
+@opindex -L
+@cindex symbolic link to directory, traverse each that is encountered
+In a recursive traversal, traverse every symbolic link to a directory
+that is encountered.
+@end macro
+@choptL
+
+@macro choptP
+@item -P
+@opindex -P
+@cindex symbolic link to directory, never traverse
+Do not traverse any symbolic links.
+This is the default if none of @option{-H}, @option{-L},
+or @option{-P} is specified.
+@end macro
+@choptP
+
+@end table
+
+
+@node Treating / specially
+@section Treating / specially
+
+Certain commands can operate destructively on entire hierarchies.
+For example, if a user with appropriate privileges mistakenly runs
+@samp{rm -rf / tmp/junk}, that may remove
+all files on the entire system. Since there are so few
+legitimate uses for such a command,
+@sc{gnu} @command{rm} normally declines to operate on any directory
+that resolves to @file{/}. If you really want to try to remove all
+the files on your system, you can use the @option{--no-preserve-root}
+option, but the default behavior, specified by the
+@option{--preserve-option}, is safer for most purposes.
+
+The commands @command{chgrp}, @command{chmod} and @command{chown}
+can also operate destructively on entire hierarchies, so they too
+support these options. Although, unlike @command{rm}, they don't
+actually unlink files, these commands are arguably more dangerous
+when operating recursively on @file{/}, since they often work much
+more quickly, and hence damage more files before an alert user can
+interrupt them. Tradition and @acronym{POSIX} require these commands
+to operate recursively on @file{/}, so they default to
+@option{--no-preserve-root}, but using the @option{--preserve-root}
+option makes them safer for most purposes. For convenience you can
+specify @option{--preserve-root} in an alias or in a shell function.
+
+Note that the @option{--preserve-root} option also ensures
+that @command{chgrp} and @command{chown} do not modify @file{/}
+even when dereferencing a symlink pointing to @file{/}.
+
+@node Special built-in utilities
+@section Special built-in utilities
+
+Some programs like @command{nice} can invoke other programs; for
+example, the command @samp{nice cat file} invokes the program
+@command{cat} by executing the command @samp{cat file}. However,
+@dfn{special built-in utilities} like @command{exit} cannot be invoked
+this way. For example, the command @samp{nice exit} does not have a
+well-defined behavior: it may generate an error message instead of
+exiting.
+
+Here is a list of the special built-in utilities that are standardized
+by @acronym{POSIX} 1003.1-2004.
+
+@quotation
+@t{.@: : break continue eval exec exit export readonly
+return set shift times trap unset}
+@end quotation
+
+For example, because @samp{.}, @samp{:}, and @samp{exec} are special,
+the commands @samp{nice . foo.sh}, @samp{nice :}, and @samp{nice exec
+pwd} do not work as you might expect.
+
+Many shells extend this list. For example, Bash has several extra
+special built-in utilities like @command{history}, and
+@command{suspend}, and with Bash the command @samp{nice suspend}
+generates an error message instead of suspending.
+
+@node Standards conformance
+@section Standards conformance
+
+@vindex POSIXLY_CORRECT
+In a few cases, the @sc{gnu} utilities' default behavior is
+incompatible with the @acronym{POSIX} standard. To suppress these
+incompatibilities, define the @env{POSIXLY_CORRECT} environment
+variable. Unless you are checking for @acronym{POSIX} conformance, you
+probably do not need to define @env{POSIXLY_CORRECT}.
+
+Newer versions of @acronym{POSIX} are occasionally incompatible with older
+versions. For example, older versions of @acronym{POSIX} required the
+command @samp{sort +1} to sort based on the second and succeeding
+fields in each input line, but starting with @acronym{POSIX} 1003.1-2001
+the same command is required to sort the file named @file{+1}, and you
+must instead use the command @samp{sort -k 2} to get the field-based
+sort.
+
+@vindex _POSIX2_VERSION
+The @sc{gnu} utilities normally conform to the version of @acronym{POSIX}
+that is standard for your system. To cause them to conform to a
+different version of @acronym{POSIX}, define the @env{_POSIX2_VERSION}
+environment variable to a value of the form @var{yyyymm} specifying
+the year and month the standard was adopted. Two values are currently
+supported for @env{_POSIX2_VERSION}: @samp{199209} stands for
+@acronym{POSIX} 1003.2-1992, and @samp{200112} stands for @acronym{POSIX}
+1003.1-2001. For example, if you have a newer system but are running software
+that assumes an older version of @acronym{POSIX} and uses @samp{sort +1}
+or @samp{tail +10}, you can work around any compatibility problems by setting
+@samp{_POSIX2_VERSION=199209} in your environment.
+
+@node Output of entire files
+@chapter Output of entire files
+
+@cindex output of entire files
+@cindex entire files, output of
+
+These commands read and write entire files, possibly transforming them
+in some way.
+
+@menu
+* cat invocation:: Concatenate and write files.
+* tac invocation:: Concatenate and write files in reverse.
+* nl invocation:: Number lines and write files.
+* od invocation:: Write files in octal or other formats.
+* base64 invocation:: Transform data into printable data.
+@end menu
+
+@node cat invocation
+@section @command{cat}: Concatenate and write files
+
+@pindex cat
+@cindex concatenate and write files
+@cindex copying files
+
+@command{cat} copies each @var{file} (@samp{-} means standard input), or
+standard input if none are given, to standard output. Synopsis:
+
+@example
+cat [@var{option}] [@var{file}]@dots{}
+@end example
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -A
+@itemx --show-all
+@opindex -A
+@opindex --show-all
+Equivalent to @option{-vET}.
+
+@item -b
+@itemx --number-nonblank
+@opindex -b
+@opindex --number-nonblank
+Number all nonblank output lines, starting with 1.
+
+@item -e
+@opindex -e
+Equivalent to @option{-vE}.
+
+@item -E
+@itemx --show-ends
+@opindex -E
+@opindex --show-ends
+Display a @samp{$} after the end of each line.
+
+@item -n
+@itemx --number
+@opindex -n
+@opindex --number
+Number all output lines, starting with 1.
+
+@item -s
+@itemx --squeeze-blank
+@opindex -s
+@opindex --squeeze-blank
+@cindex squeezing blank lines
+Replace multiple adjacent blank lines with a single blank line.
+
+@item -t
+@opindex -t
+Equivalent to @option{-vT}.
+
+@item -T
+@itemx --show-tabs
+@opindex -T
+@opindex --show-tabs
+Display TAB characters as @samp{^I}.
+
+@item -u
+@opindex -u
+Ignored; for @acronym{POSIX} compatibility.
+
+@item -v
+@itemx --show-nonprinting
+@opindex -v
+@opindex --show-nonprinting
+Display control characters except for LFD and TAB using
+@samp{^} notation and precede characters that have the high bit set with
+@samp{M-}.
+
+@end table
+
+On systems like MS-DOS that distinguish between text and binary files,
+@command{cat} normally reads and writes in binary mode. However,
+@command{cat} reads in text mode if one of the options
+@option{-bensAE} is used or if @command{cat} is reading from standard
+input and standard input is a terminal. Similarly, @command{cat}
+writes in text mode if one of the options @option{-bensAE} is used or
+if standard output is a terminal.
+
+@exitstatus
+
+Examples:
+
+@smallexample
+# Output f's contents, then standard input, then g's contents.
+cat f - g
+
+# Copy standard input to standard output.
+cat
+@end smallexample
+
+
+@node tac invocation
+@section @command{tac}: Concatenate and write files in reverse
+
+@pindex tac
+@cindex reversing files
+
+@command{tac} copies each @var{file} (@samp{-} means standard input), or
+standard input if none are given, to standard output, reversing the
+records (lines by default) in each separately. Synopsis:
+
+@example
+tac [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+@dfn{Records} are separated by instances of a string (newline by
+default). By default, this separator string is attached to the end of
+the record that it follows in the file.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -b
+@itemx --before
+@opindex -b
+@opindex --before
+The separator is attached to the beginning of the record that it
+precedes in the file.
+
+@item -r
+@itemx --regex
+@opindex -r
+@opindex --regex
+Treat the separator string as a regular expression. Users of @command{tac}
+on MS-DOS/MS-Windows should note that, since @command{tac} reads files in
+binary mode, each line of a text file might end with a CR/LF pair
+instead of the Unix-style LF.
+
+@item -s @var{separator}
+@itemx --separator=@var{separator}
+@opindex -s
+@opindex --separator
+Use @var{separator} as the record separator, instead of newline.
+
+@end table
+
+@exitstatus
+
+
+@node nl invocation
+@section @command{nl}: Number lines and write files
+
+@pindex nl
+@cindex numbering lines
+@cindex line numbering
+
+@command{nl} writes each @var{file} (@samp{-} means standard input), or
+standard input if none are given, to standard output, with line numbers
+added to some or all of the lines. Synopsis:
+
+@example
+nl [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+@cindex logical pages, numbering on
+@command{nl} decomposes its input into (logical) pages; by default, the
+line number is reset to 1 at the top of each logical page. @command{nl}
+treats all of the input files as a single document; it does not reset
+line numbers or logical pages between files.
+
+@cindex headers, numbering
+@cindex body, numbering
+@cindex footers, numbering
+A logical page consists of three sections: header, body, and footer.
+Any of the sections can be empty. Each can be numbered in a different
+style from the others.
+
+The beginnings of the sections of logical pages are indicated in the
+input file by a line containing exactly one of these delimiter strings:
+
+@table @samp
+@item \:\:\:
+start of header;
+@item \:\:
+start of body;
+@item \:
+start of footer.
+@end table
+
+The two characters from which these strings are made can be changed from
+@samp{\} and @samp{:} via options (see below), but the pattern and
+length of each string cannot be changed.
+
+A section delimiter is replaced by an empty line on output. Any text
+that comes before the first section delimiter string in the input file
+is considered to be part of a body section, so @command{nl} treats a
+file that contains no section delimiters as a single body section.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -b @var{style}
+@itemx --body-numbering=@var{style}
+@opindex -b
+@opindex --body-numbering
+Select the numbering style for lines in the body section of each
+logical page. When a line is not numbered, the current line number
+is not incremented, but the line number separator character is still
+prepended to the line. The styles are:
+
+@table @samp
+@item a
+number all lines,
+@item t
+number only nonempty lines (default for body),
+@item n
+do not number lines (default for header and footer),
+@item p@var{bre}
+number only lines that contain a match for the basic regular
+expression @var{bre}.
+@xref{Regular Expressions, , Regular Expressions, grep, The GNU Grep Manual}.
+@end table
+
+@item -d @var{cd}
+@itemx --section-delimiter=@var{cd}
+@opindex -d
+@opindex --section-delimiter
+@cindex section delimiters of pages
+Set the section delimiter characters to @var{cd}; default is
+@samp{\:}. If only @var{c} is given, the second remains @samp{:}.
+(Remember to protect @samp{\} or other metacharacters from shell
+expansion with quotes or extra backslashes.)
+
+@item -f @var{style}
+@itemx --footer-numbering=@var{style}
+@opindex -f
+@opindex --footer-numbering
+Analogous to @option{--body-numbering}.
+
+@item -h @var{style}
+@itemx --header-numbering=@var{style}
+@opindex -h
+@opindex --header-numbering
+Analogous to @option{--body-numbering}.
+
+@item -i @var{number}
+@itemx --page-increment=@var{number}
+@opindex -i
+@opindex --page-increment
+Increment line numbers by @var{number} (default 1).
+
+@item -l @var{number}
+@itemx --join-blank-lines=@var{number}
+@opindex -l
+@opindex --join-blank-lines
+@cindex empty lines, numbering
+@cindex blank lines, numbering
+Consider @var{number} (default 1) consecutive empty lines to be one
+logical line for numbering, and only number the last one. Where fewer
+than @var{number} consecutive empty lines occur, do not number them.
+An empty line is one that contains no characters, not even spaces
+or tabs.
+
+@item -n @var{format}
+@itemx --number-format=@var{format}
+@opindex -n
+@opindex --number-format
+Select the line numbering format (default is @code{rn}):
+
+@table @samp
+@item ln
+@opindex ln @r{format for @command{nl}}
+left justified, no leading zeros;
+@item rn
+@opindex rn @r{format for @command{nl}}
+right justified, no leading zeros;
+@item rz
+@opindex rz @r{format for @command{nl}}
+right justified, leading zeros.
+@end table
+
+@item -p
+@itemx --no-renumber
+@opindex -p
+@opindex --no-renumber
+Do not reset the line number at the start of a logical page.
+
+@item -s @var{string}
+@itemx --number-separator=@var{string}
+@opindex -s
+@opindex --number-separator
+Separate the line number from the text line in the output with
+@var{string} (default is the TAB character).
+
+@item -v @var{number}
+@itemx --starting-line-number=@var{number}
+@opindex -v
+@opindex --starting-line-number
+Set the initial line number on each logical page to @var{number} (default 1).
+
+@item -w @var{number}
+@itemx --number-width=@var{number}
+@opindex -w
+@opindex --number-width
+Use @var{number} characters for line numbers (default 6).
+
+@end table
+
+@exitstatus
+
+
+@node od invocation
+@section @command{od}: Write files in octal or other formats
+
+@pindex od
+@cindex octal dump of files
+@cindex hex dump of files
+@cindex ASCII dump of files
+@cindex file contents, dumping unambiguously
+
+@command{od} writes an unambiguous representation of each @var{file}
+(@samp{-} means standard input), or standard input if none are given.
+Synopses:
+
+@smallexample
+od [@var{option}]@dots{} [@var{file}]@dots{}
+od [-abcdfilosx]@dots{} [@var{file}] [[+]@var{offset}[.][b]]
+od [@var{option}]@dots{} --traditional [@var{file}] [[+]@var{offset}[.][b] [[+]@var{label}[.][b]]]
+@end smallexample
+
+Each line of output consists of the offset in the input, followed by
+groups of data from the file. By default, @command{od} prints the offset in
+octal, and each group of file data is a C @code{short int}'s worth of input
+printed as a single octal number.
+
+If @var{offset} is given, it specifies how many input bytes to skip
+before formatting and writing. By default, it is interpreted as an
+octal number, but the optional trailing decimal point causes it to be
+interpreted as decimal. If no decimal is specified and the offset
+begins with @samp{0x} or @samp{0X} it is interpreted as a hexadecimal
+number. If there is a trailing @samp{b}, the number of bytes skipped
+will be @var{offset} multiplied by 512.
+
+If a command is of both the first and second forms, the second form is
+assumed if the last operand begins with @samp{+} or (if there are two
+operands) a digit. For example, in @samp{od foo 10} and @samp{od +10}
+the @samp{10} is an offset, whereas in @samp{od 10} the @samp{10} is a
+file name.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -A @var{radix}
+@itemx --address-radix=@var{radix}
+@opindex -A
+@opindex --address-radix
+@cindex radix for file offsets
+@cindex file offset radix
+Select the base in which file offsets are printed. @var{radix} can
+be one of the following:
+
+@table @samp
+@item d
+decimal;
+@item o
+octal;
+@item x
+hexadecimal;
+@item n
+none (do not print offsets).
+@end table
+
+The default is octal.
+
+@item -j @var{bytes}
+@itemx --skip-bytes=@var{bytes}
+@opindex -j
+@opindex --skip-bytes
+Skip @var{bytes} input bytes before formatting and writing. If
+@var{bytes} begins with @samp{0x} or @samp{0X}, it is interpreted in
+hexadecimal; otherwise, if it begins with @samp{0}, in octal; otherwise,
+in decimal. Appending @samp{b} multiplies @var{bytes} by 512, @samp{k}
+by 1024, and @samp{m} by 1048576.
+
+@item -N @var{bytes}
+@itemx --read-bytes=@var{bytes}
+@opindex -N
+@opindex --read-bytes
+Output at most @var{bytes} bytes of the input. Prefixes and suffixes on
+@code{bytes} are interpreted as for the @option{-j} option.
+
+@item -S @var{n}
+@itemx --strings[=@var{n}]
+@opindex -S
+@opindex --strings
+@cindex string constants, outputting
+Instead of the normal output, output only @dfn{string constants}: at
+least @var{n} consecutive @acronym{ASCII} graphic characters,
+followed by a null (zero) byte.
+
+If @var{n} is omitted with @option{--strings}, the default is 3.
+
+@item -t @var{type}
+@itemx --format=@var{type}
+@opindex -t
+@opindex --format
+Select the format in which to output the file data. @var{type} is a
+string of one or more of the below type indicator characters. If you
+include more than one type indicator character in a single @var{type}
+string, or use this option more than once, @command{od} writes one copy
+of each output line using each of the data types that you specified,
+in the order that you specified.
+
+Adding a trailing ``z'' to any type specification appends a display
+of the @acronym{ASCII} character representation of the printable characters
+to the output line generated by the type specification.
+
+@table @samp
+@item a
+named character, ignoring high-order bit
+@item c
+@acronym{ASCII} character or backslash escape,
+@item d
+signed decimal
+@item f
+floating point
+@item o
+octal
+@item u
+unsigned decimal
+@item x
+hexadecimal
+@end table
+
+The type @code{a} outputs things like @samp{sp} for space, @samp{nl} for
+newline, and @samp{nul} for a null (zero) byte. Only the least significant
+seven bits of each byte is used; the high-order bit is ignored.
+Type @code{c} outputs
+@samp{ }, @samp{\n}, and @code{\0}, respectively.
+
+@cindex type size
+Except for types @samp{a} and @samp{c}, you can specify the number
+of bytes to use in interpreting each number in the given data type
+by following the type indicator character with a decimal integer.
+Alternately, you can specify the size of one of the C compiler's
+built-in data types by following the type indicator character with
+one of the following characters. For integers (@samp{d}, @samp{o},
+@samp{u}, @samp{x}):
+
+@table @samp
+@item C
+char
+@item S
+short
+@item I
+int
+@item L
+long
+@end table
+
+For floating point (@code{f}):
+
+@table @asis
+@item F
+float
+@item D
+double
+@item L
+long double
+@end table
+
+@item -v
+@itemx --output-duplicates
+@opindex -v
+@opindex --output-duplicates
+Output consecutive lines that are identical. By default, when two or
+more consecutive output lines would be identical, @command{od} outputs only
+the first line, and puts just an asterisk on the following line to
+indicate the elision.
+
+@item -w[@var{n}]
+@itemx --width[=@var{n}]
+@opindex -w
+@opindex --width
+Dump @code{n} input bytes per output line. This must be a multiple of
+the least common multiple of the sizes associated with the specified
+output types.
+
+If this option is not given at all, the default is 16. If @var{n} is
+omitted, the default is 32.
+
+@end table
+
+The next several options are shorthands for format specifications.
+@sc{gnu} @command{od} accepts any combination of shorthands and format
+specification options. These options accumulate.
+
+@table @samp
+
+@item -a
+@opindex -a
+Output as named characters. Equivalent to @samp{-t a}.
+
+@item -b
+@opindex -b
+Output as octal bytes. Equivalent to @samp{-t o1}.
+
+@item -c
+@opindex -c
+Output as @acronym{ASCII} characters or backslash escapes. Equivalent to
+@samp{-t c}.
+
+@item -d
+@opindex -d
+Output as unsigned decimal two-byte units. Equivalent to @samp{-t u2}.
+
+@item -f
+@opindex -f
+Output as floats. Equivalent to @samp{-t fF}.
+
+@item -i
+@opindex -i
+Output as decimal ints. Equivalent to @samp{-t dI}.
+
+@item -l
+@opindex -l
+Output as decimal long ints. Equivalent to @samp{-t dL}.
+
+@item -o
+@opindex -o
+Output as octal two-byte units. Equivalent to @option{-t o2}.
+
+@item -s
+@opindex -s
+Output as decimal two-byte units. Equivalent to @option{-t d2}.
+
+@item -x
+@opindex -x
+Output as hexadecimal two-byte units. Equivalent to @samp{-t x2}.
+
+@item --traditional
+@opindex --traditional
+Recognize the non-option label argument that traditional @command{od}
+accepted. The following syntax:
+
+@smallexample
+od --traditional [@var{file}] [[+]@var{offset}[.][b] [[+]@var{label}[.][b]]]
+@end smallexample
+
+@noindent
+can be used to specify at most one file and optional arguments
+specifying an offset and a pseudo-start address, @var{label}.
+The @var{label} argument is interpreted
+just like @var{offset}, but it specifies an initial pseudo-address. The
+pseudo-addresses are displayed in parentheses following any normal
+address.
+
+@end table
+
+@exitstatus
+
+@node base64 invocation
+@section @command{base64}: Transform data into printable data.
+
+@pindex base64
+@cindex base64 encoding
+
+@command{base64} transforms data read from a file, or standard input,
+into (or from) base64 encoded form. The base64 encoded form uses
+printable @acronym{ASCII} characters to represent binary data, see
+@uref{ftp://ftp.rfc-editor.org/in-notes/rfc3548.txt, RFC 3548}.
+Synopses:
+
+@smallexample
+base64 [@var{option}]@dots{} [@var{file}]
+base64 --decode [@var{option}]@dots{} [@var{file}]
+@end smallexample
+
+The base64 encoding expands data to roughly 133% of the original.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -w @var{COLS}
+@itemx --wrap=@var{COLS}
+@opindex -w
+@opindex --wrap
+@cindex wrap data
+@cindex column to wrap data after
+During encoding, wrap lines after @var{COLS} characters. This must be
+a positive number.
+
+The default is to wrap after 76 characters. Use the value 0 to
+disable line wrapping altogether.
+
+@item -d
+@itemx --decode
+@opindex -d
+@opindex --decode
+@cindex Decode base64 data
+@cindex Base64 decoding
+Change the mode of operation, from the default of encoding data, to
+decoding data. Input is expected to be base64 encoded data, and the
+output will be the original data.
+
+@item -i
+@itemx --ignore-garbage
+@opindex -i
+@opindex --ignore-garbage
+@cindex Ignore garbage in base64 stream
+When decoding, newlines are always accepted.
+During decoding, ignore unrecognized bytes,
+to permit distorted data to be decoded.
+
+@end table
+
+@exitstatus
+
+
+@node Formatting file contents
+@chapter Formatting file contents
+
+@cindex formatting file contents
+
+These commands reformat the contents of files.
+
+@menu
+* fmt invocation:: Reformat paragraph text.
+* pr invocation:: Paginate or columnate files for printing.
+* fold invocation:: Wrap input lines to fit in specified width.
+@end menu
+
+
+@node fmt invocation
+@section @command{fmt}: Reformat paragraph text
+
+@pindex fmt
+@cindex reformatting paragraph text
+@cindex paragraphs, reformatting
+@cindex text, reformatting
+
+@command{fmt} fills and joins lines to produce output lines of (at most)
+a given number of characters (75 by default). Synopsis:
+
+@example
+fmt [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+@command{fmt} reads from the specified @var{file} arguments (or standard
+input if none are given), and writes to standard output.
+
+By default, blank lines, spaces between words, and indentation are
+preserved in the output; successive input lines with different
+indentation are not joined; tabs are expanded on input and introduced on
+output.
+
+@cindex line-breaking
+@cindex sentences and line-breaking
+@cindex Knuth, Donald E.
+@cindex Plass, Michael F.
+@command{fmt} prefers breaking lines at the end of a sentence, and tries to
+avoid line breaks after the first word of a sentence or before the last
+word of a sentence. A @dfn{sentence break} is defined as either the end
+of a paragraph or a word ending in any of @samp{.?!}, followed by two
+spaces or end of line, ignoring any intervening parentheses or quotes.
+Like @TeX{}, @command{fmt} reads entire ``paragraphs'' before choosing line
+breaks; the algorithm is a variant of that given by Donald E. Knuth
+and Michael F. Plass in ``Breaking Paragraphs Into Lines'',
+@cite{Software---Practice & Experience} @b{11}, 11 (November 1981),
+1119--1184.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -c
+@itemx --crown-margin
+@opindex -c
+@opindex --crown-margin
+@cindex crown margin
+@dfn{Crown margin} mode: preserve the indentation of the first two
+lines within a paragraph, and align the left margin of each subsequent
+line with that of the second line.
+
+@item -t
+@itemx --tagged-paragraph
+@opindex -t
+@opindex --tagged-paragraph
+@cindex tagged paragraphs
+@dfn{Tagged paragraph} mode: like crown margin mode, except that if
+indentation of the first line of a paragraph is the same as the
+indentation of the second, the first line is treated as a one-line
+paragraph.
+
+@item -s
+@itemx --split-only
+@opindex -s
+@opindex --split-only
+Split lines only. Do not join short lines to form longer ones. This
+prevents sample lines of code, and other such ``formatted'' text from
+being unduly combined.
+
+@item -u
+@itemx --uniform-spacing
+@opindex -u
+@opindex --uniform-spacing
+Uniform spacing. Reduce spacing between words to one space, and spacing
+between sentences to two spaces.
+
+@item -@var{width}
+@itemx -w @var{width}
+@itemx --width=@var{width}
+@opindex -@var{width}
+@opindex -w
+@opindex --width
+Fill output lines up to @var{width} characters (default 75). @command{fmt}
+initially tries to make lines about 7% shorter than this, to give it
+room to balance line lengths.
+
+@item -p @var{prefix}
+@itemx --prefix=@var{prefix}
+Only lines beginning with @var{prefix} (possibly preceded by whitespace)
+are subject to formatting. The prefix and any preceding whitespace are
+stripped for the formatting and then re-attached to each formatted output
+line. One use is to format certain kinds of program comments, while
+leaving the code unchanged.
+
+@end table
+
+@exitstatus
+
+
+@node pr invocation
+@section @command{pr}: Paginate or columnate files for printing
+
+@pindex pr
+@cindex printing, preparing files for
+@cindex multicolumn output, generating
+@cindex merging files in parallel
+
+@command{pr} writes each @var{file} (@samp{-} means standard input), or
+standard input if none are given, to standard output, paginating and
+optionally outputting in multicolumn format; optionally merges all
+@var{file}s, printing all in parallel, one per column. Synopsis:
+
+@example
+pr [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+@vindex LC_MESSAGES
+By default, a 5-line header is printed at each page: two blank lines;
+a line with the date, the file name, and the page count; and two more
+blank lines. A footer of five blank lines is also printed.
+With the @option{-F}
+option, a 3-line header is printed: the leading two blank lines are
+omitted; no footer is used. The default @var{page_length} in both cases is 66
+lines. The default number of text lines changes from 56 (without @option{-F})
+to 63 (with @option{-F}). The text line of the header takes the form
+@samp{@var{date} @var{string} @var{page}}, with spaces inserted around
+@var{string} so that the line takes up the full @var{page_width}. Here,
+@var{date} is the date (see the @option{-D} or @option{--date-format}
+option for details), @var{string} is the centered header string, and
+@var{page} identifies the page number. The @env{LC_MESSAGES} locale
+category affects the spelling of @var{page}; in the default C locale, it
+is @samp{Page @var{number}} where @var{number} is the decimal page
+number.
+
+Form feeds in the input cause page breaks in the output. Multiple form
+feeds produce empty pages.
+
+Columns are of equal width, separated by an optional string (default
+is @samp{space}). For multicolumn output, lines will always be truncated to
+@var{page_width} (default 72), unless you use the @option{-J} option.
+For single
+column output no line truncation occurs by default. Use @option{-W} option to
+truncate lines in that case.
+
+The following changes were made in version 1.22i and apply to later
+versions of @command{pr}:
+@c FIXME: this whole section here sounds very awkward to me. I
+@c made a few small changes, but really it all needs to be redone. - Brian
+@c OK, I fixed another sentence or two, but some of it I just don't understand.
+@ - Brian
+@itemize @bullet
+
+@item
+Some small @var{letter options} (@option{-s}, @option{-w}) have been
+redefined for better @acronym{POSIX} compliance. The output of some further
+cases has been adapted to other Unix systems. These changes are not
+compatible with earlier versions of the program.
+
+@item
+Some @var{new capital letter} options (@option{-J}, @option{-S}, @option{-W})
+have been introduced to turn off unexpected interferences of small letter
+options. The @option{-N} option and the second argument @var{last_page}
+of @samp{+FIRST_PAGE} offer more flexibility. The detailed handling of
+form feeds set in the input files requires the @option{-T} option.
+
+@item
+Capital letter options override small letter ones.
+
+@item
+Some of the option-arguments (compare @option{-s}, @option{-e},
+@option{-i}, @option{-n}) cannot be specified as separate arguments from the
+preceding option letter (already stated in the @acronym{POSIX} specification).
+@end itemize
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item +@var{first_page}[:@var{last_page}]
+@itemx --pages=@var{first_page}[:@var{last_page}]
+@c The two following @opindex lines evoke warnings because they contain `:'
+@c The `info' spec does not permit that. If we use those lines, we end
+@c up with truncated index entries that don't work.
+@c @opindex +@var{first_page}[:@var{last_page}]
+@c @opindex --pages=@var{first_page}[:@var{last_page}]
+@opindex +@var{page_range}
+@opindex --pages=@var{page_range}
+Begin printing with page @var{first_page} and stop with @var{last_page}.
+Missing @samp{:@var{last_page}} implies end of file. While estimating
+the number of skipped pages each form feed in the input file results
+in a new page. Page counting with and without @samp{+@var{first_page}}
+is identical. By default, counting starts with the first page of input
+file (not first page printed). Line numbering may be altered by @option{-N}
+option.
+
+@item -@var{column}
+@itemx --columns=@var{column}
+@opindex -@var{column}
+@opindex --columns
+@cindex down columns
+With each single @var{file}, produce @var{column} columns of output
+(default is 1) and print columns down, unless @option{-a} is used. The
+column width is automatically decreased as @var{column} increases; unless
+you use the @option{-W/-w} option to increase @var{page_width} as well.
+This option might well cause some lines to be truncated. The number of
+lines in the columns on each page are balanced. The options @option{-e}
+and @option{-i} are on for multiple text-column output. Together with
+@option{-J} option column alignment and line truncation is turned off.
+Lines of full length are joined in a free field format and @option{-S}
+option may set field separators. @option{-@var{column}} may not be used
+with @option{-m} option.
+
+@item -a
+@itemx --across
+@opindex -a
+@opindex --across
+@cindex across columns
+With each single @var{file}, print columns across rather than down. The
+@option{-@var{column}} option must be given with @var{column} greater than one.
+If a line is too long to fit in a column, it is truncated.
+
+@item -c
+@itemx --show-control-chars
+@opindex -c
+@opindex --show-control-chars
+Print control characters using hat notation (e.g., @samp{^G}); print
+other nonprinting characters in octal backslash notation. By default,
+nonprinting characters are not changed.
+
+@item -d
+@itemx --double-space
+@opindex -d
+@opindex --double-space
+@cindex double spacing
+Double space the output.
+
+@item -D @var{format}
+@itemx --date-format=@var{format}
+@cindex time formats
+@cindex formatting times
+Format header dates using @var{format}, using the same conventions as
+for the command @samp{date +@var{format}}; @xref{date invocation}.
+Except for directives, which start with
+@samp{%}, characters in @var{format} are printed unchanged. You can use
+this option to specify an arbitrary string in place of the header date,
+e.g., @option{--date-format="Monday morning"}.
+
+@vindex POSIXLY_CORRECT
+@vindex LC_TIME
+Normally the date
+format defaults to @samp{%Y-%m-%d %H:%M} (for example, @samp{2001-12-04
+23:59}); but if the @env{POSIXLY_CORRECT} environment variable is set
+and the @env{LC_TIME} locale category specifies the @acronym{POSIX}
+locale, the default is @samp{%b %e %H:%M %Y} (for example,
+@samp{Dec@ @ 4 23:59 2001}.
+
+@vindex TZ
+Time stamps are listed according to the time zone rules specified by
+the @env{TZ} environment variable, or by the system default rules if
+@env{TZ} is not set. @xref{TZ Variable,, Specifying the Time Zone
+with @env{TZ}, libc, The GNU C Library}.
+
+@item -e[@var{in-tabchar}[@var{in-tabwidth}]]
+@itemx --expand-tabs[=@var{in-tabchar}[@var{in-tabwidth}]]
+@opindex -e
+@opindex --expand-tabs
+@cindex input tabs
+Expand @var{tab}s to spaces on input. Optional argument @var{in-tabchar} is
+the input tab character (default is the TAB character). Second optional
+argument @var{in-tabwidth} is the input tab character's width (default
+is 8).
+
+@item -f
+@itemx -F
+@itemx --form-feed
+@opindex -F
+@opindex -f
+@opindex --form-feed
+Use a form feed instead of newlines to separate output pages. The default
+page length of 66 lines is not altered. But the number of lines of text
+per page changes from default 56 to 63 lines.
+
+@item -h @var{HEADER}
+@itemx --header=@var{HEADER}
+@opindex -h
+@opindex --header
+Replace the file name in the header with the centered string @var{header}.
+When using the shell, @var{header} should be quoted and should be
+separated from @option{-h} by a space.
+
+@item -i[@var{out-tabchar}[@var{out-tabwidth}]]
+@itemx --output-tabs[=@var{out-tabchar}[@var{out-tabwidth}]]
+@opindex -i
+@opindex --output-tabs
+@cindex output tabs
+Replace spaces with @var{tab}s on output. Optional argument @var{out-tabchar}
+is the output tab character (default is the TAB character). Second optional
+argument @var{out-tabwidth} is the output tab character's width (default
+is 8).
+
+@item -J
+@itemx --join-lines
+@opindex -J
+@opindex --join-lines
+Merge lines of full length. Used together with the column options
+@option{-@var{column}}, @option{-a -@var{column}} or @option{-m}. Turns off
+@option{-W/-w} line truncation;
+no column alignment used; may be used with
+@option{--sep-string[=@var{string}]}. @option{-J} has been introduced
+(together with @option{-W} and @option{--sep-string})
+to disentangle the old (@acronym{POSIX}-compliant) options @option{-w} and
+@option{-s} along with the three column options.
+
+
+@item -l @var{page_length}
+@itemx --length=@var{page_length}
+@opindex -l
+@opindex --length
+Set the page length to @var{page_length} (default 66) lines, including
+the lines of the header [and the footer]. If @var{page_length} is less
+than or equal to 10 (or <= 3 with @option{-F}), the header and footer are
+omitted, and all form feeds set in input files are eliminated, as if
+the @option{-T} option had been given.
+
+@item -m
+@itemx --merge
+@opindex -m
+@opindex --merge
+Merge and print all @var{file}s in parallel, one in each column. If a
+line is too long to fit in a column, it is truncated, unless the @option{-J}
+option is used. @option{--sep-string[=@var{string}]} may be used.
+Empty pages in
+some @var{file}s (form feeds set) produce empty columns, still marked
+by @var{string}. The result is a continuous line numbering and column
+marking throughout the whole merged file. Completely empty merged pages
+show no separators or line numbers. The default header becomes
+@samp{@var{date} @var{page}} with spaces inserted in the middle; this
+may be used with the @option{-h} or @option{--header} option to fill up
+the middle blank part.
+
+@item -n[@var{number-separator}[@var{digits}]]
+@itemx --number-lines[=@var{number-separator}[@var{digits}]]
+@opindex -n
+@opindex --number-lines
+Provide @var{digits} digit line numbering (default for @var{digits} is
+5). With multicolumn output the number occupies the first @var{digits}
+column positions of each text column or only each line of @option{-m}
+output. With single column output the number precedes each line just as
+@option{-m} does. Default counting of the line numbers starts with the
+first line of the input file (not the first line printed, compare the
+@option{--page} option and @option{-N} option).
+Optional argument @var{number-separator} is the character appended to
+the line number to separate it from the text followed. The default
+separator is the TAB character. In a strict sense a TAB is always
+printed with single column output only. The @var{TAB}-width varies
+with the @var{TAB}-position, e.g., with the left @var{margin} specified
+by @option{-o} option. With multicolumn output priority is given to
+@samp{equal width of output columns} (a @acronym{POSIX} specification).
+The @var{TAB}-width is fixed to the value of the first column and does
+not change with different values of left @var{margin}. That means a
+fixed number of spaces is always printed in the place of the
+@var{number-separator tab}. The tabification depends upon the output
+position.
+
+@item -N @var{line_number}
+@itemx --first-line-number=@var{line_number}
+@opindex -N
+@opindex --first-line-number
+Start line counting with the number @var{line_number} at first line of
+first page printed (in most cases not the first line of the input file).
+
+@item -o @var{margin}
+@itemx --indent=@var{margin}
+@opindex -o
+@opindex --indent
+@cindex indenting lines
+@cindex left margin
+Indent each line with a margin @var{margin} spaces wide (default is zero).
+The total page width is the size of the margin plus the @var{page_width}
+set with the @option{-W/-w} option. A limited overflow may occur with
+numbered single column output (compare @option{-n} option).
+
+@item -r
+@itemx --no-file-warnings
+@opindex -r
+@opindex --no-file-warnings
+Do not print a warning message when an argument @var{file} cannot be
+opened. (The exit status will still be nonzero, however.)
+
+@item -s[@var{char}]
+@itemx --separator[=@var{char}]
+@opindex -s
+@opindex --separator
+Separate columns by a single character @var{char}. The default for
+@var{char} is the TAB character without @option{-w} and @samp{no
+character} with @option{-w}. Without @option{-s} the default separator
+@samp{space} is set. @option{-s[char]} turns off line truncation of all
+three column options (@option{-COLUMN}|@option{-a -COLUMN}|@option{-m}) unless
+@option{-w} is set. This is a @acronym{POSIX}-compliant formulation.
+
+
+@item -S@var{string}
+@itemx --sep-string[=@var{string}]
+@opindex -S
+@opindex --sep-string
+Use @var{string} to separate output columns. The @option{-S} option doesn't
+affect the @option{-W/-w} option, unlike the @option{-s} option which does. It
+does not affect line truncation or column alignment.
+Without @option{-S}, and with @option{-J}, @command{pr} uses the default output
+separator, TAB@.
+Without @option{-S} or @option{-J}, @command{pr} uses a @samp{space}
+(same as @option{-S"@w{ }"}). @option{--sep-string} with no
+@samp{=@var{string}} is equivalent to @option{--sep-string=""}.
+
+@item -t
+@itemx --omit-header
+@opindex -t
+@opindex --omit-header
+Do not print the usual header [and footer] on each page, and do not fill
+out the bottom of pages (with blank lines or a form feed). No page
+structure is produced, but form feeds set in the input files are retained.
+The predefined pagination is not changed. @option{-t} or @option{-T} may be
+useful together with other options; e.g.: @option{-t -e4}, expand TAB characters
+in the input file to 4 spaces but don't make any other changes. Use of
+@option{-t} overrides @option{-h}.
+
+@item -T
+@itemx --omit-pagination
+@opindex -T
+@opindex --omit-pagination
+Do not print header [and footer]. In addition eliminate all form feeds
+set in the input files.
+
+@item -v
+@itemx --show-nonprinting
+@opindex -v
+@opindex --show-nonprinting
+Print nonprinting characters in octal backslash notation.
+
+@item -w @var{page_width}
+@itemx --width=@var{page_width}
+@opindex -w
+@opindex --width
+Set page width to @var{page_width} characters for multiple text-column
+output only (default for @var{page_width} is 72). @option{-s[CHAR]} turns
+off the default page width and any line truncation and column alignment.
+Lines of full length are merged, regardless of the column options
+set. No @var{page_width} setting is possible with single column output.
+A @acronym{POSIX}-compliant formulation.
+
+@item -W @var{page_width}
+@itemx --page_width=@var{page_width}
+@opindex -W
+@opindex --page_width
+Set the page width to @var{page_width} characters. That's valid with and
+without a column option. Text lines are truncated, unless @option{-J}
+is used. Together with one of the three column options
+(@option{-@var{column}}, @option{-a -@var{column}} or @option{-m}) column
+alignment is always used. The separator options @option{-S} or @option{-s}
+don't affect the @option{-W} option. Default is 72 characters. Without
+@option{-W @var{page_width}} and without any of the column options NO line
+truncation is used (defined to keep downward compatibility and to meet
+most frequent tasks). That's equivalent to @option{-W 72 -J}. The header
+line is never truncated.
+
+@end table
+
+@exitstatus
+
+
+@node fold invocation
+@section @command{fold}: Wrap input lines to fit in specified width
+
+@pindex fold
+@cindex wrapping long input lines
+@cindex folding long input lines
+
+@command{fold} writes each @var{file} (@option{-} means standard input), or
+standard input if none are given, to standard output, breaking long
+lines. Synopsis:
+
+@example
+fold [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+By default, @command{fold} breaks lines wider than 80 columns. The output
+is split into as many lines as necessary.
+
+@cindex screen columns
+@command{fold} counts screen columns by default; thus, a tab may count more
+than one column, backspace decreases the column count, and carriage
+return sets the column to zero.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -b
+@itemx --bytes
+@opindex -b
+@opindex --bytes
+Count bytes rather than columns, so that tabs, backspaces, and carriage
+returns are each counted as taking up one column, just like other
+characters.
+
+@item -s
+@itemx --spaces
+@opindex -s
+@opindex --spaces
+Break at word boundaries: the line is broken after the last blank before
+the maximum line length. If the line contains no such blanks, the line
+is broken at the maximum line length as usual.
+
+@item -w @var{width}
+@itemx --width=@var{width}
+@opindex -w
+@opindex --width
+Use a maximum line length of @var{width} columns instead of 80.
+
+For compatibility @command{fold} supports an obsolete option syntax
+@option{-@var{width}}. New scripts should use @option{-w @var{width}}
+instead.
+
+@end table
+
+@exitstatus
+
+
+@node Output of parts of files
+@chapter Output of parts of files
+
+@cindex output of parts of files
+@cindex parts of files, output of
+
+These commands output pieces of the input.
+
+@menu
+* head invocation:: Output the first part of files.
+* tail invocation:: Output the last part of files.
+* split invocation:: Split a file into fixed-size pieces.
+* csplit invocation:: Split a file into context-determined pieces.
+@end menu
+
+@node head invocation
+@section @command{head}: Output the first part of files
+
+@pindex head
+@cindex initial part of files, outputting
+@cindex first part of files, outputting
+
+@command{head} prints the first part (10 lines by default) of each
+@var{file}; it reads from standard input if no files are given or
+when given a @var{file} of @option{-}. Synopsis:
+
+@example
+head [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+If more than one @var{file} is specified, @command{head} prints a
+one-line header consisting of:
+
+@example
+==> @var{file name} <==
+@end example
+
+@noindent
+before the output for each @var{file}.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -c @var{n}
+@itemx --bytes=@var{n}
+@opindex -c
+@opindex --bytes
+Print the first @var{n} bytes, instead of initial lines. Appending
+@samp{b} multiplies @var{n} by 512, @samp{k} by 1024, and @samp{m}
+by 1048576.
+However, if @var{n} starts with a @samp{-},
+print all but the last @var{n} bytes of each file.
+
+@itemx -n @var{n}
+@itemx --lines=@var{n}
+@opindex -n
+@opindex --lines
+Output the first @var{n} lines.
+However, if @var{n} starts with a @samp{-},
+print all but the last @var{n} lines of each file.
+
+@item -q
+@itemx --quiet
+@itemx --silent
+@opindex -q
+@opindex --quiet
+@opindex --silent
+Never print file name headers.
+
+@item -v
+@itemx --verbose
+@opindex -v
+@opindex --verbose
+Always print file name headers.
+
+@end table
+
+For compatibility @command{head} also supports an obsolete option syntax
+@option{-@var{count}@var{options}}, which is recognized only if it is
+specified first. @var{count} is a decimal number optionally followed
+by a size letter (@samp{b}, @samp{k}, @samp{m}) as in @option{-c}, or
+@samp{l} to mean count by lines, or other option letters (@samp{cqv}).
+Scripts intended for standard hosts should use @option{-c @var{count}}
+or @option{-n @var{count}} instead. If your script must also run on
+hosts that support only the obsolete syntax, it is usually simpler to
+avoid @command{head}, e.g., by using @samp{sed 5q} instead of
+@samp{head -5}.
+
+@exitstatus
+
+
+@node tail invocation
+@section @command{tail}: Output the last part of files
+
+@pindex tail
+@cindex last part of files, outputting
+
+@command{tail} prints the last part (10 lines by default) of each
+@var{file}; it reads from standard input if no files are given or
+when given a @var{file} of @samp{-}. Synopsis:
+
+@example
+tail [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+If more than one @var{file} is specified, @command{tail} prints a
+one-line header consisting of:
+
+@example
+==> @var{file name} <==
+@end example
+
+@noindent
+before the output for each @var{file}.
+
+@cindex BSD @command{tail}
+@sc{gnu} @command{tail} can output any amount of data (some other versions of
+@command{tail} cannot). It also has no @option{-r} option (print in
+reverse), since reversing a file is really a different job from printing
+the end of a file; BSD @command{tail} (which is the one with @option{-r}) can
+only reverse files that are at most as large as its buffer, which is
+typically 32 KiB@. A more reliable and versatile way to reverse files is
+the @sc{gnu} @command{tac} command.
+
+If any option-argument is a number @var{n} starting with a @samp{+},
+@command{tail} begins printing with the @var{n}th item from the start of
+each file, instead of from the end.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -c @var{bytes}
+@itemx --bytes=@var{bytes}
+@opindex -c
+@opindex --bytes
+Output the last @var{bytes} bytes, instead of final lines. Appending
+@samp{b} multiplies @var{bytes} by 512, @samp{k} by 1024, and @samp{m}
+by 1048576.
+
+@item -f
+@itemx --follow[=@var{how}]
+@opindex -f
+@opindex --follow
+@cindex growing files
+@vindex name @r{follow option}
+@vindex descriptor @r{follow option}
+Loop forever trying to read more characters at the end of the file,
+presumably because the file is growing.
+If more than one file is given, @command{tail} prints a header whenever it
+gets output from a different file, to indicate which file that output is
+from.
+
+There are two ways to specify how you'd like to track files with this option,
+but that difference is noticeable only when a followed file is removed or
+renamed.
+If you'd like to continue to track the end of a growing file even after
+it has been unlinked, use @option{--follow=descriptor}. This is the default
+behavior, but it is not useful if you're tracking a log file that may be
+rotated (removed or renamed, then reopened). In that case, use
+@option{--follow=name} to track the named file by reopening it periodically
+to see if it has been removed and recreated by some other program.
+
+No matter which method you use, if the tracked file is determined to have
+shrunk, @command{tail} prints a message saying the file has been truncated
+and resumes tracking the end of the file from the newly-determined endpoint.
+
+When a file is removed, @command{tail}'s behavior depends on whether it is
+following the name or the descriptor. When following by name, tail can
+detect that a file has been removed and gives a message to that effect,
+and if @option{--retry} has been specified it will continue checking
+periodically to see if the file reappears.
+When following a descriptor, tail does not detect that the file has
+been unlinked or renamed and issues no message; even though the file
+may no longer be accessible via its original name, it may still be
+growing.
+
+The option values @samp{descriptor} and @samp{name} may be specified only
+with the long form of the option, not with @option{-f}.
+
+@vindex POSIXLY_CORRECT
+If @env{POSIXLY_CORRECT} is set, the @option{-f} option is ignored if
+no @var{file} operand is specified and standard input is a FIFO or a pipe.
+
+@item -F
+@opindex -F
+This option is the same as @option{--follow=name --retry}. That is, tail
+will attempt to reopen a file when it is removed. Should this fail, tail
+will keep trying until it becomes accessible again.
+
+@itemx --retry
+@opindex --retry
+This option is useful mainly when following by name (i.e., with
+@option{--follow=name}).
+Without this option, when tail encounters a file that doesn't
+exist or is otherwise inaccessible, it reports that fact and
+never checks it again.
+
+@itemx --sleep-interval=@var{number}
+@opindex --sleep-interval
+Change the number of seconds to wait between iterations (the default is 1.0).
+During one iteration, every specified file is checked to see if it has
+changed size.
+Historical implementations of @command{tail} have required that
+@var{number} be an integer. However, GNU @command{tail} accepts
+an arbitrary floating point number (using a period before any
+fractional digits).
+
+@itemx --pid=@var{pid}
+@opindex --pid
+When following by name or by descriptor, you may specify the process ID,
+@var{pid}, of the sole writer of all @var{file} arguments. Then, shortly
+after that process terminates, tail will also terminate. This will
+work properly only if the writer and the tailing process are running on
+the same machine. For example, to save the output of a build in a file
+and to watch the file grow, if you invoke @command{make} and @command{tail}
+like this then the tail process will stop when your build completes.
+Without this option, you would have had to kill the @code{tail -f}
+process yourself.
+
+@example
+$ make >& makerr & tail --pid=$! -f makerr
+@end example
+
+If you specify a @var{pid} that is not in use or that does not correspond
+to the process that is writing to the tailed files, then @command{tail}
+may terminate long before any @var{file}s stop growing or it may not
+terminate until long after the real writer has terminated.
+Note that @option{--pid} cannot be supported on some systems; @command{tail}
+will print a warning if this is the case.
+
+@itemx --max-unchanged-stats=@var{n}
+@opindex --max-unchanged-stats
+When tailing a file by name, if there have been @var{n} (default
+n=@value{DEFAULT_MAX_N_UNCHANGED_STATS_BETWEEN_OPENS}) consecutive
+iterations for which the file has not changed, then
+@code{open}/@code{fstat} the file to determine if that file name is
+still associated with the same device/inode-number pair as before.
+When following a log file that is rotated, this is approximately the
+number of seconds between when tail prints the last pre-rotation lines
+and when it prints the lines that have accumulated in the new log file.
+This option is meaningful only when following by name.
+
+@itemx -n @var{n}
+@itemx --lines=@var{n}
+@opindex -n
+@opindex --lines
+Output the last @var{n} lines.
+
+@item -q
+@itemx --quiet
+@itemx --silent
+@opindex -q
+@opindex --quiet
+@opindex --silent
+Never print file name headers.
+
+@item -v
+@itemx --verbose
+@opindex -v
+@opindex --verbose
+Always print file name headers.
+
+@end table
+
+For compatibility @command{tail} also supports an obsolete usage
+@samp{tail -[@var{count}][bcl][f] [@var{file}]}, which is recognized
+only if it does not conflict with the usage described
+above. This obsolete form uses exactly one option and at most one
+file. In the option, @var{count} is an optional decimal number optionally
+followed by a size letter (@samp{b}, @samp{c}, @samp{l}) to mean count
+by 512-byte blocks, bytes, or lines, optionally followed by @samp{f}
+which has the same meaning as @option{-f}.
+
+@vindex _POSIX2_VERSION
+On older systems, the leading @samp{-} can be replaced by @samp{+} in
+the obsolete option syntax with the same meaning as in counts, and
+obsolete usage overrides normal usage when the two conflict.
+This obsolete behavior can be enabled or disabled with the
+@env{_POSIX2_VERSION} environment variable (@pxref{Standards
+conformance}).
+
+Scripts intended for use on standard hosts should avoid obsolete
+syntax and should use @option{-c @var{count}[b]}, @option{-n
+@var{count}}, and/or @option{-f} instead. If your script must also
+run on hosts that support only the obsolete syntax, you can often
+rewrite it to avoid problematic usages, e.g., by using @samp{sed -n
+'$p'} rather than @samp{tail -1}. If that's not possible, the script
+can use a test like @samp{if tail -c +1 </dev/null >/dev/null 2>&1;
+then @dots{}} to decide which syntax to use.
+
+Even if your script assumes the standard behavior, you should still
+beware usages whose behaviors differ depending on the @acronym{POSIX}
+version. For example, avoid @samp{tail - main.c}, since it might be
+interpreted as either @samp{tail main.c} or as @samp{tail -- -
+main.c}; avoid @samp{tail -c 4}, since it might mean either @samp{tail
+-c4} or @samp{tail -c 10 4}; and avoid @samp{tail +4}, since it might
+mean either @samp{tail ./+4} or @samp{tail -n +4}.
+
+@exitstatus
+
+
+@node split invocation
+@section @command{split}: Split a file into fixed-size pieces
+
+@pindex split
+@cindex splitting a file into pieces
+@cindex pieces, splitting a file into
+
+@command{split} creates output files containing consecutive sections of
+@var{input} (standard input if none is given or @var{input} is
+@samp{-}). Synopsis:
+
+@example
+split [@var{option}] [@var{input} [@var{prefix}]]
+@end example
+
+By default, @command{split} puts 1000 lines of @var{input} (or whatever is
+left over for the last section), into each output file.
+
+@cindex output file name prefix
+The output files' names consist of @var{prefix} (@samp{x} by default)
+followed by a group of characters (@samp{aa}, @samp{ab}, @dots{} by
+default), such that concatenating the output files in traditional
+sorted order by file name produces
+the original input file. If the output file names are exhausted,
+@command{split} reports an error without deleting the output files
+that it did create.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -a @var{length}
+@itemx --suffix-length=@var{length}
+@opindex -a
+@opindex --suffix-length
+Use suffixes of length @var{length}. The default @var{length} is 2.
+
+@item -l @var{lines}
+@itemx --lines=@var{lines}
+@opindex -l
+@opindex --lines
+Put @var{lines} lines of @var{input} into each output file.
+
+For compatibility @command{split} also supports an obsolete
+option syntax @option{-@var{lines}}. New scripts should use @option{-l
+@var{lines}} instead.
+
+@item -b @var{bytes}
+@itemx --bytes=@var{bytes}
+@opindex -b
+@opindex --bytes
+Put the first @var{bytes} bytes of @var{input} into each output file.
+Appending @samp{b} multiplies @var{bytes} by 512, @samp{k} by 1024, and
+@samp{m} by 1048576.
+
+@item -C @var{bytes}
+@itemx --line-bytes=@var{bytes}
+@opindex -C
+@opindex --line-bytes
+Put into each output file as many complete lines of @var{input} as
+possible without exceeding @var{bytes} bytes. For lines longer than
+@var{bytes} bytes, put @var{bytes} bytes into each output file until
+less than @var{bytes} bytes of the line are left, then continue
+normally. @var{bytes} has the same format as for the @option{--bytes}
+option.
+
+@item -d
+@itemx --numeric-suffixes
+@opindex -d
+@opindex --numeric-suffixes
+Use digits in suffixes rather than lower-case letters.
+
+@itemx --verbose
+@opindex --verbose
+Write a diagnostic to standard error just before each output file is opened.
+
+@end table
+
+@exitstatus
+
+
+@node csplit invocation
+@section @command{csplit}: Split a file into context-determined pieces
+
+@pindex csplit
+@cindex context splitting
+@cindex splitting a file into pieces by context
+
+@command{csplit} creates zero or more output files containing sections of
+@var{input} (standard input if @var{input} is @samp{-}). Synopsis:
+
+@example
+csplit [@var{option}]@dots{} @var{input} @var{pattern}@dots{}
+@end example
+
+The contents of the output files are determined by the @var{pattern}
+arguments, as detailed below. An error occurs if a @var{pattern}
+argument refers to a nonexistent line of the input file (e.g., if no
+remaining line matches a given regular expression). After every
+@var{pattern} has been matched, any remaining input is copied into one
+last output file.
+
+By default, @command{csplit} prints the number of bytes written to each
+output file after it has been created.
+
+The types of pattern arguments are:
+
+@table @samp
+
+@item @var{n}
+Create an output file containing the input up to but not including line
+@var{n} (a positive integer). If followed by a repeat count, also
+create an output file containing the next @var{n} lines of the input
+file once for each repeat.
+
+@item /@var{regexp}/[@var{offset}]
+Create an output file containing the current line up to (but not
+including) the next line of the input file that contains a match for
+@var{regexp}. The optional @var{offset} is an integer.
+If it is given, the input up to (but not including) the
+matching line plus or minus @var{offset} is put into the output file,
+and the line after that begins the next section of input.
+
+@item %@var{regexp}%[@var{offset}]
+Like the previous type, except that it does not create an output
+file, so that section of the input file is effectively ignored.
+
+@item @{@var{repeat-count}@}
+Repeat the previous pattern @var{repeat-count} additional
+times. The @var{repeat-count} can either be a positive integer or an
+asterisk, meaning repeat as many times as necessary until the input is
+exhausted.
+
+@end table
+
+The output files' names consist of a prefix (@samp{xx} by default)
+followed by a suffix. By default, the suffix is an ascending sequence
+of two-digit decimal numbers from @samp{00} to @samp{99}. In any case,
+concatenating the output files in sorted order by file name produces the
+original input file.
+
+By default, if @command{csplit} encounters an error or receives a hangup,
+interrupt, quit, or terminate signal, it removes any output files
+that it has created so far before it exits.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -f @var{prefix}
+@itemx --prefix=@var{prefix}
+@opindex -f
+@opindex --prefix
+@cindex output file name prefix
+Use @var{prefix} as the output file name prefix.
+
+@item -b @var{suffix}
+@itemx --suffix=@var{suffix}
+@opindex -b
+@opindex --suffix
+@cindex output file name suffix
+Use @var{suffix} as the output file name suffix. When this option is
+specified, the suffix string must include exactly one
+@code{printf(3)}-style conversion specification, possibly including
+format specification flags, a field width, a precision specifications,
+or all of these kinds of modifiers. The format letter must convert a
+binary integer argument to readable form; thus, only @samp{d}, @samp{i},
+@samp{u}, @samp{o}, @samp{x}, and @samp{X} conversions are allowed. The
+entire @var{suffix} is given (with the current output file number) to
+@code{sprintf(3)} to form the file name suffixes for each of the
+individual output files in turn. If this option is used, the
+@option{--digits} option is ignored.
+
+@item -n @var{digits}
+@itemx --digits=@var{digits}
+@opindex -n
+@opindex --digits
+Use output file names containing numbers that are @var{digits} digits
+long instead of the default 2.
+
+@item -k
+@itemx --keep-files
+@opindex -k
+@opindex --keep-files
+Do not remove output files when errors are encountered.
+
+@item -z
+@itemx --elide-empty-files
+@opindex -z
+@opindex --elide-empty-files
+Suppress the generation of zero-length output files. (In cases where
+the section delimiters of the input file are supposed to mark the first
+lines of each of the sections, the first output file will generally be a
+zero-length file unless you use this option.) The output file sequence
+numbers always run consecutively starting from 0, even when this option
+is specified.
+
+@item -s
+@itemx -q
+@itemx --silent
+@itemx --quiet
+@opindex -s
+@opindex -q
+@opindex --silent
+@opindex --quiet
+Do not print counts of output file sizes.
+
+@end table
+
+@exitstatus
+
+
+@node Summarizing files
+@chapter Summarizing files
+
+@cindex summarizing files
+
+These commands generate just a few numbers representing entire
+contents of files.
+
+@menu
+* wc invocation:: Print newline, word, and byte counts.
+* sum invocation:: Print checksum and block counts.
+* cksum invocation:: Print CRC checksum and byte counts.
+* md5sum invocation:: Print or check MD5 digests.
+* sha1sum invocation:: Print or check SHA-1 digests.
+* sha2 utilities:: Print or check SHA-2 digests.
+@end menu
+
+
+@node wc invocation
+@section @command{wc}: Print newline, word, and byte counts
+
+@pindex wc
+@cindex byte count
+@cindex character count
+@cindex word count
+@cindex line count
+
+@command{wc} counts the number of bytes, characters, whitespace-separated
+words, and newlines in each given @var{file}, or standard input if none
+are given or for a @var{file} of @samp{-}. Synopsis:
+
+@example
+wc [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+@cindex total counts
+@command{wc} prints one line of counts for each file, and if the file was
+given as an argument, it prints the file name following the counts. If
+more than one @var{file} is given, @command{wc} prints a final line
+containing the cumulative counts, with the file name @file{total}. The
+counts are printed in this order: newlines, words, characters, bytes,
+maximum line length.
+Each count is printed right-justified in a field with at least one
+space between fields so that the numbers and file names normally line
+up nicely in columns. The width of the count fields varies depending
+on the inputs, so you should not depend on a particular field width.
+However, as a @acronym{GNU} extension, if only one count is printed,
+it is guaranteed to be printed without leading spaces.
+
+By default, @command{wc} prints three counts: the newline, words, and byte
+counts. Options can specify that only certain counts be printed.
+Options do not undo others previously given, so
+
+@example
+wc --bytes --words
+@end example
+
+@noindent
+prints both the byte counts and the word counts.
+
+With the @option{--max-line-length} option, @command{wc} prints the length
+of the longest line per file, and if there is more than one file it
+prints the maximum (not the sum) of those lengths.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -c
+@itemx --bytes
+@opindex -c
+@opindex --bytes
+Print only the byte counts.
+
+@item -m
+@itemx --chars
+@opindex -m
+@opindex --chars
+Print only the character counts.
+
+@item -w
+@itemx --words
+@opindex -w
+@opindex --words
+Print only the word counts.
+
+@item -l
+@itemx --lines
+@opindex -l
+@opindex --lines
+Print only the newline counts.
+
+@item -L
+@itemx --max-line-length
+@opindex -L
+@opindex --max-line-length
+Print only the maximum line lengths.
+
+@itemx --files0-from=@var{FILE}
+@opindex --files0-from=@var{FILE}
+@cindex including files from @command{du}
+Rather than processing files named on the command line, process those
+named in file @var{FILE}; each name is terminated by a null byte.
+This is useful when
+the list of file names is so long that it may exceed a command line
+length limitation.
+In such cases, running @command{wc} via @command{xargs} is undesirable
+because it splits the list into pieces and makes @command{wc} print a
+total for each sublist rather than for the entire list.
+One way to produce a list of null-byte-terminated file names is with @sc{gnu}
+@command{find}, using its @option{-print0} predicate. For example, to find
+the length of the longest line in any @file{.c} or @file{.h} file in the
+current hierarchy, do this:
+
+@example
+find . -name '*.[ch]' -print0 | wc -L --files0-from=- | tail -n1
+@end example
+
+Do not specify any @var{FILE} on the command line when using this option.
+
+@end table
+
+@exitstatus
+
+
+@node sum invocation
+@section @command{sum}: Print checksum and block counts
+
+@pindex sum
+@cindex 16-bit checksum
+@cindex checksum, 16-bit
+
+@command{sum} computes a 16-bit checksum for each given @var{file}, or
+standard input if none are given or for a @var{file} of @samp{-}. Synopsis:
+
+@example
+sum [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+@command{sum} prints the checksum for each @var{file} followed by the
+number of blocks in the file (rounded up). If more than one @var{file}
+is given, file names are also printed (by default). (With the
+@option{--sysv} option, corresponding file names are printed when there is
+at least one file argument.)
+
+By default, @sc{gnu} @command{sum} computes checksums using an algorithm
+compatible with BSD @command{sum} and prints file sizes in units of
+1024-byte blocks.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -r
+@opindex -r
+@cindex BSD @command{sum}
+Use the default (BSD compatible) algorithm. This option is included for
+compatibility with the System V @command{sum}. Unless @option{-s} was also
+given, it has no effect.
+
+@item -s
+@itemx --sysv
+@opindex -s
+@opindex --sysv
+@cindex System V @command{sum}
+Compute checksums using an algorithm compatible with System V
+@command{sum}'s default, and print file sizes in units of 512-byte blocks.
+
+@end table
+
+@command{sum} is provided for compatibility; the @command{cksum} program (see
+next section) is preferable in new applications.
+
+@exitstatus
+
+
+@node cksum invocation
+@section @command{cksum}: Print CRC checksum and byte counts
+
+@pindex cksum
+@cindex cyclic redundancy check
+@cindex CRC checksum
+
+@command{cksum} computes a cyclic redundancy check (CRC) checksum for each
+given @var{file}, or standard input if none are given or for a
+@var{file} of @samp{-}. Synopsis:
+
+@example
+cksum [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+@command{cksum} prints the CRC checksum for each file along with the number
+of bytes in the file, and the file name unless no arguments were given.
+
+@command{cksum} is typically used to ensure that files
+transferred by unreliable means (e.g., netnews) have not been corrupted,
+by comparing the @command{cksum} output for the received files with the
+@command{cksum} output for the original files (typically given in the
+distribution).
+
+The CRC algorithm is specified by the @acronym{POSIX} standard. It is not
+compatible with the BSD or System V @command{sum} algorithms (see the
+previous section); it is more robust.
+
+The only options are @option{--help} and @option{--version}. @xref{Common
+options}.
+
+@exitstatus
+
+
+@node md5sum invocation
+@section @command{md5sum}: Print or check MD5 digests
+
+@pindex md5sum
+@cindex MD5
+@cindex 128-bit checksum
+@cindex checksum, 128-bit
+@cindex fingerprint, 128-bit
+@cindex message-digest, 128-bit
+
+@command{md5sum} computes a 128-bit checksum (or @dfn{fingerprint} or
+@dfn{message-digest}) for each specified @var{file}.
+
+Note: The MD5 digest is more reliable than a simple CRC (provided by
+the @command{cksum} command) for detecting accidental file corruption,
+as the chances of accidentally having two files with identical MD5
+are vanishingly small. However, it should not be considered truly
+secure against malicious tampering: although finding a file with a
+given MD5 fingerprint, or modifying a file so as to retain its MD5 are
+considered infeasible at the moment, it is known how to produce
+different files with identical MD5 (a ``collision''), something which
+can be a security issue in certain contexts. For more secure hashes,
+consider using SHA-1 or SHA-2. @xref{sha1sum invocation}, and
+@ref{sha2 utilities}.
+
+If a @var{file} is specified as @samp{-} or if no files are given
+@command{md5sum} computes the checksum for the standard input.
+@command{md5sum} can also determine whether a file and checksum are
+consistent. Synopsis:
+
+@example
+md5sum [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+For each @var{file}, @samp{md5sum} outputs the MD5 checksum, a flag
+indicating a binary or text input file, and the file name.
+If @var{file} contains a backslash or newline, the
+line is started with a backslash, and each problematic character in
+the file name is escaped with a backslash, making the output
+unambiguous even in the presence of arbitrary file names.
+If @var{file} is omitted or specified as @samp{-}, standard input is read.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -b
+@itemx --binary
+@opindex -b
+@opindex --binary
+@cindex binary input files
+Treat each input file as binary, by reading it in binary mode and
+outputting a @samp{*} flag. This is the inverse of @option{--text}.
+On systems like @acronym{GNU} that do not distinguish between binary
+and text files, this option merely flags each input file as binary:
+the MD5 checksum is unaffected. This option is the default on systems
+like MS-DOS that distinguish between binary and text files, except
+for reading standard input when standard input is a terminal.
+
+@item -c
+@itemx --check
+Read file names and checksum information (not data) from each
+@var{file} (or from stdin if no @var{file} was specified) and report
+whether the checksums match the contents of the named files.
+The input to this mode of @command{md5sum} is usually the output of
+a prior, checksum-generating run of @samp{md5sum}.
+Each valid line of input consists of an MD5 checksum, a binary/text
+flag, and then a file name.
+Binary files are marked with @samp{*}, text with @samp{ }.
+For each such line, @command{md5sum} reads the named file and computes its
+MD5 checksum. Then, if the computed message digest does not match the
+one on the line with the file name, the file is noted as having
+failed the test. Otherwise, the file passes the test.
+By default, for each valid line, one line is written to standard
+output indicating whether the named file passed the test.
+After all checks have been performed, if there were any failures,
+a warning is issued to standard error.
+Use the @option{--status} option to inhibit that output.
+If any listed file cannot be opened or read, if any valid line has
+an MD5 checksum inconsistent with the associated file, or if no valid
+line is found, @command{md5sum} exits with nonzero status. Otherwise,
+it exits successfully.
+
+@itemx --status
+@opindex --status
+@cindex verifying MD5 checksums
+This option is useful only when verifying checksums.
+When verifying checksums, don't generate the default one-line-per-file
+diagnostic and don't output the warning summarizing any failures.
+Failures to open or read a file still evoke individual diagnostics to
+standard error.
+If all listed files are readable and are consistent with the associated
+MD5 checksums, exit successfully. Otherwise exit with a status code
+indicating there was a failure.
+
+@item -t
+@itemx --text
+@opindex -t
+@opindex --text
+@cindex text input files
+Treat each input file as text, by reading it in text mode and
+outputting a @samp{ } flag. This is the inverse of @option{--binary}.
+This option is the default on systems like @acronym{GNU} that do not
+distinguish between binary and text files. On other systems, it is
+the default for reading standard input when standard input is a
+terminal.
+
+@item -w
+@itemx --warn
+@opindex -w
+@opindex --warn
+@cindex verifying MD5 checksums
+When verifying checksums, warn about improperly formatted MD5 checksum lines.
+This option is useful only if all but a few lines in the checked input
+are valid.
+
+@end table
+
+@exitstatus
+
+
+@node sha1sum invocation
+@section @command{sha1sum}: Print or check SHA-1 digests
+
+@pindex sha1sum
+@cindex SHA-1
+@cindex 160-bit checksum
+@cindex checksum, 160-bit
+@cindex fingerprint, 160-bit
+@cindex message-digest, 160-bit
+
+@command{sha1sum} computes a 160-bit checksum for each specified
+@var{file}. The usage and options of this command are precisely the
+same as for @command{md5sum}. @xref{md5sum invocation}.
+
+Note: The SHA-1 digest is more secure than MD5, and no collisions of
+it are known (different files having the same fingerprint). However,
+it is known that they can be produced with considerable, but not
+unreasonable, resources. For this reason, it is generally considered
+that SHA-1 should be gradually phased out in favor of the more secure
+SHA-2 hash algorithms. @xref{sha2 utilities}.
+
+
+@node sha2 utilities
+@section sha2 utilities: Print or check SHA-2 digests
+
+@pindex sha224sum
+@pindex sha256sum
+@pindex sha384sum
+@pindex sha512sum
+@cindex SHA-2
+@cindex 224-bit checksum
+@cindex 256-bit checksum
+@cindex 384-bit checksum
+@cindex 512-bit checksum
+@cindex checksum, 224-bit
+@cindex checksum, 256-bit
+@cindex checksum, 384-bit
+@cindex checksum, 512-bit
+@cindex fingerprint, 224-bit
+@cindex fingerprint, 256-bit
+@cindex fingerprint, 384-bit
+@cindex fingerprint, 512-bit
+@cindex message-digest, 224-bit
+@cindex message-digest, 256-bit
+@cindex message-digest, 384-bit
+@cindex message-digest, 512-bit
+
+The commands @command{sha224sum}, @command{sha256sum},
+@command{sha384sum} and @command{sha512sum} compute checksums of
+various lengths (respectively 224, 256, 384 and 512 bits),
+collectively known as the SHA-2 hashes. The usage and options of
+these commands are precisely the same as for @command{md5sum}.
+@xref{md5sum invocation}.
+
+Note: The SHA384 and SHA512 digests are considerably slower to
+compute, especially on 32-bit computers, than SHA224 or SHA256.
+
+
+@node Operating on sorted files
+@chapter Operating on sorted files
+
+@cindex operating on sorted files
+@cindex sorted files, operations on
+
+These commands work with (or produce) sorted files.
+
+@menu
+* sort invocation:: Sort text files.
+* shuf invocation:: Shuffle text files.
+* uniq invocation:: Uniquify files.
+* comm invocation:: Compare two sorted files line by line.
+* ptx invocation:: Produce a permuted index of file contents.
+* tsort invocation:: Topological sort.
+* tsort background:: Where tsort came from.
+@end menu
+
+
+@node sort invocation
+@section @command{sort}: Sort text files
+
+@pindex sort
+@cindex sorting files
+
+@command{sort} sorts, merges, or compares all the lines from the given
+files, or standard input if none are given or for a @var{file} of
+@samp{-}. By default, @command{sort} writes the results to standard
+output. Synopsis:
+
+@example
+sort [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+@command{sort} has three modes of operation: sort (the default), merge,
+and check for sortedness. The following options change the operation
+mode:
+
+@table @samp
+
+@item -c
+@itemx --check
+@itemx --check=diagnose-first
+@opindex -c
+@opindex --check
+@cindex checking for sortedness
+Check whether the given file is already sorted: if it is not all
+sorted, print a diagnostic containing the first out-of-order line and
+exit with a status of 1.
+Otherwise, exit successfully.
+At most one input file can be given.
+
+@item -C
+@itemx --check=quiet
+@itemx --check=silent
+@opindex -c
+@opindex --check
+@cindex checking for sortedness
+Exit successfully if the given file is already sorted, and
+exit with status 1 otherwise.
+At most one input file can be given.
+This is like @option{-c}, except it does not print a diagnostic.
+
+@item -m
+@itemx --merge
+@opindex -m
+@opindex --merge
+@cindex merging sorted files
+Merge the given files by sorting them as a group. Each input file must
+always be individually sorted. It always works to sort instead of
+merge; merging is provided because it is faster, in the case where it
+works.
+
+@end table
+
+@cindex sort stability
+@cindex sort's last-resort comparison
+A pair of lines is compared as follows:
+@command{sort} compares each pair of fields, in the
+order specified on the command line, according to the associated
+ordering options, until a difference is found or no fields are left.
+If no key fields are specified, @command{sort} uses a default key of
+the entire line. Finally, as a last resort when all keys compare
+equal, @command{sort} compares entire lines as if no ordering options
+other than @option{--reverse} (@option{-r}) were specified. The
+@option{--stable} (@option{-s}) option disables this @dfn{last-resort
+comparison} so that lines in which all fields compare equal are left
+in their original relative order. The @option{--unique}
+(@option{-u}) option also disables the last-resort comparison.
+
+@vindex LC_ALL
+@vindex LC_COLLATE
+Unless otherwise specified, all comparisons use the character collating
+sequence specified by the @env{LC_COLLATE} locale.@footnote{If you
+use a non-@acronym{POSIX} locale (e.g., by setting @env{LC_ALL}
+to @samp{en_US}), then @command{sort} may produce output that is sorted
+differently than you're accustomed to. In that case, set the @env{LC_ALL}
+environment variable to @samp{C}. Note that setting only @env{LC_COLLATE}
+has two problems. First, it is ineffective if @env{LC_ALL} is also set.
+Second, it has undefined behavior if @env{LC_CTYPE} (or @env{LANG}, if
+@env{LC_CTYPE} is unset) is set to an incompatible value. For example,
+you get undefined behavior if @env{LC_CTYPE} is @code{ja_JP.PCK} but
+@env{LC_COLLATE} is @code{en_US.UTF-8}.}
+
+@sc{gnu} @command{sort} (as specified for all @sc{gnu} utilities) has no
+limit on input line length or restrictions on bytes allowed within lines.
+In addition, if the final byte of an input file is not a newline, @sc{gnu}
+@command{sort} silently supplies one. A line's trailing newline is not
+part of the line for comparison purposes.
+
+@cindex exit status of @command{sort}
+Exit status:
+
+@display
+0 if no error occurred
+1 if invoked with @option{-c} or @option{-C} and the input is not sorted
+2 if an error occurred
+@end display
+
+@vindex TMPDIR
+If the environment variable @env{TMPDIR} is set, @command{sort} uses its
+value as the directory for temporary files instead of @file{/tmp}. The
+@option{--temporary-directory} (@option{-T}) option in turn overrides
+the environment variable.
+
+The following options affect the ordering of output lines. They may be
+specified globally or as part of a specific key field. If no key
+fields are specified, global options apply to comparison of entire
+lines; otherwise the global options are inherited by key fields that do
+not specify any special options of their own. In pre-@acronym{POSIX}
+versions of @command{sort}, global options affect only later key fields,
+so portable shell scripts should specify global options first.
+
+@table @samp
+
+@item -b
+@itemx --ignore-leading-blanks
+@opindex -b
+@opindex --ignore-leading-blanks
+@cindex blanks, ignoring leading
+@vindex LC_CTYPE
+Ignore leading blanks when finding sort keys in each line.
+By default a blank is a space or a tab, but the @env{LC_CTYPE} locale
+can change this.
+
+@item -d
+@itemx --dictionary-order
+@opindex -d
+@opindex --dictionary-order
+@cindex dictionary order
+@cindex phone directory order
+@cindex telephone directory order
+@vindex LC_CTYPE
+Sort in @dfn{phone directory} order: ignore all characters except
+letters, digits and blanks when sorting.
+By default letters and digits are those of @acronym{ASCII} and a blank
+is a space or a tab, but the @env{LC_CTYPE} locale can change this.
+
+@item -f
+@itemx --ignore-case
+@opindex -f
+@opindex --ignore-case
+@cindex ignoring case
+@cindex case folding
+@vindex LC_CTYPE
+Fold lowercase characters into the equivalent uppercase characters when
+comparing so that, for example, @samp{b} and @samp{B} sort as equal.
+The @env{LC_CTYPE} locale determines character types.
+
+@item -g
+@itemx --general-numeric-sort
+@opindex -g
+@opindex --general-numeric-sort
+@cindex general numeric sort
+@vindex LC_NUMERIC
+Sort numerically, using the standard C function @code{strtod} to convert
+a prefix of each line to a double-precision floating point number.
+This allows floating point numbers to be specified in scientific notation,
+like @code{1.0e-34} and @code{10e100}.
+The @env{LC_NUMERIC} locale determines the decimal-point character.
+Do not report overflow, underflow, or conversion errors.
+Use the following collating sequence:
+
+@itemize @bullet
+@item
+Lines that do not start with numbers (all considered to be equal).
+@item
+NaNs (``Not a Number'' values, in IEEE floating point arithmetic)
+in a consistent but machine-dependent order.
+@item
+Minus infinity.
+@item
+Finite numbers in ascending numeric order (with @math{-0} and @math{+0} equal).
+@item
+Plus infinity.
+@end itemize
+
+Use this option only if there is no alternative; it is much slower than
+@option{--numeric-sort} (@option{-n}) and it can lose information when
+converting to floating point.
+
+@item -i
+@itemx --ignore-nonprinting
+@opindex -i
+@opindex --ignore-nonprinting
+@cindex nonprinting characters, ignoring
+@cindex unprintable characters, ignoring
+@vindex LC_CTYPE
+Ignore nonprinting characters.
+The @env{LC_CTYPE} locale determines character types.
+This option has no effect if the stronger @option{--dictionary-order}
+(@option{-d}) option is also given.
+
+@item -M
+@itemx --month-sort
+@opindex -M
+@opindex --month-sort
+@cindex months, sorting by
+@vindex LC_TIME
+An initial string, consisting of any amount of blanks, followed
+by a month name abbreviation, is folded to UPPER case and
+compared in the order @samp{JAN} < @samp{FEB} < @dots{} < @samp{DEC}.
+Invalid names compare low to valid names. The @env{LC_TIME} locale
+category determines the month spellings.
+By default a blank is a space or a tab, but the @env{LC_CTYPE} locale
+can change this.
+
+@item -n
+@itemx --numeric-sort
+@opindex -n
+@opindex --numeric-sort
+@cindex numeric sort
+@vindex LC_NUMERIC
+Sort numerically. The number begins each line and consists
+of optional blanks, an optional @samp{-} sign, and zero or more
+digits possibly separated by thousands separators, optionally followed
+by a decimal-point character and zero or more digits. An empty
+number is treated as @samp{0}. The @env{LC_NUMERIC}
+locale specifies the decimal-point character and thousands separator.
+By default a blank is a space or a tab, but the @env{LC_CTYPE} locale
+can change this.
+
+Comparison is exact; there is no rounding error.
+
+Neither a leading @samp{+} nor exponential notation is recognized.
+To compare such strings numerically, use the
+@option{--general-numeric-sort} (@option{-g}) option.
+
+@item -r
+@itemx --reverse
+@opindex -r
+@opindex --reverse
+@cindex reverse sorting
+Reverse the result of comparison, so that lines with greater key values
+appear earlier in the output instead of later.
+
+@item -R
+@itemx --random-sort
+@opindex -R
+@opindex --random-sort
+@cindex random sort
+Sort by hashing the input keys and then sorting the hash values.
+Choose the hash function at random, ensuring that it is free of
+collisions so that differing keys have differing hash values. This is
+like a random permutation of the inputs (@pxref{shuf invocation}),
+except that keys with the same value sort together.
+
+If multiple random sort fields are specified, the same random hash
+function is used for all fields. To use different random hash
+functions for different fields, you can invoke @command{sort} more
+than once.
+
+The choice of hash function is affected by the
+@option{--random-source} option.
+
+@end table
+
+Other options are:
+
+@table @samp
+
+@item --compress-program=@var{prog}
+Compress any temporary files with the program @var{prog}.
+
+With no arguments, @var{prog} must compress standard input to standard
+output, and when given the @option{-d} option it must decompress
+standard input to standard output.
+
+Terminate with an error if @var{prog} exits with nonzero status.
+
+Whitespace and the backslash character should not appear in
+@var{prog}; they are reserved for future use.
+
+@item -k @var{pos1}[,@var{pos2}]
+@itemx --key=@var{pos1}[,@var{pos2}]
+@opindex -k
+@opindex --key
+@cindex sort field
+Specify a sort field that consists of the part of the line between
+@var{pos1} and @var{pos2} (or the end of the line, if @var{pos2} is
+omitted), @emph{inclusive}.
+
+Each @var{pos} has the form @samp{@var{f}[.@var{c}][@var{opts}]},
+where @var{f} is the number of the field to use, and @var{c} is the number
+of the first character from the beginning of the field. Fields and character
+positions are numbered starting with 1; a character position of zero in
+@var{pos2} indicates the field's last character. If @samp{.@var{c}} is
+omitted from @var{pos1}, it defaults to 1 (the beginning of the field);
+if omitted from @var{pos2}, it defaults to 0 (the end of the field).
+@var{opts} are ordering options, allowing individual keys to be sorted
+according to different rules; see below for details. Keys can span
+multiple fields.
+
+Example: To sort on the second field, use @option{--key=2,2}
+(@option{-k 2,2}). See below for more examples.
+
+@item -o @var{output-file}
+@itemx --output=@var{output-file}
+@opindex -o
+@opindex --output
+@cindex overwriting of input, allowed
+Write output to @var{output-file} instead of standard output.
+Normally, @command{sort} reads all input before opening
+@var{output-file}, so you can safely sort a file in place by using
+commands like @code{sort -o F F} and @code{cat F | sort -o F}.
+However, @command{sort} with @option{--merge} (@option{-m}) can open
+the output file before reading all input, so a command like @code{cat
+F | sort -m -o F - G} is not safe as @command{sort} might start
+writing @file{F} before @command{cat} is done reading it.
+
+@vindex POSIXLY_CORRECT
+On newer systems, @option{-o} cannot appear after an input file if
+@env{POSIXLY_CORRECT} is set, e.g., @samp{sort F -o F}. Portable
+scripts should specify @option{-o @var{output-file}} before any input
+files.
+
+@item --random-source=@var{file}
+@opindex --random-source
+@cindex random source for sorting
+Use @var{file} as a source of random data used to determine which
+random hash function to use with the @option{-R} option. @xref{Random
+sources}.
+
+@item -s
+@itemx --stable
+@opindex -s
+@opindex --stable
+@cindex sort stability
+@cindex sort's last-resort comparison
+
+Make @command{sort} stable by disabling its last-resort comparison.
+This option has no effect if no fields or global ordering options
+other than @option{--reverse} (@option{-r}) are specified.
+
+@item -S @var{size}
+@itemx --buffer-size=@var{size}
+@opindex -S
+@opindex --buffer-size
+@cindex size for main memory sorting
+Use a main-memory sort buffer of the given @var{size}. By default,
+@var{size} is in units of 1024 bytes. Appending @samp{%} causes
+@var{size} to be interpreted as a percentage of physical memory.
+Appending @samp{K} multiplies @var{size} by 1024 (the default),
+@samp{M} by 1,048,576, @samp{G} by 1,073,741,824, and so on for
+@samp{T}, @samp{P}, @samp{E}, @samp{Z}, and @samp{Y}. Appending
+@samp{b} causes @var{size} to be interpreted as a byte count, with no
+multiplication.
+
+This option can improve the performance of @command{sort} by causing it
+to start with a larger or smaller sort buffer than the default.
+However, this option affects only the initial buffer size. The buffer
+grows beyond @var{size} if @command{sort} encounters input lines larger
+than @var{size}.
+
+@item -t @var{separator}
+@itemx --field-separator=@var{separator}
+@opindex -t
+@opindex --field-separator
+@cindex field separator character
+Use character @var{separator} as the field separator when finding the
+sort keys in each line. By default, fields are separated by the empty
+string between a non-blank character and a blank character.
+By default a blank is a space or a tab, but the @env{LC_CTYPE} locale
+can change this.
+
+That is, given the input line @w{@samp{ foo bar}}, @command{sort} breaks it
+into fields @w{@samp{ foo}} and @w{@samp{ bar}}. The field separator is
+not considered to be part of either the field preceding or the field
+following, so with @samp{sort @w{-t " "}} the same input line has
+three fields: an empty field, @samp{foo}, and @samp{bar}.
+However, fields that extend to the end of the line,
+as @option{-k 2}, or fields consisting of a range, as @option{-k 2,3},
+retain the field separators present between the endpoints of the range.
+
+To specify a null character (@acronym{ASCII} @sc{nul}) as
+the field separator, use the two-character string @samp{\0}, e.g.,
+@samp{sort -t '\0'}.
+
+@item -T @var{tempdir}
+@itemx --temporary-directory=@var{tempdir}
+@opindex -T
+@opindex --temporary-directory
+@cindex temporary directory
+@vindex TMPDIR
+Use directory @var{tempdir} to store temporary files, overriding the
+@env{TMPDIR} environment variable. If this option is given more than
+once, temporary files are stored in all the directories given. If you
+have a large sort or merge that is I/O-bound, you can often improve
+performance by using this option to specify directories on different
+disks and controllers.
+
+@item -u
+@itemx --unique
+@opindex -u
+@opindex --unique
+@cindex uniquifying output
+
+Normally, output only the first of a sequence of lines that compare
+equal. For the @option{--check} (@option{-c} or @option{-C}) option,
+check that no pair of consecutive lines compares equal.
+
+This option also disables the default last-resort comparison.
+
+The commands @code{sort -u} and @code{sort | uniq} are equivalent, but
+this equivalence does not extend to arbitrary @command{sort} options.
+For example, @code{sort -n -u} inspects only the value of the initial
+numeric string when checking for uniqueness, whereas @code{sort -n |
+uniq} inspects the entire line. @xref{uniq invocation}.
+
+@item -z
+@itemx --zero-terminated
+@opindex -z
+@opindex --zero-terminated
+@cindex sort zero-terminated lines
+Treat the input as a set of lines, each terminated by a null character
+(@acronym{ASCII} @sc{nul}) instead of a line feed
+(@acronym{ASCII} @sc{lf}).
+This option can be useful in conjunction with @samp{perl -0} or
+@samp{find -print0} and @samp{xargs -0} which do the same in order to
+reliably handle arbitrary file names (even those containing blanks
+or other special characters).
+
+@end table
+
+Historical (BSD and System V) implementations of @command{sort} have
+differed in their interpretation of some options, particularly
+@option{-b}, @option{-f}, and @option{-n}. @sc{gnu} sort follows the @acronym{POSIX}
+behavior, which is usually (but not always!) like the System V behavior.
+According to @acronym{POSIX}, @option{-n} no longer implies @option{-b}. For
+consistency, @option{-M} has been changed in the same way. This may
+affect the meaning of character positions in field specifications in
+obscure cases. The only fix is to add an explicit @option{-b}.
+
+A position in a sort field specified with @option{-k} may have any
+of the option letters @samp{Mbdfinr} appended to it, in which case the
+global ordering options are not used for that particular field. The
+@option{-b} option may be independently attached to either or both of
+the start and end positions of a field specification, and if it is
+inherited from the global options it will be attached to both.
+If input lines can contain leading or adjacent blanks and @option{-t}
+is not used, then @option{-k} is typically combined with @option{-b},
+@option{-g}, @option{-M}, or @option{-n}; otherwise the varying
+numbers of leading blanks in fields can cause confusing results.
+
+If the start position in a sort field specifier falls after the end of
+the line or after the end field, the field is empty. If the @option{-b}
+option was specified, the @samp{.@var{c}} part of a field specification
+is counted from the first nonblank character of the field.
+
+@vindex _POSIX2_VERSION
+@vindex POSIXLY_CORRECT
+On older systems, @command{sort} supports an obsolete origin-zero
+syntax @samp{+@var{pos1} [-@var{pos2}]} for specifying sort keys.
+This obsolete behavior can be enabled or disabled with the
+@env{_POSIX2_VERSION} environment variable (@pxref{Standards
+conformance}); it can also be enabled when @env{POSIXLY_CORRECT} is
+not set by using the obsolete syntax with @samp{-@var{pos2}} present.
+
+Scripts intended for use on standard hosts should avoid obsolete
+syntax and should use @option{-k} instead. For example, avoid
+@samp{sort +2}, since it might be interpreted as either @samp{sort
+./+2} or @samp{sort -k 3}. If your script must also run on hosts that
+support only the obsolete syntax, it can use a test like @samp{if sort
+-k 1 </dev/null >/dev/null 2>&1; then @dots{}} to decide which syntax
+to use.
+
+Here are some examples to illustrate various combinations of options.
+
+@itemize @bullet
+
+@item
+Sort in descending (reverse) numeric order.
+
+@example
+sort -n -r
+@end example
+
+@item
+Sort alphabetically, omitting the first and second fields
+and the blanks at the start of the third field.
+This uses a single key composed of the characters beginning
+at the start of the first nonblank character in field three
+and extending to the end of each line.
+
+@example
+sort -k 3b
+@end example
+
+@item
+Sort numerically on the second field and resolve ties by sorting
+alphabetically on the third and fourth characters of field five.
+Use @samp{:} as the field delimiter.
+
+@example
+sort -t : -k 2,2n -k 5.3,5.4
+@end example
+
+Note that if you had written @option{-k 2n} instead of @option{-k 2,2n}
+@command{sort} would have used all characters beginning in the second field
+and extending to the end of the line as the primary @emph{numeric}
+key. For the large majority of applications, treating keys spanning
+more than one field as numeric will not do what you expect.
+
+Also note that the @samp{n} modifier was applied to the field-end
+specifier for the first key. It would have been equivalent to
+specify @option{-k 2n,2} or @option{-k 2n,2n}. All modifiers except
+@samp{b} apply to the associated @emph{field}, regardless of whether
+the modifier character is attached to the field-start and/or the
+field-end part of the key specifier.
+
+@item
+Sort the password file on the fifth field and ignore any
+leading blanks. Sort lines with equal values in field five
+on the numeric user ID in field three. Fields are separated
+by @samp{:}.
+
+@example
+sort -t : -k 5b,5 -k 3,3n /etc/passwd
+sort -t : -n -k 5b,5 -k 3,3 /etc/passwd
+sort -t : -b -k 5,5 -k 3,3n /etc/passwd
+@end example
+
+These three commands have equivalent effect. The first specifies that
+the first key's start position ignores leading blanks and the second
+key is sorted numerically. The other two commands rely on global
+options being inherited by sort keys that lack modifiers. The inheritance
+works in this case because @option{-k 5b,5b} and @option{-k 5b,5} are
+equivalent, as the location of a field-end lacking a @samp{.@var{c}}
+character position is not affected by whether initial blanks are
+skipped.
+
+@item
+Sort a set of log files, primarily by IPv4 address and secondarily by
+time stamp. If two lines' primary and secondary keys are identical,
+output the lines in the same order that they were input. The log
+files contain lines that look like this:
+
+@example
+4.150.156.3 - - [01/Apr/2004:06:31:51 +0000] message 1
+211.24.3.231 - - [24/Apr/2004:20:17:39 +0000] message 2
+@end example
+
+Fields are separated by exactly one space. Sort IPv4 addresses
+lexicographically, e.g., 212.61.52.2 sorts before 212.129.233.201
+because 61 is less than 129.
+
+@example
+sort -s -t ' ' -k 4.9n -k 4.5M -k 4.2n -k 4.14,4.21 file*.log |
+sort -s -t '.' -k 1,1n -k 2,2n -k 3,3n -k 4,4n
+@end example
+
+This example cannot be done with a single @command{sort} invocation,
+since IPv4 address components are separated by @samp{.} while dates
+come just after a space. So it is broken down into two invocations of
+@command{sort}: the first sorts by time stamp and the second by IPv4
+address. The time stamp is sorted by year, then month, then day, and
+finally by hour-minute-second field, using @option{-k} to isolate each
+field. Except for hour-minute-second there's no need to specify the
+end of each key field, since the @samp{n} and @samp{M} modifiers sort
+based on leading prefixes that cannot cross field boundaries. The
+IPv4 addresses are sorted lexicographically. The second sort uses
+@samp{-s} so that ties in the primary key are broken by the secondary
+key; the first sort uses @samp{-s} so that the combination of the two
+sorts is stable.
+
+@item
+Generate a tags file in case-insensitive sorted order.
+
+@smallexample
+find src -type f -print0 | sort -z -f | xargs -0 etags --append
+@end smallexample
+
+The use of @option{-print0}, @option{-z}, and @option{-0} in this case means
+that file names that contain blanks or other special characters are
+not broken up
+by the sort operation.
+
+@c This example is a bit contrived and needs more explanation.
+@c @item
+@c Sort records separated by an arbitrary string by using a pipe to convert
+@c each record delimiter string to @samp{\0}, then using sort's -z option,
+@c and converting each @samp{\0} back to the original record delimiter.
+@c
+@c @example
+@c printf 'c\n\nb\n\na\n'|perl -0pe 's/\n\n/\n\0/g'|sort -z|perl -0pe 's/\0/\n/g'
+@c @end example
+
+@item
+Shuffle a list of directories, but preserve the order of files within
+each directory. For instance, one could use this to generate a music
+playlist in which albums are shuffled but the songs of each album are
+played in order.
+
+@example
+ls */* | sort -t / -k 1,1R -k 2,2
+@end example
+
+@end itemize
+
+
+@node shuf invocation
+@section @command{shuf}: Shuffling text
+
+@pindex shuf
+@cindex shuffling files
+
+@command{shuf} shuffles its input by outputting a random permutation
+of its input lines. Each output permutation is equally likely.
+Synopses:
+
+@example
+shuf [@var{option}]@dots{} [@var{file}]
+shuf -e [@var{option}]@dots{} [@var{arg}]@dots{}
+shuf -i @var{lo}-@var{hi} [@var{option}]@dots{}
+@end example
+
+@command{shuf} has three modes of operation that affect where it
+obtains its input lines. By default, it reads lines from standard
+input. The following options change the operation mode:
+
+@table @samp
+
+@item -e
+@itemx --echo
+@opindex -c
+@opindex --echo
+@cindex command-line operands to shuffle
+Treat each command-line operand as an input line.
+
+@item -i @var{lo}-@var{hi}
+@itemx --input-range=@var{lo}-@var{hi}
+@opindex -i
+@opindex --input-range
+@cindex input range to shuffle
+Act as if input came from a file containing the range of unsigned
+decimal integers @var{lo}@dots{}@var{hi}, one per line.
+
+@end table
+
+@command{shuf}'s other options can affect its behavior in all
+operation modes:
+
+@table @samp
+
+@item -n @var{lines}
+@itemx --head-lines=@var{lines}
+@opindex -n
+@opindex --head-lines
+@cindex head of output
+Output at most @var{lines} lines. By default, all input lines are
+output.
+
+@item -o @var{output-file}
+@itemx --output=@var{output-file}
+@opindex -o
+@opindex --output
+@cindex overwriting of input, allowed
+Write output to @var{output-file} instead of standard output.
+@command{shuf} reads all input before opening
+@var{output-file}, so you can safely shuffle a file in place by using
+commands like @code{shuf -o F <F} and @code{cat F | shuf -o F}.
+
+@item --random-source=@var{file}
+@opindex --random-source
+@cindex random source for shuffling
+Use @var{file} as a source of random data used to determine which
+permutation to generate. @xref{Random sources}.
+
+@item -z
+@itemx --zero-terminated
+@opindex -z
+@opindex --zero-terminated
+@cindex sort zero-terminated lines
+Treat the input and output as a set of lines, each terminated by a zero byte
+(@acronym{ASCII} @sc{nul} (Null) character) instead of an
+@acronym{ASCII} @sc{lf} (Line Feed).
+This option can be useful in conjunction with @samp{perl -0} or
+@samp{find -print0} and @samp{xargs -0} which do the same in order to
+reliably handle arbitrary file names (even those containing blanks
+or other special characters).
+
+@end table
+
+For example:
+
+@example
+shuf <<EOF
+A man,
+a plan,
+a canal:
+Panama!
+EOF
+@end example
+
+@noindent
+might produce the output
+
+@example
+Panama!
+A man,
+a canal:
+a plan,
+@end example
+
+@noindent
+Similarly, the command:
+
+@example
+shuf -e clubs hearts diamonds spades
+@end example
+
+@noindent
+might output:
+
+@example
+clubs
+diamonds
+spades
+hearts
+@end example
+
+@noindent
+and the command @samp{shuf -i 1-4} might output:
+
+@example
+4
+2
+1
+3
+@end example
+
+@noindent
+These examples all have four input lines, so @command{shuf} might
+produce any of the twenty-four possible permutations of the input. In
+general, if there are @var{N} input lines, there are @var{N}! (i.e.,
+@var{N} factorial, or @var{N} * (@var{N} - 1) * @dots{} * 1) possible
+output permutations.
+
+@exitstatus
+
+
+@node uniq invocation
+@section @command{uniq}: Uniquify files
+
+@pindex uniq
+@cindex uniquify files
+
+@command{uniq} writes the unique lines in the given @file{input}, or
+standard input if nothing is given or for an @var{input} name of
+@samp{-}. Synopsis:
+
+@example
+uniq [@var{option}]@dots{} [@var{input} [@var{output}]]
+@end example
+
+By default, @command{uniq} prints its input lines, except that
+it discards all but the first of adjacent repeated lines, so that
+no output lines are repeated. Optionally, it can instead discard
+lines that are not repeated, or all repeated lines.
+
+The input need not be sorted, but repeated input lines are detected
+only if they are adjacent. If you want to discard non-adjacent
+duplicate lines, perhaps you want to use @code{sort -u}.
+@xref{sort invocation}.
+
+@vindex LC_COLLATE
+Comparisons use the character collating sequence specified by the
+@env{LC_COLLATE} locale category.
+
+If no @var{output} file is specified, @command{uniq} writes to standard
+output.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -f @var{n}
+@itemx --skip-fields=@var{n}
+@opindex -f
+@opindex --skip-fields
+Skip @var{n} fields on each line before checking for uniqueness. Use
+a null string for comparison if a line has fewer than @var{n} fields. Fields
+are sequences of non-space non-tab characters that are separated from
+each other by at least one space or tab.
+
+For compatibility @command{uniq} supports an obsolete option syntax
+@option{-@var{n}}. New scripts should use @option{-f @var{n}} instead.
+
+@item -s @var{n}
+@itemx --skip-chars=@var{n}
+@opindex -s
+@opindex --skip-chars
+Skip @var{n} characters before checking for uniqueness. Use a null string
+for comparison if a line has fewer than @var{n} characters. If you use both
+the field and character skipping options, fields are skipped over first.
+
+@vindex _POSIX2_VERSION
+On older systems, @command{uniq} supports an obsolete option syntax
+@option{+@var{n}}.
+This obsolete behavior can be enabled or disabled with the
+@env{_POSIX2_VERSION} environment variable (@pxref{Standards
+conformance}), but portable scripts should avoid commands whose
+behavior depends on this variable.
+For example, use @samp{uniq ./+10} or @samp{uniq -s 10} rather than
+the ambiguous @samp{uniq +10}.
+
+@item -c
+@itemx --count
+@opindex -c
+@opindex --count
+Print the number of times each line occurred along with the line.
+
+@item -i
+@itemx --ignore-case
+@opindex -i
+@opindex --ignore-case
+Ignore differences in case when comparing lines.
+
+@item -d
+@itemx --repeated
+@opindex -d
+@opindex --repeated
+@cindex repeated lines, outputting
+Discard lines that are not repeated. When used by itself, this option
+causes @command{uniq} to print the first copy of each repeated line,
+and nothing else.
+
+@item -D
+@itemx --all-repeated[=@var{delimit-method}]
+@opindex -D
+@opindex --all-repeated
+@cindex all repeated lines, outputting
+Do not discard the second and subsequent repeated input lines,
+but discard lines that are not repeated.
+This option is useful mainly in conjunction with other options e.g.,
+to ignore case or to compare only selected fields.
+The optional @var{delimit-method} tells how to delimit
+groups of repeated lines, and must be one of the following:
+
+@table @samp
+
+@item none
+Do not delimit groups of repeated lines.
+This is equivalent to @option{--all-repeated} (@option{-D}).
+
+@item prepend
+Output a newline before each group of repeated lines.
+
+@item separate
+Separate groups of repeated lines with a single newline.
+This is the same as using @samp{prepend}, except that
+there is no newline before the first group, and hence
+may be better suited for output direct to users.
+@end table
+
+Note that when groups are delimited and the input stream contains
+two or more consecutive blank lines, then the output is ambiguous.
+To avoid that, filter the input through @samp{tr -s '\n'} to replace
+each sequence of consecutive newlines with a single newline.
+
+This is a @sc{gnu} extension.
+@c FIXME: give an example showing *how* it's useful
+
+@item -u
+@itemx --unique
+@opindex -u
+@opindex --unique
+@cindex unique lines, outputting
+Discard the first repeated line. When used by itself, this option
+causes @command{uniq} to print unique lines, and nothing else.
+
+@item -w @var{n}
+@itemx --check-chars=@var{n}
+@opindex -w
+@opindex --check-chars
+Compare at most @var{n} characters on each line (after skipping any specified
+fields and characters). By default the entire rest of the lines are
+compared.
+
+@end table
+
+@exitstatus
+
+
+@node comm invocation
+@section @command{comm}: Compare two sorted files line by line
+
+@pindex comm
+@cindex line-by-line comparison
+@cindex comparing sorted files
+
+@command{comm} writes to standard output lines that are common, and lines
+that are unique, to two input files; a file name of @samp{-} means
+standard input. Synopsis:
+
+@example
+comm [@var{option}]@dots{} @var{file1} @var{file2}
+@end example
+
+@vindex LC_COLLATE
+Before @command{comm} can be used, the input files must be sorted using the
+collating sequence specified by the @env{LC_COLLATE} locale.
+If an input file ends in a non-newline
+character, a newline is silently appended. The @command{sort} command with
+no options always outputs a file that is suitable input to @command{comm}.
+
+@cindex differing lines
+@cindex common lines
+With no options, @command{comm} produces three-column output. Column one
+contains lines unique to @var{file1}, column two contains lines unique
+to @var{file2}, and column three contains lines common to both files.
+Columns are separated by a single TAB character.
+@c FIXME: when there's an option to supply an alternative separator
+@c string, append `by default' to the above sentence.
+
+@opindex -1
+@opindex -2
+@opindex -3
+The options @option{-1}, @option{-2}, and @option{-3} suppress printing of
+the corresponding columns. Also see @ref{Common options}.
+
+Unlike some other comparison utilities, @command{comm} has an exit
+status that does not depend on the result of the comparison.
+Upon normal completion @command{comm} produces an exit code of zero.
+If there is an error it exits with nonzero status.
+
+
+@node tsort invocation
+@section @command{tsort}: Topological sort
+
+@pindex tsort
+@cindex topological sort
+
+@command{tsort} performs a topological sort on the given @var{file}, or
+standard input if no input file is given or for a @var{file} of
+@samp{-}. For more details and some history, see @ref{tsort background}.
+Synopsis:
+
+@example
+tsort [@var{option}] [@var{file}]
+@end example
+
+@command{tsort} reads its input as pairs of strings, separated by blanks,
+indicating a partial ordering. The output is a total ordering that
+corresponds to the given partial ordering.
+
+For example
+
+@example
+tsort <<EOF
+a b c
+d
+e f
+b c d e
+EOF
+@end example
+
+@noindent
+will produce the output
+
+@example
+a
+b
+c
+d
+e
+f
+@end example
+
+Consider a more realistic example.
+You have a large set of functions all in one file, and they may all be
+declared static except one. Currently that one (say @code{main}) is the
+first function defined in the file, and the ones it calls directly follow
+it, followed by those they call, etc. Let's say that you are determined
+to take advantage of prototypes, so you have to choose between declaring
+all of those functions (which means duplicating a lot of information from
+the definitions) and rearranging the functions so that as many as possible
+are defined before they are used. One way to automate the latter process
+is to get a list for each function of the functions it calls directly.
+Many programs can generate such lists. They describe a call graph.
+Consider the following list, in which a given line indicates that the
+function on the left calls the one on the right directly.
+
+@example
+main parse_options
+main tail_file
+main tail_forever
+tail_file pretty_name
+tail_file write_header
+tail_file tail
+tail_forever recheck
+tail_forever pretty_name
+tail_forever write_header
+tail_forever dump_remainder
+tail tail_lines
+tail tail_bytes
+tail_lines start_lines
+tail_lines dump_remainder
+tail_lines file_lines
+tail_lines pipe_lines
+tail_bytes xlseek
+tail_bytes start_bytes
+tail_bytes dump_remainder
+tail_bytes pipe_bytes
+file_lines dump_remainder
+recheck pretty_name
+@end example
+
+then you can use @command{tsort} to produce an ordering of those
+functions that satisfies your requirement.
+
+@example
+example$ tsort call-graph | tac
+dump_remainder
+start_lines
+file_lines
+pipe_lines
+xlseek
+start_bytes
+pipe_bytes
+tail_lines
+tail_bytes
+pretty_name
+write_header
+tail
+recheck
+parse_options
+tail_file
+tail_forever
+main
+@end example
+
+@command{tsort} detects any cycles in the input and writes the first cycle
+encountered to standard error.
+
+Note that for a given partial ordering, generally there is no unique
+total ordering. In the context of the call graph above, the function
+@code{parse_options} may be placed anywhere in the list as long as it
+precedes @code{main}.
+
+The only options are @option{--help} and @option{--version}. @xref{Common
+options}.
+
+@node tsort background
+@section @command{tsort}: Background
+
+@command{tsort} exists because very early versions of the Unix linker processed
+an archive file exactly once, and in order. As @command{ld} read each object
+in the archive, it decided whether it was needed in the program based on
+whether it defined any symbols which were undefined at that point in
+the link.
+
+This meant that dependencies within the archive had to be handled
+specially. For example, @code{scanf} probably calls @code{read}. That means
+that in a single pass through an archive, it was important for @code{scanf.o}
+to appear before read.o, because otherwise a program which calls
+@code{scanf} but not @code{read} might end up with an unexpected unresolved
+reference to @code{read}.
+
+The way to address this problem was to first generate a set of
+dependencies of one object file on another. This was done by a shell
+script called @command{lorder}. The GNU tools don't provide a version of
+lorder, as far as I know, but you can still find it in BSD
+distributions.
+
+Then you ran @command{tsort} over the @command{lorder} output, and you used the
+resulting sort to define the order in which you added objects to the archive.
+
+This whole procedure has been obsolete since about 1980, because
+Unix archives now contain a symbol table (traditionally built by
+@command{ranlib}, now generally built by @command{ar} itself), and the Unix
+linker uses the symbol table to effectively make multiple passes over
+an archive file.
+
+Anyhow, that's where tsort came from. To solve an old problem with
+the way the linker handled archive files, which has since been solved
+in different ways.
+
+@exitstatus
+
+
+@node ptx invocation
+@section @command{ptx}: Produce permuted indexes
+
+@pindex ptx
+
+@command{ptx} reads a text file and essentially produces a permuted index, with
+each keyword in its context. The calling sketch is either one of:
+
+@example
+ptx [@var{option} @dots{}] [@var{file} @dots{}]
+ptx -G [@var{option} @dots{}] [@var{input} [@var{output}]]
+@end example
+
+The @option{-G} (or its equivalent: @option{--traditional}) option disables
+all @sc{gnu} extensions and reverts to traditional mode, thus introducing some
+limitations and changing several of the program's default option values.
+When @option{-G} is not specified, @sc{gnu} extensions are always enabled.
+@sc{gnu} extensions to @command{ptx} are documented wherever appropriate in this
+document. For the full list, see @xref{Compatibility in ptx}.
+
+Individual options are explained in the following sections.
+
+When @sc{gnu} extensions are enabled, there may be zero, one or several
+@var{file}s after the options. If there is no @var{file}, the program
+reads the standard input. If there is one or several @var{file}s, they
+give the name of input files which are all read in turn, as if all the
+input files were concatenated. However, there is a full contextual
+break between each file and, when automatic referencing is requested,
+file names and line numbers refer to individual text input files. In
+all cases, the program outputs the permuted index to the standard
+output.
+
+When @sc{gnu} extensions are @emph{not} enabled, that is, when the program
+operates in traditional mode, there may be zero, one or two parameters
+besides the options. If there are no parameters, the program reads the
+standard input and outputs the permuted index to the standard output.
+If there is only one parameter, it names the text @var{input} to be read
+instead of the standard input. If two parameters are given, they give
+respectively the name of the @var{input} file to read and the name of
+the @var{output} file to produce. @emph{Be very careful} to note that,
+in this case, the contents of file given by the second parameter is
+destroyed. This behavior is dictated by System V @command{ptx}
+compatibility; @sc{gnu} Standards normally discourage output parameters not
+introduced by an option.
+
+Note that for @emph{any} file named as the value of an option or as an
+input text file, a single dash @kbd{-} may be used, in which case
+standard input is assumed. However, it would not make sense to use this
+convention more than once per program invocation.
+
+@menu
+* General options in ptx:: Options which affect general program behavior.
+* Charset selection in ptx:: Underlying character set considerations.
+* Input processing in ptx:: Input fields, contexts, and keyword selection.
+* Output formatting in ptx:: Types of output format, and sizing the fields.
+* Compatibility in ptx::
+@end menu
+
+
+@node General options in ptx
+@subsection General options
+
+@table @samp
+
+@item -G
+@itemx --traditional
+As already explained, this option disables all @sc{gnu} extensions to
+@command{ptx} and switches to traditional mode.
+
+@item --help
+Print a short help on standard output, then exit without further
+processing.
+
+@item --version
+Print the program version on standard output, then exit without further
+processing.
+
+@end table
+
+@exitstatus
+
+
+@node Charset selection in ptx
+@subsection Charset selection
+
+@c FIXME: People don't necessarily know what an IBM-PC was these days.
+As it is set up now, the program assumes that the input file is coded
+using 8-bit @acronym{ISO} 8859-1 code, also known as Latin-1 character set,
+@emph{unless} it is compiled for MS-DOS, in which case it uses the
+character set of the IBM-PC@. (@sc{gnu} @command{ptx} is not known to work on
+smaller MS-DOS machines anymore.) Compared to 7-bit @acronym{ASCII}, the set
+of characters which are letters is different; this alters the behavior
+of regular expression matching. Thus, the default regular expression
+for a keyword allows foreign or diacriticized letters. Keyword sorting,
+however, is still crude; it obeys the underlying character set ordering
+quite blindly.
+
+@table @samp
+
+@item -f
+@itemx --ignore-case
+Fold lower case letters to upper case for sorting.
+
+@end table
+
+
+@node Input processing in ptx
+@subsection Word selection and input processing
+
+@table @samp
+
+@item -b @var{file}
+@itemx --break-file=@var{file}
+
+This option provides an alternative (to @option{-W}) method of describing
+which characters make up words. It introduces the name of a
+file which contains a list of characters which can@emph{not} be part of
+one word; this file is called the @dfn{Break file}. Any character which
+is not part of the Break file is a word constituent. If both options
+@option{-b} and @option{-W} are specified, then @option{-W} has precedence and
+@option{-b} is ignored.
+
+When @sc{gnu} extensions are enabled, the only way to avoid newline as a
+break character is to write all the break characters in the file with no
+newline at all, not even at the end of the file. When @sc{gnu} extensions
+are disabled, spaces, tabs and newlines are always considered as break
+characters even if not included in the Break file.
+
+@item -i @var{file}
+@itemx --ignore-file=@var{file}
+
+The file associated with this option contains a list of words which will
+never be taken as keywords in concordance output. It is called the
+@dfn{Ignore file}. The file contains exactly one word in each line; the
+end of line separation of words is not subject to the value of the
+@option{-S} option.
+
+@item -o @var{file}
+@itemx --only-file=@var{file}
+
+The file associated with this option contains a list of words which will
+be retained in concordance output; any word not mentioned in this file
+is ignored. The file is called the @dfn{Only file}. The file contains
+exactly one word in each line; the end of line separation of words is
+not subject to the value of the @option{-S} option.
+
+There is no default for the Only file. When both an Only file and an
+Ignore file are specified, a word is considered a keyword only
+if it is listed in the Only file and not in the Ignore file.
+
+@item -r
+@itemx --references
+
+On each input line, the leading sequence of non-white space characters will be
+taken to be a reference that has the purpose of identifying this input
+line in the resulting permuted index. For more information about reference
+production, see @xref{Output formatting in ptx}.
+Using this option changes the default value for option @option{-S}.
+
+Using this option, the program does not try very hard to remove
+references from contexts in output, but it succeeds in doing so
+@emph{when} the context ends exactly at the newline. If option
+@option{-r} is used with @option{-S} default value, or when @sc{gnu} extensions
+are disabled, this condition is always met and references are completely
+excluded from the output contexts.
+
+@item -S @var{regexp}
+@itemx --sentence-regexp=@var{regexp}
+
+This option selects which regular expression will describe the end of a
+line or the end of a sentence. In fact, this regular expression is not
+the only distinction between end of lines or end of sentences, and input
+line boundaries have no special significance outside this option. By
+default, when @sc{gnu} extensions are enabled and if @option{-r} option is not
+used, end of sentences are used. In this case, this @var{regex} is
+imported from @sc{gnu} Emacs:
+
+@example
+[.?!][]\"')@}]*\\($\\|\t\\| \\)[ \t\n]*
+@end example
+
+Whenever @sc{gnu} extensions are disabled or if @option{-r} option is used, end
+of lines are used; in this case, the default @var{regexp} is just:
+
+@example
+\n
+@end example
+
+Using an empty @var{regexp} is equivalent to completely disabling end of
+line or end of sentence recognition. In this case, the whole file is
+considered to be a single big line or sentence. The user might want to
+disallow all truncation flag generation as well, through option @option{-F
+""}. @xref{Regexps, , Syntax of Regular Expressions, emacs, The GNU Emacs
+Manual}.
+
+When the keywords happen to be near the beginning of the input line or
+sentence, this often creates an unused area at the beginning of the
+output context line; when the keywords happen to be near the end of the
+input line or sentence, this often creates an unused area at the end of
+the output context line. The program tries to fill those unused areas
+by wrapping around context in them; the tail of the input line or
+sentence is used to fill the unused area on the left of the output line;
+the head of the input line or sentence is used to fill the unused area
+on the right of the output line.
+
+As a matter of convenience to the user, many usual backslashed escape
+sequences from the C language are recognized and converted to the
+corresponding characters by @command{ptx} itself.
+
+@item -W @var{regexp}
+@itemx --word-regexp=@var{regexp}
+
+This option selects which regular expression will describe each keyword.
+By default, if @sc{gnu} extensions are enabled, a word is a sequence of
+letters; the @var{regexp} used is @samp{\w+}. When @sc{gnu} extensions are
+disabled, a word is by default anything which ends with a space, a tab
+or a newline; the @var{regexp} used is @samp{[^ \t\n]+}.
+
+An empty @var{regexp} is equivalent to not using this option.
+@xref{Regexps, , Syntax of Regular Expressions, emacs, The GNU Emacs
+Manual}.
+
+As a matter of convenience to the user, many usual backslashed escape
+sequences, as found in the C language, are recognized and converted to
+the corresponding characters by @command{ptx} itself.
+
+@end table
+
+
+@node Output formatting in ptx
+@subsection Output formatting
+
+Output format is mainly controlled by the @option{-O} and @option{-T} options
+described in the table below. When neither @option{-O} nor @option{-T} are
+selected, and if @sc{gnu} extensions are enabled, the program chooses an
+output format suitable for a dumb terminal. Each keyword occurrence is
+output to the center of one line, surrounded by its left and right
+contexts. Each field is properly justified, so the concordance output
+can be readily observed. As a special feature, if automatic
+references are selected by option @option{-A} and are output before the
+left context, that is, if option @option{-R} is @emph{not} selected, then
+a colon is added after the reference; this nicely interfaces with @sc{gnu}
+Emacs @code{next-error} processing. In this default output format, each
+white space character, like newline and tab, is merely changed to
+exactly one space, with no special attempt to compress consecutive
+spaces. This might change in the future. Except for those white space
+characters, every other character of the underlying set of 256
+characters is transmitted verbatim.
+
+Output format is further controlled by the following options.
+
+@table @samp
+
+@item -g @var{number}
+@itemx --gap-size=@var{number}
+
+Select the size of the minimum white space gap between the fields on the
+output line.
+
+@item -w @var{number}
+@itemx --width=@var{number}
+
+Select the maximum output width of each final line. If references are
+used, they are included or excluded from the maximum output width
+depending on the value of option @option{-R}. If this option is not
+selected, that is, when references are output before the left context,
+the maximum output width takes into account the maximum length of all
+references. If this option is selected, that is, when references are
+output after the right context, the maximum output width does not take
+into account the space taken by references, nor the gap that precedes
+them.
+
+@item -A
+@itemx --auto-reference
+
+Select automatic references. Each input line will have an automatic
+reference made up of the file name and the line ordinal, with a single
+colon between them. However, the file name will be empty when standard
+input is being read. If both @option{-A} and @option{-r} are selected, then
+the input reference is still read and skipped, but the automatic
+reference is used at output time, overriding the input reference.
+
+@item -R
+@itemx --right-side-refs
+
+In the default output format, when option @option{-R} is not used, any
+references produced by the effect of options @option{-r} or @option{-A} are
+placed to the far right of output lines, after the right context. With
+default output format, when the @option{-R} option is specified, references
+are rather placed at the beginning of each output line, before the left
+context. For any other output format, option @option{-R} is
+ignored, with one exception: with @option{-R} the width of references
+is @emph{not} taken into account in total output width given by @option{-w}.
+
+This option is automatically selected whenever @sc{gnu} extensions are
+disabled.
+
+@item -F @var{string}
+@itemx --flac-truncation=@var{string}
+
+This option will request that any truncation in the output be reported
+using the string @var{string}. Most output fields theoretically extend
+towards the beginning or the end of the current line, or current
+sentence, as selected with option @option{-S}. But there is a maximum
+allowed output line width, changeable through option @option{-w}, which is
+further divided into space for various output fields. When a field has
+to be truncated because it cannot extend beyond the beginning or the end of
+the current line to fit in, then a truncation occurs. By default,
+the string used is a single slash, as in @option{-F /}.
+
+@var{string} may have more than one character, as in @option{-F ...}.
+Also, in the particular case when @var{string} is empty (@option{-F ""}),
+truncation flagging is disabled, and no truncation marks are appended in
+this case.
+
+As a matter of convenience to the user, many usual backslashed escape
+sequences, as found in the C language, are recognized and converted to
+the corresponding characters by @command{ptx} itself.
+
+@item -M @var{string}
+@itemx --macro-name=@var{string}
+
+Select another @var{string} to be used instead of @samp{xx}, while
+generating output suitable for @command{nroff}, @command{troff} or @TeX{}.
+
+@item -O
+@itemx --format=roff
+
+Choose an output format suitable for @command{nroff} or @command{troff}
+processing. Each output line will look like:
+
+@smallexample
+.xx "@var{tail}" "@var{before}" "@var{keyword_and_after}" "@var{head}" "@var{ref}"
+@end smallexample
+
+so it will be possible to write a @samp{.xx} roff macro to take care of
+the output typesetting. This is the default output format when @sc{gnu}
+extensions are disabled. Option @option{-M} can be used to change
+@samp{xx} to another macro name.
+
+In this output format, each non-graphical character, like newline and
+tab, is merely changed to exactly one space, with no special attempt to
+compress consecutive spaces. Each quote character: @kbd{"} is doubled
+so it will be correctly processed by @command{nroff} or @command{troff}.
+
+@item -T
+@itemx --format=tex
+
+Choose an output format suitable for @TeX{} processing. Each output
+line will look like:
+
+@smallexample
+\xx @{@var{tail}@}@{@var{before}@}@{@var{keyword}@}@{@var{after}@}@{@var{head}@}@{@var{ref}@}
+@end smallexample
+
+@noindent
+so it will be possible to write a @code{\xx} definition to take care of
+the output typesetting. Note that when references are not being
+produced, that is, neither option @option{-A} nor option @option{-r} is
+selected, the last parameter of each @code{\xx} call is inhibited.
+Option @option{-M} can be used to change @samp{xx} to another macro
+name.
+
+In this output format, some special characters, like @kbd{$}, @kbd{%},
+@kbd{&}, @kbd{#} and @kbd{_} are automatically protected with a
+backslash. Curly brackets @kbd{@{}, @kbd{@}} are protected with a
+backslash and a pair of dollar signs (to force mathematical mode). The
+backslash itself produces the sequence @code{\backslash@{@}}.
+Circumflex and tilde diacritical marks produce the sequence @code{^\@{ @}} and
+@code{~\@{ @}} respectively. Other diacriticized characters of the
+underlying character set produce an appropriate @TeX{} sequence as far
+as possible. The other non-graphical characters, like newline and tab,
+and all other characters which are not part of @acronym{ASCII}, are merely
+changed to exactly one space, with no special attempt to compress
+consecutive spaces. Let me know how to improve this special character
+processing for @TeX{}.
+
+@end table
+
+
+@node Compatibility in ptx
+@subsection The @sc{gnu} extensions to @command{ptx}
+
+This version of @command{ptx} contains a few features which do not exist in
+System V @command{ptx}. These extra features are suppressed by using the
+@option{-G} command line option, unless overridden by other command line
+options. Some @sc{gnu} extensions cannot be recovered by overriding, so the
+simple rule is to avoid @option{-G} if you care about @sc{gnu} extensions.
+Here are the differences between this program and System V @command{ptx}.
+
+@itemize @bullet
+
+@item
+This program can read many input files at once, it always writes the
+resulting concordance on standard output. On the other hand, System V
+@command{ptx} reads only one file and sends the result to standard output
+or, if a second @var{file} parameter is given on the command, to that
+@var{file}.
+
+Having output parameters not introduced by options is a dangerous
+practice which @sc{gnu} avoids as far as possible. So, for using @command{ptx}
+portably between @sc{gnu} and System V, you should always use it with a
+single input file, and always expect the result on standard output. You
+might also want to automatically configure in a @option{-G} option to
+@command{ptx} calls in products using @command{ptx}, if the configurator finds
+that the installed @command{ptx} accepts @option{-G}.
+
+@item
+The only options available in System V @command{ptx} are options @option{-b},
+@option{-f}, @option{-g}, @option{-i}, @option{-o}, @option{-r}, @option{-t} and
+@option{-w}. All other options are @sc{gnu} extensions and are not repeated in
+this enumeration. Moreover, some options have a slightly different
+meaning when @sc{gnu} extensions are enabled, as explained below.
+
+@item
+By default, concordance output is not formatted for @command{troff} or
+@command{nroff}. It is rather formatted for a dumb terminal. @command{troff}
+or @command{nroff} output may still be selected through option @option{-O}.
+
+@item
+Unless @option{-R} option is used, the maximum reference width is
+subtracted from the total output line width. With @sc{gnu} extensions
+disabled, width of references is not taken into account in the output
+line width computations.
+
+@item
+All 256 bytes, even null bytes, are always read and processed from
+input file with no adverse effect, even if @sc{gnu} extensions are disabled.
+However, System V @command{ptx} does not accept 8-bit characters, a few
+control characters are rejected, and the tilde @kbd{~} is also rejected.
+
+@item
+Input line length is only limited by available memory, even if @sc{gnu}
+extensions are disabled. However, System V @command{ptx} processes only
+the first 200 characters in each line.
+
+@item
+The break (non-word) characters default to be every character except all
+letters of the underlying character set, diacriticized or not. When @sc{gnu}
+extensions are disabled, the break characters default to space, tab and
+newline only.
+
+@item
+The program makes better use of output line width. If @sc{gnu} extensions
+are disabled, the program rather tries to imitate System V @command{ptx},
+but still, there are some slight disposition glitches this program does
+not completely reproduce.
+
+@item
+The user can specify both an Ignore file and an Only file. This is not
+allowed with System V @command{ptx}.
+
+@end itemize
+
+
+@node Operating on fields within a line
+@chapter Operating on fields within a line
+
+@menu
+* cut invocation:: Print selected parts of lines.
+* paste invocation:: Merge lines of files.
+* join invocation:: Join lines on a common field.
+@end menu
+
+
+@node cut invocation
+@section @command{cut}: Print selected parts of lines
+
+@pindex cut
+@command{cut} writes to standard output selected parts of each line of each
+input file, or standard input if no files are given or for a file name of
+@samp{-}. Synopsis:
+
+@example
+cut [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+In the table which follows, the @var{byte-list}, @var{character-list},
+and @var{field-list} are one or more numbers or ranges (two numbers
+separated by a dash) separated by commas. Bytes, characters, and
+fields are numbered starting at 1. Incomplete ranges may be
+given: @option{-@var{m}} means @samp{1-@var{m}}; @samp{@var{n}-} means
+@samp{@var{n}} through end of line or last field. The list elements
+can be repeated, can overlap, and can be specified in any order; but
+the selected input is written in the same order that it is read, and
+is written exactly once.
+
+The program accepts the following options. Also see @ref{Common
+options}.
+
+@table @samp
+
+@item -b @var{byte-list}
+@itemx --bytes=@var{byte-list}
+@opindex -b
+@opindex --bytes
+Select for printing only the bytes in positions listed in
+@var{byte-list}. Tabs and backspaces are treated like any other
+character; they take up 1 byte. If an output delimiter is specified,
+(see the description of @option{--output-delimiter}), then output that
+string between ranges of selected bytes.
+
+@item -c @var{character-list}
+@itemx --characters=@var{character-list}
+@opindex -c
+@opindex --characters
+Select for printing only the characters in positions listed in
+@var{character-list}. The same as @option{-b} for now, but
+internationalization will change that. Tabs and backspaces are
+treated like any other character; they take up 1 character. If an
+output delimiter is specified, (see the description of
+@option{--output-delimiter}), then output that string between ranges
+of selected bytes.
+
+@item -f @var{field-list}
+@itemx --fields=@var{field-list}
+@opindex -f
+@opindex --fields
+Select for printing only the fields listed in @var{field-list}.
+Fields are separated by a TAB character by default. Also print any
+line that contains no delimiter character, unless the
+@option{--only-delimited} (@option{-s}) option is specified
+
+@item -d @var{input_delim_byte}
+@itemx --delimiter=@var{input_delim_byte}
+@opindex -d
+@opindex --delimiter
+With @option{-f}, use the first byte of @var{input_delim_byte} as
+the input fields separator (default is TAB).
+
+@item -n
+@opindex -n
+Do not split multi-byte characters (no-op for now).
+
+@item -s
+@itemx --only-delimited
+@opindex -s
+@opindex --only-delimited
+For @option{-f}, do not print lines that do not contain the field separator
+character. Normally, any line without a field separator is printed verbatim.
+
+@item --output-delimiter=@var{output_delim_string}
+@opindex --output-delimiter
+With @option{-f}, output fields are separated by @var{output_delim_string}.
+The default with @option{-f} is to use the input delimiter.
+When using @option{-b} or @option{-c} to select ranges of byte or
+character offsets (as opposed to ranges of fields),
+output @var{output_delim_string} between non-overlapping
+ranges of selected bytes.
+
+@item --complement
+@opindex --complement
+This option is a @acronym{GNU} extension.
+Select for printing the complement of the bytes, characters or fields
+selected with the @option{-b}, @option{-c} or @option{-f} options.
+In other words, do @emph{not} print the bytes, characters or fields
+specified via those options. This option is useful when you have
+many fields and want to print all but a few of them.
+
+@end table
+
+@exitstatus
+
+
+@node paste invocation
+@section @command{paste}: Merge lines of files
+
+@pindex paste
+@cindex merging files
+
+@command{paste} writes to standard output lines consisting of sequentially
+corresponding lines of each given file, separated by a TAB character.
+Standard input is used for a file name of @samp{-} or if no input files
+are given.
+
+For example:
+
+@example
+$ cat num2
+1
+2
+$ cat let3
+a
+b
+c
+$ paste num2 let3
+1 a
+2 b
+ @ c
+@end example
+
+Synopsis:
+
+@example
+paste [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -s
+@itemx --serial
+@opindex -s
+@opindex --serial
+Paste the lines of one file at a time rather than one line from each
+file. Using the above example data:
+
+@example
+$ paste -s num2 let3
+1 2
+a b c
+@end example
+
+@item -d @var{delim-list}
+@itemx --delimiters=@var{delim-list}
+@opindex -d
+@opindex --delimiters
+Consecutively use the characters in @var{delim-list} instead of
+TAB to separate merged lines. When @var{delim-list} is
+exhausted, start again at its beginning. Using the above example data:
+
+@example
+$ paste -d '%_' num2 let3 num2
+1%a_1
+2%b_2
+%c_
+@end example
+
+@end table
+
+@exitstatus
+
+
+@node join invocation
+@section @command{join}: Join lines on a common field
+
+@pindex join
+@cindex common field, joining on
+
+@command{join} writes to standard output a line for each pair of input
+lines that have identical join fields. Synopsis:
+
+@example
+join [@var{option}]@dots{} @var{file1} @var{file2}
+@end example
+
+Either @var{file1} or @var{file2} (but not both) can be @samp{-},
+meaning standard input. @var{file1} and @var{file2} should be
+sorted on the join fields.
+
+@vindex LC_COLLATE
+Normally, the sort order is that of the
+collating sequence specified by the @env{LC_COLLATE} locale. Unless
+the @option{-t} option is given, the sort comparison ignores blanks at
+the start of the join field, as in @code{sort -b}. If the
+@option{--ignore-case} option is given, the sort comparison ignores
+the case of characters in the join field, as in @code{sort -f}.
+
+The @command{sort} and @command{join} commands should use consistent
+locales and options if the output of @command{sort} is fed to
+@command{join}. You can use a command like @samp{sort -k 1b,1} to
+sort a file on its default join field, but if you select a non-default
+locale, join field, separator, or comparison options, then you should
+do so consistently between @command{join} and @command{sort}.
+
+As a @acronym{GNU} extension, if the input has no unpairable lines the
+sort order can be any order that considers two fields to be equal if and
+only if the sort comparison described above considers them to be equal.
+For example:
+
+@example
+$ cat file1
+a a1
+c c1
+b b1
+$ cat file2
+a a2
+c c2
+b b2
+$ join file1 file2
+a a1 a2
+c c1 c2
+b b1 b2
+@end example
+
+The defaults are:
+@itemize
+@item the join field is the first field in each line;
+@item fields in the input are separated by one or more blanks, with leading
+ blanks on the line ignored;
+@item fields in the output are separated by a space;
+@item each output line consists of the join field, the remaining
+fields from @var{file1}, then the remaining fields from @var{file2}.
+@end itemize
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -a @var{file-number}
+@opindex -a
+Print a line for each unpairable line in file @var{file-number} (either
+@samp{1} or @samp{2}), in addition to the normal output.
+
+@item -e @var{string}
+@opindex -e
+Replace those output fields that are missing in the input with
+@var{string}.
+
+@item -i
+@itemx --ignore-case
+@opindex -i
+@opindex --ignore-case
+Ignore differences in case when comparing keys.
+With this option, the lines of the input files must be ordered in the same way.
+Use @samp{sort -f} to produce this ordering.
+
+@item -1 @var{field}
+@opindex -1
+Join on field @var{field} (a positive integer) of file 1.
+
+@item -2 @var{field}
+@opindex -2
+Join on field @var{field} (a positive integer) of file 2.
+
+@item -j @var{field}
+Equivalent to @option{-1 @var{field} -2 @var{field}}.
+
+@item -o @var{field-list}
+Construct each output line according to the format in @var{field-list}.
+Each element in @var{field-list} is either the single character @samp{0} or
+has the form @var{m.n} where the file number, @var{m}, is @samp{1} or
+@samp{2} and @var{n} is a positive field number.
+
+A field specification of @samp{0} denotes the join field.
+In most cases, the functionality of the @samp{0} field spec
+may be reproduced using the explicit @var{m.n} that corresponds
+to the join field. However, when printing unpairable lines
+(using either of the @option{-a} or @option{-v} options), there is no way
+to specify the join field using @var{m.n} in @var{field-list}
+if there are unpairable lines in both files.
+To give @command{join} that functionality, @acronym{POSIX} invented the @samp{0}
+field specification notation.
+
+The elements in @var{field-list}
+are separated by commas or blanks.
+Blank separators typically need to be quoted for the shell. For
+example, the commands @samp{join -o 1.2,2.2} and @samp{join -o '1.2
+2.2'} are equivalent.
+
+All output lines---including those printed because of any -a or -v
+option---are subject to the specified @var{field-list}.
+
+@item -t @var{char}
+Use character @var{char} as the input and output field separator.
+Treat as significant each occurrence of @var{char} in the input file.
+Use @samp{sort -t @var{char}}, without the @option{-b} option of
+@samp{sort}, to produce this ordering.
+
+@item -v @var{file-number}
+Print a line for each unpairable line in file @var{file-number}
+(either @samp{1} or @samp{2}), instead of the normal output.
+
+@end table
+
+@exitstatus
+
+
+@node Operating on characters
+@chapter Operating on characters
+
+@cindex operating on characters
+
+This commands operate on individual characters.
+
+@menu
+* tr invocation:: Translate, squeeze, and/or delete characters.
+* expand invocation:: Convert tabs to spaces.
+* unexpand invocation:: Convert spaces to tabs.
+@end menu
+
+
+@node tr invocation
+@section @command{tr}: Translate, squeeze, and/or delete characters
+
+@pindex tr
+
+Synopsis:
+
+@example
+tr [@var{option}]@dots{} @var{set1} [@var{set2}]
+@end example
+
+@command{tr} copies standard input to standard output, performing
+one of the following operations:
+
+@itemize @bullet
+@item
+translate, and optionally squeeze repeated characters in the result,
+@item
+squeeze repeated characters,
+@item
+delete characters,
+@item
+delete characters, then squeeze repeated characters from the result.
+@end itemize
+
+The @var{set1} and (if given) @var{set2} arguments define ordered
+sets of characters, referred to below as @var{set1} and @var{set2}. These
+sets are the characters of the input that @command{tr} operates on.
+The @option{--complement} (@option{-c}, @option{-C}) option replaces
+@var{set1} with its
+complement (all of the characters that are not in @var{set1}).
+
+Currently @command{tr} fully supports only single-byte characters.
+Eventually it will support multibyte characters; when it does, the
+@option{-C} option will cause it to complement the set of characters,
+whereas @option{-c} will cause it to complement the set of values.
+This distinction will matter only when some values are not characters,
+and this is possible only in locales using multibyte encodings when
+the input contains encoding errors.
+
+The program accepts the @option{--help} and @option{--version}
+options. @xref{Common options}. Options must precede operands.
+
+@exitstatus
+
+@menu
+* Character sets:: Specifying sets of characters.
+* Translating:: Changing one set of characters to another.
+* Squeezing:: Squeezing repeats and deleting.
+@end menu
+
+
+@node Character sets
+@subsection Specifying sets of characters
+
+@cindex specifying sets of characters
+
+The format of the @var{set1} and @var{set2} arguments resembles
+the format of regular expressions; however, they are not regular
+expressions, only lists of characters. Most characters simply
+represent themselves in these strings, but the strings can contain
+the shorthands listed below, for convenience. Some of them can be
+used only in @var{set1} or @var{set2}, as noted below.
+
+@table @asis
+
+@item Backslash escapes
+@cindex backslash escapes
+
+The following backslash escape sequences are recognized:
+
+@table @samp
+@item \a
+Control-G.
+@item \b
+Control-H.
+@item \f
+Control-L.
+@item \n
+Control-J.
+@item \r
+Control-M.
+@item \t
+Control-I.
+@item \v
+Control-K.
+@item \@var{ooo}
+The character with the value given by @var{ooo}, which is 1 to 3
+octal digits,
+@item \\
+A backslash.
+@end table
+
+While a backslash followed by a character not listed above is
+interpreted as that character, the backslash also effectively
+removes any special significance, so it is useful to escape
+@samp{[}, @samp{]}, @samp{*}, and @samp{-}.
+
+@item Ranges
+@cindex ranges
+
+The notation @samp{@var{m}-@var{n}} expands to all of the characters
+from @var{m} through @var{n}, in ascending order. @var{m} should
+collate before @var{n}; if it doesn't, an error results. As an example,
+@samp{0-9} is the same as @samp{0123456789}.
+
+@sc{gnu} @command{tr} does not support the System V syntax that uses square
+brackets to enclose ranges. Translations specified in that format
+sometimes work as expected, since the brackets are often transliterated
+to themselves. However, they should be avoided because they sometimes
+behave unexpectedly. For example, @samp{tr -d '[0-9]'} deletes brackets
+as well as digits.
+
+Many historically common and even accepted uses of ranges are not
+portable. For example, on @acronym{EBCDIC} hosts using the @samp{A-Z}
+range will not do what most would expect because @samp{A} through @samp{Z}
+are not contiguous as they are in @acronym{ASCII}.
+If you can rely on a @acronym{POSIX} compliant version of @command{tr}, then
+the best way to work around this is to use character classes (see below).
+Otherwise, it is most portable (and most ugly) to enumerate the members
+of the ranges.
+
+@item Repeated characters
+@cindex repeated characters
+
+The notation @samp{[@var{c}*@var{n}]} in @var{set2} expands to @var{n}
+copies of character @var{c}. Thus, @samp{[y*6]} is the same as
+@samp{yyyyyy}. The notation @samp{[@var{c}*]} in @var{string2} expands
+to as many copies of @var{c} as are needed to make @var{set2} as long as
+@var{set1}. If @var{n} begins with @samp{0}, it is interpreted in
+octal, otherwise in decimal.
+
+@item Character classes
+@cindex character classes
+
+The notation @samp{[:@var{class}:]} expands to all of the characters in
+the (predefined) class @var{class}. The characters expand in no
+particular order, except for the @code{upper} and @code{lower} classes,
+which expand in ascending order. When the @option{--delete} (@option{-d})
+and @option{--squeeze-repeats} (@option{-s}) options are both given, any
+character class can be used in @var{set2}. Otherwise, only the
+character classes @code{lower} and @code{upper} are accepted in
+@var{set2}, and then only if the corresponding character class
+(@code{upper} and @code{lower}, respectively) is specified in the same
+relative position in @var{set1}. Doing this specifies case conversion.
+The class names are given below; an error results when an invalid class
+name is given.
+
+@table @code
+@item alnum
+@opindex alnum
+Letters and digits.
+@item alpha
+@opindex alpha
+Letters.
+@item blank
+@opindex blank
+Horizontal whitespace.
+@item cntrl
+@opindex cntrl
+Control characters.
+@item digit
+@opindex digit
+Digits.
+@item graph
+@opindex graph
+Printable characters, not including space.
+@item lower
+@opindex lower
+Lowercase letters.
+@item print
+@opindex print
+Printable characters, including space.
+@item punct
+@opindex punct
+Punctuation characters.
+@item space
+@opindex space
+Horizontal or vertical whitespace.
+@item upper
+@opindex upper
+Uppercase letters.
+@item xdigit
+@opindex xdigit
+Hexadecimal digits.
+@end table
+
+@item Equivalence classes
+@cindex equivalence classes
+
+The syntax @samp{[=@var{c}=]} expands to all of the characters that are
+equivalent to @var{c}, in no particular order. Equivalence classes are
+a relatively recent invention intended to support non-English alphabets.
+But there seems to be no standard way to define them or determine their
+contents. Therefore, they are not fully implemented in @sc{gnu} @command{tr};
+each character's equivalence class consists only of that character,
+which is of no particular use.
+
+@end table
+
+
+@node Translating
+@subsection Translating
+
+@cindex translating characters
+
+@command{tr} performs translation when @var{set1} and @var{set2} are
+both given and the @option{--delete} (@option{-d}) option is not given.
+@command{tr} translates each character of its input that is in @var{set1}
+to the corresponding character in @var{set2}. Characters not in
+@var{set1} are passed through unchanged. When a character appears more
+than once in @var{set1} and the corresponding characters in @var{set2}
+are not all the same, only the final one is used. For example, these
+two commands are equivalent:
+
+@example
+tr aaa xyz
+tr a z
+@end example
+
+A common use of @command{tr} is to convert lowercase characters to
+uppercase. This can be done in many ways. Here are three of them:
+
+@example
+tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+tr a-z A-Z
+tr '[:lower:]' '[:upper:]'
+@end example
+
+@noindent
+But note that using ranges like @code{a-z} above is not portable.
+
+When @command{tr} is performing translation, @var{set1} and @var{set2}
+typically have the same length. If @var{set1} is shorter than
+@var{set2}, the extra characters at the end of @var{set2} are ignored.
+
+On the other hand, making @var{set1} longer than @var{set2} is not
+portable; @acronym{POSIX} says that the result is undefined. In this situation,
+BSD @command{tr} pads @var{set2} to the length of @var{set1} by repeating
+the last character of @var{set2} as many times as necessary. System V
+@command{tr} truncates @var{set1} to the length of @var{set2}.
+
+By default, @sc{gnu} @command{tr} handles this case like BSD @command{tr}.
+When the @option{--truncate-set1} (@option{-t}) option is given,
+@sc{gnu} @command{tr} handles this case like the System V @command{tr}
+instead. This option is ignored for operations other than translation.
+
+Acting like System V @command{tr} in this case breaks the relatively common
+BSD idiom:
+
+@example
+tr -cs A-Za-z0-9 '\012'
+@end example
+
+@noindent
+because it converts only zero bytes (the first element in the
+complement of @var{set1}), rather than all non-alphanumerics, to
+newlines.
+
+@noindent
+By the way, the above idiom is not portable because it uses ranges, and
+it assumes that the octal code for newline is 012.
+Assuming a @acronym{POSIX} compliant @command{tr}, here is a better way to write it:
+
+@example
+tr -cs '[:alnum:]' '[\n*]'
+@end example
+
+
+@node Squeezing
+@subsection Squeezing repeats and deleting
+
+@cindex squeezing repeat characters
+@cindex deleting characters
+
+When given just the @option{--delete} (@option{-d}) option, @command{tr}
+removes any input characters that are in @var{set1}.
+
+When given just the @option{--squeeze-repeats} (@option{-s}) option,
+@command{tr} replaces each input sequence of a repeated character that
+is in @var{set1} with a single occurrence of that character.
+
+When given both @option{--delete} and @option{--squeeze-repeats}, @command{tr}
+first performs any deletions using @var{set1}, then squeezes repeats
+from any remaining characters using @var{set2}.
+
+The @option{--squeeze-repeats} option may also be used when translating,
+in which case @command{tr} first performs translation, then squeezes
+repeats from any remaining characters using @var{set2}.
+
+Here are some examples to illustrate various combinations of options:
+
+@itemize @bullet
+
+@item
+Remove all zero bytes:
+
+@example
+tr -d '\0'
+@end example
+
+@item
+Put all words on lines by themselves. This converts all
+non-alphanumeric characters to newlines, then squeezes each string
+of repeated newlines into a single newline:
+
+@example
+tr -cs '[:alnum:]' '[\n*]'
+@end example
+
+@item
+Convert each sequence of repeated newlines to a single newline:
+
+@example
+tr -s '\n'
+@end example
+
+@item
+Find doubled occurrences of words in a document.
+@c Separate the following two "the"s, so typo checkers don't complain.
+For example, people often write ``the @w{}the'' with the repeated words
+separated by a newline. The Bourne shell script below works first
+by converting each sequence of punctuation and blank characters to a
+single newline. That puts each ``word'' on a line by itself.
+Next it maps all uppercase characters to lower case, and finally it
+runs @command{uniq} with the @option{-d} option to print out only the words
+that were repeated.
+
+@example
+#!/bin/sh
+cat -- "$@@" \
+ | tr -s '[:punct:][:blank:]' '[\n*]' \
+ | tr '[:upper:]' '[:lower:]' \
+ | uniq -d
+@end example
+
+@item
+Deleting a small set of characters is usually straightforward. For example,
+to remove all @samp{a}s, @samp{x}s, and @samp{M}s you would do this:
+
+@example
+tr -d axM
+@end example
+
+However, when @samp{-} is one of those characters, it can be tricky because
+@samp{-} has special meanings. Performing the same task as above but also
+removing all @samp{-} characters, we might try @code{tr -d -axM}, but
+that would fail because @command{tr} would try to interpret @option{-a} as
+a command-line option. Alternatively, we could try putting the hyphen
+inside the string, @code{tr -d a-xM}, but that wouldn't work either because
+it would make @command{tr} interpret @code{a-x} as the range of characters
+@samp{a}@dots{}@samp{x} rather than the three.
+One way to solve the problem is to put the hyphen at the end of the list
+of characters:
+
+@example
+tr -d axM-
+@end example
+
+Or you can use @samp{--} to terminate option processing:
+
+@example
+tr -d -- -axM
+@end example
+
+More generally, use the character class notation @code{[=c=]}
+with @samp{-} (or any other character) in place of the @samp{c}:
+
+@example
+tr -d '[=-=]axM'
+@end example
+
+Note how single quotes are used in the above example to protect the
+square brackets from interpretation by a shell.
+
+@end itemize
+
+
+@node expand invocation
+@section @command{expand}: Convert tabs to spaces
+
+@pindex expand
+@cindex tabs to spaces, converting
+@cindex converting tabs to spaces
+
+@command{expand} writes the contents of each given @var{file}, or standard
+input if none are given or for a @var{file} of @samp{-}, to standard
+output, with tab characters converted to the appropriate number of
+spaces. Synopsis:
+
+@example
+expand [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+By default, @command{expand} converts all tabs to spaces. It preserves
+backspace characters in the output; they decrement the column count for
+tab calculations. The default action is equivalent to @option{-t 8} (set
+tabs every 8 columns).
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -t @var{tab1}[,@var{tab2}]@dots{}
+@itemx --tabs=@var{tab1}[,@var{tab2}]@dots{}
+@opindex -t
+@opindex --tabs
+@cindex tab stops, setting
+If only one tab stop is given, set the tabs @var{tab1} spaces apart
+(default is 8). Otherwise, set the tabs at columns @var{tab1},
+@var{tab2}, @dots{} (numbered from 0), and replace any tabs beyond the
+last tab stop given with single spaces. Tab stops can be separated by
+blanks as well as by commas.
+
+For compatibility, GNU @command{expand} also accepts the obsolete
+option syntax, @option{-@var{t1}[,@var{t2}]@dots{}}. New scripts
+should use @option{-t @var{t1}[,@var{t2}]@dots{}} instead.
+
+@item -i
+@itemx --initial
+@opindex -i
+@opindex --initial
+@cindex initial tabs, converting
+Only convert initial tabs (those that precede all non-space or non-tab
+characters) on each line to spaces.
+
+@end table
+
+@exitstatus
+
+
+@node unexpand invocation
+@section @command{unexpand}: Convert spaces to tabs
+
+@pindex unexpand
+
+@command{unexpand} writes the contents of each given @var{file}, or
+standard input if none are given or for a @var{file} of @samp{-}, to
+standard output, converting blanks at the beginning of each line into
+as many tab characters as needed. In the default @acronym{POSIX}
+locale, a @dfn{blank} is a space or a tab; other locales may specify
+additional blank characters. Synopsis:
+
+@example
+unexpand [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+By default, @command{unexpand} converts only initial blanks (those
+that precede all non-blank characters) on each line. It
+preserves backspace characters in the output; they decrement the column
+count for tab calculations. By default, tabs are set at every 8th
+column.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -t @var{tab1}[,@var{tab2}]@dots{}
+@itemx --tabs=@var{tab1}[,@var{tab2}]@dots{}
+@opindex -t
+@opindex --tabs
+If only one tab stop is given, set the tabs @var{tab1} columns apart
+instead of the default 8. Otherwise, set the tabs at columns
+@var{tab1}, @var{tab2}, @dots{} (numbered from 0), and leave blanks
+beyond the tab stops given unchanged. Tab stops can be separated by
+blanks as well as by commas. This option implies the @option{-a} option.
+
+For compatibility, GNU @command{unexpand} supports the obsolete option syntax,
+@option{-@var{tab1}[,@var{tab2}]@dots{}}, where tab stops must be
+separated by commas. (Unlike @option{-t}, this obsolete option does
+not imply @option{-a}.) New scripts should use @option{--first-only -t
+@var{tab1}[,@var{tab2}]@dots{}} instead.
+
+@item -a
+@itemx --all
+@opindex -a
+@opindex --all
+Also convert all sequences of two or more blanks just before a tab stop,
+even if they occur after non-blank characters in a line.
+
+@end table
+
+@exitstatus
+
+
+@node Directory listing
+@chapter Directory listing
+
+This chapter describes the @command{ls} command and its variants @command{dir}
+and @command{vdir}, which list information about files.
+
+@menu
+* ls invocation:: List directory contents.
+* dir invocation:: Briefly ls.
+* vdir invocation:: Verbosely ls.
+* dircolors invocation:: Color setup for ls, etc.
+@end menu
+
+
+@node ls invocation
+@section @command{ls}: List directory contents
+
+@pindex ls
+@cindex directory listing
+
+The @command{ls} program lists information about files (of any type,
+including directories). Options and file arguments can be intermixed
+arbitrarily, as usual.
+
+For non-option command-line arguments that are directories, by default
+@command{ls} lists the contents of directories, not recursively, and
+omitting files with names beginning with @samp{.}. For other non-option
+arguments, by default @command{ls} lists just the file name. If no
+non-option argument is specified, @command{ls} operates on the current
+directory, acting as if it had been invoked with a single argument of @samp{.}.
+
+@vindex LC_ALL
+By default, the output is sorted alphabetically, according to the locale
+settings in effect.@footnote{If you use a non-@acronym{POSIX}
+locale (e.g., by setting @env{LC_ALL} to @samp{en_US}), then @command{ls} may
+produce output that is sorted differently than you're accustomed to.
+In that case, set the @env{LC_ALL} environment variable to @samp{C}.}
+If standard output is
+a terminal, the output is in columns (sorted vertically) and control
+characters are output as question marks; otherwise, the output is listed
+one per line and control characters are output as-is.
+
+Because @command{ls} is such a fundamental program, it has accumulated many
+options over the years. They are described in the subsections below;
+within each section, options are listed alphabetically (ignoring case).
+The division of options into the subsections is not absolute, since some
+options affect more than one aspect of @command{ls}'s operation.
+
+@cindex exit status of @command{ls}
+Exit status:
+
+@display
+0 success
+1 minor problems (e.g., a subdirectory was not found)
+2 serious trouble (e.g., memory exhausted)
+@end display
+
+Also see @ref{Common options}.
+
+@menu
+* Which files are listed::
+* What information is listed::
+* Sorting the output::
+* More details about version sort::
+* General output formatting::
+* Formatting file timestamps::
+* Formatting the file names::
+@end menu
+
+
+@node Which files are listed
+@subsection Which files are listed
+
+These options determine which files @command{ls} lists information for.
+By default, @command{ls} lists files and the contents of any
+directories on the command line, except that in directories it ignores
+files whose names start with @samp{.}.
+
+@table @samp
+
+@item -a
+@itemx --all
+@opindex -a
+@opindex --all
+In directories, do not ignore file names that start with @samp{.}.
+
+@item -A
+@itemx --almost-all
+@opindex -A
+@opindex --almost-all
+In directories, do not ignore all file names that start with @samp{.};
+ignore only @file{.} and @file{..}. The @option{--all} (@option{-a})
+option overrides this option.
+
+@item -B
+@itemx --ignore-backups
+@opindex -B
+@opindex --ignore-backups
+@cindex backup files, ignoring
+In directories, ignore files that end with @samp{~}. This option is
+equivalent to @samp{--ignore='*~' --ignore='.*~'}.
+
+@item -d
+@itemx --directory
+@opindex -d
+@opindex --directory
+List just the names of directories, as with other types of files, rather
+than listing their contents.
+@c The following sentence is the same as the one for -F.
+Do not follow symbolic links listed on the
+command line unless the @option{--dereference-command-line} (@option{-H}),
+@option{--dereference} (@option{-L}), or
+@option{--dereference-command-line-symlink-to-dir} options are specified.
+
+@item -H
+@itemx --dereference-command-line
+@opindex -H
+@opindex --dereference-command-line
+@cindex symbolic links, dereferencing
+If a command line argument specifies a symbolic link, show information
+for the file the link references rather than for the link itself.
+
+@itemx --dereference-command-line-symlink-to-dir
+@opindex --dereference-command-line-symlink-to-dir
+@cindex symbolic links, dereferencing
+Do not dereference symbolic links, with one exception:
+if a command line argument specifies a symbolic link that refers to
+a directory, show information for that directory rather than for the
+link itself.
+This is the default behavior when no other dereferencing-related
+option has been specified (@option{--classify} (@option{-F}),
+@option{--directory} (@option{-d}),
+(@option{-l}),
+@option{--dereference} (@option{-L}), or
+@option{--dereference-command-line} (@option{-H})).
+
+@item --group-directories-first
+@opindex --group-directories-first
+Group all the directories before the files and then sort the
+directories and the files separately using the selected sort key
+(see --sort option).
+That is, this option specifies a primary sort key,
+and the --sort option specifies a secondary key.
+
+@item --hide=PATTERN
+@opindex --hide=@var{pattern}
+In directories, ignore files whose names match the shell pattern
+@var{pattern}, unless the @option{--all} (@option{-a}) or
+@option{--almost-all} (@option{-A}) is also given. This
+option acts like @option{--ignore=@var{pattern}} except that it has no
+effect if @option{--all} (@option{-a}) or @option{--almost-all}
+(@option{-A}) is also given.
+
+This option can be useful in shell aliases. For example, if
+@command{lx} is an alias for @samp{ls --hide='*~'} and @command{ly} is
+an alias for @samp{ls --ignore='*~'}, then the command @samp{lx -A}
+lists the file @file{README~} even though @samp{ly -A} would not.
+
+@item -I @var{pattern}
+@itemx --ignore=@var{pattern}
+@opindex -I
+@opindex --ignore=@var{pattern}
+In directories, ignore files whose names match the shell pattern
+(not regular expression) @var{pattern}. As
+in the shell, an initial @samp{.} in a file name does not match a
+wildcard at the start of @var{pattern}. Sometimes it is useful
+to give this option several times. For example,
+
+@smallexample
+$ ls --ignore='.??*' --ignore='.[^.]' --ignore='#*'
+@end smallexample
+
+The first option ignores names of length 3 or more that start with @samp{.},
+the second ignores all two-character names that start with @samp{.}
+except @samp{..}, and the third ignores names that start with @samp{#}.
+
+@item -L
+@itemx --dereference
+@opindex -L
+@opindex --dereference
+@cindex symbolic links, dereferencing
+When showing file information for a symbolic link, show information
+for the file the link references rather than the link itself.
+However, even with this option, @command{ls} still prints the name
+of the link itself, not the name of the file that the link points to.
+
+@item -R
+@itemx --recursive
+@opindex -R
+@opindex --recursive
+@cindex recursive directory listing
+@cindex directory listing, recursive
+List the contents of all directories recursively.
+
+@end table
+
+
+@node What information is listed
+@subsection What information is listed
+
+These options affect the information that @command{ls} displays. By
+default, only file names are shown.
+
+@table @samp
+
+@item --author
+@opindex --author
+@cindex hurd, author, printing
+List each file's author when producing long format directory listings.
+In GNU/Hurd, file authors can differ from their owners, but in other
+operating systems the two are the same.
+
+@item -D
+@itemx --dired
+@opindex -D
+@opindex --dired
+@cindex dired Emacs mode support
+With the long listing (@option{-l}) format, print an additional line after
+the main output:
+
+@example
+//DIRED// @var{beg1} @var{end1} @var{beg2} @var{end2} @dots{}
+@end example
+
+@noindent
+The @var{begN} and @var{endN} are unsigned integers that record the
+byte position of the beginning and end of each file name in the output.
+This makes it easy for Emacs to find the names, even when they contain
+unusual characters such as space or newline, without fancy searching.
+
+If directories are being listed recursively (@option{-R}), output a similar
+line with offsets for each subdirectory name:
+
+@example
+//SUBDIRED// @var{beg1} @var{end1} @dots{}
+@end example
+
+Finally, output a line of the form:
+
+@example
+//DIRED-OPTIONS// --quoting-style=@var{word}
+@end example
+
+@noindent
+where @var{word} is the quoting style (@pxref{Formatting the file names}).
+
+Here is an actual example:
+
+@example
+$ mkdir -p a/sub/deeper a/sub2
+$ touch a/f1 a/f2
+$ touch a/sub/deeper/file
+$ ls -gloRF --dired a
+ a:
+ total 8
+ -rw-r--r-- 1 0 Jun 10 12:27 f1
+ -rw-r--r-- 1 0 Jun 10 12:27 f2
+ drwxr-xr-x 3 4096 Jun 10 12:27 sub/
+ drwxr-xr-x 2 4096 Jun 10 12:27 sub2/
+
+ a/sub:
+ total 4
+ drwxr-xr-x 2 4096 Jun 10 12:27 deeper/
+
+ a/sub/deeper:
+ total 0
+ -rw-r--r-- 1 0 Jun 10 12:27 file
+
+ a/sub2:
+ total 0
+//DIRED// 48 50 84 86 120 123 158 162 217 223 282 286
+//SUBDIRED// 2 3 167 172 228 240 290 296
+//DIRED-OPTIONS// --quoting-style=literal
+@end example
+
+Note that the pairs of offsets on the @samp{//DIRED//} line above delimit
+these names: @file{f1}, @file{f2}, @file{sub}, @file{sub2}, @file{deeper},
+@file{file}.
+The offsets on the @samp{//SUBDIRED//} line delimit the following
+directory names: @file{a}, @file{a/sub}, @file{a/sub/deeper}, @file{a/sub2}.
+
+Here is an example of how to extract the fifth entry name, @samp{deeper},
+corresponding to the pair of offsets, 222 and 228:
+
+@example
+$ ls -gloRF --dired a > out
+$ dd bs=1 skip=222 count=6 < out 2>/dev/null; echo
+deeper
+@end example
+
+Note that although the listing above includes a trailing slash
+for the @samp{deeper} entry, the offsets select the name without
+the trailing slash. However, if you invoke @command{ls} with @option{--dired}
+along with an option like @option{--escape} (aka @option{-b}) and operate
+on a file whose name contains special characters, notice that the backslash
+@emph{is} included:
+
+@example
+$ touch 'a b'
+$ ls -blog --dired 'a b'
+ -rw-r--r-- 1 0 Jun 10 12:28 a\ b
+//DIRED// 30 34
+//DIRED-OPTIONS// --quoting-style=escape
+@end example
+
+If you use a quoting style that adds quote marks
+(e.g., @option{--quoting-style=c}), then the offsets include the quote marks.
+So beware that the user may select the quoting style via the environment
+variable @env{QUOTING_STYLE}. Hence, applications using @option{--dired}
+should either specify an explicit @option{--quoting-style=literal} option
+(aka @option{-N} or @option{--literal}) on the command line, or else be
+prepared to parse the escaped names.
+
+@item --full-time
+@opindex --full-time
+Produce long format directory listings, and list times in full. It is
+equivalent to using @option{--format=long} with
+@option{--time-style=full-iso} (@pxref{Formatting file timestamps}).
+
+@item -g
+@opindex -g
+Produce long format directory listings, but don't display owner information.
+
+@item -G
+@itemx --no-group
+@opindex -G
+@opindex --no-group
+Inhibit display of group information in a long format directory listing.
+(This is the default in some non-@sc{gnu} versions of @command{ls}, so we
+provide this option for compatibility.)
+
+@optHumanReadable
+
+@item -i
+@itemx --inode
+@opindex -i
+@opindex --inode
+@cindex inode number, printing
+Print the inode number (also called the file serial number and index
+number) of each file to the left of the file name. (This number
+uniquely identifies each file within a particular file system.)
+
+@item -l
+@itemx --format=long
+@itemx --format=verbose
+@opindex -l
+@opindex --format
+@opindex long ls @r{format}
+@opindex verbose ls @r{format}
+In addition to the name of each file, print the file type, file mode bits,
+number of hard links, owner name, group name, size, and
+timestamp (@pxref{Formatting file timestamps}), normally
+the modification time. Print question marks for information that
+cannot be determined.
+
+Normally the size is printed as a byte count without punctuation, but
+this can be overridden (@pxref{Block size}). For example, @option{-h}
+prints an abbreviated, human-readable count, and
+@samp{--block-size="'1"} prints a byte count with the thousands
+separator of the current locale.
+
+For each directory that is listed, preface the files with a line
+@samp{total @var{blocks}}, where @var{blocks} is the total disk allocation
+for all files in that directory. The block size currently defaults to 1024
+bytes, but this can be overridden (@pxref{Block size}).
+The @var{blocks} computed counts each hard link separately;
+this is arguably a deficiency.
+
+The file type is one of the following characters:
+
+@c The commented-out entries are ones we're not sure about.
+
+@table @samp
+@item -
+regular file
+@item b
+block special file
+@item c
+character special file
+@item C
+high performance (``contiguous data'') file
+@item d
+directory
+@item D
+door (Solaris 2.5 and up)
+@c @item F
+@c semaphore, if this is a distinct file type
+@item l
+symbolic link
+@c @item m
+@c multiplexed file (7th edition Unix; obsolete)
+@item M
+off-line (``migrated'') file (Cray DMF)
+@item n
+network special file (HP-UX)
+@item p
+FIFO (named pipe)
+@item P
+port (Solaris 10 and up)
+@c @item Q
+@c message queue, if this is a distinct file type
+@item s
+socket
+@c @item S
+@c shared memory object, if this is a distinct file type
+@c @item T
+@c typed memory object, if this is a distinct file type
+@c @item w
+@c whiteout (4.4BSD; not implemented)
+@item ?
+some other file type
+@end table
+
+@cindex permissions, output by @command{ls}
+The file mode bits listed are similar to symbolic mode specifications
+(@pxref{Symbolic Modes}). But @command{ls} combines multiple bits into the
+third character of each set of permissions as follows:
+
+@table @samp
+@item s
+If the set-user-ID or set-group-ID bit and the corresponding executable bit
+are both set.
+
+@item S
+If the set-user-ID or set-group-ID bit is set but the corresponding
+executable bit is not set.
+
+@item t
+If the restricted deletion flag or sticky bit, and the
+other-executable bit, are both set. The restricted deletion flag is
+another name for the sticky bit. @xref{Mode Structure}.
+
+@item T
+If the restricted deletion flag or sticky bit is set but the
+other-executable bit is not set.
+
+@item x
+If the executable bit is set and none of the above apply.
+
+@item -
+Otherwise.
+@end table
+
+Following the file mode bits is a single character that specifies
+whether an alternate access method such as an access control list
+applies to the file. When the character following the file mode bits is a
+space, there is no alternate access method. When it is a printing
+character, then there is such a method.
+
+For a file with an extended access control list, a @samp{+} character is
+listed. Basic access control lists are equivalent to the permissions
+listed, and are not considered an alternate access method.
+
+@item -n
+@itemx --numeric-uid-gid
+@opindex -n
+@opindex --numeric-uid-gid
+@cindex numeric uid and gid
+@cindex numeric user and group IDs
+Produce long format directory listings, but
+display numeric user and group IDs instead of the owner and group names.
+
+@item -o
+@opindex -o
+Produce long format directory listings, but don't display group information.
+It is equivalent to using @option{--format=long} with @option{--no-group} .
+
+@item -s
+@itemx --size
+@opindex -s
+@opindex --size
+@cindex disk allocation
+@cindex size of files, reporting
+Print the disk allocation of each file to the left of the file name.
+This is the amount of disk space used by the file, which is usually a
+bit more than the file's size, but it can be less if the file has holes.
+
+Normally the disk allocation is printed in units of
+1024 bytes, but this can be overridden (@pxref{Block size}).
+
+@cindex NFS mounts from BSD to HP-UX
+For files that are NFS-mounted from an HP-UX system to a BSD system,
+this option reports sizes that are half the correct values. On HP-UX
+systems, it reports sizes that are twice the correct values for files
+that are NFS-mounted from BSD systems. This is due to a flaw in HP-UX;
+it also affects the HP-UX @command{ls} program.
+
+@optSi
+
+@end table
+
+
+@node Sorting the output
+@subsection Sorting the output
+
+@cindex sorting @command{ls} output
+These options change the order in which @command{ls} sorts the information
+it outputs. By default, sorting is done by character code
+(e.g., @acronym{ASCII} order).
+
+@table @samp
+
+@item -c
+@itemx --time=ctime
+@itemx --time=status
+@opindex -c
+@opindex --time
+@opindex ctime@r{, printing or sorting by}
+@opindex status time@r{, printing or sorting by}
+@opindex use time@r{, printing or sorting files by}
+If the long listing format (e.g., @option{-l}, @option{-o}) is being used,
+print the status change time (the @samp{ctime} in the inode) instead of
+the modification time.
+When explicitly sorting by time (@option{--sort=time} or @option{-t})
+or when not using a long listing format,
+sort according to the status change time.
+
+@item -f
+@opindex -f
+@cindex unsorted directory listing
+@cindex directory order, listing by
+Primarily, like @option{-U}---do not sort; list the files in whatever
+order they are stored in the directory. But also enable @option{-a} (list
+all files) and disable @option{-l}, @option{--color}, and @option{-s} (if they
+were specified before the @option{-f}).
+
+@item -r
+@itemx --reverse
+@opindex -r
+@opindex --reverse
+@cindex reverse sorting
+Reverse whatever the sorting method is---e.g., list files in reverse
+alphabetical order, youngest first, smallest first, or whatever.
+
+@item -S
+@itemx --sort=size
+@opindex -S
+@opindex --sort
+@opindex size of files@r{, sorting files by}
+Sort by file size, largest first.
+
+@item -t
+@itemx --sort=time
+@opindex -t
+@opindex --sort
+@opindex modification time@r{, sorting files by}
+Sort by modification time (the @samp{mtime} in the inode), newest first.
+
+@item -u
+@itemx --time=atime
+@itemx --time=access
+@itemx --time=use
+@opindex -u
+@opindex --time
+@opindex use time@r{, printing or sorting files by}
+@opindex atime@r{, printing or sorting files by}
+@opindex access time@r{, printing or sorting files by}
+If the long listing format (e.g., @option{--format=long}) is being used,
+print the last access time (the @samp{atime} in the inode).
+When explicitly sorting by time (@option{--sort=time} or @option{-t})
+or when not using a long listing format, sort according to the access time.
+
+@item -U
+@itemx --sort=none
+@opindex -U
+@opindex --sort
+@opindex none@r{, sorting option for @command{ls}}
+Do not sort; list the files in whatever order they are
+stored in the directory. (Do not do any of the other unrelated things
+that @option{-f} does.) This is especially useful when listing very large
+directories, since not doing any sorting can be noticeably faster.
+
+@item -v
+@itemx --sort=version
+@opindex -v
+@opindex --sort
+@opindex version@r{, sorting option for @command{ls}}
+Sort by version name and number, lowest first. It behaves like a default
+sort, except that each sequence of decimal digits is treated numerically
+as an index/version number. (@xref{More details about version sort}.)
+
+@item -X
+@itemx --sort=extension
+@opindex -X
+@opindex --sort
+@opindex extension@r{, sorting files by}
+Sort directory contents alphabetically by file extension (characters
+after the last @samp{.}); files with no extension are sorted first.
+
+@end table
+
+
+@node More details about version sort
+@subsection More details about version sort
+
+The version sort takes into account the fact that file names frequently include
+indices or version numbers. Standard sorting functions usually do not produce
+the ordering that people expect because comparisons are made on a
+character-by-character basis. The version
+sort addresses this problem, and is especially useful when browsing
+directories that contain many files with indices/version numbers in their
+names:
+
+@example
+$ ls -1 $ ls -1v
+foo.zml-1.gz foo.zml-1.gz
+foo.zml-100.gz foo.zml-2.gz
+foo.zml-12.gz foo.zml-6.gz
+foo.zml-13.gz foo.zml-12.gz
+foo.zml-2.gz foo.zml-13.gz
+foo.zml-25.gz foo.zml-25.gz
+foo.zml-6.gz foo.zml-100.gz
+@end example
+
+Note also that numeric parts with leading zeros are considered as
+fractional one:
+
+@example
+$ ls -1 $ ls -1v
+abc-1.007.tgz abc-1.007.tgz
+abc-1.012b.tgz abc-1.01a.tgz
+abc-1.01a.tgz abc-1.012b.tgz
+@end example
+
+This functionality is implemented using the @code{strverscmp} function.
+@xref{String/Array Comparison, , , libc, The GNU C Library Reference Manual}.
+One result of that implementation decision is that @code{ls -v} does not
+use the locale category, @env{LC_COLLATE}. As a result, non-numeric prefixes
+are sorted as if @env{LC_COLLATE} were set to @code{C}.
+
+@node General output formatting
+@subsection General output formatting
+
+These options affect the appearance of the overall output.
+
+@table @samp
+
+@item -1
+@itemx --format=single-column
+@opindex -1
+@opindex --format
+@opindex single-column @r{output of files}
+List one file per line. This is the default for @command{ls} when standard
+output is not a terminal.
+
+@item -C
+@itemx --format=vertical
+@opindex -C
+@opindex --format
+@opindex vertical @r{sorted files in columns}
+List files in columns, sorted vertically. This is the default for
+@command{ls} if standard output is a terminal. It is always the default
+for the @command{dir} program.
+@sc{gnu} @command{ls} uses variable width columns to display as many files as
+possible in the fewest lines.
+
+@item --color [=@var{when}]
+@opindex --color
+@cindex color, distinguishing file types with
+Specify whether to use color for distinguishing file types. @var{when}
+may be omitted, or one of:
+@itemize @bullet
+@item none
+@vindex none @r{color option}
+- Do not use color at all. This is the default.
+@item auto
+@vindex auto @r{color option}
+@cindex terminal, using color iff
+- Only use color if standard output is a terminal.
+@item always
+@vindex always @r{color option}
+- Always use color.
+@end itemize
+Specifying @option{--color} and no @var{when} is equivalent to
+@option{--color=always}.
+Piping a colorized listing through a pager like @command{more} or
+@command{less} usually produces unreadable results. However, using
+@code{more -f} does seem to work.
+
+@item -F
+@itemx --classify
+@itemx --indicator-style=classify
+@opindex -F
+@opindex --classify
+@opindex --indicator-style
+@cindex file type and executables, marking
+@cindex executables and file type, marking
+Append a character to each file name indicating the file type. Also,
+for regular files that are executable, append @samp{*}. The file type
+indicators are @samp{/} for directories, @samp{@@} for symbolic links,
+@samp{|} for FIFOs, @samp{=} for sockets, @samp{>} for doors,
+and nothing for regular files.
+@c The following sentence is the same as the one for -d.
+Do not follow symbolic links listed on the
+command line unless the @option{--dereference-command-line} (@option{-H}),
+@option{--dereference} (@option{-L}), or
+@option{--dereference-command-line-symlink-to-dir} options are specified.
+
+@item --file-type
+@itemx --indicator-style=file-type
+@opindex --file-type
+@opindex --indicator-style
+@cindex file type, marking
+Append a character to each file name indicating the file type. This is
+like @option{-F}, except that executables are not marked.
+
+@item --indicator-style=@var{word}
+@opindex --indicator-style
+Append a character indicator with style @var{word} to entry names,
+as follows:
+
+@table @samp
+@item none
+Do not append any character indicator; this is the default.
+@item slash
+Append @samp{/} for directories. This is the same as the @option{-p}
+option.
+@item file-type
+Append @samp{/} for directories, @samp{@@} for symbolic links, @samp{|}
+for FIFOs, @samp{=} for sockets, and nothing for regular files. This is
+the same as the @option{--file-type} option.
+@item classify
+Append @samp{*} for executable regular files, otherwise behave as for
+@samp{file-type}. This is the same as the @option{-F} or
+@option{--classify} option.
+@end table
+
+@item -k
+@opindex -k
+Print file sizes in 1024-byte blocks, overriding the default block
+size (@pxref{Block size}).
+This option is equivalent to @option{--block-size=1K}.
+
+@item -m
+@itemx --format=commas
+@opindex -m
+@opindex --format
+@opindex commas@r{, outputting between files}
+List files horizontally, with as many as will fit on each line,
+separated by @samp{, } (a comma and a space).
+
+@item -p
+@itemx --indicator-style=slash
+@opindex -p
+@opindex --indicator-style
+@cindex file type, marking
+Append a @samp{/} to directory names.
+
+@item -x
+@itemx --format=across
+@itemx --format=horizontal
+@opindex -x
+@opindex --format
+@opindex across@r{, listing files}
+@opindex horizontal@r{, listing files}
+List the files in columns, sorted horizontally.
+
+@item -T @var{cols}
+@itemx --tabsize=@var{cols}
+@opindex -T
+@opindex --tabsize
+Assume that each tab stop is @var{cols} columns wide. The default is 8.
+@command{ls} uses tabs where possible in the output, for efficiency. If
+@var{cols} is zero, do not use tabs at all.
+
+@c FIXME: remove in 2009, if Apple Terminal has been fixed for long enough.
+Some terminal emulators (at least Apple Terminal 1.5 (133) from Mac OS X 10.4.8)
+do not properly align columns to the right of a TAB following a
+non-@acronym{ASCII} byte. If you use such a terminal emulator, use the
+@option{-T0} option or put @code{TABSIZE=0} in your environment to tell
+@command{ls} to align using spaces, not tabs.
+
+@item -w
+@itemx --width=@var{cols}
+@opindex -w
+@opindex --width
+@vindex COLUMNS
+Assume the screen is @var{cols} columns wide. The default is taken
+from the terminal settings if possible; otherwise the environment
+variable @env{COLUMNS} is used if it is set; otherwise the default
+is 80.
+
+@end table
+
+
+@node Formatting file timestamps
+@subsection Formatting file timestamps
+
+By default, file timestamps are listed in abbreviated form. Most
+locales use a timestamp like @samp{2002-03-30 23:45}. However, the
+default @acronym{POSIX} locale uses a date like @samp{Mar 30@ @ 2002}
+for non-recent timestamps, and a date-without-year and time like
+@samp{Mar 30 23:45} for recent timestamps.
+
+A timestamp is considered to be @dfn{recent} if it is less than six
+months old, and is not dated in the future. If a timestamp dated
+today is not listed in recent form, the timestamp is in the future,
+which means you probably have clock skew problems which may break
+programs like @command{make} that rely on file timestamps.
+
+@vindex TZ
+Time stamps are listed according to the time zone rules specified by
+the @env{TZ} environment variable, or by the system default rules if
+@env{TZ} is not set. @xref{TZ Variable,, Specifying the Time Zone
+with @env{TZ}, libc, The GNU C Library}.
+
+The following option changes how file timestamps are printed.
+
+@table @samp
+@item --time-style=@var{style}
+@opindex --time-style
+@cindex time style
+List timestamps in style @var{style}. The @var{style} should
+be one of the following:
+
+@table @samp
+@item +@var{format}
+@vindex LC_TIME
+List timestamps using @var{format}, where @var{format} is interpreted
+like the format argument of @command{date} (@pxref{date invocation}).
+For example, @option{--time-style="+%Y-%m-%d %H:%M:%S"} causes
+@command{ls} to list timestamps like @samp{2002-03-30 23:45:56}. As
+with @command{date}, @var{format}'s interpretation is affected by the
+@env{LC_TIME} locale category.
+
+If @var{format} contains two format strings separated by a newline,
+the former is used for non-recent files and the latter for recent
+files; if you want output columns to line up, you may need to insert
+spaces in one of the two formats.
+
+@item full-iso
+List timestamps in full using @acronym{ISO} 8601 date, time, and time zone
+format with nanosecond precision, e.g., @samp{2002-03-30
+23:45:56.477817180 -0700}. This style is equivalent to
+@samp{+%Y-%m-%d %H:%M:%S.%N %z}.
+
+This is useful because the time output includes all the information that
+is available from the operating system. For example, this can help
+explain @command{make}'s behavior, since @acronym{GNU} @command{make}
+uses the full timestamp to determine whether a file is out of date.
+
+@item long-iso
+List @acronym{ISO} 8601 date and time in minutes, e.g.,
+@samp{2002-03-30 23:45}. These timestamps are shorter than
+@samp{full-iso} timestamps, and are usually good enough for everyday
+work. This style is equivalent to @samp{+%Y-%m-%d %H:%M}.
+
+@item iso
+List @acronym{ISO} 8601 dates for non-recent timestamps (e.g.,
+@samp{2002-03-30@ }), and @acronym{ISO} 8601 month, day, hour, and
+minute for recent timestamps (e.g., @samp{03-30 23:45}). These
+timestamps are uglier than @samp{long-iso} timestamps, but they carry
+nearly the same information in a smaller space and their brevity helps
+@command{ls} output fit within traditional 80-column output lines.
+The following two @command{ls} invocations are equivalent:
+
+@example
+newline='
+'
+ls -l --time-style="+%Y-%m-%d $newline%m-%d %H:%M"
+ls -l --time-style="iso"
+@end example
+
+@item locale
+@vindex LC_TIME
+List timestamps in a locale-dependent form. For example, a Finnish
+locale might list non-recent timestamps like @samp{maalis 30@ @ 2002}
+and recent timestamps like @samp{maalis 30 23:45}. Locale-dependent
+timestamps typically consume more space than @samp{iso} timestamps and
+are harder for programs to parse because locale conventions vary so
+widely, but they are easier for many people to read.
+
+The @env{LC_TIME} locale category specifies the timestamp format. The
+default @acronym{POSIX} locale uses timestamps like @samp{Mar 30@
+@ 2002} and @samp{Mar 30 23:45}; in this locale, the following two
+@command{ls} invocations are equivalent:
+
+@example
+newline='
+'
+ls -l --time-style="+%b %e %Y$newline%b %e %H:%M"
+ls -l --time-style="locale"
+@end example
+
+Other locales behave differently. For example, in a German locale,
+@option{--time-style="locale"} might be equivalent to
+@option{--time-style="+%e. %b %Y $newline%e. %b %H:%M"}
+and might generate timestamps like @samp{30. M@"ar 2002@ } and
+@samp{30. M@"ar 23:45}.
+
+@item posix-@var{style}
+@vindex LC_TIME
+List @acronym{POSIX}-locale timestamps if the @env{LC_TIME} locale
+category is @acronym{POSIX}, @var{style} timestamps otherwise. For
+example, the @samp{posix-long-iso} style lists
+timestamps like @samp{Mar 30@ @ 2002} and @samp{Mar 30 23:45} when in
+the @acronym{POSIX} locale, and like @samp{2002-03-30 23:45} otherwise.
+@end table
+@end table
+
+@vindex TIME_STYLE
+You can specify the default value of the @option{--time-style} option
+with the environment variable @env{TIME_STYLE}; if @env{TIME_STYLE} is not set
+the default style is @samp{locale}. @acronym{GNU} Emacs 21.3 and
+later use the @option{--dired} option and therefore can parse any date
+format, but if you are using Emacs 21.1 or 21.2 and specify a
+non-@acronym{POSIX} locale you may need to set
+@samp{TIME_STYLE="posix-long-iso"}.
+
+To avoid certain denial-of-service attacks, timestamps that would be
+longer than 1000 bytes may be treated as errors.
+
+
+@node Formatting the file names
+@subsection Formatting the file names
+
+These options change how file names themselves are printed.
+
+@table @samp
+
+@item -b
+@itemx --escape
+@itemx --quoting-style=escape
+@opindex -b
+@opindex --escape
+@opindex --quoting-style
+@cindex backslash sequences for file names
+Quote nongraphic characters in file names using alphabetic and octal
+backslash sequences like those used in C.
+
+@item -N
+@itemx --literal
+@itemx --quoting-style=literal
+@opindex -N
+@opindex --literal
+@opindex --quoting-style
+Do not quote file names. However, with @command{ls} nongraphic
+characters are still printed as question marks if the output is a
+terminal and you do not specify the @option{--show-control-chars}
+option.
+
+@item -q
+@itemx --hide-control-chars
+@opindex -q
+@opindex --hide-control-chars
+Print question marks instead of nongraphic characters in file names.
+This is the default if the output is a terminal and the program is
+@command{ls}.
+
+@item -Q
+@itemx --quote-name
+@itemx --quoting-style=c
+@opindex -Q
+@opindex --quote-name
+@opindex --quoting-style
+Enclose file names in double quotes and quote nongraphic characters as
+in C.
+
+@item --quoting-style=@var{word}
+@opindex --quoting-style
+@cindex quoting style
+Use style @var{word} to quote file names and other strings that may
+contain arbitrary characters. The @var{word} should
+be one of the following:
+
+@table @samp
+@item literal
+Output strings as-is; this is the same as the @option{-N} or
+@option{--literal} option.
+@item shell
+Quote strings for the shell if they contain shell metacharacters or would
+cause ambiguous output.
+The quoting is suitable for @acronym{POSIX}-compatible shells like
+@command{bash}, but it does not always work for incompatible shells
+like @command{csh}.
+@item shell-always
+Quote strings for the shell, even if they would normally not require quoting.
+@item c
+Quote strings as for C character string literals, including the
+surrounding double-quote characters; this is the same as the
+@option{-Q} or @option{--quote-name} option.
+@item escape
+Quote strings as for C character string literals, except omit the
+surrounding double-quote
+characters; this is the same as the @option{-b} or @option{--escape} option.
+@item clocale
+Quote strings as for C character string literals, except use
+surrounding quotation marks appropriate for the
+locale.
+@item locale
+@c Use @t instead of @samp to avoid duplicate quoting in some output styles.
+Quote strings as for C character string literals, except use
+surrounding quotation marks appropriate for the locale, and quote
+@t{`like this'} instead of @t{"like
+this"} in the default C locale. This looks nicer on many displays.
+@end table
+
+You can specify the default value of the @option{--quoting-style} option
+with the environment variable @env{QUOTING_STYLE}. If that environment
+variable is not set, the default value is @samp{literal}, but this
+default may change to @samp{shell} in a future version of this package.
+
+@item --show-control-chars
+@opindex --show-control-chars
+Print nongraphic characters as-is in file names.
+This is the default unless the output is a terminal and the program is
+@command{ls}.
+
+@end table
+
+
+@node dir invocation
+@section @command{dir}: Briefly list directory contents
+
+@pindex dir
+@cindex directory listing, brief
+
+@command{dir} is equivalent to @code{ls -C
+-b}; that is, by default files are listed in columns, sorted vertically,
+and special characters are represented by backslash escape sequences.
+
+@xref{ls invocation, @command{ls}}.
+
+
+@node vdir invocation
+@section @command{vdir}: Verbosely list directory contents
+
+@pindex vdir
+@cindex directory listing, verbose
+
+@command{vdir} is equivalent to @code{ls -l
+-b}; that is, by default files are listed in long format and special
+characters are represented by backslash escape sequences.
+
+@node dircolors invocation
+@section @command{dircolors}: Color setup for @command{ls}
+
+@pindex dircolors
+@cindex color setup
+@cindex setup for color
+
+@command{dircolors} outputs a sequence of shell commands to set up the
+terminal for color output from @command{ls} (and @command{dir}, etc.).
+Typical usage:
+
+@example
+eval "`dircolors [@var{option}]@dots{} [@var{file}]`"
+@end example
+
+If @var{file} is specified, @command{dircolors} reads it to determine which
+colors to use for which file types and extensions. Otherwise, a
+precompiled database is used. For details on the format of these files,
+run @samp{dircolors --print-database}.
+
+@vindex LS_COLORS
+@vindex SHELL @r{environment variable, and color}
+The output is a shell command to set the @env{LS_COLORS} environment
+variable. You can specify the shell syntax to use on the command line,
+or @command{dircolors} will guess it from the value of the @env{SHELL}
+environment variable.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+@item -b
+@itemx --sh
+@itemx --bourne-shell
+@opindex -b
+@opindex --sh
+@opindex --bourne-shell
+@cindex Bourne shell syntax for color setup
+@cindex @command{sh} syntax for color setup
+Output Bourne shell commands. This is the default if the @env{SHELL}
+environment variable is set and does not end with @samp{csh} or
+@samp{tcsh}.
+
+@item -c
+@itemx --csh
+@itemx --c-shell
+@opindex -c
+@opindex --csh
+@opindex --c-shell
+@cindex C shell syntax for color setup
+@cindex @command{csh} syntax for color setup
+Output C shell commands. This is the default if @code{SHELL} ends with
+@command{csh} or @command{tcsh}.
+
+@item -p
+@itemx --print-database
+@opindex -p
+@opindex --print-database
+@cindex color database, printing
+@cindex database for color setup, printing
+@cindex printing color database
+Print the (compiled-in) default color configuration database. This
+output is itself a valid configuration file, and is fairly descriptive
+of the possibilities.
+
+@end table
+
+@exitstatus
+
+
+@node Basic operations
+@chapter Basic operations
+
+@cindex manipulating files
+
+This chapter describes the commands for basic file manipulation:
+copying, moving (renaming), and deleting (removing).
+
+@menu
+* cp invocation:: Copy files.
+* dd invocation:: Convert and copy a file.
+* install invocation:: Copy files and set attributes.
+* mv invocation:: Move (rename) files.
+* rm invocation:: Remove files or directories.
+* shred invocation:: Remove files more securely.
+@end menu
+
+
+@node cp invocation
+@section @command{cp}: Copy files and directories
+
+@pindex cp
+@cindex copying files and directories
+@cindex files, copying
+@cindex directories, copying
+
+@command{cp} copies files (or, optionally, directories). The copy is
+completely independent of the original. You can either copy one file to
+another, or copy arbitrarily many files to a destination directory.
+Synopses:
+
+@example
+cp [@var{option}]@dots{} [-T] @var{source} @var{dest}
+cp [@var{option}]@dots{} @var{source}@dots{} @var{directory}
+cp [@var{option}]@dots{} -t @var{directory} @var{source}@dots{}
+@end example
+
+@itemize @bullet
+@item
+If two file names are given, @command{cp} copies the first file to the
+second.
+
+@item
+If the @option{--target-directory} (@option{-t}) option is given, or
+failing that if the last file is a directory and the
+@option{--no-target-directory} (@option{-T}) option is not given,
+@command{cp} copies each @var{source} file to the specified directory,
+using the @var{source}s' names.
+@end itemize
+
+Generally, files are written just as they are read. For exceptions,
+see the @option{--sparse} option below.
+
+By default, @command{cp} does not copy directories. However, the
+@option{-R}, @option{-a}, and @option{-r} options cause @command{cp} to
+copy recursively by descending into source directories and copying files
+to corresponding destination directories.
+
+By default, @command{cp} follows symbolic links only when not copying
+recursively. This default can be overridden with the
+@option{--archive} (@option{-a}), @option{-d}, @option{--dereference}
+(@option{-L}), @option{--no-dereference} (@option{-P}), and
+@option{-H} options. If more than one of these options is specified,
+the last one silently overrides the others.
+
+By default, @command{cp} copies the contents of special files only
+when not copying recursively. This default can be overridden with the
+@option{--copy-contents} option.
+
+@cindex self-backups
+@cindex backups, making only
+@command{cp} generally refuses to copy a file onto itself, with the
+following exception: if @option{--force --backup} is specified with
+@var{source} and @var{dest} identical, and referring to a regular file,
+@command{cp} will make a backup file, either regular or numbered, as
+specified in the usual ways (@pxref{Backup options}). This is useful when
+you simply want to make a backup of an existing file before changing it.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+@item -a
+@itemx --archive
+@opindex -a
+@opindex --archive
+Preserve as much as possible of the structure and attributes of the
+original files in the copy (but do not attempt to preserve internal
+directory structure; i.e., @samp{ls -U} may list the entries in a copied
+directory in a different order).
+Equivalent to @option{-dpPR}.
+
+@item -b
+@itemx @w{@kbd{--backup}[=@var{method}]}
+@opindex -b
+@opindex --backup
+@vindex VERSION_CONTROL
+@cindex backups, making
+@xref{Backup options}.
+Make a backup of each file that would otherwise be overwritten or removed.
+As a special case, @command{cp} makes a backup of @var{source} when the force
+and backup options are given and @var{source} and @var{dest} are the same
+name for an existing, regular file. One useful application of this
+combination of options is this tiny Bourne shell script:
+
+@example
+#!/bin/sh
+# Usage: backup FILE...
+# Create a @sc{gnu}-style backup of each listed FILE.
+for i; do
+ cp --backup --force -- "$i" "$i"
+done
+@end example
+
+@item --copy-contents
+@cindex directories, copying recursively
+@cindex copying directories recursively
+@cindex recursively copying directories
+@cindex non-directories, copying as special files
+If copying recursively, copy the contents of any special files (e.g.,
+FIFOs and device files) as if they were regular files. This means
+trying to read the data in each source file and writing it to the
+destination. It is usually a mistake to use this option, as it
+normally has undesirable effects on special files like FIFOs and the
+ones typically found in the @file{/dev} directory. In most cases,
+@code{cp -R --copy-contents} will hang indefinitely trying to read
+from FIFOs and special files like @file{/dev/console}, and it will
+fill up your destination disk if you use it to copy @file{/dev/zero}.
+This option has no effect unless copying recursively, and it does not
+affect the copying of symbolic links.
+
+@item -d
+@opindex -d
+@cindex symbolic links, copying
+@cindex hard links, preserving
+Copy symbolic links as symbolic links rather than copying the files that
+they point to, and preserve hard links between source files in the copies.
+Equivalent to @option{--no-dereference --preserve=links}.
+
+@item -f
+@itemx --force
+@opindex -f
+@opindex --force
+When copying without this option and an existing destination file cannot
+be opened for writing, the copy fails. However, with @option{--force}),
+when a destination file cannot be opened, @command{cp} then unlinks it and
+tries to open it again. Contrast this behavior with that enabled by
+@option{--link} and @option{--symbolic-link}, whereby the destination file
+is never opened but rather is unlinked unconditionally. Also see the
+description of @option{--remove-destination}.
+
+This option is independent of the @option{--interactive} or
+@option{-i} option: neither cancels the effect of the other.
+
+@item -H
+@opindex -H
+If a command line argument specifies a symbolic link, then copy the
+file it points to rather than the symbolic link itself. However,
+copy (preserving its nature) any symbolic link that is encountered
+via recursive traversal.
+
+@item -i
+@itemx --interactive
+@opindex -i
+@opindex --interactive
+When copying a file other than a directory, prompt whether to
+overwrite an existing destination file.
+
+@item -l
+@itemx --link
+@opindex -l
+@opindex --link
+Make hard links instead of copies of non-directories.
+
+@item -L
+@itemx --dereference
+@opindex -L
+@opindex --dereference
+Always follow symbolic links.
+
+@item -P
+@itemx --no-dereference
+@opindex -P
+@opindex --no-dereference
+@cindex symbolic links, copying
+Copy symbolic links as symbolic links rather than copying the files that
+they point to.
+
+@item -p
+@itemx @w{@kbd{--preserve}[=@var{attribute_list}]}
+@opindex -p
+@opindex --preserve
+@cindex file information, preserving
+Preserve the specified attributes of the original files.
+If specified, the @var{attribute_list} must be a comma-separated list
+of one or more of the following strings:
+
+@table @samp
+@itemx mode
+Preserve the file mode bits and access control lists.
+@itemx ownership
+Preserve the owner and group. On most modern systems,
+only users with appropriate privileges may change the owner of a file,
+and ordinary users
+may preserve the group ownership of a file only if they happen to be
+a member of the desired group.
+@itemx timestamps
+Preserve the times of last access and last modification, when possible.
+In general, it is not possible to preserve these attributes
+when the affected file is a symbolic link.
+However, FreeBSD now provides the @code{lutimes} function, which makes
+it possibile even for symbolic links. However, this implementation does
+not yet take advantage of that.
+@c FIXME: once we provide lutimes support, update the above.
+@itemx links
+Preserve in the destination files
+any links between corresponding source files.
+@c Give examples illustrating how hard links are preserved.
+@c Also, show how soft links map to hard links with -L and -H.
+@itemx all
+Preserve all file attributes.
+Equivalent to specifying all of the above.
+@end table
+
+Using @option{--preserve} with no @var{attribute_list} is equivalent
+to @option{--preserve=mode,ownership,timestamps}.
+
+In the absence of this option, each destination file is created with the
+mode bits of the corresponding source file, minus the bits set in the
+umask and minus the set-user-ID and set-group-ID bits.
+@xref{File permissions}.
+
+@itemx @w{@kbd{--no-preserve}=@var{attribute_list}}
+@cindex file information, preserving
+Do not preserve the specified attributes. The @var{attribute_list}
+has the same form as for @option{--preserve}.
+
+@itemx --parents
+@opindex --parents
+@cindex parent directories and @command{cp}
+Form the name of each destination file by appending to the target
+directory a slash and the specified name of the source file. The last
+argument given to @command{cp} must be the name of an existing directory.
+For example, the command:
+
+@example
+cp --parents a/b/c existing_dir
+@end example
+
+@noindent
+copies the file @file{a/b/c} to @file{existing_dir/a/b/c}, creating
+any missing intermediate directories.
+
+@itemx @w{@kbd{--reply}=@var{how}}
+@opindex --reply
+@cindex interactivity
+@c FIXME: remove in 2008
+@strong{Deprecated: to be removed in 2008.}@*
+Using @option{--reply=yes} makes @command{cp} act as if @samp{yes} were
+given as a response to every prompt about a destination file. That effectively
+cancels any preceding @option{--interactive} or @option{-i} option.
+Specify @option{--reply=no} to make @command{cp} act as if @samp{no} were
+given as a response to every prompt about a destination file.
+Specify @option{--reply=query} to make @command{cp} prompt the user
+about each existing destination file.
+
+@item -R
+@itemx -r
+@itemx --recursive
+@opindex -R
+@opindex -r
+@opindex --recursive
+@cindex directories, copying recursively
+@cindex copying directories recursively
+@cindex recursively copying directories
+@cindex non-directories, copying as special files
+Copy directories recursively. Symbolic links are not followed by
+default; see the @option{--archive} (@option{-a}), @option{-d},
+@option{--dereference} (@option{-L}), @option{--no-dereference}
+(@option{-P}), and @option{-H} options. Special files are copied by
+creating a destination file of the same type as the source; see the
+@option{--copy-contents} option. It is not portable to use
+@option{-r} to copy symbolic links or special files. On some
+non-@sc{gnu} systems, @option{-r} implies the equivalent of
+@option{-L} and @option{--copy-contents} for historical reasons.
+Also, it is not portable to use @option{-R} to copy symbolic links
+unless you also specify @option{-P}, as @acronym{POSIX} allows
+implementations that dereference symbolic links by default.
+
+@item --remove-destination
+@opindex --remove-destination
+Remove each existing destination file before attempting to open it
+(contrast with @option{-f} above).
+
+@item --sparse=@var{when}
+@opindex --sparse=@var{when}
+@cindex sparse files, copying
+@cindex holes, copying files with
+@findex read @r{system call, and holes}
+A @dfn{sparse file} contains @dfn{holes}---a sequence of zero bytes that
+does not occupy any physical disk blocks; the @samp{read} system call
+reads these as zeros. This can both save considerable disk space and
+increase speed, since many binary files contain lots of consecutive zero
+bytes. By default, @command{cp} detects holes in input source files via a crude
+heuristic and makes the corresponding output file sparse as well.
+Only regular files may be sparse.
+
+The @var{when} value can be one of the following:
+
+@table @samp
+@item auto
+The default behavior: if the input file is sparse, attempt to make
+the output file sparse, too. However, if an output file exists but
+refers to a non-regular file, then do not attempt to make it sparse.
+
+@item always
+For each sufficiently long sequence of zero bytes in the input file,
+attempt to create a corresponding hole in the output file, even if the
+input file does not appear to be sparse.
+This is useful when the input file resides on a file system
+that does not support sparse files
+(for example, @samp{efs} file systems in SGI IRIX 5.3 and earlier),
+but the output file is on a type of file system that does support them.
+Holes may be created only in regular files, so if the destination file
+is of some other type, @command{cp} does not even try to make it sparse.
+
+@item never
+Never make the output file sparse.
+This is useful in creating a file for use with the @command{mkswap} command,
+since such a file must not have any holes.
+@end table
+
+@optStripTrailingSlashes
+
+@item -s
+@itemx --symbolic-link
+@opindex -s
+@opindex --symbolic-link
+@cindex symbolic links, copying with
+Make symbolic links instead of copies of non-directories. All source
+file names must be absolute (starting with @samp{/}) unless the
+destination files are in the current directory. This option merely
+results in an error message on systems that do not support symbolic links.
+
+@optBackupSuffix
+
+@optTargetDirectory
+
+@optNoTargetDirectory
+
+@item -u
+@itemx --update
+@opindex -u
+@opindex --update
+@cindex newer files, copying only
+Do not copy a non-directory that has an existing destination with the
+same or newer modification time. If time stamps are being preserved,
+the comparison is to the source time stamp truncated to the
+resolutions of the destination file system and of the system calls
+used to update time stamps; this avoids duplicate work if several
+@samp{cp -pu} commands are executed with the same source and
+destination.
+
+@item -v
+@itemx --verbose
+@opindex -v
+@opindex --verbose
+Print the name of each file before copying it.
+
+@item -x
+@itemx --one-file-system
+@opindex -x
+@opindex --one-file-system
+@cindex file systems, omitting copying to different
+Skip subdirectories that are on different file systems from the one that
+the copy started on.
+However, mount point directories @emph{are} copied.
+
+@end table
+
+@exitstatus
+
+
+@node dd invocation
+@section @command{dd}: Convert and copy a file
+
+@pindex dd
+@cindex converting while copying a file
+
+@command{dd} copies a file (from standard input to standard output, by
+default) with a changeable I/O block size, while optionally performing
+conversions on it. Synopses:
+
+@example
+dd [@var{operand}]@dots{}
+dd @var{option}
+@end example
+
+The only options are @option{--help} and @option{--version}.
+@xref{Common options}. @command{dd} accepts the following operands.
+
+@table @samp
+
+@item if=@var{file}
+@opindex if
+Read from @var{file} instead of standard input.
+
+@item of=@var{file}
+@opindex of
+Write to @var{file} instead of standard output. Unless
+@samp{conv=notrunc} is given, @command{dd} truncates @var{file} to zero
+bytes (or the size specified with @samp{seek=}).
+
+@item ibs=@var{bytes}
+@opindex ibs
+@cindex block size of input
+@cindex input block size
+Set the input block size to @var{bytes}.
+This makes @command{dd} read @var{bytes} per block.
+
+@item obs=@var{bytes}
+@opindex obs
+@cindex block size of output
+@cindex output block size
+Set the output block size to @var{bytes}.
+This makes @command{dd} write @var{bytes} per block.
+
+@item bs=@var{bytes}
+@opindex bs
+@cindex block size
+Set both input and output block sizes to @var{bytes}.
+This makes @command{dd} read and write @var{bytes} per block,
+overriding any @samp{ibs} and @samp{obs} settings.
+
+@item cbs=@var{bytes}
+@opindex cbs
+@cindex block size of conversion
+@cindex conversion block size
+@cindex fixed-length records, converting to variable-length
+@cindex variable-length records, converting to fixed-length
+Set the conversion block size to @var{bytes}.
+When converting variable-length records to fixed-length ones
+(@option{conv=block}) or the reverse (@option{conv=unblock}),
+use @var{bytes} as the fixed record length.
+
+@item skip=@var{blocks}
+@opindex skip
+Skip @var{blocks} @samp{ibs}-byte blocks in the input file before copying.
+
+@item seek=@var{blocks}
+@opindex seek
+Skip @var{blocks} @samp{obs}-byte blocks in the output file before copying.
+
+@item count=@var{blocks}
+@opindex count
+Copy @var{blocks} @samp{ibs}-byte blocks from the input file, instead
+of everything until the end of the file.
+
+@item conv=@var{conversion}[,@var{conversion}]@dots{}
+@opindex conv
+Convert the file as specified by the @var{conversion} argument(s).
+(No spaces around any comma(s).)
+
+Conversions:
+
+@table @samp
+
+@item ascii
+@opindex ascii@r{, converting to}
+Convert @acronym{EBCDIC} to @acronym{ASCII},
+using the conversion table specified by @acronym{POSIX}.
+This provides a 1:1 translation for all 256 bytes.
+
+@item ebcdic
+@opindex ebcdic@r{, converting to}
+Convert @acronym{ASCII} to @acronym{EBCDIC}.
+This is the inverse of the @samp{ascii} conversion.
+
+@item ibm
+@opindex alternate ebcdic@r{, converting to}
+Convert @acronym{ASCII} to alternate @acronym{EBCDIC},
+using the alternate conversion table specified by @acronym{POSIX}.
+This is not a 1:1 translation, but reflects common historical practice
+for @samp{~}, @samp{[}, and @samp{]}.
+
+The @samp{ascii}, @samp{ebcdic}, and @samp{ibm} conversions are
+mutually exclusive.
+
+@item block
+@opindex block @r{(space-padding)}
+For each line in the input, output @samp{cbs} bytes, replacing the
+input newline with a space and padding with spaces as necessary.
+
+@item unblock
+@opindex unblock
+Replace trailing spaces in each @samp{cbs}-sized input block with a
+newline.
+
+The @samp{block} and @samp{unblock} conversions are mutually exclusive.
+
+@item lcase
+@opindex lcase@r{, converting to}
+Change uppercase letters to lowercase.
+
+@item ucase
+@opindex ucase@r{, converting to}
+Change lowercase letters to uppercase.
+
+The @samp{lcase} and @samp{ucase} conversions are mutually exclusive.
+
+@item swab
+@opindex swab @r{(byte-swapping)}
+@cindex byte-swapping
+Swap every pair of input bytes. @sc{gnu} @command{dd}, unlike others, works
+when an odd number of bytes are read---the last byte is simply copied
+(since there is nothing to swap it with).
+
+@item noerror
+@opindex noerror
+@cindex read errors, ignoring
+Continue after read errors.
+
+@item nocreat
+@opindex nocreat
+@cindex creating output file, avoiding
+Do not create the output file; the output file must already exist.
+
+@item excl
+@opindex excl
+@cindex creating output file, requiring
+Fail if the output file already exists; @command{dd} must create the
+output file itself.
+
+The @samp{excl} and @samp{nocreat} conversions are mutually exclusive.
+
+@item notrunc
+@opindex notrunc
+@cindex truncating output file, avoiding
+Do not truncate the output file.
+
+@item sync
+@opindex sync @r{(padding with nulls)}
+Pad every input block to size of @samp{ibs} with trailing zero bytes.
+When used with @samp{block} or @samp{unblock}, pad with spaces instead of
+zero bytes.
+
+@item fdatasync
+@opindex fdatasync
+@cindex synchronized data writes, before finishing
+Synchronize output data just before finishing. This forces a physical
+write of output data.
+
+@item fsync
+@opindex fsync
+@cindex synchronized data and metadata writes, before finishing
+Synchronize output data and metadata just before finishing. This
+forces a physical write of output data and metadata.
+
+@end table
+
+@item iflag=@var{flag}[,@var{flag}]@dots{}
+@opindex iflag
+Access the input file using the flags specified by the @var{flag}
+argument(s). (No spaces around any comma(s).)
+
+@item oflag=@var{flag}[,@var{flag}]@dots{}
+@opindex oflag
+Access the output file using the flags specified by the @var{flag}
+argument(s). (No spaces around any comma(s).)
+
+Here are the flags. Not every flag is supported on every operating
+system.
+
+@table @samp
+
+@item append
+@opindex append
+@cindex appending to the output file
+Write in append mode, so that even if some other process is writing to
+this file, every @command{dd} write will append to the current
+contents of the file. This flag makes sense only for output.
+If you combine this flag with the @samp{of=@var{file}} operand,
+you should also specify @samp{conv=notrunc} unless you want the
+output file to be truncated before being appended to.
+
+@item direct
+@opindex direct
+@cindex direct I/O
+Use direct I/O for data, avoiding the buffer cache.
+
+@item directory
+@opindex directory
+@cindex directory I/O
+
+Fail unless the file is a directory. Most operating systems do not
+allow I/O to a directory, so this flag has limited utility.
+
+@item dsync
+@opindex dsync
+@cindex synchronized data reads
+Use synchronized I/O for data. For the output file, this forces a
+physical write of output data on each write. For the input file,
+this flag can matter when reading from a remote file that has been
+written to synchronously by some other process. Metadata (e.g.,
+last-access and last-modified time) is not necessarily synchronized.
+
+@item sync
+@opindex sync
+@cindex synchronized data and metadata I/O
+Use synchronized I/O for both data and metadata.
+
+@item nonblock
+@opindex nonblock
+@cindex nonblocking I/O
+Use non-blocking I/O.
+
+@item noatime
+@opindex noatime
+@cindex access time
+Do not update the file's access time.
+Some older file systems silently ignore this flag, so it is a good
+idea to test it on your files before relying on it.
+
+@item noctty
+@opindex noctty
+@cindex controlling terminal
+Do not assign the file to be a controlling terminal for @command{dd}.
+This has no effect when the file is not a terminal.
+On many hosts (e.g., @acronym{GNU}/Linux hosts), this option has no effect
+at all.
+
+@item nofollow
+@opindex nofollow
+@cindex symbolic links, following
+Do not follow symbolic links.
+
+@item nolinks
+@opindex nolinks
+@cindex hard links
+Fail if the file has multiple hard links.
+
+@item binary
+@opindex binary
+@cindex binary I/O
+Use binary I/O. This option has an effect only on nonstandard
+platforms that distinguish binary from text I/O.
+
+@item text
+@opindex text
+@cindex text I/O
+Use text I/O. Like @samp{binary}, this option has no effect on
+standard platforms.
+
+@end table
+
+These flags are not supported on all systems, and @samp{dd} rejects
+attempts to use them when they are not supported. When reading from
+standard input or writing to standard output, the @samp{nofollow} and
+@samp{noctty} flags should not be specified, and the other flags
+(e.g., @samp{nonblock}) can affect how other processes behave with the
+affected file descriptors, even after @command{dd} exits.
+
+@end table
+
+@cindex multipliers after numbers
+The numeric-valued strings above (@var{bytes} and @var{blocks}) can be
+followed by a multiplier: @samp{b}=512, @samp{c}=1,
+@samp{w}=2, @samp{x@var{m}}=@var{m}, or any of the
+standard block size suffixes like @samp{k}=1024 (@pxref{Block size}).
+
+Use different @command{dd} invocations to use different block sizes for
+skipping and I/O@. For example, the following shell commands copy data
+in 512 KiB blocks between a disk and a tape, but do not save or restore a
+4 KiB label at the start of the disk:
+
+@example
+disk=/dev/rdsk/c0t1d0s2
+tape=/dev/rmt/0
+
+# Copy all but the label from disk to tape.
+(dd bs=4k skip=1 count=0 && dd bs=512k) <$disk >$tape
+
+# Copy from tape back to disk, but leave the disk label alone.
+(dd bs=4k seek=1 count=0 && dd bs=512k) <$tape >$disk
+@end example
+
+Sending an @samp{INFO} signal to a running @command{dd}
+process makes it print I/O statistics to standard error
+and then resume copying. In the example below,
+@command{dd} is run in the background to copy 10 million blocks.
+The @command{kill} command makes it output intermediate I/O statistics,
+and when @command{dd} completes, it outputs the final statistics.
+
+@example
+$ dd if=/dev/zero of=/dev/null count=10MB & pid=$!
+$ kill -s INFO $pid; wait $pid
+3385223+0 records in
+3385223+0 records out
+1733234176 bytes (1.7 GB) copied, 6.42173 seconds, 270 MB/s
+10000000+0 records in
+10000000+0 records out
+5120000000 bytes (5.1 GB) copied, 18.913 seconds, 271 MB/s
+@end example
+
+@vindex POSIXLY_CORRECT
+On systems lacking the @samp{INFO} signal @command{dd} responds to the
+@samp{USR1} signal instead, unless the @env{POSIXLY_CORRECT}
+environment variable is set.
+
+@exitstatus
+
+
+@node install invocation
+@section @command{install}: Copy files and set attributes
+
+@pindex install
+@cindex copying files and setting attributes
+
+@command{install} copies files while setting their file mode bits and, if
+possible, their owner and group. Synopses:
+
+@example
+install [@var{option}]@dots{} [-T] @var{source} @var{dest}
+install [@var{option}]@dots{} @var{source}@dots{} @var{directory}
+install [@var{option}]@dots{} -t @var{directory} @var{source}@dots{}
+install [@var{option}]@dots{} -d @var{directory}@dots{}
+@end example
+
+@itemize @bullet
+@item
+If two file names are given, @command{install} copies the first file to the
+second.
+
+@item
+If the @option{--target-directory} (@option{-t}) option is given, or
+failing that if the last file is a directory and the
+@option{--no-target-directory} (@option{-T}) option is not given,
+@command{install} copies each @var{source} file to the specified
+directory, using the @var{source}s' names.
+
+@item
+If the @option{--directory} (@option{-d}) option is given,
+@command{install} creates each @var{directory} and any missing parent
+directories. Parent directories are created with mode
+@samp{u=rwx,go=rx} (755), regardless of the @option{-m} option or the
+current umask. @xref{Directory Setuid and Setgid}, for how the
+set-user-ID and set-group-ID bits of parent directories are inherited.
+@end itemize
+
+@cindex Makefiles, installing programs in
+@command{install} is similar to @command{cp}, but allows you to control the
+attributes of destination files. It is typically used in Makefiles to
+copy programs into their destination directories. It refuses to copy
+files onto themselves.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@optBackup
+
+@item -c
+@opindex -c
+Ignored; for compatibility with old Unix versions of @command{install}.
+
+@item -d
+@itemx --directory
+@opindex -d
+@opindex --directory
+@cindex directories, creating with given attributes
+@cindex parent directories, creating missing
+@cindex leading directories, creating missing
+Create any missing parent directories, giving them the default
+attributes. Then create each given directory, setting their owner,
+group and mode as given on the command line or to the defaults.
+
+@item -g @var{group}
+@itemx --group=@var{group}
+@opindex -g
+@opindex --group
+@cindex group ownership of installed files, setting
+Set the group ownership of installed files or directories to
+@var{group}. The default is the process's current group. @var{group}
+may be either a group name or a numeric group ID.
+
+@item -m @var{mode}
+@itemx --mode=@var{mode}
+@opindex -m
+@opindex --mode
+@cindex permissions of installed files, setting
+Set the file mode bits for the installed file or directory to @var{mode},
+which can be either an octal number, or a symbolic mode as in
+@command{chmod}, with @samp{a=} (no access allowed to anyone) as the
+point of departure (@pxref{File permissions}).
+The default mode is @samp{u=rwx,go=rx,a-s}---read, write, and
+execute for the owner, read and execute for group and other, and with
+set-user-ID and set-group-ID disabled.
+This default is not quite the same as @samp{755}, since it disables
+instead of preserving set-user-ID and set-group-ID on directories.
+@xref{Directory Setuid and Setgid}.
+
+@item -o @var{owner}
+@itemx --owner=@var{owner}
+@opindex -o
+@opindex --owner
+@cindex ownership of installed files, setting
+@cindex appropriate privileges
+@vindex root @r{as default owner}
+If @command{install} has appropriate privileges (is run as root), set the
+ownership of installed files or directories to @var{owner}. The default
+is @code{root}. @var{owner} may be either a user name or a numeric user
+ID.
+
+@item -p
+@itemx --preserve-timestamps
+@opindex -p
+@opindex --preserve-timestamps
+@cindex timestamps of installed files, preserving
+Set the time of last access and the time of last modification of each
+installed file to match those of each corresponding original file.
+When a file is installed without this option, its last access and
+last modification times are both set to the time of installation.
+This option is useful if you want to use the last modification times
+of installed files to keep track of when they were last built as opposed
+to when they were last installed.
+
+@item -s
+@itemx --strip
+@opindex -s
+@opindex --strip
+@cindex symbol table information, stripping
+@cindex stripping symbol table information
+Strip the symbol tables from installed binary executables.
+
+@optBackupSuffix
+
+@optTargetDirectory
+
+@optNoTargetDirectory
+
+@item -v
+@itemx --verbose
+@opindex -v
+@opindex --verbose
+Print the name of each file before copying it.
+
+@end table
+
+@exitstatus
+
+
+@node mv invocation
+@section @command{mv}: Move (rename) files
+
+@pindex mv
+
+@command{mv} moves or renames files (or directories). Synopses:
+
+@example
+mv [@var{option}]@dots{} [-T] @var{source} @var{dest}
+mv [@var{option}]@dots{} @var{source}@dots{} @var{directory}
+mv [@var{option}]@dots{} -t @var{directory} @var{source}@dots{}
+@end example
+
+@itemize @bullet
+@item
+If two file names are given, @command{mv} moves the first file to the
+second.
+
+@item
+If the @option{--target-directory} (@option{-t}) option is given, or
+failing that if the last file is a directory and the
+@option{--no-target-directory} (@option{-T}) option is not given,
+@command{mv} moves each @var{source} file to the specified
+directory, using the @var{source}s' names.
+@end itemize
+
+@command{mv} can move any type of file from one file system to another.
+Prior to version @code{4.0} of the fileutils,
+@command{mv} could move only regular files between file systems.
+For example, now @command{mv} can move an entire directory hierarchy
+including special device files from one partition to another. It first
+uses some of the same code that's used by @code{cp -a} to copy the
+requested directories and files, then (assuming the copy succeeded)
+it removes the originals. If the copy fails, then the part that was
+copied to the destination partition is removed. If you were to copy
+three directories from one partition to another and the copy of the first
+directory succeeded, but the second didn't, the first would be left on
+the destination partition and the second and third would be left on the
+original partition.
+
+@cindex prompting, and @command{mv}
+If a destination file exists but is normally unwritable, standard input
+is a terminal, and the @option{-f} or @option{--force} option is not given,
+@command{mv} prompts the user for whether to replace the file. (You might
+own the file, or have write permission on its directory.) If the
+response is not affirmative, the file is skipped.
+
+@emph{Warning}: If you try to move a symlink that points to a directory,
+and you specify the symlink with a trailing slash, then @command{mv}
+doesn't move the symlink but instead moves the directory referenced
+by the symlink. @xref{Trailing slashes}.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@optBackup
+
+@item -f
+@itemx --force
+@opindex -f
+@opindex --force
+@cindex prompts, omitting
+Do not prompt the user before removing a destination file.
+
+@item -i
+@itemx --interactive
+@opindex -i
+@opindex --interactive
+@cindex prompts, forcing
+Prompt whether to overwrite each existing destination file, regardless
+of its permissions.
+If the response is not affirmative, the file is skipped.
+
+@itemx @w{@kbd{--reply}=@var{how}}
+@opindex --reply
+@cindex interactivity
+@c FIXME: remove in 2008
+@strong{Deprecated: to be removed in 2008.}@*
+Specifying @option{--reply=yes} is equivalent to using @option{--force}.
+Specify @option{--reply=no} to make @command{mv} act as if @samp{no} were
+given as a response to every prompt about a destination file.
+Specify @option{--reply=query} to make @command{mv} prompt the user
+about each existing destination file.
+Note that @option{--reply=no} has an effect only when @command{mv} would prompt
+without @option{-i} or equivalent, i.e., when a destination file exists and is
+not writable, standard input is a terminal, and no @option{-f} (or equivalent)
+option is specified.
+
+@item -u
+@itemx --update
+@opindex -u
+@opindex --update
+@cindex newer files, moving only
+Do not move a non-directory that has an existing destination with the
+same or newer modification time.
+If the move is across file system boundaries, the comparison is to the
+source time stamp truncated to the resolutions of the destination file
+system and of the system calls used to update time stamps; this avoids
+duplicate work if several @samp{mv -u} commands are executed with the
+same source and destination.
+
+@item -v
+@itemx --verbose
+@opindex -v
+@opindex --verbose
+Print the name of each file before moving it.
+
+@optStripTrailingSlashes
+
+@optBackupSuffix
+
+@optTargetDirectory
+
+@optNoTargetDirectory
+
+@end table
+
+@exitstatus
+
+
+@node rm invocation
+@section @command{rm}: Remove files or directories
+
+@pindex rm
+@cindex removing files or directories
+
+@command{rm} removes each given @var{file}. By default, it does not remove
+directories. Synopsis:
+
+@example
+rm [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+@cindex prompting, and @command{rm}
+If the @option{-I} or @option{--interactive=once} option is given,
+and there are more than three files or the @option{-r}, @option{-R},
+or @option{--recursive} are given, then @command{rm} prompts the user
+for whether to proceed with the entire operation. If the response is
+not affirmative, the entire command is aborted.
+
+Otherwise, if a file is unwritable, standard input is a terminal, and
+the @option{-f} or @option{--force} option is not given, or the
+@option{-i} or @option{--interactive=always} option @emph{is} given,
+@command{rm} prompts the user for whether to remove the file.
+If the response is not affirmative, the file is skipped.
+
+Any attempt to remove a file whose last file name component is
+@file{.} or @file{..} is rejected without any prompting.
+
+@emph{Warning}: If you use @command{rm} to remove a file, it is usually
+possible to recover the contents of that file. If you want more assurance
+that the contents are truly unrecoverable, consider using @command{shred}.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -f
+@itemx --force
+@opindex -f
+@opindex --force
+Ignore nonexistent files and never prompt the user.
+Ignore any previous @option{--interactive} (@option{-i}) option.
+
+@item -i
+@opindex -i
+Prompt whether to remove each file.
+If the response is not affirmative, the file is skipped.
+Ignore any previous @option{--force} (@option{-f}) option.
+Equivalent to @option{--interactive=always}.
+
+@item -I
+@opindex -I
+Prompt once whether to proceed with the command, if more than three
+files are named or if a recursive removal is requested. Ignore any
+previous @option{--force} (@option{-f}) option. Equivalent to
+@option{--interactive=once}.
+
+@itemx --interactive [=@var{when}]
+@opindex --interactive
+Specify when to issue an interactive prompt. @var{when} may be
+omitted, or one of:
+@itemize @bullet
+@item never
+@vindex never @r{interactive option}
+- Do not prompt at all.
+@item once
+@vindex once @r{interactive option}
+- Prompt once if more than three files are named or if a recursive
+removal is requested. Equivalent to @option{-I}.
+@item always
+@vindex always @r{interactive option}
+- Prompt for every file being removed. Equivalent to @option{-i}.
+@end itemize
+Specifying @option{--interactive} and no @var{when} is equivalent to
+@option{--interactive=always}.
+
+@itemx --one-file-system
+@opindex --one-file-system
+@cindex one file system, restricting @command{rm} to
+When removing a hierarchy recursively, skip any directory that is on a
+file system different from that of the corresponding command line argument.
+
+This option is useful when removing a build ``chroot'' hierarchy,
+which normally contains no valuable data. However, it is not uncommon
+to bind-mount @file{/home} into such a hierarchy, to make it easier to
+use one's start-up file. The catch is that it's easy to forget to
+unmount @file{/home}. Then, when you use @command{rm -rf} to remove
+your normally throw-away chroot, that command will remove everything
+under @file{/home}, too.
+Use the @option{--one-file-system} option, and it will
+warn about and skip directories on other file systems.
+Of course, this will not save your @file{/home} if it and your
+chroot happen to be on the same file system.
+
+@itemx --preserve-root
+@opindex --preserve-root
+@cindex root directory, disallow recursive destruction
+Fail upon any attempt to remove the root directory, @file{/},
+when used with the @option{--recursive} option.
+This is the default behavior.
+@xref{Treating / specially}.
+
+@itemx --no-preserve-root
+@opindex --no-preserve-root
+@cindex root directory, allow recursive destruction
+Do not treat @file{/} specially when removing recursively.
+This option is not recommended unless you really want to
+remove all the files on your computer.
+@xref{Treating / specially}.
+
+@item -r
+@itemx -R
+@itemx --recursive
+@opindex -r
+@opindex -R
+@opindex --recursive
+@cindex directories, removing (recursively)
+Remove the listed directories and their contents recursively.
+
+@item -v
+@itemx --verbose
+@opindex -v
+@opindex --verbose
+Print the name of each file before removing it.
+
+@end table
+
+@cindex files beginning with @samp{-}, removing
+@cindex @samp{-}, removing files beginning with
+One common question is how to remove files whose names begin with a
+@samp{-}. @sc{gnu} @command{rm}, like every program that uses the @code{getopt}
+function to parse its arguments, lets you use the @samp{--} option to
+indicate that all following arguments are non-options. To remove a file
+called @file{-f} in the current directory, you could type either:
+
+@example
+rm -- -f
+@end example
+
+@noindent
+or:
+
+@example
+rm ./-f
+@end example
+
+@opindex - @r{and Unix @command{rm}}
+The Unix @command{rm} program's use of a single @samp{-} for this purpose
+predates the development of the getopt standard syntax.
+
+@exitstatus
+
+
+@node shred invocation
+@section @command{shred}: Remove files more securely
+
+@pindex shred
+@cindex data, erasing
+@cindex erasing data
+
+@command{shred} overwrites devices or files, to help prevent even
+very expensive hardware from recovering the data.
+
+Ordinarily when you remove a file (@pxref{rm invocation}), the data is
+not actually destroyed. Only the index listing where the file is
+stored is destroyed, and the storage is made available for reuse.
+There are undelete utilities that will attempt to reconstruct the index
+and can bring the file back if the parts were not reused.
+
+On a busy system with a nearly-full drive, space can get reused in a few
+seconds. But there is no way to know for sure. If you have sensitive
+data, you may want to be sure that recovery is not possible by actually
+overwriting the file with non-sensitive data.
+
+However, even after doing that, it is possible to take the disk back
+to a laboratory and use a lot of sensitive (and expensive) equipment
+to look for the faint ``echoes'' of the original data underneath the
+overwritten data. If the data has only been overwritten once, it's not
+even that hard.
+
+The best way to remove something irretrievably is to destroy the media
+it's on with acid, melt it down, or the like. For cheap removable media
+like floppy disks, this is the preferred method. However, hard drives
+are expensive and hard to melt, so the @command{shred} utility tries
+to achieve a similar effect non-destructively.
+
+This uses many overwrite passes, with the data patterns chosen to
+maximize the damage they do to the old data. While this will work on
+floppies, the patterns are designed for best effect on hard drives.
+For more details, see the source code and Peter Gutmann's paper
+@uref{http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html,
+@cite{Secure Deletion of Data from Magnetic and Solid-State Memory}},
+from the proceedings of the Sixth @acronym{USENIX} Security Symposium (San Jose,
+California, July 22--25, 1996).
+
+@strong{Please note} that @command{shred} relies on a very important assumption:
+that the file system overwrites data in place. This is the traditional
+way to do things, but many modern file system designs do not satisfy this
+assumption. Exceptions include:
+
+@itemize @bullet
+
+@item
+Log-structured or journaled file systems, such as those supplied with
+AIX and Solaris, and JFS, ReiserFS, XFS, Ext3 (in @code{data=journal} mode),
+BFS, NTFS, etc.@: when they are configured to journal @emph{data}.
+
+@item
+File systems that write redundant data and carry on even if some writes
+fail, such as RAID-based file systems.
+
+@item
+File systems that make snapshots, such as Network Appliance's NFS server.
+
+@item
+File systems that cache in temporary locations, such as NFS version 3
+clients.
+
+@item
+Compressed file systems.
+@end itemize
+
+In the particular case of ext3 file systems, the above disclaimer applies (and
+@command{shred} is thus of limited effectiveness) only in @code{data=journal}
+mode, which journals file data in addition to just metadata. In both
+the @code{data=ordered} (default) and @code{data=writeback} modes,
+@command{shred} works as usual. Ext3 journaling modes can be changed
+by adding the @code{data=something} option to the mount options for a
+particular file system in the @file{/etc/fstab} file, as documented in
+the mount man page (man mount).
+
+If you are not sure how your file system operates, then you should assume
+that it does not overwrite data in place, which means that shred cannot
+reliably operate on regular files in your file system.
+
+Generally speaking, it is more reliable to shred a device than a file,
+since this bypasses the problem of file system design mentioned above.
+However, even shredding devices is not always completely reliable. For
+example, most disks map out bad sectors invisibly to the application; if
+the bad sectors contain sensitive data, @command{shred} won't be able to
+destroy it.
+
+@command{shred} makes no attempt to detect or report this problem, just as
+it makes no attempt to do anything about backups. However, since it is
+more reliable to shred devices than files, @command{shred} by default does
+not truncate or remove the output file. This default is more suitable
+for devices, which typically cannot be truncated and should not be
+removed.
+
+Finally, consider the risk of backups and mirrors.
+File system backups and remote mirrors may contain copies of the
+file that cannot be removed, and that will allow a shredded file
+to be recovered later. So if you keep any data you may later want
+to destroy using @command{shred}, be sure that it is not backed up or mirrored.
+
+@example
+shred [@var{option}]@dots{} @var{file}[@dots{}]
+@end example
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -f
+@itemx --force
+@opindex -f
+@opindex --force
+@cindex force deletion
+Override file permissions if necessary to allow overwriting.
+
+@item -@var{NUMBER}
+@itemx -n @var{NUMBER}
+@itemx --iterations=@var{NUMBER}
+@opindex -n @var{NUMBER}
+@opindex --iterations=@var{NUMBER}
+@cindex iterations, selecting the number of
+By default, @command{shred} uses 25 passes of overwrite. This is enough
+for all of the useful overwrite patterns to be used at least once.
+You can reduce this to save time, or increase it if you have a lot of
+time to waste.
+
+@item --random-source=@var{file}
+@opindex --random-source
+@cindex random source for shredding
+Use @var{file} as a source of random data used to overwrite and to
+choose pass ordering. @xref{Random sources}.
+
+@item -s @var{BYTES}
+@itemx --size=@var{BYTES}
+@opindex -s @var{BYTES}
+@opindex --size=@var{BYTES}
+@cindex size of file to shred
+Shred the first @var{BYTES} bytes of the file. The default is to shred
+the whole file. @var{BYTES} can be followed by a size specification like
+@samp{K}, @samp{M}, or @samp{G} to specify a multiple. @xref{Block size}.
+
+@item -u
+@itemx --remove
+@opindex -u
+@opindex --remove
+@cindex removing files after shredding
+After shredding a file, truncate it (if possible) and then remove it.
+If a file has multiple links, only the named links will be removed.
+
+@item -v
+@itemx --verbose
+@opindex -v
+@opindex --verbose
+Display status updates as sterilization proceeds.
+
+@item -x
+@itemx --exact
+@opindex -x
+@opindex --exact
+By default, @command{shred} rounds the size of a regular file up to the next
+multiple of the file system block size to fully erase the last block of the file.
+Use @option{--exact} to suppress that behavior.
+Thus, by default if you shred a 10-byte regular file on a system with 512-byte
+blocks, the resulting file will be 512 bytes long. With this option,
+shred does not increase the apparent size of the file.
+
+@item -z
+@itemx --zero
+@opindex -z
+@opindex --zero
+Normally, the last pass that @command{shred} writes is made up of
+random data. If this would be conspicuous on your hard drive (for
+example, because it looks like encrypted data), or you just think
+it's tidier, the @option{--zero} option adds an additional overwrite pass with
+all zero bits. This is in addition to the number of passes specified
+by the @option{--iterations} option.
+
+@end table
+
+You might use the following command to erase all trace of the
+file system you'd created on the floppy disk in your first drive.
+That command takes about 20 minutes to erase a ``1.44MB'' (actually
+1440 KiB) floppy.
+
+@example
+shred --verbose /dev/fd0
+@end example
+
+Similarly, to erase all data on a selected partition of
+your hard disk, you could give a command like this:
+
+@example
+shred --verbose /dev/sda5
+@end example
+
+A @var{file} of @samp{-} denotes standard output.
+The intended use of this is to shred a removed temporary file.
+For example:
+
+@example
+i=`tempfile -m 0600`
+exec 3<>"$i"
+rm -- "$i"
+echo "Hello, world" >&3
+shred - >&3
+exec 3>-
+@end example
+
+However, the command @samp{shred - >file} does not shred the contents
+of @var{file}, since the shell truncates @var{file} before invoking
+@command{shred}. Use the command @samp{shred file} or (if using a
+Bourne-compatible shell) the command @samp{shred - 1<>file} instead.
+
+@exitstatus
+
+
+@node Special file types
+@chapter Special file types
+
+@cindex special file types
+@cindex file types, special
+
+This chapter describes commands which create special types of files (and
+@command{rmdir}, which removes directories, one special file type).
+
+@cindex special file types
+@cindex file types
+Although Unix-like operating systems have markedly fewer special file
+types than others, not @emph{everything} can be treated only as the
+undifferentiated byte stream of @dfn{normal files}. For example, when a
+file is created or removed, the system must record this information,
+which it does in a @dfn{directory}---a special type of file. Although
+you can read directories as normal files, if you're curious, in order
+for the system to do its job it must impose a structure, a certain
+order, on the bytes of the file. Thus it is a ``special'' type of file.
+
+Besides directories, other special file types include named pipes
+(FIFOs), symbolic links, sockets, and so-called @dfn{special files}.
+
+@menu
+* link invocation:: Make a hard link via the link syscall
+* ln invocation:: Make links between files.
+* mkdir invocation:: Make directories.
+* mkfifo invocation:: Make FIFOs (named pipes).
+* mknod invocation:: Make block or character special files.
+* readlink invocation:: Print the referent of a symbolic link.
+* rmdir invocation:: Remove empty directories.
+* unlink invocation:: Remove files via the unlink syscall
+@end menu
+
+
+@node link invocation
+@section @command{link}: Make a hard link via the link syscall
+
+@pindex link
+@cindex links, creating
+@cindex hard links, creating
+@cindex creating links (hard only)
+
+@command{link} creates a single hard link at a time.
+It is a minimalist interface to the system-provided
+@code{link} function. @xref{Hard Links, , , libc,
+The GNU C Library Reference Manual}.
+It avoids the bells and whistles of the more commonly-used
+@command{ln} command (@pxref{ln invocation}).
+Synopsis:
+
+@example
+link @var{filename} @var{linkname}
+@end example
+
+@var{filename} must specify an existing file, and @var{linkname}
+must specify a nonexistent entry in an existing directory.
+@command{link} simply calls @code{link (@var{filename}, @var{linkname})}
+to create the link.
+
+On a @acronym{GNU} system, this command acts like @samp{ln --directory
+--no-target-directory @var{filename} @var{linkname}}. However, the
+@option{--directory} and @option{--no-target-directory} options are
+not specified by @acronym{POSIX}, and the @command{link} command is
+more portable in practice.
+
+@exitstatus
+
+
+@node ln invocation
+@section @command{ln}: Make links between files
+
+@pindex ln
+@cindex links, creating
+@cindex hard links, creating
+@cindex symbolic (soft) links, creating
+@cindex creating links (hard or soft)
+
+@cindex file systems and hard links
+@command{ln} makes links between files. By default, it makes hard links;
+with the @option{-s} option, it makes symbolic (or @dfn{soft}) links.
+Synopses:
+
+@example
+ln [@var{option}]@dots{} [-T] @var{target} @var{linkname}
+ln [@var{option}]@dots{} @var{target}
+ln [@var{option}]@dots{} @var{target}@dots{} @var{directory}
+ln [@var{option}]@dots{} -t @var{directory} @var{target}@dots{}
+@end example
+
+@itemize @bullet
+
+@item
+If two file names are given, @command{ln} creates a link to the first
+file from the second.
+
+@item
+If one @var{target} is given, @command{ln} creates a link to that file
+in the current directory.
+
+@item
+If the @option{--target-directory} (@option{-t}) option is given, or
+failing that if the last file is a directory and the
+@option{--no-target-directory} (@option{-T}) option is not given,
+@command{ln} creates a link to each @var{target} file in the specified
+directory, using the @var{target}s' names.
+
+@end itemize
+
+Normally @command{ln} does not remove existing files. Use the
+@option{--force} (@option{-f}) option to remove them unconditionally,
+the @option{--interactive} (@option{-i}) option to remove them
+conditionally, and the @option{--backup} (@option{-b}) option to
+rename them.
+
+@cindex hard link, defined
+@cindex inode, and hard links
+A @dfn{hard link} is another name for an existing file; the link and the
+original are indistinguishable. Technically speaking, they share the
+same inode, and the inode contains all the information about a
+file---indeed, it is not incorrect to say that the inode @emph{is} the
+file. On all existing implementations, you cannot make a hard link to
+a directory, and hard links cannot cross file system boundaries. (These
+restrictions are not mandated by @acronym{POSIX}, however.)
+
+@cindex dereferencing symbolic links
+@cindex symbolic link, defined
+@dfn{Symbolic links} (@dfn{symlinks} for short), on the other hand, are
+a special file type (which not all kernels support: System V release 3
+(and older) systems lack symlinks) in which the link file actually
+refers to a different file, by name. When most operations (opening,
+reading, writing, and so on) are passed the symbolic link file, the
+kernel automatically @dfn{dereferences} the link and operates on the
+target of the link. But some operations (e.g., removing) work on the
+link file itself, rather than on its target. @xref{Symbolic Links,,,
+libc, The GNU C Library Reference Manual}.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@optBackup
+
+@item -d
+@itemx -F
+@itemx --directory
+@opindex -d
+@opindex -F
+@opindex --directory
+@cindex hard links to directories
+Allow users with appropriate privileges to attempt to make hard links
+to directories.
+However, note that this will probably fail due to
+system restrictions, even for the super-user.
+
+@item -f
+@itemx --force
+@opindex -f
+@opindex --force
+Remove existing destination files.
+
+@item -i
+@itemx --interactive
+@opindex -i
+@opindex --interactive
+@cindex prompting, and @command{ln}
+Prompt whether to remove existing destination files.
+
+@item -n
+@itemx --no-dereference
+@opindex -n
+@opindex --no-dereference
+Do not treat the last operand specially when it is a symbolic link to
+a directory. Instead, treat it as if it were a normal file.
+
+When the destination is an actual directory (not a symlink to one),
+there is no ambiguity. The link is created in that directory.
+But when the specified destination is a symlink to a directory,
+there are two ways to treat the user's request. @command{ln} can
+treat the destination just as it would a normal directory and create
+the link in it. On the other hand, the destination can be viewed as a
+non-directory---as the symlink itself. In that case, @command{ln}
+must delete or backup that symlink before creating the new link.
+The default is to treat a destination that is a symlink to a directory
+just like a directory.
+
+This option is weaker than the @option{--no-target-directory}
+(@option{-T}) option, so it has no effect if both options are given.
+
+@item -s
+@itemx --symbolic
+@opindex -s
+@opindex --symbolic
+Make symbolic links instead of hard links. This option merely produces
+an error message on systems that do not support symbolic links.
+
+@optBackupSuffix
+
+@optTargetDirectory
+
+@optNoTargetDirectory
+
+@item -v
+@itemx --verbose
+@opindex -v
+@opindex --verbose
+Print the name of each file after linking it successfully.
+
+@end table
+
+@exitstatus
+
+Examples:
+
+@smallexample
+Bad Example:
+
+# Create link ../a pointing to a in that directory.
+# Not really useful because it points to itself.
+ln -s a ..
+
+Better Example:
+
+# Change to the target before creating symlinks to avoid being confused.
+cd ..
+ln -s adir/a .
+
+Bad Example:
+
+# Hard coded file names don't move well.
+ln -s $(pwd)/a /some/dir/
+
+Better Example:
+
+# Relative file names survive directory moves and also
+# work across networked file systems.
+ln -s afile anotherfile
+ln -s ../adir/afile yetanotherfile
+@end smallexample
+
+
+@node mkdir invocation
+@section @command{mkdir}: Make directories
+
+@pindex mkdir
+@cindex directories, creating
+@cindex creating directories
+
+@command{mkdir} creates directories with the specified names. Synopsis:
+
+@example
+mkdir [@var{option}]@dots{} @var{name}@dots{}
+@end example
+
+@command{mkdir} creates each directory @var{name} in the order given.
+It reports an error if @var{name} already exists, unless the
+@option{-p} option is given and @var{name} is a directory.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -m @var{mode}
+@itemx --mode=@var{mode}
+@opindex -m
+@opindex --mode
+@cindex modes of created directories, setting
+Set the file permission bits of created directories to @var{mode},
+which uses the same syntax as
+in @command{chmod} and uses @samp{a=rwx} (read, write and execute allowed for
+everyone) for the point of the departure. @xref{File permissions}.
+
+Normally the directory has the desired file mode bits at the moment it
+is created. As a @acronym{GNU} extension, @var{mode} may also mention
+special mode bits, but in this case there may be a temporary window
+during which the directory exists but its special mode bits are
+incorrect. @xref{Directory Setuid and Setgid}, for how the
+set-user-ID and set-group-ID bits of directories are inherited unless
+overridden in this way.
+
+@item -p
+@itemx --parents
+@opindex -p
+@opindex --parents
+@cindex parent directories, creating
+Make any missing parent directories for each argument, setting their
+file permission bits to the umask modified by @samp{u+wx}. Ignore
+existing parent directories, and do not change their file permission
+bits.
+
+To set the file permission bits of any newly-created parent
+directories to a value that includes @samp{u+wx}, you can set the
+umask before invoking @command{mkdir}. For example, if the shell
+command @samp{(umask u=rwx,go=rx; mkdir -p P/Q)} creates the parent
+@file{P} it sets the parent's permission bits to @samp{u=rwx,go=rx}.
+To set a parent's special mode bits as well, you can invoke
+@command{chmod} after @command{mkdir}. @xref{Directory Setuid and
+Setgid}, for how the set-user-ID and set-group-ID bits of
+newly-created parent directories are inherited.
+
+@item -v
+@itemx --verbose
+@opindex -v
+@opindex --verbose
+Print a message for each created directory. This is most useful with
+@option{--parents}.
+@end table
+
+@exitstatus
+
+
+@node mkfifo invocation
+@section @command{mkfifo}: Make FIFOs (named pipes)
+
+@pindex mkfifo
+@cindex FIFOs, creating
+@cindex named pipes, creating
+@cindex creating FIFOs (named pipes)
+
+@command{mkfifo} creates FIFOs (also called @dfn{named pipes}) with the
+specified names. Synopsis:
+
+@example
+mkfifo [@var{option}] @var{name}@dots{}
+@end example
+
+A @dfn{FIFO} is a special file type that permits independent processes
+to communicate. One process opens the FIFO file for writing, and
+another for reading, after which data can flow as with the usual
+anonymous pipe in shells or elsewhere.
+
+The program accepts the following option. Also see @ref{Common options}.
+
+@table @samp
+
+@item -m @var{mode}
+@itemx --mode=@var{mode}
+@opindex -m
+@opindex --mode
+@cindex modes of created FIFOs, setting
+Set the mode of created FIFOs to @var{mode}, which is symbolic as in
+@command{chmod} and uses @samp{a=rw} (read and write allowed for everyone)
+for the point of departure. @var{mode} should specify only file
+permission bits. @xref{File permissions}.
+
+@end table
+
+@exitstatus
+
+
+@node mknod invocation
+@section @command{mknod}: Make block or character special files
+
+@pindex mknod
+@cindex block special files, creating
+@cindex character special files, creating
+
+@command{mknod} creates a FIFO, character special file, or block special
+file with the specified name. Synopsis:
+
+@example
+mknod [@var{option}]@dots{} @var{name} @var{type} [@var{major} @var{minor}]
+@end example
+
+@cindex special files
+@cindex block special files
+@cindex character special files
+Unlike the phrase ``special file type'' above, the term @dfn{special
+file} has a technical meaning on Unix: something that can generate or
+receive data. Usually this corresponds to a physical piece of hardware,
+e.g., a printer or a disk. (These files are typically created at
+system-configuration time.) The @command{mknod} command is what creates
+files of this type. Such devices can be read either a character at a
+time or a ``block'' (many characters) at a time, hence we say there are
+@dfn{block special} files and @dfn{character special} files.
+
+The arguments after @var{name} specify the type of file to make:
+
+@table @samp
+
+@item p
+@opindex p @r{for FIFO file}
+for a FIFO
+
+@item b
+@opindex b @r{for block special file}
+for a block special file
+
+@item c
+@c Don't document the `u' option -- it's just a synonym for `c'.
+@c Do *any* versions of mknod still use it?
+@c @itemx u
+@opindex c @r{for character special file}
+@c @opindex u @r{for character special file}
+for a character special file
+
+@end table
+
+When making a block or character special file, the major and minor
+device numbers must be given after the file type.
+If a major or minor device number begins with @samp{0x} or @samp{0X},
+it is interpreted as hexadecimal; otherwise, if it begins with @samp{0},
+as octal; otherwise, as decimal.
+
+The program accepts the following option. Also see @ref{Common options}.
+
+@table @samp
+
+@item -m @var{mode}
+@itemx --mode=@var{mode}
+@opindex -m
+@opindex --mode
+Set the mode of created files to @var{mode}, which is symbolic as in
+@command{chmod} and uses @samp{a=rw} as the point of departure.
+@var{mode} should specify only file permission bits.
+@xref{File permissions}.
+
+@end table
+
+@exitstatus
+
+
+@node readlink invocation
+@section @command{readlink}: Print the referent of a symbolic link
+
+@pindex readlink
+@cindex displaying value of a symbolic link
+
+@command{readlink} may work in one of two supported modes:
+
+@table @samp
+
+@item Readlink mode
+
+@command{readlink} outputs the value of the given symbolic link.
+If @command{readlink} is invoked with an argument other than the name
+of a symbolic link, it produces no output and exits with a nonzero exit code.
+
+@item Canonicalize mode
+
+@command{readlink} outputs the absolute name of the given file which contains
+no @file{.}, @file{..} components nor any repeated separators
+(@file{/}) or symbolic links.
+
+@end table
+
+@example
+readlink [@var{option}] @var{file}
+@end example
+
+By default, @command{readlink} operates in readlink mode.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -f
+@itemx --canonicalize
+@opindex -f
+@opindex --canonicalize
+Activate canonicalize mode.
+If any component of the file name except the last one is missing or unavailable,
+@command{readlink} produces no output and exits with a nonzero exit code.
+
+@item -e
+@itemx --canonicalize-existing
+@opindex -e
+@opindex --canonicalize-existing
+Activate canonicalize mode.
+If any component is missing or unavailable, @command{readlink} produces
+no output and exits with a nonzero exit code.
+
+@item -m
+@itemx --canonicalize-missing
+@opindex -m
+@opindex --canonicalize-missing
+Activate canonicalize mode.
+If any component is missing or unavailable, @command{readlink} treats it
+as a directory.
+
+@item -n
+@itemx --no-newline
+@opindex -n
+@opindex --no-newline
+Do not output the trailing newline.
+
+@item -s
+@itemx -q
+@itemx --silent
+@itemx --quiet
+@opindex -s
+@opindex -q
+@opindex --silent
+@opindex --quiet
+Suppress most error messages.
+
+@item -v
+@itemx --verbose
+@opindex -v
+@opindex --verbose
+Report error messages.
+
+@end table
+
+The @command{readlink} utility first appeared in OpenBSD 2.1.
+
+@exitstatus
+
+
+@node rmdir invocation
+@section @command{rmdir}: Remove empty directories
+
+@pindex rmdir
+@cindex removing empty directories
+@cindex directories, removing empty
+
+@command{rmdir} removes empty directories. Synopsis:
+
+@example
+rmdir [@var{option}]@dots{} @var{directory}@dots{}
+@end example
+
+If any @var{directory} argument does not refer to an existing empty
+directory, it is an error.
+
+The program accepts the following option. Also see @ref{Common options}.
+
+@table @samp
+
+@item --ignore-fail-on-non-empty
+@opindex --ignore-fail-on-non-empty
+@cindex directory deletion, ignoring failures
+Ignore each failure to remove a directory that is solely because
+the directory is non-empty.
+
+@item -p
+@itemx --parents
+@opindex -p
+@opindex --parents
+@cindex parent directories, removing
+Remove @var{directory}, then try to remove each component of @var{directory}.
+So, for example, @samp{rmdir -p a/b/c} is similar to @samp{rmdir a/b/c a/b a}.
+As such, it fails if any of those directories turns out not to be empty.
+Use the @option{--ignore-fail-on-non-empty} option to make it so such
+a failure does not evoke a diagnostic and does not cause @command{rmdir} to
+exit unsuccessfully.
+
+@item -v
+@itemx --verbose
+@opindex -v
+@opindex --verbose
+@cindex directory deletion, reporting
+Give a diagnostic for each successful removal.
+@var{directory} is removed.
+
+@end table
+
+@xref{rm invocation}, for how to remove non-empty directories (recursively).
+
+@exitstatus
+
+
+@node unlink invocation
+@section @command{unlink}: Remove files via the unlink syscall
+
+@pindex unlink
+@cindex removing files or directories (via the unlink syscall)
+
+@command{unlink} deletes a single specified file name.
+It is a minimalist interface to the system-provided
+@code{unlink} function. @xref{Deleting Files, , , libc,
+The GNU C Library Reference Manual}. Synopsis:
+It avoids the bells and whistles of the more commonly-used
+@command{rm} command (@pxref{rm invocation}).
+
+@example
+unlink @var{filename}
+@end example
+
+On some systems @code{unlink} can be used to delete the name of a
+directory. On others, it can be used that way only by a privileged user.
+In the GNU system @code{unlink} can never delete the name of a directory.
+
+The @command{unlink} command honors the @option{--help} and
+@option{--version} options. To remove a file whose name begins with
+@samp{-}, prefix the name with @samp{./}, e.g., @samp{unlink ./--help}.
+
+@exitstatus
+
+
+@node Changing file attributes
+@chapter Changing file attributes
+
+@cindex changing file attributes
+@cindex file attributes, changing
+@cindex attributes, file
+
+A file is not merely its contents, a name, and a file type
+(@pxref{Special file types}). A file also has an owner (a user ID), a
+group (a group ID), permissions (what the owner can do with the file,
+what people in the group can do, and what everyone else can do), various
+timestamps, and other information. Collectively, we call these a file's
+@dfn{attributes}.
+
+These commands change file attributes.
+
+@menu
+* chgrp invocation:: Change file groups.
+* chmod invocation:: Change access permissions.
+* chown invocation:: Change file owners and groups.
+* touch invocation:: Change file timestamps.
+@end menu
+
+
+@node chown invocation
+@section @command{chown}: Change file owner and group
+
+@pindex chown
+@cindex file ownership, changing
+@cindex group ownership, changing
+@cindex changing file ownership
+@cindex changing group ownership
+
+@command{chown} changes the user and/or group ownership of each given @var{file}
+to @var{new-owner} or to the user and group of an existing reference file.
+Synopsis:
+
+@example
+chown [@var{option}]@dots{} @{@var{new-owner} | --reference=@var{ref_file}@} @var{file}@dots{}
+@end example
+
+If used, @var{new-owner} specifies the new owner and/or group as follows
+(with no embedded white space):
+
+@example
+[@var{owner}] [ : [@var{group}] ]
+@end example
+
+Specifically:
+
+@table @var
+@item owner
+If only an @var{owner} (a user name or numeric user ID) is given, that
+user is made the owner of each given file, and the files' group is not
+changed.
+
+@item owner@samp{:}group
+If the @var{owner} is followed by a colon and a @var{group} (a
+group name or numeric group ID), with no spaces between them, the group
+ownership of the files is changed as well (to @var{group}).
+
+@item owner@samp{:}
+If a colon but no group name follows @var{owner}, that user is
+made the owner of the files and the group of the files is changed to
+@var{owner}'s login group.
+
+@item @samp{:}group
+If the colon and following @var{group} are given, but the owner
+is omitted, only the group of the files is changed; in this case,
+@command{chown} performs the same function as @command{chgrp}.
+
+@item @samp{:}
+If only a colon is given, or if @var{new-owner} is empty, neither the
+owner nor the group is changed.
+
+@end table
+
+If @var{owner} or @var{group} is intended to represent a numeric user
+or group ID, then you may specify it with a leading @samp{+}.
+@xref{Disambiguating names and IDs}.
+
+Some older scripts may still use @samp{.} in place of the @samp{:} separator.
+@acronym{POSIX} 1003.1-2001 (@pxref{Standards conformance}) does not
+require support for that, but for backward compatibility @acronym{GNU}
+@command{chown} supports @samp{.} so long as no ambiguity results.
+New scripts should avoid the use of @samp{.} because it is not
+portable, and because it has undesirable results if the entire
+@var{owner@samp{.}group} happens to identify a user whose name
+contains @samp{.}.
+
+The @command{chown} command sometimes clears the set-user-ID or
+set-group-ID permission bits. This behavior depends on the policy and
+functionality of the underlying @code{chown} system call, which may
+make system-dependent file mode modifications outside the control of
+the @command{chown} command. For example, the @command{chown} command
+might not affect those bits when invoked by a user with appropriate
+privileges, or when the
+bits signify some function other than executable permission (e.g.,
+mandatory locking).
+When in doubt, check the underlying system behavior.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -c
+@itemx --changes
+@opindex -c
+@opindex --changes
+@cindex changed owners, verbosely describing
+Verbosely describe the action for each @var{file} whose ownership
+actually changes.
+
+@item -f
+@itemx --silent
+@itemx --quiet
+@opindex -f
+@opindex --silent
+@opindex --quiet
+@cindex error messages, omitting
+Do not print error messages about files whose ownership cannot be
+changed.
+
+@itemx @w{@kbd{--from}=@var{old-owner}}
+@opindex --from
+@cindex symbolic links, changing owner
+Change a @var{file}'s ownership only if it has current attributes specified
+by @var{old-owner}. @var{old-owner} has the same form as @var{new-owner}
+described above.
+This option is useful primarily from a security standpoint in that
+it narrows considerably the window of potential abuse.
+For example, to reflect a user ID numbering change for one user's files
+without an option like this, @code{root} might run
+
+@smallexample
+find / -owner OLDUSER -print0 | xargs -0 chown -h NEWUSER
+@end smallexample
+
+But that is dangerous because the interval between when the @command{find}
+tests the existing file's owner and when the @command{chown} is actually run
+may be quite large.
+One way to narrow the gap would be to invoke chown for each file
+as it is found:
+
+@example
+find / -owner OLDUSER -exec chown -h NEWUSER @{@} \;
+@end example
+
+But that is very slow if there are many affected files.
+With this option, it is safer (the gap is narrower still)
+though still not perfect:
+
+@example
+chown -h -R --from=OLDUSER NEWUSER /
+@end example
+
+@item --dereference
+@opindex --dereference
+@cindex symbolic links, changing owner
+@findex lchown
+Do not act on symbolic links themselves but rather on what they point to.
+This is the default.
+
+@item -h
+@itemx --no-dereference
+@opindex -h
+@opindex --no-dereference
+@cindex symbolic links, changing owner
+@findex lchown
+Act on symbolic links themselves instead of what they point to.
+This mode relies on the @code{lchown} system call.
+On systems that do not provide the @code{lchown} system call,
+@command{chown} fails when a file specified on the command line
+is a symbolic link.
+By default, no diagnostic is issued for symbolic links encountered
+during a recursive traversal, but see @option{--verbose}.
+
+@itemx --preserve-root
+@opindex --preserve-root
+@cindex root directory, disallow recursive modification
+Fail upon any attempt to recursively change the root directory, @file{/}.
+Without @option{--recursive}, this option has no effect.
+@xref{Treating / specially}.
+
+@itemx --no-preserve-root
+@opindex --no-preserve-root
+@cindex root directory, allow recursive modification
+Cancel the effect of any preceding @option{--preserve-root} option.
+@xref{Treating / specially}.
+
+@item --reference=@var{ref_file}
+@opindex --reference
+Change the user and group of each @var{file} to be the same as those of
+@var{ref_file}. If @var{ref_file} is a symbolic link, do not use the
+user and group of the symbolic link, but rather those of the file it
+refers to.
+
+@item -v
+@itemx --verbose
+@opindex -v
+@opindex --verbose
+Output a diagnostic for every file processed.
+If a symbolic link is encountered during a recursive traversal
+on a system without the @code{lchown} system call, and @option{--no-dereference}
+is in effect, then issue a diagnostic saying neither the symbolic link nor
+its referent is being changed.
+
+@item -R
+@itemx --recursive
+@opindex -R
+@opindex --recursive
+@cindex recursively changing file ownership
+Recursively change ownership of directories and their contents.
+
+@choptH
+@xref{Traversing symlinks}.
+
+@choptL
+@xref{Traversing symlinks}.
+
+@choptP
+@xref{Traversing symlinks}.
+
+@end table
+
+@exitstatus
+
+Examples:
+
+@smallexample
+# Change the owner of /u to "root".
+chown root /u
+
+# Likewise, but also change its group to "staff".
+chown root:staff /u
+
+# Change the owner of /u and subfiles to "root".
+chown -hR root /u
+@end smallexample
+
+
+@node chgrp invocation
+@section @command{chgrp}: Change group ownership
+
+@pindex chgrp
+@cindex group ownership, changing
+@cindex changing group ownership
+
+@command{chgrp} changes the group ownership of each given @var{file}
+to @var{group} (which can be either a group name or a numeric group ID)
+or to the group of an existing reference file. Synopsis:
+
+@example
+chgrp [@var{option}]@dots{} @{@var{group} | --reference=@var{ref_file}@} @var{file}@dots{}
+@end example
+
+If @var{group} is intended to represent a
+numeric group ID, then you may specify it with a leading @samp{+}.
+@xref{Disambiguating names and IDs}.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -c
+@itemx --changes
+@opindex -c
+@opindex --changes
+@cindex changed files, verbosely describing
+Verbosely describe the action for each @var{file} whose group actually
+changes.
+
+@item -f
+@itemx --silent
+@itemx --quiet
+@opindex -f
+@opindex --silent
+@opindex --quiet
+@cindex error messages, omitting
+Do not print error messages about files whose group cannot be
+changed.
+
+@item --dereference
+@opindex --dereference
+@cindex symbolic links, changing owner
+@findex lchown
+Do not act on symbolic links themselves but rather on what they point to.
+This is the default.
+
+@item -h
+@itemx --no-dereference
+@opindex -h
+@opindex --no-dereference
+@cindex symbolic links, changing group
+@findex lchown
+Act on symbolic links themselves instead of what they point to.
+This mode relies on the @code{lchown} system call.
+On systems that do not provide the @code{lchown} system call,
+@command{chgrp} fails when a file specified on the command line
+is a symbolic link.
+By default, no diagnostic is issued for symbolic links encountered
+during a recursive traversal, but see @option{--verbose}.
+
+@itemx --preserve-root
+@opindex --preserve-root
+@cindex root directory, disallow recursive modification
+Fail upon any attempt to recursively change the root directory, @file{/}.
+Without @option{--recursive}, this option has no effect.
+@xref{Treating / specially}.
+
+@itemx --no-preserve-root
+@opindex --no-preserve-root
+@cindex root directory, allow recursive modification
+Cancel the effect of any preceding @option{--preserve-root} option.
+@xref{Treating / specially}.
+
+@item --reference=@var{ref_file}
+@opindex --reference
+Change the group of each @var{file} to be the same as that of
+@var{ref_file}. If @var{ref_file} is a symbolic link, do not use the
+group of the symbolic link, but rather that of the file it refers to.
+
+@item -v
+@itemx --verbose
+@opindex -v
+@opindex --verbose
+Output a diagnostic for every file processed.
+If a symbolic link is encountered during a recursive traversal
+on a system without the @code{lchown} system call, and @option{--no-dereference}
+is in effect, then issue a diagnostic saying neither the symbolic link nor
+its referent is being changed.
+
+@item -R
+@itemx --recursive
+@opindex -R
+@opindex --recursive
+@cindex recursively changing group ownership
+Recursively change the group ownership of directories and their contents.
+
+@choptH
+@xref{Traversing symlinks}.
+
+@choptL
+@xref{Traversing symlinks}.
+
+@choptP
+@xref{Traversing symlinks}.
+
+@end table
+
+@exitstatus
+
+Examples:
+
+@smallexample
+# Change the group of /u to "staff".
+chgrp staff /u
+
+# Change the group of /u and subfiles to "staff".
+chgrp -hR staff /u
+@end smallexample
+
+
+@node chmod invocation
+@section @command{chmod}: Change access permissions
+
+@pindex chmod
+@cindex changing access permissions
+@cindex access permissions, changing
+@cindex permissions, changing access
+
+@command{chmod} changes the access permissions of the named files. Synopsis:
+
+@example
+chmod [@var{option}]@dots{} @{@var{mode} | --reference=@var{ref_file}@} @var{file}@dots{}
+@end example
+
+@cindex symbolic links, permissions of
+@command{chmod} never changes the permissions of symbolic links, since
+the @command{chmod} system call cannot change their permissions.
+This is not a problem since the permissions of symbolic links are
+never used. However, for each symbolic link listed on the command
+line, @command{chmod} changes the permissions of the pointed-to file.
+In contrast, @command{chmod} ignores symbolic links encountered during
+recursive directory traversals.
+
+A successful use of @command{chmod} clears the set-group-ID bit of a
+regular file if the file's group ID does not match the user's
+effective group ID or one of the user's supplementary group IDs,
+unless the user has appropriate privileges. Additional restrictions
+may cause the set-user-ID and set-group-ID bits of @var{mode} or
+@var{ref_file} to be ignored. This behavior depends on the policy and
+functionality of the underlying @code{chmod} system call. When in
+doubt, check the underlying system behavior.
+
+If used, @var{mode} specifies the new file mode bits.
+For details, see the section on @ref{File permissions}.
+If you really want @var{mode} to have a leading @samp{-}, you should
+use @option{--} first, e.g., @samp{chmod -- -w file}. Typically,
+though, @samp{chmod a-w file} is preferable, and @command{chmod -w
+file} (without the @option{--}) complains if it behaves differently
+from what @samp{chmod a-w file} would do.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -c
+@itemx --changes
+@opindex -c
+@opindex --changes
+Verbosely describe the action for each @var{file} whose permissions
+actually changes.
+
+@item -f
+@itemx --silent
+@itemx --quiet
+@opindex -f
+@opindex --silent
+@opindex --quiet
+@cindex error messages, omitting
+Do not print error messages about files whose permissions cannot be
+changed.
+
+@itemx --preserve-root
+@opindex --preserve-root
+@cindex root directory, disallow recursive modification
+Fail upon any attempt to recursively change the root directory, @file{/}.
+Without @option{--recursive}, this option has no effect.
+@xref{Treating / specially}.
+
+@itemx --no-preserve-root
+@opindex --no-preserve-root
+@cindex root directory, allow recursive modification
+Cancel the effect of any preceding @option{--preserve-root} option.
+@xref{Treating / specially}.
+
+@item -v
+@itemx --verbose
+@opindex -v
+@opindex --verbose
+Verbosely describe the action or non-action taken for every @var{file}.
+
+@item --reference=@var{ref_file}
+@opindex --reference
+Change the mode of each @var{file} to be the same as that of @var{ref_file}.
+@xref{File permissions}.
+If @var{ref_file} is a symbolic link, do not use the mode
+of the symbolic link, but rather that of the file it refers to.
+
+@item -R
+@itemx --recursive
+@opindex -R
+@opindex --recursive
+@cindex recursively changing access permissions
+Recursively change permissions of directories and their contents.
+
+@end table
+
+@exitstatus
+
+
+@node touch invocation
+@section @command{touch}: Change file timestamps
+
+@pindex touch
+@cindex changing file timestamps
+@cindex file timestamps, changing
+@cindex timestamps, changing file
+
+@command{touch} changes the access and/or modification times of the
+specified files. Synopsis:
+
+@example
+touch [@var{option}]@dots{} @var{file}@dots{}
+@end example
+
+@cindex empty files, creating
+Any @var{file} that does not exist is created empty.
+
+A @var{file} of @samp{-} causes @command{touch} to change the
+times of the file associated with standard output.
+
+@cindex permissions, for changing file timestamps
+If changing both the access and modification times to the current
+time, @command{touch} can change the timestamps for files that the user
+running it does not own but has write permission for. Otherwise, the
+user must own the files.
+
+Although @command{touch} provides options for changing two of the times---the
+times of last access and modification---of a file, there is actually
+a third one as well: the inode change time. This is often referred to
+as a file's @code{ctime}.
+The inode change time represents the time when the file's meta-information
+last changed. One common example of this is when the permissions of a
+file change. Changing the permissions doesn't access the file, so
+the atime doesn't change, nor does it modify the file, so the mtime
+doesn't change. Yet, something about the file itself has changed,
+and this must be noted somewhere. This is the job of the ctime field.
+This is necessary, so that, for example, a backup program can make a
+fresh copy of the file, including the new permissions value.
+Another operation that modifies a file's ctime without affecting
+the others is renaming. In any case, it is not possible, in normal
+operations, for a user to change the ctime field to a user-specified value.
+
+@vindex TZ
+Time stamps assume the time zone rules specified by the @env{TZ}
+environment variable, or by the system default rules if @env{TZ} is
+not set. @xref{TZ Variable,, Specifying the Time Zone with @env{TZ},
+libc, The GNU C Library}. You can avoid ambiguities during
+daylight saving transitions by using @sc{utc} time stamps.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -a
+@itemx --time=atime
+@itemx --time=access
+@itemx --time=use
+@opindex -a
+@opindex --time
+@opindex atime@r{, changing}
+@opindex access @r{time, changing}
+@opindex use @r{time, changing}
+Change the access time only.
+
+@item -c
+@itemx --no-create
+@opindex -c
+@opindex --no-create
+Do not create files that do not exist.
+
+@item -d
+@itemx --date=@var{time}
+@opindex -d
+@opindex --date
+@opindex time
+Use @var{time} instead of the current time. It can contain month names,
+time zones, @samp{am} and @samp{pm}, @samp{yesterday}, etc. For
+example, @option{--date="2004-02-27 14:19:13.489392193 +0530"}
+specifies the instant of time that is 489,392,193 nanoseconds after
+February 27, 2004 at 2:19:13 PM in a time zone that is 5 hours and 30
+minutes east of @acronym{UTC}. @xref{Date input formats}.
+File systems that do not support high-resolution time stamps
+silently ignore any excess precision here.
+
+@item -f
+@opindex -f
+@cindex BSD @command{touch} compatibility
+Ignored; for compatibility with BSD versions of @command{touch}.
+
+@item -m
+@itemx --time=mtime
+@itemx --time=modify
+@opindex -m
+@opindex --time
+@opindex mtime@r{, changing}
+@opindex modify @r{time, changing}
+Change the modification time only.
+
+@item -r @var{file}
+@itemx --reference=@var{file}
+@opindex -r
+@opindex --reference
+Use the times of the reference @var{file} instead of the current time.
+If this option is combined with the @option{--date=@var{time}}
+(@option{-d @var{time}}) option, the reference @var{file}'s time is
+the origin for any relative @var{time}s given, but is otherwise ignored.
+For example, @samp{-r foo -d '-5 seconds'} specifies a time stamp
+equal to five seconds before the corresponding time stamp for @file{foo}.
+
+@item -t [[@var{CC}]@var{YY}]@var{MMDDhhmm}[.@var{ss}]
+Use the argument (optional four-digit or two-digit years, months,
+days, hours, minutes, optional seconds) instead of the current time.
+If the year is specified with only two digits, then @var{CC}
+is 20 for years in the range 0 @dots{} 68, and 19 for years in
+69 @dots{} 99. If no digits of the year are specified,
+the argument is interpreted as a date in the current year.
+
+@end table
+
+@vindex _POSIX2_VERSION
+On older systems, @command{touch} supports an obsolete syntax, as follows.
+If no timestamp is given with any of the @option{-d}, @option{-r}, or
+@option{-t} options, and if there are two or more @var{file}s and the
+first @var{file} is of the form @samp{@var{MMDDhhmm}[@var{YY}]} and this
+would be a valid argument to the @option{-t} option (if the @var{YY}, if
+any, were moved to the front), and if the represented year
+is in the range 1969--1999, that argument is interpreted as the time
+for the other files instead of as a file name.
+This obsolete behavior can be enabled or disabled with the
+@env{_POSIX2_VERSION} environment variable (@pxref{Standards
+conformance}), but portable scripts should avoid commands whose
+behavior depends on this variable.
+For example, use @samp{touch ./12312359 main.c} or @samp{touch -t
+12312359 main.c} rather than the ambiguous @samp{touch 12312359 main.c}.
+
+@exitstatus
+
+
+@node Disk usage
+@chapter Disk usage
+
+@cindex disk usage
+
+No disk can hold an infinite amount of data. These commands report
+how much disk storage is in use or available, report other file and
+file status information, and write buffers to disk.
+
+@menu
+* df invocation:: Report file system disk space usage.
+* du invocation:: Estimate file space usage.
+* stat invocation:: Report file or file system status.
+* sync invocation:: Synchronize memory and disk.
+@end menu
+
+
+@node df invocation
+@section @command{df}: Report file system disk space usage
+
+@pindex df
+@cindex file system disk usage
+@cindex disk usage by file system
+
+@command{df} reports the amount of disk space used and available on
+file systems. Synopsis:
+
+@example
+df [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+With no arguments, @command{df} reports the space used and available on all
+currently mounted file systems (of all types). Otherwise, @command{df}
+reports on the file system containing each argument @var{file}.
+
+Normally the disk space is printed in units of
+1024 bytes, but this can be overridden (@pxref{Block size}).
+Non-integer quantities are rounded up to the next higher unit.
+
+@cindex disk device file
+@cindex device file, disk
+If an argument @var{file} is a disk device file containing a mounted
+file system, @command{df} shows the space available on that file system
+rather than on the file system containing the device node (i.e., the root
+file system). @sc{gnu} @command{df} does not attempt to determine the disk usage
+on unmounted file systems, because on most kinds of systems doing so
+requires extremely nonportable intimate knowledge of file system
+structures.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -a
+@itemx --all
+@opindex -a
+@opindex --all
+@cindex automounter file systems
+@cindex ignore file systems
+Include in the listing dummy file systems, which
+are omitted by default. Such file systems are typically special-purpose
+pseudo-file-systems, such as automounter entries.
+
+@item -B @var{size}
+@itemx --block-size=@var{size}
+@opindex -B
+@opindex --block-size
+@cindex file system sizes
+Scale sizes by @var{size} before printing them (@pxref{Block size}).
+For example, @option{-BG} prints sizes in units of 1,073,741,824 bytes.
+
+@optHumanReadable
+
+@item -H
+@opindex -H
+Equivalent to @option{--si}.
+
+@item -i
+@itemx --inodes
+@opindex -i
+@opindex --inodes
+@cindex inode usage
+List inode usage information instead of block usage. An inode (short
+for index node) contains information about a file such as its owner,
+permissions, timestamps, and location on the disk.
+
+@item -k
+@opindex -k
+@cindex kibibytes for file system sizes
+Print sizes in 1024-byte blocks, overriding the default block size
+(@pxref{Block size}).
+This option is equivalent to @option{--block-size=1K}.
+
+@item -l
+@itemx --local
+@opindex -l
+@opindex --local
+@cindex file system types, limiting output to certain
+Limit the listing to local file systems. By default, remote file systems
+are also listed.
+
+@item --no-sync
+@opindex --no-sync
+@cindex file system space, retrieving old data more quickly
+Do not invoke the @code{sync} system call before getting any usage data.
+This may make @command{df} run significantly faster on systems with many
+disks, but on some systems (notably SunOS) the results may be slightly
+out of date. This is the default.
+
+@item -P
+@itemx --portability
+@opindex -P
+@opindex --portability
+@cindex one-line output format
+@cindex @acronym{POSIX} output format
+@cindex portable output format
+@cindex output format, portable
+Use the @acronym{POSIX} output format. This is like the default format except
+for the following:
+
+@enumerate
+@item
+The information about each file system is always printed on exactly
+one line; a mount device is never put on a line by itself. This means
+that if the mount device name is more than 20 characters long (e.g., for
+some network mounts), the columns are misaligned.
+
+@item
+The labels in the header output line are changed to conform to @acronym{POSIX}.
+
+@item
+The default block size and output format are unaffected by the
+@env{DF_BLOCK_SIZE}, @env{BLOCK_SIZE} and @env{BLOCKSIZE} environment
+variables. However, the default block size is still affected by
+@env{POSIXLY_CORRECT}: it is 512 if @env{POSIXLY_CORRECT} is set, 1024
+otherwise. @xref{Block size}.
+@end enumerate
+
+@optSi
+
+@item --sync
+@opindex --sync
+@cindex file system space, retrieving current data more slowly
+Invoke the @code{sync} system call before getting any usage data. On
+some systems (notably SunOS), doing this yields more up to date results,
+but in general this option makes @command{df} much slower, especially when
+there are many or very busy file systems.
+
+@item -t @var{fstype}
+@itemx --type=@var{fstype}
+@opindex -t
+@opindex --type
+@cindex file system types, limiting output to certain
+Limit the listing to file systems of type @var{fstype}. Multiple
+file system types can be specified by giving multiple @option{-t} options.
+By default, nothing is omitted.
+
+@item -T
+@itemx --print-type
+@opindex -T
+@opindex --print-type
+@cindex file system types, printing
+Print each file system's type. The types printed here are the same ones
+you can include or exclude with @option{-t} and @option{-x}. The particular
+types printed are whatever is supported by the system. Here are some of
+the common names (this list is certainly not exhaustive):
+
+@table @samp
+
+@item nfs
+@cindex @acronym{NFS} file system type
+An @acronym{NFS} file system, i.e., one mounted over a network from another
+machine. This is the one type name which seems to be used uniformly by
+all systems.
+
+@item 4.2@r{, }ufs@r{, }efs@dots{}
+@cindex Linux file system types
+@cindex local file system types
+@opindex 4.2 @r{file system type}
+@opindex ufs @r{file system type}
+@opindex efs @r{file system type}
+A file system on a locally-mounted hard disk. (The system might even
+support more than one type here; Linux does.)
+
+@item hsfs@r{, }cdfs
+@cindex CD-ROM file system type
+@cindex High Sierra file system
+@opindex hsfs @r{file system type}
+@opindex cdfs @r{file system type}
+A file system on a CD-ROM drive. HP-UX uses @samp{cdfs}, most other
+systems use @samp{hsfs} (@samp{hs} for ``High Sierra'').
+
+@item pcfs
+@cindex PC file system
+@cindex DOS file system
+@cindex MS-DOS file system
+@cindex diskette file system
+@opindex pcfs
+An MS-DOS file system, usually on a diskette.
+
+@end table
+
+@item -x @var{fstype}
+@itemx --exclude-type=@var{fstype}
+@opindex -x
+@opindex --exclude-type
+Limit the listing to file systems not of type @var{fstype}.
+Multiple file system types can be eliminated by giving multiple
+@option{-x} options. By default, no file system types are omitted.
+
+@item -v
+Ignored; for compatibility with System V versions of @command{df}.
+
+@end table
+
+@exitstatus
+Failure includes the case where no output is generated, so you can
+inspect the exit status of a command like @samp{df -t ext3 -t reiserfs
+@var{dir}} to test whether @var{dir} is on a file system of type
+@samp{ext3} or @samp{reiserfs}.
+
+
+@node du invocation
+@section @command{du}: Estimate file space usage
+
+@pindex du
+@cindex file space usage
+@cindex disk usage for files
+
+@command{du} reports the amount of disk space used by the specified files
+and for each subdirectory (of directory arguments). Synopsis:
+
+@example
+du [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+With no arguments, @command{du} reports the disk space for the current
+directory. Normally the disk space is printed in units of
+1024 bytes, but this can be overridden (@pxref{Block size}).
+Non-integer quantities are rounded up to the next higher unit.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -a
+@itemx --all
+@opindex -a
+@opindex --all
+Show counts for all files, not just directories.
+
+@itemx --apparent-size
+@opindex --apparent-size
+Print apparent sizes, rather than disk usage. The apparent size of a
+file is the number of bytes reported by @code{wc -c} on regular files,
+or more generally, @code{ls -l --block-size=1} or @code{stat --format=%s}.
+For example, a file containing the word @samp{zoo} with no newline would,
+of course, have an apparent size of 3. Such a small file may require
+anywhere from 0 to 16 KiB or more of disk space, depending on
+the type and configuration of the file system on which the file resides.
+However, a sparse file created with this command:
+
+@example
+dd bs=1 seek=2GiB if=/dev/null of=big
+@end example
+
+@noindent
+has an apparent size of 2 GiB, yet on most modern
+systems, it actually uses almost no disk space.
+
+@item -b
+@itemx --bytes
+@opindex -b
+@opindex --bytes
+Equivalent to @code{--apparent-size --block-size=1}.
+
+@item -B @var{size}
+@itemx --block-size=@var{size}
+@opindex -B
+@opindex --block-size
+@cindex file sizes
+Scale sizes by @var{size} before printing them (@pxref{Block size}).
+For example, @option{-BG} prints sizes in units of 1,073,741,824 bytes.
+
+@item -c
+@itemx --total
+@opindex -c
+@opindex --total
+@cindex grand total of disk space
+Print a grand total of all arguments after all arguments have
+been processed. This can be used to find out the total disk usage of
+a given set of files or directories.
+
+@item -D
+@itemx --dereference-args
+@opindex -D
+@opindex --dereference-args
+Dereference symbolic links that are command line arguments.
+Does not affect other symbolic links. This is helpful for finding
+out the disk usage of directories, such as @file{/usr/tmp}, which
+are often symbolic links.
+
+@itemx --files0-from=@var{FILE}
+@opindex --files0-from=@var{FILE}
+@cindex including files from @command{du}
+Rather than processing files named on the command line, process those
+named in file @var{FILE}; each name is terminated by a null byte.
+This is useful with the @option{--total} (@option{-c}) option when
+the list of file names is so long that it may exceed a command line
+length limitation.
+In such cases, running @command{du} via @command{xargs} is undesirable
+because it splits the list into pieces and makes @command{du} print a
+total for each sublist rather than for the entire list.
+One way to produce a list of null-byte-terminated file names is with @sc{gnu}
+@command{find}, using its @option{-print0} predicate.
+Do not specify any @var{FILE} on the command line when using this option.
+
+@optHumanReadable
+
+@item -H
+@opindex -H
+Currently, @option{-H} is the same as @option{--si},
+except that @option{-H} evokes a warning.
+This option will be changed to be equivalent to
+@option{--dereference-args} (@option{-D}).
+
+@item -k
+@opindex -k
+@cindex kibibytes for file sizes
+Print sizes in 1024-byte blocks, overriding the default block size
+(@pxref{Block size}).
+This option is equivalent to @option{--block-size=1K}.
+
+@item -l
+@itemx --count-links
+@opindex -l
+@opindex --count-links
+@cindex hard links, counting in @command{du}
+Count the size of all files, even if they have appeared already (as a
+hard link).
+
+@item -L
+@itemx --dereference
+@opindex -L
+@opindex --dereference
+@cindex symbolic links, dereferencing in @command{du}
+Dereference symbolic links (show the disk space used by the file
+or directory that the link points to instead of the space used by
+the link).
+
+@item -m
+@opindex -m
+@cindex mebibytes for file sizes
+Print sizes in 1,048,576-byte blocks, overriding the default block size
+(@pxref{Block size}).
+This option is equivalent to @option{--block-size=1M}.
+
+@item -P
+@itemx --no-dereference
+@opindex -P
+@opindex --no-dereference
+@cindex symbolic links, dereferencing in @command{du}
+For each symbolic links encountered by @command{du},
+consider the disk space used by the symbolic link.
+
+@item --max-depth=@var{DEPTH}
+@opindex --max-depth=@var{DEPTH}
+@cindex limiting output of @command{du}
+Show the total for each directory (and file if --all) that is at
+most MAX_DEPTH levels down from the root of the hierarchy. The root
+is at level 0, so @code{du --max-depth=0} is equivalent to @code{du -s}.
+
+@item -0
+@opindex -0
+@itemx --null
+@opindex --null
+@cindex output null-byte-terminated lines
+Output a null byte at the end of each line, rather than a newline.
+This option enables other programs to parse the output of @command{du}
+even when that output would contain file names with embedded newlines.
+
+@itemx --si
+@opindex --si
+@cindex SI output
+Append an SI-style abbreviation to each size, such as @samp{MB} for
+megabytes. Powers of 1000 are used, not 1024; @samp{MB} stands for
+1,000,000 bytes. Use the @option{-h} or @option{--human-readable} option if
+you prefer powers of 1024.
+
+@item -s
+@itemx --summarize
+@opindex -s
+@opindex --summarize
+Display only a total for each argument.
+
+@item -S
+@itemx --separate-dirs
+@opindex -S
+@opindex --separate-dirs
+Report the size of each directory separately, not including the sizes
+of subdirectories.
+
+@itemx --time
+@opindex --time
+@cindex last modified dates, displaying in @command{du}
+Show time of the most recent modification of any file in the directory,
+or any of its subdirectories.
+
+@itemx --time=ctime
+@itemx --time=status
+@itemx --time=use
+@opindex --time
+@opindex ctime@r{, show the most recent}
+@opindex status time@r{, show the most recent}
+@opindex use time@r{, show the most recent}
+Show the most recent status change time (the @samp{ctime} in the inode) of
+any file in the directory, instead of the modification time.
+
+@itemx --time=atime
+@itemx --time=access
+@opindex --time
+@opindex atime@r{, show the most recent}
+@opindex access time@r{, show the most recent}
+Show the most recent access time (the @samp{atime} in the inode) of
+any file in the directory, instead of the modification time.
+
+@item --time-style=@var{style}
+@opindex --time-style
+@cindex time style
+List timestamps in style @var{style}. This option has an effect only if
+the @option{--time} option is also specified. The @var{style} should
+be one of the following:
+
+@table @samp
+@item +@var{format}
+@vindex LC_TIME
+List timestamps using @var{format}, where @var{format} is interpreted
+like the format argument of @command{date} (@pxref{date invocation}).
+For example, @option{--time-style="+%Y-%m-%d %H:%M:%S"} causes
+@command{du} to list timestamps like @samp{2002-03-30 23:45:56}. As
+with @command{date}, @var{format}'s interpretation is affected by the
+@env{LC_TIME} locale category.
+
+@item full-iso
+List timestamps in full using @acronym{ISO} 8601 date, time, and time zone
+format with nanosecond precision, e.g., @samp{2002-03-30
+23:45:56.477817180 -0700}. This style is equivalent to
+@samp{+%Y-%m-%d %H:%M:%S.%N %z}.
+
+@item long-iso
+List @acronym{ISO} 8601 date and time in minutes, e.g.,
+@samp{2002-03-30 23:45}. These timestamps are shorter than
+@samp{full-iso} timestamps, and are usually good enough for everyday
+work. This style is equivalent to @samp{+%Y-%m-%d %H:%M}.
+
+@item iso
+List @acronym{ISO} 8601 dates for timestamps, e.g., @samp{2002-03-30}.
+This style is equivalent to @samp{+%Y-%m-%d}.
+@end table
+
+@vindex TIME_STYLE
+You can specify the default value of the @option{--time-style} option
+with the environment variable @env{TIME_STYLE}; if @env{TIME_STYLE} is not set
+the default style is @samp{long-iso}. For compatibility with @command{ls},
+if @env{TIME_STYLE} begins with @samp{+} and contains a newline,
+the newline and any later characters are ignored; if @env{TIME_STYLE}
+begins with @samp{posix-} the @samp{posix-} is ignored; and if
+@env{TIME_STYLE} is @samp{locale} it is ignored.
+
+@item -x
+@itemx --one-file-system
+@opindex -x
+@opindex --one-file-system
+@cindex one file system, restricting @command{du} to
+Skip directories that are on different file systems from the one that
+the argument being processed is on.
+
+@item --exclude=@var{PATTERN}
+@opindex --exclude=@var{PATTERN}
+@cindex excluding files from @command{du}
+When recursing, skip subdirectories or files matching @var{PATTERN}.
+For example, @code{du --exclude='*.o'} excludes files whose names
+end in @samp{.o}.
+
+@item -X @var{FILE}
+@itemx --exclude-from=@var{FILE}
+@opindex -X @var{FILE}
+@opindex --exclude-from=@var{FILE}
+@cindex excluding files from @command{du}
+Like @option{--exclude}, except take the patterns to exclude from @var{FILE},
+one per line. If @var{FILE} is @samp{-}, take the patterns from standard
+input.
+
+@end table
+
+@cindex NFS mounts from BSD to HP-UX
+On BSD systems, @command{du} reports sizes that are half the correct
+values for files that are NFS-mounted from HP-UX systems. On HP-UX
+systems, it reports sizes that are twice the correct values for
+files that are NFS-mounted from BSD systems. This is due to a flaw
+in HP-UX; it also affects the HP-UX @command{du} program.
+
+@exitstatus
+
+
+@node stat invocation
+@section @command{stat}: Report file or file system status
+
+@pindex stat
+@cindex file status
+@cindex file system status
+
+@command{stat} displays information about the specified file(s). Synopsis:
+
+@example
+stat [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+With no option, @command{stat} reports all information about the given files.
+But it also can be used to report the information of the file systems the
+given files are located on. If the files are links, @command{stat} can
+also give information about the files the links point to.
+
+
+@table @samp
+
+@item -L
+@itemx --dereference
+@opindex -L
+@opindex --dereference
+@cindex symbolic links, dereferencing in @command{stat}
+Change how @command{stat} treats symbolic links.
+With this option, @command{stat} acts on the file referenced
+by each symbolic link argument.
+Without it, @command{stat} acts on any symbolic link argument directly.
+
+@item -f
+@itemx --file-system
+@opindex -f
+@opindex --file-system
+@cindex file systems
+Report information about the file systems where the given files are located
+instead of information about the files themselves.
+
+@item -c
+@itemx --format=@var{format}
+@opindex -c
+@opindex --format=@var{format}
+@cindex output format
+Use @var{format} rather than the default format.
+@var{format} is automatically newline-terminated, so
+running a command like the following with two or more @var{file}
+operands produces a line of output for each operand:
+@example
+$ stat --format=%d:%i / /usr
+2050:2
+2057:2
+@end example
+
+@itemx --printf=@var{format}
+@opindex --printf=@var{format}
+@cindex output format
+Use @var{format} rather than the default format.
+Like @option{--format}, but interpret backslash escapes,
+and do not output a mandatory trailing newline.
+If you want a newline, include @samp{\n} in the @var{format}.
+Here's how you would use @option{--printf} to print the device
+and inode numbers of @file{/} and @file{/usr}:
+@example
+$ stat --printf='%d:%i\n' / /usr
+2050:2
+2057:2
+@end example
+
+@item -t
+@itemx --terse
+@opindex -t
+@opindex --terse
+@cindex terse output
+Print the information in terse form, suitable for parsing by other programs.
+
+The valid format sequences for files are:
+
+@itemize @bullet
+@item %a - Access rights in octal
+@item %A - Access rights in human readable form
+@item %b - Number of blocks allocated (see @samp{%B})
+@item %B - The size in bytes of each block reported by @samp{%b}
+@item %d - Device number in decimal
+@item %D - Device number in hex
+@item %f - Raw mode in hex
+@item %F - File type
+@item %g - Group ID of owner
+@item %G - Group name of owner
+@item %h - Number of hard links
+@item %i - Inode number
+@item %n - File name
+@item %N - Quoted file name with dereference if symbolic link
+@item %o - I/O block size
+@item %s - Total size, in bytes
+@item %t - Major device type in hex
+@item %T - Minor device type in hex
+@item %u - User ID of owner
+@item %U - User name of owner
+@item %x - Time of last access
+@item %X - Time of last access as seconds since Epoch
+@item %y - Time of last modification
+@item %Y - Time of last modification as seconds since Epoch
+@item %z - Time of last change
+@item %Z - Time of last change as seconds since Epoch
+@end itemize
+
+The valid format sequences for file systems are:
+
+@itemize @bullet
+@item %a - Free blocks available to non-super-user
+@item %b - Total data blocks in file system
+@item %c - Total file nodes in file system
+@item %d - Free file nodes in file system
+@item %f - Free blocks in file system
+@item %i - File System ID in hex
+@item %l - Maximum length of file names
+@item %n - File name
+@item %s - Block size (for faster transfers)
+@item %S - Fundamental block size (for block counts)
+@item %t - Type in hex
+@item %T - Type in human readable form
+@end itemize
+
+@vindex TZ
+Time stamps are listed according to the time zone rules specified by
+the @env{TZ} environment variable, or by the system default rules if
+@env{TZ} is not set. @xref{TZ Variable,, Specifying the Time Zone
+with @env{TZ}, libc, The GNU C Library}.
+@end table
+
+@exitstatus
+
+
+@node sync invocation
+@section @command{sync}: Synchronize data on disk with memory
+
+@pindex sync
+@cindex synchronize disk and memory
+
+@cindex superblock, writing
+@cindex inodes, written buffered
+@command{sync} writes any data buffered in memory out to disk. This can
+include (but is not limited to) modified superblocks, modified inodes,
+and delayed reads and writes. This must be implemented by the kernel;
+The @command{sync} program does nothing but exercise the @code{sync} system
+call.
+
+@cindex crashes and corruption
+The kernel keeps data in memory to avoid doing (relatively slow) disk
+reads and writes. This improves performance, but if the computer
+crashes, data may be lost or the file system corrupted as a
+result. The @command{sync} command ensures everything in memory
+is written to disk.
+
+Any arguments are ignored, except for a lone @option{--help} or
+@option{--version} (@pxref{Common options}).
+
+@exitstatus
+
+
+@node Printing text
+@chapter Printing text
+
+@cindex printing text, commands for
+@cindex commands for printing text
+
+This section describes commands that display text strings.
+
+@menu
+* echo invocation:: Print a line of text.
+* printf invocation:: Format and print data.
+* yes invocation:: Print a string until interrupted.
+@end menu
+
+
+@node echo invocation
+@section @command{echo}: Print a line of text
+
+@pindex echo
+@cindex displaying text
+@cindex printing text
+@cindex text, displaying
+@cindex arbitrary text, displaying
+
+@command{echo} writes each given @var{string} to standard output, with a
+space between each and a newline after the last one. Synopsis:
+
+@example
+echo [@var{option}]@dots{} [@var{string}]@dots{}
+@end example
+
+The program accepts the following options. Also see @ref{Common options}.
+Options must precede operands, and the normally-special argument
+@samp{--} has no special meaning and is treated like any other
+@var{string}.
+
+@table @samp
+@item -n
+@opindex -n
+Do not output the trailing newline.
+
+@item -e
+@opindex -e
+@cindex backslash escapes
+Enable interpretation of the following backslash-escaped characters in
+each @var{string}:
+
+@table @samp
+@item \a
+alert (bell)
+@item \b
+backspace
+@item \c
+suppress trailing newline
+@item \f
+form feed
+@item \n
+new line
+@item \r
+carriage return
+@item \t
+horizontal tab
+@item \v
+vertical tab
+@item \\
+backslash
+@item \0@var{nnn}
+the eight-bit value that is the octal number @var{nnn}
+(zero to three octal digits)
+@item \@var{nnn}
+the eight-bit value that is the octal number @var{nnn}
+(one to three octal digits)
+@item \x@var{hh}
+the eight-bit value that is the hexadecimal number @var{hh}
+(one or two hexadecimal digits)
+@end table
+
+@item -E
+@opindex -E
+@cindex backslash escapes
+Disable interpretation of backslash escapes in each @var{string}.
+This is the default. If @option{-e} and @option{-E} are both
+specified, the last one given takes effect.
+
+@end table
+
+@vindex POSIXLY_CORRECT
+If the @env{POSIXLY_CORRECT} environment variable is set, then when
+@command{echo}'s first argument is not @option{-n} it outputs
+option-like arguments instead of treating them as options. For
+example, @code{echo -ne hello} outputs @samp{-ne hello} instead of
+plain @samp{hello}.
+
+@acronym{POSIX} does not require support for any options, and says
+that the behavior of @command{echo} is implementation-defined if any
+@var{string} contains a backslash or if the first argument is
+@option{-n}. Portable programs can use the @command{printf} command
+if they need to omit trailing newlines or output control characters or
+backslashes. @xref{printf invocation}.
+
+@exitstatus
+
+
+@node printf invocation
+@section @command{printf}: Format and print data
+
+@pindex printf
+@command{printf} does formatted printing of text. Synopsis:
+
+@example
+printf @var{format} [@var{argument}]@dots{}
+@end example
+
+@command{printf} prints the @var{format} string, interpreting @samp{%}
+directives and @samp{\} escapes to format numeric and string arguments
+in a way that is mostly similar to the C @samp{printf} function. The
+differences are as follows:
+
+@itemize @bullet
+
+@item
+The @var{format} argument is reused as necessary to convert all the
+given @var{argument}s. For example, the command @samp{printf %s a b}
+outputs @samp{ab}.
+
+@item
+Missing @var{argument}s are treated as null strings or as zeros,
+depending on whether the context expects a string or a number. For
+example, the command @samp{printf %sx%d} prints @samp{x0}.
+
+@item
+@kindex \c
+An additional escape, @samp{\c}, causes @command{printf} to produce no
+further output. For example, the command @samp{printf 'A%sC\cD%sF' B
+E} prints @samp{ABC}.
+
+@item
+The hexadecimal escape sequence @samp{\x@var{hh}} has at most two
+digits, as opposed to C where it can have an unlimited number of
+digits. For example, the command @samp{printf '\x07e'} prints two
+bytes, whereas the C statement @samp{printf ("\x07e")} prints just
+one.
+
+@item
+@kindex %b
+@command{printf} has an additional directive, @samp{%b}, which prints its
+argument string with @samp{\} escapes interpreted in the same way as in
+the @var{format} string, except that octal escapes are of the form
+@samp{\0@var{ooo}} where @var{ooo} is 0 to 3 octal digits.
+If a precision is also given, it limits the number of bytes printed
+from the converted string.
+
+@item
+Numeric arguments must be single C constants, possibly with leading
+@samp{+} or @samp{-}. For example, @samp{printf %.4d -3} outputs
+@samp{-0003}.
+
+@item
+@vindex POSIXLY_CORRECT
+If the leading character of a numeric argument is @samp{"} or @samp{'}
+then its value is the numeric value of the immediately following
+character. Any remaining characters are silently ignored if the
+@env{POSIXLY_CORRECT} environment variable is set; otherwise, a
+warning is printed. For example, @samp{printf "%d" "'a"} outputs
+@samp{97} on hosts that use the @acronym{ASCII} character set, since
+@samp{a} has the numeric value 97 in @acronym{ASCII}.
+
+@end itemize
+
+@vindex LC_NUMERIC
+A floating-point argument must use a period before any fractional
+digits, but is printed according to the @env{LC_NUMERIC} category of the
+current locale. For example, in a locale whose radix character is a
+comma, the command @samp{printf %g 3.14} outputs @samp{3,14} whereas
+the command @samp{printf %g 3,14} is an error.
+
+@kindex \@var{ooo}
+@kindex \x@var{hh}
+@command{printf} interprets @samp{\@var{ooo}} in @var{format} as an octal number
+(if @var{ooo} is 1 to 3 octal digits) specifying a character to print,
+and @samp{\x@var{hh}} as a hexadecimal number (if @var{hh} is 1 to 2 hex
+digits) specifying a character to print.
+
+@kindex \uhhhh
+@kindex \Uhhhhhhhh
+@cindex Unicode
+@cindex ISO/IEC 10646
+@vindex LC_CTYPE
+@command{printf} interprets two character syntaxes introduced in
+@acronym{ISO} C 99:
+@samp{\u} for 16-bit Unicode (@acronym{ISO}/@acronym{IEC} 10646)
+characters, specified as
+four hexadecimal digits @var{hhhh}, and @samp{\U} for 32-bit Unicode
+characters, specified as eight hexadecimal digits @var{hhhhhhhh}.
+@command{printf} outputs the Unicode characters
+according to the @env{LC_CTYPE} locale.
+
+The processing of @samp{\u} and @samp{\U} requires a full-featured
+@code{iconv} facility. It is activated on systems with glibc 2.2 (or newer),
+or when @code{libiconv} is installed prior to this package. Otherwise
+@samp{\u} and @samp{\U} will print as-is.
+
+The only options are a lone @option{--help} or
+@option{--version}. @xref{Common options}.
+Options must precede operands.
+
+The Unicode character syntaxes are useful for writing strings in a locale
+independent way. For example, a string containing the Euro currency symbol
+
+@example
+$ /usr/local/bin/printf '\u20AC 14.95'
+@end example
+
+@noindent
+will be output correctly in all locales supporting the Euro symbol
+(@acronym{ISO}-8859-15, UTF-8, and others). Similarly, a Chinese string
+
+@example
+$ /usr/local/bin/printf '\u4e2d\u6587'
+@end example
+
+@noindent
+will be output correctly in all Chinese locales (GB2312, BIG5, UTF-8, etc).
+
+Note that in these examples, the full name of @command{printf} has been
+given, to distinguish it from the GNU @code{bash} built-in function
+@command{printf}.
+
+For larger strings, you don't need to look up the hexadecimal code
+values of each character one by one. @acronym{ASCII} characters mixed with \u
+escape sequences is also known as the JAVA source file encoding. You can
+use GNU recode 3.5c (or newer) to convert strings to this encoding. Here
+is how to convert a piece of text into a shell script which will output
+this text in a locale-independent way:
+
+@smallexample
+$ LC_CTYPE=zh_CN.big5 /usr/local/bin/printf \
+ '\u4e2d\u6587\n' > sample.txt
+$ recode BIG5..JAVA < sample.txt \
+ | sed -e "s|^|/usr/local/bin/printf '|" -e "s|$|\\\\n'|" \
+ > sample.sh
+@end smallexample
+
+@exitstatus
+
+
+@node yes invocation
+@section @command{yes}: Print a string until interrupted
+
+@pindex yes
+@cindex repeated output of a string
+
+@command{yes} prints the command line arguments, separated by spaces and
+followed by a newline, forever until it is killed. If no arguments are
+given, it prints @samp{y} followed by a newline forever until killed.
+
+Upon a write error, @command{yes} exits with status @samp{1}.
+
+The only options are a lone @option{--help} or @option{--version}.
+To output an argument that begins with
+@samp{-}, precede it with @option{--}, e.g., @samp{yes -- --help}.
+@xref{Common options}.
+
+
+@node Conditions
+@chapter Conditions
+
+@cindex conditions
+@cindex commands for exit status
+@cindex exit status commands
+
+This section describes commands that are primarily useful for their exit
+status, rather than their output. Thus, they are often used as the
+condition of shell @code{if} statements, or as the last command in a
+pipeline.
+
+@menu
+* false invocation:: Do nothing, unsuccessfully.
+* true invocation:: Do nothing, successfully.
+* test invocation:: Check file types and compare values.
+* expr invocation:: Evaluate expressions.
+@end menu
+
+
+@node false invocation
+@section @command{false}: Do nothing, unsuccessfully
+
+@pindex false
+@cindex do nothing, unsuccessfully
+@cindex failure exit status
+@cindex exit status of @command{false}
+
+@command{false} does nothing except return an exit status of 1, meaning
+@dfn{failure}. It can be used as a place holder in shell scripts
+where an unsuccessful command is needed.
+In most modern shells, @command{false} is a built-in command, so when
+you use @samp{false} in a script, you're probably using the built-in
+command, not the one documented here.
+
+@command{false} honors the @option{--help} and @option{--version} options.
+
+This version of @command{false} is implemented as a C program, and is thus
+more secure and faster than a shell script implementation, and may safely
+be used as a dummy shell for the purpose of disabling accounts.
+
+Note that @command{false} (unlike all other programs documented herein)
+exits unsuccessfully, even when invoked with
+@option{--help} or @option{--version}.
+
+Portable programs should not assume that the exit status of
+@command{false} is 1, as it is greater than 1 on some
+non-@acronym{GNU} hosts.
+
+
+@node true invocation
+@section @command{true}: Do nothing, successfully
+
+@pindex true
+@cindex do nothing, successfully
+@cindex no-op
+@cindex successful exit
+@cindex exit status of @command{true}
+
+@command{true} does nothing except return an exit status of 0, meaning
+@dfn{success}. It can be used as a place holder in shell scripts
+where a successful command is needed, although the shell built-in
+command @code{:} (colon) may do the same thing faster.
+In most modern shells, @command{true} is a built-in command, so when
+you use @samp{true} in a script, you're probably using the built-in
+command, not the one documented here.
+
+@command{true} honors the @option{--help} and @option{--version} options.
+
+Note, however, that it is possible to cause @command{true}
+to exit with nonzero status: with the @option{--help} or @option{--version}
+option, and with standard
+output already closed or redirected to a file that evokes an I/O error.
+For example, using a Bourne-compatible shell:
+
+@example
+$ ./true --version >&-
+./true: write error: Bad file number
+$ ./true --version > /dev/full
+./true: write error: No space left on device
+@end example
+
+This version of @command{true} is implemented as a C program, and is thus
+more secure and faster than a shell script implementation, and may safely
+be used as a dummy shell for the purpose of disabling accounts.
+
+@node test invocation
+@section @command{test}: Check file types and compare values
+
+@pindex test
+@cindex check file types
+@cindex compare values
+@cindex expression evaluation
+
+@command{test} returns a status of 0 (true) or 1 (false) depending on the
+evaluation of the conditional expression @var{expr}. Each part of the
+expression must be a separate argument.
+
+@command{test} has file status checks, string operators, and numeric
+comparison operators.
+
+@command{test} has an alternate form that uses opening and closing
+square brackets instead a leading @samp{test}. For example, instead
+of @samp{test -d /}, you can write @samp{[ -d / ]}. The square
+brackets must be separate arguments; for example, @samp{[-d /]} does
+not have the desired effect. Since @samp{test @var{expr}} and @samp{[
+@var{expr} ]} have the same meaning, only the former form is discussed
+below.
+
+Synopses:
+
+@example
+test @var{expression}
+test
+[ @var{expression} ]
+[ ]
+[ @var{option}
+@end example
+
+@cindex conflicts with shell built-ins
+@cindex built-in shell commands, conflicts with
+Because most shells have a built-in @command{test} command, using an
+unadorned @command{test} in a script or interactively may get you
+different functionality than that described here.
+
+If @var{expression} is omitted, @command{test} returns false.
+If @var{expression} is a single argument,
+@command{test} returns false if the argument is null and true otherwise. The argument
+can be any string, including strings like @samp{-d}, @samp{-1},
+@samp{--}, @samp{--help}, and @samp{--version} that most other
+programs would treat as options. To get help and version information,
+invoke the commands @samp{[ --help} and @samp{[ --version}, without
+the usual closing brackets. @xref{Common options}.
+
+@cindex exit status of @command{test}
+Exit status:
+
+@display
+0 if the expression is true,
+1 if the expression is false,
+2 if an error occurred.
+@end display
+
+@menu
+* File type tests:: -[bcdfhLpSt]
+* Access permission tests:: -[gkruwxOG]
+* File characteristic tests:: -e -s -nt -ot -ef
+* String tests:: -z -n = !=
+* Numeric tests:: -eq -ne -lt -le -gt -ge
+* Connectives for test:: ! -a -o
+@end menu
+
+
+@node File type tests
+@subsection File type tests
+
+@cindex file type tests
+
+These options test for particular types of files. (Everything's a file,
+but not all files are the same!)
+
+@table @samp
+
+@item -b @var{file}
+@opindex -b
+@cindex block special check
+True if @var{file} exists and is a block special device.
+
+@item -c @var{file}
+@opindex -c
+@cindex character special check
+True if @var{file} exists and is a character special device.
+
+@item -d @var{file}
+@opindex -d
+@cindex directory check
+True if @var{file} exists and is a directory.
+
+@item -f @var{file}
+@opindex -f
+@cindex regular file check
+True if @var{file} exists and is a regular file.
+
+@item -h @var{file}
+@itemx -L @var{file}
+@opindex -L
+@opindex -h
+@cindex symbolic link check
+True if @var{file} exists and is a symbolic link.
+Unlike all other file-related tests, this test does not dereference
+@var{file} if it is a symbolic link.
+
+@item -p @var{file}
+@opindex -p
+@cindex named pipe check
+True if @var{file} exists and is a named pipe.
+
+@item -S @var{file}
+@opindex -S
+@cindex socket check
+True if @var{file} exists and is a socket.
+
+@item -t @var{fd}
+@opindex -t
+@cindex terminal check
+True if @var{fd} is a file descriptor that is associated with a
+terminal.
+
+@end table
+
+
+@node Access permission tests
+@subsection Access permission tests
+
+@cindex access permission tests
+@cindex permission tests
+
+These options test for particular access permissions.
+
+@table @samp
+
+@item -g @var{file}
+@opindex -g
+@cindex set-group-ID check
+True if @var{file} exists and has its set-group-ID bit set.
+
+@item -k @var{file}
+@opindex -k
+@cindex sticky bit check
+True if @var{file} exists and has its @dfn{sticky} bit set.
+
+@item -r @var{file}
+@opindex -r
+@cindex readable file check
+True if @var{file} exists and read permission is granted.
+
+@item -u @var{file}
+@opindex -u
+@cindex set-user-ID check
+True if @var{file} exists and has its set-user-ID bit set.
+
+@item -w @var{file}
+@opindex -w
+@cindex writable file check
+True if @var{file} exists and write permission is granted.
+
+@item -x @var{file}
+@opindex -x
+@cindex executable file check
+True if @var{file} exists and execute permission is granted
+(or search permission, if it is a directory).
+
+@item -O @var{file}
+@opindex -O
+@cindex owned by effective user ID check
+True if @var{file} exists and is owned by the current effective user ID.
+
+@item -G @var{file}
+@opindex -G
+@cindex owned by effective group ID check
+True if @var{file} exists and is owned by the current effective group ID.
+
+@end table
+
+@node File characteristic tests
+@subsection File characteristic tests
+
+@cindex file characteristic tests
+
+These options test other file characteristics.
+
+@table @samp
+
+@item -e @var{file}
+@opindex -e
+@cindex existence-of-file check
+True if @var{file} exists.
+
+@item -s @var{file}
+@opindex -s
+@cindex nonempty file check
+True if @var{file} exists and has a size greater than zero.
+
+@item @var{file1} -nt @var{file2}
+@opindex -nt
+@cindex newer-than file check
+True if @var{file1} is newer (according to modification date) than
+@var{file2}, or if @var{file1} exists and @var{file2} does not.
+
+@item @var{file1} -ot @var{file2}
+@opindex -ot
+@cindex older-than file check
+True if @var{file1} is older (according to modification date) than
+@var{file2}, or if @var{file2} exists and @var{file1} does not.
+
+@item @var{file1} -ef @var{file2}
+@opindex -ef
+@cindex same file check
+@cindex hard link check
+True if @var{file1} and @var{file2} have the same device and inode
+numbers, i.e., if they are hard links to each other.
+
+@end table
+
+
+@node String tests
+@subsection String tests
+
+@cindex string tests
+
+These options test string characteristics. You may need to quote
+@var{string} arguments for the shell. For example:
+
+@example
+test -n "$V"
+@end example
+
+The quotes here prevent the wrong arguments from being passed to
+@command{test} if @samp{$V} is empty or contains special characters.
+
+@table @samp
+
+@item -z @var{string}
+@opindex -z
+@cindex zero-length string check
+True if the length of @var{string} is zero.
+
+@item -n @var{string}
+@itemx @var{string}
+@opindex -n
+@cindex nonzero-length string check
+True if the length of @var{string} is nonzero.
+
+@item @var{string1} = @var{string2}
+@opindex =
+@cindex equal string check
+True if the strings are equal.
+
+@item @var{string1} != @var{string2}
+@opindex !=
+@cindex not-equal string check
+True if the strings are not equal.
+
+@end table
+
+
+@node Numeric tests
+@subsection Numeric tests
+
+@cindex numeric tests
+@cindex arithmetic tests
+
+Numeric relationals. The arguments must be entirely numeric (possibly
+negative), or the special expression @w{@code{-l @var{string}}}, which
+evaluates to the length of @var{string}.
+
+@table @samp
+
+@item @var{arg1} -eq @var{arg2}
+@itemx @var{arg1} -ne @var{arg2}
+@itemx @var{arg1} -lt @var{arg2}
+@itemx @var{arg1} -le @var{arg2}
+@itemx @var{arg1} -gt @var{arg2}
+@itemx @var{arg1} -ge @var{arg2}
+@opindex -eq
+@opindex -ne
+@opindex -lt
+@opindex -le
+@opindex -gt
+@opindex -ge
+These arithmetic binary operators return true if @var{arg1} is equal,
+not-equal, less-than, less-than-or-equal, greater-than, or
+greater-than-or-equal than @var{arg2}, respectively.
+
+@end table
+
+For example:
+
+@example
+test -1 -gt -2 && echo yes
+@result{} yes
+test -l abc -gt 1 && echo yes
+@result{} yes
+test 0x100 -eq 1
+@error{} test: integer expression expected before -eq
+@end example
+
+
+@node Connectives for test
+@subsection Connectives for @command{test}
+
+@cindex logical connectives
+@cindex connectives, logical
+
+The usual logical connectives.
+
+@table @samp
+
+@item ! @var{expr}
+@opindex !
+True if @var{expr} is false.
+
+@item @var{expr1} -a @var{expr2}
+@opindex -a
+@cindex logical and operator
+@cindex and operator
+True if both @var{expr1} and @var{expr2} are true.
+
+@item @var{expr1} -o @var{expr2}
+@opindex -o
+@cindex logical or operator
+@cindex or operator
+True if either @var{expr1} or @var{expr2} is true.
+
+@end table
+
+
+@node expr invocation
+@section @command{expr}: Evaluate expressions
+
+@pindex expr
+@cindex expression evaluation
+@cindex evaluation of expressions
+
+@command{expr} evaluates an expression and writes the result on standard
+output. Each token of the expression must be a separate argument.
+
+Operands are either integers or strings. Integers consist of one or
+more decimal digits, with an optional leading @samp{-}.
+@command{expr} converts
+anything appearing in an operand position to an integer or a string
+depending on the operation being applied to it.
+
+Strings are not quoted for @command{expr} itself, though you may need to
+quote them to protect characters with special meaning to the shell,
+e.g., spaces. However, regardless of whether it is quoted, a string
+operand should not be a parenthesis or any of @command{expr}'s
+operators like @code{+}, so you cannot safely pass an arbitrary string
+@code{$str} to expr merely by quoting it to the shell. One way to
+work around this is to use the @sc{gnu} extension @code{+},
+(e.g., @code{+ "$str" = foo}); a more portable way is to use
+@code{@w{" $str"}} and to adjust the rest of the expression to take
+the leading space into account (e.g., @code{@w{" $str" = " foo"}}).
+
+You should not pass a negative integer or a string with leading
+@samp{-} as @command{expr}'s first argument, as it might be
+misinterpreted as an option; this can be avoided by parenthesization.
+Also, portable scripts should not use a string operand that happens to
+take the form of an integer; this can be worked around by inserting
+leading spaces as mentioned above.
+
+@cindex parentheses for grouping
+Operators may be given as infix symbols or prefix keywords. Parentheses
+may be used for grouping in the usual manner. You must quote
+parentheses and many operators to avoid the shell evaluating them,
+however.
+
+The only options are @option{--help} and @option{--version}. @xref{Common
+options}. Options must precede operands.
+
+@cindex exit status of @command{expr}
+Exit status:
+
+@display
+0 if the expression is neither null nor 0,
+1 if the expression is null or 0,
+2 if the expression is invalid,
+3 if an internal error occurred (e.g., arithmetic overflow).
+@end display
+
+@menu
+* String expressions:: + : match substr index length
+* Numeric expressions:: + - * / %
+* Relations for expr:: | & < <= = == != >= >
+* Examples of expr:: Examples.
+@end menu
+
+
+@node String expressions
+@subsection String expressions
+
+@cindex string expressions
+@cindex expressions, string
+
+@command{expr} supports pattern matching and other string operators. These
+have lower precedence than both the numeric and relational operators (in
+the next sections).
+
+@table @samp
+
+@item @var{string} : @var{regex}
+@cindex pattern matching
+@cindex regular expression matching
+@cindex matching patterns
+Perform pattern matching. The arguments are converted to strings and the
+second is considered to be a (basic, a la GNU @code{grep}) regular
+expression, with a @code{^} implicitly prepended. The first argument is
+then matched against this regular expression.
+
+If the match succeeds and @var{regex} uses @samp{\(} and @samp{\)}, the
+@code{:} expression returns the part of @var{string} that matched the
+subexpression; otherwise, it returns the number of characters matched.
+
+If the match fails, the @code{:} operator returns the null string if
+@samp{\(} and @samp{\)} are used in @var{regex}, otherwise 0.
+
+@kindex \( @r{regexp operator}
+Only the first @samp{\( @dots{} \)} pair is relevant to the return
+value; additional pairs are meaningful only for grouping the regular
+expression operators.
+
+@kindex \+ @r{regexp operator}
+@kindex \? @r{regexp operator}
+@kindex \| @r{regexp operator}
+In the regular expression, @code{\+}, @code{\?}, and @code{\|} are
+operators which respectively match one or more, zero or one, or separate
+alternatives. SunOS and other @command{expr}'s treat these as regular
+characters. (@acronym{POSIX} allows either behavior.)
+@xref{Top, , Regular Expression Library, regex, Regex}, for details of
+regular expression syntax. Some examples are in @ref{Examples of expr}.
+
+@item match @var{string} @var{regex}
+@findex match
+An alternative way to do pattern matching. This is the same as
+@w{@samp{@var{string} : @var{regex}}}.
+
+@item substr @var{string} @var{position} @var{length}
+@findex substr
+Returns the substring of @var{string} beginning at @var{position}
+with length at most @var{length}. If either @var{position} or
+@var{length} is negative, zero, or non-numeric, returns the null string.
+
+@item index @var{string} @var{charset}
+@findex index
+Returns the first position in @var{string} where the first character in
+@var{charset} was found. If no character in @var{charset} is found in
+@var{string}, return 0.
+
+@item length @var{string}
+@findex length
+Returns the length of @var{string}.
+
+@item + @var{token}
+@kindex +
+Interpret @var{token} as a string, even if it is a keyword like @var{match}
+or an operator like @code{/}.
+This makes it possible to test @code{expr length + "$x"} or
+@code{expr + "$x" : '.*/\(.\)'} and have it do the right thing even if
+the value of @var{$x} happens to be (for example) @code{/} or @code{index}.
+This operator is a @acronym{GNU} extension. Portable shell scripts should use
+@code{@w{" $token"} : @w{' \(.*\)'}} instead of @code{+ "$token"}.
+
+@end table
+
+To make @command{expr} interpret keywords as strings, you must use the
+@code{quote} operator.
+
+
+@node Numeric expressions
+@subsection Numeric expressions
+
+@cindex numeric expressions
+@cindex expressions, numeric
+
+@command{expr} supports the usual numeric operators, in order of increasing
+precedence. The string operators (previous section) have lower precedence,
+the connectives (next section) have higher.
+
+@table @samp
+
+@item + -
+@kindex +
+@kindex -
+@cindex addition
+@cindex subtraction
+Addition and subtraction. Both arguments are converted to integers;
+an error occurs if this cannot be done.
+
+@item * / %
+@kindex *
+@kindex /
+@kindex %
+@cindex multiplication
+@cindex division
+@cindex remainder
+Multiplication, division, remainder. Both arguments are converted to
+integers; an error occurs if this cannot be done.
+
+@end table
+
+
+@node Relations for expr
+@subsection Relations for @command{expr}
+
+@cindex connectives, logical
+@cindex logical connectives
+@cindex relations, numeric or string
+
+@command{expr} supports the usual logical connectives and relations. These
+are higher precedence than either the string or numeric operators
+(previous sections). Here is the list, lowest-precedence operator first.
+
+@table @samp
+
+@item |
+@kindex |
+@cindex logical or operator
+@cindex or operator
+Returns its first argument if that is neither null nor zero, otherwise
+its second argument if it is neither null nor zero, otherwise 0. It
+does not evaluate its second argument if its first argument is neither
+null nor zero.
+
+@item &
+@kindex &
+@cindex logical and operator
+@cindex and operator
+Return its first argument if neither argument is null or zero, otherwise
+0. It does not evaluate its second argument if its first argument is
+null or zero.
+
+@item < <= = == != >= >
+@kindex <
+@kindex <=
+@kindex =
+@kindex ==
+@kindex >
+@kindex >=
+@cindex comparison operators
+@vindex LC_COLLATE
+Compare the arguments and return 1 if the relation is true, 0 otherwise.
+@code{==} is a synonym for @code{=}. @command{expr} first tries to convert
+both arguments to integers and do a numeric comparison; if either
+conversion fails, it does a lexicographic comparison using the character
+collating sequence specified by the @env{LC_COLLATE} locale.
+
+@end table
+
+
+@node Examples of expr
+@subsection Examples of using @command{expr}
+
+@cindex examples of @command{expr}
+Here are a few examples, including quoting for shell metacharacters.
+
+To add 1 to the shell variable @code{foo}, in Bourne-compatible shells:
+
+@example
+foo=`expr $foo + 1`
+@end example
+
+To print the non-directory part of the file name stored in
+@code{$fname}, which need not contain a @code{/}:
+
+@example
+expr $fname : '.*/\(.*\)' '|' $fname
+@end example
+
+An example showing that @code{\+} is an operator:
+
+@example
+expr aaa : 'a\+'
+@result{} 3
+@end example
+
+@example
+expr abc : 'a\(.\)c'
+@result{} b
+expr index abcdef cz
+@result{} 3
+expr index index a
+@error{} expr: syntax error
+expr index quote index a
+@result{} 0
+@end example
+
+
+@node Redirection
+@chapter Redirection
+
+@cindex redirection
+@cindex commands for redirection
+
+Unix shells commonly provide several forms of @dfn{redirection}---ways
+to change the input source or output destination of a command. But one
+useful redirection is performed by a separate command, not by the shell;
+it's described here.
+
+@menu
+* tee invocation:: Redirect output to multiple files.
+@end menu
+
+
+@node tee invocation
+@section @command{tee}: Redirect output to multiple files
+
+@pindex tee
+@cindex pipe fitting
+@cindex destinations, multiple output
+@cindex read from stdin and write to stdout and files
+
+The @command{tee} command copies standard input to standard output and also
+to any files given as arguments. This is useful when you want not only
+to send some data down a pipe, but also to save a copy. Synopsis:
+
+@example
+tee [@var{option}]@dots{} [@var{file}]@dots{}
+@end example
+
+If a file being written to does not already exist, it is created. If a
+file being written to already exists, the data it previously contained
+is overwritten unless the @option{-a} option is used.
+
+A @var{file} of @samp{-} causes @command{tee} to send another copy of
+input to standard output, but this is typically not that useful as the
+copies are interleaved.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+@item -a
+@itemx --append
+@opindex -a
+@opindex --append
+Append standard input to the given files rather than overwriting
+them.
+
+@item -i
+@itemx --ignore-interrupts
+@opindex -i
+@opindex --ignore-interrupts
+Ignore interrupt signals.
+
+@end table
+
+@exitstatus
+
+
+@node File name manipulation
+@chapter File name manipulation
+
+@cindex file name manipulation
+@cindex manipulation of file names
+@cindex commands for file name manipulation
+
+This section describes commands that manipulate file names.
+
+@menu
+* basename invocation:: Strip directory and suffix from a file name.
+* dirname invocation:: Strip non-directory suffix from a file name.
+* pathchk invocation:: Check file name portability.
+@end menu
+
+
+@node basename invocation
+@section @command{basename}: Strip directory and suffix from a file name
+
+@pindex basename
+@cindex strip directory and suffix from file names
+@cindex directory, stripping from file names
+@cindex suffix, stripping from file names
+@cindex file names, stripping directory and suffix
+@cindex leading directory components, stripping
+
+@command{basename} removes any leading directory components from
+@var{name}. Synopsis:
+
+@example
+basename @var{name} [@var{suffix}]
+@end example
+
+If @var{suffix} is specified and is identical to the end of @var{name},
+it is removed from @var{name} as well. Note that since trailing slashes
+are removed prior to suffix matching, @var{suffix} will do nothing if it
+contains slashes. @command{basename} prints the result on standard
+output.
+
+@c This test is used both here and in the section on dirname.
+@macro basenameAndDirname
+Together, @command{basename} and @command{dirname} are designed such
+that if @samp{ls "$name"} succeeds, then the command sequence @samp{cd
+"$(dirname "$name")"; ls "$(basename "$name")"} will, too. This works
+for everything except file names containing a trailing newline.
+@end macro
+@basenameAndDirname
+
+@acronym{POSIX} allows the implementation to define the results if
+@var{name} is empty or @samp{//}. In the former case, @acronym{GNU}
+@command{basename} returns the empty string. In the latter case, the
+result is @samp{//} on platforms where @var{//} is distinct from
+@var{/}, and @samp{/} on platforms where there is no difference.
+
+The only options are @option{--help} and @option{--version}. @xref{Common
+options}. Options must precede operands.
+
+@exitstatus
+
+Examples:
+
+@smallexample
+# Output "sort".
+basename /usr/bin/sort
+
+# Output "stdio".
+basename include/stdio.h .h
+@end smallexample
+
+
+@node dirname invocation
+@section @command{dirname}: Strip non-directory suffix from a file name
+
+@pindex dirname
+@cindex directory components, printing
+@cindex stripping non-directory suffix
+@cindex non-directory suffix, stripping
+
+@command{dirname} prints all but the final slash-delimited component of
+a string (presumably a file name). Synopsis:
+
+@example
+dirname @var{name}
+@end example
+
+If @var{name} is a single component, @command{dirname} prints @samp{.}
+(meaning the current directory).
+
+@basenameAndDirname
+
+@acronym{POSIX} allows the implementation to define the results if
+@var{name} is @samp{//}. With @acronym{GNU} @command{dirname}, the
+result is @samp{//} on platforms where @var{//} is distinct from
+@var{/}, and @samp{/} on platforms where there is no difference.
+
+The only options are @option{--help} and @option{--version}. @xref{Common
+options}.
+
+@exitstatus
+
+Examples:
+
+@smallexample
+# Output "/usr/bin".
+dirname /usr/bin/sort
+
+# Output ".".
+dirname stdio.h
+@end smallexample
+
+
+@node pathchk invocation
+@section @command{pathchk}: Check file name portability
+
+@pindex pathchk
+@cindex file names, checking validity and portability
+@cindex valid file names, checking for
+@cindex portable file names, checking for
+
+@command{pathchk} checks portability of file names. Synopsis:
+
+@example
+pathchk [@var{option}]@dots{} @var{name}@dots{}
+@end example
+
+For each @var{name}, @command{pathchk} prints a message if any of
+these conditions is true:
+
+@enumerate
+@item
+One of the existing directories in @var{name} does not have search
+(execute) permission,
+@item
+The length of @var{name} is larger than the maximum supported by the
+operating system.
+@item
+The length of one component of @var{name} is longer than
+its file system's maximum.
+@end enumerate
+
+A nonexistent @var{name} is not an error, so long a file with that
+name could be created under the above conditions.
+
+The program accepts the following options. Also see @ref{Common options}.
+Options must precede operands.
+
+@table @samp
+
+@item -p
+@opindex -p
+Instead of performing checks based on the underlying file system,
+print a message if any of these conditions is true:
+
+@enumerate
+@item
+A file name is empty.
+
+@item
+The length of a file name or one of its components exceeds the
+@acronym{POSIX} minimum limits for portability.
+
+@item
+A file name contains a character outside the portable file name
+character set, namely, the ASCII letters and digits, @samp{-},
+@samp{.}, @samp{/}, and @samp{_}.
+@end enumerate
+
+@item -P
+@opindex -P
+Print a message if a file name is empty, or if it contains a component
+that begins with @samp{-}.
+
+@item --portability
+@opindex --portability
+Print a message if a file name is not portable to all @acronym{POSIX}
+hosts. This option is equivalent to @samp{-p -P}.
+
+@end table
+
+@cindex exit status of @command{pathchk}
+Exit status:
+
+@display
+0 if all specified file names passed all checks,
+1 otherwise.
+@end display
+
+
+@node Working context
+@chapter Working context
+
+@cindex working context
+@cindex commands for printing the working context
+
+This section describes commands that display or alter the context in
+which you are working: the current directory, the terminal settings, and
+so forth. See also the user-related commands in the next section.
+
+@menu
+* pwd invocation:: Print working directory.
+* stty invocation:: Print or change terminal characteristics.
+* printenv invocation:: Print environment variables.
+* tty invocation:: Print file name of terminal on standard input.
+@end menu
+
+
+@node pwd invocation
+@section @command{pwd}: Print working directory
+
+@pindex pwd
+@cindex print name of current directory
+@cindex current working directory, printing
+@cindex working directory, printing
+
+@cindex symbolic links and @command{pwd}
+@command{pwd} prints the fully resolved name of the current directory.
+That is, all components of the printed name will be actual directory
+names---none will be symbolic links.
+
+@cindex conflicts with shell built-ins
+@cindex built-in shell commands, conflicts with
+Because most shells have a built-in @command{pwd} command, using an
+unadorned @command{pwd} in a script or interactively may get you
+different functionality than that described here.
+
+The only options are a lone @option{--help} or
+@option{--version}. @xref{Common options}.
+
+@exitstatus
+
+
+@node stty invocation
+@section @command{stty}: Print or change terminal characteristics
+
+@pindex stty
+@cindex change or print terminal settings
+@cindex terminal settings
+@cindex line settings of terminal
+
+@command{stty} prints or changes terminal characteristics, such as baud rate.
+Synopses:
+
+@example
+stty [@var{option}] [@var{setting}]@dots{}
+stty [@var{option}]
+@end example
+
+If given no line settings, @command{stty} prints the baud rate, line
+discipline number (on systems that support it), and line settings
+that have been changed from the values set by @samp{stty sane}.
+By default, mode reading and setting are performed on the tty line
+connected to standard input, although this can be modified by the
+@option{--file} option.
+
+@command{stty} accepts many non-option arguments that change aspects of
+the terminal line operation, as described below.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+@item -a
+@itemx --all
+@opindex -a
+@opindex --all
+Print all current settings in human-readable form. This option may not
+be used in combination with any line settings.
+
+@item -F @var{device}
+@itemx --file=@var{device}
+@opindex -F
+@opindex --file
+Set the line opened by the file name specified in @var{device} instead of
+the tty line connected to standard input. This option is necessary
+because opening a @acronym{POSIX} tty requires use of the @code{O_NONDELAY} flag to
+prevent a @acronym{POSIX} tty from blocking until the carrier detect line is high if
+the @code{clocal} flag is not set. Hence, it is not always possible
+to allow the shell to open the device in the traditional manner.
+
+@item -g
+@itemx --save
+@opindex -g
+@opindex --save
+@cindex machine-readable @command{stty} output
+Print all current settings in a form that can be used as an argument to
+another @command{stty} command to restore the current settings. This option
+may not be used in combination with any line settings.
+
+@end table
+
+Many settings can be turned off by preceding them with a @samp{-}.
+Such arguments are marked below with ``May be negated'' in their
+description. The descriptions themselves refer to the positive
+case, that is, when @emph{not} negated (unless stated otherwise,
+of course).
+
+Some settings are not available on all @acronym{POSIX} systems, since they use
+extensions. Such arguments are marked below with ``Non-@acronym{POSIX}'' in their
+description. On non-@acronym{POSIX} systems, those or other settings also may not
+be available, but it's not feasible to document all the variations: just
+try it and see.
+
+@exitstatus
+
+@menu
+* Control:: Control settings
+* Input:: Input settings
+* Output:: Output settings
+* Local:: Local settings
+* Combination:: Combination settings
+* Characters:: Special characters
+* Special:: Special settings
+@end menu
+
+
+@node Control
+@subsection Control settings
+
+@cindex control settings
+Control settings:
+
+@table @samp
+@item parenb
+@opindex parenb
+@cindex two-way parity
+Generate parity bit in output and expect parity bit in input.
+May be negated.
+
+@item parodd
+@opindex parodd
+@cindex odd parity
+@cindex even parity
+Set odd parity (even if negated). May be negated.
+
+@item cs5
+@itemx cs6
+@itemx cs7
+@itemx cs8
+@opindex cs@var{n}
+@cindex character size
+@cindex eight-bit characters
+Set character size to 5, 6, 7, or 8 bits.
+
+@item hup
+@itemx hupcl
+@opindex hup[cl]
+Send a hangup signal when the last process closes the tty. May be
+negated.
+
+@item cstopb
+@opindex cstopb
+@cindex stop bits
+Use two stop bits per character (one if negated). May be negated.
+
+@item cread
+@opindex cread
+Allow input to be received. May be negated.
+
+@item clocal
+@opindex clocal
+@cindex modem control
+Disable modem control signals. May be negated.
+
+@item crtscts
+@opindex crtscts
+@cindex hardware flow control
+@cindex flow control, hardware
+@cindex RTS/CTS flow control
+Enable RTS/CTS flow control. Non-@acronym{POSIX}. May be negated.
+@end table
+
+
+@node Input
+@subsection Input settings
+
+@cindex input settings
+
+@table @samp
+@item ignbrk
+@opindex ignbrk
+@cindex breaks, ignoring
+Ignore break characters. May be negated.
+
+@item brkint
+@opindex brkint
+@cindex breaks, cause interrupts
+Make breaks cause an interrupt signal. May be negated.
+
+@item ignpar
+@opindex ignpar
+@cindex parity, ignoring
+Ignore characters with parity errors. May be negated.
+
+@item parmrk
+@opindex parmrk
+@cindex parity errors, marking
+Mark parity errors (with a 255-0-character sequence). May be negated.
+
+@item inpck
+@opindex inpck
+Enable input parity checking. May be negated.
+
+@item istrip
+@opindex istrip
+@cindex eight-bit input
+Clear high (8th) bit of input characters. May be negated.
+
+@item inlcr
+@opindex inlcr
+@cindex newline, translating to return
+Translate newline to carriage return. May be negated.
+
+@item igncr
+@opindex igncr
+@cindex return, ignoring
+Ignore carriage return. May be negated.
+
+@item icrnl
+@opindex icrnl
+@cindex return, translating to newline
+Translate carriage return to newline. May be negated.
+
+@item iutf8
+@opindex iutf8
+@cindex input encoding, UTF-8
+Assume input characters are UTF-8 encoded. May be negated.
+
+@item ixon
+@opindex ixon
+@kindex C-s/C-q flow control
+@cindex XON/XOFF flow control
+Enable XON/XOFF flow control (that is, @kbd{CTRL-S}/@kbd{CTRL-Q}). May
+be negated.
+
+@item ixoff
+@itemx tandem
+@opindex ixoff
+@opindex tandem
+@cindex software flow control
+@cindex flow control, software
+Enable sending of @code{stop} character when the system input buffer
+is almost full, and @code{start} character when it becomes almost
+empty again. May be negated.
+
+@item iuclc
+@opindex iuclc
+@cindex uppercase, translating to lowercase
+Translate uppercase characters to lowercase. Non-@acronym{POSIX}. May be
+negated.
+
+@item ixany
+@opindex ixany
+Allow any character to restart output (only the start character
+if negated). Non-@acronym{POSIX}. May be negated.
+
+@item imaxbel
+@opindex imaxbel
+@cindex beeping at input buffer full
+Enable beeping and not flushing input buffer if a character arrives
+when the input buffer is full. Non-@acronym{POSIX}. May be negated.
+@end table
+
+
+@node Output
+@subsection Output settings
+
+@cindex output settings
+These arguments specify output-related operations.
+
+@table @samp
+@item opost
+@opindex opost
+Postprocess output. May be negated.
+
+@item olcuc
+@opindex olcuc
+@cindex lowercase, translating to output
+Translate lowercase characters to uppercase. Non-@acronym{POSIX}. May be
+negated.
+
+@item ocrnl
+@opindex ocrnl
+@cindex return, translating to newline
+Translate carriage return to newline. Non-@acronym{POSIX}. May be negated.
+
+@item onlcr
+@opindex onlcr
+@cindex newline, translating to crlf
+Translate newline to carriage return-newline. Non-@acronym{POSIX}. May be
+negated.
+
+@item onocr
+@opindex onocr
+Do not print carriage returns in the first column. Non-@acronym{POSIX}.
+May be negated.
+
+@item onlret
+@opindex onlret
+Newline performs a carriage return. Non-@acronym{POSIX}. May be negated.
+
+@item ofill
+@opindex ofill
+@cindex pad instead of timing for delaying
+Use fill (padding) characters instead of timing for delays. Non-@acronym{POSIX}.
+May be negated.
+
+@item ofdel
+@opindex ofdel
+@cindex pad character
+Use delete characters for fill instead of null characters. Non-@acronym{POSIX}.
+May be negated.
+
+@item nl1
+@itemx nl0
+@opindex nl@var{n}
+Newline delay style. Non-@acronym{POSIX}.
+
+@item cr3
+@itemx cr2
+@itemx cr1
+@itemx cr0
+@opindex cr@var{n}
+Carriage return delay style. Non-@acronym{POSIX}.
+
+@item tab3
+@itemx tab2
+@itemx tab1
+@itemx tab0
+@opindex tab@var{n}
+Horizontal tab delay style. Non-@acronym{POSIX}.
+
+@item bs1
+@itemx bs0
+@opindex bs@var{n}
+Backspace delay style. Non-@acronym{POSIX}.
+
+@item vt1
+@itemx vt0
+@opindex vt@var{n}
+Vertical tab delay style. Non-@acronym{POSIX}.
+
+@item ff1
+@itemx ff0
+@opindex ff@var{n}
+Form feed delay style. Non-@acronym{POSIX}.
+@end table
+
+
+@node Local
+@subsection Local settings
+
+@cindex local settings
+
+@table @samp
+@item isig
+@opindex isig
+Enable @code{interrupt}, @code{quit}, and @code{suspend} special
+characters. May be negated.
+
+@item icanon
+@opindex icanon
+Enable @code{erase}, @code{kill}, @code{werase}, and @code{rprnt}
+special characters. May be negated.
+
+@item iexten
+@opindex iexten
+Enable non-@acronym{POSIX} special characters. May be negated.
+
+@item echo
+@opindex echo
+Echo input characters. May be negated.
+
+@item echoe
+@itemx crterase
+@opindex echoe
+@opindex crterase
+Echo @code{erase} characters as backspace-space-backspace. May be
+negated.
+
+@item echok
+@opindex echok
+@cindex newline echoing after @code{kill}
+Echo a newline after a @code{kill} character. May be negated.
+
+@item echonl
+@opindex echonl
+@cindex newline, echoing
+Echo newline even if not echoing other characters. May be negated.
+
+@item noflsh
+@opindex noflsh
+@cindex flushing, disabling
+Disable flushing after @code{interrupt} and @code{quit} special
+characters. May be negated.
+
+@item xcase
+@opindex xcase
+@cindex case translation
+Enable input and output of uppercase characters by preceding their
+lowercase equivalents with @samp{\}, when @code{icanon} is set.
+Non-@acronym{POSIX}. May be negated.
+
+@item tostop
+@opindex tostop
+@cindex background jobs, stopping at terminal write
+Stop background jobs that try to write to the terminal. Non-@acronym{POSIX}.
+May be negated.
+
+@item echoprt
+@itemx prterase
+@opindex echoprt
+@opindex prterase
+Echo erased characters backward, between @samp{\} and @samp{/}.
+Non-@acronym{POSIX}. May be negated.
+
+@item echoctl
+@itemx ctlecho
+@opindex echoctl
+@opindex ctlecho
+@cindex control characters, using @samp{^@var{c}}
+@cindex hat notation for control characters
+Echo control characters in hat notation (@samp{^@var{c}}) instead
+of literally. Non-@acronym{POSIX}. May be negated.
+
+@item echoke
+@itemx crtkill
+@opindex echoke
+@opindex crtkill
+Echo the @code{kill} special character by erasing each character on
+the line as indicated by the @code{echoprt} and @code{echoe} settings,
+instead of by the @code{echoctl} and @code{echok} settings. Non-@acronym{POSIX}.
+May be negated.
+@end table
+
+
+@node Combination
+@subsection Combination settings
+
+@cindex combination settings
+Combination settings:
+
+@table @samp
+@item evenp
+@opindex evenp
+@itemx parity
+@opindex parity
+Same as @code{parenb -parodd cs7}. May be negated. If negated, same
+as @code{-parenb cs8}.
+
+@item oddp
+@opindex oddp
+Same as @code{parenb parodd cs7}. May be negated. If negated, same
+as @code{-parenb cs8}.
+
+@item nl
+@opindex nl
+Same as @code{-icrnl -onlcr}. May be negated. If negated, same as
+@code{icrnl -inlcr -igncr onlcr -ocrnl -onlret}.
+
+@item ek
+@opindex ek
+Reset the @code{erase} and @code{kill} special characters to their default
+values.
+
+@item sane
+@opindex sane
+Same as:
+
+@c This is too long to write inline.
+@example
+cread -ignbrk brkint -inlcr -igncr icrnl -ixoff
+-iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr
+-onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0
+ff0 isig icanon iexten echo echoe echok -echonl
+-noflsh -xcase -tostop -echoprt echoctl echoke
+@end example
+
+@noindent
+and also sets all special characters to their default values.
+
+@item cooked
+@opindex cooked
+Same as @code{brkint ignpar istrip icrnl ixon opost isig icanon}, plus
+sets the @code{eof} and @code{eol} characters to their default values
+if they are the same as the @code{min} and @code{time} characters.
+May be negated. If negated, same as @code{raw}.
+
+@item raw
+@opindex raw
+Same as:
+
+@example
+-ignbrk -brkint -ignpar -parmrk -inpck -istrip
+-inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany
+-imaxbel -opost -isig -icanon -xcase min 1 time 0
+@end example
+
+@noindent
+May be negated. If negated, same as @code{cooked}.
+
+@item cbreak
+@opindex cbreak
+Same as @option{-icanon}. May be negated. If negated, same as
+@code{icanon}.
+
+@item pass8
+@opindex pass8
+@cindex eight-bit characters
+Same as @code{-parenb -istrip cs8}. May be negated. If negated,
+same as @code{parenb istrip cs7}.
+
+@item litout
+@opindex litout
+Same as @option{-parenb -istrip -opost cs8}. May be negated.
+If negated, same as @code{parenb istrip opost cs7}.
+
+@item decctlq
+@opindex decctlq
+Same as @option{-ixany}. Non-@acronym{POSIX}. May be negated.
+
+@item tabs
+@opindex tabs
+Same as @code{tab0}. Non-@acronym{POSIX}. May be negated. If negated, same
+as @code{tab3}.
+
+@item lcase
+@itemx LCASE
+@opindex lcase
+@opindex LCASE
+Same as @code{xcase iuclc olcuc}. Non-@acronym{POSIX}. May be negated.
+
+@item crt
+@opindex crt
+Same as @code{echoe echoctl echoke}.
+
+@item dec
+@opindex dec
+Same as @code{echoe echoctl echoke -ixany intr ^C erase ^? kill C-u}.
+@end table
+
+
+@node Characters
+@subsection Special characters
+
+@cindex special characters
+@cindex characters, special
+
+The special characters' default values vary from system to system.
+They are set with the syntax @samp{name value}, where the names are
+listed below and the value can be given either literally, in hat
+notation (@samp{^@var{c}}), or as an integer which may start with
+@samp{0x} to indicate hexadecimal, @samp{0} to indicate octal, or
+any other digit to indicate decimal.
+
+@cindex disabling special characters
+@kindex u@r{, and disabling special characters}
+For GNU stty, giving a value of @code{^-} or @code{undef} disables that
+special character. (This is incompatible with Ultrix @command{stty},
+which uses a value of @samp{u} to disable a special character. GNU
+@command{stty} treats a value @samp{u} like any other, namely to set that
+special character to @key{U}.)
+
+@table @samp
+
+@item intr
+@opindex intr
+Send an interrupt signal.
+
+@item quit
+@opindex quit
+Send a quit signal.
+
+@item erase
+@opindex erase
+Erase the last character typed.
+
+@item kill
+@opindex kill
+Erase the current line.
+
+@item eof
+@opindex eof
+Send an end of file (terminate the input).
+
+@item eol
+@opindex eol
+End the line.
+
+@item eol2
+@opindex eol2
+Alternate character to end the line. Non-@acronym{POSIX}.
+
+@item swtch
+@opindex swtch
+Switch to a different shell layer. Non-@acronym{POSIX}.
+
+@item start
+@opindex start
+Restart the output after stopping it.
+
+@item stop
+@opindex stop
+Stop the output.
+
+@item susp
+@opindex susp
+Send a terminal stop signal.
+
+@item dsusp
+@opindex dsusp
+Send a terminal stop signal after flushing the input. Non-@acronym{POSIX}.
+
+@item rprnt
+@opindex rprnt
+Redraw the current line. Non-@acronym{POSIX}.
+
+@item werase
+@opindex werase
+Erase the last word typed. Non-@acronym{POSIX}.
+
+@item lnext
+@opindex lnext
+Enter the next character typed literally, even if it is a special
+character. Non-@acronym{POSIX}.
+@end table
+
+
+@node Special
+@subsection Special settings
+
+@cindex special settings
+
+@table @samp
+@item min @var{n}
+@opindex min
+Set the minimum number of characters that will satisfy a read until
+the time value has expired, when @option{-icanon} is set.
+
+@item time @var{n}
+@opindex time
+Set the number of tenths of a second before reads time out if the minimum
+number of characters have not been read, when @option{-icanon} is set.
+
+@item ispeed @var{n}
+@opindex ispeed
+Set the input speed to @var{n}.
+
+@item ospeed @var{n}
+@opindex ospeed
+Set the output speed to @var{n}.
+
+@item rows @var{n}
+@opindex rows
+Tell the tty kernel driver that the terminal has @var{n} rows. Non-@acronym{POSIX}.
+
+@item cols @var{n}
+@itemx columns @var{n}
+@opindex cols
+@opindex columns
+Tell the kernel that the terminal has @var{n} columns. Non-@acronym{POSIX}.
+
+@item size
+@opindex size
+@vindex LINES
+@vindex COLUMNS
+Print the number of rows and columns that the kernel thinks the
+terminal has. (Systems that don't support rows and columns in the kernel
+typically use the environment variables @env{LINES} and @env{COLUMNS}
+instead; however, GNU @command{stty} does not know anything about them.)
+Non-@acronym{POSIX}.
+
+@item line @var{n}
+@opindex line
+Use line discipline @var{n}. Non-@acronym{POSIX}.
+
+@item speed
+@opindex speed
+Print the terminal speed.
+
+@item @var{n}
+@cindex baud rate, setting
+@c FIXME: Is this still true that the baud rate can't be set
+@c higher than 38400?
+Set the input and output speeds to @var{n}. @var{n} can be one
+of: 0 50 75 110 134 134.5 150 200 300 600 1200 1800 2400 4800 9600
+19200 38400 @code{exta} @code{extb}. @code{exta} is the same as
+19200; @code{extb} is the same as 38400. 0 hangs up the line if
+@option{-clocal} is set.
+@end table
+
+
+@node printenv invocation
+@section @command{printenv}: Print all or some environment variables
+
+@pindex printenv
+@cindex printing all or some environment variables
+@cindex environment variables, printing
+
+@command{printenv} prints environment variable values. Synopsis:
+
+@example
+printenv [@var{option}] [@var{variable}]@dots{}
+@end example
+
+If no @var{variable}s are specified, @command{printenv} prints the value of
+every environment variable. Otherwise, it prints the value of each
+@var{variable} that is set, and nothing for those that are not set.
+
+The only options are a lone @option{--help} or @option{--version}.
+@xref{Common options}.
+
+@cindex exit status of @command{printenv}
+Exit status:
+
+@display
+0 if all variables specified were found
+1 if at least one specified variable was not found
+2 if a write error occurred
+@end display
+
+
+@node tty invocation
+@section @command{tty}: Print file name of terminal on standard input
+
+@pindex tty
+@cindex print terminal file name
+@cindex terminal file name, printing
+
+@command{tty} prints the file name of the terminal connected to its standard
+input. It prints @samp{not a tty} if standard input is not a terminal.
+Synopsis:
+
+@example
+tty [@var{option}]@dots{}
+@end example
+
+The program accepts the following option. Also see @ref{Common options}.
+
+@table @samp
+
+@item -s
+@itemx --silent
+@itemx --quiet
+@opindex -s
+@opindex --silent
+@opindex --quiet
+Print nothing; only return an exit status.
+
+@end table
+
+@cindex exit status of @command{tty}
+Exit status:
+
+@display
+0 if standard input is a terminal
+1 if standard input is not a terminal
+2 if given incorrect arguments
+3 if a write error occurs
+@end display
+
+
+@node User information
+@chapter User information
+
+@cindex user information, commands for
+@cindex commands for printing user information
+
+This section describes commands that print user-related information:
+logins, groups, and so forth.
+
+@menu
+* id invocation:: Print user identity.
+* logname invocation:: Print current login name.
+* whoami invocation:: Print effective user ID.
+* groups invocation:: Print group names a user is in.
+* users invocation:: Print login names of users currently logged in.
+* who invocation:: Print who is currently logged in.
+@end menu
+
+
+@node id invocation
+@section @command{id}: Print user identity
+
+@pindex id
+@cindex real user and group IDs, printing
+@cindex effective user and group IDs, printing
+@cindex printing real and effective user and group IDs
+
+@command{id} prints information about the given user, or the process
+running it if no user is specified. Synopsis:
+
+@example
+id [@var{option}]@dots{} [@var{username}]
+@end example
+
+By default, it prints the real user ID, real group ID, effective user ID
+if different from the real user ID, effective group ID if different from
+the real group ID, and supplemental group IDs.
+
+Each of these numeric values is preceded by an identifying string and
+followed by the corresponding user or group name in parentheses.
+
+The options cause @command{id} to print only part of the above information.
+Also see @ref{Common options}.
+
+@table @samp
+@item -g
+@itemx --group
+@opindex -g
+@opindex --group
+Print only the group ID.
+
+@item -G
+@itemx --groups
+@opindex -G
+@opindex --groups
+Print only the group ID and the supplementary groups.
+
+@item -n
+@itemx --name
+@opindex -n
+@opindex --name
+Print the user or group name instead of the ID number. Requires
+@option{-u}, @option{-g}, or @option{-G}.
+
+@item -r
+@itemx --real
+@opindex -r
+@opindex --real
+Print the real, instead of effective, user or group ID. Requires
+@option{-u}, @option{-g}, or @option{-G}.
+
+@item -u
+@itemx --user
+@opindex -u
+@opindex --user
+Print only the user ID.
+
+@end table
+
+@exitstatus
+
+
+@node logname invocation
+@section @command{logname}: Print current login name
+
+@pindex logname
+@cindex printing user's login name
+@cindex login name, printing
+@cindex user name, printing
+
+@flindex utmp
+@command{logname} prints the calling user's name, as found in a
+system-maintained file (often @file{/var/run/utmp} or
+@file{/etc/utmp}), and exits with a status of 0. If there is no entry
+for the calling process, @command{logname} prints
+an error message and exits with a status of 1.
+
+The only options are @option{--help} and @option{--version}. @xref{Common
+options}.
+
+@exitstatus
+
+
+@node whoami invocation
+@section @command{whoami}: Print effective user ID
+
+@pindex whoami
+@cindex effective user ID, printing
+@cindex printing the effective user ID
+
+@command{whoami} prints the user name associated with the current
+effective user ID. It is equivalent to the command @samp{id -un}.
+
+The only options are @option{--help} and @option{--version}. @xref{Common
+options}.
+
+@exitstatus
+
+
+@node groups invocation
+@section @command{groups}: Print group names a user is in
+
+@pindex groups
+@cindex printing groups a user is in
+@cindex supplementary groups, printing
+
+@command{groups} prints the names of the primary and any supplementary
+groups for each given @var{username}, or the current process if no names
+are given. If more than one name is given, the name of each user is
+printed before
+the list of that user's groups. Synopsis:
+
+@example
+groups [@var{username}]@dots{}
+@end example
+
+The group lists are equivalent to the output of the command @samp{id -Gn}.
+
+The only options are @option{--help} and @option{--version}. @xref{Common
+options}.
+
+@exitstatus
+
+
+@node users invocation
+@section @command{users}: Print login names of users currently logged in
+
+@pindex users
+@cindex printing current usernames
+@cindex usernames, printing current
+
+@cindex login sessions, printing users with
+@command{users} prints on a single line a blank-separated list of user
+names of users currently logged in to the current host. Each user name
+corresponds to a login session, so if a user has more than one login
+session, that user's name will appear the same number of times in the
+output. Synopsis:
+
+@example
+users [@var{file}]
+@end example
+
+@flindex utmp
+@flindex wtmp
+With no @var{file} argument, @command{users} extracts its information from
+a system-maintained file (often @file{/var/run/utmp} or
+@file{/etc/utmp}). If a file argument is given, @command{users} uses
+that file instead. A common choice is @file{/var/log/wtmp}.
+
+The only options are @option{--help} and @option{--version}. @xref{Common
+options}.
+
+@exitstatus
+
+
+@node who invocation
+@section @command{who}: Print who is currently logged in
+
+@pindex who
+@cindex printing current user information
+@cindex information, about current users
+
+@command{who} prints information about users who are currently logged on.
+Synopsis:
+
+@example
+@command{who} [@var{option}] [@var{file}] [am i]
+@end example
+
+@cindex terminal lines, currently used
+@cindex login time
+@cindex remote hostname
+If given no non-option arguments, @command{who} prints the following
+information for each user currently logged on: login name, terminal
+line, login time, and remote hostname or X display.
+
+@flindex utmp
+@flindex wtmp
+If given one non-option argument, @command{who} uses that instead of
+a default system-maintained file (often @file{/var/run/utmp} or
+@file{/etc/utmp}) as the name of the file containing the record of
+users logged on. @file{/var/log/wtmp} is commonly given as an argument
+to @command{who} to look at who has previously logged on.
+
+@opindex am i
+@opindex who am i
+If given two non-option arguments, @command{who} prints only the entry
+for the user running it (determined from its standard input), preceded
+by the hostname. Traditionally, the two arguments given are @samp{am
+i}, as in @samp{who am i}.
+
+@vindex TZ
+Time stamps are listed according to the time zone rules specified by
+the @env{TZ} environment variable, or by the system default rules if
+@env{TZ} is not set. @xref{TZ Variable,, Specifying the Time Zone
+with @env{TZ}, libc, The GNU C Library}.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -a
+@itemx --all
+@opindex -a
+@opindex --all
+Same as @samp{-b -d --login -p -r -t -T -u}.
+
+@item -b
+@itemx --boot
+@opindex -b
+@opindex --boot
+Print the date and time of last system boot.
+
+@item -d
+@itemx --dead
+@opindex -d
+@opindex --dead
+Print information corresponding to dead processes.
+
+@item -H
+@itemx --heading
+@opindex -H
+@opindex --heading
+Print column headings.
+
+@item -m
+@opindex -m
+Same as @samp{who am i}.
+
+@item -q
+@itemx --count
+@opindex -q
+@opindex --count
+Print only the login names and the number of users logged on.
+Overrides all other options.
+
+@item -s
+@opindex -s
+Ignored; for compatibility with other versions of @command{who}.
+
+@itemx -u
+@opindex -u
+@cindex idle time
+After the login time, print the number of hours and minutes that the
+user has been idle. @samp{.} means the user was active in the last minute.
+@samp{old} means the user has been idle for more than 24 hours.
+
+@item -l
+@itemx --login
+@opindex -l
+@opindex --login
+List only the entries that correspond to processes via which the
+system is waiting for a user to login. The user name is always @samp{LOGIN}.
+
+@itemx --lookup
+@opindex --lookup
+Attempt to canonicalize hostnames found in utmp through a DNS lookup. This
+is not the default because it can cause significant delays on systems with
+automatic dial-up internet access.
+
+@item -H
+@itemx --heading
+@opindex -H
+@opindex --heading
+Print a line of column headings.
+
+@item -w
+@itemx -T
+@itemx --mesg
+@itemx --message
+@itemx --writable
+@opindex -w
+@opindex -T
+@opindex --mesg
+@opindex --message
+@opindex --writable
+@cindex message status
+@pindex write@r{, allowed}
+After each login name print a character indicating the user's message status:
+
+@display
+@samp{+} allowing @code{write} messages
+@samp{-} disallowing @code{write} messages
+@samp{?} cannot find terminal device
+@end display
+
+@end table
+
+@exitstatus
+
+
+@node System context
+@chapter System context
+
+@cindex system context
+@cindex context, system
+@cindex commands for system context
+
+This section describes commands that print or change system-wide
+information.
+
+@menu
+* date invocation:: Print or set system date and time.
+* uname invocation:: Print system information.
+* hostname invocation:: Print or set system name.
+* hostid invocation:: Print numeric host identifier.
+@end menu
+
+
+@node date invocation
+@section @command{date}: Print or set system date and time
+
+@pindex date
+@cindex time, printing or setting
+@cindex printing the current time
+
+Synopses:
+
+@example
+date [@var{option}]@dots{} [+@var{format}]
+date [-u|--utc|--universal] @c this avoids a newline in the output
+[ MMDDhhmm[[CC]YY][.ss] ]
+@end example
+
+@vindex LC_TIME
+Invoking @command{date} with no @var{format} argument is equivalent to invoking
+it with a default format that depends on the @env{LC_TIME} locale category.
+In the default C locale, this format is @samp{'+%a %b %e %H:%M:%S %Z %Y'},
+so the output looks like @samp{Thu Mar @ 3 13:47:51 PST 2005}.
+
+@vindex TZ
+Normally, @command{date} uses the time zone rules indicated by the
+@env{TZ} environment variable, or the system default rules if @env{TZ}
+is not set. @xref{TZ Variable,, Specifying the Time Zone with
+@env{TZ}, libc, The GNU C Library}.
+
+@findex strftime @r{and @command{date}}
+@cindex time formats
+@cindex formatting times
+If given an argument that starts with a @samp{+}, @command{date} prints the
+current date and time (or the date and time specified by the
+@option{--date} option, see below) in the format defined by that argument,
+which is similar to that of the @code{strftime} function. Except for
+conversion specifiers, which start with @samp{%}, characters in the
+format string are printed unchanged. The conversion specifiers are
+described below.
+
+@exitstatus
+
+@menu
+* Time conversion specifiers:: %[HIklMNpPrRsSTXzZ]
+* Date conversion specifiers:: %[aAbBcCdDeFgGhjmuUVwWxyY]
+* Literal conversion specifiers:: %[%nt]
+* Padding and other flags:: Pad with zeros, spaces, etc.
+* Setting the time:: Changing the system clock.
+* Options for date:: Instead of the current time.
+* Examples of date:: Examples.
+@end menu
+
+@node Time conversion specifiers
+@subsection Time conversion specifiers
+
+@cindex time conversion specifiers
+@cindex conversion specifiers, time
+
+@command{date} conversion specifiers related to times.
+
+@table @samp
+@item %H
+hour (@samp{00}@dots{}@samp{23})
+@item %I
+hour (@samp{01}@dots{}@samp{12})
+@item %k
+hour (@samp{ 0}@dots{}@samp{23}).
+This is a @acronym{GNU} extension.
+@item %l
+hour (@samp{ 1}@dots{}@samp{12}).
+This is a @acronym{GNU} extension.
+@item %M
+minute (@samp{00}@dots{}@samp{59})
+@item %N
+nanoseconds (@samp{000000000}@dots{}@samp{999999999}).
+This is a @acronym{GNU} extension.
+@item %p
+locale's equivalent of either @samp{AM} or @samp{PM};
+blank in many locales.
+Noon is treated as @samp{PM} and midnight as @samp{AM}.
+@item %P
+like @samp{%p}, except lower case.
+This is a @acronym{GNU} extension.
+@item %r
+locale's 12-hour clock time (e.g., @samp{11:11:04 PM})
+@item %R
+24-hour hour and minute. Same as @samp{%H:%M}.
+This is a @acronym{GNU} extension.
+@item %s
+@cindex epoch, seconds since
+@cindex seconds since the epoch
+@cindex beginning of time
+seconds since the epoch, i.e., since 1970-01-01 00:00:00 UTC.
+Leap seconds are not counted unless leap second support is available.
+@xref{%s-examples}, for examples.
+This is a @acronym{GNU} extension.
+@item %S
+second (@samp{00}@dots{}@samp{60}).
+This may be @samp{60} if leap seconds are supported.
+@item %T
+24-hour hour, minute, and second. Same as @samp{%H:%M:%S}.
+@item %X
+locale's time representation (e.g., @samp{23:13:48})
+@item %z
+@w{@acronym{RFC} 2822/@acronym{ISO} 8601} style numeric time zone
+(e.g., @samp{-0600} or @samp{+0530}), or nothing if no
+time zone is determinable. This value reflects the numeric time zone
+appropriate for the current time, using the time zone rules specified
+by the @env{TZ} environment variable.
+The time (and optionally, the time zone rules) can be overridden
+by the @option{--date} option.
+This is a @acronym{GNU} extension.
+@item %:z
+@w{@acronym{RFC} 3339/@acronym{ISO} 8601} style numeric time zone with
+@samp{:} (e.g., @samp{-06:00} or @samp{+05:30}), or nothing if no time
+zone is determinable.
+This is a @acronym{GNU} extension.
+@item %::z
+Numeric time zone to the nearest second with @samp{:} (e.g.,
+@samp{-06:00:00} or @samp{+05:30:00}), or nothing if no time zone is
+determinable.
+This is a @acronym{GNU} extension.
+@item %:::z
+Numeric time zone with @samp{:} using the minimum necessary precision
+(e.g., @samp{-06}, @samp{+05:30}, or @samp{-04:56:02}), or nothing if
+no time zone is determinable.
+This is a @acronym{GNU} extension.
+@item %Z
+alphabetic time zone abbreviation (e.g., @samp{EDT}), or nothing if no
+time zone is determinable. See @samp{%z} for how it is determined.
+@end table
+
+
+@node Date conversion specifiers
+@subsection Date conversion specifiers
+
+@cindex date conversion specifiers
+@cindex conversion specifiers, date
+
+@command{date} conversion specifiers related to dates.
+
+@table @samp
+@item %a
+locale's abbreviated weekday name (e.g., @samp{Sun})
+@item %A
+locale's full weekday name, variable length (e.g., @samp{Sunday})
+@item %b
+locale's abbreviated month name (e.g., @samp{Jan})
+@item %B
+locale's full month name, variable length (e.g., @samp{January})
+@item %c
+locale's date and time (e.g., @samp{Thu Mar @ 3 23:05:25 2005})
+@item %C
+century. This is like @samp{%Y}, except the last two digits are omitted.
+For example, it is @samp{20} if @samp{%Y} is @samp{2000},
+and is @samp{-0} if @samp{%Y} is @samp{-001}.
+It is normally at least two characters, but it may be more.
+@item %d
+day of month (e.g., @samp{01})
+@item %D
+date; same as @samp{%m/%d/%y}
+@item %e
+day of month, space padded; same as @samp{%_d}
+@item %F
+full date in @acronym{ISO} 8601 format; same as @samp{%Y-%m-%d}.
+This is a good choice for a date format, as it is standard and
+is easy to sort in the usual case where years are in the range
+0000@dots{}9999.
+This is a @acronym{GNU} extension.
+@item %g
+year corresponding to the @acronym{ISO} week number, but without the century
+(range @samp{00} through @samp{99}). This has the same format and value
+as @samp{%y}, except that if the @acronym{ISO} week number (see
+@samp{%V}) belongs
+to the previous or next year, that year is used instead.
+This is a @acronym{GNU} extension.
+@item %G
+year corresponding to the @acronym{ISO} week number. This has the
+same format and value as @samp{%Y}, except that if the @acronym{ISO}
+week number (see
+@samp{%V}) belongs to the previous or next year, that year is used
+instead.
+It is normally useful only if @samp{%V} is also used;
+for example, the format @samp{%G-%m-%d} is probably a mistake,
+since it combines the ISO week number year with the conventional month and day.
+This is a @acronym{GNU} extension.
+@item %h
+same as @samp{%b}
+@item %j
+day of year (@samp{001}@dots{}@samp{366})
+@item %m
+month (@samp{01}@dots{}@samp{12})
+@item %u
+day of week (@samp{1}@dots{}@samp{7}) with @samp{1} corresponding to Monday
+@item %U
+week number of year, with Sunday as the first day of the week
+(@samp{00}@dots{}@samp{53}).
+Days in a new year preceding the first Sunday are in week zero.
+@item %V
+@acronym{ISO} week number, that is, the
+week number of year, with Monday as the first day of the week
+(@samp{01}@dots{}@samp{53}).
+If the week containing January 1 has four or more days in
+the new year, then it is considered week 1; otherwise, it is week 53 of
+the previous year, and the next week is week 1. (See the @acronym{ISO} 8601
+standard.)
+@item %w
+day of week (@samp{0}@dots{}@samp{6}) with 0 corresponding to Sunday
+@item %W
+week number of year, with Monday as first day of week
+(@samp{00}@dots{}@samp{53}).
+Days in a new year preceding the first Monday are in week zero.
+@item %x
+locale's date representation (e.g., @samp{12/31/99})
+@item %y
+last two digits of year (@samp{00}@dots{}@samp{99})
+@item %Y
+year. This is normally at least four characters, but it may be more.
+Year @samp{0000} precedes year @samp{0001}, and year @samp{-001}
+precedes year @samp{0000}.
+@end table
+
+
+@node Literal conversion specifiers
+@subsection Literal conversion specifiers
+
+@cindex literal conversion specifiers
+@cindex conversion specifiers, literal
+
+@command{date} conversion specifiers that produce literal strings.
+
+@table @samp
+@item %%
+a literal %
+@item %n
+a newline
+@item %t
+a horizontal tab
+@end table
+
+
+@node Padding and other flags
+@subsection Padding and other flags
+
+@cindex numeric field padding
+@cindex padding of numeric fields
+@cindex fields, padding numeric
+
+Unless otherwise specified, @command{date} normally pads numeric fields
+with zeros, so that, for
+example, numeric months are always output as two digits.
+Seconds since the epoch are not padded, though,
+since there is no natural width for them.
+
+As a @acronym{GNU} extension, @command{date} recognizes any of the
+following optional flags after the @samp{%}:
+
+@table @samp
+@item -
+(hyphen) Do not pad the field; useful if the output is intended for
+human consumption.
+@item _
+(underscore) Pad with spaces; useful if you need a fixed
+number of characters in the output, but zeros are too distracting.
+@item 0
+(zero) Pad with zeros even if the conversion specifier
+would normally pad with spaces.
+@item ^
+Use upper case characters if possible.
+@item #
+Use opposite case characters if possible.
+A field that is normally upper case becomes lower case, and vice versa.
+@end table
+
+@noindent
+Here are some examples of padding:
+
+@example
+date +%d/%m -d "Feb 1"
+@result{} 01/02
+date +%-d/%-m -d "Feb 1"
+@result{} 1/2
+date +%_d/%_m -d "Feb 1"
+@result{} 1/ 2
+@end example
+
+As a @acronym{GNU} extension, you can specify the field width
+(after any flag, if present) as a decimal number. If the natural size of the
+output is of the field has less than the specified number of characters,
+the result is written right adjusted and padded to the given
+size. For example, @samp{%9B} prints the right adjusted month name in
+a field of width 9.
+
+An optional modifier can follow the optional flag and width
+specification. The modifiers are:
+
+@table @samp
+@item E
+Use the locale's alternate representation for date and time. This
+modifier applies to the @samp{%c}, @samp{%C}, @samp{%x}, @samp{%X},
+@samp{%y} and @samp{%Y} conversion specifiers. In a Japanese locale, for
+example, @samp{%Ex} might yield a date format based on the Japanese
+Emperors' reigns.
+
+@item O
+Use the locale's alternate numeric symbols for numbers. This modifier
+applies only to numeric conversion specifiers.
+@end table
+
+If the format supports the modifier but no alternate representation
+is available, it is ignored.
+
+
+@node Setting the time
+@subsection Setting the time
+
+@cindex setting the time
+@cindex time setting
+@cindex appropriate privileges
+
+If given an argument that does not start with @samp{+}, @command{date} sets
+the system clock to the date and time specified by that argument (as
+described below). You must have appropriate privileges to set the
+system clock. The @option{--date} and @option{--set} options may not be
+used with such an argument. The @option{--universal} option may be used
+with such an argument to indicate that the specified date and time are
+relative to Coordinated Universal Time rather than to the local time
+zone.
+
+The argument must consist entirely of digits, which have the following
+meaning:
+
+@table @samp
+@item MM
+month
+@item DD
+day within month
+@item hh
+hour
+@item mm
+minute
+@item CC
+first two digits of year (optional)
+@item YY
+last two digits of year (optional)
+@item ss
+second (optional)
+@end table
+
+The @option{--set} option also sets the system clock; see the next section.
+
+
+@node Options for date
+@subsection Options for @command{date}
+
+@cindex @command{date} options
+@cindex options for @command{date}
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -d @var{datestr}
+@itemx --date=@var{datestr}
+@opindex -d
+@opindex --date
+@cindex parsing date strings
+@cindex date strings, parsing
+@cindex arbitrary date strings, parsing
+@opindex yesterday
+@opindex tomorrow
+@opindex next @var{day}
+@opindex last @var{day}
+Display the date and time specified in @var{datestr} instead of the
+current date and time. @var{datestr} can be in almost any common
+format. It can contain month names, time zones, @samp{am} and @samp{pm},
+@samp{yesterday}, etc. For example, @option{--date="2004-02-27
+14:19:13.489392193 +0530"} specifies the instant of time that is
+489,392,193 nanoseconds after February 27, 2004 at 2:19:13 PM in a
+time zone that is 5 hours and 30 minutes east of @acronym{UTC}.
+@xref{Date input formats}.
+
+@item -f @var{datefile}
+@itemx --file=@var{datefile}
+@opindex -f
+@opindex --file
+Parse each line in @var{datefile} as with @option{-d} and display the
+resulting date and time. If @var{datefile} is @samp{-}, use standard
+input. This is useful when you have many dates to process, because the
+system overhead of starting up the @command{date} executable many times can
+be considerable.
+
+@item -r @var{file}
+@itemx --reference=@var{file}
+@opindex -r
+@opindex --reference
+Display the date and time of the last modification of @var{file},
+instead of the current date and time.
+
+@item -R
+@itemx --rfc-822
+@itemx --rfc-2822
+@opindex -R
+@opindex --rfc-822
+@opindex --rfc-2822
+Display the date and time using the format @samp{%a, %d %b %Y %H:%M:%S
+%z}, evaluated in the C locale so abbreviations are always in English.
+For example:
+
+@example
+Fri, 09 Sep 2005 13:51:39 -0700
+@end example
+
+This format conforms to
+@uref{ftp://ftp.rfc-editor.org/in-notes/rfc2822.txt, Internet
+@acronym{RFCs} 2822} and
+@uref{ftp://ftp.rfc-editor.org/in-notes/rfc822.txt, 822}, the
+current and previous standards for Internet email.
+
+@item --rfc-3339=@var{timespec}
+@opindex --rfc-3339=@var{timespec}
+Display the date using a format specified by
+@uref{ftp://ftp.rfc-editor.org/in-notes/rfc3339.txt, Internet
+@acronym{RFC} 3339}. This is a subset of the @acronym{ISO} 8601
+format, except that it also permits applications to use a space rather
+than a @samp{T} to separate dates from times. Unlike the other
+standard formats, @acronym{RFC} 3339 format is always suitable as
+input for the @option{--date} (@option{-d}) and @option{--file}
+(@option{-f}) options, regardless of the current locale.
+
+The argument @var{timespec} specifies how much of the time to include.
+It can be one of the following:
+
+@table @samp
+@item date
+Print just the full-date, e.g., @samp{2005-09-14}.
+This is equivalent to the format @samp{%Y-%m-%d}.
+
+@item seconds
+Print the full-date and full-time separated by a space, e.g.,
+@samp{2005-09-14 00:56:06+05:30}. The output ends with a numeric
+time-offset; here the @samp{+05:30} means that local time is five
+hours and thirty minutes east of @acronym{UTC}. This is equivalent to
+the format @samp{%Y-%m-%d %H:%M:%S%:z}.
+
+@item ns
+Like @samp{seconds}, but also print nanoseconds, e.g.,
+@samp{2005-09-14 00:56:06.998458565+05:30}.
+This is equivalent to the format @samp{%Y-%m-%d %H:%M:%S.%N%:z}.
+
+@end table
+
+@item -s @var{datestr}
+@itemx --set=@var{datestr}
+@opindex -s
+@opindex --set
+Set the date and time to @var{datestr}. See @option{-d} above.
+
+@item -u
+@itemx --utc
+@itemx --universal
+@opindex -u
+@opindex --utc
+@opindex --universal
+@cindex Coordinated Universal Time
+@cindex UTC
+@cindex Greenwich Mean Time
+@cindex GMT
+@vindex TZ
+Use Coordinated Universal Time (@acronym{UTC}) by operating as if the
+@env{TZ} environment variable were set to the string @samp{UTC0}.
+Coordinated
+Universal Time is often called ``Greenwich Mean Time'' (@sc{gmt}) for
+historical reasons.
+@end table
+
+
+@node Examples of date
+@subsection Examples of @command{date}
+
+@cindex examples of @command{date}
+
+Here are a few examples. Also see the documentation for the @option{-d}
+option in the previous section.
+
+@itemize @bullet
+
+@item
+To print the date of the day before yesterday:
+
+@example
+date --date='2 days ago'
+@end example
+
+@item
+To print the date of the day three months and one day hence:
+
+@example
+date --date='3 months 1 day'
+@end example
+
+@item
+To print the day of year of Christmas in the current year:
+
+@example
+date --date='25 Dec' +%j
+@end example
+
+@item
+To print the current full month name and the day of the month:
+
+@example
+date '+%B %d'
+@end example
+
+But this may not be what you want because for the first nine days of
+the month, the @samp{%d} expands to a zero-padded two-digit field,
+for example @samp{date -d 1may '+%B %d'} will print @samp{May 01}.
+
+@item
+To print a date without the leading zero for one-digit days
+of the month, you can use the (@acronym{GNU} extension)
+@samp{-} flag to suppress
+the padding altogether:
+
+@example
+date -d 1may '+%B %-d
+@end example
+
+@item
+To print the current date and time in the format required by many
+non-@acronym{GNU} versions of @command{date} when setting the system clock:
+
+@example
+date +%m%d%H%M%Y.%S
+@end example
+
+@item
+To set the system clock forward by two minutes:
+
+@example
+date --set='+2 minutes'
+@end example
+
+@item
+To print the date in @acronym{RFC} 2822 format,
+use @samp{date --rfc-2822}. Here is some example output:
+
+@example
+Fri, 09 Sep 2005 13:51:39 -0700
+@end example
+
+@anchor{%s-examples}
+@item
+To convert a date string to the number of seconds since the epoch
+(which is 1970-01-01 00:00:00 UTC), use the @option{--date} option with
+the @samp{%s} format. That can be useful in sorting and/or graphing
+and/or comparing data by date. The following command outputs the
+number of the seconds since the epoch for the time two minutes after the
+epoch:
+
+@example
+date --date='1970-01-01 00:02:00 +0000' +%s
+120
+@end example
+
+If you do not specify time zone information in the date string,
+@command{date} uses your computer's idea of the time zone when
+interpreting the string. For example, if your computer's time zone is
+that of Cambridge, Massachusetts, which was then 5 hours (i.e., 18,000
+seconds) behind UTC:
+
+@example
+# local time zone used
+date --date='1970-01-01 00:02:00' +%s
+18120
+@end example
+
+@item
+If you're sorting or graphing dated data, your raw date values may be
+represented as seconds since the epoch. But few people can look at
+the date @samp{946684800} and casually note ``Oh, that's the first second
+of the year 2000 in Greenwich, England.''
+
+@example
+date --date='2000-01-01 UTC' +%s
+946684800
+@end example
+
+An alternative is to use the @option{--utc} (@option{-u}) option.
+Then you may omit @samp{UTC} from the date string. Although this
+produces the same result for @samp{%s} and many other format sequences,
+with a time zone offset different from zero, it would give a different
+result for zone-dependent formats like @samp{%z}.
+
+@example
+date -u --date=2000-01-01 +%s
+946684800
+@end example
+
+To convert such an unwieldy number of seconds back to
+a more readable form, use a command like this:
+
+@smallexample
+# local time zone used
+date -d '1970-01-01 UTC 946684800 seconds' +"%Y-%m-%d %T %z"
+1999-12-31 19:00:00 -0500
+@end smallexample
+
+Or if you do not mind depending on the @samp{@@} feature present since
+coreutils 5.3.0, you could shorten this to:
+
+@smallexample
+date -d @@946684800 +"%F %T %z"
+1999-12-31 19:00:00 -0500
+@end smallexample
+
+Often it is better to output UTC-relative date and time:
+
+@smallexample
+date -u -d '1970-01-01 946684800 seconds' +"%Y-%m-%d %T %z"
+2000-01-01 00:00:00 +0000
+@end smallexample
+
+@end itemize
+
+
+@node uname invocation
+@section @command{uname}: Print system information
+
+@pindex uname
+@cindex print system information
+@cindex system information, printing
+
+@command{uname} prints information about the machine and operating system
+it is run on. If no options are given, @command{uname} acts as if the
+@option{-s} option were given. Synopsis:
+
+@example
+uname [@var{option}]@dots{}
+@end example
+
+If multiple options or @option{-a} are given, the selected information is
+printed in this order:
+
+@example
+@var{kernel-name} @var{nodename} @var{kernel-release} @var{kernel-version}
+@var{machine} @var{processor} @var{hardware-platform} @var{operating-system}
+@end example
+
+The information may contain internal spaces, so such output cannot be
+parsed reliably. In the following example, @var{release} is
+@samp{2.2.18ss.e820-bda652a #4 SMP Tue Jun 5 11:24:08 PDT 2001}:
+
+@smallexample
+uname -a
+@result{} Linux dum 2.2.18 #4 SMP Tue Jun 5 11:24:08 PDT 2001 i686 unknown unknown GNU/Linux
+@end smallexample
+
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+
+@item -a
+@itemx --all
+@opindex -a
+@opindex --all
+Print all of the below information, except omit the processor type
+and the hardware platform name if they are unknown.
+
+@item -i
+@itemx --hardware-platform
+@opindex -i
+@opindex --hardware-platform
+@cindex implementation, hardware
+@cindex hardware platform
+@cindex platform, hardware
+Print the hardware platform name
+(sometimes called the hardware implementation).
+Print @samp{unknown} if the kernel does not make this information
+easily available, as is the case with Linux kernels.
+
+@item -m
+@itemx --machine
+@opindex -m
+@opindex --machine
+@cindex machine type
+@cindex hardware class
+@cindex hardware type
+Print the machine hardware name (sometimes called the hardware class
+or hardware type).
+
+@item -n
+@itemx --nodename
+@opindex -n
+@opindex --nodename
+@cindex hostname
+@cindex node name
+@cindex network node name
+Print the network node hostname.
+
+@item -p
+@itemx --processor
+@opindex -p
+@opindex --processor
+@cindex host processor type
+Print the processor type (sometimes called the instruction set
+architecture or ISA).
+Print @samp{unknown} if the kernel does not make this information
+easily available, as is the case with Linux kernels.
+
+@item -o
+@itemx --operating-system
+@opindex -o
+@opindex --operating-system
+@cindex operating system name
+Print the name of the operating system.
+
+@item -r
+@itemx --kernel-release
+@opindex -r
+@opindex --kernel-release
+@cindex kernel release
+@cindex release of kernel
+Print the kernel release.
+
+@item -s
+@itemx --kernel-name
+@opindex -s
+@opindex --kernel-name
+@cindex kernel name
+@cindex name of kernel
+Print the kernel name.
+@acronym{POSIX} 1003.1-2001 (@pxref{Standards conformance}) calls this
+``the implementation of the operating system'', because the
+@acronym{POSIX} specification itself has no notion of ``kernel''.
+The kernel name might be the same as the operating system name printed
+by the @option{-o} or @option{--operating-system} option, but it might
+differ. Some operating systems (e.g., FreeBSD, HP-UX) have the same
+name as their underlying kernels; others (e.g., GNU/Linux, Solaris)
+do not.
+
+@item -v
+@itemx --kernel-version
+@opindex -v
+@opindex --kernel-version
+@cindex kernel version
+@cindex version of kernel
+Print the kernel version.
+
+@end table
+
+@exitstatus
+
+
+@node hostname invocation
+@section @command{hostname}: Print or set system name
+
+@pindex hostname
+@cindex setting the hostname
+@cindex printing the hostname
+@cindex system name, printing
+@cindex appropriate privileges
+
+With no arguments, @command{hostname} prints the name of the current host
+system. With one argument, it sets the current host name to the
+specified string. You must have appropriate privileges to set the host
+name. Synopsis:
+
+@example
+hostname [@var{name}]
+@end example
+
+The only options are @option{--help} and @option{--version}. @xref{Common
+options}.
+
+@exitstatus
+
+
+@node hostid invocation
+@section @command{hostid}: Print numeric host identifier.
+
+@pindex hostid
+@cindex printing the host identifier
+
+@command{hostid} prints the numeric identifier of the current host
+in hexadecimal. This command accepts no arguments.
+The only options are @option{--help} and @option{--version}.
+@xref{Common options}.
+
+For example, here's what it prints on one system I use:
+
+@example
+$ hostid
+1bac013d
+@end example
+
+On that system, the 32-bit quantity happens to be closely
+related to the system's Internet address, but that isn't always
+the case.
+
+@exitstatus
+
+
+@node Modified command invocation
+@chapter Modified command invocation
+
+@cindex modified command invocation
+@cindex invocation of commands, modified
+@cindex commands for invoking other commands
+
+This section describes commands that run other commands in some context
+different than the current one: a modified environment, as a different
+user, etc.
+
+@menu
+* chroot invocation:: Modify the root directory.
+* env invocation:: Modify environment variables.
+* nice invocation:: Modify niceness.
+* nohup invocation:: Immunize to hangups.
+* su invocation:: Modify user and group ID.
+@end menu
+
+
+@node chroot invocation
+@section @command{chroot}: Run a command with a different root directory
+
+@pindex chroot
+@cindex running a program in a specified root directory
+@cindex root directory, running a program in a specified
+
+@command{chroot} runs a command with a specified root directory.
+On many systems, only the super-user can do this.
+Synopses:
+
+@example
+chroot @var{newroot} [@var{command} [@var{args}]@dots{}]
+chroot @var{option}
+@end example
+
+Ordinarily, file names are looked up starting at the root of the
+directory structure, i.e., @file{/}. @command{chroot} changes the root to
+the directory @var{newroot} (which must exist) and then runs
+@var{command} with optional @var{args}. If @var{command} is not
+specified, the default is the value of the @env{SHELL} environment
+variable or @command{/bin/sh} if not set, invoked with the @option{-i} option.
+@var{command} must not be a special built-in utility
+(@pxref{Special built-in utilities}).
+
+The only options are @option{--help} and @option{--version}. @xref{Common
+options}. Options must precede operands.
+
+Here are a few tips to help avoid common problems in using chroot.
+To start with a simple example, make @var{command} refer to a statically
+linked binary. If you were to use a dynamically linked executable, then
+you'd have to arrange to have the shared libraries in the right place under
+your new root directory.
+
+For example, if you create a statically linked @command{ls} executable,
+and put it in @file{/tmp/empty}, you can run this command as root:
+
+@example
+$ chroot /tmp/empty /ls -Rl /
+@end example
+
+Then you'll see output like this:
+
+@example
+/:
+total 1023
+-rwxr-xr-x 1 0 0 1041745 Aug 16 11:17 ls
+@end example
+
+If you want to use a dynamically linked executable, say @command{bash},
+then first run @samp{ldd bash} to see what shared objects it needs.
+Then, in addition to copying the actual binary, also copy the listed
+files to the required positions under your intended new root directory.
+Finally, if the executable requires any other files (e.g., data, state,
+device files), copy them into place, too.
+
+@cindex exit status of @command{chroot}
+Exit status:
+
+@display
+1 if @command{chroot} itself fails
+126 if @var{command} is found but cannot be invoked
+127 if @var{command} cannot be found
+the exit status of @var{command} otherwise
+@end display
+
+
+@node env invocation
+@section @command{env}: Run a command in a modified environment
+
+@pindex env
+@cindex environment, running a program in a modified
+@cindex modified environment, running a program in a
+@cindex running a program in a modified environment
+
+@command{env} runs a command with a modified environment. Synopses:
+
+@example
+env [@var{option}]@dots{} [@var{name}=@var{value}]@dots{} @c
+[@var{command} [@var{args}]@dots{}]
+env
+@end example
+
+Operands of the form @samp{@var{variable}=@var{value}} set
+the environment variable @var{variable} to value @var{value}.
+@var{value} may be empty (@samp{@var{variable}=}). Setting a variable
+to an empty value is different from unsetting it.
+These operands are evaluated left-to-right, so if two operands
+mention the same variable the earlier is ignored.
+
+Environment variable names can be empty, and can contain any
+characters other than @samp{=} and the null character (@acronym{ASCII}
+@sc{nul}). However, it is wise to limit yourself to names that
+consist solely of underscores, digits, and @acronym{ASCII} letters,
+and that begin with a non-digit, as applications like the shell do not
+work well with other names.
+
+@vindex PATH
+The first operand that does not contain the character @samp{=}
+specifies the program to invoke; it is
+searched for according to the @env{PATH} environment variable. Any
+remaining arguments are passed as arguments to that program.
+The program should not be a special built-in utility
+(@pxref{Special built-in utilities}).
+
+@cindex environment, printing
+
+If no command name is specified following the environment
+specifications, the resulting environment is printed. This is like
+specifying the @command{printenv} program.
+
+The program accepts the following options. Also see @ref{Common options}.
+Options must precede operands.
+
+@table @samp
+
+@item -u @var{name}
+@itemx --unset=@var{name}
+@opindex -u
+@opindex --unset
+Remove variable @var{name} from the environment, if it was in the
+environment.
+
+@item -
+@itemx -i
+@itemx --ignore-environment
+@opindex -
+@opindex -i
+@opindex --ignore-environment
+Start with an empty environment, ignoring the inherited environment.
+
+@end table
+
+@cindex exit status of @command{env}
+Exit status:
+
+@display
+0 if no @var{command} is specified and the environment is output
+1 if @command{env} itself fails
+126 if @var{command} is found but cannot be invoked
+127 if @var{command} cannot be found
+the exit status of @var{command} otherwise
+@end display
+
+
+@node nice invocation
+@section @command{nice}: Run a command with modified niceness
+
+@pindex nice
+@cindex niceness
+@cindex scheduling, affecting
+@cindex appropriate privileges
+
+@command{nice} prints or modifies a process's @dfn{niceness},
+a parameter that affects whether the process is scheduled favorably.
+Synopsis:
+
+@example
+nice [@var{option}]@dots{} [@var{command} [@var{arg}]@dots{}]
+@end example
+
+If no arguments are given, @command{nice} prints the current niceness.
+Otherwise, @command{nice} runs the given @var{command} with its
+niceness adjusted. By default, its niceness is incremented by 10.
+
+Nicenesses range at least from @minus{}20 (resulting in the most
+favorable scheduling) through 19 (the least favorable). Some systems
+may have a wider range of nicenesses; conversely, other systems may
+enforce more restrictive limits. An attempt to set the niceness
+outside the supported range is treated as an attempt to use the
+minimum or maximum supported value.
+
+A niceness should not be confused with a scheduling priority, which
+lets applications determine the order in which threads are scheduled
+to run. Unlike a priority, a niceness is merely advice to the
+scheduler, which the scheduler is free to ignore. Also, as a point of
+terminology, @acronym{POSIX} defines the behavior of @command{nice} in
+terms of a @dfn{nice value}, which is the nonnegative difference
+between a niceness and the minimum niceness. Though @command{nice}
+conforms to @acronym{POSIX}, its documentation and diagnostics use the
+term ``niceness'' for compatibility with historical practice.
+
+@var{command} must not be a special built-in utility (@pxref{Special
+built-in utilities}).
+
+@cindex conflicts with shell built-ins
+@cindex built-in shell commands, conflicts with
+Because many shells have a built-in @command{nice} command, using an
+unadorned @command{nice} in a script or interactively may get you
+different functionality than that described here.
+
+The program accepts the following option. Also see @ref{Common options}.
+Options must precede operands.
+
+@table @samp
+@item -n @var{adjustment}
+@itemx --adjustment=@var{adjustment}
+@opindex -n
+@opindex --adjustment
+Add @var{adjustment} instead of 10 to the command's niceness. If
+@var{adjustment} is negative and you lack appropriate privileges,
+@command{nice} issues a warning but otherwise acts as if you specified
+a zero adjustment.
+
+For compatibility @command{nice} also supports an obsolete
+option syntax @option{-@var{adjustment}}. New scripts should use
+@option{-n @var{adjustment}} instead.
+
+@end table
+
+@cindex exit status of @command{nice}
+Exit status:
+
+@display
+0 if no @var{command} is specified and the niceness is output
+1 if @command{nice} itself fails
+126 if @var{command} is found but cannot be invoked
+127 if @var{command} cannot be found
+the exit status of @var{command} otherwise
+@end display
+
+It is sometimes useful to run a non-interactive program with reduced niceness.
+
+@example
+$ nice factor 4611686018427387903
+@end example
+
+Since @command{nice} prints the current niceness,
+you can invoke it through itself to demonstrate how it works.
+
+The default behavior is to increase the niceness by @samp{10}:
+
+@example
+$ nice
+0
+$ nice nice
+10
+$ nice -n 10 nice
+10
+@end example
+
+The @var{adjustment} is relative to the current niceness. In the
+next example, the first @command{nice} invocation runs the second one
+with niceness 10, and it in turn runs the final one with a niceness
+that is 3 more:
+
+@example
+$ nice nice -n 3 nice
+13
+@end example
+
+Specifying a niceness larger than the supported range
+is the same as specifying the maximum supported value:
+
+@example
+$ nice -n 10000000000 nice
+19
+@end example
+
+Only a privileged user may run a process with lower niceness:
+
+@example
+$ nice -n -1 nice
+nice: cannot set niceness: Permission denied
+0
+$ sudo nice -n -1 nice
+-1
+@end example
+
+
+@node nohup invocation
+@section @command{nohup}: Run a command immune to hangups
+
+@pindex nohup
+@cindex hangups, immunity to
+@cindex immunity to hangups
+@cindex logging out and continuing to run
+
+@flindex nohup.out
+@command{nohup} runs the given @var{command} with hangup signals ignored,
+so that the command can continue running in the background after you log
+out. Synopsis:
+
+@example
+nohup @var{command} [@var{arg}]@dots{}
+@end example
+
+If standard input is a terminal, it is redirected from
+@file{/dev/null} so that terminal sessions do not mistakenly consider
+the terminal to be used by the command. This is a @acronym{GNU}
+extension; programs intended to be portable to non-@acronym{GNU} hosts
+should use @samp{nohup @var{command} [@var{arg}]@dots{} </dev/null}
+instead.
+
+@flindex nohup.out
+If standard output is a terminal, the command's standard output is appended
+to the file @file{nohup.out}; if that cannot be written to, it is appended
+to the file @file{$HOME/nohup.out}; and if that cannot be written to, the
+command is not run.
+Any @file{nohup.out} or @file{$HOME/nohup.out} file created by
+@command{nohup} is made readable and writable only to the user,
+regardless of the current umask settings.
+
+If standard error is a terminal, it is normally redirected to the same file
+descriptor as the (possibly-redirected) standard output.
+However, if standard output is closed, standard error terminal output
+is instead appended to the file @file{nohup.out} or
+@file{$HOME/nohup.out} as above.
+
+@command{nohup} does not automatically put the command it runs in the
+background; you must do that explicitly, by ending the command line
+with an @samp{&}. Also, @command{nohup} does not alter the
+niceness of @var{command}; use @command{nice} for that,
+e.g., @samp{nohup nice @var{command}}.
+
+@var{command} must not be a special built-in utility (@pxref{Special
+built-in utilities}).
+
+The only options are @option{--help} and @option{--version}. @xref{Common
+options}. Options must precede operands.
+
+@cindex exit status of @command{nohup}
+Exit status:
+
+@display
+126 if @var{command} is found but cannot be invoked
+127 if @command{nohup} itself fails or if @var{command} cannot be found
+the exit status of @var{command} otherwise
+@end display
+
+
+@node su invocation
+@section @command{su}: Run a command with substitute user and group ID
+
+@pindex su
+@cindex substitute user and group IDs
+@cindex user ID, switching
+@cindex super-user, becoming
+@cindex root, becoming
+
+@command{su} allows one user to temporarily become another user. It runs a
+command (often an interactive shell) with the real and effective user
+ID, group ID, and supplemental groups of a given @var{user}. Synopsis:
+
+@example
+su [@var{option}]@dots{} [@var{user} [@var{arg}]@dots{}]
+@end example
+
+@cindex passwd entry, and @command{su} shell
+@flindex /bin/sh
+@flindex /etc/passwd
+If no @var{user} is given, the default is @code{root}, the super-user.
+The shell to use is taken from @var{user}'s @code{passwd} entry, or
+@file{/bin/sh} if none is specified there. If @var{user} has a
+password, @command{su} prompts for the password unless run by a user with
+effective user ID of zero (the super-user).
+
+@vindex HOME
+@vindex SHELL
+@vindex USER
+@vindex LOGNAME
+@cindex login shell
+By default, @command{su} does not change the current directory.
+It sets the environment variables @env{HOME} and @env{SHELL}
+from the password entry for @var{user}, and if @var{user} is not
+the super-user, sets @env{USER} and @env{LOGNAME} to @var{user}.
+By default, the shell is not a login shell.
+
+Any additional @var{arg}s are passed as additional arguments to the
+shell.
+
+@cindex @option{-su}
+GNU @command{su} does not treat @file{/bin/sh} or any other shells specially
+(e.g., by setting @code{argv[0]} to @option{-su}, passing @option{-c} only
+to certain shells, etc.).
+
+@findex syslog
+@command{su} can optionally be compiled to use @code{syslog} to report
+failed, and optionally successful, @command{su} attempts. (If the system
+supports @code{syslog}.) However, GNU @command{su} does not check if the
+user is a member of the @code{wheel} group; see below.
+
+The program accepts the following options. Also see @ref{Common options}.
+
+@table @samp
+@item -c @var{command}
+@itemx --command=@var{command}
+@opindex -c
+@opindex --command
+Pass @var{command}, a single command line to run, to the shell with
+a @option{-c} option instead of starting an interactive shell.
+
+@item -f
+@itemx --fast
+@opindex -f
+@opindex --fast
+@flindex .cshrc
+@cindex file name pattern expansion, disabled
+@cindex globbing, disabled
+Pass the @option{-f} option to the shell. This probably only makes sense
+if the shell run is @command{csh} or @command{tcsh}, for which the @option{-f}
+option prevents reading the startup file (@file{.cshrc}). With
+Bourne-like shells, the @option{-f} option disables file name pattern
+expansion (globbing), which is not likely to be useful.
+
+@item -
+@itemx -l
+@itemx --login
+@opindex -
+@opindex -l
+@opindex --login
+@c other variables already indexed above
+@vindex TERM
+@vindex PATH
+@cindex login shell, creating
+Make the shell a login shell. This means the following. Unset all
+environment variables except @env{TERM}, @env{HOME}, and @env{SHELL}
+(which are set as described above), and @env{USER} and @env{LOGNAME}
+(which are set, even for the super-user, as described above), and set
+@env{PATH} to a compiled-in default value. Change to @var{user}'s home
+directory. Prepend @samp{-} to the shell's name, intended to make it
+read its login startup file(s).
+
+@item -m
+@itemx -p
+@itemx --preserve-environment
+@opindex -m
+@opindex -p
+@opindex --preserve-environment
+@cindex environment, preserving
+@flindex /etc/shells
+@cindex restricted shell
+Do not change the environment variables @env{HOME}, @env{USER},
+@env{LOGNAME}, or @env{SHELL}. Run the shell given in the environment
+variable @env{SHELL} instead of the shell from @var{user}'s passwd
+entry, unless the user running @command{su} is not the super-user and
+@var{user}'s shell is restricted. A @dfn{restricted shell} is one that
+is not listed in the file @file{/etc/shells}, or in a compiled-in list
+if that file does not exist. Parts of what this option does can be
+overridden by @option{--login} and @option{--shell}.
+
+@item -s @var{shell}
+@itemx --shell=@var{shell}
+@opindex -s
+@opindex --shell
+Run @var{shell} instead of the shell from @var{user}'s passwd entry,
+unless the user running @command{su} is not the super-user and @var{user}'s
+shell is restricted (see @option{-m} just above).
+
+@end table
+
+@cindex exit status of @command{su}
+Exit status:
+
+@display
+1 if @command{su} itself fails
+126 if subshell is found but cannot be invoked
+127 if subshell cannot be found
+the exit status of the subshell otherwise
+@end display
+
+@cindex wheel group, not supported
+@cindex group wheel, not supported
+@cindex fascism
+@subsection Why GNU @command{su} does not support the @samp{wheel} group
+
+(This section is by Richard Stallman.)
+
+@cindex Twenex
+@cindex MIT AI lab
+Sometimes a few of the users try to hold total power over all the
+rest. For example, in 1984, a few users at the MIT AI lab decided to
+seize power by changing the operator password on the Twenex system and
+keeping it secret from everyone else. (I was able to thwart this coup
+and give power back to the users by patching the kernel, but I
+wouldn't know how to do that in Unix.)
+
+However, occasionally the rulers do tell someone. Under the usual
+@command{su} mechanism, once someone learns the root password who
+sympathizes with the ordinary users, he or she can tell the rest. The
+``wheel group'' feature would make this impossible, and thus cement the
+power of the rulers.
+
+I'm on the side of the masses, not that of the rulers. If you are
+used to supporting the bosses and sysadmins in whatever they do, you
+might find this idea strange at first.
+
+
+@node Process control
+@chapter Process control
+
+@cindex processes, commands for controlling
+@cindex commands for controlling processes
+
+@menu
+* kill invocation:: Sending a signal to processes.
+@end menu
+
+
+@node kill invocation
+@section @command{kill}: Send a signal to processes
+
+@pindex kill
+@cindex send a signal to processes
+
+The @command{kill} command sends a signal to processes, causing them
+to terminate or otherwise act upon receiving the signal in some way.
+Alternatively, it lists information about signals. Synopses:
+
+@example
+kill [-s @var{signal} | --signal @var{signal} | -@var{signal}] @var{pid}@dots{}
+kill [-l | --list | -t | --table] [@var{signal}]@dots{}
+@end example
+
+The first form of the @command{kill} command sends a signal to all
+@var{pid} arguments. The default signal to send if none is specified
+is @samp{TERM}. The special signal number @samp{0} does not denote a
+valid signal, but can be used to test whether the @var{pid} arguments
+specify processes to which a signal could be sent.
+
+If @var{pid} is positive, the signal is sent to the process with the
+process ID @var{pid}. If @var{pid} is zero, the signal is sent to all
+processes in the process group of the current process. If @var{pid}
+is @minus{}1, the signal is sent to all processes for which the user has
+permission to send a signal. If @var{pid} is less than @minus{}1, the signal
+is sent to all processes in the process group that equals the absolute
+value of @var{pid}.
+
+If @var{pid} is not positive, a system-dependent set of system
+processes is excluded from the list of processes to which the signal
+is sent.
+
+If a negative @var{PID} argument is desired as the first one, it
+should be preceded by @option{--}. However, as a common extension to
+@acronym{POSIX}, @option{--} is not required with @samp{kill
+-@var{signal} -@var{pid}}. The following commands are equivalent:
+
+@example
+kill -15 -1
+kill -TERM -1
+kill -s TERM -- -1
+kill -- -1
+@end example
+
+The first form of the @command{kill} command succeeds if every @var{pid}
+argument specifies at least one process that the signal was sent to.
+
+The second form of the @command{kill} command lists signal information.
+Either the @option{-l} or @option{--list} option, or the @option{-t}
+or @option{--table} option must be specified. Without any
+@var{signal} argument, all supported signals are listed. The output
+of @option{-l} or @option{--list} is a list of the signal names, one
+per line; if @var{signal} is already a name, the signal number is
+printed instead. The output of @option{-t} or @option{--table} is a
+table of signal numbers, names, and descriptions. This form of the
+@command{kill} command succeeds if all @var{signal} arguments are valid
+and if there is no output error.
+
+The @command{kill} command also supports the @option{--help} and
+@option{--version} options. @xref{Common options}.
+
+A @var{signal} may be a signal name like @samp{HUP}, or a signal
+number like @samp{1}, or an exit status of a process terminated by the
+signal. A signal name can be given in canonical form or prefixed by
+@samp{SIG}. The case of the letters is ignored, except for the
+@option{-@var{signal}} option which must use upper case to avoid
+ambiguity with lower case option letters. The following signal names
+and numbers are supported on all @acronym{POSIX} compliant systems:
+
+@table @samp
+@item HUP
+1. Hangup.
+@item INT
+2. Terminal interrupt.
+@item QUIT
+3. Terminal quit.
+@item ABRT
+6. Process abort.
+@item KILL
+9. Kill (cannot be caught or ignored).
+@item ALRM
+14. Alarm Clock.
+@item TERM
+15. Termination.
+@end table
+
+@noindent
+Other supported signal names have system-dependent corresponding
+numbers. All systems conforming to @acronym{POSIX} 1003.1-2001 also
+support the following signals:
+
+@table @samp
+@item BUS
+Access to an undefined portion of a memory object.
+@item CHLD
+Child process terminated, stopped, or continued.
+@item CONT
+Continue executing, if stopped.
+@item FPE
+Erroneous arithmetic operation.
+@item ILL
+Illegal Instruction.
+@item PIPE
+Write on a pipe with no one to read it.
+@item SEGV
+Invalid memory reference.
+@item STOP
+Stop executing (cannot be caught or ignored).
+@item TSTP
+Terminal stop.
+@item TTIN
+Background process attempting read.
+@item TTOU
+Background process attempting write.
+@item URG
+High bandwidth data is available at a socket.
+@item USR1
+User-defined signal 1.
+@item USR2
+User-defined signal 2.
+@end table
+
+@noindent
+@acronym{POSIX} 1003.1-2001 systems that support the @acronym{XSI} extension
+also support the following signals:
+
+@table @samp
+@item POLL
+Pollable event.
+@item PROF
+Profiling timer expired.
+@item SYS
+Bad system call.
+@item TRAP
+Trace/breakpoint trap.
+@item VTALRM
+Virtual timer expired.
+@item XCPU
+CPU time limit exceeded.
+@item XFSZ
+File size limit exceeded.
+@end table
+
+@noindent
+@acronym{POSIX} 1003.1-2001 systems that support the @acronym{XRT} extension
+also support at least eight real-time signals called @samp{RTMIN},
+@samp{RTMIN+1}, @dots{}, @samp{RTMAX-1}, @samp{RTMAX}.
+
+
+@node Delaying
+@chapter Delaying
+
+@cindex delaying commands
+@cindex commands for delaying
+
+@c Perhaps @command{wait} or other commands should be described here also?
+
+@menu
+* sleep invocation:: Delay for a specified time.
+@end menu
+
+
+@node sleep invocation
+@section @command{sleep}: Delay for a specified time
+
+@pindex sleep
+@cindex delay for a specified time
+
+@command{sleep} pauses for an amount of time specified by the sum of
+the values of the command line arguments.
+Synopsis:
+
+@example
+sleep @var{number}[smhd]@dots{}
+@end example
+
+@cindex time units
+Each argument is a number followed by an optional unit; the default
+is seconds. The units are:
+
+@table @samp
+@item s
+seconds
+@item m
+minutes
+@item h
+hours
+@item d
+days
+@end table
+
+Historical implementations of @command{sleep} have required that
+@var{number} be an integer, and only accepted a single argument
+without a suffix. However, GNU @command{sleep} accepts
+arbitrary floating point numbers (using a period before any fractional
+digits).
+
+The only options are @option{--help} and @option{--version}. @xref{Common
+options}.
+
+@exitstatus
+
+
+@node Numeric operations
+@chapter Numeric operations
+
+@cindex numeric operations
+These programs do numerically-related operations.
+
+@menu
+* factor invocation:: Show factors of numbers.
+* seq invocation:: Print sequences of numbers.
+@end menu
+
+
+@node factor invocation
+@section @command{factor}: Print prime factors
+
+@pindex factor
+@cindex prime factors
+
+@command{factor} prints prime factors. Synopses:
+
+@example
+factor [@var{number}]@dots{}
+factor @var{option}
+@end example
+
+If no @var{number} is specified on the command line, @command{factor} reads
+numbers from standard input, delimited by newlines, tabs, or spaces.
+
+The only options are @option{--help} and @option{--version}. @xref{Common
+options}.
+
+The algorithm it uses is not very sophisticated, so for some inputs
+@command{factor} runs for a long time. The hardest numbers to factor are
+the products of large primes. Factoring the product of the two largest 32-bit
+prime numbers takes about 80 seconds of CPU time on a 1.6 GHz Athlon.
+
+@example
+$ p=`echo '4294967279 * 4294967291'|bc`
+$ factor $p
+18446743979220271189: 4294967279 4294967291
+@end example
+
+Similarly, it takes about 80 seconds for GNU factor (from coreutils-5.1.2)
+to ``factor'' the largest 64-bit prime:
+
+@example
+$ factor 18446744073709551557
+ 18446744073709551557: 18446744073709551557
+@end example
+
+In contrast, @command{factor} factors the largest 64-bit number in just
+over a tenth of a second:
+
+@example
+$ factor `echo '2^64-1'|bc`
+18446744073709551615: 3 5 17 257 641 65537 6700417
+@end example
+
+@exitstatus
+
+
+@node seq invocation
+@section @command{seq}: Print numeric sequences
+
+@pindex seq
+@cindex numeric sequences
+@cindex sequence of numbers
+
+@command{seq} prints a sequence of numbers to standard output. Synopses:
+
+@example
+seq [@var{option}]@dots{} @var{last}
+seq [@var{option}]@dots{} @var{first} @var{last}
+seq [@var{option}]@dots{} @var{first} @var{increment} @var{last}
+@end example
+
+@command{seq} prints the numbers from @var{first} to @var{last} by
+@var{increment}. By default, each number is printed on a separate line.
+When @var{increment} is not specified, it defaults to @samp{1},
+even when @var{first} is larger than @var{last}.
+@var{first} also defaults to @samp{1}. So @code{seq 1} prints
+@samp{1}, but @code{seq 0} and @code{seq 10 5} produce no output.
+Floating-point numbers
+may be specified (using a period before any fractional digits).
+
+The program accepts the following options. Also see @ref{Common options}.
+Options must precede operands.
+
+@table @samp
+@item -f @var{format}
+@itemx --format=@var{format}
+@opindex -f @var{format}
+@opindex --format=@var{format}
+@cindex formatting of numbers in @command{seq}
+Print all numbers using @var{format}.
+@var{format} must contain exactly one of the @samp{printf}-style
+floating point conversion specifications @samp{%a}, @samp{%e},
+@samp{%f}, @samp{%g}, @samp{%A}, @samp{%E}, @samp{%F}, @samp{%G}.
+The @samp{%} may be followed by zero or more flags taken from the set
+@samp{-+#0 '}, then an optional width containing one or more digits,
+then an optional precision consisting of a @samp{.} followed by zero
+or more digits. @var{format} may also contain any number of @samp{%%}
+conversion specifications. All conversion specifications have the
+same meaning as with @samp{printf}.
+
+The default format is derived from @var{first}, @var{step}, and
+@var{last}. If these all use a fixed point decimal representation,
+the default format is @samp{%.@var{p}f}, where @var{p} is the minimum
+precision that can represent the output numbers exactly. Otherwise,
+the default format is @samp{%g}.
+
+@item -s @var{string}
+@itemx --separator=@var{string}
+@cindex separator for numbers in @command{seq}
+Separate numbers with @var{string}; default is a newline.
+The output always terminates with a newline.
+
+@item -w
+@itemx --equal-width
+Print all numbers with the same width, by padding with leading zeros.
+@var{first}, @var{step}, and @var{last} should all use a fixed point
+decimal representation.
+(To have other kinds of padding, use @option{--format}).
+
+@end table
+
+You can get finer-grained control over output with @option{-f}:
+
+@example
+$ seq -f '(%9.2E)' -9e5 1.1e6 1.3e6
+(-9.00E+05)
+( 2.00E+05)
+( 1.30E+06)
+@end example
+
+If you want hexadecimal integer output, you can use @command{printf}
+to perform the conversion:
+
+@example
+$ printf '%x\n' `seq 1048575 1024 1050623`
+fffff
+1003ff
+1007ff
+@end example
+
+For very long lists of numbers, use xargs to avoid
+system limitations on the length of an argument list:
+
+@example
+$ seq 1000000 | xargs printf '%x\n' | tail -n 3
+f423e
+f423f
+f4240
+@end example
+
+To generate octal output, use the printf @code{%o} format instead
+of @code{%x}.
+
+On most systems, seq can produce whole-number output for values up to
+at least @code{2^53}. Larger integers are approximated. The details
+differ depending on your floating-point implementation, but a common
+case is that @command{seq} works with integers through @code{2^64},
+and larger integers may not be numerically correct:
+
+@example
+$ seq 18446744073709551616 1 18446744073709551618
+18446744073709551616
+18446744073709551616
+18446744073709551618
+@end example
+
+Be careful when using @command{seq} with a fractional @var{increment};
+otherwise you may see surprising results. Most people would expect to
+see @code{0.000003} printed as the last number in this example:
+
+@example
+$ seq -s ' ' 0 0.000001 0.000003
+0.000000 0.000001 0.000002
+@end example
+
+But that doesn't happen on many systems because @command{seq} is
+implemented using binary floating point arithmetic (via the C
+@code{long double} type)---which means decimal fractions like @code{0.000001}
+cannot be represented exactly. That in turn means some nonintuitive
+conditions like @w{@code{0.000001 * 3 > 0.000003}} will end up being true.
+
+To work around that in the above example, use a slightly larger number as
+the @var{last} value:
+
+@example
+$ seq -s ' ' 0 0.000001 0.0000031
+0.000000 0.000001 0.000002 0.000003
+@end example
+
+In general, when using an @var{increment} with a fractional part, where
+(@var{last} - @var{first}) / @var{increment} is (mathematically) a whole
+number, specify a slightly larger (or smaller, if @var{increment} is negative)
+value for @var{last} to ensure that @var{last} is the final value printed
+by seq.
+
+@exitstatus
+
+
+@node File permissions
+@chapter File permissions
+@include perm.texi
+
+@include getdate.texi
+
+@c What's GNU?
+@c Arnold Robbins
+@node Opening the software toolbox
+@chapter Opening the Software Toolbox
+
+An earlier version of this chapter appeared in
+@uref{http://www.linuxjournal.com/article.php?sid=2762, the
+@cite{What's GNU?} column of @cite{Linux Journal}, 2 (June, 1994)}.
+It was written by Arnold Robbins.
+
+@menu
+* Toolbox introduction:: Toolbox introduction
+* I/O redirection:: I/O redirection
+* The who command:: The @command{who} command
+* The cut command:: The @command{cut} command
+* The sort command:: The @command{sort} command
+* The uniq command:: The @command{uniq} command
+* Putting the tools together:: Putting the tools together
+@end menu
+
+
+@node Toolbox introduction
+@unnumberedsec Toolbox Introduction
+
+This month's column is only peripherally related to the GNU Project, in
+that it describes a number of the GNU tools on your GNU/Linux system and how they
+might be used. What it's really about is the ``Software Tools'' philosophy
+of program development and usage.
+
+The software tools philosophy was an important and integral concept
+in the initial design and development of Unix (of which Linux and GNU are
+essentially clones). Unfortunately, in the modern day press of
+Internetworking and flashy GUIs, it seems to have fallen by the
+wayside. This is a shame, since it provides a powerful mental model
+for solving many kinds of problems.
+
+Many people carry a Swiss Army knife around in their pants pockets (or
+purse). A Swiss Army knife is a handy tool to have: it has several knife
+blades, a screwdriver, tweezers, toothpick, nail file, corkscrew, and perhaps
+a number of other things on it. For the everyday, small miscellaneous jobs
+where you need a simple, general purpose tool, it's just the thing.
+
+On the other hand, an experienced carpenter doesn't build a house using
+a Swiss Army knife. Instead, he has a toolbox chock full of specialized
+tools---a saw, a hammer, a screwdriver, a plane, and so on. And he knows
+exactly when and where to use each tool; you won't catch him hammering nails
+with the handle of his screwdriver.
+
+The Unix developers at Bell Labs were all professional programmers and trained
+computer scientists. They had found that while a one-size-fits-all program
+might appeal to a user because there's only one program to use, in practice
+such programs are
+
+@enumerate a
+@item
+difficult to write,
+
+@item
+difficult to maintain and
+debug, and
+
+@item
+difficult to extend to meet new situations.
+@end enumerate
+
+Instead, they felt that programs should be specialized tools. In short, each
+program ``should do one thing well.'' No more and no less. Such programs are
+simpler to design, write, and get right---they only do one thing.
+
+Furthermore, they found that with the right machinery for hooking programs
+together, that the whole was greater than the sum of the parts. By combining
+several special purpose programs, you could accomplish a specific task
+that none of the programs was designed for, and accomplish it much more
+quickly and easily than if you had to write a special purpose program.
+We will see some (classic) examples of this further on in the column.
+(An important additional point was that, if necessary, take a detour
+and build any software tools you may need first, if you don't already
+have something appropriate in the toolbox.)
+
+@node I/O redirection
+@unnumberedsec I/O Redirection
+
+Hopefully, you are familiar with the basics of I/O redirection in the
+shell, in particular the concepts of ``standard input,'' ``standard output,''
+and ``standard error''. Briefly, ``standard input'' is a data source, where
+data comes from. A program should not need to either know or care if the
+data source is a disk file, a keyboard, a magnetic tape, or even a punched
+card reader. Similarly, ``standard output'' is a data sink, where data goes
+to. The program should neither know nor care where this might be.
+Programs that only read their standard input, do something to the data,
+and then send it on, are called @dfn{filters}, by analogy to filters in a
+water pipeline.
+
+With the Unix shell, it's very easy to set up data pipelines:
+
+@smallexample
+program_to_create_data | filter1 | ... | filterN > final.pretty.data
+@end smallexample
+
+We start out by creating the raw data; each filter applies some successive
+transformation to the data, until by the time it comes out of the pipeline,
+it is in the desired form.
+
+This is fine and good for standard input and standard output. Where does the
+standard error come in to play? Well, think about @command{filter1} in
+the pipeline above. What happens if it encounters an error in the data it
+sees? If it writes an error message to standard output, it will just
+disappear down the pipeline into @command{filter2}'s input, and the
+user will probably never see it. So programs need a place where they can send
+error messages so that the user will notice them. This is standard error,
+and it is usually connected to your console or window, even if you have
+redirected standard output of your program away from your screen.
+
+For filter programs to work together, the format of the data has to be
+agreed upon. The most straightforward and easiest format to use is simply
+lines of text. Unix data files are generally just streams of bytes, with
+lines delimited by the @acronym{ASCII} @sc{lf} (Line Feed) character,
+conventionally called a ``newline'' in the Unix literature. (This is
+@code{'\n'} if you're a C programmer.) This is the format used by all
+the traditional filtering programs. (Many earlier operating systems
+had elaborate facilities and special purpose programs for managing
+binary data. Unix has always shied away from such things, under the
+philosophy that it's easiest to simply be able to view and edit your
+data with a text editor.)
+
+OK, enough introduction. Let's take a look at some of the tools, and then
+we'll see how to hook them together in interesting ways. In the following
+discussion, we will only present those command line options that interest
+us. As you should always do, double check your system documentation
+for the full story.
+
+@node The who command
+@unnumberedsec The @command{who} Command
+
+The first program is the @command{who} command. By itself, it generates a
+list of the users who are currently logged in. Although I'm writing
+this on a single-user system, we'll pretend that several people are
+logged in:
+
+@example
+$ who
+@print{} arnold console Jan 22 19:57
+@print{} miriam ttyp0 Jan 23 14:19(:0.0)
+@print{} bill ttyp1 Jan 21 09:32(:0.0)
+@print{} arnold ttyp2 Jan 23 20:48(:0.0)
+@end example
+
+Here, the @samp{$} is the usual shell prompt, at which I typed @samp{who}.
+There are three people logged in, and I am logged in twice. On traditional
+Unix systems, user names are never more than eight characters long. This
+little bit of trivia will be useful later. The output of @command{who} is nice,
+but the data is not all that exciting.
+
+@node The cut command
+@unnumberedsec The @command{cut} Command
+
+The next program we'll look at is the @command{cut} command. This program
+cuts out columns or fields of input data. For example, we can tell it
+to print just the login name and full name from the @file{/etc/passwd}
+file. The @file{/etc/passwd} file has seven fields, separated by
+colons:
+
+@example
+arnold:xyzzy:2076:10:Arnold D. Robbins:/home/arnold:/bin/bash
+@end example
+
+To get the first and fifth fields, we would use @command{cut} like this:
+
+@example
+$ cut -d: -f1,5 /etc/passwd
+@print{} root:Operator
+@dots{}
+@print{} arnold:Arnold D. Robbins
+@print{} miriam:Miriam A. Robbins
+@dots{}
+@end example
+
+With the @option{-c} option, @command{cut} will cut out specific characters
+(i.e., columns) in the input lines. This is useful for input data
+that has fixed width fields, and does not have a field separator. For
+example, list the Monday dates for the current month:
+
+@c Is using cal ok? Looked at gcal, but I don't like it.
+@example
+$ cal | cut -c 3-5
+@print{}Mo
+@print{}
+@print{} 6
+@print{} 13
+@print{} 20
+@print{} 27
+@end example
+
+@node The sort command
+@unnumberedsec The @command{sort} Command
+
+Next we'll look at the @command{sort} command. This is one of the most
+powerful commands on a Unix-style system; one that you will often find
+yourself using when setting up fancy data plumbing.
+
+The @command{sort}
+command reads and sorts each file named on the command line. It then
+merges the sorted data and writes it to standard output. It will read
+standard input if no files are given on the command line (thus
+making it into a filter). The sort is based on the character collating
+sequence or based on user-supplied ordering criteria.
+
+
+@node The uniq command
+@unnumberedsec The @command{uniq} Command
+
+Finally (at least for now), we'll look at the @command{uniq} program. When
+sorting data, you will often end up with duplicate lines, lines that
+are identical. Usually, all you need is one instance of each line.
+This is where @command{uniq} comes in. The @command{uniq} program reads its
+standard input. It prints only one
+copy of each repeated line. It does have several options. Later on,
+we'll use the @option{-c} option, which prints each unique line, preceded
+by a count of the number of times that line occurred in the input.
+
+
+@node Putting the tools together
+@unnumberedsec Putting the Tools Together
+
+Now, let's suppose this is a large ISP server system with dozens of users
+logged in. The management wants the system administrator to write a program that will
+generate a sorted list of logged in users. Furthermore, even if a user
+is logged in multiple times, his or her name should only show up in the
+output once.
+
+The administrator could sit down with the system documentation and write a C
+program that did this. It would take perhaps a couple of hundred lines
+of code and about two hours to write it, test it, and debug it.
+However, knowing the software toolbox, the administrator can instead start out
+by generating just a list of logged on users:
+
+@example
+$ who | cut -c1-8
+@print{} arnold
+@print{} miriam
+@print{} bill
+@print{} arnold
+@end example
+
+Next, sort the list:
+
+@example
+$ who | cut -c1-8 | sort
+@print{} arnold
+@print{} arnold
+@print{} bill
+@print{} miriam
+@end example
+
+Finally, run the sorted list through @command{uniq}, to weed out duplicates:
+
+@example
+$ who | cut -c1-8 | sort | uniq
+@print{} arnold
+@print{} bill
+@print{} miriam
+@end example
+
+The @command{sort} command actually has a @option{-u} option that does what
+@command{uniq} does. However, @command{uniq} has other uses for which one
+cannot substitute @samp{sort -u}.
+
+The administrator puts this pipeline into a shell script, and makes it available for
+all the users on the system (@samp{#} is the system administrator,
+or @code{root}, prompt):
+
+@example
+# cat > /usr/local/bin/listusers
+who | cut -c1-8 | sort | uniq
+^D
+# chmod +x /usr/local/bin/listusers
+@end example
+
+There are four major points to note here. First, with just four
+programs, on one command line, the administrator was able to save about two
+hours worth of work. Furthermore, the shell pipeline is just about as
+efficient as the C program would be, and it is much more efficient in
+terms of programmer time. People time is much more expensive than
+computer time, and in our modern ``there's never enough time to do
+everything'' society, saving two hours of programmer time is no mean
+feat.
+
+Second, it is also important to emphasize that with the
+@emph{combination} of the tools, it is possible to do a special
+purpose job never imagined by the authors of the individual programs.
+
+Third, it is also valuable to build up your pipeline in stages, as we did here.
+This allows you to view the data at each stage in the pipeline, which helps
+you acquire the confidence that you are indeed using these tools correctly.
+
+Finally, by bundling the pipeline in a shell script, other users can use
+your command, without having to remember the fancy plumbing you set up for
+them. In terms of how you run them, shell scripts and compiled programs are
+indistinguishable.
+
+After the previous warm-up exercise, we'll look at two additional, more
+complicated pipelines. For them, we need to introduce two more tools.
+
+The first is the @command{tr} command, which stands for ``transliterate.''
+The @command{tr} command works on a character-by-character basis, changing
+characters. Normally it is used for things like mapping upper case to
+lower case:
+
+@example
+$ echo ThIs ExAmPlE HaS MIXED case! | tr '[:upper:]' '[:lower:]'
+@print{} this example has mixed case!
+@end example
+
+There are several options of interest:
+
+@table @code
+@item -c
+work on the complement of the listed characters, i.e.,
+operations apply to characters not in the given set
+
+@item -d
+delete characters in the first set from the output
+
+@item -s
+squeeze repeated characters in the output into just one character.
+@end table
+
+We will be using all three options in a moment.
+
+The other command we'll look at is @command{comm}. The @command{comm}
+command takes two sorted input files as input data, and prints out the
+files' lines in three columns. The output columns are the data lines
+unique to the first file, the data lines unique to the second file, and
+the data lines that are common to both. The @option{-1}, @option{-2}, and
+@option{-3} command line options @emph{omit} the respective columns. (This is
+non-intuitive and takes a little getting used to.) For example:
+
+@example
+$ cat f1
+@print{} 11111
+@print{} 22222
+@print{} 33333
+@print{} 44444
+$ cat f2
+@print{} 00000
+@print{} 22222
+@print{} 33333
+@print{} 55555
+$ comm f1 f2
+@print{} 00000
+@print{} 11111
+@print{} 22222
+@print{} 33333
+@print{} 44444
+@print{} 55555
+@end example
+
+The file name @file{-} tells @command{comm} to read standard input
+instead of a regular file.
+
+Now we're ready to build a fancy pipeline. The first application is a word
+frequency counter. This helps an author determine if he or she is over-using
+certain words.
+
+The first step is to change the case of all the letters in our input file
+to one case. ``The'' and ``the'' are the same word when doing counting.
+
+@example
+$ tr '[:upper:]' '[:lower:]' < whats.gnu | ...
+@end example
+
+The next step is to get rid of punctuation. Quoted words and unquoted words
+should be treated identically; it's easiest to just get the punctuation out of
+the way.
+
+@smallexample
+$ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' | ...
+@end smallexample
+
+The second @command{tr} command operates on the complement of the listed
+characters, which are all the letters, the digits, the underscore, and
+the blank. The @samp{\n} represents the newline character; it has to
+be left alone. (The @acronym{ASCII} tab character should also be included for
+good measure in a production script.)
+
+At this point, we have data consisting of words separated by blank space.
+The words only contain alphanumeric characters (and the underscore). The
+next step is break the data apart so that we have one word per line. This
+makes the counting operation much easier, as we will see shortly.
+
+@smallexample
+$ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
+> tr -s ' ' '\n' | ...
+@end smallexample
+
+This command turns blanks into newlines. The @option{-s} option squeezes
+multiple newline characters in the output into just one. This helps us
+avoid blank lines. (The @samp{>} is the shell's ``secondary prompt.''
+This is what the shell prints when it notices you haven't finished
+typing in all of a command.)
+
+We now have data consisting of one word per line, no punctuation, all one
+case. We're ready to count each word:
+
+@smallexample
+$ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
+> tr -s ' ' '\n' | sort | uniq -c | ...
+@end smallexample
+
+At this point, the data might look something like this:
+
+@example
+ 60 a
+ 2 able
+ 6 about
+ 1 above
+ 2 accomplish
+ 1 acquire
+ 1 actually
+ 2 additional
+@end example
+
+The output is sorted by word, not by count! What we want is the most
+frequently used words first. Fortunately, this is easy to accomplish,
+with the help of two more @command{sort} options:
+
+@table @code
+@item -n
+do a numeric sort, not a textual one
+
+@item -r
+reverse the order of the sort
+@end table
+
+The final pipeline looks like this:
+
+@smallexample
+$ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
+> tr -s ' ' '\n' | sort | uniq -c | sort -n -r
+@print{} 156 the
+@print{} 60 a
+@print{} 58 to
+@print{} 51 of
+@print{} 51 and
+@dots{}
+@end smallexample
+
+Whew! That's a lot to digest. Yet, the same principles apply. With six
+commands, on two lines (really one long one split for convenience), we've
+created a program that does something interesting and useful, in much
+less time than we could have written a C program to do the same thing.
+
+A minor modification to the above pipeline can give us a simple spelling
+checker! To determine if you've spelled a word correctly, all you have to
+do is look it up in a dictionary. If it is not there, then chances are
+that your spelling is incorrect. So, we need a dictionary.
+The conventional location for a dictionary is @file{/usr/dict/words}.
+On my GNU/Linux system,@footnote{Redhat Linux 6.1, for the November 2000
+revision of this article.}
+this is a is a sorted, 45,402 word dictionary.
+
+Now, how to compare our file with the dictionary? As before, we generate
+a sorted list of words, one per line:
+
+@smallexample
+$ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
+> tr -s ' ' '\n' | sort -u | ...
+@end smallexample
+
+Now, all we need is a list of words that are @emph{not} in the
+dictionary. Here is where the @command{comm} command comes in.
+
+@smallexample
+$ tr '[:upper:]' '[:lower:]' < whats.gnu | tr -cd '[:alnum:]_ \n' |
+> tr -s ' ' '\n' | sort -u |
+> comm -23 - /usr/dict/words
+@end smallexample
+
+The @option{-2} and @option{-3} options eliminate lines that are only in the
+dictionary (the second file), and lines that are in both files. Lines
+only in the first file (standard input, our stream of words), are
+words that are not in the dictionary. These are likely candidates for
+spelling errors. This pipeline was the first cut at a production
+spelling checker on Unix.
+
+There are some other tools that deserve brief mention.
+
+@table @command
+@item grep
+search files for text that matches a regular expression
+
+@item wc
+count lines, words, characters
+
+@item tee
+a T-fitting for data pipes, copies data to files and to standard output
+
+@item sed
+the stream editor, an advanced tool
+
+@item awk
+a data manipulation language, another advanced tool
+@end table
+
+The software tools philosophy also espoused the following bit of
+advice: ``Let someone else do the hard part.'' This means, take
+something that gives you most of what you need, and then massage it the
+rest of the way until it's in the form that you want.
+
+To summarize:
+
+@enumerate 1
+@item
+Each program should do one thing well. No more, no less.
+
+@item
+Combining programs with appropriate plumbing leads to results where
+the whole is greater than the sum of the parts. It also leads to novel
+uses of programs that the authors might never have imagined.
+
+@item
+Programs should never print extraneous header or trailer data, since these
+could get sent on down a pipeline. (A point we didn't mention earlier.)
+
+@item
+Let someone else do the hard part.
+
+@item
+Know your toolbox! Use each program appropriately. If you don't have an
+appropriate tool, build one.
+@end enumerate
+
+As of this writing, all the programs we've discussed are available via
+anonymous @command{ftp} from: @*
+@uref{ftp://gnudist.gnu.org/textutils/textutils-1.22.tar.gz}. (There may
+be more recent versions available now.)
+
+None of what I have presented in this column is new. The Software Tools
+philosophy was first introduced in the book @cite{Software Tools}, by
+Brian Kernighan and P.J. Plauger (Addison-Wesley, ISBN 0-201-03669-X).
+This book showed how to write and use software tools. It was written in
+1976, using a preprocessor for FORTRAN named @command{ratfor} (RATional
+FORtran). At the time, C was not as ubiquitous as it is now; FORTRAN
+was. The last chapter presented a @command{ratfor} to FORTRAN
+processor, written in @command{ratfor}. @command{ratfor} looks an awful
+lot like C; if you know C, you won't have any problem following the
+code.
+
+In 1981, the book was updated and made available as @cite{Software Tools
+in Pascal} (Addison-Wesley, ISBN 0-201-10342-7). Both books are
+still in print and are well worth
+reading if you're a programmer. They certainly made a major change in
+how I view programming.
+
+The programs in both books are available from
+@uref{http://cm.bell-labs.com/who/bwk, Brian Kernighan's home page}.
+For a number of years, there was an active
+Software Tools Users Group, whose members had ported the original
+@command{ratfor} programs to essentially every computer system with a
+FORTRAN compiler. The popularity of the group waned in the middle 1980s
+as Unix began to spread beyond universities.
+
+With the current proliferation of GNU code and other clones of Unix programs,
+these programs now receive little attention; modern C versions are
+much more efficient and do more than these programs do. Nevertheless, as
+exposition of good programming style, and evangelism for a still-valuable
+philosophy, these books are unparalleled, and I recommend them highly.
+
+Acknowledgment: I would like to express my gratitude to Brian Kernighan
+of Bell Labs, the original Software Toolsmith, for reviewing this column.
+
+@node Copying This Manual
+@appendix Copying This Manual
+
+@menu
+* GNU Free Documentation License:: License for copying this manual.
+@end menu
+
+@include fdl.texi
+
+@node Index
+@unnumbered Index
+
+@printindex cp
+
+@shortcontents
+@contents
+@bye
+
+@c Local variables:
+@c texinfo-column-for-description: 32
+@c End:
diff --git a/doc/fdl.texi b/doc/fdl.texi
new file mode 100644
index 0000000..9c6d9af
--- /dev/null
+++ b/doc/fdl.texi
@@ -0,0 +1,452 @@
+
+@node GNU Free Documentation License
+@appendixsec GNU Free Documentation License
+
+@cindex FDL, GNU Free Documentation License
+@center Version 1.2, November 2002
+
+@display
+Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc.
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+@end display
+
+@enumerate 0
+@item
+PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document @dfn{free} in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of ``copyleft'', which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+@item
+APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The ``Document'', below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as ``you''. You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A ``Modified Version'' of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A ``Secondary Section'' is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The ``Invariant Sections'' are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The ``Cover Texts'' are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A ``Transparent'' copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not ``Transparent'' is called ``Opaque''.
+
+Examples of suitable formats for Transparent copies include plain
+@sc{ascii} without markup, Texinfo input format, La@TeX{} input
+format, @acronym{SGML} or @acronym{XML} using a publicly available
+@acronym{DTD}, and standard-conforming simple @acronym{HTML},
+PostScript or @acronym{PDF} designed for human modification. Examples
+of transparent image formats include @acronym{PNG}, @acronym{XCF} and
+@acronym{JPG}. Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, @acronym{SGML} or
+@acronym{XML} for which the @acronym{DTD} and/or processing tools are
+not generally available, and the machine-generated @acronym{HTML},
+PostScript or @acronym{PDF} produced by some word processors for
+output purposes only.
+
+The ``Title Page'' means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, ``Title Page'' means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section ``Entitled XYZ'' means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as ``Acknowledgements'',
+``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title''
+of such a section when you modify the Document means that it remains a
+section ``Entitled XYZ'' according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+@item
+VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+@item
+COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+@item
+MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+@enumerate A
+@item
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document). You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
+@item
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+
+@item
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+@item
+Preserve all the copyright notices of the Document.
+
+@item
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+@item
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+@item
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+
+@item
+Include an unaltered copy of this License.
+
+@item
+Preserve the section Entitled ``History'', Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page. If
+there is no section Entitled ``History'' in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+@item
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on. These may be placed in the ``History'' section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
+@item
+For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
+@item
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles. Section numbers
+or the equivalent are not considered part of the section titles.
+
+@item
+Delete any section Entitled ``Endorsements''. Such a section
+may not be included in the Modified Version.
+
+@item
+Do not retitle any existing section to be Entitled ``Endorsements'' or
+to conflict in title with any Invariant Section.
+
+@item
+Preserve any Warranty Disclaimers.
+@end enumerate
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled ``Endorsements'', provided it contains
+nothing but endorsements of your Modified Version by various
+parties---for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+@item
+COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled ``History''
+in the various original documents, forming one section Entitled
+``History''; likewise combine any sections Entitled ``Acknowledgements'',
+and any sections Entitled ``Dedications''. You must delete all
+sections Entitled ``Endorsements.''
+
+@item
+COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+@item
+AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an ``aggregate'' if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+@item
+TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled ``Acknowledgements'',
+``Dedications'', or ``History'', the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+@item
+TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+@item
+FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+@uref{http://www.gnu.org/copyleft/}.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+@end enumerate
+
+@page
+@heading ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+@group
+ Copyright (C) @var{year} @var{your name}.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+@end group
+@end smallexample
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the ``with...Texts.'' line with this:
+
+@smallexample
+@group
+ with the Invariant Sections being @var{list their titles}, with
+ the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
+ being @var{list}.
+@end group
+@end smallexample
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+
+@c Local Variables:
+@c ispell-local-pdict: "ispell-dict"
+@c End:
+
diff --git a/doc/getdate.texi b/doc/getdate.texi
new file mode 100644
index 0000000..eae4526
--- /dev/null
+++ b/doc/getdate.texi
@@ -0,0 +1,553 @@
+@c GNU date syntax documentation
+
+@c Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+@c 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+@c Permission is granted to copy, distribute and/or modify this document
+@c under the terms of the GNU Free Documentation License, Version 1.2 or
+@c any later version published by the Free Software Foundation; with no
+@c Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+@c Texts. A copy of the license is included in the ``GNU Free
+@c Documentation License'' file as part of this distribution.
+
+@node Date input formats
+@chapter Date input formats
+
+@cindex date input formats
+@findex get_date
+
+First, a quote:
+
+@quotation
+Our units of temporal measurement, from seconds on up to months, are so
+complicated, asymmetrical and disjunctive so as to make coherent mental
+reckoning in time all but impossible. Indeed, had some tyrannical god
+contrived to enslave our minds to time, to make it all but impossible
+for us to escape subjection to sodden routines and unpleasant surprises,
+he could hardly have done better than handing down our present system.
+It is like a set of trapezoidal building blocks, with no vertical or
+horizontal surfaces, like a language in which the simplest thought
+demands ornate constructions, useless particles and lengthy
+circumlocutions. Unlike the more successful patterns of language and
+science, which enable us to face experience boldly or at least
+level-headedly, our system of temporal calculation silently and
+persistently encourages our terror of time.
+
+@dots{} It is as though architects had to measure length in feet, width
+in meters and height in ells; as though basic instruction manuals
+demanded a knowledge of five different languages. It is no wonder then
+that we often look into our own immediate past or future, last Tuesday
+or a week from Sunday, with feelings of helpless confusion. @dots{}
+
+--- Robert Grudin, @cite{Time and the Art of Living}.
+@end quotation
+
+This section describes the textual date representations that @sc{gnu}
+programs accept. These are the strings you, as a user, can supply as
+arguments to the various programs. The C interface (via the
+@code{get_date} function) is not described here.
+
+@menu
+* General date syntax:: Common rules.
+* Calendar date items:: 19 Dec 1994.
+* Time of day items:: 9:20pm.
+* Time zone items:: @sc{est}, @sc{pdt}, @sc{gmt}.
+* Day of week items:: Monday and others.
+* Relative items in date strings:: next tuesday, 2 years ago.
+* Pure numbers in date strings:: 19931219, 1440.
+* Seconds since the Epoch:: @@1078100502.
+* Specifying time zone rules:: TZ="America/New_York", TZ="UTC0".
+* Authors of get_date:: Bellovin, Eggert, Salz, Berets, et al.
+@end menu
+
+
+@node General date syntax
+@section General date syntax
+
+@cindex general date syntax
+
+@cindex items in date strings
+A @dfn{date} is a string, possibly empty, containing many items
+separated by whitespace. The whitespace may be omitted when no
+ambiguity arises. The empty string means the beginning of today (i.e.,
+midnight). Order of the items is immaterial. A date string may contain
+many flavors of items:
+
+@itemize @bullet
+@item calendar date items
+@item time of day items
+@item time zone items
+@item day of the week items
+@item relative items
+@item pure numbers.
+@end itemize
+
+@noindent We describe each of these item types in turn, below.
+
+@cindex numbers, written-out
+@cindex ordinal numbers
+@findex first @r{in date strings}
+@findex next @r{in date strings}
+@findex last @r{in date strings}
+A few ordinal numbers may be written out in words in some contexts. This is
+most useful for specifying day of the week items or relative items (see
+below). Among the most commonly used ordinal numbers, the word
+@samp{last} stands for @math{-1}, @samp{this} stands for 0, and
+@samp{first} and @samp{next} both stand for 1. Because the word
+@samp{second} stands for the unit of time there is no way to write the
+ordinal number 2, but for convenience @samp{third} stands for 3,
+@samp{fourth} for 4, @samp{fifth} for 5,
+@samp{sixth} for 6, @samp{seventh} for 7, @samp{eighth} for 8,
+@samp{ninth} for 9, @samp{tenth} for 10, @samp{eleventh} for 11 and
+@samp{twelfth} for 12.
+
+@cindex months, written-out
+When a month is written this way, it is still considered to be written
+numerically, instead of being ``spelled in full''; this changes the
+allowed strings.
+
+@cindex language, in dates
+In the current implementation, only English is supported for words and
+abbreviations like @samp{AM}, @samp{DST}, @samp{EST}, @samp{first},
+@samp{January}, @samp{Sunday}, @samp{tomorrow}, and @samp{year}.
+
+@cindex language, in dates
+@cindex time zone item
+The output of the @command{date} command
+is not always acceptable as a date string,
+not only because of the language problem, but also because there is no
+standard meaning for time zone items like @samp{IST}. When using
+@command{date} to generate a date string intended to be parsed later,
+specify a date format that is independent of language and that does not
+use time zone items other than @samp{UTC} and @samp{Z}. Here are some
+ways to do this:
+
+@example
+$ LC_ALL=C TZ=UTC0 date
+Mon Mar 1 00:21:42 UTC 2004
+$ TZ=UTC0 date +'%Y-%m-%d %H:%M:%SZ'
+2004-03-01 00:21:42Z
+$ date --iso-8601=ns | tr T ' ' # --iso-8601 is a GNU extension.
+2004-02-29 16:21:42,692722128-0800
+$ date --rfc-2822 # a GNU extension
+Sun, 29 Feb 2004 16:21:42 -0800
+$ date +'%Y-%m-%d %H:%M:%S %z' # %z is a GNU extension.
+2004-02-29 16:21:42 -0800
+$ date +'@@%s.%N' # %s and %N are GNU extensions.
+@@1078100502.692722128
+@end example
+
+@cindex case, ignored in dates
+@cindex comments, in dates
+Alphabetic case is completely ignored in dates. Comments may be introduced
+between round parentheses, as long as included parentheses are properly
+nested. Hyphens not followed by a digit are currently ignored. Leading
+zeros on numbers are ignored.
+
+Invalid dates like @samp{2005-02-29} or times like @samp{24:00} are
+rejected. In the typical case of a host that does not support leap
+seconds, a time like @samp{23:59:60} is rejected even if it
+corresponds to a valid leap second.
+
+
+@node Calendar date items
+@section Calendar date items
+
+@cindex calendar date item
+
+A @dfn{calendar date item} specifies a day of the year. It is
+specified differently, depending on whether the month is specified
+numerically or literally. All these strings specify the same calendar date:
+
+@example
+1972-09-24 # @sc{iso} 8601.
+72-9-24 # Assume 19xx for 69 through 99,
+ # 20xx for 00 through 68.
+72-09-24 # Leading zeros are ignored.
+9/24/72 # Common U.S. writing.
+24 September 1972
+24 Sept 72 # September has a special abbreviation.
+24 Sep 72 # Three-letter abbreviations always allowed.
+Sep 24, 1972
+24-sep-72
+24sep72
+@end example
+
+The year can also be omitted. In this case, the last specified year is
+used, or the current year if none. For example:
+
+@example
+9/24
+sep 24
+@end example
+
+Here are the rules.
+
+@cindex @sc{iso} 8601 date format
+@cindex date format, @sc{iso} 8601
+For numeric months, the @sc{iso} 8601 format
+@samp{@var{year}-@var{month}-@var{day}} is allowed, where @var{year} is
+any positive number, @var{month} is a number between 01 and 12, and
+@var{day} is a number between 01 and 31. A leading zero must be present
+if a number is less than ten. If @var{year} is 68 or smaller, then 2000
+is added to it; otherwise, if @var{year} is less than 100,
+then 1900 is added to it. The construct
+@samp{@var{month}/@var{day}/@var{year}}, popular in the United States,
+is accepted. Also @samp{@var{month}/@var{day}}, omitting the year.
+
+@cindex month names in date strings
+@cindex abbreviations for months
+Literal months may be spelled out in full: @samp{January},
+@samp{February}, @samp{March}, @samp{April}, @samp{May}, @samp{June},
+@samp{July}, @samp{August}, @samp{September}, @samp{October},
+@samp{November} or @samp{December}. Literal months may be abbreviated
+to their first three letters, possibly followed by an abbreviating dot.
+It is also permitted to write @samp{Sept} instead of @samp{September}.
+
+When months are written literally, the calendar date may be given as any
+of the following:
+
+@example
+@var{day} @var{month} @var{year}
+@var{day} @var{month}
+@var{month} @var{day} @var{year}
+@var{day}-@var{month}-@var{year}
+@end example
+
+Or, omitting the year:
+
+@example
+@var{month} @var{day}
+@end example
+
+
+@node Time of day items
+@section Time of day items
+
+@cindex time of day item
+
+A @dfn{time of day item} in date strings specifies the time on a given
+day. Here are some examples, all of which represent the same time:
+
+@example
+20:02:00.000000
+20:02
+8:02pm
+20:02-0500 # In @sc{est} (U.S. Eastern Standard Time).
+@end example
+
+More generally, the time of day may be given as
+@samp{@var{hour}:@var{minute}:@var{second}}, where @var{hour} is
+a number between 0 and 23, @var{minute} is a number between 0 and
+59, and @var{second} is a number between 0 and 59 possibly followed by
+@samp{.} or @samp{,} and a fraction containing one or more digits.
+Alternatively,
+@samp{:@var{second}} can be omitted, in which case it is taken to
+be zero. On the rare hosts that support leap seconds, @var{second}
+may be 60.
+
+@findex am @r{in date strings}
+@findex pm @r{in date strings}
+@findex midnight @r{in date strings}
+@findex noon @r{in date strings}
+If the time is followed by @samp{am} or @samp{pm} (or @samp{a.m.}
+or @samp{p.m.}), @var{hour} is restricted to run from 1 to 12, and
+@samp{:@var{minute}} may be omitted (taken to be zero). @samp{am}
+indicates the first half of the day, @samp{pm} indicates the second
+half of the day. In this notation, 12 is the predecessor of 1:
+midnight is @samp{12am} while noon is @samp{12pm}.
+(This is the zero-oriented interpretation of @samp{12am} and @samp{12pm},
+as opposed to the old tradition derived from Latin
+which uses @samp{12m} for noon and @samp{12pm} for midnight.)
+
+@cindex time zone correction
+@cindex minutes, time zone correction by
+The time may alternatively be followed by a time zone correction,
+expressed as @samp{@var{s}@var{hh}@var{mm}}, where @var{s} is @samp{+}
+or @samp{-}, @var{hh} is a number of zone hours and @var{mm} is a number
+of zone minutes. You can also separate @var{hh} from @var{mm} with a colon.
+When a time zone correction is given this way, it
+forces interpretation of the time relative to
+Coordinated Universal Time (@sc{utc}), overriding any previous
+specification for the time zone or the local time zone. For example,
+@samp{+0530} and @samp{+05:30} both stand for the time zone 5.5 hours
+ahead of @sc{utc} (e.g., India). The @var{minute}
+part of the time of day may not be elided when a time zone correction
+is used. This is the best way to specify a time zone correction by
+fractional parts of an hour.
+
+Either @samp{am}/@samp{pm} or a time zone correction may be specified,
+but not both.
+
+
+@node Time zone items
+@section Time zone items
+
+@cindex time zone item
+
+A @dfn{time zone item} specifies an international time zone, indicated
+by a small set of letters, e.g., @samp{UTC} or @samp{Z}
+for Coordinated Universal
+Time. Any included periods are ignored. By following a
+non-daylight-saving time zone by the string @samp{DST} in a separate
+word (that is, separated by some white space), the corresponding
+daylight saving time zone may be specified.
+Alternatively, a non-daylight-saving time zone can be followed by a
+time zone correction, to add the two values. This is normally done
+only for @samp{UTC}; for example, @samp{UTC+05:30} is equivalent to
+@samp{+05:30}.
+
+Time zone items other than @samp{UTC} and @samp{Z}
+are obsolescent and are not recommended, because they
+are ambiguous; for example, @samp{EST} has a different meaning in
+Australia than in the United States. Instead, it's better to use
+unambiguous numeric time zone corrections like @samp{-0500}, as
+described in the previous section.
+
+If neither a time zone item nor a time zone correction is supplied,
+time stamps are interpreted using the rules of the default time zone
+(@pxref{Specifying time zone rules}).
+
+
+@node Day of week items
+@section Day of week items
+
+@cindex day of week item
+
+The explicit mention of a day of the week will forward the date
+(only if necessary) to reach that day of the week in the future.
+
+Days of the week may be spelled out in full: @samp{Sunday},
+@samp{Monday}, @samp{Tuesday}, @samp{Wednesday}, @samp{Thursday},
+@samp{Friday} or @samp{Saturday}. Days may be abbreviated to their
+first three letters, optionally followed by a period. The special
+abbreviations @samp{Tues} for @samp{Tuesday}, @samp{Wednes} for
+@samp{Wednesday} and @samp{Thur} or @samp{Thurs} for @samp{Thursday} are
+also allowed.
+
+@findex next @var{day}
+@findex last @var{day}
+A number may precede a day of the week item to move forward
+supplementary weeks. It is best used in expression like @samp{third
+monday}. In this context, @samp{last @var{day}} or @samp{next
+@var{day}} is also acceptable; they move one week before or after
+the day that @var{day} by itself would represent.
+
+A comma following a day of the week item is ignored.
+
+
+@node Relative items in date strings
+@section Relative items in date strings
+
+@cindex relative items in date strings
+@cindex displacement of dates
+
+@dfn{Relative items} adjust a date (or the current date if none) forward
+or backward. The effects of relative items accumulate. Here are some
+examples:
+
+@example
+1 year
+1 year ago
+3 years
+2 days
+@end example
+
+@findex year @r{in date strings}
+@findex month @r{in date strings}
+@findex fortnight @r{in date strings}
+@findex week @r{in date strings}
+@findex day @r{in date strings}
+@findex hour @r{in date strings}
+@findex minute @r{in date strings}
+The unit of time displacement may be selected by the string @samp{year}
+or @samp{month} for moving by whole years or months. These are fuzzy
+units, as years and months are not all of equal duration. More precise
+units are @samp{fortnight} which is worth 14 days, @samp{week} worth 7
+days, @samp{day} worth 24 hours, @samp{hour} worth 60 minutes,
+@samp{minute} or @samp{min} worth 60 seconds, and @samp{second} or
+@samp{sec} worth one second. An @samp{s} suffix on these units is
+accepted and ignored.
+
+@findex ago @r{in date strings}
+The unit of time may be preceded by a multiplier, given as an optionally
+signed number. Unsigned numbers are taken as positively signed. No
+number at all implies 1 for a multiplier. Following a relative item by
+the string @samp{ago} is equivalent to preceding the unit by a
+multiplier with value @math{-1}.
+
+@findex day @r{in date strings}
+@findex tomorrow @r{in date strings}
+@findex yesterday @r{in date strings}
+The string @samp{tomorrow} is worth one day in the future (equivalent
+to @samp{day}), the string @samp{yesterday} is worth
+one day in the past (equivalent to @samp{day ago}).
+
+@findex now @r{in date strings}
+@findex today @r{in date strings}
+@findex this @r{in date strings}
+The strings @samp{now} or @samp{today} are relative items corresponding
+to zero-valued time displacement, these strings come from the fact
+a zero-valued time displacement represents the current time when not
+otherwise changed by previous items. They may be used to stress other
+items, like in @samp{12:00 today}. The string @samp{this} also has
+the meaning of a zero-valued time displacement, but is preferred in
+date strings like @samp{this thursday}.
+
+When a relative item causes the resulting date to cross a boundary
+where the clocks were adjusted, typically for daylight saving time,
+the resulting date and time are adjusted accordingly.
+
+The fuzz in units can cause problems with relative items. For
+example, @samp{2003-07-31 -1 month} might evaluate to 2003-07-01,
+because 2003-06-31 is an invalid date. To determine the previous
+month more reliably, you can ask for the month before the 15th of the
+current month. For example:
+
+@example
+$ date -R
+Thu, 31 Jul 2003 13:02:39 -0700
+$ date --date='-1 month' +'Last month was %B?'
+Last month was July?
+$ date --date="$(date +%Y-%m-15) -1 month" +'Last month was %B!'
+Last month was June!
+@end example
+
+Also, take care when manipulating dates around clock changes such as
+daylight saving leaps. In a few cases these have added or subtracted
+as much as 24 hours from the clock, so it is often wise to adopt
+universal time by setting the @env{TZ} environment variable to
+@samp{UTC0} before embarking on calendrical calculations.
+
+@node Pure numbers in date strings
+@section Pure numbers in date strings
+
+@cindex pure numbers in date strings
+
+The precise interpretation of a pure decimal number depends
+on the context in the date string.
+
+If the decimal number is of the form @var{yyyy}@var{mm}@var{dd} and no
+other calendar date item (@pxref{Calendar date items}) appears before it
+in the date string, then @var{yyyy} is read as the year, @var{mm} as the
+month number and @var{dd} as the day of the month, for the specified
+calendar date.
+
+If the decimal number is of the form @var{hh}@var{mm} and no other time
+of day item appears before it in the date string, then @var{hh} is read
+as the hour of the day and @var{mm} as the minute of the hour, for the
+specified time of day. @var{mm} can also be omitted.
+
+If both a calendar date and a time of day appear to the left of a number
+in the date string, but no relative item, then the number overrides the
+year.
+
+
+@node Seconds since the Epoch
+@section Seconds since the Epoch
+
+If you precede a number with @samp{@@}, it represents an internal time
+stamp as a count of seconds. The number can contain an internal
+decimal point (either @samp{.} or @samp{,}); any excess precision not
+supported by the internal representation is truncated toward minus
+infinity. Such a number cannot be combined with any other date
+item, as it specifies a complete time stamp.
+
+@cindex beginning of time, for @acronym{POSIX}
+@cindex epoch, for @acronym{POSIX}
+Internally, computer times are represented as a count of seconds since
+an epoch---a well-defined point of time. On @acronym{GNU} and
+@acronym{POSIX} systems, the epoch is 1970-01-01 00:00:00 @sc{utc}, so
+@samp{@@0} represents this time, @samp{@@1} represents 1970-01-01
+00:00:01 @sc{utc}, and so forth. @acronym{GNU} and most other
+@acronym{POSIX}-compliant systems support such times as an extension
+to @acronym{POSIX}, using negative counts, so that @samp{@@-1}
+represents 1969-12-31 23:59:59 @sc{utc}.
+
+Traditional Unix systems count seconds with 32-bit two's-complement
+integers and can represent times from 1901-12-13 20:45:52 through
+2038-01-19 03:14:07 @sc{utc}. More modern systems use 64-bit counts
+of seconds with nanosecond subcounts, and can represent all the times
+in the known lifetime of the universe to a resolution of 1 nanosecond.
+
+On most hosts, these counts ignore the presence of leap seconds.
+For example, on most hosts @samp{@@915148799} represents 1998-12-31
+23:59:59 @sc{utc}, @samp{@@915148800} represents 1999-01-01 00:00:00
+@sc{utc}, and there is no way to represent the intervening leap second
+1998-12-31 23:59:60 @sc{utc}.
+
+@node Specifying time zone rules
+@section Specifying time zone rules
+
+@vindex TZ
+Normally, dates are interpreted using the rules of the current time
+zone, which in turn are specified by the @env{TZ} environment
+variable, or by a system default if @env{TZ} is not set. To specify a
+different set of default time zone rules that apply just to one date,
+start the date with a string of the form @samp{TZ="@var{rule}"}. The
+two quote characters (@samp{"}) must be present in the date, and any
+quotes or backslashes within @var{rule} must be escaped by a
+backslash.
+
+For example, with the @acronym{GNU} @command{date} command you can
+answer the question ``What time is it in New York when a Paris clock
+shows 6:30am on October 31, 2004?'' by using a date beginning with
+@samp{TZ="Europe/Paris"} as shown in the following shell transcript:
+
+@example
+$ export TZ="America/New_York"
+$ date --date='TZ="Europe/Paris" 2004-10-31 06:30'
+Sun Oct 31 01:30:00 EDT 2004
+@end example
+
+In this example, the @option{--date} operand begins with its own
+@env{TZ} setting, so the rest of that operand is processed according
+to @samp{Europe/Paris} rules, treating the string @samp{2004-10-31
+06:30} as if it were in Paris. However, since the output of the
+@command{date} command is processed according to the overall time zone
+rules, it uses New York time. (Paris was normally six hours ahead of
+New York in 2004, but this example refers to a brief Halloween period
+when the gap was five hours.)
+
+A @env{TZ} value is a rule that typically names a location in the
+@uref{http://www.twinsun.com/tz/tz-link.htm, @samp{tz} database}.
+A recent catalog of location names appears in the
+@uref{http://twiki.org/cgi-bin/xtra/tzdate, TWiki Date and Time
+Gateway}. A few non-@acronym{GNU} hosts require a colon before a
+location name in a @env{TZ} setting, e.g.,
+@samp{TZ=":America/New_York"}.
+
+The @samp{tz} database includes a wide variety of locations ranging
+from @samp{Arctic/Longyearbyen} to @samp{Antarctica/South_Pole}, but
+if you are at sea and have your own private time zone, or if you are
+using a non-@acronym{GNU} host that does not support the @samp{tz}
+database, you may need to use a @acronym{POSIX} rule instead. Simple
+@acronym{POSIX} rules like @samp{UTC0} specify a time zone without
+daylight saving time; other rules can specify simple daylight saving
+regimes. @xref{TZ Variable,, Specifying the Time Zone with @code{TZ},
+libc, The GNU C Library}.
+
+@node Authors of get_date
+@section Authors of @code{get_date}
+
+@cindex authors of @code{get_date}
+
+@cindex Bellovin, Steven M.
+@cindex Salz, Rich
+@cindex Berets, Jim
+@cindex MacKenzie, David
+@cindex Meyering, Jim
+@cindex Eggert, Paul
+@code{get_date} was originally implemented by Steven M. Bellovin
+(@email{smb@@research.att.com}) while at the University of North Carolina
+at Chapel Hill. The code was later tweaked by a couple of people on
+Usenet, then completely overhauled by Rich $alz (@email{rsalz@@bbn.com})
+and Jim Berets (@email{jberets@@bbn.com}) in August, 1990. Various
+revisions for the @sc{gnu} system were made by David MacKenzie, Jim Meyering,
+Paul Eggert and others.
+
+@cindex Pinard, F.
+@cindex Berry, K.
+This chapter was originally produced by Fran@,{c}ois Pinard
+(@email{pinard@@iro.umontreal.ca}) from the @file{getdate.y} source code,
+and then edited by K.@: Berry (@email{kb@@cs.umb.edu}).
diff --git a/doc/perm.texi b/doc/perm.texi
new file mode 100644
index 0000000..78b5919
--- /dev/null
+++ b/doc/perm.texi
@@ -0,0 +1,604 @@
+@c File mode bits
+
+@c Copyright (C) 1994, 1996, 1999, 2000, 2001, 2003, 2004, 2005, 2006
+@c Free Software Foundation, Inc.
+
+@c Permission is granted to copy, distribute and/or modify this document
+@c under the terms of the GNU Free Documentation License, Version 1.2 or
+@c any later version published by the Free Software Foundation; with no
+@c Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+@c Texts. A copy of the license is included in the ``GNU Free
+@c Documentation License'' file as part of this distribution.
+
+Each file has a set of @dfn{file mode bits} that control the kinds of
+access that users have to that file. They can be represented either in
+symbolic form or as an octal number.
+
+@menu
+* Mode Structure:: Structure of file mode bits.
+* Symbolic Modes:: Mnemonic representation of file mode bits.
+* Numeric Modes:: File mode bits as octal numbers.
+* Directory Setuid and Setgid:: Set-user-ID and set-group-ID on directories.
+@end menu
+
+@node Mode Structure
+@section Structure of File Mode Bits
+
+The file mode bits have two parts: the @dfn{file permission bits},
+which control ordinary access to the file, and @dfn{special mode
+bits}, which affect only some files.
+
+There are three kinds of permissions that a user can have for a file:
+
+@enumerate
+@item
+@cindex read permission
+permission to read the file. For directories, this means permission to
+list the contents of the directory.
+@item
+@cindex write permission
+permission to write to (change) the file. For directories, this means
+permission to create and remove files in the directory.
+@item
+@cindex execute/search permission
+permission to execute the file (run it as a program). For directories,
+this means permission to access files in the directory.
+@end enumerate
+
+There are three categories of users who may have different permissions
+to perform any of the above operations on a file:
+
+@enumerate
+@item
+the file's owner;
+@item
+other users who are in the file's group;
+@item
+everyone else.
+@end enumerate
+
+@cindex owner, default
+@cindex group owner, default
+Files are given an owner and group when they are created. Usually the
+owner is the current user and the group is the group of the directory
+the file is in, but this varies with the operating system, the
+file system the file is created on, and the way the file is created. You
+can change the owner and group of a file by using the @command{chown} and
+@command{chgrp} commands.
+
+In addition to the three sets of three permissions listed above, the
+file mode bits have three special components, which affect only
+executable files (programs) and, on most systems, directories:
+
+@enumerate
+@item
+@cindex set-user-ID
+@cindex setuid
+Set the process's effective user ID to that of the file upon execution
+(called the @dfn{set-user-ID bit}, or sometimes the @dfn{setuid bit}).
+For directories on a few systems, give files created in the directory
+the same owner as the directory, no matter who creates them, and set
+the set-user-ID bit of newly-created subdirectories.
+@item
+@cindex set-group-ID
+@cindex setgid
+Set the process's effective group ID to that of the file upon execution
+(called the @dfn{set-group-ID bit}, or sometimes the @dfn{setgid bit}).
+For directories on most systems, give files created in the directory
+the same group as the directory, no matter what group the user who
+creates them is in, and set the set-group-ID bit of newly-created
+subdirectories.
+@item
+@cindex sticky
+@cindex swap space, saving text image in
+@cindex text image, saving in swap space
+@cindex restricted deletion flag
+Prevent unprivileged users from removing or renaming a file in a directory
+unless they own the file or the directory; this is called the
+@dfn{restricted deletion flag} for the directory, and is commonly
+found on world-writable directories like @file{/tmp}.
+
+For regular files on some older systems, save the program's text image on the
+swap device so it will load more quickly when run; this is called the
+@dfn{sticky bit}.
+@end enumerate
+
+In addition to the file mode bits listed above, there may be file attributes
+specific to the file system, e.g., access control lists (ACLs), whether a
+file is compressed, whether a file can be modified (immutability), and whether
+a file can be dumped. These are usually set using programs
+specific to the file system. For example:
+@c should probably say a lot more about ACLs... someday
+
+@table @asis
+@item ext2
+On @acronym{GNU} and @acronym{GNU}/Linux the file attributes specific to
+the ext2 file system are set using @command{chattr}.
+
+@item FFS
+On FreeBSD the file flags specific to the FFS
+file system are set using @command{chflags}.
+@end table
+
+Even if a file's mode bits allow an operation on that file,
+that operation may still fail, because:
+
+@itemize
+@item
+the file-system-specific attributes or flags do not permit it; or
+
+@item
+the file system is mounted as read-only.
+@end itemize
+
+For example, if the immutable attribute is set on a file,
+it cannot be modified, regardless of the fact that you
+may have just run @code{chmod a+w FILE}.
+
+@node Symbolic Modes
+@section Symbolic Modes
+
+@cindex symbolic modes
+@dfn{Symbolic modes} represent changes to files' mode bits as
+operations on single-character symbols. They allow you to modify either
+all or selected parts of files' mode bits, optionally based on
+their previous values, and perhaps on the current @code{umask} as well
+(@pxref{Umask and Protection}).
+
+The format of symbolic modes is:
+
+@example
+@r{[}ugoa@dots{}@r{][}+-=@r{]}@var{perms}@dots{}@r{[},@dots{}@r{]}
+@end example
+
+@noindent
+where @var{perms} is either zero or more letters from the set
+@samp{rwxXst}, or a single letter from the set @samp{ugo}.
+
+The following sections describe the operators and other details of
+symbolic modes.
+
+@menu
+* Setting Permissions:: Basic operations on permissions.
+* Copying Permissions:: Copying existing permissions.
+* Changing Special Mode Bits:: Special mode bits.
+* Conditional Executability:: Conditionally affecting executability.
+* Multiple Changes:: Making multiple changes.
+* Umask and Protection:: The effect of the umask.
+@end menu
+
+@node Setting Permissions
+@subsection Setting Permissions
+
+The basic symbolic operations on a file's permissions are adding,
+removing, and setting the permission that certain users have to read,
+write, and execute or search the file. These operations have the following
+format:
+
+@example
+@var{users} @var{operation} @var{permissions}
+@end example
+
+@noindent
+The spaces between the three parts above are shown for readability only;
+symbolic modes cannot contain spaces.
+
+The @var{users} part tells which users' access to the file is changed.
+It consists of one or more of the following letters (or it can be empty;
+@pxref{Umask and Protection}, for a description of what happens then). When
+more than one of these letters is given, the order that they are in does
+not matter.
+
+@table @code
+@item u
+@cindex owner of file, permissions for
+the user who owns the file;
+@item g
+@cindex group, permissions for
+other users who are in the file's group;
+@item o
+@cindex other permissions
+all other users;
+@item a
+all users; the same as @samp{ugo}.
+@end table
+
+The @var{operation} part tells how to change the affected users' access
+to the file, and is one of the following symbols:
+
+@table @code
+@item +
+@cindex adding permissions
+to add the @var{permissions} to whatever permissions the @var{users}
+already have for the file;
+@item -
+@cindex removing permissions
+@cindex subtracting permissions
+to remove the @var{permissions} from whatever permissions the
+@var{users} already have for the file;
+@item =
+@cindex setting permissions
+to make the @var{permissions} the only permissions that the @var{users}
+have for the file.
+@end table
+
+The @var{permissions} part tells what kind of access to the file should
+be changed; it is normally zero or more of the following letters. As with the
+@var{users} part, the order does not matter when more than one letter is
+given. Omitting the @var{permissions} part is useful only with the
+@samp{=} operation, where it gives the specified @var{users} no access
+at all to the file.
+
+@table @code
+@item r
+@cindex read permission, symbolic
+the permission the @var{users} have to read the file;
+@item w
+@cindex write permission, symbolic
+the permission the @var{users} have to write to the file;
+@item x
+@cindex execute/search permission, symbolic
+the permission the @var{users} have to execute the file,
+or search it if it is a directory.
+@end table
+
+For example, to give everyone permission to read and write a regular file,
+but not to execute it, use:
+
+@example
+a=rw
+@end example
+
+To remove write permission for all users other than the file's
+owner, use:
+
+@example
+go-w
+@end example
+
+@noindent
+The above command does not affect the access that the owner of
+the file has to it, nor does it affect whether other users can
+read or execute the file.
+
+To give everyone except a file's owner no permission to do anything with
+that file, use the mode below. Other users could still remove the file,
+if they have write permission on the directory it is in.
+
+@example
+go=
+@end example
+
+@noindent
+Another way to specify the same thing is:
+
+@example
+og-rwx
+@end example
+
+@node Copying Permissions
+@subsection Copying Existing Permissions
+
+@cindex copying existing permissions
+@cindex permissions, copying existing
+You can base a file's permissions on its existing permissions. To do
+this, instead of using a series of @samp{r}, @samp{w}, or @samp{x}
+letters after the
+operator, you use the letter @samp{u}, @samp{g}, or @samp{o}. For
+example, the mode
+
+@example
+o+g
+@end example
+
+@noindent
+adds the permissions for users who are in a file's group to the
+permissions that other users have for the file. Thus, if the file
+started out as mode 664 (@samp{rw-rw-r--}), the above mode would change
+it to mode 666 (@samp{rw-rw-rw-}). If the file had started out as mode
+741 (@samp{rwxr----x}), the above mode would change it to mode 745
+(@samp{rwxr--r-x}). The @samp{-} and @samp{=} operations work
+analogously.
+
+@node Changing Special Mode Bits
+@subsection Changing Special Mode Bits
+
+@cindex changing special mode bits
+In addition to changing a file's read, write, and execute/search permissions,
+you can change its special mode bits. @xref{Mode Structure}, for a
+summary of these special mode bits.
+
+To change the file mode bits to set the user ID on execution, use
+@samp{u} in the @var{users} part of the symbolic mode and
+@samp{s} in the @var{permissions} part.
+
+To change the file mode bits to set the group ID on execution, use
+@samp{g} in the @var{users} part of the symbolic mode and
+@samp{s} in the @var{permissions} part.
+
+To set both user and group ID on execution, omit the @var{users} part
+of the symbolic mode (or use @samp{a}) and use @samp{s} in the
+@var{permissions} part.
+
+To change the file mode bits to set the restricted deletion flag or sticky bit,
+omit the @var{users} part of the symbolic mode (or use @samp{a}) and use
+@samp{t} in the @var{permissions} part.
+
+For example, to set the set-user-ID mode bit of a program,
+you can use the mode:
+
+@example
+u+s
+@end example
+
+To remove both set-user-ID and set-group-ID mode bits from
+it, you can use the mode:
+
+@example
+a-s
+@end example
+
+To set the restricted deletion flag or sticky bit, you can use
+the mode:
+
+@example
++t
+@end example
+
+The combination @samp{o+s} has no effect. On @acronym{GNU} systems
+the combinations @samp{u+t} and @samp{g+t} have no effect, and
+@samp{o+t} acts like plain @samp{+t}.
+
+The @samp{=} operator is not very useful with special mode bits.
+For example, the mode:
+
+@example
+o=t
+@end example
+
+@noindent
+does set the restricted deletion flag or sticky bit, but it also
+removes all read, write, and execute/search permissions that users not in the
+file's group might have had for it.
+
+@xref{Directory Setuid and Setgid}, for additional rules concerning
+set-user-ID and set-group-ID bits and directories.
+
+@node Conditional Executability
+@subsection Conditional Executability
+
+@cindex conditional executability
+There is one more special type of symbolic permission: if you use
+@samp{X} instead of @samp{x}, execute/search permission is affected only if the
+file is a directory or already had execute permission.
+
+For example, this mode:
+
+@example
+a+X
+@end example
+
+@noindent
+gives all users permission to search directories, or to execute files if
+anyone could execute them before.
+
+@node Multiple Changes
+@subsection Making Multiple Changes
+
+@cindex multiple changes to permissions
+The format of symbolic modes is actually more complex than described
+above (@pxref{Setting Permissions}). It provides two ways to make
+multiple changes to files' mode bits.
+
+The first way is to specify multiple @var{operation} and
+@var{permissions} parts after a @var{users} part in the symbolic mode.
+
+For example, the mode:
+
+@example
+og+rX-w
+@end example
+
+@noindent
+gives users other than the owner of the file read permission and, if
+it is a directory or if someone already had execute permission
+to it, gives them execute/search permission; and it also denies them write
+permission to the file. It does not affect the permission that the
+owner of the file has for it. The above mode is equivalent to
+the two modes:
+
+@example
+og+rX
+og-w
+@end example
+
+The second way to make multiple changes is to specify more than one
+simple symbolic mode, separated by commas. For example, the mode:
+
+@example
+a+r,go-w
+@end example
+
+@noindent
+gives everyone permission to read the file and removes write
+permission on it for all users except its owner. Another example:
+
+@example
+u=rwx,g=rx,o=
+@end example
+
+@noindent
+sets all of the permission bits for the file explicitly. (It
+gives users who are not in the file's group no permission at all for
+it.)
+
+The two methods can be combined. The mode:
+
+@example
+a+r,g+x-w
+@end example
+
+@noindent
+gives all users permission to read the file, and gives users who are in
+the file's group permission to execute/search it as well, but not permission
+to write to it. The above mode could be written in several different
+ways; another is:
+
+@example
+u+r,g+rx,o+r,g-w
+@end example
+
+@node Umask and Protection
+@subsection The Umask and Protection
+
+@cindex umask and modes
+@cindex modes and umask
+If the @var{users} part of a symbolic mode is omitted, it defaults to
+@samp{a} (affect all users), except that any permissions that are
+@emph{set} in the system variable @code{umask} are @emph{not affected}.
+The value of @code{umask} can be set using the
+@code{umask} command. Its default value varies from system to system.
+
+@cindex giving away permissions
+Omitting the @var{users} part of a symbolic mode is generally not useful
+with operations other than @samp{+}. It is useful with @samp{+} because
+it allows you to use @code{umask} as an easily customizable protection
+against giving away more permission to files than you intended to.
+
+As an example, if @code{umask} has the value 2, which removes write
+permission for users who are not in the file's group, then the mode:
+
+@example
++w
+@end example
+
+@noindent
+adds permission to write to the file to its owner and to other users who
+are in the file's group, but @emph{not} to other users. In contrast,
+the mode:
+
+@example
+a+w
+@end example
+
+@noindent
+ignores @code{umask}, and @emph{does} give write permission for
+the file to all users.
+
+@node Numeric Modes
+@section Numeric Modes
+
+@cindex numeric modes
+@cindex file mode bits, numeric
+@cindex octal numbers for file modes
+As an
+alternative to giving a symbolic mode, you can give an octal (base 8)
+number that represents the mode.
+This number is always interpreted in octal; you do not have to add a
+leading @samp{0}, as you do in C. Mode @samp{0055} is the same as
+mode @samp{55}.
+
+A numeric mode is usually shorter than the corresponding symbolic
+mode, but it is limited in that normally it cannot take into account the
+previous file mode bits; it can only set them absolutely.
+(As discussed in the next section, the set-user-ID and set-group-ID
+bits of directories are an exception to this general limitation.)
+
+The permissions granted to the user,
+to other users in the file's group,
+and to other users not in the file's group each require three
+bits, which are represented as one octal digit. The three special
+mode bits also require one bit each, and they are as a group
+represented as another octal digit. Here is how the bits are arranged,
+starting with the lowest valued bit:
+
+@example
+Value in Corresponding
+Mode Mode Bit
+
+ Other users not in the file's group:
+ 1 Execute/search
+ 2 Write
+ 4 Read
+
+ Other users in the file's group:
+ 10 Execute/search
+ 20 Write
+ 40 Read
+
+ The file's owner:
+ 100 Execute/search
+ 200 Write
+ 400 Read
+
+ Special mode bits:
+1000 Restricted deletion flag or sticky bit
+2000 Set group ID on execution
+4000 Set user ID on execution
+@end example
+
+For example, numeric mode @samp{4755} corresponds to symbolic mode
+@samp{u=rwxs,go=rx}, and numeric mode @samp{664} corresponds to symbolic mode
+@samp{ug=rw,o=r}. Numeric mode @samp{0} corresponds to symbolic mode
+@samp{a=}.
+
+@node Directory Setuid and Setgid
+@section Directories and the Set-User-ID and Set-Group-ID Bits
+
+On most systems, if a directory's set-group-ID bit is set, newly
+created subfiles inherit the same group as the directory, and newly
+created subdirectories inherit the set-group-ID bit of the parent
+directory. On a few systems, a directory's set-user-ID bit has a
+similar effect on the ownership of new subfiles and the set-user-ID
+bits of new subdirectories. These mechanisms let users share files
+more easily, by lessening the need to use @command{chmod} or
+@command{chown} to share new files.
+
+These convenience mechanisms rely on the set-user-ID and set-group-ID
+bits of directories. If commands like @command{chmod} and
+@command{mkdir} routinely cleared these bits on directories, the
+mechanisms would be less convenient and it would be harder to share
+files. Therefore, a command like @command{chmod} does not affect the
+set-user-ID or set-group-ID bits of a directory unless the user
+specifically mentions them in a symbolic mode, or sets them in
+a numeric mode. For example, on systems that support
+set-group-ID inheritance:
+
+@example
+# These commands leave the set-user-ID and
+# set-group-ID bits of the subdirectories alone,
+# so that they retain their default values.
+mkdir A B C
+chmod 755 A
+chmod 0755 B
+chmod u=rwx,go=rx C
+mkdir -m 755 D
+mkdir -m 0755 E
+mkdir -m u=rwx,go=rx F
+@end example
+
+If you want to try to set these bits, you must mention them
+explicitly in the symbolic or numeric modes, e.g.:
+
+@example
+# These commands try to set the set-user-ID
+# and set-group-ID bits of the subdirectories.
+mkdir G H
+chmod 6755 G
+chmod u=rwx,go=rx,a+s H
+mkdir -m 6755 I
+mkdir -m u=rwx,go=rx,a+s J
+@end example
+
+If you want to try to clear these bits, you must mention them
+explicitly in a symbolic mode, e.g.:
+
+@example
+# This command tries to clear the set-user-ID
+# and set-group-ID bits of the directory D.
+chmod a-s D
+@end example
+
+This behavior is a @acronym{GNU} extension. Portable scripts should
+not rely on requests to set or clear these bits on directories, as
+@acronym{POSIX} allows implementations to ignore these requests.
diff --git a/doc/stamp-vti b/doc/stamp-vti
new file mode 100644
index 0000000..f556ae3
--- /dev/null
+++ b/doc/stamp-vti
@@ -0,0 +1,4 @@
+@set UPDATED 22 March 2007
+@set UPDATED-MONTH March 2007
+@set EDITION 6.9
+@set VERSION 6.9
diff --git a/doc/version.texi b/doc/version.texi
new file mode 100644
index 0000000..f556ae3
--- /dev/null
+++ b/doc/version.texi
@@ -0,0 +1,4 @@
+@set UPDATED 22 March 2007
+@set UPDATED-MONTH March 2007
+@set EDITION 6.9
+@set VERSION 6.9
diff --git a/gl/modules/getloadavg.diff b/gl/modules/getloadavg.diff
new file mode 100644
index 0000000..99d9043
--- /dev/null
+++ b/gl/modules/getloadavg.diff
@@ -0,0 +1,16 @@
+Index: modules/getloadavg
+===================================================================
+RCS file: /sources/gnulib/gnulib/modules/getloadavg,v
+retrieving revision 1.13
+diff -u -p -r1.13 getloadavg
+--- modules/getloadavg 22 Sep 2006 12:47:55 -0000 1.13
++++ modules/getloadavg 23 Sep 2006 16:41:36 -0000
+@@ -14,7 +14,7 @@ stdbool
+ fcntl-safer
+
+ configure.ac:
+-gl_GETLOADAVG([$gl_source_base])
++gl_GETLOADAVG([lib])
+
+ Makefile.am:
+
diff --git a/lib/ChangeLog b/lib/ChangeLog
new file mode 100644
index 0000000..e1b4c7a
--- /dev/null
+++ b/lib/ChangeLog
@@ -0,0 +1,8749 @@
+2007-03-20 Jim Meyering <jim@meyering.net>
+
+ Fix a typo in the handling of %x and %X.
+ * vasnprintf.c (VASNPRINTF): When adding 2 to buffer length,
+ don't double it.
+
+2007-03-04 Jim Meyering <jim@meyering.net>
+
+ * vasnprintf.c (VASNPRINTF): Add missing semicolon.
+
+2007-03-02 Jim Meyering <jim@meyering.net>
+
+ * vasnprintf.c (VASNPRINTF): Remove cast of alloca return value.
+
+2007-03-01 Jim Meyering <jim@meyering.net>
+
+ Merge in changes from gnulib:
+ * vasnprintf.c: Add a comment explaining why coreutils has its own
+ version of this file.
+ Include <stdint.h>.
+ (SIZE_MAX): Remove definition (now, stdint.h covers that).
+ (EOVERFLOW): Remove definition (now done via the eoverflow module).
+ Update some #ifdef to #if.
+ Use HAVE_LONG_LONG_INT, not HAVE_LONG_LONG.
+ * printf-parse.c: Likewise.
+
+2007-02-28 Jim Meyering <jim@meyering.net>
+
+ * tsearch.c: Remove unused file.
+
+2007-02-23 Jim Meyering <jim@meyering.net>
+
+ * randperm.c (randperm_new): Comment: say that this function
+ returns a pointer to malloc'd storage.
+
+2007-02-18 Jim Meyering <jim@meyering.net>
+
+ * xfts.c: Include <stdlib.h> rather than exit.h, now that stdlib.h
+ is guaranteed to provide a valid definition of EXIT_FAILURE.
+
+2007-01-19 Jim Meyering <jim@meyering.net>
+
+ * .cvsignore, .gitignore: Add sys, as well as more
+ bootstrap-inserted file names.
+
+2007-01-14 Jim Meyering <jim@meyering.net>
+
+ * fchdir-stub.c: Remove file. No longer needed.
+
+2006-12-03 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libcoreutils_a_SOURCES): Remove xmemcoll.c and
+ xmemcoll.h. Now, they're handled by the gnulib xmemcoll module.
+
+2006-11-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * randread.c (__attribute__): Don't define if __attribute__ is
+ already defined. Otherwise, the code won't conform to C99, since
+ the macro arg is spelled differently by some include file, and the
+ compilation fails with pedantic GCC.
+
+2006-11-22 Jim Meyering <jim@meyering.net>
+
+ * .cvsignore, .gitignore: Add fstat.c.
+
+2006-11-14 Jim Meyering <jim@meyering.net>
+
+ * readlink-stub.c, lstat-stub.c: Remove now-unused files.
+
+2006-10-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port sha512sum to hosts where uintmax_t is only 32 bits, e.g.,
+ HP/Tandom NonStop OSS circa 2005 has 32-bit uintmax_t, 64-bit intmax_t.
+ * u64.h: New file.
+ * sha512.c (SWAP, sha512_init_ctx, sha384_init_ctx, sha512_read_ctx):
+ (sha384_read_ctx, sha512_conclude_ctx, sha512_process_bytes):
+ (sha512_round_constants, F2, F1, sha512_process_block):
+ (S0, S1, SS0, SS1, M, R):
+ Rewrite to use u64.h instead of assuming uint64_t.
+ * sha512.h: Include u64.h rather than stdint.h.
+ (rol64): Remove; moved to u64.h and renamed to u64rol.
+
+2006-10-12 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libcoreutils_a_LIBADD): Append $(LIBOBJS),
+ to accommodate the latest version of gnulib-tool.
+ (libcoreutils_a_DEPENDENCIES): Likewise.
+ From Bruno Haible.
+
+2006-10-06 Jim Meyering <jim@meyering.net>
+
+ Avoid a compiler warning: const'ify and remove a cast.
+ * randread.c (struct randread_source) [handler]: Make parameter "const".
+ [handler_arg]: Add "const" attribute.
+ (randread_error): Make parameter "const".
+ (simple_new, randread_set_handler, randread_set_handler_arg): Likewise.
+ (randread_new): Remove now-unnecessary cast.
+ * randread.h: Adjust prototypes.
+
+2006-09-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * .cvsignore: Add openat-proc.c.
+
+2006-09-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * .cvsignore: Add fchmodat.c.
+
+2006-09-25 Jim Meyering <jim@meyering.net>
+
+ * fchmodat.c: Remove file. gnulib's copy is identical.
+
+2006-09-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * .cvsignore: Add fcntl.h, fcntl_.h, inttypes_.h, isapipe.c,
+ isapipe.h.
+
+2006-08-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * euidaccess-stat.c: Include <config.h> unconditionally, since
+ we now assume config.h exists.
+ * fchmodat.c: Likewise.
+ * fd-reopen.c: Likewise.
+ * fdopendir-glibc.c: Likewise.
+ * memxfrm.c: Likewise.
+ * printf-parse.c: Likewise.
+ * rand-isaac.c: Likewise.
+ * randint.c: Likewise.
+ * randperm.c: Likewise.
+ * randread.c: Likewise.
+ * root-dev-ino.c: Likewise.
+ * sha256.c: Likewise.
+ * sha512.c: Likewise.
+ * stdopen.c: Likewise.
+ * strintcmp.c: Likewise.
+ * strnumcmp.c: Likewise.
+ * t-chdir-long: Likewise.
+ * tsearch.c: Likewise.
+ * unicodeio.c: Likewise.
+ * vasnprintf.c: Likewise.
+ * xfts.c: Likewise.
+ * xmemxfrm.c: Likewise.
+
+ * .cvsignore: Add configmake.h, stamp-h1.
+
+2006-08-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * .cvsignore: Add config.h, config.hin.
+ * Makefile.am (AM_CPPFLAGS): Remove; we no longer need '-I..'.
+
+2006-08-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * .cvsignore: Add Makefile.in, getdate.tab.h.
+ Remove stat.c, sysexit.h.
+
+2006-08-22 Jim Meyering <jim@meyering.net>
+
+ * .cvsignore: Add files that are now generated by ../bootstrap.
+
+2006-08-21 Eric Blake <ebb9@byu.net>
+
+ * Makefile.am (LDADD): Restore this line; it is still needed for
+ t-fpending on platforms without __fpending.
+
+2006-08-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ Add a bootstrap procedure, so that the CVS version contains fewer
+ files and we bootstrap the rest from gnulib, gettext, etc.
+ * Makefile.am: include gnulib.mk, so that we can remove most of
+ this file.
+ (AM_CPPFLAGS): Don't mention -I$(srcdir), since that's now done
+ for us.
+ (noinst_LIBRARIES, LDDADD, DEFS): Remove.
+ (libcoreutils_a_SOURCES): Trim down greatly, just to the files
+ that aren't in gnulib.
+ (libcoreutils_a_LIBADD, lib_OBJECTS, BUILT_SOURCES, CLEANFILES):
+ (MAINTAINERCLEANFILES, MOSTLYCLEANDIRS, MOSTLYCLEANFILES):
+ (SUFFIXES, EXTRA_DIST, all-local, charset_alias, charset_tmp):
+ (install-exec-local, uninstall-local, charset.alias, .sin.sed):
+ (stdbool.h, stdint.h, fnmatch.h, arpa/inet.h, netinet/in.h):
+ (sys/socket.h, getopt.h): Remove.
+
+ * Makefile.in, README, __fpending.c, __fpending.h, acl.c, acl.h:
+ * alloca.c, alloca_.h, allocsa.c, allocsa.h, argmatch.c, argmatch.h:
+ * asnprintf.c, asprintf.c, at-func.c, atexit.c, backupfile.c:
+ * backupfile.h, base64.c, base64.h, basename.c, bcopy.c, c-strtod.c:
+ * c-strtod.h, c-strtold.c, calloc.c, canon-host.c, canon-host.h:
+ * canonicalize.c, canonicalize.h, chdir-long.c, chdir-long.h:
+ * chdir-safer.c, chdir-safer.h, chown.c, cloexec.c, cloexec.h:
+ * close-stream.c, close-stream.h, closeout.c, closeout.h:
+ * config.charset, creat-safer.c, cycle-check.c, cycle-check.h:
+ * dev-ino.h, diacrit.c, diacrit.h, dirchownmod.c, dirchownmod.h:
+ * dirfd.c, dirfd.h, dirname.c, dirname.h, dup-safer.c, dup2.c:
+ * error.c, error.h, euidaccess.c, euidaccess.h, exclude.c:
+ * exclude.h, exit.h, exitfail.c, exitfail.h, fchown-stub.c:
+ * fcntl--.h, fcntl-safer.h, fd-safer.c, file-type.c, file-type.h:
+ * fileblocks.c, filemode.c, filemode.h, filenamecat.c:
+ * filenamecat.h, fnmatch.c, fnmatch_.h, fnmatch_loop.c:
+ * fopen-safer.c, fprintftime.c, fprintftime.h, free.c, fsusage.c:
+ * fsusage.h, ftruncate.c, fts-cycle.c, fts.c, fts_.h, full-read.c:
+ * full-read.h, full-write.c, full-write.h, gai_strerror.c:
+ * getaddrinfo.c, getaddrinfo.h, getcwd.c, getcwd.h, getdate.h:
+ * getdate.y, getdelim.c, getdelim.h, getgroups.c, gethostname.c:
+ * gethrxtime.c, gethrxtime.h, getline.c, getline.h, getloadavg.c:
+ * getndelim2.c, getndelim2.h, getopt.c, getopt1.c, getopt_.h:
+ * getopt_int.h, getpagesize.h, getpass.c, getpass.h, gettext.h:
+ * gettime.c, gettimeofday.c, getugroups.c, getusershell.c:
+ * group-member.c, group-member.h, hard-locale.c, hard-locale.h:
+ * hash-pjw.c, hash-pjw.h, hash.c, hash.h, human.c, human.h:
+ * idcache.c, imaxtostr.c, inet_ntop.c, inet_ntop.h, intprops.h:
+ * inttostr.c, inttostr.h, lchmod.h, lchown.c, lchown.h:
+ * linebuffer.c, linebuffer.h, localcharset.c, localcharset.h:
+ * long-options.c, long-options.h, lstat.c, lstat.h, malloc.c:
+ * mbchar.c, mbchar.h, mbswidth.c, mbswidth.h, mbuiter.h, md5.c:
+ * md5.h, memcasecmp.c, memcasecmp.h, memchr.c, memcmp.c, memcoll.c:
+ * memcoll.h, memcpy.c, memmove.c, mempcpy.c, mempcpy.h, memrchr.c:
+ * memrchr.h, memset.c, mkancesdirs.c, mkancesdirs.h, mkdir-p.c:
+ * mkdir-p.h, mkdir.c, mkdirat.c, mkstemp-safer.c, mkstemp.c:
+ * mktime.c, modechange.c, modechange.h, mountlist.c, mountlist.h:
+ * nanosleep.c, obstack.c, obstack.h, offtostr.c, open-safer.c:
+ * openat-die.c, openat-priv.h, openat.c, openat.h, pathmax.h:
+ * physmem.c, physmem.h, pipe-safer.c, posixtm.c, posixtm.h:
+ * posixver.c, posixver.h, printf-args.c, printf-args.h:
+ * printf-parse.h, putenv.c, quote.c, quote.h, quotearg.c:
+ * quotearg.h, raise.c, readlink.c, readtokens.c, readtokens.h:
+ * readtokens0.c, readtokens0.h, readutmp.c, readutmp.h, realloc.c:
+ * ref-add.sin, ref-del.sin, regcomp.c, regex.c, regex.h:
+ * regex_internal.c, regex_internal.h, regexec.c, rename.c, rmdir.c:
+ * rpmatch.c, safe-read.c, safe-read.h, safe-write.c, safe-write.h:
+ * same-inode.h, same.c, same.h, save-cwd.c, save-cwd.h, savedir.c:
+ * savedir.h, setenv.c, setenv.h, settime.c, sha1.c, sha1.h:
+ * sig2str.c, sig2str.h, snprintf.c, snprintf.h, socket_.h:
+ * stat-macros.h, stat-time.h, stdbool_.h, stdint_.h, stdio--.h:
+ * stdio-safer.h, stdlib--.h, stdlib-safer.h, stpcpy.c, strcase.h:
+ * strcasecmp.c, strcspn.c, strdup.c, strdup.h, strftime.c:
+ * strftime.h, stripslash.c, strncasecmp.c, strndup.c, strndup.h:
+ * strnlen.c, strnlen.h, strnlen1.c, strnlen1.h, strpbrk.c, strstr.c:
+ * strstr.h, strtod.c, strtoimax.c, strtol.c, strtoll.c, strtoul.c:
+ * strtoull.c, strtoumax.c, strverscmp.c, strverscmp.h, tempname.c:
+ * time_r.c, time_r.h, timespec.h, umaxtostr.c, unicodeio.h:
+ * unistd--.h, unistd-safer.h, unlinkdir.c, unlinkdir.h:
+ * unlocked-io.h, unsetenv.c, userspec.c, userspec.h, utime.c:
+ * utimecmp.c, utimecmp.h, utimens.c, utimens.h, vasnprintf.h:
+ * vasprintf.c, vasprintf.h, verify.h, version-etc-fsf.c:
+ * version-etc.c, version-etc.h, wcwidth.h, xalloc-die.c, xalloc.h:
+ * xgetcwd.c, xgetcwd.h, xgethostname.c, xgethostname.h, xmalloc.c:
+ * xmemcoll.c, xmemcoll.h, xnanosleep.c, xnanosleep.h, xreadlink.c:
+ * xreadlink.h, xstrndup.c, xstrndup.h, xstrtod.c, xstrtod.h:
+ * xstrtoimax.c, xstrtol.c, xstrtol.h, xstrtold.c, xstrtoul.c:
+ * xstrtoumax.c, xtime.h, yesno.c, yesno.h:
+ Remove from CVS, since ../bootstrap generates them automatically.
+
+2006-08-18 Bruno Haible <bruno@clisp.org>
+
+ * mountlist.c [MOUNTED_GETMNTINFO2]: Include sys/statvfs.h.
+ (ME_DUMMY): Treat "kernfs" as a dummy.
+ (read_file_system_list) [MOUNTED_GETMNTINFO2]: Implement.
+
+2006-08-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * ChangeLog: Add copyright notice.
+ * .gdb-history: Likewise.
+ * TODO: Likewise.
+ * __fpending.h: Likewise.
+ * fdopendir-glibc.c: Likewise.
+ * fprintftime.h: Likewise.
+ * root-dev-ino.h: Likewise.
+ * search_.h: Likewise.
+ * t-chdir-long: Likewise.
+ * t-fpending.c: Likewise.
+ * savedir.c: Use (C) in copyright notice.
+ * savedir.h: Likewise.
+
+2006-08-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * memcoll.c (memcoll): Set errno = 0 in the shortcut case, too.
+ Problem and fix reported by Pádraig Brady in
+ <http://lists.gnu.org/archive/html/bug-coreutils/2006-08/msg00099.html>.
+
+2006-08-16 Jim Meyering <jim@meyering.net>
+
+ * fts.c (fts_children): Remove obsolete "// FIXME ..." comment.
+ Reported by Bruno Haible.
+
+2006-08-15 Jim Meyering <jim@meyering.net>
+
+ * at-func.c: New file, with the logic of all emulated at-functions.
+ * openat-priv.h: Include <errno.h> and define ENOSYS,
+ in support of the EXPECTED_ERRNO macro.
+ * openat.c (fstatat, unlinkat, fchownat): Remove function definitions.
+ Instead, define the appropriate symbols and include "at-func.c".
+ * mkdirat.c (mkdirat): Likewise.
+ * fchmodat.c (fchmodat): Likewise.
+ (ENOSYS): Remove definition.
+ * openat.c: Don't include <errno.h>, now that "openat-priv.h" does it.
+ Don't include "unistd--.h" -- it wasn't ever used.
+
+2006-08-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * memcoll.c (memcoll): Optimize for the common case where the
+ arguments are bytewise equal.
+
+2006-08-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * pipe-safer.c (pipe_safer): Fix misspelling: HAVE_FUNC_PIPE ->
+ HAVE_PIPE. Fix a file descriptor leak when fd_safer fails.
+
+ * regex_internal.c (re_string_skip_chars): Don't assume WEOF fits
+ in wchar_t. Problem reported by Eric Blake.
+
+ * snprintf.c (snprintf): memcpy LEN bytes, not SIZE - 1, when
+ LEN is smaller than SIZE. Suggested by Bruno Haible.
+ Also, help the compiler to keep LEN in a register.
+
+2006-08-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ Import the following changes from libc:
+
+ 2006-06-02 Jakub Jelinek <jakub@redhat.com>
+
+ * posix/regex_internal.c (re_string_skip_chars): If no character has
+ been converted at all, set *last_wc to WEOF. If mbrtowc failed, set wc
+ to the byte which couldn't be converted.
+ (re_string_reconstruct): Don't clear valid_raw_len before calling
+ re_string_skip_chars. If wc is WEOF after re_string_skip_chars, set
+ tip_context using re_string_context_at.
+
+ 2006-05-02 Ulrich Drepper <drepper@redhat.com>
+
+ * posix/regex.h: g++ still cannot handled [restrict].
+
+ 2006-04-21 Ulrich Drepper <drepper@redhat.com>
+
+ * posix/regex.h: Remove special handling for VMS.
+
+ Accommodate new getaddrinfo implementation in gnulib.
+ * inet_ntop.c, inet_ntop.h, snprintf.c, snprintf.h, socket_.h:
+ New files, from gnulib.
+ * .cppi-disable: Add snprintf.h, socket_.h.
+ * Makefile.am (libcoreutils_a_SOURCES): Add inet_ntop.h, snprintf.h.
+ (MOSTLYCLEANDIRS): New macro.
+ (BUILT_SOURCES): Add $(ARPA_INET_H), $(SYS_SOCKET_H), $(NETINET_IN_H).
+ (arpa/inet.h, netinet/in.h, sys/socket.h): New rules.
+ (MOSTLYCLEANFILES): Add arpa/inet.h, arpa/inet.h-t, netinet/in.h,
+ netinet/in.h-t, sys/socket.h, sys/socket.h-t.
+ (EXTRA_DIST): Add socket_.h.
+
+2006-08-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * allocsa.h, config.charset, error.c, error.h, exitfail.c, full-write.c:
+ * getaddrinfo.c, getaddrinfo.h, gettext.h, localcharset.c, mbchar.h:
+ * mbswidth.c, mkstemp-safer.c, pipe-safer.c, printf-args.c, quote.c:
+ * readlink.c, regex_internal.h, setenv.c, stdint_.h, stdio--.h:
+ * stdio-safer.h, stpcpy.c, strcspn.c, strtoimax.c, vasnprintf.h:
+ * version-etc.c, wcwidth.h:
+ Update from gnulib.
+
+2006-08-09 Jim Meyering <jim@meyering.net>
+
+ * rand-isaac.c: Include <config.h>.
+
+2006-08-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.am (libcoreutils_a_SOURCES): Add xmemxfrm.c, xmemxfrm.h.
+ * memxfrm.c, memxfrm.h, randint.c, randint.h, randperm.c, randperm.h:
+ * randread.c, randread.h, xmemxfrm.c, xmemxfrm.h: New files.
+ * rand-isaac.h: New file.
+ * rand-isaac.c: New file, mostly taken from ../src/rand-isaac.c.
+
+2006-07-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * modechange.c (mode_compile): Numeric modes now affect setuid and
+ setgid on directories only if they set these bits.
+ * modechange.h: Remove obsolete comment about masks.
+
+2006-07-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * close-stream.c, close-stream.h: New files.
+ * closeout.c (close_stdout): Use new function close_stream.
+
+2006-07-19 Mike Frysinger <vapier@gentoo.org>
+
+ * mountlist.c [ME_REMOTE]: Filter out cifs.
+ Reported by Toralf Förster in <http://bugs.gentoo.org/141012>.
+
+2006-07-20 Jim Meyering <jim@meyering.net>
+
+ * mountlist.c (ME_REMOTE): Compare strchr's result to NULL, not 0,
+ for better readability.
+
+2006-07-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * dirchownmod.c, dirchownmod.h, mkancesdirs.c, mkancesdirs.h:
+ New files.
+ * mkdir-p.c: Don't include alloca.h, stdio.h, sys/types.h,
+ unistd.h, string.h, chdir-safer.h, dirname.h, lchmod.h, lchown.h,
+ save-cwd.h. Instead, include dirchownmod.h and mkancesdirs.h.
+ (make_dir_parents): New args MAKE_ANCESTOR, OPTIONS, ANNOUNCE,
+ MODE_BITS. Remove options VERBOSE_FMT_STRING, CWD_ERRNO. All
+ callers changed. Revamp internals significantly, by not
+ attempting to create directories that are temporarily more
+ permissive than the final results. Do not attempt to use
+ save_cwd/restore_cwd; it isn't worth it for mkdir and install.
+ This removes some race conditions, fixes some bugs, and simplifies
+ things. Use new dirchownmod function to do owner and mode changes.
+ * mkdir-p.h: Likewise.
+ * modechange.c (octal_to_mode): New function.
+ (struct mode_change): New member mentioned.
+ (make_node_op_equals): New arg mentioned. All callers changed.
+ (mode_compile): Keep track of which mode bits the user has explicitly
+ mentioned.
+ (mode_adjust): New arg DIR, so that we implement the X op correctly.
+ New arg PMODE_BITS, to keep track of which mode bits the user
+ mentioned; it treats S_ISUID and S_ISGID speciall.
+ All callers changed.
+ * modechange.h: Likewise.
+
+2006-07-16 Jim Meyering <jim@meyering.net>
+
+ * userspec.c (parse_with_separator): Say "invalid spec" rather than
+ the sometimes erroneous "cannot get the login group of a numeric UID"
+ for a spec like "not-a-username:" or "1:". Reported by
+ suckfish@ihug.co.nz in https://bugzilla.redhat.com/bugzilla/199027.
+
+2006-07-10 Derek R. Price <derek@ximbiot.com>
+
+ * backupfile.c, dirfd.h, fts.c, getcwd.c:
+ Ignore the obsolescent !HAVE_DIRENT_H case. Consolidate NAMLEN
+ macros into the GNU _D_EXACT_NAMLEN.
+ * savedir.c: Likewise.
+ (savedirstream): Use _D_EXACT_NAMLEN in preference to strlen.
+
+2006-07-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.am (stdint.h): FULL_PATH_STDINT_H -> ABSOLUTE_STDINT_H,
+ to accommodate update from gnulib.
+
+ Update from gnulib, as follows:
+
+ 2006-07-06 Jim Hyslop <jhyslop@dreampossible.ca> (tiny change)
+
+ * getaddrinfo.c: Changes to compile under MSVC6: changed
+ '#if WIN32_NATIVE' to '#ifdef' & moved WSAAPI macro inside
+ brackets. Other minor changes to suppress some compiler
+ warnings.
+
+ 2006-07-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getloadavg.c: Use __VMS, not VMS.
+ * getopt.c: Likewise.
+ * getpagesize.h: Likewise.
+
+ 2006-07-06 Derek R. Price <derek@ximbiot.com>
+ and Paul Eggert <eggert@cs.ucla.edu>
+
+ * backupfile.c [HAVE_DIRENT_H && ! HAVE_NDIR_H]:
+ Don't worry about this obsolete case any more.
+ (HAVE_DIR): Remove. All uses removed; we now assume you can read
+ directories.
+ * dirfd.h [HAVE_DIRENT_H && ! HAVE_NDIR_H]: Don't
+ worry about this obsolete case any more.
+ * fts.c: Likewise.
+ * getcwd.c: Likewise.
+ * savedir.c: Likewise.
+
+ 2006-07-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * fnmatch.c (ISBLANK): Remove. All uses changed to isblank.
+ (isblank) [! (defined isblank || HAVE_DECL_ISBLANK)]: New macro.
+ (ISGRAPH): Remove. All uses changed to isgraph.
+ (FOLD) [!defined _LIBC]: Remove special case.
+ * getdate.y (lookup_word): Remove no-longer-needed call to islower.
+ * regext_internal.h (isblank): Depend on HAVE_DECL_ISBLANK, not
+ HAVE_ISBLANK.
+ * strftime.c (TOLOWER, TOUPPER) [!defined _LIBC]: Remove special case.
+
+ 2006-07-06 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * strtod.c (strtod): cast the argument of tolower to unsigned char.
+
+ 2006-07-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * memcasecmp.c: Include <limits.h>.
+ (memcasecmp): Don't assume UCHAR_MAX <= INT_MAX.
+ * strtod.c (strtod): Don't assume isspace works on negative chars.
+ Don't assume isdigit succeeds only on '0' through '9'.
+
+ 2006-07-05 Derek R. Price <derek@ximbiot.com>
+
+ * exclude.c (IN_CTYPE_DOMAIN, is_space): Remove; no longer needed.
+ All uses of is_space replaced by isspace.
+ * exit.h: Don't talk about STDC_HEADERS.
+ * fnmatch.c (ISASCII): Remove; no longer needed. All uses removed.
+ (ISPRINT, ISDIGIT, ISALNUM, ISALPHA, ISCNTRL, ISLOWER, ISPUNCT):
+ (ISSPACE, ISUPPER, ISXDIGIT): Remove; no longer needed. All uses
+ replaced by isprint etc.
+ * getdate.y (IN_CTYPE_DOMAIN, ISSPACE, ISALPHA, ISLOWER): Likewise.
+ * getusershell.c (IN_CTYPE_DOMAIN, ISSPACE): Likewise.
+ * memcasecmp.c (IN_CTYPE_DOMAIN, ISLOWER, TOUPPER): Likewise.
+ * strtod.c (IN_CTYPE_DOMAIN, ISSPACE, ISDIGIT, TOLOWER): Likewise.
+ * strtol.c (IN_CTYPE_DOMAIN): Likewise.
+ * xstrtol.c (IN_CTYPE_DOMAIN, ISSPACE): Likewise.
+
+ 2006-07-05 Eric Blake <ebb9@byu.net>
+
+ * getaddrinfo.h (NI_NUMERICHOST, NI_NUMERICSERV): Define if
+ missing from netdb.h.
+ * getaddrinfo.c (includes): Include inet_ntop and snprintf.
+
+ 2006-06-27 Bruno Haible <bruno@clisp.org>
+
+ Assume ANSI C header files and <ctype.h> functions.
+ * mbswidth.c (IN_CTYPE_DOMAIN, ISPRINT, ISCNTRL): Remove macros.
+ (mbsnwidth): Use isprint, iscntrl instead.
+
+2006-07-08 Jim Meyering <jim@meyering.net>
+
+ * getndelim2.h (getndelim2): Remove doubled "after" in comment.
+
+2006-07-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.am (libcoreutils_a_SOURCES): Add setenv.h, wcwidth.h,
+ to accommodate sync from gnulib.
+
+ Sync from gnulib.
+
+ 2006-06-30 Jim Hyslop <jhyslop@dreampossible.ca> (tiny change)
+
+ * getaddrinfo.c: fixed typo
+
+ 2006-06-28 Bruno Haible <bruno@clisp.org>
+
+ * getaddrinfo.h: Fix POSIX URL.
+ * getaddrinfo.c (WIN32_NATIVE): New macro. Use it instead of _WIN32.
+ (use_win32_p): Make static.
+ (getaddrinfo): Reject service name if it is empty or does not consist
+ solely of decimal digits, or if its value is > 65535.
+ (getnameinfo): Remove useless casts.
+
+ 2006-06-28 Eric Blake <ebb9@byu.net>
+
+ * mbchar.h (wcwidth): Include wcwidth.h.
+ * mbswidth.c (wcwidth): Move from here...
+ * wcwidth.h: ...to this new file.
+
+ 2006-06-28 Simon Josefsson <jas@extundo.com>
+
+ * getaddrinfo.c: Try to load ws2_32.dll on Windows, to find the
+ functions there. It will succeed on Windows XP, but on Windows
+ 2000 and (presumably) earlier, it will fail, and use the internal
+ re-implementation.
+ (use_win32_p): New function.
+ (getaddrinfo): Use strtoul on servname, to support numeric ports.
+ Support AI_NUMERICSERV to disable getservbyname.
+ (getnameinfo): New function, only supports
+ NI_NUMERICHOST|NI_NUMERICSERV for now.
+
+ * getaddrinfo.h: Test and check for AI_* flags separately, MinGW
+ only have some of them. Add AI_NUMERICSERV. Add prototype for
+ getnameinfo.
+
+ 2006-06-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * base64.c (B64): Use _ as the formal parameter, not x, to avoid
+ bug in IBM C V6 for AIX. Problem reported by Larry Jones in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2006-06/msg00181.html>.
+
+ 2006-06-21 Simon Josefsson <jas@extundo.com>
+
+ * getaddrinfo.c (getaddrinfo): Set ai_family in the return
+ variable.
+
+ 2006-06-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * alloca_.h (alloca) [defined alloca]: Don't define or declare.
+
+ 2006-06-16 Eric Blake <ebb9@byu.net>
+
+ * unsetenv.c [!defined errno]: Assume errno.h declares errno.
+ * unicodeio.c [!defined errno]: Likewise.
+ * strtol.c [!defined errno]: Likewise.
+ * strtod.c [!defined errno]: Likewise.
+
+ 2006-05-26 Martin Lambers <marlam@marlam.de>
+
+ * getpass.c: Updates the test for the native W32 API, and adds
+ missing includes, thus fixing compilation warnings.
+
+ 2006-05-25 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ * exclude.c (exclude_fnmatch): New function.
+ (excluded_file_name): Call exclude_fnmatch.
+ * exclude.h (excluded_file_name): New prototype
+
+ 2006-05-19 Jim Meyering <jim@meyering.net>
+
+ * getugroups.c: Correct an outdated comment. From Bruno Haible.
+
+ 2006-05-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * sha1.c (rol): Cast right-shift arg to uint32_t to prevent
+ unwanted sign propagation, e.g., on hosts with 64-bit int.
+ There still are some problems with reeelly weird theoretical hosts
+ (e.g., 33-bit int) but it's not worth worrying about now.
+ (K1, K2, K3, K4): Remove unnecessary L suffix.
+
+ 2006-03-24 Simon Josefsson <jas@extundo.com>
+
+ * base64.c: Fix problems reported by Eric Blake <ebb9@byu.net>,
+ including some doc fixes.
+ (base64_encode_alloc): Fix +1 bug on allocation failures.
+
+ 2006-03-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * base64.c (base64_encode): Do not read past end of array with
+ unsanitized input on systems with CHAR_BIT > 8.
+
+ 2006-03-24 Eric Blake <ebb9@byu.net>
+
+ * time_r.c (copy_string_result): Remove, as it is no longer used.
+
+2006-07-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stdint_.h: Include <sys/types.h> after @FULL_PATH_STDINT_H@, for
+ MacOS X 10.4.6. Don't mention <sys/int_types.h>. Problems
+ reported by Mark D. Baushke, one in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2006-07/msg00015.html>.
+
+2006-07-03 Jim Meyering <jim@meyering.net>
+
+ * cycle-check.h (CYCLE_CHECK_REFLECT_CHDIR_UP): Abort if this
+ macro is used before the first cycle_check call.
+
+2006-07-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stdint_.h (intmax_t, uintmax_t): Prefer long to long long if
+ both are 64 bits, since this seems to be the tradition, and this
+ prevents gcc -Wformat from warning about usages with PRIuMAX. If
+ we ever run into a host that prefers long long to long in this
+ case, we'll need another configure-time test. Problem reported by
+ Jim Meyering.
+
+2006-07-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.am (stdint.h): Sync from gnulib.
+ * stdint_.h: Sync from gnulib.
+
+2006-06-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * xstrtod.c (XSTRTOD, DOUBLE): New macros, so that we can support
+ both double and long double versions.
+ (XSTRTOD): Renamed from xstrtod. Use DOUBLE internally.
+ * xstrtold.c: New file.
+ * xstrtod.h (xstrtold): New decl.
+
+2006-06-29 Derek R. Price <derek@ximbiot.com>
+
+ * strftime.c: Assume strftime exists.
+
+2006-06-28 Derek R. Price <derek@ximbiot.com>
+
+ * savedir.c (CLOSEDIR): Remove. All uses changed to closedir.
+ Autoconf 2.60 says this stuff was obsolete.
+
+2006-06-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * openat.c (openat): Use ?:, not if, to work around GCC bug 4210
+ <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=4210>.
+ Problem reported by Denis Excoffier in
+ <http://lists.gnu.org/archive/html/bug-tar/2006-06/msg00023.html>.
+
+2006-06-19 Jim Meyering <jim@meyering.net>
+
+ Apply this change from gnulib:
+ 2006-06-16 Eric Blake <ebb9@byu.net>
+ * unsetenv.c [!defined errno]: Assume errno.h declares errno.
+
+2006-06-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getdate.y (__attribute__): Don't define if already defined.
+ Problem reported by Larry Jones.
+ * utimens.c (__attribute__): Likewise.
+
+2006-06-10 Jim Meyering <jim@meyering.net>
+
+ Apply this change from gnulib:
+
+ 2006-05-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+ Bruno Haible <bruno@clisp.org>
+
+ * strndup.c (strndup) [!_LIBC]: Don't undefine macro definition.
+
+2006-06-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regexec.c (group_nodes_into_DFAstates): Fix a buffer overrun
+ reported by Andreas Schwab.
+
+2006-05-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tempname.c (small_open, large_open): New macros.
+ (__open, __open64) [!_LIBC]: Remove.
+ (__gen_tempname): Use small_open and large_open instead of __open
+ and __open64. This fixes a portability bug on HP-UX 11.11i
+ reported by Simon Wing-Tang in
+ <http://lists.gnu.org/archive/html/bug-coreutils/2006-05/msg00114.html>.
+
+2006-05-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * filemode.c: Don't include <string.h>; this include was
+ inadvertently put into the previous patch. Problem noted
+ by Jim Meyering.
+
+2006-05-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * filemode.c (setst): Remove.
+ (strmode): Rewrite to avoid setst. This makes the code shorter,
+ (arguably) clearer, and the generated code is a bit smaller on my
+ Debian GNU/Linux stable x86 host.
+
+ Import from gnulib.
+ * verify.h: Document the internals better. Most of this change
+ was written by Bruno Haible.
+
+2006-05-21 Jim Meyering <jim@meyering.net>
+
+ * fts.c (fts_open): Fail with EINVAL if a caller violates this rule:
+ Either FTS_LOGICAL or FTS_PHYSICAL must be provided to the
+ fts_open() function.
+
+2006-05-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * nanosleep.c [HAVE_SYS_SELECT_H]: Include <sys/select.h>.
+ Use the usual Autoconf way to include <time.h> and/or sys/time.h.
+ (my_usleep): Don't mishandle maximum value.
+
+2006-05-15 Jim Meyering <jim@meyering.net>
+
+ Avoid the expense of an fstat, when possible.
+ * fts.c (O_NOFOLLOW, STREQ): Define.
+ (diropen_fd): Remove function. Merge it into sole caller...
+ (diropen): ...here. Use O_NOFOLLOW when appropriate.
+ (fts_safe_changedir): Call fstat for dev/inode check, only if the
+ previous open/openat call may have opened the wrong directory.
+
+2006-05-13 Jim Meyering <jim@meyering.net>
+
+ * xfts.c (xfts_open): Always use FTS_CWDFD.
+
+ Restore the parts of fts that were removed on 2006-01-17, so that
+ it's easier for legacy applications designed for the version
+ of fts in glibc or BSD to convert to this more robust version.
+ Add a new mode, FTS_CWDFD, by which to enable the improved
+ (openat- based -- aka no-chdir) semantics.
+ * fts_.h (FTS_CWDFD): Define. Callers must use this fts_open
+ option to enable the more robust behavior.
+ (FTS_OPTIONMASK): Widen accordingly.
+ * fts.c: Restore removed code, reverting the default behavior.
+
+2006-05-11 Jim Meyering <jim@meyering.net>
+
+ * sha1.c (sha1_buffer): Correct comment: s/MD5/SHA1/. From James Lemley.
+
+2006-04-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getdate.y (get_date): When adding relative date, start with the
+ initial time, not with the result of the first mktime call.
+
+2006-04-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * filemode.c: Include "filemode.h" first, to test the interface.
+ Assume that filemode.h includes sys/types.h and sys/stat.h.
+ (HAVE_ST_DM_MODE): New macro, moved here from ls.c.
+ (ftypelet): Reorder to put common cases first, for efficiency.
+ Add 'P', 'w'. Remove 'M', since it's now the caller's responsibility
+ to do 'M'.
+ (strmode): Renamed from mode_string, and now stores 12 bytes instead
+ of 10, for compatibility with FreeBSD. All callers changed.
+ (filemodestring): Now stores 12 bytes instead of 10, and sets file types
+ that can't be deduced solely from st_mode. First arg is now a const
+ pointer.
+ * filemode.h (HAVE_DECL_STRMODE): Include <string.h> for strmode.
+ (strmode): Renamed from mode_string.
+ (filemodestring): New decl.
+ * stat-macros.h: Don't undef S_ISDOOR, since it's never buggy.
+ (S_ISDOOR): Don't bother with S_IFDOOR, since that code is never needed.
+ (S_ISPORT, S_ISWHT): New macros, if not already defined.
+
+ * openat.h (openat_needs_fchdir) [ ! defined __OPENAT_PREFIX]:
+ Turn this into a macro that always returns false.
+
+2006-04-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * utimens.c (futimens): glibc futimesat messes up if /proc
+ isn't mounted. Problem reported by Kir Kolyshkin.
+
+2006-04-14 Jim Meyering <jim@meyering.net>
+
+ Remove unreachable code and plug leaks in code that handles degenerate
+ input and some failure cases.
+ * fts.c (fts_build): #if-0-out a block of unused code. Patch from glibc.
+ (fts_build): Remove just-#if-0'd code and the code that
+ declares and sets cderrno.
+ (fts_build): Free `head' before returning NULL, in two places,
+ to avoid leaks. Patch from glibc.
+ (fts_open): Don't allocate parent if *argv==NULL. Patch from glibc.
+
+2006-04-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regcomp.c (init_dfa): Don't use wchar_t or wctype_t if RE_ENABLE_I18N
+ is not defined. Problem reported by Mark D. Baushke via Derek R. Price.
+ * regex.h (RE_DUP_MAX): Update comment to match current implementation.
+
+2006-04-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * fsusage.c: Don't include <inttypes.h> or <stdint.h>, since
+ fsusage.h now does that. Include fsusage.h first, to test interface.
+ Prefer statvfs if it works, since it's blessed by POSIX. Attempt
+ at most one method (the old code could have generated decls that
+ didn't conform to C89, not that this was ever exercised).
+ * fsusage.h: Include <inttypes.h> and <stdint.h> if they exist.
+
+2006-04-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ Merge regex changes from libc, removing some of our
+ POSIX-conformance changes that were rejected and redoing them in a
+ less-intrusive way.
+
+ * regcomp.c (re_compile_internal, init_dfa):
+ Length arg is now size_t, not Idx. All uses changed.
+ (peek_token): Forward decl now says internal_function.
+ (__re_error_msgid, __re_error_msgid_idx):
+ Now static rather than extern with attribute_hidden.
+ (re_compile_pattern) [!defined _LIBC]: Use K&R-style defn.
+ For some reason libc prefers K&R style defns for external functions.
+ (regerror) [!defined _LIBC]: Likewise.
+ (re_set_syntax, re_compile_fastmap, regcomp, regfree, re_comp):
+ (seek_collating_symbol_entry, lookup_collation_sequence_value):
+ (build_range_exp, build_collating_symbol):
+ Use K&R-style defn.
+ (re_compile_fastmap): Use '\0' to memset, not 0.
+ (utf8_sb_map): Make the calculations more obvious.
+ (init_dfa, parse_bracket_exp, build_charclass_op):
+ Call calloc and cast result, as glibc does.
+ (init_word_char, fetch_token, peek_token, peek_token_bracket):
+ (build_range_exp, build_collating_symbol):
+ Now internal functions.
+
+ * regex.c [!defined _LIBC]: Allow compiling with C++ compilers.
+
+ * regex.h (__USE_GNU_REGEX): New macro. Don't depend on
+ _REGEX_SOURCE any more; depend on _GNU_SOURCE instead.
+ Don't depend on VMS; depend on __VMS instead, for POSIX
+ namespace cleanness.
+ (regoff_t): Define to ssize_t, not long int.
+
+ Remove the REG_ macros named below. Instead, make the old names
+ (e.g., RE_BACKSLASH_ESCAPE_IN_LISTS) visible only if
+ __USE_GNU_REGEX.
+ (REG_BACKSLASH_ESCAPE_IN_LISTS):
+ (REG_BK_PLUS_QM, REG_CHAR_CLASSES, REG_CONTEXT_INDEP_ANCHORS):
+ (REG_CONTEXT_INDEP_OPS, REG_CONTEXT_INVALID_OPS):
+ (REG_DOT_NEWLINE, REG_DOT_NOT_NULL, REG_HAT_LISTS_NOT_NEWLINE):
+ (REG_INTERVALS, REG_LIMITED_OPS, REG_NEWLINE_ALT):
+ (REG_NO_BK_BRACES, REG_NO_BK_PARENS, REG_NO_BK_REFS):
+ (REG_NO_BK_VBAR, REG_NO_EMPTY_RANGES):
+ (REG_UNMATCHED_RIGHT_PAREN_ORD, REG_NO_POSIX_BACKTRACKING):
+ (REG_NO_GNU_OPS, REG_DEBUG, REG_INVALID_INTERVAL_ORD):
+ (REG_IGNORE_CASE, REG_CARET_ANCHORS_HERE):
+ (REG_CONTEXT_INVALID_DUP, REG_NO_SUB, REG_SYNTAX_EMACS):
+ (REG_SYNTAX_AWK, REG_SYNTAX_GNU_AWK, REG_SYNTAX_POSIX_AWK):
+ (REG_SYNTAX_GREP, REG_SYNTAX_EGREP, REG_SYNTAX_POSIX_EGREP):
+ (REG_SYNTAX_ED, REG_SYNTAX_SED, _REG_SYNTAX_POSIX_COMMON):
+ (REG_SYNTAX_POSIX_BASIC, REG_SYNTAX_POSIX_MINIMAL_BASIC):
+ (REG_SYNTAX_POSIX_EXTENDED, REG_SYNTAX_POSIX_MINIMAL_EXTENDED):
+ (REG_DUP_MAX, REG_UNALLOCATED, REG_REALLOCATE, REG_FIXED):
+ (REG_NREGS):
+ Remove. All uses replaced by the old RE_* names.
+ (RE_BACKSLASH_ESCAPE_IN_LISTS):
+ (RE_BK_PLUS_QM, RE_CHAR_CLASSES, RE_CONTEXT_INDEP_ANCHORS):
+ (RE_CONTEXT_INDEP_OPS, RE_CONTEXT_INVALID_OPS):
+ (RE_DOT_NEWLINE, RE_DOT_NOT_NULL, RE_HAT_LISTS_NOT_NEWLINE):
+ (RE_INTERVALS, RE_LIMITED_OPS, RE_NEWLINE_ALT):
+ (RE_NO_BK_BRACES, RE_NO_BK_PARENS, RE_NO_BK_REFS):
+ (RE_NO_BK_VBAR, RE_NO_EMPTY_RANGES):
+ (RE_UNMATCHED_RIGHT_PAREN_ORD, RE_NO_POSIX_BACKTRACKING):
+ (RE_NO_GNU_OPS, RE_DEBUG, RE_INVALID_INTERVAL_ORD):
+ (RE_IGNORE_CASE, RE_CARET_ANCHORS_HERE):
+ (RE_CONTEXT_INVALID_DUP, RE_NO_SUB):
+ Don't bother having these macros be independent of each others'
+ values, since they no longer exist in the POSIX name space.
+
+ Rename the following member names back to their old names,
+ unless !__USE_GNU_REGEX. All uses changed back.
+ (buffer): Renamed from re_buffer.
+ (allocated): Renamed from re_allocated.
+ (used): Renamed from re_used.
+ (syntax): Renamed from re_syntax.
+ (fastmap): Renamed from re_fastmap.
+ (translate): Renamed from re_translate.
+ (can_be_null): Renamed from re_can_be_null.
+ (regs_allocated): Renamed from re_regs_allocated.
+ (fastmap_accurate): Renamed from re_fastmap_accurate.
+ (no_sub): Renamed from re_no_sub.
+ (not_bol): Renamed from re_not_bol.
+ (not_eol): Renamed from re_not_eol.
+ (newline_anchor): Renamed from re_newline_anchor.
+ (num_regs): Renamed from rm_num_regs.
+ (start): Renamed from rm_start.
+ (end): Renamed from rm_end.
+
+ (free_state): Move up a bit.
+
+ * regex_internal.h (inline) [__GNUC__ < 3 && defined _LIBC]:
+ #define to be empty.
+ (ASCII_CHARS): New macro, replacing all uses of 0x80 and/or SBC_MAX / 2
+ when that is what is intended.
+ (SBC_MAX): Define to UCHAR_MAX + 1, not 256.
+ (__re_error_msgid, __re_error_msgid_idx): Remove decls; not needed.
+ (MAX): New macro.
+ (re_xmalloc, re_calloc, re_xrealloc, re_x2realloc): Remove.
+ All uses changed back to re_malloc, etc. It's now the caller's
+ responsibility to check for overflow; all callers changed.
+ (re_alloc_oversized, re_x2alloc_oversized, re_xnmalloc, re_xnrealloc):
+ (re_x2nrealloc): Remove.
+ (free_state): Remove decl.
+
+ * regexc.c (regexec, re_match, re_search, re_match_2, re_search_2):
+ (re_set_registers, re_exec):
+ Use K&R-style defn.
+
+ 2006-01-31 Roland McGrath <roland@redhat.com>
+
+ * regcomp.c (calc_eclosure_iter): Remove dead variables.
+ Reported by Mike Frysinger <vapier@gentoo.org>.
+
+ 2006-01-15 Andreas Jaeger <aj@suse.de>
+
+ [BZ #1950]
+ * regex_internal.c (re_string_reconstruct): Adjust for
+ build_wcs_upper_buffer change.
+ (build_wcs_upper_buffer): Change return type.
+
+ 2005-12-10 Ulrich Drepper <drepper@redhat.com>
+
+ * regex_internal.h: Include <stdint.h> if available.
+
+ 2005-12-06 Paolo Bonzini <bonzini@gnu.org>
+
+ * regex_internal.h (SIZE_MAX): Provide a default definition.
+
+ 2005-10-14 Ulrich Drepper <drepper@redhat.com>
+
+ * regcomp.c: Adjust for changed secondary hash function.
+
+ 2005-09-30 Ulrich Drepper <drepper@redhat.com>
+
+ * regex.h: Pretty printing.
+ Clean up namespace a bit.
+
+ 2005-09-30 Jakub Jelinek <jakub@redhat.com>
+
+ * regexec.c (update_cur_sifted_state, check_arrival,
+ check_arrival_add_next_nodes): Avoid using uninitialized variable.
+
+ 2005-09-06 Paul Eggert <eggert@cs.ucla.edu>
+ Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #1302]
+ * regex_internal.h (bitset_t): Renamed from bitset. All uses changed.
+ (bitset_word_t): Renamed from bitset_word. All uses changed.
+
+ 2005-09-22 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #281]
+ * regex.h: Define RE_TRANSLATE_TYPE as unsigned char *.
+ * regcomp.c: Remove unnecessary uses of
+ unsigned RE_TRANSLATE_TYPE.
+ * regex_internal.h: Likewise.
+ * regex_internal.c: Likewise.
+ * regexec.c: Likewise.
+ Based on a patch by Stepan Kasal <kasal@ucw.cz>.
+
+ 2005-09-07 Ulrich Drepper <drepper@redhat.com>
+
+ * regexec.c (find_recover_state): Remove unnecessary
+ initialization.
+ (transit_state_bkref): Make DFA a const pointer.
+ (get_subexp): Likewise.
+ (check_arrival): Likewise.
+ (update_cur_sifted_state): Likewise.
+ (re_search_internal): Likewise.
+ (prune_impossible_nodes): Likewise.
+ (acquire_init_state_context): Likewise.
+ (proceed_next_node): Likewise.
+ (set_regs): Likewise.
+ (free_fail_stack_return): Likewise.
+ (check_arrival_expand_ecl): Mark DFA parameter as const.
+ (check_arrival_expand_ecl_sub): Likewise.
+ (check_subexp_limits): Likewise.
+ (sub_epsilon_src_nodes): Likewise.
+ (add_epsilon_src_nodes): Likewise.
+ (merge_state_array): Likewise.
+ (update_regs): Likewise.
+ (build_trtable): Likewise.
+ (sift_states_backward): Mark MCTX parameter as const.
+ (build_sifted_states): Likewise.
+ (update_cur_sifted_state): Likewise.
+ (sift_states_mkref): Likewise.
+ (check_arrival_expand_ecl): Mark eclosure as const.
+ (check_dst_limits_calc_pos_1): Likewise.
+ * regex_internal.h (re_match_context_t): Make dfa a const
+ pointer.
+
+ 2005-09-06 Ulrich Drepper <drepper@redhat.com>
+
+ * regexec.c (merge_state_with_log): Define dfa as const pointer.
+ (transit_state_sb): Likewise.
+ (transit_state_mb): Likewise.
+ (sift_states_iter_mb): Likewise.
+ (check_arrival_add_next_nodes): Likewise.
+ (check_node_accept_bytes): Change first parameter to pointer-to-const.
+ [_LIBC] (re_search_2_stub): Use mempcpy.
+
+ * regex_internal.c (re_string_reconstruct): Avoid calling
+ mbrtowc for very simple UTF-8 case.
+
+ * regex_internal.c (re_acquire_state): Make DFA pointer arg
+ a pointer-to-const.
+ (re_acquire_state_context): Likewise.
+ * regex_internal.h: Adjust prototypes.
+
+ * regex.c: Prevent using C++ compilers.
+
+ * regex_internal.c (re_acquire_state): Minor code rearrangement.
+ (re_acquire_state_context): Likewise.
+
+2006-03-11 Eric Blake <ebb9@byu.net>
+
+ * same.c (same_name): s/base_name/last_component/
+ * backupfile.c (check_extension, numbered_backup): Likewise.
+ * filenamecat.c (file_name_concat): Likewise.
+
+2006-03-11 Eric Blake <ebb9@byu.net>,
+ Paul Eggert <eggert@cs.ucla.edu>
+
+ * dirname.h (FILE_SYSTEM_PREFIX_LEN): Move here from dos.m4.
+ [FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX]: Don't treat 1: as a
+ drive prefix.
+ (IS_ABSOLUTE_FILE_NAME): Treat all drive letters as absolute on
+ platforms like cygwin with FILE_SYSTEM_DRIVE_PREFIX_IS_ABSOLUTE.
+ (last_component): New method.
+ * dirname.c (dir_len): Determine when drive letters need a
+ subsequent slash. Preserve // when it is special.
+ (dir_name): Don't append dot when drive letter is absolute.
+ [TEST_DIRNAME]: Move into a full-blown gnulib test.
+ * basename.c (base_name): New semantics - malloc the result.
+ Preserve // when it is special. Preserve relative files that look
+ like drive letters.
+ (base_len): Preserve // when it is special.
+ (last_component): New method, similar to old base_name semantics.
+ * stripslash.c (strip_trailing_slashes): Use last_component, not
+ base_name. Strip redundant slashes from ///.
+
+2006-03-19 Jim Meyering <jim@meyering.net>
+
+ Work even in a chroot where d_ino values for entries in "/"
+ don't match the stat.st_ino values for the same names.
+ * getcwd.c (__getcwd): When no d_ino value matches the target inode
+ number, iterate through all entries again, using lstat instead.
+ Reported by Kenshi Muto in http://bugs.debian.org/355810, and by
+ Zouhir Hafidi in https://bugzilla.redhat.com/bugzilla/190656.
+
+ * getcwd.c (__getcwd): Clarify a comment.
+ Use memcpy in place of a call to strcpy.
+
+2006-03-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regex.h (regoff_t) [defined _REGEX_LARGE_OFFSETS]:
+ Typedef to long int, not to off_, as POSIX will likely change
+ in that direction.
+
+2006-03-12 Jim Meyering <jim@meyering.net>
+
+ * fts-cycle.c (leave_dir): If cycle-check's saved dev-ino pair matches
+ that of the current directory (which we're about to chdir ".." out of),
+ then save the dev-ino of the parent, instead.
+
+ * same-inode.h (SAME_INODE): New file/macro.
+ * chdir-safer.c (SAME_INODE): Remove definition.
+ Include "same-inode.h", instead.
+ * same.c: Likewise.
+ * cycle-check.h: Include "same-inode.h".
+ (CYCLE_CHECK_REFLECT_CHDIR_UP): Define.
+ * cycle-check.c (SAME_INODE): Remove definition.
+ * root-dev-ino.h: Include "same-inode.h".
+
+2006-03-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.am (libcoreutils_a_SOURCES): Remove time_r.c, time_r.h,
+ as this is now done in m4.
+ * time_r.h (asctime_r, ctime_r): Remove. These functions can
+ overrun buffers and shouldn't be used (much as gets shouldn't be
+ used).
+ * time_r.c (asctime_r, ctime_r): Likewise.
+
+2006-02-17 Simon Josefsson <jas@extundo.com>
+
+ * base64.h, base64.c: New files.
+ * Makefile.am (libcoreutils_a_SOURCES): Add base64.h and base64.c.
+
+2006-02-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getcwd.c (AT_FDCWD): Work around a bug in Solaris 9 and 10, where
+ AT_FDCWD exceeds INT_MAX.
+ * openat.h (AT_FDCWD): Likewise.
+
+2006-02-17 Jim Meyering <jim@meyering.net>
+
+ * openat.c: Include lstat.h, so that uses of lstat are converted
+ to uses of rpl_lstat, e.g., on Solaris 9. Otherwise, programs like
+ du (which now uses the openat-enabled fts and hence fstatat) would
+ mistakenly fail to dereference a symlink-to-directory specified
+ with a trailing slash.
+
+2006-02-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * vasnprintf.c (VASNPRINTF): Rewrite the computation so that we
+ need not use xsum.
+
+2006-02-14 Bruno Haible <bruno@clisp.org>
+
+ Sync from gnulib.
+
+ * vasnprintf.c (VASNPRINTF): In the computation of the size of the
+ temporary buffer for sprintf, take into account the precision also
+ for 'd', 'i', 'u', 'o', 'x', 'X'.
+
+2006-02-14 Simon Josefsson <jas@extundo.com>
+
+ Sync from gnulib.
+
+ * getaddrinfo.h: Define EAI_ADDRFAMILY and EAI_SYSTEM if not set,
+ for mingw32.
+
+ * gai_strerror.c, getaddrinfo.h: Protect netdb.h #include (for
+ mingw32).
+
+2006-02-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * closeout.c (close_stdout): Don't assume 'bool' converts nonzero
+ ints to 0 or 1, as this isn't true for the stdbool.h substitute.
+
+2006-02-02 Jim Meyering <jim@meyering.net>
+
+ Eliminate the unwelcome (albeit unlikely) possibility of xmalloc
+ failure on deficient systems, and simplify gnulib lgpl dependencies.
+ * lstat.c (rpl_lstat): Rewrite to use stat() in place of the
+ xmalloc/lstat combination. Based on a patch from Bruno Haible.
+
+2006-01-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ * fnmatch.c (L_): Renamed from L, to work around a bug in
+ Mac OS X 10.3.9 with GCC 3 reported by Claudio Fontana in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2006-01/msg00074.html>.
+ All uses changed.
+
+2006-01-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stdbool_.h: Sync from gnulib.
+ Use signed char with all non-GCC compilers.
+
+2006-01-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stdbool_.h: Merge from gnulib; we still don't quite match exactly,
+ but we're getting closer.
+ (true, false) [defined __BEOS__]: undef, as before.
+ (_Bool) [!@HAVE__BOOL@ && defined __GNUC__]: Use an enum
+ rather than a #define.
+
+2006-01-25 Jim Meyering <jim@meyering.net>
+
+ * fileblocks.c: Remove useless parentheses in cpp directive.
+ * readutmp.h: Likewise.
+
+2006-01-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ Work around porting bugs reported by Dieter in
+ <http://lists.gnu.org/archive/html/bug-bison/2006-01/msg00049.html>.
+ * getopt.c (_NOPROTO): Remove; no longer needed.
+ Include <stdlib.h> and <unistd.h> in all environments; it's safe now.
+ Include "getopt.h" first, to check interface.
+ (getenv): Declare only if defined HAVE_DECL_GETENV &&
+ !HAVE_DECL_GETENV.
+ * strndup.c [!_LIBC]: Include "strndup.h" to get prototype.
+ (__strndup): Revert to K&R-style function dfns, the glibc style.
+ * strnlen.c: Don't claim it's taken from glibc; it's not.
+ (strnlen, __strnlen): Remove #defines and #undefs; not needed.
+ Include strnlen.h first, to get prototype properly.
+ (strnlen): Renamed from __strnlen.
+ Remove weak alias.
+
+2006-01-23 Ulrich Drepper <drepper@redhat.com>
+
+ These changes imported from libc.
+ * getopt.c: Use __fxprintf instead of inline stream orientation
+ test and two separate function calls.
+ * strndup.c (__strndup): Add libc_hidden_def.
+
+2006-01-23 Jim Meyering <jim@meyering.net>
+
+ * xalloc-die.c: Remove unused definition of N_.
+
+2006-01-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * quotearg.c (quotearg_buffer_restyled): Add "default: break;"
+ to pacify gcc -Wswitch-default.
+
+2006-01-17 Jim Meyering <jim@meyering.net>
+
+ Rewrite fts.c not to change the current working directory,
+ by using openat, fstatat, fdopendir, etc..
+
+ * fts.c [! _LIBC]: Include "openat.h" and "unistd--.h".
+ (HAVE_OPENAT_SUPPORT): Define.
+ [_LIBC] (fchdir): Don't undef or define; no longer used.
+ (FCHDIR): Define in terms of cwd_advance_fd rather than fchdir.
+ Now, this `function' always succeeds, and consumes its file descriptor
+ parameter -- so callers must not close such FDs. Update callers.
+ (diropen_fd, opendirat, cwd_advance_fd): New functions.
+ (diropen): Add parameter, SP. Adjust all callers.
+ Implement using diropen_fd, rather than open.
+ (fts_open): Initialize new member, fts_cwd_fd.
+ Remove fts_rft-setting code.
+ (fts_close): Close fts_cwd_fd, if necessary.
+ (__opendir2): Define in terms of opendir or opendirat,
+ depending on whether the FST_NOCHDIR flag is set.
+ (fts_build): Since fts_safe_changedir consumes its FD, and since
+ this code must do `closedir(dirp)', dup the dirfd(dirp) argument,
+ and close the dup'd file descriptor upon failure.
+ (fts_stat): Use fstatat(...AT_SYMLINK_NOFOLLOW) in place of lstat.
+ (fts_safe_changedir): Tweak semantics to reflect that this function
+ now calls cwd_advance_fd and hence consumes its FD argument.
+ * fts_.h [struct FTS] (fts_cwd_fd): New member.
+ [struct FTS] (fts_rft): Remove now-unused member.
+ [struct FTS] (fts_cycle.state): Improve comment.
+
+ * openat.c (openat_needs_fchdir): New function.
+ * openat.h (openat_needs_fchdir): Declare it.
+
+2006-01-12 Jim Meyering <jim@meyering.net>
+
+ * stdint_.h: Remove useless parentheses in cpp directives, so that
+ this file passes coreutils' `make syntax-check' tests.
+
+2006-01-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * .cvsignore: Add stdint.h.
+ * Makefile.am (BUILT_SOURCES, EXTRA_DIST, stdint.h, MOSTLYCLEANFILES):
+ Add gnulib snippet.
+ * md5.c: Fix commentary typos.
+ (alignof, UNALIGNED_P): No need for a GCC-specific version.
+ * md5.h (__attribute__): Remove; unused.
+ * sha1.c, sha256.c, sha256.c: Fix commentary to match md5 better.
+ * sha1.h (struct sha1_ctx): Use a word buffer, not a byte buffer,
+ so that we don't need to worry about alignment. All uses changed.
+ This merges the 2005-10-28 md5 change into sha1.
+ * sha256.h (struct sha256_ctx): Likewise.
+ * sha512.h (struct sha512_ctx): Likewise.
+ * sha256.h: Include stdint.h rather than md5.h.
+ * sha512.h: Include stdint.h uniformly, since we now have the
+ stdint module.
+ * stdint_.h: New file, from gnulib.
+
+2006-01-11 Jim Meyering <jim@meyering.net>
+
+ * fts.c (fts_stat): When following a symlink-to-directory,
+ don't necessarily interpret stat-fails+lstat-succeeds as indicating
+ a dangling symlink. That can also happen at least for ELOOP.
+ The fix: return FTS_SLNONE only when the stat errno is ENOENT.
+ FYI, this bug predates the inclusion of fts.c in coreutils.
+
+2006-01-11 Jim Meyering <jim@meyering.net>
+
+ * fts.c [!_LIBC]: Include "fcntl--.h", to map open to open_safer.
+ (fts_open): Put new (2006-01-04) maxarglen declaration and uses
+ in their own block, so pre-c99 compilers don't object.
+
+ * openat.c (fchownat): New function.
+ * openat.h (fchmodat, fchownat): Declare.
+ (chmodat, lchmodat): Define convenience functions.
+ (chownat, lchownat): Likewise.
+ * fchmodat.c (fchmodat): New file and function.
+
+ * md5.c (OP): Remove useless space-before-TAB.
+
+2006-01-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * localcharset.c, md5.c, md5.h, savedir.c, savedir.h, sha1.c, sha1.h
+ * strcasecmp.c, strncasecmp.c, verify.h, regex_internal.h:
+ Sync from gnulib.
+ * sha256.c, sha256.h, sha512.c, sha512.h:
+ Replace all instances of md5_uint32_t with uint32_t, to accommodate
+ gnulib change.
+
+2006-01-10 Jim Meyering <jim@meyering.net>
+
+ Avoid the double-free (first in fts_read, second in fts_close) that
+ would occur when an `active' directory is made inaccessible (e.g.,
+ via chmod a-x) during a traversal.
+ * fts.c (fts_read): After a failed fchdir, update sp->fts_cur
+ before returning. Reproduce this failure by
+ mkdir -p a/b; cd a; chmod a-x . b
+ Reported by Stavros Passas.
+
+2006-01-06 Jim Meyering <jim@meyering.net>
+
+ * version-etc.c (COPYRIGHT_YEAR): Update to 2006.
+
+2006-01-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ * strftime.c (tzname): Don't declare if it is already #defined.
+ Problem reported for Mingw by Mark Junker.
+
+2006-01-04 Jim Meyering <jim@meyering.net>
+
+ Merge from glibc.
+ * fts.c (fts_open): Avoid function call in MAX macro use.
+
+2006-01-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * xtime.h (xtime_make, xtime_nonnegative_nsec, xtime_nsec): Use
+ long int, not int, for nanosecond counts, so that people who are
+ used to POSIX struct timespec won't be surprised. Reported by Jim
+ Meyering.
+
+2006-01-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * chmod-safer.c, chmod-safer.h: Remove.
+ * lchmod.h: New file.
+ * mkdir-p.c: Include lchmod.h, lchown.h.
+ (make_dir_parents): Use lchown rather than chown, and
+ lchmod rather than chmod.
+
+2005-12-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * chdir-long.c (cdb_free): Don't bother trying to open directory
+ for write access: POSIX says that must fail.
+ * chdir-safer.c (chdir_no_follow): Likewise.
+ * fts.c (diropen): Likewise.
+ * save-cwd.c (save_cwd): Likewise.
+ * chdir-long.c (cdb_free): Open with O_NOCTTY | O_NONBLOCK as
+ well, for minor improvements on hosts that lack O_DIRECTORY.
+ * chmod-safer.c (defined_S_IFMT): New macro.
+ Include stat-macros.h.
+ Include stdlib.h, for abort().
+ Don't include stdio.h or assert.h; no longer needed.
+ (same_file_type): Don't assume S_IFMT is defined, as POSIX
+ does not require this. Don't assume S_IFCHR and S_IFBLK have
+ their usual sort of bit pattern.
+ (fchmod_new): Open with O_NOCTTY for as well, for minor
+ improvement on hosts where that matters. Don't bother to assert,
+ since the caller (in this source file) checks the same thing.
+ Discard any errno from a close failure, for consistency with other
+ code.
+ * chown.c (rpl_chown) [CHOWN_MODIFIES_SYMLINK]:
+ Don't try O_WRONLY unless O_RDONLY failed wth EACCES.
+ Fall back on chown if open failed with EACCES.
+
+2005-12-26 Jim Meyering <jim@meyering.net>
+
+ * chdir-safer.c (chdir_no_follow): Move declaration of local,
+ sb2, `down' into the scope where it is used.
+ Note that on some systems this function also fails when DIR
+ is a writable-yet-unreadable directory.
+
+2005-12-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * chdir-safer.h (FCHMOD_SAFER_H): Remove: it was misnamed, and
+ wasn't needed anyay.
+ * chdir-safer.c (chdir_no_follow): Don't include stdio.h, assert.h,
+ fcntl--.h; not needed.
+ (O_DIRECTORY): Define if not already defined.
+ (chdir_no_follow): Revamp describing comment to match code more
+ closely. Redo use of internal vars to avoid lint complaints.
+ Work even if directory is writeable but not readable.
+ Open with O_DIRECTORY | O_NOCTTY, for benefit of hosts that
+ don't have O_NOFOLLOW. Use O_NONBLOCK (POSIX spelling) rather
+ than O_NDELAY. Don't bother invoking fstat if open does not
+ dereference symlink, since the result isn't used then.
+ Don't assume file descriptor is positive; it might be zero
+ now that we no longer include fcntl--.h (we don't need fcntl--.h
+ since we immediately close the descriptor).
+
+2005-12-25 Jim Meyering <jim@meyering.net>
+
+ * chdir-safer.c (chdir_no_follow): Remove unnecessary
+ test of S_ISDIR (sb_init.st_mode).
+
+2005-12-23 Jim Meyering <jim@meyering.net>
+
+ * mkdir-p.c (make_dir_parents): Use chdir_no_follow only
+ if we've just created the directory.
+
+ * chdir-safer.c (chdir_no_follow): Rewrite to use fchdir even
+ when O_NOFOLLOW is not defined. Suggested by James Youngman.
+
+ * chmod-safer.c (O_NOFOLLOW): Define, if necessary.
+ * chdir-safer.c (O_NOFOLLOW): Likewise.
+ Reported by Eric Blake.
+
+2005-12-22 Jim Meyering <jim@meyering.net>
+
+ * openat.c: Include "fcntl--.h" and "unistd--.h", to map open
+ and dup to open_safer and dup_safer, respectively.
+ (openat_permissive): Fix typo in comment.
+
+2005-12-21 Jim Meyering <jim@meyering.net>
+
+ Like chdir(2), but safer, if possible.
+ * chdir-safer.c, chdir-safer.h: New files.
+
+2005-12-20 Jim Meyering <jim@meyering.net>
+
+ * mkdir-p.c (RW_USR): Remove definition.
+ (make_dir_parents): Use S_IRWXU, now that read access is also required.
+
+ Avoid a race condition, on systems where open honors O_NOFOLLOW.
+ * mkdir-p.c (make_dir_parents): Include chdir-safer.h.
+ Use chdir_no_follow in place of chdir.
+
+ * mkdir-p.c (make_dir_parents): Remove unnecessary casts of alloca,
+ since now it's guaranteed to be (void *).
+
+ * chmod-safer.c (fchmod_new): Don't try to close fd if it's < 0.
+
+2005-12-19 Jim Meyering <jim@meyering.net>
+
+ * chmod-safer.c, chmod-safer.h: New files.
+
+2005-12-05 Andreas Gruenbacher <agruen@suse.de>
+
+ Add POSIX ACL support
+ * acl.h (copy_acl, set_acl): Add declarations.
+ * acl.c (acl_entries): Add fallback implementation for POSIX ACL
+ systems other than Linux.
+ (chmod_or_fchmod): New function: use fchmod when possible,
+ and chmod otherwise.
+ (file_has_acl): Add a POSIX ACL implementation, with a
+ Linux-specific subcase.
+ (copy_acl): Add: copy an acl and S_ISUID, S_ISGID, and
+ S_ISVTX from one file to another. Fall back to fchmod/chmod when
+ acls are unsupported.
+ (set_acl): Add: set a file's acl and S_ISUID, S_ISGID, and
+ S_ISVTX to a defined value. Fall back to fchmod/chmod when acls
+ are unsupported.
+
+2005-12-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * openat.c: Don't include <stdlib.h>, <unistd.h>, <fcntl.h>,
+ "gettext.h"; either no longer needed or are guaranteed by openat.h.
+ (_): Remove; no longer needed.
+ (openat): Renamed from rpl_openat; no need for rpl_openat
+ since openat.h renames openat for us.
+ Replace most of the body with a call to openat_permissive,
+ to avoid duplicate code.
+ Port to (probably hypothetical) environments were mode_t is
+ wider than int.
+ (openat_permissive): Require mode arg, so that we can check
+ types better. Put it just after flags. Change cwd failure
+ indicator from pointer-to-bool to pointer-to-errno-value.
+ All callers changed.
+ Invoke openat_save_fail and/or openat_restore_fail if
+ cwd_errno is null, so that openat can call us.
+ (openat_permissive, fdopendir, fstatat, unlinkat):
+ Simplify errno handling to avoid some duplicate code,
+ as it's OK to set errno on success.
+ * openat.h: Revamp code so that function macros depend on
+ __OPENAT_PREFIX only, not also on AT_FDCWD.
+ (openat_ro): Remove. Caller changed to use openat_permissive.
+ (openat_permissive): Now a macro, if not a function.
+ (openat_restore_fail, openat_save_fail): Now always functions,
+ since mkdirat needs them even if __OPENAT_PREFIX is defined.
+
+2005-12-14 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libcoreutils_a_SOURCES): Remove fprintftime.c
+ and fprintftime.h. Now they're pulled in via the .m4 file.
+
+2005-12-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.am (stdbool.h): Resurrect the 'sed' that goes along
+ with '#if !@HAVE_BOOL@".
+ * stdbool_.h (_Bool): Resurrect the "#if !@HAVE__BOOL@" check, to
+ work around compilers that have a (possibly-broken) _Bool but lack
+ a working <stdbool.h>.
+
+2005-12-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stat-time.h (STATE_TIMESPEC, STAT_TIMESPEC_NS): Add check for
+ TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC, to fix IRIX 5.3
+ porting problem reported by Georg Schwarz in
+ <http://lists.gnu.org/archive/html/bug-coreutils/2005-12/msg00083.html>.
+
+2005-12-04 Jim Meyering <jim@meyering.net>
+
+ * openat-priv.h (EXPECTED_ERRNO): Add ENOSYS, for Solaris 8.
+ Paul Eggert reported that unlink/rmdir vs. e.g., /proc/self/fd/N/FILE
+ fails with ENOSYS. This makes openat revert to using save-cwd.c
+ functions in that case.
+
+2005-12-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ Sync from gnulib.
+
+ * exclude.c: Include verify.h.
+ (verify): Remove. All callers changed to use verify.h's version.
+ * strtoimax.c: Likewise.
+ * utimecmp.c: Likewis.e
+
+ * obstack.c [defined _LIBC && defined USE_IN_LIBIO]: Don't
+ include <wchar.h>; no longer needed.
+
+2005-12-01 Jim Meyering <jim@meyering.net>
+
+ Sync from gnulib.
+
+ * intprops.h (signed_type_or_expr__): Define.
+ (INT_STRLEN_BOUND) [__GNUC__]: Use a slightly tighter bound
+ for unsigned types.
+
+2005-12-01 Jakub Jelinek <jakub@redhat.com>
+ and Ulrich Drepper <drepper@redhat.com>
+
+ Import from libc via gnulib.
+ * obstack.c (print_and_abort) [defined _LIBC]: Use __fxprintf
+ instead of inline stream orientation test and two separate
+ function calls. Pay no attention to USE_IN_LIBIO.
+
+2005-12-01 Roland McGrath <roland@redhat.com>
+
+ Import from libc via gnulib. [BZ #1331]
+ * obstack.h [!__STDC__] (obstack_int_grow_fast): Fix misnamed
+ macro argument.
+ Reported by Matej Vela <vela@debian.org>.
+
+2005-11-30 Jim Meyering <jim@meyering.net>
+
+ * openat-priv.h: New file, defining macros used by mkdirat.c
+ and openat.c.
+ * mkdirat.c: Include openat-priv.h.
+ Remove definitions of macros defined therein.
+ * openat.c: Likewise.
+
+ * mkdirat.c (mkdirat): New file and function.
+ * openat.h (mkdirat): Declare.
+
+2005-11-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * mountlist.c (ME_DUMMY): "none" and "proc" file systems are dummies
+ too. Problem with "none" reported by Bob Proulx. Problem with
+ "proc" reported by n0dalus.
+
+ * mountlist.c: Include <limits.h>.
+ (dev_from_mount_options)
+ [defined MOUNTED_GETMNTENT1 || defined MOUNTED_GETMNTENT2]:
+ New function. It no longer assumes "dev=" has the System V meaning
+ on Linux (since it doesn't). It also parses "dev=" more carefully.
+ (read_file_system_list)
+ [defined MOUNTED_GETMNTENT1 || defined MOUNTED_GETMNTENT2]: Use it.
+ MOUNTED_GETMNTENT2 is new here; the code didn't used to look for
+ dev= in that case.
+
+ * Makefile.am (stdbool.h): Just copy stdbool_.h; no need to sed
+ any more.
+
+ * stdbool_.h: Simplify greatly, under the assumption that these
+ days most people use C99-compatible compilers to debug, so it's
+ not worth worrying about catering to older compilers for that.
+ This works around some porting problems with HP-UX compilers.
+ (false, true) [defined __BEOS__]: Don't #undef; no longer needed.
+ (_Bool): typedef to bool if C++ or BeOS, and #define to signed char
+ otherwise.
+
+ * gettime.c (gettime) [!defined OK_TO_USE_1S_CLOCK]:
+ Report an error at compile-time if only a 1-second nominal clock
+ resolution is found.
+
+2005-11-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.am (libcoreutils_a_SOURCES): Add buffer-lcm.c, buffer-lcm.h.
+ * buffer-lcm.c, buffer-lcm.h: New files, from diffutils.
+
+2005-11-23 Jim Meyering <jim@meyering.net>
+
+ * openat.c (fdopendir): Don't change errno when returning non-NULL.
+
+2005-11-22 Jim Meyering <jim@meyering.net>
+
+ * openat.h (openat_permissive): Declare.
+ (openat_ro): Define.
+
+ * openat.c (EXPECTED_ERRNO): New macro.
+ (openat_permissive): New function -- used in remove.c rewrite.
+ (all functions): Set errno just before returning, only if there
+ was an actual failure.
+ Use EXPECTED_ERRNO rather than comparing against only ENOTDIR.
+
+2005-11-20 Jim Meyering <jim@meyering.net>
+
+ * euidaccess-stat.c: New file, mostly from euidaccess.c.
+ * euidaccess-stat.h: New file.
+
+2005-11-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * xstrtod.c: Don't bother with #pragma STDC FENV_ACCESS ON, as
+ coreutils no longer futzes with rounding modes.
+
+2005-11-08 Eric Blake <ebb9@byu.net>
+
+ * getaddrinfo.h: Use #if !, not #ifndef, for AC_CHECK_DECLS.
+
+2005-11-13 Jim Meyering <jim@meyering.net>
+
+ * mkstemp-safer.c: Include <config.h>, required for possible
+ replacement of mkstemp.
+
+2005-11-12 Jim Meyering <jim@meyering.net>
+
+ Emulate openat-family functions using Linux's procfs, if possible.
+ Idea and some code based on Ulrich Drepper's glibc changes.
+
+ * openat.c: (BUILD_PROC_NAME): New macro.
+ Include <stdio.h>, <string.h>, "alloca.h" and "intprops.h".
+ (rpl_openat): Emulate by trying to open /proc/self/fd/%d/%s,
+ before falling back on save_cwd and restore_cwd.
+ (fdopendir, fstatat, unlinkat): Likewise.
+
+2005-11-11 Jim Meyering <jim@meyering.net>
+
+ * openat.c (fstatat, unlinkat): Perform the syscall directly,
+ skipping the save_cwd...restore_cwd overhead, if FILE is absolute.
+
+2005-11-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * gethrxtime.c: Include "timespec.h" rather than the sys/time / time
+ business.
+ (gethrxtime) [! (HAVE_NANOUPTIME
+ || (defined CLOCK_MONOTONIC && HAVE_CLOCK_GETTIME)
+ || HAVE_MICROUPTIME)]: Fall back on gettime rather than rolling
+ our own approximation.
+
+2005-11-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * posixtm.h (PDS_PRE_2000): New macro.
+ * posixtm.c (year): Arg is now syntax_bits rather than allow_century.
+ All usages changed. Reject dates outside the range 1969-1999 if
+ PDS_PRE_2000 is used.
+
+2005-10-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix porting problems reported by Theodoros V. Kalamatianos.
+ * fd-reopen.c [defined HAVE_CONFIG_H]: Include <config.h>,
+ so that large files can be opened.
+ * utimens.c (futimens) [HAVE_WORKING_UTIMES && HAVE_FUTIMES]:
+ Don't assume that futimes failing means we must fail.
+
+2005-10-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getcwd.c (__getcwd): Don't assume that system calls after readdir
+ leave errno alone. Problem reported by Dmitry V. Levin.
+
+2005-10-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * savedir.c (savedir): Don't assume that xrealloc etc. leave
+ errno alone. Problem reported by Frederic Jolliton.
+
+2005-10-24 Jim Meyering <jim@meyering.net>
+
+ * mkdir-p.c (make_dir_parents): Like the code above, don't rely
+ on mkdir failing with a particular errno value (EEXIST).
+ Based on a patch by Dmitry V. Levin.
+
+ * mkdir-p.c (make_dir_parents): Make the preceding fix a little
+ more robust, e.g., when the final component is created as a non-
+ directory by another process just before `mkdir -p's final mkdir.
+
+ A command like `mkdir -p nonexistent/.' would create the
+ directory but exit nonzero with a diagnostic. This could also be
+ triggered with a non-`.' component, e.g., in a race with another
+ process running the same `mkdir -p nonexistent/sub' command.
+
+ * mkdir-p.c (make_dir_parents): Handle the case of an
+ existing final component.
+ Reported by Matthias Andree here:
+ http://savannah.gnu.org/bugs/?func=detailitem&item_id=14848
+
+2005-10-23 Jim Meyering <jim@meyering.net>
+
+ * sha512.h: Remove no-longer-relevant comment.
+
+2005-08-27 David Madore <david.madore@ens.fr>
+
+ * sha256.h, sha256.c, sha512.h, sha512.c: New files - sha-2
+ implementation.
+
+2005-10-20 Jim Meyering <jim@meyering.net>
+
+ * modechange.c (mode_compile): Reject an invalid mode string
+ that starts with an octal digit. From Andreas Gruenbacher.
+
+2005-10-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * mkdir-p.c (make_dir_parents): Don't report an error if an
+ intermediate directory is in a read-only file system. Problem
+ reported by Eric Blake.
+
+2005-10-08 Jim Meyering <jim@meyering.net>
+
+ * openat.c (rpl_openat): Use the promoted type (int), not mode_t,
+ as second argument to va_arg. Otherwise, some versions of gcc
+ warn that `if this code is reached, the program will abort'.
+
+ Update from gnulib.
+ * getdelim.c: (SIZE_MAX): New macro, if not already defined.
+
+2005-10-05 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libcoreutils_a_DEPENDENCIES): Remove definition.
+ Once it's gone, automake generates an equivalent one.
+ Suggestion from Stepan Kasal.
+
+ * getaddrinfo.h: Merge from gnulib.
+
+2005-10-04 Jim Meyering <jim@meyering.net>
+
+ Merge from gnulib.
+ * getaddrinfo.h: Include sys/types.h before other headers.
+
+2005-10-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getdelim.c: Import from gnulib (to fix unused var warnings) then
+ apply the following fixes:
+ Include getdelim.h first. Include <limits.h>.
+ (SSIZE_MAX): New macro, if not already defined.
+ (getdelim): Fix buffer overrun on 64-bit hosts with lines longer
+ than 2 GiB.
+
+2005-10-01 Simon Josefsson <jas@extundo.com>
+
+ * getaddrinfo.h: Protect #include's of sys/socket.h and netdb.h.
+ Only define struct addrinfo if !HAVE_STRUCT_ADDRINFO. Protect
+ AI_* and EAI_* definitions. Protect function declarations.
+
+2005-09-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * openat.c (fdopendir): Do not define if HAVE_FDOPENDIR.
+ Remove AT_FDCWD test.
+ Do not consume the fd unless successful.
+ * openat.h (fdopendir): Do not define if HAVE_FDOPENDIR.
+
+2005-09-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * xtime.h (XTIME_PRECISION): Now of type int, not long long int,
+ so that the code works even with ancient cpp. Portability problem
+ with GCC 2.7.2.1 reported by Thomas M.Ott.
+
+ * settime.c (settime): Fix { typo in previous patch. Also, don't
+ bother returning ENOSYS if settimeofday or stime fails; just let
+ them return whatever errno they want to return.
+
+2005-09-29 Jim Meyering <jim@meyering.net>
+
+ * settime.c (settime): Move the HAVE_STIME block `up' into an #elif
+ block, so that we don't even try to compile it if settimeofday is
+ available. This works around a compilation failure on OSF1 V5.1,
+ due to stime requiring a `long int*' while tv_sec is `int'.
+
+2005-09-27 Jim Meyering <jim@meyering.net>
+
+ * fprintftime.c [HAVE_CONFIG_H]: Include <config.h> conditionally,
+ to be consistent with gnulib.
+ * getcwd.c: Change #ifdef<TAB>HAVE_CONFIG_H to #ifdef HAVE_CONFIG_H.
+ * fts-cycle.c [HAVE_CONFIG_H]: Include <config.h>.
+ * strnumcmp.c [HAVE_CONFIG_H]: Include <config.h> here, now that
+ strnumcmp-in.h no longer includes it.
+
+2005-09-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * utimens.c: Include unistd.h, for dup2.
+ (futimens): Fix typo: HAVE_FUTIMESAT was misspelled in an #if.
+ (futimens) [! HAVE_FUTIMESAT]: If !file, set errno before returning -1.
+
+2005-09-25 Jim Meyering <jim@meyering.net>
+
+ * strnumcmp-in.h: Protect against multiple inclusion.
+
+2005-09-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * utimens.c (ENOSYS): Define if not already defined.
+ (futimens): Support having a null PATH if the file descriptor
+ is nonnegative.
+
+ * Makefile.am (libcoreutils_a_SOURCES): Remove mbchar.c, since
+ it doesn't build in OpenBSD 3.4. See
+ <http://lists.gnu.org/archive/html/bug-gnulib/2005-09/msg00242.html>.
+
+ * regex_internal.h (__GNUC_PREREQ, always_inline, inline, pure):
+ Remove.
+ (__attribute): Define to empty unless GCC 3.1 or later.
+ This works around a core dump on OpenBSD 3.4, which has GCC
+ 2.95.3, which dumps core when given __attribute__(()). It also
+ simplifies other tests, since we really don't want to bother with
+ worrying about which ancient version of GCC supported what.
+ Original problem reported by Yoann Vandoorselaere, with part of
+ the fix suggested by Derek Price.
+
+2005-09-24 Jim Meyering <jim@meyering.net>
+
+ * openat-die.c, root-dev-ino.c, setenv.c, stdopen.c:
+ * tsearch.c, unsetenv.c, xfts.c: Use `#ifdef HAVE_CONFIG_H',
+ not `#if HAVE_CONFIG_H', for consistency with gnulib.
+
+ * strintcmp.c: Include <config.h> here, ...
+ * strnumcmp-in.h: ..., not here.
+
+ Sync from gnulib.
+
+ * verify.h (verify_type__): Use `unsigned int' as the bitfield type
+ so we can once again use a positive bitfield width of 1 -- now we
+ don't have to explain why we were using a bitfield width of 2.
+
+2005-09-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * utimens.c (futimens): Use futimesat if available.
+ Prefer it to futimes since it doesn't have the futimes bug.
+
+ * verify.h (GL_CONCAT0, GL_CONCAT): Remove.
+ (verify): Don't use the __LINE__ trick, as it doesn't work in general.
+ Instead, declare a function that returns a pointer to an array,
+ and use verify_type__ to declare the size of the array.
+ Problem and germ of a solution reported by Bruno Haible.
+ (verify_type__): Use 2, not 1, for bitfield size, to avoid
+ a warning with Irix 6.5 cc. Problem reported by Bruno Haible.
+
+2005-09-23 Jim Meyering <jim@meyering.net>
+
+ * strnumcmp-in.h: Include <config.h>. Otherwise builds with strict
+ C89 (e.g., Sun's /opt/SUNWspro/bin/c89) would fail due to the use
+ of `inline'.
+
+2005-09-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getaddrinfo.c [HAVE_NETINET_IN_H]: Include <netinet/in.h>.
+ Problem reported by Eric Blake.
+ (getaddrinfo): Initialize se so that it's not garbage.
+ Redo internal storage allocation so that it doesn't make unportable
+ assumptions about alignment.
+ Fix a memory leak.
+
+2005-09-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ Sync from gnulib.
+
+ * Makefile.am (libcoreutils_a_SOURCES): Add getaddrinfo.h,
+ mbchar.c, mbchar.h, mbuiter.h, strcase.h, strlen1.c, strnlen1.h,
+ strstr.h.
+
+ * argmatch.h (GL_CONCAT): Remove.
+ Include "verify.h" instead.
+ (ARGMATCH_CONSTRAINT, ARGMATCH_ASSERT): Remove.
+ (ARGMATCH_VERIFY): Rewrite in terms of new verify macros.
+
+ * xalloc.h (VERIFY_EXPR, X2NREALLOC, X2REALLOC): Remove.
+ The latter two macros are moving to ../src/system.h for now.
+ This reverts this file to the gnulib version.
+
+ * xanstrftime.c, xanstrftime.h: Remove; no longer used.
+
+ * .cppi-disable: Add getaddrinfo.h, getdelim.h, mbchar.h,
+ mbuiter.h, strcase.h, strnlen.h, strnlen1.h.
+
+ * canon-host.h, gai_strerror.c, getaddrinfo.c, getaddrinfo.h:
+ * getdelim.c, getdelim.h, mbchar.c, mbchar.h, mbuiter.h:
+ * strcase.h, strnlen.h, strnlen1.c, strnlen1.h, strstr.h:
+ New files, from gnulib.
+
+ * __fpending.c, __fpending.h, acl.c, argmatch.c, atexit.c:
+ * backupfile.c, basename.c, calloc.c, canonicalize.c:
+ * chdir-long.c, chown.c, cloexec.c, closeout.c, creat-safer.c:
+ * cycle-check.c, dirfd.c, dirfd.h, dirname.c, dup-safer.c:
+ * dup2.c, euidaccess.c, exclude.c, exitfail.c, fchown-stub.c:
+ * fd-safer.c, file-type.c, fileblocks.c, filemode.c:
+ * filenamecat.c, fnmatch.c, fopen-safer.c, free.c, fsusage.c:
+ * ftruncate.c, full-write.c, getcwd.c, getcwd.h, getdate.h:
+ * getgroups.c, getndelim2.c, getopt1.c, getopt_.h:
+ * gettimeofday.c, getugroups.c, group-member.c, hard-locale.c:
+ * hash-pjw.c, hash.c, human.c, human.h, idcache.c, inttostr.c:
+ * inttostr.h, lchown.c, long-options.c, lstat.c, malloc.c:
+ * memcasecmp.c, memchr.c, memcmp.c, memcoll.c, memcpy.c:
+ * memmove.c, mkdir.c, mkstemp.c, mktime.c, modechange.c:
+ * mountlist.c, nanosleep.c, open-safer.c, openat.c, physmem.c:
+ * pipe-safer.c, posixtm.c, posixver.c, putenv.c, quote.c:
+ * quotearg.c, raise.c, readlink.c, readtokens0.c, readutmp.c:
+ * realloc.c, regex.c, regex_internal.h, rename.c, rmdir.c:
+ * rpmatch.c, safe-read.c, same.c, save-cwd.c, savedir.c:
+ * settime.c, sig2str.c, strcspn.c, stripslash.c, strndup.c:
+ * strnlen.c, strtod.c, strtoimax.c, strtol.c, strverscmp.c:
+ * tempname.c, time_r.c, time_r.h, timespec.h, unicodeio.h:
+ * unistd--.h, unlinkdir.c, userspec.c, utimecmp.c:
+ * version-etc-fsf.c, version-etc.c, xalloc-die.c, xgetcwd.c:
+ * xgethostname.c, xmalloc.c, xmemcoll.c, xnanosleep.c:
+ * xreadlink.c, xstrndup.c, xstrtoimax.c, xstrtol.c:
+ * xstrtoumax.c, yesno.c:
+ Sync from gnulib.
+
+ * canon-host.c, getline.c, getline.h, getpass.c, strcasecmp.c:
+ * strncasecmp.c, strstr.c:
+ Nontrivial sync from gnulib.
+
+ * .cvsignore: Sort entries.
+
+ * mkdir-p.c (ENOSYS): Define to EEXIST if not defined.
+ (make_dir_parents): Treat ENOSYS like EEXIST.
+
+2005-09-20 Jim Meyering <jim@meyering.net>
+
+ * openat.c (fdopendir): Be sure to close the supplied
+ file descriptor before returning. This makes our replacement
+ implementation a little closer to Solaris's, where fdopendir
+ ties the file descriptor to the returned DIR* pointer.
+
+2005-09-19 Jim Meyering <jim@meyering.net>
+
+ * openat.c (unlinkat): New function.
+ * openat.h (unlinkat): Add prototype.
+
+2005-09-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ Import from gnulib.
+ * stat-time.h: New file.
+ * timespec.h (ST_TIME_CMP_NS, ST_TIME_CMP, ATIME_CMP, CTIME_CMP):
+ (MTIME_CMP, TIMESPEC_NS): Remove. Now done by stat-time.h,
+ in a different way.
+ (timespec_cmp): New function.
+ * utimecmp.c: Include stat-time.h.
+ (SYSCALL_RESOLUTION): Depend on whether various struct stat
+ members exist, not on the obsolescent ST_MTIM_NSEC.
+ (utimecmp): Use the new stat-time functions rater than TIMESPEC_NS.
+
+ * .cppi-disable: Add stat-time.h.
+
+2005-09-16 Jim Meyering <jim@meyering.net>
+
+ * strftime.c [FPRINTFTIME] (fprintftime): Provide a new interface:
+ size_t fprintftime (FILE *fp, char const *fmt, struct tm const *tm,
+ int utc, int nanoseconds);
+ Background:
+ date should not have to allocate a megabyte of virtual memory to
+ handle a format argument like +%1048575T. When implemented with
+ strftime, it must allocate such a buffer, use strftime to fill it
+ in, print it, then free it.
+ With fprintftime, it simply prints everything and exits.
+ With no need for memory allocation, that's one fewer way to fail.
+
+ * fprintftime.c, fprintftime.h: New files.
+ * Makefile.am (libcoreutils_a_SOURCES):
+ Add fprintftime.c and fprintftime.h.
+
+2005-09-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * strftime.c (my_strftime): Rewrite the previous change slightly,
+ to make it a bit faster and (I hope) clearer.
+
+2005-09-14 Jim Meyering <jim@meyering.net>
+
+ * strftime.c (my_strftime): Parse the colons of %:::z *after* the
+ optional field width, not before, so we accept %9:z, not %:9z.
+ (my_strftime): Be sure to use L_('x') for literals.
+
+2005-09-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ Merge md5 from libc, and clean up some sha1 glitches.
+ * md5.h (__GNUC_PREREQ, __THROW, __attribute__): New macros.
+ (__md5_buffer): Renamed from md5_buffer. Add a macro undoing this
+ if _LIBC is not defined. Add __THROW.
+ (__md5_finish_ctx, __md5_init_ctx, __md5_process_block):
+ (__md5_process_bytes, __md5_read_ctx, __md5_stream): Likewise.
+ (struct md5_ctx): Mark buffer as being aligned.
+ (rol): Remove; all uses changed to CYCLIC.
+ * md5.c (CYCLIC): New macro. All uses of rol changed to use CYCLIC.
+ Redo comment to minimize changes from libc.
+ * sha1.h (struct sha1_ctx): Mark buffer as being aligned.
+ * sha1.c (SWAP): Renamed from NOTSWAP, to avoid a horrible misnaming.
+ All uses changed. Remove the old SWAP.
+ Remove obvious comment about BLOCKSIZE.
+ (rol): New macro, moved here from md5.h.
+ (sha1_process_block): Remove an incoherent FIXME comment.
+
+ * strftime.c (my_strftime): Add support for %:z, %::z, %:::z.
+ Fix bug in formats like %2N.
+
+2005-09-13 Jim Meyering <jim@meyering.net>
+
+ * xalloc.h: Revert unintended change that removed definitions
+ of X2REALLOC and X2NREALLOC.
+
+ * backupfile.c: Use ARGMATCH_VERIFY, just in case.
+
+2005-09-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regcomp.c, regex.c, regex.h, regex_internal.c, regex_internal.h:
+ * regexec.c: Import from gnulib, to fix some 64-bit bugs.
+
+2005-09-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * verify.h (__builtin_constant_p): Remove, undoing previous change.
+ (verify_type__): Solve the problem by using a bit-field rather
+ than an array.
+
+2005-09-05 Jim Meyering <jim@meyering.net>
+
+ * verify.h (__builtin_constant_p) [__GNUC__ <= 2]: Define to 1.
+ (verify_type__) [verify_error_if_non_const__]: New member/test,
+ to help detect when verify or verify_expr is mistakenly passed
+ a non-constant argument within a function.
+
+2005-08-31 Jim Meyering <jim@meyering.net>
+
+ * quotearg.c (quotearg_n_options): Change code to be suboptimal, in
+ order to avoid an unsuppressible warning from gcc on 64-bit systems.
+
+ * localcharset.c (get_charset_aliases): Add `void' in parameter list
+ to placate gcc's -Wstrict-prototypes.
+
+2005-08-27 Jim Meyering <jim@meyering.net>
+
+ * md5.c: Use `#error' rather than a string literal to provoke failure.
+ * sha1.c: Likewise.
+
+2005-08-25 Jim Meyering <jim@meyering.net>
+
+ * open-safer.c: Include <config.h>.
+ Otherwise, we'd lose LARGEFILE support in any file using
+ e.g. "fcntl--.h"
+
+2005-08-24 Jim Meyering <jim@meyering.net>
+
+ * stdopen.c (stdopen): Revert to iterating over descriptors, but
+ rather than using fstat, use fcntl with its F_GETFD flag, which
+ is more efficient. Unlike the 2-syscall dup-close approach,
+ this one doesn't apply any unnecessary pressure on the file
+ descriptor pool -- thus there is one fewer way to fail.
+
+2005-08-23 Jim Meyering <jim@meyering.net>
+
+ * regcomp.c, regex.c, regex.h, regex_internal.c: Update from gnulib.
+ * regex_internal.h, regexec.c: Likewise.
+
+2005-08-19 Jim Meyering <jim@meyering.net>
+
+ * stdopen.c (stdopen): Return `bool' so caller can detect failure.
+
+2005-08-17 Jim Meyering <jim@meyering.net>
+
+ Make the %s format (seconds since the epoch) work for a negative
+ number and when used with a zero-padded field width, e.g. %015s.
+
+ * strftime.c (my_strftime): Move the `do_number_sign_and_padding'
+ label so that it precedes the code to set `digits'. Otherwise,
+ %0Ns wouldn't work. Before this change, `date -d @-22 +%05s' would
+ print `00-22'. Now, it prints `-0022', as it should.
+
+2005-08-15 Bruno Haible <bruno@clisp.org>
+
+ Import from gnulib.
+ * regex.h (__restrict_arr): Don't define to __restrict if __cplusplus
+ is defined.
+
+2005-08-13 Jim Meyering <jim@meyering.net>
+
+ * getdate.y (get_date): Undo part of the 2005-04-04 change, so that
+ the command "date -d'2005-03-27 +1 day'" succeeds once again, even
+ when run in a time zone for which daylight savings time is in effect
+ for the starting date.
+
+2005-08-12 Jim Meyering <jim@meyering.net>
+
+ * regcomp.c (duplicate_node) [lint]: Set *new_idx to -1, to avoid
+ warnings (unfounded) in caller that it may be used uninitialized.
+
+ * regex.c (IF_LINT): Define.
+
+ * regex_internal.c (re_string_realloc_buffers): Rename local-shadowed
+ variable: s/new_array/offsets/.
+ (re_acquire_state) [lint]: Set *err, to avoid warnings in caller.
+
+ * regexec.c (regexec, re_search_stub) [!_LIBC]: Omit declaration
+ of unused local, dfa.
+ (proceed_next_node): Remove outer declaration and
+ unnecessary initialization of local-shadowed `dest_node'.
+ Declare it in inner scopes, nearer its uses instead.
+
+ * regex.h (RE_SYNTAX_POSIX_AWK): Remove useless space-before-TAB.
+
+ * fts-cycle.c (setup_dir, enter_dir, leave_dir, free_dir):
+ Use the hash-table-based cycle-detection code not just when
+ FTS_TIGHT_CYCLE_CHECK if specified, but also with FTS_LOGICAL.
+ Reported by James Youngman in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2005-08/msg00011.html>.
+ * fts_.h: Mention that with FTS_LOGICAL, we use FTS_TIGHT_CYCLE_CHECK.
+
+ * fts.c (fts_cross_check) [FTS_DEBUG]: s/active_dir_ht/fts_cycle.ht/.
+ This lets us compile with -DFTS_DEBUG, once again.
+
+2005-08-02 Jim Meyering <jim@meyering.net>
+
+ * xanstrftime.c, xanstrftime.h: New files.
+
+2005-07-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getdate.y (relative_time): New type.
+ (RELATIVE_TIME_0): New constant.
+ (parser_control): Use relative_time instead of doing it ourselves.
+ (%union): Add new relative_time rel member.
+ (tYEAR_UNIT, tMONTH_UNIT, tHOUR_UNIT, tMINUTE_UNIT, tSEC_UNIT):
+ Now typeless.
+ (relunit, relunit_snumber): Now of type rel.
+ (zone, rel, relunit, get_date): Adjust to above changes.
+
+2005-07-12 Jim Meyering <jim@meyering.net>
+
+ * xalloc.h (X2NREALLOC): Define.
+
+2005-07-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * verify.h (verify_expr): Use ((verify_type__ (R) *) 0), not
+ sizeof (verify_type__ (R)), to pacify C++ compilers. Problem
+ reported by Bruno Haible.
+
+ * version-etc-fsf.c (version_etc_copyright): Parameterize the
+ copyright symbol and the year.
+ * version-etc.c (COPYRIGHT_YEAR): New constant.
+ (version_etc_va): Use parameterized copyright notice.
+ Reword to conform to the current GNU coding standards.
+
+2005-07-08 Eric Blake <ebb9@byu.net> (tiny change)
+
+ * getloadavg.c (getloadavg) [__CYGWIN__]: Port to cygwin.
+ [__linux__]: Allocate a big enough buffer for /proc/loadavg.
+ [!LDAV_DONE]: Avoid unused variable warning.
+
+2005-07-08 Eric Blake <ebb9@byu.net> (tiny change)
+ and Paul Eggert <eggert@cs.ucla.edu>
+
+ * regcomp.c (init_dfa, build_range_exp): Store __btowc value
+ in wint_t, not wchar_t. Remove now-unnecessary cast.
+
+2005-07-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ Switch to Isamu Hasegawa's implementation of regex, which is
+ now in gnulib.
+ * regcomp.c, regex_internal.c, regex_internal.h, regexec.c:
+ New files, from gnulib.
+ * regex.h, regex.c: Sync from gnulib.
+ * Makefile.am (libcoreutils_a_SOURCES): Remove regex.h; gnulib
+ now does this automatically for us.
+ * .cppi-disable: Add regcomp.c, regex_internal.c, regex_internal.h.
+
+2005-07-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ * verify.h (GL_CONCAT0, GL_CONCAT): Define unconditionally; don't
+ depend on whether verify_decl is defined.
+ (verify): Renamed from verify_decl. All uses changed.
+ Use an extern function decl, as it can't possibly collide with other
+ decls.
+ (verify_expr): Renamed from verify. All uses changed.
+ (verify_type__): New private macro.
+ (verify, verify_expr): Use it.
+
+2005-07-04 Jim Meyering <jim@meyering.net>
+
+ * verify.h (verify, verify_decl): New file/macros.
+ * Makefile.am (libcoreutils_a_SOURCES): Add verify.h here, temporarily.
+ Eventually, it'll be pulled in via AC_LIBSOURCES.
+
+ * argmatch.h (verify_dcl): Rename from VERIFY. Update use.
+
+2005-07-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ Remove the dependency of the strftime module on the tzset module.
+ * strftime.c (my_strftime) [! defined _LIBC && ! HAVE_RUN_TZSET_TEST]:
+ Copy the input structure, to work around some of the bug with
+ Solaris 2.5.1 and Solaris 2.6.
+
+2005-07-03 Jim Meyering <jim@meyering.net>
+
+ * posixtm.c (posixtime) [lint]: Initialize *all* of tm0, not just
+ the .tm_year member, since otherwise gcc-4.0 would now warn about
+ tm_zone, tm_gmtoff, tm_isdst, tm_yday, tm_wday.
+
+2005-07-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.am (libcoreutils_a_SOURCES): Undo previous change.
+
+ * Makefile.am (libcoreutils_a_SOURCES): Add fcntl--.h, stdio--h,
+ stdlib--.h, unistd--.h.
+ * fts.c [! _LIBC]: Include "lstat.h" rather than rolling our own.
+ * lstat.c: Sync from gnulib.
+ * lstat.h: New file, from gnulib.
+ * stat.c: Remove.
+
+2005-07-03 Jim Meyering <jim@meyering.net>
+
+ * fd-reopen.c: Include <unistd.h> for declaration of close.
+
+2005-07-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ Cleanup to isolate "safer" functions to a small part of the code.
+ * fcntl--.h, stdio--.h, stdlib--.h, unistd--.h, fcntl-safer.h:
+ * open-safer.c, stdlib-safer.h, mkstemp-safer.c, fd-reopen.h:
+ * fd-reopen.c: New files.
+ * fopen-safer.c: Include stdio-safer.h first, to check interface.
+ Don't bother including stdio.h, since stdio-safer.h does.
+ * fts.c (fd_safer): Remove decl.
+ Include fcntl--.h rather than unistd-safer.h
+ (fts_safe_changedir): Don't call fd_safer; no longer needed
+ now that we include fcntl--.h.
+ * getloadavg.c: Include fcntl--.h rather than fcntl.h.
+ Do not include unistd-safer.h.
+ (getloadavg): Don't call fd_safer; no longer needed
+ now that we include fcntl--.h.
+ * getusershell.c: Include stdio--.h rather than stdio.h
+ and stdio-safer.h.
+ (getusershell): Call fopen, not fopen_safer.
+ * save-cwd.c: Include fcntl--.h rather than fcntl.h.
+ Do not include unistd-safer.h.
+ (save_cwd): Don't call fd_safer; no longer needed
+ now that we include fcntl--.h.
+
+2005-07-02 Jim Meyering <jim@meyering.net>
+
+ * getopt_.h: Assume HAVE_UNISTD_H, i.e., include <unistd.h>
+ unconditionally.
+
+ * fnmatch.c: Update from gnulib.
+
+ * backupfile.c, canon-host.c, canonicalize.c, chown.c, cloexec.c:
+ * dup-safer.c, dup2.c, euidaccess.c, fd-safer.c, fileblocks.c:
+ * fopen-safer.c, fsusage.c, ftruncate.c, getcwd.c, getcwd.h:
+ * getloadavg.c, getopt_.h, getpagesize.h, getugroups.c, group-member.c:
+ * human.h, idcache.c, mkdir-p.c, mountlist.c, nanosleep.c, pathmax.h:
+ * physmem.c, posixver.c, putenv.c, raise.c, safe-read.c, same.c:
+ * save-cwd.c, setenv.c, settime.c, tempname.c, unlinkdir.c:
+ * unsetenv.c, userspec.c, xgethostname.c, xreadlink.c:
+ Assume HAVE_UNISTD_H, i.e., include <unistd.h> unconditionally.
+
+2005-07-01 Jim Meyering <jim@meyering.net>
+
+ * chown.c, cloexec.c, dup-safer.c, dup2.c, fsusage.c, getcwd.c:
+ * getloadavg.c, mountlist.c, openat.h, save-cwd.c, tempname.c:
+ Assume HAVE_FCNTL_H (i.e., include <fcntl.h> unconditionally,
+ and don't include <sys/file.h>).
+
+2005-07-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * xnanosleep.c: Include timespec.h, since OpenBSD 3.4 <time.h>
+ declares only 'struct timespec;' (!).
+
+2005-06-30 Jim Meyering <jim@meyering.net>
+
+ * stdopen.c: Add copyright.
+ Include <fcntl.h> and <unistd.h> unconditionally --
+ it seems to be ok to do this, these days.
+
+ * stdopen.c: Rewritten by Paul Eggert.
+ Now, the minimum overhead is just two system calls: dup and close.
+
+ * stdopen.c: New file. As yet unused.
+ The minimum overhead is three fstat calls.
+ * stdopen.h: New file.
+
+ * argmatch.h [!VERIFY] (VERIFY): Define.
+ (ARGMATCH_VERIFY): Use it, so this macro may be used more than
+ once in any given scope.
+
+ * xalloc.h (VERIFY_EXPR): Undef before defining, and add a comment.
+
+2005-06-29 Jim Meyering <jim@meyering.net>
+
+ * mkdir-p.c (make_dir_parents): Don't apply sizeof to a hard-coded
+ type name. Use the variable name instead.
+ * idcache.c (getuser, getuidbyname, getgroup, getgidbyname): Likewise.
+
+ * xalloc.h (VERIFY_EXPR): Define.
+ (X2REALLOC): New macro, to make using x2realloc a little safer.
+
+2005-06-26 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libcoreutils_a_SOURCES): Remove diacrit.c and diacrit.h.
+
+2005-06-25 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libcoreutils_a_SOURCES): Remove
+ root-dev-ino.c and root-dev-ino.h.
+ (libcoreutils_a_SOURCES): Remove dev-ino.h too, now that we
+ get it via root-dev-ino.m4
+ (libcoreutils_a_SOURCES): Remove version-etc.c version-etc.h
+ and version-etc-fsf.c.
+
+2005-06-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * canon-host.c (canon_host) [HAVE_GETADDRINFO]: Use `= { 0, };' to
+ initialize local `hint'. This undoes the previous change, and
+ syncs with gnulib.
+
+2005-06-23 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libcoreutils_a_SOURCES): Remove xreadlink.c
+ and xreadlink.h.
+ (libcoreutils_a_SOURCES): Remove xstrtod.c and xstrtod.h.
+
+ * backupfile.c (backup_args): Change a `0' to NULL.
+
+2005-06-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * mktime.c: Include <string.h> even if !DEBUG. (From glibc.)
+ (ranged_convert): Don't save conversion in a temporary struct.
+ This causes a warning with GCC 4.0.0, and anyway in the typical
+ case it's not worth the extra 100 bytes or so of code.
+ (ranged_convert, __mktime_internal): When calling a function via a
+ pointer P, use P () rather than (*P) (), as we now assume C89 or better.
+
+ * readutmp.c (desirable_utmp_entry): Fix bug where "who -b" and
+ "who -r" failed to give output. Problem reported by Tim Waugh.
+
+2005-06-22 Jim Meyering <jim@meyering.net>
+
+ * xmalloc.c: Update from gnulib.
+
+2005-06-19 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libcoreutils_a_SOURCES): Remove xgetcwd.c, xgetcwd.h,
+ xfts.c and xfts.h.
+
+2005-06-16 Jim Meyering <jim@meyering.net>
+
+ * calloc.c (rpl_calloc): Allocate a 1-byte buffer (not 1xS or Nx1)
+ when either N or S is zero.
+
+2005-06-15 Jim Meyering <jim@meyering.net>
+
+ * mkdir-p.c (make_dir_parents): Don't let a failed chdir($PWD)
+ stop us from restricting permissions of just-created absolute-named
+ directories.
+
+2005-06-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ Improve quality of diagnostics on restore_cwd failure.
+ * mkdir-p.h (make_dir): Remove. All uses replaced by mkdir.
+ (make_dir_parents): Last arg is now int * (for errno), not bool *.
+ * mkdir-p.c (make_dir, make_dir_parents): Likewise.
+ Rewrite "mkdir -p" algorithm to avoid the need for "stat"
+ each time through the loop. Do not diagnose restore_cwd failure;
+ that is the caller's job (and perhaps the caller does not care).
+
+ * mkdir-p.c (CLEANUP_CWD, CLEANUP): Remove.
+ (make_dir_parents): Revamp to avoid need for CLEANUP_CWD, CLEANUP.
+ If the file already exists but is not a directory, don't bother
+ to try to make its parents.
+ Close potential file descriptor leak if we can't chdir("/") (!).
+ Don't always return true if chdir($PWD) fails; return true only
+ if the requested action was done successfully (except for the
+ chdir($PWD)).
+ Don't log final directory unless we actually made it.
+ Refactor to avoid duplicate code to fix up permissions.
+ Don't attempt to fix up parent permissions if chdir($PWD) fails.
+
+2005-06-14 Jim Meyering <jim@meyering.net>
+
+ * openat-die.c (openat_save_fail): Rename from openat_save_die.
+ (openat_restore_fail): Rename from openat_restore_die.
+ * openat.c, openat.h: Reflect s/_die/_fail/ renaming.
+
+ * mkdir-p.c (CLEANUP_CWD): Return *true*, not false when failing
+ to restore initial working directory.
+
+ Provide an alternative to exiting immediately upon save_cwd or
+ restore_cwd failure. Now, an application can arrange e.g.,
+ to perform a longjump in that case.
+ * openat.c: Include dirname.h.
+ Use IS_ABSOLUTE_FILE_NAME rather than testing for leading slash.
+ (rpl_openat, fdopendir, fstatat): Call openat_save_die
+ and openat_restore_die rather than calling error directly.
+ Don't include "error.h" or "exitfail.h"; they're no longer needed.
+
+ * openat-die.c (openat_save_die, openat_restore_die): New file.
+ * openat.h (openat_save_die, openat_restore_die): Declare and define.
+
+2005-06-13 Jim Meyering <jim@meyering.net>
+
+ * mkdir-p.c (make_dir_parents): New parameter: different_working_dir,
+ to tell caller if/when we change the working directory and are
+ unable to return to the initial one.
+ * mkdir-p.h (make_dir_parents): Update prototype.
+
+2005-06-12 Jim Meyering <jim@meyering.net>
+
+ * mkdir-p.c (CLEANUP_CWD): Change one more `return 1' to
+ `return false'. This fixes a bug introduced on 2004-07-30.
+
+2005-06-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ Use "file name" when talking about file names, instead of "filename"
+ or "path", as per the GNU coding standards.
+ * mkdir-p.c: Renamed from makepath.c.
+ (make_dir_parents): Renamed from make_path. All callers changed.
+ * mkdir-p.h: Likewise. All includers changed.
+ * filenamecat.c: Renamed from path-concat.c.
+ (file_name_concat): Renamed from path_concat. All callers changed.
+ [TEST_FILE_NAME_CONCAT]: Renamed from TEST_PATH_CONCAT.
+ * filenamecat.h: Likewise. All includers changed.
+ * acl.c: Don't use "path" or "filename" to mean "file name"
+ in comments or local variable names.
+ * basename.c: Likewise.
+ * canonicalize.c, canonicalize.h: Likewise.
+ * dirname.c, dirname.h: Likewise.
+ * euidaccess.c: Likewise.
+ * exclude.c: Likewise
+ * fnmatch_.h, fnmatch_loop.c: Likewise.
+ * fsusage.c, fsuage.h: Likewise.
+ * fts.c, fts_.h: Likewise.
+ * getcwd.c: Likewise.
+ * getloadavg.c: Likewise.
+ * mkstemp.c: Likewise.
+ * mountlist.c, mountlist.h: Likewise.
+ * openat.c, openat.h: Likewise.
+ * readlink-stub.c: Likewise.
+ * readutmp.c, readutmp.h: Likewise.
+ * rename.c: Likewise.
+ * rmdir.c: Likewise.
+ * same.c: Likewise.
+ * savedir.c: Likewise.
+ * stripslash.c: Likewise.
+ * tempname.c: Likewise.
+ * xreadlink.c: Likewise.
+ * exclude.c (excluded_file_name): Renamed from excluded_filename.
+ All uses changed.
+ * exclude.h: Likewise.
+
+2005-05-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * euidaccess.c (getuid, getgid, getuid, getegid)
+ [!defined _POSIX_VERSION]: Remove decls; not needed these days.
+ * idcache.c (getpwuid, getpwnam, getgrgid, getgrnam)
+ [!defined _POSIX_VERSION]: Remove decls; not needed these days.
+ * pathmax.h: Include <limits.h> unconditionally, since other
+ files have been getting away with it for years (MORE/BSD 4.3
+ is extinct now).
+ * userspec.c (getpwnam, getgrnam, getgrgid)
+ [!defined _POSIX_VERSION]: Remove decls; not needed these days.
+
+2005-05-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * pathmax.h (_POSIX_PATH_MAX) [!defined _POSIX_PATH_MAX]:
+ Define to 256, not 255, as per modern POSIX.
+
+2005-05-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ * fts.c: Don't worry about debugging on pre-C99-comopatible hosts;
+ the configuration hassle isn't worth it.
+ Include inttypes.h and stdint.h unconditionally if FTS_DEBUG.
+ (LONGEST_MODIFIER, PRIuMAX): Remove.
+
+ * strnumcmp.c, strnumcmp.h, strnumcmp-in.h, strintcmp.c:
+ New files.
+
+2005-05-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * fts.c (fd_safer) [_LGPL_PACKAGE]: New static function,
+ so that unistd-safer.h (GPL'ed code) need not be included.
+
+2005-05-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ Split the fts code into GPL'ed and LGPL'ed parts, and fix some
+ minor memory-allocation bugs.
+
+ * fts.c: Don't include "cycle-check.h" or "hash.h".
+ (setup_dir, free_dir): New functions.
+ (enter_dir, leave_dir): Define trivial
+ alternatives of _LGPL_PACKAGE. Move to fts-cycle.c if !_LGPL_PACKAGE.
+ (HT_INITIAL_SIZE, ENTER_DIR): Remove. All uses removed.
+ (LEAVE_DIR): Fix typo: pass Fts and Ent to leave_dir.
+ (struct Active_dir, AD_compare, AD_hash, enter_dir, leave_dir):
+ Move to fts-cycle.c.
+ (fts_open): Use setup_dir.
+ (fts_close): Use free_dir.
+ (fts_read): Have just one copy of the ENTER_DIR code rather than three.
+ This adds a label and some gotos, but the alternatives were messier.
+ Check for memory allocation failure when entering a dir.
+ (fts_stat) [_LGPL_PACKAGE]: Bring back glibc cycle detection code.
+ * fts_.h (_LGPL_PACKAGE) [defined _LIBC]: New macro.
+ (FTS): New member fts_cycle, that is a union that contains the
+ old active_dir_ht and cycle_state. All uses changed to mention
+ fts_cycle.ht and fts_cycle.state.
+ * fts-cycle.c: New file, containing GPL'ed code migrated out of
+ fts.c, with the following changes:
+ (setup_dir, free_dir): New functions.
+ (enter_dir): Now returns bool. Return true if successful, false
+ if memory exhausted. All callers changed.
+ Do not bother partly cleaning up on
+ memory allocation failure; that is free_dir's job.
+ However, free ad if hash_insert fails, to avoid memory leak.
+ (enter_dir, leave_dir): Accommodate change to FTS by inspecting
+ fts->fts_options to see which union member to use.
+
+2005-05-20 Eric Blake <ebb9@byu.net> (tiny change)
+
+ * chown.c (rpl_chown): Return -1 on failure.
+
+2005-05-20 Jim Meyering <jim@meyering.net>
+
+ * fts.c (fts_open): Remove useless but otherwise harmless malloc call.
+ Spotted by Paul Eggert.
+
+2005-05-19 Jim Meyering <jim@meyering.net>
+
+ * unlinkdir.h (cannot_unlink_dir) [UNLINK_CANNOT_UNLINK_DIR]:
+ Use #define rather than a static function, to avoid a warning
+ when the function was not used.
+
+2005-05-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * canonicalize.c: Include canonicalize.h first, to test interface.
+ Include <stddef.h> unconditionally, since we assume C89 now.
+ All uses of PTR_INT_TYPE replaced by ptrdiff_t.
+ * fts.c: Include fts_.h first, to check interface.
+ Do not include intprops.h; no longer needed.
+ Include cycle-check.h and hash.h, since fts_.h no longer does.
+ Remove unnecessary casts of closedir to void.
+ (fts_build): Use a simpler method (not involving TYPE_SIGNED) to
+ decide whether to decrement nlinks.
+ * fts_.h: Do not include hash.h or cycle-check.h; no longer needed.
+ (FTS): Use struct hash_table * instead of Hash_table, so that
+ we no longer need to include hash.h here.
+
+2005-05-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * unlinkdir.c, unlinkdir.h: New files.
+
+2005-05-14 Jim Meyering <jim@meyering.net>
+
+ * unlocked-io.h, gethrxtime.c, gethrxtime.h, mountlist.h,
+ * xtime.h, path-concat.c: Correct cpp indentation.
+
+2005-05-14 Jim Meyering <jim@meyering.net>
+
+ Update FSF postal mail address everywhere.
+
+2005-05-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * fts_.h (FTS): Use correct type for fts_compar member.
+ (FTSENT): New member fts_fts. Remove members fts_ino, fts_dev,
+ fts_nlink; no longer needed now that fts_statp is always there.
+ All uses changed to use fts_statp instead.
+ * fts.c (__P): Remove. All uses rewritten to assume C89 or better.
+ (fts_open): Don't cast a function value in a possibly-unsafe way.
+ (fts_compar): New function.
+ (fts_sort): Use it. But optimize the common case where all
+ pointers smell the same.
+
+2005-05-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * yesno.c: Include getline.h, not ctype.h.
+ (yesno): Don't remove leading white space; POSIX doesn't allow it.
+ Use getline to remove arbitrary restriction on response length.
+
+2005-05-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * makepath.c (make_path): chdir to "//", not "/", if the file name
+ starts with exactly two slashes. This doesn't solve the problem
+ in general but it's better than nothing. Problem reported by
+ Pierre A. Humblet via Eric Blake.
+
+2005-05-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * modechange.h (mode_free): Remove; all callers changed to invoke
+ 'free'.
+ * modechange.c: Likewise.
+ xstrtol.h, stdbool.h, stddef.h: Don't include; no longer needed.
+ (MODE_DONE): New constant.
+ (struct mode_change): Remove 'next' member.
+ (make_node_op_equals): New function; like the old one of the
+ same name, except it allocates an array.
+ (mode_compile, mode_create_from_ref): Use it.
+ (mode_compile): Allocate result as an array, not a linked list.
+ Parse octal string ourself, so that we catch mistakes like "+0".
+ (mode_adjust): Arg is an array, not a linked list.
+
+ * mbswidth.c, regex.c, strtol.c: Sync from gnulib.
+
+2005-04-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tempname.c (S_ISDIR, S_IRUSR, S_IRUSR, S_IWUSR, S_IXUSR): Remove.
+ [!_LIBC] Include "stat-macros.h" instead.
+
+ * file-type.c: Include file-type.h first.
+ * filetype.h: Don't assume <sys/stat.h> was included first.
+
+ * modechange.c: Include stat-macros.h, xalloc.h.
+ (S_ISDIR, S_ISUID, S_ISGID, S_ISVTX, S_IRUSR, S_IWUSR, S_IXUSR):
+ (S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH, S_IXOTH, S_IRXWU):
+ (S_IRWXG, S_IRWXO, CHMOD_MODE_BITS):
+ Remove. This is now stat-macros.h's job.
+ (talloc): Remove. All callers replaced by xalloc, so that
+ our invokers don't have to worry about reporting memory failures.
+ (make_node_op_equals): Remove.
+ (MODE_ORDINARY_CHAGE, MODE_X_IF_ANY_X, MODE_COPY_EXISTING):
+ New constants.
+ (struct mode_change): Moved here from modechange.h.
+ (mode_append_entry): Remove.
+ (mode_compile): Remove MASKED_OPS arg, since it encouraged
+ apps to have incorrect behavior. Use simpler algorithm for head
+ and tail. Don't futz with umask; that's now the job of mode_adjust.
+ Detect more invalid usages rather than having somewhat-random behavior.
+ Don't insert an "a=" action, as that leads to incorrect behavior.
+ (mode_compile, mode_create_from_ref): Return NULL on error instead
+ of an enum, since now there's only one way to have an error. All
+ callers changed.
+ (mode_adjust): Accept new arg UMASK_VALUE, and interpret it
+ at the correct time. Simplify calculation of "+u" and its ilk.
+ Don't mishandle "+X".
+ (mode_free): Remove "register" and localize decls.
+ * modechange.h (MODE_X_IF_ANY_X, MODE_COPY_EXISTING):
+ (struct mode_change): Move to modechange.c; callers don't
+ need to see this stuff.
+ (MODE_MASK_EQUALS, MODE_MASK_PLUS, MODE_MASK_MINUS, MODE_MASK_ALL):
+ (MODE_INVALID, MODE_MEMORY_EXHAUSTED, MODE_BAD_REFERENCE): Remove.
+ (mode_change, mode_adjust): Reflect the new signatures noted above.
+
+2005-04-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.am (noinst_LIBRARIES): fetish -> coreutils.
+ (libcoreutils_a_SOURCES): Renamed from libfetish_a_SOURCES.
+ All uses changed.
+ (libcoreutils_a_LIBADD): Renamed from libfetish_a_LIBADD.
+ All uses changed.
+ (libcoreutils_a_DEPENDENCIES): Renamed from libfetish_a_DEPENDENCIES.
+ All uses changed.
+ * chdir-long.c: fetish->coreutils in comment.
+ * t-chdir-long: fetish->coreutils in compilation command.
+
+2005-04-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getdate.y (zone): Allow relunit_snumber after tZONE, so
+ that "UTC +1 second" continues to work. Problem reported
+ by Dmitry V. Levin.
+ (relunit_snumber): New rule.
+ (relunit): Use it.
+
+2005-04-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getdate.y (universal_time_zone_table): New constant.
+ (time_zone_table): Remove GMT, UT, UTC entries; they're now in
+ universal_time_zone_table.
+ (lookup_zone): Prefer universal_time_zone_table to
+ local_time_zone_table, so that "GMT" time stamps are allowed in
+ London during the summer. Problem reported by Ian Abbott.
+
+2005-04-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ Add bulletproofing for cases where stdin, stdout, or stderr are closed.
+ * fcntl-safer.h, open-safer.c: Remove.
+ * fd-safer.c: New file.
+ * dup-safer.c: Include unistd-safer.h first, to test interface.
+ (dup_safer) [!deefined F_DUPD]: Use new fd_safer function instead of
+ rolling our own code.
+ * fts.c: Include unistd-safer.h.
+ (fts_safe_changedir): Use fd_safer.
+ * getloadavg.c: Include unistd-safer.h.
+ (getloadavg): Use fd_safer.
+ * getusershell.c: Include stdio-safer.h.
+ (getusershell): Use fopen_safer.
+ * save-cwd.c: Include unistd-safer.h.
+ (save_cwd): Use fd_safer.
+ * unistd-safer.h (fd_safer): New decl.
+ * Makefile.am (libfetish_a_SOURCES): Remove dup-safer.c,
+ fcntl-safer.h, fopen-safer.c, open-safer.c, stdio-safer.h,
+ unistd-safer.h.
+
+2005-04-09 Jim Meyering <jim@meyering.net>
+
+ * fts.c (__attribute__, ATTRIBUTE_UNUSED): Define.
+ Mark parameter `sp' with ATTRIBUTE_UNUSED.
+
+ Avoid warnings from gcc-4.
+ * canon-host.c (canon_host) [HAVE_GETADDRINFO]: Use memset
+ rather than `= { 0 };' to initialize local `hint'.
+ * unicodeio.c (__attribute__, ATTRIBUTE_UNUSED): Define.
+ (exit_failure_callback, fallback_failure_callback): Mark unused
+ parameters with ATTRIBUTE_UNUSED.
+
+ * posixtm.c (posixtime) [lint]: Avoid spurious warning from gcc-4's
+ -Wuninitialized: initialize tm0.tm_year.
+
+ * human.c (humblock): Set *options even when returning due to
+ xstrtoumax conversion failure. Thanks to a used-uninitialized
+ warning from gcc-4.
+
+2005-04-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * nanosleep.c (rpl_nanosleep): Include "timespec.h" before macros
+ that might redefine system include files.
+ (siginterrupt) [!HAVE_SIGINTERRUPT]: New macro.
+ (my_usleep): Use NULL rather than (void *) 0.
+ (rpl_nanosleep) [!defined SA_NOCLDSTOP]:
+ Use siginterrupt to specify that system calls should be interrupted.
+ (rpl_nanosleep): Move initialization of suspended closer to call of
+ my_usleep.
+
+2005-04-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getdate.y (parser_control): rels_seen is now a boolean, not a
+ count, since there's no maximum. All uses changed.
+ Add member dsts_seen.
+ (local_zone): Accumulate dsts_seen rather than relying on tm_isdst
+ not being INT_MAX.
+ (get_date): Initialize dsts_seen, and check that it doesn't go over 1.
+ Use pc_rels_seen to decide whther a date is absolute.
+
+ * getdate.y (number): Don't overwrite year.
+ (get_date): Initialize pc.year.digits to 0, not 4, to enable above
+ check.
+
+2005-03-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * readutmp.h (read_utmp): New arg OPTIONS. All uses changed.
+ * readutmp.c: Likewise. Include signal.h, stdbool.h.
+ (desirable_utmp_entry): New function.
+ (read_utmp) [defined UTMP_NAME_FUNCTION]: Redo memory allocation
+ using x2nrealloc, to simplify logic.
+ (read_utmp) [!defined UTMP_NAME_FUNCTION]: Check for overflow in
+ size calculation. Do not assume utmp file is a regular file.
+ * readutmp.h (UT_PID): Moved here from ../src/who.c.
+ (READ_UTMP_CHECK_PIDS): New constant.
+
+2005-03-29 Jim Meyering <jim@meyering.net>
+
+ * long-options.c (long_options): Use NULL, not `0'.
+
+2005-03-27 Jim Meyering <jim@meyering.net>
+
+ * argmatch.c: Clarify comment: null-terminated -> NULL-terminated.
+
+2005-03-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * intprops.h (INT_STRLEN_BOUND, INT_BUFSIZE_BOUND):
+ "one's complement" -> "ones' complement" in comment, as per Knuth.
+ "value of type" -> "type or expression" in comment.
+ * mktime.c, strftime.c: Propagate intprops.h comment nits.
+
+2005-03-26 Jim Meyering <jim@meyering.net>
+
+ Comment nits.
+ * intprops.h: Add the apostrophe in `(one|two)'s complement'.
+ Correct typos: s/or/of/.
+
+2005-03-23 Jim Meyering <jim@meyering.net>
+
+ * canonicalize.c: Remove duplicate `#include "stat-macros.h"'.
+
+2005-03-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.am (libfetish_a_SOURCES): Remove stat-macros.h, xstrtoul.c,
+ as they are now done by Autoconf macros.
+
+2005-03-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * gettext.h, regex.c, setenv.c, vasprintf.c: Sync from gnulib.
+ * vasnprintf.c (EOVERFLOW): Define if not already defined.
+ This merges a change from gnulib.
+
+2005-03-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * strftime.c (my_strftime): If the underlying strftime returns 0
+ (which shouldn't happen), generate nothing instead of returning 0
+ immediately, so that nstrftime (NULL, ...) doesn't return 0.
+
+2005-03-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * strftime.c (my_strftime): Prepend space to format so that we can
+ reliably distinguish strftime failure from empty output on POSIX
+ hosts.
+
+2005-03-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * mktime.c (TYPE_TWOS_COMPLEMENT, TYPE_ONES_COMPLEMENT,
+ TYPE_SIGNED_MAGNITUDE, TYPE_MINIMUM, TYPE_MAXIMUM): Sync from
+ intprops.h.
+ * strtol.c: Likewise.
+
+2005-03-14 Jim Meyering <jim@meyering.net>
+
+ * strftime.c (my_strftime) [HAVE_STRFTIME && ! (_NL_CURRENT
+ && HAVE_STRUCT_ERA_ENTRY)]: Initialize the first byte of ubuf[]
+ to be nonzero so that we (and caller) can detect the difference
+ between a valid zero-length expansion and an error return, even
+ when the underlying strftime fails before writing anything into
+ that location.
+
+2005-03-11 Jim Meyering <jim@meyering.net>
+
+ * getdate.c: Regenerate using bison-2.0.
+
+2005-03-10 Jim Meyering <jim@meyering.net>
+
+ * save-cwd.c [!HAVE_FCHDIR]: Define open, fchdir, and chdir_long
+ so that this module works on systems without fchdir.
+
+ * Makefile.am (libfetish_a_SOURCES): Remove xstrtol.c and xstrtol.h.
+
+2005-03-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ Factor int-properties macros into a single file, except for
+ glibc-related files.
+ * intprops.h: New file.
+ * getloadavg.c: Include it instead of limits.h.
+ (INT_STRLEN_BOUND): Remove.
+ * human.c: Include intprops.h.
+ (group_number): Use INT_STRLEN_BOUND instead of rolling it ourself.
+ * human.h (LONGEST_HUMAN_READABLE): Use 146/485 rather than 302/1000.
+ * inttostr.h: Include intprops.h instead of limits.h.
+ (INT_STRLEN_BOUND, INT_BUFSIZE_BOUND): Remove.
+ * mktime.c (TYPE_IS_INTEGER, TYPE_TWOS_COMPLEMENT): New macros,
+ for consistency with intprops.h.
+ (time_t_is_integer, twos_complement_arithmetic): Use them.
+ * sig2str.h: Include <signal.h>, intprops.h.
+ (INT_STRLEN_BOUND): Remove.
+ * strftime.c (TYPE_SIGNED): Remove.
+ (INT_STRLEN_BOUND): Switch to same implementation as intprops.h.
+ * strtol.c: Adjust comments to match intprops.h.
+ * userspec.c: Include intprops.h.
+ (TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM): Remove.
+ * utimecmp.c, xnanosleep.c, xstrtol.c: Likewise.
+ * utimecmp.c (utimecmp): Use TYPE_IS_INTEGER, TYPE_TWOS_COMPLEMENT
+ instead of rolling our own expressions.
+ * xstrtol.c: Include xstrtol.h first, to test interface.
+ * fts.c: Include intprops.h.
+ (TYPE_SIGNED): Remove.
+
+2005-03-09 Jim Meyering <jim@meyering.net>
+
+ More migration to AC_LIBSOURCES/AC_LIBOBJ.
+ * Makefile.am (libfetish_a_SOURCES): Remove two more pairs of files:
+ cycle-check.c, cycle-check.h and argmatch.c, argmatch.h.
+
+ * cycle-check.c: Don't include "xalloc.h". It's not used.
+
+2005-03-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ Remove workaround for bug in Linux kernel 2.6.8 or thereabouts.
+ The workaround isn't strictly needed for POSIX conformance, and
+ it's too much of a pain to configure and maintain. We'll ask
+ people to fix their kernels instead.
+ * xnanosleep.c: Don't include gethrxtime.h or xtime.h.
+ (NANOSLEEP_BUG_WORKAROUND): Remove.
+ (xnanosleep): Remove the workaround.
+
+2005-02-27 Jim Meyering <jim@meyering.net>
+
+ * xnanosleep.c (xnanosleep): Work around bug in Linux-2.6.8.1's
+ nanosleep whereby it fails without setting errno upon being resumed
+ after being suspended.
+
+2005-02-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * vasnprintf.c (VASNPRINTF) [!USE_SNPRINTF]: Correct the test for
+ integer overflow again. Actually, neither this nor the 2005-01-23
+ change fixes any bug on any plausible platform; it's more of a
+ code-clarity thing.
+
+ * config.charset, gettext.h, localcharset.c: Sync from gnulib.
+
+2005-02-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * strftime.c: Include <stdbool.h>. Use bool where appropriate,
+ instead of int.
+ (my_strftime): Do not mishandle years close to INT_MAX, by doing
+ the right thing even if adding 1900 would overflow. Similarly
+ for tm_mon + 1 and tm_yday + 1.
+ Make %Y always equivalent to %C%y, and similarly for %G and %g.
+ (DO_NUMBER, DO_NUMBER_SPACEPAD): Set digits to d, not a conditional.
+ (DO_SIGNED_NUMBER): New macro.
+ (my_strftime) [HAVE_TZNAME]: Don't dump core if tp->tm_dst > 1.
+
+2005-02-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.am (libfetish_a_SOURCES): Remove xnanosleep.c,
+ xnanosleep.h; now done by ../m4/xnanosleep.m4 automatically.
+
+2005-02-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * gethrxtime.h, gethrxtime.c, xtime.h: New files.
+ * timespec.h (gettime): Return void, since it always
+ succeeds now. All uses changed.
+ * gettime.c (gettime) Likewise.
+ [HAVE_NANOTIME]: Prefer nanotime.
+ Assume gettimeofday succeeds, as POSIX requires.
+ Assime time () succeeds, since other code already does.
+ * xnanosleep.c: Include xtime.h and gethrxtime.h, not xalloc.h.
+ (timespec_subtract): Remove.
+ (NANOSLEEP_BUG_WORKAROUND): New constant.
+ (xnanosleep): Use gethrxtime rather than gettime; this simplifies
+ things considerably. Use it only on GNU/Linux hosts, since the
+ workaround shouldn't be needed elsewhere.
+
+2005-02-20 Neil Conway <neilc@samurai.com>
+
+ * xgethostname.c (xgethostname): Check for ENOMEM, which is
+ returned by OSX/Darwin if the specified buffer is not large
+ enough for the hostname.
+
+2005-02-20 Jim Meyering <jim@meyering.net>
+
+ More of the same.
+ * Makefile.am (libfetish_a_SOURCES): Remove
+ linebuffer.[ch] and stripslash.c.
+
+2005-02-11 Jim Meyering <jim@meyering.net>
+
+ Remove names of files that are now mentioned in AC_LIBSOURCES
+ and AC_LIBOBJ uses in inttostr.m4.
+ * Makefile.am (libfetish_a_SOURCES): Remove imaxtostr.c,
+ offtostr.c, and umaxtostr.c.
+ (EXTRA_DIST): Remove inttostr.c and inttostr.h.
+
+2005-02-08 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libfetish_a_SOURCES): Remove memcasecmp.c
+ and memcasecmp.h.
+
+2005-02-07 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libfetish_a_SOURCES): Remove fts.c, fts_.h, and
+ getcwd.h now that they're mentioned in AC_LIBSOURCES and AC_LIBOBJ
+ uses in the corresponding ../m4/*.m4.
+
+2005-02-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * memrchr.h: New file.
+ * chdir-long.c: Include it.
+ * memrchr.c [!defined _LIBC]: Include it rather than <string.h>.
+ Don't bother including stddef.h.
+
+2005-02-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * mountlist.h (MOUNTLIST_H_): New macro, to protect against double
+ inclusion.
+ Include <sys/types.h>, for dev_t.
+ (ME_DUMMY, ME_REMOTE): Move from here....
+ * mountlist.c (ME_DUMMY, ME_REMOTE): To here.
+ (ME_DUMMY): Count "subfs" as a dummy. Problem reported by
+ Dmitry V. Levin.
+ Include mountlist.h first, to test the interface.
+
+2005-01-29 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libfetish_a_SOURCES): Remove many files from this
+ list, now that automake determines their names automatically,
+ thanks to the new AC_LIBSOURCES and AC_LIBOBJ uses in the
+ corresponding ../m4/*.m4 files.
+ (EXTRA_DIST): Add getdate.c here, so that we continue to distribute it.
+
+2005-01-25 Jim Meyering <jim@meyering.net>
+
+ * path-concat.c: Don't include assert.h.
+ (path_concat): Remove assertion that would have triggered
+ for ABASE starting with more than one slash.
+ Reported by Andreas Schwab.
+
+ * path-concat.c (path_concat): Set *BASE_IN_RESULT
+ properly when ABASE is an absolute file name.
+ Correct the description of this function.
+ Include <assert.h>.
+ Add an assertion and a test driver.
+ This fixes a bug introduced on 2004-07-02.
+ Andreas Schwab reported the resulting failure of cp --parents:
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-01/msg00130.html
+
+2005-01-23 Jim Meyering <jim@meyering.net>
+
+ * vasnprintf.c (VASNPRINTF) [!USE_SNPRINTF]: Correct the test for
+ integer overflow.
+
+2005-01-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ Sync from gnulib.
+ * error.c [!_LIBC && !ENABLE_NLS]: Do not include "gettext.h";
+ not needed. This removes a dependency on the gettext module.
+ [defined _LIBC]: Do not include <libintl.h>; not needed.
+
+2005-01-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * save-cwd.c (save_cwd): Remove code to support the case
+ where fchdir is missing or flaky.
+
+ * Makefile.am (libfetish_a_SOURCES): Add version-etc-fsf.c.
+
+2005-01-20 Simon Josefsson <jas@extundo.com>
+
+ * version-etc-fsf.c: New file, with version_etc_copyright.
+ * version-etc.c: Remove version_etc_copyright.
+ * version-etc.h (version_etc_copyright): Use [] instead of * in
+ prototype, suggested by Paul Eggert.
+
+2005-01-19 Jim Meyering <jim@meyering.net>
+
+ * openat.h (AT_SYMLINK_NOFOLLOW): Define to 4096, so it's the
+ same value as for Solaris 9.
+
+ * chdir-long.c (chdir_long): Rewrite to remove limitation on
+ component length. This included changing the parameter to be
+ of type `char *' rather than `char const *'.
+ * chdir-long.h (chdir_long): Update prototype.
+ * t-chdir-long: A test harness to exercize chdir-long.c's
+ sample main program.
+
+ * openat.c (fdopendir, fstatat): New functions.
+ * openat.h: Include headers required for use of DIR and struct stat.
+ [AT_SYMLINK_NOFOLLOW]: Define.
+ (fdopendir, fstatat): Add prototypes.
+
+2005-01-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ * human.c (SIZE_MAX, UINTMAX_MAX): Move these conditional
+ definitions to be after all include files, to avoid collisions.
+ Problem reported by Bob Proulx.
+
+2005-01-04 Bob Proulx <bob@proulx.com>
+
+ * obstack.c [DEFAULT_ALIGNMENT]: Use an intermediate type to simplify
+ offsetof() macro construct to avoid compile failure with native HP-UX
+ 11.0 ANSI C compiler.
+
+2005-01-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * utimens.c (futimens): Robustify the previous patch, by checking
+ for known valid error numbers rather than observed invalid ones.
+
+2005-01-03 Jim Meyering <jim@meyering.net>
+
+ * utimens.c (futimens): Account for the fact that futimes
+ can also fail with errno == ENOSYS in that case.
+ Patch from Dmitry V. Levin.
+
+2005-01-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * utimens.c (futimens) [HAVE_FUTIMES]: Fall back on utimes if
+ futimes fails with errno == ENOENT. Problem reported by
+ Dmitry V. Levin.
+
+2005-01-02 Jim Meyering <jim@meyering.net>
+
+ * version-etc.c (version_etc_copyright): Update copyright date.
+
+2004-12-31 Jim Meyering <jim@meyering.net>
+
+ * openat.c (rpl_openat): Correct comment.
+ Call free_cwd, to avoid leaking a file descriptor.
+
+2004-12-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getdate.y (YYSTACK_USE_ALLOCA): Define to 0, since there's no
+ need to extend the stack.
+ (YYINITDEPTH): New macro, so that the initial stack isn't overly
+ large.
+
+2004-12-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * c-strtod.c (STRTOD): Depend on HAVE_C99_STRTOLD, not
+ HAVE_DECL_STRTOLD.
+
+ * alloca_.h: Conditionalize on _GNULIB_ALLOCA_H, not _ALLOCA_H.
+ Remove now-obsolete comment about AIX.
+ * getdate.y: Include <alloca.h> only if HAVE_ALLOCA.
+ (YYSTACK_USE_ALLOCA): Define to 0 if !HAVE_ALLOCA.
+ (YYMAXDEPTH): New macro.
+
+2004-12-11 Jim Meyering <jim@meyering.net>
+
+ * chdir-long.c: Fail via #error if PATH_MAX is not defined, since
+ this file is now compiled only on systems that define PATH_MAX.
+
+2004-12-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getdate.y (textint): New member "negative".
+ (time_zone_hhmm): New function.
+ Expect 14 shift-reduce conflicts, not 13.
+ (o_colon_minutes): New rule.
+ (time, zone): Use it to add support for +HH:MM, UTC+HH:MM.
+ (yylex): Set the "negative" member of signed numbers.
+
+2004-12-06 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libfetish_a_SOURCES): Begin removing .c and .h file
+ names, as they are added to AC_LIBSOURCES directives in the
+ corresponding m4/*.m4 files.
+
+2004-12-05 Jim Meyering <jim@meyering.net>
+
+ Currently, fpending.m4 punts (by defining PENDING_OUTPUT_N_BYTES
+ to 1) if it doesn't find a valid expression for the replacement
+ function. Before this change, that might have gone undetected
+ for some time. Now, we'll catch it close to the source.
+
+ * t-fpending.c: New file. Test the __fpending function.
+ This ensures that if there is an error in the definition of the
+ PENDING_OUTPUT_N_BYTES expression, we'll find about it right away;
+ that value is used only in the rare event that close_stdout's
+ fclose fails with EBADF.
+ * Makefile.am (unit-test): New target.
+ (check): Depend on it.
+ (noinst_PROGRAMS): Define.
+ (LDADD): Define.
+ * Makefile.am (unit-test): Depend on t-fpending.
+ Make the target .PHONY.
+
+2004-12-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * openat.c: Include "openat.h" before other include files.
+ Include "exitfail.h".
+ (openat): Remove #undef; no longer needed now that we include openat.h
+ first.
+ (rpl_openat): Add comment about mode_t promotion. Simplify
+ code a bit by moving initializations around. Use exit_failure
+ rather than EXIT_FAILURE.
+ * openat.h: Add copyright and authorship notice.
+ (AT_FDCWD): Use the same value Solaris 9 uses, except of type
+ 'int' not 'unsigned int'.
+
+ * save-cwd.c: Include "save-cwd.h" before other include files.
+ (O_DIRECTORY): Remove; not needed here, since "." must be
+ a directory. All uses removed.
+ (save_cwd): Use __sgi || __sun, not sun || __sun. __sun is
+ universal on Suns, and we also need to test for IRIX.
+ Revamp code to use 'if' rather than '#if'.
+ Avoid unnecessary comparison of cwd->desc to 0.
+
+2004-12-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * hard-locale.c: Assume <locale.h> exists.
+ Include "strdup.h".
+ (GLIBC_VERSION): New macro.
+ (hard_locale): Assume setlocale exists.
+ Rewrite to avoid #ifdef.
+ Use strdup rather than malloc + strcpy.
+ * human.c: Assume <locale.h> exists.
+ (human_readable): Assume localeconv exists.
+
+2004-11-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getcwd.c (is_ENAMETOOLONG): New macro.
+ (__getcwd.c): Don't restore errno; glibc doesn't.
+ [HAVE_PARTLY_WORKING_GETCWD && !defined AT_FDCWD]: Try system getcwd
+ first, falling back to our code only if its results look suspicious.
+ Ensure that the resulting buffer is only as large as necessary.
+
+ * readutmp.c: Include readutmp.h first.
+ Include <errno.h>, since readutmp.h no longer does that.
+ * readutmp.h: Don't include <errno.h>,
+ <sys/param.h>, <time.h>; not needed to establish interface.
+ (errno): Remove decl.
+ (HAVE_STRUCT_XTMP_UT_TYPE): Remove; no longer needed.
+ (UT_TYPE_EQ, UT_TYPE_NOT_DEFINED, UT_TYPE_BOOT_TIME,
+ UT_TYPE_USER_PROCESS, IS_USER_PROCESS): New macros.
+
+2004-11-30 Jim Meyering <jim@meyering.net>
+
+ Change the name of the robust chdir function from chdir to chdir_long.
+ * save-cwd.c: Include chdir-long.h rather than chdir.h.
+ (restore_cwd): Use chdir_long, not chdir.
+ * chdir-long.c: Renamed from chdir.c.
+ * chdir-long.h: Renamed from chdir.h.
+ [!defined PATH_MAX]: Define chdir_long to chdir on systems like the Hurd.
+ * Makefile.am (libfetish_a_SOURCES): Reflect name changes.
+
+ * chdir.c (O_DIRECTORY): Define, if necessary.
+ (memchrcspn): Tiny wrapper around memchr.
+ (rpl_chdir): Use memchrcspn rather than strcspn.
+
+2004-11-28 Jim Meyering <jim@meyering.net>
+
+ * openat.c (rpl_openat): Also accept optional mode parameter.
+ * openat.h (rpl_openat): Adjust prototype.
+
+ * save-cwd.c: Include "chdir.h", so that if save_cwd/getcwd
+ saves a name longer than PATH_MAX, restore_cwd's chdir can use it.
+
+ * Makefile.am (libfetish_a_SOURCES): Add chdir.h and openat.h.
+
+ This is a robust version of chdir, in that it can handle directory
+ names longer than PATH_MAX.
+ * chdir.c, chdir.h: New file.
+ * openat.c, openat.h: New files.
+
+2004-11-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix problems reported by Scott S. Tinsley for HP-UX 11.11 using
+ HP's ANSI C compiler.
+ * fsusage.c (statvfs) [HAVE_SYS_STATVFS_H]: Remove decl.
+ Declaring int functions causes warnings on some modern systems and
+ shouldn't be needed to compile on ancient ones.
+ * same.c (MIN) [defined MIN]: Don't define, since it's already
+ defined.
+
+ * mempcpy.c, mempcpy.h: New files, taken from gnulib.
+ * Makefile.am: (libfetish_a_SOURCES): Add getcwd.h, mempcpy.h.
+ * getcwd.c: Replace by a copy of glibc/sysdeps/posix/getcwd.c, but
+ with the following changes.
+ (__set_errno): Parenthesize properly.
+ Include <stdbool.h>.
+ (MIN, MAX, MATCHING_INO): New macros.
+ (__getcwd): Define with prototype, not K&R form.
+ Use heuristics to allocate default buffer on stack if possible.
+ If AT_FDCWD is defined, use openat and fstatat to avoid O(N**2)
+ behavior, and to avoid the PATH_MAX limit when computing
+ ../../../../...
+ Use MATCHING_INO to compare inode number to file.
+ Check for arithmetic overflow in size calculations.
+ Fix bug in reallocation of dot array that caused getcwd to fail
+ on directories nested deeper than 75.
+ Be more careful about saving errno on error.
+ Do not use realloc; use only free+malloc, as this is a bit
+ more flexible and avoids a needless copy operation.
+ Do not inspect st_dev and st_ino for symbolic links; POSIX
+ doesn't specify the latter.
+ Check for closedir errors.
+ Avoid needless casts.
+ Use "#ifdef weak_alias" around weak_alias, to be like other
+ glibc code.
+ The following changes to getcwd.c have effect only when used in
+ gnulib; they have no effect inside glibc proper.
+ (#pragma alloca) [defined _AIX && !defined __GNUC__]: Remove,
+ as alloca isn't used.
+ (alloca, __alloca): Likewise.
+ [!_LIBC]: Include "getcwd.h", "mempcpy.h".
+ Include <stddef.h>, <stdlib.h>, <string.h>, <limits.h>
+ unconditionally, as gnulib assumes C89 or better.
+ Do not include <sys/param.h>.
+ (errno) [!defined __GNU_LIBRARY__ && !defined STDC_HEADERS]: Remove
+ no-longer-necessary 'extern int errno' decl; gnulib assumes C89 or
+ better.
+ (NULL) [!defined NULL]: Remove; we assume C89 or better.
+ Include <dirent.h> in a way that is compatible with modern Autoconf.
+ (_D_ALLOC_NAMELEN, _D_EXACT_NAMLEN):
+ New macros, if not already defined.
+ Include <unistd.h> if _LIBC, not if __GNU_LIBRARY__.
+ Use "_LIBC", not "defined _LIBC", for consistency.
+ (HAVE_MEMPCPY): Remove; no longer needed now that gnulib has
+ a mempcpy module.
+ (__lstat, __closedir, __opendir, __readdir) [!_LIBC]: New macros.
+ (GETCWD_RETURN_TYPE): Remove. All uses replaced by char *.
+ * xgetcwd.c: David MacKenzie's old code was removed, so give
+ credit only to Jim Meyering and adjust the copyright dates.
+ Do not include <limits.h>, <stdio.h>, <sys/types.h>,
+ <stdlib.h>, <unistd.h>, "pathmax.h".
+ Instead, include "xgetcwd.h" (first) and "getcwd.h".
+ (INITIAL_BUFFER_SIZE): Remove.
+ (xgetcwd): Rely on getcwd, since we now depend on a reliable one.
+
+2004-11-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * utimens.c (__attribute__, ATTRIBUTE_UNUSED): New macros.
+ (futimens): New function, which uses futimes if available.
+ (futimens, utimens): Support timespec==NULL, with same semantics
+ as utime and utimens.
+ * utimens.h (futimens): New decl.
+
+2004-11-23 Sergey Poznyakoff <gray@Mirddin.farlep.net>
+
+ * getopt_.h: Re-addition of __getopt_argv_const caused
+ redefinition warnings. To avoid them, include the defines
+ in `#if !defined __need_getopt ... #endif'. The only place
+ where __getopt_argv_const is used is in definitions
+ of getopt_long and getopt_long_only below, which are as well
+ protected by `#ifndef __need_getopt'.
+ [defined __GETOPT_PREFIX && !defined __need_getopt]: Undef
+ __need_getopt after including <stdio.h> and <unistd.h> These
+ headers might have defined it.
+
+2004-11-23 Jim Meyering <jim@meyering.net>
+
+ * closeout.c: Revert last change, since it seems EBADF is always
+ defined.
+
+2004-11-22 Jim Meyering <jim@meyering.net>
+
+ * closeout.c (EBADF): Fail with `#error ...' if it's not defined,
+ asking the user to report the problem.
+
+2004-11-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * realloc.c (rpl_realloc): Call 'free' if n==0, since realloc
+ might fail. Problem reported by Yoann Vandoorselaere.
+ * calloc.c (rpl_calloc): Defend against buggy calloc implementations
+ that mishandle size_t overflow.
+
+2004-11-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * xgetcwd.c: Include <limits.h>, for PATH_MAX.
+ (xgetcwd): Set errno correctly when failing.
+ Work around Solaris 9 bug: getcwd sets errno==ERANGE even though
+ the failure is actually due to a PATH_MAX problem.
+
+ Further getopt changes to make it more likely that glibc will
+ buy the changes back.
+ * getopt.c (POSIXLY_CORRECT): New constant.
+ (getopt): Use it, so to preserve glibc semantic
+ * getopt1.c (getopt_long, getopt_long_only): Arg is char * const *
+ when compiling for libc.
+ * getopt_.h (__getopt_argv_const): Bring it back.
+ (getopt_long, getopt_long_only): Use it.
+
+ * getopt.c (_getopt_initialize, _getopt_internal_r, _getopt_internal):
+ New arg POSIXLY_CORRECT. All callers changed.
+ (getopt): Argv is now char * const *, as per standard.
+ (_getopt_internal_r, _getopt_internal): Argv is now char **,
+ not char *__getopt_argv_const *.
+ * getopt1.c (getopt_long, _getopt_long_r, getopt_long_only,
+ _getopt_long_only_r): Likewise.
+ * getopt_.h (getopt, getopt_long, geopt_long_only): Likewise.
+ * getopt_int.h (_getopt_internal, _getopt_internal_r,
+ _getopt_long_r, _getopt_long_only_r): Likewise.
+ * getopt_.h (__getopt_argv_const): Remove.
+ (getopt): Argv is now char * const *, as per standard.
+
+ * canon-host.c: Include "strdup.h".
+ (canon_host): Use getaddrinfo if available, so that IPv6 works.
+ Use strdup instead of malloc/strcpy to duplicate strings.
+
+ * getdate.y (tORDINAL): New token.
+ (day, relunit): Allow it for relative times.
+ (relative_time_table): Use tORDINAL for ordinals.
+
+2004-11-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * human.h (LONGEST_HUMAN_READABLE): Add 1 for space before unit.
+ (human_space_before_unit): New constant.
+ * human.c (human_readable): Support it.
+
+2004-11-14 Jim Meyering <jim@meyering.net>
+
+ * closeout.c (close_stdout): Don't fail just because stdout was
+ closed initially, since some programs don't write to stdout in the
+ normal course of operation (other than --version and --help), and
+ we don't want this function to make e.g. `cp 1 2 >&-' fail.
+ But do fail if it was closed and someone has tried to write to it.
+ E.g., printf foo >&-
+
+ * __fpending.c, __fpending.h: Restore these files.
+ They're useful after all.
+ * Makefile.am (libfetish_a_SOURCES): Add __fpending.h.
+
+2004-11-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getopt.c, getopt1.c, getopt_.h, getopt_int.h:
+ Sync from gnulib.
+
+2004-11-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * allocsa.h, mbswidth.c, mktime.c, readlink.c, getdate.y,
+ quotearg.c, strftime.c: Sync from gnulib.
+
+2004-11-06 Jim Meyering <jim@meyering.net>
+
+ * __fpending.c, __fpending.h: Remove files.
+
+ * Makefile.am (libfetish_a_SOURCES): Remove __fpending.h, now
+ that it's no longer used.
+
+ Ensure that no close failure goes unreported.
+ * closeout.c (close_stdout): Always close stdout. I.e., don't
+ return early when it seems there's nothing to flush.
+ Don't include __fpending.h.
+
+2004-11-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * unsetenv.c: New file, from gnulib. Needed for new getdate.y.
+ * Makefile.am (libfetish_a_SOURCES): Remove setenv.c.
+ * xreadlink.c: Sync from gnulib.
+
+2004-11-03 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libfetish_a_SOURCES): Add setenv.c and setenv.h.
+
+2004-11-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getdate.y, getpass.c, setenv.h: Sync from gnulib.
+
+2004-10-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getdate.y, getpagesize.h, mktime.c: Sync from gnulib.
+
+2004-10-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * mktime.c (leapyear): Arg is long int, not int.
+ Change imported from gnulib.
+
+2004-10-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ Sync from gnulib.
+ * diacrit.c, diacrit.h: Add copyright notice.
+ * getpass.c (fflush_unlocked, flockfile, funlockfile)
+ (fputs_unlocked, putc_unlocked) [!_LIBCS && !USE_UNLOCKED_IO]: Map
+ to real functions.
+
+2004-10-13 Jim Meyering <jim@meyering.net>
+
+ * fts.c (fts_read): When about to fail (by returning NULL) due
+ to a failed fchdir or failed fts_safe_changedir call, set
+ `sp->fts_cur = p'. Do this by removing the explicit `return NULL;'
+ statements and setting p->fts_errno so execution falls through
+ to the common-case code below. Otherwise, after such a failure,
+ calling fts_close would attempt to free an already-freed buffer.
+ Reported by Luis Lopez Lopez in http://bugs.debian.org/276352.
+
+2004-10-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ Sync from gnulib.
+
+ * xalloc.h (xmemdup): Renamed from xclone.
+ * xmalloc.c (xmemdup): Likewise.
+ * xalloc.h (CCLONE, CLONE, NEW, XCALLOC, XMALLOC, XREALLOC,
+ XFREE): Remove these long-obsolescent macros.
+ * xmalloc.c (xstrdup): Implementation moved here from xstrdup.c
+ * xstrdup.c: Remove.
+
+ * argmatch.c, closeout.c, error.c, exclude.c, getdate.y,
+ getndelim2.c, getpass.c, getusershell.c, linebuffer.c,
+ md5.c, mountlist.c, posixtm.c, readtokens.c, readutmp.c,
+ regex.c, sha1.c, version-etc.c, yesno.c:
+ Include "unlocked-io.h" only if USE_UNLOCKED_IO.
+ * unlocked-io.h: Don't worry about USE_UNLOCKED_IO; that's now
+ the includer's responsibility.
+
+2004-10-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ Sync from gnulib.
+ * dirfd.h, getpagesize.h: Add copyright notice.
+ * vasnprintf.c: (VASNPRINTF): Set errno=EOVERFLOW if the output is
+ too long.
+ * vasnprintf.h: Doc fix.
+ * vasprintf.c: Don't include <limits.h>.
+ (vasprintf): Rely on vasnprintf to set errno=EOVERFLOW.
+
+2004-09-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * modechange.c (mode_compile): Don't decrement a pointer that
+ points to the start of a string, as the C Standard says the
+ resulting behavior is undefined.
+
+2004-09-22 Jim Meyering <jim@meyering.net>
+
+ * getopt.c: Remove extraneous spaces before TAB.
+ * getopt_.h: Likewise.
+
+ * backupfile.c: Remove trailing blanks.
+ * euidaccess.c: Likewise.
+
+2004-09-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * backupfile.h (enum backuptype): Rename none -> no_backups,
+ simple -> simple_backups, numbered_existing ->
+ numbered_existing_backups, numbered -> numbered_backups
+ to avoid shadowing problems. All uses changed.
+ * argmatch.c (enum backuptype): Likewise.
+ * backupfile.c (check_extension, numbered_backup):
+ Rename locals to avoid shadowing 'basename'.
+ * backupfile.h (VALID_BACKUP_TYPE): Don't evaluate arg more than
+ once.
+
+2004-09-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port to diet libc. Problem reported by Felix von Leitner in
+ <http://lists.gnu.org/archive/html/bug-coreutils/2004-08/msg00171.html>
+ * fts.c (fts_stat, fts_open, fts_read): Use "unsigned short int"
+ rather than the unportable "u_short", and similarly for u_int.
+ * fts_.h (FTSENT): Likewise.
+
+2004-08-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getopt.c, getopt1.c: Sync from gnulib.
+ * getopt_.h: Renamed from getopt.h (this syncs from gnulib).
+ * Makefile.am (libfetish_a_SOURCES): Remove getopt.c, getopt.h,
+ getopt1.c, getopt_int.h.
+ (BUILT_SOURCES, EXTRA_DIST, all-local, $(lib_OBJECTS), getopt.h,
+ MOSTLYCLEANFILES): Add current gnulib snippet for getopt.
+ * .cppi-disable: Add getopt_.h, getopt_int.h.
+ * .cvsignore: Add getopt.h.
+
+2004-08-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * userspec.c: Don't use <alloca.h>, so that we don't use alloca on
+ strings on unbounded length. alloca's performance benefits aren't
+ that important here.
+ (V_STRDUP): Remove.
+ (parse_with_separator): New function, with most of the internals
+ of the old parse_user_spec. Allow user to omit both user and group,
+ for compatibility with FreeBSD.
+ Clone only the user name, not the entire spec.
+ Do not set *uid, *gid unless entirely successful.
+ Avoid memory leak in some failing cases.
+ Fix regression for USER.GROUP reported by Dmitry V. Levin in
+ <http://lists.gnu.org/archive/html/bug-coreutils/2004-08/msg00102.html>
+ (parse_user_spec): Rewrite to use parse_with_separator.
+
+2004-08-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * fts.c (O_DIRECTORY): Define to 0 if the system doesn't define.
+
+ * settime.c (settime): Recode to avoid warning with Sun Forte C 6U2.
+
+ * obstack.c: Include <inttypes.h> and <stdint.h> if available.
+ (union fooround): Use uintmax_t, not long int.
+ The rest is a merge from libc:
+ [defined _LIBC]: Include <shlib-compat.h>.
+ (_obstack) [defined _LIBC]: Remove after 2.3.4.
+
+ * xgethostname.c: Do not include error.h. (merge from gnulib).
+
+ * fnmatch.c (WIDE_CHAR_SUPPORT): Don't set to 1 if missing
+ wmemchr or wmemcpy. Problem reported by Robert Dahlem
+ for Reliant Unix 5.43.
+
+2004-08-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.am (libfetish_a_SOURCES): Add getpass.h.
+ * getpass.h: New file.
+ * .cpp-disable: Add it.
+ * getpass.c [!_LIBC]: Include it.
+
+ * obstack.h (obstack_empty_p):
+ Don't assume that chunk->contents is suitably aligned.
+ * obstack.c (_obstack_begin, _obstack_begin_1, _obstack_newchunk):
+ Likewise. Problem reported by Benno in
+ <http://sources.redhat.com/ml/libc-alpha/2004-08/msg00055.html>.
+
+ * chown.c (rpl_chown): Work even if the file is writeable but not
+ readable. This could be improved further but it'd take some work.
+ * fts.c (diropen): New function.
+ (fts_open, fts_read, fts_children, fts_safe_changedir):
+ Use it, so that the code works even if the directory
+ is writeable but not readable. We'd like it to work even if
+ the directory is merely executable, but I don't know how to do
+ that portably.
+
+ * xalloc-die.c: New file.
+ * xalloc.h (xalloc_fail_func, xalloc_msg_memory_exhausted): Remove.
+ All uses removed.
+ * xmalloc.c (xalloc_fail_func, xalloc_msg_memory_exhausted): Likewise.
+ Move inclusions of gettext.h, error.h, exitfail.h to xalloc-die.c.
+ (_, N_, xalloc_die): Move to xalloc-die.c.
+ * userspec.c (parse_user_spaec): Use xstrdup rather than strdup,
+ so that we needn't mess with xalloc_msg_memory_exhausted.
+
+ * sha1.h (sha1_ctx): Renamed from sha_ctx.
+ (sha1_init_ctx): Renamed from sha_init_ctx.
+ (sha1_process_block): Renamed from sha_process_block.
+ (sha1_process_bytes): Renamed from sha_process_bytes.
+ (sha1_finish_ctx): Renamed from sha_finish_ctx.
+ (sha1_read_ctx): Renamed from sha_read_ctx.
+ (sha1_stream): Renamed from sha_stream.
+ (sha1_buffer): Renamed from sha_buffer.
+ * sha1.c: Likewise.
+
+2004-08-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * canonicalize.h, cycle-check.h, stat-macros.h, strdup.h,
+ strftime.h, xnanosleep.c: Merge from gnulib.
+
+2004-08-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ Merge with gnulib and deal with some minor cleanups resulting.
+
+ * .cppi-disable: Change fnmatch.h to fnmatch_.h.
+ * .cvsignore: Add fnmatch.h, poll.h, stdbool.h, sysexit.h.
+ Remove safe-lstat.c, safe-lstat.h, safe-stat.c, safe-stat.h.
+
+ * backupfile.h, closeout.h, full-write.h, mbswidth.h, xalloc.h:
+ Add extern "C" wrappers for C++.
+
+ * dirname.h (IS_ABSOLUTE_FILE_NAME): Port to DOS.
+
+ * gettime.c (gettime): Fall back on `time' if `gettimeofday'
+ doesn't work.
+ * settime.c: Include <unistd.h>, for stime (on Solaris 8, anyway).
+ (ENOSYS): Define if not defined.
+ (settime): Fall back on stime if it exists and settimeofday fails.
+ But don't bother with fallbacks if a method fails with errno == EPERM.
+
+ * obstack.h: Add white space.
+
+ * printf-parse.c, printf-parse.h, vasnprintf.c: Merge changes from
+ gnulib, but rewrite to avoid "xsize.h".
+
+2004-08-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ * mountlist.c (SIZE_MAX): Define after including files, to avoid
+ a collision on OpenBSD 3.4.
+
+ * fts.c (LONGEST_MODIFIER): New macro.
+ (PRIuMAX) [!PRI_MACROS_BROKEN && !defined PRIuMAX]: New macro.
+ (find_matching_ancestor): Use it for dev_t and ino_t.
+
+ * getndelim2.c: Sync from gnulib.
+
+ * error.c: Work around bug in OpenBSD 3.4 sterror_r: it
+ sometimes returns a positive errno value even when it succeeds.
+ (print_errno_message) [!LIBC]: Fall back on strerror if
+ __strerror_r fails.
+
+2004-08-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * canonicalize.c (errno): Remove decl; we now assume C89 or better.
+ * chown.c (errno): Likewise.
+ * closeout.c (errno): Likewise.
+ * dup-safer.c (errno): Likewise.
+ * dup2.c (errno): Likewise.
+ * exclude.c (errno): Likewise.
+ * fopen-safer.c (errno): Likewise.
+ * ftruncate.c (errno): Likewise.
+ * full-write.c (errno): Likewise.
+ * getcwd.c (errno): Likewise.
+ * lchown.c (errno): Likewise.
+ * memcoll.c (errno): Likewise.
+ * nanosleep.c (errno): Likewise.
+ * putenv.c (errno): Likewise.
+ * rmdir.c (errno): Likewise.
+ * same.c (errno): Likewise.
+ * savedir.c (errno): Likewise.
+ * setenv.c (errno): Likewise.
+ * stat.c (errno): Likewise.
+ * utime.c (errno): Likewise.
+ * xgetcwd.c (errno): Likewise.
+ * xmemcoll.c (errno): Likewise.
+ * xreadlink.c (errno): Likewise.
+ * xstrtol.c (errno): Likewise.
+ * canonicalize.h (enum canonicalize_mode_t): Reformat comments to
+ fit in 80 columns.
+ * fileblocks.c (textutils_fileblocks_unused): Make it a typedef
+ instead of an int, to save a few bytes in the object file.
+ * getdate.y (lookup_word): Rewrite to avoid cast.
+ * getloadavg.c: Include <stdbool.h>.
+ (getloadavg_initialized): Use bool for booleans.
+ * hard-locale.c (hard_locale): Return bool, not int.
+ * hard-locale.h (hard_locale): Likewise. Include <stdbool.h>.
+ * hash.c (hash_string): Rewrite to avoid cast.
+ * human.h: Use Autoconf-suggested pattern for inttypes and stdint.
+ * strtiomax.c: Likewise.
+ * xstrtol.h: Likewise.
+ * nanosleep.c: Include stdbool.h.
+ (rpl_nanosleep): Usee bool for booleans.
+ * quotearg.c: Include stdbool.h.
+ (quotearg_buffer_restyled): Use bool for booleans.
+ * readtokens.c (readtoken): Rewrite to avoid casts.
+ * same.c (same_name): Return bool, not int.
+ * same.h (same_name): Likewise. Include <stdbool.h>.
+ * version-etc.c (version_etc_va): Use size_t for sizes.
+ * xnanosleep.c: Include limits.h, stdbool.h.
+ (CHAR_BIT): Remove.
+ (timespec_subtract, xnanosleep): Use bool for booleans.
+ * xstrtoimax.c: Just include xstrtol.h rather than rolling our
+ own include pattern.
+ * xstrtoumax.c: Likewise.
+ * xstrtol.c (__xstrtol): Rewrite to avoid casts.
+ * yesno.c: Include yesno.h first.
+ (yesno): Return bool, not int.
+ * yesno.h (yesno): Likewise. Include <stdbool.h>.
+
+ * xstrtod.h (xstrtod): Return bool, not int. Invert the
+ sense of the boolean. All uses changed.
+ * xstrtod.c (xstrtod): Likewise.
+ * nanosleep.c: Include stdbool.h. Use bool for booleans.
+
+ * xgethostname.c: Don't include <sys/types.h> or "exit.h";
+ no longer needed.
+ (errno): Remove decl; we now assume C89 or better.
+ Include unistd.h if available, for gethostname.
+ (ENAMETOOLONG): Define to 0, not 9999, to avoid colliding with
+ existing errno values if any.
+ (gethostname): Remove decl, since unistd.h declares it (or doesn't,
+ in which case it's an older system and it should just work).
+ (xgethostname): Don't assume host name length is less than INT_MAX.
+ Exit if malloc fails, just as the comment says.
+
+ * save-cwd.c: Include <stdbool.h>.
+ (errno): Remove decl; we now assume C89 or better.
+ (save_cwd): Use bool for booleans.
+ (save_cwd, restore_cwd): Return -1 on failure, not 1, since we set
+ errno on failure.
+
+ * readutmp.h (UT_USER): Parenthesize properly.
+ (UT_USER_SIZE): New constant.
+ (read_utmp): Don't assume that the number of users is less than
+ INT_MAX.
+ * readutmp.c (read_utmp): Likewise.
+ Check for integer overflow in size calculations.
+ Return -1 (not 1) on failure, since we set errno in that case.
+
+ * posixtm.c (posix_time_parse): Don't assume that the length of
+ the string being parsed is <= UINT_MAX.
+
+ * mountlist.h (read_file_system_list): Accept bool flag, not int.
+ * mountlist.c (read_file_system_list): Likewise.
+ * mountlist.h: Include <stdbool.h>.
+ * mountlist.c (errno): Remove decl; we now assume C89 or better.
+ (xatoi): Remove; replaced by strtoul. Hence device numbers can now
+ go up to ULONG_MAX.
+
+ * isdir.c: Remove; no longer needed.
+ * Makefile.am (libfetish_a_SOURCES): Remove isdir.c.
+
+ * fts_.h: Add an FSF copyright notice, since our changes are becoming
+ nontrivial.
+ * fts.c: Likewise.
+ * fts_.h: Include stddef.h, for ptrdiff_t.
+ (FTS.fts_nitems): Now size_t, not int, for hosts that allow more
+ than INT_MAX entries in a directory.
+ (FTS_ROOTPARENTLEVEL): Parenthesize properly.
+ (FTSENT.fts_level): Now ptrdiff_t, not int, to allow recursing more
+ than INT_MAX levels deep on 64-bit hosts.
+ (FTSENT.fts_namelen): Now size_t, not u_short, to support hosts like
+ the Hurd that don't have arbitrary limits on directory entry lengths.
+ (FTSENT.fts_statp): Now an array, not a pointer, so that we don't
+ have to play unportable games with pointer arithmetic. Keep it array
+ for the benefit of user code that assumes it is a pointer.
+ * fts.c: Include stdint.h if available, as Autoconf suggests.
+ (ALIGNBYTES, ALIGN): Remove; no longer needed now that fts_statp
+ is an array.
+ (fts_alloc, fts_palloc, fts_sort, fts_load, fts_build):
+ Use size_t for sizes.
+ (fts_stat, fts_safe_changedir, fts_debug, fts_read, fts_build,
+ fts_palloc):
+ Use bool when appropriate.
+ (SIZE_MAX, TYPE_SIGNED): New macros.
+ (fts_read): Use u_short for instructions.
+ (fts_build): Use ptrdiff_t for levels. Don't assume file name lengths
+ fit into int. Don't assume nlink_t is signed.
+ (find_matching_ancestor): Don't assume dev, ino fit in int.
+ (fts_stat): Use function prototype; required for bool arg.
+ (fts_sort): Detect integer overflow in size calculations.
+ (fts_alloc): Simplify allocation code, now that fts_statp is an array
+ and not a pointer.
+
+ * fsusage.h: Include <stdbool.h>.
+ (struct fs_usage): Use uintmax_t for block sizes, so that they're
+ not limited to INT_MAX.
+ Use bool for booleans.
+ * fsusage.c: Use Autoconf-suggested pattern for inttypes and stdint.
+ Include unistd.h, for lseek.
+
+ * fnmatch.c: Include <stdbool.h>.
+ (errno): Remove decl; we now assume C89 or better.
+ * fnmatch_loop.c (EXT, FCT): Use bool when appropriate.
+ (FCT): Use size_t, not unsigned int, for sizes.
+ (EXT): Use size_t, not int, for sizes.
+
+ * stripslash.c (strip_trailing_slashes): Now returns bool.
+ * dirname.h (strip_trailing_slashes): Likewise.
+ Include <stdbool.h>.
+ * dirname.c (dir_name): Use bool when appropriate.
+
+ * argmatch.h (argmatch, __xargmatch_internal, argmatch_invalid):
+ Use ptrdiff_t, not int, when counting arguments, to allow more
+ than INT_MAX arguments.
+ * argmatch.c: Likewise. Use bool when appropriate.
+
+2004-08-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * safe-read.c (errno): Remove decl; we now assume C89 or better.
+ (safe_rw): Don't work around Tru64 bug unless the bug symptoms
+ manifest themselves. This allows us to do proper reads and writes
+ on other hosts, e.g., "dd" with a block size greater than 2**31.
+
+ * md5.c (UNALIGNED_P): Use size_t; in practice, this is just as
+ good as uintptr_t in checking for alignments, and has fewer
+ configuration hassles.
+ * sha1.c (UNALIGNED_P): Likewise.
+ * md5.h: Don't include <limits.h>. Include <inttypes.h> if available,
+ as it defines symbols like UINT32_MAX on Solaris 8.
+ (md5_uint32): Assume uint32_t exists; Autoconf will define it
+ otherwise (if the host has a 32-bit unsigned type, anyway).
+ * memchr.c: Don't include inttypes.h or stdint.h.
+ (UNALIGNED_P): Remove.
+ (__memchr): Use size_t, not uintptr_t, to test alignment.
+ * memrchr.c: Likewise, for __memrchr.
+
+2004-07-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * makepath.h: Include <stdbool.h>.
+ (make_path, make_dir): Use bool, not int, since we're not setting
+ errno.
+ Use mode_t for modes, not int. All uses changed.
+ * makepath.c: Likewise.
+ (errno): Remove decl; no longer needed since we assume C89.
+
+2004-07-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * modechange.c: Include <stdbool.h>.
+ (mode_compile): Use bool when appropriate.
+
+ * memchr.c (UNALIGNED_P): Use sizeof, not alignof, for better
+ performance on m68k-linux. Reported by Andreas Schwab in
+ <http://lists.gnu.org/archive/html/bug-coreutils/2004-07/msg00104.html>.
+ * memrchr.c (UNALIGNED_P): Likewise.
+
+2004-07-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * userspec.c: Include <stdbool.h>, "inttostr.h".
+ (V_STRDUP): Don't assume the string's length fits in int.
+ (ISDIGIT): unsigned -> unsigned int
+ (is_number): Define only ifdef __DJGPP__; not needed elsewhere.
+ Use bool instead of int where appropriate.
+ Do not allow empty strings.
+ (parse_user_spec): Parse numbers as decimal integers, even if
+ they have a leading 0. Don't assume uids and gids fit in int.
+
+ * memchr.c: Include <stddef.h>, not <stdlib.h> and <sys/types.h>.
+ (LONG_MAX_32_BITS): Remove.
+ Include <inttypes.h> and <stdint.h> if available.
+ (alignof, UNALIGNEDP): New macro, portable to all C89 hosts.
+ (__memchr): Don't assume unsigned long int is either 4 or 8 bytes;
+ let it be any number of bytes greater than or equal to 4.
+ * memrchr.c: Likewise, with __memrchr.
+
+ * md5.h: Include <stdint.h> if HAVE_STDINT_H || _LIBC, not
+ ifdef _LIBC.
+ (md5_uint32): Use uint32_t if available. Simplify fallback ifdefs.
+ * md5.c: Don't include <sys/types.h> or <stdlib.h>; <stddef.h>
+ suffices with C89 or better.
+ (alignof): New macro, portable to all C89 hosts.
+ (UNALIGNED): Use it. Use uintptr_t if available, and assume
+ everything is unaligned otherwise; this is more portable than
+ assuming 'unsigned long int' will always work.
+ * sha1.c: Likewise.
+
+ * getugroups.c: Include <errno.h>.
+ (EOVERFLOW): Define if not defined.
+ (getgroups): Return -1 with errno=EOVERFLOW if an integer overflow
+ occurs.
+
+2004-07-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ * euidaccess.c [HAVE_LIBGEN_H]: Include <libgen.h>, for
+ eaccess on Solaris and SVR4-like systems.
+ (euidaccess): Use HAVE_EACCESS, not HAVE_DECL_EACCESS.
+
+ cycle-check integer overflow fixup.
+
+ * cycle-check.h: Remove now-inaccurate comment about the files
+ you need to include first. You don't need to include any files
+ other than the usual config.h.
+ Include <inttypes.h> and <stdint.h> if available, for uintmax_t.
+ Remove 'struct stat;' not needed since we know sys/stat.h has
+ been included by dev-ino.h.
+ (struct cycle_check_state): Change chdir_counter to uintmax_t,
+ not size_t, since it isn't limited by object sizes.
+ Change magic from long unsigned int to int; that's good enough
+ for our use.
+ * cycle-check.c (is_zero_or_power_of_two): Renamed from
+ is_power_of_two, to reflect better what it really does.
+ All uses changed. Arg is now uintmax_t, not unsigned int
+ (it should have been unsigned long int -- that was a bug).
+ (cycle_check): Check for integer overflow in cycle count,
+ and report a cycle if that happens, as it must be a cycle
+ by this point.
+
+ backupfile.c rewrite to avoid arbitrary limits on lengths of
+ numeric backup extensions.
+
+ * addext.c: Remove; no longer needed.
+ * Makefile.am (libfetish_a_SOURCES): Remove addext.c.
+ * backupfile.h (addext): Remove decl.
+ * backupfile.c: Include "backupfile.h" first.
+ Include errno.h, stdbool.h, limits.h, unistd.h, xalloc.h.
+ (CLOSEDIR, INT_STRLEN_BOUND): Remove.
+ (pathconf) [! (HAVE_PATHCONF && defined _PC_NAME_MAX)]: New macro.
+ (_POSIX_NAME_MAX) [!defined _POSIX_NAME_MAX]: New macro.
+ (NAME_MAX_MAXIMUM): New macro. Unlike the old addext.c, we
+ also look at _XOPEN_NAME_MAX, for better performance on modern
+ hosts that support only file names of length 255 or more.
+ (ISDIGIT): unsigned -> unsigned int
+ (max_backup_version, version_number): Remove.
+ (check_extension): New function. Similar to the old addext, but
+ static, assumes that the extension has already been added,
+ and a bit more careful on DOS hosts.
+ (numbered_backup): New function. It does what max_backup_version
+ and version_number used to do, but it doesn't use integer arithmetic
+ to calculate extensions so it doesn't overflow.
+ (find_backup_file_name): Rewrite to use these new functions.
+ This has a new optimization: we needn't call pathconf if the
+ new numbered backup name has the same length as the old.
+ Also, use xmalloc rather than malloc, so that the caller
+ needn't worry about memory exhaustion.
+
+2004-07-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * euidaccess.c [!defined LIBC]: Included group-member.h, stat-macros.h.
+ (S_IXUSR, S_IXGRP, S_IXOTH, S_IROTH, S_IWOTH, S_IXOTH):
+ Remove; now done by stat-macros.h.
+ (NGROUPS_MAX, group_member): Remove; now done by group-member.h.
+ No need to include <limits.h>.
+ (errno): Remove decl; we now assume C89 or better.
+ (access, getuid, getgid, geteuid, getegid, stat) [defined _LIBC]:
+ New macros.
+ (uid, gid, have_ids): Remove these static variables.
+ They weren't accurate for programs that also invoked setreuid etc.
+ (euidaccess) [defined EFF_ONLY_OK || defined ACC_SELF ||
+ HAVE_DECL_EACCSS]: Use builtin substitutes.
+ [defined _LIBC]: Ignore __libc_enable_secure; it's not a
+ correct optimization for programs run as root that later
+ invoke setreuid.
+ [no builtin substitutes && HAVE_DECL_SETREGID &&
+ PREFER_NONREENTRANT_EUIDACCESS]:
+ Use setreuid+setregid to get the correct answer.
+ [no builtin substitutes && ! (HAVE_DECL_SETREGID &&
+ PREFER_NONREENTRANT_EUIDACCESS)]:
+ Don't assume that the stat macros have their historical values,
+ as POSIX doesn't require this.
+ [defined TEST]: Include <stdlib.h>; don't include errno.h
+ twice; include <error.h> rather than "error.h".
+
+2004-07-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.am (libfetish_a_SOURCES): Add fcntl-safer.h,
+ open-safer.c.
+ * fcntl-safer.h, open-safer.c: New files.
+
+2004-07-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * c-strtod.c (STRTOD_L): New macro.
+ (C_STRTOD) [defined LC_ALL_MASK]: Use it, so that the
+ code is reentrant on platforms that have strtod_l.
+
+ * getloadavg.c: Include <errno.h>, <stdio.h>, <stdlib.h> even
+ if HAVE_GETLOADAVG is defined, so that the test program can work.
+ (errno): Remove declaration; not needed in C89 or later.
+ Include "c-strtod.h".
+ Do not include locale.h or define setlocale; no longer needed.
+ Include <limits.h>.
+ (INT_STRLEN_BOUND): New macro.
+ (getloadavg): Use it to compute buffer size.
+ Don't assume that buffer will be properly terminated by 'read'.
+ Use c_strtod instead of setlocale.
+ (main) [defined TEST]: Return int, not void.
+
+2004-07-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.am (libfetish_a_SOURCES): Add c-strtold.c.
+ * c-strtold.c: New file.
+ * c-strtod.c: Include <config.h> first.
+ (C_STRTOD, DOUBLE, STRTOD): New macros.
+ (c_strtod): Use them.
+ * c-strtod.h (c_strtold): New decl.
+
+2004-07-07 Jim Meyering <jim@meyering.net>
+
+ Don't infloop when MAXSYMLINKS is not defined.
+ Detect symlink loops much earlier (albeit lazily) on systems
+ with MAXSYMLINKS defined to a large value.
+
+ * canonicalize.c: Include "cycle-check.h".
+ (canonicalize_filename_mode): Don't try to detect loops by counting
+ symlink-hops. Instead, use the cycle-check module.
+
+ * cycle-check.h: Include stdbool.h.
+ Forward-declare `struct stat'.
+
+ * canonicalize.c (canonicalize_filename_mode): Remove do-while(0) loop.
+ Replace each corresponding `break' stmt with `continue'.
+
+2004-07-06 Jim Meyering <jim@meyering.net>
+
+ * canonicalize.c: Include "stat-macros.h".
+ (canonicalize_filename_mode): Remove #ifdef S_ISLNK, now that
+ S_ISLNK is guaranteed to be defined (via stat-macros.h).
+
+2004-04-03 Dmitry V. Levin <ldv@altlinux.org>
+
+ * Makefile.am (libfetish_a_SOURCES): Add canonicalize.c
+ unconditionally.
+ * canonicalize.h (canonicalize_mode_t): New type.
+ * canonicalize.c: Include "file-type.h".
+ (canonicalize_filename_mode): New function, based on
+ canonicalize_file_name, supports three canonicalize modes.
+ (canonicalize_file_name)
+ [!HAVE_CANONICALIZE_FILE_NAME && !HAVE_RESOLVEPATH]: Use it.
+
+2004-07-05 Jim Meyering <jim@meyering.net>
+
+ * path-concat.c (path_concat): Improve comment. From Paul Eggert.
+
+2004-07-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * canonicalize.c (canonicalize_file_name): Assume that path_concat
+ never returns NULL.
+ * path-concat.c (mempcpy): Don't define if a system header defines it.
+ Don't include stdio.h, stdlib.h, unistd.h, strdup.h.
+ (longest_relative_suffix): New function.
+ (path_concat): Use it. Assume first argument is not NULL.
+ Port to DOS. Omit redundant separators.
+ Report an error instead of returning NULL.
+ Use mempcpy instead of memcpy.
+ (xpath_concat): Remove: not declared or used.
+
+2004-06-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * dirname.h (FILE_SYSTEM_PREFIX_LEN): Renamed from
+ FILESYSTEM_PREFIX_LEN. All uses changed.
+ * mountlist.h (read_file_system_list): Renamed from
+ read_filesystem_list. All definitions and uses changed.
+
+2004-06-24 Jim Meyering <jim@meyering.net>
+
+ * obstack.h (obstack_base): Fix parentheses. From Paul Eggert.
+
+2004-06-20 Jim Meyering <jim@meyering.net>
+
+ * obstack.h (obstack_base): Cast to (void *), per documentation.
+
+ * yesno.h: New file.
+ * yesno.c: Include "yesno.h".
+ * Makefile.am (libfetish_a_SOURCES): Add yesno.h.
+
+2004-06-19 Jim Meyering <jim@meyering.net>
+
+ * filemode.c: Remove all S_IS* and S_IF* definitions.
+ Instead, just include "stat-macros.h".
+ * stat.c: Likewise.
+ * rmdir.c: Likewise.
+ * makepath.c: Likewise.
+ * lchown.c: Likewise.
+ * isdir.c: Likewise.
+ * canonicalize.c: Likewise.
+
+ Add S_IS* definitions from filemode.c.
+ * stat-macros.h (S_ISCTG): Define to zero if not already defined.
+ (S_ISOFD): Likewise.
+ (S_ISOFL): Likewise.
+
+2004-06-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * readutmp.c (extract_trimmed_name): Don't apply strchr to a
+ non-string; this leads to undefined behavior.
+
+2004-05-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * fts.c (fts_stat, fts_alloc): Always allocate and use a struct
+ stat, even if the user isn't interested in the results.
+ This prevents a core dump in cycle_check when FTS_NOSTAT is set.
+ * lchown.c (lchown): Return EOPNOTSUPP if not supported; this
+ is what POSIX-2004 specifies.
+ * lchown.h (EOPNOTSUPP): Define if not defined.
+ (ENOSYS): Remove.
+
+2004-06-06 Jim Meyering <jim@meyering.net>
+
+ * getdate.y: Update from gnulib.
+
+2004-05-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * xreadlink.c: Include xreadlink.h first, to catch .h file
+ dependency problems.
+ (xreadlink): Accept new arg SIZE, for efficiency.
+ All decls and uses changed.
+ * xreadlink.h: Include <stddef.h>, for size_t.
+ * canonicalize.c (canonicalize_file_name): Update use of xreadlink.
+
+2004-06-01 Jim Meyering <jim@meyering.net>
+
+ * xmalloc.c: Update from gnulib.
+
+2004-05-30 Jim Meyering <jim@meyering.net>
+
+ * alloca_.h: Remove trailing blank.
+
+2004-05-29 Jim Meyering <jim@meyering.net>
+
+ * dirname.h (IS_ABSOLUTE_FILE_NAME, IS_RELATIVE_FILE_NAME): Define.
+
+ * calloc.c: New file.
+
+2004-05-21 Jim Meyering <jim@meyering.net>
+
+ * alloca.c, alloca_.h, fnmatch.c: Update from gnulib.
+ * localcharset.c, regex.c: Likewise.
+
+2004-05-20 Jim Meyering <jim@meyering.net>
+
+ * obstack.c, obstack.h: Update from gnulib.
+
+2004-05-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getline.c, getndelim2.c, getndelim2.h: Sync with gnulib.
+
+2004-05-11 Jim Meyering <jim@meyering.net>
+
+ Prior to this change, rm required read access to the current
+ directory on most systems (ones with the fchdir function).
+
+ * save-cwd.c (save_cwd) [HAVE_FCHDIR]: If opening `.' read-only
+ fails, try write-only, and finally, resort to using xgetcwd.
+
+2004-05-07 Jim Meyering <jim@meyering.net>
+
+ Update from gnulib.
+ * obstack.c (_): Define only if not already defined.
+ * obstack.h (obstack_finish): Rename local: s/value/__value/.
+
+2004-05-03 Jim Meyering <jim@meyering.net>
+
+ * lchown.c (lchown) [CHOWN_MODIFIES_SYMLINK]: Just call chown.
+
+2004-05-01 Jim Meyering <jim@meyering.net>
+
+ * chown.c (rpl_chown) [CHOWN_FAILS_TO_HONOR_ID_OF_NEGATIVE_ONE]:
+ Wrap old code with this conditional.
+ [CHOWN_MODIFIES_SYMLINK]: Try to work around a chown
+ function that does not dereference symlinks.
+
+2004-04-18 Paul Eggert <eggert@twinsun.com>
+
+ * nanosleep.c (suspended): Change its type from int to
+ sig_atomic_t volatile.
+ (first_call): Make it private to rpl_nanosleep, and have it
+ be zero initially as that's a bit faster.
+ (my_usleep): Round up fractional times instead of truncating them,
+ as this is the usual meaning for 'sleep'.
+
+2004-04-20 Jim Meyering <jim@meyering.net>
+
+ * getndelim2.c (getndelim2): Upon realloc failure, don't leak memory.
+
+2004-04-18 Jim Meyering <jim@meyering.net>
+
+ * readutmp.c (read_utmp) [UTMP_NAME_FUNCTION]: Upon realloc failure,
+ don't leak memory and do call END_UTMP_ENT.
+
+2004-04-13 Jim Meyering <jim@meyering.net>
+
+ * quotearg.c, quotearg.h: Remove trailing blanks.
+
+2004-04-12 Jim Meyering <jim@meyering.net>
+
+ * inttostr.h: Update from gnulib.
+
+2004-03-27 Paul Eggert <eggert@twinsun.com>
+
+ * utimecmp.c, utimecmp.h: New files.
+ * Makefile.am (libfetish_a_SOURCES): Add utimecmp.c, utimecmp.h.
+
+2004-04-09 Jim Meyering <jim@meyering.net>
+
+ * stat-macros.h: New file, with contents from file-type.h
+ and coreutils' system.h.
+ * Makefile.am (libfetish_a_SOURCES): Add stat-macros.h.
+ * file-type.c: Include "stat-macros.h".
+ * file-type.h (file_type): Move all macro defiitions to new file,
+ stat-macros.h.
+
+2004-03-30 Paul Eggert <eggert@twinsun.com>
+
+ * cloexec.c, cloexec.h, config.charset, file-type.c, file-type.h:
+ * getloadavg.c, getndelim2.c, getusershell.c, group-member.c:
+ * human.c, path-concat.c, printf-args.c, printf-args.h:
+ * quotearg.c, quotearg.h, setenv.c, strdup.c:
+ * userspec.c, userspec.h, vasprintf.c: Sync from gnulib.
+
+ * allocsa.c, allocsa.h, strdup.h: New files, from gnulib.
+ * Makefile.am (libfetish_a_SOURCES): Add allocsa.c, allocsa.h,
+ and strdup.h.
+
+2004-03-30 Jim Meyering <jim@meyering.net>
+
+ * getloadavg.c: Merge changes from emacs (via gnulib).
+
+2004-03-28 Paul Eggert <eggert@twinsun.com>
+
+ Fix some gotchas encountered when porting to Solaris 8, using
+ the Forte 6u2 compiler.
+
+ * canonicalize.c [HAVE_UNISTD_H]: Include <unistd.h>,
+ for resolvepath declaration.
+ * fts.c: Include dirfd.h, for dirfd.
+
+2004-02-25 Paul Eggert <eggert@twinsun.com>
+
+ * human.c (humblock): Support BLOCKSIZE as well as BLOCK_SIZE.
+
+2004-03-23 Paul Eggert <eggert@twinsun.com>
+
+ * readtokens0.c (readtokens0): Return true on success rather
+ than on failure. All callers changed. This also happens to fix a
+ portability bug on pre-C99 hosts, where (bool) INTEGER sometimes
+ returns false even when INTEGER is nonzero.
+
+2004-03-23 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libfetish_a_SOURCES): Add getopt_int.h.
+ * getopt_int.h: New file, from gnulib.
+ * getopt.c, getopt.h, getopt1.c: Sync from gnulib.
+ * getopt.c, getopt.h: Remove space(s) before TAB.
+
+ * mbswidth.c, mbswidth.h: Sync from gnulib.
+
+2004-03-21 Jim Meyering <jim@meyering.net>
+
+ * readtokens0.c, readtokens0.h: New files.
+ * Makefile.am (libfetish_a_SOURCES): Add readtokens0.c and readtokens0.h
+
+ * readtokens.c (readtoken): Don't leak 64 bytes when reading
+ an empty input stream.
+
+ * readtokens.c: Include <stdbool.h>.
+ (readtoken): Use `size_t' rather than int/long.
+ All callers adjusted.
+ Use `bool' rather than `int' where appropriate.
+ Use memset rather than an explicit loop.
+ Use x2nrealloc rather than xrealloc.
+ Allow the use of `\0' as a delimiter.
+ (readtokens): Likewise.
+ * readtokens.h (readtoken, readtokens): Update prototypes.
+
+2004-02-29 Paul Eggert <eggert@twinsun.com>
+
+ * getdate.h: Include stdbool.h, and timespec.h instead of
+ the usual <time.h> dance.
+ (get_date): Change signature to support fractional time stamps.
+ All callers changed.
+ * getdate.y: Include "getdate.h" first, as we can now
+ assume C89 and don't need to worry about 'const'.
+ Similarly, include "unlocked-io.h" near start, not in middle.
+ Include <limits.h>.
+ (textint.value): Use long int rather than int.
+ (textint.digits): Use size_t rather than int.
+ (BILLION, LOG10_BILLION): New constants.
+ (parser_control): New member rel_ns. Members day_ordinal,
+ time_zone, month, day, hour, minutes, rel_year, rel_month,
+ rel_day, rel_hour, rel_minutes, rel_seconds
+ are now long int, not int. Member seconds is now struct timespec,
+ not int. New member timespec_seen. Members dates_seen, days_seen,
+ local_zones_seen, rels_seen, times_seen, zones_seen are now size_t,
+ not int.
+ (%union.intval): Now long int, not int.
+ New member timespec.
+ (tSDECIMAL_NUMBER, tUDECIMAL_NUMBER): New tokens.
+ (seconds, signed_seconds, unsigned_seconds): New nonterminals.
+ (spec): Now is a timespec or an item list.
+ (timespec, items): New nonterminals.
+ (time, rel, relunit, number, get_date):
+ Add support for fractional seconds.
+ (time): Fix bug: seconds weren't cleared in "00:00 +0000" syntax.
+ (gmtime, localtime, mktime): Remove decls; not needed with C89.
+ (to_hour): First arg is now long int, not int.
+ (to_year): Returns long int, not int.
+ Don't treat year -70 like 70.
+ (tm_diff): Returns long int, not int.
+ (lookup_word): Use bool instead of int when appropriate.
+ (yylex): Use size_t for count, not int.
+ Detect overflow when parsing large integer constants.
+ Add support for fractions.
+ (get_date): Make pointers 'const' if possible.
+ Use more-portable code to detect integer overflow.
+ (main) [TEST]: Adjust to above changes. Test for localtime failure.
+ Don't use ctime; it's not reliable if the year has >4 digits.
+
+2004-03-15 Jim Meyering <jim@meyering.net>
+
+ `date --date="21:04 +0100" +%S' would print the seconds value
+ from the current time, rather than `00'.
+ * getdate.y: For a date string like `10:23 +0100',
+ set the number of seconds to zero. Reported by Marc Haber.
+
+2004-03-04 Jim Meyering <jim@meyering.net>
+
+ * cloexec.c (set_cloexec_flag) [ ! (F_GETFD && F_SETFD)]:
+ Return true, not false.
+
+2004-03-03 Paul Eggert <eggert@twinsun.com>
+
+ * cloexec.c: Include "cloexec.h" first, and <unistd.h> before <fcntl.h>.
+ (set_cloexec_flag): Use bool for booleans. All uses changed.
+ If F_GETFD returns a negative number (not just -1), report a
+ failure. Don't use F_SETFD if the flags are already right.
+ Don't report a failure with F_SETFD unless it returns -1.
+ * cloexec.h: Include <stdbool.h>.
+ Adjust signature to use `bool' rather than `int'.
+ * getloadavg.c (getloadavg): Use `true', not `1'.
+
+2004-03-02 Dmitry V. Levin <ldv@altlinux.org>
+
+ * cloexec.c: New file.
+ The set_cloexec_flag implementation imported from GNU C Library
+ Reference Manual.
+ * cloexec.h: New file.
+ * getloadavg.c: Include "cloexec.h".
+ (getloadavg): Use set_cloexec_flag instead of manual fcntl call.
+ * Makefile.am (libfetish_a_SOURCES): Add cloexec.c, cloexec.h.
+
+2004-02-23 Paul Eggert <eggert@twinsun.com>
+
+ * userspec.c: Don't include "posixver.h".
+ (parse_user_spec): Fall back on USER.GROUP parsing, regardless
+ of POSIX version, as POSIX 1003.1-2001 allows that behavior as a
+ compatible extension. Simplify code by removing a boolean int
+ that was always nonzero if a string was nonnull.
+
+2004-02-05 Jim Meyering <jim@meyering.net>
+
+ * timespec.h (ST_TIME_CMP_NS, ST_TIME_CMP): Define.
+ (ATIME_CMP, CTIME_CMP, MTIME_CMP, TIMESPEC_NS): Likewise.
+ From coreutils' system.h.
+
+2004-01-29 Jim Meyering <jim@meyering.net>
+
+ * mountlist.c [HAVE_SYS_UCRED_H]: Include grp.h before sys/ucred.h.
+
+2004-01-21 Paul Eggert <eggert@twinsun.com>
+
+ * argmatch.c (ARGMATCH_DIE) [! defined ARGMATCH_DIE]:
+ Include "exitfail.h", and use exit_failure rather than EXIT_FAILURE.
+ * argmatch.h: Comment fix to match the above.
+ * long-options.c (parse_long_options): Use prototype
+ for usage function arg. Pass it EXIT_SUCCESS rather than 0,
+ for clarity.
+ * obstack.c (obstack_exit_failure) [!defined _LIBC]:
+ Now a macro referring to exit_failure, instead of a separate
+ variable. Include "exitfail.h" to get it.
+ * xstrtol.h: Include "exitfail.h".
+ (STRTOL_FATAL_ERROR): Exit with status exit_failure, not 2.
+
+2004-01-21 Jim Meyering <jim@meyering.net>
+
+ * mktime.c (__mktime_internal) [!_LIBC]: Define to mktime_internal
+ so as not to conflict with a different-sized __mktime_internal
+ function in GNU libc.
+
+2004-01-16 Jim Meyering <jim@meyering.net>
+
+ Merge from gnulib.
+ * localcharset.c: Test HAVE_DECL_GETC_UNLOCKED,
+ rather than HAVE_GETC_UNLOCKED.
+
+2003-10-08 Paul Eggert <eggert@twinsun.com>
+
+ Merge from gnulib.
+
+ * unlocked-io.h: Include <stdio.h>, so that the caller
+ doesn't have to include <stdio.h> before us.
+ (clearerr_unlocked, feof_unlocked, ferror_unlocked,
+ fflush_unlocked, fgets_unlocked, fputc_unlocked, fputs_unlocked,
+ fread_unlocked, fwrite_unlocked, getc_unlocked, getchar_unlocked,
+ putc_unlocked, putchar_unlocked): Define to the unlocked counterpart
+ if not declared, so that we can use getpass.c code from libc without
+ rewriting it.
+ (flockfile, ftrylockfile, funlockfile): New macros.
+
+2004-01-14 Paul Eggert <eggert@twinsun.com>
+
+ Merge from gnulib.
+
+ * fnmatch_loop.c (ALLOCA_LIMIT): Remove macro, which collided
+ with like-named macro in fnmatch.c.
+ (EXT): Use an internal constant instead.
+
+ Merge fnmatch patches from glibc.
+ * fnmatch.c (mbsinit): Remove define.
+ Add libc_hidden_ver (__fnmatch, fnmatch).
+ * fnmatch_loop.c (FCT): Cast to int32_t and UCHAR when appropriate.
+ Adjust to renaming of collseq_table_lookup to __collseq_table_lookup.
+
+2003-11-24 Paul Eggert <eggert@twinsun.com>
+
+ Merge from gnulib.
+
+ * alloca.c: Remove dependency on xalloc module.
+ (xalloc_die): Remove.
+ (memory_full) [!defined emacs]: New macro.
+ [!defined emacs]: Don't include xalloc.h.
+ (alloca): Invoke memory_full, not xalloc_die, if malloc fails or
+ address arithmetic overflows. Change datatypes a bit to avoid
+ unnecessary casts.
+
+2004-01-14 Paul Eggert <eggert@twinsun.com>
+
+ * posixver.c: Include posixver.h.
+
+2004-01-12 Jim Meyering <jim@meyering.net>
+
+ * posixver.c (DEFAULT_POSIX2_VERSION): Use definition of new,
+ optional configure-time default.
+
+2004-01-10 Jim Meyering <jim@meyering.net>
+
+ * version-etc.c (version_etc_copyright): Update copyright date.
+
+2003-12-20 Jim Meyering <jim@meyering.net>
+
+ * fts.c [!_LIBC]: Undefine, then define-away __P.
+
+2003-12-19 Jim Meyering <jim@meyering.net>
+
+ Rewrite fts to use a hash table or O(1)-mem cycle-detection
+ code rather than the tree-based tsearch functions.
+ * fts_.h: Include hash.h and cycle-check.h.
+ (FTS_TIGHT_CYCLE_CHECK): New value.
+ (FTS_OPTIONMASK): Adjust to include the new value.
+ (FTS_NAMEONLY, FTS_STOP): Increase to allow room for new value.
+ (struct FTS) [active_dir_ht]: New member. Replaces fts_dir_signatures.
+ (struct FTS) [cycle_state]: New member.
+ * fts.c: Don't include <search.h>.
+ [HAVE_INTTYPES_H]: Include <inttypes.h>.
+ (tdestroy, tfind, tsearch): Remove definitions.
+ (struct Active_dir): Rename from `known_object'.
+ (AD_compare, AD_hash): New functions.
+ (enter_dir, leave_dir): Rewrite to manipulate a hash table
+ rather than a tree.
+ (fts_open): Initialize hash table or cycle_state buffer.
+ (free_node): Remove function.
+ (find_matching_ancestor): Renamed/rewritten from look_up_active_dir.
+ (fts_cross_check): Adapt to use new data structure.
+
+ * Makefile.am (libfetish_a_SOURCES): Remove search_.h.
+ (DISTCLEANFILES): Remove definition.
+
+2003-12-18 Jim Meyering <jim@meyering.net>
+
+ Rewrite cycle detection code to work properly.
+ Add some framework (compiled out by default) to test it.
+ * fts.c (Dprintf, ENTER_DIR, LEAVE_DIR): Define.
+ (add_object): Remove function. Rewritten as...
+ (enter_dir): New function.
+ (leave_dir, free_node): New functions.
+ (fts_read): Ensure that we call ENTER_DIR or LEAVE_DIR,
+ as appropriate, before returning.
+ (look_up_active_dir, fts_cross_check) [FTS_DEBUG]: New functions.
+ (fts_stat): Don't perform the cycle check here.
+ Now it's done via enter_dir.
+
+2003-12-12 Jim Meyering <jim@meyering.net>
+
+ * fts_.h (FTS) [fts_dir_signatures]: Add comment.
+
+2003-12-03 Paul Eggert <eggert@twinsun.com>
+
+ * getgroups.c (getgroups): xmalloc takes one argument, not two.
+ Bug reported by Alfred M. Szmidt.
+
+2003-12-02 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libfetish_a_SOURCES): Reflect sha -> sha1 renaming.
+
+ * sha1.c: File renamed from sha.c.
+ * sha1.h: File renamed from sha.h.
+ Use SHA1_H, not _SHA_H in #ifndef condition.
+
+ * sha.c: Add FSF Copyright.
+ * sha.h: Correct stale references to MD5 and `16 bytes'.
+ Patch by Ulrich Drepper.
+
+ * sha.h: Add FSF Copyright. Remove reference to Scott Miller,
+ since this file is now nearly identical to md5.h.
+
+ * md5.h (rol) [__GNUC__ && __i386__]: Don't use `asm' code. These
+ days, gcc-3.x does better all by itself. Patch from Dean Gaudet:
+ http://mail.gnu.org/archive/html/bug-coreutils/2003-11/msg00144.html
+
+2003-11-29 Jim Meyering <jim@meyering.net>
+
+ * c-strtod.c (c_strtod): Save and restore original LC_NUMERIC setting,
+ in case it was different from the environment-derived value.
+ Patch by Paul Eggert.
+ Include "xalloc.h" for declaration of xstrdup.
+
+2003-11-24 Paul Eggert <eggert@twinsun.com>
+
+ Parse floating-point operands and options in the C locale.
+ POSIX requires this for printf, and we might as well be
+ consistent elsewhere (tail, sleep, seq).
+
+ * Makefile.am (libfetish_a_SOURCES): Add c-strtod.c, c-strtod.h.
+ * c-strtod.c, c-strtod.h: New files.
+ * xstrtod.h (xstrtod): Accept an extra arg, specifying the
+ conversion function.
+ * xstrtod.c (xstrtod): Likewise. All callers changed to
+ include c-strtod.h and use c_strtod. Don't include stdlib.h; no
+ longer needed.
+
+ * xnanosleep.c: Don't include xstrtod.h; it's not needed.
+
+2003-11-22 Jim Meyering <jim@meyering.net>
+
+ * xmalloc.c (x2nrealloc_inline): Fix typos in comments: s/size/size_t/.
+
+2003-11-21 Jim Meyering <jim@meyering.net>
+
+ * xreadlink.c (xreadlink): Correct outdated comment.
+
+2003-11-17 Jim Meyering <jim@meyering.net>
+
+ On systems without utime and without a utimes function capable of
+ dealing with a NULL struct utimbuf* argument, this utime replacement
+ could -- in unusual circumstances -- leak a file descriptor.
+ * utime.c: Include <unistd.h> and <errno.h>.
+ (utime_null): Be sure to close `fd' and to preserve errno.
+ Reported by Geoff Collyer via Arnold Robbins.
+
+2003-11-13 Jim Meyering <jim@meyering.net>
+
+ * xalloc.h, xstrtol.c: Update from gnulib.
+
+2003-11-11 Jim Meyering <jim@meyering.net>
+
+ * ftw.c, ftw_.h: Remove files. No longer used.
+
+2003-11-09 Jim Meyering <jim@meyering.net>
+
+ * root-dev-ino.c, root-dev-ino.h: New files.
+ * Makefile.am (libfetish_a_SOURCES): Add root-dev-ino.c root-dev-ino.h.
+
+ * dev-ino.h: Include <sys/types.h> and <sys/stat.h>.
+
+2003-11-06 Jim Meyering <jim@meyering.net>
+
+ * free.c: New file, from gnulib.
+
+2003-10-31 Paul Eggert <eggert@twinsun.com>
+
+ * mountlist.h (struct mount_entry.me_type_malloced): New member.
+ * mountlist.c (SIZE_MAX): Define if not defined already.
+ (read_filesystem_list): Set and use me_type_malloced.
+ Use "sizeof *me" rather than "sizeof (struct mount_entry)" (or
+ whatever the type happens to be), for brevity and consistency.
+ Check for size calculation overflow on Alphas running OSF/1.
+
+2003-10-31 Jim Meyering <jim@meyering.net>
+
+ * hash.c: Include "xalloc.h" for use of xalloc_oversized.
+
+ * linebuffer.c: Include <string.h> for declaration of memset.
+
+ * alloca.c, linebuffer.c, xmalloc.c, xalloc.h: Update from gnulib.
+ * exclude.c, getgroups.c, quotearg.c, stdbool_.h: Update from gnulib.
+ * hash.c, hash-pjw.h: Update from gnulib.
+
+2003-10-25 Jim Meyering <jim@meyering.net>
+
+ * hash.c, hash.h: Update from gnulib.
+ * hash-pjw.c, hash-pjw.h: Likewise.
+ * obstack.c, obstack.h: Likewise.
+
+2003-10-25 Jim Meyering <meyering@lucent.com>
+
+ * fts_.h: Include <features.h> only if _LIBC.
+ [!_LIBC]: Define-away __THROW, __BEGIN_DECLS, __END_DECLS.
+
+2003-10-19 Jim Meyering <jim@meyering.net>
+
+ * vasnprintf.c (vasnprintf): Work around losing snprintf on
+ e.g. HPUX 10.20.
+
+2003-09-25 Jim Meyering <jim@meyering.net>
+ Bruno Haible <bruno@clisp.org>
+
+ [Update from gnulib]
+ This lets translators provide better translations for the
+ "Written by ..." part of --version output.
+ * version-etc.h: Include stdarg.h.
+ (version_etc_copyright): Declare as readonly.
+ (version_etc): Make this function variadic with a NULL-terminated list
+ of author name strings.
+ (version_etc_va): New declaration.
+ * version-etc.c: Include stdarg.h, stdlib.h.
+ (version_etc_copyright): Declare as readonly.
+ (version_etc_va): New function. Provide a different translatable string
+ for each possible number of authors < 10. Abbreviate when there are 10
+ authors or more.
+ (version_etc): Make this function variadic. Call version_etc_va.
+ Suggestion from Gary V. Vaughan.
+
+ * long-options.h (parse_long_options): Change prototype: the authors
+ string is moved to the end and becomes variadic.
+ * long-options.c: Include stdarg.h.
+ (parse_long_options): Make this function variadic, too.
+ Call version_etc_va, not version_etc.
+
+2003-10-17 Jim Meyering <jim@meyering.net>
+
+ * xfts.c, xfts.h: New files.
+ This factors out code used by du.c, chmod.c, and chown-core.c.
+ * Makefile.am (libfetish_a_SOURCES): Add xfts.c and xfts.h.
+
+ * error.h: Update from gnulib.
+ * getpass.c: Likewise.
+ * fnmatch.c: Likewise.
+ * fnmatch_loop.c: Likewise.
+
+2003-10-16 Jim Meyering <jim@meyering.net>
+
+ * xmalloc.c: Include <string.h>, for declarations of memset and memcpy.
+
+ * getgroups.c: Update from gnulib.
+ * readutmp.c: Fix indentation, from gnulib.
+ * exclude.c: Update from gnulib.
+ * xgethostname.c: Include xgethostname.h.
+ * xgethostname.h: New file, from gnulib.
+ * Makefile.am (libfetish_a_SOURCES): Add xgethostname.h.
+
+2003-10-15 Jim Meyering <jim@meyering.net>
+
+ * userspec.h: New file.
+ * userspec.c: Include "userspec.h".
+ * Makefile.am (libfetish_a_SOURCES): Add userspec.h.
+
+2003-10-14 Paul Eggert <eggert@twinsun.com>
+
+ Fix some number-parsing bugs, e.g., "head -n 100k@" wasn't
+ properly diagnosed.
+ * human.c, xstrtoimax.c, xstrtol.c, xstrtol.h, xstrtoul.c, xstrtoumax.c:
+ Sync with gnulib.
+
+2003-10-13 Paul Eggert <eggert@twinsun.com>
+
+ * xalloc.h, xmalloc.c, xstrdup.c: Import latest version from gnulib.
+
+2003-09-29 Paul Eggert <eggert@twinsun.com>
+
+ * Makefile.am (libfetish_a_SOURCES): Add xstrtoimax.c.
+
+2003-10-02 Jim Meyering <jim@meyering.net>
+
+ Don't require that the maximum length of a file name
+ encountered in a traversal fit in an `unsigned short',
+ and fix some portability bugs (don't depend on gcc).
+
+ * fts.c: Include "fts_.h", not <fts.h>.
+ (ALIGNBYTES) [!(__GNUC__ >= 2)]: Add a definition that works with
+ compilers that don't have __alignof__.
+ (MAX): Use a definition that doesn't depend on gcc.
+ (fts_build): Make `len' and `maxlen' be of type size_t, not int.
+ Test for overflow in a less type-dependent manner.
+ Test HAVE_STRUCT_DIRENT_D_TYPE, rather than
+ defined DT_DIR && defined _DIRENT_HAVE_D_TYPE.
+ (fts_palloc): Test for overflow in a less type-dependent manner.
+ (fts_safe_changedir): Use stat, not stat64.
+ Use fstat, not __fxstat64(_STAT_VER.
+
+ * fts_.h [FTS] (fts_pathlen): Change type from int to size_t.
+ [FTSENT] (fts_pathlen): Change type from u_short to size_t.
+ (fts_level): Change type from u_short to int.
+
+ * Makefile.am (libfetish_a_SOURCES): Add fts.c fts_.h.
+ Remove ftw_.h.
+
+2003-09-29 Paul Eggert <eggert@twinsun.com>
+
+ * strftime.c (tm_diff) [! HAVE_TM_GMTOFF]:
+ Fix arg typo in previous patch.
+
+2003-09-28 Jim Meyering <jim@meyering.net>
+
+ * error.c: Update from gnulib.
+
+2003-09-19 Jim Meyering <jim@meyering.net>
+
+ * version-etc.h: (version_etc): Rename parameter, authors,
+ to written_by.
+ * version-etc.c: (version_etc): Likewise.
+ Combine fprintf and following putc('\n'.
+
+ * version-etc.c, version-etc.h: Revert yesterday's changes.
+ * long-options.c, long-options.h: Likewise.
+
+2003-09-18 Jim Meyering <jim@meyering.net>
+
+ This lets translators provide better translations for the
+ `Written by ...' part of --version output.
+ * version-etc.c: Include stdarg.h, stdlib.h, string.h, and xalloc.h.
+ (version_etc): Make this function variadic,
+ with a NULL-terminated list of author name strings.
+ (version_etc_va): New function.
+ Suggestion from Gary V. Vaughan.
+ * version-etc.h (version_etc_va): Declare it.
+
+ * long-options.c: Include stdarg.h.
+ (parse_long_options): Make this function variadic (authors), too.
+ Call version_etc_va, not version_etc.
+ * long-options.h (parse_long_options): Update prototype.
+
+2003-09-16 Paul Eggert <eggert@twinsun.com>
+
+ * linebuffer.c (readlinebuffer): Return NULL immediately upon
+ input error, instead of returning NULL the next time we are called
+ (and therefore losing track of errno).
+
+2003-09-15 Paul Eggert <eggert@twinsun.com>
+
+ * getndelim2.c (getndelim2): Don't trash errno when a read
+ fails, so that the caller gets the proper errno.
+
+ * readutmp.c (read_utmp): Likewise.
+ Check for fstat error. Close stream and free storage
+ when failing.
+
+2003-09-14 Jim Meyering <jim@meyering.net>
+
+ * argmatch.c: Update from gnulib.
+
+ * Makefile.am (libfetish_a_SOURCES): Add exit.h, strndup.h,
+ time_r.c, time_r.h.
+
+2003-09-13 Jim Meyering <jim@meyering.net>
+
+ * setenv.c, strcspn.c, strdup.c, strndup.c, strnlen.c, strpbrk.c:
+ * strstr.c, strtod.c, strtoimax.c, tempname.c, unicodeio.c, userspec.c:
+ * vasprintf.h, xgethostname.c, xreadlink.c, xstrdup.c, xstrndup.c:
+ * xstrndup.h, xstrtod.c, xstrtol.c, yesno.c: Update from gnulib.
+ * strndup.h: New file, from gnulib.
+ * exit.h: New file, from GNU gettext, via gnulib.
+
+2003-09-06 Paul Eggert <eggert@twinsun.com>
+
+ * time_r.c, time_r.h: New files.
+
+ * mktime.c (my_mktime_localtime_r): Remove; all uses changed to
+ __localtime_r.
+ (__localtime_r) [!defined _LIBC]: New macro. Include <time_r.h>.
+ (__mktime_internal) [!defined _LIBC]: Now extern, not static.
+
+ * strftime.c (my_strftime_gmtime_r): Remove; all uses changed to
+ __gmtime_r.
+ (my_strftime_localtime_r): Remove; all uses changed to __localtime_r.
+ (__gtime_r, __localtime_r) [!HAVE_TM_GMTOFF]: New macros.
+ Include <time_r.h>.
+
+2003-09-13 Jim Meyering <jim@meyering.net>
+
+ * strtol.c: Update from gnulib.
+
+2003-09-12 Paul Eggert <eggert@twinsun.com>
+
+ * argmatch.c, xgethostname.c, xmalloc.c: Include exit.h.
+ * obstack.c [!defined _LIBC]: Likewise.
+ * argmatch.c (EXIT_FAILURE): Remove; now done by exit.h
+ * exitfail.c, fatal.c, xgethostname.c, xmalloc.c: Likewise.
+ * exitfail.c: Don't include stdlib.h; no longer needed.
+
+2003-09-12 Paul Eggert <eggert@twinsun.com>
+
+ * error.c (error_tail): Assume vprintf.
+
+2003-09-09 Paul Eggert <eggert@twinsun.com>
+
+ More K&R removal.
+
+ * getloadavg.c (getloadavg, main): Define via prototypes.
+
+ * getopt.h (struct option.name): Assume C89, and use 'const'.
+ (getopt, etopt_long, getopt_long_only, _getopt_internal)
+ [defined __GNU_LIBRARY__]: Assume C89, so we can always declare
+ with a prototype.
+ * getopt.c (const): Remove macro.
+ Include <string.h> unconditionally.
+ (my_index): Remove; all uses changed to strchr.
+ (strlen): Remove decl.
+ (exchange): Remove forward decl; no longer needed.
+ (exchange, _getopt_initialize, _getopt_internal, getopt, main):
+ Define with prototype.
+ * getopt1.c (const): Remove macro.
+ (getopt_long, getopt_long_only, main): Define with prototype.
+
+ * getugroups.c: Include <string.h> unconditionally.
+
+ * getusershell.c: Include <stdlib.h> unconditionally.
+ (getusershell, setusershell, endusershell, readname, main):
+ Define with prototypes.
+
+ * group-member.c: Include group-member.h first.
+ Include <stdlib.h> unconditionally.
+
+ * hard-locale.c: Include hard-locale.h first.
+ Include <stdlib.h>, <string.h> unconditionally.
+
+ * hash.c (free, malloc): Remove decls.
+ Include <stdlib.h> unconditionally.
+
+ * human.c: Include <stdlib.h>, <string.h> unconditionally.
+ (getenv): Do not declare.
+
+ * idcache.c: Include <string.h> unconditionally.
+
+ * long-options.c: Include long-options.h first, to test interface.
+ Include <stdlib.h> unconditionally.
+
+ * makepath.c: Include makepath.h first, to test interface.
+ Include <stdlib.h> and <string.h> unconditionally.
+
+ * linebuffer.c: Include <stdlib.h>.
+ (free): Remove decl.
+
+ * malloc.c: Include <stdlib.h>, for malloc; don't bother with stddef.h.
+ rpl_malloc returns void *, not char *.
+ * realloc.c (rpl_realloc): Likewise. Also, define with a prototype.
+
+ * md5.h: Include <limits.h> unconditionally.
+ (UINT_MAX_32_BITS): Don't worry about non-__STDC__ case.
+ (__P): Remove; all uses removed.
+ * md5.c: Include "md5.h" first.
+ (md5_init_ctx, md5_read_ctx, md5_finish_ctx, md5_stream,
+ md5_buffer, md5_process_bytes, md5_process_block):
+ Define with prototypes.
+ * sha.h (__P): Remove all uses. (It wasn't defined??)
+ * sha.c: Include "sha.h" first.
+ Include <stdlib.h>, <string.h> unconditionally.
+
+ * memchr.c (__ptr_t): Remove; all uses changed to void *.
+ * memcmp.c (__ptr_t): Likewise.
+ * memrchr.c (__ptr_t): Likewise.
+ * memchr.c, memcmp.c, memcoll.c, memrchr.c:
+ Include <string.h> unconditionally.
+ * memchr.c, memrchr.c: Include <limits.h> unconditionally.
+ * memchr.c: Include <stdlib.h> unconditionally.
+ * memchr.c (LONG_MAX): Remove.
+ * memrchr.c (LONG_MAX): Likewise.
+ * memchr.c (__memchr): Define via a prototype.
+ * memrchr.c (__memrchr): Likewise.
+ * memcmp.c (__P): Remove, and remove all uses.
+ (memcmp_bytes, memcmp_common_alignment, memcmp_not_common_alignment):
+ Remove forward decls; no longer needed.
+ * memcpy.c, memmove.c, memset.c: Include <stddef.h>.
+ Use types required by C89 in prototype.
+
+ * mkdir.c: Include <stdlib.h>, <string.h> unconditionally.
+ * savedir.c: Likewise.
+ * mkdir.c (free): Remove decl.
+ * rmdir.c (rmdir): Define with a prototype.
+ * savedir.c: Include savedir.h first, to test interface.
+
+ * mktime.c (STDC_HEADERS): Remove.
+ Include <stdlib.h>, <string.h> unconditionally.
+
+ * modechange.c: Include <stdlib.h> unconditionally.
+ (malloc): Remove decl.
+
+ * mountlist.c: Include <stdlib.h>, <string.h> unconditionally.
+ (free): Remove decl.
+
+ * obstack.h (PTR_INT_TYPE) [!defined __PTRDIFF_TYPE__]:
+ Define to ptrdiff_t, without bothering to check HAVE_STDDEF_H.
+ (This type really should be intptr_t, but that's a C99ism.)
+ (_obstack_memcpy): Remove: all uses changed to memcpy.
+ Include <string.h> unconditionally.
+ (struct obstack): Assume __STDC__ for types of members
+ chunkfun, freefun, extra_arg.
+ (_obstack_newchunk, _obstack_free, _obstack_begin, _obstack_begin_1,
+ _obstack_memory_used, obstack_alloc_failed_handler, obstack_init,
+ obstack_begin, obstack_specify_allocation,
+ obstack_specify_allocation_with_arg, obstack_chunkfun,
+ obstack_freefun, obstack_free) [! (defined __STDC__ && __STDC__)]:
+ Remove unprototyped decls and the macros that use them.
+ * obstack.c (POINTER): Remove. All uses changed to void *.
+ (obstack_alloc_failed_handler, CALL_CHUNKFUN, CALL_FREEFUN,
+ _obstack_begin, _obstack_begin_1, _obstack_allocated_p)
+ (defined __STDC__ && __STDC__)]:
+ Remove nonprototyped code.
+ Include <stdlib.h> unconditionally.
+ (_obstack_begin, _obstack_begin_1, _obstack_newchunk,
+ _obstack_allocated_p, _obstack_free, obstack_free,
+ _obstack_memory_used, print_and_abort):
+ Define using prototypes.
+ (obstack_1grow, obstack_1grow_fast, obstack_alloc, obstack_base,
+ obstack_blank, obstack_blank_fast, obstack_copy, obstack_copy0,
+ obstack_finish, obstack_grow, obstack_grow0, obstack_make_room,
+ obstack_next_free, obstack_object_size, obstack_room) [0]:
+ Remove unused, unprototyped code.
+
+ * path-concat.c: Include <stdlib.h>, <string.h> unconditionally.
+
+ * physmem.c (physmem_total, physmem_available, main): Define
+ with prototypes.
+
+ * posixtm.c: Include <stdlib.h>, <string.h> unconditionally.
+ (main): Define with a prototype.
+
+ * posixver.c (getenv): Remove decl.
+
+ * putenv.c (malloc): Returns void *, not char *.
+ Include <string.h> unconditionally.
+ (strchr, memcpy, NULL): Do not define.
+
+ * readtokens.c: Include readtokens.h first, to test interface.
+ Include <stdlib.h>, <string.h> unconditionally.
+ (init_tokenbuffer): Define with a prototype.
+
+ * regex.c (PARAMS): Remove. All uses removed.
+ All uses of _RE_ARGS removed, too.
+ Include <stddef.h>, <stdlib.h>, <string.h>, <limits.h>
+ unconditionally.
+ (bzero): Assume memset exists.
+ (memcmp, memcpy, NULL): Remove.
+ (SIGN_EXTEND_CHAR): Remove; all uses replaced by casts to signed
+ char, or assignments to local vars of type signed char.
+ (init_syntax_once, PREFIX(extract_number_and_incr),
+ PREFIX(print_partial_compiled_pattern),
+ PREFIX(print_compiled_pattern), PREFIX(print_double_string),
+ convert_mbs_to_wcs, print_fastmap, re_set_syntax,
+ PREFIX(regex_grow_registers), PREFIX(regex_compile),
+ PREFIX(store_op1), PREFIX(store_op2), PREFIX(insert_op1),
+ PREFIX(insert_op2), PREFIX(at_begline_loc_p),
+ PREFIX(at_endline_loc_p), group_in_compile_stack, insert_space,
+ wcs_compile_range, byte_compile_range, truncate_wchar,
+ PREFIX(re_compile_fastmap), re_compile_fastmap, re_set_registers,
+ re_search, re_search_2, PREFIX(re_search_2), re_match, re_match_2,
+ count_mbs_length, wcs_re_match_2_internal,
+ byte_re_match_2_internal, PREFIX(group_match_null_string_p),
+ PREFIX(alt_match_null_string_p),
+ PREFIX(common_op_match_null_string_p), PREFIX(bcmp_translate),
+ re_compile_pattern, re_comp, re_exec, regcomp, regexec, regerror,
+ regfree, PREFIX(extract_number)): Define with prototype. Remove
+ now-unnecessary declaration, if any.
+ (byte_compile_range, PREFIX(regex_compile), re_comp, re_exec,
+ regcomp, regexec):
+ Remove now-unnecessary casts among pointer types.
+ * regex.h (_RE_ARGS): Remove. All uses removed.
+
+ * rename.c: Include <stdlib.h>, <string.h> unconditionally.
+ (free): Remove decl.
+
+ * rpmatch.c: Include <stdlib.h> unconditionally.
+
+ * save-cwd.c: Include <stdlib.h> unconditionally.
+ * xgetcwd.c: Likewise.
+
+ * stat.c: Include <stdlib.h>, <string.h> unconditionally.
+ (free): Remove decl.
+
+ The following changes are not K&R related:
+
+ * group-member.h: Include <sys/types.h>, so that this file is
+ self-contained.
+ * makepath.h: Likewise.
+
+ * getusershell.c (readname, default_index, line_size, readname):
+ Use size_t, not int, for sizes.
+ (readname): If the size overflows, report an error instead of
+ looping forever.
+
+2003-09-09 Derek Robert Price <derek@ximbiot.com>
+
+ * getndelim2.c: Assume stdlib.h per the C89 spec.
+
+2003-09-08 Paul Eggert <eggert@twinsun.com>
+
+ Assume C89 or better; remove K&R cruft.
+ A few of these changes were first proposed by Derek Robert Price
+ in <http://mail.gnu.org/archive/html/bug-gnulib/2003-07/msg00105.html>.
+
+ * addext.c: Include <string.h> unconditionally.
+ * backupfile.c: Include <string.h>, <stdlib.h> unconditionally.
+ Don't declare getenv or malloc.
+
+ * alloca.c: Include <string.h>, <stdlib.h> unconditionally.
+ (POINTER_TYPE, pointer): Remove; all uses changed to void *.
+ (NULL): Remove.
+ (find_stack_direction, alloca): Use prototypes.
+
+ * atexit.c (atexit): Define using a prototype.
+
+ * basename.c, dirname.c, stripslash.c:
+ Include <string.h> unconditionally.
+
+ * bcopy.c: Include <stddef.h>.
+ (bcopy): Define with prototype, using 'const' and 'void' and 'size_t'.
+
+ * canon-host.c: Include <stdlib.h>, <string.h> unconditionally.
+
+ * error.h (error, error_at_line, error_print_progname)
+ [! (defined (__STDC__) && __STDC__)]: Remove decls.
+ * error.c: Include error.h first, to check interface.
+ Include <stdarg.h>, <stdlib.h>, <string.h> unconditionally.
+ (VA_START): Remove; all uses changeed to va_start.
+ (exit, strerror): Remove decls.
+ (error_print_progname): Prototype uncondionally.
+ Don't include <errno.h>; no longer needed.
+ (private_strerror): Remove.
+ (error_tail): Always define.
+ (error, error_at_line): Assume C89 or better; always use prototypes.
+
+ * euidaccess.c (main): Define with a prototype.
+
+ * exclude.c: Include <stdlib.h>, <string.h> unconditionally.
+
+ * exitfail.c: Include <stdlib.h> unconditionally.
+
+ * fnmatch_.h (__P): Remove. All uses changed to assume prototypes.
+ * fnmatch.c: Include fnmatch.h first, to test interface.
+ Include <string.h>, <stddef.h>, <stdlib.h> unconditionally.
+ (getenv): Remove decl.
+ (fnmatch): Define using a prototype.
+ * fnmatch_loop.c (FCT): Remove forward decl; no longer needed.
+ (FCT): Define using a prototype.
+
+ * getdate.y: Include <stdlib.h>, <string.h> unconditionally.
+
+ * gethostname.c: Include <stddef.h>.
+ (gethostname): Define with prototype. Length is size_t, not int.
+
+2003-09-08 Paul Eggert <eggert@twinsun.com>
+
+ * utime.c [!HAVE_UTIMES_NULL]: Include <sys/stat.h>, <fcntl.h>.
+ (utime_null): Fix typo: 'st' was sometimes called 'sb'.
+
+2003-09-09 Jim Meyering <jim@meyering.net>
+
+ * getversion.c: Remove unused file. Reported by Paul Eggert.
+
+2003-09-03 Paul Eggert <eggert@twinsun.com>
+
+ * human.c (human_readable): Fix bug that rounded 10501 to 10k.
+ Bug reported by Lute Kamstra in
+ <http://mail.gnu.org/archive/html/bug-gnulib/2003-09/msg00003.html>.
+
+ * getdate.y (relative_time_table): Use tDAY_UNIT for "tomorrow",
+ "yesterday", "today", and "now" rather than tMINUTE_UNIT. Of
+ course with correspondingly smaller numbers for tomorrow and
+ yesterday. From Tadayoshi Funaba. Originally installed into
+ sh-utils on 1999-08-07, but the patch was mistakenly reverted by
+ the next change to that shared file (but this time in fileutils)
+ on 1999-08-29.
+
+2003-08-18 Paul Eggert <eggert@twinsun.com>
+
+ * same.c: Include <stdlib.h> and <string.h> unconditionally,
+ as we're now assuming that part of hosted C89.
+ (free) [!HAVE_DECL_FREE]: Remove decl; no longer needed.
+ (same_name): Invoke pathconf on destination, not source, as
+ that's a bit clearer even if they are the same dir.
+
+2003-08-18 Jim Meyering <jim@meyering.net>
+
+ * getopt.h: Remove space before TAB.
+
+2003-08-17 Paul Eggert <eggert@twinsun.com>
+
+ * same.c: Include <stdbool.h>, <limits.h>.
+ (_POSIX_NAME_MAX): Define if not defined.
+ (MIN): New macro.
+ (same_name): If file names are silently truncated, report
+ that the file names are the same if they are the same after
+ the silent truncation.
+
+2003-08-16 Paul Eggert <eggert@twinsun.com>
+
+ Merge from gnulib.
+ * Makefile.am (libfetish_a_SOURCES): Remove getndelim2.c,
+ getndelim2.h, xstrtoimax.c. Add localcharset.h.
+ (CLEANFILES, SUFFIXES): Initialize to empty.
+ (EXTRA_DIST): Add getndelim2.c, getndelim2.h.
+ (install-exec-local): Use $(GLIBC21), not @GLIBC21@.
+ Do not mkdir libdir if not glibc21.
+ (charset.alias): @host@ -> $(host).
+ (SUFFIXES, .sin.sed, CLEANFILES): Reorder rules
+ to match gnulib module suggestions.
+ * localcharset.h, readlink.c: New files, from gnulib.
+ * asnprintf.c, asnprintf.c, asprintf.c, backupfile.h,
+ canon-host.c, config.charset, dirname.h, euidaccess.c, exclude.c,
+ fsusage.h, full-write.c, getloadavg.c, getndelim2.h, gettext.h,
+ group-member.h, hard-locale.h, hash.c, hash.h, hash-pjw.c,
+ localcharset.c, long-options.h, makepath.h, malloc.c, mbswidth.c,
+ mbswidth.h, md5.h, memcasecmp.c, memcasecmp.h, memcoll.h,
+ mkstemp.c, modechange.h, mountlist.h, path-concat.h, pathmax.h,
+ physmem.h, posixtm.h, printf-args.c, printf-args.h,
+ printf-parse.c, printf-parse.h, putenv.c, quote.h, readutmp.h,
+ ref-add.sin, ref-del.sin, safe-read.c, savedir.h, setenv.c,
+ setenv.h, stdbool_.h, strnlen.c, strpbrk.c, strtoimax.c,
+ strverscmp.h, tempname.c, unicodeio.c, unicodeio.h,
+ unistd-safer.h, unlocked-io.h, vasnprintf.c, vasnprintf.h,
+ vasprintf.c, vasprintf.h, version-etc.h, xgethostname.c,
+ xmemcoll.c, xstrtoimax.c, xstrtoumax.c: Sync with gnulib.
+
+2003-08-15 Paul Eggert <eggert@twinsun.com>
+
+ * physmem.c: Include "physmem.h" before system includes.
+
+2003-08-10 Jim Meyering <jim@meyering.net>
+
+ * utimens.c (utimens): Revert most of last change.
+ Test HAVE_WORKING_UTIMES instead of HAVE_UTIMES.
+
+2003-08-09 Jim Meyering <jim@meyering.net>
+
+ * utimens.c (utimens): Test HAVE_UTIME, not HAVE_UTIMES.
+ Prefer utime, since it works and utimes doesn't on some systems.
+ FIXME: Revert the above change once we have a working utimes
+ replacement function.
+
+2003-08-06 Paul Eggert <eggert@twinsun.com>
+
+ * Makefile.am (libeftish_a_SOURCES): Add utimens.c, utimens.h.
+ * utimens.c, utimens.h: New files.
+
+2003-08-09 Jim Meyering <jim@meyering.net>
+
+ * unicodeio.c (unicode_to_mb): Change to `Solaris 5.7' in comment.
+ * putenv.c: Likewise.
+
+ * fatal.c, fatal.h: Remove unused files.
+
+ * Makefile.am: Use the e.g., `$(FNMATCH_H)' notation for AC_SUBST'd
+ variable names, rather than @FNMATCH_H@.
+ Likewise for $(ALLOCA_H).
+ (fnmatch.h): Use `$@' in the commands, in place of the three copies
+ of the literal target, `fnmatch.h'.
+ (alloca.h): Likewise.
+
+2003-08-08 Paul Eggert <eggert@twinsun.com>
+
+ * Makefile.am (libfetish_a_SOURCES): Remove fnmatch_.h.
+ (lib_OBJECTS): New macro, for convenience when cutting and
+ pasting Makefile.am templates from gnulib.
+ (EXTRA_DIST): Remove fnmatch_loop.c.
+ (BUILT_SOURCES): Append $(FNMATCH_H).
+ * Makefile.am: Import the following changes from gnulib templates
+ for alloca and fnmatch):
+ (all-local $(lib_OBJECTS)): New dependencies.
+ (alloca.h): Use alloca.h-t for temporary.
+ (EXTRA_DIST): Append fnmatch_.h, fnmatch_loop.c.
+ (fnmatch.h): New rule.
+ (MOSTLYCLEANFILES): Add fnmatch.h, fnmatch.h-t.
+ (DISTCLEANFILES): Remove fnmatch.h
+
+2003-08-08 Jim Meyering <jim@meyering.net>
+
+ * mountlist.c (read_filesystem_list) [MOUNTED_GETFSSTAT]:
+ Use MNT_NOWAIT, rather than MNT_WAIT. Otherwise, `df DIR' could
+ hang on OSF/1 5.1 for DIR on both local and remote file systems.
+ Reported by (and fix confirmed by) Nelson H. F. Beebe.
+
+2003-08-07 Jim Meyering <jim@meyering.net>
+
+ * regex.h (RE_SYNTAX_POSIX_AWK): Remove SPACE in SPACE-TAB sequence.
+
+2003-08-05 Paul Eggert <eggert@twinsun.com>
+
+ Merge getline from gnulib.
+ * getline.h, getline.c: Merge from gnulib.
+ * getndelim2.h, getndelim2.c: New files, from gnulib.
+ * getdelim2.c, getdelim2.h: Remove.
+ * Makefile.am (libfetish_a_SOURCES): Change getdelim2.c and
+ getdelim2.h to getndelim2.c and getndelim2.h.
+
+2003-08-04 Paul Eggert <eggert@twinsun.com>
+
+ * regex.c, regex.h: Sync with gnulib.
+
+2003-08-03 Paul Eggert <eggert@twinsun.com>
+
+ * stdbool_.h (_Bool): Use a #define, not a typedef.
+
+2003-07-31 Paul Eggert <eggert@twinsun.com>
+
+ * bumpalloc.h: Remove.
+ * Makefile.am (libfetish_a_SOURCES): Remove bumpalloc.h.
+
+2003-07-28 Jim Meyering <jim@meyering.net>
+
+ * stdbool_.h: Renamed from stdbool.hin.
+ * Makefile.am: Reflect renaming: stdbool.hin -> stdbool_.h.
+ * stdbool.hin: Remove file.
+
+2003-07-28 Paul Eggert <eggert@twinsun.com>
+
+ * stdbool.hin (_Bool): Make it signed char, instead of
+ an enum type, so that it's guaranteed to promote to int.
+
+2003-07-23 Jim Meyering <jim@meyering.net>
+
+ * xstrndup.h: New file.
+ * xstrndup.c: New file, factored out of dircolors.c from coreutils.
+ * Makefile.am (libfetish_a_SOURCES): Add xstrndup.c and xstrndup.h.
+
+2003-07-23 Jim Meyering <jim@meyering.net>
+
+ * lstat.c, save-cwd.c, stat.c, utime.c, xgethostname.c: Normalize
+ naming of Sun operating systems in comments, e.g., SunOS4 -> SunOS 4,
+ Solaris5.9 -> Solaris 9. From Paul Eggert.
+
+2003-07-22 Paul Eggert <eggert@twinsun.com>
+
+ * xalloc.h (XCALLOC, XREALLOC, CCLONE): Fix under- and
+ over-parenthesization in macros.
+
+2003-07-18 Paul Eggert <eggert@twinsun.com>
+
+ * closeout.h (close_stdout_set_status, close_stdout_status): Remove.
+ * closeout.c: Likewise. Include "closeout.h" right after config.h,
+ to test that it can stand by itself. Include "exitfail.h".
+ Clients should set exit_failure instead.
+ (EXIT_FAILURE): Remove; no longer needed. Do not include <stdlib.h>.
+
+2003-07-18 Andreas Schwab <schwab@suse.de>
+
+ * memcoll.c (memcoll) [!HAVE_STRCOLL]: Clear errno.
+
+2003-07-17 Paul Eggert <eggert@twinsun.com>
+
+ * xalloca.h, xmalloc.c, xmemcoll.c, xmemcoll.h:
+ Merge with gnulib. Use a single exit_failure variable rather
+ than a separate one for each module.
+
+2003-07-16 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (AM_CPPFLAGS): Rename from `INCLUDES', to avoid
+ warning from automake -Wall.
+
+2003-07-14 Jim Meyering <jim@meyering.net>
+
+ * save-cwd.h: Add copyright.
+
+2003-07-13 Jim Meyering <jim@meyering.net>
+
+ * xgethostname.c: Include <stdlib.h> for declaration of free.
+ (xgethostname): Return NULL, rather than exiting, upon any
+ non-malloc/realloc error.
+
+2003-07-12 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (BUILT_SOURCES): Use `BUILT_SOURCES += $(STDBOOL_H)'
+ rather than `all-local: $(STDBOOL_H)'. The latter didn't force
+ creation of stdbool.h before most other targets.
+ Likewise for $(ALLOCA_H).
+
+ Don't emit diagnostics. Let callers do that.
+ * save-cwd.c: Don't include "error.h".
+ (save_cwd): Don't call error. Ensure that errno is valid
+ when returning nonzero.
+
+ * obstack.h: Update from gnulib.
+
+ * makepath.c (make_path): Enclose diagnostic in _(...).
+
+2003-07-10 Jim Meyering <jim@meyering.net>
+
+ * userspec.c: Include "posixver.h".
+ (parse_user_spec): Accept `.' as a separator only
+ in pre-POSIX-200112 mode.
+
+ * Makefile.am (libfetish_a_SOURCES): Add these:
+ printf-args.h, printf-parse.h, vasprintf.h, vasnprintf.h.
+
+ Now that a program (`who') uses asprintf, we need all of these:
+ * asnprintf.c, asprintf.c, printf-args.c, printf-args.h, printf-parse.c:
+ * printf-parse.h, vasnprintf.c, vasnprintf.h, vasprintf.c, vasprintf.h:
+ New files, from gnulib.
+
+ * alloca_.h, getpass.c, memrchr.c, obstack.h, posixver.c,
+ strftime.c, strnlen.c, strverscmp.c: Switch from LGPL to GPL.
+
+2003-07-09 Jim Meyering <jim@meyering.net>
+
+ * mktime.c: Update from gnulib.
+ FIXME: but still need to adjust m4/mktime.c so that this fixed
+ version is used when needed.
+
+ Fix the bug that would make `du /' omit the `/' on the last line.
+ E.g., `du --exclude '[^/]*' -x /' would print only "4\t\n" for me.
+ * ftw.c (ftw_dir): Don't clobber the leading `/'.
+ Reported by Chris Lesniewski as http://bugs.debian.org/200542.
+
+2003-07-04 Jim Meyering <jim@meyering.net>
+
+ Update from gnulib.
+ * xreadlink.c: Include <sys/types.h> unconditionally, instead of
+ having it depend on HAVE_SYS_TYPES_H.
+
+2003-06-18 Jim Meyering <jim@meyering.net>
+
+ * inttostr.h (PARAMS): Remove. All uses removed.
+
+ Merge in change from gnulib.
+ * makepath.c: Remove block of alloca-related code in favor
+ of an unconditional `#include <alloca.h>'.
+
+ * xalloc.h: Include <stddef.h>.
+ Remove unnecessary parentheses.
+ Use `1990-2000' notation in Copyright line until Emacs'
+ copyright-update function learns how to handle a comma-separated
+ list of years that spans a line boundary.
+
+ * Makefile.am (libfetish_a_SOURCES): Add getdelim2.c and getdelim2.h.
+
+ * getline.c (getdelim2): Move this function into its own file.
+ * getdelim2.c: Extracted from getline.c.
+
+ * linebuffer.c, linebuffer.h: Update from gnulib.
+
+ * getdelim2.c, getdelim2.h: New files.
+ * getstr.c, getstr.h: Remove files.
+
+ * same.h: Update from gnulib.
+ * xstrtol.h: Update from gnulib.
+
+2003-06-17 Paul Eggert <eggert@twinsun.com>
+
+ Assume C89, so PARAMS isn't needed.
+ * backupfile.h (PARAMS): Remove. All uses removed.
+ * closeout.h, dirname.h, filemode.h, fsusage.h, getdate.h, getline.h,
+ group-member.h, hard-locale.h, hash.h, linebuffer.h, long-options.h,
+ makepath.h, memcasecmp.h, memcoll.h, modechange.h, mountlist.h,
+ path-concat.h, physmem.h, posixtm.h, quote.h, readutmp.h, same.h,
+ save-cwd.h, savedir.h, stdio-safer.h, strtoimax.c, strverscmp.h,
+ unistd-safer.h, version-etc.h, xalloc.h, xreadlink.h, xstrtod.h,
+ xstrtol.h: Likewise.
+ * filemode.h, hard-locale.h, memcoll.h, modechange.h, physmem.h, same.h,
+ * strverscmp.h: Do not include config.h; no longer needed.
+ Anyway, config.h should always be included before any other file.
+
+2003-06-17 Jim Meyering <jim@meyering.net>
+
+ * getline.c: Update from gnulib.
+
+ Merge in changes from gnulib.
+ * hash.c: Include <stdbool.h> unconditionally.
+ Include <limits.h>.
+ (CHAR_BIT): Don't define.
+
+2003-06-09 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * acl.c: Include <sys/types.h> before <sys/stat.h>.
+ Required on Ultrix 4.3.
+
+2003-05-20 Derek Price <derek@ximbiot.com>
+
+ * stat.c [LSTAT]: Compile/use slash_aware_lstat only if it is necessary.
+
+2003-06-10 Jim Meyering <jim@meyering.net>
+
+ * getdate.y: Also accept dates of the form May-23-2003.
+ Suggestion from Karl Berry.
+
+2003-06-09 Jim Meyering <jim@meyering.net>
+
+ * gettimeofday.c: Also undefine gmtime.
+ (rpl_gmtime): New function. Suggestion from Paul Eggert.
+
+2003-06-08 Jim Meyering <jim@meyering.net>
+
+ * getline.h: Update from gnulib.
+
+ Clean up, as part of merge with emacs version of strftime.c.
+ * strftime.c (my_strftime) [!_LIBC && HAVE_TZNAME && HAVE_TZSET]:
+ Remove function, now that we can rely on a working tzset function.
+ [!_LIBC]: Ensure that the required autoconf test has been run.
+ * gettimeofday.c: Also undef tzset.
+ (rpl_tzset): New function, for use by new macro, gl_FUNC_TZSET_CLOBBER.
+
+2003-06-07 Jim Meyering <jim@meyering.net>
+
+ * readtokens.h: Add copyright notice.
+ Include <stdio.h>.
+ Remove definition and uses of __P.
+
+ * readtokens.c: Put `Free Software Foundation, Inc.' in place of
+ my name in the copyright comment.
+ (init_tokenbuffer): Remove unnecessary parentheses around malloc.
+
+ Update from gnulib.
+ * getdate.y: Include alloca.h unconditionally.
+ * xmemcoll.h: Include <stddef.h>.
+
+ * Makefile.am (MOSTLYCLEANFILES): Add alloca.h and alloca.ht.
+ (MOSTLYCLEANFILES): Add stdbool.ht.
+
+ * human.c: Include <stdio.h>, once again, for declaration of sprintf.
+
+ Update from gnulib.
+ * tempname.c: Include <stddef.h> unconditionally.
+ Include <inttypes.h> as an alternative to <stdint.h>.
+ * strtoimax.c: Include <stdint.h> as an alternative to <inttypes.h>.
+ * xstrtol.h: Likewise.
+ * xstrtoimax.c: Likewise.
+ * xstrtoumax.c: Likewise.
+
+ Update from gnulib.
+ * strcasecmp.c: Include <stddef.h>, not <sys/types.h>.
+ * savedir.c: Include <stddef.h>.
+ (NULL): Don't define, since <stddef.h> does that.
+
+2003-06-06 Jim Meyering <jim@meyering.net>
+
+ Update from gnulib.
+ * rpmatch.c: Include <limits.h> without checking for HAVE_LIMITS_H.
+ Include <stddefs.h> unconditionally.
+ (NULL): Don't define, since <stddef.h> does that.
+ * rename.c: #undef rename before defining rpl_rename.
+ [HAVE_CONFIG_H]: Guard inclusion of config.h.
+ * putenv.c: Include <stddef.h> rather than <sys/types.h>,
+ as we merely need size_t.
+ * realloc.c: Likewise.
+ * quote.c: Don't include <stddef.h> or <sys/types.h>; not needed.
+ * modechange.c: Include <stddef.h>.
+ (NULL): Don't define, since <stddef.h> does that.
+ * memcoll.h: Include <stddef.h>, to get size_t.
+ * memcoll.c: Include "memcoll.h", which gets us size_t and checks
+ our interface, instead of including <sys/types.h>
+ (memcoll): Fall back on a simple algorithm using
+ memcmp if strcoll doesn't work.
+ * memcasecmp.h: Include <stddef.h>.
+ * memcasecmp.c: Don't include <sys/types.h>.
+
+ From gnulib.
+ * alloca_.h: New file.
+ * Makefile.am (EXTRA_DIST): Add alloca_.h.
+ (all-local $(lib_OBJECTS)): Depend on $(ALLOCA_H).
+ (alloca.h): New rule.
+
+ * addext.c: Update from gnulib.
+ * backupfile.c: Likewise.
+ * config.charset: Likewise.
+ * dirname.h: Likewise.
+ * fsusage.c: Likewise.
+ * userspec.c: Likewise.
+ * xreadlink.c: Likewise.
+ * xstrtol.c: Likewise.
+ * __fpending.h: Likewise.
+
+ * md5.c: Include <string.h> and <stdlib.h> unconditionally.
+ (memcpy): Remove definition.
+
+ * posixtm.c: Include <stdbool.h> unconditionally.
+
+2003-06-05 Jim Meyering <jim@meyering.net>
+
+ From gnulib.
+ * mktime.c: Assume freestanding C89 or better.
+ (HAVE_LIMITS_H): Remove. Assume it's 1.
+ (__P): Remove; not used.
+ (CHAR_BIT, INT_MIN, INT_MAX): Remove; <limits.h> defines them.
+ (mktime, not_equal_tm, print_tm, check_result,
+ main): Use prototypes. Use const * where appropriate.
+ (main): Fix typo in testing code that uncovered by above changes.
+ (Local Variables): Remove -DHAVE_LIMITS_H from compile-command.
+
+2003-06-04 Paul Eggert <eggert@twinsun.com>
+
+ Merge human.c etc. from gnulib.
+ * exclude.c, human.c, human.h: Merge from gnulib.
+ * cycle-check.c, cycle-check.h, src/system.h:
+ Include <stdbool.h> unconditionally.
+
+2003-06-02 Jim Meyering <jim@meyering.net>
+
+ * stdbool.hin: New file. From gnulib.
+ * Makefile.am (MOSTLYCLEANFILES): Initialize.
+ (stdbool.h): New rule.
+ (all-local $(lib_OBJECTS)): Depend on $(STDBOOL_H)
+ (MOSTLYCLEANFILES): Add stdbool.h.
+ (EXTRA_DIST): Add stdbool.h.
+
+2003-05-30 Jim Meyering <jim@meyering.net>
+
+ * addext.c: Update from gnulib.
+ * mktime.c: Likewise.
+
+2003-05-29 Jim Meyering <jim@meyering.net>
+
+ Make the %r format directive honor any locale setting.
+ * strftime.c: (my_strftime) [!defined _NL_CURRENT && HAVE_STRFTIME]:
+ Use underlying_strftime for %r.
+
+2003-05-15 Jim Meyering <jim@meyering.net>
+
+ * getopt.h: Remove a space before a TAB.
+
+2003-05-13 Jim Meyering <jim@meyering.net>
+
+ * setenv.c (setenv): Don't apply cast to argument of free.
+ * putenv.c (rpl_putenv): Likewise.
+ * alloca.c (alloca): Likewise.
+
+2003-05-12 Jim Meyering <jim@meyering.net>
+
+ * ftw.c (ftw_startup): Always call free_cwd after restore_cwd.
+ Reported by Matti Aarnio as
+ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=90563.
+ Forwarded by Tim Waugh.
+
+ * strftime.c (my_strftime): Let the `-' (no-pad) flag affect
+ the space-padded-by-default conversion specifiers, %e, %k, %l.
+
+2003-05-07 Paul Eggert <eggert@twinsun.com>
+
+ * xnanosleep.c (timespec_subtract): Don't modify the 2nd arg.
+ Work even if X-Y overflows when subtracting. Make explicit the
+ assumption that tv_nsec must be in range.
+ (clock_get_realtime): Remove. All callers changed to invoke gettime,
+ for simplicity.
+ (xnanosleep): Check for gettime failure every time.
+
+2003-05-06 Jim Meyering <jim@meyering.net>
+
+ * xnanosleep.c (clock_get_realtime): Use gettime.c's gettime function,
+ rather than an inferior, open-coded version that would fail on
+ AIX systems due to clock_gettime failing with errno == ENOSYS.
+ Reported by Jérôme Zago.
+
+2003-05-05 Jim Meyering <jim@meyering.net>
+
+ Avoid array overrun.
+ * ftw.c (nftw_arr): Update to reflect complete list of members.
+ (ftw_arr): Likewise
+ Reported by Olatunji Oluwabukunmi Ruwase.
+
+ Make it less likely that the above can happen again.
+ * ftw.c (struct dummy): Ensure that at least the number of
+ initializers matches the number of members in the corresponding enum.
+ * ftw_.h (enum Ftw_option): Name this previously-anonymous enum.
+ (enum Ftw_option) [FTW_N_MEMBERS]: New member.
+
+2003-05-04 Jim Meyering <jim@meyering.net>
+
+ * setenv.c (__set_errno, LOCK, UNLOCK): Define.
+ (unsetenv): Update from GNU libc.
+ Ifdef-out this function, since the only caller
+ is putenv.c and that file now has its own copy.
+
+ This avoids a core dump on systems without GNU putenv,
+ when running `env -u SOME_ALREADY_UNSET_VARIABLE'.
+ * putenv.c (__set_errno, LOCK, UNLOCK): Define.
+ (unsetenv): New static function, from GNU libc.
+ (rpl_putenv): Use it.
+
+2003-05-02 Jim Meyering <jim@meyering.net>
+
+ * canonicalize.c (canonicalize_file_name) [!HAVE_RESOLVEPATH]:
+ A memory-allocation error could result in heap corruption. Fix it
+ by also updating `dest' when rpath may be changed by xrealloc.
+
+2003-04-15 Jim Meyering <jim@meyering.net>
+
+ * getloadavg.c: Remove (or replace-with-TAB(s) to retain alignment)
+ each sequence of spaces before a TAB character.
+ * md5.c, getopt.c, getopt.h, obstack.h, strftime.c: Likewise.
+
+2003-04-11 Jim Meyering <jim@meyering.net>
+
+ * readutmp.c: Include <string.h> and <stdlib.h> unconditionally.
+
+ * canonicalize.c, exclude.c, getgroups.c, getusershell.c:
+ * group-member.c, idcache.c, mountlist.c, readtokens.c, readutmp.c:
+ * bumpalloc.h: Remove anachronistic casts of xmalloc, xrealloc,
+ and xcalloc return values.
+
+ * xalloc.h (PARAMS): Remove definitions and uses.
+ (XMALLOC, XCALLOC, XREALLOC): Remove unnecessary casts.
+
+ * xmalloc.c: Remove use of PARAMS.
+
+2003-04-10 Jim Meyering <jim@meyering.net>
+
+ * canonicalize.c (canonicalize_file_name) [HAVE_RESOLVEPATH]: Remove
+ stray semicolon that caused `readlink --canonical RELATIVE_NAME' to
+ fail on e.g., Solaris systems. Reported by Bruce Korb.
+ (canonicalize_file_name): Return NULL immediately if resolvepath fails.
+ Otherwise, `readlink --canonical /no-such-file' would exhaust
+ virtual memory on some systems (e.g. Solaris).
+ (canonicalize_file_name): Always free `extra_buf' before returning.
+ (canonicalize_file_name): NUL-terminate the result.
+
+2003-04-05 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (DEFS): Use += notation rather than `DEFS = ... @DEFS@'.
+ Use $(VAR) rather than @VAR@, now that we can rely on automake to
+ emit a definition for each substituted variable.
+
+2003-03-26 Richard Dawe <rich@phekda.freeserve.co.uk>
+
+ * dirname.c [TEST_DIRNAME]: Update build instructions for test.
+ Add test-cases for DOS filenames. Declare program_name.
+ (main): Set up program_name.
+
+2003-03-22 Jim Meyering <jim@meyering.net>
+
+ * strftime.c (widen): Cast alloca return value to proper type.
+
+ * fnmatch_loop.c
+ (NEW_PATTERN): Cast alloca return value to proper type.
+ Otherwise, it wouldn't compile with at least /bin/cc on
+ ymp-cray-unicos9.0.2.X.
+ Combine two mostly-identical uses of alloca into one.
+ Thanks to the Cray-Cyber project for access to a Cray Y-MP.
+
+2003-03-19 Jim Meyering <jim@meyering.net>
+
+ DJGPP doesn't have S_ISLNK, so provide a replacement.
+ * ftw.c (S_IFMT): Define, if necessary.
+ [STAT_MACROS_BROKEN]: Undefine S_ISLNK.
+ (S_ISLNK): Define, if necessary.
+ Based on a patch from Rich Dawe.
+
+ * exclude.h (PARAMS): Remove definition and uses.
+ * exclude.c: Remove uses of `PARAMS'.
+
+ * fnmatch_.h: Don't define __const.
+ (fnmatch): Use const, not __const in prototype.
+ From Paul Eggert.
+
+2003-03-17 Richard Dawe <rich@phekda.freeserve.co.uk>
+
+ * fchdir-stub.c: New file: trivial stub for fchdir.
+
+2003-03-18 Jim Meyering <jim@meyering.net>
+
+ * mountlist.c (read_filesystem_list) [MOUNTED_VMOUNT]: Detect any
+ error from mntctl.
+ Use mntctl's return value to drive the entry-processing loop, since
+ we can't rely on the value of the vmt_length member in the last
+ entry. On some systems doing so could result in exhausting
+ virtual memory. Based in part on a patch from Mike Jetzer.
+
+ * quote.c (quote_n): Fix typo in comment.
+
+2003-03-17 Jim Meyering <jim@meyering.net>
+
+ * raise.c (raise): Rename from rpl_raise.
+ Without that change, systems lacking raise (SunOS 4) would not be
+ able to link programs using raise. Reported by Volker Borchert.
+
+ * ftw.c (FTW_STAT): Rename from `STAT', to avoid conflict
+ with STAT definition from <sys/dir.h> on AIX 5.1.
+ Suggestion from Mike Jetzer and Petter Reinholdtsen.
+
+ * fchown-stub.c (fchown): Put function type on its own line.
+ * readlink-stub.c (readlink): Likewise.
+ * lstat-stub.c (lstat): Likewise.
+
+2003-03-14 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Remove definition --
+ before it pointed to ../src/ansi2knr. Some of these files
+ have required an ANSI (c89) compiler for a year or two.
+ (libfetish_a_SOURCES): Remove unused files: c-stack.c, c-stack.h.
+
+2003-02-04 Dmitry V. Levin <ldv@altlinux.org>
+
+ * stat.c: Include "xalloc.h".
+
+2003-03-13 Paul Eggert <eggert@twinsun.com>
+
+ Merge changes from Bison.
+ * obstack.h: (__INT_TO_PTR) [__STDC__]: Cast result to
+ (void *) to avoid diagnostic with native c89 on SGI IRIX 6.5
+ when compiling Bison 1.875's `bitset bset = obstack_alloc
+ (bobstack, bytes);'. Problem reported by Nelson H. F. Beebe.
+
+2003-01-30 Richard Dawe <rich@phekda.freeserve.co.uk>
+
+ * fchown-stub.c: New file: trivial stub for fchown.
+ * lstat-stub.c: New file: trivial stub for lstat.
+ * readlink-stub.c: New file: trivial stub for readlink.
+
+2003-03-09 Paul Eggert <eggert@twinsun.com>
+
+ * argmatch.c (EXIT_FAILURE): Define if the system doesn't.
+ Reported by Bruce Becker; see:
+ http://mail.gnu.org/archive/html/bug-bison/2003-03/msg00017.html
+
+2003-03-03 Paul Eggert <eggert@twinsun.com>
+ Bruno Haible <bruno@clisp.org>
+
+ * mbswidth.h: Include <wchar.h>. Needed for UnixWare 7.1.1.
+ Reported by John Hughes, see
+ http://mail.gnu.org/archive/html/bug-bison/2003-02/msg00030.html
+
+2003-03-09 Jim Meyering <jim@meyering.net>
+
+ * ftw.c: Include "save-cwd.h".
+ (ftw_startup): Avoid use of getcwd, if possible.
+ Instead, use fopen/fchdir via save_cwd/restore_cwd.
+
+2003-03-08 Jim Meyering <jim@meyering.net>
+
+ * xnanosleep.c: Don't use `defined' in a #define directive.
+
+2003-03-07 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libfetish_a_SOURCES): Remove mmap-stack.h.
+
+ * mmap-stack.c, mmap-stack.h: Remove files.
+
+ * getcwd.c: #undef getcwd only after *all* included header files.
+ Declare getcwd unconditionally. The problem was that same.h
+ included config.h, and that defined getcwd to rpl_getcwd a second
+ time (after the original #undef), and led to the rpl_getcwd
+ function calling itself endlessly. This was the cause of at least
+ the `du' test failures on IRIX 6.5, reported by Nelson Beebe.
+
+ * same.h (same_name): Remove unnecessary inclusion of config.h.
+ It also happened to lead to infinite recursion in getcwd.c.
+ (PARAMS): Remove definition and use.
+
+2003-03-06 Jim Meyering <jim@meyering.net>
+
+ * ftw.c (ftw_startup): Declare `func' parameter to be of type
+ NFTW_FUNC_T, not void* which may be smaller on 64-bit systems.
+ Remove now-unnecessary cast.
+ (FTW_NAME): Cast func argument to type `NFTW_FUNC_T'.
+
+2003-03-05 Jim Meyering <jim@meyering.net>
+
+ * physmem.c (ARRAY_SIZE): Define it.
+
+2003-03-04 Jim Meyering <jim@meyering.net>
+
+ * makepath.c (CLEANUP_CWD): Call error here, now that restore_cwd
+ no longer does it.
+
+ * save-cwd.h (restore_cwd): Update prototype.
+ * save-cwd.c (restore_cwd): Remove two parameters.
+ Simplify. Don't call error upon failure. Let callers do that.
+ (save_cwd): Mention that Irix 5.3 has the same problem as SunOS 4
+ when auditing is enabled. But don't bother updating the #if.
+
+ * xgetcwd.c (xgetcwd): Improve comment.
+
+ * getcwd.c: New file.
+
+2003-02-28 Jim Meyering <jim@meyering.net>
+
+ * ftw.c (ftw_startup): Return -1 if alloca fails.
+
+2003-02-28 Jim Meyering <jim@meyering.net>
+
+ * fts.c (fts_children): If opening `.' fails, set the fts_child
+ member to NULL before returning. From NetBSD.
+
+ * fts.c (fts_children): If fchdir fails, close file descriptor
+ before returning. From NetBSD.
+
+2003-02-27 Jim Meyering <jim@meyering.net>
+
+ * physmem.c (physmem_total, physmem_available): Add comments.
+ From Kaveh Ghazi.
+
+ * physmem.c: Merge in portability changes from gcc/libiberty
+ to support AIX, Tru64, and Windows. See the ChangeLog there
+ for credits and details. Thanks to Kaveh Ghazi for helping
+ to keep these files in sync.
+
+2003-02-24 Jim Meyering <jim@meyering.net>
+
+ * fts_.h [__USE_FILE_OFFSET64]: Remove #error directive.
+
+ (fts_open): Initialize local, tmp, to pacify gcc.
+
+ * fts_.h [struct FTS] (fts_dir_signatures): New, opaque member.
+ * fts.c: Include <search.h>.
+ (struct known_object): Define.
+ (object_compare, add_object, find_object): New functions, like
+ those in ftw.c.
+ (fts_open): Initialize new member.
+ (fts_close): Free memory allocated for new member.
+ (fts_stat): Detect a cycle in O(logN) time per directory processed.
+
+ * fts.c [HAVE_CONFIG_H]: Include <config.h>.
+ Conditionalize inclusion of <sys/param.h>.
+ Conditionalize inclusion of <include/sys/stat.h> vs <sys/stat.h>.
+ Include autoconf-recommended block of dirent/NAMELEN-related
+ definitions and includes. Use NAMLEN throughout, rather than
+ _D_EXACT_NAMLEN.
+ [_LIBC] (close, closedir, fchdir, open, opendir): Define.
+ [_LIBC] (readdir, tdestroy, tfind, tsearch): Define.
+ Remove `__' prefix from all uses of the above. This will help
+ to merge *BSD changes.
+ [!_LIBC] (internal_function): Define.
+ [! _LIBC && ! LSTAT_FOLLOWS_SLASHED_SYMLINK]: Define lstat.
+ (__set_errno): Define if not already defined.
+
+ * fts.c: (fts_open): If fts_alloc returns NULL, don't dereference it.
+ (fts_read): If fts_safe_changedir fails because it is not
+ able to chdir into a subdirectory, then inform the caller.
+
+ * fts.c, fts_.h: New files, directly from glibc.
+
+2003-02-23 Jim Meyering <jim@meyering.net>
+
+ * fts_.h (struct _ftsent) [fts_level]: Change type from short to int,
+ so it can handle a root-relative file name longer than 32K bytes.
+ [fts_pathlen, fts_namelen]: Rearrange members to decrease size of
+ this struct from 84 to 80 bytes.
+
+2003-02-21 Jim Meyering <jim@meyering.net>
+
+ * mmap-stack.h: Undefine HAVE_MMAP_STACK, thus disabling
+ this code on all systems.
+
+ Merge in some changes from GNU libc.
+ * md5.h (md5_uintptr): Define.
+
+ * ftw.c: Include <sys/types.h> before <dirent.h>.
+ This is required for Apple Darwin 6.3 (MacOS 10.2.3).
+ Patch by Nelson Beebe.
+
+2003-02-19 Jim Meyering <jim@meyering.net>
+
+ * md5.c: Merge in some clean-up and optimization changes from glibc.
+ * sha.c: Apply those same changes here, too.
+
+2003-02-18 Jim Meyering <jim@meyering.net>
+
+ * md5.c (md5_stream) [BLOCKSIZE]: Move definition to top of file.
+ Ensure that it is a multiple of 64.
+ Rearrange loop exit tests so as to avoid performing an
+ additional fread after encountering an error or EOF.
+ * sha.c (sha_stream): Likewise.
+ Reported by Michael Bacarella.
+
+ * Makefile.am (CLEANFILES): Remove ftw.h and search.h.
+ (DISTCLEANFILES): Add them here.
+ Add fnmatch.h, too.
+
+ * sha.c (sha_stream): Rearrange loop exit tests so as to avoid
+ performing an additional fread after encountering an error or EOF.
+
+2003-02-17 Jim Meyering <jim@meyering.net>
+
+ * mmap-stack.h (RUN_WITH_BIG_STACK_4): Define.
+
+ * physmem.c: Undo most of last change.
+ Use sysmp instead, since it provides a cleaner interface.
+ From Kaveh Ghazi.
+
+2003-02-16 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libfetish_a_SOURCES): Add mmap-stack.h.
+
+ * mmap-stack.c (MAP_ANONYMOUS): Use MAP_ANON, if possible.
+ Initialize `fd' to -1, so Solaris' mmap works with MAP_ANON.
+
+2003-02-15 Jim Meyering <jim@meyering.net>
+
+ * mmap-stack.c, mmap-stack.h: New files.
+ Let the caller run a function with a larger (mmap'd) stack.
+
+ Add Irix6 support to physmem.c.
+ * physmem.c (irix_sysget): New function.
+ (IRIX_SYSGET_TOTAL, IRIX_SYSGET_AVAILABLE): New macros.
+ (physmem_total, physmem_available): Use them.
+ (main) [DEBUG]: New function.
+
+2003-02-11 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libfetish_a_SOURCES): Add euidaccess.h.
+ * euidaccess.c: Include "euidaccess.h".
+ * euidaccess.h: New file.
+
+2003-02-08 Jim Meyering <jim@meyering.net>
+
+ * ftw.c (ftw_startup): Don't shadow outer declaration of save_err.
+ Merge inconsequential changes from libc.
+
+ * ftw.c (ftw_startup): When using FTW_CHDIR, always remember
+ the current directory, not just when DIR contains a slash.
+ Reported by Manoj Srivastava via Michael Stone as Debian bug #180228.
+
+2003-02-07 Jim Meyering <jim@meyering.net>
+
+ Merge inconsequential changes from libc.
+ * ftw.c: Include limits.h earlier.
+ Move PATH_MAX definition `down' a little; add comment.
+ Rename local, saved_errno to save_err.
+
+2003-02-06 Jim Meyering <jim@meyering.net>
+
+ Support for pruning.
+ * ftw_.h (FTW_DPRE) [enum]: New member and definition.
+ (struct FTW) [skip]: New member.
+
+ * search_.h (__restrict): Define to `restrict' or to nothing.
+
+ * fsusage.c: Remove declaration of statfs.
+ It conflicted with one from OSF/1 5.1 in <sys/mount.h>.
+ Reported by Nelson Beebe.
+
+2003-02-05 Jim Meyering <jim@meyering.net>
+
+ Fix a heap-corruption bug that affected Solaris systems.
+ * ftw.c: Include <limits.h>.
+ (PATH_MAX): Define to 1024, if not already defined.
+ (process_entry): Allocate enough space to hold the resulting
+ file name. Don't presume that 2*dirbufsize is enough.
+ (ftw_startup): Always use PATH_MAX to compute buffer size, now that
+ it is guaranteed to be defined.
+ Nelson Beebe reported that du would sometimes segfault on Solaris.
+
+ * ftw.c (process_entry): When using FTW_DEPTH, call `func', the
+ user-supplied callback, once for the current directory before calling
+ ftw_dir, in case that part of the hierarchy should be pruned.
+ `func' does that by setting `data->skip'.
+ (ftw_startup): Likewise.
+
+2003-02-02 Jim Meyering <jim@meyering.net>
+
+ * ftw.c (lstat) [!_LIBC && !LSTAT_FOLLOWS_SLASHED_SYMLINK]:
+ Define to rpl_lstat.
+
+2003-01-25 Jim Meyering <jim@meyering.net>
+
+ * ftw.c (ISSLASH, FILESYSTEM_PREFIX_LEN) [_LIBC]: Define.
+ (base_name): New function.
+ (ftw_startup): Don't strip trailing slashes.
+ Use base_name to find the offset of the basename.
+
+2003-01-25 Jim Meyering <jim@meyering.net>
+
+ * ftw.c (object_compare): Compare inode numbers before device numbers.
+ The former is much more likely to differ for any two given file objects.
+
+2003-01-23 Jim Meyering <jim@meyering.net>
+
+ * tsearch.c [HAVE_CONFIG_H]: Include <config.h>.
+ Add autoconf-recommended block of alloca-related code.
+ Cast each use of alloca to the required type, (node**).
+
+ * ftw.c: Add autoconf-recommended block of alloca-related code.
+ [!_LIBC] (__getcwd): Define to xgetcwd and declare xgetcwd.
+
+2003-01-22 Jim Meyering <jim@meyering.net>
+
+ * ftw.c (find_object): Don't use c99-style struct initializer.
+
+ * ftw_.h: Change all uses of __const to const.
+ * search_.h: Likewise.
+
+ * Makefile.am (CLEANFILES): Add generated files: ftw.h search.h.
+
+ * ftw.c (process_entry): Handle FTW_DCHP.
+ (ftw_dir): Handle FTW_DCH.
+
+ * ftw_.h [!_LIBC && !__USE_XOPEN_EXTENDED]: Define __USE_XOPEN_EXTENDED
+ and FTW_H_STANDALONE.
+ [anon enum] (FTW_DCH, FTW_DCHP): New members.
+ (FTW_DCH, FTW_DCHP): Define.
+
+ * ftw.c: Include autoconf-recommended block of dirent/NAMELEN
+ related definitions and includes. Use NAMELEN throughout,
+ rather than _D_EXACT_NAMLEN.
+ [_LIBC]: Define NAMELEN to _D_EXACT_NAMLEN.
+ (stpcpy): Declare, if necessary.
+ (mempcpy): Define, if necessary.
+ [!_LIBC] (__stpcpy, __mempcpy): Define.
+ [!_LIBC] (LXSTAT, XSTAT): Define.
+
+2003-01-21 Jim Meyering <jim@meyering.net>
+
+ * tsearch.c: New file, from GNU libc.
+ [! weak_alias]: Define __-prefixed names to publicized ones.
+ [! defined _LIBC] (weak_alias, internal_function): Define-away.
+ [defined weak_alias]: Guard each use of weak_alias.
+
+2003-01-20 Jim Meyering <jim@meyering.net>
+
+ * canonicalize.c: Include "path-concat.h".
+
+ * search_.h: New file, from GNU libc.
+
+ * Makefile.am (libfetish_a_SOURCES): Use ftw_.h here, too.
+ (libfetish_a_SOURCES): Add search_.h.
+ * ftw_.h: Rename from ftw.h.
+
+ * obstack.h (obstack_object_size): Declare temporary, __o,
+ to be const, in order to avoid warnings.
+ (obstack_room): Likewise.
+ (obstack_empty_p): Likewise.
+
+ Merge in changes from GNU libc
+ * error.c: Eliminate many `#ifdef USE_IN_LIBIO' conditionals.
+
+2003-01-19 Ulrich Drepper <drepper@redhat.com>
+
+ From GNU libc.
+ * strftime.c (my_strftime): Handle very large width
+ specifications for numeric values correctly. Improve checks for
+ overflow.
+
+2003-01-19 Jim Meyering <jim@meyering.net>
+
+ * strftime.c (widen) [COMPILE_WIDE]: Merge nearly-identical definitions.
+ (nl_get_alt_digit) [! defined my_strftime]: Define.
+ (my_strftime) [_NL_CURRENT]: Merge nearly-identical uses of
+ _nl_get_alt_digit and _nl_get_walt_digit.
+
+ * strftime.c (my_strftime): Merge in locale-related changes from libc.
+ These changes have no effect outside of _LIBC.
+
+2003-01-14 Jim Meyering <jim@meyering.net>
+
+ * same.c (same_name): Declare *_basename locals to be `const'.
+ Consolidate declarations and initializations of *_base* locals.
+
+2003-01-11 Bruno Haible <bruno@clisp.org>
+
+ * same.c (same_name): Reorder tests so as to avoid calling stat()
+ when a string comparison is sufficient.
+
+2003-01-11 Bruno Haible <bruno@clisp.org>
+
+ * readtokens.c (readtoken): Cast character to 'unsigned char', not
+ 'unsigned int'.
+
+2003-01-14 Jim Meyering <jim@meyering.net>
+
+ * ftw.c: Merge in Ulrich's and my changes from libc.
+
+2003-01-12 Jim Meyering <jim@meyering.net>
+
+ * ftw.c (ftw_startup): Rename local-shadowing local to pacify gcc.
+ Also work on systems that have `struct direct', using autoconf's
+ AC_HEADER_DIRENT.
+ Tweak comments.
+
+ * ftw.h, ftw.c: New files, from glibc/io.
+
+ * Makefile.am (libfetish_a_SOURCES): Add ftw.h.
+
+2003-01-11 Jim Meyering <jim@meyering.net>
+
+ * makepath.c: Don't test HAVE_ERRNO_H. It's not necessary.
+
+ * canonicalize.c: Don't test HAVE_ERRNO_H. It's not necessary.
+ Don't test HAVE_STDDEF_H. It's not necessary.
+ Use definition of PTR_INT_TYPE from obstack.h.
+
+2002-12-01 Dmitry V. Levin <ldv@altlinux.org>
+
+ * canonicalize.c: New file.
+ The readlink-based implementation imported from GNU C Library.
+ The resolveip-based implementation imported from src/df.c (show_point).
+ * canonicalize.h: New file.
+ * Makefile.am (libfetish_a_SOURCES): Add canonicalize.h.
+
+2003-01-10 Jim Meyering <jim@meyering.net>
+
+ * save-cwd.h: Remove uses of PARAMS.
+
+2002-11-30 Dmitry V. Levin <ldv@altlinux.org>
+
+ * xgetcwd.h: New file.
+ * Makefile.am (libfetish_a_SOURCES): Add xgetcwd.h.
+ * save-cwd.c: Include "xgetcwd.h".
+ * xgetcwd.c: Likewise.
+
+2002-11-30 Dmitry V. Levin <ldv@altlinux.org>
+
+ * getgroups.c: Don't declare functions declared by xalloc.h.
+ Include "xalloc.h" instead.
+ * group-member.c: Likewise.
+ * idcache.c: Likewise.
+ * readutmp.c: Likewise.
+
+2003-01-08 Jim Meyering <jim@meyering.net>
+
+ * full-write.c: Undefine and define-away `const' after inclusion
+ of errno.h, not before. Suggestion from Bruno Haible.
+
+2003-01-06 Jim Meyering <jim@meyering.net>
+
+ * full-write.c: Rework so that it may serve to define full_read, too.
+ * full-read.c: Simply #define FULL_READ and include full-write.c.
+
+ * Makefile.am (libfetish_a_SOURCES): Add full-read.c and full-read.h.
+ * full-read.c, full-read.h: New files.
+
+ Update from gnulib.
+
+ 2002-12-10 Paul Eggert <eggert@twinsun.com>
+ Port exclude.c and exclude.h to more non-GNU systems, e.g. Solaris 7.
+ * exclude.h (EXCLUDE_ANCHORED, EXCLUDE_INCLUDE, EXCLUDE_WILDCARDS):
+ Choose values that are less likely to collide with system fnmatch
+ options.
+ * exclude.c (FNM_CASEFOLD, FNM_LEADING_DIR): Define to 0 if not
+ defined (e.g., a pure POSIX system).
+ (EXCLUDE_macros_do_not_collide_with_FNM_macros): Use FNM_PATHNAME
+ instead of FNM_FILE_NAME, for compatibility with pure POSIX systems.
+
+ Update from gnulib.
+
+ * utime.c (utime_null): Use SAFE_READ_ERROR.
+ (utime_null): No need to call ftruncate if the file was nonempty.
+ * getdate.y (get_date): Test HAVE_STRUCT_TM_TM_ZONE, not HAVE_TM_ZONE.
+ * canon-host.c (strdup): Remove unused declaration.
+ * fsusage.c: Include full_read.h.
+ (get_fs_usage): Use full_read instead of safe_read.
+ Patches by Bruno Haible.
+
+2003-01-04 Jim Meyering <jim@meyering.net>
+
+ * version-etc.c: Update copyright date.
+
+2002-12-31 Jim Meyering <meyering@lucent.com>
+
+ * dev-ino.h: New file.
+ * cycle-check.c: New file.
+ * cycle-check.h: New file.
+ * Makefile.am (libfetish_a_SOURCES): Add cycle-check.c, cycle-check.h,
+ and dev-ino.h.
+
+2002-12-21 Jim Meyering <jim@meyering.net>
+
+ * stime.c: Remove file (for real, this time).
+
+2002-12-15 Jim Meyering <jim@meyering.net>
+
+ * strftime.h: New file, for declaration of nstrftime.
+ * Makefile.am (libfetish_a_SOURCES): Add strftime.h.
+
+2002-12-09 Jim Meyering <jim@meyering.net>
+
+ * unlocked-io.h: Sync from gnulib.
+
+2002-12-06 Jim Meyering <jim@meyering.net>
+
+ * unlocked-io.h: New file, but with proper copyright notice and
+ attribution. Note: this is *not* the same as the file in gnulib.
+ This uses #if HAVE_FUNC_UNLOCKED for each `FUNC', rather than
+ HAVE_DECL_FUNC_UNLOCKED. This usage is consistent with the autoconf
+ macro in ../m4/jm-glibc-io.m4. Modulo comments, this file still
+ contains exactly what was generated by gen-uio.
+
+2002-12-04 Paul Eggert <eggert@twinsun.com>
+
+ Do not generate unlocked-io.h automatically, since it's easier to
+ maintain it by hand.
+
+ * gen-uio: Remove.
+ * Makefile.am: Add copyright notice.
+ (libfetish_a_SOURCES): Add unlocked-io.h.
+ (BUILT_SOURCES, all-local): Remove unlocked-io.h.
+ (DISTCLEANFILES, io_functions): Remove macros.
+ (EXTRA_DIST): Remove gen_uio.
+ (unlocked-io.h): Remove rule.
+
+2002-12-05 Paul Eggert <eggert@twinsun.com>
+
+ * alloca.c [defined emacs]: Include "lisp.h".
+ (xalloc_die) [defined emacs]: New macro.
+ (free) [defined emacs && defined EMACS_FREE]: Define to EMACS_FREE.
+ [! defined emacs]: Include <xalloc.h>.
+ (POINTER_TYPE) [!defined POINTER_TYPE]: New macro.
+ (pointer): Typedef to POINTER_TYPE *.
+ (malloc): Remove decl; we now always use xmalloc.
+ (alloca): Use old-style definition, since Emacs needs this.
+ Check for arithmetic overflow when computing combined size.
+
+2002-12-04 Jim Meyering <jim@meyering.net>
+
+ Reflect the fact that stat.c and lstat.c are no longer generated.
+ * Makefile.am (BUILT_SOURCES): Remove stat.c and lstat.c.
+ (DISTCLEANFILES): Likewise.
+ (EXTRA_DIST): Likewise.
+ (all_local): Don't depend on stat.c or lstat.c.
+ (stat.c, lstat.c): Remove rules.
+ (EXTRA_DIST): Remove xstat.in.
+
+ * xstat.in: Remove file. Contents moved into stat.c.
+ * stat.c: Rework so that it may serve to define rpl_lstat, too.
+ * lstat.c: Simply #define LSTAT and include stat.c.
+
+ * safe-read.c: Rework so that it may serve to define safe_write, too.
+ * safe-write.c: Simply #define SAFE_WRITE and include safe-read.c.
+
+2002-12-03 Jim Meyering <jim@meyering.net>
+
+ * safe-read.h: Update from gnulib (add comments, include stddef.h).
+
+2002-12-02 Jim Meyering <jim@meyering.net>
+
+ * safe-read.c (EINTR): Define.
+ (safe_read): Rewrite to iterate IFF the read fails with EINTR.
+
+2002-12-01 Jim Meyering <jim@meyering.net>
+
+ * safe-read.c: Merge from gnulib.
+ (safe_read): Also exit the loop when read returns zero.
+ (CHAR_BIT, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM, INT_MAX): Define.
+
+ * Makefile.am (libfetish_a_SOURCES): Add safe-write.c and safe-write.h.
+
+ * strtoll.c: Update from gnulib (trivial changes).
+ * strdup.c: Likewise.
+ * strpbrk.c: Likewise.
+ * strstr.c: Likewise.
+ * tempname.c: Likewise.
+ * obstack.c: Likewise.
+ * getopt.c: Likewise.
+ * getopt1.c: Likewise.
+ * getopt.h: Likewise.
+ * quote.h: Update from gnulib: add Copyright comment.
+ * quote.c: Likewise.
+
+2002-11-28 Jim Meyering <jim@meyering.net>
+
+ * mktime.c: Merge from gnulib/libc, for a slightly uglier solution.
+
+ Merge some more, in preparation for merge back into libc.
+ * error.c (_): Define only if not already defined.
+ Move definition to follow all #include directives.
+ Include unlocked-io.h only if !_LIBC.
+
+ Merge in changes from libc.
+ * error.c [_LIBC]: Include <libio/libioP.h>.
+ [USE_IN_LIBIO]: Include <libio/iolibio.h>
+ (fflush): Tweak definition to use INTUSE.
+ (putc): Define.
+
+2002-11-23 Jim Meyering <jim@meyering.net>
+
+ From gnulib, by Bruno Haible
+ * closeout.c: Include gettext.h instead of <libintl.h>.
+ * makepath.c: Likewise.
+ * rpmatch.c: Likewise.
+ * userspec.c: Likewise.
+ * version-etc.c: Likewise.
+ * xmemcoll.c: Likewise.
+ * error.c [!_LIBC]: Include gettext.h instead of <libintl.h>.
+
+ * mbswidth.h: Update from gnulib.
+ * mbswidth.c: Likewise.
+ * localcharset.c: Likewise.
+ * config.charset: Likewise.
+ * unicodeio.c: Likewise.
+
+2002-11-22 Paul Eggert <eggert@twinsun.com>
+
+ * quotearg.h: Allow multiple inclusion by surrounding with
+ "#ifndef QUOTEARG_H_". Include <stddef.h>, for size_t,
+ so that we can be included first.
+ (PARAMS): Remove; we now assume C89 or later. All uses removed.
+ * quotearg.c: Include quotearg.h immediately after config.h.
+ No need to include stddef.h or sys/types.h any more.
+ Surround local include files with "", not "<>".
+ Assume HAVE_LIMITS_H unconditionally, as we assume C89.
+ Similarly, assume HAVE_C_BACKSLASH_A, CHAR_BIT, UCHAR_MAX, UINT_MAX,
+ HAVE_STDLIB_H, HAVE_STRING_H, STDC_HEADERS.
+ (HAVE_MBSINIT): Undef if !HAVE_MBRTOWC.
+ (mbsinit): Define to 1 if !defined mbsinit && !HAVE_MBSINIT.
+ (ISPRINT): Remove; no longer needed now that we assume C89.
+
+ (clone_quoting_options, quotearg_buffer, quotearg_n_options):
+ Preserve errno.
+
+ (quotearg_buffer_restyled, quotearg_n, quotearg_n_style,
+ quotearg_char): Use SIZE_MAX rather than
+ (size_t) -1 when we are talking about "infinity".
+
+ (quotearg_buffer_restyled): Fix bug when quoting trigraphs.
+
+2002-11-22 Jim Meyering <jim@meyering.net>
+
+ From gnulib.
+ * strstr.c: Don't include <sys/types.h>. It's unnecessary.
+
+2002-11-21 Bruno Haible <bruno@clisp.org>
+
+ Remove case insensitive option matching.
+ * argmatch.h (argcasematch): Remove declaration.
+ (ARGCASEMATCH): Remove macro.
+ (__xargmatch_internal): Remove case_sensitive argument.
+ (XARGMATCH): Update.
+ (XARGCASEMATCH): Remove macro.
+ * argmatch.c (argmatch): Renamed from __argmatch_internal. Remove
+ case_sensitive argument.
+ (argcasematch): Remove function.
+ (__xargmatch_internal): Remove case_sensitive argument.
+ (main): Use XARGMATCH instead of XARGCASEMATCH.
+
+ * argmatch.c: Include gettext.h instead of <locale.h> and <libintl.h>.
+
+2002-11-21 Bruno Haible <bruno@clisp.org>
+
+ * xmalloc.c: Change compile-time error message. Add comment about
+ required autoconf version.
+ * xmalloc.c: Include gettext.h instead of <libintl.h>.
+ (textdomain): Remove definition.
+
+2002-11-21 Jim Meyering <jim@meyering.net>
+
+ * strdup.c (strdup): Merge in changes from gnulib; mainly to
+ use memcpy rather than strcpy.
+
+ * strcspn.c: Update from gnulib.
+
+ * sig2str.c (str2signum): Use unsigned, not size_t, for type of index.
+
+ * quotearg.c: Use `"'s when including quotearg.h and xalloc.h,
+ not the `<...>' notation.
+ Include <errno.h> and declare errno if necessary.
+
+ * README: Update from gnulib.
+
+2002-11-20 Paul Eggert <eggert@twinsun.com>
+
+ Merge argmatch cleanups from Bison. Assume C89.
+
+ * argmatch.c: Include config.h here, not in argmatch.h.
+ Include stdlib.h, for EXIT_FAILURE.
+ Always include <string.h>, since we assume C89.
+ (EXIT_FAILURE): Remove pre-C89 bug workaround.
+ * argmatch.h: Do not include <config.h> or <sys/types.h>.
+ Include <stddef.h> instead, since it's all we need for size_t.
+ (PARAMS): Remove. All uses removed.
+ (ARRAY_CARDINALITY): Do not bother to #undef.
+ (ARRAY_CARDINALITY, ARGMATCH, ARGCASEMATCH, invalid_arg,
+ ARGMATCH_VALID, XARGMATCH, XARGCASEMATCH):
+ Remove unnecessary parentheses.
+ (ARGMATCH_VALID, XARGMATCH, XARGCASEMATCH):
+ Insert necessary parentheses.
+ (ARGMATCH_CONSTRAINT, ARGMATCH_VERIFY): New macros.
+ (ARGMATCH_ASSERT): Use ARGMATCH_CONSTRAINT.
+
+2002-11-19 Jim Meyering <jim@meyering.net>
+
+ Be careful not to clobber errno.
+ * quotearg.c (quotearg_buffer_restyled): If mbrtowc returns
+ `(size_t) -1' (at which point it would also set errno to EILSEQ),
+ then restore errno to its previous value.
+ Reported by Phillip Jones via Tim Waugh as
+ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=76334.
+
+ Avoid a link-time failure on some Linux systems.
+ * mktime.c (STATIC): Define to be empty (_LIBC) or `static' (otherwise).
+ (__mon_yday): Declare with the STATIC attribute.
+ (__mktime_internal): Likewise.
+ Based on a report from Greg Schafer.
+
+2002-11-14 Jim Meyering <jim@meyering.net>
+
+ * long-options.c: Don't include libintl.h, and don't define `_' --
+ they're not used.
+ * same.c: Likewise.
+
+2002-11-10 Jim Meyering <jim@meyering.net>
+
+ * raise.c: New file.
+
+2002-11-08 Paul Eggert <eggert@twinsun.com>
+
+ * human.c (human_readable): Revamp to avoid warning about unused
+ variable 'amt'. Unfortunately this means using some gotos.
+
+2002-11-08 Jim Meyering <jim@meyering.net>
+
+ * human.c (human_readable): Avoid warnings from gcc -Wshadow.
+
+2002-11-06 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (EXTRA_DIST): Add inttostr.h.
+
+2002-10-07 Paul Eggert <eggert@twinsun.com>
+
+ * Makefile.am (libfetish_a_SOURCES): Add imaxtostr.c, offtostr.c,
+ umaxtostr.c.
+ (EXTRA_DIST): Add inttostr.c.
+ * inttostr.c, inttostr.h, imaxtostr.c, offtostr.c, umaxtostr.c:
+ New files, taken from GNU tar.
+
+ * human.c, human.h: Rewrite to support locale-specific
+ notations like thousands separators.
+ Specify what includer of include.h must include beforehand.
+ (human_group_digits, human_suppress_point_zero, human_autoscale,
+ human_base_1024, human_SI, human_B): New enum values.
+ (human_readable): Rename from human_readable_inexact; put the
+ options before the sizes. All uses changed. The old human_readable
+ function has been removed; use inttostr.h instead.
+ (human_options): Renamed from human_block_size, with new signature
+ that allows block sizes up to UINTMAX_MAX. All callers changed.
+
+2002-10-13 Jim Meyering <jim@meyering.net>
+
+ * xnanosleep.c (initialized): Remove declaration now that it's unused.
+
+2002-10-12 Paul Eggert <eggert@twinsun.com>
+
+ * xnanosleep.c: There's no need to futz with the rounding mode,
+ since the code should work properly even in the default rounding mode.
+ (<fenv.h>): Do not include.
+ (#pragma STDC FENV_ACCESS ON): Remove.
+ (xnanosleep): Don't futz with rounding state.
+
+2002-10-06 Jim Meyering <jim@meyering.net>
+
+ * safe-read.c (safe_read): Change type of function
+ from ssize_t to size_t.
+ * safe-read.h: Update prototype.
+ (SAFE_READ_ERROR): Define.
+
+2002-09-28 Jim Meyering <jim@meyering.net>
+
+ * makepath.c (make_path): Restore umask *before* creating the final
+ component.
+
+2002-09-25 Paul Eggert <eggert@twinsun.com>
+
+ * fsusage.c [! HAVE_INTTYPES_H && HAVE_STDINT_H] Include <stdint.h>.
+ (UINTMAX_MAX) [!defined UINTMAX_MAX]: New macro.
+ (PROPAGATE_ALL_ONES): Work even if X is unsigned and narrower than
+ int. Work more efficiently if X is the same width as uintmax_t.
+ Do not compare X to -1, to avoid bogus compiler warning.
+ (get_fs_usage): (uintmax_t) -1 -> UINTMAX_MAX to avoid a cast.
+ Don't assume that f_frsize and f_bsize are the same type.
+
+2002-09-25 Jim Meyering <jim@meyering.net>
+
+ * fsusage.c: Remove unneeded parentheses around operands of `defined'.
+
+ * safe-read.c (safe_read): Make comment more precise:
+ upon error, it returns -1.
+
+2002-09-22 Jim Meyering <jim@meyering.net>
+
+ * makepath.c (make_path): Minor reformatting.
+
+2002-09-14 Paul Eggert <eggert@twinsun.com>
+
+ * xnanosleep (xnanosleep): Return -1 on failure, not 1,
+ for consistency with nanosleep. Check errno after nanosleep
+ returns -1.
+
+2002-09-11 Jim Meyering <jim@meyering.net>
+
+ * xnanosleep.c, xnanosleep.h: New files, factored out of sleep.c.
+ * Makefile.am (libfetish_a_SOURCES): Add them.
+
+2002-09-04 Jim Meyering <jim@meyering.net>
+
+ * addext.c (addext): Add a cast to avoid gcc's warning about
+ `comparison between signed and unsigned'.
+
+ * sig2str.c (str2signum, sig2str): Declare loop index variables to be
+ of type size_t so that they match type of upper bound, thus avoiding
+ warning about `comparison between signed and unsigned'.
+
+2002-08-31 Jim Meyering <jim@meyering.net>
+
+ * mktime.c: Update from GNU libc.
+ * obstack.c: Likewise.
+ * getopt.c: Likewise.
+ * getopt1.c: Likewise.
+
+2002-08-05 Paul Eggert <eggert@twinsun.com>
+
+ Fix some minor time-related bugs with POSIX time arguments.
+ Some valid time stamps were being rejected (notably -1, and
+ time stamps before 1900 on 64-bit hosts). And some invalid
+ time stamps were being accepted, e.g. September 31.
+
+ * posixtm.h (posixtime): Return bool instead of time_t, so
+ that we can return (time_t) -1 successfully.
+ * posixtm.c: Likewise.
+ [HAVE_STDBOOL_H]: Include <stdbool.h>.
+ (bool, false, true) [!HAVE_STDBOOL_H]: New type.
+ (t): Remove static var.
+ (year, posix_time_parse): Now takes struct tm * arg to modify, instead
+ of static var. All uses changed.
+ (year): Do not reject years before 1900; they can occur with
+ 64-bit time_t.
+ (posix_time_parse): Do not check for out-of-range components;
+ that is now the caller's responsibility, since our checks were
+ only approximations.
+ (posixtime): Use mktime to check for out-of-range components,
+ since it knows them exactly.
+ If mktime returns (time_t) -1, check whether an error actually occurred
+ by invoking localtime on -1.
+ (main) [TEST_POSIXTIME]: Check for input data errors, and report
+ posixtime failures better.
+ Improve the test data (in comments only).
+
+2002-07-27 Jim Meyering <jim@meyering.net>
+
+ * readutmp.h: If we have both utmpx.h and utmp.h, and there exists
+ the utmp.ut_exit member, but not the utmpx.ut_exit member, then
+ undefine HAVE_UTMPX_H. For AIX 4.3.3. Doing all this in cpp is
+ a big kludge; someday we'll put the brains in an autoconf macro.
+ (UT_EXIT_E_TERMINATION, UT_EXIT_E_EXIT): Define.
+
+2002-07-20 Jim Meyering <jim@meyering.net>
+
+ * xmalloc.c: Adjust to work with new autoconf macros, AC_FUNC_MALLOC
+ and AC_FUNC_REALLOC: test #ifndef HAVE_MALLOC/HAVE_REALLOC.
+
+ * gettext.h: Upgrade to gettext-0.11.3.
+
+2002-07-13 Bruno Haible <bruno@clisp.org>
+
+ * xstat.in: Include <string.h>.
+ * mountlist.c: #undef MNT_IGNORE before defining it, to avoid warning
+ on FreeBSD.
+
+2002-07-09 Jim Meyering <jim@meyering.net>
+
+ * mountlist.h (ME_DUMMY): Don't count entries of type `auto' as dummy
+ ones. At least on GNU/Linux systems, `auto' means something else.
+ From Michael Stone.
+
+2002-07-01 Jim Meyering <jim@meyering.net>
+
+ * c-stack.c: Include sys/time.h.
+ From Volker Borchert.
+
+2002-06-11 Paul Eggert <eggert@twinsun.com>
+
+ * fnmatch.c, fnmatch_loop.c (WIDE_CHAR_SUPPORT):
+ New macro. Use it uniformly instead of
+ (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H).
+ It also uses HAVE_BTOWC, to fix a porting bug on Solaris 2.5.1
+ reported by Vin Shelton.
+
+2002-06-22 Jim Meyering <jim@meyering.net>
+
+ * fnmatch.c (ISASCII, ISPRINT): Undefine, to avoid warning about
+ redefinition due to Solaris 2.6's definition in /usr/include/sys/euc.h.
+
+2002-06-22 Paul Eggert <eggert@twinsun.com>
+
+ * c-stack.h (segv_handler, c_stack_action) [! defined SA_SIGINFO]:
+ Do not assume SA_SIGINFO behavior.
+ Bug reported by Jim Meyering on NetBSD 1.5.2.
+
+2002-06-22 Jim Meyering <jim@meyering.net>
+
+ * c-stack.c, c-stack.h: New files, from diffutils-2.8.2.
+
+ * exitfail.c, exitfail.h: Likewise.
+ * Makefile.am (libfetish_a_SOURCES): Add exitfail.c and exitfail.h.
+
+ * Makefile.am (libfetish_a_SOURCES): Add fnmatch_.h in place
+ of fnmatch.h.
+ (EXTRA_DIST): Add fnmatch_loop.c.
+ (libfetish_a_SOURCES): Add c-stack.c and c-stack.h.
+
+ * fnmatch_loop.c: New file, from diffutils-2.8.2.
+ * fnmatch.c: Update from diffutils-2.8.2.
+ * fnmatch_.h: New file. From diffutils-2.8.2.
+ * fnmatch.h: Remove file.
+
+2002-06-18 Paul Eggert <eggert@twinsun.com>
+
+ * file-type.h: Report an error if neither S_ISREG nor
+ S_IFREG is defined, instead of using a test specific to glibc
+ 2.2. This should be safe, since POSIX requires S_ISREG and
+ Unix Version 7 had S_IFREG. We don't need to check for
+ <sys/types.h> since we don't use any symbols that it defines.
+
+2002-06-15 Jim Meyering <jim@meyering.net>
+
+ * file-type.h (FILE_TYPE_H): Guard entire contents with #ifndef.
+ For GNU libc 2.2 and newer, ensure that <sys/types.h> and <sys/stat.h>
+ have been included before this file.
+
+2002-06-13 Richard Dawe <richdawe@bigfoot.com>
+
+ * Makefile.am (lstat.c, stat.c, .sin.sed): Use t-$@, rather than $@-t,
+ so that each temporary file name is unique and valid in the first
+ 8 characters, for operation under DOS.
+
+2002-06-15 Jim Meyering <jim@meyering.net>
+
+ Work even with DJGPP 2.03, which lacks support for symlinks.
+ From Richard Dawe.
+ * xstat.in (S_ISLNK): Define to 0 if neither S_ISLNK nor S_IFLNK
+ is defined.
+ * lchown.c (S_ISLNK): Likewise.
+
+2002-06-14 Jim Meyering <jim@meyering.net>
+
+ * file-type.h: Use the version from diffutils-2.8.2.
+ * file-type.c: Likewise.
+
+2002-05-27 Jim Meyering <jim@meyering.net>
+
+ Fix a problem seen only on nonconforming systems whereby ls.c's
+ use of localtime, and then of gettimeofday would cause trouble:
+ the localtime call used to initialize rpl_gettimeofday's save
+ mechanism would clobber ls's current local time information so
+ that in any long listing the first file would always be listed
+ with date 1970-01-01. Analysis by Volker Borchert.
+
+ * gettimeofday.c (localtime): Undefine.
+ (rpl_localtime): New function.
+
+2002-05-22 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libfetish_a_SOURCES): Add file-type.c and file-type.h.
+ * file-type.h: New file.
+ * file-type.c (file_type): New file/function. Extracted from diffutils.
+
+2002-04-29 Paul Eggert <eggert@twinsun.com>
+
+ * hard-locale.c: Upgrade to version used in GNU Diffutils 2.8.1.
+
+2002-04-28 Paul Eggert <eggert@twinsun.com>
+
+ * sig2str.h (SIGNUM_BOUND): Do not use WTERMSIG, to avoid
+ depending on <sys/wait.h> and WTERMSIG. Default to 64 instead
+ of 127, since 64 is the largest conceivable number for ancient
+ nonstandard hosts.
+ * sig2str.c: Do not include <sys/wait.h>; no longer needed.
+
+2002-04-28 Jim Meyering <jim@meyering.net>
+
+ * sig2str.c (WTERMSIG): Remove definition (unused).
+
+2002-04-28 Paul Eggert <eggert@twinsun.com>
+
+ * sig2str.h, sig2str.c: New files.
+ * Makefile.am (libfetish_a_SOURCES): Add sig2str.h.
+
+2002-04-24 Jim Meyering <jim@meyering.net>
+
+ * gettext.h: New file, from Gettext.
+ * Makefile.am (INCLUDES): Remove -I../intl.
+ (libfetish_a_SOURCES): Add gettext.h.
+
+2002-04-16 Jim Meyering <jim@meyering.net>
+
+ * readutmp.h (UT_TYPE): Remove definition (now in who.c).
+ (HAVE_STRUCT_XTMP_UT_EXIT, HAVE_STRUCT_XTMP_UT_ID): Define.
+ (HAVE_STRUCT_XTMP_UT_PID, HAVE_STRUCT_XTMP_UT_TYPE): Define.
+
+2002-04-12 Jim Meyering <jim@meyering.net>
+
+ * dirfd.h (dirfd): Elide prototype if dirfd is a macro.
+
+2002-03-10 Jim Meyering <jim@meyering.net>
+
+ * makepath.c (make_path): Remove a comma from a diagnostic.
+ Suggestion from Santiago Vila.
+
+2002-03-08 Jim Meyering <jim@meyering.net>
+
+ * rename.c: Mention that this wrapper is needed also on
+ mips-dec-ultrix4.4 systems.
+
+2002-03-02 Jim Meyering <jim@meyering.net>
+
+ * gettime.c (gettime): Test HAVE_CLOCK_GETTIME,
+ not HAVE_CLOCK_SETTIME.
+
+2002-02-27 Paul Eggert <eggert@twinsun.com>
+
+ * nanosleep.h: Rename to....
+ * timespec.h: New name for nanosleep.h. All uses changed.
+
+ * gettime.c: New file.
+ * settime.c: New file.
+ * stime.c: Remove.
+
+ * Makefile.am (libfetish_a_SOURCES): Add gettime.c, settime.c,
+ timespec.h. Remove nanosleep.h.
+
+2002-02-25 Paul Eggert <eggert@twinsun.com>
+
+ * acl.c, acl.h: New files.
+ * Makefile.am (libfetish_a_SOURCES): Add acl.h, acl.c.
+
+2002-02-24 Jim Meyering <jim@meyering.net>
+
+ * strnlen.c (strnlen): Define-away/undef so that an inconsistent
+ prototype in string.h (on at least AIX4.3.2.0 w/gcc-2.95.3) doesn't
+ cause trouble. Reported by Nelson Beebe.
+
+2002-02-23 Paul Eggert <eggert@twinsun.com>
+
+ * path-concat.c (xpath_concat): Reorder code to pacify
+ compilers that don't know that xalloc_die never returns.
+
+2002-02-20 Jim Meyering <jim@meyering.net>
+
+ * getdate.c: Regenerate using bison-1.33.
+
+2002-02-15 Paul Eggert <eggert@twinsun.com>
+
+ * posixver.c, posixver.h: New files.
+ * Makefile.am (libfetish_a_SOURCES): Add them.
+
+2002-02-02 Paul Eggert <eggert@twinsun.com>
+ Bruno Haible <bruno@clisp.org>
+
+ * unicodeio.h (print_unicode_char): Add exit_on_error argument.
+ (fwrite_success_callback): New declaration.
+ * unicodeio.c (unicode_to_mb): New function, extracted from
+ print_unicode_char. Call failure callback instead of error.
+ (fwrite_success_callback): New function.
+ (exit_failure_callback): New function.
+ (fallback_failure_callback): New function.
+ (print_unicode_char): Call unicode_to_mb.
+
+2002-01-26 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (getdate$U.o): Depend on unlocked-io.h.
+
+2002-01-22 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (Makefile): Don't depend on $(BUILT_SOURCES).
+ Otherwise, some versions of automake would omit the rule that makes
+ Makefile from Makefile.in.
+
+2001-01-21 Paul Eggert <eggert@twinsun.com>
+
+ * xmemcoll.h, xmemcoll.c: New files.
+ * Makefile.am (libfetish_a_SOURCES): Add them.
+ * memcoll.c: Include errno.h, and declare errno if not defined.
+ (memcoll): Set errno to zero if there is no error.
+
+ * quotearg.c (quotearg_buffer_restyled):
+ Fix bug with quoting buffers containing NUL when backslashing escapes.
+ This bug was exposed by the other changes in this patch.
+ (quotearg_n_options): New arg ARGSIZE.
+ All callers changed.
+ (quoting_options_from_style): New function.
+ (quotearg_n_style): Use it.
+ (quotearg_n_style_mem): New function.
+
+ * quotearg.h (quotearg_n_style_mem): New function.
+
+2002-01-16 Jim Meyering <jim@meyering.net>
+
+ * getdate.y: Add three semicolons, each just before a closing brace.
+ Bison (as of version 1.31) no longer papers over that mistake.
+
+2002-02-14 Paul Eggert <eggert@twinsun.com>
+
+ * backupfile.c (ISDIGIT): Comment fix.
+ * getdate.y (ISDIGIT): Likewise.
+ * posixtm.c (ISDIGIT, year): Likewise.
+ * strverscmp.c (ISDIGIT): Likewise.
+ * userspec.c (ISDIGIT): Likewise.
+
+2002-01-05 Jim Meyering <jim@meyering.net>
+
+ * version-etc.c (version_etc_copyright): Update copyright year.
+
+2001-01-19 Paul Eggert <eggert@twinsun.com>
+
+ * closeout.c (close_stdout_status): If ferror (stdout), do
+ not silently exit merely because the output buffer happens to
+ have nothing pending.
+
+2001-12-18 Paul Eggert <eggert@twinsun.com>
+
+ See the big note in ../ChangeLog.
+ * human.c (suffixes): Prefer K to k for 1024.
+ (generate_suffix_backwards): New function.
+ (human_readable_inexact): Use it.
+ * xstrtol.c (__xstrtol): If there is no number but there
+ is a valid suffix, assume 1. "MB" now means decimal, "MiB" binary.
+ Accept 'K' as well as 'k'.
+
+2001-12-15 Jim Meyering <jim@meyering.net>
+
+ * regex.h (__restrict_arr): Update from libc.
+
+ * mountlist.h (ME_REMOTE): Recognize file systems of type smbfs
+ as `remote' if the name starts with `//'. Suggested by Michael Stone.
+ (STREQ): Define.
+
+2001-12-10 Jim Meyering <jim@meyering.net>
+
+ * linebuffer.c: Remove explicit declarations of xmalloc and xrealloc,
+ Instead, include "xalloc.h".
+ (initbuffer): Don't cast xmalloc return value to char*.
+ (readline): Reword comment.
+ Don't cast xrealloc return value to char*
+ Return NULL, not 0.
+
+2001-12-09 Jim Meyering <jim@meyering.net>
+
+ * modechange.c (mode_compile): Add cast to avoid pedantic warning about
+ `signed and unsigned type in conditional expression'.
+ * posixtm.c (posix_time_parse): Likewise.
+
+ * xreadlink.c (xreadlink): Add cast to avoid a pedantic warning.
+
+ * readtokens.c (readtoken): Declare an index to be of type unsigned
+ to avoid a pedantic warning.
+
+ * getstr.c: Don't include assert.h.
+ (getstr): Remove warning-evoking assertions.
+ Return -1 if offset parameter is out of bounds.
+ Change the type of a local from int to size_t.
+
+ * strftime.c (my_strftime_localtime_r): Include this function
+ definition in the `#if ! HAVE_TM_GMTOFF' block.
+
+ * xgethostname.c: Remove declarations of xmalloc and xrealloc.
+ Include xalloc.h instead.
+
+2001-12-02 Jim Meyering <jim@meyering.net>
+
+ * tempname.c: Don't declare getenv, thus reverting the change of
+ 2001-11-18. It's no longer necessary, now that stdlib.h is always
+ included.
+
+ * regex.c [!__BOUNDED_POINTERS__]: Define away __bounded,
+ __unbounded, and __ptrvalue. Reported by Uwe H. Steinfeld.
+
+2001-11-30 Akim Demaille <akim@epita.fr>
+
+ * xstrdup.c: Include xalloc.h, so that xstrdup is declared
+ before being defined.
+
+2001-11-27 Paul Eggert <eggert@twinsun.com>
+
+ * quotearg.h (quotearg_n, quotearg_n_style):
+ First arg is int, not unsigned.
+ * quotearg.c (quotearg_n, quotearg_n_style): Likewise.
+ (SIZE_MAX, UINT_MAX): New macros.
+ (quotearg_n_options): Abort if N is negative.
+ Avoid overflow check on hosts where size_t is 64 bits and int
+ is 32 bits, as overflow is impossible there.
+ Fix off-by-one typo that caused unnecessary reallocation.
+
+2001-11-27 Jim Meyering <jim@meyering.net>
+
+ * tempname.c: Merge with version from libc.
+ * regex.c: Likewise.
+
+ * tempname.c: Include stdlib.h unconditionally. On some old systems
+ for which STDC_HEADERS is 0, it was not included, resulting in a
+ warning about an integer-to-pointer conversion problem with getenv.
+ Reported by Volker Borchert.
+
+2001-11-26 Jim Meyering <jim@meyering.net>
+
+ * gtod.h: Remove file.
+ * Makefile.am (libfetish_a_SOURCES): Remove gtod.h.
+ * gettimeofday.c: Don't include gtod.h.
+ (GTOD_init): Remove function.
+ (rpl_gettimeofday): Do its job here instead, rather than aborting.
+ Suggestion from Volker Borchert.
+
+2001-11-23 Jim Meyering <jim@meyering.net>
+
+ * hash.h (struct hash_table): Don't define here. Merely declare it.
+ * hash.c (struct hash_table): Define it here instead.
+
+2001-11-22 Jim Meyering <jim@meyering.net>
+
+ * hash.h: Bracket contents of file with #ifndef HASH_H_ ... #endif.
+
+2001-11-18 Paul Eggert <eggert@twinsun.com>
+
+ * tempname.c (TMP_MAX): Remove; no longer needed.
+ (TEMPORARIES): New macro.
+ (__gen_tempname): Use TEMPORARIES rather than TMP_MAX. This
+ removes an artificial limitation (e.g. HP-UX 10.20, where
+ TMP_MAX is 17576).
+
+2001-11-18 Jim Meyering <jim@meyering.net>
+
+ * tempname.c [!HAVE_DECL_GETENV]: Declare getenv to avoid warning
+ on SunOS 4.
+
+ * Makefile.am (Makefile): Depend on $(BUILT_SOURCES), so those
+ files will be created before anything else.
+
+2001-11-17 Jim Meyering <jim@meyering.net>
+
+ * modechange.c (mode_adjust): Fix error introduced on 1999-04-26
+ that made e.g., `chmod a=,o=w,g=o F' cause F to be group readable
+ rather than group writable. Patch by Juan F. Codagnone.
+
+ * readtokens.c: Remove explicit declarations of xmalloc and xrealloc,
+ Instead, include "xalloc.h".
+
+ * mountlist.c: Include unlocked-io.h after all system headers.
+ Remove explicit declarations of xmalloc, xrealloc,
+ and xstrdup. Instead, include "xalloc.h".
+
+ * argmatch.c, closeout.c, error.c, exclude.c: Include unlocked-io.h.
+ * fatal.c, getdate.y, getpass.c, getstr.c, getusershell.c: Likewise.
+ * mountlist.c, posixtm.c, readtokens.c, readutmp.c: Likewise.
+
+ * regex.c, sha.c, version-etc.c, yesno.c: Likewise.
+ Reported by Padraig Brady.
+
+ * mkstemp.c: #undef mkstemp.
+ Include config.h.
+ (rpl_mkstemp): Rename from mkstemp.
+ Protoize.
+
+2001-11-16 Jim Meyering <jim@meyering.net>
+
+ * physmem.c [HAVE_SYS_PSTAT_H]: Include <sys/pstat.h>.
+ (physmem_total) [HAVE_PSTAT_GETSTATIC]: If sysconf couldn't be used to
+ determine the amount of total physical memory, use pstat_getstatic.
+ HPUX-11 doesn't define _SC_PHYS_PAGES.
+ (physmem_available) [HAVE_PSTAT_GETSTATIC && HAVE_PSTAT_GETDYNAMIC]:
+ If sysconf couldn't be used to determine the amount of available
+ physical memory, use both pstat_getstatic and pstat_getdynamic.
+ Based on a patch from Bob Proulx.
+
+2001-11-05 Jim Meyering <jim@meyering.net>
+
+ * xstat.in (slash_aware_lstat): Correct a misleading comment.
+
+2001-11-03 Jim Meyering <jim@meyering.net>
+
+ * argmatch.h (ARGMATCH_TO_ARGUMENT): Remove casts of first two args
+ in argmatch_to_argument call.
+
+ * dirfd.c (dirfd): Reflect the fact that DIR_TO_FD now takes an
+ argument.
+
+ * hash.c (hash_clear): Fix a bug that could lead to an infloop or
+ e.g., a fault due to an attempt to free a NULL pointer.
+
+2001-11-01 Jim Meyering <jim@meyering.net>
+
+ * dirfd.c, dirfd.h: New files.
+ * Makefile.am (libfetish_a_SOURCES): Add dirfd.h.
+
+ * hash.c (hash_print) [TESTING]: Clean up.
+
+2001-10-22 Paul Eggert <eggert@twinsun.com>
+
+ * hard-locale.c (alloca): Define to __builtin_alloca if __GNUC__,
+ to avoid a warning if -Wall.
+
+2001-10-21 Paul Eggert <eggert@twinsun.com>
+
+ * regex.c (uintptr_t): Remove macro and decl; it's config.h's job.
+
+2001-10-21 Jim Meyering <jim@meyering.net>
+
+ * obstack.c (_): Honor the setting of ENABLE_NLS. Otherwise,
+ this code would end up calling gettext even in packages built
+ with --disable-nls.
+ * getopt.c (_): Likewise.
+ * regex.c (_): Likewise.
+
+2001-10-20 Paul Eggert <eggert@twinsun.com>
+
+ * error.c (strerror_r): Do not declare unless !_LIBC.
+ Do not check for HAVE_DECL_STRERROR_R missing unless STRERROR_R_CHAR_P.
+ Use strerror_r that is only a macro, even if it is not a function.
+ (strerror): Check for HAVE_DECL_STRERROR before declaring.
+ (private_strerror): Use prototypes, not old-style function definition.
+ (print_errno_message): New function.
+ Support the POSIX 'int'-flavored strerror_r, as well as the traditional
+ char*-flavored one.
+ (error_tail, error, error_at_line): Use it.
+
+2001-10-11 Jim Meyering <jim@meyering.net>
+
+ * argmatch.c (argmatch_invalid): Use quotearg_n_style (0, ...
+ and quote_n (1, ... to avoid clobbering a buffer.
+
+2001-10-05 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am: (libfetish_a_SOURCES): Add hash-pjw.c and hash-pjw.h.
+ * hash-pjw.c: New file (factored out of fileutils' remove.c).
+ * hash-pjw.h: New file.
+
+2001-09-30 Jim Meyering <jim@meyering.net>
+
+ * mountlist.c [MOUNTED_GETFSSTAT]:
+ Include <sys/ucred.h>, for Apple Darwin.
+ Include sys/mount.h and sys/fs_types.h only if available.
+ (FS_TYPE): Define.
+ (read_filesystem_list): Use FS_TYPE.
+
+2001-09-29 Paul Eggert <eggert@twinsun.com>
+
+ * exclude.c (excluded_filename): 0 -> false, since it's
+ a boolean context.
+
+2001-09-28 Paul Eggert <eggert@twinsun.com>
+
+ Fix bug reported by Petter Reinholdtsen for HP-UX 10.20, which
+ #defines strtoimax. Also treat the other strto* functions
+ like strtoimax.
+
+ * xstrtol.c (strtol): Do not declare if HAVE_DECL_STRTOL.
+ (strtoul): Do not declare if HAVE_DECL_STRTOUL.
+ (strtoimax, strtoumax): Do not declare if already defined as a macro.
+
+2001-09-26 Jim Meyering <jim@meyering.net>
+
+ Most macros in unlocked-io.h had the wrong number of arguments.
+ * gen-uio: New script.
+ (USE_UNLOCKED_IO): Define to 1 if not already defined.
+ * unlocked-io.hin: Remove file.
+ * Makefile.am (unlocked-io.h): Rewrite to use a separate script,
+ rather than trying to embed it here.
+ (EXTRA_DIST): Add gen-uio. Remove unlocked-io.hin
+ Reported by Padraig Brady.
+
+2001-09-25 Volker Borchert <bt@teknon.de>
+
+ * gettimeofday.c (rpl_gettimeofday): Declare local variable `result'.
+
+2001-09-23 Jim Meyering <jim@meyering.net>
+
+ * mountlist.c: Remove useless parentheses in #if directives.
+ (MOUNTED) [!defined MOUNTED]: Define to _PATH_MOUNTED, for when
+ the deprecated MOUNTED symbol is no longer defined in mntent.h.
+
+2001-09-22 Jim Meyering <jim@meyering.net>
+
+ * localcharset.c: Update from latest gettext.
+ * config.charset: Likewise.
+
+2001-09-20 Jim Meyering <jim@meyering.net>
+
+ * xstrtol.c (strtoimax): Guard declaration with
+ `#if !HAVE_DECL_STRTOIMAX', rather than just `#ifndef strtoimax'.
+ The latter fails because some systems (at least rs6000-ibm-aix4.3.3.0)
+ have their own, conflicting declaration of strtoimax in sys/inttypes.h.
+ (strtoumax): Likewise, for completeness (it wasn't necessary).
+
+2001-09-06 Paul Eggert <eggert@twinsun.com>
+
+ * strtoimax.c (HAVE_LONG_LONG):
+ Redefine to HAVE_UNSIGNED_LONG_LONG if unsigned.
+ (strtoimax): Use sizeof (long), not sizeof strtol (ptr, endptr, base),
+ to work around bug in IBM C compiler.
+
+2001-09-16 Jim Meyering <jim@meyering.net>
+
+ * mkdir.c: New file.
+
+2001-09-04 Paul Eggert <eggert@twinsun.com>
+
+ * xgetcwd.c: Revert some of the previous change; intead,
+ fix the HAVE_GETCWD_NULL code to behave more like the
+ !HAVE_GETCWD_NULL code used to.
+
+ Include "xalloc.h".
+ (xgetcwd): Do not return NULL when memory is exhausted; instead,
+ invoke xalloc_die.
+
+2001-09-04 Paul Eggert <eggert@twinsun.com>
+
+ * xreadlink.c (xreadlink): Omit size_t* arg. All uses changed.
+ Use ssize_t, not int, to store result of readlink.
+ Check for ssize_t overflow as well as size_t overflow,
+ as POSIX says the result of readlink is implementation-defined
+ when ssize_t overflows.
+ Remove unnecessary cast to char*.
+ Use free+malloc instead of realloc, as the storage doesn't need
+ to be preserved and it's clearer and can be more efficient that way.
+ (SIZE_MAX, SSIZE_MAX): New macros, if <limits.h> doesn't declare.
+ * xreadlink.h (xreadlink): Update prototype.
+
+2001-09-03 Paul Eggert <eggert@twinsun.com>
+
+ * exclude.c (fnmatch_no_wildcards): Fix confusion between
+ usage of FNM_CASEFOLD and FNM_LEADING_DIR. The bug was
+ spotted by Jim Meyering.
+
+2001-09-03 Jim Meyering <jim@meyering.net>
+
+ * xreadlink.c (xreadlink): Preserve errno around `free' during failure.
+
+2001-09-03 Paul Eggert <eggert@twinsun.com>
+
+ * xgetcwd.c: Fix the !HAVE_GETCWD_NULL code to behave more
+ like the HAVE_GETCWD_NULL code.
+ Include pathmax.h if not HAVE_GETCWD.
+ Do not include xalloc.h.
+ (INITIAL_BUFFER_SIZE): New symbol.
+ Do not use xmalloc / xrealloc, since the caller is responsible for
+ handling errors. Preserve errno around `free' during failure.
+ Do not overrun buffer when using getwd.
+
+2001-09-03 Paul Eggert <eggert@twinsun.com>
+
+ * xgetcwd.c (xgetcwd): Use HAVE_GETCWD_NULL, not (defined
+ __GLIBC__ && __GLIBC__ >= 2), to decide whether to use getcwd (NULL, 0).
+
+2001-09-02 Jim Meyering <jim@meyering.net>
+
+ * error.c: Update from GNU libc.
+
+2001-09-01 Jim Meyering <jim@meyering.net>
+
+ * xreadlink.c: New file.
+ * xreadlink.h: New file.
+ * Makefile.am (libfetish_a_SOURCES): Add xreadlink.c and xreadlink.h.
+
+ * regex.c (uintptr_t) [!_LIBC]: Define to private_uintptr_t, so it
+ doesn't conflict with sparc Solaris 7's definition in
+ /usr/include/sys/int_types.h.
+
+ * exclude.c: Use `""', not `<>' to #include non-system header files.
+ (fnmatch_no_wildcards): Rewrite not to use function names, strcasecmp
+ and strncasecmp as r-values. Unixware didn't have declarations.
+
+2001-08-31 Jim Meyering <jim@meyering.net>
+
+ * xgetcwd.c (xgetcwd): Reorganize to avoid some duplication.
+ Use an initial, malloc'd, buffer of length 128 rather than
+ a statically allocated one of length 1024.
+
+2001-08-30 Paul Eggert <eggert@twinsun.com>
+
+ * xgetcwd.c: Don't include pathmax.h.
+ Include stdlib.h and unistd.h if available.
+ Include xalloc.h.
+ (xmalloc, xstrdup, free): Remove decls.
+ (xgetcwd): Don't assume sizes fit in unsigned.
+ Check for overflow when computing sizes.
+ Simplify reallocation code.
+
+2001-08-28 Paul Eggert <eggert@twinsun.com>
+
+ * Makefile.am (libfetish_a_SOURCES): Remove strtoxmax.c.
+
+ * strtoimax.c: Renamed from strtoxmax.c, removing the
+ old strtoimax.c.
+
+ Also, make the following further changes to make this file's
+ configuration more similar to that of strtol.c:
+ (UNSIGNED): Renamed from STRTOUXMAX_UNSIGNED. All uses changed.
+ (strtoumax, uintmax_t, strtoull, strtol): Remove.
+ (intmax_t, strtoimax, strtol, strtoll): New macros, if UNSIGNED.
+ (strtoimax): Renamed from strtoumax. All uses of unsigned values
+ changed to signed values.
+
+ And make the following changes as well:
+ Fix copyright notice, as 1999 was missing.
+ (verify): New macro.
+ (strtoimax): Check sizes at compile-time, not run-time.
+ Prefer strtol to strtoll if both work.
+ (main): Remove; it was not that useful and was a pain to maintain.
+
+ * strtoumax.c: Include strtoimax.c, not strtouxmax.c.
+
+2001-08-30 Paul Eggert <eggert@twinsun.com>
+
+ * savedir.c (savedir): Remove size parameter, as POSIX says that
+ a directory's st_size can have an arbitrary value, so the old
+ usage could waste an arbitrary amount of memory. All uses
+ changed.
+ * savedir.h: Update prototype.
+
+2001-08-30 Paul Eggert <eggert@twinsun.com>
+
+ * xstrtol.c (strtoimax): New decl.
+
+2001-08-28 Paul Eggert <eggert@twinsun.com>
+
+ * xstrtol.h: Add copyright notice.
+ (_DECLARE_XSTRTOL): Improve quality of diagnostic for
+ LONGINT_INVALID_SUFFIX_CHAR.
+
+2001-08-30 Paul Eggert <eggert@twinsun.com>
+
+ * quotearg.c: BSD/OS 4.1 wchar.h requires FILE and struct
+ tm to be declared.
+
+2001-08-30 Paul Eggert <eggert@twinsun.com>
+
+ * hash.c: Remove '2001' from copyright notice.
+
+2001-08-30 Paul Eggert <eggert@twinsun.com>
+
+ * full-write.h: New file.
+ * Makefile.am (libfetish_a_SOURCES): Add full-write.h.
+ * full-write.c: Correct credits, as cccp.c no longer
+ exists and anyway it was so heavily changed from the old cccp
+ code as to be unrecognizable. Include full-write.h.
+ (full_write) Return size_t, with short writes meaning failure.
+ All callers changed. This fixes a bug with large buffers
+ on 64-bit hosts.
+ * utime.c: Include full-write.h.
+
+2001-08-30 Paul Eggert <eggert@twinsun.com>
+
+ Merge 'exclude' changes from tar 1.13.22.
+ This fixes one or two unlikely storage allocation overflow bugs,
+ but doesn't change user-visible behavior otherwise.
+
+2001-08-30 Paul Eggert <eggert@twinsun.com>
+
+ * exclude.c (bool): Declare, perhaps by including stdbool.h.
+ (<sys/types.h>): Include only if HAVE_SYS_TYPES_H.
+ (<stdlib.h>, <string.h>, <strings.h>, <inttypes.h>, <stdint.h>):
+ Include if available.
+ (<xalloc.h>): Include
+ (SIZE_MAX): Define if <stdint.h> or <inttypes.h> doesn't.
+ (verify): New macro. Use it to verify that EXCLUDE macros do not
+ collide with FNM macros.
+ (struct patopts): New struct.
+ (struct exclude): Use it, as exclude patterns now come with options.
+ (new_exclude): Support above changes.
+ (new_exclude, add_exclude_file):
+ Initial size must now be a power of two to simplify overflow checking.
+ (free_exclude, fnmatch_no_wildcards): New function.
+ (excluded_filename): No longer requires options arg, as the options
+ are determined by add_exclude. Now returns bool, not int.
+ (excluded_filename, add_exclude):
+ Add support for the fancy new exclusion options.
+ (add_exclude, add_exclude_file): Now takes int options arg.
+ Check for arithmetic overflow when computing sizes.
+ (add_exclude_file): xrealloc might modify errno, so don't
+ realloc until after errno might be used.
+
+ * exclude.h (EXCLUDE_ANCHORED, EXCLUDE_INCLUDE,EXCLUDE_WILDCARDS):
+ New macros.
+ (free_exclude): New decl.
+ (add_exclude, add_exclude_file): Now takes int options arg.
+ (excluded_filename): No longer requires options arg, as the options
+ are determined by add_exclude. Now returns bool, not int.
+
+2001-08-30 Paul Eggert <eggert@twinsun.com>
+
+ * alloca.c (alloca): Arg is of type size_t, not unsigned.
+
+2001-08-27 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libfetish_a_SOURCES): Add strtoxmax.c
+
+ * version-etc.c (N_): Remove definition.
+ Revert most of last change.
+ Instead, simply don't mark the `Copyright...' string for translation.
+ Based on advice from Paul Eggert.
+
+ * strtoxmax.c: Tweak comment.
+
+2001-08-26 Jim Meyering <jim@meyering.net>
+
+ * version-etc.c (version_etc_copyright_fmt): Replace literal year
+ of copyright with `%s' so translators don't get an untranslated
+ message in 2002.
+ (COPYRIGHT_YEAR): Define.
+ (version_etc): Use fprintf rather than fputs.
+ Suggestion from Ulrich Drepper.
+
+ * Makefile.am (libfetish_a_SOURCES): Add xstrtoimax.c.
+
+ * strtoll.c: New file, from GNU libc.
+ * xstrtoimax.c: New file.
+
+ * xstrtol.h: Add xstrtoimax.
+ * strtoumax.c: New file. Simply include "strtoumax.c".
+ * strtoimax.c: New file. Likewise, but first define STRTOUXMAX_SIGNED.
+
+ * strtoumax.c: Factor to work both for unsigned and signed types, ...
+ * strtoxmax.c: ... then renamed to this.
+
+2001-08-13 Paul Eggert <eggert@twinsun.com>
+
+ * Makefile.am (unlocked-io.h): Do not append "_unlocked" twice.
+ Port to Solaris 8, where 'sed' requires a space after the 'r'
+ command, and where sh dislikes "$/". Clean up the spacing a bit.
+ Redirect output to $tmp just once.
+
+2001-08-12 Paul Eggert <eggert@sic.twinsun.com>
+
+ * addext.c (<errno.h>): Include.
+ (errno): Declare if not defined.
+ (addext): Work correctly when pathconf returns -1 and leaves
+ errno alone because there is no limit. Also, work even if
+ pathconf returns a value greater than SIZE_MAX.
+
+2001-08-12 Jim Meyering <jim@meyering.net>
+
+ * xgetcwd.c (xgetcwd) [defined __GLIBC__ && __GLIBC__ >= 2]:
+ Simply `return getcwd (NULL, 0);'.
+ [! (defined __GLIBC__ && __GLIBC__ >= 2)]:
+ Use 1300 as initial value for length, not PATH_MAX.
+
+ * pathmax.h: Clean up cpp syntax.
+
+2001-08-12 Jim Meyering <jim@meyering.net>
+
+ * gettimeofday.c: New file.
+ * gtod.h: New file.
+ * Makefile.am (libfetish_a_SOURCES): Add gtod.h.
+
+2001-08-04 Jim Meyering <jim@meyering.net>
+
+ * error.h (__attribute__): Remove `|| __STRICT_ANSI__' from #if stmt,
+ to get in sync with glibc.
+
+2001-08-03 Paul Eggert <eggert@twinsun.com>
+
+ The following changes are from gettext 0.10.39 as maintained by
+ Bruno Haible.
+
+ * mbswidth.h (MBSW_REJECT_UNPRINTABLE, MBSW_REJECT_INVALID):
+ Renamed from MBSW_ACCEPT_UNPRINTABLE and MBSW_ACCEPT_INVALID
+ with inverted sense. All uses changed.
+
+ * mbswidth.c: Don't include <limits.h>.
+ Include <stdlib.h> and <string.h> unconditionally.
+ (iswcntrl, mbsinit, ISCNTRL): New macros.
+ (mbsnwidth): Use K&R style function declarations.
+ Don't bother checking for MB_LEN_MAX == 1, since the compiler
+ can optimize it when MB_CUR_MAX == 1.
+ The width of control characters is zero, not 1.
+
+2001-07-15 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (EXTRA_DIST): Add unlocked-io.hin.
+ (BUILT_SOURCES): Add unlocked-io.h.
+ (io_functions): Define.
+ (unlocked-io.h): New rule.
+ (DISTCLEANFILES): Add unlocked-io.h.
+ (all-local): Depend on unlocked-io.h, to ensure it is created.
+
+ * unlocked-io.hin: New file
+
+ * regex.c: Update from glibc.
+
+2001-07-05 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (noinst_HEADERS): Remove definition, per new automake
+ recommendation.
+ (libfetish_a_SOURCES): Put all .h files here instead.
+ Remove a thus-exposed (better checks in automake) duplicate and
+ two unnecessary .h files.
+
+2001-06-11 Jim Meyering <jim@meyering.net>
+
+ * regex.c: Update from GNU libc.
+
+2001-05-27 Jim Meyering <jim@meyering.net>
+
+ * readutmp.h (UT_TYPE): Define.
+
+2001-05-24 Jim Meyering <jim@meyering.net>
+
+ * argmatch.c: Include "quote.h".
+ (argmatch_invalid): Remove explicit `' quotes. Instead, use the
+ quote function. Reported by Göran Uddeborg.
+
+2001-05-20 Alexandre Duret-Lutz <duret_g@epita.fr>
+
+ * dirname.c (dir_name): Compute append_dot using path, not newpath
+ which is not yet declared.
+
+2001-05-11 Paul Eggert <eggert@twinsun.com>
+
+ * Makefile.am (libfetish_a_SOURCES):
+ Add strftime.c, since we now compile it on all hosts.
+
+ * strftime.c (my_strftime):
+ Define to nstrftime if emacs, but only if my_strftime is not defined.
+ (extra_args, extra_args_spec, extra_args_spec_iso): Rename from
+ ut_argument, ut_argument_spec, ut_argument_spec_iso, respectively.
+ Add one more extra argument: a nanoseconds value.
+ All uses changed.
+ (ns): New macro.
+ (my_strftime function): Add %N format.
+ (emacs_strftimeu): Renamed from emacs_strftime,
+ with extra ut argument.
+
+2001-05-11 Paul Eggert <eggert@twinsun.com>
+
+ dirname code cleanup. base_name now behaves more compatibly
+ with POSIX basename when given file names that have trailing
+ slashes, and similarly for dir_name. Add new primitives
+ base_len and dir_len. Put the directory-name-related decls
+ into dirname.h.
+
+ * addext.c (ISSLASH, base_name): Remove; now in dirname.h.
+ * backupfile.c (base_name): Likewise.
+ * basename.c (FILESYSTEM_PREFIX_LEN, PARAMS, ISSLASH): Likewise.
+ * dirname.c (FILESYSTEM_PREFIX_LEN, ISSLASH): Likewise.
+ * makepath.c (strip_trailing_slashes): Likewise.
+ * path-concat.c (DIRECTORY_SEPARATOR, FILESYSTEM_PREFIX_LEN, ISSLASH):
+ Likewise.
+ * rename.c (strip_trailing_slashes): Likewise.
+ * same.c (base_name): Likewise.
+ * stripslash.c (ISSLASH): Likewise.
+
+ * addext.c: Include <dirname.h> after size_t is defined.
+ * backupfile.c: Likewise.
+
+ * addext.c (addext): Use base_len to trim redundant
+ trailing slashes instead of doing it ourselves.
+ But do not trim the last slash if it is not redundant.
+
+ * backupfile.c (find_backup_file_name,
+ max_backup_version): Use base_len instead of rolling it ourselves.
+ Handle the case of "" and (on DOS) "C:" correctly.
+
+ * basename.c: Do not include <stdio.h>, <assert.h>; no longer needed.
+ Include <string.h>, <dirname.h>.
+ (base_name): Allow file names ending in slashes, other than names
+ that are all slashes. In this case, return the basename followed
+ by the slashes. This is more general, and can be used in places
+ where the original base_name purposely had an assertion failure.
+ (base_len): New function.
+
+ * dirname.c: Include <string.h> instead of <stdlib.h>.
+ Do not include <assert.h>; no longer needed.
+ Include xalloc.h.
+ (memrchr): Remove decl.
+ (dir_name_r): Remove.
+ (dir_len): Renamed from dirlen. All callers changed.
+ Rewrite in terms of base_name, for simplicity and consistency.
+ (dir_name): Never return NULL. All callers changed.
+ Do not include <stdlib.h> in test program; no longer needed.
+ return 0; is fine for test program.
+
+ * dirname.h (DIRECTORY_SEPARATOR, ISSLASH, FILESYSTEM_PREFIX_LEN):
+ New macros.
+ (base_name, base_len, dir_len, strip_trailing_slashes): New decls.
+
+ * path-concat.c (path_concat): Use base_len to compute
+ base length, not strlen; this means we cannot rely on memcpy
+ to null-terminate.
+
+ * same.c (STREQ): Remove.
+ (same_name): Handle the case where the basename ends in trailing '/'.
+
+ * stripslash.c (strip_trailing_slashes): Return nonzero if
+ a slash was stripped. Do not strip the last slash after a
+ file system prefix.
+
+2001-04-08 Jim Meyering <jim@meyering.net>
+
+ * getdate.y (get_date): Set tm_isdst to -1 to ensure that it is
+ recomputed; that's necessary when the offset spans a DST transition.
+ Patch by David J. MacKenzie. Reported by Hon-Yin Kok.
+
+2001-04-02 Jim Meyering <jim@meyering.net>
+
+ * regex.h, regex.c: Update from GNU libc.
+
+2001-03-19 Paul Eggert <eggert@twinsun.com>
+
+ * version-etc.c (version_etc_copyright): Update to 2001.
+
+2001-03-16 Paul Eggert <eggert@twinsun.com>
+
+ * tempname.c (uint64_t): Define to uintmax_t if
+ not defined, and if UINT64_MAX is not defined.
+ Required at least for Vax Ultrix4.3, which doesn't define uint64_t.
+ Reported by John David Anglin.
+
+2001-03-10 Bruno Haible <haible@clisp.cons.org>
+
+ * localcharset.c (locale_charset): Allow wildcard syntax. Also resolve
+ alias if codeset is empty.
+ * config.charset (BeOS): Use wildcard syntax.
+
+2001-03-13 Jim Meyering <jim@meyering.net>
+
+ * path-concat.c (path_concat) [FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX]:
+ Don't insert a backslash when concatenating e.g., `C:' and `foo'.
+ From Bruno Haible.
+
+2001-03-06 Bruno Haible <haible@clisp.cons.org>
+
+ * localcharset.c (locale_charset): Don't use setlocale(LC_CTYPE,NULL).
+ Don't return NULL.
+ * unicodeio.c (print_unicode_char): Simplify accordingly.
+
+2001-03-06 Bruno Haible <haible@clisp.cons.org>
+
+ * config.charset: Update for FreeBSD 4.2 and OSF/1 5.1. Add
+ support for DOS/DJGPP.
+
+2001-02-28 Paul Eggert <eggert@twinsun.com>
+
+ * Makefile.am (libfetish_a_SOURCES):
+ Add dup-safer.c, fopen-safer.c.
+ (noinst_HEADERS): Add stdio-safer.h, unistd-safer.h.
+
+ * dup-safer.c, fopen-safer.c, stdio-safer.h, unistd-safer.h: New files.
+
+2001-02-25 Paul Eggert <eggert@twinsun.com>
+
+ The mkstemp replacement is taken from glibc 2.2.2, with some
+ portability fixes for use outside glibc, as follows:
+
+ * tempname.c (struct_stat64): New macro.
+ (direxists, __gen_tempname): Use it.
+ This avoids a portability problem with Solaris 8.
+
+ * tempname.c (<config.h>): Include if HAVE_CONFIG_H.
+ (<stddef.h>, <stdint.h>, <string.h>):
+ Include only if STDC_HEADERS || _LIBC.
+ (<fcntl.h>): Include only if HAVE_FCNTL_H || _LIBC.
+ (<unistd.h>): Include only if HAVE_UNISTD_H || _LIBC.
+ (<sys/time.h>): Include only if HAVE_SYS_TIME_H || _LIBC.
+ (__set_errno): Define this macro if <errno.h> doesn't.
+ (P_tmpdir, TMP_MAX, __GT_FILE, __GT_BIGFILE, __GT_DIR, __GT_NOCREATE):
+ Define these macros if <stdio.h> doesn't.
+ (S_ISDIR, S_IRUSR, S_IWUSR, S_IXUSR):
+ Define these macros if <sys/stat.h>
+ doesn't. Ignore <sys/stat.h> S_ISDIR if STAT_MACROS_BROKEN.
+ (stat64, __getpid, __gettimeofday, __mkdir, __open, __open64, lxstat64,
+ __xstat64): Define if not _LIBC.
+ (__secure_getenv): Define if ! (HAVE___SECURE_GETENV || _LIBC).
+ (__gen_tempname): Invoke gettimeofday only if
+ HAVE_GETTIMEOFDAY || _LIBC;
+ otherwise, fall back on plain "time".
+ Use macros like S_IRUSR | S_IWUSR rather than octal values like 0600.
+
+ * mkstemp.c (__GT_FILE): Define to zero if not defined.
+
+ * mkstemp.c, tempname.c: New files, taken from glibc 2.2.2.
+
+2001-02-17 Jim Meyering <jim@meyering.net>
+
+ * strtoul.c: Sync from GNU libc. Use double quotes, not <...>
+ around included file name.
+
+ * strnlen.c (__strnlen): Merge in a change from GNU libc.
+
+ * strftime.c: Update from GNU libc (the only changes were to comments).
+
+2001-02-13 Bruno Haible <haible@clisp.cons.org>
+
+ * mbswidth.h (mbswidth): Also define as macro, to avoid prototype clash.
+
+2001-02-17 Paul Eggert <eggert@twinsun.com>
+
+ * mbswidth.c, quotearg.c (mbrtowc, mbsinit):
+ Remove workaround macros for hosts that have mbrtowc but not
+ mbstate_t, as we now insist on proper declarations for both
+ before using mbrtowc.
+
+2001-02-17 Jim Meyering <jim@meyering.net>
+
+ * regex.c: Update from libc.
+
+2001-02-16 Paul Eggert <eggert@twinsun.com>
+
+ * alloca.c (malloc): Undef before defining, since stdlib.h
+ may have defined it. Needed for Encore Umax-3.0.9.16b systems.
+ Reported by Mark Hounschell via Paul Eggert.
+
+2001-01-30 Bruno Haible <haible@clisp.cons.org>
+
+ * config.charset: Update for FreeBSD 4.2.
+
+2001-01-26 Jim Meyering <jim@meyering.net>
+
+ * quotearg.c: Include stddef.h.
+ * quote.c: Include stddef.h.
+ Reported by Axel Kittenberger.
+
+ * xmalloc.c [HAVE_DONE_WORKING_MALLOC_CHECK]: Enclose error-evoking
+ line in double quotes so that it evokes a better diagnostic.
+ [HAVE_DONE_WORKING_REALLOC_CHECK]: Likewise.
+ Reported by Axel Kittenberger.
+
+2001-01-15 Bruno Haible <haible@clisp.cons.org>
+
+ * unicodeio.c (print_unicode_char): Cast the second iconv() arg,
+ to avoid a warning. Add back 'const' to inptr.
+
+2001-01-16 Jim Meyering <jim@meyering.net>
+
+ * basename.c: Include <stdio.h>, needed by assert on SunOS 4.
+ From Bruno Haible.
+
+2001-01-14 Jim Meyering <jim@meyering.net>
+
+ * rename.c: New file. From Volker Borchert.
+ Include stdlib.h, string.h or strings.h, and xalloc.h.
+ Use strip_trailing_slashes rather than open-coding it.
+
+2001-01-03 Paul Eggert <eggert@twinsun.com>
+
+ * strftime.c: Sync with glibc time/strftime.c 1.81.
+
+2001-01-03 Jim Meyering <jim@meyering.net>
+
+ * unicodeio.c (print_unicode_char): Remove `const' from declaration of
+ local `inptr' to avoid warning with some system declarations of iconv.
+
+2000-12-29 Paul Eggert <eggert@twinsun.com>
+
+ * modechange.c: Do not assume that mode_t uses the
+ traditional octal encoding. E.g. "chmod 1 FOO" should set
+ the other-execute bit of FOO even if S_IXOTH != 1.
+
+ (SUID, SGID, SVTX, RUSR, WUSR, XUSR, RGRP, WGRP, XGRP, ROTH,
+ WOTH, XOTH, ALLM): New macros.
+ (S_ISUID, S_ISGID, S_ISVTX, S_IRUSR, S_IWUSR, S_IXUSR,
+ S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH, S_IXOTH):
+ Use them.
+ (S_ISGID): Fix typo; it was defaulting to the same value as S_ISUID.
+ (S_IRWXU, S_IRWXG, S_IRWXO): Specify defaults in terms of the above.
+ (mode_compile):
+ No need to use uintmax_t; unsigned long is long enough.
+ Don't bother to get suffix since we don't use it.
+
+2000-12-24 Jim Meyering <jim@meyering.net>
+
+ * hash.c (is_prime): Return explicit boolean values.
+ (hash_get_first): Return NULL to appease Irix5.6's 89.
+ Reported by Nelson Beebe.
+
+2000-10-31 Bruno Haible <haible@clisp.cons.org>
+
+ * localcharset.c (locale_charset): Add support for Win32.
+
+2000-12-18 Paul Eggert <eggert@twinsun.com>
+
+ * physmem.h, physmem.c: New files.
+
+ * Makefile.am (libfetish_a_SOURCES): Add physmem.c.
+ (noinst_HEADERS): Add physmem.h.
+
+ * xstrtol.c (__xstrtol): Add undocumented suffixes 'g' and
+ 't' for compatibility with Solaris 8 sort.
+
+2000-12-18 Bruno Haible <haible@clisp.cons.org>
+
+ * config.charset: Add support for BeOS.
+
+2000-12-16 Jim Meyering <jim@meyering.net>
+
+ * getusershell.c [!SHELLS_FILE && __DJGPP__]: Define
+ SHELLS_FILE to a file name that's useful on djgpp systems.
+ Include stdlib.h.
+ (ADDITIONAL_DEFAULT_SHELLS): Define.
+ (default_shells): Prepend ADDITIONAL_DEFAULT_SHELLS.
+ Based mostly on a patch from Prashant TR.
+
+2000-12-16 Jim Meyering <jim@meyering.net>
+
+ This bug had a serious impact on chown: `chown N:M FILE' (for integer
+ N and M) would have treated it like `chown N:N FILE'.
+
+ * userspec.c (parse_user_spec): Fix typo: s/u/g/.
+
+2000-10-31 Bruno Haible <haible@clisp.cons.org>
+
+ * config.charset: Add ISO-8859-3, BIG5HKSCS, GB18030, JOHAB, VISCII,
+ CP874, CP949, CP950, CP1250, CP1253, CP1254, CP1255, CP1256, CP1257
+ to the list of canonical encodings. Rename EUC-CN to GB2312.
+
+2000-12-08 Andreas Schwab <schwab@suse.de>
+
+ * mbswidth.c (mbsnwidth): Don't loop endlessly when called with an
+ invalid mulitbyte sequence and with the MBSW_ACCEPT_INVALID flag set.
+
+2000-12-07 Jim Meyering <jim@meyering.net>
+
+ * stripslash.c (ISSLASH): Define.
+ (strip_trailing_slashes): Use ISSLASH rather than comparing against `/'.
+ From Prashant TR.
+
+ * dirname.c (FILESYSTEM_PREFIX_LEN): Define.
+ (dir_name_r): Declare this function as static.
+ [BACKSLASH_IS_PATH_SEPARATOR]: Fix a bug that'd
+ manifest itself on a name containing a mix of slashes and
+ backslashes.
+ Make this function work with names starting with a DOS-style
+ drive letter and colon prefix.
+ (dir_name): Append `.' if necessary.
+ Based mostly on patches from Prashant TR and Eli Zaretskii.
+
+ * dirname.h (dir_name_r): Remove prototype.
+
+2000-12-05 Jim Meyering <jim@meyering.net>
+
+ * dirname.c (dir_name_r): Add `const' in a few local declarations.
+
+2000-12-04 Jim Meyering <jim@meyering.net>
+
+ * path-concat.c: [!HAVE_DECL_MALLOC]: Declare malloc.
+ Also include memory.h, stdlib.h, unistd.h if appropriate.
+ Reported by Andreas Jaeger (conflicting declaration of malloc).
+
+2000-12-02 Jim Meyering <jim@meyering.net>
+
+ * closeout.h: Make idempotent, to avoid some obscure warnings.
+
+2000-12-01 Paul Eggert <eggert@twinsun.com>
+
+ * memrchr.c: Include <config.h> before any system include file.
+
+2000-11-29 Paul Eggert <eggert@twinsun.com>
+
+ * dirname.c (dir_name_r): Fix typo: int -> size_t.
+
+2000-11-26 Jim Meyering <jim@meyering.net>
+
+ * memcoll.c: Include sys/types.h. From Werner Almesberger.
+
+2000-11-22 Paul Eggert <eggert@twinsun.com>
+
+ * strftime.c (my_strftime): Do not invoke mbrlen with a
+ size of (size_t) -1; it's not portable.
+
+2000-11-17 Akim Demaille <akim@epita.fr>
+
+ * obstack.h: Formatting changes.
+ (obstack_grow, obstack_grow0): Don't cast WHERE at all: that would
+ prevent type checking.
+ (obstack_ptr_grow, obstack_ptr_grow_fast): When assigning, don't
+ cast the value to (void *): assigning a `foo *' to a `void *'
+ variable is valid.
+ (obstack_int_grow, obstack_int_grow_fast): Don't cast AINT to int.
+
+2000-11-17 Jim Meyering <jim@meyering.net>
+
+ * strstr.c: Update from GNU libc.
+
+2000-11-16 Jim Meyering <jim@meyering.net>
+
+ * strverscmp.c: Incorporate weak-alias-related changes from glibc.
+
+2000-11-11 Jim Meyering <jim@meyering.net>
+
+ * error.c: Add a couple #includes, merging from GNU libc version.
+
+2000-11-10 Jim Meyering <jim@meyering.net>
+
+ * obstack.h: Update from GNU libc.
+ * obstack.c: Likewise.
+
+2000-11-06 Paul Eggert <eggert@twinsun.com>
+
+ * getusershell.c (setusershell): Use rewind rather than
+ fseek/fseeko, to avoid configuration hassles with fseeko.
+ Don't bother opening SHELLS_FILE if shellstream is NULL;
+ it's not necessary.
+
+2000-11-05 Jim Meyering <jim@meyering.net>
+
+ * makepath.h (make_dir): Declare.
+ * makepath.c (make_dir): Remove `static' attribute.
+ Tweak a comment.
+
+2000-11-04 Alexandre Duret-Lutz <duret_g@epita.fr>
+
+ * hash.c (hash_get_next): Fix a thinko: when ENTRY is the
+ last one in a bucket, advance to the next bucket.
+
+2000-11-02 Vesselin Atanasov <vesselin@bgnet.bg>
+
+ * fnmatch.c: Do not comment out all the code if we are using
+ the GNU C library, because in some cases we are replacing buggy
+ code in the GNU C library itself.
+
+2000-10-30 Paul Eggert <eggert@twinsun.com>
+
+ * error.h, getline.h, modechange.h:
+ Remove "2000" from Copyright line, as the file hasn't been
+ changed this year other than in the copyright notice.
+
+ * xalloc.h: Add "2000" to Copyright line, as this file
+ was changed this year.
+
+2000-10-30 Paul Eggert <eggert@twinsun.com>
+
+ * fnmatch.c (FOLD): Do not assume that characters are unsigned.
+ (fnmatch): Fix some FNM_FILE_NAME and FNM_LEADING_DIR bugs,
+ e.g. fnmatch("d*/*1", "d/s/1", FNM_FILE_NAME) incorrectly yielded zero.
+
+2000-10-29 Greg Louis <glouis@dynamicro.on.ca>
+
+ * regex.h (__restrict_arr): Move definition out of #ifndef block.
+ Required because egcs-2.91.66 (aka 1.1.2) defines __restrict, but
+ doesn't define __restrict_arr.
+
+2000-10-29 Jim Meyering <jim@meyering.net>
+
+ * xstat.in: Fix grammar in comment.
+
+2000-10-28 Jim Meyering <jim@meyering.net>
+
+ * memchr.c: Update from libc.
+ Adjust for portability:
+ [HAVE_STDLIB_H]: Include stdlib.h.
+ [HAVE_BP_SYM_H || _LIBC]: Guard inclusion of bp-sym.h.
+ Undef __memchr, too.
+ [!weak_alias]: Define __memchr to memchr.
+
+ * regex.c: Update from libc.
+ * regex.h: Likewise.
+ * getopt1.c: Likewise.
+ * memcmp.c: Likewise.
+
+ * getusershell.c (setusershell) [HAVE_FSEEKO]: Use fseeko.
+ Avoid using fseek, when possible -- it's broken by design.
+ Patch by Ulrich Drepper.
+
+2000-10-26 Jim Meyering <jim@meyering.net>
+
+ * strftime.c: Update from libc.
+
+2000-10-25 Jim Meyering <jim@meyering.net>
+
+ * obstack.c: Update from libc.
+
+2000-10-23 Jim Meyering <jim@meyering.net>
+
+ * hard-locale.c (hard_locale): Revert last change -- it was simply
+ wrong. That set_locale call must not have any side effects.
+ From Paul Eggert.
+
+2000-10-22 Jim Meyering <jim@meyering.net>
+
+ * md5.c (md5_process_block) [OP]: Use `rol', not CYCLIC.
+ [CYCLIC]: Remove now-unused definition.
+
+ * save-cwd.c (O_DIRECTORY): Define, if needed.
+ (save_cwd) [HAVE_FCHDIR]: Use O_DIRECTORY when opening ".".
+ Suggestion from Ulrich Drepper.
+
+2000-10-21 Jim Meyering <jim@meyering.net>
+
+ * dirname.c (dir_name_r): New function, factored out of dir_name.
+ (dir_name): Use dir_name_r.
+ * dirname.h (dir_name_r): Declare it.
+
+2000-10-21 Jim Meyering <jim@meyering.net>
+
+ * dirname.c (memrchr): Declare if necessary.
+ (dir_name): Remove the restriction that there be no
+ trailing slashes. Now, this code skips past them, effectively
+ ignoring them.
+ [TEST_DIRNAME] (main): New unit tests.
+
+ * memrchr.c: New file from GNU libc.
+ Undef __memrchr, too.
+ [!weak_alias]: Define __memrchr to memrchr.
+ Guard weak_alias use with `#ifdef weak_alias'.
+
+2000-10-17 Jim Meyering <jim@meyering.net>
+
+ * quote.h (PARAMS): Define and use.
+ Reported by Akim Demaille.
+
+ * getopt.c: Update from libc.
+
+2000-10-16 Jim Meyering <jim@meyering.net>
+
+ * hard-locale.c (hard_locale): Use "", not 0 as 2nd arg to setlocale.
+ From Jan Fedak.
+
+2000-09-25 Jim Meyering <jim@meyering.net>
+
+ * md5.h (rol): Define (from GnuPG).
+
+ * sha.c: Give credit (GnuPG) where due.
+ (M): Use rol rather than open-coding it.
+ Add a FIXME comment.
+
+2000-09-21 Jim Meyering <jim@meyering.net>
+
+ * userspec.c (parse_user_spec): Remove debugging printf I'd added.
+ Reported by Michael Stone.
+
+2000-09-20 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libfetish_a_SOURCES): Add sha.c.
+ (noinst_HEADERS): Add sha.h.
+ Based on code from Scott G. Miller and from GnuPG.
+
+2000-09-15 Jim Meyering <jim@meyering.net>
+
+ * regex.c: Update from libc.
+
+2000-09-10 Jim Meyering <jim@meyering.net>
+
+ * getopt.c (_getopt_internal): Update from glibc.
+
+2000-09-09 Jim Meyering <jim@meyering.net>
+
+ * quotearg.c: Rename ISASCII to IN_CTYPE_DOMAIN, so people don't
+ think it should be used as a general replacement for isascii.
+ * fnmatch.c: Likewise.
+ * mbswidth.c: Likewise
+ * regex.c: Likewise.
+
+ Don't use atoi.
+ * userspec.c: Include sys/param.h and limits.h.
+ Include xstrtol.h.
+ (CHAR_BIT, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM): Define.
+ (UID_T_MAX, GID_T_MAX, MAXUID, MAXGID): Define.
+ (parse_user_spec): Use xstrtoul, not atoi when converting numeric
+ UID, GID. Check range.
+
+2000-09-06 Jim Meyering <jim@meyering.net>
+
+ * getopt.c (_getopt_internal): Update from glibc.
+
+2000-08-30 Jim Meyering <jim@meyering.net>
+
+ * strftime.c: Merge in changes from GNU libc.
+
+2000-08-26 Jim Meyering <jim@meyering.net>
+
+ * closeout.c: Include "__fpending.h".
+ (close_stdout_status): Return right away if there's nothing to flush.
+
+ * Makefile.am (noinst_HEADERS): Add __fpending.h.
+ * __fpending.c: New file.
+ * __fpending.h: New file.
+
+2000-08-07 Paul Eggert <eggert@twinsun.com>
+
+ Standardize on "memory exhausted" instead of "Memory exhausted"
+ or "virtual memory exhausted".
+ * obstack.c (print_and_abort): Use "memory exhausted", not
+ "virtual memory exhausted".
+ * same.c (same_name): Invoke xalloc_die instead of printing
+ our own message.
+ * userspec.c (parse_user_spec): Likewise.
+ * bumpalloc.h: comment fix
+ * same.c, userspec.c: Include xalloc.h.
+
+ * xalloc.h (xalloc_msg_memory_exhausted): Now char const[],
+ not char *const and pointing to a constant array.
+ * xmalloc.c (xalloc_msg_memory_exhausted): Likewise.
+ (xrealloc): Comment fix.
+
+ * userspec.c (parse_user_spec):
+ Don't translate a message until just before returning,
+ to avoid unnecessary translation.
+
+2000-08-07 Jim Meyering <jim@meyering.net>
+
+ * addext.c, argmatch.c, argmatch.h, backupfile.h, bumpalloc.h,
+ chown.c, diacrit.h, dirname.h, dup2.c, exclude.h, fileblocks.c,
+ fnmatch.c, fnmatch.h, fsusage.c, fsusage.h, getdate.h,
+ getgroups.c, gethostname.c, getopt.h, group-member.c,
+ hard-locale.c, hash.h, isdir.c, lchown.c, linebuffer.c,
+ linebuffer.h, long-options.h, malloc.c, md5.c, md5.h, memchr.c,
+ memcmp.c, memcoll.c, memset.c, mktime.c, modechange.h, obstack.h,
+ pathmax.h, realloc.c, rmdir.c, safe-read.c, save-cwd.c, stime.c,
+ stpcpy.c, strcasecmp.c, strcspn.c, strdup.c, stripslash.c,
+ strstr.c, strtod.c, strtol.c, strtoul.c, strtoull.c, strtoumax.c,
+ utime.c, version-etc.h, xalloc.h, xstrdup.c, xstrtoumax.c,
+ yesno.c: Back out Copyright date changes for each file with no change
+ this year. This eases coordination with other programs using the same
+ source code modules. From Paul Eggert.
+
+2000-08-03 Greg McGary <greg@mcgary.org>
+
+ * regex.c (SET_HIGH_BOUND, MOVE_BUFFER_POINTER,
+ ELSE_EXTEND_BUFFER_HIGH_BOUND): New macros.
+ (EXTEND_BUFFER): Use them.
+
+2000-08-01 Jim Meyering <jim@meyering.net>
+
+ * dirname.c (ISSLASH): Define.
+ (BACKSLASH_IS_PATH_SEPARATOR): Define.
+ (dir_name) [BACKSLASH_IS_PATH_SEPARATOR]: Handle the case in which
+ both `\' and `/' may be use as path separators.
+ Based on a patch from Prashant TR.
+
+2000-07-31 Paul Eggert <eggert@twinsun.com>
+
+ * quotearg.c (quotearg_n_options): Don't make the initial
+ slot vector a constant, since it might get modified.
+
+2000-07-31 Jim Meyering <jim@meyering.net>
+
+ * xmalloc.c: Use `virtual memory exhausted', not `Memory exhausted'.
+ * obstack.c (print_and_abort): Likewise.
+
+2000-07-30 Paul Eggert <eggert@twinsun.com>
+
+ * quotearg.c (quotearg_n_options): Preallocate a slot 0
+ buffer, so that the caller can always quote one small
+ component of a "memory exhausted" message in slot 0.
+ From a suggestion by Jim Meyering.
+
+2000-07-30 Jim Meyering <jim@meyering.net>
+
+ * makepath.c (make_path): Quote the other instance, too.
+
+ * quotearg.c (N_STATIC_SLOTVECS): Define.
+ (STATIC_BUF_SIZE): Define.
+ (quotearg_n_options): Use only statically allocated storage when
+ N < N_STATIC_SLOTVECS and the length of the quoted result is smaller
+ than STATIC_BUF_SIZE.
+
+2000-07-29 Jim Meyering <jim@meyering.net>
+
+ * diacrit.c (diacrit_diac): Use __MSDOS__ in favor of MSDOS.
+ * dirname.c (dir_name): Likewise.
+
+ * basename.c (base_name): Use ISSLASH rather than comparing against `/'.
+
+ * dirname.c (dir_name) [MSDOS]: Declare `lim' to be const.
+ (dir_name): Assert that there are no trailing slashes.
+
+2000-07-18 Bruno Haible <haible@clisp.cons.org>
+
+ * mbswidth.h (mbswidth): Add a flags argument.
+ (mbswidth): New declaration.
+ (MBSW_ACCEPT_INVALID, MBSW_ACCEPT_UNPRINTABLE): New macros.
+ * mbswidth.c (mbswidth): Add a flags argument.
+ (mbsnwidth): New function.
+
+2000-07-24 Jim Meyering <jim@meyering.net>
+
+ * mbswidth.c: Remove useless #else. From Bruno Haible.
+
+2000-07-23 Paul Eggert <eggert@twinsun.com>
+
+ * mbswidth.c (_XOPEN_SOURCE):
+ Don't define; this causes problems on Solaris 7.
+ (wcwidth) [!HAVE_DECL_WCWIDTH]: Declare.
+
+2000-07-23 Paul Eggert <eggert@twinsun.com>
+
+ * quotearg.c:
+ Include <wchar.h> even if ! (HAVE_MBRTOWC && 1 < MB_LEN_MAX),
+ so that mbstate_t is always defined.
+
+ Do not inspect MB_LEN_MAX, since it's incorrectly defined to
+ be 1 in at least one GCC installation, and this configuration
+ error is likely to be common. Ignoring MB_LEN_MAX hurts
+ performance on hosts that have mbrtowc but have only unibyte
+ locales, but I assume these hosts are rare.
+
+2000-07-23 Paul Eggert <eggert@twinsun.com>
+
+ * quotearg.c: Streamline by invoking multibyte code only if needed.
+ <wchar.h>: Include only if HAVE_MBRTOWC && 1 < MB_LEN_MAX.
+ (MB_CUR_MAX): Redefine to 1 if ! (HAVE_MBRTOWC && 1 < MB_LEN_MAX).
+ (quotearg_buffer_restyled): If a unibyte locale, don't bother to
+ invoke multibyte primitives.
+
+2000-07-23 Jim Meyering <jim@meyering.net>
+
+ * basename.c (base_name): Add an assertion.
+
+2000-07-15 Bruno Haible <clisp.cons.org>
+
+ * quotearg.c: When the system forces us to redefine mbstate_t,
+ shadow its mbsinit function.
+
+2000-07-16 Bruno Haible <haible@clisp.cons.org>
+
+ * mbswidth.h: New file.
+ * mbswidth.c: New file.
+ * Makefile.am (libfetish_a_SOURCES): Add mbswidth.c.
+ (noinst_HEADERS): Add mbswidth.h.
+
+2000-07-17 Bruno Haible <haible@clisp.cons.org>
+
+ * config.charset: Add support for FreeBSD. Improve support for HP-UX
+ and IRIX 6.
+
+2000-07-15 Jim Meyering <jim@meyering.net>
+
+ * makepath.c: Include quote.h.
+ (make_path): Convert "`%s'" in format strings to "%s", and wrap each
+ corresponding argument in a `quote (...)' call.
+ Give better diagnostics.
+
+ * Makefile.am (libfetish_a_SOURCES): Add quote.c.
+ (noinst_HEADERS): Add quote.h.
+
+ * quote.c (quote, quote_n): New file. Two functions taken verbatim
+ from tar's src/misc.c.
+ * quote.h: New file. Prototypes for same.
+
+2000-07-10 Paul Eggert <eggert@twinsun.com>
+
+ From a suggestion by Bruno Haible.
+ * quotearg.c (mbrtowc): Do not use HAVE_WCHAR_H in the definition.
+ Use defined mbstate_t, not HAVE_MBSTATE_T_OBJECT,
+ to decide whether to define the BeOS workaround macro;
+ this adjusts to the change to AC_MBSTATE_T.
+
+2000-07-13 Paul Eggert <eggert@twinsun.com>
+
+ * quotearg.h (enum quoting style): New enum clocale_quoting_style.
+
+ * quotearg.c (quoting_style_args, quoting_style_vals,
+ quotearg_buffer_restyled): Add support for
+ clocale_quoting_style. Undo previous change to
+ locale_quoting_style behavior, and undo the "{LEFT QUOTATION MARK}"
+ and "{RIGHT QUOTATION MARK}" msgids.
+
+2000-07-05 Paul Eggert <eggert@twinsun.com>
+
+ The old behavior of quoting `like this' doesn't look good with
+ newer, ISO-style fonts. See:
+ http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+
+ Instead, quote "like this" by default. Let the translator
+ tailor the locale-specific quoting behavior by providing
+ translations for {LEFT QUOTATION MARK} and {RIGHT QUOTATION MARK}.
+
+ * quotearg.c (N_): New macro.
+ (gettext_default): New function.
+ (quotearg_buffer_restyled): Use
+ gettext_default ("{LEFT QUOTATION MARK}", "\"") for left quote, and
+ gettext_default ("{RIGHT QUOTATION MARK}", "\"") for right quote.
+
+2000-07-09 Jim Meyering <jim@meyering.net>
+
+ * Most files: Update copyright dates to include 2000.
+
+2000-07-08 Jim Meyering <jim@meyering.net>
+
+ * xgethostname.c (ENAMETOOLONG): Define to an unlikely value
+ if not defined.
+ (xgethostname): Remove now-unnecessary #ifdef.
+ Move declaration of `err' into loop where it's used.
+
+2000-07-05 Bruno Haible <haible@clisp.cons.org>
+
+ * xgethostname.c (xgethostname): Protect against the SunOS 5.5 bug
+ by allocating a larger buffer. Test the gethostname return value for
+ being >= 0, not == 0, for BeOS. Don't exhaust memory if gethostname
+ returns an error and ENAMETOOLONG isn't defined.
+
+2000-07-05 Paul Eggert <eggert@twinsun.com>
+ and Bruno Haible <haible@clisp.cons.org>
+
+ * quotearg.c (mbrtowc): Declare returned type, since BeOS doesn't.
+
+2000-07-05 Bruno Haible <haible@clisp.cons.org>
+
+ * quotearg.c (struct quoting_options): Simplify quote_these_too
+ dimension.
+
+2000-07-03 Jim Meyering <jim@meyering.net>
+
+ * strndup.c: [!HAVE_DECL_STRNLEN]: Declare strnlen.
+ Reported by Bruno Haible.
+
+2000-07-04 Jim Meyering <jim@meyering.net>
+
+ * quotearg.c: Make inclusion of <wchar.h> independent of whether
+ HAVE_MBRTOWC is set. Required at least for irix-5.6, which
+ lacks mbrtowc.
+
+2000-07-03 Paul Eggert <eggert@twinsun.com>
+ and Bruno Haible <haible@clisp.cons.org>
+
+ * quotearg.c (mbrtowc):
+ Assign to *pwc, and return 1 only if result is nonzero.
+ (iswprint): Use ISPRINT when substituting our own mbrtowc.
+
+2000-07-03 Jim Meyering <jim@meyering.net>
+
+ * readutmp.h: [HAVE_UTMPX_H]: Include <utmp.h> if HAVE_UTMP_H.
+ This is necessary to get a definition of e.g., UTMP_FILE on HP-UX 10.20.
+ From Bob Proulx.
+
+2000-07-02 Jim Meyering <jim@meyering.net>
+
+ * quotearg.c (mbstate_t): Don't define here.
+
+2000-07-02 Jim Meyering <jim@meyering.net>
+
+ * nanosleep.c (SIGCONT): Define if not already defined.
+
+2000-06-17 Bruno Haible <haible@clisp.cons.org>
+
+ * mountlist.c: Use MOUNTED_FS_STAT_DEV instead of MOUNTED_NEXT_DEV,
+ per change in ../m4/ls-mntd-fs.m4.
+ (read_filesystem_list): Ignore symbolic links.
+
+2000-06-29 Jim Meyering <jim@meyering.net>
+
+ * same.c: Include <string.h> or <strings.h>, as appropriate,
+ for declaration of strcmp.
+
+ * long-options.c: Include <stdlib.h>, for declaration of exit.
+
+ * mountlist.c (fsp_to_string) [HAVE_F_FSTYPENAME_IN_STATFS]:
+ Avoid warning by casting result to `char *' to remove `const'.
+
+2000-06-17 Bruno Haible <haible@clisp.cons.org>
+
+ * Makefile.am (libfetish_a_SOURCES): Remove readutmp.c.
+
+2000-06-26 Paul Eggert <eggert@twinsun.com>
+
+ savedir now sets errno on failure and invokes xmalloc to get memory.
+ Fix a couple of other minor bugs while we're at it.
+
+ * savedir.c (<unistd.h>): Do not include; there's no need.
+ (NAMLEN): Remove macro.
+ (malloc, realloc): Remove decls.
+ (stpcpy): Likewise.
+ ("xalloc.h"): Include.
+ (NAME_SIZE_DEFAULT): New macro.
+ (savedir): Use xmalloc / xrealloc to allocate memory.
+ Use NAME_SIZE_DEFAULT if name_size is negative or overflows to zero.
+ Skip "" directory entries.
+ Use strlen to calculate directory entry length, since the old method
+ is rarely used these days and isn't worth supporting.
+ Don't use a pointer after freeing it.
+ Check for integer overflow when calculating allocation size.
+ Use memcpy to copy entries, instead of stpcpy.
+ Set errno properly when returning NULL.
+ Check for readdir error.
+
+2000-06-26 Jim Meyering <jim@meyering.net>
+
+ * posixtm.c [HAVE_STDLIB_H]: Include stdlib.h, for decl of abort.
+
+2000-06-17 Bruno Haible <haible@clisp.cons.org>
+
+ * getusershell.c (xmalloc, xrealloc): Remove functions.
+ Include xalloc.h.
+ Don't include <stdlib.h>. Don't declare malloc, realloc.
+
+2000-06-23 Bruno Haible <haible@clisp.cons.org>
+
+ * unicodeio.c (print_unicode_char): Work around ansi2knr deficiency.
+
+2000-06-24 Jim Meyering <jim@meyering.net>
+
+ * error.c [!HAVE_DECL_STRERROR_R]: Declare strerror_r.
+
+2000-06-21 Jim Meyering <jim@meyering.net>
+
+ * getpass.c: New file, from Bruno Haible. Required for BeOS.
+
+2000-06-19 Paul Eggert <eggert@twinsun.com>
+
+ * quotearg.c: Include <wctype.h> after <wchar.h>, for Solaris 2.5.
+ (mbrtowc, mbstate_t): Define substitutes if
+ HAVE_MBRTOWC && HAVE_WCHAR_H && !HAVE_MBSTATE_T_OBJECT.
+ (iswprint): Define to 1 if !defined iswprint && !HAVE_ISWPRINT,
+ not if ! (HAVE_MBRTOWC && HAVE_WCHAR_H).
+
+2000-06-17 Bruno Haible <haible@clisp.cons.org>
+
+ * xgetcwd.c (xgetcwd): If the required pathname length is smaller
+ than 1024, return a memory chunk of least possible size, instead
+ of size PATH_MAX + 2. In the loop, increment the size proportionally.
+ Use free/xmalloc instead of xrealloc to avoid copying for very long
+ paths.
+
+2000-06-17 Bruno Haible <haible@clisp.cons.org>
+
+ * canon-host.c (canon_host): Use malloc and memcpy to copy an
+ address, not strdup. Include <stdlib.h> and don't declare free().
+
+2000-06-17 Bruno Haible <haible@clisp.cons.org>
+
+ * path-concat.c (path_concat): Don't access dir[-1] if dir is
+ the empty string.
+
+2000-06-21 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libfetish_a_SOURCES): Add getstr.c.
+ (noinst_HEADERS): Add getstr.h.
+
+ * getline.c (getstr): Move into a separate file.
+ * getstr.c (getstr): New file, extracted from getline.c, with
+ the following changes: new parameter, delim2; both delim[12]
+ parameters have type `int', not `char'. The latter would lose
+ with 8-bit delimiters.
+ * getstr.h: New file.
+
+2000-06-19 Jim Meyering <jim@meyering.net>
+
+ * getloadavg.c [HAVE_NLIST_H] (NLIST_STRUCT): Define.
+
+2000-06-18 Jim Meyering <jim@meyering.net>
+
+ * mkdir.c: Remove file, due mainly to copyright incompatibility.
+ Besides, these days every porting target provides a mkdir function.
+
+ * strnlen.c: Include memory.h, string.h, and/or strings.h as needed.
+ (this snippet comes from src/system.h).
+
+2000-06-15 Paul Eggert <eggert@twinsun.com>
+
+ * human.c (adjust_value): New function.
+ (human_readable_inexact): Apply rounding style even when
+ printing approximate values.
+
+2000-06-14 Paul Eggert <eggert@twinsun.com>
+
+ * human.c (human_readable_inexact): Allow an input block
+ size that is not a multiple of the output block size, and vice versa.
+ Reported by Piergiorgio Sartor.
+
+2000-06-14 Paul Eggert <eggert@twinsun.com>
+
+ * getdate.y (get_date): Apply relative times after time
+ zone indicator, not before. Reported by Todd A. Jacobs.
+
+2000-06-13 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (all-local): Depend on lstat.c and stat.c.
+
+ * xstat.in [!HAVE_DECL_FREE]: Declare free in lstat.c.
+
+2000-06-12 Paul Eggert <eggert@twinsun.com>
+
+ * xstat.in: Include <stdlib.h> in lstat, to declare "free".
+
+2000-06-04 Paul Eggert <eggert@twinsun.com>
+
+ * strnlen.c: Include <config.h> if HAVE_CONFIG_H.
+
+2000-06-04 Jim Meyering <jim@meyering.net>
+
+ * getugroups.c (getugroups): Cast -1 to gid_t, for systems like
+ SunOS 4.1.4 for which gid_t is an unsigned type.
+
+2000-06-03 Jim Meyering <jim@meyering.net>
+
+ * strnlen.c [!HAVE_DECL_MEMCHR]: Declare memchr.
+
+2000-05-26 Bruno Haible <haible@clisp.cons.org>
+
+ * Makefile.am (install-exec-local): On systems with glibc-2.1 or
+ newer, don't install charset.alias.
+ * config.charset: Change the Linux/glibc rules so they become empty
+ on glibc-2.1 or newer.
+
+2000-06-02 Jim Meyering <jim@meyering.net>
+
+ * mountlist.c: Back out last change. Instead, do this...
+ * mountlist.c (read_filesystem_list) [MOUNTED_VMOUNT]: Set the me_dummy
+ member using the same `ignore'-testing code.
+ * mountlist.h (ME_DUMMY): Add `autofs' to the list of ignored
+ fs_type strings.
+ From Mark D. Roth.
+
+2000-05-29 Jim Meyering <jim@meyering.net>
+
+ * mountlist.c (read_filesystem_list) [MOUNTED_VMOUNT]: Ignore mounts
+ with the `ignore' attribute. Based on a patch from Mark D. Roth.
+
+2000-05-22 Jim Meyering <jim@meyering.net>
+
+ * makepath.c: Remove old, now-unnecessary `#ifdef __MSDOS__' block.
+
+2000-05-18 Jim Meyering <jim@meyering.net>
+
+ * hash.c (hash_rehash): Fix a nasty bug: copy the free entry list
+ back, too, since it may have been modified by allocate_entry.
+ (hash_delete): Rewrite to use neither the assignment operator
+ nor the comma operator in an if-expression.
+
+2000-05-15 Paul Eggert <eggert@twinsun.com>
+
+ * closeout.c:
+ <sys/stat.h>, <sys/types.h>, <unistd.h>, (STDOUT_FILENO):
+ Remove; no longer needed.
+ "quotearg.h": Add include.
+ (file_name): Do not bother to explicitly initialize to NULL; it's less
+ efficient on some hosts.
+ (close_stdout_status): Remove test as to whether stdout was already
+ closed; it breaks for the case "echo x | sort >&-".
+ Quote file name colons.
+ Do not assume that _("write error") lacks format strings.
+
+2000-05-15 Jim Meyering <jim@meyering.net>
+
+ * version-etc.c (version_etc_copyright): Update the copyright string
+ used in all --version output.
+
+2000-05-14 Jim Meyering <jim@meyering.net>
+
+ * closeout.c (close_stdout_set_file_name): New function.
+ (close_stdout_status): Use new file-scoped global.
+ Return right away if fstat says the stdout file descriptor is invalid.
+ * closeout.h (close_stdout_set_file_name): Declare.
+
+2000-05-10 Jim Meyering <jim@meyering.net>
+
+ * closeout.c [default_exit_status]: New file-scoped variable.
+ (close_stdout_set_status): New function.
+ * closeout.h (close_stdout_set_status): Declare.
+
+2000-05-08 Jim Meyering <jim@meyering.net>
+
+ * long-options.c: Don't include closeout.h.
+ (parse_long_options): Don't call close_stdout for --version.
+
+2000-05-06 Jim Meyering <jim@meyering.net>
+
+ * strnlen.c: Undefine __strnlen and strnlen.
+ [!weak_alias]: Define __strnlen to strnlen.
+
+ * atexit.c: New file, from libiberty.
+
+2000-05-06 Jim Meyering <jim@meyering.net>
+
+ * closeout.c (close_stdout_status): Also check for errors on the
+ stderr stream.
+
+2000-05-05 Bruno Haible <haible@clisp.cons.org>
+
+ * localcharset.c (get_charset_aliases): Use malloc, realloc and memcpy
+ instead of xmalloc, xrealloc, path_concat.
+ (locale_charset): Treat empty environment variables as absent.
+ (DIRECTORY_SEPARATOR, ISSLASH): New macros.
+
+2000-05-04 Jim Meyering <jim@meyering.net>
+
+ * getopt.c: Update from glibc.
+ * obstack.c: Likewise.
+ * obstack.h: Likewise.
+ * regex.c: Likewise. NB: K&R compiler support is dropped for this file
+
+ * regex.h: Likewise.
+ * strndup.c: Likewise.
+ * strnlen.c: New file, from glibc.
+
+2000-05-01 Jim Meyering <jim@meyering.net>
+
+ * full-write.c (full_write): Remove `FIXME' part of comment.
+
+2000-04-29 Jim Meyering <jim@meyering.net>
+
+ * path-concat.c: Declare strdup only if it's not defined.
+ * canon-host.c: Likewise.
+
+2000-04-28 Jim Meyering <jim@meyering.net>
+
+ * rpmatch.c [HAVE_LIMITS_H]: Include limits.h before regex.h to avoid
+ redefinition warning on some systems (HPUX). Otherwise, regex.h is
+ included first, then limits.h is included by locale.h by libintl.h.
+ From John David Anglin.
+
+2000-04-25 Jim Meyering <jim@meyering.net>
+
+ * makepath.c (S_IRWXUGO): Define.
+ (make_path): Always perform explicit chmod if MODE specifies any
+ of the `special' permission bits. Prompted by a bug report against
+ install from Mate Wierdl and Joost van Baal.
+
+2000-04-18 Jim Meyering <jim@meyering.net>
+
+ * README: New file.
+
+ * getpagesize.h [!getpagesize && HAVE_OS_H && B_PAGE_SIZE]: Define
+ getpagesize. For BeOS. Based on a patch from Bruno Haible.
+
+2000-04-17 Jim Meyering <jim@meyering.net>
+
+ * strftime.c (my_strftime) [strftime]: Declare strftime here, since
+ the definition of it to rpl_strftime also defined-away the system's
+ declaration.
+
+2000-04-15 Jim Meyering <jim@meyering.net>
+
+ Use `C' to denote so-called `contiguous' files, the same way
+ that tar does.
+ * filemode.c (S_ISCTG) [!S_ISCTG && S_IFCTG]: Define.
+ (ftypelet): Use S_ISCTG.
+ From Michael Deutschmann.
+
+2000-04-14 Jim Meyering <jim@meyering.net>
+
+ * strftime.c (my_strftime) [#ifdef strftime]: Declare strftime.
+
+2000-04-08 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (charset.alias): Use t-$@, not $@-t so the DOS 8.3
+ names don't conflict. Reported by Eli Zaretskii.
+
+2000-03-28 Bruno Haible <haible@clisp.cons.org>
+
+ * unicodeio.c (print_unicode_char): Avoid triggering Solaris iconv
+ bug. Deal with the different error behavior of Irix iconv.
+
+2000-04-07 Jim Meyering <jim@meyering.net>
+
+ * putenv.c: Move inclusion of errno.h so it follows that of sys/types.h,
+ to work around system header problems on AIX 3.2.5. From Bruno Haible.
+
+2000-04-05 Jim Meyering <jim@meyering.net>
+
+ Portability tweaks required for ultrix4.3.
+ * readutmp.h [HAVE_UTMPX_H && !HAVE_DECL_GETUTENT]: Declare getutent.
+ * readutmp.c: Include sys/types.h before sys/stat.h.
+ * canon-host.c: Declare strdup.
+ * path-concat.c: Likewise.
+ From John David Anglin.
+
+2000-04-04 Jim Meyering <jim@meyering.net>
+
+ Be more DOS 8.3-friendly.
+ * ref-add.sin: Renamed from ref-add.sed.in.
+ * ref-del.sin: Renamed from ref-del.sed.in.
+ * Makefile.am: Reflect renaming.
+ Reported by Eli Zaretskii.
+
+ Use a temporary file name that won't clash with `charset.alias'
+ in the DOS 8.3 name space.
+ * Makefile.am (charset_tmp): Define.
+ (install-exec-local): Use $(charset_tmp) instead of $(charset_alias)-t.
+ (uninstall-local): Likewise.
+ Reported by Eli Zaretskii.
+
+2000-03-29 Paul Eggert <eggert@twinsun.com>
+
+ * time/strftime.c (my_strftime): Make sure we call the system
+ strftime, not ourselves, when invoking the underlying strftime.
+
+2000-03-24 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (EXTRA_DIST): Add ref-add.sed.in and ref-del.sed.in.
+ (charset_alias): Define.
+ (install-exec-local): Factor out common code.
+ (uninstall-local): Split lines longer than 80.
+ (ref-add.sed, ref-del.sed): Remove rules... (do the following instead)
+ (SUFFIXES): Define.
+ (.sed.in.sed): New rule. Don't redirect directly to $@.
+ (CLEANFILES): Add ref-add.sed and ref-del.sed.
+
+2000-03-19 Bruno Haible <haible@clisp.cons.org>
+
+ * config.charset: Output a line containing "Packages using this file".
+ * ref-add.sed.in, ref-del.sed.in: New files.
+ * Makefile.am (install-exec-local, uninstall-local, ref-add.sed,
+ ref-del.sed): New rules.
+
+2000-03-17 Jim Meyering <jim@meyering.net>
+
+ * unicodeio.c (<string.h>): Include only #if HAVE_STRING_H.
+ Otherwise, include <strings.h>
+
+2000-03-17 Bruno Haible <haible@clisp.cons.org>
+
+ * unicodeio.c (utf8_wctomb): New function.
+ (print_unicode_char): Pass the Unicode character to iconv in UTF-8
+ format instead of in UCS-4 with platform dependent endianness.
+
+2000-03-07 Paul Eggert <eggert@twinsun.com>
+
+ * savedir.c (savedir): Work even if directory size is
+ negative; this can happen with some screwy NFS configurations.
+
+2000-03-06 Jim Meyering <jim@meyering.net>
+
+ * localcharset.c (get_charset_aliases): Don't try to free file_name
+ if it's NULL (because we ran out of memory). From Bruno Haible.
+
+2000-03-05 Jim Meyering <jim@meyering.net>
+
+ * localcharset.c ("path-concat.h"): Include.
+ (get_charset_aliases): Use path_concat instead of ANSI string
+ concatenation.
+
+ * unicodeio.h (PARAMS): Define.
+ Use it to guard prototype.
+
+2000-03-04 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (install-exec-local): Create $(libdir) before installing
+ into it.
+ (uninstall-local): Uncomment this rule so `make distcheck' works
+ once again.
+
+ * unicodeio.c (<errno.h>): Include it.
+ (errno): Declare if not defined.
+
+ * localcharset.c: Add Bruno's comment justifying use of volatile.
+
+ * config.charset: New version, incorporating remarks from a linux
+ i18n mailing list. From Bruno Haible.
+
+2000-03-02 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (EXTRA_DIST): Add config.charset.
+
+2000-03-01 Jim Meyering <jim@meyering.net>
+
+ * localcharset.c: Guard some #includes with `#if HAVE_...'.
+ * unicodeio.c: Likewise.
+
+2000-02-02 Bruno Haible <haible@clisp.cons.org>
+
+ * config.charset: New file.
+ * localcharset.c: New file.
+ * unicodeio.h, unicodeio.c: New files.
+ * Makefile.am (DEFS): Add -DLIBDIR=...
+ (libfetish_a_SOURCES): Add localcharset.c and unicodeio.c.
+ (noinst_HEADERS): Add unicodeio.h.
+ (all-local, install-exec-local, charset.alias): New targets.
+
+2000-02-28 Paul Eggert <eggert@twinsun.com>
+
+ * quotearg.c (ALERT_CHAR): New macro.
+ (quotearg_buffer_restyled): Use it.
+
+2000-02-27 Jim Meyering <jim@meyering.net>
+
+ * strtoumax.c: Fix typo in decl of strtoul: s/long long/long/.
+ Guard declaration of strtoull also with `&& HAVE_UNSIGNED_LONG_LONG'.
+
+ * backupfile.c: Guard inclusion of stdlib.h with `#if HAVE_STDLIB_H',
+ not `#if STDC_HEADERS'.
+ Declare malloc if needed.
+
+ * backupfile.c: Use `#if !HAVE_DECL...' instead of `#ifndef HAVE_DECL..'
+ now that autoconf always defines the HAVE_DECL_ symbols.
+ * human.c: Likewise.
+ * same.c: Likewise.
+ * strtoumax.c: Likewise.
+
+ * backupfile.c: Arrange for cpp to fail if the configure-time
+ declaration check was not run.
+ * hash.c: Likewise.
+ * human.c: Likewise.
+ * same.c: Likewise.
+ * strtoumax.c: Likewise.
+
+ * userspec.c (parse_user_spec): If there is no `:' but there is a `.',
+ then first look up the entire `.'-containing string as a login name.
+
+2000-02-18 Paul Eggert <eggert@twinsun.com>
+
+ * getdate.y: Handle two-digit years with leading zeros correctly.
+ (textint): New typedef.
+ (parser_control): Member year changed from int to textint.
+ All uses changed.
+ (YYSTYPE): Removed; replaced by %union with int and textint members.
+ (tDAY, tDAY_UNIT, tDAYZONE, tHOUR_UNIT, tID, tLOCAL_ZONE, tMERIDIAN,
+ tMINUTE_UNIT, tMONTH, tMONTH_UNIT tSEC_UNIT, tSNUMBER, tUNUMBER,
+ tYEAR_UNIT, tZONE, o_merid): Now of type <intval>.
+ (tSNUMBER, tUNUMBER): Now of type <textintval>.
+ (date, number, to_year): Use width of number in digits, not its value,
+ to determine whether it's a 2-digit year, or a 2-digit time.
+ (yylex): Store number of digits of numeric tokens.
+ Reported by John Kendall.
+
+ (parser_control): Changed from struct parser_control to typedef (for
+ consistency). All uses changed.
+
+ (tID): Removed; not used.
+ (yylex): Return '?' for unknown identifiers, rather than (unused) tID.
+
+2000-02-14 Paul Eggert <eggert@twinsun.com>
+
+ * getpagesize.h (getpagesize): Port to VMS for Alpha;
+ adapted from changes to grep getpagesize.h by Martin P.J. Zinser.
+
+2000-02-12 Jim Meyering <jim@meyering.net>
+
+ * userspec.c (ISDIGIT): Define it.
+ (isdigit): Remove definition.
+ (is_number): Use ISDIGIT, not isdigit.
+ <libintl.h>: Include.
+ (_ and N_): Define.
+ (parse_user_spec): Mark translatable strings.
+
+2000-02-10 Jim Meyering <jim@meyering.net>
+
+ With these changes, nanosleep.[ch] are finally enough like the other
+ lib/* replacement files to compile on a few more losing systems.
+
+ * nanosleep.h: Don't include config.h.
+ Remove prototype from declaration of nanosleep.
+ (PARAMS): Remove now-unneeded definition.
+ * nanosleep.c: #undef nanosleep.
+ (rpl_nanosleep): Rename from nanosleep.
+
+2000-02-03 Jim Meyering <jim@meyering.net>
+
+ * readutmp.c (read_utmp): Guard with `#ifdef UTMP_NAME_FUNCTION',
+ rather than with `#if HAVE_UTMPNAME'.
+
+2000-02-01 Jim Meyering <jim@meyering.net>
+
+ * readutmp.h (UT_USER): Add parens. From Andreas Schwab.
+
+2000-01-31 Jim Meyering <jim@meyering.net>
+
+ * nanosleep.h (nanosleep): Guard declaration with
+ `#if ! HAVE_DECL_NANOSLEEP'.
+ Without this, OFS gets a redeclaration error for rpl_nanosleep, due to
+ the declaration in that vendor's sys/timers.h.
+ Reported by Christian Krackowizer.
+
+ * quotearg.c (ISASCII): Add #undef and move definition to follow
+ inclusion of wctype.h to work around Solaris 2.6 namespace pollution.
+ (ISPRINT): Likewise.
+ Reported by Tom Tromey.
+
+2000-01-30 Jim Meyering <jim@meyering.net>
+
+ * readutmp.c (extract_trimmed_name): Use UT_USER instead of hard-coding
+ uses of ->ut_name. The latter doesn't work with new Linux header files
+ where only utmpx.ut_user is declared.
+
+ * readutmp.h (UT_USER): Define.
+
+2000-01-23 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (libfetish_a_SOURCES): Remove explicit mention of
+ obstack.c.
+
+2000-01-22 Jim Meyering <jim@meyering.net>
+
+ * strtoumax.c: [! HAVE_DECL_STRTOUL]: Declare strtoul.
+ [! HAVE_DECL_STRTOULL]: Declare strtoull.
+ Required for some AIX systems. Reported by Christian Krackowizer.
+ [TESTING] (main): New function.
+
+ 1997-10-17 Eli Zaretskii <eliz@is.elta.co.il>
+ * dirname.c (dir_name): Support for DOS-style file names with drive
+ letters.
+
+ * quotearg.c [HAVE_WCTYPE_H]: Include <wctype.h> for decl of iswprint.
+
+ * strverscmp.c (ISDIGIT): Define.
+ (strverscmp): Use ISDIGIT, not isdigit.
+
+2000-01-17 Paul Eggert <eggert@twinsun.com>
+
+ * nanosleep.c (nanosleep):
+ Don't use SA_INTERRUPT to decide whether to call sigaction, as
+ POSIX.1 doesn't require SA_INTERRUPT and some systems
+ (e.g. Solaris 7) don't define it. Use SA_NOCLDSTOP instead;
+ it's been part of POSIX.1 since day 1 (in 1988).
+
+2000-01-17 Jim Meyering <jim@meyering.net>
+
+ * interlock: Remove unused file. Reported by François Pinard.
+
+2000-01-16 Paul Eggert <eggert@twinsun.com>
+
+ * quotearg.c (quotearg_buffer_restyled): Do not quote
+ alert, backslash, formfeed, and vertical tab unnecessarily in
+ shell quoting style.
+
+
+ -----
+
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free
+ Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without
+ modification, are permitted provided the copyright notice
+ and this notice are preserved.
diff --git a/lib/Makefile.am b/lib/Makefile.am
new file mode 100644
index 0000000..cfa22be
--- /dev/null
+++ b/lib/Makefile.am
@@ -0,0 +1,38 @@
+## Makefile for gnulib/lib -*-Makefile-*-
+
+# Copyright (C) 1995-2006 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+## 02110-1301, USA.
+
+include gnulib.mk
+
+AM_CFLAGS = $(WARNING_CFLAGS) $(WERROR_CFLAGS)
+
+noinst_PROGRAMS = t-fpending
+LDADD = $(noinst_LIBRARIES)
+
+libcoreutils_a_SOURCES += \
+ buffer-lcm.c buffer-lcm.h \
+ xmemxfrm.c xmemxfrm.h
+
+libcoreutils_a_LIBADD += $(LIBOBJS)
+libcoreutils_a_DEPENDENCIES += $(LIBOBJS)
+
+check: unit-test
+
+.PHONY: unit-test
+unit-test: t-fpending
+ ./t-fpending > /dev/null
diff --git a/lib/Makefile.in b/lib/Makefile.in
new file mode 100644
index 0000000..772d8f3
--- /dev/null
+++ b/lib/Makefile.in
@@ -0,0 +1,1636 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 1995-2006 Free Software Foundation, Inc.
+
+# Copyright (C) 2004-2007 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License. As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+# Reproduce by: gnulib-tool --import --dir=. --local-dir=gl --lib=libcoreutils --source-base=lib --m4-base=m4 --doc-base=doc --aux-dir=build-aux --avoid=lock --avoid=size_max --avoid=xsize --avoid=canonicalize-lgpl --no-libtool --macro-prefix=gl acl alloca announce-gen argmatch assert atexit backupfile base64 c-strcase c-strtod c-strtold calloc canon-host canonicalize chown cloexec closeout config-h configmake cycle-check d-ino d-type diacrit dirfd dirname dup2 error euidaccess exclude exitfail fchdir fcntl fcntl-safer fdl file-type fileblocks filemode filenamecat fnmatch-gnu fopen-safer fprintftime free fsusage ftruncate fts getdate getgroups gethrxtime getline getloadavg getndelim2 getopt getpagesize getpass-gnu gettext gettime gettimeofday getugroups getusershell gnupload group-member hard-locale hash hash-pjw host-os human idcache inttostr inttypes isapipe lchmod lchown lib-ignore linebuffer link-follow long-options lstat malloc mbswidth md5 memcasecmp memchr memcmp memcpy memmove mempcpy memrchr memset mkancesdirs mkdir mkdir-p mkstemp mktime modechange mountlist mpsort obstack pathmax perl physmem posixtm posixver putenv quote quotearg raise readlink readtokens readtokens0 readutmp realloc regex rename rename-dest-slash rmdir rmdir-errno root-dev-ino rpmatch safe-read same save-cwd savedir savewd settime sha1 sig2str ssize_t stat-macros stat-time stdbool stdlib-safer stpcpy strcspn strftime strpbrk strtod strtoimax strtol strtoumax strverscmp sys_stat timespec tzset unicodeio unistd-safer unlink-busy unlinkdir unlocked-io uptime userspec utime utimecmp utimens vasprintf verify version-etc-fsf wcwidth winsz-ioctl winsz-termios xalloc xgetcwd xgethostname xmemcoll xnanosleep xreadlink xreadlink-with-size xstrtod xstrtoimax xstrtol xstrtold xstrtoumax yesno
+
+
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/config.hin $(srcdir)/gnulib.mk \
+ ChangeLog TODO alloca.c euidaccess-stat.c euidaccess-stat.h \
+ fd-reopen.c fd-reopen.h getdate.c memxfrm.c memxfrm.h \
+ rand-isaac.c rand-isaac.h randint.c randint.h randperm.c \
+ randperm.h randread.c randread.h sha256.c sha256.h sha512.c \
+ sha512.h strintcmp.c strnumcmp-in.h strnumcmp.c strnumcmp.h \
+ u64.h xfts.c xfts.h
+noinst_PROGRAMS = t-fpending$(EXEEXT)
+subdir = lib
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+libcoreutils_a_AR = $(AR) $(ARFLAGS)
+am__DEPENDENCIES_1 =
+am_libcoreutils_a_OBJECTS = allocsa.$(OBJEXT) base64.$(OBJEXT) \
+ c-ctype.$(OBJEXT) c-strcasecmp.$(OBJEXT) \
+ c-strncasecmp.$(OBJEXT) diacrit.$(OBJEXT) full-read.$(OBJEXT) \
+ full-write.$(OBJEXT) getdate.$(OBJEXT) hash-pjw.$(OBJEXT) \
+ linebuffer.$(OBJEXT) localcharset.$(OBJEXT) mbchar.$(OBJEXT) \
+ mbscasecmp.$(OBJEXT) mbswidth.$(OBJEXT) readtokens0.$(OBJEXT) \
+ savewd.$(OBJEXT) strnlen1.$(OBJEXT) unicodeio.$(OBJEXT) \
+ version-etc.$(OBJEXT) version-etc-fsf.$(OBJEXT) \
+ xalloc-die.$(OBJEXT) xgethostname.$(OBJEXT) xmemcoll.$(OBJEXT) \
+ xreadlink.$(OBJEXT) xreadlink-with-size.$(OBJEXT) \
+ xstrndup.$(OBJEXT) xstrtoimax.$(OBJEXT) xstrtoumax.$(OBJEXT) \
+ buffer-lcm.$(OBJEXT) xmemxfrm.$(OBJEXT)
+libcoreutils_a_OBJECTS = $(am_libcoreutils_a_OBJECTS)
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+PROGRAMS = $(noinst_PROGRAMS)
+t_fpending_SOURCES = t-fpending.c
+t_fpending_OBJECTS = t-fpending.$(OBJEXT)
+t_fpending_LDADD = $(LDADD)
+t_fpending_DEPENDENCIES = $(noinst_LIBRARIES)
+DEFAULT_INCLUDES = -I.@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
+YLWRAP = $(top_srcdir)/build-aux/ylwrap
+SOURCES = $(libcoreutils_a_SOURCES) $(EXTRA_libcoreutils_a_SOURCES) \
+ t-fpending.c
+DIST_SOURCES = $(libcoreutils_a_SOURCES) \
+ $(EXTRA_libcoreutils_a_SOURCES) t-fpending.c
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@ $(POW_LIB)
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = 1.5 gnits
+noinst_HEADERS =
+noinst_LIBRARIES = libcoreutils.a
+noinst_LTLIBRARIES =
+EXTRA_DIST = acl-internal.h acl.c acl.h acl_entries.c file-has-acl.c \
+ alloca.c alloca_.h allocsa.valgrind argmatch.c argmatch.h \
+ atexit.c backupfile.c backupfile.h c-strtod.c c-strtod.h \
+ c-strtod.c c-strtod.h c-strtold.c calloc.c canon-host.c \
+ canon-host.h canonicalize.c canonicalize.h pathmax.h \
+ chdir-long.c chdir-long.h chown.c fchown-stub.c cloexec.c \
+ cloexec.h close-stream.c close-stream.h closeout.c closeout.h \
+ cycle-check.c cycle-check.h dev-ino.h dirfd.c dirfd.h \
+ basename.c dirname.c dirname.h stripslash.c dup2.c error.c \
+ error.h euidaccess.c euidaccess.h exclude.c exclude.h \
+ exitfail.c exitfail.h dirent_.h fchdir.c fcntl_.h \
+ creat-safer.c fcntl--.h fcntl-safer.h open-safer.c file-type.c \
+ file-type.h fileblocks.c filemode.c filemode.h filenamecat.c \
+ filenamecat.h fnmatch.c fnmatch_.h fnmatch_loop.c \
+ fopen-safer.c stdio--.h stdio-safer.h __fpending.c \
+ __fpending.h fprintftime.c fprintftime.h free.c fsusage.c \
+ fsusage.h ftruncate.c fts-cycle.c fts.c fts_.h gai_strerror.c \
+ getaddrinfo.c getaddrinfo.h getcwd.c getdate.c getdate.h \
+ getdelim.c getdelim.h getgroups.c gethostname.c gethrxtime.c \
+ gethrxtime.h xtime.h getline.c getline.h getloadavg.c \
+ getndelim2.c getndelim2.h getopt.c getopt1.c getopt_.h \
+ getopt_int.h getpagesize.h getpass.c getpass.h gettime.c \
+ gettimeofday.c getugroups.c getusershell.c group-member.c \
+ group-member.h hard-locale.c hard-locale.h hash.c hash.h \
+ human.c human.h i-ring.c i-ring.h idcache.c inet_ntop.c \
+ inet_ntop.h intprops.h imaxtostr.c inttostr.c inttostr.h \
+ offtostr.c uinttostr.c umaxtostr.c inttypes_.h isapipe.c \
+ isapipe.h lchmod.h lchown.c lchown.h config.charset \
+ ref-add.sin ref-del.sin long-options.c long-options.h lstat.c \
+ lstat.h malloc.c mbchar.h md5.c md5.h memcasecmp.c \
+ memcasecmp.h memchr.c memcmp.c memcoll.c memcoll.h memcpy.c \
+ memmove.c mempcpy.c memrchr.c memset.c mkancesdirs.c \
+ mkancesdirs.h mkdir.c dirchownmod.c dirchownmod.h mkdir-p.c \
+ mkdir-p.h mkstemp.c mktime.c modechange.c modechange.h \
+ mountlist.c mountlist.h mpsort.c mpsort.h nanosleep.c \
+ netinet_in_.h obstack.c obstack.h at-func.c fchmodat.c \
+ fchownat.c fstatat.c mkdirat.c openat-die.c openat-priv.h \
+ openat-proc.c openat.c openat.h pathmax.h physmem.c physmem.h \
+ posixtm.c posixtm.h posixver.c posixver.h putenv.c quote.c \
+ quote.h quotearg.c quotearg.h raise.c readlink.c readtokens.c \
+ readtokens.h readutmp.c readutmp.h realloc.c regcomp.c regex.c \
+ regex.h regex_internal.c regex_internal.h regexec.c rename.c \
+ rename-dest-slash.c rmdir.c root-dev-ino.c root-dev-ino.h \
+ rpmatch.c safe-read.c safe-read.h safe-write.c safe-write.h \
+ same.c same.h same-inode.h save-cwd.c save-cwd.h savedir.c \
+ savedir.h setenv.c setenv.h unsetenv.c settime.c sha1.c sha1.h \
+ sig2str.c sig2str.h snprintf.c stat-macros.h stat-time.h \
+ stdbool_.h stdint_.h stdio_.h stdlib_.h mkstemp-safer.c \
+ stdlib--.h stdlib-safer.h stpcpy.c strcspn.c strdup.c \
+ strftime.c strftime.h string_.h strndup.c strnlen.c strpbrk.c \
+ strtod.c strtoimax.c strtol.c strtoll.c strtoul.c strtoull.c \
+ strtoumax.c strverscmp.c strverscmp.h socket_.h stat_.h \
+ sys_time_.h tempname.c tempname.h time_.h time_r.c timespec.h \
+ unistd_.h dup-safer.c fd-safer.c pipe-safer.c unistd--.h \
+ unistd-safer.h unlinkdir.c unlinkdir.h unlocked-io.h \
+ inttostr.h userspec.c userspec.h utime.c utimecmp.c utimecmp.h \
+ utimens.c utimens.h asnprintf.c printf-args.c printf-args.h \
+ printf-parse.c printf-parse.h vasnprintf.c vasnprintf.h \
+ asprintf.c vasprintf.c vasprintf.h wchar_.h wctype_.h xalloc.h \
+ xmalloc.c xgetcwd.c xgetcwd.h xnanosleep.c xnanosleep.h \
+ xreadlink.h xreadlink.h xstrtod.c xstrtod.h xstrtol.c \
+ xstrtol.h xstrtoul.c xstrtod.c xstrtod.h xstrtold.c yesno.c \
+ yesno.h
+BUILT_SOURCES = $(ALLOCA_H) $(ARPA_INET_H) configmake.h $(DIRENT_H) \
+ $(FCNTL_H) $(FNMATCH_H) getdate.c $(GETOPT_H) $(INTTYPES_H) \
+ $(NETINET_IN_H) $(STDBOOL_H) $(STDINT_H) stdio.h stdlib.h \
+ string.h $(SYS_SOCKET_H) $(SYS_STAT_H) $(SYS_TIME_H) time.h \
+ unistd.h $(WCHAR_H) $(WCTYPE_H)
+SUFFIXES = .sed .sin
+MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t arpa/inet.h \
+ arpa/inet.h-t dirent.h dirent.h-t fcntl.h fcntl.h-t fnmatch.h \
+ fnmatch.h-t getopt.h getopt.h-t inttypes.h inttypes.h-t \
+ netinet/in.h netinet/in.h-t stdbool.h stdbool.h-t stdint.h \
+ stdint.h-t stdio.h stdio.h-t stdlib.h stdlib.h-t string.h \
+ string.h-t sys/socket.h sys/socket.h-t sys/stat.h sys/stat.h-t \
+ sys/time.h sys/time.h-t time.h time.h-t unistd.h unistd.h-t \
+ wchar.h wchar.h-t wctype.h wctype.h-t
+MOSTLYCLEANDIRS = arpa netinet sys sys
+CLEANFILES = configmake.h configmake.h-t charset.alias ref-add.sed \
+ ref-del.sed
+DISTCLEANFILES =
+MAINTAINERCLEANFILES = getdate.c
+AM_CPPFLAGS =
+
+# This is for those projects which use "gettextize --intl" to put a source-code
+# copy of libintl into their package. In such projects, every Makefile.am needs
+# -I$(top_builddir)/intl, so that <libintl.h> can be found in this directory.
+# For the Makefile.ams in other directories it is the maintainer's
+# responsibility; for the one from gnulib we do it here.
+# This option has no effect when the user disables NLS (because then the intl
+# directory contains no libintl.h file) or when the project does not use
+# "gettextize --intl".
+#AM_CPPFLAGS += -I$(top_builddir)/intl
+libcoreutils_a_SOURCES = allocsa.h allocsa.c base64.h base64.c \
+ c-ctype.h c-ctype.c c-strcase.h c-strcasecmp.c c-strncasecmp.c \
+ diacrit.h diacrit.c full-read.h full-read.c full-write.h \
+ full-write.c getdate.y gettext.h hash-pjw.h hash-pjw.c \
+ linebuffer.h linebuffer.c localcharset.h localcharset.c \
+ mbchar.c mbscasecmp.c mbswidth.h mbswidth.c mbuiter.h \
+ readtokens0.h readtokens0.c savewd.h savewd.c strnlen1.h \
+ strnlen1.c unicodeio.h unicodeio.c verify.h version-etc.h \
+ version-etc.c version-etc-fsf.c wcwidth.h xalloc-die.c \
+ xgethostname.h xgethostname.c xmemcoll.h xmemcoll.c \
+ xreadlink.c xreadlink-with-size.c xstrndup.h xstrndup.c \
+ xstrtoimax.c xstrtoumax.c buffer-lcm.c buffer-lcm.h xmemxfrm.c \
+ xmemxfrm.h
+libcoreutils_a_LIBADD = $(gl_LIBOBJS) @ALLOCA@ $(LIBOBJS)
+libcoreutils_a_DEPENDENCIES = $(gl_LIBOBJS) @ALLOCA@ $(LIBOBJS)
+EXTRA_libcoreutils_a_SOURCES = acl.c acl_entries.c file-has-acl.c \
+ alloca.c argmatch.c atexit.c backupfile.c c-strtod.c \
+ c-strtod.c c-strtold.c calloc.c canon-host.c canonicalize.c \
+ chdir-long.c chown.c fchown-stub.c cloexec.c close-stream.c \
+ closeout.c cycle-check.c dirfd.c basename.c dirname.c \
+ stripslash.c dup2.c error.c euidaccess.c exclude.c exitfail.c \
+ fchdir.c creat-safer.c open-safer.c file-type.c fileblocks.c \
+ filemode.c filenamecat.c fnmatch.c fnmatch_loop.c \
+ fopen-safer.c __fpending.c fprintftime.c free.c fsusage.c \
+ ftruncate.c fts-cycle.c fts.c gai_strerror.c getaddrinfo.c \
+ getcwd.c getdelim.c getgroups.c gethostname.c gethrxtime.c \
+ getline.c getloadavg.c getndelim2.c getopt.c getopt1.c \
+ getpass.c gettime.c gettimeofday.c getugroups.c getusershell.c \
+ group-member.c hard-locale.c hash.c human.c i-ring.c idcache.c \
+ inet_ntop.c imaxtostr.c inttostr.c offtostr.c uinttostr.c \
+ umaxtostr.c isapipe.c lchown.c long-options.c lstat.c malloc.c \
+ md5.c memcasecmp.c memchr.c memcmp.c memcoll.c memcpy.c \
+ memmove.c mempcpy.c memrchr.c memset.c mkancesdirs.c mkdir.c \
+ dirchownmod.c mkdir-p.c mkstemp.c mktime.c modechange.c \
+ mountlist.c mpsort.c nanosleep.c obstack.c at-func.c \
+ fchmodat.c fchownat.c fstatat.c mkdirat.c openat-die.c \
+ openat-proc.c openat.c physmem.c posixtm.c posixver.c putenv.c \
+ quote.c quotearg.c raise.c readlink.c readtokens.c readutmp.c \
+ realloc.c regcomp.c regex.c regex_internal.c regexec.c \
+ rename.c rename-dest-slash.c rmdir.c root-dev-ino.c rpmatch.c \
+ safe-read.c safe-write.c same.c save-cwd.c savedir.c setenv.c \
+ unsetenv.c settime.c sha1.c sig2str.c snprintf.c \
+ mkstemp-safer.c stpcpy.c strcspn.c strdup.c strftime.c \
+ strndup.c strnlen.c strpbrk.c strtod.c strtoimax.c strtol.c \
+ strtoll.c strtoul.c strtoull.c strtoumax.c strverscmp.c \
+ tempname.c time_r.c dup-safer.c fd-safer.c pipe-safer.c \
+ unlinkdir.c userspec.c utime.c utimecmp.c utimens.c \
+ asnprintf.c printf-args.c printf-parse.c vasnprintf.c \
+ asprintf.c vasprintf.c xmalloc.c xgetcwd.c xnanosleep.c \
+ xstrtod.c xstrtol.c xstrtoul.c xstrtod.c xstrtold.c yesno.c
+LINK_WARNING_H = $(top_srcdir)/build-aux/link-warning.h
+charset_alias = $(DESTDIR)$(libdir)/charset.alias
+charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
+AM_CFLAGS = $(WARNING_CFLAGS) $(WERROR_CFLAGS)
+LDADD = $(noinst_LIBRARIES)
+all: $(BUILT_SOURCES) config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .sed .sin .c .o .obj .y
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/gnulib.mk $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnits lib/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+config.h: stamp-h1
+ @if test ! -f $@; then \
+ rm -f stamp-h1; \
+ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
+ else :; fi
+
+stamp-h1: $(srcdir)/config.hin $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status lib/config.h
+$(srcdir)/config.hin: $(am__configure_deps)
+ cd $(top_srcdir) && $(AUTOHEADER)
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libcoreutils.a: $(libcoreutils_a_OBJECTS) $(libcoreutils_a_DEPENDENCIES)
+ -rm -f libcoreutils.a
+ $(libcoreutils_a_AR) libcoreutils.a $(libcoreutils_a_OBJECTS) $(libcoreutils_a_LIBADD)
+ $(RANLIB) libcoreutils.a
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+
+clean-noinstPROGRAMS:
+ -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+t-fpending$(EXEEXT): $(t_fpending_OBJECTS) $(t_fpending_DEPENDENCIES)
+ @rm -f t-fpending$(EXEEXT)
+ $(LINK) $(t_fpending_OBJECTS) $(t_fpending_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/alloca.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/euidaccess-stat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fd-reopen.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/memxfrm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/rand-isaac.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/randint.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/randperm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/randread.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/sha256.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/sha512.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strintcmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strnumcmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/xfts.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/__fpending.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acl_entries.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alloca.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allocsa.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/argmatch.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asnprintf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asprintf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/at-func.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atexit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backupfile.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buffer-lcm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c-ctype.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c-strcasecmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c-strncasecmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c-strtod.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c-strtold.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calloc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/canon-host.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/canonicalize.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chdir-long.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cloexec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close-stream.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/closeout.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/creat-safer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cycle-check.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diacrit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirchownmod.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirfd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup-safer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/euidaccess.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exclude.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exitfail.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown-stub.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fd-safer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file-has-acl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file-type.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fileblocks.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filemode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filenamecat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fnmatch.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fnmatch_loop.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fopen-safer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fprintftime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/free.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstatat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsusage.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftruncate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fts-cycle.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fts.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/full-read.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/full-write.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gai_strerror.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getaddrinfo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getcwd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdelim.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gethostname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gethrxtime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getline.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getloadavg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getndelim2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpass.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettimeofday.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getugroups.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getusershell.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/group-member.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hard-locale.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash-pjw.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/human.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i-ring.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idcache.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imaxtostr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inet_ntop.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inttostr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isapipe.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lchown.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linebuffer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localcharset.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/long-options.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/malloc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbchar.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbscasecmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbswidth.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memcasecmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memchr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memcmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memcoll.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memcpy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memmove.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mempcpy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memrchr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memset.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkancesdirs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkdir-p.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkdirat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkstemp-safer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkstemp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mktime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/modechange.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mountlist.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpsort.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nanosleep.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/obstack.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/offtostr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open-safer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat-die.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat-proc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/physmem.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipe-safer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/posixtm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/posixver.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printf-args.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printf-parse.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/putenv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quote.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quotearg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raise.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readtokens.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readtokens0.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readutmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realloc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regcomp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regex.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regex_internal.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regexec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rename-dest-slash.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rename.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rmdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/root-dev-ino.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rpmatch.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/safe-read.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/safe-write.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/same.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/save-cwd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/savedir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/savewd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setenv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/settime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sig2str.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snprintf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stpcpy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strcspn.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strdup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strftime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stripslash.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strndup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strnlen.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strnlen1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strpbrk.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtod.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoimax.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtol.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoll.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoul.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoull.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoumax.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strverscmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t-fpending.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tempname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time_r.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uinttostr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umaxtostr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unicodeio.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unlinkdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unsetenv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/userspec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utimecmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utimens.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vasnprintf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vasprintf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version-etc-fsf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version-etc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xalloc-die.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetcwd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgethostname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmemcoll.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmemxfrm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xnanosleep.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xreadlink-with-size.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xreadlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrndup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtod.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtoimax.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtol.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtold.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtoul.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrtoumax.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yesno.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.y.c:
+ $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) config.hin $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) config.hin $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) config.hin $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) config.hin $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) \
+ config.h all-local
+installdirs:
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+ -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -rm -f getdate.c
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES clean-noinstLTLIBRARIES \
+ clean-noinstPROGRAMS mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf $(DEPDIR) ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-hdr distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am: install-exec-local
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf $(DEPDIR) ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-local
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-local
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
+ clean-generic clean-noinstLIBRARIES clean-noinstLTLIBRARIES \
+ clean-noinstPROGRAMS ctags distclean distclean-compile \
+ distclean-generic distclean-hdr distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-exec-local install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-local pdf \
+ pdf-am ps ps-am tags uninstall uninstall-am uninstall-local
+
+
+# We need the following in order to create <alloca.h> when the system
+# doesn't have one that works with the given compiler.
+alloca.h: alloca_.h
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ cat $(srcdir)/alloca_.h; \
+ } > $@-t
+ mv -f $@-t $@
+
+# We need the following in order to create <arpa/inet.h> when the system
+# doesn't have one.
+arpa/inet.h:
+ @MKDIR_P@ arpa
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ echo '#include <sys/socket.h>'; \
+ } > $@-t
+ mv $@-t $@
+
+# Retrieve values of the variables through 'configure' followed by
+# 'make', not directly through 'configure', so that a user who
+# sets some of these variables consistently on the 'make' command
+# line gets correct results.
+#
+# One advantage of this approach, compared to the classical
+# approach of adding -DLIBDIR=\"$(libdir)\" etc. to AM_CPPFLAGS,
+# is that it protects against the use of undefined variables.
+# If, say, $(libdir) is not set in the Makefile, LIBDIR is not
+# defined by this module, and code using LIBDIR gives a
+# compilation error.
+#
+# Another advantage is that 'make' output is shorter.
+#
+# Listed in the same order as the GNU makefile conventions.
+# The Automake-defined pkg* macros are appended, in the order
+# listed in the Automake 1.10a+ documentation.
+configmake.h: Makefile
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ echo '#define PREFIX "$(prefix)"'; \
+ echo '#define EXEC_PREFIX "$(exec_prefix)"'; \
+ echo '#define BINDIR "$(bindir)"'; \
+ echo '#define SBINDIR "$(sbindir)"'; \
+ echo '#define LIBEXECDIR "$(libexecdir)"'; \
+ echo '#define DATAROOTDIR "$(datarootdir)"'; \
+ echo '#define DATADIR "$(datadir)"'; \
+ echo '#define SYSCONFDIR "$(sysconfdir)"'; \
+ echo '#define SHAREDSTATEDIR "$(sharedstatedir)"'; \
+ echo '#define LOCALSTATEDIR "$(localstatedir)"'; \
+ echo '#define INCLUDEDIR "$(includedir)"'; \
+ echo '#define OLDINCLUDEDIR "$(oldincludedir)"'; \
+ echo '#define DOCDIR "$(docdir)"'; \
+ echo '#define INFODIR "$(infodir)"'; \
+ echo '#define HTMLDIR "$(htmldir)"'; \
+ echo '#define DVIDIR "$(dvidir)"'; \
+ echo '#define PDFDIR "$(pdfdir)"'; \
+ echo '#define PSDIR "$(psdir)"'; \
+ echo '#define LIBDIR "$(libdir)"'; \
+ echo '#define LISPDIR "$(lispdir)"'; \
+ echo '#define LOCALEDIR "$(localedir)"'; \
+ echo '#define MANDIR "$(mandir)"'; \
+ echo '#define MANEXT "$(manext)"'; \
+ echo '#define PKGDATADIR "$(pkgdatadir)"'; \
+ echo '#define PKGINCLUDEDIR "$(pkgincludedir)"'; \
+ echo '#define PKGLIBDIR "$(pkglibdir)"'; \
+ echo '#define PKGLIBEXECDIR "$(pkglibexecdir)"'; \
+ } | sed '/""/d' > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <dirent.h> when the system
+# doesn't have one that works with the given compiler.
+dirent.h: dirent_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''ABSOLUTE_DIRENT_H''@|$(ABSOLUTE_DIRENT_H)|g' \
+ -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \
+ < $(srcdir)/dirent_.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <fcntl.h> when the system
+# doesn't have one that works with the given compiler.
+fcntl.h: fcntl_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''ABSOLUTE_FCNTL_H''@|$(ABSOLUTE_FCNTL_H)|g' \
+ < $(srcdir)/fcntl_.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <fnmatch.h> when the system
+# doesn't have one that supports the required API.
+fnmatch.h: fnmatch_.h
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ cat $(srcdir)/fnmatch_.h; \
+ } > $@-t
+ mv -f $@-t $@
+
+# We need the following in order to create <getopt.h> when the system
+# doesn't have one that works with the given compiler.
+getopt.h: getopt_.h
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ cat $(srcdir)/getopt_.h; \
+ } > $@-t
+ mv -f $@-t $@
+
+# We need the following in order to create <inttypes.h> when the system
+# doesn't have one that works with the given compiler.
+inttypes.h: inttypes_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+ -e 's|@''ABSOLUTE_INTTYPES_H''@|$(ABSOLUTE_INTTYPES_H)|g' \
+ -e 's/@''PRI_MACROS_BROKEN''@/$(PRI_MACROS_BROKEN)/g' \
+ -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
+ -e 's/@''PRIPTR_PREFIX''@/$(PRIPTR_PREFIX)/g' \
+ -e 's/@''GNULIB_IMAXABS''@/$(GNULIB_IMAXABS)/g' \
+ -e 's/@''GNULIB_IMAXDIV''@/$(GNULIB_IMAXDIV)/g' \
+ -e 's/@''GNULIB_STRTOIMAX''@/$(GNULIB_STRTOIMAX)/g' \
+ -e 's/@''GNULIB_STRTOUMAX''@/$(GNULIB_STRTOUMAX)/g' \
+ -e 's/@''HAVE_DECL_IMAXABS''@/$(HAVE_DECL_IMAXABS)/g' \
+ -e 's/@''HAVE_DECL_IMAXDIV''@/$(HAVE_DECL_IMAXDIV)/g' \
+ -e 's/@''HAVE_DECL_STRTOIMAX''@/$(HAVE_DECL_STRTOIMAX)/g' \
+ -e 's/@''HAVE_DECL_STRTOUMAX''@/$(HAVE_DECL_STRTOUMAX)/g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/inttypes_.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to install a simple file in $(libdir)
+# which is shared with other installed packages. We use a list of referencing
+# packages so that "make uninstall" will remove the file if and only if it
+# is not used by another installed package.
+# On systems with glibc-2.1 or newer, the file is redundant, therefore we
+# avoid installing it.
+
+all-local: charset.alias ref-add.sed ref-del.sed
+install-exec-local: all-local
+ test $(GLIBC21) != no || $(mkinstalldirs) $(DESTDIR)$(libdir)
+ if test -f $(charset_alias); then \
+ sed -f ref-add.sed $(charset_alias) > $(charset_tmp) ; \
+ $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
+ rm -f $(charset_tmp) ; \
+ else \
+ if test $(GLIBC21) = no; then \
+ sed -f ref-add.sed charset.alias > $(charset_tmp) ; \
+ $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
+ rm -f $(charset_tmp) ; \
+ fi ; \
+ fi
+
+uninstall-local: all-local
+ if test -f $(charset_alias); then \
+ sed -f ref-del.sed $(charset_alias) > $(charset_tmp); \
+ if grep '^# Packages using this file: $$' $(charset_tmp) \
+ > /dev/null; then \
+ rm -f $(charset_alias); \
+ else \
+ $(INSTALL_DATA) $(charset_tmp) $(charset_alias); \
+ fi; \
+ rm -f $(charset_tmp); \
+ fi
+
+charset.alias: config.charset
+ rm -f t-$@ $@
+ $(SHELL) $(srcdir)/config.charset '$(host)' > t-$@
+ mv t-$@ $@
+.sin.sed:
+ rm -f t-$@ $@
+ sed -e '/^#/d' -e 's/@''PACKAGE''@/$(PACKAGE)/g' $< > t-$@
+ mv t-$@ $@
+
+# We need the following in order to create <netinet/in.h> when the system
+# doesn't have one.
+netinet/in.h:
+ @MKDIR_P@ netinet
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''ABSOLUTE_NETINET_IN_H''@|$(ABSOLUTE_NETINET_IN_H)|g' \
+ -e 's|@''HAVE_NETINET_IN_H''@|$(HAVE_NETINET_IN_H)|g' \
+ < $(srcdir)/netinet_in_.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <stdbool.h> when the system
+# doesn't have one that works.
+stdbool.h: stdbool_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool_.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <stdint.h> when the system
+# doesn't have one that works with the given compiler.
+stdint.h: stdint_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+ -e 's|@''ABSOLUTE_STDINT_H''@|$(ABSOLUTE_STDINT_H)|g' \
+ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
+ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
+ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
+ -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
+ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
+ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
+ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
+ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
+ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
+ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
+ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
+ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
+ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
+ < $(srcdir)/stdint_.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <stdio.h> when the system
+# doesn't have one that works with the given compiler.
+stdio.h: stdio_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''ABSOLUTE_STDIO_H''@|$(ABSOLUTE_STDIO_H)|g' \
+ -e 's|@''GNULIB_FPRINTF_POSIX''@|$(GNULIB_FPRINTF_POSIX)|g' \
+ -e 's|@''GNULIB_PRINTF_POSIX''@|$(GNULIB_PRINTF_POSIX)|g' \
+ -e 's|@''GNULIB_SNPRINTF''@|$(GNULIB_SNPRINTF)|g' \
+ -e 's|@''GNULIB_SPRINTF_POSIX''@|$(GNULIB_SPRINTF_POSIX)|g' \
+ -e 's|@''GNULIB_VFPRINTF_POSIX''@|$(GNULIB_VFPRINTF_POSIX)|g' \
+ -e 's|@''GNULIB_VPRINTF_POSIX''@|$(GNULIB_VPRINTF_POSIX)|g' \
+ -e 's|@''GNULIB_VSNPRINTF''@|$(GNULIB_VSNPRINTF)|g' \
+ -e 's|@''GNULIB_VSPRINTF_POSIX''@|$(GNULIB_VSPRINTF_POSIX)|g' \
+ -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \
+ -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \
+ -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \
+ -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \
+ -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \
+ -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \
+ -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \
+ -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \
+ -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \
+ -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/stdio_.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <stdlib.h> when the system
+# doesn't have one that works with the given compiler.
+stdlib.h: stdlib_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''ABSOLUTE_STDLIB_H''@|$(ABSOLUTE_STDLIB_H)|g' \
+ -e 's|@''GNULIB_GETSUBOPT''@|$(GNULIB_GETSUBOPT)|g' \
+ -e 's|@''GNULIB_MKDTEMP''@|$(GNULIB_MKDTEMP)|g' \
+ -e 's|@''GNULIB_MKSTEMP''@|$(GNULIB_MKSTEMP)|g' \
+ -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \
+ -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \
+ -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/stdlib_.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <string.h> when the system
+# doesn't have one that works with the given compiler.
+string.h: string_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''ABSOLUTE_STRING_H''@|$(ABSOLUTE_STRING_H)|g' \
+ -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|g' \
+ -e 's|@''GNULIB_MBSCHR''@|$(GNULIB_MBSCHR)|g' \
+ -e 's|@''GNULIB_MBSRCHR''@|$(GNULIB_MBSRCHR)|g' \
+ -e 's|@''GNULIB_MBSSTR''@|$(GNULIB_MBSSTR)|g' \
+ -e 's|@''GNULIB_MBSCASECMP''@|$(GNULIB_MBSCASECMP)|g' \
+ -e 's|@''GNULIB_MBSNCASECMP''@|$(GNULIB_MBSNCASECMP)|g' \
+ -e 's|@''GNULIB_MBSPCASECMP''@|$(GNULIB_MBSPCASECMP)|g' \
+ -e 's|@''GNULIB_MBSCASESTR''@|$(GNULIB_MBSCASESTR)|g' \
+ -e 's|@''GNULIB_MBSCSPN''@|$(GNULIB_MBSCSPN)|g' \
+ -e 's|@''GNULIB_MBSPBRK''@|$(GNULIB_MBSPBRK)|g' \
+ -e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \
+ -e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \
+ -e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \
+ -e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \
+ -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \
+ -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \
+ -e 's|@''GNULIB_STPCPY''@|$(GNULIB_STPCPY)|g' \
+ -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \
+ -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \
+ -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \
+ -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \
+ -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \
+ -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \
+ -e 's|@''GNULIB_STRSEP''@|$(GNULIB_STRSEP)|g' \
+ -e 's|@''GNULIB_STRCASESTR''@|$(GNULIB_STRCASESTR)|g' \
+ -e 's|@''GNULIB_STRTOK_R''@|$(GNULIB_STRTOK_R)|g' \
+ -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
+ -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
+ -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
+ -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
+ -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+ -e 's|@''HAVE_STRCASECMP''@|$(HAVE_STRCASECMP)|g' \
+ -e 's|@''HAVE_DECL_STRNCASECMP''@|$(HAVE_DECL_STRNCASECMP)|g' \
+ -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+ -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+ -e 's|@''HAVE_STRNDUP''@|$(HAVE_STRNDUP)|g' \
+ -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \
+ -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \
+ -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \
+ -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
+ -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
+ -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/string_.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <sys/socket.h> when the system
+# doesn't have one that works with the given compiler.
+sys/socket.h: socket_.h
+ @MKDIR_P@ sys
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''ABSOLUTE_SYS_SOCKET_H''@|$(ABSOLUTE_SYS_SOCKET_H)|g' \
+ -e 's|@''HAVE_SYS_SOCKET_H''@|$(HAVE_SYS_SOCKET_H)|g' \
+ -e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \
+ -e 's|@''HAVE_WS2TCPIP_H''@|$(HAVE_WS2TCPIP_H)|g' \
+ < $(srcdir)/socket_.h; \
+ } > $@-t
+ mv -f $@-t $@
+
+# We need the following in order to create <sys/stat.h> when the system
+# has one that is incomplete.
+sys/stat.h: stat_.h
+ @MKDIR_P@ sys
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''ABSOLUTE_SYS_STAT_H''@|$(ABSOLUTE_SYS_STAT_H)|g' \
+ < $(srcdir)/stat_.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <sys/time.h> when the system
+# doesn't have one that works with the given compiler.
+sys/time.h: sys_time_.h
+ @MKDIR_P@ sys
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_SYS_TIME_H''@/$(HAVE_SYS_TIME_H)/g' \
+ -e 's|@''ABSOLUTE_SYS_TIME_H''@|$(ABSOLUTE_SYS_TIME_H)|g' \
+ -e 's/@''REPLACE_GETTIMEOFDAY''@/$(REPLACE_GETTIMEOFDAY)/g' \
+ -e 's/@''HAVE_STRUCT_TIMEVAL''@/$(HAVE_STRUCT_TIMEVAL)/g' \
+ < $(srcdir)/sys_time_.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <time.h> when the system
+# doesn't have one that works with the given compiler.
+time.h: time_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@ABSOLUTE_TIME_H''@|$(ABSOLUTE_TIME_H)|g' \
+ -e 's|@REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \
+ -e 's|@REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \
+ -e 's|@REPLACE_STRPTIME''@|$(REPLACE_STRPTIME)|g' \
+ -e 's|@REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \
+ -e 's|@SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
+ -e 's|@TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
+ < $(srcdir)/time_.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create an empty placeholder for
+# <unistd.h> when the system doesn't have one.
+unistd.h: unistd_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
+ -e 's|@''ABSOLUTE_UNISTD_H''@|$(ABSOLUTE_UNISTD_H)|g' \
+ -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
+ -e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \
+ -e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \
+ -e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \
+ -e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \
+ -e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \
+ -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
+ -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
+ -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
+ -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
+ -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
+ -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
+ -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \
+ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
+ < $(srcdir)/unistd_.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <wchar.h> when the system
+# version does not work standalone.
+wchar.h: wchar_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''ABSOLUTE_WCHAR_H''@|$(ABSOLUTE_WCHAR_H)|g' \
+ < $(srcdir)/wchar_.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <wctype.h> when the system
+# doesn't have one that works with the given compiler.
+wctype.h: wctype_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
+ -e 's|@''ABSOLUTE_WCTYPE_H''@|$(ABSOLUTE_WCTYPE_H)|g' \
+ -e 's/@''HAVE_WCTYPE_CTMP_BUG''@/$(HAVE_WCTYPE_CTMP_BUG)/g' \
+ -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
+ < $(srcdir)/wctype_.h; \
+ } > $@-t
+ mv $@-t $@
+
+mostlyclean-local: mostlyclean-generic
+ @for dir in '' $(MOSTLYCLEANDIRS); do \
+ if test -n "$$dir" && test -d $$dir; then \
+ echo "rmdir $$dir"; rmdir $$dir; \
+ fi; \
+ done
+
+check: unit-test
+
+.PHONY: unit-test
+unit-test: t-fpending
+ ./t-fpending > /dev/null
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/TODO b/lib/TODO
new file mode 100644
index 0000000..4da5d0c
--- /dev/null
+++ b/lib/TODO
@@ -0,0 +1,40 @@
+Things to do to hash.c:
+
+Always use curly braces around statements in if/else/while/do/etc.
+that span more than a line -- even around multiline simple statements
+or single-line simple statements preceded by a comment line.
+
+Never have lines longer than 80 chars.
+
+Remove ^L characters. We don't want/need such crutches.
+Get a good (smart) pagination filter. I have one (a perl script)
+that usually does a decent job for me -- I called it something
+like stdc-print and think I sent you an early verison.
+
+I don't like the name `cursor'. I much prefer short names
+like `p' for index variables. I doubt I'll change all of them,
+but thought you should know why some will probably end up changing.
+
+#define USE_OBSTACK somewhere
+
+Fix this comment. Depending on system and application...
+Mention fragmentation.
+ +#if USE_OBSTACK
+ + /* Whenever obstacks are used, it is possible to allocate all overflowed
+ + entries into a single stack, so they all can be freed in a single
+ + operation. It is not clear if the speedup is worth the trouble. */
+ + struct obstack entry_stack;
+ +#endif
+
+
+assert (bucket_limit - bucket == n_buckets) ?
+
+remove.c: s/done/successful or ok
+
+
+-----
+Copyright (C) 1998 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without
+modification, are permitted provided the copyright notice
+and this notice are preserved.
diff --git a/lib/__fpending.c b/lib/__fpending.c
new file mode 100644
index 0000000..221aee6
--- /dev/null
+++ b/lib/__fpending.c
@@ -0,0 +1,30 @@
+/* __fpending.c -- return the number of pending output bytes on a stream
+ Copyright (C) 2000, 2004, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+
+#include "__fpending.h"
+
+/* Return the number of pending (aka buffered, unflushed)
+ bytes on the stream, FP, that is open for writing. */
+size_t
+__fpending (FILE *fp)
+{
+ return PENDING_OUTPUT_N_BYTES;
+}
diff --git a/lib/__fpending.h b/lib/__fpending.h
new file mode 100644
index 0000000..8a8aabc
--- /dev/null
+++ b/lib/__fpending.h
@@ -0,0 +1,34 @@
+/* Declare __fpending.
+
+ Copyright (C) 2000, 2003, 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written by Jim Meyering. */
+
+#include <stddef.h>
+#include <stdio.h>
+
+#ifndef HAVE_DECL___FPENDING
+"this configure-time declaration test was not run"
+#endif
+
+#if HAVE_DECL___FPENDING
+# if HAVE_STDIO_EXT_H
+# include <stdio_ext.h>
+# endif
+#else
+size_t __fpending (FILE *);
+#endif
diff --git a/lib/acl-internal.h b/lib/acl-internal.h
new file mode 100644
index 0000000..e224a78
--- /dev/null
+++ b/lib/acl-internal.h
@@ -0,0 +1,86 @@
+/* Internal implementation of access control lists.
+
+ Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written by Paul Eggert and Andreas Gruenbacher. */
+
+#include <config.h>
+
+#include "acl.h"
+
+#include <stdbool.h>
+#include <stdlib.h>
+
+#ifdef HAVE_ACL_LIBACL_H
+# include <acl/libacl.h>
+#endif
+
+#include "error.h"
+#include "quote.h"
+
+#include <errno.h>
+#ifndef ENOSYS
+# define ENOSYS (-1)
+#endif
+#ifndef ENOTSUP
+# define ENOTSUP (-1)
+#endif
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+#ifndef HAVE_FCHMOD
+# define HAVE_FCHMOD false
+# define fchmod(fd, mode) (-1)
+#endif
+
+#ifndef MIN_ACL_ENTRIES
+# define MIN_ACL_ENTRIES 4
+#endif
+
+/* POSIX 1003.1e (draft 17) */
+#ifndef HAVE_ACL_GET_FD
+# define HAVE_ACL_GET_FD false
+# define acl_get_fd(fd) (NULL)
+#endif
+
+/* POSIX 1003.1e (draft 17) */
+#ifndef HAVE_ACL_SET_FD
+# define HAVE_ACL_SET_FD false
+# define acl_set_fd(fd, acl) (-1)
+#endif
+
+/* Linux-specific */
+#ifndef HAVE_ACL_EXTENDED_FILE
+# define HAVE_ACL_EXTENDED_FILE false
+# define acl_extended_file(name) (-1)
+#endif
+
+/* Linux-specific */
+#ifndef HAVE_ACL_FROM_MODE
+# define HAVE_ACL_FROM_MODE false
+# define acl_from_mode(mode) (NULL)
+#endif
+
+#define ACL_NOT_WELL_SUPPORTED(Errno) \
+ ((Errno) == ENOTSUP || (Errno) == ENOSYS || (Errno) == EINVAL)
+
+/* Define a replacement for acl_entries if needed. */
+#if USE_ACL && HAVE_ACL_GET_FILE && HAVE_ACL_FREE && !HAVE_ACL_ENTRIES
+# define acl_entries rpl_acl_entries
+int acl_entries (acl_t);
+#endif
diff --git a/lib/acl.c b/lib/acl.c
new file mode 100644
index 0000000..84c595a
--- /dev/null
+++ b/lib/acl.c
@@ -0,0 +1,256 @@
+/* acl.c - access control lists
+
+ Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written by Paul Eggert and Andreas Gruenbacher. */
+
+#include <config.h>
+
+#include "acl.h"
+
+#include "acl-internal.h"
+
+/* If DESC is a valid file descriptor use fchmod to change the
+ file's mode to MODE on systems that have fchown. On systems
+ that don't have fchown and if DESC is invalid, use chown on
+ NAME instead. */
+
+int
+chmod_or_fchmod (const char *name, int desc, mode_t mode)
+{
+ if (HAVE_FCHMOD && desc != -1)
+ return fchmod (desc, mode);
+ else
+ return chmod (name, mode);
+}
+
+/* Copy access control lists from one file to another. If SOURCE_DESC is
+ a valid file descriptor, use file descriptor operations, else use
+ filename based operations on SRC_NAME. Likewise for DEST_DESC and
+ DEST_NAME.
+ If access control lists are not available, fchmod the target file to
+ MODE. Also sets the non-permission bits of the destination file
+ (S_ISUID, S_ISGID, S_ISVTX) to those from MODE if any are set.
+ System call return value semantics. */
+
+int
+copy_acl (const char *src_name, int source_desc, const char *dst_name,
+ int dest_desc, mode_t mode)
+{
+ int ret;
+
+#if USE_ACL && HAVE_ACL_GET_FILE && HAVE_ACL_SET_FILE && HAVE_ACL_FREE
+ /* POSIX 1003.1e (draft 17 -- abandoned) specific version. */
+
+ acl_t acl;
+ if (HAVE_ACL_GET_FD && source_desc != -1)
+ acl = acl_get_fd (source_desc);
+ else
+ acl = acl_get_file (src_name, ACL_TYPE_ACCESS);
+ if (acl == NULL)
+ {
+ if (ACL_NOT_WELL_SUPPORTED (errno))
+ return set_acl (dst_name, dest_desc, mode);
+ else
+ {
+ error (0, errno, "%s", quote (src_name));
+ return -1;
+ }
+ }
+
+ if (HAVE_ACL_SET_FD && dest_desc != -1)
+ ret = acl_set_fd (dest_desc, acl);
+ else
+ ret = acl_set_file (dst_name, ACL_TYPE_ACCESS, acl);
+ if (ret != 0)
+ {
+ int saved_errno = errno;
+
+ if (ACL_NOT_WELL_SUPPORTED (errno))
+ {
+ int n = acl_entries (acl);
+
+ acl_free (acl);
+ if (n == 3)
+ {
+ if (chmod_or_fchmod (dst_name, dest_desc, mode) != 0)
+ saved_errno = errno;
+ else
+ return 0;
+ }
+ else
+ chmod_or_fchmod (dst_name, dest_desc, mode);
+ }
+ else
+ {
+ acl_free (acl);
+ chmod_or_fchmod (dst_name, dest_desc, mode);
+ }
+ error (0, saved_errno, _("preserving permissions for %s"),
+ quote (dst_name));
+ return -1;
+ }
+ else
+ acl_free (acl);
+
+ if (mode & (S_ISUID | S_ISGID | S_ISVTX))
+ {
+ /* We did not call chmod so far, so the special bits have not yet
+ been set. */
+
+ if (chmod_or_fchmod (dst_name, dest_desc, mode) != 0)
+ {
+ error (0, errno, _("preserving permissions for %s"),
+ quote (dst_name));
+ return -1;
+ }
+ }
+
+ if (S_ISDIR (mode))
+ {
+ acl = acl_get_file (src_name, ACL_TYPE_DEFAULT);
+ if (acl == NULL)
+ {
+ error (0, errno, "%s", quote (src_name));
+ return -1;
+ }
+
+ if (acl_set_file (dst_name, ACL_TYPE_DEFAULT, acl))
+ {
+ error (0, errno, _("preserving permissions for %s"),
+ quote (dst_name));
+ acl_free (acl);
+ return -1;
+ }
+ else
+ acl_free (acl);
+ }
+ return 0;
+#else
+ ret = chmod_or_fchmod (dst_name, dest_desc, mode);
+ if (ret != 0)
+ error (0, errno, _("preserving permissions for %s"), quote (dst_name));
+ return ret;
+#endif
+}
+
+/* Set the access control lists of a file. If DESC is a valid file
+ descriptor, use file descriptor operations where available, else use
+ filename based operations on NAME. If access control lists are not
+ available, fchmod the target file to MODE. Also sets the
+ non-permission bits of the destination file (S_ISUID, S_ISGID, S_ISVTX)
+ to those from MODE if any are set. System call return value
+ semantics. */
+
+int
+set_acl (char const *name, int desc, mode_t mode)
+{
+#if USE_ACL && HAVE_ACL_SET_FILE && HAVE_ACL_FREE
+ /* POSIX 1003.1e draft 17 (abandoned) specific version. */
+
+ /* We must also have have_acl_from_text and acl_delete_def_file.
+ (acl_delete_def_file could be emulated with acl_init followed
+ by acl_set_file, but acl_set_file with an empty acl is
+ unspecified.) */
+
+# ifndef HAVE_ACL_FROM_TEXT
+# error Must have acl_from_text (see POSIX 1003.1e draft 17).
+# endif
+# ifndef HAVE_ACL_DELETE_DEF_FILE
+# error Must have acl_delete_def_file (see POSIX 1003.1e draft 17).
+# endif
+
+ acl_t acl;
+ int ret;
+
+ if (HAVE_ACL_FROM_MODE)
+ {
+ acl = acl_from_mode (mode);
+ if (!acl)
+ {
+ error (0, errno, "%s", quote (name));
+ return -1;
+ }
+ }
+ else
+ {
+ char acl_text[] = "u::---,g::---,o::---";
+
+ if (mode & S_IRUSR) acl_text[ 3] = 'r';
+ if (mode & S_IWUSR) acl_text[ 4] = 'w';
+ if (mode & S_IXUSR) acl_text[ 5] = 'x';
+ if (mode & S_IRGRP) acl_text[10] = 'r';
+ if (mode & S_IWGRP) acl_text[11] = 'w';
+ if (mode & S_IXGRP) acl_text[12] = 'x';
+ if (mode & S_IROTH) acl_text[17] = 'r';
+ if (mode & S_IWOTH) acl_text[18] = 'w';
+ if (mode & S_IXOTH) acl_text[19] = 'x';
+
+ acl = acl_from_text (acl_text);
+ if (!acl)
+ {
+ error (0, errno, "%s", quote (name));
+ return -1;
+ }
+ }
+ if (HAVE_ACL_SET_FD && desc != -1)
+ ret = acl_set_fd (desc, acl);
+ else
+ ret = acl_set_file (name, ACL_TYPE_ACCESS, acl);
+ if (ret != 0)
+ {
+ int saved_errno = errno;
+ acl_free (acl);
+
+ if (ACL_NOT_WELL_SUPPORTED (errno))
+ {
+ if (chmod_or_fchmod (name, desc, mode) != 0)
+ saved_errno = errno;
+ else
+ return 0;
+ }
+ error (0, saved_errno, _("setting permissions for %s"), quote (name));
+ return -1;
+ }
+ else
+ acl_free (acl);
+
+ if (S_ISDIR (mode) && acl_delete_def_file (name))
+ {
+ error (0, errno, _("setting permissions for %s"), quote (name));
+ return -1;
+ }
+
+ if (mode & (S_ISUID | S_ISGID | S_ISVTX))
+ {
+ /* We did not call chmod so far, so the special bits have not yet
+ been set. */
+
+ if (chmod_or_fchmod (name, desc, mode))
+ {
+ error (0, errno, _("preserving permissions for %s"), quote (name));
+ return -1;
+ }
+ }
+ return 0;
+#else
+ int ret = chmod_or_fchmod (name, desc, mode);
+ if (ret)
+ error (0, errno, _("setting permissions for %s"), quote (name));
+ return ret;
+#endif
+}
diff --git a/lib/acl.h b/lib/acl.h
new file mode 100644
index 0000000..18fb732
--- /dev/null
+++ b/lib/acl.h
@@ -0,0 +1,35 @@
+/* acl.c - access control lists
+
+ Copyright (C) 2002 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written by Paul Eggert. */
+
+#include <sys/types.h>
+
+#if HAVE_SYS_ACL_H
+# include <sys/acl.h>
+#endif
+#if defined HAVE_ACL && ! defined GETACLCNT && defined ACL_CNT
+# define GETACLCNT ACL_CNT
+#endif
+
+#include <sys/stat.h>
+
+int file_has_acl (char const *, struct stat const *);
+int copy_acl (char const *, int, char const *, int, mode_t);
+int set_acl (char const *, int, mode_t);
+int chmod_or_fchmod (char const *, int, mode_t);
diff --git a/lib/acl_entries.c b/lib/acl_entries.c
new file mode 100644
index 0000000..25c8bb8
--- /dev/null
+++ b/lib/acl_entries.c
@@ -0,0 +1,39 @@
+/* Return the number of entries in an ACL.
+
+ Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written by Paul Eggert and Andreas Gruenbacher. */
+
+#include <config.h>
+
+#include "acl-internal.h"
+
+/* Return the number of entries in ACL. */
+
+int
+acl_entries (acl_t acl)
+{
+ char *t;
+ int entries = 0;
+ char *text = acl_to_text (acl, NULL);
+ if (! text)
+ return -1;
+ for (t = text; *t; t++)
+ entries += (*t == '\n');
+ acl_free (text);
+ return entries;
+}
diff --git a/lib/alloca.c b/lib/alloca.c
new file mode 100644
index 0000000..3a1f4e2
--- /dev/null
+++ b/lib/alloca.c
@@ -0,0 +1,489 @@
+/* alloca.c -- allocate automatically reclaimed memory
+ (Mostly) portable public-domain implementation -- D A Gwyn
+
+ This implementation of the PWB library alloca function,
+ which is used to allocate space off the run-time stack so
+ that it is automatically reclaimed upon procedure exit,
+ was inspired by discussions with J. Q. Johnson of Cornell.
+ J.Otto Tennant <jot@cray.com> contributed the Cray support.
+
+ There are some preprocessor constants that can
+ be defined when compiling for your specific system, for
+ improved efficiency; however, the defaults should be okay.
+
+ The general concept of this implementation is to keep
+ track of all alloca-allocated blocks, and reclaim any
+ that are found to be deeper in the stack than the current
+ invocation. This heuristic does not reclaim storage as
+ soon as it becomes invalid, but it will do so eventually.
+
+ As a special case, alloca(0) reclaims storage without
+ allocating any. It is a good idea to use alloca(0) in
+ your main control loop, etc. to force garbage collection. */
+
+#include <config.h>
+
+#include <alloca.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+#ifdef emacs
+# include "lisp.h"
+# include "blockinput.h"
+# ifdef EMACS_FREE
+# undef free
+# define free EMACS_FREE
+# endif
+#else
+# define memory_full() abort ()
+#endif
+
+/* If compiling with GCC 2, this file's not needed. */
+#if !defined (__GNUC__) || __GNUC__ < 2
+
+/* If someone has defined alloca as a macro,
+ there must be some other way alloca is supposed to work. */
+# ifndef alloca
+
+# ifdef emacs
+# ifdef static
+/* actually, only want this if static is defined as ""
+ -- this is for usg, in which emacs must undefine static
+ in order to make unexec workable
+ */
+# ifndef STACK_DIRECTION
+you
+lose
+-- must know STACK_DIRECTION at compile-time
+/* Using #error here is not wise since this file should work for
+ old and obscure compilers. */
+# endif /* STACK_DIRECTION undefined */
+# endif /* static */
+# endif /* emacs */
+
+/* If your stack is a linked list of frames, you have to
+ provide an "address metric" ADDRESS_FUNCTION macro. */
+
+# if defined (CRAY) && defined (CRAY_STACKSEG_END)
+long i00afunc ();
+# define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg))
+# else
+# define ADDRESS_FUNCTION(arg) &(arg)
+# endif
+
+/* Define STACK_DIRECTION if you know the direction of stack
+ growth for your system; otherwise it will be automatically
+ deduced at run-time.
+
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+
+# ifndef STACK_DIRECTION
+# define STACK_DIRECTION 0 /* Direction unknown. */
+# endif
+
+# if STACK_DIRECTION != 0
+
+# define STACK_DIR STACK_DIRECTION /* Known at compile-time. */
+
+# else /* STACK_DIRECTION == 0; need run-time code. */
+
+static int stack_dir; /* 1 or -1 once known. */
+# define STACK_DIR stack_dir
+
+static void
+find_stack_direction (void)
+{
+ static char *addr = NULL; /* Address of first `dummy', once known. */
+ auto char dummy; /* To get stack address. */
+
+ if (addr == NULL)
+ { /* Initial entry. */
+ addr = ADDRESS_FUNCTION (dummy);
+
+ find_stack_direction (); /* Recurse once. */
+ }
+ else
+ {
+ /* Second entry. */
+ if (ADDRESS_FUNCTION (dummy) > addr)
+ stack_dir = 1; /* Stack grew upward. */
+ else
+ stack_dir = -1; /* Stack grew downward. */
+ }
+}
+
+# endif /* STACK_DIRECTION == 0 */
+
+/* An "alloca header" is used to:
+ (a) chain together all alloca'ed blocks;
+ (b) keep track of stack depth.
+
+ It is very important that sizeof(header) agree with malloc
+ alignment chunk size. The following default should work okay. */
+
+# ifndef ALIGN_SIZE
+# define ALIGN_SIZE sizeof(double)
+# endif
+
+typedef union hdr
+{
+ char align[ALIGN_SIZE]; /* To force sizeof(header). */
+ struct
+ {
+ union hdr *next; /* For chaining headers. */
+ char *deep; /* For stack depth measure. */
+ } h;
+} header;
+
+static header *last_alloca_header = NULL; /* -> last alloca header. */
+
+/* Return a pointer to at least SIZE bytes of storage,
+ which will be automatically reclaimed upon exit from
+ the procedure that called alloca. Originally, this space
+ was supposed to be taken from the current stack frame of the
+ caller, but that method cannot be made to work for some
+ implementations of C, for example under Gould's UTX/32. */
+
+void *
+alloca (size_t size)
+{
+ auto char probe; /* Probes stack depth: */
+ register char *depth = ADDRESS_FUNCTION (probe);
+
+# if STACK_DIRECTION == 0
+ if (STACK_DIR == 0) /* Unknown growth direction. */
+ find_stack_direction ();
+# endif
+
+ /* Reclaim garbage, defined as all alloca'd storage that
+ was allocated from deeper in the stack than currently. */
+
+ {
+ register header *hp; /* Traverses linked list. */
+
+# ifdef emacs
+ BLOCK_INPUT;
+# endif
+
+ for (hp = last_alloca_header; hp != NULL;)
+ if ((STACK_DIR > 0 && hp->h.deep > depth)
+ || (STACK_DIR < 0 && hp->h.deep < depth))
+ {
+ register header *np = hp->h.next;
+
+ free (hp); /* Collect garbage. */
+
+ hp = np; /* -> next header. */
+ }
+ else
+ break; /* Rest are not deeper. */
+
+ last_alloca_header = hp; /* -> last valid storage. */
+
+# ifdef emacs
+ UNBLOCK_INPUT;
+# endif
+ }
+
+ if (size == 0)
+ return NULL; /* No allocation required. */
+
+ /* Allocate combined header + user data storage. */
+
+ {
+ /* Address of header. */
+ register header *new;
+
+ size_t combined_size = sizeof (header) + size;
+ if (combined_size < sizeof (header))
+ memory_full ();
+
+ new = malloc (combined_size);
+
+ if (! new)
+ memory_full ();
+
+ new->h.next = last_alloca_header;
+ new->h.deep = depth;
+
+ last_alloca_header = new;
+
+ /* User storage begins just after header. */
+
+ return (void *) (new + 1);
+ }
+}
+
+# if defined (CRAY) && defined (CRAY_STACKSEG_END)
+
+# ifdef DEBUG_I00AFUNC
+# include <stdio.h>
+# endif
+
+# ifndef CRAY_STACK
+# define CRAY_STACK
+# ifndef CRAY2
+/* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */
+struct stack_control_header
+ {
+ long shgrow:32; /* Number of times stack has grown. */
+ long shaseg:32; /* Size of increments to stack. */
+ long shhwm:32; /* High water mark of stack. */
+ long shsize:32; /* Current size of stack (all segments). */
+ };
+
+/* The stack segment linkage control information occurs at
+ the high-address end of a stack segment. (The stack
+ grows from low addresses to high addresses.) The initial
+ part of the stack segment linkage control information is
+ 0200 (octal) words. This provides for register storage
+ for the routine which overflows the stack. */
+
+struct stack_segment_linkage
+ {
+ long ss[0200]; /* 0200 overflow words. */
+ long sssize:32; /* Number of words in this segment. */
+ long ssbase:32; /* Offset to stack base. */
+ long:32;
+ long sspseg:32; /* Offset to linkage control of previous
+ segment of stack. */
+ long:32;
+ long sstcpt:32; /* Pointer to task common address block. */
+ long sscsnm; /* Private control structure number for
+ microtasking. */
+ long ssusr1; /* Reserved for user. */
+ long ssusr2; /* Reserved for user. */
+ long sstpid; /* Process ID for pid based multi-tasking. */
+ long ssgvup; /* Pointer to multitasking thread giveup. */
+ long sscray[7]; /* Reserved for Cray Research. */
+ long ssa0;
+ long ssa1;
+ long ssa2;
+ long ssa3;
+ long ssa4;
+ long ssa5;
+ long ssa6;
+ long ssa7;
+ long sss0;
+ long sss1;
+ long sss2;
+ long sss3;
+ long sss4;
+ long sss5;
+ long sss6;
+ long sss7;
+ };
+
+# else /* CRAY2 */
+/* The following structure defines the vector of words
+ returned by the STKSTAT library routine. */
+struct stk_stat
+ {
+ long now; /* Current total stack size. */
+ long maxc; /* Amount of contiguous space which would
+ be required to satisfy the maximum
+ stack demand to date. */
+ long high_water; /* Stack high-water mark. */
+ long overflows; /* Number of stack overflow ($STKOFEN) calls. */
+ long hits; /* Number of internal buffer hits. */
+ long extends; /* Number of block extensions. */
+ long stko_mallocs; /* Block allocations by $STKOFEN. */
+ long underflows; /* Number of stack underflow calls ($STKRETN). */
+ long stko_free; /* Number of deallocations by $STKRETN. */
+ long stkm_free; /* Number of deallocations by $STKMRET. */
+ long segments; /* Current number of stack segments. */
+ long maxs; /* Maximum number of stack segments so far. */
+ long pad_size; /* Stack pad size. */
+ long current_address; /* Current stack segment address. */
+ long current_size; /* Current stack segment size. This
+ number is actually corrupted by STKSTAT to
+ include the fifteen word trailer area. */
+ long initial_address; /* Address of initial segment. */
+ long initial_size; /* Size of initial segment. */
+ };
+
+/* The following structure describes the data structure which trails
+ any stack segment. I think that the description in 'asdef' is
+ out of date. I only describe the parts that I am sure about. */
+
+struct stk_trailer
+ {
+ long this_address; /* Address of this block. */
+ long this_size; /* Size of this block (does not include
+ this trailer). */
+ long unknown2;
+ long unknown3;
+ long link; /* Address of trailer block of previous
+ segment. */
+ long unknown5;
+ long unknown6;
+ long unknown7;
+ long unknown8;
+ long unknown9;
+ long unknown10;
+ long unknown11;
+ long unknown12;
+ long unknown13;
+ long unknown14;
+ };
+
+# endif /* CRAY2 */
+# endif /* not CRAY_STACK */
+
+# ifdef CRAY2
+/* Determine a "stack measure" for an arbitrary ADDRESS.
+ I doubt that "lint" will like this much. */
+
+static long
+i00afunc (long *address)
+{
+ struct stk_stat status;
+ struct stk_trailer *trailer;
+ long *block, size;
+ long result = 0;
+
+ /* We want to iterate through all of the segments. The first
+ step is to get the stack status structure. We could do this
+ more quickly and more directly, perhaps, by referencing the
+ $LM00 common block, but I know that this works. */
+
+ STKSTAT (&status);
+
+ /* Set up the iteration. */
+
+ trailer = (struct stk_trailer *) (status.current_address
+ + status.current_size
+ - 15);
+
+ /* There must be at least one stack segment. Therefore it is
+ a fatal error if "trailer" is null. */
+
+ if (trailer == 0)
+ abort ();
+
+ /* Discard segments that do not contain our argument address. */
+
+ while (trailer != 0)
+ {
+ block = (long *) trailer->this_address;
+ size = trailer->this_size;
+ if (block == 0 || size == 0)
+ abort ();
+ trailer = (struct stk_trailer *) trailer->link;
+ if ((block <= address) && (address < (block + size)))
+ break;
+ }
+
+ /* Set the result to the offset in this segment and add the sizes
+ of all predecessor segments. */
+
+ result = address - block;
+
+ if (trailer == 0)
+ {
+ return result;
+ }
+
+ do
+ {
+ if (trailer->this_size <= 0)
+ abort ();
+ result += trailer->this_size;
+ trailer = (struct stk_trailer *) trailer->link;
+ }
+ while (trailer != 0);
+
+ /* We are done. Note that if you present a bogus address (one
+ not in any segment), you will get a different number back, formed
+ from subtracting the address of the first block. This is probably
+ not what you want. */
+
+ return (result);
+}
+
+# else /* not CRAY2 */
+/* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP.
+ Determine the number of the cell within the stack,
+ given the address of the cell. The purpose of this
+ routine is to linearize, in some sense, stack addresses
+ for alloca. */
+
+static long
+i00afunc (long address)
+{
+ long stkl = 0;
+
+ long size, pseg, this_segment, stack;
+ long result = 0;
+
+ struct stack_segment_linkage *ssptr;
+
+ /* Register B67 contains the address of the end of the
+ current stack segment. If you (as a subprogram) store
+ your registers on the stack and find that you are past
+ the contents of B67, you have overflowed the segment.
+
+ B67 also points to the stack segment linkage control
+ area, which is what we are really interested in. */
+
+ stkl = CRAY_STACKSEG_END ();
+ ssptr = (struct stack_segment_linkage *) stkl;
+
+ /* If one subtracts 'size' from the end of the segment,
+ one has the address of the first word of the segment.
+
+ If this is not the first segment, 'pseg' will be
+ nonzero. */
+
+ pseg = ssptr->sspseg;
+ size = ssptr->sssize;
+
+ this_segment = stkl - size;
+
+ /* It is possible that calling this routine itself caused
+ a stack overflow. Discard stack segments which do not
+ contain the target address. */
+
+ while (!(this_segment <= address && address <= stkl))
+ {
+# ifdef DEBUG_I00AFUNC
+ fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl);
+# endif
+ if (pseg == 0)
+ break;
+ stkl = stkl - pseg;
+ ssptr = (struct stack_segment_linkage *) stkl;
+ size = ssptr->sssize;
+ pseg = ssptr->sspseg;
+ this_segment = stkl - size;
+ }
+
+ result = address - this_segment;
+
+ /* If you subtract pseg from the current end of the stack,
+ you get the address of the previous stack segment's end.
+ This seems a little convoluted to me, but I'll bet you save
+ a cycle somewhere. */
+
+ while (pseg != 0)
+ {
+# ifdef DEBUG_I00AFUNC
+ fprintf (stderr, "%011o %011o\n", pseg, size);
+# endif
+ stkl = stkl - pseg;
+ ssptr = (struct stack_segment_linkage *) stkl;
+ size = ssptr->sssize;
+ pseg = ssptr->sspseg;
+ result += size;
+ }
+ return (result);
+}
+
+# endif /* not CRAY2 */
+# endif /* CRAY */
+
+# endif /* no alloca */
+#endif /* not GCC version 2 */
diff --git a/lib/alloca_.h b/lib/alloca_.h
new file mode 100644
index 0000000..dd0b3e9
--- /dev/null
+++ b/lib/alloca_.h
@@ -0,0 +1,54 @@
+/* Memory allocation on the stack.
+
+ Copyright (C) 1995, 1999, 2001, 2002, 2003, 2004, 2006 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ USA. */
+
+/* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H
+ means there is a real alloca function. */
+#ifndef _GNULIB_ALLOCA_H
+# define _GNULIB_ALLOCA_H
+
+/* alloca (N) returns a pointer to N bytes of memory
+ allocated on the stack, which will last until the function returns.
+ Use of alloca should be avoided:
+ - inside arguments of function calls - undefined behaviour,
+ - in inline functions - the allocation may actually last until the
+ calling function returns,
+ - for huge N (say, N >= 65536) - you never know how large (or small)
+ the stack is, and when the stack cannot fulfill the memory allocation
+ request, the program just crashes.
+ */
+
+#ifndef alloca
+# ifdef __GNUC__
+# define alloca __builtin_alloca
+# elif defined _AIX
+# define alloca __alloca
+# elif defined _MSC_VER
+# include <malloc.h>
+# define alloca _alloca
+# else
+# include <stddef.h>
+# ifdef __cplusplus
+extern "C"
+# endif
+void *alloca (size_t);
+# endif
+#endif
+
+#endif /* _GNULIB_ALLOCA_H */
diff --git a/lib/allocsa.c b/lib/allocsa.c
new file mode 100644
index 0000000..97652e6
--- /dev/null
+++ b/lib/allocsa.c
@@ -0,0 +1,137 @@
+/* Safe automatic memory allocation.
+ Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2003.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#include "allocsa.h"
+
+/* The speed critical point in this file is freesa() applied to an alloca()
+ result: it must be fast, to match the speed of alloca(). The speed of
+ mallocsa() and freesa() in the other case are not critical, because they
+ are only invoked for big memory sizes. */
+
+#if HAVE_ALLOCA
+
+/* Store the mallocsa() results in a hash table. This is needed to reliably
+ distinguish a mallocsa() result and an alloca() result.
+
+ Although it is possible that the same pointer is returned by alloca() and
+ by mallocsa() at different times in the same application, it does not lead
+ to a bug in freesa(), because:
+ - Before a pointer returned by alloca() can point into malloc()ed memory,
+ the function must return, and once this has happened the programmer must
+ not call freesa() on it anyway.
+ - Before a pointer returned by mallocsa() can point into the stack, it
+ must be freed. The only function that can free it is freesa(), and
+ when freesa() frees it, it also removes it from the hash table. */
+
+#define MAGIC_NUMBER 0x1415fb4a
+#define MAGIC_SIZE sizeof (int)
+/* This is how the header info would look like without any alignment
+ considerations. */
+struct preliminary_header { void *next; char room[MAGIC_SIZE]; };
+/* But the header's size must be a multiple of sa_alignment_max. */
+#define HEADER_SIZE \
+ (((sizeof (struct preliminary_header) + sa_alignment_max - 1) / sa_alignment_max) * sa_alignment_max)
+struct header { void *next; char room[HEADER_SIZE - sizeof (struct preliminary_header) + MAGIC_SIZE]; };
+/* Verify that HEADER_SIZE == sizeof (struct header). */
+typedef int verify1[2 * (HEADER_SIZE == sizeof (struct header)) - 1];
+/* We make the hash table quite big, so that during lookups the probability
+ of empty hash buckets is quite high. There is no need to make the hash
+ table resizable, because when the hash table gets filled so much that the
+ lookup becomes slow, it means that the application has memory leaks. */
+#define HASH_TABLE_SIZE 257
+static void * mallocsa_results[HASH_TABLE_SIZE];
+
+#endif
+
+void *
+mallocsa (size_t n)
+{
+#if HAVE_ALLOCA
+ /* Allocate one more word, that serves as an indicator for malloc()ed
+ memory, so that freesa() of an alloca() result is fast. */
+ size_t nplus = n + HEADER_SIZE;
+
+ if (nplus >= n)
+ {
+ char *p = (char *) malloc (nplus);
+
+ if (p != NULL)
+ {
+ size_t slot;
+
+ p += HEADER_SIZE;
+
+ /* Put a magic number into the indicator word. */
+ ((int *) p)[-1] = MAGIC_NUMBER;
+
+ /* Enter p into the hash table. */
+ slot = (unsigned long) p % HASH_TABLE_SIZE;
+ ((struct header *) (p - HEADER_SIZE))->next = mallocsa_results[slot];
+ mallocsa_results[slot] = p;
+
+ return p;
+ }
+ }
+ /* Out of memory. */
+ return NULL;
+#else
+# if !MALLOC_0_IS_NONNULL
+ if (n == 0)
+ n = 1;
+# endif
+ return malloc (n);
+#endif
+}
+
+#if HAVE_ALLOCA
+void
+freesa (void *p)
+{
+ /* mallocsa() may have returned NULL. */
+ if (p != NULL)
+ {
+ /* Attempt to quickly distinguish the mallocsa() result - which has
+ a magic indicator word - and the alloca() result - which has an
+ uninitialized indicator word. It is for this test that sa_increment
+ additional bytes are allocated in the alloca() case. */
+ if (((int *) p)[-1] == MAGIC_NUMBER)
+ {
+ /* Looks like a mallocsa() result. To see whether it really is one,
+ perform a lookup in the hash table. */
+ size_t slot = (unsigned long) p % HASH_TABLE_SIZE;
+ void **chain = &mallocsa_results[slot];
+ for (; *chain != NULL;)
+ {
+ if (*chain == p)
+ {
+ /* Found it. Remove it from the hash table and free it. */
+ char *p_begin = (char *) p - HEADER_SIZE;
+ *chain = ((struct header *) p_begin)->next;
+ free (p_begin);
+ return;
+ }
+ chain = &((struct header *) ((char *) *chain - HEADER_SIZE))->next;
+ }
+ }
+ /* At this point, we know it was not a mallocsa() result. */
+ }
+}
+#endif
diff --git a/lib/allocsa.h b/lib/allocsa.h
new file mode 100644
index 0000000..3337110
--- /dev/null
+++ b/lib/allocsa.h
@@ -0,0 +1,128 @@
+/* Safe automatic memory allocation.
+ Copyright (C) 2003-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2003.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _ALLOCSA_H
+#define _ALLOCSA_H
+
+#include <alloca.h>
+#include <stddef.h>
+#include <stdlib.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* safe_alloca(N) is equivalent to alloca(N) when it is safe to call
+ alloca(N); otherwise it returns NULL. It either returns N bytes of
+ memory allocated on the stack, that lasts until the function returns,
+ or NULL.
+ Use of safe_alloca should be avoided:
+ - inside arguments of function calls - undefined behaviour,
+ - in inline functions - the allocation may actually last until the
+ calling function returns.
+*/
+#if HAVE_ALLOCA
+/* The OS usually guarantees only one guard page at the bottom of the stack,
+ and a page size can be as small as 4096 bytes. So we cannot safely
+ allocate anything larger than 4096 bytes. Also care for the possibility
+ of a few compiler-allocated temporary stack slots.
+ This must be a macro, not an inline function. */
+# define safe_alloca(N) ((N) < 4032 ? alloca (N) : NULL)
+#else
+# define safe_alloca(N) ((N), NULL)
+#endif
+
+/* allocsa(N) is a safe variant of alloca(N). It allocates N bytes of
+ memory allocated on the stack, that must be freed using freesa() before
+ the function returns. Upon failure, it returns NULL. */
+#if HAVE_ALLOCA
+# define allocsa(N) \
+ ((N) < 4032 - sa_increment \
+ ? (void *) ((char *) alloca ((N) + sa_increment) + sa_increment) \
+ : mallocsa (N))
+#else
+# define allocsa(N) \
+ mallocsa (N)
+#endif
+extern void * mallocsa (size_t n);
+
+/* Free a block of memory allocated through allocsa(). */
+#if HAVE_ALLOCA
+extern void freesa (void *p);
+#else
+# define freesa free
+#endif
+
+/* Maybe we should also define a variant
+ nallocsa (size_t n, size_t s) - behaves like allocsa (n * s)
+ If this would be useful in your application. please speak up. */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/* ------------------- Auxiliary, non-public definitions ------------------- */
+
+/* Determine the alignment of a type at compile time. */
+#if defined __GNUC__
+# define sa_alignof __alignof__
+#elif defined __cplusplus
+ template <class type> struct sa_alignof_helper { char __slot1; type __slot2; };
+# define sa_alignof(type) offsetof (sa_alignof_helper<type>, __slot2)
+#elif defined __hpux
+ /* Work around a HP-UX 10.20 cc bug with enums constants defined as offsetof
+ values. */
+# define sa_alignof(type) (sizeof (type) <= 4 ? 4 : 8)
+#elif defined _AIX
+ /* Work around an AIX 3.2.5 xlc bug with enums constants defined as offsetof
+ values. */
+# define sa_alignof(type) (sizeof (type) <= 4 ? 4 : 8)
+#else
+# define sa_alignof(type) offsetof (struct { char __slot1; type __slot2; }, __slot2)
+#endif
+
+enum
+{
+/* The desired alignment of memory allocations is the maximum alignment
+ among all elementary types. */
+ sa_alignment_long = sa_alignof (long),
+ sa_alignment_double = sa_alignof (double),
+#if HAVE_LONG_LONG_INT
+ sa_alignment_longlong = sa_alignof (long long),
+#endif
+#if HAVE_LONG_DOUBLE
+ sa_alignment_longdouble = sa_alignof (long double),
+#endif
+ sa_alignment_max = ((sa_alignment_long - 1) | (sa_alignment_double - 1)
+#if HAVE_LONG_LONG_INT
+ | (sa_alignment_longlong - 1)
+#endif
+#if HAVE_LONG_DOUBLE
+ | (sa_alignment_longdouble - 1)
+#endif
+ ) + 1,
+/* The increment that guarantees room for a magic word must be >= sizeof (int)
+ and a multiple of sa_alignment_max. */
+ sa_increment = ((sizeof (int) + sa_alignment_max - 1) / sa_alignment_max) * sa_alignment_max
+};
+
+#endif /* _ALLOCSA_H */
diff --git a/lib/allocsa.valgrind b/lib/allocsa.valgrind
new file mode 100644
index 0000000..f4c77d6
--- /dev/null
+++ b/lib/allocsa.valgrind
@@ -0,0 +1,7 @@
+# Suppress a valgrind message about use of uninitialized memory in freesa().
+# This use is OK because it provides only a speedup.
+{
+ freesa
+ Memcheck:Cond
+ fun:freesa
+}
diff --git a/lib/argmatch.c b/lib/argmatch.c
new file mode 100644
index 0000000..72d9248
--- /dev/null
+++ b/lib/argmatch.c
@@ -0,0 +1,278 @@
+/* argmatch.c -- find a match for a string in an array
+
+ Copyright (C) 1990, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David MacKenzie <djm@ai.mit.edu>
+ Modified by Akim Demaille <demaille@inf.enst.fr> */
+
+#include <config.h>
+
+/* Specification. */
+#include "argmatch.h"
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+#include "error.h"
+#include "quotearg.h"
+#include "quote.h"
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+/* When reporting an invalid argument, show nonprinting characters
+ by using the quoting style ARGMATCH_QUOTING_STYLE. Do not use
+ literal_quoting_style. */
+#ifndef ARGMATCH_QUOTING_STYLE
+# define ARGMATCH_QUOTING_STYLE locale_quoting_style
+#endif
+
+/* Non failing version of argmatch call this function after failing. */
+#ifndef ARGMATCH_DIE
+# include "exitfail.h"
+# define ARGMATCH_DIE exit (exit_failure)
+#endif
+
+#ifdef ARGMATCH_DIE_DECL
+ARGMATCH_DIE_DECL;
+#endif
+
+static void
+__argmatch_die (void)
+{
+ ARGMATCH_DIE;
+}
+
+/* Used by XARGMATCH and XARGCASEMATCH. See description in argmatch.h.
+ Default to __argmatch_die, but allow caller to change this at run-time. */
+argmatch_exit_fn argmatch_die = __argmatch_die;
+
+
+/* If ARG is an unambiguous match for an element of the
+ NULL-terminated array ARGLIST, return the index in ARGLIST
+ of the matched element, else -1 if it does not match any element
+ or -2 if it is ambiguous (is a prefix of more than one element).
+
+ If VALLIST is none null, use it to resolve ambiguities limited to
+ synonyms, i.e., for
+ "yes", "yop" -> 0
+ "no", "nope" -> 1
+ "y" is a valid argument, for `0', and "n" for `1'. */
+
+ptrdiff_t
+argmatch (const char *arg, const char *const *arglist,
+ const char *vallist, size_t valsize)
+{
+ size_t i; /* Temporary index in ARGLIST. */
+ size_t arglen; /* Length of ARG. */
+ ptrdiff_t matchind = -1; /* Index of first nonexact match. */
+ bool ambiguous = false; /* If true, multiple nonexact match(es). */
+
+ arglen = strlen (arg);
+
+ /* Test all elements for either exact match or abbreviated matches. */
+ for (i = 0; arglist[i]; i++)
+ {
+ if (!strncmp (arglist[i], arg, arglen))
+ {
+ if (strlen (arglist[i]) == arglen)
+ /* Exact match found. */
+ return i;
+ else if (matchind == -1)
+ /* First nonexact match found. */
+ matchind = i;
+ else
+ {
+ /* Second nonexact match found. */
+ if (vallist == NULL
+ || memcmp (vallist + valsize * matchind,
+ vallist + valsize * i, valsize))
+ {
+ /* There is a real ambiguity, or we could not
+ disambiguate. */
+ ambiguous = true;
+ }
+ }
+ }
+ }
+ if (ambiguous)
+ return -2;
+ else
+ return matchind;
+}
+
+/* Error reporting for argmatch.
+ CONTEXT is a description of the type of entity that was being matched.
+ VALUE is the invalid value that was given.
+ PROBLEM is the return value from argmatch. */
+
+void
+argmatch_invalid (const char *context, const char *value, ptrdiff_t problem)
+{
+ char const *format = (problem == -1
+ ? _("invalid argument %s for %s")
+ : _("ambiguous argument %s for %s"));
+
+ error (0, 0, format, quotearg_n_style (0, ARGMATCH_QUOTING_STYLE, value),
+ quote_n (1, context));
+}
+
+/* List the valid arguments for argmatch.
+ ARGLIST is the same as in argmatch.
+ VALLIST is a pointer to an array of values.
+ VALSIZE is the size of the elements of VALLIST */
+void
+argmatch_valid (const char *const *arglist,
+ const char *vallist, size_t valsize)
+{
+ size_t i;
+ const char *last_val = NULL;
+
+ /* We try to put synonyms on the same line. The assumption is that
+ synonyms follow each other */
+ fprintf (stderr, _("Valid arguments are:"));
+ for (i = 0; arglist[i]; i++)
+ if ((i == 0)
+ || memcmp (last_val, vallist + valsize * i, valsize))
+ {
+ fprintf (stderr, "\n - `%s'", arglist[i]);
+ last_val = vallist + valsize * i;
+ }
+ else
+ {
+ fprintf (stderr, ", `%s'", arglist[i]);
+ }
+ putc ('\n', stderr);
+}
+
+/* Never failing versions of the previous functions.
+
+ CONTEXT is the context for which argmatch is called (e.g.,
+ "--version-control", or "$VERSION_CONTROL" etc.). Upon failure,
+ calls the (supposed never to return) function EXIT_FN. */
+
+ptrdiff_t
+__xargmatch_internal (const char *context,
+ const char *arg, const char *const *arglist,
+ const char *vallist, size_t valsize,
+ argmatch_exit_fn exit_fn)
+{
+ ptrdiff_t res = argmatch (arg, arglist, vallist, valsize);
+ if (res >= 0)
+ /* Success. */
+ return res;
+
+ /* We failed. Explain why. */
+ argmatch_invalid (context, arg, res);
+ argmatch_valid (arglist, vallist, valsize);
+ (*exit_fn) ();
+
+ return -1; /* To please the compilers. */
+}
+
+/* Look for VALUE in VALLIST, an array of objects of size VALSIZE and
+ return the first corresponding argument in ARGLIST */
+const char *
+argmatch_to_argument (const char *value,
+ const char *const *arglist,
+ const char *vallist, size_t valsize)
+{
+ size_t i;
+
+ for (i = 0; arglist[i]; i++)
+ if (!memcmp (value, vallist + valsize * i, valsize))
+ return arglist[i];
+ return NULL;
+}
+
+#ifdef TEST
+/*
+ * Based on "getversion.c" by David MacKenzie <djm@gnu.ai.mit.edu>
+ */
+char *program_name;
+
+/* When to make backup files. */
+enum backup_type
+{
+ /* Never make backups. */
+ no_backups,
+
+ /* Make simple backups of every file. */
+ simple_backups,
+
+ /* Make numbered backups of files that already have numbered backups,
+ and simple backups of the others. */
+ numbered_existing_backups,
+
+ /* Make numbered backups of every file. */
+ numbered_backups
+};
+
+/* Two tables describing arguments (keys) and their corresponding
+ values */
+static const char *const backup_args[] =
+{
+ "no", "none", "off",
+ "simple", "never",
+ "existing", "nil",
+ "numbered", "t",
+ 0
+};
+
+static const enum backup_type backup_vals[] =
+{
+ no_backups, no_backups, no_backups,
+ simple_backups, simple_backups,
+ numbered_existing_backups, numbered_existing_backups,
+ numbered_backups, numbered_backups
+};
+
+int
+main (int argc, const char *const *argv)
+{
+ const char *cp;
+ enum backup_type backup_type = no_backups;
+
+ program_name = (char *) argv[0];
+
+ if (argc > 2)
+ {
+ fprintf (stderr, "Usage: %s [VERSION_CONTROL]\n", program_name);
+ exit (1);
+ }
+
+ if ((cp = getenv ("VERSION_CONTROL")))
+ backup_type = XARGMATCH ("$VERSION_CONTROL", cp,
+ backup_args, backup_vals);
+
+ if (argc == 2)
+ backup_type = XARGMATCH (program_name, argv[1],
+ backup_args, backup_vals);
+
+ printf ("The version control is `%s'\n",
+ ARGMATCH_TO_ARGUMENT (backup_type, backup_args, backup_vals));
+
+ return 0;
+}
+#endif
diff --git a/lib/argmatch.h b/lib/argmatch.h
new file mode 100644
index 0000000..f2dfe59
--- /dev/null
+++ b/lib/argmatch.h
@@ -0,0 +1,103 @@
+/* argmatch.h -- definitions and prototypes for argmatch.c
+
+ Copyright (C) 1990, 1998, 1999, 2001, 2002, 2004, 2005 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David MacKenzie <djm@ai.mit.edu>
+ Modified by Akim Demaille <demaille@inf.enst.fr> */
+
+#ifndef ARGMATCH_H_
+# define ARGMATCH_H_ 1
+
+# include <stddef.h>
+
+# include "verify.h"
+
+# define ARRAY_CARDINALITY(Array) (sizeof (Array) / sizeof *(Array))
+
+/* Assert there are as many real arguments as there are values
+ (argument list ends with a NULL guard). */
+
+# define ARGMATCH_VERIFY(Arglist, Vallist) \
+ verify (ARRAY_CARDINALITY (Arglist) == ARRAY_CARDINALITY (Vallist) + 1)
+
+/* Return the index of the element of ARGLIST (NULL terminated) that
+ matches with ARG. If VALLIST is not NULL, then use it to resolve
+ false ambiguities (i.e., different matches of ARG but corresponding
+ to the same values in VALLIST). */
+
+ptrdiff_t argmatch (char const *arg, char const *const *arglist,
+ char const *vallist, size_t valsize);
+
+# define ARGMATCH(Arg, Arglist, Vallist) \
+ argmatch (Arg, Arglist, (char const *) (Vallist), sizeof *(Vallist))
+
+/* xargmatch calls this function when it fails. This function should not
+ return. By default, this is a function that calls ARGMATCH_DIE which
+ in turn defaults to `exit (exit_failure)'. */
+typedef void (*argmatch_exit_fn) (void);
+extern argmatch_exit_fn argmatch_die;
+
+/* Report on stderr why argmatch failed. Report correct values. */
+
+void argmatch_invalid (char const *context, char const *value,
+ ptrdiff_t problem);
+
+/* Left for compatibility with the old name invalid_arg */
+
+# define invalid_arg(Context, Value, Problem) \
+ argmatch_invalid (Context, Value, Problem)
+
+
+
+/* Report on stderr the list of possible arguments. */
+
+void argmatch_valid (char const *const *arglist,
+ char const *vallist, size_t valsize);
+
+# define ARGMATCH_VALID(Arglist, Vallist) \
+ argmatch_valid (Arglist, (char const *) (Vallist), sizeof *(Vallist))
+
+
+
+/* Same as argmatch, but upon failure, reports a explanation on the
+ failure, and exits using the function EXIT_FN. */
+
+ptrdiff_t __xargmatch_internal (char const *context,
+ char const *arg, char const *const *arglist,
+ char const *vallist, size_t valsize,
+ argmatch_exit_fn exit_fn);
+
+/* Programmer friendly interface to __xargmatch_internal. */
+
+# define XARGMATCH(Context, Arg, Arglist, Vallist) \
+ ((Vallist) [__xargmatch_internal (Context, Arg, Arglist, \
+ (char const *) (Vallist), \
+ sizeof *(Vallist), \
+ argmatch_die)])
+
+/* Convert a value into a corresponding argument. */
+
+char const *argmatch_to_argument (char const *value,
+ char const *const *arglist,
+ char const *vallist, size_t valsize);
+
+# define ARGMATCH_TO_ARGUMENT(Value, Arglist, Vallist) \
+ argmatch_to_argument (Value, Arglist, \
+ (char const *) (Vallist), sizeof *(Vallist))
+
+#endif /* ARGMATCH_H_ */
diff --git a/lib/asnprintf.c b/lib/asnprintf.c
new file mode 100644
index 0000000..26c3988
--- /dev/null
+++ b/lib/asnprintf.c
@@ -0,0 +1,35 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#include "vasnprintf.h"
+
+#include <stdarg.h>
+
+char *
+asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
+{
+ va_list args;
+ char *result;
+
+ va_start (args, format);
+ result = vasnprintf (resultbuf, lengthp, format, args);
+ va_end (args);
+ return result;
+}
diff --git a/lib/asprintf.c b/lib/asprintf.c
new file mode 100644
index 0000000..29ac6cf
--- /dev/null
+++ b/lib/asprintf.c
@@ -0,0 +1,35 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#include "vasprintf.h"
+
+#include <stdarg.h>
+
+int
+asprintf (char **resultp, const char *format, ...)
+{
+ va_list args;
+ int result;
+
+ va_start (args, format);
+ result = vasprintf (resultp, format, args);
+ va_end (args);
+ return result;
+}
diff --git a/lib/at-func.c b/lib/at-func.c
new file mode 100644
index 0000000..f98c207
--- /dev/null
+++ b/lib/at-func.c
@@ -0,0 +1,86 @@
+/* Define an at-style functions like fstatat, unlinkat, fchownat, etc.
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#define CALL_FUNC(F) \
+ (AT_FUNC_USE_F1_COND \
+ ? AT_FUNC_F1 (F AT_FUNC_POST_FILE_ARGS) \
+ : AT_FUNC_F2 (F AT_FUNC_POST_FILE_ARGS))
+
+/* Call AT_FUNC_F1 or AT_FUNC_F2 (testing AT_FUNC_USE_F1_COND to
+ determine which) to operate on FILE, which is in the directory
+ open on descriptor FD. If possible, do it without changing the
+ working directory. Otherwise, resort to using save_cwd/fchdir,
+ then AT_FUNC_F?/restore_cwd. If either the save_cwd or the restore_cwd
+ fails, then give a diagnostic and exit nonzero. */
+int
+AT_FUNC_NAME (int fd, char const *file AT_FUNC_POST_FILE_PARAM_DECLS)
+{
+ struct saved_cwd saved_cwd;
+ int saved_errno;
+ int err;
+
+ if (fd == AT_FDCWD || IS_ABSOLUTE_FILE_NAME (file))
+ return CALL_FUNC (file);
+
+ {
+ char buf[OPENAT_BUFFER_SIZE];
+ char *proc_file = openat_proc_name (buf, fd, file);
+ if (proc_file)
+ {
+ int proc_result = CALL_FUNC (proc_file);
+ int proc_errno = errno;
+ if (proc_file != buf)
+ free (proc_file);
+ /* If the syscall succeeds, or if it fails with an unexpected
+ errno value, then return right away. Otherwise, fall through
+ and resort to using save_cwd/restore_cwd. */
+ if (0 <= proc_result)
+ return proc_result;
+ if (! EXPECTED_ERRNO (proc_errno))
+ {
+ errno = proc_errno;
+ return proc_result;
+ }
+ }
+ }
+
+ if (save_cwd (&saved_cwd) != 0)
+ openat_save_fail (errno);
+
+ if (fchdir (fd) != 0)
+ {
+ saved_errno = errno;
+ free_cwd (&saved_cwd);
+ errno = saved_errno;
+ return -1;
+ }
+
+ err = CALL_FUNC (file);
+ saved_errno = (err < 0 ? errno : 0);
+
+ if (restore_cwd (&saved_cwd) != 0)
+ openat_restore_fail (errno);
+
+ free_cwd (&saved_cwd);
+
+ if (saved_errno)
+ errno = saved_errno;
+ return err;
+}
+#undef CALL_FUNC
diff --git a/lib/atexit.c b/lib/atexit.c
new file mode 100644
index 0000000..5ef33e5
--- /dev/null
+++ b/lib/atexit.c
@@ -0,0 +1,13 @@
+/* Wrapper to implement ANSI C's atexit using SunOS's on_exit. */
+/* This function is in the public domain. --Mike Stump. */
+
+#include <config.h>
+
+int
+atexit (void (*f) (void))
+{
+ /* If the system doesn't provide a definition for atexit, use on_exit
+ if the system provides that. */
+ on_exit (f, 0);
+ return 0;
+}
diff --git a/lib/backupfile.c b/lib/backupfile.c
new file mode 100644
index 0000000..adfc0e5
--- /dev/null
+++ b/lib/backupfile.c
@@ -0,0 +1,364 @@
+/* backupfile.c -- make Emacs style backup file names
+
+ Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert and David MacKenzie.
+ Some algorithms adapted from GNU Emacs. */
+
+#include <config.h>
+
+#include "backupfile.h"
+
+#include "argmatch.h"
+#include "dirname.h"
+#include "xalloc.h"
+
+#include <errno.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <limits.h>
+
+#include <unistd.h>
+
+#include <dirent.h>
+#ifndef _D_EXACT_NAMLEN
+# define _D_EXACT_NAMLEN(dp) strlen ((dp)->d_name)
+#endif
+#if D_INO_IN_DIRENT
+# define REAL_DIR_ENTRY(dp) ((dp)->d_ino != 0)
+#else
+# define REAL_DIR_ENTRY(dp) 1
+#endif
+
+#if ! (HAVE_PATHCONF && defined _PC_NAME_MAX)
+# define pathconf(file, option) (errno = -1)
+#endif
+
+#ifndef _POSIX_NAME_MAX
+# define _POSIX_NAME_MAX 14
+#endif
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+
+#if defined _XOPEN_NAME_MAX
+# define NAME_MAX_MINIMUM _XOPEN_NAME_MAX
+#else
+# define NAME_MAX_MINIMUM _POSIX_NAME_MAX
+#endif
+
+#ifndef HAVE_DOS_FILE_NAMES
+# define HAVE_DOS_FILE_NAMES 0
+#endif
+#ifndef HAVE_LONG_FILE_NAMES
+# define HAVE_LONG_FILE_NAMES 0
+#endif
+
+/* ISDIGIT differs from isdigit, as follows:
+ - Its arg may be any int or unsigned int; it need not be an unsigned char
+ or EOF.
+ - It's typically faster.
+ POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
+ ISDIGIT unless it's important to use the locale's definition
+ of `digit' even when the host does not conform to POSIX. */
+#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
+
+/* The results of opendir() in this file are not used with dirfd and fchdir,
+ therefore save some unnecessary work in fchdir.c. */
+#undef opendir
+#undef closedir
+
+/* The extension added to file names to produce a simple (as opposed
+ to numbered) backup file name. */
+char const *simple_backup_suffix = "~";
+
+
+/* If FILE (which was of length FILELEN before an extension was
+ appended to it) is too long, replace the extension with the single
+ char E. If the result is still too long, remove the char just
+ before E. */
+
+static void
+check_extension (char *file, size_t filelen, char e)
+{
+ char *base = last_component (file);
+ size_t baselen = base_len (base);
+ size_t baselen_max = HAVE_LONG_FILE_NAMES ? 255 : NAME_MAX_MINIMUM;
+
+ if (HAVE_DOS_FILE_NAMES || NAME_MAX_MINIMUM < baselen)
+ {
+ /* The new base name is long enough to require a pathconf check. */
+ long name_max;
+
+ /* Temporarily modify the buffer into its parent directory name,
+ invoke pathconf on the directory, and then restore the buffer. */
+ char tmp[sizeof "."];
+ memcpy (tmp, base, sizeof ".");
+ strcpy (base, ".");
+ errno = 0;
+ name_max = pathconf (file, _PC_NAME_MAX);
+ if (0 <= name_max || errno == 0)
+ {
+ long size = baselen_max = name_max;
+ if (name_max != size)
+ baselen_max = SIZE_MAX;
+ }
+ memcpy (base, tmp, sizeof ".");
+ }
+
+ if (HAVE_DOS_FILE_NAMES && baselen_max <= 12)
+ {
+ /* Live within DOS's 8.3 limit. */
+ char *dot = strchr (base, '.');
+ if (!dot)
+ baselen_max = 8;
+ else
+ {
+ char const *second_dot = strchr (dot + 1, '.');
+ baselen_max = (second_dot
+ ? second_dot - base
+ : dot + 1 - base + 3);
+ }
+ }
+
+ if (baselen_max < baselen)
+ {
+ baselen = file + filelen - base;
+ if (baselen_max <= baselen)
+ baselen = baselen_max - 1;
+ base[baselen] = e;
+ base[baselen + 1] = '\0';
+ }
+}
+
+/* Returned values for NUMBERED_BACKUP. */
+
+enum numbered_backup_result
+ {
+ /* The new backup name is the same length as an existing backup
+ name, so it's valid for that directory. */
+ BACKUP_IS_SAME_LENGTH,
+
+ /* Some backup names already exist, but the returned name is longer
+ than any of them, and its length should be checked. */
+ BACKUP_IS_LONGER,
+
+ /* There are no existing backup names. The new name's length
+ should be checked. */
+ BACKUP_IS_NEW
+ };
+
+/* *BUFFER contains a file name. Store into *BUFFER the next backup
+ name for the named file, with a version number greater than all the
+ existing numbered backups. Reallocate *BUFFER as necessary; its
+ initial allocated size is BUFFER_SIZE, which must be at least 4
+ bytes longer than the file name to make room for the initially
+ appended ".~1". FILELEN is the length of the original file name.
+ The returned value indicates what kind of backup was found. If an
+ I/O or other read error occurs, use the highest backup number that
+ was found. */
+
+static enum numbered_backup_result
+numbered_backup (char **buffer, size_t buffer_size, size_t filelen)
+{
+ enum numbered_backup_result result = BACKUP_IS_NEW;
+ DIR *dirp;
+ struct dirent *dp;
+ char *buf = *buffer;
+ size_t versionlenmax = 1;
+ char *base = last_component (buf);
+ size_t base_offset = base - buf;
+ size_t baselen = base_len (base);
+
+ /* Temporarily modify the buffer into its parent directory name,
+ open the directory, and then restore the buffer. */
+ char tmp[sizeof "."];
+ memcpy (tmp, base, sizeof ".");
+ strcpy (base, ".");
+ dirp = opendir (buf);
+ memcpy (base, tmp, sizeof ".");
+ strcpy (base + baselen, ".~1~");
+
+ if (!dirp)
+ return result;
+
+ while ((dp = readdir (dirp)) != NULL)
+ {
+ char const *p;
+ char *q;
+ bool all_9s;
+ size_t versionlen;
+ size_t new_buflen;
+
+ if (! REAL_DIR_ENTRY (dp) || _D_EXACT_NAMLEN (dp) < baselen + 4)
+ continue;
+
+ if (memcmp (buf + base_offset, dp->d_name, baselen + 2) != 0)
+ continue;
+
+ p = dp->d_name + baselen + 2;
+
+ /* Check whether this file has a version number and if so,
+ whether it is larger. Use string operations rather than
+ integer arithmetic, to avoid problems with integer overflow. */
+
+ if (! ('1' <= *p && *p <= '9'))
+ continue;
+ all_9s = (*p == '9');
+ for (versionlen = 1; ISDIGIT (p[versionlen]); versionlen++)
+ all_9s &= (p[versionlen] == '9');
+
+ if (! (p[versionlen] == '~' && !p[versionlen + 1]
+ && (versionlenmax < versionlen
+ || (versionlenmax == versionlen
+ && memcmp (buf + filelen + 2, p, versionlen) <= 0))))
+ continue;
+
+ /* This directory has the largest version number seen so far.
+ Append this highest numbered extension to the file name,
+ prepending '0' to the number if it is all 9s. */
+
+ versionlenmax = all_9s + versionlen;
+ result = (all_9s ? BACKUP_IS_LONGER : BACKUP_IS_SAME_LENGTH);
+ new_buflen = filelen + 2 + versionlenmax + 1;
+ if (buffer_size <= new_buflen)
+ {
+ buf = xnrealloc (buf, 2, new_buflen);
+ buffer_size = new_buflen * 2;
+ }
+ q = buf + filelen;
+ *q++ = '.';
+ *q++ = '~';
+ *q = '0';
+ q += all_9s;
+ memcpy (q, p, versionlen + 2);
+
+ /* Add 1 to the version number. */
+
+ q += versionlen;
+ while (*--q == '9')
+ *q = '0';
+ ++*q;
+ }
+
+ closedir (dirp);
+ *buffer = buf;
+ return result;
+}
+
+/* Return the name of the new backup file for the existing file FILE,
+ allocated with malloc. Report an error and fail if out of memory.
+ Do not call this function if backup_type == no_backups. */
+
+char *
+find_backup_file_name (char const *file, enum backup_type backup_type)
+{
+ size_t filelen = strlen (file);
+ char *s;
+ size_t ssize;
+ bool simple = true;
+
+ /* Allow room for simple or ".~N~" backups. The guess must be at
+ least sizeof ".~1~", but otherwise will be adjusted as needed. */
+ size_t simple_backup_suffix_size = strlen (simple_backup_suffix) + 1;
+ size_t backup_suffix_size_guess = simple_backup_suffix_size;
+ enum { GUESS = sizeof ".~12345~" };
+ if (backup_suffix_size_guess < GUESS)
+ backup_suffix_size_guess = GUESS;
+
+ ssize = filelen + backup_suffix_size_guess + 1;
+ s = xmalloc (ssize);
+ memcpy (s, file, filelen + 1);
+
+ if (backup_type != simple_backups)
+ switch (numbered_backup (&s, ssize, filelen))
+ {
+ case BACKUP_IS_SAME_LENGTH:
+ return s;
+
+ case BACKUP_IS_LONGER:
+ simple = false;
+ break;
+
+ case BACKUP_IS_NEW:
+ simple = (backup_type == numbered_existing_backups);
+ break;
+ }
+
+ if (simple)
+ memcpy (s + filelen, simple_backup_suffix, simple_backup_suffix_size);
+ check_extension (s, filelen, '~');
+ return s;
+}
+
+static char const * const backup_args[] =
+{
+ /* In a series of synonyms, present the most meaningful first, so
+ that argmatch_valid be more readable. */
+ "none", "off",
+ "simple", "never",
+ "existing", "nil",
+ "numbered", "t",
+ NULL
+};
+
+static const enum backup_type backup_types[] =
+{
+ no_backups, no_backups,
+ simple_backups, simple_backups,
+ numbered_existing_backups, numbered_existing_backups,
+ numbered_backups, numbered_backups
+};
+
+/* Ensure that these two vectors have the same number of elements,
+ not counting the final NULL in the first one. */
+ARGMATCH_VERIFY (backup_args, backup_types);
+
+/* Return the type of backup specified by VERSION.
+ If VERSION is NULL or the empty string, return numbered_existing_backups.
+ If VERSION is invalid or ambiguous, fail with a diagnostic appropriate
+ for the specified CONTEXT. Unambiguous abbreviations are accepted. */
+
+enum backup_type
+get_version (char const *context, char const *version)
+{
+ if (version == 0 || *version == 0)
+ return numbered_existing_backups;
+ else
+ return XARGMATCH (context, version, backup_args, backup_types);
+}
+
+
+/* Return the type of backup specified by VERSION.
+ If VERSION is NULL, use the value of the envvar VERSION_CONTROL.
+ If the specified string is invalid or ambiguous, fail with a diagnostic
+ appropriate for the specified CONTEXT.
+ Unambiguous abbreviations are accepted. */
+
+enum backup_type
+xget_version (char const *context, char const *version)
+{
+ if (version && *version)
+ return get_version (context, version);
+ else
+ return get_version ("$VERSION_CONTROL", getenv ("VERSION_CONTROL"));
+}
diff --git a/lib/backupfile.h b/lib/backupfile.h
new file mode 100644
index 0000000..7b44e58
--- /dev/null
+++ b/lib/backupfile.h
@@ -0,0 +1,61 @@
+/* backupfile.h -- declarations for making Emacs style backup file names
+
+ Copyright (C) 1990, 1991, 1992, 1997, 1998, 1999, 2003, 2004 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef BACKUPFILE_H_
+# define BACKUPFILE_H_
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+
+/* When to make backup files. */
+enum backup_type
+{
+ /* Never make backups. */
+ no_backups,
+
+ /* Make simple backups of every file. */
+ simple_backups,
+
+ /* Make numbered backups of files that already have numbered backups,
+ and simple backups of the others. */
+ numbered_existing_backups,
+
+ /* Make numbered backups of every file. */
+ numbered_backups
+};
+
+# define VALID_BACKUP_TYPE(Type) \
+ ((unsigned int) (Type) <= numbered_backups)
+
+extern char const *simple_backup_suffix;
+
+char *find_backup_file_name (char const *, enum backup_type);
+enum backup_type get_version (char const *context, char const *arg);
+enum backup_type xget_version (char const *context, char const *arg);
+void addext (char *, char const *, int);
+
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif /* ! BACKUPFILE_H_ */
diff --git a/lib/base64.c b/lib/base64.c
new file mode 100644
index 0000000..5312902
--- /dev/null
+++ b/lib/base64.c
@@ -0,0 +1,561 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* base64.c -- Encode binary data using printable characters.
+ Copyright (C) 1999, 2000, 2001, 2004, 2005, 2006, 2007 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Simon Josefsson. Partially adapted from GNU MailUtils
+ * (mailbox/filter_trans.c, as of 2004-11-28). Improved by review
+ * from Paul Eggert, Bruno Haible, and Stepan Kasal.
+ *
+ * See also RFC 3548 <http://www.ietf.org/rfc/rfc3548.txt>.
+ *
+ * Be careful with error checking. Here is how you would typically
+ * use these functions:
+ *
+ * bool ok = base64_decode_alloc (in, inlen, &out, &outlen);
+ * if (!ok)
+ * FAIL: input was not valid base64
+ * if (out == NULL)
+ * FAIL: memory allocation error
+ * OK: data in OUT/OUTLEN
+ *
+ * size_t outlen = base64_encode_alloc (in, inlen, &out);
+ * if (out == NULL && outlen == 0 && inlen != 0)
+ * FAIL: input too long
+ * if (out == NULL)
+ * FAIL: memory allocation error
+ * OK: data in OUT/OUTLEN.
+ *
+ */
+
+#include <config.h>
+
+/* Get prototype. */
+#include "base64.h"
+
+/* Get malloc. */
+#include <stdlib.h>
+
+/* Get UCHAR_MAX. */
+#include <limits.h>
+
+#include <string.h>
+
+/* C89 compliant way to cast 'char' to 'unsigned char'. */
+static inline unsigned char
+to_uchar (char ch)
+{
+ return ch;
+}
+
+/* Base64 encode IN array of size INLEN into OUT array of size OUTLEN.
+ If OUTLEN is less than BASE64_LENGTH(INLEN), write as many bytes as
+ possible. If OUTLEN is larger than BASE64_LENGTH(INLEN), also zero
+ terminate the output buffer. */
+void
+base64_encode (const char *restrict in, size_t inlen,
+ char *restrict out, size_t outlen)
+{
+ static const char b64str[64] =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+
+ while (inlen && outlen)
+ {
+ *out++ = b64str[(to_uchar (in[0]) >> 2) & 0x3f];
+ if (!--outlen)
+ break;
+ *out++ = b64str[((to_uchar (in[0]) << 4)
+ + (--inlen ? to_uchar (in[1]) >> 4 : 0))
+ & 0x3f];
+ if (!--outlen)
+ break;
+ *out++ =
+ (inlen
+ ? b64str[((to_uchar (in[1]) << 2)
+ + (--inlen ? to_uchar (in[2]) >> 6 : 0))
+ & 0x3f]
+ : '=');
+ if (!--outlen)
+ break;
+ *out++ = inlen ? b64str[to_uchar (in[2]) & 0x3f] : '=';
+ if (!--outlen)
+ break;
+ if (inlen)
+ inlen--;
+ if (inlen)
+ in += 3;
+ }
+
+ if (outlen)
+ *out = '\0';
+}
+
+/* Allocate a buffer and store zero terminated base64 encoded data
+ from array IN of size INLEN, returning BASE64_LENGTH(INLEN), i.e.,
+ the length of the encoded data, excluding the terminating zero. On
+ return, the OUT variable will hold a pointer to newly allocated
+ memory that must be deallocated by the caller. If output string
+ length would overflow, 0 is returned and OUT is set to NULL. If
+ memory allocation failed, OUT is set to NULL, and the return value
+ indicates length of the requested memory block, i.e.,
+ BASE64_LENGTH(inlen) + 1. */
+size_t
+base64_encode_alloc (const char *in, size_t inlen, char **out)
+{
+ size_t outlen = 1 + BASE64_LENGTH (inlen);
+
+ /* Check for overflow in outlen computation.
+ *
+ * If there is no overflow, outlen >= inlen.
+ *
+ * If the operation (inlen + 2) overflows then it yields at most +1, so
+ * outlen is 0.
+ *
+ * If the multiplication overflows, we lose at least half of the
+ * correct value, so the result is < ((inlen + 2) / 3) * 2, which is
+ * less than (inlen + 2) * 0.66667, which is less than inlen as soon as
+ * (inlen > 4).
+ */
+ if (inlen > outlen)
+ {
+ *out = NULL;
+ return 0;
+ }
+
+ *out = malloc (outlen);
+ if (!*out)
+ return outlen;
+
+ base64_encode (in, inlen, *out, outlen);
+
+ return outlen - 1;
+}
+
+/* With this approach this file works independent of the charset used
+ (think EBCDIC). However, it does assume that the characters in the
+ Base64 alphabet (A-Za-z0-9+/) are encoded in 0..255. POSIX
+ 1003.1-2001 require that char and unsigned char are 8-bit
+ quantities, though, taking care of that problem. But this may be a
+ potential problem on non-POSIX C99 platforms.
+
+ IBM C V6 for AIX mishandles "#define B64(x) ...'x'...", so use "_"
+ as the formal parameter rather than "x". */
+#define B64(_) \
+ ((_) == 'A' ? 0 \
+ : (_) == 'B' ? 1 \
+ : (_) == 'C' ? 2 \
+ : (_) == 'D' ? 3 \
+ : (_) == 'E' ? 4 \
+ : (_) == 'F' ? 5 \
+ : (_) == 'G' ? 6 \
+ : (_) == 'H' ? 7 \
+ : (_) == 'I' ? 8 \
+ : (_) == 'J' ? 9 \
+ : (_) == 'K' ? 10 \
+ : (_) == 'L' ? 11 \
+ : (_) == 'M' ? 12 \
+ : (_) == 'N' ? 13 \
+ : (_) == 'O' ? 14 \
+ : (_) == 'P' ? 15 \
+ : (_) == 'Q' ? 16 \
+ : (_) == 'R' ? 17 \
+ : (_) == 'S' ? 18 \
+ : (_) == 'T' ? 19 \
+ : (_) == 'U' ? 20 \
+ : (_) == 'V' ? 21 \
+ : (_) == 'W' ? 22 \
+ : (_) == 'X' ? 23 \
+ : (_) == 'Y' ? 24 \
+ : (_) == 'Z' ? 25 \
+ : (_) == 'a' ? 26 \
+ : (_) == 'b' ? 27 \
+ : (_) == 'c' ? 28 \
+ : (_) == 'd' ? 29 \
+ : (_) == 'e' ? 30 \
+ : (_) == 'f' ? 31 \
+ : (_) == 'g' ? 32 \
+ : (_) == 'h' ? 33 \
+ : (_) == 'i' ? 34 \
+ : (_) == 'j' ? 35 \
+ : (_) == 'k' ? 36 \
+ : (_) == 'l' ? 37 \
+ : (_) == 'm' ? 38 \
+ : (_) == 'n' ? 39 \
+ : (_) == 'o' ? 40 \
+ : (_) == 'p' ? 41 \
+ : (_) == 'q' ? 42 \
+ : (_) == 'r' ? 43 \
+ : (_) == 's' ? 44 \
+ : (_) == 't' ? 45 \
+ : (_) == 'u' ? 46 \
+ : (_) == 'v' ? 47 \
+ : (_) == 'w' ? 48 \
+ : (_) == 'x' ? 49 \
+ : (_) == 'y' ? 50 \
+ : (_) == 'z' ? 51 \
+ : (_) == '0' ? 52 \
+ : (_) == '1' ? 53 \
+ : (_) == '2' ? 54 \
+ : (_) == '3' ? 55 \
+ : (_) == '4' ? 56 \
+ : (_) == '5' ? 57 \
+ : (_) == '6' ? 58 \
+ : (_) == '7' ? 59 \
+ : (_) == '8' ? 60 \
+ : (_) == '9' ? 61 \
+ : (_) == '+' ? 62 \
+ : (_) == '/' ? 63 \
+ : -1)
+
+static const signed char b64[0x100] = {
+ B64 (0), B64 (1), B64 (2), B64 (3),
+ B64 (4), B64 (5), B64 (6), B64 (7),
+ B64 (8), B64 (9), B64 (10), B64 (11),
+ B64 (12), B64 (13), B64 (14), B64 (15),
+ B64 (16), B64 (17), B64 (18), B64 (19),
+ B64 (20), B64 (21), B64 (22), B64 (23),
+ B64 (24), B64 (25), B64 (26), B64 (27),
+ B64 (28), B64 (29), B64 (30), B64 (31),
+ B64 (32), B64 (33), B64 (34), B64 (35),
+ B64 (36), B64 (37), B64 (38), B64 (39),
+ B64 (40), B64 (41), B64 (42), B64 (43),
+ B64 (44), B64 (45), B64 (46), B64 (47),
+ B64 (48), B64 (49), B64 (50), B64 (51),
+ B64 (52), B64 (53), B64 (54), B64 (55),
+ B64 (56), B64 (57), B64 (58), B64 (59),
+ B64 (60), B64 (61), B64 (62), B64 (63),
+ B64 (64), B64 (65), B64 (66), B64 (67),
+ B64 (68), B64 (69), B64 (70), B64 (71),
+ B64 (72), B64 (73), B64 (74), B64 (75),
+ B64 (76), B64 (77), B64 (78), B64 (79),
+ B64 (80), B64 (81), B64 (82), B64 (83),
+ B64 (84), B64 (85), B64 (86), B64 (87),
+ B64 (88), B64 (89), B64 (90), B64 (91),
+ B64 (92), B64 (93), B64 (94), B64 (95),
+ B64 (96), B64 (97), B64 (98), B64 (99),
+ B64 (100), B64 (101), B64 (102), B64 (103),
+ B64 (104), B64 (105), B64 (106), B64 (107),
+ B64 (108), B64 (109), B64 (110), B64 (111),
+ B64 (112), B64 (113), B64 (114), B64 (115),
+ B64 (116), B64 (117), B64 (118), B64 (119),
+ B64 (120), B64 (121), B64 (122), B64 (123),
+ B64 (124), B64 (125), B64 (126), B64 (127),
+ B64 (128), B64 (129), B64 (130), B64 (131),
+ B64 (132), B64 (133), B64 (134), B64 (135),
+ B64 (136), B64 (137), B64 (138), B64 (139),
+ B64 (140), B64 (141), B64 (142), B64 (143),
+ B64 (144), B64 (145), B64 (146), B64 (147),
+ B64 (148), B64 (149), B64 (150), B64 (151),
+ B64 (152), B64 (153), B64 (154), B64 (155),
+ B64 (156), B64 (157), B64 (158), B64 (159),
+ B64 (160), B64 (161), B64 (162), B64 (163),
+ B64 (164), B64 (165), B64 (166), B64 (167),
+ B64 (168), B64 (169), B64 (170), B64 (171),
+ B64 (172), B64 (173), B64 (174), B64 (175),
+ B64 (176), B64 (177), B64 (178), B64 (179),
+ B64 (180), B64 (181), B64 (182), B64 (183),
+ B64 (184), B64 (185), B64 (186), B64 (187),
+ B64 (188), B64 (189), B64 (190), B64 (191),
+ B64 (192), B64 (193), B64 (194), B64 (195),
+ B64 (196), B64 (197), B64 (198), B64 (199),
+ B64 (200), B64 (201), B64 (202), B64 (203),
+ B64 (204), B64 (205), B64 (206), B64 (207),
+ B64 (208), B64 (209), B64 (210), B64 (211),
+ B64 (212), B64 (213), B64 (214), B64 (215),
+ B64 (216), B64 (217), B64 (218), B64 (219),
+ B64 (220), B64 (221), B64 (222), B64 (223),
+ B64 (224), B64 (225), B64 (226), B64 (227),
+ B64 (228), B64 (229), B64 (230), B64 (231),
+ B64 (232), B64 (233), B64 (234), B64 (235),
+ B64 (236), B64 (237), B64 (238), B64 (239),
+ B64 (240), B64 (241), B64 (242), B64 (243),
+ B64 (244), B64 (245), B64 (246), B64 (247),
+ B64 (248), B64 (249), B64 (250), B64 (251),
+ B64 (252), B64 (253), B64 (254), B64 (255)
+};
+
+#if UCHAR_MAX == 255
+# define uchar_in_range(c) true
+#else
+# define uchar_in_range(c) ((c) <= 255)
+#endif
+
+/* Return true if CH is a character from the Base64 alphabet, and
+ false otherwise. Note that '=' is padding and not considered to be
+ part of the alphabet. */
+bool
+isbase64 (char ch)
+{
+ return uchar_in_range (to_uchar (ch)) && 0 <= b64[to_uchar (ch)];
+}
+
+/* Initialize decode-context buffer, CTX. */
+void
+base64_decode_ctx_init (struct base64_decode_context *ctx)
+{
+ ctx->i = 0;
+}
+
+/* If CTX->i is 0 or 4, there are four or more bytes in [*IN..IN_END), and
+ none of those four is a newline, then return *IN. Otherwise, copy up to
+ 4 - CTX->i non-newline bytes from that range into CTX->buf, starting at
+ index CTX->i and setting CTX->i to reflect the number of bytes copied,
+ and return CTX->buf. In either case, advance *IN to point to the byte
+ after the last one processed, and set *N_NON_NEWLINE to the number of
+ verified non-newline bytes accessible through the returned pointer. */
+static inline char *
+get_4 (struct base64_decode_context *ctx,
+ char const *restrict *in, char const *restrict in_end,
+ size_t *n_non_newline)
+{
+ if (ctx->i == 4)
+ ctx->i = 0;
+
+ if (ctx->i == 0)
+ {
+ char const *t = *in;
+ if (4 <= in_end - *in && memchr (t, '\n', 4) == NULL)
+ {
+ /* This is the common case: no newline. */
+ *in += 4;
+ *n_non_newline = 4;
+ return (char *) t;
+ }
+ }
+
+ {
+ /* Copy non-newline bytes into BUF. */
+ char const *p = *in;
+ while (p < in_end)
+ {
+ char c = *p++;
+ if (c != '\n')
+ {
+ ctx->buf[ctx->i++] = c;
+ if (ctx->i == 4)
+ break;
+ }
+ }
+
+ *in = p;
+ *n_non_newline = ctx->i;
+ return ctx->buf;
+ }
+}
+
+#define return_false \
+ do \
+ { \
+ *outp = out; \
+ return false; \
+ } \
+ while (false)
+
+/* Decode up to four bytes of base64-encoded data, IN, of length INLEN
+ into the output buffer, *OUT, of size *OUTLEN bytes. Return true if
+ decoding is successful, false otherwise. If *OUTLEN is too small,
+ as many bytes as possible are written to *OUT. On return, advance
+ *OUT to point to the byte after the last one written, and decrement
+ *OUTLEN to reflect the number of bytes remaining in *OUT. */
+static inline bool
+decode_4 (char const *restrict in, size_t inlen,
+ char *restrict *outp, size_t *outleft)
+{
+ char *out = *outp;
+ if (inlen < 2)
+ return false;
+
+ if (!isbase64 (in[0]) || !isbase64 (in[1]))
+ return false;
+
+ if (*outleft)
+ {
+ *out++ = ((b64[to_uchar (in[0])] << 2)
+ | (b64[to_uchar (in[1])] >> 4));
+ --*outleft;
+ }
+
+ if (inlen == 2)
+ return_false;
+
+ if (in[2] == '=')
+ {
+ if (inlen != 4)
+ return_false;
+
+ if (in[3] != '=')
+ return_false;
+ }
+ else
+ {
+ if (!isbase64 (in[2]))
+ return_false;
+
+ if (*outleft)
+ {
+ *out++ = (((b64[to_uchar (in[1])] << 4) & 0xf0)
+ | (b64[to_uchar (in[2])] >> 2));
+ --*outleft;
+ }
+
+ if (inlen == 3)
+ return_false;
+
+ if (in[3] == '=')
+ {
+ if (inlen != 4)
+ return_false;
+ }
+ else
+ {
+ if (!isbase64 (in[3]))
+ return_false;
+
+ if (*outleft)
+ {
+ *out++ = (((b64[to_uchar (in[2])] << 6) & 0xc0)
+ | b64[to_uchar (in[3])]);
+ --*outleft;
+ }
+ }
+ }
+
+ *outp = out;
+ return true;
+}
+
+/* Decode base64-encoded input array IN of length INLEN to output array
+ OUT that can hold *OUTLEN bytes. The input data may be interspersed
+ with newlines. Return true if decoding was successful, i.e. if the
+ input was valid base64 data, false otherwise. If *OUTLEN is too
+ small, as many bytes as possible will be written to OUT. On return,
+ *OUTLEN holds the length of decoded bytes in OUT. Note that as soon
+ as any non-alphabet, non-newline character is encountered, decoding
+ is stopped and false is returned. If INLEN is zero, then process
+ only whatever data is stored in CTX.
+
+ Initially, CTX must have been initialized via base64_decode_ctx_init.
+ Subsequent calls to this function must reuse whatever state is recorded
+ in that buffer. It is necessary for when a quadruple of base64 input
+ bytes spans two input buffers. */
+
+bool
+base64_decode (struct base64_decode_context *ctx,
+ const char *restrict in, size_t inlen,
+ char *restrict out, size_t *outlen)
+{
+ size_t outleft = *outlen;
+ bool flush_ctx = inlen == 0;
+
+ while (true)
+ {
+ size_t outleft_save = outleft;
+ if (ctx->i == 0 && !flush_ctx)
+ {
+ while (true)
+ {
+ /* Save a copy of outleft, in case we need to re-parse this
+ block of four bytes. */
+ outleft_save = outleft;
+ if (!decode_4 (in, inlen, &out, &outleft))
+ break;
+
+ in += 4;
+ inlen -= 4;
+ }
+ }
+
+ if (inlen == 0 && !flush_ctx)
+ break;
+
+ /* Handle the common case of 72-byte wrapped lines.
+ This also handles any other multiple-of-4-byte wrapping. */
+ if (inlen && *in == '\n')
+ {
+ ++in;
+ --inlen;
+ continue;
+ }
+
+ /* Restore OUT and OUTLEFT. */
+ out -= outleft_save - outleft;
+ outleft = outleft_save;
+
+ {
+ char const *in_end = in + inlen;
+ char const *non_nl = get_4 (ctx, &in, in_end, &inlen);
+
+ /* If the input is empty or consists solely of newlines (0 non-newlines),
+ then we're done. Likewise if there are fewer than 4 bytes when not
+ flushing context. */
+ if (inlen == 0 || (inlen < 4 && !flush_ctx))
+ {
+ inlen = 0;
+ break;
+ }
+ if (!decode_4 (non_nl, inlen, &out, &outleft))
+ break;
+
+ inlen = in_end - in;
+ }
+ }
+
+ *outlen -= outleft;
+
+ return inlen == 0;
+}
+
+/* Allocate an output buffer in *OUT, and decode the base64 encoded
+ data stored in IN of size INLEN to the *OUT buffer. On return, the
+ size of the decoded data is stored in *OUTLEN. OUTLEN may be NULL,
+ if the caller is not interested in the decoded length. *OUT may be
+ NULL to indicate an out of memory error, in which case *OUTLEN
+ contains the size of the memory block needed. The function returns
+ true on successful decoding and memory allocation errors. (Use the
+ *OUT and *OUTLEN parameters to differentiate between successful
+ decoding and memory error.) The function returns false if the
+ input was invalid, in which case *OUT is NULL and *OUTLEN is
+ undefined. */
+bool
+base64_decode_alloc (struct base64_decode_context *ctx,
+ const char *in, size_t inlen, char **out,
+ size_t *outlen)
+{
+ /* This may allocate a few bytes too many, depending on input,
+ but it's not worth the extra CPU time to compute the exact size.
+ The exact size is 3 * inlen / 4, minus 1 if the input ends
+ with "=" and minus another 1 if the input ends with "==".
+ Dividing before multiplying avoids the possibility of overflow. */
+ size_t needlen = 3 * (inlen / 4) + 2;
+
+ *out = malloc (needlen);
+ if (!*out)
+ return true;
+
+ if (!base64_decode (ctx, in, inlen, *out, &needlen))
+ {
+ free (*out);
+ *out = NULL;
+ return false;
+ }
+
+ if (outlen)
+ *outlen = needlen;
+
+ return true;
+}
diff --git a/lib/base64.h b/lib/base64.h
new file mode 100644
index 0000000..0399edf
--- /dev/null
+++ b/lib/base64.h
@@ -0,0 +1,56 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* base64.h -- Encode binary data using printable characters.
+ Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+ Written by Simon Josefsson.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef BASE64_H
+# define BASE64_H
+
+/* Get size_t. */
+# include <stddef.h>
+
+/* Get bool. */
+# include <stdbool.h>
+
+/* This uses that the expression (n+(k-1))/k means the smallest
+ integer >= n/k, i.e., the ceiling of n/k. */
+# define BASE64_LENGTH(inlen) ((((inlen) + 2) / 3) * 4)
+
+struct base64_decode_context
+{
+ unsigned int i;
+ char buf[4];
+};
+
+extern bool isbase64 (char ch);
+
+extern void base64_encode (const char *restrict in, size_t inlen,
+ char *restrict out, size_t outlen);
+
+extern size_t base64_encode_alloc (const char *in, size_t inlen, char **out);
+
+extern void base64_decode_ctx_init (struct base64_decode_context *ctx);
+extern bool base64_decode (struct base64_decode_context *ctx,
+ const char *restrict in, size_t inlen,
+ char *restrict out, size_t *outlen);
+
+extern bool base64_decode_alloc (struct base64_decode_context *ctx,
+ const char *in, size_t inlen,
+ char **out, size_t *outlen);
+
+#endif /* BASE64_H */
diff --git a/lib/basename.c b/lib/basename.c
new file mode 100644
index 0000000..fbe17ff
--- /dev/null
+++ b/lib/basename.c
@@ -0,0 +1,129 @@
+/* basename.c -- return the last element in a file name
+
+ Copyright (C) 1990, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "dirname.h"
+
+#include <string.h>
+#include "xalloc.h"
+#include "xstrndup.h"
+
+/* Return the address of the last file name component of NAME. If
+ NAME has no relative file name components because it is a file
+ system root, return the empty string. */
+
+char *
+last_component (char const *name)
+{
+ char const *base = name + FILE_SYSTEM_PREFIX_LEN (name);
+ char const *p;
+ bool saw_slash = false;
+
+ while (ISSLASH (*base))
+ base++;
+
+ for (p = base; *p; p++)
+ {
+ if (ISSLASH (*p))
+ saw_slash = true;
+ else if (saw_slash)
+ {
+ base = p;
+ saw_slash = false;
+ }
+ }
+
+ return (char *) base;
+}
+
+
+/* In general, we can't use the builtin `basename' function if available,
+ since it has different meanings in different environments.
+ In some environments the builtin `basename' modifies its argument.
+
+ Return the last file name component of NAME, allocated with
+ xmalloc. On systems with drive letters, a leading "./"
+ distinguishes relative names that would otherwise look like a drive
+ letter. Unlike POSIX basename(), NAME cannot be NULL,
+ base_name("") returns "", and the first trailing slash is not
+ stripped.
+
+ If lstat (NAME) would succeed, then { chdir (dir_name (NAME));
+ lstat (base_name (NAME)); } will access the same file. Likewise,
+ if the sequence { chdir (dir_name (NAME));
+ rename (base_name (NAME), "foo"); } succeeds, you have renamed NAME
+ to "foo" in the same directory NAME was in. */
+
+char *
+base_name (char const *name)
+{
+ char const *base = last_component (name);
+ size_t length;
+
+ /* If there is no last component, then name is a file system root or the
+ empty string. */
+ if (! *base)
+ return xstrndup (name, base_len (name));
+
+ /* Collapse a sequence of trailing slashes into one. */
+ length = base_len (base);
+ if (ISSLASH (base[length]))
+ length++;
+
+ /* On systems with drive letters, `a/b:c' must return `./b:c' rather
+ than `b:c' to avoid confusion with a drive letter. On systems
+ with pure POSIX semantics, this is not an issue. */
+ if (FILE_SYSTEM_PREFIX_LEN (base))
+ {
+ char *p = xmalloc (length + 3);
+ p[0] = '.';
+ p[1] = '/';
+ memcpy (p + 2, base, length);
+ p[length + 2] = '\0';
+ return p;
+ }
+
+ /* Finally, copy the basename. */
+ return xstrndup (base, length);
+}
+
+/* Return the length of the basename NAME. Typically NAME is the
+ value returned by base_name or last_component. Act like strlen
+ (NAME), except omit all trailing slashes. */
+
+size_t
+base_len (char const *name)
+{
+ size_t len;
+ size_t prefix_len = FILE_SYSTEM_PREFIX_LEN (name);
+
+ for (len = strlen (name); 1 < len && ISSLASH (name[len - 1]); len--)
+ continue;
+
+ if (DOUBLE_SLASH_IS_DISTINCT_ROOT && len == 1
+ && ISSLASH (name[0]) && ISSLASH (name[1]) && ! name[2])
+ return 2;
+
+ if (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE && prefix_len
+ && len == prefix_len && ISSLASH (name[prefix_len]))
+ return prefix_len + 1;
+
+ return len;
+}
diff --git a/lib/buffer-lcm.c b/lib/buffer-lcm.c
new file mode 100644
index 0000000..c3f6109
--- /dev/null
+++ b/lib/buffer-lcm.c
@@ -0,0 +1,59 @@
+/* buffer-lcm.c - compute a good buffer size for dealing with two files
+
+ Copyright (C) 2002, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include "buffer-lcm.h"
+
+/* Return a buffer size suitable for doing I/O with files whose block
+ sizes are A and B. However, never return a value greater than
+ LCM_MAX. */
+
+size_t
+buffer_lcm (size_t a, size_t b, size_t lcm_max)
+{
+ size_t size;
+
+ /* Use reasonable values if buffer sizes are zero. */
+ if (!a)
+ size = b ? b : 8 * 1024;
+ else
+ {
+ if (b)
+ {
+ /* Return lcm (A, B) if it is in range; otherwise, fall back
+ on A. */
+
+ size_t lcm, m, n, q, r;
+
+ /* N = gcd (A, B). */
+ for (m = a, n = b; (r = m % n) != 0; m = n, n = r)
+ continue;
+
+ /* LCM = lcm (A, B), if in range. */
+ q = a / n;
+ lcm = q * b;
+ if (lcm <= lcm_max && lcm / b == q)
+ return lcm;
+ }
+
+ size = a;
+ }
+
+ return size <= lcm_max ? size : lcm_max;
+}
diff --git a/lib/buffer-lcm.h b/lib/buffer-lcm.h
new file mode 100644
index 0000000..9a6cdf5
--- /dev/null
+++ b/lib/buffer-lcm.h
@@ -0,0 +1,2 @@
+#include <stddef.h>
+size_t buffer_lcm (size_t, size_t, size_t);
diff --git a/lib/c-ctype.c b/lib/c-ctype.c
new file mode 100644
index 0000000..36569b8
--- /dev/null
+++ b/lib/c-ctype.c
@@ -0,0 +1,396 @@
+/* Character handling in C locale.
+
+ Copyright 2000-2003, 2006 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software Foundation,
+Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#define NO_C_CTYPE_MACROS
+#include "c-ctype.h"
+
+/* The function isascii is not locale dependent. Its use in EBCDIC is
+ questionable. */
+bool
+c_isascii (int c)
+{
+ return (c >= 0x00 && c <= 0x7f);
+}
+
+bool
+c_isalnum (int c)
+{
+#if C_CTYPE_CONSECUTIVE_DIGITS \
+ && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+ return ((c >= '0' && c <= '9')
+ || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z'));
+#else
+ return ((c >= '0' && c <= '9')
+ || (c >= 'A' && c <= 'Z')
+ || (c >= 'a' && c <= 'z'));
+#endif
+#else
+ switch (c)
+ {
+ case '0': case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+ case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+ case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+ case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+ case 'Y': case 'Z':
+ case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+ case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+ case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+ case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+ case 'y': case 'z':
+ return 1;
+ default:
+ return 0;
+ }
+#endif
+}
+
+bool
+c_isalpha (int c)
+{
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+ return ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z');
+#else
+ return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'));
+#endif
+#else
+ switch (c)
+ {
+ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+ case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+ case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+ case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+ case 'Y': case 'Z':
+ case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+ case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+ case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+ case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+ case 'y': case 'z':
+ return 1;
+ default:
+ return 0;
+ }
+#endif
+}
+
+bool
+c_isblank (int c)
+{
+ return (c == ' ' || c == '\t');
+}
+
+bool
+c_iscntrl (int c)
+{
+#if C_CTYPE_ASCII
+ return ((c & ~0x1f) == 0 || c == 0x7f);
+#else
+ switch (c)
+ {
+ case ' ': case '!': case '"': case '#': case '$': case '%':
+ case '&': case '\'': case '(': case ')': case '*': case '+':
+ case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>': case '?':
+ case '@':
+ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+ case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+ case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+ case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+ case 'Y': case 'Z':
+ case '[': case '\\': case ']': case '^': case '_': case '`':
+ case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+ case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+ case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+ case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+ case 'y': case 'z':
+ case '{': case '|': case '}': case '~':
+ return 0;
+ default:
+ return 1;
+ }
+#endif
+}
+
+bool
+c_isdigit (int c)
+{
+#if C_CTYPE_CONSECUTIVE_DIGITS
+ return (c >= '0' && c <= '9');
+#else
+ switch (c)
+ {
+ case '0': case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ return 1;
+ default:
+ return 0;
+ }
+#endif
+}
+
+bool
+c_islower (int c)
+{
+#if C_CTYPE_CONSECUTIVE_LOWERCASE
+ return (c >= 'a' && c <= 'z');
+#else
+ switch (c)
+ {
+ case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+ case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+ case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+ case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+ case 'y': case 'z':
+ return 1;
+ default:
+ return 0;
+ }
+#endif
+}
+
+bool
+c_isgraph (int c)
+{
+#if C_CTYPE_ASCII
+ return (c >= '!' && c <= '~');
+#else
+ switch (c)
+ {
+ case '!': case '"': case '#': case '$': case '%': case '&':
+ case '\'': case '(': case ')': case '*': case '+': case ',':
+ case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>': case '?':
+ case '@':
+ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+ case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+ case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+ case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+ case 'Y': case 'Z':
+ case '[': case '\\': case ']': case '^': case '_': case '`':
+ case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+ case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+ case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+ case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+ case 'y': case 'z':
+ case '{': case '|': case '}': case '~':
+ return 1;
+ default:
+ return 0;
+ }
+#endif
+}
+
+bool
+c_isprint (int c)
+{
+#if C_CTYPE_ASCII
+ return (c >= ' ' && c <= '~');
+#else
+ switch (c)
+ {
+ case ' ': case '!': case '"': case '#': case '$': case '%':
+ case '&': case '\'': case '(': case ')': case '*': case '+':
+ case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>': case '?':
+ case '@':
+ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+ case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+ case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+ case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+ case 'Y': case 'Z':
+ case '[': case '\\': case ']': case '^': case '_': case '`':
+ case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+ case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
+ case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
+ case 's': case 't': case 'u': case 'v': case 'w': case 'x':
+ case 'y': case 'z':
+ case '{': case '|': case '}': case '~':
+ return 1;
+ default:
+ return 0;
+ }
+#endif
+}
+
+bool
+c_ispunct (int c)
+{
+#if C_CTYPE_ASCII
+ return ((c >= '!' && c <= '~')
+ && !((c >= '0' && c <= '9')
+ || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z')));
+#else
+ switch (c)
+ {
+ case '!': case '"': case '#': case '$': case '%': case '&':
+ case '\'': case '(': case ')': case '*': case '+': case ',':
+ case '-': case '.': case '/':
+ case ':': case ';': case '<': case '=': case '>': case '?':
+ case '@':
+ case '[': case '\\': case ']': case '^': case '_': case '`':
+ case '{': case '|': case '}': case '~':
+ return 1;
+ default:
+ return 0;
+ }
+#endif
+}
+
+bool
+c_isspace (int c)
+{
+ return (c == ' ' || c == '\t'
+ || c == '\n' || c == '\v' || c == '\f' || c == '\r');
+}
+
+bool
+c_isupper (int c)
+{
+#if C_CTYPE_CONSECUTIVE_UPPERCASE
+ return (c >= 'A' && c <= 'Z');
+#else
+ switch (c)
+ {
+ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+ case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+ case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+ case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+ case 'Y': case 'Z':
+ return 1;
+ default:
+ return 0;
+ }
+#endif
+}
+
+bool
+c_isxdigit (int c)
+{
+#if C_CTYPE_CONSECUTIVE_DIGITS \
+ && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+ return ((c >= '0' && c <= '9')
+ || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'F'));
+#else
+ return ((c >= '0' && c <= '9')
+ || (c >= 'A' && c <= 'F')
+ || (c >= 'a' && c <= 'f'));
+#endif
+#else
+ switch (c)
+ {
+ case '0': case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+ case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+ return 1;
+ default:
+ return 0;
+ }
+#endif
+}
+
+int
+c_tolower (int c)
+{
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+ return (c >= 'A' && c <= 'Z' ? c - 'A' + 'a' : c);
+#else
+ switch (c)
+ {
+ case 'A': return 'a';
+ case 'B': return 'b';
+ case 'C': return 'c';
+ case 'D': return 'd';
+ case 'E': return 'e';
+ case 'F': return 'f';
+ case 'G': return 'g';
+ case 'H': return 'h';
+ case 'I': return 'i';
+ case 'J': return 'j';
+ case 'K': return 'k';
+ case 'L': return 'l';
+ case 'M': return 'm';
+ case 'N': return 'n';
+ case 'O': return 'o';
+ case 'P': return 'p';
+ case 'Q': return 'q';
+ case 'R': return 'r';
+ case 'S': return 's';
+ case 'T': return 't';
+ case 'U': return 'u';
+ case 'V': return 'v';
+ case 'W': return 'w';
+ case 'X': return 'x';
+ case 'Y': return 'y';
+ case 'Z': return 'z';
+ default: return c;
+ }
+#endif
+}
+
+int
+c_toupper (int c)
+{
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+ return (c >= 'a' && c <= 'z' ? c - 'a' + 'A' : c);
+#else
+ switch (c)
+ {
+ case 'a': return 'A';
+ case 'b': return 'B';
+ case 'c': return 'C';
+ case 'd': return 'D';
+ case 'e': return 'E';
+ case 'f': return 'F';
+ case 'g': return 'G';
+ case 'h': return 'H';
+ case 'i': return 'I';
+ case 'j': return 'J';
+ case 'k': return 'K';
+ case 'l': return 'L';
+ case 'm': return 'M';
+ case 'n': return 'N';
+ case 'o': return 'O';
+ case 'p': return 'P';
+ case 'q': return 'Q';
+ case 'r': return 'R';
+ case 's': return 'S';
+ case 't': return 'T';
+ case 'u': return 'U';
+ case 'v': return 'V';
+ case 'w': return 'W';
+ case 'x': return 'X';
+ case 'y': return 'Y';
+ case 'z': return 'Z';
+ default: return c;
+ }
+#endif
+}
diff --git a/lib/c-ctype.h b/lib/c-ctype.h
new file mode 100644
index 0000000..b26eccf
--- /dev/null
+++ b/lib/c-ctype.h
@@ -0,0 +1,280 @@
+/* Character handling in C locale.
+
+ These functions work like the corresponding functions in <ctype.h>,
+ except that they have the C (POSIX) locale hardwired, whereas the
+ <ctype.h> functions' behaviour depends on the current locale set via
+ setlocale.
+
+ Copyright (C) 2000-2003, 2006 Free Software Foundation, Inc.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software Foundation,
+Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef C_CTYPE_H
+#define C_CTYPE_H
+
+#include <stdbool.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* The functions defined in this file assume the "C" locale and a character
+ set without diacritics (ASCII-US or EBCDIC-US or something like that).
+ Even if the "C" locale on a particular system is an extension of the ASCII
+ character set (like on BeOS, where it is UTF-8, or on AmigaOS, where it
+ is ISO-8859-1), the functions in this file recognize only the ASCII
+ characters. */
+
+
+/* Check whether the ASCII optimizations apply. */
+
+/* ANSI C89 (and ISO C99 5.2.1.3 too) already guarantees that
+ '0', '1', ..., '9' have consecutive integer values. */
+#define C_CTYPE_CONSECUTIVE_DIGITS 1
+
+#if ('A' <= 'Z') \
+ && ('A' + 1 == 'B') && ('B' + 1 == 'C') && ('C' + 1 == 'D') \
+ && ('D' + 1 == 'E') && ('E' + 1 == 'F') && ('F' + 1 == 'G') \
+ && ('G' + 1 == 'H') && ('H' + 1 == 'I') && ('I' + 1 == 'J') \
+ && ('J' + 1 == 'K') && ('K' + 1 == 'L') && ('L' + 1 == 'M') \
+ && ('M' + 1 == 'N') && ('N' + 1 == 'O') && ('O' + 1 == 'P') \
+ && ('P' + 1 == 'Q') && ('Q' + 1 == 'R') && ('R' + 1 == 'S') \
+ && ('S' + 1 == 'T') && ('T' + 1 == 'U') && ('U' + 1 == 'V') \
+ && ('V' + 1 == 'W') && ('W' + 1 == 'X') && ('X' + 1 == 'Y') \
+ && ('Y' + 1 == 'Z')
+#define C_CTYPE_CONSECUTIVE_UPPERCASE 1
+#endif
+
+#if ('a' <= 'z') \
+ && ('a' + 1 == 'b') && ('b' + 1 == 'c') && ('c' + 1 == 'd') \
+ && ('d' + 1 == 'e') && ('e' + 1 == 'f') && ('f' + 1 == 'g') \
+ && ('g' + 1 == 'h') && ('h' + 1 == 'i') && ('i' + 1 == 'j') \
+ && ('j' + 1 == 'k') && ('k' + 1 == 'l') && ('l' + 1 == 'm') \
+ && ('m' + 1 == 'n') && ('n' + 1 == 'o') && ('o' + 1 == 'p') \
+ && ('p' + 1 == 'q') && ('q' + 1 == 'r') && ('r' + 1 == 's') \
+ && ('s' + 1 == 't') && ('t' + 1 == 'u') && ('u' + 1 == 'v') \
+ && ('v' + 1 == 'w') && ('w' + 1 == 'x') && ('x' + 1 == 'y') \
+ && ('y' + 1 == 'z')
+#define C_CTYPE_CONSECUTIVE_LOWERCASE 1
+#endif
+
+#if (' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)
+/* The character set is ASCII or one of its variants or extensions, not EBCDIC.
+ Testing the value of '\n' and '\r' is not relevant. */
+#define C_CTYPE_ASCII 1
+#endif
+
+
+/* Function declarations. */
+
+extern bool c_isascii (int c); /* not locale dependent */
+
+extern bool c_isalnum (int c);
+extern bool c_isalpha (int c);
+extern bool c_isblank (int c);
+extern bool c_iscntrl (int c);
+extern bool c_isdigit (int c);
+extern bool c_islower (int c);
+extern bool c_isgraph (int c);
+extern bool c_isprint (int c);
+extern bool c_ispunct (int c);
+extern bool c_isspace (int c);
+extern bool c_isupper (int c);
+extern bool c_isxdigit (int c);
+
+extern int c_tolower (int c);
+extern int c_toupper (int c);
+
+
+#if defined __GNUC__ && defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ && !defined NO_C_CTYPE_MACROS
+
+/* ASCII optimizations. */
+
+#undef c_isascii
+#define c_isascii(c) \
+ ({ int __c = (c); \
+ (__c >= 0x00 && __c <= 0x7f); \
+ })
+
+#if C_CTYPE_CONSECUTIVE_DIGITS \
+ && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+#undef c_isalnum
+#define c_isalnum(c) \
+ ({ int __c = (c); \
+ ((__c >= '0' && __c <= '9') \
+ || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z')); \
+ })
+#else
+#undef c_isalnum
+#define c_isalnum(c) \
+ ({ int __c = (c); \
+ ((__c >= '0' && __c <= '9') \
+ || (__c >= 'A' && __c <= 'Z') \
+ || (__c >= 'a' && __c <= 'z')); \
+ })
+#endif
+#endif
+
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+#undef c_isalpha
+#define c_isalpha(c) \
+ ({ int __c = (c); \
+ ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'Z'); \
+ })
+#else
+#undef c_isalpha
+#define c_isalpha(c) \
+ ({ int __c = (c); \
+ ((__c >= 'A' && __c <= 'Z') || (__c >= 'a' && __c <= 'z')); \
+ })
+#endif
+#endif
+
+#undef c_isblank
+#define c_isblank(c) \
+ ({ int __c = (c); \
+ (__c == ' ' || __c == '\t'); \
+ })
+
+#if C_CTYPE_ASCII
+#undef c_iscntrl
+#define c_iscntrl(c) \
+ ({ int __c = (c); \
+ ((__c & ~0x1f) == 0 || __c == 0x7f); \
+ })
+#endif
+
+#if C_CTYPE_CONSECUTIVE_DIGITS
+#undef c_isdigit
+#define c_isdigit(c) \
+ ({ int __c = (c); \
+ (__c >= '0' && __c <= '9'); \
+ })
+#endif
+
+#if C_CTYPE_CONSECUTIVE_LOWERCASE
+#undef c_islower
+#define c_islower(c) \
+ ({ int __c = (c); \
+ (__c >= 'a' && __c <= 'z'); \
+ })
+#endif
+
+#if C_CTYPE_ASCII
+#undef c_isgraph
+#define c_isgraph(c) \
+ ({ int __c = (c); \
+ (__c >= '!' && __c <= '~'); \
+ })
+#endif
+
+#if C_CTYPE_ASCII
+#undef c_isprint
+#define c_isprint(c) \
+ ({ int __c = (c); \
+ (__c >= ' ' && __c <= '~'); \
+ })
+#endif
+
+#if C_CTYPE_ASCII
+#undef c_ispunct
+#define c_ispunct(c) \
+ ({ int _c = (c); \
+ (c_isgraph (_c) && ! c_isalnum (_c)); \
+ })
+#endif
+
+#undef c_isspace
+#define c_isspace(c) \
+ ({ int __c = (c); \
+ (__c == ' ' || __c == '\t' \
+ || __c == '\n' || __c == '\v' || __c == '\f' || __c == '\r'); \
+ })
+
+#if C_CTYPE_CONSECUTIVE_UPPERCASE
+#undef c_isupper
+#define c_isupper(c) \
+ ({ int __c = (c); \
+ (__c >= 'A' && __c <= 'Z'); \
+ })
+#endif
+
+#if C_CTYPE_CONSECUTIVE_DIGITS \
+ && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#if C_CTYPE_ASCII
+#undef c_isxdigit
+#define c_isxdigit(c) \
+ ({ int __c = (c); \
+ ((__c >= '0' && __c <= '9') \
+ || ((__c & ~0x20) >= 'A' && (__c & ~0x20) <= 'F')); \
+ })
+#else
+#undef c_isxdigit
+#define c_isxdigit(c) \
+ ({ int __c = (c); \
+ ((__c >= '0' && __c <= '9') \
+ || (__c >= 'A' && __c <= 'F') \
+ || (__c >= 'a' && __c <= 'f')); \
+ })
+#endif
+#endif
+
+#if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
+#undef c_tolower
+#define c_tolower(c) \
+ ({ int __c = (c); \
+ (__c >= 'A' && __c <= 'Z' ? __c - 'A' + 'a' : __c); \
+ })
+#undef c_toupper
+#define c_toupper(c) \
+ ({ int __c = (c); \
+ (__c >= 'a' && __c <= 'z' ? __c - 'a' + 'A' : __c); \
+ })
+#endif
+
+#endif /* optimizing for speed */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* C_CTYPE_H */
diff --git a/lib/c-strcase.h b/lib/c-strcase.h
new file mode 100644
index 0000000..1ababff
--- /dev/null
+++ b/lib/c-strcase.h
@@ -0,0 +1,55 @@
+/* Case-insensitive string comparison functions in C locale.
+ Copyright (C) 1995-1996, 2001, 2003, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef C_STRCASE_H
+#define C_STRCASE_H
+
+#include <stddef.h>
+
+
+/* The functions defined in this file assume the "C" locale and a character
+ set without diacritics (ASCII-US or EBCDIC-US or something like that).
+ Even if the "C" locale on a particular system is an extension of the ASCII
+ character set (like on BeOS, where it is UTF-8, or on AmigaOS, where it
+ is ISO-8859-1), the functions in this file recognize only the ASCII
+ characters. More precisely, one of the string arguments must be an ASCII
+ string; the other one can also contain non-ASCII characters (but then
+ the comparison result will be nonzero). */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Compare strings S1 and S2, ignoring case, returning less than, equal to or
+ greater than zero if S1 is lexicographically less than, equal to or greater
+ than S2. */
+extern int c_strcasecmp (const char *s1, const char *s2);
+
+/* Compare no more than N characters of strings S1 and S2, ignoring case,
+ returning less than, equal to or greater than zero if S1 is
+ lexicographically less than, equal to or greater than S2. */
+extern int c_strncasecmp (const char *s1, const char *s2, size_t n);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* C_STRCASE_H */
diff --git a/lib/c-strcasecmp.c b/lib/c-strcasecmp.c
new file mode 100644
index 0000000..13b15f9
--- /dev/null
+++ b/lib/c-strcasecmp.c
@@ -0,0 +1,57 @@
+/* c-strcasecmp.c -- case insensitive string comparator in C locale
+ Copyright (C) 1998-1999, 2005-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#include "c-strcase.h"
+
+#include <limits.h>
+
+#include "c-ctype.h"
+
+int
+c_strcasecmp (const char *s1, const char *s2)
+{
+ register const unsigned char *p1 = (const unsigned char *) s1;
+ register const unsigned char *p2 = (const unsigned char *) s2;
+ unsigned char c1, c2;
+
+ if (p1 == p2)
+ return 0;
+
+ do
+ {
+ c1 = c_tolower (*p1);
+ c2 = c_tolower (*p2);
+
+ if (c1 == '\0')
+ break;
+
+ ++p1;
+ ++p2;
+ }
+ while (c1 == c2);
+
+ if (UCHAR_MAX <= INT_MAX)
+ return c1 - c2;
+ else
+ /* On machines where 'char' and 'int' are types of the same size, the
+ difference of two 'unsigned char' values - including the sign bit -
+ doesn't fit in an 'int'. */
+ return (c1 > c2 ? 1 : c1 < c2 ? -1 : 0);
+}
diff --git a/lib/c-strncasecmp.c b/lib/c-strncasecmp.c
new file mode 100644
index 0000000..274e9b7
--- /dev/null
+++ b/lib/c-strncasecmp.c
@@ -0,0 +1,57 @@
+/* c-strncasecmp.c -- case insensitive string comparator in C locale
+ Copyright (C) 1998-1999, 2005-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#include "c-strcase.h"
+
+#include <limits.h>
+
+#include "c-ctype.h"
+
+int
+c_strncasecmp (const char *s1, const char *s2, size_t n)
+{
+ register const unsigned char *p1 = (const unsigned char *) s1;
+ register const unsigned char *p2 = (const unsigned char *) s2;
+ unsigned char c1, c2;
+
+ if (p1 == p2 || n == 0)
+ return 0;
+
+ do
+ {
+ c1 = c_tolower (*p1);
+ c2 = c_tolower (*p2);
+
+ if (--n == 0 || c1 == '\0')
+ break;
+
+ ++p1;
+ ++p2;
+ }
+ while (c1 == c2);
+
+ if (UCHAR_MAX <= INT_MAX)
+ return c1 - c2;
+ else
+ /* On machines where 'char' and 'int' are types of the same size, the
+ difference of two 'unsigned char' values - including the sign bit -
+ doesn't fit in an 'int'. */
+ return (c1 > c2 ? 1 : c1 < c2 ? -1 : 0);
+}
diff --git a/lib/c-strtod.c b/lib/c-strtod.c
new file mode 100644
index 0000000..2234ed0
--- /dev/null
+++ b/lib/c-strtod.c
@@ -0,0 +1,79 @@
+/* Convert string to double, using the C locale.
+
+ Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "c-strtod.h"
+
+#include <locale.h>
+#include <stdlib.h>
+
+#include "xalloc.h"
+
+#if LONG
+# define C_STRTOD c_strtold
+# define DOUBLE long double
+# define STRTOD_L strtold_l
+#else
+# define C_STRTOD c_strtod
+# define DOUBLE double
+# define STRTOD_L strtod_l
+#endif
+
+/* c_strtold falls back on strtod if strtold doesn't conform to C99. */
+#if LONG && HAVE_C99_STRTOLD
+# define STRTOD strtold
+#else
+# define STRTOD strtod
+#endif
+
+DOUBLE
+C_STRTOD (char const *nptr, char **endptr)
+{
+ DOUBLE r;
+
+#ifdef LC_ALL_MASK
+
+ locale_t c_locale = newlocale (LC_ALL_MASK, "C", 0);
+ r = STRTOD_L (nptr, endptr, c_locale);
+ freelocale (c_locale);
+
+#else
+
+ char *saved_locale = setlocale (LC_NUMERIC, NULL);
+
+ if (saved_locale)
+ {
+ saved_locale = xstrdup (saved_locale);
+ setlocale (LC_NUMERIC, "C");
+ }
+
+ r = STRTOD (nptr, endptr);
+
+ if (saved_locale)
+ {
+ setlocale (LC_NUMERIC, saved_locale);
+ free (saved_locale);
+ }
+
+#endif
+
+ return r;
+}
diff --git a/lib/c-strtod.h b/lib/c-strtod.h
new file mode 100644
index 0000000..ca9a9e7
--- /dev/null
+++ b/lib/c-strtod.h
@@ -0,0 +1,2 @@
+double c_strtod (char const *, char **);
+long double c_strtold (char const *, char **);
diff --git a/lib/c-strtold.c b/lib/c-strtold.c
new file mode 100644
index 0000000..5510e4a
--- /dev/null
+++ b/lib/c-strtold.c
@@ -0,0 +1,2 @@
+#define LONG 1
+#include "c-strtod.c"
diff --git a/lib/calloc.c b/lib/calloc.c
new file mode 100644
index 0000000..c8b1e1e
--- /dev/null
+++ b/lib/calloc.c
@@ -0,0 +1,44 @@
+/* calloc() function that is glibc compatible.
+ This wrapper function is required at least on Tru64 UNIX 5.1.
+ Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+#undef calloc
+
+#include <stdlib.h>
+
+/* Allocate and zero-fill an NxS-byte block of memory from the heap.
+ If N or S is zero, allocate and zero-fill a 1-byte block. */
+
+void *
+rpl_calloc (size_t n, size_t s)
+{
+ size_t bytes;
+
+ if (n == 0 || s == 0)
+ return calloc (1, 1);
+
+ /* Defend against buggy calloc implementations that mishandle
+ size_t overflow. */
+ bytes = n * s;
+ if (bytes / s != n)
+ return NULL;
+
+ return calloc (n, s);
+}
diff --git a/lib/canon-host.c b/lib/canon-host.c
new file mode 100644
index 0000000..50ba67a
--- /dev/null
+++ b/lib/canon-host.c
@@ -0,0 +1,92 @@
+/* Host name canonicalization
+
+ Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ Written by Derek Price <derek@ximbiot.com>.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2, or (at
+ your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "canon-host.h"
+
+#include <string.h>
+
+#include "getaddrinfo.h"
+
+/* Store the last error for the single-threaded version of this function. */
+static int last_cherror;
+
+/* Single-threaded of wrapper for canon_host_r. After a NULL return, error
+ messages may be retrieved via ch_strerror(). */
+char *
+canon_host (const char *host)
+{
+ return canon_host_r (host, &last_cherror);
+}
+
+/* Return a malloc'd string containing the canonical hostname associated with
+ HOST, or NULL if a canonical name cannot be determined. On NULL return,
+ if CHERROR is not NULL, set *CHERROR to an error code as returned by
+ getaddrinfo(). Use ch_strerror_r() or gai_strerror() to convert a *CHERROR
+ value to a string suitable for error messages.
+
+ WARNINGS
+ HOST must be a string representation of a resolvable name for this host.
+ Strings containing an IP address in dotted decimal notation will be
+ returned as-is, without further resolution.
+
+ The use of the word "canonical" in this context is unfortunate but
+ entrenched. The value returned by this function will be the end result
+ of the resolution of any CNAME chains in the DNS. There may only be one
+ such value for any given hostname, though the actual IP address
+ referenced by this value and the device using that IP address may each
+ actually have any number of such "canonical" hostnames. See the POSIX
+ getaddrinfo spec <http://www.opengroup.org/susv3xsh/getaddrinfo.html">,
+ RFC 1034 <http://www.faqs.org/rfcs/rfc1034.html>, & RFC 2181
+ <http://www.faqs.org/rfcs/rfc2181.html> for more on what this confusing
+ term really refers to. */
+char *
+canon_host_r (char const *host, int *cherror)
+{
+ char *retval = NULL;
+ static struct addrinfo hints;
+ struct addrinfo *res = NULL;
+ int status;
+
+ hints.ai_flags = AI_CANONNAME;
+ status = getaddrinfo (host, NULL, &hints, &res);
+ if (!status)
+ {
+ /* http://lists.gnu.org/archive/html/bug-coreutils/2006-09/msg00300.html
+ says Darwin 7.9.0 getaddrinfo returns 0 but sets
+ res->ai_canonname to NULL. */
+ retval = strdup (res->ai_canonname ? res->ai_canonname : host);
+ if (!retval && cherror)
+ *cherror = EAI_MEMORY;
+ freeaddrinfo (res);
+ }
+ else if (cherror)
+ *cherror = status;
+
+ return retval;
+}
+
+/* Return a string describing the last error encountered by canon_host. */
+const char *
+ch_strerror (void)
+{
+ return gai_strerror (last_cherror);
+}
diff --git a/lib/canon-host.h b/lib/canon-host.h
new file mode 100644
index 0000000..c1f6cb1
--- /dev/null
+++ b/lib/canon-host.h
@@ -0,0 +1,30 @@
+/* Host name canonicalization
+
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+ Written by Derek Price <derek@ximbiot.com>
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2, or (at
+ your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef CANON_HOST_H
+# define CANON_HOST_H 1
+
+char *canon_host (char const *host);
+char *canon_host_r (char const *host, int *cherror);
+
+const char *ch_strerror (void);
+# define ch_strerror_r(cherror) gai_strerror (cherror);
+
+#endif /* !CANON_HOST_H */
diff --git a/lib/canonicalize.c b/lib/canonicalize.c
new file mode 100644
index 0000000..48e4a23
--- /dev/null
+++ b/lib/canonicalize.c
@@ -0,0 +1,307 @@
+/* Return the canonical absolute name of a given file.
+ Copyright (C) 1996-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "canonicalize.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#if HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+
+#include <sys/stat.h>
+
+#include <unistd.h>
+
+#include <errno.h>
+#include <stddef.h>
+
+#include "cycle-check.h"
+#include "filenamecat.h"
+#include "xalloc.h"
+#include "xgetcwd.h"
+
+#ifndef ELOOP
+# define ELOOP 0
+#endif
+#ifndef __set_errno
+# define __set_errno(Val) errno = (Val)
+#endif
+
+#include "pathmax.h"
+#include "xreadlink.h"
+
+#if !HAVE_CANONICALIZE_FILE_NAME
+/* Return the canonical absolute name of file NAME. A canonical name
+ does not contain any `.', `..' components nor any repeated file name
+ separators ('/') or symlinks. All components must exist.
+ The result is malloc'd. */
+
+char *
+canonicalize_file_name (const char *name)
+{
+# if HAVE_RESOLVEPATH
+
+ char *resolved, *extra_buf = NULL;
+ size_t resolved_size;
+ ssize_t resolved_len;
+
+ if (name == NULL)
+ {
+ __set_errno (EINVAL);
+ return NULL;
+ }
+
+ if (name[0] == '\0')
+ {
+ __set_errno (ENOENT);
+ return NULL;
+ }
+
+ /* All known hosts with resolvepath (e.g. Solaris 7) don't turn
+ relative names into absolute ones, so prepend the working
+ directory if the file name is not absolute. */
+ if (name[0] != '/')
+ {
+ char *wd;
+
+ if (!(wd = xgetcwd ()))
+ return NULL;
+
+ extra_buf = file_name_concat (wd, name, NULL);
+ name = extra_buf;
+ free (wd);
+ }
+
+ resolved_size = strlen (name);
+ while (1)
+ {
+ resolved_size = 2 * resolved_size + 1;
+ resolved = xmalloc (resolved_size);
+ resolved_len = resolvepath (name, resolved, resolved_size);
+ if (resolved_len < 0)
+ {
+ free (resolved);
+ free (extra_buf);
+ return NULL;
+ }
+ if (resolved_len < resolved_size)
+ break;
+ free (resolved);
+ }
+
+ free (extra_buf);
+
+ /* NUL-terminate the resulting name. */
+ resolved[resolved_len] = '\0';
+
+ return resolved;
+
+# else
+
+ return canonicalize_filename_mode (name, CAN_EXISTING);
+
+# endif /* !HAVE_RESOLVEPATH */
+}
+#endif /* !HAVE_CANONICALIZE_FILE_NAME */
+
+/* Return the canonical absolute name of file NAME. A canonical name
+ does not contain any `.', `..' components nor any repeated file name
+ separators ('/') or symlinks. Whether components must exist
+ or not depends on canonicalize mode. The result is malloc'd. */
+
+char *
+canonicalize_filename_mode (const char *name, canonicalize_mode_t can_mode)
+{
+ char *rname, *dest, *extra_buf = NULL;
+ char const *start;
+ char const *end;
+ char const *rname_limit;
+ size_t extra_len = 0;
+ struct cycle_check_state cycle_state;
+
+ if (name == NULL)
+ {
+ __set_errno (EINVAL);
+ return NULL;
+ }
+
+ if (name[0] == '\0')
+ {
+ __set_errno (ENOENT);
+ return NULL;
+ }
+
+ if (name[0] != '/')
+ {
+ rname = xgetcwd ();
+ if (!rname)
+ return NULL;
+ dest = strchr (rname, '\0');
+ if (dest - rname < PATH_MAX)
+ {
+ char *p = xrealloc (rname, PATH_MAX);
+ dest = p + (dest - rname);
+ rname = p;
+ rname_limit = rname + PATH_MAX;
+ }
+ else
+ {
+ rname_limit = dest;
+ }
+ }
+ else
+ {
+ rname = xmalloc (PATH_MAX);
+ rname_limit = rname + PATH_MAX;
+ rname[0] = '/';
+ dest = rname + 1;
+ }
+
+ cycle_check_init (&cycle_state);
+ for (start = end = name; *start; start = end)
+ {
+ /* Skip sequence of multiple file name separators. */
+ while (*start == '/')
+ ++start;
+
+ /* Find end of component. */
+ for (end = start; *end && *end != '/'; ++end)
+ /* Nothing. */;
+
+ if (end - start == 0)
+ break;
+ else if (end - start == 1 && start[0] == '.')
+ /* nothing */;
+ else if (end - start == 2 && start[0] == '.' && start[1] == '.')
+ {
+ /* Back up to previous component, ignore if at root already. */
+ if (dest > rname + 1)
+ while ((--dest)[-1] != '/');
+ }
+ else
+ {
+ struct stat st;
+
+ if (dest[-1] != '/')
+ *dest++ = '/';
+
+ if (dest + (end - start) >= rname_limit)
+ {
+ ptrdiff_t dest_offset = dest - rname;
+ size_t new_size = rname_limit - rname;
+
+ if (end - start + 1 > PATH_MAX)
+ new_size += end - start + 1;
+ else
+ new_size += PATH_MAX;
+ rname = xrealloc (rname, new_size);
+ rname_limit = rname + new_size;
+
+ dest = rname + dest_offset;
+ }
+
+ dest = memcpy (dest, start, end - start);
+ dest += end - start;
+ *dest = '\0';
+
+ if (lstat (rname, &st) != 0)
+ {
+ if (can_mode == CAN_EXISTING)
+ goto error;
+ if (can_mode == CAN_ALL_BUT_LAST && *end)
+ goto error;
+ st.st_mode = 0;
+ }
+
+ if (S_ISLNK (st.st_mode))
+ {
+ char *buf;
+ size_t n, len;
+
+ if (cycle_check (&cycle_state, &st))
+ {
+ __set_errno (ELOOP);
+ if (can_mode == CAN_MISSING)
+ continue;
+ else
+ goto error;
+ }
+
+ buf = xreadlink_with_size (rname, st.st_size);
+ if (!buf)
+ {
+ if (can_mode == CAN_MISSING)
+ continue;
+ else
+ goto error;
+ }
+
+ n = strlen (buf);
+ len = strlen (end);
+
+ if (!extra_len)
+ {
+ extra_len =
+ ((n + len + 1) > PATH_MAX) ? (n + len + 1) : PATH_MAX;
+ extra_buf = xmalloc (extra_len);
+ }
+ else if ((n + len + 1) > extra_len)
+ {
+ extra_len = n + len + 1;
+ extra_buf = xrealloc (extra_buf, extra_len);
+ }
+
+ /* Careful here, end may be a pointer into extra_buf... */
+ memmove (&extra_buf[n], end, len + 1);
+ name = end = memcpy (extra_buf, buf, n);
+
+ if (buf[0] == '/')
+ dest = rname + 1; /* It's an absolute symlink */
+ else
+ /* Back up to previous component, ignore if at root already: */
+ if (dest > rname + 1)
+ while ((--dest)[-1] != '/');
+
+ free (buf);
+ }
+ else
+ {
+ if (!S_ISDIR (st.st_mode) && *end && (can_mode != CAN_MISSING))
+ {
+ errno = ENOTDIR;
+ goto error;
+ }
+ }
+ }
+ }
+ if (dest > rname + 1 && dest[-1] == '/')
+ --dest;
+ *dest = '\0';
+
+ free (extra_buf);
+ return rname;
+
+error:
+ free (extra_buf);
+ free (rname);
+ return NULL;
+}
diff --git a/lib/canonicalize.h b/lib/canonicalize.h
new file mode 100644
index 0000000..5c4d3f1
--- /dev/null
+++ b/lib/canonicalize.h
@@ -0,0 +1,54 @@
+/* Return the canonical absolute name of a given file.
+ Copyright (C) 1996-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef CANONICALIZE_H_
+# define CANONICALIZE_H_
+
+# if GNULIB_CANONICALIZE
+enum canonicalize_mode_t
+ {
+ /* All components must exist. */
+ CAN_EXISTING = 0,
+
+ /* All components excluding last one must exist. */
+ CAN_ALL_BUT_LAST = 1,
+
+ /* No requirements on components existence. */
+ CAN_MISSING = 2
+ };
+typedef enum canonicalize_mode_t canonicalize_mode_t;
+
+/* Return a malloc'd string containing the canonical absolute name of
+ the named file. This acts like canonicalize_file_name, except that
+ whether components must exist depends on the canonicalize_mode_t
+ argument. */
+char *canonicalize_filename_mode (const char *, canonicalize_mode_t);
+# endif
+
+# if HAVE_DECL_CANONICALIZE_FILE_NAME
+# include <stdlib.h>
+# else
+/* Return a malloc'd string containing the canonical absolute name of
+ the named file. If any file name component does not exist or is a
+ symlink to a nonexistent file, return NULL. A canonical name does
+ not contain any `.', `..' components nor any repeated file name
+ separators ('/') or symlinks. */
+char *canonicalize_file_name (const char *);
+# endif
+
+#endif /* !CANONICALIZE_H_ */
diff --git a/lib/chdir-long.c b/lib/chdir-long.c
new file mode 100644
index 0000000..3fc7ef2
--- /dev/null
+++ b/lib/chdir-long.c
@@ -0,0 +1,265 @@
+/* provide a chdir function that tries not to fail due to ENAMETOOLONG
+ Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+
+#include "chdir-long.h"
+
+#include <fcntl.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <string.h>
+#include <errno.h>
+#include <stdio.h>
+#include <assert.h>
+
+#include "openat.h"
+
+#ifndef PATH_MAX
+# error "compile this file only if your system defines PATH_MAX"
+#endif
+
+struct cd_buf
+{
+ int fd;
+};
+
+static inline void
+cdb_init (struct cd_buf *cdb)
+{
+ cdb->fd = AT_FDCWD;
+}
+
+static inline int
+cdb_fchdir (struct cd_buf const *cdb)
+{
+ return fchdir (cdb->fd);
+}
+
+static inline void
+cdb_free (struct cd_buf const *cdb)
+{
+ if (0 <= cdb->fd)
+ {
+ bool close_fail = close (cdb->fd);
+ assert (! close_fail);
+ }
+}
+
+/* Given a file descriptor of an open directory (or AT_FDCWD), CDB->fd,
+ try to open the CDB->fd-relative directory, DIR. If the open succeeds,
+ update CDB->fd with the resulting descriptor, close the incoming file
+ descriptor, and return zero. Upon failure, return -1 and set errno. */
+static int
+cdb_advance_fd (struct cd_buf *cdb, char const *dir)
+{
+ int new_fd = openat (cdb->fd, dir,
+ O_RDONLY | O_DIRECTORY | O_NOCTTY | O_NONBLOCK);
+ if (new_fd < 0)
+ return -1;
+
+ cdb_free (cdb);
+ cdb->fd = new_fd;
+
+ return 0;
+}
+
+/* Return a pointer to the first non-slash in S. */
+static inline char *
+find_non_slash (char const *s)
+{
+ size_t n_slash = strspn (s, "/");
+ return (char *) s + n_slash;
+}
+
+/* This is a function much like chdir, but without the PATH_MAX limitation
+ on the length of the directory name. A significant difference is that
+ it must be able to modify (albeit only temporarily) the directory
+ name. It handles an arbitrarily long directory name by operating
+ on manageable portions of the name. On systems without the openat
+ syscall, this means changing the working directory to more and more
+ `distant' points along the long directory name and then restoring
+ the working directory. If any of those attempts to save or restore
+ the working directory fails, this function exits nonzero.
+
+ Note that this function may still fail with errno == ENAMETOOLONG, but
+ only if the specified directory name contains a component that is long
+ enough to provoke such a failure all by itself (e.g. if the component
+ has length PATH_MAX or greater on systems that define PATH_MAX). */
+
+int
+chdir_long (char *dir)
+{
+ int e = chdir (dir);
+ if (e == 0 || errno != ENAMETOOLONG)
+ return e;
+
+ {
+ size_t len = strlen (dir);
+ char *dir_end = dir + len;
+ struct cd_buf cdb;
+ size_t n_leading_slash;
+
+ cdb_init (&cdb);
+
+ /* If DIR is the empty string, then the chdir above
+ must have failed and set errno to ENOENT. */
+ assert (0 < len);
+ assert (PATH_MAX <= len);
+
+ /* Count leading slashes. */
+ n_leading_slash = strspn (dir, "/");
+
+ /* Handle any leading slashes as well as any name that matches
+ the regular expression, m!^//hostname[/]*! . Handling this
+ prefix separately usually results in a single additional
+ cdb_advance_fd call, but it's worthwhile, since it makes the
+ code in the following loop cleaner. */
+ if (n_leading_slash == 2)
+ {
+ int err;
+ /* Find next slash.
+ We already know that dir[2] is neither a slash nor '\0'. */
+ char *slash = memchr (dir + 3, '/', dir_end - (dir + 3));
+ if (slash == NULL)
+ {
+ errno = ENAMETOOLONG;
+ return -1;
+ }
+ *slash = '\0';
+ err = cdb_advance_fd (&cdb, dir);
+ *slash = '/';
+ if (err != 0)
+ goto Fail;
+ dir = find_non_slash (slash + 1);
+ }
+ else if (n_leading_slash)
+ {
+ if (cdb_advance_fd (&cdb, "/") != 0)
+ goto Fail;
+ dir += n_leading_slash;
+ }
+
+ assert (*dir != '/');
+ assert (dir <= dir_end);
+
+ while (PATH_MAX <= dir_end - dir)
+ {
+ int err;
+ /* Find a slash that is PATH_MAX or fewer bytes away from dir.
+ I.e. see if there is a slash that will give us a name of
+ length PATH_MAX-1 or less. */
+ char *slash = memrchr (dir, '/', PATH_MAX);
+ if (slash == NULL)
+ {
+ errno = ENAMETOOLONG;
+ return -1;
+ }
+
+ *slash = '\0';
+ assert (slash - dir < PATH_MAX);
+ err = cdb_advance_fd (&cdb, dir);
+ *slash = '/';
+ if (err != 0)
+ goto Fail;
+
+ dir = find_non_slash (slash + 1);
+ }
+
+ if (dir < dir_end)
+ {
+ if (cdb_advance_fd (&cdb, dir) != 0)
+ goto Fail;
+ }
+
+ if (cdb_fchdir (&cdb) != 0)
+ goto Fail;
+
+ cdb_free (&cdb);
+ return 0;
+
+ Fail:
+ {
+ int saved_errno = errno;
+ cdb_free (&cdb);
+ errno = saved_errno;
+ return -1;
+ }
+ }
+}
+
+#if TEST_CHDIR
+
+# include <stdio.h>
+# include "closeout.h"
+# include "error.h"
+
+char *program_name;
+
+int
+main (int argc, char *argv[])
+{
+ char *line = NULL;
+ size_t n = 0;
+ int len;
+
+ program_name = argv[0];
+ atexit (close_stdout);
+
+ len = getline (&line, &n, stdin);
+ if (len < 0)
+ {
+ int saved_errno = errno;
+ if (feof (stdin))
+ exit (0);
+
+ error (EXIT_FAILURE, saved_errno,
+ "reading standard input");
+ }
+ else if (len == 0)
+ exit (0);
+
+ if (line[len-1] == '\n')
+ line[len-1] = '\0';
+
+ if (chdir_long (line) != 0)
+ error (EXIT_FAILURE, errno,
+ "chdir_long failed: %s", line);
+
+ if (argc <= 1)
+ {
+ /* Using `pwd' here makes sense only if it is a robust implementation,
+ like the one in coreutils after the 2004-04-19 changes. */
+ char const *cmd = "pwd";
+ execlp (cmd, (char *) NULL);
+ error (EXIT_FAILURE, errno, "%s", cmd);
+ }
+
+ fclose (stdin);
+ fclose (stderr);
+
+ exit (EXIT_SUCCESS);
+}
+#endif
+
+/*
+Local Variables:
+compile-command: "gcc -DTEST_CHDIR=1 -g -O -W -Wall chdir-long.c libcoreutils.a"
+End:
+*/
diff --git a/lib/chdir-long.h b/lib/chdir-long.h
new file mode 100644
index 0000000..4852b40
--- /dev/null
+++ b/lib/chdir-long.h
@@ -0,0 +1,35 @@
+/* provide a chdir function that tries not to fail due to ENAMETOOLONG
+ Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <unistd.h>
+#include <limits.h>
+
+#ifndef PATH_MAX
+# ifdef MAXPATHLEN
+# define PATH_MAX MAXPATHLEN
+# endif
+#endif
+
+/* On systems without PATH_MAX, presume that chdir accepts
+ arbitrarily long directory names. */
+#ifndef PATH_MAX
+# define chdir_long(Dir) chdir (Dir)
+#else
+int chdir_long (char *dir);
+#endif
diff --git a/lib/chown.c b/lib/chown.c
new file mode 100644
index 0000000..b7786f6
--- /dev/null
+++ b/lib/chown.c
@@ -0,0 +1,104 @@
+/* provide consistent interface to chown for systems that don't interpret
+ an ID of -1 as meaning `don't change the corresponding ID'.
+
+ Copyright (C) 1997, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+
+/* Specification. */
+#include <unistd.h>
+
+#include <stdbool.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+
+/* Below we refer to the system's chown(). */
+#undef chown
+
+/* The results of open() in this file are not used with fchdir,
+ therefore save some unnecessary work in fchdir.c. */
+#undef open
+#undef close
+
+/* Provide a more-closely POSIX-conforming version of chown on
+ systems with one or both of the following problems:
+ - chown doesn't treat an ID of -1 as meaning
+ `don't change the corresponding ID'.
+ - chown doesn't dereference symlinks. */
+
+int
+rpl_chown (const char *file, uid_t uid, gid_t gid)
+{
+#if CHOWN_FAILS_TO_HONOR_ID_OF_NEGATIVE_ONE
+ if (gid == (gid_t) -1 || uid == (uid_t) -1)
+ {
+ struct stat file_stats;
+
+ /* Stat file to get id(s) that should remain unchanged. */
+ if (stat (file, &file_stats))
+ return -1;
+
+ if (gid == (gid_t) -1)
+ gid = file_stats.st_gid;
+
+ if (uid == (uid_t) -1)
+ uid = file_stats.st_uid;
+ }
+#endif
+
+#if CHOWN_MODIFIES_SYMLINK
+ {
+ /* Handle the case in which the system-supplied chown function
+ does *not* follow symlinks. Instead, it changes permissions
+ on the symlink itself. To work around that, we open the
+ file (but this can fail due to lack of read or write permission) and
+ use fchown on the resulting descriptor. */
+ int open_flags = O_NONBLOCK | O_NOCTTY;
+ int fd = open (file, O_RDONLY | open_flags);
+ if (0 <= fd
+ || (errno == EACCES
+ && 0 <= (fd = open (file, O_WRONLY | open_flags))))
+ {
+ int result = fchown (fd, uid, gid);
+ int saved_errno = errno;
+
+ /* POSIX says fchown can fail with errno == EINVAL on sockets,
+ so fall back on chown in that case. */
+ struct stat sb;
+ bool fchown_socket_failure =
+ (result != 0 && saved_errno == EINVAL
+ && fstat (fd, &sb) == 0 && S_ISFIFO (sb.st_mode));
+
+ close (fd);
+
+ if (! fchown_socket_failure)
+ {
+ errno = saved_errno;
+ return result;
+ }
+ }
+ else if (errno != EACCES)
+ return -1;
+ }
+#endif
+
+ return chown (file, uid, gid);
+}
diff --git a/lib/cloexec.c b/lib/cloexec.c
new file mode 100644
index 0000000..6480006
--- /dev/null
+++ b/lib/cloexec.c
@@ -0,0 +1,59 @@
+/* closexec.c - set or clear the close-on-exec descriptor flag
+
+ Copyright (C) 1991, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ The code is taken from glibc/manual/llio.texi */
+
+#include <config.h>
+
+#include "cloexec.h"
+
+#include <unistd.h>
+#include <fcntl.h>
+
+#ifndef FD_CLOEXEC
+# define FD_CLOEXEC 1
+#endif
+
+/* Set the `FD_CLOEXEC' flag of DESC if VALUE is true,
+ or clear the flag if VALUE is false.
+ Return 0 on success, or -1 on error with `errno' set. */
+
+int
+set_cloexec_flag (int desc, bool value)
+{
+#if defined F_GETFD && defined F_SETFD
+
+ int flags = fcntl (desc, F_GETFD, 0);
+
+ if (0 <= flags)
+ {
+ int newflags = (value ? flags | FD_CLOEXEC : flags & ~FD_CLOEXEC);
+
+ if (flags == newflags
+ || fcntl (desc, F_SETFD, newflags) != -1)
+ return 0;
+ }
+
+ return -1;
+
+#else
+
+ return 0;
+
+#endif
+}
diff --git a/lib/cloexec.h b/lib/cloexec.h
new file mode 100644
index 0000000..c25921d
--- /dev/null
+++ b/lib/cloexec.h
@@ -0,0 +1,2 @@
+#include <stdbool.h>
+int set_cloexec_flag (int desc, bool value);
diff --git a/lib/close-stream.c b/lib/close-stream.c
new file mode 100644
index 0000000..72d0d68
--- /dev/null
+++ b/lib/close-stream.c
@@ -0,0 +1,76 @@
+/* Close a stream, with nicer error checking than fclose's.
+
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "close-stream.h"
+
+#include <errno.h>
+#include <stdbool.h>
+
+#include "__fpending.h"
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+/* Close STREAM. Return 0 if successful, EOF (setting errno)
+ otherwise. A failure might set errno to 0 if the error number
+ cannot be determined.
+
+ If a program writes *anything* to STREAM, that program should close
+ STREAM and make sure that it succeeds before exiting. Otherwise,
+ suppose that you go to the extreme of checking the return status
+ of every function that does an explicit write to STREAM. The last
+ printf can succeed in writing to the internal stream buffer, and yet
+ the fclose(STREAM) could still fail (due e.g., to a disk full error)
+ when it tries to write out that buffered data. Thus, you would be
+ left with an incomplete output file and the offending program would
+ exit successfully. Even calling fflush is not always sufficient,
+ since some file systems (NFS and CODA) buffer written/flushed data
+ until an actual close call.
+
+ Besides, it's wasteful to check the return value from every call
+ that writes to STREAM -- just let the internal stream state record
+ the failure. That's what the ferror test is checking below. */
+
+int
+close_stream (FILE *stream)
+{
+ bool some_pending = (__fpending (stream) != 0);
+ bool prev_fail = (ferror (stream) != 0);
+ bool fclose_fail = (fclose (stream) != 0);
+
+ /* Return an error indication if there was a previous failure or if
+ fclose failed, with one exception: ignore an fclose failure if
+ there was no previous error, no data remains to be flushed, and
+ fclose failed with EBADF. That can happen when a program like cp
+ is invoked like this `cp a b >&-' (i.e., with standard output
+ closed) and doesn't generate any output (hence no previous error
+ and nothing to be flushed). */
+
+ if (prev_fail || (fclose_fail && (some_pending || errno != EBADF)))
+ {
+ if (! fclose_fail)
+ errno = 0;
+ return EOF;
+ }
+
+ return 0;
+}
diff --git a/lib/close-stream.h b/lib/close-stream.h
new file mode 100644
index 0000000..be3d419
--- /dev/null
+++ b/lib/close-stream.h
@@ -0,0 +1,2 @@
+#include <stdio.h>
+int close_stream (FILE *stream);
diff --git a/lib/closeout.c b/lib/closeout.c
new file mode 100644
index 0000000..830f16f
--- /dev/null
+++ b/lib/closeout.c
@@ -0,0 +1,86 @@
+/* Close standard output and standard error, exiting with a diagnostic on error.
+
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "closeout.h"
+
+#include <errno.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+#include "close-stream.h"
+#include "error.h"
+#include "exitfail.h"
+#include "quotearg.h"
+
+static const char *file_name;
+
+/* Set the file name to be reported in the event an error is detected
+ by close_stdout. */
+void
+close_stdout_set_file_name (const char *file)
+{
+ file_name = file;
+}
+
+/* Close standard output. On error, issue a diagnostic and _exit
+ with status 'exit_failure'.
+
+ Also close standard error. On error, _exit with status 'exit_failure'.
+
+ Since close_stdout is commonly registered via 'atexit', POSIX
+ and the C standard both say that it should not call 'exit',
+ because the behavior is undefined if 'exit' is called more than
+ once. So it calls '_exit' instead of 'exit'. If close_stdout
+ is registered via atexit before other functions are registered,
+ the other functions can act before this _exit is invoked.
+
+ Applications that use close_stdout should flush any streams
+ other than stdout and stderr before exiting, since the call to
+ _exit will bypass other buffer flushing. Applications should
+ be flushing and closing other streams anyway, to check for I/O
+ errors. Also, applications should not use tmpfile, since _exit
+ can bypass the removal of these files.
+
+ It's important to detect such failures and exit nonzero because many
+ tools (most notably `make' and other build-management systems) depend
+ on being able to detect failure in other tools via their exit status. */
+
+void
+close_stdout (void)
+{
+ if (close_stream (stdout) != 0)
+ {
+ char const *write_error = _("write error");
+ if (file_name)
+ error (0, errno, "%s: %s", quotearg_colon (file_name),
+ write_error);
+ else
+ error (0, errno, "%s", write_error);
+
+ _exit (exit_failure);
+ }
+
+ if (close_stream (stderr) != 0)
+ _exit (exit_failure);
+}
diff --git a/lib/closeout.h b/lib/closeout.h
new file mode 100644
index 0000000..8bed23b
--- /dev/null
+++ b/lib/closeout.h
@@ -0,0 +1,33 @@
+/* Close standard output and standard error.
+
+ Copyright (C) 1998, 2000, 2003, 2004, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef CLOSEOUT_H
+# define CLOSEOUT_H 1
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+void close_stdout_set_file_name (const char *file);
+void close_stdout (void);
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif
diff --git a/lib/config.charset b/lib/config.charset
new file mode 100755
index 0000000..148ea44
--- /dev/null
+++ b/lib/config.charset
@@ -0,0 +1,639 @@
+#! /bin/sh
+# Output a system dependent table of character encoding aliases.
+#
+# Copyright (C) 2000-2004, 2006 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# The table consists of lines of the form
+# ALIAS CANONICAL
+#
+# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)".
+# ALIAS is compared in a case sensitive way.
+#
+# CANONICAL is the GNU canonical name for this character encoding.
+# It must be an encoding supported by libiconv. Support by GNU libc is
+# also desirable. CANONICAL is case insensitive. Usually an upper case
+# MIME charset name is preferred.
+# The current list of GNU canonical charset names is as follows.
+#
+# name MIME? used by which systems
+# ASCII, ANSI_X3.4-1968 glibc solaris freebsd netbsd darwin
+# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd netbsd darwin
+# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd netbsd darwin
+# ISO-8859-3 Y glibc solaris
+# ISO-8859-4 Y osf solaris freebsd netbsd darwin
+# ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd netbsd darwin
+# ISO-8859-6 Y glibc aix hpux solaris
+# ISO-8859-7 Y glibc aix hpux irix osf solaris netbsd darwin
+# ISO-8859-8 Y glibc aix hpux osf solaris
+# ISO-8859-9 Y glibc aix hpux irix osf solaris darwin
+# ISO-8859-13 glibc netbsd darwin
+# ISO-8859-14 glibc
+# ISO-8859-15 glibc aix osf solaris freebsd darwin
+# KOI8-R Y glibc solaris freebsd netbsd darwin
+# KOI8-U Y glibc freebsd netbsd darwin
+# KOI8-T glibc
+# CP437 dos
+# CP775 dos
+# CP850 aix osf dos
+# CP852 dos
+# CP855 dos
+# CP856 aix
+# CP857 dos
+# CP861 dos
+# CP862 dos
+# CP864 dos
+# CP865 dos
+# CP866 freebsd netbsd darwin dos
+# CP869 dos
+# CP874 woe32 dos
+# CP922 aix
+# CP932 aix woe32 dos
+# CP943 aix
+# CP949 osf woe32 dos
+# CP950 woe32 dos
+# CP1046 aix
+# CP1124 aix
+# CP1125 dos
+# CP1129 aix
+# CP1250 woe32
+# CP1251 glibc solaris netbsd darwin woe32
+# CP1252 aix woe32
+# CP1253 woe32
+# CP1254 woe32
+# CP1255 glibc woe32
+# CP1256 woe32
+# CP1257 woe32
+# GB2312 Y glibc aix hpux irix solaris freebsd netbsd darwin
+# EUC-JP Y glibc aix hpux irix osf solaris freebsd netbsd darwin
+# EUC-KR Y glibc aix hpux irix osf solaris freebsd netbsd darwin
+# EUC-TW glibc aix hpux irix osf solaris netbsd
+# BIG5 Y glibc aix hpux osf solaris freebsd netbsd darwin
+# BIG5-HKSCS glibc solaris
+# GBK glibc aix osf solaris woe32 dos
+# GB18030 glibc solaris netbsd
+# SHIFT_JIS Y hpux osf solaris freebsd netbsd darwin
+# JOHAB glibc solaris woe32
+# TIS-620 glibc aix hpux osf solaris
+# VISCII Y glibc
+# TCVN5712-1 glibc
+# GEORGIAN-PS glibc
+# HP-ROMAN8 hpux
+# HP-ARABIC8 hpux
+# HP-GREEK8 hpux
+# HP-HEBREW8 hpux
+# HP-TURKISH8 hpux
+# HP-KANA8 hpux
+# DEC-KANJI osf
+# DEC-HANYU osf
+# UTF-8 Y glibc aix hpux osf solaris netbsd darwin
+#
+# Note: Names which are not marked as being a MIME name should not be used in
+# Internet protocols for information interchange (mail, news, etc.).
+#
+# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications
+# must understand both names and treat them as equivalent.
+#
+# The first argument passed to this file is the canonical host specification,
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+
+host="$1"
+os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'`
+echo "# This file contains a table of character encoding aliases,"
+echo "# suitable for operating system '${os}'."
+echo "# It was automatically generated from config.charset."
+# List of references, updated during installation:
+echo "# Packages using this file: "
+case "$os" in
+ linux-gnulibc1*)
+ # Linux libc5 doesn't have nl_langinfo(CODESET); therefore
+ # localcharset.c falls back to using the full locale name
+ # from the environment variables.
+ echo "C ASCII"
+ echo "POSIX ASCII"
+ for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \
+ en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \
+ en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \
+ es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \
+ et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \
+ fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \
+ it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \
+ sv_FI sv_SE; do
+ echo "$l ISO-8859-1"
+ echo "$l.iso-8859-1 ISO-8859-1"
+ echo "$l.iso-8859-15 ISO-8859-15"
+ echo "$l.iso-8859-15@euro ISO-8859-15"
+ echo "$l@euro ISO-8859-15"
+ echo "$l.cp-437 CP437"
+ echo "$l.cp-850 CP850"
+ echo "$l.cp-1252 CP1252"
+ echo "$l.cp-1252@euro CP1252"
+ #echo "$l.atari-st ATARI-ST" # not a commonly used encoding
+ echo "$l.utf-8 UTF-8"
+ echo "$l.utf-8@euro UTF-8"
+ done
+ for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \
+ sl_SI sr sr_CS sr_YU; do
+ echo "$l ISO-8859-2"
+ echo "$l.iso-8859-2 ISO-8859-2"
+ echo "$l.cp-852 CP852"
+ echo "$l.cp-1250 CP1250"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in mk mk_MK ru ru_RU; do
+ echo "$l ISO-8859-5"
+ echo "$l.iso-8859-5 ISO-8859-5"
+ echo "$l.koi8-r KOI8-R"
+ echo "$l.cp-866 CP866"
+ echo "$l.cp-1251 CP1251"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in ar ar_SA; do
+ echo "$l ISO-8859-6"
+ echo "$l.iso-8859-6 ISO-8859-6"
+ echo "$l.cp-864 CP864"
+ #echo "$l.cp-868 CP868" # not a commonly used encoding
+ echo "$l.cp-1256 CP1256"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in el el_GR gr gr_GR; do
+ echo "$l ISO-8859-7"
+ echo "$l.iso-8859-7 ISO-8859-7"
+ echo "$l.cp-869 CP869"
+ echo "$l.cp-1253 CP1253"
+ echo "$l.cp-1253@euro CP1253"
+ echo "$l.utf-8 UTF-8"
+ echo "$l.utf-8@euro UTF-8"
+ done
+ for l in he he_IL iw iw_IL; do
+ echo "$l ISO-8859-8"
+ echo "$l.iso-8859-8 ISO-8859-8"
+ echo "$l.cp-862 CP862"
+ echo "$l.cp-1255 CP1255"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in tr tr_TR; do
+ echo "$l ISO-8859-9"
+ echo "$l.iso-8859-9 ISO-8859-9"
+ echo "$l.cp-857 CP857"
+ echo "$l.cp-1254 CP1254"
+ echo "$l.utf-8 UTF-8"
+ done
+ for l in lt lt_LT lv lv_LV; do
+ #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name
+ echo "$l ISO-8859-13"
+ done
+ for l in ru_UA uk uk_UA; do
+ echo "$l KOI8-U"
+ done
+ for l in zh zh_CN; do
+ #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name
+ echo "$l GB2312"
+ done
+ for l in ja ja_JP ja_JP.EUC; do
+ echo "$l EUC-JP"
+ done
+ for l in ko ko_KR; do
+ echo "$l EUC-KR"
+ done
+ for l in th th_TH; do
+ echo "$l TIS-620"
+ done
+ for l in fa fa_IR; do
+ #echo "$l ISIRI-3342" # a broken encoding
+ echo "$l.utf-8 UTF-8"
+ done
+ ;;
+ linux* | *-gnu*)
+ # With glibc-2.1 or newer, we don't need any canonicalization,
+ # because glibc has iconv and both glibc and libiconv support all
+ # GNU canonical names directly. Therefore, the Makefile does not
+ # need to install the alias file at all.
+ # The following applies only to glibc-2.0.x and older libcs.
+ echo "ISO_646.IRV:1983 ASCII"
+ ;;
+ aix*)
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-6 ISO-8859-6"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-8 ISO-8859-8"
+ echo "ISO8859-9 ISO-8859-9"
+ echo "ISO8859-15 ISO-8859-15"
+ echo "IBM-850 CP850"
+ echo "IBM-856 CP856"
+ echo "IBM-921 ISO-8859-13"
+ echo "IBM-922 CP922"
+ echo "IBM-932 CP932"
+ echo "IBM-943 CP943"
+ echo "IBM-1046 CP1046"
+ echo "IBM-1124 CP1124"
+ echo "IBM-1129 CP1129"
+ echo "IBM-1252 CP1252"
+ echo "IBM-eucCN GB2312"
+ echo "IBM-eucJP EUC-JP"
+ echo "IBM-eucKR EUC-KR"
+ echo "IBM-eucTW EUC-TW"
+ echo "big5 BIG5"
+ echo "GBK GBK"
+ echo "TIS-620 TIS-620"
+ echo "UTF-8 UTF-8"
+ ;;
+ hpux*)
+ echo "iso88591 ISO-8859-1"
+ echo "iso88592 ISO-8859-2"
+ echo "iso88595 ISO-8859-5"
+ echo "iso88596 ISO-8859-6"
+ echo "iso88597 ISO-8859-7"
+ echo "iso88598 ISO-8859-8"
+ echo "iso88599 ISO-8859-9"
+ echo "iso885915 ISO-8859-15"
+ echo "roman8 HP-ROMAN8"
+ echo "arabic8 HP-ARABIC8"
+ echo "greek8 HP-GREEK8"
+ echo "hebrew8 HP-HEBREW8"
+ echo "turkish8 HP-TURKISH8"
+ echo "kana8 HP-KANA8"
+ echo "tis620 TIS-620"
+ echo "big5 BIG5"
+ echo "eucJP EUC-JP"
+ echo "eucKR EUC-KR"
+ echo "eucTW EUC-TW"
+ echo "hp15CN GB2312"
+ #echo "ccdc ?" # what is this?
+ echo "SJIS SHIFT_JIS"
+ echo "utf8 UTF-8"
+ ;;
+ irix*)
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-9 ISO-8859-9"
+ echo "eucCN GB2312"
+ echo "eucJP EUC-JP"
+ echo "eucKR EUC-KR"
+ echo "eucTW EUC-TW"
+ ;;
+ osf*)
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-4 ISO-8859-4"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-8 ISO-8859-8"
+ echo "ISO8859-9 ISO-8859-9"
+ echo "ISO8859-15 ISO-8859-15"
+ echo "cp850 CP850"
+ echo "big5 BIG5"
+ echo "dechanyu DEC-HANYU"
+ echo "dechanzi GB2312"
+ echo "deckanji DEC-KANJI"
+ echo "deckorean EUC-KR"
+ echo "eucJP EUC-JP"
+ echo "eucKR EUC-KR"
+ echo "eucTW EUC-TW"
+ echo "GBK GBK"
+ echo "KSC5601 CP949"
+ echo "sdeckanji EUC-JP"
+ echo "SJIS SHIFT_JIS"
+ echo "TACTIS TIS-620"
+ echo "UTF-8 UTF-8"
+ ;;
+ solaris*)
+ echo "646 ASCII"
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-3 ISO-8859-3"
+ echo "ISO8859-4 ISO-8859-4"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-6 ISO-8859-6"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-8 ISO-8859-8"
+ echo "ISO8859-9 ISO-8859-9"
+ echo "ISO8859-15 ISO-8859-15"
+ echo "koi8-r KOI8-R"
+ echo "ansi-1251 CP1251"
+ echo "BIG5 BIG5"
+ echo "Big5-HKSCS BIG5-HKSCS"
+ echo "gb2312 GB2312"
+ echo "GBK GBK"
+ echo "GB18030 GB18030"
+ echo "cns11643 EUC-TW"
+ echo "5601 EUC-KR"
+ echo "ko_KR.johap92 JOHAB"
+ echo "eucJP EUC-JP"
+ echo "PCK SHIFT_JIS"
+ echo "TIS620.2533 TIS-620"
+ #echo "sun_eu_greek ?" # what is this?
+ echo "UTF-8 UTF-8"
+ ;;
+ freebsd* | os2*)
+ # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore
+ # localcharset.c falls back to using the full locale name
+ # from the environment variables.
+ # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just
+ # reuse FreeBSD's locale data for OS/2.
+ echo "C ASCII"
+ echo "US-ASCII ASCII"
+ for l in la_LN lt_LN; do
+ echo "$l.ASCII ASCII"
+ done
+ for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
+ fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \
+ lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do
+ echo "$l.ISO_8859-1 ISO-8859-1"
+ echo "$l.DIS_8859-15 ISO-8859-15"
+ done
+ for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do
+ echo "$l.ISO_8859-2 ISO-8859-2"
+ done
+ for l in la_LN lt_LT; do
+ echo "$l.ISO_8859-4 ISO-8859-4"
+ done
+ for l in ru_RU ru_SU; do
+ echo "$l.KOI8-R KOI8-R"
+ echo "$l.ISO_8859-5 ISO-8859-5"
+ echo "$l.CP866 CP866"
+ done
+ echo "uk_UA.KOI8-U KOI8-U"
+ echo "zh_TW.BIG5 BIG5"
+ echo "zh_TW.Big5 BIG5"
+ echo "zh_CN.EUC GB2312"
+ echo "ja_JP.EUC EUC-JP"
+ echo "ja_JP.SJIS SHIFT_JIS"
+ echo "ja_JP.Shift_JIS SHIFT_JIS"
+ echo "ko_KR.EUC EUC-KR"
+ ;;
+ netbsd*)
+ echo "646 ASCII"
+ echo "ISO8859-1 ISO-8859-1"
+ echo "ISO8859-2 ISO-8859-2"
+ echo "ISO8859-4 ISO-8859-4"
+ echo "ISO8859-5 ISO-8859-5"
+ echo "ISO8859-7 ISO-8859-7"
+ echo "ISO8859-13 ISO-8859-13"
+ echo "ISO8859-15 ISO-8859-15"
+ echo "eucCN GB2312"
+ echo "eucJP EUC-JP"
+ echo "eucKR EUC-KR"
+ echo "eucTW EUC-TW"
+ echo "BIG5 BIG5"
+ echo "SJIS SHIFT_JIS"
+ ;;
+ darwin[56]*)
+ # Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore
+ # localcharset.c falls back to using the full locale name
+ # from the environment variables.
+ echo "C ASCII"
+ for l in en_AU en_CA en_GB en_US la_LN; do
+ echo "$l.US-ASCII ASCII"
+ done
+ for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
+ fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE \
+ nl_NL no_NO pt_PT sv_SE; do
+ echo "$l ISO-8859-1"
+ echo "$l.ISO8859-1 ISO-8859-1"
+ echo "$l.ISO8859-15 ISO-8859-15"
+ done
+ for l in la_LN; do
+ echo "$l.ISO8859-1 ISO-8859-1"
+ echo "$l.ISO8859-15 ISO-8859-15"
+ done
+ for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do
+ echo "$l.ISO8859-2 ISO-8859-2"
+ done
+ for l in la_LN lt_LT; do
+ echo "$l.ISO8859-4 ISO-8859-4"
+ done
+ for l in ru_RU; do
+ echo "$l.KOI8-R KOI8-R"
+ echo "$l.ISO8859-5 ISO-8859-5"
+ echo "$l.CP866 CP866"
+ done
+ for l in bg_BG; do
+ echo "$l.CP1251 CP1251"
+ done
+ echo "uk_UA.KOI8-U KOI8-U"
+ echo "zh_TW.BIG5 BIG5"
+ echo "zh_TW.Big5 BIG5"
+ echo "zh_CN.EUC GB2312"
+ echo "ja_JP.EUC EUC-JP"
+ echo "ja_JP.SJIS SHIFT_JIS"
+ echo "ko_KR.EUC EUC-KR"
+ ;;
+ darwin*)
+ # Darwin 7.5 has nl_langinfo(CODESET), but it is useless:
+ # - It returns the empty string when LANG is set to a locale of the
+ # form ll_CC, although ll_CC/LC_CTYPE is a symlink to an UTF-8
+ # LC_CTYPE file.
+ # - The environment variables LANG, LC_CTYPE, LC_ALL are not set by
+ # the system; nl_langinfo(CODESET) returns "US-ASCII" in this case.
+ # - The documentation says:
+ # "... all code that calls BSD system routines should ensure
+ # that the const *char parameters of these routines are in UTF-8
+ # encoding. All BSD system functions expect their string
+ # parameters to be in UTF-8 encoding and nothing else."
+ # It also says
+ # "An additional caveat is that string parameters for files,
+ # paths, and other file-system entities must be in canonical
+ # UTF-8. In a canonical UTF-8 Unicode string, all decomposable
+ # characters are decomposed ..."
+ # but this is not true: You can pass non-decomposed UTF-8 strings
+ # to file system functions, and it is the OS which will convert
+ # them to decomposed UTF-8 before accessing the file system.
+ # - The Apple Terminal application displays UTF-8 by default.
+ # - However, other applications are free to use different encodings:
+ # - xterm uses ISO-8859-1 by default.
+ # - TextEdit uses MacRoman by default.
+ # We prefer UTF-8 over decomposed UTF-8-MAC because one should
+ # minimize the use of decomposed Unicode. Unfortunately, through the
+ # Darwin file system, decomposed UTF-8 strings are leaked into user
+ # space nevertheless.
+ echo "* UTF-8"
+ ;;
+ beos*)
+ # BeOS has a single locale, and it has UTF-8 encoding.
+ echo "* UTF-8"
+ ;;
+ msdosdjgpp*)
+ # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore
+ # localcharset.c falls back to using the full locale name
+ # from the environment variables.
+ echo "#"
+ echo "# The encodings given here may not all be correct."
+ echo "# If you find that the encoding given for your language and"
+ echo "# country is not the one your DOS machine actually uses, just"
+ echo "# correct it in this file, and send a mail to"
+ echo "# Juan Manuel Guerrero <juan.guerrero@gmx.de>"
+ echo "# and Bruno Haible <bruno@clisp.org>."
+ echo "#"
+ echo "C ASCII"
+ # ISO-8859-1 languages
+ echo "ca CP850"
+ echo "ca_ES CP850"
+ echo "da CP865" # not CP850 ??
+ echo "da_DK CP865" # not CP850 ??
+ echo "de CP850"
+ echo "de_AT CP850"
+ echo "de_CH CP850"
+ echo "de_DE CP850"
+ echo "en CP850"
+ echo "en_AU CP850" # not CP437 ??
+ echo "en_CA CP850"
+ echo "en_GB CP850"
+ echo "en_NZ CP437"
+ echo "en_US CP437"
+ echo "en_ZA CP850" # not CP437 ??
+ echo "es CP850"
+ echo "es_AR CP850"
+ echo "es_BO CP850"
+ echo "es_CL CP850"
+ echo "es_CO CP850"
+ echo "es_CR CP850"
+ echo "es_CU CP850"
+ echo "es_DO CP850"
+ echo "es_EC CP850"
+ echo "es_ES CP850"
+ echo "es_GT CP850"
+ echo "es_HN CP850"
+ echo "es_MX CP850"
+ echo "es_NI CP850"
+ echo "es_PA CP850"
+ echo "es_PY CP850"
+ echo "es_PE CP850"
+ echo "es_SV CP850"
+ echo "es_UY CP850"
+ echo "es_VE CP850"
+ echo "et CP850"
+ echo "et_EE CP850"
+ echo "eu CP850"
+ echo "eu_ES CP850"
+ echo "fi CP850"
+ echo "fi_FI CP850"
+ echo "fr CP850"
+ echo "fr_BE CP850"
+ echo "fr_CA CP850"
+ echo "fr_CH CP850"
+ echo "fr_FR CP850"
+ echo "ga CP850"
+ echo "ga_IE CP850"
+ echo "gd CP850"
+ echo "gd_GB CP850"
+ echo "gl CP850"
+ echo "gl_ES CP850"
+ echo "id CP850" # not CP437 ??
+ echo "id_ID CP850" # not CP437 ??
+ echo "is CP861" # not CP850 ??
+ echo "is_IS CP861" # not CP850 ??
+ echo "it CP850"
+ echo "it_CH CP850"
+ echo "it_IT CP850"
+ echo "lt CP775"
+ echo "lt_LT CP775"
+ echo "lv CP775"
+ echo "lv_LV CP775"
+ echo "nb CP865" # not CP850 ??
+ echo "nb_NO CP865" # not CP850 ??
+ echo "nl CP850"
+ echo "nl_BE CP850"
+ echo "nl_NL CP850"
+ echo "nn CP865" # not CP850 ??
+ echo "nn_NO CP865" # not CP850 ??
+ echo "no CP865" # not CP850 ??
+ echo "no_NO CP865" # not CP850 ??
+ echo "pt CP850"
+ echo "pt_BR CP850"
+ echo "pt_PT CP850"
+ echo "sv CP850"
+ echo "sv_SE CP850"
+ # ISO-8859-2 languages
+ echo "cs CP852"
+ echo "cs_CZ CP852"
+ echo "hr CP852"
+ echo "hr_HR CP852"
+ echo "hu CP852"
+ echo "hu_HU CP852"
+ echo "pl CP852"
+ echo "pl_PL CP852"
+ echo "ro CP852"
+ echo "ro_RO CP852"
+ echo "sk CP852"
+ echo "sk_SK CP852"
+ echo "sl CP852"
+ echo "sl_SI CP852"
+ echo "sq CP852"
+ echo "sq_AL CP852"
+ echo "sr CP852" # CP852 or CP866 or CP855 ??
+ echo "sr_CS CP852" # CP852 or CP866 or CP855 ??
+ echo "sr_YU CP852" # CP852 or CP866 or CP855 ??
+ # ISO-8859-3 languages
+ echo "mt CP850"
+ echo "mt_MT CP850"
+ # ISO-8859-5 languages
+ echo "be CP866"
+ echo "be_BE CP866"
+ echo "bg CP866" # not CP855 ??
+ echo "bg_BG CP866" # not CP855 ??
+ echo "mk CP866" # not CP855 ??
+ echo "mk_MK CP866" # not CP855 ??
+ echo "ru CP866"
+ echo "ru_RU CP866"
+ echo "uk CP1125"
+ echo "uk_UA CP1125"
+ # ISO-8859-6 languages
+ echo "ar CP864"
+ echo "ar_AE CP864"
+ echo "ar_DZ CP864"
+ echo "ar_EG CP864"
+ echo "ar_IQ CP864"
+ echo "ar_IR CP864"
+ echo "ar_JO CP864"
+ echo "ar_KW CP864"
+ echo "ar_MA CP864"
+ echo "ar_OM CP864"
+ echo "ar_QA CP864"
+ echo "ar_SA CP864"
+ echo "ar_SY CP864"
+ # ISO-8859-7 languages
+ echo "el CP869"
+ echo "el_GR CP869"
+ # ISO-8859-8 languages
+ echo "he CP862"
+ echo "he_IL CP862"
+ # ISO-8859-9 languages
+ echo "tr CP857"
+ echo "tr_TR CP857"
+ # Japanese
+ echo "ja CP932"
+ echo "ja_JP CP932"
+ # Chinese
+ echo "zh_CN GBK"
+ echo "zh_TW CP950" # not CP938 ??
+ # Korean
+ echo "kr CP949" # not CP934 ??
+ echo "kr_KR CP949" # not CP934 ??
+ # Thai
+ echo "th CP874"
+ echo "th_TH CP874"
+ # Other
+ echo "eo CP850"
+ echo "eo_EO CP850"
+ ;;
+esac
diff --git a/lib/config.hin b/lib/config.hin
new file mode 100644
index 0000000..748b425
--- /dev/null
+++ b/lib/config.hin
@@ -0,0 +1,1959 @@
+/* lib/config.hin. Generated from configure.ac by autoheader. */
+
+/* Define this to an absolute name of <dirent.h>. */
+#undef ABSOLUTE_DIRENT_H
+
+/* Define this to an absolute name of <fcntl.h>. */
+#undef ABSOLUTE_FCNTL_H
+
+/* Define this to an absolute name of <inttypes.h>. */
+#undef ABSOLUTE_INTTYPES_H
+
+/* Define this to an absolute name of <netinet/in.h>. */
+#undef ABSOLUTE_NETINET_IN_H
+
+/* Define this to an absolute name of <stdint.h>. */
+#undef ABSOLUTE_STDINT_H
+
+/* Define this to an absolute name of <stdio.h>. */
+#undef ABSOLUTE_STDIO_H
+
+/* Define this to an absolute name of <stdlib.h>. */
+#undef ABSOLUTE_STDLIB_H
+
+/* Define this to an absolute name of <string.h>. */
+#undef ABSOLUTE_STRING_H
+
+/* Define this to an absolute name of <sys/socket.h>. */
+#undef ABSOLUTE_SYS_SOCKET_H
+
+/* Define this to an absolute name of <sys/stat.h>. */
+#undef ABSOLUTE_SYS_STAT_H
+
+/* Define this to an absolute name of <sys/time.h>. */
+#undef ABSOLUTE_SYS_TIME_H
+
+/* Define this to an absolute name of <time.h>. */
+#undef ABSOLUTE_TIME_H
+
+/* Define this to an absolute name of <unistd.h>. */
+#undef ABSOLUTE_UNISTD_H
+
+/* Define this to an absolute name of <wchar.h>. */
+#undef ABSOLUTE_WCHAR_H
+
+/* Define this to an absolute name of <wctype.h>. */
+#undef ABSOLUTE_WCTYPE_H
+
+/* Define to the function xargmatch calls on failures. */
+#undef ARGMATCH_DIE
+
+/* Define to the declaration of the xargmatch failure function. */
+#undef ARGMATCH_DIE_DECL
+
+/* Define to the number of bits in type 'ptrdiff_t'. */
+#undef BITSIZEOF_PTRDIFF_T
+
+/* Define to the number of bits in type 'sig_atomic_t'. */
+#undef BITSIZEOF_SIG_ATOMIC_T
+
+/* Define to the number of bits in type 'size_t'. */
+#undef BITSIZEOF_SIZE_T
+
+/* Define to the number of bits in type 'wchar_t'. */
+#undef BITSIZEOF_WCHAR_T
+
+/* Define to the number of bits in type 'wint_t'. */
+#undef BITSIZEOF_WINT_T
+
+/* Define if chown is not POSIX compliant regarding IDs of -1. */
+#undef CHOWN_FAILS_TO_HONOR_ID_OF_NEGATIVE_ONE
+
+/* Define if chown modifies symlinks. */
+#undef CHOWN_MODIFIES_SYMLINK
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+ systems. This function is required for `alloca.c' support on those systems.
+ */
+#undef CRAY_STACKSEG_END
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Define to 1 if using `getloadavg.c'. */
+#undef C_GETLOADAVG
+
+/* Define the default level of POSIX conformance. The value is of the form
+ YYYYMM, specifying the year and month the standard was adopted. If not
+ defined here, it defaults to the value of _POSIX2_VERSION in <unistd.h>.
+ Define to 199209 to default to POSIX 1003.2-1992, which makes standard
+ programs like `head', `tail', and `sort' accept obsolete options like `+10'
+ and `-10'. Define to 200112 to default to POSIX 1003.1-2001, which makes
+ these standard programs treat leading-`+' operands as file names and
+ require modern usages like `-n 10' instead of `-10'. Whether defined here
+ or not, the default can be overridden at run time via the _POSIX2_VERSION
+ environment variable. */
+#undef DEFAULT_POSIX2_VERSION
+
+/* Define to 1 for DGUX with <sys/dg_sys_info.h>. */
+#undef DGUX
+
+/* the name of the file descriptor member of DIR */
+#undef DIR_FD_MEMBER_NAME
+
+#ifdef DIR_FD_MEMBER_NAME
+# define DIR_TO_FD(Dir_p) ((Dir_p)->DIR_FD_MEMBER_NAME)
+#else
+# define DIR_TO_FD(Dir_p) -1
+#endif
+
+
+/* Define to 1 if // is a file system root distinct from /. */
+#undef DOUBLE_SLASH_IS_DISTINCT_ROOT
+
+/* Define if there is a member named d_ino in the struct describing directory
+ headers. */
+#undef D_INO_IN_DIRENT
+
+/* Define to 1 if translation of program messages to the user's native
+ language is requested. */
+#undef ENABLE_NLS
+
+/* Define as good substitute value for EOVERFLOW. */
+#undef EOVERFLOW
+
+/* Define if gnulib's fchdir() replacement is used. */
+#undef FCHDIR_REPLACEMENT
+
+/* Define on systems for which file names may have a so-called `drive letter'
+ prefix, define this to compute the length of that prefix, including the
+ colon. */
+#undef FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX
+
+/* Define if the backslash character may also serve as a file name component
+ separator. */
+#undef FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR
+
+/* Define if a drive letter prefix denotes a relative path if it is not
+ followed by a file name component separator. */
+#undef FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
+
+/* Define to nothing if C supports flexible array members, and to 1 if it does
+ not. That way, with a declaration like `struct s { int n; double
+ d[FLEXIBLE_ARRAY_MEMBER]; };', the struct hack can be used with pre-C99
+ compilers. When computing the size of such an object, don't use 'sizeof
+ (struct s)' as it overestimates the size. Use 'offsetof (struct s, d)'
+ instead. Don't use 'offsetof (struct s, d[0])', as this doesn't work with
+ MSVC and with C++ compilers. */
+#undef FLEXIBLE_ARRAY_MEMBER
+
+/* Define to the type of elements in the array set by `getgroups'. Usually
+ this is either `int' or `gid_t'. */
+#undef GETGROUPS_T
+
+/* Define to 1 if the `getloadavg' function needs to be run setuid or setgid.
+ */
+#undef GETLOADAVG_PRIVILEGED
+
+/* Define if gettimeofday clobbers the localtime buffer. */
+#undef GETTIMEOFDAY_CLOBBERS_LOCALTIME
+
+/* Define to 1 when using the gnulib module canonicalize. */
+#undef GNULIB_CANONICALIZE
+
+/* Define to 1 when using the gnulib module close-stream. */
+#undef GNULIB_CLOSE_STREAM
+
+/* Define to 1 when using the gnulib module fcntl-safer. */
+#undef GNULIB_FCNTL_SAFER
+
+/* Define to 1 when using the gnulib module fopen-safer. */
+#undef GNULIB_FOPEN_SAFER
+
+/* Define to 1 when using the gnulib module fts. */
+#undef GNULIB_FTS
+
+/* The concatenation of the strings `GNU ', and PACKAGE. */
+#undef GNU_PACKAGE
+
+/* Define if your system defines TIOCGWINSZ in sys/ioctl.h. */
+#undef GWINSZ_IN_SYS_IOCTL
+
+/* Define if your system defines TIOCGWINSZ in sys/pty.h. */
+#undef GWINSZ_IN_SYS_PTY
+
+/* Define to 1 if you have the `acl' function. */
+#undef HAVE_ACL
+
+/* Define to 1 if you have the `acl_delete_def_file' function. */
+#undef HAVE_ACL_DELETE_DEF_FILE
+
+/* Define to 1 if you have the `acl_entries' function. */
+#undef HAVE_ACL_ENTRIES
+
+/* Define to 1 if you have the `acl_extended_file' function. */
+#undef HAVE_ACL_EXTENDED_FILE
+
+/* Define to 1 if you have the `acl_free' function. */
+#undef HAVE_ACL_FREE
+
+/* Define to 1 if you have the `acl_from_mode' function. */
+#undef HAVE_ACL_FROM_MODE
+
+/* Define to 1 if you have the `acl_from_text' function. */
+#undef HAVE_ACL_FROM_TEXT
+
+/* Define to 1 if you have the `acl_get_fd' function. */
+#undef HAVE_ACL_GET_FD
+
+/* Define to 1 if you have the `acl_get_file' function. */
+#undef HAVE_ACL_GET_FILE
+
+/* Define to 1 if you have the <acl/libacl.h> header file. */
+#undef HAVE_ACL_LIBACL_H
+
+/* Define to 1 if you have the `acl_set_fd' function. */
+#undef HAVE_ACL_SET_FD
+
+/* Define to 1 if you have the `acl_set_file' function. */
+#undef HAVE_ACL_SET_FILE
+
+/* Define to 1 if you have the `acl_trivial' function. */
+#undef HAVE_ACL_TRIVIAL
+
+/* Define to 1 if you have the `alarm' function. */
+#undef HAVE_ALARM
+
+/* Define to 1 if you have 'alloca' after including <alloca.h>, a header that
+ may be supplied by this distribution. */
+#undef HAVE_ALLOCA
+
+/* Define HAVE_ALLOCA_H for backward compatibility with older code that
+ includes <alloca.h> only if HAVE_ALLOCA_H is defined. */
+#undef HAVE_ALLOCA_H
+
+/* Define if you have an arithmetic hrtime_t type. */
+#undef HAVE_ARITHMETIC_HRTIME_T
+
+/* Define to 1 if you have the <arpa/inet.h> header file. */
+#undef HAVE_ARPA_INET_H
+
+/* Define to 1 if you have the `atexit' function. */
+#undef HAVE_ATEXIT
+
+/* Define to 1 if you have the <bp-sym.h> header file. */
+#undef HAVE_BP_SYM_H
+
+/* Define to 1 if you have the `btowc' function. */
+#undef HAVE_BTOWC
+
+/* Define to 1 if nanosleep mishandle large arguments. */
+#undef HAVE_BUG_BIG_NANOSLEEP
+
+/* Define to 1 if strtold conforms to C99. */
+#undef HAVE_C99_STRTOLD
+
+/* Define to 1 if your system has a GNU libc compatible `calloc' function, and
+ to 0 otherwise. */
+#undef HAVE_CALLOC
+
+/* Define to 1 if you have the `canonicalize_file_name' function. */
+#undef HAVE_CANONICALIZE_FILE_NAME
+
+/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
+ CoreFoundation framework. */
+#undef HAVE_CFLOCALECOPYCURRENT
+
+/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
+ the CoreFoundation framework. */
+#undef HAVE_CFPREFERENCESCOPYAPPVALUE
+
+/* Define to 1 if your system has a working `chown' function. */
+#undef HAVE_CHOWN
+
+/* Define to 1 if you have the `chroot' function. */
+#undef HAVE_CHROOT
+
+/* Define to 1 if you have the `chsize' function. */
+#undef HAVE_CHSIZE
+
+/* Define to 1 if you have the `clock_gettime' function. */
+#undef HAVE_CLOCK_GETTIME
+
+/* Define to 1 if you have the `clock_settime' function. */
+#undef HAVE_CLOCK_SETTIME
+
+/* Define if you have compound literals. */
+#undef HAVE_COMPOUND_LITERALS
+
+/* FIXME */
+#undef HAVE_C_LINE
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+ */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you have the declaration of `canonicalize_file_name', and to
+ 0 if you don't. */
+#undef HAVE_DECL_CANONICALIZE_FILE_NAME
+
+/* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_CLEARERR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `dirfd', and to 0 if you don't.
+ */
+#undef HAVE_DECL_DIRFD
+
+/* Define to 1 if you have the declaration of `euidaccess', and to 0 if you
+ don't. */
+#undef HAVE_DECL_EUIDACCESS
+
+/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
+ don't. */
+#undef HAVE_DECL_FEOF_UNLOCKED
+
+/* Define to 1 if you have the declaration of `ferror_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FERROR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FFLUSH_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FGETS_UNLOCKED
+
+/* Define to 1 if you have the declaration of `flockfile', and to 0 if you
+ don't. */
+#undef HAVE_DECL_FLOCKFILE
+
+/* Define to 1 if you have the declaration of `fputc_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FPUTC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FPUTS_UNLOCKED
+
+/* Define to 1 if you have the declaration of `fread_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FREAD_UNLOCKED
+
+/* Define to 1 if you have the declaration of `free', and to 0 if you don't.
+ */
+#undef HAVE_DECL_FREE
+
+/* Define to 1 if you have the declaration of `freeaddrinfo', and to 0 if you
+ don't. */
+#undef HAVE_DECL_FREEADDRINFO
+
+/* Define to 1 if you have the declaration of `funlockfile', and to 0 if you
+ don't. */
+#undef HAVE_DECL_FUNLOCKFILE
+
+/* Define to 1 if you have the declaration of `fwrite_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_FWRITE_UNLOCKED
+
+/* Define to 1 if you have the declaration of `gai_strerror', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GAI_STRERROR
+
+/* Define to 1 if you have the declaration of `getaddrinfo', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETADDRINFO
+
+/* Define to 1 if you have the declaration of `getchar_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_GETCHAR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `getcwd', and to 0 if you don't.
+ */
+#undef HAVE_DECL_GETCWD
+
+/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `getdelim', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETDELIM
+
+/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
+ */
+#undef HAVE_DECL_GETENV
+
+/* Define to 1 if you have the declaration of `geteuid', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETEUID
+
+/* Define to 1 if you have the declaration of `getgrgid', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETGRGID
+
+/* Define to 1 if you have the declaration of `gethrtime', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETHRTIME
+
+/* Define to 1 if you have the declaration of `getline', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETLINE
+
+/* Define to 1 if you have the declaration of `getlogin', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETLOGIN
+
+/* Define to 1 if you have the declaration of `getnameinfo', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETNAMEINFO
+
+/* Define to 1 if you have the declaration of `getpass', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETPASS
+
+/* Define to 1 if you have the declaration of `getpwuid', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETPWUID
+
+/* Define to 1 if you have the declaration of `getuid', and to 0 if you don't.
+ */
+#undef HAVE_DECL_GETUID
+
+/* Define to 1 if you have the declaration of `getutent', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETUTENT
+
+/* Define to 1 if you have the declaration of `imaxabs', and to 0 if you
+ don't. */
+#undef HAVE_DECL_IMAXABS
+
+/* Define to 1 if you have the declaration of `imaxdiv', and to 0 if you
+ don't. */
+#undef HAVE_DECL_IMAXDIV
+
+/* Define to 1 if you have the declaration of `inet_ntop', and to 0 if you
+ don't. */
+#undef HAVE_DECL_INET_NTOP
+
+/* Define to 1 if you have the declaration of `isblank', and to 0 if you
+ don't. */
+#undef HAVE_DECL_ISBLANK
+
+/* Define to 1 if you have the declaration of `lchown', and to 0 if you don't.
+ */
+#undef HAVE_DECL_LCHOWN
+
+/* Define to 1 if you have the declaration of `lseek', and to 0 if you don't.
+ */
+#undef HAVE_DECL_LSEEK
+
+/* Define to 1 if you have the declaration of `malloc', and to 0 if you don't.
+ */
+#undef HAVE_DECL_MALLOC
+
+/* Define to 1 if you have a declaration of mbswidth() in <wchar.h>, and to 0
+ otherwise. */
+#undef HAVE_DECL_MBSWIDTH_IN_WCHAR_H
+
+/* Define to 1 if you have the declaration of `memchr', and to 0 if you don't.
+ */
+#undef HAVE_DECL_MEMCHR
+
+/* Define to 1 if you have the declaration of `memrchr', and to 0 if you
+ don't. */
+#undef HAVE_DECL_MEMRCHR
+
+/* Define to 1 if you have the declaration of `mkdir', and to 0 if you don't.
+ */
+#undef HAVE_DECL_MKDIR
+
+/* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if
+ you don't. */
+#undef HAVE_DECL_PUTCHAR_UNLOCKED
+
+/* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you
+ don't. */
+#undef HAVE_DECL_PUTC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `realloc', and to 0 if you
+ don't. */
+#undef HAVE_DECL_REALLOC
+
+/* Define to 1 if you have the declaration of `setregid', and to 0 if you
+ don't. */
+#undef HAVE_DECL_SETREGID
+
+/* Define to 1 if you have the declaration of `snprintf', and to 0 if you
+ don't. */
+#undef HAVE_DECL_SNPRINTF
+
+/* Define to 1 if you have the declaration of `strdup', and to 0 if you don't.
+ */
+#undef HAVE_DECL_STRDUP
+
+/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
+ don't. */
+#undef HAVE_DECL_STRERROR_R
+
+/* Define to 1 if you have the declaration of `strmode', and to 0 if you
+ don't. */
+#undef HAVE_DECL_STRMODE
+
+/* Define to 1 if you have the declaration of `strndup', and to 0 if you
+ don't. */
+#undef HAVE_DECL_STRNDUP
+
+/* Define to 1 if you have the declaration of `strnlen', and to 0 if you
+ don't. */
+#undef HAVE_DECL_STRNLEN
+
+/* Define to 1 if you have the declaration of `strsignal', and to 0 if you
+ don't. */
+#undef HAVE_DECL_STRSIGNAL
+
+/* Define to 1 if you have the declaration of `strtoimax', and to 0 if you
+ don't. */
+#undef HAVE_DECL_STRTOIMAX
+
+/* Define to 1 if you have the declaration of `strtoll', and to 0 if you
+ don't. */
+#undef HAVE_DECL_STRTOLL
+
+/* Define to 1 if you have the declaration of `strtoull', and to 0 if you
+ don't. */
+#undef HAVE_DECL_STRTOULL
+
+/* Define to 1 if you have the declaration of `strtoumax', and to 0 if you
+ don't. */
+#undef HAVE_DECL_STRTOUMAX
+
+/* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you
+ don't. */
+#undef HAVE_DECL_SYS_SIGLIST
+
+/* Define to 1 if you have the declaration of `ttyname', and to 0 if you
+ don't. */
+#undef HAVE_DECL_TTYNAME
+
+/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't.
+ */
+#undef HAVE_DECL_TZNAME
+
+/* Define to 1 if you have the declaration of `wcwidth', and to 0 if you
+ don't. */
+#undef HAVE_DECL_WCWIDTH
+
+/* Define to 1 if you have the declaration of `_sys_siglist', and to 0 if you
+ don't. */
+#undef HAVE_DECL__SYS_SIGLIST
+
+/* Define to 1 if you have the declaration of `__fpending', and to 0 if you
+ don't. */
+#undef HAVE_DECL___FPENDING
+
+/* Define to 1 if you have the declaration of `__fsetlocking', and to 0 if you
+ don't. */
+#undef HAVE_DECL___FSETLOCKING
+
+/* Define to 1 if you have the declaration of `__sys_siglist', and to 0 if you
+ don't. */
+#undef HAVE_DECL___SYS_SIGLIST
+
+/* Define to 1 if you have the `directio' function. */
+#undef HAVE_DIRECTIO
+
+/* Define to 1 if you have the <dirent.h> header file. */
+#undef HAVE_DIRENT_H
+
+/* Define to 1 if you have the `dirfd' function. */
+#undef HAVE_DIRFD
+
+/* Define to 1 if you have the `dup2' function. */
+#undef HAVE_DUP2
+
+/* Define to 1 if you have the <dustat.h> header file. */
+#undef HAVE_DUSTAT_H
+
+/* Define to 1 if you have the `eaccess' function. */
+#undef HAVE_EACCESS
+
+/* Define to 1 if you have the `endgrent' function. */
+#undef HAVE_ENDGRENT
+
+/* Define to 1 if you have the `endpwent' function. */
+#undef HAVE_ENDPWENT
+
+/* Define if you have the declaration of environ. */
+#undef HAVE_ENVIRON_DECL
+
+/* Define to 1 if you have the `euidaccess' function. */
+#undef HAVE_EUIDACCESS
+
+/* Define to 1 if you have the `fchdir' function. */
+#undef HAVE_FCHDIR
+
+/* Define to 1 if you have the `fchmod' function. */
+#undef HAVE_FCHMOD
+
+/* Define to 1 if you have the `fchmodat' function. */
+#undef HAVE_FCHMODAT
+
+/* Define to 1 if you have the `fchown' function. */
+#undef HAVE_FCHOWN
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the `fdatasync' function. */
+#undef HAVE_FDATASYNC
+
+/* Define to 1 if you have the `fdopendir' function. */
+#undef HAVE_FDOPENDIR
+
+/* Define to 1 if pipes are FIFOs, 0 if sockets. Leave undefined if not known.
+ */
+#undef HAVE_FIFO_PIPES
+
+/* Define to 1 if you have the `flockfile' function. */
+#undef HAVE_FLOCKFILE
+
+/* Define to 1 if you have the `fork' function. */
+#undef HAVE_FORK
+
+/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
+#undef HAVE_FSEEKO
+
+/* Define to 1 if you have the <fs_info.h> header file. */
+#undef HAVE_FS_INFO_H
+
+/* Define to 1 if you have the `fs_stat_dev' function. */
+#undef HAVE_FS_STAT_DEV
+
+/* Define to 1 if you have the `ftruncate' function. */
+#undef HAVE_FTRUNCATE
+
+/* Define to 1 if you have the `funlockfile' function. */
+#undef HAVE_FUNLOCKFILE
+
+/* Define to 1 if you have the `futimes' function. */
+#undef HAVE_FUTIMES
+
+/* Define to 1 if you have the `futimesat' function. */
+#undef HAVE_FUTIMESAT
+
+/* Define to 1 if you have the `gai_strerror' function. */
+#undef HAVE_GAI_STRERROR
+
+/* Define to 1 if you have the `getaddrinfo' function. */
+#undef HAVE_GETADDRINFO
+
+/* Define to 1 if you have the `getdelim' function. */
+#undef HAVE_GETDELIM
+
+/* Define to 1 if your system has a working `getgroups' function. */
+#undef HAVE_GETGROUPS
+
+/* Define to 1 if you have the `gethostbyname' function. */
+#undef HAVE_GETHOSTBYNAME
+
+/* Define to 1 if you have the `gethostid' function. */
+#undef HAVE_GETHOSTID
+
+/* Define to 1 if you have the `gethostname' function. */
+#undef HAVE_GETHOSTNAME
+
+/* Define to 1 if you have the `getloadavg' function. */
+#undef HAVE_GETLOADAVG
+
+/* Define to 1 if you have the `getmntent' function. */
+#undef HAVE_GETMNTENT
+
+/* Define to 1 if you have the `getmntinfo' function. */
+#undef HAVE_GETMNTINFO
+
+/* Define to 1 if you have the <getopt.h> header file. */
+#undef HAVE_GETOPT_H
+
+/* Define to 1 if you have the `getopt_long_only' function. */
+#undef HAVE_GETOPT_LONG_ONLY
+
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define to 1 if you have the `getspnam' function. */
+#undef HAVE_GETSPNAM
+
+/* Define to 1 if you have the `getsysinfo' function. */
+#undef HAVE_GETSYSINFO
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#undef HAVE_GETTIMEOFDAY
+
+/* Define to 1 if you have the `getusershell' function. */
+#undef HAVE_GETUSERSHELL
+
+/* Define to 1 if you have the <grp.h> header file. */
+#undef HAVE_GRP_H
+
+/* Define to 1 if you have the `hasmntopt' function. */
+#undef HAVE_HASMNTOPT
+
+/* Define to 1 if you have the <hurd.h> header file. */
+#undef HAVE_HURD_H
+
+/* Define if you have the iconv() function. */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the `inet_ntop' function. */
+#undef HAVE_INET_NTOP
+
+/* Define to 1 if you have the `initgroups' function. */
+#undef HAVE_INITGROUPS
+
+/* Define to 1 if the compiler supports one of the keywords 'inline',
+ '__inline__', '__inline' and effectively inlines functions marked as such.
+ */
+#undef HAVE_INLINE
+
+/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
+#undef HAVE_INTMAX_T
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
+ declares uintmax_t. */
+#undef HAVE_INTTYPES_H_WITH_UINTMAX
+
+/* Define to 1 if you have the <io.h> header file. */
+#undef HAVE_IO_H
+
+/* Define to 1 if <sys/socket.h> defines AF_INET. */
+#undef HAVE_IPV4
+
+/* Define to 1 if <sys/socket.h> defines AF_INET6. */
+#undef HAVE_IPV6
+
+/* Define to 1 if you have the `isapipe' function. */
+#undef HAVE_ISAPIPE
+
+/* Define to 1 if you have the `isascii' function. */
+#undef HAVE_ISASCII
+
+/* Define to 1 if you have the `iswcntrl' function. */
+#undef HAVE_ISWCNTRL
+
+/* Define to 1 if you have the `iswctype' function. */
+#undef HAVE_ISWCTYPE
+
+/* Define to 1 if you have the `iswspace' function. */
+#undef HAVE_ISWSPACE
+
+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+#undef HAVE_LANGINFO_CODESET
+
+/* Define to 1 if you have the `lchmod' function. */
+#undef HAVE_LCHMOD
+
+/* Define to 1 if you have the `lchown' function. */
+#undef HAVE_LCHOWN
+
+/* Define to 1 if you have the `dgc' library (-ldgc). */
+#undef HAVE_LIBDGC
+
+/* Define to 1 if you have the <libgen.h> header file. */
+#undef HAVE_LIBGEN_H
+
+/* Define to 1 if you have the `kstat' library (-lkstat). */
+#undef HAVE_LIBKSTAT
+
+/* Define to 1 if you have the `ldgc' library (-lldgc). */
+#undef HAVE_LIBLDGC
+
+/* Define to 1 if you have the `os' library (-los). */
+#undef HAVE_LIBOS
+
+/* Define to 1 if you have the `ypsec' library (-lypsec). */
+#undef HAVE_LIBYPSEC
+
+/* Define to 1 if you have the `listmntent' function. */
+#undef HAVE_LISTMNTENT
+
+/* Define to 1 if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define to 1 if the type `long double' works and has more range or precision
+ than `double'. */
+#undef HAVE_LONG_DOUBLE
+
+/* Define to 1 if the type `long double' works and has more range or precision
+ than `double'. */
+#undef HAVE_LONG_DOUBLE_WIDER
+
+/* Define to 1 if you support file names longer than 14 characters. */
+#undef HAVE_LONG_FILE_NAMES
+
+/* Define if you have the 'long long' type. */
+#undef HAVE_LONG_LONG
+
+/* Define to 1 if the system has the type `long long int'. */
+#undef HAVE_LONG_LONG_INT
+
+/* Define to 1 if you have the `lstat' function. */
+#undef HAVE_LSTAT
+
+/* Define to 1 if `lstat' has the bug that it succeeds when given the
+ zero-length file name argument. */
+#undef HAVE_LSTAT_EMPTY_STRING_BUG
+
+/* Define to 1 if you have the <machine/hal_sysinfo.h> header file. */
+#undef HAVE_MACHINE_HAL_SYSINFO_H
+
+/* Define to 1 if you have the <mach/mach.h> header file. */
+#undef HAVE_MACH_MACH_H
+
+/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
+ to 0 otherwise. */
+#undef HAVE_MALLOC
+
+/* Define to 1 if you have the `mblen' function. */
+#undef HAVE_MBLEN
+
+/* Define to 1 if you have the `mbrlen' function. */
+#undef HAVE_MBRLEN
+
+/* Define to 1 if you have the `mbrtowc' function. */
+#undef HAVE_MBRTOWC
+
+/* Define to 1 if you have the `mbsinit' function. */
+#undef HAVE_MBSINIT
+
+/* Define to 1 if you have the `mbsrtowcs' function. */
+#undef HAVE_MBSRTOWCS
+
+/* Define to 1 if <wchar.h> declares mbstate_t. */
+#undef HAVE_MBSTATE_T
+
+/* Define to 1 if you have the `memchr' function. */
+#undef HAVE_MEMCHR
+
+/* Define to 1 if you have the `memcpy' function. */
+#undef HAVE_MEMCPY
+
+/* Define to 1 if you have the `memmove' function. */
+#undef HAVE_MEMMOVE
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `mempcpy' function. */
+#undef HAVE_MEMPCPY
+
+/* Define to 1 if you have the `memrchr' function. */
+#undef HAVE_MEMRCHR
+
+/* Define to 1 if you have the `memset' function. */
+#undef HAVE_MEMSET
+
+/* Define to 1 if you have the `microuptime' function. */
+#undef HAVE_MICROUPTIME
+
+/* Define to 1 if you have the `mkdirat' function. */
+#undef HAVE_MKDIRAT
+
+/* Define to 1 if you have the `mkfifo' function. */
+#undef HAVE_MKFIFO
+
+/* Define to 1 if you have the <mntent.h> header file. */
+#undef HAVE_MNTENT_H
+
+/* Define to 1 if you have the `nanotime' function. */
+#undef HAVE_NANOTIME
+
+/* Define to 1 if you have the `nanouptime' function. */
+#undef HAVE_NANOUPTIME
+
+/* Define to 1 if you have the <netdb.h> header file. */
+#undef HAVE_NETDB_H
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#undef HAVE_NETINET_IN_H
+
+/* Define to 1 if you have the `next_dev' function. */
+#undef HAVE_NEXT_DEV
+
+/* Define to 1 if you have the <nfs/nfs_client.h> header file. */
+#undef HAVE_NFS_NFS_CLIENT_H
+
+/* Define to 1 if you have the <nfs/vfs.h> header file. */
+#undef HAVE_NFS_VFS_H
+
+/* Define to 1 if you have the `nice' function. */
+#undef HAVE_NICE
+
+/* Define to 1 if you have the <nlist.h> header file. */
+#undef HAVE_NLIST_H
+
+/* Define to 1 if libc includes obstacks. */
+#undef HAVE_OBSTACK
+
+/* Define to 1 if you have the `openat' function. */
+#undef HAVE_OPENAT
+
+/* Define to 1 if you have the <OS.h> header file. */
+#undef HAVE_OS_H
+
+/* Define to 1 if getcwd works, except it sometimes fails when it shouldn't,
+ setting errno to ERANGE, ENAMETOOLONG, or ENOENT. If __GETCWD_PREFIX is not
+ defined, it doesn't matter whether HAVE_PARTLY_WORKING_GETCWD is defined.
+ */
+#undef HAVE_PARTLY_WORKING_GETCWD
+
+/* Define to 1 if you have the `pathconf' function. */
+#undef HAVE_PATHCONF
+
+/* Define to 1 if you have the <paths.h> header file. */
+#undef HAVE_PATHS_H
+
+/* Define to 1 if you have the `pipe' function. */
+#undef HAVE_PIPE
+
+/* Define to 1 if you have the <priv.h> header file. */
+#undef HAVE_PRIV_H
+
+/* Define if your system has the /proc/uptime special file. */
+#undef HAVE_PROC_UPTIME
+
+/* Define to 1 if you have the `pstat_getdynamic' function. */
+#undef HAVE_PSTAT_GETDYNAMIC
+
+/* Define to 1 if you have the `pstat_getstatic' function. */
+#undef HAVE_PSTAT_GETSTATIC
+
+/* Define to 1 if the system has the type `ptrdiff_t'. */
+#undef HAVE_PTRDIFF_T
+
+/* Define to 1 if you have the <pwd.h> header file. */
+#undef HAVE_PWD_H
+
+/* Define to 1 if you have the `raise' function. */
+#undef HAVE_RAISE
+
+/* Define to 1 if you have the `readlink' function. */
+#undef HAVE_READLINK
+
+/* Define to 1 if your system has a GNU libc compatible `realloc' function,
+ and to 0 otherwise. */
+#undef HAVE_REALLOC
+
+/* Define to 1 if you have the `resolvepath' function. */
+#undef HAVE_RESOLVEPATH
+
+/* Define to 1 if you have the `rmdir' function. */
+#undef HAVE_RMDIR
+
+/* Define to 1 if you have the `rpmatch' function. */
+#undef HAVE_RPMATCH
+
+/* Define to 1 if you have run the test for working tzset. */
+#undef HAVE_RUN_TZSET_TEST
+
+/* Define to 1 if you have the <search.h> header file. */
+#undef HAVE_SEARCH_H
+
+/* Define to 1 if you have the `setenv' function. */
+#undef HAVE_SETENV
+
+/* Define to 1 if you have the `setgroups' function. */
+#undef HAVE_SETGROUPS
+
+/* Define to 1 if you have the `sethostname' function. */
+#undef HAVE_SETHOSTNAME
+
+/* Define to 1 if you have the `settimeofday' function. */
+#undef HAVE_SETTIMEOFDAY
+
+/* Define to 1 if you have the <shadow.h> header file. */
+#undef HAVE_SHADOW_H
+
+/* Define to 1 if you have the `sig2str' function. */
+#undef HAVE_SIG2STR
+
+/* Define to 1 if you have the `siginterrupt' function. */
+#undef HAVE_SIGINTERRUPT
+
+/* Define to 1 if 'sig_atomic_t' is a signed integer type. */
+#undef HAVE_SIGNED_SIG_ATOMIC_T
+
+/* Define to 1 if 'wchar_t' is a signed integer type. */
+#undef HAVE_SIGNED_WCHAR_T
+
+/* Define to 1 if 'wint_t' is a signed integer type. */
+#undef HAVE_SIGNED_WINT_T
+
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
+/* Define to 1 if stdbool.h conforms to C99. */
+#undef HAVE_STDBOOL_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
+ uintmax_t. */
+#undef HAVE_STDINT_H_WITH_UINTMAX
+
+/* Define to 1 if you have the <stdio_ext.h> header file. */
+#undef HAVE_STDIO_EXT_H
+
+/* Define to 1 if you have the <stdio.h> header file. */
+#undef HAVE_STDIO_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `stime' function. */
+#undef HAVE_STIME
+
+/* Define to 1 if you have the `stpcpy' function. */
+#undef HAVE_STPCPY
+
+/* Define to 1 if you have the `strcoll' function and it is properly defined.
+ */
+#undef HAVE_STRCOLL
+
+/* Define to 1 if you have the `strcspn' function. */
+#undef HAVE_STRCSPN
+
+/* Define to 1 if you have the `strdup' function. */
+#undef HAVE_STRDUP
+
+/* Define to 1 if you have the `strerror_r' function. */
+#undef HAVE_STRERROR_R
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define if you have the strndup() function and it works. */
+#undef HAVE_STRNDUP
+
+/* Define to 1 if you have the <stropts.h> header file. */
+#undef HAVE_STROPTS_H
+
+/* Define to 1 if you have the `strpbrk' function. */
+#undef HAVE_STRPBRK
+
+/* Define to 1 if you have the `strtoimax' function. */
+#undef HAVE_STRTOIMAX
+
+/* Define to 1 if you have the `strtol' function. */
+#undef HAVE_STRTOL
+
+/* Define to 1 if you have the `strtoll' function. */
+#undef HAVE_STRTOLL
+
+/* Define to 1 if you have the `strtoul' function. */
+#undef HAVE_STRTOUL
+
+/* Define to 1 if you have the `strtoull' function. */
+#undef HAVE_STRTOULL
+
+/* Define to 1 if you have the `strtoumax' function. */
+#undef HAVE_STRTOUMAX
+
+/* Define to 1 if the system has the type `struct addrinfo'. */
+#undef HAVE_STRUCT_ADDRINFO
+
+/* Define if there is a member named d_type in the struct describing directory
+ headers. */
+#undef HAVE_STRUCT_DIRENT_D_TYPE
+
+/* Define to 1 if `f_fstypename' is member of `struct fsstat'. */
+#undef HAVE_STRUCT_FSSTAT_F_FSTYPENAME
+
+/* Define to 1 if `n_un.n_name' is member of `struct nlist'. */
+#undef HAVE_STRUCT_NLIST_N_UN_N_NAME
+
+/* Define to 1 if `sp_pwdp' is member of `struct spwd'. */
+#undef HAVE_STRUCT_SPWD_SP_PWDP
+
+/* Define to 1 if `f_fstypename' is member of `struct statfs'. */
+#undef HAVE_STRUCT_STATFS_F_FSTYPENAME
+
+/* Define to 1 if `f_namelen' is member of `struct statfs'. */
+#undef HAVE_STRUCT_STATFS_F_NAMELEN
+
+/* Define to 1 if `f_type' is member of `struct statfs'. */
+#undef HAVE_STRUCT_STATFS_F_TYPE
+
+/* Define to 1 if `f_basetype' is member of `struct statvfs'. */
+#undef HAVE_STRUCT_STATVFS_F_BASETYPE
+
+/* Define to 1 if `f_fstypename' is member of `struct statvfs'. */
+#undef HAVE_STRUCT_STATVFS_F_FSTYPENAME
+
+/* Define to 1 if `f_namemax' is member of `struct statvfs'. */
+#undef HAVE_STRUCT_STATVFS_F_NAMEMAX
+
+/* Define to 1 if `f_type' is member of `struct statvfs'. */
+#undef HAVE_STRUCT_STATVFS_F_TYPE
+
+/* Define to 1 if `st_atimensec' is member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_ATIMENSEC
+
+/* Define to 1 if `st_atimespec.tv_nsec' is member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC
+
+/* Define to 1 if `st_atim.st__tim.tv_nsec' is member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC
+
+/* Define to 1 if `st_atim.tv_nsec' is member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
+
+/* Define to 1 if `st_author' is member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_AUTHOR
+
+/* Define to 1 if `st_blocks' is member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_BLOCKS
+
+/* Define to 1 if `st_spare1' is member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_SPARE1
+
+/* Define to 1 if `tm_zone' is member of `struct tm'. */
+#undef HAVE_STRUCT_TM_TM_ZONE
+
+/* Define if struct utimbuf is declared -- usually in <utime.h>. Some systems
+ have utime.h but don't declare the struct anywhere. */
+#undef HAVE_STRUCT_UTIMBUF
+
+/* Define to 1 if `ut_exit' is member of `struct utmpx'. */
+#undef HAVE_STRUCT_UTMPX_UT_EXIT
+
+/* Define to 1 if `ut_exit.e_exit' is member of `struct utmpx'. */
+#undef HAVE_STRUCT_UTMPX_UT_EXIT_E_EXIT
+
+/* Define to 1 if `ut_exit.e_termination' is member of `struct utmpx'. */
+#undef HAVE_STRUCT_UTMPX_UT_EXIT_E_TERMINATION
+
+/* Define to 1 if `ut_exit.ut_exit' is member of `struct utmpx'. */
+#undef HAVE_STRUCT_UTMPX_UT_EXIT_UT_EXIT
+
+/* Define to 1 if `ut_exit.ut_termination' is member of `struct utmpx'. */
+#undef HAVE_STRUCT_UTMPX_UT_EXIT_UT_TERMINATION
+
+/* Define to 1 if `ut_id' is member of `struct utmpx'. */
+#undef HAVE_STRUCT_UTMPX_UT_ID
+
+/* Define to 1 if `ut_name' is member of `struct utmpx'. */
+#undef HAVE_STRUCT_UTMPX_UT_NAME
+
+/* Define to 1 if `ut_pid' is member of `struct utmpx'. */
+#undef HAVE_STRUCT_UTMPX_UT_PID
+
+/* Define to 1 if `ut_type' is member of `struct utmpx'. */
+#undef HAVE_STRUCT_UTMPX_UT_TYPE
+
+/* Define to 1 if `ut_user' is member of `struct utmpx'. */
+#undef HAVE_STRUCT_UTMPX_UT_USER
+
+/* Define to 1 if `ut_exit' is member of `struct utmp'. */
+#undef HAVE_STRUCT_UTMP_UT_EXIT
+
+/* Define to 1 if `ut_exit.e_exit' is member of `struct utmp'. */
+#undef HAVE_STRUCT_UTMP_UT_EXIT_E_EXIT
+
+/* Define to 1 if `ut_exit.e_termination' is member of `struct utmp'. */
+#undef HAVE_STRUCT_UTMP_UT_EXIT_E_TERMINATION
+
+/* Define to 1 if `ut_exit.ut_exit' is member of `struct utmp'. */
+#undef HAVE_STRUCT_UTMP_UT_EXIT_UT_EXIT
+
+/* Define to 1 if `ut_exit.ut_termination' is member of `struct utmp'. */
+#undef HAVE_STRUCT_UTMP_UT_EXIT_UT_TERMINATION
+
+/* Define to 1 if `ut_id' is member of `struct utmp'. */
+#undef HAVE_STRUCT_UTMP_UT_ID
+
+/* Define to 1 if `ut_name' is member of `struct utmp'. */
+#undef HAVE_STRUCT_UTMP_UT_NAME
+
+/* Define to 1 if `ut_pid' is member of `struct utmp'. */
+#undef HAVE_STRUCT_UTMP_UT_PID
+
+/* Define to 1 if `ut_type' is member of `struct utmp'. */
+#undef HAVE_STRUCT_UTMP_UT_TYPE
+
+/* Define to 1 if `ut_user' is member of `struct utmp'. */
+#undef HAVE_STRUCT_UTMP_UT_USER
+
+/* Define to 1 if you have the `strverscmp' function. */
+#undef HAVE_STRVERSCMP
+
+/* Define to 1 if you have the `strxfrm' function. */
+#undef HAVE_STRXFRM
+
+/* Define to 1 if your `struct stat' has `st_blocks'. Deprecated, use
+ `HAVE_STRUCT_STAT_ST_BLOCKS' instead. */
+#undef HAVE_ST_BLOCKS
+
+/* Define if struct stat has an st_dm_mode member. */
+#undef HAVE_ST_DM_MODE
+
+/* Define to 1 if you have the `sync' function. */
+#undef HAVE_SYNC
+
+/* Define to 1 if you have the `sysctl' function. */
+#undef HAVE_SYSCTL
+
+/* Define to 1 if you have the `sysinfo' function. */
+#undef HAVE_SYSINFO
+
+/* FIXME */
+#undef HAVE_SYSLOG
+
+/* Define to 1 if you have the <syslog.h> header file. */
+#undef HAVE_SYSLOG_H
+
+/* Define to 1 if you have the `sysmp' function. */
+#undef HAVE_SYSMP
+
+/* Define to 1 if you have the <sys/acl.h> header file. */
+#undef HAVE_SYS_ACL_H
+
+/* Define to 1 if you have the <sys/bitypes.h> header file. */
+#undef HAVE_SYS_BITYPES_H
+
+/* Define to 1 if you have the <sys/filsys.h> header file. */
+#undef HAVE_SYS_FILSYS_H
+
+/* Define to 1 if you have the <sys/fs/s5param.h> header file. */
+#undef HAVE_SYS_FS_S5PARAM_H
+
+/* Define to 1 if you have the <sys/fs_types.h> header file. */
+#undef HAVE_SYS_FS_TYPES_H
+
+/* Define to 1 if you have the <sys/inttypes.h> header file. */
+#undef HAVE_SYS_INTTYPES_H
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#undef HAVE_SYS_IOCTL_H
+
+/* Define to 1 if you have the <sys/mntent.h> header file. */
+#undef HAVE_SYS_MNTENT_H
+
+/* Define to 1 if you have the <sys/mount.h> header file. */
+#undef HAVE_SYS_MOUNT_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/pstat.h> header file. */
+#undef HAVE_SYS_PSTAT_H
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#undef HAVE_SYS_RESOURCE_H
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#undef HAVE_SYS_SELECT_H
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#undef HAVE_SYS_SOCKET_H
+
+/* Define to 1 if you have the <sys/statfs.h> header file. */
+#undef HAVE_SYS_STATFS_H
+
+/* Define to 1 if you have the <sys/statvfs.h> header file. */
+#undef HAVE_SYS_STATVFS_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/sysctl.h> header file. */
+#undef HAVE_SYS_SYSCTL_H
+
+/* Define to 1 if you have the <sys/sysinfo.h> header file. */
+#undef HAVE_SYS_SYSINFO_H
+
+/* Define to 1 if you have the <sys/sysmp.h> header file. */
+#undef HAVE_SYS_SYSMP_H
+
+/* Define to 1 if you have the <sys/systemcfg.h> header file. */
+#undef HAVE_SYS_SYSTEMCFG_H
+
+/* Define to 1 if you have the <sys/systeminfo.h> header file. */
+#undef HAVE_SYS_SYSTEMINFO_H
+
+/* Define to 1 if you have the <sys/table.h> header file. */
+#undef HAVE_SYS_TABLE_H
+
+/* Define to 1 if you have the <sys/timeb.h> header file. */
+#undef HAVE_SYS_TIMEB_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <sys/ucred.h> header file. */
+#undef HAVE_SYS_UCRED_H
+
+/* Define to 1 if you have the <sys/vfs.h> header file. */
+#undef HAVE_SYS_VFS_H
+
+/* Define to 1 if you have the <sys/wait.h> header file. */
+#undef HAVE_SYS_WAIT_H
+
+/* Define to 1 if you have the `table' function. */
+#undef HAVE_TABLE
+
+/* Define to 1 if you have the `tcgetattr' function. */
+#undef HAVE_TCGETATTR
+
+/* Define to 1 if you have the `tcgetpgrp' function. */
+#undef HAVE_TCGETPGRP
+
+/* Define to 1 if you have the `tcsetattr' function. */
+#undef HAVE_TCSETATTR
+
+/* Define to 1 if you have the <termios.h> header file. */
+#undef HAVE_TERMIOS_H
+
+/* Define to 1 if you have the <time.h> header file. */
+#undef HAVE_TIME_H
+
+/* Define if struct tm has the tm_gmtoff member. */
+#undef HAVE_TM_GMTOFF
+
+/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
+ `HAVE_STRUCT_TM_TM_ZONE' instead. */
+#undef HAVE_TM_ZONE
+
+/* Define to 1 if you have the `tsearch' function. */
+#undef HAVE_TSEARCH
+
+/* Define to 1 if you don't have `tm_zone' but do have the external array
+ `tzname'. */
+#undef HAVE_TZNAME
+
+/* Define to 1 if you have the `tzset' function. */
+#undef HAVE_TZSET
+
+/* Define to 1 if you have the `uname' function. */
+#undef HAVE_UNAME
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `unsetenv' function. */
+#undef HAVE_UNSETENV
+
+/* Define to 1 if the system has the type `unsigned long long int'. */
+#undef HAVE_UNSIGNED_LONG_LONG_INT
+
+/* Define if utimes accepts a null argument */
+#undef HAVE_UTIMES_NULL
+
+/* Define to 1 if you have the <utime.h> header file. */
+#undef HAVE_UTIME_H
+
+/* Define to 1 if `utime(file, NULL)' sets file's timestamp to the present. */
+#undef HAVE_UTIME_NULL
+
+/* Define to 1 if you have the `utmpname' function. */
+#undef HAVE_UTMPNAME
+
+/* Define to 1 if you have the `utmpxname' function. */
+#undef HAVE_UTMPXNAME
+
+/* Define to 1 if you have the <utmpx.h> header file. */
+#undef HAVE_UTMPX_H
+
+/* Define to 1 if you have the <utmp.h> header file. */
+#undef HAVE_UTMP_H
+
+/* FIXME */
+#undef HAVE_UT_HOST
+
+/* Define to 1 if you have the `vasnprintf' function. */
+#undef HAVE_VASNPRINTF
+
+/* Define to 1 if you have the `vasprintf' function. */
+#undef HAVE_VASPRINTF
+
+/* Define to 1 if you have the `vfork' function. */
+#undef HAVE_VFORK
+
+/* Define to 1 if you have the <vfork.h> header file. */
+#undef HAVE_VFORK_H
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#undef HAVE_WCHAR_H
+
+/* Define if you have the 'wchar_t' type. */
+#undef HAVE_WCHAR_T
+
+/* Define to 1 if you have the `wcrtomb' function. */
+#undef HAVE_WCRTOMB
+
+/* Define to 1 if you have the `wcscoll' function. */
+#undef HAVE_WCSCOLL
+
+/* Define to 1 if you have the `wcslen' function. */
+#undef HAVE_WCSLEN
+
+/* Define to 1 if you have the <wctype.h> header file. */
+#undef HAVE_WCTYPE_H
+
+/* Define to 1 if you have the `wcwidth' function. */
+#undef HAVE_WCWIDTH
+
+/* Define to 1 if you have the <winsock2.h> header file. */
+#undef HAVE_WINSOCK2_H
+
+/* Define if you have the 'wint_t' type. */
+#undef HAVE_WINT_T
+
+/* Define to 1 if you have the `wmemchr' function. */
+#undef HAVE_WMEMCHR
+
+/* Define to 1 if you have the `wmemcpy' function. */
+#undef HAVE_WMEMCPY
+
+/* Define to 1 if you have the `wmempcpy' function. */
+#undef HAVE_WMEMPCPY
+
+/* Define to 1 if `fork' works. */
+#undef HAVE_WORKING_FORK
+
+/* Define to 1 if O_NOATIME works. */
+#undef HAVE_WORKING_O_NOATIME
+
+/* Define to 1 if O_NOFOLLOW works. */
+#undef HAVE_WORKING_O_NOFOLLOW
+
+/* Define if utimes works properly. */
+#undef HAVE_WORKING_UTIMES
+
+/* Define to 1 if `vfork' works. */
+#undef HAVE_WORKING_VFORK
+
+/* Define to 1 if you have the <ws2tcpip.h> header file. */
+#undef HAVE_WS2TCPIP_H
+
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* Define to 1 if you have the `_ftime' function. */
+#undef HAVE__FTIME
+
+/* Define to 1 if you have the external variable, _system_configuration with a
+ member named physmem. */
+#undef HAVE__SYSTEM_CONFIGURATION
+
+/* Define to 1 if you have the `__fpending' function. */
+#undef HAVE___FPENDING
+
+/* Define to 1 if you have the `__fsetlocking' function. */
+#undef HAVE___FSETLOCKING
+
+/* The host operating system. */
+#undef HOST_OPERATING_SYSTEM
+
+/* Define as const if the declaration of iconv() needs const. */
+#undef ICONV_CONST
+
+#if FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+#else
+# define ISSLASH(C) ((C) == '/')
+#endif
+
+/* Define if `link(2)' dereferences symbolic links. */
+#undef LINK_FOLLOWS_SYMLINKS
+
+/* FIXME */
+#undef LOCALTIME_CACHE
+
+/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
+ slash. */
+#undef LSTAT_FOLLOWS_SLASHED_SYMLINK
+
+/* Define to 1 if `major', `minor', and `makedev' are declared in <mkdev.h>.
+ */
+#undef MAJOR_IN_MKDEV
+
+/* Define to 1 if `major', `minor', and `makedev' are declared in
+ <sysmacros.h>. */
+#undef MAJOR_IN_SYSMACROS
+
+/* If malloc(0) is != NULL, define this to 1. Otherwise define this to 0. */
+#undef MALLOC_0_IS_NONNULL
+
+/* Define if there is no specific function for reading the list of mounted
+ file systems. fread will be used to read /etc/mnttab. (SVR2) */
+#undef MOUNTED_FREAD
+
+/* Define if (like SVR2) there is no specific function for reading the list of
+ mounted file systems, and your system has these header files: <sys/fstyp.h>
+ and <sys/statfs.h>. (SVR3) */
+#undef MOUNTED_FREAD_FSTYP
+
+/* Define if there are functions named next_dev and fs_stat_dev for reading
+ the list of mounted file systems. (BeOS) */
+#undef MOUNTED_FS_STAT_DEV
+
+/* Define if there is a function named getfsstat for reading the list of
+ mounted file systems. (DEC Alpha running OSF/1) */
+#undef MOUNTED_GETFSSTAT
+
+/* Define if there is a function named getmnt for reading the list of mounted
+ file systems. (Ultrix) */
+#undef MOUNTED_GETMNT
+
+/* Define if there is a function named getmntent for reading the list of
+ mounted file systems, and that function takes a single argument. (4.3BSD,
+ SunOS, HP-UX, Dynix, Irix) */
+#undef MOUNTED_GETMNTENT1
+
+/* Define if there is a function named getmntent for reading the list of
+ mounted file systems, and that function takes two arguments. (SVR4) */
+#undef MOUNTED_GETMNTENT2
+
+/* Define if there is a function named getmntinfo for reading the list of
+ mounted file systems and it returns an array of 'struct statfs'. (4.4BSD,
+ Darwin) */
+#undef MOUNTED_GETMNTINFO
+
+/* Define if there is a function named getmntinfo for reading the list of
+ mounted file systems and it returns an array of 'struct statvfs'. (NetBSD
+ 3.0) */
+#undef MOUNTED_GETMNTINFO2
+
+/* Define if there is a function named listmntent that can be used to list all
+ mounted file systems. (UNICOS) */
+#undef MOUNTED_LISTMNTENT
+
+/* Define if there is a function named mntctl that can be used to read the
+ list of mounted file systems, and there is a system header file that
+ declares `struct vmount.' (AIX) */
+#undef MOUNTED_VMOUNT
+
+/* Define to 1 if assertions should be disabled. */
+#undef NDEBUG
+
+/* Define to 1 if your `struct nlist' has an `n_un' member. Obsolete, depend
+ on `HAVE_STRUCT_NLIST_N_UN_N_NAME */
+#undef NLIST_NAME_UNION
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* the number of pending output bytes on stream `fp' */
+#undef PENDING_OUTPUT_N_BYTES
+
+/* Define to the maximum link count that a true pipe can have. */
+#undef PIPE_LINK_COUNT_MAX
+
+/* Define this if you prefer euidaccess to return the correct result even if
+ this would make it nonreentrant. Define this only if your entire
+ application is safe even if the uid or gid might temporarily change. If
+ your application uses signal handlers or threads it is probably not safe.
+ */
+#undef PREFER_NONREENTRANT_EUIDACCESS
+
+/* Define if <inttypes.h> exists and defines unusable PRI* macros. */
+#undef PRI_MACROS_BROKEN
+
+/* Define to 1 if the C compiler supports function prototypes. */
+#undef PROTOTYPES
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+ 'ptrdiff_t'. */
+#undef PTRDIFF_T_SUFFIX
+
+/* Define if rename does not work for source file names with a trailing slash,
+ like the one from SunOS 4.1.1_U1. */
+#undef RENAME_TRAILING_SLASH_BUG
+
+/* Define if vasnprintf exists but is overridden by gnulib. */
+#undef REPLACE_VASNPRINTF
+
+/* Define if vasprintf exists but is overridden by gnulib. */
+#undef REPLACE_VASPRINTF
+
+/* the value to which errno is set when rmdir fails on a nonempty directory */
+#undef RMDIR_ERRNO_NOT_EMPTY
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+ 'sig_atomic_t'. */
+#undef SIG_ATOMIC_T_SUFFIX
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+ 'size_t'. */
+#undef SIZE_T_SUFFIX
+
+/* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+ automatically deduced at runtime.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define if the block counts reported by statfs may be truncated to 2GB and
+ the correct values may be stored in the f_spare array. (SunOS 4.1.2, 4.1.3,
+ and 4.1.3_U1 are reported to have this problem. SunOS 4.1.1 seems not to be
+ affected.) */
+#undef STATFS_TRUNCATES_BLOCK_COUNTS
+
+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+#undef STAT_MACROS_BROKEN
+
+/* Define if there is no specific function for reading file systems usage
+ information and you have the <sys/filsys.h> header file. (SVR2) */
+#undef STAT_READ_FILSYS
+
+/* Define if statfs takes 2 args and struct statfs has a field named f_bsize.
+ (4.3BSD, SunOS 4, HP-UX, AIX PS/2) */
+#undef STAT_STATFS2_BSIZE
+
+/* Define if statfs takes 2 args and struct statfs has a field named f_fsize.
+ (4.4BSD, NetBSD) */
+#undef STAT_STATFS2_FSIZE
+
+/* Define if statfs takes 2 args and the second argument has type struct
+ fs_data. (Ultrix) */
+#undef STAT_STATFS2_FS_DATA
+
+/* Define if statfs takes 3 args. (DEC Alpha running OSF/1) */
+#undef STAT_STATFS3_OSF1
+
+/* Define if statfs takes 4 args. (SVR3, Dynix, Irix, Dolphin) */
+#undef STAT_STATFS4
+
+/* Define if there is a function named statvfs. (SVR4) */
+#undef STAT_STATVFS
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if strerror_r returns char *. */
+#undef STRERROR_R_CHAR_P
+
+/* Define to 1 if the f_fsid member of struct statfs is an integer. */
+#undef STRUCT_STATFS_F_FSID_IS_INTEGER
+
+/* Define to 1 if the f_fsid member of struct statvfs is an integer. */
+#undef STRUCT_STATVFS_F_FSID_IS_INTEGER
+
+/* Define to 1 on System V Release 4. */
+#undef SVR4
+
+/* FIXME */
+#undef TERMIOS_NEEDS_XOPEN_SOURCE
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#undef TIME_WITH_SYS_TIME
+
+/* Define to 1 if your <sys/time.h> declares `struct tm'. */
+#undef TM_IN_SYS_TIME
+
+/* Define to 1 if the type of the st_atim member of a struct stat is struct
+ timespec. */
+#undef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC
+
+/* Define if tzset clobbers localtime's static buffer. */
+#undef TZSET_CLOBBERS_LOCALTIME
+
+/* Define to 1 for Encore UMAX. */
+#undef UMAX
+
+/* Define to 1 for Encore UMAX 4.3 that has <inq_status/cpustats.h> instead of
+ <sys/cpustats.h>. */
+#undef UMAX4_3
+
+/* Define to 1 if unlink (dir) cannot possibly succeed. */
+#undef UNLINK_CANNOT_UNLINK_DIR
+
+/* Define if you want access control list support. */
+#undef USE_ACL
+
+/* Define to 1 if you want getc etc. to use unlocked I/O if available.
+ Unlocked I/O can improve performance in unithreaded apps, but it is not
+ safe for multithreaded apps. */
+#undef USE_UNLOCKED_IO
+
+/* Version number of package */
+#undef VERSION
+
+/* Define if unsetenv() returns void, not int. */
+#undef VOID_UNSETENV
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+ 'wchar_t'. */
+#undef WCHAR_T_SUFFIX
+
+/* Define if sys/ptem.h is required for struct winsize. */
+#undef WINSIZE_IN_PTEM
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+ 'wint_t'. */
+#undef WINT_T_SUFFIX
+
+/* Define to 1 if your processor stores words with the most significant byte
+ first (like Motorola and SPARC, unlike Intel and VAX). */
+#undef WORDS_BIGENDIAN
+
+/* Define to 1 if on AIX 3.
+ System headers sometimes define this.
+ We just want to avoid a redefinition error message. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+
+/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
+#undef _LARGEFILE_SOURCE
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+ this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
+
+/* Define if you want regoff_t to be at least as wide POSIX requires. */
+#undef _REGEX_LARGE_OFFSETS
+
+/* Enable extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+
+/* Define to rpl_ if the getopt replacement functions and variables should be
+ used. */
+#undef __GETOPT_PREFIX
+
+/* Define to rpl_ if the openat replacement function should be used. */
+#undef __OPENAT_PREFIX
+
+/* Define like PROTOTYPES; this can be used by system headers. */
+#undef __PROTOTYPES
+
+/* Define to rpl_calloc if the replacement function should be used. */
+#undef calloc
+
+/* Define to rpl_fchownat if the replacement function should be used. */
+#undef fchownat
+
+/* Define to a replacement function name for fnmatch(). */
+#undef fnmatch
+
+/* Define to rpl_free if the replacement function should be used. */
+#undef free
+
+/* Define as rpl_getgroups if getgroups doesn't work right. */
+#undef getgroups
+
+/* Define to a replacement function name for getline(). */
+#undef getline
+
+/* Define to a replacement function name for getpass(). */
+#undef getpass
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef gid_t
+
+/* A replacement for va_copy, if needed. */
+#define gl_va_copy(a,b) ((a) = (b))
+
+/* Define to rpl_gmtime if the replacement function should be used. */
+#undef gmtime
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#undef inline
+#endif
+
+/* Define to `unsigned long int' if <sys/types.h> does not define. */
+#undef ino_t
+
+/* Define to long or long long if <stdint.h> and <inttypes.h> don't define. */
+#undef intmax_t
+
+/* Define to rpl_localtime if the replacement function should be used. */
+#undef localtime
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef major_t
+
+/* Define to rpl_malloc if the replacement function should be used. */
+#undef malloc
+
+/* Define to a type if <wchar.h> does not define. */
+#undef mbstate_t
+
+/* Define to rpl_memcmp if the replacement function should be used. */
+#undef memcmp
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef minor_t
+
+/* Define to rpl_mkdir if the replacement function should be used. */
+#undef mkdir
+
+/* Define to rpl_mktime if the replacement function should be used. */
+#undef mktime
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef mode_t
+
+/* Define to the name of the strftime replacement function. */
+#undef my_strftime
+
+/* Define to `long int' if <sys/types.h> does not define. */
+#undef off_t
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef pid_t
+
+/* Define to rpl_putenv if the replacement function should be used. */
+#undef putenv
+
+/* Define to rpl_re_comp if the replacement should be used. */
+#undef re_comp
+
+/* Define to rpl_re_compile_fastmap if the replacement should be used. */
+#undef re_compile_fastmap
+
+/* Define to rpl_re_compile_pattern if the replacement should be used. */
+#undef re_compile_pattern
+
+/* Define to rpl_re_exec if the replacement should be used. */
+#undef re_exec
+
+/* Define to rpl_re_match if the replacement should be used. */
+#undef re_match
+
+/* Define to rpl_re_match_2 if the replacement should be used. */
+#undef re_match_2
+
+/* Define to rpl_re_search if the replacement should be used. */
+#undef re_search
+
+/* Define to rpl_re_search_2 if the replacement should be used. */
+#undef re_search_2
+
+/* Define to rpl_re_set_registers if the replacement should be used. */
+#undef re_set_registers
+
+/* Define to rpl_re_set_syntax if the replacement should be used. */
+#undef re_set_syntax
+
+/* Define to rpl_re_syntax_options if the replacement should be used. */
+#undef re_syntax_options
+
+/* Define to rpl_realloc if the replacement function should be used. */
+#undef realloc
+
+/* Define to rpl_regcomp if the replacement should be used. */
+#undef regcomp
+
+/* Define to rpl_regerror if the replacement should be used. */
+#undef regerror
+
+/* Define to rpl_regexec if the replacement should be used. */
+#undef regexec
+
+/* Define to rpl_regfree if the replacement should be used. */
+#undef regfree
+
+/* Define to rpl_rename_dest_slash if the replacement function should be used.
+ */
+#undef rename
+
+/* Define to equivalent of C99 restrict keyword, or to nothing if this is not
+ supported. Do not define if restrict is supported directly. */
+#undef restrict
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
+/* type to use in place of socklen_t if not defined */
+#undef socklen_t
+
+/* Define as a signed type of the same size as size_t. */
+#undef ssize_t
+
+/* Define to rpl_strnlen if the replacement function should be used. */
+#undef strnlen
+
+/* Define to rpl_strtod if the replacement function should be used. */
+#undef strtod
+
+/* Define to rpl_tzset if the wrapper function should be used. */
+#undef tzset
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef uid_t
+
+/* Define to rpl_utime if the replacement function should be used. */
+#undef utime
+
+/* Define as a macro for copying va_list variables. */
+#undef va_copy
+
+/* Define as `fork' if `vfork' does not work. */
+#undef vfork
+
+/* Define to empty if the keyword `volatile' does not work. Warning: valid
+ code using `volatile' can become incorrect without. Disable with care. */
+#undef volatile
diff --git a/lib/creat-safer.c b/lib/creat-safer.c
new file mode 100644
index 0000000..f4a2e59
--- /dev/null
+++ b/lib/creat-safer.c
@@ -0,0 +1,32 @@
+/* Invoke creat, but avoid some glitches.
+
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+
+#include "fcntl-safer.h"
+
+#include <fcntl.h>
+#include "unistd-safer.h"
+
+int
+creat_safer (char const *file, mode_t mode)
+{
+ return fd_safer (creat (file, mode));
+}
diff --git a/lib/cycle-check.c b/lib/cycle-check.c
new file mode 100644
index 0000000..5359d71
--- /dev/null
+++ b/lib/cycle-check.c
@@ -0,0 +1,87 @@
+/* help detect directory cycles efficiently
+
+ Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering */
+
+#include <config.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <assert.h>
+#include <stdlib.h>
+
+#include <stdbool.h>
+
+#include "cycle-check.h"
+
+#define CC_MAGIC 9827862
+
+/* Return true if I is a power of 2, or is zero. */
+
+static inline bool
+is_zero_or_power_of_two (uintmax_t i)
+{
+ return (i & (i - 1)) == 0;
+}
+
+void
+cycle_check_init (struct cycle_check_state *state)
+{
+ state->chdir_counter = 0;
+ state->magic = CC_MAGIC;
+}
+
+/* In traversing a directory hierarchy, call this function once for each
+ descending chdir call, with SB corresponding to the chdir operand.
+ If SB corresponds to a directory that has already been seen,
+ return true to indicate that there is a directory cycle.
+ Note that this is done `lazily', which means that some of
+ the directories in the cycle may be processed twice before
+ the cycle is detected. */
+
+bool
+cycle_check (struct cycle_check_state *state, struct stat const *sb)
+{
+ assert (state->magic == CC_MAGIC);
+
+ /* If the current directory ever happens to be the same
+ as the one we last recorded for the cycle detection,
+ then it's obviously part of a cycle. */
+ if (state->chdir_counter && SAME_INODE (*sb, state->dev_ino))
+ return true;
+
+ /* If the number of `descending' chdir calls is a power of two,
+ record the dev/ino of the current directory. */
+ if (is_zero_or_power_of_two (++(state->chdir_counter)))
+ {
+ /* On all architectures that we know about, if the counter
+ overflows then there is a directory cycle here somewhere,
+ even if we haven't detected it yet. Typically this happens
+ only after the counter is incremented 2**64 times, so it's a
+ fairly theoretical point. */
+ if (state->chdir_counter == 0)
+ return true;
+
+ state->dev_ino.st_dev = sb->st_dev;
+ state->dev_ino.st_ino = sb->st_ino;
+ }
+
+ return false;
+}
diff --git a/lib/cycle-check.h b/lib/cycle-check.h
new file mode 100644
index 0000000..afd7a8f
--- /dev/null
+++ b/lib/cycle-check.h
@@ -0,0 +1,54 @@
+/* help detect directory cycles efficiently
+
+ Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering */
+
+#ifndef CYCLE_CHECK_H
+# define CYCLE_CHECK_H 1
+
+# include <stdint.h>
+# include <stdbool.h>
+# include "dev-ino.h"
+# include "same-inode.h"
+
+struct cycle_check_state
+{
+ struct dev_ino dev_ino;
+ uintmax_t chdir_counter;
+ int magic;
+};
+
+void cycle_check_init (struct cycle_check_state *state);
+bool cycle_check (struct cycle_check_state *state, struct stat const *sb);
+
+# define CYCLE_CHECK_REFLECT_CHDIR_UP(State, SB_dir, SB_subdir) \
+ do \
+ { \
+ /* You must call cycle_check at least once before using this macro. */ \
+ if ((State)->chdir_counter == 0) \
+ abort (); \
+ if (SAME_INODE ((State)->dev_ino, SB_subdir)) \
+ { \
+ (State)->dev_ino.st_dev = (SB_dir).st_dev; \
+ (State)->dev_ino.st_ino = (SB_dir).st_ino; \
+ } \
+ } \
+ while (0)
+
+#endif
diff --git a/lib/dev-ino.h b/lib/dev-ino.h
new file mode 100644
index 0000000..695d38c
--- /dev/null
+++ b/lib/dev-ino.h
@@ -0,0 +1,13 @@
+#ifndef DEV_INO_H
+# define DEV_INO_H 1
+
+# include <sys/types.h>
+# include <sys/stat.h>
+
+struct dev_ino
+{
+ ino_t st_ino;
+ dev_t st_dev;
+};
+
+#endif
diff --git a/lib/diacrit.c b/lib/diacrit.c
new file mode 100644
index 0000000..fc2d6b7
--- /dev/null
+++ b/lib/diacrit.c
@@ -0,0 +1,163 @@
+/* Diacritics processing for a few character codes.
+
+ Copyright (C) 1990, 1991, 1992, 1993, 2000, 2006 Free Software
+ Foundation, Inc.
+
+ François Pinard <pinard@iro.umontreal.ca>, 1988.
+
+ All this file is a temporary hack, waiting for locales in GNU.
+
+ 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; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "diacrit.h"
+
+/* ISO 8859-1 Latin-1 code is used as the underlying character set. If
+ MSDOS is defined, IBM-PC's character set code is used instead. */
+
+/*--------------------------------------------------------------------.
+| For each alphabetic character, returns what it would be without its |
+| possible diacritic symbol. |
+`--------------------------------------------------------------------*/
+
+const char diacrit_base[256] =
+{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 'A', 'B', 'C', 'D', 'E', 'F', 'G',
+ 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
+ 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
+ 'X', 'Y', 'Z', 0, 0, 0, 0, 0,
+ 0, 'a', 'b', 'c', 'd', 'e', 'f', 'g',
+ 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
+ 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
+ 'x', 'y', 'z', 0, 0, 0, 0, 0,
+
+#ifdef __MSDOS__
+
+ 'C', 'u', 'e', 'a', 'a', 'a', 'a', 'c',
+ 'e', 'e', 'e', 'i', 'i', 'i', 'A', 'A',
+ 'E', 'e', 'E', 'o', 'o', 'o', 'u', 'u',
+ 'y', 'O', 'U', 0, 0, 0, 0, 0,
+ 'a', 'i', 'o', 'u', 'n', 'N', 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+
+#else
+
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'C',
+ 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I',
+ 0, 'N', 'O', 'O', 'O', 'O', 'O', 0,
+ 'O', 'U', 'U', 'U', 'U', 'Y', 0, 0,
+ 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'c',
+ 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i',
+ 0, 'n', 'o', 'o', 'o', 'o', 'o', 0,
+ 'o', 'u', 'u', 'u', 'u', 'y', 0, 'y',
+
+#endif
+};
+
+/*------------------------------------------------------------------------.
+| For each alphabetic character, returns a code of what its diacritic is, |
+| according to the following codes: 1 (eE) over aA for latin diphtongs; 2 |
+| (') acute accent; 3 (`) grave accent; 4 (^) circumflex accent; 5 (") |
+| umlaut or diaraesis; 6 (~) tilda; 7 (,) cedilla; 8 (o) covering degree |
+| symbol; 9 (|) slashed character. |
+`------------------------------------------------------------------------*/
+
+const char diacrit_diac[256] =
+{
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 4, 0,
+ 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 6, 0,
+
+#ifdef __MSDOS__
+
+ 7, 5, 2, 4, 5, 3, 8, 7,
+ 4, 5, 3, 5, 4, 3, 5, 8,
+ 2, 1, 1, 4, 5, 3, 4, 3,
+ 5, 5, 5, 0, 0, 0, 0, 0,
+ 2, 2, 2, 2, 6, 6, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+
+#else
+
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 2, 4, 6, 5, 8, 1, 7,
+ 3, 2, 4, 5, 3, 2, 4, 5,
+ 0, 6, 3, 2, 4, 6, 5, 0,
+ 9, 3, 2, 4, 5, 2, 0, 0,
+ 3, 2, 4, 6, 5, 8, 1, 7,
+ 3, 2, 4, 5, 3, 2, 4, 5,
+ 0, 6, 3, 2, 4, 6, 5, 0,
+ 9, 3, 2, 4, 5, 2, 0, 0,
+
+#endif
+};
diff --git a/lib/diacrit.h b/lib/diacrit.h
new file mode 100644
index 0000000..54eb60f
--- /dev/null
+++ b/lib/diacrit.h
@@ -0,0 +1,29 @@
+/* Diacritics processing for a few character codes.
+ Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
+ François Pinard <pinard@iro.umontreal.ca>, 1988.
+
+ All this file is a temporary hack, waiting for locales in GNU.
+
+ 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; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+extern const char diacrit_base[]; /* characters without diacritics */
+extern const char diacrit_diac[]; /* diacritic code for each character */
+
+/* Returns CHAR without its diacritic. CHAR is known to be alphabetic. */
+#define tobase(Char) (diacrit_base[(unsigned char) (Char)])
+
+/* Returns a diacritic code for CHAR. CHAR is known to be alphabetic. */
+#define todiac(Char) (diacrit_diac[(unsigned char) (Char)])
diff --git a/lib/dirchownmod.c b/lib/dirchownmod.c
new file mode 100644
index 0000000..b3e9518
--- /dev/null
+++ b/lib/dirchownmod.c
@@ -0,0 +1,144 @@
+/* Change the ownership and mode bits of a directory.
+
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "dirchownmod.h"
+
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "lchmod.h"
+#include "lchown.h"
+#include "stat-macros.h"
+
+#ifndef HAVE_FCHMOD
+# define HAVE_FCHMOD 0
+# undef fchmod
+# define fchmod(fd, mode) (-1)
+#endif
+
+/* Change the ownership and mode bits of a directory. If FD is
+ nonnegative, it should be a file descriptor associated with the
+ directory; close it before returning. DIR is the name of the
+ directory.
+
+ If MKDIR_MODE is not (mode_t) -1, mkdir (DIR, MKDIR_MODE) has just
+ been executed successfully with umask zero, so DIR should be a
+ directory (not a symbolic link).
+
+ First, set the file's owner to OWNER and group to GROUP, but leave
+ the owner alone if OWNER is (uid_t) -1, and similarly for GROUP.
+
+ Then, set the file's mode bits to MODE, except preserve any of the
+ bits that correspond to zero bits in MODE_BITS. In other words,
+ MODE_BITS is a mask that specifies which of the file's mode bits
+ should be set or cleared. MODE should be a subset of MODE_BITS,
+ which in turn should be a subset of CHMOD_MODE_BITS.
+
+ This implementation assumes the current umask is zero.
+
+ Return 0 if successful, -1 (setting errno) otherwise. Unsuccessful
+ calls may do the chown but not the chmod. */
+
+int
+dirchownmod (int fd, char const *dir, mode_t mkdir_mode,
+ uid_t owner, gid_t group,
+ mode_t mode, mode_t mode_bits)
+{
+ struct stat st;
+ int result = (fd < 0 ? stat (dir, &st) : fstat (fd, &st));
+
+ if (result == 0)
+ {
+ mode_t dir_mode = st.st_mode;
+
+ /* Check whether DIR is a directory. If FD is nonnegative, this
+ check avoids changing the ownership and mode bits of the
+ wrong file in many cases. This doesn't fix all the race
+ conditions, but it is better than nothing. */
+ if (! S_ISDIR (dir_mode))
+ {
+ errno = ENOTDIR;
+ result = -1;
+ }
+ else
+ {
+ /* If at least one of the S_IXUGO bits are set, chown might
+ clear the S_ISUID and S_SGID bits. Keep track of any
+ file mode bits whose values are indeterminate due to this
+ issue. */
+ mode_t indeterminate = 0;
+
+ /* On some systems, chown clears S_ISUID and S_ISGID, so do
+ chown before chmod. On older System V hosts, ordinary
+ users can give their files away via chown; don't worry
+ about that here, since users shouldn't do that. */
+
+ if ((owner != (uid_t) -1 && owner != st.st_uid)
+ || (group != (gid_t) -1 && group != st.st_gid))
+ {
+ result = (0 <= fd
+ ? fchown (fd, owner, group)
+ : mkdir_mode != (mode_t) -1
+ ? lchown (dir, owner, group)
+ : chown (dir, owner, group));
+
+ /* Either the user cares about an indeterminate bit and
+ it'll be set properly by chmod below, or the user
+ doesn't care and it's OK to use the bit's pre-chown
+ value. So there's no need to re-stat DIR here. */
+
+ if (result == 0 && (dir_mode & S_IXUGO))
+ indeterminate = dir_mode & (S_ISUID | S_ISGID);
+ }
+
+ /* If the file mode bits might not be right, use chmod to
+ change them. Don't change bits the user doesn't care
+ about. */
+ if (result == 0 && (((dir_mode ^ mode) | indeterminate) & mode_bits))
+ {
+ mode_t chmod_mode =
+ mode | (dir_mode & CHMOD_MODE_BITS & ~mode_bits);
+ result = (HAVE_FCHMOD && 0 <= fd
+ ? fchmod (fd, chmod_mode)
+ : mkdir_mode != (mode_t) -1
+ ? lchmod (dir, chmod_mode)
+ : chmod (dir, chmod_mode));
+ }
+ }
+ }
+
+ if (0 <= fd)
+ {
+ if (result == 0)
+ result = close (fd);
+ else
+ {
+ int e = errno;
+ close (fd);
+ errno = e;
+ }
+ }
+
+ return result;
+}
diff --git a/lib/dirchownmod.h b/lib/dirchownmod.h
new file mode 100644
index 0000000..3f07748
--- /dev/null
+++ b/lib/dirchownmod.h
@@ -0,0 +1,2 @@
+#include <sys/types.h>
+int dirchownmod (int, char const *, mode_t, uid_t, gid_t, mode_t, mode_t);
diff --git a/lib/dirent_.h b/lib/dirent_.h
new file mode 100644
index 0000000..3fa8480
--- /dev/null
+++ b/lib/dirent_.h
@@ -0,0 +1,42 @@
+/* Wrapper around <dirent.h>.
+ Copyright (C) 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _GL_DIRENT_H
+#define _GL_DIRENT_H
+
+#include @ABSOLUTE_DIRENT_H@
+
+
+/* Declare overridden functions. */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if @REPLACE_FCHDIR@
+# define opendir rpl_opendir
+extern DIR * opendir (const char *);
+# define closedir rpl_closedir
+extern int closedir (DIR *);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _GL_DIRENT_H */
diff --git a/lib/dirfd.c b/lib/dirfd.c
new file mode 100644
index 0000000..06cb3c4
--- /dev/null
+++ b/lib/dirfd.c
@@ -0,0 +1,29 @@
+/* dirfd.c -- return the file descriptor associated with an open DIR*
+
+ Copyright (C) 2001, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+
+#include "dirfd.h"
+
+int
+dirfd (DIR const *dir_p)
+{
+ return DIR_TO_FD (dir_p);
+}
diff --git a/lib/dirfd.h b/lib/dirfd.h
new file mode 100644
index 0000000..05b7777
--- /dev/null
+++ b/lib/dirfd.h
@@ -0,0 +1,29 @@
+/* Declare dirfd, if necessary.
+ Copyright (C) 2001, 2002, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written by Jim Meyering. */
+
+#include <sys/types.h>
+
+#include <dirent.h>
+
+#ifndef HAVE_DECL_DIRFD
+"this configure-time declaration test was not run"
+#endif
+#if !HAVE_DECL_DIRFD && !defined dirfd
+int dirfd (DIR const *);
+#endif
diff --git a/lib/dirname.c b/lib/dirname.c
new file mode 100644
index 0000000..16552c6
--- /dev/null
+++ b/lib/dirname.c
@@ -0,0 +1,85 @@
+/* dirname.c -- return all but the last element in a file name
+
+ Copyright (C) 1990, 1998, 2000, 2001, 2003, 2004, 2005, 2006 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "dirname.h"
+
+#include <string.h>
+#include "xalloc.h"
+
+/* Return the length of the prefix of FILE that will be used by
+ dir_name. If FILE is in the working directory, this returns zero
+ even though `dir_name (FILE)' will return ".". Works properly even
+ if there are trailing slashes (by effectively ignoring them). */
+
+size_t
+dir_len (char const *file)
+{
+ size_t prefix_length = FILE_SYSTEM_PREFIX_LEN (file);
+ size_t length;
+
+ /* Advance prefix_length beyond important leading slashes. */
+ prefix_length += (prefix_length != 0
+ ? (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
+ && ISSLASH (file[prefix_length]))
+ : (ISSLASH (file[0])
+ ? ((DOUBLE_SLASH_IS_DISTINCT_ROOT
+ && ISSLASH (file[1]) && ! ISSLASH (file[2])
+ ? 2 : 1))
+ : 0));
+
+ /* Strip the basename and any redundant slashes before it. */
+ for (length = last_component (file) - file;
+ prefix_length < length; length--)
+ if (! ISSLASH (file[length - 1]))
+ break;
+ return length;
+}
+
+
+/* In general, we can't use the builtin `dirname' function if available,
+ since it has different meanings in different environments.
+ In some environments the builtin `dirname' modifies its argument.
+
+ Return the leading directories part of FILE, allocated with xmalloc.
+ Works properly even if there are trailing slashes (by effectively
+ ignoring them). Unlike POSIX dirname(), FILE cannot be NULL.
+
+ If lstat (FILE) would succeed, then { chdir (dir_name (FILE));
+ lstat (base_name (FILE)); } will access the same file. Likewise,
+ if the sequence { chdir (dir_name (FILE));
+ rename (base_name (FILE), "foo"); } succeeds, you have renamed FILE
+ to "foo" in the same directory FILE was in. */
+
+char *
+dir_name (char const *file)
+{
+ size_t length = dir_len (file);
+ bool append_dot = (length == 0
+ || (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
+ && length == FILE_SYSTEM_PREFIX_LEN (file)
+ && file[2] != '\0' && ! ISSLASH (file[2])));
+ char *dir = xmalloc (length + append_dot + 1);
+ memcpy (dir, file, length);
+ if (append_dot)
+ dir[length++] = '.';
+ dir[length] = '\0';
+ return dir;
+}
diff --git a/lib/dirname.h b/lib/dirname.h
new file mode 100644
index 0000000..91e7ed3
--- /dev/null
+++ b/lib/dirname.h
@@ -0,0 +1,70 @@
+/* Take file names apart into directory and base names.
+
+ Copyright (C) 1998, 2001, 2003-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef DIRNAME_H_
+# define DIRNAME_H_ 1
+
+# include <stdbool.h>
+# include <stddef.h>
+
+# ifndef DIRECTORY_SEPARATOR
+# define DIRECTORY_SEPARATOR '/'
+# endif
+
+# ifndef ISSLASH
+# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
+# endif
+
+# ifndef FILE_SYSTEM_PREFIX_LEN
+# if FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX
+ /* This internal macro assumes ASCII, but all hosts that support drive
+ letters use ASCII. */
+# define _IS_DRIVE_LETTER(c) (((unsigned int) (c) | ('a' - 'A')) - 'a' \
+ <= 'z' - 'a')
+# define FILE_SYSTEM_PREFIX_LEN(Filename) \
+ (_IS_DRIVE_LETTER ((Filename)[0]) && (Filename)[1] == ':' ? 2 : 0)
+# else
+# define FILE_SYSTEM_PREFIX_LEN(Filename) 0
+# endif
+# endif
+
+# ifndef FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
+# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 0
+# endif
+
+# ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT
+# define DOUBLE_SLASH_IS_DISTINCT_ROOT 0
+# endif
+
+# if FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
+# define IS_ABSOLUTE_FILE_NAME(F) ISSLASH ((F)[FILE_SYSTEM_PREFIX_LEN (F)])
+# else
+# define IS_ABSOLUTE_FILE_NAME(F) \
+ (ISSLASH ((F)[0]) || 0 < FILE_SYSTEM_PREFIX_LEN (F))
+# endif
+# define IS_RELATIVE_FILE_NAME(F) (! IS_ABSOLUTE_FILE_NAME (F))
+
+char *base_name (char const *file);
+char *dir_name (char const *file);
+size_t base_len (char const *file);
+size_t dir_len (char const *file);
+char *last_component (char const *file);
+
+bool strip_trailing_slashes (char *file);
+
+#endif /* not DIRNAME_H_ */
diff --git a/lib/dup-safer.c b/lib/dup-safer.c
new file mode 100644
index 0000000..7b12b61
--- /dev/null
+++ b/lib/dup-safer.c
@@ -0,0 +1,45 @@
+/* Invoke dup, but avoid some glitches.
+
+ Copyright (C) 2001, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "unistd-safer.h"
+
+#include <fcntl.h>
+
+#include <unistd.h>
+#ifndef STDERR_FILENO
+# define STDERR_FILENO 2
+#endif
+
+/* Like dup, but do not return STDIN_FILENO, STDOUT_FILENO, or
+ STDERR_FILENO. */
+
+int
+dup_safer (int fd)
+{
+#if defined F_DUPFD && !defined FCHDIR_REPLACEMENT
+ return fcntl (fd, F_DUPFD, STDERR_FILENO + 1);
+#else
+ /* fd_safer calls us back, but eventually the recursion unwinds and
+ does the right thing. */
+ return fd_safer (dup (fd));
+#endif
+}
diff --git a/lib/dup2.c b/lib/dup2.c
new file mode 100644
index 0000000..8894481
--- /dev/null
+++ b/lib/dup2.c
@@ -0,0 +1,58 @@
+/* Duplicate an open file descriptor to a specified file descriptor.
+
+ Copyright (C) 1999, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Paul Eggert */
+
+#include <config.h>
+
+/* Specification. */
+#include <unistd.h>
+
+#include <errno.h>
+#include <fcntl.h>
+
+#ifndef F_DUPFD
+static int
+dupfd (int fd, int desired_fd)
+{
+ int duplicated_fd = dup (fd);
+ if (duplicated_fd < 0 || duplicated_fd == desired_fd)
+ return duplicated_fd;
+ else
+ {
+ int r = dupfd (fd, desired_fd);
+ int e = errno;
+ close (duplicated_fd);
+ errno = e;
+ return r;
+ }
+}
+#endif
+
+int
+dup2 (int fd, int desired_fd)
+{
+ if (fd == desired_fd)
+ return fd;
+ close (desired_fd);
+#ifdef F_DUPFD
+ return fcntl (fd, F_DUPFD, desired_fd);
+#else
+ return dupfd (fd, desired_fd);
+#endif
+}
diff --git a/lib/error.c b/lib/error.c
new file mode 100644
index 0000000..cf86343
--- /dev/null
+++ b/lib/error.c
@@ -0,0 +1,338 @@
+/* Error handler for noninteractive utilities
+ Copyright (C) 1990-1998, 2000-2005, 2006 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
+
+#if !_LIBC
+# include <config.h>
+#endif
+
+#include "error.h"
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#if !_LIBC && ENABLE_NLS
+# include "gettext.h"
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+# include <stdbool.h>
+# include <stdint.h>
+# include <wchar.h>
+# define mbsrtowcs __mbsrtowcs
+#endif
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#ifndef _
+# define _(String) String
+#endif
+
+/* If NULL, error will flush stdout, then print on stderr the program
+ name, a colon and a space. Otherwise, error will call this
+ function without parameters instead. */
+void (*error_print_progname) (void);
+
+/* This variable is incremented each time `error' is called. */
+unsigned int error_message_count;
+
+#ifdef _LIBC
+/* In the GNU C library, there is a predefined variable for this. */
+
+# define program_name program_invocation_name
+# include <errno.h>
+# include <limits.h>
+# include <libio/libioP.h>
+
+/* In GNU libc we want do not want to use the common name `error' directly.
+ Instead make it a weak alias. */
+extern void __error (int status, int errnum, const char *message, ...)
+ __attribute__ ((__format__ (__printf__, 3, 4)));
+extern void __error_at_line (int status, int errnum, const char *file_name,
+ unsigned int line_number, const char *message,
+ ...)
+ __attribute__ ((__format__ (__printf__, 5, 6)));;
+# define error __error
+# define error_at_line __error_at_line
+
+# include <libio/iolibio.h>
+# define fflush(s) INTUSE(_IO_fflush) (s)
+# undef putc
+# define putc(c, fp) INTUSE(_IO_putc) (c, fp)
+
+# include <bits/libc-lock.h>
+
+#else /* not _LIBC */
+
+# if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P
+# ifndef HAVE_DECL_STRERROR_R
+"this configure-time declaration test was not run"
+# endif
+char *strerror_r ();
+# endif
+
+/* The calling program should define program_name and set it to the
+ name of the executing program. */
+extern char *program_name;
+
+# if HAVE_STRERROR_R || defined strerror_r
+# define __strerror_r strerror_r
+# endif /* HAVE_STRERROR_R || defined strerror_r */
+#endif /* not _LIBC */
+
+static void
+print_errno_message (int errnum)
+{
+ char const *s;
+
+#if defined HAVE_STRERROR_R || _LIBC
+ char errbuf[1024];
+# if STRERROR_R_CHAR_P || _LIBC
+ s = __strerror_r (errnum, errbuf, sizeof errbuf);
+# else
+ if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0)
+ s = errbuf;
+ else
+ s = 0;
+# endif
+#else
+ s = strerror (errnum);
+#endif
+
+#if !_LIBC
+ if (! s)
+ s = _("Unknown system error");
+#endif
+
+#if _LIBC
+ __fxprintf (NULL, ": %s", s);
+#else
+ fprintf (stderr, ": %s", s);
+#endif
+}
+
+static void
+error_tail (int status, int errnum, const char *message, va_list args)
+{
+#if _LIBC
+ if (_IO_fwide (stderr, 0) > 0)
+ {
+# define ALLOCA_LIMIT 2000
+ size_t len = strlen (message) + 1;
+ wchar_t *wmessage = NULL;
+ mbstate_t st;
+ size_t res;
+ const char *tmp;
+ bool use_malloc = false;
+
+ while (1)
+ {
+ if (__libc_use_alloca (len * sizeof (wchar_t)))
+ wmessage = (wchar_t *) alloca (len * sizeof (wchar_t));
+ else
+ {
+ if (!use_malloc)
+ wmessage = NULL;
+
+ wchar_t *p = (wchar_t *) realloc (wmessage,
+ len * sizeof (wchar_t));
+ if (p == NULL)
+ {
+ free (wmessage);
+ fputws_unlocked (L"out of memory\n", stderr);
+ return;
+ }
+ wmessage = p;
+ use_malloc = true;
+ }
+
+ memset (&st, '\0', sizeof (st));
+ tmp = message;
+
+ res = mbsrtowcs (wmessage, &tmp, len, &st);
+ if (res != len)
+ break;
+
+ if (__builtin_expect (len >= SIZE_MAX / 2, 0))
+ {
+ /* This really should not happen if everything is fine. */
+ res = (size_t) -1;
+ break;
+ }
+
+ len *= 2;
+ }
+
+ if (res == (size_t) -1)
+ {
+ /* The string cannot be converted. */
+ if (use_malloc)
+ {
+ free (wmessage);
+ use_malloc = false;
+ }
+ wmessage = (wchar_t *) L"???";
+ }
+
+ __vfwprintf (stderr, wmessage, args);
+
+ if (use_malloc)
+ free (wmessage);
+ }
+ else
+#endif
+ vfprintf (stderr, message, args);
+ va_end (args);
+
+ ++error_message_count;
+ if (errnum)
+ print_errno_message (errnum);
+#if _LIBC
+ __fxprintf (NULL, "\n");
+#else
+ putc ('\n', stderr);
+#endif
+ fflush (stderr);
+ if (status)
+ exit (status);
+}
+
+
+/* Print the program name and error message MESSAGE, which is a printf-style
+ format string with optional args.
+ If ERRNUM is nonzero, print its corresponding system error message.
+ Exit with status STATUS if it is nonzero. */
+void
+error (int status, int errnum, const char *message, ...)
+{
+ va_list args;
+
+#if defined _LIBC && defined __libc_ptf_call
+ /* We do not want this call to be cut short by a thread
+ cancellation. Therefore disable cancellation for now. */
+ int state = PTHREAD_CANCEL_ENABLE;
+ __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
+ 0);
+#endif
+
+ fflush (stdout);
+#ifdef _LIBC
+ _IO_flockfile (stderr);
+#endif
+ if (error_print_progname)
+ (*error_print_progname) ();
+ else
+ {
+#if _LIBC
+ __fxprintf (NULL, "%s: ", program_name);
+#else
+ fprintf (stderr, "%s: ", program_name);
+#endif
+ }
+
+ va_start (args, message);
+ error_tail (status, errnum, message, args);
+
+#ifdef _LIBC
+ _IO_funlockfile (stderr);
+# ifdef __libc_ptf_call
+ __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
+# endif
+#endif
+}
+
+/* Sometimes we want to have at most one error per line. This
+ variable controls whether this mode is selected or not. */
+int error_one_per_line;
+
+void
+error_at_line (int status, int errnum, const char *file_name,
+ unsigned int line_number, const char *message, ...)
+{
+ va_list args;
+
+ if (error_one_per_line)
+ {
+ static const char *old_file_name;
+ static unsigned int old_line_number;
+
+ if (old_line_number == line_number
+ && (file_name == old_file_name
+ || strcmp (old_file_name, file_name) == 0))
+ /* Simply return and print nothing. */
+ return;
+
+ old_file_name = file_name;
+ old_line_number = line_number;
+ }
+
+#if defined _LIBC && defined __libc_ptf_call
+ /* We do not want this call to be cut short by a thread
+ cancellation. Therefore disable cancellation for now. */
+ int state = PTHREAD_CANCEL_ENABLE;
+ __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
+ 0);
+#endif
+
+ fflush (stdout);
+#ifdef _LIBC
+ _IO_flockfile (stderr);
+#endif
+ if (error_print_progname)
+ (*error_print_progname) ();
+ else
+ {
+#if _LIBC
+ __fxprintf (NULL, "%s:", program_name);
+#else
+ fprintf (stderr, "%s:", program_name);
+#endif
+ }
+
+#if _LIBC
+ __fxprintf (NULL, file_name != NULL ? "%s:%d: " : " ",
+ file_name, line_number);
+#else
+ fprintf (stderr, file_name != NULL ? "%s:%d: " : " ",
+ file_name, line_number);
+#endif
+
+ va_start (args, message);
+ error_tail (status, errnum, message, args);
+
+#ifdef _LIBC
+ _IO_funlockfile (stderr);
+# ifdef __libc_ptf_call
+ __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
+# endif
+#endif
+}
+
+#ifdef _LIBC
+/* Make the weak alias. */
+# undef error
+# undef error_at_line
+weak_alias (__error, error)
+weak_alias (__error_at_line, error_at_line)
+#endif
diff --git a/lib/error.h b/lib/error.h
new file mode 100644
index 0000000..5a5f247
--- /dev/null
+++ b/lib/error.h
@@ -0,0 +1,66 @@
+/* Declaration for error-reporting function
+ Copyright (C) 1995, 1996, 1997, 2003, 2006 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _ERROR_H
+#define _ERROR_H 1
+
+#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later. */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
+# define __attribute__(Spec) /* empty */
+# endif
+/* The __-protected variants of `format' and `printf' attributes
+ are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
+# define __format__ format
+# define __printf__ printf
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Print a message with `fprintf (stderr, FORMAT, ...)';
+ if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
+ If STATUS is nonzero, terminate the program with `exit (STATUS)'. */
+
+extern void error (int __status, int __errnum, const char *__format, ...)
+ __attribute__ ((__format__ (__printf__, 3, 4)));
+
+extern void error_at_line (int __status, int __errnum, const char *__fname,
+ unsigned int __lineno, const char *__format, ...)
+ __attribute__ ((__format__ (__printf__, 5, 6)));
+
+/* If NULL, error will flush stdout, then print on stderr the program
+ name, a colon and a space. Otherwise, error will call this
+ function without parameters instead. */
+extern void (*error_print_progname) (void);
+
+/* This variable is incremented each time `error' is called. */
+extern unsigned int error_message_count;
+
+/* Sometimes we want to have at most one error per line. This
+ variable controls whether this mode is selected or not. */
+extern int error_one_per_line;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* error.h */
diff --git a/lib/euidaccess-stat.c b/lib/euidaccess-stat.c
new file mode 100644
index 0000000..7663c46
--- /dev/null
+++ b/lib/euidaccess-stat.c
@@ -0,0 +1,143 @@
+/* euidaccess-stat -- check if effective user id can access lstat'd file
+ This function is probably useful only for choosing whether to issue
+ a prompt in an implementation of POSIX-specified rm.
+
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Adapted for use in GNU remove.c by Jim Meyering. */
+
+#include <config.h>
+
+#include "euidaccess-stat.h"
+
+#include <unistd.h>
+
+#ifndef F_OK
+# define F_OK 0
+# define X_OK 1
+# define W_OK 2
+# define R_OK 4
+#endif
+
+#include "group-member.h"
+#include "stat-macros.h"
+
+/* Return true if the current user has permission of type MODE
+ on the file from which stat buffer *ST was obtained, ignoring
+ ACLs, attributes, `read-only'ness, etc...
+ Otherwise, return false.
+
+ Like the reentrant version of euidaccess, but starting with
+ a stat buffer rather than a file name. Hence, this function
+ never calls access or accessx, and doesn't take into account
+ whether the file has ACLs or other attributes, or resides on
+ a read-only file system. */
+
+bool
+euidaccess_stat (struct stat const *st, int mode)
+{
+ uid_t euid;
+ unsigned int granted;
+
+ /* Convert the mode to traditional form, clearing any bogus bits. */
+ if (R_OK == 4 && W_OK == 2 && X_OK == 1 && F_OK == 0)
+ mode &= 7;
+ else
+ mode = ((mode & R_OK ? 4 : 0)
+ + (mode & W_OK ? 2 : 0)
+ + (mode & X_OK ? 1 : 0));
+
+ if (mode == 0)
+ return true; /* The file exists. */
+
+ euid = geteuid ();
+
+ /* The super-user can read and write any file, and execute any file
+ that anyone can execute. */
+ if (euid == 0 && ((mode & X_OK) == 0
+ || (st->st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))))
+ return true;
+
+ /* Convert the file's permission bits to traditional form. */
+ if ( S_IRUSR == (4 << 6)
+ && S_IWUSR == (2 << 6)
+ && S_IXUSR == (1 << 6)
+ && S_IRGRP == (4 << 3)
+ && S_IWGRP == (2 << 3)
+ && S_IXGRP == (1 << 3)
+ && S_IROTH == (4 << 0)
+ && S_IWOTH == (2 << 0)
+ && S_IXOTH == (1 << 0))
+ granted = st->st_mode;
+ else
+ granted = ( (st->st_mode & S_IRUSR ? 4 << 6 : 0)
+ + (st->st_mode & S_IWUSR ? 2 << 6 : 0)
+ + (st->st_mode & S_IXUSR ? 1 << 6 : 0)
+ + (st->st_mode & S_IRGRP ? 4 << 3 : 0)
+ + (st->st_mode & S_IWGRP ? 2 << 3 : 0)
+ + (st->st_mode & S_IXGRP ? 1 << 3 : 0)
+ + (st->st_mode & S_IROTH ? 4 << 0 : 0)
+ + (st->st_mode & S_IWOTH ? 2 << 0 : 0)
+ + (st->st_mode & S_IXOTH ? 1 << 0 : 0));
+
+ if (euid == st->st_uid)
+ granted >>= 6;
+ else
+ {
+ gid_t egid = getegid ();
+ if (egid == st->st_gid || group_member (st->st_gid))
+ granted >>= 3;
+ }
+
+ if ((mode & ~granted) == 0)
+ return true;
+
+ return false;
+}
+
+
+#ifdef TEST
+# include <errno.h>
+# include <stdio.h>
+# include <stdlib.h>
+
+# include "error.h"
+# define _(msg) msg
+
+char *program_name;
+
+int
+main (int argc, char **argv)
+{
+ char *file;
+ int mode;
+ bool ok;
+ struct stat st;
+
+ program_name = argv[0];
+ if (argc < 3)
+ abort ();
+ file = argv[1];
+ mode = atoi (argv[2]);
+ if (lstat (file, &st) != 0)
+ error (EXIT_FAILURE, errno, _("cannot stat %s"), file);
+
+ ok = euidaccess_stat (&st, mode);
+ printf ("%s: %s\n", file, ok ? "y" : "n");
+ exit (0);
+}
+#endif
diff --git a/lib/euidaccess-stat.h b/lib/euidaccess-stat.h
new file mode 100644
index 0000000..de24961
--- /dev/null
+++ b/lib/euidaccess-stat.h
@@ -0,0 +1,5 @@
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdbool.h>
+
+bool euidaccess_stat (struct stat const *st, int mode);
diff --git a/lib/euidaccess.c b/lib/euidaccess.c
new file mode 100644
index 0000000..5148a5b
--- /dev/null
+++ b/lib/euidaccess.c
@@ -0,0 +1,221 @@
+/* euidaccess -- check if effective user id can access file
+
+ Copyright (C) 1990, 1991, 1995, 1998, 2000, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
+
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David MacKenzie and Torbjorn Granlund.
+ Adapted for GNU C library by Roland McGrath. */
+
+#ifndef _LIBC
+# include <config.h>
+# include "euidaccess.h"
+#endif
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#if HAVE_LIBGEN_H
+# include <libgen.h>
+#endif
+
+#include <errno.h>
+#ifndef __set_errno
+# define __set_errno(val) errno = (val)
+#endif
+
+#if defined EACCES && !defined EACCESS
+# define EACCESS EACCES
+#endif
+
+#ifndef F_OK
+# define F_OK 0
+# define X_OK 1
+# define W_OK 2
+# define R_OK 4
+#endif
+
+
+#ifdef _LIBC
+
+# define access __access
+# define getuid __getuid
+# define getgid __getgid
+# define geteuid __geteuid
+# define getegid __getegid
+# define group_member __group_member
+# define euidaccess __euidaccess
+# undef stat
+# define stat stat64
+
+#else
+
+# include "group-member.h"
+
+#endif
+
+/* Return 0 if the user has permission of type MODE on FILE;
+ otherwise, return -1 and set `errno'.
+ Like access, except that it uses the effective user and group
+ id's instead of the real ones, and it does not always check for read-only
+ file system, text busy, etc. */
+
+int
+euidaccess (const char *file, int mode)
+{
+#if defined EFF_ONLY_OK
+ return access (file, mode | EFF_ONLY_OK);
+#elif defined ACC_SELF
+ return accessx (file, mode, ACC_SELF);
+#elif HAVE_EACCESS
+ return eaccess (file, mode);
+#else
+
+ uid_t uid = getuid ();
+ gid_t gid = getgid ();
+ uid_t euid = geteuid ();
+ gid_t egid = getegid ();
+ struct stat stats;
+
+# if HAVE_DECL_SETREGID && PREFER_NONREENTRANT_EUIDACCESS
+
+ /* Define PREFER_NONREENTRANT_EUIDACCESS if you prefer euidaccess to
+ return the correct result even if this would make it
+ nonreentrant. Define this only if your entire application is
+ safe even if the uid or gid might temporarily change. If your
+ application uses signal handlers or threads it is probably not
+ safe. */
+
+ if (mode == F_OK)
+ return stat (file, &stats);
+ else
+ {
+ int result;
+ int saved_errno;
+
+ if (uid != euid)
+ setreuid (euid, uid);
+ if (gid != egid)
+ setregid (egid, gid);
+
+ result = access (file, mode);
+ saved_errno = errno;
+
+ /* Restore them. */
+ if (uid != euid)
+ setreuid (uid, euid);
+ if (gid != egid)
+ setregid (gid, egid);
+
+ errno = saved_errno;
+ return result;
+ }
+
+# else
+
+ /* The following code assumes the traditional Unix model, and is not
+ correct on systems that have ACLs or the like. However, it's
+ better than nothing, and it is reentrant. */
+
+ unsigned int granted;
+ if (uid == euid && gid == egid)
+ /* If we are not set-uid or set-gid, access does the same. */
+ return access (file, mode);
+
+ if (stat (file, &stats) != 0)
+ return -1;
+
+ /* The super-user can read and write any file, and execute any file
+ that anyone can execute. */
+ if (euid == 0 && ((mode & X_OK) == 0
+ || (stats.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))))
+ return 0;
+
+ /* Convert the mode to traditional form, clearing any bogus bits. */
+ if (R_OK == 4 && W_OK == 2 && X_OK == 1 && F_OK == 0)
+ mode &= 7;
+ else
+ mode = ((mode & R_OK ? 4 : 0)
+ + (mode & W_OK ? 2 : 0)
+ + (mode & X_OK ? 1 : 0));
+
+ if (mode == 0)
+ return 0; /* The file exists. */
+
+ /* Convert the file's permission bits to traditional form. */
+ if (S_IRUSR == (4 << 6) && S_IWUSR == (2 << 6) && S_IXUSR == (1 << 6)
+ && S_IRGRP == (4 << 3) && S_IWGRP == (2 << 3) && S_IXGRP == (1 << 3)
+ && S_IROTH == (4 << 0) && S_IWOTH == (2 << 0) && S_IXOTH == (1 << 0))
+ granted = stats.st_mode;
+ else
+ granted = ((stats.st_mode & S_IRUSR ? 4 << 6 : 0)
+ + (stats.st_mode & S_IWUSR ? 2 << 6 : 0)
+ + (stats.st_mode & S_IXUSR ? 1 << 6 : 0)
+ + (stats.st_mode & S_IRGRP ? 4 << 3 : 0)
+ + (stats.st_mode & S_IWGRP ? 2 << 3 : 0)
+ + (stats.st_mode & S_IXGRP ? 1 << 3 : 0)
+ + (stats.st_mode & S_IROTH ? 4 << 0 : 0)
+ + (stats.st_mode & S_IWOTH ? 2 << 0 : 0)
+ + (stats.st_mode & S_IXOTH ? 1 << 0 : 0));
+
+ if (euid == stats.st_uid)
+ granted >>= 6;
+ else if (egid == stats.st_gid || group_member (stats.st_gid))
+ granted >>= 3;
+
+ if ((mode & ~granted) == 0)
+ return 0;
+ __set_errno (EACCESS);
+ return -1;
+
+# endif
+#endif
+}
+#undef euidaccess
+#ifdef weak_alias
+weak_alias (__euidaccess, euidaccess)
+#endif
+
+#ifdef TEST
+# include <error.h>
+# include <stdio.h>
+# include <stdlib.h>
+
+char *program_name;
+
+int
+main (int argc, char **argv)
+{
+ char *file;
+ int mode;
+ int err;
+
+ program_name = argv[0];
+ if (argc < 3)
+ abort ();
+ file = argv[1];
+ mode = atoi (argv[2]);
+
+ err = euidaccess (file, mode);
+ printf ("%d\n", err);
+ if (err != 0)
+ error (0, errno, "%s", file);
+ exit (0);
+}
+#endif
diff --git a/lib/euidaccess.h b/lib/euidaccess.h
new file mode 100644
index 0000000..17b7e98
--- /dev/null
+++ b/lib/euidaccess.h
@@ -0,0 +1,3 @@
+#if ! HAVE_DECL_EUIDACCESS
+int euidaccess (char const *file, int mode);
+#endif
diff --git a/lib/exclude.c b/lib/exclude.c
new file mode 100644
index 0000000..ed34d0f
--- /dev/null
+++ b/lib/exclude.c
@@ -0,0 +1,275 @@
+/* exclude.c -- exclude file names
+
+ Copyright (C) 1992, 1993, 1994, 1997, 1999, 2000, 2001, 2002, 2003,
+ 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert <eggert@twinsun.com> */
+
+#include <config.h>
+
+#include <stdbool.h>
+
+#include <ctype.h>
+#include <errno.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "exclude.h"
+#include "fnmatch.h"
+#include "xalloc.h"
+#include "verify.h"
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+/* Non-GNU systems lack these options, so we don't need to check them. */
+#ifndef FNM_CASEFOLD
+# define FNM_CASEFOLD 0
+#endif
+#ifndef FNM_EXTMATCH
+# define FNM_EXTMATCH 0
+#endif
+#ifndef FNM_LEADING_DIR
+# define FNM_LEADING_DIR 0
+#endif
+
+verify (((EXCLUDE_ANCHORED | EXCLUDE_INCLUDE | EXCLUDE_WILDCARDS)
+ & (FNM_PATHNAME | FNM_NOESCAPE | FNM_PERIOD | FNM_LEADING_DIR
+ | FNM_CASEFOLD | FNM_EXTMATCH))
+ == 0);
+
+/* An exclude pattern-options pair. The options are fnmatch options
+ ORed with EXCLUDE_* options. */
+
+struct patopts
+ {
+ char const *pattern;
+ int options;
+ };
+
+/* An exclude list, of pattern-options pairs. */
+
+struct exclude
+ {
+ struct patopts *exclude;
+ size_t exclude_alloc;
+ size_t exclude_count;
+ };
+
+/* Return a newly allocated and empty exclude list. */
+
+struct exclude *
+new_exclude (void)
+{
+ return xzalloc (sizeof *new_exclude ());
+}
+
+/* Free the storage associated with an exclude list. */
+
+void
+free_exclude (struct exclude *ex)
+{
+ free (ex->exclude);
+ free (ex);
+}
+
+/* Return zero if PATTERN matches F, obeying OPTIONS, except that
+ (unlike fnmatch) wildcards are disabled in PATTERN. */
+
+static int
+fnmatch_no_wildcards (char const *pattern, char const *f, int options)
+{
+ if (! (options & FNM_LEADING_DIR))
+ return ((options & FNM_CASEFOLD)
+ ? mbscasecmp (pattern, f)
+ : strcmp (pattern, f));
+ else if (! (options & FNM_CASEFOLD))
+ {
+ size_t patlen = strlen (pattern);
+ int r = strncmp (pattern, f, patlen);
+ if (! r)
+ {
+ r = f[patlen];
+ if (r == '/')
+ r = 0;
+ }
+ return r;
+ }
+ else
+ {
+ /* Walk through a copy of F, seeing whether P matches any prefix
+ of F.
+
+ FIXME: This is an O(N**2) algorithm; it should be O(N).
+ Also, the copy should not be necessary. However, fixing this
+ will probably involve a change to the mbs* API. */
+
+ char *fcopy = xstrdup (f);
+ char *p;
+ int r;
+ for (p = fcopy; ; *p++ = '/')
+ {
+ p = strchr (p, '/');
+ if (p)
+ *p = '\0';
+ r = mbscasecmp (pattern, fcopy);
+ if (!p || r <= 0)
+ break;
+ }
+ free (fcopy);
+ return r;
+ }
+}
+
+bool
+exclude_fnmatch (char const *pattern, char const *f, int options)
+{
+ int (*matcher) (char const *, char const *, int) =
+ (options & EXCLUDE_WILDCARDS
+ ? fnmatch
+ : fnmatch_no_wildcards);
+ bool matched = ((*matcher) (pattern, f, options) == 0);
+ char const *p;
+
+ if (! (options & EXCLUDE_ANCHORED))
+ for (p = f; *p && ! matched; p++)
+ if (*p == '/' && p[1] != '/')
+ matched = ((*matcher) (pattern, p + 1, options) == 0);
+
+ return matched;
+}
+
+/* Return true if EX excludes F. */
+
+bool
+excluded_file_name (struct exclude const *ex, char const *f)
+{
+ size_t exclude_count = ex->exclude_count;
+
+ /* If no options are given, the default is to include. */
+ if (exclude_count == 0)
+ return false;
+ else
+ {
+ struct patopts const *exclude = ex->exclude;
+ size_t i;
+
+ /* Otherwise, the default is the opposite of the first option. */
+ bool excluded = !! (exclude[0].options & EXCLUDE_INCLUDE);
+
+ /* Scan through the options, seeing whether they change F from
+ excluded to included or vice versa. */
+ for (i = 0; i < exclude_count; i++)
+ {
+ char const *pattern = exclude[i].pattern;
+ int options = exclude[i].options;
+ if (excluded == !! (options & EXCLUDE_INCLUDE))
+ excluded ^= exclude_fnmatch (pattern, f, options);
+ }
+
+ return excluded;
+ }
+}
+
+/* Append to EX the exclusion PATTERN with OPTIONS. */
+
+void
+add_exclude (struct exclude *ex, char const *pattern, int options)
+{
+ struct patopts *patopts;
+
+ if (ex->exclude_count == ex->exclude_alloc)
+ ex->exclude = x2nrealloc (ex->exclude, &ex->exclude_alloc,
+ sizeof *ex->exclude);
+
+ patopts = &ex->exclude[ex->exclude_count++];
+ patopts->pattern = pattern;
+ patopts->options = options;
+}
+
+/* Use ADD_FUNC to append to EX the patterns in FILE_NAME, each with
+ OPTIONS. LINE_END terminates each pattern in the file. If
+ LINE_END is a space character, ignore trailing spaces and empty
+ lines in FILE. Return -1 on failure, 0 on success. */
+
+int
+add_exclude_file (void (*add_func) (struct exclude *, char const *, int),
+ struct exclude *ex, char const *file_name, int options,
+ char line_end)
+{
+ bool use_stdin = file_name[0] == '-' && !file_name[1];
+ FILE *in;
+ char *buf = NULL;
+ char *p;
+ char const *pattern;
+ char const *lim;
+ size_t buf_alloc = 0;
+ size_t buf_count = 0;
+ int c;
+ int e = 0;
+
+ if (use_stdin)
+ in = stdin;
+ else if (! (in = fopen (file_name, "r")))
+ return -1;
+
+ while ((c = getc (in)) != EOF)
+ {
+ if (buf_count == buf_alloc)
+ buf = x2realloc (buf, &buf_alloc);
+ buf[buf_count++] = c;
+ }
+
+ if (ferror (in))
+ e = errno;
+
+ if (!use_stdin && fclose (in) != 0)
+ e = errno;
+
+ buf = xrealloc (buf, buf_count + 1);
+ buf[buf_count] = line_end;
+ lim = buf + buf_count + ! (buf_count == 0 || buf[buf_count - 1] == line_end);
+ pattern = buf;
+
+ for (p = buf; p < lim; p++)
+ if (*p == line_end)
+ {
+ char *pattern_end = p;
+
+ if (isspace ((unsigned char) line_end))
+ {
+ for (; ; pattern_end--)
+ if (pattern_end == pattern)
+ goto next_pattern;
+ else if (! isspace ((unsigned char) pattern_end[-1]))
+ break;
+ }
+
+ *pattern_end = '\0';
+ (*add_func) (ex, pattern, options);
+
+ next_pattern:
+ pattern = p + 1;
+ }
+
+ errno = e;
+ return e ? -1 : 0;
+}
diff --git a/lib/exclude.h b/lib/exclude.h
new file mode 100644
index 0000000..203e384
--- /dev/null
+++ b/lib/exclude.h
@@ -0,0 +1,44 @@
+/* exclude.h -- declarations for excluding file names
+
+ Copyright (C) 1992, 1993, 1994, 1997, 1999, 2001, 2002, 2003, 2005,
+ 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert <eggert@twinsun.com> */
+
+/* Exclude options, which can be ORed with fnmatch options. */
+
+/* Patterns must match the start of file names, instead of matching
+ anywhere after a '/'. */
+#define EXCLUDE_ANCHORED (1 << 30)
+
+/* Include instead of exclude. */
+#define EXCLUDE_INCLUDE (1 << 29)
+
+/* '?', '*', '[', and '\\' are special in patterns. Without this
+ option, these characters are ordinary and fnmatch is not used. */
+#define EXCLUDE_WILDCARDS (1 << 28)
+
+struct exclude;
+
+struct exclude *new_exclude (void);
+void free_exclude (struct exclude *);
+void add_exclude (struct exclude *, char const *, int);
+int add_exclude_file (void (*) (struct exclude *, char const *, int),
+ struct exclude *, char const *, int, char);
+bool excluded_file_name (struct exclude const *, char const *);
+bool exclude_fnmatch (char const *pattern, char const *f, int options);
diff --git a/lib/exitfail.c b/lib/exitfail.c
new file mode 100644
index 0000000..373d325
--- /dev/null
+++ b/lib/exitfail.c
@@ -0,0 +1,26 @@
+/* Failure exit status
+
+ Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "exitfail.h"
+
+#include <stdlib.h>
+
+int volatile exit_failure = EXIT_FAILURE;
diff --git a/lib/exitfail.h b/lib/exitfail.h
new file mode 100644
index 0000000..e46cf9c
--- /dev/null
+++ b/lib/exitfail.h
@@ -0,0 +1,20 @@
+/* Failure exit status
+
+ Copyright (C) 2002 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+extern int volatile exit_failure;
diff --git a/lib/fchdir.c b/lib/fchdir.c
new file mode 100644
index 0000000..e3ec2fc
--- /dev/null
+++ b/lib/fchdir.c
@@ -0,0 +1,279 @@
+/* fchdir replacement.
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#include <unistd.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <dirent.h>
+
+#include "canonicalize.h"
+#include "dirfd.h"
+
+/* This replacement assumes that a directory is not renamed while opened
+ through a file descriptor. */
+
+/* Array of file descriptors opened. If it points to a directory, it stores
+ info about this directory; otherwise it stores an errno value of ENOTDIR. */
+typedef struct
+{
+ char *name; /* Absolute name of the directory, or NULL. */
+ int saved_errno; /* If name == NULL: The error code describing the failure
+ reason. */
+} dir_info_t;
+static dir_info_t *dirs;
+static size_t dirs_allocated;
+
+/* Try to ensure dirs has enough room for a slot at index fd. */
+static void
+ensure_dirs_slot (size_t fd)
+{
+ if (fd >= dirs_allocated)
+ {
+ size_t new_allocated;
+ dir_info_t *new_dirs;
+ size_t i;
+
+ new_allocated = 2 * dirs_allocated + 1;
+ if (new_allocated <= fd)
+ new_allocated = fd + 1;
+ new_dirs =
+ (dirs != NULL
+ ? (dir_info_t *) realloc (dirs, new_allocated * sizeof (dir_info_t))
+ : (dir_info_t *) malloc (new_allocated * sizeof (dir_info_t)));
+ if (new_dirs != NULL)
+ {
+ for (i = dirs_allocated; i < new_allocated; i++)
+ {
+ new_dirs[i].name = NULL;
+ new_dirs[i].saved_errno = ENOTDIR;
+ }
+ dirs = new_dirs;
+ dirs_allocated = new_allocated;
+ }
+ }
+}
+
+/* Override open() and close(), to keep track of the open file descriptors. */
+
+int
+close (int fd)
+#undef close
+{
+ int retval = close (fd);
+
+ if (retval >= 0 && fd >= 0 && fd < dirs_allocated)
+ {
+ if (dirs[fd].name != NULL)
+ free (dirs[fd].name);
+ dirs[fd].name = NULL;
+ dirs[fd].saved_errno = ENOTDIR;
+ }
+ return retval;
+}
+
+int
+open (const char *filename, int flags, ...)
+#undef open
+{
+ mode_t mode;
+ int fd;
+ struct stat statbuf;
+
+ mode = 0;
+ if (flags & O_CREAT)
+ {
+ va_list arg;
+ va_start (arg, flags);
+
+ /* If mode_t is narrower than int, use the promoted type (int),
+ not mode_t. Use sizeof to guess whether mode_t is narrower;
+ we don't know of any practical counterexamples. */
+ mode = (sizeof (mode_t) < sizeof (int)
+ ? va_arg (arg, int)
+ : va_arg (arg, mode_t));
+
+ va_end (arg);
+ }
+ fd = open (filename, flags, mode);
+ if (fd >= 0)
+ {
+ ensure_dirs_slot (fd);
+ if (fd < dirs_allocated
+ && fstat (fd, &statbuf) >= 0 && S_ISDIR (statbuf.st_mode))
+ {
+ dirs[fd].name = canonicalize_file_name (filename);
+ if (dirs[fd].name == NULL)
+ dirs[fd].saved_errno = errno;
+ }
+ }
+ return fd;
+}
+
+/* Override opendir() and closedir(), to keep track of the open file
+ descriptors. Needed because there is a function dirfd(). */
+
+int
+closedir (DIR *dp)
+#undef closedir
+{
+ int fd = dirfd (dp);
+ int retval = closedir (dp);
+
+ if (retval >= 0 && fd >= 0 && fd < dirs_allocated)
+ {
+ if (dirs[fd].name != NULL)
+ free (dirs[fd].name);
+ dirs[fd].name = NULL;
+ dirs[fd].saved_errno = ENOTDIR;
+ }
+ return retval;
+}
+
+DIR *
+opendir (const char *filename)
+#undef opendir
+{
+ DIR *dp;
+
+ dp = opendir (filename);
+ if (dp != NULL)
+ {
+ int fd = dirfd (dp);
+ if (fd >= 0)
+ {
+ ensure_dirs_slot (fd);
+ if (fd < dirs_allocated)
+ {
+ dirs[fd].name = canonicalize_file_name (filename);
+ if (dirs[fd].name == NULL)
+ dirs[fd].saved_errno = errno;
+ }
+ }
+ }
+ return dp;
+}
+
+/* Override dup() and dup2(), to keep track of open file descriptors. */
+
+int
+dup (int oldfd)
+#undef dup
+{
+ int newfd = dup (oldfd);
+
+ if (oldfd >= 0 && newfd >= 0)
+ {
+ ensure_dirs_slot (newfd);
+ if (newfd < dirs_allocated)
+ {
+ if (oldfd < dirs_allocated)
+ {
+ if (dirs[oldfd].name != NULL)
+ {
+ dirs[newfd].name = strdup (dirs[oldfd].name);
+ if (dirs[newfd].name == NULL)
+ dirs[newfd].saved_errno = ENOMEM;
+ }
+ else
+ {
+ dirs[newfd].name = NULL;
+ dirs[newfd].saved_errno = dirs[oldfd].saved_errno;
+ }
+ }
+ else
+ {
+ dirs[newfd].name = NULL;
+ dirs[newfd].saved_errno = ENOMEM;
+ }
+ }
+ }
+ return newfd;
+}
+
+int
+dup2 (int oldfd, int newfd)
+#undef dup2
+{
+ int retval = dup2 (oldfd, newfd);
+
+ if (retval >= 0 && oldfd >= 0 && newfd >= 0 && newfd != oldfd)
+ {
+ ensure_dirs_slot (newfd);
+ if (newfd < dirs_allocated)
+ {
+ if (oldfd < dirs_allocated)
+ {
+ if (dirs[oldfd].name != NULL)
+ {
+ dirs[newfd].name = strdup (dirs[oldfd].name);
+ if (dirs[newfd].name == NULL)
+ dirs[newfd].saved_errno = ENOMEM;
+ }
+ else
+ {
+ dirs[newfd].name = NULL;
+ dirs[newfd].saved_errno = dirs[oldfd].saved_errno;
+ }
+ }
+ else
+ {
+ dirs[newfd].name = NULL;
+ dirs[newfd].saved_errno = ENOMEM;
+ }
+ }
+ }
+ return retval;
+}
+
+/* Implement fchdir() in terms of chdir(). */
+
+int
+fchdir (int fd)
+{
+ if (fd >= 0)
+ {
+ if (fd < dirs_allocated)
+ {
+ if (dirs[fd].name != NULL)
+ return chdir (dirs[fd].name);
+ else
+ {
+ errno = dirs[fd].saved_errno;
+ return -1;
+ }
+ }
+ else
+ {
+ errno = ENOMEM;
+ return -1;
+ }
+ }
+ else
+ {
+ errno = EBADF;
+ return -1;
+ }
+}
diff --git a/lib/fchmodat.c b/lib/fchmodat.c
new file mode 100644
index 0000000..2598b70
--- /dev/null
+++ b/lib/fchmodat.c
@@ -0,0 +1,50 @@
+/* Change the protections of file relative to an open directory.
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+
+#include "openat.h"
+#include "dirname.h" /* solely for definition of IS_ABSOLUTE_FILE_NAME */
+#include "save-cwd.h"
+#include "openat-priv.h"
+
+#ifndef HAVE_LCHMOD
+/* Use a different name, to avoid conflicting with any
+ system-supplied declaration. */
+# undef lchmod
+# define lchmod lchmod_rpl
+static int lchmod (char const *f, mode_t m) { errno = ENOSYS; return -1; }
+#endif
+
+/* Solaris 10 has no function like this.
+ Invoke chmod or lchmod on file, FILE, using mode MODE, in the directory
+ open on descriptor FD. If possible, do it without changing the
+ working directory. Otherwise, resort to using save_cwd/fchdir,
+ then mkdir/restore_cwd. If either the save_cwd or the restore_cwd
+ fails, then give a diagnostic and exit nonzero.
+ Note that an attempt to use a FLAG value of AT_SYMLINK_NOFOLLOW
+ on a system without lchmod support causes this function to fail. */
+
+#define AT_FUNC_NAME fchmodat
+#define AT_FUNC_F1 lchmod
+#define AT_FUNC_F2 chmod
+#define AT_FUNC_USE_F1_COND flag == AT_SYMLINK_NOFOLLOW
+#define AT_FUNC_POST_FILE_PARAM_DECLS , mode_t mode, int flag
+#define AT_FUNC_POST_FILE_ARGS , mode
+#include "at-func.c"
diff --git a/lib/fchown-stub.c b/lib/fchown-stub.c
new file mode 100644
index 0000000..6be750b
--- /dev/null
+++ b/lib/fchown-stub.c
@@ -0,0 +1,16 @@
+#include <config.h>
+
+#include <sys/types.h>
+#include <errno.h>
+
+/* A trivial substitute for `fchown'.
+
+ DJGPP 2.03 and earlier (and perhaps later) don't have `fchown',
+ so we pretend no-one has permission for this operation. */
+
+int
+fchown (int fd, uid_t uid, gid_t gid)
+{
+ errno = EPERM;
+ return -1;
+}
diff --git a/lib/fchownat.c b/lib/fchownat.c
new file mode 100644
index 0000000..801c92a
--- /dev/null
+++ b/lib/fchownat.c
@@ -0,0 +1,50 @@
+/* This function serves as replacement for a missing fchownat function,
+ as well as a work around for the fchownat bug in glibc-2.4:
+ <http://lists.ubuntu.com/archives/ubuntu-users/2006-September/093218.html>
+ when the buggy fchownat-with-AT_SYMLINK_NOFOLLOW operates on a symlink, it
+ mistakenly affects the symlink referent, rather than the symlink itself.
+
+ Copyright (C) 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+
+#include "openat.h"
+
+#include <unistd.h>
+
+#include "dirname.h" /* solely for definition of IS_ABSOLUTE_FILE_NAME */
+#include "lchown.h"
+#include "save-cwd.h"
+#include "openat-priv.h"
+
+/* Replacement for Solaris' function by the same name.
+ Invoke chown or lchown on file, FILE, using OWNER and GROUP, in the
+ directory open on descriptor FD. If FLAG is AT_SYMLINK_NOFOLLOW, then
+ use lchown, otherwise, use chown. If possible, do it without changing
+ the working directory. Otherwise, resort to using save_cwd/fchdir,
+ then mkdir/restore_cwd. If either the save_cwd or the restore_cwd
+ fails, then give a diagnostic and exit nonzero. */
+
+#define AT_FUNC_NAME fchownat
+#define AT_FUNC_F1 lchown
+#define AT_FUNC_F2 chown
+#define AT_FUNC_USE_F1_COND flag == AT_SYMLINK_NOFOLLOW
+#define AT_FUNC_POST_FILE_PARAM_DECLS , uid_t owner, gid_t group, int flag
+#define AT_FUNC_POST_FILE_ARGS , owner, group
+#include "at-func.c"
diff --git a/lib/fcntl--.h b/lib/fcntl--.h
new file mode 100644
index 0000000..51b869e
--- /dev/null
+++ b/lib/fcntl--.h
@@ -0,0 +1,28 @@
+/* Like fcntl.h, but redefine some names to avoid glitches.
+
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <fcntl.h>
+#include "fcntl-safer.h"
+
+#undef open
+#define open open_safer
+
+#undef creat
+#define creat creat_safer
diff --git a/lib/fcntl-safer.h b/lib/fcntl-safer.h
new file mode 100644
index 0000000..cab6aab
--- /dev/null
+++ b/lib/fcntl-safer.h
@@ -0,0 +1,24 @@
+/* Invoke fcntl-like functions, but avoid some glitches.
+
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <sys/types.h>
+
+int open_safer (char const *, int, ...);
+int creat_safer (char const *, mode_t);
diff --git a/lib/fcntl_.h b/lib/fcntl_.h
new file mode 100644
index 0000000..e16ad54
--- /dev/null
+++ b/lib/fcntl_.h
@@ -0,0 +1,116 @@
+/* Like <fcntl.h>, but with non-working flags defined to 0.
+
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Paul Eggert */
+
+#ifndef _GL_FCNTL_H
+#define _GL_FCNTL_H
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include @ABSOLUTE_FCNTL_H@
+
+
+/* Declare overridden functions. */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef FCHDIR_REPLACEMENT
+# define open rpl_open
+extern int open (const char *, int, ...);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/* Fix up the O_* macros. */
+
+#if !defined O_DIRECT && defined O_DIRECTIO
+/* Tru64 spells it `O_DIRECTIO'. */
+# define O_DIRECT O_DIRECTIO
+#endif
+
+#ifndef O_DIRECT
+# define O_DIRECT 0
+#endif
+
+#ifndef O_DIRECTORY
+# define O_DIRECTORY 0
+#endif
+
+#ifndef O_DSYNC
+# define O_DSYNC 0
+#endif
+
+#ifndef O_NDELAY
+# define O_NDELAY 0
+#endif
+
+#ifndef O_NOATIME
+# define O_NOATIME 0
+#endif
+
+#ifndef O_NONBLOCK
+# define O_NONBLOCK O_NDELAY
+#endif
+
+#ifndef O_NOCTTY
+# define O_NOCTTY 0
+#endif
+
+#ifndef O_NOFOLLOW
+# define O_NOFOLLOW 0
+#endif
+
+#ifndef O_NOLINKS
+# define O_NOLINKS 0
+#endif
+
+#ifndef O_RSYNC
+# define O_RSYNC 0
+#endif
+
+#ifndef O_SYNC
+# define O_SYNC 0
+#endif
+
+/* For systems that distinguish between text and binary I/O.
+ O_BINARY is usually declared in fcntl.h */
+#if !defined O_BINARY && defined _O_BINARY
+ /* For MSC-compatible compilers. */
+# define O_BINARY _O_BINARY
+# define O_TEXT _O_TEXT
+#endif
+
+#ifdef __BEOS__
+ /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect. */
+# undef O_BINARY
+# undef O_TEXT
+#endif
+
+#ifndef O_BINARY
+# define O_BINARY 0
+# define O_TEXT 0
+#endif
+
+#endif
diff --git a/lib/fd-reopen.c b/lib/fd-reopen.c
new file mode 100644
index 0000000..99376e3
--- /dev/null
+++ b/lib/fd-reopen.c
@@ -0,0 +1,49 @@
+/* Invoke open, but return either a desired file descriptor or -1.
+
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "fd-reopen.h"
+
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+/* Open a file to a particular file descriptor. This is like standard
+ `open', except it always returns DESIRED_FD if successful. */
+
+int
+fd_reopen (int desired_fd, char const *file, int flags, mode_t mode)
+{
+ int fd;
+
+ close (desired_fd);
+ fd = open (file, flags, mode);
+ if (fd == desired_fd || fd < 0)
+ return fd;
+ else
+ {
+ int fd2 = fcntl (fd, F_DUPFD, desired_fd);
+ int saved_errno = errno;
+ close (fd);
+ errno = saved_errno;
+ return fd2;
+ }
+}
diff --git a/lib/fd-reopen.h b/lib/fd-reopen.h
new file mode 100644
index 0000000..af4bcfe
--- /dev/null
+++ b/lib/fd-reopen.h
@@ -0,0 +1,23 @@
+/* Invoke open, but return either a desired file descriptor or -1.
+
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <sys/types.h>
+
+int fd_reopen (int, char const *, int, mode_t);
diff --git a/lib/fd-safer.c b/lib/fd-safer.c
new file mode 100644
index 0000000..256bfa4
--- /dev/null
+++ b/lib/fd-safer.c
@@ -0,0 +1,57 @@
+/* Return a safer copy of a file descriptor.
+
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "unistd-safer.h"
+
+#include <errno.h>
+
+#include <unistd.h>
+#ifndef STDIN_FILENO
+# define STDIN_FILENO 0
+#endif
+#ifndef STDERR_FILENO
+# define STDERR_FILENO 2
+#endif
+
+/* Return FD, unless FD would be a copy of standard input, output, or
+ error; in that case, return a duplicate of FD, closing FD. On
+ failure to duplicate, close FD, set errno, and return -1. Preserve
+ errno if FD is negative, so that the caller can always inspect
+ errno when the returned value is negative.
+
+ This function is usefully wrapped around functions that return file
+ descriptors, e.g., fd_safer (open ("file", O_RDONLY)). */
+
+int
+fd_safer (int fd)
+{
+ if (STDIN_FILENO <= fd && fd <= STDERR_FILENO)
+ {
+ int f = dup_safer (fd);
+ int e = errno;
+ close (fd);
+ errno = e;
+ fd = f;
+ }
+
+ return fd;
+}
diff --git a/lib/file-has-acl.c b/lib/file-has-acl.c
new file mode 100644
index 0000000..218f52e
--- /dev/null
+++ b/lib/file-has-acl.c
@@ -0,0 +1,87 @@
+/* Test whether a file has a nontrivial access control list.
+
+ Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written by Paul Eggert and Andreas Gruenbacher. */
+
+#include <config.h>
+
+#include "acl.h"
+
+#include "acl-internal.h"
+
+/* Return 1 if NAME has a nontrivial access control list, 0 if NAME
+ only has no or a base access control list, and -1 (setting errno)
+ on error. SB must be set to the stat buffer of FILE. */
+
+int
+file_has_acl (char const *name, struct stat const *sb)
+{
+ if (! S_ISLNK (sb->st_mode))
+ {
+#if USE_ACL && HAVE_ACL_TRIVIAL
+
+ /* Solaris 10, which also has NFSv4 and ZFS style ACLs. */
+ return acl_trivial (name);
+
+#elif USE_ACL && HAVE_ACL && defined GETACLCNT
+
+ /* Solaris 2.5 through Solaris 9, and contemporaneous versions of
+ HP-UX and Unixware. */
+ int n = acl (name, GETACLCNT, 0, NULL);
+ return n < 0 ? (errno == ENOSYS ? 0 : -1) : (MIN_ACL_ENTRIES < n);
+
+#elif USE_ACL && HAVE_ACL_GET_FILE && HAVE_ACL_FREE
+
+ /* POSIX 1003.1e (draft 17 -- abandoned) specific version. */
+ int ret;
+
+ if (HAVE_ACL_EXTENDED_FILE)
+ ret = acl_extended_file (name);
+ else
+ {
+ acl_t acl = acl_get_file (name, ACL_TYPE_ACCESS);
+ if (acl)
+ {
+ ret = (3 < acl_entries (acl));
+ acl_free (acl);
+ if (ret == 0 && S_ISDIR (sb->st_mode))
+ {
+ acl = acl_get_file (name, ACL_TYPE_DEFAULT);
+ if (acl)
+ {
+ ret = (0 < acl_entries (acl));
+ acl_free (acl);
+ }
+ else
+ ret = -1;
+ }
+ }
+ else
+ ret = -1;
+ }
+ if (ret < 0)
+ return ACL_NOT_WELL_SUPPORTED (errno) ? 0 : -1;
+ return ret;
+#endif
+ }
+
+ /* FIXME: Add support for AIX, Irix, and Tru64. Please see Samba's
+ source/lib/sysacls.c file for fix-related ideas. */
+
+ return 0;
+}
diff --git a/lib/file-type.c b/lib/file-type.c
new file mode 100644
index 0000000..9fc7c52
--- /dev/null
+++ b/lib/file-type.c
@@ -0,0 +1,72 @@
+/* Return a string describing the type of a file.
+
+ Copyright (C) 1993, 1994, 2001, 2002, 2004, 2005, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "file-type.h"
+
+#include <gettext.h>
+#define _(text) gettext (text)
+
+char const *
+file_type (struct stat const *st)
+{
+ /* See POSIX 1003.1-2001 XCU Table 4-8 lines 17093-17107 for some of
+ these formats.
+
+ To keep diagnostics grammatical in English, the returned string
+ must start with a consonant. */
+
+ if (S_ISREG (st->st_mode))
+ return st->st_size == 0 ? _("regular empty file") : _("regular file");
+
+ if (S_ISDIR (st->st_mode))
+ return _("directory");
+
+ if (S_ISBLK (st->st_mode))
+ return _("block special file");
+
+ if (S_ISCHR (st->st_mode))
+ return _("character special file");
+
+ if (S_ISFIFO (st->st_mode))
+ return _("fifo");
+
+ if (S_ISLNK (st->st_mode))
+ return _("symbolic link");
+
+ if (S_ISSOCK (st->st_mode))
+ return _("socket");
+
+ if (S_TYPEISMQ (st))
+ return _("message queue");
+
+ if (S_TYPEISSEM (st))
+ return _("semaphore");
+
+ if (S_TYPEISSHM (st))
+ return _("shared memory object");
+
+ if (S_TYPEISTMO (st))
+ return _("typed memory object");
+
+ return _("weird file");
+}
diff --git a/lib/file-type.h b/lib/file-type.h
new file mode 100644
index 0000000..1f4ca3d
--- /dev/null
+++ b/lib/file-type.h
@@ -0,0 +1,30 @@
+/* Return a string describing the type of a file.
+
+ Copyright (C) 1993, 1994, 2001, 2002, 2004, 2005 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert and Jim Meyering. */
+
+#ifndef FILE_TYPE_H
+# define FILE_TYPE_H 1
+
+# include <sys/types.h>
+# include <sys/stat.h>
+
+char const *file_type (struct stat const *);
+
+#endif /* FILE_TYPE_H */
diff --git a/lib/fileblocks.c b/lib/fileblocks.c
new file mode 100644
index 0000000..4024d1e
--- /dev/null
+++ b/lib/fileblocks.c
@@ -0,0 +1,75 @@
+/* Convert file size to number of blocks on System V-like machines.
+
+ Copyright (C) 1990, 1997, 1998, 1999, 2004, 2005, 2006 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Brian L. Matthews, blm@6sceng.UUCP. */
+
+#include <config.h>
+
+#include <sys/types.h>
+
+#if HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+
+#if !HAVE_STRUCT_STAT_ST_BLOCKS && !defined _POSIX_SOURCE && defined BSIZE
+
+# include <unistd.h>
+
+# ifndef NINDIR
+
+# if defined __DJGPP__
+typedef long daddr_t; /* for disk address */
+# endif
+
+/* Some SysV's, like Irix, seem to lack this. Hope it's correct. */
+/* Number of inode pointers per indirect block. */
+# define NINDIR (BSIZE / sizeof (daddr_t))
+# endif /* !NINDIR */
+
+/* Number of direct block addresses in an inode. */
+# define NDIR 10
+
+/* Return the number of 512-byte blocks in a file of SIZE bytes. */
+
+off_t
+st_blocks (off_t size)
+{
+ off_t datablks = size / 512 + (size % 512 != 0);
+ off_t indrblks = 0;
+
+ if (datablks > NDIR)
+ {
+ indrblks = (datablks - NDIR - 1) / NINDIR + 1;
+
+ if (datablks > NDIR + NINDIR)
+ {
+ indrblks += (datablks - NDIR - NINDIR - 1) / (NINDIR * NINDIR) + 1;
+
+ if (datablks > NDIR + NINDIR + NINDIR * NINDIR)
+ indrblks++;
+ }
+ }
+
+ return datablks + indrblks;
+}
+#else
+/* This declaration is solely to ensure that after preprocessing
+ this file is never empty. */
+typedef int textutils_fileblocks_unused;
+#endif
diff --git a/lib/filemode.c b/lib/filemode.c
new file mode 100644
index 0000000..726c331
--- /dev/null
+++ b/lib/filemode.c
@@ -0,0 +1,181 @@
+/* filemode.c -- make a string describing file modes
+
+ Copyright (C) 1985, 1990, 1993, 1998-2000, 2004, 2006 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "filemode.h"
+
+/* The following is for Cray DMF (Data Migration Facility), which is a
+ HSM file system. A migrated file has a `st_dm_mode' that is
+ different from the normal `st_mode', so any tests for migrated
+ files should use the former. */
+#if HAVE_ST_DM_MODE
+# define IS_MIGRATED_FILE(statp) \
+ (S_ISOFD (statp->st_dm_mode) || S_ISOFL (statp->st_dm_mode))
+#else
+# define IS_MIGRATED_FILE(statp) 0
+#endif
+
+#if ! HAVE_DECL_STRMODE
+
+/* Return a character indicating the type of file described by
+ file mode BITS:
+ '-' regular file
+ 'b' block special file
+ 'c' character special file
+ 'C' high performance ("contiguous data") file
+ 'd' directory
+ 'D' door
+ 'l' symbolic link
+ 'm' multiplexed file (7th edition Unix; obsolete)
+ 'n' network special file (HP-UX)
+ 'p' fifo (named pipe)
+ 'P' port
+ 's' socket
+ 'w' whiteout (4.4BSD)
+ '?' some other file type */
+
+static char
+ftypelet (mode_t bits)
+{
+ /* These are the most common, so test for them first. */
+ if (S_ISREG (bits))
+ return '-';
+ if (S_ISDIR (bits))
+ return 'd';
+
+ /* Other letters standardized by POSIX 1003.1-2004. */
+ if (S_ISBLK (bits))
+ return 'b';
+ if (S_ISCHR (bits))
+ return 'c';
+ if (S_ISLNK (bits))
+ return 'l';
+ if (S_ISFIFO (bits))
+ return 'p';
+
+ /* Other file types (though not letters) standardized by POSIX. */
+ if (S_ISSOCK (bits))
+ return 's';
+
+ /* Nonstandard file types. */
+ if (S_ISCTG (bits))
+ return 'C';
+ if (S_ISDOOR (bits))
+ return 'D';
+ if (S_ISMPB (bits) || S_ISMPC (bits))
+ return 'm';
+ if (S_ISNWK (bits))
+ return 'n';
+ if (S_ISPORT (bits))
+ return 'P';
+ if (S_ISWHT (bits))
+ return 'w';
+
+ return '?';
+}
+
+/* Like filemodestring, but rely only on MODE. */
+
+void
+strmode (mode_t mode, char *str)
+{
+ str[0] = ftypelet (mode);
+ str[1] = mode & S_IRUSR ? 'r' : '-';
+ str[2] = mode & S_IWUSR ? 'w' : '-';
+ str[3] = (mode & S_ISUID
+ ? (mode & S_IXUSR ? 's' : 'S')
+ : (mode & S_IXUSR ? 'x' : '-'));
+ str[4] = mode & S_IRGRP ? 'r' : '-';
+ str[5] = mode & S_IWGRP ? 'w' : '-';
+ str[6] = (mode & S_ISGID
+ ? (mode & S_IXGRP ? 's' : 'S')
+ : (mode & S_IXGRP ? 'x' : '-'));
+ str[7] = mode & S_IROTH ? 'r' : '-';
+ str[8] = mode & S_IWOTH ? 'w' : '-';
+ str[9] = (mode & S_ISVTX
+ ? (mode & S_IXOTH ? 't' : 'T')
+ : (mode & S_IXOTH ? 'x' : '-'));
+ str[10] = ' ';
+ str[11] = '\0';
+}
+
+#endif /* ! HAVE_DECL_STRMODE */
+
+/* filemodestring - fill in string STR with an ls-style ASCII
+ representation of the st_mode field of file stats block STATP.
+ 12 characters are stored in STR.
+ The characters stored in STR are:
+
+ 0 File type, as in ftypelet above, except that other letters are used
+ for files whose type cannot be determined solely from st_mode:
+
+ 'F' semaphore
+ 'M' migrated file (Cray DMF)
+ 'Q' message queue
+ 'S' shared memory object
+ 'T' typed memory object
+
+ 1 'r' if the owner may read, '-' otherwise.
+
+ 2 'w' if the owner may write, '-' otherwise.
+
+ 3 'x' if the owner may execute, 's' if the file is
+ set-user-id, '-' otherwise.
+ 'S' if the file is set-user-id, but the execute
+ bit isn't set.
+
+ 4 'r' if group members may read, '-' otherwise.
+
+ 5 'w' if group members may write, '-' otherwise.
+
+ 6 'x' if group members may execute, 's' if the file is
+ set-group-id, '-' otherwise.
+ 'S' if it is set-group-id but not executable.
+
+ 7 'r' if any user may read, '-' otherwise.
+
+ 8 'w' if any user may write, '-' otherwise.
+
+ 9 'x' if any user may execute, 't' if the file is "sticky"
+ (will be retained in swap space after execution), '-'
+ otherwise.
+ 'T' if the file is sticky but not executable.
+
+ 10 ' ' for compatibility with 4.4BSD strmode,
+ since this interface does not support ACLs.
+
+ 11 '\0'. */
+
+void
+filemodestring (struct stat const *statp, char *str)
+{
+ strmode (statp->st_mode, str);
+
+ if (S_TYPEISSEM (statp))
+ str[0] = 'F';
+ else if (IS_MIGRATED_FILE (statp))
+ str[0] = 'M';
+ else if (S_TYPEISMQ (statp))
+ str[0] = 'Q';
+ else if (S_TYPEISSHM (statp))
+ str[0] = 'S';
+ else if (S_TYPEISTMO (statp))
+ str[0] = 'T';
+}
diff --git a/lib/filemode.h b/lib/filemode.h
new file mode 100644
index 0000000..f71d994
--- /dev/null
+++ b/lib/filemode.h
@@ -0,0 +1,33 @@
+/* Make a string describing file modes.
+
+ Copyright (C) 1998, 1999, 2003, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef FILEMODE_H_
+
+# include <sys/types.h>
+# include <sys/stat.h>
+
+# if HAVE_DECL_STRMODE
+# include <string.h> /* FreeBSD, OpenBSD */
+# include <unistd.h> /* NetBSD */
+# else
+void strmode (mode_t mode, char *str);
+# endif
+
+void filemodestring (struct stat const *statp, char *str);
+
+#endif
diff --git a/lib/filenamecat.c b/lib/filenamecat.c
new file mode 100644
index 0000000..bccffb2
--- /dev/null
+++ b/lib/filenamecat.c
@@ -0,0 +1,124 @@
+/* Concatenate two arbitrary file names.
+
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+ 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+
+/* Specification. */
+#include "filenamecat.h"
+
+#include <string.h>
+
+#include "dirname.h"
+#include "xalloc.h"
+
+#if ! HAVE_MEMPCPY && ! defined mempcpy
+# define mempcpy(D, S, N) ((void *) ((char *) memcpy (D, S, N) + (N)))
+#endif
+
+/* Return the longest suffix of F that is a relative file name.
+ If it has no such suffix, return the empty string. */
+
+static char const *
+longest_relative_suffix (char const *f)
+{
+ for (f += FILE_SYSTEM_PREFIX_LEN (f); ISSLASH (*f); f++)
+ continue;
+ return f;
+}
+
+/* Concatenate two file name components, DIR and ABASE, in
+ newly-allocated storage and return the result.
+ The resulting file name F is such that the commands "ls F" and "(cd
+ DIR; ls BASE)" refer to the same file, where BASE is ABASE with any
+ file system prefixes and leading separators removed.
+ Arrange for a directory separator if necessary between DIR and BASE
+ in the result, removing any redundant separators.
+ In any case, if BASE_IN_RESULT is non-NULL, set
+ *BASE_IN_RESULT to point to the copy of ABASE in the returned
+ concatenation. However, if ABASE begins with more than one slash,
+ set *BASE_IN_RESULT to point to the sole corresponding slash that
+ is copied into the result buffer.
+
+ Report an error if memory is exhausted. */
+
+char *
+file_name_concat (char const *dir, char const *abase, char **base_in_result)
+{
+ char const *dirbase = last_component (dir);
+ size_t dirbaselen = base_len (dirbase);
+ size_t dirlen = dirbase - dir + dirbaselen;
+ size_t needs_separator = (dirbaselen && ! ISSLASH (dirbase[dirbaselen - 1]));
+
+ char const *base = longest_relative_suffix (abase);
+ size_t baselen = strlen (base);
+
+ char *p_concat = xmalloc (dirlen + needs_separator + baselen + 1);
+ char *p;
+
+ p = mempcpy (p_concat, dir, dirlen);
+ *p = DIRECTORY_SEPARATOR;
+ p += needs_separator;
+
+ if (base_in_result)
+ *base_in_result = p - IS_ABSOLUTE_FILE_NAME (abase);
+
+ p = mempcpy (p, base, baselen);
+ *p = '\0';
+
+ return p_concat;
+}
+
+#ifdef TEST_FILE_NAME_CONCAT
+# include <stdlib.h>
+# include <stdio.h>
+int
+main ()
+{
+ static char const *const tests[][3] =
+ {
+ {"a", "b", "a/b"},
+ {"a/", "b", "a/b"},
+ {"a/", "/b", "a/b"},
+ {"a", "/b", "a/b"},
+
+ {"/", "b", "/b"},
+ {"/", "/b", "/b"},
+ {"/", "/", "/"},
+ {"a", "/", "a/"}, /* this might deserve a diagnostic */
+ {"/a", "/", "/a/"}, /* this might deserve a diagnostic */
+ {"a", "//b", "a/b"},
+ };
+ size_t i;
+ bool fail = false;
+ for (i = 0; i < sizeof tests / sizeof tests[0]; i++)
+ {
+ char *base_in_result;
+ char const *const *t = tests[i];
+ char *res = file_name_concat (t[0], t[1], &base_in_result);
+ if (strcmp (res, t[2]) != 0)
+ {
+ printf ("got %s, expected %s\n", res, t[2]);
+ fail = true;
+ }
+ }
+ exit (fail ? EXIT_FAILURE : EXIT_SUCCESS);
+}
+#endif
diff --git a/lib/filenamecat.h b/lib/filenamecat.h
new file mode 100644
index 0000000..c943b67
--- /dev/null
+++ b/lib/filenamecat.h
@@ -0,0 +1,22 @@
+/* Concatenate two arbitrary file names.
+
+ Copyright (C) 1996, 1997, 2003, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+char *file_name_concat (char const *dir, char const *base,
+ char **base_in_result);
diff --git a/lib/fnmatch.c b/lib/fnmatch.c
new file mode 100644
index 0000000..02dd365
--- /dev/null
+++ b/lib/fnmatch.c
@@ -0,0 +1,354 @@
+/* Copyright (C) 1991,1992,1993,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007
+ Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+/* Enable GNU extensions in fnmatch.h. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+#if ! defined __builtin_expect && __GNUC__ < 3
+# define __builtin_expect(expr, expected) (expr)
+#endif
+
+#include <fnmatch.h>
+
+#include <alloca.h>
+#include <assert.h>
+#include <ctype.h>
+#include <errno.h>
+#include <stddef.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define WIDE_CHAR_SUPPORT \
+ (HAVE_WCTYPE_H && HAVE_BTOWC && HAVE_ISWCTYPE \
+ && HAVE_WMEMCHR && (HAVE_WMEMCPY || HAVE_WMEMPCPY))
+
+/* For platform which support the ISO C amendement 1 functionality we
+ support user defined character classes. */
+#if defined _LIBC || WIDE_CHAR_SUPPORT
+# include <wctype.h>
+# include <wchar.h>
+#endif
+
+/* We need some of the locale data (the collation sequence information)
+ but there is no interface to get this information in general. Therefore
+ we support a correct implementation only in glibc. */
+#ifdef _LIBC
+# include "../locale/localeinfo.h"
+# include "../locale/elem-hash.h"
+# include "../locale/coll-lookup.h"
+# include <shlib-compat.h>
+
+# define CONCAT(a,b) __CONCAT(a,b)
+# define mbsrtowcs __mbsrtowcs
+# define fnmatch __fnmatch
+extern int fnmatch (const char *pattern, const char *string, int flags);
+#endif
+
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+
+/* We often have to test for FNM_FILE_NAME and FNM_PERIOD being both set. */
+#define NO_LEADING_PERIOD(flags) \
+ ((flags & (FNM_FILE_NAME | FNM_PERIOD)) == (FNM_FILE_NAME | FNM_PERIOD))
+
+/* Comment out all this code if we are using the GNU C Library, and are not
+ actually compiling the library itself, and have not detected a bug
+ in the library. This code is part of the GNU C
+ Library, but also included in many other GNU distributions. Compiling
+ and linking in this code is a waste when using the GNU C library
+ (especially if it is a shared library). Rather than having every GNU
+ program understand `configure --with-gnu-libc' and omit the object files,
+ it is simpler to just do this in the source for each such file. */
+
+#if defined _LIBC || !defined __GNU_LIBRARY__ || !HAVE_FNMATCH_GNU
+
+
+# if ! (defined isblank || HAVE_DECL_ISBLANK)
+# define isblank(c) ((c) == ' ' || (c) == '\t')
+# endif
+
+# define STREQ(s1, s2) ((strcmp (s1, s2) == 0))
+
+# if defined _LIBC || WIDE_CHAR_SUPPORT
+/* The GNU C library provides support for user-defined character classes
+ and the functions from ISO C amendement 1. */
+# ifdef CHARCLASS_NAME_MAX
+# define CHAR_CLASS_MAX_LENGTH CHARCLASS_NAME_MAX
+# else
+/* This shouldn't happen but some implementation might still have this
+ problem. Use a reasonable default value. */
+# define CHAR_CLASS_MAX_LENGTH 256
+# endif
+
+# ifdef _LIBC
+# define IS_CHAR_CLASS(string) __wctype (string)
+# else
+# define IS_CHAR_CLASS(string) wctype (string)
+# endif
+
+# ifdef _LIBC
+# define ISWCTYPE(WC, WT) __iswctype (WC, WT)
+# else
+# define ISWCTYPE(WC, WT) iswctype (WC, WT)
+# endif
+
+# if (HAVE_MBSTATE_T && HAVE_MBSRTOWCS) || _LIBC
+/* In this case we are implementing the multibyte character handling. */
+# define HANDLE_MULTIBYTE 1
+# endif
+
+# else
+# define CHAR_CLASS_MAX_LENGTH 6 /* Namely, `xdigit'. */
+
+# define IS_CHAR_CLASS(string) \
+ (STREQ (string, "alpha") || STREQ (string, "upper") \
+ || STREQ (string, "lower") || STREQ (string, "digit") \
+ || STREQ (string, "alnum") || STREQ (string, "xdigit") \
+ || STREQ (string, "space") || STREQ (string, "print") \
+ || STREQ (string, "punct") || STREQ (string, "graph") \
+ || STREQ (string, "cntrl") || STREQ (string, "blank"))
+# endif
+
+/* Avoid depending on library functions or files
+ whose names are inconsistent. */
+
+/* Global variable. */
+static int posixly_correct;
+
+# ifndef internal_function
+/* Inside GNU libc we mark some function in a special way. In other
+ environments simply ignore the marking. */
+# define internal_function
+# endif
+
+/* Note that this evaluates C many times. */
+# define FOLD(c) ((flags & FNM_CASEFOLD) ? tolower (c) : (c))
+# define CHAR char
+# define UCHAR unsigned char
+# define INT int
+# define FCT internal_fnmatch
+# define EXT ext_match
+# define END end_pattern
+# define L_(CS) CS
+# ifdef _LIBC
+# define BTOWC(C) __btowc (C)
+# else
+# define BTOWC(C) btowc (C)
+# endif
+# define STRLEN(S) strlen (S)
+# define STRCAT(D, S) strcat (D, S)
+# ifdef _LIBC
+# define MEMPCPY(D, S, N) __mempcpy (D, S, N)
+# else
+# if HAVE_MEMPCPY
+# define MEMPCPY(D, S, N) mempcpy (D, S, N)
+# else
+# define MEMPCPY(D, S, N) ((void *) ((char *) memcpy (D, S, N) + (N)))
+# endif
+# endif
+# define MEMCHR(S, C, N) memchr (S, C, N)
+# define STRCOLL(S1, S2) strcoll (S1, S2)
+# include "fnmatch_loop.c"
+
+
+# if HANDLE_MULTIBYTE
+# define FOLD(c) ((flags & FNM_CASEFOLD) ? towlower (c) : (c))
+# define CHAR wchar_t
+# define UCHAR wint_t
+# define INT wint_t
+# define FCT internal_fnwmatch
+# define EXT ext_wmatch
+# define END end_wpattern
+# define L_(CS) L##CS
+# define BTOWC(C) (C)
+# ifdef _LIBC
+# define STRLEN(S) __wcslen (S)
+# define STRCAT(D, S) __wcscat (D, S)
+# define MEMPCPY(D, S, N) __wmempcpy (D, S, N)
+# else
+# define STRLEN(S) wcslen (S)
+# define STRCAT(D, S) wcscat (D, S)
+# if HAVE_WMEMPCPY
+# define MEMPCPY(D, S, N) wmempcpy (D, S, N)
+# else
+# define MEMPCPY(D, S, N) (wmemcpy (D, S, N) + (N))
+# endif
+# endif
+# define MEMCHR(S, C, N) wmemchr (S, C, N)
+# define STRCOLL(S1, S2) wcscoll (S1, S2)
+# define WIDE_CHAR_VERSION 1
+
+# undef IS_CHAR_CLASS
+/* We have to convert the wide character string in a multibyte string. But
+ we know that the character class names consist of alphanumeric characters
+ from the portable character set, and since the wide character encoding
+ for a member of the portable character set is the same code point as
+ its single-byte encoding, we can use a simplified method to convert the
+ string to a multibyte character string. */
+static wctype_t
+is_char_class (const wchar_t *wcs)
+{
+ char s[CHAR_CLASS_MAX_LENGTH + 1];
+ char *cp = s;
+
+ do
+ {
+ /* Test for a printable character from the portable character set. */
+# ifdef _LIBC
+ if (*wcs < 0x20 || *wcs > 0x7e
+ || *wcs == 0x24 || *wcs == 0x40 || *wcs == 0x60)
+ return (wctype_t) 0;
+# else
+ switch (*wcs)
+ {
+ case L' ': case L'!': case L'"': case L'#': case L'%':
+ case L'&': case L'\'': case L'(': case L')': case L'*':
+ case L'+': case L',': case L'-': case L'.': case L'/':
+ case L'0': case L'1': case L'2': case L'3': case L'4':
+ case L'5': case L'6': case L'7': case L'8': case L'9':
+ case L':': case L';': case L'<': case L'=': case L'>':
+ case L'?':
+ case L'A': case L'B': case L'C': case L'D': case L'E':
+ case L'F': case L'G': case L'H': case L'I': case L'J':
+ case L'K': case L'L': case L'M': case L'N': case L'O':
+ case L'P': case L'Q': case L'R': case L'S': case L'T':
+ case L'U': case L'V': case L'W': case L'X': case L'Y':
+ case L'Z':
+ case L'[': case L'\\': case L']': case L'^': case L'_':
+ case L'a': case L'b': case L'c': case L'd': case L'e':
+ case L'f': case L'g': case L'h': case L'i': case L'j':
+ case L'k': case L'l': case L'm': case L'n': case L'o':
+ case L'p': case L'q': case L'r': case L's': case L't':
+ case L'u': case L'v': case L'w': case L'x': case L'y':
+ case L'z': case L'{': case L'|': case L'}': case L'~':
+ break;
+ default:
+ return (wctype_t) 0;
+ }
+# endif
+
+ /* Avoid overrunning the buffer. */
+ if (cp == s + CHAR_CLASS_MAX_LENGTH)
+ return (wctype_t) 0;
+
+ *cp++ = (char) *wcs++;
+ }
+ while (*wcs != L'\0');
+
+ *cp = '\0';
+
+# ifdef _LIBC
+ return __wctype (s);
+# else
+ return wctype (s);
+# endif
+}
+# define IS_CHAR_CLASS(string) is_char_class (string)
+
+# include "fnmatch_loop.c"
+# endif
+
+
+int
+fnmatch (const char *pattern, const char *string, int flags)
+{
+# if HANDLE_MULTIBYTE
+# define ALLOCA_LIMIT 2000
+ if (__builtin_expect (MB_CUR_MAX, 1) != 1)
+ {
+ mbstate_t ps;
+ size_t patsize;
+ size_t strsize;
+ size_t totsize;
+ wchar_t *wpattern;
+ wchar_t *wstring;
+ int res;
+
+ /* Calculate the size needed to convert the strings to
+ wide characters. */
+ memset (&ps, '\0', sizeof (ps));
+ patsize = mbsrtowcs (NULL, &pattern, 0, &ps) + 1;
+ if (__builtin_expect (patsize != 0, 1))
+ {
+ assert (mbsinit (&ps));
+ strsize = mbsrtowcs (NULL, &string, 0, &ps) + 1;
+ if (__builtin_expect (strsize != 0, 1))
+ {
+ assert (mbsinit (&ps));
+ totsize = patsize + strsize;
+ if (__builtin_expect (! (patsize <= totsize
+ && totsize <= SIZE_MAX / sizeof (wchar_t)),
+ 0))
+ {
+ errno = ENOMEM;
+ return -1;
+ }
+
+ /* Allocate room for the wide characters. */
+ if (__builtin_expect (totsize < ALLOCA_LIMIT, 1))
+ wpattern = (wchar_t *) alloca (totsize * sizeof (wchar_t));
+ else
+ {
+ wpattern = malloc (totsize * sizeof (wchar_t));
+ if (__builtin_expect (! wpattern, 0))
+ {
+ errno = ENOMEM;
+ return -1;
+ }
+ }
+ wstring = wpattern + patsize;
+
+ /* Convert the strings into wide characters. */
+ mbsrtowcs (wpattern, &pattern, patsize, &ps);
+ assert (mbsinit (&ps));
+ mbsrtowcs (wstring, &string, strsize, &ps);
+
+ res = internal_fnwmatch (wpattern, wstring, wstring + strsize - 1,
+ flags & FNM_PERIOD, flags);
+
+ if (__builtin_expect (! (totsize < ALLOCA_LIMIT), 0))
+ free (wpattern);
+ return res;
+ }
+ }
+ }
+
+# endif /* HANDLE_MULTIBYTE */
+
+ return internal_fnmatch (pattern, string, string + strlen (string),
+ flags & FNM_PERIOD, flags);
+}
+
+# ifdef _LIBC
+# undef fnmatch
+versioned_symbol (libc, __fnmatch, fnmatch, GLIBC_2_2_3);
+# if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_3)
+strong_alias (__fnmatch, __fnmatch_old)
+compat_symbol (libc, __fnmatch_old, fnmatch, GLIBC_2_0);
+# endif
+libc_hidden_ver (__fnmatch, fnmatch)
+# endif
+
+#endif /* _LIBC or not __GNU_LIBRARY__. */
diff --git a/lib/fnmatch_.h b/lib/fnmatch_.h
new file mode 100644
index 0000000..b086b45
--- /dev/null
+++ b/lib/fnmatch_.h
@@ -0,0 +1,65 @@
+/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2001, 2002, 2003,
+ 2005, 2007 Free Software Foundation, Inc.
+
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _FNMATCH_H
+#define _FNMATCH_H 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* We #undef these before defining them because some losing systems
+ (HP-UX A.08.07 for example) define these in <unistd.h>. */
+#undef FNM_PATHNAME
+#undef FNM_NOESCAPE
+#undef FNM_PERIOD
+
+/* Bits set in the FLAGS argument to `fnmatch'. */
+#define FNM_PATHNAME (1 << 0) /* No wildcard can ever match `/'. */
+#define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */
+#define FNM_PERIOD (1 << 2) /* Leading `.' is matched only explicitly. */
+
+#if !defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _GNU_SOURCE
+# define FNM_FILE_NAME FNM_PATHNAME /* Preferred GNU name. */
+# define FNM_LEADING_DIR (1 << 3) /* Ignore `/...' after a match. */
+# define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */
+# define FNM_EXTMATCH (1 << 5) /* Use ksh-like extended matching. */
+#endif
+
+/* Value returned by `fnmatch' if STRING does not match PATTERN. */
+#define FNM_NOMATCH 1
+
+/* This value is returned if the implementation does not support
+ `fnmatch'. Since this is not the case here it will never be
+ returned but the conformance test suites still require the symbol
+ to be defined. */
+#ifdef _XOPEN_SOURCE
+# define FNM_NOSYS (-1)
+#endif
+
+/* Match NAME against the file name pattern PATTERN,
+ returning zero if it matches, FNM_NOMATCH if not. */
+extern int fnmatch (const char *__pattern, const char *__name,
+ int __flags);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* fnmatch.h */
diff --git a/lib/fnmatch_loop.c b/lib/fnmatch_loop.c
new file mode 100644
index 0000000..d1008c2
--- /dev/null
+++ b/lib/fnmatch_loop.c
@@ -0,0 +1,1210 @@
+/* Copyright (C) 1991,1992,1993,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Match STRING against the file name pattern PATTERN, returning zero if
+ it matches, nonzero if not. */
+static int EXT (INT opt, const CHAR *pattern, const CHAR *string,
+ const CHAR *string_end, bool no_leading_period, int flags)
+ internal_function;
+static const CHAR *END (const CHAR *patternp) internal_function;
+
+static int
+internal_function
+FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end,
+ bool no_leading_period, int flags)
+{
+ register const CHAR *p = pattern, *n = string;
+ register UCHAR c;
+#ifdef _LIBC
+# if WIDE_CHAR_VERSION
+ const char *collseq = (const char *)
+ _NL_CURRENT(LC_COLLATE, _NL_COLLATE_COLLSEQWC);
+# else
+ const UCHAR *collseq = (const UCHAR *)
+ _NL_CURRENT(LC_COLLATE, _NL_COLLATE_COLLSEQMB);
+# endif
+#endif
+
+ while ((c = *p++) != L_('\0'))
+ {
+ bool new_no_leading_period = false;
+ c = FOLD (c);
+
+ switch (c)
+ {
+ case L_('?'):
+ if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(')
+ {
+ int res;
+
+ res = EXT (c, p, n, string_end, no_leading_period,
+ flags);
+ if (res != -1)
+ return res;
+ }
+
+ if (n == string_end)
+ return FNM_NOMATCH;
+ else if (*n == L_('/') && (flags & FNM_FILE_NAME))
+ return FNM_NOMATCH;
+ else if (*n == L_('.') && no_leading_period)
+ return FNM_NOMATCH;
+ break;
+
+ case L_('\\'):
+ if (!(flags & FNM_NOESCAPE))
+ {
+ c = *p++;
+ if (c == L_('\0'))
+ /* Trailing \ loses. */
+ return FNM_NOMATCH;
+ c = FOLD (c);
+ }
+ if (n == string_end || FOLD ((UCHAR) *n) != c)
+ return FNM_NOMATCH;
+ break;
+
+ case L_('*'):
+ if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(')
+ {
+ int res;
+
+ res = EXT (c, p, n, string_end, no_leading_period,
+ flags);
+ if (res != -1)
+ return res;
+ }
+
+ if (n != string_end && *n == L_('.') && no_leading_period)
+ return FNM_NOMATCH;
+
+ for (c = *p++; c == L_('?') || c == L_('*'); c = *p++)
+ {
+ if (*p == L_('(') && (flags & FNM_EXTMATCH) != 0)
+ {
+ const CHAR *endp = END (p);
+ if (endp != p)
+ {
+ /* This is a pattern. Skip over it. */
+ p = endp;
+ continue;
+ }
+ }
+
+ if (c == L_('?'))
+ {
+ /* A ? needs to match one character. */
+ if (n == string_end)
+ /* There isn't another character; no match. */
+ return FNM_NOMATCH;
+ else if (*n == L_('/')
+ && __builtin_expect (flags & FNM_FILE_NAME, 0))
+ /* A slash does not match a wildcard under
+ FNM_FILE_NAME. */
+ return FNM_NOMATCH;
+ else
+ /* One character of the string is consumed in matching
+ this ? wildcard, so *??? won't match if there are
+ less than three characters. */
+ ++n;
+ }
+ }
+
+ if (c == L_('\0'))
+ /* The wildcard(s) is/are the last element of the pattern.
+ If the name is a file name and contains another slash
+ this means it cannot match, unless the FNM_LEADING_DIR
+ flag is set. */
+ {
+ int result = (flags & FNM_FILE_NAME) == 0 ? 0 : FNM_NOMATCH;
+
+ if (flags & FNM_FILE_NAME)
+ {
+ if (flags & FNM_LEADING_DIR)
+ result = 0;
+ else
+ {
+ if (MEMCHR (n, L_('/'), string_end - n) == NULL)
+ result = 0;
+ }
+ }
+
+ return result;
+ }
+ else
+ {
+ const CHAR *endp;
+
+ endp = MEMCHR (n, (flags & FNM_FILE_NAME) ? L_('/') : L_('\0'),
+ string_end - n);
+ if (endp == NULL)
+ endp = string_end;
+
+ if (c == L_('[')
+ || (__builtin_expect (flags & FNM_EXTMATCH, 0) != 0
+ && (c == L_('@') || c == L_('+') || c == L_('!'))
+ && *p == L_('(')))
+ {
+ int flags2 = ((flags & FNM_FILE_NAME)
+ ? flags : (flags & ~FNM_PERIOD));
+ bool no_leading_period2 = no_leading_period;
+
+ for (--p; n < endp; ++n, no_leading_period2 = false)
+ if (FCT (p, n, string_end, no_leading_period2, flags2)
+ == 0)
+ return 0;
+ }
+ else if (c == L_('/') && (flags & FNM_FILE_NAME))
+ {
+ while (n < string_end && *n != L_('/'))
+ ++n;
+ if (n < string_end && *n == L_('/')
+ && (FCT (p, n + 1, string_end, flags & FNM_PERIOD, flags)
+ == 0))
+ return 0;
+ }
+ else
+ {
+ int flags2 = ((flags & FNM_FILE_NAME)
+ ? flags : (flags & ~FNM_PERIOD));
+ int no_leading_period2 = no_leading_period;
+
+ if (c == L_('\\') && !(flags & FNM_NOESCAPE))
+ c = *p;
+ c = FOLD (c);
+ for (--p; n < endp; ++n, no_leading_period2 = false)
+ if (FOLD ((UCHAR) *n) == c
+ && (FCT (p, n, string_end, no_leading_period2, flags2)
+ == 0))
+ return 0;
+ }
+ }
+
+ /* If we come here no match is possible with the wildcard. */
+ return FNM_NOMATCH;
+
+ case L_('['):
+ {
+ /* Nonzero if the sense of the character class is inverted. */
+ register bool not;
+ CHAR cold;
+ UCHAR fn;
+
+ if (posixly_correct == 0)
+ posixly_correct = getenv ("POSIXLY_CORRECT") != NULL ? 1 : -1;
+
+ if (n == string_end)
+ return FNM_NOMATCH;
+
+ if (*n == L_('.') && no_leading_period)
+ return FNM_NOMATCH;
+
+ if (*n == L_('/') && (flags & FNM_FILE_NAME))
+ /* `/' cannot be matched. */
+ return FNM_NOMATCH;
+
+ not = (*p == L_('!') || (posixly_correct < 0 && *p == L_('^')));
+ if (not)
+ ++p;
+
+ fn = FOLD ((UCHAR) *n);
+
+ c = *p++;
+ for (;;)
+ {
+ if (!(flags & FNM_NOESCAPE) && c == L_('\\'))
+ {
+ if (*p == L_('\0'))
+ return FNM_NOMATCH;
+ c = FOLD ((UCHAR) *p);
+ ++p;
+
+ goto normal_bracket;
+ }
+ else if (c == L_('[') && *p == L_(':'))
+ {
+ /* Leave room for the null. */
+ CHAR str[CHAR_CLASS_MAX_LENGTH + 1];
+ size_t c1 = 0;
+#if defined _LIBC || WIDE_CHAR_SUPPORT
+ wctype_t wt;
+#endif
+ const CHAR *startp = p;
+
+ for (;;)
+ {
+ if (c1 == CHAR_CLASS_MAX_LENGTH)
+ /* The name is too long and therefore the pattern
+ is ill-formed. */
+ return FNM_NOMATCH;
+
+ c = *++p;
+ if (c == L_(':') && p[1] == L_(']'))
+ {
+ p += 2;
+ break;
+ }
+ if (c < L_('a') || c >= L_('z'))
+ {
+ /* This cannot possibly be a character class name.
+ Match it as a normal range. */
+ p = startp;
+ c = L_('[');
+ goto normal_bracket;
+ }
+ str[c1++] = c;
+ }
+ str[c1] = L_('\0');
+
+#if defined _LIBC || WIDE_CHAR_SUPPORT
+ wt = IS_CHAR_CLASS (str);
+ if (wt == 0)
+ /* Invalid character class name. */
+ return FNM_NOMATCH;
+
+# if defined _LIBC && ! WIDE_CHAR_VERSION
+ /* The following code is glibc specific but does
+ there a good job in speeding up the code since
+ we can avoid the btowc() call. */
+ if (_ISCTYPE ((UCHAR) *n, wt))
+ goto matched;
+# else
+ if (ISWCTYPE (BTOWC ((UCHAR) *n), wt))
+ goto matched;
+# endif
+#else
+ if ((STREQ (str, L_("alnum")) && isalnum ((UCHAR) *n))
+ || (STREQ (str, L_("alpha")) && isalpha ((UCHAR) *n))
+ || (STREQ (str, L_("blank")) && isblank ((UCHAR) *n))
+ || (STREQ (str, L_("cntrl")) && iscntrl ((UCHAR) *n))
+ || (STREQ (str, L_("digit")) && isdigit ((UCHAR) *n))
+ || (STREQ (str, L_("graph")) && isgraph ((UCHAR) *n))
+ || (STREQ (str, L_("lower")) && islower ((UCHAR) *n))
+ || (STREQ (str, L_("print")) && isprint ((UCHAR) *n))
+ || (STREQ (str, L_("punct")) && ispunct ((UCHAR) *n))
+ || (STREQ (str, L_("space")) && isspace ((UCHAR) *n))
+ || (STREQ (str, L_("upper")) && isupper ((UCHAR) *n))
+ || (STREQ (str, L_("xdigit")) && isxdigit ((UCHAR) *n)))
+ goto matched;
+#endif
+ c = *p++;
+ }
+#ifdef _LIBC
+ else if (c == L_('[') && *p == L_('='))
+ {
+ UCHAR str[1];
+ uint32_t nrules =
+ _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
+ const CHAR *startp = p;
+
+ c = *++p;
+ if (c == L_('\0'))
+ {
+ p = startp;
+ c = L_('[');
+ goto normal_bracket;
+ }
+ str[0] = c;
+
+ c = *++p;
+ if (c != L_('=') || p[1] != L_(']'))
+ {
+ p = startp;
+ c = L_('[');
+ goto normal_bracket;
+ }
+ p += 2;
+
+ if (nrules == 0)
+ {
+ if ((UCHAR) *n == str[0])
+ goto matched;
+ }
+ else
+ {
+ const int32_t *table;
+# if WIDE_CHAR_VERSION
+ const int32_t *weights;
+ const int32_t *extra;
+# else
+ const unsigned char *weights;
+ const unsigned char *extra;
+# endif
+ const int32_t *indirect;
+ int32_t idx;
+ const UCHAR *cp = (const UCHAR *) str;
+
+ /* This #include defines a local function! */
+# if WIDE_CHAR_VERSION
+# include <locale/weightwc.h>
+# else
+# include <locale/weight.h>
+# endif
+
+# if WIDE_CHAR_VERSION
+ table = (const int32_t *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEWC);
+ weights = (const int32_t *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_WEIGHTWC);
+ extra = (const int32_t *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAWC);
+ indirect = (const int32_t *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTWC);
+# else
+ table = (const int32_t *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB);
+ weights = (const unsigned char *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_WEIGHTMB);
+ extra = (const unsigned char *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAMB);
+ indirect = (const int32_t *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB);
+# endif
+
+ idx = findidx (&cp);
+ if (idx != 0)
+ {
+ /* We found a table entry. Now see whether the
+ character we are currently at has the same
+ equivalance class value. */
+ int len = weights[idx];
+ int32_t idx2;
+ const UCHAR *np = (const UCHAR *) n;
+
+ idx2 = findidx (&np);
+ if (idx2 != 0 && len == weights[idx2])
+ {
+ int cnt = 0;
+
+ while (cnt < len
+ && (weights[idx + 1 + cnt]
+ == weights[idx2 + 1 + cnt]))
+ ++cnt;
+
+ if (cnt == len)
+ goto matched;
+ }
+ }
+ }
+
+ c = *p++;
+ }
+#endif
+ else if (c == L_('\0'))
+ /* [ (unterminated) loses. */
+ return FNM_NOMATCH;
+ else
+ {
+ bool is_range = false;
+
+#ifdef _LIBC
+ bool is_seqval = false;
+
+ if (c == L_('[') && *p == L_('.'))
+ {
+ uint32_t nrules =
+ _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
+ const CHAR *startp = p;
+ size_t c1 = 0;
+
+ while (1)
+ {
+ c = *++p;
+ if (c == L_('.') && p[1] == L_(']'))
+ {
+ p += 2;
+ break;
+ }
+ if (c == '\0')
+ return FNM_NOMATCH;
+ ++c1;
+ }
+
+ /* We have to handling the symbols differently in
+ ranges since then the collation sequence is
+ important. */
+ is_range = *p == L_('-') && p[1] != L_('\0');
+
+ if (nrules == 0)
+ {
+ /* There are no names defined in the collation
+ data. Therefore we only accept the trivial
+ names consisting of the character itself. */
+ if (c1 != 1)
+ return FNM_NOMATCH;
+
+ if (!is_range && *n == startp[1])
+ goto matched;
+
+ cold = startp[1];
+ c = *p++;
+ }
+ else
+ {
+ int32_t table_size;
+ const int32_t *symb_table;
+# ifdef WIDE_CHAR_VERSION
+ char str[c1];
+ size_t strcnt;
+# else
+# define str (startp + 1)
+# endif
+ const unsigned char *extra;
+ int32_t idx;
+ int32_t elem;
+ int32_t second;
+ int32_t hash;
+
+# ifdef WIDE_CHAR_VERSION
+ /* We have to convert the name to a single-byte
+ string. This is possible since the names
+ consist of ASCII characters and the internal
+ representation is UCS4. */
+ for (strcnt = 0; strcnt < c1; ++strcnt)
+ str[strcnt] = startp[1 + strcnt];
+# endif
+
+ table_size =
+ _NL_CURRENT_WORD (LC_COLLATE,
+ _NL_COLLATE_SYMB_HASH_SIZEMB);
+ symb_table = (const int32_t *)
+ _NL_CURRENT (LC_COLLATE,
+ _NL_COLLATE_SYMB_TABLEMB);
+ extra = (const unsigned char *)
+ _NL_CURRENT (LC_COLLATE,
+ _NL_COLLATE_SYMB_EXTRAMB);
+
+ /* Locate the character in the hashing table. */
+ hash = elem_hash (str, c1);
+
+ idx = 0;
+ elem = hash % table_size;
+ if (symb_table[2 * elem] != 0)
+ {
+ second = hash % (table_size - 2) + 1;
+
+ do
+ {
+ /* First compare the hashing value. */
+ if (symb_table[2 * elem] == hash
+ && (c1
+ == extra[symb_table[2 * elem + 1]])
+ && memcmp (str,
+ &extra[symb_table[2 * elem
+ + 1]
+ + 1], c1) == 0)
+ {
+ /* Yep, this is the entry. */
+ idx = symb_table[2 * elem + 1];
+ idx += 1 + extra[idx];
+ break;
+ }
+
+ /* Next entry. */
+ elem += second;
+ }
+ while (symb_table[2 * elem] != 0);
+ }
+
+ if (symb_table[2 * elem] != 0)
+ {
+ /* Compare the byte sequence but only if
+ this is not part of a range. */
+# ifdef WIDE_CHAR_VERSION
+ int32_t *wextra;
+
+ idx += 1 + extra[idx];
+ /* Adjust for the alignment. */
+ idx = (idx + 3) & ~3;
+
+ wextra = (int32_t *) &extra[idx + 4];
+# endif
+
+ if (! is_range)
+ {
+# ifdef WIDE_CHAR_VERSION
+ for (c1 = 0;
+ (int32_t) c1 < wextra[idx];
+ ++c1)
+ if (n[c1] != wextra[1 + c1])
+ break;
+
+ if ((int32_t) c1 == wextra[idx])
+ goto matched;
+# else
+ for (c1 = 0; c1 < extra[idx]; ++c1)
+ if (n[c1] != extra[1 + c1])
+ break;
+
+ if (c1 == extra[idx])
+ goto matched;
+# endif
+ }
+
+ /* Get the collation sequence value. */
+ is_seqval = true;
+# ifdef WIDE_CHAR_VERSION
+ cold = wextra[1 + wextra[idx]];
+# else
+ /* Adjust for the alignment. */
+ idx += 1 + extra[idx];
+ idx = (idx + 3) & ~4;
+ cold = *((int32_t *) &extra[idx]);
+# endif
+
+ c = *p++;
+ }
+ else if (c1 == 1)
+ {
+ /* No valid character. Match it as a
+ single byte. */
+ if (!is_range && *n == str[0])
+ goto matched;
+
+ cold = str[0];
+ c = *p++;
+ }
+ else
+ return FNM_NOMATCH;
+ }
+ }
+ else
+# undef str
+#endif
+ {
+ c = FOLD (c);
+ normal_bracket:
+
+ /* We have to handling the symbols differently in
+ ranges since then the collation sequence is
+ important. */
+ is_range = (*p == L_('-') && p[1] != L_('\0')
+ && p[1] != L_(']'));
+
+ if (!is_range && c == fn)
+ goto matched;
+
+#if _LIBC
+ /* This is needed if we goto normal_bracket; from
+ outside of is_seqval's scope. */
+ is_seqval = false;
+#endif
+
+ cold = c;
+ c = *p++;
+ }
+
+ if (c == L_('-') && *p != L_(']'))
+ {
+#if _LIBC
+ /* We have to find the collation sequence
+ value for C. Collation sequence is nothing
+ we can regularly access. The sequence
+ value is defined by the order in which the
+ definitions of the collation values for the
+ various characters appear in the source
+ file. A strange concept, nowhere
+ documented. */
+ uint32_t fcollseq;
+ uint32_t lcollseq;
+ UCHAR cend = *p++;
+
+# ifdef WIDE_CHAR_VERSION
+ /* Search in the `names' array for the characters. */
+ fcollseq = __collseq_table_lookup (collseq, fn);
+ if (fcollseq == ~((uint32_t) 0))
+ /* XXX We don't know anything about the character
+ we are supposed to match. This means we are
+ failing. */
+ goto range_not_matched;
+
+ if (is_seqval)
+ lcollseq = cold;
+ else
+ lcollseq = __collseq_table_lookup (collseq, cold);
+# else
+ fcollseq = collseq[fn];
+ lcollseq = is_seqval ? cold : collseq[(UCHAR) cold];
+# endif
+
+ is_seqval = false;
+ if (cend == L_('[') && *p == L_('.'))
+ {
+ uint32_t nrules =
+ _NL_CURRENT_WORD (LC_COLLATE,
+ _NL_COLLATE_NRULES);
+ const CHAR *startp = p;
+ size_t c1 = 0;
+
+ while (1)
+ {
+ c = *++p;
+ if (c == L_('.') && p[1] == L_(']'))
+ {
+ p += 2;
+ break;
+ }
+ if (c == '\0')
+ return FNM_NOMATCH;
+ ++c1;
+ }
+
+ if (nrules == 0)
+ {
+ /* There are no names defined in the
+ collation data. Therefore we only
+ accept the trivial names consisting
+ of the character itself. */
+ if (c1 != 1)
+ return FNM_NOMATCH;
+
+ cend = startp[1];
+ }
+ else
+ {
+ int32_t table_size;
+ const int32_t *symb_table;
+# ifdef WIDE_CHAR_VERSION
+ char str[c1];
+ size_t strcnt;
+# else
+# define str (startp + 1)
+# endif
+ const unsigned char *extra;
+ int32_t idx;
+ int32_t elem;
+ int32_t second;
+ int32_t hash;
+
+# ifdef WIDE_CHAR_VERSION
+ /* We have to convert the name to a single-byte
+ string. This is possible since the names
+ consist of ASCII characters and the internal
+ representation is UCS4. */
+ for (strcnt = 0; strcnt < c1; ++strcnt)
+ str[strcnt] = startp[1 + strcnt];
+# endif
+
+ table_size =
+ _NL_CURRENT_WORD (LC_COLLATE,
+ _NL_COLLATE_SYMB_HASH_SIZEMB);
+ symb_table = (const int32_t *)
+ _NL_CURRENT (LC_COLLATE,
+ _NL_COLLATE_SYMB_TABLEMB);
+ extra = (const unsigned char *)
+ _NL_CURRENT (LC_COLLATE,
+ _NL_COLLATE_SYMB_EXTRAMB);
+
+ /* Locate the character in the hashing
+ table. */
+ hash = elem_hash (str, c1);
+
+ idx = 0;
+ elem = hash % table_size;
+ if (symb_table[2 * elem] != 0)
+ {
+ second = hash % (table_size - 2) + 1;
+
+ do
+ {
+ /* First compare the hashing value. */
+ if (symb_table[2 * elem] == hash
+ && (c1
+ == extra[symb_table[2 * elem + 1]])
+ && memcmp (str,
+ &extra[symb_table[2 * elem + 1]
+ + 1], c1) == 0)
+ {
+ /* Yep, this is the entry. */
+ idx = symb_table[2 * elem + 1];
+ idx += 1 + extra[idx];
+ break;
+ }
+
+ /* Next entry. */
+ elem += second;
+ }
+ while (symb_table[2 * elem] != 0);
+ }
+
+ if (symb_table[2 * elem] != 0)
+ {
+ /* Compare the byte sequence but only if
+ this is not part of a range. */
+# ifdef WIDE_CHAR_VERSION
+ int32_t *wextra;
+
+ idx += 1 + extra[idx];
+ /* Adjust for the alignment. */
+ idx = (idx + 3) & ~4;
+
+ wextra = (int32_t *) &extra[idx + 4];
+# endif
+ /* Get the collation sequence value. */
+ is_seqval = true;
+# ifdef WIDE_CHAR_VERSION
+ cend = wextra[1 + wextra[idx]];
+# else
+ /* Adjust for the alignment. */
+ idx += 1 + extra[idx];
+ idx = (idx + 3) & ~4;
+ cend = *((int32_t *) &extra[idx]);
+# endif
+ }
+ else if (symb_table[2 * elem] != 0 && c1 == 1)
+ {
+ cend = str[0];
+ c = *p++;
+ }
+ else
+ return FNM_NOMATCH;
+ }
+# undef str
+ }
+ else
+ {
+ if (!(flags & FNM_NOESCAPE) && cend == L_('\\'))
+ cend = *p++;
+ if (cend == L_('\0'))
+ return FNM_NOMATCH;
+ cend = FOLD (cend);
+ }
+
+ /* XXX It is not entirely clear to me how to handle
+ characters which are not mentioned in the
+ collation specification. */
+ if (
+# ifdef WIDE_CHAR_VERSION
+ lcollseq == 0xffffffff ||
+# endif
+ lcollseq <= fcollseq)
+ {
+ /* We have to look at the upper bound. */
+ uint32_t hcollseq;
+
+ if (is_seqval)
+ hcollseq = cend;
+ else
+ {
+# ifdef WIDE_CHAR_VERSION
+ hcollseq =
+ __collseq_table_lookup (collseq, cend);
+ if (hcollseq == ~((uint32_t) 0))
+ {
+ /* Hum, no information about the upper
+ bound. The matching succeeds if the
+ lower bound is matched exactly. */
+ if (lcollseq != fcollseq)
+ goto range_not_matched;
+
+ goto matched;
+ }
+# else
+ hcollseq = collseq[cend];
+# endif
+ }
+
+ if (lcollseq <= hcollseq && fcollseq <= hcollseq)
+ goto matched;
+ }
+# ifdef WIDE_CHAR_VERSION
+ range_not_matched:
+# endif
+#else
+ /* We use a boring value comparison of the character
+ values. This is better than comparing using
+ `strcoll' since the latter would have surprising
+ and sometimes fatal consequences. */
+ UCHAR cend = *p++;
+
+ if (!(flags & FNM_NOESCAPE) && cend == L_('\\'))
+ cend = *p++;
+ if (cend == L_('\0'))
+ return FNM_NOMATCH;
+
+ /* It is a range. */
+ if (cold <= fn && fn <= cend)
+ goto matched;
+#endif
+
+ c = *p++;
+ }
+ }
+
+ if (c == L_(']'))
+ break;
+ }
+
+ if (!not)
+ return FNM_NOMATCH;
+ break;
+
+ matched:
+ /* Skip the rest of the [...] that already matched. */
+ do
+ {
+ ignore_next:
+ c = *p++;
+
+ if (c == L_('\0'))
+ /* [... (unterminated) loses. */
+ return FNM_NOMATCH;
+
+ if (!(flags & FNM_NOESCAPE) && c == L_('\\'))
+ {
+ if (*p == L_('\0'))
+ return FNM_NOMATCH;
+ /* XXX 1003.2d11 is unclear if this is right. */
+ ++p;
+ }
+ else if (c == L_('[') && *p == L_(':'))
+ {
+ int c1 = 0;
+ const CHAR *startp = p;
+
+ while (1)
+ {
+ c = *++p;
+ if (++c1 == CHAR_CLASS_MAX_LENGTH)
+ return FNM_NOMATCH;
+
+ if (*p == L_(':') && p[1] == L_(']'))
+ break;
+
+ if (c < L_('a') || c >= L_('z'))
+ {
+ p = startp;
+ goto ignore_next;
+ }
+ }
+ p += 2;
+ c = *p++;
+ }
+ else if (c == L_('[') && *p == L_('='))
+ {
+ c = *++p;
+ if (c == L_('\0'))
+ return FNM_NOMATCH;
+ c = *++p;
+ if (c != L_('=') || p[1] != L_(']'))
+ return FNM_NOMATCH;
+ p += 2;
+ c = *p++;
+ }
+ else if (c == L_('[') && *p == L_('.'))
+ {
+ ++p;
+ while (1)
+ {
+ c = *++p;
+ if (c == '\0')
+ return FNM_NOMATCH;
+
+ if (*p == L_('.') && p[1] == L_(']'))
+ break;
+ }
+ p += 2;
+ c = *p++;
+ }
+ }
+ while (c != L_(']'));
+ if (not)
+ return FNM_NOMATCH;
+ }
+ break;
+
+ case L_('+'):
+ case L_('@'):
+ case L_('!'):
+ if (__builtin_expect (flags & FNM_EXTMATCH, 0) && *p == '(')
+ {
+ int res;
+
+ res = EXT (c, p, n, string_end, no_leading_period, flags);
+ if (res != -1)
+ return res;
+ }
+ goto normal_match;
+
+ case L_('/'):
+ if (NO_LEADING_PERIOD (flags))
+ {
+ if (n == string_end || c != (UCHAR) *n)
+ return FNM_NOMATCH;
+
+ new_no_leading_period = true;
+ break;
+ }
+ /* FALLTHROUGH */
+ default:
+ normal_match:
+ if (n == string_end || c != FOLD ((UCHAR) *n))
+ return FNM_NOMATCH;
+ }
+
+ no_leading_period = new_no_leading_period;
+ ++n;
+ }
+
+ if (n == string_end)
+ return 0;
+
+ if ((flags & FNM_LEADING_DIR) && n != string_end && *n == L_('/'))
+ /* The FNM_LEADING_DIR flag says that "foo*" matches "foobar/frobozz". */
+ return 0;
+
+ return FNM_NOMATCH;
+}
+
+
+static const CHAR *
+internal_function
+END (const CHAR *pattern)
+{
+ const CHAR *p = pattern;
+
+ while (1)
+ if (*++p == L_('\0'))
+ /* This is an invalid pattern. */
+ return pattern;
+ else if (*p == L_('['))
+ {
+ /* Handle brackets special. */
+ if (posixly_correct == 0)
+ posixly_correct = getenv ("POSIXLY_CORRECT") != NULL ? 1 : -1;
+
+ /* Skip the not sign. We have to recognize it because of a possibly
+ following ']'. */
+ if (*++p == L_('!') || (posixly_correct < 0 && *p == L_('^')))
+ ++p;
+ /* A leading ']' is recognized as such. */
+ if (*p == L_(']'))
+ ++p;
+ /* Skip over all characters of the list. */
+ while (*p != L_(']'))
+ if (*p++ == L_('\0'))
+ /* This is no valid pattern. */
+ return pattern;
+ }
+ else if ((*p == L_('?') || *p == L_('*') || *p == L_('+') || *p == L_('@')
+ || *p == L_('!')) && p[1] == L_('('))
+ p = END (p + 1);
+ else if (*p == L_(')'))
+ break;
+
+ return p + 1;
+}
+
+
+static int
+internal_function
+EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
+ bool no_leading_period, int flags)
+{
+ const CHAR *startp;
+ size_t level;
+ struct patternlist
+ {
+ struct patternlist *next;
+ CHAR str[1];
+ } *list = NULL;
+ struct patternlist **lastp = &list;
+ size_t pattern_len = STRLEN (pattern);
+ const CHAR *p;
+ const CHAR *rs;
+ enum { ALLOCA_LIMIT = 8000 };
+
+ /* Parse the pattern. Store the individual parts in the list. */
+ level = 0;
+ for (startp = p = pattern + 1; ; ++p)
+ if (*p == L_('\0'))
+ /* This is an invalid pattern. */
+ return -1;
+ else if (*p == L_('['))
+ {
+ /* Handle brackets special. */
+ if (posixly_correct == 0)
+ posixly_correct = getenv ("POSIXLY_CORRECT") != NULL ? 1 : -1;
+
+ /* Skip the not sign. We have to recognize it because of a possibly
+ following ']'. */
+ if (*++p == L_('!') || (posixly_correct < 0 && *p == L_('^')))
+ ++p;
+ /* A leading ']' is recognized as such. */
+ if (*p == L_(']'))
+ ++p;
+ /* Skip over all characters of the list. */
+ while (*p != L_(']'))
+ if (*p++ == L_('\0'))
+ /* This is no valid pattern. */
+ return -1;
+ }
+ else if ((*p == L_('?') || *p == L_('*') || *p == L_('+') || *p == L_('@')
+ || *p == L_('!')) && p[1] == L_('('))
+ /* Remember the nesting level. */
+ ++level;
+ else if (*p == L_(')'))
+ {
+ if (level-- == 0)
+ {
+ /* This means we found the end of the pattern. */
+#define NEW_PATTERN \
+ struct patternlist *newp; \
+ size_t plen; \
+ size_t plensize; \
+ size_t newpsize; \
+ \
+ plen = (opt == L_('?') || opt == L_('@') \
+ ? pattern_len \
+ : p - startp + 1); \
+ plensize = plen * sizeof (CHAR); \
+ newpsize = offsetof (struct patternlist, str) + plensize; \
+ if ((size_t) -1 / sizeof (CHAR) < plen \
+ || newpsize < offsetof (struct patternlist, str) \
+ || ALLOCA_LIMIT <= newpsize) \
+ return -1; \
+ newp = (struct patternlist *) alloca (newpsize); \
+ *((CHAR *) MEMPCPY (newp->str, startp, p - startp)) = L_('\0'); \
+ newp->next = NULL; \
+ *lastp = newp; \
+ lastp = &newp->next
+ NEW_PATTERN;
+ break;
+ }
+ }
+ else if (*p == L_('|'))
+ {
+ if (level == 0)
+ {
+ NEW_PATTERN;
+ startp = p + 1;
+ }
+ }
+ assert (list != NULL);
+ assert (p[-1] == L_(')'));
+#undef NEW_PATTERN
+
+ switch (opt)
+ {
+ case L_('*'):
+ if (FCT (p, string, string_end, no_leading_period, flags) == 0)
+ return 0;
+ /* FALLTHROUGH */
+
+ case L_('+'):
+ do
+ {
+ for (rs = string; rs <= string_end; ++rs)
+ /* First match the prefix with the current pattern with the
+ current pattern. */
+ if (FCT (list->str, string, rs, no_leading_period,
+ flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD) == 0
+ /* This was successful. Now match the rest with the rest
+ of the pattern. */
+ && (FCT (p, rs, string_end,
+ rs == string
+ ? no_leading_period
+ : rs[-1] == '/' && NO_LEADING_PERIOD (flags),
+ flags & FNM_FILE_NAME
+ ? flags : flags & ~FNM_PERIOD) == 0
+ /* This didn't work. Try the whole pattern. */
+ || (rs != string
+ && FCT (pattern - 1, rs, string_end,
+ rs == string
+ ? no_leading_period
+ : rs[-1] == '/' && NO_LEADING_PERIOD (flags),
+ flags & FNM_FILE_NAME
+ ? flags : flags & ~FNM_PERIOD) == 0)))
+ /* It worked. Signal success. */
+ return 0;
+ }
+ while ((list = list->next) != NULL);
+
+ /* None of the patterns lead to a match. */
+ return FNM_NOMATCH;
+
+ case L_('?'):
+ if (FCT (p, string, string_end, no_leading_period, flags) == 0)
+ return 0;
+ /* FALLTHROUGH */
+
+ case L_('@'):
+ do
+ /* I cannot believe it but `strcat' is actually acceptable
+ here. Match the entire string with the prefix from the
+ pattern list and the rest of the pattern following the
+ pattern list. */
+ if (FCT (STRCAT (list->str, p), string, string_end,
+ no_leading_period,
+ flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD) == 0)
+ /* It worked. Signal success. */
+ return 0;
+ while ((list = list->next) != NULL);
+
+ /* None of the patterns lead to a match. */
+ return FNM_NOMATCH;
+
+ case L_('!'):
+ for (rs = string; rs <= string_end; ++rs)
+ {
+ struct patternlist *runp;
+
+ for (runp = list; runp != NULL; runp = runp->next)
+ if (FCT (runp->str, string, rs, no_leading_period,
+ flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD) == 0)
+ break;
+
+ /* If none of the patterns matched see whether the rest does. */
+ if (runp == NULL
+ && (FCT (p, rs, string_end,
+ rs == string
+ ? no_leading_period
+ : rs[-1] == '/' && NO_LEADING_PERIOD (flags),
+ flags & FNM_FILE_NAME ? flags : flags & ~FNM_PERIOD)
+ == 0))
+ /* This is successful. */
+ return 0;
+ }
+
+ /* None of the patterns together with the rest of the pattern
+ lead to a match. */
+ return FNM_NOMATCH;
+
+ default:
+ assert (! "Invalid extended matching operator");
+ break;
+ }
+
+ return -1;
+}
+
+
+#undef FOLD
+#undef CHAR
+#undef UCHAR
+#undef INT
+#undef FCT
+#undef EXT
+#undef END
+#undef MEMPCPY
+#undef MEMCHR
+#undef STRCOLL
+#undef STRLEN
+#undef STRCAT
+#undef L_
+#undef BTOWC
diff --git a/lib/fopen-safer.c b/lib/fopen-safer.c
new file mode 100644
index 0000000..3502dba
--- /dev/null
+++ b/lib/fopen-safer.c
@@ -0,0 +1,68 @@
+/* Invoke fopen, but avoid some glitches.
+
+ Copyright (C) 2001, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "stdio-safer.h"
+
+#include <errno.h>
+#include <unistd.h>
+#include "unistd-safer.h"
+
+#ifndef STDERR_FILENO
+# define STDERR_FILENO 2
+#endif
+
+/* Like fopen, but do not return stdin, stdout, or stderr. */
+
+FILE *
+fopen_safer (char const *file, char const *mode)
+{
+ FILE *fp = fopen (file, mode);
+
+ if (fp)
+ {
+ int fd = fileno (fp);
+
+ if (0 <= fd && fd <= STDERR_FILENO)
+ {
+ int f = dup_safer (fd);
+
+ if (f < 0)
+ {
+ int e = errno;
+ fclose (fp);
+ errno = e;
+ return NULL;
+ }
+
+ if (fclose (fp) != 0
+ || ! (fp = fdopen (f, mode)))
+ {
+ int e = errno;
+ close (f);
+ errno = e;
+ return NULL;
+ }
+ }
+ }
+
+ return fp;
+}
diff --git a/lib/fprintftime.c b/lib/fprintftime.c
new file mode 100644
index 0000000..e6eb4f2
--- /dev/null
+++ b/lib/fprintftime.c
@@ -0,0 +1,2 @@
+#define FPRINTFTIME 1
+#include "strftime.c"
diff --git a/lib/fprintftime.h b/lib/fprintftime.h
new file mode 100644
index 0000000..e0be5cd
--- /dev/null
+++ b/lib/fprintftime.h
@@ -0,0 +1,30 @@
+/* Generate time strings directly to the output. */
+
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <stdio.h>
+#include <time.h>
+
+/* A cross between fprintf and nstrftime, that prints directly
+ to the output stream, without the need for the potentially
+ large buffer that nstrftime would require.
+
+ Output to stream FP the result of formatting (according to the
+ nstrftime format string, FMT) the time data, *TM, and the UTC
+ and NANOSECONDS values. */
+size_t fprintftime (FILE *fp, char const *fmt, struct tm const *tm,
+ int utc, int nanoseconds);
diff --git a/lib/free.c b/lib/free.c
new file mode 100644
index 0000000..73a125a
--- /dev/null
+++ b/lib/free.c
@@ -0,0 +1,31 @@
+/* Work around incompatibility on older systems where free (NULL) fails.
+
+ Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Paul Eggert */
+
+#include <config.h>
+#undef free
+
+#include <stdlib.h>
+
+void
+rpl_free (void *p)
+{
+ if (p)
+ free (p);
+}
diff --git a/lib/fstatat.c b/lib/fstatat.c
new file mode 100644
index 0000000..92a5164
--- /dev/null
+++ b/lib/fstatat.c
@@ -0,0 +1,57 @@
+/* Work around an fstatat bug on Solaris 9.
+
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert and Jim Meyering. */
+
+#include <config.h>
+
+#define COMPILING_FSTATAT 1
+#include "openat.h"
+
+#include <errno.h>
+#include <string.h>
+
+/* fstatat should always follow symbolic links that end in /, but on
+ Solaris 9 it doesn't if AT_SYMLINK_NOFOLLOW is specified. This is
+ the same problem that lstat.c addresses, so solve it in a similar
+ way. */
+
+int
+rpl_fstatat (int fd, char const *file, struct stat *st, int flag)
+{
+ int result = fstatat (fd, file, st, flag);
+
+ if (result == 0 && (flag & AT_SYMLINK_NOFOLLOW) && S_ISLNK (st->st_mode)
+ && file[strlen (file) - 1] == '/')
+ {
+ /* FILE refers to a symbolic link and the name ends with a slash.
+ Get info about the link's referent. */
+ result = fstatat (fd, file, st, flag & ~AT_SYMLINK_NOFOLLOW);
+ if (result == 0 && ! S_ISDIR (st->st_mode))
+ {
+ /* fstatat succeeded and FILE references a non-directory.
+ But it was specified via a name including a trailing
+ slash. Fail with errno set to ENOTDIR to indicate the
+ contradiction. */
+ errno = ENOTDIR;
+ return -1;
+ }
+ }
+
+ return result;
+}
diff --git a/lib/fsusage.c b/lib/fsusage.c
new file mode 100644
index 0000000..337bf53
--- /dev/null
+++ b/lib/fsusage.c
@@ -0,0 +1,264 @@
+/* fsusage.c -- return space usage of mounted file systems
+
+ Copyright (C) 1991, 1992, 1996, 1998, 1999, 2002, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "fsusage.h"
+
+#include <limits.h>
+#include <sys/types.h>
+
+#if STAT_STATVFS /* POSIX 1003.1-2001 (and later) with XSI */
+# include <sys/statvfs.h>
+#else
+/* Don't include backward-compatibility files unless they're needed.
+ Eventually we'd like to remove all this cruft. */
+# include <fcntl.h>
+# include <unistd.h>
+# include <sys/stat.h>
+# if HAVE_SYS_PARAM_H
+# include <sys/param.h>
+# endif
+# if HAVE_SYS_MOUNT_H
+# include <sys/mount.h>
+# endif
+# if HAVE_SYS_VFS_H
+# include <sys/vfs.h>
+# endif
+# if HAVE_SYS_FS_S5PARAM_H /* Fujitsu UXP/V */
+# include <sys/fs/s5param.h>
+# endif
+# if defined HAVE_SYS_FILSYS_H && !defined _CRAY
+# include <sys/filsys.h> /* SVR2 */
+# endif
+# if HAVE_SYS_STATFS_H
+# include <sys/statfs.h>
+# endif
+# if HAVE_DUSTAT_H /* AIX PS/2 */
+# include <sys/dustat.h>
+# endif
+# include "full-read.h"
+#endif
+
+/* The results of open() in this file are not used with fchdir,
+ therefore save some unnecessary work in fchdir.c. */
+#undef open
+#undef close
+
+/* Many space usage primitives use all 1 bits to denote a value that is
+ not applicable or unknown. Propagate this information by returning
+ a uintmax_t value that is all 1 bits if X is all 1 bits, even if X
+ is unsigned and narrower than uintmax_t. */
+#define PROPAGATE_ALL_ONES(x) \
+ ((sizeof (x) < sizeof (uintmax_t) \
+ && (~ (x) == (sizeof (x) < sizeof (int) \
+ ? - (1 << (sizeof (x) * CHAR_BIT)) \
+ : 0))) \
+ ? UINTMAX_MAX : (uintmax_t) (x))
+
+/* Extract the top bit of X as an uintmax_t value. */
+#define EXTRACT_TOP_BIT(x) ((x) \
+ & ((uintmax_t) 1 << (sizeof (x) * CHAR_BIT - 1)))
+
+/* If a value is negative, many space usage primitives store it into an
+ integer variable by assignment, even if the variable's type is unsigned.
+ So, if a space usage variable X's top bit is set, convert X to the
+ uintmax_t value V such that (- (uintmax_t) V) is the negative of
+ the original value. If X's top bit is clear, just yield X.
+ Use PROPAGATE_TOP_BIT if the original value might be negative;
+ otherwise, use PROPAGATE_ALL_ONES. */
+#define PROPAGATE_TOP_BIT(x) ((x) | ~ (EXTRACT_TOP_BIT (x) - 1))
+
+/* Fill in the fields of FSP with information about space usage for
+ the file system on which FILE resides.
+ DISK is the device on which FILE is mounted, for space-getting
+ methods that need to know it.
+ Return 0 if successful, -1 if not. When returning -1, ensure that
+ ERRNO is either a system error value, or zero if DISK is NULL
+ on a system that requires a non-NULL value. */
+int
+get_fs_usage (char const *file, char const *disk, struct fs_usage *fsp)
+{
+#if defined STAT_STATVFS /* POSIX */
+
+ struct statvfs fsd;
+
+ if (statvfs (file, &fsd) < 0)
+ return -1;
+
+ /* f_frsize isn't guaranteed to be supported. */
+ fsp->fsu_blocksize = (fsd.f_frsize
+ ? PROPAGATE_ALL_ONES (fsd.f_frsize)
+ : PROPAGATE_ALL_ONES (fsd.f_bsize));
+
+#elif defined STAT_STATFS2_FS_DATA /* Ultrix */
+
+ struct fs_data fsd;
+
+ if (statfs (file, &fsd) != 1)
+ return -1;
+
+ fsp->fsu_blocksize = 1024;
+ fsp->fsu_blocks = PROPAGATE_ALL_ONES (fsd.fd_req.btot);
+ fsp->fsu_bfree = PROPAGATE_ALL_ONES (fsd.fd_req.bfree);
+ fsp->fsu_bavail = PROPAGATE_TOP_BIT (fsd.fd_req.bfreen);
+ fsp->fsu_bavail_top_bit_set = EXTRACT_TOP_BIT (fsd.fd_req.bfreen) != 0;
+ fsp->fsu_files = PROPAGATE_ALL_ONES (fsd.fd_req.gtot);
+ fsp->fsu_ffree = PROPAGATE_ALL_ONES (fsd.fd_req.gfree);
+
+#elif defined STAT_READ_FILSYS /* SVR2 */
+# ifndef SUPERBOFF
+# define SUPERBOFF (SUPERB * 512)
+# endif
+
+ struct filsys fsd;
+ int fd;
+
+ if (! disk)
+ {
+ errno = 0;
+ return -1;
+ }
+
+ fd = open (disk, O_RDONLY);
+ if (fd < 0)
+ return -1;
+ lseek (fd, (off_t) SUPERBOFF, 0);
+ if (full_read (fd, (char *) &fsd, sizeof fsd) != sizeof fsd)
+ {
+ close (fd);
+ return -1;
+ }
+ close (fd);
+
+ fsp->fsu_blocksize = (fsd.s_type == Fs2b ? 1024 : 512);
+ fsp->fsu_blocks = PROPAGATE_ALL_ONES (fsd.s_fsize);
+ fsp->fsu_bfree = PROPAGATE_ALL_ONES (fsd.s_tfree);
+ fsp->fsu_bavail = PROPAGATE_TOP_BIT (fsd.s_tfree);
+ fsp->fsu_bavail_top_bit_set = EXTRACT_TOP_BIT (fsd.s_tfree) != 0;
+ fsp->fsu_files = (fsd.s_isize == -1
+ ? UINTMAX_MAX
+ : (fsd.s_isize - 2) * INOPB * (fsd.s_type == Fs2b ? 2 : 1));
+ fsp->fsu_ffree = PROPAGATE_ALL_ONES (fsd.s_tinode);
+
+#elif defined STAT_STATFS3_OSF1
+
+ struct statfs fsd;
+
+ if (statfs (file, &fsd, sizeof (struct statfs)) != 0)
+ return -1;
+
+ fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_fsize);
+
+#elif defined STAT_STATFS2_BSIZE /* 4.3BSD, SunOS 4, HP-UX, AIX */
+
+ struct statfs fsd;
+
+ if (statfs (file, &fsd) < 0)
+ return -1;
+
+ fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_bsize);
+
+# ifdef STATFS_TRUNCATES_BLOCK_COUNTS
+
+ /* In SunOS 4.1.2, 4.1.3, and 4.1.3_U1, the block counts in the
+ struct statfs are truncated to 2GB. These conditions detect that
+ truncation, presumably without botching the 4.1.1 case, in which
+ the values are not truncated. The correct counts are stored in
+ undocumented spare fields. */
+ if (fsd.f_blocks == 0x7fffffff / fsd.f_bsize && fsd.f_spare[0] > 0)
+ {
+ fsd.f_blocks = fsd.f_spare[0];
+ fsd.f_bfree = fsd.f_spare[1];
+ fsd.f_bavail = fsd.f_spare[2];
+ }
+# endif /* STATFS_TRUNCATES_BLOCK_COUNTS */
+
+#elif defined STAT_STATFS2_FSIZE /* 4.4BSD */
+
+ struct statfs fsd;
+
+ if (statfs (file, &fsd) < 0)
+ return -1;
+
+ fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_fsize);
+
+#elif defined STAT_STATFS4 /* SVR3, Dynix, Irix, AIX */
+
+# if !_AIX && !defined _SEQUENT_ && !defined DOLPHIN
+# define f_bavail f_bfree
+# endif
+
+ struct statfs fsd;
+
+ if (statfs (file, &fsd, sizeof fsd, 0) < 0)
+ return -1;
+
+ /* Empirically, the block counts on most SVR3 and SVR3-derived
+ systems seem to always be in terms of 512-byte blocks,
+ no matter what value f_bsize has. */
+# if _AIX || defined _CRAY
+ fsp->fsu_blocksize = PROPAGATE_ALL_ONES (fsd.f_bsize);
+# else
+ fsp->fsu_blocksize = 512;
+# endif
+
+#endif
+
+#if (defined STAT_STATVFS \
+ || (!defined STAT_STATFS2_FS_DATA && !defined STAT_READ_FILSYS))
+
+ fsp->fsu_blocks = PROPAGATE_ALL_ONES (fsd.f_blocks);
+ fsp->fsu_bfree = PROPAGATE_ALL_ONES (fsd.f_bfree);
+ fsp->fsu_bavail = PROPAGATE_TOP_BIT (fsd.f_bavail);
+ fsp->fsu_bavail_top_bit_set = EXTRACT_TOP_BIT (fsd.f_bavail) != 0;
+ fsp->fsu_files = PROPAGATE_ALL_ONES (fsd.f_files);
+ fsp->fsu_ffree = PROPAGATE_ALL_ONES (fsd.f_ffree);
+
+#endif
+
+ return 0;
+}
+
+#if defined _AIX && defined _I386
+/* AIX PS/2 does not supply statfs. */
+
+int
+statfs (char *file, struct statfs *fsb)
+{
+ struct stat stats;
+ struct dustat fsd;
+
+ if (stat (file, &stats) != 0)
+ return -1;
+ if (dustat (stats.st_dev, 0, &fsd, sizeof (fsd)))
+ return -1;
+ fsb->f_type = 0;
+ fsb->f_bsize = fsd.du_bsize;
+ fsb->f_blocks = fsd.du_fsize - fsd.du_isize;
+ fsb->f_bfree = fsd.du_tfree;
+ fsb->f_bavail = fsd.du_tfree;
+ fsb->f_files = (fsd.du_isize - 2) * fsd.du_inopb;
+ fsb->f_ffree = fsd.du_tinode;
+ fsb->f_fsid.val[0] = fsd.du_site;
+ fsb->f_fsid.val[1] = fsd.du_pckno;
+ return 0;
+}
+
+#endif /* _AIX && _I386 */
diff --git a/lib/fsusage.h b/lib/fsusage.h
new file mode 100644
index 0000000..7fa9f8d
--- /dev/null
+++ b/lib/fsusage.h
@@ -0,0 +1,41 @@
+/* fsusage.h -- declarations for file system space usage info
+
+ Copyright (C) 1991, 1992, 1997, 2003, 2004, 2005, 2006 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Space usage statistics for a file system. Blocks are 512-byte. */
+
+#if !defined FSUSAGE_H_
+# define FSUSAGE_H_
+
+# include <stdint.h>
+# include <stdbool.h>
+
+struct fs_usage
+{
+ uintmax_t fsu_blocksize; /* Size of a block. */
+ uintmax_t fsu_blocks; /* Total blocks. */
+ uintmax_t fsu_bfree; /* Free blocks available to superuser. */
+ uintmax_t fsu_bavail; /* Free blocks available to non-superuser. */
+ bool fsu_bavail_top_bit_set; /* 1 if fsu_bavail represents a value < 0. */
+ uintmax_t fsu_files; /* Total file nodes. */
+ uintmax_t fsu_ffree; /* Free file nodes. */
+};
+
+int get_fs_usage (char const *file, char const *disk, struct fs_usage *fsp);
+
+#endif
diff --git a/lib/ftruncate.c b/lib/ftruncate.c
new file mode 100644
index 0000000..ff7d11b
--- /dev/null
+++ b/lib/ftruncate.c
@@ -0,0 +1,90 @@
+/* ftruncate emulations that work on some System V's.
+ This file is in the public domain. */
+
+#include <config.h>
+
+/* Specification. */
+#include <unistd.h>
+
+#include <sys/types.h>
+#include <fcntl.h>
+
+#ifdef F_CHSIZE
+
+int
+ftruncate (int fd, off_t length)
+{
+ return fcntl (fd, F_CHSIZE, length);
+}
+
+#else /* not F_CHSIZE */
+# ifdef F_FREESP
+
+/* By William Kucharski <kucharsk@netcom.com>. */
+
+# include <sys/stat.h>
+# include <errno.h>
+
+int
+ftruncate (int fd, off_t length)
+{
+ struct flock fl;
+ struct stat filebuf;
+
+ if (fstat (fd, &filebuf) < 0)
+ return -1;
+
+ if (filebuf.st_size < length)
+ {
+ /* Extend file length. */
+ if (lseek (fd, (length - 1), SEEK_SET) < 0)
+ return -1;
+
+ /* Write a "0" byte. */
+ if (write (fd, "", 1) != 1)
+ return -1;
+ }
+ else
+ {
+
+ /* Truncate length. */
+
+ fl.l_whence = 0;
+ fl.l_len = 0;
+ fl.l_start = length;
+ fl.l_type = F_WRLCK; /* write lock on file space */
+
+ /* This relies on the *undocumented* F_FREESP argument to fcntl,
+ which truncates the file so that it ends at the position
+ indicated by fl.l_start. Will minor miracles never cease? */
+
+ if (fcntl (fd, F_FREESP, &fl) < 0)
+ return -1;
+ }
+
+ return 0;
+}
+
+# else /* not F_CHSIZE nor F_FREESP */
+# if HAVE_CHSIZE /* native Windows, e.g. mingw */
+
+int
+ftruncate (int fd, off_t length)
+{
+ return chsize (fd, length);
+}
+
+# else /* not F_CHSIZE nor F_FREESP nor HAVE_CHSIZE */
+
+# include <errno.h>
+
+int
+ftruncate (int fd, off_t length)
+{
+ errno = EIO;
+ return -1;
+}
+
+# endif /* not HAVE_CHSIZE */
+# endif /* not F_FREESP */
+#endif /* not F_CHSIZE */
diff --git a/lib/fts-cycle.c b/lib/fts-cycle.c
new file mode 100644
index 0000000..669db58
--- /dev/null
+++ b/lib/fts-cycle.c
@@ -0,0 +1,161 @@
+/* Detect cycles in file tree walks.
+
+ Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+ Written by Jim Meyering.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include "cycle-check.h"
+#include "hash.h"
+
+/* Use each of these to map a device/inode pair to an FTSENT. */
+struct Active_dir
+{
+ dev_t dev;
+ ino_t ino;
+ FTSENT *fts_ent;
+};
+
+static bool
+AD_compare (void const *x, void const *y)
+{
+ struct Active_dir const *ax = x;
+ struct Active_dir const *ay = y;
+ return ax->ino == ay->ino
+ && ax->dev == ay->dev;
+}
+
+static size_t
+AD_hash (void const *x, size_t table_size)
+{
+ struct Active_dir const *ax = x;
+ return (uintmax_t) ax->ino % table_size;
+}
+
+/* Set up the cycle-detection machinery. */
+
+static bool
+setup_dir (FTS *fts)
+{
+ if (fts->fts_options & (FTS_TIGHT_CYCLE_CHECK | FTS_LOGICAL))
+ {
+ enum { HT_INITIAL_SIZE = 31 };
+ fts->fts_cycle.ht = hash_initialize (HT_INITIAL_SIZE, NULL, AD_hash,
+ AD_compare, free);
+ if (! fts->fts_cycle.ht)
+ return false;
+ }
+ else
+ {
+ fts->fts_cycle.state = malloc (sizeof *fts->fts_cycle.state);
+ if (! fts->fts_cycle.state)
+ return false;
+ cycle_check_init (fts->fts_cycle.state);
+ }
+
+ return true;
+}
+
+/* Enter a directory during a file tree walk. */
+
+static bool
+enter_dir (FTS *fts, FTSENT *ent)
+{
+ if (fts->fts_options & (FTS_TIGHT_CYCLE_CHECK | FTS_LOGICAL))
+ {
+ struct stat const *st = ent->fts_statp;
+ struct Active_dir *ad = malloc (sizeof *ad);
+ struct Active_dir *ad_from_table;
+
+ if (!ad)
+ return false;
+
+ ad->dev = st->st_dev;
+ ad->ino = st->st_ino;
+ ad->fts_ent = ent;
+
+ /* See if we've already encountered this directory.
+ This can happen when following symlinks as well as
+ with a corrupted directory hierarchy. */
+ ad_from_table = hash_insert (fts->fts_cycle.ht, ad);
+
+ if (ad_from_table != ad)
+ {
+ free (ad);
+ if (!ad_from_table)
+ return false;
+
+ /* There was an entry with matching dev/inode already in the table.
+ Record the fact that we've found a cycle. */
+ ent->fts_cycle = ad_from_table->fts_ent;
+ ent->fts_info = FTS_DC;
+ }
+ }
+ else
+ {
+ if (cycle_check (fts->fts_cycle.state, ent->fts_statp))
+ {
+ /* FIXME: setting fts_cycle like this isn't proper.
+ To do what the documentation requires, we'd have to
+ go around the cycle again and find the right entry.
+ But no callers in coreutils use the fts_cycle member. */
+ ent->fts_cycle = ent;
+ ent->fts_info = FTS_DC;
+ }
+ }
+
+ return true;
+}
+
+/* Leave a directory during a file tree walk. */
+
+static void
+leave_dir (FTS *fts, FTSENT *ent)
+{
+ struct stat const *st = ent->fts_statp;
+ if (fts->fts_options & (FTS_TIGHT_CYCLE_CHECK | FTS_LOGICAL))
+ {
+ struct Active_dir obj;
+ void *found;
+ obj.dev = st->st_dev;
+ obj.ino = st->st_ino;
+ found = hash_delete (fts->fts_cycle.ht, &obj);
+ if (!found)
+ abort ();
+ free (found);
+ }
+ else
+ {
+ FTSENT *parent = ent->fts_parent;
+ if (parent != NULL && 0 <= parent->fts_level)
+ CYCLE_CHECK_REFLECT_CHDIR_UP (fts->fts_cycle.state,
+ *(parent->fts_statp), *st);
+ }
+}
+
+/* Free any memory used for cycle detection. */
+
+static void
+free_dir (FTS *sp)
+{
+ if (sp->fts_options & (FTS_TIGHT_CYCLE_CHECK | FTS_LOGICAL))
+ {
+ if (sp->fts_cycle.ht)
+ hash_free (sp->fts_cycle.ht);
+ }
+ else
+ free (sp->fts_cycle.state);
+}
diff --git a/lib/fts.c b/lib/fts.c
new file mode 100644
index 0000000..1b5384b
--- /dev/null
+++ b/lib/fts.c
@@ -0,0 +1,1712 @@
+/* Traverse a file hierarchy.
+
+ Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/*-
+ * Copyright (c) 1990, 1993, 1994
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <config.h>
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)fts.c 8.6 (Berkeley) 8/14/94";
+#endif /* LIBC_SCCS and not lint */
+
+#include "fts_.h"
+
+#if HAVE_SYS_PARAM_H || defined _LIBC
+# include <sys/param.h>
+#endif
+#ifdef _LIBC
+# include <include/sys/stat.h>
+#else
+# include <sys/stat.h>
+#endif
+#include <fcntl.h>
+#include <errno.h>
+#include "dirfd.h"
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#if ! _LIBC
+# include "fcntl--.h"
+# include "lstat.h"
+# include "openat.h"
+# include "unistd--.h"
+# include "same-inode.h"
+#endif
+
+#include <dirent.h>
+#ifndef _D_EXACT_NAMLEN
+# define _D_EXACT_NAMLEN(dirent) strlen ((dirent)->d_name)
+#endif
+
+#if HAVE_STRUCT_DIRENT_D_TYPE
+/* True if the type of the directory entry D is known. */
+# define DT_IS_KNOWN(d) ((d)->d_type != DT_UNKNOWN)
+/* True if the type of the directory entry D must be T. */
+# define DT_MUST_BE(d, t) ((d)->d_type == (t))
+#else
+# define DT_IS_KNOWN(d) false
+# define DT_MUST_BE(d, t) false
+#endif
+
+enum Fts_stat
+{
+ FTS_NO_STAT_REQUIRED = 1,
+ FTS_STAT_REQUIRED = 2
+};
+
+#ifdef _LIBC
+# undef close
+# define close __close
+# undef closedir
+# define closedir __closedir
+# undef fchdir
+# define fchdir __fchdir
+# undef open
+# define open __open
+# undef opendir
+# define opendir __opendir
+# undef readdir
+# define readdir __readdir
+#else
+# undef internal_function
+# define internal_function /* empty */
+#endif
+
+#ifndef __set_errno
+# define __set_errno(Val) errno = (Val)
+#endif
+
+#ifndef __attribute__
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
+# define __attribute__(x) /* empty */
+# endif
+#endif
+
+#ifndef ATTRIBUTE_UNUSED
+# define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+#endif
+
+/* If this host provides the openat function, then we can avoid
+ attempting to open "." in some initialization code below. */
+#ifdef HAVE_OPENAT
+# define HAVE_OPENAT_SUPPORT 1
+#else
+# define HAVE_OPENAT_SUPPORT 0
+#endif
+
+#ifdef NDEBUG
+# define fts_assert(expr) ((void) 0)
+#else
+# define fts_assert(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ abort (); \
+ } \
+ while (false)
+#endif
+
+static FTSENT *fts_alloc (FTS *, const char *, size_t) internal_function;
+static FTSENT *fts_build (FTS *, int) internal_function;
+static void fts_lfree (FTSENT *) internal_function;
+static void fts_load (FTS *, FTSENT *) internal_function;
+static size_t fts_maxarglen (char * const *) internal_function;
+static void fts_padjust (FTS *, FTSENT *) internal_function;
+static bool fts_palloc (FTS *, size_t) internal_function;
+static FTSENT *fts_sort (FTS *, FTSENT *, size_t) internal_function;
+static unsigned short int fts_stat (FTS *, FTSENT *, bool) internal_function;
+static int fts_safe_changedir (FTS *, FTSENT *, int, const char *)
+ internal_function;
+
+#if GNULIB_FTS
+# include "fts-cycle.c"
+#else
+static bool enter_dir (FTS *fts, FTSENT *ent) { return true; }
+static void leave_dir (FTS *fts, FTSENT *ent) {}
+static bool setup_dir (FTS *fts) { return true; }
+static void free_dir (FTS *fts) {}
+#endif
+
+#ifndef MAX
+# define MAX(a,b) ((a) > (b) ? (a) : (b))
+#endif
+
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+
+#ifndef O_DIRECTORY
+# define O_DIRECTORY 0
+#endif
+
+#define ISDOT(a) (a[0] == '.' && (!a[1] || (a[1] == '.' && !a[2])))
+#define STREQ(a, b) (strcmp ((a), (b)) == 0)
+
+#define CLR(opt) (sp->fts_options &= ~(opt))
+#define ISSET(opt) (sp->fts_options & (opt))
+#define SET(opt) (sp->fts_options |= (opt))
+
+/* FIXME: make this a function */
+#define RESTORE_INITIAL_CWD(sp) \
+ (fd_ring_clear (&((sp)->fts_fd_ring)), \
+ FCHDIR ((sp), (ISSET (FTS_CWDFD) ? AT_FDCWD : (sp)->fts_rfd)))
+
+/* FIXME: FTS_NOCHDIR is now misnamed.
+ Call it FTS_USE_FULL_RELATIVE_FILE_NAMES instead. */
+#define FCHDIR(sp, fd) \
+ (!ISSET(FTS_NOCHDIR) && (ISSET(FTS_CWDFD) \
+ ? (cwd_advance_fd ((sp), (fd), true), 0) \
+ : fchdir (fd)))
+
+
+/* fts_build flags */
+/* FIXME: make this an enum */
+#define BCHILD 1 /* fts_children */
+#define BNAMES 2 /* fts_children, names only */
+#define BREAD 3 /* fts_read */
+
+#if FTS_DEBUG
+# include <inttypes.h>
+# include <stdint.h>
+# include <stdio.h>
+# include "getcwdat.h"
+bool fts_debug = false;
+# define Dprintf(x) do { if (fts_debug) printf x; } while (false)
+#else
+# define Dprintf(x)
+# define fd_ring_check(x)
+# define fd_ring_print(a, b, c)
+#endif
+
+#define LEAVE_DIR(Fts, Ent, Tag) \
+ do \
+ { \
+ Dprintf ((" %s-leaving: %s\n", Tag, (Ent)->fts_path)); \
+ leave_dir (Fts, Ent); \
+ fd_ring_check (Fts); \
+ } \
+ while (false)
+
+static void
+fd_ring_clear (I_ring *fd_ring)
+{
+ while ( ! i_ring_empty (fd_ring))
+ {
+ int fd = i_ring_pop (fd_ring);
+ if (0 <= fd)
+ close (fd);
+ }
+}
+
+/* Overload the fts_statp->st_size member (otherwise unused, when
+ fts_info is FTS_NSOK) to indicate whether fts_read should stat
+ this entry or not. */
+static void
+fts_set_stat_required (FTSENT *p, bool required)
+{
+ fts_assert (p->fts_info == FTS_NSOK);
+ p->fts_statp->st_size = (required
+ ? FTS_STAT_REQUIRED
+ : FTS_NO_STAT_REQUIRED);
+}
+
+/* file-descriptor-relative opendir. */
+/* FIXME: if others need this function, move it into lib/openat.c */
+static inline DIR *
+internal_function
+opendirat (int fd, char const *dir)
+{
+ int new_fd = openat (fd, dir, O_RDONLY);
+ DIR *dirp;
+
+ if (new_fd < 0)
+ return NULL;
+ dirp = fdopendir (new_fd);
+ if (dirp == NULL)
+ {
+ int saved_errno = errno;
+ close (new_fd);
+ errno = saved_errno;
+ }
+ return dirp;
+}
+
+/* Virtual fchdir. Advance SP's working directory file descriptor,
+ SP->fts_cwd_fd, to FD, and push the previous value onto the fd_ring.
+ CHDIR_DOWN_ONE is true if FD corresponds to an entry in the directory
+ open on sp->fts_cwd_fd; i.e., to move the working directory one level
+ down. */
+static void
+internal_function
+cwd_advance_fd (FTS *sp, int fd, bool chdir_down_one)
+{
+ int old = sp->fts_cwd_fd;
+ fts_assert (old != fd || old == AT_FDCWD);
+
+ if (chdir_down_one)
+ {
+ /* Push "old" onto the ring.
+ If the displaced file descriptor is non-negative, close it. */
+ int prev_fd_in_slot = i_ring_push (&sp->fts_fd_ring, old);
+ fd_ring_print (sp, stderr, "post-push");
+ if (0 <= prev_fd_in_slot)
+ close (prev_fd_in_slot); /* ignore any close failure */
+ }
+ else if ( ! ISSET (FTS_NOCHDIR))
+ {
+ if (0 <= old)
+ close (old); /* ignore any close failure */
+ }
+
+ sp->fts_cwd_fd = fd;
+}
+
+/* Open the directory DIR if possible, and return a file
+ descriptor. Return -1 and set errno on failure. It doesn't matter
+ whether the file descriptor has read or write access. */
+
+static inline int
+internal_function
+diropen (FTS const *sp, char const *dir)
+{
+ int open_flags = (O_RDONLY | O_DIRECTORY | O_NOCTTY | O_NONBLOCK
+ | (ISSET (FTS_PHYSICAL) ? O_NOFOLLOW : 0));
+
+ return (ISSET (FTS_CWDFD)
+ ? openat (sp->fts_cwd_fd, dir, open_flags)
+ : open (dir, open_flags));
+}
+
+FTS *
+fts_open (char * const *argv,
+ register int options,
+ int (*compar) (FTSENT const **, FTSENT const **))
+{
+ register FTS *sp;
+ register FTSENT *p, *root;
+ register size_t nitems;
+ FTSENT *parent = NULL;
+ FTSENT *tmp = NULL; /* pacify gcc */
+ size_t len;
+ bool defer_stat;
+
+ /* Options check. */
+ if (options & ~FTS_OPTIONMASK) {
+ __set_errno (EINVAL);
+ return (NULL);
+ }
+ if ((options & FTS_NOCHDIR) && (options & FTS_CWDFD)) {
+ __set_errno (EINVAL);
+ return (NULL);
+ }
+ if ( ! (options & (FTS_LOGICAL | FTS_PHYSICAL))) {
+ __set_errno (EINVAL);
+ return (NULL);
+ }
+
+ /* Allocate/initialize the stream */
+ if ((sp = malloc(sizeof(FTS))) == NULL)
+ return (NULL);
+ memset(sp, 0, sizeof(FTS));
+ sp->fts_compar = compar;
+ sp->fts_options = options;
+
+ /* Logical walks turn on NOCHDIR; symbolic links are too hard. */
+ if (ISSET(FTS_LOGICAL)) {
+ SET(FTS_NOCHDIR);
+ CLR(FTS_CWDFD);
+ }
+
+ /* Initialize fts_cwd_fd. */
+ sp->fts_cwd_fd = AT_FDCWD;
+ if ( ISSET(FTS_CWDFD) && ! HAVE_OPENAT_SUPPORT)
+ {
+ /* While it isn't technically necessary to open "." this
+ early, doing it here saves us the trouble of ensuring
+ later (where it'd be messier) that "." can in fact
+ be opened. If not, revert to FTS_NOCHDIR mode. */
+ int fd = open (".", O_RDONLY);
+ if (fd < 0)
+ {
+ /* Even if `.' is unreadable, don't revert to FTS_NOCHDIR mode
+ on systems like Linux+PROC_FS, where our openat emulation
+ is good enough. Note: on a system that emulates
+ openat via /proc, this technique can still fail, but
+ only in extreme conditions, e.g., when the working
+ directory cannot be saved (i.e. save_cwd fails) --
+ and that happens on Linux only when "." is unreadable
+ and the CWD would be longer than PATH_MAX.
+ FIXME: once Linux kernel openat support is well established,
+ replace the above open call and this entire if/else block
+ with the body of the if-block below. */
+ if ( openat_needs_fchdir ())
+ {
+ SET(FTS_NOCHDIR);
+ CLR(FTS_CWDFD);
+ }
+ }
+ else
+ {
+ close (fd);
+ }
+ }
+
+ /*
+ * Start out with 1K of file name space, and enough, in any case,
+ * to hold the user's file names.
+ */
+#ifndef MAXPATHLEN
+# define MAXPATHLEN 1024
+#endif
+ {
+ size_t maxarglen = fts_maxarglen(argv);
+ if (! fts_palloc(sp, MAX(maxarglen, MAXPATHLEN)))
+ goto mem1;
+ }
+
+ /* Allocate/initialize root's parent. */
+ if (*argv != NULL) {
+ if ((parent = fts_alloc(sp, "", 0)) == NULL)
+ goto mem2;
+ parent->fts_level = FTS_ROOTPARENTLEVEL;
+ }
+
+ /* The classic fts implementation would call fts_stat with
+ a new entry for each iteration of the loop below.
+ If the comparison function is not specified or if the
+ FTS_DEFER_STAT option is in effect, don't stat any entry
+ in this loop. This is an attempt to minimize the interval
+ between the initial stat/lstat/fstatat and the point at which
+ a directory argument is first opened. This matters for any
+ directory command line argument that resides on a file system
+ without genuine i-nodes. If you specify FTS_DEFER_STAT along
+ with a comparison function, that function must not access any
+ data via the fts_statp pointer. */
+ defer_stat = (compar == NULL || ISSET(FTS_DEFER_STAT));
+
+ /* Allocate/initialize root(s). */
+ for (root = NULL, nitems = 0; *argv != NULL; ++argv, ++nitems) {
+ /* Don't allow zero-length file names. */
+ if ((len = strlen(*argv)) == 0) {
+ __set_errno (ENOENT);
+ goto mem3;
+ }
+
+ if ((p = fts_alloc(sp, *argv, len)) == NULL)
+ goto mem3;
+ p->fts_level = FTS_ROOTLEVEL;
+ p->fts_parent = parent;
+ p->fts_accpath = p->fts_name;
+ /* Even when defer_stat is true, be sure to stat the first
+ command line argument, since fts_read (at least with
+ FTS_XDEV) requires that. */
+ if (defer_stat && root != NULL) {
+ p->fts_info = FTS_NSOK;
+ fts_set_stat_required(p, true);
+ } else {
+ p->fts_info = fts_stat(sp, p, false);
+ }
+
+ /*
+ * If comparison routine supplied, traverse in sorted
+ * order; otherwise traverse in the order specified.
+ */
+ if (compar) {
+ p->fts_link = root;
+ root = p;
+ } else {
+ p->fts_link = NULL;
+ if (root == NULL)
+ tmp = root = p;
+ else {
+ tmp->fts_link = p;
+ tmp = p;
+ }
+ }
+ }
+ if (compar && nitems > 1)
+ root = fts_sort(sp, root, nitems);
+
+ /*
+ * Allocate a dummy pointer and make fts_read think that we've just
+ * finished the node before the root(s); set p->fts_info to FTS_INIT
+ * so that everything about the "current" node is ignored.
+ */
+ if ((sp->fts_cur = fts_alloc(sp, "", 0)) == NULL)
+ goto mem3;
+ sp->fts_cur->fts_link = root;
+ sp->fts_cur->fts_info = FTS_INIT;
+ if (! setup_dir (sp))
+ goto mem3;
+
+ /*
+ * If using chdir(2), grab a file descriptor pointing to dot to ensure
+ * that we can get back here; this could be avoided for some file names,
+ * but almost certainly not worth the effort. Slashes, symbolic links,
+ * and ".." are all fairly nasty problems. Note, if we can't get the
+ * descriptor we run anyway, just more slowly.
+ */
+ if (!ISSET(FTS_NOCHDIR) && !ISSET(FTS_CWDFD)
+ && (sp->fts_rfd = diropen (sp, ".")) < 0)
+ SET(FTS_NOCHDIR);
+
+ i_ring_init (&sp->fts_fd_ring, -1);
+ return (sp);
+
+mem3: fts_lfree(root);
+ free(parent);
+mem2: free(sp->fts_path);
+mem1: free(sp);
+ return (NULL);
+}
+
+static void
+internal_function
+fts_load (FTS *sp, register FTSENT *p)
+{
+ register size_t len;
+ register char *cp;
+
+ /*
+ * Load the stream structure for the next traversal. Since we don't
+ * actually enter the directory until after the preorder visit, set
+ * the fts_accpath field specially so the chdir gets done to the right
+ * place and the user can access the first node. From fts_open it's
+ * known that the file name will fit.
+ */
+ len = p->fts_pathlen = p->fts_namelen;
+ memmove(sp->fts_path, p->fts_name, len + 1);
+ if ((cp = strrchr(p->fts_name, '/')) && (cp != p->fts_name || cp[1])) {
+ len = strlen(++cp);
+ memmove(p->fts_name, cp, len + 1);
+ p->fts_namelen = len;
+ }
+ p->fts_accpath = p->fts_path = sp->fts_path;
+}
+
+int
+fts_close (FTS *sp)
+{
+ register FTSENT *freep, *p;
+ int saved_errno = 0;
+
+ /*
+ * This still works if we haven't read anything -- the dummy structure
+ * points to the root list, so we step through to the end of the root
+ * list which has a valid parent pointer.
+ */
+ if (sp->fts_cur) {
+ for (p = sp->fts_cur; p->fts_level >= FTS_ROOTLEVEL;) {
+ freep = p;
+ p = p->fts_link != NULL ? p->fts_link : p->fts_parent;
+ free(freep);
+ }
+ free(p);
+ }
+
+ /* Free up child linked list, sort array, file name buffer. */
+ if (sp->fts_child)
+ fts_lfree(sp->fts_child);
+ free(sp->fts_array);
+ free(sp->fts_path);
+
+ if (ISSET(FTS_CWDFD))
+ {
+ if (0 <= sp->fts_cwd_fd)
+ close (sp->fts_cwd_fd);
+ }
+ else if (!ISSET(FTS_NOCHDIR))
+ {
+ /* Return to original directory, save errno if necessary. */
+ if (fchdir(sp->fts_rfd))
+ saved_errno = errno;
+ close(sp->fts_rfd);
+ }
+
+ fd_ring_clear (&sp->fts_fd_ring);
+ free_dir (sp);
+
+ /* Free up the stream pointer. */
+ free(sp);
+
+ /* Set errno and return. */
+ if (saved_errno) {
+ __set_errno (saved_errno);
+ return (-1);
+ }
+
+ return (0);
+}
+
+/*
+ * Special case of "/" at the end of the file name so that slashes aren't
+ * appended which would cause file names to be written as "....//foo".
+ */
+#define NAPPEND(p) \
+ (p->fts_path[p->fts_pathlen - 1] == '/' \
+ ? p->fts_pathlen - 1 : p->fts_pathlen)
+
+FTSENT *
+fts_read (register FTS *sp)
+{
+ register FTSENT *p, *tmp;
+ register unsigned short int instr;
+ register char *t;
+
+ /* If finished or unrecoverable error, return NULL. */
+ if (sp->fts_cur == NULL || ISSET(FTS_STOP))
+ return (NULL);
+
+ /* Set current node pointer. */
+ p = sp->fts_cur;
+
+ /* Save and zero out user instructions. */
+ instr = p->fts_instr;
+ p->fts_instr = FTS_NOINSTR;
+
+ /* Any type of file may be re-visited; re-stat and re-turn. */
+ if (instr == FTS_AGAIN) {
+ p->fts_info = fts_stat(sp, p, false);
+ return (p);
+ }
+ Dprintf (("fts_read: p=%s\n",
+ p->fts_info == FTS_INIT ? "" : p->fts_path));
+
+ /*
+ * Following a symlink -- SLNONE test allows application to see
+ * SLNONE and recover. If indirecting through a symlink, have
+ * keep a pointer to current location. If unable to get that
+ * pointer, follow fails.
+ */
+ if (instr == FTS_FOLLOW &&
+ (p->fts_info == FTS_SL || p->fts_info == FTS_SLNONE)) {
+ p->fts_info = fts_stat(sp, p, true);
+ if (p->fts_info == FTS_D && !ISSET(FTS_NOCHDIR)) {
+ if ((p->fts_symfd = diropen (sp, ".")) < 0) {
+ p->fts_errno = errno;
+ p->fts_info = FTS_ERR;
+ } else
+ p->fts_flags |= FTS_SYMFOLLOW;
+ }
+ goto check_for_dir;
+ }
+
+ /* Directory in pre-order. */
+ if (p->fts_info == FTS_D) {
+ /* If skipped or crossed mount point, do post-order visit. */
+ if (instr == FTS_SKIP ||
+ (ISSET(FTS_XDEV) && p->fts_statp->st_dev != sp->fts_dev)) {
+ if (p->fts_flags & FTS_SYMFOLLOW)
+ (void)close(p->fts_symfd);
+ if (sp->fts_child) {
+ fts_lfree(sp->fts_child);
+ sp->fts_child = NULL;
+ }
+ p->fts_info = FTS_DP;
+ LEAVE_DIR (sp, p, "1");
+ return (p);
+ }
+
+ /* Rebuild if only read the names and now traversing. */
+ if (sp->fts_child != NULL && ISSET(FTS_NAMEONLY)) {
+ CLR(FTS_NAMEONLY);
+ fts_lfree(sp->fts_child);
+ sp->fts_child = NULL;
+ }
+
+ /*
+ * Cd to the subdirectory.
+ *
+ * If have already read and now fail to chdir, whack the list
+ * to make the names come out right, and set the parent errno
+ * so the application will eventually get an error condition.
+ * Set the FTS_DONTCHDIR flag so that when we logically change
+ * directories back to the parent we don't do a chdir.
+ *
+ * If haven't read do so. If the read fails, fts_build sets
+ * FTS_STOP or the fts_info field of the node.
+ */
+ if (sp->fts_child != NULL) {
+ if (fts_safe_changedir(sp, p, -1, p->fts_accpath)) {
+ p->fts_errno = errno;
+ p->fts_flags |= FTS_DONTCHDIR;
+ for (p = sp->fts_child; p != NULL;
+ p = p->fts_link)
+ p->fts_accpath =
+ p->fts_parent->fts_accpath;
+ }
+ } else if ((sp->fts_child = fts_build(sp, BREAD)) == NULL) {
+ if (ISSET(FTS_STOP))
+ return (NULL);
+ /* If fts_build's call to fts_safe_changedir failed
+ because it was not able to fchdir into a
+ subdirectory, tell the caller. */
+ if (p->fts_errno)
+ p->fts_info = FTS_ERR;
+ LEAVE_DIR (sp, p, "2");
+ return (p);
+ }
+ p = sp->fts_child;
+ sp->fts_child = NULL;
+ goto name;
+ }
+
+ /* Move to the next node on this level. */
+next: tmp = p;
+ if ((p = p->fts_link) != NULL) {
+ sp->fts_cur = p;
+ free(tmp);
+
+ /*
+ * If reached the top, return to the original directory (or
+ * the root of the tree), and load the file names for the next
+ * root.
+ */
+ if (p->fts_level == FTS_ROOTLEVEL) {
+ if (RESTORE_INITIAL_CWD(sp)) {
+ SET(FTS_STOP);
+ return (NULL);
+ }
+ fts_load(sp, p);
+ goto check_for_dir;
+ }
+
+ /*
+ * User may have called fts_set on the node. If skipped,
+ * ignore. If followed, get a file descriptor so we can
+ * get back if necessary.
+ */
+ if (p->fts_instr == FTS_SKIP)
+ goto next;
+ if (p->fts_instr == FTS_FOLLOW) {
+ p->fts_info = fts_stat(sp, p, true);
+ if (p->fts_info == FTS_D && !ISSET(FTS_NOCHDIR)) {
+ if ((p->fts_symfd = diropen (sp, ".")) < 0) {
+ p->fts_errno = errno;
+ p->fts_info = FTS_ERR;
+ } else
+ p->fts_flags |= FTS_SYMFOLLOW;
+ }
+ p->fts_instr = FTS_NOINSTR;
+ }
+
+name: t = sp->fts_path + NAPPEND(p->fts_parent);
+ *t++ = '/';
+ memmove(t, p->fts_name, p->fts_namelen + 1);
+check_for_dir:
+ sp->fts_cur = p;
+ if (p->fts_info == FTS_NSOK)
+ {
+ if (p->fts_statp->st_size == FTS_STAT_REQUIRED)
+ p->fts_info = fts_stat(sp, p, false);
+ else
+ fts_assert (p->fts_statp->st_size == FTS_NO_STAT_REQUIRED);
+ }
+
+ if (p->fts_info == FTS_D)
+ {
+ /* Now that P->fts_statp is guaranteed to be valid,
+ if this is a command-line directory, record its
+ device number, to be used for FTS_XDEV. */
+ if (p->fts_level == FTS_ROOTLEVEL)
+ sp->fts_dev = p->fts_statp->st_dev;
+ Dprintf ((" entering: %s\n", p->fts_path));
+ if (! enter_dir (sp, p))
+ {
+ __set_errno (ENOMEM);
+ return NULL;
+ }
+ }
+ return p;
+ }
+
+ /* Move up to the parent node. */
+ p = tmp->fts_parent;
+ sp->fts_cur = p;
+ free(tmp);
+
+ if (p->fts_level == FTS_ROOTPARENTLEVEL) {
+ /*
+ * Done; free everything up and set errno to 0 so the user
+ * can distinguish between error and EOF.
+ */
+ free(p);
+ __set_errno (0);
+ return (sp->fts_cur = NULL);
+ }
+
+ fts_assert (p->fts_info != FTS_NSOK);
+
+ /* NUL terminate the file name. */
+ sp->fts_path[p->fts_pathlen] = '\0';
+
+ /*
+ * Return to the parent directory. If at a root node, restore
+ * the initial working directory. If we came through a symlink,
+ * go back through the file descriptor. Otherwise, move up
+ * one level, via "..".
+ */
+ if (p->fts_level == FTS_ROOTLEVEL) {
+ if (RESTORE_INITIAL_CWD(sp)) {
+ p->fts_errno = errno;
+ SET(FTS_STOP);
+ }
+ } else if (p->fts_flags & FTS_SYMFOLLOW) {
+ if (FCHDIR(sp, p->fts_symfd)) {
+ int saved_errno = errno;
+ (void)close(p->fts_symfd);
+ __set_errno (saved_errno);
+ p->fts_errno = errno;
+ SET(FTS_STOP);
+ }
+ (void)close(p->fts_symfd);
+ } else if (!(p->fts_flags & FTS_DONTCHDIR) &&
+ fts_safe_changedir(sp, p->fts_parent, -1, "..")) {
+ p->fts_errno = errno;
+ SET(FTS_STOP);
+ }
+ p->fts_info = p->fts_errno ? FTS_ERR : FTS_DP;
+ if (p->fts_errno == 0)
+ LEAVE_DIR (sp, p, "3");
+ return ISSET(FTS_STOP) ? NULL : p;
+}
+
+/*
+ * Fts_set takes the stream as an argument although it's not used in this
+ * implementation; it would be necessary if anyone wanted to add global
+ * semantics to fts using fts_set. An error return is allowed for similar
+ * reasons.
+ */
+/* ARGSUSED */
+int
+fts_set(FTS *sp ATTRIBUTE_UNUSED, FTSENT *p, int instr)
+{
+ if (instr != 0 && instr != FTS_AGAIN && instr != FTS_FOLLOW &&
+ instr != FTS_NOINSTR && instr != FTS_SKIP) {
+ __set_errno (EINVAL);
+ return (1);
+ }
+ p->fts_instr = instr;
+ return (0);
+}
+
+FTSENT *
+fts_children (register FTS *sp, int instr)
+{
+ register FTSENT *p;
+ int fd;
+
+ if (instr != 0 && instr != FTS_NAMEONLY) {
+ __set_errno (EINVAL);
+ return (NULL);
+ }
+
+ /* Set current node pointer. */
+ p = sp->fts_cur;
+
+ /*
+ * Errno set to 0 so user can distinguish empty directory from
+ * an error.
+ */
+ __set_errno (0);
+
+ /* Fatal errors stop here. */
+ if (ISSET(FTS_STOP))
+ return (NULL);
+
+ /* Return logical hierarchy of user's arguments. */
+ if (p->fts_info == FTS_INIT)
+ return (p->fts_link);
+
+ /*
+ * If not a directory being visited in pre-order, stop here. Could
+ * allow FTS_DNR, assuming the user has fixed the problem, but the
+ * same effect is available with FTS_AGAIN.
+ */
+ if (p->fts_info != FTS_D /* && p->fts_info != FTS_DNR */)
+ return (NULL);
+
+ /* Free up any previous child list. */
+ if (sp->fts_child != NULL)
+ fts_lfree(sp->fts_child);
+
+ if (instr == FTS_NAMEONLY) {
+ SET(FTS_NAMEONLY);
+ instr = BNAMES;
+ } else
+ instr = BCHILD;
+
+ /*
+ * If using chdir on a relative file name and called BEFORE fts_read
+ * does its chdir to the root of a traversal, we can lose -- we need to
+ * chdir into the subdirectory, and we don't know where the current
+ * directory is, so we can't get back so that the upcoming chdir by
+ * fts_read will work.
+ */
+ if (p->fts_level != FTS_ROOTLEVEL || p->fts_accpath[0] == '/' ||
+ ISSET(FTS_NOCHDIR))
+ return (sp->fts_child = fts_build(sp, instr));
+
+ if ((fd = diropen (sp, ".")) < 0)
+ return (sp->fts_child = NULL);
+ sp->fts_child = fts_build(sp, instr);
+ if (ISSET(FTS_CWDFD))
+ {
+ cwd_advance_fd (sp, fd, true);
+ }
+ else
+ {
+ if (fchdir(fd))
+ {
+ int saved_errno = errno;
+ close (fd);
+ __set_errno (saved_errno);
+ return NULL;
+ }
+ close (fd);
+ }
+ return (sp->fts_child);
+}
+
+/*
+ * This is the tricky part -- do not casually change *anything* in here. The
+ * idea is to build the linked list of entries that are used by fts_children
+ * and fts_read. There are lots of special cases.
+ *
+ * The real slowdown in walking the tree is the stat calls. If FTS_NOSTAT is
+ * set and it's a physical walk (so that symbolic links can't be directories),
+ * we can do things quickly. First, if it's a 4.4BSD file system, the type
+ * of the file is in the directory entry. Otherwise, we assume that the number
+ * of subdirectories in a node is equal to the number of links to the parent.
+ * The former skips all stat calls. The latter skips stat calls in any leaf
+ * directories and for any files after the subdirectories in the directory have
+ * been found, cutting the stat calls by about 2/3.
+ */
+static FTSENT *
+internal_function
+fts_build (register FTS *sp, int type)
+{
+ register struct dirent *dp;
+ register FTSENT *p, *head;
+ register size_t nitems;
+ FTSENT *cur, *tail;
+ DIR *dirp;
+ void *oldaddr;
+ int saved_errno;
+ bool descend;
+ bool doadjust;
+ ptrdiff_t level;
+ nlink_t nlinks;
+ bool nostat;
+ size_t len, maxlen, new_len;
+ char *cp;
+
+ /* Set current node pointer. */
+ cur = sp->fts_cur;
+
+ /*
+ * Open the directory for reading. If this fails, we're done.
+ * If being called from fts_read, set the fts_info field.
+ */
+#if defined FTS_WHITEOUT && 0
+ if (ISSET(FTS_WHITEOUT))
+ oflag = DTF_NODUP|DTF_REWIND;
+ else
+ oflag = DTF_HIDEW|DTF_NODUP|DTF_REWIND;
+#else
+# define __opendir2(file, flag) \
+ ( ! ISSET(FTS_NOCHDIR) && ISSET(FTS_CWDFD) \
+ ? opendirat(sp->fts_cwd_fd, file) \
+ : opendir(file))
+#endif
+ if ((dirp = __opendir2(cur->fts_accpath, oflag)) == NULL) {
+ if (type == BREAD) {
+ cur->fts_info = FTS_DNR;
+ cur->fts_errno = errno;
+ }
+ return (NULL);
+ }
+ /* Rather than calling fts_stat for each and every entry encountered
+ in the readdir loop (below), stat each directory only right after
+ opening it. */
+ if (cur->fts_info == FTS_NSOK)
+ cur->fts_info = fts_stat(sp, cur, false);
+
+ /*
+ * Nlinks is the number of possible entries of type directory in the
+ * directory if we're cheating on stat calls, 0 if we're not doing
+ * any stat calls at all, (nlink_t) -1 if we're statting everything.
+ */
+ if (type == BNAMES) {
+ nlinks = 0;
+ /* Be quiet about nostat, GCC. */
+ nostat = false;
+ } else if (ISSET(FTS_NOSTAT) && ISSET(FTS_PHYSICAL)) {
+ nlinks = (cur->fts_statp->st_nlink
+ - (ISSET(FTS_SEEDOT) ? 0 : 2));
+ nostat = true;
+ } else {
+ nlinks = -1;
+ nostat = false;
+ }
+
+ /*
+ * If we're going to need to stat anything or we want to descend
+ * and stay in the directory, chdir. If this fails we keep going,
+ * but set a flag so we don't chdir after the post-order visit.
+ * We won't be able to stat anything, but we can still return the
+ * names themselves. Note, that since fts_read won't be able to
+ * chdir into the directory, it will have to return different file
+ * names than before, i.e. "a/b" instead of "b". Since the node
+ * has already been visited in pre-order, have to wait until the
+ * post-order visit to return the error. There is a special case
+ * here, if there was nothing to stat then it's not an error to
+ * not be able to stat. This is all fairly nasty. If a program
+ * needed sorted entries or stat information, they had better be
+ * checking FTS_NS on the returned nodes.
+ */
+ if (nlinks || type == BREAD) {
+ int dir_fd = dirfd(dirp);
+ if (ISSET(FTS_CWDFD) && 0 <= dir_fd)
+ dir_fd = dup (dir_fd);
+ if (dir_fd < 0 || fts_safe_changedir(sp, cur, dir_fd, NULL)) {
+ if (nlinks && type == BREAD)
+ cur->fts_errno = errno;
+ cur->fts_flags |= FTS_DONTCHDIR;
+ descend = false;
+ closedir(dirp);
+ if (ISSET(FTS_CWDFD) && 0 <= dir_fd)
+ close (dir_fd);
+ dirp = NULL;
+ } else
+ descend = true;
+ } else
+ descend = false;
+
+ /*
+ * Figure out the max file name length that can be stored in the
+ * current buffer -- the inner loop allocates more space as necessary.
+ * We really wouldn't have to do the maxlen calculations here, we
+ * could do them in fts_read before returning the name, but it's a
+ * lot easier here since the length is part of the dirent structure.
+ *
+ * If not changing directories set a pointer so that can just append
+ * each new component into the file name.
+ */
+ len = NAPPEND(cur);
+ if (ISSET(FTS_NOCHDIR)) {
+ cp = sp->fts_path + len;
+ *cp++ = '/';
+ } else {
+ /* GCC, you're too verbose. */
+ cp = NULL;
+ }
+ len++;
+ maxlen = sp->fts_pathlen - len;
+
+ level = cur->fts_level + 1;
+
+ /* Read the directory, attaching each entry to the `link' pointer. */
+ doadjust = false;
+ for (head = tail = NULL, nitems = 0; dirp && (dp = readdir(dirp));) {
+ bool is_dir;
+
+ if (!ISSET(FTS_SEEDOT) && ISDOT(dp->d_name))
+ continue;
+
+ if ((p = fts_alloc (sp, dp->d_name,
+ _D_EXACT_NAMLEN (dp))) == NULL)
+ goto mem1;
+ if (_D_EXACT_NAMLEN (dp) >= maxlen) {
+ /* include space for NUL */
+ oldaddr = sp->fts_path;
+ if (! fts_palloc(sp, _D_EXACT_NAMLEN (dp) + len + 1)) {
+ /*
+ * No more memory. Save
+ * errno, free up the current structure and the
+ * structures already allocated.
+ */
+mem1: saved_errno = errno;
+ free(p);
+ fts_lfree(head);
+ closedir(dirp);
+ cur->fts_info = FTS_ERR;
+ SET(FTS_STOP);
+ __set_errno (saved_errno);
+ return (NULL);
+ }
+ /* Did realloc() change the pointer? */
+ if (oldaddr != sp->fts_path) {
+ doadjust = true;
+ if (ISSET(FTS_NOCHDIR))
+ cp = sp->fts_path + len;
+ }
+ maxlen = sp->fts_pathlen - len;
+ }
+
+ new_len = len + _D_EXACT_NAMLEN (dp);
+ if (new_len < len) {
+ /*
+ * In the unlikely even that we would end up
+ * with a file name longer than SIZE_MAX, free up
+ * the current structure and the structures already
+ * allocated, then error out with ENAMETOOLONG.
+ */
+ free(p);
+ fts_lfree(head);
+ closedir(dirp);
+ cur->fts_info = FTS_ERR;
+ SET(FTS_STOP);
+ __set_errno (ENAMETOOLONG);
+ return (NULL);
+ }
+ p->fts_level = level;
+ p->fts_parent = sp->fts_cur;
+ p->fts_pathlen = new_len;
+
+#if defined FTS_WHITEOUT && 0
+ if (dp->d_type == DT_WHT)
+ p->fts_flags |= FTS_ISW;
+#endif
+
+ /* Build a file name for fts_stat to stat. */
+ if (ISSET(FTS_NOCHDIR)) {
+ p->fts_accpath = p->fts_path;
+ memmove(cp, p->fts_name, p->fts_namelen + 1);
+ } else
+ p->fts_accpath = p->fts_name;
+
+ if (sp->fts_compar == NULL || ISSET(FTS_DEFER_STAT)) {
+ /* Record what fts_read will have to do with this
+ entry. In many cases, it will simply fts_stat it,
+ but we can take advantage of any d_type information
+ to optimize away the unnecessary stat calls. I.e.,
+ if FTS_NOSTAT is in effect and we're not following
+ symlinks (FTS_PHYSICAL) and d_type indicates this
+ is *not* a directory, then we won't have to stat it
+ at all. If it *is* a directory, then (currently)
+ we stat it regardless, in order to get device and
+ inode numbers. Some day we might optimize that
+ away, too, for directories where d_ino is known to
+ be valid. */
+ bool skip_stat = (ISSET(FTS_PHYSICAL)
+ && ISSET(FTS_NOSTAT)
+ && DT_IS_KNOWN(dp)
+ && ! DT_MUST_BE(dp, DT_DIR));
+ p->fts_info = FTS_NSOK;
+ fts_set_stat_required(p, !skip_stat);
+ is_dir = (ISSET(FTS_PHYSICAL) && ISSET(FTS_NOSTAT)
+ && DT_MUST_BE(dp, DT_DIR));
+ } else {
+ p->fts_info = fts_stat(sp, p, false);
+ is_dir = (p->fts_info == FTS_D
+ || p->fts_info == FTS_DC
+ || p->fts_info == FTS_DOT);
+ }
+
+ /* Decrement link count if applicable. */
+ if (nlinks > 0 && is_dir)
+ nlinks -= nostat;
+
+ /* We walk in directory order so "ls -f" doesn't get upset. */
+ p->fts_link = NULL;
+ if (head == NULL)
+ head = tail = p;
+ else {
+ tail->fts_link = p;
+ tail = p;
+ }
+ ++nitems;
+ }
+ if (dirp)
+ closedir(dirp);
+
+ /*
+ * If realloc() changed the address of the file name, adjust the
+ * addresses for the rest of the tree and the dir list.
+ */
+ if (doadjust)
+ fts_padjust(sp, head);
+
+ /*
+ * If not changing directories, reset the file name back to original
+ * state.
+ */
+ if (ISSET(FTS_NOCHDIR)) {
+ if (len == sp->fts_pathlen || nitems == 0)
+ --cp;
+ *cp = '\0';
+ }
+
+ /*
+ * If descended after called from fts_children or after called from
+ * fts_read and nothing found, get back. At the root level we use
+ * the saved fd; if one of fts_open()'s arguments is a relative name
+ * to an empty directory, we wind up here with no other way back. If
+ * can't get back, we're done.
+ */
+ if (descend && (type == BCHILD || !nitems) &&
+ (cur->fts_level == FTS_ROOTLEVEL
+ ? RESTORE_INITIAL_CWD(sp)
+ : fts_safe_changedir(sp, cur->fts_parent, -1, ".."))) {
+ cur->fts_info = FTS_ERR;
+ SET(FTS_STOP);
+ fts_lfree(head);
+ return (NULL);
+ }
+
+ /* If didn't find anything, return NULL. */
+ if (!nitems) {
+ if (type == BREAD)
+ cur->fts_info = FTS_DP;
+ fts_lfree(head);
+ return (NULL);
+ }
+
+ /* Sort the entries. */
+ if (sp->fts_compar && nitems > 1)
+ head = fts_sort(sp, head, nitems);
+ return (head);
+}
+
+#if FTS_DEBUG
+
+/* Walk ->fts_parent links starting at E_CURR, until the root of the
+ current hierarchy. There should be a directory with dev/inode
+ matching those of AD. If not, print a lot of diagnostics. */
+static void
+find_matching_ancestor (FTSENT const *e_curr, struct Active_dir const *ad)
+{
+ FTSENT const *ent;
+ for (ent = e_curr; ent->fts_level >= FTS_ROOTLEVEL; ent = ent->fts_parent)
+ {
+ if (ad->ino == ent->fts_statp->st_ino
+ && ad->dev == ent->fts_statp->st_dev)
+ return;
+ }
+ printf ("ERROR: tree dir, %s, not active\n", ad->fts_ent->fts_accpath);
+ printf ("active dirs:\n");
+ for (ent = e_curr;
+ ent->fts_level >= FTS_ROOTLEVEL; ent = ent->fts_parent)
+ printf (" %s(%"PRIuMAX"/%"PRIuMAX") to %s(%"PRIuMAX"/%"PRIuMAX")...\n",
+ ad->fts_ent->fts_accpath,
+ (uintmax_t) ad->dev,
+ (uintmax_t) ad->ino,
+ ent->fts_accpath,
+ (uintmax_t) ent->fts_statp->st_dev,
+ (uintmax_t) ent->fts_statp->st_ino);
+}
+
+void
+fts_cross_check (FTS const *sp)
+{
+ FTSENT const *ent = sp->fts_cur;
+ FTSENT const *t;
+ if ( ! ISSET (FTS_TIGHT_CYCLE_CHECK))
+ return;
+
+ Dprintf (("fts-cross-check cur=%s\n", ent->fts_path));
+ /* Make sure every parent dir is in the tree. */
+ for (t = ent->fts_parent; t->fts_level >= FTS_ROOTLEVEL; t = t->fts_parent)
+ {
+ struct Active_dir ad;
+ ad.ino = t->fts_statp->st_ino;
+ ad.dev = t->fts_statp->st_dev;
+ if ( ! hash_lookup (sp->fts_cycle.ht, &ad))
+ printf ("ERROR: active dir, %s, not in tree\n", t->fts_path);
+ }
+
+ /* Make sure every dir in the tree is an active dir.
+ But ENT is not necessarily a directory. If so, just skip this part. */
+ if (ent->fts_parent->fts_level >= FTS_ROOTLEVEL
+ && (ent->fts_info == FTS_DP
+ || ent->fts_info == FTS_D))
+ {
+ struct Active_dir *ad;
+ for (ad = hash_get_first (sp->fts_cycle.ht); ad != NULL;
+ ad = hash_get_next (sp->fts_cycle.ht, ad))
+ {
+ find_matching_ancestor (ent, ad);
+ }
+ }
+}
+
+static bool
+same_fd (int fd1, int fd2)
+{
+ struct stat sb1, sb2;
+ return (fstat (fd1, &sb1) == 0
+ && fstat (fd2, &sb2) == 0
+ && SAME_INODE (sb1, sb2));
+}
+
+static void
+fd_ring_print (FTS const *sp, FILE *stream, char const *msg)
+{
+ I_ring const *fd_ring = &sp->fts_fd_ring;
+ unsigned int i = fd_ring->fts_front;
+ char *cwd = getcwdat (sp->fts_cwd_fd, NULL, 0);
+ fprintf (stream, "=== %s ========== %s\n", msg, cwd);
+ free (cwd);
+ if (i_ring_empty (fd_ring))
+ return;
+
+ while (true)
+ {
+ int fd = fd_ring->fts_fd_ring[i];
+ if (fd < 0)
+ fprintf (stream, "%d: %d:\n", i, fd);
+ else
+ {
+ char *wd = getcwdat (fd, NULL, 0);
+ fprintf (stream, "%d: %d: %s\n", i, fd, wd);
+ free (wd);
+ }
+ if (i == fd_ring->fts_back)
+ break;
+ i = (i + I_RING_SIZE - 1) % I_RING_SIZE;
+ }
+}
+
+/* Ensure that each file descriptor on the fd_ring matches a
+ parent, grandparent, etc. of the current working directory. */
+static void
+fd_ring_check (FTS const *sp)
+{
+ if (!fts_debug)
+ return;
+
+ /* Make a writable copy. */
+ I_ring fd_w = sp->fts_fd_ring;
+
+ int cwd_fd = sp->fts_cwd_fd;
+ cwd_fd = dup (cwd_fd);
+ char *dot = getcwdat (cwd_fd, NULL, 0);
+ error (0, 0, "===== check ===== cwd: %s", dot);
+ free (dot);
+ while ( ! i_ring_empty (&fd_w))
+ {
+ int fd = i_ring_pop (&fd_w);
+ if (0 <= fd)
+ {
+ int parent_fd = openat (cwd_fd, "..", O_RDONLY);
+ if (parent_fd < 0)
+ {
+ // Warn?
+ break;
+ }
+ if (!same_fd (fd, parent_fd))
+ {
+ char *cwd = getcwdat (fd, NULL, 0);
+ error (0, errno, "ring : %s", cwd);
+ char *c2 = getcwdat (parent_fd, NULL, 0);
+ error (0, errno, "parent: %s", c2);
+ free (cwd);
+ free (c2);
+ fts_assert (0);
+ }
+ close (cwd_fd);
+ cwd_fd = parent_fd;
+ }
+ }
+ close (cwd_fd);
+}
+#endif
+
+static unsigned short int
+internal_function
+fts_stat(FTS *sp, register FTSENT *p, bool follow)
+{
+ struct stat *sbp = p->fts_statp;
+ int saved_errno;
+
+ if (p->fts_level == FTS_ROOTLEVEL && ISSET(FTS_COMFOLLOW))
+ follow = true;
+
+#if defined FTS_WHITEOUT && 0
+ /* check for whiteout */
+ if (p->fts_flags & FTS_ISW) {
+ memset(sbp, '\0', sizeof (*sbp));
+ sbp->st_mode = S_IFWHT;
+ return (FTS_W);
+ }
+#endif
+
+ /*
+ * If doing a logical walk, or application requested FTS_FOLLOW, do
+ * a stat(2). If that fails, check for a non-existent symlink. If
+ * fail, set the errno from the stat call.
+ */
+ if (ISSET(FTS_LOGICAL) || follow) {
+ if (stat(p->fts_accpath, sbp)) {
+ saved_errno = errno;
+ if (errno == ENOENT
+ && lstat(p->fts_accpath, sbp) == 0) {
+ __set_errno (0);
+ return (FTS_SLNONE);
+ }
+ p->fts_errno = saved_errno;
+ goto err;
+ }
+ } else if (fstatat(sp->fts_cwd_fd, p->fts_accpath, sbp,
+ AT_SYMLINK_NOFOLLOW)) {
+ p->fts_errno = errno;
+err: memset(sbp, 0, sizeof(struct stat));
+ return (FTS_NS);
+ }
+
+ if (S_ISDIR(sbp->st_mode)) {
+ if (ISDOT(p->fts_name)) {
+ /* Command-line "." and ".." are real directories. */
+ return (p->fts_level == FTS_ROOTLEVEL ? FTS_D : FTS_DOT);
+ }
+
+#if !GNULIB_FTS
+ {
+ /*
+ * Cycle detection is done by brute force when the directory
+ * is first encountered. If the tree gets deep enough or the
+ * number of symbolic links to directories is high enough,
+ * something faster might be worthwhile.
+ */
+ FTSENT *t;
+
+ for (t = p->fts_parent;
+ t->fts_level >= FTS_ROOTLEVEL; t = t->fts_parent)
+ if (sbp->st_ino == t->fts_statp->st_ino
+ && sbp->st_dev == t->fts_statp->st_dev)
+ {
+ p->fts_cycle = t;
+ return (FTS_DC);
+ }
+ }
+#endif
+
+ return (FTS_D);
+ }
+ if (S_ISLNK(sbp->st_mode))
+ return (FTS_SL);
+ if (S_ISREG(sbp->st_mode))
+ return (FTS_F);
+ return (FTS_DEFAULT);
+}
+
+static int
+fts_compar (void const *a, void const *b)
+{
+ /* Convert A and B to the correct types, to pacify the compiler, and
+ for portability to bizarre hosts where "void const *" and "FTSENT
+ const **" differ in runtime representation. The comparison
+ function cannot modify *a and *b, but there is no compile-time
+ check for this. */
+ FTSENT const **pa = (FTSENT const **) a;
+ FTSENT const **pb = (FTSENT const **) b;
+ return pa[0]->fts_fts->fts_compar (pa, pb);
+}
+
+static FTSENT *
+internal_function
+fts_sort (FTS *sp, FTSENT *head, register size_t nitems)
+{
+ register FTSENT **ap, *p;
+
+ /* On most modern hosts, void * and FTSENT ** have the same
+ run-time representation, and one can convert sp->fts_compar to
+ the type qsort expects without problem. Use the heuristic that
+ this is OK if the two pointer types are the same size, and if
+ converting FTSENT ** to long int is the same as converting
+ FTSENT ** to void * and then to long int. This heuristic isn't
+ valid in general but we don't know of any counterexamples. */
+ FTSENT *dummy;
+ int (*compare) (void const *, void const *) =
+ ((sizeof &dummy == sizeof (void *)
+ && (long int) &dummy == (long int) (void *) &dummy)
+ ? (int (*) (void const *, void const *)) sp->fts_compar
+ : fts_compar);
+
+ /*
+ * Construct an array of pointers to the structures and call qsort(3).
+ * Reassemble the array in the order returned by qsort. If unable to
+ * sort for memory reasons, return the directory entries in their
+ * current order. Allocate enough space for the current needs plus
+ * 40 so don't realloc one entry at a time.
+ */
+ if (nitems > sp->fts_nitems) {
+ struct _ftsent **a;
+
+ sp->fts_nitems = nitems + 40;
+ if (SIZE_MAX / sizeof *a < sp->fts_nitems
+ || ! (a = realloc (sp->fts_array,
+ sp->fts_nitems * sizeof *a))) {
+ free(sp->fts_array);
+ sp->fts_array = NULL;
+ sp->fts_nitems = 0;
+ return (head);
+ }
+ sp->fts_array = a;
+ }
+ for (ap = sp->fts_array, p = head; p; p = p->fts_link)
+ *ap++ = p;
+ qsort((void *)sp->fts_array, nitems, sizeof(FTSENT *), compare);
+ for (head = *(ap = sp->fts_array); --nitems; ++ap)
+ ap[0]->fts_link = ap[1];
+ ap[0]->fts_link = NULL;
+ return (head);
+}
+
+static FTSENT *
+internal_function
+fts_alloc (FTS *sp, const char *name, register size_t namelen)
+{
+ register FTSENT *p;
+ size_t len;
+
+ /*
+ * The file name is a variable length array. Allocate the FTSENT
+ * structure and the file name in one chunk.
+ */
+ len = sizeof(FTSENT) + namelen;
+ if ((p = malloc(len)) == NULL)
+ return (NULL);
+
+ /* Copy the name and guarantee NUL termination. */
+ memmove(p->fts_name, name, namelen);
+ p->fts_name[namelen] = '\0';
+
+ p->fts_namelen = namelen;
+ p->fts_fts = sp;
+ p->fts_path = sp->fts_path;
+ p->fts_errno = 0;
+ p->fts_flags = 0;
+ p->fts_instr = FTS_NOINSTR;
+ p->fts_number = 0;
+ p->fts_pointer = NULL;
+ return (p);
+}
+
+static void
+internal_function
+fts_lfree (register FTSENT *head)
+{
+ register FTSENT *p;
+
+ /* Free a linked list of structures. */
+ while ((p = head)) {
+ head = head->fts_link;
+ free(p);
+ }
+}
+
+/*
+ * Allow essentially unlimited file name lengths; find, rm, ls should
+ * all work on any tree. Most systems will allow creation of file
+ * names much longer than MAXPATHLEN, even though the kernel won't
+ * resolve them. Add the size (not just what's needed) plus 256 bytes
+ * so don't realloc the file name 2 bytes at a time.
+ */
+static bool
+internal_function
+fts_palloc (FTS *sp, size_t more)
+{
+ char *p;
+ size_t new_len = sp->fts_pathlen + more + 256;
+
+ /*
+ * See if fts_pathlen would overflow.
+ */
+ if (new_len < sp->fts_pathlen) {
+ free(sp->fts_path);
+ sp->fts_path = NULL;
+ __set_errno (ENAMETOOLONG);
+ return false;
+ }
+ sp->fts_pathlen = new_len;
+ p = realloc(sp->fts_path, sp->fts_pathlen);
+ if (p == NULL) {
+ free(sp->fts_path);
+ sp->fts_path = NULL;
+ return false;
+ }
+ sp->fts_path = p;
+ return true;
+}
+
+/*
+ * When the file name is realloc'd, have to fix all of the pointers in
+ * structures already returned.
+ */
+static void
+internal_function
+fts_padjust (FTS *sp, FTSENT *head)
+{
+ FTSENT *p;
+ char *addr = sp->fts_path;
+
+#define ADJUST(p) do { \
+ if ((p)->fts_accpath != (p)->fts_name) { \
+ (p)->fts_accpath = \
+ (char *)addr + ((p)->fts_accpath - (p)->fts_path); \
+ } \
+ (p)->fts_path = addr; \
+} while (0)
+ /* Adjust the current set of children. */
+ for (p = sp->fts_child; p; p = p->fts_link)
+ ADJUST(p);
+
+ /* Adjust the rest of the tree, including the current level. */
+ for (p = head; p->fts_level >= FTS_ROOTLEVEL;) {
+ ADJUST(p);
+ p = p->fts_link ? p->fts_link : p->fts_parent;
+ }
+}
+
+static size_t
+internal_function
+fts_maxarglen (char * const *argv)
+{
+ size_t len, max;
+
+ for (max = 0; *argv; ++argv)
+ if ((len = strlen(*argv)) > max)
+ max = len;
+ return (max + 1);
+}
+
+/*
+ * Change to dir specified by fd or file name without getting
+ * tricked by someone changing the world out from underneath us.
+ * Assumes p->fts_statp->st_dev and p->fts_statp->st_ino are filled in.
+ * If FD is non-negative, expect it to be used after this function returns,
+ * and to be closed eventually. So don't pass e.g., `dirfd(dirp)' and then
+ * do closedir(dirp), because that would invalidate the saved FD.
+ * Upon failure, close FD immediately and return nonzero.
+ */
+static int
+internal_function
+fts_safe_changedir (FTS *sp, FTSENT *p, int fd, char const *dir)
+{
+ int ret;
+ bool is_dotdot = dir && STREQ (dir, "..");
+ int newfd;
+
+ /* This clause handles the unusual case in which FTS_NOCHDIR
+ is specified, along with FTS_CWDFD. In that case, there is
+ no need to change even the virtual cwd file descriptor.
+ However, if FD is non-negative, we do close it here. */
+ if (ISSET (FTS_NOCHDIR))
+ {
+ if (ISSET (FTS_CWDFD) && 0 <= fd)
+ close (fd);
+ return 0;
+ }
+
+ if (fd < 0 && is_dotdot && ISSET (FTS_CWDFD))
+ {
+ /* When possible, skip the diropen and subsequent fstat+dev/ino
+ comparison. I.e., when changing to parent directory
+ (chdir ("..")), use a file descriptor from the ring and
+ save the overhead of diropen+fstat, as well as avoiding
+ failure when we lack "x" access to the virtual cwd. */
+ if ( ! i_ring_empty (&sp->fts_fd_ring))
+ {
+ int parent_fd;
+ fd_ring_print (sp, stderr, "pre-pop");
+ parent_fd = i_ring_pop (&sp->fts_fd_ring);
+ is_dotdot = true;
+ if (0 <= parent_fd)
+ {
+ fd = parent_fd;
+ dir = NULL;
+ }
+ }
+ }
+
+ newfd = fd;
+ if (fd < 0 && (newfd = diropen (sp, dir)) < 0)
+ return -1;
+
+ /* The following dev/inode check is necessary if we're doing a
+ `logical' traversal (through symlinks, a la chown -L), if the
+ system lacks O_NOFOLLOW support, or if we're changing to ".."
+ (but not via a popped file descriptor). When changing to the
+ name "..", O_NOFOLLOW can't help. In general, when the target is
+ not "..", diropen's use of O_NOFOLLOW ensures we don't mistakenly
+ follow a symlink, so we can avoid the expense of this fstat. */
+ if (ISSET(FTS_LOGICAL) || ! HAVE_WORKING_O_NOFOLLOW
+ || (dir && STREQ (dir, "..")))
+ {
+ struct stat sb;
+ if (fstat(newfd, &sb))
+ {
+ ret = -1;
+ goto bail;
+ }
+ if (p->fts_statp->st_dev != sb.st_dev
+ || p->fts_statp->st_ino != sb.st_ino)
+ {
+ __set_errno (ENOENT); /* disinformation */
+ ret = -1;
+ goto bail;
+ }
+ }
+
+ if (ISSET(FTS_CWDFD))
+ {
+ cwd_advance_fd (sp, newfd, ! is_dotdot);
+ return 0;
+ }
+
+ ret = fchdir(newfd);
+bail:
+ if (fd < 0)
+ {
+ int oerrno = errno;
+ (void)close(newfd);
+ __set_errno (oerrno);
+ }
+ return ret;
+}
diff --git a/lib/fts_.h b/lib/fts_.h
new file mode 100644
index 0000000..a8a52d2
--- /dev/null
+++ b/lib/fts_.h
@@ -0,0 +1,233 @@
+/* Traverse a file hierarchy.
+
+ Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/*
+ * Copyright (c) 1989, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)fts.h 8.3 (Berkeley) 8/14/94
+ */
+
+#ifndef _FTS_H
+# define _FTS_H 1
+
+# ifdef _LIBC
+# include <features.h>
+# else
+# undef __THROW
+# define __THROW
+# undef __BEGIN_DECLS
+# define __BEGIN_DECLS
+# undef __END_DECLS
+# define __END_DECLS
+# endif
+
+# include <stddef.h>
+# include <sys/types.h>
+# include <sys/stat.h>
+# include "i-ring.h"
+
+typedef struct {
+ struct _ftsent *fts_cur; /* current node */
+ struct _ftsent *fts_child; /* linked list of children */
+ struct _ftsent **fts_array; /* sort array */
+ dev_t fts_dev; /* starting device # */
+ char *fts_path; /* file name for this descent */
+ int fts_rfd; /* fd for root */
+ int fts_cwd_fd; /* the file descriptor on which the
+ virtual cwd is open, or AT_FDCWD */
+ size_t fts_pathlen; /* sizeof(path) */
+ size_t fts_nitems; /* elements in the sort array */
+ int (*fts_compar) (struct _ftsent const **, struct _ftsent const **);
+ /* compare fn */
+
+# define FTS_COMFOLLOW 0x0001 /* follow command line symlinks */
+# define FTS_LOGICAL 0x0002 /* logical walk */
+# define FTS_NOCHDIR 0x0004 /* don't change directories */
+# define FTS_NOSTAT 0x0008 /* don't get stat info */
+# define FTS_PHYSICAL 0x0010 /* physical walk */
+# define FTS_SEEDOT 0x0020 /* return dot and dot-dot */
+# define FTS_XDEV 0x0040 /* don't cross devices */
+# define FTS_WHITEOUT 0x0080 /* return whiteout information */
+
+ /* There are two ways to detect cycles.
+ The lazy way (which works only with FTS_PHYSICAL),
+ with which one may process a directory that is a
+ part of the cycle several times before detecting the cycle.
+ The `tight' way, whereby fts uses more memory (proportional
+ to number of `active' directories, aka distance from root
+ of current tree to current directory -- see active_dir_ht)
+ to detect any cycle right away. For example, du must use
+ this option to avoid counting disk space in a cycle multiple
+ times, but chown -R need not.
+ The default is to use the constant-memory lazy way, when possible
+ (see below).
+
+ However, with FTS_LOGICAL (when following symlinks, e.g., chown -L)
+ using lazy cycle detection is inadequate. For example, traversing
+ a directory containing a symbolic link to a peer directory, it is
+ possible to encounter the same directory twice even though there
+ is no cycle:
+ dir
+ ...
+ slink -> dir
+ So, when FTS_LOGICAL is selected, we have to use a different
+ mode of cycle detection: FTS_TIGHT_CYCLE_CHECK. */
+# define FTS_TIGHT_CYCLE_CHECK 0x0100
+
+ /* Use this flag to enable semantics with which the parent
+ application may be made both more efficient and more robust.
+ Whereas the default is to visit each directory in a recursive
+ traversal (via chdir), using this flag makes it so the initial
+ working directory is never changed. Instead, these functions
+ perform the traversal via a virtual working directory, maintained
+ through the file descriptor member, fts_cwd_fd. */
+# define FTS_CWDFD 0x0200
+
+ /* Historically, for each directory that fts initially encounters, it would
+ open it, read all entries, and stat each entry, storing the results, and
+ then it would process the first entry. But that behavior is bad for
+ locality of reference, and also causes trouble with inode-simulating
+ file systems like FAT, CIFS, FUSE-based ones, etc., when entries from
+ their name/inode cache are flushed too early.
+ Use this flag to make fts_open and fts_read defer the stat/lstat/fststat
+ of each entry until it actually processed. However, note that if you use
+ this option and also specify a comparison function, that function may not
+ examine any data via fts_statp. */
+# define FTS_DEFER_STAT 0x0400
+
+# define FTS_OPTIONMASK 0x07ff /* valid user option mask */
+
+# define FTS_NAMEONLY 0x1000 /* (private) child names only */
+# define FTS_STOP 0x2000 /* (private) unrecoverable error */
+ int fts_options; /* fts_open options, global flags */
+
+# if GNULIB_FTS
+ union {
+ /* This data structure is used if FTS_TIGHT_CYCLE_CHECK is
+ specified. It records the directories between a starting
+ point and the current directory. I.e., a directory is
+ recorded here IFF we have visited it once, but we have not
+ yet completed processing of all its entries. Every time we
+ visit a new directory, we add that directory to this set.
+ When we finish with a directory (usually by visiting it a
+ second time), we remove it from this set. Each entry in
+ this data structure is a device/inode pair. This data
+ structure is used to detect directory cycles efficiently and
+ promptly even when the depth of a hierarchy is in the tens
+ of thousands. */
+ struct hash_table *ht;
+
+ /* FIXME: rename these two members to have the fts_ prefix */
+ /* This data structure uses a lazy cycle-detection algorithm,
+ as done by rm via cycle-check.c. It's the default,
+ but it's not appropriate for programs like du. */
+ struct cycle_check_state *state;
+ } fts_cycle;
+
+# endif
+ /* A stack of the file descriptors corresponding to the
+ most-recently traversed parent directories.
+ Currently used only in FTS_CWDFD mode. */
+ I_ring fts_fd_ring;
+} FTS;
+
+typedef struct _ftsent {
+ struct _ftsent *fts_cycle; /* cycle node */
+ struct _ftsent *fts_parent; /* parent directory */
+ struct _ftsent *fts_link; /* next file in directory */
+ long fts_number; /* local numeric value */
+ void *fts_pointer; /* local address value */
+ char *fts_accpath; /* access file name */
+ char *fts_path; /* root name; == fts_fts->fts_path */
+ int fts_errno; /* errno for this node */
+ int fts_symfd; /* fd for symlink */
+ size_t fts_pathlen; /* strlen(fts_path) */
+
+ FTS *fts_fts; /* the file hierarchy itself */
+
+# define FTS_ROOTPARENTLEVEL (-1)
+# define FTS_ROOTLEVEL 0
+ ptrdiff_t fts_level; /* depth (-1 to N) */
+
+ size_t fts_namelen; /* strlen(fts_name) */
+
+# define FTS_D 1 /* preorder directory */
+# define FTS_DC 2 /* directory that causes cycles */
+# define FTS_DEFAULT 3 /* none of the above */
+# define FTS_DNR 4 /* unreadable directory */
+# define FTS_DOT 5 /* dot or dot-dot */
+# define FTS_DP 6 /* postorder directory */
+# define FTS_ERR 7 /* error; errno is set */
+# define FTS_F 8 /* regular file */
+# define FTS_INIT 9 /* initialized only */
+# define FTS_NS 10 /* stat(2) failed */
+# define FTS_NSOK 11 /* no stat(2) requested */
+# define FTS_SL 12 /* symbolic link */
+# define FTS_SLNONE 13 /* symbolic link without target */
+# define FTS_W 14 /* whiteout object */
+ unsigned short int fts_info; /* user flags for FTSENT structure */
+
+# define FTS_DONTCHDIR 0x01 /* don't chdir .. to the parent */
+# define FTS_SYMFOLLOW 0x02 /* followed a symlink to get here */
+ unsigned short int fts_flags; /* private flags for FTSENT structure */
+
+# define FTS_AGAIN 1 /* read node again */
+# define FTS_FOLLOW 2 /* follow symbolic link */
+# define FTS_NOINSTR 3 /* no instructions */
+# define FTS_SKIP 4 /* discard node */
+ unsigned short int fts_instr; /* fts_set() instructions */
+
+ struct stat fts_statp[1]; /* stat(2) information */
+ char fts_name[1]; /* file name */
+} FTSENT;
+
+__BEGIN_DECLS
+FTSENT *fts_children (FTS *, int) __THROW;
+int fts_close (FTS *) __THROW;
+FTS *fts_open (char * const *, int,
+ int (*)(const FTSENT **, const FTSENT **)) __THROW;
+FTSENT *fts_read (FTS *) __THROW;
+int fts_set (FTS *, FTSENT *, int) __THROW;
+__END_DECLS
+
+#endif /* fts.h */
diff --git a/lib/full-read.c b/lib/full-read.c
new file mode 100644
index 0000000..8c3472a
--- /dev/null
+++ b/lib/full-read.c
@@ -0,0 +1,19 @@
+/* An interface to read that retries after partial reads and interrupts.
+ Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define FULL_READ
+#include "full-write.c"
diff --git a/lib/full-read.h b/lib/full-read.h
new file mode 100644
index 0000000..05d83a7
--- /dev/null
+++ b/lib/full-read.h
@@ -0,0 +1,24 @@
+/* An interface to read() that reads all it is asked to read.
+
+ Copyright (C) 2002 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, read to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <stddef.h>
+
+/* Read COUNT bytes at BUF to descriptor FD, retrying if interrupted
+ or if partial reads occur. Return the number of bytes successfully
+ read, setting errno if that is less than COUNT. errno = 0 means EOF. */
+extern size_t full_read (int fd, void *buf, size_t count);
diff --git a/lib/full-write.c b/lib/full-write.c
new file mode 100644
index 0000000..cc16872
--- /dev/null
+++ b/lib/full-write.c
@@ -0,0 +1,81 @@
+/* An interface to read and write that retries (if necessary) until complete.
+
+ Copyright (C) 1993, 1994, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+ 2004, 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#ifdef FULL_READ
+# include "full-read.h"
+#else
+# include "full-write.h"
+#endif
+
+#include <errno.h>
+
+#ifdef FULL_READ
+# include "safe-read.h"
+# define safe_rw safe_read
+# define full_rw full_read
+# undef const
+# define const /* empty */
+#else
+# include "safe-write.h"
+# define safe_rw safe_write
+# define full_rw full_write
+#endif
+
+#ifdef FULL_READ
+/* Set errno to zero upon EOF. */
+# define ZERO_BYTE_TRANSFER_ERRNO 0
+#else
+/* Some buggy drivers return 0 when one tries to write beyond
+ a device's end. (Example: Linux 1.2.13 on /dev/fd0.)
+ Set errno to ENOSPC so they get a sensible diagnostic. */
+# define ZERO_BYTE_TRANSFER_ERRNO ENOSPC
+#endif
+
+/* Write(read) COUNT bytes at BUF to(from) descriptor FD, retrying if
+ interrupted or if a partial write(read) occurs. Return the number
+ of bytes transferred.
+ When writing, set errno if fewer than COUNT bytes are written.
+ When reading, if fewer than COUNT bytes are read, you must examine
+ errno to distinguish failure from EOF (errno == 0). */
+size_t
+full_rw (int fd, const void *buf, size_t count)
+{
+ size_t total = 0;
+ const char *ptr = (const char *) buf;
+
+ while (count > 0)
+ {
+ size_t n_rw = safe_rw (fd, ptr, count);
+ if (n_rw == (size_t) -1)
+ break;
+ if (n_rw == 0)
+ {
+ errno = ZERO_BYTE_TRANSFER_ERRNO;
+ break;
+ }
+ total += n_rw;
+ ptr += n_rw;
+ count -= n_rw;
+ }
+
+ return total;
+}
diff --git a/lib/full-write.h b/lib/full-write.h
new file mode 100644
index 0000000..d20d2fe
--- /dev/null
+++ b/lib/full-write.h
@@ -0,0 +1,35 @@
+/* An interface to write() that writes all it is asked to write.
+
+ Copyright (C) 2002-2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <stddef.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Write COUNT bytes at BUF to descriptor FD, retrying if interrupted
+ or if partial writes occur. Return the number of bytes successfully
+ written, setting errno if that is less than COUNT. */
+extern size_t full_write (int fd, const void *buf, size_t count);
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/lib/gai_strerror.c b/lib/gai_strerror.c
new file mode 100644
index 0000000..aa733d6
--- /dev/null
+++ b/lib/gai_strerror.c
@@ -0,0 +1,78 @@
+/* Copyright (C) 1997, 2001, 2002, 2004, 2005, 2006 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Philip Blundell <pjb27@cam.ac.uk>, 1997.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _LIBC
+# include <config.h>
+# include "getaddrinfo.h"
+#endif
+
+#include <stdio.h>
+#ifdef HAVE_NETDB_H
+# include <netdb.h>
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "gettext.h"
+# define _(String) gettext (String)
+# define N_(String) String
+#endif
+
+static struct
+ {
+ int code;
+ const char *msg;
+ }
+values[] =
+ {
+ { EAI_ADDRFAMILY, N_("Address family for hostname not supported") },
+ { EAI_AGAIN, N_("Temporary failure in name resolution") },
+ { EAI_BADFLAGS, N_("Bad value for ai_flags") },
+ { EAI_FAIL, N_("Non-recoverable failure in name resolution") },
+ { EAI_FAMILY, N_("ai_family not supported") },
+ { EAI_MEMORY, N_("Memory allocation failure") },
+ { EAI_NODATA, N_("No address associated with hostname") },
+ { EAI_NONAME, N_("Name or service not known") },
+ { EAI_SERVICE, N_("Servname not supported for ai_socktype") },
+ { EAI_SOCKTYPE, N_("ai_socktype not supported") },
+ { EAI_SYSTEM, N_("System error") },
+ { EAI_OVERFLOW, N_("Argument buffer too small") },
+#ifdef __USE_GNU
+ { EAI_INPROGRESS, N_("Processing request in progress") },
+ { EAI_CANCELED, N_("Request canceled") },
+ { EAI_NOTCANCELED, N_("Request not canceled") },
+ { EAI_ALLDONE, N_("All requests done") },
+ { EAI_INTR, N_("Interrupted by a signal") },
+ { EAI_IDN_ENCODE, N_("Parameter string not correctly encoded") }
+#endif
+ };
+
+const char *
+gai_strerror (int code)
+{
+ size_t i;
+ for (i = 0; i < sizeof (values) / sizeof (values[0]); ++i)
+ if (values[i].code == code)
+ return _(values[i].msg);
+
+ return _("Unknown error");
+}
+#ifdef _LIBC
+libc_hidden_def (gai_strerror)
+#endif
diff --git a/lib/getaddrinfo.c b/lib/getaddrinfo.c
new file mode 100644
index 0000000..cc718bc
--- /dev/null
+++ b/lib/getaddrinfo.c
@@ -0,0 +1,418 @@
+/* Get address information (partial implementation).
+ Copyright (C) 1997, 2001, 2002, 2004, 2005, 2006, 2007 Free Software
+ Foundation, Inc.
+ Contributed by Simon Josefsson <simon@josefsson.org>.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "getaddrinfo.h"
+
+#if HAVE_NETINET_IN_H
+# include <netinet/in.h>
+#endif
+
+/* Get calloc. */
+#include <stdlib.h>
+
+/* Get memcpy, strdup. */
+#include <string.h>
+
+/* Get snprintf. */
+#include <stdio.h>
+
+#include <stdbool.h>
+
+#include "gettext.h"
+#define _(String) gettext (String)
+#define N_(String) String
+
+#include "inet_ntop.h"
+
+/* BeOS has AF_INET, but not PF_INET. */
+#ifndef PF_INET
+# define PF_INET AF_INET
+#endif
+/* BeOS also lacks PF_UNSPEC. */
+#ifndef PF_UNSPEC
+# define PF_UNSPEC 0
+#endif
+
+#if defined _WIN32 || defined __WIN32__
+# define WIN32_NATIVE
+#endif
+
+#ifdef WIN32_NATIVE
+typedef int (WSAAPI *getaddrinfo_func) (const char*, const char*,
+ const struct addrinfo*,
+ struct addrinfo**);
+typedef void (WSAAPI *freeaddrinfo_func) (struct addrinfo*);
+typedef int (WSAAPI *getnameinfo_func) (const struct sockaddr*,
+ socklen_t, char*, DWORD,
+ char*, DWORD, int);
+
+static getaddrinfo_func getaddrinfo_ptr = NULL;
+static freeaddrinfo_func freeaddrinfo_ptr = NULL;
+static getnameinfo_func getnameinfo_ptr = NULL;
+
+static int
+use_win32_p (void)
+{
+ static int done = 0;
+ HMODULE h;
+
+ if (done)
+ return getaddrinfo_ptr ? 1 : 0;
+
+ done = 1;
+
+ h = GetModuleHandle ("ws2_32.dll");
+
+ if (h)
+ {
+ getaddrinfo_ptr = (getaddrinfo_func) GetProcAddress (h, "getaddrinfo");
+ freeaddrinfo_ptr = (freeaddrinfo_func) GetProcAddress (h, "freeaddrinfo");
+ getnameinfo_ptr = (getnameinfo_func) GetProcAddress (h, "getnameinfo");
+ }
+
+ /* If either is missing, something is odd. */
+ if (!getaddrinfo_ptr || !freeaddrinfo_ptr || !getnameinfo_ptr)
+ {
+ getaddrinfo_ptr = NULL;
+ freeaddrinfo_ptr = NULL;
+ getnameinfo_ptr = NULL;
+ return 0;
+ }
+
+ return 1;
+}
+#endif
+
+static inline bool
+validate_family (int family)
+{
+ /* FIXME: Support more families. */
+#if HAVE_IPV4
+ if (family == PF_INET)
+ return true;
+#endif
+#if HAVE_IPV6
+ if (family == PF_INET6)
+ return true;
+#endif
+ if (family == PF_UNSPEC)
+ return true;
+ return false;
+}
+
+/* Translate name of a service location and/or a service name to set of
+ socket addresses. */
+int
+getaddrinfo (const char *restrict nodename,
+ const char *restrict servname,
+ const struct addrinfo *restrict hints,
+ struct addrinfo **restrict res)
+{
+ struct addrinfo *tmp;
+ int port = 0;
+ struct hostent *he;
+ void *storage;
+ size_t size;
+#if HAVE_IPV6
+ struct v6_pair {
+ struct addrinfo addrinfo;
+ struct sockaddr_in6 sockaddr_in6;
+ };
+#endif
+#if HAVE_IPV4
+ struct v4_pair {
+ struct addrinfo addrinfo;
+ struct sockaddr_in sockaddr_in;
+ };
+#endif
+
+#ifdef WIN32_NATIVE
+ if (use_win32_p ())
+ return getaddrinfo_ptr (nodename, servname, hints, res);
+#endif
+
+ if (hints && (hints->ai_flags & ~(AI_CANONNAME|AI_PASSIVE)))
+ /* FIXME: Support more flags. */
+ return EAI_BADFLAGS;
+
+ if (hints && !validate_family (hints->ai_family))
+ return EAI_FAMILY;
+
+ if (hints &&
+ hints->ai_socktype != SOCK_STREAM && hints->ai_socktype != SOCK_DGRAM)
+ /* FIXME: Support other socktype. */
+ return EAI_SOCKTYPE; /* FIXME: Better return code? */
+
+ if (!nodename)
+ {
+ if (!(hints->ai_flags & AI_PASSIVE))
+ return EAI_NONAME;
+
+#ifdef HAVE_IPV6
+ nodename = (hints->ai_family == AF_INET6) ? "::" : "0.0.0.0";
+#else
+ nodename = "0.0.0.0";
+#endif
+ }
+
+ if (servname)
+ {
+ struct servent *se = NULL;
+ const char *proto =
+ (hints && hints->ai_socktype == SOCK_DGRAM) ? "udp" : "tcp";
+
+ if (!(hints->ai_flags & AI_NUMERICSERV))
+ /* FIXME: Use getservbyname_r if available. */
+ se = getservbyname (servname, proto);
+
+ if (!se)
+ {
+ char *c;
+ if (!(*servname >= '0' && *servname <= '9'))
+ return EAI_NONAME;
+ port = strtoul (servname, &c, 10);
+ if (*c || port > 0xffff)
+ return EAI_NONAME;
+ port = htons (port);
+ }
+ else
+ port = se->s_port;
+ }
+
+ /* FIXME: Use gethostbyname_r if available. */
+ he = gethostbyname (nodename);
+ if (!he || he->h_addr_list[0] == NULL)
+ return EAI_NONAME;
+
+ switch (he->h_addrtype)
+ {
+#if HAVE_IPV6
+ case PF_INET6:
+ size = sizeof (struct v6_pair);
+ break;
+#endif
+
+#if HAVE_IPV4
+ case PF_INET:
+ size = sizeof (struct v4_pair);
+ break;
+#endif
+
+ default:
+ return EAI_NODATA;
+ }
+
+ storage = calloc (1, size);
+ if (!storage)
+ return EAI_MEMORY;
+
+ switch (he->h_addrtype)
+ {
+#if HAVE_IPV6
+ case PF_INET6:
+ {
+ struct v6_pair *p = storage;
+ struct sockaddr_in6 *sinp = &p->sockaddr_in6;
+ tmp = &p->addrinfo;
+
+ if (port)
+ sinp->sin6_port = port;
+
+ if (he->h_length != sizeof (sinp->sin6_addr))
+ {
+ free (storage);
+ return EAI_SYSTEM; /* FIXME: Better return code? Set errno? */
+ }
+
+ memcpy (&sinp->sin6_addr, he->h_addr_list[0], sizeof sinp->sin6_addr);
+
+ tmp->ai_addr = (struct sockaddr *) sinp;
+ tmp->ai_addrlen = sizeof *sinp;
+ }
+ break;
+#endif
+
+#if HAVE_IPV4
+ case PF_INET:
+ {
+ struct v4_pair *p = storage;
+ struct sockaddr_in *sinp = &p->sockaddr_in;
+ tmp = &p->addrinfo;
+
+ if (port)
+ sinp->sin_port = port;
+
+ if (he->h_length != sizeof (sinp->sin_addr))
+ {
+ free (storage);
+ return EAI_SYSTEM; /* FIXME: Better return code? Set errno? */
+ }
+
+ memcpy (&sinp->sin_addr, he->h_addr_list[0], sizeof sinp->sin_addr);
+
+ tmp->ai_addr = (struct sockaddr *) sinp;
+ tmp->ai_addrlen = sizeof *sinp;
+ }
+ break;
+#endif
+
+ default:
+ free (storage);
+ return EAI_NODATA;
+ }
+
+ if (hints && hints->ai_flags & AI_CANONNAME)
+ {
+ const char *cn;
+ if (he->h_name)
+ cn = he->h_name;
+ else
+ cn = nodename;
+
+ tmp->ai_canonname = strdup (cn);
+ if (!tmp->ai_canonname)
+ {
+ free (storage);
+ return EAI_MEMORY;
+ }
+ }
+
+ tmp->ai_protocol = (hints) ? hints->ai_protocol : 0;
+ tmp->ai_socktype = (hints) ? hints->ai_socktype : 0;
+ tmp->ai_addr->sa_family = he->h_addrtype;
+ tmp->ai_family = he->h_addrtype;
+
+ /* FIXME: If more than one address, create linked list of addrinfo's. */
+
+ *res = tmp;
+
+ return 0;
+}
+
+/* Free `addrinfo' structure AI including associated storage. */
+void
+freeaddrinfo (struct addrinfo *ai)
+{
+#ifdef WIN32_NATIVE
+ if (use_win32_p ())
+ {
+ freeaddrinfo_ptr (ai);
+ return;
+ }
+#endif
+
+ while (ai)
+ {
+ struct addrinfo *cur;
+
+ cur = ai;
+ ai = ai->ai_next;
+
+ if (cur->ai_canonname) free (cur->ai_canonname);
+ free (cur);
+ }
+}
+
+int getnameinfo(const struct sockaddr *restrict sa, socklen_t salen,
+ char *restrict node, socklen_t nodelen,
+ char *restrict service, socklen_t servicelen,
+ int flags)
+{
+#ifdef WIN32_NATIVE
+ if (use_win32_p ())
+ return getnameinfo_ptr (sa, salen, node, nodelen,
+ service, servicelen, flags);
+#endif
+
+ /* FIXME: Support other flags. */
+ if ((node && nodelen > 0 && !(flags & NI_NUMERICHOST)) ||
+ (service && servicelen > 0 && !(flags & NI_NUMERICHOST)) ||
+ (flags & ~(NI_NUMERICHOST|NI_NUMERICSERV)))
+ return EAI_BADFLAGS;
+
+ if (sa == NULL || salen < sizeof (sa->sa_family))
+ return EAI_FAMILY;
+
+ switch (sa->sa_family)
+ {
+#if HAVE_IPV4
+ case AF_INET:
+ if (salen < sizeof (struct sockaddr_in))
+ return EAI_FAMILY;
+ break;
+#endif
+#if HAVE_IPV6
+ case AF_INET6:
+ if (salen < sizeof (struct sockaddr_in6))
+ return EAI_FAMILY;
+ break;
+#endif
+ default:
+ return EAI_FAMILY;
+ }
+
+ if (node && nodelen > 0 && flags & NI_NUMERICHOST)
+ {
+ switch (sa->sa_family)
+ {
+#if HAVE_IPV4
+ case AF_INET:
+ if (!inet_ntop (AF_INET,
+ &(((const struct sockaddr_in *) sa)->sin_addr),
+ node, nodelen))
+ return EAI_SYSTEM;
+ break;
+#endif
+
+#if HAVE_IPV6
+ case AF_INET6:
+ if (!inet_ntop (AF_INET6,
+ &(((const struct sockaddr_in6 *) sa)->sin6_addr),
+ node, nodelen))
+ return EAI_SYSTEM;
+ break;
+#endif
+
+ default:
+ return EAI_FAMILY;
+ }
+ }
+
+ if (service && servicelen > 0 && flags & NI_NUMERICSERV)
+ switch (sa->sa_family)
+ {
+#if HAVE_IPV4
+ case AF_INET:
+#endif
+#if HAVE_IPV6
+ case AF_INET6:
+#endif
+ {
+ unsigned short int port
+ = ntohs (((const struct sockaddr_in *) sa)->sin_port);
+ if (servicelen <= snprintf (service, servicelen, "%u", port))
+ return EAI_OVERFLOW;
+ }
+ break;
+ }
+
+ return 0;
+}
diff --git a/lib/getaddrinfo.h b/lib/getaddrinfo.h
new file mode 100644
index 0000000..b4ef242
--- /dev/null
+++ b/lib/getaddrinfo.h
@@ -0,0 +1,155 @@
+/* Get address information.
+ Copyright (C) 1996-2002, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
+ Contributed by Simon Josefsson <simon@josefsson.org>.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef GETADDRINFO_H
+#define GETADDRINFO_H
+
+/* sys/socket.h in i386-unknown-freebsd4.10 and
+ powerpc-apple-darwin5.5 require sys/types.h, so include it first.
+ Then we'll also get 'socklen_t' and 'struct sockaddr' which are
+ used below. */
+#include <sys/types.h>
+/* Get all getaddrinfo related declarations, if available. */
+#include <sys/socket.h>
+#ifdef HAVE_NETDB_H
+# include <netdb.h>
+#endif
+
+#ifndef HAVE_STRUCT_ADDRINFO
+
+/* Structure to contain information about address of a service provider. */
+struct addrinfo
+{
+ int ai_flags; /* Input flags. */
+ int ai_family; /* Protocol family for socket. */
+ int ai_socktype; /* Socket type. */
+ int ai_protocol; /* Protocol for socket. */
+ socklen_t ai_addrlen; /* Length of socket address. */
+ struct sockaddr *ai_addr; /* Socket address for socket. */
+ char *ai_canonname; /* Canonical name for service location. */
+ struct addrinfo *ai_next; /* Pointer to next in list. */
+};
+#endif
+
+/* Possible values for `ai_flags' field in `addrinfo' structure. */
+#ifndef AI_PASSIVE
+# define AI_PASSIVE 0x0001 /* Socket address is intended for `bind'. */
+#endif
+#ifndef AI_CANONNAME
+# define AI_CANONNAME 0x0002 /* Request for canonical name. */
+#endif
+#ifndef AI_NUMERICSERV
+# define AI_NUMERICSERV 0x0400 /* Don't use name resolution. */
+#endif
+
+#if 0
+/* The commented out definitions below are not yet implemented in the
+ GNULIB getaddrinfo() replacement, so are not yet needed and may, in fact,
+ cause conflicts on systems with a getaddrinfo() function which does not
+ define them.
+
+ If they are restored, be sure to protect the definitions with #ifndef. */
+#define AI_NUMERICHOST 0x0004 /* Don't use name resolution. */
+#define AI_V4MAPPED 0x0008 /* IPv4 mapped addresses are acceptable. */
+#define AI_ALL 0x0010 /* Return IPv4 mapped and IPv6 addresses. */
+#define AI_ADDRCONFIG 0x0020 /* Use configuration of this host to choose
+ returned address type.. */
+#endif /* 0 */
+
+/* Error values for `getaddrinfo' function. */
+#ifndef EAI_BADFLAGS
+# define EAI_BADFLAGS -1 /* Invalid value for `ai_flags' field. */
+# define EAI_NONAME -2 /* NAME or SERVICE is unknown. */
+# define EAI_AGAIN -3 /* Temporary failure in name resolution. */
+# define EAI_FAIL -4 /* Non-recoverable failure in name res. */
+# define EAI_NODATA -5 /* No address associated with NAME. */
+# define EAI_FAMILY -6 /* `ai_family' not supported. */
+# define EAI_SOCKTYPE -7 /* `ai_socktype' not supported. */
+# define EAI_SERVICE -8 /* SERVICE not supported for `ai_socktype'. */
+# define EAI_MEMORY -10 /* Memory allocation failure. */
+#endif
+#ifndef EAI_OVERFLOW
+/* Not defined on mingw32. */
+# define EAI_OVERFLOW -12 /* Argument buffer overflow. */
+#endif
+#ifndef EAI_ADDRFAMILY
+/* Not defined on mingw32. */
+# define EAI_ADDRFAMILY -9 /* Address family for NAME not supported. */
+#endif
+#ifndef EAI_SYSTEM
+/* Not defined on mingw32. */
+# define EAI_SYSTEM -11 /* System error returned in `errno'. */
+#endif
+
+#ifdef __USE_GNU
+# ifndef EAI_INPROGRESS
+# define EAI_INPROGRESS -100 /* Processing request in progress. */
+# define EAI_CANCELED -101 /* Request canceled. */
+# define EAI_NOTCANCELED -102 /* Request not canceled. */
+# define EAI_ALLDONE -103 /* All requests done. */
+# define EAI_INTR -104 /* Interrupted by a signal. */
+# define EAI_IDN_ENCODE -105 /* IDN encoding failed. */
+# endif
+#endif
+
+#if !HAVE_DECL_GETADDRINFO
+/* Translate name of a service location and/or a service name to set of
+ socket addresses.
+ For more details, see the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/getaddrinfo.html>. */
+extern int getaddrinfo (const char *restrict nodename,
+ const char *restrict servname,
+ const struct addrinfo *restrict hints,
+ struct addrinfo **restrict res);
+#endif
+
+#if !HAVE_DECL_FREEADDRINFO
+/* Free `addrinfo' structure AI including associated storage.
+ For more details, see the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/getaddrinfo.html>. */
+extern void freeaddrinfo (struct addrinfo *ai);
+#endif
+
+#if !HAVE_DECL_GAI_STRERROR
+/* Convert error return from getaddrinfo() to a string.
+ For more details, see the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/gai_strerror.html>. */
+extern const char *gai_strerror (int ecode);
+#endif
+
+#if !HAVE_DECL_GETNAMEINFO
+/* Convert socket address to printable node and service names.
+ For more details, see the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/getnameinfo.html>. */
+extern int getnameinfo(const struct sockaddr *restrict sa, socklen_t salen,
+ char *restrict node, socklen_t nodelen,
+ char *restrict service, socklen_t servicelen,
+ int flags);
+
+#endif
+
+/* Possible flags for getnameinfo. */
+#ifndef NI_NUMERICHOST
+# define NI_NUMERICHOST 1
+#endif
+#ifndef NI_NUMERICSERV
+# define NI_NUMERICSERV 2
+#endif
+
+#endif /* GETADDRINFO_H */
diff --git a/lib/getcwd.c b/lib/getcwd.c
new file mode 100644
index 0000000..23b35de
--- /dev/null
+++ b/lib/getcwd.c
@@ -0,0 +1,428 @@
+/* Copyright (C) 1991,92,93,94,95,96,97,98,99,2004,2005,2006,2007 Free Software
+ Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#if !_LIBC
+# include <config.h>
+# include <unistd.h>
+# include "dirfd.h"
+#endif
+
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdbool.h>
+#include <stddef.h>
+
+#include <fcntl.h> /* For AT_FDCWD on Solaris 9. */
+
+#ifndef __set_errno
+# define __set_errno(val) (errno = (val))
+#endif
+
+#include <dirent.h>
+#ifndef _D_EXACT_NAMLEN
+# define _D_EXACT_NAMLEN(d) strlen ((d)->d_name)
+#endif
+#ifndef _D_ALLOC_NAMLEN
+# define _D_ALLOC_NAMLEN(d) (_D_EXACT_NAMLEN (d) + 1)
+#endif
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+
+#if _LIBC
+# ifndef mempcpy
+# define mempcpy __mempcpy
+# endif
+#endif
+
+#include <limits.h>
+
+/* Work around a bug in Solaris 9 and 10: AT_FDCWD is positive. Its
+ value exceeds INT_MAX, so its use as an int doesn't conform to the
+ C standard, and GCC and Sun C complain in some cases. */
+#if 0 < AT_FDCWD && AT_FDCWD == 0xffd19553
+# undef AT_FDCWD
+# define AT_FDCWD (-3041965)
+#endif
+
+#ifdef ENAMETOOLONG
+# define is_ENAMETOOLONG(x) ((x) == ENAMETOOLONG)
+#else
+# define is_ENAMETOOLONG(x) 0
+#endif
+
+#ifndef MAX
+# define MAX(a, b) ((a) < (b) ? (b) : (a))
+#endif
+#ifndef MIN
+# define MIN(a, b) ((a) < (b) ? (a) : (b))
+#endif
+
+#ifndef PATH_MAX
+# ifdef MAXPATHLEN
+# define PATH_MAX MAXPATHLEN
+# else
+# define PATH_MAX 1024
+# endif
+#endif
+
+#if D_INO_IN_DIRENT
+# define MATCHING_INO(dp, ino) ((dp)->d_ino == (ino))
+#else
+# define MATCHING_INO(dp, ino) true
+#endif
+
+#if !_LIBC
+# define __getcwd getcwd
+# define __lstat lstat
+# define __closedir closedir
+# define __opendir opendir
+# define __readdir readdir
+#endif
+
+/* The results of opendir() in this file are not used with dirfd and fchdir,
+ therefore save some unnecessary recursion in fchdir.c. */
+#undef opendir
+#undef closedir
+
+/* Get the name of the current working directory, and put it in SIZE
+ bytes of BUF. Returns NULL if the directory couldn't be determined or
+ SIZE was too small. If successful, returns BUF. In GNU, if BUF is
+ NULL, an array is allocated with `malloc'; the array is SIZE bytes long,
+ unless SIZE == 0, in which case it is as big as necessary. */
+
+char *
+__getcwd (char *buf, size_t size)
+{
+ /* Lengths of big file name components and entire file names, and a
+ deep level of file name nesting. These numbers are not upper
+ bounds; they are merely large values suitable for initial
+ allocations, designed to be large enough for most real-world
+ uses. */
+ enum
+ {
+ BIG_FILE_NAME_COMPONENT_LENGTH = 255,
+ BIG_FILE_NAME_LENGTH = MIN (4095, PATH_MAX - 1),
+ DEEP_NESTING = 100
+ };
+
+#ifdef AT_FDCWD
+ int fd = AT_FDCWD;
+ bool fd_needs_closing = false;
+#else
+ char dots[DEEP_NESTING * sizeof ".." + BIG_FILE_NAME_COMPONENT_LENGTH + 1];
+ char *dotlist = dots;
+ size_t dotsize = sizeof dots;
+ size_t dotlen = 0;
+#endif
+ DIR *dirstream = NULL;
+ dev_t rootdev, thisdev;
+ ino_t rootino, thisino;
+ char *dir;
+ register char *dirp;
+ struct stat st;
+ size_t allocated = size;
+ size_t used;
+
+#if HAVE_PARTLY_WORKING_GETCWD
+ /* The system getcwd works, except it sometimes fails when it
+ shouldn't, setting errno to ERANGE, ENAMETOOLONG, or ENOENT. If
+ AT_FDCWD is not defined, the algorithm below is O(N**2) and this
+ is much slower than the system getcwd (at least on GNU/Linux).
+ So trust the system getcwd's results unless they look
+ suspicious.
+
+ Use the system getcwd even if we have openat support, since the
+ system getcwd works even when a parent is unreadable, while the
+ openat-based approach does not. */
+
+# undef getcwd
+ dir = getcwd (buf, size);
+ if (dir || (errno != ERANGE && !is_ENAMETOOLONG (errno) && errno != ENOENT))
+ return dir;
+#endif
+
+ if (size == 0)
+ {
+ if (buf != NULL)
+ {
+ __set_errno (EINVAL);
+ return NULL;
+ }
+
+ allocated = BIG_FILE_NAME_LENGTH + 1;
+ }
+
+ if (buf == NULL)
+ {
+ dir = malloc (allocated);
+ if (dir == NULL)
+ return NULL;
+ }
+ else
+ dir = buf;
+
+ dirp = dir + allocated;
+ *--dirp = '\0';
+
+ if (__lstat (".", &st) < 0)
+ goto lose;
+ thisdev = st.st_dev;
+ thisino = st.st_ino;
+
+ if (__lstat ("/", &st) < 0)
+ goto lose;
+ rootdev = st.st_dev;
+ rootino = st.st_ino;
+
+ while (!(thisdev == rootdev && thisino == rootino))
+ {
+ struct dirent *d;
+ dev_t dotdev;
+ ino_t dotino;
+ bool mount_point;
+ int parent_status;
+ size_t dirroom;
+ size_t namlen;
+ bool use_d_ino = true;
+
+ /* Look at the parent directory. */
+#ifdef AT_FDCWD
+ fd = openat (fd, "..", O_RDONLY);
+ if (fd < 0)
+ goto lose;
+ fd_needs_closing = true;
+ parent_status = fstat (fd, &st);
+#else
+ dotlist[dotlen++] = '.';
+ dotlist[dotlen++] = '.';
+ dotlist[dotlen] = '\0';
+ parent_status = __lstat (dotlist, &st);
+#endif
+ if (parent_status != 0)
+ goto lose;
+
+ if (dirstream && __closedir (dirstream) != 0)
+ {
+ dirstream = NULL;
+ goto lose;
+ }
+
+ /* Figure out if this directory is a mount point. */
+ dotdev = st.st_dev;
+ dotino = st.st_ino;
+ mount_point = dotdev != thisdev;
+
+ /* Search for the last directory. */
+#ifdef AT_FDCWD
+ dirstream = fdopendir (fd);
+ if (dirstream == NULL)
+ goto lose;
+ /* Reset fd. It may have been closed by fdopendir. */
+ fd = dirfd (dirstream);
+ fd_needs_closing = false;
+#else
+ dirstream = __opendir (dotlist);
+ if (dirstream == NULL)
+ goto lose;
+ dotlist[dotlen++] = '/';
+#endif
+ for (;;)
+ {
+ /* Clear errno to distinguish EOF from error if readdir returns
+ NULL. */
+ __set_errno (0);
+ d = __readdir (dirstream);
+
+ /* When we've iterated through all directory entries without finding
+ one with a matching d_ino, rewind the stream and consider each
+ name again, but this time, using lstat. This is necessary in a
+ chroot on at least one system (glibc-2.3.6 + linux 2.6.12), where
+ .., ../.., ../../.., etc. all had the same device number, yet the
+ d_ino values for entries in / did not match those obtained
+ via lstat. */
+ if (d == NULL && errno == 0 && use_d_ino)
+ {
+ use_d_ino = false;
+ rewinddir (dirstream);
+ d = __readdir (dirstream);
+ }
+
+ if (d == NULL)
+ {
+ if (errno == 0)
+ /* EOF on dirstream, which can mean e.g., that the current
+ directory has been removed. */
+ __set_errno (ENOENT);
+ goto lose;
+ }
+ if (d->d_name[0] == '.' &&
+ (d->d_name[1] == '\0' ||
+ (d->d_name[1] == '.' && d->d_name[2] == '\0')))
+ continue;
+
+ if (use_d_ino)
+ {
+ bool match = (MATCHING_INO (d, thisino) || mount_point);
+ if (! match)
+ continue;
+ }
+
+ {
+ int entry_status;
+#ifdef AT_FDCWD
+ entry_status = fstatat (fd, d->d_name, &st, AT_SYMLINK_NOFOLLOW);
+#else
+ /* Compute size needed for this file name, or for the file
+ name ".." in the same directory, whichever is larger.
+ Room for ".." might be needed the next time through
+ the outer loop. */
+ size_t name_alloc = _D_ALLOC_NAMLEN (d);
+ size_t filesize = dotlen + MAX (sizeof "..", name_alloc);
+
+ if (filesize < dotlen)
+ goto memory_exhausted;
+
+ if (dotsize < filesize)
+ {
+ /* My, what a deep directory tree you have, Grandma. */
+ size_t newsize = MAX (filesize, dotsize * 2);
+ size_t i;
+ if (newsize < dotsize)
+ goto memory_exhausted;
+ if (dotlist != dots)
+ free (dotlist);
+ dotlist = malloc (newsize);
+ if (dotlist == NULL)
+ goto lose;
+ dotsize = newsize;
+
+ i = 0;
+ do
+ {
+ dotlist[i++] = '.';
+ dotlist[i++] = '.';
+ dotlist[i++] = '/';
+ }
+ while (i < dotlen);
+ }
+
+ memcpy (dotlist + dotlen, d->d_name, _D_ALLOC_NAMLEN (d));
+ entry_status = __lstat (dotlist, &st);
+#endif
+ /* We don't fail here if we cannot stat() a directory entry.
+ This can happen when (network) file systems fail. If this
+ entry is in fact the one we are looking for we will find
+ out soon as we reach the end of the directory without
+ having found anything. */
+ if (entry_status == 0 && S_ISDIR (st.st_mode)
+ && st.st_dev == thisdev && st.st_ino == thisino)
+ break;
+ }
+ }
+
+ dirroom = dirp - dir;
+ namlen = _D_EXACT_NAMLEN (d);
+
+ if (dirroom <= namlen)
+ {
+ if (size != 0)
+ {
+ __set_errno (ERANGE);
+ goto lose;
+ }
+ else
+ {
+ char *tmp;
+ size_t oldsize = allocated;
+
+ allocated += MAX (allocated, namlen);
+ if (allocated < oldsize
+ || ! (tmp = realloc (dir, allocated)))
+ goto memory_exhausted;
+
+ /* Move current contents up to the end of the buffer.
+ This is guaranteed to be non-overlapping. */
+ dirp = memcpy (tmp + allocated - (oldsize - dirroom),
+ tmp + dirroom,
+ oldsize - dirroom);
+ dir = tmp;
+ }
+ }
+ dirp -= namlen;
+ memcpy (dirp, d->d_name, namlen);
+ *--dirp = '/';
+
+ thisdev = dotdev;
+ thisino = dotino;
+ }
+
+ if (dirstream && __closedir (dirstream) != 0)
+ {
+ dirstream = NULL;
+ goto lose;
+ }
+
+ if (dirp == &dir[allocated - 1])
+ *--dirp = '/';
+
+#ifndef AT_FDCWD
+ if (dotlist != dots)
+ free (dotlist);
+#endif
+
+ used = dir + allocated - dirp;
+ memmove (dir, dirp, used);
+
+ if (size == 0)
+ /* Ensure that the buffer is only as large as necessary. */
+ buf = realloc (dir, used);
+
+ if (buf == NULL)
+ /* Either buf was NULL all along, or `realloc' failed but
+ we still have the original string. */
+ buf = dir;
+
+ return buf;
+
+ memory_exhausted:
+ __set_errno (ENOMEM);
+ lose:
+ {
+ int save = errno;
+ if (dirstream)
+ __closedir (dirstream);
+#ifdef AT_FDCWD
+ if (fd_needs_closing)
+ close (fd);
+#else
+ if (dotlist != dots)
+ free (dotlist);
+#endif
+ if (buf == NULL)
+ free (dir);
+ __set_errno (save);
+ }
+ return NULL;
+}
+
+#ifdef weak_alias
+weak_alias (__getcwd, getcwd)
+#endif
diff --git a/lib/getdate.c b/lib/getdate.c
new file mode 100644
index 0000000..5b07884
--- /dev/null
+++ b/lib/getdate.c
@@ -0,0 +1,3359 @@
+/* A Bison parser, made by GNU Bison 2.3a. */
+
+/* Skeleton implementation for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+
+/* As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+ simplifying the original so-called "semantic" parser. */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+/* Identify Bison output. */
+#define YYBISON 1
+
+/* Bison version. */
+#define YYBISON_VERSION "2.3a"
+
+/* Skeleton name. */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers. */
+#define YYPURE 1
+
+/* Using locations. */
+#define YYLSP_NEEDED 0
+
+
+
+/* Copy the first part of user declarations. */
+/* Line 164 of yacc.c. */
+#line 1 "getdate.y"
+
+/* Parse a string into an internal time stamp.
+
+ Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Originally written by Steven M. Bellovin <smb@research.att.com> while
+ at the University of North Carolina at Chapel Hill. Later tweaked by
+ a couple of people on Usenet. Completely overhauled by Rich $alz
+ <rsalz@bbn.com> and Jim Berets <jberets@bbn.com> in August, 1990.
+
+ Modified by Paul Eggert <eggert@twinsun.com> in August 1999 to do
+ the right thing about local DST. Also modified by Paul Eggert
+ <eggert@cs.ucla.edu> in February 2004 to support
+ nanosecond-resolution time stamps, and in October 2004 to support
+ TZ strings in dates. */
+
+/* FIXME: Check for arithmetic overflow in all cases, not just
+ some of them. */
+
+#include <config.h>
+
+#include "getdate.h"
+#include "timespec.h"
+
+/* There's no need to extend the stack, so there's no need to involve
+ alloca. */
+#define YYSTACK_USE_ALLOCA 0
+
+/* Tell Bison how much stack space is needed. 20 should be plenty for
+ this grammar, which is not right recursive. Beware setting it too
+ high, since that might cause problems on machines whose
+ implementations have lame stack-overflow checking. */
+#define YYMAXDEPTH 20
+#define YYINITDEPTH YYMAXDEPTH
+
+/* Since the code of getdate.y is not included in the Emacs executable
+ itself, there is no need to #define static in this file. Even if
+ the code were included in the Emacs executable, it probably
+ wouldn't do any harm to #undef it here; this will only cause
+ problems if we try to write to a static variable, which I don't
+ think this code needs to do. */
+#ifdef emacs
+# undef static
+#endif
+
+#include <ctype.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "setenv.h"
+#include "xalloc.h"
+
+
+/* ISDIGIT differs from isdigit, as follows:
+ - Its arg may be any int or unsigned int; it need not be an unsigned char
+ or EOF.
+ - It's typically faster.
+ POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
+ isdigit unless it's important to use the locale's definition
+ of `digit' even when the host does not conform to POSIX. */
+#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
+
+#ifndef __attribute__
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
+# define __attribute__(x)
+# endif
+#endif
+
+#ifndef ATTRIBUTE_UNUSED
+# define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+#endif
+
+/* Shift A right by B bits portably, by dividing A by 2**B and
+ truncating towards minus infinity. A and B should be free of side
+ effects, and B should be in the range 0 <= B <= INT_BITS - 2, where
+ INT_BITS is the number of useful bits in an int. GNU code can
+ assume that INT_BITS is at least 32.
+
+ ISO C99 says that A >> B is implementation-defined if A < 0. Some
+ implementations (e.g., UNICOS 9.0 on a Cray Y-MP EL) don't shift
+ right in the usual way when A < 0, so SHR falls back on division if
+ ordinary A >> B doesn't seem to be the usual signed shift. */
+#define SHR(a, b) \
+ (-1 >> 1 == -1 \
+ ? (a) >> (b) \
+ : (a) / (1 << (b)) - ((a) % (1 << (b)) < 0))
+
+#define EPOCH_YEAR 1970
+#define TM_YEAR_BASE 1900
+
+#define HOUR(x) ((x) * 60)
+
+/* An integer value, and the number of digits in its textual
+ representation. */
+typedef struct
+{
+ bool negative;
+ long int value;
+ size_t digits;
+} textint;
+
+/* An entry in the lexical lookup table. */
+typedef struct
+{
+ char const *name;
+ int type;
+ int value;
+} table;
+
+/* Meridian: am, pm, or 24-hour style. */
+enum { MERam, MERpm, MER24 };
+
+enum { BILLION = 1000000000, LOG10_BILLION = 9 };
+
+/* Relative times. */
+typedef struct
+{
+ /* Relative year, month, day, hour, minutes, seconds, and nanoseconds. */
+ long int year;
+ long int month;
+ long int day;
+ long int hour;
+ long int minutes;
+ long int seconds;
+ long int ns;
+} relative_time;
+
+#if HAVE_COMPOUND_LITERALS
+# define RELATIVE_TIME_0 ((relative_time) { 0, 0, 0, 0, 0, 0, 0 })
+#else
+static relative_time const RELATIVE_TIME_0;
+#endif
+
+/* Information passed to and from the parser. */
+typedef struct
+{
+ /* The input string remaining to be parsed. */
+ const char *input;
+
+ /* N, if this is the Nth Tuesday. */
+ long int day_ordinal;
+
+ /* Day of week; Sunday is 0. */
+ int day_number;
+
+ /* tm_isdst flag for the local zone. */
+ int local_isdst;
+
+ /* Time zone, in minutes east of UTC. */
+ long int time_zone;
+
+ /* Style used for time. */
+ int meridian;
+
+ /* Gregorian year, month, day, hour, minutes, seconds, and nanoseconds. */
+ textint year;
+ long int month;
+ long int day;
+ long int hour;
+ long int minutes;
+ struct timespec seconds; /* includes nanoseconds */
+
+ /* Relative year, month, day, hour, minutes, seconds, and nanoseconds. */
+ relative_time rel;
+
+ /* Presence or counts of nonterminals of various flavors parsed so far. */
+ bool timespec_seen;
+ bool rels_seen;
+ size_t dates_seen;
+ size_t days_seen;
+ size_t local_zones_seen;
+ size_t dsts_seen;
+ size_t times_seen;
+ size_t zones_seen;
+
+ /* Table of local time zone abbrevations, terminated by a null entry. */
+ table local_time_zone_table[3];
+} parser_control;
+
+union YYSTYPE;
+static int yylex (union YYSTYPE *, parser_control *);
+static int yyerror (parser_control const *, char const *);
+static long int time_zone_hhmm (textint, long int);
+
+
+
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages. */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table. */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ tAGO = 258,
+ tDST = 259,
+ tYEAR_UNIT = 260,
+ tMONTH_UNIT = 261,
+ tHOUR_UNIT = 262,
+ tMINUTE_UNIT = 263,
+ tSEC_UNIT = 264,
+ tDAY_UNIT = 265,
+ tDAY = 266,
+ tDAYZONE = 267,
+ tLOCAL_ZONE = 268,
+ tMERIDIAN = 269,
+ tMONTH = 270,
+ tORDINAL = 271,
+ tZONE = 272,
+ tSNUMBER = 273,
+ tUNUMBER = 274,
+ tSDECIMAL_NUMBER = 275,
+ tUDECIMAL_NUMBER = 276
+ };
+#endif
+/* Tokens. */
+#define tAGO 258
+#define tDST 259
+#define tYEAR_UNIT 260
+#define tMONTH_UNIT 261
+#define tHOUR_UNIT 262
+#define tMINUTE_UNIT 263
+#define tSEC_UNIT 264
+#define tDAY_UNIT 265
+#define tDAY 266
+#define tDAYZONE 267
+#define tLOCAL_ZONE 268
+#define tMERIDIAN 269
+#define tMONTH 270
+#define tORDINAL 271
+#define tZONE 272
+#define tSNUMBER 273
+#define tUNUMBER 274
+#define tSDECIMAL_NUMBER 275
+#define tUDECIMAL_NUMBER 276
+
+
+
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+{/* Line 191 of yacc.c. */
+#line 214 "getdate.y"
+
+ long int intval;
+ textint textintval;
+ struct timespec timespec;
+ relative_time rel;
+}
+/* Line 191 of yacc.c. */
+#line 351 "getdate.c"
+ YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+
+
+
+/* Copy the second part of user declarations. */
+
+/* Line 221 of yacc.c. */
+#line 364 "getdate.c"
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+# define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+# define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# else
+# define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if YYENABLE_NLS
+# if ENABLE_NLS
+# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_(msgid) dgettext ("bison-runtime", msgid)
+# endif
+# endif
+# ifndef YY_
+# define YY_(msgid) msgid
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E. */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions. */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int yyi)
+#else
+static int
+YYID (yyi)
+ int yyi;
+#endif
+{
+ return yyi;
+}
+#endif
+
+#if ! defined yyoverflow || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# ifdef YYSTACK_USE_ALLOCA
+# if YYSTACK_USE_ALLOCA
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
+# elif defined __BUILTIN_VA_ARG_INCR
+# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+# elif defined _AIX
+# define YYSTACK_ALLOC __alloca
+# elif defined _MSC_VER
+# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+# define alloca _alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+# ifndef YYSTACK_ALLOC_MAXIMUM
+ /* The OS might guarantee only one guard page at the bottom of the stack,
+ and a page size can be as small as 4096 bytes. So we cannot safely
+ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
+ to allow for a few compiler-allocated temporary stack slots. */
+# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# endif
+# if (defined __cplusplus && ! defined _STDLIB_H \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# endif
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+
+
+#if (! defined yyoverflow \
+ && (! defined __cplusplus \
+ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member. */
+union yyalloc
+{
+ yytype_int16 yyss;
+ YYSTYPE yyvs;
+ };
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined __GNUC__ && 1 < __GNUC__
+# define YYCOPY(To, From, Count) \
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# else
+# define YYCOPY(To, From, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (To)[yyi] = (From)[yyi]; \
+ } \
+ while (YYID (0))
+# endif
+# endif
+
+/* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+# define YYSTACK_RELOCATE(Stack) \
+ do \
+ { \
+ YYSIZE_T yynewbytes; \
+ YYCOPY (&yyptr->Stack, Stack, yysize); \
+ Stack = &yyptr->Stack; \
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ } \
+ while (YYID (0))
+
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 12
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 91
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 26
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 19
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 78
+/* YYNRULES -- Number of states. */
+#define YYNSTATES 96
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+#define YYUNDEFTOK 2
+#define YYMAXUTOK 276
+
+#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+static const yytype_uint8 yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 24, 2, 2, 25, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 23, 2,
+ 2, 2, 2, 2, 22, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+ YYRHS. */
+static const yytype_uint8 yyprhs[] =
+{
+ 0, 0, 3, 5, 7, 10, 11, 14, 16, 18,
+ 20, 22, 24, 26, 28, 31, 36, 42, 49, 57,
+ 59, 62, 64, 67, 71, 73, 76, 78, 81, 84,
+ 87, 91, 97, 101, 105, 109, 112, 117, 120, 124,
+ 127, 129, 132, 135, 137, 140, 143, 145, 148, 151,
+ 153, 156, 159, 161, 164, 167, 169, 172, 175, 178,
+ 181, 183, 185, 188, 191, 194, 197, 200, 203, 205,
+ 207, 209, 211, 213, 215, 217, 218, 221, 222
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yytype_int8 yyrhs[] =
+{
+ 27, 0, -1, 28, -1, 29, -1, 22, 39, -1,
+ -1, 29, 30, -1, 31, -1, 32, -1, 33, -1,
+ 35, -1, 34, -1, 36, -1, 42, -1, 19, 14,
+ -1, 19, 23, 19, 44, -1, 19, 23, 19, 18,
+ 43, -1, 19, 23, 19, 23, 41, 44, -1, 19,
+ 23, 19, 23, 41, 18, 43, -1, 13, -1, 13,
+ 4, -1, 17, -1, 17, 38, -1, 17, 18, 43,
+ -1, 12, -1, 17, 4, -1, 11, -1, 11, 24,
+ -1, 16, 11, -1, 19, 11, -1, 19, 25, 19,
+ -1, 19, 25, 19, 25, 19, -1, 19, 18, 18,
+ -1, 19, 15, 18, -1, 15, 18, 18, -1, 15,
+ 19, -1, 15, 19, 24, 19, -1, 19, 15, -1,
+ 19, 15, 19, -1, 37, 3, -1, 37, -1, 16,
+ 5, -1, 19, 5, -1, 5, -1, 16, 6, -1,
+ 19, 6, -1, 6, -1, 16, 10, -1, 19, 10,
+ -1, 10, -1, 16, 7, -1, 19, 7, -1, 7,
+ -1, 16, 8, -1, 19, 8, -1, 8, -1, 16,
+ 9, -1, 19, 9, -1, 20, 9, -1, 21, 9,
+ -1, 9, -1, 38, -1, 18, 5, -1, 18, 6,
+ -1, 18, 10, -1, 18, 7, -1, 18, 8, -1,
+ 18, 9, -1, 40, -1, 41, -1, 20, -1, 18,
+ -1, 21, -1, 19, -1, 19, -1, -1, 23, 19,
+ -1, -1, 14, -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const yytype_uint16 yyrline[] =
+{
+ 0, 240, 240, 241, 245, 252, 254, 258, 260, 262,
+ 264, 266, 268, 270, 274, 282, 290, 300, 307, 319,
+ 324, 332, 334, 344, 346, 348, 353, 358, 363, 368,
+ 376, 381, 401, 408, 416, 424, 429, 435, 440, 449,
+ 459, 472, 474, 476, 478, 480, 482, 484, 486, 488,
+ 490, 492, 494, 496, 498, 500, 502, 504, 506, 508,
+ 510, 512, 516, 518, 520, 522, 524, 526, 530, 530,
+ 533, 534, 539, 540, 545, 583, 584, 590, 591
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+ "$end", "error", "$undefined", "tAGO", "tDST", "tYEAR_UNIT",
+ "tMONTH_UNIT", "tHOUR_UNIT", "tMINUTE_UNIT", "tSEC_UNIT", "tDAY_UNIT",
+ "tDAY", "tDAYZONE", "tLOCAL_ZONE", "tMERIDIAN", "tMONTH", "tORDINAL",
+ "tZONE", "tSNUMBER", "tUNUMBER", "tSDECIMAL_NUMBER", "tUDECIMAL_NUMBER",
+ "'@'", "':'", "','", "'/'", "$accept", "spec", "timespec", "items",
+ "item", "time", "local_zone", "zone", "day", "date", "rel", "relunit",
+ "relunit_snumber", "seconds", "signed_seconds", "unsigned_seconds",
+ "number", "o_colon_minutes", "o_merid", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+ token YYLEX-NUM. */
+static const yytype_uint16 yytoknum[] =
+{
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 64, 58, 44, 47
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const yytype_uint8 yyr1[] =
+{
+ 0, 26, 27, 27, 28, 29, 29, 30, 30, 30,
+ 30, 30, 30, 30, 31, 31, 31, 31, 31, 32,
+ 32, 33, 33, 33, 33, 33, 34, 34, 34, 34,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 36,
+ 36, 37, 37, 37, 37, 37, 37, 37, 37, 37,
+ 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
+ 37, 37, 38, 38, 38, 38, 38, 38, 39, 39,
+ 40, 40, 41, 41, 42, 43, 43, 44, 44
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 1, 1, 2, 0, 2, 1, 1, 1,
+ 1, 1, 1, 1, 2, 4, 5, 6, 7, 1,
+ 2, 1, 2, 3, 1, 2, 1, 2, 2, 2,
+ 3, 5, 3, 3, 3, 2, 4, 2, 3, 2,
+ 1, 2, 2, 1, 2, 2, 1, 2, 2, 1,
+ 2, 2, 1, 2, 2, 1, 2, 2, 2, 2,
+ 1, 1, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 1, 0, 2, 0, 1
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+ STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+ means the default is an error. */
+static const yytype_uint8 yydefact[] =
+{
+ 5, 0, 0, 2, 3, 71, 73, 70, 72, 4,
+ 68, 69, 1, 43, 46, 52, 55, 60, 49, 26,
+ 24, 19, 0, 0, 21, 0, 74, 0, 0, 6,
+ 7, 8, 9, 11, 10, 12, 40, 61, 13, 27,
+ 20, 0, 35, 41, 44, 50, 53, 56, 47, 28,
+ 25, 75, 22, 62, 63, 65, 66, 67, 64, 42,
+ 45, 51, 54, 57, 48, 29, 14, 37, 0, 0,
+ 0, 58, 59, 39, 34, 0, 0, 23, 33, 38,
+ 32, 77, 30, 36, 76, 78, 75, 0, 15, 0,
+ 16, 77, 31, 75, 17, 18
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int8 yydefgoto[] =
+{
+ -1, 2, 3, 4, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 9, 10, 11, 38, 77, 88
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+#define YYPACT_NINF -79
+static const yytype_int8 yypact[] =
+{
+ -10, 47, 27, -79, 25, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, 5,
+ -79, 59, 43, 42, 10, 49, -5, 62, 63, -79,
+ -79, -79, -79, -79, -79, -79, 70, -79, -79, -79,
+ -79, 56, 52, -79, -79, -79, -79, -79, -79, -79,
+ -79, 16, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, -79, -79, -79, -79, -79, 51, 57, 58,
+ 60, -79, -79, -79, -79, 61, 64, -79, -79, -79,
+ -79, -7, 53, -79, -79, -79, 65, -2, -79, 66,
+ -79, 46, -79, 65, -79, -79
+};
+
+/* YYPGOTO[NTERM-NUM]. */
+static const yytype_int8 yypgoto[] =
+{
+ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
+ -79, -79, 67, -79, -79, -6, -79, -78, -9
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule which
+ number is the opposite. If zero, do what YYDEFACT says.
+ If YYTABLE_NINF, syntax error. */
+#define YYTABLE_NINF -1
+static const yytype_uint8 yytable[] =
+{
+ 59, 60, 61, 62, 63, 64, 65, 85, 90, 66,
+ 67, 86, 1, 68, 50, 95, 87, 6, 69, 8,
+ 70, 53, 54, 55, 56, 57, 58, 12, 51, 39,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 76,
+ 22, 23, 24, 25, 26, 27, 28, 43, 44, 45,
+ 46, 47, 48, 49, 53, 54, 55, 56, 57, 58,
+ 85, 41, 42, 40, 93, 5, 6, 7, 8, 78,
+ 79, 71, 72, 73, 74, 80, 75, 81, 89, 82,
+ 83, 91, 94, 84, 0, 92, 0, 0, 76, 0,
+ 0, 52
+};
+
+static const yytype_int8 yycheck[] =
+{
+ 5, 6, 7, 8, 9, 10, 11, 14, 86, 14,
+ 15, 18, 22, 18, 4, 93, 23, 19, 23, 21,
+ 25, 5, 6, 7, 8, 9, 10, 0, 18, 24,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 23,
+ 15, 16, 17, 18, 19, 20, 21, 5, 6, 7,
+ 8, 9, 10, 11, 5, 6, 7, 8, 9, 10,
+ 14, 18, 19, 4, 18, 18, 19, 20, 21, 18,
+ 19, 9, 9, 3, 18, 18, 24, 19, 25, 19,
+ 19, 87, 91, 19, -1, 19, -1, -1, 23, -1,
+ -1, 24
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const yytype_uint8 yystos[] =
+{
+ 0, 22, 27, 28, 29, 18, 19, 20, 21, 39,
+ 40, 41, 0, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 15, 16, 17, 18, 19, 20, 21, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 42, 24,
+ 4, 18, 19, 5, 6, 7, 8, 9, 10, 11,
+ 4, 18, 38, 5, 6, 7, 8, 9, 10, 5,
+ 6, 7, 8, 9, 10, 11, 14, 15, 18, 23,
+ 25, 9, 9, 3, 18, 24, 23, 43, 18, 19,
+ 18, 19, 19, 19, 19, 14, 18, 23, 44, 25,
+ 43, 41, 19, 18, 44, 43
+};
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY (-2)
+#define YYEOF 0
+
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror. This remains here temporarily
+ to ease the transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+
+#define YYFAIL goto yyerrlab
+
+#define YYRECOVERING() (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ yytoken = YYTRANSLATE (yychar); \
+ YYPOPSTACK (1); \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (pc, YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+while (YYID (0))
+
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ if (YYID (N)) \
+ { \
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ } \
+ else \
+ { \
+ (Current).first_line = (Current).last_line = \
+ YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = \
+ YYRHSLOC (Rhs, 0).last_column; \
+ } \
+ while (YYID (0))
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+ This macro was not mandated originally: define only if we know
+ we won't break user code: when these are the locations we know. */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+# define YY_LOCATION_PRINT(File, Loc) \
+ fprintf (File, "%d.%d-%d.%d", \
+ (Loc).first_line, (Loc).first_column, \
+ (Loc).last_line, (Loc).last_column)
+# else
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments. */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (&yylval, YYLEX_PARAM)
+#else
+# define YYLEX yylex (&yylval, pc)
+#endif
+
+/* Enable debugging if requested. */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+# define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value, pc); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, parser_control *pc)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep, pc)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+ parser_control *pc;
+#endif
+{
+ if (!yyvaluep)
+ return;
+ YYUSE (pc);
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+ YYUSE (yyoutput);
+# endif
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, parser_control *pc)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep, pc)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+ parser_control *pc;
+#endif
+{
+ if (yytype < YYNTOKENS)
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep, pc);
+ YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+#else
+static void
+yy_stack_print (yybottom, yytop)
+ yytype_int16 *yybottom;
+ yytype_int16 *yytop;
+#endif
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (; yybottom <= yytop; yybottom++)
+ {
+ int yybot = *yybottom;
+ YYFPRINTF (stderr, " %d", yybot);
+ }
+ YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule, parser_control *pc)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule, pc)
+ YYSTYPE *yyvsp;
+ int yyrule;
+ parser_control *pc;
+#endif
+{
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ unsigned long int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ fprintf (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ , pc);
+ fprintf (stderr, "\n");
+ }
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyvsp, Rule, pc); \
+} while (YYID (0))
+
+/* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks. */
+#ifndef YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+# if defined __GLIBC__ && defined _STRING_H
+# define yystrlen strlen
+# else
+/* Return the length of YYSTR. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+ const char *yystr;
+#endif
+{
+ YYSIZE_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
+ continue;
+ return yylen;
+}
+# endif
+# endif
+
+# ifndef yystpcpy
+# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+# define yystpcpy stpcpy
+# else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+yystpcpy (yydest, yysrc)
+ char *yydest;
+ const char *yysrc;
+#endif
+{
+ char *yyd = yydest;
+ const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+
+ return yyd - 1;
+}
+# endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+ quotes and backslashes, so that it's suitable for yyerror. The
+ heuristic is that double-quoting is unnecessary unless the string
+ contains an apostrophe, a comma, or backslash (other than
+ backslash-backslash). YYSTR is taken from yytname. If YYRES is
+ null, do not copy; instead, return the length of what the result
+ would have been. */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+ if (*yystr == '"')
+ {
+ YYSIZE_T yyn = 0;
+ char const *yyp = yystr;
+
+ for (;;)
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ /* Fall through. */
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
+ do_not_strip_quotes: ;
+ }
+
+ if (! yyres)
+ return yystrlen (yystr);
+
+ return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+/* Copy into YYRESULT an error message about the unexpected token
+ YYCHAR while in state YYSTATE. Return the number of bytes copied,
+ including the terminating null byte. If YYRESULT is null, do not
+ copy anything; just return the number of bytes that would be
+ copied. As a special case, return 0 if an ordinary "syntax error"
+ message will do. Return YYSIZE_MAXIMUM if overflow occurs during
+ size calculation. */
+static YYSIZE_T
+yysyntax_error (char *yyresult, int yystate, int yychar)
+{
+ int yyn = yypact[yystate];
+
+ if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+ return 0;
+ else
+ {
+ int yytype = YYTRANSLATE (yychar);
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ int yysize_overflow = 0;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ int yyx;
+
+# if 0
+ /* This is so xgettext sees the translatable formats that are
+ constructed on the fly. */
+ YY_("syntax error, unexpected %s");
+ YY_("syntax error, unexpected %s, expecting %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+# endif
+ char *yyfmt;
+ char const *yyf;
+ static char const yyunexpected[] = "syntax error, unexpected %s";
+ static char const yyexpecting[] = ", expecting %s";
+ static char const yyor[] = " or %s";
+ char yyformat[sizeof yyunexpected
+ + sizeof yyexpecting - 1
+ + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+ * (sizeof yyor - 1))];
+ char const *yyprefix = yyexpecting;
+
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yycount = 1;
+
+ yyarg[0] = yytname[yytype];
+ yyfmt = yystpcpy (yyformat, yyunexpected);
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ yyformat[sizeof yyunexpected - 1] = '\0';
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
+ yyfmt = yystpcpy (yyfmt, yyprefix);
+ yyprefix = yyor;
+ }
+
+ yyf = YY_(yyformat);
+ yysize1 = yysize + yystrlen (yyf);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
+
+ if (yysize_overflow)
+ return YYSIZE_MAXIMUM;
+
+ if (yyresult)
+ {
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ char *yyp = yyresult;
+ int yyi = 0;
+ while ((*yyp = *yyf) != '\0')
+ {
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyf += 2;
+ }
+ else
+ {
+ yyp++;
+ yyf++;
+ }
+ }
+ }
+ return yysize;
+ }
+}
+#endif /* YYERROR_VERBOSE */
+
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, parser_control *pc)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep, pc)
+ const char *yymsg;
+ int yytype;
+ YYSTYPE *yyvaluep;
+ parser_control *pc;
+#endif
+{
+ YYUSE (yyvaluep);
+ YYUSE (pc);
+
+ if (!yymsg)
+ yymsg = "Deleting";
+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+ switch (yytype)
+ {
+
+ default:
+ break;
+ }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes. */
+
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (parser_control *pc);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+
+
+
+/*----------.
+| yyparse. |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (parser_control *pc)
+#else
+int
+yyparse (pc)
+ parser_control *pc;
+#endif
+#endif
+{
+ /* The lookahead symbol. */
+int yychar;
+
+/* The semantic value of the lookahead symbol. */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far. */
+int yynerrs;
+
+ int yystate;
+ int yyn;
+ int yyresult;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+ /* Lookahead token as an internal (translated) token number. */
+ int yytoken = 0;
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+ /* Three stacks and their tools:
+ `yyss': related to states,
+ `yyvs': related to semantic values,
+ `yyls': related to locations.
+
+ Refer to the stacks thru separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss = yyssa;
+ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+ YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+
+ YYSIZE_T yystacksize = YYINITDEPTH;
+
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
+
+ /* The number of symbols on the RHS of the reduced rule.
+ Keep to zero when no symbol should be popped. */
+ int yylen = 0;
+
+ YYDPRINTF ((stderr, "Starting parse\n"));
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+
+ yyssp = yyss;
+ yyvsp = yyvs;
+
+ goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate. |
+`------------------------------------------------------------*/
+ yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. So pushing a state here evens the stacks. */
+ yyssp++;
+
+ yysetstate:
+ *yyssp = yystate;
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ yytype_int16 *yyss1 = yyss;
+
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+ yyoverflow (YY_("memory exhausted"),
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+
+ &yystacksize);
+
+ yyss = yyss1;
+ yyvs = yyvs1;
+ }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+ goto yyexhaustedlab;
+# else
+ /* Extend the stack our own way. */
+ if (YYMAXDEPTH <= yystacksize)
+ goto yyexhaustedlab;
+ yystacksize *= 2;
+ if (YYMAXDEPTH < yystacksize)
+ yystacksize = YYMAXDEPTH;
+
+ {
+ yytype_int16 *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyexhaustedlab;
+ YYSTACK_RELOCATE (yyss);
+ YYSTACK_RELOCATE (yyvs);
+
+# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+# endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+
+
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+ (unsigned long int) yystacksize));
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ YYABORT;
+ }
+
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+ if (yystate == YYFINAL)
+ YYACCEPT;
+
+ goto yybackup;
+
+/*-----------.
+| yybackup. |
+`-----------*/
+yybackup:
+
+ /* Do appropriate processing given the current state. Read a
+ lookahead token if we need one and don't already have one. */
+
+ /* First try to decide what to do without reference to lookahead token. */
+ yyn = yypact[yystate];
+ if (yyn == YYPACT_NINF)
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
+ if (yychar == YYEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token: "));
+ yychar = YYLEX;
+ }
+
+ if (yychar <= YYEOF)
+ {
+ yychar = yytoken = YYEOF;
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
+ }
+ else
+ {
+ yytoken = YYTRANSLATE (yychar);
+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+ }
+
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
+ detect an error, take that action. */
+ yyn += yytoken;
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+ goto yydefault;
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+ if (yyn == 0 || yyn == YYTABLE_NINF)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ /* Shift the lookahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+ /* Discard the shifted token. */
+ yychar = YYEMPTY;
+
+ yystate = yyn;
+ *++yyvsp = yylval;
+
+ goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction. |
+`-----------------------------*/
+yyreduce:
+ /* yyn is the number of a rule to reduce with. */
+ yylen = yyr2[yyn];
+
+ /* If YYLEN is nonzero, implement the default value of the action:
+ `$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to garbage.
+ This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that YYVAL may be used uninitialized. */
+ yyval = yyvsp[1-yylen];
+
+
+ YY_REDUCE_PRINT (yyn);
+ switch (yyn)
+ {
+ case 4:
+/* Line 1269 of yacc.c. */
+#line 246 "getdate.y"
+ {
+ pc->seconds = (yyvsp[(2) - (2)].timespec);
+ pc->timespec_seen = true;
+ }
+ break;
+
+ case 7:
+/* Line 1269 of yacc.c. */
+#line 259 "getdate.y"
+ { pc->times_seen++; }
+ break;
+
+ case 8:
+/* Line 1269 of yacc.c. */
+#line 261 "getdate.y"
+ { pc->local_zones_seen++; }
+ break;
+
+ case 9:
+/* Line 1269 of yacc.c. */
+#line 263 "getdate.y"
+ { pc->zones_seen++; }
+ break;
+
+ case 10:
+/* Line 1269 of yacc.c. */
+#line 265 "getdate.y"
+ { pc->dates_seen++; }
+ break;
+
+ case 11:
+/* Line 1269 of yacc.c. */
+#line 267 "getdate.y"
+ { pc->days_seen++; }
+ break;
+
+ case 12:
+/* Line 1269 of yacc.c. */
+#line 269 "getdate.y"
+ { pc->rels_seen = true; }
+ break;
+
+ case 14:
+/* Line 1269 of yacc.c. */
+#line 275 "getdate.y"
+ {
+ pc->hour = (yyvsp[(1) - (2)].textintval).value;
+ pc->minutes = 0;
+ pc->seconds.tv_sec = 0;
+ pc->seconds.tv_nsec = 0;
+ pc->meridian = (yyvsp[(2) - (2)].intval);
+ }
+ break;
+
+ case 15:
+/* Line 1269 of yacc.c. */
+#line 283 "getdate.y"
+ {
+ pc->hour = (yyvsp[(1) - (4)].textintval).value;
+ pc->minutes = (yyvsp[(3) - (4)].textintval).value;
+ pc->seconds.tv_sec = 0;
+ pc->seconds.tv_nsec = 0;
+ pc->meridian = (yyvsp[(4) - (4)].intval);
+ }
+ break;
+
+ case 16:
+/* Line 1269 of yacc.c. */
+#line 291 "getdate.y"
+ {
+ pc->hour = (yyvsp[(1) - (5)].textintval).value;
+ pc->minutes = (yyvsp[(3) - (5)].textintval).value;
+ pc->seconds.tv_sec = 0;
+ pc->seconds.tv_nsec = 0;
+ pc->meridian = MER24;
+ pc->zones_seen++;
+ pc->time_zone = time_zone_hhmm ((yyvsp[(4) - (5)].textintval), (yyvsp[(5) - (5)].intval));
+ }
+ break;
+
+ case 17:
+/* Line 1269 of yacc.c. */
+#line 301 "getdate.y"
+ {
+ pc->hour = (yyvsp[(1) - (6)].textintval).value;
+ pc->minutes = (yyvsp[(3) - (6)].textintval).value;
+ pc->seconds = (yyvsp[(5) - (6)].timespec);
+ pc->meridian = (yyvsp[(6) - (6)].intval);
+ }
+ break;
+
+ case 18:
+/* Line 1269 of yacc.c. */
+#line 308 "getdate.y"
+ {
+ pc->hour = (yyvsp[(1) - (7)].textintval).value;
+ pc->minutes = (yyvsp[(3) - (7)].textintval).value;
+ pc->seconds = (yyvsp[(5) - (7)].timespec);
+ pc->meridian = MER24;
+ pc->zones_seen++;
+ pc->time_zone = time_zone_hhmm ((yyvsp[(6) - (7)].textintval), (yyvsp[(7) - (7)].intval));
+ }
+ break;
+
+ case 19:
+/* Line 1269 of yacc.c. */
+#line 320 "getdate.y"
+ {
+ pc->local_isdst = (yyvsp[(1) - (1)].intval);
+ pc->dsts_seen += (0 < (yyvsp[(1) - (1)].intval));
+ }
+ break;
+
+ case 20:
+/* Line 1269 of yacc.c. */
+#line 325 "getdate.y"
+ {
+ pc->local_isdst = 1;
+ pc->dsts_seen += (0 < (yyvsp[(1) - (2)].intval)) + 1;
+ }
+ break;
+
+ case 21:
+/* Line 1269 of yacc.c. */
+#line 333 "getdate.y"
+ { pc->time_zone = (yyvsp[(1) - (1)].intval); }
+ break;
+
+ case 22:
+/* Line 1269 of yacc.c. */
+#line 335 "getdate.y"
+ { pc->time_zone = (yyvsp[(1) - (2)].intval);
+ pc->rel.ns += (yyvsp[(2) - (2)].rel).ns;
+ pc->rel.seconds += (yyvsp[(2) - (2)].rel).seconds;
+ pc->rel.minutes += (yyvsp[(2) - (2)].rel).minutes;
+ pc->rel.hour += (yyvsp[(2) - (2)].rel).hour;
+ pc->rel.day += (yyvsp[(2) - (2)].rel).day;
+ pc->rel.month += (yyvsp[(2) - (2)].rel).month;
+ pc->rel.year += (yyvsp[(2) - (2)].rel).year;
+ pc->rels_seen = true; }
+ break;
+
+ case 23:
+/* Line 1269 of yacc.c. */
+#line 345 "getdate.y"
+ { pc->time_zone = (yyvsp[(1) - (3)].intval) + time_zone_hhmm ((yyvsp[(2) - (3)].textintval), (yyvsp[(3) - (3)].intval)); }
+ break;
+
+ case 24:
+/* Line 1269 of yacc.c. */
+#line 347 "getdate.y"
+ { pc->time_zone = (yyvsp[(1) - (1)].intval) + 60; }
+ break;
+
+ case 25:
+/* Line 1269 of yacc.c. */
+#line 349 "getdate.y"
+ { pc->time_zone = (yyvsp[(1) - (2)].intval) + 60; }
+ break;
+
+ case 26:
+/* Line 1269 of yacc.c. */
+#line 354 "getdate.y"
+ {
+ pc->day_ordinal = 1;
+ pc->day_number = (yyvsp[(1) - (1)].intval);
+ }
+ break;
+
+ case 27:
+/* Line 1269 of yacc.c. */
+#line 359 "getdate.y"
+ {
+ pc->day_ordinal = 1;
+ pc->day_number = (yyvsp[(1) - (2)].intval);
+ }
+ break;
+
+ case 28:
+/* Line 1269 of yacc.c. */
+#line 364 "getdate.y"
+ {
+ pc->day_ordinal = (yyvsp[(1) - (2)].intval);
+ pc->day_number = (yyvsp[(2) - (2)].intval);
+ }
+ break;
+
+ case 29:
+/* Line 1269 of yacc.c. */
+#line 369 "getdate.y"
+ {
+ pc->day_ordinal = (yyvsp[(1) - (2)].textintval).value;
+ pc->day_number = (yyvsp[(2) - (2)].intval);
+ }
+ break;
+
+ case 30:
+/* Line 1269 of yacc.c. */
+#line 377 "getdate.y"
+ {
+ pc->month = (yyvsp[(1) - (3)].textintval).value;
+ pc->day = (yyvsp[(3) - (3)].textintval).value;
+ }
+ break;
+
+ case 31:
+/* Line 1269 of yacc.c. */
+#line 382 "getdate.y"
+ {
+ /* Interpret as YYYY/MM/DD if the first value has 4 or more digits,
+ otherwise as MM/DD/YY.
+ The goal in recognizing YYYY/MM/DD is solely to support legacy
+ machine-generated dates like those in an RCS log listing. If
+ you want portability, use the ISO 8601 format. */
+ if (4 <= (yyvsp[(1) - (5)].textintval).digits)
+ {
+ pc->year = (yyvsp[(1) - (5)].textintval);
+ pc->month = (yyvsp[(3) - (5)].textintval).value;
+ pc->day = (yyvsp[(5) - (5)].textintval).value;
+ }
+ else
+ {
+ pc->month = (yyvsp[(1) - (5)].textintval).value;
+ pc->day = (yyvsp[(3) - (5)].textintval).value;
+ pc->year = (yyvsp[(5) - (5)].textintval);
+ }
+ }
+ break;
+
+ case 32:
+/* Line 1269 of yacc.c. */
+#line 402 "getdate.y"
+ {
+ /* ISO 8601 format. YYYY-MM-DD. */
+ pc->year = (yyvsp[(1) - (3)].textintval);
+ pc->month = -(yyvsp[(2) - (3)].textintval).value;
+ pc->day = -(yyvsp[(3) - (3)].textintval).value;
+ }
+ break;
+
+ case 33:
+/* Line 1269 of yacc.c. */
+#line 409 "getdate.y"
+ {
+ /* e.g. 17-JUN-1992. */
+ pc->day = (yyvsp[(1) - (3)].textintval).value;
+ pc->month = (yyvsp[(2) - (3)].intval);
+ pc->year.value = -(yyvsp[(3) - (3)].textintval).value;
+ pc->year.digits = (yyvsp[(3) - (3)].textintval).digits;
+ }
+ break;
+
+ case 34:
+/* Line 1269 of yacc.c. */
+#line 417 "getdate.y"
+ {
+ /* e.g. JUN-17-1992. */
+ pc->month = (yyvsp[(1) - (3)].intval);
+ pc->day = -(yyvsp[(2) - (3)].textintval).value;
+ pc->year.value = -(yyvsp[(3) - (3)].textintval).value;
+ pc->year.digits = (yyvsp[(3) - (3)].textintval).digits;
+ }
+ break;
+
+ case 35:
+/* Line 1269 of yacc.c. */
+#line 425 "getdate.y"
+ {
+ pc->month = (yyvsp[(1) - (2)].intval);
+ pc->day = (yyvsp[(2) - (2)].textintval).value;
+ }
+ break;
+
+ case 36:
+/* Line 1269 of yacc.c. */
+#line 430 "getdate.y"
+ {
+ pc->month = (yyvsp[(1) - (4)].intval);
+ pc->day = (yyvsp[(2) - (4)].textintval).value;
+ pc->year = (yyvsp[(4) - (4)].textintval);
+ }
+ break;
+
+ case 37:
+/* Line 1269 of yacc.c. */
+#line 436 "getdate.y"
+ {
+ pc->day = (yyvsp[(1) - (2)].textintval).value;
+ pc->month = (yyvsp[(2) - (2)].intval);
+ }
+ break;
+
+ case 38:
+/* Line 1269 of yacc.c. */
+#line 441 "getdate.y"
+ {
+ pc->day = (yyvsp[(1) - (3)].textintval).value;
+ pc->month = (yyvsp[(2) - (3)].intval);
+ pc->year = (yyvsp[(3) - (3)].textintval);
+ }
+ break;
+
+ case 39:
+/* Line 1269 of yacc.c. */
+#line 450 "getdate.y"
+ {
+ pc->rel.ns -= (yyvsp[(1) - (2)].rel).ns;
+ pc->rel.seconds -= (yyvsp[(1) - (2)].rel).seconds;
+ pc->rel.minutes -= (yyvsp[(1) - (2)].rel).minutes;
+ pc->rel.hour -= (yyvsp[(1) - (2)].rel).hour;
+ pc->rel.day -= (yyvsp[(1) - (2)].rel).day;
+ pc->rel.month -= (yyvsp[(1) - (2)].rel).month;
+ pc->rel.year -= (yyvsp[(1) - (2)].rel).year;
+ }
+ break;
+
+ case 40:
+/* Line 1269 of yacc.c. */
+#line 460 "getdate.y"
+ {
+ pc->rel.ns += (yyvsp[(1) - (1)].rel).ns;
+ pc->rel.seconds += (yyvsp[(1) - (1)].rel).seconds;
+ pc->rel.minutes += (yyvsp[(1) - (1)].rel).minutes;
+ pc->rel.hour += (yyvsp[(1) - (1)].rel).hour;
+ pc->rel.day += (yyvsp[(1) - (1)].rel).day;
+ pc->rel.month += (yyvsp[(1) - (1)].rel).month;
+ pc->rel.year += (yyvsp[(1) - (1)].rel).year;
+ }
+ break;
+
+ case 41:
+/* Line 1269 of yacc.c. */
+#line 473 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).year = (yyvsp[(1) - (2)].intval); }
+ break;
+
+ case 42:
+/* Line 1269 of yacc.c. */
+#line 475 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).year = (yyvsp[(1) - (2)].textintval).value; }
+ break;
+
+ case 43:
+/* Line 1269 of yacc.c. */
+#line 477 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).year = 1; }
+ break;
+
+ case 44:
+/* Line 1269 of yacc.c. */
+#line 479 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).month = (yyvsp[(1) - (2)].intval); }
+ break;
+
+ case 45:
+/* Line 1269 of yacc.c. */
+#line 481 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).month = (yyvsp[(1) - (2)].textintval).value; }
+ break;
+
+ case 46:
+/* Line 1269 of yacc.c. */
+#line 483 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).month = 1; }
+ break;
+
+ case 47:
+/* Line 1269 of yacc.c. */
+#line 485 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).day = (yyvsp[(1) - (2)].intval) * (yyvsp[(2) - (2)].intval); }
+ break;
+
+ case 48:
+/* Line 1269 of yacc.c. */
+#line 487 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).day = (yyvsp[(1) - (2)].textintval).value * (yyvsp[(2) - (2)].intval); }
+ break;
+
+ case 49:
+/* Line 1269 of yacc.c. */
+#line 489 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).day = (yyvsp[(1) - (1)].intval); }
+ break;
+
+ case 50:
+/* Line 1269 of yacc.c. */
+#line 491 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).hour = (yyvsp[(1) - (2)].intval); }
+ break;
+
+ case 51:
+/* Line 1269 of yacc.c. */
+#line 493 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).hour = (yyvsp[(1) - (2)].textintval).value; }
+ break;
+
+ case 52:
+/* Line 1269 of yacc.c. */
+#line 495 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).hour = 1; }
+ break;
+
+ case 53:
+/* Line 1269 of yacc.c. */
+#line 497 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).minutes = (yyvsp[(1) - (2)].intval); }
+ break;
+
+ case 54:
+/* Line 1269 of yacc.c. */
+#line 499 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).minutes = (yyvsp[(1) - (2)].textintval).value; }
+ break;
+
+ case 55:
+/* Line 1269 of yacc.c. */
+#line 501 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).minutes = 1; }
+ break;
+
+ case 56:
+/* Line 1269 of yacc.c. */
+#line 503 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[(1) - (2)].intval); }
+ break;
+
+ case 57:
+/* Line 1269 of yacc.c. */
+#line 505 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[(1) - (2)].textintval).value; }
+ break;
+
+ case 58:
+/* Line 1269 of yacc.c. */
+#line 507 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[(1) - (2)].timespec).tv_sec; (yyval.rel).ns = (yyvsp[(1) - (2)].timespec).tv_nsec; }
+ break;
+
+ case 59:
+/* Line 1269 of yacc.c. */
+#line 509 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[(1) - (2)].timespec).tv_sec; (yyval.rel).ns = (yyvsp[(1) - (2)].timespec).tv_nsec; }
+ break;
+
+ case 60:
+/* Line 1269 of yacc.c. */
+#line 511 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = 1; }
+ break;
+
+ case 62:
+/* Line 1269 of yacc.c. */
+#line 517 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).year = (yyvsp[(1) - (2)].textintval).value; }
+ break;
+
+ case 63:
+/* Line 1269 of yacc.c. */
+#line 519 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).month = (yyvsp[(1) - (2)].textintval).value; }
+ break;
+
+ case 64:
+/* Line 1269 of yacc.c. */
+#line 521 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).day = (yyvsp[(1) - (2)].textintval).value * (yyvsp[(2) - (2)].intval); }
+ break;
+
+ case 65:
+/* Line 1269 of yacc.c. */
+#line 523 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).hour = (yyvsp[(1) - (2)].textintval).value; }
+ break;
+
+ case 66:
+/* Line 1269 of yacc.c. */
+#line 525 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).minutes = (yyvsp[(1) - (2)].textintval).value; }
+ break;
+
+ case 67:
+/* Line 1269 of yacc.c. */
+#line 527 "getdate.y"
+ { (yyval.rel) = RELATIVE_TIME_0; (yyval.rel).seconds = (yyvsp[(1) - (2)].textintval).value; }
+ break;
+
+ case 71:
+/* Line 1269 of yacc.c. */
+#line 535 "getdate.y"
+ { (yyval.timespec).tv_sec = (yyvsp[(1) - (1)].textintval).value; (yyval.timespec).tv_nsec = 0; }
+ break;
+
+ case 73:
+/* Line 1269 of yacc.c. */
+#line 541 "getdate.y"
+ { (yyval.timespec).tv_sec = (yyvsp[(1) - (1)].textintval).value; (yyval.timespec).tv_nsec = 0; }
+ break;
+
+ case 74:
+/* Line 1269 of yacc.c. */
+#line 546 "getdate.y"
+ {
+ if (pc->dates_seen && ! pc->year.digits
+ && ! pc->rels_seen && (pc->times_seen || 2 < (yyvsp[(1) - (1)].textintval).digits))
+ pc->year = (yyvsp[(1) - (1)].textintval);
+ else
+ {
+ if (4 < (yyvsp[(1) - (1)].textintval).digits)
+ {
+ pc->dates_seen++;
+ pc->day = (yyvsp[(1) - (1)].textintval).value % 100;
+ pc->month = ((yyvsp[(1) - (1)].textintval).value / 100) % 100;
+ pc->year.value = (yyvsp[(1) - (1)].textintval).value / 10000;
+ pc->year.digits = (yyvsp[(1) - (1)].textintval).digits - 4;
+ }
+ else
+ {
+ pc->times_seen++;
+ if ((yyvsp[(1) - (1)].textintval).digits <= 2)
+ {
+ pc->hour = (yyvsp[(1) - (1)].textintval).value;
+ pc->minutes = 0;
+ }
+ else
+ {
+ pc->hour = (yyvsp[(1) - (1)].textintval).value / 100;
+ pc->minutes = (yyvsp[(1) - (1)].textintval).value % 100;
+ }
+ pc->seconds.tv_sec = 0;
+ pc->seconds.tv_nsec = 0;
+ pc->meridian = MER24;
+ }
+ }
+ }
+ break;
+
+ case 75:
+/* Line 1269 of yacc.c. */
+#line 583 "getdate.y"
+ { (yyval.intval) = -1; }
+ break;
+
+ case 76:
+/* Line 1269 of yacc.c. */
+#line 585 "getdate.y"
+ { (yyval.intval) = (yyvsp[(2) - (2)].textintval).value; }
+ break;
+
+ case 77:
+/* Line 1269 of yacc.c. */
+#line 590 "getdate.y"
+ { (yyval.intval) = MER24; }
+ break;
+
+ case 78:
+/* Line 1269 of yacc.c. */
+#line 592 "getdate.y"
+ { (yyval.intval) = (yyvsp[(1) - (1)].intval); }
+ break;
+
+
+/* Line 1269 of yacc.c. */
+#line 2221 "getdate.c"
+ default: break;
+ }
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+
+ *++yyvsp = yyval;
+
+
+ /* Now `shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTOKENS];
+
+ goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+#if ! YYERROR_VERBOSE
+ yyerror (pc, YY_("syntax error"));
+#else
+ {
+ YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+ if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+ {
+ YYSIZE_T yyalloc = 2 * yysize;
+ if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+ yyalloc = YYSTACK_ALLOC_MAXIMUM;
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+ if (yymsg)
+ yymsg_alloc = yyalloc;
+ else
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ }
+ }
+
+ if (0 < yysize && yysize <= yymsg_alloc)
+ {
+ (void) yysyntax_error (yymsg, yystate, yychar);
+ yyerror (pc, yymsg);
+ }
+ else
+ {
+ yyerror (pc, YY_("syntax error"));
+ if (yysize != 0)
+ goto yyexhaustedlab;
+ }
+ }
+#endif
+ }
+
+
+
+ if (yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse lookahead token after an
+ error, discard it. */
+
+ if (yychar <= YYEOF)
+ {
+ /* Return failure if at end of input. */
+ if (yychar == YYEOF)
+ YYABORT;
+ }
+ else
+ {
+ yydestruct ("Error: discarding",
+ yytoken, &yylval, pc);
+ yychar = YYEMPTY;
+ }
+ }
+
+ /* Else will try to reuse lookahead token after shifting the error
+ token. */
+ goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR. |
+`---------------------------------------------------*/
+yyerrorlab:
+
+ /* Pacify compilers like GCC when the user code never invokes
+ YYERROR and the label yyerrorlab therefore never appears in user
+ code. */
+ if (/*CONSTCOND*/ 0)
+ goto yyerrorlab;
+
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+ yystate = *yyssp;
+ goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR. |
+`-------------------------------------------------------------*/
+yyerrlab1:
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
+
+ for (;;)
+ {
+ yyn = yypact[yystate];
+ if (yyn != YYPACT_NINF)
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
+
+ /* Pop the current state because it cannot handle the error token. */
+ if (yyssp == yyss)
+ YYABORT;
+
+
+ yydestruct ("Error: popping",
+ yystos[yystate], yyvsp, pc);
+ YYPOPSTACK (1);
+ yystate = *yyssp;
+ YY_STACK_PRINT (yyss, yyssp);
+ }
+
+ *++yyvsp = yylval;
+
+
+ /* Shift the error token. */
+ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here. |
+`-------------------------------------*/
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here. |
+`-----------------------------------*/
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here. |
+`-------------------------------------------------*/
+yyexhaustedlab:
+ yyerror (pc, YY_("memory exhausted"));
+ yyresult = 2;
+ /* Fall through. */
+#endif
+
+yyreturn:
+ if (yychar != YYEMPTY)
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval, pc);
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp, pc);
+ YYPOPSTACK (1);
+ }
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+#endif
+ /* Make sure YYID is used. */
+ return YYID (yyresult);
+}
+
+
+/* Line 1486 of yacc.c. */
+#line 595 "getdate.y"
+
+
+static table const meridian_table[] =
+{
+ { "AM", tMERIDIAN, MERam },
+ { "A.M.", tMERIDIAN, MERam },
+ { "PM", tMERIDIAN, MERpm },
+ { "P.M.", tMERIDIAN, MERpm },
+ { NULL, 0, 0 }
+};
+
+static table const dst_table[] =
+{
+ { "DST", tDST, 0 }
+};
+
+static table const month_and_day_table[] =
+{
+ { "JANUARY", tMONTH, 1 },
+ { "FEBRUARY", tMONTH, 2 },
+ { "MARCH", tMONTH, 3 },
+ { "APRIL", tMONTH, 4 },
+ { "MAY", tMONTH, 5 },
+ { "JUNE", tMONTH, 6 },
+ { "JULY", tMONTH, 7 },
+ { "AUGUST", tMONTH, 8 },
+ { "SEPTEMBER",tMONTH, 9 },
+ { "SEPT", tMONTH, 9 },
+ { "OCTOBER", tMONTH, 10 },
+ { "NOVEMBER", tMONTH, 11 },
+ { "DECEMBER", tMONTH, 12 },
+ { "SUNDAY", tDAY, 0 },
+ { "MONDAY", tDAY, 1 },
+ { "TUESDAY", tDAY, 2 },
+ { "TUES", tDAY, 2 },
+ { "WEDNESDAY",tDAY, 3 },
+ { "WEDNES", tDAY, 3 },
+ { "THURSDAY", tDAY, 4 },
+ { "THUR", tDAY, 4 },
+ { "THURS", tDAY, 4 },
+ { "FRIDAY", tDAY, 5 },
+ { "SATURDAY", tDAY, 6 },
+ { NULL, 0, 0 }
+};
+
+static table const time_units_table[] =
+{
+ { "YEAR", tYEAR_UNIT, 1 },
+ { "MONTH", tMONTH_UNIT, 1 },
+ { "FORTNIGHT",tDAY_UNIT, 14 },
+ { "WEEK", tDAY_UNIT, 7 },
+ { "DAY", tDAY_UNIT, 1 },
+ { "HOUR", tHOUR_UNIT, 1 },
+ { "MINUTE", tMINUTE_UNIT, 1 },
+ { "MIN", tMINUTE_UNIT, 1 },
+ { "SECOND", tSEC_UNIT, 1 },
+ { "SEC", tSEC_UNIT, 1 },
+ { NULL, 0, 0 }
+};
+
+/* Assorted relative-time words. */
+static table const relative_time_table[] =
+{
+ { "TOMORROW", tDAY_UNIT, 1 },
+ { "YESTERDAY",tDAY_UNIT, -1 },
+ { "TODAY", tDAY_UNIT, 0 },
+ { "NOW", tDAY_UNIT, 0 },
+ { "LAST", tORDINAL, -1 },
+ { "THIS", tORDINAL, 0 },
+ { "NEXT", tORDINAL, 1 },
+ { "FIRST", tORDINAL, 1 },
+/*{ "SECOND", tORDINAL, 2 }, */
+ { "THIRD", tORDINAL, 3 },
+ { "FOURTH", tORDINAL, 4 },
+ { "FIFTH", tORDINAL, 5 },
+ { "SIXTH", tORDINAL, 6 },
+ { "SEVENTH", tORDINAL, 7 },
+ { "EIGHTH", tORDINAL, 8 },
+ { "NINTH", tORDINAL, 9 },
+ { "TENTH", tORDINAL, 10 },
+ { "ELEVENTH", tORDINAL, 11 },
+ { "TWELFTH", tORDINAL, 12 },
+ { "AGO", tAGO, 1 },
+ { NULL, 0, 0 }
+};
+
+/* The universal time zone table. These labels can be used even for
+ time stamps that would not otherwise be valid, e.g., GMT time
+ stamps in London during summer. */
+static table const universal_time_zone_table[] =
+{
+ { "GMT", tZONE, HOUR ( 0) }, /* Greenwich Mean */
+ { "UT", tZONE, HOUR ( 0) }, /* Universal (Coordinated) */
+ { "UTC", tZONE, HOUR ( 0) },
+ { NULL, 0, 0 }
+};
+
+/* The time zone table. This table is necessarily incomplete, as time
+ zone abbreviations are ambiguous; e.g. Australians interpret "EST"
+ as Eastern time in Australia, not as US Eastern Standard Time.
+ You cannot rely on getdate to handle arbitrary time zone
+ abbreviations; use numeric abbreviations like `-0500' instead. */
+static table const time_zone_table[] =
+{
+ { "WET", tZONE, HOUR ( 0) }, /* Western European */
+ { "WEST", tDAYZONE, HOUR ( 0) }, /* Western European Summer */
+ { "BST", tDAYZONE, HOUR ( 0) }, /* British Summer */
+ { "ART", tZONE, -HOUR ( 3) }, /* Argentina */
+ { "BRT", tZONE, -HOUR ( 3) }, /* Brazil */
+ { "BRST", tDAYZONE, -HOUR ( 3) }, /* Brazil Summer */
+ { "NST", tZONE, -(HOUR ( 3) + 30) }, /* Newfoundland Standard */
+ { "NDT", tDAYZONE,-(HOUR ( 3) + 30) }, /* Newfoundland Daylight */
+ { "AST", tZONE, -HOUR ( 4) }, /* Atlantic Standard */
+ { "ADT", tDAYZONE, -HOUR ( 4) }, /* Atlantic Daylight */
+ { "CLT", tZONE, -HOUR ( 4) }, /* Chile */
+ { "CLST", tDAYZONE, -HOUR ( 4) }, /* Chile Summer */
+ { "EST", tZONE, -HOUR ( 5) }, /* Eastern Standard */
+ { "EDT", tDAYZONE, -HOUR ( 5) }, /* Eastern Daylight */
+ { "CST", tZONE, -HOUR ( 6) }, /* Central Standard */
+ { "CDT", tDAYZONE, -HOUR ( 6) }, /* Central Daylight */
+ { "MST", tZONE, -HOUR ( 7) }, /* Mountain Standard */
+ { "MDT", tDAYZONE, -HOUR ( 7) }, /* Mountain Daylight */
+ { "PST", tZONE, -HOUR ( 8) }, /* Pacific Standard */
+ { "PDT", tDAYZONE, -HOUR ( 8) }, /* Pacific Daylight */
+ { "AKST", tZONE, -HOUR ( 9) }, /* Alaska Standard */
+ { "AKDT", tDAYZONE, -HOUR ( 9) }, /* Alaska Daylight */
+ { "HST", tZONE, -HOUR (10) }, /* Hawaii Standard */
+ { "HAST", tZONE, -HOUR (10) }, /* Hawaii-Aleutian Standard */
+ { "HADT", tDAYZONE, -HOUR (10) }, /* Hawaii-Aleutian Daylight */
+ { "SST", tZONE, -HOUR (12) }, /* Samoa Standard */
+ { "WAT", tZONE, HOUR ( 1) }, /* West Africa */
+ { "CET", tZONE, HOUR ( 1) }, /* Central European */
+ { "CEST", tDAYZONE, HOUR ( 1) }, /* Central European Summer */
+ { "MET", tZONE, HOUR ( 1) }, /* Middle European */
+ { "MEZ", tZONE, HOUR ( 1) }, /* Middle European */
+ { "MEST", tDAYZONE, HOUR ( 1) }, /* Middle European Summer */
+ { "MESZ", tDAYZONE, HOUR ( 1) }, /* Middle European Summer */
+ { "EET", tZONE, HOUR ( 2) }, /* Eastern European */
+ { "EEST", tDAYZONE, HOUR ( 2) }, /* Eastern European Summer */
+ { "CAT", tZONE, HOUR ( 2) }, /* Central Africa */
+ { "SAST", tZONE, HOUR ( 2) }, /* South Africa Standard */
+ { "EAT", tZONE, HOUR ( 3) }, /* East Africa */
+ { "MSK", tZONE, HOUR ( 3) }, /* Moscow */
+ { "MSD", tDAYZONE, HOUR ( 3) }, /* Moscow Daylight */
+ { "IST", tZONE, (HOUR ( 5) + 30) }, /* India Standard */
+ { "SGT", tZONE, HOUR ( 8) }, /* Singapore */
+ { "KST", tZONE, HOUR ( 9) }, /* Korea Standard */
+ { "JST", tZONE, HOUR ( 9) }, /* Japan Standard */
+ { "GST", tZONE, HOUR (10) }, /* Guam Standard */
+ { "NZST", tZONE, HOUR (12) }, /* New Zealand Standard */
+ { "NZDT", tDAYZONE, HOUR (12) }, /* New Zealand Daylight */
+ { NULL, 0, 0 }
+};
+
+/* Military time zone table. */
+static table const military_table[] =
+{
+ { "A", tZONE, -HOUR ( 1) },
+ { "B", tZONE, -HOUR ( 2) },
+ { "C", tZONE, -HOUR ( 3) },
+ { "D", tZONE, -HOUR ( 4) },
+ { "E", tZONE, -HOUR ( 5) },
+ { "F", tZONE, -HOUR ( 6) },
+ { "G", tZONE, -HOUR ( 7) },
+ { "H", tZONE, -HOUR ( 8) },
+ { "I", tZONE, -HOUR ( 9) },
+ { "K", tZONE, -HOUR (10) },
+ { "L", tZONE, -HOUR (11) },
+ { "M", tZONE, -HOUR (12) },
+ { "N", tZONE, HOUR ( 1) },
+ { "O", tZONE, HOUR ( 2) },
+ { "P", tZONE, HOUR ( 3) },
+ { "Q", tZONE, HOUR ( 4) },
+ { "R", tZONE, HOUR ( 5) },
+ { "S", tZONE, HOUR ( 6) },
+ { "T", tZONE, HOUR ( 7) },
+ { "U", tZONE, HOUR ( 8) },
+ { "V", tZONE, HOUR ( 9) },
+ { "W", tZONE, HOUR (10) },
+ { "X", tZONE, HOUR (11) },
+ { "Y", tZONE, HOUR (12) },
+ { "Z", tZONE, HOUR ( 0) },
+ { NULL, 0, 0 }
+};
+
+
+
+/* Convert a time zone expressed as HH:MM into an integer count of
+ minutes. If MM is negative, then S is of the form HHMM and needs
+ to be picked apart; otherwise, S is of the form HH. */
+
+static long int
+time_zone_hhmm (textint s, long int mm)
+{
+ if (mm < 0)
+ return (s.value / 100) * 60 + s.value % 100;
+ else
+ return s.value * 60 + (s.negative ? -mm : mm);
+}
+
+static int
+to_hour (long int hours, int meridian)
+{
+ switch (meridian)
+ {
+ default: /* Pacify GCC. */
+ case MER24:
+ return 0 <= hours && hours < 24 ? hours : -1;
+ case MERam:
+ return 0 < hours && hours < 12 ? hours : hours == 12 ? 0 : -1;
+ case MERpm:
+ return 0 < hours && hours < 12 ? hours + 12 : hours == 12 ? 12 : -1;
+ }
+}
+
+static long int
+to_year (textint textyear)
+{
+ long int year = textyear.value;
+
+ if (year < 0)
+ year = -year;
+
+ /* XPG4 suggests that years 00-68 map to 2000-2068, and
+ years 69-99 map to 1969-1999. */
+ else if (textyear.digits == 2)
+ year += year < 69 ? 2000 : 1900;
+
+ return year;
+}
+
+static table const *
+lookup_zone (parser_control const *pc, char const *name)
+{
+ table const *tp;
+
+ for (tp = universal_time_zone_table; tp->name; tp++)
+ if (strcmp (name, tp->name) == 0)
+ return tp;
+
+ /* Try local zone abbreviations before those in time_zone_table, as
+ the local ones are more likely to be right. */
+ for (tp = pc->local_time_zone_table; tp->name; tp++)
+ if (strcmp (name, tp->name) == 0)
+ return tp;
+
+ for (tp = time_zone_table; tp->name; tp++)
+ if (strcmp (name, tp->name) == 0)
+ return tp;
+
+ return NULL;
+}
+
+#if ! HAVE_TM_GMTOFF
+/* Yield the difference between *A and *B,
+ measured in seconds, ignoring leap seconds.
+ The body of this function is taken directly from the GNU C Library;
+ see src/strftime.c. */
+static long int
+tm_diff (struct tm const *a, struct tm const *b)
+{
+ /* Compute intervening leap days correctly even if year is negative.
+ Take care to avoid int overflow in leap day calculations. */
+ int a4 = SHR (a->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (a->tm_year & 3);
+ int b4 = SHR (b->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (b->tm_year & 3);
+ int a100 = a4 / 25 - (a4 % 25 < 0);
+ int b100 = b4 / 25 - (b4 % 25 < 0);
+ int a400 = SHR (a100, 2);
+ int b400 = SHR (b100, 2);
+ int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400);
+ long int ayear = a->tm_year;
+ long int years = ayear - b->tm_year;
+ long int days = (365 * years + intervening_leap_days
+ + (a->tm_yday - b->tm_yday));
+ return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour))
+ + (a->tm_min - b->tm_min))
+ + (a->tm_sec - b->tm_sec));
+}
+#endif /* ! HAVE_TM_GMTOFF */
+
+static table const *
+lookup_word (parser_control const *pc, char *word)
+{
+ char *p;
+ char *q;
+ size_t wordlen;
+ table const *tp;
+ bool period_found;
+ bool abbrev;
+
+ /* Make it uppercase. */
+ for (p = word; *p; p++)
+ {
+ unsigned char ch = *p;
+ *p = toupper (ch);
+ }
+
+ for (tp = meridian_table; tp->name; tp++)
+ if (strcmp (word, tp->name) == 0)
+ return tp;
+
+ /* See if we have an abbreviation for a month. */
+ wordlen = strlen (word);
+ abbrev = wordlen == 3 || (wordlen == 4 && word[3] == '.');
+
+ for (tp = month_and_day_table; tp->name; tp++)
+ if ((abbrev ? strncmp (word, tp->name, 3) : strcmp (word, tp->name)) == 0)
+ return tp;
+
+ if ((tp = lookup_zone (pc, word)))
+ return tp;
+
+ if (strcmp (word, dst_table[0].name) == 0)
+ return dst_table;
+
+ for (tp = time_units_table; tp->name; tp++)
+ if (strcmp (word, tp->name) == 0)
+ return tp;
+
+ /* Strip off any plural and try the units table again. */
+ if (word[wordlen - 1] == 'S')
+ {
+ word[wordlen - 1] = '\0';
+ for (tp = time_units_table; tp->name; tp++)
+ if (strcmp (word, tp->name) == 0)
+ return tp;
+ word[wordlen - 1] = 'S'; /* For "this" in relative_time_table. */
+ }
+
+ for (tp = relative_time_table; tp->name; tp++)
+ if (strcmp (word, tp->name) == 0)
+ return tp;
+
+ /* Military time zones. */
+ if (wordlen == 1)
+ for (tp = military_table; tp->name; tp++)
+ if (word[0] == tp->name[0])
+ return tp;
+
+ /* Drop out any periods and try the time zone table again. */
+ for (period_found = false, p = q = word; (*p = *q); q++)
+ if (*q == '.')
+ period_found = true;
+ else
+ p++;
+ if (period_found && (tp = lookup_zone (pc, word)))
+ return tp;
+
+ return NULL;
+}
+
+static int
+yylex (YYSTYPE *lvalp, parser_control *pc)
+{
+ unsigned char c;
+ size_t count;
+
+ for (;;)
+ {
+ while (c = *pc->input, isspace (c))
+ pc->input++;
+
+ if (ISDIGIT (c) || c == '-' || c == '+')
+ {
+ char const *p;
+ int sign;
+ unsigned long int value;
+ if (c == '-' || c == '+')
+ {
+ sign = c == '-' ? -1 : 1;
+ while (c = *++pc->input, isspace (c))
+ continue;
+ if (! ISDIGIT (c))
+ /* skip the '-' sign */
+ continue;
+ }
+ else
+ sign = 0;
+ p = pc->input;
+ for (value = 0; ; value *= 10)
+ {
+ unsigned long int value1 = value + (c - '0');
+ if (value1 < value)
+ return '?';
+ value = value1;
+ c = *++p;
+ if (! ISDIGIT (c))
+ break;
+ if (ULONG_MAX / 10 < value)
+ return '?';
+ }
+ if ((c == '.' || c == ',') && ISDIGIT (p[1]))
+ {
+ time_t s;
+ int ns;
+ int digits;
+ unsigned long int value1;
+
+ /* Check for overflow when converting value to time_t. */
+ if (sign < 0)
+ {
+ s = - value;
+ if (0 < s)
+ return '?';
+ value1 = -s;
+ }
+ else
+ {
+ s = value;
+ if (s < 0)
+ return '?';
+ value1 = s;
+ }
+ if (value != value1)
+ return '?';
+
+ /* Accumulate fraction, to ns precision. */
+ p++;
+ ns = *p++ - '0';
+ for (digits = 2; digits <= LOG10_BILLION; digits++)
+ {
+ ns *= 10;
+ if (ISDIGIT (*p))
+ ns += *p++ - '0';
+ }
+
+ /* Skip excess digits, truncating toward -Infinity. */
+ if (sign < 0)
+ for (; ISDIGIT (*p); p++)
+ if (*p != '0')
+ {
+ ns++;
+ break;
+ }
+ while (ISDIGIT (*p))
+ p++;
+
+ /* Adjust to the timespec convention, which is that
+ tv_nsec is always a positive offset even if tv_sec is
+ negative. */
+ if (sign < 0 && ns)
+ {
+ s--;
+ if (! (s < 0))
+ return '?';
+ ns = BILLION - ns;
+ }
+
+ lvalp->timespec.tv_sec = s;
+ lvalp->timespec.tv_nsec = ns;
+ pc->input = p;
+ return sign ? tSDECIMAL_NUMBER : tUDECIMAL_NUMBER;
+ }
+ else
+ {
+ lvalp->textintval.negative = sign < 0;
+ if (sign < 0)
+ {
+ lvalp->textintval.value = - value;
+ if (0 < lvalp->textintval.value)
+ return '?';
+ }
+ else
+ {
+ lvalp->textintval.value = value;
+ if (lvalp->textintval.value < 0)
+ return '?';
+ }
+ lvalp->textintval.digits = p - pc->input;
+ pc->input = p;
+ return sign ? tSNUMBER : tUNUMBER;
+ }
+ }
+
+ if (isalpha (c))
+ {
+ char buff[20];
+ char *p = buff;
+ table const *tp;
+
+ do
+ {
+ if (p < buff + sizeof buff - 1)
+ *p++ = c;
+ c = *++pc->input;
+ }
+ while (isalpha (c) || c == '.');
+
+ *p = '\0';
+ tp = lookup_word (pc, buff);
+ if (! tp)
+ return '?';
+ lvalp->intval = tp->value;
+ return tp->type;
+ }
+
+ if (c != '(')
+ return *pc->input++;
+ count = 0;
+ do
+ {
+ c = *pc->input++;
+ if (c == '\0')
+ return c;
+ if (c == '(')
+ count++;
+ else if (c == ')')
+ count--;
+ }
+ while (count != 0);
+ }
+}
+
+/* Do nothing if the parser reports an error. */
+static int
+yyerror (parser_control const *pc ATTRIBUTE_UNUSED,
+ char const *s ATTRIBUTE_UNUSED)
+{
+ return 0;
+}
+
+/* If *TM0 is the old and *TM1 is the new value of a struct tm after
+ passing it to mktime, return true if it's OK that mktime returned T.
+ It's not OK if *TM0 has out-of-range members. */
+
+static bool
+mktime_ok (struct tm const *tm0, struct tm const *tm1, time_t t)
+{
+ if (t == (time_t) -1)
+ {
+ /* Guard against falsely reporting an error when parsing a time
+ stamp that happens to equal (time_t) -1, on a host that
+ supports such a time stamp. */
+ tm1 = localtime (&t);
+ if (!tm1)
+ return false;
+ }
+
+ return ! ((tm0->tm_sec ^ tm1->tm_sec)
+ | (tm0->tm_min ^ tm1->tm_min)
+ | (tm0->tm_hour ^ tm1->tm_hour)
+ | (tm0->tm_mday ^ tm1->tm_mday)
+ | (tm0->tm_mon ^ tm1->tm_mon)
+ | (tm0->tm_year ^ tm1->tm_year));
+}
+
+/* A reasonable upper bound for the size of ordinary TZ strings.
+ Use heap allocation if TZ's length exceeds this. */
+enum { TZBUFSIZE = 100 };
+
+/* Return a copy of TZ, stored in TZBUF if it fits, and heap-allocated
+ otherwise. */
+static char *
+get_tz (char tzbuf[TZBUFSIZE])
+{
+ char *tz = getenv ("TZ");
+ if (tz)
+ {
+ size_t tzsize = strlen (tz) + 1;
+ tz = (tzsize <= TZBUFSIZE
+ ? memcpy (tzbuf, tz, tzsize)
+ : xmemdup (tz, tzsize));
+ }
+ return tz;
+}
+
+/* Parse a date/time string, storing the resulting time value into *RESULT.
+ The string itself is pointed to by P. Return true if successful.
+ P can be an incomplete or relative time specification; if so, use
+ *NOW as the basis for the returned time. */
+bool
+get_date (struct timespec *result, char const *p, struct timespec const *now)
+{
+ time_t Start;
+ long int Start_ns;
+ struct tm const *tmp;
+ struct tm tm;
+ struct tm tm0;
+ parser_control pc;
+ struct timespec gettime_buffer;
+ unsigned char c;
+ bool tz_was_altered = false;
+ char *tz0 = NULL;
+ char tz0buf[TZBUFSIZE];
+ bool ok = true;
+
+ if (! now)
+ {
+ gettime (&gettime_buffer);
+ now = &gettime_buffer;
+ }
+
+ Start = now->tv_sec;
+ Start_ns = now->tv_nsec;
+
+ tmp = localtime (&now->tv_sec);
+ if (! tmp)
+ return false;
+
+ while (c = *p, isspace (c))
+ p++;
+
+ if (strncmp (p, "TZ=\"", 4) == 0)
+ {
+ char const *tzbase = p + 4;
+ size_t tzsize = 1;
+ char const *s;
+
+ for (s = tzbase; *s; s++, tzsize++)
+ if (*s == '\\')
+ {
+ s++;
+ if (! (*s == '\\' || *s == '"'))
+ break;
+ }
+ else if (*s == '"')
+ {
+ char *z;
+ char *tz1;
+ char tz1buf[TZBUFSIZE];
+ bool large_tz = TZBUFSIZE < tzsize;
+ bool setenv_ok;
+ tz0 = get_tz (tz0buf);
+ z = tz1 = large_tz ? xmalloc (tzsize) : tz1buf;
+ for (s = tzbase; *s != '"'; s++)
+ *z++ = *(s += *s == '\\');
+ *z = '\0';
+ setenv_ok = setenv ("TZ", tz1, 1) == 0;
+ if (large_tz)
+ free (tz1);
+ if (!setenv_ok)
+ goto fail;
+ tz_was_altered = true;
+ p = s + 1;
+ }
+ }
+
+ pc.input = p;
+ pc.year.value = tmp->tm_year;
+ pc.year.value += TM_YEAR_BASE;
+ pc.year.digits = 0;
+ pc.month = tmp->tm_mon + 1;
+ pc.day = tmp->tm_mday;
+ pc.hour = tmp->tm_hour;
+ pc.minutes = tmp->tm_min;
+ pc.seconds.tv_sec = tmp->tm_sec;
+ pc.seconds.tv_nsec = Start_ns;
+ tm.tm_isdst = tmp->tm_isdst;
+
+ pc.meridian = MER24;
+ pc.rel = RELATIVE_TIME_0;
+ pc.timespec_seen = false;
+ pc.rels_seen = false;
+ pc.dates_seen = 0;
+ pc.days_seen = 0;
+ pc.times_seen = 0;
+ pc.local_zones_seen = 0;
+ pc.dsts_seen = 0;
+ pc.zones_seen = 0;
+
+#if HAVE_STRUCT_TM_TM_ZONE
+ pc.local_time_zone_table[0].name = tmp->tm_zone;
+ pc.local_time_zone_table[0].type = tLOCAL_ZONE;
+ pc.local_time_zone_table[0].value = tmp->tm_isdst;
+ pc.local_time_zone_table[1].name = NULL;
+
+ /* Probe the names used in the next three calendar quarters, looking
+ for a tm_isdst different from the one we already have. */
+ {
+ int quarter;
+ for (quarter = 1; quarter <= 3; quarter++)
+ {
+ time_t probe = Start + quarter * (90 * 24 * 60 * 60);
+ struct tm const *probe_tm = localtime (&probe);
+ if (probe_tm && probe_tm->tm_zone
+ && probe_tm->tm_isdst != pc.local_time_zone_table[0].value)
+ {
+ {
+ pc.local_time_zone_table[1].name = probe_tm->tm_zone;
+ pc.local_time_zone_table[1].type = tLOCAL_ZONE;
+ pc.local_time_zone_table[1].value = probe_tm->tm_isdst;
+ pc.local_time_zone_table[2].name = NULL;
+ }
+ break;
+ }
+ }
+ }
+#else
+#if HAVE_TZNAME
+ {
+# ifndef tzname
+ extern char *tzname[];
+# endif
+ int i;
+ for (i = 0; i < 2; i++)
+ {
+ pc.local_time_zone_table[i].name = tzname[i];
+ pc.local_time_zone_table[i].type = tLOCAL_ZONE;
+ pc.local_time_zone_table[i].value = i;
+ }
+ pc.local_time_zone_table[i].name = NULL;
+ }
+#else
+ pc.local_time_zone_table[0].name = NULL;
+#endif
+#endif
+
+ if (pc.local_time_zone_table[0].name && pc.local_time_zone_table[1].name
+ && ! strcmp (pc.local_time_zone_table[0].name,
+ pc.local_time_zone_table[1].name))
+ {
+ /* This locale uses the same abbrevation for standard and
+ daylight times. So if we see that abbreviation, we don't
+ know whether it's daylight time. */
+ pc.local_time_zone_table[0].value = -1;
+ pc.local_time_zone_table[1].name = NULL;
+ }
+
+ if (yyparse (&pc) != 0)
+ goto fail;
+
+ if (pc.timespec_seen)
+ *result = pc.seconds;
+ else
+ {
+ if (1 < (pc.times_seen | pc.dates_seen | pc.days_seen | pc.dsts_seen
+ | (pc.local_zones_seen + pc.zones_seen)))
+ goto fail;
+
+ tm.tm_year = to_year (pc.year) - TM_YEAR_BASE;
+ tm.tm_mon = pc.month - 1;
+ tm.tm_mday = pc.day;
+ if (pc.times_seen || (pc.rels_seen && ! pc.dates_seen && ! pc.days_seen))
+ {
+ tm.tm_hour = to_hour (pc.hour, pc.meridian);
+ if (tm.tm_hour < 0)
+ goto fail;
+ tm.tm_min = pc.minutes;
+ tm.tm_sec = pc.seconds.tv_sec;
+ }
+ else
+ {
+ tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
+ pc.seconds.tv_nsec = 0;
+ }
+
+ /* Let mktime deduce tm_isdst if we have an absolute time stamp. */
+ if (pc.dates_seen | pc.days_seen | pc.times_seen)
+ tm.tm_isdst = -1;
+
+ /* But if the input explicitly specifies local time with or without
+ DST, give mktime that information. */
+ if (pc.local_zones_seen)
+ tm.tm_isdst = pc.local_isdst;
+
+ tm0 = tm;
+
+ Start = mktime (&tm);
+
+ if (! mktime_ok (&tm0, &tm, Start))
+ {
+ if (! pc.zones_seen)
+ goto fail;
+ else
+ {
+ /* Guard against falsely reporting errors near the time_t
+ boundaries when parsing times in other time zones. For
+ example, suppose the input string "1969-12-31 23:00:00 -0100",
+ the current time zone is 8 hours ahead of UTC, and the min
+ time_t value is 1970-01-01 00:00:00 UTC. Then the min
+ localtime value is 1970-01-01 08:00:00, and mktime will
+ therefore fail on 1969-12-31 23:00:00. To work around the
+ problem, set the time zone to 1 hour behind UTC temporarily
+ by setting TZ="XXX1:00" and try mktime again. */
+
+ long int time_zone = pc.time_zone;
+ long int abs_time_zone = time_zone < 0 ? - time_zone : time_zone;
+ long int abs_time_zone_hour = abs_time_zone / 60;
+ int abs_time_zone_min = abs_time_zone % 60;
+ char tz1buf[sizeof "XXX+0:00"
+ + sizeof pc.time_zone * CHAR_BIT / 3];
+ if (!tz_was_altered)
+ tz0 = get_tz (tz0buf);
+ sprintf (tz1buf, "XXX%s%ld:%02d", "-" + (time_zone < 0),
+ abs_time_zone_hour, abs_time_zone_min);
+ if (setenv ("TZ", tz1buf, 1) != 0)
+ goto fail;
+ tz_was_altered = true;
+ tm = tm0;
+ Start = mktime (&tm);
+ if (! mktime_ok (&tm0, &tm, Start))
+ goto fail;
+ }
+ }
+
+ if (pc.days_seen && ! pc.dates_seen)
+ {
+ tm.tm_mday += ((pc.day_number - tm.tm_wday + 7) % 7
+ + 7 * (pc.day_ordinal - (0 < pc.day_ordinal)));
+ tm.tm_isdst = -1;
+ Start = mktime (&tm);
+ if (Start == (time_t) -1)
+ goto fail;
+ }
+
+ if (pc.zones_seen)
+ {
+ long int delta = pc.time_zone * 60;
+ time_t t1;
+#ifdef HAVE_TM_GMTOFF
+ delta -= tm.tm_gmtoff;
+#else
+ time_t t = Start;
+ struct tm const *gmt = gmtime (&t);
+ if (! gmt)
+ goto fail;
+ delta -= tm_diff (&tm, gmt);
+#endif
+ t1 = Start - delta;
+ if ((Start < t1) != (delta < 0))
+ goto fail; /* time_t overflow */
+ Start = t1;
+ }
+
+ /* Add relative date. */
+ if (pc.rel.year | pc.rel.month | pc.rel.day)
+ {
+ int year = tm.tm_year + pc.rel.year;
+ int month = tm.tm_mon + pc.rel.month;
+ int day = tm.tm_mday + pc.rel.day;
+ if (((year < tm.tm_year) ^ (pc.rel.year < 0))
+ | ((month < tm.tm_mon) ^ (pc.rel.month < 0))
+ | ((day < tm.tm_mday) ^ (pc.rel.day < 0)))
+ goto fail;
+ tm.tm_year = year;
+ tm.tm_mon = month;
+ tm.tm_mday = day;
+ tm.tm_hour = tm0.tm_hour;
+ tm.tm_min = tm0.tm_min;
+ tm.tm_sec = tm0.tm_sec;
+ tm.tm_isdst = tm0.tm_isdst;
+ Start = mktime (&tm);
+ if (Start == (time_t) -1)
+ goto fail;
+ }
+
+ /* Add relative hours, minutes, and seconds. On hosts that support
+ leap seconds, ignore the possibility of leap seconds; e.g.,
+ "+ 10 minutes" adds 600 seconds, even if one of them is a
+ leap second. Typically this is not what the user wants, but it's
+ too hard to do it the other way, because the time zone indicator
+ must be applied before relative times, and if mktime is applied
+ again the time zone will be lost. */
+ {
+ long int sum_ns = pc.seconds.tv_nsec + pc.rel.ns;
+ long int normalized_ns = (sum_ns % BILLION + BILLION) % BILLION;
+ time_t t0 = Start;
+ long int d1 = 60 * 60 * pc.rel.hour;
+ time_t t1 = t0 + d1;
+ long int d2 = 60 * pc.rel.minutes;
+ time_t t2 = t1 + d2;
+ long int d3 = pc.rel.seconds;
+ time_t t3 = t2 + d3;
+ long int d4 = (sum_ns - normalized_ns) / BILLION;
+ time_t t4 = t3 + d4;
+
+ if ((d1 / (60 * 60) ^ pc.rel.hour)
+ | (d2 / 60 ^ pc.rel.minutes)
+ | ((t1 < t0) ^ (d1 < 0))
+ | ((t2 < t1) ^ (d2 < 0))
+ | ((t3 < t2) ^ (d3 < 0))
+ | ((t4 < t3) ^ (d4 < 0)))
+ goto fail;
+
+ result->tv_sec = t4;
+ result->tv_nsec = normalized_ns;
+ }
+ }
+
+ goto done;
+
+ fail:
+ ok = false;
+ done:
+ if (tz_was_altered)
+ ok &= (tz0 ? setenv ("TZ", tz0, 1) : unsetenv ("TZ")) == 0;
+ if (tz0 != tz0buf)
+ free (tz0);
+ return ok;
+}
+
+#if TEST
+
+int
+main (int ac, char **av)
+{
+ char buff[BUFSIZ];
+
+ printf ("Enter date, or blank line to exit.\n\t> ");
+ fflush (stdout);
+
+ buff[BUFSIZ - 1] = '\0';
+ while (fgets (buff, BUFSIZ - 1, stdin) && buff[0])
+ {
+ struct timespec d;
+ struct tm const *tm;
+ if (! get_date (&d, buff, NULL))
+ printf ("Bad format - couldn't convert.\n");
+ else if (! (tm = localtime (&d.tv_sec)))
+ {
+ long int sec = d.tv_sec;
+ printf ("localtime (%ld) failed\n", sec);
+ }
+ else
+ {
+ int ns = d.tv_nsec;
+ printf ("%04ld-%02d-%02d %02d:%02d:%02d.%09d\n",
+ tm->tm_year + 1900L, tm->tm_mon + 1, tm->tm_mday,
+ tm->tm_hour, tm->tm_min, tm->tm_sec, ns);
+ }
+ printf ("\t> ");
+ fflush (stdout);
+ }
+ return 0;
+}
+#endif /* TEST */
+
diff --git a/lib/getdate.h b/lib/getdate.h
new file mode 100644
index 0000000..142231e
--- /dev/null
+++ b/lib/getdate.h
@@ -0,0 +1,23 @@
+/* Parse a string into an internal time stamp.
+
+ Copyright (C) 1995, 1997, 1998, 2003, 2004, 2007 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <stdbool.h>
+#include <time.h>
+
+bool get_date (struct timespec *, char const *, struct timespec const *);
diff --git a/lib/getdate.y b/lib/getdate.y
new file mode 100644
index 0000000..cbf3ca1
--- /dev/null
+++ b/lib/getdate.y
@@ -0,0 +1,1520 @@
+%{
+/* Parse a string into an internal time stamp.
+
+ Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Originally written by Steven M. Bellovin <smb@research.att.com> while
+ at the University of North Carolina at Chapel Hill. Later tweaked by
+ a couple of people on Usenet. Completely overhauled by Rich $alz
+ <rsalz@bbn.com> and Jim Berets <jberets@bbn.com> in August, 1990.
+
+ Modified by Paul Eggert <eggert@twinsun.com> in August 1999 to do
+ the right thing about local DST. Also modified by Paul Eggert
+ <eggert@cs.ucla.edu> in February 2004 to support
+ nanosecond-resolution time stamps, and in October 2004 to support
+ TZ strings in dates. */
+
+/* FIXME: Check for arithmetic overflow in all cases, not just
+ some of them. */
+
+#include <config.h>
+
+#include "getdate.h"
+#include "timespec.h"
+
+/* There's no need to extend the stack, so there's no need to involve
+ alloca. */
+#define YYSTACK_USE_ALLOCA 0
+
+/* Tell Bison how much stack space is needed. 20 should be plenty for
+ this grammar, which is not right recursive. Beware setting it too
+ high, since that might cause problems on machines whose
+ implementations have lame stack-overflow checking. */
+#define YYMAXDEPTH 20
+#define YYINITDEPTH YYMAXDEPTH
+
+/* Since the code of getdate.y is not included in the Emacs executable
+ itself, there is no need to #define static in this file. Even if
+ the code were included in the Emacs executable, it probably
+ wouldn't do any harm to #undef it here; this will only cause
+ problems if we try to write to a static variable, which I don't
+ think this code needs to do. */
+#ifdef emacs
+# undef static
+#endif
+
+#include <ctype.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "setenv.h"
+#include "xalloc.h"
+
+
+/* ISDIGIT differs from isdigit, as follows:
+ - Its arg may be any int or unsigned int; it need not be an unsigned char
+ or EOF.
+ - It's typically faster.
+ POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
+ isdigit unless it's important to use the locale's definition
+ of `digit' even when the host does not conform to POSIX. */
+#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
+
+#ifndef __attribute__
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
+# define __attribute__(x)
+# endif
+#endif
+
+#ifndef ATTRIBUTE_UNUSED
+# define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+#endif
+
+/* Shift A right by B bits portably, by dividing A by 2**B and
+ truncating towards minus infinity. A and B should be free of side
+ effects, and B should be in the range 0 <= B <= INT_BITS - 2, where
+ INT_BITS is the number of useful bits in an int. GNU code can
+ assume that INT_BITS is at least 32.
+
+ ISO C99 says that A >> B is implementation-defined if A < 0. Some
+ implementations (e.g., UNICOS 9.0 on a Cray Y-MP EL) don't shift
+ right in the usual way when A < 0, so SHR falls back on division if
+ ordinary A >> B doesn't seem to be the usual signed shift. */
+#define SHR(a, b) \
+ (-1 >> 1 == -1 \
+ ? (a) >> (b) \
+ : (a) / (1 << (b)) - ((a) % (1 << (b)) < 0))
+
+#define EPOCH_YEAR 1970
+#define TM_YEAR_BASE 1900
+
+#define HOUR(x) ((x) * 60)
+
+/* An integer value, and the number of digits in its textual
+ representation. */
+typedef struct
+{
+ bool negative;
+ long int value;
+ size_t digits;
+} textint;
+
+/* An entry in the lexical lookup table. */
+typedef struct
+{
+ char const *name;
+ int type;
+ int value;
+} table;
+
+/* Meridian: am, pm, or 24-hour style. */
+enum { MERam, MERpm, MER24 };
+
+enum { BILLION = 1000000000, LOG10_BILLION = 9 };
+
+/* Relative times. */
+typedef struct
+{
+ /* Relative year, month, day, hour, minutes, seconds, and nanoseconds. */
+ long int year;
+ long int month;
+ long int day;
+ long int hour;
+ long int minutes;
+ long int seconds;
+ long int ns;
+} relative_time;
+
+#if HAVE_COMPOUND_LITERALS
+# define RELATIVE_TIME_0 ((relative_time) { 0, 0, 0, 0, 0, 0, 0 })
+#else
+static relative_time const RELATIVE_TIME_0;
+#endif
+
+/* Information passed to and from the parser. */
+typedef struct
+{
+ /* The input string remaining to be parsed. */
+ const char *input;
+
+ /* N, if this is the Nth Tuesday. */
+ long int day_ordinal;
+
+ /* Day of week; Sunday is 0. */
+ int day_number;
+
+ /* tm_isdst flag for the local zone. */
+ int local_isdst;
+
+ /* Time zone, in minutes east of UTC. */
+ long int time_zone;
+
+ /* Style used for time. */
+ int meridian;
+
+ /* Gregorian year, month, day, hour, minutes, seconds, and nanoseconds. */
+ textint year;
+ long int month;
+ long int day;
+ long int hour;
+ long int minutes;
+ struct timespec seconds; /* includes nanoseconds */
+
+ /* Relative year, month, day, hour, minutes, seconds, and nanoseconds. */
+ relative_time rel;
+
+ /* Presence or counts of nonterminals of various flavors parsed so far. */
+ bool timespec_seen;
+ bool rels_seen;
+ size_t dates_seen;
+ size_t days_seen;
+ size_t local_zones_seen;
+ size_t dsts_seen;
+ size_t times_seen;
+ size_t zones_seen;
+
+ /* Table of local time zone abbrevations, terminated by a null entry. */
+ table local_time_zone_table[3];
+} parser_control;
+
+union YYSTYPE;
+static int yylex (union YYSTYPE *, parser_control *);
+static int yyerror (parser_control const *, char const *);
+static long int time_zone_hhmm (textint, long int);
+
+%}
+
+/* We want a reentrant parser, even if the TZ manipulation and the calls to
+ localtime and gmtime are not reentrant. */
+%pure-parser
+%parse-param { parser_control *pc }
+%lex-param { parser_control *pc }
+
+/* This grammar has 20 shift/reduce conflicts. */
+%expect 20
+
+%union
+{
+ long int intval;
+ textint textintval;
+ struct timespec timespec;
+ relative_time rel;
+}
+
+%token tAGO tDST
+
+%token tYEAR_UNIT tMONTH_UNIT tHOUR_UNIT tMINUTE_UNIT tSEC_UNIT
+%token <intval> tDAY_UNIT
+
+%token <intval> tDAY tDAYZONE tLOCAL_ZONE tMERIDIAN
+%token <intval> tMONTH tORDINAL tZONE
+
+%token <textintval> tSNUMBER tUNUMBER
+%token <timespec> tSDECIMAL_NUMBER tUDECIMAL_NUMBER
+
+%type <intval> o_colon_minutes o_merid
+%type <timespec> seconds signed_seconds unsigned_seconds
+
+%type <rel> relunit relunit_snumber
+
+%%
+
+spec:
+ timespec
+ | items
+ ;
+
+timespec:
+ '@' seconds
+ {
+ pc->seconds = $2;
+ pc->timespec_seen = true;
+ }
+ ;
+
+items:
+ /* empty */
+ | items item
+ ;
+
+item:
+ time
+ { pc->times_seen++; }
+ | local_zone
+ { pc->local_zones_seen++; }
+ | zone
+ { pc->zones_seen++; }
+ | date
+ { pc->dates_seen++; }
+ | day
+ { pc->days_seen++; }
+ | rel
+ { pc->rels_seen = true; }
+ | number
+ ;
+
+time:
+ tUNUMBER tMERIDIAN
+ {
+ pc->hour = $1.value;
+ pc->minutes = 0;
+ pc->seconds.tv_sec = 0;
+ pc->seconds.tv_nsec = 0;
+ pc->meridian = $2;
+ }
+ | tUNUMBER ':' tUNUMBER o_merid
+ {
+ pc->hour = $1.value;
+ pc->minutes = $3.value;
+ pc->seconds.tv_sec = 0;
+ pc->seconds.tv_nsec = 0;
+ pc->meridian = $4;
+ }
+ | tUNUMBER ':' tUNUMBER tSNUMBER o_colon_minutes
+ {
+ pc->hour = $1.value;
+ pc->minutes = $3.value;
+ pc->seconds.tv_sec = 0;
+ pc->seconds.tv_nsec = 0;
+ pc->meridian = MER24;
+ pc->zones_seen++;
+ pc->time_zone = time_zone_hhmm ($4, $5);
+ }
+ | tUNUMBER ':' tUNUMBER ':' unsigned_seconds o_merid
+ {
+ pc->hour = $1.value;
+ pc->minutes = $3.value;
+ pc->seconds = $5;
+ pc->meridian = $6;
+ }
+ | tUNUMBER ':' tUNUMBER ':' unsigned_seconds tSNUMBER o_colon_minutes
+ {
+ pc->hour = $1.value;
+ pc->minutes = $3.value;
+ pc->seconds = $5;
+ pc->meridian = MER24;
+ pc->zones_seen++;
+ pc->time_zone = time_zone_hhmm ($6, $7);
+ }
+ ;
+
+local_zone:
+ tLOCAL_ZONE
+ {
+ pc->local_isdst = $1;
+ pc->dsts_seen += (0 < $1);
+ }
+ | tLOCAL_ZONE tDST
+ {
+ pc->local_isdst = 1;
+ pc->dsts_seen += (0 < $1) + 1;
+ }
+ ;
+
+zone:
+ tZONE
+ { pc->time_zone = $1; }
+ | tZONE relunit_snumber
+ { pc->time_zone = $1;
+ pc->rel.ns += $2.ns;
+ pc->rel.seconds += $2.seconds;
+ pc->rel.minutes += $2.minutes;
+ pc->rel.hour += $2.hour;
+ pc->rel.day += $2.day;
+ pc->rel.month += $2.month;
+ pc->rel.year += $2.year;
+ pc->rels_seen = true; }
+ | tZONE tSNUMBER o_colon_minutes
+ { pc->time_zone = $1 + time_zone_hhmm ($2, $3); }
+ | tDAYZONE
+ { pc->time_zone = $1 + 60; }
+ | tZONE tDST
+ { pc->time_zone = $1 + 60; }
+ ;
+
+day:
+ tDAY
+ {
+ pc->day_ordinal = 1;
+ pc->day_number = $1;
+ }
+ | tDAY ','
+ {
+ pc->day_ordinal = 1;
+ pc->day_number = $1;
+ }
+ | tORDINAL tDAY
+ {
+ pc->day_ordinal = $1;
+ pc->day_number = $2;
+ }
+ | tUNUMBER tDAY
+ {
+ pc->day_ordinal = $1.value;
+ pc->day_number = $2;
+ }
+ ;
+
+date:
+ tUNUMBER '/' tUNUMBER
+ {
+ pc->month = $1.value;
+ pc->day = $3.value;
+ }
+ | tUNUMBER '/' tUNUMBER '/' tUNUMBER
+ {
+ /* Interpret as YYYY/MM/DD if the first value has 4 or more digits,
+ otherwise as MM/DD/YY.
+ The goal in recognizing YYYY/MM/DD is solely to support legacy
+ machine-generated dates like those in an RCS log listing. If
+ you want portability, use the ISO 8601 format. */
+ if (4 <= $1.digits)
+ {
+ pc->year = $1;
+ pc->month = $3.value;
+ pc->day = $5.value;
+ }
+ else
+ {
+ pc->month = $1.value;
+ pc->day = $3.value;
+ pc->year = $5;
+ }
+ }
+ | tUNUMBER tSNUMBER tSNUMBER
+ {
+ /* ISO 8601 format. YYYY-MM-DD. */
+ pc->year = $1;
+ pc->month = -$2.value;
+ pc->day = -$3.value;
+ }
+ | tUNUMBER tMONTH tSNUMBER
+ {
+ /* e.g. 17-JUN-1992. */
+ pc->day = $1.value;
+ pc->month = $2;
+ pc->year.value = -$3.value;
+ pc->year.digits = $3.digits;
+ }
+ | tMONTH tSNUMBER tSNUMBER
+ {
+ /* e.g. JUN-17-1992. */
+ pc->month = $1;
+ pc->day = -$2.value;
+ pc->year.value = -$3.value;
+ pc->year.digits = $3.digits;
+ }
+ | tMONTH tUNUMBER
+ {
+ pc->month = $1;
+ pc->day = $2.value;
+ }
+ | tMONTH tUNUMBER ',' tUNUMBER
+ {
+ pc->month = $1;
+ pc->day = $2.value;
+ pc->year = $4;
+ }
+ | tUNUMBER tMONTH
+ {
+ pc->day = $1.value;
+ pc->month = $2;
+ }
+ | tUNUMBER tMONTH tUNUMBER
+ {
+ pc->day = $1.value;
+ pc->month = $2;
+ pc->year = $3;
+ }
+ ;
+
+rel:
+ relunit tAGO
+ {
+ pc->rel.ns -= $1.ns;
+ pc->rel.seconds -= $1.seconds;
+ pc->rel.minutes -= $1.minutes;
+ pc->rel.hour -= $1.hour;
+ pc->rel.day -= $1.day;
+ pc->rel.month -= $1.month;
+ pc->rel.year -= $1.year;
+ }
+ | relunit
+ {
+ pc->rel.ns += $1.ns;
+ pc->rel.seconds += $1.seconds;
+ pc->rel.minutes += $1.minutes;
+ pc->rel.hour += $1.hour;
+ pc->rel.day += $1.day;
+ pc->rel.month += $1.month;
+ pc->rel.year += $1.year;
+ }
+ ;
+
+relunit:
+ tORDINAL tYEAR_UNIT
+ { $$ = RELATIVE_TIME_0; $$.year = $1; }
+ | tUNUMBER tYEAR_UNIT
+ { $$ = RELATIVE_TIME_0; $$.year = $1.value; }
+ | tYEAR_UNIT
+ { $$ = RELATIVE_TIME_0; $$.year = 1; }
+ | tORDINAL tMONTH_UNIT
+ { $$ = RELATIVE_TIME_0; $$.month = $1; }
+ | tUNUMBER tMONTH_UNIT
+ { $$ = RELATIVE_TIME_0; $$.month = $1.value; }
+ | tMONTH_UNIT
+ { $$ = RELATIVE_TIME_0; $$.month = 1; }
+ | tORDINAL tDAY_UNIT
+ { $$ = RELATIVE_TIME_0; $$.day = $1 * $2; }
+ | tUNUMBER tDAY_UNIT
+ { $$ = RELATIVE_TIME_0; $$.day = $1.value * $2; }
+ | tDAY_UNIT
+ { $$ = RELATIVE_TIME_0; $$.day = $1; }
+ | tORDINAL tHOUR_UNIT
+ { $$ = RELATIVE_TIME_0; $$.hour = $1; }
+ | tUNUMBER tHOUR_UNIT
+ { $$ = RELATIVE_TIME_0; $$.hour = $1.value; }
+ | tHOUR_UNIT
+ { $$ = RELATIVE_TIME_0; $$.hour = 1; }
+ | tORDINAL tMINUTE_UNIT
+ { $$ = RELATIVE_TIME_0; $$.minutes = $1; }
+ | tUNUMBER tMINUTE_UNIT
+ { $$ = RELATIVE_TIME_0; $$.minutes = $1.value; }
+ | tMINUTE_UNIT
+ { $$ = RELATIVE_TIME_0; $$.minutes = 1; }
+ | tORDINAL tSEC_UNIT
+ { $$ = RELATIVE_TIME_0; $$.seconds = $1; }
+ | tUNUMBER tSEC_UNIT
+ { $$ = RELATIVE_TIME_0; $$.seconds = $1.value; }
+ | tSDECIMAL_NUMBER tSEC_UNIT
+ { $$ = RELATIVE_TIME_0; $$.seconds = $1.tv_sec; $$.ns = $1.tv_nsec; }
+ | tUDECIMAL_NUMBER tSEC_UNIT
+ { $$ = RELATIVE_TIME_0; $$.seconds = $1.tv_sec; $$.ns = $1.tv_nsec; }
+ | tSEC_UNIT
+ { $$ = RELATIVE_TIME_0; $$.seconds = 1; }
+ | relunit_snumber
+ ;
+
+relunit_snumber:
+ tSNUMBER tYEAR_UNIT
+ { $$ = RELATIVE_TIME_0; $$.year = $1.value; }
+ | tSNUMBER tMONTH_UNIT
+ { $$ = RELATIVE_TIME_0; $$.month = $1.value; }
+ | tSNUMBER tDAY_UNIT
+ { $$ = RELATIVE_TIME_0; $$.day = $1.value * $2; }
+ | tSNUMBER tHOUR_UNIT
+ { $$ = RELATIVE_TIME_0; $$.hour = $1.value; }
+ | tSNUMBER tMINUTE_UNIT
+ { $$ = RELATIVE_TIME_0; $$.minutes = $1.value; }
+ | tSNUMBER tSEC_UNIT
+ { $$ = RELATIVE_TIME_0; $$.seconds = $1.value; }
+ ;
+
+seconds: signed_seconds | unsigned_seconds;
+
+signed_seconds:
+ tSDECIMAL_NUMBER
+ | tSNUMBER
+ { $$.tv_sec = $1.value; $$.tv_nsec = 0; }
+ ;
+
+unsigned_seconds:
+ tUDECIMAL_NUMBER
+ | tUNUMBER
+ { $$.tv_sec = $1.value; $$.tv_nsec = 0; }
+ ;
+
+number:
+ tUNUMBER
+ {
+ if (pc->dates_seen && ! pc->year.digits
+ && ! pc->rels_seen && (pc->times_seen || 2 < $1.digits))
+ pc->year = $1;
+ else
+ {
+ if (4 < $1.digits)
+ {
+ pc->dates_seen++;
+ pc->day = $1.value % 100;
+ pc->month = ($1.value / 100) % 100;
+ pc->year.value = $1.value / 10000;
+ pc->year.digits = $1.digits - 4;
+ }
+ else
+ {
+ pc->times_seen++;
+ if ($1.digits <= 2)
+ {
+ pc->hour = $1.value;
+ pc->minutes = 0;
+ }
+ else
+ {
+ pc->hour = $1.value / 100;
+ pc->minutes = $1.value % 100;
+ }
+ pc->seconds.tv_sec = 0;
+ pc->seconds.tv_nsec = 0;
+ pc->meridian = MER24;
+ }
+ }
+ }
+ ;
+
+o_colon_minutes:
+ /* empty */
+ { $$ = -1; }
+ | ':' tUNUMBER
+ { $$ = $2.value; }
+ ;
+
+o_merid:
+ /* empty */
+ { $$ = MER24; }
+ | tMERIDIAN
+ { $$ = $1; }
+ ;
+
+%%
+
+static table const meridian_table[] =
+{
+ { "AM", tMERIDIAN, MERam },
+ { "A.M.", tMERIDIAN, MERam },
+ { "PM", tMERIDIAN, MERpm },
+ { "P.M.", tMERIDIAN, MERpm },
+ { NULL, 0, 0 }
+};
+
+static table const dst_table[] =
+{
+ { "DST", tDST, 0 }
+};
+
+static table const month_and_day_table[] =
+{
+ { "JANUARY", tMONTH, 1 },
+ { "FEBRUARY", tMONTH, 2 },
+ { "MARCH", tMONTH, 3 },
+ { "APRIL", tMONTH, 4 },
+ { "MAY", tMONTH, 5 },
+ { "JUNE", tMONTH, 6 },
+ { "JULY", tMONTH, 7 },
+ { "AUGUST", tMONTH, 8 },
+ { "SEPTEMBER",tMONTH, 9 },
+ { "SEPT", tMONTH, 9 },
+ { "OCTOBER", tMONTH, 10 },
+ { "NOVEMBER", tMONTH, 11 },
+ { "DECEMBER", tMONTH, 12 },
+ { "SUNDAY", tDAY, 0 },
+ { "MONDAY", tDAY, 1 },
+ { "TUESDAY", tDAY, 2 },
+ { "TUES", tDAY, 2 },
+ { "WEDNESDAY",tDAY, 3 },
+ { "WEDNES", tDAY, 3 },
+ { "THURSDAY", tDAY, 4 },
+ { "THUR", tDAY, 4 },
+ { "THURS", tDAY, 4 },
+ { "FRIDAY", tDAY, 5 },
+ { "SATURDAY", tDAY, 6 },
+ { NULL, 0, 0 }
+};
+
+static table const time_units_table[] =
+{
+ { "YEAR", tYEAR_UNIT, 1 },
+ { "MONTH", tMONTH_UNIT, 1 },
+ { "FORTNIGHT",tDAY_UNIT, 14 },
+ { "WEEK", tDAY_UNIT, 7 },
+ { "DAY", tDAY_UNIT, 1 },
+ { "HOUR", tHOUR_UNIT, 1 },
+ { "MINUTE", tMINUTE_UNIT, 1 },
+ { "MIN", tMINUTE_UNIT, 1 },
+ { "SECOND", tSEC_UNIT, 1 },
+ { "SEC", tSEC_UNIT, 1 },
+ { NULL, 0, 0 }
+};
+
+/* Assorted relative-time words. */
+static table const relative_time_table[] =
+{
+ { "TOMORROW", tDAY_UNIT, 1 },
+ { "YESTERDAY",tDAY_UNIT, -1 },
+ { "TODAY", tDAY_UNIT, 0 },
+ { "NOW", tDAY_UNIT, 0 },
+ { "LAST", tORDINAL, -1 },
+ { "THIS", tORDINAL, 0 },
+ { "NEXT", tORDINAL, 1 },
+ { "FIRST", tORDINAL, 1 },
+/*{ "SECOND", tORDINAL, 2 }, */
+ { "THIRD", tORDINAL, 3 },
+ { "FOURTH", tORDINAL, 4 },
+ { "FIFTH", tORDINAL, 5 },
+ { "SIXTH", tORDINAL, 6 },
+ { "SEVENTH", tORDINAL, 7 },
+ { "EIGHTH", tORDINAL, 8 },
+ { "NINTH", tORDINAL, 9 },
+ { "TENTH", tORDINAL, 10 },
+ { "ELEVENTH", tORDINAL, 11 },
+ { "TWELFTH", tORDINAL, 12 },
+ { "AGO", tAGO, 1 },
+ { NULL, 0, 0 }
+};
+
+/* The universal time zone table. These labels can be used even for
+ time stamps that would not otherwise be valid, e.g., GMT time
+ stamps in London during summer. */
+static table const universal_time_zone_table[] =
+{
+ { "GMT", tZONE, HOUR ( 0) }, /* Greenwich Mean */
+ { "UT", tZONE, HOUR ( 0) }, /* Universal (Coordinated) */
+ { "UTC", tZONE, HOUR ( 0) },
+ { NULL, 0, 0 }
+};
+
+/* The time zone table. This table is necessarily incomplete, as time
+ zone abbreviations are ambiguous; e.g. Australians interpret "EST"
+ as Eastern time in Australia, not as US Eastern Standard Time.
+ You cannot rely on getdate to handle arbitrary time zone
+ abbreviations; use numeric abbreviations like `-0500' instead. */
+static table const time_zone_table[] =
+{
+ { "WET", tZONE, HOUR ( 0) }, /* Western European */
+ { "WEST", tDAYZONE, HOUR ( 0) }, /* Western European Summer */
+ { "BST", tDAYZONE, HOUR ( 0) }, /* British Summer */
+ { "ART", tZONE, -HOUR ( 3) }, /* Argentina */
+ { "BRT", tZONE, -HOUR ( 3) }, /* Brazil */
+ { "BRST", tDAYZONE, -HOUR ( 3) }, /* Brazil Summer */
+ { "NST", tZONE, -(HOUR ( 3) + 30) }, /* Newfoundland Standard */
+ { "NDT", tDAYZONE,-(HOUR ( 3) + 30) }, /* Newfoundland Daylight */
+ { "AST", tZONE, -HOUR ( 4) }, /* Atlantic Standard */
+ { "ADT", tDAYZONE, -HOUR ( 4) }, /* Atlantic Daylight */
+ { "CLT", tZONE, -HOUR ( 4) }, /* Chile */
+ { "CLST", tDAYZONE, -HOUR ( 4) }, /* Chile Summer */
+ { "EST", tZONE, -HOUR ( 5) }, /* Eastern Standard */
+ { "EDT", tDAYZONE, -HOUR ( 5) }, /* Eastern Daylight */
+ { "CST", tZONE, -HOUR ( 6) }, /* Central Standard */
+ { "CDT", tDAYZONE, -HOUR ( 6) }, /* Central Daylight */
+ { "MST", tZONE, -HOUR ( 7) }, /* Mountain Standard */
+ { "MDT", tDAYZONE, -HOUR ( 7) }, /* Mountain Daylight */
+ { "PST", tZONE, -HOUR ( 8) }, /* Pacific Standard */
+ { "PDT", tDAYZONE, -HOUR ( 8) }, /* Pacific Daylight */
+ { "AKST", tZONE, -HOUR ( 9) }, /* Alaska Standard */
+ { "AKDT", tDAYZONE, -HOUR ( 9) }, /* Alaska Daylight */
+ { "HST", tZONE, -HOUR (10) }, /* Hawaii Standard */
+ { "HAST", tZONE, -HOUR (10) }, /* Hawaii-Aleutian Standard */
+ { "HADT", tDAYZONE, -HOUR (10) }, /* Hawaii-Aleutian Daylight */
+ { "SST", tZONE, -HOUR (12) }, /* Samoa Standard */
+ { "WAT", tZONE, HOUR ( 1) }, /* West Africa */
+ { "CET", tZONE, HOUR ( 1) }, /* Central European */
+ { "CEST", tDAYZONE, HOUR ( 1) }, /* Central European Summer */
+ { "MET", tZONE, HOUR ( 1) }, /* Middle European */
+ { "MEZ", tZONE, HOUR ( 1) }, /* Middle European */
+ { "MEST", tDAYZONE, HOUR ( 1) }, /* Middle European Summer */
+ { "MESZ", tDAYZONE, HOUR ( 1) }, /* Middle European Summer */
+ { "EET", tZONE, HOUR ( 2) }, /* Eastern European */
+ { "EEST", tDAYZONE, HOUR ( 2) }, /* Eastern European Summer */
+ { "CAT", tZONE, HOUR ( 2) }, /* Central Africa */
+ { "SAST", tZONE, HOUR ( 2) }, /* South Africa Standard */
+ { "EAT", tZONE, HOUR ( 3) }, /* East Africa */
+ { "MSK", tZONE, HOUR ( 3) }, /* Moscow */
+ { "MSD", tDAYZONE, HOUR ( 3) }, /* Moscow Daylight */
+ { "IST", tZONE, (HOUR ( 5) + 30) }, /* India Standard */
+ { "SGT", tZONE, HOUR ( 8) }, /* Singapore */
+ { "KST", tZONE, HOUR ( 9) }, /* Korea Standard */
+ { "JST", tZONE, HOUR ( 9) }, /* Japan Standard */
+ { "GST", tZONE, HOUR (10) }, /* Guam Standard */
+ { "NZST", tZONE, HOUR (12) }, /* New Zealand Standard */
+ { "NZDT", tDAYZONE, HOUR (12) }, /* New Zealand Daylight */
+ { NULL, 0, 0 }
+};
+
+/* Military time zone table. */
+static table const military_table[] =
+{
+ { "A", tZONE, -HOUR ( 1) },
+ { "B", tZONE, -HOUR ( 2) },
+ { "C", tZONE, -HOUR ( 3) },
+ { "D", tZONE, -HOUR ( 4) },
+ { "E", tZONE, -HOUR ( 5) },
+ { "F", tZONE, -HOUR ( 6) },
+ { "G", tZONE, -HOUR ( 7) },
+ { "H", tZONE, -HOUR ( 8) },
+ { "I", tZONE, -HOUR ( 9) },
+ { "K", tZONE, -HOUR (10) },
+ { "L", tZONE, -HOUR (11) },
+ { "M", tZONE, -HOUR (12) },
+ { "N", tZONE, HOUR ( 1) },
+ { "O", tZONE, HOUR ( 2) },
+ { "P", tZONE, HOUR ( 3) },
+ { "Q", tZONE, HOUR ( 4) },
+ { "R", tZONE, HOUR ( 5) },
+ { "S", tZONE, HOUR ( 6) },
+ { "T", tZONE, HOUR ( 7) },
+ { "U", tZONE, HOUR ( 8) },
+ { "V", tZONE, HOUR ( 9) },
+ { "W", tZONE, HOUR (10) },
+ { "X", tZONE, HOUR (11) },
+ { "Y", tZONE, HOUR (12) },
+ { "Z", tZONE, HOUR ( 0) },
+ { NULL, 0, 0 }
+};
+
+
+
+/* Convert a time zone expressed as HH:MM into an integer count of
+ minutes. If MM is negative, then S is of the form HHMM and needs
+ to be picked apart; otherwise, S is of the form HH. */
+
+static long int
+time_zone_hhmm (textint s, long int mm)
+{
+ if (mm < 0)
+ return (s.value / 100) * 60 + s.value % 100;
+ else
+ return s.value * 60 + (s.negative ? -mm : mm);
+}
+
+static int
+to_hour (long int hours, int meridian)
+{
+ switch (meridian)
+ {
+ default: /* Pacify GCC. */
+ case MER24:
+ return 0 <= hours && hours < 24 ? hours : -1;
+ case MERam:
+ return 0 < hours && hours < 12 ? hours : hours == 12 ? 0 : -1;
+ case MERpm:
+ return 0 < hours && hours < 12 ? hours + 12 : hours == 12 ? 12 : -1;
+ }
+}
+
+static long int
+to_year (textint textyear)
+{
+ long int year = textyear.value;
+
+ if (year < 0)
+ year = -year;
+
+ /* XPG4 suggests that years 00-68 map to 2000-2068, and
+ years 69-99 map to 1969-1999. */
+ else if (textyear.digits == 2)
+ year += year < 69 ? 2000 : 1900;
+
+ return year;
+}
+
+static table const *
+lookup_zone (parser_control const *pc, char const *name)
+{
+ table const *tp;
+
+ for (tp = universal_time_zone_table; tp->name; tp++)
+ if (strcmp (name, tp->name) == 0)
+ return tp;
+
+ /* Try local zone abbreviations before those in time_zone_table, as
+ the local ones are more likely to be right. */
+ for (tp = pc->local_time_zone_table; tp->name; tp++)
+ if (strcmp (name, tp->name) == 0)
+ return tp;
+
+ for (tp = time_zone_table; tp->name; tp++)
+ if (strcmp (name, tp->name) == 0)
+ return tp;
+
+ return NULL;
+}
+
+#if ! HAVE_TM_GMTOFF
+/* Yield the difference between *A and *B,
+ measured in seconds, ignoring leap seconds.
+ The body of this function is taken directly from the GNU C Library;
+ see src/strftime.c. */
+static long int
+tm_diff (struct tm const *a, struct tm const *b)
+{
+ /* Compute intervening leap days correctly even if year is negative.
+ Take care to avoid int overflow in leap day calculations. */
+ int a4 = SHR (a->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (a->tm_year & 3);
+ int b4 = SHR (b->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (b->tm_year & 3);
+ int a100 = a4 / 25 - (a4 % 25 < 0);
+ int b100 = b4 / 25 - (b4 % 25 < 0);
+ int a400 = SHR (a100, 2);
+ int b400 = SHR (b100, 2);
+ int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400);
+ long int ayear = a->tm_year;
+ long int years = ayear - b->tm_year;
+ long int days = (365 * years + intervening_leap_days
+ + (a->tm_yday - b->tm_yday));
+ return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour))
+ + (a->tm_min - b->tm_min))
+ + (a->tm_sec - b->tm_sec));
+}
+#endif /* ! HAVE_TM_GMTOFF */
+
+static table const *
+lookup_word (parser_control const *pc, char *word)
+{
+ char *p;
+ char *q;
+ size_t wordlen;
+ table const *tp;
+ bool period_found;
+ bool abbrev;
+
+ /* Make it uppercase. */
+ for (p = word; *p; p++)
+ {
+ unsigned char ch = *p;
+ *p = toupper (ch);
+ }
+
+ for (tp = meridian_table; tp->name; tp++)
+ if (strcmp (word, tp->name) == 0)
+ return tp;
+
+ /* See if we have an abbreviation for a month. */
+ wordlen = strlen (word);
+ abbrev = wordlen == 3 || (wordlen == 4 && word[3] == '.');
+
+ for (tp = month_and_day_table; tp->name; tp++)
+ if ((abbrev ? strncmp (word, tp->name, 3) : strcmp (word, tp->name)) == 0)
+ return tp;
+
+ if ((tp = lookup_zone (pc, word)))
+ return tp;
+
+ if (strcmp (word, dst_table[0].name) == 0)
+ return dst_table;
+
+ for (tp = time_units_table; tp->name; tp++)
+ if (strcmp (word, tp->name) == 0)
+ return tp;
+
+ /* Strip off any plural and try the units table again. */
+ if (word[wordlen - 1] == 'S')
+ {
+ word[wordlen - 1] = '\0';
+ for (tp = time_units_table; tp->name; tp++)
+ if (strcmp (word, tp->name) == 0)
+ return tp;
+ word[wordlen - 1] = 'S'; /* For "this" in relative_time_table. */
+ }
+
+ for (tp = relative_time_table; tp->name; tp++)
+ if (strcmp (word, tp->name) == 0)
+ return tp;
+
+ /* Military time zones. */
+ if (wordlen == 1)
+ for (tp = military_table; tp->name; tp++)
+ if (word[0] == tp->name[0])
+ return tp;
+
+ /* Drop out any periods and try the time zone table again. */
+ for (period_found = false, p = q = word; (*p = *q); q++)
+ if (*q == '.')
+ period_found = true;
+ else
+ p++;
+ if (period_found && (tp = lookup_zone (pc, word)))
+ return tp;
+
+ return NULL;
+}
+
+static int
+yylex (YYSTYPE *lvalp, parser_control *pc)
+{
+ unsigned char c;
+ size_t count;
+
+ for (;;)
+ {
+ while (c = *pc->input, isspace (c))
+ pc->input++;
+
+ if (ISDIGIT (c) || c == '-' || c == '+')
+ {
+ char const *p;
+ int sign;
+ unsigned long int value;
+ if (c == '-' || c == '+')
+ {
+ sign = c == '-' ? -1 : 1;
+ while (c = *++pc->input, isspace (c))
+ continue;
+ if (! ISDIGIT (c))
+ /* skip the '-' sign */
+ continue;
+ }
+ else
+ sign = 0;
+ p = pc->input;
+ for (value = 0; ; value *= 10)
+ {
+ unsigned long int value1 = value + (c - '0');
+ if (value1 < value)
+ return '?';
+ value = value1;
+ c = *++p;
+ if (! ISDIGIT (c))
+ break;
+ if (ULONG_MAX / 10 < value)
+ return '?';
+ }
+ if ((c == '.' || c == ',') && ISDIGIT (p[1]))
+ {
+ time_t s;
+ int ns;
+ int digits;
+ unsigned long int value1;
+
+ /* Check for overflow when converting value to time_t. */
+ if (sign < 0)
+ {
+ s = - value;
+ if (0 < s)
+ return '?';
+ value1 = -s;
+ }
+ else
+ {
+ s = value;
+ if (s < 0)
+ return '?';
+ value1 = s;
+ }
+ if (value != value1)
+ return '?';
+
+ /* Accumulate fraction, to ns precision. */
+ p++;
+ ns = *p++ - '0';
+ for (digits = 2; digits <= LOG10_BILLION; digits++)
+ {
+ ns *= 10;
+ if (ISDIGIT (*p))
+ ns += *p++ - '0';
+ }
+
+ /* Skip excess digits, truncating toward -Infinity. */
+ if (sign < 0)
+ for (; ISDIGIT (*p); p++)
+ if (*p != '0')
+ {
+ ns++;
+ break;
+ }
+ while (ISDIGIT (*p))
+ p++;
+
+ /* Adjust to the timespec convention, which is that
+ tv_nsec is always a positive offset even if tv_sec is
+ negative. */
+ if (sign < 0 && ns)
+ {
+ s--;
+ if (! (s < 0))
+ return '?';
+ ns = BILLION - ns;
+ }
+
+ lvalp->timespec.tv_sec = s;
+ lvalp->timespec.tv_nsec = ns;
+ pc->input = p;
+ return sign ? tSDECIMAL_NUMBER : tUDECIMAL_NUMBER;
+ }
+ else
+ {
+ lvalp->textintval.negative = sign < 0;
+ if (sign < 0)
+ {
+ lvalp->textintval.value = - value;
+ if (0 < lvalp->textintval.value)
+ return '?';
+ }
+ else
+ {
+ lvalp->textintval.value = value;
+ if (lvalp->textintval.value < 0)
+ return '?';
+ }
+ lvalp->textintval.digits = p - pc->input;
+ pc->input = p;
+ return sign ? tSNUMBER : tUNUMBER;
+ }
+ }
+
+ if (isalpha (c))
+ {
+ char buff[20];
+ char *p = buff;
+ table const *tp;
+
+ do
+ {
+ if (p < buff + sizeof buff - 1)
+ *p++ = c;
+ c = *++pc->input;
+ }
+ while (isalpha (c) || c == '.');
+
+ *p = '\0';
+ tp = lookup_word (pc, buff);
+ if (! tp)
+ return '?';
+ lvalp->intval = tp->value;
+ return tp->type;
+ }
+
+ if (c != '(')
+ return *pc->input++;
+ count = 0;
+ do
+ {
+ c = *pc->input++;
+ if (c == '\0')
+ return c;
+ if (c == '(')
+ count++;
+ else if (c == ')')
+ count--;
+ }
+ while (count != 0);
+ }
+}
+
+/* Do nothing if the parser reports an error. */
+static int
+yyerror (parser_control const *pc ATTRIBUTE_UNUSED,
+ char const *s ATTRIBUTE_UNUSED)
+{
+ return 0;
+}
+
+/* If *TM0 is the old and *TM1 is the new value of a struct tm after
+ passing it to mktime, return true if it's OK that mktime returned T.
+ It's not OK if *TM0 has out-of-range members. */
+
+static bool
+mktime_ok (struct tm const *tm0, struct tm const *tm1, time_t t)
+{
+ if (t == (time_t) -1)
+ {
+ /* Guard against falsely reporting an error when parsing a time
+ stamp that happens to equal (time_t) -1, on a host that
+ supports such a time stamp. */
+ tm1 = localtime (&t);
+ if (!tm1)
+ return false;
+ }
+
+ return ! ((tm0->tm_sec ^ tm1->tm_sec)
+ | (tm0->tm_min ^ tm1->tm_min)
+ | (tm0->tm_hour ^ tm1->tm_hour)
+ | (tm0->tm_mday ^ tm1->tm_mday)
+ | (tm0->tm_mon ^ tm1->tm_mon)
+ | (tm0->tm_year ^ tm1->tm_year));
+}
+
+/* A reasonable upper bound for the size of ordinary TZ strings.
+ Use heap allocation if TZ's length exceeds this. */
+enum { TZBUFSIZE = 100 };
+
+/* Return a copy of TZ, stored in TZBUF if it fits, and heap-allocated
+ otherwise. */
+static char *
+get_tz (char tzbuf[TZBUFSIZE])
+{
+ char *tz = getenv ("TZ");
+ if (tz)
+ {
+ size_t tzsize = strlen (tz) + 1;
+ tz = (tzsize <= TZBUFSIZE
+ ? memcpy (tzbuf, tz, tzsize)
+ : xmemdup (tz, tzsize));
+ }
+ return tz;
+}
+
+/* Parse a date/time string, storing the resulting time value into *RESULT.
+ The string itself is pointed to by P. Return true if successful.
+ P can be an incomplete or relative time specification; if so, use
+ *NOW as the basis for the returned time. */
+bool
+get_date (struct timespec *result, char const *p, struct timespec const *now)
+{
+ time_t Start;
+ long int Start_ns;
+ struct tm const *tmp;
+ struct tm tm;
+ struct tm tm0;
+ parser_control pc;
+ struct timespec gettime_buffer;
+ unsigned char c;
+ bool tz_was_altered = false;
+ char *tz0 = NULL;
+ char tz0buf[TZBUFSIZE];
+ bool ok = true;
+
+ if (! now)
+ {
+ gettime (&gettime_buffer);
+ now = &gettime_buffer;
+ }
+
+ Start = now->tv_sec;
+ Start_ns = now->tv_nsec;
+
+ tmp = localtime (&now->tv_sec);
+ if (! tmp)
+ return false;
+
+ while (c = *p, isspace (c))
+ p++;
+
+ if (strncmp (p, "TZ=\"", 4) == 0)
+ {
+ char const *tzbase = p + 4;
+ size_t tzsize = 1;
+ char const *s;
+
+ for (s = tzbase; *s; s++, tzsize++)
+ if (*s == '\\')
+ {
+ s++;
+ if (! (*s == '\\' || *s == '"'))
+ break;
+ }
+ else if (*s == '"')
+ {
+ char *z;
+ char *tz1;
+ char tz1buf[TZBUFSIZE];
+ bool large_tz = TZBUFSIZE < tzsize;
+ bool setenv_ok;
+ tz0 = get_tz (tz0buf);
+ z = tz1 = large_tz ? xmalloc (tzsize) : tz1buf;
+ for (s = tzbase; *s != '"'; s++)
+ *z++ = *(s += *s == '\\');
+ *z = '\0';
+ setenv_ok = setenv ("TZ", tz1, 1) == 0;
+ if (large_tz)
+ free (tz1);
+ if (!setenv_ok)
+ goto fail;
+ tz_was_altered = true;
+ p = s + 1;
+ }
+ }
+
+ pc.input = p;
+ pc.year.value = tmp->tm_year;
+ pc.year.value += TM_YEAR_BASE;
+ pc.year.digits = 0;
+ pc.month = tmp->tm_mon + 1;
+ pc.day = tmp->tm_mday;
+ pc.hour = tmp->tm_hour;
+ pc.minutes = tmp->tm_min;
+ pc.seconds.tv_sec = tmp->tm_sec;
+ pc.seconds.tv_nsec = Start_ns;
+ tm.tm_isdst = tmp->tm_isdst;
+
+ pc.meridian = MER24;
+ pc.rel = RELATIVE_TIME_0;
+ pc.timespec_seen = false;
+ pc.rels_seen = false;
+ pc.dates_seen = 0;
+ pc.days_seen = 0;
+ pc.times_seen = 0;
+ pc.local_zones_seen = 0;
+ pc.dsts_seen = 0;
+ pc.zones_seen = 0;
+
+#if HAVE_STRUCT_TM_TM_ZONE
+ pc.local_time_zone_table[0].name = tmp->tm_zone;
+ pc.local_time_zone_table[0].type = tLOCAL_ZONE;
+ pc.local_time_zone_table[0].value = tmp->tm_isdst;
+ pc.local_time_zone_table[1].name = NULL;
+
+ /* Probe the names used in the next three calendar quarters, looking
+ for a tm_isdst different from the one we already have. */
+ {
+ int quarter;
+ for (quarter = 1; quarter <= 3; quarter++)
+ {
+ time_t probe = Start + quarter * (90 * 24 * 60 * 60);
+ struct tm const *probe_tm = localtime (&probe);
+ if (probe_tm && probe_tm->tm_zone
+ && probe_tm->tm_isdst != pc.local_time_zone_table[0].value)
+ {
+ {
+ pc.local_time_zone_table[1].name = probe_tm->tm_zone;
+ pc.local_time_zone_table[1].type = tLOCAL_ZONE;
+ pc.local_time_zone_table[1].value = probe_tm->tm_isdst;
+ pc.local_time_zone_table[2].name = NULL;
+ }
+ break;
+ }
+ }
+ }
+#else
+#if HAVE_TZNAME
+ {
+# ifndef tzname
+ extern char *tzname[];
+# endif
+ int i;
+ for (i = 0; i < 2; i++)
+ {
+ pc.local_time_zone_table[i].name = tzname[i];
+ pc.local_time_zone_table[i].type = tLOCAL_ZONE;
+ pc.local_time_zone_table[i].value = i;
+ }
+ pc.local_time_zone_table[i].name = NULL;
+ }
+#else
+ pc.local_time_zone_table[0].name = NULL;
+#endif
+#endif
+
+ if (pc.local_time_zone_table[0].name && pc.local_time_zone_table[1].name
+ && ! strcmp (pc.local_time_zone_table[0].name,
+ pc.local_time_zone_table[1].name))
+ {
+ /* This locale uses the same abbrevation for standard and
+ daylight times. So if we see that abbreviation, we don't
+ know whether it's daylight time. */
+ pc.local_time_zone_table[0].value = -1;
+ pc.local_time_zone_table[1].name = NULL;
+ }
+
+ if (yyparse (&pc) != 0)
+ goto fail;
+
+ if (pc.timespec_seen)
+ *result = pc.seconds;
+ else
+ {
+ if (1 < (pc.times_seen | pc.dates_seen | pc.days_seen | pc.dsts_seen
+ | (pc.local_zones_seen + pc.zones_seen)))
+ goto fail;
+
+ tm.tm_year = to_year (pc.year) - TM_YEAR_BASE;
+ tm.tm_mon = pc.month - 1;
+ tm.tm_mday = pc.day;
+ if (pc.times_seen || (pc.rels_seen && ! pc.dates_seen && ! pc.days_seen))
+ {
+ tm.tm_hour = to_hour (pc.hour, pc.meridian);
+ if (tm.tm_hour < 0)
+ goto fail;
+ tm.tm_min = pc.minutes;
+ tm.tm_sec = pc.seconds.tv_sec;
+ }
+ else
+ {
+ tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
+ pc.seconds.tv_nsec = 0;
+ }
+
+ /* Let mktime deduce tm_isdst if we have an absolute time stamp. */
+ if (pc.dates_seen | pc.days_seen | pc.times_seen)
+ tm.tm_isdst = -1;
+
+ /* But if the input explicitly specifies local time with or without
+ DST, give mktime that information. */
+ if (pc.local_zones_seen)
+ tm.tm_isdst = pc.local_isdst;
+
+ tm0 = tm;
+
+ Start = mktime (&tm);
+
+ if (! mktime_ok (&tm0, &tm, Start))
+ {
+ if (! pc.zones_seen)
+ goto fail;
+ else
+ {
+ /* Guard against falsely reporting errors near the time_t
+ boundaries when parsing times in other time zones. For
+ example, suppose the input string "1969-12-31 23:00:00 -0100",
+ the current time zone is 8 hours ahead of UTC, and the min
+ time_t value is 1970-01-01 00:00:00 UTC. Then the min
+ localtime value is 1970-01-01 08:00:00, and mktime will
+ therefore fail on 1969-12-31 23:00:00. To work around the
+ problem, set the time zone to 1 hour behind UTC temporarily
+ by setting TZ="XXX1:00" and try mktime again. */
+
+ long int time_zone = pc.time_zone;
+ long int abs_time_zone = time_zone < 0 ? - time_zone : time_zone;
+ long int abs_time_zone_hour = abs_time_zone / 60;
+ int abs_time_zone_min = abs_time_zone % 60;
+ char tz1buf[sizeof "XXX+0:00"
+ + sizeof pc.time_zone * CHAR_BIT / 3];
+ if (!tz_was_altered)
+ tz0 = get_tz (tz0buf);
+ sprintf (tz1buf, "XXX%s%ld:%02d", "-" + (time_zone < 0),
+ abs_time_zone_hour, abs_time_zone_min);
+ if (setenv ("TZ", tz1buf, 1) != 0)
+ goto fail;
+ tz_was_altered = true;
+ tm = tm0;
+ Start = mktime (&tm);
+ if (! mktime_ok (&tm0, &tm, Start))
+ goto fail;
+ }
+ }
+
+ if (pc.days_seen && ! pc.dates_seen)
+ {
+ tm.tm_mday += ((pc.day_number - tm.tm_wday + 7) % 7
+ + 7 * (pc.day_ordinal - (0 < pc.day_ordinal)));
+ tm.tm_isdst = -1;
+ Start = mktime (&tm);
+ if (Start == (time_t) -1)
+ goto fail;
+ }
+
+ if (pc.zones_seen)
+ {
+ long int delta = pc.time_zone * 60;
+ time_t t1;
+#ifdef HAVE_TM_GMTOFF
+ delta -= tm.tm_gmtoff;
+#else
+ time_t t = Start;
+ struct tm const *gmt = gmtime (&t);
+ if (! gmt)
+ goto fail;
+ delta -= tm_diff (&tm, gmt);
+#endif
+ t1 = Start - delta;
+ if ((Start < t1) != (delta < 0))
+ goto fail; /* time_t overflow */
+ Start = t1;
+ }
+
+ /* Add relative date. */
+ if (pc.rel.year | pc.rel.month | pc.rel.day)
+ {
+ int year = tm.tm_year + pc.rel.year;
+ int month = tm.tm_mon + pc.rel.month;
+ int day = tm.tm_mday + pc.rel.day;
+ if (((year < tm.tm_year) ^ (pc.rel.year < 0))
+ | ((month < tm.tm_mon) ^ (pc.rel.month < 0))
+ | ((day < tm.tm_mday) ^ (pc.rel.day < 0)))
+ goto fail;
+ tm.tm_year = year;
+ tm.tm_mon = month;
+ tm.tm_mday = day;
+ tm.tm_hour = tm0.tm_hour;
+ tm.tm_min = tm0.tm_min;
+ tm.tm_sec = tm0.tm_sec;
+ tm.tm_isdst = tm0.tm_isdst;
+ Start = mktime (&tm);
+ if (Start == (time_t) -1)
+ goto fail;
+ }
+
+ /* Add relative hours, minutes, and seconds. On hosts that support
+ leap seconds, ignore the possibility of leap seconds; e.g.,
+ "+ 10 minutes" adds 600 seconds, even if one of them is a
+ leap second. Typically this is not what the user wants, but it's
+ too hard to do it the other way, because the time zone indicator
+ must be applied before relative times, and if mktime is applied
+ again the time zone will be lost. */
+ {
+ long int sum_ns = pc.seconds.tv_nsec + pc.rel.ns;
+ long int normalized_ns = (sum_ns % BILLION + BILLION) % BILLION;
+ time_t t0 = Start;
+ long int d1 = 60 * 60 * pc.rel.hour;
+ time_t t1 = t0 + d1;
+ long int d2 = 60 * pc.rel.minutes;
+ time_t t2 = t1 + d2;
+ long int d3 = pc.rel.seconds;
+ time_t t3 = t2 + d3;
+ long int d4 = (sum_ns - normalized_ns) / BILLION;
+ time_t t4 = t3 + d4;
+
+ if ((d1 / (60 * 60) ^ pc.rel.hour)
+ | (d2 / 60 ^ pc.rel.minutes)
+ | ((t1 < t0) ^ (d1 < 0))
+ | ((t2 < t1) ^ (d2 < 0))
+ | ((t3 < t2) ^ (d3 < 0))
+ | ((t4 < t3) ^ (d4 < 0)))
+ goto fail;
+
+ result->tv_sec = t4;
+ result->tv_nsec = normalized_ns;
+ }
+ }
+
+ goto done;
+
+ fail:
+ ok = false;
+ done:
+ if (tz_was_altered)
+ ok &= (tz0 ? setenv ("TZ", tz0, 1) : unsetenv ("TZ")) == 0;
+ if (tz0 != tz0buf)
+ free (tz0);
+ return ok;
+}
+
+#if TEST
+
+int
+main (int ac, char **av)
+{
+ char buff[BUFSIZ];
+
+ printf ("Enter date, or blank line to exit.\n\t> ");
+ fflush (stdout);
+
+ buff[BUFSIZ - 1] = '\0';
+ while (fgets (buff, BUFSIZ - 1, stdin) && buff[0])
+ {
+ struct timespec d;
+ struct tm const *tm;
+ if (! get_date (&d, buff, NULL))
+ printf ("Bad format - couldn't convert.\n");
+ else if (! (tm = localtime (&d.tv_sec)))
+ {
+ long int sec = d.tv_sec;
+ printf ("localtime (%ld) failed\n", sec);
+ }
+ else
+ {
+ int ns = d.tv_nsec;
+ printf ("%04ld-%02d-%02d %02d:%02d:%02d.%09d\n",
+ tm->tm_year + 1900L, tm->tm_mon + 1, tm->tm_mday,
+ tm->tm_hour, tm->tm_min, tm->tm_sec, ns);
+ }
+ printf ("\t> ");
+ fflush (stdout);
+ }
+ return 0;
+}
+#endif /* TEST */
diff --git a/lib/getdelim.c b/lib/getdelim.c
new file mode 100644
index 0000000..e0b8a70
--- /dev/null
+++ b/lib/getdelim.c
@@ -0,0 +1,126 @@
+/* getdelim.c --- Implementation of replacement getdelim function.
+ Copyright (C) 1994, 1996, 1997, 1998, 2001, 2003, 2005, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2, or (at
+ your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA. */
+
+/* Ported from glibc by Simon Josefsson. */
+
+#include <config.h>
+
+#include "getdelim.h"
+
+#include <limits.h>
+#include <stdlib.h>
+#include <errno.h>
+
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+#ifndef SSIZE_MAX
+# define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2))
+#endif
+#if !HAVE_FLOCKFILE
+# undef flockfile
+# define flockfile(x) ((void) 0)
+#endif
+#if !HAVE_FUNLOCKFILE
+# undef funlockfile
+# define funlockfile(x) ((void) 0)
+#endif
+
+/* Read up to (and including) a DELIMITER from FP into *LINEPTR (and
+ NUL-terminate it). *LINEPTR is a pointer returned from malloc (or
+ NULL), pointing to *N characters of space. It is realloc'ed as
+ necessary. Returns the number of characters read (not including
+ the null terminator), or -1 on error or EOF. */
+
+ssize_t
+getdelim (char **lineptr, size_t *n, int delimiter, FILE *fp)
+{
+ ssize_t result;
+ size_t cur_len = 0;
+
+ if (lineptr == NULL || n == NULL || fp == NULL)
+ {
+ errno = EINVAL;
+ return -1;
+ }
+
+ flockfile (fp);
+
+ if (*lineptr == NULL || *n == 0)
+ {
+ *n = 120;
+ *lineptr = (char *) malloc (*n);
+ if (*lineptr == NULL)
+ {
+ result = -1;
+ goto unlock_return;
+ }
+ }
+
+ for (;;)
+ {
+ int i;
+
+ i = getc (fp);
+ if (i == EOF)
+ {
+ result = -1;
+ break;
+ }
+
+ /* Make enough space for len+1 (for final NUL) bytes. */
+ if (cur_len + 1 >= *n)
+ {
+ size_t needed_max =
+ SSIZE_MAX < SIZE_MAX ? (size_t) SSIZE_MAX + 1 : SIZE_MAX;
+ size_t needed = 2 * *n + 1; /* Be generous. */
+ char *new_lineptr;
+
+ if (needed_max < needed)
+ needed = needed_max;
+ if (cur_len + 1 >= needed)
+ {
+ result = -1;
+ goto unlock_return;
+ }
+
+ new_lineptr = (char *) realloc (*lineptr, needed);
+ if (new_lineptr == NULL)
+ {
+ result = -1;
+ goto unlock_return;
+ }
+
+ *lineptr = new_lineptr;
+ *n = needed;
+ }
+
+ (*lineptr)[cur_len] = i;
+ cur_len++;
+
+ if (i == delimiter)
+ break;
+ }
+ (*lineptr)[cur_len] = '\0';
+ result = cur_len ? cur_len : result;
+
+ unlock_return:
+ funlockfile (fp);
+ return result;
+}
diff --git a/lib/getdelim.h b/lib/getdelim.h
new file mode 100644
index 0000000..8bc6130
--- /dev/null
+++ b/lib/getdelim.h
@@ -0,0 +1,28 @@
+/* getdelim.h --- Prototype for replacement getdelim function.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2, or (at
+ your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA. */
+
+/* Written by Simon Josefsson. */
+
+/* Get size_t, FILE, ssize_t. And getdelim, if available. */
+# include <stddef.h>
+# include <stdio.h>
+# include <sys/types.h>
+
+#if !HAVE_DECL_GETDELIM
+ssize_t getdelim (char **lineptr, size_t *n, int delimiter, FILE *stream);
+#endif /* !HAVE_GETDELIM */
diff --git a/lib/getgroups.c b/lib/getgroups.c
new file mode 100644
index 0000000..615bd4f
--- /dev/null
+++ b/lib/getgroups.c
@@ -0,0 +1,66 @@
+/* provide consistent interface to getgroups for systems that don't allow N==0
+
+ Copyright (C) 1996, 1999, 2003, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <errno.h>
+#include <stdlib.h>
+
+#include "xalloc.h"
+
+/* On at least Ultrix 4.3 and NextStep 3.2, getgroups (0, 0) always fails.
+ On other systems, it returns the number of supplemental groups for the
+ process. This function handles that special case and lets the system-
+ provided function handle all others. */
+
+int
+getgroups (int n, GETGROUPS_T *group)
+{
+ int n_groups;
+ GETGROUPS_T *gbuf;
+ int saved_errno;
+
+#undef getgroups
+
+ if (n != 0)
+ return getgroups (n, group);
+
+ n = 20;
+ while (1)
+ {
+ /* No need to worry about address arithmetic overflow here,
+ since the ancient systems that we're running on have low
+ limits on the number of secondary groups. */
+ gbuf = xmalloc (n * sizeof *gbuf);
+ n_groups = getgroups (n, gbuf);
+ if (n_groups < n)
+ break;
+ free (gbuf);
+ n += 10;
+ }
+
+ saved_errno = errno;
+ free (gbuf);
+ errno = saved_errno;
+
+ return n_groups;
+}
diff --git a/lib/gethostname.c b/lib/gethostname.c
new file mode 100644
index 0000000..eedc40e
--- /dev/null
+++ b/lib/gethostname.c
@@ -0,0 +1,52 @@
+/* gethostname emulation for SysV and POSIX.1.
+
+ Copyright (C) 1992, 2003, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* David MacKenzie <djm@gnu.ai.mit.edu> */
+
+#include <config.h>
+
+#ifdef HAVE_UNAME
+# include <sys/utsname.h>
+#endif
+
+/* Put up to LEN chars of the host name into NAME.
+ Null terminate it if the name is shorter than LEN.
+ Return 0 if ok, -1 if error. */
+
+#include <stddef.h>
+
+int
+gethostname (char *name, size_t len)
+{
+#ifdef HAVE_UNAME
+ struct utsname uts;
+
+ if (uname (&uts) == -1)
+ return -1;
+ if (len > sizeof (uts.nodename))
+ {
+ /* More space than we need is available. */
+ name[sizeof (uts.nodename)] = '\0';
+ len = sizeof (uts.nodename);
+ }
+ strncpy (name, uts.nodename, len);
+#else
+ strcpy (name, ""); /* Hardcode your system name if you want. */
+#endif
+ return 0;
+}
diff --git a/lib/gethrxtime.c b/lib/gethrxtime.c
new file mode 100644
index 0000000..2046e06
--- /dev/null
+++ b/lib/gethrxtime.c
@@ -0,0 +1,69 @@
+/* gethrxtime -- get high resolution real time
+
+ Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "gethrxtime.h"
+
+#include <sys/time.h>
+#include "timespec.h"
+
+/* Get the current time, as a count of the number of nanoseconds since
+ an arbitrary epoch (e.g., the system boot time). Prefer a
+ high-resolution clock that is not subject to resetting or
+ drifting. */
+
+xtime_t
+gethrxtime (void)
+{
+#if HAVE_NANOUPTIME
+ {
+ struct timespec ts;
+ nanouptime (&ts);
+ return xtime_make (ts.tv_sec, ts.tv_nsec);
+ }
+#else
+
+# if defined CLOCK_MONOTONIC && HAVE_CLOCK_GETTIME
+ {
+ struct timespec ts;
+ if (clock_gettime (CLOCK_MONOTONIC, &ts) == 0)
+ return xtime_make (ts.tv_sec, ts.tv_nsec);
+ }
+# endif
+
+# if HAVE_MICROUPTIME
+ {
+ struct timeval tv;
+ microuptime (&tv);
+ return xtime_make (tv.tv_sec, 1000 * tv.tv_usec);
+ }
+
+# else
+ /* No monotonically increasing clocks are available; fall back on a
+ clock that might jump backwards, since it's the best we can do. */
+ {
+ struct timespec ts;
+ gettime (&ts);
+ return xtime_make (ts.tv_sec, ts.tv_nsec);
+ }
+# endif
+#endif
+}
diff --git a/lib/gethrxtime.h b/lib/gethrxtime.h
new file mode 100644
index 0000000..2247f96
--- /dev/null
+++ b/lib/gethrxtime.h
@@ -0,0 +1,38 @@
+/* gethrxtime -- get high resolution real time
+
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#ifndef GETHRXTIME_H_
+# define GETHRXTIME_H_ 1
+
+# include "xtime.h"
+
+/* Get the current time, as a count of the number of nanoseconds since
+ an arbitrary epoch (e.g., the system boot time). Prefer a
+ high-resolution clock that is not subject to resetting or
+ drifting. */
+
+# if HAVE_ARITHMETIC_HRTIME_T && HAVE_DECL_GETHRTIME
+# include <time.h>
+static inline xtime_t gethrxtime (void) { return gethrtime (); }
+# else
+xtime_t gethrxtime (void);
+# endif
+
+#endif
diff --git a/lib/getline.c b/lib/getline.c
new file mode 100644
index 0000000..c8c9244
--- /dev/null
+++ b/lib/getline.c
@@ -0,0 +1,30 @@
+/* getline.c --- Implementation of replacement getline function.
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2, or (at
+ your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA. */
+
+/* Written by Simon Josefsson. */
+
+#include <config.h>
+
+#include "getdelim.h"
+#include "getline.h"
+
+ssize_t
+getline (char **lineptr, size_t *n, FILE *stream)
+{
+ return getdelim (lineptr, n, '\n', stream);
+}
diff --git a/lib/getline.h b/lib/getline.h
new file mode 100644
index 0000000..f0f61c4
--- /dev/null
+++ b/lib/getline.h
@@ -0,0 +1,28 @@
+/* getline.h --- Prototype for replacement getline function.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2, or (at
+ your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA. */
+
+/* Written by Simon Josefsson. */
+
+/* Get size_t, FILE, ssize_t. And getline, if available. */
+# include <stddef.h>
+# include <stdio.h>
+# include <sys/types.h>
+
+#if !HAVE_DECL_GETLINE
+ssize_t getline (char **lineptr, size_t *n, FILE *stream);
+#endif /* !HAVE_GETLINE */
diff --git a/lib/getloadavg.c b/lib/getloadavg.c
new file mode 100644
index 0000000..cfa6273
--- /dev/null
+++ b/lib/getloadavg.c
@@ -0,0 +1,1020 @@
+/* Get the system load averages.
+
+ Copyright (C) 1985, 1986, 1987, 1988, 1989, 1991, 1992, 1993, 1994,
+ 1995, 1997, 1999, 2000, 2003, 2004, 2005, 2006 Free Software
+ Foundation, Inc.
+
+ NOTE: The canonical source of this file is maintained with gnulib.
+ Bugs can be reported to bug-gnulib@gnu.org.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ USA. */
+
+/* Compile-time symbols that this file uses:
+
+ HAVE_PSTAT_GETDYNAMIC Define this if your system has the
+ pstat_getdynamic function. I think it
+ is unique to HPUX9. The best way to get the
+ definition is through the AC_FUNC_GETLOADAVG
+ macro that comes with autoconf 2.13 or newer.
+ If that isn't an option, then just put
+ AC_CHECK_FUNCS(pstat_getdynamic) in your
+ configure.in file.
+ FIXUP_KERNEL_SYMBOL_ADDR() Adjust address in returned struct nlist.
+ KERNEL_FILE Name of the kernel file to nlist.
+ LDAV_CVT() Scale the load average from the kernel.
+ Returns a double.
+ LDAV_SYMBOL Name of kernel symbol giving load average.
+ LOAD_AVE_TYPE Type of the load average array in the kernel.
+ Must be defined unless one of
+ apollo, DGUX, NeXT, or UMAX is defined;
+ or we have libkstat;
+ otherwise, no load average is available.
+ HAVE_NLIST_H nlist.h is available. NLIST_STRUCT defaults
+ to this.
+ NLIST_STRUCT Include nlist.h, not a.out.h, and
+ the nlist n_name element is a pointer,
+ not an array.
+ HAVE_STRUCT_NLIST_N_UN_N_NAME `n_un.n_name' is member of `struct nlist'.
+ LINUX_LDAV_FILE [__linux__, __CYGWIN__]: File containing
+ load averages.
+
+ Specific system predefines this file uses, aside from setting
+ default values if not emacs:
+
+ apollo
+ BSD Real BSD, not just BSD-like.
+ convex
+ DGUX
+ eunice UNIX emulator under VMS.
+ hpux
+ __MSDOS__ No-op for MSDOS.
+ NeXT
+ sgi
+ sequent Sequent Dynix 3.x.x (BSD)
+ _SEQUENT_ Sequent DYNIX/ptx 1.x.x (SYSV)
+ sony_news NEWS-OS (works at least for 4.1C)
+ UMAX
+ UMAX4_3
+ VMS
+ WINDOWS32 No-op for Windows95/NT.
+ __linux__ Linux: assumes /proc file system mounted.
+ Support from Michael K. Johnson.
+ __CYGWIN__ Cygwin emulates linux /proc/loadavg.
+ __NetBSD__ NetBSD: assumes /kern file system mounted.
+
+ In addition, to avoid nesting many #ifdefs, we internally set
+ LDAV_DONE to indicate that the load average has been computed.
+
+ We also #define LDAV_PRIVILEGED if a program will require
+ special installation to be able to call getloadavg. */
+
+/* "configure" defines CONFIGURING_GETLOADAVG to sidestep problems
+ with partially-configured source directories. */
+
+#ifndef CONFIGURING_GETLOADAVG
+# include <config.h>
+# include <stdbool.h>
+#endif
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+/* Exclude all the code except the test program at the end
+ if the system has its own `getloadavg' function. */
+
+#ifndef HAVE_GETLOADAVG
+
+# include <sys/types.h>
+
+/* Both the Emacs and non-Emacs sections want this. Some
+ configuration files' definitions for the LOAD_AVE_CVT macro (like
+ sparc.h's) use macros like FSCALE, defined here. */
+# if defined (unix) || defined (__unix)
+# include <sys/param.h>
+# endif
+
+# include "c-strtod.h"
+# include "cloexec.h"
+# include "intprops.h"
+# include "xalloc.h"
+
+/* The existing Emacs configuration files define a macro called
+ LOAD_AVE_CVT, which accepts a value of type LOAD_AVE_TYPE, and
+ returns the load average multiplied by 100. What we actually want
+ is a macro called LDAV_CVT, which returns the load average as an
+ unmultiplied double.
+
+ For backwards compatibility, we'll define LDAV_CVT in terms of
+ LOAD_AVE_CVT, but future machine config files should just define
+ LDAV_CVT directly. */
+
+# if !defined (LDAV_CVT) && defined (LOAD_AVE_CVT)
+# define LDAV_CVT(n) (LOAD_AVE_CVT (n) / 100.0)
+# endif
+
+# if !defined (BSD) && defined (ultrix)
+/* Ultrix behaves like BSD on Vaxen. */
+# define BSD
+# endif
+
+# ifdef NeXT
+/* NeXT in the 2.{0,1,2} releases defines BSD in <sys/param.h>, which
+ conflicts with the definition understood in this file, that this
+ really is BSD. */
+# undef BSD
+
+/* NeXT defines FSCALE in <sys/param.h>. However, we take FSCALE being
+ defined to mean that the nlist method should be used, which is not true. */
+# undef FSCALE
+# endif
+
+/* Same issues as for NeXT apply to the HURD-based GNU system. */
+# ifdef __GNU__
+# undef BSD
+# undef FSCALE
+# endif /* __GNU__ */
+
+/* Set values that are different from the defaults, which are
+ set a little farther down with #ifndef. */
+
+
+/* Some shorthands. */
+
+# if defined (HPUX) && !defined (hpux)
+# define hpux
+# endif
+
+# if defined (__hpux) && !defined (hpux)
+# define hpux
+# endif
+
+# if defined (__sun) && !defined (sun)
+# define sun
+# endif
+
+# if defined (hp300) && !defined (hpux)
+# define MORE_BSD
+# endif
+
+# if defined (ultrix) && defined (mips)
+# define decstation
+# endif
+
+# if defined (__SVR4) && !defined (SVR4)
+# define SVR4
+# endif
+
+# if (defined (sun) && defined (SVR4)) || defined (SOLARIS2)
+# define SUNOS_5
+# endif
+
+# if defined (__osf__) && (defined (__alpha) || defined (__alpha__))
+# define OSF_ALPHA
+# include <sys/mbuf.h>
+# include <sys/socket.h>
+# include <net/route.h>
+# include <sys/table.h>
+# endif
+
+# if defined (__osf__) && (defined (mips) || defined (__mips__))
+# define OSF_MIPS
+# include <sys/table.h>
+# endif
+
+/* UTek's /bin/cc on the 4300 has no architecture specific cpp define by
+ default, but _MACH_IND_SYS_TYPES is defined in <sys/types.h>. Combine
+ that with a couple of other things and we'll have a unique match. */
+# if !defined (tek4300) && defined (unix) && defined (m68k) && defined (mc68000) && defined (mc68020) && defined (_MACH_IND_SYS_TYPES)
+# define tek4300 /* Define by emacs, but not by other users. */
+# endif
+
+
+/* VAX C can't handle multi-line #ifs, or lines longer than 256 chars. */
+# ifndef LOAD_AVE_TYPE
+
+# ifdef MORE_BSD
+# define LOAD_AVE_TYPE long
+# endif
+
+# ifdef sun
+# define LOAD_AVE_TYPE long
+# endif
+
+# ifdef decstation
+# define LOAD_AVE_TYPE long
+# endif
+
+# ifdef _SEQUENT_
+# define LOAD_AVE_TYPE long
+# endif
+
+# ifdef sgi
+# define LOAD_AVE_TYPE long
+# endif
+
+# ifdef SVR4
+# define LOAD_AVE_TYPE long
+# endif
+
+# ifdef sony_news
+# define LOAD_AVE_TYPE long
+# endif
+
+# ifdef sequent
+# define LOAD_AVE_TYPE long
+# endif
+
+# ifdef OSF_ALPHA
+# define LOAD_AVE_TYPE long
+# endif
+
+# if defined (ardent) && defined (titan)
+# define LOAD_AVE_TYPE long
+# endif
+
+# ifdef tek4300
+# define LOAD_AVE_TYPE long
+# endif
+
+# if defined (alliant) && defined (i860) /* Alliant FX/2800 */
+# define LOAD_AVE_TYPE long
+# endif
+
+# ifdef _AIX
+# define LOAD_AVE_TYPE long
+# endif
+
+# ifdef convex
+# define LOAD_AVE_TYPE double
+# ifndef LDAV_CVT
+# define LDAV_CVT(n) (n)
+# endif
+# endif
+
+# endif /* No LOAD_AVE_TYPE. */
+
+# ifdef OSF_ALPHA
+/* <sys/param.h> defines an incorrect value for FSCALE on Alpha OSF/1,
+ according to ghazi@noc.rutgers.edu. */
+# undef FSCALE
+# define FSCALE 1024.0
+# endif
+
+# if defined (alliant) && defined (i860) /* Alliant FX/2800 */
+/* <sys/param.h> defines an incorrect value for FSCALE on an
+ Alliant FX/2800 Concentrix 2.2, according to ghazi@noc.rutgers.edu. */
+# undef FSCALE
+# define FSCALE 100.0
+# endif
+
+
+# ifndef FSCALE
+
+/* SunOS and some others define FSCALE in sys/param.h. */
+
+# ifdef MORE_BSD
+# define FSCALE 2048.0
+# endif
+
+# if defined (MIPS) || defined (SVR4) || defined (decstation)
+# define FSCALE 256
+# endif
+
+# if defined (sgi) || defined (sequent)
+/* Sometimes both MIPS and sgi are defined, so FSCALE was just defined
+ above under #ifdef MIPS. But we want the sgi value. */
+# undef FSCALE
+# define FSCALE 1000.0
+# endif
+
+# if defined (ardent) && defined (titan)
+# define FSCALE 65536.0
+# endif
+
+# ifdef tek4300
+# define FSCALE 100.0
+# endif
+
+# ifdef _AIX
+# define FSCALE 65536.0
+# endif
+
+# endif /* Not FSCALE. */
+
+# if !defined (LDAV_CVT) && defined (FSCALE)
+# define LDAV_CVT(n) (((double) (n)) / FSCALE)
+# endif
+
+# ifndef NLIST_STRUCT
+# if HAVE_NLIST_H
+# define NLIST_STRUCT
+# endif
+# endif
+
+# if defined (sgi) || (defined (mips) && !defined (BSD))
+# define FIXUP_KERNEL_SYMBOL_ADDR(nl) ((nl)[0].n_value &= ~(1 << 31))
+# endif
+
+
+# if !defined (KERNEL_FILE) && defined (sequent)
+# define KERNEL_FILE "/dynix"
+# endif
+
+# if !defined (KERNEL_FILE) && defined (hpux)
+# define KERNEL_FILE "/hp-ux"
+# endif
+
+# if !defined (KERNEL_FILE) && (defined (_SEQUENT_) || defined (MIPS) || defined (SVR4) || defined (ISC) || defined (sgi) || (defined (ardent) && defined (titan)))
+# define KERNEL_FILE "/unix"
+# endif
+
+
+# if !defined (LDAV_SYMBOL) && defined (alliant)
+# define LDAV_SYMBOL "_Loadavg"
+# endif
+
+# if !defined (LDAV_SYMBOL) && ((defined (hpux) && !defined (hp9000s300)) || defined (_SEQUENT_) || defined (SVR4) || defined (ISC) || defined (sgi) || (defined (ardent) && defined (titan)) || defined (_AIX))
+# define LDAV_SYMBOL "avenrun"
+# endif
+
+# include <unistd.h>
+
+/* LOAD_AVE_TYPE should only get defined if we're going to use the
+ nlist method. */
+# if !defined (LOAD_AVE_TYPE) && (defined (BSD) || defined (LDAV_CVT) || defined (KERNEL_FILE) || defined (LDAV_SYMBOL))
+# define LOAD_AVE_TYPE double
+# endif
+
+# ifdef LOAD_AVE_TYPE
+
+# ifndef __VMS
+# ifndef __linux__
+# ifndef NLIST_STRUCT
+# include <a.out.h>
+# else /* NLIST_STRUCT */
+# include <nlist.h>
+# endif /* NLIST_STRUCT */
+
+# ifdef SUNOS_5
+# include <fcntl.h>
+# include <kvm.h>
+# include <kstat.h>
+# endif
+
+# if defined (hpux) && defined (HAVE_PSTAT_GETDYNAMIC)
+# include <sys/pstat.h>
+# endif
+
+# ifndef KERNEL_FILE
+# define KERNEL_FILE "/vmunix"
+# endif /* KERNEL_FILE */
+
+# ifndef LDAV_SYMBOL
+# define LDAV_SYMBOL "_avenrun"
+# endif /* LDAV_SYMBOL */
+# endif /* __linux__ */
+
+# else /* __VMS */
+
+# ifndef eunice
+# include <iodef.h>
+# include <descrip.h>
+# else /* eunice */
+# include <vms/iodef.h>
+# endif /* eunice */
+# endif /* __VMS */
+
+# ifndef LDAV_CVT
+# define LDAV_CVT(n) ((double) (n))
+# endif /* !LDAV_CVT */
+
+# endif /* LOAD_AVE_TYPE */
+
+# if defined (__GNU__) && !defined (NeXT)
+/* Note that NeXT Openstep defines __GNU__ even though it should not. */
+/* GNU system acts much like NeXT, for load average purposes,
+ but not exactly. */
+# define NeXT
+# define host_self mach_host_self
+# endif
+
+# ifdef NeXT
+# ifdef HAVE_MACH_MACH_H
+# include <mach/mach.h>
+# else
+# include <mach.h>
+# endif
+# endif /* NeXT */
+
+# ifdef sgi
+# include <sys/sysmp.h>
+# endif /* sgi */
+
+# ifdef UMAX
+# include <signal.h>
+# include <sys/time.h>
+# include <sys/wait.h>
+# include <sys/syscall.h>
+
+# ifdef UMAX_43
+# include <machine/cpu.h>
+# include <inq_stats/statistics.h>
+# include <inq_stats/sysstats.h>
+# include <inq_stats/cpustats.h>
+# include <inq_stats/procstats.h>
+# else /* Not UMAX_43. */
+# include <sys/sysdefs.h>
+# include <sys/statistics.h>
+# include <sys/sysstats.h>
+# include <sys/cpudefs.h>
+# include <sys/cpustats.h>
+# include <sys/procstats.h>
+# endif /* Not UMAX_43. */
+# endif /* UMAX */
+
+# ifdef DGUX
+# include <sys/dg_sys_info.h>
+# endif
+
+# include "fcntl--.h"
+
+/* Avoid static vars inside a function since in HPUX they dump as pure. */
+
+# ifdef NeXT
+static processor_set_t default_set;
+static bool getloadavg_initialized;
+# endif /* NeXT */
+
+# ifdef UMAX
+static unsigned int cpus = 0;
+static unsigned int samples;
+# endif /* UMAX */
+
+# ifdef DGUX
+static struct dg_sys_info_load_info load_info; /* what-a-mouthful! */
+# endif /* DGUX */
+
+# if !defined (HAVE_LIBKSTAT) && defined (LOAD_AVE_TYPE)
+/* File descriptor open to /dev/kmem or VMS load ave driver. */
+static int channel;
+/* True iff channel is valid. */
+static bool getloadavg_initialized;
+/* Offset in kmem to seek to read load average, or 0 means invalid. */
+static long offset;
+
+# if ! defined __VMS && ! defined sgi && ! defined __linux__
+static struct nlist nl[2];
+# endif
+
+# ifdef SUNOS_5
+static kvm_t *kd;
+# endif /* SUNOS_5 */
+
+# endif /* LOAD_AVE_TYPE && !HAVE_LIBKSTAT */
+
+/* Put the 1 minute, 5 minute and 15 minute load averages
+ into the first NELEM elements of LOADAVG.
+ Return the number written (never more than 3, but may be less than NELEM),
+ or -1 if an error occurred. */
+
+int
+getloadavg (double loadavg[], int nelem)
+{
+ int elem = 0; /* Return value. */
+
+# ifdef NO_GET_LOAD_AVG
+# define LDAV_DONE
+ /* Set errno to zero to indicate that there was no particular error;
+ this function just can't work at all on this system. */
+ errno = 0;
+ elem = -1;
+# endif
+
+# if !defined (LDAV_DONE) && defined (HAVE_LIBKSTAT)
+/* Use libkstat because we don't have to be root. */
+# define LDAV_DONE
+ kstat_ctl_t *kc;
+ kstat_t *ksp;
+ kstat_named_t *kn;
+
+ kc = kstat_open ();
+ if (kc == 0)
+ return -1;
+ ksp = kstat_lookup (kc, "unix", 0, "system_misc");
+ if (ksp == 0)
+ return -1;
+ if (kstat_read (kc, ksp, 0) == -1)
+ return -1;
+
+
+ kn = kstat_data_lookup (ksp, "avenrun_1min");
+ if (kn == 0)
+ {
+ /* Return -1 if no load average information is available. */
+ nelem = 0;
+ elem = -1;
+ }
+
+ if (nelem >= 1)
+ loadavg[elem++] = (double) kn->value.ul / FSCALE;
+
+ if (nelem >= 2)
+ {
+ kn = kstat_data_lookup (ksp, "avenrun_5min");
+ if (kn != 0)
+ {
+ loadavg[elem++] = (double) kn->value.ul / FSCALE;
+
+ if (nelem >= 3)
+ {
+ kn = kstat_data_lookup (ksp, "avenrun_15min");
+ if (kn != 0)
+ loadavg[elem++] = (double) kn->value.ul / FSCALE;
+ }
+ }
+ }
+
+ kstat_close (kc);
+# endif /* HAVE_LIBKSTAT */
+
+# if !defined (LDAV_DONE) && defined (hpux) && defined (HAVE_PSTAT_GETDYNAMIC)
+/* Use pstat_getdynamic() because we don't have to be root. */
+# define LDAV_DONE
+# undef LOAD_AVE_TYPE
+
+ struct pst_dynamic dyn_info;
+ if (pstat_getdynamic (&dyn_info, sizeof (dyn_info), 0, 0) < 0)
+ return -1;
+ if (nelem > 0)
+ loadavg[elem++] = dyn_info.psd_avg_1_min;
+ if (nelem > 1)
+ loadavg[elem++] = dyn_info.psd_avg_5_min;
+ if (nelem > 2)
+ loadavg[elem++] = dyn_info.psd_avg_15_min;
+
+# endif /* hpux && HAVE_PSTAT_GETDYNAMIC */
+
+# if !defined (LDAV_DONE) && (defined (__linux__) || defined (__CYGWIN__))
+# define LDAV_DONE
+# undef LOAD_AVE_TYPE
+
+# ifndef LINUX_LDAV_FILE
+# define LINUX_LDAV_FILE "/proc/loadavg"
+# endif
+
+ char ldavgbuf[3 * (INT_STRLEN_BOUND (int) + sizeof ".00 ")];
+ char const *ptr = ldavgbuf;
+ int fd, count;
+
+ fd = open (LINUX_LDAV_FILE, O_RDONLY);
+ if (fd == -1)
+ return -1;
+ count = read (fd, ldavgbuf, sizeof ldavgbuf - 1);
+ (void) close (fd);
+ if (count <= 0)
+ return -1;
+ ldavgbuf[count] = '\0';
+
+ for (elem = 0; elem < nelem; elem++)
+ {
+ char *endptr;
+ double d = c_strtod (ptr, &endptr);
+ if (ptr == endptr)
+ {
+ if (elem == 0)
+ return -1;
+ break;
+ }
+ loadavg[elem] = d;
+ ptr = endptr;
+ }
+
+ return elem;
+
+# endif /* __linux__ || __CYGWIN__ */
+
+# if !defined (LDAV_DONE) && defined (__NetBSD__)
+# define LDAV_DONE
+# undef LOAD_AVE_TYPE
+
+# ifndef NETBSD_LDAV_FILE
+# define NETBSD_LDAV_FILE "/kern/loadavg"
+# endif
+
+ unsigned long int load_ave[3], scale;
+ int count;
+ FILE *fp;
+
+ fp = fopen (NETBSD_LDAV_FILE, "r");
+ if (fp == NULL)
+ return -1;
+ count = fscanf (fp, "%lu %lu %lu %lu\n",
+ &load_ave[0], &load_ave[1], &load_ave[2],
+ &scale);
+ (void) fclose (fp);
+ if (count != 4)
+ return -1;
+
+ for (elem = 0; elem < nelem; elem++)
+ loadavg[elem] = (double) load_ave[elem] / (double) scale;
+
+ return elem;
+
+# endif /* __NetBSD__ */
+
+# if !defined (LDAV_DONE) && defined (NeXT)
+# define LDAV_DONE
+ /* The NeXT code was adapted from iscreen 3.2. */
+
+ host_t host;
+ struct processor_set_basic_info info;
+ unsigned int info_count;
+
+ /* We only know how to get the 1-minute average for this system,
+ so even if the caller asks for more than 1, we only return 1. */
+
+ if (!getloadavg_initialized)
+ {
+ if (processor_set_default (host_self (), &default_set) == KERN_SUCCESS)
+ getloadavg_initialized = true;
+ }
+
+ if (getloadavg_initialized)
+ {
+ info_count = PROCESSOR_SET_BASIC_INFO_COUNT;
+ if (processor_set_info (default_set, PROCESSOR_SET_BASIC_INFO, &host,
+ (processor_set_info_t) &info, &info_count)
+ != KERN_SUCCESS)
+ getloadavg_initialized = false;
+ else
+ {
+ if (nelem > 0)
+ loadavg[elem++] = (double) info.load_average / LOAD_SCALE;
+ }
+ }
+
+ if (!getloadavg_initialized)
+ return -1;
+# endif /* NeXT */
+
+# if !defined (LDAV_DONE) && defined (UMAX)
+# define LDAV_DONE
+/* UMAX 4.2, which runs on the Encore Multimax multiprocessor, does not
+ have a /dev/kmem. Information about the workings of the running kernel
+ can be gathered with inq_stats system calls.
+ We only know how to get the 1-minute average for this system. */
+
+ struct proc_summary proc_sum_data;
+ struct stat_descr proc_info;
+ double load;
+ register unsigned int i, j;
+
+ if (cpus == 0)
+ {
+ register unsigned int c, i;
+ struct cpu_config conf;
+ struct stat_descr desc;
+
+ desc.sd_next = 0;
+ desc.sd_subsys = SUBSYS_CPU;
+ desc.sd_type = CPUTYPE_CONFIG;
+ desc.sd_addr = (char *) &conf;
+ desc.sd_size = sizeof conf;
+
+ if (inq_stats (1, &desc))
+ return -1;
+
+ c = 0;
+ for (i = 0; i < conf.config_maxclass; ++i)
+ {
+ struct class_stats stats;
+ bzero ((char *) &stats, sizeof stats);
+
+ desc.sd_type = CPUTYPE_CLASS;
+ desc.sd_objid = i;
+ desc.sd_addr = (char *) &stats;
+ desc.sd_size = sizeof stats;
+
+ if (inq_stats (1, &desc))
+ return -1;
+
+ c += stats.class_numcpus;
+ }
+ cpus = c;
+ samples = cpus < 2 ? 3 : (2 * cpus / 3);
+ }
+
+ proc_info.sd_next = 0;
+ proc_info.sd_subsys = SUBSYS_PROC;
+ proc_info.sd_type = PROCTYPE_SUMMARY;
+ proc_info.sd_addr = (char *) &proc_sum_data;
+ proc_info.sd_size = sizeof (struct proc_summary);
+ proc_info.sd_sizeused = 0;
+
+ if (inq_stats (1, &proc_info) != 0)
+ return -1;
+
+ load = proc_sum_data.ps_nrunnable;
+ j = 0;
+ for (i = samples - 1; i > 0; --i)
+ {
+ load += proc_sum_data.ps_nrun[j];
+ if (j++ == PS_NRUNSIZE)
+ j = 0;
+ }
+
+ if (nelem > 0)
+ loadavg[elem++] = load / samples / cpus;
+# endif /* UMAX */
+
+# if !defined (LDAV_DONE) && defined (DGUX)
+# define LDAV_DONE
+ /* This call can return -1 for an error, but with good args
+ it's not supposed to fail. The first argument is for no
+ apparent reason of type `long int *'. */
+ dg_sys_info ((long int *) &load_info,
+ DG_SYS_INFO_LOAD_INFO_TYPE,
+ DG_SYS_INFO_LOAD_VERSION_0);
+
+ if (nelem > 0)
+ loadavg[elem++] = load_info.one_minute;
+ if (nelem > 1)
+ loadavg[elem++] = load_info.five_minute;
+ if (nelem > 2)
+ loadavg[elem++] = load_info.fifteen_minute;
+# endif /* DGUX */
+
+# if !defined (LDAV_DONE) && defined (apollo)
+# define LDAV_DONE
+/* Apollo code from lisch@mentorg.com (Ray Lischner).
+
+ This system call is not documented. The load average is obtained as
+ three long integers, for the load average over the past minute,
+ five minutes, and fifteen minutes. Each value is a scaled integer,
+ with 16 bits of integer part and 16 bits of fraction part.
+
+ I'm not sure which operating system first supported this system call,
+ but I know that SR10.2 supports it. */
+
+ extern void proc1_$get_loadav ();
+ unsigned long load_ave[3];
+
+ proc1_$get_loadav (load_ave);
+
+ if (nelem > 0)
+ loadavg[elem++] = load_ave[0] / 65536.0;
+ if (nelem > 1)
+ loadavg[elem++] = load_ave[1] / 65536.0;
+ if (nelem > 2)
+ loadavg[elem++] = load_ave[2] / 65536.0;
+# endif /* apollo */
+
+# if !defined (LDAV_DONE) && defined (OSF_MIPS)
+# define LDAV_DONE
+
+ struct tbl_loadavg load_ave;
+ table (TBL_LOADAVG, 0, &load_ave, 1, sizeof (load_ave));
+ loadavg[elem++]
+ = (load_ave.tl_lscale == 0
+ ? load_ave.tl_avenrun.d[0]
+ : (load_ave.tl_avenrun.l[0] / (double) load_ave.tl_lscale));
+# endif /* OSF_MIPS */
+
+# if !defined (LDAV_DONE) && (defined (__MSDOS__) || defined (WINDOWS32))
+# define LDAV_DONE
+
+ /* A faithful emulation is going to have to be saved for a rainy day. */
+ for ( ; elem < nelem; elem++)
+ {
+ loadavg[elem] = 0.0;
+ }
+# endif /* __MSDOS__ || WINDOWS32 */
+
+# if !defined (LDAV_DONE) && defined (OSF_ALPHA)
+# define LDAV_DONE
+
+ struct tbl_loadavg load_ave;
+ table (TBL_LOADAVG, 0, &load_ave, 1, sizeof (load_ave));
+ for (elem = 0; elem < nelem; elem++)
+ loadavg[elem]
+ = (load_ave.tl_lscale == 0
+ ? load_ave.tl_avenrun.d[elem]
+ : (load_ave.tl_avenrun.l[elem] / (double) load_ave.tl_lscale));
+# endif /* OSF_ALPHA */
+
+# if ! defined LDAV_DONE && defined __VMS
+ /* VMS specific code -- read from the Load Ave driver. */
+
+ LOAD_AVE_TYPE load_ave[3];
+ static bool getloadavg_initialized;
+# ifdef eunice
+ struct
+ {
+ int dsc$w_length;
+ char *dsc$a_pointer;
+ } descriptor;
+# endif
+
+ /* Ensure that there is a channel open to the load ave device. */
+ if (!getloadavg_initialized)
+ {
+ /* Attempt to open the channel. */
+# ifdef eunice
+ descriptor.dsc$w_length = 18;
+ descriptor.dsc$a_pointer = "$$VMS_LOAD_AVERAGE";
+# else
+ $DESCRIPTOR (descriptor, "LAV0:");
+# endif
+ if (sys$assign (&descriptor, &channel, 0, 0) & 1)
+ getloadavg_initialized = true;
+ }
+
+ /* Read the load average vector. */
+ if (getloadavg_initialized
+ && !(sys$qiow (0, channel, IO$_READVBLK, 0, 0, 0,
+ load_ave, 12, 0, 0, 0, 0) & 1))
+ {
+ sys$dassgn (channel);
+ getloadavg_initialized = false;
+ }
+
+ if (!getloadavg_initialized)
+ return -1;
+# endif /* ! defined LDAV_DONE && defined __VMS */
+
+# if ! defined LDAV_DONE && defined LOAD_AVE_TYPE && ! defined __VMS
+
+ /* UNIX-specific code -- read the average from /dev/kmem. */
+
+# define LDAV_PRIVILEGED /* This code requires special installation. */
+
+ LOAD_AVE_TYPE load_ave[3];
+
+ /* Get the address of LDAV_SYMBOL. */
+ if (offset == 0)
+ {
+# ifndef sgi
+# ifndef NLIST_STRUCT
+ strcpy (nl[0].n_name, LDAV_SYMBOL);
+ strcpy (nl[1].n_name, "");
+# else /* NLIST_STRUCT */
+# ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME
+ nl[0].n_un.n_name = LDAV_SYMBOL;
+ nl[1].n_un.n_name = 0;
+# else /* not HAVE_STRUCT_NLIST_N_UN_N_NAME */
+ nl[0].n_name = LDAV_SYMBOL;
+ nl[1].n_name = 0;
+# endif /* not HAVE_STRUCT_NLIST_N_UN_N_NAME */
+# endif /* NLIST_STRUCT */
+
+# ifndef SUNOS_5
+ if (
+# if !(defined (_AIX) && !defined (ps2))
+ nlist (KERNEL_FILE, nl)
+# else /* _AIX */
+ knlist (nl, 1, sizeof (nl[0]))
+# endif
+ >= 0)
+ /* Omit "&& nl[0].n_type != 0 " -- it breaks on Sun386i. */
+ {
+# ifdef FIXUP_KERNEL_SYMBOL_ADDR
+ FIXUP_KERNEL_SYMBOL_ADDR (nl);
+# endif
+ offset = nl[0].n_value;
+ }
+# endif /* !SUNOS_5 */
+# else /* sgi */
+ int ldav_off;
+
+ ldav_off = sysmp (MP_KERNADDR, MPKA_AVENRUN);
+ if (ldav_off != -1)
+ offset = (long int) ldav_off & 0x7fffffff;
+# endif /* sgi */
+ }
+
+ /* Make sure we have /dev/kmem open. */
+ if (!getloadavg_initialized)
+ {
+# ifndef SUNOS_5
+ channel = open ("/dev/kmem", O_RDONLY);
+ if (channel >= 0)
+ {
+ /* Set the channel to close on exec, so it does not
+ litter any child's descriptor table. */
+ set_cloexec_flag (channel, true);
+ getloadavg_initialized = true;
+ }
+# else /* SUNOS_5 */
+ /* We pass 0 for the kernel, corefile, and swapfile names
+ to use the currently running kernel. */
+ kd = kvm_open (0, 0, 0, O_RDONLY, 0);
+ if (kd != 0)
+ {
+ /* nlist the currently running kernel. */
+ kvm_nlist (kd, nl);
+ offset = nl[0].n_value;
+ getloadavg_initialized = true;
+ }
+# endif /* SUNOS_5 */
+ }
+
+ /* If we can, get the load average values. */
+ if (offset && getloadavg_initialized)
+ {
+ /* Try to read the load. */
+# ifndef SUNOS_5
+ if (lseek (channel, offset, 0) == -1L
+ || read (channel, (char *) load_ave, sizeof (load_ave))
+ != sizeof (load_ave))
+ {
+ close (channel);
+ getloadavg_initialized = false;
+ }
+# else /* SUNOS_5 */
+ if (kvm_read (kd, offset, (char *) load_ave, sizeof (load_ave))
+ != sizeof (load_ave))
+ {
+ kvm_close (kd);
+ getloadavg_initialized = false;
+ }
+# endif /* SUNOS_5 */
+ }
+
+ if (offset == 0 || !getloadavg_initialized)
+ return -1;
+# endif /* ! defined LDAV_DONE && defined LOAD_AVE_TYPE && ! defined __VMS */
+
+# if !defined (LDAV_DONE) && defined (LOAD_AVE_TYPE) /* Including VMS. */
+ if (nelem > 0)
+ loadavg[elem++] = LDAV_CVT (load_ave[0]);
+ if (nelem > 1)
+ loadavg[elem++] = LDAV_CVT (load_ave[1]);
+ if (nelem > 2)
+ loadavg[elem++] = LDAV_CVT (load_ave[2]);
+
+# define LDAV_DONE
+# endif /* !LDAV_DONE && LOAD_AVE_TYPE */
+
+# if !defined LDAV_DONE
+ /* Set errno to zero to indicate that there was no particular error;
+ this function just can't work at all on this system. */
+ errno = 0;
+ elem = -1;
+# endif
+ return elem;
+}
+
+#endif /* ! HAVE_GETLOADAVG */
+
+#ifdef TEST
+int
+main (int argc, char **argv)
+{
+ int naptime = 0;
+
+ if (argc > 1)
+ naptime = atoi (argv[1]);
+
+ while (1)
+ {
+ double avg[3];
+ int loads;
+
+ errno = 0; /* Don't be misled if it doesn't set errno. */
+ loads = getloadavg (avg, 3);
+ if (loads == -1)
+ {
+ perror ("Error getting load average");
+ return EXIT_FAILURE;
+ }
+ if (loads > 0)
+ printf ("1-minute: %f ", avg[0]);
+ if (loads > 1)
+ printf ("5-minute: %f ", avg[1]);
+ if (loads > 2)
+ printf ("15-minute: %f ", avg[2]);
+ if (loads > 0)
+ putchar ('\n');
+
+ if (naptime == 0)
+ break;
+ sleep (naptime);
+ }
+
+ return EXIT_SUCCESS;
+}
+#endif /* TEST */
diff --git a/lib/getndelim2.c b/lib/getndelim2.c
new file mode 100644
index 0000000..9a9e6e7
--- /dev/null
+++ b/lib/getndelim2.c
@@ -0,0 +1,143 @@
+/* getndelim2 - Read a line from a stream, stopping at one of 2 delimiters,
+ with bounded memory allocation.
+
+ Copyright (C) 1993, 1996, 1997, 1998, 2000, 2003, 2004, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Originally written by Jan Brittenson, bson@gnu.ai.mit.edu. */
+
+#include <config.h>
+
+#include "getndelim2.h"
+
+#include <stdlib.h>
+#include <stddef.h>
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#include <limits.h>
+#include <stdint.h>
+
+#ifndef SSIZE_MAX
+# define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2))
+#endif
+
+/* The maximum value that getndelim2 can return without suffering from
+ overflow problems, either internally (because of pointer
+ subtraction overflow) or due to the API (because of ssize_t). */
+#define GETNDELIM2_MAXIMUM (PTRDIFF_MAX < SSIZE_MAX ? PTRDIFF_MAX : SSIZE_MAX)
+
+/* Try to add at least this many bytes when extending the buffer.
+ MIN_CHUNK must be no greater than GETNDELIM2_MAXIMUM. */
+#define MIN_CHUNK 64
+
+ssize_t
+getndelim2 (char **lineptr, size_t *linesize, size_t offset, size_t nmax,
+ int delim1, int delim2, FILE *stream)
+{
+ size_t nbytes_avail; /* Allocated but unused bytes in *LINEPTR. */
+ char *read_pos; /* Where we're reading into *LINEPTR. */
+ ssize_t bytes_stored = -1;
+ char *ptr = *lineptr;
+ size_t size = *linesize;
+
+ if (!ptr)
+ {
+ size = nmax < MIN_CHUNK ? nmax : MIN_CHUNK;
+ ptr = malloc (size);
+ if (!ptr)
+ return -1;
+ }
+
+ if (size < offset)
+ goto done;
+
+ nbytes_avail = size - offset;
+ read_pos = ptr + offset;
+
+ if (nbytes_avail == 0 && nmax <= size)
+ goto done;
+
+ for (;;)
+ {
+ /* Here always ptr + size == read_pos + nbytes_avail. */
+
+ int c;
+
+ /* We always want at least one byte left in the buffer, since we
+ always (unless we get an error while reading the first byte)
+ NUL-terminate the line buffer. */
+
+ if (nbytes_avail < 2 && size < nmax)
+ {
+ size_t newsize = size < MIN_CHUNK ? size + MIN_CHUNK : 2 * size;
+ char *newptr;
+
+ if (! (size < newsize && newsize <= nmax))
+ newsize = nmax;
+
+ if (GETNDELIM2_MAXIMUM < newsize - offset)
+ {
+ size_t newsizemax = offset + GETNDELIM2_MAXIMUM + 1;
+ if (size == newsizemax)
+ goto done;
+ newsize = newsizemax;
+ }
+
+ nbytes_avail = newsize - (read_pos - ptr);
+ newptr = realloc (ptr, newsize);
+ if (!newptr)
+ goto done;
+ ptr = newptr;
+ size = newsize;
+ read_pos = size - nbytes_avail + ptr;
+ }
+
+ c = getc (stream);
+ if (c == EOF)
+ {
+ /* Return partial line, if any. */
+ if (read_pos == ptr)
+ goto done;
+ else
+ break;
+ }
+
+ if (nbytes_avail >= 2)
+ {
+ *read_pos++ = c;
+ nbytes_avail--;
+ }
+
+ if (c == delim1 || c == delim2)
+ /* Return the line. */
+ break;
+ }
+
+ /* Done - NUL terminate and return the number of bytes read.
+ At this point we know that nbytes_avail >= 1. */
+ *read_pos = '\0';
+
+ bytes_stored = read_pos - (ptr + offset);
+
+ done:
+ *lineptr = ptr;
+ *linesize = size;
+ return bytes_stored;
+}
diff --git a/lib/getndelim2.h b/lib/getndelim2.h
new file mode 100644
index 0000000..37a597f
--- /dev/null
+++ b/lib/getndelim2.h
@@ -0,0 +1,43 @@
+/* getndelim2 - Read a line from a stream, stopping at one of 2 delimiters,
+ with bounded memory allocation.
+
+ Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef GETNDELIM2_H
+#define GETNDELIM2_H 1
+
+#include <stdio.h>
+#include <sys/types.h>
+
+#define GETNLINE_NO_LIMIT ((size_t) -1)
+
+/* Read into a buffer *LINEPTR returned from malloc (or NULL),
+ pointing to *LINESIZE bytes of space. Store the input bytes
+ starting at *LINEPTR + OFFSET, and null-terminate them. Reallocate
+ the buffer as necessary, but if NMAX is not GETNLINE_NO_LIMIT
+ then do not allocate more than NMAX bytes; if the line is longer
+ than that, read and discard the extra bytes. Stop reading after
+ the first occurrence of DELIM1 or DELIM2, whichever comes first;
+ a delimiter equal to EOF stands for no delimiter. Read the
+ input bytes from STREAM.
+ Return the number of bytes read and stored at *LINEPTR + OFFSET (not
+ including the NUL terminator), or -1 on error or EOF. */
+extern ssize_t getndelim2 (char **lineptr, size_t *linesize, size_t offset,
+ size_t nmax, int delim1, int delim2,
+ FILE *stream);
+
+#endif /* GETNDELIM2_H */
diff --git a/lib/getopt.c b/lib/getopt.c
new file mode 100644
index 0000000..3580ad8
--- /dev/null
+++ b/lib/getopt.c
@@ -0,0 +1,1191 @@
+/* Getopt for GNU.
+ NOTE: getopt is now part of the C library, so if you don't know what
+ "Keep this file name-space clean" means, talk to drepper@gnu.org
+ before changing it!
+ Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002,2003,2004,2006
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+#include "getopt.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#ifdef __VMS
+# include <unixlib.h>
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "gettext.h"
+# define _(msgid) gettext (msgid)
+#endif
+
+#if defined _LIBC && defined USE_IN_LIBIO
+# include <wchar.h>
+#endif
+
+#ifndef attribute_hidden
+# define attribute_hidden
+#endif
+
+/* Unlike standard Unix `getopt', functions like `getopt_long'
+ let the user intersperse the options with the other arguments.
+
+ As `getopt_long' works, it permutes the elements of ARGV so that,
+ when it is done, all the options precede everything else. Thus
+ all application programs are extended to handle flexible argument order.
+
+ Using `getopt' or setting the environment variable POSIXLY_CORRECT
+ disables permutation.
+ Then the application's behavior is completely standard.
+
+ GNU application programs can use a third alternative mode in which
+ they can distinguish the relative order of options and other arguments. */
+
+#include "getopt_int.h"
+
+/* For communication from `getopt' to the caller.
+ When `getopt' finds an option that takes an argument,
+ the argument value is returned here.
+ Also, when `ordering' is RETURN_IN_ORDER,
+ each non-option ARGV-element is returned here. */
+
+char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+ This is used for communication to and from the caller
+ and for communication between successive calls to `getopt'.
+
+ On entry to `getopt', zero means this is the first call; initialize.
+
+ When `getopt' returns -1, this is the index of the first of the
+ non-option elements that the caller should itself scan.
+
+ Otherwise, `optind' communicates from one call to the next
+ how much of ARGV has been scanned so far. */
+
+/* 1003.2 says this must be 1 before any call. */
+int optind = 1;
+
+/* Callers store zero here to inhibit the error message
+ for unrecognized options. */
+
+int opterr = 1;
+
+/* Set to an option character which was unrecognized.
+ This must be initialized on some systems to avoid linking in the
+ system's own getopt implementation. */
+
+int optopt = '?';
+
+/* Keep a global copy of all internal members of getopt_data. */
+
+static struct _getopt_data getopt_data;
+
+
+#if defined HAVE_DECL_GETENV && !HAVE_DECL_GETENV
+extern char *getenv ();
+#endif
+
+#ifdef _LIBC
+/* Stored original parameters.
+ XXX This is no good solution. We should rather copy the args so
+ that we can compare them later. But we must not use malloc(3). */
+extern int __libc_argc;
+extern char **__libc_argv;
+
+/* Bash 2.0 gives us an environment variable containing flags
+ indicating ARGV elements that should not be considered arguments. */
+
+# ifdef USE_NONOPTION_FLAGS
+/* Defined in getopt_init.c */
+extern char *__getopt_nonoption_flags;
+# endif
+
+# ifdef USE_NONOPTION_FLAGS
+# define SWAP_FLAGS(ch1, ch2) \
+ if (d->__nonoption_flags_len > 0) \
+ { \
+ char __tmp = __getopt_nonoption_flags[ch1]; \
+ __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \
+ __getopt_nonoption_flags[ch2] = __tmp; \
+ }
+# else
+# define SWAP_FLAGS(ch1, ch2)
+# endif
+#else /* !_LIBC */
+# define SWAP_FLAGS(ch1, ch2)
+#endif /* _LIBC */
+
+/* Exchange two adjacent subsequences of ARGV.
+ One subsequence is elements [first_nonopt,last_nonopt)
+ which contains all the non-options that have been skipped so far.
+ The other is elements [last_nonopt,optind), which contains all
+ the options processed since those non-options were skipped.
+
+ `first_nonopt' and `last_nonopt' are relocated so that they describe
+ the new indices of the non-options in ARGV after they are moved. */
+
+static void
+exchange (char **argv, struct _getopt_data *d)
+{
+ int bottom = d->__first_nonopt;
+ int middle = d->__last_nonopt;
+ int top = d->optind;
+ char *tem;
+
+ /* Exchange the shorter segment with the far end of the longer segment.
+ That puts the shorter segment into the right place.
+ It leaves the longer segment in the right place overall,
+ but it consists of two parts that need to be swapped next. */
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+ /* First make sure the handling of the `__getopt_nonoption_flags'
+ string can work normally. Our top argument must be in the range
+ of the string. */
+ if (d->__nonoption_flags_len > 0 && top >= d->__nonoption_flags_max_len)
+ {
+ /* We must extend the array. The user plays games with us and
+ presents new arguments. */
+ char *new_str = malloc (top + 1);
+ if (new_str == NULL)
+ d->__nonoption_flags_len = d->__nonoption_flags_max_len = 0;
+ else
+ {
+ memset (__mempcpy (new_str, __getopt_nonoption_flags,
+ d->__nonoption_flags_max_len),
+ '\0', top + 1 - d->__nonoption_flags_max_len);
+ d->__nonoption_flags_max_len = top + 1;
+ __getopt_nonoption_flags = new_str;
+ }
+ }
+#endif
+
+ while (top > middle && middle > bottom)
+ {
+ if (top - middle > middle - bottom)
+ {
+ /* Bottom segment is the short one. */
+ int len = middle - bottom;
+ register int i;
+
+ /* Swap it with the top part of the top segment. */
+ for (i = 0; i < len; i++)
+ {
+ tem = argv[bottom + i];
+ argv[bottom + i] = argv[top - (middle - bottom) + i];
+ argv[top - (middle - bottom) + i] = tem;
+ SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
+ }
+ /* Exclude the moved bottom segment from further swapping. */
+ top -= len;
+ }
+ else
+ {
+ /* Top segment is the short one. */
+ int len = top - middle;
+ register int i;
+
+ /* Swap it with the bottom part of the bottom segment. */
+ for (i = 0; i < len; i++)
+ {
+ tem = argv[bottom + i];
+ argv[bottom + i] = argv[middle + i];
+ argv[middle + i] = tem;
+ SWAP_FLAGS (bottom + i, middle + i);
+ }
+ /* Exclude the moved top segment from further swapping. */
+ bottom += len;
+ }
+ }
+
+ /* Update records for the slots the non-options now occupy. */
+
+ d->__first_nonopt += (d->optind - d->__last_nonopt);
+ d->__last_nonopt = d->optind;
+}
+
+/* Initialize the internal data when the first call is made. */
+
+static const char *
+_getopt_initialize (int argc, char **argv, const char *optstring,
+ int posixly_correct, struct _getopt_data *d)
+{
+ /* Start processing options with ARGV-element 1 (since ARGV-element 0
+ is the program name); the sequence of previously skipped
+ non-option ARGV-elements is empty. */
+
+ d->__first_nonopt = d->__last_nonopt = d->optind;
+
+ d->__nextchar = NULL;
+
+ d->__posixly_correct = posixly_correct || !!getenv ("POSIXLY_CORRECT");
+
+ /* Determine how to handle the ordering of options and nonoptions. */
+
+ if (optstring[0] == '-')
+ {
+ d->__ordering = RETURN_IN_ORDER;
+ ++optstring;
+ }
+ else if (optstring[0] == '+')
+ {
+ d->__ordering = REQUIRE_ORDER;
+ ++optstring;
+ }
+ else if (d->__posixly_correct)
+ d->__ordering = REQUIRE_ORDER;
+ else
+ d->__ordering = PERMUTE;
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+ if (!d->__posixly_correct
+ && argc == __libc_argc && argv == __libc_argv)
+ {
+ if (d->__nonoption_flags_max_len == 0)
+ {
+ if (__getopt_nonoption_flags == NULL
+ || __getopt_nonoption_flags[0] == '\0')
+ d->__nonoption_flags_max_len = -1;
+ else
+ {
+ const char *orig_str = __getopt_nonoption_flags;
+ int len = d->__nonoption_flags_max_len = strlen (orig_str);
+ if (d->__nonoption_flags_max_len < argc)
+ d->__nonoption_flags_max_len = argc;
+ __getopt_nonoption_flags =
+ (char *) malloc (d->__nonoption_flags_max_len);
+ if (__getopt_nonoption_flags == NULL)
+ d->__nonoption_flags_max_len = -1;
+ else
+ memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
+ '\0', d->__nonoption_flags_max_len - len);
+ }
+ }
+ d->__nonoption_flags_len = d->__nonoption_flags_max_len;
+ }
+ else
+ d->__nonoption_flags_len = 0;
+#endif
+
+ return optstring;
+}
+
+/* Scan elements of ARGV (whose length is ARGC) for option characters
+ given in OPTSTRING.
+
+ If an element of ARGV starts with '-', and is not exactly "-" or "--",
+ then it is an option element. The characters of this element
+ (aside from the initial '-') are option characters. If `getopt'
+ is called repeatedly, it returns successively each of the option characters
+ from each of the option elements.
+
+ If `getopt' finds another option character, it returns that character,
+ updating `optind' and `nextchar' so that the next call to `getopt' can
+ resume the scan with the following option character or ARGV-element.
+
+ If there are no more option characters, `getopt' returns -1.
+ Then `optind' is the index in ARGV of the first ARGV-element
+ that is not an option. (The ARGV-elements have been permuted
+ so that those that are not options now come last.)
+
+ OPTSTRING is a string containing the legitimate option characters.
+ If an option character is seen that is not listed in OPTSTRING,
+ return '?' after printing an error message. If you set `opterr' to
+ zero, the error message is suppressed but we still return '?'.
+
+ If a char in OPTSTRING is followed by a colon, that means it wants an arg,
+ so the following text in the same ARGV-element, or the text of the following
+ ARGV-element, is returned in `optarg'. Two colons mean an option that
+ wants an optional arg; if there is text in the current ARGV-element,
+ it is returned in `optarg', otherwise `optarg' is set to zero.
+
+ If OPTSTRING starts with `-' or `+', it requests different methods of
+ handling the non-option ARGV-elements.
+ See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
+
+ Long-named options begin with `--' instead of `-'.
+ Their names may be abbreviated as long as the abbreviation is unique
+ or is an exact match for some defined option. If they have an
+ argument, it follows the option name in the same ARGV-element, separated
+ from the option name by a `=', or else the in next ARGV-element.
+ When `getopt' finds a long-named option, it returns 0 if that option's
+ `flag' field is nonzero, the value of the option's `val' field
+ if the `flag' field is zero.
+
+ LONGOPTS is a vector of `struct option' terminated by an
+ element containing a name which is zero.
+
+ LONGIND returns the index in LONGOPT of the long-named option found.
+ It is only valid when a long-named option has been found by the most
+ recent call.
+
+ If LONG_ONLY is nonzero, '-' as well as '--' can introduce
+ long-named options.
+
+ If POSIXLY_CORRECT is nonzero, behave as if the POSIXLY_CORRECT
+ environment variable were set. */
+
+int
+_getopt_internal_r (int argc, char **argv, const char *optstring,
+ const struct option *longopts, int *longind,
+ int long_only, int posixly_correct, struct _getopt_data *d)
+{
+ int print_errors = d->opterr;
+ if (optstring[0] == ':')
+ print_errors = 0;
+
+ if (argc < 1)
+ return -1;
+
+ d->optarg = NULL;
+
+ if (d->optind == 0 || !d->__initialized)
+ {
+ if (d->optind == 0)
+ d->optind = 1; /* Don't scan ARGV[0], the program name. */
+ optstring = _getopt_initialize (argc, argv, optstring,
+ posixly_correct, d);
+ d->__initialized = 1;
+ }
+
+ /* Test whether ARGV[optind] points to a non-option argument.
+ Either it does not have option syntax, or there is an environment flag
+ from the shell indicating it is not an option. The later information
+ is only used when the used in the GNU libc. */
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0' \
+ || (d->optind < d->__nonoption_flags_len \
+ && __getopt_nonoption_flags[d->optind] == '1'))
+#else
+# define NONOPTION_P (argv[d->optind][0] != '-' || argv[d->optind][1] == '\0')
+#endif
+
+ if (d->__nextchar == NULL || *d->__nextchar == '\0')
+ {
+ /* Advance to the next ARGV-element. */
+
+ /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
+ moved back by the user (who may also have changed the arguments). */
+ if (d->__last_nonopt > d->optind)
+ d->__last_nonopt = d->optind;
+ if (d->__first_nonopt > d->optind)
+ d->__first_nonopt = d->optind;
+
+ if (d->__ordering == PERMUTE)
+ {
+ /* If we have just processed some options following some non-options,
+ exchange them so that the options come first. */
+
+ if (d->__first_nonopt != d->__last_nonopt
+ && d->__last_nonopt != d->optind)
+ exchange ((char **) argv, d);
+ else if (d->__last_nonopt != d->optind)
+ d->__first_nonopt = d->optind;
+
+ /* Skip any additional non-options
+ and extend the range of non-options previously skipped. */
+
+ while (d->optind < argc && NONOPTION_P)
+ d->optind++;
+ d->__last_nonopt = d->optind;
+ }
+
+ /* The special ARGV-element `--' means premature end of options.
+ Skip it like a null option,
+ then exchange with previous non-options as if it were an option,
+ then skip everything else like a non-option. */
+
+ if (d->optind != argc && !strcmp (argv[d->optind], "--"))
+ {
+ d->optind++;
+
+ if (d->__first_nonopt != d->__last_nonopt
+ && d->__last_nonopt != d->optind)
+ exchange ((char **) argv, d);
+ else if (d->__first_nonopt == d->__last_nonopt)
+ d->__first_nonopt = d->optind;
+ d->__last_nonopt = argc;
+
+ d->optind = argc;
+ }
+
+ /* If we have done all the ARGV-elements, stop the scan
+ and back over any non-options that we skipped and permuted. */
+
+ if (d->optind == argc)
+ {
+ /* Set the next-arg-index to point at the non-options
+ that we previously skipped, so the caller will digest them. */
+ if (d->__first_nonopt != d->__last_nonopt)
+ d->optind = d->__first_nonopt;
+ return -1;
+ }
+
+ /* If we have come to a non-option and did not permute it,
+ either stop the scan or describe it to the caller and pass it by. */
+
+ if (NONOPTION_P)
+ {
+ if (d->__ordering == REQUIRE_ORDER)
+ return -1;
+ d->optarg = argv[d->optind++];
+ return 1;
+ }
+
+ /* We have found another option-ARGV-element.
+ Skip the initial punctuation. */
+
+ d->__nextchar = (argv[d->optind] + 1
+ + (longopts != NULL && argv[d->optind][1] == '-'));
+ }
+
+ /* Decode the current option-ARGV-element. */
+
+ /* Check whether the ARGV-element is a long option.
+
+ If long_only and the ARGV-element has the form "-f", where f is
+ a valid short option, don't consider it an abbreviated form of
+ a long option that starts with f. Otherwise there would be no
+ way to give the -f short option.
+
+ On the other hand, if there's a long option "fubar" and
+ the ARGV-element is "-fu", do consider that an abbreviation of
+ the long option, just like "--fu", and not "-f" with arg "u".
+
+ This distinction seems to be the most useful approach. */
+
+ if (longopts != NULL
+ && (argv[d->optind][1] == '-'
+ || (long_only && (argv[d->optind][2]
+ || !strchr (optstring, argv[d->optind][1])))))
+ {
+ char *nameend;
+ const struct option *p;
+ const struct option *pfound = NULL;
+ int exact = 0;
+ int ambig = 0;
+ int indfound = -1;
+ int option_index;
+
+ for (nameend = d->__nextchar; *nameend && *nameend != '='; nameend++)
+ /* Do nothing. */ ;
+
+ /* Test all long options for either exact match
+ or abbreviated matches. */
+ for (p = longopts, option_index = 0; p->name; p++, option_index++)
+ if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar))
+ {
+ if ((unsigned int) (nameend - d->__nextchar)
+ == (unsigned int) strlen (p->name))
+ {
+ /* Exact match found. */
+ pfound = p;
+ indfound = option_index;
+ exact = 1;
+ break;
+ }
+ else if (pfound == NULL)
+ {
+ /* First nonexact match found. */
+ pfound = p;
+ indfound = option_index;
+ }
+ else if (long_only
+ || pfound->has_arg != p->has_arg
+ || pfound->flag != p->flag
+ || pfound->val != p->val)
+ /* Second or later nonexact match found. */
+ ambig = 1;
+ }
+
+ if (ambig && !exact)
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+
+ if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
+ argv[0], argv[d->optind]) >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#else
+ fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
+ argv[0], argv[d->optind]);
+#endif
+ }
+ d->__nextchar += strlen (d->__nextchar);
+ d->optind++;
+ d->optopt = 0;
+ return '?';
+ }
+
+ if (pfound != NULL)
+ {
+ option_index = indfound;
+ d->optind++;
+ if (*nameend)
+ {
+ /* Don't test has_arg with >, because some C compilers don't
+ allow it to be used on enums. */
+ if (pfound->has_arg)
+ d->optarg = nameend + 1;
+ else
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+ int n;
+#endif
+
+ if (argv[d->optind - 1][1] == '-')
+ {
+ /* --option */
+#if defined _LIBC && defined USE_IN_LIBIO
+ n = __asprintf (&buf, _("\
+%s: option `--%s' doesn't allow an argument\n"),
+ argv[0], pfound->name);
+#else
+ fprintf (stderr, _("\
+%s: option `--%s' doesn't allow an argument\n"),
+ argv[0], pfound->name);
+#endif
+ }
+ else
+ {
+ /* +option or -option */
+#if defined _LIBC && defined USE_IN_LIBIO
+ n = __asprintf (&buf, _("\
+%s: option `%c%s' doesn't allow an argument\n"),
+ argv[0], argv[d->optind - 1][0],
+ pfound->name);
+#else
+ fprintf (stderr, _("\
+%s: option `%c%s' doesn't allow an argument\n"),
+ argv[0], argv[d->optind - 1][0],
+ pfound->name);
+#endif
+ }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+ if (n >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2
+ |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#endif
+ }
+
+ d->__nextchar += strlen (d->__nextchar);
+
+ d->optopt = pfound->val;
+ return '?';
+ }
+ }
+ else if (pfound->has_arg == 1)
+ {
+ if (d->optind < argc)
+ d->optarg = argv[d->optind++];
+ else
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+
+ if (__asprintf (&buf, _("\
+%s: option `%s' requires an argument\n"),
+ argv[0], argv[d->optind - 1]) >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2
+ |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#else
+ fprintf (stderr,
+ _("%s: option `%s' requires an argument\n"),
+ argv[0], argv[d->optind - 1]);
+#endif
+ }
+ d->__nextchar += strlen (d->__nextchar);
+ d->optopt = pfound->val;
+ return optstring[0] == ':' ? ':' : '?';
+ }
+ }
+ d->__nextchar += strlen (d->__nextchar);
+ if (longind != NULL)
+ *longind = option_index;
+ if (pfound->flag)
+ {
+ *(pfound->flag) = pfound->val;
+ return 0;
+ }
+ return pfound->val;
+ }
+
+ /* Can't find it as a long option. If this is not getopt_long_only,
+ or the option starts with '--' or is not a valid short
+ option, then it's an error.
+ Otherwise interpret it as a short option. */
+ if (!long_only || argv[d->optind][1] == '-'
+ || strchr (optstring, *d->__nextchar) == NULL)
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+ int n;
+#endif
+
+ if (argv[d->optind][1] == '-')
+ {
+ /* --option */
+#if defined _LIBC && defined USE_IN_LIBIO
+ n = __asprintf (&buf, _("%s: unrecognized option `--%s'\n"),
+ argv[0], d->__nextchar);
+#else
+ fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
+ argv[0], d->__nextchar);
+#endif
+ }
+ else
+ {
+ /* +option or -option */
+#if defined _LIBC && defined USE_IN_LIBIO
+ n = __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"),
+ argv[0], argv[d->optind][0], d->__nextchar);
+#else
+ fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
+ argv[0], argv[d->optind][0], d->__nextchar);
+#endif
+ }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+ if (n >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#endif
+ }
+ d->__nextchar = (char *) "";
+ d->optind++;
+ d->optopt = 0;
+ return '?';
+ }
+ }
+
+ /* Look at and handle the next short option-character. */
+
+ {
+ char c = *d->__nextchar++;
+ char *temp = strchr (optstring, c);
+
+ /* Increment `optind' when we start to process its last character. */
+ if (*d->__nextchar == '\0')
+ ++d->optind;
+
+ if (temp == NULL || c == ':')
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+ int n;
+#endif
+
+ if (d->__posixly_correct)
+ {
+ /* 1003.2 specifies the format of this message. */
+#if defined _LIBC && defined USE_IN_LIBIO
+ n = __asprintf (&buf, _("%s: illegal option -- %c\n"),
+ argv[0], c);
+#else
+ fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
+#endif
+ }
+ else
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ n = __asprintf (&buf, _("%s: invalid option -- %c\n"),
+ argv[0], c);
+#else
+ fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c);
+#endif
+ }
+
+#if defined _LIBC && defined USE_IN_LIBIO
+ if (n >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#endif
+ }
+ d->optopt = c;
+ return '?';
+ }
+ /* Convenience. Treat POSIX -W foo same as long option --foo */
+ if (temp[0] == 'W' && temp[1] == ';')
+ {
+ char *nameend;
+ const struct option *p;
+ const struct option *pfound = NULL;
+ int exact = 0;
+ int ambig = 0;
+ int indfound = 0;
+ int option_index;
+
+ /* This is an option that requires an argument. */
+ if (*d->__nextchar != '\0')
+ {
+ d->optarg = d->__nextchar;
+ /* If we end this ARGV-element by taking the rest as an arg,
+ we must advance to the next element now. */
+ d->optind++;
+ }
+ else if (d->optind == argc)
+ {
+ if (print_errors)
+ {
+ /* 1003.2 specifies the format of this message. */
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+
+ if (__asprintf (&buf,
+ _("%s: option requires an argument -- %c\n"),
+ argv[0], c) >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#else
+ fprintf (stderr, _("%s: option requires an argument -- %c\n"),
+ argv[0], c);
+#endif
+ }
+ d->optopt = c;
+ if (optstring[0] == ':')
+ c = ':';
+ else
+ c = '?';
+ return c;
+ }
+ else
+ /* We already incremented `d->optind' once;
+ increment it again when taking next ARGV-elt as argument. */
+ d->optarg = argv[d->optind++];
+
+ /* optarg is now the argument, see if it's in the
+ table of longopts. */
+
+ for (d->__nextchar = nameend = d->optarg; *nameend && *nameend != '=';
+ nameend++)
+ /* Do nothing. */ ;
+
+ /* Test all long options for either exact match
+ or abbreviated matches. */
+ for (p = longopts, option_index = 0; p->name; p++, option_index++)
+ if (!strncmp (p->name, d->__nextchar, nameend - d->__nextchar))
+ {
+ if ((unsigned int) (nameend - d->__nextchar) == strlen (p->name))
+ {
+ /* Exact match found. */
+ pfound = p;
+ indfound = option_index;
+ exact = 1;
+ break;
+ }
+ else if (pfound == NULL)
+ {
+ /* First nonexact match found. */
+ pfound = p;
+ indfound = option_index;
+ }
+ else
+ /* Second or later nonexact match found. */
+ ambig = 1;
+ }
+ if (ambig && !exact)
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+
+ if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"),
+ argv[0], argv[d->optind]) >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#else
+ fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
+ argv[0], argv[d->optind]);
+#endif
+ }
+ d->__nextchar += strlen (d->__nextchar);
+ d->optind++;
+ return '?';
+ }
+ if (pfound != NULL)
+ {
+ option_index = indfound;
+ if (*nameend)
+ {
+ /* Don't test has_arg with >, because some C compilers don't
+ allow it to be used on enums. */
+ if (pfound->has_arg)
+ d->optarg = nameend + 1;
+ else
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+
+ if (__asprintf (&buf, _("\
+%s: option `-W %s' doesn't allow an argument\n"),
+ argv[0], pfound->name) >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2
+ |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#else
+ fprintf (stderr, _("\
+%s: option `-W %s' doesn't allow an argument\n"),
+ argv[0], pfound->name);
+#endif
+ }
+
+ d->__nextchar += strlen (d->__nextchar);
+ return '?';
+ }
+ }
+ else if (pfound->has_arg == 1)
+ {
+ if (d->optind < argc)
+ d->optarg = argv[d->optind++];
+ else
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+
+ if (__asprintf (&buf, _("\
+%s: option `%s' requires an argument\n"),
+ argv[0], argv[d->optind - 1]) >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2
+ |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#else
+ fprintf (stderr,
+ _("%s: option `%s' requires an argument\n"),
+ argv[0], argv[d->optind - 1]);
+#endif
+ }
+ d->__nextchar += strlen (d->__nextchar);
+ return optstring[0] == ':' ? ':' : '?';
+ }
+ }
+ d->__nextchar += strlen (d->__nextchar);
+ if (longind != NULL)
+ *longind = option_index;
+ if (pfound->flag)
+ {
+ *(pfound->flag) = pfound->val;
+ return 0;
+ }
+ return pfound->val;
+ }
+ d->__nextchar = NULL;
+ return 'W'; /* Let the application handle it. */
+ }
+ if (temp[1] == ':')
+ {
+ if (temp[2] == ':')
+ {
+ /* This is an option that accepts an argument optionally. */
+ if (*d->__nextchar != '\0')
+ {
+ d->optarg = d->__nextchar;
+ d->optind++;
+ }
+ else
+ d->optarg = NULL;
+ d->__nextchar = NULL;
+ }
+ else
+ {
+ /* This is an option that requires an argument. */
+ if (*d->__nextchar != '\0')
+ {
+ d->optarg = d->__nextchar;
+ /* If we end this ARGV-element by taking the rest as an arg,
+ we must advance to the next element now. */
+ d->optind++;
+ }
+ else if (d->optind == argc)
+ {
+ if (print_errors)
+ {
+ /* 1003.2 specifies the format of this message. */
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+
+ if (__asprintf (&buf, _("\
+%s: option requires an argument -- %c\n"),
+ argv[0], c) >= 0)
+ {
+ _IO_flockfile (stderr);
+
+ int old_flags2 = ((_IO_FILE *) stderr)->_flags2;
+ ((_IO_FILE *) stderr)->_flags2 |= _IO_FLAGS2_NOTCANCEL;
+
+ __fxprintf (NULL, "%s", buf);
+
+ ((_IO_FILE *) stderr)->_flags2 = old_flags2;
+ _IO_funlockfile (stderr);
+
+ free (buf);
+ }
+#else
+ fprintf (stderr,
+ _("%s: option requires an argument -- %c\n"),
+ argv[0], c);
+#endif
+ }
+ d->optopt = c;
+ if (optstring[0] == ':')
+ c = ':';
+ else
+ c = '?';
+ }
+ else
+ /* We already incremented `optind' once;
+ increment it again when taking next ARGV-elt as argument. */
+ d->optarg = argv[d->optind++];
+ d->__nextchar = NULL;
+ }
+ }
+ return c;
+ }
+}
+
+int
+_getopt_internal (int argc, char **argv, const char *optstring,
+ const struct option *longopts, int *longind,
+ int long_only, int posixly_correct)
+{
+ int result;
+
+ getopt_data.optind = optind;
+ getopt_data.opterr = opterr;
+
+ result = _getopt_internal_r (argc, argv, optstring, longopts, longind,
+ long_only, posixly_correct, &getopt_data);
+
+ optind = getopt_data.optind;
+ optarg = getopt_data.optarg;
+ optopt = getopt_data.optopt;
+
+ return result;
+}
+
+/* glibc gets a LSB-compliant getopt.
+ Standalone applications get a POSIX-compliant getopt. */
+#if _LIBC
+enum { POSIXLY_CORRECT = 0 };
+#else
+enum { POSIXLY_CORRECT = 1 };
+#endif
+
+int
+getopt (int argc, char *const *argv, const char *optstring)
+{
+ return _getopt_internal (argc, (char **) argv, optstring, NULL, NULL, 0,
+ POSIXLY_CORRECT);
+}
+
+
+#ifdef TEST
+
+/* Compile with -DTEST to make an executable for use in testing
+ the above definition of `getopt'. */
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ int digit_optind = 0;
+
+ while (1)
+ {
+ int this_option_optind = optind ? optind : 1;
+
+ c = getopt (argc, argv, "abc:d:0123456789");
+ if (c == -1)
+ break;
+
+ switch (c)
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ if (digit_optind != 0 && digit_optind != this_option_optind)
+ printf ("digits occur in two different argv-elements.\n");
+ digit_optind = this_option_optind;
+ printf ("option %c\n", c);
+ break;
+
+ case 'a':
+ printf ("option a\n");
+ break;
+
+ case 'b':
+ printf ("option b\n");
+ break;
+
+ case 'c':
+ printf ("option c with value `%s'\n", optarg);
+ break;
+
+ case '?':
+ break;
+
+ default:
+ printf ("?? getopt returned character code 0%o ??\n", c);
+ }
+ }
+
+ if (optind < argc)
+ {
+ printf ("non-option ARGV-elements: ");
+ while (optind < argc)
+ printf ("%s ", argv[optind++]);
+ printf ("\n");
+ }
+
+ exit (0);
+}
+
+#endif /* TEST */
diff --git a/lib/getopt1.c b/lib/getopt1.c
new file mode 100644
index 0000000..cc0746e
--- /dev/null
+++ b/lib/getopt1.c
@@ -0,0 +1,171 @@
+/* getopt_long and getopt_long_only entry points for GNU getopt.
+ Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98,2004,2006
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifdef _LIBC
+# include <getopt.h>
+#else
+# include <config.h>
+# include "getopt.h"
+#endif
+#include "getopt_int.h"
+
+#include <stdio.h>
+
+/* This needs to come after some library #include
+ to get __GNU_LIBRARY__ defined. */
+#ifdef __GNU_LIBRARY__
+#include <stdlib.h>
+#endif
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+int
+getopt_long (int argc, char *__getopt_argv_const *argv, const char *options,
+ const struct option *long_options, int *opt_index)
+{
+ return _getopt_internal (argc, (char **) argv, options, long_options,
+ opt_index, 0, 0);
+}
+
+int
+_getopt_long_r (int argc, char **argv, const char *options,
+ const struct option *long_options, int *opt_index,
+ struct _getopt_data *d)
+{
+ return _getopt_internal_r (argc, argv, options, long_options, opt_index,
+ 0, 0, d);
+}
+
+/* Like getopt_long, but '-' as well as '--' can indicate a long option.
+ If an option that starts with '-' (not '--') doesn't match a long option,
+ but does match a short option, it is parsed as a short option
+ instead. */
+
+int
+getopt_long_only (int argc, char *__getopt_argv_const *argv,
+ const char *options,
+ const struct option *long_options, int *opt_index)
+{
+ return _getopt_internal (argc, (char **) argv, options, long_options,
+ opt_index, 1, 0);
+}
+
+int
+_getopt_long_only_r (int argc, char **argv, const char *options,
+ const struct option *long_options, int *opt_index,
+ struct _getopt_data *d)
+{
+ return _getopt_internal_r (argc, argv, options, long_options, opt_index,
+ 1, 0, d);
+}
+
+
+#ifdef TEST
+
+#include <stdio.h>
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ int digit_optind = 0;
+
+ while (1)
+ {
+ int this_option_optind = optind ? optind : 1;
+ int option_index = 0;
+ static struct option long_options[] =
+ {
+ {"add", 1, 0, 0},
+ {"append", 0, 0, 0},
+ {"delete", 1, 0, 0},
+ {"verbose", 0, 0, 0},
+ {"create", 0, 0, 0},
+ {"file", 1, 0, 0},
+ {0, 0, 0, 0}
+ };
+
+ c = getopt_long (argc, argv, "abc:d:0123456789",
+ long_options, &option_index);
+ if (c == -1)
+ break;
+
+ switch (c)
+ {
+ case 0:
+ printf ("option %s", long_options[option_index].name);
+ if (optarg)
+ printf (" with arg %s", optarg);
+ printf ("\n");
+ break;
+
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ if (digit_optind != 0 && digit_optind != this_option_optind)
+ printf ("digits occur in two different argv-elements.\n");
+ digit_optind = this_option_optind;
+ printf ("option %c\n", c);
+ break;
+
+ case 'a':
+ printf ("option a\n");
+ break;
+
+ case 'b':
+ printf ("option b\n");
+ break;
+
+ case 'c':
+ printf ("option c with value `%s'\n", optarg);
+ break;
+
+ case 'd':
+ printf ("option d with value `%s'\n", optarg);
+ break;
+
+ case '?':
+ break;
+
+ default:
+ printf ("?? getopt returned character code 0%o ??\n", c);
+ }
+ }
+
+ if (optind < argc)
+ {
+ printf ("non-option ARGV-elements: ");
+ while (optind < argc)
+ printf ("%s ", argv[optind++]);
+ printf ("\n");
+ }
+
+ exit (0);
+}
+
+#endif /* TEST */
diff --git a/lib/getopt_.h b/lib/getopt_.h
new file mode 100644
index 0000000..615ef9a
--- /dev/null
+++ b/lib/getopt_.h
@@ -0,0 +1,226 @@
+/* Declarations for getopt.
+ Copyright (C) 1989-1994,1996-1999,2001,2003,2004,2005,2006,2007
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _GETOPT_H
+
+#ifndef __need_getopt
+# define _GETOPT_H 1
+#endif
+
+/* Standalone applications should #define __GETOPT_PREFIX to an
+ identifier that prefixes the external functions and variables
+ defined in this header. When this happens, include the
+ headers that might declare getopt so that they will not cause
+ confusion if included after this file. Then systematically rename
+ identifiers so that they do not collide with the system functions
+ and variables. Renaming avoids problems with some compilers and
+ linkers. */
+#if defined __GETOPT_PREFIX && !defined __need_getopt
+# include <stdlib.h>
+# include <stdio.h>
+# include <unistd.h>
+# undef __need_getopt
+# undef getopt
+# undef getopt_long
+# undef getopt_long_only
+# undef optarg
+# undef opterr
+# undef optind
+# undef optopt
+# define __GETOPT_CONCAT(x, y) x ## y
+# define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y)
+# define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y)
+# define getopt __GETOPT_ID (getopt)
+# define getopt_long __GETOPT_ID (getopt_long)
+# define getopt_long_only __GETOPT_ID (getopt_long_only)
+# define optarg __GETOPT_ID (optarg)
+# define opterr __GETOPT_ID (opterr)
+# define optind __GETOPT_ID (optind)
+# define optopt __GETOPT_ID (optopt)
+#endif
+
+/* Standalone applications get correct prototypes for getopt_long and
+ getopt_long_only; they declare "char **argv". libc uses prototypes
+ with "char *const *argv" that are incorrect because getopt_long and
+ getopt_long_only can permute argv; this is required for backward
+ compatibility (e.g., for LSB 2.0.1).
+
+ This used to be `#if defined __GETOPT_PREFIX && !defined __need_getopt',
+ but it caused redefinition warnings if both unistd.h and getopt.h were
+ included, since unistd.h includes getopt.h having previously defined
+ __need_getopt.
+
+ The only place where __getopt_argv_const is used is in definitions
+ of getopt_long and getopt_long_only below, but these are visible
+ only if __need_getopt is not defined, so it is quite safe to rewrite
+ the conditional as follows:
+*/
+#if !defined __need_getopt
+# if defined __GETOPT_PREFIX
+# define __getopt_argv_const /* empty */
+# else
+# define __getopt_argv_const const
+# endif
+#endif
+
+/* If __GNU_LIBRARY__ is not already defined, either we are being used
+ standalone, or this is the first header included in the source file.
+ If we are being used with glibc, we need to include <features.h>, but
+ that does not exist if we are standalone. So: if __GNU_LIBRARY__ is
+ not defined, include <ctype.h>, which will pull in <features.h> for us
+ if it's from glibc. (Why ctype.h? It's guaranteed to exist and it
+ doesn't flood the namespace with stuff the way some other headers do.) */
+#if !defined __GNU_LIBRARY__
+# include <ctype.h>
+#endif
+
+#ifndef __THROW
+# ifndef __GNUC_PREREQ
+# define __GNUC_PREREQ(maj, min) (0)
+# endif
+# if defined __cplusplus && __GNUC_PREREQ (2,8)
+# define __THROW throw ()
+# else
+# define __THROW
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* For communication from `getopt' to the caller.
+ When `getopt' finds an option that takes an argument,
+ the argument value is returned here.
+ Also, when `ordering' is RETURN_IN_ORDER,
+ each non-option ARGV-element is returned here. */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+ This is used for communication to and from the caller
+ and for communication between successive calls to `getopt'.
+
+ On entry to `getopt', zero means this is the first call; initialize.
+
+ When `getopt' returns -1, this is the index of the first of the
+ non-option elements that the caller should itself scan.
+
+ Otherwise, `optind' communicates from one call to the next
+ how much of ARGV has been scanned so far. */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message `getopt' prints
+ for unrecognized options. */
+
+extern int opterr;
+
+/* Set to an option character which was unrecognized. */
+
+extern int optopt;
+
+#ifndef __need_getopt
+/* Describe the long-named options requested by the application.
+ The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+ of `struct option' terminated by an element containing a name which is
+ zero.
+
+ The field `has_arg' is:
+ no_argument (or 0) if the option does not take an argument,
+ required_argument (or 1) if the option requires an argument,
+ optional_argument (or 2) if the option takes an optional argument.
+
+ If the field `flag' is not NULL, it points to a variable that is set
+ to the value given in the field `val' when the option is found, but
+ left unchanged if the option is not found.
+
+ To have a long-named option do something other than set an `int' to
+ a compiled-in constant, such as set a value from `optarg', set the
+ option's `flag' field to zero and its `val' field to a nonzero
+ value (the equivalent single-letter option character, if there is
+ one). For long options that have a zero `flag' field, `getopt'
+ returns the contents of the `val' field. */
+
+struct option
+{
+ const char *name;
+ /* has_arg can't be an enum because some compilers complain about
+ type mismatches in all the code that assumes it is an int. */
+ int has_arg;
+ int *flag;
+ int val;
+};
+
+/* Names for the values of the `has_arg' field of `struct option'. */
+
+# define no_argument 0
+# define required_argument 1
+# define optional_argument 2
+#endif /* need getopt */
+
+
+/* Get definitions and prototypes for functions to process the
+ arguments in ARGV (ARGC of them, minus the program name) for
+ options given in OPTS.
+
+ Return the option character from OPTS just read. Return -1 when
+ there are no more options. For unrecognized options, or options
+ missing arguments, `optopt' is set to the option letter, and '?' is
+ returned.
+
+ The OPTS string is a list of characters which are recognized option
+ letters, optionally followed by colons, specifying that that letter
+ takes an argument, to be placed in `optarg'.
+
+ If a letter in OPTS is followed by two colons, its argument is
+ optional. This behavior is specific to the GNU `getopt'.
+
+ The argument `--' causes premature termination of argument
+ scanning, explicitly telling `getopt' that there are no more
+ options.
+
+ If OPTS begins with `-', then non-option arguments are treated as
+ arguments to the option '\1'. This behavior is specific to the GNU
+ `getopt'. If OPTS begins with `+', or POSIXLY_CORRECT is set in
+ the environment, then do not permute arguments. */
+
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
+ __THROW;
+
+#ifndef __need_getopt
+extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind)
+ __THROW;
+extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind)
+ __THROW;
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Make sure we later can get all the definitions and declarations. */
+#undef __need_getopt
+
+#endif /* getopt.h */
diff --git a/lib/getopt_int.h b/lib/getopt_int.h
new file mode 100644
index 0000000..401579f
--- /dev/null
+++ b/lib/getopt_int.h
@@ -0,0 +1,131 @@
+/* Internal declarations for getopt.
+ Copyright (C) 1989-1994,1996-1999,2001,2003,2004
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _GETOPT_INT_H
+#define _GETOPT_INT_H 1
+
+extern int _getopt_internal (int ___argc, char **___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind,
+ int __long_only, int __posixly_correct);
+
+
+/* Reentrant versions which can handle parsing multiple argument
+ vectors at the same time. */
+
+/* Data type for reentrant functions. */
+struct _getopt_data
+{
+ /* These have exactly the same meaning as the corresponding global
+ variables, except that they are used for the reentrant
+ versions of getopt. */
+ int optind;
+ int opterr;
+ int optopt;
+ char *optarg;
+
+ /* Internal members. */
+
+ /* True if the internal members have been initialized. */
+ int __initialized;
+
+ /* The next char to be scanned in the option-element
+ in which the last option character we returned was found.
+ This allows us to pick up the scan where we left off.
+
+ If this is zero, or a null string, it means resume the scan
+ by advancing to the next ARGV-element. */
+ char *__nextchar;
+
+ /* Describe how to deal with options that follow non-option ARGV-elements.
+
+ If the caller did not specify anything,
+ the default is REQUIRE_ORDER if the environment variable
+ POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+ REQUIRE_ORDER means don't recognize them as options;
+ stop option processing when the first non-option is seen.
+ This is what Unix does.
+ This mode of operation is selected by either setting the environment
+ variable POSIXLY_CORRECT, or using `+' as the first character
+ of the list of option characters, or by calling getopt.
+
+ PERMUTE is the default. We permute the contents of ARGV as we
+ scan, so that eventually all the non-options are at the end.
+ This allows options to be given in any order, even with programs
+ that were not written to expect this.
+
+ RETURN_IN_ORDER is an option available to programs that were
+ written to expect options and other ARGV-elements in any order
+ and that care about the ordering of the two. We describe each
+ non-option ARGV-element as if it were the argument of an option
+ with character code 1. Using `-' as the first character of the
+ list of option characters selects this mode of operation.
+
+ The special argument `--' forces an end of option-scanning regardless
+ of the value of `ordering'. In the case of RETURN_IN_ORDER, only
+ `--' can cause `getopt' to return -1 with `optind' != ARGC. */
+
+ enum
+ {
+ REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+ } __ordering;
+
+ /* If the POSIXLY_CORRECT environment variable is set
+ or getopt was called. */
+ int __posixly_correct;
+
+
+ /* Handle permutation of arguments. */
+
+ /* Describe the part of ARGV that contains non-options that have
+ been skipped. `first_nonopt' is the index in ARGV of the first
+ of them; `last_nonopt' is the index after the last of them. */
+
+ int __first_nonopt;
+ int __last_nonopt;
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+ int __nonoption_flags_max_len;
+ int __nonoption_flags_len;
+# endif
+};
+
+/* The initializer is necessary to set OPTIND and OPTERR to their
+ default values and to clear the initialization flag. */
+#define _GETOPT_DATA_INITIALIZER { 1, 1 }
+
+extern int _getopt_internal_r (int ___argc, char **___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind,
+ int __long_only, int __posixly_correct,
+ struct _getopt_data *__data);
+
+extern int _getopt_long_r (int ___argc, char **___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind,
+ struct _getopt_data *__data);
+
+extern int _getopt_long_only_r (int ___argc, char **___argv,
+ const char *__shortopts,
+ const struct option *__longopts,
+ int *__longind,
+ struct _getopt_data *__data);
+
+#endif /* getopt_int.h */
diff --git a/lib/getpagesize.h b/lib/getpagesize.h
new file mode 100644
index 0000000..8863336
--- /dev/null
+++ b/lib/getpagesize.h
@@ -0,0 +1,68 @@
+/* Emulate getpagesize on systems that lack it.
+ Copyright (C) 1999, 2000, 2004, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ USA. */
+
+#ifndef HAVE_GETPAGESIZE
+
+#include <unistd.h>
+
+#if !defined getpagesize && defined _SC_PAGESIZE
+# if ! (defined __VMS && __VMS_VER < 70000000)
+# define getpagesize() sysconf (_SC_PAGESIZE)
+# endif
+#endif
+
+#if !defined getpagesize && defined __VMS
+# ifdef __ALPHA
+# define getpagesize() 8192
+# else
+# define getpagesize() 512
+# endif
+#endif
+
+/* This is for BeOS. */
+#if !defined getpagesize && HAVE_OS_H
+# include <OS.h>
+# if defined B_PAGE_SIZE
+# define getpagesize() B_PAGE_SIZE
+# endif
+#endif
+
+/* This is for AmigaOS4.0. */
+#if !defined getpagesize && defined __amigaos4__
+# define getpagesize() 2048
+#endif
+
+#if !defined getpagesize && HAVE_SYS_PARAM_H
+# include <sys/param.h>
+# ifdef EXEC_PAGESIZE
+# define getpagesize() EXEC_PAGESIZE
+# else
+# ifdef NBPG
+# ifndef CLSIZE
+# define CLSIZE 1
+# endif
+# define getpagesize() (NBPG * CLSIZE)
+# else
+# ifdef NBPC
+# define getpagesize() NBPC
+# endif
+# endif
+# endif
+#endif
+
+#endif /* not HAVE_GETPAGESIZE */
diff --git a/lib/getpass.c b/lib/getpass.c
new file mode 100644
index 0000000..5b39b6d
--- /dev/null
+++ b/lib/getpass.c
@@ -0,0 +1,233 @@
+/* Copyright (C) 1992-2001, 2003, 2004, 2005, 2006 Free Software
+ Foundation, Inc.
+
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+#include "getpass.h"
+
+#include <stdio.h>
+
+#if !((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__)
+
+#include <stdbool.h>
+
+#if HAVE_DECL___FSETLOCKING && HAVE___FSETLOCKING
+# if HAVE_STDIO_EXT_H
+# include <stdio_ext.h>
+# endif
+#else
+# define __fsetlocking(stream, type) /* empty */
+#endif
+
+#if HAVE_TERMIOS_H
+# include <termios.h>
+#endif
+
+#include "getline.h"
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#else
+# if !HAVE_DECL_FFLUSH_UNLOCKED
+# undef fflush_unlocked
+# define fflush_unlocked(x) fflush (x)
+# endif
+# if !HAVE_DECL_FLOCKFILE
+# undef flockfile
+# define flockfile(x) ((void) 0)
+# endif
+# if !HAVE_DECL_FUNLOCKFILE
+# undef funlockfile
+# define funlockfile(x) ((void) 0)
+# endif
+# if !HAVE_DECL_FPUTS_UNLOCKED
+# undef fputs_unlocked
+# define fputs_unlocked(str,stream) fputs (str, stream)
+# endif
+# if !HAVE_DECL_PUTC_UNLOCKED
+# undef putc_unlocked
+# define putc_unlocked(c,stream) putc (c, stream)
+# endif
+#endif
+
+/* It is desirable to use this bit on systems that have it.
+ The only bit of terminal state we want to twiddle is echoing, which is
+ done in software; there is no need to change the state of the terminal
+ hardware. */
+
+#ifndef TCSASOFT
+# define TCSASOFT 0
+#endif
+
+static void
+call_fclose (void *arg)
+{
+ if (arg != NULL)
+ fclose (arg);
+}
+
+char *
+getpass (const char *prompt)
+{
+ FILE *tty;
+ FILE *in, *out;
+ struct termios s, t;
+ bool tty_changed = false;
+ static char *buf;
+ static size_t bufsize;
+ ssize_t nread;
+
+ /* Try to write to and read from the terminal if we can.
+ If we can't open the terminal, use stderr and stdin. */
+
+ tty = fopen ("/dev/tty", "w+");
+ if (tty == NULL)
+ {
+ in = stdin;
+ out = stderr;
+ }
+ else
+ {
+ /* We do the locking ourselves. */
+ __fsetlocking (tty, FSETLOCKING_BYCALLER);
+
+ out = in = tty;
+ }
+
+ flockfile (out);
+
+ /* Turn echoing off if it is on now. */
+#if HAVE_TCGETATTR
+ if (tcgetattr (fileno (in), &t) == 0)
+ {
+ /* Save the old one. */
+ s = t;
+ /* Tricky, tricky. */
+ t.c_lflag &= ~(ECHO | ISIG);
+ tty_changed = (tcsetattr (fileno (in), TCSAFLUSH | TCSASOFT, &t) == 0);
+ }
+#endif
+
+ /* Write the prompt. */
+ fputs_unlocked (prompt, out);
+ fflush_unlocked (out);
+
+ /* Read the password. */
+ nread = getline (&buf, &bufsize, in);
+
+ /* According to the C standard, input may not be followed by output
+ on the same stream without an intervening call to a file
+ positioning function. Suppose in == out; then without this fseek
+ call, on Solaris, HP-UX, AIX, OSF/1, the previous input gets
+ echoed, whereas on IRIX, the following newline is not output as
+ it should be. POSIX imposes similar restrictions if fileno (in)
+ == fileno (out). The POSIX restrictions are tricky and change
+ from POSIX version to POSIX version, so play it safe and invoke
+ fseek even if in != out. */
+ fseek (out, 0, SEEK_CUR);
+
+ if (buf != NULL)
+ {
+ if (nread < 0)
+ buf[0] = '\0';
+ else if (buf[nread - 1] == '\n')
+ {
+ /* Remove the newline. */
+ buf[nread - 1] = '\0';
+ if (tty_changed)
+ {
+ /* Write the newline that was not echoed. */
+ putc_unlocked ('\n', out);
+ }
+ }
+ }
+
+ /* Restore the original setting. */
+#if HAVE_TCSETATTR
+ if (tty_changed)
+ tcsetattr (fileno (in), TCSAFLUSH | TCSASOFT, &s);
+#endif
+
+ funlockfile (out);
+
+ call_fclose (tty);
+
+ return buf;
+}
+
+#else /* W32 native */
+
+/* Windows implementation by Martin Lambers <marlam@marlam.de>,
+ improved by Simon Josefsson. */
+
+/* For PASS_MAX. */
+#include <limits.h>
+/* For _getch(). */
+#include <conio.h>
+/* For strdup(). */
+#include <string.h>
+
+#ifndef PASS_MAX
+# define PASS_MAX 512
+#endif
+
+char *
+getpass (const char *prompt)
+{
+ char getpassbuf[PASS_MAX + 1];
+ size_t i = 0;
+ int c;
+
+ if (prompt)
+ {
+ fputs (prompt, stderr);
+ fflush (stderr);
+ }
+
+ for (;;)
+ {
+ c = _getch ();
+ if (c == '\r')
+ {
+ getpassbuf[i] = '\0';
+ break;
+ }
+ else if (i < PASS_MAX)
+ {
+ getpassbuf[i++] = c;
+ }
+
+ if (i >= PASS_MAX)
+ {
+ getpassbuf[i] = '\0';
+ break;
+ }
+ }
+
+ if (prompt)
+ {
+ fputs ("\r\n", stderr);
+ fflush (stderr);
+ }
+
+ return strdup (getpassbuf);
+}
+#endif
diff --git a/lib/getpass.h b/lib/getpass.h
new file mode 100644
index 0000000..bdff875
--- /dev/null
+++ b/lib/getpass.h
@@ -0,0 +1,31 @@
+/* getpass.h -- Read a password of arbitrary length from /dev/tty or stdin.
+ Copyright (C) 2004 Free Software Foundation, Inc.
+ Contributed by Simon Josefsson <jas@extundo.com>, 2004.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef GETPASS_H
+# define GETPASS_H
+
+/* Get getpass declaration, if available. */
+# include <unistd.h>
+
+# if defined HAVE_DECL_GETPASS && !HAVE_DECL_GETPASS
+/* Read a password of arbitrary length from /dev/tty or stdin. */
+char *getpass (const char *prompt);
+
+# endif
+
+#endif /* GETPASS_H */
diff --git a/lib/gettext.h b/lib/gettext.h
new file mode 100644
index 0000000..9d76ec9
--- /dev/null
+++ b/lib/gettext.h
@@ -0,0 +1,270 @@
+/* Convenience header for conditional use of GNU <libintl.h>.
+ Copyright (C) 1995-1998, 2000-2002, 2004-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _LIBGETTEXT_H
+#define _LIBGETTEXT_H 1
+
+/* NLS can be disabled through the configure --disable-nls option. */
+#if ENABLE_NLS
+
+/* Get declarations of GNU message catalog functions. */
+# include <libintl.h>
+
+/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by
+ the gettext() and ngettext() macros. This is an alternative to calling
+ textdomain(), and is useful for libraries. */
+# ifdef DEFAULT_TEXT_DOMAIN
+# undef gettext
+# define gettext(Msgid) \
+ dgettext (DEFAULT_TEXT_DOMAIN, Msgid)
+# undef ngettext
+# define ngettext(Msgid1, Msgid2, N) \
+ dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N)
+# endif
+
+#else
+
+/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
+ chokes if dcgettext is defined as a macro. So include it now, to make
+ later inclusions of <locale.h> a NOP. We don't include <libintl.h>
+ as well because people using "gettext.h" will not include <libintl.h>,
+ and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
+ is OK. */
+#if defined(__sun)
+# include <locale.h>
+#endif
+
+/* Many header files from the libstdc++ coming with g++ 3.3 or newer include
+ <libintl.h>, which chokes if dcgettext is defined as a macro. So include
+ it now, to make later inclusions of <libintl.h> a NOP. */
+#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
+# include <cstdlib>
+# if (__GLIBC__ >= 2) || _GLIBCXX_HAVE_LIBINTL_H
+# include <libintl.h>
+# endif
+#endif
+
+/* Disabled NLS.
+ The casts to 'const char *' serve the purpose of producing warnings
+ for invalid uses of the value returned from these functions.
+ On pre-ANSI systems without 'const', the config.h file is supposed to
+ contain "#define const". */
+# define gettext(Msgid) ((const char *) (Msgid))
+# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid))
+# define dcgettext(Domainname, Msgid, Category) \
+ ((void) (Category), dgettext (Domainname, Msgid))
+# define ngettext(Msgid1, Msgid2, N) \
+ ((N) == 1 \
+ ? ((void) (Msgid2), (const char *) (Msgid1)) \
+ : ((void) (Msgid1), (const char *) (Msgid2)))
+# define dngettext(Domainname, Msgid1, Msgid2, N) \
+ ((void) (Domainname), ngettext (Msgid1, Msgid2, N))
+# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
+ ((void) (Category), dngettext(Domainname, Msgid1, Msgid2, N))
+# define textdomain(Domainname) ((const char *) (Domainname))
+# define bindtextdomain(Domainname, Dirname) \
+ ((void) (Domainname), (const char *) (Dirname))
+# define bind_textdomain_codeset(Domainname, Codeset) \
+ ((void) (Domainname), (const char *) (Codeset))
+
+#endif
+
+/* A pseudo function call that serves as a marker for the automated
+ extraction of messages, but does not call gettext(). The run-time
+ translation is done at a different place in the code.
+ The argument, String, should be a literal string. Concatenated strings
+ and other string expressions won't work.
+ The macro's expansion is not parenthesized, so that it is suitable as
+ initializer for static 'char[]' or 'const char[]' variables. */
+#define gettext_noop(String) String
+
+/* The separator between msgctxt and msgid in a .mo file. */
+#define GETTEXT_CONTEXT_GLUE "\004"
+
+/* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a
+ MSGID. MSGCTXT and MSGID must be string literals. MSGCTXT should be
+ short and rarely need to change.
+ The letter 'p' stands for 'particular' or 'special'. */
+#ifdef DEFAULT_TEXT_DOMAIN
+# define pgettext(Msgctxt, Msgid) \
+ pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#else
+# define pgettext(Msgctxt, Msgid) \
+ pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#endif
+#define dpgettext(Domainname, Msgctxt, Msgid) \
+ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#define dcpgettext(Domainname, Msgctxt, Msgid, Category) \
+ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category)
+#ifdef DEFAULT_TEXT_DOMAIN
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+ npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#else
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+ npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#endif
+#define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
+ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \
+ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+pgettext_aux (const char *domain,
+ const char *msg_ctxt_id, const char *msgid,
+ int category)
+{
+ const char *translation = dcgettext (domain, msg_ctxt_id, category);
+ if (translation == msg_ctxt_id)
+ return msgid;
+ else
+ return translation;
+}
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+npgettext_aux (const char *domain,
+ const char *msg_ctxt_id, const char *msgid,
+ const char *msgid_plural, unsigned long int n,
+ int category)
+{
+ const char *translation =
+ dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+ if (translation == msg_ctxt_id || translation == msgid_plural)
+ return (n == 1 ? msgid : msgid_plural);
+ else
+ return translation;
+}
+
+/* The same thing extended for non-constant arguments. Here MSGCTXT and MSGID
+ can be arbitrary expressions. But for string literals these macros are
+ less efficient than those above. */
+
+#include <string.h>
+
+#define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \
+ (((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \
+ /* || __STDC_VERSION__ >= 199901L */ )
+
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+#include <stdlib.h>
+#endif
+
+#define pgettext_expr(Msgctxt, Msgid) \
+ dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES)
+#define dpgettext_expr(Domainname, Msgctxt, Msgid) \
+ dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+dcpgettext_expr (const char *domain,
+ const char *msgctxt, const char *msgid,
+ int category)
+{
+ size_t msgctxt_len = strlen (msgctxt) + 1;
+ size_t msgid_len = strlen (msgid) + 1;
+ const char *translation;
+#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ char msg_ctxt_id[msgctxt_len + msgid_len];
+#else
+ char buf[1024];
+ char *msg_ctxt_id =
+ (msgctxt_len + msgid_len <= sizeof (buf)
+ ? buf
+ : (char *) malloc (msgctxt_len + msgid_len));
+ if (msg_ctxt_id != NULL)
+#endif
+ {
+ memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
+ msg_ctxt_id[msgctxt_len - 1] = '\004';
+ memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
+ translation = dcgettext (domain, msg_ctxt_id, category);
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ if (msg_ctxt_id != buf)
+ free (msg_ctxt_id);
+#endif
+ if (translation != msg_ctxt_id)
+ return translation;
+ }
+ return msgid;
+}
+
+#define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \
+ dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
+#define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
+ dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+dcnpgettext_expr (const char *domain,
+ const char *msgctxt, const char *msgid,
+ const char *msgid_plural, unsigned long int n,
+ int category)
+{
+ size_t msgctxt_len = strlen (msgctxt) + 1;
+ size_t msgid_len = strlen (msgid) + 1;
+ const char *translation;
+#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ char msg_ctxt_id[msgctxt_len + msgid_len];
+#else
+ char buf[1024];
+ char *msg_ctxt_id =
+ (msgctxt_len + msgid_len <= sizeof (buf)
+ ? buf
+ : (char *) malloc (msgctxt_len + msgid_len));
+ if (msg_ctxt_id != NULL)
+#endif
+ {
+ memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
+ msg_ctxt_id[msgctxt_len - 1] = '\004';
+ memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
+ translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ if (msg_ctxt_id != buf)
+ free (msg_ctxt_id);
+#endif
+ if (!(translation == msg_ctxt_id || translation == msgid_plural))
+ return translation;
+ }
+ return (n == 1 ? msgid : msgid_plural);
+}
+
+#endif /* _LIBGETTEXT_H */
diff --git a/lib/gettime.c b/lib/gettime.c
new file mode 100644
index 0000000..86bd325
--- /dev/null
+++ b/lib/gettime.c
@@ -0,0 +1,49 @@
+/* gettime -- get the system clock
+
+ Copyright (C) 2002, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "timespec.h"
+
+#include <sys/time.h>
+
+/* Get the system time into *TS. */
+
+void
+gettime (struct timespec *ts)
+{
+#if HAVE_NANOTIME
+ nanotime (ts);
+#else
+
+# if defined CLOCK_REALTIME && HAVE_CLOCK_GETTIME
+ if (clock_gettime (CLOCK_REALTIME, ts) == 0)
+ return;
+# endif
+
+ {
+ struct timeval tv;
+ gettimeofday (&tv, NULL);
+ ts->tv_sec = tv.tv_sec;
+ ts->tv_nsec = tv.tv_usec * 1000;
+ }
+
+#endif
+}
diff --git a/lib/gettimeofday.c b/lib/gettimeofday.c
new file mode 100644
index 0000000..bd5576c
--- /dev/null
+++ b/lib/gettimeofday.c
@@ -0,0 +1,142 @@
+/* Provide gettimeofday for systems that don't have it or for which it's broken.
+
+ Copyright (C) 2001, 2002, 2003, 2005, 2006, 2007 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+
+/* Specification. */
+#include <sys/time.h>
+
+#include <time.h>
+
+#if HAVE_SYS_TIMEB_H
+# include <sys/timeb.h>
+#endif
+
+#if GETTIMEOFDAY_CLOBBERS_LOCALTIME || TZSET_CLOBBERS_LOCALTIME
+
+/* Work around the bug in some systems whereby gettimeofday clobbers
+ the static buffer that localtime uses for its return value. The
+ gettimeofday function from Mac OS X 10.0.4 (i.e., Darwin 1.3.7) has
+ this problem. The tzset replacement is necessary for at least
+ Solaris 2.5, 2.5.1, and 2.6. */
+
+static struct tm tm_zero_buffer;
+static struct tm *localtime_buffer_addr = &tm_zero_buffer;
+
+/* This is a wrapper for localtime. It is used only on systems for which
+ gettimeofday clobbers the static buffer used for localtime's result.
+
+ On the first call, record the address of the static buffer that
+ localtime uses for its result. */
+
+struct tm *
+localtime (time_t const *timep)
+{
+#undef localtime
+ extern struct tm *localtime (time_t const *);
+ struct tm *tm = localtime (timep);
+
+ if (localtime_buffer_addr == &tm_zero_buffer)
+ localtime_buffer_addr = tm;
+
+ return tm;
+}
+
+/* Same as above, since gmtime and localtime use the same buffer. */
+struct tm *
+gmtime (time_t const *timep)
+{
+#undef gmtime
+ extern struct tm *gmtime (time_t const *);
+ struct tm *tm = gmtime (timep);
+
+ if (localtime_buffer_addr == &tm_zero_buffer)
+ localtime_buffer_addr = tm;
+
+ return tm;
+}
+
+#endif /* GETTIMEOFDAY_CLOBBERS_LOCALTIME || TZSET_CLOBBERS_LOCALTIME */
+
+#if TZSET_CLOBBERS_LOCALTIME
+/* This is a wrapper for tzset, for systems on which tzset may clobber
+ the static buffer used for localtime's result. */
+void
+tzset (void)
+{
+#undef tzset
+ extern void tzset (void);
+
+ /* Save and restore the contents of the buffer used for localtime's
+ result around the call to tzset. */
+ struct tm save = *localtime_buffer_addr;
+ tzset ();
+ *localtime_buffer_addr = save;
+}
+#endif
+
+/* This is a wrapper for gettimeofday. It is used only on systems
+ that lack this function, or whose implementation of this function
+ causes problems. */
+
+int
+rpl_gettimeofday (struct timeval *restrict tv, void *restrict tz)
+{
+#undef gettimeofday
+#if HAVE_GETTIMEOFDAY
+# if GETTIMEOFDAY_CLOBBERS_LOCALTIME
+ /* Save and restore the contents of the buffer used for localtime's
+ result around the call to gettimeofday. */
+ struct tm save = *localtime_buffer_addr;
+# endif
+
+ int result = gettimeofday (tv, tz);
+
+# if GETTIMEOFDAY_CLOBBERS_LOCALTIME
+ *localtime_buffer_addr = save;
+# endif
+
+ return result;
+
+#else
+
+# if HAVE__FTIME
+
+ struct _timeb timebuf;
+ _ftime (&timebuf);
+ tv->tv_sec = timebuf.time;
+ tv->tv_usec = timebuf.millitm * 1000;
+
+# else
+
+# if !defined OK_TO_USE_1S_CLOCK
+# error "Only 1-second nominal clock resolution found. Is that intended?" \
+ "If so, compile with the -DOK_TO_USE_1S_CLOCK option."
+# endif
+ tv->tv_sec = time (NULL);
+ tv->tv_usec = 0;
+
+# endif
+
+ return 0;
+
+#endif
+}
diff --git a/lib/getugroups.c b/lib/getugroups.c
new file mode 100644
index 0000000..970192e
--- /dev/null
+++ b/lib/getugroups.c
@@ -0,0 +1,104 @@
+/* getugroups.c -- return a list of the groups a user is in
+
+ Copyright (C) 1990, 1991, 1998, 1999, 2000, 2003, 2004, 2005, 2006
+ Free Software Foundation.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David MacKenzie. */
+
+#include <config.h>
+
+#include <sys/types.h>
+#include <stdio.h> /* grp.h on alpha OSF1 V2.0 uses "FILE *". */
+#include <grp.h>
+
+#include <unistd.h>
+
+#include <errno.h>
+#ifndef EOVERFLOW
+# define EOVERFLOW EINVAL
+#endif
+
+/* Some old header files might not declare setgrent, getgrent, and endgrent.
+ If you don't have them at all, we can't implement this function.
+ You lose! */
+struct group *getgrent ();
+
+#include <string.h>
+
+#define STREQ(s1, s2) ((strcmp (s1, s2) == 0))
+
+/* Like `getgroups', but for user USERNAME instead of for the current
+ process. Store at most MAXCOUNT group IDs in the GROUPLIST array.
+ If GID is not -1, store it first (if possible). GID should be the
+ group ID (pw_gid) obtained from getpwuid, in case USERNAME is not
+ listed in /etc/groups.
+ Always return the number of groups of which USERNAME is a member. */
+
+int
+getugroups (int maxcount, GETGROUPS_T *grouplist, char *username, gid_t gid)
+{
+ struct group *grp;
+ register char **cp;
+ register int count = 0;
+
+ if (gid != (gid_t) -1)
+ {
+ if (maxcount != 0)
+ grouplist[count] = gid;
+ ++count;
+ }
+
+ setgrent ();
+ while ((grp = getgrent ()) != 0)
+ {
+ for (cp = grp->gr_mem; *cp; ++cp)
+ {
+ int n;
+
+ if ( ! STREQ (username, *cp))
+ continue;
+
+ /* See if this group number is already on the list. */
+ for (n = 0; n < count; ++n)
+ if (grouplist && grouplist[n] == grp->gr_gid)
+ break;
+
+ /* If it's a new group number, then try to add it to the list. */
+ if (n == count)
+ {
+ if (maxcount != 0)
+ {
+ if (count >= maxcount)
+ {
+ endgrent ();
+ return count;
+ }
+ grouplist[count] = grp->gr_gid;
+ }
+ count++;
+ if (count < 0)
+ {
+ errno = EOVERFLOW;
+ return -1;
+ }
+ }
+ }
+ }
+ endgrent ();
+
+ return count;
+}
diff --git a/lib/getusershell.c b/lib/getusershell.c
new file mode 100644
index 0000000..6e7a443
--- /dev/null
+++ b/lib/getusershell.c
@@ -0,0 +1,171 @@
+/* getusershell.c -- Return names of valid user shells.
+
+ Copyright (C) 1991, 1997, 2000, 2001, 2003, 2004, 2005, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David MacKenzie <djm@gnu.ai.mit.edu> */
+
+#include <config.h>
+
+#ifndef SHELLS_FILE
+# ifndef __DJGPP__
+/* File containing a list of nonrestricted shells, one per line. */
+# define SHELLS_FILE "/etc/shells"
+# else
+/* This is a horrible kludge. Isn't there a better way? */
+# define SHELLS_FILE "/dev/env/DJDIR/etc/shells"
+# endif
+#endif
+
+#include <stdlib.h>
+#include <ctype.h>
+
+#include "stdio--.h"
+#include "xalloc.h"
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+static size_t readname (char **, size_t *, FILE *);
+
+#if ! defined ADDITIONAL_DEFAULT_SHELLS && defined __MSDOS__
+# define ADDITIONAL_DEFAULT_SHELLS \
+ "c:/dos/command.com", "c:/windows/command.com", "c:/command.com",
+#else
+# define ADDITIONAL_DEFAULT_SHELLS /* empty */
+#endif
+
+/* List of shells to use if the shells file is missing. */
+static char const* const default_shells[] =
+{
+ ADDITIONAL_DEFAULT_SHELLS
+ "/bin/sh", "/bin/csh", "/usr/bin/sh", "/usr/bin/csh", NULL
+};
+
+/* Index of the next shell in `default_shells' to return.
+ 0 means we are not using `default_shells'. */
+static size_t default_index = 0;
+
+/* Input stream from the shells file. */
+static FILE *shellstream = NULL;
+
+/* Line of input from the shells file. */
+static char *line = NULL;
+
+/* Number of bytes allocated for `line'. */
+static size_t line_size = 0;
+
+/* Return an entry from the shells file, ignoring comment lines.
+ If the file doesn't exist, use the list in DEFAULT_SHELLS (above).
+ In any case, the returned string is in memory allocated through malloc.
+ Return NULL if there are no more entries. */
+
+char *
+getusershell (void)
+{
+ if (default_index > 0)
+ {
+ if (default_shells[default_index])
+ /* Not at the end of the list yet. */
+ return xstrdup (default_shells[default_index++]);
+ return NULL;
+ }
+
+ if (shellstream == NULL)
+ {
+ shellstream = fopen (SHELLS_FILE, "r");
+ if (shellstream == NULL)
+ {
+ /* No shells file. Use the default list. */
+ default_index = 1;
+ return xstrdup (default_shells[0]);
+ }
+ }
+
+ while (readname (&line, &line_size, shellstream))
+ {
+ if (*line != '#')
+ return line;
+ }
+ return NULL; /* End of file. */
+}
+
+/* Rewind the shells file. */
+
+void
+setusershell (void)
+{
+ default_index = 0;
+ if (shellstream)
+ rewind (shellstream);
+}
+
+/* Close the shells file. */
+
+void
+endusershell (void)
+{
+ if (shellstream)
+ {
+ fclose (shellstream);
+ shellstream = NULL;
+ }
+}
+
+/* Read a line from STREAM, removing any newline at the end.
+ Place the result in *NAME, which is malloc'd
+ and/or realloc'd as necessary and can start out NULL,
+ and whose size is passed and returned in *SIZE.
+
+ Return the number of bytes placed in *NAME
+ if some nonempty sequence was found, otherwise 0. */
+
+static size_t
+readname (char **name, size_t *size, FILE *stream)
+{
+ int c;
+ size_t name_index = 0;
+
+ /* Skip blank space. */
+ while ((c = getc (stream)) != EOF && isspace (c))
+ /* Do nothing. */ ;
+
+ for (;;)
+ {
+ if (*size <= name_index)
+ *name = x2nrealloc (*name, size, sizeof **name);
+ if (c == EOF || isspace (c))
+ break;
+ (*name)[name_index++] = c;
+ c = getc (stream);
+ }
+ (*name)[name_index] = '\0';
+ return name_index;
+}
+
+#ifdef TEST
+int
+main (void)
+{
+ char *s;
+
+ while (s = getusershell ())
+ puts (s);
+ exit (0);
+}
+#endif
diff --git a/lib/gnulib.mk b/lib/gnulib.mk
new file mode 100644
index 0000000..e833d14
--- /dev/null
+++ b/lib/gnulib.mk
@@ -0,0 +1,2255 @@
+## DO NOT EDIT! GENERATED AUTOMATICALLY!
+## Process this file with automake to produce Makefile.in.
+# Copyright (C) 2004-2007 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License. As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+# Reproduce by: gnulib-tool --import --dir=. --local-dir=gl --lib=libcoreutils --source-base=lib --m4-base=m4 --doc-base=doc --aux-dir=build-aux --avoid=lock --avoid=size_max --avoid=xsize --avoid=canonicalize-lgpl --no-libtool --macro-prefix=gl acl alloca announce-gen argmatch assert atexit backupfile base64 c-strcase c-strtod c-strtold calloc canon-host canonicalize chown cloexec closeout config-h configmake cycle-check d-ino d-type diacrit dirfd dirname dup2 error euidaccess exclude exitfail fchdir fcntl fcntl-safer fdl file-type fileblocks filemode filenamecat fnmatch-gnu fopen-safer fprintftime free fsusage ftruncate fts getdate getgroups gethrxtime getline getloadavg getndelim2 getopt getpagesize getpass-gnu gettext gettime gettimeofday getugroups getusershell gnupload group-member hard-locale hash hash-pjw host-os human idcache inttostr inttypes isapipe lchmod lchown lib-ignore linebuffer link-follow long-options lstat malloc mbswidth md5 memcasecmp memchr memcmp memcpy memmove mempcpy memrchr memset mkancesdirs mkdir mkdir-p mkstemp mktime modechange mountlist mpsort obstack pathmax perl physmem posixtm posixver putenv quote quotearg raise readlink readtokens readtokens0 readutmp realloc regex rename rename-dest-slash rmdir rmdir-errno root-dev-ino rpmatch safe-read same save-cwd savedir savewd settime sha1 sig2str ssize_t stat-macros stat-time stdbool stdlib-safer stpcpy strcspn strftime strpbrk strtod strtoimax strtol strtoumax strverscmp sys_stat timespec tzset unicodeio unistd-safer unlink-busy unlinkdir unlocked-io uptime userspec utime utimecmp utimens vasprintf verify version-etc-fsf wcwidth winsz-ioctl winsz-termios xalloc xgetcwd xgethostname xmemcoll xnanosleep xreadlink xreadlink-with-size xstrtod xstrtoimax xstrtol xstrtold xstrtoumax yesno
+
+AUTOMAKE_OPTIONS = 1.5 gnits
+
+noinst_HEADERS =
+noinst_LIBRARIES =
+noinst_LTLIBRARIES =
+EXTRA_DIST =
+BUILT_SOURCES =
+SUFFIXES =
+MOSTLYCLEANFILES = core *.stackdump
+MOSTLYCLEANDIRS =
+CLEANFILES =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+
+AM_CPPFLAGS =
+
+noinst_LIBRARIES += libcoreutils.a
+
+libcoreutils_a_SOURCES =
+libcoreutils_a_LIBADD = $(gl_LIBOBJS)
+libcoreutils_a_DEPENDENCIES = $(gl_LIBOBJS)
+EXTRA_libcoreutils_a_SOURCES =
+
+## begin gnulib module acl
+
+
+EXTRA_DIST += acl-internal.h acl.c acl.h acl_entries.c file-has-acl.c
+
+EXTRA_libcoreutils_a_SOURCES += acl.c acl_entries.c file-has-acl.c
+
+## end gnulib module acl
+
+## begin gnulib module alloca
+
+
+EXTRA_DIST += alloca.c
+
+EXTRA_libcoreutils_a_SOURCES += alloca.c
+
+libcoreutils_a_LIBADD += @ALLOCA@
+libcoreutils_a_DEPENDENCIES += @ALLOCA@
+## end gnulib module alloca
+
+## begin gnulib module alloca-opt
+
+BUILT_SOURCES += $(ALLOCA_H)
+
+# We need the following in order to create <alloca.h> when the system
+# doesn't have one that works with the given compiler.
+alloca.h: alloca_.h
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ cat $(srcdir)/alloca_.h; \
+ } > $@-t
+ mv -f $@-t $@
+MOSTLYCLEANFILES += alloca.h alloca.h-t
+
+EXTRA_DIST += alloca_.h
+
+## end gnulib module alloca-opt
+
+## begin gnulib module allocsa
+
+libcoreutils_a_SOURCES += allocsa.h allocsa.c
+
+EXTRA_DIST += allocsa.valgrind
+
+## end gnulib module allocsa
+
+## begin gnulib module argmatch
+
+
+EXTRA_DIST += argmatch.c argmatch.h
+
+EXTRA_libcoreutils_a_SOURCES += argmatch.c
+
+## end gnulib module argmatch
+
+## begin gnulib module arpa_inet
+
+BUILT_SOURCES += $(ARPA_INET_H)
+
+# We need the following in order to create <arpa/inet.h> when the system
+# doesn't have one.
+arpa/inet.h:
+ @MKDIR_P@ arpa
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ echo '#include <sys/socket.h>'; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += arpa/inet.h arpa/inet.h-t
+MOSTLYCLEANDIRS += arpa
+
+## end gnulib module arpa_inet
+
+## begin gnulib module atexit
+
+
+EXTRA_DIST += atexit.c
+
+EXTRA_libcoreutils_a_SOURCES += atexit.c
+
+## end gnulib module atexit
+
+## begin gnulib module backupfile
+
+
+EXTRA_DIST += backupfile.c backupfile.h
+
+EXTRA_libcoreutils_a_SOURCES += backupfile.c
+
+## end gnulib module backupfile
+
+## begin gnulib module base64
+
+libcoreutils_a_SOURCES += base64.h base64.c
+
+## end gnulib module base64
+
+## begin gnulib module c-ctype
+
+libcoreutils_a_SOURCES += c-ctype.h c-ctype.c
+
+## end gnulib module c-ctype
+
+## begin gnulib module c-strcase
+
+libcoreutils_a_SOURCES += c-strcase.h c-strcasecmp.c c-strncasecmp.c
+
+## end gnulib module c-strcase
+
+## begin gnulib module c-strtod
+
+
+EXTRA_DIST += c-strtod.c c-strtod.h
+
+EXTRA_libcoreutils_a_SOURCES += c-strtod.c
+
+## end gnulib module c-strtod
+
+## begin gnulib module c-strtold
+
+
+EXTRA_DIST += c-strtod.c c-strtod.h c-strtold.c
+
+EXTRA_libcoreutils_a_SOURCES += c-strtod.c c-strtold.c
+
+## end gnulib module c-strtold
+
+## begin gnulib module calloc
+
+
+EXTRA_DIST += calloc.c
+
+EXTRA_libcoreutils_a_SOURCES += calloc.c
+
+## end gnulib module calloc
+
+## begin gnulib module canon-host
+
+
+EXTRA_DIST += canon-host.c canon-host.h
+
+EXTRA_libcoreutils_a_SOURCES += canon-host.c
+
+## end gnulib module canon-host
+
+## begin gnulib module canonicalize
+
+
+EXTRA_DIST += canonicalize.c canonicalize.h pathmax.h
+
+EXTRA_libcoreutils_a_SOURCES += canonicalize.c
+
+## end gnulib module canonicalize
+
+## begin gnulib module chdir-long
+
+
+EXTRA_DIST += chdir-long.c chdir-long.h
+
+EXTRA_libcoreutils_a_SOURCES += chdir-long.c
+
+## end gnulib module chdir-long
+
+## begin gnulib module chown
+
+
+EXTRA_DIST += chown.c fchown-stub.c
+
+EXTRA_libcoreutils_a_SOURCES += chown.c fchown-stub.c
+
+## end gnulib module chown
+
+## begin gnulib module cloexec
+
+
+EXTRA_DIST += cloexec.c cloexec.h
+
+EXTRA_libcoreutils_a_SOURCES += cloexec.c
+
+## end gnulib module cloexec
+
+## begin gnulib module close-stream
+
+
+EXTRA_DIST += close-stream.c close-stream.h
+
+EXTRA_libcoreutils_a_SOURCES += close-stream.c
+
+## end gnulib module close-stream
+
+## begin gnulib module closeout
+
+
+EXTRA_DIST += closeout.c closeout.h
+
+EXTRA_libcoreutils_a_SOURCES += closeout.c
+
+## end gnulib module closeout
+
+## begin gnulib module configmake
+
+# Retrieve values of the variables through 'configure' followed by
+# 'make', not directly through 'configure', so that a user who
+# sets some of these variables consistently on the 'make' command
+# line gets correct results.
+#
+# One advantage of this approach, compared to the classical
+# approach of adding -DLIBDIR=\"$(libdir)\" etc. to AM_CPPFLAGS,
+# is that it protects against the use of undefined variables.
+# If, say, $(libdir) is not set in the Makefile, LIBDIR is not
+# defined by this module, and code using LIBDIR gives a
+# compilation error.
+#
+# Another advantage is that 'make' output is shorter.
+#
+# Listed in the same order as the GNU makefile conventions.
+# The Automake-defined pkg* macros are appended, in the order
+# listed in the Automake 1.10a+ documentation.
+configmake.h: Makefile
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ echo '#define PREFIX "$(prefix)"'; \
+ echo '#define EXEC_PREFIX "$(exec_prefix)"'; \
+ echo '#define BINDIR "$(bindir)"'; \
+ echo '#define SBINDIR "$(sbindir)"'; \
+ echo '#define LIBEXECDIR "$(libexecdir)"'; \
+ echo '#define DATAROOTDIR "$(datarootdir)"'; \
+ echo '#define DATADIR "$(datadir)"'; \
+ echo '#define SYSCONFDIR "$(sysconfdir)"'; \
+ echo '#define SHAREDSTATEDIR "$(sharedstatedir)"'; \
+ echo '#define LOCALSTATEDIR "$(localstatedir)"'; \
+ echo '#define INCLUDEDIR "$(includedir)"'; \
+ echo '#define OLDINCLUDEDIR "$(oldincludedir)"'; \
+ echo '#define DOCDIR "$(docdir)"'; \
+ echo '#define INFODIR "$(infodir)"'; \
+ echo '#define HTMLDIR "$(htmldir)"'; \
+ echo '#define DVIDIR "$(dvidir)"'; \
+ echo '#define PDFDIR "$(pdfdir)"'; \
+ echo '#define PSDIR "$(psdir)"'; \
+ echo '#define LIBDIR "$(libdir)"'; \
+ echo '#define LISPDIR "$(lispdir)"'; \
+ echo '#define LOCALEDIR "$(localedir)"'; \
+ echo '#define MANDIR "$(mandir)"'; \
+ echo '#define MANEXT "$(manext)"'; \
+ echo '#define PKGDATADIR "$(pkgdatadir)"'; \
+ echo '#define PKGINCLUDEDIR "$(pkgincludedir)"'; \
+ echo '#define PKGLIBDIR "$(pkglibdir)"'; \
+ echo '#define PKGLIBEXECDIR "$(pkglibexecdir)"'; \
+ } | sed '/""/d' > $@-t
+ mv $@-t $@
+BUILT_SOURCES += configmake.h
+CLEANFILES += configmake.h configmake.h-t
+
+## end gnulib module configmake
+
+## begin gnulib module cycle-check
+
+
+EXTRA_DIST += cycle-check.c cycle-check.h
+
+EXTRA_libcoreutils_a_SOURCES += cycle-check.c
+
+## end gnulib module cycle-check
+
+## begin gnulib module dev-ino
+
+
+EXTRA_DIST += dev-ino.h
+
+## end gnulib module dev-ino
+
+## begin gnulib module diacrit
+
+libcoreutils_a_SOURCES += diacrit.h diacrit.c
+
+## end gnulib module diacrit
+
+## begin gnulib module dirfd
+
+
+EXTRA_DIST += dirfd.c dirfd.h
+
+EXTRA_libcoreutils_a_SOURCES += dirfd.c
+
+## end gnulib module dirfd
+
+## begin gnulib module dirname
+
+
+EXTRA_DIST += basename.c dirname.c dirname.h stripslash.c
+
+EXTRA_libcoreutils_a_SOURCES += basename.c dirname.c stripslash.c
+
+## end gnulib module dirname
+
+## begin gnulib module dup2
+
+
+EXTRA_DIST += dup2.c
+
+EXTRA_libcoreutils_a_SOURCES += dup2.c
+
+## end gnulib module dup2
+
+## begin gnulib module error
+
+
+EXTRA_DIST += error.c error.h
+
+EXTRA_libcoreutils_a_SOURCES += error.c
+
+## end gnulib module error
+
+## begin gnulib module euidaccess
+
+
+EXTRA_DIST += euidaccess.c euidaccess.h
+
+EXTRA_libcoreutils_a_SOURCES += euidaccess.c
+
+## end gnulib module euidaccess
+
+## begin gnulib module exclude
+
+
+EXTRA_DIST += exclude.c exclude.h
+
+EXTRA_libcoreutils_a_SOURCES += exclude.c
+
+## end gnulib module exclude
+
+## begin gnulib module exitfail
+
+
+EXTRA_DIST += exitfail.c exitfail.h
+
+EXTRA_libcoreutils_a_SOURCES += exitfail.c
+
+## end gnulib module exitfail
+
+## begin gnulib module fchdir
+
+BUILT_SOURCES += $(DIRENT_H)
+
+# We need the following in order to create <dirent.h> when the system
+# doesn't have one that works with the given compiler.
+dirent.h: dirent_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''ABSOLUTE_DIRENT_H''@|$(ABSOLUTE_DIRENT_H)|g' \
+ -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \
+ < $(srcdir)/dirent_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += dirent.h dirent.h-t
+
+EXTRA_DIST += dirent_.h fchdir.c
+
+EXTRA_libcoreutils_a_SOURCES += fchdir.c
+
+## end gnulib module fchdir
+
+## begin gnulib module fcntl
+
+BUILT_SOURCES += $(FCNTL_H)
+
+# We need the following in order to create <fcntl.h> when the system
+# doesn't have one that works with the given compiler.
+fcntl.h: fcntl_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''ABSOLUTE_FCNTL_H''@|$(ABSOLUTE_FCNTL_H)|g' \
+ < $(srcdir)/fcntl_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += fcntl.h fcntl.h-t
+
+EXTRA_DIST += fcntl_.h
+
+## end gnulib module fcntl
+
+## begin gnulib module fcntl-safer
+
+
+EXTRA_DIST += creat-safer.c fcntl--.h fcntl-safer.h open-safer.c
+
+EXTRA_libcoreutils_a_SOURCES += creat-safer.c open-safer.c
+
+## end gnulib module fcntl-safer
+
+## begin gnulib module file-type
+
+
+EXTRA_DIST += file-type.c file-type.h
+
+EXTRA_libcoreutils_a_SOURCES += file-type.c
+
+## end gnulib module file-type
+
+## begin gnulib module fileblocks
+
+
+EXTRA_DIST += fileblocks.c
+
+EXTRA_libcoreutils_a_SOURCES += fileblocks.c
+
+## end gnulib module fileblocks
+
+## begin gnulib module filemode
+
+
+EXTRA_DIST += filemode.c filemode.h
+
+EXTRA_libcoreutils_a_SOURCES += filemode.c
+
+## end gnulib module filemode
+
+## begin gnulib module filenamecat
+
+
+EXTRA_DIST += filenamecat.c filenamecat.h
+
+EXTRA_libcoreutils_a_SOURCES += filenamecat.c
+
+## end gnulib module filenamecat
+
+## begin gnulib module fnmatch
+
+BUILT_SOURCES += $(FNMATCH_H)
+
+# We need the following in order to create <fnmatch.h> when the system
+# doesn't have one that supports the required API.
+fnmatch.h: fnmatch_.h
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ cat $(srcdir)/fnmatch_.h; \
+ } > $@-t
+ mv -f $@-t $@
+MOSTLYCLEANFILES += fnmatch.h fnmatch.h-t
+
+EXTRA_DIST += fnmatch.c fnmatch_.h fnmatch_loop.c
+
+EXTRA_libcoreutils_a_SOURCES += fnmatch.c fnmatch_loop.c
+
+## end gnulib module fnmatch
+
+## begin gnulib module fopen-safer
+
+
+EXTRA_DIST += fopen-safer.c stdio--.h stdio-safer.h
+
+EXTRA_libcoreutils_a_SOURCES += fopen-safer.c
+
+## end gnulib module fopen-safer
+
+## begin gnulib module fpending
+
+
+EXTRA_DIST += __fpending.c __fpending.h
+
+EXTRA_libcoreutils_a_SOURCES += __fpending.c
+
+## end gnulib module fpending
+
+## begin gnulib module fprintftime
+
+
+EXTRA_DIST += fprintftime.c fprintftime.h
+
+EXTRA_libcoreutils_a_SOURCES += fprintftime.c
+
+## end gnulib module fprintftime
+
+## begin gnulib module free
+
+
+EXTRA_DIST += free.c
+
+EXTRA_libcoreutils_a_SOURCES += free.c
+
+## end gnulib module free
+
+## begin gnulib module fsusage
+
+
+EXTRA_DIST += fsusage.c fsusage.h
+
+EXTRA_libcoreutils_a_SOURCES += fsusage.c
+
+## end gnulib module fsusage
+
+## begin gnulib module ftruncate
+
+
+EXTRA_DIST += ftruncate.c
+
+EXTRA_libcoreutils_a_SOURCES += ftruncate.c
+
+## end gnulib module ftruncate
+
+## begin gnulib module fts
+
+
+EXTRA_DIST += fts-cycle.c fts.c fts_.h
+
+EXTRA_libcoreutils_a_SOURCES += fts-cycle.c fts.c
+
+## end gnulib module fts
+
+## begin gnulib module full-read
+
+libcoreutils_a_SOURCES += full-read.h full-read.c
+
+## end gnulib module full-read
+
+## begin gnulib module full-write
+
+libcoreutils_a_SOURCES += full-write.h full-write.c
+
+## end gnulib module full-write
+
+## begin gnulib module getaddrinfo
+
+
+EXTRA_DIST += gai_strerror.c getaddrinfo.c getaddrinfo.h
+
+EXTRA_libcoreutils_a_SOURCES += gai_strerror.c getaddrinfo.c
+
+## end gnulib module getaddrinfo
+
+## begin gnulib module getcwd
+
+
+EXTRA_DIST += getcwd.c
+
+EXTRA_libcoreutils_a_SOURCES += getcwd.c
+
+## end gnulib module getcwd
+
+## begin gnulib module getdate
+
+libcoreutils_a_SOURCES += getdate.y
+BUILT_SOURCES += getdate.c
+MAINTAINERCLEANFILES += getdate.c
+EXTRA_DIST += getdate.c
+
+EXTRA_DIST += getdate.h
+
+## end gnulib module getdate
+
+## begin gnulib module getdelim
+
+
+EXTRA_DIST += getdelim.c getdelim.h
+
+EXTRA_libcoreutils_a_SOURCES += getdelim.c
+
+## end gnulib module getdelim
+
+## begin gnulib module getgroups
+
+
+EXTRA_DIST += getgroups.c
+
+EXTRA_libcoreutils_a_SOURCES += getgroups.c
+
+## end gnulib module getgroups
+
+## begin gnulib module gethostname
+
+
+EXTRA_DIST += gethostname.c
+
+EXTRA_libcoreutils_a_SOURCES += gethostname.c
+
+## end gnulib module gethostname
+
+## begin gnulib module gethrxtime
+
+
+EXTRA_DIST += gethrxtime.c gethrxtime.h xtime.h
+
+EXTRA_libcoreutils_a_SOURCES += gethrxtime.c
+
+## end gnulib module gethrxtime
+
+## begin gnulib module getline
+
+
+EXTRA_DIST += getline.c getline.h
+
+EXTRA_libcoreutils_a_SOURCES += getline.c
+
+## end gnulib module getline
+
+## begin gnulib module getloadavg
+
+
+EXTRA_DIST += getloadavg.c
+
+EXTRA_libcoreutils_a_SOURCES += getloadavg.c
+
+## end gnulib module getloadavg
+
+## begin gnulib module getndelim2
+
+
+EXTRA_DIST += getndelim2.c getndelim2.h
+
+EXTRA_libcoreutils_a_SOURCES += getndelim2.c
+
+## end gnulib module getndelim2
+
+## begin gnulib module getopt
+
+BUILT_SOURCES += $(GETOPT_H)
+
+# We need the following in order to create <getopt.h> when the system
+# doesn't have one that works with the given compiler.
+getopt.h: getopt_.h
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ cat $(srcdir)/getopt_.h; \
+ } > $@-t
+ mv -f $@-t $@
+MOSTLYCLEANFILES += getopt.h getopt.h-t
+
+EXTRA_DIST += getopt.c getopt1.c getopt_.h getopt_int.h
+
+EXTRA_libcoreutils_a_SOURCES += getopt.c getopt1.c
+
+## end gnulib module getopt
+
+## begin gnulib module getpagesize
+
+
+EXTRA_DIST += getpagesize.h
+
+## end gnulib module getpagesize
+
+## begin gnulib module getpass-gnu
+
+
+EXTRA_DIST += getpass.c getpass.h
+
+EXTRA_libcoreutils_a_SOURCES += getpass.c
+
+## end gnulib module getpass-gnu
+
+## begin gnulib module gettext
+
+# This is for those projects which use "gettextize --intl" to put a source-code
+# copy of libintl into their package. In such projects, every Makefile.am needs
+# -I$(top_builddir)/intl, so that <libintl.h> can be found in this directory.
+# For the Makefile.ams in other directories it is the maintainer's
+# responsibility; for the one from gnulib we do it here.
+# This option has no effect when the user disables NLS (because then the intl
+# directory contains no libintl.h file) or when the project does not use
+# "gettextize --intl".
+#AM_CPPFLAGS += -I$(top_builddir)/intl
+
+## end gnulib module gettext
+
+## begin gnulib module gettext-h
+
+libcoreutils_a_SOURCES += gettext.h
+
+## end gnulib module gettext-h
+
+## begin gnulib module gettime
+
+
+EXTRA_DIST += gettime.c
+
+EXTRA_libcoreutils_a_SOURCES += gettime.c
+
+## end gnulib module gettime
+
+## begin gnulib module gettimeofday
+
+
+EXTRA_DIST += gettimeofday.c
+
+EXTRA_libcoreutils_a_SOURCES += gettimeofday.c
+
+## end gnulib module gettimeofday
+
+## begin gnulib module getugroups
+
+
+EXTRA_DIST += getugroups.c
+
+EXTRA_libcoreutils_a_SOURCES += getugroups.c
+
+## end gnulib module getugroups
+
+## begin gnulib module getusershell
+
+
+EXTRA_DIST += getusershell.c
+
+EXTRA_libcoreutils_a_SOURCES += getusershell.c
+
+## end gnulib module getusershell
+
+## begin gnulib module group-member
+
+
+EXTRA_DIST += group-member.c group-member.h
+
+EXTRA_libcoreutils_a_SOURCES += group-member.c
+
+## end gnulib module group-member
+
+## begin gnulib module hard-locale
+
+
+EXTRA_DIST += hard-locale.c hard-locale.h
+
+EXTRA_libcoreutils_a_SOURCES += hard-locale.c
+
+## end gnulib module hard-locale
+
+## begin gnulib module hash
+
+
+EXTRA_DIST += hash.c hash.h
+
+EXTRA_libcoreutils_a_SOURCES += hash.c
+
+## end gnulib module hash
+
+## begin gnulib module hash-pjw
+
+libcoreutils_a_SOURCES += hash-pjw.h hash-pjw.c
+
+## end gnulib module hash-pjw
+
+## begin gnulib module human
+
+
+EXTRA_DIST += human.c human.h
+
+EXTRA_libcoreutils_a_SOURCES += human.c
+
+## end gnulib module human
+
+## begin gnulib module i-ring
+
+
+EXTRA_DIST += i-ring.c i-ring.h
+
+EXTRA_libcoreutils_a_SOURCES += i-ring.c
+
+## end gnulib module i-ring
+
+## begin gnulib module idcache
+
+
+EXTRA_DIST += idcache.c
+
+EXTRA_libcoreutils_a_SOURCES += idcache.c
+
+## end gnulib module idcache
+
+## begin gnulib module inet_ntop
+
+
+EXTRA_DIST += inet_ntop.c inet_ntop.h
+
+EXTRA_libcoreutils_a_SOURCES += inet_ntop.c
+
+## end gnulib module inet_ntop
+
+## begin gnulib module intprops
+
+
+EXTRA_DIST += intprops.h
+
+## end gnulib module intprops
+
+## begin gnulib module inttostr
+
+
+EXTRA_DIST += imaxtostr.c inttostr.c inttostr.h offtostr.c uinttostr.c umaxtostr.c
+
+EXTRA_libcoreutils_a_SOURCES += imaxtostr.c inttostr.c offtostr.c uinttostr.c umaxtostr.c
+
+## end gnulib module inttostr
+
+## begin gnulib module inttypes
+
+BUILT_SOURCES += $(INTTYPES_H)
+
+# We need the following in order to create <inttypes.h> when the system
+# doesn't have one that works with the given compiler.
+inttypes.h: inttypes_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+ -e 's|@''ABSOLUTE_INTTYPES_H''@|$(ABSOLUTE_INTTYPES_H)|g' \
+ -e 's/@''PRI_MACROS_BROKEN''@/$(PRI_MACROS_BROKEN)/g' \
+ -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
+ -e 's/@''PRIPTR_PREFIX''@/$(PRIPTR_PREFIX)/g' \
+ -e 's/@''GNULIB_IMAXABS''@/$(GNULIB_IMAXABS)/g' \
+ -e 's/@''GNULIB_IMAXDIV''@/$(GNULIB_IMAXDIV)/g' \
+ -e 's/@''GNULIB_STRTOIMAX''@/$(GNULIB_STRTOIMAX)/g' \
+ -e 's/@''GNULIB_STRTOUMAX''@/$(GNULIB_STRTOUMAX)/g' \
+ -e 's/@''HAVE_DECL_IMAXABS''@/$(HAVE_DECL_IMAXABS)/g' \
+ -e 's/@''HAVE_DECL_IMAXDIV''@/$(HAVE_DECL_IMAXDIV)/g' \
+ -e 's/@''HAVE_DECL_STRTOIMAX''@/$(HAVE_DECL_STRTOIMAX)/g' \
+ -e 's/@''HAVE_DECL_STRTOUMAX''@/$(HAVE_DECL_STRTOUMAX)/g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/inttypes_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += inttypes.h inttypes.h-t
+
+EXTRA_DIST += inttypes_.h
+
+## end gnulib module inttypes
+
+## begin gnulib module isapipe
+
+
+EXTRA_DIST += isapipe.c isapipe.h
+
+EXTRA_libcoreutils_a_SOURCES += isapipe.c
+
+## end gnulib module isapipe
+
+## begin gnulib module lchmod
+
+
+EXTRA_DIST += lchmod.h
+
+## end gnulib module lchmod
+
+## begin gnulib module lchown
+
+
+EXTRA_DIST += lchown.c lchown.h
+
+EXTRA_libcoreutils_a_SOURCES += lchown.c
+
+## end gnulib module lchown
+
+## begin gnulib module linebuffer
+
+libcoreutils_a_SOURCES += linebuffer.h linebuffer.c
+
+## end gnulib module linebuffer
+
+## begin gnulib module link-warning
+
+LINK_WARNING_H=$(top_srcdir)/build-aux/link-warning.h
+
+## end gnulib module link-warning
+
+## begin gnulib module localcharset
+
+libcoreutils_a_SOURCES += localcharset.h localcharset.c
+
+# We need the following in order to install a simple file in $(libdir)
+# which is shared with other installed packages. We use a list of referencing
+# packages so that "make uninstall" will remove the file if and only if it
+# is not used by another installed package.
+# On systems with glibc-2.1 or newer, the file is redundant, therefore we
+# avoid installing it.
+
+all-local: charset.alias ref-add.sed ref-del.sed
+
+charset_alias = $(DESTDIR)$(libdir)/charset.alias
+charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
+install-exec-local: all-local
+ test $(GLIBC21) != no || $(mkinstalldirs) $(DESTDIR)$(libdir)
+ if test -f $(charset_alias); then \
+ sed -f ref-add.sed $(charset_alias) > $(charset_tmp) ; \
+ $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
+ rm -f $(charset_tmp) ; \
+ else \
+ if test $(GLIBC21) = no; then \
+ sed -f ref-add.sed charset.alias > $(charset_tmp) ; \
+ $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
+ rm -f $(charset_tmp) ; \
+ fi ; \
+ fi
+
+uninstall-local: all-local
+ if test -f $(charset_alias); then \
+ sed -f ref-del.sed $(charset_alias) > $(charset_tmp); \
+ if grep '^# Packages using this file: $$' $(charset_tmp) \
+ > /dev/null; then \
+ rm -f $(charset_alias); \
+ else \
+ $(INSTALL_DATA) $(charset_tmp) $(charset_alias); \
+ fi; \
+ rm -f $(charset_tmp); \
+ fi
+
+charset.alias: config.charset
+ rm -f t-$@ $@
+ $(SHELL) $(srcdir)/config.charset '$(host)' > t-$@
+ mv t-$@ $@
+
+SUFFIXES += .sed .sin
+.sin.sed:
+ rm -f t-$@ $@
+ sed -e '/^#/d' -e 's/@''PACKAGE''@/$(PACKAGE)/g' $< > t-$@
+ mv t-$@ $@
+
+CLEANFILES += charset.alias ref-add.sed ref-del.sed
+
+EXTRA_DIST += config.charset ref-add.sin ref-del.sin
+
+## end gnulib module localcharset
+
+## begin gnulib module long-options
+
+
+EXTRA_DIST += long-options.c long-options.h
+
+EXTRA_libcoreutils_a_SOURCES += long-options.c
+
+## end gnulib module long-options
+
+## begin gnulib module lstat
+
+
+EXTRA_DIST += lstat.c lstat.h
+
+EXTRA_libcoreutils_a_SOURCES += lstat.c
+
+## end gnulib module lstat
+
+## begin gnulib module malloc
+
+
+EXTRA_DIST += malloc.c
+
+EXTRA_libcoreutils_a_SOURCES += malloc.c
+
+## end gnulib module malloc
+
+## begin gnulib module mbchar
+
+libcoreutils_a_SOURCES += mbchar.c
+
+EXTRA_DIST += mbchar.h
+
+## end gnulib module mbchar
+
+## begin gnulib module mbscasecmp
+
+libcoreutils_a_SOURCES += mbscasecmp.c
+
+## end gnulib module mbscasecmp
+
+## begin gnulib module mbswidth
+
+libcoreutils_a_SOURCES += mbswidth.h mbswidth.c
+
+## end gnulib module mbswidth
+
+## begin gnulib module mbuiter
+
+libcoreutils_a_SOURCES += mbuiter.h
+
+## end gnulib module mbuiter
+
+## begin gnulib module md5
+
+
+EXTRA_DIST += md5.c md5.h
+
+EXTRA_libcoreutils_a_SOURCES += md5.c
+
+## end gnulib module md5
+
+## begin gnulib module memcasecmp
+
+
+EXTRA_DIST += memcasecmp.c memcasecmp.h
+
+EXTRA_libcoreutils_a_SOURCES += memcasecmp.c
+
+## end gnulib module memcasecmp
+
+## begin gnulib module memchr
+
+
+EXTRA_DIST += memchr.c
+
+EXTRA_libcoreutils_a_SOURCES += memchr.c
+
+## end gnulib module memchr
+
+## begin gnulib module memcmp
+
+
+EXTRA_DIST += memcmp.c
+
+EXTRA_libcoreutils_a_SOURCES += memcmp.c
+
+## end gnulib module memcmp
+
+## begin gnulib module memcoll
+
+
+EXTRA_DIST += memcoll.c memcoll.h
+
+EXTRA_libcoreutils_a_SOURCES += memcoll.c
+
+## end gnulib module memcoll
+
+## begin gnulib module memcpy
+
+
+EXTRA_DIST += memcpy.c
+
+EXTRA_libcoreutils_a_SOURCES += memcpy.c
+
+## end gnulib module memcpy
+
+## begin gnulib module memmove
+
+
+EXTRA_DIST += memmove.c
+
+EXTRA_libcoreutils_a_SOURCES += memmove.c
+
+## end gnulib module memmove
+
+## begin gnulib module mempcpy
+
+
+EXTRA_DIST += mempcpy.c
+
+EXTRA_libcoreutils_a_SOURCES += mempcpy.c
+
+## end gnulib module mempcpy
+
+## begin gnulib module memrchr
+
+
+EXTRA_DIST += memrchr.c
+
+EXTRA_libcoreutils_a_SOURCES += memrchr.c
+
+## end gnulib module memrchr
+
+## begin gnulib module memset
+
+
+EXTRA_DIST += memset.c
+
+EXTRA_libcoreutils_a_SOURCES += memset.c
+
+## end gnulib module memset
+
+## begin gnulib module mkancesdirs
+
+
+EXTRA_DIST += mkancesdirs.c mkancesdirs.h
+
+EXTRA_libcoreutils_a_SOURCES += mkancesdirs.c
+
+## end gnulib module mkancesdirs
+
+## begin gnulib module mkdir
+
+
+EXTRA_DIST += mkdir.c
+
+EXTRA_libcoreutils_a_SOURCES += mkdir.c
+
+## end gnulib module mkdir
+
+## begin gnulib module mkdir-p
+
+
+EXTRA_DIST += dirchownmod.c dirchownmod.h mkdir-p.c mkdir-p.h
+
+EXTRA_libcoreutils_a_SOURCES += dirchownmod.c mkdir-p.c
+
+## end gnulib module mkdir-p
+
+## begin gnulib module mkstemp
+
+
+EXTRA_DIST += mkstemp.c
+
+EXTRA_libcoreutils_a_SOURCES += mkstemp.c
+
+## end gnulib module mkstemp
+
+## begin gnulib module mktime
+
+
+EXTRA_DIST += mktime.c
+
+EXTRA_libcoreutils_a_SOURCES += mktime.c
+
+## end gnulib module mktime
+
+## begin gnulib module modechange
+
+
+EXTRA_DIST += modechange.c modechange.h
+
+EXTRA_libcoreutils_a_SOURCES += modechange.c
+
+## end gnulib module modechange
+
+## begin gnulib module mountlist
+
+
+EXTRA_DIST += mountlist.c mountlist.h
+
+EXTRA_libcoreutils_a_SOURCES += mountlist.c
+
+## end gnulib module mountlist
+
+## begin gnulib module mpsort
+
+
+EXTRA_DIST += mpsort.c mpsort.h
+
+EXTRA_libcoreutils_a_SOURCES += mpsort.c
+
+## end gnulib module mpsort
+
+## begin gnulib module nanosleep
+
+
+EXTRA_DIST += nanosleep.c
+
+EXTRA_libcoreutils_a_SOURCES += nanosleep.c
+
+## end gnulib module nanosleep
+
+## begin gnulib module netinet_in
+
+BUILT_SOURCES += $(NETINET_IN_H)
+
+# We need the following in order to create <netinet/in.h> when the system
+# doesn't have one.
+netinet/in.h:
+ @MKDIR_P@ netinet
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''ABSOLUTE_NETINET_IN_H''@|$(ABSOLUTE_NETINET_IN_H)|g' \
+ -e 's|@''HAVE_NETINET_IN_H''@|$(HAVE_NETINET_IN_H)|g' \
+ < $(srcdir)/netinet_in_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += netinet/in.h netinet/in.h-t
+MOSTLYCLEANDIRS += netinet
+
+EXTRA_DIST += netinet_in_.h
+
+## end gnulib module netinet_in
+
+## begin gnulib module obstack
+
+
+EXTRA_DIST += obstack.c obstack.h
+
+EXTRA_libcoreutils_a_SOURCES += obstack.c
+
+## end gnulib module obstack
+
+## begin gnulib module openat
+
+
+EXTRA_DIST += at-func.c fchmodat.c fchownat.c fstatat.c mkdirat.c openat-die.c openat-priv.h openat-proc.c openat.c openat.h
+
+EXTRA_libcoreutils_a_SOURCES += at-func.c fchmodat.c fchownat.c fstatat.c mkdirat.c openat-die.c openat-proc.c openat.c
+
+## end gnulib module openat
+
+## begin gnulib module pathmax
+
+
+EXTRA_DIST += pathmax.h
+
+## end gnulib module pathmax
+
+## begin gnulib module physmem
+
+
+EXTRA_DIST += physmem.c physmem.h
+
+EXTRA_libcoreutils_a_SOURCES += physmem.c
+
+## end gnulib module physmem
+
+## begin gnulib module posixtm
+
+
+EXTRA_DIST += posixtm.c posixtm.h
+
+EXTRA_libcoreutils_a_SOURCES += posixtm.c
+
+## end gnulib module posixtm
+
+## begin gnulib module posixver
+
+
+EXTRA_DIST += posixver.c posixver.h
+
+EXTRA_libcoreutils_a_SOURCES += posixver.c
+
+## end gnulib module posixver
+
+## begin gnulib module putenv
+
+
+EXTRA_DIST += putenv.c
+
+EXTRA_libcoreutils_a_SOURCES += putenv.c
+
+## end gnulib module putenv
+
+## begin gnulib module quote
+
+
+EXTRA_DIST += quote.c quote.h
+
+EXTRA_libcoreutils_a_SOURCES += quote.c
+
+## end gnulib module quote
+
+## begin gnulib module quotearg
+
+
+EXTRA_DIST += quotearg.c quotearg.h
+
+EXTRA_libcoreutils_a_SOURCES += quotearg.c
+
+## end gnulib module quotearg
+
+## begin gnulib module raise
+
+
+EXTRA_DIST += raise.c
+
+EXTRA_libcoreutils_a_SOURCES += raise.c
+
+## end gnulib module raise
+
+## begin gnulib module readlink
+
+
+EXTRA_DIST += readlink.c
+
+EXTRA_libcoreutils_a_SOURCES += readlink.c
+
+## end gnulib module readlink
+
+## begin gnulib module readtokens
+
+
+EXTRA_DIST += readtokens.c readtokens.h
+
+EXTRA_libcoreutils_a_SOURCES += readtokens.c
+
+## end gnulib module readtokens
+
+## begin gnulib module readtokens0
+
+libcoreutils_a_SOURCES += readtokens0.h readtokens0.c
+
+## end gnulib module readtokens0
+
+## begin gnulib module readutmp
+
+
+EXTRA_DIST += readutmp.c readutmp.h
+
+EXTRA_libcoreutils_a_SOURCES += readutmp.c
+
+## end gnulib module readutmp
+
+## begin gnulib module realloc
+
+
+EXTRA_DIST += realloc.c
+
+EXTRA_libcoreutils_a_SOURCES += realloc.c
+
+## end gnulib module realloc
+
+## begin gnulib module regex
+
+
+EXTRA_DIST += regcomp.c regex.c regex.h regex_internal.c regex_internal.h regexec.c
+
+EXTRA_libcoreutils_a_SOURCES += regcomp.c regex.c regex_internal.c regexec.c
+
+## end gnulib module regex
+
+## begin gnulib module rename
+
+
+EXTRA_DIST += rename.c
+
+EXTRA_libcoreutils_a_SOURCES += rename.c
+
+## end gnulib module rename
+
+## begin gnulib module rename-dest-slash
+
+
+EXTRA_DIST += rename-dest-slash.c
+
+EXTRA_libcoreutils_a_SOURCES += rename-dest-slash.c
+
+## end gnulib module rename-dest-slash
+
+## begin gnulib module rmdir
+
+
+EXTRA_DIST += rmdir.c
+
+EXTRA_libcoreutils_a_SOURCES += rmdir.c
+
+## end gnulib module rmdir
+
+## begin gnulib module root-dev-ino
+
+
+EXTRA_DIST += root-dev-ino.c root-dev-ino.h
+
+EXTRA_libcoreutils_a_SOURCES += root-dev-ino.c
+
+## end gnulib module root-dev-ino
+
+## begin gnulib module rpmatch
+
+
+EXTRA_DIST += rpmatch.c
+
+EXTRA_libcoreutils_a_SOURCES += rpmatch.c
+
+## end gnulib module rpmatch
+
+## begin gnulib module safe-read
+
+
+EXTRA_DIST += safe-read.c safe-read.h
+
+EXTRA_libcoreutils_a_SOURCES += safe-read.c
+
+## end gnulib module safe-read
+
+## begin gnulib module safe-write
+
+
+EXTRA_DIST += safe-write.c safe-write.h
+
+EXTRA_libcoreutils_a_SOURCES += safe-write.c
+
+## end gnulib module safe-write
+
+## begin gnulib module same
+
+
+EXTRA_DIST += same.c same.h
+
+EXTRA_libcoreutils_a_SOURCES += same.c
+
+## end gnulib module same
+
+## begin gnulib module same-inode
+
+
+EXTRA_DIST += same-inode.h
+
+## end gnulib module same-inode
+
+## begin gnulib module save-cwd
+
+
+EXTRA_DIST += save-cwd.c save-cwd.h
+
+EXTRA_libcoreutils_a_SOURCES += save-cwd.c
+
+## end gnulib module save-cwd
+
+## begin gnulib module savedir
+
+
+EXTRA_DIST += savedir.c savedir.h
+
+EXTRA_libcoreutils_a_SOURCES += savedir.c
+
+## end gnulib module savedir
+
+## begin gnulib module savewd
+
+libcoreutils_a_SOURCES += savewd.h savewd.c
+
+## end gnulib module savewd
+
+## begin gnulib module setenv
+
+
+EXTRA_DIST += setenv.c setenv.h unsetenv.c
+
+EXTRA_libcoreutils_a_SOURCES += setenv.c unsetenv.c
+
+## end gnulib module setenv
+
+## begin gnulib module settime
+
+
+EXTRA_DIST += settime.c
+
+EXTRA_libcoreutils_a_SOURCES += settime.c
+
+## end gnulib module settime
+
+## begin gnulib module sha1
+
+
+EXTRA_DIST += sha1.c sha1.h
+
+EXTRA_libcoreutils_a_SOURCES += sha1.c
+
+## end gnulib module sha1
+
+## begin gnulib module sig2str
+
+
+EXTRA_DIST += sig2str.c sig2str.h
+
+EXTRA_libcoreutils_a_SOURCES += sig2str.c
+
+## end gnulib module sig2str
+
+## begin gnulib module snprintf
+
+
+EXTRA_DIST += snprintf.c
+
+EXTRA_libcoreutils_a_SOURCES += snprintf.c
+
+## end gnulib module snprintf
+
+## begin gnulib module stat-macros
+
+
+EXTRA_DIST += stat-macros.h
+
+## end gnulib module stat-macros
+
+## begin gnulib module stat-time
+
+
+EXTRA_DIST += stat-time.h
+
+## end gnulib module stat-time
+
+## begin gnulib module stdbool
+
+BUILT_SOURCES += $(STDBOOL_H)
+
+# We need the following in order to create <stdbool.h> when the system
+# doesn't have one that works.
+stdbool.h: stdbool_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += stdbool.h stdbool.h-t
+
+EXTRA_DIST += stdbool_.h
+
+## end gnulib module stdbool
+
+## begin gnulib module stdint
+
+BUILT_SOURCES += $(STDINT_H)
+
+# We need the following in order to create <stdint.h> when the system
+# doesn't have one that works with the given compiler.
+stdint.h: stdint_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+ -e 's|@''ABSOLUTE_STDINT_H''@|$(ABSOLUTE_STDINT_H)|g' \
+ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
+ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
+ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
+ -e 's/@''HAVE_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/g' \
+ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
+ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
+ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
+ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
+ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
+ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
+ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
+ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
+ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
+ < $(srcdir)/stdint_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += stdint.h stdint.h-t
+
+EXTRA_DIST += stdint_.h
+
+## end gnulib module stdint
+
+## begin gnulib module stdio
+
+BUILT_SOURCES += stdio.h
+
+# We need the following in order to create <stdio.h> when the system
+# doesn't have one that works with the given compiler.
+stdio.h: stdio_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''ABSOLUTE_STDIO_H''@|$(ABSOLUTE_STDIO_H)|g' \
+ -e 's|@''GNULIB_FPRINTF_POSIX''@|$(GNULIB_FPRINTF_POSIX)|g' \
+ -e 's|@''GNULIB_PRINTF_POSIX''@|$(GNULIB_PRINTF_POSIX)|g' \
+ -e 's|@''GNULIB_SNPRINTF''@|$(GNULIB_SNPRINTF)|g' \
+ -e 's|@''GNULIB_SPRINTF_POSIX''@|$(GNULIB_SPRINTF_POSIX)|g' \
+ -e 's|@''GNULIB_VFPRINTF_POSIX''@|$(GNULIB_VFPRINTF_POSIX)|g' \
+ -e 's|@''GNULIB_VPRINTF_POSIX''@|$(GNULIB_VPRINTF_POSIX)|g' \
+ -e 's|@''GNULIB_VSNPRINTF''@|$(GNULIB_VSNPRINTF)|g' \
+ -e 's|@''GNULIB_VSPRINTF_POSIX''@|$(GNULIB_VSPRINTF_POSIX)|g' \
+ -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \
+ -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \
+ -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \
+ -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \
+ -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \
+ -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \
+ -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \
+ -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \
+ -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \
+ -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/stdio_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += stdio.h stdio.h-t
+
+EXTRA_DIST += stdio_.h
+
+## end gnulib module stdio
+
+## begin gnulib module stdlib
+
+BUILT_SOURCES += stdlib.h
+
+# We need the following in order to create <stdlib.h> when the system
+# doesn't have one that works with the given compiler.
+stdlib.h: stdlib_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''ABSOLUTE_STDLIB_H''@|$(ABSOLUTE_STDLIB_H)|g' \
+ -e 's|@''GNULIB_GETSUBOPT''@|$(GNULIB_GETSUBOPT)|g' \
+ -e 's|@''GNULIB_MKDTEMP''@|$(GNULIB_MKDTEMP)|g' \
+ -e 's|@''GNULIB_MKSTEMP''@|$(GNULIB_MKSTEMP)|g' \
+ -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \
+ -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \
+ -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/stdlib_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += stdlib.h stdlib.h-t
+
+EXTRA_DIST += stdlib_.h
+
+## end gnulib module stdlib
+
+## begin gnulib module stdlib-safer
+
+
+EXTRA_DIST += mkstemp-safer.c stdlib--.h stdlib-safer.h
+
+EXTRA_libcoreutils_a_SOURCES += mkstemp-safer.c
+
+## end gnulib module stdlib-safer
+
+## begin gnulib module stpcpy
+
+
+EXTRA_DIST += stpcpy.c
+
+EXTRA_libcoreutils_a_SOURCES += stpcpy.c
+
+## end gnulib module stpcpy
+
+## begin gnulib module strcspn
+
+
+EXTRA_DIST += strcspn.c
+
+EXTRA_libcoreutils_a_SOURCES += strcspn.c
+
+## end gnulib module strcspn
+
+## begin gnulib module strdup
+
+
+EXTRA_DIST += strdup.c
+
+EXTRA_libcoreutils_a_SOURCES += strdup.c
+
+## end gnulib module strdup
+
+## begin gnulib module strftime
+
+
+EXTRA_DIST += strftime.c strftime.h
+
+EXTRA_libcoreutils_a_SOURCES += strftime.c
+
+## end gnulib module strftime
+
+## begin gnulib module string
+
+BUILT_SOURCES += string.h
+
+# We need the following in order to create <string.h> when the system
+# doesn't have one that works with the given compiler.
+string.h: string_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''ABSOLUTE_STRING_H''@|$(ABSOLUTE_STRING_H)|g' \
+ -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|g' \
+ -e 's|@''GNULIB_MBSCHR''@|$(GNULIB_MBSCHR)|g' \
+ -e 's|@''GNULIB_MBSRCHR''@|$(GNULIB_MBSRCHR)|g' \
+ -e 's|@''GNULIB_MBSSTR''@|$(GNULIB_MBSSTR)|g' \
+ -e 's|@''GNULIB_MBSCASECMP''@|$(GNULIB_MBSCASECMP)|g' \
+ -e 's|@''GNULIB_MBSNCASECMP''@|$(GNULIB_MBSNCASECMP)|g' \
+ -e 's|@''GNULIB_MBSPCASECMP''@|$(GNULIB_MBSPCASECMP)|g' \
+ -e 's|@''GNULIB_MBSCASESTR''@|$(GNULIB_MBSCASESTR)|g' \
+ -e 's|@''GNULIB_MBSCSPN''@|$(GNULIB_MBSCSPN)|g' \
+ -e 's|@''GNULIB_MBSPBRK''@|$(GNULIB_MBSPBRK)|g' \
+ -e 's|@''GNULIB_MBSSPN''@|$(GNULIB_MBSSPN)|g' \
+ -e 's|@''GNULIB_MBSSEP''@|$(GNULIB_MBSSEP)|g' \
+ -e 's|@''GNULIB_MBSTOK_R''@|$(GNULIB_MBSTOK_R)|g' \
+ -e 's|@''GNULIB_MEMMEM''@|$(GNULIB_MEMMEM)|g' \
+ -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \
+ -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|g' \
+ -e 's|@''GNULIB_STPCPY''@|$(GNULIB_STPCPY)|g' \
+ -e 's|@''GNULIB_STPNCPY''@|$(GNULIB_STPNCPY)|g' \
+ -e 's|@''GNULIB_STRCHRNUL''@|$(GNULIB_STRCHRNUL)|g' \
+ -e 's|@''GNULIB_STRDUP''@|$(GNULIB_STRDUP)|g' \
+ -e 's|@''GNULIB_STRNDUP''@|$(GNULIB_STRNDUP)|g' \
+ -e 's|@''GNULIB_STRNLEN''@|$(GNULIB_STRNLEN)|g' \
+ -e 's|@''GNULIB_STRPBRK''@|$(GNULIB_STRPBRK)|g' \
+ -e 's|@''GNULIB_STRSEP''@|$(GNULIB_STRSEP)|g' \
+ -e 's|@''GNULIB_STRCASESTR''@|$(GNULIB_STRCASESTR)|g' \
+ -e 's|@''GNULIB_STRTOK_R''@|$(GNULIB_STRTOK_R)|g' \
+ -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
+ -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
+ -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
+ -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
+ -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+ -e 's|@''HAVE_STRCASECMP''@|$(HAVE_STRCASECMP)|g' \
+ -e 's|@''HAVE_DECL_STRNCASECMP''@|$(HAVE_DECL_STRNCASECMP)|g' \
+ -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+ -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+ -e 's|@''HAVE_STRNDUP''@|$(HAVE_STRNDUP)|g' \
+ -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \
+ -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \
+ -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \
+ -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
+ -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
+ -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/string_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += string.h string.h-t
+
+EXTRA_DIST += string_.h
+
+## end gnulib module string
+
+## begin gnulib module strndup
+
+
+EXTRA_DIST += strndup.c
+
+EXTRA_libcoreutils_a_SOURCES += strndup.c
+
+## end gnulib module strndup
+
+## begin gnulib module strnlen
+
+
+EXTRA_DIST += strnlen.c
+
+EXTRA_libcoreutils_a_SOURCES += strnlen.c
+
+## end gnulib module strnlen
+
+## begin gnulib module strnlen1
+
+libcoreutils_a_SOURCES += strnlen1.h strnlen1.c
+
+## end gnulib module strnlen1
+
+## begin gnulib module strpbrk
+
+
+EXTRA_DIST += strpbrk.c
+
+EXTRA_libcoreutils_a_SOURCES += strpbrk.c
+
+## end gnulib module strpbrk
+
+## begin gnulib module strtod
+
+LIBS += $(POW_LIB)
+
+EXTRA_DIST += strtod.c
+
+EXTRA_libcoreutils_a_SOURCES += strtod.c
+
+## end gnulib module strtod
+
+## begin gnulib module strtoimax
+
+
+EXTRA_DIST += strtoimax.c
+
+EXTRA_libcoreutils_a_SOURCES += strtoimax.c
+
+## end gnulib module strtoimax
+
+## begin gnulib module strtol
+
+
+EXTRA_DIST += strtol.c
+
+EXTRA_libcoreutils_a_SOURCES += strtol.c
+
+## end gnulib module strtol
+
+## begin gnulib module strtoll
+
+
+EXTRA_DIST += strtoll.c
+
+EXTRA_libcoreutils_a_SOURCES += strtoll.c
+
+## end gnulib module strtoll
+
+## begin gnulib module strtoul
+
+
+EXTRA_DIST += strtoul.c
+
+EXTRA_libcoreutils_a_SOURCES += strtoul.c
+
+## end gnulib module strtoul
+
+## begin gnulib module strtoull
+
+
+EXTRA_DIST += strtoull.c
+
+EXTRA_libcoreutils_a_SOURCES += strtoull.c
+
+## end gnulib module strtoull
+
+## begin gnulib module strtoumax
+
+
+EXTRA_DIST += strtoumax.c
+
+EXTRA_libcoreutils_a_SOURCES += strtoumax.c
+
+## end gnulib module strtoumax
+
+## begin gnulib module strverscmp
+
+
+EXTRA_DIST += strverscmp.c strverscmp.h
+
+EXTRA_libcoreutils_a_SOURCES += strverscmp.c
+
+## end gnulib module strverscmp
+
+## begin gnulib module sys_socket
+
+BUILT_SOURCES += $(SYS_SOCKET_H)
+
+# We need the following in order to create <sys/socket.h> when the system
+# doesn't have one that works with the given compiler.
+sys/socket.h: socket_.h
+ @MKDIR_P@ sys
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''ABSOLUTE_SYS_SOCKET_H''@|$(ABSOLUTE_SYS_SOCKET_H)|g' \
+ -e 's|@''HAVE_SYS_SOCKET_H''@|$(HAVE_SYS_SOCKET_H)|g' \
+ -e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \
+ -e 's|@''HAVE_WS2TCPIP_H''@|$(HAVE_WS2TCPIP_H)|g' \
+ < $(srcdir)/socket_.h; \
+ } > $@-t
+ mv -f $@-t $@
+MOSTLYCLEANFILES += sys/socket.h sys/socket.h-t
+MOSTLYCLEANDIRS += sys
+
+EXTRA_DIST += socket_.h
+
+## end gnulib module sys_socket
+
+## begin gnulib module sys_stat
+
+BUILT_SOURCES += $(SYS_STAT_H)
+
+# We need the following in order to create <sys/stat.h> when the system
+# has one that is incomplete.
+sys/stat.h: stat_.h
+ @MKDIR_P@ sys
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''ABSOLUTE_SYS_STAT_H''@|$(ABSOLUTE_SYS_STAT_H)|g' \
+ < $(srcdir)/stat_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += sys/stat.h sys/stat.h-t
+MOSTLYCLEANDIRS += sys
+
+EXTRA_DIST += stat_.h
+
+## end gnulib module sys_stat
+
+## begin gnulib module sys_time
+
+BUILT_SOURCES += $(SYS_TIME_H)
+
+# We need the following in order to create <sys/time.h> when the system
+# doesn't have one that works with the given compiler.
+sys/time.h: sys_time_.h
+ @MKDIR_P@ sys
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_SYS_TIME_H''@/$(HAVE_SYS_TIME_H)/g' \
+ -e 's|@''ABSOLUTE_SYS_TIME_H''@|$(ABSOLUTE_SYS_TIME_H)|g' \
+ -e 's/@''REPLACE_GETTIMEOFDAY''@/$(REPLACE_GETTIMEOFDAY)/g' \
+ -e 's/@''HAVE_STRUCT_TIMEVAL''@/$(HAVE_STRUCT_TIMEVAL)/g' \
+ < $(srcdir)/sys_time_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += sys/time.h sys/time.h-t
+
+EXTRA_DIST += sys_time_.h
+
+## end gnulib module sys_time
+
+## begin gnulib module tempname
+
+
+EXTRA_DIST += tempname.c tempname.h
+
+EXTRA_libcoreutils_a_SOURCES += tempname.c
+
+## end gnulib module tempname
+
+## begin gnulib module time
+
+BUILT_SOURCES += time.h
+
+# We need the following in order to create <time.h> when the system
+# doesn't have one that works with the given compiler.
+time.h: time_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@ABSOLUTE_TIME_H''@|$(ABSOLUTE_TIME_H)|g' \
+ -e 's|@REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \
+ -e 's|@REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \
+ -e 's|@REPLACE_STRPTIME''@|$(REPLACE_STRPTIME)|g' \
+ -e 's|@REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \
+ -e 's|@SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
+ -e 's|@TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
+ < $(srcdir)/time_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += time.h time.h-t
+
+EXTRA_DIST += time_.h
+
+## end gnulib module time
+
+## begin gnulib module time_r
+
+
+EXTRA_DIST += time_r.c
+
+EXTRA_libcoreutils_a_SOURCES += time_r.c
+
+## end gnulib module time_r
+
+## begin gnulib module timespec
+
+
+EXTRA_DIST += timespec.h
+
+## end gnulib module timespec
+
+## begin gnulib module unicodeio
+
+libcoreutils_a_SOURCES += unicodeio.h unicodeio.c
+
+## end gnulib module unicodeio
+
+## begin gnulib module unistd
+
+BUILT_SOURCES += unistd.h
+
+# We need the following in order to create an empty placeholder for
+# <unistd.h> when the system doesn't have one.
+unistd.h: unistd_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
+ -e 's|@''ABSOLUTE_UNISTD_H''@|$(ABSOLUTE_UNISTD_H)|g' \
+ -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
+ -e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \
+ -e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \
+ -e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \
+ -e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \
+ -e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \
+ -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
+ -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
+ -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
+ -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
+ -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
+ -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
+ -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \
+ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
+ < $(srcdir)/unistd_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += unistd.h unistd.h-t
+
+EXTRA_DIST += unistd_.h
+
+## end gnulib module unistd
+
+## begin gnulib module unistd-safer
+
+
+EXTRA_DIST += dup-safer.c fd-safer.c pipe-safer.c unistd--.h unistd-safer.h
+
+EXTRA_libcoreutils_a_SOURCES += dup-safer.c fd-safer.c pipe-safer.c
+
+## end gnulib module unistd-safer
+
+## begin gnulib module unlinkdir
+
+
+EXTRA_DIST += unlinkdir.c unlinkdir.h
+
+EXTRA_libcoreutils_a_SOURCES += unlinkdir.c
+
+## end gnulib module unlinkdir
+
+## begin gnulib module unlocked-io
+
+
+EXTRA_DIST += unlocked-io.h
+
+## end gnulib module unlocked-io
+
+## begin gnulib module userspec
+
+
+EXTRA_DIST += inttostr.h userspec.c userspec.h
+
+EXTRA_libcoreutils_a_SOURCES += userspec.c
+
+## end gnulib module userspec
+
+## begin gnulib module utime
+
+
+EXTRA_DIST += utime.c
+
+EXTRA_libcoreutils_a_SOURCES += utime.c
+
+## end gnulib module utime
+
+## begin gnulib module utimecmp
+
+
+EXTRA_DIST += utimecmp.c utimecmp.h
+
+EXTRA_libcoreutils_a_SOURCES += utimecmp.c
+
+## end gnulib module utimecmp
+
+## begin gnulib module utimens
+
+
+EXTRA_DIST += utimens.c utimens.h
+
+EXTRA_libcoreutils_a_SOURCES += utimens.c
+
+## end gnulib module utimens
+
+## begin gnulib module vasnprintf
+
+
+EXTRA_DIST += asnprintf.c printf-args.c printf-args.h printf-parse.c printf-parse.h vasnprintf.c vasnprintf.h
+
+EXTRA_libcoreutils_a_SOURCES += asnprintf.c printf-args.c printf-parse.c vasnprintf.c
+
+## end gnulib module vasnprintf
+
+## begin gnulib module vasprintf
+
+
+EXTRA_DIST += asprintf.c vasprintf.c vasprintf.h
+
+EXTRA_libcoreutils_a_SOURCES += asprintf.c vasprintf.c
+
+## end gnulib module vasprintf
+
+## begin gnulib module verify
+
+libcoreutils_a_SOURCES += verify.h
+
+## end gnulib module verify
+
+## begin gnulib module version-etc
+
+libcoreutils_a_SOURCES += version-etc.h version-etc.c
+
+## end gnulib module version-etc
+
+## begin gnulib module version-etc-fsf
+
+libcoreutils_a_SOURCES += version-etc-fsf.c
+
+## end gnulib module version-etc-fsf
+
+## begin gnulib module wchar
+
+BUILT_SOURCES += $(WCHAR_H)
+
+# We need the following in order to create <wchar.h> when the system
+# version does not work standalone.
+wchar.h: wchar_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''ABSOLUTE_WCHAR_H''@|$(ABSOLUTE_WCHAR_H)|g' \
+ < $(srcdir)/wchar_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += wchar.h wchar.h-t
+
+EXTRA_DIST += wchar_.h
+
+## end gnulib module wchar
+
+## begin gnulib module wctype
+
+BUILT_SOURCES += $(WCTYPE_H)
+
+# We need the following in order to create <wctype.h> when the system
+# doesn't have one that works with the given compiler.
+wctype.h: wctype_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
+ -e 's|@''ABSOLUTE_WCTYPE_H''@|$(ABSOLUTE_WCTYPE_H)|g' \
+ -e 's/@''HAVE_WCTYPE_CTMP_BUG''@/$(HAVE_WCTYPE_CTMP_BUG)/g' \
+ -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
+ < $(srcdir)/wctype_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += wctype.h wctype.h-t
+
+EXTRA_DIST += wctype_.h
+
+## end gnulib module wctype
+
+## begin gnulib module wcwidth
+
+libcoreutils_a_SOURCES += wcwidth.h
+
+## end gnulib module wcwidth
+
+## begin gnulib module xalloc
+
+
+EXTRA_DIST += xalloc.h xmalloc.c
+
+EXTRA_libcoreutils_a_SOURCES += xmalloc.c
+
+## end gnulib module xalloc
+
+## begin gnulib module xalloc-die
+
+libcoreutils_a_SOURCES += xalloc-die.c
+
+## end gnulib module xalloc-die
+
+## begin gnulib module xgetcwd
+
+
+EXTRA_DIST += xgetcwd.c xgetcwd.h
+
+EXTRA_libcoreutils_a_SOURCES += xgetcwd.c
+
+## end gnulib module xgetcwd
+
+## begin gnulib module xgethostname
+
+libcoreutils_a_SOURCES += xgethostname.h xgethostname.c
+
+## end gnulib module xgethostname
+
+## begin gnulib module xmemcoll
+
+libcoreutils_a_SOURCES += xmemcoll.h xmemcoll.c
+
+## end gnulib module xmemcoll
+
+## begin gnulib module xnanosleep
+
+
+EXTRA_DIST += xnanosleep.c xnanosleep.h
+
+EXTRA_libcoreutils_a_SOURCES += xnanosleep.c
+
+## end gnulib module xnanosleep
+
+## begin gnulib module xreadlink
+
+libcoreutils_a_SOURCES += xreadlink.c
+
+EXTRA_DIST += xreadlink.h
+
+## end gnulib module xreadlink
+
+## begin gnulib module xreadlink-with-size
+
+libcoreutils_a_SOURCES += xreadlink-with-size.c
+
+EXTRA_DIST += xreadlink.h
+
+## end gnulib module xreadlink-with-size
+
+## begin gnulib module xstrndup
+
+libcoreutils_a_SOURCES += xstrndup.h xstrndup.c
+
+## end gnulib module xstrndup
+
+## begin gnulib module xstrtod
+
+
+EXTRA_DIST += xstrtod.c xstrtod.h
+
+EXTRA_libcoreutils_a_SOURCES += xstrtod.c
+
+## end gnulib module xstrtod
+
+## begin gnulib module xstrtoimax
+
+libcoreutils_a_SOURCES += xstrtoimax.c
+
+## end gnulib module xstrtoimax
+
+## begin gnulib module xstrtol
+
+
+EXTRA_DIST += xstrtol.c xstrtol.h xstrtoul.c
+
+EXTRA_libcoreutils_a_SOURCES += xstrtol.c xstrtoul.c
+
+## end gnulib module xstrtol
+
+## begin gnulib module xstrtold
+
+
+EXTRA_DIST += xstrtod.c xstrtod.h xstrtold.c
+
+EXTRA_libcoreutils_a_SOURCES += xstrtod.c xstrtold.c
+
+## end gnulib module xstrtold
+
+## begin gnulib module xstrtoumax
+
+libcoreutils_a_SOURCES += xstrtoumax.c
+
+## end gnulib module xstrtoumax
+
+## begin gnulib module yesno
+
+
+EXTRA_DIST += yesno.c yesno.h
+
+EXTRA_libcoreutils_a_SOURCES += yesno.c
+
+## end gnulib module yesno
+
+
+mostlyclean-local: mostlyclean-generic
+ @for dir in '' $(MOSTLYCLEANDIRS); do \
+ if test -n "$$dir" && test -d $$dir; then \
+ echo "rmdir $$dir"; rmdir $$dir; \
+ fi; \
+ done
diff --git a/lib/group-member.c b/lib/group-member.c
new file mode 100644
index 0000000..0187026
--- /dev/null
+++ b/lib/group-member.c
@@ -0,0 +1,133 @@
+/* group-member.c -- determine whether group id is in calling user's group list
+
+ Copyright (C) 1994, 1997, 1998, 2003, 2005, 2006 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "group-member.h"
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <stdlib.h>
+
+#include <unistd.h>
+
+#include "xalloc.h"
+
+struct group_info
+ {
+ int n_groups;
+ GETGROUPS_T *group;
+ };
+
+#if HAVE_GETGROUPS
+
+static void
+free_group_info (struct group_info const *g)
+{
+ free (g->group);
+}
+
+static bool
+get_group_info (struct group_info *gi)
+{
+ int n_groups;
+ int n_group_slots = getgroups (0, NULL);
+ GETGROUPS_T *group;
+
+ if (n_group_slots < 0)
+ return false;
+
+ /* Avoid xnmalloc, as it goes awry when SIZE_MAX < n_group_slots. */
+ if (xalloc_oversized (n_group_slots, sizeof *group))
+ xalloc_die ();
+ group = xmalloc (n_group_slots * sizeof *group);
+ n_groups = getgroups (n_group_slots, group);
+
+ /* In case of error, the user loses. */
+ if (n_groups < 0)
+ {
+ free (group);
+ return false;
+ }
+
+ gi->n_groups = n_groups;
+ gi->group = group;
+
+ return true;
+}
+
+#endif /* not HAVE_GETGROUPS */
+
+/* Return non-zero if GID is one that we have in our groups list.
+ If there is no getgroups function, return non-zero if GID matches
+ either of the current or effective group IDs. */
+
+int
+group_member (gid_t gid)
+{
+#ifndef HAVE_GETGROUPS
+ return ((gid == getgid ()) || (gid == getegid ()));
+#else
+ int i;
+ int found;
+ struct group_info gi;
+
+ if (! get_group_info (&gi))
+ return 0;
+
+ /* Search through the list looking for GID. */
+ found = 0;
+ for (i = 0; i < gi.n_groups; i++)
+ {
+ if (gid == gi.group[i])
+ {
+ found = 1;
+ break;
+ }
+ }
+
+ free_group_info (&gi);
+
+ return found;
+#endif /* HAVE_GETGROUPS */
+}
+
+#ifdef TEST
+
+char *program_name;
+
+int
+main (int argc, char **argv)
+{
+ int i;
+
+ program_name = argv[0];
+
+ for (i=1; i<argc; i++)
+ {
+ gid_t gid;
+
+ gid = atoi (argv[i]);
+ printf ("%d: %s\n", gid, group_member (gid) ? "yes" : "no");
+ }
+ exit (0);
+}
+
+#endif /* TEST */
diff --git a/lib/group-member.h b/lib/group-member.h
new file mode 100644
index 0000000..30f85e9
--- /dev/null
+++ b/lib/group-member.h
@@ -0,0 +1,26 @@
+/* Determine whether group id is in calling user's group list.
+
+ Copyright (C) 1994, 1997, 2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef GROUP_MEMBER_H_
+# define GROUP_MEMBER_H_ 1
+
+# include <sys/types.h>
+
+int group_member (gid_t);
+
+#endif /* GROUP_MEMBER_H_ */
diff --git a/lib/hard-locale.c b/lib/hard-locale.c
new file mode 100644
index 0000000..dd2ba48
--- /dev/null
+++ b/lib/hard-locale.c
@@ -0,0 +1,71 @@
+/* hard-locale.c -- Determine whether a locale is hard.
+
+ Copyright (C) 1997, 1998, 1999, 2002, 2003, 2004, 2006, 2007 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "hard-locale.h"
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef __GLIBC__
+# define GLIBC_VERSION __GLIBC__
+#else
+# define GLIBC_VERSION 0
+#endif
+
+/* Return true if the current CATEGORY locale is hard, i.e. if you
+ can't get away with assuming traditional C or POSIX behavior. */
+bool
+hard_locale (int category)
+{
+ bool hard = true;
+ char const *p = setlocale (category, NULL);
+
+ if (p)
+ {
+ if (2 <= GLIBC_VERSION)
+ {
+ if (strcmp (p, "C") == 0 || strcmp (p, "POSIX") == 0)
+ hard = false;
+ }
+ else
+ {
+ char *locale = strdup (p);
+ if (locale)
+ {
+ /* Temporarily set the locale to the "C" and "POSIX" locales
+ to find their names, so that we can determine whether one
+ or the other is the caller's locale. */
+ if (((p = setlocale (category, "C"))
+ && strcmp (p, locale) == 0)
+ || ((p = setlocale (category, "POSIX"))
+ && strcmp (p, locale) == 0))
+ hard = false;
+
+ /* Restore the caller's locale. */
+ setlocale (category, locale);
+ free (locale);
+ }
+ }
+ }
+
+ return hard;
+}
diff --git a/lib/hard-locale.h b/lib/hard-locale.h
new file mode 100644
index 0000000..c5cedc0
--- /dev/null
+++ b/lib/hard-locale.h
@@ -0,0 +1,26 @@
+/* Determine whether a locale is hard.
+
+ Copyright (C) 1999, 2003, 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef HARD_LOCALE_H_
+# define HARD_LOCALE_H_ 1
+
+# include <stdbool.h>
+
+bool hard_locale (int);
+
+#endif /* HARD_LOCALE_H_ */
diff --git a/lib/hash-pjw.c b/lib/hash-pjw.c
new file mode 100644
index 0000000..bd94036
--- /dev/null
+++ b/lib/hash-pjw.c
@@ -0,0 +1,41 @@
+/* hash-pjw.c -- compute a hash value from a NUL-terminated string.
+
+ Copyright (C) 2001, 2003, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "hash-pjw.h"
+
+#include <limits.h>
+
+#define SIZE_BITS (sizeof (size_t) * CHAR_BIT)
+
+/* A hash function for NUL-terminated char* strings using
+ the method described by Bruno Haible.
+ See http://www.haible.de/bruno/hashfunc.html. */
+
+size_t
+hash_pjw (const void *x, size_t tablesize)
+{
+ const char *s;
+ size_t h = 0;
+
+ for (s = x; *s; s++)
+ h = *s + ((h << 9) | (h >> (SIZE_BITS - 9)));
+
+ return h % tablesize;
+}
diff --git a/lib/hash-pjw.h b/lib/hash-pjw.h
new file mode 100644
index 0000000..44b5440
--- /dev/null
+++ b/lib/hash-pjw.h
@@ -0,0 +1,25 @@
+/* hash-pjw.h -- declaration for a simple hash function
+ Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU 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; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <stddef.h>
+
+/* Compute a hash code for a NUL-terminated string starting at X,
+ and return the hash code modulo TABLESIZE.
+ The result is platform dependent: it depends on the size of the 'size_t'
+ type and on the signedness of the 'char' type. */
+extern size_t hash_pjw (void const *x, size_t tablesize);
diff --git a/lib/hash.c b/lib/hash.c
new file mode 100644
index 0000000..f4ab12f
--- /dev/null
+++ b/lib/hash.c
@@ -0,0 +1,1048 @@
+/* hash - hashing table processing.
+
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006 Free
+ Software Foundation, Inc.
+
+ Written by Jim Meyering, 1992.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* A generic hash table package. */
+
+/* Define USE_OBSTACK to 1 if you want the allocator to use obstacks instead
+ of malloc. If you change USE_OBSTACK, you have to recompile! */
+
+#include <config.h>
+
+#include "hash.h"
+#include "xalloc.h"
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#if USE_OBSTACK
+# include "obstack.h"
+# ifndef obstack_chunk_alloc
+# define obstack_chunk_alloc malloc
+# endif
+# ifndef obstack_chunk_free
+# define obstack_chunk_free free
+# endif
+#endif
+
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+
+struct hash_table
+ {
+ /* The array of buckets starts at BUCKET and extends to BUCKET_LIMIT-1,
+ for a possibility of N_BUCKETS. Among those, N_BUCKETS_USED buckets
+ are not empty, there are N_ENTRIES active entries in the table. */
+ struct hash_entry *bucket;
+ struct hash_entry const *bucket_limit;
+ size_t n_buckets;
+ size_t n_buckets_used;
+ size_t n_entries;
+
+ /* Tuning arguments, kept in a physicaly separate structure. */
+ const Hash_tuning *tuning;
+
+ /* Three functions are given to `hash_initialize', see the documentation
+ block for this function. In a word, HASHER randomizes a user entry
+ into a number up from 0 up to some maximum minus 1; COMPARATOR returns
+ true if two user entries compare equally; and DATA_FREER is the cleanup
+ function for a user entry. */
+ Hash_hasher hasher;
+ Hash_comparator comparator;
+ Hash_data_freer data_freer;
+
+ /* A linked list of freed struct hash_entry structs. */
+ struct hash_entry *free_entry_list;
+
+#if USE_OBSTACK
+ /* Whenever obstacks are used, it is possible to allocate all overflowed
+ entries into a single stack, so they all can be freed in a single
+ operation. It is not clear if the speedup is worth the trouble. */
+ struct obstack entry_stack;
+#endif
+ };
+
+/* A hash table contains many internal entries, each holding a pointer to
+ some user provided data (also called a user entry). An entry indistinctly
+ refers to both the internal entry and its associated user entry. A user
+ entry contents may be hashed by a randomization function (the hashing
+ function, or just `hasher' for short) into a number (or `slot') between 0
+ and the current table size. At each slot position in the hash table,
+ starts a linked chain of entries for which the user data all hash to this
+ slot. A bucket is the collection of all entries hashing to the same slot.
+
+ A good `hasher' function will distribute entries rather evenly in buckets.
+ In the ideal case, the length of each bucket is roughly the number of
+ entries divided by the table size. Finding the slot for a data is usually
+ done in constant time by the `hasher', and the later finding of a precise
+ entry is linear in time with the size of the bucket. Consequently, a
+ larger hash table size (that is, a larger number of buckets) is prone to
+ yielding shorter chains, *given* the `hasher' function behaves properly.
+
+ Long buckets slow down the lookup algorithm. One might use big hash table
+ sizes in hope to reduce the average length of buckets, but this might
+ become inordinate, as unused slots in the hash table take some space. The
+ best bet is to make sure you are using a good `hasher' function (beware
+ that those are not that easy to write! :-), and to use a table size
+ larger than the actual number of entries. */
+
+/* If an insertion makes the ratio of nonempty buckets to table size larger
+ than the growth threshold (a number between 0.0 and 1.0), then increase
+ the table size by multiplying by the growth factor (a number greater than
+ 1.0). The growth threshold defaults to 0.8, and the growth factor
+ defaults to 1.414, meaning that the table will have doubled its size
+ every second time 80% of the buckets get used. */
+#define DEFAULT_GROWTH_THRESHOLD 0.8
+#define DEFAULT_GROWTH_FACTOR 1.414
+
+/* If a deletion empties a bucket and causes the ratio of used buckets to
+ table size to become smaller than the shrink threshold (a number between
+ 0.0 and 1.0), then shrink the table by multiplying by the shrink factor (a
+ number greater than the shrink threshold but smaller than 1.0). The shrink
+ threshold and factor default to 0.0 and 1.0, meaning that the table never
+ shrinks. */
+#define DEFAULT_SHRINK_THRESHOLD 0.0
+#define DEFAULT_SHRINK_FACTOR 1.0
+
+/* Use this to initialize or reset a TUNING structure to
+ some sensible values. */
+static const Hash_tuning default_tuning =
+ {
+ DEFAULT_SHRINK_THRESHOLD,
+ DEFAULT_SHRINK_FACTOR,
+ DEFAULT_GROWTH_THRESHOLD,
+ DEFAULT_GROWTH_FACTOR,
+ false
+ };
+
+/* Information and lookup. */
+
+/* The following few functions provide information about the overall hash
+ table organization: the number of entries, number of buckets and maximum
+ length of buckets. */
+
+/* Return the number of buckets in the hash table. The table size, the total
+ number of buckets (used plus unused), or the maximum number of slots, are
+ the same quantity. */
+
+size_t
+hash_get_n_buckets (const Hash_table *table)
+{
+ return table->n_buckets;
+}
+
+/* Return the number of slots in use (non-empty buckets). */
+
+size_t
+hash_get_n_buckets_used (const Hash_table *table)
+{
+ return table->n_buckets_used;
+}
+
+/* Return the number of active entries. */
+
+size_t
+hash_get_n_entries (const Hash_table *table)
+{
+ return table->n_entries;
+}
+
+/* Return the length of the longest chain (bucket). */
+
+size_t
+hash_get_max_bucket_length (const Hash_table *table)
+{
+ struct hash_entry const *bucket;
+ size_t max_bucket_length = 0;
+
+ for (bucket = table->bucket; bucket < table->bucket_limit; bucket++)
+ {
+ if (bucket->data)
+ {
+ struct hash_entry const *cursor = bucket;
+ size_t bucket_length = 1;
+
+ while (cursor = cursor->next, cursor)
+ bucket_length++;
+
+ if (bucket_length > max_bucket_length)
+ max_bucket_length = bucket_length;
+ }
+ }
+
+ return max_bucket_length;
+}
+
+/* Do a mild validation of a hash table, by traversing it and checking two
+ statistics. */
+
+bool
+hash_table_ok (const Hash_table *table)
+{
+ struct hash_entry const *bucket;
+ size_t n_buckets_used = 0;
+ size_t n_entries = 0;
+
+ for (bucket = table->bucket; bucket < table->bucket_limit; bucket++)
+ {
+ if (bucket->data)
+ {
+ struct hash_entry const *cursor = bucket;
+
+ /* Count bucket head. */
+ n_buckets_used++;
+ n_entries++;
+
+ /* Count bucket overflow. */
+ while (cursor = cursor->next, cursor)
+ n_entries++;
+ }
+ }
+
+ if (n_buckets_used == table->n_buckets_used && n_entries == table->n_entries)
+ return true;
+
+ return false;
+}
+
+void
+hash_print_statistics (const Hash_table *table, FILE *stream)
+{
+ size_t n_entries = hash_get_n_entries (table);
+ size_t n_buckets = hash_get_n_buckets (table);
+ size_t n_buckets_used = hash_get_n_buckets_used (table);
+ size_t max_bucket_length = hash_get_max_bucket_length (table);
+
+ fprintf (stream, "# entries: %lu\n", (unsigned long int) n_entries);
+ fprintf (stream, "# buckets: %lu\n", (unsigned long int) n_buckets);
+ fprintf (stream, "# buckets used: %lu (%.2f%%)\n",
+ (unsigned long int) n_buckets_used,
+ (100.0 * n_buckets_used) / n_buckets);
+ fprintf (stream, "max bucket length: %lu\n",
+ (unsigned long int) max_bucket_length);
+}
+
+/* If ENTRY matches an entry already in the hash table, return the
+ entry from the table. Otherwise, return NULL. */
+
+void *
+hash_lookup (const Hash_table *table, const void *entry)
+{
+ struct hash_entry const *bucket
+ = table->bucket + table->hasher (entry, table->n_buckets);
+ struct hash_entry const *cursor;
+
+ if (! (bucket < table->bucket_limit))
+ abort ();
+
+ if (bucket->data == NULL)
+ return NULL;
+
+ for (cursor = bucket; cursor; cursor = cursor->next)
+ if (table->comparator (entry, cursor->data))
+ return cursor->data;
+
+ return NULL;
+}
+
+/* Walking. */
+
+/* The functions in this page traverse the hash table and process the
+ contained entries. For the traversal to work properly, the hash table
+ should not be resized nor modified while any particular entry is being
+ processed. In particular, entries should not be added or removed. */
+
+/* Return the first data in the table, or NULL if the table is empty. */
+
+void *
+hash_get_first (const Hash_table *table)
+{
+ struct hash_entry const *bucket;
+
+ if (table->n_entries == 0)
+ return NULL;
+
+ for (bucket = table->bucket; ; bucket++)
+ if (! (bucket < table->bucket_limit))
+ abort ();
+ else if (bucket->data)
+ return bucket->data;
+}
+
+/* Return the user data for the entry following ENTRY, where ENTRY has been
+ returned by a previous call to either `hash_get_first' or `hash_get_next'.
+ Return NULL if there are no more entries. */
+
+void *
+hash_get_next (const Hash_table *table, const void *entry)
+{
+ struct hash_entry const *bucket
+ = table->bucket + table->hasher (entry, table->n_buckets);
+ struct hash_entry const *cursor;
+
+ if (! (bucket < table->bucket_limit))
+ abort ();
+
+ /* Find next entry in the same bucket. */
+ for (cursor = bucket; cursor; cursor = cursor->next)
+ if (cursor->data == entry && cursor->next)
+ return cursor->next->data;
+
+ /* Find first entry in any subsequent bucket. */
+ while (++bucket < table->bucket_limit)
+ if (bucket->data)
+ return bucket->data;
+
+ /* None found. */
+ return NULL;
+}
+
+/* Fill BUFFER with pointers to active user entries in the hash table, then
+ return the number of pointers copied. Do not copy more than BUFFER_SIZE
+ pointers. */
+
+size_t
+hash_get_entries (const Hash_table *table, void **buffer,
+ size_t buffer_size)
+{
+ size_t counter = 0;
+ struct hash_entry const *bucket;
+ struct hash_entry const *cursor;
+
+ for (bucket = table->bucket; bucket < table->bucket_limit; bucket++)
+ {
+ if (bucket->data)
+ {
+ for (cursor = bucket; cursor; cursor = cursor->next)
+ {
+ if (counter >= buffer_size)
+ return counter;
+ buffer[counter++] = cursor->data;
+ }
+ }
+ }
+
+ return counter;
+}
+
+/* Call a PROCESSOR function for each entry of a hash table, and return the
+ number of entries for which the processor function returned success. A
+ pointer to some PROCESSOR_DATA which will be made available to each call to
+ the processor function. The PROCESSOR accepts two arguments: the first is
+ the user entry being walked into, the second is the value of PROCESSOR_DATA
+ as received. The walking continue for as long as the PROCESSOR function
+ returns nonzero. When it returns zero, the walking is interrupted. */
+
+size_t
+hash_do_for_each (const Hash_table *table, Hash_processor processor,
+ void *processor_data)
+{
+ size_t counter = 0;
+ struct hash_entry const *bucket;
+ struct hash_entry const *cursor;
+
+ for (bucket = table->bucket; bucket < table->bucket_limit; bucket++)
+ {
+ if (bucket->data)
+ {
+ for (cursor = bucket; cursor; cursor = cursor->next)
+ {
+ if (!(*processor) (cursor->data, processor_data))
+ return counter;
+ counter++;
+ }
+ }
+ }
+
+ return counter;
+}
+
+/* Allocation and clean-up. */
+
+/* Return a hash index for a NUL-terminated STRING between 0 and N_BUCKETS-1.
+ This is a convenience routine for constructing other hashing functions. */
+
+#if USE_DIFF_HASH
+
+/* About hashings, Paul Eggert writes to me (FP), on 1994-01-01: "Please see
+ B. J. McKenzie, R. Harries & T. Bell, Selecting a hashing algorithm,
+ Software--practice & experience 20, 2 (Feb 1990), 209-224. Good hash
+ algorithms tend to be domain-specific, so what's good for [diffutils'] io.c
+ may not be good for your application." */
+
+size_t
+hash_string (const char *string, size_t n_buckets)
+{
+# define ROTATE_LEFT(Value, Shift) \
+ ((Value) << (Shift) | (Value) >> ((sizeof (size_t) * CHAR_BIT) - (Shift)))
+# define HASH_ONE_CHAR(Value, Byte) \
+ ((Byte) + ROTATE_LEFT (Value, 7))
+
+ size_t value = 0;
+ unsigned char ch;
+
+ for (; (ch = *string); string++)
+ value = HASH_ONE_CHAR (value, ch);
+ return value % n_buckets;
+
+# undef ROTATE_LEFT
+# undef HASH_ONE_CHAR
+}
+
+#else /* not USE_DIFF_HASH */
+
+/* This one comes from `recode', and performs a bit better than the above as
+ per a few experiments. It is inspired from a hashing routine found in the
+ very old Cyber `snoop', itself written in typical Greg Mansfield style.
+ (By the way, what happened to this excellent man? Is he still alive?) */
+
+size_t
+hash_string (const char *string, size_t n_buckets)
+{
+ size_t value = 0;
+ unsigned char ch;
+
+ for (; (ch = *string); string++)
+ value = (value * 31 + ch) % n_buckets;
+ return value;
+}
+
+#endif /* not USE_DIFF_HASH */
+
+/* Return true if CANDIDATE is a prime number. CANDIDATE should be an odd
+ number at least equal to 11. */
+
+static bool
+is_prime (size_t candidate)
+{
+ size_t divisor = 3;
+ size_t square = divisor * divisor;
+
+ while (square < candidate && (candidate % divisor))
+ {
+ divisor++;
+ square += 4 * divisor;
+ divisor++;
+ }
+
+ return (candidate % divisor ? true : false);
+}
+
+/* Round a given CANDIDATE number up to the nearest prime, and return that
+ prime. Primes lower than 10 are merely skipped. */
+
+static size_t
+next_prime (size_t candidate)
+{
+ /* Skip small primes. */
+ if (candidate < 10)
+ candidate = 10;
+
+ /* Make it definitely odd. */
+ candidate |= 1;
+
+ while (!is_prime (candidate))
+ candidate += 2;
+
+ return candidate;
+}
+
+void
+hash_reset_tuning (Hash_tuning *tuning)
+{
+ *tuning = default_tuning;
+}
+
+/* For the given hash TABLE, check the user supplied tuning structure for
+ reasonable values, and return true if there is no gross error with it.
+ Otherwise, definitively reset the TUNING field to some acceptable default
+ in the hash table (that is, the user loses the right of further modifying
+ tuning arguments), and return false. */
+
+static bool
+check_tuning (Hash_table *table)
+{
+ const Hash_tuning *tuning = table->tuning;
+
+ /* Be a bit stricter than mathematics would require, so that
+ rounding errors in size calculations do not cause allocations to
+ fail to grow or shrink as they should. The smallest allocation
+ is 11 (due to next_prime's algorithm), so an epsilon of 0.1
+ should be good enough. */
+ float epsilon = 0.1f;
+
+ if (epsilon < tuning->growth_threshold
+ && tuning->growth_threshold < 1 - epsilon
+ && 1 + epsilon < tuning->growth_factor
+ && 0 <= tuning->shrink_threshold
+ && tuning->shrink_threshold + epsilon < tuning->shrink_factor
+ && tuning->shrink_factor <= 1
+ && tuning->shrink_threshold + epsilon < tuning->growth_threshold)
+ return true;
+
+ table->tuning = &default_tuning;
+ return false;
+}
+
+/* Allocate and return a new hash table, or NULL upon failure. The initial
+ number of buckets is automatically selected so as to _guarantee_ that you
+ may insert at least CANDIDATE different user entries before any growth of
+ the hash table size occurs. So, if have a reasonably tight a-priori upper
+ bound on the number of entries you intend to insert in the hash table, you
+ may save some table memory and insertion time, by specifying it here. If
+ the IS_N_BUCKETS field of the TUNING structure is true, the CANDIDATE
+ argument has its meaning changed to the wanted number of buckets.
+
+ TUNING points to a structure of user-supplied values, in case some fine
+ tuning is wanted over the default behavior of the hasher. If TUNING is
+ NULL, the default tuning parameters are used instead.
+
+ The user-supplied HASHER function should be provided. It accepts two
+ arguments ENTRY and TABLE_SIZE. It computes, by hashing ENTRY contents, a
+ slot number for that entry which should be in the range 0..TABLE_SIZE-1.
+ This slot number is then returned.
+
+ The user-supplied COMPARATOR function should be provided. It accepts two
+ arguments pointing to user data, it then returns true for a pair of entries
+ that compare equal, or false otherwise. This function is internally called
+ on entries which are already known to hash to the same bucket index.
+
+ The user-supplied DATA_FREER function, when not NULL, may be later called
+ with the user data as an argument, just before the entry containing the
+ data gets freed. This happens from within `hash_free' or `hash_clear'.
+ You should specify this function only if you want these functions to free
+ all of your `data' data. This is typically the case when your data is
+ simply an auxiliary struct that you have malloc'd to aggregate several
+ values. */
+
+Hash_table *
+hash_initialize (size_t candidate, const Hash_tuning *tuning,
+ Hash_hasher hasher, Hash_comparator comparator,
+ Hash_data_freer data_freer)
+{
+ Hash_table *table;
+
+ if (hasher == NULL || comparator == NULL)
+ return NULL;
+
+ table = malloc (sizeof *table);
+ if (table == NULL)
+ return NULL;
+
+ if (!tuning)
+ tuning = &default_tuning;
+ table->tuning = tuning;
+ if (!check_tuning (table))
+ {
+ /* Fail if the tuning options are invalid. This is the only occasion
+ when the user gets some feedback about it. Once the table is created,
+ if the user provides invalid tuning options, we silently revert to
+ using the defaults, and ignore further request to change the tuning
+ options. */
+ goto fail;
+ }
+
+ if (!tuning->is_n_buckets)
+ {
+ float new_candidate = candidate / tuning->growth_threshold;
+ if (SIZE_MAX <= new_candidate)
+ goto fail;
+ candidate = new_candidate;
+ }
+
+ if (xalloc_oversized (candidate, sizeof *table->bucket))
+ goto fail;
+ table->n_buckets = next_prime (candidate);
+ if (xalloc_oversized (table->n_buckets, sizeof *table->bucket))
+ goto fail;
+
+ table->bucket = calloc (table->n_buckets, sizeof *table->bucket);
+ table->bucket_limit = table->bucket + table->n_buckets;
+ table->n_buckets_used = 0;
+ table->n_entries = 0;
+
+ table->hasher = hasher;
+ table->comparator = comparator;
+ table->data_freer = data_freer;
+
+ table->free_entry_list = NULL;
+#if USE_OBSTACK
+ obstack_init (&table->entry_stack);
+#endif
+ return table;
+
+ fail:
+ free (table);
+ return NULL;
+}
+
+/* Make all buckets empty, placing any chained entries on the free list.
+ Apply the user-specified function data_freer (if any) to the datas of any
+ affected entries. */
+
+void
+hash_clear (Hash_table *table)
+{
+ struct hash_entry *bucket;
+
+ for (bucket = table->bucket; bucket < table->bucket_limit; bucket++)
+ {
+ if (bucket->data)
+ {
+ struct hash_entry *cursor;
+ struct hash_entry *next;
+
+ /* Free the bucket overflow. */
+ for (cursor = bucket->next; cursor; cursor = next)
+ {
+ if (table->data_freer)
+ (*table->data_freer) (cursor->data);
+ cursor->data = NULL;
+
+ next = cursor->next;
+ /* Relinking is done one entry at a time, as it is to be expected
+ that overflows are either rare or short. */
+ cursor->next = table->free_entry_list;
+ table->free_entry_list = cursor;
+ }
+
+ /* Free the bucket head. */
+ if (table->data_freer)
+ (*table->data_freer) (bucket->data);
+ bucket->data = NULL;
+ bucket->next = NULL;
+ }
+ }
+
+ table->n_buckets_used = 0;
+ table->n_entries = 0;
+}
+
+/* Reclaim all storage associated with a hash table. If a data_freer
+ function has been supplied by the user when the hash table was created,
+ this function applies it to the data of each entry before freeing that
+ entry. */
+
+void
+hash_free (Hash_table *table)
+{
+ struct hash_entry *bucket;
+ struct hash_entry *cursor;
+ struct hash_entry *next;
+
+ /* Call the user data_freer function. */
+ if (table->data_freer && table->n_entries)
+ {
+ for (bucket = table->bucket; bucket < table->bucket_limit; bucket++)
+ {
+ if (bucket->data)
+ {
+ for (cursor = bucket; cursor; cursor = cursor->next)
+ {
+ (*table->data_freer) (cursor->data);
+ }
+ }
+ }
+ }
+
+#if USE_OBSTACK
+
+ obstack_free (&table->entry_stack, NULL);
+
+#else
+
+ /* Free all bucket overflowed entries. */
+ for (bucket = table->bucket; bucket < table->bucket_limit; bucket++)
+ {
+ for (cursor = bucket->next; cursor; cursor = next)
+ {
+ next = cursor->next;
+ free (cursor);
+ }
+ }
+
+ /* Also reclaim the internal list of previously freed entries. */
+ for (cursor = table->free_entry_list; cursor; cursor = next)
+ {
+ next = cursor->next;
+ free (cursor);
+ }
+
+#endif
+
+ /* Free the remainder of the hash table structure. */
+ free (table->bucket);
+ free (table);
+}
+
+/* Insertion and deletion. */
+
+/* Get a new hash entry for a bucket overflow, possibly by reclying a
+ previously freed one. If this is not possible, allocate a new one. */
+
+static struct hash_entry *
+allocate_entry (Hash_table *table)
+{
+ struct hash_entry *new;
+
+ if (table->free_entry_list)
+ {
+ new = table->free_entry_list;
+ table->free_entry_list = new->next;
+ }
+ else
+ {
+#if USE_OBSTACK
+ new = obstack_alloc (&table->entry_stack, sizeof *new);
+#else
+ new = malloc (sizeof *new);
+#endif
+ }
+
+ return new;
+}
+
+/* Free a hash entry which was part of some bucket overflow,
+ saving it for later recycling. */
+
+static void
+free_entry (Hash_table *table, struct hash_entry *entry)
+{
+ entry->data = NULL;
+ entry->next = table->free_entry_list;
+ table->free_entry_list = entry;
+}
+
+/* This private function is used to help with insertion and deletion. When
+ ENTRY matches an entry in the table, return a pointer to the corresponding
+ user data and set *BUCKET_HEAD to the head of the selected bucket.
+ Otherwise, return NULL. When DELETE is true and ENTRY matches an entry in
+ the table, unlink the matching entry. */
+
+static void *
+hash_find_entry (Hash_table *table, const void *entry,
+ struct hash_entry **bucket_head, bool delete)
+{
+ struct hash_entry *bucket
+ = table->bucket + table->hasher (entry, table->n_buckets);
+ struct hash_entry *cursor;
+
+ if (! (bucket < table->bucket_limit))
+ abort ();
+
+ *bucket_head = bucket;
+
+ /* Test for empty bucket. */
+ if (bucket->data == NULL)
+ return NULL;
+
+ /* See if the entry is the first in the bucket. */
+ if ((*table->comparator) (entry, bucket->data))
+ {
+ void *data = bucket->data;
+
+ if (delete)
+ {
+ if (bucket->next)
+ {
+ struct hash_entry *next = bucket->next;
+
+ /* Bump the first overflow entry into the bucket head, then save
+ the previous first overflow entry for later recycling. */
+ *bucket = *next;
+ free_entry (table, next);
+ }
+ else
+ {
+ bucket->data = NULL;
+ }
+ }
+
+ return data;
+ }
+
+ /* Scan the bucket overflow. */
+ for (cursor = bucket; cursor->next; cursor = cursor->next)
+ {
+ if ((*table->comparator) (entry, cursor->next->data))
+ {
+ void *data = cursor->next->data;
+
+ if (delete)
+ {
+ struct hash_entry *next = cursor->next;
+
+ /* Unlink the entry to delete, then save the freed entry for later
+ recycling. */
+ cursor->next = next->next;
+ free_entry (table, next);
+ }
+
+ return data;
+ }
+ }
+
+ /* No entry found. */
+ return NULL;
+}
+
+/* For an already existing hash table, change the number of buckets through
+ specifying CANDIDATE. The contents of the hash table are preserved. The
+ new number of buckets is automatically selected so as to _guarantee_ that
+ the table may receive at least CANDIDATE different user entries, including
+ those already in the table, before any other growth of the hash table size
+ occurs. If TUNING->IS_N_BUCKETS is true, then CANDIDATE specifies the
+ exact number of buckets desired. */
+
+bool
+hash_rehash (Hash_table *table, size_t candidate)
+{
+ Hash_table *new_table;
+ struct hash_entry *bucket;
+ struct hash_entry *cursor;
+ struct hash_entry *next;
+
+ new_table = hash_initialize (candidate, table->tuning, table->hasher,
+ table->comparator, table->data_freer);
+ if (new_table == NULL)
+ return false;
+
+ /* Merely reuse the extra old space into the new table. */
+#if USE_OBSTACK
+ obstack_free (&new_table->entry_stack, NULL);
+ new_table->entry_stack = table->entry_stack;
+#endif
+ new_table->free_entry_list = table->free_entry_list;
+
+ for (bucket = table->bucket; bucket < table->bucket_limit; bucket++)
+ if (bucket->data)
+ for (cursor = bucket; cursor; cursor = next)
+ {
+ void *data = cursor->data;
+ struct hash_entry *new_bucket
+ = (new_table->bucket
+ + new_table->hasher (data, new_table->n_buckets));
+
+ if (! (new_bucket < new_table->bucket_limit))
+ abort ();
+
+ next = cursor->next;
+
+ if (new_bucket->data)
+ {
+ if (cursor == bucket)
+ {
+ /* Allocate or recycle an entry, when moving from a bucket
+ header into a bucket overflow. */
+ struct hash_entry *new_entry = allocate_entry (new_table);
+
+ if (new_entry == NULL)
+ return false;
+
+ new_entry->data = data;
+ new_entry->next = new_bucket->next;
+ new_bucket->next = new_entry;
+ }
+ else
+ {
+ /* Merely relink an existing entry, when moving from a
+ bucket overflow into a bucket overflow. */
+ cursor->next = new_bucket->next;
+ new_bucket->next = cursor;
+ }
+ }
+ else
+ {
+ /* Free an existing entry, when moving from a bucket
+ overflow into a bucket header. Also take care of the
+ simple case of moving from a bucket header into a bucket
+ header. */
+ new_bucket->data = data;
+ new_table->n_buckets_used++;
+ if (cursor != bucket)
+ free_entry (new_table, cursor);
+ }
+ }
+
+ free (table->bucket);
+ table->bucket = new_table->bucket;
+ table->bucket_limit = new_table->bucket_limit;
+ table->n_buckets = new_table->n_buckets;
+ table->n_buckets_used = new_table->n_buckets_used;
+ table->free_entry_list = new_table->free_entry_list;
+ /* table->n_entries already holds its value. */
+#if USE_OBSTACK
+ table->entry_stack = new_table->entry_stack;
+#endif
+ free (new_table);
+
+ return true;
+}
+
+/* If ENTRY matches an entry already in the hash table, return the pointer
+ to the entry from the table. Otherwise, insert ENTRY and return ENTRY.
+ Return NULL if the storage required for insertion cannot be allocated. */
+
+void *
+hash_insert (Hash_table *table, const void *entry)
+{
+ void *data;
+ struct hash_entry *bucket;
+
+ /* The caller cannot insert a NULL entry. */
+ if (! entry)
+ abort ();
+
+ /* If there's a matching entry already in the table, return that. */
+ if ((data = hash_find_entry (table, entry, &bucket, false)) != NULL)
+ return data;
+
+ /* ENTRY is not matched, it should be inserted. */
+
+ if (bucket->data)
+ {
+ struct hash_entry *new_entry = allocate_entry (table);
+
+ if (new_entry == NULL)
+ return NULL;
+
+ /* Add ENTRY in the overflow of the bucket. */
+
+ new_entry->data = (void *) entry;
+ new_entry->next = bucket->next;
+ bucket->next = new_entry;
+ table->n_entries++;
+ return (void *) entry;
+ }
+
+ /* Add ENTRY right in the bucket head. */
+
+ bucket->data = (void *) entry;
+ table->n_entries++;
+ table->n_buckets_used++;
+
+ /* If the growth threshold of the buckets in use has been reached, increase
+ the table size and rehash. There's no point in checking the number of
+ entries: if the hashing function is ill-conditioned, rehashing is not
+ likely to improve it. */
+
+ if (table->n_buckets_used
+ > table->tuning->growth_threshold * table->n_buckets)
+ {
+ /* Check more fully, before starting real work. If tuning arguments
+ became invalid, the second check will rely on proper defaults. */
+ check_tuning (table);
+ if (table->n_buckets_used
+ > table->tuning->growth_threshold * table->n_buckets)
+ {
+ const Hash_tuning *tuning = table->tuning;
+ float candidate =
+ (tuning->is_n_buckets
+ ? (table->n_buckets * tuning->growth_factor)
+ : (table->n_buckets * tuning->growth_factor
+ * tuning->growth_threshold));
+
+ if (SIZE_MAX <= candidate)
+ return NULL;
+
+ /* If the rehash fails, arrange to return NULL. */
+ if (!hash_rehash (table, candidate))
+ entry = NULL;
+ }
+ }
+
+ return (void *) entry;
+}
+
+/* If ENTRY is already in the table, remove it and return the just-deleted
+ data (the user may want to deallocate its storage). If ENTRY is not in the
+ table, don't modify the table and return NULL. */
+
+void *
+hash_delete (Hash_table *table, const void *entry)
+{
+ void *data;
+ struct hash_entry *bucket;
+
+ data = hash_find_entry (table, entry, &bucket, true);
+ if (!data)
+ return NULL;
+
+ table->n_entries--;
+ if (!bucket->data)
+ {
+ table->n_buckets_used--;
+
+ /* If the shrink threshold of the buckets in use has been reached,
+ rehash into a smaller table. */
+
+ if (table->n_buckets_used
+ < table->tuning->shrink_threshold * table->n_buckets)
+ {
+ /* Check more fully, before starting real work. If tuning arguments
+ became invalid, the second check will rely on proper defaults. */
+ check_tuning (table);
+ if (table->n_buckets_used
+ < table->tuning->shrink_threshold * table->n_buckets)
+ {
+ const Hash_tuning *tuning = table->tuning;
+ size_t candidate =
+ (tuning->is_n_buckets
+ ? table->n_buckets * tuning->shrink_factor
+ : (table->n_buckets * tuning->shrink_factor
+ * tuning->growth_threshold));
+
+ hash_rehash (table, candidate);
+ }
+ }
+ }
+
+ return data;
+}
+
+/* Testing. */
+
+#if TESTING
+
+void
+hash_print (const Hash_table *table)
+{
+ struct hash_entry const *bucket;
+
+ for (bucket = table->bucket; bucket < table->bucket_limit; bucket++)
+ {
+ struct hash_entry *cursor;
+
+ if (bucket)
+ printf ("%lu:\n", (unsigned long int) (bucket - table->bucket));
+
+ for (cursor = bucket; cursor; cursor = cursor->next)
+ {
+ char const *s = cursor->data;
+ /* FIXME */
+ if (s)
+ printf (" %s\n", s);
+ }
+ }
+}
+
+#endif /* TESTING */
diff --git a/lib/hash.h b/lib/hash.h
new file mode 100644
index 0000000..ab63a86
--- /dev/null
+++ b/lib/hash.h
@@ -0,0 +1,88 @@
+/* hash - hashing table processing.
+ Copyright (C) 1998, 1999, 2001, 2003 Free Software Foundation, Inc.
+ Written by Jim Meyering <meyering@ascend.com>, 1998.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* A generic hash table package. */
+
+/* Make sure USE_OBSTACK is defined to 1 if you want the allocator to use
+ obstacks instead of malloc, and recompile `hash.c' with same setting. */
+
+#ifndef HASH_H_
+# define HASH_H_
+
+# include <stdio.h>
+# include <stdbool.h>
+
+typedef size_t (*Hash_hasher) (const void *, size_t);
+typedef bool (*Hash_comparator) (const void *, const void *);
+typedef void (*Hash_data_freer) (void *);
+typedef bool (*Hash_processor) (void *, void *);
+
+struct hash_entry
+ {
+ void *data;
+ struct hash_entry *next;
+ };
+
+struct hash_tuning
+ {
+ /* This structure is mainly used for `hash_initialize', see the block
+ documentation of `hash_reset_tuning' for more complete comments. */
+
+ float shrink_threshold; /* ratio of used buckets to trigger a shrink */
+ float shrink_factor; /* ratio of new smaller size to original size */
+ float growth_threshold; /* ratio of used buckets to trigger a growth */
+ float growth_factor; /* ratio of new bigger size to original size */
+ bool is_n_buckets; /* if CANDIDATE really means table size */
+ };
+
+typedef struct hash_tuning Hash_tuning;
+
+struct hash_table;
+
+typedef struct hash_table Hash_table;
+
+/* Information and lookup. */
+size_t hash_get_n_buckets (const Hash_table *);
+size_t hash_get_n_buckets_used (const Hash_table *);
+size_t hash_get_n_entries (const Hash_table *);
+size_t hash_get_max_bucket_length (const Hash_table *);
+bool hash_table_ok (const Hash_table *);
+void hash_print_statistics (const Hash_table *, FILE *);
+void *hash_lookup (const Hash_table *, const void *);
+
+/* Walking. */
+void *hash_get_first (const Hash_table *);
+void *hash_get_next (const Hash_table *, const void *);
+size_t hash_get_entries (const Hash_table *, void **, size_t);
+size_t hash_do_for_each (const Hash_table *, Hash_processor, void *);
+
+/* Allocation and clean-up. */
+size_t hash_string (const char *, size_t);
+void hash_reset_tuning (Hash_tuning *);
+Hash_table *hash_initialize (size_t, const Hash_tuning *,
+ Hash_hasher, Hash_comparator,
+ Hash_data_freer);
+void hash_clear (Hash_table *);
+void hash_free (Hash_table *);
+
+/* Insertion and deletion. */
+bool hash_rehash (Hash_table *, size_t);
+void *hash_insert (Hash_table *, const void *);
+void *hash_delete (Hash_table *, const void *);
+
+#endif
diff --git a/lib/human.c b/lib/human.c
new file mode 100644
index 0000000..ecf4c97
--- /dev/null
+++ b/lib/human.c
@@ -0,0 +1,479 @@
+/* human.c -- print human readable file size
+
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+ 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert and Larry McVoy. */
+
+#include <config.h>
+
+#include "human.h"
+
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+#include <argmatch.h>
+#include <error.h>
+#include <intprops.h>
+#include <xstrtol.h>
+
+/* The maximum length of a suffix like "KiB". */
+#define HUMAN_READABLE_SUFFIX_LENGTH_MAX 3
+
+static const char power_letter[] =
+{
+ 0, /* not used */
+ 'K', /* kibi ('k' for kilo is a special case) */
+ 'M', /* mega or mebi */
+ 'G', /* giga or gibi */
+ 'T', /* tera or tebi */
+ 'P', /* peta or pebi */
+ 'E', /* exa or exbi */
+ 'Z', /* zetta or 2**70 */
+ 'Y' /* yotta or 2**80 */
+};
+
+
+/* If INEXACT_STYLE is not human_round_to_nearest, and if easily
+ possible, adjust VALUE according to the style. */
+
+static long double
+adjust_value (int inexact_style, long double value)
+{
+ /* Do not use the floorl or ceill functions, as that would mean
+ checking for their presence and possibly linking with the
+ standard math library, which is a porting pain. So leave the
+ value alone if it is too large to easily round. */
+ if (inexact_style != human_round_to_nearest && value < UINTMAX_MAX)
+ {
+ uintmax_t u = value;
+ value = u + (inexact_style == human_ceiling && u != value);
+ }
+
+ return value;
+}
+
+/* Group the digits of NUMBER according to the grouping rules of the
+ current locale. NUMBER contains NUMBERLEN digits. Modify the
+ bytes pointed to by NUMBER in place, subtracting 1 from NUMBER for
+ each byte inserted. Return the starting address of the modified
+ number.
+
+ To group the digits, use GROUPING and THOUSANDS_SEP as in `struct
+ lconv' from <locale.h>. */
+
+static char *
+group_number (char *number, size_t numberlen,
+ char const *grouping, char const *thousands_sep)
+{
+ register char *d;
+ size_t grouplen = SIZE_MAX;
+ size_t thousands_seplen = strlen (thousands_sep);
+ size_t i = numberlen;
+
+ /* The maximum possible value for NUMBERLEN is the number of digits
+ in the square of the largest uintmax_t, so double the size needed. */
+ char buf[2 * INT_STRLEN_BOUND (uintmax_t) + 1];
+
+ memcpy (buf, number, numberlen);
+ d = number + numberlen;
+
+ for (;;)
+ {
+ unsigned char g = *grouping;
+
+ if (g)
+ {
+ grouplen = g < CHAR_MAX ? g : i;
+ grouping++;
+ }
+
+ if (i < grouplen)
+ grouplen = i;
+
+ d -= grouplen;
+ i -= grouplen;
+ memcpy (d, buf + i, grouplen);
+ if (i == 0)
+ return d;
+
+ d -= thousands_seplen;
+ memcpy (d, thousands_sep, thousands_seplen);
+ }
+}
+
+/* Convert N to a human readable format in BUF, using the options OPTS.
+
+ N is expressed in units of FROM_BLOCK_SIZE. FROM_BLOCK_SIZE must
+ be nonnegative.
+
+ Use units of TO_BLOCK_SIZE in the output number. TO_BLOCK_SIZE
+ must be positive.
+
+ Use (OPTS & (human_round_to_nearest | human_floor | human_ceiling))
+ to determine whether to take the ceiling or floor of any result
+ that cannot be expressed exactly.
+
+ If (OPTS & human_group_digits), group the thousands digits
+ according to the locale, e.g., `1,000,000' in an American English
+ locale.
+
+ If (OPTS & human_autoscale), deduce the output block size
+ automatically; TO_BLOCK_SIZE must be 1 but it has no effect on the
+ output. Use powers of 1024 if (OPTS & human_base_1024), and powers
+ of 1000 otherwise. For example, assuming powers of 1024, 8500
+ would be converted to 8.3, 133456345 to 127, 56990456345 to 53, and
+ so on. Numbers smaller than the power aren't modified.
+ human_autoscale is normally used together with human_SI.
+
+ If (OPTS & human_space_before_unit), use a space to separate the
+ number from any suffix that is appended as described below.
+
+ If (OPTS & human_SI), append an SI prefix indicating which power is
+ being used. If in addition (OPTS & human_B), append "B" (if base
+ 1000) or "iB" (if base 1024) to the SI prefix. When ((OPTS &
+ human_SI) && ! (OPTS & human_autoscale)), TO_BLOCK_SIZE must be a
+ power of 1024 or of 1000, depending on (OPTS &
+ human_base_1024). */
+
+char *
+human_readable (uintmax_t n, char *buf, int opts,
+ uintmax_t from_block_size, uintmax_t to_block_size)
+{
+ int inexact_style =
+ opts & (human_round_to_nearest | human_floor | human_ceiling);
+ unsigned int base = opts & human_base_1024 ? 1024 : 1000;
+ uintmax_t amt;
+ int tenths;
+ int exponent = -1;
+ int exponent_max = sizeof power_letter - 1;
+ char *p;
+ char *psuffix;
+ char const *integerlim;
+
+ /* 0 means adjusted N == AMT.TENTHS;
+ 1 means AMT.TENTHS < adjusted N < AMT.TENTHS + 0.05;
+ 2 means adjusted N == AMT.TENTHS + 0.05;
+ 3 means AMT.TENTHS + 0.05 < adjusted N < AMT.TENTHS + 0.1. */
+ int rounding;
+
+ char const *decimal_point = ".";
+ size_t decimal_pointlen = 1;
+ char const *grouping = "";
+ char const *thousands_sep = "";
+ struct lconv const *l = localeconv ();
+ size_t pointlen = strlen (l->decimal_point);
+ if (0 < pointlen && pointlen <= MB_LEN_MAX)
+ {
+ decimal_point = l->decimal_point;
+ decimal_pointlen = pointlen;
+ }
+ grouping = l->grouping;
+ if (strlen (l->thousands_sep) <= MB_LEN_MAX)
+ thousands_sep = l->thousands_sep;
+
+ psuffix = buf + LONGEST_HUMAN_READABLE - HUMAN_READABLE_SUFFIX_LENGTH_MAX;
+ p = psuffix;
+
+ /* Adjust AMT out of FROM_BLOCK_SIZE units and into TO_BLOCK_SIZE
+ units. If this can be done exactly with integer arithmetic, do
+ not use floating point operations. */
+ if (to_block_size <= from_block_size)
+ {
+ if (from_block_size % to_block_size == 0)
+ {
+ uintmax_t multiplier = from_block_size / to_block_size;
+ amt = n * multiplier;
+ if (amt / multiplier == n)
+ {
+ tenths = 0;
+ rounding = 0;
+ goto use_integer_arithmetic;
+ }
+ }
+ }
+ else if (from_block_size != 0 && to_block_size % from_block_size == 0)
+ {
+ uintmax_t divisor = to_block_size / from_block_size;
+ uintmax_t r10 = (n % divisor) * 10;
+ uintmax_t r2 = (r10 % divisor) * 2;
+ amt = n / divisor;
+ tenths = r10 / divisor;
+ rounding = r2 < divisor ? 0 < r2 : 2 + (divisor < r2);
+ goto use_integer_arithmetic;
+ }
+
+ {
+ /* Either the result cannot be computed easily using uintmax_t,
+ or from_block_size is zero. Fall back on floating point.
+ FIXME: This can yield answers that are slightly off. */
+
+ long double dto_block_size = to_block_size;
+ long double damt = n * (from_block_size / dto_block_size);
+ size_t buflen;
+ size_t nonintegerlen;
+
+ if (! (opts & human_autoscale))
+ {
+ sprintf (buf, "%.0Lf", adjust_value (inexact_style, damt));
+ buflen = strlen (buf);
+ nonintegerlen = 0;
+ }
+ else
+ {
+ long double e = 1;
+ exponent = 0;
+
+ do
+ {
+ e *= base;
+ exponent++;
+ }
+ while (e * base <= damt && exponent < exponent_max);
+
+ damt /= e;
+
+ sprintf (buf, "%.1Lf", adjust_value (inexact_style, damt));
+ buflen = strlen (buf);
+ nonintegerlen = decimal_pointlen + 1;
+
+ if (1 + nonintegerlen + ! (opts & human_base_1024) < buflen
+ || ((opts & human_suppress_point_zero)
+ && buf[buflen - 1] == '0'))
+ {
+ sprintf (buf, "%.0Lf",
+ adjust_value (inexact_style, damt * 10) / 10);
+ buflen = strlen (buf);
+ nonintegerlen = 0;
+ }
+ }
+
+ p = psuffix - buflen;
+ memmove (p, buf, buflen);
+ integerlim = p + buflen - nonintegerlen;
+ }
+ goto do_grouping;
+
+ use_integer_arithmetic:
+ {
+ /* The computation can be done exactly, with integer arithmetic.
+
+ Use power of BASE notation if requested and if adjusted AMT is
+ large enough. */
+
+ if (opts & human_autoscale)
+ {
+ exponent = 0;
+
+ if (base <= amt)
+ {
+ do
+ {
+ unsigned int r10 = (amt % base) * 10 + tenths;
+ unsigned int r2 = (r10 % base) * 2 + (rounding >> 1);
+ amt /= base;
+ tenths = r10 / base;
+ rounding = (r2 < base
+ ? (r2 + rounding) != 0
+ : 2 + (base < r2 + rounding));
+ exponent++;
+ }
+ while (base <= amt && exponent < exponent_max);
+
+ if (amt < 10)
+ {
+ if (inexact_style == human_round_to_nearest
+ ? 2 < rounding + (tenths & 1)
+ : inexact_style == human_ceiling && 0 < rounding)
+ {
+ tenths++;
+ rounding = 0;
+
+ if (tenths == 10)
+ {
+ amt++;
+ tenths = 0;
+ }
+ }
+
+ if (amt < 10
+ && (tenths || ! (opts & human_suppress_point_zero)))
+ {
+ *--p = '0' + tenths;
+ p -= decimal_pointlen;
+ memcpy (p, decimal_point, decimal_pointlen);
+ tenths = rounding = 0;
+ }
+ }
+ }
+ }
+
+ if (inexact_style == human_round_to_nearest
+ ? 5 < tenths + (0 < rounding + (amt & 1))
+ : inexact_style == human_ceiling && 0 < tenths + rounding)
+ {
+ amt++;
+
+ if ((opts & human_autoscale)
+ && amt == base && exponent < exponent_max)
+ {
+ exponent++;
+ if (! (opts & human_suppress_point_zero))
+ {
+ *--p = '0';
+ p -= decimal_pointlen;
+ memcpy (p, decimal_point, decimal_pointlen);
+ }
+ amt = 1;
+ }
+ }
+
+ integerlim = p;
+
+ do
+ {
+ int digit = amt % 10;
+ *--p = digit + '0';
+ }
+ while ((amt /= 10) != 0);
+ }
+
+ do_grouping:
+ if (opts & human_group_digits)
+ p = group_number (p, integerlim - p, grouping, thousands_sep);
+
+ if (opts & human_SI)
+ {
+ if (exponent < 0)
+ {
+ uintmax_t power;
+ exponent = 0;
+ for (power = 1; power < to_block_size; power *= base)
+ if (++exponent == exponent_max)
+ break;
+ }
+
+ if ((exponent | (opts & human_B)) && (opts & human_space_before_unit))
+ *psuffix++ = ' ';
+
+ if (exponent)
+ *psuffix++ = (! (opts & human_base_1024) && exponent == 1
+ ? 'k'
+ : power_letter[exponent]);
+
+ if (opts & human_B)
+ {
+ if ((opts & human_base_1024) && exponent)
+ *psuffix++ = 'i';
+ *psuffix++ = 'B';
+ }
+ }
+
+ *psuffix = '\0';
+
+ return p;
+}
+
+
+/* The default block size used for output. This number may change in
+ the future as disks get larger. */
+#ifndef DEFAULT_BLOCK_SIZE
+# define DEFAULT_BLOCK_SIZE 1024
+#endif
+
+static char const *const block_size_args[] = { "human-readable", "si", 0 };
+static int const block_size_opts[] =
+ {
+ human_autoscale + human_SI + human_base_1024,
+ human_autoscale + human_SI
+ };
+
+static uintmax_t
+default_block_size (void)
+{
+ return getenv ("POSIXLY_CORRECT") ? 512 : DEFAULT_BLOCK_SIZE;
+}
+
+static strtol_error
+humblock (char const *spec, uintmax_t *block_size, int *options)
+{
+ int i;
+ int opts = 0;
+
+ if (! spec
+ && ! (spec = getenv ("BLOCK_SIZE"))
+ && ! (spec = getenv ("BLOCKSIZE")))
+ *block_size = default_block_size ();
+ else
+ {
+ if (*spec == '\'')
+ {
+ opts |= human_group_digits;
+ spec++;
+ }
+
+ if (0 <= (i = ARGMATCH (spec, block_size_args, block_size_opts)))
+ {
+ opts |= block_size_opts[i];
+ *block_size = 1;
+ }
+ else
+ {
+ char *ptr;
+ strtol_error e = xstrtoumax (spec, &ptr, 0, block_size,
+ "eEgGkKmMpPtTyYzZ0");
+ if (e != LONGINT_OK)
+ {
+ *options = 0;
+ return e;
+ }
+ for (; ! ('0' <= *spec && *spec <= '9'); spec++)
+ if (spec == ptr)
+ {
+ opts |= human_SI;
+ if (ptr[-1] == 'B')
+ opts |= human_B;
+ if (ptr[-1] != 'B' || ptr[-2] == 'i')
+ opts |= human_base_1024;
+ break;
+ }
+ }
+ }
+
+ *options = opts;
+ return LONGINT_OK;
+}
+
+int
+human_options (char const *spec, bool report_errors, uintmax_t *block_size)
+{
+ int opts;
+ strtol_error e = humblock (spec, block_size, &opts);
+ if (*block_size == 0)
+ {
+ *block_size = default_block_size ();
+ e = LONGINT_INVALID;
+ }
+ if (e != LONGINT_OK && report_errors)
+ STRTOL_FATAL_ERROR (spec, _("block size"), e);
+ return opts;
+}
diff --git a/lib/human.h b/lib/human.h
new file mode 100644
index 0000000..44b8b36
--- /dev/null
+++ b/lib/human.h
@@ -0,0 +1,83 @@
+/* human.h -- print human readable file size
+
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+ 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert and Larry McVoy. */
+
+#ifndef HUMAN_H_
+# define HUMAN_H_ 1
+
+# include <limits.h>
+# include <stdbool.h>
+# include <stdint.h>
+# include <unistd.h>
+
+/* A conservative bound on the maximum length of a human-readable string.
+ The output can be the square of the largest uintmax_t, so double
+ its size before converting to a bound.
+ log10 (2.0) < 146/485. Add 1 for integer division truncation.
+ Also, the output can have a thousands separator between every digit,
+ so multiply by MB_LEN_MAX + 1 and then subtract MB_LEN_MAX.
+ Append 1 for a space before the suffix.
+ Finally, append 3, the maximum length of a suffix. */
+# define LONGEST_HUMAN_READABLE \
+ ((2 * sizeof (uintmax_t) * CHAR_BIT * 146 / 485 + 1) * (MB_LEN_MAX + 1) \
+ - MB_LEN_MAX + 1 + 3)
+
+/* Options for human_readable. */
+enum
+{
+ /* Unless otherwise specified these options may be ORed together. */
+
+ /* The following three options are mutually exclusive. */
+ /* Round to plus infinity (default). */
+ human_ceiling = 0,
+ /* Round to nearest, ties to even. */
+ human_round_to_nearest = 1,
+ /* Round to minus infinity. */
+ human_floor = 2,
+
+ /* Group digits together, e.g. `1,000,000'. This uses the
+ locale-defined grouping; the traditional C locale does not group,
+ so this has effect only if some other locale is in use. */
+ human_group_digits = 4,
+
+ /* When autoscaling, suppress ".0" at end. */
+ human_suppress_point_zero = 8,
+
+ /* Scale output and use SI-style units, ignoring the output block size. */
+ human_autoscale = 16,
+
+ /* Prefer base 1024 to base 1000. */
+ human_base_1024 = 32,
+
+ /* Prepend " " before unit symbol. */
+ human_space_before_unit = 64,
+
+ /* Append SI prefix, e.g. "k" or "M". */
+ human_SI = 128,
+
+ /* Append "B" (if base 1000) or "iB" (if base 1024) to SI prefix. */
+ human_B = 256
+};
+
+char *human_readable (uintmax_t, char *, int, uintmax_t, uintmax_t);
+
+int human_options (char const *, bool, uintmax_t *);
+
+#endif /* HUMAN_H_ */
diff --git a/lib/i-ring.c b/lib/i-ring.c
new file mode 100644
index 0000000..457b838
--- /dev/null
+++ b/lib/i-ring.c
@@ -0,0 +1,69 @@
+/* a simple ring buffer
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+#include "i-ring.h"
+
+#include <stdlib.h>
+
+void
+i_ring_init (I_ring *ir, int default_val)
+{
+ int i;
+ ir->ir_empty = true;
+ ir->ir_front = 0;
+ ir->ir_back = 0;
+ for (i = 0; i < I_RING_SIZE; i++)
+ ir->ir_data[i] = default_val;
+ ir->ir_default_val = default_val;
+}
+
+bool
+i_ring_empty (I_ring const *ir)
+{
+ return ir->ir_empty;
+}
+
+int
+i_ring_push (I_ring *ir, int val)
+{
+ unsigned int dest_idx = (ir->ir_front + !ir->ir_empty) % I_RING_SIZE;
+ int old_val = ir->ir_data[dest_idx];
+ ir->ir_data[dest_idx] = val;
+ ir->ir_front = dest_idx;
+ if (dest_idx == ir->ir_back)
+ ir->ir_back = (ir->ir_back + !ir->ir_empty) % I_RING_SIZE;
+ ir->ir_empty = false;
+ return old_val;
+}
+
+int
+i_ring_pop (I_ring *ir)
+{
+ int top_val;
+ if (i_ring_empty (ir))
+ abort ();
+ top_val = ir->ir_data[ir->ir_front];
+ ir->ir_data[ir->ir_front] = ir->ir_default_val;
+ if (ir->ir_front == ir->ir_back)
+ ir->ir_empty = true;
+ else
+ ir->ir_front = ((ir->ir_front + I_RING_SIZE - 1) % I_RING_SIZE);
+ return top_val;
+}
diff --git a/lib/i-ring.h b/lib/i-ring.h
new file mode 100644
index 0000000..fadfa2b
--- /dev/null
+++ b/lib/i-ring.h
@@ -0,0 +1,45 @@
+/* definitions for a simple ring buffer
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <stdbool.h>
+#include "verify.h"
+
+enum { I_RING_SIZE = 4 };
+verify (1 <= I_RING_SIZE);
+
+/* When ir_empty is true, the ring is empty.
+ Otherwise, ir_data[B..F] are defined, where B..F is the contiguous
+ range of indices, modulo I_RING_SIZE, from back to front, inclusive.
+ Undefined elements of ir_data are always set to ir_default_val.
+ Popping from an empty ring aborts.
+ Pushing onto a full ring returns the displaced value.
+ An empty ring has F==B and ir_empty == true.
+ A ring with one entry still has F==B, but now ir_empty == false. */
+struct I_ring
+{
+ int ir_data[I_RING_SIZE];
+ int ir_default_val;
+ unsigned int ir_front;
+ unsigned int ir_back;
+ bool ir_empty;
+};
+typedef struct I_ring I_ring;
+
+void i_ring_init (I_ring *ir, int ir_default_val);
+int i_ring_push (I_ring *ir, int val);
+int i_ring_pop (I_ring *ir);
+bool i_ring_empty (I_ring const *ir);
diff --git a/lib/idcache.c b/lib/idcache.c
new file mode 100644
index 0000000..0706f00
--- /dev/null
+++ b/lib/idcache.c
@@ -0,0 +1,221 @@
+/* idcache.c -- map user and group IDs, cached for speed
+
+ Copyright (C) 1985, 1988, 1989, 1990, 1997, 1998, 2003, 2005, 2006
+ Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <grp.h>
+
+#include <unistd.h>
+
+#include "xalloc.h"
+
+#ifdef __DJGPP__
+static char digits[] = "0123456789";
+#endif
+
+struct userid
+{
+ union
+ {
+ uid_t u;
+ gid_t g;
+ } id;
+ struct userid *next;
+ char name[FLEXIBLE_ARRAY_MEMBER];
+};
+
+static struct userid *user_alist;
+
+/* Each entry on list is a user name for which the first lookup failed. */
+static struct userid *nouser_alist;
+
+/* Translate UID to a login name, with cache, or NULL if unresolved. */
+
+char *
+getuser (uid_t uid)
+{
+ struct userid *tail;
+ struct userid *match = NULL;
+
+ for (tail = user_alist; tail; tail = tail->next)
+ {
+ if (tail->id.u == uid)
+ {
+ match = tail;
+ break;
+ }
+ }
+
+ if (match == NULL)
+ {
+ struct passwd *pwent = getpwuid (uid);
+ char const *name = pwent ? pwent->pw_name : "";
+ match = xmalloc (offsetof (struct userid, name) + strlen (name) + 1);
+ match->id.u = uid;
+ strcpy (match->name, name);
+
+ /* Add to the head of the list, so most recently used is first. */
+ match->next = user_alist;
+ user_alist = match;
+ }
+
+ return match->name[0] ? match->name : NULL;
+}
+
+/* Translate USER to a UID, with cache.
+ Return NULL if there is no such user.
+ (We also cache which user names have no passwd entry,
+ so we don't keep looking them up.) */
+
+uid_t *
+getuidbyname (const char *user)
+{
+ struct userid *tail;
+ struct passwd *pwent;
+
+ for (tail = user_alist; tail; tail = tail->next)
+ /* Avoid a function call for the most common case. */
+ if (*tail->name == *user && !strcmp (tail->name, user))
+ return &tail->id.u;
+
+ for (tail = nouser_alist; tail; tail = tail->next)
+ /* Avoid a function call for the most common case. */
+ if (*tail->name == *user && !strcmp (tail->name, user))
+ return NULL;
+
+ pwent = getpwnam (user);
+#ifdef __DJGPP__
+ /* We need to pretend to be the user USER, to make
+ pwd functions know about an arbitrary user name. */
+ if (!pwent && strspn (user, digits) < strlen (user))
+ {
+ setenv ("USER", user, 1);
+ pwent = getpwnam (user); /* now it will succeed */
+ }
+#endif
+
+ tail = xmalloc (offsetof (struct userid, name) + strlen (user) + 1);
+ strcpy (tail->name, user);
+
+ /* Add to the head of the list, so most recently used is first. */
+ if (pwent)
+ {
+ tail->id.u = pwent->pw_uid;
+ tail->next = user_alist;
+ user_alist = tail;
+ return &tail->id.u;
+ }
+
+ tail->next = nouser_alist;
+ nouser_alist = tail;
+ return NULL;
+}
+
+/* Use the same struct as for userids. */
+static struct userid *group_alist;
+
+/* Each entry on list is a group name for which the first lookup failed. */
+static struct userid *nogroup_alist;
+
+/* Translate GID to a group name, with cache, or NULL if unresolved. */
+
+char *
+getgroup (gid_t gid)
+{
+ struct userid *tail;
+ struct userid *match = NULL;
+
+ for (tail = group_alist; tail; tail = tail->next)
+ {
+ if (tail->id.g == gid)
+ {
+ match = tail;
+ break;
+ }
+ }
+
+ if (match == NULL)
+ {
+ struct group *grent = getgrgid (gid);
+ char const *name = grent ? grent->gr_name : "";
+ match = xmalloc (offsetof (struct userid, name) + strlen (name) + 1);
+ match->id.g = gid;
+ strcpy (match->name, name);
+
+ /* Add to the head of the list, so most recently used is first. */
+ match->next = group_alist;
+ group_alist = match;
+ }
+
+ return match->name[0] ? match->name : NULL;
+}
+
+/* Translate GROUP to a GID, with cache.
+ Return NULL if there is no such group.
+ (We also cache which group names have no group entry,
+ so we don't keep looking them up.) */
+
+gid_t *
+getgidbyname (const char *group)
+{
+ struct userid *tail;
+ struct group *grent;
+
+ for (tail = group_alist; tail; tail = tail->next)
+ /* Avoid a function call for the most common case. */
+ if (*tail->name == *group && !strcmp (tail->name, group))
+ return &tail->id.g;
+
+ for (tail = nogroup_alist; tail; tail = tail->next)
+ /* Avoid a function call for the most common case. */
+ if (*tail->name == *group && !strcmp (tail->name, group))
+ return NULL;
+
+ grent = getgrnam (group);
+#ifdef __DJGPP__
+ /* We need to pretend to belong to group GROUP, to make
+ grp functions know about an arbitrary group name. */
+ if (!grent && strspn (group, digits) < strlen (group))
+ {
+ setenv ("GROUP", group, 1);
+ grent = getgrnam (group); /* now it will succeed */
+ }
+#endif
+
+ tail = xmalloc (offsetof (struct userid, name) + strlen (group) + 1);
+ strcpy (tail->name, group);
+
+ /* Add to the head of the list, so most recently used is first. */
+ if (grent)
+ {
+ tail->id.g = grent->gr_gid;
+ tail->next = group_alist;
+ group_alist = tail;
+ return &tail->id.g;
+ }
+
+ tail->next = nogroup_alist;
+ nogroup_alist = tail;
+ return NULL;
+}
diff --git a/lib/imaxtostr.c b/lib/imaxtostr.c
new file mode 100644
index 0000000..5e87ad5
--- /dev/null
+++ b/lib/imaxtostr.c
@@ -0,0 +1,3 @@
+#define inttostr imaxtostr
+#define inttype intmax_t
+#include "inttostr.c"
diff --git a/lib/inet_ntop.c b/lib/inet_ntop.c
new file mode 100644
index 0000000..537b59f
--- /dev/null
+++ b/lib/inet_ntop.c
@@ -0,0 +1,238 @@
+/* inet_ntop.c -- convert IPv4 and IPv6 addresses from binary to text form
+
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/*
+ * Copyright (c) 1996-1999 by Internet Software Consortium.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
+ * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
+ * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+
+#include <config.h>
+
+/* Specification. */
+#include "inet_ntop.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+
+#ifndef EAFNOSUPPORT
+# define EAFNOSUPPORT EINVAL
+#endif
+
+#define NS_IN6ADDRSZ 16
+#define NS_INT16SZ 2
+
+/*
+ * WARNING: Don't even consider trying to compile this on a system where
+ * sizeof(int) < 4. sizeof(int) > 4 is fine; all the world's not a VAX.
+ */
+typedef int verify_int_size[2 * sizeof (int) - 7];
+
+static const char *inet_ntop4 (const unsigned char *src, char *dst, socklen_t size);
+#if HAVE_IPV6
+static const char *inet_ntop6 (const unsigned char *src, char *dst, socklen_t size);
+#endif
+
+
+/* char *
+ * inet_ntop(af, src, dst, size)
+ * convert a network format address to presentation format.
+ * return:
+ * pointer to presentation format address (`dst'), or NULL (see errno).
+ * author:
+ * Paul Vixie, 1996.
+ */
+const char *
+inet_ntop (int af, const void *restrict src,
+ char *restrict dst, socklen_t cnt)
+{
+ switch (af)
+ {
+#if HAVE_IPV4
+ case AF_INET:
+ return (inet_ntop4 (src, dst, cnt));
+#endif
+
+#if HAVE_IPV6
+ case AF_INET6:
+ return (inet_ntop6 (src, dst, cnt));
+#endif
+
+ default:
+ errno = EAFNOSUPPORT;
+ return (NULL);
+ }
+ /* NOTREACHED */
+}
+
+/* const char *
+ * inet_ntop4(src, dst, size)
+ * format an IPv4 address
+ * return:
+ * `dst' (as a const)
+ * notes:
+ * (1) uses no statics
+ * (2) takes a u_char* not an in_addr as input
+ * author:
+ * Paul Vixie, 1996.
+ */
+static const char *
+inet_ntop4 (const unsigned char *src, char *dst, socklen_t size)
+{
+ char tmp[sizeof "255.255.255.255"];
+ int len;
+
+ len = sprintf (tmp, "%u.%u.%u.%u", src[0], src[1], src[2], src[3]);
+ if (len < 0)
+ return NULL;
+
+ if (len > size)
+ {
+ errno = ENOSPC;
+ return NULL;
+ }
+
+ return strcpy (dst, tmp);
+}
+
+#if HAVE_IPV6
+
+/* const char *
+ * inet_ntop6(src, dst, size)
+ * convert IPv6 binary address into presentation (printable) format
+ * author:
+ * Paul Vixie, 1996.
+ */
+static const char *
+inet_ntop6 (const unsigned char *src, char *dst, socklen_t size)
+{
+ /*
+ * Note that int32_t and int16_t need only be "at least" large enough
+ * to contain a value of the specified size. On some systems, like
+ * Crays, there is no such thing as an integer variable with 16 bits.
+ * Keep this in mind if you think this function should have been coded
+ * to use pointer overlays. All the world's not a VAX.
+ */
+ char tmp[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255"], *tp;
+ struct
+ {
+ int base, len;
+ } best, cur;
+ unsigned int words[NS_IN6ADDRSZ / NS_INT16SZ];
+ int i;
+
+ /*
+ * Preprocess:
+ * Copy the input (bytewise) array into a wordwise array.
+ * Find the longest run of 0x00's in src[] for :: shorthanding.
+ */
+ memset (words, '\0', sizeof words);
+ for (i = 0; i < NS_IN6ADDRSZ; i += 2)
+ words[i / 2] = (src[i] << 8) | src[i + 1];
+ best.base = -1;
+ cur.base = -1;
+ for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++)
+ {
+ if (words[i] == 0)
+ {
+ if (cur.base == -1)
+ cur.base = i, cur.len = 1;
+ else
+ cur.len++;
+ }
+ else
+ {
+ if (cur.base != -1)
+ {
+ if (best.base == -1 || cur.len > best.len)
+ best = cur;
+ cur.base = -1;
+ }
+ }
+ }
+ if (cur.base != -1)
+ {
+ if (best.base == -1 || cur.len > best.len)
+ best = cur;
+ }
+ if (best.base != -1 && best.len < 2)
+ best.base = -1;
+
+ /*
+ * Format the result.
+ */
+ tp = tmp;
+ for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++)
+ {
+ /* Are we inside the best run of 0x00's? */
+ if (best.base != -1 && i >= best.base && i < (best.base + best.len))
+ {
+ if (i == best.base)
+ *tp++ = ':';
+ continue;
+ }
+ /* Are we following an initial run of 0x00s or any real hex? */
+ if (i != 0)
+ *tp++ = ':';
+ /* Is this address an encapsulated IPv4? */
+ if (i == 6 && best.base == 0 &&
+ (best.len == 6 || (best.len == 5 && words[5] == 0xffff)))
+ {
+ if (!inet_ntop4 (src + 12, tp, sizeof tmp - (tp - tmp)))
+ return (NULL);
+ tp += strlen (tp);
+ break;
+ }
+ {
+ int len = sprintf (tp, "%x", words[i]);
+ if (len < 0)
+ return NULL;
+ tp += len;
+ }
+ }
+ /* Was it a trailing run of 0x00's? */
+ if (best.base != -1 && (best.base + best.len) ==
+ (NS_IN6ADDRSZ / NS_INT16SZ))
+ *tp++ = ':';
+ *tp++ = '\0';
+
+ /*
+ * Check for overflow, copy, and we're done.
+ */
+ if ((socklen_t) (tp - tmp) > size)
+ {
+ errno = ENOSPC;
+ return NULL;
+ }
+
+ return strcpy (dst, tmp);
+}
+
+#endif
diff --git a/lib/inet_ntop.h b/lib/inet_ntop.h
new file mode 100644
index 0000000..bd1e085
--- /dev/null
+++ b/lib/inet_ntop.h
@@ -0,0 +1,42 @@
+/* Convert internet address from internal to printable, presentable format.
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+/* Converts an internet address from internal format to a printable,
+ presentable format.
+ AF is an internet address family, such as AF_INET or AF_INET6.
+ SRC points to a 'struct in_addr' (for AF_INET) or 'struct in6_addr'
+ (for AF_INET6).
+ DST points to a buffer having room for CNT bytes.
+ The printable representation of the address (in numeric form, not
+ surrounded by [...], no reverse DNS is done) is placed in DST, and
+ DST is returned. If an error occurs, the return value is NULL and
+ errno is set. If CNT bytes are not sufficient to hold the result,
+ the return value is NULL and errno is set to ENOSPC. A good value
+ for CNT is 46.
+
+ For more details, see the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/inet_ntop.html>. */
+
+#if !HAVE_DECL_INET_NTOP
+extern const char *inet_ntop (int af, const void *restrict src,
+ char *restrict dst, socklen_t cnt);
+#endif
diff --git a/lib/intprops.h b/lib/intprops.h
new file mode 100644
index 0000000..34f971c
--- /dev/null
+++ b/lib/intprops.h
@@ -0,0 +1,78 @@
+/* intprops.h -- properties of integer types
+
+ Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <limits.h>
+
+/* The extra casts in the following macros work around compiler bugs,
+ e.g., in Cray C 5.0.3.0. */
+
+/* True if the arithmetic type T is an integer type. bool counts as
+ an integer. */
+#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1)
+
+/* True if negative values of the signed integer type T use two's
+ complement, ones' complement, or signed magnitude representation,
+ respectively. Much GNU code assumes two's complement, but some
+ people like to be portable to all possible C hosts. */
+#define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
+#define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0)
+#define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1)
+
+/* True if the arithmetic type T is signed. */
+#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+
+/* The maximum and minimum values for the integer type T. These
+ macros have undefined behavior if T is signed and has padding bits.
+ If this is a problem for you, please let us know how to fix it for
+ your host. */
+#define TYPE_MINIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) 0 \
+ : TYPE_SIGNED_MAGNITUDE (t) \
+ ? ~ (t) 0 \
+ : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
+#define TYPE_MAXIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) -1 \
+ : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+
+/* Return zero if T can be determined to be an unsigned type.
+ Otherwise, return 1.
+ When compiling with GCC, INT_STRLEN_BOUND uses this macro to obtain a
+ tighter bound. Otherwise, it overestimates the true bound by one byte
+ when applied to unsigned types of size 2, 4, 16, ... bytes.
+ The symbol signed_type_or_expr__ is private to this header file. */
+#if __GNUC__ >= 2
+# define signed_type_or_expr__(t) TYPE_SIGNED (__typeof__ (t))
+#else
+# define signed_type_or_expr__(t) 1
+#endif
+
+/* Bound on length of the string representing an integer type or expression T.
+ Subtract 1 for the sign bit if T is signed; log10 (2.0) < 146/485;
+ add 1 for integer division truncation; add 1 more for a minus sign
+ if needed. */
+#define INT_STRLEN_BOUND(t) \
+ ((sizeof (t) * CHAR_BIT - signed_type_or_expr__ (t)) * 146 / 485 \
+ + signed_type_or_expr__ (t) + 1)
+
+/* Bound on buffer size needed to represent an integer type or expression T,
+ including the terminating null. */
+#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1)
diff --git a/lib/inttostr.c b/lib/inttostr.c
new file mode 100644
index 0000000..246d658
--- /dev/null
+++ b/lib/inttostr.c
@@ -0,0 +1,51 @@
+/* inttostr.c -- convert integers to printable strings
+
+ Copyright (C) 2001, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert */
+
+#include <config.h>
+
+#include "inttostr.h"
+
+/* Convert I to a printable string in BUF, which must be at least
+ INT_BUFSIZE_BOUND (INTTYPE) bytes long. Return the address of the
+ printable string, which need not start at BUF. */
+
+char *
+inttostr (inttype i, char *buf)
+{
+ char *p = buf + INT_STRLEN_BOUND (inttype);
+ *p = 0;
+
+ if (i < 0)
+ {
+ do
+ *--p = '0' - i % 10;
+ while ((i /= 10) != 0);
+
+ *--p = '-';
+ }
+ else
+ {
+ do
+ *--p = '0' + i % 10;
+ while ((i /= 10) != 0);
+ }
+
+ return p;
+}
diff --git a/lib/inttostr.h b/lib/inttostr.h
new file mode 100644
index 0000000..31258ca
--- /dev/null
+++ b/lib/inttostr.h
@@ -0,0 +1,30 @@
+/* inttostr.h -- convert integers to printable strings
+
+ Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert */
+
+#include <stdint.h>
+#include <sys/types.h>
+
+#include "intprops.h"
+
+char *offtostr (off_t, char *);
+char *imaxtostr (intmax_t, char *);
+char *umaxtostr (uintmax_t, char *);
+char *uinttostr (unsigned int, char *);
diff --git a/lib/inttypes_.h b/lib/inttypes_.h
new file mode 100644
index 0000000..3d3ead6
--- /dev/null
+++ b/lib/inttypes_.h
@@ -0,0 +1,1095 @@
+/* Copyright (C) 2006-2007 Free Software Foundation, Inc.
+ Written by Paul Eggert, Bruno Haible, Derek Price.
+ This file is part of gnulib.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2.1, 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 Lesser General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Include the original <inttypes.h> if it exists, and if this file
+ has not been included yet or if this file includes gnulib stdint.h
+ which in turn includes this file. */
+#if ! defined INTTYPES_H || defined _GL_JUST_INCLUDE_ABSOLUTE_INTTYPES_H
+# if @HAVE_INTTYPES_H@
+# include @ABSOLUTE_INTTYPES_H@
+# endif
+#endif
+
+#if ! defined INTTYPES_H && ! defined _GL_JUST_INCLUDE_ABSOLUTE_INTTYPES_H
+#define INTTYPES_H
+
+/*
+ * ISO C 99 <inttypes.h> for platforms that lack it.
+ * <http://www.opengroup.org/susv3xbd/inttypes.h.html>
+ */
+
+/* Include <stdint.h> or the gnulib replacement. */
+#include <stdint.h>
+/* Get CHAR_BIT. */
+#include <limits.h>
+
+#if !(INT_MIN == INT32_MIN && INT_MAX == INT32_MAX)
+# error "This file assumes that 'int' has exactly 32 bits. Please report your platform and compiler to <bug-gnulib@gnu.org>."
+#endif
+
+/* The definition of GL_LINK_WARNING is copied here. */
+
+/* 7.8.1 Macros for format specifiers */
+
+#if ! defined __cplusplus || defined __STDC_FORMAT_MACROS
+
+# if defined _TNS_R_TARGET
+ /* Tandem NonStop R series and compatible platforms released before
+ July 2005 support %Ld but not %lld. */
+# define _LONG_LONG_FORMAT_PREFIX "L"
+# else
+# define _LONG_LONG_FORMAT_PREFIX "ll"
+# endif
+
+# if !defined PRId8 || @PRI_MACROS_BROKEN@
+# undef PRId8
+# ifdef INT8_MAX
+# define PRId8 "d"
+# endif
+# endif
+# if !defined PRIi8 || @PRI_MACROS_BROKEN@
+# undef PRIi8
+# ifdef INT8_MAX
+# define PRIi8 "i"
+# endif
+# endif
+# if !defined PRIo8 || @PRI_MACROS_BROKEN@
+# undef PRIo8
+# ifdef UINT8_MAX
+# define PRIo8 "o"
+# endif
+# endif
+# if !defined PRIu8 || @PRI_MACROS_BROKEN@
+# undef PRIu8
+# ifdef UINT8_MAX
+# define PRIu8 "u"
+# endif
+# endif
+# if !defined PRIx8 || @PRI_MACROS_BROKEN@
+# undef PRIx8
+# ifdef UINT8_MAX
+# define PRIx8 "x"
+# endif
+# endif
+# if !defined PRIX8 || @PRI_MACROS_BROKEN@
+# undef PRIX8
+# ifdef UINT8_MAX
+# define PRIX8 "X"
+# endif
+# endif
+# if !defined PRId16 || @PRI_MACROS_BROKEN@
+# undef PRId16
+# ifdef INT16_MAX
+# define PRId16 "d"
+# endif
+# endif
+# if !defined PRIi16 || @PRI_MACROS_BROKEN@
+# undef PRIi16
+# ifdef INT16_MAX
+# define PRIi16 "i"
+# endif
+# endif
+# if !defined PRIo16 || @PRI_MACROS_BROKEN@
+# undef PRIo16
+# ifdef UINT16_MAX
+# define PRIo16 "o"
+# endif
+# endif
+# if !defined PRIu16 || @PRI_MACROS_BROKEN@
+# undef PRIu16
+# ifdef UINT16_MAX
+# define PRIu16 "u"
+# endif
+# endif
+# if !defined PRIx16 || @PRI_MACROS_BROKEN@
+# undef PRIx16
+# ifdef UINT16_MAX
+# define PRIx16 "x"
+# endif
+# endif
+# if !defined PRIX16 || @PRI_MACROS_BROKEN@
+# undef PRIX16
+# ifdef UINT16_MAX
+# define PRIX16 "X"
+# endif
+# endif
+# if !defined PRId32 || @PRI_MACROS_BROKEN@
+# undef PRId32
+# ifdef INT32_MAX
+# define PRId32 "d"
+# endif
+# endif
+# if !defined PRIi32 || @PRI_MACROS_BROKEN@
+# undef PRIi32
+# ifdef INT32_MAX
+# define PRIi32 "i"
+# endif
+# endif
+# if !defined PRIo32 || @PRI_MACROS_BROKEN@
+# undef PRIo32
+# ifdef UINT32_MAX
+# define PRIo32 "o"
+# endif
+# endif
+# if !defined PRIu32 || @PRI_MACROS_BROKEN@
+# undef PRIu32
+# ifdef UINT32_MAX
+# define PRIu32 "u"
+# endif
+# endif
+# if !defined PRIx32 || @PRI_MACROS_BROKEN@
+# undef PRIx32
+# ifdef UINT32_MAX
+# define PRIx32 "x"
+# endif
+# endif
+# if !defined PRIX32 || @PRI_MACROS_BROKEN@
+# undef PRIX32
+# ifdef UINT32_MAX
+# define PRIX32 "X"
+# endif
+# endif
+# ifdef INT64_MAX
+# if INT64_MAX == LONG_MAX
+# define _PRI64_PREFIX "l"
+# elif defined _MSC_VER || defined __MINGW32__
+# define _PRI64_PREFIX "I64"
+# elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+# define _PRI64_PREFIX _LONG_LONG_FORMAT_PREFIX
+# endif
+# if !defined PRId64 || @PRI_MACROS_BROKEN@
+# undef PRId64
+# define PRId64 _PRI64_PREFIX "d"
+# endif
+# if !defined PRIi64 || @PRI_MACROS_BROKEN@
+# undef PRIi64
+# define PRIi64 _PRI64_PREFIX "i"
+# endif
+# endif
+# ifdef UINT64_MAX
+# if UINT64_MAX == ULONG_MAX
+# define _PRIu64_PREFIX "l"
+# elif defined _MSC_VER || defined __MINGW32__
+# define _PRIu64_PREFIX "I64"
+# elif @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+# define _PRIu64_PREFIX _LONG_LONG_FORMAT_PREFIX
+# endif
+# if !defined PRIo64 || @PRI_MACROS_BROKEN@
+# undef PRIo64
+# define PRIo64 _PRIu64_PREFIX "o"
+# endif
+# if !defined PRIu64 || @PRI_MACROS_BROKEN@
+# undef PRIu64
+# define PRIu64 _PRIu64_PREFIX "u"
+# endif
+# if !defined PRIx64 || @PRI_MACROS_BROKEN@
+# undef PRIx64
+# define PRIx64 _PRIu64_PREFIX "x"
+# endif
+# if !defined PRIX64 || @PRI_MACROS_BROKEN@
+# undef PRIX64
+# define PRIX64 _PRIu64_PREFIX "X"
+# endif
+# endif
+
+# if !defined PRIdLEAST8 || @PRI_MACROS_BROKEN@
+# undef PRIdLEAST8
+# define PRIdLEAST8 "d"
+# endif
+# if !defined PRIiLEAST8 || @PRI_MACROS_BROKEN@
+# undef PRIiLEAST8
+# define PRIiLEAST8 "i"
+# endif
+# if !defined PRIoLEAST8 || @PRI_MACROS_BROKEN@
+# undef PRIoLEAST8
+# define PRIoLEAST8 "o"
+# endif
+# if !defined PRIuLEAST8 || @PRI_MACROS_BROKEN@
+# undef PRIuLEAST8
+# define PRIuLEAST8 "u"
+# endif
+# if !defined PRIxLEAST8 || @PRI_MACROS_BROKEN@
+# undef PRIxLEAST8
+# define PRIxLEAST8 "x"
+# endif
+# if !defined PRIXLEAST8 || @PRI_MACROS_BROKEN@
+# undef PRIXLEAST8
+# define PRIXLEAST8 "X"
+# endif
+# if !defined PRIdLEAST16 || @PRI_MACROS_BROKEN@
+# undef PRIdLEAST16
+# define PRIdLEAST16 "d"
+# endif
+# if !defined PRIiLEAST16 || @PRI_MACROS_BROKEN@
+# undef PRIiLEAST16
+# define PRIiLEAST16 "i"
+# endif
+# if !defined PRIoLEAST16 || @PRI_MACROS_BROKEN@
+# undef PRIoLEAST16
+# define PRIoLEAST16 "o"
+# endif
+# if !defined PRIuLEAST16 || @PRI_MACROS_BROKEN@
+# undef PRIuLEAST16
+# define PRIuLEAST16 "u"
+# endif
+# if !defined PRIxLEAST16 || @PRI_MACROS_BROKEN@
+# undef PRIxLEAST16
+# define PRIxLEAST16 "x"
+# endif
+# if !defined PRIXLEAST16 || @PRI_MACROS_BROKEN@
+# undef PRIXLEAST16
+# define PRIXLEAST16 "X"
+# endif
+# if !defined PRIdLEAST32 || @PRI_MACROS_BROKEN@
+# undef PRIdLEAST32
+# define PRIdLEAST32 "d"
+# endif
+# if !defined PRIiLEAST32 || @PRI_MACROS_BROKEN@
+# undef PRIiLEAST32
+# define PRIiLEAST32 "i"
+# endif
+# if !defined PRIoLEAST32 || @PRI_MACROS_BROKEN@
+# undef PRIoLEAST32
+# define PRIoLEAST32 "o"
+# endif
+# if !defined PRIuLEAST32 || @PRI_MACROS_BROKEN@
+# undef PRIuLEAST32
+# define PRIuLEAST32 "u"
+# endif
+# if !defined PRIxLEAST32 || @PRI_MACROS_BROKEN@
+# undef PRIxLEAST32
+# define PRIxLEAST32 "x"
+# endif
+# if !defined PRIXLEAST32 || @PRI_MACROS_BROKEN@
+# undef PRIXLEAST32
+# define PRIXLEAST32 "X"
+# endif
+# ifdef INT64_MAX
+# if !defined PRIdLEAST64 || @PRI_MACROS_BROKEN@
+# undef PRIdLEAST64
+# define PRIdLEAST64 PRId64
+# endif
+# if !defined PRIiLEAST64 || @PRI_MACROS_BROKEN@
+# undef PRIiLEAST64
+# define PRIiLEAST64 PRIi64
+# endif
+# endif
+# ifdef UINT64_MAX
+# if !defined PRIoLEAST64 || @PRI_MACROS_BROKEN@
+# undef PRIoLEAST64
+# define PRIoLEAST64 PRIo64
+# endif
+# if !defined PRIuLEAST64 || @PRI_MACROS_BROKEN@
+# undef PRIuLEAST64
+# define PRIuLEAST64 PRIu64
+# endif
+# if !defined PRIxLEAST64 || @PRI_MACROS_BROKEN@
+# undef PRIxLEAST64
+# define PRIxLEAST64 PRIx64
+# endif
+# if !defined PRIXLEAST64 || @PRI_MACROS_BROKEN@
+# undef PRIXLEAST64
+# define PRIXLEAST64 PRIX64
+# endif
+# endif
+
+# if !defined PRIdFAST8 || @PRI_MACROS_BROKEN@
+# undef PRIdFAST8
+# if INT_FAST8_MAX > INT32_MAX
+# define PRIdFAST8 PRId64
+# else
+# define PRIdFAST8 "d"
+# endif
+# endif
+# if !defined PRIiFAST8 || @PRI_MACROS_BROKEN@
+# undef PRIiFAST8
+# if INT_FAST8_MAX > INT32_MAX
+# define PRIiFAST8 PRIi64
+# else
+# define PRIiFAST8 "i"
+# endif
+# endif
+# if !defined PRIoFAST8 || @PRI_MACROS_BROKEN@
+# undef PRIoFAST8
+# if UINT_FAST8_MAX > UINT32_MAX
+# define PRIoFAST8 PRIo64
+# else
+# define PRIoFAST8 "o"
+# endif
+# endif
+# if !defined PRIuFAST8 || @PRI_MACROS_BROKEN@
+# undef PRIuFAST8
+# if UINT_FAST8_MAX > UINT32_MAX
+# define PRIuFAST8 PRIu64
+# else
+# define PRIuFAST8 "u"
+# endif
+# endif
+# if !defined PRIxFAST8 || @PRI_MACROS_BROKEN@
+# undef PRIxFAST8
+# if UINT_FAST8_MAX > UINT32_MAX
+# define PRIxFAST8 PRIx64
+# else
+# define PRIxFAST8 "x"
+# endif
+# endif
+# if !defined PRIXFAST8 || @PRI_MACROS_BROKEN@
+# undef PRIXFAST8
+# if UINT_FAST8_MAX > UINT32_MAX
+# define PRIXFAST8 PRIX64
+# else
+# define PRIXFAST8 "X"
+# endif
+# endif
+# if !defined PRIdFAST16 || @PRI_MACROS_BROKEN@
+# undef PRIdFAST16
+# if INT_FAST16_MAX > INT32_MAX
+# define PRIdFAST16 PRId64
+# else
+# define PRIdFAST16 "d"
+# endif
+# endif
+# if !defined PRIiFAST16 || @PRI_MACROS_BROKEN@
+# undef PRIiFAST16
+# if INT_FAST16_MAX > INT32_MAX
+# define PRIiFAST16 PRIi64
+# else
+# define PRIiFAST16 "i"
+# endif
+# endif
+# if !defined PRIoFAST16 || @PRI_MACROS_BROKEN@
+# undef PRIoFAST16
+# if UINT_FAST16_MAX > UINT32_MAX
+# define PRIoFAST16 PRIo64
+# else
+# define PRIoFAST16 "o"
+# endif
+# endif
+# if !defined PRIuFAST16 || @PRI_MACROS_BROKEN@
+# undef PRIuFAST16
+# if UINT_FAST16_MAX > UINT32_MAX
+# define PRIuFAST16 PRIu64
+# else
+# define PRIuFAST16 "u"
+# endif
+# endif
+# if !defined PRIxFAST16 || @PRI_MACROS_BROKEN@
+# undef PRIxFAST16
+# if UINT_FAST16_MAX > UINT32_MAX
+# define PRIxFAST16 PRIx64
+# else
+# define PRIxFAST16 "x"
+# endif
+# endif
+# if !defined PRIXFAST16 || @PRI_MACROS_BROKEN@
+# undef PRIXFAST16
+# if UINT_FAST16_MAX > UINT32_MAX
+# define PRIXFAST16 PRIX64
+# else
+# define PRIXFAST16 "X"
+# endif
+# endif
+# if !defined PRIdFAST32 || @PRI_MACROS_BROKEN@
+# undef PRIdFAST32
+# if INT_FAST32_MAX > INT32_MAX
+# define PRIdFAST32 PRId64
+# else
+# define PRIdFAST32 "d"
+# endif
+# endif
+# if !defined PRIiFAST32 || @PRI_MACROS_BROKEN@
+# undef PRIiFAST32
+# if INT_FAST32_MAX > INT32_MAX
+# define PRIiFAST32 PRIi64
+# else
+# define PRIiFAST32 "i"
+# endif
+# endif
+# if !defined PRIoFAST32 || @PRI_MACROS_BROKEN@
+# undef PRIoFAST32
+# if UINT_FAST32_MAX > UINT32_MAX
+# define PRIoFAST32 PRIo64
+# else
+# define PRIoFAST32 "o"
+# endif
+# endif
+# if !defined PRIuFAST32 || @PRI_MACROS_BROKEN@
+# undef PRIuFAST32
+# if UINT_FAST32_MAX > UINT32_MAX
+# define PRIuFAST32 PRIu64
+# else
+# define PRIuFAST32 "u"
+# endif
+# endif
+# if !defined PRIxFAST32 || @PRI_MACROS_BROKEN@
+# undef PRIxFAST32
+# if UINT_FAST32_MAX > UINT32_MAX
+# define PRIxFAST32 PRIx64
+# else
+# define PRIxFAST32 "x"
+# endif
+# endif
+# if !defined PRIXFAST32 || @PRI_MACROS_BROKEN@
+# undef PRIXFAST32
+# if UINT_FAST32_MAX > UINT32_MAX
+# define PRIXFAST32 PRIX64
+# else
+# define PRIXFAST32 "X"
+# endif
+# endif
+# ifdef INT64_MAX
+# if !defined PRIdFAST64 || @PRI_MACROS_BROKEN@
+# undef PRIdFAST64
+# define PRIdFAST64 PRId64
+# endif
+# if !defined PRIiFAST64 || @PRI_MACROS_BROKEN@
+# undef PRIiFAST64
+# define PRIiFAST64 PRIi64
+# endif
+# endif
+# ifdef UINT64_MAX
+# if !defined PRIoFAST64 || @PRI_MACROS_BROKEN@
+# undef PRIoFAST64
+# define PRIoFAST64 PRIo64
+# endif
+# if !defined PRIuFAST64 || @PRI_MACROS_BROKEN@
+# undef PRIuFAST64
+# define PRIuFAST64 PRIu64
+# endif
+# if !defined PRIxFAST64 || @PRI_MACROS_BROKEN@
+# undef PRIxFAST64
+# define PRIxFAST64 PRIx64
+# endif
+# if !defined PRIXFAST64 || @PRI_MACROS_BROKEN@
+# undef PRIXFAST64
+# define PRIXFAST64 PRIX64
+# endif
+# endif
+
+# if !defined PRIdMAX || @PRI_MACROS_BROKEN@
+# undef PRIdMAX
+# if INTMAX_MAX > INT32_MAX
+# define PRIdMAX PRId64
+# else
+# define PRIdMAX "ld"
+# endif
+# endif
+# if !defined PRIiMAX || @PRI_MACROS_BROKEN@
+# undef PRIiMAX
+# if INTMAX_MAX > INT32_MAX
+# define PRIiMAX PRIi64
+# else
+# define PRIiMAX "li"
+# endif
+# endif
+# if !defined PRIoMAX || @PRI_MACROS_BROKEN@
+# undef PRIoMAX
+# if UINTMAX_MAX > UINT32_MAX
+# define PRIoMAX PRIo64
+# else
+# define PRIoMAX "lo"
+# endif
+# endif
+# if !defined PRIuMAX || @PRI_MACROS_BROKEN@
+# undef PRIuMAX
+# if UINTMAX_MAX > UINT32_MAX
+# define PRIuMAX PRIu64
+# else
+# define PRIuMAX "lu"
+# endif
+# endif
+# if !defined PRIxMAX || @PRI_MACROS_BROKEN@
+# undef PRIxMAX
+# if UINTMAX_MAX > UINT32_MAX
+# define PRIxMAX PRIx64
+# else
+# define PRIxMAX "lx"
+# endif
+# endif
+# if !defined PRIXMAX || @PRI_MACROS_BROKEN@
+# undef PRIXMAX
+# if UINTMAX_MAX > UINT32_MAX
+# define PRIXMAX PRIX64
+# else
+# define PRIXMAX "lX"
+# endif
+# endif
+
+# if !defined PRIdPTR || @PRI_MACROS_BROKEN@
+# undef PRIdPTR
+# ifdef INTPTR_MAX
+# define PRIdPTR @PRIPTR_PREFIX@ "d"
+# endif
+# endif
+# if !defined PRIiPTR || @PRI_MACROS_BROKEN@
+# undef PRIiPTR
+# ifdef INTPTR_MAX
+# define PRIiPTR @PRIPTR_PREFIX@ "i"
+# endif
+# endif
+# if !defined PRIoPTR || @PRI_MACROS_BROKEN@
+# undef PRIoPTR
+# ifdef UINTPTR_MAX
+# define PRIoPTR @PRIPTR_PREFIX@ "o"
+# endif
+# endif
+# if !defined PRIuPTR || @PRI_MACROS_BROKEN@
+# undef PRIuPTR
+# ifdef UINTPTR_MAX
+# define PRIuPTR @PRIPTR_PREFIX@ "u"
+# endif
+# endif
+# if !defined PRIxPTR || @PRI_MACROS_BROKEN@
+# undef PRIxPTR
+# ifdef UINTPTR_MAX
+# define PRIxPTR @PRIPTR_PREFIX@ "x"
+# endif
+# endif
+# if !defined PRIXPTR || @PRI_MACROS_BROKEN@
+# undef PRIXPTR
+# ifdef UINTPTR_MAX
+# define PRIXPTR @PRIPTR_PREFIX@ "X"
+# endif
+# endif
+
+# if !defined SCNd8 || @PRI_MACROS_BROKEN@
+# undef SCNd8
+# ifdef INT8_MAX
+# define SCNd8 "hhd"
+# endif
+# endif
+# if !defined SCNi8 || @PRI_MACROS_BROKEN@
+# undef SCNi8
+# ifdef INT8_MAX
+# define SCNi8 "hhi"
+# endif
+# endif
+# if !defined SCNo8 || @PRI_MACROS_BROKEN@
+# undef SCNo8
+# ifdef UINT8_MAX
+# define SCNo8 "hho"
+# endif
+# endif
+# if !defined SCNu8 || @PRI_MACROS_BROKEN@
+# undef SCNu8
+# ifdef UINT8_MAX
+# define SCNu8 "hhu"
+# endif
+# endif
+# if !defined SCNx8 || @PRI_MACROS_BROKEN@
+# undef SCNx8
+# ifdef UINT8_MAX
+# define SCNx8 "hhx"
+# endif
+# endif
+# if !defined SCNd16 || @PRI_MACROS_BROKEN@
+# undef SCNd16
+# ifdef INT16_MAX
+# define SCNd16 "hd"
+# endif
+# endif
+# if !defined SCNi16 || @PRI_MACROS_BROKEN@
+# undef SCNi16
+# ifdef INT16_MAX
+# define SCNi16 "hi"
+# endif
+# endif
+# if !defined SCNo16 || @PRI_MACROS_BROKEN@
+# undef SCNo16
+# ifdef UINT16_MAX
+# define SCNo16 "ho"
+# endif
+# endif
+# if !defined SCNu16 || @PRI_MACROS_BROKEN@
+# undef SCNu16
+# ifdef UINT16_MAX
+# define SCNu16 "hu"
+# endif
+# endif
+# if !defined SCNx16 || @PRI_MACROS_BROKEN@
+# undef SCNx16
+# ifdef UINT16_MAX
+# define SCNx16 "hx"
+# endif
+# endif
+# if !defined SCNd32 || @PRI_MACROS_BROKEN@
+# undef SCNd32
+# ifdef INT32_MAX
+# define SCNd32 "d"
+# endif
+# endif
+# if !defined SCNi32 || @PRI_MACROS_BROKEN@
+# undef SCNi32
+# ifdef INT32_MAX
+# define SCNi32 "i"
+# endif
+# endif
+# if !defined SCNo32 || @PRI_MACROS_BROKEN@
+# undef SCNo32
+# ifdef UINT32_MAX
+# define SCNo32 "o"
+# endif
+# endif
+# if !defined SCNu32 || @PRI_MACROS_BROKEN@
+# undef SCNu32
+# ifdef UINT32_MAX
+# define SCNu32 "u"
+# endif
+# endif
+# if !defined SCNx32 || @PRI_MACROS_BROKEN@
+# undef SCNx32
+# ifdef UINT32_MAX
+# define SCNx32 "x"
+# endif
+# endif
+# ifdef INT64_MAX
+# if INT64_MAX == LONG_MAX
+# define _SCN64_PREFIX "l"
+# elif defined _MSC_VER || defined __MINGW32__
+# define _SCN64_PREFIX "I64"
+# elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+# define _SCN64_PREFIX _LONG_LONG_FORMAT_PREFIX
+# endif
+# if !defined SCNd64 || @PRI_MACROS_BROKEN@
+# undef SCNd64
+# define SCNd64 _SCN64_PREFIX "d"
+# endif
+# if !defined SCNi64 || @PRI_MACROS_BROKEN@
+# undef SCNi64
+# define SCNi64 _SCN64_PREFIX "i"
+# endif
+# endif
+# ifdef UINT64_MAX
+# if UINT64_MAX == ULONG_MAX
+# define _SCNu64_PREFIX "l"
+# elif defined _MSC_VER || defined __MINGW32__
+# define _SCNu64_PREFIX "I64"
+# elif @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+# define _SCNu64_PREFIX _LONG_LONG_FORMAT_PREFIX
+# endif
+# if !defined SCNo64 || @PRI_MACROS_BROKEN@
+# undef SCNo64
+# define SCNo64 _SCNu64_PREFIX "o"
+# endif
+# if !defined SCNu64 || @PRI_MACROS_BROKEN@
+# undef SCNu64
+# define SCNu64 _SCNu64_PREFIX "u"
+# endif
+# if !defined SCNx64 || @PRI_MACROS_BROKEN@
+# undef SCNx64
+# define SCNx64 _SCNu64_PREFIX "x"
+# endif
+# endif
+
+# if !defined SCNdLEAST8 || @PRI_MACROS_BROKEN@
+# undef SCNdLEAST8
+# define SCNdLEAST8 "hhd"
+# endif
+# if !defined SCNiLEAST8 || @PRI_MACROS_BROKEN@
+# undef SCNiLEAST8
+# define SCNiLEAST8 "hhi"
+# endif
+# if !defined SCNoLEAST8 || @PRI_MACROS_BROKEN@
+# undef SCNoLEAST8
+# define SCNoLEAST8 "hho"
+# endif
+# if !defined SCNuLEAST8 || @PRI_MACROS_BROKEN@
+# undef SCNuLEAST8
+# define SCNuLEAST8 "hhu"
+# endif
+# if !defined SCNxLEAST8 || @PRI_MACROS_BROKEN@
+# undef SCNxLEAST8
+# define SCNxLEAST8 "hhx"
+# endif
+# if !defined SCNdLEAST16 || @PRI_MACROS_BROKEN@
+# undef SCNdLEAST16
+# define SCNdLEAST16 "hd"
+# endif
+# if !defined SCNiLEAST16 || @PRI_MACROS_BROKEN@
+# undef SCNiLEAST16
+# define SCNiLEAST16 "hi"
+# endif
+# if !defined SCNoLEAST16 || @PRI_MACROS_BROKEN@
+# undef SCNoLEAST16
+# define SCNoLEAST16 "ho"
+# endif
+# if !defined SCNuLEAST16 || @PRI_MACROS_BROKEN@
+# undef SCNuLEAST16
+# define SCNuLEAST16 "hu"
+# endif
+# if !defined SCNxLEAST16 || @PRI_MACROS_BROKEN@
+# undef SCNxLEAST16
+# define SCNxLEAST16 "hx"
+# endif
+# if !defined SCNdLEAST32 || @PRI_MACROS_BROKEN@
+# undef SCNdLEAST32
+# define SCNdLEAST32 "d"
+# endif
+# if !defined SCNiLEAST32 || @PRI_MACROS_BROKEN@
+# undef SCNiLEAST32
+# define SCNiLEAST32 "i"
+# endif
+# if !defined SCNoLEAST32 || @PRI_MACROS_BROKEN@
+# undef SCNoLEAST32
+# define SCNoLEAST32 "o"
+# endif
+# if !defined SCNuLEAST32 || @PRI_MACROS_BROKEN@
+# undef SCNuLEAST32
+# define SCNuLEAST32 "u"
+# endif
+# if !defined SCNxLEAST32 || @PRI_MACROS_BROKEN@
+# undef SCNxLEAST32
+# define SCNxLEAST32 "x"
+# endif
+# ifdef INT64_MAX
+# if !defined SCNdLEAST64 || @PRI_MACROS_BROKEN@
+# undef SCNdLEAST64
+# define SCNdLEAST64 SCNd64
+# endif
+# if !defined SCNiLEAST64 || @PRI_MACROS_BROKEN@
+# undef SCNiLEAST64
+# define SCNiLEAST64 SCNi64
+# endif
+# endif
+# ifdef UINT64_MAX
+# if !defined SCNoLEAST64 || @PRI_MACROS_BROKEN@
+# undef SCNoLEAST64
+# define SCNoLEAST64 SCNo64
+# endif
+# if !defined SCNuLEAST64 || @PRI_MACROS_BROKEN@
+# undef SCNuLEAST64
+# define SCNuLEAST64 SCNu64
+# endif
+# if !defined SCNxLEAST64 || @PRI_MACROS_BROKEN@
+# undef SCNxLEAST64
+# define SCNxLEAST64 SCNx64
+# endif
+# endif
+
+# if !defined SCNdFAST8 || @PRI_MACROS_BROKEN@
+# undef SCNdFAST8
+# if INT_FAST8_MAX > INT32_MAX
+# define SCNdFAST8 SCNd64
+# elif INT_FAST8_MAX == 0x7fff
+# define SCNdFAST8 "hd"
+# elif INT_FAST8_MAX == 0x7f
+# define SCNdFAST8 "hhd"
+# else
+# define SCNdFAST8 "d"
+# endif
+# endif
+# if !defined SCNiFAST8 || @PRI_MACROS_BROKEN@
+# undef SCNiFAST8
+# if INT_FAST8_MAX > INT32_MAX
+# define SCNiFAST8 SCNi64
+# elif INT_FAST8_MAX == 0x7fff
+# define SCNiFAST8 "hi"
+# elif INT_FAST8_MAX == 0x7f
+# define SCNiFAST8 "hhi"
+# else
+# define SCNiFAST8 "i"
+# endif
+# endif
+# if !defined SCNoFAST8 || @PRI_MACROS_BROKEN@
+# undef SCNoFAST8
+# if UINT_FAST8_MAX > UINT32_MAX
+# define SCNoFAST8 SCNo64
+# elif UINT_FAST8_MAX == 0xffff
+# define SCNoFAST8 "ho"
+# elif UINT_FAST8_MAX == 0xff
+# define SCNoFAST8 "hho"
+# else
+# define SCNoFAST8 "o"
+# endif
+# endif
+# if !defined SCNuFAST8 || @PRI_MACROS_BROKEN@
+# undef SCNuFAST8
+# if UINT_FAST8_MAX > UINT32_MAX
+# define SCNuFAST8 SCNu64
+# elif UINT_FAST8_MAX == 0xffff
+# define SCNuFAST8 "hu"
+# elif UINT_FAST8_MAX == 0xff
+# define SCNuFAST8 "hhu"
+# else
+# define SCNuFAST8 "u"
+# endif
+# endif
+# if !defined SCNxFAST8 || @PRI_MACROS_BROKEN@
+# undef SCNxFAST8
+# if UINT_FAST8_MAX > UINT32_MAX
+# define SCNxFAST8 SCNx64
+# elif UINT_FAST8_MAX == 0xffff
+# define SCNxFAST8 "hx"
+# elif UINT_FAST8_MAX == 0xff
+# define SCNxFAST8 "hhx"
+# else
+# define SCNxFAST8 "x"
+# endif
+# endif
+# if !defined SCNdFAST16 || @PRI_MACROS_BROKEN@
+# undef SCNdFAST16
+# if INT_FAST16_MAX > INT32_MAX
+# define SCNdFAST16 SCNd64
+# elif INT_FAST16_MAX == 0x7fff
+# define SCNdFAST16 "hd"
+# else
+# define SCNdFAST16 "d"
+# endif
+# endif
+# if !defined SCNiFAST16 || @PRI_MACROS_BROKEN@
+# undef SCNiFAST16
+# if INT_FAST16_MAX > INT32_MAX
+# define SCNiFAST16 SCNi64
+# elif INT_FAST16_MAX == 0x7fff
+# define SCNiFAST16 "hi"
+# else
+# define SCNiFAST16 "i"
+# endif
+# endif
+# if !defined SCNoFAST16 || @PRI_MACROS_BROKEN@
+# undef SCNoFAST16
+# if UINT_FAST16_MAX > UINT32_MAX
+# define SCNoFAST16 SCNo64
+# elif UINT_FAST16_MAX == 0xffff
+# define SCNoFAST16 "ho"
+# else
+# define SCNoFAST16 "o"
+# endif
+# endif
+# if !defined SCNuFAST16 || @PRI_MACROS_BROKEN@
+# undef SCNuFAST16
+# if UINT_FAST16_MAX > UINT32_MAX
+# define SCNuFAST16 SCNu64
+# elif UINT_FAST16_MAX == 0xffff
+# define SCNuFAST16 "hu"
+# else
+# define SCNuFAST16 "u"
+# endif
+# endif
+# if !defined SCNxFAST16 || @PRI_MACROS_BROKEN@
+# undef SCNxFAST16
+# if UINT_FAST16_MAX > UINT32_MAX
+# define SCNxFAST16 SCNx64
+# elif UINT_FAST16_MAX == 0xffff
+# define SCNxFAST16 "hx"
+# else
+# define SCNxFAST16 "x"
+# endif
+# endif
+# if !defined SCNdFAST32 || @PRI_MACROS_BROKEN@
+# undef SCNdFAST32
+# if INT_FAST32_MAX > INT32_MAX
+# define SCNdFAST32 SCNd64
+# else
+# define SCNdFAST32 "d"
+# endif
+# endif
+# if !defined SCNiFAST32 || @PRI_MACROS_BROKEN@
+# undef SCNiFAST32
+# if INT_FAST32_MAX > INT32_MAX
+# define SCNiFAST32 SCNi64
+# else
+# define SCNiFAST32 "i"
+# endif
+# endif
+# if !defined SCNoFAST32 || @PRI_MACROS_BROKEN@
+# undef SCNoFAST32
+# if UINT_FAST32_MAX > UINT32_MAX
+# define SCNoFAST32 SCNo64
+# else
+# define SCNoFAST32 "o"
+# endif
+# endif
+# if !defined SCNuFAST32 || @PRI_MACROS_BROKEN@
+# undef SCNuFAST32
+# if UINT_FAST32_MAX > UINT32_MAX
+# define SCNuFAST32 SCNu64
+# else
+# define SCNuFAST32 "u"
+# endif
+# endif
+# if !defined SCNxFAST32 || @PRI_MACROS_BROKEN@
+# undef SCNxFAST32
+# if UINT_FAST32_MAX > UINT32_MAX
+# define SCNxFAST32 SCNx64
+# else
+# define SCNxFAST32 "x"
+# endif
+# endif
+# ifdef INT64_MAX
+# if !defined SCNdFAST64 || @PRI_MACROS_BROKEN@
+# undef SCNdFAST64
+# define SCNdFAST64 SCNd64
+# endif
+# if !defined SCNiFAST64 || @PRI_MACROS_BROKEN@
+# undef SCNiFAST64
+# define SCNiFAST64 SCNi64
+# endif
+# endif
+# ifdef UINT64_MAX
+# if !defined SCNoFAST64 || @PRI_MACROS_BROKEN@
+# undef SCNoFAST64
+# define SCNoFAST64 SCNo64
+# endif
+# if !defined SCNuFAST64 || @PRI_MACROS_BROKEN@
+# undef SCNuFAST64
+# define SCNuFAST64 SCNu64
+# endif
+# if !defined SCNxFAST64 || @PRI_MACROS_BROKEN@
+# undef SCNxFAST64
+# define SCNxFAST64 SCNx64
+# endif
+# endif
+
+# if !defined SCNdMAX || @PRI_MACROS_BROKEN@
+# undef SCNdMAX
+# if INTMAX_MAX > INT32_MAX
+# define SCNdMAX SCNd64
+# else
+# define SCNdMAX "ld"
+# endif
+# endif
+# if !defined SCNiMAX || @PRI_MACROS_BROKEN@
+# undef SCNiMAX
+# if INTMAX_MAX > INT32_MAX
+# define SCNiMAX SCNi64
+# else
+# define SCNiMAX "li"
+# endif
+# endif
+# if !defined SCNoMAX || @PRI_MACROS_BROKEN@
+# undef SCNoMAX
+# if UINTMAX_MAX > UINT32_MAX
+# define SCNoMAX SCNo64
+# else
+# define SCNoMAX "lo"
+# endif
+# endif
+# if !defined SCNuMAX || @PRI_MACROS_BROKEN@
+# undef SCNuMAX
+# if UINTMAX_MAX > UINT32_MAX
+# define SCNuMAX SCNu64
+# else
+# define SCNuMAX "lu"
+# endif
+# endif
+# if !defined SCNxMAX || @PRI_MACROS_BROKEN@
+# undef SCNxMAX
+# if UINTMAX_MAX > UINT32_MAX
+# define SCNxMAX SCNx64
+# else
+# define SCNxMAX "lx"
+# endif
+# endif
+
+# if !defined SCNdPTR || @PRI_MACROS_BROKEN@
+# undef SCNdPTR
+# ifdef INTPTR_MAX
+# define SCNdPTR @PRIPTR_PREFIX@ "d"
+# endif
+# endif
+# if !defined SCNiPTR || @PRI_MACROS_BROKEN@
+# undef SCNiPTR
+# ifdef INTPTR_MAX
+# define SCNiPTR @PRIPTR_PREFIX@ "i"
+# endif
+# endif
+# if !defined SCNoPTR || @PRI_MACROS_BROKEN@
+# undef SCNoPTR
+# ifdef UINTPTR_MAX
+# define SCNoPTR @PRIPTR_PREFIX@ "o"
+# endif
+# endif
+# if !defined SCNuPTR || @PRI_MACROS_BROKEN@
+# undef SCNuPTR
+# ifdef UINTPTR_MAX
+# define SCNuPTR @PRIPTR_PREFIX@ "u"
+# endif
+# endif
+# if !defined SCNxPTR || @PRI_MACROS_BROKEN@
+# undef SCNxPTR
+# ifdef UINTPTR_MAX
+# define SCNxPTR @PRIPTR_PREFIX@ "x"
+# endif
+# endif
+
+#endif
+
+/* 7.8.2 Functions for greatest-width integer types */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if @GNULIB_IMAXABS@
+# if !@HAVE_DECL_IMAXABS@
+extern intmax_t imaxabs (intmax_t);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef imaxabs
+# define imaxabs(a) \
+ (GL_LINK_WARNING ("imaxabs is unportable - " \
+ "use gnulib module imaxabs for portability"), \
+ imaxabs (a))
+#endif
+
+#if @GNULIB_IMAXDIV@
+# if !@HAVE_DECL_IMAXDIV@
+typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t;
+extern imaxdiv_t imaxdiv (intmax_t, intmax_t);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef imaxdiv
+# define imaxdiv(a,b) \
+ (GL_LINK_WARNING ("imaxdiv is unportable - " \
+ "use gnulib module imaxdiv for portability"), \
+ imaxdiv (a, b))
+#endif
+
+#if @GNULIB_STRTOIMAX@
+# if !@HAVE_DECL_STRTOIMAX@
+extern intmax_t strtoimax (const char *, char **, int);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtoimax
+# define strtoimax(p,e,b) \
+ (GL_LINK_WARNING ("strtoimax is unportable - " \
+ "use gnulib module strtoimax for portability"), \
+ strtoimax (p, e, b))
+#endif
+
+#if @GNULIB_STRTOUMAX@
+# if !@HAVE_DECL_STRTOUMAX@
+extern uintmax_t strtoumax (const char *, char **, int);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtoumax
+# define strtoumax(p,e,b) \
+ (GL_LINK_WARNING ("strtoumax is unportable - " \
+ "use gnulib module strtoumax for portability"), \
+ strtoumax (p, e, b))
+#endif
+
+/* Don't bother defining or declaring wcstoimax and wcstoumax, since
+ wide-character functions like this are hardly ever useful. */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* INTTYPES_H */
diff --git a/lib/isapipe.c b/lib/isapipe.c
new file mode 100644
index 0000000..83a9bf2
--- /dev/null
+++ b/lib/isapipe.c
@@ -0,0 +1,91 @@
+/* Test whether a file descriptor is a pipe.
+
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "isapipe.h"
+
+#include <errno.h>
+#include <stdbool.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+/* The maximum link count for pipes; (nlink_t) -1 if not known. */
+#ifndef PIPE_LINK_COUNT_MAX
+# define PIPE_LINK_COUNT_MAX ((nlink_t) (-1))
+#endif
+
+/* Return 1 if FD is a pipe, 0 if not, -1 (setting errno) on error.
+
+ Test fairly strictly whether FD is a pipe. lseek and checking for
+ ESPIPE does not suffice, since many non-pipe files cause lseek to
+ fail with errno == ESPIPE. */
+
+int
+isapipe (int fd)
+{
+ nlink_t pipe_link_count_max = PIPE_LINK_COUNT_MAX;
+ bool check_for_fifo = (HAVE_FIFO_PIPES == 1);
+ struct stat st;
+ int fstat_result = fstat (fd, &st);
+
+ if (fstat_result != 0)
+ return fstat_result;
+
+ /* We want something that succeeds only for pipes, but on
+ POSIX-conforming hosts S_ISFIFO succeeds for both FIFOs and pipes
+ and we know of no portable, reliable way to distinguish them in
+ general. However, in practice pipes always have a link count <=
+ PIPE_LINK_COUNT_MAX (unless someone attaches them to the file
+ system name space using fattach, in which case they're not really
+ pipes any more), so test for that as well.
+
+ On Darwin 7.7, pipes are sockets, so check for those instead. */
+
+ if (! ((HAVE_FIFO_PIPES == 0 || HAVE_FIFO_PIPES == 1)
+ && PIPE_LINK_COUNT_MAX != (nlink_t) -1)
+ && (S_ISFIFO (st.st_mode) | S_ISSOCK (st.st_mode)))
+ {
+ int fd_pair[2];
+ int pipe_result = pipe (fd_pair);
+ if (pipe_result != 0)
+ return pipe_result;
+ else
+ {
+ struct stat pipe_st;
+ int fstat_pipe_result = fstat (fd_pair[0], &pipe_st);
+ int fstat_pipe_errno = errno;
+ close (fd_pair[0]);
+ close (fd_pair[1]);
+ if (fstat_pipe_result != 0)
+ {
+ errno = fstat_pipe_errno;
+ return fstat_pipe_result;
+ }
+ check_for_fifo = (S_ISFIFO (pipe_st.st_mode) != 0);
+ pipe_link_count_max = pipe_st.st_nlink;
+ }
+ }
+
+ return
+ (st.st_nlink <= pipe_link_count_max
+ && (check_for_fifo ? S_ISFIFO (st.st_mode) : S_ISSOCK (st.st_mode)));
+}
diff --git a/lib/isapipe.h b/lib/isapipe.h
new file mode 100644
index 0000000..c108e30
--- /dev/null
+++ b/lib/isapipe.h
@@ -0,0 +1,6 @@
+/* Whether pipes are FIFOs; -1 if not known. */
+#ifndef HAVE_FIFO_PIPES
+# define HAVE_FIFO_PIPES (-1)
+#endif
+
+int isapipe (int fd);
diff --git a/lib/lchmod.h b/lib/lchmod.h
new file mode 100644
index 0000000..d12f94a
--- /dev/null
+++ b/lib/lchmod.h
@@ -0,0 +1,35 @@
+/* Provide a replacement for lchmod on hosts that lack it.
+
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#ifndef HAVE_LCHMOD
+
+/* The lchmod replacement follows symbolic links. Callers should take
+ this into account; lchmod should be applied only to arguments that
+ are known to not be symbolic links. On hosts that lack lchmod,
+ this can lead to race conditions between the check and the
+ invocation of lchmod, but we know of no workarounds that are
+ reliable in general. You might try requesting support for lchmod
+ from your operating system supplier. */
+
+# define lchmod chmod
+#endif
diff --git a/lib/lchown.c b/lib/lchown.c
new file mode 100644
index 0000000..fa0826e
--- /dev/null
+++ b/lib/lchown.c
@@ -0,0 +1,47 @@
+/* Provide a stub lchown function for systems that lack it.
+
+ Copyright (C) 1998, 1999, 2002, 2004, 2006 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+
+#include "lchown.h"
+
+#include <sys/stat.h>
+
+/* Work just like chown, except when FILE is a symbolic link.
+ In that case, set errno to EOPNOTSUPP and return -1.
+ But if autoconf tests determined that chown modifies
+ symlinks, then just call chown. */
+
+int
+lchown (const char *file, uid_t uid, gid_t gid)
+{
+#if ! CHOWN_MODIFIES_SYMLINK
+ struct stat stats;
+
+ if (lstat (file, &stats) == 0 && S_ISLNK (stats.st_mode))
+ {
+ errno = EOPNOTSUPP;
+ return -1;
+ }
+#endif
+
+ return chown (file, uid, gid);
+}
diff --git a/lib/lchown.h b/lib/lchown.h
new file mode 100644
index 0000000..6816d1f
--- /dev/null
+++ b/lib/lchown.h
@@ -0,0 +1,42 @@
+/* Declare a replacement for lchown on hosts that lack it.
+
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <errno.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#if HAVE_DECL_LCHOWN
+# if ! HAVE_LCHOWN
+# undef lchown
+# define lchown rpl_chown
+# endif
+#else
+int lchown (char const *, uid_t, gid_t);
+#endif
+
+/* Some systems don't have EOPNOTSUPP. */
+#ifndef EOPNOTSUPP
+# ifdef ENOTSUP
+# define EOPNOTSUPP ENOTSUP
+# else
+/* Some systems don't have ENOTSUP either. */
+# define EOPNOTSUPP EINVAL
+# endif
+#endif
diff --git a/lib/linebuffer.c b/lib/linebuffer.c
new file mode 100644
index 0000000..3f1e45b
--- /dev/null
+++ b/lib/linebuffer.c
@@ -0,0 +1,96 @@
+/* linebuffer.c -- read arbitrarily long lines
+
+ Copyright (C) 1986, 1991, 1998, 1999, 2001, 2003, 2004, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Richard Stallman. */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include "linebuffer.h"
+#include "xalloc.h"
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+/* Initialize linebuffer LINEBUFFER for use. */
+
+void
+initbuffer (struct linebuffer *linebuffer)
+{
+ memset (linebuffer, 0, sizeof *linebuffer);
+}
+
+/* Read an arbitrarily long line of text from STREAM into LINEBUFFER.
+ Keep the newline; append a newline if it's the last line of a file
+ that ends in a non-newline character. Do not null terminate.
+ Therefore the stream can contain NUL bytes, and the length
+ (including the newline) is returned in linebuffer->length.
+ Return NULL when stream is empty. Return NULL and set errno upon
+ error; callers can distinguish this case from the empty case by
+ invoking ferror (stream).
+ Otherwise, return LINEBUFFER. */
+struct linebuffer *
+readlinebuffer (struct linebuffer *linebuffer, FILE *stream)
+{
+ int c;
+ char *buffer = linebuffer->buffer;
+ char *p = linebuffer->buffer;
+ char *end = buffer + linebuffer->size; /* Sentinel. */
+
+ if (feof (stream))
+ return NULL;
+
+ do
+ {
+ c = getc (stream);
+ if (c == EOF)
+ {
+ if (p == buffer || ferror (stream))
+ return NULL;
+ if (p[-1] == '\n')
+ break;
+ c = '\n';
+ }
+ if (p == end)
+ {
+ size_t oldsize = linebuffer->size;
+ buffer = x2realloc (buffer, &linebuffer->size);
+ p = buffer + oldsize;
+ linebuffer->buffer = buffer;
+ end = buffer + linebuffer->size;
+ }
+ *p++ = c;
+ }
+ while (c != '\n');
+
+ linebuffer->length = p - buffer;
+ return linebuffer;
+}
+
+/* Free the buffer that was allocated for linebuffer LINEBUFFER. */
+
+void
+freebuffer (struct linebuffer *linebuffer)
+{
+ free (linebuffer->buffer);
+}
diff --git a/lib/linebuffer.h b/lib/linebuffer.h
new file mode 100644
index 0000000..16b4b5a
--- /dev/null
+++ b/lib/linebuffer.h
@@ -0,0 +1,46 @@
+/* linebuffer.h -- declarations for reading arbitrarily long lines
+
+ Copyright (C) 1986, 1991, 1998, 1999, 2002, 2003 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#if !defined LINEBUFFER_H
+# define LINEBUFFER_H
+
+# include <stdio.h>
+
+/* A `struct linebuffer' holds a line of text. */
+
+struct linebuffer
+{
+ size_t size; /* Allocated. */
+ size_t length; /* Used. */
+ char *buffer;
+};
+
+/* Initialize linebuffer LINEBUFFER for use. */
+void initbuffer (struct linebuffer *linebuffer);
+
+/* Read an arbitrarily long line of text from STREAM into LINEBUFFER.
+ Keep the newline; append a newline if it's the last line of a file
+ that ends in a non-newline character. Do not null terminate.
+ Return LINEBUFFER, except at end of file return 0. */
+struct linebuffer *readlinebuffer (struct linebuffer *linebuffer, FILE *stream);
+
+/* Free linebuffer LINEBUFFER and its data, all allocated with malloc. */
+void freebuffer (struct linebuffer *);
+
+#endif /* LINEBUFFER_H */
diff --git a/lib/localcharset.c b/lib/localcharset.c
new file mode 100644
index 0000000..a0f7cca
--- /dev/null
+++ b/lib/localcharset.c
@@ -0,0 +1,460 @@
+/* Determine a canonical name for the current locale's character encoding.
+
+ Copyright (C) 2000-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "localcharset.h"
+
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#if defined _WIN32 || defined __WIN32__
+# define WIN32_NATIVE
+#endif
+
+#if defined __EMX__
+/* Assume EMX program runs on OS/2, even if compiled under DOS. */
+# define OS2
+#endif
+
+#if !defined WIN32_NATIVE
+# if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+# else
+# if 0 /* see comment below */
+# include <locale.h>
+# endif
+# endif
+# ifdef __CYGWIN__
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+# endif
+#elif defined WIN32_NATIVE
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+#endif
+#if defined OS2
+# define INCL_DOS
+# include <os2.h>
+#endif
+
+#if ENABLE_RELOCATABLE
+# include "relocatable.h"
+#else
+# define relocate(pathname) (pathname)
+#endif
+
+/* Get LIBDIR. */
+#ifndef LIBDIR
+# include "configmake.h"
+#endif
+
+#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
+ /* Win32, Cygwin, OS/2, DOS */
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+#endif
+
+#ifndef DIRECTORY_SEPARATOR
+# define DIRECTORY_SEPARATOR '/'
+#endif
+
+#ifndef ISSLASH
+# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
+#endif
+
+#if HAVE_DECL_GETC_UNLOCKED
+# undef getc
+# define getc getc_unlocked
+#endif
+
+/* The following static variable is declared 'volatile' to avoid a
+ possible multithread problem in the function get_charset_aliases. If we
+ are running in a threaded environment, and if two threads initialize
+ 'charset_aliases' simultaneously, both will produce the same value,
+ and everything will be ok if the two assignments to 'charset_aliases'
+ are atomic. But I don't know what will happen if the two assignments mix. */
+#if __STDC__ != 1
+# define volatile /* empty */
+#endif
+/* Pointer to the contents of the charset.alias file, if it has already been
+ read, else NULL. Its format is:
+ ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */
+static const char * volatile charset_aliases;
+
+/* Return a pointer to the contents of the charset.alias file. */
+static const char *
+get_charset_aliases (void)
+{
+ const char *cp;
+
+ cp = charset_aliases;
+ if (cp == NULL)
+ {
+#if !(defined VMS || defined WIN32_NATIVE || defined __CYGWIN__)
+ FILE *fp;
+ const char *dir;
+ const char *base = "charset.alias";
+ char *file_name;
+
+ /* Make it possible to override the charset.alias location. This is
+ necessary for running the testsuite before "make install". */
+ dir = getenv ("CHARSETALIASDIR");
+ if (dir == NULL || dir[0] == '\0')
+ dir = relocate (LIBDIR);
+
+ /* Concatenate dir and base into freshly allocated file_name. */
+ {
+ size_t dir_len = strlen (dir);
+ size_t base_len = strlen (base);
+ int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
+ file_name = (char *) malloc (dir_len + add_slash + base_len + 1);
+ if (file_name != NULL)
+ {
+ memcpy (file_name, dir, dir_len);
+ if (add_slash)
+ file_name[dir_len] = DIRECTORY_SEPARATOR;
+ memcpy (file_name + dir_len + add_slash, base, base_len + 1);
+ }
+ }
+
+ if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL)
+ /* Out of memory or file not found, treat it as empty. */
+ cp = "";
+ else
+ {
+ /* Parse the file's contents. */
+ char *res_ptr = NULL;
+ size_t res_size = 0;
+
+ for (;;)
+ {
+ int c;
+ char buf1[50+1];
+ char buf2[50+1];
+ size_t l1, l2;
+ char *old_res_ptr;
+
+ c = getc (fp);
+ if (c == EOF)
+ break;
+ if (c == '\n' || c == ' ' || c == '\t')
+ continue;
+ if (c == '#')
+ {
+ /* Skip comment, to end of line. */
+ do
+ c = getc (fp);
+ while (!(c == EOF || c == '\n'));
+ if (c == EOF)
+ break;
+ continue;
+ }
+ ungetc (c, fp);
+ if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
+ break;
+ l1 = strlen (buf1);
+ l2 = strlen (buf2);
+ old_res_ptr = res_ptr;
+ if (res_size == 0)
+ {
+ res_size = l1 + 1 + l2 + 1;
+ res_ptr = (char *) malloc (res_size + 1);
+ }
+ else
+ {
+ res_size += l1 + 1 + l2 + 1;
+ res_ptr = (char *) realloc (res_ptr, res_size + 1);
+ }
+ if (res_ptr == NULL)
+ {
+ /* Out of memory. */
+ res_size = 0;
+ if (old_res_ptr != NULL)
+ free (old_res_ptr);
+ break;
+ }
+ strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
+ strcpy (res_ptr + res_size - (l2 + 1), buf2);
+ }
+ fclose (fp);
+ if (res_size == 0)
+ cp = "";
+ else
+ {
+ *(res_ptr + res_size) = '\0';
+ cp = res_ptr;
+ }
+ }
+
+ if (file_name != NULL)
+ free (file_name);
+
+#else
+
+# if defined VMS
+ /* To avoid the troubles of an extra file charset.alias_vms in the
+ sources of many GNU packages, simply inline the aliases here. */
+ /* The list of encodings is taken from the OpenVMS 7.3-1 documentation
+ "Compaq C Run-Time Library Reference Manual for OpenVMS systems"
+ section 10.7 "Handling Different Character Sets". */
+ cp = "ISO8859-1" "\0" "ISO-8859-1" "\0"
+ "ISO8859-2" "\0" "ISO-8859-2" "\0"
+ "ISO8859-5" "\0" "ISO-8859-5" "\0"
+ "ISO8859-7" "\0" "ISO-8859-7" "\0"
+ "ISO8859-8" "\0" "ISO-8859-8" "\0"
+ "ISO8859-9" "\0" "ISO-8859-9" "\0"
+ /* Japanese */
+ "eucJP" "\0" "EUC-JP" "\0"
+ "SJIS" "\0" "SHIFT_JIS" "\0"
+ "DECKANJI" "\0" "DEC-KANJI" "\0"
+ "SDECKANJI" "\0" "EUC-JP" "\0"
+ /* Chinese */
+ "eucTW" "\0" "EUC-TW" "\0"
+ "DECHANYU" "\0" "DEC-HANYU" "\0"
+ "DECHANZI" "\0" "GB2312" "\0"
+ /* Korean */
+ "DECKOREAN" "\0" "EUC-KR" "\0";
+# endif
+
+# if defined WIN32_NATIVE || defined __CYGWIN__
+ /* To avoid the troubles of installing a separate file in the same
+ directory as the DLL and of retrieving the DLL's directory at
+ runtime, simply inline the aliases here. */
+
+ cp = "CP936" "\0" "GBK" "\0"
+ "CP1361" "\0" "JOHAB" "\0"
+ "CP20127" "\0" "ASCII" "\0"
+ "CP20866" "\0" "KOI8-R" "\0"
+ "CP20936" "\0" "GB2312" "\0"
+ "CP21866" "\0" "KOI8-RU" "\0"
+ "CP28591" "\0" "ISO-8859-1" "\0"
+ "CP28592" "\0" "ISO-8859-2" "\0"
+ "CP28593" "\0" "ISO-8859-3" "\0"
+ "CP28594" "\0" "ISO-8859-4" "\0"
+ "CP28595" "\0" "ISO-8859-5" "\0"
+ "CP28596" "\0" "ISO-8859-6" "\0"
+ "CP28597" "\0" "ISO-8859-7" "\0"
+ "CP28598" "\0" "ISO-8859-8" "\0"
+ "CP28599" "\0" "ISO-8859-9" "\0"
+ "CP28605" "\0" "ISO-8859-15" "\0"
+ "CP38598" "\0" "ISO-8859-8" "\0"
+ "CP51932" "\0" "EUC-JP" "\0"
+ "CP51936" "\0" "GB2312" "\0"
+ "CP51949" "\0" "EUC-KR" "\0"
+ "CP51950" "\0" "EUC-TW" "\0"
+ "CP54936" "\0" "GB18030" "\0"
+ "CP65001" "\0" "UTF-8" "\0";
+# endif
+#endif
+
+ charset_aliases = cp;
+ }
+
+ return cp;
+}
+
+/* Determine the current locale's character encoding, and canonicalize it
+ into one of the canonical names listed in config.charset.
+ The result must not be freed; it is statically allocated.
+ If the canonical name cannot be determined, the result is a non-canonical
+ name. */
+
+#ifdef STATIC
+STATIC
+#endif
+const char *
+locale_charset (void)
+{
+ const char *codeset;
+ const char *aliases;
+
+#if !(defined WIN32_NATIVE || defined OS2)
+
+# if HAVE_LANGINFO_CODESET
+
+ /* Most systems support nl_langinfo (CODESET) nowadays. */
+ codeset = nl_langinfo (CODESET);
+
+# ifdef __CYGWIN__
+ /* Cygwin 2006 does not have locales. nl_langinfo (CODESET) always
+ returns "US-ASCII". As long as this is not fixed, return the suffix
+ of the locale name from the environment variables (if present) or
+ the codepage as a number. */
+ if (codeset != NULL && strcmp (codeset, "US-ASCII") == 0)
+ {
+ const char *locale;
+ static char buf[2 + 10 + 1];
+
+ locale = getenv ("LC_ALL");
+ if (locale == NULL || locale[0] == '\0')
+ {
+ locale = getenv ("LC_CTYPE");
+ if (locale == NULL || locale[0] == '\0')
+ locale = getenv ("LANG");
+ }
+ if (locale != NULL && locale[0] != '\0')
+ {
+ /* If the locale name contains an encoding after the dot, return
+ it. */
+ const char *dot = strchr (locale, '.');
+
+ if (dot != NULL)
+ {
+ const char *modifier;
+
+ dot++;
+ /* Look for the possible @... trailer and remove it, if any. */
+ modifier = strchr (dot, '@');
+ if (modifier == NULL)
+ return dot;
+ if (modifier - dot < sizeof (buf))
+ {
+ memcpy (buf, dot, modifier - dot);
+ buf [modifier - dot] = '\0';
+ return buf;
+ }
+ }
+ }
+
+ /* Woe32 has a function returning the locale's codepage as a number. */
+ sprintf (buf, "CP%u", GetACP ());
+ codeset = buf;
+ }
+# endif
+
+# else
+
+ /* On old systems which lack it, use setlocale or getenv. */
+ const char *locale = NULL;
+
+ /* But most old systems don't have a complete set of locales. Some
+ (like SunOS 4 or DJGPP) have only the C locale. Therefore we don't
+ use setlocale here; it would return "C" when it doesn't support the
+ locale name the user has set. */
+# if 0
+ locale = setlocale (LC_CTYPE, NULL);
+# endif
+ if (locale == NULL || locale[0] == '\0')
+ {
+ locale = getenv ("LC_ALL");
+ if (locale == NULL || locale[0] == '\0')
+ {
+ locale = getenv ("LC_CTYPE");
+ if (locale == NULL || locale[0] == '\0')
+ locale = getenv ("LANG");
+ }
+ }
+
+ /* On some old systems, one used to set locale = "iso8859_1". On others,
+ you set it to "language_COUNTRY.charset". In any case, we resolve it
+ through the charset.alias file. */
+ codeset = locale;
+
+# endif
+
+#elif defined WIN32_NATIVE
+
+ static char buf[2 + 10 + 1];
+
+ /* Woe32 has a function returning the locale's codepage as a number. */
+ sprintf (buf, "CP%u", GetACP ());
+ codeset = buf;
+
+#elif defined OS2
+
+ const char *locale;
+ static char buf[2 + 10 + 1];
+ ULONG cp[3];
+ ULONG cplen;
+
+ /* Allow user to override the codeset, as set in the operating system,
+ with standard language environment variables. */
+ locale = getenv ("LC_ALL");
+ if (locale == NULL || locale[0] == '\0')
+ {
+ locale = getenv ("LC_CTYPE");
+ if (locale == NULL || locale[0] == '\0')
+ locale = getenv ("LANG");
+ }
+ if (locale != NULL && locale[0] != '\0')
+ {
+ /* If the locale name contains an encoding after the dot, return it. */
+ const char *dot = strchr (locale, '.');
+
+ if (dot != NULL)
+ {
+ const char *modifier;
+
+ dot++;
+ /* Look for the possible @... trailer and remove it, if any. */
+ modifier = strchr (dot, '@');
+ if (modifier == NULL)
+ return dot;
+ if (modifier - dot < sizeof (buf))
+ {
+ memcpy (buf, dot, modifier - dot);
+ buf [modifier - dot] = '\0';
+ return buf;
+ }
+ }
+
+ /* Resolve through the charset.alias file. */
+ codeset = locale;
+ }
+ else
+ {
+ /* OS/2 has a function returning the locale's codepage as a number. */
+ if (DosQueryCp (sizeof (cp), cp, &cplen))
+ codeset = "";
+ else
+ {
+ sprintf (buf, "CP%u", cp[0]);
+ codeset = buf;
+ }
+ }
+
+#endif
+
+ if (codeset == NULL)
+ /* The canonical name cannot be determined. */
+ codeset = "";
+
+ /* Resolve alias. */
+ for (aliases = get_charset_aliases ();
+ *aliases != '\0';
+ aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1)
+ if (strcmp (codeset, aliases) == 0
+ || (aliases[0] == '*' && aliases[1] == '\0'))
+ {
+ codeset = aliases + strlen (aliases) + 1;
+ break;
+ }
+
+ /* Don't return an empty string. GNU libc and GNU libiconv interpret
+ the empty string as denoting "the locale's character encoding",
+ thus GNU libiconv would call this function a second time. */
+ if (codeset[0] == '\0')
+ codeset = "ASCII";
+
+ return codeset;
+}
diff --git a/lib/localcharset.h b/lib/localcharset.h
new file mode 100644
index 0000000..5030210
--- /dev/null
+++ b/lib/localcharset.h
@@ -0,0 +1,41 @@
+/* Determine a canonical name for the current locale's character encoding.
+ Copyright (C) 2000-2003 Free Software Foundation, Inc.
+ This file is part of the GNU CHARSET Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _LOCALCHARSET_H
+#define _LOCALCHARSET_H
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Determine the current locale's character encoding, and canonicalize it
+ into one of the canonical names listed in config.charset.
+ The result must not be freed; it is statically allocated.
+ If the canonical name cannot be determined, the result is a non-canonical
+ name. */
+extern const char * locale_charset (void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _LOCALCHARSET_H */
diff --git a/lib/long-options.c b/lib/long-options.c
new file mode 100644
index 0000000..fb61661
--- /dev/null
+++ b/lib/long-options.c
@@ -0,0 +1,89 @@
+/* Utility to accept --help and --version options as unobtrusively as possible.
+
+ Copyright (C) 1993, 1994, 1998, 1999, 2000, 2002, 2003, 2004, 2005,
+ 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+
+/* Specification. */
+#include "long-options.h"
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <getopt.h>
+
+#include "version-etc.h"
+
+static struct option const long_options[] =
+{
+ {"help", no_argument, NULL, 'h'},
+ {"version", no_argument, NULL, 'v'},
+ {NULL, 0, NULL, 0}
+};
+
+/* Process long options --help and --version, but only if argc == 2.
+ Be careful not to gobble up `--'. */
+
+void
+parse_long_options (int argc,
+ char **argv,
+ const char *command_name,
+ const char *package,
+ const char *version,
+ void (*usage_func) (int),
+ /* const char *author1, ...*/ ...)
+{
+ int c;
+ int saved_opterr;
+
+ saved_opterr = opterr;
+
+ /* Don't print an error message for unrecognized options. */
+ opterr = 0;
+
+ if (argc == 2
+ && (c = getopt_long (argc, argv, "+", long_options, NULL)) != -1)
+ {
+ switch (c)
+ {
+ case 'h':
+ (*usage_func) (EXIT_SUCCESS);
+
+ case 'v':
+ {
+ va_list authors;
+ va_start (authors, usage_func);
+ version_etc_va (stdout, command_name, package, version, authors);
+ exit (0);
+ }
+
+ default:
+ /* Don't process any other long-named options. */
+ break;
+ }
+ }
+
+ /* Restore previous value. */
+ opterr = saved_opterr;
+
+ /* Reset this to zero so that getopt internals get initialized from
+ the probably-new parameters when/if getopt is called later. */
+ optind = 0;
+}
diff --git a/lib/long-options.h b/lib/long-options.h
new file mode 100644
index 0000000..03106a8
--- /dev/null
+++ b/lib/long-options.h
@@ -0,0 +1,26 @@
+/* long-options.h -- declaration for --help- and --version-handling function.
+ Copyright (C) 1993, 1994, 1998, 1999, 2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+void parse_long_options (int _argc,
+ char **_argv,
+ const char *_command_name,
+ const char *_package,
+ const char *_version,
+ void (*_usage) (int),
+ /* const char *author1, ...*/ ...);
diff --git a/lib/lstat.c b/lib/lstat.c
new file mode 100644
index 0000000..77dd228
--- /dev/null
+++ b/lib/lstat.c
@@ -0,0 +1,76 @@
+/* Work around a bug of lstat on some systems
+
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+
+/* The specification of these functions is in sys_stat.h. But we cannot
+ include this include file here, because on some systems, a
+ "#define lstat lstat64" is being used, and sys_stat.h deletes this
+ definition. */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <string.h>
+#include <errno.h>
+
+/* lstat works differently on Linux and Solaris systems. POSIX (see
+ `pathname resolution' in the glossary) requires that programs like
+ `ls' take into consideration the fact that FILE has a trailing slash
+ when FILE is a symbolic link. On Linux and Solaris 10 systems, the
+ lstat function already has the desired semantics (in treating
+ `lstat ("symlink/", sbuf)' just like `lstat ("symlink/.", sbuf)',
+ but on Solaris 9 and earlier it does not.
+
+ If FILE has a trailing slash and specifies a symbolic link,
+ then use stat() to get more info on the referent of FILE.
+ If the referent is a non-directory, then set errno to ENOTDIR
+ and return -1. Otherwise, return stat's result. */
+
+int
+rpl_lstat (const char *file, struct stat *sbuf)
+{
+ size_t len;
+ int lstat_result = lstat (file, sbuf);
+
+ if (lstat_result != 0 || !S_ISLNK (sbuf->st_mode))
+ return lstat_result;
+
+ len = strlen (file);
+ if (len == 0 || file[len - 1] != '/')
+ return 0;
+
+ /* FILE refers to a symbolic link and the name ends with a slash.
+ Call stat() to get info about the link's referent. */
+
+ /* If stat fails, then we do the same. */
+ if (stat (file, sbuf) != 0)
+ return -1;
+
+ /* If FILE references a directory, return 0. */
+ if (S_ISDIR (sbuf->st_mode))
+ return 0;
+
+ /* Here, we know stat succeeded and FILE references a non-directory.
+ But it was specified via a name including a trailing slash.
+ Fail with errno set to ENOTDIR to indicate the contradiction. */
+ errno = ENOTDIR;
+ return -1;
+}
diff --git a/lib/lstat.h b/lib/lstat.h
new file mode 100644
index 0000000..6a83fbf
--- /dev/null
+++ b/lib/lstat.h
@@ -0,0 +1,24 @@
+/* Retrieving information about files.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <sys/stat.h>
+
+#if !LSTAT_FOLLOWS_SLASHED_SYMLINK
+extern int rpl_lstat (const char *name, struct stat *buf);
+# undef lstat
+# define lstat rpl_lstat
+#endif
diff --git a/lib/malloc.c b/lib/malloc.c
new file mode 100644
index 0000000..d4dae3e
--- /dev/null
+++ b/lib/malloc.c
@@ -0,0 +1,35 @@
+/* malloc() function that is glibc compatible.
+
+ Copyright (C) 1997, 1998, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+#undef malloc
+
+#include <stdlib.h>
+
+/* Allocate an N-byte block of memory from the heap.
+ If N is zero, allocate a 1-byte block. */
+
+void *
+rpl_malloc (size_t n)
+{
+ if (n == 0)
+ n = 1;
+ return malloc (n);
+}
diff --git a/lib/mbchar.c b/lib/mbchar.c
new file mode 100644
index 0000000..95373f5
--- /dev/null
+++ b/lib/mbchar.c
@@ -0,0 +1,36 @@
+/* Copyright (C) 2001, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+
+#include <config.h>
+
+#include <limits.h>
+
+#include "mbchar.h"
+
+#if IS_BASIC_ASCII
+
+/* Bit table of characters in the ISO C "basic character set". */
+const unsigned int is_basic_table [UCHAR_MAX / 32 + 1] =
+{
+ 0x00001a00, /* '\t' '\v' '\f' */
+ 0xffffffef, /* ' '...'#' '%'...'?' */
+ 0xfffffffe, /* 'A'...'Z' '[' '\\' ']' '^' '_' */
+ 0x7ffffffe /* 'a'...'z' '{' '|' '}' '~' */
+ /* The remaining bits are 0. */
+};
+
+#endif /* IS_BASIC_ASCII */
diff --git a/lib/mbchar.h b/lib/mbchar.h
new file mode 100644
index 0000000..f3e28ef
--- /dev/null
+++ b/lib/mbchar.h
@@ -0,0 +1,353 @@
+/* Multibyte character data type.
+ Copyright (C) 2001, 2005-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+/* A multibyte character is a short subsequence of a char* string,
+ representing a single wide character.
+
+ We use multibyte characters instead of wide characters because of
+ the following goals:
+ 1) correct multibyte handling, i.e. operate according to the LC_CTYPE
+ locale,
+ 2) ease of maintenance, i.e. the maintainer needs not know all details
+ of the ISO C 99 standard,
+ 3) don't fail grossly if the input is not in the encoding set by the
+ locale, because often different encodings are in use in the same
+ countries (ISO-8859-1/UTF-8, EUC-JP/Shift_JIS, ...),
+ 4) fast in the case of ASCII characters,
+ 5) portability, i.e. don't make unportable assumptions about wchar_t.
+
+ Multibyte characters are only accessed through the mb* macros.
+
+ mb_ptr (mbc)
+ return a pointer to the beginning of the multibyte sequence.
+
+ mb_len (mbc)
+ returns the number of bytes occupied by the multibyte sequence.
+ Always > 0.
+
+ mb_iseq (mbc, sc)
+ returns true if mbc is the standard ASCII character sc.
+
+ mb_isnul (mbc)
+ returns true if mbc is the nul character.
+
+ mb_cmp (mbc1, mbc2)
+ returns a positive, zero, or negative value depending on whether mbc1
+ sorts after, same or before mbc2.
+
+ mb_casecmp (mbc1, mbc2)
+ returns a positive, zero, or negative value depending on whether mbc1
+ sorts after, same or before mbc2, modulo upper/lowercase conversion.
+
+ mb_equal (mbc1, mbc2)
+ returns true if mbc1 and mbc2 are equal.
+
+ mb_caseequal (mbc1, mbc2)
+ returns true if mbc1 and mbc2 are equal modulo upper/lowercase conversion.
+
+ mb_isalnum (mbc)
+ returns true if mbc is alphanumeric.
+
+ mb_isalpha (mbc)
+ returns true if mbc is alphabetic.
+
+ mb_isascii(mbc)
+ returns true if mbc is plain ASCII.
+
+ mb_isblank (mbc)
+ returns true if mbc is a blank.
+
+ mb_iscntrl (mbc)
+ returns true if mbc is a control character.
+
+ mb_isdigit (mbc)
+ returns true if mbc is a decimal digit.
+
+ mb_isgraph (mbc)
+ returns true if mbc is a graphic character.
+
+ mb_islower (mbc)
+ returns true if mbc is lowercase.
+
+ mb_isprint (mbc)
+ returns true if mbc is a printable character.
+
+ mb_ispunct (mbc)
+ returns true if mbc is a punctuation character.
+
+ mb_isspace (mbc)
+ returns true if mbc is a space character.
+
+ mb_isupper (mbc)
+ returns true if mbc is uppercase.
+
+ mb_isxdigit (mbc)
+ returns true if mbc is a hexadecimal digit.
+
+ mb_width (mbc)
+ returns the number of columns on the output device occupied by mbc.
+ Always >= 0.
+
+ mb_putc (mbc, stream)
+ outputs mbc on stream, a byte oriented FILE stream opened for output.
+
+ mb_setascii (&mbc, sc)
+ assigns the standard ASCII character sc to mbc.
+
+ mb_copy (&destmbc, &srcmbc)
+ copies srcmbc to destmbc.
+
+ Here are the function prototypes of the macros.
+
+ extern const char * mb_ptr (const mbchar_t mbc);
+ extern size_t mb_len (const mbchar_t mbc);
+ extern bool mb_iseq (const mbchar_t mbc, char sc);
+ extern bool mb_isnul (const mbchar_t mbc);
+ extern int mb_cmp (const mbchar_t mbc1, const mbchar_t mbc2);
+ extern int mb_casecmp (const mbchar_t mbc1, const mbchar_t mbc2);
+ extern bool mb_equal (const mbchar_t mbc1, const mbchar_t mbc2);
+ extern bool mb_caseequal (const mbchar_t mbc1, const mbchar_t mbc2);
+ extern bool mb_isalnum (const mbchar_t mbc);
+ extern bool mb_isalpha (const mbchar_t mbc);
+ extern bool mb_isascii (const mbchar_t mbc);
+ extern bool mb_isblank (const mbchar_t mbc);
+ extern bool mb_iscntrl (const mbchar_t mbc);
+ extern bool mb_isdigit (const mbchar_t mbc);
+ extern bool mb_isgraph (const mbchar_t mbc);
+ extern bool mb_islower (const mbchar_t mbc);
+ extern bool mb_isprint (const mbchar_t mbc);
+ extern bool mb_ispunct (const mbchar_t mbc);
+ extern bool mb_isspace (const mbchar_t mbc);
+ extern bool mb_isupper (const mbchar_t mbc);
+ extern bool mb_isxdigit (const mbchar_t mbc);
+ extern int mb_width (const mbchar_t mbc);
+ extern void mb_putc (const mbchar_t mbc, FILE *stream);
+ extern void mb_setascii (mbchar_t *new, char sc);
+ extern void mb_copy (mbchar_t *new, const mbchar_t *old);
+ */
+
+#ifndef _MBCHAR_H
+#define _MBCHAR_H 1
+
+#include <stdbool.h>
+#include <string.h>
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.1 has a bug: <stdio.h> and <time.h> must be included before
+ <wchar.h>. */
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+#include <wctype.h>
+
+#include "wcwidth.h"
+
+#define MBCHAR_BUF_SIZE 24
+
+struct mbchar
+{
+ const char *ptr; /* pointer to current character */
+ size_t bytes; /* number of bytes of current character, > 0 */
+ bool wc_valid; /* true if wc is a valid wide character */
+ wchar_t wc; /* if wc_valid: the current character */
+ char buf[MBCHAR_BUF_SIZE]; /* room for the bytes, used for file input only */
+};
+
+/* EOF (not a real character) is represented with bytes = 0 and
+ wc_valid = false. */
+
+typedef struct mbchar mbchar_t;
+
+/* Access the current character. */
+#define mb_ptr(mbc) ((mbc).ptr)
+#define mb_len(mbc) ((mbc).bytes)
+
+/* Comparison of characters. */
+#define mb_iseq(mbc, sc) ((mbc).wc_valid && (mbc).wc == (sc))
+#define mb_isnul(mbc) ((mbc).wc_valid && (mbc).wc == 0)
+#define mb_cmp(mbc1, mbc2) \
+ ((mbc1).wc_valid \
+ ? ((mbc2).wc_valid \
+ ? (int) (mbc1).wc - (int) (mbc2).wc \
+ : -1) \
+ : ((mbc2).wc_valid \
+ ? 1 \
+ : (mbc1).bytes == (mbc2).bytes \
+ ? memcmp ((mbc1).ptr, (mbc2).ptr, (mbc1).bytes) \
+ : (mbc1).bytes < (mbc2).bytes \
+ ? (memcmp ((mbc1).ptr, (mbc2).ptr, (mbc1).bytes) > 0 ? 1 : -1) \
+ : (memcmp ((mbc1).ptr, (mbc2).ptr, (mbc2).bytes) >= 0 ? 1 : -1)))
+#define mb_casecmp(mbc1, mbc2) \
+ ((mbc1).wc_valid \
+ ? ((mbc2).wc_valid \
+ ? (int) towlower ((mbc1).wc) - (int) towlower ((mbc2).wc) \
+ : -1) \
+ : ((mbc2).wc_valid \
+ ? 1 \
+ : (mbc1).bytes == (mbc2).bytes \
+ ? memcmp ((mbc1).ptr, (mbc2).ptr, (mbc1).bytes) \
+ : (mbc1).bytes < (mbc2).bytes \
+ ? (memcmp ((mbc1).ptr, (mbc2).ptr, (mbc1).bytes) > 0 ? 1 : -1) \
+ : (memcmp ((mbc1).ptr, (mbc2).ptr, (mbc2).bytes) >= 0 ? 1 : -1)))
+#define mb_equal(mbc1, mbc2) \
+ ((mbc1).wc_valid && (mbc2).wc_valid \
+ ? (mbc1).wc == (mbc2).wc \
+ : (mbc1).bytes == (mbc2).bytes \
+ && memcmp ((mbc1).ptr, (mbc2).ptr, (mbc1).bytes) == 0)
+#define mb_caseequal(mbc1, mbc2) \
+ ((mbc1).wc_valid && (mbc2).wc_valid \
+ ? towlower ((mbc1).wc) == towlower ((mbc2).wc) \
+ : (mbc1).bytes == (mbc2).bytes \
+ && memcmp ((mbc1).ptr, (mbc2).ptr, (mbc1).bytes) == 0)
+
+/* <ctype.h>, <wctype.h> classification. */
+#define mb_isascii(mbc) \
+ ((mbc).wc_valid && (mbc).wc >= 0 && (mbc).wc <= 127)
+#define mb_isalnum(mbc) ((mbc).wc_valid && iswalnum ((mbc).wc))
+#define mb_isalpha(mbc) ((mbc).wc_valid && iswalpha ((mbc).wc))
+#define mb_isblank(mbc) ((mbc).wc_valid && iswblank ((mbc).wc))
+#define mb_iscntrl(mbc) ((mbc).wc_valid && iswcntrl ((mbc).wc))
+#define mb_isdigit(mbc) ((mbc).wc_valid && iswdigit ((mbc).wc))
+#define mb_isgraph(mbc) ((mbc).wc_valid && iswgraph ((mbc).wc))
+#define mb_islower(mbc) ((mbc).wc_valid && iswlower ((mbc).wc))
+#define mb_isprint(mbc) ((mbc).wc_valid && iswprint ((mbc).wc))
+#define mb_ispunct(mbc) ((mbc).wc_valid && iswpunct ((mbc).wc))
+#define mb_isspace(mbc) ((mbc).wc_valid && iswspace ((mbc).wc))
+#define mb_isupper(mbc) ((mbc).wc_valid && iswupper ((mbc).wc))
+#define mb_isxdigit(mbc) ((mbc).wc_valid && iswxdigit ((mbc).wc))
+
+/* Extra <wchar.h> function. */
+
+/* Unprintable characters appear as a small box of width 1. */
+#define MB_UNPRINTABLE_WIDTH 1
+
+static inline int
+mb_width_aux (wint_t wc)
+{
+ int w = wcwidth (wc);
+ /* For unprintable characters, arbitrarily return 0 for control characters
+ and MB_UNPRINTABLE_WIDTH otherwise. */
+ return (w >= 0 ? w : iswcntrl (wc) ? 0 : MB_UNPRINTABLE_WIDTH);
+}
+
+#define mb_width(mbc) \
+ ((mbc).wc_valid ? mb_width_aux ((mbc).wc) : MB_UNPRINTABLE_WIDTH)
+
+/* Output. */
+#define mb_putc(mbc, stream) fwrite ((mbc).ptr, 1, (mbc).bytes, (stream))
+
+/* Assignment. */
+#define mb_setascii(mbc, sc) \
+ ((mbc)->ptr = (mbc)->buf, (mbc)->bytes = 1, (mbc)->wc_valid = 1, \
+ (mbc)->wc = (mbc)->buf[0] = (sc))
+
+/* Copying a character. */
+static inline void
+mb_copy (mbchar_t *new_mbc, const mbchar_t *old_mbc)
+{
+ if (old_mbc->ptr == &old_mbc->buf[0])
+ {
+ memcpy (&new_mbc->buf[0], &old_mbc->buf[0], old_mbc->bytes);
+ new_mbc->ptr = &new_mbc->buf[0];
+ }
+ else
+ new_mbc->ptr = old_mbc->ptr;
+ new_mbc->bytes = old_mbc->bytes;
+ if ((new_mbc->wc_valid = old_mbc->wc_valid))
+ new_mbc->wc = old_mbc->wc;
+}
+
+
+/* is_basic(c) tests whether the single-byte character c is in the
+ ISO C "basic character set".
+ This is a convenience function, and is in this file only to share code
+ between mbiter_multi.h and mbfile_multi.h. */
+#if (' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)
+/* The character set is ISO-646, not EBCDIC. */
+# define IS_BASIC_ASCII 1
+
+extern const unsigned int is_basic_table[];
+
+static inline bool
+is_basic (char c)
+{
+ return (is_basic_table [(unsigned char) c >> 5] >> ((unsigned char) c & 31))
+ & 1;
+}
+
+#else
+
+static inline bool
+is_basic (char c)
+{
+ switch (c)
+ {
+ case '\t': case '\v': case '\f':
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+#endif
+
+#endif /* _MBCHAR_H */
diff --git a/lib/mbscasecmp.c b/lib/mbscasecmp.c
new file mode 100644
index 0000000..8a2f434
--- /dev/null
+++ b/lib/mbscasecmp.c
@@ -0,0 +1,103 @@
+/* Case-insensitive string comparison function.
+ Copyright (C) 1998-1999, 2005-2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2005,
+ based on earlier glibc code.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#include <string.h>
+
+#include <ctype.h>
+#include <limits.h>
+
+#if HAVE_MBRTOWC
+# include "mbuiter.h"
+#endif
+
+#define TOLOWER(Ch) (isupper (Ch) ? tolower (Ch) : (Ch))
+
+/* Compare the character strings S1 and S2, ignoring case, returning less than,
+ equal to or greater than zero if S1 is lexicographically less than, equal to
+ or greater than S2.
+ Note: This function may, in multibyte locales, return 0 for strings of
+ different lengths! */
+int
+mbscasecmp (const char *s1, const char *s2)
+{
+ if (s1 == s2)
+ return 0;
+
+ /* Be careful not to look at the entire extent of s1 or s2 until needed.
+ This is useful because when two strings differ, the difference is
+ most often already in the very few first characters. */
+#if HAVE_MBRTOWC
+ if (MB_CUR_MAX > 1)
+ {
+ mbui_iterator_t iter1;
+ mbui_iterator_t iter2;
+
+ mbui_init (iter1, s1);
+ mbui_init (iter2, s2);
+
+ while (mbui_avail (iter1) && mbui_avail (iter2))
+ {
+ int cmp = mb_casecmp (mbui_cur (iter1), mbui_cur (iter2));
+
+ if (cmp != 0)
+ return cmp;
+
+ mbui_advance (iter1);
+ mbui_advance (iter2);
+ }
+ if (mbui_avail (iter1))
+ /* s2 terminated before s1. */
+ return 1;
+ if (mbui_avail (iter2))
+ /* s1 terminated before s2. */
+ return -1;
+ return 0;
+ }
+ else
+#endif
+ {
+ const unsigned char *p1 = (const unsigned char *) s1;
+ const unsigned char *p2 = (const unsigned char *) s2;
+ unsigned char c1, c2;
+
+ do
+ {
+ c1 = TOLOWER (*p1);
+ c2 = TOLOWER (*p2);
+
+ if (c1 == '\0')
+ break;
+
+ ++p1;
+ ++p2;
+ }
+ while (c1 == c2);
+
+ if (UCHAR_MAX <= INT_MAX)
+ return c1 - c2;
+ else
+ /* On machines where 'char' and 'int' are types of the same size, the
+ difference of two 'unsigned char' values - including the sign bit -
+ doesn't fit in an 'int'. */
+ return (c1 > c2 ? 1 : c1 < c2 ? -1 : 0);
+ }
+}
diff --git a/lib/mbswidth.c b/lib/mbswidth.c
new file mode 100644
index 0000000..0bc1a68
--- /dev/null
+++ b/lib/mbswidth.c
@@ -0,0 +1,179 @@
+/* Determine the number of screen columns needed for a string.
+ Copyright (C) 2000-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Bruno Haible <haible@clisp.cons.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "mbswidth.h"
+
+/* Get MB_CUR_MAX. */
+#include <stdlib.h>
+
+#include <string.h>
+
+/* Get isprint(). */
+#include <ctype.h>
+
+/* Get mbstate_t, mbrtowc(), mbsinit(). */
+#include <wchar.h>
+
+/* Get wcwidth(). */
+#include "wcwidth.h"
+
+/* Get iswcntrl(). */
+#include <wctype.h>
+
+#ifndef mbsinit
+# if !HAVE_MBSINIT
+# define mbsinit(ps) 1
+# endif
+#endif
+
+/* Returns the number of columns needed to represent the multibyte
+ character string pointed to by STRING. If a non-printable character
+ occurs, and MBSW_REJECT_UNPRINTABLE is specified, -1 is returned.
+ With flags = MBSW_REJECT_INVALID | MBSW_REJECT_UNPRINTABLE, this is
+ the multibyte analogue of the wcswidth function.
+ If STRING is not of length < INT_MAX / 2, integer overflow can occur. */
+int
+mbswidth (const char *string, int flags)
+{
+ return mbsnwidth (string, strlen (string), flags);
+}
+
+/* Returns the number of columns needed to represent the multibyte
+ character string pointed to by STRING of length NBYTES. If a
+ non-printable character occurs, and MBSW_REJECT_UNPRINTABLE is
+ specified, -1 is returned.
+ If NBYTES is not < INT_MAX / 2, integer overflow can occur. */
+int
+mbsnwidth (const char *string, size_t nbytes, int flags)
+{
+ const char *p = string;
+ const char *plimit = p + nbytes;
+ int width;
+
+ width = 0;
+#if HAVE_MBRTOWC
+ if (MB_CUR_MAX > 1)
+ {
+ while (p < plimit)
+ switch (*p)
+ {
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* These characters are printable ASCII characters. */
+ p++;
+ width++;
+ break;
+ default:
+ /* If we have a multibyte sequence, scan it up to its end. */
+ {
+ mbstate_t mbstate;
+ memset (&mbstate, 0, sizeof mbstate);
+ do
+ {
+ wchar_t wc;
+ size_t bytes;
+ int w;
+
+ bytes = mbrtowc (&wc, p, plimit - p, &mbstate);
+
+ if (bytes == (size_t) -1)
+ /* An invalid multibyte sequence was encountered. */
+ {
+ if (!(flags & MBSW_REJECT_INVALID))
+ {
+ p++;
+ width++;
+ break;
+ }
+ else
+ return -1;
+ }
+
+ if (bytes == (size_t) -2)
+ /* An incomplete multibyte character at the end. */
+ {
+ if (!(flags & MBSW_REJECT_INVALID))
+ {
+ p = plimit;
+ width++;
+ break;
+ }
+ else
+ return -1;
+ }
+
+ if (bytes == 0)
+ /* A null wide character was encountered. */
+ bytes = 1;
+
+ w = wcwidth (wc);
+ if (w >= 0)
+ /* A printable multibyte character. */
+ width += w;
+ else
+ /* An unprintable multibyte character. */
+ if (!(flags & MBSW_REJECT_UNPRINTABLE))
+ width += (iswcntrl (wc) ? 0 : 1);
+ else
+ return -1;
+
+ p += bytes;
+ }
+ while (! mbsinit (&mbstate));
+ }
+ break;
+ }
+ return width;
+ }
+#endif
+
+ while (p < plimit)
+ {
+ unsigned char c = (unsigned char) *p++;
+
+ if (isprint (c))
+ width++;
+ else if (!(flags & MBSW_REJECT_UNPRINTABLE))
+ width += (iscntrl (c) ? 0 : 1);
+ else
+ return -1;
+ }
+ return width;
+}
diff --git a/lib/mbswidth.h b/lib/mbswidth.h
new file mode 100644
index 0000000..eec4ff6
--- /dev/null
+++ b/lib/mbswidth.h
@@ -0,0 +1,61 @@
+/* Determine the number of screen columns needed for a string.
+ Copyright (C) 2000-2004, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <stddef.h>
+
+/* Avoid a clash of our mbswidth() with a function of the same name defined
+ in UnixWare 7.1.1 <wchar.h>. We need this #include before the #define
+ below.
+ However, we don't want to #include <wchar.h> on all platforms because
+ - Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ - BSD/OS 4.1 has a bug: <stdio.h> and <time.h> must be included before
+ <wchar.h>. */
+#if HAVE_DECL_MBSWIDTH_IN_WCHAR_H
+# include <wchar.h>
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Optional flags to influence mbswidth/mbsnwidth behavior. */
+
+/* If this bit is set, return -1 upon finding an invalid or incomplete
+ character. Otherwise, assume invalid characters have width 1. */
+#define MBSW_REJECT_INVALID 1
+
+/* If this bit is set, return -1 upon finding a non-printable character.
+ Otherwise, assume unprintable characters have width 0 if they are
+ control characters and 1 otherwise. */
+#define MBSW_REJECT_UNPRINTABLE 2
+
+
+/* Returns the number of screen columns needed for STRING. */
+#define mbswidth gnu_mbswidth /* avoid clash with UnixWare 7.1.1 function */
+extern int mbswidth (const char *string, int flags);
+
+/* Returns the number of screen columns needed for the NBYTES bytes
+ starting at BUF. */
+extern int mbsnwidth (const char *buf, size_t nbytes, int flags);
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/lib/mbuiter.h b/lib/mbuiter.h
new file mode 100644
index 0000000..e6ad488
--- /dev/null
+++ b/lib/mbuiter.h
@@ -0,0 +1,222 @@
+/* Iterating through multibyte strings: macros for multi-byte encodings.
+ Copyright (C) 2001, 2005, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+/* Written by Bruno Haible <bruno@clisp.org>. */
+
+/* The macros in this file implement forward iteration through a
+ multi-byte string, without knowing its length a-priori.
+
+ With these macros, an iteration loop that looks like
+
+ char *iter;
+ for (iter = buf; *iter != '\0'; iter++)
+ {
+ do_something (*iter);
+ }
+
+ becomes
+
+ mbui_iterator_t iter;
+ for (mbui_init (iter, buf); mbui_avail (iter); mbui_advance (iter))
+ {
+ do_something (mbui_cur_ptr (iter), mb_len (mbui_cur (iter)));
+ }
+
+ The benefit of these macros over plain use of mbrtowc is:
+ - Handling of invalid multibyte sequences is possible without
+ making the code more complicated, while still preserving the
+ invalid multibyte sequences.
+
+ Compared to mbiter.h, the macros here don't need to know the string's
+ length a-priori. The downside is that at each step, the look-ahead
+ that guards against overrunning the terminating '\0' is more expensive.
+ The mbui_* macros are therefore suitable when there is a high probability
+ that only the first few multibyte characters need to be inspected.
+ Whereas the mbi_* macros are better if usually the iteration runs
+ through the entire string.
+
+ mbui_iterator_t
+ is a type usable for variable declarations.
+
+ mbui_init (iter, startptr)
+ initializes the iterator, starting at startptr.
+
+ mbui_avail (iter)
+ returns true if there are more multibyte chracters available before
+ the end of string is reached. In this case, mbui_cur (iter) is
+ initialized to the next multibyte chracter.
+
+ mbui_advance (iter)
+ advances the iterator by one multibyte character.
+
+ mbui_cur (iter)
+ returns the current multibyte character, of type mbchar_t. All the
+ macros defined in mbchar.h can be used on it.
+
+ mbui_cur_ptr (iter)
+ return a pointer to the beginning of the current multibyte character.
+
+ mbui_reloc (iter, ptrdiff)
+ relocates iterator when the string is moved by ptrdiff bytes.
+
+ mbui_copy (&destiter, &srciter)
+ copies srciter to destiter.
+
+ Here are the function prototypes of the macros.
+
+ extern void mbui_init (mbui_iterator_t iter, const char *startptr);
+ extern bool mbui_avail (mbui_iterator_t iter);
+ extern void mbui_advance (mbui_iterator_t iter);
+ extern mbchar_t mbui_cur (mbui_iterator_t iter);
+ extern const char * mbui_cur_ptr (mbui_iterator_t iter);
+ extern void mbui_reloc (mbui_iterator_t iter, ptrdiff_t ptrdiff);
+ extern void mbui_copy (mbui_iterator_t *new, const mbui_iterator_t *old);
+ */
+
+#ifndef _MBUITER_H
+#define _MBUITER_H 1
+
+#include <assert.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.1 has a bug: <stdio.h> and <time.h> must be included before
+ <wchar.h>. */
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+
+#include "mbchar.h"
+#include "strnlen1.h"
+
+struct mbuiter_multi
+{
+ bool in_shift; /* true if next byte may not be interpreted as ASCII */
+ mbstate_t state; /* if in_shift: current shift state */
+ bool next_done; /* true if mbui_avail has already filled the following */
+ struct mbchar cur; /* the current character:
+ const char *cur.ptr pointer to current character
+ The following are only valid after mbui_avail.
+ size_t cur.bytes number of bytes of current character
+ bool cur.wc_valid true if wc is a valid wide character
+ wchar_t cur.wc if wc_valid: the current character
+ */
+};
+
+static inline void
+mbuiter_multi_next (struct mbuiter_multi *iter)
+{
+ if (iter->next_done)
+ return;
+ if (iter->in_shift)
+ goto with_shift;
+ /* Handle most ASCII characters quickly, without calling mbrtowc(). */
+ if (is_basic (*iter->cur.ptr))
+ {
+ /* These characters are part of the basic character set. ISO C 99
+ guarantees that their wide character code is identical to their
+ char code. */
+ iter->cur.bytes = 1;
+ iter->cur.wc = *iter->cur.ptr;
+ iter->cur.wc_valid = true;
+ }
+ else
+ {
+ assert (mbsinit (&iter->state));
+ iter->in_shift = true;
+ with_shift:
+ iter->cur.bytes = mbrtowc (&iter->cur.wc, iter->cur.ptr,
+ strnlen1 (iter->cur.ptr, MB_CUR_MAX),
+ &iter->state);
+ if (iter->cur.bytes == (size_t) -1)
+ {
+ /* An invalid multibyte sequence was encountered. */
+ iter->cur.bytes = 1;
+ iter->cur.wc_valid = false;
+ /* Whether to set iter->in_shift = false and reset iter->state
+ or not is not very important; the string is bogus anyway. */
+ }
+ else if (iter->cur.bytes == (size_t) -2)
+ {
+ /* An incomplete multibyte character at the end. */
+ iter->cur.bytes = strlen (iter->cur.ptr);
+ iter->cur.wc_valid = false;
+ /* Whether to set iter->in_shift = false and reset iter->state
+ or not is not important; the string end is reached anyway. */
+ }
+ else
+ {
+ if (iter->cur.bytes == 0)
+ {
+ /* A null wide character was encountered. */
+ iter->cur.bytes = 1;
+ assert (*iter->cur.ptr == '\0');
+ assert (iter->cur.wc == 0);
+ }
+ iter->cur.wc_valid = true;
+
+ /* When in the initial state, we can go back treating ASCII
+ characters more quickly. */
+ if (mbsinit (&iter->state))
+ iter->in_shift = false;
+ }
+ }
+ iter->next_done = true;
+}
+
+static inline void
+mbuiter_multi_reloc (struct mbuiter_multi *iter, ptrdiff_t ptrdiff)
+{
+ iter->cur.ptr += ptrdiff;
+}
+
+static inline void
+mbuiter_multi_copy (struct mbuiter_multi *new_iter, const struct mbuiter_multi *old_iter)
+{
+ if ((new_iter->in_shift = old_iter->in_shift))
+ memcpy (&new_iter->state, &old_iter->state, sizeof (mbstate_t));
+ else
+ memset (&new_iter->state, 0, sizeof (mbstate_t));
+ new_iter->next_done = old_iter->next_done;
+ mb_copy (&new_iter->cur, &old_iter->cur);
+}
+
+/* Iteration macros. */
+typedef struct mbuiter_multi mbui_iterator_t;
+#define mbui_init(iter, startptr) \
+ ((iter).cur.ptr = (startptr), \
+ (iter).in_shift = false, memset (&(iter).state, '\0', sizeof (mbstate_t)), \
+ (iter).next_done = false)
+#define mbui_avail(iter) \
+ (mbuiter_multi_next (&(iter)), !mb_isnul ((iter).cur))
+#define mbui_advance(iter) \
+ ((iter).cur.ptr += (iter).cur.bytes, (iter).next_done = false)
+
+/* Access to the current character. */
+#define mbui_cur(iter) (iter).cur
+#define mbui_cur_ptr(iter) (iter).cur.ptr
+
+/* Relocation. */
+#define mbui_reloc(iter, ptrdiff) mbuiter_multi_reloc (&iter, ptrdiff)
+
+/* Copying an iterator. */
+#define mbui_copy mbuiter_multi_copy
+
+#endif /* _MBUITER_H */
diff --git a/lib/md5.c b/lib/md5.c
new file mode 100644
index 0000000..917a899
--- /dev/null
+++ b/lib/md5.c
@@ -0,0 +1,451 @@
+/* Functions to compute MD5 message digest of files or memory blocks.
+ according to the definition of MD5 in RFC 1321 from April 1992.
+ Copyright (C) 1995,1996,1997,1999,2000,2001,2005,2006
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. */
+
+#include <config.h>
+
+#include "md5.h"
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#ifdef _LIBC
+# include <endian.h>
+# if __BYTE_ORDER == __BIG_ENDIAN
+# define WORDS_BIGENDIAN 1
+# endif
+/* We need to keep the namespace clean so define the MD5 function
+ protected using leading __ . */
+# define md5_init_ctx __md5_init_ctx
+# define md5_process_block __md5_process_block
+# define md5_process_bytes __md5_process_bytes
+# define md5_finish_ctx __md5_finish_ctx
+# define md5_read_ctx __md5_read_ctx
+# define md5_stream __md5_stream
+# define md5_buffer __md5_buffer
+#endif
+
+#ifdef WORDS_BIGENDIAN
+# define SWAP(n) \
+ (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
+#else
+# define SWAP(n) (n)
+#endif
+
+#define BLOCKSIZE 4096
+#if BLOCKSIZE % 64 != 0
+# error "invalid BLOCKSIZE"
+#endif
+
+/* This array contains the bytes used to pad the buffer to the next
+ 64-byte boundary. (RFC 1321, 3.1: Step 1) */
+static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ };
+
+
+/* Initialize structure containing state of computation.
+ (RFC 1321, 3.3: Step 3) */
+void
+md5_init_ctx (struct md5_ctx *ctx)
+{
+ ctx->A = 0x67452301;
+ ctx->B = 0xefcdab89;
+ ctx->C = 0x98badcfe;
+ ctx->D = 0x10325476;
+
+ ctx->total[0] = ctx->total[1] = 0;
+ ctx->buflen = 0;
+}
+
+/* Put result from CTX in first 16 bytes following RESBUF. The result
+ must be in little endian byte order.
+
+ IMPORTANT: On some systems it is required that RESBUF is correctly
+ aligned for a 32-bit value. */
+void *
+md5_read_ctx (const struct md5_ctx *ctx, void *resbuf)
+{
+ ((uint32_t *) resbuf)[0] = SWAP (ctx->A);
+ ((uint32_t *) resbuf)[1] = SWAP (ctx->B);
+ ((uint32_t *) resbuf)[2] = SWAP (ctx->C);
+ ((uint32_t *) resbuf)[3] = SWAP (ctx->D);
+
+ return resbuf;
+}
+
+/* Process the remaining bytes in the internal buffer and the usual
+ prolog according to the standard and write the result to RESBUF.
+
+ IMPORTANT: On some systems it is required that RESBUF is correctly
+ aligned for a 32-bit value. */
+void *
+md5_finish_ctx (struct md5_ctx *ctx, void *resbuf)
+{
+ /* Take yet unprocessed bytes into account. */
+ uint32_t bytes = ctx->buflen;
+ size_t size = (bytes < 56) ? 64 / 4 : 64 * 2 / 4;
+
+ /* Now count remaining bytes. */
+ ctx->total[0] += bytes;
+ if (ctx->total[0] < bytes)
+ ++ctx->total[1];
+
+ /* Put the 64-bit file length in *bits* at the end of the buffer. */
+ ctx->buffer[size - 2] = SWAP (ctx->total[0] << 3);
+ ctx->buffer[size - 1] = SWAP ((ctx->total[1] << 3) | (ctx->total[0] >> 29));
+
+ memcpy (&((char *) ctx->buffer)[bytes], fillbuf, (size - 2) * 4 - bytes);
+
+ /* Process last bytes. */
+ md5_process_block (ctx->buffer, size * 4, ctx);
+
+ return md5_read_ctx (ctx, resbuf);
+}
+
+/* Compute MD5 message digest for bytes read from STREAM. The
+ resulting message digest number will be written into the 16 bytes
+ beginning at RESBLOCK. */
+int
+md5_stream (FILE *stream, void *resblock)
+{
+ struct md5_ctx ctx;
+ char buffer[BLOCKSIZE + 72];
+ size_t sum;
+
+ /* Initialize the computation context. */
+ md5_init_ctx (&ctx);
+
+ /* Iterate over full file contents. */
+ while (1)
+ {
+ /* We read the file in blocks of BLOCKSIZE bytes. One call of the
+ computation function processes the whole buffer so that with the
+ next round of the loop another block can be read. */
+ size_t n;
+ sum = 0;
+
+ /* Read block. Take care for partial reads. */
+ while (1)
+ {
+ n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);
+
+ sum += n;
+
+ if (sum == BLOCKSIZE)
+ break;
+
+ if (n == 0)
+ {
+ /* Check for the error flag IFF N == 0, so that we don't
+ exit the loop after a partial read due to e.g., EAGAIN
+ or EWOULDBLOCK. */
+ if (ferror (stream))
+ return 1;
+ goto process_partial_block;
+ }
+
+ /* We've read at least one byte, so ignore errors. But always
+ check for EOF, since feof may be true even though N > 0.
+ Otherwise, we could end up calling fread after EOF. */
+ if (feof (stream))
+ goto process_partial_block;
+ }
+
+ /* Process buffer with BLOCKSIZE bytes. Note that
+ BLOCKSIZE % 64 == 0
+ */
+ md5_process_block (buffer, BLOCKSIZE, &ctx);
+ }
+
+process_partial_block:
+
+ /* Process any remaining bytes. */
+ if (sum > 0)
+ md5_process_bytes (buffer, sum, &ctx);
+
+ /* Construct result in desired memory. */
+ md5_finish_ctx (&ctx, resblock);
+ return 0;
+}
+
+/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The
+ result is always in little endian byte order, so that a byte-wise
+ output yields to the wanted ASCII representation of the message
+ digest. */
+void *
+md5_buffer (const char *buffer, size_t len, void *resblock)
+{
+ struct md5_ctx ctx;
+
+ /* Initialize the computation context. */
+ md5_init_ctx (&ctx);
+
+ /* Process whole buffer but last len % 64 bytes. */
+ md5_process_bytes (buffer, len, &ctx);
+
+ /* Put result in desired memory area. */
+ return md5_finish_ctx (&ctx, resblock);
+}
+
+
+void
+md5_process_bytes (const void *buffer, size_t len, struct md5_ctx *ctx)
+{
+ /* When we already have some bits in our internal buffer concatenate
+ both inputs first. */
+ if (ctx->buflen != 0)
+ {
+ size_t left_over = ctx->buflen;
+ size_t add = 128 - left_over > len ? len : 128 - left_over;
+
+ memcpy (&((char *) ctx->buffer)[left_over], buffer, add);
+ ctx->buflen += add;
+
+ if (ctx->buflen > 64)
+ {
+ md5_process_block (ctx->buffer, ctx->buflen & ~63, ctx);
+
+ ctx->buflen &= 63;
+ /* The regions in the following copy operation cannot overlap. */
+ memcpy (ctx->buffer,
+ &((char *) ctx->buffer)[(left_over + add) & ~63],
+ ctx->buflen);
+ }
+
+ buffer = (const char *) buffer + add;
+ len -= add;
+ }
+
+ /* Process available complete blocks. */
+ if (len >= 64)
+ {
+#if !_STRING_ARCH_unaligned
+# define alignof(type) offsetof (struct { char c; type x; }, x)
+# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+ if (UNALIGNED_P (buffer))
+ while (len > 64)
+ {
+ md5_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx);
+ buffer = (const char *) buffer + 64;
+ len -= 64;
+ }
+ else
+#endif
+ {
+ md5_process_block (buffer, len & ~63, ctx);
+ buffer = (const char *) buffer + (len & ~63);
+ len &= 63;
+ }
+ }
+
+ /* Move remaining bytes in internal buffer. */
+ if (len > 0)
+ {
+ size_t left_over = ctx->buflen;
+
+ memcpy (&((char *) ctx->buffer)[left_over], buffer, len);
+ left_over += len;
+ if (left_over >= 64)
+ {
+ md5_process_block (ctx->buffer, 64, ctx);
+ left_over -= 64;
+ memcpy (ctx->buffer, &ctx->buffer[16], left_over);
+ }
+ ctx->buflen = left_over;
+ }
+}
+
+
+/* These are the four functions used in the four steps of the MD5 algorithm
+ and defined in the RFC 1321. The first function is a little bit optimized
+ (as found in Colin Plumbs public domain implementation). */
+/* #define FF(b, c, d) ((b & c) | (~b & d)) */
+#define FF(b, c, d) (d ^ (b & (c ^ d)))
+#define FG(b, c, d) FF (d, b, c)
+#define FH(b, c, d) (b ^ c ^ d)
+#define FI(b, c, d) (c ^ (b | ~d))
+
+/* Process LEN bytes of BUFFER, accumulating context into CTX.
+ It is assumed that LEN % 64 == 0. */
+
+void
+md5_process_block (const void *buffer, size_t len, struct md5_ctx *ctx)
+{
+ uint32_t correct_words[16];
+ const uint32_t *words = buffer;
+ size_t nwords = len / sizeof (uint32_t);
+ const uint32_t *endp = words + nwords;
+ uint32_t A = ctx->A;
+ uint32_t B = ctx->B;
+ uint32_t C = ctx->C;
+ uint32_t D = ctx->D;
+
+ /* First increment the byte count. RFC 1321 specifies the possible
+ length of the file up to 2^64 bits. Here we only compute the
+ number of bytes. Do a double word increment. */
+ ctx->total[0] += len;
+ if (ctx->total[0] < len)
+ ++ctx->total[1];
+
+ /* Process all bytes in the buffer with 64 bytes in each round of
+ the loop. */
+ while (words < endp)
+ {
+ uint32_t *cwp = correct_words;
+ uint32_t A_save = A;
+ uint32_t B_save = B;
+ uint32_t C_save = C;
+ uint32_t D_save = D;
+
+ /* First round: using the given function, the context and a constant
+ the next context is computed. Because the algorithms processing
+ unit is a 32-bit word and it is determined to work on words in
+ little endian byte order we perhaps have to change the byte order
+ before the computation. To reduce the work for the next steps
+ we store the swapped words in the array CORRECT_WORDS. */
+
+#define OP(a, b, c, d, s, T) \
+ do \
+ { \
+ a += FF (b, c, d) + (*cwp++ = SWAP (*words)) + T; \
+ ++words; \
+ CYCLIC (a, s); \
+ a += b; \
+ } \
+ while (0)
+
+ /* It is unfortunate that C does not provide an operator for
+ cyclic rotation. Hope the C compiler is smart enough. */
+#define CYCLIC(w, s) (w = (w << s) | (w >> (32 - s)))
+
+ /* Before we start, one word to the strange constants.
+ They are defined in RFC 1321 as
+
+ T[i] = (int) (4294967296.0 * fabs (sin (i))), i=1..64
+
+ Here is an equivalent invocation using Perl:
+
+ perl -e 'foreach(1..64){printf "0x%08x\n", int (4294967296 * abs (sin $_))}'
+ */
+
+ /* Round 1. */
+ OP (A, B, C, D, 7, 0xd76aa478);
+ OP (D, A, B, C, 12, 0xe8c7b756);
+ OP (C, D, A, B, 17, 0x242070db);
+ OP (B, C, D, A, 22, 0xc1bdceee);
+ OP (A, B, C, D, 7, 0xf57c0faf);
+ OP (D, A, B, C, 12, 0x4787c62a);
+ OP (C, D, A, B, 17, 0xa8304613);
+ OP (B, C, D, A, 22, 0xfd469501);
+ OP (A, B, C, D, 7, 0x698098d8);
+ OP (D, A, B, C, 12, 0x8b44f7af);
+ OP (C, D, A, B, 17, 0xffff5bb1);
+ OP (B, C, D, A, 22, 0x895cd7be);
+ OP (A, B, C, D, 7, 0x6b901122);
+ OP (D, A, B, C, 12, 0xfd987193);
+ OP (C, D, A, B, 17, 0xa679438e);
+ OP (B, C, D, A, 22, 0x49b40821);
+
+ /* For the second to fourth round we have the possibly swapped words
+ in CORRECT_WORDS. Redefine the macro to take an additional first
+ argument specifying the function to use. */
+#undef OP
+#define OP(f, a, b, c, d, k, s, T) \
+ do \
+ { \
+ a += f (b, c, d) + correct_words[k] + T; \
+ CYCLIC (a, s); \
+ a += b; \
+ } \
+ while (0)
+
+ /* Round 2. */
+ OP (FG, A, B, C, D, 1, 5, 0xf61e2562);
+ OP (FG, D, A, B, C, 6, 9, 0xc040b340);
+ OP (FG, C, D, A, B, 11, 14, 0x265e5a51);
+ OP (FG, B, C, D, A, 0, 20, 0xe9b6c7aa);
+ OP (FG, A, B, C, D, 5, 5, 0xd62f105d);
+ OP (FG, D, A, B, C, 10, 9, 0x02441453);
+ OP (FG, C, D, A, B, 15, 14, 0xd8a1e681);
+ OP (FG, B, C, D, A, 4, 20, 0xe7d3fbc8);
+ OP (FG, A, B, C, D, 9, 5, 0x21e1cde6);
+ OP (FG, D, A, B, C, 14, 9, 0xc33707d6);
+ OP (FG, C, D, A, B, 3, 14, 0xf4d50d87);
+ OP (FG, B, C, D, A, 8, 20, 0x455a14ed);
+ OP (FG, A, B, C, D, 13, 5, 0xa9e3e905);
+ OP (FG, D, A, B, C, 2, 9, 0xfcefa3f8);
+ OP (FG, C, D, A, B, 7, 14, 0x676f02d9);
+ OP (FG, B, C, D, A, 12, 20, 0x8d2a4c8a);
+
+ /* Round 3. */
+ OP (FH, A, B, C, D, 5, 4, 0xfffa3942);
+ OP (FH, D, A, B, C, 8, 11, 0x8771f681);
+ OP (FH, C, D, A, B, 11, 16, 0x6d9d6122);
+ OP (FH, B, C, D, A, 14, 23, 0xfde5380c);
+ OP (FH, A, B, C, D, 1, 4, 0xa4beea44);
+ OP (FH, D, A, B, C, 4, 11, 0x4bdecfa9);
+ OP (FH, C, D, A, B, 7, 16, 0xf6bb4b60);
+ OP (FH, B, C, D, A, 10, 23, 0xbebfbc70);
+ OP (FH, A, B, C, D, 13, 4, 0x289b7ec6);
+ OP (FH, D, A, B, C, 0, 11, 0xeaa127fa);
+ OP (FH, C, D, A, B, 3, 16, 0xd4ef3085);
+ OP (FH, B, C, D, A, 6, 23, 0x04881d05);
+ OP (FH, A, B, C, D, 9, 4, 0xd9d4d039);
+ OP (FH, D, A, B, C, 12, 11, 0xe6db99e5);
+ OP (FH, C, D, A, B, 15, 16, 0x1fa27cf8);
+ OP (FH, B, C, D, A, 2, 23, 0xc4ac5665);
+
+ /* Round 4. */
+ OP (FI, A, B, C, D, 0, 6, 0xf4292244);
+ OP (FI, D, A, B, C, 7, 10, 0x432aff97);
+ OP (FI, C, D, A, B, 14, 15, 0xab9423a7);
+ OP (FI, B, C, D, A, 5, 21, 0xfc93a039);
+ OP (FI, A, B, C, D, 12, 6, 0x655b59c3);
+ OP (FI, D, A, B, C, 3, 10, 0x8f0ccc92);
+ OP (FI, C, D, A, B, 10, 15, 0xffeff47d);
+ OP (FI, B, C, D, A, 1, 21, 0x85845dd1);
+ OP (FI, A, B, C, D, 8, 6, 0x6fa87e4f);
+ OP (FI, D, A, B, C, 15, 10, 0xfe2ce6e0);
+ OP (FI, C, D, A, B, 6, 15, 0xa3014314);
+ OP (FI, B, C, D, A, 13, 21, 0x4e0811a1);
+ OP (FI, A, B, C, D, 4, 6, 0xf7537e82);
+ OP (FI, D, A, B, C, 11, 10, 0xbd3af235);
+ OP (FI, C, D, A, B, 2, 15, 0x2ad7d2bb);
+ OP (FI, B, C, D, A, 9, 21, 0xeb86d391);
+
+ /* Add the starting values of the context. */
+ A += A_save;
+ B += B_save;
+ C += C_save;
+ D += D_save;
+ }
+
+ /* Put checksum in context given as argument. */
+ ctx->A = A;
+ ctx->B = B;
+ ctx->C = C;
+ ctx->D = D;
+}
diff --git a/lib/md5.h b/lib/md5.h
new file mode 100644
index 0000000..c737040
--- /dev/null
+++ b/lib/md5.h
@@ -0,0 +1,124 @@
+/* Declaration of functions and data types used for MD5 sum computing
+ library functions.
+ Copyright (C) 1995-1997,1999,2000,2001,2004,2005,2006
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _MD5_H
+#define _MD5_H 1
+
+#include <stdio.h>
+#include <stdint.h>
+
+#define MD5_DIGEST_SIZE 16
+#define MD5_BLOCK_SIZE 64
+
+#ifndef __GNUC_PREREQ
+# if defined __GNUC__ && defined __GNUC_MINOR__
+# define __GNUC_PREREQ(maj, min) \
+ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+# else
+# define __GNUC_PREREQ(maj, min) 0
+# endif
+#endif
+
+#ifndef __THROW
+# if defined __cplusplus && __GNUC_PREREQ (2,8)
+# define __THROW throw ()
+# else
+# define __THROW
+# endif
+#endif
+
+#ifndef _LIBC
+# define __md5_buffer md5_buffer
+# define __md5_finish_ctx md5_finish_ctx
+# define __md5_init_ctx md5_init_ctx
+# define __md5_process_block md5_process_block
+# define __md5_process_bytes md5_process_bytes
+# define __md5_read_ctx md5_read_ctx
+# define __md5_stream md5_stream
+#endif
+
+/* Structure to save state of computation between the single steps. */
+struct md5_ctx
+{
+ uint32_t A;
+ uint32_t B;
+ uint32_t C;
+ uint32_t D;
+
+ uint32_t total[2];
+ uint32_t buflen;
+ uint32_t buffer[32];
+};
+
+/*
+ * The following three functions are build up the low level used in
+ * the functions `md5_stream' and `md5_buffer'.
+ */
+
+/* Initialize structure containing state of computation.
+ (RFC 1321, 3.3: Step 3) */
+extern void __md5_init_ctx (struct md5_ctx *ctx) __THROW;
+
+/* Starting with the result of former calls of this function (or the
+ initialization function update the context for the next LEN bytes
+ starting at BUFFER.
+ It is necessary that LEN is a multiple of 64!!! */
+extern void __md5_process_block (const void *buffer, size_t len,
+ struct md5_ctx *ctx) __THROW;
+
+/* Starting with the result of former calls of this function (or the
+ initialization function update the context for the next LEN bytes
+ starting at BUFFER.
+ It is NOT required that LEN is a multiple of 64. */
+extern void __md5_process_bytes (const void *buffer, size_t len,
+ struct md5_ctx *ctx) __THROW;
+
+/* Process the remaining bytes in the buffer and put result from CTX
+ in first 16 bytes following RESBUF. The result is always in little
+ endian byte order, so that a byte-wise output yields to the wanted
+ ASCII representation of the message digest.
+
+ IMPORTANT: On some systems, RESBUF must be aligned to a 32-bit
+ boundary. */
+extern void *__md5_finish_ctx (struct md5_ctx *ctx, void *resbuf) __THROW;
+
+
+/* Put result from CTX in first 16 bytes following RESBUF. The result is
+ always in little endian byte order, so that a byte-wise output yields
+ to the wanted ASCII representation of the message digest.
+
+ IMPORTANT: On some systems, RESBUF must be aligned to a 32-bit
+ boundary. */
+extern void *__md5_read_ctx (const struct md5_ctx *ctx, void *resbuf) __THROW;
+
+
+/* Compute MD5 message digest for bytes read from STREAM. The
+ resulting message digest number will be written into the 16 bytes
+ beginning at RESBLOCK. */
+extern int __md5_stream (FILE *stream, void *resblock) __THROW;
+
+/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The
+ result is always in little endian byte order, so that a byte-wise
+ output yields to the wanted ASCII representation of the message
+ digest. */
+extern void *__md5_buffer (const char *buffer, size_t len,
+ void *resblock) __THROW;
+
+#endif /* md5.h */
diff --git a/lib/memcasecmp.c b/lib/memcasecmp.c
new file mode 100644
index 0000000..cddf76a
--- /dev/null
+++ b/lib/memcasecmp.c
@@ -0,0 +1,49 @@
+/* Case-insensitive buffer comparator.
+ Copyright (C) 1996, 1997, 2000, 2003, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+
+#include "memcasecmp.h"
+
+#include <ctype.h>
+#include <limits.h>
+
+/* Like memcmp, but ignore differences in case.
+ Convert to upper case (not lower) before comparing so that
+ join -i works with sort -f. */
+
+int
+memcasecmp (const void *vs1, const void *vs2, size_t n)
+{
+ size_t i;
+ char const *s1 = vs1;
+ char const *s2 = vs2;
+ for (i = 0; i < n; i++)
+ {
+ unsigned char u1 = s1[i];
+ unsigned char u2 = s2[i];
+ int U1 = toupper (u1);
+ int U2 = toupper (u2);
+ int diff = (UCHAR_MAX <= INT_MAX ? U1 - U2
+ : U1 < U2 ? -1 : U2 < U1);
+ if (diff)
+ return diff;
+ }
+ return 0;
+}
diff --git a/lib/memcasecmp.h b/lib/memcasecmp.h
new file mode 100644
index 0000000..5c8b1f1
--- /dev/null
+++ b/lib/memcasecmp.h
@@ -0,0 +1,23 @@
+/* Case-insensitive buffer comparator.
+
+ Copyright (C) 1996, 1998, 2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <stddef.h>
+
+int memcasecmp (const void *vs1, const void *vs2, size_t n);
diff --git a/lib/memchr.c b/lib/memchr.c
new file mode 100644
index 0000000..d44ad6d
--- /dev/null
+++ b/lib/memchr.c
@@ -0,0 +1,201 @@
+/* Copyright (C) 1991, 1993, 1996, 1997, 1999, 2000, 2003, 2004, 2006 Free
+ Software Foundation, Inc.
+
+ Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
+ with help from Dan Sahlin (dan@sics.se) and
+ commentary by Jim Blandy (jimb@ai.mit.edu);
+ adaptation to memchr suggested by Dick Karpinski (dick@cca.ucsf.edu),
+ and implemented by Roland McGrath (roland@ai.mit.edu).
+
+NOTE: The canonical source of this file is maintained with the GNU C Library.
+Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software Foundation,
+Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+#include <string.h>
+
+#include <stddef.h>
+
+#if defined _LIBC
+# include <memcopy.h>
+#else
+# define reg_char char
+#endif
+
+#include <limits.h>
+
+#if HAVE_BP_SYM_H || defined _LIBC
+# include <bp-sym.h>
+#else
+# define BP_SYM(sym) sym
+#endif
+
+#undef memchr
+#undef __memchr
+
+/* Search no more than N bytes of S for C. */
+void *
+__memchr (void const *s, int c_in, size_t n)
+{
+ const unsigned char *char_ptr;
+ const unsigned long int *longword_ptr;
+ unsigned long int longword, magic_bits, charmask;
+ unsigned reg_char c;
+ int i;
+
+ c = (unsigned char) c_in;
+
+ /* Handle the first few characters by reading one character at a time.
+ Do this until CHAR_PTR is aligned on a longword boundary. */
+ for (char_ptr = (const unsigned char *) s;
+ n > 0 && (size_t) char_ptr % sizeof longword != 0;
+ --n, ++char_ptr)
+ if (*char_ptr == c)
+ return (void *) char_ptr;
+
+ /* All these elucidatory comments refer to 4-byte longwords,
+ but the theory applies equally well to any size longwords. */
+
+ longword_ptr = (const unsigned long int *) char_ptr;
+
+ /* Bits 31, 24, 16, and 8 of this number are zero. Call these bits
+ the "holes." Note that there is a hole just to the left of
+ each byte, with an extra at the end:
+
+ bits: 01111110 11111110 11111110 11111111
+ bytes: AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD
+
+ The 1-bits make sure that carries propagate to the next 0-bit.
+ The 0-bits provide holes for carries to fall into. */
+
+ /* Set MAGIC_BITS to be this pattern of 1 and 0 bits.
+ Set CHARMASK to be a longword, each of whose bytes is C. */
+
+ magic_bits = 0xfefefefe;
+ charmask = c | (c << 8);
+ charmask |= charmask << 16;
+#if 0xffffffffU < ULONG_MAX
+ magic_bits |= magic_bits << 32;
+ charmask |= charmask << 32;
+ if (8 < sizeof longword)
+ for (i = 64; i < sizeof longword * 8; i *= 2)
+ {
+ magic_bits |= magic_bits << i;
+ charmask |= charmask << i;
+ }
+#endif
+ magic_bits = (ULONG_MAX >> 1) & (magic_bits | 1);
+
+ /* Instead of the traditional loop which tests each character,
+ we will test a longword at a time. The tricky part is testing
+ if *any of the four* bytes in the longword in question are zero. */
+ while (n >= sizeof longword)
+ {
+ /* We tentatively exit the loop if adding MAGIC_BITS to
+ LONGWORD fails to change any of the hole bits of LONGWORD.
+
+ 1) Is this safe? Will it catch all the zero bytes?
+ Suppose there is a byte with all zeros. Any carry bits
+ propagating from its left will fall into the hole at its
+ least significant bit and stop. Since there will be no
+ carry from its most significant bit, the LSB of the
+ byte to the left will be unchanged, and the zero will be
+ detected.
+
+ 2) Is this worthwhile? Will it ignore everything except
+ zero bytes? Suppose every byte of LONGWORD has a bit set
+ somewhere. There will be a carry into bit 8. If bit 8
+ is set, this will carry into bit 16. If bit 8 is clear,
+ one of bits 9-15 must be set, so there will be a carry
+ into bit 16. Similarly, there will be a carry into bit
+ 24. If one of bits 24-30 is set, there will be a carry
+ into bit 31, so all of the hole bits will be changed.
+
+ The one misfire occurs when bits 24-30 are clear and bit
+ 31 is set; in this case, the hole at bit 31 is not
+ changed. If we had access to the processor carry flag,
+ we could close this loophole by putting the fourth hole
+ at bit 32!
+
+ So it ignores everything except 128's, when they're aligned
+ properly.
+
+ 3) But wait! Aren't we looking for C, not zero?
+ Good point. So what we do is XOR LONGWORD with a longword,
+ each of whose bytes is C. This turns each byte that is C
+ into a zero. */
+
+ longword = *longword_ptr++ ^ charmask;
+
+ /* Add MAGIC_BITS to LONGWORD. */
+ if ((((longword + magic_bits)
+
+ /* Set those bits that were unchanged by the addition. */
+ ^ ~longword)
+
+ /* Look at only the hole bits. If any of the hole bits
+ are unchanged, most likely one of the bytes was a
+ zero. */
+ & ~magic_bits) != 0)
+ {
+ /* Which of the bytes was C? If none of them were, it was
+ a misfire; continue the search. */
+
+ const unsigned char *cp = (const unsigned char *) (longword_ptr - 1);
+
+ if (cp[0] == c)
+ return (void *) cp;
+ if (cp[1] == c)
+ return (void *) &cp[1];
+ if (cp[2] == c)
+ return (void *) &cp[2];
+ if (cp[3] == c)
+ return (void *) &cp[3];
+ if (4 < sizeof longword && cp[4] == c)
+ return (void *) &cp[4];
+ if (5 < sizeof longword && cp[5] == c)
+ return (void *) &cp[5];
+ if (6 < sizeof longword && cp[6] == c)
+ return (void *) &cp[6];
+ if (7 < sizeof longword && cp[7] == c)
+ return (void *) &cp[7];
+ if (8 < sizeof longword)
+ for (i = 8; i < sizeof longword; i++)
+ if (cp[i] == c)
+ return (void *) &cp[i];
+ }
+
+ n -= sizeof longword;
+ }
+
+ char_ptr = (const unsigned char *) longword_ptr;
+
+ while (n-- > 0)
+ {
+ if (*char_ptr == c)
+ return (void *) char_ptr;
+ else
+ ++char_ptr;
+ }
+
+ return 0;
+}
+#ifdef weak_alias
+weak_alias (__memchr, BP_SYM (memchr))
+#endif
diff --git a/lib/memcmp.c b/lib/memcmp.c
new file mode 100644
index 0000000..cf98bfa
--- /dev/null
+++ b/lib/memcmp.c
@@ -0,0 +1,363 @@
+/* Copyright (C) 1991, 1993, 1995, 1997, 1998, 2003, 2006 Free Software
+ Foundation, Inc.
+
+ Contributed by Torbjorn Granlund (tege@sics.se).
+
+ NOTE: The canonical source of this file is maintained with the GNU C Library.
+ Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ USA. */
+
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+#include <string.h>
+
+#undef memcmp
+
+#ifdef _LIBC
+
+# include <memcopy.h>
+# include <endian.h>
+
+# if __BYTE_ORDER == __BIG_ENDIAN
+# define WORDS_BIGENDIAN
+# endif
+
+#else /* Not in the GNU C library. */
+
+# include <sys/types.h>
+
+/* Type to use for aligned memory operations.
+ This should normally be the biggest type supported by a single load
+ and store. Must be an unsigned type. */
+# define op_t unsigned long int
+# define OPSIZ (sizeof(op_t))
+
+/* Threshold value for when to enter the unrolled loops. */
+# define OP_T_THRES 16
+
+/* Type to use for unaligned operations. */
+typedef unsigned char byte;
+
+# ifndef WORDS_BIGENDIAN
+# define MERGE(w0, sh_1, w1, sh_2) (((w0) >> (sh_1)) | ((w1) << (sh_2)))
+# else
+# define MERGE(w0, sh_1, w1, sh_2) (((w0) << (sh_1)) | ((w1) >> (sh_2)))
+# endif
+
+#endif /* In the GNU C library. */
+
+#ifdef WORDS_BIGENDIAN
+# define CMP_LT_OR_GT(a, b) ((a) > (b) ? 1 : -1)
+#else
+# define CMP_LT_OR_GT(a, b) memcmp_bytes ((a), (b))
+#endif
+
+/* BE VERY CAREFUL IF YOU CHANGE THIS CODE! */
+
+/* The strategy of this memcmp is:
+
+ 1. Compare bytes until one of the block pointers is aligned.
+
+ 2. Compare using memcmp_common_alignment or
+ memcmp_not_common_alignment, regarding the alignment of the other
+ block after the initial byte operations. The maximum number of
+ full words (of type op_t) are compared in this way.
+
+ 3. Compare the few remaining bytes. */
+
+#ifndef WORDS_BIGENDIAN
+/* memcmp_bytes -- Compare A and B bytewise in the byte order of the machine.
+ A and B are known to be different.
+ This is needed only on little-endian machines. */
+
+# ifdef __GNUC__
+__inline
+# endif
+static int
+memcmp_bytes (long unsigned int a, long unsigned int b)
+{
+ long int srcp1 = (long int) &a;
+ long int srcp2 = (long int) &b;
+ op_t a0, b0;
+
+ do
+ {
+ a0 = ((byte *) srcp1)[0];
+ b0 = ((byte *) srcp2)[0];
+ srcp1 += 1;
+ srcp2 += 1;
+ }
+ while (a0 == b0);
+ return a0 - b0;
+}
+#endif
+
+/* memcmp_common_alignment -- Compare blocks at SRCP1 and SRCP2 with LEN `op_t'
+ objects (not LEN bytes!). Both SRCP1 and SRCP2 should be aligned for
+ memory operations on `op_t's. */
+#ifdef __GNUC__
+__inline
+#endif
+static int
+memcmp_common_alignment (long int srcp1, long int srcp2, size_t len)
+{
+ op_t a0, a1;
+ op_t b0, b1;
+
+ switch (len % 4)
+ {
+ default: /* Avoid warning about uninitialized local variables. */
+ case 2:
+ a0 = ((op_t *) srcp1)[0];
+ b0 = ((op_t *) srcp2)[0];
+ srcp1 -= 2 * OPSIZ;
+ srcp2 -= 2 * OPSIZ;
+ len += 2;
+ goto do1;
+ case 3:
+ a1 = ((op_t *) srcp1)[0];
+ b1 = ((op_t *) srcp2)[0];
+ srcp1 -= OPSIZ;
+ srcp2 -= OPSIZ;
+ len += 1;
+ goto do2;
+ case 0:
+ if (OP_T_THRES <= 3 * OPSIZ && len == 0)
+ return 0;
+ a0 = ((op_t *) srcp1)[0];
+ b0 = ((op_t *) srcp2)[0];
+ goto do3;
+ case 1:
+ a1 = ((op_t *) srcp1)[0];
+ b1 = ((op_t *) srcp2)[0];
+ srcp1 += OPSIZ;
+ srcp2 += OPSIZ;
+ len -= 1;
+ if (OP_T_THRES <= 3 * OPSIZ && len == 0)
+ goto do0;
+ /* Fall through. */
+ }
+
+ do
+ {
+ a0 = ((op_t *) srcp1)[0];
+ b0 = ((op_t *) srcp2)[0];
+ if (a1 != b1)
+ return CMP_LT_OR_GT (a1, b1);
+
+ do3:
+ a1 = ((op_t *) srcp1)[1];
+ b1 = ((op_t *) srcp2)[1];
+ if (a0 != b0)
+ return CMP_LT_OR_GT (a0, b0);
+
+ do2:
+ a0 = ((op_t *) srcp1)[2];
+ b0 = ((op_t *) srcp2)[2];
+ if (a1 != b1)
+ return CMP_LT_OR_GT (a1, b1);
+
+ do1:
+ a1 = ((op_t *) srcp1)[3];
+ b1 = ((op_t *) srcp2)[3];
+ if (a0 != b0)
+ return CMP_LT_OR_GT (a0, b0);
+
+ srcp1 += 4 * OPSIZ;
+ srcp2 += 4 * OPSIZ;
+ len -= 4;
+ }
+ while (len != 0);
+
+ /* This is the right position for do0. Please don't move
+ it into the loop. */
+ do0:
+ if (a1 != b1)
+ return CMP_LT_OR_GT (a1, b1);
+ return 0;
+}
+
+/* memcmp_not_common_alignment -- Compare blocks at SRCP1 and SRCP2 with LEN
+ `op_t' objects (not LEN bytes!). SRCP2 should be aligned for memory
+ operations on `op_t', but SRCP1 *should be unaligned*. */
+#ifdef __GNUC__
+__inline
+#endif
+static int
+memcmp_not_common_alignment (long int srcp1, long int srcp2, size_t len)
+{
+ op_t a0, a1, a2, a3;
+ op_t b0, b1, b2, b3;
+ op_t x;
+ int shl, shr;
+
+ /* Calculate how to shift a word read at the memory operation
+ aligned srcp1 to make it aligned for comparison. */
+
+ shl = 8 * (srcp1 % OPSIZ);
+ shr = 8 * OPSIZ - shl;
+
+ /* Make SRCP1 aligned by rounding it down to the beginning of the `op_t'
+ it points in the middle of. */
+ srcp1 &= -OPSIZ;
+
+ switch (len % 4)
+ {
+ default: /* Avoid warning about uninitialized local variables. */
+ case 2:
+ a1 = ((op_t *) srcp1)[0];
+ a2 = ((op_t *) srcp1)[1];
+ b2 = ((op_t *) srcp2)[0];
+ srcp1 -= 1 * OPSIZ;
+ srcp2 -= 2 * OPSIZ;
+ len += 2;
+ goto do1;
+ case 3:
+ a0 = ((op_t *) srcp1)[0];
+ a1 = ((op_t *) srcp1)[1];
+ b1 = ((op_t *) srcp2)[0];
+ srcp2 -= 1 * OPSIZ;
+ len += 1;
+ goto do2;
+ case 0:
+ if (OP_T_THRES <= 3 * OPSIZ && len == 0)
+ return 0;
+ a3 = ((op_t *) srcp1)[0];
+ a0 = ((op_t *) srcp1)[1];
+ b0 = ((op_t *) srcp2)[0];
+ srcp1 += 1 * OPSIZ;
+ goto do3;
+ case 1:
+ a2 = ((op_t *) srcp1)[0];
+ a3 = ((op_t *) srcp1)[1];
+ b3 = ((op_t *) srcp2)[0];
+ srcp1 += 2 * OPSIZ;
+ srcp2 += 1 * OPSIZ;
+ len -= 1;
+ if (OP_T_THRES <= 3 * OPSIZ && len == 0)
+ goto do0;
+ /* Fall through. */
+ }
+
+ do
+ {
+ a0 = ((op_t *) srcp1)[0];
+ b0 = ((op_t *) srcp2)[0];
+ x = MERGE(a2, shl, a3, shr);
+ if (x != b3)
+ return CMP_LT_OR_GT (x, b3);
+
+ do3:
+ a1 = ((op_t *) srcp1)[1];
+ b1 = ((op_t *) srcp2)[1];
+ x = MERGE(a3, shl, a0, shr);
+ if (x != b0)
+ return CMP_LT_OR_GT (x, b0);
+
+ do2:
+ a2 = ((op_t *) srcp1)[2];
+ b2 = ((op_t *) srcp2)[2];
+ x = MERGE(a0, shl, a1, shr);
+ if (x != b1)
+ return CMP_LT_OR_GT (x, b1);
+
+ do1:
+ a3 = ((op_t *) srcp1)[3];
+ b3 = ((op_t *) srcp2)[3];
+ x = MERGE(a1, shl, a2, shr);
+ if (x != b2)
+ return CMP_LT_OR_GT (x, b2);
+
+ srcp1 += 4 * OPSIZ;
+ srcp2 += 4 * OPSIZ;
+ len -= 4;
+ }
+ while (len != 0);
+
+ /* This is the right position for do0. Please don't move
+ it into the loop. */
+ do0:
+ x = MERGE(a2, shl, a3, shr);
+ if (x != b3)
+ return CMP_LT_OR_GT (x, b3);
+ return 0;
+}
+
+int
+rpl_memcmp (const void *s1, const void *s2, size_t len)
+{
+ op_t a0;
+ op_t b0;
+ long int srcp1 = (long int) s1;
+ long int srcp2 = (long int) s2;
+ op_t res;
+
+ if (len >= OP_T_THRES)
+ {
+ /* There are at least some bytes to compare. No need to test
+ for LEN == 0 in this alignment loop. */
+ while (srcp2 % OPSIZ != 0)
+ {
+ a0 = ((byte *) srcp1)[0];
+ b0 = ((byte *) srcp2)[0];
+ srcp1 += 1;
+ srcp2 += 1;
+ res = a0 - b0;
+ if (res != 0)
+ return res;
+ len -= 1;
+ }
+
+ /* SRCP2 is now aligned for memory operations on `op_t'.
+ SRCP1 alignment determines if we can do a simple,
+ aligned compare or need to shuffle bits. */
+
+ if (srcp1 % OPSIZ == 0)
+ res = memcmp_common_alignment (srcp1, srcp2, len / OPSIZ);
+ else
+ res = memcmp_not_common_alignment (srcp1, srcp2, len / OPSIZ);
+ if (res != 0)
+ return res;
+
+ /* Number of bytes remaining in the interval [0..OPSIZ-1]. */
+ srcp1 += len & -OPSIZ;
+ srcp2 += len & -OPSIZ;
+ len %= OPSIZ;
+ }
+
+ /* There are just a few bytes to compare. Use byte memory operations. */
+ while (len != 0)
+ {
+ a0 = ((byte *) srcp1)[0];
+ b0 = ((byte *) srcp2)[0];
+ srcp1 += 1;
+ srcp2 += 1;
+ res = a0 - b0;
+ if (res != 0)
+ return res;
+ len -= 1;
+ }
+
+ return 0;
+}
+
+#ifdef weak_alias
+# undef bcmp
+weak_alias (memcmp, bcmp)
+#endif
diff --git a/lib/memcoll.c b/lib/memcoll.c
new file mode 100644
index 0000000..e5ef363
--- /dev/null
+++ b/lib/memcoll.c
@@ -0,0 +1,96 @@
+/* Locale-specific memory comparison.
+
+ Copyright (C) 1999, 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Contributed by Paul Eggert <eggert@twinsun.com>. */
+
+#include <config.h>
+
+#include "memcoll.h"
+
+#include <errno.h>
+#include <string.h>
+
+/* Compare S1 (with length S1LEN) and S2 (with length S2LEN) according
+ to the LC_COLLATE locale. S1 and S2 do not overlap, and are not
+ adjacent. Perhaps temporarily modify the bytes after S1 and S2,
+ but restore their original contents before returning. Set errno to an
+ error number if there is an error, and to zero otherwise. */
+int
+memcoll (char *s1, size_t s1len, char *s2, size_t s2len)
+{
+ int diff;
+
+#if HAVE_STRCOLL
+
+ /* strcoll is slow on many platforms, so check for the common case
+ where the arguments are bytewise equal. Otherwise, walk through
+ the buffers using strcoll on each substring. */
+
+ if (s1len == s2len && memcmp (s1, s2, s1len) == 0)
+ {
+ errno = 0;
+ diff = 0;
+ }
+ else
+ {
+ char n1 = s1[s1len];
+ char n2 = s2[s2len];
+
+ s1[s1len++] = '\0';
+ s2[s2len++] = '\0';
+
+ while (! (errno = 0, (diff = strcoll (s1, s2)) || errno))
+ {
+ /* strcoll found no difference, but perhaps it was fooled by NUL
+ characters in the data. Work around this problem by advancing
+ past the NUL chars. */
+ size_t size1 = strlen (s1) + 1;
+ size_t size2 = strlen (s2) + 1;
+ s1 += size1;
+ s2 += size2;
+ s1len -= size1;
+ s2len -= size2;
+
+ if (s1len == 0)
+ {
+ if (s2len != 0)
+ diff = -1;
+ break;
+ }
+ else if (s2len == 0)
+ {
+ diff = 1;
+ break;
+ }
+ }
+
+ s1[s1len - 1] = n1;
+ s2[s2len - 1] = n2;
+ }
+
+#else
+
+ diff = memcmp (s1, s2, s1len < s2len ? s1len : s2len);
+ if (! diff)
+ diff = s1len < s2len ? -1 : s1len != s2len;
+ errno = 0;
+
+#endif
+
+ return diff;
+}
diff --git a/lib/memcoll.h b/lib/memcoll.h
new file mode 100644
index 0000000..9b61ce9
--- /dev/null
+++ b/lib/memcoll.h
@@ -0,0 +1,28 @@
+/* Locale-specific memory comparison.
+
+ Copyright (C) 1999, 2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Contributed by Paul Eggert <eggert@twinsun.com>. */
+
+#ifndef MEMCOLL_H_
+# define MEMCOLL_H_ 1
+
+# include <stddef.h>
+
+int memcoll (char *, size_t, char *, size_t);
+
+#endif /* MEMCOLL_H_ */
diff --git a/lib/memcpy.c b/lib/memcpy.c
new file mode 100644
index 0000000..d1e49c6
--- /dev/null
+++ b/lib/memcpy.c
@@ -0,0 +1,36 @@
+/* Copyright (C) 1995, 1997, 2000, 2003, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering <meyering@na-net.ornl.gov>. */
+
+#include <config.h>
+
+#include <stddef.h>
+
+/* Copy LEN bytes starting at SRCADDR to DESTADDR. Result undefined
+ if the source overlaps with the destination.
+ Return DESTADDR. */
+
+void *
+memcpy (void *destaddr, void const *srcaddr, size_t len)
+{
+ char *dest = destaddr;
+ char const *src = srcaddr;
+
+ while (len-- > 0)
+ *dest++ = *src++;
+ return destaddr;
+}
diff --git a/lib/memmove.c b/lib/memmove.c
new file mode 100644
index 0000000..c5ff8b5
--- /dev/null
+++ b/lib/memmove.c
@@ -0,0 +1,26 @@
+/* memmove.c -- copy memory.
+ Copy LENGTH bytes from SOURCE to DEST. Does not null-terminate.
+ In the public domain.
+ By David MacKenzie <djm@gnu.ai.mit.edu>. */
+
+#include <config.h>
+
+#include <stddef.h>
+
+void *
+memmove (void *dest0, void const *source0, size_t length)
+{
+ char *dest = dest0;
+ char const *source = source0;
+ if (source < dest)
+ /* Moving from low mem to hi mem; start at end. */
+ for (source += length, dest += length; length; --length)
+ *--dest = *--source;
+ else if (source != dest)
+ {
+ /* Moving from hi mem to low mem; start at beginning. */
+ for (; length; --length)
+ *dest++ = *source++;
+ }
+ return dest0;
+}
diff --git a/lib/mempcpy.c b/lib/mempcpy.c
new file mode 100644
index 0000000..1c702c7
--- /dev/null
+++ b/lib/mempcpy.c
@@ -0,0 +1,29 @@
+/* Copy memory area and return pointer after last written byte.
+ Copyright (C) 2003, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#include <string.h>
+
+/* Copy N bytes of SRC to DEST, return pointer to bytes after the
+ last written byte. */
+void *
+mempcpy (void *dest, const void *src, size_t n)
+{
+ return (char *) memcpy (dest, src, n) + n;
+}
diff --git a/lib/memrchr.c b/lib/memrchr.c
new file mode 100644
index 0000000..29fd531
--- /dev/null
+++ b/lib/memrchr.c
@@ -0,0 +1,190 @@
+/* memrchr -- find the last occurrence of a byte in a memory block
+
+ Copyright (C) 1991, 1993, 1996, 1997, 1999, 2000, 2003, 2004, 2005,
+ 2006, 2007 Free Software Foundation, Inc.
+
+ Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
+ with help from Dan Sahlin (dan@sics.se) and
+ commentary by Jim Blandy (jimb@ai.mit.edu);
+ adaptation to memchr suggested by Dick Karpinski (dick@cca.ucsf.edu),
+ and implemented by Roland McGrath (roland@ai.mit.edu).
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#if defined _LIBC
+# include <memcopy.h>
+#else
+# include <config.h>
+# define reg_char char
+#endif
+
+#include <string.h>
+#include <limits.h>
+
+#undef __memrchr
+#undef memrchr
+
+#ifndef weak_alias
+# define __memrchr memrchr
+#endif
+
+/* Search no more than N bytes of S for C. */
+void *
+__memrchr (void const *s, int c_in, size_t n)
+{
+ const unsigned char *char_ptr;
+ const unsigned long int *longword_ptr;
+ unsigned long int longword, magic_bits, charmask;
+ unsigned reg_char c;
+ int i;
+
+ c = (unsigned char) c_in;
+
+ /* Handle the last few characters by reading one character at a time.
+ Do this until CHAR_PTR is aligned on a longword boundary. */
+ for (char_ptr = (const unsigned char *) s + n;
+ n > 0 && (size_t) char_ptr % sizeof longword != 0;
+ --n)
+ if (*--char_ptr == c)
+ return (void *) char_ptr;
+
+ /* All these elucidatory comments refer to 4-byte longwords,
+ but the theory applies equally well to any size longwords. */
+
+ longword_ptr = (const unsigned long int *) char_ptr;
+
+ /* Bits 31, 24, 16, and 8 of this number are zero. Call these bits
+ the "holes." Note that there is a hole just to the left of
+ each byte, with an extra at the end:
+
+ bits: 01111110 11111110 11111110 11111111
+ bytes: AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD
+
+ The 1-bits make sure that carries propagate to the next 0-bit.
+ The 0-bits provide holes for carries to fall into. */
+
+ /* Set MAGIC_BITS to be this pattern of 1 and 0 bits.
+ Set CHARMASK to be a longword, each of whose bytes is C. */
+
+ magic_bits = 0xfefefefe;
+ charmask = c | (c << 8);
+ charmask |= charmask << 16;
+#if 0xffffffffU < ULONG_MAX
+ magic_bits |= magic_bits << 32;
+ charmask |= charmask << 32;
+ if (8 < sizeof longword)
+ for (i = 64; i < sizeof longword * 8; i *= 2)
+ {
+ magic_bits |= magic_bits << i;
+ charmask |= charmask << i;
+ }
+#endif
+ magic_bits = (ULONG_MAX >> 1) & (magic_bits | 1);
+
+ /* Instead of the traditional loop which tests each character,
+ we will test a longword at a time. The tricky part is testing
+ if *any of the four* bytes in the longword in question are zero. */
+ while (n >= sizeof longword)
+ {
+ /* We tentatively exit the loop if adding MAGIC_BITS to
+ LONGWORD fails to change any of the hole bits of LONGWORD.
+
+ 1) Is this safe? Will it catch all the zero bytes?
+ Suppose there is a byte with all zeros. Any carry bits
+ propagating from its left will fall into the hole at its
+ least significant bit and stop. Since there will be no
+ carry from its most significant bit, the LSB of the
+ byte to the left will be unchanged, and the zero will be
+ detected.
+
+ 2) Is this worthwhile? Will it ignore everything except
+ zero bytes? Suppose every byte of LONGWORD has a bit set
+ somewhere. There will be a carry into bit 8. If bit 8
+ is set, this will carry into bit 16. If bit 8 is clear,
+ one of bits 9-15 must be set, so there will be a carry
+ into bit 16. Similarly, there will be a carry into bit
+ 24. If one of bits 24-30 is set, there will be a carry
+ into bit 31, so all of the hole bits will be changed.
+
+ The one misfire occurs when bits 24-30 are clear and bit
+ 31 is set; in this case, the hole at bit 31 is not
+ changed. If we had access to the processor carry flag,
+ we could close this loophole by putting the fourth hole
+ at bit 32!
+
+ So it ignores everything except 128's, when they're aligned
+ properly.
+
+ 3) But wait! Aren't we looking for C, not zero?
+ Good point. So what we do is XOR LONGWORD with a longword,
+ each of whose bytes is C. This turns each byte that is C
+ into a zero. */
+
+ longword = *--longword_ptr ^ charmask;
+
+ /* Add MAGIC_BITS to LONGWORD. */
+ if ((((longword + magic_bits)
+
+ /* Set those bits that were unchanged by the addition. */
+ ^ ~longword)
+
+ /* Look at only the hole bits. If any of the hole bits
+ are unchanged, most likely one of the bytes was a
+ zero. */
+ & ~magic_bits) != 0)
+ {
+ /* Which of the bytes was C? If none of them were, it was
+ a misfire; continue the search. */
+
+ const unsigned char *cp = (const unsigned char *) longword_ptr;
+
+ if (8 < sizeof longword)
+ for (i = sizeof longword - 1; 8 <= i; i--)
+ if (cp[i] == c)
+ return (void *) &cp[i];
+ if (7 < sizeof longword && cp[7] == c)
+ return (void *) &cp[7];
+ if (6 < sizeof longword && cp[6] == c)
+ return (void *) &cp[6];
+ if (5 < sizeof longword && cp[5] == c)
+ return (void *) &cp[5];
+ if (4 < sizeof longword && cp[4] == c)
+ return (void *) &cp[4];
+ if (cp[3] == c)
+ return (void *) &cp[3];
+ if (cp[2] == c)
+ return (void *) &cp[2];
+ if (cp[1] == c)
+ return (void *) &cp[1];
+ if (cp[0] == c)
+ return (void *) cp;
+ }
+
+ n -= sizeof longword;
+ }
+
+ char_ptr = (const unsigned char *) longword_ptr;
+
+ while (n-- > 0)
+ {
+ if (*--char_ptr == c)
+ return (void *) char_ptr;
+ }
+
+ return 0;
+}
+#ifdef weak_alias
+weak_alias (__memrchr, memrchr)
+#endif
diff --git a/lib/memset.c b/lib/memset.c
new file mode 100644
index 0000000..890cbf1
--- /dev/null
+++ b/lib/memset.c
@@ -0,0 +1,28 @@
+/* memset.c -- set an area of memory to a given value
+ Copyright (C) 1991, 2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <stddef.h>
+
+void *
+memset (void *str, int c, size_t len)
+{
+ register char *st = str;
+
+ while (len-- > 0)
+ *st++ = c;
+ return str;
+}
diff --git a/lib/memxfrm.c b/lib/memxfrm.c
new file mode 100644
index 0000000..09bb5f4
--- /dev/null
+++ b/lib/memxfrm.c
@@ -0,0 +1,106 @@
+/* Locale-specific memory transformation
+
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert <eggert@cs.ucla.edu>. */
+
+#include <config.h>
+
+#include "memxfrm.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* Store into DEST (of size DESTSIZE) the text in SRC (of size SRCSIZE)
+ transformed so that the result of memcmp on two transformed texts
+ (with ties going to the longer text) is the same as the result of
+ memcoll on the two texts before their transformation. Perhaps
+ temporarily modify the byte after SRC, but restore its original
+ contents before returning.
+
+ Return the size of the resulting text, or an indeterminate value if
+ there is an error. Set errno to an error number if there is an
+ error, and to zero otherwise. DEST contains an indeterminate value
+ if there is an error or if the resulting size is greater than
+ DESTSIZE. */
+
+size_t
+memxfrm (char *restrict dest, size_t destsize,
+ char *restrict src, size_t srcsize)
+{
+#if HAVE_STRXFRM
+
+ size_t di = 0;
+ size_t si = 0;
+ size_t result = 0;
+
+ char ch = src[srcsize];
+ src[srcsize] = '\0';
+
+ while (si < srcsize)
+ {
+ size_t slen = strlen (src + si);
+
+ size_t result0 = result;
+ errno = 0;
+ result += strxfrm (dest + di, src + si, destsize - di) + 1;
+ if (errno != 0)
+ break;
+ if (result <= result0)
+ {
+ errno = ERANGE;
+ break;
+ }
+
+ if (result == destsize + 1 && si + slen == srcsize)
+ {
+ /* The destination is exactly the right size, but strxfrm wants
+ room for a trailing null. Work around the problem with a
+ temporary buffer. */
+ size_t bufsize = destsize - di + 1;
+ char stackbuf[4000];
+ char *buf = stackbuf;
+ if (sizeof stackbuf < bufsize)
+ {
+ buf = malloc (bufsize);
+ if (! buf)
+ break;
+ }
+ strxfrm (buf, src + si, bufsize);
+ memcpy (dest + di, buf, destsize - di);
+ if (sizeof stackbuf < bufsize)
+ free (buf);
+ errno = 0;
+ }
+
+ di = (result < destsize ? result : destsize);
+ si += slen + 1;
+ }
+
+ src[srcsize] = ch;
+ return result - (si != srcsize);
+
+#else
+
+ if (srcsize < destsize)
+ memcpy (dest, src, srcsize);
+ errno = 0;
+ return srcsize;
+
+#endif
+}
diff --git a/lib/memxfrm.h b/lib/memxfrm.h
new file mode 100644
index 0000000..605421d
--- /dev/null
+++ b/lib/memxfrm.h
@@ -0,0 +1,2 @@
+#include <stddef.h>
+size_t memxfrm (char *restrict, size_t, char *restrict, size_t);
diff --git a/lib/mkancesdirs.c b/lib/mkancesdirs.c
new file mode 100644
index 0000000..19f7dca
--- /dev/null
+++ b/lib/mkancesdirs.c
@@ -0,0 +1,154 @@
+/* Make a file's ancestor directories.
+
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "mkancesdirs.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include <errno.h>
+#include <unistd.h>
+
+#include "dirname.h"
+#include "savewd.h"
+
+/* Ensure that the ancestor directories of FILE exist, using an
+ algorithm that should work even if two processes execute this
+ function in parallel. Modify FILE as necessary to access the
+ ancestor directories, but restore FILE to an equivalent value
+ if successful.
+
+ WD points to the working directory, using the conventions of
+ savewd.
+
+ Create any ancestor directories that don't already exist, by
+ invoking MAKE_DIR (FILE, COMPONENT, MAKE_DIR_ARG). This function
+ should return 0 if successful and the resulting directory is
+ readable, 1 if successful but the resulting directory might not be
+ readable, -1 (setting errno) otherwise. If COMPONENT is relative,
+ it is relative to the temporary working directory, which may differ
+ from *WD.
+
+ Ordinarily MAKE_DIR is executed with the working directory changed
+ to reflect the already-made prefix, and mkancesdirs returns with
+ the working directory changed a prefix of FILE. However, if the
+ initial working directory cannot be saved in a file descriptor,
+ MAKE_DIR is invoked in a subprocess and this function returns in
+ both the parent and child process, so the caller should not assume
+ any changed state survives other than the EXITMAX component of WD,
+ and the caller should take care that the parent does not attempt to
+ do the work that the child is doing.
+
+ If successful and if this process can go ahead and create FILE,
+ return the length of the prefix of FILE that has already been made.
+ If successful so far but a child process is doing the actual work,
+ return -2. If unsuccessful, return -1 and set errno. */
+
+ptrdiff_t
+mkancesdirs (char *file, struct savewd *wd,
+ int (*make_dir) (char const *, char const *, void *),
+ void *make_dir_arg)
+{
+ /* Address of the previous directory separator that follows an
+ ordinary byte in a file name in the left-to-right scan, or NULL
+ if no such separator precedes the current location P. */
+ char *sep = NULL;
+
+ /* Address of the leftmost file name component that has not yet
+ been processed. */
+ char *component = file;
+
+ char *p = file + FILE_SYSTEM_PREFIX_LEN (file);
+ char c;
+ bool made_dir = false;
+
+ /* Scan forward through FILE, creating and chdiring into directories
+ along the way. Try MAKE_DIR before chdir, so that the procedure
+ works even when two or more processes are executing it in
+ parallel. Isolate each file name component by having COMPONENT
+ point to its start and SEP point just after its end. */
+
+ while ((c = *p++))
+ if (ISSLASH (*p))
+ {
+ if (! ISSLASH (c))
+ sep = p;
+ }
+ else if (ISSLASH (c) && *p && sep)
+ {
+ /* Don't bother to make or test for "." since it does not
+ affect the algorithm. */
+ if (! (sep - component == 1 && component[0] == '.'))
+ {
+ int make_dir_errno = 0;
+ int savewd_chdir_options = 0;
+ int chdir_result;
+
+ /* Temporarily modify FILE to isolate this file name
+ component. */
+ *sep = '\0';
+
+ /* Invoke MAKE_DIR on this component, except don't bother
+ with ".." since it must exist if its "parent" does. */
+ if (sep - component == 2
+ && component[0] == '.' && component[1] == '.')
+ made_dir = false;
+ else
+ switch (make_dir (file, component, make_dir_arg))
+ {
+ case -1:
+ make_dir_errno = errno;
+ break;
+
+ case 0:
+ savewd_chdir_options |= SAVEWD_CHDIR_READABLE;
+ /* Fall through. */
+ case 1:
+ made_dir = true;
+ break;
+ }
+
+ if (made_dir)
+ savewd_chdir_options |= SAVEWD_CHDIR_NOFOLLOW;
+
+ chdir_result =
+ savewd_chdir (wd, component, savewd_chdir_options, NULL);
+
+ /* Undo the temporary modification to FILE, unless there
+ was a failure. */
+ if (chdir_result != -1)
+ *sep = '/';
+
+ if (chdir_result != 0)
+ {
+ if (make_dir_errno != 0 && errno == ENOENT)
+ errno = make_dir_errno;
+ return chdir_result;
+ }
+ }
+
+ component = p;
+ }
+
+ return component - file;
+}
diff --git a/lib/mkancesdirs.h b/lib/mkancesdirs.h
new file mode 100644
index 0000000..08fb50c
--- /dev/null
+++ b/lib/mkancesdirs.h
@@ -0,0 +1,4 @@
+#include <stddef.h>
+struct savewd;
+ptrdiff_t mkancesdirs (char *, struct savewd *,
+ int (*) (char const *, char const *, void *), void *);
diff --git a/lib/mkdir-p.c b/lib/mkdir-p.c
new file mode 100644
index 0000000..6f71ec8
--- /dev/null
+++ b/lib/mkdir-p.c
@@ -0,0 +1,209 @@
+/* mkdir-p.c -- Ensure that a directory and its parents exist.
+
+ Copyright (C) 1990, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005,
+ 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert, David MacKenzie, and Jim Meyering. */
+
+#include <config.h>
+
+#include "mkdir-p.h"
+
+#include <errno.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+#include "dirchownmod.h"
+#include "dirname.h"
+#include "error.h"
+#include "quote.h"
+#include "mkancesdirs.h"
+#include "savewd.h"
+
+#ifndef HAVE_FCHMOD
+# define HAVE_FCHMOD false
+#endif
+
+/* Ensure that the directory DIR exists.
+
+ WD is the working directory, as in savewd.c.
+
+ If MAKE_ANCESTOR is not null, create any ancestor directories that
+ don't already exist, by invoking MAKE_ANCESTOR (DIR, ANCESTOR, OPTIONS).
+ This function should return zero if successful, -1 (setting errno)
+ otherwise. In this case, DIR may be modified by storing '\0' bytes
+ into it, to access the ancestor directories, and this modification
+ is retained on return if the ancestor directories could not be
+ created.
+
+ Create DIR as a new directory with using mkdir with permissions
+ MODE. It is also OK if MAKE_ANCESTOR is not null and a
+ directory DIR already exists.
+
+ Call ANNOUNCE (DIR, OPTIONS) just after successfully making DIR,
+ even if some of the following actions fail.
+
+ Set DIR's owner to OWNER and group to GROUP, but leave the owner
+ alone if OWNER is (uid_t) -1, and similarly for GROUP.
+
+ Set DIR's mode bits to MODE, except preserve any of the bits that
+ correspond to zero bits in MODE_BITS. In other words, MODE_BITS is
+ a mask that specifies which of DIR's mode bits should be set or
+ cleared. MODE should be a subset of MODE_BITS, which in turn
+ should be a subset of CHMOD_MODE_BITS. Changing the mode in this
+ way is necessary if DIR already existed or if MODE and MODE_BITS
+ specify non-permissions bits like S_ISUID.
+
+ However, if PRESERVE_EXISTING is true and DIR already exists,
+ do not attempt to set DIR's ownership and file mode bits.
+
+ This implementation assumes the current umask is zero.
+
+ Return true if DIR exists as a directory with the proper ownership
+ and file mode bits when done, or if a child process has been
+ dispatched to do the real work (though the child process may not
+ have finished yet -- it is the caller's responsibility to handle
+ this). Report a diagnostic and return false on failure, storing
+ '\0' into *DIR if an ancestor directory had problems. */
+
+bool
+make_dir_parents (char *dir,
+ struct savewd *wd,
+ int (*make_ancestor) (char const *, char const *, void *),
+ void *options,
+ mode_t mode,
+ void (*announce) (char const *, void *),
+ mode_t mode_bits,
+ uid_t owner,
+ gid_t group,
+ bool preserve_existing)
+{
+ int mkdir_errno = (IS_ABSOLUTE_FILE_NAME (dir) ? 0 : savewd_errno (wd));
+
+ if (mkdir_errno == 0)
+ {
+ ptrdiff_t prefix_len = 0;
+ int savewd_chdir_options = (HAVE_FCHMOD ? SAVEWD_CHDIR_SKIP_READABLE : 0);
+
+ if (make_ancestor)
+ {
+ prefix_len = mkancesdirs (dir, wd, make_ancestor, options);
+ if (prefix_len < 0)
+ {
+ if (prefix_len < -1)
+ return true;
+ mkdir_errno = errno;
+ }
+ }
+
+ if (0 <= prefix_len)
+ {
+ /* If the ownership might change, or if the directory will be
+ writeable to other users and its special mode bits may
+ change after the directory is created, create it with
+ more restrictive permissions at first, so unauthorized
+ users cannot nip in before the directory is ready. */
+ bool keep_owner = owner == (uid_t) -1 && group == (gid_t) -1;
+ bool keep_special_mode_bits =
+ ((mode_bits & (S_ISUID | S_ISGID)) | (mode & S_ISVTX)) == 0;
+ mode_t mkdir_mode = mode;
+ if (! keep_owner)
+ mkdir_mode &= ~ (S_IRWXG | S_IRWXO);
+ else if (! keep_special_mode_bits)
+ mkdir_mode &= ~ (S_IWGRP | S_IWOTH);
+
+ if (mkdir (dir + prefix_len, mkdir_mode) == 0)
+ {
+ announce (dir, options);
+ preserve_existing = keep_owner & keep_special_mode_bits;
+ savewd_chdir_options |=
+ (SAVEWD_CHDIR_NOFOLLOW
+ | (mode & S_IRUSR ? SAVEWD_CHDIR_READABLE : 0));
+ }
+ else
+ {
+ mkdir_errno = errno;
+ mkdir_mode = -1;
+ }
+
+ if (preserve_existing)
+ {
+ struct stat st;
+ if (mkdir_errno == 0
+ || (mkdir_errno != ENOENT && make_ancestor
+ && stat (dir + prefix_len, &st) == 0
+ && S_ISDIR (st.st_mode)))
+ return true;
+ }
+ else
+ {
+ int open_result[2];
+ int chdir_result =
+ savewd_chdir (wd, dir + prefix_len,
+ savewd_chdir_options, open_result);
+ if (chdir_result < -1)
+ return true;
+ else
+ {
+ bool chdir_ok = (chdir_result == 0);
+ int chdir_errno = errno;
+ int fd = open_result[0];
+ bool chdir_failed_unexpectedly =
+ (mkdir_errno == 0
+ && ((! chdir_ok && (mode & S_IXUSR))
+ || (fd < 0 && (mode & S_IRUSR))));
+
+ if (chdir_failed_unexpectedly)
+ {
+ /* No need to save errno here; it's irrelevant. */
+ if (0 <= fd)
+ close (fd);
+ }
+ else
+ {
+ char const *subdir = (chdir_ok ? "." : dir + prefix_len);
+ if (dirchownmod (fd, subdir, mkdir_mode, owner, group,
+ mode, mode_bits)
+ == 0)
+ return true;
+ }
+
+ if (mkdir_errno == 0
+ || (mkdir_errno != ENOENT && make_ancestor
+ && errno != ENOTDIR))
+ {
+ error (0,
+ (! chdir_failed_unexpectedly ? errno
+ : ! chdir_ok && (mode & S_IXUSR) ? chdir_errno
+ : open_result[1]),
+ _(keep_owner
+ ? "cannot change permissions of %s"
+ : "cannot change owner and permissions of %s"),
+ quote (dir));
+ return false;
+ }
+ }
+ }
+ }
+ }
+
+ error (0, mkdir_errno, _("cannot create directory %s"), quote (dir));
+ return false;
+}
diff --git a/lib/mkdir-p.h b/lib/mkdir-p.h
new file mode 100644
index 0000000..7353182
--- /dev/null
+++ b/lib/mkdir-p.h
@@ -0,0 +1,36 @@
+/* mkdir-p.h -- Ensure that a directory and its parents exist.
+
+ Copyright (C) 1994, 1995, 1996, 1997, 2000, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert, David MacKenzie, and Jim Meyering. */
+
+#include <stdbool.h>
+#include <sys/types.h>
+
+struct savewd;
+bool make_dir_parents (char *dir,
+ struct savewd *wd,
+ int (*make_ancestor) (char const *, char const *,
+ void *),
+ void *options,
+ mode_t mode,
+ void (*announce) (char const *, void *),
+ mode_t mode_bits,
+ uid_t owner,
+ gid_t group,
+ bool preserve_existing);
diff --git a/lib/mkdir.c b/lib/mkdir.c
new file mode 100644
index 0000000..5a0c4b0
--- /dev/null
+++ b/lib/mkdir.c
@@ -0,0 +1,63 @@
+/* On some systems, mkdir ("foo/", 0700) fails because of the trailing
+ slash. On those systems, this wrapper removes the trailing slash.
+
+ Copyright (C) 2001, 2003, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+
+/* Disable the definition of mkdir to rpl_mkdir (from config.h) in this
+ file. Otherwise, we'd get conflicting prototypes for rpl_mkdir on
+ most systems. */
+#undef mkdir
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "dirname.h"
+#include "xalloc.h"
+
+/* This function is required at least for NetBSD 1.5.2. */
+
+int
+rpl_mkdir (char const *dir, mode_t mode)
+{
+ int ret_val;
+ char *tmp_dir;
+ size_t len = strlen (dir);
+
+ if (len && dir[len - 1] == '/')
+ {
+ tmp_dir = xstrdup (dir);
+ strip_trailing_slashes (tmp_dir);
+ }
+ else
+ {
+ tmp_dir = (char *) dir;
+ }
+
+ ret_val = mkdir (tmp_dir, mode);
+
+ if (tmp_dir != dir)
+ free (tmp_dir);
+
+ return ret_val;
+}
diff --git a/lib/mkdirat.c b/lib/mkdirat.c
new file mode 100644
index 0000000..da0b262
--- /dev/null
+++ b/lib/mkdirat.c
@@ -0,0 +1,43 @@
+/* fd-relative mkdir
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+
+#include "openat.h"
+
+#include <unistd.h>
+
+#include "dirname.h" /* solely for definition of IS_ABSOLUTE_FILE_NAME */
+#include "save-cwd.h"
+#include "openat-priv.h"
+
+/* Solaris 10 has no function like this.
+ Create a subdirectory, FILE, with mode MODE, in the directory
+ open on descriptor FD. If possible, do it without changing the
+ working directory. Otherwise, resort to using save_cwd/fchdir,
+ then mkdir/restore_cwd. If either the save_cwd or the restore_cwd
+ fails, then give a diagnostic and exit nonzero. */
+
+#define AT_FUNC_NAME mkdirat
+#define AT_FUNC_F1 mkdir
+#define AT_FUNC_F2 mkdir
+#define AT_FUNC_USE_F1_COND 1
+#define AT_FUNC_POST_FILE_PARAM_DECLS , mode_t mode
+#define AT_FUNC_POST_FILE_ARGS , mode
+#include "at-func.c"
diff --git a/lib/mkstemp-safer.c b/lib/mkstemp-safer.c
new file mode 100644
index 0000000..ff1c0d4
--- /dev/null
+++ b/lib/mkstemp-safer.c
@@ -0,0 +1,35 @@
+/* Invoke mkstemp, but avoid some glitches.
+
+ Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "stdlib-safer.h"
+
+#include <stdlib.h>
+#include "unistd-safer.h"
+
+/* Like mkstemp, but do not return STDIN_FILENO, STDOUT_FILENO, or
+ STDERR_FILENO. */
+
+int
+mkstemp_safer (char *templ)
+{
+ return fd_safer (mkstemp (templ));
+}
diff --git a/lib/mkstemp.c b/lib/mkstemp.c
new file mode 100644
index 0000000..57ee228
--- /dev/null
+++ b/lib/mkstemp.c
@@ -0,0 +1,45 @@
+/* Copyright (C) 1998, 1999, 2001, 2005, 2006, 2007 Free Software Foundation, Inc.
+ This file is derived from the one in the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#if !_LIBC
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+
+#if !_LIBC
+# include "tempname.h"
+# define __gen_tempname gen_tempname
+# define __GT_FILE GT_FILE
+#endif
+
+#include <stdio.h>
+
+#ifndef __GT_FILE
+# define __GT_FILE 0
+#endif
+
+/* Generate a unique temporary file name from TEMPLATE.
+ The last six characters of TEMPLATE must be "XXXXXX";
+ they are replaced with a string that makes the file name unique.
+ Then open the file and return a fd. */
+int
+mkstemp (template)
+ char *template;
+{
+ return __gen_tempname (template, __GT_FILE);
+}
diff --git a/lib/mktime.c b/lib/mktime.c
new file mode 100644
index 0000000..a91fb20
--- /dev/null
+++ b/lib/mktime.c
@@ -0,0 +1,663 @@
+/* Convert a `struct tm' to a time_t value.
+ Copyright (C) 1993-1999, 2002-2005, 2006, 2007 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Paul Eggert <eggert@twinsun.com>.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Define this to have a standalone program to test this implementation of
+ mktime. */
+/* #define DEBUG 1 */
+
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+/* Assume that leap seconds are possible, unless told otherwise.
+ If the host has a `zic' command with a `-L leapsecondfilename' option,
+ then it supports leap seconds; otherwise it probably doesn't. */
+#ifndef LEAP_SECONDS_POSSIBLE
+# define LEAP_SECONDS_POSSIBLE 1
+#endif
+
+#include <time.h>
+
+#include <limits.h>
+
+#include <string.h> /* For the real memcpy prototype. */
+
+#if DEBUG
+# include <stdio.h>
+# include <stdlib.h>
+/* Make it work even if the system's libc has its own mktime routine. */
+# define mktime my_mktime
+#endif /* DEBUG */
+
+/* Shift A right by B bits portably, by dividing A by 2**B and
+ truncating towards minus infinity. A and B should be free of side
+ effects, and B should be in the range 0 <= B <= INT_BITS - 2, where
+ INT_BITS is the number of useful bits in an int. GNU code can
+ assume that INT_BITS is at least 32.
+
+ ISO C99 says that A >> B is implementation-defined if A < 0. Some
+ implementations (e.g., UNICOS 9.0 on a Cray Y-MP EL) don't shift
+ right in the usual way when A < 0, so SHR falls back on division if
+ ordinary A >> B doesn't seem to be the usual signed shift. */
+#define SHR(a, b) \
+ (-1 >> 1 == -1 \
+ ? (a) >> (b) \
+ : (a) / (1 << (b)) - ((a) % (1 << (b)) < 0))
+
+/* The extra casts in the following macros work around compiler bugs,
+ e.g., in Cray C 5.0.3.0. */
+
+/* True if the arithmetic type T is an integer type. bool counts as
+ an integer. */
+#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1)
+
+/* True if negative values of the signed integer type T use two's
+ complement, ones' complement, or signed magnitude representation,
+ respectively. Much GNU code assumes two's complement, but some
+ people like to be portable to all possible C hosts. */
+#define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
+#define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0)
+#define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1)
+
+/* True if the arithmetic type T is signed. */
+#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+
+/* The maximum and minimum values for the integer type T. These
+ macros have undefined behavior if T is signed and has padding bits.
+ If this is a problem for you, please let us know how to fix it for
+ your host. */
+#define TYPE_MINIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) 0 \
+ : TYPE_SIGNED_MAGNITUDE (t) \
+ ? ~ (t) 0 \
+ : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
+#define TYPE_MAXIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) -1 \
+ : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+
+#ifndef TIME_T_MIN
+# define TIME_T_MIN TYPE_MINIMUM (time_t)
+#endif
+#ifndef TIME_T_MAX
+# define TIME_T_MAX TYPE_MAXIMUM (time_t)
+#endif
+#define TIME_T_MIDPOINT (SHR (TIME_T_MIN + TIME_T_MAX, 1) + 1)
+
+/* Verify a requirement at compile-time (unlike assert, which is runtime). */
+#define verify(name, assertion) struct name { char a[(assertion) ? 1 : -1]; }
+
+verify (time_t_is_integer, TYPE_IS_INTEGER (time_t));
+verify (twos_complement_arithmetic, TYPE_TWOS_COMPLEMENT (int));
+/* The code also assumes that signed integer overflow silently wraps
+ around, but this assumption can't be stated without causing a
+ diagnostic on some hosts. */
+
+#define EPOCH_YEAR 1970
+#define TM_YEAR_BASE 1900
+verify (base_year_is_a_multiple_of_100, TM_YEAR_BASE % 100 == 0);
+
+/* Return 1 if YEAR + TM_YEAR_BASE is a leap year. */
+static inline int
+leapyear (long int year)
+{
+ /* Don't add YEAR to TM_YEAR_BASE, as that might overflow.
+ Also, work even if YEAR is negative. */
+ return
+ ((year & 3) == 0
+ && (year % 100 != 0
+ || ((year / 100) & 3) == (- (TM_YEAR_BASE / 100) & 3)));
+}
+
+/* How many days come before each month (0-12). */
+#ifndef _LIBC
+static
+#endif
+const unsigned short int __mon_yday[2][13] =
+ {
+ /* Normal years. */
+ { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 },
+ /* Leap years. */
+ { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 }
+ };
+
+
+#ifndef _LIBC
+/* Portable standalone applications should supply a <time.h> that
+ declares a POSIX-compliant localtime_r, for the benefit of older
+ implementations that lack localtime_r or have a nonstandard one.
+ See the gnulib time_r module for one way to implement this. */
+# undef __localtime_r
+# define __localtime_r localtime_r
+# define __mktime_internal mktime_internal
+#endif
+
+/* Return an integer value measuring (YEAR1-YDAY1 HOUR1:MIN1:SEC1) -
+ (YEAR0-YDAY0 HOUR0:MIN0:SEC0) in seconds, assuming that the clocks
+ were not adjusted between the time stamps.
+
+ The YEAR values uses the same numbering as TP->tm_year. Values
+ need not be in the usual range. However, YEAR1 must not be less
+ than 2 * INT_MIN or greater than 2 * INT_MAX.
+
+ The result may overflow. It is the caller's responsibility to
+ detect overflow. */
+
+static inline time_t
+ydhms_diff (long int year1, long int yday1, int hour1, int min1, int sec1,
+ int year0, int yday0, int hour0, int min0, int sec0)
+{
+ verify (C99_integer_division, -1 / 2 == 0);
+ verify (long_int_year_and_yday_are_wide_enough,
+ INT_MAX <= LONG_MAX / 2 || TIME_T_MAX <= UINT_MAX);
+
+ /* Compute intervening leap days correctly even if year is negative.
+ Take care to avoid integer overflow here. */
+ int a4 = SHR (year1, 2) + SHR (TM_YEAR_BASE, 2) - ! (year1 & 3);
+ int b4 = SHR (year0, 2) + SHR (TM_YEAR_BASE, 2) - ! (year0 & 3);
+ int a100 = a4 / 25 - (a4 % 25 < 0);
+ int b100 = b4 / 25 - (b4 % 25 < 0);
+ int a400 = SHR (a100, 2);
+ int b400 = SHR (b100, 2);
+ int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400);
+
+ /* Compute the desired time in time_t precision. Overflow might
+ occur here. */
+ time_t tyear1 = year1;
+ time_t years = tyear1 - year0;
+ time_t days = 365 * years + yday1 - yday0 + intervening_leap_days;
+ time_t hours = 24 * days + hour1 - hour0;
+ time_t minutes = 60 * hours + min1 - min0;
+ time_t seconds = 60 * minutes + sec1 - sec0;
+ return seconds;
+}
+
+
+/* Return a time_t value corresponding to (YEAR-YDAY HOUR:MIN:SEC),
+ assuming that *T corresponds to *TP and that no clock adjustments
+ occurred between *TP and the desired time.
+ If TP is null, return a value not equal to *T; this avoids false matches.
+ If overflow occurs, yield the minimal or maximal value, except do not
+ yield a value equal to *T. */
+static time_t
+guess_time_tm (long int year, long int yday, int hour, int min, int sec,
+ const time_t *t, const struct tm *tp)
+{
+ if (tp)
+ {
+ time_t d = ydhms_diff (year, yday, hour, min, sec,
+ tp->tm_year, tp->tm_yday,
+ tp->tm_hour, tp->tm_min, tp->tm_sec);
+ time_t t1 = *t + d;
+ if ((t1 < *t) == (TYPE_SIGNED (time_t) ? d < 0 : TIME_T_MAX / 2 < d))
+ return t1;
+ }
+
+ /* Overflow occurred one way or another. Return the nearest result
+ that is actually in range, except don't report a zero difference
+ if the actual difference is nonzero, as that would cause a false
+ match; and don't oscillate between two values, as that would
+ confuse the spring-forward gap detector. */
+ return (*t < TIME_T_MIDPOINT
+ ? (*t <= TIME_T_MIN + 1 ? *t + 1 : TIME_T_MIN)
+ : (TIME_T_MAX - 1 <= *t ? *t - 1 : TIME_T_MAX));
+}
+
+/* Use CONVERT to convert *T to a broken down time in *TP.
+ If *T is out of range for conversion, adjust it so that
+ it is the nearest in-range value and then convert that. */
+static struct tm *
+ranged_convert (struct tm *(*convert) (const time_t *, struct tm *),
+ time_t *t, struct tm *tp)
+{
+ struct tm *r = convert (t, tp);
+
+ if (!r && *t)
+ {
+ time_t bad = *t;
+ time_t ok = 0;
+
+ /* BAD is a known unconvertible time_t, and OK is a known good one.
+ Use binary search to narrow the range between BAD and OK until
+ they differ by 1. */
+ while (bad != ok + (bad < 0 ? -1 : 1))
+ {
+ time_t mid = *t = (bad < 0
+ ? bad + ((ok - bad) >> 1)
+ : ok + ((bad - ok) >> 1));
+ r = convert (t, tp);
+ if (r)
+ ok = mid;
+ else
+ bad = mid;
+ }
+
+ if (!r && ok)
+ {
+ /* The last conversion attempt failed;
+ revert to the most recent successful attempt. */
+ *t = ok;
+ r = convert (t, tp);
+ }
+ }
+
+ return r;
+}
+
+
+/* Convert *TP to a time_t value, inverting
+ the monotonic and mostly-unit-linear conversion function CONVERT.
+ Use *OFFSET to keep track of a guess at the offset of the result,
+ compared to what the result would be for UTC without leap seconds.
+ If *OFFSET's guess is correct, only one CONVERT call is needed.
+ This function is external because it is used also by timegm.c. */
+time_t
+__mktime_internal (struct tm *tp,
+ struct tm *(*convert) (const time_t *, struct tm *),
+ time_t *offset)
+{
+ time_t t, gt, t0, t1, t2;
+ struct tm tm;
+
+ /* The maximum number of probes (calls to CONVERT) should be enough
+ to handle any combinations of time zone rule changes, solar time,
+ leap seconds, and oscillations around a spring-forward gap.
+ POSIX.1 prohibits leap seconds, but some hosts have them anyway. */
+ int remaining_probes = 6;
+
+ /* Time requested. Copy it in case CONVERT modifies *TP; this can
+ occur if TP is localtime's returned value and CONVERT is localtime. */
+ int sec = tp->tm_sec;
+ int min = tp->tm_min;
+ int hour = tp->tm_hour;
+ int mday = tp->tm_mday;
+ int mon = tp->tm_mon;
+ int year_requested = tp->tm_year;
+ int isdst = tp->tm_isdst;
+
+ /* 1 if the previous probe was DST. */
+ int dst2;
+
+ /* Ensure that mon is in range, and set year accordingly. */
+ int mon_remainder = mon % 12;
+ int negative_mon_remainder = mon_remainder < 0;
+ int mon_years = mon / 12 - negative_mon_remainder;
+ long int lyear_requested = year_requested;
+ long int year = lyear_requested + mon_years;
+
+ /* The other values need not be in range:
+ the remaining code handles minor overflows correctly,
+ assuming int and time_t arithmetic wraps around.
+ Major overflows are caught at the end. */
+
+ /* Calculate day of year from year, month, and day of month.
+ The result need not be in range. */
+ int mon_yday = ((__mon_yday[leapyear (year)]
+ [mon_remainder + 12 * negative_mon_remainder])
+ - 1);
+ long int lmday = mday;
+ long int yday = mon_yday + lmday;
+
+ time_t guessed_offset = *offset;
+
+ int sec_requested = sec;
+
+ if (LEAP_SECONDS_POSSIBLE)
+ {
+ /* Handle out-of-range seconds specially,
+ since ydhms_tm_diff assumes every minute has 60 seconds. */
+ if (sec < 0)
+ sec = 0;
+ if (59 < sec)
+ sec = 59;
+ }
+
+ /* Invert CONVERT by probing. First assume the same offset as last
+ time. */
+
+ t0 = ydhms_diff (year, yday, hour, min, sec,
+ EPOCH_YEAR - TM_YEAR_BASE, 0, 0, 0, - guessed_offset);
+
+ if (TIME_T_MAX / INT_MAX / 366 / 24 / 60 / 60 < 3)
+ {
+ /* time_t isn't large enough to rule out overflows, so check
+ for major overflows. A gross check suffices, since if t0
+ has overflowed, it is off by a multiple of TIME_T_MAX -
+ TIME_T_MIN + 1. So ignore any component of the difference
+ that is bounded by a small value. */
+
+ /* Approximate log base 2 of the number of time units per
+ biennium. A biennium is 2 years; use this unit instead of
+ years to avoid integer overflow. For example, 2 average
+ Gregorian years are 2 * 365.2425 * 24 * 60 * 60 seconds,
+ which is 63113904 seconds, and rint (log2 (63113904)) is
+ 26. */
+ int ALOG2_SECONDS_PER_BIENNIUM = 26;
+ int ALOG2_MINUTES_PER_BIENNIUM = 20;
+ int ALOG2_HOURS_PER_BIENNIUM = 14;
+ int ALOG2_DAYS_PER_BIENNIUM = 10;
+ int LOG2_YEARS_PER_BIENNIUM = 1;
+
+ int approx_requested_biennia =
+ (SHR (year_requested, LOG2_YEARS_PER_BIENNIUM)
+ - SHR (EPOCH_YEAR - TM_YEAR_BASE, LOG2_YEARS_PER_BIENNIUM)
+ + SHR (mday, ALOG2_DAYS_PER_BIENNIUM)
+ + SHR (hour, ALOG2_HOURS_PER_BIENNIUM)
+ + SHR (min, ALOG2_MINUTES_PER_BIENNIUM)
+ + (LEAP_SECONDS_POSSIBLE
+ ? 0
+ : SHR (sec, ALOG2_SECONDS_PER_BIENNIUM)));
+
+ int approx_biennia = SHR (t0, ALOG2_SECONDS_PER_BIENNIUM);
+ int diff = approx_biennia - approx_requested_biennia;
+ int abs_diff = diff < 0 ? - diff : diff;
+
+ /* IRIX 4.0.5 cc miscaculates TIME_T_MIN / 3: it erroneously
+ gives a positive value of 715827882. Setting a variable
+ first then doing math on it seems to work.
+ (ghazi@caip.rutgers.edu) */
+ time_t time_t_max = TIME_T_MAX;
+ time_t time_t_min = TIME_T_MIN;
+ time_t overflow_threshold =
+ (time_t_max / 3 - time_t_min / 3) >> ALOG2_SECONDS_PER_BIENNIUM;
+
+ if (overflow_threshold < abs_diff)
+ {
+ /* Overflow occurred. Try repairing it; this might work if
+ the time zone offset is enough to undo the overflow. */
+ time_t repaired_t0 = -1 - t0;
+ approx_biennia = SHR (repaired_t0, ALOG2_SECONDS_PER_BIENNIUM);
+ diff = approx_biennia - approx_requested_biennia;
+ abs_diff = diff < 0 ? - diff : diff;
+ if (overflow_threshold < abs_diff)
+ return -1;
+ guessed_offset += repaired_t0 - t0;
+ t0 = repaired_t0;
+ }
+ }
+
+ /* Repeatedly use the error to improve the guess. */
+
+ for (t = t1 = t2 = t0, dst2 = 0;
+ (gt = guess_time_tm (year, yday, hour, min, sec, &t,
+ ranged_convert (convert, &t, &tm)),
+ t != gt);
+ t1 = t2, t2 = t, t = gt, dst2 = tm.tm_isdst != 0)
+ if (t == t1 && t != t2
+ && (tm.tm_isdst < 0
+ || (isdst < 0
+ ? dst2 <= (tm.tm_isdst != 0)
+ : (isdst != 0) != (tm.tm_isdst != 0))))
+ /* We can't possibly find a match, as we are oscillating
+ between two values. The requested time probably falls
+ within a spring-forward gap of size GT - T. Follow the common
+ practice in this case, which is to return a time that is GT - T
+ away from the requested time, preferring a time whose
+ tm_isdst differs from the requested value. (If no tm_isdst
+ was requested and only one of the two values has a nonzero
+ tm_isdst, prefer that value.) In practice, this is more
+ useful than returning -1. */
+ goto offset_found;
+ else if (--remaining_probes == 0)
+ return -1;
+
+ /* We have a match. Check whether tm.tm_isdst has the requested
+ value, if any. */
+ if (isdst != tm.tm_isdst && 0 <= isdst && 0 <= tm.tm_isdst)
+ {
+ /* tm.tm_isdst has the wrong value. Look for a neighboring
+ time with the right value, and use its UTC offset.
+
+ Heuristic: probe the adjacent timestamps in both directions,
+ looking for the desired isdst. This should work for all real
+ time zone histories in the tz database. */
+
+ /* Distance between probes when looking for a DST boundary. In
+ tzdata2003a, the shortest period of DST is 601200 seconds
+ (e.g., America/Recife starting 2000-10-08 01:00), and the
+ shortest period of non-DST surrounded by DST is 694800
+ seconds (Africa/Tunis starting 1943-04-17 01:00). Use the
+ minimum of these two values, so we don't miss these short
+ periods when probing. */
+ int stride = 601200;
+
+ /* The longest period of DST in tzdata2003a is 536454000 seconds
+ (e.g., America/Jujuy starting 1946-10-01 01:00). The longest
+ period of non-DST is much longer, but it makes no real sense
+ to search for more than a year of non-DST, so use the DST
+ max. */
+ int duration_max = 536454000;
+
+ /* Search in both directions, so the maximum distance is half
+ the duration; add the stride to avoid off-by-1 problems. */
+ int delta_bound = duration_max / 2 + stride;
+
+ int delta, direction;
+
+ for (delta = stride; delta < delta_bound; delta += stride)
+ for (direction = -1; direction <= 1; direction += 2)
+ {
+ time_t ot = t + delta * direction;
+ if ((ot < t) == (direction < 0))
+ {
+ struct tm otm;
+ ranged_convert (convert, &ot, &otm);
+ if (otm.tm_isdst == isdst)
+ {
+ /* We found the desired tm_isdst.
+ Extrapolate back to the desired time. */
+ t = guess_time_tm (year, yday, hour, min, sec, &ot, &otm);
+ ranged_convert (convert, &t, &tm);
+ goto offset_found;
+ }
+ }
+ }
+ }
+
+ offset_found:
+ *offset = guessed_offset + t - t0;
+
+ if (LEAP_SECONDS_POSSIBLE && sec_requested != tm.tm_sec)
+ {
+ /* Adjust time to reflect the tm_sec requested, not the normalized value.
+ Also, repair any damage from a false match due to a leap second. */
+ int sec_adjustment = (sec == 0 && tm.tm_sec == 60) - sec;
+ t1 = t + sec_requested;
+ t2 = t1 + sec_adjustment;
+ if (((t1 < t) != (sec_requested < 0))
+ | ((t2 < t1) != (sec_adjustment < 0))
+ | ! convert (&t2, &tm))
+ return -1;
+ t = t2;
+ }
+
+ *tp = tm;
+ return t;
+}
+
+
+/* FIXME: This should use a signed type wide enough to hold any UTC
+ offset in seconds. 'int' should be good enough for GNU code. We
+ can't fix this unilaterally though, as other modules invoke
+ __mktime_internal. */
+static time_t localtime_offset;
+
+/* Convert *TP to a time_t value. */
+time_t
+mktime (struct tm *tp)
+{
+#ifdef _LIBC
+ /* POSIX.1 8.1.1 requires that whenever mktime() is called, the
+ time zone names contained in the external variable `tzname' shall
+ be set as if the tzset() function had been called. */
+ __tzset ();
+#endif
+
+ return __mktime_internal (tp, __localtime_r, &localtime_offset);
+}
+
+#ifdef weak_alias
+weak_alias (mktime, timelocal)
+#endif
+
+#ifdef _LIBC
+libc_hidden_def (mktime)
+libc_hidden_weak (timelocal)
+#endif
+
+#if DEBUG
+
+static int
+not_equal_tm (const struct tm *a, const struct tm *b)
+{
+ return ((a->tm_sec ^ b->tm_sec)
+ | (a->tm_min ^ b->tm_min)
+ | (a->tm_hour ^ b->tm_hour)
+ | (a->tm_mday ^ b->tm_mday)
+ | (a->tm_mon ^ b->tm_mon)
+ | (a->tm_year ^ b->tm_year)
+ | (a->tm_yday ^ b->tm_yday)
+ | (a->tm_isdst ^ b->tm_isdst));
+}
+
+static void
+print_tm (const struct tm *tp)
+{
+ if (tp)
+ printf ("%04d-%02d-%02d %02d:%02d:%02d yday %03d wday %d isdst %d",
+ tp->tm_year + TM_YEAR_BASE, tp->tm_mon + 1, tp->tm_mday,
+ tp->tm_hour, tp->tm_min, tp->tm_sec,
+ tp->tm_yday, tp->tm_wday, tp->tm_isdst);
+ else
+ printf ("0");
+}
+
+static int
+check_result (time_t tk, struct tm tmk, time_t tl, const struct tm *lt)
+{
+ if (tk != tl || !lt || not_equal_tm (&tmk, lt))
+ {
+ printf ("mktime (");
+ print_tm (lt);
+ printf (")\nyields (");
+ print_tm (&tmk);
+ printf (") == %ld, should be %ld\n", (long int) tk, (long int) tl);
+ return 1;
+ }
+
+ return 0;
+}
+
+int
+main (int argc, char **argv)
+{
+ int status = 0;
+ struct tm tm, tmk, tml;
+ struct tm *lt;
+ time_t tk, tl, tl1;
+ char trailer;
+
+ if ((argc == 3 || argc == 4)
+ && (sscanf (argv[1], "%d-%d-%d%c",
+ &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &trailer)
+ == 3)
+ && (sscanf (argv[2], "%d:%d:%d%c",
+ &tm.tm_hour, &tm.tm_min, &tm.tm_sec, &trailer)
+ == 3))
+ {
+ tm.tm_year -= TM_YEAR_BASE;
+ tm.tm_mon--;
+ tm.tm_isdst = argc == 3 ? -1 : atoi (argv[3]);
+ tmk = tm;
+ tl = mktime (&tmk);
+ lt = localtime (&tl);
+ if (lt)
+ {
+ tml = *lt;
+ lt = &tml;
+ }
+ printf ("mktime returns %ld == ", (long int) tl);
+ print_tm (&tmk);
+ printf ("\n");
+ status = check_result (tl, tmk, tl, lt);
+ }
+ else if (argc == 4 || (argc == 5 && strcmp (argv[4], "-") == 0))
+ {
+ time_t from = atol (argv[1]);
+ time_t by = atol (argv[2]);
+ time_t to = atol (argv[3]);
+
+ if (argc == 4)
+ for (tl = from; by < 0 ? to <= tl : tl <= to; tl = tl1)
+ {
+ lt = localtime (&tl);
+ if (lt)
+ {
+ tmk = tml = *lt;
+ tk = mktime (&tmk);
+ status |= check_result (tk, tmk, tl, &tml);
+ }
+ else
+ {
+ printf ("localtime (%ld) yields 0\n", (long int) tl);
+ status = 1;
+ }
+ tl1 = tl + by;
+ if ((tl1 < tl) != (by < 0))
+ break;
+ }
+ else
+ for (tl = from; by < 0 ? to <= tl : tl <= to; tl = tl1)
+ {
+ /* Null benchmark. */
+ lt = localtime (&tl);
+ if (lt)
+ {
+ tmk = tml = *lt;
+ tk = tl;
+ status |= check_result (tk, tmk, tl, &tml);
+ }
+ else
+ {
+ printf ("localtime (%ld) yields 0\n", (long int) tl);
+ status = 1;
+ }
+ tl1 = tl + by;
+ if ((tl1 < tl) != (by < 0))
+ break;
+ }
+ }
+ else
+ printf ("Usage:\
+\t%s YYYY-MM-DD HH:MM:SS [ISDST] # Test given time.\n\
+\t%s FROM BY TO # Test values FROM, FROM+BY, ..., TO.\n\
+\t%s FROM BY TO - # Do not test those values (for benchmark).\n",
+ argv[0], argv[0], argv[0]);
+
+ return status;
+}
+
+#endif /* DEBUG */
+
+/*
+Local Variables:
+compile-command: "gcc -DDEBUG -Wall -W -O -g mktime.c -o mktime"
+End:
+*/
diff --git a/lib/modechange.c b/lib/modechange.c
new file mode 100644
index 0000000..e1f7ceb
--- /dev/null
+++ b/lib/modechange.c
@@ -0,0 +1,386 @@
+/* modechange.c -- file mode manipulation
+
+ Copyright (C) 1989, 1990, 1997, 1998, 1999, 2001, 2003, 2004, 2005,
+ 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David MacKenzie <djm@ai.mit.edu> */
+
+/* The ASCII mode string is compiled into an array of `struct
+ modechange', which can then be applied to each file to be changed.
+ We do this instead of re-parsing the ASCII string for each file
+ because the compiled form requires less computation to use; when
+ changing the mode of many files, this probably results in a
+ performance gain. */
+
+#include <config.h>
+
+#include "modechange.h"
+#include <sys/stat.h>
+#include "stat-macros.h"
+#include "xalloc.h"
+#include <stdlib.h>
+
+/* The traditional octal values corresponding to each mode bit. */
+#define SUID 04000
+#define SGID 02000
+#define SVTX 01000
+#define RUSR 00400
+#define WUSR 00200
+#define XUSR 00100
+#define RGRP 00040
+#define WGRP 00020
+#define XGRP 00010
+#define ROTH 00004
+#define WOTH 00002
+#define XOTH 00001
+#define ALLM 07777 /* all octal mode bits */
+
+/* Convert OCTAL, which uses one of the traditional octal values, to
+ an internal mode_t value. */
+static mode_t
+octal_to_mode (unsigned int octal)
+{
+ /* Help the compiler optimize the usual case where mode_t uses
+ the traditional octal representation. */
+ return ((S_ISUID == SUID && S_ISGID == SGID && S_ISVTX == SVTX
+ && S_IRUSR == RUSR && S_IWUSR == WUSR && S_IXUSR == XUSR
+ && S_IRGRP == RGRP && S_IWGRP == WGRP && S_IXGRP == XGRP
+ && S_IROTH == ROTH && S_IWOTH == WOTH && S_IXOTH == XOTH)
+ ? octal
+ : (mode_t) ((octal & SUID ? S_ISUID : 0)
+ | (octal & SGID ? S_ISGID : 0)
+ | (octal & SVTX ? S_ISVTX : 0)
+ | (octal & RUSR ? S_IRUSR : 0)
+ | (octal & WUSR ? S_IWUSR : 0)
+ | (octal & XUSR ? S_IXUSR : 0)
+ | (octal & RGRP ? S_IRGRP : 0)
+ | (octal & WGRP ? S_IWGRP : 0)
+ | (octal & XGRP ? S_IXGRP : 0)
+ | (octal & ROTH ? S_IROTH : 0)
+ | (octal & WOTH ? S_IWOTH : 0)
+ | (octal & XOTH ? S_IXOTH : 0)));
+}
+
+/* Special operations flags. */
+enum
+ {
+ /* For the sentinel at the end of the mode changes array. */
+ MODE_DONE,
+
+ /* The typical case. */
+ MODE_ORDINARY_CHANGE,
+
+ /* In addition to the typical case, affect the execute bits if at
+ least one execute bit is set already, or if the file is a
+ directory. */
+ MODE_X_IF_ANY_X,
+
+ /* Instead of the typical case, copy some existing permissions for
+ u, g, or o onto the other two. Which of u, g, or o is copied
+ is determined by which bits are set in the `value' field. */
+ MODE_COPY_EXISTING
+ };
+
+/* Description of a mode change. */
+struct mode_change
+{
+ char op; /* One of "=+-". */
+ char flag; /* Special operations flag. */
+ mode_t affected; /* Set for u, g, o, or a. */
+ mode_t value; /* Bits to add/remove. */
+ mode_t mentioned; /* Bits explicitly mentioned. */
+};
+
+/* Return a mode_change array with the specified `=ddd'-style
+ mode change operation, where NEW_MODE is `ddd' and MENTIONED
+ contains the bits explicitly mentioned in the mode are MENTIONED. */
+
+static struct mode_change *
+make_node_op_equals (mode_t new_mode, mode_t mentioned)
+{
+ struct mode_change *p = xmalloc (2 * sizeof *p);
+ p->op = '=';
+ p->flag = MODE_ORDINARY_CHANGE;
+ p->affected = CHMOD_MODE_BITS;
+ p->value = new_mode;
+ p->mentioned = mentioned;
+ p[1].flag = MODE_DONE;
+ return p;
+}
+
+/* Return a pointer to an array of file mode change operations created from
+ MODE_STRING, an ASCII string that contains either an octal number
+ specifying an absolute mode, or symbolic mode change operations with
+ the form:
+ [ugoa...][[+-=][rwxXstugo...]...][,...]
+
+ Return NULL if `mode_string' does not contain a valid
+ representation of file mode change operations. */
+
+struct mode_change *
+mode_compile (char const *mode_string)
+{
+ /* The array of mode-change directives to be returned. */
+ struct mode_change *mc;
+ size_t used = 0;
+
+ if ('0' <= *mode_string && *mode_string < '8')
+ {
+ unsigned int octal_mode = 0;
+ mode_t mode;
+ mode_t mentioned;
+
+ do
+ {
+ octal_mode = 8 * octal_mode + *mode_string++ - '0';
+ if (ALLM < octal_mode)
+ return NULL;
+ }
+ while ('0' <= *mode_string && *mode_string < '8');
+
+ if (*mode_string)
+ return NULL;
+
+ mode = octal_to_mode (octal_mode);
+ mentioned = (mode & (S_ISUID | S_ISGID)) | S_ISVTX | S_IRWXUGO;
+ return make_node_op_equals (mode, mentioned);
+ }
+
+ /* Allocate enough space to hold the result. */
+ {
+ size_t needed = 1;
+ char const *p;
+ for (p = mode_string; *p; p++)
+ needed += (*p == '=' || *p == '+' || *p == '-');
+ mc = xnmalloc (needed, sizeof *mc);
+ }
+
+ /* One loop iteration for each `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'. */
+ for (;; mode_string++)
+ {
+ /* Which bits in the mode are operated on. */
+ mode_t affected = 0;
+
+ /* Turn on all the bits in `affected' for each group given. */
+ for (;; mode_string++)
+ switch (*mode_string)
+ {
+ default:
+ goto invalid;
+ case 'u':
+ affected |= S_ISUID | S_IRWXU;
+ break;
+ case 'g':
+ affected |= S_ISGID | S_IRWXG;
+ break;
+ case 'o':
+ affected |= S_ISVTX | S_IRWXO;
+ break;
+ case 'a':
+ affected |= CHMOD_MODE_BITS;
+ break;
+ case '=': case '+': case '-':
+ goto no_more_affected;
+ }
+ no_more_affected:;
+
+ do
+ {
+ char op = *mode_string++;
+ mode_t value;
+ char flag = MODE_COPY_EXISTING;
+ struct mode_change *change;
+
+ switch (*mode_string++)
+ {
+ case 'u':
+ /* Set the affected bits to the value of the `u' bits
+ on the same file. */
+ value = S_IRWXU;
+ break;
+ case 'g':
+ /* Set the affected bits to the value of the `g' bits
+ on the same file. */
+ value = S_IRWXG;
+ break;
+ case 'o':
+ /* Set the affected bits to the value of the `o' bits
+ on the same file. */
+ value = S_IRWXO;
+ break;
+
+ default:
+ value = 0;
+ flag = MODE_ORDINARY_CHANGE;
+
+ for (mode_string--;; mode_string++)
+ switch (*mode_string)
+ {
+ case 'r':
+ value |= S_IRUSR | S_IRGRP | S_IROTH;
+ break;
+ case 'w':
+ value |= S_IWUSR | S_IWGRP | S_IWOTH;
+ break;
+ case 'x':
+ value |= S_IXUSR | S_IXGRP | S_IXOTH;
+ break;
+ case 'X':
+ flag = MODE_X_IF_ANY_X;
+ break;
+ case 's':
+ /* Set the setuid/gid bits if `u' or `g' is selected. */
+ value |= S_ISUID | S_ISGID;
+ break;
+ case 't':
+ /* Set the "save text image" bit if `o' is selected. */
+ value |= S_ISVTX;
+ break;
+ default:
+ goto no_more_values;
+ }
+ no_more_values:;
+ }
+
+ change = &mc[used++];
+ change->op = op;
+ change->flag = flag;
+ change->affected = affected;
+ change->value = value;
+ change->mentioned = (affected ? affected & value : value);
+ }
+ while (*mode_string == '=' || *mode_string == '+'
+ || *mode_string == '-');
+
+ if (*mode_string != ',')
+ break;
+ }
+
+ if (*mode_string == 0)
+ {
+ mc[used].flag = MODE_DONE;
+ return mc;
+ }
+
+invalid:
+ free (mc);
+ return NULL;
+}
+
+/* Return a file mode change operation that sets permissions to match those
+ of REF_FILE. Return NULL (setting errno) if REF_FILE can't be accessed. */
+
+struct mode_change *
+mode_create_from_ref (const char *ref_file)
+{
+ struct stat ref_stats;
+
+ if (stat (ref_file, &ref_stats) != 0)
+ return NULL;
+ return make_node_op_equals (ref_stats.st_mode, CHMOD_MODE_BITS);
+}
+
+/* Return the file mode bits of OLDMODE (which is the mode of a
+ directory if DIR), assuming the umask is UMASK_VALUE, adjusted as
+ indicated by the list of change operations CHANGES. If DIR, the
+ type 'X' change affects the returned value even if no execute bits
+ were set in OLDMODE, and set user and group ID bits are preserved
+ unless CHANGES mentioned them. If PMODE_BITS is not null, store into
+ *PMODE_BITS a mask denoting file mode bits that are affected by
+ CHANGES.
+
+ The returned value and *PMODE_BITS contain only file mode bits.
+ For example, they have the S_IFMT bits cleared on a standard
+ Unix-like host. */
+
+mode_t
+mode_adjust (mode_t oldmode, bool dir, mode_t umask_value,
+ struct mode_change const *changes, mode_t *pmode_bits)
+{
+ /* The adjusted mode. */
+ mode_t newmode = oldmode & CHMOD_MODE_BITS;
+
+ /* File mode bits that CHANGES cares about. */
+ mode_t mode_bits = 0;
+
+ for (; changes->flag != MODE_DONE; changes++)
+ {
+ mode_t affected = changes->affected;
+ mode_t omit_change =
+ (dir ? S_ISUID | S_ISGID : 0) & ~ changes->mentioned;
+ mode_t value = changes->value;
+
+ switch (changes->flag)
+ {
+ case MODE_ORDINARY_CHANGE:
+ break;
+
+ case MODE_COPY_EXISTING:
+ /* Isolate in `value' the bits in `newmode' to copy. */
+ value &= newmode;
+
+ /* Copy the isolated bits to the other two parts. */
+ value |= ((value & (S_IRUSR | S_IRGRP | S_IROTH)
+ ? S_IRUSR | S_IRGRP | S_IROTH : 0)
+ | (value & (S_IWUSR | S_IWGRP | S_IWOTH)
+ ? S_IWUSR | S_IWGRP | S_IWOTH : 0)
+ | (value & (S_IXUSR | S_IXGRP | S_IXOTH)
+ ? S_IXUSR | S_IXGRP | S_IXOTH : 0));
+ break;
+
+ case MODE_X_IF_ANY_X:
+ /* Affect the execute bits if execute bits are already set
+ or if the file is a directory. */
+ if ((newmode & (S_IXUSR | S_IXGRP | S_IXOTH)) | dir)
+ value |= S_IXUSR | S_IXGRP | S_IXOTH;
+ break;
+ }
+
+ /* If WHO was specified, limit the change to the affected bits.
+ Otherwise, apply the umask. Either way, omit changes as
+ requested. */
+ value &= (affected ? affected : ~umask_value) & ~ omit_change;
+
+ switch (changes->op)
+ {
+ case '=':
+ /* If WHO was specified, preserve the previous values of
+ bits that are not affected by this change operation.
+ Otherwise, clear all the bits. */
+ {
+ mode_t preserved = (affected ? ~affected : 0) | omit_change;
+ mode_bits |= CHMOD_MODE_BITS & ~preserved;
+ newmode = (newmode & preserved) | value;
+ break;
+ }
+
+ case '+':
+ mode_bits |= value;
+ newmode |= value;
+ break;
+
+ case '-':
+ mode_bits |= value;
+ newmode &= ~value;
+ break;
+ }
+ }
+
+ if (pmode_bits)
+ *pmode_bits = mode_bits;
+ return newmode;
+}
diff --git a/lib/modechange.h b/lib/modechange.h
new file mode 100644
index 0000000..76e0178
--- /dev/null
+++ b/lib/modechange.h
@@ -0,0 +1,31 @@
+/* modechange.h -- definitions for file mode manipulation
+
+ Copyright (C) 1989, 1990, 1997, 2003, 2004, 2005, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#if ! defined MODECHANGE_H_
+# define MODECHANGE_H_
+
+# include <stdbool.h>
+# include <sys/types.h>
+
+struct mode_change *mode_compile (const char *);
+struct mode_change *mode_create_from_ref (const char *);
+mode_t mode_adjust (mode_t, bool, mode_t, struct mode_change const *,
+ mode_t *);
+
+#endif
diff --git a/lib/mountlist.c b/lib/mountlist.c
new file mode 100644
index 0000000..a50828e
--- /dev/null
+++ b/lib/mountlist.c
@@ -0,0 +1,885 @@
+/* mountlist.c -- return a list of mounted file systems
+
+ Copyright (C) 1991, 1992, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+ 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "mountlist.h"
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "xalloc.h"
+
+#include <errno.h>
+
+#include <fcntl.h>
+
+#include <unistd.h>
+
+#if HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+
+#if defined MOUNTED_GETFSSTAT /* OSF_1 and Darwin1.3.x */
+# if HAVE_SYS_UCRED_H
+# include <grp.h> /* needed on OSF V4.0 for definition of NGROUPS,
+ NGROUPS is used as an array dimension in ucred.h */
+# include <sys/ucred.h> /* needed by powerpc-apple-darwin1.3.7 */
+# endif
+# if HAVE_SYS_MOUNT_H
+# include <sys/mount.h>
+# endif
+# if HAVE_SYS_FS_TYPES_H
+# include <sys/fs_types.h> /* needed by powerpc-apple-darwin1.3.7 */
+# endif
+# if HAVE_STRUCT_FSSTAT_F_FSTYPENAME
+# define FS_TYPE(Ent) ((Ent).f_fstypename)
+# else
+# define FS_TYPE(Ent) mnt_names[(Ent).f_type]
+# endif
+#endif /* MOUNTED_GETFSSTAT */
+
+#ifdef MOUNTED_GETMNTENT1 /* 4.3BSD, SunOS, HP-UX, Dynix, Irix. */
+# include <mntent.h>
+# if !defined MOUNTED
+# if defined _PATH_MOUNTED /* GNU libc */
+# define MOUNTED _PATH_MOUNTED
+# endif
+# if defined MNT_MNTTAB /* HP-UX. */
+# define MOUNTED MNT_MNTTAB
+# endif
+# if defined MNTTABNAME /* Dynix. */
+# define MOUNTED MNTTABNAME
+# endif
+# endif
+#endif
+
+#ifdef MOUNTED_GETMNTINFO /* 4.4BSD. */
+# include <sys/mount.h>
+#endif
+
+#ifdef MOUNTED_GETMNTINFO2 /* NetBSD 3.0. */
+# include <sys/statvfs.h>
+#endif
+
+#ifdef MOUNTED_GETMNT /* Ultrix. */
+# include <sys/mount.h>
+# include <sys/fs_types.h>
+#endif
+
+#ifdef MOUNTED_FS_STAT_DEV /* BeOS. */
+# include <fs_info.h>
+# include <dirent.h>
+#endif
+
+#ifdef MOUNTED_FREAD /* SVR2. */
+# include <mnttab.h>
+#endif
+
+#ifdef MOUNTED_FREAD_FSTYP /* SVR3. */
+# include <mnttab.h>
+# include <sys/fstyp.h>
+# include <sys/statfs.h>
+#endif
+
+#ifdef MOUNTED_LISTMNTENT
+# include <mntent.h>
+#endif
+
+#ifdef MOUNTED_GETMNTENT2 /* SVR4. */
+# include <sys/mnttab.h>
+#endif
+
+#ifdef MOUNTED_VMOUNT /* AIX. */
+# include <fshelp.h>
+# include <sys/vfs.h>
+#endif
+
+#ifdef DOLPHIN
+/* So special that it's not worth putting this in autoconf. */
+# undef MOUNTED_FREAD_FSTYP
+# define MOUNTED_GETMNTTBL
+#endif
+
+#if HAVE_SYS_MNTENT_H
+/* This is to get MNTOPT_IGNORE on e.g. SVR4. */
+# include <sys/mntent.h>
+#endif
+
+#undef MNT_IGNORE
+#if defined MNTOPT_IGNORE && defined HAVE_HASMNTOPT
+# define MNT_IGNORE(M) hasmntopt ((M), MNTOPT_IGNORE)
+#else
+# define MNT_IGNORE(M) 0
+#endif
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+
+/* The results of open() in this file are not used with fchdir,
+ therefore save some unnecessary work in fchdir.c. */
+#undef open
+#undef close
+
+/* The results of opendir() in this file are not used with dirfd and fchdir,
+ therefore save some unnecessary work in fchdir.c. */
+#undef opendir
+#undef closedir
+
+#ifndef ME_DUMMY
+# define ME_DUMMY(Fs_name, Fs_type) \
+ (strcmp (Fs_type, "autofs") == 0 \
+ || strcmp (Fs_type, "none") == 0 \
+ || strcmp (Fs_type, "proc") == 0 \
+ || strcmp (Fs_type, "subfs") == 0 \
+ /* for NetBSD 3.0 */ \
+ || strcmp (Fs_type, "kernfs") == 0 \
+ /* for Irix 6.5 */ \
+ || strcmp (Fs_type, "ignore") == 0)
+#endif
+
+#ifndef ME_REMOTE
+/* A file system is `remote' if its Fs_name contains a `:'
+ or if (it is of type (smbfs or cifs) and its Fs_name starts with `//'). */
+# define ME_REMOTE(Fs_name, Fs_type) \
+ (strchr (Fs_name, ':') != NULL \
+ || ((Fs_name)[0] == '/' \
+ && (Fs_name)[1] == '/' \
+ && (strcmp (Fs_type, "smbfs") == 0 \
+ || strcmp (Fs_type, "cifs") == 0)))
+#endif
+
+#if MOUNTED_GETMNTINFO
+
+# if ! HAVE_STRUCT_STATFS_F_FSTYPENAME
+static char *
+fstype_to_string (short int t)
+{
+ switch (t)
+ {
+# ifdef MOUNT_PC
+ case MOUNT_PC:
+ return "pc";
+# endif
+# ifdef MOUNT_MFS
+ case MOUNT_MFS:
+ return "mfs";
+# endif
+# ifdef MOUNT_LO
+ case MOUNT_LO:
+ return "lo";
+# endif
+# ifdef MOUNT_TFS
+ case MOUNT_TFS:
+ return "tfs";
+# endif
+# ifdef MOUNT_TMP
+ case MOUNT_TMP:
+ return "tmp";
+# endif
+# ifdef MOUNT_UFS
+ case MOUNT_UFS:
+ return "ufs" ;
+# endif
+# ifdef MOUNT_NFS
+ case MOUNT_NFS:
+ return "nfs" ;
+# endif
+# ifdef MOUNT_MSDOS
+ case MOUNT_MSDOS:
+ return "msdos" ;
+# endif
+# ifdef MOUNT_LFS
+ case MOUNT_LFS:
+ return "lfs" ;
+# endif
+# ifdef MOUNT_LOFS
+ case MOUNT_LOFS:
+ return "lofs" ;
+# endif
+# ifdef MOUNT_FDESC
+ case MOUNT_FDESC:
+ return "fdesc" ;
+# endif
+# ifdef MOUNT_PORTAL
+ case MOUNT_PORTAL:
+ return "portal" ;
+# endif
+# ifdef MOUNT_NULL
+ case MOUNT_NULL:
+ return "null" ;
+# endif
+# ifdef MOUNT_UMAP
+ case MOUNT_UMAP:
+ return "umap" ;
+# endif
+# ifdef MOUNT_KERNFS
+ case MOUNT_KERNFS:
+ return "kernfs" ;
+# endif
+# ifdef MOUNT_PROCFS
+ case MOUNT_PROCFS:
+ return "procfs" ;
+# endif
+# ifdef MOUNT_AFS
+ case MOUNT_AFS:
+ return "afs" ;
+# endif
+# ifdef MOUNT_CD9660
+ case MOUNT_CD9660:
+ return "cd9660" ;
+# endif
+# ifdef MOUNT_UNION
+ case MOUNT_UNION:
+ return "union" ;
+# endif
+# ifdef MOUNT_DEVFS
+ case MOUNT_DEVFS:
+ return "devfs" ;
+# endif
+# ifdef MOUNT_EXT2FS
+ case MOUNT_EXT2FS:
+ return "ext2fs" ;
+# endif
+ default:
+ return "?";
+ }
+}
+# endif
+
+static char *
+fsp_to_string (const struct statfs *fsp)
+{
+# if HAVE_STRUCT_STATFS_F_FSTYPENAME
+ return (char *) (fsp->f_fstypename);
+# else
+ return fstype_to_string (fsp->f_type);
+# endif
+}
+
+#endif /* MOUNTED_GETMNTINFO */
+
+#ifdef MOUNTED_VMOUNT /* AIX. */
+static char *
+fstype_to_string (int t)
+{
+ struct vfs_ent *e;
+
+ e = getvfsbytype (t);
+ if (!e || !e->vfsent_name)
+ return "none";
+ else
+ return e->vfsent_name;
+}
+#endif /* MOUNTED_VMOUNT */
+
+
+#if defined MOUNTED_GETMNTENT1 || defined MOUNTED_GETMNTENT2
+
+/* Return the device number from MOUNT_OPTIONS, if possible.
+ Otherwise return (dev_t) -1. */
+
+static dev_t
+dev_from_mount_options (char const *mount_options)
+{
+ /* GNU/Linux allows file system implementations to define their own
+ meaning for "dev=" mount options, so don't trust the meaning
+ here. */
+# ifndef __linux__
+
+ static char const dev_pattern[] = ",dev=";
+ char const *devopt = strstr (mount_options, dev_pattern);
+
+ if (devopt)
+ {
+ char const *optval = devopt + sizeof dev_pattern - 1;
+ char *optvalend;
+ unsigned long int dev;
+ errno = 0;
+ dev = strtoul (optval, &optvalend, 16);
+ if (optval != optvalend
+ && (*optvalend == '\0' || *optvalend == ',')
+ && ! (dev == ULONG_MAX && errno == ERANGE)
+ && dev == (dev_t) dev)
+ return dev;
+ }
+
+# endif
+
+ return -1;
+}
+
+#endif
+
+/* Return a list of the currently mounted file systems, or NULL on error.
+ Add each entry to the tail of the list so that they stay in order.
+ If NEED_FS_TYPE is true, ensure that the file system type fields in
+ the returned list are valid. Otherwise, they might not be. */
+
+struct mount_entry *
+read_file_system_list (bool need_fs_type)
+{
+ struct mount_entry *mount_list;
+ struct mount_entry *me;
+ struct mount_entry **mtail = &mount_list;
+
+#ifdef MOUNTED_LISTMNTENT
+ {
+ struct tabmntent *mntlist, *p;
+ struct mntent *mnt;
+ struct mount_entry *me;
+
+ /* the third and fourth arguments could be used to filter mounts,
+ but Crays doesn't seem to have any mounts that we want to
+ remove. Specifically, automount create normal NFS mounts.
+ */
+
+ if (listmntent (&mntlist, KMTAB, NULL, NULL) < 0)
+ return NULL;
+ for (p = mntlist; p; p = p->next) {
+ mnt = p->ment;
+ me = xmalloc (sizeof *me);
+ me->me_devname = xstrdup (mnt->mnt_fsname);
+ me->me_mountdir = xstrdup (mnt->mnt_dir);
+ me->me_type = xstrdup (mnt->mnt_type);
+ me->me_type_malloced = 1;
+ me->me_dummy = ME_DUMMY (me->me_devname, me->me_type);
+ me->me_remote = ME_REMOTE (me->me_devname, me->me_type);
+ me->me_dev = -1;
+ *mtail = me;
+ mtail = &me->me_next;
+ }
+ freemntlist (mntlist);
+ }
+#endif
+
+#ifdef MOUNTED_GETMNTENT1 /* GNU/Linux, 4.3BSD, SunOS, HP-UX, Dynix, Irix. */
+ {
+ struct mntent *mnt;
+ char *table = MOUNTED;
+ FILE *fp;
+
+ fp = setmntent (table, "r");
+ if (fp == NULL)
+ return NULL;
+
+ while ((mnt = getmntent (fp)))
+ {
+ me = xmalloc (sizeof *me);
+ me->me_devname = xstrdup (mnt->mnt_fsname);
+ me->me_mountdir = xstrdup (mnt->mnt_dir);
+ me->me_type = xstrdup (mnt->mnt_type);
+ me->me_type_malloced = 1;
+ me->me_dummy = ME_DUMMY (me->me_devname, me->me_type);
+ me->me_remote = ME_REMOTE (me->me_devname, me->me_type);
+ me->me_dev = dev_from_mount_options (mnt->mnt_opts);
+
+ /* Add to the linked list. */
+ *mtail = me;
+ mtail = &me->me_next;
+ }
+
+ if (endmntent (fp) == 0)
+ goto free_then_fail;
+ }
+#endif /* MOUNTED_GETMNTENT1. */
+
+#ifdef MOUNTED_GETMNTINFO /* 4.4BSD. */
+ {
+ struct statfs *fsp;
+ int entries;
+
+ entries = getmntinfo (&fsp, MNT_NOWAIT);
+ if (entries < 0)
+ return NULL;
+ for (; entries-- > 0; fsp++)
+ {
+ char *fs_type = fsp_to_string (fsp);
+
+ me = xmalloc (sizeof *me);
+ me->me_devname = xstrdup (fsp->f_mntfromname);
+ me->me_mountdir = xstrdup (fsp->f_mntonname);
+ me->me_type = fs_type;
+ me->me_type_malloced = 0;
+ me->me_dummy = ME_DUMMY (me->me_devname, me->me_type);
+ me->me_remote = ME_REMOTE (me->me_devname, me->me_type);
+ me->me_dev = (dev_t) -1; /* Magic; means not known yet. */
+
+ /* Add to the linked list. */
+ *mtail = me;
+ mtail = &me->me_next;
+ }
+ }
+#endif /* MOUNTED_GETMNTINFO */
+
+#ifdef MOUNTED_GETMNTINFO2 /* NetBSD 3.0. */
+ {
+ struct statvfs *fsp;
+ int entries;
+
+ entries = getmntinfo (&fsp, MNT_NOWAIT);
+ if (entries < 0)
+ return NULL;
+ for (; entries-- > 0; fsp++)
+ {
+ me = xmalloc (sizeof *me);
+ me->me_devname = xstrdup (fsp->f_mntfromname);
+ me->me_mountdir = xstrdup (fsp->f_mntonname);
+ me->me_type = xstrdup (fsp->f_fstypename);
+ me->me_type_malloced = 1;
+ me->me_dummy = ME_DUMMY (me->me_devname, me->me_type);
+ me->me_remote = ME_REMOTE (me->me_devname, me->me_type);
+ me->me_dev = (dev_t) -1; /* Magic; means not known yet. */
+
+ /* Add to the linked list. */
+ *mtail = me;
+ mtail = &me->me_next;
+ }
+ }
+#endif /* MOUNTED_GETMNTINFO2 */
+
+#ifdef MOUNTED_GETMNT /* Ultrix. */
+ {
+ int offset = 0;
+ int val;
+ struct fs_data fsd;
+
+ while (errno = 0,
+ 0 < (val = getmnt (&offset, &fsd, sizeof (fsd), NOSTAT_MANY,
+ (char *) 0)))
+ {
+ me = xmalloc (sizeof *me);
+ me->me_devname = xstrdup (fsd.fd_req.devname);
+ me->me_mountdir = xstrdup (fsd.fd_req.path);
+ me->me_type = gt_names[fsd.fd_req.fstype];
+ me->me_type_malloced = 0;
+ me->me_dummy = ME_DUMMY (me->me_devname, me->me_type);
+ me->me_remote = ME_REMOTE (me->me_devname, me->me_type);
+ me->me_dev = fsd.fd_req.dev;
+
+ /* Add to the linked list. */
+ *mtail = me;
+ mtail = &me->me_next;
+ }
+ if (val < 0)
+ goto free_then_fail;
+ }
+#endif /* MOUNTED_GETMNT. */
+
+#if defined MOUNTED_FS_STAT_DEV /* BeOS */
+ {
+ /* The next_dev() and fs_stat_dev() system calls give the list of
+ all file systems, including the information returned by statvfs()
+ (fs type, total blocks, free blocks etc.), but without the mount
+ point. But on BeOS all file systems except / are mounted in the
+ rootfs, directly under /.
+ The directory name of the mount point is often, but not always,
+ identical to the volume name of the device.
+ We therefore get the list of subdirectories of /, and the list
+ of all file systems, and match the two lists. */
+
+ DIR *dirp;
+ struct rootdir_entry
+ {
+ char *name;
+ dev_t dev;
+ ino_t ino;
+ struct rootdir_entry *next;
+ };
+ struct rootdir_entry *rootdir_list;
+ struct rootdir_entry **rootdir_tail;
+ int32 pos;
+ dev_t dev;
+ fs_info fi;
+
+ /* All volumes are mounted in the rootfs, directly under /. */
+ rootdir_list = NULL;
+ rootdir_tail = &rootdir_list;
+ dirp = opendir ("/");
+ if (dirp)
+ {
+ struct dirent *d;
+
+ while ((d = readdir (dirp)) != NULL)
+ {
+ char *name;
+ struct stat statbuf;
+
+ if (strcmp (d->d_name, "..") == 0)
+ continue;
+
+ if (strcmp (d->d_name, ".") == 0)
+ name = xstrdup ("/");
+ else
+ {
+ name = xmalloc (1 + strlen (d->d_name) + 1);
+ name[0] = '/';
+ strcpy (name + 1, d->d_name);
+ }
+
+ if (lstat (name, &statbuf) >= 0 && S_ISDIR (statbuf.st_mode))
+ {
+ struct rootdir_entry *re = xmalloc (sizeof *re);
+ re->name = name;
+ re->dev = statbuf.st_dev;
+ re->ino = statbuf.st_ino;
+
+ /* Add to the linked list. */
+ *rootdir_tail = re;
+ rootdir_tail = &re->next;
+ }
+ else
+ free (name);
+ }
+ closedir (dirp);
+ }
+ *rootdir_tail = NULL;
+
+ for (pos = 0; (dev = next_dev (&pos)) >= 0; )
+ if (fs_stat_dev (dev, &fi) >= 0)
+ {
+ /* Note: fi.dev == dev. */
+ struct rootdir_entry *re;
+
+ for (re = rootdir_list; re; re = re->next)
+ if (re->dev == fi.dev && re->ino == fi.root)
+ break;
+
+ me = xmalloc (sizeof *me);
+ me->me_devname = xstrdup (fi.device_name[0] != '\0' ? fi.device_name : fi.fsh_name);
+ me->me_mountdir = xstrdup (re != NULL ? re->name : fi.fsh_name);
+ me->me_type = xstrdup (fi.fsh_name);
+ me->me_type_malloced = 1;
+ me->me_dev = fi.dev;
+ me->me_dummy = 0;
+ me->me_remote = (fi.flags & B_FS_IS_SHARED) != 0;
+
+ /* Add to the linked list. */
+ *mtail = me;
+ mtail = &me->me_next;
+ }
+ *mtail = NULL;
+
+ while (rootdir_list != NULL)
+ {
+ struct rootdir_entry *re = rootdir_list;
+ rootdir_list = re->next;
+ free (re->name);
+ free (re);
+ }
+ }
+#endif /* MOUNTED_FS_STAT_DEV */
+
+#if defined MOUNTED_GETFSSTAT /* __alpha running OSF_1 */
+ {
+ int numsys, counter;
+ size_t bufsize;
+ struct statfs *stats;
+
+ numsys = getfsstat ((struct statfs *)0, 0L, MNT_NOWAIT);
+ if (numsys < 0)
+ return (NULL);
+ if (SIZE_MAX / sizeof *stats <= numsys)
+ xalloc_die ();
+
+ bufsize = (1 + numsys) * sizeof *stats;
+ stats = xmalloc (bufsize);
+ numsys = getfsstat (stats, bufsize, MNT_NOWAIT);
+
+ if (numsys < 0)
+ {
+ free (stats);
+ return (NULL);
+ }
+
+ for (counter = 0; counter < numsys; counter++)
+ {
+ me = xmalloc (sizeof *me);
+ me->me_devname = xstrdup (stats[counter].f_mntfromname);
+ me->me_mountdir = xstrdup (stats[counter].f_mntonname);
+ me->me_type = xstrdup (FS_TYPE (stats[counter]));
+ me->me_type_malloced = 1;
+ me->me_dummy = ME_DUMMY (me->me_devname, me->me_type);
+ me->me_remote = ME_REMOTE (me->me_devname, me->me_type);
+ me->me_dev = (dev_t) -1; /* Magic; means not known yet. */
+
+ /* Add to the linked list. */
+ *mtail = me;
+ mtail = &me->me_next;
+ }
+
+ free (stats);
+ }
+#endif /* MOUNTED_GETFSSTAT */
+
+#if defined MOUNTED_FREAD || defined MOUNTED_FREAD_FSTYP /* SVR[23]. */
+ {
+ struct mnttab mnt;
+ char *table = "/etc/mnttab";
+ FILE *fp;
+
+ fp = fopen (table, "r");
+ if (fp == NULL)
+ return NULL;
+
+ while (fread (&mnt, sizeof mnt, 1, fp) > 0)
+ {
+ me = xmalloc (sizeof *me);
+# ifdef GETFSTYP /* SVR3. */
+ me->me_devname = xstrdup (mnt.mt_dev);
+# else
+ me->me_devname = xmalloc (strlen (mnt.mt_dev) + 6);
+ strcpy (me->me_devname, "/dev/");
+ strcpy (me->me_devname + 5, mnt.mt_dev);
+# endif
+ me->me_mountdir = xstrdup (mnt.mt_filsys);
+ me->me_dev = (dev_t) -1; /* Magic; means not known yet. */
+ me->me_type = "";
+ me->me_type_malloced = 0;
+# ifdef GETFSTYP /* SVR3. */
+ if (need_fs_type)
+ {
+ struct statfs fsd;
+ char typebuf[FSTYPSZ];
+
+ if (statfs (me->me_mountdir, &fsd, sizeof fsd, 0) != -1
+ && sysfs (GETFSTYP, fsd.f_fstyp, typebuf) != -1)
+ {
+ me->me_type = xstrdup (typebuf);
+ me->me_type_malloced = 1;
+ }
+ }
+# endif
+ me->me_dummy = ME_DUMMY (me->me_devname, me->me_type);
+ me->me_remote = ME_REMOTE (me->me_devname, me->me_type);
+
+ /* Add to the linked list. */
+ *mtail = me;
+ mtail = &me->me_next;
+ }
+
+ if (ferror (fp))
+ {
+ /* The last fread() call must have failed. */
+ int saved_errno = errno;
+ fclose (fp);
+ errno = saved_errno;
+ goto free_then_fail;
+ }
+
+ if (fclose (fp) == EOF)
+ goto free_then_fail;
+ }
+#endif /* MOUNTED_FREAD || MOUNTED_FREAD_FSTYP. */
+
+#ifdef MOUNTED_GETMNTTBL /* DolphinOS goes its own way. */
+ {
+ struct mntent **mnttbl = getmnttbl (), **ent;
+ for (ent=mnttbl;*ent;ent++)
+ {
+ me = xmalloc (sizeof *me);
+ me->me_devname = xstrdup ( (*ent)->mt_resource);
+ me->me_mountdir = xstrdup ( (*ent)->mt_directory);
+ me->me_type = xstrdup ((*ent)->mt_fstype);
+ me->me_type_malloced = 1;
+ me->me_dummy = ME_DUMMY (me->me_devname, me->me_type);
+ me->me_remote = ME_REMOTE (me->me_devname, me->me_type);
+ me->me_dev = (dev_t) -1; /* Magic; means not known yet. */
+
+ /* Add to the linked list. */
+ *mtail = me;
+ mtail = &me->me_next;
+ }
+ endmnttbl ();
+ }
+#endif
+
+#ifdef MOUNTED_GETMNTENT2 /* SVR4. */
+ {
+ struct mnttab mnt;
+ char *table = MNTTAB;
+ FILE *fp;
+ int ret;
+ int lockfd = -1;
+
+# if defined F_RDLCK && defined F_SETLKW
+ /* MNTTAB_LOCK is a macro name of our own invention; it's not present in
+ e.g. Solaris 2.6. If the SVR4 folks ever define a macro
+ for this file name, we should use their macro name instead.
+ (Why not just lock MNTTAB directly? We don't know.) */
+# ifndef MNTTAB_LOCK
+# define MNTTAB_LOCK "/etc/.mnttab.lock"
+# endif
+ lockfd = open (MNTTAB_LOCK, O_RDONLY);
+ if (0 <= lockfd)
+ {
+ struct flock flock;
+ flock.l_type = F_RDLCK;
+ flock.l_whence = SEEK_SET;
+ flock.l_start = 0;
+ flock.l_len = 0;
+ while (fcntl (lockfd, F_SETLKW, &flock) == -1)
+ if (errno != EINTR)
+ {
+ int saved_errno = errno;
+ close (lockfd);
+ errno = saved_errno;
+ return NULL;
+ }
+ }
+ else if (errno != ENOENT)
+ return NULL;
+# endif
+
+ errno = 0;
+ fp = fopen (table, "r");
+ if (fp == NULL)
+ ret = errno;
+ else
+ {
+ while ((ret = getmntent (fp, &mnt)) == 0)
+ {
+ me = xmalloc (sizeof *me);
+ me->me_devname = xstrdup (mnt.mnt_special);
+ me->me_mountdir = xstrdup (mnt.mnt_mountp);
+ me->me_type = xstrdup (mnt.mnt_fstype);
+ me->me_type_malloced = 1;
+ me->me_dummy = MNT_IGNORE (&mnt) != 0;
+ me->me_remote = ME_REMOTE (me->me_devname, me->me_type);
+ me->me_dev = dev_from_mount_options (mnt.mnt_mntopts);
+
+ /* Add to the linked list. */
+ *mtail = me;
+ mtail = &me->me_next;
+ }
+
+ ret = fclose (fp) == EOF ? errno : 0 < ret ? 0 : -1;
+ }
+
+ if (0 <= lockfd && close (lockfd) != 0)
+ ret = errno;
+
+ if (0 <= ret)
+ {
+ errno = ret;
+ goto free_then_fail;
+ }
+ }
+#endif /* MOUNTED_GETMNTENT2. */
+
+#ifdef MOUNTED_VMOUNT /* AIX. */
+ {
+ int bufsize;
+ char *entries, *thisent;
+ struct vmount *vmp;
+ int n_entries;
+ int i;
+
+ /* Ask how many bytes to allocate for the mounted file system info. */
+ if (mntctl (MCTL_QUERY, sizeof bufsize, (struct vmount *) &bufsize) != 0)
+ return NULL;
+ entries = xmalloc (bufsize);
+
+ /* Get the list of mounted file systems. */
+ n_entries = mntctl (MCTL_QUERY, bufsize, (struct vmount *) entries);
+ if (n_entries < 0)
+ {
+ int saved_errno = errno;
+ free (entries);
+ errno = saved_errno;
+ return NULL;
+ }
+
+ for (i = 0, thisent = entries;
+ i < n_entries;
+ i++, thisent += vmp->vmt_length)
+ {
+ char *options, *ignore;
+
+ vmp = (struct vmount *) thisent;
+ me = xmalloc (sizeof *me);
+ if (vmp->vmt_flags & MNT_REMOTE)
+ {
+ char *host, *dir;
+
+ me->me_remote = 1;
+ /* Prepend the remote dirname. */
+ host = thisent + vmp->vmt_data[VMT_HOSTNAME].vmt_off;
+ dir = thisent + vmp->vmt_data[VMT_OBJECT].vmt_off;
+ me->me_devname = xmalloc (strlen (host) + strlen (dir) + 2);
+ strcpy (me->me_devname, host);
+ strcat (me->me_devname, ":");
+ strcat (me->me_devname, dir);
+ }
+ else
+ {
+ me->me_remote = 0;
+ me->me_devname = xstrdup (thisent +
+ vmp->vmt_data[VMT_OBJECT].vmt_off);
+ }
+ me->me_mountdir = xstrdup (thisent + vmp->vmt_data[VMT_STUB].vmt_off);
+ me->me_type = xstrdup (fstype_to_string (vmp->vmt_gfstype));
+ me->me_type_malloced = 1;
+ options = thisent + vmp->vmt_data[VMT_ARGS].vmt_off;
+ ignore = strstr (options, "ignore");
+ me->me_dummy = (ignore
+ && (ignore == options || ignore[-1] == ',')
+ && (ignore[sizeof "ignore" - 1] == ','
+ || ignore[sizeof "ignore" - 1] == '\0'));
+ me->me_dev = (dev_t) -1; /* vmt_fsid might be the info we want. */
+
+ /* Add to the linked list. */
+ *mtail = me;
+ mtail = &me->me_next;
+ }
+ free (entries);
+ }
+#endif /* MOUNTED_VMOUNT. */
+
+ *mtail = NULL;
+ return mount_list;
+
+
+ free_then_fail:
+ {
+ int saved_errno = errno;
+ *mtail = NULL;
+
+ while (mount_list)
+ {
+ me = mount_list->me_next;
+ free (mount_list->me_devname);
+ free (mount_list->me_mountdir);
+ if (mount_list->me_type_malloced)
+ free (mount_list->me_type);
+ free (mount_list);
+ mount_list = me;
+ }
+
+ errno = saved_errno;
+ return NULL;
+ }
+}
diff --git a/lib/mountlist.h b/lib/mountlist.h
new file mode 100644
index 0000000..7f5a6f7
--- /dev/null
+++ b/lib/mountlist.h
@@ -0,0 +1,41 @@
+/* mountlist.h -- declarations for list of mounted file systems
+
+ Copyright (C) 1991, 1992, 1998, 2000, 2001, 2002, 2003, 2004, 2005
+ Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef MOUNTLIST_H_
+# define MOUNTLIST_H_
+
+# include <stdbool.h>
+# include <sys/types.h>
+
+/* A mount table entry. */
+struct mount_entry
+{
+ char *me_devname; /* Device node name, including "/dev/". */
+ char *me_mountdir; /* Mount point directory name. */
+ char *me_type; /* "nfs", "4.2", etc. */
+ dev_t me_dev; /* Device number of me_mountdir. */
+ unsigned int me_dummy : 1; /* Nonzero for dummy file systems. */
+ unsigned int me_remote : 1; /* Nonzero for remote fileystems. */
+ unsigned int me_type_malloced : 1; /* Nonzero if me_type was malloced. */
+ struct mount_entry *me_next;
+};
+
+struct mount_entry *read_file_system_list (bool need_fs_type);
+
+#endif
diff --git a/lib/mpsort.c b/lib/mpsort.c
new file mode 100644
index 0000000..d6b1e0e
--- /dev/null
+++ b/lib/mpsort.c
@@ -0,0 +1,157 @@
+/* Sort a vector of pointers to data.
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "mpsort.h"
+
+#include <string.h>
+
+/* The type of qsort-style comparison functions. */
+
+typedef int (*comparison_function) (void const *, void const *);
+
+static void mpsort_with_tmp (void const **restrict, size_t,
+ void const **restrict, comparison_function);
+
+/* Sort a vector BASE containing N pointers, placing the sorted array
+ into TMP. Compare pointers with CMP. N must be at least 2. */
+
+static void
+mpsort_into_tmp (void const **restrict base, size_t n,
+ void const **restrict tmp,
+ comparison_function cmp)
+{
+ size_t n1 = n / 2;
+ size_t n2 = n - n1;
+ size_t a = 0;
+ size_t alim = n1;
+ size_t b = n1;
+ size_t blim = n;
+ void const *ba;
+ void const *bb;
+
+ mpsort_with_tmp (base + n1, n2, tmp, cmp);
+ mpsort_with_tmp (base, n1, tmp, cmp);
+
+ ba = base[a];
+ bb = base[b];
+
+ for (;;)
+ if (cmp (ba, bb) <= 0)
+ {
+ *tmp++ = ba;
+ a++;
+ if (a == alim)
+ {
+ a = b;
+ alim = blim;
+ break;
+ }
+ ba = base[a];
+ }
+ else
+ {
+ *tmp++ = bb;
+ b++;
+ if (b == blim)
+ break;
+ bb = base[b];
+ }
+
+ memcpy (tmp, base + a, (alim - a) * sizeof *base);
+}
+
+/* Sort a vector BASE containing N pointers, in place. Use TMP
+ (containing N / 2 pointers) for temporary storage. Compare
+ pointers with CMP. */
+
+static void
+mpsort_with_tmp (void const **restrict base, size_t n,
+ void const **restrict tmp,
+ comparison_function cmp)
+{
+ if (n <= 2)
+ {
+ if (n == 2)
+ {
+ void const *p0 = base[0];
+ void const *p1 = base[1];
+ if (! (cmp (p0, p1) <= 0))
+ {
+ base[0] = p1;
+ base[1] = p0;
+ }
+ }
+ }
+ else
+ {
+ size_t n1 = n / 2;
+ size_t n2 = n - n1;
+ size_t i;
+ size_t t = 0;
+ size_t tlim = n1;
+ size_t b = n1;
+ size_t blim = n;
+ void const *bb;
+ void const *tt;
+
+ mpsort_with_tmp (base + n1, n2, tmp, cmp);
+
+ if (n1 < 2)
+ tmp[0] = base[0];
+ else
+ mpsort_into_tmp (base, n1, tmp, cmp);
+
+ tt = tmp[t];
+ bb = base[b];
+
+ for (i = 0; ; )
+ if (cmp (tt, bb) <= 0)
+ {
+ base[i++] = tt;
+ t++;
+ if (t == tlim)
+ break;
+ tt = tmp[t];
+ }
+ else
+ {
+ base[i++] = bb;
+ b++;
+ if (b == blim)
+ {
+ memcpy (base + i, tmp + t, (tlim - t) * sizeof *base);
+ break;
+ }
+ bb = base[b];
+ }
+ }
+}
+
+/* Sort a vector BASE containing N pointers, in place. BASE must
+ contain enough storage to hold N + N / 2 vectors; the trailing
+ vectors are used for temporaries. Compare pointers with CMP. */
+
+void
+mpsort (void const **base, size_t n, comparison_function cmp)
+{
+ mpsort_with_tmp (base, n, base + n, cmp);
+}
diff --git a/lib/mpsort.h b/lib/mpsort.h
new file mode 100644
index 0000000..5e58811
--- /dev/null
+++ b/lib/mpsort.h
@@ -0,0 +1,2 @@
+#include <stddef.h>
+void mpsort (void const **, size_t, int (*) (void const *, void const *));
diff --git a/lib/nanosleep.c b/lib/nanosleep.c
new file mode 100644
index 0000000..89c5512
--- /dev/null
+++ b/lib/nanosleep.c
@@ -0,0 +1,192 @@
+/* Provide a replacement for the POSIX nanosleep function.
+
+ Copyright (C) 1999, 2000, 2002, 2004, 2005, 2006, 2007 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+
+#include <time.h>
+
+#include "timespec.h"
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <sys/types.h>
+#if HAVE_SYS_SELECT_H
+# include <sys/select.h>
+#endif
+#include <signal.h>
+
+#include <sys/time.h>
+#include <errno.h>
+
+#include <unistd.h>
+
+#undef nanosleep
+
+enum { BILLION = 1000 * 1000 * 1000 };
+
+#if HAVE_BUG_BIG_NANOSLEEP
+
+void
+getnow (struct timespec *t)
+{
+# if defined CLOCK_MONOTONIC && HAVE_CLOCK_GETTIME
+ if (clock_gettime (CLOCK_MONOTONIC, t) == 0)
+ return;
+# endif
+ gettime (t);
+}
+
+int
+rpl_nanosleep (const struct timespec *requested_delay,
+ struct timespec *remaining_delay)
+{
+ /* nanosleep mishandles large sleeps due to internal overflow
+ problems, so check that the proper amount of time has actually
+ elapsed. */
+
+ struct timespec delay = *requested_delay;
+ struct timespec t0;
+ getnow (&t0);
+
+ for (;;)
+ {
+ int r = nanosleep (&delay, remaining_delay);
+ if (r == 0)
+ {
+ time_t secs_sofar;
+ struct timespec now;
+ getnow (&now);
+
+ secs_sofar = now.tv_sec - t0.tv_sec;
+ if (requested_delay->tv_sec < secs_sofar)
+ return 0;
+ delay.tv_sec = requested_delay->tv_sec - secs_sofar;
+ delay.tv_nsec = requested_delay->tv_nsec - (now.tv_nsec - t0.tv_nsec);
+ if (delay.tv_nsec < 0)
+ {
+ if (delay.tv_sec == 0)
+ return 0;
+ delay.tv_nsec += BILLION;
+ delay.tv_sec--;
+ }
+ else if (BILLION <= delay.tv_nsec)
+ {
+ delay.tv_nsec -= BILLION;
+ delay.tv_sec++;
+ }
+ }
+ }
+}
+
+#else
+
+/* Some systems (MSDOS) don't have SIGCONT.
+ Using SIGTERM here turns the signal-handling code below
+ into a no-op on such systems. */
+# ifndef SIGCONT
+# define SIGCONT SIGTERM
+# endif
+
+# if ! HAVE_SIGINTERRUPT
+# define siginterrupt(sig, flag) /* empty */
+# endif
+
+static sig_atomic_t volatile suspended;
+
+/* Handle SIGCONT. */
+
+static void
+sighandler (int sig)
+{
+ suspended = 1;
+}
+
+/* Suspend execution for at least *TS_DELAY seconds. */
+
+static void
+my_usleep (const struct timespec *ts_delay)
+{
+ struct timeval tv_delay;
+ tv_delay.tv_sec = ts_delay->tv_sec;
+ tv_delay.tv_usec = (ts_delay->tv_nsec + 999) / 1000;
+ if (tv_delay.tv_usec == 1000000)
+ {
+ time_t t1 = tv_delay.tv_sec + 1;
+ if (t1 < tv_delay.tv_sec)
+ tv_delay.tv_usec = 1000000 - 1; /* close enough */
+ else
+ {
+ tv_delay.tv_sec = t1;
+ tv_delay.tv_usec = 0;
+ }
+ }
+ select (0, NULL, NULL, NULL, &tv_delay);
+}
+
+/* Suspend execution for at least *REQUESTED_DELAY seconds. The
+ *REMAINING_DELAY part isn't implemented yet. */
+
+int
+rpl_nanosleep (const struct timespec *requested_delay,
+ struct timespec *remaining_delay)
+{
+ static bool initialized;
+
+ /* set up sig handler */
+ if (! initialized)
+ {
+# ifdef SA_NOCLDSTOP
+ struct sigaction oldact, newact;
+ newact.sa_handler = sighandler;
+ sigemptyset (&newact.sa_mask);
+ newact.sa_flags = 0;
+
+ sigaction (SIGCONT, NULL, &oldact);
+ if (oldact.sa_handler != SIG_IGN)
+ sigaction (SIGCONT, &newact, NULL);
+# else
+ if (signal (SIGCONT, SIG_IGN) != SIG_IGN)
+ {
+ signal (SIGCONT, sighandler);
+ siginterrupt (SIGCONT, 1);
+ }
+# endif
+ initialized = true;
+ }
+
+ suspended = 0;
+
+ my_usleep (requested_delay);
+
+ if (suspended)
+ {
+ /* Calculate time remaining. */
+ /* FIXME: the code in sleep doesn't use this, so there's no
+ rush to implement it. */
+
+ errno = EINTR;
+ }
+
+ /* FIXME: Restore sig handler? */
+
+ return suspended;
+}
+#endif
diff --git a/lib/netinet_in_.h b/lib/netinet_in_.h
new file mode 100644
index 0000000..4a53605
--- /dev/null
+++ b/lib/netinet_in_.h
@@ -0,0 +1,37 @@
+/* Substitute for <netinet/in.h>.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _GL_NETINET_IN_H
+#define _GL_NETINET_IN_H
+
+#if @HAVE_NETINET_IN_H@
+
+/* On many platforms, <netinet/in.h> assumes prior inclusion of
+ <sys/types.h>. */
+
+# include <sys/types.h>
+# include @ABSOLUTE_NETINET_IN_H@
+
+#else
+
+/* A platform that lacks <netinet/in.h>. */
+
+# include <sys/socket.h>
+
+#endif
+
+#endif /* _GL_NETINET_IN_H */
diff --git a/lib/obstack.c b/lib/obstack.c
new file mode 100644
index 0000000..5cd0b7a
--- /dev/null
+++ b/lib/obstack.c
@@ -0,0 +1,431 @@
+/* obstack.c - subroutines used implicitly by object stack macros
+
+ Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997,
+ 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifdef _LIBC
+# include <obstack.h>
+# include <shlib-compat.h>
+#else
+# include <config.h>
+# include "obstack.h"
+#endif
+
+/* NOTE BEFORE MODIFYING THIS FILE: This version number must be
+ incremented whenever callers compiled using an old obstack.h can no
+ longer properly call the functions in this obstack.c. */
+#define OBSTACK_INTERFACE_VERSION 1
+
+/* Comment out all this code if we are using the GNU C Library, and are not
+ actually compiling the library itself, and the installed library
+ supports the same library interface we do. This code is part of the GNU
+ C Library, but also included in many other GNU distributions. Compiling
+ and linking in this code is a waste when using the GNU C library
+ (especially if it is a shared library). Rather than having every GNU
+ program understand `configure --with-gnu-libc' and omit the object
+ files, it is simpler to just do this in the source for each such file. */
+
+#include <stdio.h> /* Random thing to get __GNU_LIBRARY__. */
+#if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1
+# include <gnu-versions.h>
+# if _GNU_OBSTACK_INTERFACE_VERSION == OBSTACK_INTERFACE_VERSION
+# define ELIDE_CODE
+# endif
+#endif
+
+#include <stddef.h>
+
+#ifndef ELIDE_CODE
+
+# include <stdint.h>
+
+/* Determine default alignment. */
+union fooround
+{
+ uintmax_t i;
+ long double d;
+ void *p;
+};
+struct fooalign
+{
+ char c;
+ union fooround u;
+};
+/* If malloc were really smart, it would round addresses to DEFAULT_ALIGNMENT.
+ But in fact it might be less smart and round addresses to as much as
+ DEFAULT_ROUNDING. So we prepare for it to do that. */
+enum
+ {
+ DEFAULT_ALIGNMENT = offsetof (struct fooalign, u),
+ DEFAULT_ROUNDING = sizeof (union fooround)
+ };
+
+/* When we copy a long block of data, this is the unit to do it with.
+ On some machines, copying successive ints does not work;
+ in such a case, redefine COPYING_UNIT to `long' (if that works)
+ or `char' as a last resort. */
+# ifndef COPYING_UNIT
+# define COPYING_UNIT int
+# endif
+
+
+/* The functions allocating more room by calling `obstack_chunk_alloc'
+ jump to the handler pointed to by `obstack_alloc_failed_handler'.
+ This can be set to a user defined function which should either
+ abort gracefully or use longjump - but shouldn't return. This
+ variable by default points to the internal function
+ `print_and_abort'. */
+static void print_and_abort (void);
+void (*obstack_alloc_failed_handler) (void) = print_and_abort;
+
+/* Exit value used when `print_and_abort' is used. */
+# include <stdlib.h>
+# ifdef _LIBC
+int obstack_exit_failure = EXIT_FAILURE;
+# else
+# include "exitfail.h"
+# define obstack_exit_failure exit_failure
+# endif
+
+# ifdef _LIBC
+# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
+/* A looong time ago (before 1994, anyway; we're not sure) this global variable
+ was used by non-GNU-C macros to avoid multiple evaluation. The GNU C
+ library still exports it because somebody might use it. */
+struct obstack *_obstack_compat;
+compat_symbol (libc, _obstack_compat, _obstack, GLIBC_2_0);
+# endif
+# endif
+
+/* Define a macro that either calls functions with the traditional malloc/free
+ calling interface, or calls functions with the mmalloc/mfree interface
+ (that adds an extra first argument), based on the state of use_extra_arg.
+ For free, do not use ?:, since some compilers, like the MIPS compilers,
+ do not allow (expr) ? void : void. */
+
+# define CALL_CHUNKFUN(h, size) \
+ (((h) -> use_extra_arg) \
+ ? (*(h)->chunkfun) ((h)->extra_arg, (size)) \
+ : (*(struct _obstack_chunk *(*) (long)) (h)->chunkfun) ((size)))
+
+# define CALL_FREEFUN(h, old_chunk) \
+ do { \
+ if ((h) -> use_extra_arg) \
+ (*(h)->freefun) ((h)->extra_arg, (old_chunk)); \
+ else \
+ (*(void (*) (void *)) (h)->freefun) ((old_chunk)); \
+ } while (0)
+
+
+/* Initialize an obstack H for use. Specify chunk size SIZE (0 means default).
+ Objects start on multiples of ALIGNMENT (0 means use default).
+ CHUNKFUN is the function to use to allocate chunks,
+ and FREEFUN the function to free them.
+
+ Return nonzero if successful, calls obstack_alloc_failed_handler if
+ allocation fails. */
+
+int
+_obstack_begin (struct obstack *h,
+ int size, int alignment,
+ void *(*chunkfun) (long),
+ void (*freefun) (void *))
+{
+ register struct _obstack_chunk *chunk; /* points to new chunk */
+
+ if (alignment == 0)
+ alignment = DEFAULT_ALIGNMENT;
+ if (size == 0)
+ /* Default size is what GNU malloc can fit in a 4096-byte block. */
+ {
+ /* 12 is sizeof (mhead) and 4 is EXTRA from GNU malloc.
+ Use the values for range checking, because if range checking is off,
+ the extra bytes won't be missed terribly, but if range checking is on
+ and we used a larger request, a whole extra 4096 bytes would be
+ allocated.
+
+ These number are irrelevant to the new GNU malloc. I suspect it is
+ less sensitive to the size of the request. */
+ int extra = ((((12 + DEFAULT_ROUNDING - 1) & ~(DEFAULT_ROUNDING - 1))
+ + 4 + DEFAULT_ROUNDING - 1)
+ & ~(DEFAULT_ROUNDING - 1));
+ size = 4096 - extra;
+ }
+
+ h->chunkfun = (struct _obstack_chunk * (*)(void *, long)) chunkfun;
+ h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
+ h->chunk_size = size;
+ h->alignment_mask = alignment - 1;
+ h->use_extra_arg = 0;
+
+ chunk = h->chunk = CALL_CHUNKFUN (h, h -> chunk_size);
+ if (!chunk)
+ (*obstack_alloc_failed_handler) ();
+ h->next_free = h->object_base = __PTR_ALIGN ((char *) chunk, chunk->contents,
+ alignment - 1);
+ h->chunk_limit = chunk->limit
+ = (char *) chunk + h->chunk_size;
+ chunk->prev = 0;
+ /* The initial chunk now contains no empty object. */
+ h->maybe_empty_object = 0;
+ h->alloc_failed = 0;
+ return 1;
+}
+
+int
+_obstack_begin_1 (struct obstack *h, int size, int alignment,
+ void *(*chunkfun) (void *, long),
+ void (*freefun) (void *, void *),
+ void *arg)
+{
+ register struct _obstack_chunk *chunk; /* points to new chunk */
+
+ if (alignment == 0)
+ alignment = DEFAULT_ALIGNMENT;
+ if (size == 0)
+ /* Default size is what GNU malloc can fit in a 4096-byte block. */
+ {
+ /* 12 is sizeof (mhead) and 4 is EXTRA from GNU malloc.
+ Use the values for range checking, because if range checking is off,
+ the extra bytes won't be missed terribly, but if range checking is on
+ and we used a larger request, a whole extra 4096 bytes would be
+ allocated.
+
+ These number are irrelevant to the new GNU malloc. I suspect it is
+ less sensitive to the size of the request. */
+ int extra = ((((12 + DEFAULT_ROUNDING - 1) & ~(DEFAULT_ROUNDING - 1))
+ + 4 + DEFAULT_ROUNDING - 1)
+ & ~(DEFAULT_ROUNDING - 1));
+ size = 4096 - extra;
+ }
+
+ h->chunkfun = (struct _obstack_chunk * (*)(void *,long)) chunkfun;
+ h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
+ h->chunk_size = size;
+ h->alignment_mask = alignment - 1;
+ h->extra_arg = arg;
+ h->use_extra_arg = 1;
+
+ chunk = h->chunk = CALL_CHUNKFUN (h, h -> chunk_size);
+ if (!chunk)
+ (*obstack_alloc_failed_handler) ();
+ h->next_free = h->object_base = __PTR_ALIGN ((char *) chunk, chunk->contents,
+ alignment - 1);
+ h->chunk_limit = chunk->limit
+ = (char *) chunk + h->chunk_size;
+ chunk->prev = 0;
+ /* The initial chunk now contains no empty object. */
+ h->maybe_empty_object = 0;
+ h->alloc_failed = 0;
+ return 1;
+}
+
+/* Allocate a new current chunk for the obstack *H
+ on the assumption that LENGTH bytes need to be added
+ to the current object, or a new object of length LENGTH allocated.
+ Copies any partial object from the end of the old chunk
+ to the beginning of the new one. */
+
+void
+_obstack_newchunk (struct obstack *h, int length)
+{
+ register struct _obstack_chunk *old_chunk = h->chunk;
+ register struct _obstack_chunk *new_chunk;
+ register long new_size;
+ register long obj_size = h->next_free - h->object_base;
+ register long i;
+ long already;
+ char *object_base;
+
+ /* Compute size for new chunk. */
+ new_size = (obj_size + length) + (obj_size >> 3) + h->alignment_mask + 100;
+ if (new_size < h->chunk_size)
+ new_size = h->chunk_size;
+
+ /* Allocate and initialize the new chunk. */
+ new_chunk = CALL_CHUNKFUN (h, new_size);
+ if (!new_chunk)
+ (*obstack_alloc_failed_handler) ();
+ h->chunk = new_chunk;
+ new_chunk->prev = old_chunk;
+ new_chunk->limit = h->chunk_limit = (char *) new_chunk + new_size;
+
+ /* Compute an aligned object_base in the new chunk */
+ object_base =
+ __PTR_ALIGN ((char *) new_chunk, new_chunk->contents, h->alignment_mask);
+
+ /* Move the existing object to the new chunk.
+ Word at a time is fast and is safe if the object
+ is sufficiently aligned. */
+ if (h->alignment_mask + 1 >= DEFAULT_ALIGNMENT)
+ {
+ for (i = obj_size / sizeof (COPYING_UNIT) - 1;
+ i >= 0; i--)
+ ((COPYING_UNIT *)object_base)[i]
+ = ((COPYING_UNIT *)h->object_base)[i];
+ /* We used to copy the odd few remaining bytes as one extra COPYING_UNIT,
+ but that can cross a page boundary on a machine
+ which does not do strict alignment for COPYING_UNITS. */
+ already = obj_size / sizeof (COPYING_UNIT) * sizeof (COPYING_UNIT);
+ }
+ else
+ already = 0;
+ /* Copy remaining bytes one by one. */
+ for (i = already; i < obj_size; i++)
+ object_base[i] = h->object_base[i];
+
+ /* If the object just copied was the only data in OLD_CHUNK,
+ free that chunk and remove it from the chain.
+ But not if that chunk might contain an empty object. */
+ if (! h->maybe_empty_object
+ && (h->object_base
+ == __PTR_ALIGN ((char *) old_chunk, old_chunk->contents,
+ h->alignment_mask)))
+ {
+ new_chunk->prev = old_chunk->prev;
+ CALL_FREEFUN (h, old_chunk);
+ }
+
+ h->object_base = object_base;
+ h->next_free = h->object_base + obj_size;
+ /* The new chunk certainly contains no empty object yet. */
+ h->maybe_empty_object = 0;
+}
+# ifdef _LIBC
+libc_hidden_def (_obstack_newchunk)
+# endif
+
+/* Return nonzero if object OBJ has been allocated from obstack H.
+ This is here for debugging.
+ If you use it in a program, you are probably losing. */
+
+/* Suppress -Wmissing-prototypes warning. We don't want to declare this in
+ obstack.h because it is just for debugging. */
+int _obstack_allocated_p (struct obstack *h, void *obj);
+
+int
+_obstack_allocated_p (struct obstack *h, void *obj)
+{
+ register struct _obstack_chunk *lp; /* below addr of any objects in this chunk */
+ register struct _obstack_chunk *plp; /* point to previous chunk if any */
+
+ lp = (h)->chunk;
+ /* We use >= rather than > since the object cannot be exactly at
+ the beginning of the chunk but might be an empty object exactly
+ at the end of an adjacent chunk. */
+ while (lp != 0 && ((void *) lp >= obj || (void *) (lp)->limit < obj))
+ {
+ plp = lp->prev;
+ lp = plp;
+ }
+ return lp != 0;
+}
+
+/* Free objects in obstack H, including OBJ and everything allocate
+ more recently than OBJ. If OBJ is zero, free everything in H. */
+
+# undef obstack_free
+
+void
+__obstack_free (struct obstack *h, void *obj)
+{
+ register struct _obstack_chunk *lp; /* below addr of any objects in this chunk */
+ register struct _obstack_chunk *plp; /* point to previous chunk if any */
+
+ lp = h->chunk;
+ /* We use >= because there cannot be an object at the beginning of a chunk.
+ But there can be an empty object at that address
+ at the end of another chunk. */
+ while (lp != 0 && ((void *) lp >= obj || (void *) (lp)->limit < obj))
+ {
+ plp = lp->prev;
+ CALL_FREEFUN (h, lp);
+ lp = plp;
+ /* If we switch chunks, we can't tell whether the new current
+ chunk contains an empty object, so assume that it may. */
+ h->maybe_empty_object = 1;
+ }
+ if (lp)
+ {
+ h->object_base = h->next_free = (char *) (obj);
+ h->chunk_limit = lp->limit;
+ h->chunk = lp;
+ }
+ else if (obj != 0)
+ /* obj is not in any of the chunks! */
+ abort ();
+}
+
+# ifdef _LIBC
+/* Older versions of libc used a function _obstack_free intended to be
+ called by non-GCC compilers. */
+strong_alias (obstack_free, _obstack_free)
+# endif
+
+int
+_obstack_memory_used (struct obstack *h)
+{
+ register struct _obstack_chunk* lp;
+ register int nbytes = 0;
+
+ for (lp = h->chunk; lp != 0; lp = lp->prev)
+ {
+ nbytes += lp->limit - (char *) lp;
+ }
+ return nbytes;
+}
+
+/* Define the error handler. */
+# ifdef _LIBC
+# include <libintl.h>
+# else
+# include "gettext.h"
+# endif
+# ifndef _
+# define _(msgid) gettext (msgid)
+# endif
+
+# ifdef _LIBC
+# include <libio/iolibio.h>
+# endif
+
+# ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later. */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
+# define __attribute__(Spec) /* empty */
+# endif
+# endif
+
+static void
+__attribute__ ((noreturn))
+print_and_abort (void)
+{
+ /* Don't change any of these strings. Yes, it would be possible to add
+ the newline to the string and use fputs or so. But this must not
+ happen because the "memory exhausted" message appears in other places
+ like this and the translation should be reused instead of creating
+ a very similar string which requires a separate translation. */
+# ifdef _LIBC
+ (void) __fxprintf (NULL, "%s\n", _("memory exhausted"));
+# else
+ fprintf (stderr, "%s\n", _("memory exhausted"));
+# endif
+ exit (obstack_exit_failure);
+}
+
+#endif /* !ELIDE_CODE */
diff --git a/lib/obstack.h b/lib/obstack.h
new file mode 100644
index 0000000..3315dfe
--- /dev/null
+++ b/lib/obstack.h
@@ -0,0 +1,513 @@
+/* obstack.h - object stack macros
+ Copyright (C) 1988-1994,1996-1999,2003,2004,2005,2006
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Summary:
+
+All the apparent functions defined here are macros. The idea
+is that you would use these pre-tested macros to solve a
+very specific set of problems, and they would run fast.
+Caution: no side-effects in arguments please!! They may be
+evaluated MANY times!!
+
+These macros operate a stack of objects. Each object starts life
+small, and may grow to maturity. (Consider building a word syllable
+by syllable.) An object can move while it is growing. Once it has
+been "finished" it never changes address again. So the "top of the
+stack" is typically an immature growing object, while the rest of the
+stack is of mature, fixed size and fixed address objects.
+
+These routines grab large chunks of memory, using a function you
+supply, called `obstack_chunk_alloc'. On occasion, they free chunks,
+by calling `obstack_chunk_free'. You must define them and declare
+them before using any obstack macros.
+
+Each independent stack is represented by a `struct obstack'.
+Each of the obstack macros expects a pointer to such a structure
+as the first argument.
+
+One motivation for this package is the problem of growing char strings
+in symbol tables. Unless you are "fascist pig with a read-only mind"
+--Gosper's immortal quote from HAKMEM item 154, out of context--you
+would not like to put any arbitrary upper limit on the length of your
+symbols.
+
+In practice this often means you will build many short symbols and a
+few long symbols. At the time you are reading a symbol you don't know
+how long it is. One traditional method is to read a symbol into a
+buffer, realloc()ating the buffer every time you try to read a symbol
+that is longer than the buffer. This is beaut, but you still will
+want to copy the symbol from the buffer to a more permanent
+symbol-table entry say about half the time.
+
+With obstacks, you can work differently. Use one obstack for all symbol
+names. As you read a symbol, grow the name in the obstack gradually.
+When the name is complete, finalize it. Then, if the symbol exists already,
+free the newly read name.
+
+The way we do this is to take a large chunk, allocating memory from
+low addresses. When you want to build a symbol in the chunk you just
+add chars above the current "high water mark" in the chunk. When you
+have finished adding chars, because you got to the end of the symbol,
+you know how long the chars are, and you can create a new object.
+Mostly the chars will not burst over the highest address of the chunk,
+because you would typically expect a chunk to be (say) 100 times as
+long as an average object.
+
+In case that isn't clear, when we have enough chars to make up
+the object, THEY ARE ALREADY CONTIGUOUS IN THE CHUNK (guaranteed)
+so we just point to it where it lies. No moving of chars is
+needed and this is the second win: potentially long strings need
+never be explicitly shuffled. Once an object is formed, it does not
+change its address during its lifetime.
+
+When the chars burst over a chunk boundary, we allocate a larger
+chunk, and then copy the partly formed object from the end of the old
+chunk to the beginning of the new larger chunk. We then carry on
+accreting characters to the end of the object as we normally would.
+
+A special macro is provided to add a single char at a time to a
+growing object. This allows the use of register variables, which
+break the ordinary 'growth' macro.
+
+Summary:
+ We allocate large chunks.
+ We carve out one object at a time from the current chunk.
+ Once carved, an object never moves.
+ We are free to append data of any size to the currently
+ growing object.
+ Exactly one object is growing in an obstack at any one time.
+ You can run one obstack per control block.
+ You may have as many control blocks as you dare.
+ Because of the way we do it, you can `unwind' an obstack
+ back to a previous state. (You may remove objects much
+ as you would with a stack.)
+*/
+
+
+/* Don't do the contents of this file more than once. */
+
+#ifndef _OBSTACK_H
+#define _OBSTACK_H 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* We need the type of a pointer subtraction. If __PTRDIFF_TYPE__ is
+ defined, as with GNU C, use that; that way we don't pollute the
+ namespace with <stddef.h>'s symbols. Otherwise, include <stddef.h>
+ and use ptrdiff_t. */
+
+#ifdef __PTRDIFF_TYPE__
+# define PTR_INT_TYPE __PTRDIFF_TYPE__
+#else
+# include <stddef.h>
+# define PTR_INT_TYPE ptrdiff_t
+#endif
+
+/* If B is the base of an object addressed by P, return the result of
+ aligning P to the next multiple of A + 1. B and P must be of type
+ char *. A + 1 must be a power of 2. */
+
+#define __BPTR_ALIGN(B, P, A) ((B) + (((P) - (B) + (A)) & ~(A)))
+
+/* Similiar to _BPTR_ALIGN (B, P, A), except optimize the common case
+ where pointers can be converted to integers, aligned as integers,
+ and converted back again. If PTR_INT_TYPE is narrower than a
+ pointer (e.g., the AS/400), play it safe and compute the alignment
+ relative to B. Otherwise, use the faster strategy of computing the
+ alignment relative to 0. */
+
+#define __PTR_ALIGN(B, P, A) \
+ __BPTR_ALIGN (sizeof (PTR_INT_TYPE) < sizeof (void *) ? (B) : (char *) 0, \
+ P, A)
+
+#include <string.h>
+
+struct _obstack_chunk /* Lives at front of each chunk. */
+{
+ char *limit; /* 1 past end of this chunk */
+ struct _obstack_chunk *prev; /* address of prior chunk or NULL */
+ char contents[4]; /* objects begin here */
+};
+
+struct obstack /* control current object in current chunk */
+{
+ long chunk_size; /* preferred size to allocate chunks in */
+ struct _obstack_chunk *chunk; /* address of current struct obstack_chunk */
+ char *object_base; /* address of object we are building */
+ char *next_free; /* where to add next char to current object */
+ char *chunk_limit; /* address of char after current chunk */
+ union
+ {
+ PTR_INT_TYPE tempint;
+ void *tempptr;
+ } temp; /* Temporary for some macros. */
+ int alignment_mask; /* Mask of alignment for each object. */
+ /* These prototypes vary based on `use_extra_arg', and we use
+ casts to the prototypeless function type in all assignments,
+ but having prototypes here quiets -Wstrict-prototypes. */
+ struct _obstack_chunk *(*chunkfun) (void *, long);
+ void (*freefun) (void *, struct _obstack_chunk *);
+ void *extra_arg; /* first arg for chunk alloc/dealloc funcs */
+ unsigned use_extra_arg:1; /* chunk alloc/dealloc funcs take extra arg */
+ unsigned maybe_empty_object:1;/* There is a possibility that the current
+ chunk contains a zero-length object. This
+ prevents freeing the chunk if we allocate
+ a bigger chunk to replace it. */
+ unsigned alloc_failed:1; /* No longer used, as we now call the failed
+ handler on error, but retained for binary
+ compatibility. */
+};
+
+/* Declare the external functions we use; they are in obstack.c. */
+
+extern void _obstack_newchunk (struct obstack *, int);
+extern int _obstack_begin (struct obstack *, int, int,
+ void *(*) (long), void (*) (void *));
+extern int _obstack_begin_1 (struct obstack *, int, int,
+ void *(*) (void *, long),
+ void (*) (void *, void *), void *);
+extern int _obstack_memory_used (struct obstack *);
+
+/* The default name of the function for freeing a chunk is 'obstack_free',
+ but gnulib users can override this by defining '__obstack_free'. */
+#ifndef __obstack_free
+# define __obstack_free obstack_free
+#endif
+extern void __obstack_free (struct obstack *obstack, void *block);
+
+
+/* Error handler called when `obstack_chunk_alloc' failed to allocate
+ more memory. This can be set to a user defined function which
+ should either abort gracefully or use longjump - but shouldn't
+ return. The default action is to print a message and abort. */
+extern void (*obstack_alloc_failed_handler) (void);
+
+/* Exit value used when `print_and_abort' is used. */
+extern int obstack_exit_failure;
+
+/* Pointer to beginning of object being allocated or to be allocated next.
+ Note that this might not be the final address of the object
+ because a new chunk might be needed to hold the final size. */
+
+#define obstack_base(h) ((void *) (h)->object_base)
+
+/* Size for allocating ordinary chunks. */
+
+#define obstack_chunk_size(h) ((h)->chunk_size)
+
+/* Pointer to next byte not yet allocated in current chunk. */
+
+#define obstack_next_free(h) ((h)->next_free)
+
+/* Mask specifying low bits that should be clear in address of an object. */
+
+#define obstack_alignment_mask(h) ((h)->alignment_mask)
+
+/* To prevent prototype warnings provide complete argument list. */
+#define obstack_init(h) \
+ _obstack_begin ((h), 0, 0, \
+ (void *(*) (long)) obstack_chunk_alloc, \
+ (void (*) (void *)) obstack_chunk_free)
+
+#define obstack_begin(h, size) \
+ _obstack_begin ((h), (size), 0, \
+ (void *(*) (long)) obstack_chunk_alloc, \
+ (void (*) (void *)) obstack_chunk_free)
+
+#define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
+ _obstack_begin ((h), (size), (alignment), \
+ (void *(*) (long)) (chunkfun), \
+ (void (*) (void *)) (freefun))
+
+#define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
+ _obstack_begin_1 ((h), (size), (alignment), \
+ (void *(*) (void *, long)) (chunkfun), \
+ (void (*) (void *, void *)) (freefun), (arg))
+
+#define obstack_chunkfun(h, newchunkfun) \
+ ((h) -> chunkfun = (struct _obstack_chunk *(*)(void *, long)) (newchunkfun))
+
+#define obstack_freefun(h, newfreefun) \
+ ((h) -> freefun = (void (*)(void *, struct _obstack_chunk *)) (newfreefun))
+
+#define obstack_1grow_fast(h,achar) (*((h)->next_free)++ = (achar))
+
+#define obstack_blank_fast(h,n) ((h)->next_free += (n))
+
+#define obstack_memory_used(h) _obstack_memory_used (h)
+
+#if defined __GNUC__ && defined __STDC__ && __STDC__
+/* NextStep 2.0 cc is really gcc 1.93 but it defines __GNUC__ = 2 and
+ does not implement __extension__. But that compiler doesn't define
+ __GNUC_MINOR__. */
+# if __GNUC__ < 2 || (__NeXT__ && !__GNUC_MINOR__)
+# define __extension__
+# endif
+
+/* For GNU C, if not -traditional,
+ we can define these macros to compute all args only once
+ without using a global variable.
+ Also, we can avoid using the `temp' slot, to make faster code. */
+
+# define obstack_object_size(OBSTACK) \
+ __extension__ \
+ ({ struct obstack const *__o = (OBSTACK); \
+ (unsigned) (__o->next_free - __o->object_base); })
+
+# define obstack_room(OBSTACK) \
+ __extension__ \
+ ({ struct obstack const *__o = (OBSTACK); \
+ (unsigned) (__o->chunk_limit - __o->next_free); })
+
+# define obstack_make_room(OBSTACK,length) \
+__extension__ \
+({ struct obstack *__o = (OBSTACK); \
+ int __len = (length); \
+ if (__o->chunk_limit - __o->next_free < __len) \
+ _obstack_newchunk (__o, __len); \
+ (void) 0; })
+
+# define obstack_empty_p(OBSTACK) \
+ __extension__ \
+ ({ struct obstack const *__o = (OBSTACK); \
+ (__o->chunk->prev == 0 \
+ && __o->next_free == __PTR_ALIGN ((char *) __o->chunk, \
+ __o->chunk->contents, \
+ __o->alignment_mask)); })
+
+# define obstack_grow(OBSTACK,where,length) \
+__extension__ \
+({ struct obstack *__o = (OBSTACK); \
+ int __len = (length); \
+ if (__o->next_free + __len > __o->chunk_limit) \
+ _obstack_newchunk (__o, __len); \
+ memcpy (__o->next_free, where, __len); \
+ __o->next_free += __len; \
+ (void) 0; })
+
+# define obstack_grow0(OBSTACK,where,length) \
+__extension__ \
+({ struct obstack *__o = (OBSTACK); \
+ int __len = (length); \
+ if (__o->next_free + __len + 1 > __o->chunk_limit) \
+ _obstack_newchunk (__o, __len + 1); \
+ memcpy (__o->next_free, where, __len); \
+ __o->next_free += __len; \
+ *(__o->next_free)++ = 0; \
+ (void) 0; })
+
+# define obstack_1grow(OBSTACK,datum) \
+__extension__ \
+({ struct obstack *__o = (OBSTACK); \
+ if (__o->next_free + 1 > __o->chunk_limit) \
+ _obstack_newchunk (__o, 1); \
+ obstack_1grow_fast (__o, datum); \
+ (void) 0; })
+
+/* These assume that the obstack alignment is good enough for pointers
+ or ints, and that the data added so far to the current object
+ shares that much alignment. */
+
+# define obstack_ptr_grow(OBSTACK,datum) \
+__extension__ \
+({ struct obstack *__o = (OBSTACK); \
+ if (__o->next_free + sizeof (void *) > __o->chunk_limit) \
+ _obstack_newchunk (__o, sizeof (void *)); \
+ obstack_ptr_grow_fast (__o, datum); }) \
+
+# define obstack_int_grow(OBSTACK,datum) \
+__extension__ \
+({ struct obstack *__o = (OBSTACK); \
+ if (__o->next_free + sizeof (int) > __o->chunk_limit) \
+ _obstack_newchunk (__o, sizeof (int)); \
+ obstack_int_grow_fast (__o, datum); })
+
+# define obstack_ptr_grow_fast(OBSTACK,aptr) \
+__extension__ \
+({ struct obstack *__o1 = (OBSTACK); \
+ *(const void **) __o1->next_free = (aptr); \
+ __o1->next_free += sizeof (const void *); \
+ (void) 0; })
+
+# define obstack_int_grow_fast(OBSTACK,aint) \
+__extension__ \
+({ struct obstack *__o1 = (OBSTACK); \
+ *(int *) __o1->next_free = (aint); \
+ __o1->next_free += sizeof (int); \
+ (void) 0; })
+
+# define obstack_blank(OBSTACK,length) \
+__extension__ \
+({ struct obstack *__o = (OBSTACK); \
+ int __len = (length); \
+ if (__o->chunk_limit - __o->next_free < __len) \
+ _obstack_newchunk (__o, __len); \
+ obstack_blank_fast (__o, __len); \
+ (void) 0; })
+
+# define obstack_alloc(OBSTACK,length) \
+__extension__ \
+({ struct obstack *__h = (OBSTACK); \
+ obstack_blank (__h, (length)); \
+ obstack_finish (__h); })
+
+# define obstack_copy(OBSTACK,where,length) \
+__extension__ \
+({ struct obstack *__h = (OBSTACK); \
+ obstack_grow (__h, (where), (length)); \
+ obstack_finish (__h); })
+
+# define obstack_copy0(OBSTACK,where,length) \
+__extension__ \
+({ struct obstack *__h = (OBSTACK); \
+ obstack_grow0 (__h, (where), (length)); \
+ obstack_finish (__h); })
+
+/* The local variable is named __o1 to avoid a name conflict
+ when obstack_blank is called. */
+# define obstack_finish(OBSTACK) \
+__extension__ \
+({ struct obstack *__o1 = (OBSTACK); \
+ void *__value = (void *) __o1->object_base; \
+ if (__o1->next_free == __value) \
+ __o1->maybe_empty_object = 1; \
+ __o1->next_free \
+ = __PTR_ALIGN (__o1->object_base, __o1->next_free, \
+ __o1->alignment_mask); \
+ if (__o1->next_free - (char *)__o1->chunk \
+ > __o1->chunk_limit - (char *)__o1->chunk) \
+ __o1->next_free = __o1->chunk_limit; \
+ __o1->object_base = __o1->next_free; \
+ __value; })
+
+# define obstack_free(OBSTACK, OBJ) \
+__extension__ \
+({ struct obstack *__o = (OBSTACK); \
+ void *__obj = (OBJ); \
+ if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) \
+ __o->next_free = __o->object_base = (char *)__obj; \
+ else (__obstack_free) (__o, __obj); })
+
+#else /* not __GNUC__ or not __STDC__ */
+
+# define obstack_object_size(h) \
+ (unsigned) ((h)->next_free - (h)->object_base)
+
+# define obstack_room(h) \
+ (unsigned) ((h)->chunk_limit - (h)->next_free)
+
+# define obstack_empty_p(h) \
+ ((h)->chunk->prev == 0 \
+ && (h)->next_free == __PTR_ALIGN ((char *) (h)->chunk, \
+ (h)->chunk->contents, \
+ (h)->alignment_mask))
+
+/* Note that the call to _obstack_newchunk is enclosed in (..., 0)
+ so that we can avoid having void expressions
+ in the arms of the conditional expression.
+ Casting the third operand to void was tried before,
+ but some compilers won't accept it. */
+
+# define obstack_make_room(h,length) \
+( (h)->temp.tempint = (length), \
+ (((h)->next_free + (h)->temp.tempint > (h)->chunk_limit) \
+ ? (_obstack_newchunk ((h), (h)->temp.tempint), 0) : 0))
+
+# define obstack_grow(h,where,length) \
+( (h)->temp.tempint = (length), \
+ (((h)->next_free + (h)->temp.tempint > (h)->chunk_limit) \
+ ? (_obstack_newchunk ((h), (h)->temp.tempint), 0) : 0), \
+ memcpy ((h)->next_free, where, (h)->temp.tempint), \
+ (h)->next_free += (h)->temp.tempint)
+
+# define obstack_grow0(h,where,length) \
+( (h)->temp.tempint = (length), \
+ (((h)->next_free + (h)->temp.tempint + 1 > (h)->chunk_limit) \
+ ? (_obstack_newchunk ((h), (h)->temp.tempint + 1), 0) : 0), \
+ memcpy ((h)->next_free, where, (h)->temp.tempint), \
+ (h)->next_free += (h)->temp.tempint, \
+ *((h)->next_free)++ = 0)
+
+# define obstack_1grow(h,datum) \
+( (((h)->next_free + 1 > (h)->chunk_limit) \
+ ? (_obstack_newchunk ((h), 1), 0) : 0), \
+ obstack_1grow_fast (h, datum))
+
+# define obstack_ptr_grow(h,datum) \
+( (((h)->next_free + sizeof (char *) > (h)->chunk_limit) \
+ ? (_obstack_newchunk ((h), sizeof (char *)), 0) : 0), \
+ obstack_ptr_grow_fast (h, datum))
+
+# define obstack_int_grow(h,datum) \
+( (((h)->next_free + sizeof (int) > (h)->chunk_limit) \
+ ? (_obstack_newchunk ((h), sizeof (int)), 0) : 0), \
+ obstack_int_grow_fast (h, datum))
+
+# define obstack_ptr_grow_fast(h,aptr) \
+ (((const void **) ((h)->next_free += sizeof (void *)))[-1] = (aptr))
+
+# define obstack_int_grow_fast(h,aint) \
+ (((int *) ((h)->next_free += sizeof (int)))[-1] = (aint))
+
+# define obstack_blank(h,length) \
+( (h)->temp.tempint = (length), \
+ (((h)->chunk_limit - (h)->next_free < (h)->temp.tempint) \
+ ? (_obstack_newchunk ((h), (h)->temp.tempint), 0) : 0), \
+ obstack_blank_fast (h, (h)->temp.tempint))
+
+# define obstack_alloc(h,length) \
+ (obstack_blank ((h), (length)), obstack_finish ((h)))
+
+# define obstack_copy(h,where,length) \
+ (obstack_grow ((h), (where), (length)), obstack_finish ((h)))
+
+# define obstack_copy0(h,where,length) \
+ (obstack_grow0 ((h), (where), (length)), obstack_finish ((h)))
+
+# define obstack_finish(h) \
+( ((h)->next_free == (h)->object_base \
+ ? (((h)->maybe_empty_object = 1), 0) \
+ : 0), \
+ (h)->temp.tempptr = (h)->object_base, \
+ (h)->next_free \
+ = __PTR_ALIGN ((h)->object_base, (h)->next_free, \
+ (h)->alignment_mask), \
+ (((h)->next_free - (char *) (h)->chunk \
+ > (h)->chunk_limit - (char *) (h)->chunk) \
+ ? ((h)->next_free = (h)->chunk_limit) : 0), \
+ (h)->object_base = (h)->next_free, \
+ (h)->temp.tempptr)
+
+# define obstack_free(h,obj) \
+( (h)->temp.tempint = (char *) (obj) - (char *) (h)->chunk, \
+ ((((h)->temp.tempint > 0 \
+ && (h)->temp.tempint < (h)->chunk_limit - (char *) (h)->chunk)) \
+ ? (int) ((h)->next_free = (h)->object_base \
+ = (h)->temp.tempint + (char *) (h)->chunk) \
+ : (((__obstack_free) ((h), (h)->temp.tempint + (char *) (h)->chunk), 0), 0)))
+
+#endif /* not __GNUC__ or not __STDC__ */
+
+#ifdef __cplusplus
+} /* C++ */
+#endif
+
+#endif /* obstack.h */
diff --git a/lib/offtostr.c b/lib/offtostr.c
new file mode 100644
index 0000000..45196e2
--- /dev/null
+++ b/lib/offtostr.c
@@ -0,0 +1,3 @@
+#define inttostr offtostr
+#define inttype off_t
+#include "inttostr.c"
diff --git a/lib/open-safer.c b/lib/open-safer.c
new file mode 100644
index 0000000..04a72eb
--- /dev/null
+++ b/lib/open-safer.c
@@ -0,0 +1,50 @@
+/* Invoke open, but avoid some glitches.
+
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "fcntl-safer.h"
+
+#include <fcntl.h>
+#include <stdarg.h>
+#include "unistd-safer.h"
+
+int
+open_safer (char const *file, int flags, ...)
+{
+ mode_t mode = 0;
+
+ if (flags & O_CREAT)
+ {
+ va_list ap;
+ va_start (ap, flags);
+
+ /* Assume mode_t promotes to int if and only if it is smaller.
+ This assumption isn't guaranteed by the C standard, but we
+ don't know of any real-world counterexamples. */
+ mode = (sizeof (mode_t) < sizeof (int)
+ ? va_arg (ap, int)
+ : va_arg (ap, mode_t));
+
+ va_end (ap);
+ }
+
+ return fd_safer (open (file, flags, mode));
+}
diff --git a/lib/openat-die.c b/lib/openat-die.c
new file mode 100644
index 0000000..7a28570
--- /dev/null
+++ b/lib/openat-die.c
@@ -0,0 +1,51 @@
+/* Report a save- or restore-cwd failure in our openat replacement and then exit.
+
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include <stdlib.h>
+
+#include "error.h"
+#include "exitfail.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
+void
+openat_save_fail (int errno)
+{
+ error (exit_failure, errno,
+ _("unable to record current working directory"));
+
+ /* The `noreturn' attribute cannot be applied to error, since it returns
+ when its first argument is 0. To help compilers understand that this
+ function does not return, call abort. Also, the abort is a
+ safety feature if exit_failure is 0 (which shouldn't happen). */
+ abort ();
+}
+
+void
+openat_restore_fail (int errno)
+{
+ error (exit_failure, errno,
+ _("failed to return to initial working directory"));
+
+ /* As above. */
+ abort ();
+}
diff --git a/lib/openat-priv.h b/lib/openat-priv.h
new file mode 100644
index 0000000..2d98821
--- /dev/null
+++ b/lib/openat-priv.h
@@ -0,0 +1,55 @@
+/* Internals for openat-like functions.
+
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <errno.h>
+#include <stdlib.h>
+
+#define OPENAT_BUFFER_SIZE 512
+char *openat_proc_name (char buf[OPENAT_BUFFER_SIZE], int fd, char const *file);
+
+/* Some systems don't have ENOSYS. */
+#ifndef ENOSYS
+# ifdef ENOTSUP
+# define ENOSYS ENOTSUP
+# else
+/* Some systems don't have ENOTSUP either. */
+# define ENOSYS EINVAL
+# endif
+#endif
+
+/* Some systems don't have EOPNOTSUPP. */
+#ifndef EOPNOTSUPP
+# ifdef ENOTSUP
+# define EOPNOTSUPP ENOTSUP
+# else
+/* Some systems don't have ENOTSUP either. */
+# define EOPNOTSUPP EINVAL
+# endif
+#endif
+
+/* Trying to access a BUILD_PROC_NAME file will fail on systems without
+ /proc support, and even on systems *with* ProcFS support. Return
+ nonzero if the failure may be legitimate, e.g., because /proc is not
+ readable, or the particular .../fd/N directory is not present. */
+#define EXPECTED_ERRNO(Errno) \
+ ((Errno) == ENOTDIR || (Errno) == ENOENT \
+ || (Errno) == EPERM || (Errno) == EACCES \
+ || (Errno) == ENOSYS /* Solaris 8 */ \
+ || (Errno) == EOPNOTSUPP /* FreeBSD */)
diff --git a/lib/openat-proc.c b/lib/openat-proc.c
new file mode 100644
index 0000000..ff2fff0
--- /dev/null
+++ b/lib/openat-proc.c
@@ -0,0 +1,95 @@
+/* Create /proc/self/fd-related names for subfiles of open directories.
+
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "openat-priv.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include <stdio.h>
+#include <string.h>
+
+#include "dirname.h"
+#include "intprops.h"
+#include "same-inode.h"
+#include "xalloc.h"
+
+/* The results of open() in this file are not used with fchdir,
+ therefore save some unnecessary work in fchdir.c. */
+#undef open
+#undef close
+
+#define PROC_SELF_FD_FORMAT "/proc/self/fd/%d/%s"
+
+#define PROC_SELF_FD_NAME_SIZE_BOUND(len) \
+ (sizeof PROC_SELF_FD_FORMAT - sizeof "%d%s" \
+ + INT_STRLEN_BOUND (int) + (len) + 1)
+
+
+/* Set BUF to the expansion of PROC_SELF_FD_FORMAT, using FD and FILE
+ respectively for %d and %s. If successful, return BUF if the
+ result fits in BUF, dynamically allocated memory otherwise. But
+ return NULL if /proc is not reliable. */
+char *
+openat_proc_name (char buf[OPENAT_BUFFER_SIZE], int fd, char const *file)
+{
+ static int proc_status = 0;
+
+ if (! proc_status)
+ {
+ /* Set PROC_STATUS to a positive value if /proc/self/fd is
+ reliable, and a negative value otherwise. Solaris 10
+ /proc/self/fd mishandles "..", and any file name might expand
+ to ".." after symbolic link expansion, so avoid /proc/self/fd
+ if it mishandles "..". Solaris 10 has openat, but this
+ problem is exhibited on code that built on Solaris 8 and
+ running on Solaris 10. */
+
+ int proc_self_fd = open ("/proc/self/fd", O_RDONLY);
+ if (proc_self_fd < 0)
+ proc_status = -1;
+ else
+ {
+ struct stat proc_self_fd_dotdot_st;
+ struct stat proc_self_st;
+ char dotdot_buf[PROC_SELF_FD_NAME_SIZE_BOUND (sizeof ".." - 1)];
+ sprintf (dotdot_buf, PROC_SELF_FD_FORMAT, proc_self_fd, "..");
+ proc_status =
+ ((stat (dotdot_buf, &proc_self_fd_dotdot_st) == 0
+ && stat ("/proc/self", &proc_self_st) == 0
+ && SAME_INODE (proc_self_fd_dotdot_st, proc_self_st))
+ ? 1 : -1);
+ close (proc_self_fd);
+ }
+ }
+
+ if (proc_status < 0)
+ return NULL;
+ else
+ {
+ size_t bufsize = PROC_SELF_FD_NAME_SIZE_BOUND (strlen (file));
+ char *result = (bufsize < OPENAT_BUFFER_SIZE ? buf : xmalloc (bufsize));
+ sprintf (result, PROC_SELF_FD_FORMAT, fd, file);
+ return result;
+ }
+}
diff --git a/lib/openat.c b/lib/openat.c
new file mode 100644
index 0000000..cd49654
--- /dev/null
+++ b/lib/openat.c
@@ -0,0 +1,270 @@
+/* provide a replacement openat function
+ Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+
+#include "openat.h"
+
+#include <stdarg.h>
+#include <stddef.h>
+
+#include "dirname.h" /* solely for definition of IS_ABSOLUTE_FILE_NAME */
+#include "fcntl--.h"
+#include "lchown.h"
+#include "lstat.h"
+#include "openat-priv.h"
+#include "save-cwd.h"
+
+/* Replacement for Solaris' openat function.
+ <http://www.google.com/search?q=openat+site:docs.sun.com>
+ First, try to simulate it via open ("/proc/self/fd/FD/FILE").
+ Failing that, simulate it by doing save_cwd/fchdir/open/restore_cwd.
+ If either the save_cwd or the restore_cwd fails (relatively unlikely),
+ then give a diagnostic and exit nonzero.
+ Otherwise, upon failure, set errno and return -1, as openat does.
+ Upon successful completion, return a file descriptor. */
+int
+openat (int fd, char const *file, int flags, ...)
+{
+ mode_t mode = 0;
+
+ if (flags & O_CREAT)
+ {
+ va_list arg;
+ va_start (arg, flags);
+
+ /* If mode_t is narrower than int, use the promoted type (int),
+ not mode_t. Use sizeof to guess whether mode_t is narrower;
+ we don't know of any practical counterexamples. */
+ mode = (sizeof (mode_t) < sizeof (int)
+ ? va_arg (arg, int)
+ : va_arg (arg, mode_t));
+
+ va_end (arg);
+ }
+
+ return openat_permissive (fd, file, flags, mode, NULL);
+}
+
+/* Like openat (FD, FILE, FLAGS, MODE), but if CWD_ERRNO is
+ nonnull, set *CWD_ERRNO to an errno value if unable to save
+ or restore the initial working directory. This is needed only
+ the first time remove.c's remove_dir opens a command-line
+ directory argument.
+
+ If a previous attempt to restore the current working directory
+ failed, then we must not even try to access a `.'-relative name.
+ It is the caller's responsibility not to call this function
+ in that case. */
+
+int
+openat_permissive (int fd, char const *file, int flags, mode_t mode,
+ int *cwd_errno)
+{
+ struct saved_cwd saved_cwd;
+ int saved_errno;
+ int err;
+ bool save_ok;
+
+ if (fd == AT_FDCWD || IS_ABSOLUTE_FILE_NAME (file))
+ return open (file, flags, mode);
+
+ {
+ char buf[OPENAT_BUFFER_SIZE];
+ char *proc_file = openat_proc_name (buf, fd, file);
+ if (proc_file)
+ {
+ int open_result = open (proc_file, flags, mode);
+ int open_errno = errno;
+ if (proc_file != buf)
+ free (proc_file);
+ /* If the syscall succeeds, or if it fails with an unexpected
+ errno value, then return right away. Otherwise, fall through
+ and resort to using save_cwd/restore_cwd. */
+ if (0 <= open_result || ! EXPECTED_ERRNO (open_errno))
+ {
+ errno = open_errno;
+ return open_result;
+ }
+ }
+ }
+
+ save_ok = (save_cwd (&saved_cwd) == 0);
+ if (! save_ok)
+ {
+ if (! cwd_errno)
+ openat_save_fail (errno);
+ *cwd_errno = errno;
+ }
+
+ err = fchdir (fd);
+ saved_errno = errno;
+
+ if (! err)
+ {
+ err = open (file, flags, mode);
+ saved_errno = errno;
+ if (save_ok && restore_cwd (&saved_cwd) != 0)
+ {
+ if (! cwd_errno)
+ openat_restore_fail (errno);
+ *cwd_errno = errno;
+ }
+ }
+
+ free_cwd (&saved_cwd);
+ errno = saved_errno;
+ return err;
+}
+
+/* Return true if our openat implementation must resort to
+ using save_cwd and restore_cwd. */
+bool
+openat_needs_fchdir (void)
+{
+ bool needs_fchdir = true;
+ int fd = open ("/", O_RDONLY);
+
+ if (0 <= fd)
+ {
+ char buf[OPENAT_BUFFER_SIZE];
+ char *proc_file = openat_proc_name (buf, fd, ".");
+ if (proc_file)
+ {
+ needs_fchdir = false;
+ if (proc_file != buf)
+ free (proc_file);
+ }
+ close (fd);
+ }
+
+ return needs_fchdir;
+}
+
+#if !HAVE_FDOPENDIR
+
+/* Replacement for Solaris' function by the same name.
+ <http://www.google.com/search?q=fdopendir+site:docs.sun.com>
+ First, try to simulate it via opendir ("/proc/self/fd/FD"). Failing
+ that, simulate it by doing save_cwd/fchdir/opendir(".")/restore_cwd.
+ If either the save_cwd or the restore_cwd fails (relatively unlikely),
+ then give a diagnostic and exit nonzero.
+ Otherwise, this function works just like Solaris' fdopendir.
+
+ W A R N I N G:
+ Unlike the other fd-related functions here, this one
+ effectively consumes its FD parameter. The caller should not
+ close or otherwise manipulate FD if this function returns successfully. */
+DIR *
+fdopendir (int fd)
+{
+ struct saved_cwd saved_cwd;
+ int saved_errno;
+ DIR *dir;
+
+ char buf[OPENAT_BUFFER_SIZE];
+ char *proc_file = openat_proc_name (buf, fd, ".");
+ if (proc_file)
+ {
+ dir = opendir (proc_file);
+ saved_errno = errno;
+ }
+ else
+ {
+ dir = NULL;
+ saved_errno = EOPNOTSUPP;
+ }
+
+ /* If the syscall fails with an expected errno value, resort to
+ save_cwd/restore_cwd. */
+ if (! dir && EXPECTED_ERRNO (saved_errno))
+ {
+ if (save_cwd (&saved_cwd) != 0)
+ openat_save_fail (errno);
+
+ if (fchdir (fd) != 0)
+ {
+ dir = NULL;
+ saved_errno = errno;
+ }
+ else
+ {
+ dir = opendir (".");
+ saved_errno = errno;
+
+ if (restore_cwd (&saved_cwd) != 0)
+ openat_restore_fail (errno);
+ }
+
+ free_cwd (&saved_cwd);
+ }
+
+ if (dir)
+ close (fd);
+ if (proc_file != buf)
+ free (proc_file);
+ errno = saved_errno;
+ return dir;
+}
+
+#endif
+
+/* Replacement for Solaris' function by the same name.
+ <http://www.google.com/search?q=fstatat+site:docs.sun.com>
+ First, try to simulate it via l?stat ("/proc/self/fd/FD/FILE").
+ Failing that, simulate it via save_cwd/fchdir/(stat|lstat)/restore_cwd.
+ If either the save_cwd or the restore_cwd fails (relatively unlikely),
+ then give a diagnostic and exit nonzero.
+ Otherwise, this function works just like Solaris' fstatat. */
+
+#define AT_FUNC_NAME fstatat
+#define AT_FUNC_F1 lstat
+#define AT_FUNC_F2 stat
+#define AT_FUNC_USE_F1_COND flag == AT_SYMLINK_NOFOLLOW
+#define AT_FUNC_POST_FILE_PARAM_DECLS , struct stat *st, int flag
+#define AT_FUNC_POST_FILE_ARGS , st
+#include "at-func.c"
+#undef AT_FUNC_NAME
+#undef AT_FUNC_F1
+#undef AT_FUNC_F2
+#undef AT_FUNC_USE_F1_COND
+#undef AT_FUNC_POST_FILE_PARAM_DECLS
+#undef AT_FUNC_POST_FILE_ARGS
+
+/* Replacement for Solaris' function by the same name.
+ <http://www.google.com/search?q=unlinkat+site:docs.sun.com>
+ First, try to simulate it via (unlink|rmdir) ("/proc/self/fd/FD/FILE").
+ Failing that, simulate it via save_cwd/fchdir/(unlink|rmdir)/restore_cwd.
+ If either the save_cwd or the restore_cwd fails (relatively unlikely),
+ then give a diagnostic and exit nonzero.
+ Otherwise, this function works just like Solaris' unlinkat. */
+
+#define AT_FUNC_NAME unlinkat
+#define AT_FUNC_F1 rmdir
+#define AT_FUNC_F2 unlink
+#define AT_FUNC_USE_F1_COND flag == AT_REMOVEDIR
+#define AT_FUNC_POST_FILE_PARAM_DECLS , int flag
+#define AT_FUNC_POST_FILE_ARGS /* empty */
+#include "at-func.c"
+#undef AT_FUNC_NAME
+#undef AT_FUNC_F1
+#undef AT_FUNC_F2
+#undef AT_FUNC_USE_F1_COND
+#undef AT_FUNC_POST_FILE_PARAM_DECLS
+#undef AT_FUNC_POST_FILE_ARGS
diff --git a/lib/openat.h b/lib/openat.h
new file mode 100644
index 0000000..f8333f0
--- /dev/null
+++ b/lib/openat.h
@@ -0,0 +1,127 @@
+/* provide a replacement openat function
+ Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <fcntl.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <dirent.h>
+#include <unistd.h>
+#include <stdbool.h>
+
+#ifndef __attribute__
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
+# define __attribute__(x) /* empty */
+# endif
+#endif
+
+#ifndef ATTRIBUTE_NORETURN
+# define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
+#endif
+
+/* Work around a bug in Solaris 9 and 10: AT_FDCWD is positive. Its
+ value exceeds INT_MAX, so its use as an int doesn't conform to the
+ C standard, and GCC and Sun C complain in some cases. If the bug
+ is present, undef AT_FDCWD here, so it can be redefined below. */
+#if 0 < AT_FDCWD && AT_FDCWD == 0xffd19553
+# undef AT_FDCWD
+#endif
+
+/* Use the same bit pattern as Solaris 9, but with the proper
+ signedness. The bit pattern is important, in case this actually is
+ Solaris with the above workaround. */
+#ifndef AT_FDCWD
+# define AT_FDCWD (-3041965)
+#endif
+
+/* Use the same values as Solaris 9. This shouldn't matter, but
+ there's no real reason to differ. */
+#ifndef AT_SYMLINK_NOFOLLOW
+# define AT_SYMLINK_NOFOLLOW 4096
+# define AT_REMOVEDIR 1
+#endif
+
+#ifdef __OPENAT_PREFIX
+
+# undef openat
+# define __OPENAT_CONCAT(x, y) x ## y
+# define __OPENAT_XCONCAT(x, y) __OPENAT_CONCAT (x, y)
+# define __OPENAT_ID(y) __OPENAT_XCONCAT (__OPENAT_PREFIX, y)
+# define openat __OPENAT_ID (openat)
+int openat (int fd, char const *file, int flags, /* mode_t mode */ ...);
+int openat_permissive (int fd, char const *file, int flags, mode_t mode,
+ int *cwd_errno);
+# if ! HAVE_FDOPENDIR
+# define fdopendir __OPENAT_ID (fdopendir)
+# endif
+DIR *fdopendir (int fd);
+# define fstatat __OPENAT_ID (fstatat)
+int fstatat (int fd, char const *file, struct stat *st, int flag);
+# define unlinkat __OPENAT_ID (unlinkat)
+int unlinkat (int fd, char const *file, int flag);
+bool openat_needs_fchdir (void);
+
+#else
+
+# define openat_permissive(Fd, File, Flags, Mode, Cwd_errno) \
+ openat (Fd, File, Flags, Mode)
+# define openat_needs_fchdir() false
+
+#endif
+
+#if HAVE_OPENAT && ! LSTAT_FOLLOWS_SLASHED_SYMLINK
+int rpl_fstatat (int fd, char const *file, struct stat *st, int flag);
+# if !COMPILING_FSTATAT
+# undef fstatat
+# define fstatat rpl_fstatat
+# endif
+#endif
+
+int mkdirat (int fd, char const *file, mode_t mode);
+void openat_restore_fail (int) ATTRIBUTE_NORETURN;
+void openat_save_fail (int) ATTRIBUTE_NORETURN;
+int fchmodat (int fd, char const *file, mode_t mode, int flag);
+int fchownat (int fd, char const *file, uid_t owner, gid_t group, int flag);
+
+/* Using these function names makes application code
+ slightly more readable than it would be with
+ fchownat (..., 0) or fchownat (..., AT_SYMLINK_NOFOLLOW). */
+static inline int
+chownat (int fd, char const *file, uid_t owner, gid_t group)
+{
+ return fchownat (fd, file, owner, group, 0);
+}
+
+static inline int
+lchownat (int fd, char const *file, uid_t owner, gid_t group)
+{
+ return fchownat (fd, file, owner, group, AT_SYMLINK_NOFOLLOW);
+}
+
+static inline int
+chmodat (int fd, char const *file, mode_t mode)
+{
+ return fchmodat (fd, file, mode, 0);
+}
+
+static inline int
+lchmodat (int fd, char const *file, mode_t mode)
+{
+ return fchmodat (fd, file, mode, AT_SYMLINK_NOFOLLOW);
+}
diff --git a/lib/pathmax.h b/lib/pathmax.h
new file mode 100644
index 0000000..6941e45
--- /dev/null
+++ b/lib/pathmax.h
@@ -0,0 +1,47 @@
+/* Define PATH_MAX somehow. Requires sys/types.h.
+ Copyright (C) 1992, 1999, 2001, 2003, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _PATHMAX_H
+# define _PATHMAX_H
+
+# include <unistd.h>
+
+# include <limits.h>
+
+# ifndef _POSIX_PATH_MAX
+# define _POSIX_PATH_MAX 256
+# endif
+
+# if !defined PATH_MAX && defined _PC_PATH_MAX
+# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 \
+ : pathconf ("/", _PC_PATH_MAX))
+# endif
+
+/* Don't include sys/param.h if it already has been. */
+# if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN
+# include <sys/param.h>
+# endif
+
+# if !defined PATH_MAX && defined MAXPATHLEN
+# define PATH_MAX MAXPATHLEN
+# endif
+
+# ifndef PATH_MAX
+# define PATH_MAX _POSIX_PATH_MAX
+# endif
+
+#endif /* _PATHMAX_H */
diff --git a/lib/physmem.c b/lib/physmem.c
new file mode 100644
index 0000000..844817b
--- /dev/null
+++ b/lib/physmem.c
@@ -0,0 +1,305 @@
+/* Calculate the size of physical memory.
+
+ Copyright (C) 2000, 2001, 2003, 2005, 2006 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "physmem.h"
+
+#include <unistd.h>
+
+#if HAVE_SYS_PSTAT_H
+# include <sys/pstat.h>
+#endif
+
+#if HAVE_SYS_SYSMP_H
+# include <sys/sysmp.h>
+#endif
+
+#if HAVE_SYS_SYSINFO_H && HAVE_MACHINE_HAL_SYSINFO_H
+# include <sys/sysinfo.h>
+# include <machine/hal_sysinfo.h>
+#endif
+
+#if HAVE_SYS_TABLE_H
+# include <sys/table.h>
+#endif
+
+#include <sys/types.h>
+
+#if HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+
+#if HAVE_SYS_SYSCTL_H
+# include <sys/sysctl.h>
+#endif
+
+#if HAVE_SYS_SYSTEMCFG_H
+# include <sys/systemcfg.h>
+#endif
+
+#ifdef _WIN32
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+/* MEMORYSTATUSEX is missing from older windows headers, so define
+ a local replacement. */
+typedef struct
+{
+ DWORD dwLength;
+ DWORD dwMemoryLoad;
+ DWORDLONG ullTotalPhys;
+ DWORDLONG ullAvailPhys;
+ DWORDLONG ullTotalPageFile;
+ DWORDLONG ullAvailPageFile;
+ DWORDLONG ullTotalVirtual;
+ DWORDLONG ullAvailVirtual;
+ DWORDLONG ullAvailExtendedVirtual;
+} lMEMORYSTATUSEX;
+typedef WINBOOL (WINAPI *PFN_MS_EX) (lMEMORYSTATUSEX*);
+#endif
+
+#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
+
+/* Return the total amount of physical memory. */
+double
+physmem_total (void)
+{
+#if defined _SC_PHYS_PAGES && defined _SC_PAGESIZE
+ { /* This works on linux-gnu, solaris2 and cygwin. */
+ double pages = sysconf (_SC_PHYS_PAGES);
+ double pagesize = sysconf (_SC_PAGESIZE);
+ if (0 <= pages && 0 <= pagesize)
+ return pages * pagesize;
+ }
+#endif
+
+#if HAVE_PSTAT_GETSTATIC
+ { /* This works on hpux11. */
+ struct pst_static pss;
+ if (0 <= pstat_getstatic (&pss, sizeof pss, 1, 0))
+ {
+ double pages = pss.physical_memory;
+ double pagesize = pss.page_size;
+ if (0 <= pages && 0 <= pagesize)
+ return pages * pagesize;
+ }
+ }
+#endif
+
+#if HAVE_SYSMP && defined MP_SAGET && defined MPSA_RMINFO && defined _SC_PAGESIZE
+ { /* This works on irix6. */
+ struct rminfo realmem;
+ if (sysmp (MP_SAGET, MPSA_RMINFO, &realmem, sizeof realmem) == 0)
+ {
+ double pagesize = sysconf (_SC_PAGESIZE);
+ double pages = realmem.physmem;
+ if (0 <= pages && 0 <= pagesize)
+ return pages * pagesize;
+ }
+ }
+#endif
+
+#if HAVE_GETSYSINFO && defined GSI_PHYSMEM
+ { /* This works on Tru64 UNIX V4/5. */
+ int physmem;
+
+ if (getsysinfo (GSI_PHYSMEM, (caddr_t) &physmem, sizeof (physmem),
+ NULL, NULL, NULL) == 1)
+ {
+ double kbytes = physmem;
+
+ if (0 <= kbytes)
+ return kbytes * 1024.0;
+ }
+ }
+#endif
+
+#if HAVE_SYSCTL && defined HW_PHYSMEM
+ { /* This works on *bsd and darwin. */
+ unsigned int physmem;
+ size_t len = sizeof physmem;
+ static int mib[2] = { CTL_HW, HW_PHYSMEM };
+
+ if (sysctl (mib, ARRAY_SIZE (mib), &physmem, &len, NULL, 0) == 0
+ && len == sizeof (physmem))
+ return (double) physmem;
+ }
+#endif
+
+#if HAVE__SYSTEM_CONFIGURATION
+ /* This works on AIX. */
+ return _system_configuration.physmem;
+#endif
+
+#if defined _WIN32
+ { /* this works on windows */
+ PFN_MS_EX pfnex;
+ HMODULE h = GetModuleHandle ("kernel32.dll");
+
+ if (!h)
+ return 0.0;
+
+ /* Use GlobalMemoryStatusEx if available. */
+ if ((pfnex = (PFN_MS_EX) GetProcAddress (h, "GlobalMemoryStatusEx")))
+ {
+ lMEMORYSTATUSEX lms_ex;
+ lms_ex.dwLength = sizeof lms_ex;
+ if (!pfnex (&lms_ex))
+ return 0.0;
+ return (double) lms_ex.ullTotalPhys;
+ }
+
+ /* Fall back to GlobalMemoryStatus which is always available.
+ but returns wrong results for physical memory > 4GB. */
+ else
+ {
+ MEMORYSTATUS ms;
+ GlobalMemoryStatus (&ms);
+ return (double) ms.dwTotalPhys;
+ }
+ }
+#endif
+
+ /* Guess 64 MB. It's probably an older host, so guess small. */
+ return 64 * 1024 * 1024;
+}
+
+/* Return the amount of physical memory available. */
+double
+physmem_available (void)
+{
+#if defined _SC_AVPHYS_PAGES && defined _SC_PAGESIZE
+ { /* This works on linux-gnu, solaris2 and cygwin. */
+ double pages = sysconf (_SC_AVPHYS_PAGES);
+ double pagesize = sysconf (_SC_PAGESIZE);
+ if (0 <= pages && 0 <= pagesize)
+ return pages * pagesize;
+ }
+#endif
+
+#if HAVE_PSTAT_GETSTATIC && HAVE_PSTAT_GETDYNAMIC
+ { /* This works on hpux11. */
+ struct pst_static pss;
+ struct pst_dynamic psd;
+ if (0 <= pstat_getstatic (&pss, sizeof pss, 1, 0)
+ && 0 <= pstat_getdynamic (&psd, sizeof psd, 1, 0))
+ {
+ double pages = psd.psd_free;
+ double pagesize = pss.page_size;
+ if (0 <= pages && 0 <= pagesize)
+ return pages * pagesize;
+ }
+ }
+#endif
+
+#if HAVE_SYSMP && defined MP_SAGET && defined MPSA_RMINFO && defined _SC_PAGESIZE
+ { /* This works on irix6. */
+ struct rminfo realmem;
+ if (sysmp (MP_SAGET, MPSA_RMINFO, &realmem, sizeof realmem) == 0)
+ {
+ double pagesize = sysconf (_SC_PAGESIZE);
+ double pages = realmem.availrmem;
+ if (0 <= pages && 0 <= pagesize)
+ return pages * pagesize;
+ }
+ }
+#endif
+
+#if HAVE_TABLE && defined TBL_VMSTATS
+ { /* This works on Tru64 UNIX V4/5. */
+ struct tbl_vmstats vmstats;
+
+ if (table (TBL_VMSTATS, 0, &vmstats, 1, sizeof (vmstats)) == 1)
+ {
+ double pages = vmstats.free_count;
+ double pagesize = vmstats.pagesize;
+
+ if (0 <= pages && 0 <= pagesize)
+ return pages * pagesize;
+ }
+ }
+#endif
+
+#if HAVE_SYSCTL && defined HW_USERMEM
+ { /* This works on *bsd and darwin. */
+ unsigned int usermem;
+ size_t len = sizeof usermem;
+ static int mib[2] = { CTL_HW, HW_USERMEM };
+
+ if (sysctl (mib, ARRAY_SIZE (mib), &usermem, &len, NULL, 0) == 0
+ && len == sizeof (usermem))
+ return (double) usermem;
+ }
+#endif
+
+#if defined _WIN32
+ { /* this works on windows */
+ PFN_MS_EX pfnex;
+ HMODULE h = GetModuleHandle ("kernel32.dll");
+
+ if (!h)
+ return 0.0;
+
+ /* Use GlobalMemoryStatusEx if available. */
+ if ((pfnex = (PFN_MS_EX) GetProcAddress (h, "GlobalMemoryStatusEx")))
+ {
+ lMEMORYSTATUSEX lms_ex;
+ lms_ex.dwLength = sizeof lms_ex;
+ if (!pfnex (&lms_ex))
+ return 0.0;
+ return (double) lms_ex.ullAvailPhys;
+ }
+
+ /* Fall back to GlobalMemoryStatus which is always available.
+ but returns wrong results for physical memory > 4GB */
+ else
+ {
+ MEMORYSTATUS ms;
+ GlobalMemoryStatus (&ms);
+ return (double) ms.dwAvailPhys;
+ }
+ }
+#endif
+
+ /* Guess 25% of physical memory. */
+ return physmem_total () / 4;
+}
+
+
+#if DEBUG
+
+# include <stdio.h>
+# include <stdlib.h>
+
+int
+main (void)
+{
+ printf ("%12.f %12.f\n", physmem_total (), physmem_available ());
+ exit (0);
+}
+
+#endif /* DEBUG */
+
+/*
+Local Variables:
+compile-command: "gcc -DDEBUG -g -O -Wall -W physmem.c"
+End:
+*/
diff --git a/lib/physmem.h b/lib/physmem.h
new file mode 100644
index 0000000..931aede
--- /dev/null
+++ b/lib/physmem.h
@@ -0,0 +1,27 @@
+/* Calculate the size of physical memory.
+
+ Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#ifndef PHYSMEM_H_
+# define PHYSMEM_H_ 1
+
+double physmem_total (void);
+double physmem_available (void);
+
+#endif /* PHYSMEM_H_ */
diff --git a/lib/pipe-safer.c b/lib/pipe-safer.c
new file mode 100644
index 0000000..e4431b3
--- /dev/null
+++ b/lib/pipe-safer.c
@@ -0,0 +1,57 @@
+/* Invoke pipe, but avoid some glitches.
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+
+#include "unistd-safer.h"
+
+#include <unistd.h>
+#include <errno.h>
+
+/* Like pipe, but ensure that neither of the file descriptors is
+ STDIN_FILENO, STDOUT_FILENO, or STDERR_FILENO. Fail with ENOSYS on
+ platforms that lack pipe. */
+
+int
+pipe_safer (int fd[2])
+{
+#if HAVE_PIPE
+ if (pipe (fd) == 0)
+ {
+ int i;
+ for (i = 0; i < 2; i++)
+ {
+ fd[i] = fd_safer (fd[i]);
+ if (fd[i] < 0)
+ {
+ int e = errno;
+ close (fd[1 - i]);
+ errno = e;
+ return -1;
+ }
+ }
+
+ return 0;
+ }
+#else
+ errno = ENOSYS;
+#endif
+
+ return -1;
+}
diff --git a/lib/posixtm.c b/lib/posixtm.c
new file mode 100644
index 0000000..5514ba4
--- /dev/null
+++ b/lib/posixtm.c
@@ -0,0 +1,328 @@
+/* Parse dates for touch and date.
+
+ Copyright (C) 1989, 1990, 1991, 1998, 2000, 2001, 2002, 2003, 2004,
+ 2005, 2006, 2007 Free Software Foundation Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Yacc-based version written by Jim Kingdon and David MacKenzie.
+ Rewritten by Jim Meyering. */
+
+#include <config.h>
+
+#include "posixtm.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <string.h>
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+/* ISDIGIT differs from isdigit, as follows:
+ - Its arg may be any int or unsigned int; it need not be an unsigned char
+ or EOF.
+ - It's typically faster.
+ POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
+ isdigit unless it's important to use the locale's definition
+ of `digit' even when the host does not conform to POSIX. */
+#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
+
+time_t mktime ();
+
+/*
+ POSIX requires:
+
+ touch -t [[CC]YY]mmddhhmm[.ss] FILE...
+ 8, 10, or 12 digits, followed by optional .ss
+ (PDS_LEADING_YEAR | PDS_CENTURY | PDS_SECONDS)
+
+ touch mmddhhmm[YY] FILE... (obsoleted by POSIX 1003.1-2001)
+ 8 or 10 digits, YY (if present) must be in the range 69-99
+ (PDS_TRAILING_YEAR | PDS_PRE_2000)
+
+ date mmddhhmm[[CC]YY]
+ 8, 10, or 12 digits
+ (PDS_TRAILING_YEAR | PDS_CENTURY)
+
+*/
+
+static int
+year (struct tm *tm, const int *digit_pair, size_t n, unsigned int syntax_bits)
+{
+ switch (n)
+ {
+ case 1:
+ tm->tm_year = *digit_pair;
+ /* Deduce the century based on the year.
+ POSIX requires that 00-68 be interpreted as 2000-2068,
+ and that 69-99 be interpreted as 1969-1999. */
+ if (digit_pair[0] <= 68)
+ {
+ if (syntax_bits & PDS_PRE_2000)
+ return 1;
+ tm->tm_year += 100;
+ }
+ break;
+
+ case 2:
+ if (! (syntax_bits & PDS_CENTURY))
+ return 1;
+ tm->tm_year = digit_pair[0] * 100 + digit_pair[1] - 1900;
+ break;
+
+ case 0:
+ {
+ time_t now;
+ struct tm *tmp;
+
+ /* Use current year. */
+ time (&now);
+ tmp = localtime (&now);
+ if (! tmp)
+ return 1;
+ tm->tm_year = tmp->tm_year;
+ }
+ break;
+
+ default:
+ abort ();
+ }
+
+ return 0;
+}
+
+static int
+posix_time_parse (struct tm *tm, const char *s, unsigned int syntax_bits)
+{
+ const char *dot = NULL;
+ int pair[6];
+ int *p;
+ size_t i;
+
+ size_t s_len = strlen (s);
+ size_t len = (((syntax_bits & PDS_SECONDS) && (dot = strchr (s, '.')))
+ ? (size_t) (dot - s)
+ : s_len);
+
+ if (len != 8 && len != 10 && len != 12)
+ return 1;
+
+ if (dot)
+ {
+ if (!(syntax_bits & PDS_SECONDS))
+ return 1;
+
+ if (s_len - len != 3)
+ return 1;
+ }
+
+ for (i = 0; i < len; i++)
+ if (!ISDIGIT (s[i]))
+ return 1;
+
+ len /= 2;
+ for (i = 0; i < len; i++)
+ pair[i] = 10 * (s[2*i] - '0') + s[2*i + 1] - '0';
+
+ p = pair;
+ if (syntax_bits & PDS_LEADING_YEAR)
+ {
+ if (year (tm, p, len - 4, syntax_bits))
+ return 1;
+ p += len - 4;
+ len = 4;
+ }
+
+ /* Handle 8 digits worth of `MMDDhhmm'. */
+ tm->tm_mon = *p++ - 1;
+ tm->tm_mday = *p++;
+ tm->tm_hour = *p++;
+ tm->tm_min = *p++;
+ len -= 4;
+
+ /* Handle any trailing year. */
+ if (syntax_bits & PDS_TRAILING_YEAR)
+ {
+ if (year (tm, p, len, syntax_bits))
+ return 1;
+ }
+
+ /* Handle seconds. */
+ if (!dot)
+ {
+ tm->tm_sec = 0;
+ }
+ else
+ {
+ int seconds;
+
+ ++dot;
+ if (!ISDIGIT (dot[0]) || !ISDIGIT (dot[1]))
+ return 1;
+ seconds = 10 * (dot[0] - '0') + dot[1] - '0';
+
+ tm->tm_sec = seconds;
+ }
+
+ return 0;
+}
+
+/* Parse a POSIX-style date, returning true if successful. */
+
+bool
+posixtime (time_t *p, const char *s, unsigned int syntax_bits)
+{
+ struct tm tm0
+#ifdef lint
+ /* Placate gcc-4's -Wuninitialized.
+ posix_time_parse fails to set all of tm0 only when it returns
+ nonzero (due to year() returning nonzero), and in that case,
+ this code doesn't use the tm0 at all. */
+ = { 0, }
+#endif
+ ;
+ struct tm tm1;
+ struct tm const *tm;
+ time_t t;
+
+ if (posix_time_parse (&tm0, s, syntax_bits))
+ return false;
+
+ tm1 = tm0;
+ tm1.tm_isdst = -1;
+ t = mktime (&tm1);
+
+ if (t != (time_t) -1)
+ tm = &tm1;
+ else
+ {
+ /* mktime returns -1 for errors, but -1 is also a valid time_t
+ value. Check whether an error really occurred. */
+ tm = localtime (&t);
+ if (! tm)
+ return false;
+ }
+
+ /* Reject dates like "September 31" and times like "25:61". */
+ if ((tm0.tm_year ^ tm->tm_year)
+ | (tm0.tm_mon ^ tm->tm_mon)
+ | (tm0.tm_mday ^ tm->tm_mday)
+ | (tm0.tm_hour ^ tm->tm_hour)
+ | (tm0.tm_min ^ tm->tm_min)
+ | (tm0.tm_sec ^ tm->tm_sec))
+ return false;
+
+ *p = t;
+ return true;
+}
+
+#ifdef TEST_POSIXTIME
+/*
+ Test mainly with syntax_bits == 13
+ (aka: (PDS_LEADING_YEAR | PDS_CENTURY | PDS_SECONDS))
+
+ This test data assumes Universal Time, e.g., TZ="UTC0".
+
+ This test data also assumes that time_t is signed and is at least
+ 39 bits wide, so that it can represent all years from 0000 through
+ 9999. A host with 32-bit signed time_t can represent only time
+ stamps in the range 1901-12-13 20:45:52 through 2038-01-18
+ 03:14:07 UTC, assuming POSIX time_t with no leap seconds, so test
+ cases outside this range will not work on such a host.
+
+ Also, the first two lines of test data assume that the current
+ year is 2002.
+
+BEGIN-DATA
+12131415.16 13 1039788916 Fri Dec 13 14:15:16 2002
+12131415.16 13 1039788916 Fri Dec 13 14:15:16 2002
+000001010000.00 13 -62167132800 Sun Jan 1 00:00:00 0000
+190112132045.52 13 -2147483648 Fri Dec 13 20:45:52 1901
+190112132045.53 13 -2147483647 Fri Dec 13 20:45:53 1901
+190112132046.52 13 -2147483588 Fri Dec 13 20:46:52 1901
+190112132145.52 13 -2147480048 Fri Dec 13 21:45:52 1901
+190112142045.52 13 -2147397248 Sat Dec 14 20:45:52 1901
+190201132045.52 13 -2144805248 Mon Jan 13 20:45:52 1902
+196912312359.59 13 -1 Wed Dec 31 23:59:59 1969
+197001010000.00 13 0 Thu Jan 1 00:00:00 1970
+197001010000.01 13 1 Thu Jan 1 00:00:01 1970
+197001010001.00 13 60 Thu Jan 1 00:01:00 1970
+197001010100.00 13 3600 Thu Jan 1 01:00:00 1970
+197001020000.00 13 86400 Fri Jan 2 00:00:00 1970
+197002010000.00 13 2678400 Sun Feb 1 00:00:00 1970
+197101010000.00 13 31536000 Fri Jan 1 00:00:00 1971
+197001000000.00 13 * *
+197000010000.00 13 * *
+197001010000.60 13 * *
+197001010060.00 13 * *
+197001012400.00 13 * *
+197001320000.00 13 * *
+197013010000.00 13 * *
+203801190314.06 13 2147483646 Tue Jan 19 03:14:06 2038
+203801190314.07 13 2147483647 Tue Jan 19 03:14:07 2038
+203801190314.08 13 2147483648 Tue Jan 19 03:14:08 2038
+999912312359.59 13 253402300799 Fri Dec 31 23:59:59 9999
+1112131415 13 1323785700 Tue Dec 13 14:15:00 2011
+1112131415.16 13 1323785716 Tue Dec 13 14:15:16 2011
+201112131415.16 13 1323785716 Tue Dec 13 14:15:16 2011
+191112131415.16 13 -1831974284 Wed Dec 13 14:15:16 1911
+203712131415.16 13 2144326516 Sun Dec 13 14:15:16 2037
+3712131415.16 13 2144326516 Sun Dec 13 14:15:16 2037
+6812131415.16 13 3122633716 Thu Dec 13 14:15:16 2068
+6912131415.16 13 -1590284 Sat Dec 13 14:15:16 1969
+7012131415.16 13 29945716 Sun Dec 13 14:15:16 1970
+1213141599 2 945094500 Mon Dec 13 14:15:00 1999
+1213141500 2 976716900 Wed Dec 13 14:15:00 2000
+END-DATA
+
+*/
+
+# define MAX_BUFF_LEN 1024
+
+int
+main (void)
+{
+ char buff[MAX_BUFF_LEN + 1];
+
+ buff[MAX_BUFF_LEN] = 0;
+ while (fgets (buff, MAX_BUFF_LEN, stdin) && buff[0])
+ {
+ char time_str[MAX_BUFF_LEN];
+ unsigned int syntax_bits;
+ time_t t;
+ if (sscanf (buff, "%s %u", time_str, &syntax_bits) != 2)
+ printf ("*\n");
+ else
+ {
+ printf ("%-15s %2u ", time_str, syntax_bits);
+ if (posixtime (&t, time_str, syntax_bits))
+ printf ("%12ld %s", (long int) t, ctime (&t));
+ else
+ printf ("%12s %s", "*", "*\n");
+ }
+ }
+ exit (0);
+
+}
+#endif
+
+/*
+Local Variables:
+compile-command: "gcc -DTEST_POSIXTIME -g -O -Wall -W posixtm.c"
+End:
+*/
diff --git a/lib/posixtm.h b/lib/posixtm.h
new file mode 100644
index 0000000..e91749d
--- /dev/null
+++ b/lib/posixtm.h
@@ -0,0 +1,37 @@
+/* Parse dates for touch and date.
+
+ Copyright (C) 1998, 2003, 2005, 2007 Free Software Foundation Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Yacc-based version written by Jim Kingdon and David MacKenzie.
+ Rewritten by Jim Meyering. */
+
+#ifndef POSIXTM_H_
+# define POSIXTM_H_
+
+# include <stdbool.h>
+# include <time.h>
+
+/* POSIX Date Syntax flags. */
+# define PDS_LEADING_YEAR 1
+# define PDS_TRAILING_YEAR 2
+# define PDS_CENTURY 4
+# define PDS_SECONDS 8
+# define PDS_PRE_2000 16
+
+bool posixtime (time_t *p, const char *s, unsigned int syntax_bits);
+
+#endif
diff --git a/lib/posixver.c b/lib/posixver.c
new file mode 100644
index 0000000..e7b4699
--- /dev/null
+++ b/lib/posixver.c
@@ -0,0 +1,56 @@
+/* Which POSIX version to conform to, for utilities.
+
+ Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "posixver.h"
+
+#include <limits.h>
+#include <stdlib.h>
+
+#include <unistd.h>
+#ifndef _POSIX2_VERSION
+# define _POSIX2_VERSION 0
+#endif
+
+#ifndef DEFAULT_POSIX2_VERSION
+# define DEFAULT_POSIX2_VERSION _POSIX2_VERSION
+#endif
+
+/* The POSIX version that utilities should conform to. The default is
+ specified by the system. */
+
+int
+posix2_version (void)
+{
+ long int v = DEFAULT_POSIX2_VERSION;
+ char const *s = getenv ("_POSIX2_VERSION");
+
+ if (s && *s)
+ {
+ char *e;
+ long int i = strtol (s, &e, 10);
+ if (! *e)
+ v = i;
+ }
+
+ return v < INT_MIN ? INT_MIN : v < INT_MAX ? v : INT_MAX;
+}
diff --git a/lib/posixver.h b/lib/posixver.h
new file mode 100644
index 0000000..b64f6a2
--- /dev/null
+++ b/lib/posixver.h
@@ -0,0 +1 @@
+int posix2_version (void);
diff --git a/lib/printf-args.c b/lib/printf-args.c
new file mode 100644
index 0000000..2259d53
--- /dev/null
+++ b/lib/printf-args.c
@@ -0,0 +1,141 @@
+/* Decomposed printf argument list.
+ Copyright (C) 1999, 2002-2003, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#include "printf-args.h"
+
+#ifdef STATIC
+STATIC
+#endif
+int
+printf_fetchargs (va_list args, arguments *a)
+{
+ size_t i;
+ argument *ap;
+
+ for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++)
+ switch (ap->type)
+ {
+ case TYPE_SCHAR:
+ ap->a.a_schar = va_arg (args, /*signed char*/ int);
+ break;
+ case TYPE_UCHAR:
+ ap->a.a_uchar = va_arg (args, /*unsigned char*/ int);
+ break;
+ case TYPE_SHORT:
+ ap->a.a_short = va_arg (args, /*short*/ int);
+ break;
+ case TYPE_USHORT:
+ ap->a.a_ushort = va_arg (args, /*unsigned short*/ int);
+ break;
+ case TYPE_INT:
+ ap->a.a_int = va_arg (args, int);
+ break;
+ case TYPE_UINT:
+ ap->a.a_uint = va_arg (args, unsigned int);
+ break;
+ case TYPE_LONGINT:
+ ap->a.a_longint = va_arg (args, long int);
+ break;
+ case TYPE_ULONGINT:
+ ap->a.a_ulongint = va_arg (args, unsigned long int);
+ break;
+#if HAVE_LONG_LONG_INT
+ case TYPE_LONGLONGINT:
+ ap->a.a_longlongint = va_arg (args, long long int);
+ break;
+ case TYPE_ULONGLONGINT:
+ ap->a.a_ulonglongint = va_arg (args, unsigned long long int);
+ break;
+#endif
+ case TYPE_DOUBLE:
+ ap->a.a_double = va_arg (args, double);
+ break;
+#if HAVE_LONG_DOUBLE
+ case TYPE_LONGDOUBLE:
+ ap->a.a_longdouble = va_arg (args, long double);
+ break;
+#endif
+ case TYPE_CHAR:
+ ap->a.a_char = va_arg (args, int);
+ break;
+#if HAVE_WINT_T
+ case TYPE_WIDE_CHAR:
+ /* Although ISO C 99 7.24.1.(2) says that wint_t is "unchanged by
+ default argument promotions", this is not the case in mingw32,
+ where wint_t is 'unsigned short'. */
+ ap->a.a_wide_char =
+ (sizeof (wint_t) < sizeof (int)
+ ? va_arg (args, int)
+ : va_arg (args, wint_t));
+ break;
+#endif
+ case TYPE_STRING:
+ ap->a.a_string = va_arg (args, const char *);
+ /* A null pointer is an invalid argument for "%s", but in practice
+ it occurs quite frequently in printf statements that produce
+ debug output. Use a fallback in this case. */
+ if (ap->a.a_string == NULL)
+ ap->a.a_string = "(NULL)";
+ break;
+#if HAVE_WCHAR_T
+ case TYPE_WIDE_STRING:
+ ap->a.a_wide_string = va_arg (args, const wchar_t *);
+ /* A null pointer is an invalid argument for "%ls", but in practice
+ it occurs quite frequently in printf statements that produce
+ debug output. Use a fallback in this case. */
+ if (ap->a.a_wide_string == NULL)
+ {
+ static const wchar_t wide_null_string[] =
+ {
+ (wchar_t)'(',
+ (wchar_t)'N', (wchar_t)'U', (wchar_t)'L', (wchar_t)'L',
+ (wchar_t)')',
+ (wchar_t)0
+ };
+ ap->a.a_wide_string = wide_null_string;
+ }
+ break;
+#endif
+ case TYPE_POINTER:
+ ap->a.a_pointer = va_arg (args, void *);
+ break;
+ case TYPE_COUNT_SCHAR_POINTER:
+ ap->a.a_count_schar_pointer = va_arg (args, signed char *);
+ break;
+ case TYPE_COUNT_SHORT_POINTER:
+ ap->a.a_count_short_pointer = va_arg (args, short *);
+ break;
+ case TYPE_COUNT_INT_POINTER:
+ ap->a.a_count_int_pointer = va_arg (args, int *);
+ break;
+ case TYPE_COUNT_LONGINT_POINTER:
+ ap->a.a_count_longint_pointer = va_arg (args, long int *);
+ break;
+#if HAVE_LONG_LONG_INT
+ case TYPE_COUNT_LONGLONGINT_POINTER:
+ ap->a.a_count_longlongint_pointer = va_arg (args, long long int *);
+ break;
+#endif
+ default:
+ /* Unknown type. */
+ return -1;
+ }
+ return 0;
+}
diff --git a/lib/printf-args.h b/lib/printf-args.h
new file mode 100644
index 0000000..74a18d9
--- /dev/null
+++ b/lib/printf-args.h
@@ -0,0 +1,136 @@
+/* Decomposed printf argument list.
+ Copyright (C) 1999, 2002-2003, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _PRINTF_ARGS_H
+#define _PRINTF_ARGS_H
+
+/* Get size_t. */
+#include <stddef.h>
+
+/* Get wchar_t. */
+#if HAVE_WCHAR_T
+# include <stddef.h>
+#endif
+
+/* Get wint_t. */
+#if HAVE_WINT_T
+# include <wchar.h>
+#endif
+
+/* Get va_list. */
+#include <stdarg.h>
+
+
+/* Argument types */
+typedef enum
+{
+ TYPE_NONE,
+ TYPE_SCHAR,
+ TYPE_UCHAR,
+ TYPE_SHORT,
+ TYPE_USHORT,
+ TYPE_INT,
+ TYPE_UINT,
+ TYPE_LONGINT,
+ TYPE_ULONGINT,
+#if HAVE_LONG_LONG_INT
+ TYPE_LONGLONGINT,
+ TYPE_ULONGLONGINT,
+#endif
+ TYPE_DOUBLE,
+#if HAVE_LONG_DOUBLE
+ TYPE_LONGDOUBLE,
+#endif
+ TYPE_CHAR,
+#if HAVE_WINT_T
+ TYPE_WIDE_CHAR,
+#endif
+ TYPE_STRING,
+#if HAVE_WCHAR_T
+ TYPE_WIDE_STRING,
+#endif
+ TYPE_POINTER,
+ TYPE_COUNT_SCHAR_POINTER,
+ TYPE_COUNT_SHORT_POINTER,
+ TYPE_COUNT_INT_POINTER,
+ TYPE_COUNT_LONGINT_POINTER
+#if HAVE_LONG_LONG_INT
+, TYPE_COUNT_LONGLONGINT_POINTER
+#endif
+} arg_type;
+
+/* Polymorphic argument */
+typedef struct
+{
+ arg_type type;
+ union
+ {
+ signed char a_schar;
+ unsigned char a_uchar;
+ short a_short;
+ unsigned short a_ushort;
+ int a_int;
+ unsigned int a_uint;
+ long int a_longint;
+ unsigned long int a_ulongint;
+#if HAVE_LONG_LONG_INT
+ long long int a_longlongint;
+ unsigned long long int a_ulonglongint;
+#endif
+ float a_float;
+ double a_double;
+#if HAVE_LONG_DOUBLE
+ long double a_longdouble;
+#endif
+ int a_char;
+#if HAVE_WINT_T
+ wint_t a_wide_char;
+#endif
+ const char* a_string;
+#if HAVE_WCHAR_T
+ const wchar_t* a_wide_string;
+#endif
+ void* a_pointer;
+ signed char * a_count_schar_pointer;
+ short * a_count_short_pointer;
+ int * a_count_int_pointer;
+ long int * a_count_longint_pointer;
+#if HAVE_LONG_LONG_INT
+ long long int * a_count_longlongint_pointer;
+#endif
+ }
+ a;
+}
+argument;
+
+typedef struct
+{
+ size_t count;
+ argument *arg;
+}
+arguments;
+
+
+/* Fetch the arguments, putting them into a. */
+#ifdef STATIC
+STATIC
+#else
+extern
+#endif
+int printf_fetchargs (va_list args, arguments *a);
+
+#endif /* _PRINTF_ARGS_H */
diff --git a/lib/printf-parse.c b/lib/printf-parse.c
new file mode 100644
index 0000000..9493403
--- /dev/null
+++ b/lib/printf-parse.c
@@ -0,0 +1,538 @@
+/* Formatted output to strings.
+ This file is intended to provide exactly the same functionality
+ as the version in gnulib, but without the need for the xsize module.
+
+ Copyright (C) 1999-2000, 2002-2003, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#if WIDE_CHAR_VERSION
+# include "wprintf-parse.h"
+#else
+# include "printf-parse.h"
+#endif
+
+/* Get size_t, NULL. */
+#include <stddef.h>
+
+/* Get intmax_t, SIZE_MAX. */
+#include <stdint.h>
+
+/* malloc(), realloc(), free(). */
+#include <stdlib.h>
+
+#if WIDE_CHAR_VERSION
+# define PRINTF_PARSE wprintf_parse
+# define CHAR_T wchar_t
+# define DIRECTIVE wchar_t_directive
+# define DIRECTIVES wchar_t_directives
+#else
+# define PRINTF_PARSE printf_parse
+# define CHAR_T char
+# define DIRECTIVE char_directive
+# define DIRECTIVES char_directives
+#endif
+
+#ifdef STATIC
+STATIC
+#endif
+int
+PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a)
+{
+ const CHAR_T *cp = format; /* pointer into format */
+ size_t arg_posn = 0; /* number of regular arguments consumed */
+ size_t d_allocated; /* allocated elements of d->dir */
+ size_t a_allocated; /* allocated elements of a->arg */
+ size_t max_width_length = 0;
+ size_t max_precision_length = 0;
+
+ d->count = 0;
+ d_allocated = 1;
+ d->dir = malloc (d_allocated * sizeof (DIRECTIVE));
+ if (d->dir == NULL)
+ /* Out of memory. */
+ return -1;
+
+ a->count = 0;
+ a_allocated = 0;
+ a->arg = NULL;
+
+#define REGISTER_ARG(_index_,_type_) \
+ { \
+ size_t n = (_index_); \
+ if (n >= a_allocated) \
+ { \
+ size_t memory_size; \
+ argument *memory; \
+ \
+ a_allocated *= 2; \
+ if (a_allocated <= n) \
+ a_allocated = n + 1; \
+ if (SIZE_MAX / sizeof (argument) < a_allocated) \
+ /* Overflow, would lead to out of memory. */ \
+ goto error; \
+ memory_size = a_allocated * sizeof (argument); \
+ memory = (a->arg \
+ ? realloc (a->arg, memory_size) \
+ : malloc (memory_size)); \
+ if (memory == NULL) \
+ /* Out of memory. */ \
+ goto error; \
+ a->arg = memory; \
+ } \
+ while (a->count <= n) \
+ a->arg[a->count++].type = TYPE_NONE; \
+ if (a->arg[n].type == TYPE_NONE) \
+ a->arg[n].type = (_type_); \
+ else if (a->arg[n].type != (_type_)) \
+ /* Ambiguous type for positional argument. */ \
+ goto error; \
+ }
+
+ while (*cp != '\0')
+ {
+ CHAR_T c = *cp++;
+ if (c == '%')
+ {
+ size_t arg_index = ARG_NONE;
+ DIRECTIVE *dp = &d->dir[d->count];/* pointer to next directive */
+
+ /* Initialize the next directive. */
+ dp->dir_start = cp - 1;
+ dp->flags = 0;
+ dp->width_start = NULL;
+ dp->width_end = NULL;
+ dp->width_arg_index = ARG_NONE;
+ dp->precision_start = NULL;
+ dp->precision_end = NULL;
+ dp->precision_arg_index = ARG_NONE;
+ dp->arg_index = ARG_NONE;
+
+ /* Test for positional argument. */
+ if (*cp >= '0' && *cp <= '9')
+ {
+ const CHAR_T *np;
+
+ for (np = cp; *np >= '0' && *np <= '9'; np++)
+ ;
+ if (*np == '$')
+ {
+ size_t n = 0;
+
+ for (np = cp; *np >= '0' && *np <= '9'; np++)
+ if (n < SIZE_MAX / 10)
+ n = 10 * n + (*np - '0');
+ else
+ /* n too large for memory. */
+ goto error;
+ if (n == 0)
+ /* Positional argument 0. */
+ goto error;
+ arg_index = n - 1;
+ cp = np + 1;
+ }
+ }
+
+ /* Read the flags. */
+ for (;;)
+ {
+ if (*cp == '\'')
+ {
+ dp->flags |= FLAG_GROUP;
+ cp++;
+ }
+ else if (*cp == '-')
+ {
+ dp->flags |= FLAG_LEFT;
+ cp++;
+ }
+ else if (*cp == '+')
+ {
+ dp->flags |= FLAG_SHOWSIGN;
+ cp++;
+ }
+ else if (*cp == ' ')
+ {
+ dp->flags |= FLAG_SPACE;
+ cp++;
+ }
+ else if (*cp == '#')
+ {
+ dp->flags |= FLAG_ALT;
+ cp++;
+ }
+ else if (*cp == '0')
+ {
+ dp->flags |= FLAG_ZERO;
+ cp++;
+ }
+ else
+ break;
+ }
+
+ /* Parse the field width. */
+ if (*cp == '*')
+ {
+ dp->width_start = cp;
+ cp++;
+ dp->width_end = cp;
+ if (max_width_length < 1)
+ max_width_length = 1;
+
+ /* Test for positional argument. */
+ if (*cp >= '0' && *cp <= '9')
+ {
+ const CHAR_T *np;
+
+ for (np = cp; *np >= '0' && *np <= '9'; np++)
+ ;
+ if (*np == '$')
+ {
+ size_t n = 0;
+
+ for (np = cp; *np >= '0' && *np <= '9'; np++)
+ if (n < SIZE_MAX / 10)
+ n = 10 * n + (*np - '0');
+ else
+ /* n too large for memory. */
+ goto error;
+ if (n == 0)
+ /* Positional argument 0. */
+ goto error;
+ dp->width_arg_index = n - 1;
+ cp = np + 1;
+ }
+ }
+ if (dp->width_arg_index == ARG_NONE)
+ {
+ dp->width_arg_index = arg_posn++;
+ if (dp->width_arg_index == ARG_NONE)
+ /* arg_posn wrapped around. */
+ goto error;
+ }
+ REGISTER_ARG (dp->width_arg_index, TYPE_INT);
+ }
+ else if (*cp >= '0' && *cp <= '9')
+ {
+ size_t width_length;
+
+ dp->width_start = cp;
+ for (; *cp >= '0' && *cp <= '9'; cp++)
+ ;
+ dp->width_end = cp;
+ width_length = dp->width_end - dp->width_start;
+ if (max_width_length < width_length)
+ max_width_length = width_length;
+ }
+
+ /* Parse the precision. */
+ if (*cp == '.')
+ {
+ cp++;
+ if (*cp == '*')
+ {
+ dp->precision_start = cp - 1;
+ cp++;
+ dp->precision_end = cp;
+ if (max_precision_length < 2)
+ max_precision_length = 2;
+
+ /* Test for positional argument. */
+ if (*cp >= '0' && *cp <= '9')
+ {
+ const CHAR_T *np;
+
+ for (np = cp; *np >= '0' && *np <= '9'; np++)
+ ;
+ if (*np == '$')
+ {
+ size_t n = 0;
+
+ for (np = cp; *np >= '0' && *np <= '9'; np++)
+ if (n < SIZE_MAX / 10)
+ n = 10 * n + (*np - '0');
+ else
+ /* n too large for memory. */
+ goto error;
+ if (n == 0)
+ /* Positional argument 0. */
+ goto error;
+ dp->precision_arg_index = n - 1;
+ cp = np + 1;
+ }
+ }
+ if (dp->precision_arg_index == ARG_NONE)
+ {
+ dp->precision_arg_index = arg_posn++;
+ if (dp->precision_arg_index == ARG_NONE)
+ /* arg_posn wrapped around. */
+ goto error;
+ }
+ REGISTER_ARG (dp->precision_arg_index, TYPE_INT);
+ }
+ else
+ {
+ size_t precision_length;
+
+ dp->precision_start = cp - 1;
+ for (; *cp >= '0' && *cp <= '9'; cp++)
+ ;
+ dp->precision_end = cp;
+ precision_length = dp->precision_end - dp->precision_start;
+ if (max_precision_length < precision_length)
+ max_precision_length = precision_length;
+ }
+ }
+
+ {
+ arg_type type;
+
+ /* Parse argument type/size specifiers. */
+ {
+ int flags = 0;
+
+ for (;;)
+ {
+ if (*cp == 'h')
+ {
+ flags |= (1 << (flags & 1));
+ cp++;
+ }
+ else if (*cp == 'L')
+ {
+ flags |= 4;
+ cp++;
+ }
+ else if (*cp == 'l')
+ {
+ flags += 8;
+ cp++;
+ }
+#if HAVE_INTMAX_T
+ else if (*cp == 'j')
+ {
+ if (sizeof (intmax_t) > sizeof (long))
+ {
+ /* intmax_t = long long */
+ flags += 16;
+ }
+ else if (sizeof (intmax_t) > sizeof (int))
+ {
+ /* intmax_t = long */
+ flags += 8;
+ }
+ cp++;
+ }
+#endif
+ else if (*cp == 'z' || *cp == 'Z')
+ {
+ /* 'z' is standardized in ISO C 99, but glibc uses 'Z'
+ because the warning facility in gcc-2.95.2 understands
+ only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784). */
+ if (sizeof (size_t) > sizeof (long))
+ {
+ /* size_t = long long */
+ flags += 16;
+ }
+ else if (sizeof (size_t) > sizeof (int))
+ {
+ /* size_t = long */
+ flags += 8;
+ }
+ cp++;
+ }
+ else if (*cp == 't')
+ {
+ if (sizeof (ptrdiff_t) > sizeof (long))
+ {
+ /* ptrdiff_t = long long */
+ flags += 16;
+ }
+ else if (sizeof (ptrdiff_t) > sizeof (int))
+ {
+ /* ptrdiff_t = long */
+ flags += 8;
+ }
+ cp++;
+ }
+ else
+ break;
+ }
+
+ /* Read the conversion character. */
+ c = *cp++;
+ switch (c)
+ {
+ case 'd': case 'i':
+#if HAVE_LONG_LONG_INT
+ /* If 'long long' exists and is larger than 'long': */
+ if (flags >= 16 || (flags & 4))
+ type = TYPE_LONGLONGINT;
+ else
+#endif
+ /* If 'long long' exists and is the same as 'long', we parse
+ "lld" into TYPE_LONGINT. */
+ if (flags >= 8)
+ type = TYPE_LONGINT;
+ else if (flags & 2)
+ type = TYPE_SCHAR;
+ else if (flags & 1)
+ type = TYPE_SHORT;
+ else
+ type = TYPE_INT;
+ break;
+ case 'o': case 'u': case 'x': case 'X':
+#if HAVE_LONG_LONG_INT
+ /* If 'long long' exists and is larger than 'long': */
+ if (flags >= 16 || (flags & 4))
+ type = TYPE_ULONGLONGINT;
+ else
+#endif
+ /* If 'unsigned long long' exists and is the same as
+ 'unsigned long', we parse "llu" into TYPE_ULONGINT. */
+ if (flags >= 8)
+ type = TYPE_ULONGINT;
+ else if (flags & 2)
+ type = TYPE_UCHAR;
+ else if (flags & 1)
+ type = TYPE_USHORT;
+ else
+ type = TYPE_UINT;
+ break;
+ case 'f': case 'F': case 'e': case 'E': case 'g': case 'G':
+ case 'a': case 'A':
+#if HAVE_LONG_DOUBLE
+ if (flags >= 16 || (flags & 4))
+ type = TYPE_LONGDOUBLE;
+ else
+#endif
+ type = TYPE_DOUBLE;
+ break;
+ case 'c':
+ if (flags >= 8)
+#if HAVE_WINT_T
+ type = TYPE_WIDE_CHAR;
+#else
+ goto error;
+#endif
+ else
+ type = TYPE_CHAR;
+ break;
+#if HAVE_WINT_T
+ case 'C':
+ type = TYPE_WIDE_CHAR;
+ c = 'c';
+ break;
+#endif
+ case 's':
+ if (flags >= 8)
+#if HAVE_WCHAR_T
+ type = TYPE_WIDE_STRING;
+#else
+ goto error;
+#endif
+ else
+ type = TYPE_STRING;
+ break;
+#if HAVE_WCHAR_T
+ case 'S':
+ type = TYPE_WIDE_STRING;
+ c = 's';
+ break;
+#endif
+ case 'p':
+ type = TYPE_POINTER;
+ break;
+ case 'n':
+#if HAVE_LONG_LONG_INT
+ /* If 'long long' exists and is larger than 'long': */
+ if (flags >= 16 || (flags & 4))
+ type = TYPE_COUNT_LONGLONGINT_POINTER;
+ else
+#endif
+ /* If 'long long' exists and is the same as 'long', we parse
+ "lln" into TYPE_COUNT_LONGINT_POINTER. */
+ if (flags >= 8)
+ type = TYPE_COUNT_LONGINT_POINTER;
+ else if (flags & 2)
+ type = TYPE_COUNT_SCHAR_POINTER;
+ else if (flags & 1)
+ type = TYPE_COUNT_SHORT_POINTER;
+ else
+ type = TYPE_COUNT_INT_POINTER;
+ break;
+ case '%':
+ type = TYPE_NONE;
+ break;
+ default:
+ /* Unknown conversion character. */
+ goto error;
+ }
+ }
+
+ if (type != TYPE_NONE)
+ {
+ dp->arg_index = arg_index;
+ if (dp->arg_index == ARG_NONE)
+ {
+ dp->arg_index = arg_posn++;
+ if (dp->arg_index == ARG_NONE)
+ /* arg_posn wrapped around. */
+ goto error;
+ }
+ REGISTER_ARG (dp->arg_index, type);
+ }
+ dp->conversion = c;
+ dp->dir_end = cp;
+ }
+
+ d->count++;
+ if (d->count >= d_allocated)
+ {
+ DIRECTIVE *memory;
+
+ if (SIZE_MAX / (2 * sizeof (DIRECTIVE)) < d_allocated)
+ /* Overflow, would lead to out of memory. */
+ goto error;
+ d_allocated *= 2;
+ memory = realloc (d->dir, d_allocated * sizeof (DIRECTIVE));
+ if (memory == NULL)
+ /* Out of memory. */
+ goto error;
+ d->dir = memory;
+ }
+ }
+ }
+ d->dir[d->count].dir_start = cp;
+
+ d->max_width_length = max_width_length;
+ d->max_precision_length = max_precision_length;
+ return 0;
+
+error:
+ if (a->arg)
+ free (a->arg);
+ if (d->dir)
+ free (d->dir);
+ return -1;
+}
+
+#undef DIRECTIVES
+#undef DIRECTIVE
+#undef CHAR_T
+#undef PRINTF_PARSE
diff --git a/lib/printf-parse.h b/lib/printf-parse.h
new file mode 100644
index 0000000..82a0d37
--- /dev/null
+++ b/lib/printf-parse.h
@@ -0,0 +1,74 @@
+/* Parse printf format string.
+ Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _PRINTF_PARSE_H
+#define _PRINTF_PARSE_H
+
+#include "printf-args.h"
+
+
+/* Flags */
+#define FLAG_GROUP 1 /* ' flag */
+#define FLAG_LEFT 2 /* - flag */
+#define FLAG_SHOWSIGN 4 /* + flag */
+#define FLAG_SPACE 8 /* space flag */
+#define FLAG_ALT 16 /* # flag */
+#define FLAG_ZERO 32
+
+/* arg_index value indicating that no argument is consumed. */
+#define ARG_NONE (~(size_t)0)
+
+/* A parsed directive. */
+typedef struct
+{
+ const char* dir_start;
+ const char* dir_end;
+ int flags;
+ const char* width_start;
+ const char* width_end;
+ size_t width_arg_index;
+ const char* precision_start;
+ const char* precision_end;
+ size_t precision_arg_index;
+ char conversion; /* d i o u x X f e E g G c s p n U % but not C S */
+ size_t arg_index;
+}
+char_directive;
+
+/* A parsed format string. */
+typedef struct
+{
+ size_t count;
+ char_directive *dir;
+ size_t max_width_length;
+ size_t max_precision_length;
+}
+char_directives;
+
+
+/* Parses the format string. Fills in the number N of directives, and fills
+ in directives[0], ..., directives[N-1], and sets directives[N].dir_start
+ to the end of the format string. Also fills in the arg_type fields of the
+ arguments and the needed count of arguments. */
+#ifdef STATIC
+STATIC
+#else
+extern
+#endif
+int printf_parse (const char *format, char_directives *d, arguments *a);
+
+#endif /* _PRINTF_PARSE_H */
diff --git a/lib/putenv.c b/lib/putenv.c
new file mode 100644
index 0000000..0602e44
--- /dev/null
+++ b/lib/putenv.c
@@ -0,0 +1,138 @@
+/* Copyright (C) 1991, 1994, 1997, 1998, 2000, 2003, 2004, 2005, 2006, 2007
+ Free Software Foundation, Inc.
+
+ NOTE: The canonical source of this file is maintained with the GNU C
+ Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* undef putenv here, because some (e.g., Solaris 10) declare putenv in
+ with a non-const argument. That would conflict with the declaration of
+ rpl_putenv below (due to the #define putenv rpl_putenv from config.h). */
+#undef putenv
+int rpl_putenv (char const *);
+
+#include <stddef.h>
+
+/* Include errno.h *after* sys/types.h to work around header problems
+ on AIX 3.2.5. */
+#include <errno.h>
+#ifndef __set_errno
+# define __set_errno(ev) ((errno) = (ev))
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#if HAVE_GNU_LD
+# define environ __environ
+#else
+extern char **environ;
+#endif
+
+#if _LIBC
+/* This lock protects against simultaneous modifications of `environ'. */
+# include <bits/libc-lock.h>
+__libc_lock_define_initialized (static, envlock)
+# define LOCK __libc_lock_lock (envlock)
+# define UNLOCK __libc_lock_unlock (envlock)
+#else
+# define LOCK
+# define UNLOCK
+#endif
+
+static int
+_unsetenv (const char *name)
+{
+ size_t len;
+ char **ep;
+
+ if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ len = strlen (name);
+
+ LOCK;
+
+ ep = environ;
+ while (*ep != NULL)
+ if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
+ {
+ /* Found it. Remove this pointer by moving later ones back. */
+ char **dp = ep;
+
+ do
+ dp[0] = dp[1];
+ while (*dp++);
+ /* Continue the loop in case NAME appears again. */
+ }
+ else
+ ++ep;
+
+ UNLOCK;
+
+ return 0;
+}
+
+
+/* Put STRING, which is of the form "NAME=VALUE", in the environment.
+ If STRING contains no `=', then remove STRING from the environment. */
+int
+rpl_putenv (const char *string)
+{
+ const char *const name_end = strchr (string, '=');
+ register size_t size;
+ register char **ep;
+
+ if (name_end == NULL)
+ {
+ /* Remove the variable from the environment. */
+ return _unsetenv (string);
+ }
+
+ size = 0;
+ for (ep = environ; *ep != NULL; ++ep)
+ if (!strncmp (*ep, string, name_end - string) &&
+ (*ep)[name_end - string] == '=')
+ break;
+ else
+ ++size;
+
+ if (*ep == NULL)
+ {
+ static char **last_environ = NULL;
+ char **new_environ = (char **) malloc ((size + 2) * sizeof (char *));
+ if (new_environ == NULL)
+ return -1;
+ (void) memcpy ((void *) new_environ, (void *) environ,
+ size * sizeof (char *));
+ new_environ[size] = (char *) string;
+ new_environ[size + 1] = NULL;
+ if (last_environ != NULL)
+ free (last_environ);
+ last_environ = new_environ;
+ environ = new_environ;
+ }
+ else
+ *ep = (char *) string;
+
+ return 0;
+}
diff --git a/lib/quote.c b/lib/quote.c
new file mode 100644
index 0000000..119be72
--- /dev/null
+++ b/lib/quote.c
@@ -0,0 +1,41 @@
+/* quote.c - quote arguments for output
+
+ Copyright (C) 1998, 1999, 2000, 2001, 2003, 2005, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert <eggert@twinsun.com> */
+
+#include <config.h>
+
+#include "quotearg.h"
+#include "quote.h"
+
+/* Return an unambiguous printable representation of NAME,
+ allocated in slot N, suitable for diagnostics. */
+char const *
+quote_n (int n, char const *name)
+{
+ return quotearg_n_style (n, locale_quoting_style, name);
+}
+
+/* Return an unambiguous printable representation of NAME,
+ suitable for diagnostics. */
+char const *
+quote (char const *name)
+{
+ return quote_n (0, name);
+}
diff --git a/lib/quote.h b/lib/quote.h
new file mode 100644
index 0000000..5400ead
--- /dev/null
+++ b/lib/quote.h
@@ -0,0 +1,22 @@
+/* quote.h - prototypes for quote.c
+
+ Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+
+char const *quote_n (int n, char const *name);
+char const *quote (char const *name);
diff --git a/lib/quotearg.c b/lib/quotearg.c
new file mode 100644
index 0000000..f7f326a
--- /dev/null
+++ b/lib/quotearg.c
@@ -0,0 +1,697 @@
+/* quotearg.c - quote arguments for output
+
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert <eggert@twinsun.com> */
+
+#include <config.h>
+
+#include "quotearg.h"
+
+#include "xalloc.h"
+
+#include <ctype.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+#include <wctype.h>
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
+#if !HAVE_MBRTOWC
+/* Disable multibyte processing entirely. Since MB_CUR_MAX is 1, the
+ other macros are defined only for documentation and to satisfy C
+ syntax. */
+# undef MB_CUR_MAX
+# define MB_CUR_MAX 1
+# undef mbstate_t
+# define mbstate_t int
+# define mbrtowc(pwc, s, n, ps) ((*(pwc) = *(s)) != 0)
+# define iswprint(wc) isprint ((unsigned char) (wc))
+# undef HAVE_MBSINIT
+#endif
+
+#if !defined mbsinit && !HAVE_MBSINIT
+# define mbsinit(ps) 1
+#endif
+
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+
+#define INT_BITS (sizeof (int) * CHAR_BIT)
+
+struct quoting_options
+{
+ /* Basic quoting style. */
+ enum quoting_style style;
+
+ /* Quote the characters indicated by this bit vector even if the
+ quoting style would not normally require them to be quoted. */
+ unsigned int quote_these_too[(UCHAR_MAX / INT_BITS) + 1];
+};
+
+/* Names of quoting styles. */
+char const *const quoting_style_args[] =
+{
+ "literal",
+ "shell",
+ "shell-always",
+ "c",
+ "escape",
+ "locale",
+ "clocale",
+ 0
+};
+
+/* Correspondences to quoting style names. */
+enum quoting_style const quoting_style_vals[] =
+{
+ literal_quoting_style,
+ shell_quoting_style,
+ shell_always_quoting_style,
+ c_quoting_style,
+ escape_quoting_style,
+ locale_quoting_style,
+ clocale_quoting_style
+};
+
+/* The default quoting options. */
+static struct quoting_options default_quoting_options;
+
+/* Allocate a new set of quoting options, with contents initially identical
+ to O if O is not null, or to the default if O is null.
+ It is the caller's responsibility to free the result. */
+struct quoting_options *
+clone_quoting_options (struct quoting_options *o)
+{
+ int e = errno;
+ struct quoting_options *p = xmemdup (o ? o : &default_quoting_options,
+ sizeof *o);
+ errno = e;
+ return p;
+}
+
+/* Get the value of O's quoting style. If O is null, use the default. */
+enum quoting_style
+get_quoting_style (struct quoting_options *o)
+{
+ return (o ? o : &default_quoting_options)->style;
+}
+
+/* In O (or in the default if O is null),
+ set the value of the quoting style to S. */
+void
+set_quoting_style (struct quoting_options *o, enum quoting_style s)
+{
+ (o ? o : &default_quoting_options)->style = s;
+}
+
+/* In O (or in the default if O is null),
+ set the value of the quoting options for character C to I.
+ Return the old value. Currently, the only values defined for I are
+ 0 (the default) and 1 (which means to quote the character even if
+ it would not otherwise be quoted). */
+int
+set_char_quoting (struct quoting_options *o, char c, int i)
+{
+ unsigned char uc = c;
+ unsigned int *p =
+ (o ? o : &default_quoting_options)->quote_these_too + uc / INT_BITS;
+ int shift = uc % INT_BITS;
+ int r = (*p >> shift) & 1;
+ *p ^= ((i & 1) ^ r) << shift;
+ return r;
+}
+
+/* MSGID approximates a quotation mark. Return its translation if it
+ has one; otherwise, return either it or "\"", depending on S. */
+static char const *
+gettext_quote (char const *msgid, enum quoting_style s)
+{
+ char const *translation = _(msgid);
+ if (translation == msgid && s == clocale_quoting_style)
+ translation = "\"";
+ return translation;
+}
+
+/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of
+ argument ARG (of size ARGSIZE), using QUOTING_STYLE and the
+ non-quoting-style part of O to control quoting.
+ Terminate the output with a null character, and return the written
+ size of the output, not counting the terminating null.
+ If BUFFERSIZE is too small to store the output string, return the
+ value that would have been returned had BUFFERSIZE been large enough.
+ If ARGSIZE is SIZE_MAX, use the string length of the argument for ARGSIZE.
+
+ This function acts like quotearg_buffer (BUFFER, BUFFERSIZE, ARG,
+ ARGSIZE, O), except it uses QUOTING_STYLE instead of the quoting
+ style specified by O, and O may not be null. */
+
+static size_t
+quotearg_buffer_restyled (char *buffer, size_t buffersize,
+ char const *arg, size_t argsize,
+ enum quoting_style quoting_style,
+ struct quoting_options const *o)
+{
+ size_t i;
+ size_t len = 0;
+ char const *quote_string = 0;
+ size_t quote_string_len = 0;
+ bool backslash_escapes = false;
+ bool unibyte_locale = MB_CUR_MAX == 1;
+
+#define STORE(c) \
+ do \
+ { \
+ if (len < buffersize) \
+ buffer[len] = (c); \
+ len++; \
+ } \
+ while (0)
+
+ switch (quoting_style)
+ {
+ case c_quoting_style:
+ STORE ('"');
+ backslash_escapes = true;
+ quote_string = "\"";
+ quote_string_len = 1;
+ break;
+
+ case escape_quoting_style:
+ backslash_escapes = true;
+ break;
+
+ case locale_quoting_style:
+ case clocale_quoting_style:
+ {
+ /* TRANSLATORS:
+ Get translations for open and closing quotation marks.
+
+ The message catalog should translate "`" to a left
+ quotation mark suitable for the locale, and similarly for
+ "'". If the catalog has no translation,
+ locale_quoting_style quotes `like this', and
+ clocale_quoting_style quotes "like this".
+
+ For example, an American English Unicode locale should
+ translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+ should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+ MARK). A British English Unicode locale should instead
+ translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+ U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+
+ If you don't know what to put here, please see
+ <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+ and use glyphs suitable for your language. */
+
+ char const *left = gettext_quote (N_("`"), quoting_style);
+ char const *right = gettext_quote (N_("'"), quoting_style);
+ for (quote_string = left; *quote_string; quote_string++)
+ STORE (*quote_string);
+ backslash_escapes = true;
+ quote_string = right;
+ quote_string_len = strlen (quote_string);
+ }
+ break;
+
+ case shell_always_quoting_style:
+ STORE ('\'');
+ quote_string = "'";
+ quote_string_len = 1;
+ break;
+
+ default:
+ break;
+ }
+
+ for (i = 0; ! (argsize == SIZE_MAX ? arg[i] == '\0' : i == argsize); i++)
+ {
+ unsigned char c;
+ unsigned char esc;
+
+ if (backslash_escapes
+ && quote_string_len
+ && i + quote_string_len <= argsize
+ && memcmp (arg + i, quote_string, quote_string_len) == 0)
+ STORE ('\\');
+
+ c = arg[i];
+ switch (c)
+ {
+ case '\0':
+ if (backslash_escapes)
+ {
+ STORE ('\\');
+ STORE ('0');
+ STORE ('0');
+ c = '0';
+ }
+ break;
+
+ case '?':
+ switch (quoting_style)
+ {
+ case shell_quoting_style:
+ goto use_shell_always_quoting_style;
+
+ case c_quoting_style:
+ if (i + 2 < argsize && arg[i + 1] == '?')
+ switch (arg[i + 2])
+ {
+ case '!': case '\'':
+ case '(': case ')': case '-': case '/':
+ case '<': case '=': case '>':
+ /* Escape the second '?' in what would otherwise be
+ a trigraph. */
+ c = arg[i + 2];
+ i += 2;
+ STORE ('?');
+ STORE ('\\');
+ STORE ('?');
+ break;
+
+ default:
+ break;
+ }
+ break;
+
+ default:
+ break;
+ }
+ break;
+
+ case '\a': esc = 'a'; goto c_escape;
+ case '\b': esc = 'b'; goto c_escape;
+ case '\f': esc = 'f'; goto c_escape;
+ case '\n': esc = 'n'; goto c_and_shell_escape;
+ case '\r': esc = 'r'; goto c_and_shell_escape;
+ case '\t': esc = 't'; goto c_and_shell_escape;
+ case '\v': esc = 'v'; goto c_escape;
+ case '\\': esc = c; goto c_and_shell_escape;
+
+ c_and_shell_escape:
+ if (quoting_style == shell_quoting_style)
+ goto use_shell_always_quoting_style;
+ c_escape:
+ if (backslash_escapes)
+ {
+ c = esc;
+ goto store_escape;
+ }
+ break;
+
+ case '{': case '}': /* sometimes special if isolated */
+ if (! (argsize == SIZE_MAX ? arg[1] == '\0' : argsize == 1))
+ break;
+ /* Fall through. */
+ case '#': case '~':
+ if (i != 0)
+ break;
+ /* Fall through. */
+ case ' ':
+ case '!': /* special in bash */
+ case '"': case '$': case '&':
+ case '(': case ')': case '*': case ';':
+ case '<':
+ case '=': /* sometimes special in 0th or (with "set -k") later args */
+ case '>': case '[':
+ case '^': /* special in old /bin/sh, e.g. SunOS 4.1.4 */
+ case '`': case '|':
+ /* A shell special character. In theory, '$' and '`' could
+ be the first bytes of multibyte characters, which means
+ we should check them with mbrtowc, but in practice this
+ doesn't happen so it's not worth worrying about. */
+ if (quoting_style == shell_quoting_style)
+ goto use_shell_always_quoting_style;
+ break;
+
+ case '\'':
+ switch (quoting_style)
+ {
+ case shell_quoting_style:
+ goto use_shell_always_quoting_style;
+
+ case shell_always_quoting_style:
+ STORE ('\'');
+ STORE ('\\');
+ STORE ('\'');
+ break;
+
+ default:
+ break;
+ }
+ break;
+
+ case '%': case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9': case ':':
+ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+ case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
+ case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
+ case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
+ case 'Y': case 'Z': case ']': case '_': case 'a': case 'b':
+ case 'c': case 'd': case 'e': case 'f': case 'g': case 'h':
+ case 'i': case 'j': case 'k': case 'l': case 'm': case 'n':
+ case 'o': case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y': case 'z':
+ /* These characters don't cause problems, no matter what the
+ quoting style is. They cannot start multibyte sequences. */
+ break;
+
+ default:
+ /* If we have a multibyte sequence, copy it until we reach
+ its end, find an error, or come back to the initial shift
+ state. For C-like styles, if the sequence has
+ unprintable characters, escape the whole sequence, since
+ we can't easily escape single characters within it. */
+ {
+ /* Length of multibyte sequence found so far. */
+ size_t m;
+
+ bool printable;
+
+ if (unibyte_locale)
+ {
+ m = 1;
+ printable = isprint (c) != 0;
+ }
+ else
+ {
+ mbstate_t mbstate;
+ memset (&mbstate, 0, sizeof mbstate);
+
+ m = 0;
+ printable = true;
+ if (argsize == SIZE_MAX)
+ argsize = strlen (arg);
+
+ do
+ {
+ wchar_t w;
+ size_t bytes = mbrtowc (&w, &arg[i + m],
+ argsize - (i + m), &mbstate);
+ if (bytes == 0)
+ break;
+ else if (bytes == (size_t) -1)
+ {
+ printable = false;
+ break;
+ }
+ else if (bytes == (size_t) -2)
+ {
+ printable = false;
+ while (i + m < argsize && arg[i + m])
+ m++;
+ break;
+ }
+ else
+ {
+ /* Work around a bug with older shells that "see" a '\'
+ that is really the 2nd byte of a multibyte character.
+ In practice the problem is limited to ASCII
+ chars >= '@' that are shell special chars. */
+ if ('[' == 0x5b && quoting_style == shell_quoting_style)
+ {
+ size_t j;
+ for (j = 1; j < bytes; j++)
+ switch (arg[i + m + j])
+ {
+ case '[': case '\\': case '^':
+ case '`': case '|':
+ goto use_shell_always_quoting_style;
+
+ default:
+ break;
+ }
+ }
+
+ if (! iswprint (w))
+ printable = false;
+ m += bytes;
+ }
+ }
+ while (! mbsinit (&mbstate));
+ }
+
+ if (1 < m || (backslash_escapes && ! printable))
+ {
+ /* Output a multibyte sequence, or an escaped
+ unprintable unibyte character. */
+ size_t ilim = i + m;
+
+ for (;;)
+ {
+ if (backslash_escapes && ! printable)
+ {
+ STORE ('\\');
+ STORE ('0' + (c >> 6));
+ STORE ('0' + ((c >> 3) & 7));
+ c = '0' + (c & 7);
+ }
+ if (ilim <= i + 1)
+ break;
+ STORE (c);
+ c = arg[++i];
+ }
+
+ goto store_c;
+ }
+ }
+ }
+
+ if (! (backslash_escapes
+ && o->quote_these_too[c / INT_BITS] & (1 << (c % INT_BITS))))
+ goto store_c;
+
+ store_escape:
+ STORE ('\\');
+
+ store_c:
+ STORE (c);
+ }
+
+ if (i == 0 && quoting_style == shell_quoting_style)
+ goto use_shell_always_quoting_style;
+
+ if (quote_string)
+ for (; *quote_string; quote_string++)
+ STORE (*quote_string);
+
+ if (len < buffersize)
+ buffer[len] = '\0';
+ return len;
+
+ use_shell_always_quoting_style:
+ return quotearg_buffer_restyled (buffer, buffersize, arg, argsize,
+ shell_always_quoting_style, o);
+}
+
+/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of
+ argument ARG (of size ARGSIZE), using O to control quoting.
+ If O is null, use the default.
+ Terminate the output with a null character, and return the written
+ size of the output, not counting the terminating null.
+ If BUFFERSIZE is too small to store the output string, return the
+ value that would have been returned had BUFFERSIZE been large enough.
+ If ARGSIZE is SIZE_MAX, use the string length of the argument for
+ ARGSIZE. */
+size_t
+quotearg_buffer (char *buffer, size_t buffersize,
+ char const *arg, size_t argsize,
+ struct quoting_options const *o)
+{
+ struct quoting_options const *p = o ? o : &default_quoting_options;
+ int e = errno;
+ size_t r = quotearg_buffer_restyled (buffer, buffersize, arg, argsize,
+ p->style, p);
+ errno = e;
+ return r;
+}
+
+/* Like quotearg_buffer (..., ARG, ARGSIZE, O), except return newly
+ allocated storage containing the quoted string. */
+char *
+quotearg_alloc (char const *arg, size_t argsize,
+ struct quoting_options const *o)
+{
+ int e = errno;
+ size_t bufsize = quotearg_buffer (0, 0, arg, argsize, o) + 1;
+ char *buf = xcharalloc (bufsize);
+ quotearg_buffer (buf, bufsize, arg, argsize, o);
+ errno = e;
+ return buf;
+}
+
+/* A storage slot with size and pointer to a value. */
+struct slotvec
+{
+ size_t size;
+ char *val;
+};
+
+/* Preallocate a slot 0 buffer, so that the caller can always quote
+ one small component of a "memory exhausted" message in slot 0. */
+static char slot0[256];
+static unsigned int nslots = 1;
+static struct slotvec slotvec0 = {sizeof slot0, slot0};
+static struct slotvec *slotvec = &slotvec0;
+
+void
+quotearg_free (void)
+{
+ struct slotvec *sv = slotvec;
+ unsigned int i;
+ for (i = 1; i < nslots; i++)
+ free (sv[i].val);
+ if (sv[0].val != slot0)
+ {
+ free (sv[0].val);
+ slotvec0.size = sizeof slot0;
+ slotvec0.val = slot0;
+ }
+ if (sv != &slotvec0)
+ {
+ free (sv);
+ slotvec = &slotvec0;
+ }
+ nslots = 1;
+}
+
+/* Use storage slot N to return a quoted version of argument ARG.
+ ARG is of size ARGSIZE, but if that is SIZE_MAX, ARG is a
+ null-terminated string.
+ OPTIONS specifies the quoting options.
+ The returned value points to static storage that can be
+ reused by the next call to this function with the same value of N.
+ N must be nonnegative. N is deliberately declared with type "int"
+ to allow for future extensions (using negative values). */
+static char *
+quotearg_n_options (int n, char const *arg, size_t argsize,
+ struct quoting_options const *options)
+{
+ int e = errno;
+
+ unsigned int n0 = n;
+ struct slotvec *sv = slotvec;
+
+ if (n < 0)
+ abort ();
+
+ if (nslots <= n0)
+ {
+ /* FIXME: technically, the type of n1 should be `unsigned int',
+ but that evokes an unsuppressible warning from gcc-4.0.1 and
+ older. If gcc ever provides an option to suppress that warning,
+ revert to the original type, so that the test in xalloc_oversized
+ is once again performed only at compile time. */
+ size_t n1 = n0 + 1;
+ bool preallocated = (sv == &slotvec0);
+
+ if (xalloc_oversized (n1, sizeof *sv))
+ xalloc_die ();
+
+ slotvec = sv = xrealloc (preallocated ? NULL : sv, n1 * sizeof *sv);
+ if (preallocated)
+ *sv = slotvec0;
+ memset (sv + nslots, 0, (n1 - nslots) * sizeof *sv);
+ nslots = n1;
+ }
+
+ {
+ size_t size = sv[n].size;
+ char *val = sv[n].val;
+ size_t qsize = quotearg_buffer (val, size, arg, argsize, options);
+
+ if (size <= qsize)
+ {
+ sv[n].size = size = qsize + 1;
+ if (val != slot0)
+ free (val);
+ sv[n].val = val = xcharalloc (size);
+ quotearg_buffer (val, size, arg, argsize, options);
+ }
+
+ errno = e;
+ return val;
+ }
+}
+
+char *
+quotearg_n (int n, char const *arg)
+{
+ return quotearg_n_options (n, arg, SIZE_MAX, &default_quoting_options);
+}
+
+char *
+quotearg (char const *arg)
+{
+ return quotearg_n (0, arg);
+}
+
+/* Return quoting options for STYLE, with no extra quoting. */
+static struct quoting_options
+quoting_options_from_style (enum quoting_style style)
+{
+ struct quoting_options o;
+ o.style = style;
+ memset (o.quote_these_too, 0, sizeof o.quote_these_too);
+ return o;
+}
+
+char *
+quotearg_n_style (int n, enum quoting_style s, char const *arg)
+{
+ struct quoting_options const o = quoting_options_from_style (s);
+ return quotearg_n_options (n, arg, SIZE_MAX, &o);
+}
+
+char *
+quotearg_n_style_mem (int n, enum quoting_style s,
+ char const *arg, size_t argsize)
+{
+ struct quoting_options const o = quoting_options_from_style (s);
+ return quotearg_n_options (n, arg, argsize, &o);
+}
+
+char *
+quotearg_style (enum quoting_style s, char const *arg)
+{
+ return quotearg_n_style (0, s, arg);
+}
+
+char *
+quotearg_char (char const *arg, char ch)
+{
+ struct quoting_options options;
+ options = default_quoting_options;
+ set_char_quoting (&options, ch, 1);
+ return quotearg_n_options (0, arg, SIZE_MAX, &options);
+}
+
+char *
+quotearg_colon (char const *arg)
+{
+ return quotearg_char (arg, ':');
+}
diff --git a/lib/quotearg.h b/lib/quotearg.h
new file mode 100644
index 0000000..4887df3
--- /dev/null
+++ b/lib/quotearg.h
@@ -0,0 +1,140 @@
+/* quotearg.h - quote arguments for output
+
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert <eggert@twinsun.com> */
+
+#ifndef QUOTEARG_H_
+# define QUOTEARG_H_ 1
+
+# include <stddef.h>
+
+/* Basic quoting styles. */
+enum quoting_style
+ {
+ /* Output names as-is (ls --quoting-style=literal). */
+ literal_quoting_style,
+
+ /* Quote names for the shell if they contain shell metacharacters
+ or would cause ambiguous output (ls --quoting-style=shell). */
+ shell_quoting_style,
+
+ /* Quote names for the shell, even if they would normally not
+ require quoting (ls --quoting-style=shell-always). */
+ shell_always_quoting_style,
+
+ /* Quote names as for a C language string (ls --quoting-style=c). */
+ c_quoting_style,
+
+ /* Like c_quoting_style except omit the surrounding double-quote
+ characters (ls --quoting-style=escape). */
+ escape_quoting_style,
+
+ /* Like clocale_quoting_style, but quote `like this' instead of
+ "like this" in the default C locale (ls --quoting-style=locale). */
+ locale_quoting_style,
+
+ /* Like c_quoting_style except use quotation marks appropriate for
+ the locale (ls --quoting-style=clocale). */
+ clocale_quoting_style
+ };
+
+/* For now, --quoting-style=literal is the default, but this may change. */
+# ifndef DEFAULT_QUOTING_STYLE
+# define DEFAULT_QUOTING_STYLE literal_quoting_style
+# endif
+
+/* Names of quoting styles and their corresponding values. */
+extern char const *const quoting_style_args[];
+extern enum quoting_style const quoting_style_vals[];
+
+struct quoting_options;
+
+/* The functions listed below set and use a hidden variable
+ that contains the default quoting style options. */
+
+/* Allocate a new set of quoting options, with contents initially identical
+ to O if O is not null, or to the default if O is null.
+ It is the caller's responsibility to free the result. */
+struct quoting_options *clone_quoting_options (struct quoting_options *o);
+
+/* Get the value of O's quoting style. If O is null, use the default. */
+enum quoting_style get_quoting_style (struct quoting_options *o);
+
+/* In O (or in the default if O is null),
+ set the value of the quoting style to S. */
+void set_quoting_style (struct quoting_options *o, enum quoting_style s);
+
+/* In O (or in the default if O is null),
+ set the value of the quoting options for character C to I.
+ Return the old value. Currently, the only values defined for I are
+ 0 (the default) and 1 (which means to quote the character even if
+ it would not otherwise be quoted). */
+int set_char_quoting (struct quoting_options *o, char c, int i);
+
+/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of
+ argument ARG (of size ARGSIZE), using O to control quoting.
+ If O is null, use the default.
+ Terminate the output with a null character, and return the written
+ size of the output, not counting the terminating null.
+ If BUFFERSIZE is too small to store the output string, return the
+ value that would have been returned had BUFFERSIZE been large enough.
+ If ARGSIZE is -1, use the string length of the argument for ARGSIZE. */
+size_t quotearg_buffer (char *buffer, size_t buffersize,
+ char const *arg, size_t argsize,
+ struct quoting_options const *o);
+
+/* Like quotearg_buffer, except return the result in a newly allocated
+ buffer. It is the caller's responsibility to free the result. */
+char *quotearg_alloc (char const *arg, size_t argsize,
+ struct quoting_options const *o);
+
+/* Use storage slot N to return a quoted version of the string ARG.
+ Use the default quoting options.
+ The returned value points to static storage that can be
+ reused by the next call to this function with the same value of N.
+ N must be nonnegative. */
+char *quotearg_n (int n, char const *arg);
+
+/* Equivalent to quotearg_n (0, ARG). */
+char *quotearg (char const *arg);
+
+/* Use style S and storage slot N to return a quoted version of the string ARG.
+ This is like quotearg_n (N, ARG), except that it uses S with no other
+ options to specify the quoting method. */
+char *quotearg_n_style (int n, enum quoting_style s, char const *arg);
+
+/* Use style S and storage slot N to return a quoted version of the
+ argument ARG of size ARGSIZE. This is like quotearg_n_style
+ (N, S, ARG), except it can quote null bytes. */
+char *quotearg_n_style_mem (int n, enum quoting_style s,
+ char const *arg, size_t argsize);
+
+/* Equivalent to quotearg_n_style (0, S, ARG). */
+char *quotearg_style (enum quoting_style s, char const *arg);
+
+/* Like quotearg (ARG), except also quote any instances of CH. */
+char *quotearg_char (char const *arg, char ch);
+
+/* Equivalent to quotearg_char (ARG, ':'). */
+char *quotearg_colon (char const *arg);
+
+/* Free any dynamically allocated memory. */
+void quotearg_free (void);
+
+#endif /* !QUOTEARG_H_ */
diff --git a/lib/raise.c b/lib/raise.c
new file mode 100644
index 0000000..98a97da
--- /dev/null
+++ b/lib/raise.c
@@ -0,0 +1,31 @@
+/* Provide a non-threads replacement for the POSIX raise function.
+
+ Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+
+#include <sys/types.h>
+#include <signal.h>
+#include <unistd.h>
+
+int
+raise (int sig)
+{
+ return kill (getpid (), sig);
+}
diff --git a/lib/rand-isaac.c b/lib/rand-isaac.c
new file mode 100644
index 0000000..cfdc643
--- /dev/null
+++ b/lib/rand-isaac.c
@@ -0,0 +1,301 @@
+/* Bob Jenkins's cryptographic random number generator, ISAAC.
+
+ Copyright (C) 1999-2006 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 1999 Colin Plumb.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written by Colin Plumb. */
+
+/*
+ * --------------------------------------------------------------------
+ * We need a source of random numbers for some data.
+ * Cryptographically secure is desirable, but it's not life-or-death
+ * so I can be a little bit experimental in the choice of RNGs here.
+ *
+ * This generator is based somewhat on RC4, but has analysis
+ * <http://burtleburtle.net/bob/rand/isaacafa.html>
+ * pointing to it actually being better. I like it because it's nice
+ * and fast, and because the author did good work analyzing it.
+ * --------------------------------------------------------------------
+ */
+#include <config.h>
+
+#include "rand-isaac.h"
+
+#include <string.h>
+#include <unistd.h>
+
+#include "gethrxtime.h"
+
+
+/* This index operation is more efficient on many processors */
+#define ind(mm, x) \
+ (* (uint32_t *) ((char *) (mm) \
+ + ((x) & (ISAAC_WORDS - 1) * sizeof (uint32_t))))
+
+/*
+ * The central step. This uses two temporaries, x and y. mm is the
+ * whole state array, while m is a pointer to the current word. off is
+ * the offset from m to the word ISAAC_WORDS/2 words away in the mm array,
+ * i.e. +/- ISAAC_WORDS/2.
+ */
+#define isaac_step(mix, a, b, mm, m, off, r) \
+( \
+ a = ((a) ^ (mix)) + (m)[off], \
+ x = *(m), \
+ *(m) = y = ind (mm, x) + (a) + (b), \
+ *(r) = b = ind (mm, (y) >> ISAAC_LOG) + x \
+)
+
+/* Use and update *S to generate random data to fill R. */
+void
+isaac_refill (struct isaac_state *s, uint32_t r[ISAAC_WORDS])
+{
+ uint32_t a, b; /* Caches of a and b */
+ uint32_t x, y; /* Temps needed by isaac_step macro */
+ uint32_t *m = s->mm; /* Pointer into state array */
+
+ a = s->a;
+ b = s->b + (++s->c);
+
+ do
+ {
+ isaac_step (a << 13, a, b, s->mm, m, ISAAC_WORDS / 2, r);
+ isaac_step (a >> 6, a, b, s->mm, m + 1, ISAAC_WORDS / 2, r + 1);
+ isaac_step (a << 2, a, b, s->mm, m + 2, ISAAC_WORDS / 2, r + 2);
+ isaac_step (a >> 16, a, b, s->mm, m + 3, ISAAC_WORDS / 2, r + 3);
+ r += 4;
+ }
+ while ((m += 4) < s->mm + ISAAC_WORDS / 2);
+ do
+ {
+ isaac_step (a << 13, a, b, s->mm, m, -ISAAC_WORDS / 2, r);
+ isaac_step (a >> 6, a, b, s->mm, m + 1, -ISAAC_WORDS / 2, r + 1);
+ isaac_step (a << 2, a, b, s->mm, m + 2, -ISAAC_WORDS / 2, r + 2);
+ isaac_step (a >> 16, a, b, s->mm, m + 3, -ISAAC_WORDS / 2, r + 3);
+ r += 4;
+ }
+ while ((m += 4) < s->mm + ISAAC_WORDS);
+ s->a = a;
+ s->b = b;
+}
+
+/*
+ * The basic seed-scrambling step for initialization, based on Bob
+ * Jenkins' 256-bit hash.
+ */
+#define mix(a,b,c,d,e,f,g,h) \
+ ( a ^= b << 11, d += a, \
+ b += c, b ^= c >> 2, e += b, \
+ c += d, c ^= d << 8, f += c, \
+ d += e, d ^= e >> 16, g += d, \
+ e += f, e ^= f << 10, h += e, \
+ f += g, f ^= g >> 4, a += f, \
+ g += h, g ^= h << 8, b += g, \
+ h += a, h ^= a >> 9, c += h, \
+ a += b )
+
+/* The basic ISAAC initialization pass. */
+static void
+isaac_mix (struct isaac_state *s, uint32_t const seed[/* ISAAC_WORDS */])
+{
+ int i;
+ uint32_t a = s->iv[0];
+ uint32_t b = s->iv[1];
+ uint32_t c = s->iv[2];
+ uint32_t d = s->iv[3];
+ uint32_t e = s->iv[4];
+ uint32_t f = s->iv[5];
+ uint32_t g = s->iv[6];
+ uint32_t h = s->iv[7];
+
+ for (i = 0; i < ISAAC_WORDS; i += 8)
+ {
+ a += seed[i];
+ b += seed[i + 1];
+ c += seed[i + 2];
+ d += seed[i + 3];
+ e += seed[i + 4];
+ f += seed[i + 5];
+ g += seed[i + 6];
+ h += seed[i + 7];
+
+ mix (a, b, c, d, e, f, g, h);
+
+ s->mm[i] = a;
+ s->mm[i + 1] = b;
+ s->mm[i + 2] = c;
+ s->mm[i + 3] = d;
+ s->mm[i + 4] = e;
+ s->mm[i + 5] = f;
+ s->mm[i + 6] = g;
+ s->mm[i + 7] = h;
+ }
+
+ s->iv[0] = a;
+ s->iv[1] = b;
+ s->iv[2] = c;
+ s->iv[3] = d;
+ s->iv[4] = e;
+ s->iv[5] = f;
+ s->iv[6] = g;
+ s->iv[7] = h;
+}
+
+#if 0 /* Provided for reference only; not used in this code */
+/*
+ * Initialize the ISAAC RNG with the given seed material.
+ * Its size MUST be a multiple of ISAAC_BYTES, and may be
+ * stored in the s->mm array.
+ *
+ * This is a generalization of the original ISAAC initialization code
+ * to support larger seed sizes. For seed sizes of 0 and ISAAC_BYTES,
+ * it is identical.
+ */
+static void
+isaac_init (struct isaac_state *s, uint32_t const *seed, size_t seedsize)
+{
+ static uint32_t const iv[8] =
+ {
+ 0x1367df5a, 0x95d90059, 0xc3163e4b, 0x0f421ad8,
+ 0xd92a4a78, 0xa51a3c49, 0xc4efea1b, 0x30609119};
+ int i;
+
+# if 0
+ /* The initialization of iv is a precomputed form of: */
+ for (i = 0; i < 7; i++)
+ iv[i] = 0x9e3779b9; /* the golden ratio */
+ for (i = 0; i < 4; ++i) /* scramble it */
+ mix (iv[0], iv[1], iv[2], iv[3], iv[4], iv[5], iv[6], iv[7]);
+# endif
+ s->a = s->b = s->c = 0;
+
+ for (i = 0; i < 8; i++)
+ s->iv[i] = iv[i];
+
+ if (seedsize)
+ {
+ /* First pass (as in reference ISAAC code) */
+ isaac_mix (s, seed);
+ /* Second and subsequent passes (extension to ISAAC) */
+ while (seedsize -= ISAAC_BYTES)
+ {
+ seed += ISAAC_WORDS;
+ for (i = 0; i < ISAAC_WORDS; i++)
+ s->mm[i] += seed[i];
+ isaac_mix (s, s->mm);
+ }
+ }
+ else
+ {
+ /* The no seed case (as in reference ISAAC code) */
+ for (i = 0; i < ISAAC_WORDS; i++)
+ s->mm[i] = 0;
+ }
+
+ /* Final pass */
+ isaac_mix (s, s->mm);
+}
+#endif
+
+/* Initialize *S to a somewhat-random value. */
+static void
+isaac_seed_start (struct isaac_state *s)
+{
+ static uint32_t const iv[8] =
+ {
+ 0x1367df5a, 0x95d90059, 0xc3163e4b, 0x0f421ad8,
+ 0xd92a4a78, 0xa51a3c49, 0xc4efea1b, 0x30609119
+ };
+
+#if 0
+ /* The initialization of iv is a precomputed form of: */
+ int i;
+ for (i = 0; i < 7; i++)
+ iv[i] = 0x9e3779b9; /* the golden ratio */
+ for (i = 0; i < 4; ++i) /* scramble it */
+ mix (iv[0], iv[1], iv[2], iv[3], iv[4], iv[5], iv[6], iv[7]);
+#endif
+
+ memset (s->mm, 0, sizeof s->mm);
+ memcpy (s->iv, iv, sizeof s->iv);
+
+ /* s->c gets used for a data pointer during the seeding phase */
+ s->a = s->b = s->c = 0;
+}
+
+/* Add a buffer of seed material. */
+static void
+isaac_seed_data (struct isaac_state *s, void const *buffer, size_t size)
+{
+ unsigned char const *buf = buffer;
+ unsigned char *p;
+ size_t avail;
+ size_t i;
+
+ avail = sizeof s->mm - s->c; /* s->c is used as a write pointer */
+
+ /* Do any full buffers that are necessary */
+ while (size > avail)
+ {
+ p = (unsigned char *) s->mm + s->c;
+ for (i = 0; i < avail; i++)
+ p[i] ^= buf[i];
+ buf += avail;
+ size -= avail;
+ isaac_mix (s, s->mm);
+ s->c = 0;
+ avail = sizeof s->mm;
+ }
+
+ /* And the final partial block */
+ p = (unsigned char *) s->mm + s->c;
+ for (i = 0; i < size; i++)
+ p[i] ^= buf[i];
+ s->c = size;
+}
+
+
+/* End of seeding phase; get everything ready to produce output. */
+static void
+isaac_seed_finish (struct isaac_state *s)
+{
+ isaac_mix (s, s->mm);
+ isaac_mix (s, s->mm);
+ /* Now reinitialize c to start things off right */
+ s->c = 0;
+}
+#define ISAAC_SEED(s,x) isaac_seed_data (s, &(x), sizeof (x))
+
+/* Initialize *S to a somewhat-random value; this starts seeding,
+ seeds with somewhat-random data, and finishes seeding. */
+void
+isaac_seed (struct isaac_state *s)
+{
+ isaac_seed_start (s);
+
+ { pid_t t = getpid (); ISAAC_SEED (s, t); }
+ { pid_t t = getppid (); ISAAC_SEED (s, t); }
+ { uid_t t = getuid (); ISAAC_SEED (s, t); }
+ { gid_t t = getgid (); ISAAC_SEED (s, t); }
+
+ {
+ xtime_t t = gethrxtime ();
+ ISAAC_SEED (s, t);
+ }
+
+ isaac_seed_finish (s);
+}
diff --git a/lib/rand-isaac.h b/lib/rand-isaac.h
new file mode 100644
index 0000000..f8daee0
--- /dev/null
+++ b/lib/rand-isaac.h
@@ -0,0 +1,44 @@
+/* Bob Jenkins's cryptographic random number generator, ISAAC.
+
+ Copyright (C) 1999-2005 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 1999 Colin Plumb.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written by Colin Plumb. */
+
+#ifndef RAND_ISAAC_H
+# define RAND_ISAAC_H
+
+# include <stdint.h>
+
+/* Size of the state tables to use. ISAAC_LOG should be at least 3,
+ and smaller values give less security. */
+# define ISAAC_LOG 8
+# define ISAAC_WORDS (1 << ISAAC_LOG)
+# define ISAAC_BYTES (ISAAC_WORDS * sizeof (uint32_t))
+
+/* RNG state variables. The members of this structure are private. */
+struct isaac_state
+ {
+ uint32_t mm[ISAAC_WORDS]; /* Main state array */
+ uint32_t iv[8]; /* Seeding initial vector */
+ uint32_t a, b, c; /* Extra index variables */
+ };
+
+void isaac_seed (struct isaac_state *);
+void isaac_refill (struct isaac_state *, uint32_t[ISAAC_WORDS]);
+
+#endif
diff --git a/lib/randint.c b/lib/randint.c
new file mode 100644
index 0000000..5ee738a
--- /dev/null
+++ b/lib/randint.c
@@ -0,0 +1,228 @@
+/* Generate random integers.
+
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "randint.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+#if TEST
+# include <inttypes.h>
+# include <stdio.h>
+
+int
+main (int argc, char **argv)
+{
+ randint i;
+ randint n = strtoumax (argv[1], NULL, 10);
+ randint choices = strtoumax (argv[2], NULL, 10);
+ char const *name = argv[3];
+ struct randint_source *ints = randint_all_new (name, SIZE_MAX);
+
+ for (i = 0; i < n; i++)
+ printf ("%"PRIuMAX"\n", randint_choose (ints, choices));
+
+ return (randint_all_free (ints) == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+#endif
+
+
+#include "xalloc.h"
+
+#ifndef MAX
+# define MAX(a,b) ((a) < (b) ? (b) : (a))
+#endif
+
+/* A source of random data for generating random integers. */
+struct randint_source
+{
+ /* The source of random bytes. */
+ struct randread_source *source;
+
+ /* RANDNUM is a buffered random integer, whose information has not
+ yet been delivered to the caller. It is uniformly distributed in
+ the range 0 <= RANDNUM <= RANDMAX. If RANDMAX is zero, then
+ RANDNUM must be zero (and in some sense it is not really
+ "random"). */
+ randint randnum;
+ randint randmax;
+};
+
+/* Create a new randint_source from SOURCE. */
+
+struct randint_source *
+randint_new (struct randread_source *source)
+{
+ struct randint_source *s = xmalloc (sizeof *s);
+ s->source = source;
+ s->randnum = s->randmax = 0;
+ return s;
+}
+
+/* Create a new randint_source by creating a randread_source from
+ NAME and ESTIMATED_BYTES. Return NULL (setting errno) if
+ unsuccessful. */
+
+struct randint_source *
+randint_all_new (char const *name, size_t bytes_bound)
+{
+ struct randread_source *source = randread_new (name, bytes_bound);
+ return (source ? randint_new (source) : NULL);
+}
+
+/* Return the random data source of *S. */
+
+struct randread_source *
+randint_get_source (struct randint_source const *s)
+{
+ return s->source;
+}
+
+/* HUGE_BYTES is true on hosts hosts where randint and unsigned char
+ have the same width and where shifting by the word size therefore
+ has undefined behavior. */
+enum { HUGE_BYTES = RANDINT_MAX == UCHAR_MAX };
+
+/* Return X shifted left by CHAR_BIT bits. */
+static inline randint shift_left (randint x)
+{
+ return HUGE_BYTES ? 0 : x << CHAR_BIT;
+}
+
+/* Return X shifted right by CHAR_BIT bits. */
+static inline randint
+shift_right (randint x)
+{
+ return HUGE_BYTES ? 0 : x >> CHAR_BIT;
+}
+
+
+/* Consume random data from *S to generate a random number in the range
+ 0 .. GENMAX. */
+
+randint
+randint_genmax (struct randint_source *s, randint genmax)
+{
+ struct randread_source *source = s->source;
+ randint randnum = s->randnum;
+ randint randmax = s->randmax;
+ randint choices = genmax + 1;
+
+ for (;;)
+ {
+ if (randmax < genmax)
+ {
+ /* Calculate how many input bytes will be needed, and read
+ the bytes. */
+
+ size_t i = 0;
+ randint rmax = randmax;
+ unsigned char buf[sizeof randnum];
+
+ do
+ {
+ rmax = shift_left (rmax) + UCHAR_MAX;
+ i++;
+ }
+ while (rmax < genmax);
+
+ randread (source, buf, i);
+
+ /* Increase RANDMAX by appending random bytes to RANDNUM and
+ UCHAR_MAX to RANDMAX until RANDMAX is no less than
+ GENMAX. This may lose up to CHAR_BIT bits of information
+ if shift_right (RANDINT_MAX) < GENMAX, but it is not
+ worth the programming hassle of saving these bits since
+ GENMAX is rarely that large in practice. */
+
+ i = 0;
+
+ do
+ {
+ randnum = shift_left (randnum) + buf[i];
+ randmax = shift_left (randmax) + UCHAR_MAX;
+ i++;
+ }
+ while (randmax < genmax);
+ }
+
+ if (randmax == genmax)
+ {
+ s->randnum = s->randmax = 0;
+ return randnum;
+ }
+ else
+ {
+ /* GENMAX < RANDMAX, so attempt to generate a random number
+ by taking RANDNUM modulo GENMAX+1. This will choose
+ fairly so long as RANDNUM falls within an integral
+ multiple of GENMAX+1; otherwise, LAST_USABLE_CHOICE < RANDNUM,
+ so discard this attempt and try again.
+
+ Since GENMAX cannot be RANDINT_MAX, CHOICES cannot be
+ zero and there is no need to worry about dividing by
+ zero. */
+
+ randint excess_choices = randmax - genmax;
+ randint unusable_choices = excess_choices % choices;
+ randint last_usable_choice = randmax - unusable_choices;
+ randint reduced_randnum = randnum % choices;
+
+ if (randnum <= last_usable_choice)
+ {
+ s->randnum = randnum / choices;
+ s->randmax = excess_choices / choices;
+ return reduced_randnum;
+ }
+
+ /* Retry, but retain the randomness from the fact that RANDNUM fell
+ into the range LAST_USABLE_CHOICE+1 .. RANDMAX. */
+ randnum = reduced_randnum;
+ randmax = unusable_choices - 1;
+ }
+ }
+}
+
+/* Clear *S so that it no longer contains undelivered random data. */
+
+void
+randint_free (struct randint_source *s)
+{
+ memset (s, 0, sizeof *s);
+ free (s);
+}
+
+/* Likewise, but also clear the underlying randread object. Return
+ 0 if successful, -1 (setting errno) otherwise. */
+
+int
+randint_all_free (struct randint_source *s)
+{
+ int r = randread_free (s->source);
+ int e = errno;
+ randint_free (s);
+ errno = e;
+ return r;
+}
diff --git a/lib/randint.h b/lib/randint.h
new file mode 100644
index 0000000..4245a6d
--- /dev/null
+++ b/lib/randint.h
@@ -0,0 +1,52 @@
+/* Generate random integers.
+
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+/* Written by Paul Eggert. */
+
+#ifndef RANDINT_H
+
+# define RANDINT_H 1
+
+# include <stdint.h>
+
+# include "randread.h"
+
+/* An unsigned integer type, used for random integers, and its maximum
+ value. */
+typedef uintmax_t randint;
+# define RANDINT_MAX UINTMAX_MAX
+
+struct randint_source;
+
+struct randint_source *randint_new (struct randread_source *);
+struct randint_source *randint_all_new (char const *, size_t);
+struct randread_source *randint_get_source (struct randint_source const *);
+randint randint_genmax (struct randint_source *, randint genmax);
+
+/* Consume random data from *S to generate a random number in the range
+ 0 .. CHOICES-1. CHOICES must be nonzero. */
+static inline randint
+randint_choose (struct randint_source *s, randint choices)
+{
+ return randint_genmax (s, choices - 1);
+}
+
+void randint_free (struct randint_source *);
+int randint_all_free (struct randint_source *);
+
+#endif
diff --git a/lib/randperm.c b/lib/randperm.c
new file mode 100644
index 0000000..c4438dd
--- /dev/null
+++ b/lib/randperm.c
@@ -0,0 +1,103 @@
+/* Generate random permutations.
+
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "randperm.h"
+
+#include <limits.h>
+
+#include "xalloc.h"
+
+/* Return the ceiling of the log base 2 of N. If N is zero, return
+ an unspecified value. */
+
+static size_t
+ceil_lg (size_t n)
+{
+ size_t b = 0;
+ for (n--; n != 0; n /= 2)
+ b++;
+ return b;
+}
+
+/* Return an upper bound on the number of random bytes needed to
+ generate the first H elements of a random permutation of N
+ elements. H must not exceed N. */
+
+size_t
+randperm_bound (size_t h, size_t n)
+{
+ /* Upper bound on number of bits needed to generate the first number
+ of the permutation. */
+ size_t lg_n = ceil_lg (n);
+
+ /* Upper bound on number of bits needed to generated the first H elements. */
+ size_t ar = lg_n * h;
+
+ /* Convert the bit count to a byte count. */
+ size_t bound = (ar + CHAR_BIT - 1) / CHAR_BIT;
+
+ return bound;
+}
+
+/* From R, allocate and return a malloc'd array of the first H elements
+ of a random permutation of N elements. H must not exceed N.
+ Return NULL if H is zero. */
+
+size_t *
+randperm_new (struct randint_source *r, size_t h, size_t n)
+{
+ size_t *v;
+
+ switch (h)
+ {
+ case 0:
+ v = NULL;
+ break;
+
+ case 1:
+ v = xmalloc (sizeof *v);
+ v[0] = randint_choose (r, n);
+ break;
+
+ default:
+ {
+ size_t i;
+
+ v = xnmalloc (n, sizeof *v);
+ for (i = 0; i < n; i++)
+ v[i] = i;
+
+ for (i = 0; i < h; i++)
+ {
+ size_t j = i + randint_choose (r, n - i);
+ size_t t = v[i];
+ v[i] = v[j];
+ v[j] = t;
+ }
+
+ v = xnrealloc (v, h, sizeof *v);
+ }
+ break;
+ }
+
+ return v;
+}
diff --git a/lib/randperm.h b/lib/randperm.h
new file mode 100644
index 0000000..79bbf9f
--- /dev/null
+++ b/lib/randperm.h
@@ -0,0 +1,4 @@
+#include "randint.h"
+#include <stddef.h>
+size_t randperm_bound (size_t, size_t);
+size_t *randperm_new (struct randint_source *, size_t, size_t);
diff --git a/lib/randread.c b/lib/randread.c
new file mode 100644
index 0000000..5462d44
--- /dev/null
+++ b/lib/randread.c
@@ -0,0 +1,298 @@
+/* Generate buffers of random data.
+
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "randread.h"
+
+#include <errno.h>
+#include <error.h>
+#include <exitfail.h>
+#include <quotearg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+#include "rand-isaac.h"
+#include "stdio-safer.h"
+#include "unlocked-io.h"
+#include "xalloc.h"
+
+#ifndef MIN
+# define MIN(a, b) ((a) < (b) ? (a) : (b))
+#endif
+
+#ifndef __attribute__
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
+# define __attribute__(x)
+# endif
+#endif
+
+#ifndef ATTRIBUTE_UNUSED
+# define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+#endif
+
+#if _STRING_ARCH_unaligned
+# define ALIGNED_POINTER(ptr, type) true
+#else
+# define alignof(type) offsetof (struct { char c; type x; }, x)
+# define ALIGNED_POINTER(ptr, type) ((size_t) (ptr) % alignof (type) == 0)
+#endif
+
+#ifndef DEFAULT_RANDOM_FILE
+# define DEFAULT_RANDOM_FILE "/dev/urandom"
+#endif
+
+/* The maximum buffer size used for reads of random data. Using the
+ value 2 * ISAAC_BYTES makes this the largest power of two that
+ would not otherwise cause struct randread_source to grow. */
+#define RANDREAD_BUFFER_SIZE (2 * ISAAC_BYTES)
+
+/* A source of random data for generating random buffers. */
+struct randread_source
+{
+ /* Stream to read random bytes from. If null, the behavior is
+ undefined; the current implementation uses ISAAC in this case,
+ but this is for old-fashioned implementations that lack
+ /dev/urandom and callers should not rely on this. */
+ FILE *source;
+
+ /* Function to call, and its argument, if there is an input error or
+ end of file when reading from the stream; errno is nonzero if
+ there was an error. If this function returns, it should fix the
+ problem before returning. The default handler assumes that
+ handler_arg is the file name of the source. */
+ void (*handler) (void const *);
+ void const *handler_arg;
+
+ /* The buffer for SOURCE. It's kept here to simplify storage
+ allocation and to make it easier to clear out buffered random
+ data. */
+ union
+ {
+ /* The stream buffer, if SOURCE is not null. */
+ char c[RANDREAD_BUFFER_SIZE];
+
+ /* The buffered ISAAC pseudorandom buffer, if SOURCE is null. */
+ struct isaac
+ {
+ /* The number of bytes that are buffered at the end of data.b. */
+ size_t buffered;
+
+ /* State of the ISAAC generator. */
+ struct isaac_state state;
+
+ /* Up to a buffer's worth of pseudorandom data. */
+ union
+ {
+ uint32_t w[ISAAC_WORDS];
+ unsigned char b[ISAAC_BYTES];
+ } data;
+ } isaac;
+ } buf;
+};
+
+
+/* The default error handler. */
+
+static void
+randread_error (void const *file_name)
+{
+ if (file_name)
+ error (exit_failure, errno,
+ _(errno == 0 ? "%s: end of file" : "%s: read error"),
+ quotearg_colon (file_name));
+ abort ();
+}
+
+/* Simply return a new randread_source object with the default error
+ handler. */
+
+static struct randread_source *
+simple_new (FILE *source, void const *handler_arg)
+{
+ struct randread_source *s = xmalloc (sizeof *s);
+ s->source = source;
+ s->handler = randread_error;
+ s->handler_arg = handler_arg;
+ return s;
+}
+
+/* Create and initialize a random data source from NAME, or use a
+ reasonable default source if NAME is null. BYTES_BOUND is an upper
+ bound on the number of bytes that will be needed. If zero, it is a
+ hard bound; otherwise it is just an estimate.
+
+ If NAME is not null, NAME is saved for use as the argument of the
+ default handler. Unless a non-default handler is used, NAME's
+ lifetime should be at least that of the returned value.
+
+ Return NULL (setting errno) on failure. */
+
+struct randread_source *
+randread_new (char const *name, size_t bytes_bound)
+{
+ if (bytes_bound == 0)
+ return simple_new (NULL, NULL);
+ else
+ {
+ char const *file_name = (name ? name : DEFAULT_RANDOM_FILE);
+ FILE *source = fopen_safer (file_name, "rb");
+ struct randread_source *s;
+
+ if (! source)
+ {
+ if (name)
+ return NULL;
+ file_name = NULL;
+ }
+
+ s = simple_new (source, file_name);
+
+ if (source)
+ setvbuf (source, s->buf.c, _IOFBF, MIN (sizeof s->buf.c, bytes_bound));
+ else
+ {
+ s->buf.isaac.buffered = 0;
+ isaac_seed (&s->buf.isaac.state);
+ }
+
+ return s;
+ }
+}
+
+
+/* Set S's handler and its argument. HANDLER (HANDLER_ARG) is called
+ when there is a read error or end of file from the random data
+ source; errno is nonzero if there was an error. If HANDLER
+ returns, it should fix the problem before returning. The default
+ handler assumes that handler_arg is the file name of the source; it
+ does not return. */
+
+void
+randread_set_handler (struct randread_source *s, void (*handler) (void const *))
+{
+ s->handler = handler;
+}
+
+void
+randread_set_handler_arg (struct randread_source *s, void const *handler_arg)
+{
+ s->handler_arg = handler_arg;
+}
+
+
+/* Place SIZE random bytes into the buffer beginning at P, using
+ the stream in S. */
+
+static void
+readsource (struct randread_source *s, unsigned char *p, size_t size)
+{
+ for (;;)
+ {
+ size_t inbytes = fread (p, sizeof *p, size, s->source);
+ int fread_errno = errno;
+ p += inbytes;
+ size -= inbytes;
+ if (size == 0)
+ break;
+ errno = (ferror (s->source) ? fread_errno : 0);
+ s->handler (s->handler_arg);
+ }
+}
+
+
+/* Place SIZE pseudorandom bytes into the buffer beginning at P, using
+ the buffered ISAAC generator in ISAAC. */
+
+static void
+readisaac (struct isaac *isaac, unsigned char *p, size_t size)
+{
+ size_t inbytes = isaac->buffered;
+
+ for (;;)
+ {
+ if (size <= inbytes)
+ {
+ memcpy (p, isaac->data.b + ISAAC_BYTES - inbytes, size);
+ isaac->buffered = inbytes - size;
+ return;
+ }
+
+ memcpy (p, isaac->data.b + ISAAC_BYTES - inbytes, inbytes);
+ p += inbytes;
+ size -= inbytes;
+
+ /* If P is aligned, write to *P directly to avoid the overhead
+ of copying from the buffer. */
+ if (ALIGNED_POINTER (p, uint32_t))
+ {
+ uint32_t *wp = (uint32_t *) p;
+ while (ISAAC_BYTES <= size)
+ {
+ isaac_refill (&isaac->state, wp);
+ wp += ISAAC_WORDS;
+ size -= ISAAC_BYTES;
+ if (size == 0)
+ {
+ isaac->buffered = 0;
+ return;
+ }
+ }
+ p = (unsigned char *) wp;
+ }
+
+ isaac_refill (&isaac->state, isaac->data.w);
+ inbytes = ISAAC_BYTES;
+ }
+}
+
+
+/* Consume random data from *S to generate a random buffer BUF of size
+ SIZE. */
+
+void
+randread (struct randread_source *s, void *buf, size_t size)
+{
+ if (s->source)
+ readsource (s, buf, size);
+ else
+ readisaac (&s->buf.isaac, buf, size);
+}
+
+
+/* Clear *S so that it no longer contains undelivered random data, and
+ deallocate any system resources associated with *S. Return 0 if
+ successful, a negative number (setting errno) if not (this is rare,
+ but can occur in theory if there is an input error). */
+
+int
+randread_free (struct randread_source *s)
+{
+ FILE *source = s->source;
+ memset (s, 0, sizeof *s);
+ free (s);
+ return (source ? fclose (source) : 0);
+}
diff --git a/lib/randread.h b/lib/randread.h
new file mode 100644
index 0000000..8e34334
--- /dev/null
+++ b/lib/randread.h
@@ -0,0 +1,34 @@
+/* Generate buffers of random data.
+
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+/* Written by Paul Eggert. */
+
+#ifndef RANDREAD_H
+# define RANDREAD_H 1
+
+# include <stddef.h>
+
+struct randread_source;
+
+struct randread_source *randread_new (char const *, size_t);
+void randread (struct randread_source *, void *, size_t);
+void randread_set_handler (struct randread_source *, void (*) (void const *));
+void randread_set_handler_arg (struct randread_source *, void const *);
+int randread_free (struct randread_source *);
+
+#endif
diff --git a/lib/readlink.c b/lib/readlink.c
new file mode 100644
index 0000000..3cbdc1c
--- /dev/null
+++ b/lib/readlink.c
@@ -0,0 +1,50 @@
+/* Stub for readlink().
+ Copyright (C) 2003-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#include <unistd.h>
+
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stddef.h>
+
+#if !HAVE_READLINK
+
+/* readlink() substitute for systems that don't have a readlink() function,
+ such as DJGPP 2.03 and mingw32. */
+
+/* The official POSIX return type of readlink() is ssize_t, but since here
+ we have no declaration in a public header file, we use 'int' as return
+ type. */
+
+int
+readlink (const char *path, char *buf, size_t bufsize)
+{
+ struct stat statbuf;
+
+ /* In general we should use lstat() here, not stat(). But on platforms
+ without symbolic links lstat() - if it exists - would be equivalent to
+ stat(), therefore we can use stat(). This saves us a configure check. */
+ if (stat (path, &statbuf) >= 0)
+ errno = EINVAL;
+ return -1;
+}
+
+#endif
diff --git a/lib/readtokens.c b/lib/readtokens.c
new file mode 100644
index 0000000..28aafa9
--- /dev/null
+++ b/lib/readtokens.c
@@ -0,0 +1,204 @@
+/* readtokens.c -- Functions for reading tokens from an input stream.
+
+ Copyright (C) 1990-1991, 1999-2004, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written by Jim Meyering. */
+
+/* This almost supercedes xreadline stuff -- using delim="\n"
+ gives the same functionality, except that these functions
+ would never return empty lines. */
+
+#include <config.h>
+
+#include "readtokens.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
+
+#include "xalloc.h"
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#define STREQ(a,b) ((a) == (b) || ((a) && (b) && *(a) == *(b) \
+ && strcmp(a, b) == 0))
+
+/* Initialize a tokenbuffer. */
+
+void
+init_tokenbuffer (token_buffer *tokenbuffer)
+{
+ tokenbuffer->size = 0;
+ tokenbuffer->buffer = NULL;
+}
+
+/* Read a token from STREAM into TOKENBUFFER.
+ A token is delimited by any of the N_DELIM bytes in DELIM.
+ Upon return, the token is in tokenbuffer->buffer and
+ has a trailing '\0' instead of any original delimiter.
+ The function value is the length of the token not including
+ the final '\0'. Upon EOF (i.e. on the call after the last
+ token is read) or error, return -1 without modifying tokenbuffer.
+ The EOF and error conditions may be distinguished in the caller
+ by testing ferror (STREAM).
+
+ This function works properly on lines containing NUL bytes
+ and on files do not end with a delimiter. */
+
+size_t
+readtoken (FILE *stream,
+ const char *delim,
+ size_t n_delim,
+ token_buffer *tokenbuffer)
+{
+ char *p;
+ int c;
+ size_t i, n;
+ static const char *saved_delim = NULL;
+ static char isdelim[256];
+ bool same_delimiters;
+
+ if (delim == NULL && saved_delim == NULL)
+ abort ();
+
+ same_delimiters = false;
+ if (delim != saved_delim && saved_delim != NULL)
+ {
+ same_delimiters = true;
+ for (i = 0; i < n_delim; i++)
+ {
+ if (delim[i] != saved_delim[i])
+ {
+ same_delimiters = false;
+ break;
+ }
+ }
+ }
+
+ if (!same_delimiters)
+ {
+ size_t j;
+ saved_delim = delim;
+ memset (isdelim, 0, sizeof isdelim);
+ for (j = 0; j < n_delim; j++)
+ {
+ unsigned char ch = delim[j];
+ isdelim[ch] = 1;
+ }
+ }
+
+ /* FIXME: don't fool with this caching. Use strchr instead. */
+ /* skip over any leading delimiters */
+ for (c = getc (stream); c >= 0 && isdelim[c]; c = getc (stream))
+ {
+ /* empty */
+ }
+
+ p = tokenbuffer->buffer;
+ n = tokenbuffer->size;
+ i = 0;
+ for (;;)
+ {
+ if (c < 0 && i == 0)
+ return -1;
+
+ if (i == n)
+ p = x2nrealloc (p, &n, sizeof *p);
+
+ if (c < 0)
+ {
+ p[i] = 0;
+ break;
+ }
+ if (isdelim[c])
+ {
+ p[i] = 0;
+ break;
+ }
+ p[i++] = c;
+ c = getc (stream);
+ }
+
+ tokenbuffer->buffer = p;
+ tokenbuffer->size = n;
+ return i;
+}
+
+/* Build a NULL-terminated array of pointers to tokens
+ read from STREAM. Return the number of tokens read.
+ All storage is obtained through calls to xmalloc-like functions.
+
+ %%% Question: is it worth it to do a single
+ %%% realloc() of `tokens' just before returning? */
+
+size_t
+readtokens (FILE *stream,
+ size_t projected_n_tokens,
+ const char *delim,
+ size_t n_delim,
+ char ***tokens_out,
+ size_t **token_lengths)
+{
+ token_buffer tb, *token = &tb;
+ char **tokens;
+ size_t *lengths;
+ size_t sz;
+ size_t n_tokens;
+
+ if (projected_n_tokens == 0)
+ projected_n_tokens = 64;
+ else
+ projected_n_tokens++; /* add one for trailing NULL pointer */
+
+ sz = projected_n_tokens;
+ tokens = xnmalloc (sz, sizeof *tokens);
+ lengths = xnmalloc (sz, sizeof *lengths);
+
+ n_tokens = 0;
+ init_tokenbuffer (token);
+ for (;;)
+ {
+ char *tmp;
+ size_t token_length = readtoken (stream, delim, n_delim, token);
+ if (n_tokens >= sz)
+ {
+ tokens = x2nrealloc (tokens, &sz, sizeof *tokens);
+ lengths = xnrealloc (lengths, sz, sizeof *lengths);
+ }
+
+ if (token_length == (size_t) -1)
+ {
+ /* don't increment n_tokens for NULL entry */
+ tokens[n_tokens] = NULL;
+ lengths[n_tokens] = 0;
+ break;
+ }
+ tmp = xnmalloc (token_length + 1, sizeof *tmp);
+ lengths[n_tokens] = token_length;
+ tokens[n_tokens] = memcpy (tmp, token->buffer, token_length + 1);
+ n_tokens++;
+ }
+
+ free (token->buffer);
+ *tokens_out = tokens;
+ if (token_lengths != NULL)
+ *token_lengths = lengths;
+ return n_tokens;
+}
diff --git a/lib/readtokens.h b/lib/readtokens.h
new file mode 100644
index 0000000..45a0c48
--- /dev/null
+++ b/lib/readtokens.h
@@ -0,0 +1,43 @@
+/* readtokens.h -- Functions for reading tokens from an input stream.
+
+ Copyright (C) 1990, 1991, 1999, 2001-2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written by Jim Meyering. */
+
+#ifndef READTOKENS_H
+# define READTOKENS_H
+
+# include <stdio.h>
+
+struct tokenbuffer
+{
+ size_t size;
+ char *buffer;
+};
+typedef struct tokenbuffer token_buffer;
+
+void init_tokenbuffer (token_buffer *tokenbuffer);
+
+size_t
+ readtoken (FILE *stream, const char *delim, size_t n_delim,
+ token_buffer *tokenbuffer);
+size_t
+ readtokens (FILE *stream, size_t projected_n_tokens,
+ const char *delim, size_t n_delim,
+ char ***tokens_out, size_t **token_lengths);
+
+#endif /* not READTOKENS_H */
diff --git a/lib/readtokens0.c b/lib/readtokens0.c
new file mode 100644
index 0000000..b60fd5a
--- /dev/null
+++ b/lib/readtokens0.c
@@ -0,0 +1,100 @@
+/* readtokens0.c -- Read NUL-separated tokens from an input stream.
+
+ Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written by Jim Meyering. */
+
+#include <config.h>
+
+#include <stdlib.h>
+
+#include "readtokens0.h"
+
+#define obstack_chunk_alloc malloc
+#define obstack_chunk_free free
+
+void
+readtokens0_init (struct Tokens *t)
+{
+ t->n_tok = 0;
+ t->tok = NULL;
+ t->tok_len = NULL;
+ obstack_init (&t->o_data);
+ obstack_init (&t->o_tok);
+ obstack_init (&t->o_tok_len);
+}
+
+void
+readtokens0_free (struct Tokens *t)
+{
+ obstack_free (&t->o_data, NULL);
+ obstack_free (&t->o_tok, NULL);
+ obstack_free (&t->o_tok_len, NULL);
+}
+
+/* Finalize (in the obstack_finish sense) the current token
+ and record its pointer and length. */
+static void
+save_token (struct Tokens *t)
+{
+ /* Don't count the trailing NUL byte in the length. */
+ size_t len = obstack_object_size (&t->o_data) - 1;
+ char const *s = obstack_finish (&t->o_data);
+ obstack_ptr_grow (&t->o_tok, s);
+ obstack_grow (&t->o_tok_len, &len, sizeof len);
+ t->n_tok++;
+}
+
+/* Read NUL-separated tokens from stream IN into T until EOF or error.
+ The final NUL is optional. Always append a NULL pointer to the
+ resulting list of token pointers, but that pointer isn't counted
+ via t->n_tok. Return true if successful. */
+bool
+readtokens0 (FILE *in, struct Tokens *t)
+{
+
+ while (1)
+ {
+ int c = fgetc (in);
+ if (c == EOF)
+ {
+ size_t len = obstack_object_size (&t->o_data);
+ /* If the current object has nonzero length, then there
+ was no NUL byte at EOF -- or maybe there was an error,
+ in which case, we need to append a NUL byte to our buffer. */
+ if (len)
+ {
+ obstack_1grow (&t->o_data, '\0');
+ save_token (t);
+ }
+
+ break;
+ }
+
+ obstack_1grow (&t->o_data, c);
+ if (c == '\0')
+ save_token (t);
+ }
+
+ /* Add a NULL pointer at the end, in case the caller (like du)
+ requires an argv-style array of strings. */
+ obstack_ptr_grow (&t->o_tok, NULL);
+
+ t->tok = obstack_finish (&t->o_tok);
+ t->tok_len = obstack_finish (&t->o_tok_len);
+ return ! ferror (in);
+}
diff --git a/lib/readtokens0.h b/lib/readtokens0.h
new file mode 100644
index 0000000..94c9a49
--- /dev/null
+++ b/lib/readtokens0.h
@@ -0,0 +1,43 @@
+/* readtokens0.h -- read NUL-separated tokens from an input stream.
+
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written by Jim Meyering. */
+
+#ifndef READTOKENS0_H
+# define READTOKENS0_H 1
+
+# include <stdio.h>
+# include <sys/types.h>
+# include <stdbool.h>
+# include "obstack.h"
+
+struct Tokens
+{
+ size_t n_tok;
+ char **tok;
+ size_t *tok_len;
+ struct obstack o_data; /* Contains data pointed to by each tok[i]. */
+ struct obstack o_tok; /* array of pointers to tokens */
+ struct obstack o_tok_len; /* array of token lengths */
+};
+
+void readtokens0_init (struct Tokens *t);
+void readtokens0_free (struct Tokens *t);
+bool readtokens0 (FILE *in, struct Tokens *t);
+
+#endif
diff --git a/lib/readutmp.c b/lib/readutmp.c
new file mode 100644
index 0000000..73c7b53
--- /dev/null
+++ b/lib/readutmp.c
@@ -0,0 +1,166 @@
+/* GNU's read utmp module.
+
+ Copyright (C) 1992-2001, 2003, 2004, 2005, 2006 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by jla; revised by djm */
+
+#include <config.h>
+
+#include "readutmp.h"
+
+#include <errno.h>
+#include <stdio.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <signal.h>
+#include <stdbool.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "xalloc.h"
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+
+/* Copy UT->ut_name into storage obtained from malloc. Then remove any
+ trailing spaces from the copy, NUL terminate it, and return the copy. */
+
+char *
+extract_trimmed_name (const STRUCT_UTMP *ut)
+{
+ char *p, *trimmed_name;
+
+ trimmed_name = xmalloc (sizeof (UT_USER (ut)) + 1);
+ strncpy (trimmed_name, UT_USER (ut), sizeof (UT_USER (ut)));
+ /* Append a trailing NUL. Some systems pad names shorter than the
+ maximum with spaces, others pad with NULs. Remove any trailing
+ spaces. */
+ trimmed_name[sizeof (UT_USER (ut))] = '\0';
+ for (p = trimmed_name + strlen (trimmed_name);
+ trimmed_name < p && p[-1] == ' ';
+ *--p = '\0')
+ continue;
+ return trimmed_name;
+}
+
+/* Is the utmp entry U desired by the user who asked for OPTIONS? */
+
+static inline bool
+desirable_utmp_entry (STRUCT_UTMP const *u, int options)
+{
+ bool user_proc = IS_USER_PROCESS (u);
+ if ((options & READ_UTMP_USER_PROCESS) && !user_proc)
+ return false;
+ if ((options & READ_UTMP_CHECK_PIDS)
+ && user_proc
+ && (UT_PID (u) <= 0
+ || (kill (UT_PID (u), 0) < 0 && errno == ESRCH)))
+ return false;
+ return true;
+}
+
+/* Read the utmp entries corresponding to file FILE into freshly-
+ malloc'd storage, set *UTMP_BUF to that pointer, set *N_ENTRIES to
+ the number of entries, and return zero. If there is any error,
+ return -1, setting errno, and don't modify the parameters.
+ If OPTIONS & READ_UTMP_CHECK_PIDS is nonzero, omit entries whose
+ process-IDs do not currently exist. */
+
+#ifdef UTMP_NAME_FUNCTION
+
+int
+read_utmp (char const *file, size_t *n_entries, STRUCT_UTMP **utmp_buf,
+ int options)
+{
+ size_t n_read = 0;
+ size_t n_alloc = 0;
+ STRUCT_UTMP *utmp = NULL;
+ STRUCT_UTMP *u;
+
+ /* Ignore the return value for now.
+ Solaris' utmpname returns 1 upon success -- which is contrary
+ to what the GNU libc version does. In addition, older GNU libc
+ versions are actually void. */
+ UTMP_NAME_FUNCTION (file);
+
+ SET_UTMP_ENT ();
+
+ while ((u = GET_UTMP_ENT ()) != NULL)
+ if (desirable_utmp_entry (u, options))
+ {
+ if (n_read == n_alloc)
+ utmp = x2nrealloc (utmp, &n_alloc, sizeof *utmp);
+
+ utmp[n_read++] = *u;
+ }
+
+ END_UTMP_ENT ();
+
+ *n_entries = n_read;
+ *utmp_buf = utmp;
+
+ return 0;
+}
+
+#else
+
+int
+read_utmp (char const *file, size_t *n_entries, STRUCT_UTMP **utmp_buf,
+ int options)
+{
+ size_t n_read = 0;
+ size_t n_alloc = 0;
+ STRUCT_UTMP *utmp = NULL;
+ int saved_errno;
+ FILE *f = fopen (file, "r");
+
+ if (! f)
+ return -1;
+
+ for (;;)
+ {
+ if (n_read == n_alloc)
+ utmp = x2nrealloc (utmp, &n_alloc, sizeof *utmp);
+ if (fread (&utmp[n_read], sizeof utmp[n_read], 1, f) == 0)
+ break;
+ n_read += desirable_utmp_entry (&utmp[n_read], options);
+ }
+
+ saved_errno = ferror (f) ? errno : 0;
+ if (fclose (f) != 0)
+ saved_errno = errno;
+ if (saved_errno != 0)
+ {
+ free (utmp);
+ errno = saved_errno;
+ return -1;
+ }
+
+ *n_entries = n_read;
+ *utmp_buf = utmp;
+
+ return 0;
+}
+
+#endif
diff --git a/lib/readutmp.h b/lib/readutmp.h
new file mode 100644
index 0000000..84cf117
--- /dev/null
+++ b/lib/readutmp.h
@@ -0,0 +1,217 @@
+/* Declarations for GNU's read utmp module.
+
+ Copyright (C) 1992-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by jla; revised by djm */
+
+#ifndef __READUTMP_H__
+# define __READUTMP_H__
+
+# include <sys/types.h>
+
+/* AIX 4.3.3 has both utmp.h and utmpx.h, but only struct utmp
+ has the ut_exit member. */
+# if (HAVE_UTMPX_H && HAVE_UTMP_H && HAVE_STRUCT_UTMP_UT_EXIT \
+ && ! HAVE_STRUCT_UTMPX_UT_EXIT)
+# undef HAVE_UTMPX_H
+# endif
+
+# if HAVE_UTMPX_H
+# if HAVE_UTMP_H
+ /* HPUX 10.20 needs utmp.h, for the definition of e.g., UTMP_FILE. */
+# include <utmp.h>
+# endif
+# if defined _THREAD_SAFE && defined UTMP_DATA_INIT
+ /* When including both utmp.h and utmpx.h on AIX 4.3, with _THREAD_SAFE
+ defined, work around the duplicate struct utmp_data declaration. */
+# define utmp_data gl_aix_4_3_workaround_utmp_data
+# endif
+# include <utmpx.h>
+# define UTMP_STRUCT_NAME utmpx
+# define UT_TIME_MEMBER(UT_PTR) ((UT_PTR)->ut_tv.tv_sec)
+# define SET_UTMP_ENT setutxent
+# define GET_UTMP_ENT getutxent
+# define END_UTMP_ENT endutxent
+# ifdef HAVE_UTMPXNAME
+# define UTMP_NAME_FUNCTION utmpxname
+# endif
+
+# if HAVE_STRUCT_UTMPX_UT_EXIT_E_TERMINATION
+# define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.e_termination)
+# else
+# if HAVE_STRUCT_UTMPX_UT_EXIT_UT_TERMINATION
+# define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.ut_termination)
+# else
+# define UT_EXIT_E_TERMINATION(U) 0
+# endif
+# endif
+
+# if HAVE_STRUCT_UTMPX_UT_EXIT_E_EXIT
+# define UT_EXIT_E_EXIT(U) ((U)->ut_exit.e_exit)
+# else
+# if HAVE_STRUCT_UTMPX_UT_EXIT_UT_EXIT
+# define UT_EXIT_E_EXIT(U) ((U)->ut_exit.ut_exit)
+# else
+# define UT_EXIT_E_EXIT(U) 0
+# endif
+# endif
+
+# elif HAVE_UTMP_H
+
+# include <utmp.h>
+# if !HAVE_DECL_GETUTENT
+ struct utmp *getutent();
+# endif
+# define UTMP_STRUCT_NAME utmp
+# define UT_TIME_MEMBER(UT_PTR) ((UT_PTR)->ut_time)
+# define SET_UTMP_ENT setutent
+# define GET_UTMP_ENT getutent
+# define END_UTMP_ENT endutent
+# ifdef HAVE_UTMPNAME
+# define UTMP_NAME_FUNCTION utmpname
+# endif
+
+# if HAVE_STRUCT_UTMP_UT_EXIT_E_TERMINATION
+# define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.e_termination)
+# else
+# if HAVE_STRUCT_UTMP_UT_EXIT_UT_TERMINATION
+# define UT_EXIT_E_TERMINATION(U) ((U)->ut_exit.ut_termination)
+# else
+# define UT_EXIT_E_TERMINATION(U) 0
+# endif
+# endif
+
+# if HAVE_STRUCT_UTMP_UT_EXIT_E_EXIT
+# define UT_EXIT_E_EXIT(U) ((U)->ut_exit.e_exit)
+# else
+# if HAVE_STRUCT_UTMP_UT_EXIT_UT_EXIT
+# define UT_EXIT_E_EXIT(U) ((U)->ut_exit.ut_exit)
+# else
+# define UT_EXIT_E_EXIT(U) 0
+# endif
+# endif
+
+# endif
+
+/* Accessor macro for the member named ut_user or ut_name. */
+# if HAVE_UTMPX_H
+
+# if HAVE_STRUCT_UTMPX_UT_USER
+# define UT_USER(Utmp) ((Utmp)->ut_user)
+# endif
+# if HAVE_STRUCT_UTMPX_UT_NAME
+# undef UT_USER
+# define UT_USER(Utmp) ((Utmp)->ut_name)
+# endif
+
+# elif HAVE_UTMP_H
+
+# if HAVE_STRUCT_UTMP_UT_USER
+# define UT_USER(Utmp) ((Utmp)->ut_user)
+# endif
+# if HAVE_STRUCT_UTMP_UT_NAME
+# undef UT_USER
+# define UT_USER(Utmp) ((Utmp)->ut_name)
+# endif
+
+# endif
+
+# define HAVE_STRUCT_XTMP_UT_EXIT \
+ (HAVE_STRUCT_UTMP_UT_EXIT \
+ || HAVE_STRUCT_UTMPX_UT_EXIT)
+
+# define HAVE_STRUCT_XTMP_UT_ID \
+ (HAVE_STRUCT_UTMP_UT_ID \
+ || HAVE_STRUCT_UTMPX_UT_ID)
+
+# define HAVE_STRUCT_XTMP_UT_PID \
+ (HAVE_STRUCT_UTMP_UT_PID \
+ || HAVE_STRUCT_UTMPX_UT_PID)
+
+typedef struct UTMP_STRUCT_NAME STRUCT_UTMP;
+
+enum { UT_USER_SIZE = sizeof UT_USER ((STRUCT_UTMP *) 0) };
+
+# if !defined UTMP_FILE && defined _PATH_UTMP
+# define UTMP_FILE _PATH_UTMP
+# endif
+
+# if !defined WTMP_FILE && defined _PATH_WTMP
+# define WTMP_FILE _PATH_WTMP
+# endif
+
+# ifdef UTMPX_FILE /* Solaris, SysVr4 */
+# undef UTMP_FILE
+# define UTMP_FILE UTMPX_FILE
+# endif
+
+# ifdef WTMPX_FILE /* Solaris, SysVr4 */
+# undef WTMP_FILE
+# define WTMP_FILE WTMPX_FILE
+# endif
+
+# ifndef UTMP_FILE
+# define UTMP_FILE "/etc/utmp"
+# endif
+
+# ifndef WTMP_FILE
+# define WTMP_FILE "/etc/wtmp"
+# endif
+
+# if HAVE_STRUCT_XTMP_UT_PID
+# define UT_PID(U) ((U)->ut_pid)
+# else
+# define UT_PID(U) 0
+# endif
+
+# if HAVE_STRUCT_UTMP_UT_TYPE || HAVE_STRUCT_UTMPX_UT_TYPE
+# define UT_TYPE_EQ(U, V) ((U)->ut_type == (V))
+# define UT_TYPE_NOT_DEFINED 0
+# else
+# define UT_TYPE_EQ(U, V) 0
+# define UT_TYPE_NOT_DEFINED 1
+# endif
+
+# ifdef BOOT_TIME
+# define UT_TYPE_BOOT_TIME(U) UT_TYPE_EQ (U, BOOT_TIME)
+# else
+# define UT_TYPE_BOOT_TIME(U) 0
+# endif
+
+# ifdef USER_PROCESS
+# define UT_TYPE_USER_PROCESS(U) UT_TYPE_EQ (U, USER_PROCESS)
+# else
+# define UT_TYPE_USER_PROCESS(U) 0
+# endif
+
+# define IS_USER_PROCESS(U) \
+ (UT_USER (U)[0] \
+ && (UT_TYPE_USER_PROCESS (U) \
+ || (UT_TYPE_NOT_DEFINED && UT_TIME_MEMBER (U) != 0)))
+
+/* Options for read_utmp. */
+enum
+ {
+ READ_UTMP_CHECK_PIDS = 1,
+ READ_UTMP_USER_PROCESS = 2
+ };
+
+char *extract_trimmed_name (const STRUCT_UTMP *ut);
+int read_utmp (char const *file, size_t *n_entries, STRUCT_UTMP **utmp_buf,
+ int options);
+
+#endif /* __READUTMP_H__ */
diff --git a/lib/realloc.c b/lib/realloc.c
new file mode 100644
index 0000000..c1fe9e5
--- /dev/null
+++ b/lib/realloc.c
@@ -0,0 +1,45 @@
+/* realloc() function that is glibc compatible.
+
+ Copyright (C) 1997, 2003, 2004, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+#undef realloc
+
+#include <stdlib.h>
+
+/* Change the size of an allocated block of memory P to N bytes,
+ with error checking. If N is zero, change it to 1. If P is NULL,
+ use malloc. */
+
+void *
+rpl_realloc (void *p, size_t n)
+{
+ if (n == 0)
+ {
+ n = 1;
+
+ /* In theory realloc might fail, so don't rely on it to free. */
+ free (p);
+ p = NULL;
+ }
+
+ if (p == NULL)
+ return malloc (n);
+ return realloc (p, n);
+}
diff --git a/lib/ref-add.sin b/lib/ref-add.sin
new file mode 100644
index 0000000..bc5cc79
--- /dev/null
+++ b/lib/ref-add.sin
@@ -0,0 +1,30 @@
+# Add this package to a list of references stored in a text file.
+#
+# Copyright (C) 2000 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# Written by Bruno Haible <haible@clisp.cons.org>.
+#
+/^# Packages using this file: / {
+ s/# Packages using this file://
+ ta
+ :a
+ s/ @PACKAGE@ / @PACKAGE@ /
+ tb
+ s/ $/ @PACKAGE@ /
+ :b
+ s/^/# Packages using this file:/
+}
diff --git a/lib/ref-del.sin b/lib/ref-del.sin
new file mode 100644
index 0000000..e9301bf
--- /dev/null
+++ b/lib/ref-del.sin
@@ -0,0 +1,25 @@
+# Remove this package from a list of references stored in a text file.
+#
+# Copyright (C) 2000 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# Written by Bruno Haible <haible@clisp.cons.org>.
+#
+/^# Packages using this file: / {
+ s/# Packages using this file://
+ s/ @PACKAGE@ / /
+ s/^/# Packages using this file:/
+}
diff --git a/lib/regcomp.c b/lib/regcomp.c
new file mode 100644
index 0000000..fe4d243
--- /dev/null
+++ b/lib/regcomp.c
@@ -0,0 +1,3832 @@
+/* Extended regular expression matching and search library.
+ Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+static reg_errcode_t re_compile_internal (regex_t *preg, const char * pattern,
+ size_t length, reg_syntax_t syntax);
+static void re_compile_fastmap_iter (regex_t *bufp,
+ const re_dfastate_t *init_state,
+ char *fastmap);
+static reg_errcode_t init_dfa (re_dfa_t *dfa, size_t pat_len);
+#ifdef RE_ENABLE_I18N
+static void free_charset (re_charset_t *cset);
+#endif /* RE_ENABLE_I18N */
+static void free_workarea_compile (regex_t *preg);
+static reg_errcode_t create_initial_state (re_dfa_t *dfa);
+#ifdef RE_ENABLE_I18N
+static void optimize_utf8 (re_dfa_t *dfa);
+#endif
+static reg_errcode_t analyze (regex_t *preg);
+static reg_errcode_t preorder (bin_tree_t *root,
+ reg_errcode_t (fn (void *, bin_tree_t *)),
+ void *extra);
+static reg_errcode_t postorder (bin_tree_t *root,
+ reg_errcode_t (fn (void *, bin_tree_t *)),
+ void *extra);
+static reg_errcode_t optimize_subexps (void *extra, bin_tree_t *node);
+static reg_errcode_t lower_subexps (void *extra, bin_tree_t *node);
+static bin_tree_t *lower_subexp (reg_errcode_t *err, regex_t *preg,
+ bin_tree_t *node);
+static reg_errcode_t calc_first (void *extra, bin_tree_t *node);
+static reg_errcode_t calc_next (void *extra, bin_tree_t *node);
+static reg_errcode_t link_nfa_nodes (void *extra, bin_tree_t *node);
+static Idx duplicate_node (re_dfa_t *dfa, Idx org_idx, unsigned int constraint);
+static Idx search_duplicated_node (const re_dfa_t *dfa, Idx org_node,
+ unsigned int constraint);
+static reg_errcode_t calc_eclosure (re_dfa_t *dfa);
+static reg_errcode_t calc_eclosure_iter (re_node_set *new_set, re_dfa_t *dfa,
+ Idx node, bool root);
+static reg_errcode_t calc_inveclosure (re_dfa_t *dfa);
+static Idx fetch_number (re_string_t *input, re_token_t *token,
+ reg_syntax_t syntax);
+static int peek_token (re_token_t *token, re_string_t *input,
+ reg_syntax_t syntax) internal_function;
+static bin_tree_t *parse (re_string_t *regexp, regex_t *preg,
+ reg_syntax_t syntax, reg_errcode_t *err);
+static bin_tree_t *parse_reg_exp (re_string_t *regexp, regex_t *preg,
+ re_token_t *token, reg_syntax_t syntax,
+ Idx nest, reg_errcode_t *err);
+static bin_tree_t *parse_branch (re_string_t *regexp, regex_t *preg,
+ re_token_t *token, reg_syntax_t syntax,
+ Idx nest, reg_errcode_t *err);
+static bin_tree_t *parse_expression (re_string_t *regexp, regex_t *preg,
+ re_token_t *token, reg_syntax_t syntax,
+ Idx nest, reg_errcode_t *err);
+static bin_tree_t *parse_sub_exp (re_string_t *regexp, regex_t *preg,
+ re_token_t *token, reg_syntax_t syntax,
+ Idx nest, reg_errcode_t *err);
+static bin_tree_t *parse_dup_op (bin_tree_t *dup_elem, re_string_t *regexp,
+ re_dfa_t *dfa, re_token_t *token,
+ reg_syntax_t syntax, reg_errcode_t *err);
+static bin_tree_t *parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa,
+ re_token_t *token, reg_syntax_t syntax,
+ reg_errcode_t *err);
+static reg_errcode_t parse_bracket_element (bracket_elem_t *elem,
+ re_string_t *regexp,
+ re_token_t *token, int token_len,
+ re_dfa_t *dfa,
+ reg_syntax_t syntax,
+ bool accept_hyphen);
+static reg_errcode_t parse_bracket_symbol (bracket_elem_t *elem,
+ re_string_t *regexp,
+ re_token_t *token);
+#ifdef RE_ENABLE_I18N
+static reg_errcode_t build_equiv_class (bitset_t sbcset,
+ re_charset_t *mbcset,
+ Idx *equiv_class_alloc,
+ const unsigned char *name);
+static reg_errcode_t build_charclass (RE_TRANSLATE_TYPE trans,
+ bitset_t sbcset,
+ re_charset_t *mbcset,
+ Idx *char_class_alloc,
+ const unsigned char *class_name,
+ reg_syntax_t syntax);
+#else /* not RE_ENABLE_I18N */
+static reg_errcode_t build_equiv_class (bitset_t sbcset,
+ const unsigned char *name);
+static reg_errcode_t build_charclass (RE_TRANSLATE_TYPE trans,
+ bitset_t sbcset,
+ const unsigned char *class_name,
+ reg_syntax_t syntax);
+#endif /* not RE_ENABLE_I18N */
+static bin_tree_t *build_charclass_op (re_dfa_t *dfa,
+ RE_TRANSLATE_TYPE trans,
+ const unsigned char *class_name,
+ const unsigned char *extra,
+ bool non_match, reg_errcode_t *err);
+static bin_tree_t *create_tree (re_dfa_t *dfa,
+ bin_tree_t *left, bin_tree_t *right,
+ re_token_type_t type);
+static bin_tree_t *create_token_tree (re_dfa_t *dfa,
+ bin_tree_t *left, bin_tree_t *right,
+ const re_token_t *token);
+static bin_tree_t *duplicate_tree (const bin_tree_t *src, re_dfa_t *dfa);
+static void free_token (re_token_t *node);
+static reg_errcode_t free_tree (void *extra, bin_tree_t *node);
+static reg_errcode_t mark_opt_subexp (void *extra, bin_tree_t *node);
+
+/* This table gives an error message for each of the error codes listed
+ in regex.h. Obviously the order here has to be same as there.
+ POSIX doesn't require that we do anything for REG_NOERROR,
+ but why not be nice? */
+
+static const char __re_error_msgid[] =
+ {
+#define REG_NOERROR_IDX 0
+ gettext_noop ("Success") /* REG_NOERROR */
+ "\0"
+#define REG_NOMATCH_IDX (REG_NOERROR_IDX + sizeof "Success")
+ gettext_noop ("No match") /* REG_NOMATCH */
+ "\0"
+#define REG_BADPAT_IDX (REG_NOMATCH_IDX + sizeof "No match")
+ gettext_noop ("Invalid regular expression") /* REG_BADPAT */
+ "\0"
+#define REG_ECOLLATE_IDX (REG_BADPAT_IDX + sizeof "Invalid regular expression")
+ gettext_noop ("Invalid collation character") /* REG_ECOLLATE */
+ "\0"
+#define REG_ECTYPE_IDX (REG_ECOLLATE_IDX + sizeof "Invalid collation character")
+ gettext_noop ("Invalid character class name") /* REG_ECTYPE */
+ "\0"
+#define REG_EESCAPE_IDX (REG_ECTYPE_IDX + sizeof "Invalid character class name")
+ gettext_noop ("Trailing backslash") /* REG_EESCAPE */
+ "\0"
+#define REG_ESUBREG_IDX (REG_EESCAPE_IDX + sizeof "Trailing backslash")
+ gettext_noop ("Invalid back reference") /* REG_ESUBREG */
+ "\0"
+#define REG_EBRACK_IDX (REG_ESUBREG_IDX + sizeof "Invalid back reference")
+ gettext_noop ("Unmatched [ or [^") /* REG_EBRACK */
+ "\0"
+#define REG_EPAREN_IDX (REG_EBRACK_IDX + sizeof "Unmatched [ or [^")
+ gettext_noop ("Unmatched ( or \\(") /* REG_EPAREN */
+ "\0"
+#define REG_EBRACE_IDX (REG_EPAREN_IDX + sizeof "Unmatched ( or \\(")
+ gettext_noop ("Unmatched \\{") /* REG_EBRACE */
+ "\0"
+#define REG_BADBR_IDX (REG_EBRACE_IDX + sizeof "Unmatched \\{")
+ gettext_noop ("Invalid content of \\{\\}") /* REG_BADBR */
+ "\0"
+#define REG_ERANGE_IDX (REG_BADBR_IDX + sizeof "Invalid content of \\{\\}")
+ gettext_noop ("Invalid range end") /* REG_ERANGE */
+ "\0"
+#define REG_ESPACE_IDX (REG_ERANGE_IDX + sizeof "Invalid range end")
+ gettext_noop ("Memory exhausted") /* REG_ESPACE */
+ "\0"
+#define REG_BADRPT_IDX (REG_ESPACE_IDX + sizeof "Memory exhausted")
+ gettext_noop ("Invalid preceding regular expression") /* REG_BADRPT */
+ "\0"
+#define REG_EEND_IDX (REG_BADRPT_IDX + sizeof "Invalid preceding regular expression")
+ gettext_noop ("Premature end of regular expression") /* REG_EEND */
+ "\0"
+#define REG_ESIZE_IDX (REG_EEND_IDX + sizeof "Premature end of regular expression")
+ gettext_noop ("Regular expression too big") /* REG_ESIZE */
+ "\0"
+#define REG_ERPAREN_IDX (REG_ESIZE_IDX + sizeof "Regular expression too big")
+ gettext_noop ("Unmatched ) or \\)") /* REG_ERPAREN */
+ };
+
+static const size_t __re_error_msgid_idx[] =
+ {
+ REG_NOERROR_IDX,
+ REG_NOMATCH_IDX,
+ REG_BADPAT_IDX,
+ REG_ECOLLATE_IDX,
+ REG_ECTYPE_IDX,
+ REG_EESCAPE_IDX,
+ REG_ESUBREG_IDX,
+ REG_EBRACK_IDX,
+ REG_EPAREN_IDX,
+ REG_EBRACE_IDX,
+ REG_BADBR_IDX,
+ REG_ERANGE_IDX,
+ REG_ESPACE_IDX,
+ REG_BADRPT_IDX,
+ REG_EEND_IDX,
+ REG_ESIZE_IDX,
+ REG_ERPAREN_IDX
+ };
+
+/* Entry points for GNU code. */
+
+/* re_compile_pattern is the GNU regular expression compiler: it
+ compiles PATTERN (of length LENGTH) and puts the result in BUFP.
+ Returns 0 if the pattern was valid, otherwise an error string.
+
+ Assumes the `allocated' (and perhaps `buffer') and `translate' fields
+ are set in BUFP on entry. */
+
+#ifdef _LIBC
+const char *
+re_compile_pattern (pattern, length, bufp)
+ const char *pattern;
+ size_t length;
+ struct re_pattern_buffer *bufp;
+#else /* size_t might promote */
+const char *
+re_compile_pattern (const char *pattern, size_t length,
+ struct re_pattern_buffer *bufp)
+#endif
+{
+ reg_errcode_t ret;
+
+ /* And GNU code determines whether or not to get register information
+ by passing null for the REGS argument to re_match, etc., not by
+ setting no_sub, unless RE_NO_SUB is set. */
+ bufp->no_sub = !!(re_syntax_options & RE_NO_SUB);
+
+ /* Match anchors at newline. */
+ bufp->newline_anchor = 1;
+
+ ret = re_compile_internal (bufp, pattern, length, re_syntax_options);
+
+ if (!ret)
+ return NULL;
+ return gettext (__re_error_msgid + __re_error_msgid_idx[(int) ret]);
+}
+#ifdef _LIBC
+weak_alias (__re_compile_pattern, re_compile_pattern)
+#endif
+
+/* Set by `re_set_syntax' to the current regexp syntax to recognize. Can
+ also be assigned to arbitrarily: each pattern buffer stores its own
+ syntax, so it can be changed between regex compilations. */
+/* This has no initializer because initialized variables in Emacs
+ become read-only after dumping. */
+reg_syntax_t re_syntax_options;
+
+
+/* Specify the precise syntax of regexps for compilation. This provides
+ for compatibility for various utilities which historically have
+ different, incompatible syntaxes.
+
+ The argument SYNTAX is a bit mask comprised of the various bits
+ defined in regex.h. We return the old syntax. */
+
+reg_syntax_t
+re_set_syntax (syntax)
+ reg_syntax_t syntax;
+{
+ reg_syntax_t ret = re_syntax_options;
+
+ re_syntax_options = syntax;
+ return ret;
+}
+#ifdef _LIBC
+weak_alias (__re_set_syntax, re_set_syntax)
+#endif
+
+int
+re_compile_fastmap (bufp)
+ struct re_pattern_buffer *bufp;
+{
+ re_dfa_t *dfa = (re_dfa_t *) bufp->buffer;
+ char *fastmap = bufp->fastmap;
+
+ memset (fastmap, '\0', sizeof (char) * SBC_MAX);
+ re_compile_fastmap_iter (bufp, dfa->init_state, fastmap);
+ if (dfa->init_state != dfa->init_state_word)
+ re_compile_fastmap_iter (bufp, dfa->init_state_word, fastmap);
+ if (dfa->init_state != dfa->init_state_nl)
+ re_compile_fastmap_iter (bufp, dfa->init_state_nl, fastmap);
+ if (dfa->init_state != dfa->init_state_begbuf)
+ re_compile_fastmap_iter (bufp, dfa->init_state_begbuf, fastmap);
+ bufp->fastmap_accurate = 1;
+ return 0;
+}
+#ifdef _LIBC
+weak_alias (__re_compile_fastmap, re_compile_fastmap)
+#endif
+
+static inline void
+__attribute ((always_inline))
+re_set_fastmap (char *fastmap, bool icase, int ch)
+{
+ fastmap[ch] = 1;
+ if (icase)
+ fastmap[tolower (ch)] = 1;
+}
+
+/* Helper function for re_compile_fastmap.
+ Compile fastmap for the initial_state INIT_STATE. */
+
+static void
+re_compile_fastmap_iter (regex_t *bufp, const re_dfastate_t *init_state,
+ char *fastmap)
+{
+ re_dfa_t *dfa = (re_dfa_t *) bufp->buffer;
+ Idx node_cnt;
+ bool icase = (dfa->mb_cur_max == 1 && (bufp->syntax & RE_ICASE));
+ for (node_cnt = 0; node_cnt < init_state->nodes.nelem; ++node_cnt)
+ {
+ Idx node = init_state->nodes.elems[node_cnt];
+ re_token_type_t type = dfa->nodes[node].type;
+
+ if (type == CHARACTER)
+ {
+ re_set_fastmap (fastmap, icase, dfa->nodes[node].opr.c);
+#ifdef RE_ENABLE_I18N
+ if ((bufp->syntax & RE_ICASE) && dfa->mb_cur_max > 1)
+ {
+ unsigned char buf[MB_LEN_MAX];
+ unsigned char *p;
+ wchar_t wc;
+ mbstate_t state;
+
+ p = buf;
+ *p++ = dfa->nodes[node].opr.c;
+ while (++node < dfa->nodes_len
+ && dfa->nodes[node].type == CHARACTER
+ && dfa->nodes[node].mb_partial)
+ *p++ = dfa->nodes[node].opr.c;
+ memset (&state, '\0', sizeof (state));
+ if (mbrtowc (&wc, (const char *) buf, p - buf,
+ &state) == p - buf
+ && (__wcrtomb ((char *) buf, towlower (wc), &state)
+ != (size_t) -1))
+ re_set_fastmap (fastmap, false, buf[0]);
+ }
+#endif
+ }
+ else if (type == SIMPLE_BRACKET)
+ {
+ int i, ch;
+ for (i = 0, ch = 0; i < BITSET_WORDS; ++i)
+ {
+ int j;
+ bitset_word_t w = dfa->nodes[node].opr.sbcset[i];
+ for (j = 0; j < BITSET_WORD_BITS; ++j, ++ch)
+ if (w & ((bitset_word_t) 1 << j))
+ re_set_fastmap (fastmap, icase, ch);
+ }
+ }
+#ifdef RE_ENABLE_I18N
+ else if (type == COMPLEX_BRACKET)
+ {
+ Idx i;
+ re_charset_t *cset = dfa->nodes[node].opr.mbcset;
+ if (cset->non_match || cset->ncoll_syms || cset->nequiv_classes
+ || cset->nranges || cset->nchar_classes)
+ {
+# ifdef _LIBC
+ if (_NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES) != 0)
+ {
+ /* In this case we want to catch the bytes which are
+ the first byte of any collation elements.
+ e.g. In da_DK, we want to catch 'a' since "aa"
+ is a valid collation element, and don't catch
+ 'b' since 'b' is the only collation element
+ which starts from 'b'. */
+ const int32_t *table = (const int32_t *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB);
+ for (i = 0; i < SBC_MAX; ++i)
+ if (table[i] < 0)
+ re_set_fastmap (fastmap, icase, i);
+ }
+# else
+ if (dfa->mb_cur_max > 1)
+ for (i = 0; i < SBC_MAX; ++i)
+ if (__btowc (i) == WEOF)
+ re_set_fastmap (fastmap, icase, i);
+# endif /* not _LIBC */
+ }
+ for (i = 0; i < cset->nmbchars; ++i)
+ {
+ char buf[256];
+ mbstate_t state;
+ memset (&state, '\0', sizeof (state));
+ if (__wcrtomb (buf, cset->mbchars[i], &state) != (size_t) -1)
+ re_set_fastmap (fastmap, icase, *(unsigned char *) buf);
+ if ((bufp->syntax & RE_ICASE) && dfa->mb_cur_max > 1)
+ {
+ if (__wcrtomb (buf, towlower (cset->mbchars[i]), &state)
+ != (size_t) -1)
+ re_set_fastmap (fastmap, false, *(unsigned char *) buf);
+ }
+ }
+ }
+#endif /* RE_ENABLE_I18N */
+ else if (type == OP_PERIOD
+#ifdef RE_ENABLE_I18N
+ || type == OP_UTF8_PERIOD
+#endif /* RE_ENABLE_I18N */
+ || type == END_OF_RE)
+ {
+ memset (fastmap, '\1', sizeof (char) * SBC_MAX);
+ if (type == END_OF_RE)
+ bufp->can_be_null = 1;
+ return;
+ }
+ }
+}
+
+/* Entry point for POSIX code. */
+/* regcomp takes a regular expression as a string and compiles it.
+
+ PREG is a regex_t *. We do not expect any fields to be initialized,
+ since POSIX says we shouldn't. Thus, we set
+
+ `buffer' to the compiled pattern;
+ `used' to the length of the compiled pattern;
+ `syntax' to RE_SYNTAX_POSIX_EXTENDED if the
+ REG_EXTENDED bit in CFLAGS is set; otherwise, to
+ RE_SYNTAX_POSIX_BASIC;
+ `newline_anchor' to REG_NEWLINE being set in CFLAGS;
+ `fastmap' to an allocated space for the fastmap;
+ `fastmap_accurate' to zero;
+ `re_nsub' to the number of subexpressions in PATTERN.
+
+ PATTERN is the address of the pattern string.
+
+ CFLAGS is a series of bits which affect compilation.
+
+ If REG_EXTENDED is set, we use POSIX extended syntax; otherwise, we
+ use POSIX basic syntax.
+
+ If REG_NEWLINE is set, then . and [^...] don't match newline.
+ Also, regexec will try a match beginning after every newline.
+
+ If REG_ICASE is set, then we considers upper- and lowercase
+ versions of letters to be equivalent when matching.
+
+ If REG_NOSUB is set, then when PREG is passed to regexec, that
+ routine will report only success or failure, and nothing about the
+ registers.
+
+ It returns 0 if it succeeds, nonzero if it doesn't. (See regex.h for
+ the return codes and their meanings.) */
+
+int
+regcomp (preg, pattern, cflags)
+ regex_t *_Restrict_ preg;
+ const char *_Restrict_ pattern;
+ int cflags;
+{
+ reg_errcode_t ret;
+ reg_syntax_t syntax = ((cflags & REG_EXTENDED) ? RE_SYNTAX_POSIX_EXTENDED
+ : RE_SYNTAX_POSIX_BASIC);
+
+ preg->buffer = NULL;
+ preg->allocated = 0;
+ preg->used = 0;
+
+ /* Try to allocate space for the fastmap. */
+ preg->fastmap = re_malloc (char, SBC_MAX);
+ if (BE (preg->fastmap == NULL, 0))
+ return REG_ESPACE;
+
+ syntax |= (cflags & REG_ICASE) ? RE_ICASE : 0;
+
+ /* If REG_NEWLINE is set, newlines are treated differently. */
+ if (cflags & REG_NEWLINE)
+ { /* REG_NEWLINE implies neither . nor [^...] match newline. */
+ syntax &= ~RE_DOT_NEWLINE;
+ syntax |= RE_HAT_LISTS_NOT_NEWLINE;
+ /* It also changes the matching behavior. */
+ preg->newline_anchor = 1;
+ }
+ else
+ preg->newline_anchor = 0;
+ preg->no_sub = !!(cflags & REG_NOSUB);
+ preg->translate = NULL;
+
+ ret = re_compile_internal (preg, pattern, strlen (pattern), syntax);
+
+ /* POSIX doesn't distinguish between an unmatched open-group and an
+ unmatched close-group: both are REG_EPAREN. */
+ if (ret == REG_ERPAREN)
+ ret = REG_EPAREN;
+
+ /* We have already checked preg->fastmap != NULL. */
+ if (BE (ret == REG_NOERROR, 1))
+ /* Compute the fastmap now, since regexec cannot modify the pattern
+ buffer. This function never fails in this implementation. */
+ (void) re_compile_fastmap (preg);
+ else
+ {
+ /* Some error occurred while compiling the expression. */
+ re_free (preg->fastmap);
+ preg->fastmap = NULL;
+ }
+
+ return (int) ret;
+}
+#ifdef _LIBC
+weak_alias (__regcomp, regcomp)
+#endif
+
+/* Returns a message corresponding to an error code, ERRCODE, returned
+ from either regcomp or regexec. We don't use PREG here. */
+
+#ifdef _LIBC
+size_t
+regerror (errcode, preg, errbuf, errbuf_size)
+ int errcode;
+ const regex_t *_Restrict_ preg;
+ char *_Restrict_ errbuf;
+ size_t errbuf_size;
+#else /* size_t might promote */
+size_t
+regerror (int errcode, const regex_t *_Restrict_ preg,
+ char *_Restrict_ errbuf, size_t errbuf_size)
+#endif
+{
+ const char *msg;
+ size_t msg_size;
+
+ if (BE (errcode < 0
+ || errcode >= (int) (sizeof (__re_error_msgid_idx)
+ / sizeof (__re_error_msgid_idx[0])), 0))
+ /* Only error codes returned by the rest of the code should be passed
+ to this routine. If we are given anything else, or if other regex
+ code generates an invalid error code, then the program has a bug.
+ Dump core so we can fix it. */
+ abort ();
+
+ msg = gettext (__re_error_msgid + __re_error_msgid_idx[errcode]);
+
+ msg_size = strlen (msg) + 1; /* Includes the null. */
+
+ if (BE (errbuf_size != 0, 1))
+ {
+ size_t cpy_size = msg_size;
+ if (BE (msg_size > errbuf_size, 0))
+ {
+ cpy_size = errbuf_size - 1;
+ errbuf[cpy_size] = '\0';
+ }
+ memcpy (errbuf, msg, cpy_size);
+ }
+
+ return msg_size;
+}
+#ifdef _LIBC
+weak_alias (__regerror, regerror)
+#endif
+
+
+#ifdef RE_ENABLE_I18N
+/* This static array is used for the map to single-byte characters when
+ UTF-8 is used. Otherwise we would allocate memory just to initialize
+ it the same all the time. UTF-8 is the preferred encoding so this is
+ a worthwhile optimization. */
+static const bitset_t utf8_sb_map =
+{
+ /* Set the first 128 bits. */
+# if 4 * BITSET_WORD_BITS < ASCII_CHARS
+# error "bitset_word_t is narrower than 32 bits"
+# elif 3 * BITSET_WORD_BITS < ASCII_CHARS
+ BITSET_WORD_MAX, BITSET_WORD_MAX, BITSET_WORD_MAX,
+# elif 2 * BITSET_WORD_BITS < ASCII_CHARS
+ BITSET_WORD_MAX, BITSET_WORD_MAX,
+# elif 1 * BITSET_WORD_BITS < ASCII_CHARS
+ BITSET_WORD_MAX,
+# endif
+ (BITSET_WORD_MAX
+ >> (SBC_MAX % BITSET_WORD_BITS == 0
+ ? 0
+ : BITSET_WORD_BITS - SBC_MAX % BITSET_WORD_BITS))
+};
+#endif
+
+
+static void
+free_dfa_content (re_dfa_t *dfa)
+{
+ Idx i, j;
+
+ if (dfa->nodes)
+ for (i = 0; i < dfa->nodes_len; ++i)
+ free_token (dfa->nodes + i);
+ re_free (dfa->nexts);
+ for (i = 0; i < dfa->nodes_len; ++i)
+ {
+ if (dfa->eclosures != NULL)
+ re_node_set_free (dfa->eclosures + i);
+ if (dfa->inveclosures != NULL)
+ re_node_set_free (dfa->inveclosures + i);
+ if (dfa->edests != NULL)
+ re_node_set_free (dfa->edests + i);
+ }
+ re_free (dfa->edests);
+ re_free (dfa->eclosures);
+ re_free (dfa->inveclosures);
+ re_free (dfa->nodes);
+
+ if (dfa->state_table)
+ for (i = 0; i <= dfa->state_hash_mask; ++i)
+ {
+ struct re_state_table_entry *entry = dfa->state_table + i;
+ for (j = 0; j < entry->num; ++j)
+ {
+ re_dfastate_t *state = entry->array[j];
+ free_state (state);
+ }
+ re_free (entry->array);
+ }
+ re_free (dfa->state_table);
+#ifdef RE_ENABLE_I18N
+ if (dfa->sb_char != utf8_sb_map)
+ re_free (dfa->sb_char);
+#endif
+ re_free (dfa->subexp_map);
+#ifdef DEBUG
+ re_free (dfa->re_str);
+#endif
+
+ re_free (dfa);
+}
+
+
+/* Free dynamically allocated space used by PREG. */
+
+void
+regfree (preg)
+ regex_t *preg;
+{
+ re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+ if (BE (dfa != NULL, 1))
+ free_dfa_content (dfa);
+ preg->buffer = NULL;
+ preg->allocated = 0;
+
+ re_free (preg->fastmap);
+ preg->fastmap = NULL;
+
+ re_free (preg->translate);
+ preg->translate = NULL;
+}
+#ifdef _LIBC
+weak_alias (__regfree, regfree)
+#endif
+
+/* Entry points compatible with 4.2 BSD regex library. We don't define
+ them unless specifically requested. */
+
+#if defined _REGEX_RE_COMP || defined _LIBC
+
+/* BSD has one and only one pattern buffer. */
+static struct re_pattern_buffer re_comp_buf;
+
+char *
+# ifdef _LIBC
+/* Make these definitions weak in libc, so POSIX programs can redefine
+ these names if they don't use our functions, and still use
+ regcomp/regexec above without link errors. */
+weak_function
+# endif
+re_comp (s)
+ const char *s;
+{
+ reg_errcode_t ret;
+ char *fastmap;
+
+ if (!s)
+ {
+ if (!re_comp_buf.buffer)
+ return gettext ("No previous regular expression");
+ return 0;
+ }
+
+ if (re_comp_buf.buffer)
+ {
+ fastmap = re_comp_buf.fastmap;
+ re_comp_buf.fastmap = NULL;
+ __regfree (&re_comp_buf);
+ memset (&re_comp_buf, '\0', sizeof (re_comp_buf));
+ re_comp_buf.fastmap = fastmap;
+ }
+
+ if (re_comp_buf.fastmap == NULL)
+ {
+ re_comp_buf.fastmap = (char *) malloc (SBC_MAX);
+ if (re_comp_buf.fastmap == NULL)
+ return (char *) gettext (__re_error_msgid
+ + __re_error_msgid_idx[(int) REG_ESPACE]);
+ }
+
+ /* Since `re_exec' always passes NULL for the `regs' argument, we
+ don't need to initialize the pattern buffer fields which affect it. */
+
+ /* Match anchors at newlines. */
+ re_comp_buf.newline_anchor = 1;
+
+ ret = re_compile_internal (&re_comp_buf, s, strlen (s), re_syntax_options);
+
+ if (!ret)
+ return NULL;
+
+ /* Yes, we're discarding `const' here if !HAVE_LIBINTL. */
+ return (char *) gettext (__re_error_msgid + __re_error_msgid_idx[(int) ret]);
+}
+
+#ifdef _LIBC
+libc_freeres_fn (free_mem)
+{
+ __regfree (&re_comp_buf);
+}
+#endif
+
+#endif /* _REGEX_RE_COMP */
+
+/* Internal entry point.
+ Compile the regular expression PATTERN, whose length is LENGTH.
+ SYNTAX indicate regular expression's syntax. */
+
+static reg_errcode_t
+re_compile_internal (regex_t *preg, const char * pattern, size_t length,
+ reg_syntax_t syntax)
+{
+ reg_errcode_t err = REG_NOERROR;
+ re_dfa_t *dfa;
+ re_string_t regexp;
+
+ /* Initialize the pattern buffer. */
+ preg->fastmap_accurate = 0;
+ preg->syntax = syntax;
+ preg->not_bol = preg->not_eol = 0;
+ preg->used = 0;
+ preg->re_nsub = 0;
+ preg->can_be_null = 0;
+ preg->regs_allocated = REGS_UNALLOCATED;
+
+ /* Initialize the dfa. */
+ dfa = (re_dfa_t *) preg->buffer;
+ if (BE (preg->allocated < sizeof (re_dfa_t), 0))
+ {
+ /* If zero allocated, but buffer is non-null, try to realloc
+ enough space. This loses if buffer's address is bogus, but
+ that is the user's responsibility. If ->buffer is NULL this
+ is a simple allocation. */
+ dfa = re_realloc (preg->buffer, re_dfa_t, 1);
+ if (dfa == NULL)
+ return REG_ESPACE;
+ preg->allocated = sizeof (re_dfa_t);
+ preg->buffer = (unsigned char *) dfa;
+ }
+ preg->used = sizeof (re_dfa_t);
+
+ err = init_dfa (dfa, length);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ free_dfa_content (dfa);
+ preg->buffer = NULL;
+ preg->allocated = 0;
+ return err;
+ }
+#ifdef DEBUG
+ /* Note: length+1 will not overflow since it is checked in init_dfa. */
+ dfa->re_str = re_malloc (char, length + 1);
+ strncpy (dfa->re_str, pattern, length + 1);
+#endif
+
+ __libc_lock_init (dfa->lock);
+
+ err = re_string_construct (&regexp, pattern, length, preg->translate,
+ syntax & RE_ICASE, dfa);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ re_compile_internal_free_return:
+ free_workarea_compile (preg);
+ re_string_destruct (&regexp);
+ free_dfa_content (dfa);
+ preg->buffer = NULL;
+ preg->allocated = 0;
+ return err;
+ }
+
+ /* Parse the regular expression, and build a structure tree. */
+ preg->re_nsub = 0;
+ dfa->str_tree = parse (&regexp, preg, syntax, &err);
+ if (BE (dfa->str_tree == NULL, 0))
+ goto re_compile_internal_free_return;
+
+ /* Analyze the tree and create the nfa. */
+ err = analyze (preg);
+ if (BE (err != REG_NOERROR, 0))
+ goto re_compile_internal_free_return;
+
+#ifdef RE_ENABLE_I18N
+ /* If possible, do searching in single byte encoding to speed things up. */
+ if (dfa->is_utf8 && !(syntax & RE_ICASE) && preg->translate == NULL)
+ optimize_utf8 (dfa);
+#endif
+
+ /* Then create the initial state of the dfa. */
+ err = create_initial_state (dfa);
+
+ /* Release work areas. */
+ free_workarea_compile (preg);
+ re_string_destruct (&regexp);
+
+ if (BE (err != REG_NOERROR, 0))
+ {
+ free_dfa_content (dfa);
+ preg->buffer = NULL;
+ preg->allocated = 0;
+ }
+
+ return err;
+}
+
+/* Initialize DFA. We use the length of the regular expression PAT_LEN
+ as the initial length of some arrays. */
+
+static reg_errcode_t
+init_dfa (re_dfa_t *dfa, size_t pat_len)
+{
+ __re_size_t table_size;
+#ifdef RE_ENABLE_I18N
+ size_t max_i18n_object_size = MAX (sizeof (wchar_t), sizeof (wctype_t));
+#else
+ size_t max_i18n_object_size = 0;
+#endif
+ size_t max_object_size =
+ MAX (sizeof (struct re_state_table_entry),
+ MAX (sizeof (re_token_t),
+ MAX (sizeof (re_node_set),
+ MAX (sizeof (regmatch_t),
+ max_i18n_object_size))));
+
+ memset (dfa, '\0', sizeof (re_dfa_t));
+
+ /* Force allocation of str_tree_storage the first time. */
+ dfa->str_tree_storage_idx = BIN_TREE_STORAGE_SIZE;
+
+ /* Avoid overflows. The extra "/ 2" is for the table_size doubling
+ calculation below, and for similar doubling calculations
+ elsewhere. And it's <= rather than <, because some of the
+ doubling calculations add 1 afterwards. */
+ if (BE (SIZE_MAX / max_object_size / 2 <= pat_len, 0))
+ return REG_ESPACE;
+
+ dfa->nodes_alloc = pat_len + 1;
+ dfa->nodes = re_malloc (re_token_t, dfa->nodes_alloc);
+
+ /* table_size = 2 ^ ceil(log pat_len) */
+ for (table_size = 1; ; table_size <<= 1)
+ if (table_size > pat_len)
+ break;
+
+ dfa->state_table = calloc (sizeof (struct re_state_table_entry), table_size);
+ dfa->state_hash_mask = table_size - 1;
+
+ dfa->mb_cur_max = MB_CUR_MAX;
+#ifdef _LIBC
+ if (dfa->mb_cur_max == 6
+ && strcmp (_NL_CURRENT (LC_CTYPE, _NL_CTYPE_CODESET_NAME), "UTF-8") == 0)
+ dfa->is_utf8 = 1;
+ dfa->map_notascii = (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MAP_TO_NONASCII)
+ != 0);
+#else
+ if (strcmp (locale_charset (), "UTF-8") == 0)
+ dfa->is_utf8 = 1;
+
+ /* We check exhaustively in the loop below if this charset is a
+ superset of ASCII. */
+ dfa->map_notascii = 0;
+#endif
+
+#ifdef RE_ENABLE_I18N
+ if (dfa->mb_cur_max > 1)
+ {
+ if (dfa->is_utf8)
+ dfa->sb_char = (re_bitset_ptr_t) utf8_sb_map;
+ else
+ {
+ int i, j, ch;
+
+ dfa->sb_char = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);
+ if (BE (dfa->sb_char == NULL, 0))
+ return REG_ESPACE;
+
+ /* Set the bits corresponding to single byte chars. */
+ for (i = 0, ch = 0; i < BITSET_WORDS; ++i)
+ for (j = 0; j < BITSET_WORD_BITS; ++j, ++ch)
+ {
+ wint_t wch = __btowc (ch);
+ if (wch != WEOF)
+ dfa->sb_char[i] |= (bitset_word_t) 1 << j;
+# ifndef _LIBC
+ if (isascii (ch) && wch != ch)
+ dfa->map_notascii = 1;
+# endif
+ }
+ }
+ }
+#endif
+
+ if (BE (dfa->nodes == NULL || dfa->state_table == NULL, 0))
+ return REG_ESPACE;
+ return REG_NOERROR;
+}
+
+/* Initialize WORD_CHAR table, which indicate which character is
+ "word". In this case "word" means that it is the word construction
+ character used by some operators like "\<", "\>", etc. */
+
+static void
+internal_function
+init_word_char (re_dfa_t *dfa)
+{
+ int i, j, ch;
+ dfa->word_ops_used = 1;
+ for (i = 0, ch = 0; i < BITSET_WORDS; ++i)
+ for (j = 0; j < BITSET_WORD_BITS; ++j, ++ch)
+ if (isalnum (ch) || ch == '_')
+ dfa->word_char[i] |= (bitset_word_t) 1 << j;
+}
+
+/* Free the work area which are only used while compiling. */
+
+static void
+free_workarea_compile (regex_t *preg)
+{
+ re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+ bin_tree_storage_t *storage, *next;
+ for (storage = dfa->str_tree_storage; storage; storage = next)
+ {
+ next = storage->next;
+ re_free (storage);
+ }
+ dfa->str_tree_storage = NULL;
+ dfa->str_tree_storage_idx = BIN_TREE_STORAGE_SIZE;
+ dfa->str_tree = NULL;
+ re_free (dfa->org_indices);
+ dfa->org_indices = NULL;
+}
+
+/* Create initial states for all contexts. */
+
+static reg_errcode_t
+create_initial_state (re_dfa_t *dfa)
+{
+ Idx first, i;
+ reg_errcode_t err;
+ re_node_set init_nodes;
+
+ /* Initial states have the epsilon closure of the node which is
+ the first node of the regular expression. */
+ first = dfa->str_tree->first->node_idx;
+ dfa->init_node = first;
+ err = re_node_set_init_copy (&init_nodes, dfa->eclosures + first);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+
+ /* The back-references which are in initial states can epsilon transit,
+ since in this case all of the subexpressions can be null.
+ Then we add epsilon closures of the nodes which are the next nodes of
+ the back-references. */
+ if (dfa->nbackref > 0)
+ for (i = 0; i < init_nodes.nelem; ++i)
+ {
+ Idx node_idx = init_nodes.elems[i];
+ re_token_type_t type = dfa->nodes[node_idx].type;
+
+ Idx clexp_idx;
+ if (type != OP_BACK_REF)
+ continue;
+ for (clexp_idx = 0; clexp_idx < init_nodes.nelem; ++clexp_idx)
+ {
+ re_token_t *clexp_node;
+ clexp_node = dfa->nodes + init_nodes.elems[clexp_idx];
+ if (clexp_node->type == OP_CLOSE_SUBEXP
+ && clexp_node->opr.idx == dfa->nodes[node_idx].opr.idx)
+ break;
+ }
+ if (clexp_idx == init_nodes.nelem)
+ continue;
+
+ if (type == OP_BACK_REF)
+ {
+ Idx dest_idx = dfa->edests[node_idx].elems[0];
+ if (!re_node_set_contains (&init_nodes, dest_idx))
+ {
+ re_node_set_merge (&init_nodes, dfa->eclosures + dest_idx);
+ i = 0;
+ }
+ }
+ }
+
+ /* It must be the first time to invoke acquire_state. */
+ dfa->init_state = re_acquire_state_context (&err, dfa, &init_nodes, 0);
+ /* We don't check ERR here, since the initial state must not be NULL. */
+ if (BE (dfa->init_state == NULL, 0))
+ return err;
+ if (dfa->init_state->has_constraint)
+ {
+ dfa->init_state_word = re_acquire_state_context (&err, dfa, &init_nodes,
+ CONTEXT_WORD);
+ dfa->init_state_nl = re_acquire_state_context (&err, dfa, &init_nodes,
+ CONTEXT_NEWLINE);
+ dfa->init_state_begbuf = re_acquire_state_context (&err, dfa,
+ &init_nodes,
+ CONTEXT_NEWLINE
+ | CONTEXT_BEGBUF);
+ if (BE (dfa->init_state_word == NULL || dfa->init_state_nl == NULL
+ || dfa->init_state_begbuf == NULL, 0))
+ return err;
+ }
+ else
+ dfa->init_state_word = dfa->init_state_nl
+ = dfa->init_state_begbuf = dfa->init_state;
+
+ re_node_set_free (&init_nodes);
+ return REG_NOERROR;
+}
+
+#ifdef RE_ENABLE_I18N
+/* If it is possible to do searching in single byte encoding instead of UTF-8
+ to speed things up, set dfa->mb_cur_max to 1, clear is_utf8 and change
+ DFA nodes where needed. */
+
+static void
+optimize_utf8 (re_dfa_t *dfa)
+{
+ Idx node;
+ int i;
+ bool mb_chars = false;
+ bool has_period = false;
+
+ for (node = 0; node < dfa->nodes_len; ++node)
+ switch (dfa->nodes[node].type)
+ {
+ case CHARACTER:
+ if (dfa->nodes[node].opr.c >= ASCII_CHARS)
+ mb_chars = true;
+ break;
+ case ANCHOR:
+ switch (dfa->nodes[node].opr.idx)
+ {
+ case LINE_FIRST:
+ case LINE_LAST:
+ case BUF_FIRST:
+ case BUF_LAST:
+ break;
+ default:
+ /* Word anchors etc. cannot be handled. */
+ return;
+ }
+ break;
+ case OP_PERIOD:
+ has_period = true;
+ break;
+ case OP_BACK_REF:
+ case OP_ALT:
+ case END_OF_RE:
+ case OP_DUP_ASTERISK:
+ case OP_OPEN_SUBEXP:
+ case OP_CLOSE_SUBEXP:
+ break;
+ case COMPLEX_BRACKET:
+ return;
+ case SIMPLE_BRACKET:
+ /* Just double check. */
+ {
+ int rshift = (ASCII_CHARS % BITSET_WORD_BITS == 0
+ ? 0
+ : BITSET_WORD_BITS - ASCII_CHARS % BITSET_WORD_BITS);
+ for (i = ASCII_CHARS / BITSET_WORD_BITS; i < BITSET_WORDS; ++i)
+ {
+ if (dfa->nodes[node].opr.sbcset[i] >> rshift != 0)
+ return;
+ rshift = 0;
+ }
+ }
+ break;
+ default:
+ abort ();
+ }
+
+ if (mb_chars || has_period)
+ for (node = 0; node < dfa->nodes_len; ++node)
+ {
+ if (dfa->nodes[node].type == CHARACTER
+ && dfa->nodes[node].opr.c >= ASCII_CHARS)
+ dfa->nodes[node].mb_partial = 0;
+ else if (dfa->nodes[node].type == OP_PERIOD)
+ dfa->nodes[node].type = OP_UTF8_PERIOD;
+ }
+
+ /* The search can be in single byte locale. */
+ dfa->mb_cur_max = 1;
+ dfa->is_utf8 = 0;
+ dfa->has_mb_node = dfa->nbackref > 0 || has_period;
+}
+#endif
+
+/* Analyze the structure tree, and calculate "first", "next", "edest",
+ "eclosure", and "inveclosure". */
+
+static reg_errcode_t
+analyze (regex_t *preg)
+{
+ re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+ reg_errcode_t ret;
+
+ /* Allocate arrays. */
+ dfa->nexts = re_malloc (Idx, dfa->nodes_alloc);
+ dfa->org_indices = re_malloc (Idx, dfa->nodes_alloc);
+ dfa->edests = re_malloc (re_node_set, dfa->nodes_alloc);
+ dfa->eclosures = re_malloc (re_node_set, dfa->nodes_alloc);
+ if (BE (dfa->nexts == NULL || dfa->org_indices == NULL || dfa->edests == NULL
+ || dfa->eclosures == NULL, 0))
+ return REG_ESPACE;
+
+ dfa->subexp_map = re_malloc (Idx, preg->re_nsub);
+ if (dfa->subexp_map != NULL)
+ {
+ Idx i;
+ for (i = 0; i < preg->re_nsub; i++)
+ dfa->subexp_map[i] = i;
+ preorder (dfa->str_tree, optimize_subexps, dfa);
+ for (i = 0; i < preg->re_nsub; i++)
+ if (dfa->subexp_map[i] != i)
+ break;
+ if (i == preg->re_nsub)
+ {
+ free (dfa->subexp_map);
+ dfa->subexp_map = NULL;
+ }
+ }
+
+ ret = postorder (dfa->str_tree, lower_subexps, preg);
+ if (BE (ret != REG_NOERROR, 0))
+ return ret;
+ ret = postorder (dfa->str_tree, calc_first, dfa);
+ if (BE (ret != REG_NOERROR, 0))
+ return ret;
+ preorder (dfa->str_tree, calc_next, dfa);
+ ret = preorder (dfa->str_tree, link_nfa_nodes, dfa);
+ if (BE (ret != REG_NOERROR, 0))
+ return ret;
+ ret = calc_eclosure (dfa);
+ if (BE (ret != REG_NOERROR, 0))
+ return ret;
+
+ /* We only need this during the prune_impossible_nodes pass in regexec.c;
+ skip it if p_i_n will not run, as calc_inveclosure can be quadratic. */
+ if ((!preg->no_sub && preg->re_nsub > 0 && dfa->has_plural_match)
+ || dfa->nbackref)
+ {
+ dfa->inveclosures = re_malloc (re_node_set, dfa->nodes_len);
+ if (BE (dfa->inveclosures == NULL, 0))
+ return REG_ESPACE;
+ ret = calc_inveclosure (dfa);
+ }
+
+ return ret;
+}
+
+/* Our parse trees are very unbalanced, so we cannot use a stack to
+ implement parse tree visits. Instead, we use parent pointers and
+ some hairy code in these two functions. */
+static reg_errcode_t
+postorder (bin_tree_t *root, reg_errcode_t (fn (void *, bin_tree_t *)),
+ void *extra)
+{
+ bin_tree_t *node, *prev;
+
+ for (node = root; ; )
+ {
+ /* Descend down the tree, preferably to the left (or to the right
+ if that's the only child). */
+ while (node->left || node->right)
+ if (node->left)
+ node = node->left;
+ else
+ node = node->right;
+
+ do
+ {
+ reg_errcode_t err = fn (extra, node);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ if (node->parent == NULL)
+ return REG_NOERROR;
+ prev = node;
+ node = node->parent;
+ }
+ /* Go up while we have a node that is reached from the right. */
+ while (node->right == prev || node->right == NULL);
+ node = node->right;
+ }
+}
+
+static reg_errcode_t
+preorder (bin_tree_t *root, reg_errcode_t (fn (void *, bin_tree_t *)),
+ void *extra)
+{
+ bin_tree_t *node;
+
+ for (node = root; ; )
+ {
+ reg_errcode_t err = fn (extra, node);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+
+ /* Go to the left node, or up and to the right. */
+ if (node->left)
+ node = node->left;
+ else
+ {
+ bin_tree_t *prev = NULL;
+ while (node->right == prev || node->right == NULL)
+ {
+ prev = node;
+ node = node->parent;
+ if (!node)
+ return REG_NOERROR;
+ }
+ node = node->right;
+ }
+ }
+}
+
+/* Optimization pass: if a SUBEXP is entirely contained, strip it and tell
+ re_search_internal to map the inner one's opr.idx to this one's. Adjust
+ backreferences as well. Requires a preorder visit. */
+static reg_errcode_t
+optimize_subexps (void *extra, bin_tree_t *node)
+{
+ re_dfa_t *dfa = (re_dfa_t *) extra;
+
+ if (node->token.type == OP_BACK_REF && dfa->subexp_map)
+ {
+ int idx = node->token.opr.idx;
+ node->token.opr.idx = dfa->subexp_map[idx];
+ dfa->used_bkref_map |= 1 << node->token.opr.idx;
+ }
+
+ else if (node->token.type == SUBEXP
+ && node->left && node->left->token.type == SUBEXP)
+ {
+ Idx other_idx = node->left->token.opr.idx;
+
+ node->left = node->left->left;
+ if (node->left)
+ node->left->parent = node;
+
+ dfa->subexp_map[other_idx] = dfa->subexp_map[node->token.opr.idx];
+ if (other_idx < BITSET_WORD_BITS)
+ dfa->used_bkref_map &= ~((bitset_word_t) 1 << other_idx);
+ }
+
+ return REG_NOERROR;
+}
+
+/* Lowering pass: Turn each SUBEXP node into the appropriate concatenation
+ of OP_OPEN_SUBEXP, the body of the SUBEXP (if any) and OP_CLOSE_SUBEXP. */
+static reg_errcode_t
+lower_subexps (void *extra, bin_tree_t *node)
+{
+ regex_t *preg = (regex_t *) extra;
+ reg_errcode_t err = REG_NOERROR;
+
+ if (node->left && node->left->token.type == SUBEXP)
+ {
+ node->left = lower_subexp (&err, preg, node->left);
+ if (node->left)
+ node->left->parent = node;
+ }
+ if (node->right && node->right->token.type == SUBEXP)
+ {
+ node->right = lower_subexp (&err, preg, node->right);
+ if (node->right)
+ node->right->parent = node;
+ }
+
+ return err;
+}
+
+static bin_tree_t *
+lower_subexp (reg_errcode_t *err, regex_t *preg, bin_tree_t *node)
+{
+ re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+ bin_tree_t *body = node->left;
+ bin_tree_t *op, *cls, *tree1, *tree;
+
+ if (preg->no_sub
+ /* We do not optimize empty subexpressions, because otherwise we may
+ have bad CONCAT nodes with NULL children. This is obviously not
+ very common, so we do not lose much. An example that triggers
+ this case is the sed "script" /\(\)/x. */
+ && node->left != NULL
+ && (node->token.opr.idx >= BITSET_WORD_BITS
+ || !(dfa->used_bkref_map
+ & ((bitset_word_t) 1 << node->token.opr.idx))))
+ return node->left;
+
+ /* Convert the SUBEXP node to the concatenation of an
+ OP_OPEN_SUBEXP, the contents, and an OP_CLOSE_SUBEXP. */
+ op = create_tree (dfa, NULL, NULL, OP_OPEN_SUBEXP);
+ cls = create_tree (dfa, NULL, NULL, OP_CLOSE_SUBEXP);
+ tree1 = body ? create_tree (dfa, body, cls, CONCAT) : cls;
+ tree = create_tree (dfa, op, tree1, CONCAT);
+ if (BE (tree == NULL || tree1 == NULL || op == NULL || cls == NULL, 0))
+ {
+ *err = REG_ESPACE;
+ return NULL;
+ }
+
+ op->token.opr.idx = cls->token.opr.idx = node->token.opr.idx;
+ op->token.opt_subexp = cls->token.opt_subexp = node->token.opt_subexp;
+ return tree;
+}
+
+/* Pass 1 in building the NFA: compute FIRST and create unlinked automaton
+ nodes. Requires a postorder visit. */
+static reg_errcode_t
+calc_first (void *extra, bin_tree_t *node)
+{
+ re_dfa_t *dfa = (re_dfa_t *) extra;
+ if (node->token.type == CONCAT)
+ {
+ node->first = node->left->first;
+ node->node_idx = node->left->node_idx;
+ }
+ else
+ {
+ node->first = node;
+ node->node_idx = re_dfa_add_node (dfa, node->token);
+ if (BE (node->node_idx == REG_MISSING, 0))
+ return REG_ESPACE;
+ }
+ return REG_NOERROR;
+}
+
+/* Pass 2: compute NEXT on the tree. Preorder visit. */
+static reg_errcode_t
+calc_next (void *extra, bin_tree_t *node)
+{
+ switch (node->token.type)
+ {
+ case OP_DUP_ASTERISK:
+ node->left->next = node;
+ break;
+ case CONCAT:
+ node->left->next = node->right->first;
+ node->right->next = node->next;
+ break;
+ default:
+ if (node->left)
+ node->left->next = node->next;
+ if (node->right)
+ node->right->next = node->next;
+ break;
+ }
+ return REG_NOERROR;
+}
+
+/* Pass 3: link all DFA nodes to their NEXT node (any order will do). */
+static reg_errcode_t
+link_nfa_nodes (void *extra, bin_tree_t *node)
+{
+ re_dfa_t *dfa = (re_dfa_t *) extra;
+ Idx idx = node->node_idx;
+ reg_errcode_t err = REG_NOERROR;
+
+ switch (node->token.type)
+ {
+ case CONCAT:
+ break;
+
+ case END_OF_RE:
+ assert (node->next == NULL);
+ break;
+
+ case OP_DUP_ASTERISK:
+ case OP_ALT:
+ {
+ Idx left, right;
+ dfa->has_plural_match = 1;
+ if (node->left != NULL)
+ left = node->left->first->node_idx;
+ else
+ left = node->next->node_idx;
+ if (node->right != NULL)
+ right = node->right->first->node_idx;
+ else
+ right = node->next->node_idx;
+ assert (REG_VALID_INDEX (left));
+ assert (REG_VALID_INDEX (right));
+ err = re_node_set_init_2 (dfa->edests + idx, left, right);
+ }
+ break;
+
+ case ANCHOR:
+ case OP_OPEN_SUBEXP:
+ case OP_CLOSE_SUBEXP:
+ err = re_node_set_init_1 (dfa->edests + idx, node->next->node_idx);
+ break;
+
+ case OP_BACK_REF:
+ dfa->nexts[idx] = node->next->node_idx;
+ if (node->token.type == OP_BACK_REF)
+ re_node_set_init_1 (dfa->edests + idx, dfa->nexts[idx]);
+ break;
+
+ default:
+ assert (!IS_EPSILON_NODE (node->token.type));
+ dfa->nexts[idx] = node->next->node_idx;
+ break;
+ }
+
+ return err;
+}
+
+/* Duplicate the epsilon closure of the node ROOT_NODE.
+ Note that duplicated nodes have constraint INIT_CONSTRAINT in addition
+ to their own constraint. */
+
+static reg_errcode_t
+internal_function
+duplicate_node_closure (re_dfa_t *dfa, Idx top_org_node, Idx top_clone_node,
+ Idx root_node, unsigned int init_constraint)
+{
+ Idx org_node, clone_node;
+ bool ok;
+ unsigned int constraint = init_constraint;
+ for (org_node = top_org_node, clone_node = top_clone_node;;)
+ {
+ Idx org_dest, clone_dest;
+ if (dfa->nodes[org_node].type == OP_BACK_REF)
+ {
+ /* If the back reference epsilon-transit, its destination must
+ also have the constraint. Then duplicate the epsilon closure
+ of the destination of the back reference, and store it in
+ edests of the back reference. */
+ org_dest = dfa->nexts[org_node];
+ re_node_set_empty (dfa->edests + clone_node);
+ clone_dest = duplicate_node (dfa, org_dest, constraint);
+ if (BE (clone_dest == REG_MISSING, 0))
+ return REG_ESPACE;
+ dfa->nexts[clone_node] = dfa->nexts[org_node];
+ ok = re_node_set_insert (dfa->edests + clone_node, clone_dest);
+ if (BE (! ok, 0))
+ return REG_ESPACE;
+ }
+ else if (dfa->edests[org_node].nelem == 0)
+ {
+ /* In case of the node can't epsilon-transit, don't duplicate the
+ destination and store the original destination as the
+ destination of the node. */
+ dfa->nexts[clone_node] = dfa->nexts[org_node];
+ break;
+ }
+ else if (dfa->edests[org_node].nelem == 1)
+ {
+ /* In case of the node can epsilon-transit, and it has only one
+ destination. */
+ org_dest = dfa->edests[org_node].elems[0];
+ re_node_set_empty (dfa->edests + clone_node);
+ if (dfa->nodes[org_node].type == ANCHOR)
+ {
+ /* In case of the node has another constraint, append it. */
+ if (org_node == root_node && clone_node != org_node)
+ {
+ /* ...but if the node is root_node itself, it means the
+ epsilon closure have a loop, then tie it to the
+ destination of the root_node. */
+ ok = re_node_set_insert (dfa->edests + clone_node, org_dest);
+ if (BE (! ok, 0))
+ return REG_ESPACE;
+ break;
+ }
+ constraint |= dfa->nodes[org_node].opr.ctx_type;
+ }
+ clone_dest = duplicate_node (dfa, org_dest, constraint);
+ if (BE (clone_dest == REG_MISSING, 0))
+ return REG_ESPACE;
+ ok = re_node_set_insert (dfa->edests + clone_node, clone_dest);
+ if (BE (! ok, 0))
+ return REG_ESPACE;
+ }
+ else /* dfa->edests[org_node].nelem == 2 */
+ {
+ /* In case of the node can epsilon-transit, and it has two
+ destinations. In the bin_tree_t and DFA, that's '|' and '*'. */
+ org_dest = dfa->edests[org_node].elems[0];
+ re_node_set_empty (dfa->edests + clone_node);
+ /* Search for a duplicated node which satisfies the constraint. */
+ clone_dest = search_duplicated_node (dfa, org_dest, constraint);
+ if (clone_dest == REG_MISSING)
+ {
+ /* There are no such a duplicated node, create a new one. */
+ reg_errcode_t err;
+ clone_dest = duplicate_node (dfa, org_dest, constraint);
+ if (BE (clone_dest == REG_MISSING, 0))
+ return REG_ESPACE;
+ ok = re_node_set_insert (dfa->edests + clone_node, clone_dest);
+ if (BE (! ok, 0))
+ return REG_ESPACE;
+ err = duplicate_node_closure (dfa, org_dest, clone_dest,
+ root_node, constraint);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ }
+ else
+ {
+ /* There are a duplicated node which satisfy the constraint,
+ use it to avoid infinite loop. */
+ ok = re_node_set_insert (dfa->edests + clone_node, clone_dest);
+ if (BE (! ok, 0))
+ return REG_ESPACE;
+ }
+
+ org_dest = dfa->edests[org_node].elems[1];
+ clone_dest = duplicate_node (dfa, org_dest, constraint);
+ if (BE (clone_dest == REG_MISSING, 0))
+ return REG_ESPACE;
+ ok = re_node_set_insert (dfa->edests + clone_node, clone_dest);
+ if (BE (! ok, 0))
+ return REG_ESPACE;
+ }
+ org_node = org_dest;
+ clone_node = clone_dest;
+ }
+ return REG_NOERROR;
+}
+
+/* Search for a node which is duplicated from the node ORG_NODE, and
+ satisfies the constraint CONSTRAINT. */
+
+static Idx
+search_duplicated_node (const re_dfa_t *dfa, Idx org_node,
+ unsigned int constraint)
+{
+ Idx idx;
+ for (idx = dfa->nodes_len - 1; dfa->nodes[idx].duplicated && idx > 0; --idx)
+ {
+ if (org_node == dfa->org_indices[idx]
+ && constraint == dfa->nodes[idx].constraint)
+ return idx; /* Found. */
+ }
+ return REG_MISSING; /* Not found. */
+}
+
+/* Duplicate the node whose index is ORG_IDX and set the constraint CONSTRAINT.
+ Return the index of the new node, or REG_MISSING if insufficient storage is
+ available. */
+
+static Idx
+duplicate_node (re_dfa_t *dfa, Idx org_idx, unsigned int constraint)
+{
+ Idx dup_idx = re_dfa_add_node (dfa, dfa->nodes[org_idx]);
+ if (BE (dup_idx != REG_MISSING, 1))
+ {
+ dfa->nodes[dup_idx].constraint = constraint;
+ if (dfa->nodes[org_idx].type == ANCHOR)
+ dfa->nodes[dup_idx].constraint |= dfa->nodes[org_idx].opr.ctx_type;
+ dfa->nodes[dup_idx].duplicated = 1;
+
+ /* Store the index of the original node. */
+ dfa->org_indices[dup_idx] = org_idx;
+ }
+ return dup_idx;
+}
+
+static reg_errcode_t
+calc_inveclosure (re_dfa_t *dfa)
+{
+ Idx src, idx;
+ bool ok;
+ for (idx = 0; idx < dfa->nodes_len; ++idx)
+ re_node_set_init_empty (dfa->inveclosures + idx);
+
+ for (src = 0; src < dfa->nodes_len; ++src)
+ {
+ Idx *elems = dfa->eclosures[src].elems;
+ for (idx = 0; idx < dfa->eclosures[src].nelem; ++idx)
+ {
+ ok = re_node_set_insert_last (dfa->inveclosures + elems[idx], src);
+ if (BE (! ok, 0))
+ return REG_ESPACE;
+ }
+ }
+
+ return REG_NOERROR;
+}
+
+/* Calculate "eclosure" for all the node in DFA. */
+
+static reg_errcode_t
+calc_eclosure (re_dfa_t *dfa)
+{
+ Idx node_idx;
+ bool incomplete;
+#ifdef DEBUG
+ assert (dfa->nodes_len > 0);
+#endif
+ incomplete = false;
+ /* For each nodes, calculate epsilon closure. */
+ for (node_idx = 0; ; ++node_idx)
+ {
+ reg_errcode_t err;
+ re_node_set eclosure_elem;
+ if (node_idx == dfa->nodes_len)
+ {
+ if (!incomplete)
+ break;
+ incomplete = false;
+ node_idx = 0;
+ }
+
+#ifdef DEBUG
+ assert (dfa->eclosures[node_idx].nelem != REG_MISSING);
+#endif
+
+ /* If we have already calculated, skip it. */
+ if (dfa->eclosures[node_idx].nelem != 0)
+ continue;
+ /* Calculate epsilon closure of `node_idx'. */
+ err = calc_eclosure_iter (&eclosure_elem, dfa, node_idx, true);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+
+ if (dfa->eclosures[node_idx].nelem == 0)
+ {
+ incomplete = true;
+ re_node_set_free (&eclosure_elem);
+ }
+ }
+ return REG_NOERROR;
+}
+
+/* Calculate epsilon closure of NODE. */
+
+static reg_errcode_t
+calc_eclosure_iter (re_node_set *new_set, re_dfa_t *dfa, Idx node, bool root)
+{
+ reg_errcode_t err;
+ unsigned int constraint;
+ Idx i;
+ bool incomplete;
+ bool ok;
+ re_node_set eclosure;
+ incomplete = false;
+ err = re_node_set_alloc (&eclosure, dfa->edests[node].nelem + 1);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+
+ /* This indicates that we are calculating this node now.
+ We reference this value to avoid infinite loop. */
+ dfa->eclosures[node].nelem = REG_MISSING;
+
+ constraint = ((dfa->nodes[node].type == ANCHOR)
+ ? dfa->nodes[node].opr.ctx_type : 0);
+ /* If the current node has constraints, duplicate all nodes.
+ Since they must inherit the constraints. */
+ if (constraint
+ && dfa->edests[node].nelem
+ && !dfa->nodes[dfa->edests[node].elems[0]].duplicated)
+ {
+ err = duplicate_node_closure (dfa, node, node, node, constraint);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ }
+
+ /* Expand each epsilon destination nodes. */
+ if (IS_EPSILON_NODE(dfa->nodes[node].type))
+ for (i = 0; i < dfa->edests[node].nelem; ++i)
+ {
+ re_node_set eclosure_elem;
+ Idx edest = dfa->edests[node].elems[i];
+ /* If calculating the epsilon closure of `edest' is in progress,
+ return intermediate result. */
+ if (dfa->eclosures[edest].nelem == REG_MISSING)
+ {
+ incomplete = true;
+ continue;
+ }
+ /* If we haven't calculated the epsilon closure of `edest' yet,
+ calculate now. Otherwise use calculated epsilon closure. */
+ if (dfa->eclosures[edest].nelem == 0)
+ {
+ err = calc_eclosure_iter (&eclosure_elem, dfa, edest, false);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ }
+ else
+ eclosure_elem = dfa->eclosures[edest];
+ /* Merge the epsilon closure of `edest'. */
+ re_node_set_merge (&eclosure, &eclosure_elem);
+ /* If the epsilon closure of `edest' is incomplete,
+ the epsilon closure of this node is also incomplete. */
+ if (dfa->eclosures[edest].nelem == 0)
+ {
+ incomplete = true;
+ re_node_set_free (&eclosure_elem);
+ }
+ }
+
+ /* Epsilon closures include itself. */
+ ok = re_node_set_insert (&eclosure, node);
+ if (BE (! ok, 0))
+ return REG_ESPACE;
+ if (incomplete && !root)
+ dfa->eclosures[node].nelem = 0;
+ else
+ dfa->eclosures[node] = eclosure;
+ *new_set = eclosure;
+ return REG_NOERROR;
+}
+
+/* Functions for token which are used in the parser. */
+
+/* Fetch a token from INPUT.
+ We must not use this function inside bracket expressions. */
+
+static void
+internal_function
+fetch_token (re_token_t *result, re_string_t *input, reg_syntax_t syntax)
+{
+ re_string_skip_bytes (input, peek_token (result, input, syntax));
+}
+
+/* Peek a token from INPUT, and return the length of the token.
+ We must not use this function inside bracket expressions. */
+
+static int
+internal_function
+peek_token (re_token_t *token, re_string_t *input, reg_syntax_t syntax)
+{
+ unsigned char c;
+
+ if (re_string_eoi (input))
+ {
+ token->type = END_OF_RE;
+ return 0;
+ }
+
+ c = re_string_peek_byte (input, 0);
+ token->opr.c = c;
+
+ token->word_char = 0;
+#ifdef RE_ENABLE_I18N
+ token->mb_partial = 0;
+ if (input->mb_cur_max > 1 &&
+ !re_string_first_byte (input, re_string_cur_idx (input)))
+ {
+ token->type = CHARACTER;
+ token->mb_partial = 1;
+ return 1;
+ }
+#endif
+ if (c == '\\')
+ {
+ unsigned char c2;
+ if (re_string_cur_idx (input) + 1 >= re_string_length (input))
+ {
+ token->type = BACK_SLASH;
+ return 1;
+ }
+
+ c2 = re_string_peek_byte_case (input, 1);
+ token->opr.c = c2;
+ token->type = CHARACTER;
+#ifdef RE_ENABLE_I18N
+ if (input->mb_cur_max > 1)
+ {
+ wint_t wc = re_string_wchar_at (input,
+ re_string_cur_idx (input) + 1);
+ token->word_char = IS_WIDE_WORD_CHAR (wc) != 0;
+ }
+ else
+#endif
+ token->word_char = IS_WORD_CHAR (c2) != 0;
+
+ switch (c2)
+ {
+ case '|':
+ if (!(syntax & RE_LIMITED_OPS) && !(syntax & RE_NO_BK_VBAR))
+ token->type = OP_ALT;
+ break;
+ case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ if (!(syntax & RE_NO_BK_REFS))
+ {
+ token->type = OP_BACK_REF;
+ token->opr.idx = c2 - '1';
+ }
+ break;
+ case '<':
+ if (!(syntax & RE_NO_GNU_OPS))
+ {
+ token->type = ANCHOR;
+ token->opr.ctx_type = WORD_FIRST;
+ }
+ break;
+ case '>':
+ if (!(syntax & RE_NO_GNU_OPS))
+ {
+ token->type = ANCHOR;
+ token->opr.ctx_type = WORD_LAST;
+ }
+ break;
+ case 'b':
+ if (!(syntax & RE_NO_GNU_OPS))
+ {
+ token->type = ANCHOR;
+ token->opr.ctx_type = WORD_DELIM;
+ }
+ break;
+ case 'B':
+ if (!(syntax & RE_NO_GNU_OPS))
+ {
+ token->type = ANCHOR;
+ token->opr.ctx_type = NOT_WORD_DELIM;
+ }
+ break;
+ case 'w':
+ if (!(syntax & RE_NO_GNU_OPS))
+ token->type = OP_WORD;
+ break;
+ case 'W':
+ if (!(syntax & RE_NO_GNU_OPS))
+ token->type = OP_NOTWORD;
+ break;
+ case 's':
+ if (!(syntax & RE_NO_GNU_OPS))
+ token->type = OP_SPACE;
+ break;
+ case 'S':
+ if (!(syntax & RE_NO_GNU_OPS))
+ token->type = OP_NOTSPACE;
+ break;
+ case '`':
+ if (!(syntax & RE_NO_GNU_OPS))
+ {
+ token->type = ANCHOR;
+ token->opr.ctx_type = BUF_FIRST;
+ }
+ break;
+ case '\'':
+ if (!(syntax & RE_NO_GNU_OPS))
+ {
+ token->type = ANCHOR;
+ token->opr.ctx_type = BUF_LAST;
+ }
+ break;
+ case '(':
+ if (!(syntax & RE_NO_BK_PARENS))
+ token->type = OP_OPEN_SUBEXP;
+ break;
+ case ')':
+ if (!(syntax & RE_NO_BK_PARENS))
+ token->type = OP_CLOSE_SUBEXP;
+ break;
+ case '+':
+ if (!(syntax & RE_LIMITED_OPS) && (syntax & RE_BK_PLUS_QM))
+ token->type = OP_DUP_PLUS;
+ break;
+ case '?':
+ if (!(syntax & RE_LIMITED_OPS) && (syntax & RE_BK_PLUS_QM))
+ token->type = OP_DUP_QUESTION;
+ break;
+ case '{':
+ if ((syntax & RE_INTERVALS) && (!(syntax & RE_NO_BK_BRACES)))
+ token->type = OP_OPEN_DUP_NUM;
+ break;
+ case '}':
+ if ((syntax & RE_INTERVALS) && (!(syntax & RE_NO_BK_BRACES)))
+ token->type = OP_CLOSE_DUP_NUM;
+ break;
+ default:
+ break;
+ }
+ return 2;
+ }
+
+ token->type = CHARACTER;
+#ifdef RE_ENABLE_I18N
+ if (input->mb_cur_max > 1)
+ {
+ wint_t wc = re_string_wchar_at (input, re_string_cur_idx (input));
+ token->word_char = IS_WIDE_WORD_CHAR (wc) != 0;
+ }
+ else
+#endif
+ token->word_char = IS_WORD_CHAR (token->opr.c);
+
+ switch (c)
+ {
+ case '\n':
+ if (syntax & RE_NEWLINE_ALT)
+ token->type = OP_ALT;
+ break;
+ case '|':
+ if (!(syntax & RE_LIMITED_OPS) && (syntax & RE_NO_BK_VBAR))
+ token->type = OP_ALT;
+ break;
+ case '*':
+ token->type = OP_DUP_ASTERISK;
+ break;
+ case '+':
+ if (!(syntax & RE_LIMITED_OPS) && !(syntax & RE_BK_PLUS_QM))
+ token->type = OP_DUP_PLUS;
+ break;
+ case '?':
+ if (!(syntax & RE_LIMITED_OPS) && !(syntax & RE_BK_PLUS_QM))
+ token->type = OP_DUP_QUESTION;
+ break;
+ case '{':
+ if ((syntax & RE_INTERVALS) && (syntax & RE_NO_BK_BRACES))
+ token->type = OP_OPEN_DUP_NUM;
+ break;
+ case '}':
+ if ((syntax & RE_INTERVALS) && (syntax & RE_NO_BK_BRACES))
+ token->type = OP_CLOSE_DUP_NUM;
+ break;
+ case '(':
+ if (syntax & RE_NO_BK_PARENS)
+ token->type = OP_OPEN_SUBEXP;
+ break;
+ case ')':
+ if (syntax & RE_NO_BK_PARENS)
+ token->type = OP_CLOSE_SUBEXP;
+ break;
+ case '[':
+ token->type = OP_OPEN_BRACKET;
+ break;
+ case '.':
+ token->type = OP_PERIOD;
+ break;
+ case '^':
+ if (!(syntax & (RE_CONTEXT_INDEP_ANCHORS | RE_CARET_ANCHORS_HERE)) &&
+ re_string_cur_idx (input) != 0)
+ {
+ char prev = re_string_peek_byte (input, -1);
+ if (!(syntax & RE_NEWLINE_ALT) || prev != '\n')
+ break;
+ }
+ token->type = ANCHOR;
+ token->opr.ctx_type = LINE_FIRST;
+ break;
+ case '$':
+ if (!(syntax & RE_CONTEXT_INDEP_ANCHORS) &&
+ re_string_cur_idx (input) + 1 != re_string_length (input))
+ {
+ re_token_t next;
+ re_string_skip_bytes (input, 1);
+ peek_token (&next, input, syntax);
+ re_string_skip_bytes (input, -1);
+ if (next.type != OP_ALT && next.type != OP_CLOSE_SUBEXP)
+ break;
+ }
+ token->type = ANCHOR;
+ token->opr.ctx_type = LINE_LAST;
+ break;
+ default:
+ break;
+ }
+ return 1;
+}
+
+/* Peek a token from INPUT, and return the length of the token.
+ We must not use this function out of bracket expressions. */
+
+static int
+internal_function
+peek_token_bracket (re_token_t *token, re_string_t *input, reg_syntax_t syntax)
+{
+ unsigned char c;
+ if (re_string_eoi (input))
+ {
+ token->type = END_OF_RE;
+ return 0;
+ }
+ c = re_string_peek_byte (input, 0);
+ token->opr.c = c;
+
+#ifdef RE_ENABLE_I18N
+ if (input->mb_cur_max > 1 &&
+ !re_string_first_byte (input, re_string_cur_idx (input)))
+ {
+ token->type = CHARACTER;
+ return 1;
+ }
+#endif /* RE_ENABLE_I18N */
+
+ if (c == '\\' && (syntax & RE_BACKSLASH_ESCAPE_IN_LISTS)
+ && re_string_cur_idx (input) + 1 < re_string_length (input))
+ {
+ /* In this case, '\' escape a character. */
+ unsigned char c2;
+ re_string_skip_bytes (input, 1);
+ c2 = re_string_peek_byte (input, 0);
+ token->opr.c = c2;
+ token->type = CHARACTER;
+ return 1;
+ }
+ if (c == '[') /* '[' is a special char in a bracket exps. */
+ {
+ unsigned char c2;
+ int token_len;
+ if (re_string_cur_idx (input) + 1 < re_string_length (input))
+ c2 = re_string_peek_byte (input, 1);
+ else
+ c2 = 0;
+ token->opr.c = c2;
+ token_len = 2;
+ switch (c2)
+ {
+ case '.':
+ token->type = OP_OPEN_COLL_ELEM;
+ break;
+ case '=':
+ token->type = OP_OPEN_EQUIV_CLASS;
+ break;
+ case ':':
+ if (syntax & RE_CHAR_CLASSES)
+ {
+ token->type = OP_OPEN_CHAR_CLASS;
+ break;
+ }
+ /* else fall through. */
+ default:
+ token->type = CHARACTER;
+ token->opr.c = c;
+ token_len = 1;
+ break;
+ }
+ return token_len;
+ }
+ switch (c)
+ {
+ case '-':
+ token->type = OP_CHARSET_RANGE;
+ break;
+ case ']':
+ token->type = OP_CLOSE_BRACKET;
+ break;
+ case '^':
+ token->type = OP_NON_MATCH_LIST;
+ break;
+ default:
+ token->type = CHARACTER;
+ }
+ return 1;
+}
+
+/* Functions for parser. */
+
+/* Entry point of the parser.
+ Parse the regular expression REGEXP and return the structure tree.
+ If an error is occured, ERR is set by error code, and return NULL.
+ This function build the following tree, from regular expression <reg_exp>:
+ CAT
+ / \
+ / \
+ <reg_exp> EOR
+
+ CAT means concatenation.
+ EOR means end of regular expression. */
+
+static bin_tree_t *
+parse (re_string_t *regexp, regex_t *preg, reg_syntax_t syntax,
+ reg_errcode_t *err)
+{
+ re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+ bin_tree_t *tree, *eor, *root;
+ re_token_t current_token;
+ dfa->syntax = syntax;
+ fetch_token (&current_token, regexp, syntax | RE_CARET_ANCHORS_HERE);
+ tree = parse_reg_exp (regexp, preg, &current_token, syntax, 0, err);
+ if (BE (*err != REG_NOERROR && tree == NULL, 0))
+ return NULL;
+ eor = create_tree (dfa, NULL, NULL, END_OF_RE);
+ if (tree != NULL)
+ root = create_tree (dfa, tree, eor, CONCAT);
+ else
+ root = eor;
+ if (BE (eor == NULL || root == NULL, 0))
+ {
+ *err = REG_ESPACE;
+ return NULL;
+ }
+ return root;
+}
+
+/* This function build the following tree, from regular expression
+ <branch1>|<branch2>:
+ ALT
+ / \
+ / \
+ <branch1> <branch2>
+
+ ALT means alternative, which represents the operator `|'. */
+
+static bin_tree_t *
+parse_reg_exp (re_string_t *regexp, regex_t *preg, re_token_t *token,
+ reg_syntax_t syntax, Idx nest, reg_errcode_t *err)
+{
+ re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+ bin_tree_t *tree, *branch = NULL;
+ tree = parse_branch (regexp, preg, token, syntax, nest, err);
+ if (BE (*err != REG_NOERROR && tree == NULL, 0))
+ return NULL;
+
+ while (token->type == OP_ALT)
+ {
+ fetch_token (token, regexp, syntax | RE_CARET_ANCHORS_HERE);
+ if (token->type != OP_ALT && token->type != END_OF_RE
+ && (nest == 0 || token->type != OP_CLOSE_SUBEXP))
+ {
+ branch = parse_branch (regexp, preg, token, syntax, nest, err);
+ if (BE (*err != REG_NOERROR && branch == NULL, 0))
+ return NULL;
+ }
+ else
+ branch = NULL;
+ tree = create_tree (dfa, tree, branch, OP_ALT);
+ if (BE (tree == NULL, 0))
+ {
+ *err = REG_ESPACE;
+ return NULL;
+ }
+ }
+ return tree;
+}
+
+/* This function build the following tree, from regular expression
+ <exp1><exp2>:
+ CAT
+ / \
+ / \
+ <exp1> <exp2>
+
+ CAT means concatenation. */
+
+static bin_tree_t *
+parse_branch (re_string_t *regexp, regex_t *preg, re_token_t *token,
+ reg_syntax_t syntax, Idx nest, reg_errcode_t *err)
+{
+ bin_tree_t *tree, *expr;
+ re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+ tree = parse_expression (regexp, preg, token, syntax, nest, err);
+ if (BE (*err != REG_NOERROR && tree == NULL, 0))
+ return NULL;
+
+ while (token->type != OP_ALT && token->type != END_OF_RE
+ && (nest == 0 || token->type != OP_CLOSE_SUBEXP))
+ {
+ expr = parse_expression (regexp, preg, token, syntax, nest, err);
+ if (BE (*err != REG_NOERROR && expr == NULL, 0))
+ {
+ return NULL;
+ }
+ if (tree != NULL && expr != NULL)
+ {
+ tree = create_tree (dfa, tree, expr, CONCAT);
+ if (tree == NULL)
+ {
+ *err = REG_ESPACE;
+ return NULL;
+ }
+ }
+ else if (tree == NULL)
+ tree = expr;
+ /* Otherwise expr == NULL, we don't need to create new tree. */
+ }
+ return tree;
+}
+
+/* This function build the following tree, from regular expression a*:
+ *
+ |
+ a
+*/
+
+static bin_tree_t *
+parse_expression (re_string_t *regexp, regex_t *preg, re_token_t *token,
+ reg_syntax_t syntax, Idx nest, reg_errcode_t *err)
+{
+ re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+ bin_tree_t *tree;
+ switch (token->type)
+ {
+ case CHARACTER:
+ tree = create_token_tree (dfa, NULL, NULL, token);
+ if (BE (tree == NULL, 0))
+ {
+ *err = REG_ESPACE;
+ return NULL;
+ }
+#ifdef RE_ENABLE_I18N
+ if (dfa->mb_cur_max > 1)
+ {
+ while (!re_string_eoi (regexp)
+ && !re_string_first_byte (regexp, re_string_cur_idx (regexp)))
+ {
+ bin_tree_t *mbc_remain;
+ fetch_token (token, regexp, syntax);
+ mbc_remain = create_token_tree (dfa, NULL, NULL, token);
+ tree = create_tree (dfa, tree, mbc_remain, CONCAT);
+ if (BE (mbc_remain == NULL || tree == NULL, 0))
+ {
+ *err = REG_ESPACE;
+ return NULL;
+ }
+ }
+ }
+#endif
+ break;
+ case OP_OPEN_SUBEXP:
+ tree = parse_sub_exp (regexp, preg, token, syntax, nest + 1, err);
+ if (BE (*err != REG_NOERROR && tree == NULL, 0))
+ return NULL;
+ break;
+ case OP_OPEN_BRACKET:
+ tree = parse_bracket_exp (regexp, dfa, token, syntax, err);
+ if (BE (*err != REG_NOERROR && tree == NULL, 0))
+ return NULL;
+ break;
+ case OP_BACK_REF:
+ if (!BE (dfa->completed_bkref_map & (1 << token->opr.idx), 1))
+ {
+ *err = REG_ESUBREG;
+ return NULL;
+ }
+ dfa->used_bkref_map |= 1 << token->opr.idx;
+ tree = create_token_tree (dfa, NULL, NULL, token);
+ if (BE (tree == NULL, 0))
+ {
+ *err = REG_ESPACE;
+ return NULL;
+ }
+ ++dfa->nbackref;
+ dfa->has_mb_node = 1;
+ break;
+ case OP_OPEN_DUP_NUM:
+ if (syntax & RE_CONTEXT_INVALID_DUP)
+ {
+ *err = REG_BADRPT;
+ return NULL;
+ }
+ /* FALLTHROUGH */
+ case OP_DUP_ASTERISK:
+ case OP_DUP_PLUS:
+ case OP_DUP_QUESTION:
+ if (syntax & RE_CONTEXT_INVALID_OPS)
+ {
+ *err = REG_BADRPT;
+ return NULL;
+ }
+ else if (syntax & RE_CONTEXT_INDEP_OPS)
+ {
+ fetch_token (token, regexp, syntax);
+ return parse_expression (regexp, preg, token, syntax, nest, err);
+ }
+ /* else fall through */
+ case OP_CLOSE_SUBEXP:
+ if ((token->type == OP_CLOSE_SUBEXP) &&
+ !(syntax & RE_UNMATCHED_RIGHT_PAREN_ORD))
+ {
+ *err = REG_ERPAREN;
+ return NULL;
+ }
+ /* else fall through */
+ case OP_CLOSE_DUP_NUM:
+ /* We treat it as a normal character. */
+
+ /* Then we can these characters as normal characters. */
+ token->type = CHARACTER;
+ /* mb_partial and word_char bits should be initialized already
+ by peek_token. */
+ tree = create_token_tree (dfa, NULL, NULL, token);
+ if (BE (tree == NULL, 0))
+ {
+ *err = REG_ESPACE;
+ return NULL;
+ }
+ break;
+ case ANCHOR:
+ if ((token->opr.ctx_type
+ & (WORD_DELIM | NOT_WORD_DELIM | WORD_FIRST | WORD_LAST))
+ && dfa->word_ops_used == 0)
+ init_word_char (dfa);
+ if (token->opr.ctx_type == WORD_DELIM
+ || token->opr.ctx_type == NOT_WORD_DELIM)
+ {
+ bin_tree_t *tree_first, *tree_last;
+ if (token->opr.ctx_type == WORD_DELIM)
+ {
+ token->opr.ctx_type = WORD_FIRST;
+ tree_first = create_token_tree (dfa, NULL, NULL, token);
+ token->opr.ctx_type = WORD_LAST;
+ }
+ else
+ {
+ token->opr.ctx_type = INSIDE_WORD;
+ tree_first = create_token_tree (dfa, NULL, NULL, token);
+ token->opr.ctx_type = INSIDE_NOTWORD;
+ }
+ tree_last = create_token_tree (dfa, NULL, NULL, token);
+ tree = create_tree (dfa, tree_first, tree_last, OP_ALT);
+ if (BE (tree_first == NULL || tree_last == NULL || tree == NULL, 0))
+ {
+ *err = REG_ESPACE;
+ return NULL;
+ }
+ }
+ else
+ {
+ tree = create_token_tree (dfa, NULL, NULL, token);
+ if (BE (tree == NULL, 0))
+ {
+ *err = REG_ESPACE;
+ return NULL;
+ }
+ }
+ /* We must return here, since ANCHORs can't be followed
+ by repetition operators.
+ eg. RE"^*" is invalid or "<ANCHOR(^)><CHAR(*)>",
+ it must not be "<ANCHOR(^)><REPEAT(*)>". */
+ fetch_token (token, regexp, syntax);
+ return tree;
+ case OP_PERIOD:
+ tree = create_token_tree (dfa, NULL, NULL, token);
+ if (BE (tree == NULL, 0))
+ {
+ *err = REG_ESPACE;
+ return NULL;
+ }
+ if (dfa->mb_cur_max > 1)
+ dfa->has_mb_node = 1;
+ break;
+ case OP_WORD:
+ case OP_NOTWORD:
+ tree = build_charclass_op (dfa, regexp->trans,
+ (const unsigned char *) "alnum",
+ (const unsigned char *) "_",
+ token->type == OP_NOTWORD, err);
+ if (BE (*err != REG_NOERROR && tree == NULL, 0))
+ return NULL;
+ break;
+ case OP_SPACE:
+ case OP_NOTSPACE:
+ tree = build_charclass_op (dfa, regexp->trans,
+ (const unsigned char *) "space",
+ (const unsigned char *) "",
+ token->type == OP_NOTSPACE, err);
+ if (BE (*err != REG_NOERROR && tree == NULL, 0))
+ return NULL;
+ break;
+ case OP_ALT:
+ case END_OF_RE:
+ return NULL;
+ case BACK_SLASH:
+ *err = REG_EESCAPE;
+ return NULL;
+ default:
+ /* Must not happen? */
+#ifdef DEBUG
+ assert (0);
+#endif
+ return NULL;
+ }
+ fetch_token (token, regexp, syntax);
+
+ while (token->type == OP_DUP_ASTERISK || token->type == OP_DUP_PLUS
+ || token->type == OP_DUP_QUESTION || token->type == OP_OPEN_DUP_NUM)
+ {
+ tree = parse_dup_op (tree, regexp, dfa, token, syntax, err);
+ if (BE (*err != REG_NOERROR && tree == NULL, 0))
+ return NULL;
+ /* In BRE consecutive duplications are not allowed. */
+ if ((syntax & RE_CONTEXT_INVALID_DUP)
+ && (token->type == OP_DUP_ASTERISK
+ || token->type == OP_OPEN_DUP_NUM))
+ {
+ *err = REG_BADRPT;
+ return NULL;
+ }
+ }
+
+ return tree;
+}
+
+/* This function build the following tree, from regular expression
+ (<reg_exp>):
+ SUBEXP
+ |
+ <reg_exp>
+*/
+
+static bin_tree_t *
+parse_sub_exp (re_string_t *regexp, regex_t *preg, re_token_t *token,
+ reg_syntax_t syntax, Idx nest, reg_errcode_t *err)
+{
+ re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+ bin_tree_t *tree;
+ size_t cur_nsub;
+ cur_nsub = preg->re_nsub++;
+
+ fetch_token (token, regexp, syntax | RE_CARET_ANCHORS_HERE);
+
+ /* The subexpression may be a null string. */
+ if (token->type == OP_CLOSE_SUBEXP)
+ tree = NULL;
+ else
+ {
+ tree = parse_reg_exp (regexp, preg, token, syntax, nest, err);
+ if (BE (*err == REG_NOERROR && token->type != OP_CLOSE_SUBEXP, 0))
+ *err = REG_EPAREN;
+ if (BE (*err != REG_NOERROR, 0))
+ return NULL;
+ }
+
+ if (cur_nsub <= '9' - '1')
+ dfa->completed_bkref_map |= 1 << cur_nsub;
+
+ tree = create_tree (dfa, tree, NULL, SUBEXP);
+ if (BE (tree == NULL, 0))
+ {
+ *err = REG_ESPACE;
+ return NULL;
+ }
+ tree->token.opr.idx = cur_nsub;
+ return tree;
+}
+
+/* This function parse repetition operators like "*", "+", "{1,3}" etc. */
+
+static bin_tree_t *
+parse_dup_op (bin_tree_t *elem, re_string_t *regexp, re_dfa_t *dfa,
+ re_token_t *token, reg_syntax_t syntax, reg_errcode_t *err)
+{
+ bin_tree_t *tree = NULL, *old_tree = NULL;
+ Idx i, start, end, start_idx = re_string_cur_idx (regexp);
+ re_token_t start_token = *token;
+
+ if (token->type == OP_OPEN_DUP_NUM)
+ {
+ end = 0;
+ start = fetch_number (regexp, token, syntax);
+ if (start == REG_MISSING)
+ {
+ if (token->type == CHARACTER && token->opr.c == ',')
+ start = 0; /* We treat "{,m}" as "{0,m}". */
+ else
+ {
+ *err = REG_BADBR; /* <re>{} is invalid. */
+ return NULL;
+ }
+ }
+ if (BE (start != REG_ERROR, 1))
+ {
+ /* We treat "{n}" as "{n,n}". */
+ end = ((token->type == OP_CLOSE_DUP_NUM) ? start
+ : ((token->type == CHARACTER && token->opr.c == ',')
+ ? fetch_number (regexp, token, syntax) : REG_ERROR));
+ }
+ if (BE (start == REG_ERROR || end == REG_ERROR, 0))
+ {
+ /* Invalid sequence. */
+ if (BE (!(syntax & RE_INVALID_INTERVAL_ORD), 0))
+ {
+ if (token->type == END_OF_RE)
+ *err = REG_EBRACE;
+ else
+ *err = REG_BADBR;
+
+ return NULL;
+ }
+
+ /* If the syntax bit is set, rollback. */
+ re_string_set_index (regexp, start_idx);
+ *token = start_token;
+ token->type = CHARACTER;
+ /* mb_partial and word_char bits should be already initialized by
+ peek_token. */
+ return elem;
+ }
+
+ if (BE (end != REG_MISSING && start > end, 0))
+ {
+ /* First number greater than second. */
+ *err = REG_BADBR;
+ return NULL;
+ }
+ }
+ else
+ {
+ start = (token->type == OP_DUP_PLUS) ? 1 : 0;
+ end = (token->type == OP_DUP_QUESTION) ? 1 : REG_MISSING;
+ }
+
+ fetch_token (token, regexp, syntax);
+
+ if (BE (elem == NULL, 0))
+ return NULL;
+ if (BE (start == 0 && end == 0, 0))
+ {
+ postorder (elem, free_tree, NULL);
+ return NULL;
+ }
+
+ /* Extract "<re>{n,m}" to "<re><re>...<re><re>{0,<m-n>}". */
+ if (BE (start > 0, 0))
+ {
+ tree = elem;
+ for (i = 2; i <= start; ++i)
+ {
+ elem = duplicate_tree (elem, dfa);
+ tree = create_tree (dfa, tree, elem, CONCAT);
+ if (BE (elem == NULL || tree == NULL, 0))
+ goto parse_dup_op_espace;
+ }
+
+ if (start == end)
+ return tree;
+
+ /* Duplicate ELEM before it is marked optional. */
+ elem = duplicate_tree (elem, dfa);
+ old_tree = tree;
+ }
+ else
+ old_tree = NULL;
+
+ if (elem->token.type == SUBEXP)
+ postorder (elem, mark_opt_subexp, (void *) (long) elem->token.opr.idx);
+
+ tree = create_tree (dfa, elem, NULL,
+ (end == REG_MISSING ? OP_DUP_ASTERISK : OP_ALT));
+ if (BE (tree == NULL, 0))
+ goto parse_dup_op_espace;
+
+ /* This loop is actually executed only when end != REG_MISSING,
+ to rewrite <re>{0,n} as (<re>(<re>...<re>?)?)?... We have
+ already created the start+1-th copy. */
+ if ((Idx) -1 < 0 || end != REG_MISSING)
+ for (i = start + 2; i <= end; ++i)
+ {
+ elem = duplicate_tree (elem, dfa);
+ tree = create_tree (dfa, tree, elem, CONCAT);
+ if (BE (elem == NULL || tree == NULL, 0))
+ goto parse_dup_op_espace;
+
+ tree = create_tree (dfa, tree, NULL, OP_ALT);
+ if (BE (tree == NULL, 0))
+ goto parse_dup_op_espace;
+ }
+
+ if (old_tree)
+ tree = create_tree (dfa, old_tree, tree, CONCAT);
+
+ return tree;
+
+ parse_dup_op_espace:
+ *err = REG_ESPACE;
+ return NULL;
+}
+
+/* Size of the names for collating symbol/equivalence_class/character_class.
+ I'm not sure, but maybe enough. */
+#define BRACKET_NAME_BUF_SIZE 32
+
+#ifndef _LIBC
+ /* Local function for parse_bracket_exp only used in case of NOT _LIBC.
+ Build the range expression which starts from START_ELEM, and ends
+ at END_ELEM. The result are written to MBCSET and SBCSET.
+ RANGE_ALLOC is the allocated size of mbcset->range_starts, and
+ mbcset->range_ends, is a pointer argument sinse we may
+ update it. */
+
+static reg_errcode_t
+internal_function
+# ifdef RE_ENABLE_I18N
+build_range_exp (bitset_t sbcset, re_charset_t *mbcset, Idx *range_alloc,
+ bracket_elem_t *start_elem, bracket_elem_t *end_elem)
+# else /* not RE_ENABLE_I18N */
+build_range_exp (bitset_t sbcset, bracket_elem_t *start_elem,
+ bracket_elem_t *end_elem)
+# endif /* not RE_ENABLE_I18N */
+{
+ unsigned int start_ch, end_ch;
+ /* Equivalence Classes and Character Classes can't be a range start/end. */
+ if (BE (start_elem->type == EQUIV_CLASS || start_elem->type == CHAR_CLASS
+ || end_elem->type == EQUIV_CLASS || end_elem->type == CHAR_CLASS,
+ 0))
+ return REG_ERANGE;
+
+ /* We can handle no multi character collating elements without libc
+ support. */
+ if (BE ((start_elem->type == COLL_SYM
+ && strlen ((char *) start_elem->opr.name) > 1)
+ || (end_elem->type == COLL_SYM
+ && strlen ((char *) end_elem->opr.name) > 1), 0))
+ return REG_ECOLLATE;
+
+# ifdef RE_ENABLE_I18N
+ {
+ wchar_t wc;
+ wint_t start_wc;
+ wint_t end_wc;
+ wchar_t cmp_buf[6] = {L'\0', L'\0', L'\0', L'\0', L'\0', L'\0'};
+
+ start_ch = ((start_elem->type == SB_CHAR) ? start_elem->opr.ch
+ : ((start_elem->type == COLL_SYM) ? start_elem->opr.name[0]
+ : 0));
+ end_ch = ((end_elem->type == SB_CHAR) ? end_elem->opr.ch
+ : ((end_elem->type == COLL_SYM) ? end_elem->opr.name[0]
+ : 0));
+ start_wc = ((start_elem->type == SB_CHAR || start_elem->type == COLL_SYM)
+ ? __btowc (start_ch) : start_elem->opr.wch);
+ end_wc = ((end_elem->type == SB_CHAR || end_elem->type == COLL_SYM)
+ ? __btowc (end_ch) : end_elem->opr.wch);
+ if (start_wc == WEOF || end_wc == WEOF)
+ return REG_ECOLLATE;
+ cmp_buf[0] = start_wc;
+ cmp_buf[4] = end_wc;
+ if (wcscoll (cmp_buf, cmp_buf + 4) > 0)
+ return REG_ERANGE;
+
+ /* Got valid collation sequence values, add them as a new entry.
+ However, for !_LIBC we have no collation elements: if the
+ character set is single byte, the single byte character set
+ that we build below suffices. parse_bracket_exp passes
+ no MBCSET if dfa->mb_cur_max == 1. */
+ if (mbcset)
+ {
+ /* Check the space of the arrays. */
+ if (BE (*range_alloc == mbcset->nranges, 0))
+ {
+ /* There is not enough space, need realloc. */
+ wchar_t *new_array_start, *new_array_end;
+ Idx new_nranges;
+
+ /* +1 in case of mbcset->nranges is 0. */
+ new_nranges = 2 * mbcset->nranges + 1;
+ /* Use realloc since mbcset->range_starts and mbcset->range_ends
+ are NULL if *range_alloc == 0. */
+ new_array_start = re_realloc (mbcset->range_starts, wchar_t,
+ new_nranges);
+ new_array_end = re_realloc (mbcset->range_ends, wchar_t,
+ new_nranges);
+
+ if (BE (new_array_start == NULL || new_array_end == NULL, 0))
+ return REG_ESPACE;
+
+ mbcset->range_starts = new_array_start;
+ mbcset->range_ends = new_array_end;
+ *range_alloc = new_nranges;
+ }
+
+ mbcset->range_starts[mbcset->nranges] = start_wc;
+ mbcset->range_ends[mbcset->nranges++] = end_wc;
+ }
+
+ /* Build the table for single byte characters. */
+ for (wc = 0; wc < SBC_MAX; ++wc)
+ {
+ cmp_buf[2] = wc;
+ if (wcscoll (cmp_buf, cmp_buf + 2) <= 0
+ && wcscoll (cmp_buf + 2, cmp_buf + 4) <= 0)
+ bitset_set (sbcset, wc);
+ }
+ }
+# else /* not RE_ENABLE_I18N */
+ {
+ unsigned int ch;
+ start_ch = ((start_elem->type == SB_CHAR ) ? start_elem->opr.ch
+ : ((start_elem->type == COLL_SYM) ? start_elem->opr.name[0]
+ : 0));
+ end_ch = ((end_elem->type == SB_CHAR ) ? end_elem->opr.ch
+ : ((end_elem->type == COLL_SYM) ? end_elem->opr.name[0]
+ : 0));
+ if (start_ch > end_ch)
+ return REG_ERANGE;
+ /* Build the table for single byte characters. */
+ for (ch = 0; ch < SBC_MAX; ++ch)
+ if (start_ch <= ch && ch <= end_ch)
+ bitset_set (sbcset, ch);
+ }
+# endif /* not RE_ENABLE_I18N */
+ return REG_NOERROR;
+}
+#endif /* not _LIBC */
+
+#ifndef _LIBC
+/* Helper function for parse_bracket_exp only used in case of NOT _LIBC..
+ Build the collating element which is represented by NAME.
+ The result are written to MBCSET and SBCSET.
+ COLL_SYM_ALLOC is the allocated size of mbcset->coll_sym, is a
+ pointer argument since we may update it. */
+
+static reg_errcode_t
+internal_function
+build_collating_symbol (bitset_t sbcset,
+# ifdef RE_ENABLE_I18N
+ re_charset_t *mbcset, Idx *coll_sym_alloc,
+# endif
+ const unsigned char *name)
+{
+ size_t name_len = strlen ((const char *) name);
+ if (BE (name_len != 1, 0))
+ return REG_ECOLLATE;
+ else
+ {
+ bitset_set (sbcset, name[0]);
+ return REG_NOERROR;
+ }
+}
+#endif /* not _LIBC */
+
+/* This function parse bracket expression like "[abc]", "[a-c]",
+ "[[.a-a.]]" etc. */
+
+static bin_tree_t *
+parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token,
+ reg_syntax_t syntax, reg_errcode_t *err)
+{
+#ifdef _LIBC
+ const unsigned char *collseqmb;
+ const char *collseqwc;
+ uint32_t nrules;
+ int32_t table_size;
+ const int32_t *symb_table;
+ const unsigned char *extra;
+
+ /* Local function for parse_bracket_exp used in _LIBC environement.
+ Seek the collating symbol entry correspondings to NAME.
+ Return the index of the symbol in the SYMB_TABLE. */
+
+ auto inline int32_t
+ __attribute ((always_inline))
+ seek_collating_symbol_entry (name, name_len)
+ const unsigned char *name;
+ size_t name_len;
+ {
+ int32_t hash = elem_hash ((const char *) name, name_len);
+ int32_t elem = hash % table_size;
+ if (symb_table[2 * elem] != 0)
+ {
+ int32_t second = hash % (table_size - 2) + 1;
+
+ do
+ {
+ /* First compare the hashing value. */
+ if (symb_table[2 * elem] == hash
+ /* Compare the length of the name. */
+ && name_len == extra[symb_table[2 * elem + 1]]
+ /* Compare the name. */
+ && memcmp (name, &extra[symb_table[2 * elem + 1] + 1],
+ name_len) == 0)
+ {
+ /* Yep, this is the entry. */
+ break;
+ }
+
+ /* Next entry. */
+ elem += second;
+ }
+ while (symb_table[2 * elem] != 0);
+ }
+ return elem;
+ }
+
+ /* Local function for parse_bracket_exp used in _LIBC environement.
+ Look up the collation sequence value of BR_ELEM.
+ Return the value if succeeded, UINT_MAX otherwise. */
+
+ auto inline unsigned int
+ __attribute ((always_inline))
+ lookup_collation_sequence_value (br_elem)
+ bracket_elem_t *br_elem;
+ {
+ if (br_elem->type == SB_CHAR)
+ {
+ /*
+ if (MB_CUR_MAX == 1)
+ */
+ if (nrules == 0)
+ return collseqmb[br_elem->opr.ch];
+ else
+ {
+ wint_t wc = __btowc (br_elem->opr.ch);
+ return __collseq_table_lookup (collseqwc, wc);
+ }
+ }
+ else if (br_elem->type == MB_CHAR)
+ {
+ return __collseq_table_lookup (collseqwc, br_elem->opr.wch);
+ }
+ else if (br_elem->type == COLL_SYM)
+ {
+ size_t sym_name_len = strlen ((char *) br_elem->opr.name);
+ if (nrules != 0)
+ {
+ int32_t elem, idx;
+ elem = seek_collating_symbol_entry (br_elem->opr.name,
+ sym_name_len);
+ if (symb_table[2 * elem] != 0)
+ {
+ /* We found the entry. */
+ idx = symb_table[2 * elem + 1];
+ /* Skip the name of collating element name. */
+ idx += 1 + extra[idx];
+ /* Skip the byte sequence of the collating element. */
+ idx += 1 + extra[idx];
+ /* Adjust for the alignment. */
+ idx = (idx + 3) & ~3;
+ /* Skip the multibyte collation sequence value. */
+ idx += sizeof (unsigned int);
+ /* Skip the wide char sequence of the collating element. */
+ idx += sizeof (unsigned int) *
+ (1 + *(unsigned int *) (extra + idx));
+ /* Return the collation sequence value. */
+ return *(unsigned int *) (extra + idx);
+ }
+ else if (symb_table[2 * elem] == 0 && sym_name_len == 1)
+ {
+ /* No valid character. Match it as a single byte
+ character. */
+ return collseqmb[br_elem->opr.name[0]];
+ }
+ }
+ else if (sym_name_len == 1)
+ return collseqmb[br_elem->opr.name[0]];
+ }
+ return UINT_MAX;
+ }
+
+ /* Local function for parse_bracket_exp used in _LIBC environement.
+ Build the range expression which starts from START_ELEM, and ends
+ at END_ELEM. The result are written to MBCSET and SBCSET.
+ RANGE_ALLOC is the allocated size of mbcset->range_starts, and
+ mbcset->range_ends, is a pointer argument sinse we may
+ update it. */
+
+ auto inline reg_errcode_t
+ __attribute ((always_inline))
+ build_range_exp (sbcset, mbcset, range_alloc, start_elem, end_elem)
+ re_charset_t *mbcset;
+ Idx *range_alloc;
+ bitset_t sbcset;
+ bracket_elem_t *start_elem, *end_elem;
+ {
+ unsigned int ch;
+ uint32_t start_collseq;
+ uint32_t end_collseq;
+
+ /* Equivalence Classes and Character Classes can't be a range
+ start/end. */
+ if (BE (start_elem->type == EQUIV_CLASS || start_elem->type == CHAR_CLASS
+ || end_elem->type == EQUIV_CLASS || end_elem->type == CHAR_CLASS,
+ 0))
+ return REG_ERANGE;
+
+ start_collseq = lookup_collation_sequence_value (start_elem);
+ end_collseq = lookup_collation_sequence_value (end_elem);
+ /* Check start/end collation sequence values. */
+ if (BE (start_collseq == UINT_MAX || end_collseq == UINT_MAX, 0))
+ return REG_ECOLLATE;
+ if (BE ((syntax & RE_NO_EMPTY_RANGES) && start_collseq > end_collseq, 0))
+ return REG_ERANGE;
+
+ /* Got valid collation sequence values, add them as a new entry.
+ However, if we have no collation elements, and the character set
+ is single byte, the single byte character set that we
+ build below suffices. */
+ if (nrules > 0 || dfa->mb_cur_max > 1)
+ {
+ /* Check the space of the arrays. */
+ if (BE (*range_alloc == mbcset->nranges, 0))
+ {
+ /* There is not enough space, need realloc. */
+ uint32_t *new_array_start;
+ uint32_t *new_array_end;
+ Idx new_nranges;
+
+ /* +1 in case of mbcset->nranges is 0. */
+ new_nranges = 2 * mbcset->nranges + 1;
+ new_array_start = re_realloc (mbcset->range_starts, uint32_t,
+ new_nranges);
+ new_array_end = re_realloc (mbcset->range_ends, uint32_t,
+ new_nranges);
+
+ if (BE (new_array_start == NULL || new_array_end == NULL, 0))
+ return REG_ESPACE;
+
+ mbcset->range_starts = new_array_start;
+ mbcset->range_ends = new_array_end;
+ *range_alloc = new_nranges;
+ }
+
+ mbcset->range_starts[mbcset->nranges] = start_collseq;
+ mbcset->range_ends[mbcset->nranges++] = end_collseq;
+ }
+
+ /* Build the table for single byte characters. */
+ for (ch = 0; ch < SBC_MAX; ch++)
+ {
+ uint32_t ch_collseq;
+ /*
+ if (MB_CUR_MAX == 1)
+ */
+ if (nrules == 0)
+ ch_collseq = collseqmb[ch];
+ else
+ ch_collseq = __collseq_table_lookup (collseqwc, __btowc (ch));
+ if (start_collseq <= ch_collseq && ch_collseq <= end_collseq)
+ bitset_set (sbcset, ch);
+ }
+ return REG_NOERROR;
+ }
+
+ /* Local function for parse_bracket_exp used in _LIBC environement.
+ Build the collating element which is represented by NAME.
+ The result are written to MBCSET and SBCSET.
+ COLL_SYM_ALLOC is the allocated size of mbcset->coll_sym, is a
+ pointer argument sinse we may update it. */
+
+ auto inline reg_errcode_t
+ __attribute ((always_inline))
+ build_collating_symbol (sbcset, mbcset, coll_sym_alloc, name)
+ re_charset_t *mbcset;
+ Idx *coll_sym_alloc;
+ bitset_t sbcset;
+ const unsigned char *name;
+ {
+ int32_t elem, idx;
+ size_t name_len = strlen ((const char *) name);
+ if (nrules != 0)
+ {
+ elem = seek_collating_symbol_entry (name, name_len);
+ if (symb_table[2 * elem] != 0)
+ {
+ /* We found the entry. */
+ idx = symb_table[2 * elem + 1];
+ /* Skip the name of collating element name. */
+ idx += 1 + extra[idx];
+ }
+ else if (symb_table[2 * elem] == 0 && name_len == 1)
+ {
+ /* No valid character, treat it as a normal
+ character. */
+ bitset_set (sbcset, name[0]);
+ return REG_NOERROR;
+ }
+ else
+ return REG_ECOLLATE;
+
+ /* Got valid collation sequence, add it as a new entry. */
+ /* Check the space of the arrays. */
+ if (BE (*coll_sym_alloc == mbcset->ncoll_syms, 0))
+ {
+ /* Not enough, realloc it. */
+ /* +1 in case of mbcset->ncoll_syms is 0. */
+ Idx new_coll_sym_alloc = 2 * mbcset->ncoll_syms + 1;
+ /* Use realloc since mbcset->coll_syms is NULL
+ if *alloc == 0. */
+ int32_t *new_coll_syms = re_realloc (mbcset->coll_syms, int32_t,
+ new_coll_sym_alloc);
+ if (BE (new_coll_syms == NULL, 0))
+ return REG_ESPACE;
+ mbcset->coll_syms = new_coll_syms;
+ *coll_sym_alloc = new_coll_sym_alloc;
+ }
+ mbcset->coll_syms[mbcset->ncoll_syms++] = idx;
+ return REG_NOERROR;
+ }
+ else
+ {
+ if (BE (name_len != 1, 0))
+ return REG_ECOLLATE;
+ else
+ {
+ bitset_set (sbcset, name[0]);
+ return REG_NOERROR;
+ }
+ }
+ }
+#endif
+
+ re_token_t br_token;
+ re_bitset_ptr_t sbcset;
+#ifdef RE_ENABLE_I18N
+ re_charset_t *mbcset;
+ Idx coll_sym_alloc = 0, range_alloc = 0, mbchar_alloc = 0;
+ Idx equiv_class_alloc = 0, char_class_alloc = 0;
+#endif /* not RE_ENABLE_I18N */
+ bool non_match = false;
+ bin_tree_t *work_tree;
+ int token_len;
+ bool first_round = true;
+#ifdef _LIBC
+ collseqmb = (const unsigned char *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_COLLSEQMB);
+ nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
+ if (nrules)
+ {
+ /*
+ if (MB_CUR_MAX > 1)
+ */
+ collseqwc = _NL_CURRENT (LC_COLLATE, _NL_COLLATE_COLLSEQWC);
+ table_size = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_SYMB_HASH_SIZEMB);
+ symb_table = (const int32_t *) _NL_CURRENT (LC_COLLATE,
+ _NL_COLLATE_SYMB_TABLEMB);
+ extra = (const unsigned char *) _NL_CURRENT (LC_COLLATE,
+ _NL_COLLATE_SYMB_EXTRAMB);
+ }
+#endif
+ sbcset = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);
+#ifdef RE_ENABLE_I18N
+ mbcset = (re_charset_t *) calloc (sizeof (re_charset_t), 1);
+#endif /* RE_ENABLE_I18N */
+#ifdef RE_ENABLE_I18N
+ if (BE (sbcset == NULL || mbcset == NULL, 0))
+#else
+ if (BE (sbcset == NULL, 0))
+#endif /* RE_ENABLE_I18N */
+ {
+ *err = REG_ESPACE;
+ return NULL;
+ }
+
+ token_len = peek_token_bracket (token, regexp, syntax);
+ if (BE (token->type == END_OF_RE, 0))
+ {
+ *err = REG_BADPAT;
+ goto parse_bracket_exp_free_return;
+ }
+ if (token->type == OP_NON_MATCH_LIST)
+ {
+#ifdef RE_ENABLE_I18N
+ mbcset->non_match = 1;
+#endif /* not RE_ENABLE_I18N */
+ non_match = true;
+ if (syntax & RE_HAT_LISTS_NOT_NEWLINE)
+ bitset_set (sbcset, '\n');
+ re_string_skip_bytes (regexp, token_len); /* Skip a token. */
+ token_len = peek_token_bracket (token, regexp, syntax);
+ if (BE (token->type == END_OF_RE, 0))
+ {
+ *err = REG_BADPAT;
+ goto parse_bracket_exp_free_return;
+ }
+ }
+
+ /* We treat the first ']' as a normal character. */
+ if (token->type == OP_CLOSE_BRACKET)
+ token->type = CHARACTER;
+
+ while (1)
+ {
+ bracket_elem_t start_elem, end_elem;
+ unsigned char start_name_buf[BRACKET_NAME_BUF_SIZE];
+ unsigned char end_name_buf[BRACKET_NAME_BUF_SIZE];
+ reg_errcode_t ret;
+ int token_len2 = 0;
+ bool is_range_exp = false;
+ re_token_t token2;
+
+ start_elem.opr.name = start_name_buf;
+ ret = parse_bracket_element (&start_elem, regexp, token, token_len, dfa,
+ syntax, first_round);
+ if (BE (ret != REG_NOERROR, 0))
+ {
+ *err = ret;
+ goto parse_bracket_exp_free_return;
+ }
+ first_round = false;
+
+ /* Get information about the next token. We need it in any case. */
+ token_len = peek_token_bracket (token, regexp, syntax);
+
+ /* Do not check for ranges if we know they are not allowed. */
+ if (start_elem.type != CHAR_CLASS && start_elem.type != EQUIV_CLASS)
+ {
+ if (BE (token->type == END_OF_RE, 0))
+ {
+ *err = REG_EBRACK;
+ goto parse_bracket_exp_free_return;
+ }
+ if (token->type == OP_CHARSET_RANGE)
+ {
+ re_string_skip_bytes (regexp, token_len); /* Skip '-'. */
+ token_len2 = peek_token_bracket (&token2, regexp, syntax);
+ if (BE (token2.type == END_OF_RE, 0))
+ {
+ *err = REG_EBRACK;
+ goto parse_bracket_exp_free_return;
+ }
+ if (token2.type == OP_CLOSE_BRACKET)
+ {
+ /* We treat the last '-' as a normal character. */
+ re_string_skip_bytes (regexp, -token_len);
+ token->type = CHARACTER;
+ }
+ else
+ is_range_exp = true;
+ }
+ }
+
+ if (is_range_exp == true)
+ {
+ end_elem.opr.name = end_name_buf;
+ ret = parse_bracket_element (&end_elem, regexp, &token2, token_len2,
+ dfa, syntax, true);
+ if (BE (ret != REG_NOERROR, 0))
+ {
+ *err = ret;
+ goto parse_bracket_exp_free_return;
+ }
+
+ token_len = peek_token_bracket (token, regexp, syntax);
+
+#ifdef _LIBC
+ *err = build_range_exp (sbcset, mbcset, &range_alloc,
+ &start_elem, &end_elem);
+#else
+# ifdef RE_ENABLE_I18N
+ *err = build_range_exp (sbcset,
+ dfa->mb_cur_max > 1 ? mbcset : NULL,
+ &range_alloc, &start_elem, &end_elem);
+# else
+ *err = build_range_exp (sbcset, &start_elem, &end_elem);
+# endif
+#endif /* RE_ENABLE_I18N */
+ if (BE (*err != REG_NOERROR, 0))
+ goto parse_bracket_exp_free_return;
+ }
+ else
+ {
+ switch (start_elem.type)
+ {
+ case SB_CHAR:
+ bitset_set (sbcset, start_elem.opr.ch);
+ break;
+#ifdef RE_ENABLE_I18N
+ case MB_CHAR:
+ /* Check whether the array has enough space. */
+ if (BE (mbchar_alloc == mbcset->nmbchars, 0))
+ {
+ wchar_t *new_mbchars;
+ /* Not enough, realloc it. */
+ /* +1 in case of mbcset->nmbchars is 0. */
+ mbchar_alloc = 2 * mbcset->nmbchars + 1;
+ /* Use realloc since array is NULL if *alloc == 0. */
+ new_mbchars = re_realloc (mbcset->mbchars, wchar_t,
+ mbchar_alloc);
+ if (BE (new_mbchars == NULL, 0))
+ goto parse_bracket_exp_espace;
+ mbcset->mbchars = new_mbchars;
+ }
+ mbcset->mbchars[mbcset->nmbchars++] = start_elem.opr.wch;
+ break;
+#endif /* RE_ENABLE_I18N */
+ case EQUIV_CLASS:
+ *err = build_equiv_class (sbcset,
+#ifdef RE_ENABLE_I18N
+ mbcset, &equiv_class_alloc,
+#endif /* RE_ENABLE_I18N */
+ start_elem.opr.name);
+ if (BE (*err != REG_NOERROR, 0))
+ goto parse_bracket_exp_free_return;
+ break;
+ case COLL_SYM:
+ *err = build_collating_symbol (sbcset,
+#ifdef RE_ENABLE_I18N
+ mbcset, &coll_sym_alloc,
+#endif /* RE_ENABLE_I18N */
+ start_elem.opr.name);
+ if (BE (*err != REG_NOERROR, 0))
+ goto parse_bracket_exp_free_return;
+ break;
+ case CHAR_CLASS:
+ *err = build_charclass (regexp->trans, sbcset,
+#ifdef RE_ENABLE_I18N
+ mbcset, &char_class_alloc,
+#endif /* RE_ENABLE_I18N */
+ start_elem.opr.name, syntax);
+ if (BE (*err != REG_NOERROR, 0))
+ goto parse_bracket_exp_free_return;
+ break;
+ default:
+ assert (0);
+ break;
+ }
+ }
+ if (BE (token->type == END_OF_RE, 0))
+ {
+ *err = REG_EBRACK;
+ goto parse_bracket_exp_free_return;
+ }
+ if (token->type == OP_CLOSE_BRACKET)
+ break;
+ }
+
+ re_string_skip_bytes (regexp, token_len); /* Skip a token. */
+
+ /* If it is non-matching list. */
+ if (non_match)
+ bitset_not (sbcset);
+
+#ifdef RE_ENABLE_I18N
+ /* Ensure only single byte characters are set. */
+ if (dfa->mb_cur_max > 1)
+ bitset_mask (sbcset, dfa->sb_char);
+
+ if (mbcset->nmbchars || mbcset->ncoll_syms || mbcset->nequiv_classes
+ || mbcset->nranges || (dfa->mb_cur_max > 1 && (mbcset->nchar_classes
+ || mbcset->non_match)))
+ {
+ bin_tree_t *mbc_tree;
+ int sbc_idx;
+ /* Build a tree for complex bracket. */
+ dfa->has_mb_node = 1;
+ br_token.type = COMPLEX_BRACKET;
+ br_token.opr.mbcset = mbcset;
+ mbc_tree = create_token_tree (dfa, NULL, NULL, &br_token);
+ if (BE (mbc_tree == NULL, 0))
+ goto parse_bracket_exp_espace;
+ for (sbc_idx = 0; sbc_idx < BITSET_WORDS; ++sbc_idx)
+ if (sbcset[sbc_idx])
+ break;
+ /* If there are no bits set in sbcset, there is no point
+ of having both SIMPLE_BRACKET and COMPLEX_BRACKET. */
+ if (sbc_idx < BITSET_WORDS)
+ {
+ /* Build a tree for simple bracket. */
+ br_token.type = SIMPLE_BRACKET;
+ br_token.opr.sbcset = sbcset;
+ work_tree = create_token_tree (dfa, NULL, NULL, &br_token);
+ if (BE (work_tree == NULL, 0))
+ goto parse_bracket_exp_espace;
+
+ /* Then join them by ALT node. */
+ work_tree = create_tree (dfa, work_tree, mbc_tree, OP_ALT);
+ if (BE (work_tree == NULL, 0))
+ goto parse_bracket_exp_espace;
+ }
+ else
+ {
+ re_free (sbcset);
+ work_tree = mbc_tree;
+ }
+ }
+ else
+#endif /* not RE_ENABLE_I18N */
+ {
+#ifdef RE_ENABLE_I18N
+ free_charset (mbcset);
+#endif
+ /* Build a tree for simple bracket. */
+ br_token.type = SIMPLE_BRACKET;
+ br_token.opr.sbcset = sbcset;
+ work_tree = create_token_tree (dfa, NULL, NULL, &br_token);
+ if (BE (work_tree == NULL, 0))
+ goto parse_bracket_exp_espace;
+ }
+ return work_tree;
+
+ parse_bracket_exp_espace:
+ *err = REG_ESPACE;
+ parse_bracket_exp_free_return:
+ re_free (sbcset);
+#ifdef RE_ENABLE_I18N
+ free_charset (mbcset);
+#endif /* RE_ENABLE_I18N */
+ return NULL;
+}
+
+/* Parse an element in the bracket expression. */
+
+static reg_errcode_t
+parse_bracket_element (bracket_elem_t *elem, re_string_t *regexp,
+ re_token_t *token, int token_len, re_dfa_t *dfa,
+ reg_syntax_t syntax, bool accept_hyphen)
+{
+#ifdef RE_ENABLE_I18N
+ int cur_char_size;
+ cur_char_size = re_string_char_size_at (regexp, re_string_cur_idx (regexp));
+ if (cur_char_size > 1)
+ {
+ elem->type = MB_CHAR;
+ elem->opr.wch = re_string_wchar_at (regexp, re_string_cur_idx (regexp));
+ re_string_skip_bytes (regexp, cur_char_size);
+ return REG_NOERROR;
+ }
+#endif /* RE_ENABLE_I18N */
+ re_string_skip_bytes (regexp, token_len); /* Skip a token. */
+ if (token->type == OP_OPEN_COLL_ELEM || token->type == OP_OPEN_CHAR_CLASS
+ || token->type == OP_OPEN_EQUIV_CLASS)
+ return parse_bracket_symbol (elem, regexp, token);
+ if (BE (token->type == OP_CHARSET_RANGE, 0) && !accept_hyphen)
+ {
+ /* A '-' must only appear as anything but a range indicator before
+ the closing bracket. Everything else is an error. */
+ re_token_t token2;
+ (void) peek_token_bracket (&token2, regexp, syntax);
+ if (token2.type != OP_CLOSE_BRACKET)
+ /* The actual error value is not standardized since this whole
+ case is undefined. But ERANGE makes good sense. */
+ return REG_ERANGE;
+ }
+ elem->type = SB_CHAR;
+ elem->opr.ch = token->opr.c;
+ return REG_NOERROR;
+}
+
+/* Parse a bracket symbol in the bracket expression. Bracket symbols are
+ such as [:<character_class>:], [.<collating_element>.], and
+ [=<equivalent_class>=]. */
+
+static reg_errcode_t
+parse_bracket_symbol (bracket_elem_t *elem, re_string_t *regexp,
+ re_token_t *token)
+{
+ unsigned char ch, delim = token->opr.c;
+ int i = 0;
+ if (re_string_eoi(regexp))
+ return REG_EBRACK;
+ for (;; ++i)
+ {
+ if (i >= BRACKET_NAME_BUF_SIZE)
+ return REG_EBRACK;
+ if (token->type == OP_OPEN_CHAR_CLASS)
+ ch = re_string_fetch_byte_case (regexp);
+ else
+ ch = re_string_fetch_byte (regexp);
+ if (re_string_eoi(regexp))
+ return REG_EBRACK;
+ if (ch == delim && re_string_peek_byte (regexp, 0) == ']')
+ break;
+ elem->opr.name[i] = ch;
+ }
+ re_string_skip_bytes (regexp, 1);
+ elem->opr.name[i] = '\0';
+ switch (token->type)
+ {
+ case OP_OPEN_COLL_ELEM:
+ elem->type = COLL_SYM;
+ break;
+ case OP_OPEN_EQUIV_CLASS:
+ elem->type = EQUIV_CLASS;
+ break;
+ case OP_OPEN_CHAR_CLASS:
+ elem->type = CHAR_CLASS;
+ break;
+ default:
+ break;
+ }
+ return REG_NOERROR;
+}
+
+ /* Helper function for parse_bracket_exp.
+ Build the equivalence class which is represented by NAME.
+ The result are written to MBCSET and SBCSET.
+ EQUIV_CLASS_ALLOC is the allocated size of mbcset->equiv_classes,
+ is a pointer argument sinse we may update it. */
+
+static reg_errcode_t
+#ifdef RE_ENABLE_I18N
+build_equiv_class (bitset_t sbcset, re_charset_t *mbcset,
+ Idx *equiv_class_alloc, const unsigned char *name)
+#else /* not RE_ENABLE_I18N */
+build_equiv_class (bitset_t sbcset, const unsigned char *name)
+#endif /* not RE_ENABLE_I18N */
+{
+#ifdef _LIBC
+ uint32_t nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
+ if (nrules != 0)
+ {
+ const int32_t *table, *indirect;
+ const unsigned char *weights, *extra, *cp;
+ unsigned char char_buf[2];
+ int32_t idx1, idx2;
+ unsigned int ch;
+ size_t len;
+ /* This #include defines a local function! */
+# include <locale/weight.h>
+ /* Calculate the index for equivalence class. */
+ cp = name;
+ table = (const int32_t *) _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB);
+ weights = (const unsigned char *) _NL_CURRENT (LC_COLLATE,
+ _NL_COLLATE_WEIGHTMB);
+ extra = (const unsigned char *) _NL_CURRENT (LC_COLLATE,
+ _NL_COLLATE_EXTRAMB);
+ indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE,
+ _NL_COLLATE_INDIRECTMB);
+ idx1 = findidx (&cp);
+ if (BE (idx1 == 0 || cp < name + strlen ((const char *) name), 0))
+ /* This isn't a valid character. */
+ return REG_ECOLLATE;
+
+ /* Build single byte matcing table for this equivalence class. */
+ char_buf[1] = (unsigned char) '\0';
+ len = weights[idx1];
+ for (ch = 0; ch < SBC_MAX; ++ch)
+ {
+ char_buf[0] = ch;
+ cp = char_buf;
+ idx2 = findidx (&cp);
+/*
+ idx2 = table[ch];
+*/
+ if (idx2 == 0)
+ /* This isn't a valid character. */
+ continue;
+ if (len == weights[idx2])
+ {
+ int cnt = 0;
+ while (cnt <= len &&
+ weights[idx1 + 1 + cnt] == weights[idx2 + 1 + cnt])
+ ++cnt;
+
+ if (cnt > len)
+ bitset_set (sbcset, ch);
+ }
+ }
+ /* Check whether the array has enough space. */
+ if (BE (*equiv_class_alloc == mbcset->nequiv_classes, 0))
+ {
+ /* Not enough, realloc it. */
+ /* +1 in case of mbcset->nequiv_classes is 0. */
+ Idx new_equiv_class_alloc = 2 * mbcset->nequiv_classes + 1;
+ /* Use realloc since the array is NULL if *alloc == 0. */
+ int32_t *new_equiv_classes = re_realloc (mbcset->equiv_classes,
+ int32_t,
+ new_equiv_class_alloc);
+ if (BE (new_equiv_classes == NULL, 0))
+ return REG_ESPACE;
+ mbcset->equiv_classes = new_equiv_classes;
+ *equiv_class_alloc = new_equiv_class_alloc;
+ }
+ mbcset->equiv_classes[mbcset->nequiv_classes++] = idx1;
+ }
+ else
+#endif /* _LIBC */
+ {
+ if (BE (strlen ((const char *) name) != 1, 0))
+ return REG_ECOLLATE;
+ bitset_set (sbcset, *name);
+ }
+ return REG_NOERROR;
+}
+
+ /* Helper function for parse_bracket_exp.
+ Build the character class which is represented by NAME.
+ The result are written to MBCSET and SBCSET.
+ CHAR_CLASS_ALLOC is the allocated size of mbcset->char_classes,
+ is a pointer argument sinse we may update it. */
+
+static reg_errcode_t
+#ifdef RE_ENABLE_I18N
+build_charclass (RE_TRANSLATE_TYPE trans, bitset_t sbcset,
+ re_charset_t *mbcset, Idx *char_class_alloc,
+ const unsigned char *class_name, reg_syntax_t syntax)
+#else /* not RE_ENABLE_I18N */
+build_charclass (RE_TRANSLATE_TYPE trans, bitset_t sbcset,
+ const unsigned char *class_name, reg_syntax_t syntax)
+#endif /* not RE_ENABLE_I18N */
+{
+ int i;
+ const char *name = (const char *) class_name;
+
+ /* In case of REG_ICASE "upper" and "lower" match the both of
+ upper and lower cases. */
+ if ((syntax & RE_ICASE)
+ && (strcmp (name, "upper") == 0 || strcmp (name, "lower") == 0))
+ name = "alpha";
+
+#ifdef RE_ENABLE_I18N
+ /* Check the space of the arrays. */
+ if (BE (*char_class_alloc == mbcset->nchar_classes, 0))
+ {
+ /* Not enough, realloc it. */
+ /* +1 in case of mbcset->nchar_classes is 0. */
+ Idx new_char_class_alloc = 2 * mbcset->nchar_classes + 1;
+ /* Use realloc since array is NULL if *alloc == 0. */
+ wctype_t *new_char_classes = re_realloc (mbcset->char_classes, wctype_t,
+ new_char_class_alloc);
+ if (BE (new_char_classes == NULL, 0))
+ return REG_ESPACE;
+ mbcset->char_classes = new_char_classes;
+ *char_class_alloc = new_char_class_alloc;
+ }
+ mbcset->char_classes[mbcset->nchar_classes++] = __wctype (name);
+#endif /* RE_ENABLE_I18N */
+
+#define BUILD_CHARCLASS_LOOP(ctype_func) \
+ do { \
+ if (BE (trans != NULL, 0)) \
+ { \
+ for (i = 0; i < SBC_MAX; ++i) \
+ if (ctype_func (i)) \
+ bitset_set (sbcset, trans[i]); \
+ } \
+ else \
+ { \
+ for (i = 0; i < SBC_MAX; ++i) \
+ if (ctype_func (i)) \
+ bitset_set (sbcset, i); \
+ } \
+ } while (0)
+
+ if (strcmp (name, "alnum") == 0)
+ BUILD_CHARCLASS_LOOP (isalnum);
+ else if (strcmp (name, "cntrl") == 0)
+ BUILD_CHARCLASS_LOOP (iscntrl);
+ else if (strcmp (name, "lower") == 0)
+ BUILD_CHARCLASS_LOOP (islower);
+ else if (strcmp (name, "space") == 0)
+ BUILD_CHARCLASS_LOOP (isspace);
+ else if (strcmp (name, "alpha") == 0)
+ BUILD_CHARCLASS_LOOP (isalpha);
+ else if (strcmp (name, "digit") == 0)
+ BUILD_CHARCLASS_LOOP (isdigit);
+ else if (strcmp (name, "print") == 0)
+ BUILD_CHARCLASS_LOOP (isprint);
+ else if (strcmp (name, "upper") == 0)
+ BUILD_CHARCLASS_LOOP (isupper);
+ else if (strcmp (name, "blank") == 0)
+ BUILD_CHARCLASS_LOOP (isblank);
+ else if (strcmp (name, "graph") == 0)
+ BUILD_CHARCLASS_LOOP (isgraph);
+ else if (strcmp (name, "punct") == 0)
+ BUILD_CHARCLASS_LOOP (ispunct);
+ else if (strcmp (name, "xdigit") == 0)
+ BUILD_CHARCLASS_LOOP (isxdigit);
+ else
+ return REG_ECTYPE;
+
+ return REG_NOERROR;
+}
+
+static bin_tree_t *
+build_charclass_op (re_dfa_t *dfa, RE_TRANSLATE_TYPE trans,
+ const unsigned char *class_name,
+ const unsigned char *extra, bool non_match,
+ reg_errcode_t *err)
+{
+ re_bitset_ptr_t sbcset;
+#ifdef RE_ENABLE_I18N
+ re_charset_t *mbcset;
+ Idx alloc = 0;
+#endif /* not RE_ENABLE_I18N */
+ reg_errcode_t ret;
+ re_token_t br_token;
+ bin_tree_t *tree;
+
+ sbcset = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);
+#ifdef RE_ENABLE_I18N
+ mbcset = (re_charset_t *) calloc (sizeof (re_charset_t), 1);
+#endif /* RE_ENABLE_I18N */
+
+#ifdef RE_ENABLE_I18N
+ if (BE (sbcset == NULL || mbcset == NULL, 0))
+#else /* not RE_ENABLE_I18N */
+ if (BE (sbcset == NULL, 0))
+#endif /* not RE_ENABLE_I18N */
+ {
+ *err = REG_ESPACE;
+ return NULL;
+ }
+
+ if (non_match)
+ {
+#ifdef RE_ENABLE_I18N
+ mbcset->non_match = 1;
+#endif /* not RE_ENABLE_I18N */
+ }
+
+ /* We don't care the syntax in this case. */
+ ret = build_charclass (trans, sbcset,
+#ifdef RE_ENABLE_I18N
+ mbcset, &alloc,
+#endif /* RE_ENABLE_I18N */
+ class_name, 0);
+
+ if (BE (ret != REG_NOERROR, 0))
+ {
+ re_free (sbcset);
+#ifdef RE_ENABLE_I18N
+ free_charset (mbcset);
+#endif /* RE_ENABLE_I18N */
+ *err = ret;
+ return NULL;
+ }
+ /* \w match '_' also. */
+ for (; *extra; extra++)
+ bitset_set (sbcset, *extra);
+
+ /* If it is non-matching list. */
+ if (non_match)
+ bitset_not (sbcset);
+
+#ifdef RE_ENABLE_I18N
+ /* Ensure only single byte characters are set. */
+ if (dfa->mb_cur_max > 1)
+ bitset_mask (sbcset, dfa->sb_char);
+#endif
+
+ /* Build a tree for simple bracket. */
+ br_token.type = SIMPLE_BRACKET;
+ br_token.opr.sbcset = sbcset;
+ tree = create_token_tree (dfa, NULL, NULL, &br_token);
+ if (BE (tree == NULL, 0))
+ goto build_word_op_espace;
+
+#ifdef RE_ENABLE_I18N
+ if (dfa->mb_cur_max > 1)
+ {
+ bin_tree_t *mbc_tree;
+ /* Build a tree for complex bracket. */
+ br_token.type = COMPLEX_BRACKET;
+ br_token.opr.mbcset = mbcset;
+ dfa->has_mb_node = 1;
+ mbc_tree = create_token_tree (dfa, NULL, NULL, &br_token);
+ if (BE (mbc_tree == NULL, 0))
+ goto build_word_op_espace;
+ /* Then join them by ALT node. */
+ tree = create_tree (dfa, tree, mbc_tree, OP_ALT);
+ if (BE (mbc_tree != NULL, 1))
+ return tree;
+ }
+ else
+ {
+ free_charset (mbcset);
+ return tree;
+ }
+#else /* not RE_ENABLE_I18N */
+ return tree;
+#endif /* not RE_ENABLE_I18N */
+
+ build_word_op_espace:
+ re_free (sbcset);
+#ifdef RE_ENABLE_I18N
+ free_charset (mbcset);
+#endif /* RE_ENABLE_I18N */
+ *err = REG_ESPACE;
+ return NULL;
+}
+
+/* This is intended for the expressions like "a{1,3}".
+ Fetch a number from `input', and return the number.
+ Return REG_MISSING if the number field is empty like "{,1}".
+ Return REG_ERROR if an error occurred. */
+
+static Idx
+fetch_number (re_string_t *input, re_token_t *token, reg_syntax_t syntax)
+{
+ Idx num = REG_MISSING;
+ unsigned char c;
+ while (1)
+ {
+ fetch_token (token, input, syntax);
+ c = token->opr.c;
+ if (BE (token->type == END_OF_RE, 0))
+ return REG_ERROR;
+ if (token->type == OP_CLOSE_DUP_NUM || c == ',')
+ break;
+ num = ((token->type != CHARACTER || c < '0' || '9' < c
+ || num == REG_ERROR)
+ ? REG_ERROR
+ : ((num == REG_MISSING) ? c - '0' : num * 10 + c - '0'));
+ num = (num > RE_DUP_MAX) ? REG_ERROR : num;
+ }
+ return num;
+}
+
+#ifdef RE_ENABLE_I18N
+static void
+free_charset (re_charset_t *cset)
+{
+ re_free (cset->mbchars);
+# ifdef _LIBC
+ re_free (cset->coll_syms);
+ re_free (cset->equiv_classes);
+ re_free (cset->range_starts);
+ re_free (cset->range_ends);
+# endif
+ re_free (cset->char_classes);
+ re_free (cset);
+}
+#endif /* RE_ENABLE_I18N */
+
+/* Functions for binary tree operation. */
+
+/* Create a tree node. */
+
+static bin_tree_t *
+create_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right,
+ re_token_type_t type)
+{
+ re_token_t t;
+ t.type = type;
+ return create_token_tree (dfa, left, right, &t);
+}
+
+static bin_tree_t *
+create_token_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right,
+ const re_token_t *token)
+{
+ bin_tree_t *tree;
+ if (BE (dfa->str_tree_storage_idx == BIN_TREE_STORAGE_SIZE, 0))
+ {
+ bin_tree_storage_t *storage = re_malloc (bin_tree_storage_t, 1);
+
+ if (storage == NULL)
+ return NULL;
+ storage->next = dfa->str_tree_storage;
+ dfa->str_tree_storage = storage;
+ dfa->str_tree_storage_idx = 0;
+ }
+ tree = &dfa->str_tree_storage->data[dfa->str_tree_storage_idx++];
+
+ tree->parent = NULL;
+ tree->left = left;
+ tree->right = right;
+ tree->token = *token;
+ tree->token.duplicated = 0;
+ tree->token.opt_subexp = 0;
+ tree->first = NULL;
+ tree->next = NULL;
+ tree->node_idx = REG_MISSING;
+
+ if (left != NULL)
+ left->parent = tree;
+ if (right != NULL)
+ right->parent = tree;
+ return tree;
+}
+
+/* Mark the tree SRC as an optional subexpression.
+ To be called from preorder or postorder. */
+
+static reg_errcode_t
+mark_opt_subexp (void *extra, bin_tree_t *node)
+{
+ Idx idx = (Idx) (long) extra;
+ if (node->token.type == SUBEXP && node->token.opr.idx == idx)
+ node->token.opt_subexp = 1;
+
+ return REG_NOERROR;
+}
+
+/* Free the allocated memory inside NODE. */
+
+static void
+free_token (re_token_t *node)
+{
+#ifdef RE_ENABLE_I18N
+ if (node->type == COMPLEX_BRACKET && node->duplicated == 0)
+ free_charset (node->opr.mbcset);
+ else
+#endif /* RE_ENABLE_I18N */
+ if (node->type == SIMPLE_BRACKET && node->duplicated == 0)
+ re_free (node->opr.sbcset);
+}
+
+/* Worker function for tree walking. Free the allocated memory inside NODE
+ and its children. */
+
+static reg_errcode_t
+free_tree (void *extra, bin_tree_t *node)
+{
+ free_token (&node->token);
+ return REG_NOERROR;
+}
+
+
+/* Duplicate the node SRC, and return new node. This is a preorder
+ visit similar to the one implemented by the generic visitor, but
+ we need more infrastructure to maintain two parallel trees --- so,
+ it's easier to duplicate. */
+
+static bin_tree_t *
+duplicate_tree (const bin_tree_t *root, re_dfa_t *dfa)
+{
+ const bin_tree_t *node;
+ bin_tree_t *dup_root;
+ bin_tree_t **p_new = &dup_root, *dup_node = root->parent;
+
+ for (node = root; ; )
+ {
+ /* Create a new tree and link it back to the current parent. */
+ *p_new = create_token_tree (dfa, NULL, NULL, &node->token);
+ if (*p_new == NULL)
+ return NULL;
+ (*p_new)->parent = dup_node;
+ (*p_new)->token.duplicated = 1;
+ dup_node = *p_new;
+
+ /* Go to the left node, or up and to the right. */
+ if (node->left)
+ {
+ node = node->left;
+ p_new = &dup_node->left;
+ }
+ else
+ {
+ const bin_tree_t *prev = NULL;
+ while (node->right == prev || node->right == NULL)
+ {
+ prev = node;
+ node = node->parent;
+ dup_node = dup_node->parent;
+ if (!node)
+ return dup_root;
+ }
+ node = node->right;
+ p_new = &dup_node->right;
+ }
+ }
+}
diff --git a/lib/regex.c b/lib/regex.c
new file mode 100644
index 0000000..d4eb726
--- /dev/null
+++ b/lib/regex.c
@@ -0,0 +1,71 @@
+/* Extended regular expression matching and search library.
+ Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Make sure noone compiles this code with a C++ compiler. */
+#if defined __cplusplus && defined _LIBC
+# error "This is C code, use a C compiler"
+#endif
+
+#ifdef _LIBC
+/* We have to keep the namespace clean. */
+# define regfree(preg) __regfree (preg)
+# define regexec(pr, st, nm, pm, ef) __regexec (pr, st, nm, pm, ef)
+# define regcomp(preg, pattern, cflags) __regcomp (preg, pattern, cflags)
+# define regerror(errcode, preg, errbuf, errbuf_size) \
+ __regerror(errcode, preg, errbuf, errbuf_size)
+# define re_set_registers(bu, re, nu, st, en) \
+ __re_set_registers (bu, re, nu, st, en)
+# define re_match_2(bufp, string1, size1, string2, size2, pos, regs, stop) \
+ __re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop)
+# define re_match(bufp, string, size, pos, regs) \
+ __re_match (bufp, string, size, pos, regs)
+# define re_search(bufp, string, size, startpos, range, regs) \
+ __re_search (bufp, string, size, startpos, range, regs)
+# define re_compile_pattern(pattern, length, bufp) \
+ __re_compile_pattern (pattern, length, bufp)
+# define re_set_syntax(syntax) __re_set_syntax (syntax)
+# define re_search_2(bufp, st1, s1, st2, s2, startpos, range, regs, stop) \
+ __re_search_2 (bufp, st1, s1, st2, s2, startpos, range, regs, stop)
+# define re_compile_fastmap(bufp) __re_compile_fastmap (bufp)
+
+# include "../locale/localeinfo.h"
+#endif
+
+/* On some systems, limits.h sets RE_DUP_MAX to a lower value than
+ GNU regex allows. Include it before <regex.h>, which correctly
+ #undefs RE_DUP_MAX and sets it to the right value. */
+#include <limits.h>
+
+#include <regex.h>
+#include "regex_internal.h"
+
+#include "regex_internal.c"
+#include "regcomp.c"
+#include "regexec.c"
+
+/* Binary backward compatibility. */
+#if _LIBC
+# include <shlib-compat.h>
+# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3)
+link_warning (re_max_failures, "the 're_max_failures' variable is obsolete and will go away.")
+int re_max_failures = 2000;
+# endif
+#endif
diff --git a/lib/regex.h b/lib/regex.h
new file mode 100644
index 0000000..7a79ca3
--- /dev/null
+++ b/lib/regex.h
@@ -0,0 +1,675 @@
+/* Definitions for data structures and routines for the regular
+ expression library.
+ Copyright (C) 1985,1989-93,1995-98,2000,2001,2002,2003,2005,2006
+ Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _REGEX_H
+#define _REGEX_H 1
+
+#include <sys/types.h>
+
+/* Allow the use in C++ code. */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Define __USE_GNU_REGEX to declare GNU extensions that violate the
+ POSIX name space rules. */
+#undef __USE_GNU_REGEX
+#if (defined _GNU_SOURCE \
+ || (!defined _POSIX_C_SOURCE && !defined _POSIX_SOURCE \
+ && !defined _XOPEN_SOURCE))
+# define __USE_GNU_REGEX 1
+#endif
+
+#ifdef _REGEX_LARGE_OFFSETS
+
+/* Use types and values that are wide enough to represent signed and
+ unsigned byte offsets in memory. This currently works only when
+ the regex code is used outside of the GNU C library; it is not yet
+ supported within glibc itself, and glibc users should not define
+ _REGEX_LARGE_OFFSETS. */
+
+/* The type of the offset of a byte within a string.
+ For historical reasons POSIX 1003.1-2004 requires that regoff_t be
+ at least as wide as off_t. However, many common POSIX platforms set
+ regoff_t to the more-sensible ssize_t and the Open Group has
+ signalled its intention to change the requirement to be that
+ regoff_t be at least as wide as ptrdiff_t and ssize_t; see XBD ERN
+ 60 (2005-08-25). We don't know of any hosts where ssize_t or
+ ptrdiff_t is wider than ssize_t, so ssize_t is safe. */
+typedef ssize_t regoff_t;
+
+/* The type of nonnegative object indexes. Traditionally, GNU regex
+ uses 'int' for these. Code that uses __re_idx_t should work
+ regardless of whether the type is signed. */
+typedef size_t __re_idx_t;
+
+/* The type of object sizes. */
+typedef size_t __re_size_t;
+
+/* The type of object sizes, in places where the traditional code
+ uses unsigned long int. */
+typedef size_t __re_long_size_t;
+
+#else
+
+/* Use types that are binary-compatible with the traditional GNU regex
+ implementation, which mishandles strings longer than INT_MAX. */
+
+typedef int regoff_t;
+typedef int __re_idx_t;
+typedef unsigned int __re_size_t;
+typedef unsigned long int __re_long_size_t;
+
+#endif
+
+/* The following two types have to be signed and unsigned integer type
+ wide enough to hold a value of a pointer. For most ANSI compilers
+ ptrdiff_t and size_t should be likely OK. Still size of these two
+ types is 2 for Microsoft C. Ugh... */
+typedef long int s_reg_t;
+typedef unsigned long int active_reg_t;
+
+/* The following bits are used to determine the regexp syntax we
+ recognize. The set/not-set meanings are chosen so that Emacs syntax
+ remains the value 0. The bits are given in alphabetical order, and
+ the definitions shifted by one from the previous bit; thus, when we
+ add or remove a bit, only one other definition need change. */
+typedef unsigned long int reg_syntax_t;
+
+#ifdef __USE_GNU_REGEX
+
+/* If this bit is not set, then \ inside a bracket expression is literal.
+ If set, then such a \ quotes the following character. */
+# define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
+
+/* If this bit is not set, then + and ? are operators, and \+ and \? are
+ literals.
+ If set, then \+ and \? are operators and + and ? are literals. */
+# define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
+
+/* If this bit is set, then character classes are supported. They are:
+ [:alpha:], [:upper:], [:lower:], [:digit:], [:alnum:], [:xdigit:],
+ [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
+ If not set, then character classes are not supported. */
+# define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
+
+/* If this bit is set, then ^ and $ are always anchors (outside bracket
+ expressions, of course).
+ If this bit is not set, then it depends:
+ ^ is an anchor if it is at the beginning of a regular
+ expression or after an open-group or an alternation operator;
+ $ is an anchor if it is at the end of a regular expression, or
+ before a close-group or an alternation operator.
+
+ This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because
+ POSIX draft 11.2 says that * etc. in leading positions is undefined.
+ We already implemented a previous draft which made those constructs
+ invalid, though, so we haven't changed the code back. */
+# define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
+
+/* If this bit is set, then special characters are always special
+ regardless of where they are in the pattern.
+ If this bit is not set, then special characters are special only in
+ some contexts; otherwise they are ordinary. Specifically,
+ * + ? and intervals are only special when not after the beginning,
+ open-group, or alternation operator. */
+# define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
+
+/* If this bit is set, then *, +, ?, and { cannot be first in an re or
+ immediately after an alternation or begin-group operator. */
+# define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
+
+/* If this bit is set, then . matches newline.
+ If not set, then it doesn't. */
+# define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
+
+/* If this bit is set, then . doesn't match NUL.
+ If not set, then it does. */
+# define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
+
+/* If this bit is set, nonmatching lists [^...] do not match newline.
+ If not set, they do. */
+# define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
+
+/* If this bit is set, either \{...\} or {...} defines an
+ interval, depending on RE_NO_BK_BRACES.
+ If not set, \{, \}, {, and } are literals. */
+# define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
+
+/* If this bit is set, +, ? and | aren't recognized as operators.
+ If not set, they are. */
+# define RE_LIMITED_OPS (RE_INTERVALS << 1)
+
+/* If this bit is set, newline is an alternation operator.
+ If not set, newline is literal. */
+# define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
+
+/* If this bit is set, then `{...}' defines an interval, and \{ and \}
+ are literals.
+ If not set, then `\{...\}' defines an interval. */
+# define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
+
+/* If this bit is set, (...) defines a group, and \( and \) are literals.
+ If not set, \(...\) defines a group, and ( and ) are literals. */
+# define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
+
+/* If this bit is set, then \<digit> matches <digit>.
+ If not set, then \<digit> is a back-reference. */
+# define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
+
+/* If this bit is set, then | is an alternation operator, and \| is literal.
+ If not set, then \| is an alternation operator, and | is literal. */
+# define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
+
+/* If this bit is set, then an ending range point collating higher
+ than the starting range point, as in [z-a], is invalid.
+ If not set, then when ending range point collates higher than the
+ starting range point, the range is ignored. */
+# define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
+
+/* If this bit is set, then an unmatched ) is ordinary.
+ If not set, then an unmatched ) is invalid. */
+# define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
+
+/* If this bit is set, succeed as soon as we match the whole pattern,
+ without further backtracking. */
+# define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1)
+
+/* If this bit is set, do not process the GNU regex operators.
+ If not set, then the GNU regex operators are recognized. */
+# define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1)
+
+/* If this bit is set, turn on internal regex debugging.
+ If not set, and debugging was on, turn it off.
+ This only works if regex.c is compiled -DDEBUG.
+ We define this bit always, so that all that's needed to turn on
+ debugging is to recompile regex.c; the calling code can always have
+ this bit set, and it won't affect anything in the normal case. */
+# define RE_DEBUG (RE_NO_GNU_OPS << 1)
+
+/* If this bit is set, a syntactically invalid interval is treated as
+ a string of ordinary characters. For example, the ERE 'a{1' is
+ treated as 'a\{1'. */
+# define RE_INVALID_INTERVAL_ORD (RE_DEBUG << 1)
+
+/* If this bit is set, then ignore case when matching.
+ If not set, then case is significant. */
+# define RE_ICASE (RE_INVALID_INTERVAL_ORD << 1)
+
+/* This bit is used internally like RE_CONTEXT_INDEP_ANCHORS but only
+ for ^, because it is difficult to scan the regex backwards to find
+ whether ^ should be special. */
+# define RE_CARET_ANCHORS_HERE (RE_ICASE << 1)
+
+/* If this bit is set, then \{ cannot be first in an bre or
+ immediately after an alternation or begin-group operator. */
+# define RE_CONTEXT_INVALID_DUP (RE_CARET_ANCHORS_HERE << 1)
+
+/* If this bit is set, then no_sub will be set to 1 during
+ re_compile_pattern. */
+# define RE_NO_SUB (RE_CONTEXT_INVALID_DUP << 1)
+
+#endif /* defined __USE_GNU_REGEX */
+
+/* This global variable defines the particular regexp syntax to use (for
+ some interfaces). When a regexp is compiled, the syntax used is
+ stored in the pattern buffer, so changing this does not affect
+ already-compiled regexps. */
+extern reg_syntax_t re_syntax_options;
+
+#ifdef __USE_GNU_REGEX
+/* Define combinations of the above bits for the standard possibilities.
+ (The [[[ comments delimit what gets put into the Texinfo file, so
+ don't delete them!) */
+/* [[[begin syntaxes]]] */
+# define RE_SYNTAX_EMACS 0
+
+# define RE_SYNTAX_AWK \
+ (RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL \
+ | RE_NO_BK_PARENS | RE_NO_BK_REFS \
+ | RE_NO_BK_VBAR | RE_NO_EMPTY_RANGES \
+ | RE_DOT_NEWLINE | RE_CONTEXT_INDEP_ANCHORS \
+ | RE_UNMATCHED_RIGHT_PAREN_ORD | RE_NO_GNU_OPS)
+
+# define RE_SYNTAX_GNU_AWK \
+ ((RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DEBUG) \
+ & ~(RE_DOT_NOT_NULL | RE_INTERVALS | RE_CONTEXT_INDEP_OPS \
+ | RE_CONTEXT_INVALID_OPS ))
+
+# define RE_SYNTAX_POSIX_AWK \
+ (RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS \
+ | RE_INTERVALS | RE_NO_GNU_OPS)
+
+# define RE_SYNTAX_GREP \
+ (RE_BK_PLUS_QM | RE_CHAR_CLASSES \
+ | RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS \
+ | RE_NEWLINE_ALT)
+
+# define RE_SYNTAX_EGREP \
+ (RE_CHAR_CLASSES | RE_CONTEXT_INDEP_ANCHORS \
+ | RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE \
+ | RE_NEWLINE_ALT | RE_NO_BK_PARENS \
+ | RE_NO_BK_VBAR)
+
+# define RE_SYNTAX_POSIX_EGREP \
+ (RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES \
+ | RE_INVALID_INTERVAL_ORD)
+
+/* P1003.2/D11.2, section 4.20.7.1, lines 5078ff. */
+# define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC
+
+# define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC
+
+/* Syntax bits common to both basic and extended POSIX regex syntax. */
+# define _RE_SYNTAX_POSIX_COMMON \
+ (RE_CHAR_CLASSES | RE_DOT_NEWLINE | RE_DOT_NOT_NULL \
+ | RE_INTERVALS | RE_NO_EMPTY_RANGES)
+
+# define RE_SYNTAX_POSIX_BASIC \
+ (_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM | RE_CONTEXT_INVALID_DUP)
+
+/* Differs from ..._POSIX_BASIC only in that RE_BK_PLUS_QM becomes
+ RE_LIMITED_OPS, i.e., \? \+ \| are not recognized. Actually, this
+ isn't minimal, since other operators, such as \`, aren't disabled. */
+# define RE_SYNTAX_POSIX_MINIMAL_BASIC \
+ (_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS)
+
+# define RE_SYNTAX_POSIX_EXTENDED \
+ (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
+ | RE_CONTEXT_INDEP_OPS | RE_NO_BK_BRACES \
+ | RE_NO_BK_PARENS | RE_NO_BK_VBAR \
+ | RE_CONTEXT_INVALID_OPS | RE_UNMATCHED_RIGHT_PAREN_ORD)
+
+/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INDEP_OPS is
+ removed and RE_NO_BK_REFS is added. */
+# define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \
+ (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
+ | RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES \
+ | RE_NO_BK_PARENS | RE_NO_BK_REFS \
+ | RE_NO_BK_VBAR | RE_UNMATCHED_RIGHT_PAREN_ORD)
+/* [[[end syntaxes]]] */
+
+#endif /* defined __USE_GNU_REGEX */
+
+#ifdef __USE_GNU_REGEX
+
+/* Maximum number of duplicates an interval can allow. POSIX-conforming
+ systems might define this in <limits.h>, but we want our
+ value, so remove any previous define. */
+# ifdef RE_DUP_MAX
+# undef RE_DUP_MAX
+# endif
+
+/* RE_DUP_MAX is 2**15 - 1 because an earlier implementation stored
+ the counter as a 2-byte signed integer. This is no longer true, so
+ RE_DUP_MAX could be increased to (INT_MAX / 10 - 1), or to
+ ((SIZE_MAX - 2) / 10 - 1) if _REGEX_LARGE_OFFSETS is defined.
+ However, there would be a huge performance problem if someone
+ actually used a pattern like a\{214748363\}, so RE_DUP_MAX retains
+ its historical value. */
+# define RE_DUP_MAX (0x7fff)
+
+#endif /* defined __USE_GNU_REGEX */
+
+
+/* POSIX `cflags' bits (i.e., information for `regcomp'). */
+
+/* If this bit is set, then use extended regular expression syntax.
+ If not set, then use basic regular expression syntax. */
+#define REG_EXTENDED 1
+
+/* If this bit is set, then ignore case when matching.
+ If not set, then case is significant. */
+#define REG_ICASE (1 << 1)
+
+/* If this bit is set, then anchors do not match at newline
+ characters in the string.
+ If not set, then anchors do match at newlines. */
+#define REG_NEWLINE (1 << 2)
+
+/* If this bit is set, then report only success or fail in regexec.
+ If not set, then returns differ between not matching and errors. */
+#define REG_NOSUB (1 << 3)
+
+
+/* POSIX `eflags' bits (i.e., information for regexec). */
+
+/* If this bit is set, then the beginning-of-line operator doesn't match
+ the beginning of the string (presumably because it's not the
+ beginning of a line).
+ If not set, then the beginning-of-line operator does match the
+ beginning of the string. */
+#define REG_NOTBOL 1
+
+/* Like REG_NOTBOL, except for the end-of-line. */
+#define REG_NOTEOL (1 << 1)
+
+/* Use PMATCH[0] to delimit the start and end of the search in the
+ buffer. */
+#define REG_STARTEND (1 << 2)
+
+
+/* If any error codes are removed, changed, or added, update the
+ `__re_error_msgid' table in regcomp.c. */
+
+typedef enum
+{
+ _REG_ENOSYS = -1, /* This will never happen for this implementation. */
+ _REG_NOERROR = 0, /* Success. */
+ _REG_NOMATCH, /* Didn't find a match (for regexec). */
+
+ /* POSIX regcomp return error codes. (In the order listed in the
+ standard.) */
+ _REG_BADPAT, /* Invalid pattern. */
+ _REG_ECOLLATE, /* Invalid collating element. */
+ _REG_ECTYPE, /* Invalid character class name. */
+ _REG_EESCAPE, /* Trailing backslash. */
+ _REG_ESUBREG, /* Invalid back reference. */
+ _REG_EBRACK, /* Unmatched left bracket. */
+ _REG_EPAREN, /* Parenthesis imbalance. */
+ _REG_EBRACE, /* Unmatched \{. */
+ _REG_BADBR, /* Invalid contents of \{\}. */
+ _REG_ERANGE, /* Invalid range end. */
+ _REG_ESPACE, /* Ran out of memory. */
+ _REG_BADRPT, /* No preceding re for repetition op. */
+
+ /* Error codes we've added. */
+ _REG_EEND, /* Premature end. */
+ _REG_ESIZE, /* Compiled pattern bigger than 2^16 bytes. */
+ _REG_ERPAREN /* Unmatched ) or \); not returned from regcomp. */
+} reg_errcode_t;
+
+#ifdef _XOPEN_SOURCE
+# define REG_ENOSYS _REG_ENOSYS
+#endif
+#define REG_NOERROR _REG_NOERROR
+#define REG_NOMATCH _REG_NOMATCH
+#define REG_BADPAT _REG_BADPAT
+#define REG_ECOLLATE _REG_ECOLLATE
+#define REG_ECTYPE _REG_ECTYPE
+#define REG_EESCAPE _REG_EESCAPE
+#define REG_ESUBREG _REG_ESUBREG
+#define REG_EBRACK _REG_EBRACK
+#define REG_EPAREN _REG_EPAREN
+#define REG_EBRACE _REG_EBRACE
+#define REG_BADBR _REG_BADBR
+#define REG_ERANGE _REG_ERANGE
+#define REG_ESPACE _REG_ESPACE
+#define REG_BADRPT _REG_BADRPT
+#define REG_EEND _REG_EEND
+#define REG_ESIZE _REG_ESIZE
+#define REG_ERPAREN _REG_ERPAREN
+
+/* struct re_pattern_buffer normally uses member names like `buffer'
+ that POSIX does not allow. In POSIX mode these members have names
+ with leading `re_' (e.g., `re_buffer'). */
+#ifdef __USE_GNU_REGEX
+# define _REG_RE_NAME(id) id
+# define _REG_RM_NAME(id) id
+#else
+# define _REG_RE_NAME(id) re_##id
+# define _REG_RM_NAME(id) rm_##id
+#endif
+
+/* The user can specify the type of the re_translate member by
+ defining the macro RE_TRANSLATE_TYPE, which defaults to unsigned
+ char *. This pollutes the POSIX name space, so in POSIX mode just
+ use unsigned char *. */
+#ifdef __USE_GNU_REGEX
+# ifndef RE_TRANSLATE_TYPE
+# define RE_TRANSLATE_TYPE unsigned char *
+# endif
+# define REG_TRANSLATE_TYPE RE_TRANSLATE_TYPE
+#else
+# define REG_TRANSLATE_TYPE unsigned char *
+#endif
+
+/* This data structure represents a compiled pattern. Before calling
+ the pattern compiler, the fields `buffer', `allocated', `fastmap',
+ `translate', and `no_sub' can be set. After the pattern has been
+ compiled, the `re_nsub' field is available. All other fields are
+ private to the regex routines. */
+
+struct re_pattern_buffer
+{
+ /* Space that holds the compiled pattern. It is declared as
+ `unsigned char *' because its elements are sometimes used as
+ array indexes. */
+ unsigned char *_REG_RE_NAME (buffer);
+
+ /* Number of bytes to which `buffer' points. */
+ __re_long_size_t _REG_RE_NAME (allocated);
+
+ /* Number of bytes actually used in `buffer'. */
+ __re_long_size_t _REG_RE_NAME (used);
+
+ /* Syntax setting with which the pattern was compiled. */
+ reg_syntax_t _REG_RE_NAME (syntax);
+
+ /* Pointer to a fastmap, if any, otherwise zero. re_search uses the
+ fastmap, if there is one, to skip over impossible starting points
+ for matches. */
+ char *_REG_RE_NAME (fastmap);
+
+ /* Either a translate table to apply to all characters before
+ comparing them, or zero for no translation. The translation is
+ applied to a pattern when it is compiled and to a string when it
+ is matched. */
+ REG_TRANSLATE_TYPE _REG_RE_NAME (translate);
+
+ /* Number of subexpressions found by the compiler. */
+ size_t re_nsub;
+
+ /* Zero if this pattern cannot match the empty string, one else.
+ Well, in truth it's used only in `re_search_2', to see whether or
+ not we should use the fastmap, so we don't set this absolutely
+ perfectly; see `re_compile_fastmap' (the `duplicate' case). */
+ unsigned int _REG_RE_NAME (can_be_null) : 1;
+
+ /* If REGS_UNALLOCATED, allocate space in the `regs' structure
+ for `max (RE_NREGS, re_nsub + 1)' groups.
+ If REGS_REALLOCATE, reallocate space if necessary.
+ If REGS_FIXED, use what's there. */
+#ifdef __USE_GNU_REGEX
+# define REGS_UNALLOCATED 0
+# define REGS_REALLOCATE 1
+# define REGS_FIXED 2
+#endif
+ unsigned int _REG_RE_NAME (regs_allocated) : 2;
+
+ /* Set to zero when `regex_compile' compiles a pattern; set to one
+ by `re_compile_fastmap' if it updates the fastmap. */
+ unsigned int _REG_RE_NAME (fastmap_accurate) : 1;
+
+ /* If set, `re_match_2' does not return information about
+ subexpressions. */
+ unsigned int _REG_RE_NAME (no_sub) : 1;
+
+ /* If set, a beginning-of-line anchor doesn't match at the beginning
+ of the string. */
+ unsigned int _REG_RE_NAME (not_bol) : 1;
+
+ /* Similarly for an end-of-line anchor. */
+ unsigned int _REG_RE_NAME (not_eol) : 1;
+
+ /* If true, an anchor at a newline matches. */
+ unsigned int _REG_RE_NAME (newline_anchor) : 1;
+
+/* [[[end pattern_buffer]]] */
+};
+
+typedef struct re_pattern_buffer regex_t;
+
+/* This is the structure we store register match data in. See
+ regex.texinfo for a full description of what registers match. */
+struct re_registers
+{
+ __re_size_t _REG_RM_NAME (num_regs);
+ regoff_t *_REG_RM_NAME (start);
+ regoff_t *_REG_RM_NAME (end);
+};
+
+
+/* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer,
+ `re_match_2' returns information about at least this many registers
+ the first time a `regs' structure is passed. */
+#if !defined RE_NREGS && defined __USE_GNU_REGEX
+# define RE_NREGS 30
+#endif
+
+
+/* POSIX specification for registers. Aside from the different names than
+ `re_registers', POSIX uses an array of structures, instead of a
+ structure of arrays. */
+typedef struct
+{
+ regoff_t rm_so; /* Byte offset from string's start to substring's start. */
+ regoff_t rm_eo; /* Byte offset from string's start to substring's end. */
+} regmatch_t;
+
+/* Declarations for routines. */
+
+/* Sets the current default syntax to SYNTAX, and return the old syntax.
+ You can also simply assign to the `re_syntax_options' variable. */
+extern reg_syntax_t re_set_syntax (reg_syntax_t __syntax);
+
+/* Compile the regular expression PATTERN, with length LENGTH
+ and syntax given by the global `re_syntax_options', into the buffer
+ BUFFER. Return NULL if successful, and an error string if not. */
+extern const char *re_compile_pattern (const char *__pattern, size_t __length,
+ struct re_pattern_buffer *__buffer);
+
+
+/* Compile a fastmap for the compiled pattern in BUFFER; used to
+ accelerate searches. Return 0 if successful and -2 if was an
+ internal error. */
+extern int re_compile_fastmap (struct re_pattern_buffer *__buffer);
+
+
+/* Search in the string STRING (with length LENGTH) for the pattern
+ compiled into BUFFER. Start searching at position START, for RANGE
+ characters. Return the starting position of the match, -1 for no
+ match, or -2 for an internal error. Also return register
+ information in REGS (if REGS and BUFFER->no_sub are nonzero). */
+extern regoff_t re_search (struct re_pattern_buffer *__buffer,
+ const char *__string, __re_idx_t __length,
+ __re_idx_t __start, regoff_t __range,
+ struct re_registers *__regs);
+
+
+/* Like `re_search', but search in the concatenation of STRING1 and
+ STRING2. Also, stop searching at index START + STOP. */
+extern regoff_t re_search_2 (struct re_pattern_buffer *__buffer,
+ const char *__string1, __re_idx_t __length1,
+ const char *__string2, __re_idx_t __length2,
+ __re_idx_t __start, regoff_t __range,
+ struct re_registers *__regs,
+ __re_idx_t __stop);
+
+
+/* Like `re_search', but return how many characters in STRING the regexp
+ in BUFFER matched, starting at position START. */
+extern regoff_t re_match (struct re_pattern_buffer *__buffer,
+ const char *__string, __re_idx_t __length,
+ __re_idx_t __start, struct re_registers *__regs);
+
+
+/* Relates to `re_match' as `re_search_2' relates to `re_search'. */
+extern regoff_t re_match_2 (struct re_pattern_buffer *__buffer,
+ const char *__string1, __re_idx_t __length1,
+ const char *__string2, __re_idx_t __length2,
+ __re_idx_t __start, struct re_registers *__regs,
+ __re_idx_t __stop);
+
+
+/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
+ ENDS. Subsequent matches using BUFFER and REGS will use this memory
+ for recording register information. STARTS and ENDS must be
+ allocated with malloc, and must each be at least `NUM_REGS * sizeof
+ (regoff_t)' bytes long.
+
+ If NUM_REGS == 0, then subsequent matches should allocate their own
+ register data.
+
+ Unless this function is called, the first search or match using
+ PATTERN_BUFFER will allocate its own register data, without
+ freeing the old data. */
+extern void re_set_registers (struct re_pattern_buffer *__buffer,
+ struct re_registers *__regs,
+ __re_size_t __num_regs,
+ regoff_t *__starts, regoff_t *__ends);
+
+#if defined _REGEX_RE_COMP || defined _LIBC
+# ifndef _CRAY
+/* 4.2 bsd compatibility. */
+extern char *re_comp (const char *);
+extern int re_exec (const char *);
+# endif
+#endif
+
+/* GCC 2.95 and later have "__restrict"; C99 compilers have
+ "restrict", and "configure" may have defined "restrict".
+ Other compilers use __restrict, __restrict__, and _Restrict, and
+ 'configure' might #define 'restrict' to those words, so pick a
+ different name. */
+#ifndef _Restrict_
+# if 199901L <= __STDC_VERSION__
+# define _Restrict_ restrict
+# elif 2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__)
+# define _Restrict_ __restrict
+# else
+# define _Restrict_
+# endif
+#endif
+/* gcc 3.1 and up support the [restrict] syntax. Don't trust
+ sys/cdefs.h's definition of __restrict_arr, though, as it
+ mishandles gcc -ansi -pedantic. */
+#ifndef _Restrict_arr_
+# if ((199901L <= __STDC_VERSION__ \
+ || ((3 < __GNUC__ || (3 == __GNUC__ && 1 <= __GNUC_MINOR__)) \
+ && !__STRICT_ANSI__)) \
+ && !defined __GNUG__)
+# define _Restrict_arr_ _Restrict_
+# else
+# define _Restrict_arr_
+# endif
+#endif
+
+/* POSIX compatibility. */
+extern int regcomp (regex_t *_Restrict_ __preg,
+ const char *_Restrict_ __pattern,
+ int __cflags);
+
+extern int regexec (const regex_t *_Restrict_ __preg,
+ const char *_Restrict_ __string, size_t __nmatch,
+ regmatch_t __pmatch[_Restrict_arr_],
+ int __eflags);
+
+extern size_t regerror (int __errcode, const regex_t *_Restrict_ __preg,
+ char *_Restrict_ __errbuf, size_t __errbuf_size);
+
+extern void regfree (regex_t *__preg);
+
+
+#ifdef __cplusplus
+}
+#endif /* C++ */
+
+#endif /* regex.h */
diff --git a/lib/regex_internal.c b/lib/regex_internal.c
new file mode 100644
index 0000000..2129888
--- /dev/null
+++ b/lib/regex_internal.c
@@ -0,0 +1,1741 @@
+/* Extended regular expression matching and search library.
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software
+ Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+static void re_string_construct_common (const char *str, Idx len,
+ re_string_t *pstr,
+ RE_TRANSLATE_TYPE trans, bool icase,
+ const re_dfa_t *dfa) internal_function;
+static re_dfastate_t *create_ci_newstate (const re_dfa_t *dfa,
+ const re_node_set *nodes,
+ re_hashval_t hash) internal_function;
+static re_dfastate_t *create_cd_newstate (const re_dfa_t *dfa,
+ const re_node_set *nodes,
+ unsigned int context,
+ re_hashval_t hash) internal_function;
+
+/* Functions for string operation. */
+
+/* This function allocate the buffers. It is necessary to call
+ re_string_reconstruct before using the object. */
+
+static reg_errcode_t
+internal_function
+re_string_allocate (re_string_t *pstr, const char *str, Idx len, Idx init_len,
+ RE_TRANSLATE_TYPE trans, bool icase, const re_dfa_t *dfa)
+{
+ reg_errcode_t ret;
+ Idx init_buf_len;
+
+ /* Ensure at least one character fits into the buffers. */
+ if (init_len < dfa->mb_cur_max)
+ init_len = dfa->mb_cur_max;
+ init_buf_len = (len + 1 < init_len) ? len + 1: init_len;
+ re_string_construct_common (str, len, pstr, trans, icase, dfa);
+
+ ret = re_string_realloc_buffers (pstr, init_buf_len);
+ if (BE (ret != REG_NOERROR, 0))
+ return ret;
+
+ pstr->word_char = dfa->word_char;
+ pstr->word_ops_used = dfa->word_ops_used;
+ pstr->mbs = pstr->mbs_allocated ? pstr->mbs : (unsigned char *) str;
+ pstr->valid_len = (pstr->mbs_allocated || dfa->mb_cur_max > 1) ? 0 : len;
+ pstr->valid_raw_len = pstr->valid_len;
+ return REG_NOERROR;
+}
+
+/* This function allocate the buffers, and initialize them. */
+
+static reg_errcode_t
+internal_function
+re_string_construct (re_string_t *pstr, const char *str, Idx len,
+ RE_TRANSLATE_TYPE trans, bool icase, const re_dfa_t *dfa)
+{
+ reg_errcode_t ret;
+ memset (pstr, '\0', sizeof (re_string_t));
+ re_string_construct_common (str, len, pstr, trans, icase, dfa);
+
+ if (len > 0)
+ {
+ ret = re_string_realloc_buffers (pstr, len + 1);
+ if (BE (ret != REG_NOERROR, 0))
+ return ret;
+ }
+ pstr->mbs = pstr->mbs_allocated ? pstr->mbs : (unsigned char *) str;
+
+ if (icase)
+ {
+#ifdef RE_ENABLE_I18N
+ if (dfa->mb_cur_max > 1)
+ {
+ while (1)
+ {
+ ret = build_wcs_upper_buffer (pstr);
+ if (BE (ret != REG_NOERROR, 0))
+ return ret;
+ if (pstr->valid_raw_len >= len)
+ break;
+ if (pstr->bufs_len > pstr->valid_len + dfa->mb_cur_max)
+ break;
+ ret = re_string_realloc_buffers (pstr, pstr->bufs_len * 2);
+ if (BE (ret != REG_NOERROR, 0))
+ return ret;
+ }
+ }
+ else
+#endif /* RE_ENABLE_I18N */
+ build_upper_buffer (pstr);
+ }
+ else
+ {
+#ifdef RE_ENABLE_I18N
+ if (dfa->mb_cur_max > 1)
+ build_wcs_buffer (pstr);
+ else
+#endif /* RE_ENABLE_I18N */
+ {
+ if (trans != NULL)
+ re_string_translate_buffer (pstr);
+ else
+ {
+ pstr->valid_len = pstr->bufs_len;
+ pstr->valid_raw_len = pstr->bufs_len;
+ }
+ }
+ }
+
+ return REG_NOERROR;
+}
+
+/* Helper functions for re_string_allocate, and re_string_construct. */
+
+static reg_errcode_t
+internal_function
+re_string_realloc_buffers (re_string_t *pstr, Idx new_buf_len)
+{
+#ifdef RE_ENABLE_I18N
+ if (pstr->mb_cur_max > 1)
+ {
+ wint_t *new_wcs;
+
+ /* Avoid overflow. */
+ size_t max_object_size = MAX (sizeof (wint_t), sizeof (Idx));
+ if (BE (SIZE_MAX / max_object_size < new_buf_len, 0))
+ return REG_ESPACE;
+
+ new_wcs = re_realloc (pstr->wcs, wint_t, new_buf_len);
+ if (BE (new_wcs == NULL, 0))
+ return REG_ESPACE;
+ pstr->wcs = new_wcs;
+ if (pstr->offsets != NULL)
+ {
+ Idx *new_offsets = re_realloc (pstr->offsets, Idx, new_buf_len);
+ if (BE (new_offsets == NULL, 0))
+ return REG_ESPACE;
+ pstr->offsets = new_offsets;
+ }
+ }
+#endif /* RE_ENABLE_I18N */
+ if (pstr->mbs_allocated)
+ {
+ unsigned char *new_mbs = re_realloc (pstr->mbs, unsigned char,
+ new_buf_len);
+ if (BE (new_mbs == NULL, 0))
+ return REG_ESPACE;
+ pstr->mbs = new_mbs;
+ }
+ pstr->bufs_len = new_buf_len;
+ return REG_NOERROR;
+}
+
+
+static void
+internal_function
+re_string_construct_common (const char *str, Idx len, re_string_t *pstr,
+ RE_TRANSLATE_TYPE trans, bool icase,
+ const re_dfa_t *dfa)
+{
+ pstr->raw_mbs = (const unsigned char *) str;
+ pstr->len = len;
+ pstr->raw_len = len;
+ pstr->trans = trans;
+ pstr->icase = icase;
+ pstr->mbs_allocated = (trans != NULL || icase);
+ pstr->mb_cur_max = dfa->mb_cur_max;
+ pstr->is_utf8 = dfa->is_utf8;
+ pstr->map_notascii = dfa->map_notascii;
+ pstr->stop = pstr->len;
+ pstr->raw_stop = pstr->stop;
+}
+
+#ifdef RE_ENABLE_I18N
+
+/* Build wide character buffer PSTR->WCS.
+ If the byte sequence of the string are:
+ <mb1>(0), <mb1>(1), <mb2>(0), <mb2>(1), <sb3>
+ Then wide character buffer will be:
+ <wc1> , WEOF , <wc2> , WEOF , <wc3>
+ We use WEOF for padding, they indicate that the position isn't
+ a first byte of a multibyte character.
+
+ Note that this function assumes PSTR->VALID_LEN elements are already
+ built and starts from PSTR->VALID_LEN. */
+
+static void
+internal_function
+build_wcs_buffer (re_string_t *pstr)
+{
+#ifdef _LIBC
+ unsigned char buf[MB_LEN_MAX];
+ assert (MB_LEN_MAX >= pstr->mb_cur_max);
+#else
+ unsigned char buf[64];
+#endif
+ mbstate_t prev_st;
+ Idx byte_idx, end_idx, remain_len;
+ size_t mbclen;
+
+ /* Build the buffers from pstr->valid_len to either pstr->len or
+ pstr->bufs_len. */
+ end_idx = (pstr->bufs_len > pstr->len) ? pstr->len : pstr->bufs_len;
+ for (byte_idx = pstr->valid_len; byte_idx < end_idx;)
+ {
+ wchar_t wc;
+ const char *p;
+
+ remain_len = end_idx - byte_idx;
+ prev_st = pstr->cur_state;
+ /* Apply the translation if we need. */
+ if (BE (pstr->trans != NULL, 0))
+ {
+ int i, ch;
+
+ for (i = 0; i < pstr->mb_cur_max && i < remain_len; ++i)
+ {
+ ch = pstr->raw_mbs [pstr->raw_mbs_idx + byte_idx + i];
+ buf[i] = pstr->mbs[byte_idx + i] = pstr->trans[ch];
+ }
+ p = (const char *) buf;
+ }
+ else
+ p = (const char *) pstr->raw_mbs + pstr->raw_mbs_idx + byte_idx;
+ mbclen = mbrtowc (&wc, p, remain_len, &pstr->cur_state);
+ if (BE (mbclen == (size_t) -2, 0))
+ {
+ /* The buffer doesn't have enough space, finish to build. */
+ pstr->cur_state = prev_st;
+ break;
+ }
+ else if (BE (mbclen == (size_t) -1 || mbclen == 0, 0))
+ {
+ /* We treat these cases as a singlebyte character. */
+ mbclen = 1;
+ wc = (wchar_t) pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx];
+ if (BE (pstr->trans != NULL, 0))
+ wc = pstr->trans[wc];
+ pstr->cur_state = prev_st;
+ }
+
+ /* Write wide character and padding. */
+ pstr->wcs[byte_idx++] = wc;
+ /* Write paddings. */
+ for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;)
+ pstr->wcs[byte_idx++] = WEOF;
+ }
+ pstr->valid_len = byte_idx;
+ pstr->valid_raw_len = byte_idx;
+}
+
+/* Build wide character buffer PSTR->WCS like build_wcs_buffer,
+ but for REG_ICASE. */
+
+static reg_errcode_t
+internal_function
+build_wcs_upper_buffer (re_string_t *pstr)
+{
+ mbstate_t prev_st;
+ Idx src_idx, byte_idx, end_idx, remain_len;
+ size_t mbclen;
+#ifdef _LIBC
+ char buf[MB_LEN_MAX];
+ assert (MB_LEN_MAX >= pstr->mb_cur_max);
+#else
+ char buf[64];
+#endif
+
+ byte_idx = pstr->valid_len;
+ end_idx = (pstr->bufs_len > pstr->len) ? pstr->len : pstr->bufs_len;
+
+ /* The following optimization assumes that ASCII characters can be
+ mapped to wide characters with a simple cast. */
+ if (! pstr->map_notascii && pstr->trans == NULL && !pstr->offsets_needed)
+ {
+ while (byte_idx < end_idx)
+ {
+ wchar_t wc;
+
+ if (isascii (pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx])
+ && mbsinit (&pstr->cur_state))
+ {
+ /* In case of a singlebyte character. */
+ pstr->mbs[byte_idx]
+ = toupper (pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx]);
+ /* The next step uses the assumption that wchar_t is encoded
+ ASCII-safe: all ASCII values can be converted like this. */
+ pstr->wcs[byte_idx] = (wchar_t) pstr->mbs[byte_idx];
+ ++byte_idx;
+ continue;
+ }
+
+ remain_len = end_idx - byte_idx;
+ prev_st = pstr->cur_state;
+ mbclen = mbrtowc (&wc,
+ ((const char *) pstr->raw_mbs + pstr->raw_mbs_idx
+ + byte_idx), remain_len, &pstr->cur_state);
+ if (BE (mbclen < (size_t) -2, 1))
+ {
+ wchar_t wcu = wc;
+ if (iswlower (wc))
+ {
+ size_t mbcdlen;
+
+ wcu = towupper (wc);
+ mbcdlen = wcrtomb (buf, wcu, &prev_st);
+ if (BE (mbclen == mbcdlen, 1))
+ memcpy (pstr->mbs + byte_idx, buf, mbclen);
+ else
+ {
+ src_idx = byte_idx;
+ goto offsets_needed;
+ }
+ }
+ else
+ memcpy (pstr->mbs + byte_idx,
+ pstr->raw_mbs + pstr->raw_mbs_idx + byte_idx, mbclen);
+ pstr->wcs[byte_idx++] = wcu;
+ /* Write paddings. */
+ for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;)
+ pstr->wcs[byte_idx++] = WEOF;
+ }
+ else if (mbclen == (size_t) -1 || mbclen == 0)
+ {
+ /* It is an invalid character or '\0'. Just use the byte. */
+ int ch = pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx];
+ pstr->mbs[byte_idx] = ch;
+ /* And also cast it to wide char. */
+ pstr->wcs[byte_idx++] = (wchar_t) ch;
+ if (BE (mbclen == (size_t) -1, 0))
+ pstr->cur_state = prev_st;
+ }
+ else
+ {
+ /* The buffer doesn't have enough space, finish to build. */
+ pstr->cur_state = prev_st;
+ break;
+ }
+ }
+ pstr->valid_len = byte_idx;
+ pstr->valid_raw_len = byte_idx;
+ return REG_NOERROR;
+ }
+ else
+ for (src_idx = pstr->valid_raw_len; byte_idx < end_idx;)
+ {
+ wchar_t wc;
+ const char *p;
+ offsets_needed:
+ remain_len = end_idx - byte_idx;
+ prev_st = pstr->cur_state;
+ if (BE (pstr->trans != NULL, 0))
+ {
+ int i, ch;
+
+ for (i = 0; i < pstr->mb_cur_max && i < remain_len; ++i)
+ {
+ ch = pstr->raw_mbs [pstr->raw_mbs_idx + src_idx + i];
+ buf[i] = pstr->trans[ch];
+ }
+ p = (const char *) buf;
+ }
+ else
+ p = (const char *) pstr->raw_mbs + pstr->raw_mbs_idx + src_idx;
+ mbclen = mbrtowc (&wc, p, remain_len, &pstr->cur_state);
+ if (BE (mbclen < (size_t) -2, 1))
+ {
+ wchar_t wcu = wc;
+ if (iswlower (wc))
+ {
+ size_t mbcdlen;
+
+ wcu = towupper (wc);
+ mbcdlen = wcrtomb ((char *) buf, wcu, &prev_st);
+ if (BE (mbclen == mbcdlen, 1))
+ memcpy (pstr->mbs + byte_idx, buf, mbclen);
+ else if (mbcdlen != (size_t) -1)
+ {
+ size_t i;
+
+ if (byte_idx + mbcdlen > pstr->bufs_len)
+ {
+ pstr->cur_state = prev_st;
+ break;
+ }
+
+ if (pstr->offsets == NULL)
+ {
+ pstr->offsets = re_malloc (Idx, pstr->bufs_len);
+
+ if (pstr->offsets == NULL)
+ return REG_ESPACE;
+ }
+ if (!pstr->offsets_needed)
+ {
+ for (i = 0; i < (size_t) byte_idx; ++i)
+ pstr->offsets[i] = i;
+ pstr->offsets_needed = 1;
+ }
+
+ memcpy (pstr->mbs + byte_idx, buf, mbcdlen);
+ pstr->wcs[byte_idx] = wcu;
+ pstr->offsets[byte_idx] = src_idx;
+ for (i = 1; i < mbcdlen; ++i)
+ {
+ pstr->offsets[byte_idx + i]
+ = src_idx + (i < mbclen ? i : mbclen - 1);
+ pstr->wcs[byte_idx + i] = WEOF;
+ }
+ pstr->len += mbcdlen - mbclen;
+ if (pstr->raw_stop > src_idx)
+ pstr->stop += mbcdlen - mbclen;
+ end_idx = (pstr->bufs_len > pstr->len)
+ ? pstr->len : pstr->bufs_len;
+ byte_idx += mbcdlen;
+ src_idx += mbclen;
+ continue;
+ }
+ else
+ memcpy (pstr->mbs + byte_idx, p, mbclen);
+ }
+ else
+ memcpy (pstr->mbs + byte_idx, p, mbclen);
+
+ if (BE (pstr->offsets_needed != 0, 0))
+ {
+ size_t i;
+ for (i = 0; i < mbclen; ++i)
+ pstr->offsets[byte_idx + i] = src_idx + i;
+ }
+ src_idx += mbclen;
+
+ pstr->wcs[byte_idx++] = wcu;
+ /* Write paddings. */
+ for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;)
+ pstr->wcs[byte_idx++] = WEOF;
+ }
+ else if (mbclen == (size_t) -1 || mbclen == 0)
+ {
+ /* It is an invalid character or '\0'. Just use the byte. */
+ int ch = pstr->raw_mbs[pstr->raw_mbs_idx + src_idx];
+
+ if (BE (pstr->trans != NULL, 0))
+ ch = pstr->trans [ch];
+ pstr->mbs[byte_idx] = ch;
+
+ if (BE (pstr->offsets_needed != 0, 0))
+ pstr->offsets[byte_idx] = src_idx;
+ ++src_idx;
+
+ /* And also cast it to wide char. */
+ pstr->wcs[byte_idx++] = (wchar_t) ch;
+ if (BE (mbclen == (size_t) -1, 0))
+ pstr->cur_state = prev_st;
+ }
+ else
+ {
+ /* The buffer doesn't have enough space, finish to build. */
+ pstr->cur_state = prev_st;
+ break;
+ }
+ }
+ pstr->valid_len = byte_idx;
+ pstr->valid_raw_len = src_idx;
+ return REG_NOERROR;
+}
+
+/* Skip characters until the index becomes greater than NEW_RAW_IDX.
+ Return the index. */
+
+static Idx
+internal_function
+re_string_skip_chars (re_string_t *pstr, Idx new_raw_idx, wint_t *last_wc)
+{
+ mbstate_t prev_st;
+ Idx rawbuf_idx;
+ size_t mbclen;
+ wint_t wc = WEOF;
+
+ /* Skip the characters which are not necessary to check. */
+ for (rawbuf_idx = pstr->raw_mbs_idx + pstr->valid_raw_len;
+ rawbuf_idx < new_raw_idx;)
+ {
+ wchar_t wc2;
+ Idx remain_len;
+ remain_len = pstr->len - rawbuf_idx;
+ prev_st = pstr->cur_state;
+ mbclen = mbrtowc (&wc2, (const char *) pstr->raw_mbs + rawbuf_idx,
+ remain_len, &pstr->cur_state);
+ if (BE (mbclen == (size_t) -2 || mbclen == (size_t) -1 || mbclen == 0, 0))
+ {
+ /* We treat these cases as a single byte character. */
+ if (mbclen == 0 || remain_len == 0)
+ wc = L'\0';
+ else
+ wc = *(unsigned char *) (pstr->raw_mbs + rawbuf_idx);
+ mbclen = 1;
+ pstr->cur_state = prev_st;
+ }
+ else
+ wc = wc2;
+ /* Then proceed the next character. */
+ rawbuf_idx += mbclen;
+ }
+ *last_wc = wc;
+ return rawbuf_idx;
+}
+#endif /* RE_ENABLE_I18N */
+
+/* Build the buffer PSTR->MBS, and apply the translation if we need.
+ This function is used in case of REG_ICASE. */
+
+static void
+internal_function
+build_upper_buffer (re_string_t *pstr)
+{
+ Idx char_idx, end_idx;
+ end_idx = (pstr->bufs_len > pstr->len) ? pstr->len : pstr->bufs_len;
+
+ for (char_idx = pstr->valid_len; char_idx < end_idx; ++char_idx)
+ {
+ int ch = pstr->raw_mbs[pstr->raw_mbs_idx + char_idx];
+ if (BE (pstr->trans != NULL, 0))
+ ch = pstr->trans[ch];
+ if (islower (ch))
+ pstr->mbs[char_idx] = toupper (ch);
+ else
+ pstr->mbs[char_idx] = ch;
+ }
+ pstr->valid_len = char_idx;
+ pstr->valid_raw_len = char_idx;
+}
+
+/* Apply TRANS to the buffer in PSTR. */
+
+static void
+internal_function
+re_string_translate_buffer (re_string_t *pstr)
+{
+ Idx buf_idx, end_idx;
+ end_idx = (pstr->bufs_len > pstr->len) ? pstr->len : pstr->bufs_len;
+
+ for (buf_idx = pstr->valid_len; buf_idx < end_idx; ++buf_idx)
+ {
+ int ch = pstr->raw_mbs[pstr->raw_mbs_idx + buf_idx];
+ pstr->mbs[buf_idx] = pstr->trans[ch];
+ }
+
+ pstr->valid_len = buf_idx;
+ pstr->valid_raw_len = buf_idx;
+}
+
+/* This function re-construct the buffers.
+ Concretely, convert to wide character in case of pstr->mb_cur_max > 1,
+ convert to upper case in case of REG_ICASE, apply translation. */
+
+static reg_errcode_t
+internal_function
+re_string_reconstruct (re_string_t *pstr, Idx idx, int eflags)
+{
+ Idx offset;
+
+ if (BE (pstr->raw_mbs_idx <= idx, 0))
+ offset = idx - pstr->raw_mbs_idx;
+ else
+ {
+ /* Reset buffer. */
+#ifdef RE_ENABLE_I18N
+ if (pstr->mb_cur_max > 1)
+ memset (&pstr->cur_state, '\0', sizeof (mbstate_t));
+#endif /* RE_ENABLE_I18N */
+ pstr->len = pstr->raw_len;
+ pstr->stop = pstr->raw_stop;
+ pstr->valid_len = 0;
+ pstr->raw_mbs_idx = 0;
+ pstr->valid_raw_len = 0;
+ pstr->offsets_needed = 0;
+ pstr->tip_context = ((eflags & REG_NOTBOL) ? CONTEXT_BEGBUF
+ : CONTEXT_NEWLINE | CONTEXT_BEGBUF);
+ if (!pstr->mbs_allocated)
+ pstr->mbs = (unsigned char *) pstr->raw_mbs;
+ offset = idx;
+ }
+
+ if (BE (offset != 0, 1))
+ {
+ /* Should the already checked characters be kept? */
+ if (BE (offset < pstr->valid_raw_len, 1))
+ {
+ /* Yes, move them to the front of the buffer. */
+#ifdef RE_ENABLE_I18N
+ if (BE (pstr->offsets_needed, 0))
+ {
+ Idx low = 0, high = pstr->valid_len, mid;
+ do
+ {
+ mid = (high + low) / 2;
+ if (pstr->offsets[mid] > offset)
+ high = mid;
+ else if (pstr->offsets[mid] < offset)
+ low = mid + 1;
+ else
+ break;
+ }
+ while (low < high);
+ if (pstr->offsets[mid] < offset)
+ ++mid;
+ pstr->tip_context = re_string_context_at (pstr, mid - 1,
+ eflags);
+ /* This can be quite complicated, so handle specially
+ only the common and easy case where the character with
+ different length representation of lower and upper
+ case is present at or after offset. */
+ if (pstr->valid_len > offset
+ && mid == offset && pstr->offsets[mid] == offset)
+ {
+ memmove (pstr->wcs, pstr->wcs + offset,
+ (pstr->valid_len - offset) * sizeof (wint_t));
+ memmove (pstr->mbs, pstr->mbs + offset, pstr->valid_len - offset);
+ pstr->valid_len -= offset;
+ pstr->valid_raw_len -= offset;
+ for (low = 0; low < pstr->valid_len; low++)
+ pstr->offsets[low] = pstr->offsets[low + offset] - offset;
+ }
+ else
+ {
+ /* Otherwise, just find out how long the partial multibyte
+ character at offset is and fill it with WEOF/255. */
+ pstr->len = pstr->raw_len - idx + offset;
+ pstr->stop = pstr->raw_stop - idx + offset;
+ pstr->offsets_needed = 0;
+ while (mid > 0 && pstr->offsets[mid - 1] == offset)
+ --mid;
+ while (mid < pstr->valid_len)
+ if (pstr->wcs[mid] != WEOF)
+ break;
+ else
+ ++mid;
+ if (mid == pstr->valid_len)
+ pstr->valid_len = 0;
+ else
+ {
+ pstr->valid_len = pstr->offsets[mid] - offset;
+ if (pstr->valid_len)
+ {
+ for (low = 0; low < pstr->valid_len; ++low)
+ pstr->wcs[low] = WEOF;
+ memset (pstr->mbs, 255, pstr->valid_len);
+ }
+ }
+ pstr->valid_raw_len = pstr->valid_len;
+ }
+ }
+ else
+#endif
+ {
+ pstr->tip_context = re_string_context_at (pstr, offset - 1,
+ eflags);
+#ifdef RE_ENABLE_I18N
+ if (pstr->mb_cur_max > 1)
+ memmove (pstr->wcs, pstr->wcs + offset,
+ (pstr->valid_len - offset) * sizeof (wint_t));
+#endif /* RE_ENABLE_I18N */
+ if (BE (pstr->mbs_allocated, 0))
+ memmove (pstr->mbs, pstr->mbs + offset,
+ pstr->valid_len - offset);
+ pstr->valid_len -= offset;
+ pstr->valid_raw_len -= offset;
+#if DEBUG
+ assert (pstr->valid_len > 0);
+#endif
+ }
+ }
+ else
+ {
+ /* No, skip all characters until IDX. */
+ Idx prev_valid_len = pstr->valid_len;
+
+#ifdef RE_ENABLE_I18N
+ if (BE (pstr->offsets_needed, 0))
+ {
+ pstr->len = pstr->raw_len - idx + offset;
+ pstr->stop = pstr->raw_stop - idx + offset;
+ pstr->offsets_needed = 0;
+ }
+#endif
+ pstr->valid_len = 0;
+#ifdef RE_ENABLE_I18N
+ if (pstr->mb_cur_max > 1)
+ {
+ Idx wcs_idx;
+ wint_t wc = WEOF;
+
+ if (pstr->is_utf8)
+ {
+ const unsigned char *raw, *p, *end;
+
+ /* Special case UTF-8. Multi-byte chars start with any
+ byte other than 0x80 - 0xbf. */
+ raw = pstr->raw_mbs + pstr->raw_mbs_idx;
+ end = raw + (offset - pstr->mb_cur_max);
+ if (end < pstr->raw_mbs)
+ end = pstr->raw_mbs;
+ p = raw + offset - 1;
+#ifdef _LIBC
+ /* We know the wchar_t encoding is UCS4, so for the simple
+ case, ASCII characters, skip the conversion step. */
+ if (isascii (*p) && BE (pstr->trans == NULL, 1))
+ {
+ memset (&pstr->cur_state, '\0', sizeof (mbstate_t));
+ /* pstr->valid_len = 0; */
+ wc = (wchar_t) *p;
+ }
+ else
+#endif
+ for (; p >= end; --p)
+ if ((*p & 0xc0) != 0x80)
+ {
+ mbstate_t cur_state;
+ wchar_t wc2;
+ Idx mlen = raw + pstr->len - p;
+ unsigned char buf[6];
+ size_t mbclen;
+
+ if (BE (pstr->trans != NULL, 0))
+ {
+ int i = mlen < 6 ? mlen : 6;
+ while (--i >= 0)
+ buf[i] = pstr->trans[p[i]];
+ }
+ /* XXX Don't use mbrtowc, we know which conversion
+ to use (UTF-8 -> UCS4). */
+ memset (&cur_state, 0, sizeof (cur_state));
+ mbclen = mbrtowc (&wc2, (const char *) p, mlen,
+ &cur_state);
+ if (raw + offset - p <= mbclen
+ && mbclen < (size_t) -2)
+ {
+ memset (&pstr->cur_state, '\0',
+ sizeof (mbstate_t));
+ pstr->valid_len = mbclen - (raw + offset - p);
+ wc = wc2;
+ }
+ break;
+ }
+ }
+
+ if (wc == WEOF)
+ pstr->valid_len = re_string_skip_chars (pstr, idx, &wc) - idx;
+ if (wc == WEOF)
+ pstr->tip_context
+ = re_string_context_at (pstr, prev_valid_len - 1, eflags);
+ else
+ pstr->tip_context = ((BE (pstr->word_ops_used != 0, 0)
+ && IS_WIDE_WORD_CHAR (wc))
+ ? CONTEXT_WORD
+ : ((IS_WIDE_NEWLINE (wc)
+ && pstr->newline_anchor)
+ ? CONTEXT_NEWLINE : 0));
+ if (BE (pstr->valid_len, 0))
+ {
+ for (wcs_idx = 0; wcs_idx < pstr->valid_len; ++wcs_idx)
+ pstr->wcs[wcs_idx] = WEOF;
+ if (pstr->mbs_allocated)
+ memset (pstr->mbs, 255, pstr->valid_len);
+ }
+ pstr->valid_raw_len = pstr->valid_len;
+ }
+ else
+#endif /* RE_ENABLE_I18N */
+ {
+ int c = pstr->raw_mbs[pstr->raw_mbs_idx + offset - 1];
+ pstr->valid_raw_len = 0;
+ if (pstr->trans)
+ c = pstr->trans[c];
+ pstr->tip_context = (bitset_contain (pstr->word_char, c)
+ ? CONTEXT_WORD
+ : ((IS_NEWLINE (c) && pstr->newline_anchor)
+ ? CONTEXT_NEWLINE : 0));
+ }
+ }
+ if (!BE (pstr->mbs_allocated, 0))
+ pstr->mbs += offset;
+ }
+ pstr->raw_mbs_idx = idx;
+ pstr->len -= offset;
+ pstr->stop -= offset;
+
+ /* Then build the buffers. */
+#ifdef RE_ENABLE_I18N
+ if (pstr->mb_cur_max > 1)
+ {
+ if (pstr->icase)
+ {
+ reg_errcode_t ret = build_wcs_upper_buffer (pstr);
+ if (BE (ret != REG_NOERROR, 0))
+ return ret;
+ }
+ else
+ build_wcs_buffer (pstr);
+ }
+ else
+#endif /* RE_ENABLE_I18N */
+ if (BE (pstr->mbs_allocated, 0))
+ {
+ if (pstr->icase)
+ build_upper_buffer (pstr);
+ else if (pstr->trans != NULL)
+ re_string_translate_buffer (pstr);
+ }
+ else
+ pstr->valid_len = pstr->len;
+
+ pstr->cur_idx = 0;
+ return REG_NOERROR;
+}
+
+static unsigned char
+internal_function __attribute ((pure))
+re_string_peek_byte_case (const re_string_t *pstr, Idx idx)
+{
+ int ch;
+ Idx off;
+
+ /* Handle the common (easiest) cases first. */
+ if (BE (!pstr->mbs_allocated, 1))
+ return re_string_peek_byte (pstr, idx);
+
+#ifdef RE_ENABLE_I18N
+ if (pstr->mb_cur_max > 1
+ && ! re_string_is_single_byte_char (pstr, pstr->cur_idx + idx))
+ return re_string_peek_byte (pstr, idx);
+#endif
+
+ off = pstr->cur_idx + idx;
+#ifdef RE_ENABLE_I18N
+ if (pstr->offsets_needed)
+ off = pstr->offsets[off];
+#endif
+
+ ch = pstr->raw_mbs[pstr->raw_mbs_idx + off];
+
+#ifdef RE_ENABLE_I18N
+ /* Ensure that e.g. for tr_TR.UTF-8 BACKSLASH DOTLESS SMALL LETTER I
+ this function returns CAPITAL LETTER I instead of first byte of
+ DOTLESS SMALL LETTER I. The latter would confuse the parser,
+ since peek_byte_case doesn't advance cur_idx in any way. */
+ if (pstr->offsets_needed && !isascii (ch))
+ return re_string_peek_byte (pstr, idx);
+#endif
+
+ return ch;
+}
+
+static unsigned char
+internal_function __attribute ((pure))
+re_string_fetch_byte_case (re_string_t *pstr)
+{
+ if (BE (!pstr->mbs_allocated, 1))
+ return re_string_fetch_byte (pstr);
+
+#ifdef RE_ENABLE_I18N
+ if (pstr->offsets_needed)
+ {
+ Idx off;
+ int ch;
+
+ /* For tr_TR.UTF-8 [[:islower:]] there is
+ [[: CAPITAL LETTER I WITH DOT lower:]] in mbs. Skip
+ in that case the whole multi-byte character and return
+ the original letter. On the other side, with
+ [[: DOTLESS SMALL LETTER I return [[:I, as doing
+ anything else would complicate things too much. */
+
+ if (!re_string_first_byte (pstr, pstr->cur_idx))
+ return re_string_fetch_byte (pstr);
+
+ off = pstr->offsets[pstr->cur_idx];
+ ch = pstr->raw_mbs[pstr->raw_mbs_idx + off];
+
+ if (! isascii (ch))
+ return re_string_fetch_byte (pstr);
+
+ re_string_skip_bytes (pstr,
+ re_string_char_size_at (pstr, pstr->cur_idx));
+ return ch;
+ }
+#endif
+
+ return pstr->raw_mbs[pstr->raw_mbs_idx + pstr->cur_idx++];
+}
+
+static void
+internal_function
+re_string_destruct (re_string_t *pstr)
+{
+#ifdef RE_ENABLE_I18N
+ re_free (pstr->wcs);
+ re_free (pstr->offsets);
+#endif /* RE_ENABLE_I18N */
+ if (pstr->mbs_allocated)
+ re_free (pstr->mbs);
+}
+
+/* Return the context at IDX in INPUT. */
+
+static unsigned int
+internal_function
+re_string_context_at (const re_string_t *input, Idx idx, int eflags)
+{
+ int c;
+ if (BE (! REG_VALID_INDEX (idx), 0))
+ /* In this case, we use the value stored in input->tip_context,
+ since we can't know the character in input->mbs[-1] here. */
+ return input->tip_context;
+ if (BE (idx == input->len, 0))
+ return ((eflags & REG_NOTEOL) ? CONTEXT_ENDBUF
+ : CONTEXT_NEWLINE | CONTEXT_ENDBUF);
+#ifdef RE_ENABLE_I18N
+ if (input->mb_cur_max > 1)
+ {
+ wint_t wc;
+ Idx wc_idx = idx;
+ while(input->wcs[wc_idx] == WEOF)
+ {
+#ifdef DEBUG
+ /* It must not happen. */
+ assert (REG_VALID_INDEX (wc_idx));
+#endif
+ --wc_idx;
+ if (! REG_VALID_INDEX (wc_idx))
+ return input->tip_context;
+ }
+ wc = input->wcs[wc_idx];
+ if (BE (input->word_ops_used != 0, 0) && IS_WIDE_WORD_CHAR (wc))
+ return CONTEXT_WORD;
+ return (IS_WIDE_NEWLINE (wc) && input->newline_anchor
+ ? CONTEXT_NEWLINE : 0);
+ }
+ else
+#endif
+ {
+ c = re_string_byte_at (input, idx);
+ if (bitset_contain (input->word_char, c))
+ return CONTEXT_WORD;
+ return IS_NEWLINE (c) && input->newline_anchor ? CONTEXT_NEWLINE : 0;
+ }
+}
+
+/* Functions for set operation. */
+
+static reg_errcode_t
+internal_function
+re_node_set_alloc (re_node_set *set, Idx size)
+{
+ set->alloc = size;
+ set->nelem = 0;
+ set->elems = re_malloc (Idx, size);
+ if (BE (set->elems == NULL, 0))
+ return REG_ESPACE;
+ return REG_NOERROR;
+}
+
+static reg_errcode_t
+internal_function
+re_node_set_init_1 (re_node_set *set, Idx elem)
+{
+ set->alloc = 1;
+ set->nelem = 1;
+ set->elems = re_malloc (Idx, 1);
+ if (BE (set->elems == NULL, 0))
+ {
+ set->alloc = set->nelem = 0;
+ return REG_ESPACE;
+ }
+ set->elems[0] = elem;
+ return REG_NOERROR;
+}
+
+static reg_errcode_t
+internal_function
+re_node_set_init_2 (re_node_set *set, Idx elem1, Idx elem2)
+{
+ set->alloc = 2;
+ set->elems = re_malloc (Idx, 2);
+ if (BE (set->elems == NULL, 0))
+ return REG_ESPACE;
+ if (elem1 == elem2)
+ {
+ set->nelem = 1;
+ set->elems[0] = elem1;
+ }
+ else
+ {
+ set->nelem = 2;
+ if (elem1 < elem2)
+ {
+ set->elems[0] = elem1;
+ set->elems[1] = elem2;
+ }
+ else
+ {
+ set->elems[0] = elem2;
+ set->elems[1] = elem1;
+ }
+ }
+ return REG_NOERROR;
+}
+
+static reg_errcode_t
+internal_function
+re_node_set_init_copy (re_node_set *dest, const re_node_set *src)
+{
+ dest->nelem = src->nelem;
+ if (src->nelem > 0)
+ {
+ dest->alloc = dest->nelem;
+ dest->elems = re_malloc (Idx, dest->alloc);
+ if (BE (dest->elems == NULL, 0))
+ {
+ dest->alloc = dest->nelem = 0;
+ return REG_ESPACE;
+ }
+ memcpy (dest->elems, src->elems, src->nelem * sizeof (Idx));
+ }
+ else
+ re_node_set_init_empty (dest);
+ return REG_NOERROR;
+}
+
+/* Calculate the intersection of the sets SRC1 and SRC2. And merge it to
+ DEST. Return value indicate the error code or REG_NOERROR if succeeded.
+ Note: We assume dest->elems is NULL, when dest->alloc is 0. */
+
+static reg_errcode_t
+internal_function
+re_node_set_add_intersect (re_node_set *dest, const re_node_set *src1,
+ const re_node_set *src2)
+{
+ Idx i1, i2, is, id, delta, sbase;
+ if (src1->nelem == 0 || src2->nelem == 0)
+ return REG_NOERROR;
+
+ /* We need dest->nelem + 2 * elems_in_intersection; this is a
+ conservative estimate. */
+ if (src1->nelem + src2->nelem + dest->nelem > dest->alloc)
+ {
+ Idx new_alloc = src1->nelem + src2->nelem + dest->alloc;
+ Idx *new_elems = re_realloc (dest->elems, Idx, new_alloc);
+ if (BE (new_elems == NULL, 0))
+ return REG_ESPACE;
+ dest->elems = new_elems;
+ dest->alloc = new_alloc;
+ }
+
+ /* Find the items in the intersection of SRC1 and SRC2, and copy
+ into the top of DEST those that are not already in DEST itself. */
+ sbase = dest->nelem + src1->nelem + src2->nelem;
+ i1 = src1->nelem - 1;
+ i2 = src2->nelem - 1;
+ id = dest->nelem - 1;
+ for (;;)
+ {
+ if (src1->elems[i1] == src2->elems[i2])
+ {
+ /* Try to find the item in DEST. Maybe we could binary search? */
+ while (REG_VALID_INDEX (id) && dest->elems[id] > src1->elems[i1])
+ --id;
+
+ if (! REG_VALID_INDEX (id) || dest->elems[id] != src1->elems[i1])
+ dest->elems[--sbase] = src1->elems[i1];
+
+ if (! REG_VALID_INDEX (--i1) || ! REG_VALID_INDEX (--i2))
+ break;
+ }
+
+ /* Lower the highest of the two items. */
+ else if (src1->elems[i1] < src2->elems[i2])
+ {
+ if (! REG_VALID_INDEX (--i2))
+ break;
+ }
+ else
+ {
+ if (! REG_VALID_INDEX (--i1))
+ break;
+ }
+ }
+
+ id = dest->nelem - 1;
+ is = dest->nelem + src1->nelem + src2->nelem - 1;
+ delta = is - sbase + 1;
+
+ /* Now copy. When DELTA becomes zero, the remaining
+ DEST elements are already in place; this is more or
+ less the same loop that is in re_node_set_merge. */
+ dest->nelem += delta;
+ if (delta > 0 && REG_VALID_INDEX (id))
+ for (;;)
+ {
+ if (dest->elems[is] > dest->elems[id])
+ {
+ /* Copy from the top. */
+ dest->elems[id + delta--] = dest->elems[is--];
+ if (delta == 0)
+ break;
+ }
+ else
+ {
+ /* Slide from the bottom. */
+ dest->elems[id + delta] = dest->elems[id];
+ if (! REG_VALID_INDEX (--id))
+ break;
+ }
+ }
+
+ /* Copy remaining SRC elements. */
+ memcpy (dest->elems, dest->elems + sbase, delta * sizeof (Idx));
+
+ return REG_NOERROR;
+}
+
+/* Calculate the union set of the sets SRC1 and SRC2. And store it to
+ DEST. Return value indicate the error code or REG_NOERROR if succeeded. */
+
+static reg_errcode_t
+internal_function
+re_node_set_init_union (re_node_set *dest, const re_node_set *src1,
+ const re_node_set *src2)
+{
+ Idx i1, i2, id;
+ if (src1 != NULL && src1->nelem > 0 && src2 != NULL && src2->nelem > 0)
+ {
+ dest->alloc = src1->nelem + src2->nelem;
+ dest->elems = re_malloc (Idx, dest->alloc);
+ if (BE (dest->elems == NULL, 0))
+ return REG_ESPACE;
+ }
+ else
+ {
+ if (src1 != NULL && src1->nelem > 0)
+ return re_node_set_init_copy (dest, src1);
+ else if (src2 != NULL && src2->nelem > 0)
+ return re_node_set_init_copy (dest, src2);
+ else
+ re_node_set_init_empty (dest);
+ return REG_NOERROR;
+ }
+ for (i1 = i2 = id = 0 ; i1 < src1->nelem && i2 < src2->nelem ;)
+ {
+ if (src1->elems[i1] > src2->elems[i2])
+ {
+ dest->elems[id++] = src2->elems[i2++];
+ continue;
+ }
+ if (src1->elems[i1] == src2->elems[i2])
+ ++i2;
+ dest->elems[id++] = src1->elems[i1++];
+ }
+ if (i1 < src1->nelem)
+ {
+ memcpy (dest->elems + id, src1->elems + i1,
+ (src1->nelem - i1) * sizeof (Idx));
+ id += src1->nelem - i1;
+ }
+ else if (i2 < src2->nelem)
+ {
+ memcpy (dest->elems + id, src2->elems + i2,
+ (src2->nelem - i2) * sizeof (Idx));
+ id += src2->nelem - i2;
+ }
+ dest->nelem = id;
+ return REG_NOERROR;
+}
+
+/* Calculate the union set of the sets DEST and SRC. And store it to
+ DEST. Return value indicate the error code or REG_NOERROR if succeeded. */
+
+static reg_errcode_t
+internal_function
+re_node_set_merge (re_node_set *dest, const re_node_set *src)
+{
+ Idx is, id, sbase, delta;
+ if (src == NULL || src->nelem == 0)
+ return REG_NOERROR;
+ if (dest->alloc < 2 * src->nelem + dest->nelem)
+ {
+ Idx new_alloc = 2 * (src->nelem + dest->alloc);
+ Idx *new_buffer = re_realloc (dest->elems, Idx, new_alloc);
+ if (BE (new_buffer == NULL, 0))
+ return REG_ESPACE;
+ dest->elems = new_buffer;
+ dest->alloc = new_alloc;
+ }
+
+ if (BE (dest->nelem == 0, 0))
+ {
+ dest->nelem = src->nelem;
+ memcpy (dest->elems, src->elems, src->nelem * sizeof (Idx));
+ return REG_NOERROR;
+ }
+
+ /* Copy into the top of DEST the items of SRC that are not
+ found in DEST. Maybe we could binary search in DEST? */
+ for (sbase = dest->nelem + 2 * src->nelem,
+ is = src->nelem - 1, id = dest->nelem - 1;
+ REG_VALID_INDEX (is) && REG_VALID_INDEX (id); )
+ {
+ if (dest->elems[id] == src->elems[is])
+ is--, id--;
+ else if (dest->elems[id] < src->elems[is])
+ dest->elems[--sbase] = src->elems[is--];
+ else /* if (dest->elems[id] > src->elems[is]) */
+ --id;
+ }
+
+ if (REG_VALID_INDEX (is))
+ {
+ /* If DEST is exhausted, the remaining items of SRC must be unique. */
+ sbase -= is + 1;
+ memcpy (dest->elems + sbase, src->elems, (is + 1) * sizeof (Idx));
+ }
+
+ id = dest->nelem - 1;
+ is = dest->nelem + 2 * src->nelem - 1;
+ delta = is - sbase + 1;
+ if (delta == 0)
+ return REG_NOERROR;
+
+ /* Now copy. When DELTA becomes zero, the remaining
+ DEST elements are already in place. */
+ dest->nelem += delta;
+ for (;;)
+ {
+ if (dest->elems[is] > dest->elems[id])
+ {
+ /* Copy from the top. */
+ dest->elems[id + delta--] = dest->elems[is--];
+ if (delta == 0)
+ break;
+ }
+ else
+ {
+ /* Slide from the bottom. */
+ dest->elems[id + delta] = dest->elems[id];
+ if (! REG_VALID_INDEX (--id))
+ {
+ /* Copy remaining SRC elements. */
+ memcpy (dest->elems, dest->elems + sbase,
+ delta * sizeof (Idx));
+ break;
+ }
+ }
+ }
+
+ return REG_NOERROR;
+}
+
+/* Insert the new element ELEM to the re_node_set* SET.
+ SET should not already have ELEM.
+ Return true if successful. */
+
+static bool
+internal_function
+re_node_set_insert (re_node_set *set, Idx elem)
+{
+ Idx idx;
+ /* In case the set is empty. */
+ if (set->alloc == 0)
+ return BE (re_node_set_init_1 (set, elem) == REG_NOERROR, 1);
+
+ if (BE (set->nelem, 0) == 0)
+ {
+ /* We already guaranteed above that set->alloc != 0. */
+ set->elems[0] = elem;
+ ++set->nelem;
+ return true;
+ }
+
+ /* Realloc if we need. */
+ if (set->alloc == set->nelem)
+ {
+ Idx *new_elems;
+ set->alloc = set->alloc * 2;
+ new_elems = re_realloc (set->elems, Idx, set->alloc);
+ if (BE (new_elems == NULL, 0))
+ return false;
+ set->elems = new_elems;
+ }
+
+ /* Move the elements which follows the new element. Test the
+ first element separately to skip a check in the inner loop. */
+ if (elem < set->elems[0])
+ {
+ idx = 0;
+ for (idx = set->nelem; idx > 0; idx--)
+ set->elems[idx] = set->elems[idx - 1];
+ }
+ else
+ {
+ for (idx = set->nelem; set->elems[idx - 1] > elem; idx--)
+ set->elems[idx] = set->elems[idx - 1];
+ }
+
+ /* Insert the new element. */
+ set->elems[idx] = elem;
+ ++set->nelem;
+ return true;
+}
+
+/* Insert the new element ELEM to the re_node_set* SET.
+ SET should not already have any element greater than or equal to ELEM.
+ Return true if successful. */
+
+static bool
+internal_function
+re_node_set_insert_last (re_node_set *set, Idx elem)
+{
+ /* Realloc if we need. */
+ if (set->alloc == set->nelem)
+ {
+ Idx *new_elems;
+ set->alloc = (set->alloc + 1) * 2;
+ new_elems = re_realloc (set->elems, Idx, set->alloc);
+ if (BE (new_elems == NULL, 0))
+ return false;
+ set->elems = new_elems;
+ }
+
+ /* Insert the new element. */
+ set->elems[set->nelem++] = elem;
+ return true;
+}
+
+/* Compare two node sets SET1 and SET2.
+ Return true if SET1 and SET2 are equivalent. */
+
+static bool
+internal_function __attribute ((pure))
+re_node_set_compare (const re_node_set *set1, const re_node_set *set2)
+{
+ Idx i;
+ if (set1 == NULL || set2 == NULL || set1->nelem != set2->nelem)
+ return false;
+ for (i = set1->nelem ; REG_VALID_INDEX (--i) ; )
+ if (set1->elems[i] != set2->elems[i])
+ return false;
+ return true;
+}
+
+/* Return (idx + 1) if SET contains the element ELEM, return 0 otherwise. */
+
+static Idx
+internal_function __attribute ((pure))
+re_node_set_contains (const re_node_set *set, Idx elem)
+{
+ __re_size_t idx, right, mid;
+ if (! REG_VALID_NONZERO_INDEX (set->nelem))
+ return 0;
+
+ /* Binary search the element. */
+ idx = 0;
+ right = set->nelem - 1;
+ while (idx < right)
+ {
+ mid = (idx + right) / 2;
+ if (set->elems[mid] < elem)
+ idx = mid + 1;
+ else
+ right = mid;
+ }
+ return set->elems[idx] == elem ? idx + 1 : 0;
+}
+
+static void
+internal_function
+re_node_set_remove_at (re_node_set *set, Idx idx)
+{
+ if (idx < 0 || idx >= set->nelem)
+ return;
+ --set->nelem;
+ for (; idx < set->nelem; idx++)
+ set->elems[idx] = set->elems[idx + 1];
+}
+
+
+/* Add the token TOKEN to dfa->nodes, and return the index of the token.
+ Or return REG_MISSING if an error occurred. */
+
+static Idx
+internal_function
+re_dfa_add_node (re_dfa_t *dfa, re_token_t token)
+{
+ if (BE (dfa->nodes_len >= dfa->nodes_alloc, 0))
+ {
+ size_t new_nodes_alloc = dfa->nodes_alloc * 2;
+ Idx *new_nexts, *new_indices;
+ re_node_set *new_edests, *new_eclosures;
+ re_token_t *new_nodes;
+ size_t max_object_size =
+ MAX (sizeof (re_token_t),
+ MAX (sizeof (re_node_set),
+ sizeof (Idx)));
+
+ /* Avoid overflows. */
+ if (BE (SIZE_MAX / 2 / max_object_size < dfa->nodes_alloc, 0))
+ return REG_MISSING;
+
+ new_nodes = re_realloc (dfa->nodes, re_token_t, new_nodes_alloc);
+ if (BE (new_nodes == NULL, 0))
+ return REG_MISSING;
+ dfa->nodes = new_nodes;
+ new_nexts = re_realloc (dfa->nexts, Idx, new_nodes_alloc);
+ new_indices = re_realloc (dfa->org_indices, Idx, new_nodes_alloc);
+ new_edests = re_realloc (dfa->edests, re_node_set, new_nodes_alloc);
+ new_eclosures = re_realloc (dfa->eclosures, re_node_set, new_nodes_alloc);
+ if (BE (new_nexts == NULL || new_indices == NULL
+ || new_edests == NULL || new_eclosures == NULL, 0))
+ return REG_MISSING;
+ dfa->nexts = new_nexts;
+ dfa->org_indices = new_indices;
+ dfa->edests = new_edests;
+ dfa->eclosures = new_eclosures;
+ dfa->nodes_alloc = new_nodes_alloc;
+ }
+ dfa->nodes[dfa->nodes_len] = token;
+ dfa->nodes[dfa->nodes_len].constraint = 0;
+#ifdef RE_ENABLE_I18N
+ {
+ int type = token.type;
+ dfa->nodes[dfa->nodes_len].accept_mb =
+ (type == OP_PERIOD && dfa->mb_cur_max > 1) || type == COMPLEX_BRACKET;
+ }
+#endif
+ dfa->nexts[dfa->nodes_len] = REG_MISSING;
+ re_node_set_init_empty (dfa->edests + dfa->nodes_len);
+ re_node_set_init_empty (dfa->eclosures + dfa->nodes_len);
+ return dfa->nodes_len++;
+}
+
+static inline re_hashval_t
+internal_function
+calc_state_hash (const re_node_set *nodes, unsigned int context)
+{
+ re_hashval_t hash = nodes->nelem + context;
+ Idx i;
+ for (i = 0 ; i < nodes->nelem ; i++)
+ hash += nodes->elems[i];
+ return hash;
+}
+
+/* Search for the state whose node_set is equivalent to NODES.
+ Return the pointer to the state, if we found it in the DFA.
+ Otherwise create the new one and return it. In case of an error
+ return NULL and set the error code in ERR.
+ Note: - We assume NULL as the invalid state, then it is possible that
+ return value is NULL and ERR is REG_NOERROR.
+ - We never return non-NULL value in case of any errors, it is for
+ optimization. */
+
+static re_dfastate_t *
+internal_function
+re_acquire_state (reg_errcode_t *err, const re_dfa_t *dfa,
+ const re_node_set *nodes)
+{
+ re_hashval_t hash;
+ re_dfastate_t *new_state;
+ struct re_state_table_entry *spot;
+ Idx i;
+#ifdef lint
+ /* Suppress bogus uninitialized-variable warnings. */
+ *err = REG_NOERROR;
+#endif
+ if (BE (nodes->nelem == 0, 0))
+ {
+ *err = REG_NOERROR;
+ return NULL;
+ }
+ hash = calc_state_hash (nodes, 0);
+ spot = dfa->state_table + (hash & dfa->state_hash_mask);
+
+ for (i = 0 ; i < spot->num ; i++)
+ {
+ re_dfastate_t *state = spot->array[i];
+ if (hash != state->hash)
+ continue;
+ if (re_node_set_compare (&state->nodes, nodes))
+ return state;
+ }
+
+ /* There are no appropriate state in the dfa, create the new one. */
+ new_state = create_ci_newstate (dfa, nodes, hash);
+ if (BE (new_state == NULL, 0))
+ *err = REG_ESPACE;
+
+ return new_state;
+}
+
+/* Search for the state whose node_set is equivalent to NODES and
+ whose context is equivalent to CONTEXT.
+ Return the pointer to the state, if we found it in the DFA.
+ Otherwise create the new one and return it. In case of an error
+ return NULL and set the error code in ERR.
+ Note: - We assume NULL as the invalid state, then it is possible that
+ return value is NULL and ERR is REG_NOERROR.
+ - We never return non-NULL value in case of any errors, it is for
+ optimization. */
+
+static re_dfastate_t *
+internal_function
+re_acquire_state_context (reg_errcode_t *err, const re_dfa_t *dfa,
+ const re_node_set *nodes, unsigned int context)
+{
+ re_hashval_t hash;
+ re_dfastate_t *new_state;
+ struct re_state_table_entry *spot;
+ Idx i;
+#ifdef lint
+ /* Suppress bogus uninitialized-variable warnings. */
+ *err = REG_NOERROR;
+#endif
+ if (nodes->nelem == 0)
+ {
+ *err = REG_NOERROR;
+ return NULL;
+ }
+ hash = calc_state_hash (nodes, context);
+ spot = dfa->state_table + (hash & dfa->state_hash_mask);
+
+ for (i = 0 ; i < spot->num ; i++)
+ {
+ re_dfastate_t *state = spot->array[i];
+ if (state->hash == hash
+ && state->context == context
+ && re_node_set_compare (state->entrance_nodes, nodes))
+ return state;
+ }
+ /* There are no appropriate state in `dfa', create the new one. */
+ new_state = create_cd_newstate (dfa, nodes, context, hash);
+ if (BE (new_state == NULL, 0))
+ *err = REG_ESPACE;
+
+ return new_state;
+}
+
+/* Finish initialization of the new state NEWSTATE, and using its hash value
+ HASH put in the appropriate bucket of DFA's state table. Return value
+ indicates the error code if failed. */
+
+static reg_errcode_t
+register_state (const re_dfa_t *dfa, re_dfastate_t *newstate,
+ re_hashval_t hash)
+{
+ struct re_state_table_entry *spot;
+ reg_errcode_t err;
+ Idx i;
+
+ newstate->hash = hash;
+ err = re_node_set_alloc (&newstate->non_eps_nodes, newstate->nodes.nelem);
+ if (BE (err != REG_NOERROR, 0))
+ return REG_ESPACE;
+ for (i = 0; i < newstate->nodes.nelem; i++)
+ {
+ Idx elem = newstate->nodes.elems[i];
+ if (!IS_EPSILON_NODE (dfa->nodes[elem].type))
+ if (BE (! re_node_set_insert_last (&newstate->non_eps_nodes, elem), 0))
+ return REG_ESPACE;
+ }
+
+ spot = dfa->state_table + (hash & dfa->state_hash_mask);
+ if (BE (spot->alloc <= spot->num, 0))
+ {
+ Idx new_alloc = 2 * spot->num + 2;
+ re_dfastate_t **new_array = re_realloc (spot->array, re_dfastate_t *,
+ new_alloc);
+ if (BE (new_array == NULL, 0))
+ return REG_ESPACE;
+ spot->array = new_array;
+ spot->alloc = new_alloc;
+ }
+ spot->array[spot->num++] = newstate;
+ return REG_NOERROR;
+}
+
+static void
+free_state (re_dfastate_t *state)
+{
+ re_node_set_free (&state->non_eps_nodes);
+ re_node_set_free (&state->inveclosure);
+ if (state->entrance_nodes != &state->nodes)
+ {
+ re_node_set_free (state->entrance_nodes);
+ re_free (state->entrance_nodes);
+ }
+ re_node_set_free (&state->nodes);
+ re_free (state->word_trtable);
+ re_free (state->trtable);
+ re_free (state);
+}
+
+/* Create the new state which is independ of contexts.
+ Return the new state if succeeded, otherwise return NULL. */
+
+static re_dfastate_t *
+internal_function
+create_ci_newstate (const re_dfa_t *dfa, const re_node_set *nodes,
+ re_hashval_t hash)
+{
+ Idx i;
+ reg_errcode_t err;
+ re_dfastate_t *newstate;
+
+ newstate = (re_dfastate_t *) calloc (sizeof (re_dfastate_t), 1);
+ if (BE (newstate == NULL, 0))
+ return NULL;
+ err = re_node_set_init_copy (&newstate->nodes, nodes);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ re_free (newstate);
+ return NULL;
+ }
+
+ newstate->entrance_nodes = &newstate->nodes;
+ for (i = 0 ; i < nodes->nelem ; i++)
+ {
+ re_token_t *node = dfa->nodes + nodes->elems[i];
+ re_token_type_t type = node->type;
+ if (type == CHARACTER && !node->constraint)
+ continue;
+#ifdef RE_ENABLE_I18N
+ newstate->accept_mb |= node->accept_mb;
+#endif /* RE_ENABLE_I18N */
+
+ /* If the state has the halt node, the state is a halt state. */
+ if (type == END_OF_RE)
+ newstate->halt = 1;
+ else if (type == OP_BACK_REF)
+ newstate->has_backref = 1;
+ else if (type == ANCHOR || node->constraint)
+ newstate->has_constraint = 1;
+ }
+ err = register_state (dfa, newstate, hash);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ free_state (newstate);
+ newstate = NULL;
+ }
+ return newstate;
+}
+
+/* Create the new state which is depend on the context CONTEXT.
+ Return the new state if succeeded, otherwise return NULL. */
+
+static re_dfastate_t *
+internal_function
+create_cd_newstate (const re_dfa_t *dfa, const re_node_set *nodes,
+ unsigned int context, re_hashval_t hash)
+{
+ Idx i, nctx_nodes = 0;
+ reg_errcode_t err;
+ re_dfastate_t *newstate;
+
+ newstate = (re_dfastate_t *) calloc (sizeof (re_dfastate_t), 1);
+ if (BE (newstate == NULL, 0))
+ return NULL;
+ err = re_node_set_init_copy (&newstate->nodes, nodes);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ re_free (newstate);
+ return NULL;
+ }
+
+ newstate->context = context;
+ newstate->entrance_nodes = &newstate->nodes;
+
+ for (i = 0 ; i < nodes->nelem ; i++)
+ {
+ unsigned int constraint = 0;
+ re_token_t *node = dfa->nodes + nodes->elems[i];
+ re_token_type_t type = node->type;
+ if (node->constraint)
+ constraint = node->constraint;
+
+ if (type == CHARACTER && !constraint)
+ continue;
+#ifdef RE_ENABLE_I18N
+ newstate->accept_mb |= node->accept_mb;
+#endif /* RE_ENABLE_I18N */
+
+ /* If the state has the halt node, the state is a halt state. */
+ if (type == END_OF_RE)
+ newstate->halt = 1;
+ else if (type == OP_BACK_REF)
+ newstate->has_backref = 1;
+ else if (type == ANCHOR)
+ constraint = node->opr.ctx_type;
+
+ if (constraint)
+ {
+ if (newstate->entrance_nodes == &newstate->nodes)
+ {
+ newstate->entrance_nodes = re_malloc (re_node_set, 1);
+ if (BE (newstate->entrance_nodes == NULL, 0))
+ {
+ free_state (newstate);
+ return NULL;
+ }
+ re_node_set_init_copy (newstate->entrance_nodes, nodes);
+ nctx_nodes = 0;
+ newstate->has_constraint = 1;
+ }
+
+ if (NOT_SATISFY_PREV_CONSTRAINT (constraint,context))
+ {
+ re_node_set_remove_at (&newstate->nodes, i - nctx_nodes);
+ ++nctx_nodes;
+ }
+ }
+ }
+ err = register_state (dfa, newstate, hash);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ free_state (newstate);
+ newstate = NULL;
+ }
+ return newstate;
+}
diff --git a/lib/regex_internal.h b/lib/regex_internal.h
new file mode 100644
index 0000000..9bbc6ac
--- /dev/null
+++ b/lib/regex_internal.h
@@ -0,0 +1,857 @@
+/* Extended regular expression matching and search library.
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _REGEX_INTERNAL_H
+#define _REGEX_INTERNAL_H 1
+
+#include <assert.h>
+#include <ctype.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef _LIBC
+# include <langinfo.h>
+#else
+# include "localcharset.h"
+#endif
+#if defined HAVE_LOCALE_H || defined _LIBC
+# include <locale.h>
+#endif
+
+#include <wchar.h>
+#include <wctype.h>
+#include <stdint.h>
+#if defined _LIBC
+# include <bits/libc-lock.h>
+#else
+# define __libc_lock_init(NAME) do { } while (0)
+# define __libc_lock_lock(NAME) do { } while (0)
+# define __libc_lock_unlock(NAME) do { } while (0)
+#endif
+
+/* In case that the system doesn't have isblank(). */
+#if !defined _LIBC && !HAVE_DECL_ISBLANK && !defined isblank
+# define isblank(ch) ((ch) == ' ' || (ch) == '\t')
+#endif
+
+#ifdef _LIBC
+# ifndef _RE_DEFINE_LOCALE_FUNCTIONS
+# define _RE_DEFINE_LOCALE_FUNCTIONS 1
+# include <locale/localeinfo.h>
+# include <locale/elem-hash.h>
+# include <locale/coll-lookup.h>
+# endif
+#endif
+
+/* This is for other GNU distributions with internationalized messages. */
+#if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC
+# include <libintl.h>
+# ifdef _LIBC
+# undef gettext
+# define gettext(msgid) \
+ INTUSE(__dcgettext) (_libc_intl_domainname, msgid, LC_MESSAGES)
+# endif
+#else
+# define gettext(msgid) (msgid)
+#endif
+
+#ifndef gettext_noop
+/* This define is so xgettext can find the internationalizable
+ strings. */
+# define gettext_noop(String) String
+#endif
+
+/* For loser systems without the definition. */
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+
+#if (defined MB_CUR_MAX && HAVE_LOCALE_H && HAVE_WCTYPE_H && HAVE_ISWCTYPE && HAVE_WCRTOMB && HAVE_MBRTOWC && HAVE_WCSCOLL) || _LIBC
+# define RE_ENABLE_I18N
+#endif
+
+#if __GNUC__ >= 3
+# define BE(expr, val) __builtin_expect (expr, val)
+#else
+# define BE(expr, val) (expr)
+# ifdef _LIBC
+# define inline
+# endif
+#endif
+
+/* Number of ASCII characters. */
+#define ASCII_CHARS 0x80
+
+/* Number of single byte characters. */
+#define SBC_MAX (UCHAR_MAX + 1)
+
+#define COLL_ELEM_LEN_MAX 8
+
+/* The character which represents newline. */
+#define NEWLINE_CHAR '\n'
+#define WIDE_NEWLINE_CHAR L'\n'
+
+/* Rename to standard API for using out of glibc. */
+#ifndef _LIBC
+# define __wctype wctype
+# define __iswctype iswctype
+# define __btowc btowc
+# define __wcrtomb wcrtomb
+# define __regfree regfree
+# define attribute_hidden
+#endif /* not _LIBC */
+
+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
+# define __attribute(arg) __attribute__ (arg)
+#else
+# define __attribute(arg)
+#endif
+
+typedef __re_idx_t Idx;
+
+/* Special return value for failure to match. */
+#define REG_MISSING ((Idx) -1)
+
+/* Special return value for internal error. */
+#define REG_ERROR ((Idx) -2)
+
+/* Test whether N is a valid index, and is not one of the above. */
+#ifdef _REGEX_LARGE_OFFSETS
+# define REG_VALID_INDEX(n) ((Idx) (n) < REG_ERROR)
+#else
+# define REG_VALID_INDEX(n) (0 <= (n))
+#endif
+
+/* Test whether N is a valid nonzero index. */
+#ifdef _REGEX_LARGE_OFFSETS
+# define REG_VALID_NONZERO_INDEX(n) ((Idx) ((n) - 1) < (Idx) (REG_ERROR - 1))
+#else
+# define REG_VALID_NONZERO_INDEX(n) (0 < (n))
+#endif
+
+/* A hash value, suitable for computing hash tables. */
+typedef __re_size_t re_hashval_t;
+
+/* An integer used to represent a set of bits. It must be unsigned,
+ and must be at least as wide as unsigned int. */
+typedef unsigned long int bitset_word_t;
+/* All bits set in a bitset_word_t. */
+#define BITSET_WORD_MAX ULONG_MAX
+
+/* Number of bits in a bitset_word_t. For portability to hosts with
+ padding bits, do not use '(sizeof (bitset_word_t) * CHAR_BIT)';
+ instead, deduce it directly from BITSET_WORD_MAX. Avoid
+ greater-than-32-bit integers and unconditional shifts by more than
+ 31 bits, as they're not portable. */
+#if BITSET_WORD_MAX == 0xffffffff
+# define BITSET_WORD_BITS 32
+#elif BITSET_WORD_MAX >> 31 >> 5 == 1
+# define BITSET_WORD_BITS 36
+#elif BITSET_WORD_MAX >> 31 >> 16 == 1
+# define BITSET_WORD_BITS 48
+#elif BITSET_WORD_MAX >> 31 >> 28 == 1
+# define BITSET_WORD_BITS 60
+#elif BITSET_WORD_MAX >> 31 >> 31 >> 1 == 1
+# define BITSET_WORD_BITS 64
+#elif BITSET_WORD_MAX >> 31 >> 31 >> 9 == 1
+# define BITSET_WORD_BITS 72
+#elif BITSET_WORD_MAX >> 31 >> 31 >> 31 >> 31 >> 3 == 1
+# define BITSET_WORD_BITS 128
+#elif BITSET_WORD_MAX >> 31 >> 31 >> 31 >> 31 >> 31 >> 31 >> 31 >> 31 >> 7 == 1
+# define BITSET_WORD_BITS 256
+#elif BITSET_WORD_MAX >> 31 >> 31 >> 31 >> 31 >> 31 >> 31 >> 31 >> 31 >> 7 > 1
+# define BITSET_WORD_BITS 257 /* any value > SBC_MAX will do here */
+# if BITSET_WORD_BITS <= SBC_MAX
+# error "Invalid SBC_MAX"
+# endif
+#elif BITSET_WORD_MAX == (0xffffffff + 2) * 0xffffffff
+/* Work around a bug in 64-bit PGC (before version 6.1-2), where the
+ preprocessor mishandles large unsigned values as if they were signed. */
+# define BITSET_WORD_BITS 64
+#else
+# error "Add case for new bitset_word_t size"
+#endif
+
+/* Number of bitset_word_t values in a bitset_t. */
+#define BITSET_WORDS ((SBC_MAX + BITSET_WORD_BITS - 1) / BITSET_WORD_BITS)
+
+typedef bitset_word_t bitset_t[BITSET_WORDS];
+typedef bitset_word_t *re_bitset_ptr_t;
+typedef const bitset_word_t *re_const_bitset_ptr_t;
+
+#define PREV_WORD_CONSTRAINT 0x0001
+#define PREV_NOTWORD_CONSTRAINT 0x0002
+#define NEXT_WORD_CONSTRAINT 0x0004
+#define NEXT_NOTWORD_CONSTRAINT 0x0008
+#define PREV_NEWLINE_CONSTRAINT 0x0010
+#define NEXT_NEWLINE_CONSTRAINT 0x0020
+#define PREV_BEGBUF_CONSTRAINT 0x0040
+#define NEXT_ENDBUF_CONSTRAINT 0x0080
+#define WORD_DELIM_CONSTRAINT 0x0100
+#define NOT_WORD_DELIM_CONSTRAINT 0x0200
+
+typedef enum
+{
+ INSIDE_WORD = PREV_WORD_CONSTRAINT | NEXT_WORD_CONSTRAINT,
+ WORD_FIRST = PREV_NOTWORD_CONSTRAINT | NEXT_WORD_CONSTRAINT,
+ WORD_LAST = PREV_WORD_CONSTRAINT | NEXT_NOTWORD_CONSTRAINT,
+ INSIDE_NOTWORD = PREV_NOTWORD_CONSTRAINT | NEXT_NOTWORD_CONSTRAINT,
+ LINE_FIRST = PREV_NEWLINE_CONSTRAINT,
+ LINE_LAST = NEXT_NEWLINE_CONSTRAINT,
+ BUF_FIRST = PREV_BEGBUF_CONSTRAINT,
+ BUF_LAST = NEXT_ENDBUF_CONSTRAINT,
+ WORD_DELIM = WORD_DELIM_CONSTRAINT,
+ NOT_WORD_DELIM = NOT_WORD_DELIM_CONSTRAINT
+} re_context_type;
+
+typedef struct
+{
+ Idx alloc;
+ Idx nelem;
+ Idx *elems;
+} re_node_set;
+
+typedef enum
+{
+ NON_TYPE = 0,
+
+ /* Node type, These are used by token, node, tree. */
+ CHARACTER = 1,
+ END_OF_RE = 2,
+ SIMPLE_BRACKET = 3,
+ OP_BACK_REF = 4,
+ OP_PERIOD = 5,
+#ifdef RE_ENABLE_I18N
+ COMPLEX_BRACKET = 6,
+ OP_UTF8_PERIOD = 7,
+#endif /* RE_ENABLE_I18N */
+
+ /* We define EPSILON_BIT as a macro so that OP_OPEN_SUBEXP is used
+ when the debugger shows values of this enum type. */
+#define EPSILON_BIT 8
+ OP_OPEN_SUBEXP = EPSILON_BIT | 0,
+ OP_CLOSE_SUBEXP = EPSILON_BIT | 1,
+ OP_ALT = EPSILON_BIT | 2,
+ OP_DUP_ASTERISK = EPSILON_BIT | 3,
+ ANCHOR = EPSILON_BIT | 4,
+
+ /* Tree type, these are used only by tree. */
+ CONCAT = 16,
+ SUBEXP = 17,
+
+ /* Token type, these are used only by token. */
+ OP_DUP_PLUS = 18,
+ OP_DUP_QUESTION,
+ OP_OPEN_BRACKET,
+ OP_CLOSE_BRACKET,
+ OP_CHARSET_RANGE,
+ OP_OPEN_DUP_NUM,
+ OP_CLOSE_DUP_NUM,
+ OP_NON_MATCH_LIST,
+ OP_OPEN_COLL_ELEM,
+ OP_CLOSE_COLL_ELEM,
+ OP_OPEN_EQUIV_CLASS,
+ OP_CLOSE_EQUIV_CLASS,
+ OP_OPEN_CHAR_CLASS,
+ OP_CLOSE_CHAR_CLASS,
+ OP_WORD,
+ OP_NOTWORD,
+ OP_SPACE,
+ OP_NOTSPACE,
+ BACK_SLASH
+
+} re_token_type_t;
+
+#ifdef RE_ENABLE_I18N
+typedef struct
+{
+ /* Multibyte characters. */
+ wchar_t *mbchars;
+
+ /* Collating symbols. */
+# ifdef _LIBC
+ int32_t *coll_syms;
+# endif
+
+ /* Equivalence classes. */
+# ifdef _LIBC
+ int32_t *equiv_classes;
+# endif
+
+ /* Range expressions. */
+# ifdef _LIBC
+ uint32_t *range_starts;
+ uint32_t *range_ends;
+# else /* not _LIBC */
+ wchar_t *range_starts;
+ wchar_t *range_ends;
+# endif /* not _LIBC */
+
+ /* Character classes. */
+ wctype_t *char_classes;
+
+ /* If this character set is the non-matching list. */
+ unsigned int non_match : 1;
+
+ /* # of multibyte characters. */
+ Idx nmbchars;
+
+ /* # of collating symbols. */
+ Idx ncoll_syms;
+
+ /* # of equivalence classes. */
+ Idx nequiv_classes;
+
+ /* # of range expressions. */
+ Idx nranges;
+
+ /* # of character classes. */
+ Idx nchar_classes;
+} re_charset_t;
+#endif /* RE_ENABLE_I18N */
+
+typedef struct
+{
+ union
+ {
+ unsigned char c; /* for CHARACTER */
+ re_bitset_ptr_t sbcset; /* for SIMPLE_BRACKET */
+#ifdef RE_ENABLE_I18N
+ re_charset_t *mbcset; /* for COMPLEX_BRACKET */
+#endif /* RE_ENABLE_I18N */
+ Idx idx; /* for BACK_REF */
+ re_context_type ctx_type; /* for ANCHOR */
+ } opr;
+#if __GNUC__ >= 2 && !__STRICT_ANSI__
+ re_token_type_t type : 8;
+#else
+ re_token_type_t type;
+#endif
+ unsigned int constraint : 10; /* context constraint */
+ unsigned int duplicated : 1;
+ unsigned int opt_subexp : 1;
+#ifdef RE_ENABLE_I18N
+ unsigned int accept_mb : 1;
+ /* These 2 bits can be moved into the union if needed (e.g. if running out
+ of bits; move opr.c to opr.c.c and move the flags to opr.c.flags). */
+ unsigned int mb_partial : 1;
+#endif
+ unsigned int word_char : 1;
+} re_token_t;
+
+#define IS_EPSILON_NODE(type) ((type) & EPSILON_BIT)
+
+struct re_string_t
+{
+ /* Indicate the raw buffer which is the original string passed as an
+ argument of regexec(), re_search(), etc.. */
+ const unsigned char *raw_mbs;
+ /* Store the multibyte string. In case of "case insensitive mode" like
+ REG_ICASE, upper cases of the string are stored, otherwise MBS points
+ the same address that RAW_MBS points. */
+ unsigned char *mbs;
+#ifdef RE_ENABLE_I18N
+ /* Store the wide character string which is corresponding to MBS. */
+ wint_t *wcs;
+ Idx *offsets;
+ mbstate_t cur_state;
+#endif
+ /* Index in RAW_MBS. Each character mbs[i] corresponds to
+ raw_mbs[raw_mbs_idx + i]. */
+ Idx raw_mbs_idx;
+ /* The length of the valid characters in the buffers. */
+ Idx valid_len;
+ /* The corresponding number of bytes in raw_mbs array. */
+ Idx valid_raw_len;
+ /* The length of the buffers MBS and WCS. */
+ Idx bufs_len;
+ /* The index in MBS, which is updated by re_string_fetch_byte. */
+ Idx cur_idx;
+ /* length of RAW_MBS array. */
+ Idx raw_len;
+ /* This is RAW_LEN - RAW_MBS_IDX + VALID_LEN - VALID_RAW_LEN. */
+ Idx len;
+ /* End of the buffer may be shorter than its length in the cases such
+ as re_match_2, re_search_2. Then, we use STOP for end of the buffer
+ instead of LEN. */
+ Idx raw_stop;
+ /* This is RAW_STOP - RAW_MBS_IDX adjusted through OFFSETS. */
+ Idx stop;
+
+ /* The context of mbs[0]. We store the context independently, since
+ the context of mbs[0] may be different from raw_mbs[0], which is
+ the beginning of the input string. */
+ unsigned int tip_context;
+ /* The translation passed as a part of an argument of re_compile_pattern. */
+ RE_TRANSLATE_TYPE trans;
+ /* Copy of re_dfa_t's word_char. */
+ re_const_bitset_ptr_t word_char;
+ /* true if REG_ICASE. */
+ unsigned char icase;
+ unsigned char is_utf8;
+ unsigned char map_notascii;
+ unsigned char mbs_allocated;
+ unsigned char offsets_needed;
+ unsigned char newline_anchor;
+ unsigned char word_ops_used;
+ int mb_cur_max;
+};
+typedef struct re_string_t re_string_t;
+
+
+struct re_dfa_t;
+typedef struct re_dfa_t re_dfa_t;
+
+#ifndef _LIBC
+# ifdef __i386__
+# define internal_function __attribute ((regparm (3), stdcall))
+# else
+# define internal_function
+# endif
+#endif
+
+static reg_errcode_t re_string_realloc_buffers (re_string_t *pstr,
+ Idx new_buf_len)
+ internal_function;
+#ifdef RE_ENABLE_I18N
+static void build_wcs_buffer (re_string_t *pstr) internal_function;
+static reg_errcode_t build_wcs_upper_buffer (re_string_t *pstr)
+ internal_function;
+#endif /* RE_ENABLE_I18N */
+static void build_upper_buffer (re_string_t *pstr) internal_function;
+static void re_string_translate_buffer (re_string_t *pstr) internal_function;
+static unsigned int re_string_context_at (const re_string_t *input, Idx idx,
+ int eflags)
+ internal_function __attribute ((pure));
+#define re_string_peek_byte(pstr, offset) \
+ ((pstr)->mbs[(pstr)->cur_idx + offset])
+#define re_string_fetch_byte(pstr) \
+ ((pstr)->mbs[(pstr)->cur_idx++])
+#define re_string_first_byte(pstr, idx) \
+ ((idx) == (pstr)->valid_len || (pstr)->wcs[idx] != WEOF)
+#define re_string_is_single_byte_char(pstr, idx) \
+ ((pstr)->wcs[idx] != WEOF && ((pstr)->valid_len == (idx) + 1 \
+ || (pstr)->wcs[(idx) + 1] != WEOF))
+#define re_string_eoi(pstr) ((pstr)->stop <= (pstr)->cur_idx)
+#define re_string_cur_idx(pstr) ((pstr)->cur_idx)
+#define re_string_get_buffer(pstr) ((pstr)->mbs)
+#define re_string_length(pstr) ((pstr)->len)
+#define re_string_byte_at(pstr,idx) ((pstr)->mbs[idx])
+#define re_string_skip_bytes(pstr,idx) ((pstr)->cur_idx += (idx))
+#define re_string_set_index(pstr,idx) ((pstr)->cur_idx = (idx))
+
+#include <alloca.h>
+
+#ifndef _LIBC
+# if HAVE_ALLOCA
+/* The OS usually guarantees only one guard page at the bottom of the stack,
+ and a page size can be as small as 4096 bytes. So we cannot safely
+ allocate anything larger than 4096 bytes. Also care for the possibility
+ of a few compiler-allocated temporary stack slots. */
+# define __libc_use_alloca(n) ((n) < 4032)
+# else
+/* alloca is implemented with malloc, so just use malloc. */
+# define __libc_use_alloca(n) 0
+# endif
+#endif
+
+#ifndef MAX
+# define MAX(a,b) ((a) < (b) ? (b) : (a))
+#endif
+
+#define re_malloc(t,n) ((t *) malloc ((n) * sizeof (t)))
+#define re_realloc(p,t,n) ((t *) realloc (p, (n) * sizeof (t)))
+#define re_free(p) free (p)
+
+struct bin_tree_t
+{
+ struct bin_tree_t *parent;
+ struct bin_tree_t *left;
+ struct bin_tree_t *right;
+ struct bin_tree_t *first;
+ struct bin_tree_t *next;
+
+ re_token_t token;
+
+ /* `node_idx' is the index in dfa->nodes, if `type' == 0.
+ Otherwise `type' indicate the type of this node. */
+ Idx node_idx;
+};
+typedef struct bin_tree_t bin_tree_t;
+
+#define BIN_TREE_STORAGE_SIZE \
+ ((1024 - sizeof (void *)) / sizeof (bin_tree_t))
+
+struct bin_tree_storage_t
+{
+ struct bin_tree_storage_t *next;
+ bin_tree_t data[BIN_TREE_STORAGE_SIZE];
+};
+typedef struct bin_tree_storage_t bin_tree_storage_t;
+
+#define CONTEXT_WORD 1
+#define CONTEXT_NEWLINE (CONTEXT_WORD << 1)
+#define CONTEXT_BEGBUF (CONTEXT_NEWLINE << 1)
+#define CONTEXT_ENDBUF (CONTEXT_BEGBUF << 1)
+
+#define IS_WORD_CONTEXT(c) ((c) & CONTEXT_WORD)
+#define IS_NEWLINE_CONTEXT(c) ((c) & CONTEXT_NEWLINE)
+#define IS_BEGBUF_CONTEXT(c) ((c) & CONTEXT_BEGBUF)
+#define IS_ENDBUF_CONTEXT(c) ((c) & CONTEXT_ENDBUF)
+#define IS_ORDINARY_CONTEXT(c) ((c) == 0)
+
+#define IS_WORD_CHAR(ch) (isalnum (ch) || (ch) == '_')
+#define IS_NEWLINE(ch) ((ch) == NEWLINE_CHAR)
+#define IS_WIDE_WORD_CHAR(ch) (iswalnum (ch) || (ch) == L'_')
+#define IS_WIDE_NEWLINE(ch) ((ch) == WIDE_NEWLINE_CHAR)
+
+#define NOT_SATISFY_PREV_CONSTRAINT(constraint,context) \
+ ((((constraint) & PREV_WORD_CONSTRAINT) && !IS_WORD_CONTEXT (context)) \
+ || ((constraint & PREV_NOTWORD_CONSTRAINT) && IS_WORD_CONTEXT (context)) \
+ || ((constraint & PREV_NEWLINE_CONSTRAINT) && !IS_NEWLINE_CONTEXT (context))\
+ || ((constraint & PREV_BEGBUF_CONSTRAINT) && !IS_BEGBUF_CONTEXT (context)))
+
+#define NOT_SATISFY_NEXT_CONSTRAINT(constraint,context) \
+ ((((constraint) & NEXT_WORD_CONSTRAINT) && !IS_WORD_CONTEXT (context)) \
+ || (((constraint) & NEXT_NOTWORD_CONSTRAINT) && IS_WORD_CONTEXT (context)) \
+ || (((constraint) & NEXT_NEWLINE_CONSTRAINT) && !IS_NEWLINE_CONTEXT (context)) \
+ || (((constraint) & NEXT_ENDBUF_CONSTRAINT) && !IS_ENDBUF_CONTEXT (context)))
+
+struct re_dfastate_t
+{
+ re_hashval_t hash;
+ re_node_set nodes;
+ re_node_set non_eps_nodes;
+ re_node_set inveclosure;
+ re_node_set *entrance_nodes;
+ struct re_dfastate_t **trtable, **word_trtable;
+ unsigned int context : 4;
+ unsigned int halt : 1;
+ /* If this state can accept `multi byte'.
+ Note that we refer to multibyte characters, and multi character
+ collating elements as `multi byte'. */
+ unsigned int accept_mb : 1;
+ /* If this state has backreference node(s). */
+ unsigned int has_backref : 1;
+ unsigned int has_constraint : 1;
+};
+typedef struct re_dfastate_t re_dfastate_t;
+
+struct re_state_table_entry
+{
+ Idx num;
+ Idx alloc;
+ re_dfastate_t **array;
+};
+
+/* Array type used in re_sub_match_last_t and re_sub_match_top_t. */
+
+typedef struct
+{
+ Idx next_idx;
+ Idx alloc;
+ re_dfastate_t **array;
+} state_array_t;
+
+/* Store information about the node NODE whose type is OP_CLOSE_SUBEXP. */
+
+typedef struct
+{
+ Idx node;
+ Idx str_idx; /* The position NODE match at. */
+ state_array_t path;
+} re_sub_match_last_t;
+
+/* Store information about the node NODE whose type is OP_OPEN_SUBEXP.
+ And information about the node, whose type is OP_CLOSE_SUBEXP,
+ corresponding to NODE is stored in LASTS. */
+
+typedef struct
+{
+ Idx str_idx;
+ Idx node;
+ state_array_t *path;
+ Idx alasts; /* Allocation size of LASTS. */
+ Idx nlasts; /* The number of LASTS. */
+ re_sub_match_last_t **lasts;
+} re_sub_match_top_t;
+
+struct re_backref_cache_entry
+{
+ Idx node;
+ Idx str_idx;
+ Idx subexp_from;
+ Idx subexp_to;
+ char more;
+ char unused;
+ unsigned short int eps_reachable_subexps_map;
+};
+
+typedef struct
+{
+ /* The string object corresponding to the input string. */
+ re_string_t input;
+#if defined _LIBC || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
+ const re_dfa_t *const dfa;
+#else
+ const re_dfa_t *dfa;
+#endif
+ /* EFLAGS of the argument of regexec. */
+ int eflags;
+ /* Where the matching ends. */
+ Idx match_last;
+ Idx last_node;
+ /* The state log used by the matcher. */
+ re_dfastate_t **state_log;
+ Idx state_log_top;
+ /* Back reference cache. */
+ Idx nbkref_ents;
+ Idx abkref_ents;
+ struct re_backref_cache_entry *bkref_ents;
+ int max_mb_elem_len;
+ Idx nsub_tops;
+ Idx asub_tops;
+ re_sub_match_top_t **sub_tops;
+} re_match_context_t;
+
+typedef struct
+{
+ re_dfastate_t **sifted_states;
+ re_dfastate_t **limited_states;
+ Idx last_node;
+ Idx last_str_idx;
+ re_node_set limits;
+} re_sift_context_t;
+
+struct re_fail_stack_ent_t
+{
+ Idx idx;
+ Idx node;
+ regmatch_t *regs;
+ re_node_set eps_via_nodes;
+};
+
+struct re_fail_stack_t
+{
+ Idx num;
+ Idx alloc;
+ struct re_fail_stack_ent_t *stack;
+};
+
+struct re_dfa_t
+{
+ re_token_t *nodes;
+ size_t nodes_alloc;
+ size_t nodes_len;
+ Idx *nexts;
+ Idx *org_indices;
+ re_node_set *edests;
+ re_node_set *eclosures;
+ re_node_set *inveclosures;
+ struct re_state_table_entry *state_table;
+ re_dfastate_t *init_state;
+ re_dfastate_t *init_state_word;
+ re_dfastate_t *init_state_nl;
+ re_dfastate_t *init_state_begbuf;
+ bin_tree_t *str_tree;
+ bin_tree_storage_t *str_tree_storage;
+ re_bitset_ptr_t sb_char;
+ int str_tree_storage_idx;
+
+ /* number of subexpressions `re_nsub' is in regex_t. */
+ re_hashval_t state_hash_mask;
+ Idx init_node;
+ Idx nbackref; /* The number of backreference in this dfa. */
+
+ /* Bitmap expressing which backreference is used. */
+ bitset_word_t used_bkref_map;
+ bitset_word_t completed_bkref_map;
+
+ unsigned int has_plural_match : 1;
+ /* If this dfa has "multibyte node", which is a backreference or
+ a node which can accept multibyte character or multi character
+ collating element. */
+ unsigned int has_mb_node : 1;
+ unsigned int is_utf8 : 1;
+ unsigned int map_notascii : 1;
+ unsigned int word_ops_used : 1;
+ int mb_cur_max;
+ bitset_t word_char;
+ reg_syntax_t syntax;
+ Idx *subexp_map;
+#ifdef DEBUG
+ char* re_str;
+#endif
+#ifdef _LIBC
+ __libc_lock_define (, lock)
+#endif
+};
+
+#define re_node_set_init_empty(set) memset (set, '\0', sizeof (re_node_set))
+#define re_node_set_remove(set,id) \
+ (re_node_set_remove_at (set, re_node_set_contains (set, id) - 1))
+#define re_node_set_empty(p) ((p)->nelem = 0)
+#define re_node_set_free(set) re_free ((set)->elems)
+
+
+typedef enum
+{
+ SB_CHAR,
+ MB_CHAR,
+ EQUIV_CLASS,
+ COLL_SYM,
+ CHAR_CLASS
+} bracket_elem_type;
+
+typedef struct
+{
+ bracket_elem_type type;
+ union
+ {
+ unsigned char ch;
+ unsigned char *name;
+ wchar_t wch;
+ } opr;
+} bracket_elem_t;
+
+
+/* Inline functions for bitset_t operation. */
+
+static inline void
+bitset_set (bitset_t set, Idx i)
+{
+ set[i / BITSET_WORD_BITS] |= (bitset_word_t) 1 << i % BITSET_WORD_BITS;
+}
+
+static inline void
+bitset_clear (bitset_t set, Idx i)
+{
+ set[i / BITSET_WORD_BITS] &= ~ ((bitset_word_t) 1 << i % BITSET_WORD_BITS);
+}
+
+static inline bool
+bitset_contain (const bitset_t set, Idx i)
+{
+ return (set[i / BITSET_WORD_BITS] >> i % BITSET_WORD_BITS) & 1;
+}
+
+static inline void
+bitset_empty (bitset_t set)
+{
+ memset (set, '\0', sizeof (bitset_t));
+}
+
+static inline void
+bitset_set_all (bitset_t set)
+{
+ memset (set, -1, sizeof (bitset_word_t) * (SBC_MAX / BITSET_WORD_BITS));
+ if (SBC_MAX % BITSET_WORD_BITS != 0)
+ set[BITSET_WORDS - 1] =
+ ((bitset_word_t) 1 << SBC_MAX % BITSET_WORD_BITS) - 1;
+}
+
+static inline void
+bitset_copy (bitset_t dest, const bitset_t src)
+{
+ memcpy (dest, src, sizeof (bitset_t));
+}
+
+static inline void
+bitset_not (bitset_t set)
+{
+ int bitset_i;
+ for (bitset_i = 0; bitset_i < SBC_MAX / BITSET_WORD_BITS; ++bitset_i)
+ set[bitset_i] = ~set[bitset_i];
+ if (SBC_MAX % BITSET_WORD_BITS != 0)
+ set[BITSET_WORDS - 1] =
+ ((((bitset_word_t) 1 << SBC_MAX % BITSET_WORD_BITS) - 1)
+ & ~set[BITSET_WORDS - 1]);
+}
+
+static inline void
+bitset_merge (bitset_t dest, const bitset_t src)
+{
+ int bitset_i;
+ for (bitset_i = 0; bitset_i < BITSET_WORDS; ++bitset_i)
+ dest[bitset_i] |= src[bitset_i];
+}
+
+static inline void
+bitset_mask (bitset_t dest, const bitset_t src)
+{
+ int bitset_i;
+ for (bitset_i = 0; bitset_i < BITSET_WORDS; ++bitset_i)
+ dest[bitset_i] &= src[bitset_i];
+}
+
+#ifdef RE_ENABLE_I18N
+/* Inline functions for re_string. */
+static inline int
+internal_function __attribute ((pure))
+re_string_char_size_at (const re_string_t *pstr, Idx idx)
+{
+ int byte_idx;
+ if (pstr->mb_cur_max == 1)
+ return 1;
+ for (byte_idx = 1; idx + byte_idx < pstr->valid_len; ++byte_idx)
+ if (pstr->wcs[idx + byte_idx] != WEOF)
+ break;
+ return byte_idx;
+}
+
+static inline wint_t
+internal_function __attribute ((pure))
+re_string_wchar_at (const re_string_t *pstr, Idx idx)
+{
+ if (pstr->mb_cur_max == 1)
+ return (wint_t) pstr->mbs[idx];
+ return (wint_t) pstr->wcs[idx];
+}
+
+static int
+internal_function __attribute ((pure))
+re_string_elem_size_at (const re_string_t *pstr, Idx idx)
+{
+# ifdef _LIBC
+ const unsigned char *p, *extra;
+ const int32_t *table, *indirect;
+ int32_t tmp;
+# include <locale/weight.h>
+ uint_fast32_t nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
+
+ if (nrules != 0)
+ {
+ table = (const int32_t *) _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB);
+ extra = (const unsigned char *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAMB);
+ indirect = (const int32_t *) _NL_CURRENT (LC_COLLATE,
+ _NL_COLLATE_INDIRECTMB);
+ p = pstr->mbs + idx;
+ tmp = findidx (&p);
+ return p - pstr->mbs - idx;
+ }
+ else
+# endif /* _LIBC */
+ return 1;
+}
+#endif /* RE_ENABLE_I18N */
+
+#endif /* _REGEX_INTERNAL_H */
diff --git a/lib/regexec.c b/lib/regexec.c
new file mode 100644
index 0000000..cba5ea2
--- /dev/null
+++ b/lib/regexec.c
@@ -0,0 +1,4398 @@
+/* Extended regular expression matching and search library.
+ Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+static reg_errcode_t match_ctx_init (re_match_context_t *cache, int eflags,
+ Idx n) internal_function;
+static void match_ctx_clean (re_match_context_t *mctx) internal_function;
+static void match_ctx_free (re_match_context_t *cache) internal_function;
+static reg_errcode_t match_ctx_add_entry (re_match_context_t *cache, Idx node,
+ Idx str_idx, Idx from, Idx to)
+ internal_function;
+static Idx search_cur_bkref_entry (const re_match_context_t *mctx, Idx str_idx)
+ internal_function;
+static reg_errcode_t match_ctx_add_subtop (re_match_context_t *mctx, Idx node,
+ Idx str_idx) internal_function;
+static re_sub_match_last_t * match_ctx_add_sublast (re_sub_match_top_t *subtop,
+ Idx node, Idx str_idx)
+ internal_function;
+static void sift_ctx_init (re_sift_context_t *sctx, re_dfastate_t **sifted_sts,
+ re_dfastate_t **limited_sts, Idx last_node,
+ Idx last_str_idx)
+ internal_function;
+static reg_errcode_t re_search_internal (const regex_t *preg,
+ const char *string, Idx length,
+ Idx start, Idx last_start, Idx stop,
+ size_t nmatch, regmatch_t pmatch[],
+ int eflags) internal_function;
+static regoff_t re_search_2_stub (struct re_pattern_buffer *bufp,
+ const char *string1, Idx length1,
+ const char *string2, Idx length2,
+ Idx start, regoff_t range,
+ struct re_registers *regs,
+ Idx stop, bool ret_len) internal_function;
+static regoff_t re_search_stub (struct re_pattern_buffer *bufp,
+ const char *string, Idx length, Idx start,
+ regoff_t range, Idx stop,
+ struct re_registers *regs,
+ bool ret_len) internal_function;
+static unsigned int re_copy_regs (struct re_registers *regs, regmatch_t *pmatch,
+ Idx nregs, int regs_allocated)
+ internal_function;
+static reg_errcode_t prune_impossible_nodes (re_match_context_t *mctx)
+ internal_function;
+static Idx check_matching (re_match_context_t *mctx, bool fl_longest_match,
+ Idx *p_match_first) internal_function;
+static Idx check_halt_state_context (const re_match_context_t *mctx,
+ const re_dfastate_t *state, Idx idx)
+ internal_function;
+static void update_regs (const re_dfa_t *dfa, regmatch_t *pmatch,
+ regmatch_t *prev_idx_match, Idx cur_node,
+ Idx cur_idx, Idx nmatch) internal_function;
+static reg_errcode_t push_fail_stack (struct re_fail_stack_t *fs,
+ Idx str_idx, Idx dest_node, Idx nregs,
+ regmatch_t *regs,
+ re_node_set *eps_via_nodes)
+ internal_function;
+static reg_errcode_t set_regs (const regex_t *preg,
+ const re_match_context_t *mctx,
+ size_t nmatch, regmatch_t *pmatch,
+ bool fl_backtrack) internal_function;
+static reg_errcode_t free_fail_stack_return (struct re_fail_stack_t *fs)
+ internal_function;
+
+#ifdef RE_ENABLE_I18N
+static int sift_states_iter_mb (const re_match_context_t *mctx,
+ re_sift_context_t *sctx,
+ Idx node_idx, Idx str_idx, Idx max_str_idx)
+ internal_function;
+#endif /* RE_ENABLE_I18N */
+static reg_errcode_t sift_states_backward (const re_match_context_t *mctx,
+ re_sift_context_t *sctx)
+ internal_function;
+static reg_errcode_t build_sifted_states (const re_match_context_t *mctx,
+ re_sift_context_t *sctx, Idx str_idx,
+ re_node_set *cur_dest)
+ internal_function;
+static reg_errcode_t update_cur_sifted_state (const re_match_context_t *mctx,
+ re_sift_context_t *sctx,
+ Idx str_idx,
+ re_node_set *dest_nodes)
+ internal_function;
+static reg_errcode_t add_epsilon_src_nodes (const re_dfa_t *dfa,
+ re_node_set *dest_nodes,
+ const re_node_set *candidates)
+ internal_function;
+static bool check_dst_limits (const re_match_context_t *mctx,
+ const re_node_set *limits,
+ Idx dst_node, Idx dst_idx, Idx src_node,
+ Idx src_idx) internal_function;
+static int check_dst_limits_calc_pos_1 (const re_match_context_t *mctx,
+ int boundaries, Idx subexp_idx,
+ Idx from_node, Idx bkref_idx)
+ internal_function;
+static int check_dst_limits_calc_pos (const re_match_context_t *mctx,
+ Idx limit, Idx subexp_idx,
+ Idx node, Idx str_idx,
+ Idx bkref_idx) internal_function;
+static reg_errcode_t check_subexp_limits (const re_dfa_t *dfa,
+ re_node_set *dest_nodes,
+ const re_node_set *candidates,
+ re_node_set *limits,
+ struct re_backref_cache_entry *bkref_ents,
+ Idx str_idx) internal_function;
+static reg_errcode_t sift_states_bkref (const re_match_context_t *mctx,
+ re_sift_context_t *sctx,
+ Idx str_idx, const re_node_set *candidates)
+ internal_function;
+static reg_errcode_t merge_state_array (const re_dfa_t *dfa,
+ re_dfastate_t **dst,
+ re_dfastate_t **src, Idx num)
+ internal_function;
+static re_dfastate_t *find_recover_state (reg_errcode_t *err,
+ re_match_context_t *mctx) internal_function;
+static re_dfastate_t *transit_state (reg_errcode_t *err,
+ re_match_context_t *mctx,
+ re_dfastate_t *state) internal_function;
+static re_dfastate_t *merge_state_with_log (reg_errcode_t *err,
+ re_match_context_t *mctx,
+ re_dfastate_t *next_state)
+ internal_function;
+static reg_errcode_t check_subexp_matching_top (re_match_context_t *mctx,
+ re_node_set *cur_nodes,
+ Idx str_idx) internal_function;
+#if 0
+static re_dfastate_t *transit_state_sb (reg_errcode_t *err,
+ re_match_context_t *mctx,
+ re_dfastate_t *pstate)
+ internal_function;
+#endif
+#ifdef RE_ENABLE_I18N
+static reg_errcode_t transit_state_mb (re_match_context_t *mctx,
+ re_dfastate_t *pstate)
+ internal_function;
+#endif /* RE_ENABLE_I18N */
+static reg_errcode_t transit_state_bkref (re_match_context_t *mctx,
+ const re_node_set *nodes)
+ internal_function;
+static reg_errcode_t get_subexp (re_match_context_t *mctx,
+ Idx bkref_node, Idx bkref_str_idx)
+ internal_function;
+static reg_errcode_t get_subexp_sub (re_match_context_t *mctx,
+ const re_sub_match_top_t *sub_top,
+ re_sub_match_last_t *sub_last,
+ Idx bkref_node, Idx bkref_str)
+ internal_function;
+static Idx find_subexp_node (const re_dfa_t *dfa, const re_node_set *nodes,
+ Idx subexp_idx, int type) internal_function;
+static reg_errcode_t check_arrival (re_match_context_t *mctx,
+ state_array_t *path, Idx top_node,
+ Idx top_str, Idx last_node, Idx last_str,
+ int type) internal_function;
+static reg_errcode_t check_arrival_add_next_nodes (re_match_context_t *mctx,
+ Idx str_idx,
+ re_node_set *cur_nodes,
+ re_node_set *next_nodes)
+ internal_function;
+static reg_errcode_t check_arrival_expand_ecl (const re_dfa_t *dfa,
+ re_node_set *cur_nodes,
+ Idx ex_subexp, int type)
+ internal_function;
+static reg_errcode_t check_arrival_expand_ecl_sub (const re_dfa_t *dfa,
+ re_node_set *dst_nodes,
+ Idx target, Idx ex_subexp,
+ int type) internal_function;
+static reg_errcode_t expand_bkref_cache (re_match_context_t *mctx,
+ re_node_set *cur_nodes, Idx cur_str,
+ Idx subexp_num, int type)
+ internal_function;
+static bool build_trtable (const re_dfa_t *dfa,
+ re_dfastate_t *state) internal_function;
+#ifdef RE_ENABLE_I18N
+static int check_node_accept_bytes (const re_dfa_t *dfa, Idx node_idx,
+ const re_string_t *input, Idx idx)
+ internal_function;
+# ifdef _LIBC
+static unsigned int find_collation_sequence_value (const unsigned char *mbs,
+ size_t name_len)
+ internal_function;
+# endif /* _LIBC */
+#endif /* RE_ENABLE_I18N */
+static Idx group_nodes_into_DFAstates (const re_dfa_t *dfa,
+ const re_dfastate_t *state,
+ re_node_set *states_node,
+ bitset_t *states_ch) internal_function;
+static bool check_node_accept (const re_match_context_t *mctx,
+ const re_token_t *node, Idx idx)
+ internal_function;
+static reg_errcode_t extend_buffers (re_match_context_t *mctx)
+ internal_function;
+
+/* Entry point for POSIX code. */
+
+/* regexec searches for a given pattern, specified by PREG, in the
+ string STRING.
+
+ If NMATCH is zero or REG_NOSUB was set in the cflags argument to
+ `regcomp', we ignore PMATCH. Otherwise, we assume PMATCH has at
+ least NMATCH elements, and we set them to the offsets of the
+ corresponding matched substrings.
+
+ EFLAGS specifies `execution flags' which affect matching: if
+ REG_NOTBOL is set, then ^ does not match at the beginning of the
+ string; if REG_NOTEOL is set, then $ does not match at the end.
+
+ We return 0 if we find a match and REG_NOMATCH if not. */
+
+int
+regexec (preg, string, nmatch, pmatch, eflags)
+ const regex_t *_Restrict_ preg;
+ const char *_Restrict_ string;
+ size_t nmatch;
+ regmatch_t pmatch[_Restrict_arr_];
+ int eflags;
+{
+ reg_errcode_t err;
+ Idx start, length;
+#ifdef _LIBC
+ re_dfa_t *dfa = (re_dfa_t *) preg->buffer;
+#endif
+
+ if (eflags & ~(REG_NOTBOL | REG_NOTEOL | REG_STARTEND))
+ return REG_BADPAT;
+
+ if (eflags & REG_STARTEND)
+ {
+ start = pmatch[0].rm_so;
+ length = pmatch[0].rm_eo;
+ }
+ else
+ {
+ start = 0;
+ length = strlen (string);
+ }
+
+ __libc_lock_lock (dfa->lock);
+ if (preg->no_sub)
+ err = re_search_internal (preg, string, length, start, length,
+ length, 0, NULL, eflags);
+ else
+ err = re_search_internal (preg, string, length, start, length,
+ length, nmatch, pmatch, eflags);
+ __libc_lock_unlock (dfa->lock);
+ return err != REG_NOERROR;
+}
+
+#ifdef _LIBC
+# include <shlib-compat.h>
+versioned_symbol (libc, __regexec, regexec, GLIBC_2_3_4);
+
+# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
+__typeof__ (__regexec) __compat_regexec;
+
+int
+attribute_compat_text_section
+__compat_regexec (const regex_t *_Restrict_ preg,
+ const char *_Restrict_ string, size_t nmatch,
+ regmatch_t pmatch[], int eflags)
+{
+ return regexec (preg, string, nmatch, pmatch,
+ eflags & (REG_NOTBOL | REG_NOTEOL));
+}
+compat_symbol (libc, __compat_regexec, regexec, GLIBC_2_0);
+# endif
+#endif
+
+/* Entry points for GNU code. */
+
+/* re_match, re_search, re_match_2, re_search_2
+
+ The former two functions operate on STRING with length LENGTH,
+ while the later two operate on concatenation of STRING1 and STRING2
+ with lengths LENGTH1 and LENGTH2, respectively.
+
+ re_match() matches the compiled pattern in BUFP against the string,
+ starting at index START.
+
+ re_search() first tries matching at index START, then it tries to match
+ starting from index START + 1, and so on. The last start position tried
+ is START + RANGE. (Thus RANGE = 0 forces re_search to operate the same
+ way as re_match().)
+
+ The parameter STOP of re_{match,search}_2 specifies that no match exceeding
+ the first STOP characters of the concatenation of the strings should be
+ concerned.
+
+ If REGS is not NULL, and BUFP->no_sub is not set, the offsets of the match
+ and all groups is stored in REGS. (For the "_2" variants, the offsets are
+ computed relative to the concatenation, not relative to the individual
+ strings.)
+
+ On success, re_match* functions return the length of the match, re_search*
+ return the position of the start of the match. Return value -1 means no
+ match was found and -2 indicates an internal error. */
+
+regoff_t
+re_match (bufp, string, length, start, regs)
+ struct re_pattern_buffer *bufp;
+ const char *string;
+ Idx length, start;
+ struct re_registers *regs;
+{
+ return re_search_stub (bufp, string, length, start, 0, length, regs, true);
+}
+#ifdef _LIBC
+weak_alias (__re_match, re_match)
+#endif
+
+regoff_t
+re_search (bufp, string, length, start, range, regs)
+ struct re_pattern_buffer *bufp;
+ const char *string;
+ Idx length, start;
+ regoff_t range;
+ struct re_registers *regs;
+{
+ return re_search_stub (bufp, string, length, start, range, length, regs,
+ false);
+}
+#ifdef _LIBC
+weak_alias (__re_search, re_search)
+#endif
+
+regoff_t
+re_match_2 (bufp, string1, length1, string2, length2, start, regs, stop)
+ struct re_pattern_buffer *bufp;
+ const char *string1, *string2;
+ Idx length1, length2, start, stop;
+ struct re_registers *regs;
+{
+ return re_search_2_stub (bufp, string1, length1, string2, length2,
+ start, 0, regs, stop, true);
+}
+#ifdef _LIBC
+weak_alias (__re_match_2, re_match_2)
+#endif
+
+regoff_t
+re_search_2 (bufp, string1, length1, string2, length2, start, range, regs, stop)
+ struct re_pattern_buffer *bufp;
+ const char *string1, *string2;
+ Idx length1, length2, start, stop;
+ regoff_t range;
+ struct re_registers *regs;
+{
+ return re_search_2_stub (bufp, string1, length1, string2, length2,
+ start, range, regs, stop, false);
+}
+#ifdef _LIBC
+weak_alias (__re_search_2, re_search_2)
+#endif
+
+static regoff_t
+internal_function
+re_search_2_stub (struct re_pattern_buffer *bufp,
+ const char *string1, Idx length1,
+ const char *string2, Idx length2,
+ Idx start, regoff_t range, struct re_registers *regs,
+ Idx stop, bool ret_len)
+{
+ const char *str;
+ regoff_t rval;
+ Idx len = length1 + length2;
+ char *s = NULL;
+
+ if (BE (length1 < 0 || length2 < 0 || stop < 0 || len < length1, 0))
+ return -2;
+
+ /* Concatenate the strings. */
+ if (length2 > 0)
+ if (length1 > 0)
+ {
+ s = re_malloc (char, len);
+
+ if (BE (s == NULL, 0))
+ return -2;
+#ifdef _LIBC
+ memcpy (__mempcpy (s, string1, length1), string2, length2);
+#else
+ memcpy (s, string1, length1);
+ memcpy (s + length1, string2, length2);
+#endif
+ str = s;
+ }
+ else
+ str = string2;
+ else
+ str = string1;
+
+ rval = re_search_stub (bufp, str, len, start, range, stop, regs,
+ ret_len);
+ re_free (s);
+ return rval;
+}
+
+/* The parameters have the same meaning as those of re_search.
+ Additional parameters:
+ If RET_LEN is true the length of the match is returned (re_match style);
+ otherwise the position of the match is returned. */
+
+static regoff_t
+internal_function
+re_search_stub (struct re_pattern_buffer *bufp,
+ const char *string, Idx length,
+ Idx start, regoff_t range, Idx stop, struct re_registers *regs,
+ bool ret_len)
+{
+ reg_errcode_t result;
+ regmatch_t *pmatch;
+ Idx nregs;
+ regoff_t rval;
+ int eflags = 0;
+#ifdef _LIBC
+ re_dfa_t *dfa = (re_dfa_t *) bufp->buffer;
+#endif
+ Idx last_start = start + range;
+
+ /* Check for out-of-range. */
+ if (BE (start < 0 || start > length, 0))
+ return -1;
+ if (BE (length < last_start || (0 <= range && last_start < start), 0))
+ last_start = length;
+ else if (BE (last_start < 0 || (range < 0 && start <= last_start), 0))
+ last_start = 0;
+
+ __libc_lock_lock (dfa->lock);
+
+ eflags |= (bufp->not_bol) ? REG_NOTBOL : 0;
+ eflags |= (bufp->not_eol) ? REG_NOTEOL : 0;
+
+ /* Compile fastmap if we haven't yet. */
+ if (start < last_start && bufp->fastmap != NULL && !bufp->fastmap_accurate)
+ re_compile_fastmap (bufp);
+
+ if (BE (bufp->no_sub, 0))
+ regs = NULL;
+
+ /* We need at least 1 register. */
+ if (regs == NULL)
+ nregs = 1;
+ else if (BE (bufp->regs_allocated == REGS_FIXED
+ && regs->num_regs <= bufp->re_nsub, 0))
+ {
+ nregs = regs->num_regs;
+ if (BE (nregs < 1, 0))
+ {
+ /* Nothing can be copied to regs. */
+ regs = NULL;
+ nregs = 1;
+ }
+ }
+ else
+ nregs = bufp->re_nsub + 1;
+ pmatch = re_malloc (regmatch_t, nregs);
+ if (BE (pmatch == NULL, 0))
+ {
+ rval = -2;
+ goto out;
+ }
+
+ result = re_search_internal (bufp, string, length, start, last_start, stop,
+ nregs, pmatch, eflags);
+
+ rval = 0;
+
+ /* I hope we needn't fill ther regs with -1's when no match was found. */
+ if (result != REG_NOERROR)
+ rval = -1;
+ else if (regs != NULL)
+ {
+ /* If caller wants register contents data back, copy them. */
+ bufp->regs_allocated = re_copy_regs (regs, pmatch, nregs,
+ bufp->regs_allocated);
+ if (BE (bufp->regs_allocated == REGS_UNALLOCATED, 0))
+ rval = -2;
+ }
+
+ if (BE (rval == 0, 1))
+ {
+ if (ret_len)
+ {
+ assert (pmatch[0].rm_so == start);
+ rval = pmatch[0].rm_eo - start;
+ }
+ else
+ rval = pmatch[0].rm_so;
+ }
+ re_free (pmatch);
+ out:
+ __libc_lock_unlock (dfa->lock);
+ return rval;
+}
+
+static unsigned int
+internal_function
+re_copy_regs (struct re_registers *regs, regmatch_t *pmatch, Idx nregs,
+ int regs_allocated)
+{
+ int rval = REGS_REALLOCATE;
+ Idx i;
+ Idx need_regs = nregs + 1;
+ /* We need one extra element beyond `num_regs' for the `-1' marker GNU code
+ uses. */
+
+ /* Have the register data arrays been allocated? */
+ if (regs_allocated == REGS_UNALLOCATED)
+ { /* No. So allocate them with malloc. */
+ regs->start = re_malloc (regoff_t, need_regs);
+ if (BE (regs->start == NULL, 0))
+ return REGS_UNALLOCATED;
+ regs->end = re_malloc (regoff_t, need_regs);
+ if (BE (regs->end == NULL, 0))
+ {
+ re_free (regs->start);
+ return REGS_UNALLOCATED;
+ }
+ regs->num_regs = need_regs;
+ }
+ else if (regs_allocated == REGS_REALLOCATE)
+ { /* Yes. If we need more elements than were already
+ allocated, reallocate them. If we need fewer, just
+ leave it alone. */
+ if (BE (need_regs > regs->num_regs, 0))
+ {
+ regoff_t *new_start = re_realloc (regs->start, regoff_t, need_regs);
+ regoff_t *new_end;
+ if (BE (new_start == NULL, 0))
+ return REGS_UNALLOCATED;
+ new_end = re_realloc (regs->end, regoff_t, need_regs);
+ if (BE (new_end == NULL, 0))
+ {
+ re_free (new_start);
+ return REGS_UNALLOCATED;
+ }
+ regs->start = new_start;
+ regs->end = new_end;
+ regs->num_regs = need_regs;
+ }
+ }
+ else
+ {
+ assert (regs_allocated == REGS_FIXED);
+ /* This function may not be called with REGS_FIXED and nregs too big. */
+ assert (regs->num_regs >= nregs);
+ rval = REGS_FIXED;
+ }
+
+ /* Copy the regs. */
+ for (i = 0; i < nregs; ++i)
+ {
+ regs->start[i] = pmatch[i].rm_so;
+ regs->end[i] = pmatch[i].rm_eo;
+ }
+ for ( ; i < regs->num_regs; ++i)
+ regs->start[i] = regs->end[i] = -1;
+
+ return rval;
+}
+
+/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
+ ENDS. Subsequent matches using PATTERN_BUFFER and REGS will use
+ this memory for recording register information. STARTS and ENDS
+ must be allocated using the malloc library routine, and must each
+ be at least NUM_REGS * sizeof (regoff_t) bytes long.
+
+ If NUM_REGS == 0, then subsequent matches should allocate their own
+ register data.
+
+ Unless this function is called, the first search or match using
+ PATTERN_BUFFER will allocate its own register data, without
+ freeing the old data. */
+
+void
+re_set_registers (bufp, regs, num_regs, starts, ends)
+ struct re_pattern_buffer *bufp;
+ struct re_registers *regs;
+ __re_size_t num_regs;
+ regoff_t *starts, *ends;
+{
+ if (num_regs)
+ {
+ bufp->regs_allocated = REGS_REALLOCATE;
+ regs->num_regs = num_regs;
+ regs->start = starts;
+ regs->end = ends;
+ }
+ else
+ {
+ bufp->regs_allocated = REGS_UNALLOCATED;
+ regs->num_regs = 0;
+ regs->start = regs->end = NULL;
+ }
+}
+#ifdef _LIBC
+weak_alias (__re_set_registers, re_set_registers)
+#endif
+
+/* Entry points compatible with 4.2 BSD regex library. We don't define
+ them unless specifically requested. */
+
+#if defined _REGEX_RE_COMP || defined _LIBC
+int
+# ifdef _LIBC
+weak_function
+# endif
+re_exec (s)
+ const char *s;
+{
+ return 0 == regexec (&re_comp_buf, s, 0, NULL, 0);
+}
+#endif /* _REGEX_RE_COMP */
+
+/* Internal entry point. */
+
+/* Searches for a compiled pattern PREG in the string STRING, whose
+ length is LENGTH. NMATCH, PMATCH, and EFLAGS have the same
+ meaning as with regexec. LAST_START is START + RANGE, where
+ START and RANGE have the same meaning as with re_search.
+ Return REG_NOERROR if we find a match, and REG_NOMATCH if not,
+ otherwise return the error code.
+ Note: We assume front end functions already check ranges.
+ (0 <= LAST_START && LAST_START <= LENGTH) */
+
+static reg_errcode_t
+internal_function
+re_search_internal (const regex_t *preg,
+ const char *string, Idx length,
+ Idx start, Idx last_start, Idx stop,
+ size_t nmatch, regmatch_t pmatch[],
+ int eflags)
+{
+ reg_errcode_t err;
+ const re_dfa_t *dfa = (const re_dfa_t *) preg->buffer;
+ Idx left_lim, right_lim;
+ int incr;
+ bool fl_longest_match;
+ int match_kind;
+ Idx match_first;
+ Idx match_last = REG_MISSING;
+ Idx extra_nmatch;
+ bool sb;
+ int ch;
+#if defined _LIBC || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
+ re_match_context_t mctx = { .dfa = dfa };
+#else
+ re_match_context_t mctx;
+#endif
+ char *fastmap = ((preg->fastmap != NULL && preg->fastmap_accurate
+ && start != last_start && !preg->can_be_null)
+ ? preg->fastmap : NULL);
+ RE_TRANSLATE_TYPE t = preg->translate;
+
+#if !(defined _LIBC || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L))
+ memset (&mctx, '\0', sizeof (re_match_context_t));
+ mctx.dfa = dfa;
+#endif
+
+ extra_nmatch = (nmatch > preg->re_nsub) ? nmatch - (preg->re_nsub + 1) : 0;
+ nmatch -= extra_nmatch;
+
+ /* Check if the DFA haven't been compiled. */
+ if (BE (preg->used == 0 || dfa->init_state == NULL
+ || dfa->init_state_word == NULL || dfa->init_state_nl == NULL
+ || dfa->init_state_begbuf == NULL, 0))
+ return REG_NOMATCH;
+
+#ifdef DEBUG
+ /* We assume front-end functions already check them. */
+ assert (0 <= last_start && last_start <= length);
+#endif
+
+ /* If initial states with non-begbuf contexts have no elements,
+ the regex must be anchored. If preg->newline_anchor is set,
+ we'll never use init_state_nl, so do not check it. */
+ if (dfa->init_state->nodes.nelem == 0
+ && dfa->init_state_word->nodes.nelem == 0
+ && (dfa->init_state_nl->nodes.nelem == 0
+ || !preg->newline_anchor))
+ {
+ if (start != 0 && last_start != 0)
+ return REG_NOMATCH;
+ start = last_start = 0;
+ }
+
+ /* We must check the longest matching, if nmatch > 0. */
+ fl_longest_match = (nmatch != 0 || dfa->nbackref);
+
+ err = re_string_allocate (&mctx.input, string, length, dfa->nodes_len + 1,
+ preg->translate, preg->syntax & RE_ICASE, dfa);
+ if (BE (err != REG_NOERROR, 0))
+ goto free_return;
+ mctx.input.stop = stop;
+ mctx.input.raw_stop = stop;
+ mctx.input.newline_anchor = preg->newline_anchor;
+
+ err = match_ctx_init (&mctx, eflags, dfa->nbackref * 2);
+ if (BE (err != REG_NOERROR, 0))
+ goto free_return;
+
+ /* We will log all the DFA states through which the dfa pass,
+ if nmatch > 1, or this dfa has "multibyte node", which is a
+ back-reference or a node which can accept multibyte character or
+ multi character collating element. */
+ if (nmatch > 1 || dfa->has_mb_node)
+ {
+ /* Avoid overflow. */
+ if (BE (SIZE_MAX / sizeof (re_dfastate_t *) <= mctx.input.bufs_len, 0))
+ {
+ err = REG_ESPACE;
+ goto free_return;
+ }
+
+ mctx.state_log = re_malloc (re_dfastate_t *, mctx.input.bufs_len + 1);
+ if (BE (mctx.state_log == NULL, 0))
+ {
+ err = REG_ESPACE;
+ goto free_return;
+ }
+ }
+ else
+ mctx.state_log = NULL;
+
+ match_first = start;
+ mctx.input.tip_context = (eflags & REG_NOTBOL) ? CONTEXT_BEGBUF
+ : CONTEXT_NEWLINE | CONTEXT_BEGBUF;
+
+ /* Check incrementally whether of not the input string match. */
+ incr = (last_start < start) ? -1 : 1;
+ left_lim = (last_start < start) ? last_start : start;
+ right_lim = (last_start < start) ? start : last_start;
+ sb = dfa->mb_cur_max == 1;
+ match_kind =
+ (fastmap
+ ? ((sb || !(preg->syntax & RE_ICASE || t) ? 4 : 0)
+ | (start <= last_start ? 2 : 0)
+ | (t != NULL ? 1 : 0))
+ : 8);
+
+ for (;; match_first += incr)
+ {
+ err = REG_NOMATCH;
+ if (match_first < left_lim || right_lim < match_first)
+ goto free_return;
+
+ /* Advance as rapidly as possible through the string, until we
+ find a plausible place to start matching. This may be done
+ with varying efficiency, so there are various possibilities:
+ only the most common of them are specialized, in order to
+ save on code size. We use a switch statement for speed. */
+ switch (match_kind)
+ {
+ case 8:
+ /* No fastmap. */
+ break;
+
+ case 7:
+ /* Fastmap with single-byte translation, match forward. */
+ while (BE (match_first < right_lim, 1)
+ && !fastmap[t[(unsigned char) string[match_first]]])
+ ++match_first;
+ goto forward_match_found_start_or_reached_end;
+
+ case 6:
+ /* Fastmap without translation, match forward. */
+ while (BE (match_first < right_lim, 1)
+ && !fastmap[(unsigned char) string[match_first]])
+ ++match_first;
+
+ forward_match_found_start_or_reached_end:
+ if (BE (match_first == right_lim, 0))
+ {
+ ch = match_first >= length
+ ? 0 : (unsigned char) string[match_first];
+ if (!fastmap[t ? t[ch] : ch])
+ goto free_return;
+ }
+ break;
+
+ case 4:
+ case 5:
+ /* Fastmap without multi-byte translation, match backwards. */
+ while (match_first >= left_lim)
+ {
+ ch = match_first >= length
+ ? 0 : (unsigned char) string[match_first];
+ if (fastmap[t ? t[ch] : ch])
+ break;
+ --match_first;
+ }
+ if (match_first < left_lim)
+ goto free_return;
+ break;
+
+ default:
+ /* In this case, we can't determine easily the current byte,
+ since it might be a component byte of a multibyte
+ character. Then we use the constructed buffer instead. */
+ for (;;)
+ {
+ /* If MATCH_FIRST is out of the valid range, reconstruct the
+ buffers. */
+ __re_size_t offset = match_first - mctx.input.raw_mbs_idx;
+ if (BE (offset >= (__re_size_t) mctx.input.valid_raw_len, 0))
+ {
+ err = re_string_reconstruct (&mctx.input, match_first,
+ eflags);
+ if (BE (err != REG_NOERROR, 0))
+ goto free_return;
+
+ offset = match_first - mctx.input.raw_mbs_idx;
+ }
+ /* If MATCH_FIRST is out of the buffer, leave it as '\0'.
+ Note that MATCH_FIRST must not be smaller than 0. */
+ ch = (match_first >= length
+ ? 0 : re_string_byte_at (&mctx.input, offset));
+ if (fastmap[ch])
+ break;
+ match_first += incr;
+ if (match_first < left_lim || match_first > right_lim)
+ {
+ err = REG_NOMATCH;
+ goto free_return;
+ }
+ }
+ break;
+ }
+
+ /* Reconstruct the buffers so that the matcher can assume that
+ the matching starts from the beginning of the buffer. */
+ err = re_string_reconstruct (&mctx.input, match_first, eflags);
+ if (BE (err != REG_NOERROR, 0))
+ goto free_return;
+
+#ifdef RE_ENABLE_I18N
+ /* Don't consider this char as a possible match start if it part,
+ yet isn't the head, of a multibyte character. */
+ if (!sb && !re_string_first_byte (&mctx.input, 0))
+ continue;
+#endif
+
+ /* It seems to be appropriate one, then use the matcher. */
+ /* We assume that the matching starts from 0. */
+ mctx.state_log_top = mctx.nbkref_ents = mctx.max_mb_elem_len = 0;
+ match_last = check_matching (&mctx, fl_longest_match,
+ start <= last_start ? &match_first : NULL);
+ if (match_last != REG_MISSING)
+ {
+ if (BE (match_last == REG_ERROR, 0))
+ {
+ err = REG_ESPACE;
+ goto free_return;
+ }
+ else
+ {
+ mctx.match_last = match_last;
+ if ((!preg->no_sub && nmatch > 1) || dfa->nbackref)
+ {
+ re_dfastate_t *pstate = mctx.state_log[match_last];
+ mctx.last_node = check_halt_state_context (&mctx, pstate,
+ match_last);
+ }
+ if ((!preg->no_sub && nmatch > 1 && dfa->has_plural_match)
+ || dfa->nbackref)
+ {
+ err = prune_impossible_nodes (&mctx);
+ if (err == REG_NOERROR)
+ break;
+ if (BE (err != REG_NOMATCH, 0))
+ goto free_return;
+ match_last = REG_MISSING;
+ }
+ else
+ break; /* We found a match. */
+ }
+ }
+
+ match_ctx_clean (&mctx);
+ }
+
+#ifdef DEBUG
+ assert (match_last != REG_MISSING);
+ assert (err == REG_NOERROR);
+#endif
+
+ /* Set pmatch[] if we need. */
+ if (nmatch > 0)
+ {
+ Idx reg_idx;
+
+ /* Initialize registers. */
+ for (reg_idx = 1; reg_idx < nmatch; ++reg_idx)
+ pmatch[reg_idx].rm_so = pmatch[reg_idx].rm_eo = -1;
+
+ /* Set the points where matching start/end. */
+ pmatch[0].rm_so = 0;
+ pmatch[0].rm_eo = mctx.match_last;
+ /* FIXME: This function should fail if mctx.match_last exceeds
+ the maximum possible regoff_t value. We need a new error
+ code REG_OVERFLOW. */
+
+ if (!preg->no_sub && nmatch > 1)
+ {
+ err = set_regs (preg, &mctx, nmatch, pmatch,
+ dfa->has_plural_match && dfa->nbackref > 0);
+ if (BE (err != REG_NOERROR, 0))
+ goto free_return;
+ }
+
+ /* At last, add the offset to the each registers, since we slided
+ the buffers so that we could assume that the matching starts
+ from 0. */
+ for (reg_idx = 0; reg_idx < nmatch; ++reg_idx)
+ if (pmatch[reg_idx].rm_so != -1)
+ {
+#ifdef RE_ENABLE_I18N
+ if (BE (mctx.input.offsets_needed != 0, 0))
+ {
+ pmatch[reg_idx].rm_so =
+ (pmatch[reg_idx].rm_so == mctx.input.valid_len
+ ? mctx.input.valid_raw_len
+ : mctx.input.offsets[pmatch[reg_idx].rm_so]);
+ pmatch[reg_idx].rm_eo =
+ (pmatch[reg_idx].rm_eo == mctx.input.valid_len
+ ? mctx.input.valid_raw_len
+ : mctx.input.offsets[pmatch[reg_idx].rm_eo]);
+ }
+#else
+ assert (mctx.input.offsets_needed == 0);
+#endif
+ pmatch[reg_idx].rm_so += match_first;
+ pmatch[reg_idx].rm_eo += match_first;
+ }
+ for (reg_idx = 0; reg_idx < extra_nmatch; ++reg_idx)
+ {
+ pmatch[nmatch + reg_idx].rm_so = -1;
+ pmatch[nmatch + reg_idx].rm_eo = -1;
+ }
+
+ if (dfa->subexp_map)
+ for (reg_idx = 0; reg_idx + 1 < nmatch; reg_idx++)
+ if (dfa->subexp_map[reg_idx] != reg_idx)
+ {
+ pmatch[reg_idx + 1].rm_so
+ = pmatch[dfa->subexp_map[reg_idx] + 1].rm_so;
+ pmatch[reg_idx + 1].rm_eo
+ = pmatch[dfa->subexp_map[reg_idx] + 1].rm_eo;
+ }
+ }
+
+ free_return:
+ re_free (mctx.state_log);
+ if (dfa->nbackref)
+ match_ctx_free (&mctx);
+ re_string_destruct (&mctx.input);
+ return err;
+}
+
+static reg_errcode_t
+internal_function
+prune_impossible_nodes (re_match_context_t *mctx)
+{
+ const re_dfa_t *const dfa = mctx->dfa;
+ Idx halt_node, match_last;
+ reg_errcode_t ret;
+ re_dfastate_t **sifted_states;
+ re_dfastate_t **lim_states = NULL;
+ re_sift_context_t sctx;
+#ifdef DEBUG
+ assert (mctx->state_log != NULL);
+#endif
+ match_last = mctx->match_last;
+ halt_node = mctx->last_node;
+
+ /* Avoid overflow. */
+ if (BE (SIZE_MAX / sizeof (re_dfastate_t *) <= match_last, 0))
+ return REG_ESPACE;
+
+ sifted_states = re_malloc (re_dfastate_t *, match_last + 1);
+ if (BE (sifted_states == NULL, 0))
+ {
+ ret = REG_ESPACE;
+ goto free_return;
+ }
+ if (dfa->nbackref)
+ {
+ lim_states = re_malloc (re_dfastate_t *, match_last + 1);
+ if (BE (lim_states == NULL, 0))
+ {
+ ret = REG_ESPACE;
+ goto free_return;
+ }
+ while (1)
+ {
+ memset (lim_states, '\0',
+ sizeof (re_dfastate_t *) * (match_last + 1));
+ sift_ctx_init (&sctx, sifted_states, lim_states, halt_node,
+ match_last);
+ ret = sift_states_backward (mctx, &sctx);
+ re_node_set_free (&sctx.limits);
+ if (BE (ret != REG_NOERROR, 0))
+ goto free_return;
+ if (sifted_states[0] != NULL || lim_states[0] != NULL)
+ break;
+ do
+ {
+ --match_last;
+ if (! REG_VALID_INDEX (match_last))
+ {
+ ret = REG_NOMATCH;
+ goto free_return;
+ }
+ } while (mctx->state_log[match_last] == NULL
+ || !mctx->state_log[match_last]->halt);
+ halt_node = check_halt_state_context (mctx,
+ mctx->state_log[match_last],
+ match_last);
+ }
+ ret = merge_state_array (dfa, sifted_states, lim_states,
+ match_last + 1);
+ re_free (lim_states);
+ lim_states = NULL;
+ if (BE (ret != REG_NOERROR, 0))
+ goto free_return;
+ }
+ else
+ {
+ sift_ctx_init (&sctx, sifted_states, lim_states, halt_node, match_last);
+ ret = sift_states_backward (mctx, &sctx);
+ re_node_set_free (&sctx.limits);
+ if (BE (ret != REG_NOERROR, 0))
+ goto free_return;
+ }
+ re_free (mctx->state_log);
+ mctx->state_log = sifted_states;
+ sifted_states = NULL;
+ mctx->last_node = halt_node;
+ mctx->match_last = match_last;
+ ret = REG_NOERROR;
+ free_return:
+ re_free (sifted_states);
+ re_free (lim_states);
+ return ret;
+}
+
+/* Acquire an initial state and return it.
+ We must select appropriate initial state depending on the context,
+ since initial states may have constraints like "\<", "^", etc.. */
+
+static inline re_dfastate_t *
+__attribute ((always_inline)) internal_function
+acquire_init_state_context (reg_errcode_t *err, const re_match_context_t *mctx,
+ Idx idx)
+{
+ const re_dfa_t *const dfa = mctx->dfa;
+ if (dfa->init_state->has_constraint)
+ {
+ unsigned int context;
+ context = re_string_context_at (&mctx->input, idx - 1, mctx->eflags);
+ if (IS_WORD_CONTEXT (context))
+ return dfa->init_state_word;
+ else if (IS_ORDINARY_CONTEXT (context))
+ return dfa->init_state;
+ else if (IS_BEGBUF_CONTEXT (context) && IS_NEWLINE_CONTEXT (context))
+ return dfa->init_state_begbuf;
+ else if (IS_NEWLINE_CONTEXT (context))
+ return dfa->init_state_nl;
+ else if (IS_BEGBUF_CONTEXT (context))
+ {
+ /* It is relatively rare case, then calculate on demand. */
+ return re_acquire_state_context (err, dfa,
+ dfa->init_state->entrance_nodes,
+ context);
+ }
+ else
+ /* Must not happen? */
+ return dfa->init_state;
+ }
+ else
+ return dfa->init_state;
+}
+
+/* Check whether the regular expression match input string INPUT or not,
+ and return the index where the matching end. Return REG_MISSING if
+ there is no match, and return REG_ERROR in case of an error.
+ FL_LONGEST_MATCH means we want the POSIX longest matching.
+ If P_MATCH_FIRST is not NULL, and the match fails, it is set to the
+ next place where we may want to try matching.
+ Note that the matcher assume that the maching starts from the current
+ index of the buffer. */
+
+static Idx
+internal_function
+check_matching (re_match_context_t *mctx, bool fl_longest_match,
+ Idx *p_match_first)
+{
+ const re_dfa_t *const dfa = mctx->dfa;
+ reg_errcode_t err;
+ Idx match = 0;
+ Idx match_last = REG_MISSING;
+ Idx cur_str_idx = re_string_cur_idx (&mctx->input);
+ re_dfastate_t *cur_state;
+ bool at_init_state = p_match_first != NULL;
+ Idx next_start_idx = cur_str_idx;
+
+ err = REG_NOERROR;
+ cur_state = acquire_init_state_context (&err, mctx, cur_str_idx);
+ /* An initial state must not be NULL (invalid). */
+ if (BE (cur_state == NULL, 0))
+ {
+ assert (err == REG_ESPACE);
+ return REG_ERROR;
+ }
+
+ if (mctx->state_log != NULL)
+ {
+ mctx->state_log[cur_str_idx] = cur_state;
+
+ /* Check OP_OPEN_SUBEXP in the initial state in case that we use them
+ later. E.g. Processing back references. */
+ if (BE (dfa->nbackref, 0))
+ {
+ at_init_state = false;
+ err = check_subexp_matching_top (mctx, &cur_state->nodes, 0);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+
+ if (cur_state->has_backref)
+ {
+ err = transit_state_bkref (mctx, &cur_state->nodes);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ }
+ }
+ }
+
+ /* If the RE accepts NULL string. */
+ if (BE (cur_state->halt, 0))
+ {
+ if (!cur_state->has_constraint
+ || check_halt_state_context (mctx, cur_state, cur_str_idx))
+ {
+ if (!fl_longest_match)
+ return cur_str_idx;
+ else
+ {
+ match_last = cur_str_idx;
+ match = 1;
+ }
+ }
+ }
+
+ while (!re_string_eoi (&mctx->input))
+ {
+ re_dfastate_t *old_state = cur_state;
+ Idx next_char_idx = re_string_cur_idx (&mctx->input) + 1;
+
+ if (BE (next_char_idx >= mctx->input.bufs_len, 0)
+ || (BE (next_char_idx >= mctx->input.valid_len, 0)
+ && mctx->input.valid_len < mctx->input.len))
+ {
+ err = extend_buffers (mctx);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ assert (err == REG_ESPACE);
+ return REG_ERROR;
+ }
+ }
+
+ cur_state = transit_state (&err, mctx, cur_state);
+ if (mctx->state_log != NULL)
+ cur_state = merge_state_with_log (&err, mctx, cur_state);
+
+ if (cur_state == NULL)
+ {
+ /* Reached the invalid state or an error. Try to recover a valid
+ state using the state log, if available and if we have not
+ already found a valid (even if not the longest) match. */
+ if (BE (err != REG_NOERROR, 0))
+ return REG_ERROR;
+
+ if (mctx->state_log == NULL
+ || (match && !fl_longest_match)
+ || (cur_state = find_recover_state (&err, mctx)) == NULL)
+ break;
+ }
+
+ if (BE (at_init_state, 0))
+ {
+ if (old_state == cur_state)
+ next_start_idx = next_char_idx;
+ else
+ at_init_state = false;
+ }
+
+ if (cur_state->halt)
+ {
+ /* Reached a halt state.
+ Check the halt state can satisfy the current context. */
+ if (!cur_state->has_constraint
+ || check_halt_state_context (mctx, cur_state,
+ re_string_cur_idx (&mctx->input)))
+ {
+ /* We found an appropriate halt state. */
+ match_last = re_string_cur_idx (&mctx->input);
+ match = 1;
+
+ /* We found a match, do not modify match_first below. */
+ p_match_first = NULL;
+ if (!fl_longest_match)
+ break;
+ }
+ }
+ }
+
+ if (p_match_first)
+ *p_match_first += next_start_idx;
+
+ return match_last;
+}
+
+/* Check NODE match the current context. */
+
+static bool
+internal_function
+check_halt_node_context (const re_dfa_t *dfa, Idx node, unsigned int context)
+{
+ re_token_type_t type = dfa->nodes[node].type;
+ unsigned int constraint = dfa->nodes[node].constraint;
+ if (type != END_OF_RE)
+ return false;
+ if (!constraint)
+ return true;
+ if (NOT_SATISFY_NEXT_CONSTRAINT (constraint, context))
+ return false;
+ return true;
+}
+
+/* Check the halt state STATE match the current context.
+ Return 0 if not match, if the node, STATE has, is a halt node and
+ match the context, return the node. */
+
+static Idx
+internal_function
+check_halt_state_context (const re_match_context_t *mctx,
+ const re_dfastate_t *state, Idx idx)
+{
+ Idx i;
+ unsigned int context;
+#ifdef DEBUG
+ assert (state->halt);
+#endif
+ context = re_string_context_at (&mctx->input, idx, mctx->eflags);
+ for (i = 0; i < state->nodes.nelem; ++i)
+ if (check_halt_node_context (mctx->dfa, state->nodes.elems[i], context))
+ return state->nodes.elems[i];
+ return 0;
+}
+
+/* Compute the next node to which "NFA" transit from NODE("NFA" is a NFA
+ corresponding to the DFA).
+ Return the destination node, and update EPS_VIA_NODES;
+ return REG_MISSING in case of errors. */
+
+static Idx
+internal_function
+proceed_next_node (const re_match_context_t *mctx, Idx nregs, regmatch_t *regs,
+ Idx *pidx, Idx node, re_node_set *eps_via_nodes,
+ struct re_fail_stack_t *fs)
+{
+ const re_dfa_t *const dfa = mctx->dfa;
+ Idx i;
+ bool ok;
+ if (IS_EPSILON_NODE (dfa->nodes[node].type))
+ {
+ re_node_set *cur_nodes = &mctx->state_log[*pidx]->nodes;
+ re_node_set *edests = &dfa->edests[node];
+ Idx dest_node;
+ ok = re_node_set_insert (eps_via_nodes, node);
+ if (BE (! ok, 0))
+ return REG_ERROR;
+ /* Pick up a valid destination, or return REG_MISSING if none
+ is found. */
+ for (dest_node = REG_MISSING, i = 0; i < edests->nelem; ++i)
+ {
+ Idx candidate = edests->elems[i];
+ if (!re_node_set_contains (cur_nodes, candidate))
+ continue;
+ if (dest_node == REG_MISSING)
+ dest_node = candidate;
+
+ else
+ {
+ /* In order to avoid infinite loop like "(a*)*", return the second
+ epsilon-transition if the first was already considered. */
+ if (re_node_set_contains (eps_via_nodes, dest_node))
+ return candidate;
+
+ /* Otherwise, push the second epsilon-transition on the fail stack. */
+ else if (fs != NULL
+ && push_fail_stack (fs, *pidx, candidate, nregs, regs,
+ eps_via_nodes))
+ return REG_ERROR;
+
+ /* We know we are going to exit. */
+ break;
+ }
+ }
+ return dest_node;
+ }
+ else
+ {
+ Idx naccepted = 0;
+ re_token_type_t type = dfa->nodes[node].type;
+
+#ifdef RE_ENABLE_I18N
+ if (dfa->nodes[node].accept_mb)
+ naccepted = check_node_accept_bytes (dfa, node, &mctx->input, *pidx);
+ else
+#endif /* RE_ENABLE_I18N */
+ if (type == OP_BACK_REF)
+ {
+ Idx subexp_idx = dfa->nodes[node].opr.idx + 1;
+ naccepted = regs[subexp_idx].rm_eo - regs[subexp_idx].rm_so;
+ if (fs != NULL)
+ {
+ if (regs[subexp_idx].rm_so == -1 || regs[subexp_idx].rm_eo == -1)
+ return REG_MISSING;
+ else if (naccepted)
+ {
+ char *buf = (char *) re_string_get_buffer (&mctx->input);
+ if (memcmp (buf + regs[subexp_idx].rm_so, buf + *pidx,
+ naccepted) != 0)
+ return REG_MISSING;
+ }
+ }
+
+ if (naccepted == 0)
+ {
+ Idx dest_node;
+ ok = re_node_set_insert (eps_via_nodes, node);
+ if (BE (! ok, 0))
+ return REG_ERROR;
+ dest_node = dfa->edests[node].elems[0];
+ if (re_node_set_contains (&mctx->state_log[*pidx]->nodes,
+ dest_node))
+ return dest_node;
+ }
+ }
+
+ if (naccepted != 0
+ || check_node_accept (mctx, dfa->nodes + node, *pidx))
+ {
+ Idx dest_node = dfa->nexts[node];
+ *pidx = (naccepted == 0) ? *pidx + 1 : *pidx + naccepted;
+ if (fs && (*pidx > mctx->match_last || mctx->state_log[*pidx] == NULL
+ || !re_node_set_contains (&mctx->state_log[*pidx]->nodes,
+ dest_node)))
+ return REG_MISSING;
+ re_node_set_empty (eps_via_nodes);
+ return dest_node;
+ }
+ }
+ return REG_MISSING;
+}
+
+static reg_errcode_t
+internal_function
+push_fail_stack (struct re_fail_stack_t *fs, Idx str_idx, Idx dest_node,
+ Idx nregs, regmatch_t *regs, re_node_set *eps_via_nodes)
+{
+ reg_errcode_t err;
+ Idx num = fs->num++;
+ if (fs->num == fs->alloc)
+ {
+ struct re_fail_stack_ent_t *new_array;
+ new_array = realloc (fs->stack, (sizeof (struct re_fail_stack_ent_t)
+ * fs->alloc * 2));
+ if (new_array == NULL)
+ return REG_ESPACE;
+ fs->alloc *= 2;
+ fs->stack = new_array;
+ }
+ fs->stack[num].idx = str_idx;
+ fs->stack[num].node = dest_node;
+ fs->stack[num].regs = re_malloc (regmatch_t, nregs);
+ if (fs->stack[num].regs == NULL)
+ return REG_ESPACE;
+ memcpy (fs->stack[num].regs, regs, sizeof (regmatch_t) * nregs);
+ err = re_node_set_init_copy (&fs->stack[num].eps_via_nodes, eps_via_nodes);
+ return err;
+}
+
+static Idx
+internal_function
+pop_fail_stack (struct re_fail_stack_t *fs, Idx *pidx, Idx nregs,
+ regmatch_t *regs, re_node_set *eps_via_nodes)
+{
+ Idx num = --fs->num;
+ assert (REG_VALID_INDEX (num));
+ *pidx = fs->stack[num].idx;
+ memcpy (regs, fs->stack[num].regs, sizeof (regmatch_t) * nregs);
+ re_node_set_free (eps_via_nodes);
+ re_free (fs->stack[num].regs);
+ *eps_via_nodes = fs->stack[num].eps_via_nodes;
+ return fs->stack[num].node;
+}
+
+/* Set the positions where the subexpressions are starts/ends to registers
+ PMATCH.
+ Note: We assume that pmatch[0] is already set, and
+ pmatch[i].rm_so == pmatch[i].rm_eo == -1 for 0 < i < nmatch. */
+
+static reg_errcode_t
+internal_function
+set_regs (const regex_t *preg, const re_match_context_t *mctx, size_t nmatch,
+ regmatch_t *pmatch, bool fl_backtrack)
+{
+ const re_dfa_t *dfa = (const re_dfa_t *) preg->buffer;
+ Idx idx, cur_node;
+ re_node_set eps_via_nodes;
+ struct re_fail_stack_t *fs;
+ struct re_fail_stack_t fs_body = { 0, 2, NULL };
+ regmatch_t *prev_idx_match;
+ bool prev_idx_match_malloced = false;
+
+#ifdef DEBUG
+ assert (nmatch > 1);
+ assert (mctx->state_log != NULL);
+#endif
+ if (fl_backtrack)
+ {
+ fs = &fs_body;
+ fs->stack = re_malloc (struct re_fail_stack_ent_t, fs->alloc);
+ if (fs->stack == NULL)
+ return REG_ESPACE;
+ }
+ else
+ fs = NULL;
+
+ cur_node = dfa->init_node;
+ re_node_set_init_empty (&eps_via_nodes);
+
+ if (__libc_use_alloca (nmatch * sizeof (regmatch_t)))
+ prev_idx_match = (regmatch_t *) alloca (nmatch * sizeof (regmatch_t));
+ else
+ {
+ prev_idx_match = re_malloc (regmatch_t, nmatch);
+ if (prev_idx_match == NULL)
+ {
+ free_fail_stack_return (fs);
+ return REG_ESPACE;
+ }
+ prev_idx_match_malloced = true;
+ }
+ memcpy (prev_idx_match, pmatch, sizeof (regmatch_t) * nmatch);
+
+ for (idx = pmatch[0].rm_so; idx <= pmatch[0].rm_eo ;)
+ {
+ update_regs (dfa, pmatch, prev_idx_match, cur_node, idx, nmatch);
+
+ if (idx == pmatch[0].rm_eo && cur_node == mctx->last_node)
+ {
+ Idx reg_idx;
+ if (fs)
+ {
+ for (reg_idx = 0; reg_idx < nmatch; ++reg_idx)
+ if (pmatch[reg_idx].rm_so > -1 && pmatch[reg_idx].rm_eo == -1)
+ break;
+ if (reg_idx == nmatch)
+ {
+ re_node_set_free (&eps_via_nodes);
+ if (prev_idx_match_malloced)
+ re_free (prev_idx_match);
+ return free_fail_stack_return (fs);
+ }
+ cur_node = pop_fail_stack (fs, &idx, nmatch, pmatch,
+ &eps_via_nodes);
+ }
+ else
+ {
+ re_node_set_free (&eps_via_nodes);
+ if (prev_idx_match_malloced)
+ re_free (prev_idx_match);
+ return REG_NOERROR;
+ }
+ }
+
+ /* Proceed to next node. */
+ cur_node = proceed_next_node (mctx, nmatch, pmatch, &idx, cur_node,
+ &eps_via_nodes, fs);
+
+ if (BE (! REG_VALID_INDEX (cur_node), 0))
+ {
+ if (BE (cur_node == REG_ERROR, 0))
+ {
+ re_node_set_free (&eps_via_nodes);
+ if (prev_idx_match_malloced)
+ re_free (prev_idx_match);
+ free_fail_stack_return (fs);
+ return REG_ESPACE;
+ }
+ if (fs)
+ cur_node = pop_fail_stack (fs, &idx, nmatch, pmatch,
+ &eps_via_nodes);
+ else
+ {
+ re_node_set_free (&eps_via_nodes);
+ if (prev_idx_match_malloced)
+ re_free (prev_idx_match);
+ return REG_NOMATCH;
+ }
+ }
+ }
+ re_node_set_free (&eps_via_nodes);
+ if (prev_idx_match_malloced)
+ re_free (prev_idx_match);
+ return free_fail_stack_return (fs);
+}
+
+static reg_errcode_t
+internal_function
+free_fail_stack_return (struct re_fail_stack_t *fs)
+{
+ if (fs)
+ {
+ Idx fs_idx;
+ for (fs_idx = 0; fs_idx < fs->num; ++fs_idx)
+ {
+ re_node_set_free (&fs->stack[fs_idx].eps_via_nodes);
+ re_free (fs->stack[fs_idx].regs);
+ }
+ re_free (fs->stack);
+ }
+ return REG_NOERROR;
+}
+
+static void
+internal_function
+update_regs (const re_dfa_t *dfa, regmatch_t *pmatch,
+ regmatch_t *prev_idx_match, Idx cur_node, Idx cur_idx, Idx nmatch)
+{
+ int type = dfa->nodes[cur_node].type;
+ if (type == OP_OPEN_SUBEXP)
+ {
+ Idx reg_num = dfa->nodes[cur_node].opr.idx + 1;
+
+ /* We are at the first node of this sub expression. */
+ if (reg_num < nmatch)
+ {
+ pmatch[reg_num].rm_so = cur_idx;
+ pmatch[reg_num].rm_eo = -1;
+ }
+ }
+ else if (type == OP_CLOSE_SUBEXP)
+ {
+ Idx reg_num = dfa->nodes[cur_node].opr.idx + 1;
+ if (reg_num < nmatch)
+ {
+ /* We are at the last node of this sub expression. */
+ if (pmatch[reg_num].rm_so < cur_idx)
+ {
+ pmatch[reg_num].rm_eo = cur_idx;
+ /* This is a non-empty match or we are not inside an optional
+ subexpression. Accept this right away. */
+ memcpy (prev_idx_match, pmatch, sizeof (regmatch_t) * nmatch);
+ }
+ else
+ {
+ if (dfa->nodes[cur_node].opt_subexp
+ && prev_idx_match[reg_num].rm_so != -1)
+ /* We transited through an empty match for an optional
+ subexpression, like (a?)*, and this is not the subexp's
+ first match. Copy back the old content of the registers
+ so that matches of an inner subexpression are undone as
+ well, like in ((a?))*. */
+ memcpy (pmatch, prev_idx_match, sizeof (regmatch_t) * nmatch);
+ else
+ /* We completed a subexpression, but it may be part of
+ an optional one, so do not update PREV_IDX_MATCH. */
+ pmatch[reg_num].rm_eo = cur_idx;
+ }
+ }
+ }
+}
+
+/* This function checks the STATE_LOG from the SCTX->last_str_idx to 0
+ and sift the nodes in each states according to the following rules.
+ Updated state_log will be wrote to STATE_LOG.
+
+ Rules: We throw away the Node `a' in the STATE_LOG[STR_IDX] if...
+ 1. When STR_IDX == MATCH_LAST(the last index in the state_log):
+ If `a' isn't the LAST_NODE and `a' can't epsilon transit to
+ the LAST_NODE, we throw away the node `a'.
+ 2. When 0 <= STR_IDX < MATCH_LAST and `a' accepts
+ string `s' and transit to `b':
+ i. If 'b' isn't in the STATE_LOG[STR_IDX+strlen('s')], we throw
+ away the node `a'.
+ ii. If 'b' is in the STATE_LOG[STR_IDX+strlen('s')] but 'b' is
+ thrown away, we throw away the node `a'.
+ 3. When 0 <= STR_IDX < MATCH_LAST and 'a' epsilon transit to 'b':
+ i. If 'b' isn't in the STATE_LOG[STR_IDX], we throw away the
+ node `a'.
+ ii. If 'b' is in the STATE_LOG[STR_IDX] but 'b' is thrown away,
+ we throw away the node `a'. */
+
+#define STATE_NODE_CONTAINS(state,node) \
+ ((state) != NULL && re_node_set_contains (&(state)->nodes, node))
+
+static reg_errcode_t
+internal_function
+sift_states_backward (const re_match_context_t *mctx, re_sift_context_t *sctx)
+{
+ reg_errcode_t err;
+ int null_cnt = 0;
+ Idx str_idx = sctx->last_str_idx;
+ re_node_set cur_dest;
+
+#ifdef DEBUG
+ assert (mctx->state_log != NULL && mctx->state_log[str_idx] != NULL);
+#endif
+
+ /* Build sifted state_log[str_idx]. It has the nodes which can epsilon
+ transit to the last_node and the last_node itself. */
+ err = re_node_set_init_1 (&cur_dest, sctx->last_node);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ err = update_cur_sifted_state (mctx, sctx, str_idx, &cur_dest);
+ if (BE (err != REG_NOERROR, 0))
+ goto free_return;
+
+ /* Then check each states in the state_log. */
+ while (str_idx > 0)
+ {
+ /* Update counters. */
+ null_cnt = (sctx->sifted_states[str_idx] == NULL) ? null_cnt + 1 : 0;
+ if (null_cnt > mctx->max_mb_elem_len)
+ {
+ memset (sctx->sifted_states, '\0',
+ sizeof (re_dfastate_t *) * str_idx);
+ re_node_set_free (&cur_dest);
+ return REG_NOERROR;
+ }
+ re_node_set_empty (&cur_dest);
+ --str_idx;
+
+ if (mctx->state_log[str_idx])
+ {
+ err = build_sifted_states (mctx, sctx, str_idx, &cur_dest);
+ if (BE (err != REG_NOERROR, 0))
+ goto free_return;
+ }
+
+ /* Add all the nodes which satisfy the following conditions:
+ - It can epsilon transit to a node in CUR_DEST.
+ - It is in CUR_SRC.
+ And update state_log. */
+ err = update_cur_sifted_state (mctx, sctx, str_idx, &cur_dest);
+ if (BE (err != REG_NOERROR, 0))
+ goto free_return;
+ }
+ err = REG_NOERROR;
+ free_return:
+ re_node_set_free (&cur_dest);
+ return err;
+}
+
+static reg_errcode_t
+internal_function
+build_sifted_states (const re_match_context_t *mctx, re_sift_context_t *sctx,
+ Idx str_idx, re_node_set *cur_dest)
+{
+ const re_dfa_t *const dfa = mctx->dfa;
+ const re_node_set *cur_src = &mctx->state_log[str_idx]->non_eps_nodes;
+ Idx i;
+
+ /* Then build the next sifted state.
+ We build the next sifted state on `cur_dest', and update
+ `sifted_states[str_idx]' with `cur_dest'.
+ Note:
+ `cur_dest' is the sifted state from `state_log[str_idx + 1]'.
+ `cur_src' points the node_set of the old `state_log[str_idx]'
+ (with the epsilon nodes pre-filtered out). */
+ for (i = 0; i < cur_src->nelem; i++)
+ {
+ Idx prev_node = cur_src->elems[i];
+ int naccepted = 0;
+ bool ok;
+
+#ifdef DEBUG
+ re_token_type_t type = dfa->nodes[prev_node].type;
+ assert (!IS_EPSILON_NODE (type));
+#endif
+#ifdef RE_ENABLE_I18N
+ /* If the node may accept `multi byte'. */
+ if (dfa->nodes[prev_node].accept_mb)
+ naccepted = sift_states_iter_mb (mctx, sctx, prev_node,
+ str_idx, sctx->last_str_idx);
+#endif /* RE_ENABLE_I18N */
+
+ /* We don't check backreferences here.
+ See update_cur_sifted_state(). */
+ if (!naccepted
+ && check_node_accept (mctx, dfa->nodes + prev_node, str_idx)
+ && STATE_NODE_CONTAINS (sctx->sifted_states[str_idx + 1],
+ dfa->nexts[prev_node]))
+ naccepted = 1;
+
+ if (naccepted == 0)
+ continue;
+
+ if (sctx->limits.nelem)
+ {
+ Idx to_idx = str_idx + naccepted;
+ if (check_dst_limits (mctx, &sctx->limits,
+ dfa->nexts[prev_node], to_idx,
+ prev_node, str_idx))
+ continue;
+ }
+ ok = re_node_set_insert (cur_dest, prev_node);
+ if (BE (! ok, 0))
+ return REG_ESPACE;
+ }
+
+ return REG_NOERROR;
+}
+
+/* Helper functions. */
+
+static reg_errcode_t
+internal_function
+clean_state_log_if_needed (re_match_context_t *mctx, Idx next_state_log_idx)
+{
+ Idx top = mctx->state_log_top;
+
+ if (next_state_log_idx >= mctx->input.bufs_len
+ || (next_state_log_idx >= mctx->input.valid_len
+ && mctx->input.valid_len < mctx->input.len))
+ {
+ reg_errcode_t err;
+ err = extend_buffers (mctx);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ }
+
+ if (top < next_state_log_idx)
+ {
+ memset (mctx->state_log + top + 1, '\0',
+ sizeof (re_dfastate_t *) * (next_state_log_idx - top));
+ mctx->state_log_top = next_state_log_idx;
+ }
+ return REG_NOERROR;
+}
+
+static reg_errcode_t
+internal_function
+merge_state_array (const re_dfa_t *dfa, re_dfastate_t **dst,
+ re_dfastate_t **src, Idx num)
+{
+ Idx st_idx;
+ reg_errcode_t err;
+ for (st_idx = 0; st_idx < num; ++st_idx)
+ {
+ if (dst[st_idx] == NULL)
+ dst[st_idx] = src[st_idx];
+ else if (src[st_idx] != NULL)
+ {
+ re_node_set merged_set;
+ err = re_node_set_init_union (&merged_set, &dst[st_idx]->nodes,
+ &src[st_idx]->nodes);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ dst[st_idx] = re_acquire_state (&err, dfa, &merged_set);
+ re_node_set_free (&merged_set);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ }
+ }
+ return REG_NOERROR;
+}
+
+static reg_errcode_t
+internal_function
+update_cur_sifted_state (const re_match_context_t *mctx,
+ re_sift_context_t *sctx, Idx str_idx,
+ re_node_set *dest_nodes)
+{
+ const re_dfa_t *const dfa = mctx->dfa;
+ reg_errcode_t err = REG_NOERROR;
+ const re_node_set *candidates;
+ candidates = ((mctx->state_log[str_idx] == NULL) ? NULL
+ : &mctx->state_log[str_idx]->nodes);
+
+ if (dest_nodes->nelem == 0)
+ sctx->sifted_states[str_idx] = NULL;
+ else
+ {
+ if (candidates)
+ {
+ /* At first, add the nodes which can epsilon transit to a node in
+ DEST_NODE. */
+ err = add_epsilon_src_nodes (dfa, dest_nodes, candidates);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+
+ /* Then, check the limitations in the current sift_context. */
+ if (sctx->limits.nelem)
+ {
+ err = check_subexp_limits (dfa, dest_nodes, candidates, &sctx->limits,
+ mctx->bkref_ents, str_idx);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ }
+ }
+
+ sctx->sifted_states[str_idx] = re_acquire_state (&err, dfa, dest_nodes);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ }
+
+ if (candidates && mctx->state_log[str_idx]->has_backref)
+ {
+ err = sift_states_bkref (mctx, sctx, str_idx, candidates);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ }
+ return REG_NOERROR;
+}
+
+static reg_errcode_t
+internal_function
+add_epsilon_src_nodes (const re_dfa_t *dfa, re_node_set *dest_nodes,
+ const re_node_set *candidates)
+{
+ reg_errcode_t err = REG_NOERROR;
+ Idx i;
+
+ re_dfastate_t *state = re_acquire_state (&err, dfa, dest_nodes);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+
+ if (!state->inveclosure.alloc)
+ {
+ err = re_node_set_alloc (&state->inveclosure, dest_nodes->nelem);
+ if (BE (err != REG_NOERROR, 0))
+ return REG_ESPACE;
+ for (i = 0; i < dest_nodes->nelem; i++)
+ re_node_set_merge (&state->inveclosure,
+ dfa->inveclosures + dest_nodes->elems[i]);
+ }
+ return re_node_set_add_intersect (dest_nodes, candidates,
+ &state->inveclosure);
+}
+
+static reg_errcode_t
+internal_function
+sub_epsilon_src_nodes (const re_dfa_t *dfa, Idx node, re_node_set *dest_nodes,
+ const re_node_set *candidates)
+{
+ Idx ecl_idx;
+ reg_errcode_t err;
+ re_node_set *inv_eclosure = dfa->inveclosures + node;
+ re_node_set except_nodes;
+ re_node_set_init_empty (&except_nodes);
+ for (ecl_idx = 0; ecl_idx < inv_eclosure->nelem; ++ecl_idx)
+ {
+ Idx cur_node = inv_eclosure->elems[ecl_idx];
+ if (cur_node == node)
+ continue;
+ if (IS_EPSILON_NODE (dfa->nodes[cur_node].type))
+ {
+ Idx edst1 = dfa->edests[cur_node].elems[0];
+ Idx edst2 = ((dfa->edests[cur_node].nelem > 1)
+ ? dfa->edests[cur_node].elems[1] : REG_MISSING);
+ if ((!re_node_set_contains (inv_eclosure, edst1)
+ && re_node_set_contains (dest_nodes, edst1))
+ || (REG_VALID_NONZERO_INDEX (edst2)
+ && !re_node_set_contains (inv_eclosure, edst2)
+ && re_node_set_contains (dest_nodes, edst2)))
+ {
+ err = re_node_set_add_intersect (&except_nodes, candidates,
+ dfa->inveclosures + cur_node);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ re_node_set_free (&except_nodes);
+ return err;
+ }
+ }
+ }
+ }
+ for (ecl_idx = 0; ecl_idx < inv_eclosure->nelem; ++ecl_idx)
+ {
+ Idx cur_node = inv_eclosure->elems[ecl_idx];
+ if (!re_node_set_contains (&except_nodes, cur_node))
+ {
+ Idx idx = re_node_set_contains (dest_nodes, cur_node) - 1;
+ re_node_set_remove_at (dest_nodes, idx);
+ }
+ }
+ re_node_set_free (&except_nodes);
+ return REG_NOERROR;
+}
+
+static bool
+internal_function
+check_dst_limits (const re_match_context_t *mctx, const re_node_set *limits,
+ Idx dst_node, Idx dst_idx, Idx src_node, Idx src_idx)
+{
+ const re_dfa_t *const dfa = mctx->dfa;
+ Idx lim_idx, src_pos, dst_pos;
+
+ Idx dst_bkref_idx = search_cur_bkref_entry (mctx, dst_idx);
+ Idx src_bkref_idx = search_cur_bkref_entry (mctx, src_idx);
+ for (lim_idx = 0; lim_idx < limits->nelem; ++lim_idx)
+ {
+ Idx subexp_idx;
+ struct re_backref_cache_entry *ent;
+ ent = mctx->bkref_ents + limits->elems[lim_idx];
+ subexp_idx = dfa->nodes[ent->node].opr.idx;
+
+ dst_pos = check_dst_limits_calc_pos (mctx, limits->elems[lim_idx],
+ subexp_idx, dst_node, dst_idx,
+ dst_bkref_idx);
+ src_pos = check_dst_limits_calc_pos (mctx, limits->elems[lim_idx],
+ subexp_idx, src_node, src_idx,
+ src_bkref_idx);
+
+ /* In case of:
+ <src> <dst> ( <subexp> )
+ ( <subexp> ) <src> <dst>
+ ( <subexp1> <src> <subexp2> <dst> <subexp3> ) */
+ if (src_pos == dst_pos)
+ continue; /* This is unrelated limitation. */
+ else
+ return true;
+ }
+ return false;
+}
+
+static int
+internal_function
+check_dst_limits_calc_pos_1 (const re_match_context_t *mctx, int boundaries,
+ Idx subexp_idx, Idx from_node, Idx bkref_idx)
+{
+ const re_dfa_t *const dfa = mctx->dfa;
+ const re_node_set *eclosures = dfa->eclosures + from_node;
+ Idx node_idx;
+
+ /* Else, we are on the boundary: examine the nodes on the epsilon
+ closure. */
+ for (node_idx = 0; node_idx < eclosures->nelem; ++node_idx)
+ {
+ Idx node = eclosures->elems[node_idx];
+ switch (dfa->nodes[node].type)
+ {
+ case OP_BACK_REF:
+ if (bkref_idx != REG_MISSING)
+ {
+ struct re_backref_cache_entry *ent = mctx->bkref_ents + bkref_idx;
+ do
+ {
+ Idx dst;
+ int cpos;
+
+ if (ent->node != node)
+ continue;
+
+ if (subexp_idx < BITSET_WORD_BITS
+ && !(ent->eps_reachable_subexps_map
+ & ((bitset_word_t) 1 << subexp_idx)))
+ continue;
+
+ /* Recurse trying to reach the OP_OPEN_SUBEXP and
+ OP_CLOSE_SUBEXP cases below. But, if the
+ destination node is the same node as the source
+ node, don't recurse because it would cause an
+ infinite loop: a regex that exhibits this behavior
+ is ()\1*\1* */
+ dst = dfa->edests[node].elems[0];
+ if (dst == from_node)
+ {
+ if (boundaries & 1)
+ return -1;
+ else /* if (boundaries & 2) */
+ return 0;
+ }
+
+ cpos =
+ check_dst_limits_calc_pos_1 (mctx, boundaries, subexp_idx,
+ dst, bkref_idx);
+ if (cpos == -1 /* && (boundaries & 1) */)
+ return -1;
+ if (cpos == 0 && (boundaries & 2))
+ return 0;
+
+ if (subexp_idx < BITSET_WORD_BITS)
+ ent->eps_reachable_subexps_map
+ &= ~((bitset_word_t) 1 << subexp_idx);
+ }
+ while (ent++->more);
+ }
+ break;
+
+ case OP_OPEN_SUBEXP:
+ if ((boundaries & 1) && subexp_idx == dfa->nodes[node].opr.idx)
+ return -1;
+ break;
+
+ case OP_CLOSE_SUBEXP:
+ if ((boundaries & 2) && subexp_idx == dfa->nodes[node].opr.idx)
+ return 0;
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ return (boundaries & 2) ? 1 : 0;
+}
+
+static int
+internal_function
+check_dst_limits_calc_pos (const re_match_context_t *mctx, Idx limit,
+ Idx subexp_idx, Idx from_node, Idx str_idx,
+ Idx bkref_idx)
+{
+ struct re_backref_cache_entry *lim = mctx->bkref_ents + limit;
+ int boundaries;
+
+ /* If we are outside the range of the subexpression, return -1 or 1. */
+ if (str_idx < lim->subexp_from)
+ return -1;
+
+ if (lim->subexp_to < str_idx)
+ return 1;
+
+ /* If we are within the subexpression, return 0. */
+ boundaries = (str_idx == lim->subexp_from);
+ boundaries |= (str_idx == lim->subexp_to) << 1;
+ if (boundaries == 0)
+ return 0;
+
+ /* Else, examine epsilon closure. */
+ return check_dst_limits_calc_pos_1 (mctx, boundaries, subexp_idx,
+ from_node, bkref_idx);
+}
+
+/* Check the limitations of sub expressions LIMITS, and remove the nodes
+ which are against limitations from DEST_NODES. */
+
+static reg_errcode_t
+internal_function
+check_subexp_limits (const re_dfa_t *dfa, re_node_set *dest_nodes,
+ const re_node_set *candidates, re_node_set *limits,
+ struct re_backref_cache_entry *bkref_ents, Idx str_idx)
+{
+ reg_errcode_t err;
+ Idx node_idx, lim_idx;
+
+ for (lim_idx = 0; lim_idx < limits->nelem; ++lim_idx)
+ {
+ Idx subexp_idx;
+ struct re_backref_cache_entry *ent;
+ ent = bkref_ents + limits->elems[lim_idx];
+
+ if (str_idx <= ent->subexp_from || ent->str_idx < str_idx)
+ continue; /* This is unrelated limitation. */
+
+ subexp_idx = dfa->nodes[ent->node].opr.idx;
+ if (ent->subexp_to == str_idx)
+ {
+ Idx ops_node = REG_MISSING;
+ Idx cls_node = REG_MISSING;
+ for (node_idx = 0; node_idx < dest_nodes->nelem; ++node_idx)
+ {
+ Idx node = dest_nodes->elems[node_idx];
+ re_token_type_t type = dfa->nodes[node].type;
+ if (type == OP_OPEN_SUBEXP
+ && subexp_idx == dfa->nodes[node].opr.idx)
+ ops_node = node;
+ else if (type == OP_CLOSE_SUBEXP
+ && subexp_idx == dfa->nodes[node].opr.idx)
+ cls_node = node;
+ }
+
+ /* Check the limitation of the open subexpression. */
+ /* Note that (ent->subexp_to = str_idx != ent->subexp_from). */
+ if (REG_VALID_INDEX (ops_node))
+ {
+ err = sub_epsilon_src_nodes (dfa, ops_node, dest_nodes,
+ candidates);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ }
+
+ /* Check the limitation of the close subexpression. */
+ if (REG_VALID_INDEX (cls_node))
+ for (node_idx = 0; node_idx < dest_nodes->nelem; ++node_idx)
+ {
+ Idx node = dest_nodes->elems[node_idx];
+ if (!re_node_set_contains (dfa->inveclosures + node,
+ cls_node)
+ && !re_node_set_contains (dfa->eclosures + node,
+ cls_node))
+ {
+ /* It is against this limitation.
+ Remove it form the current sifted state. */
+ err = sub_epsilon_src_nodes (dfa, node, dest_nodes,
+ candidates);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ --node_idx;
+ }
+ }
+ }
+ else /* (ent->subexp_to != str_idx) */
+ {
+ for (node_idx = 0; node_idx < dest_nodes->nelem; ++node_idx)
+ {
+ Idx node = dest_nodes->elems[node_idx];
+ re_token_type_t type = dfa->nodes[node].type;
+ if (type == OP_CLOSE_SUBEXP || type == OP_OPEN_SUBEXP)
+ {
+ if (subexp_idx != dfa->nodes[node].opr.idx)
+ continue;
+ /* It is against this limitation.
+ Remove it form the current sifted state. */
+ err = sub_epsilon_src_nodes (dfa, node, dest_nodes,
+ candidates);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ }
+ }
+ }
+ }
+ return REG_NOERROR;
+}
+
+static reg_errcode_t
+internal_function
+sift_states_bkref (const re_match_context_t *mctx, re_sift_context_t *sctx,
+ Idx str_idx, const re_node_set *candidates)
+{
+ const re_dfa_t *const dfa = mctx->dfa;
+ reg_errcode_t err;
+ Idx node_idx, node;
+ re_sift_context_t local_sctx;
+ Idx first_idx = search_cur_bkref_entry (mctx, str_idx);
+
+ if (first_idx == REG_MISSING)
+ return REG_NOERROR;
+
+ local_sctx.sifted_states = NULL; /* Mark that it hasn't been initialized. */
+
+ for (node_idx = 0; node_idx < candidates->nelem; ++node_idx)
+ {
+ Idx enabled_idx;
+ re_token_type_t type;
+ struct re_backref_cache_entry *entry;
+ node = candidates->elems[node_idx];
+ type = dfa->nodes[node].type;
+ /* Avoid infinite loop for the REs like "()\1+". */
+ if (node == sctx->last_node && str_idx == sctx->last_str_idx)
+ continue;
+ if (type != OP_BACK_REF)
+ continue;
+
+ entry = mctx->bkref_ents + first_idx;
+ enabled_idx = first_idx;
+ do
+ {
+ Idx subexp_len;
+ Idx to_idx;
+ Idx dst_node;
+ bool ok;
+ re_dfastate_t *cur_state;
+
+ if (entry->node != node)
+ continue;
+ subexp_len = entry->subexp_to - entry->subexp_from;
+ to_idx = str_idx + subexp_len;
+ dst_node = (subexp_len ? dfa->nexts[node]
+ : dfa->edests[node].elems[0]);
+
+ if (to_idx > sctx->last_str_idx
+ || sctx->sifted_states[to_idx] == NULL
+ || !STATE_NODE_CONTAINS (sctx->sifted_states[to_idx], dst_node)
+ || check_dst_limits (mctx, &sctx->limits, node,
+ str_idx, dst_node, to_idx))
+ continue;
+
+ if (local_sctx.sifted_states == NULL)
+ {
+ local_sctx = *sctx;
+ err = re_node_set_init_copy (&local_sctx.limits, &sctx->limits);
+ if (BE (err != REG_NOERROR, 0))
+ goto free_return;
+ }
+ local_sctx.last_node = node;
+ local_sctx.last_str_idx = str_idx;
+ ok = re_node_set_insert (&local_sctx.limits, enabled_idx);
+ if (BE (! ok, 0))
+ {
+ err = REG_ESPACE;
+ goto free_return;
+ }
+ cur_state = local_sctx.sifted_states[str_idx];
+ err = sift_states_backward (mctx, &local_sctx);
+ if (BE (err != REG_NOERROR, 0))
+ goto free_return;
+ if (sctx->limited_states != NULL)
+ {
+ err = merge_state_array (dfa, sctx->limited_states,
+ local_sctx.sifted_states,
+ str_idx + 1);
+ if (BE (err != REG_NOERROR, 0))
+ goto free_return;
+ }
+ local_sctx.sifted_states[str_idx] = cur_state;
+ re_node_set_remove (&local_sctx.limits, enabled_idx);
+
+ /* mctx->bkref_ents may have changed, reload the pointer. */
+ entry = mctx->bkref_ents + enabled_idx;
+ }
+ while (enabled_idx++, entry++->more);
+ }
+ err = REG_NOERROR;
+ free_return:
+ if (local_sctx.sifted_states != NULL)
+ {
+ re_node_set_free (&local_sctx.limits);
+ }
+
+ return err;
+}
+
+
+#ifdef RE_ENABLE_I18N
+static int
+internal_function
+sift_states_iter_mb (const re_match_context_t *mctx, re_sift_context_t *sctx,
+ Idx node_idx, Idx str_idx, Idx max_str_idx)
+{
+ const re_dfa_t *const dfa = mctx->dfa;
+ int naccepted;
+ /* Check the node can accept `multi byte'. */
+ naccepted = check_node_accept_bytes (dfa, node_idx, &mctx->input, str_idx);
+ if (naccepted > 0 && str_idx + naccepted <= max_str_idx &&
+ !STATE_NODE_CONTAINS (sctx->sifted_states[str_idx + naccepted],
+ dfa->nexts[node_idx]))
+ /* The node can't accept the `multi byte', or the
+ destination was already thrown away, then the node
+ could't accept the current input `multi byte'. */
+ naccepted = 0;
+ /* Otherwise, it is sure that the node could accept
+ `naccepted' bytes input. */
+ return naccepted;
+}
+#endif /* RE_ENABLE_I18N */
+
+
+/* Functions for state transition. */
+
+/* Return the next state to which the current state STATE will transit by
+ accepting the current input byte, and update STATE_LOG if necessary.
+ If STATE can accept a multibyte char/collating element/back reference
+ update the destination of STATE_LOG. */
+
+static re_dfastate_t *
+internal_function
+transit_state (reg_errcode_t *err, re_match_context_t *mctx,
+ re_dfastate_t *state)
+{
+ re_dfastate_t **trtable;
+ unsigned char ch;
+
+#ifdef RE_ENABLE_I18N
+ /* If the current state can accept multibyte. */
+ if (BE (state->accept_mb, 0))
+ {
+ *err = transit_state_mb (mctx, state);
+ if (BE (*err != REG_NOERROR, 0))
+ return NULL;
+ }
+#endif /* RE_ENABLE_I18N */
+
+ /* Then decide the next state with the single byte. */
+#if 0
+ if (0)
+ /* don't use transition table */
+ return transit_state_sb (err, mctx, state);
+#endif
+
+ /* Use transition table */
+ ch = re_string_fetch_byte (&mctx->input);
+ for (;;)
+ {
+ trtable = state->trtable;
+ if (BE (trtable != NULL, 1))
+ return trtable[ch];
+
+ trtable = state->word_trtable;
+ if (BE (trtable != NULL, 1))
+ {
+ unsigned int context;
+ context
+ = re_string_context_at (&mctx->input,
+ re_string_cur_idx (&mctx->input) - 1,
+ mctx->eflags);
+ if (IS_WORD_CONTEXT (context))
+ return trtable[ch + SBC_MAX];
+ else
+ return trtable[ch];
+ }
+
+ if (!build_trtable (mctx->dfa, state))
+ {
+ *err = REG_ESPACE;
+ return NULL;
+ }
+
+ /* Retry, we now have a transition table. */
+ }
+}
+
+/* Update the state_log if we need */
+re_dfastate_t *
+internal_function
+merge_state_with_log (reg_errcode_t *err, re_match_context_t *mctx,
+ re_dfastate_t *next_state)
+{
+ const re_dfa_t *const dfa = mctx->dfa;
+ Idx cur_idx = re_string_cur_idx (&mctx->input);
+
+ if (cur_idx > mctx->state_log_top)
+ {
+ mctx->state_log[cur_idx] = next_state;
+ mctx->state_log_top = cur_idx;
+ }
+ else if (mctx->state_log[cur_idx] == 0)
+ {
+ mctx->state_log[cur_idx] = next_state;
+ }
+ else
+ {
+ re_dfastate_t *pstate;
+ unsigned int context;
+ re_node_set next_nodes, *log_nodes, *table_nodes = NULL;
+ /* If (state_log[cur_idx] != 0), it implies that cur_idx is
+ the destination of a multibyte char/collating element/
+ back reference. Then the next state is the union set of
+ these destinations and the results of the transition table. */
+ pstate = mctx->state_log[cur_idx];
+ log_nodes = pstate->entrance_nodes;
+ if (next_state != NULL)
+ {
+ table_nodes = next_state->entrance_nodes;
+ *err = re_node_set_init_union (&next_nodes, table_nodes,
+ log_nodes);
+ if (BE (*err != REG_NOERROR, 0))
+ return NULL;
+ }
+ else
+ next_nodes = *log_nodes;
+ /* Note: We already add the nodes of the initial state,
+ then we don't need to add them here. */
+
+ context = re_string_context_at (&mctx->input,
+ re_string_cur_idx (&mctx->input) - 1,
+ mctx->eflags);
+ next_state = mctx->state_log[cur_idx]
+ = re_acquire_state_context (err, dfa, &next_nodes, context);
+ /* We don't need to check errors here, since the return value of
+ this function is next_state and ERR is already set. */
+
+ if (table_nodes != NULL)
+ re_node_set_free (&next_nodes);
+ }
+
+ if (BE (dfa->nbackref, 0) && next_state != NULL)
+ {
+ /* Check OP_OPEN_SUBEXP in the current state in case that we use them
+ later. We must check them here, since the back references in the
+ next state might use them. */
+ *err = check_subexp_matching_top (mctx, &next_state->nodes,
+ cur_idx);
+ if (BE (*err != REG_NOERROR, 0))
+ return NULL;
+
+ /* If the next state has back references. */
+ if (next_state->has_backref)
+ {
+ *err = transit_state_bkref (mctx, &next_state->nodes);
+ if (BE (*err != REG_NOERROR, 0))
+ return NULL;
+ next_state = mctx->state_log[cur_idx];
+ }
+ }
+
+ return next_state;
+}
+
+/* Skip bytes in the input that correspond to part of a
+ multi-byte match, then look in the log for a state
+ from which to restart matching. */
+static re_dfastate_t *
+internal_function
+find_recover_state (reg_errcode_t *err, re_match_context_t *mctx)
+{
+ re_dfastate_t *cur_state;
+ do
+ {
+ Idx max = mctx->state_log_top;
+ Idx cur_str_idx = re_string_cur_idx (&mctx->input);
+
+ do
+ {
+ if (++cur_str_idx > max)
+ return NULL;
+ re_string_skip_bytes (&mctx->input, 1);
+ }
+ while (mctx->state_log[cur_str_idx] == NULL);
+
+ cur_state = merge_state_with_log (err, mctx, NULL);
+ }
+ while (*err == REG_NOERROR && cur_state == NULL);
+ return cur_state;
+}
+
+/* Helper functions for transit_state. */
+
+/* From the node set CUR_NODES, pick up the nodes whose types are
+ OP_OPEN_SUBEXP and which have corresponding back references in the regular
+ expression. And register them to use them later for evaluating the
+ correspoding back references. */
+
+static reg_errcode_t
+internal_function
+check_subexp_matching_top (re_match_context_t *mctx, re_node_set *cur_nodes,
+ Idx str_idx)
+{
+ const re_dfa_t *const dfa = mctx->dfa;
+ Idx node_idx;
+ reg_errcode_t err;
+
+ /* TODO: This isn't efficient.
+ Because there might be more than one nodes whose types are
+ OP_OPEN_SUBEXP and whose index is SUBEXP_IDX, we must check all
+ nodes.
+ E.g. RE: (a){2} */
+ for (node_idx = 0; node_idx < cur_nodes->nelem; ++node_idx)
+ {
+ Idx node = cur_nodes->elems[node_idx];
+ if (dfa->nodes[node].type == OP_OPEN_SUBEXP
+ && dfa->nodes[node].opr.idx < BITSET_WORD_BITS
+ && (dfa->used_bkref_map
+ & ((bitset_word_t) 1 << dfa->nodes[node].opr.idx)))
+ {
+ err = match_ctx_add_subtop (mctx, node, str_idx);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ }
+ }
+ return REG_NOERROR;
+}
+
+#if 0
+/* Return the next state to which the current state STATE will transit by
+ accepting the current input byte. */
+
+static re_dfastate_t *
+transit_state_sb (reg_errcode_t *err, re_match_context_t *mctx,
+ re_dfastate_t *state)
+{
+ const re_dfa_t *const dfa = mctx->dfa;
+ re_node_set next_nodes;
+ re_dfastate_t *next_state;
+ Idx node_cnt, cur_str_idx = re_string_cur_idx (&mctx->input);
+ unsigned int context;
+
+ *err = re_node_set_alloc (&next_nodes, state->nodes.nelem + 1);
+ if (BE (*err != REG_NOERROR, 0))
+ return NULL;
+ for (node_cnt = 0; node_cnt < state->nodes.nelem; ++node_cnt)
+ {
+ Idx cur_node = state->nodes.elems[node_cnt];
+ if (check_node_accept (mctx, dfa->nodes + cur_node, cur_str_idx))
+ {
+ *err = re_node_set_merge (&next_nodes,
+ dfa->eclosures + dfa->nexts[cur_node]);
+ if (BE (*err != REG_NOERROR, 0))
+ {
+ re_node_set_free (&next_nodes);
+ return NULL;
+ }
+ }
+ }
+ context = re_string_context_at (&mctx->input, cur_str_idx, mctx->eflags);
+ next_state = re_acquire_state_context (err, dfa, &next_nodes, context);
+ /* We don't need to check errors here, since the return value of
+ this function is next_state and ERR is already set. */
+
+ re_node_set_free (&next_nodes);
+ re_string_skip_bytes (&mctx->input, 1);
+ return next_state;
+}
+#endif
+
+#ifdef RE_ENABLE_I18N
+static reg_errcode_t
+internal_function
+transit_state_mb (re_match_context_t *mctx, re_dfastate_t *pstate)
+{
+ const re_dfa_t *const dfa = mctx->dfa;
+ reg_errcode_t err;
+ Idx i;
+
+ for (i = 0; i < pstate->nodes.nelem; ++i)
+ {
+ re_node_set dest_nodes, *new_nodes;
+ Idx cur_node_idx = pstate->nodes.elems[i];
+ int naccepted;
+ Idx dest_idx;
+ unsigned int context;
+ re_dfastate_t *dest_state;
+
+ if (!dfa->nodes[cur_node_idx].accept_mb)
+ continue;
+
+ if (dfa->nodes[cur_node_idx].constraint)
+ {
+ context = re_string_context_at (&mctx->input,
+ re_string_cur_idx (&mctx->input),
+ mctx->eflags);
+ if (NOT_SATISFY_NEXT_CONSTRAINT (dfa->nodes[cur_node_idx].constraint,
+ context))
+ continue;
+ }
+
+ /* How many bytes the node can accept? */
+ naccepted = check_node_accept_bytes (dfa, cur_node_idx, &mctx->input,
+ re_string_cur_idx (&mctx->input));
+ if (naccepted == 0)
+ continue;
+
+ /* The node can accepts `naccepted' bytes. */
+ dest_idx = re_string_cur_idx (&mctx->input) + naccepted;
+ mctx->max_mb_elem_len = ((mctx->max_mb_elem_len < naccepted) ? naccepted
+ : mctx->max_mb_elem_len);
+ err = clean_state_log_if_needed (mctx, dest_idx);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+#ifdef DEBUG
+ assert (dfa->nexts[cur_node_idx] != REG_MISSING);
+#endif
+ new_nodes = dfa->eclosures + dfa->nexts[cur_node_idx];
+
+ dest_state = mctx->state_log[dest_idx];
+ if (dest_state == NULL)
+ dest_nodes = *new_nodes;
+ else
+ {
+ err = re_node_set_init_union (&dest_nodes,
+ dest_state->entrance_nodes, new_nodes);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ }
+ context = re_string_context_at (&mctx->input, dest_idx - 1,
+ mctx->eflags);
+ mctx->state_log[dest_idx]
+ = re_acquire_state_context (&err, dfa, &dest_nodes, context);
+ if (dest_state != NULL)
+ re_node_set_free (&dest_nodes);
+ if (BE (mctx->state_log[dest_idx] == NULL && err != REG_NOERROR, 0))
+ return err;
+ }
+ return REG_NOERROR;
+}
+#endif /* RE_ENABLE_I18N */
+
+static reg_errcode_t
+internal_function
+transit_state_bkref (re_match_context_t *mctx, const re_node_set *nodes)
+{
+ const re_dfa_t *const dfa = mctx->dfa;
+ reg_errcode_t err;
+ Idx i;
+ Idx cur_str_idx = re_string_cur_idx (&mctx->input);
+
+ for (i = 0; i < nodes->nelem; ++i)
+ {
+ Idx dest_str_idx, prev_nelem, bkc_idx;
+ Idx node_idx = nodes->elems[i];
+ unsigned int context;
+ const re_token_t *node = dfa->nodes + node_idx;
+ re_node_set *new_dest_nodes;
+
+ /* Check whether `node' is a backreference or not. */
+ if (node->type != OP_BACK_REF)
+ continue;
+
+ if (node->constraint)
+ {
+ context = re_string_context_at (&mctx->input, cur_str_idx,
+ mctx->eflags);
+ if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
+ continue;
+ }
+
+ /* `node' is a backreference.
+ Check the substring which the substring matched. */
+ bkc_idx = mctx->nbkref_ents;
+ err = get_subexp (mctx, node_idx, cur_str_idx);
+ if (BE (err != REG_NOERROR, 0))
+ goto free_return;
+
+ /* And add the epsilon closures (which is `new_dest_nodes') of
+ the backreference to appropriate state_log. */
+#ifdef DEBUG
+ assert (dfa->nexts[node_idx] != REG_MISSING);
+#endif
+ for (; bkc_idx < mctx->nbkref_ents; ++bkc_idx)
+ {
+ Idx subexp_len;
+ re_dfastate_t *dest_state;
+ struct re_backref_cache_entry *bkref_ent;
+ bkref_ent = mctx->bkref_ents + bkc_idx;
+ if (bkref_ent->node != node_idx || bkref_ent->str_idx != cur_str_idx)
+ continue;
+ subexp_len = bkref_ent->subexp_to - bkref_ent->subexp_from;
+ new_dest_nodes = (subexp_len == 0
+ ? dfa->eclosures + dfa->edests[node_idx].elems[0]
+ : dfa->eclosures + dfa->nexts[node_idx]);
+ dest_str_idx = (cur_str_idx + bkref_ent->subexp_to
+ - bkref_ent->subexp_from);
+ context = re_string_context_at (&mctx->input, dest_str_idx - 1,
+ mctx->eflags);
+ dest_state = mctx->state_log[dest_str_idx];
+ prev_nelem = ((mctx->state_log[cur_str_idx] == NULL) ? 0
+ : mctx->state_log[cur_str_idx]->nodes.nelem);
+ /* Add `new_dest_node' to state_log. */
+ if (dest_state == NULL)
+ {
+ mctx->state_log[dest_str_idx]
+ = re_acquire_state_context (&err, dfa, new_dest_nodes,
+ context);
+ if (BE (mctx->state_log[dest_str_idx] == NULL
+ && err != REG_NOERROR, 0))
+ goto free_return;
+ }
+ else
+ {
+ re_node_set dest_nodes;
+ err = re_node_set_init_union (&dest_nodes,
+ dest_state->entrance_nodes,
+ new_dest_nodes);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ re_node_set_free (&dest_nodes);
+ goto free_return;
+ }
+ mctx->state_log[dest_str_idx]
+ = re_acquire_state_context (&err, dfa, &dest_nodes, context);
+ re_node_set_free (&dest_nodes);
+ if (BE (mctx->state_log[dest_str_idx] == NULL
+ && err != REG_NOERROR, 0))
+ goto free_return;
+ }
+ /* We need to check recursively if the backreference can epsilon
+ transit. */
+ if (subexp_len == 0
+ && mctx->state_log[cur_str_idx]->nodes.nelem > prev_nelem)
+ {
+ err = check_subexp_matching_top (mctx, new_dest_nodes,
+ cur_str_idx);
+ if (BE (err != REG_NOERROR, 0))
+ goto free_return;
+ err = transit_state_bkref (mctx, new_dest_nodes);
+ if (BE (err != REG_NOERROR, 0))
+ goto free_return;
+ }
+ }
+ }
+ err = REG_NOERROR;
+ free_return:
+ return err;
+}
+
+/* Enumerate all the candidates which the backreference BKREF_NODE can match
+ at BKREF_STR_IDX, and register them by match_ctx_add_entry().
+ Note that we might collect inappropriate candidates here.
+ However, the cost of checking them strictly here is too high, then we
+ delay these checking for prune_impossible_nodes(). */
+
+static reg_errcode_t
+internal_function
+get_subexp (re_match_context_t *mctx, Idx bkref_node, Idx bkref_str_idx)
+{
+ const re_dfa_t *const dfa = mctx->dfa;
+ Idx subexp_num, sub_top_idx;
+ const char *buf = (const char *) re_string_get_buffer (&mctx->input);
+ /* Return if we have already checked BKREF_NODE at BKREF_STR_IDX. */
+ Idx cache_idx = search_cur_bkref_entry (mctx, bkref_str_idx);
+ if (cache_idx != REG_MISSING)
+ {
+ const struct re_backref_cache_entry *entry
+ = mctx->bkref_ents + cache_idx;
+ do
+ if (entry->node == bkref_node)
+ return REG_NOERROR; /* We already checked it. */
+ while (entry++->more);
+ }
+
+ subexp_num = dfa->nodes[bkref_node].opr.idx;
+
+ /* For each sub expression */
+ for (sub_top_idx = 0; sub_top_idx < mctx->nsub_tops; ++sub_top_idx)
+ {
+ reg_errcode_t err;
+ re_sub_match_top_t *sub_top = mctx->sub_tops[sub_top_idx];
+ re_sub_match_last_t *sub_last;
+ Idx sub_last_idx, sl_str, bkref_str_off;
+
+ if (dfa->nodes[sub_top->node].opr.idx != subexp_num)
+ continue; /* It isn't related. */
+
+ sl_str = sub_top->str_idx;
+ bkref_str_off = bkref_str_idx;
+ /* At first, check the last node of sub expressions we already
+ evaluated. */
+ for (sub_last_idx = 0; sub_last_idx < sub_top->nlasts; ++sub_last_idx)
+ {
+ regoff_t sl_str_diff;
+ sub_last = sub_top->lasts[sub_last_idx];
+ sl_str_diff = sub_last->str_idx - sl_str;
+ /* The matched string by the sub expression match with the substring
+ at the back reference? */
+ if (sl_str_diff > 0)
+ {
+ if (BE (bkref_str_off + sl_str_diff > mctx->input.valid_len, 0))
+ {
+ /* Not enough chars for a successful match. */
+ if (bkref_str_off + sl_str_diff > mctx->input.len)
+ break;
+
+ err = clean_state_log_if_needed (mctx,
+ bkref_str_off
+ + sl_str_diff);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ buf = (const char *) re_string_get_buffer (&mctx->input);
+ }
+ if (memcmp (buf + bkref_str_off, buf + sl_str, sl_str_diff) != 0)
+ /* We don't need to search this sub expression any more. */
+ break;
+ }
+ bkref_str_off += sl_str_diff;
+ sl_str += sl_str_diff;
+ err = get_subexp_sub (mctx, sub_top, sub_last, bkref_node,
+ bkref_str_idx);
+
+ /* Reload buf, since the preceding call might have reallocated
+ the buffer. */
+ buf = (const char *) re_string_get_buffer (&mctx->input);
+
+ if (err == REG_NOMATCH)
+ continue;
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ }
+
+ if (sub_last_idx < sub_top->nlasts)
+ continue;
+ if (sub_last_idx > 0)
+ ++sl_str;
+ /* Then, search for the other last nodes of the sub expression. */
+ for (; sl_str <= bkref_str_idx; ++sl_str)
+ {
+ Idx cls_node;
+ regoff_t sl_str_off;
+ const re_node_set *nodes;
+ sl_str_off = sl_str - sub_top->str_idx;
+ /* The matched string by the sub expression match with the substring
+ at the back reference? */
+ if (sl_str_off > 0)
+ {
+ if (BE (bkref_str_off >= mctx->input.valid_len, 0))
+ {
+ /* If we are at the end of the input, we cannot match. */
+ if (bkref_str_off >= mctx->input.len)
+ break;
+
+ err = extend_buffers (mctx);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+
+ buf = (const char *) re_string_get_buffer (&mctx->input);
+ }
+ if (buf [bkref_str_off++] != buf[sl_str - 1])
+ break; /* We don't need to search this sub expression
+ any more. */
+ }
+ if (mctx->state_log[sl_str] == NULL)
+ continue;
+ /* Does this state have a ')' of the sub expression? */
+ nodes = &mctx->state_log[sl_str]->nodes;
+ cls_node = find_subexp_node (dfa, nodes, subexp_num,
+ OP_CLOSE_SUBEXP);
+ if (cls_node == REG_MISSING)
+ continue; /* No. */
+ if (sub_top->path == NULL)
+ {
+ sub_top->path = calloc (sizeof (state_array_t),
+ sl_str - sub_top->str_idx + 1);
+ if (sub_top->path == NULL)
+ return REG_ESPACE;
+ }
+ /* Can the OP_OPEN_SUBEXP node arrive the OP_CLOSE_SUBEXP node
+ in the current context? */
+ err = check_arrival (mctx, sub_top->path, sub_top->node,
+ sub_top->str_idx, cls_node, sl_str,
+ OP_CLOSE_SUBEXP);
+ if (err == REG_NOMATCH)
+ continue;
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ sub_last = match_ctx_add_sublast (sub_top, cls_node, sl_str);
+ if (BE (sub_last == NULL, 0))
+ return REG_ESPACE;
+ err = get_subexp_sub (mctx, sub_top, sub_last, bkref_node,
+ bkref_str_idx);
+ if (err == REG_NOMATCH)
+ continue;
+ }
+ }
+ return REG_NOERROR;
+}
+
+/* Helper functions for get_subexp(). */
+
+/* Check SUB_LAST can arrive to the back reference BKREF_NODE at BKREF_STR.
+ If it can arrive, register the sub expression expressed with SUB_TOP
+ and SUB_LAST. */
+
+static reg_errcode_t
+internal_function
+get_subexp_sub (re_match_context_t *mctx, const re_sub_match_top_t *sub_top,
+ re_sub_match_last_t *sub_last, Idx bkref_node, Idx bkref_str)
+{
+ reg_errcode_t err;
+ Idx to_idx;
+ /* Can the subexpression arrive the back reference? */
+ err = check_arrival (mctx, &sub_last->path, sub_last->node,
+ sub_last->str_idx, bkref_node, bkref_str,
+ OP_OPEN_SUBEXP);
+ if (err != REG_NOERROR)
+ return err;
+ err = match_ctx_add_entry (mctx, bkref_node, bkref_str, sub_top->str_idx,
+ sub_last->str_idx);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ to_idx = bkref_str + sub_last->str_idx - sub_top->str_idx;
+ return clean_state_log_if_needed (mctx, to_idx);
+}
+
+/* Find the first node which is '(' or ')' and whose index is SUBEXP_IDX.
+ Search '(' if FL_OPEN, or search ')' otherwise.
+ TODO: This function isn't efficient...
+ Because there might be more than one nodes whose types are
+ OP_OPEN_SUBEXP and whose index is SUBEXP_IDX, we must check all
+ nodes.
+ E.g. RE: (a){2} */
+
+static Idx
+internal_function
+find_subexp_node (const re_dfa_t *dfa, const re_node_set *nodes,
+ Idx subexp_idx, int type)
+{
+ Idx cls_idx;
+ for (cls_idx = 0; cls_idx < nodes->nelem; ++cls_idx)
+ {
+ Idx cls_node = nodes->elems[cls_idx];
+ const re_token_t *node = dfa->nodes + cls_node;
+ if (node->type == type
+ && node->opr.idx == subexp_idx)
+ return cls_node;
+ }
+ return REG_MISSING;
+}
+
+/* Check whether the node TOP_NODE at TOP_STR can arrive to the node
+ LAST_NODE at LAST_STR. We record the path onto PATH since it will be
+ heavily reused.
+ Return REG_NOERROR if it can arrive, or REG_NOMATCH otherwise. */
+
+static reg_errcode_t
+internal_function
+check_arrival (re_match_context_t *mctx, state_array_t *path, Idx top_node,
+ Idx top_str, Idx last_node, Idx last_str, int type)
+{
+ const re_dfa_t *const dfa = mctx->dfa;
+ reg_errcode_t err = REG_NOERROR;
+ Idx subexp_num, backup_cur_idx, str_idx, null_cnt;
+ re_dfastate_t *cur_state = NULL;
+ re_node_set *cur_nodes, next_nodes;
+ re_dfastate_t **backup_state_log;
+ unsigned int context;
+
+ subexp_num = dfa->nodes[top_node].opr.idx;
+ /* Extend the buffer if we need. */
+ if (BE (path->alloc < last_str + mctx->max_mb_elem_len + 1, 0))
+ {
+ re_dfastate_t **new_array;
+ Idx old_alloc = path->alloc;
+ Idx new_alloc = old_alloc + last_str + mctx->max_mb_elem_len + 1;
+ if (BE (new_alloc < old_alloc, 0)
+ || BE (SIZE_MAX / sizeof (re_dfastate_t *) < new_alloc, 0))
+ return REG_ESPACE;
+ new_array = re_realloc (path->array, re_dfastate_t *, new_alloc);
+ if (BE (new_array == NULL, 0))
+ return REG_ESPACE;
+ path->array = new_array;
+ path->alloc = new_alloc;
+ memset (new_array + old_alloc, '\0',
+ sizeof (re_dfastate_t *) * (path->alloc - old_alloc));
+ }
+
+ str_idx = path->next_idx ? path->next_idx : top_str;
+
+ /* Temporary modify MCTX. */
+ backup_state_log = mctx->state_log;
+ backup_cur_idx = mctx->input.cur_idx;
+ mctx->state_log = path->array;
+ mctx->input.cur_idx = str_idx;
+
+ /* Setup initial node set. */
+ context = re_string_context_at (&mctx->input, str_idx - 1, mctx->eflags);
+ if (str_idx == top_str)
+ {
+ err = re_node_set_init_1 (&next_nodes, top_node);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ err = check_arrival_expand_ecl (dfa, &next_nodes, subexp_num, type);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ re_node_set_free (&next_nodes);
+ return err;
+ }
+ }
+ else
+ {
+ cur_state = mctx->state_log[str_idx];
+ if (cur_state && cur_state->has_backref)
+ {
+ err = re_node_set_init_copy (&next_nodes, &cur_state->nodes);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ }
+ else
+ re_node_set_init_empty (&next_nodes);
+ }
+ if (str_idx == top_str || (cur_state && cur_state->has_backref))
+ {
+ if (next_nodes.nelem)
+ {
+ err = expand_bkref_cache (mctx, &next_nodes, str_idx,
+ subexp_num, type);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ re_node_set_free (&next_nodes);
+ return err;
+ }
+ }
+ cur_state = re_acquire_state_context (&err, dfa, &next_nodes, context);
+ if (BE (cur_state == NULL && err != REG_NOERROR, 0))
+ {
+ re_node_set_free (&next_nodes);
+ return err;
+ }
+ mctx->state_log[str_idx] = cur_state;
+ }
+
+ for (null_cnt = 0; str_idx < last_str && null_cnt <= mctx->max_mb_elem_len;)
+ {
+ re_node_set_empty (&next_nodes);
+ if (mctx->state_log[str_idx + 1])
+ {
+ err = re_node_set_merge (&next_nodes,
+ &mctx->state_log[str_idx + 1]->nodes);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ re_node_set_free (&next_nodes);
+ return err;
+ }
+ }
+ if (cur_state)
+ {
+ err = check_arrival_add_next_nodes (mctx, str_idx,
+ &cur_state->non_eps_nodes,
+ &next_nodes);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ re_node_set_free (&next_nodes);
+ return err;
+ }
+ }
+ ++str_idx;
+ if (next_nodes.nelem)
+ {
+ err = check_arrival_expand_ecl (dfa, &next_nodes, subexp_num, type);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ re_node_set_free (&next_nodes);
+ return err;
+ }
+ err = expand_bkref_cache (mctx, &next_nodes, str_idx,
+ subexp_num, type);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ re_node_set_free (&next_nodes);
+ return err;
+ }
+ }
+ context = re_string_context_at (&mctx->input, str_idx - 1, mctx->eflags);
+ cur_state = re_acquire_state_context (&err, dfa, &next_nodes, context);
+ if (BE (cur_state == NULL && err != REG_NOERROR, 0))
+ {
+ re_node_set_free (&next_nodes);
+ return err;
+ }
+ mctx->state_log[str_idx] = cur_state;
+ null_cnt = cur_state == NULL ? null_cnt + 1 : 0;
+ }
+ re_node_set_free (&next_nodes);
+ cur_nodes = (mctx->state_log[last_str] == NULL ? NULL
+ : &mctx->state_log[last_str]->nodes);
+ path->next_idx = str_idx;
+
+ /* Fix MCTX. */
+ mctx->state_log = backup_state_log;
+ mctx->input.cur_idx = backup_cur_idx;
+
+ /* Then check the current node set has the node LAST_NODE. */
+ if (cur_nodes != NULL && re_node_set_contains (cur_nodes, last_node))
+ return REG_NOERROR;
+
+ return REG_NOMATCH;
+}
+
+/* Helper functions for check_arrival. */
+
+/* Calculate the destination nodes of CUR_NODES at STR_IDX, and append them
+ to NEXT_NODES.
+ TODO: This function is similar to the functions transit_state*(),
+ however this function has many additional works.
+ Can't we unify them? */
+
+static reg_errcode_t
+internal_function
+check_arrival_add_next_nodes (re_match_context_t *mctx, Idx str_idx,
+ re_node_set *cur_nodes, re_node_set *next_nodes)
+{
+ const re_dfa_t *const dfa = mctx->dfa;
+ bool ok;
+ Idx cur_idx;
+ reg_errcode_t err = REG_NOERROR;
+ re_node_set union_set;
+ re_node_set_init_empty (&union_set);
+ for (cur_idx = 0; cur_idx < cur_nodes->nelem; ++cur_idx)
+ {
+ int naccepted = 0;
+ Idx cur_node = cur_nodes->elems[cur_idx];
+#ifdef DEBUG
+ re_token_type_t type = dfa->nodes[cur_node].type;
+ assert (!IS_EPSILON_NODE (type));
+#endif
+#ifdef RE_ENABLE_I18N
+ /* If the node may accept `multi byte'. */
+ if (dfa->nodes[cur_node].accept_mb)
+ {
+ naccepted = check_node_accept_bytes (dfa, cur_node, &mctx->input,
+ str_idx);
+ if (naccepted > 1)
+ {
+ re_dfastate_t *dest_state;
+ Idx next_node = dfa->nexts[cur_node];
+ Idx next_idx = str_idx + naccepted;
+ dest_state = mctx->state_log[next_idx];
+ re_node_set_empty (&union_set);
+ if (dest_state)
+ {
+ err = re_node_set_merge (&union_set, &dest_state->nodes);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ re_node_set_free (&union_set);
+ return err;
+ }
+ }
+ ok = re_node_set_insert (&union_set, next_node);
+ if (BE (! ok, 0))
+ {
+ re_node_set_free (&union_set);
+ return REG_ESPACE;
+ }
+ mctx->state_log[next_idx] = re_acquire_state (&err, dfa,
+ &union_set);
+ if (BE (mctx->state_log[next_idx] == NULL
+ && err != REG_NOERROR, 0))
+ {
+ re_node_set_free (&union_set);
+ return err;
+ }
+ }
+ }
+#endif /* RE_ENABLE_I18N */
+ if (naccepted
+ || check_node_accept (mctx, dfa->nodes + cur_node, str_idx))
+ {
+ ok = re_node_set_insert (next_nodes, dfa->nexts[cur_node]);
+ if (BE (! ok, 0))
+ {
+ re_node_set_free (&union_set);
+ return REG_ESPACE;
+ }
+ }
+ }
+ re_node_set_free (&union_set);
+ return REG_NOERROR;
+}
+
+/* For all the nodes in CUR_NODES, add the epsilon closures of them to
+ CUR_NODES, however exclude the nodes which are:
+ - inside the sub expression whose number is EX_SUBEXP, if FL_OPEN.
+ - out of the sub expression whose number is EX_SUBEXP, if !FL_OPEN.
+*/
+
+static reg_errcode_t
+internal_function
+check_arrival_expand_ecl (const re_dfa_t *dfa, re_node_set *cur_nodes,
+ Idx ex_subexp, int type)
+{
+ reg_errcode_t err;
+ Idx idx, outside_node;
+ re_node_set new_nodes;
+#ifdef DEBUG
+ assert (cur_nodes->nelem);
+#endif
+ err = re_node_set_alloc (&new_nodes, cur_nodes->nelem);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ /* Create a new node set NEW_NODES with the nodes which are epsilon
+ closures of the node in CUR_NODES. */
+
+ for (idx = 0; idx < cur_nodes->nelem; ++idx)
+ {
+ Idx cur_node = cur_nodes->elems[idx];
+ const re_node_set *eclosure = dfa->eclosures + cur_node;
+ outside_node = find_subexp_node (dfa, eclosure, ex_subexp, type);
+ if (outside_node == REG_MISSING)
+ {
+ /* There are no problematic nodes, just merge them. */
+ err = re_node_set_merge (&new_nodes, eclosure);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ re_node_set_free (&new_nodes);
+ return err;
+ }
+ }
+ else
+ {
+ /* There are problematic nodes, re-calculate incrementally. */
+ err = check_arrival_expand_ecl_sub (dfa, &new_nodes, cur_node,
+ ex_subexp, type);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ re_node_set_free (&new_nodes);
+ return err;
+ }
+ }
+ }
+ re_node_set_free (cur_nodes);
+ *cur_nodes = new_nodes;
+ return REG_NOERROR;
+}
+
+/* Helper function for check_arrival_expand_ecl.
+ Check incrementally the epsilon closure of TARGET, and if it isn't
+ problematic append it to DST_NODES. */
+
+static reg_errcode_t
+internal_function
+check_arrival_expand_ecl_sub (const re_dfa_t *dfa, re_node_set *dst_nodes,
+ Idx target, Idx ex_subexp, int type)
+{
+ Idx cur_node;
+ for (cur_node = target; !re_node_set_contains (dst_nodes, cur_node);)
+ {
+ bool ok;
+
+ if (dfa->nodes[cur_node].type == type
+ && dfa->nodes[cur_node].opr.idx == ex_subexp)
+ {
+ if (type == OP_CLOSE_SUBEXP)
+ {
+ ok = re_node_set_insert (dst_nodes, cur_node);
+ if (BE (! ok, 0))
+ return REG_ESPACE;
+ }
+ break;
+ }
+ ok = re_node_set_insert (dst_nodes, cur_node);
+ if (BE (! ok, 0))
+ return REG_ESPACE;
+ if (dfa->edests[cur_node].nelem == 0)
+ break;
+ if (dfa->edests[cur_node].nelem == 2)
+ {
+ reg_errcode_t err;
+ err = check_arrival_expand_ecl_sub (dfa, dst_nodes,
+ dfa->edests[cur_node].elems[1],
+ ex_subexp, type);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ }
+ cur_node = dfa->edests[cur_node].elems[0];
+ }
+ return REG_NOERROR;
+}
+
+
+/* For all the back references in the current state, calculate the
+ destination of the back references by the appropriate entry
+ in MCTX->BKREF_ENTS. */
+
+static reg_errcode_t
+internal_function
+expand_bkref_cache (re_match_context_t *mctx, re_node_set *cur_nodes,
+ Idx cur_str, Idx subexp_num, int type)
+{
+ const re_dfa_t *const dfa = mctx->dfa;
+ reg_errcode_t err;
+ Idx cache_idx_start = search_cur_bkref_entry (mctx, cur_str);
+ struct re_backref_cache_entry *ent;
+
+ if (cache_idx_start == REG_MISSING)
+ return REG_NOERROR;
+
+ restart:
+ ent = mctx->bkref_ents + cache_idx_start;
+ do
+ {
+ Idx to_idx, next_node;
+
+ /* Is this entry ENT is appropriate? */
+ if (!re_node_set_contains (cur_nodes, ent->node))
+ continue; /* No. */
+
+ to_idx = cur_str + ent->subexp_to - ent->subexp_from;
+ /* Calculate the destination of the back reference, and append it
+ to MCTX->STATE_LOG. */
+ if (to_idx == cur_str)
+ {
+ /* The backreference did epsilon transit, we must re-check all the
+ node in the current state. */
+ re_node_set new_dests;
+ reg_errcode_t err2, err3;
+ next_node = dfa->edests[ent->node].elems[0];
+ if (re_node_set_contains (cur_nodes, next_node))
+ continue;
+ err = re_node_set_init_1 (&new_dests, next_node);
+ err2 = check_arrival_expand_ecl (dfa, &new_dests, subexp_num, type);
+ err3 = re_node_set_merge (cur_nodes, &new_dests);
+ re_node_set_free (&new_dests);
+ if (BE (err != REG_NOERROR || err2 != REG_NOERROR
+ || err3 != REG_NOERROR, 0))
+ {
+ err = (err != REG_NOERROR ? err
+ : (err2 != REG_NOERROR ? err2 : err3));
+ return err;
+ }
+ /* TODO: It is still inefficient... */
+ goto restart;
+ }
+ else
+ {
+ re_node_set union_set;
+ next_node = dfa->nexts[ent->node];
+ if (mctx->state_log[to_idx])
+ {
+ bool ok;
+ if (re_node_set_contains (&mctx->state_log[to_idx]->nodes,
+ next_node))
+ continue;
+ err = re_node_set_init_copy (&union_set,
+ &mctx->state_log[to_idx]->nodes);
+ ok = re_node_set_insert (&union_set, next_node);
+ if (BE (err != REG_NOERROR || ! ok, 0))
+ {
+ re_node_set_free (&union_set);
+ err = err != REG_NOERROR ? err : REG_ESPACE;
+ return err;
+ }
+ }
+ else
+ {
+ err = re_node_set_init_1 (&union_set, next_node);
+ if (BE (err != REG_NOERROR, 0))
+ return err;
+ }
+ mctx->state_log[to_idx] = re_acquire_state (&err, dfa, &union_set);
+ re_node_set_free (&union_set);
+ if (BE (mctx->state_log[to_idx] == NULL
+ && err != REG_NOERROR, 0))
+ return err;
+ }
+ }
+ while (ent++->more);
+ return REG_NOERROR;
+}
+
+/* Build transition table for the state.
+ Return true if successful. */
+
+static bool
+internal_function
+build_trtable (const re_dfa_t *dfa, re_dfastate_t *state)
+{
+ reg_errcode_t err;
+ Idx i, j;
+ int ch;
+ bool need_word_trtable = false;
+ bitset_word_t elem, mask;
+ bool dests_node_malloced = false;
+ bool dest_states_malloced = false;
+ Idx ndests; /* Number of the destination states from `state'. */
+ re_dfastate_t **trtable;
+ re_dfastate_t **dest_states = NULL, **dest_states_word, **dest_states_nl;
+ re_node_set follows, *dests_node;
+ bitset_t *dests_ch;
+ bitset_t acceptable;
+
+ struct dests_alloc
+ {
+ re_node_set dests_node[SBC_MAX];
+ bitset_t dests_ch[SBC_MAX];
+ } *dests_alloc;
+
+ /* We build DFA states which corresponds to the destination nodes
+ from `state'. `dests_node[i]' represents the nodes which i-th
+ destination state contains, and `dests_ch[i]' represents the
+ characters which i-th destination state accepts. */
+ if (__libc_use_alloca (sizeof (struct dests_alloc)))
+ dests_alloc = (struct dests_alloc *) alloca (sizeof (struct dests_alloc));
+ else
+ {
+ dests_alloc = re_malloc (struct dests_alloc, 1);
+ if (BE (dests_alloc == NULL, 0))
+ return false;
+ dests_node_malloced = true;
+ }
+ dests_node = dests_alloc->dests_node;
+ dests_ch = dests_alloc->dests_ch;
+
+ /* Initialize transiton table. */
+ state->word_trtable = state->trtable = NULL;
+
+ /* At first, group all nodes belonging to `state' into several
+ destinations. */
+ ndests = group_nodes_into_DFAstates (dfa, state, dests_node, dests_ch);
+ if (BE (! REG_VALID_NONZERO_INDEX (ndests), 0))
+ {
+ if (dests_node_malloced)
+ free (dests_alloc);
+ if (ndests == 0)
+ {
+ state->trtable = (re_dfastate_t **)
+ calloc (sizeof (re_dfastate_t *), SBC_MAX);
+ return true;
+ }
+ return false;
+ }
+
+ err = re_node_set_alloc (&follows, ndests + 1);
+ if (BE (err != REG_NOERROR, 0))
+ goto out_free;
+
+ /* Avoid arithmetic overflow in size calculation. */
+ if (BE ((((SIZE_MAX - (sizeof (re_node_set) + sizeof (bitset_t)) * SBC_MAX)
+ / (3 * sizeof (re_dfastate_t *)))
+ < ndests),
+ 0))
+ goto out_free;
+
+ if (__libc_use_alloca ((sizeof (re_node_set) + sizeof (bitset_t)) * SBC_MAX
+ + ndests * 3 * sizeof (re_dfastate_t *)))
+ dest_states = (re_dfastate_t **)
+ alloca (ndests * 3 * sizeof (re_dfastate_t *));
+ else
+ {
+ dest_states = (re_dfastate_t **)
+ malloc (ndests * 3 * sizeof (re_dfastate_t *));
+ if (BE (dest_states == NULL, 0))
+ {
+out_free:
+ if (dest_states_malloced)
+ free (dest_states);
+ re_node_set_free (&follows);
+ for (i = 0; i < ndests; ++i)
+ re_node_set_free (dests_node + i);
+ if (dests_node_malloced)
+ free (dests_alloc);
+ return false;
+ }
+ dest_states_malloced = true;
+ }
+ dest_states_word = dest_states + ndests;
+ dest_states_nl = dest_states_word + ndests;
+ bitset_empty (acceptable);
+
+ /* Then build the states for all destinations. */
+ for (i = 0; i < ndests; ++i)
+ {
+ Idx next_node;
+ re_node_set_empty (&follows);
+ /* Merge the follows of this destination states. */
+ for (j = 0; j < dests_node[i].nelem; ++j)
+ {
+ next_node = dfa->nexts[dests_node[i].elems[j]];
+ if (next_node != REG_MISSING)
+ {
+ err = re_node_set_merge (&follows, dfa->eclosures + next_node);
+ if (BE (err != REG_NOERROR, 0))
+ goto out_free;
+ }
+ }
+ dest_states[i] = re_acquire_state_context (&err, dfa, &follows, 0);
+ if (BE (dest_states[i] == NULL && err != REG_NOERROR, 0))
+ goto out_free;
+ /* If the new state has context constraint,
+ build appropriate states for these contexts. */
+ if (dest_states[i]->has_constraint)
+ {
+ dest_states_word[i] = re_acquire_state_context (&err, dfa, &follows,
+ CONTEXT_WORD);
+ if (BE (dest_states_word[i] == NULL && err != REG_NOERROR, 0))
+ goto out_free;
+
+ if (dest_states[i] != dest_states_word[i] && dfa->mb_cur_max > 1)
+ need_word_trtable = true;
+
+ dest_states_nl[i] = re_acquire_state_context (&err, dfa, &follows,
+ CONTEXT_NEWLINE);
+ if (BE (dest_states_nl[i] == NULL && err != REG_NOERROR, 0))
+ goto out_free;
+ }
+ else
+ {
+ dest_states_word[i] = dest_states[i];
+ dest_states_nl[i] = dest_states[i];
+ }
+ bitset_merge (acceptable, dests_ch[i]);
+ }
+
+ if (!BE (need_word_trtable, 0))
+ {
+ /* We don't care about whether the following character is a word
+ character, or we are in a single-byte character set so we can
+ discern by looking at the character code: allocate a
+ 256-entry transition table. */
+ trtable = state->trtable =
+ (re_dfastate_t **) calloc (sizeof (re_dfastate_t *), SBC_MAX);
+ if (BE (trtable == NULL, 0))
+ goto out_free;
+
+ /* For all characters ch...: */
+ for (i = 0; i < BITSET_WORDS; ++i)
+ for (ch = i * BITSET_WORD_BITS, elem = acceptable[i], mask = 1;
+ elem;
+ mask <<= 1, elem >>= 1, ++ch)
+ if (BE (elem & 1, 0))
+ {
+ /* There must be exactly one destination which accepts
+ character ch. See group_nodes_into_DFAstates. */
+ for (j = 0; (dests_ch[j][i] & mask) == 0; ++j)
+ ;
+
+ /* j-th destination accepts the word character ch. */
+ if (dfa->word_char[i] & mask)
+ trtable[ch] = dest_states_word[j];
+ else
+ trtable[ch] = dest_states[j];
+ }
+ }
+ else
+ {
+ /* We care about whether the following character is a word
+ character, and we are in a multi-byte character set: discern
+ by looking at the character code: build two 256-entry
+ transition tables, one starting at trtable[0] and one
+ starting at trtable[SBC_MAX]. */
+ trtable = state->word_trtable =
+ (re_dfastate_t **) calloc (sizeof (re_dfastate_t *), 2 * SBC_MAX);
+ if (BE (trtable == NULL, 0))
+ goto out_free;
+
+ /* For all characters ch...: */
+ for (i = 0; i < BITSET_WORDS; ++i)
+ for (ch = i * BITSET_WORD_BITS, elem = acceptable[i], mask = 1;
+ elem;
+ mask <<= 1, elem >>= 1, ++ch)
+ if (BE (elem & 1, 0))
+ {
+ /* There must be exactly one destination which accepts
+ character ch. See group_nodes_into_DFAstates. */
+ for (j = 0; (dests_ch[j][i] & mask) == 0; ++j)
+ ;
+
+ /* j-th destination accepts the word character ch. */
+ trtable[ch] = dest_states[j];
+ trtable[ch + SBC_MAX] = dest_states_word[j];
+ }
+ }
+
+ /* new line */
+ if (bitset_contain (acceptable, NEWLINE_CHAR))
+ {
+ /* The current state accepts newline character. */
+ for (j = 0; j < ndests; ++j)
+ if (bitset_contain (dests_ch[j], NEWLINE_CHAR))
+ {
+ /* k-th destination accepts newline character. */
+ trtable[NEWLINE_CHAR] = dest_states_nl[j];
+ if (need_word_trtable)
+ trtable[NEWLINE_CHAR + SBC_MAX] = dest_states_nl[j];
+ /* There must be only one destination which accepts
+ newline. See group_nodes_into_DFAstates. */
+ break;
+ }
+ }
+
+ if (dest_states_malloced)
+ free (dest_states);
+
+ re_node_set_free (&follows);
+ for (i = 0; i < ndests; ++i)
+ re_node_set_free (dests_node + i);
+
+ if (dests_node_malloced)
+ free (dests_alloc);
+
+ return true;
+}
+
+/* Group all nodes belonging to STATE into several destinations.
+ Then for all destinations, set the nodes belonging to the destination
+ to DESTS_NODE[i] and set the characters accepted by the destination
+ to DEST_CH[i]. This function return the number of destinations. */
+
+static Idx
+internal_function
+group_nodes_into_DFAstates (const re_dfa_t *dfa, const re_dfastate_t *state,
+ re_node_set *dests_node, bitset_t *dests_ch)
+{
+ reg_errcode_t err;
+ bool ok;
+ Idx i, j, k;
+ Idx ndests; /* Number of the destinations from `state'. */
+ bitset_t accepts; /* Characters a node can accept. */
+ const re_node_set *cur_nodes = &state->nodes;
+ bitset_empty (accepts);
+ ndests = 0;
+
+ /* For all the nodes belonging to `state', */
+ for (i = 0; i < cur_nodes->nelem; ++i)
+ {
+ re_token_t *node = &dfa->nodes[cur_nodes->elems[i]];
+ re_token_type_t type = node->type;
+ unsigned int constraint = node->constraint;
+
+ /* Enumerate all single byte character this node can accept. */
+ if (type == CHARACTER)
+ bitset_set (accepts, node->opr.c);
+ else if (type == SIMPLE_BRACKET)
+ {
+ bitset_merge (accepts, node->opr.sbcset);
+ }
+ else if (type == OP_PERIOD)
+ {
+#ifdef RE_ENABLE_I18N
+ if (dfa->mb_cur_max > 1)
+ bitset_merge (accepts, dfa->sb_char);
+ else
+#endif
+ bitset_set_all (accepts);
+ if (!(dfa->syntax & RE_DOT_NEWLINE))
+ bitset_clear (accepts, '\n');
+ if (dfa->syntax & RE_DOT_NOT_NULL)
+ bitset_clear (accepts, '\0');
+ }
+#ifdef RE_ENABLE_I18N
+ else if (type == OP_UTF8_PERIOD)
+ {
+ if (ASCII_CHARS % BITSET_WORD_BITS == 0)
+ memset (accepts, -1, ASCII_CHARS / CHAR_BIT);
+ else
+ bitset_merge (accepts, utf8_sb_map);
+ if (!(dfa->syntax & RE_DOT_NEWLINE))
+ bitset_clear (accepts, '\n');
+ if (dfa->syntax & RE_DOT_NOT_NULL)
+ bitset_clear (accepts, '\0');
+ }
+#endif
+ else
+ continue;
+
+ /* Check the `accepts' and sift the characters which are not
+ match it the context. */
+ if (constraint)
+ {
+ if (constraint & NEXT_NEWLINE_CONSTRAINT)
+ {
+ bool accepts_newline = bitset_contain (accepts, NEWLINE_CHAR);
+ bitset_empty (accepts);
+ if (accepts_newline)
+ bitset_set (accepts, NEWLINE_CHAR);
+ else
+ continue;
+ }
+ if (constraint & NEXT_ENDBUF_CONSTRAINT)
+ {
+ bitset_empty (accepts);
+ continue;
+ }
+
+ if (constraint & NEXT_WORD_CONSTRAINT)
+ {
+ bitset_word_t any_set = 0;
+ if (type == CHARACTER && !node->word_char)
+ {
+ bitset_empty (accepts);
+ continue;
+ }
+#ifdef RE_ENABLE_I18N
+ if (dfa->mb_cur_max > 1)
+ for (j = 0; j < BITSET_WORDS; ++j)
+ any_set |= (accepts[j] &= (dfa->word_char[j] | ~dfa->sb_char[j]));
+ else
+#endif
+ for (j = 0; j < BITSET_WORDS; ++j)
+ any_set |= (accepts[j] &= dfa->word_char[j]);
+ if (!any_set)
+ continue;
+ }
+ if (constraint & NEXT_NOTWORD_CONSTRAINT)
+ {
+ bitset_word_t any_set = 0;
+ if (type == CHARACTER && node->word_char)
+ {
+ bitset_empty (accepts);
+ continue;
+ }
+#ifdef RE_ENABLE_I18N
+ if (dfa->mb_cur_max > 1)
+ for (j = 0; j < BITSET_WORDS; ++j)
+ any_set |= (accepts[j] &= ~(dfa->word_char[j] & dfa->sb_char[j]));
+ else
+#endif
+ for (j = 0; j < BITSET_WORDS; ++j)
+ any_set |= (accepts[j] &= ~dfa->word_char[j]);
+ if (!any_set)
+ continue;
+ }
+ }
+
+ /* Then divide `accepts' into DFA states, or create a new
+ state. Above, we make sure that accepts is not empty. */
+ for (j = 0; j < ndests; ++j)
+ {
+ bitset_t intersec; /* Intersection sets, see below. */
+ bitset_t remains;
+ /* Flags, see below. */
+ bitset_word_t has_intersec, not_subset, not_consumed;
+
+ /* Optimization, skip if this state doesn't accept the character. */
+ if (type == CHARACTER && !bitset_contain (dests_ch[j], node->opr.c))
+ continue;
+
+ /* Enumerate the intersection set of this state and `accepts'. */
+ has_intersec = 0;
+ for (k = 0; k < BITSET_WORDS; ++k)
+ has_intersec |= intersec[k] = accepts[k] & dests_ch[j][k];
+ /* And skip if the intersection set is empty. */
+ if (!has_intersec)
+ continue;
+
+ /* Then check if this state is a subset of `accepts'. */
+ not_subset = not_consumed = 0;
+ for (k = 0; k < BITSET_WORDS; ++k)
+ {
+ not_subset |= remains[k] = ~accepts[k] & dests_ch[j][k];
+ not_consumed |= accepts[k] = accepts[k] & ~dests_ch[j][k];
+ }
+
+ /* If this state isn't a subset of `accepts', create a
+ new group state, which has the `remains'. */
+ if (not_subset)
+ {
+ bitset_copy (dests_ch[ndests], remains);
+ bitset_copy (dests_ch[j], intersec);
+ err = re_node_set_init_copy (dests_node + ndests, &dests_node[j]);
+ if (BE (err != REG_NOERROR, 0))
+ goto error_return;
+ ++ndests;
+ }
+
+ /* Put the position in the current group. */
+ ok = re_node_set_insert (&dests_node[j], cur_nodes->elems[i]);
+ if (BE (! ok, 0))
+ goto error_return;
+
+ /* If all characters are consumed, go to next node. */
+ if (!not_consumed)
+ break;
+ }
+ /* Some characters remain, create a new group. */
+ if (j == ndests)
+ {
+ bitset_copy (dests_ch[ndests], accepts);
+ err = re_node_set_init_1 (dests_node + ndests, cur_nodes->elems[i]);
+ if (BE (err != REG_NOERROR, 0))
+ goto error_return;
+ ++ndests;
+ bitset_empty (accepts);
+ }
+ }
+ return ndests;
+ error_return:
+ for (j = 0; j < ndests; ++j)
+ re_node_set_free (dests_node + j);
+ return REG_MISSING;
+}
+
+#ifdef RE_ENABLE_I18N
+/* Check how many bytes the node `dfa->nodes[node_idx]' accepts.
+ Return the number of the bytes the node accepts.
+ STR_IDX is the current index of the input string.
+
+ This function handles the nodes which can accept one character, or
+ one collating element like '.', '[a-z]', opposite to the other nodes
+ can only accept one byte. */
+
+static int
+internal_function
+check_node_accept_bytes (const re_dfa_t *dfa, Idx node_idx,
+ const re_string_t *input, Idx str_idx)
+{
+ const re_token_t *node = dfa->nodes + node_idx;
+ int char_len, elem_len;
+ Idx i;
+
+ if (BE (node->type == OP_UTF8_PERIOD, 0))
+ {
+ unsigned char c = re_string_byte_at (input, str_idx), d;
+ if (BE (c < 0xc2, 1))
+ return 0;
+
+ if (str_idx + 2 > input->len)
+ return 0;
+
+ d = re_string_byte_at (input, str_idx + 1);
+ if (c < 0xe0)
+ return (d < 0x80 || d > 0xbf) ? 0 : 2;
+ else if (c < 0xf0)
+ {
+ char_len = 3;
+ if (c == 0xe0 && d < 0xa0)
+ return 0;
+ }
+ else if (c < 0xf8)
+ {
+ char_len = 4;
+ if (c == 0xf0 && d < 0x90)
+ return 0;
+ }
+ else if (c < 0xfc)
+ {
+ char_len = 5;
+ if (c == 0xf8 && d < 0x88)
+ return 0;
+ }
+ else if (c < 0xfe)
+ {
+ char_len = 6;
+ if (c == 0xfc && d < 0x84)
+ return 0;
+ }
+ else
+ return 0;
+
+ if (str_idx + char_len > input->len)
+ return 0;
+
+ for (i = 1; i < char_len; ++i)
+ {
+ d = re_string_byte_at (input, str_idx + i);
+ if (d < 0x80 || d > 0xbf)
+ return 0;
+ }
+ return char_len;
+ }
+
+ char_len = re_string_char_size_at (input, str_idx);
+ if (node->type == OP_PERIOD)
+ {
+ if (char_len <= 1)
+ return 0;
+ /* FIXME: I don't think this if is needed, as both '\n'
+ and '\0' are char_len == 1. */
+ /* '.' accepts any one character except the following two cases. */
+ if ((!(dfa->syntax & RE_DOT_NEWLINE) &&
+ re_string_byte_at (input, str_idx) == '\n') ||
+ ((dfa->syntax & RE_DOT_NOT_NULL) &&
+ re_string_byte_at (input, str_idx) == '\0'))
+ return 0;
+ return char_len;
+ }
+
+ elem_len = re_string_elem_size_at (input, str_idx);
+ if ((elem_len <= 1 && char_len <= 1) || char_len == 0)
+ return 0;
+
+ if (node->type == COMPLEX_BRACKET)
+ {
+ const re_charset_t *cset = node->opr.mbcset;
+# ifdef _LIBC
+ const unsigned char *pin
+ = ((const unsigned char *) re_string_get_buffer (input) + str_idx);
+ Idx j;
+ uint32_t nrules;
+# endif /* _LIBC */
+ int match_len = 0;
+ wchar_t wc = ((cset->nranges || cset->nchar_classes || cset->nmbchars)
+ ? re_string_wchar_at (input, str_idx) : 0);
+
+ /* match with multibyte character? */
+ for (i = 0; i < cset->nmbchars; ++i)
+ if (wc == cset->mbchars[i])
+ {
+ match_len = char_len;
+ goto check_node_accept_bytes_match;
+ }
+ /* match with character_class? */
+ for (i = 0; i < cset->nchar_classes; ++i)
+ {
+ wctype_t wt = cset->char_classes[i];
+ if (__iswctype (wc, wt))
+ {
+ match_len = char_len;
+ goto check_node_accept_bytes_match;
+ }
+ }
+
+# ifdef _LIBC
+ nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
+ if (nrules != 0)
+ {
+ unsigned int in_collseq = 0;
+ const int32_t *table, *indirect;
+ const unsigned char *weights, *extra;
+ const char *collseqwc;
+ int32_t idx;
+ /* This #include defines a local function! */
+# include <locale/weight.h>
+
+ /* match with collating_symbol? */
+ if (cset->ncoll_syms)
+ extra = (const unsigned char *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_SYMB_EXTRAMB);
+ for (i = 0; i < cset->ncoll_syms; ++i)
+ {
+ const unsigned char *coll_sym = extra + cset->coll_syms[i];
+ /* Compare the length of input collating element and
+ the length of current collating element. */
+ if (*coll_sym != elem_len)
+ continue;
+ /* Compare each bytes. */
+ for (j = 0; j < *coll_sym; j++)
+ if (pin[j] != coll_sym[1 + j])
+ break;
+ if (j == *coll_sym)
+ {
+ /* Match if every bytes is equal. */
+ match_len = j;
+ goto check_node_accept_bytes_match;
+ }
+ }
+
+ if (cset->nranges)
+ {
+ if (elem_len <= char_len)
+ {
+ collseqwc = _NL_CURRENT (LC_COLLATE, _NL_COLLATE_COLLSEQWC);
+ in_collseq = __collseq_table_lookup (collseqwc, wc);
+ }
+ else
+ in_collseq = find_collation_sequence_value (pin, elem_len);
+ }
+ /* match with range expression? */
+ for (i = 0; i < cset->nranges; ++i)
+ if (cset->range_starts[i] <= in_collseq
+ && in_collseq <= cset->range_ends[i])
+ {
+ match_len = elem_len;
+ goto check_node_accept_bytes_match;
+ }
+
+ /* match with equivalence_class? */
+ if (cset->nequiv_classes)
+ {
+ const unsigned char *cp = pin;
+ table = (const int32_t *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_TABLEMB);
+ weights = (const unsigned char *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_WEIGHTMB);
+ extra = (const unsigned char *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_EXTRAMB);
+ indirect = (const int32_t *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_INDIRECTMB);
+ idx = findidx (&cp);
+ if (idx > 0)
+ for (i = 0; i < cset->nequiv_classes; ++i)
+ {
+ int32_t equiv_class_idx = cset->equiv_classes[i];
+ size_t weight_len = weights[idx];
+ if (weight_len == weights[equiv_class_idx])
+ {
+ Idx cnt = 0;
+ while (cnt <= weight_len
+ && (weights[equiv_class_idx + 1 + cnt]
+ == weights[idx + 1 + cnt]))
+ ++cnt;
+ if (cnt > weight_len)
+ {
+ match_len = elem_len;
+ goto check_node_accept_bytes_match;
+ }
+ }
+ }
+ }
+ }
+ else
+# endif /* _LIBC */
+ {
+ /* match with range expression? */
+#if __GNUC__ >= 2 && ! (__STDC_VERSION__ < 199901L && __STRICT_ANSI__)
+ wchar_t cmp_buf[] = {L'\0', L'\0', wc, L'\0', L'\0', L'\0'};
+#else
+ wchar_t cmp_buf[] = {L'\0', L'\0', L'\0', L'\0', L'\0', L'\0'};
+ cmp_buf[2] = wc;
+#endif
+ for (i = 0; i < cset->nranges; ++i)
+ {
+ cmp_buf[0] = cset->range_starts[i];
+ cmp_buf[4] = cset->range_ends[i];
+ if (wcscoll (cmp_buf, cmp_buf + 2) <= 0
+ && wcscoll (cmp_buf + 2, cmp_buf + 4) <= 0)
+ {
+ match_len = char_len;
+ goto check_node_accept_bytes_match;
+ }
+ }
+ }
+ check_node_accept_bytes_match:
+ if (!cset->non_match)
+ return match_len;
+ else
+ {
+ if (match_len > 0)
+ return 0;
+ else
+ return (elem_len > char_len) ? elem_len : char_len;
+ }
+ }
+ return 0;
+}
+
+# ifdef _LIBC
+static unsigned int
+internal_function
+find_collation_sequence_value (const unsigned char *mbs, size_t mbs_len)
+{
+ uint32_t nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES);
+ if (nrules == 0)
+ {
+ if (mbs_len == 1)
+ {
+ /* No valid character. Match it as a single byte character. */
+ const unsigned char *collseq = (const unsigned char *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_COLLSEQMB);
+ return collseq[mbs[0]];
+ }
+ return UINT_MAX;
+ }
+ else
+ {
+ int32_t idx;
+ const unsigned char *extra = (const unsigned char *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_SYMB_EXTRAMB);
+ int32_t extrasize = (const unsigned char *)
+ _NL_CURRENT (LC_COLLATE, _NL_COLLATE_SYMB_EXTRAMB + 1) - extra;
+
+ for (idx = 0; idx < extrasize;)
+ {
+ int mbs_cnt;
+ bool found = false;
+ int32_t elem_mbs_len;
+ /* Skip the name of collating element name. */
+ idx = idx + extra[idx] + 1;
+ elem_mbs_len = extra[idx++];
+ if (mbs_len == elem_mbs_len)
+ {
+ for (mbs_cnt = 0; mbs_cnt < elem_mbs_len; ++mbs_cnt)
+ if (extra[idx + mbs_cnt] != mbs[mbs_cnt])
+ break;
+ if (mbs_cnt == elem_mbs_len)
+ /* Found the entry. */
+ found = true;
+ }
+ /* Skip the byte sequence of the collating element. */
+ idx += elem_mbs_len;
+ /* Adjust for the alignment. */
+ idx = (idx + 3) & ~3;
+ /* Skip the collation sequence value. */
+ idx += sizeof (uint32_t);
+ /* Skip the wide char sequence of the collating element. */
+ idx = idx + sizeof (uint32_t) * (extra[idx] + 1);
+ /* If we found the entry, return the sequence value. */
+ if (found)
+ return *(uint32_t *) (extra + idx);
+ /* Skip the collation sequence value. */
+ idx += sizeof (uint32_t);
+ }
+ return UINT_MAX;
+ }
+}
+# endif /* _LIBC */
+#endif /* RE_ENABLE_I18N */
+
+/* Check whether the node accepts the byte which is IDX-th
+ byte of the INPUT. */
+
+static bool
+internal_function
+check_node_accept (const re_match_context_t *mctx, const re_token_t *node,
+ Idx idx)
+{
+ unsigned char ch;
+ ch = re_string_byte_at (&mctx->input, idx);
+ switch (node->type)
+ {
+ case CHARACTER:
+ if (node->opr.c != ch)
+ return false;
+ break;
+
+ case SIMPLE_BRACKET:
+ if (!bitset_contain (node->opr.sbcset, ch))
+ return false;
+ break;
+
+#ifdef RE_ENABLE_I18N
+ case OP_UTF8_PERIOD:
+ if (ch >= ASCII_CHARS)
+ return false;
+ /* FALLTHROUGH */
+#endif
+ case OP_PERIOD:
+ if ((ch == '\n' && !(mctx->dfa->syntax & RE_DOT_NEWLINE))
+ || (ch == '\0' && (mctx->dfa->syntax & RE_DOT_NOT_NULL)))
+ return false;
+ break;
+
+ default:
+ return false;
+ }
+
+ if (node->constraint)
+ {
+ /* The node has constraints. Check whether the current context
+ satisfies the constraints. */
+ unsigned int context = re_string_context_at (&mctx->input, idx,
+ mctx->eflags);
+ if (NOT_SATISFY_NEXT_CONSTRAINT (node->constraint, context))
+ return false;
+ }
+
+ return true;
+}
+
+/* Extend the buffers, if the buffers have run out. */
+
+static reg_errcode_t
+internal_function
+extend_buffers (re_match_context_t *mctx)
+{
+ reg_errcode_t ret;
+ re_string_t *pstr = &mctx->input;
+
+ /* Avoid overflow. */
+ if (BE (SIZE_MAX / 2 / sizeof (re_dfastate_t *) <= pstr->bufs_len, 0))
+ return REG_ESPACE;
+
+ /* Double the lengthes of the buffers. */
+ ret = re_string_realloc_buffers (pstr, pstr->bufs_len * 2);
+ if (BE (ret != REG_NOERROR, 0))
+ return ret;
+
+ if (mctx->state_log != NULL)
+ {
+ /* And double the length of state_log. */
+ /* XXX We have no indication of the size of this buffer. If this
+ allocation fail we have no indication that the state_log array
+ does not have the right size. */
+ re_dfastate_t **new_array = re_realloc (mctx->state_log, re_dfastate_t *,
+ pstr->bufs_len + 1);
+ if (BE (new_array == NULL, 0))
+ return REG_ESPACE;
+ mctx->state_log = new_array;
+ }
+
+ /* Then reconstruct the buffers. */
+ if (pstr->icase)
+ {
+#ifdef RE_ENABLE_I18N
+ if (pstr->mb_cur_max > 1)
+ {
+ ret = build_wcs_upper_buffer (pstr);
+ if (BE (ret != REG_NOERROR, 0))
+ return ret;
+ }
+ else
+#endif /* RE_ENABLE_I18N */
+ build_upper_buffer (pstr);
+ }
+ else
+ {
+#ifdef RE_ENABLE_I18N
+ if (pstr->mb_cur_max > 1)
+ build_wcs_buffer (pstr);
+ else
+#endif /* RE_ENABLE_I18N */
+ {
+ if (pstr->trans != NULL)
+ re_string_translate_buffer (pstr);
+ }
+ }
+ return REG_NOERROR;
+}
+
+
+/* Functions for matching context. */
+
+/* Initialize MCTX. */
+
+static reg_errcode_t
+internal_function
+match_ctx_init (re_match_context_t *mctx, int eflags, Idx n)
+{
+ mctx->eflags = eflags;
+ mctx->match_last = REG_MISSING;
+ if (n > 0)
+ {
+ /* Avoid overflow. */
+ size_t max_object_size =
+ MAX (sizeof (struct re_backref_cache_entry),
+ sizeof (re_sub_match_top_t *));
+ if (BE (SIZE_MAX / max_object_size < n, 0))
+ return REG_ESPACE;
+
+ mctx->bkref_ents = re_malloc (struct re_backref_cache_entry, n);
+ mctx->sub_tops = re_malloc (re_sub_match_top_t *, n);
+ if (BE (mctx->bkref_ents == NULL || mctx->sub_tops == NULL, 0))
+ return REG_ESPACE;
+ }
+ /* Already zero-ed by the caller.
+ else
+ mctx->bkref_ents = NULL;
+ mctx->nbkref_ents = 0;
+ mctx->nsub_tops = 0; */
+ mctx->abkref_ents = n;
+ mctx->max_mb_elem_len = 1;
+ mctx->asub_tops = n;
+ return REG_NOERROR;
+}
+
+/* Clean the entries which depend on the current input in MCTX.
+ This function must be invoked when the matcher changes the start index
+ of the input, or changes the input string. */
+
+static void
+internal_function
+match_ctx_clean (re_match_context_t *mctx)
+{
+ Idx st_idx;
+ for (st_idx = 0; st_idx < mctx->nsub_tops; ++st_idx)
+ {
+ Idx sl_idx;
+ re_sub_match_top_t *top = mctx->sub_tops[st_idx];
+ for (sl_idx = 0; sl_idx < top->nlasts; ++sl_idx)
+ {
+ re_sub_match_last_t *last = top->lasts[sl_idx];
+ re_free (last->path.array);
+ re_free (last);
+ }
+ re_free (top->lasts);
+ if (top->path)
+ {
+ re_free (top->path->array);
+ re_free (top->path);
+ }
+ free (top);
+ }
+
+ mctx->nsub_tops = 0;
+ mctx->nbkref_ents = 0;
+}
+
+/* Free all the memory associated with MCTX. */
+
+static void
+internal_function
+match_ctx_free (re_match_context_t *mctx)
+{
+ /* First, free all the memory associated with MCTX->SUB_TOPS. */
+ match_ctx_clean (mctx);
+ re_free (mctx->sub_tops);
+ re_free (mctx->bkref_ents);
+}
+
+/* Add a new backreference entry to MCTX.
+ Note that we assume that caller never call this function with duplicate
+ entry, and call with STR_IDX which isn't smaller than any existing entry.
+*/
+
+static reg_errcode_t
+internal_function
+match_ctx_add_entry (re_match_context_t *mctx, Idx node, Idx str_idx, Idx from,
+ Idx to)
+{
+ if (mctx->nbkref_ents >= mctx->abkref_ents)
+ {
+ struct re_backref_cache_entry* new_entry;
+ new_entry = re_realloc (mctx->bkref_ents, struct re_backref_cache_entry,
+ mctx->abkref_ents * 2);
+ if (BE (new_entry == NULL, 0))
+ {
+ re_free (mctx->bkref_ents);
+ return REG_ESPACE;
+ }
+ mctx->bkref_ents = new_entry;
+ memset (mctx->bkref_ents + mctx->nbkref_ents, '\0',
+ sizeof (struct re_backref_cache_entry) * mctx->abkref_ents);
+ mctx->abkref_ents *= 2;
+ }
+ if (mctx->nbkref_ents > 0
+ && mctx->bkref_ents[mctx->nbkref_ents - 1].str_idx == str_idx)
+ mctx->bkref_ents[mctx->nbkref_ents - 1].more = 1;
+
+ mctx->bkref_ents[mctx->nbkref_ents].node = node;
+ mctx->bkref_ents[mctx->nbkref_ents].str_idx = str_idx;
+ mctx->bkref_ents[mctx->nbkref_ents].subexp_from = from;
+ mctx->bkref_ents[mctx->nbkref_ents].subexp_to = to;
+
+ /* This is a cache that saves negative results of check_dst_limits_calc_pos.
+ If bit N is clear, means that this entry won't epsilon-transition to
+ an OP_OPEN_SUBEXP or OP_CLOSE_SUBEXP for the N+1-th subexpression. If
+ it is set, check_dst_limits_calc_pos_1 will recurse and try to find one
+ such node.
+
+ A backreference does not epsilon-transition unless it is empty, so set
+ to all zeros if FROM != TO. */
+ mctx->bkref_ents[mctx->nbkref_ents].eps_reachable_subexps_map
+ = (from == to ? -1 : 0);
+
+ mctx->bkref_ents[mctx->nbkref_ents++].more = 0;
+ if (mctx->max_mb_elem_len < to - from)
+ mctx->max_mb_elem_len = to - from;
+ return REG_NOERROR;
+}
+
+/* Return the first entry with the same str_idx, or REG_MISSING if none is
+ found. Note that MCTX->BKREF_ENTS is already sorted by MCTX->STR_IDX. */
+
+static Idx
+internal_function
+search_cur_bkref_entry (const re_match_context_t *mctx, Idx str_idx)
+{
+ Idx left, right, mid, last;
+ last = right = mctx->nbkref_ents;
+ for (left = 0; left < right;)
+ {
+ mid = (left + right) / 2;
+ if (mctx->bkref_ents[mid].str_idx < str_idx)
+ left = mid + 1;
+ else
+ right = mid;
+ }
+ if (left < last && mctx->bkref_ents[left].str_idx == str_idx)
+ return left;
+ else
+ return REG_MISSING;
+}
+
+/* Register the node NODE, whose type is OP_OPEN_SUBEXP, and which matches
+ at STR_IDX. */
+
+static reg_errcode_t
+internal_function
+match_ctx_add_subtop (re_match_context_t *mctx, Idx node, Idx str_idx)
+{
+#ifdef DEBUG
+ assert (mctx->sub_tops != NULL);
+ assert (mctx->asub_tops > 0);
+#endif
+ if (BE (mctx->nsub_tops == mctx->asub_tops, 0))
+ {
+ Idx new_asub_tops = mctx->asub_tops * 2;
+ re_sub_match_top_t **new_array = re_realloc (mctx->sub_tops,
+ re_sub_match_top_t *,
+ new_asub_tops);
+ if (BE (new_array == NULL, 0))
+ return REG_ESPACE;
+ mctx->sub_tops = new_array;
+ mctx->asub_tops = new_asub_tops;
+ }
+ mctx->sub_tops[mctx->nsub_tops] = calloc (1, sizeof (re_sub_match_top_t));
+ if (BE (mctx->sub_tops[mctx->nsub_tops] == NULL, 0))
+ return REG_ESPACE;
+ mctx->sub_tops[mctx->nsub_tops]->node = node;
+ mctx->sub_tops[mctx->nsub_tops++]->str_idx = str_idx;
+ return REG_NOERROR;
+}
+
+/* Register the node NODE, whose type is OP_CLOSE_SUBEXP, and which matches
+ at STR_IDX, whose corresponding OP_OPEN_SUBEXP is SUB_TOP. */
+
+static re_sub_match_last_t *
+internal_function
+match_ctx_add_sublast (re_sub_match_top_t *subtop, Idx node, Idx str_idx)
+{
+ re_sub_match_last_t *new_entry;
+ if (BE (subtop->nlasts == subtop->alasts, 0))
+ {
+ Idx new_alasts = 2 * subtop->alasts + 1;
+ re_sub_match_last_t **new_array = re_realloc (subtop->lasts,
+ re_sub_match_last_t *,
+ new_alasts);
+ if (BE (new_array == NULL, 0))
+ return NULL;
+ subtop->lasts = new_array;
+ subtop->alasts = new_alasts;
+ }
+ new_entry = calloc (1, sizeof (re_sub_match_last_t));
+ if (BE (new_entry != NULL, 1))
+ {
+ subtop->lasts[subtop->nlasts] = new_entry;
+ new_entry->node = node;
+ new_entry->str_idx = str_idx;
+ ++subtop->nlasts;
+ }
+ return new_entry;
+}
+
+static void
+internal_function
+sift_ctx_init (re_sift_context_t *sctx, re_dfastate_t **sifted_sts,
+ re_dfastate_t **limited_sts, Idx last_node, Idx last_str_idx)
+{
+ sctx->sifted_states = sifted_sts;
+ sctx->limited_states = limited_sts;
+ sctx->last_node = last_node;
+ sctx->last_str_idx = last_str_idx;
+ re_node_set_init_empty (&sctx->limits);
+}
diff --git a/lib/rename-dest-slash.c b/lib/rename-dest-slash.c
new file mode 100644
index 0000000..e07ff9c
--- /dev/null
+++ b/lib/rename-dest-slash.c
@@ -0,0 +1,88 @@
+/* A rename wrapper to make tools like mv -- that would normally rely
+ on the underlying rename syscall -- work more consistently.
+ On at least NetBSD 1.6, `rename ("dir", "B/")' fails when B doesn't
+ exist, whereas it succeeds on Linux-2.6.x and Solaris 10. This wrapper
+ provides an interface for systems like the former so that the tools
+ (namely mv) relying on the rename syscall have more consistent
+ semantics.
+
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+#undef rename
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <errno.h>
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "dirname.h"
+#include "xalloc.h"
+
+static bool
+has_trailing_slash (char const *file)
+{
+ /* Don't count "/", "//", etc., as having a trailing slash. */
+ bool has_non_slash = false;
+ bool ends_in_slash = false;
+
+ for (file += FILE_SYSTEM_PREFIX_LEN (file); *file; file++)
+ {
+ ends_in_slash = ISSLASH (*file);
+ has_non_slash |= ~ ends_in_slash;
+ }
+
+ return has_non_slash & ends_in_slash;
+}
+
+/* This is a rename wrapper for systems where the rename syscall
+ works differently than desired when SRC is a directory and DST does
+ not exist but is specified with a trailing slash. On NetBSD 6.1,
+ rename fails in that case. On Linux and Solaris systems, it succeeds.
+ This wrapper makes it succeed on NetBSD by running the originally
+ requested rename, and if it fails due to the above scenario, calling
+ it again with DST's trailing slashes removed. */
+int
+rpl_rename_dest_slash (char const *src, char const *dst)
+{
+ int ret_val = rename (src, dst);
+
+ if (ret_val != 0 && errno == ENOENT && has_trailing_slash (dst))
+ {
+ int rename_errno = ENOENT;
+
+ /* Fail now, unless SRC is a directory. */
+ struct stat sb;
+ if (lstat (src, &sb) == 0 && S_ISDIR (sb.st_mode))
+ {
+ char *dst_temp = xstrdup (dst);
+ strip_trailing_slashes (dst_temp);
+ ret_val = rename (src, dst_temp);
+ rename_errno = errno;
+ free (dst_temp);
+ }
+
+ errno = rename_errno;
+ }
+
+ return ret_val;
+}
diff --git a/lib/rename.c b/lib/rename.c
new file mode 100644
index 0000000..32d2b01
--- /dev/null
+++ b/lib/rename.c
@@ -0,0 +1,57 @@
+/* Work around the bug in some systems whereby rename fails when the source
+ file has a trailing slash. The rename functions of SunOS 4.1.1_U1 and
+ mips-dec-ultrix4.4 have this bug.
+
+ Copyright (C) 2001, 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Volker Borchert */
+
+#include <config.h>
+#undef rename
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "dirname.h"
+#include "xalloc.h"
+
+/* Rename the file SRC to DST, removing any trailing
+ slashes from SRC. Needed for SunOS 4.1.1_U1. */
+
+int
+rpl_rename (char const *src, char const *dst)
+{
+ char *src_temp;
+ int ret_val;
+ size_t s_len = strlen (src);
+
+ if (s_len && src[s_len - 1] == '/')
+ {
+ src_temp = xstrdup (src);
+ strip_trailing_slashes (src_temp);
+ }
+ else
+ src_temp = (char *) src;
+
+ ret_val = rename (src_temp, dst);
+
+ if (src_temp != src)
+ free (src_temp);
+
+ return ret_val;
+}
diff --git a/lib/rmdir.c b/lib/rmdir.c
new file mode 100644
index 0000000..1221f4f
--- /dev/null
+++ b/lib/rmdir.c
@@ -0,0 +1,74 @@
+/* BSD compatible remove directory function for System V
+
+ Copyright (C) 1988, 1990, 1999, 2003, 2004, 2005, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <errno.h>
+
+/* rmdir adapted from GNU tar. */
+
+/* Remove directory DIR.
+ Return 0 if successful, -1 if not. */
+
+int
+rmdir (char const *dir)
+{
+ pid_t cpid;
+ int status;
+ struct stat statbuf;
+
+ if (stat (dir, &statbuf) != 0)
+ return -1; /* errno already set */
+
+ if (!S_ISDIR (statbuf.st_mode))
+ {
+ errno = ENOTDIR;
+ return -1;
+ }
+
+ cpid = fork ();
+ switch (cpid)
+ {
+ case -1: /* cannot fork */
+ return -1; /* errno already set */
+
+ case 0: /* child process */
+ execl ("/bin/rmdir", "rmdir", dir, (char *) 0);
+ _exit (1);
+
+ default: /* parent process */
+
+ /* Wait for kid to finish. */
+
+ while (wait (&status) != cpid)
+ /* Do nothing. */ ;
+
+ if (status)
+ {
+
+ /* /bin/rmdir failed. */
+
+ errno = EIO;
+ return -1;
+ }
+ return 0;
+ }
+}
diff --git a/lib/root-dev-ino.c b/lib/root-dev-ino.c
new file mode 100644
index 0000000..4c35d2f
--- /dev/null
+++ b/lib/root-dev-ino.c
@@ -0,0 +1,40 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* root-dev-ino.c -- get the device and inode numbers for `/'.
+ Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+
+#include "root-dev-ino.h"
+
+#include <stdlib.h>
+
+/* Call lstat to get the device and inode numbers for `/'.
+ Upon failure, return NULL. Otherwise, set the members of
+ *ROOT_D_I accordingly and return ROOT_D_I. */
+struct dev_ino *
+get_root_dev_ino (struct dev_ino *root_d_i)
+{
+ struct stat statbuf;
+ if (lstat ("/", &statbuf))
+ return NULL;
+ root_d_i->st_ino = statbuf.st_ino;
+ root_d_i->st_dev = statbuf.st_dev;
+ return root_d_i;
+}
diff --git a/lib/root-dev-ino.h b/lib/root-dev-ino.h
new file mode 100644
index 0000000..3f9a407
--- /dev/null
+++ b/lib/root-dev-ino.h
@@ -0,0 +1,50 @@
+/* -*- buffer-read-only: t -*- vi: set ro: */
+/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
+/* Root device and inode number checking.
+
+ Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef ROOT_DEV_INO_H
+# define ROOT_DEV_INO_H 1
+
+# include "dev-ino.h"
+# include "same-inode.h"
+
+struct dev_ino *
+get_root_dev_ino (struct dev_ino *root_d_i);
+
+/* These macros are common to the programs that support the
+ --preserve-root and --no-preserve-root options. */
+
+# define ROOT_DEV_INO_CHECK(Root_dev_ino, Dir_statbuf) \
+ (Root_dev_ino && SAME_INODE (*Dir_statbuf, *Root_dev_ino))
+
+# define ROOT_DEV_INO_WARN(Dirname) \
+ do \
+ { \
+ if (STREQ (Dirname, "/")) \
+ error (0, 0, _("it is dangerous to operate recursively on %s"), \
+ quote (Dirname)); \
+ else \
+ error (0, 0, \
+ _("it is dangerous to operate recursively on %s (same as %s)"), \
+ quote_n (0, Dirname), quote_n (1, "/")); \
+ error (0, 0, _("use --no-preserve-root to override this failsafe")); \
+ } \
+ while (0)
+
+#endif
diff --git a/lib/rpmatch.c b/lib/rpmatch.c
new file mode 100644
index 0000000..e5f79f8
--- /dev/null
+++ b/lib/rpmatch.c
@@ -0,0 +1,79 @@
+/* Determine whether string value is affirmation or negative response
+ according to current locale's data.
+
+ Copyright (C) 1996, 1998, 2000, 2002, 2003, 2006 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include <stddef.h>
+#include <stdlib.h>
+
+#if ENABLE_NLS
+# include <sys/types.h>
+# include <limits.h>
+# include <regex.h>
+# include "gettext.h"
+# define _(msgid) gettext (msgid)
+
+static int
+try (const char *response, const char *pattern, const int match,
+ const int nomatch, const char **lastp, regex_t *re)
+{
+ if (pattern != *lastp)
+ {
+ /* The pattern has changed. */
+ if (*lastp)
+ {
+ /* Free the old compiled pattern. */
+ regfree (re);
+ *lastp = NULL;
+ }
+ /* Compile the pattern and cache it for future runs. */
+ if (regcomp (re, pattern, REG_EXTENDED) != 0)
+ return -1;
+ *lastp = pattern;
+ }
+
+ /* See if the regular expression matches RESPONSE. */
+ return regexec (re, response, 0, NULL, 0) == 0 ? match : nomatch;
+}
+#endif
+
+
+int
+rpmatch (const char *response)
+{
+#if ENABLE_NLS
+ /* Match against one of the response patterns, compiling the pattern
+ first if necessary. */
+
+ /* We cache the response patterns and compiled regexps here. */
+ static const char *yesexpr, *noexpr;
+ static regex_t yesre, nore;
+ int result;
+
+ return ((result = try (response, _("^[yY]"), 1, 0,
+ &yesexpr, &yesre))
+ ? result
+ : try (response, _("^[nN]"), 0, -1, &noexpr, &nore));
+#else
+ /* Test against "^[yY]" and "^[nN]", hardcoded to avoid requiring regex */
+ return (*response == 'y' || *response == 'Y' ? 1
+ : *response == 'n' || *response == 'N' ? 0 : -1);
+#endif
+}
diff --git a/lib/safe-read.c b/lib/safe-read.c
new file mode 100644
index 0000000..b7bf1d5
--- /dev/null
+++ b/lib/safe-read.c
@@ -0,0 +1,78 @@
+/* An interface to read and write that retries after interrupts.
+
+ Copyright (C) 1993, 1994, 1998, 2002, 2003, 2004, 2005, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#ifdef SAFE_WRITE
+# include "safe-write.h"
+#else
+# include "safe-read.h"
+#endif
+
+/* Get ssize_t. */
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <errno.h>
+
+#ifdef EINTR
+# define IS_EINTR(x) ((x) == EINTR)
+#else
+# define IS_EINTR(x) 0
+#endif
+
+#include <limits.h>
+
+#ifdef SAFE_WRITE
+# define safe_rw safe_write
+# define rw write
+#else
+# define safe_rw safe_read
+# define rw read
+# undef const
+# define const /* empty */
+#endif
+
+/* Read(write) up to COUNT bytes at BUF from(to) descriptor FD, retrying if
+ interrupted. Return the actual number of bytes read(written), zero for EOF,
+ or SAFE_READ_ERROR(SAFE_WRITE_ERROR) upon error. */
+size_t
+safe_rw (int fd, void const *buf, size_t count)
+{
+ /* Work around a bug in Tru64 5.1. Attempting to read more than
+ INT_MAX bytes fails with errno == EINVAL. See
+ <http://lists.gnu.org/archive/html/bug-gnu-utils/2002-04/msg00010.html>.
+ When decreasing COUNT, keep it block-aligned. */
+ enum { BUGGY_READ_MAXIMUM = INT_MAX & ~8191 };
+
+ for (;;)
+ {
+ ssize_t result = rw (fd, buf, count);
+
+ if (0 <= result)
+ return result;
+ else if (IS_EINTR (errno))
+ continue;
+ else if (errno == EINVAL && BUGGY_READ_MAXIMUM < count)
+ count = BUGGY_READ_MAXIMUM;
+ else
+ return result;
+ }
+}
diff --git a/lib/safe-read.h b/lib/safe-read.h
new file mode 100644
index 0000000..3451955
--- /dev/null
+++ b/lib/safe-read.h
@@ -0,0 +1,35 @@
+/* An interface to read() that retries after interrupts.
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define SAFE_READ_ERROR ((size_t) -1)
+
+/* Read up to COUNT bytes at BUF from descriptor FD, retrying if interrupted.
+ Return the actual number of bytes read, zero for EOF, or SAFE_READ_ERROR
+ upon error. */
+extern size_t safe_read (int fd, void *buf, size_t count);
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/lib/safe-write.c b/lib/safe-write.c
new file mode 100644
index 0000000..4c375a6
--- /dev/null
+++ b/lib/safe-write.c
@@ -0,0 +1,19 @@
+/* An interface to write that retries after interrupts.
+ Copyright (C) 2002 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define SAFE_WRITE
+#include "safe-read.c"
diff --git a/lib/safe-write.h b/lib/safe-write.h
new file mode 100644
index 0000000..c194636
--- /dev/null
+++ b/lib/safe-write.h
@@ -0,0 +1,25 @@
+/* An interface to write() that retries after interrupts.
+ Copyright (C) 2002 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <stddef.h>
+
+#define SAFE_WRITE_ERROR ((size_t) -1)
+
+/* Write up to COUNT bytes at BUF to descriptor FD, retrying if interrupted.
+ Return the actual number of bytes written, zero for EOF, or SAFE_WRITE_ERROR
+ upon error. */
+extern size_t safe_write (int fd, const void *buf, size_t count);
diff --git a/lib/same-inode.h b/lib/same-inode.h
new file mode 100644
index 0000000..deca87b
--- /dev/null
+++ b/lib/same-inode.h
@@ -0,0 +1,26 @@
+/* Determine whether two stat buffers refer to the same file.
+
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef SAME_INODE_H
+# define SAME_INODE_H 1
+
+# define SAME_INODE(Stat_buf_1, Stat_buf_2) \
+ ((Stat_buf_1).st_ino == (Stat_buf_2).st_ino \
+ && (Stat_buf_1).st_dev == (Stat_buf_2).st_dev)
+
+#endif
diff --git a/lib/same.c b/lib/same.c
new file mode 100644
index 0000000..11590c6
--- /dev/null
+++ b/lib/same.c
@@ -0,0 +1,126 @@
+/* Determine whether two file names refer to the same file.
+
+ Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <ctype.h>
+#include <errno.h>
+
+#include <string.h>
+
+#include <limits.h>
+#ifndef _POSIX_NAME_MAX
+# define _POSIX_NAME_MAX 14
+#endif
+
+#include "same.h"
+#include "dirname.h"
+#include "error.h"
+#include "same-inode.h"
+#include "xalloc.h"
+
+#ifndef MIN
+# define MIN(a, b) ((a) < (b) ? (a) : (b))
+#endif
+
+/* Return nonzero if SOURCE and DEST point to the same name in the same
+ directory. */
+
+bool
+same_name (const char *source, const char *dest)
+{
+ /* Compare the basenames. */
+ char const *source_basename = last_component (source);
+ char const *dest_basename = last_component (dest);
+ size_t source_baselen = base_len (source_basename);
+ size_t dest_baselen = base_len (dest_basename);
+ bool identical_basenames =
+ (source_baselen == dest_baselen
+ && memcmp (source_basename, dest_basename, dest_baselen) == 0);
+ bool compare_dirs = identical_basenames;
+ bool same = false;
+
+#if ! _POSIX_NO_TRUNC && HAVE_PATHCONF && defined _PC_NAME_MAX
+ /* This implementation silently truncates components of file names. If
+ the base names might be truncated, check whether the truncated
+ base names are the same, while checking the directories. */
+ size_t slen_max = HAVE_LONG_FILE_NAMES ? 255 : _POSIX_NAME_MAX;
+ size_t min_baselen = MIN (source_baselen, dest_baselen);
+ if (slen_max <= min_baselen
+ && memcmp (source_basename, dest_basename, slen_max) == 0)
+ compare_dirs = true;
+#endif
+
+ if (compare_dirs)
+ {
+ struct stat source_dir_stats;
+ struct stat dest_dir_stats;
+ char *source_dirname, *dest_dirname;
+
+ /* Compare the parent directories (via the device and inode numbers). */
+ source_dirname = dir_name (source);
+ dest_dirname = dir_name (dest);
+
+ if (stat (source_dirname, &source_dir_stats))
+ {
+ /* Shouldn't happen. */
+ error (1, errno, "%s", source_dirname);
+ }
+
+ if (stat (dest_dirname, &dest_dir_stats))
+ {
+ /* Shouldn't happen. */
+ error (1, errno, "%s", dest_dirname);
+ }
+
+ same = SAME_INODE (source_dir_stats, dest_dir_stats);
+
+#if ! _POSIX_NO_TRUNC && HAVE_PATHCONF && defined _PC_NAME_MAX
+ if (same && ! identical_basenames)
+ {
+ long name_max = (errno = 0, pathconf (dest_dirname, _PC_NAME_MAX));
+ if (name_max < 0)
+ {
+ if (errno)
+ {
+ /* Shouldn't happen. */
+ error (1, errno, "%s", dest_dirname);
+ }
+ same = false;
+ }
+ else
+ same = (name_max <= min_baselen
+ && memcmp (source_basename, dest_basename, name_max) == 0);
+ }
+#endif
+
+ free (source_dirname);
+ free (dest_dirname);
+ }
+
+ return same;
+}
diff --git a/lib/same.h b/lib/same.h
new file mode 100644
index 0000000..9fc0579
--- /dev/null
+++ b/lib/same.h
@@ -0,0 +1,27 @@
+/* Determine whether two file names refer to the same file.
+
+ Copyright (C) 1997, 1998, 1999, 2000, 2003, 2004 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef SAME_H_
+# define SAME_H_ 1
+
+# include <stdbool.h>
+
+bool same_name (const char *source, const char *dest);
+
+#endif /* SAME_H_ */
diff --git a/lib/save-cwd.c b/lib/save-cwd.c
new file mode 100644
index 0000000..f07973a
--- /dev/null
+++ b/lib/save-cwd.c
@@ -0,0 +1,103 @@
+/* save-cwd.c -- Save and restore current working directory.
+
+ Copyright (C) 1995, 1997, 1998, 2003, 2004, 2005, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+
+#include "save-cwd.h"
+
+#include <errno.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "chdir-long.h"
+#include "fcntl--.h"
+#include "xgetcwd.h"
+
+/* On systems without the fchdir function (WOE), pretend that open
+ always returns -1 so that save_cwd resorts to using xgetcwd.
+ Since chdir_long requires fchdir, use chdir instead. */
+#if !HAVE_FCHDIR
+# undef open
+# define open(File, Flags) (-1)
+# undef fchdir
+# define fchdir(Fd) (abort (), -1)
+# undef chdir_long
+# define chdir_long(Dir) chdir (Dir)
+#endif
+
+/* Record the location of the current working directory in CWD so that
+ the program may change to other directories and later use restore_cwd
+ to return to the recorded location. This function may allocate
+ space using malloc (via xgetcwd) or leave a file descriptor open;
+ use free_cwd to perform the necessary free or close. Upon failure,
+ no memory is allocated, any locally opened file descriptors are
+ closed; return non-zero -- in that case, free_cwd need not be
+ called, but doing so is ok. Otherwise, return zero.
+
+ The `raison d'etre' for this interface is that the working directory
+ is sometimes inaccessible, and getcwd is not robust or as efficient.
+ So, we prefer to use the open/fchdir approach, but fall back on
+ getcwd if necessary.
+
+ Some systems lack fchdir altogether: e.g., OS/2, pre-2001 Cygwin,
+ SCO Xenix. Also, SunOS 4 and Irix 5.3 provide the function, yet it
+ doesn't work for partitions on which auditing is enabled. If
+ you're still using an obsolete system with these problems, please
+ send email to the maintainer of this code. */
+
+int
+save_cwd (struct saved_cwd *cwd)
+{
+ cwd->name = NULL;
+
+ cwd->desc = open (".", O_RDONLY);
+ if (cwd->desc < 0)
+ {
+ cwd->name = xgetcwd ();
+ return cwd->name ? 0 : -1;
+ }
+
+ return 0;
+}
+
+/* Change to recorded location, CWD, in directory hierarchy.
+ Upon failure, return -1 (errno is set by chdir or fchdir).
+ Upon success, return zero. */
+
+int
+restore_cwd (const struct saved_cwd *cwd)
+{
+ if (0 <= cwd->desc)
+ return fchdir (cwd->desc);
+ else
+ return chdir_long (cwd->name);
+}
+
+void
+free_cwd (struct saved_cwd *cwd)
+{
+ if (cwd->desc >= 0)
+ close (cwd->desc);
+ if (cwd->name)
+ free (cwd->name);
+}
diff --git a/lib/save-cwd.h b/lib/save-cwd.h
new file mode 100644
index 0000000..d646b55
--- /dev/null
+++ b/lib/save-cwd.h
@@ -0,0 +1,34 @@
+/* Save and restore current working directory.
+
+ Copyright (C) 1995, 1997, 1998, 2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#ifndef SAVE_CWD_H
+# define SAVE_CWD_H 1
+
+struct saved_cwd
+ {
+ int desc;
+ char *name;
+ };
+
+int save_cwd (struct saved_cwd *cwd);
+int restore_cwd (const struct saved_cwd *cwd);
+void free_cwd (struct saved_cwd *cwd);
+
+#endif /* SAVE_CWD_H */
diff --git a/lib/savedir.c b/lib/savedir.c
new file mode 100644
index 0000000..d930fb4
--- /dev/null
+++ b/lib/savedir.c
@@ -0,0 +1,137 @@
+/* savedir.c -- save the list of files in a directory in a string
+
+ Copyright (C) 1990, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+ 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
+
+#include <config.h>
+
+#include "savedir.h"
+
+#include <sys/types.h>
+
+#include <errno.h>
+
+#include <dirent.h>
+#ifndef _D_EXACT_NAMLEN
+# define _D_EXACT_NAMLEN(dp) strlen ((dp)->d_name)
+#endif
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "openat.h"
+#include "xalloc.h"
+
+#ifndef NAME_SIZE_DEFAULT
+# define NAME_SIZE_DEFAULT 512
+#endif
+
+/* The results of opendir() in this file are not used with dirfd and fchdir,
+ therefore save some unnecessary work in fchdir.c. */
+#undef opendir
+#undef closedir
+
+/* Return a freshly allocated string containing the file names
+ in directory DIRP, separated by '\0' characters;
+ the end is marked by two '\0' characters in a row.
+ Return NULL (setting errno) if DIRP cannot be read or closed.
+ If DIRP is NULL, return NULL without affecting errno. */
+
+static char *
+savedirstream (DIR *dirp)
+{
+ char *name_space;
+ size_t allocated = NAME_SIZE_DEFAULT;
+ size_t used = 0;
+ int save_errno;
+
+ if (dirp == NULL)
+ return NULL;
+
+ name_space = xmalloc (allocated);
+
+ for (;;)
+ {
+ struct dirent const *dp;
+ char const *entry;
+
+ errno = 0;
+ dp = readdir (dirp);
+ if (! dp)
+ break;
+
+ /* Skip "", ".", and "..". "" is returned by at least one buggy
+ implementation: Solaris 2.4 readdir on NFS file systems. */
+ entry = dp->d_name;
+ if (entry[entry[0] != '.' ? 0 : entry[1] != '.' ? 1 : 2] != '\0')
+ {
+ size_t entry_size = _D_EXACT_NAMLEN (dp) + 1;
+ if (used + entry_size < used)
+ xalloc_die ();
+ if (allocated <= used + entry_size)
+ {
+ do
+ {
+ if (2 * allocated < allocated)
+ xalloc_die ();
+ allocated *= 2;
+ }
+ while (allocated <= used + entry_size);
+
+ name_space = xrealloc (name_space, allocated);
+ }
+ memcpy (name_space + used, entry, entry_size);
+ used += entry_size;
+ }
+ }
+ name_space[used] = '\0';
+ save_errno = errno;
+ if (closedir (dirp) != 0)
+ save_errno = errno;
+ if (save_errno != 0)
+ {
+ free (name_space);
+ errno = save_errno;
+ return NULL;
+ }
+ return name_space;
+}
+
+/* Return a freshly allocated string containing the file names
+ in directory DIR, separated by '\0' characters;
+ the end is marked by two '\0' characters in a row.
+ Return NULL (setting errno) if DIR cannot be opened, read, or closed. */
+
+char *
+savedir (char const *dir)
+{
+ return savedirstream (opendir (dir));
+}
+
+/* Return a freshly allocated string containing the file names
+ in directory FD, separated by '\0' characters;
+ the end is marked by two '\0' characters in a row.
+ Return NULL (setting errno) if FD cannot be read or closed. */
+
+char *
+fdsavedir (int fd)
+{
+ return savedirstream (fdopendir (fd));
+}
diff --git a/lib/savedir.h b/lib/savedir.h
new file mode 100644
index 0000000..5b7bef9
--- /dev/null
+++ b/lib/savedir.h
@@ -0,0 +1,27 @@
+/* Save the list of files in a directory in a string.
+
+ Copyright (C) 1997, 1999, 2001, 2003, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
+
+#if !defined SAVEDIR_H_
+# define SAVEDIR_H_
+
+char *savedir (char const *dir);
+char *fdsavedir (int fd);
+
+#endif
diff --git a/lib/savewd.c b/lib/savewd.c
new file mode 100644
index 0000000..9af3085
--- /dev/null
+++ b/lib/savewd.c
@@ -0,0 +1,307 @@
+/* Save and restore the working directory, possibly using a child process.
+
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "savewd.h"
+
+#include <assert.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+#include "dirname.h"
+#include "fcntl-safer.h"
+
+
+/* Save the working directory into *WD, if it hasn't been saved
+ already. Return true if a child has been forked to do the real
+ work. */
+static bool
+savewd_save (struct savewd *wd)
+{
+ switch (wd->state)
+ {
+ case INITIAL_STATE:
+ /* Save the working directory, or prepare to fall back if possible. */
+ {
+ int fd = open_safer (".", O_RDONLY);
+ if (0 <= fd)
+ {
+ wd->state = FD_STATE;
+ wd->val.fd = fd;
+ break;
+ }
+ if (errno != EACCES && errno != ESTALE)
+ {
+ wd->state = ERROR_STATE;
+ wd->val.errnum = errno;
+ break;
+ }
+ }
+ wd->state = FORKING_STATE;
+ wd->val.child = -1;
+ /* Fall through. */
+ case FORKING_STATE:
+ if (wd->val.child < 0)
+ {
+ /* "Save" the initial working directory by forking a new
+ subprocess that will attempt all the work from the chdir
+ until until the next savewd_restore. */
+ wd->val.child = fork ();
+ if (wd->val.child != 0)
+ {
+ if (0 < wd->val.child)
+ return true;
+ wd->state = ERROR_STATE;
+ wd->val.errnum = errno;
+ }
+ }
+ break;
+
+ case FD_STATE:
+ case FD_POST_CHDIR_STATE:
+ case ERROR_STATE:
+ case FINAL_STATE:
+ break;
+
+ default:
+ assert (false);
+ }
+
+ return false;
+}
+
+int
+savewd_chdir (struct savewd *wd, char const *dir, int options,
+ int open_result[2])
+{
+ int fd = -1;
+ int result = 0;
+
+ /* Open the directory if requested, or if avoiding a race condition
+ is requested and possible. */
+ if (open_result
+ || (options & (HAVE_WORKING_O_NOFOLLOW ? SAVEWD_CHDIR_NOFOLLOW : 0)))
+ {
+ fd = open (dir,
+ (O_RDONLY | O_DIRECTORY | O_NOCTTY | O_NONBLOCK
+ | (options & SAVEWD_CHDIR_NOFOLLOW ? O_NOFOLLOW : 0)));
+
+ if (open_result)
+ {
+ open_result[0] = fd;
+ open_result[1] = errno;
+ }
+
+ if (fd < 0 && (errno != EACCES || (options & SAVEWD_CHDIR_READABLE)))
+ result = -1;
+ }
+
+ if (result == 0 && ! (0 <= fd && options & SAVEWD_CHDIR_SKIP_READABLE))
+ {
+ if (savewd_save (wd))
+ {
+ open_result = NULL;
+ result = -2;
+ }
+ else
+ {
+ result = (fd < 0 ? chdir (dir) : fchdir (fd));
+
+ if (result == 0)
+ switch (wd->state)
+ {
+ case FD_STATE:
+ wd->state = FD_POST_CHDIR_STATE;
+ break;
+
+ case ERROR_STATE:
+ case FD_POST_CHDIR_STATE:
+ case FINAL_STATE:
+ break;
+
+ case FORKING_STATE:
+ assert (wd->val.child == 0);
+ break;
+
+ default:
+ assert (false);
+ }
+ }
+ }
+
+ if (0 <= fd && ! open_result)
+ {
+ int e = errno;
+ close (fd);
+ errno = e;
+ }
+
+ return result;
+}
+
+int
+savewd_restore (struct savewd *wd, int status)
+{
+ switch (wd->state)
+ {
+ case INITIAL_STATE:
+ case FD_STATE:
+ /* The working directory is the desired directory, so there's no
+ work to do. */
+ break;
+
+ case FD_POST_CHDIR_STATE:
+ /* Restore the working directory using fchdir. */
+ if (fchdir (wd->val.fd) == 0)
+ {
+ wd->state = FD_STATE;
+ break;
+ }
+ else
+ {
+ int chdir_errno = errno;
+ close (wd->val.fd);
+ wd->state = ERROR_STATE;
+ wd->val.errnum = chdir_errno;
+ }
+ /* Fall through. */
+ case ERROR_STATE:
+ /* Report an error if asked to restore the working directory. */
+ errno = wd->val.errnum;
+ return -1;
+
+ case FORKING_STATE:
+ /* "Restore" the working directory by waiting for the subprocess
+ to finish. */
+ {
+ pid_t child = wd->val.child;
+ if (child == 0)
+ _exit (status);
+ if (0 < child)
+ {
+ int child_status;
+ while (waitpid (child, &child_status, 0) < 0)
+ assert (errno == EINTR);
+ wd->val.child = -1;
+ if (! WIFEXITED (child_status))
+ raise (WTERMSIG (child_status));
+ return WEXITSTATUS (child_status);
+ }
+ }
+ break;
+
+ default:
+ assert (false);
+ }
+
+ return 0;
+}
+
+void
+savewd_finish (struct savewd *wd)
+{
+ switch (wd->state)
+ {
+ case INITIAL_STATE:
+ case ERROR_STATE:
+ break;
+
+ case FD_STATE:
+ case FD_POST_CHDIR_STATE:
+ close (wd->val.fd);
+ break;
+
+ case FORKING_STATE:
+ assert (wd->val.child < 0);
+ break;
+
+ default:
+ assert (false);
+ }
+
+ wd->state = FINAL_STATE;
+}
+
+/* Return true if the actual work is currently being done by a
+ subprocess.
+
+ A true return means that the caller and the subprocess should
+ resynchronize later with savewd_restore, using only their own
+ memory to decide when to resynchronize; they should not consult the
+ file system to decide, because that might lead to race conditions.
+ This is why savewd_chdir is broken out into another function;
+ savewd_chdir's callers _can_ inspect the file system to decide
+ whether to call savewd_chdir. */
+static inline bool
+savewd_delegating (struct savewd const *wd)
+{
+ return wd->state == FORKING_STATE && 0 < wd->val.child;
+}
+
+int
+savewd_process_files (int n_files, char **file,
+ int (*act) (char *, struct savewd *, void *),
+ void *options)
+{
+ int i = 0;
+ int last_relative;
+ int exit_status = EXIT_SUCCESS;
+ struct savewd wd;
+ savewd_init (&wd);
+
+ for (last_relative = n_files - 1; 0 <= last_relative; last_relative--)
+ if (! IS_ABSOLUTE_FILE_NAME (file[last_relative]))
+ break;
+
+ for (; i < last_relative; i++)
+ {
+ if (! savewd_delegating (&wd))
+ {
+ int s = act (file[i], &wd, options);
+ if (exit_status < s)
+ exit_status = s;
+ }
+
+ if (! IS_ABSOLUTE_FILE_NAME (file[i + 1]))
+ {
+ int r = savewd_restore (&wd, exit_status);
+ if (exit_status < r)
+ exit_status = r;
+ }
+ }
+
+ savewd_finish (&wd);
+
+ for (; i < n_files; i++)
+ {
+ int s = act (file[i], &wd, options);
+ if (exit_status < s)
+ exit_status = s;
+ }
+
+ return exit_status;
+}
diff --git a/lib/savewd.h b/lib/savewd.h
new file mode 100644
index 0000000..880b8f1
--- /dev/null
+++ b/lib/savewd.h
@@ -0,0 +1,149 @@
+/* Save and restore the working directory, possibly using a subprocess.
+
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#ifndef SAVEWD_H
+# define SAVEWD_H 1
+
+#include <stdbool.h>
+#include <sys/types.h>
+
+/* A saved working directory. The member names and constants defined
+ by this structure are private to the savewd module. */
+struct savewd
+{
+ /* The state of this object. */
+ enum
+ {
+ /* This object has been created but does not yet represent
+ the working directory. */
+ INITIAL_STATE,
+
+ /* val.fd is the original working directory's file descriptor.
+ It is still the working directory. */
+ FD_STATE,
+
+ /* Like FD_STATE, but the working directory has changed, so
+ restoring it will require a fchdir. */
+ FD_POST_CHDIR_STATE,
+
+ /* Fork and let the subprocess do the work. val.child is 0 in a
+ child, negative in a childless parent, and the child process
+ ID in a parent with a child. */
+ FORKING_STATE,
+
+ /* A serious problem argues against further efforts. val.errnum
+ contains the error number (e.g., EIO). */
+ ERROR_STATE,
+
+ /* savewd_finish has been called, so the application no longer
+ cares whether the working directory is saved, and there is no
+ more work to do. */
+ FINAL_STATE
+ } state;
+
+ /* The object's value. */
+ union
+ {
+ int fd;
+ int errnum;
+ pid_t child;
+ } val;
+};
+
+/* Initialize a saved working directory object. */
+static inline void
+savewd_init (struct savewd *wd)
+{
+ wd->state = INITIAL_STATE;
+}
+
+
+/* Options for savewd_chdir. */
+enum
+ {
+ /* Do not follow symbolic links, if supported. */
+ SAVEWD_CHDIR_NOFOLLOW = 1,
+
+ /* The directory should be readable, so fail if it happens to be
+ discovered that the directory is not readable. (Unreadable
+ directories are not necessarily diagnosed, though.) */
+ SAVEWD_CHDIR_READABLE = 2,
+
+ /* Do not chdir if the directory is readable; simply succeed
+ without invoking chdir if the directory was opened. */
+ SAVEWD_CHDIR_SKIP_READABLE = 4
+ };
+
+/* Change the directory, and if successful, record into *WD the fact
+ that the process chdired into DIR. A process using this module
+ should use savewd_chdir rather than chdir or fchdir. Obey the
+ options specified in OPTIONS.
+
+ If OPEN_RESULT is not null, store into OPEN_RESULT[0] a file
+ descriptor that accesses DIR if a file descriptor is successfully
+ obtained. Store -1 otherwise, setting OPEN_RESULT[1] to the error
+ number. Store through OPEN_RESULT regardless of whether the chdir
+ is successful. However, when -2 is returned, the contents of
+ OPEN_RESULT are indeterminate since the file descriptor is closed
+ in the parent.
+
+ Return -2 if a subprocess was spun off to do the real work, -1
+ (setting errno) if unsuccessful, 0 if successful. */
+int savewd_chdir (struct savewd *wd, char const *dir, int options,
+ int open_result[2]);
+
+/* Restore the working directory from *WD. STATUS indicates the exit
+ status corresponding to the work done since the last save; this is
+ used when the caller is in a subprocess. Return 0 if successful,
+ -1 (setting errno) on our failure, a positive subprocess exit
+ status if the working directory was restored in the parent but the
+ subprocess failed. */
+int savewd_restore (struct savewd *wd, int status);
+
+/* Return WD's error number, or 0 if WD is not in an error state. */
+static inline int
+savewd_errno (struct savewd const *wd)
+{
+ return (wd->state == ERROR_STATE ? wd->val.errnum : 0);
+}
+
+/* Deallocate any resources associated with WD. A program that chdirs
+ should restore before finishing. */
+void savewd_finish (struct savewd *wd);
+
+/* Process N_FILES file names, FILE[0] through FILE[N_FILES - 1].
+ For each file name F, call ACT (F, WD, OPTIONS); ACT should invoke
+ savewd_chdir as needed, and should return an exit status. WD
+ represents the working directory; it may be in an error state when
+ ACT is called.
+
+ Save and restore the working directory as needed by the file name
+ vector; assume that ACT does not require access to any relative
+ file names other than its first argument, and that it is OK if the
+ working directory is changed when this function returns. Some
+ actions may be applied in a subprocess.
+
+ Return the maximum exit status that any call to ACT returned, or
+ EXIT_SUCCESS (i.e., 0) if no calls were made. */
+int savewd_process_files (int n_files, char **file,
+ int (*act) (char *, struct savewd *, void *),
+ void *options);
+
+#endif
diff --git a/lib/setenv.c b/lib/setenv.c
new file mode 100644
index 0000000..c54c28d
--- /dev/null
+++ b/lib/setenv.c
@@ -0,0 +1,332 @@
+/* Copyright (C) 1992,1995-1999,2000-2003,2005-2007 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#if !_LIBC
+# include <config.h>
+#endif
+#include <alloca.h>
+
+#include <errno.h>
+#ifndef __set_errno
+# define __set_errno(ev) ((errno) = (ev))
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#if _LIBC || HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#if _LIBC || !HAVE_SETENV
+
+#if !_LIBC
+# include "allocsa.h"
+#endif
+
+#if !_LIBC
+# define __environ environ
+# ifndef HAVE_ENVIRON_DECL
+extern char **environ;
+# endif
+#endif
+
+#if _LIBC
+/* This lock protects against simultaneous modifications of `environ'. */
+# include <bits/libc-lock.h>
+__libc_lock_define_initialized (static, envlock)
+# define LOCK __libc_lock_lock (envlock)
+# define UNLOCK __libc_lock_unlock (envlock)
+#else
+# define LOCK
+# define UNLOCK
+#endif
+
+/* In the GNU C library we must keep the namespace clean. */
+#ifdef _LIBC
+# define setenv __setenv
+# define clearenv __clearenv
+# define tfind __tfind
+# define tsearch __tsearch
+#endif
+
+/* In the GNU C library implementation we try to be more clever and
+ allow arbitrarily many changes of the environment given that the used
+ values are from a small set. Outside glibc this will eat up all
+ memory after a while. */
+#if defined _LIBC || (defined HAVE_SEARCH_H && defined HAVE_TSEARCH \
+ && defined __GNUC__)
+# define USE_TSEARCH 1
+# include <search.h>
+typedef int (*compar_fn_t) (const void *, const void *);
+
+/* This is a pointer to the root of the search tree with the known
+ values. */
+static void *known_values;
+
+# define KNOWN_VALUE(Str) \
+ ({ \
+ void *value = tfind (Str, &known_values, (compar_fn_t) strcmp); \
+ value != NULL ? *(char **) value : NULL; \
+ })
+# define STORE_VALUE(Str) \
+ tsearch (Str, &known_values, (compar_fn_t) strcmp)
+
+#else
+# undef USE_TSEARCH
+
+# define KNOWN_VALUE(Str) NULL
+# define STORE_VALUE(Str) do { } while (0)
+
+#endif
+
+
+/* If this variable is not a null pointer we allocated the current
+ environment. */
+static char **last_environ;
+
+
+/* This function is used by `setenv' and `putenv'. The difference between
+ the two functions is that for the former must create a new string which
+ is then placed in the environment, while the argument of `putenv'
+ must be used directly. This is all complicated by the fact that we try
+ to reuse values once generated for a `setenv' call since we can never
+ free the strings. */
+int
+__add_to_environ (const char *name, const char *value, const char *combined,
+ int replace)
+{
+ register char **ep;
+ register size_t size;
+ const size_t namelen = strlen (name);
+ const size_t vallen = value != NULL ? strlen (value) + 1 : 0;
+
+ LOCK;
+
+ /* We have to get the pointer now that we have the lock and not earlier
+ since another thread might have created a new environment. */
+ ep = __environ;
+
+ size = 0;
+ if (ep != NULL)
+ {
+ for (; *ep != NULL; ++ep)
+ if (!strncmp (*ep, name, namelen) && (*ep)[namelen] == '=')
+ break;
+ else
+ ++size;
+ }
+
+ if (ep == NULL || *ep == NULL)
+ {
+ char **new_environ;
+#ifdef USE_TSEARCH
+ char *new_value;
+#endif
+
+ /* We allocated this space; we can extend it. */
+ new_environ =
+ (char **) (last_environ == NULL
+ ? malloc ((size + 2) * sizeof (char *))
+ : realloc (last_environ, (size + 2) * sizeof (char *)));
+ if (new_environ == NULL)
+ {
+ UNLOCK;
+ return -1;
+ }
+
+ /* If the whole entry is given add it. */
+ if (combined != NULL)
+ /* We must not add the string to the search tree since it belongs
+ to the user. */
+ new_environ[size] = (char *) combined;
+ else
+ {
+ /* See whether the value is already known. */
+#ifdef USE_TSEARCH
+# ifdef _LIBC
+ new_value = (char *) alloca (namelen + 1 + vallen);
+ __mempcpy (__mempcpy (__mempcpy (new_value, name, namelen), "=", 1),
+ value, vallen);
+# else
+ new_value = (char *) allocsa (namelen + 1 + vallen);
+ if (new_value == NULL)
+ {
+ __set_errno (ENOMEM);
+ UNLOCK;
+ return -1;
+ }
+ memcpy (new_value, name, namelen);
+ new_value[namelen] = '=';
+ memcpy (&new_value[namelen + 1], value, vallen);
+# endif
+
+ new_environ[size] = KNOWN_VALUE (new_value);
+ if (new_environ[size] == NULL)
+#endif
+ {
+ new_environ[size] = (char *) malloc (namelen + 1 + vallen);
+ if (new_environ[size] == NULL)
+ {
+#if defined USE_TSEARCH && !defined _LIBC
+ freesa (new_value);
+#endif
+ __set_errno (ENOMEM);
+ UNLOCK;
+ return -1;
+ }
+
+#ifdef USE_TSEARCH
+ memcpy (new_environ[size], new_value, namelen + 1 + vallen);
+#else
+ memcpy (new_environ[size], name, namelen);
+ new_environ[size][namelen] = '=';
+ memcpy (&new_environ[size][namelen + 1], value, vallen);
+#endif
+ /* And save the value now. We cannot do this when we remove
+ the string since then we cannot decide whether it is a
+ user string or not. */
+ STORE_VALUE (new_environ[size]);
+ }
+#if defined USE_TSEARCH && !defined _LIBC
+ freesa (new_value);
+#endif
+ }
+
+ if (__environ != last_environ)
+ memcpy ((char *) new_environ, (char *) __environ,
+ size * sizeof (char *));
+
+ new_environ[size + 1] = NULL;
+
+ last_environ = __environ = new_environ;
+ }
+ else if (replace)
+ {
+ char *np;
+
+ /* Use the user string if given. */
+ if (combined != NULL)
+ np = (char *) combined;
+ else
+ {
+#ifdef USE_TSEARCH
+ char *new_value;
+# ifdef _LIBC
+ new_value = alloca (namelen + 1 + vallen);
+ __mempcpy (__mempcpy (__mempcpy (new_value, name, namelen), "=", 1),
+ value, vallen);
+# else
+ new_value = allocsa (namelen + 1 + vallen);
+ if (new_value == NULL)
+ {
+ __set_errno (ENOMEM);
+ UNLOCK;
+ return -1;
+ }
+ memcpy (new_value, name, namelen);
+ new_value[namelen] = '=';
+ memcpy (&new_value[namelen + 1], value, vallen);
+# endif
+
+ np = KNOWN_VALUE (new_value);
+ if (np == NULL)
+#endif
+ {
+ np = malloc (namelen + 1 + vallen);
+ if (np == NULL)
+ {
+#if defined USE_TSEARCH && !defined _LIBC
+ freesa (new_value);
+#endif
+ __set_errno (ENOMEM);
+ UNLOCK;
+ return -1;
+ }
+
+#ifdef USE_TSEARCH
+ memcpy (np, new_value, namelen + 1 + vallen);
+#else
+ memcpy (np, name, namelen);
+ np[namelen] = '=';
+ memcpy (&np[namelen + 1], value, vallen);
+#endif
+ /* And remember the value. */
+ STORE_VALUE (np);
+ }
+#if defined USE_TSEARCH && !defined _LIBC
+ freesa (new_value);
+#endif
+ }
+
+ *ep = np;
+ }
+
+ UNLOCK;
+
+ return 0;
+}
+
+int
+setenv (const char *name, const char *value, int replace)
+{
+ return __add_to_environ (name, value, NULL, replace);
+}
+
+/* The `clearenv' was planned to be added to POSIX.1 but probably
+ never made it. Nevertheless the POSIX.9 standard (POSIX bindings
+ for Fortran 77) requires this function. */
+int
+clearenv (void)
+{
+ LOCK;
+
+ if (__environ == last_environ && __environ != NULL)
+ {
+ /* We allocated this environment so we can free it. */
+ free (__environ);
+ last_environ = NULL;
+ }
+
+ /* Clear the environment pointer removes the whole environment. */
+ __environ = NULL;
+
+ UNLOCK;
+
+ return 0;
+}
+
+#ifdef _LIBC
+static void
+free_mem (void)
+{
+ /* Remove all traces. */
+ clearenv ();
+
+ /* Now remove the search tree. */
+ __tdestroy (known_values, free);
+ known_values = NULL;
+}
+text_set_element (__libc_subfreeres, free_mem);
+
+
+# undef setenv
+# undef clearenv
+weak_alias (__setenv, setenv)
+weak_alias (__clearenv, clearenv)
+#endif
+
+#endif /* _LIBC || !HAVE_SETENV */
diff --git a/lib/setenv.h b/lib/setenv.h
new file mode 100644
index 0000000..92e7bba
--- /dev/null
+++ b/lib/setenv.h
@@ -0,0 +1,54 @@
+/* Setting environment variables.
+ Copyright (C) 2001-2004, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#if HAVE_SETENV || HAVE_UNSETENV
+
+/* Get setenv(), unsetenv() declarations. */
+# include <stdlib.h>
+
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if !HAVE_SETENV
+
+/* Set NAME to VALUE in the environment.
+ If REPLACE is nonzero, overwrite an existing value. */
+extern int setenv (const char *name, const char *value, int replace);
+
+#endif
+
+#if HAVE_UNSETENV
+
+# if VOID_UNSETENV
+/* On some systems, unsetenv() returns void.
+ This is the case for FreeBSD 4.8, NetBSD 1.6, OpenBSD 3.4. */
+# define unsetenv(name) ((unsetenv)(name), 0)
+# endif
+
+#else
+
+/* Remove the variable NAME from the environment. */
+extern int unsetenv (const char *name);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/lib/settime.c b/lib/settime.c
new file mode 100644
index 0000000..25e7e68
--- /dev/null
+++ b/lib/settime.c
@@ -0,0 +1,71 @@
+/* settime -- set the system clock
+
+ Copyright (C) 2002, 2004, 2005, 2006, 2007 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "timespec.h"
+
+#include <sys/time.h>
+#include <unistd.h>
+
+#include <errno.h>
+
+/* Some systems don't have ENOSYS. */
+#ifndef ENOSYS
+# ifdef ENOTSUP
+# define ENOSYS ENOTSUP
+# else
+/* Some systems don't have ENOTSUP either. */
+# define ENOSYS EINVAL
+# endif
+#endif
+
+/* Set the system time. */
+
+int
+settime (struct timespec const *ts)
+{
+#if defined CLOCK_REALTIME && HAVE_CLOCK_SETTIME
+ {
+ int r = clock_settime (CLOCK_REALTIME, ts);
+ if (r == 0 || errno == EPERM)
+ return r;
+ }
+#endif
+
+#if HAVE_SETTIMEOFDAY
+ {
+ struct timeval tv;
+
+ tv.tv_sec = ts->tv_sec;
+ tv.tv_usec = ts->tv_nsec / 1000;
+ return settimeofday (&tv, 0);
+ }
+#elif HAVE_STIME
+ /* This fails to compile on OSF1 V5.1, due to stime requiring
+ a `long int*' and tv_sec is `int'. But that system does provide
+ settimeofday. */
+ return stime (&ts->tv_sec);
+#else
+ errno = ENOSYS;
+ return -1;
+#endif
+}
diff --git a/lib/sha1.c b/lib/sha1.c
new file mode 100644
index 0000000..035f898
--- /dev/null
+++ b/lib/sha1.c
@@ -0,0 +1,416 @@
+/* sha1.c - Functions to compute SHA1 message digest of files or
+ memory blocks according to the NIST specification FIPS-180-1.
+
+ Copyright (C) 2000, 2001, 2003, 2004, 2005, 2006 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Scott G. Miller
+ Credits:
+ Robert Klep <robert@ilse.nl> -- Expansion function fix
+*/
+
+#include <config.h>
+
+#include "sha1.h"
+
+#include <stddef.h>
+#include <string.h>
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#ifdef WORDS_BIGENDIAN
+# define SWAP(n) (n)
+#else
+# define SWAP(n) \
+ (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
+#endif
+
+#define BLOCKSIZE 4096
+#if BLOCKSIZE % 64 != 0
+# error "invalid BLOCKSIZE"
+#endif
+
+/* This array contains the bytes used to pad the buffer to the next
+ 64-byte boundary. (RFC 1321, 3.1: Step 1) */
+static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ };
+
+
+/* Take a pointer to a 160 bit block of data (five 32 bit ints) and
+ initialize it to the start constants of the SHA1 algorithm. This
+ must be called before using hash in the call to sha1_hash. */
+void
+sha1_init_ctx (struct sha1_ctx *ctx)
+{
+ ctx->A = 0x67452301;
+ ctx->B = 0xefcdab89;
+ ctx->C = 0x98badcfe;
+ ctx->D = 0x10325476;
+ ctx->E = 0xc3d2e1f0;
+
+ ctx->total[0] = ctx->total[1] = 0;
+ ctx->buflen = 0;
+}
+
+/* Put result from CTX in first 20 bytes following RESBUF. The result
+ must be in little endian byte order.
+
+ IMPORTANT: On some systems it is required that RESBUF is correctly
+ aligned for a 32-bit value. */
+void *
+sha1_read_ctx (const struct sha1_ctx *ctx, void *resbuf)
+{
+ ((uint32_t *) resbuf)[0] = SWAP (ctx->A);
+ ((uint32_t *) resbuf)[1] = SWAP (ctx->B);
+ ((uint32_t *) resbuf)[2] = SWAP (ctx->C);
+ ((uint32_t *) resbuf)[3] = SWAP (ctx->D);
+ ((uint32_t *) resbuf)[4] = SWAP (ctx->E);
+
+ return resbuf;
+}
+
+/* Process the remaining bytes in the internal buffer and the usual
+ prolog according to the standard and write the result to RESBUF.
+
+ IMPORTANT: On some systems it is required that RESBUF is correctly
+ aligned for a 32-bit value. */
+void *
+sha1_finish_ctx (struct sha1_ctx *ctx, void *resbuf)
+{
+ /* Take yet unprocessed bytes into account. */
+ uint32_t bytes = ctx->buflen;
+ size_t size = (bytes < 56) ? 64 / 4 : 64 * 2 / 4;
+
+ /* Now count remaining bytes. */
+ ctx->total[0] += bytes;
+ if (ctx->total[0] < bytes)
+ ++ctx->total[1];
+
+ /* Put the 64-bit file length in *bits* at the end of the buffer. */
+ ctx->buffer[size - 2] = SWAP ((ctx->total[1] << 3) | (ctx->total[0] >> 29));
+ ctx->buffer[size - 1] = SWAP (ctx->total[0] << 3);
+
+ memcpy (&((char *) ctx->buffer)[bytes], fillbuf, (size - 2) * 4 - bytes);
+
+ /* Process last bytes. */
+ sha1_process_block (ctx->buffer, size * 4, ctx);
+
+ return sha1_read_ctx (ctx, resbuf);
+}
+
+/* Compute SHA1 message digest for bytes read from STREAM. The
+ resulting message digest number will be written into the 16 bytes
+ beginning at RESBLOCK. */
+int
+sha1_stream (FILE *stream, void *resblock)
+{
+ struct sha1_ctx ctx;
+ char buffer[BLOCKSIZE + 72];
+ size_t sum;
+
+ /* Initialize the computation context. */
+ sha1_init_ctx (&ctx);
+
+ /* Iterate over full file contents. */
+ while (1)
+ {
+ /* We read the file in blocks of BLOCKSIZE bytes. One call of the
+ computation function processes the whole buffer so that with the
+ next round of the loop another block can be read. */
+ size_t n;
+ sum = 0;
+
+ /* Read block. Take care for partial reads. */
+ while (1)
+ {
+ n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);
+
+ sum += n;
+
+ if (sum == BLOCKSIZE)
+ break;
+
+ if (n == 0)
+ {
+ /* Check for the error flag IFF N == 0, so that we don't
+ exit the loop after a partial read due to e.g., EAGAIN
+ or EWOULDBLOCK. */
+ if (ferror (stream))
+ return 1;
+ goto process_partial_block;
+ }
+
+ /* We've read at least one byte, so ignore errors. But always
+ check for EOF, since feof may be true even though N > 0.
+ Otherwise, we could end up calling fread after EOF. */
+ if (feof (stream))
+ goto process_partial_block;
+ }
+
+ /* Process buffer with BLOCKSIZE bytes. Note that
+ BLOCKSIZE % 64 == 0
+ */
+ sha1_process_block (buffer, BLOCKSIZE, &ctx);
+ }
+
+ process_partial_block:;
+
+ /* Process any remaining bytes. */
+ if (sum > 0)
+ sha1_process_bytes (buffer, sum, &ctx);
+
+ /* Construct result in desired memory. */
+ sha1_finish_ctx (&ctx, resblock);
+ return 0;
+}
+
+/* Compute SHA1 message digest for LEN bytes beginning at BUFFER. The
+ result is always in little endian byte order, so that a byte-wise
+ output yields to the wanted ASCII representation of the message
+ digest. */
+void *
+sha1_buffer (const char *buffer, size_t len, void *resblock)
+{
+ struct sha1_ctx ctx;
+
+ /* Initialize the computation context. */
+ sha1_init_ctx (&ctx);
+
+ /* Process whole buffer but last len % 64 bytes. */
+ sha1_process_bytes (buffer, len, &ctx);
+
+ /* Put result in desired memory area. */
+ return sha1_finish_ctx (&ctx, resblock);
+}
+
+void
+sha1_process_bytes (const void *buffer, size_t len, struct sha1_ctx *ctx)
+{
+ /* When we already have some bits in our internal buffer concatenate
+ both inputs first. */
+ if (ctx->buflen != 0)
+ {
+ size_t left_over = ctx->buflen;
+ size_t add = 128 - left_over > len ? len : 128 - left_over;
+
+ memcpy (&((char *) ctx->buffer)[left_over], buffer, add);
+ ctx->buflen += add;
+
+ if (ctx->buflen > 64)
+ {
+ sha1_process_block (ctx->buffer, ctx->buflen & ~63, ctx);
+
+ ctx->buflen &= 63;
+ /* The regions in the following copy operation cannot overlap. */
+ memcpy (ctx->buffer,
+ &((char *) ctx->buffer)[(left_over + add) & ~63],
+ ctx->buflen);
+ }
+
+ buffer = (const char *) buffer + add;
+ len -= add;
+ }
+
+ /* Process available complete blocks. */
+ if (len >= 64)
+ {
+#if !_STRING_ARCH_unaligned
+# define alignof(type) offsetof (struct { char c; type x; }, x)
+# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+ if (UNALIGNED_P (buffer))
+ while (len > 64)
+ {
+ sha1_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx);
+ buffer = (const char *) buffer + 64;
+ len -= 64;
+ }
+ else
+#endif
+ {
+ sha1_process_block (buffer, len & ~63, ctx);
+ buffer = (const char *) buffer + (len & ~63);
+ len &= 63;
+ }
+ }
+
+ /* Move remaining bytes in internal buffer. */
+ if (len > 0)
+ {
+ size_t left_over = ctx->buflen;
+
+ memcpy (&((char *) ctx->buffer)[left_over], buffer, len);
+ left_over += len;
+ if (left_over >= 64)
+ {
+ sha1_process_block (ctx->buffer, 64, ctx);
+ left_over -= 64;
+ memcpy (ctx->buffer, &ctx->buffer[16], left_over);
+ }
+ ctx->buflen = left_over;
+ }
+}
+
+/* --- Code below is the primary difference between md5.c and sha1.c --- */
+
+/* SHA1 round constants */
+#define K1 0x5a827999
+#define K2 0x6ed9eba1
+#define K3 0x8f1bbcdc
+#define K4 0xca62c1d6
+
+/* Round functions. Note that F2 is the same as F4. */
+#define F1(B,C,D) ( D ^ ( B & ( C ^ D ) ) )
+#define F2(B,C,D) (B ^ C ^ D)
+#define F3(B,C,D) ( ( B & C ) | ( D & ( B | C ) ) )
+#define F4(B,C,D) (B ^ C ^ D)
+
+/* Process LEN bytes of BUFFER, accumulating context into CTX.
+ It is assumed that LEN % 64 == 0.
+ Most of this code comes from GnuPG's cipher/sha1.c. */
+
+void
+sha1_process_block (const void *buffer, size_t len, struct sha1_ctx *ctx)
+{
+ const uint32_t *words = buffer;
+ size_t nwords = len / sizeof (uint32_t);
+ const uint32_t *endp = words + nwords;
+ uint32_t x[16];
+ uint32_t a = ctx->A;
+ uint32_t b = ctx->B;
+ uint32_t c = ctx->C;
+ uint32_t d = ctx->D;
+ uint32_t e = ctx->E;
+
+ /* First increment the byte count. RFC 1321 specifies the possible
+ length of the file up to 2^64 bits. Here we only compute the
+ number of bytes. Do a double word increment. */
+ ctx->total[0] += len;
+ if (ctx->total[0] < len)
+ ++ctx->total[1];
+
+#define rol(x, n) (((x) << (n)) | ((uint32_t) (x) >> (32 - (n))))
+
+#define M(I) ( tm = x[I&0x0f] ^ x[(I-14)&0x0f] \
+ ^ x[(I-8)&0x0f] ^ x[(I-3)&0x0f] \
+ , (x[I&0x0f] = rol(tm, 1)) )
+
+#define R(A,B,C,D,E,F,K,M) do { E += rol( A, 5 ) \
+ + F( B, C, D ) \
+ + K \
+ + M; \
+ B = rol( B, 30 ); \
+ } while(0)
+
+ while (words < endp)
+ {
+ uint32_t tm;
+ int t;
+ for (t = 0; t < 16; t++)
+ {
+ x[t] = SWAP (*words);
+ words++;
+ }
+
+ R( a, b, c, d, e, F1, K1, x[ 0] );
+ R( e, a, b, c, d, F1, K1, x[ 1] );
+ R( d, e, a, b, c, F1, K1, x[ 2] );
+ R( c, d, e, a, b, F1, K1, x[ 3] );
+ R( b, c, d, e, a, F1, K1, x[ 4] );
+ R( a, b, c, d, e, F1, K1, x[ 5] );
+ R( e, a, b, c, d, F1, K1, x[ 6] );
+ R( d, e, a, b, c, F1, K1, x[ 7] );
+ R( c, d, e, a, b, F1, K1, x[ 8] );
+ R( b, c, d, e, a, F1, K1, x[ 9] );
+ R( a, b, c, d, e, F1, K1, x[10] );
+ R( e, a, b, c, d, F1, K1, x[11] );
+ R( d, e, a, b, c, F1, K1, x[12] );
+ R( c, d, e, a, b, F1, K1, x[13] );
+ R( b, c, d, e, a, F1, K1, x[14] );
+ R( a, b, c, d, e, F1, K1, x[15] );
+ R( e, a, b, c, d, F1, K1, M(16) );
+ R( d, e, a, b, c, F1, K1, M(17) );
+ R( c, d, e, a, b, F1, K1, M(18) );
+ R( b, c, d, e, a, F1, K1, M(19) );
+ R( a, b, c, d, e, F2, K2, M(20) );
+ R( e, a, b, c, d, F2, K2, M(21) );
+ R( d, e, a, b, c, F2, K2, M(22) );
+ R( c, d, e, a, b, F2, K2, M(23) );
+ R( b, c, d, e, a, F2, K2, M(24) );
+ R( a, b, c, d, e, F2, K2, M(25) );
+ R( e, a, b, c, d, F2, K2, M(26) );
+ R( d, e, a, b, c, F2, K2, M(27) );
+ R( c, d, e, a, b, F2, K2, M(28) );
+ R( b, c, d, e, a, F2, K2, M(29) );
+ R( a, b, c, d, e, F2, K2, M(30) );
+ R( e, a, b, c, d, F2, K2, M(31) );
+ R( d, e, a, b, c, F2, K2, M(32) );
+ R( c, d, e, a, b, F2, K2, M(33) );
+ R( b, c, d, e, a, F2, K2, M(34) );
+ R( a, b, c, d, e, F2, K2, M(35) );
+ R( e, a, b, c, d, F2, K2, M(36) );
+ R( d, e, a, b, c, F2, K2, M(37) );
+ R( c, d, e, a, b, F2, K2, M(38) );
+ R( b, c, d, e, a, F2, K2, M(39) );
+ R( a, b, c, d, e, F3, K3, M(40) );
+ R( e, a, b, c, d, F3, K3, M(41) );
+ R( d, e, a, b, c, F3, K3, M(42) );
+ R( c, d, e, a, b, F3, K3, M(43) );
+ R( b, c, d, e, a, F3, K3, M(44) );
+ R( a, b, c, d, e, F3, K3, M(45) );
+ R( e, a, b, c, d, F3, K3, M(46) );
+ R( d, e, a, b, c, F3, K3, M(47) );
+ R( c, d, e, a, b, F3, K3, M(48) );
+ R( b, c, d, e, a, F3, K3, M(49) );
+ R( a, b, c, d, e, F3, K3, M(50) );
+ R( e, a, b, c, d, F3, K3, M(51) );
+ R( d, e, a, b, c, F3, K3, M(52) );
+ R( c, d, e, a, b, F3, K3, M(53) );
+ R( b, c, d, e, a, F3, K3, M(54) );
+ R( a, b, c, d, e, F3, K3, M(55) );
+ R( e, a, b, c, d, F3, K3, M(56) );
+ R( d, e, a, b, c, F3, K3, M(57) );
+ R( c, d, e, a, b, F3, K3, M(58) );
+ R( b, c, d, e, a, F3, K3, M(59) );
+ R( a, b, c, d, e, F4, K4, M(60) );
+ R( e, a, b, c, d, F4, K4, M(61) );
+ R( d, e, a, b, c, F4, K4, M(62) );
+ R( c, d, e, a, b, F4, K4, M(63) );
+ R( b, c, d, e, a, F4, K4, M(64) );
+ R( a, b, c, d, e, F4, K4, M(65) );
+ R( e, a, b, c, d, F4, K4, M(66) );
+ R( d, e, a, b, c, F4, K4, M(67) );
+ R( c, d, e, a, b, F4, K4, M(68) );
+ R( b, c, d, e, a, F4, K4, M(69) );
+ R( a, b, c, d, e, F4, K4, M(70) );
+ R( e, a, b, c, d, F4, K4, M(71) );
+ R( d, e, a, b, c, F4, K4, M(72) );
+ R( c, d, e, a, b, F4, K4, M(73) );
+ R( b, c, d, e, a, F4, K4, M(74) );
+ R( a, b, c, d, e, F4, K4, M(75) );
+ R( e, a, b, c, d, F4, K4, M(76) );
+ R( d, e, a, b, c, F4, K4, M(77) );
+ R( c, d, e, a, b, F4, K4, M(78) );
+ R( b, c, d, e, a, F4, K4, M(79) );
+
+ a = ctx->A += a;
+ b = ctx->B += b;
+ c = ctx->C += c;
+ d = ctx->D += d;
+ e = ctx->E += e;
+ }
+}
diff --git a/lib/sha1.h b/lib/sha1.h
new file mode 100644
index 0000000..9545f0b
--- /dev/null
+++ b/lib/sha1.h
@@ -0,0 +1,87 @@
+/* Declarations of functions and data types used for SHA1 sum
+ library functions.
+ Copyright (C) 2000, 2001, 2003, 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef SHA1_H
+# define SHA1_H 1
+
+# include <stdio.h>
+# include <stdint.h>
+
+/* Structure to save state of computation between the single steps. */
+struct sha1_ctx
+{
+ uint32_t A;
+ uint32_t B;
+ uint32_t C;
+ uint32_t D;
+ uint32_t E;
+
+ uint32_t total[2];
+ uint32_t buflen;
+ uint32_t buffer[32];
+};
+
+
+/* Initialize structure containing state of computation. */
+extern void sha1_init_ctx (struct sha1_ctx *ctx);
+
+/* Starting with the result of former calls of this function (or the
+ initialization function update the context for the next LEN bytes
+ starting at BUFFER.
+ It is necessary that LEN is a multiple of 64!!! */
+extern void sha1_process_block (const void *buffer, size_t len,
+ struct sha1_ctx *ctx);
+
+/* Starting with the result of former calls of this function (or the
+ initialization function update the context for the next LEN bytes
+ starting at BUFFER.
+ It is NOT required that LEN is a multiple of 64. */
+extern void sha1_process_bytes (const void *buffer, size_t len,
+ struct sha1_ctx *ctx);
+
+/* Process the remaining bytes in the buffer and put result from CTX
+ in first 20 bytes following RESBUF. The result is always in little
+ endian byte order, so that a byte-wise output yields to the wanted
+ ASCII representation of the message digest.
+
+ IMPORTANT: On some systems it is required that RESBUF be correctly
+ aligned for a 32 bits value. */
+extern void *sha1_finish_ctx (struct sha1_ctx *ctx, void *resbuf);
+
+
+/* Put result from CTX in first 20 bytes following RESBUF. The result is
+ always in little endian byte order, so that a byte-wise output yields
+ to the wanted ASCII representation of the message digest.
+
+ IMPORTANT: On some systems it is required that RESBUF is correctly
+ aligned for a 32 bits value. */
+extern void *sha1_read_ctx (const struct sha1_ctx *ctx, void *resbuf);
+
+
+/* Compute SHA1 message digest for bytes read from STREAM. The
+ resulting message digest number will be written into the 20 bytes
+ beginning at RESBLOCK. */
+extern int sha1_stream (FILE *stream, void *resblock);
+
+/* Compute SHA1 message digest for LEN bytes beginning at BUFFER. The
+ result is always in little endian byte order, so that a byte-wise
+ output yields to the wanted ASCII representation of the message
+ digest. */
+extern void *sha1_buffer (const char *buffer, size_t len, void *resblock);
+
+#endif
diff --git a/lib/sha256.c b/lib/sha256.c
new file mode 100644
index 0000000..d23c509
--- /dev/null
+++ b/lib/sha256.c
@@ -0,0 +1,546 @@
+/* sha256.c - Functions to compute SHA256 and SHA224 message digest of files or
+ memory blocks according to the NIST specification FIPS-180-2.
+
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David Madore, considerably copypasting from
+ Scott G. Miller's sha1.c
+*/
+
+#include <config.h>
+
+#include "sha256.h"
+
+#include <stddef.h>
+#include <string.h>
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#ifdef WORDS_BIGENDIAN
+# define SWAP(n) (n)
+#else
+# define SWAP(n) \
+ (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
+#endif
+
+#define BLOCKSIZE 4096
+#if BLOCKSIZE % 64 != 0
+# error "invalid BLOCKSIZE"
+#endif
+
+/* This array contains the bytes used to pad the buffer to the next
+ 64-byte boundary. */
+static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ };
+
+
+/*
+ Takes a pointer to a 256 bit block of data (eight 32 bit ints) and
+ intializes it to the start constants of the SHA256 algorithm. This
+ must be called before using hash in the call to sha256_hash
+*/
+void
+sha256_init_ctx (struct sha256_ctx *ctx)
+{
+ ctx->state[0] = 0x6a09e667UL;
+ ctx->state[1] = 0xbb67ae85UL;
+ ctx->state[2] = 0x3c6ef372UL;
+ ctx->state[3] = 0xa54ff53aUL;
+ ctx->state[4] = 0x510e527fUL;
+ ctx->state[5] = 0x9b05688cUL;
+ ctx->state[6] = 0x1f83d9abUL;
+ ctx->state[7] = 0x5be0cd19UL;
+
+ ctx->total[0] = ctx->total[1] = 0;
+ ctx->buflen = 0;
+}
+
+void
+sha224_init_ctx (struct sha256_ctx *ctx)
+{
+ ctx->state[0] = 0xc1059ed8UL;
+ ctx->state[1] = 0x367cd507UL;
+ ctx->state[2] = 0x3070dd17UL;
+ ctx->state[3] = 0xf70e5939UL;
+ ctx->state[4] = 0xffc00b31UL;
+ ctx->state[5] = 0x68581511UL;
+ ctx->state[6] = 0x64f98fa7UL;
+ ctx->state[7] = 0xbefa4fa4UL;
+
+ ctx->total[0] = ctx->total[1] = 0;
+ ctx->buflen = 0;
+}
+
+/* Put result from CTX in first 32 bytes following RESBUF. The result
+ must be in little endian byte order.
+
+ IMPORTANT: On some systems it is required that RESBUF is correctly
+ aligned for a 32-bit value. */
+void *
+sha256_read_ctx (const struct sha256_ctx *ctx, void *resbuf)
+{
+ int i;
+
+ for (i = 0; i < 8; i++)
+ ((uint32_t *) resbuf)[i] = SWAP (ctx->state[i]);
+
+ return resbuf;
+}
+
+void *
+sha224_read_ctx (const struct sha256_ctx *ctx, void *resbuf)
+{
+ int i;
+
+ for (i = 0; i < 7; i++)
+ ((uint32_t *) resbuf)[i] = SWAP (ctx->state[i]);
+
+ return resbuf;
+}
+
+/* Process the remaining bytes in the internal buffer and the usual
+ prolog according to the standard and write the result to RESBUF.
+
+ IMPORTANT: On some systems it is required that RESBUF is correctly
+ aligned for a 32-bit value. */
+static void
+sha256_conclude_ctx (struct sha256_ctx *ctx)
+{
+ /* Take yet unprocessed bytes into account. */
+ uint32_t bytes = ctx->buflen;
+ size_t size = (bytes < 56) ? 64 / 4 : 64 * 2 / 4;
+
+ /* Now count remaining bytes. */
+ ctx->total[0] += bytes;
+ if (ctx->total[0] < bytes)
+ ++ctx->total[1];
+
+ /* Put the 64-bit file length in *bits* at the end of the buffer. */
+ ctx->buffer[size - 2] = SWAP ((ctx->total[1] << 3) | (ctx->total[0] >> 29));
+ ctx->buffer[size - 1] = SWAP (ctx->total[0] << 3);
+
+ memcpy (&((char *) ctx->buffer)[bytes], fillbuf, (size - 2) * 4 - bytes);
+
+ /* Process last bytes. */
+ sha256_process_block (ctx->buffer, size * 4, ctx);
+}
+
+void *
+sha256_finish_ctx (struct sha256_ctx *ctx, void *resbuf)
+{
+ sha256_conclude_ctx (ctx);
+ return sha256_read_ctx (ctx, resbuf);
+}
+
+void *
+sha224_finish_ctx (struct sha256_ctx *ctx, void *resbuf)
+{
+ sha256_conclude_ctx (ctx);
+ return sha224_read_ctx (ctx, resbuf);
+}
+
+/* Compute SHA256 message digest for bytes read from STREAM. The
+ resulting message digest number will be written into the 32 bytes
+ beginning at RESBLOCK. */
+int
+sha256_stream (FILE *stream, void *resblock)
+{
+ struct sha256_ctx ctx;
+ char buffer[BLOCKSIZE + 72];
+ size_t sum;
+
+ /* Initialize the computation context. */
+ sha256_init_ctx (&ctx);
+
+ /* Iterate over full file contents. */
+ while (1)
+ {
+ /* We read the file in blocks of BLOCKSIZE bytes. One call of the
+ computation function processes the whole buffer so that with the
+ next round of the loop another block can be read. */
+ size_t n;
+ sum = 0;
+
+ /* Read block. Take care for partial reads. */
+ while (1)
+ {
+ n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);
+
+ sum += n;
+
+ if (sum == BLOCKSIZE)
+ break;
+
+ if (n == 0)
+ {
+ /* Check for the error flag IFF N == 0, so that we don't
+ exit the loop after a partial read due to e.g., EAGAIN
+ or EWOULDBLOCK. */
+ if (ferror (stream))
+ return 1;
+ goto process_partial_block;
+ }
+
+ /* We've read at least one byte, so ignore errors. But always
+ check for EOF, since feof may be true even though N > 0.
+ Otherwise, we could end up calling fread after EOF. */
+ if (feof (stream))
+ goto process_partial_block;
+ }
+
+ /* Process buffer with BLOCKSIZE bytes. Note that
+ BLOCKSIZE % 64 == 0
+ */
+ sha256_process_block (buffer, BLOCKSIZE, &ctx);
+ }
+
+ process_partial_block:;
+
+ /* Process any remaining bytes. */
+ if (sum > 0)
+ sha256_process_bytes (buffer, sum, &ctx);
+
+ /* Construct result in desired memory. */
+ sha256_finish_ctx (&ctx, resblock);
+ return 0;
+}
+
+/* FIXME: Avoid code duplication */
+int
+sha224_stream (FILE *stream, void *resblock)
+{
+ struct sha256_ctx ctx;
+ char buffer[BLOCKSIZE + 72];
+ size_t sum;
+
+ /* Initialize the computation context. */
+ sha224_init_ctx (&ctx);
+
+ /* Iterate over full file contents. */
+ while (1)
+ {
+ /* We read the file in blocks of BLOCKSIZE bytes. One call of the
+ computation function processes the whole buffer so that with the
+ next round of the loop another block can be read. */
+ size_t n;
+ sum = 0;
+
+ /* Read block. Take care for partial reads. */
+ while (1)
+ {
+ n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);
+
+ sum += n;
+
+ if (sum == BLOCKSIZE)
+ break;
+
+ if (n == 0)
+ {
+ /* Check for the error flag IFF N == 0, so that we don't
+ exit the loop after a partial read due to e.g., EAGAIN
+ or EWOULDBLOCK. */
+ if (ferror (stream))
+ return 1;
+ goto process_partial_block;
+ }
+
+ /* We've read at least one byte, so ignore errors. But always
+ check for EOF, since feof may be true even though N > 0.
+ Otherwise, we could end up calling fread after EOF. */
+ if (feof (stream))
+ goto process_partial_block;
+ }
+
+ /* Process buffer with BLOCKSIZE bytes. Note that
+ BLOCKSIZE % 64 == 0
+ */
+ sha256_process_block (buffer, BLOCKSIZE, &ctx);
+ }
+
+ process_partial_block:;
+
+ /* Process any remaining bytes. */
+ if (sum > 0)
+ sha256_process_bytes (buffer, sum, &ctx);
+
+ /* Construct result in desired memory. */
+ sha224_finish_ctx (&ctx, resblock);
+ return 0;
+}
+
+/* Compute SHA512 message digest for LEN bytes beginning at BUFFER. The
+ result is always in little endian byte order, so that a byte-wise
+ output yields to the wanted ASCII representation of the message
+ digest. */
+void *
+sha256_buffer (const char *buffer, size_t len, void *resblock)
+{
+ struct sha256_ctx ctx;
+
+ /* Initialize the computation context. */
+ sha256_init_ctx (&ctx);
+
+ /* Process whole buffer but last len % 64 bytes. */
+ sha256_process_bytes (buffer, len, &ctx);
+
+ /* Put result in desired memory area. */
+ return sha256_finish_ctx (&ctx, resblock);
+}
+
+void *
+sha224_buffer (const char *buffer, size_t len, void *resblock)
+{
+ struct sha256_ctx ctx;
+
+ /* Initialize the computation context. */
+ sha224_init_ctx (&ctx);
+
+ /* Process whole buffer but last len % 64 bytes. */
+ sha256_process_bytes (buffer, len, &ctx);
+
+ /* Put result in desired memory area. */
+ return sha224_finish_ctx (&ctx, resblock);
+}
+
+void
+sha256_process_bytes (const void *buffer, size_t len, struct sha256_ctx *ctx)
+{
+ /* When we already have some bits in our internal buffer concatenate
+ both inputs first. */
+ if (ctx->buflen != 0)
+ {
+ size_t left_over = ctx->buflen;
+ size_t add = 128 - left_over > len ? len : 128 - left_over;
+
+ memcpy (&((char *) ctx->buffer)[left_over], buffer, add);
+ ctx->buflen += add;
+
+ if (ctx->buflen > 64)
+ {
+ sha256_process_block (ctx->buffer, ctx->buflen & ~63, ctx);
+
+ ctx->buflen &= 63;
+ /* The regions in the following copy operation cannot overlap. */
+ memcpy (ctx->buffer,
+ &((char *) ctx->buffer)[(left_over + add) & ~63],
+ ctx->buflen);
+ }
+
+ buffer = (const char *) buffer + add;
+ len -= add;
+ }
+
+ /* Process available complete blocks. */
+ if (len >= 64)
+ {
+#if !_STRING_ARCH_unaligned
+# define alignof(type) offsetof (struct { char c; type x; }, x)
+# define UNALIGNED_P(p) (((size_t) p) % alignof (uint32_t) != 0)
+ if (UNALIGNED_P (buffer))
+ while (len > 64)
+ {
+ sha256_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx);
+ buffer = (const char *) buffer + 64;
+ len -= 64;
+ }
+ else
+#endif
+ {
+ sha256_process_block (buffer, len & ~63, ctx);
+ buffer = (const char *) buffer + (len & ~63);
+ len &= 63;
+ }
+ }
+
+ /* Move remaining bytes in internal buffer. */
+ if (len > 0)
+ {
+ size_t left_over = ctx->buflen;
+
+ memcpy (&((char *) ctx->buffer)[left_over], buffer, len);
+ left_over += len;
+ if (left_over >= 64)
+ {
+ sha256_process_block (ctx->buffer, 64, ctx);
+ left_over -= 64;
+ memcpy (ctx->buffer, &ctx->buffer[16], left_over);
+ }
+ ctx->buflen = left_over;
+ }
+}
+
+/* --- Code below is the primary difference between sha1.c and sha256.c --- */
+
+/* SHA256 round constants */
+#define K(I) sha256_round_constants[I]
+static const uint32_t sha256_round_constants[64] = {
+ 0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL,
+ 0x3956c25bUL, 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL,
+ 0xd807aa98UL, 0x12835b01UL, 0x243185beUL, 0x550c7dc3UL,
+ 0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL, 0xc19bf174UL,
+ 0xe49b69c1UL, 0xefbe4786UL, 0x0fc19dc6UL, 0x240ca1ccUL,
+ 0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL,
+ 0x983e5152UL, 0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL,
+ 0xc6e00bf3UL, 0xd5a79147UL, 0x06ca6351UL, 0x14292967UL,
+ 0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL, 0x53380d13UL,
+ 0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL,
+ 0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL,
+ 0xd192e819UL, 0xd6990624UL, 0xf40e3585UL, 0x106aa070UL,
+ 0x19a4c116UL, 0x1e376c08UL, 0x2748774cUL, 0x34b0bcb5UL,
+ 0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL, 0x682e6ff3UL,
+ 0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL,
+ 0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL,
+};
+
+/* Round functions. */
+#define F2(A,B,C) ( ( A & B ) | ( C & ( A | B ) ) )
+#define F1(E,F,G) ( G ^ ( E & ( F ^ G ) ) )
+
+/* Process LEN bytes of BUFFER, accumulating context into CTX.
+ It is assumed that LEN % 64 == 0.
+ Most of this code comes from GnuPG's cipher/sha1.c. */
+
+void
+sha256_process_block (const void *buffer, size_t len, struct sha256_ctx *ctx)
+{
+ const uint32_t *words = buffer;
+ size_t nwords = len / sizeof (uint32_t);
+ const uint32_t *endp = words + nwords;
+ uint32_t x[16];
+ uint32_t a = ctx->state[0];
+ uint32_t b = ctx->state[1];
+ uint32_t c = ctx->state[2];
+ uint32_t d = ctx->state[3];
+ uint32_t e = ctx->state[4];
+ uint32_t f = ctx->state[5];
+ uint32_t g = ctx->state[6];
+ uint32_t h = ctx->state[7];
+
+ /* First increment the byte count. FIPS PUB 180-2 specifies the possible
+ length of the file up to 2^64 bits. Here we only compute the
+ number of bytes. Do a double word increment. */
+ ctx->total[0] += len;
+ if (ctx->total[0] < len)
+ ++ctx->total[1];
+
+#define rol(x, n) (((x) << (n)) | ((x) >> (32 - (n))))
+#define S0(x) (rol(x,25)^rol(x,14)^(x>>3))
+#define S1(x) (rol(x,15)^rol(x,13)^(x>>10))
+#define SS0(x) (rol(x,30)^rol(x,19)^rol(x,10))
+#define SS1(x) (rol(x,26)^rol(x,21)^rol(x,7))
+
+#define M(I) ( tm = S1(x[(I-2)&0x0f]) + x[(I-7)&0x0f] \
+ + S0(x[(I-15)&0x0f]) + x[I&0x0f] \
+ , x[I&0x0f] = tm )
+
+#define R(A,B,C,D,E,F,G,H,K,M) do { t0 = SS0(A) + F2(A,B,C); \
+ t1 = H + SS1(E) \
+ + F1(E,F,G) \
+ + K \
+ + M; \
+ D += t1; H = t0 + t1; \
+ } while(0)
+
+ while (words < endp)
+ {
+ uint32_t tm;
+ uint32_t t0, t1;
+ int t;
+ /* FIXME: see sha1.c for a better implementation. */
+ for (t = 0; t < 16; t++)
+ {
+ x[t] = SWAP (*words);
+ words++;
+ }
+
+ R( a, b, c, d, e, f, g, h, K( 0), x[ 0] );
+ R( h, a, b, c, d, e, f, g, K( 1), x[ 1] );
+ R( g, h, a, b, c, d, e, f, K( 2), x[ 2] );
+ R( f, g, h, a, b, c, d, e, K( 3), x[ 3] );
+ R( e, f, g, h, a, b, c, d, K( 4), x[ 4] );
+ R( d, e, f, g, h, a, b, c, K( 5), x[ 5] );
+ R( c, d, e, f, g, h, a, b, K( 6), x[ 6] );
+ R( b, c, d, e, f, g, h, a, K( 7), x[ 7] );
+ R( a, b, c, d, e, f, g, h, K( 8), x[ 8] );
+ R( h, a, b, c, d, e, f, g, K( 9), x[ 9] );
+ R( g, h, a, b, c, d, e, f, K(10), x[10] );
+ R( f, g, h, a, b, c, d, e, K(11), x[11] );
+ R( e, f, g, h, a, b, c, d, K(12), x[12] );
+ R( d, e, f, g, h, a, b, c, K(13), x[13] );
+ R( c, d, e, f, g, h, a, b, K(14), x[14] );
+ R( b, c, d, e, f, g, h, a, K(15), x[15] );
+ R( a, b, c, d, e, f, g, h, K(16), M(16) );
+ R( h, a, b, c, d, e, f, g, K(17), M(17) );
+ R( g, h, a, b, c, d, e, f, K(18), M(18) );
+ R( f, g, h, a, b, c, d, e, K(19), M(19) );
+ R( e, f, g, h, a, b, c, d, K(20), M(20) );
+ R( d, e, f, g, h, a, b, c, K(21), M(21) );
+ R( c, d, e, f, g, h, a, b, K(22), M(22) );
+ R( b, c, d, e, f, g, h, a, K(23), M(23) );
+ R( a, b, c, d, e, f, g, h, K(24), M(24) );
+ R( h, a, b, c, d, e, f, g, K(25), M(25) );
+ R( g, h, a, b, c, d, e, f, K(26), M(26) );
+ R( f, g, h, a, b, c, d, e, K(27), M(27) );
+ R( e, f, g, h, a, b, c, d, K(28), M(28) );
+ R( d, e, f, g, h, a, b, c, K(29), M(29) );
+ R( c, d, e, f, g, h, a, b, K(30), M(30) );
+ R( b, c, d, e, f, g, h, a, K(31), M(31) );
+ R( a, b, c, d, e, f, g, h, K(32), M(32) );
+ R( h, a, b, c, d, e, f, g, K(33), M(33) );
+ R( g, h, a, b, c, d, e, f, K(34), M(34) );
+ R( f, g, h, a, b, c, d, e, K(35), M(35) );
+ R( e, f, g, h, a, b, c, d, K(36), M(36) );
+ R( d, e, f, g, h, a, b, c, K(37), M(37) );
+ R( c, d, e, f, g, h, a, b, K(38), M(38) );
+ R( b, c, d, e, f, g, h, a, K(39), M(39) );
+ R( a, b, c, d, e, f, g, h, K(40), M(40) );
+ R( h, a, b, c, d, e, f, g, K(41), M(41) );
+ R( g, h, a, b, c, d, e, f, K(42), M(42) );
+ R( f, g, h, a, b, c, d, e, K(43), M(43) );
+ R( e, f, g, h, a, b, c, d, K(44), M(44) );
+ R( d, e, f, g, h, a, b, c, K(45), M(45) );
+ R( c, d, e, f, g, h, a, b, K(46), M(46) );
+ R( b, c, d, e, f, g, h, a, K(47), M(47) );
+ R( a, b, c, d, e, f, g, h, K(48), M(48) );
+ R( h, a, b, c, d, e, f, g, K(49), M(49) );
+ R( g, h, a, b, c, d, e, f, K(50), M(50) );
+ R( f, g, h, a, b, c, d, e, K(51), M(51) );
+ R( e, f, g, h, a, b, c, d, K(52), M(52) );
+ R( d, e, f, g, h, a, b, c, K(53), M(53) );
+ R( c, d, e, f, g, h, a, b, K(54), M(54) );
+ R( b, c, d, e, f, g, h, a, K(55), M(55) );
+ R( a, b, c, d, e, f, g, h, K(56), M(56) );
+ R( h, a, b, c, d, e, f, g, K(57), M(57) );
+ R( g, h, a, b, c, d, e, f, K(58), M(58) );
+ R( f, g, h, a, b, c, d, e, K(59), M(59) );
+ R( e, f, g, h, a, b, c, d, K(60), M(60) );
+ R( d, e, f, g, h, a, b, c, K(61), M(61) );
+ R( c, d, e, f, g, h, a, b, K(62), M(62) );
+ R( b, c, d, e, f, g, h, a, K(63), M(63) );
+
+ a = ctx->state[0] += a;
+ b = ctx->state[1] += b;
+ c = ctx->state[2] += c;
+ d = ctx->state[3] += d;
+ e = ctx->state[4] += e;
+ f = ctx->state[5] += f;
+ g = ctx->state[6] += g;
+ h = ctx->state[7] += h;
+ }
+}
diff --git a/lib/sha256.h b/lib/sha256.h
new file mode 100644
index 0000000..ccbe6cf
--- /dev/null
+++ b/lib/sha256.h
@@ -0,0 +1,88 @@
+/* Declarations of functions and data types used for SHA256 and SHA224 sum
+ library functions.
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef SHA256_H
+# define SHA256_H 1
+
+# include <stdio.h>
+# include <stdint.h>
+
+/* Structure to save state of computation between the single steps. */
+struct sha256_ctx
+{
+ uint32_t state[8];
+
+ uint32_t total[2];
+ uint32_t buflen;
+ uint32_t buffer[32];
+};
+
+
+/* Initialize structure containing state of computation. */
+extern void sha256_init_ctx (struct sha256_ctx *ctx);
+extern void sha224_init_ctx (struct sha256_ctx *ctx);
+
+/* Starting with the result of former calls of this function (or the
+ initialization function update the context for the next LEN bytes
+ starting at BUFFER.
+ It is necessary that LEN is a multiple of 64!!! */
+extern void sha256_process_block (const void *buffer, size_t len,
+ struct sha256_ctx *ctx);
+
+/* Starting with the result of former calls of this function (or the
+ initialization function update the context for the next LEN bytes
+ starting at BUFFER.
+ It is NOT required that LEN is a multiple of 64. */
+extern void sha256_process_bytes (const void *buffer, size_t len,
+ struct sha256_ctx *ctx);
+
+/* Process the remaining bytes in the buffer and put result from CTX
+ in first 32 (28) bytes following RESBUF. The result is always in little
+ endian byte order, so that a byte-wise output yields to the wanted
+ ASCII representation of the message digest.
+
+ IMPORTANT: On some systems it is required that RESBUF be correctly
+ aligned for a 32 bits value. */
+extern void *sha256_finish_ctx (struct sha256_ctx *ctx, void *resbuf);
+extern void *sha224_finish_ctx (struct sha256_ctx *ctx, void *resbuf);
+
+
+/* Put result from CTX in first 32 (28) bytes following RESBUF. The result is
+ always in little endian byte order, so that a byte-wise output yields
+ to the wanted ASCII representation of the message digest.
+
+ IMPORTANT: On some systems it is required that RESBUF is correctly
+ aligned for a 32 bits value. */
+extern void *sha256_read_ctx (const struct sha256_ctx *ctx, void *resbuf);
+extern void *sha224_read_ctx (const struct sha256_ctx *ctx, void *resbuf);
+
+
+/* Compute SHA256 (SHA224) message digest for bytes read from STREAM. The
+ resulting message digest number will be written into the 32 (28) bytes
+ beginning at RESBLOCK. */
+extern int sha256_stream (FILE *stream, void *resblock);
+extern int sha224_stream (FILE *stream, void *resblock);
+
+/* Compute SHA256 (SHA224) message digest for LEN bytes beginning at BUFFER. The
+ result is always in little endian byte order, so that a byte-wise
+ output yields to the wanted ASCII representation of the message
+ digest. */
+extern void *sha256_buffer (const char *buffer, size_t len, void *resblock);
+extern void *sha224_buffer (const char *buffer, size_t len, void *resblock);
+
+#endif
diff --git a/lib/sha512.c b/lib/sha512.c
new file mode 100644
index 0000000..e24c6f5
--- /dev/null
+++ b/lib/sha512.c
@@ -0,0 +1,596 @@
+/* sha512.c - Functions to compute SHA512 and SHA384 message digest of files or
+ memory blocks according to the NIST specification FIPS-180-2.
+
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David Madore, considerably copypasting from
+ Scott G. Miller's sha1.c
+*/
+
+#include <config.h>
+
+#include "sha512.h"
+
+#include <stddef.h>
+#include <string.h>
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#ifdef WORDS_BIGENDIAN
+# define SWAP(n) (n)
+#else
+# define SWAP(n) \
+ u64or (u64or (u64or (u64shl (n, 56), \
+ u64shl (u64and (n, u64lo (0x0000ff00)), 40)), \
+ u64or (u64shl (u64and (n, u64lo (0x00ff0000)), 24), \
+ u64shl (u64and (n, u64lo (0xff000000)), 8))), \
+ u64or (u64or (u64and (u64shr (n, 8), u64lo (0xff000000)), \
+ u64and (u64shr (n, 24), u64lo (0x00ff0000))), \
+ u64or (u64and (u64shr (n, 40), u64lo (0x0000ff00)), \
+ u64shr (n, 56))))
+#endif
+
+#define BLOCKSIZE 4096
+#if BLOCKSIZE % 128 != 0
+# error "invalid BLOCKSIZE"
+#endif
+
+/* This array contains the bytes used to pad the buffer to the next
+ 128-byte boundary. */
+static const unsigned char fillbuf[128] = { 0x80, 0 /* , 0, 0, ... */ };
+
+
+/*
+ Takes a pointer to a 512 bit block of data (eight 64 bit ints) and
+ intializes it to the start constants of the SHA512 algorithm. This
+ must be called before using hash in the call to sha512_hash
+*/
+void
+sha512_init_ctx (struct sha512_ctx *ctx)
+{
+ ctx->state[0] = u64hilo (0x6a09e667, 0xf3bcc908);
+ ctx->state[1] = u64hilo (0xbb67ae85, 0x84caa73b);
+ ctx->state[2] = u64hilo (0x3c6ef372, 0xfe94f82b);
+ ctx->state[3] = u64hilo (0xa54ff53a, 0x5f1d36f1);
+ ctx->state[4] = u64hilo (0x510e527f, 0xade682d1);
+ ctx->state[5] = u64hilo (0x9b05688c, 0x2b3e6c1f);
+ ctx->state[6] = u64hilo (0x1f83d9ab, 0xfb41bd6b);
+ ctx->state[7] = u64hilo (0x5be0cd19, 0x137e2179);
+
+ ctx->total[0] = ctx->total[1] = u64lo (0);
+ ctx->buflen = 0;
+}
+
+void
+sha384_init_ctx (struct sha512_ctx *ctx)
+{
+ ctx->state[0] = u64hilo (0xcbbb9d5d, 0xc1059ed8);
+ ctx->state[1] = u64hilo (0x629a292a, 0x367cd507);
+ ctx->state[2] = u64hilo (0x9159015a, 0x3070dd17);
+ ctx->state[3] = u64hilo (0x152fecd8, 0xf70e5939);
+ ctx->state[4] = u64hilo (0x67332667, 0xffc00b31);
+ ctx->state[5] = u64hilo (0x8eb44a87, 0x68581511);
+ ctx->state[6] = u64hilo (0xdb0c2e0d, 0x64f98fa7);
+ ctx->state[7] = u64hilo (0x47b5481d, 0xbefa4fa4);
+
+ ctx->total[0] = ctx->total[1] = u64lo (0);
+ ctx->buflen = 0;
+}
+
+/* Put result from CTX in first 64 bytes following RESBUF. The result
+ must be in little endian byte order.
+
+ IMPORTANT: On some systems it is required that RESBUF is correctly
+ aligned for a 64-bit value. */
+void *
+sha512_read_ctx (const struct sha512_ctx *ctx, void *resbuf)
+{
+ int i;
+
+ for (i = 0; i < 8; i++)
+ ((u64 *) resbuf)[i] = SWAP (ctx->state[i]);
+
+ return resbuf;
+}
+
+void *
+sha384_read_ctx (const struct sha512_ctx *ctx, void *resbuf)
+{
+ int i;
+
+ for (i = 0; i < 6; i++)
+ ((u64 *) resbuf)[i] = SWAP (ctx->state[i]);
+
+ return resbuf;
+}
+
+/* Process the remaining bytes in the internal buffer and the usual
+ prolog according to the standard and write the result to RESBUF.
+
+ IMPORTANT: On some systems it is required that RESBUF is correctly
+ aligned for a 64-bit value. */
+static void
+sha512_conclude_ctx (struct sha512_ctx *ctx)
+{
+ /* Take yet unprocessed bytes into account. */
+ size_t bytes = ctx->buflen;
+ size_t size = (bytes < 112) ? 128 / 8 : 128 * 2 / 8;
+
+ /* Now count remaining bytes. */
+ ctx->total[0] = u64plus (ctx->total[0], u64lo (bytes));
+ if (u64lt (ctx->total[0], u64lo (bytes)))
+ ctx->total[1] = u64plus (ctx->total[1], u64lo (1));
+
+ /* Put the 64-bit file length in *bits* at the end of the buffer. */
+ ctx->buffer[size - 2] = SWAP (u64or (u64shl (ctx->total[1], 3),
+ u64shr (ctx->total[0], 61)));
+ ctx->buffer[size - 1] = SWAP (u64shl (ctx->total[0], 3));
+
+ memcpy (&((char *) ctx->buffer)[bytes], fillbuf, (size - 2) * 8 - bytes);
+
+ /* Process last bytes. */
+ sha512_process_block (ctx->buffer, size * 8, ctx);
+}
+
+void *
+sha512_finish_ctx (struct sha512_ctx *ctx, void *resbuf)
+{
+ sha512_conclude_ctx (ctx);
+ return sha512_read_ctx (ctx, resbuf);
+}
+
+void *
+sha384_finish_ctx (struct sha512_ctx *ctx, void *resbuf)
+{
+ sha512_conclude_ctx (ctx);
+ return sha384_read_ctx (ctx, resbuf);
+}
+
+/* Compute SHA512 message digest for bytes read from STREAM. The
+ resulting message digest number will be written into the 64 bytes
+ beginning at RESBLOCK. */
+int
+sha512_stream (FILE *stream, void *resblock)
+{
+ struct sha512_ctx ctx;
+ char buffer[BLOCKSIZE + 72];
+ size_t sum;
+
+ /* Initialize the computation context. */
+ sha512_init_ctx (&ctx);
+
+ /* Iterate over full file contents. */
+ while (1)
+ {
+ /* We read the file in blocks of BLOCKSIZE bytes. One call of the
+ computation function processes the whole buffer so that with the
+ next round of the loop another block can be read. */
+ size_t n;
+ sum = 0;
+
+ /* Read block. Take care for partial reads. */
+ while (1)
+ {
+ n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);
+
+ sum += n;
+
+ if (sum == BLOCKSIZE)
+ break;
+
+ if (n == 0)
+ {
+ /* Check for the error flag IFF N == 0, so that we don't
+ exit the loop after a partial read due to e.g., EAGAIN
+ or EWOULDBLOCK. */
+ if (ferror (stream))
+ return 1;
+ goto process_partial_block;
+ }
+
+ /* We've read at least one byte, so ignore errors. But always
+ check for EOF, since feof may be true even though N > 0.
+ Otherwise, we could end up calling fread after EOF. */
+ if (feof (stream))
+ goto process_partial_block;
+ }
+
+ /* Process buffer with BLOCKSIZE bytes. Note that
+ BLOCKSIZE % 128 == 0
+ */
+ sha512_process_block (buffer, BLOCKSIZE, &ctx);
+ }
+
+ process_partial_block:;
+
+ /* Process any remaining bytes. */
+ if (sum > 0)
+ sha512_process_bytes (buffer, sum, &ctx);
+
+ /* Construct result in desired memory. */
+ sha512_finish_ctx (&ctx, resblock);
+ return 0;
+}
+
+/* FIXME: Avoid code duplication */
+int
+sha384_stream (FILE *stream, void *resblock)
+{
+ struct sha512_ctx ctx;
+ char buffer[BLOCKSIZE + 72];
+ size_t sum;
+
+ /* Initialize the computation context. */
+ sha384_init_ctx (&ctx);
+
+ /* Iterate over full file contents. */
+ while (1)
+ {
+ /* We read the file in blocks of BLOCKSIZE bytes. One call of the
+ computation function processes the whole buffer so that with the
+ next round of the loop another block can be read. */
+ size_t n;
+ sum = 0;
+
+ /* Read block. Take care for partial reads. */
+ while (1)
+ {
+ n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);
+
+ sum += n;
+
+ if (sum == BLOCKSIZE)
+ break;
+
+ if (n == 0)
+ {
+ /* Check for the error flag IFF N == 0, so that we don't
+ exit the loop after a partial read due to e.g., EAGAIN
+ or EWOULDBLOCK. */
+ if (ferror (stream))
+ return 1;
+ goto process_partial_block;
+ }
+
+ /* We've read at least one byte, so ignore errors. But always
+ check for EOF, since feof may be true even though N > 0.
+ Otherwise, we could end up calling fread after EOF. */
+ if (feof (stream))
+ goto process_partial_block;
+ }
+
+ /* Process buffer with BLOCKSIZE bytes. Note that
+ BLOCKSIZE % 128 == 0
+ */
+ sha512_process_block (buffer, BLOCKSIZE, &ctx);
+ }
+
+ process_partial_block:;
+
+ /* Process any remaining bytes. */
+ if (sum > 0)
+ sha512_process_bytes (buffer, sum, &ctx);
+
+ /* Construct result in desired memory. */
+ sha384_finish_ctx (&ctx, resblock);
+ return 0;
+}
+
+/* Compute SHA512 message digest for LEN bytes beginning at BUFFER. The
+ result is always in little endian byte order, so that a byte-wise
+ output yields to the wanted ASCII representation of the message
+ digest. */
+void *
+sha512_buffer (const char *buffer, size_t len, void *resblock)
+{
+ struct sha512_ctx ctx;
+
+ /* Initialize the computation context. */
+ sha512_init_ctx (&ctx);
+
+ /* Process whole buffer but last len % 128 bytes. */
+ sha512_process_bytes (buffer, len, &ctx);
+
+ /* Put result in desired memory area. */
+ return sha512_finish_ctx (&ctx, resblock);
+}
+
+void *
+sha384_buffer (const char *buffer, size_t len, void *resblock)
+{
+ struct sha512_ctx ctx;
+
+ /* Initialize the computation context. */
+ sha384_init_ctx (&ctx);
+
+ /* Process whole buffer but last len % 128 bytes. */
+ sha512_process_bytes (buffer, len, &ctx);
+
+ /* Put result in desired memory area. */
+ return sha384_finish_ctx (&ctx, resblock);
+}
+
+void
+sha512_process_bytes (const void *buffer, size_t len, struct sha512_ctx *ctx)
+{
+ /* When we already have some bits in our internal buffer concatenate
+ both inputs first. */
+ if (ctx->buflen != 0)
+ {
+ size_t left_over = ctx->buflen;
+ size_t add = 256 - left_over > len ? len : 256 - left_over;
+
+ memcpy (&((char *) ctx->buffer)[left_over], buffer, add);
+ ctx->buflen += add;
+
+ if (ctx->buflen > 128)
+ {
+ sha512_process_block (ctx->buffer, ctx->buflen & ~63, ctx);
+
+ ctx->buflen &= 127;
+ /* The regions in the following copy operation cannot overlap. */
+ memcpy (ctx->buffer,
+ &((char *) ctx->buffer)[(left_over + add) & ~127],
+ ctx->buflen);
+ }
+
+ buffer = (const char *) buffer + add;
+ len -= add;
+ }
+
+ /* Process available complete blocks. */
+ if (len >= 128)
+ {
+#if !_STRING_ARCH_unaligned
+# define alignof(type) offsetof (struct { char c; type x; }, x)
+# define UNALIGNED_P(p) (((size_t) p) % alignof (u64) != 0)
+ if (UNALIGNED_P (buffer))
+ while (len > 128)
+ {
+ sha512_process_block (memcpy (ctx->buffer, buffer, 128), 128, ctx);
+ buffer = (const char *) buffer + 128;
+ len -= 128;
+ }
+ else
+#endif
+ {
+ sha512_process_block (buffer, len & ~127, ctx);
+ buffer = (const char *) buffer + (len & ~127);
+ len &= 127;
+ }
+ }
+
+ /* Move remaining bytes in internal buffer. */
+ if (len > 0)
+ {
+ size_t left_over = ctx->buflen;
+
+ memcpy (&((char *) ctx->buffer)[left_over], buffer, len);
+ left_over += len;
+ if (left_over >= 128)
+ {
+ sha512_process_block (ctx->buffer, 128, ctx);
+ left_over -= 128;
+ memcpy (ctx->buffer, &ctx->buffer[16], left_over);
+ }
+ ctx->buflen = left_over;
+ }
+}
+
+/* --- Code below is the primary difference between sha1.c and sha512.c --- */
+
+/* SHA512 round constants */
+#define K(I) sha512_round_constants[I]
+static u64 const sha512_round_constants[80] = {
+ u64init (0x428a2f98, 0xd728ae22), u64init (0x71374491, 0x23ef65cd),
+ u64init (0xb5c0fbcf, 0xec4d3b2f), u64init (0xe9b5dba5, 0x8189dbbc),
+ u64init (0x3956c25b, 0xf348b538), u64init (0x59f111f1, 0xb605d019),
+ u64init (0x923f82a4, 0xaf194f9b), u64init (0xab1c5ed5, 0xda6d8118),
+ u64init (0xd807aa98, 0xa3030242), u64init (0x12835b01, 0x45706fbe),
+ u64init (0x243185be, 0x4ee4b28c), u64init (0x550c7dc3, 0xd5ffb4e2),
+ u64init (0x72be5d74, 0xf27b896f), u64init (0x80deb1fe, 0x3b1696b1),
+ u64init (0x9bdc06a7, 0x25c71235), u64init (0xc19bf174, 0xcf692694),
+ u64init (0xe49b69c1, 0x9ef14ad2), u64init (0xefbe4786, 0x384f25e3),
+ u64init (0x0fc19dc6, 0x8b8cd5b5), u64init (0x240ca1cc, 0x77ac9c65),
+ u64init (0x2de92c6f, 0x592b0275), u64init (0x4a7484aa, 0x6ea6e483),
+ u64init (0x5cb0a9dc, 0xbd41fbd4), u64init (0x76f988da, 0x831153b5),
+ u64init (0x983e5152, 0xee66dfab), u64init (0xa831c66d, 0x2db43210),
+ u64init (0xb00327c8, 0x98fb213f), u64init (0xbf597fc7, 0xbeef0ee4),
+ u64init (0xc6e00bf3, 0x3da88fc2), u64init (0xd5a79147, 0x930aa725),
+ u64init (0x06ca6351, 0xe003826f), u64init (0x14292967, 0x0a0e6e70),
+ u64init (0x27b70a85, 0x46d22ffc), u64init (0x2e1b2138, 0x5c26c926),
+ u64init (0x4d2c6dfc, 0x5ac42aed), u64init (0x53380d13, 0x9d95b3df),
+ u64init (0x650a7354, 0x8baf63de), u64init (0x766a0abb, 0x3c77b2a8),
+ u64init (0x81c2c92e, 0x47edaee6), u64init (0x92722c85, 0x1482353b),
+ u64init (0xa2bfe8a1, 0x4cf10364), u64init (0xa81a664b, 0xbc423001),
+ u64init (0xc24b8b70, 0xd0f89791), u64init (0xc76c51a3, 0x0654be30),
+ u64init (0xd192e819, 0xd6ef5218), u64init (0xd6990624, 0x5565a910),
+ u64init (0xf40e3585, 0x5771202a), u64init (0x106aa070, 0x32bbd1b8),
+ u64init (0x19a4c116, 0xb8d2d0c8), u64init (0x1e376c08, 0x5141ab53),
+ u64init (0x2748774c, 0xdf8eeb99), u64init (0x34b0bcb5, 0xe19b48a8),
+ u64init (0x391c0cb3, 0xc5c95a63), u64init (0x4ed8aa4a, 0xe3418acb),
+ u64init (0x5b9cca4f, 0x7763e373), u64init (0x682e6ff3, 0xd6b2b8a3),
+ u64init (0x748f82ee, 0x5defb2fc), u64init (0x78a5636f, 0x43172f60),
+ u64init (0x84c87814, 0xa1f0ab72), u64init (0x8cc70208, 0x1a6439ec),
+ u64init (0x90befffa, 0x23631e28), u64init (0xa4506ceb, 0xde82bde9),
+ u64init (0xbef9a3f7, 0xb2c67915), u64init (0xc67178f2, 0xe372532b),
+ u64init (0xca273ece, 0xea26619c), u64init (0xd186b8c7, 0x21c0c207),
+ u64init (0xeada7dd6, 0xcde0eb1e), u64init (0xf57d4f7f, 0xee6ed178),
+ u64init (0x06f067aa, 0x72176fba), u64init (0x0a637dc5, 0xa2c898a6),
+ u64init (0x113f9804, 0xbef90dae), u64init (0x1b710b35, 0x131c471b),
+ u64init (0x28db77f5, 0x23047d84), u64init (0x32caab7b, 0x40c72493),
+ u64init (0x3c9ebe0a, 0x15c9bebc), u64init (0x431d67c4, 0x9c100d4c),
+ u64init (0x4cc5d4be, 0xcb3e42b6), u64init (0x597f299c, 0xfc657e2a),
+ u64init (0x5fcb6fab, 0x3ad6faec), u64init (0x6c44198c, 0x4a475817),
+};
+
+/* Round functions. */
+#define F2(A, B, C) u64or (u64and (A, B), u64and (C, u64or (A, B)))
+#define F1(E, F, G) u64xor (G, u64and (E, u64xor (F, G)))
+
+/* Process LEN bytes of BUFFER, accumulating context into CTX.
+ It is assumed that LEN % 128 == 0.
+ Most of this code comes from GnuPG's cipher/sha1.c. */
+
+void
+sha512_process_block (const void *buffer, size_t len, struct sha512_ctx *ctx)
+{
+ u64 const *words = buffer;
+ u64 const *endp = words + len / sizeof (u64);
+ u64 x[16];
+ u64 a = ctx->state[0];
+ u64 b = ctx->state[1];
+ u64 c = ctx->state[2];
+ u64 d = ctx->state[3];
+ u64 e = ctx->state[4];
+ u64 f = ctx->state[5];
+ u64 g = ctx->state[6];
+ u64 h = ctx->state[7];
+
+ /* First increment the byte count. FIPS PUB 180-2 specifies the possible
+ length of the file up to 2^128 bits. Here we only compute the
+ number of bytes. Do a double word increment. */
+ ctx->total[0] = u64plus (ctx->total[0], u64lo (len));
+ if (u64lt (ctx->total[0], u64lo (len)))
+ ctx->total[1] = u64plus (ctx->total[1], u64lo (1));
+
+#define S0(x) u64xor (u64rol(x, 63), u64xor (u64rol (x, 56), u64shr (x, 7)))
+#define S1(x) u64xor (u64rol (x, 45), u64xor (u64rol (x, 3), u64shr (x, 6)))
+#define SS0(x) u64xor (u64rol (x, 36), u64xor (u64rol (x, 30), u64rol (x, 25)))
+#define SS1(x) u64xor (u64rol(x, 50), u64xor (u64rol (x, 46), u64rol (x, 23)))
+
+#define M(I) (x[(I) & 15] \
+ = u64plus (x[(I) & 15], \
+ u64plus (S1 (x[((I) - 2) & 15]), \
+ u64plus (x[((I) - 7) & 15], \
+ S0 (x[((I) - 15) & 15])))))
+
+#define R(A, B, C, D, E, F, G, H, K, M) \
+ do \
+ { \
+ u64 t0 = u64plus (SS0 (A), F2 (A, B, C)); \
+ u64 t1 = \
+ u64plus (H, u64plus (SS1 (E), \
+ u64plus (F1 (E, F, G), u64plus (K, M)))); \
+ D = u64plus (D, t1); \
+ H = u64plus (t0, t1); \
+ } \
+ while (0)
+
+ while (words < endp)
+ {
+ int t;
+ /* FIXME: see sha1.c for a better implementation. */
+ for (t = 0; t < 16; t++)
+ {
+ x[t] = SWAP (*words);
+ words++;
+ }
+
+ R( a, b, c, d, e, f, g, h, K( 0), x[ 0] );
+ R( h, a, b, c, d, e, f, g, K( 1), x[ 1] );
+ R( g, h, a, b, c, d, e, f, K( 2), x[ 2] );
+ R( f, g, h, a, b, c, d, e, K( 3), x[ 3] );
+ R( e, f, g, h, a, b, c, d, K( 4), x[ 4] );
+ R( d, e, f, g, h, a, b, c, K( 5), x[ 5] );
+ R( c, d, e, f, g, h, a, b, K( 6), x[ 6] );
+ R( b, c, d, e, f, g, h, a, K( 7), x[ 7] );
+ R( a, b, c, d, e, f, g, h, K( 8), x[ 8] );
+ R( h, a, b, c, d, e, f, g, K( 9), x[ 9] );
+ R( g, h, a, b, c, d, e, f, K(10), x[10] );
+ R( f, g, h, a, b, c, d, e, K(11), x[11] );
+ R( e, f, g, h, a, b, c, d, K(12), x[12] );
+ R( d, e, f, g, h, a, b, c, K(13), x[13] );
+ R( c, d, e, f, g, h, a, b, K(14), x[14] );
+ R( b, c, d, e, f, g, h, a, K(15), x[15] );
+ R( a, b, c, d, e, f, g, h, K(16), M(16) );
+ R( h, a, b, c, d, e, f, g, K(17), M(17) );
+ R( g, h, a, b, c, d, e, f, K(18), M(18) );
+ R( f, g, h, a, b, c, d, e, K(19), M(19) );
+ R( e, f, g, h, a, b, c, d, K(20), M(20) );
+ R( d, e, f, g, h, a, b, c, K(21), M(21) );
+ R( c, d, e, f, g, h, a, b, K(22), M(22) );
+ R( b, c, d, e, f, g, h, a, K(23), M(23) );
+ R( a, b, c, d, e, f, g, h, K(24), M(24) );
+ R( h, a, b, c, d, e, f, g, K(25), M(25) );
+ R( g, h, a, b, c, d, e, f, K(26), M(26) );
+ R( f, g, h, a, b, c, d, e, K(27), M(27) );
+ R( e, f, g, h, a, b, c, d, K(28), M(28) );
+ R( d, e, f, g, h, a, b, c, K(29), M(29) );
+ R( c, d, e, f, g, h, a, b, K(30), M(30) );
+ R( b, c, d, e, f, g, h, a, K(31), M(31) );
+ R( a, b, c, d, e, f, g, h, K(32), M(32) );
+ R( h, a, b, c, d, e, f, g, K(33), M(33) );
+ R( g, h, a, b, c, d, e, f, K(34), M(34) );
+ R( f, g, h, a, b, c, d, e, K(35), M(35) );
+ R( e, f, g, h, a, b, c, d, K(36), M(36) );
+ R( d, e, f, g, h, a, b, c, K(37), M(37) );
+ R( c, d, e, f, g, h, a, b, K(38), M(38) );
+ R( b, c, d, e, f, g, h, a, K(39), M(39) );
+ R( a, b, c, d, e, f, g, h, K(40), M(40) );
+ R( h, a, b, c, d, e, f, g, K(41), M(41) );
+ R( g, h, a, b, c, d, e, f, K(42), M(42) );
+ R( f, g, h, a, b, c, d, e, K(43), M(43) );
+ R( e, f, g, h, a, b, c, d, K(44), M(44) );
+ R( d, e, f, g, h, a, b, c, K(45), M(45) );
+ R( c, d, e, f, g, h, a, b, K(46), M(46) );
+ R( b, c, d, e, f, g, h, a, K(47), M(47) );
+ R( a, b, c, d, e, f, g, h, K(48), M(48) );
+ R( h, a, b, c, d, e, f, g, K(49), M(49) );
+ R( g, h, a, b, c, d, e, f, K(50), M(50) );
+ R( f, g, h, a, b, c, d, e, K(51), M(51) );
+ R( e, f, g, h, a, b, c, d, K(52), M(52) );
+ R( d, e, f, g, h, a, b, c, K(53), M(53) );
+ R( c, d, e, f, g, h, a, b, K(54), M(54) );
+ R( b, c, d, e, f, g, h, a, K(55), M(55) );
+ R( a, b, c, d, e, f, g, h, K(56), M(56) );
+ R( h, a, b, c, d, e, f, g, K(57), M(57) );
+ R( g, h, a, b, c, d, e, f, K(58), M(58) );
+ R( f, g, h, a, b, c, d, e, K(59), M(59) );
+ R( e, f, g, h, a, b, c, d, K(60), M(60) );
+ R( d, e, f, g, h, a, b, c, K(61), M(61) );
+ R( c, d, e, f, g, h, a, b, K(62), M(62) );
+ R( b, c, d, e, f, g, h, a, K(63), M(63) );
+ R( a, b, c, d, e, f, g, h, K(64), M(64) );
+ R( h, a, b, c, d, e, f, g, K(65), M(65) );
+ R( g, h, a, b, c, d, e, f, K(66), M(66) );
+ R( f, g, h, a, b, c, d, e, K(67), M(67) );
+ R( e, f, g, h, a, b, c, d, K(68), M(68) );
+ R( d, e, f, g, h, a, b, c, K(69), M(69) );
+ R( c, d, e, f, g, h, a, b, K(70), M(70) );
+ R( b, c, d, e, f, g, h, a, K(71), M(71) );
+ R( a, b, c, d, e, f, g, h, K(72), M(72) );
+ R( h, a, b, c, d, e, f, g, K(73), M(73) );
+ R( g, h, a, b, c, d, e, f, K(74), M(74) );
+ R( f, g, h, a, b, c, d, e, K(75), M(75) );
+ R( e, f, g, h, a, b, c, d, K(76), M(76) );
+ R( d, e, f, g, h, a, b, c, K(77), M(77) );
+ R( c, d, e, f, g, h, a, b, K(78), M(78) );
+ R( b, c, d, e, f, g, h, a, K(79), M(79) );
+
+ a = ctx->state[0] = u64plus (ctx->state[0], a);
+ b = ctx->state[1] = u64plus (ctx->state[1], b);
+ c = ctx->state[2] = u64plus (ctx->state[2], c);
+ d = ctx->state[3] = u64plus (ctx->state[3], d);
+ e = ctx->state[4] = u64plus (ctx->state[4], e);
+ f = ctx->state[5] = u64plus (ctx->state[5], f);
+ g = ctx->state[6] = u64plus (ctx->state[6], g);
+ h = ctx->state[7] = u64plus (ctx->state[7], h);
+ }
+}
diff --git a/lib/sha512.h b/lib/sha512.h
new file mode 100644
index 0000000..995511e
--- /dev/null
+++ b/lib/sha512.h
@@ -0,0 +1,89 @@
+/* Declarations of functions and data types used for SHA512 and SHA384 sum
+ library functions.
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef SHA512_H
+# define SHA512_H 1
+
+# include <stdio.h>
+
+# include "u64.h"
+
+/* Structure to save state of computation between the single steps. */
+struct sha512_ctx
+{
+ u64 state[8];
+
+ u64 total[2];
+ size_t buflen;
+ u64 buffer[32];
+};
+
+
+/* Initialize structure containing state of computation. */
+extern void sha512_init_ctx (struct sha512_ctx *ctx);
+extern void sha384_init_ctx (struct sha512_ctx *ctx);
+
+/* Starting with the result of former calls of this function (or the
+ initialization function update the context for the next LEN bytes
+ starting at BUFFER.
+ It is necessary that LEN is a multiple of 128!!! */
+extern void sha512_process_block (const void *buffer, size_t len,
+ struct sha512_ctx *ctx);
+
+/* Starting with the result of former calls of this function (or the
+ initialization function update the context for the next LEN bytes
+ starting at BUFFER.
+ It is NOT required that LEN is a multiple of 128. */
+extern void sha512_process_bytes (const void *buffer, size_t len,
+ struct sha512_ctx *ctx);
+
+/* Process the remaining bytes in the buffer and put result from CTX
+ in first 64 (48) bytes following RESBUF. The result is always in little
+ endian byte order, so that a byte-wise output yields to the wanted
+ ASCII representation of the message digest.
+
+ IMPORTANT: On some systems it is required that RESBUF be correctly
+ aligned for a 64 bits value. */
+extern void *sha512_finish_ctx (struct sha512_ctx *ctx, void *resbuf);
+extern void *sha384_finish_ctx (struct sha512_ctx *ctx, void *resbuf);
+
+
+/* Put result from CTX in first 64 (48) bytes following RESBUF. The result is
+ always in little endian byte order, so that a byte-wise output yields
+ to the wanted ASCII representation of the message digest.
+
+ IMPORTANT: On some systems it is required that RESBUF is correctly
+ aligned for a 32 bits value. */
+extern void *sha512_read_ctx (const struct sha512_ctx *ctx, void *resbuf);
+extern void *sha384_read_ctx (const struct sha512_ctx *ctx, void *resbuf);
+
+
+/* Compute SHA512 (SHA384) message digest for bytes read from STREAM. The
+ resulting message digest number will be written into the 64 (48) bytes
+ beginning at RESBLOCK. */
+extern int sha512_stream (FILE *stream, void *resblock);
+extern int sha384_stream (FILE *stream, void *resblock);
+
+/* Compute SHA512 (SHA384) message digest for LEN bytes beginning at BUFFER. The
+ result is always in little endian byte order, so that a byte-wise
+ output yields to the wanted ASCII representation of the message
+ digest. */
+extern void *sha512_buffer (const char *buffer, size_t len, void *resblock);
+extern void *sha384_buffer (const char *buffer, size_t len, void *resblock);
+
+#endif
diff --git a/lib/sig2str.c b/lib/sig2str.c
new file mode 100644
index 0000000..cf2819d
--- /dev/null
+++ b/lib/sig2str.c
@@ -0,0 +1,344 @@
+/* sig2str.c -- convert between signal names and numbers
+
+ Copyright (C) 2002, 2004, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include <limits.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "sig2str.h"
+
+#ifndef SIGRTMIN
+# define SIGRTMIN 0
+# undef SIGRTMAX
+#endif
+#ifndef SIGRTMAX
+# define SIGRTMAX (SIGRTMIN - 1)
+#endif
+
+#define NUMNAME(name) { SIG##name, #name }
+
+/* Signal names and numbers. Put the preferred name first. */
+static struct numname { int num; char const name[8]; } numname_table[] =
+ {
+ /* Signals required by POSIX 1003.1-2001 base, listed in
+ traditional numeric order. */
+#ifdef SIGHUP
+ NUMNAME (HUP),
+#endif
+#ifdef SIGINT
+ NUMNAME (INT),
+#endif
+#ifdef SIGQUIT
+ NUMNAME (QUIT),
+#endif
+#ifdef SIGILL
+ NUMNAME (ILL),
+#endif
+#ifdef SIGTRAP
+ NUMNAME (TRAP),
+#endif
+#ifdef SIGABRT
+ NUMNAME (ABRT),
+#endif
+#ifdef SIGFPE
+ NUMNAME (FPE),
+#endif
+#ifdef SIGKILL
+ NUMNAME (KILL),
+#endif
+#ifdef SIGBUS
+ NUMNAME (BUS),
+#endif
+#ifdef SIGSEGV
+ NUMNAME (SEGV),
+#endif
+#ifdef SIGPIPE
+ NUMNAME (PIPE),
+#endif
+#ifdef SIGALRM
+ NUMNAME (ALRM),
+#endif
+#ifdef SIGTERM
+ NUMNAME (TERM),
+#endif
+#ifdef SIGUSR1
+ NUMNAME (USR1),
+#endif
+#ifdef SIGUSR2
+ NUMNAME (USR2),
+#endif
+#ifdef SIGCHLD
+ NUMNAME (CHLD),
+#endif
+#ifdef SIGURG
+ NUMNAME (URG),
+#endif
+#ifdef SIGSTOP
+ NUMNAME (STOP),
+#endif
+#ifdef SIGTSTP
+ NUMNAME (TSTP),
+#endif
+#ifdef SIGCONT
+ NUMNAME (CONT),
+#endif
+#ifdef SIGTTIN
+ NUMNAME (TTIN),
+#endif
+#ifdef SIGTTOU
+ NUMNAME (TTOU),
+#endif
+
+ /* Signals required by POSIX 1003.1-2001 with the XSI extension. */
+#ifdef SIGSYS
+ NUMNAME (SYS),
+#endif
+#ifdef SIGPOLL
+ NUMNAME (POLL),
+#endif
+#ifdef SIGVTALRM
+ NUMNAME (VTALRM),
+#endif
+#ifdef SIGPROF
+ NUMNAME (PROF),
+#endif
+#ifdef SIGXCPU
+ NUMNAME (XCPU),
+#endif
+#ifdef SIGXFSZ
+ NUMNAME (XFSZ),
+#endif
+
+ /* Unix Version 7. */
+#ifdef SIGIOT
+ NUMNAME (IOT), /* Older name for ABRT. */
+#endif
+#ifdef SIGEMT
+ NUMNAME (EMT),
+#endif
+
+ /* USG Unix. */
+#ifdef SIGPHONE
+ NUMNAME (PHONE),
+#endif
+#ifdef SIGWIND
+ NUMNAME (WIND),
+#endif
+
+ /* Unix System V. */
+#ifdef SIGCLD
+ NUMNAME (CLD),
+#endif
+#ifdef SIGPWR
+ NUMNAME (PWR),
+#endif
+
+ /* GNU/Linux 2.2 and Solaris 8. */
+#ifdef SIGCANCEL
+ NUMNAME (CANCEL),
+#endif
+#ifdef SIGLWP
+ NUMNAME (LWP),
+#endif
+#ifdef SIGWAITING
+ NUMNAME (WAITING),
+#endif
+#ifdef SIGFREEZE
+ NUMNAME (FREEZE),
+#endif
+#ifdef SIGTHAW
+ NUMNAME (THAW),
+#endif
+#ifdef SIGLOST
+ NUMNAME (LOST),
+#endif
+#ifdef SIGWINCH
+ NUMNAME (WINCH),
+#endif
+
+ /* GNU/Linux 2.2. */
+#ifdef SIGINFO
+ NUMNAME (INFO),
+#endif
+#ifdef SIGIO
+ NUMNAME (IO),
+#endif
+#ifdef SIGSTKFLT
+ NUMNAME (STKFLT),
+#endif
+
+ /* AIX 5L. */
+#ifdef SIGDANGER
+ NUMNAME (DANGER),
+#endif
+#ifdef SIGGRANT
+ NUMNAME (GRANT),
+#endif
+#ifdef SIGMIGRATE
+ NUMNAME (MIGRATE),
+#endif
+#ifdef SIGMSG
+ NUMNAME (MSG),
+#endif
+#ifdef SIGPRE
+ NUMNAME (PRE),
+#endif
+#ifdef SIGRETRACT
+ NUMNAME (RETRACT),
+#endif
+#ifdef SIGSAK
+ NUMNAME (SAK),
+#endif
+#ifdef SIGSOUND
+ NUMNAME (SOUND),
+#endif
+
+ /* Older AIX versions. */
+#ifdef SIGALRM1
+ NUMNAME (ALRM1), /* unknown; taken from Bash 2.05 */
+#endif
+#ifdef SIGKAP
+ NUMNAME (KAP), /* Older name for SIGGRANT. */
+#endif
+#ifdef SIGVIRT
+ NUMNAME (VIRT), /* unknown; taken from Bash 2.05 */
+#endif
+#ifdef SIGWINDOW
+ NUMNAME (WINDOW), /* Older name for SIGWINCH. */
+#endif
+
+ /* BeOS */
+#ifdef SIGKILLTHR
+ NUMNAME (KILLTHR),
+#endif
+
+ /* Older HP-UX versions. */
+#ifdef SIGDIL
+ NUMNAME (DIL),
+#endif
+
+ /* Korn shell and Bash, of uncertain vintage. */
+ { 0, "EXIT" }
+ };
+
+#define NUMNAME_ENTRIES (sizeof numname_table / sizeof numname_table[0])
+
+/* ISDIGIT differs from isdigit, as follows:
+ - Its arg may be any int or unsigned int; it need not be an unsigned char
+ or EOF.
+ - It's typically faster.
+ POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
+ isdigit unless it's important to use the locale's definition
+ of `digit' even when the host does not conform to POSIX. */
+#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
+
+/* Convert the signal name SIGNAME to a signal number. Return the
+ signal number if successful, -1 otherwise. */
+
+static int
+str2signum (char const *signame)
+{
+ if (ISDIGIT (*signame))
+ {
+ char *endp;
+ long int n = strtol (signame, &endp, 10);
+ if (! *endp && n <= SIGNUM_BOUND)
+ return n;
+ }
+ else
+ {
+ unsigned int i;
+ for (i = 0; i < NUMNAME_ENTRIES; i++)
+ if (strcmp (numname_table[i].name, signame) == 0)
+ return numname_table[i].num;
+
+ {
+ char *endp;
+ int rtmin = SIGRTMIN;
+ int rtmax = SIGRTMAX;
+
+ if (0 < rtmin && strncmp (signame, "RTMIN", 5) == 0)
+ {
+ long int n = strtol (signame + 5, &endp, 10);
+ if (! *endp && 0 <= n && n <= rtmax - rtmin)
+ return rtmin + n;
+ }
+ else if (0 < rtmax && strncmp (signame, "RTMAX", 5) == 0)
+ {
+ long int n = strtol (signame + 5, &endp, 10);
+ if (! *endp && rtmin - rtmax <= n && n <= 0)
+ return rtmax + n;
+ }
+ }
+ }
+
+ return -1;
+}
+
+/* Convert the signal name SIGNAME to the signal number *SIGNUM.
+ Return 0 if successful, -1 otherwise. */
+
+int
+str2sig (char const *signame, int *signum)
+{
+ *signum = str2signum (signame);
+ return *signum < 0 ? -1 : 0;
+}
+
+/* Convert SIGNUM to a signal name in SIGNAME. SIGNAME must point to
+ a buffer of at least SIG2STR_MAX bytes. Return 0 if successful, -1
+ otherwise. */
+
+int
+sig2str (int signum, char *signame)
+{
+ unsigned int i;
+ for (i = 0; i < NUMNAME_ENTRIES; i++)
+ if (numname_table[i].num == signum)
+ {
+ strcpy (signame, numname_table[i].name);
+ return 0;
+ }
+
+ {
+ int rtmin = SIGRTMIN;
+ int rtmax = SIGRTMAX;
+
+ if (! (rtmin <= signum && signum <= rtmax))
+ return -1;
+
+ if (signum <= rtmin + (rtmax - rtmin) / 2)
+ {
+ int delta = signum - rtmin;
+ sprintf (signame, delta ? "RTMIN+%d" : "RTMIN", delta);
+ }
+ else
+ {
+ int delta = rtmax - signum;
+ sprintf (signame, delta ? "RTMAX-%d" : "RTMAX", delta);
+ }
+
+ return 0;
+ }
+}
diff --git a/lib/sig2str.h b/lib/sig2str.h
new file mode 100644
index 0000000..f0fe9c3
--- /dev/null
+++ b/lib/sig2str.h
@@ -0,0 +1,44 @@
+/* sig2str.h -- convert between signal names and numbers
+
+ Copyright (C) 2002, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <signal.h>
+
+/* Don't override system declarations of SIG2STR_MAX, sig2str, str2sig. */
+#ifndef SIG2STR_MAX
+
+# include "intprops.h"
+
+/* Size of a buffer needed to hold a signal name like "HUP". */
+# define SIG2STR_MAX (sizeof "SIGRTMAX" + INT_STRLEN_BOUND (int) - 1)
+
+int sig2str (int, char *);
+int str2sig (char const *, int *);
+
+#endif
+
+/* An upper bound on signal numbers allowed by the system. */
+
+#if defined _sys_nsig
+# define SIGNUM_BOUND (_sys_nsig - 1)
+#elif defined NSIG
+# define SIGNUM_BOUND (NSIG - 1)
+#else
+# define SIGNUM_BOUND 64
+#endif
diff --git a/lib/snprintf.c b/lib/snprintf.c
new file mode 100644
index 0000000..7314c83
--- /dev/null
+++ b/lib/snprintf.c
@@ -0,0 +1,77 @@
+/* Formatted output to strings.
+ Copyright (C) 2004, 2006-2007 Free Software Foundation, Inc.
+ Written by Simon Josefsson and Paul Eggert.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#include <stdio.h>
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "vasnprintf.h"
+
+/* Some systems, like OSF/1 4.0 and Woe32, don't have EOVERFLOW. */
+#ifndef EOVERFLOW
+# define EOVERFLOW E2BIG
+#endif
+
+/* Print formatted output to string STR. Similar to sprintf, but
+ additional length SIZE limit how much is written into STR. Returns
+ string length of formatted string (which may be larger than SIZE).
+ STR may be NULL, in which case nothing will be written. On error,
+ return a negative value. */
+int
+snprintf (char *str, size_t size, const char *format, ...)
+{
+ char *output;
+ size_t len;
+ size_t lenbuf = size;
+ va_list args;
+
+ va_start (args, format);
+ output = vasnprintf (str, &lenbuf, format, args);
+ len = lenbuf;
+ va_end (args);
+
+ if (!output)
+ return -1;
+
+ if (output != str)
+ {
+ if (size)
+ {
+ size_t pruned_len = (len < size ? len : size - 1);
+ memcpy (str, output, pruned_len);
+ str[pruned_len] = '\0';
+ }
+
+ free (output);
+ }
+
+ if (INT_MAX < len)
+ {
+ errno = EOVERFLOW;
+ return -1;
+ }
+
+ return len;
+}
diff --git a/lib/socket_.h b/lib/socket_.h
new file mode 100644
index 0000000..623c98c
--- /dev/null
+++ b/lib/socket_.h
@@ -0,0 +1,85 @@
+/* Provide a sys/socket header file for systems lacking it (read: MinGW).
+ Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+ Written by Simon Josefsson.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _GL_SYS_SOCKET_H
+#define _GL_SYS_SOCKET_H
+
+/* This file is supposed to be used on platforms that lack <sys/socket.h>
+ and on platforms where <sys/socket.h> cannot be included standalone.
+ It is intended to provide definitions and prototypes needed by an
+ application. */
+
+#if @HAVE_SYS_SOCKET_H@
+
+/* On many platforms, <sys/socket.h> assumes prior inclusion of
+ <sys/types.h>. */
+
+# include <sys/types.h>
+# include @ABSOLUTE_SYS_SOCKET_H@
+
+#else
+
+/* A platform that lacks <sys/socket.h>.
+
+ Currently only MinGW is supported. See the gnulib manual regarding
+ Windows sockets. MinGW has the header files winsock2.h and
+ ws2tcpip.h that declare the sys/socket.h definitions we need. Note
+ that you can influence which definitions you get by setting the
+ WINVER symbol before including these two files. For example,
+ getaddrinfo is only available if _WIN32_WINNT >= 0x0501 (that
+ symbol is set indiriectly through WINVER). You can set this by
+ adding AC_DEFINE(WINVER, 0x0501) to configure.ac. Note that your
+ code may not run on older Windows releases then. My Windows 2000
+ box was not able to run the code, for example. The situation is
+ slightly confusing because:
+ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/getaddrinfo_2.asp
+ suggests that getaddrinfo should be available on all Windows
+ releases. */
+
+
+# if @HAVE_WINSOCK2_H@
+# include <winsock2.h>
+# endif
+# if @HAVE_WS2TCPIP_H@
+# include <ws2tcpip.h>
+# endif
+
+/* For shutdown(). */
+# if !defined SHUT_RD && defined SD_RECEIVE
+# define SHUT_RD SD_RECEIVE
+# endif
+# if !defined SHUT_WR && defined SD_SEND
+# define SHUT_WR SD_SEND
+# endif
+# if !defined SHUT_RDWR && defined SD_BOTH
+# define SHUT_RDWR SD_BOTH
+# endif
+
+# if defined _WIN32 || defined __WIN32__
+# define ENOTSOCK WSAENOTSOCK
+# define EADDRINUSE WSAEADDRINUSE
+# define ENETRESET WSAENETRESET
+# define ECONNABORTED WSAECONNABORTED
+# define ECONNRESET WSAECONNRESET
+# define ENOTCONN WSAENOTCONN
+# define ESHUTDOWN WSAESHUTDOWN
+# endif
+
+#endif /* HAVE_SYS_SOCKET_H */
+
+#endif /* _GL_SYS_SOCKET_H */
diff --git a/lib/stat-macros.h b/lib/stat-macros.h
new file mode 100644
index 0000000..690216c
--- /dev/null
+++ b/lib/stat-macros.h
@@ -0,0 +1,3 @@
+/* All the mode bits that can be affected by chmod. */
+#define CHMOD_MODE_BITS \
+ (S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO)
diff --git a/lib/stat-time.h b/lib/stat-time.h
new file mode 100644
index 0000000..5fd18c1
--- /dev/null
+++ b/lib/stat-time.h
@@ -0,0 +1,134 @@
+/* stat-related time functions.
+
+ Copyright (C) 2005, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#ifndef STAT_TIME_H
+#define STAT_TIME_H 1
+
+#include <time.h>
+
+/* STAT_TIMESPEC (ST, ST_XTIM) is the ST_XTIM member for *ST of type
+ struct timespec, if available. If not, then STAT_TIMESPEC_NS (ST,
+ ST_XTIM) is the nanosecond component of the ST_XTIM member for *ST,
+ if available. ST_XTIM can be st_atim, st_ctim, or st_mtim for
+ access, status change, or data modification time, respectively.
+
+ These macros are private to stat-time.h. */
+#if defined HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
+# ifdef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC
+# define STAT_TIMESPEC(st, st_xtim) ((st)->st_xtim)
+# else
+# define STAT_TIMESPEC_NS(st, st_xtim) ((st)->st_xtim.tv_nsec)
+# endif
+#elif defined HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC
+# define STAT_TIMESPEC(st, st_xtim) ((st)->st_xtim##espec)
+#elif defined HAVE_STRUCT_STAT_ST_ATIMENSEC
+# define STAT_TIMESPEC_NS(st, st_xtim) ((st)->st_xtim##ensec)
+#elif defined HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC
+# define STAT_TIMESPEC_NS(st, st_xtim) ((st)->st_xtim.st__tim.tv_nsec)
+#endif
+
+/* Return the nanosecond component of *ST's access time. */
+static inline long int
+get_stat_atime_ns (struct stat const *st)
+{
+# if defined STAT_TIMESPEC
+ return STAT_TIMESPEC (st, st_atim).tv_nsec;
+# elif defined STAT_TIMESPEC_NS
+ return STAT_TIMESPEC_NS (st, st_atim);
+# elif defined HAVE_STRUCT_STAT_ST_SPARE1
+ return st->st_spare1 * 1000;
+# else
+ return 0;
+# endif
+}
+
+/* Return the nanosecond component of *ST's status change time. */
+static inline long int
+get_stat_ctime_ns (struct stat const *st)
+{
+# if defined STAT_TIMESPEC
+ return STAT_TIMESPEC (st, st_ctim).tv_nsec;
+# elif defined STAT_TIMESPEC_NS
+ return STAT_TIMESPEC_NS (st, st_ctim);
+# elif defined HAVE_STRUCT_STAT_ST_SPARE1
+ return st->st_spare3 * 1000;
+# else
+ return 0;
+# endif
+}
+
+/* Return the nanosecond component of *ST's data modification time. */
+static inline long int
+get_stat_mtime_ns (struct stat const *st)
+{
+# if defined STAT_TIMESPEC
+ return STAT_TIMESPEC (st, st_mtim).tv_nsec;
+# elif defined STAT_TIMESPEC_NS
+ return STAT_TIMESPEC_NS (st, st_mtim);
+# elif defined HAVE_STRUCT_STAT_ST_SPARE1
+ return st->st_spare2 * 1000;
+# else
+ return 0;
+# endif
+}
+
+/* Return *ST's access time. */
+static inline struct timespec
+get_stat_atime (struct stat const *st)
+{
+#ifdef STAT_TIMESPEC
+ return STAT_TIMESPEC (st, st_atim);
+#else
+ struct timespec t;
+ t.tv_sec = st->st_atime;
+ t.tv_nsec = get_stat_atime_ns (st);
+ return t;
+#endif
+}
+
+/* Return *ST's status change time. */
+static inline struct timespec
+get_stat_ctime (struct stat const *st)
+{
+#ifdef STAT_TIMESPEC
+ return STAT_TIMESPEC (st, st_ctim);
+#else
+ struct timespec t;
+ t.tv_sec = st->st_ctime;
+ t.tv_nsec = get_stat_ctime_ns (st);
+ return t;
+#endif
+}
+
+/* Return *ST's data modification time. */
+static inline struct timespec
+get_stat_mtime (struct stat const *st)
+{
+#ifdef STAT_TIMESPEC
+ return STAT_TIMESPEC (st, st_mtim);
+#else
+ struct timespec t;
+ t.tv_sec = st->st_mtime;
+ t.tv_nsec = get_stat_mtime_ns (st);
+ return t;
+#endif
+}
+
+#endif
diff --git a/lib/stat_.h b/lib/stat_.h
new file mode 100644
index 0000000..cbf5ac0
--- /dev/null
+++ b/lib/stat_.h
@@ -0,0 +1,275 @@
+/* Provide a more complete sys/stat header file.
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Eric Blake, Paul Eggert, and Jim Meyering. */
+
+#ifndef _gl_SYS_STAT_H
+#define _gl_SYS_STAT_H
+
+/* This file is supposed to be used on platforms where <sys/stat.h> is
+ incomplete. It is intended to provide definitions and prototypes
+ needed by an application. Start with what the system provides. */
+#include @ABSOLUTE_SYS_STAT_H@
+
+#ifndef S_IFMT
+# define S_IFMT 0170000
+#endif
+
+#if STAT_MACROS_BROKEN
+# undef S_ISBLK
+# undef S_ISCHR
+# undef S_ISDIR
+# undef S_ISFIFO
+# undef S_ISLNK
+# undef S_ISNAM
+# undef S_ISMPB
+# undef S_ISMPC
+# undef S_ISNWK
+# undef S_ISREG
+# undef S_ISSOCK
+#endif
+
+#ifndef S_ISBLK
+# ifdef S_IFBLK
+# define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
+# else
+# define S_ISBLK(m) 0
+# endif
+#endif
+
+#ifndef S_ISCHR
+# ifdef S_IFCHR
+# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
+# else
+# define S_ISCHR(m) 0
+# endif
+#endif
+
+#ifndef S_ISDIR
+# ifdef S_IFDIR
+# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+# else
+# define S_ISDIR(m) 0
+# endif
+#endif
+
+#ifndef S_ISDOOR /* Solaris 2.5 and up */
+# define S_ISDOOR(m) 0
+#endif
+
+#ifndef S_ISFIFO
+# ifdef S_IFIFO
+# define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
+# else
+# define S_ISFIFO(m) 0
+# endif
+#endif
+
+#ifndef S_ISLNK
+# ifdef S_IFLNK
+# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
+# else
+# define S_ISLNK(m) 0
+# endif
+#endif
+
+#ifndef S_ISMPB /* V7 */
+# ifdef S_IFMPB
+# define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
+# define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC)
+# else
+# define S_ISMPB(m) 0
+# define S_ISMPC(m) 0
+# endif
+#endif
+
+#ifndef S_ISNAM /* Xenix */
+# ifdef S_IFNAM
+# define S_ISNAM(m) (((m) & S_IFMT) == S_IFNAM)
+# else
+# define S_ISNAM(m) 0
+# endif
+#endif
+
+#ifndef S_ISNWK /* HP/UX */
+# ifdef S_IFNWK
+# define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
+# else
+# define S_ISNWK(m) 0
+# endif
+#endif
+
+#ifndef S_ISPORT /* Solaris 10 and up */
+# define S_ISPORT(m) 0
+#endif
+
+#ifndef S_ISREG
+# ifdef S_IFREG
+# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
+# else
+# define S_ISREG(m) 0
+# endif
+#endif
+
+#ifndef S_ISSOCK
+# ifdef S_IFSOCK
+# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
+# else
+# define S_ISSOCK(m) 0
+# endif
+#endif
+
+
+#ifndef S_TYPEISMQ
+# define S_TYPEISMQ(p) 0
+#endif
+
+#ifndef S_TYPEISTMO
+# define S_TYPEISTMO(p) 0
+#endif
+
+
+#ifndef S_TYPEISSEM
+# ifdef S_INSEM
+# define S_TYPEISSEM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSEM)
+# else
+# define S_TYPEISSEM(p) 0
+# endif
+#endif
+
+#ifndef S_TYPEISSHM
+# ifdef S_INSHD
+# define S_TYPEISSHM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSHD)
+# else
+# define S_TYPEISSHM(p) 0
+# endif
+#endif
+
+/* high performance ("contiguous data") */
+#ifndef S_ISCTG
+# define S_ISCTG(p) 0
+#endif
+
+/* Cray DMF (data migration facility): off line, with data */
+#ifndef S_ISOFD
+# define S_ISOFD(p) 0
+#endif
+
+/* Cray DMF (data migration facility): off line, with no data */
+#ifndef S_ISOFL
+# define S_ISOFL(p) 0
+#endif
+
+/* 4.4BSD whiteout */
+#ifndef S_ISWHT
+# define S_ISWHT(m) 0
+#endif
+
+/* If any of the following are undefined,
+ define them to their de facto standard values. */
+#if !S_ISUID
+# define S_ISUID 04000
+#endif
+#if !S_ISGID
+# define S_ISGID 02000
+#endif
+
+/* S_ISVTX is a common extension to POSIX. */
+#ifndef S_ISVTX
+# define S_ISVTX 01000
+#endif
+
+#if !S_IRUSR && S_IREAD
+# define S_IRUSR S_IREAD
+#endif
+#if !S_IRUSR
+# define S_IRUSR 00400
+#endif
+#if !S_IRGRP
+# define S_IRGRP (S_IRUSR >> 3)
+#endif
+#if !S_IROTH
+# define S_IROTH (S_IRUSR >> 6)
+#endif
+
+#if !S_IWUSR && S_IWRITE
+# define S_IWUSR S_IWRITE
+#endif
+#if !S_IWUSR
+# define S_IWUSR 00200
+#endif
+#if !S_IWGRP
+# define S_IWGRP (S_IWUSR >> 3)
+#endif
+#if !S_IWOTH
+# define S_IWOTH (S_IWUSR >> 6)
+#endif
+
+#if !S_IXUSR && S_IEXEC
+# define S_IXUSR S_IEXEC
+#endif
+#if !S_IXUSR
+# define S_IXUSR 00100
+#endif
+#if !S_IXGRP
+# define S_IXGRP (S_IXUSR >> 3)
+#endif
+#if !S_IXOTH
+# define S_IXOTH (S_IXUSR >> 6)
+#endif
+
+#if !S_IRWXU
+# define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
+#endif
+#if !S_IRWXG
+# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP)
+#endif
+#if !S_IRWXO
+# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH)
+#endif
+
+/* S_IXUGO is a common extension to POSIX. */
+#if !S_IXUGO
+# define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH)
+#endif
+
+#ifndef S_IRWXUGO
+# define S_IRWXUGO (S_IRWXU | S_IRWXG | S_IRWXO)
+#endif
+
+/* mingw does not support symlinks, therefore it does not have lstat. But
+ without links, stat does just fine. */
+#if ! HAVE_LSTAT
+# define lstat stat
+#endif
+
+/* mingw's _mkdir() function has 1 argument, but we pass 2 arguments.
+ Additionally, it declares _mkdir (and depending on compile flags, an
+ alias mkdir), only in the nonstandard io.h. */
+#if ! HAVE_DECL_MKDIR && HAVE_IO_H
+# include <io.h>
+
+static inline int
+rpl_mkdir (char const *name, mode_t mode)
+{
+ return _mkdir (name);
+}
+
+# define mkdir rpl_mkdir
+#endif
+
+#endif /* _gl_SYS_STAT_H */
diff --git a/lib/stdbool_.h b/lib/stdbool_.h
new file mode 100644
index 0000000..8525f0f
--- /dev/null
+++ b/lib/stdbool_.h
@@ -0,0 +1,118 @@
+/* Copyright (C) 2001, 2002, 2003, 2006, 2007 Free Software Foundation, Inc.
+ Written by Bruno Haible <haible@clisp.cons.org>, 2001.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _STDBOOL_H
+#define _STDBOOL_H
+
+/* ISO C 99 <stdbool.h> for platforms that lack it. */
+
+/* Usage suggestions:
+
+ Programs that use <stdbool.h> should be aware of some limitations
+ and standards compliance issues.
+
+ Standards compliance:
+
+ - <stdbool.h> must be #included before 'bool', 'false', 'true'
+ can be used.
+
+ - You cannot assume that sizeof (bool) == 1.
+
+ - Programs should not undefine the macros bool, true, and false,
+ as C99 lists that as an "obsolescent feature".
+
+ Limitations of this substitute, when used in a C89 environment:
+
+ - <stdbool.h> must be #included before the '_Bool' type can be used.
+
+ - You cannot assume that _Bool is a typedef; it might be a macro.
+
+ - Bit-fields of type 'bool' are not supported. Portable code
+ should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'.
+
+ - In C99, casts and automatic conversions to '_Bool' or 'bool' are
+ performed in such a way that every nonzero value gets converted
+ to 'true', and zero gets converted to 'false'. This doesn't work
+ with this substitute. With this substitute, only the values 0 and 1
+ give the expected result when converted to _Bool' or 'bool'.
+
+ Also, it is suggested that programs use 'bool' rather than '_Bool';
+ this isn't required, but 'bool' is more common. */
+
+
+/* 7.16. Boolean type and values */
+
+/* BeOS <sys/socket.h> already #defines false 0, true 1. We use the same
+ definitions below, but temporarily we have to #undef them. */
+#ifdef __BEOS__
+# include <OS.h> /* defines bool but not _Bool */
+# undef false
+# undef true
+#endif
+
+/* For the sake of symbolic names in gdb, we define true and false as
+ enum constants, not only as macros.
+ It is tempting to write
+ typedef enum { false = 0, true = 1 } _Bool;
+ so that gdb prints values of type 'bool' symbolically. But if we do
+ this, values of type '_Bool' may promote to 'int' or 'unsigned int'
+ (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int'
+ (see ISO C 99 6.3.1.1.(2)). So we add a negative value to the
+ enum; this ensures that '_Bool' promotes to 'int'. */
+#if defined __cplusplus || defined __BEOS__
+ /* A compiler known to have 'bool'. */
+ /* If the compiler already has both 'bool' and '_Bool', we can assume they
+ are the same types. */
+# if !@HAVE__BOOL@
+typedef bool _Bool;
+# endif
+#else
+# if !defined __GNUC__
+ /* If @HAVE__BOOL@:
+ Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when
+ the built-in _Bool type is used. See
+ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+ Similar bugs are likely with other compilers as well; this file
+ wouldn't be used if <stdbool.h> was working.
+ So we override the _Bool type.
+ If !@HAVE__BOOL@:
+ Need to define _Bool ourselves. As 'signed char' or as an enum type?
+ Use of a typedef, with SunPRO C, leads to a stupid
+ "warning: _Bool is a keyword in ISO C99".
+ Use of an enum type, with IRIX cc, leads to a stupid
+ "warning(1185): enumerated type mixed with another type".
+ The only benefit of the enum type, debuggability, is not important
+ with these compilers. So use 'signed char' and no typedef. */
+# define _Bool signed char
+enum { false = 0, true = 1 };
+# else
+ /* With this compiler, trust the _Bool type if the compiler has it. */
+# if !@HAVE__BOOL@
+typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool;
+# endif
+# endif
+#endif
+#define bool _Bool
+
+/* The other macros must be usable in preprocessor directives. */
+#define false 0
+#define true 1
+#define __bool_true_false_are_defined 1
+
+#endif /* _STDBOOL_H */
diff --git a/lib/stdint_.h b/lib/stdint_.h
new file mode 100644
index 0000000..4fa5251
--- /dev/null
+++ b/lib/stdint_.h
@@ -0,0 +1,504 @@
+/* Copyright (C) 2001-2002, 2004-2007 Free Software Foundation, Inc.
+ Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
+ This file is part of gnulib.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _GL_STDINT_H
+#define _GL_STDINT_H
+
+/*
+ * ISO C 99 <stdint.h> for platforms that lack it.
+ * <http://www.opengroup.org/susv3xbd/stdint.h.html>
+ */
+
+/* Get those types that are already defined in other system include
+ files, so that we can "#define int8_t signed char" below without
+ worrying about a later system include file containing a "typedef
+ signed char int8_t;" that will get messed up by our macro. Our
+ macros should all be consistent with the system versions, except
+ for the "fast" types and macros, which we recommend against using
+ in public interfaces due to compiler differences. */
+
+#if @HAVE_STDINT_H@
+# if defined __sgi && ! defined __c99
+ /* Bypass IRIX's <stdint.h> if in C89 mode, since it merely annoys users
+ with "This header file is to be used only for c99 mode compilations"
+ diagnostics. */
+# define __STDINT_H__
+# endif
+ /* Other systems may have an incomplete or buggy <stdint.h>.
+ Include it before <inttypes.h>, since any "#include <stdint.h>"
+ in <inttypes.h> would reinclude us, skipping our contents because
+ _GL_STDINT_H is defined. */
+# include @ABSOLUTE_STDINT_H@
+#endif
+
+/* <sys/types.h> defines some of the stdint.h types as well, on glibc,
+ IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
+ AIX 5.2 <sys/types.h> isn't needed and causes troubles.
+ MacOS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
+ relies on the system <stdint.h> definitions, so include
+ <sys/types.h> after @ABSOLUTE_STDINT_H@. */
+#if @HAVE_SYS_TYPES_H@ && ! defined _AIX
+# include <sys/types.h>
+#endif
+
+/* Get LONG_MIN, LONG_MAX, ULONG_MAX. */
+#include <limits.h>
+
+#if @HAVE_INTTYPES_H@
+ /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines
+ int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
+ <inttypes.h> also defines intptr_t and uintptr_t. */
+# define _GL_JUST_INCLUDE_ABSOLUTE_INTTYPES_H
+# include <inttypes.h>
+# undef _GL_JUST_INCLUDE_ABSOLUTE_INTTYPES_H
+#elif @HAVE_SYS_INTTYPES_H@
+ /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and
+ the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX. */
+# include <sys/inttypes.h>
+#endif
+
+#if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__
+ /* Linux libc4 >= 4.6.7 and libc5 have a <sys/bitypes.h> that defines
+ int{8,16,32,64}_t and __BIT_TYPES_DEFINED__. In libc5 >= 5.2.2 it is
+ included by <sys/types.h>. */
+# include <sys/bitypes.h>
+#endif
+
+#if ! defined __cplusplus || defined __STDC_CONSTANT_MACROS
+
+/* Get WCHAR_MIN, WCHAR_MAX. */
+# if ! (defined WCHAR_MIN && defined WCHAR_MAX)
+# include <wchar.h>
+# endif
+
+#endif
+
+/* Minimum and maximum values for a integer type under the usual assumption.
+ Return an unspecified value if BITS == 0, adding a check to pacify
+ picky compilers. */
+
+#define _STDINT_MIN(signed, bits, zero) \
+ ((signed) ? (- ((zero) + 1) << ((bits) ? (bits) - 1 : 0)) : (zero))
+
+#define _STDINT_MAX(signed, bits, zero) \
+ ((signed) \
+ ? ~ _STDINT_MIN (signed, bits, zero) \
+ : ((((zero) + 1) << ((bits) ? (bits) - 1 : 0)) - 1) * 2 + 1)
+
+/* 7.18.1.1. Exact-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits. */
+
+#undef int8_t
+#undef uint8_t
+#define int8_t signed char
+#define uint8_t unsigned char
+
+#undef int16_t
+#undef uint16_t
+#define int16_t short int
+#define uint16_t unsigned short int
+
+#undef int32_t
+#undef uint32_t
+#define int32_t int
+#define uint32_t unsigned int
+
+/* Do not undefine int64_t if gnulib is not being used with 64-bit
+ types, since otherwise it breaks platforms like Tandem/NSK. */
+#if LONG_MAX >> 31 >> 31 == 1
+# undef int64_t
+# define int64_t long int
+# define GL_INT64_T
+#elif defined _MSC_VER
+# undef int64_t
+# define int64_t __int64
+# define GL_INT64_T
+#elif @HAVE_LONG_LONG_INT@
+# undef int64_t
+# define int64_t long long int
+# define GL_INT64_T
+#endif
+
+#if ULONG_MAX >> 31 >> 31 >> 1 == 1
+# undef uint64_t
+# define uint64_t unsigned long int
+# define GL_UINT64_T
+#elif defined _MSC_VER
+# undef uint64_t
+# define uint64_t unsigned __int64
+# define GL_UINT64_T
+#elif @HAVE_UNSIGNED_LONG_LONG_INT@
+# undef uint64_t
+# define uint64_t unsigned long long int
+# define GL_UINT64_T
+#endif
+
+/* Avoid collision with Solaris 2.5.1 <pthread.h> etc. */
+#define _UINT8_T
+#define _UINT32_T
+#define _UINT64_T
+
+
+/* 7.18.1.2. Minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
+ are the same as the corresponding N_t types. */
+
+#undef int_least8_t
+#undef uint_least8_t
+#undef int_least16_t
+#undef uint_least16_t
+#undef int_least32_t
+#undef uint_least32_t
+#undef int_least64_t
+#undef uint_least64_t
+#define int_least8_t int8_t
+#define uint_least8_t uint8_t
+#define int_least16_t int16_t
+#define uint_least16_t uint16_t
+#define int_least32_t int32_t
+#define uint_least32_t uint32_t
+#ifdef GL_INT64_T
+# define int_least64_t int64_t
+#endif
+#ifdef GL_UINT64_T
+# define uint_least64_t uint64_t
+#endif
+
+/* 7.18.1.3. Fastest minimum-width integer types */
+
+/* Note: Other <stdint.h> substitutes may define these types differently.
+ It is not recommended to use these types in public header files. */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
+ are taken from the same list of types. Assume that 'long int'
+ is fast enough for all narrower integers. */
+
+#undef int_fast8_t
+#undef uint_fast8_t
+#undef int_fast16_t
+#undef uint_fast16_t
+#undef int_fast32_t
+#undef uint_fast32_t
+#undef int_fast64_t
+#undef uint_fast64_t
+#define int_fast8_t long int
+#define uint_fast8_t unsigned int_fast8_t
+#define int_fast16_t long int
+#define uint_fast16_t unsigned int_fast16_t
+#define int_fast32_t long int
+#define uint_fast32_t unsigned int_fast32_t
+#ifdef GL_INT64_T
+# define int_fast64_t int64_t
+#endif
+#ifdef GL_UINT64_T
+# define uint_fast64_t uint64_t
+#endif
+
+/* 7.18.1.4. Integer types capable of holding object pointers */
+
+#undef intptr_t
+#undef uintptr_t
+#define intptr_t long int
+#define uintptr_t unsigned long int
+
+/* 7.18.1.5. Greatest-width integer types */
+
+/* Note: These types are compiler dependent. It may be unwise to use them in
+ public header files. */
+
+#undef intmax_t
+#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+# define intmax_t long long int
+#elif defined GL_INT64_T
+# define intmax_t int64_t
+#else
+# define intmax_t long int
+#endif
+
+#undef uintmax_t
+#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+# define uintmax_t unsigned long long int
+#elif defined GL_UINT64_T
+# define uintmax_t uint64_t
+#else
+# define uintmax_t unsigned long int
+#endif
+
+/* 7.18.2. Limits of specified-width integer types */
+
+#if ! defined __cplusplus || defined __STDC_LIMIT_MACROS
+
+/* 7.18.2.1. Limits of exact-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits. */
+
+#undef INT8_MIN
+#undef INT8_MAX
+#undef UINT8_MAX
+#define INT8_MIN (~ INT8_MAX)
+#define INT8_MAX 127
+#define UINT8_MAX 255
+
+#undef INT16_MIN
+#undef INT16_MAX
+#undef UINT16_MAX
+#define INT16_MIN (~ INT16_MAX)
+#define INT16_MAX 32767
+#define UINT16_MAX 65535
+
+#undef INT32_MIN
+#undef INT32_MAX
+#undef UINT32_MAX
+#define INT32_MIN (~ INT32_MAX)
+#define INT32_MAX 2147483647
+#define UINT32_MAX 4294967295U
+
+#undef INT64_MIN
+#undef INT64_MAX
+#ifdef GL_INT64_T
+/* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0
+ evaluates the latter incorrectly in preprocessor expressions. */
+# define INT64_MIN (- INTMAX_C (1) << 63)
+# define INT64_MAX INTMAX_C (9223372036854775807)
+#endif
+
+#undef UINT64_MAX
+#ifdef GL_UINT64_T
+# define UINT64_MAX UINTMAX_C (18446744073709551615)
+#endif
+
+/* 7.18.2.2. Limits of minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
+ are the same as the corresponding N_t types. */
+
+#undef INT_LEAST8_MIN
+#undef INT_LEAST8_MAX
+#undef UINT_LEAST8_MAX
+#define INT_LEAST8_MIN INT8_MIN
+#define INT_LEAST8_MAX INT8_MAX
+#define UINT_LEAST8_MAX UINT8_MAX
+
+#undef INT_LEAST16_MIN
+#undef INT_LEAST16_MAX
+#undef UINT_LEAST16_MAX
+#define INT_LEAST16_MIN INT16_MIN
+#define INT_LEAST16_MAX INT16_MAX
+#define UINT_LEAST16_MAX UINT16_MAX
+
+#undef INT_LEAST32_MIN
+#undef INT_LEAST32_MAX
+#undef UINT_LEAST32_MAX
+#define INT_LEAST32_MIN INT32_MIN
+#define INT_LEAST32_MAX INT32_MAX
+#define UINT_LEAST32_MAX UINT32_MAX
+
+#undef INT_LEAST64_MIN
+#undef INT_LEAST64_MAX
+#ifdef GL_INT64_T
+# define INT_LEAST64_MIN INT64_MIN
+# define INT_LEAST64_MAX INT64_MAX
+#endif
+
+#undef UINT_LEAST64_MAX
+#ifdef GL_UINT64_T
+# define UINT_LEAST64_MAX UINT64_MAX
+#endif
+
+/* 7.18.2.3. Limits of fastest minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
+ are taken from the same list of types. */
+
+#undef INT_FAST8_MIN
+#undef INT_FAST8_MAX
+#undef UINT_FAST8_MAX
+#define INT_FAST8_MIN LONG_MIN
+#define INT_FAST8_MAX LONG_MAX
+#define UINT_FAST8_MAX ULONG_MAX
+
+#undef INT_FAST16_MIN
+#undef INT_FAST16_MAX
+#undef UINT_FAST16_MAX
+#define INT_FAST16_MIN LONG_MIN
+#define INT_FAST16_MAX LONG_MAX
+#define UINT_FAST16_MAX ULONG_MAX
+
+#undef INT_FAST32_MIN
+#undef INT_FAST32_MAX
+#undef UINT_FAST32_MAX
+#define INT_FAST32_MIN LONG_MIN
+#define INT_FAST32_MAX LONG_MAX
+#define UINT_FAST32_MAX ULONG_MAX
+
+#undef INT_FAST64_MIN
+#undef INT_FAST64_MAX
+#ifdef GL_INT64_T
+# define INT_FAST64_MIN INT64_MIN
+# define INT_FAST64_MAX INT64_MAX
+#endif
+
+#undef UINT_FAST64_MAX
+#ifdef GL_UINT64_T
+# define UINT_FAST64_MAX UINT64_MAX
+#endif
+
+/* 7.18.2.4. Limits of integer types capable of holding object pointers */
+
+#undef INTPTR_MIN
+#undef INTPTR_MAX
+#undef UINTPTR_MAX
+#define INTPTR_MIN LONG_MIN
+#define INTPTR_MAX LONG_MAX
+#define UINTPTR_MAX ULONG_MAX
+
+/* 7.18.2.5. Limits of greatest-width integer types */
+
+#undef INTMAX_MIN
+#undef INTMAX_MAX
+#ifdef INT64_MAX
+# define INTMAX_MIN INT64_MIN
+# define INTMAX_MAX INT64_MAX
+#else
+# define INTMAX_MIN INT32_MIN
+# define INTMAX_MAX INT32_MAX
+#endif
+
+#undef UINTMAX_MAX
+#ifdef UINT64_MAX
+# define UINTMAX_MAX UINT64_MAX
+#else
+# define UINTMAX_MAX UINT32_MAX
+#endif
+
+/* 7.18.3. Limits of other integer types */
+
+/* ptrdiff_t limits */
+#undef PTRDIFF_MIN
+#undef PTRDIFF_MAX
+#define PTRDIFF_MIN \
+ _STDINT_MIN (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
+#define PTRDIFF_MAX \
+ _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
+
+/* sig_atomic_t limits */
+#undef SIG_ATOMIC_MIN
+#undef SIG_ATOMIC_MAX
+#define SIG_ATOMIC_MIN \
+ _STDINT_MIN (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
+ 0@SIG_ATOMIC_T_SUFFIX@)
+#define SIG_ATOMIC_MAX \
+ _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
+ 0@SIG_ATOMIC_T_SUFFIX@)
+
+
+/* size_t limit */
+#undef SIZE_MAX
+#define SIZE_MAX _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@)
+
+/* wchar_t limits */
+#undef WCHAR_MIN
+#undef WCHAR_MAX
+#define WCHAR_MIN \
+ _STDINT_MIN (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
+#define WCHAR_MAX \
+ _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
+
+/* wint_t limits */
+#undef WINT_MIN
+#undef WINT_MAX
+#define WINT_MIN \
+ _STDINT_MIN (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+#define WINT_MAX \
+ _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+
+#endif /* !defined __cplusplus || defined __STDC_LIMIT_MACROS */
+
+/* 7.18.4. Macros for integer constants */
+
+#if ! defined __cplusplus || defined __STDC_CONSTANT_MACROS
+
+/* 7.18.4.1. Macros for minimum-width integer constants */
+/* According to ISO C 99 Technical Corrigendum 1 */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits, and int is 32 bits. */
+
+#undef INT8_C
+#undef UINT8_C
+#define INT8_C(x) x
+#define UINT8_C(x) x
+
+#undef INT16_C
+#undef UINT16_C
+#define INT16_C(x) x
+#define UINT16_C(x) x
+
+#undef INT32_C
+#undef UINT32_C
+#define INT32_C(x) x
+#define UINT32_C(x) x ## U
+
+#undef INT64_C
+#undef UINT64_C
+#if LONG_MAX >> 31 >> 31 == 1
+# define INT64_C(x) x##L
+#elif defined _MSC_VER
+# define INT64_C(x) x##i64
+#elif @HAVE_LONG_LONG_INT@
+# define INT64_C(x) x##LL
+#endif
+#if ULONG_MAX >> 31 >> 31 >> 1 == 1
+# define UINT64_C(x) x##UL
+#elif defined _MSC_VER
+# define UINT64_C(x) x##ui64
+#elif @HAVE_UNSIGNED_LONG_LONG_INT@
+# define UINT64_C(x) x##ULL
+#endif
+
+/* 7.18.4.2. Macros for greatest-width integer constants */
+
+#undef INTMAX_C
+#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
+# define INTMAX_C(x) x##LL
+#elif defined GL_INT64_T
+# define INTMAX_C(x) INT64_C(x)
+#else
+# define INTMAX_C(x) x##L
+#endif
+
+#undef UINTMAX_C
+#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+# define UINTMAX_C(x) x##ULL
+#elif defined GL_UINT64_T
+# define UINTMAX_C(x) UINT64_C(x)
+#else
+# define UINTMAX_C(x) x##UL
+#endif
+
+#endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */
+
+#endif /* _GL_STDINT_H */
diff --git a/lib/stdio--.h b/lib/stdio--.h
new file mode 100644
index 0000000..2385e62
--- /dev/null
+++ b/lib/stdio--.h
@@ -0,0 +1,28 @@
+/* Like stdio.h, but redefine some names to avoid glitches.
+
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <stdio.h>
+#include "stdio-safer.h"
+
+#undef fopen
+#define fopen fopen_safer
+
+#undef tmpfile
+#define tmpfile tmpfile_safer
diff --git a/lib/stdio-safer.h b/lib/stdio-safer.h
new file mode 100644
index 0000000..8329a1a
--- /dev/null
+++ b/lib/stdio-safer.h
@@ -0,0 +1,24 @@
+/* Invoke stdio functions, but avoid some glitches.
+
+ Copyright (C) 2001, 2003, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <stdio.h>
+
+FILE *fopen_safer (char const *, char const *);
+FILE *tmpfile_safer (void);
diff --git a/lib/stdio_.h b/lib/stdio_.h
new file mode 100644
index 0000000..441c0d5
--- /dev/null
+++ b/lib/stdio_.h
@@ -0,0 +1,192 @@
+/* A GNU-like <stdio.h>.
+
+ Copyright (C) 2004, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#if defined __need_FILE || defined __need___FILE
+/* Special invocation convention inside glibc header files. */
+
+#include @ABSOLUTE_STDIO_H@
+
+#else
+/* Normal invocation convention. */
+#ifndef _GL_STDIO_H
+#define _GL_STDIO_H
+
+#include @ABSOLUTE_STDIO_H@
+
+#include <stdarg.h>
+#include <stddef.h>
+
+#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later. */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
+# define __attribute__(Spec) /* empty */
+# endif
+/* The __-protected variants of `format' and `printf' attributes
+ are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
+# define __format__ format
+# define __printf__ printf
+# endif
+#endif
+
+
+/* The definition of GL_LINK_WARNING is copied here. */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#if @GNULIB_FPRINTF_POSIX@
+# if @REPLACE_FPRINTF@
+# define fprintf rpl_fprintf
+extern int fprintf (FILE *fp, const char *format, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef fprintf
+# define fprintf \
+ (GL_LINK_WARNING ("fprintf is not always POSIX compliant - " \
+ "use gnulib module fprintf-posix for portable " \
+ "POSIX compliance"), \
+ fprintf)
+#endif
+
+#if @GNULIB_VFPRINTF_POSIX@
+# if @REPLACE_VFPRINTF@
+# define vfprintf rpl_vfprintf
+extern int vfprintf (FILE *fp, const char *format, va_list args)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef vfprintf
+# define vfprintf(s,f,a) \
+ (GL_LINK_WARNING ("vfprintf is not always POSIX compliant - " \
+ "use gnulib module vfprintf-posix for portable " \
+ "POSIX compliance"), \
+ vfprintf (s, f, a))
+#endif
+
+#if @GNULIB_PRINTF_POSIX@
+# if @REPLACE_PRINTF@
+/* Don't break __attribute__((format(printf,M,N))). */
+# define printf __printf__
+extern int printf (const char *format, ...)
+ __attribute__ ((__format__ (__printf__, 1, 2)));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef printf
+# define printf \
+ (GL_LINK_WARNING ("printf is not always POSIX compliant - " \
+ "use gnulib module printf-posix for portable " \
+ "POSIX compliance"), \
+ printf)
+/* Don't break __attribute__((format(printf,M,N))). */
+# define format(kind,m,n) format (__##kind##__, m, n)
+# define __format__(kind,m,n) __format__ (__##kind##__, m, n)
+# define ____printf____ __printf__
+# define ____scanf____ __scanf__
+# define ____strftime____ __strftime__
+# define ____strfmon____ __strfmon__
+#endif
+
+#if @GNULIB_VPRINTF_POSIX@
+# if @REPLACE_VPRINTF@
+# define vprintf rpl_vprintf
+extern int vprintf (const char *format, va_list args)
+ __attribute__ ((__format__ (__printf__, 1, 0)));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef vprintf
+# define vprintf(f,a) \
+ (GL_LINK_WARNING ("vprintf is not always POSIX compliant - " \
+ "use gnulib module vprintf-posix for portable " \
+ "POSIX compliance"), \
+ vprintf (f, a))
+#endif
+
+#if @GNULIB_SNPRINTF@
+# if @REPLACE_SNPRINTF@
+# define snprintf rpl_snprintf
+# endif
+# if @REPLACE_SNPRINTF@ || !@HAVE_DECL_SNPRINTF@
+extern int snprintf (char *str, size_t size, const char *format, ...)
+ __attribute__ ((__format__ (__printf__, 3, 4)));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef snprintf
+# define snprintf \
+ (GL_LINK_WARNING ("snprintf is unportable - " \
+ "use gnulib module snprintf for portability"), \
+ snprintf)
+#endif
+
+#if @GNULIB_VSNPRINTF@
+# if @REPLACE_VSNPRINTF@
+# define vsnprintf rpl_vsnprintf
+# endif
+# if @REPLACE_VSNPRINTF@ || !@HAVE_DECL_VSNPRINTF@
+extern int vsnprintf (char *str, size_t size, const char *format, va_list args)
+ __attribute__ ((__format__ (__printf__, 3, 0)));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef vsnprintf
+# define vsnprintf(b,s,f,a) \
+ (GL_LINK_WARNING ("vsnprintf is unportable - " \
+ "use gnulib module vsnprintf for portability"), \
+ vsnprintf (b, s, f, a))
+#endif
+
+#if @GNULIB_SPRINTF_POSIX@
+# if @REPLACE_SPRINTF@
+# define sprintf rpl_sprintf
+extern int sprintf (char *str, const char *format, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef sprintf
+# define sprintf \
+ (GL_LINK_WARNING ("sprintf is not always POSIX compliant - " \
+ "use gnulib module sprintf-posix for portable " \
+ "POSIX compliance"), \
+ sprintf)
+#endif
+
+#if @GNULIB_VSPRINTF_POSIX@
+# if @REPLACE_VSPRINTF@
+# define vsprintf rpl_vsprintf
+extern int vsprintf (char *str, const char *format, va_list args)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef vsprintf
+# define vsprintf(b,f,a) \
+ (GL_LINK_WARNING ("vsprintf is not always POSIX compliant - " \
+ "use gnulib module vsprintf-posix for portable " \
+ "POSIX compliance"), \
+ vsprintf (b, f, a))
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GL_STDIO_H */
+#endif
diff --git a/lib/stdlib--.h b/lib/stdlib--.h
new file mode 100644
index 0000000..61d6ebe
--- /dev/null
+++ b/lib/stdlib--.h
@@ -0,0 +1,25 @@
+/* Like stdlib.h, but redefine some names to avoid glitches.
+
+ Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <stdlib.h>
+#include "stdlib-safer.h"
+
+#undef mkstemp
+#define mkstemp mkstemp_safer
diff --git a/lib/stdlib-safer.h b/lib/stdlib-safer.h
new file mode 100644
index 0000000..8b1a7e1
--- /dev/null
+++ b/lib/stdlib-safer.h
@@ -0,0 +1,21 @@
+/* Invoke stdlib.h functions, but avoid some glitches.
+
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+int mkstemp_safer (char *);
diff --git a/lib/stdlib_.h b/lib/stdlib_.h
new file mode 100644
index 0000000..a920408
--- /dev/null
+++ b/lib/stdlib_.h
@@ -0,0 +1,141 @@
+/* A GNU-like <stdlib.h>.
+
+ Copyright (C) 1995, 2001-2002, 2006-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#if defined __need_malloc_and_calloc
+/* Special invocation convention inside glibc header files. */
+
+/* This #pragma avoids a warning with "gcc -Wall" on some glibc systems
+ on which <stdlib.h> has an inappropriate declaration, see
+ <http://sourceware.org/bugzilla/show_bug.cgi?id=1079>. */
+#ifdef __GNUC__
+# pragma GCC system_header
+#endif
+
+#include @ABSOLUTE_STDLIB_H@
+
+#else
+/* Normal invocation convention. */
+#ifndef _GL_STDLIB_H
+#define _GL_STDLIB_H
+
+/* This #pragma avoids a warning with "gcc -Wall" on some glibc systems
+ on which <stdlib.h> has an inappropriate declaration, see
+ <http://sourceware.org/bugzilla/show_bug.cgi?id=1079>. */
+#ifdef __GNUC__
+# pragma GCC system_header
+#endif
+
+#include @ABSOLUTE_STDLIB_H@
+
+
+/* The definition of GL_LINK_WARNING is copied here. */
+
+
+/* Some systems do not define EXIT_*, despite otherwise supporting C89. */
+#ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+#endif
+/* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere
+ with proper operation of xargs. */
+#ifndef EXIT_FAILURE
+# define EXIT_FAILURE 1
+#elif EXIT_FAILURE != 1
+# undef EXIT_FAILURE
+# define EXIT_FAILURE 1
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#if @GNULIB_GETSUBOPT@
+/* Assuming *OPTIONP is a comma separated list of elements of the form
+ "token" or "token=value", getsubopt parses the first of these elements.
+ If the first element refers to a "token" that is member of the given
+ NULL-terminated array of tokens:
+ - It replaces the comma with a NUL byte, updates *OPTIONP to point past
+ the first option and the comma, sets *VALUEP to the value of the
+ element (or NULL if it doesn't contain an "=" sign),
+ - It returns the index of the "token" in the given array of tokens.
+ Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined.
+ For more details see the POSIX:2001 specification.
+ http://www.opengroup.org/susv3xsh/getsubopt.html */
+# if !@HAVE_GETSUBOPT@
+extern int getsubopt (char **optionp, char *const *tokens, char **valuep);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getsubopt
+# define getsubopt(o,t,v) \
+ (GL_LINK_WARNING ("getsubopt is unportable - " \
+ "use gnulib module getsubopt for portability"), \
+ getsubopt (o, t, v))
+#endif
+
+
+#if @GNULIB_MKDTEMP@
+# if !@HAVE_MKDTEMP@
+/* Create a unique temporary directory from TEMPLATE.
+ The last six characters of TEMPLATE must be "XXXXXX";
+ they are replaced with a string that makes the directory name unique.
+ Returns TEMPLATE, or a null pointer if it cannot get a unique name.
+ The directory is created mode 700. */
+extern char * mkdtemp (char *template);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mkdtemp
+# define mkdtemp(t) \
+ (GL_LINK_WARNING ("mkdtemp is unportable - " \
+ "use gnulib module mkdtemp for portability"), \
+ mkdtemp (t))
+#endif
+
+
+#if @GNULIB_MKSTEMP@
+# if @REPLACE_MKSTEMP@
+/* Create a unique temporary file from TEMPLATE.
+ The last six characters of TEMPLATE must be "XXXXXX";
+ they are replaced with a string that makes the file name unique.
+ The file is then created, ensuring it didn't exist before.
+ The file is created read-write (mask at least 0600 & ~umask), but it may be
+ world-readable and world-writable (mask 0666 & ~umask), depending on the
+ implementation.
+ Returns the open file descriptor if successful, otherwise -1 and errno
+ set. */
+# define mkstemp rpl_mkstemp
+extern int mkstemp (char *template);
+# else
+/* On MacOS X 10.3, only <unistd.h> declares mkstemp. */
+# include <unistd.h>
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mkstemp
+# define mkstemp(t) \
+ (GL_LINK_WARNING ("mkstemp is unportable - " \
+ "use gnulib module mkstemp for portability"), \
+ mkstemp (t))
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GL_STDLIB_H */
+#endif
diff --git a/lib/stpcpy.c b/lib/stpcpy.c
new file mode 100644
index 0000000..4089d39
--- /dev/null
+++ b/lib/stpcpy.c
@@ -0,0 +1,49 @@
+/* stpcpy.c -- copy a string and return pointer to end of new string
+ Copyright (C) 1992, 1995, 1997-1998, 2006 Free Software Foundation, Inc.
+
+ NOTE: The canonical source of this file is maintained with the GNU C Library.
+ Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include <string.h>
+
+#undef __stpcpy
+#ifdef _LIBC
+# undef stpcpy
+#endif
+
+#ifndef weak_alias
+# define __stpcpy stpcpy
+#endif
+
+/* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */
+char *
+__stpcpy (char *dest, const char *src)
+{
+ register char *d = dest;
+ register const char *s = src;
+
+ do
+ *d++ = *s;
+ while (*s++ != '\0');
+
+ return d - 1;
+}
+#ifdef weak_alias
+weak_alias (__stpcpy, stpcpy)
+#endif
diff --git a/lib/strcspn.c b/lib/strcspn.c
new file mode 100644
index 0000000..5a8d6f9
--- /dev/null
+++ b/lib/strcspn.c
@@ -0,0 +1,41 @@
+/* Copyright (C) 1991, 1994, 1996-1997, 2002-2003, 2005-2006 Free Software Foundation, Inc.
+
+ NOTE: The canonical source of this file is maintained with the GNU C Library.
+ Bugs can be reported to bug-glibc@gnu.org.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include <stddef.h>
+#include <string.h>
+
+#undef strcspn
+
+/* Return the length of the maximum initial segment of S
+ which contains no characters from REJECT. */
+size_t
+strcspn (const char *s, const char *reject)
+{
+ size_t count = 0;
+
+ while (*s != '\0')
+ if (strchr (reject, *s++) == NULL)
+ ++count;
+ else
+ return count;
+
+ return count;
+}
diff --git a/lib/strdup.c b/lib/strdup.c
new file mode 100644
index 0000000..c614108
--- /dev/null
+++ b/lib/strdup.c
@@ -0,0 +1,55 @@
+/* Copyright (C) 1991, 1996, 1997, 1998, 2002, 2003, 2004, 2006, 2007 Free
+ Software Foundation, Inc.
+
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+/* Get specification. */
+#include <string.h>
+
+#include <stdlib.h>
+
+#undef __strdup
+#ifdef _LIBC
+# undef strdup
+#endif
+
+#ifndef weak_alias
+# define __strdup strdup
+#endif
+
+/* Duplicate S, returning an identical malloc'd string. */
+char *
+__strdup (const char *s)
+{
+ size_t len = strlen (s) + 1;
+ void *new = malloc (len);
+
+ if (new == NULL)
+ return NULL;
+
+ return (char *) memcpy (new, s, len);
+}
+#ifdef libc_hidden_def
+libc_hidden_def (__strdup)
+#endif
+#ifdef weak_alias
+weak_alias (__strdup, strdup)
+#endif
diff --git a/lib/strftime.c b/lib/strftime.c
new file mode 100644
index 0000000..1c202c9
--- /dev/null
+++ b/lib/strftime.c
@@ -0,0 +1,1462 @@
+/* Copyright (C) 1991-1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 Free Software
+ Foundation, Inc.
+
+ NOTE: The canonical source of this file is maintained with the GNU C Library.
+ Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifdef _LIBC
+# define HAVE_MBLEN 1
+# define HAVE_MBRLEN 1
+# define HAVE_STRUCT_ERA_ENTRY 1
+# define HAVE_TM_GMTOFF 1
+# define HAVE_TM_ZONE 1
+# define HAVE_TZNAME 1
+# define HAVE_TZSET 1
+# define MULTIBYTE_IS_FORMAT_SAFE 1
+# include "../locale/localeinfo.h"
+#else
+# include <config.h>
+# if FPRINTFTIME
+# include "fprintftime.h"
+# endif
+#endif
+
+#include <ctype.h>
+#include <time.h>
+
+#if HAVE_TZNAME && ! defined tzname
+extern char *tzname[];
+#endif
+
+/* Do multibyte processing if multibytes are supported, unless
+ multibyte sequences are safe in formats. Multibyte sequences are
+ safe if they cannot contain byte sequences that look like format
+ conversion specifications. The GNU C Library uses UTF8 multibyte
+ encoding, which is safe for formats, but strftime.c can be used
+ with other C libraries that use unsafe encodings. */
+#define DO_MULTIBYTE (HAVE_MBLEN && ! MULTIBYTE_IS_FORMAT_SAFE)
+
+#if DO_MULTIBYTE
+# if HAVE_MBRLEN
+# include <wchar.h>
+# else
+ /* Simulate mbrlen with mblen as best we can. */
+# define mbstate_t int
+# define mbrlen(s, n, ps) mblen (s, n)
+# define mbsinit(ps) (*(ps) == 0)
+# endif
+ static const mbstate_t mbstate_zero;
+#endif
+
+#include <limits.h>
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef COMPILE_WIDE
+# include <endian.h>
+# define CHAR_T wchar_t
+# define UCHAR_T unsigned int
+# define L_(Str) L##Str
+# define NLW(Sym) _NL_W##Sym
+
+# define MEMCPY(d, s, n) __wmemcpy (d, s, n)
+# define STRLEN(s) __wcslen (s)
+
+#else
+# define CHAR_T char
+# define UCHAR_T unsigned char
+# define L_(Str) Str
+# define NLW(Sym) Sym
+
+# define MEMCPY(d, s, n) memcpy (d, s, n)
+# define STRLEN(s) strlen (s)
+
+# ifdef _LIBC
+# define MEMPCPY(d, s, n) __mempcpy (d, s, n)
+# else
+# ifndef HAVE_MEMPCPY
+# define MEMPCPY(d, s, n) ((void *) ((char *) memcpy (d, s, n) + (n)))
+# endif
+# endif
+#endif
+
+/* Shift A right by B bits portably, by dividing A by 2**B and
+ truncating towards minus infinity. A and B should be free of side
+ effects, and B should be in the range 0 <= B <= INT_BITS - 2, where
+ INT_BITS is the number of useful bits in an int. GNU code can
+ assume that INT_BITS is at least 32.
+
+ ISO C99 says that A >> B is implementation-defined if A < 0. Some
+ implementations (e.g., UNICOS 9.0 on a Cray Y-MP EL) don't shift
+ right in the usual way when A < 0, so SHR falls back on division if
+ ordinary A >> B doesn't seem to be the usual signed shift. */
+#define SHR(a, b) \
+ (-1 >> 1 == -1 \
+ ? (a) >> (b) \
+ : (a) / (1 << (b)) - ((a) % (1 << (b)) < 0))
+
+/* Bound on length of the string representing an integer type or expression T.
+ Subtract 1 for the sign bit if t is signed; log10 (2.0) < 146/485;
+ add 1 for integer division truncation; add 1 more for a minus sign
+ if needed. */
+#define INT_STRLEN_BOUND(t) \
+ ((sizeof (t) * CHAR_BIT - 1) * 146 / 485 + 2)
+
+#define TM_YEAR_BASE 1900
+
+#ifndef __isleap
+/* Nonzero if YEAR is a leap year (every 4 years,
+ except every 100th isn't, and every 400th is). */
+# define __isleap(year) \
+ ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
+#endif
+
+
+#ifdef _LIBC
+# define tzname __tzname
+# define tzset __tzset
+#endif
+
+#if !HAVE_TM_GMTOFF
+/* Portable standalone applications should supply a "time.h" that
+ declares a POSIX-compliant localtime_r, for the benefit of older
+ implementations that lack localtime_r or have a nonstandard one.
+ See the gnulib time_r module for one way to implement this. */
+# undef __gmtime_r
+# undef __localtime_r
+# define __gmtime_r gmtime_r
+# define __localtime_r localtime_r
+#endif
+
+
+#ifndef FPRINTFTIME
+# define FPRINTFTIME 0
+#endif
+
+#if FPRINTFTIME
+# define STREAM_OR_CHAR_T FILE
+# define STRFTIME_ARG(x) /* empty */
+#else
+# define STREAM_OR_CHAR_T CHAR_T
+# define STRFTIME_ARG(x) x,
+#endif
+
+#if FPRINTFTIME
+# define memset_byte(P, Len, Byte) \
+ do { size_t _i; for (_i = 0; _i < Len; _i++) fputc (Byte, P); } while (0)
+# define memset_space(P, Len) memset_byte (P, Len, ' ')
+# define memset_zero(P, Len) memset_byte (P, Len, '0')
+#elif defined COMPILE_WIDE
+# define memset_space(P, Len) (wmemset (P, L' ', Len), (P) += (Len))
+# define memset_zero(P, Len) (wmemset (P, L'0', Len), (P) += (Len))
+#else
+# define memset_space(P, Len) (memset (P, ' ', Len), (P) += (Len))
+# define memset_zero(P, Len) (memset (P, '0', Len), (P) += (Len))
+#endif
+
+#if FPRINTFTIME
+# define advance(P, N)
+#else
+# define advance(P, N) ((P) += (N))
+#endif
+
+#define add(n, f) \
+ do \
+ { \
+ int _n = (n); \
+ int _delta = width - _n; \
+ int _incr = _n + (_delta > 0 ? _delta : 0); \
+ if ((size_t) _incr >= maxsize - i) \
+ return 0; \
+ if (p) \
+ { \
+ if (digits == 0 && _delta > 0) \
+ { \
+ if (pad == L_('0')) \
+ memset_zero (p, _delta); \
+ else \
+ memset_space (p, _delta); \
+ } \
+ f; \
+ advance (p, _n); \
+ } \
+ i += _incr; \
+ } while (0)
+
+#if FPRINTFTIME
+# define add1(C) add (1, fputc (C, p))
+#else
+# define add1(C) add (1, *p = C)
+#endif
+
+#if FPRINTFTIME
+# define cpy(n, s) \
+ add ((n), \
+ if (to_lowcase) \
+ fwrite_lowcase (p, (s), _n); \
+ else if (to_uppcase) \
+ fwrite_uppcase (p, (s), _n); \
+ else \
+ fwrite ((s), _n, 1, p))
+#else
+# define cpy(n, s) \
+ add ((n), \
+ if (to_lowcase) \
+ memcpy_lowcase (p, (s), _n LOCALE_ARG); \
+ else if (to_uppcase) \
+ memcpy_uppcase (p, (s), _n LOCALE_ARG); \
+ else \
+ MEMCPY ((void *) p, (void const *) (s), _n))
+#endif
+
+#ifdef COMPILE_WIDE
+# ifndef USE_IN_EXTENDED_LOCALE_MODEL
+# undef __mbsrtowcs_l
+# define __mbsrtowcs_l(d, s, l, st, loc) __mbsrtowcs (d, s, l, st)
+# endif
+# define widen(os, ws, l) \
+ { \
+ mbstate_t __st; \
+ const char *__s = os; \
+ memset (&__st, '\0', sizeof (__st)); \
+ l = __mbsrtowcs_l (NULL, &__s, 0, &__st, loc); \
+ ws = (wchar_t *) alloca ((l + 1) * sizeof (wchar_t)); \
+ (void) __mbsrtowcs_l (ws, &__s, l, &__st, loc); \
+ }
+#endif
+
+
+#if defined _LIBC && defined USE_IN_EXTENDED_LOCALE_MODEL
+/* We use this code also for the extended locale handling where the
+ function gets as an additional argument the locale which has to be
+ used. To access the values we have to redefine the _NL_CURRENT
+ macro. */
+# define strftime __strftime_l
+# define wcsftime __wcsftime_l
+# undef _NL_CURRENT
+# define _NL_CURRENT(category, item) \
+ (current->values[_NL_ITEM_INDEX (item)].string)
+# define LOCALE_ARG , loc
+# define LOCALE_PARAM_PROTO , __locale_t loc
+# define HELPER_LOCALE_ARG , current
+#else
+# define LOCALE_PARAM_PROTO
+# define LOCALE_ARG
+# ifdef _LIBC
+# define HELPER_LOCALE_ARG , _NL_CURRENT_DATA (LC_TIME)
+# else
+# define HELPER_LOCALE_ARG
+# endif
+#endif
+
+#ifdef COMPILE_WIDE
+# ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# define TOUPPER(Ch, L) __towupper_l (Ch, L)
+# define TOLOWER(Ch, L) __towlower_l (Ch, L)
+# else
+# define TOUPPER(Ch, L) towupper (Ch)
+# define TOLOWER(Ch, L) towlower (Ch)
+# endif
+#else
+# ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# define TOUPPER(Ch, L) __toupper_l (Ch, L)
+# define TOLOWER(Ch, L) __tolower_l (Ch, L)
+# else
+# define TOUPPER(Ch, L) toupper (Ch)
+# define TOLOWER(Ch, L) tolower (Ch)
+# endif
+#endif
+/* We don't use `isdigit' here since the locale dependent
+ interpretation is not what we want here. We only need to accept
+ the arabic digits in the ASCII range. One day there is perhaps a
+ more reliable way to accept other sets of digits. */
+#define ISDIGIT(Ch) ((unsigned int) (Ch) - L_('0') <= 9)
+
+#if FPRINTFTIME
+static void
+fwrite_lowcase (FILE *fp, const CHAR_T *src, size_t len)
+{
+ while (len-- > 0)
+ {
+ fputc (TOLOWER ((UCHAR_T) *src, loc), fp);
+ ++src;
+ }
+}
+
+static void
+fwrite_uppcase (FILE *fp, const CHAR_T *src, size_t len)
+{
+ while (len-- > 0)
+ {
+ fputc (TOUPPER ((UCHAR_T) *src, loc), fp);
+ ++src;
+ }
+}
+#else
+static CHAR_T *
+memcpy_lowcase (CHAR_T *dest, const CHAR_T *src,
+ size_t len LOCALE_PARAM_PROTO)
+{
+ while (len-- > 0)
+ dest[len] = TOLOWER ((UCHAR_T) src[len], loc);
+ return dest;
+}
+
+static CHAR_T *
+memcpy_uppcase (CHAR_T *dest, const CHAR_T *src,
+ size_t len LOCALE_PARAM_PROTO)
+{
+ while (len-- > 0)
+ dest[len] = TOUPPER ((UCHAR_T) src[len], loc);
+ return dest;
+}
+#endif
+
+
+#if ! HAVE_TM_GMTOFF
+/* Yield the difference between *A and *B,
+ measured in seconds, ignoring leap seconds. */
+# define tm_diff ftime_tm_diff
+static int
+tm_diff (const struct tm *a, const struct tm *b)
+{
+ /* Compute intervening leap days correctly even if year is negative.
+ Take care to avoid int overflow in leap day calculations,
+ but it's OK to assume that A and B are close to each other. */
+ int a4 = SHR (a->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (a->tm_year & 3);
+ int b4 = SHR (b->tm_year, 2) + SHR (TM_YEAR_BASE, 2) - ! (b->tm_year & 3);
+ int a100 = a4 / 25 - (a4 % 25 < 0);
+ int b100 = b4 / 25 - (b4 % 25 < 0);
+ int a400 = SHR (a100, 2);
+ int b400 = SHR (b100, 2);
+ int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400);
+ int years = a->tm_year - b->tm_year;
+ int days = (365 * years + intervening_leap_days
+ + (a->tm_yday - b->tm_yday));
+ return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour))
+ + (a->tm_min - b->tm_min))
+ + (a->tm_sec - b->tm_sec));
+}
+#endif /* ! HAVE_TM_GMTOFF */
+
+
+
+/* The number of days from the first day of the first ISO week of this
+ year to the year day YDAY with week day WDAY. ISO weeks start on
+ Monday; the first ISO week has the year's first Thursday. YDAY may
+ be as small as YDAY_MINIMUM. */
+#define ISO_WEEK_START_WDAY 1 /* Monday */
+#define ISO_WEEK1_WDAY 4 /* Thursday */
+#define YDAY_MINIMUM (-366)
+#ifdef __GNUC__
+__inline__
+#endif
+static int
+iso_week_days (int yday, int wday)
+{
+ /* Add enough to the first operand of % to make it nonnegative. */
+ int big_enough_multiple_of_7 = (-YDAY_MINIMUM / 7 + 2) * 7;
+ return (yday
+ - (yday - wday + ISO_WEEK1_WDAY + big_enough_multiple_of_7) % 7
+ + ISO_WEEK1_WDAY - ISO_WEEK_START_WDAY);
+}
+
+
+/* When compiling this file, GNU applications can #define my_strftime
+ to a symbol (typically nstrftime) to get an extended strftime with
+ extra arguments UT and NS. Emacs is a special case for now, but
+ this Emacs-specific code can be removed once Emacs's config.h
+ defines my_strftime. */
+#if defined emacs && !defined my_strftime
+# define my_strftime nstrftime
+#endif
+
+#if FPRINTFTIME
+# undef my_strftime
+# define my_strftime fprintftime
+#endif
+
+#ifdef my_strftime
+# define extra_args , ut, ns
+# define extra_args_spec , int ut, int ns
+#else
+# if defined COMPILE_WIDE
+# define my_strftime wcsftime
+# define nl_get_alt_digit _nl_get_walt_digit
+# else
+# define my_strftime strftime
+# define nl_get_alt_digit _nl_get_alt_digit
+# endif
+# define extra_args
+# define extra_args_spec
+/* We don't have this information in general. */
+# define ut 0
+# define ns 0
+#endif
+
+
+/* Just like my_strftime, below, but with one more parameter, UPCASE,
+ to indicate that the result should be converted to upper case. */
+static size_t
+strftime_case_ (bool upcase, STREAM_OR_CHAR_T *s,
+ STRFTIME_ARG (size_t maxsize)
+ const CHAR_T *format,
+ const struct tm *tp extra_args_spec LOCALE_PARAM_PROTO)
+{
+#if defined _LIBC && defined USE_IN_EXTENDED_LOCALE_MODEL
+ struct locale_data *const current = loc->__locales[LC_TIME];
+#endif
+#if FPRINTFTIME
+ size_t maxsize = (size_t) -1;
+#endif
+
+ int hour12 = tp->tm_hour;
+#ifdef _NL_CURRENT
+ /* We cannot make the following values variables since we must delay
+ the evaluation of these values until really needed since some
+ expressions might not be valid in every situation. The `struct tm'
+ might be generated by a strptime() call that initialized
+ only a few elements. Dereference the pointers only if the format
+ requires this. Then it is ok to fail if the pointers are invalid. */
+# define a_wkday \
+ ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ABDAY_1) + tp->tm_wday))
+# define f_wkday \
+ ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(DAY_1) + tp->tm_wday))
+# define a_month \
+ ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ABMON_1) + tp->tm_mon))
+# define f_month \
+ ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(MON_1) + tp->tm_mon))
+# define ampm \
+ ((const CHAR_T *) _NL_CURRENT (LC_TIME, tp->tm_hour > 11 \
+ ? NLW(PM_STR) : NLW(AM_STR)))
+
+# define aw_len STRLEN (a_wkday)
+# define am_len STRLEN (a_month)
+# define ap_len STRLEN (ampm)
+#endif
+ const char *zone;
+ size_t i = 0;
+ STREAM_OR_CHAR_T *p = s;
+ const CHAR_T *f;
+#if DO_MULTIBYTE && !defined COMPILE_WIDE
+ const char *format_end = NULL;
+#endif
+
+#if ! defined _LIBC && ! HAVE_RUN_TZSET_TEST
+ /* Solaris 2.5.x and 2.6 tzset sometimes modify the storage returned
+ by localtime. On such systems, we must either use the tzset and
+ localtime wrappers to work around the bug (which sets
+ HAVE_RUN_TZSET_TEST) or make a copy of the structure. */
+ struct tm copy = *tp;
+ tp = &copy;
+#endif
+
+ zone = NULL;
+#if HAVE_TM_ZONE
+ /* The POSIX test suite assumes that setting
+ the environment variable TZ to a new value before calling strftime()
+ will influence the result (the %Z format) even if the information in
+ TP is computed with a totally different time zone.
+ This is bogus: though POSIX allows bad behavior like this,
+ POSIX does not require it. Do the right thing instead. */
+ zone = (const char *) tp->tm_zone;
+#endif
+#if HAVE_TZNAME
+ if (ut)
+ {
+ if (! (zone && *zone))
+ zone = "GMT";
+ }
+ else
+ {
+ /* POSIX.1 requires that local time zone information be used as
+ though strftime called tzset. */
+# if HAVE_TZSET
+ tzset ();
+# endif
+ }
+#endif
+
+ if (hour12 > 12)
+ hour12 -= 12;
+ else
+ if (hour12 == 0)
+ hour12 = 12;
+
+ for (f = format; *f != '\0'; ++f)
+ {
+ int pad = 0; /* Padding for number ('-', '_', or 0). */
+ int modifier; /* Field modifier ('E', 'O', or 0). */
+ int digits = 0; /* Max digits for numeric format. */
+ int number_value; /* Numeric value to be printed. */
+ unsigned int u_number_value; /* (unsigned int) number_value. */
+ bool negative_number; /* The number is negative. */
+ bool always_output_a_sign; /* +/- should always be output. */
+ int tz_colon_mask; /* Bitmask of where ':' should appear. */
+ const CHAR_T *subfmt;
+ CHAR_T sign_char;
+ CHAR_T *bufp;
+ CHAR_T buf[1
+ + 2 /* for the two colons in a %::z or %:::z time zone */
+ + (sizeof (int) < sizeof (time_t)
+ ? INT_STRLEN_BOUND (time_t)
+ : INT_STRLEN_BOUND (int))];
+ int width = -1;
+ bool to_lowcase = false;
+ bool to_uppcase = upcase;
+ size_t colons;
+ bool change_case = false;
+ int format_char;
+
+#if DO_MULTIBYTE && !defined COMPILE_WIDE
+ switch (*f)
+ {
+ case L_('%'):
+ break;
+
+ case L_('\b'): case L_('\t'): case L_('\n'):
+ case L_('\v'): case L_('\f'): case L_('\r'):
+ case L_(' '): case L_('!'): case L_('"'): case L_('#'): case L_('&'):
+ case L_('\''): case L_('('): case L_(')'): case L_('*'): case L_('+'):
+ case L_(','): case L_('-'): case L_('.'): case L_('/'): case L_('0'):
+ case L_('1'): case L_('2'): case L_('3'): case L_('4'): case L_('5'):
+ case L_('6'): case L_('7'): case L_('8'): case L_('9'): case L_(':'):
+ case L_(';'): case L_('<'): case L_('='): case L_('>'): case L_('?'):
+ case L_('A'): case L_('B'): case L_('C'): case L_('D'): case L_('E'):
+ case L_('F'): case L_('G'): case L_('H'): case L_('I'): case L_('J'):
+ case L_('K'): case L_('L'): case L_('M'): case L_('N'): case L_('O'):
+ case L_('P'): case L_('Q'): case L_('R'): case L_('S'): case L_('T'):
+ case L_('U'): case L_('V'): case L_('W'): case L_('X'): case L_('Y'):
+ case L_('Z'): case L_('['): case L_('\\'): case L_(']'): case L_('^'):
+ case L_('_'): case L_('a'): case L_('b'): case L_('c'): case L_('d'):
+ case L_('e'): case L_('f'): case L_('g'): case L_('h'): case L_('i'):
+ case L_('j'): case L_('k'): case L_('l'): case L_('m'): case L_('n'):
+ case L_('o'): case L_('p'): case L_('q'): case L_('r'): case L_('s'):
+ case L_('t'): case L_('u'): case L_('v'): case L_('w'): case L_('x'):
+ case L_('y'): case L_('z'): case L_('{'): case L_('|'): case L_('}'):
+ case L_('~'):
+ /* The C Standard requires these 98 characters (plus '%') to
+ be in the basic execution character set. None of these
+ characters can start a multibyte sequence, so they need
+ not be analyzed further. */
+ add1 (*f);
+ continue;
+
+ default:
+ /* Copy this multibyte sequence until we reach its end, find
+ an error, or come back to the initial shift state. */
+ {
+ mbstate_t mbstate = mbstate_zero;
+ size_t len = 0;
+ size_t fsize;
+
+ if (! format_end)
+ format_end = f + strlen (f) + 1;
+ fsize = format_end - f;
+
+ do
+ {
+ size_t bytes = mbrlen (f + len, fsize - len, &mbstate);
+
+ if (bytes == 0)
+ break;
+
+ if (bytes == (size_t) -2)
+ {
+ len += strlen (f + len);
+ break;
+ }
+
+ if (bytes == (size_t) -1)
+ {
+ len++;
+ break;
+ }
+
+ len += bytes;
+ }
+ while (! mbsinit (&mbstate));
+
+ cpy (len, f);
+ f += len - 1;
+ continue;
+ }
+ }
+
+#else /* ! DO_MULTIBYTE */
+
+ /* Either multibyte encodings are not supported, they are
+ safe for formats, so any non-'%' byte can be copied through,
+ or this is the wide character version. */
+ if (*f != L_('%'))
+ {
+ add1 (*f);
+ continue;
+ }
+
+#endif /* ! DO_MULTIBYTE */
+
+ /* Check for flags that can modify a format. */
+ while (1)
+ {
+ switch (*++f)
+ {
+ /* This influences the number formats. */
+ case L_('_'):
+ case L_('-'):
+ case L_('0'):
+ pad = *f;
+ continue;
+
+ /* This changes textual output. */
+ case L_('^'):
+ to_uppcase = true;
+ continue;
+ case L_('#'):
+ change_case = true;
+ continue;
+
+ default:
+ break;
+ }
+ break;
+ }
+
+ /* As a GNU extension we allow to specify the field width. */
+ if (ISDIGIT (*f))
+ {
+ width = 0;
+ do
+ {
+ if (width > INT_MAX / 10
+ || (width == INT_MAX / 10 && *f - L_('0') > INT_MAX % 10))
+ /* Avoid overflow. */
+ width = INT_MAX;
+ else
+ {
+ width *= 10;
+ width += *f - L_('0');
+ }
+ ++f;
+ }
+ while (ISDIGIT (*f));
+ }
+
+ /* Check for modifiers. */
+ switch (*f)
+ {
+ case L_('E'):
+ case L_('O'):
+ modifier = *f++;
+ break;
+
+ default:
+ modifier = 0;
+ break;
+ }
+
+ /* Now do the specified format. */
+ format_char = *f;
+ switch (format_char)
+ {
+#define DO_NUMBER(d, v) \
+ digits = d; \
+ number_value = v; goto do_number
+#define DO_SIGNED_NUMBER(d, negative, v) \
+ digits = d; \
+ negative_number = negative; \
+ u_number_value = v; goto do_signed_number
+
+ /* The mask is not what you might think.
+ When the ordinal i'th bit is set, insert a colon
+ before the i'th digit of the time zone representation. */
+#define DO_TZ_OFFSET(d, negative, mask, v) \
+ digits = d; \
+ negative_number = negative; \
+ tz_colon_mask = mask; \
+ u_number_value = v; goto do_tz_offset
+#define DO_NUMBER_SPACEPAD(d, v) \
+ digits = d; \
+ number_value = v; goto do_number_spacepad
+
+ case L_('%'):
+ if (modifier != 0)
+ goto bad_format;
+ add1 (*f);
+ break;
+
+ case L_('a'):
+ if (modifier != 0)
+ goto bad_format;
+ if (change_case)
+ {
+ to_uppcase = true;
+ to_lowcase = false;
+ }
+#ifdef _NL_CURRENT
+ cpy (aw_len, a_wkday);
+ break;
+#else
+ goto underlying_strftime;
+#endif
+
+ case 'A':
+ if (modifier != 0)
+ goto bad_format;
+ if (change_case)
+ {
+ to_uppcase = true;
+ to_lowcase = false;
+ }
+#ifdef _NL_CURRENT
+ cpy (STRLEN (f_wkday), f_wkday);
+ break;
+#else
+ goto underlying_strftime;
+#endif
+
+ case L_('b'):
+ case L_('h'):
+ if (change_case)
+ {
+ to_uppcase = true;
+ to_lowcase = false;
+ }
+ if (modifier != 0)
+ goto bad_format;
+#ifdef _NL_CURRENT
+ cpy (am_len, a_month);
+ break;
+#else
+ goto underlying_strftime;
+#endif
+
+ case L_('B'):
+ if (modifier != 0)
+ goto bad_format;
+ if (change_case)
+ {
+ to_uppcase = true;
+ to_lowcase = false;
+ }
+#ifdef _NL_CURRENT
+ cpy (STRLEN (f_month), f_month);
+ break;
+#else
+ goto underlying_strftime;
+#endif
+
+ case L_('c'):
+ if (modifier == L_('O'))
+ goto bad_format;
+#ifdef _NL_CURRENT
+ if (! (modifier == 'E'
+ && (*(subfmt =
+ (const CHAR_T *) _NL_CURRENT (LC_TIME,
+ NLW(ERA_D_T_FMT)))
+ != '\0')))
+ subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(D_T_FMT));
+#else
+ goto underlying_strftime;
+#endif
+
+ subformat:
+ {
+ size_t len = strftime_case_ (to_uppcase,
+ NULL, STRFTIME_ARG ((size_t) -1)
+ subfmt,
+ tp extra_args LOCALE_ARG);
+ add (len, strftime_case_ (to_uppcase, p,
+ STRFTIME_ARG (maxsize - i)
+ subfmt,
+ tp extra_args LOCALE_ARG));
+ }
+ break;
+
+#if !(defined _NL_CURRENT && HAVE_STRUCT_ERA_ENTRY)
+ underlying_strftime:
+ {
+ /* The relevant information is available only via the
+ underlying strftime implementation, so use that. */
+ char ufmt[5];
+ char *u = ufmt;
+ char ubuf[1024]; /* enough for any single format in practice */
+ size_t len;
+ /* Make sure we're calling the actual underlying strftime.
+ In some cases, config.h contains something like
+ "#define strftime rpl_strftime". */
+# ifdef strftime
+# undef strftime
+ size_t strftime ();
+# endif
+
+ /* The space helps distinguish strftime failure from empty
+ output. */
+ *u++ = ' ';
+ *u++ = '%';
+ if (modifier != 0)
+ *u++ = modifier;
+ *u++ = format_char;
+ *u = '\0';
+ len = strftime (ubuf, sizeof ubuf, ufmt, tp);
+ if (len != 0)
+ cpy (len - 1, ubuf + 1);
+ }
+ break;
+#endif
+
+ case L_('C'):
+ if (modifier == L_('O'))
+ goto bad_format;
+ if (modifier == L_('E'))
+ {
+#if HAVE_STRUCT_ERA_ENTRY
+ struct era_entry *era = _nl_get_era_entry (tp HELPER_LOCALE_ARG);
+ if (era)
+ {
+# ifdef COMPILE_WIDE
+ size_t len = __wcslen (era->era_wname);
+ cpy (len, era->era_wname);
+# else
+ size_t len = strlen (era->era_name);
+ cpy (len, era->era_name);
+# endif
+ break;
+ }
+#else
+ goto underlying_strftime;
+#endif
+ }
+
+ {
+ int century = tp->tm_year / 100 + TM_YEAR_BASE / 100;
+ century -= tp->tm_year % 100 < 0 && 0 < century;
+ DO_SIGNED_NUMBER (2, tp->tm_year < - TM_YEAR_BASE, century);
+ }
+
+ case L_('x'):
+ if (modifier == L_('O'))
+ goto bad_format;
+#ifdef _NL_CURRENT
+ if (! (modifier == L_('E')
+ && (*(subfmt =
+ (const CHAR_T *)_NL_CURRENT (LC_TIME, NLW(ERA_D_FMT)))
+ != L_('\0'))))
+ subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(D_FMT));
+ goto subformat;
+#else
+ goto underlying_strftime;
+#endif
+ case L_('D'):
+ if (modifier != 0)
+ goto bad_format;
+ subfmt = L_("%m/%d/%y");
+ goto subformat;
+
+ case L_('d'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER (2, tp->tm_mday);
+
+ case L_('e'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER_SPACEPAD (2, tp->tm_mday);
+
+ /* All numeric formats set DIGITS and NUMBER_VALUE (or U_NUMBER_VALUE)
+ and then jump to one of these labels. */
+
+ do_tz_offset:
+ always_output_a_sign = true;
+ goto do_number_body;
+
+ do_number_spacepad:
+ /* Force `_' flag unless overridden by `0' or `-' flag. */
+ if (pad != L_('0') && pad != L_('-'))
+ pad = L_('_');
+
+ do_number:
+ /* Format NUMBER_VALUE according to the MODIFIER flag. */
+ negative_number = number_value < 0;
+ u_number_value = number_value;
+
+ do_signed_number:
+ always_output_a_sign = false;
+ tz_colon_mask = 0;
+
+ do_number_body:
+ /* Format U_NUMBER_VALUE according to the MODIFIER flag.
+ NEGATIVE_NUMBER is nonzero if the original number was
+ negative; in this case it was converted directly to
+ unsigned int (i.e., modulo (UINT_MAX + 1)) without
+ negating it. */
+ if (modifier == L_('O') && !negative_number)
+ {
+#ifdef _NL_CURRENT
+ /* Get the locale specific alternate representation of
+ the number. If none exist NULL is returned. */
+ const CHAR_T *cp = nl_get_alt_digit (u_number_value
+ HELPER_LOCALE_ARG);
+
+ if (cp != NULL)
+ {
+ size_t digitlen = STRLEN (cp);
+ if (digitlen != 0)
+ {
+ cpy (digitlen, cp);
+ break;
+ }
+ }
+#else
+ goto underlying_strftime;
+#endif
+ }
+
+ bufp = buf + sizeof (buf) / sizeof (buf[0]);
+
+ if (negative_number)
+ u_number_value = - u_number_value;
+
+ do
+ {
+ if (tz_colon_mask & 1)
+ *--bufp = ':';
+ tz_colon_mask >>= 1;
+ *--bufp = u_number_value % 10 + L_('0');
+ u_number_value /= 10;
+ }
+ while (u_number_value != 0 || tz_colon_mask != 0);
+
+ do_number_sign_and_padding:
+ if (digits < width)
+ digits = width;
+
+ sign_char = (negative_number ? L_('-')
+ : always_output_a_sign ? L_('+')
+ : 0);
+
+ if (pad == L_('-'))
+ {
+ if (sign_char)
+ add1 (sign_char);
+ }
+ else
+ {
+ int padding = digits - (buf + (sizeof (buf) / sizeof (buf[0]))
+ - bufp) - !!sign_char;
+
+ if (padding > 0)
+ {
+ if (pad == L_('_'))
+ {
+ if ((size_t) padding >= maxsize - i)
+ return 0;
+
+ if (p)
+ memset_space (p, padding);
+ i += padding;
+ width = width > padding ? width - padding : 0;
+ if (sign_char)
+ add1 (sign_char);
+ }
+ else
+ {
+ if ((size_t) digits >= maxsize - i)
+ return 0;
+
+ if (sign_char)
+ add1 (sign_char);
+
+ if (p)
+ memset_zero (p, padding);
+ i += padding;
+ width = 0;
+ }
+ }
+ else
+ {
+ if (sign_char)
+ add1 (sign_char);
+ }
+ }
+
+ cpy (buf + sizeof (buf) / sizeof (buf[0]) - bufp, bufp);
+ break;
+
+ case L_('F'):
+ if (modifier != 0)
+ goto bad_format;
+ subfmt = L_("%Y-%m-%d");
+ goto subformat;
+
+ case L_('H'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER (2, tp->tm_hour);
+
+ case L_('I'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER (2, hour12);
+
+ case L_('k'): /* GNU extension. */
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER_SPACEPAD (2, tp->tm_hour);
+
+ case L_('l'): /* GNU extension. */
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER_SPACEPAD (2, hour12);
+
+ case L_('j'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_SIGNED_NUMBER (3, tp->tm_yday < -1, tp->tm_yday + 1U);
+
+ case L_('M'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER (2, tp->tm_min);
+
+ case L_('m'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_SIGNED_NUMBER (2, tp->tm_mon < -1, tp->tm_mon + 1U);
+
+#ifndef _LIBC
+ case L_('N'): /* GNU extension. */
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ number_value = ns;
+ if (width == -1)
+ width = 9;
+ else
+ {
+ /* Take an explicit width less than 9 as a precision. */
+ int j;
+ for (j = width; j < 9; j++)
+ number_value /= 10;
+ }
+
+ DO_NUMBER (width, number_value);
+#endif
+
+ case L_('n'):
+ add1 (L_('\n'));
+ break;
+
+ case L_('P'):
+ to_lowcase = true;
+#ifndef _NL_CURRENT
+ format_char = L_('p');
+#endif
+ /* FALLTHROUGH */
+
+ case L_('p'):
+ if (change_case)
+ {
+ to_uppcase = false;
+ to_lowcase = true;
+ }
+#ifdef _NL_CURRENT
+ cpy (ap_len, ampm);
+ break;
+#else
+ goto underlying_strftime;
+#endif
+
+ case L_('R'):
+ subfmt = L_("%H:%M");
+ goto subformat;
+
+ case L_('r'):
+#ifdef _NL_CURRENT
+ if (*(subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME,
+ NLW(T_FMT_AMPM)))
+ == L_('\0'))
+ subfmt = L_("%I:%M:%S %p");
+ goto subformat;
+#else
+ goto underlying_strftime;
+#endif
+
+ case L_('S'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER (2, tp->tm_sec);
+
+ case L_('s'): /* GNU extension. */
+ {
+ struct tm ltm;
+ time_t t;
+
+ ltm = *tp;
+ t = mktime (&ltm);
+
+ /* Generate string value for T using time_t arithmetic;
+ this works even if sizeof (long) < sizeof (time_t). */
+
+ bufp = buf + sizeof (buf) / sizeof (buf[0]);
+ negative_number = t < 0;
+
+ do
+ {
+ int d = t % 10;
+ t /= 10;
+ *--bufp = (negative_number ? -d : d) + L_('0');
+ }
+ while (t != 0);
+
+ digits = 1;
+ always_output_a_sign = false;
+ goto do_number_sign_and_padding;
+ }
+
+ case L_('X'):
+ if (modifier == L_('O'))
+ goto bad_format;
+#ifdef _NL_CURRENT
+ if (! (modifier == L_('E')
+ && (*(subfmt =
+ (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ERA_T_FMT)))
+ != L_('\0'))))
+ subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(T_FMT));
+ goto subformat;
+#else
+ goto underlying_strftime;
+#endif
+ case L_('T'):
+ subfmt = L_("%H:%M:%S");
+ goto subformat;
+
+ case L_('t'):
+ add1 (L_('\t'));
+ break;
+
+ case L_('u'):
+ DO_NUMBER (1, (tp->tm_wday - 1 + 7) % 7 + 1);
+
+ case L_('U'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER (2, (tp->tm_yday - tp->tm_wday + 7) / 7);
+
+ case L_('V'):
+ case L_('g'):
+ case L_('G'):
+ if (modifier == L_('E'))
+ goto bad_format;
+ {
+ /* YEAR is a leap year if and only if (tp->tm_year + TM_YEAR_BASE)
+ is a leap year, except that YEAR and YEAR - 1 both work
+ correctly even when (tp->tm_year + TM_YEAR_BASE) would
+ overflow. */
+ int year = (tp->tm_year
+ + (tp->tm_year < 0
+ ? TM_YEAR_BASE % 400
+ : TM_YEAR_BASE % 400 - 400));
+ int year_adjust = 0;
+ int days = iso_week_days (tp->tm_yday, tp->tm_wday);
+
+ if (days < 0)
+ {
+ /* This ISO week belongs to the previous year. */
+ year_adjust = -1;
+ days = iso_week_days (tp->tm_yday + (365 + __isleap (year - 1)),
+ tp->tm_wday);
+ }
+ else
+ {
+ int d = iso_week_days (tp->tm_yday - (365 + __isleap (year)),
+ tp->tm_wday);
+ if (0 <= d)
+ {
+ /* This ISO week belongs to the next year. */
+ year_adjust = 1;
+ days = d;
+ }
+ }
+
+ switch (*f)
+ {
+ case L_('g'):
+ {
+ int yy = (tp->tm_year % 100 + year_adjust) % 100;
+ DO_NUMBER (2, (0 <= yy
+ ? yy
+ : tp->tm_year < -TM_YEAR_BASE - year_adjust
+ ? -yy
+ : yy + 100));
+ }
+
+ case L_('G'):
+ DO_SIGNED_NUMBER (4, tp->tm_year < -TM_YEAR_BASE - year_adjust,
+ (tp->tm_year + (unsigned int) TM_YEAR_BASE
+ + year_adjust));
+
+ default:
+ DO_NUMBER (2, days / 7 + 1);
+ }
+ }
+
+ case L_('W'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER (2, (tp->tm_yday - (tp->tm_wday - 1 + 7) % 7 + 7) / 7);
+
+ case L_('w'):
+ if (modifier == L_('E'))
+ goto bad_format;
+
+ DO_NUMBER (1, tp->tm_wday);
+
+ case L_('Y'):
+ if (modifier == 'E')
+ {
+#if HAVE_STRUCT_ERA_ENTRY
+ struct era_entry *era = _nl_get_era_entry (tp HELPER_LOCALE_ARG);
+ if (era)
+ {
+# ifdef COMPILE_WIDE
+ subfmt = era->era_wformat;
+# else
+ subfmt = era->era_format;
+# endif
+ goto subformat;
+ }
+#else
+ goto underlying_strftime;
+#endif
+ }
+ if (modifier == L_('O'))
+ goto bad_format;
+ else
+ DO_SIGNED_NUMBER (4, tp->tm_year < -TM_YEAR_BASE,
+ tp->tm_year + (unsigned int) TM_YEAR_BASE);
+
+ case L_('y'):
+ if (modifier == L_('E'))
+ {
+#if HAVE_STRUCT_ERA_ENTRY
+ struct era_entry *era = _nl_get_era_entry (tp HELPER_LOCALE_ARG);
+ if (era)
+ {
+ int delta = tp->tm_year - era->start_date[0];
+ DO_NUMBER (1, (era->offset
+ + delta * era->absolute_direction));
+ }
+#else
+ goto underlying_strftime;
+#endif
+ }
+
+ {
+ int yy = tp->tm_year % 100;
+ if (yy < 0)
+ yy = tp->tm_year < - TM_YEAR_BASE ? -yy : yy + 100;
+ DO_NUMBER (2, yy);
+ }
+
+ case L_('Z'):
+ if (change_case)
+ {
+ to_uppcase = false;
+ to_lowcase = true;
+ }
+
+#if HAVE_TZNAME
+ /* The tzset() call might have changed the value. */
+ if (!(zone && *zone) && tp->tm_isdst >= 0)
+ zone = tzname[tp->tm_isdst != 0];
+#endif
+ if (! zone)
+ zone = "";
+
+#ifdef COMPILE_WIDE
+ {
+ /* The zone string is always given in multibyte form. We have
+ to transform it first. */
+ wchar_t *wczone;
+ size_t len;
+ widen (zone, wczone, len);
+ cpy (len, wczone);
+ }
+#else
+ cpy (strlen (zone), zone);
+#endif
+ break;
+
+ case L_(':'):
+ /* :, ::, and ::: are valid only just before 'z'.
+ :::: etc. are rejected later. */
+ for (colons = 1; f[colons] == L_(':'); colons++)
+ continue;
+ if (f[colons] != L_('z'))
+ goto bad_format;
+ f += colons;
+ goto do_z_conversion;
+
+ case L_('z'):
+ colons = 0;
+
+ do_z_conversion:
+ if (tp->tm_isdst < 0)
+ break;
+
+ {
+ int diff;
+ int hour_diff;
+ int min_diff;
+ int sec_diff;
+#if HAVE_TM_GMTOFF
+ diff = tp->tm_gmtoff;
+#else
+ if (ut)
+ diff = 0;
+ else
+ {
+ struct tm gtm;
+ struct tm ltm;
+ time_t lt;
+
+ ltm = *tp;
+ lt = mktime (&ltm);
+
+ if (lt == (time_t) -1)
+ {
+ /* mktime returns -1 for errors, but -1 is also a
+ valid time_t value. Check whether an error really
+ occurred. */
+ struct tm tm;
+
+ if (! __localtime_r (&lt, &tm)
+ || ((ltm.tm_sec ^ tm.tm_sec)
+ | (ltm.tm_min ^ tm.tm_min)
+ | (ltm.tm_hour ^ tm.tm_hour)
+ | (ltm.tm_mday ^ tm.tm_mday)
+ | (ltm.tm_mon ^ tm.tm_mon)
+ | (ltm.tm_year ^ tm.tm_year)))
+ break;
+ }
+
+ if (! __gmtime_r (&lt, &gtm))
+ break;
+
+ diff = tm_diff (&ltm, &gtm);
+ }
+#endif
+
+ hour_diff = diff / 60 / 60;
+ min_diff = diff / 60 % 60;
+ sec_diff = diff % 60;
+
+ switch (colons)
+ {
+ case 0: /* +hhmm */
+ DO_TZ_OFFSET (5, diff < 0, 0, hour_diff * 100 + min_diff);
+
+ case 1: tz_hh_mm: /* +hh:mm */
+ DO_TZ_OFFSET (6, diff < 0, 04, hour_diff * 100 + min_diff);
+
+ case 2: tz_hh_mm_ss: /* +hh:mm:ss */
+ DO_TZ_OFFSET (9, diff < 0, 024,
+ hour_diff * 10000 + min_diff * 100 + sec_diff);
+
+ case 3: /* +hh if possible, else +hh:mm, else +hh:mm:ss */
+ if (sec_diff != 0)
+ goto tz_hh_mm_ss;
+ if (min_diff != 0)
+ goto tz_hh_mm;
+ DO_TZ_OFFSET (3, diff < 0, 0, hour_diff);
+
+ default:
+ goto bad_format;
+ }
+ }
+
+ case L_('\0'): /* GNU extension: % at end of format. */
+ --f;
+ /* Fall through. */
+ default:
+ /* Unknown format; output the format, including the '%',
+ since this is most likely the right thing to do if a
+ multibyte string has been misparsed. */
+ bad_format:
+ {
+ int flen;
+ for (flen = 1; f[1 - flen] != L_('%'); flen++)
+ continue;
+ cpy (flen, &f[1 - flen]);
+ }
+ break;
+ }
+ }
+
+#if ! FPRINTFTIME
+ if (p && maxsize != 0)
+ *p = L_('\0');
+#endif
+
+ return i;
+}
+
+/* Write information from TP into S according to the format
+ string FORMAT, writing no more that MAXSIZE characters
+ (including the terminating '\0') and returning number of
+ characters written. If S is NULL, nothing will be written
+ anywhere, so to determine how many characters would be
+ written, use NULL for S and (size_t) -1 for MAXSIZE. */
+size_t
+my_strftime (STREAM_OR_CHAR_T *s, STRFTIME_ARG (size_t maxsize)
+ const CHAR_T *format,
+ const struct tm *tp extra_args_spec LOCALE_PARAM_PROTO)
+{
+ return strftime_case_ (false, s, STRFTIME_ARG (maxsize)
+ format, tp extra_args LOCALE_ARG);
+}
+
+#if defined _LIBC && ! FPRINTFTIME
+libc_hidden_def (my_strftime)
+#endif
+
+
+#if defined emacs && ! FPRINTFTIME
+/* For Emacs we have a separate interface which corresponds to the normal
+ strftime function plus the ut argument, but without the ns argument. */
+size_t
+emacs_strftimeu (char *s, size_t maxsize, const char *format,
+ const struct tm *tp, int ut)
+{
+ return my_strftime (s, maxsize, format, tp, ut, 0);
+}
+#endif
diff --git a/lib/strftime.h b/lib/strftime.h
new file mode 100644
index 0000000..16b996e
--- /dev/null
+++ b/lib/strftime.h
@@ -0,0 +1,21 @@
+/* declarations for strftime.c
+
+ Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <time.h>
+
+size_t nstrftime (char *, size_t, char const *, struct tm const *, int, int);
diff --git a/lib/string_.h b/lib/string_.h
new file mode 100644
index 0000000..b50523c
--- /dev/null
+++ b/lib/string_.h
@@ -0,0 +1,544 @@
+/* A GNU-like <string.h>.
+
+ Copyright (C) 1995-1996, 2001-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _GL_STRING_H
+#define _GL_STRING_H
+
+/* This #pragma avoids a warning with "gcc -Wmissing-prototypes" on some
+ mingw systems. */
+#ifdef __GNUC__
+# pragma GCC system_header
+#endif
+
+#include @ABSOLUTE_STRING_H@
+
+
+/* The definition of GL_LINK_WARNING is copied here. */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Return the first occurrence of NEEDLE in HAYSTACK. */
+#if @GNULIB_MEMMEM@
+# if ! @HAVE_DECL_MEMMEM@
+extern void *memmem (void const *__haystack, size_t __haystack_len,
+ void const *__needle, size_t __needle_len);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memmem
+# define memmem(a,al,b,bl) \
+ (GL_LINK_WARNING ("memmem is unportable - " \
+ "use gnulib module memmem for portability"), \
+ memmem (a, al, b, bl))
+#endif
+
+/* Copy N bytes of SRC to DEST, return pointer to bytes after the
+ last written byte. */
+#if @GNULIB_MEMPCPY@
+# if ! @HAVE_MEMPCPY@
+extern void *mempcpy (void *restrict __dest, void const *restrict __src,
+ size_t __n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mempcpy
+# define mempcpy(a,b,n) \
+ (GL_LINK_WARNING ("mempcpy is unportable - " \
+ "use gnulib module mempcpy for portability"), \
+ mempcpy (a, b, n))
+#endif
+
+/* Search backwards through a block for a byte (specified as an int). */
+#if @GNULIB_MEMRCHR@
+# if ! @HAVE_DECL_MEMRCHR@
+extern void *memrchr (void const *, int, size_t);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memrchr
+# define memrchr(a,b,c) \
+ (GL_LINK_WARNING ("memrchr is unportable - " \
+ "use gnulib module memrchr for portability"), \
+ memrchr (a, b, c))
+#endif
+
+/* Copy SRC to DST, returning the address of the terminating '\0' in DST. */
+#if @GNULIB_STPCPY@
+# if ! @HAVE_STPCPY@
+extern char *stpcpy (char *restrict __dst, char const *restrict __src);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef stpcpy
+# define stpcpy(a,b) \
+ (GL_LINK_WARNING ("stpcpy is unportable - " \
+ "use gnulib module stpcpy for portability"), \
+ stpcpy (a, b))
+#endif
+
+/* Copy no more than N bytes of SRC to DST, returning a pointer past the
+ last non-NUL byte written into DST. */
+#if @GNULIB_STPNCPY@
+# if ! @HAVE_STPNCPY@
+# define stpncpy gnu_stpncpy
+extern char *stpncpy (char *restrict __dst, char const *restrict __src,
+ size_t __n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef stpncpy
+# define stpncpy(a,b,n) \
+ (GL_LINK_WARNING ("stpncpy is unportable - " \
+ "use gnulib module stpncpy for portability"), \
+ stpncpy (a, b, n))
+#endif
+
+/* Compare strings S1 and S2, ignoring case, returning less than, equal to or
+ greater than zero if S1 is lexicographically less than, equal to or greater
+ than S2.
+ Note: This function does not work in multibyte locales. */
+#if ! @HAVE_STRCASECMP@
+extern int strcasecmp (char const *s1, char const *s2);
+#endif
+#if defined GNULIB_POSIXCHECK
+/* strcasecmp() does not work with multibyte strings:
+ POSIX says that it operates on "strings", and "string" in POSIX is defined
+ as a sequence of bytes, not of characters. */
+# undef strcasecmp
+# define strcasecmp(a,b) \
+ (GL_LINK_WARNING ("strcasecmp cannot work correctly on character strings " \
+ "in multibyte locales - " \
+ "use mbscasecmp if you care about " \
+ "internationalization, or use c_strcasecmp (from " \
+ "gnulib module c-strcase) if you want a locale " \
+ "independent function"), \
+ strcasecmp (a, b))
+#endif
+
+/* Compare no more than N bytes of strings S1 and S2, ignoring case,
+ returning less than, equal to or greater than zero if S1 is
+ lexicographically less than, equal to or greater than S2.
+ Note: This function cannot work correctly in multibyte locales. */
+#if ! @HAVE_DECL_STRNCASECMP@
+extern int strncasecmp (char const *s1, char const *s2, size_t n);
+#endif
+#if defined GNULIB_POSIXCHECK
+/* strncasecmp() does not work with multibyte strings:
+ POSIX says that it operates on "strings", and "string" in POSIX is defined
+ as a sequence of bytes, not of characters. */
+# undef strncasecmp
+# define strncasecmp(a,b,n) \
+ (GL_LINK_WARNING ("strncasecmp cannot work correctly on character " \
+ "strings in multibyte locales - " \
+ "use mbsncasecmp or mbspcasecmp if you care about " \
+ "internationalization, or use c_strncasecmp (from " \
+ "gnulib module c-strcase) if you want a locale " \
+ "independent function"), \
+ strncasecmp (a, b, n))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strchr() does not work with multibyte strings if the locale encoding is
+ GB18030 and the character to be searched is a digit. */
+# undef strchr
+# define strchr(s,c) \
+ (GL_LINK_WARNING ("strchr cannot work correctly on character strings " \
+ "in some multibyte locales - " \
+ "use mbschr if you care about internationalization"), \
+ strchr (s, c))
+#endif
+
+/* Find the first occurrence of C in S or the final NUL byte. */
+#if @GNULIB_STRCHRNUL@
+# if ! @HAVE_STRCHRNUL@
+extern char *strchrnul (char const *__s, int __c_in);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strchrnul
+# define strchrnul(a,b) \
+ (GL_LINK_WARNING ("strchrnul is unportable - " \
+ "use gnulib module strchrnul for portability"), \
+ strchrnul (a, b))
+#endif
+
+/* Duplicate S, returning an identical malloc'd string. */
+#if @GNULIB_STRDUP@
+# if ! @HAVE_DECL_STRDUP@ && ! defined strdup
+extern char *strdup (char const *__s);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strdup
+# define strdup(a) \
+ (GL_LINK_WARNING ("strdup is unportable - " \
+ "use gnulib module strdup for portability"), \
+ strdup (a))
+#endif
+
+/* Return a newly allocated copy of at most N bytes of STRING. */
+#if @GNULIB_STRNDUP@
+# if ! @HAVE_STRNDUP@
+# undef strndup
+# define strndup rpl_strndup
+# endif
+# if ! @HAVE_STRNDUP@ || ! @HAVE_DECL_STRNDUP@
+extern char *strndup (char const *__string, size_t __n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strndup
+# define strndup(a,n) \
+ (GL_LINK_WARNING ("strndup is unportable - " \
+ "use gnulib module strndup for portability"), \
+ strndup (a, n))
+#endif
+
+/* Find the length (number of bytes) of STRING, but scan at most
+ MAXLEN bytes. If no '\0' terminator is found in that many bytes,
+ return MAXLEN. */
+#if @GNULIB_STRNLEN@
+# if ! @HAVE_DECL_STRNLEN@
+extern size_t strnlen (char const *__string, size_t __maxlen);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strnlen
+# define strnlen(a,n) \
+ (GL_LINK_WARNING ("strnlen is unportable - " \
+ "use gnulib module strnlen for portability"), \
+ strnlen (a, n))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strcspn() assumes the second argument is a list of single-byte characters.
+ Even in this simple case, it does not work with multibyte strings if the
+ locale encoding is GB18030 and one of the characters to be searched is a
+ digit. */
+# undef strcspn
+# define strcspn(s,a) \
+ (GL_LINK_WARNING ("strcspn cannot work correctly on character strings " \
+ "in multibyte locales - " \
+ "use mbscspn if you care about internationalization"), \
+ strcspn (s, a))
+#endif
+
+/* Find the first occurrence in S of any character in ACCEPT. */
+#if @GNULIB_STRPBRK@
+# if ! @HAVE_STRPBRK@
+extern char *strpbrk (char const *__s, char const *__accept);
+# endif
+# if defined GNULIB_POSIXCHECK
+/* strpbrk() assumes the second argument is a list of single-byte characters.
+ Even in this simple case, it does not work with multibyte strings if the
+ locale encoding is GB18030 and one of the characters to be searched is a
+ digit. */
+# undef strpbrk
+# define strpbrk(s,a) \
+ (GL_LINK_WARNING ("strpbrk cannot work correctly on character strings " \
+ "in multibyte locales - " \
+ "use mbspbrk if you care about internationalization"), \
+ strpbrk (s, a))
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strpbrk
+# define strpbrk(s,a) \
+ (GL_LINK_WARNING ("strpbrk is unportable - " \
+ "use gnulib module strpbrk for portability"), \
+ strpbrk (s, a))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strspn() assumes the second argument is a list of single-byte characters.
+ Even in this simple case, it cannot work with multibyte strings. */
+# undef strspn
+# define strspn(s,a) \
+ (GL_LINK_WARNING ("strspn cannot work correctly on character strings " \
+ "in multibyte locales - " \
+ "use mbsspn if you care about internationalization"), \
+ strspn (s, a))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strrchr() does not work with multibyte strings if the locale encoding is
+ GB18030 and the character to be searched is a digit. */
+# undef strrchr
+# define strrchr(s,c) \
+ (GL_LINK_WARNING ("strrchr cannot work correctly on character strings " \
+ "in some multibyte locales - " \
+ "use mbsrchr if you care about internationalization"), \
+ strrchr (s, c))
+#endif
+
+/* Search the next delimiter (char listed in DELIM) starting at *STRINGP.
+ If one is found, overwrite it with a NUL, and advance *STRINGP
+ to point to the next char after it. Otherwise, set *STRINGP to NULL.
+ If *STRINGP was already NULL, nothing happens.
+ Return the old value of *STRINGP.
+
+ This is a variant of strtok() that is multithread-safe and supports
+ empty fields.
+
+ Caveat: It modifies the original string.
+ Caveat: These functions cannot be used on constant strings.
+ Caveat: The identity of the delimiting character is lost.
+ Caveat: It doesn't work with multibyte strings unless all of the delimiter
+ characters are ASCII characters < 0x30.
+
+ See also strtok_r(). */
+#if @GNULIB_STRSEP@
+# if ! @HAVE_STRSEP@
+extern char *strsep (char **restrict __stringp, char const *restrict __delim);
+# endif
+# if defined GNULIB_POSIXCHECK
+# undef strsep
+# define strsep(s,d) \
+ (GL_LINK_WARNING ("strsep cannot work correctly on character strings " \
+ "in multibyte locales - " \
+ "use mbssep if you care about internationalization"), \
+ strsep (s, d))
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strsep
+# define strsep(s,d) \
+ (GL_LINK_WARNING ("strsep is unportable - " \
+ "use gnulib module strsep for portability"), \
+ strsep (s, d))
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strstr() does not work with multibyte strings if the locale encoding is
+ different from UTF-8:
+ POSIX says that it operates on "strings", and "string" in POSIX is defined
+ as a sequence of bytes, not of characters. */
+# undef strstr
+# define strstr(a,b) \
+ (GL_LINK_WARNING ("strstr cannot work correctly on character strings " \
+ "in most multibyte locales - " \
+ "use mbsstr if you care about internationalization"), \
+ strstr (a, b))
+#endif
+
+/* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive
+ comparison. */
+#if ! @HAVE_STRCASESTR@
+extern char *strcasestr (const char *haystack, const char *needle);
+#endif
+#if defined GNULIB_POSIXCHECK
+/* strcasestr() does not work with multibyte strings:
+ It is a glibc extension, and glibc implements it only for unibyte
+ locales. */
+# undef strcasestr
+# define strcasestr(a,b) \
+ (GL_LINK_WARNING ("strcasestr does work correctly on character strings " \
+ "in multibyte locales - " \
+ "use mbscasestr if you care about " \
+ "internationalization, or use c-strcasestr if you want " \
+ "a locale independent function"), \
+ strcasestr (a, b))
+#endif
+
+/* Parse S into tokens separated by characters in DELIM.
+ If S is NULL, the saved pointer in SAVE_PTR is used as
+ the next starting point. For example:
+ char s[] = "-abc-=-def";
+ char *sp;
+ x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def"
+ x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL
+ x = strtok_r(NULL, "=", &sp); // x = NULL
+ // s = "abc\0-def\0"
+
+ This is a variant of strtok() that is multithread-safe.
+
+ For the POSIX documentation for this function, see:
+ http://www.opengroup.org/susv3xsh/strtok.html
+
+ Caveat: It modifies the original string.
+ Caveat: These functions cannot be used on constant strings.
+ Caveat: The identity of the delimiting character is lost.
+ Caveat: It doesn't work with multibyte strings unless all of the delimiter
+ characters are ASCII characters < 0x30.
+
+ See also strsep(). */
+#if @GNULIB_STRTOK_R@
+# if ! @HAVE_DECL_STRTOK_R@
+extern char *strtok_r (char *restrict s, char const *restrict delim,
+ char **restrict save_ptr);
+# endif
+# if defined GNULIB_POSIXCHECK
+# undef strtok_r
+# define strtok_r(s,d,p) \
+ (GL_LINK_WARNING ("strtok_r cannot work correctly on character strings " \
+ "in multibyte locales - " \
+ "use mbstok_r if you care about internationalization"), \
+ strtok_r (s, d, p))
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtok_r
+# define strtok_r(s,d,p) \
+ (GL_LINK_WARNING ("strtok_r is unportable - " \
+ "use gnulib module strtok_r for portability"), \
+ strtok_r (s, d, p))
+#endif
+
+
+/* The following functions are not specified by POSIX. They are gnulib
+ extensions. */
+
+#if @GNULIB_MBSLEN@
+/* Return the number of multibyte characters in the character string STRING.
+ This considers multibyte characters, unlike strlen, which counts bytes. */
+extern size_t mbslen (const char *string);
+#endif
+
+#if @GNULIB_MBSCHR@
+/* Locate the first single-byte character C in the character string STRING,
+ and return a pointer to it. Return NULL if C is not found in STRING.
+ Unlike strchr(), this function works correctly in multibyte locales with
+ encodings such as GB18030. */
+# define mbschr rpl_mbschr /* avoid collision with HP-UX function */
+extern char * mbschr (const char *string, int c);
+#endif
+
+#if @GNULIB_MBSRCHR@
+/* Locate the last single-byte character C in the character string STRING,
+ and return a pointer to it. Return NULL if C is not found in STRING.
+ Unlike strrchr(), this function works correctly in multibyte locales with
+ encodings such as GB18030. */
+# define mbsrchr rpl_mbsrchr /* avoid collision with HP-UX function */
+extern char * mbsrchr (const char *string, int c);
+#endif
+
+#if @GNULIB_MBSSTR@
+/* Find the first occurrence of the character string NEEDLE in the character
+ string HAYSTACK. Return NULL if NEEDLE is not found in HAYSTACK.
+ Unlike strstr(), this function works correctly in multibyte locales with
+ encodings different from UTF-8. */
+extern char * mbsstr (const char *haystack, const char *needle);
+#endif
+
+#if @GNULIB_MBSCASECMP@
+/* Compare the character strings S1 and S2, ignoring case, returning less than,
+ equal to or greater than zero if S1 is lexicographically less than, equal to
+ or greater than S2.
+ Note: This function may, in multibyte locales, return 0 for strings of
+ different lengths!
+ Unlike strcasecmp(), this function works correctly in multibyte locales. */
+extern int mbscasecmp (const char *s1, const char *s2);
+#endif
+
+#if @GNULIB_MBSNCASECMP@
+/* Compare the initial segment of the character string S1 consisting of at most
+ N characters with the initial segment of the character string S2 consisting
+ of at most N characters, ignoring case, returning less than, equal to or
+ greater than zero if the initial segment of S1 is lexicographically less
+ than, equal to or greater than the initial segment of S2.
+ Note: This function may, in multibyte locales, return 0 for initial segments
+ of different lengths!
+ Unlike strncasecmp(), this function works correctly in multibyte locales.
+ But beware that N is not a byte count but a character count! */
+extern int mbsncasecmp (const char *s1, const char *s2, size_t n);
+#endif
+
+#if @GNULIB_MBSPCASECMP@
+/* Compare the initial segment of the character string STRING consisting of
+ at most mbslen (PREFIX) characters with the character string PREFIX,
+ ignoring case, returning less than, equal to or greater than zero if this
+ initial segment is lexicographically less than, equal to or greater than
+ PREFIX.
+ Note: This function may, in multibyte locales, return 0 if STRING is of
+ smaller length than PREFIX!
+ Unlike strncasecmp(), this function works correctly in multibyte
+ locales. */
+extern char * mbspcasecmp (const char *string, const char *prefix);
+#endif
+
+#if @GNULIB_MBSCASESTR@
+/* Find the first occurrence of the character string NEEDLE in the character
+ string HAYSTACK, using case-insensitive comparison.
+ Note: This function may, in multibyte locales, return success even if
+ strlen (haystack) < strlen (needle) !
+ Unlike strcasestr(), this function works correctly in multibyte locales. */
+extern char * mbscasestr (const char *haystack, const char *needle);
+#endif
+
+#if @GNULIB_MBSCSPN@
+/* Find the first occurrence in the character string STRING of any character
+ in the character string ACCEPT. Return the number of bytes from the
+ beginning of the string to this occurrence, or to the end of the string
+ if none exists.
+ Unlike strcspn(), this function works correctly in multibyte locales. */
+extern size_t mbscspn (const char *string, const char *accept);
+#endif
+
+#if @GNULIB_MBSPBRK@
+/* Find the first occurrence in the character string STRING of any character
+ in the character string ACCEPT. Return the pointer to it, or NULL if none
+ exists.
+ Unlike strpbrk(), this function works correctly in multibyte locales. */
+# define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */
+extern char * mbspbrk (const char *string, const char *accept);
+#endif
+
+#if @GNULIB_MBSSPN@
+/* Find the first occurrence in the character string STRING of any character
+ not in the character string REJECT. Return the number of bytes from the
+ beginning of the string to this occurrence, or to the end of the string
+ if none exists.
+ Unlike strspn(), this function works correctly in multibyte locales. */
+extern size_t mbsspn (const char *string, const char *reject);
+#endif
+
+#if @GNULIB_MBSSEP@
+/* Search the next delimiter (multibyte character listed in the character
+ string DELIM) starting at the character string *STRINGP.
+ If one is found, overwrite it with a NUL, and advance *STRINGP to point
+ to the next multibyte character after it. Otherwise, set *STRINGP to NULL.
+ If *STRINGP was already NULL, nothing happens.
+ Return the old value of *STRINGP.
+
+ This is a variant of mbstok_r() that supports empty fields.
+
+ Caveat: It modifies the original string.
+ Caveat: These functions cannot be used on constant strings.
+ Caveat: The identity of the delimiting character is lost.
+
+ See also mbstok_r(). */
+extern char * mbssep (char **stringp, const char *delim);
+#endif
+
+#if @GNULIB_MBSTOK_R@
+/* Parse the character string STRING into tokens separated by characters in
+ the character string DELIM.
+ If STRING is NULL, the saved pointer in SAVE_PTR is used as
+ the next starting point. For example:
+ char s[] = "-abc-=-def";
+ char *sp;
+ x = mbstok_r(s, "-", &sp); // x = "abc", sp = "=-def"
+ x = mbstok_r(NULL, "-=", &sp); // x = "def", sp = NULL
+ x = mbstok_r(NULL, "=", &sp); // x = NULL
+ // s = "abc\0-def\0"
+
+ Caveat: It modifies the original string.
+ Caveat: These functions cannot be used on constant strings.
+ Caveat: The identity of the delimiting character is lost.
+
+ See also mbssep(). */
+extern char * mbstok_r (char *string, const char *delim, char **save_ptr);
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/lib/strintcmp.c b/lib/strintcmp.c
new file mode 100644
index 0000000..f8f1801
--- /dev/null
+++ b/lib/strintcmp.c
@@ -0,0 +1,33 @@
+/* Compare integer strings.
+
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "strnumcmp-in.h"
+
+/* Compare strings A and B as integers without explicitly converting
+ them to machine numbers, to avoid overflow problems and perhaps
+ improve performance. */
+
+int
+strintcmp (char const *a, char const *b)
+{
+ return numcompare (a, b, -1, -1);
+}
diff --git a/lib/stripslash.c b/lib/stripslash.c
new file mode 100644
index 0000000..342d497
--- /dev/null
+++ b/lib/stripslash.c
@@ -0,0 +1,45 @@
+/* stripslash.c -- remove redundant trailing slashes from a file name
+
+ Copyright (C) 1990, 2001, 2003-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "dirname.h"
+
+/* Remove trailing slashes from FILE. Return true if a trailing slash
+ was removed. This is useful when using file name completion from a
+ shell that adds a "/" after directory names (such as tcsh and
+ bash), because on symlinks to directories, several system calls
+ have different semantics according to whether a trailing slash is
+ present. */
+
+bool
+strip_trailing_slashes (char *file)
+{
+ char *base = last_component (file);
+ char *base_lim;
+ bool had_slash;
+
+ /* last_component returns "" for file system roots, but we need to turn
+ `///' into `/'. */
+ if (! *base)
+ base = file;
+ base_lim = base + base_len (base);
+ had_slash = (*base_lim != '\0');
+ *base_lim = '\0';
+ return had_slash;
+}
diff --git a/lib/strndup.c b/lib/strndup.c
new file mode 100644
index 0000000..3a1b0ea
--- /dev/null
+++ b/lib/strndup.c
@@ -0,0 +1,37 @@
+/* A replacement function, for systems that lack strndup.
+
+ Copyright (C) 1996, 1997, 1998, 2001, 2002, 2003, 2005, 2006, 2007
+ Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include <string.h>
+
+#include <stdlib.h>
+
+char *
+strndup (char const *s, size_t n)
+{
+ size_t len = strnlen (s, n);
+ char *new = malloc (len + 1);
+
+ if (new == NULL)
+ return NULL;
+
+ new[len] = '\0';
+ return memcpy (new, s, len);
+}
diff --git a/lib/strnlen.c b/lib/strnlen.c
new file mode 100644
index 0000000..d346d32
--- /dev/null
+++ b/lib/strnlen.c
@@ -0,0 +1,31 @@
+/* Find the length of STRING, but scan at most MAXLEN characters.
+ Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+ Written by Simon Josefsson.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include <string.h>
+
+/* Find the length of STRING, but scan at most MAXLEN characters.
+ If no '\0' terminator is found in that many characters, return MAXLEN. */
+
+size_t
+strnlen (const char *string, size_t maxlen)
+{
+ const char *end = memchr (string, '\0', maxlen);
+ return end ? (size_t) (end - string) : maxlen;
+}
diff --git a/lib/strnlen1.c b/lib/strnlen1.c
new file mode 100644
index 0000000..422ed9e
--- /dev/null
+++ b/lib/strnlen1.c
@@ -0,0 +1,36 @@
+/* Find the length of STRING + 1, but scan at most MAXLEN bytes.
+ Copyright (C) 2005-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#include "strnlen1.h"
+
+#include <string.h>
+
+/* Find the length of STRING + 1, but scan at most MAXLEN bytes.
+ If no '\0' terminator is found in that many characters, return MAXLEN. */
+/* This is the same as strnlen (string, maxlen - 1) + 1. */
+size_t
+strnlen1 (const char *string, size_t maxlen)
+{
+ const char *end = (const char *) memchr (string, '\0', maxlen);
+ if (end != NULL)
+ return end - string + 1;
+ else
+ return maxlen;
+}
diff --git a/lib/strnlen1.h b/lib/strnlen1.h
new file mode 100644
index 0000000..7ce7d0c
--- /dev/null
+++ b/lib/strnlen1.h
@@ -0,0 +1,40 @@
+/* Find the length of STRING + 1, but scan at most MAXLEN bytes.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _STRNLEN1_H
+#define _STRNLEN1_H
+
+#include <stddef.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Find the length of STRING + 1, but scan at most MAXLEN bytes.
+ If no '\0' terminator is found in that many characters, return MAXLEN. */
+/* This is the same as strnlen (string, maxlen - 1) + 1. */
+extern size_t strnlen1 (const char *string, size_t maxlen);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _STRNLEN1_H */
diff --git a/lib/strnumcmp-in.h b/lib/strnumcmp-in.h
new file mode 100644
index 0000000..9b968cb
--- /dev/null
+++ b/lib/strnumcmp-in.h
@@ -0,0 +1,246 @@
+/* Compare numeric strings. This is an internal include file.
+
+ Copyright (C) 1988, 1991, 1992, 1993, 1995, 1996, 1998, 1999, 2000,
+ 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Mike Haertel. */
+
+#ifndef STRNUMCMP_IN_H
+# define STRNUMCMP_IN_H 1
+
+# include "strnumcmp.h"
+
+# include <stddef.h>
+
+# define NEGATION_SIGN '-'
+# define NUMERIC_ZERO '0'
+
+/* ISDIGIT differs from isdigit, as follows:
+ - Its arg may be any int or unsigned int; it need not be an unsigned char
+ or EOF.
+ - It's typically faster.
+ POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
+ isdigit unless it's important to use the locale's definition
+ of `digit' even when the host does not conform to POSIX. */
+# define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
+
+
+/* Compare strings A and B containing decimal fractions < 1.
+ DECIMAL_POINT is the decimal point. Each string
+ should begin with a decimal point followed immediately by the digits
+ of the fraction. Strings not of this form are treated as zero. */
+
+/* The goal here, is to take two numbers a and b... compare these
+ in parallel. Instead of converting each, and then comparing the
+ outcome. Most likely stopping the comparison before the conversion
+ is complete. The algorithm used, in the old "sort" utility:
+
+ Algorithm: fraccompare
+ Action : compare two decimal fractions
+ accepts : char *a, char *b
+ returns : -1 if a<b, 0 if a=b, 1 if a>b.
+ implement:
+
+ if *a == decimal_point AND *b == decimal_point
+ find first character different in a and b.
+ if both are digits, return the difference *a - *b.
+ if *a is a digit
+ skip past zeros
+ if digit return 1, else 0
+ if *b is a digit
+ skip past zeros
+ if digit return -1, else 0
+ if *a is a decimal_point
+ skip past decimal_point and zeros
+ if digit return 1, else 0
+ if *b is a decimal_point
+ skip past decimal_point and zeros
+ if digit return -1, else 0
+ return 0 */
+
+static inline int
+fraccompare (char const *a, char const *b, char decimal_point)
+{
+ if (*a == decimal_point && *b == decimal_point)
+ {
+ while (*++a == *++b)
+ if (! ISDIGIT (*a))
+ return 0;
+ if (ISDIGIT (*a) && ISDIGIT (*b))
+ return *a - *b;
+ if (ISDIGIT (*a))
+ goto a_trailing_nonzero;
+ if (ISDIGIT (*b))
+ goto b_trailing_nonzero;
+ return 0;
+ }
+ else if (*a++ == decimal_point)
+ {
+ a_trailing_nonzero:
+ while (*a == NUMERIC_ZERO)
+ a++;
+ return ISDIGIT (*a);
+ }
+ else if (*b++ == decimal_point)
+ {
+ b_trailing_nonzero:
+ while (*b == NUMERIC_ZERO)
+ b++;
+ return - ISDIGIT (*b);
+ }
+ return 0;
+}
+
+/* Compare strings A and B as numbers without explicitly converting
+ them to machine numbers, to avoid overflow problems and perhaps
+ improve performance. DECIMAL_POINT is the decimal point and
+ THOUSANDS_SEP the thousands separator. A DECIMAL_POINT of -1
+ causes comparisons to act as if there is no decimal point
+ character, and likewise for THOUSANDS_SEP. */
+
+static inline int
+numcompare (char const *a, char const *b,
+ int decimal_point, int thousands_sep)
+{
+ unsigned char tmpa = *a;
+ unsigned char tmpb = *b;
+ int tmp;
+ size_t log_a;
+ size_t log_b;
+
+ if (tmpa == NEGATION_SIGN)
+ {
+ do
+ tmpa = *++a;
+ while (tmpa == NUMERIC_ZERO || tmpa == thousands_sep);
+ if (tmpb != NEGATION_SIGN)
+ {
+ if (tmpa == decimal_point)
+ do
+ tmpa = *++a;
+ while (tmpa == NUMERIC_ZERO);
+ if (ISDIGIT (tmpa))
+ return -1;
+ while (tmpb == NUMERIC_ZERO || tmpb == thousands_sep)
+ tmpb = *++b;
+ if (tmpb == decimal_point)
+ do
+ tmpb = *++b;
+ while (tmpb == NUMERIC_ZERO);
+ return - ISDIGIT (tmpb);
+ }
+ do
+ tmpb = *++b;
+ while (tmpb == NUMERIC_ZERO || tmpb == thousands_sep);
+
+ while (tmpa == tmpb && ISDIGIT (tmpa))
+ {
+ do
+ tmpa = *++a;
+ while (tmpa == thousands_sep);
+ do
+ tmpb = *++b;
+ while (tmpb == thousands_sep);
+ }
+
+ if ((tmpa == decimal_point && !ISDIGIT (tmpb))
+ || (tmpb == decimal_point && !ISDIGIT (tmpa)))
+ return fraccompare (b, a, decimal_point);
+
+ tmp = tmpb - tmpa;
+
+ for (log_a = 0; ISDIGIT (tmpa); ++log_a)
+ do
+ tmpa = *++a;
+ while (tmpa == thousands_sep);
+
+ for (log_b = 0; ISDIGIT (tmpb); ++log_b)
+ do
+ tmpb = *++b;
+ while (tmpb == thousands_sep);
+
+ if (log_a != log_b)
+ return log_a < log_b ? 1 : -1;
+
+ if (!log_a)
+ return 0;
+
+ return tmp;
+ }
+ else if (tmpb == NEGATION_SIGN)
+ {
+ do
+ tmpb = *++b;
+ while (tmpb == NUMERIC_ZERO || tmpb == thousands_sep);
+ if (tmpb == decimal_point)
+ do
+ tmpb = *++b;
+ while (tmpb == NUMERIC_ZERO);
+ if (ISDIGIT (tmpb))
+ return 1;
+ while (tmpa == NUMERIC_ZERO || tmpa == thousands_sep)
+ tmpa = *++a;
+ if (tmpa == decimal_point)
+ do
+ tmpa = *++a;
+ while (tmpa == NUMERIC_ZERO);
+ return ISDIGIT (tmpa);
+ }
+ else
+ {
+ while (tmpa == NUMERIC_ZERO || tmpa == thousands_sep)
+ tmpa = *++a;
+ while (tmpb == NUMERIC_ZERO || tmpb == thousands_sep)
+ tmpb = *++b;
+
+ while (tmpa == tmpb && ISDIGIT (tmpa))
+ {
+ do
+ tmpa = *++a;
+ while (tmpa == thousands_sep);
+ do
+ tmpb = *++b;
+ while (tmpb == thousands_sep);
+ }
+
+ if ((tmpa == decimal_point && !ISDIGIT (tmpb))
+ || (tmpb == decimal_point && !ISDIGIT (tmpa)))
+ return fraccompare (a, b, decimal_point);
+
+ tmp = tmpa - tmpb;
+
+ for (log_a = 0; ISDIGIT (tmpa); ++log_a)
+ do
+ tmpa = *++a;
+ while (tmpa == thousands_sep);
+
+ for (log_b = 0; ISDIGIT (tmpb); ++log_b)
+ do
+ tmpb = *++b;
+ while (tmpb == thousands_sep);
+
+ if (log_a != log_b)
+ return log_a < log_b ? -1 : 1;
+
+ if (!log_a)
+ return 0;
+
+ return tmp;
+ }
+}
+
+#endif
diff --git a/lib/strnumcmp.c b/lib/strnumcmp.c
new file mode 100644
index 0000000..3afbfb1
--- /dev/null
+++ b/lib/strnumcmp.c
@@ -0,0 +1,32 @@
+/* Compare numeric strings.
+
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "strnumcmp-in.h"
+
+/* Externally-visible name for numcompare. */
+
+int
+strnumcmp (char const *a, char const *b,
+ int decimal_point, int thousands_sep)
+{
+ return numcompare (a, b, decimal_point, thousands_sep);
+}
diff --git a/lib/strnumcmp.h b/lib/strnumcmp.h
new file mode 100644
index 0000000..91ad351
--- /dev/null
+++ b/lib/strnumcmp.h
@@ -0,0 +1,2 @@
+int strintcmp (char const *, char const *);
+int strnumcmp (char const *, char const *, int, int);
diff --git a/lib/strpbrk.c b/lib/strpbrk.c
new file mode 100644
index 0000000..7843a6d
--- /dev/null
+++ b/lib/strpbrk.c
@@ -0,0 +1,42 @@
+/* Copyright (C) 1991, 1994, 2000, 2002-2003, 2006 Free Software
+ Foundation, Inc.
+
+ NOTE: The canonical source of this file is maintained with the GNU C Library.
+ Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include <stddef.h>
+#include <string.h>
+
+#undef strpbrk
+
+/* Find the first occurrence in S of any character in ACCEPT. */
+char *
+strpbrk (const char *s, const char *accept)
+{
+ while (*s != '\0')
+ {
+ const char *a = accept;
+ while (*a != '\0')
+ if (*a++ == *s)
+ return (char *) s;
+ ++s;
+ }
+
+ return NULL;
+}
diff --git a/lib/strtod.c b/lib/strtod.c
new file mode 100644
index 0000000..fdfc09f
--- /dev/null
+++ b/lib/strtod.c
@@ -0,0 +1,174 @@
+/* Copyright (C) 1991, 1992, 1997, 1999, 2003, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include <errno.h>
+
+#include <ctype.h>
+
+#include <math.h>
+
+#include <float.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* Convert NPTR to a double. If ENDPTR is not NULL, a pointer to the
+ character after the last one used in the number is put in *ENDPTR. */
+double
+strtod (const char *nptr, char **endptr)
+{
+ register const char *s;
+ short int sign;
+
+ /* The number so far. */
+ double num;
+
+ int got_dot; /* Found a decimal point. */
+ int got_digit; /* Seen any digits. */
+
+ /* The exponent of the number. */
+ long int exponent;
+
+ if (nptr == NULL)
+ {
+ errno = EINVAL;
+ goto noconv;
+ }
+
+ s = nptr;
+
+ /* Eat whitespace. */
+ while (isspace ((unsigned char) *s))
+ ++s;
+
+ /* Get the sign. */
+ sign = *s == '-' ? -1 : 1;
+ if (*s == '-' || *s == '+')
+ ++s;
+
+ num = 0.0;
+ got_dot = 0;
+ got_digit = 0;
+ exponent = 0;
+ for (;; ++s)
+ {
+ if ('0' <= *s && *s <= '9')
+ {
+ got_digit = 1;
+
+ /* Make sure that multiplication by 10 will not overflow. */
+ if (num > DBL_MAX * 0.1)
+ /* The value of the digit doesn't matter, since we have already
+ gotten as many digits as can be represented in a `double'.
+ This doesn't necessarily mean the result will overflow.
+ The exponent may reduce it to within range.
+
+ We just need to record that there was another
+ digit so that we can multiply by 10 later. */
+ ++exponent;
+ else
+ num = (num * 10.0) + (*s - '0');
+
+ /* Keep track of the number of digits after the decimal point.
+ If we just divided by 10 here, we would lose precision. */
+ if (got_dot)
+ --exponent;
+ }
+ else if (!got_dot && *s == '.')
+ /* Record that we have found the decimal point. */
+ got_dot = 1;
+ else
+ /* Any other character terminates the number. */
+ break;
+ }
+
+ if (!got_digit)
+ goto noconv;
+
+ if (tolower ((unsigned char) *s) == 'e')
+ {
+ /* Get the exponent specified after the `e' or `E'. */
+ int save = errno;
+ char *end;
+ long int exp;
+
+ errno = 0;
+ ++s;
+ exp = strtol (s, &end, 10);
+ if (errno == ERANGE)
+ {
+ /* The exponent overflowed a `long int'. It is probably a safe
+ assumption that an exponent that cannot be represented by
+ a `long int' exceeds the limits of a `double'. */
+ if (endptr != NULL)
+ *endptr = end;
+ if (exp < 0)
+ goto underflow;
+ else
+ goto overflow;
+ }
+ else if (end == s)
+ /* There was no exponent. Reset END to point to
+ the 'e' or 'E', so *ENDPTR will be set there. */
+ end = (char *) s - 1;
+ errno = save;
+ s = end;
+ exponent += exp;
+ }
+
+ if (endptr != NULL)
+ *endptr = (char *) s;
+
+ if (num == 0.0)
+ return 0.0;
+
+ /* Multiply NUM by 10 to the EXPONENT power,
+ checking for overflow and underflow. */
+
+ if (exponent < 0)
+ {
+ if (num < DBL_MIN * pow (10.0, (double) -exponent))
+ goto underflow;
+ }
+ else if (exponent > 0)
+ {
+ if (num > DBL_MAX * pow (10.0, (double) -exponent))
+ goto overflow;
+ }
+
+ num *= pow (10.0, (double) exponent);
+
+ return num * sign;
+
+overflow:
+ /* Return an overflow error. */
+ errno = ERANGE;
+ return HUGE_VAL * sign;
+
+underflow:
+ /* Return an underflow error. */
+ if (endptr != NULL)
+ *endptr = (char *) nptr;
+ errno = ERANGE;
+ return 0.0;
+
+noconv:
+ /* There was no number. */
+ if (endptr != NULL)
+ *endptr = (char *) nptr;
+ return 0.0;
+}
diff --git a/lib/strtoimax.c b/lib/strtoimax.c
new file mode 100644
index 0000000..82dc4f0
--- /dev/null
+++ b/lib/strtoimax.c
@@ -0,0 +1,76 @@
+/* Convert string representation of a number into an intmax_t value.
+
+ Copyright (C) 1999, 2001, 2002, 2003, 2004, 2006 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+/* Verify interface. */
+#include <inttypes.h>
+
+#include <stdlib.h>
+
+#include "verify.h"
+
+#ifdef UNSIGNED
+# ifndef HAVE_DECL_STRTOULL
+"this configure-time declaration test was not run"
+# endif
+# if !HAVE_DECL_STRTOULL && HAVE_UNSIGNED_LONG_LONG_INT
+unsigned long long int strtoull (char const *, char **, int);
+# endif
+
+#else
+
+# ifndef HAVE_DECL_STRTOLL
+"this configure-time declaration test was not run"
+# endif
+# if !HAVE_DECL_STRTOLL && HAVE_LONG_LONG_INT
+long long int strtoll (char const *, char **, int);
+# endif
+#endif
+
+#ifdef UNSIGNED
+# define Have_long_long HAVE_UNSIGNED_LONG_LONG_INT
+# define Int uintmax_t
+# define Unsigned unsigned
+# define strtoimax strtoumax
+# define strtol strtoul
+# define strtoll strtoull
+#else
+# define Have_long_long HAVE_LONG_LONG_INT
+# define Int intmax_t
+# define Unsigned
+#endif
+
+Int
+strtoimax (char const *ptr, char **endptr, int base)
+{
+#if Have_long_long
+ verify (sizeof (Int) == sizeof (Unsigned long int)
+ || sizeof (Int) == sizeof (Unsigned long long int));
+
+ if (sizeof (Int) != sizeof (Unsigned long int))
+ return strtoll (ptr, endptr, base);
+#else
+ verify (sizeof (Int) == sizeof (Unsigned long int));
+#endif
+
+ return strtol (ptr, endptr, base);
+}
diff --git a/lib/strtol.c b/lib/strtol.c
new file mode 100644
index 0000000..e14d3cf
--- /dev/null
+++ b/lib/strtol.c
@@ -0,0 +1,436 @@
+/* Convert string representation of a number into an integer value.
+
+ Copyright (C) 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2003, 2005,
+ 2006, 2007
+ Free Software Foundation, Inc.
+
+ NOTE: The canonical source of this file is maintained with the GNU C
+ Library. Bugs can be reported to bug-glibc@gnu.org.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifdef _LIBC
+# define USE_NUMBER_GROUPING
+#else
+# include <config.h>
+#endif
+
+#include <ctype.h>
+#include <errno.h>
+#ifndef __set_errno
+# define __set_errno(Val) errno = (Val)
+#endif
+
+#include <limits.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef USE_NUMBER_GROUPING
+# include "../locale/localeinfo.h"
+#endif
+
+/* Nonzero if we are defining `strtoul' or `strtoull', operating on
+ unsigned integers. */
+#ifndef UNSIGNED
+# define UNSIGNED 0
+# define INT LONG int
+#else
+# define INT unsigned LONG int
+#endif
+
+/* Determine the name. */
+#ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# if UNSIGNED
+# ifdef USE_WIDE_CHAR
+# ifdef QUAD
+# define strtol __wcstoull_l
+# else
+# define strtol __wcstoul_l
+# endif
+# else
+# ifdef QUAD
+# define strtol __strtoull_l
+# else
+# define strtol __strtoul_l
+# endif
+# endif
+# else
+# ifdef USE_WIDE_CHAR
+# ifdef QUAD
+# define strtol __wcstoll_l
+# else
+# define strtol __wcstol_l
+# endif
+# else
+# ifdef QUAD
+# define strtol __strtoll_l
+# else
+# define strtol __strtol_l
+# endif
+# endif
+# endif
+#else
+# if UNSIGNED
+# ifdef USE_WIDE_CHAR
+# ifdef QUAD
+# define strtol wcstoull
+# else
+# define strtol wcstoul
+# endif
+# else
+# ifdef QUAD
+# define strtol strtoull
+# else
+# define strtol strtoul
+# endif
+# endif
+# else
+# ifdef USE_WIDE_CHAR
+# ifdef QUAD
+# define strtol wcstoll
+# else
+# define strtol wcstol
+# endif
+# else
+# ifdef QUAD
+# define strtol strtoll
+# endif
+# endif
+# endif
+#endif
+
+/* If QUAD is defined, we are defining `strtoll' or `strtoull',
+ operating on `long long int's. */
+#ifdef QUAD
+# define LONG long long
+# define STRTOL_LONG_MIN LONG_LONG_MIN
+# define STRTOL_LONG_MAX LONG_LONG_MAX
+# define STRTOL_ULONG_MAX ULONG_LONG_MAX
+
+/* The extra casts in the following macros work around compiler bugs,
+ e.g., in Cray C 5.0.3.0. */
+
+/* True if negative values of the signed integer type T use two's
+ complement, ones' complement, or signed magnitude representation,
+ respectively. Much GNU code assumes two's complement, but some
+ people like to be portable to all possible C hosts. */
+# define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
+# define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0)
+# define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1)
+
+/* True if the arithmetic type T is signed. */
+# define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+
+/* The maximum and minimum values for the integer type T. These
+ macros have undefined behavior if T is signed and has padding bits.
+ If this is a problem for you, please let us know how to fix it for
+ your host. */
+# define TYPE_MINIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) 0 \
+ : TYPE_SIGNED_MAGNITUDE (t) \
+ ? ~ (t) 0 \
+ : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
+# define TYPE_MAXIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) -1 \
+ : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+
+# ifndef ULONG_LONG_MAX
+# define ULONG_LONG_MAX TYPE_MAXIMUM (unsigned long long)
+# endif
+# ifndef LONG_LONG_MAX
+# define LONG_LONG_MAX TYPE_MAXIMUM (long long int)
+# endif
+# ifndef LONG_LONG_MIN
+# define LONG_LONG_MIN TYPE_MINIMUM (long long int)
+# endif
+
+# if __GNUC__ == 2 && __GNUC_MINOR__ < 7
+ /* Work around gcc bug with using this constant. */
+ static const unsigned long long int maxquad = ULONG_LONG_MAX;
+# undef STRTOL_ULONG_MAX
+# define STRTOL_ULONG_MAX maxquad
+# endif
+#else
+# define LONG long
+# define STRTOL_LONG_MIN LONG_MIN
+# define STRTOL_LONG_MAX LONG_MAX
+# define STRTOL_ULONG_MAX ULONG_MAX
+#endif
+
+
+/* We use this code also for the extended locale handling where the
+ function gets as an additional argument the locale which has to be
+ used. To access the values we have to redefine the _NL_CURRENT
+ macro. */
+#ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# undef _NL_CURRENT
+# define _NL_CURRENT(category, item) \
+ (current->values[_NL_ITEM_INDEX (item)].string)
+# define LOCALE_PARAM , loc
+# define LOCALE_PARAM_PROTO , __locale_t loc
+#else
+# define LOCALE_PARAM
+# define LOCALE_PARAM_PROTO
+#endif
+
+#include <wchar.h>
+
+#ifdef USE_WIDE_CHAR
+# include <wctype.h>
+# define L_(Ch) L##Ch
+# define UCHAR_TYPE wint_t
+# define STRING_TYPE wchar_t
+# ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# define ISSPACE(Ch) __iswspace_l ((Ch), loc)
+# define ISALPHA(Ch) __iswalpha_l ((Ch), loc)
+# define TOUPPER(Ch) __towupper_l ((Ch), loc)
+# else
+# define ISSPACE(Ch) iswspace (Ch)
+# define ISALPHA(Ch) iswalpha (Ch)
+# define TOUPPER(Ch) towupper (Ch)
+# endif
+#else
+# define L_(Ch) Ch
+# define UCHAR_TYPE unsigned char
+# define STRING_TYPE char
+# ifdef USE_IN_EXTENDED_LOCALE_MODEL
+# define ISSPACE(Ch) __isspace_l ((Ch), loc)
+# define ISALPHA(Ch) __isalpha_l ((Ch), loc)
+# define TOUPPER(Ch) __toupper_l ((Ch), loc)
+# else
+# define ISSPACE(Ch) isspace (Ch)
+# define ISALPHA(Ch) isalpha (Ch)
+# define TOUPPER(Ch) toupper (Ch)
+# endif
+#endif
+
+#define INTERNAL(X) INTERNAL1(X)
+#define INTERNAL1(X) __##X##_internal
+#define WEAKNAME(X) WEAKNAME1(X)
+
+#ifdef USE_NUMBER_GROUPING
+/* This file defines a function to check for correct grouping. */
+# include "grouping.h"
+#endif
+
+
+
+/* Convert NPTR to an `unsigned long int' or `long int' in base BASE.
+ If BASE is 0 the base is determined by the presence of a leading
+ zero, indicating octal or a leading "0x" or "0X", indicating hexadecimal.
+ If BASE is < 2 or > 36, it is reset to 10.
+ If ENDPTR is not NULL, a pointer to the character after the last
+ one converted is stored in *ENDPTR. */
+
+INT
+INTERNAL (strtol) (const STRING_TYPE *nptr, STRING_TYPE **endptr,
+ int base, int group LOCALE_PARAM_PROTO)
+{
+ int negative;
+ register unsigned LONG int cutoff;
+ register unsigned int cutlim;
+ register unsigned LONG int i;
+ register const STRING_TYPE *s;
+ register UCHAR_TYPE c;
+ const STRING_TYPE *save, *end;
+ int overflow;
+
+#ifdef USE_NUMBER_GROUPING
+# ifdef USE_IN_EXTENDED_LOCALE_MODEL
+ struct locale_data *current = loc->__locales[LC_NUMERIC];
+# endif
+ /* The thousands character of the current locale. */
+ wchar_t thousands = L'\0';
+ /* The numeric grouping specification of the current locale,
+ in the format described in <locale.h>. */
+ const char *grouping;
+
+ if (group)
+ {
+ grouping = _NL_CURRENT (LC_NUMERIC, GROUPING);
+ if (*grouping <= 0 || *grouping == CHAR_MAX)
+ grouping = NULL;
+ else
+ {
+ /* Figure out the thousands separator character. */
+# if defined _LIBC || defined _HAVE_BTOWC
+ thousands = __btowc (*_NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP));
+ if (thousands == WEOF)
+ thousands = L'\0';
+# endif
+ if (thousands == L'\0')
+ grouping = NULL;
+ }
+ }
+ else
+ grouping = NULL;
+#endif
+
+ if (base < 0 || base == 1 || base > 36)
+ {
+ __set_errno (EINVAL);
+ return 0;
+ }
+
+ save = s = nptr;
+
+ /* Skip white space. */
+ while (ISSPACE (*s))
+ ++s;
+ if (*s == L_('\0'))
+ goto noconv;
+
+ /* Check for a sign. */
+ if (*s == L_('-'))
+ {
+ negative = 1;
+ ++s;
+ }
+ else if (*s == L_('+'))
+ {
+ negative = 0;
+ ++s;
+ }
+ else
+ negative = 0;
+
+ /* Recognize number prefix and if BASE is zero, figure it out ourselves. */
+ if (*s == L_('0'))
+ {
+ if ((base == 0 || base == 16) && TOUPPER (s[1]) == L_('X'))
+ {
+ s += 2;
+ base = 16;
+ }
+ else if (base == 0)
+ base = 8;
+ }
+ else if (base == 0)
+ base = 10;
+
+ /* Save the pointer so we can check later if anything happened. */
+ save = s;
+
+#ifdef USE_NUMBER_GROUPING
+ if (group)
+ {
+ /* Find the end of the digit string and check its grouping. */
+ end = s;
+ for (c = *end; c != L_('\0'); c = *++end)
+ if ((wchar_t) c != thousands
+ && ((wchar_t) c < L_('0') || (wchar_t) c > L_('9'))
+ && (!ISALPHA (c) || (int) (TOUPPER (c) - L_('A') + 10) >= base))
+ break;
+ if (*s == thousands)
+ end = s;
+ else
+ end = correctly_grouped_prefix (s, end, thousands, grouping);
+ }
+ else
+#endif
+ end = NULL;
+
+ cutoff = STRTOL_ULONG_MAX / (unsigned LONG int) base;
+ cutlim = STRTOL_ULONG_MAX % (unsigned LONG int) base;
+
+ overflow = 0;
+ i = 0;
+ for (c = *s; c != L_('\0'); c = *++s)
+ {
+ if (s == end)
+ break;
+ if (c >= L_('0') && c <= L_('9'))
+ c -= L_('0');
+ else if (ISALPHA (c))
+ c = TOUPPER (c) - L_('A') + 10;
+ else
+ break;
+ if ((int) c >= base)
+ break;
+ /* Check for overflow. */
+ if (i > cutoff || (i == cutoff && c > cutlim))
+ overflow = 1;
+ else
+ {
+ i *= (unsigned LONG int) base;
+ i += c;
+ }
+ }
+
+ /* Check if anything actually happened. */
+ if (s == save)
+ goto noconv;
+
+ /* Store in ENDPTR the address of one character
+ past the last character we converted. */
+ if (endptr != NULL)
+ *endptr = (STRING_TYPE *) s;
+
+#if !UNSIGNED
+ /* Check for a value that is within the range of
+ `unsigned LONG int', but outside the range of `LONG int'. */
+ if (overflow == 0
+ && i > (negative
+ ? -((unsigned LONG int) (STRTOL_LONG_MIN + 1)) + 1
+ : (unsigned LONG int) STRTOL_LONG_MAX))
+ overflow = 1;
+#endif
+
+ if (overflow)
+ {
+ __set_errno (ERANGE);
+#if UNSIGNED
+ return STRTOL_ULONG_MAX;
+#else
+ return negative ? STRTOL_LONG_MIN : STRTOL_LONG_MAX;
+#endif
+ }
+
+ /* Return the result of the appropriate sign. */
+ return negative ? -i : i;
+
+noconv:
+ /* We must handle a special case here: the base is 0 or 16 and the
+ first two characters are '0' and 'x', but the rest are no
+ hexadecimal digits. This is no error case. We return 0 and
+ ENDPTR points to the `x`. */
+ if (endptr != NULL)
+ {
+ if (save - nptr >= 2 && TOUPPER (save[-1]) == L_('X')
+ && save[-2] == L_('0'))
+ *endptr = (STRING_TYPE *) &save[-1];
+ else
+ /* There was no number to convert. */
+ *endptr = (STRING_TYPE *) nptr;
+ }
+
+ return 0L;
+}
+
+/* External user entry point. */
+
+
+INT
+#ifdef weak_function
+weak_function
+#endif
+strtol (const STRING_TYPE *nptr, STRING_TYPE **endptr,
+ int base LOCALE_PARAM_PROTO)
+{
+ return INTERNAL (strtol) (nptr, endptr, base, 0 LOCALE_PARAM);
+}
diff --git a/lib/strtoll.c b/lib/strtoll.c
new file mode 100644
index 0000000..f61f5ad
--- /dev/null
+++ b/lib/strtoll.c
@@ -0,0 +1,33 @@
+/* Function to parse a `long long int' from text.
+ Copyright (C) 1995, 1996, 1997, 1999, 2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define QUAD 1
+
+#include <strtol.c>
+
+#ifdef _LIBC
+# ifdef SHARED
+# include <shlib-compat.h>
+
+# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
+compat_symbol (libc, __strtoll_internal, __strtoq_internal, GLIBC_2_0);
+# endif
+
+# endif
+weak_alias (strtoll, strtoq)
+#endif
diff --git a/lib/strtoul.c b/lib/strtoul.c
new file mode 100644
index 0000000..79ceed2
--- /dev/null
+++ b/lib/strtoul.c
@@ -0,0 +1,20 @@
+/* Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define UNSIGNED 1
+
+#include "strtol.c"
diff --git a/lib/strtoull.c b/lib/strtoull.c
new file mode 100644
index 0000000..6186bfb
--- /dev/null
+++ b/lib/strtoull.c
@@ -0,0 +1,27 @@
+/* Function to parse an `unsigned long long int' from text.
+ Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
+ NOTE: The canonical source of this file is maintained with the GNU C
+ Library. Bugs can be reported to bug-glibc@gnu.org.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define QUAD 1
+
+#include "strtoul.c"
+
+#ifdef _LIBC
+strong_alias (__strtoull_internal, __strtouq_internal)
+weak_alias (strtoull, strtouq)
+#endif
diff --git a/lib/strtoumax.c b/lib/strtoumax.c
new file mode 100644
index 0000000..dc395d6
--- /dev/null
+++ b/lib/strtoumax.c
@@ -0,0 +1,2 @@
+#define UNSIGNED 1
+#include "strtoimax.c"
diff --git a/lib/strverscmp.c b/lib/strverscmp.c
new file mode 100644
index 0000000..f077651
--- /dev/null
+++ b/lib/strverscmp.c
@@ -0,0 +1,131 @@
+/* Compare strings while treating digits characters numerically.
+ Copyright (C) 1997, 2000, 2002, 2004, 2006 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jean-François Bignolles <bignolle@ecoledoc.ibp.fr>, 1997.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#if !_LIBC
+# include <config.h>
+#endif
+
+#include <string.h>
+#include <ctype.h>
+
+/* states: S_N: normal, S_I: comparing integral part, S_F: comparing
+ fractional parts, S_Z: idem but with leading Zeroes only */
+#define S_N 0x0
+#define S_I 0x4
+#define S_F 0x8
+#define S_Z 0xC
+
+/* result_type: CMP: return diff; LEN: compare using len_diff/diff */
+#define CMP 2
+#define LEN 3
+
+
+/* ISDIGIT differs from isdigit, as follows:
+ - Its arg may be any int or unsigned int; it need not be an unsigned char
+ or EOF.
+ - It's typically faster.
+ POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
+ isdigit unless it's important to use the locale's definition
+ of `digit' even when the host does not conform to POSIX. */
+#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
+
+#undef __strverscmp
+#undef strverscmp
+
+#ifndef weak_alias
+# define __strverscmp strverscmp
+#endif
+
+/* Compare S1 and S2 as strings holding indices/version numbers,
+ returning less than, equal to or greater than zero if S1 is less than,
+ equal to or greater than S2 (for more info, see the texinfo doc).
+*/
+
+int
+__strverscmp (const char *s1, const char *s2)
+{
+ const unsigned char *p1 = (const unsigned char *) s1;
+ const unsigned char *p2 = (const unsigned char *) s2;
+ unsigned char c1, c2;
+ int state;
+ int diff;
+
+ /* Symbol(s) 0 [1-9] others (padding)
+ Transition (10) 0 (01) d (00) x (11) - */
+ static const unsigned int next_state[] =
+ {
+ /* state x d 0 - */
+ /* S_N */ S_N, S_I, S_Z, S_N,
+ /* S_I */ S_N, S_I, S_I, S_I,
+ /* S_F */ S_N, S_F, S_F, S_F,
+ /* S_Z */ S_N, S_F, S_Z, S_Z
+ };
+
+ static const int result_type[] =
+ {
+ /* state x/x x/d x/0 x/- d/x d/d d/0 d/-
+ 0/x 0/d 0/0 0/- -/x -/d -/0 -/- */
+
+ /* S_N */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,
+ CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,
+ /* S_I */ CMP, -1, -1, CMP, 1, LEN, LEN, CMP,
+ 1, LEN, LEN, CMP, CMP, CMP, CMP, CMP,
+ /* S_F */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,
+ CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,
+ /* S_Z */ CMP, 1, 1, CMP, -1, CMP, CMP, CMP,
+ -1, CMP, CMP, CMP
+ };
+
+ if (p1 == p2)
+ return 0;
+
+ c1 = *p1++;
+ c2 = *p2++;
+ /* Hint: '0' is a digit too. */
+ state = S_N | ((c1 == '0') + (ISDIGIT (c1) != 0));
+
+ while ((diff = c1 - c2) == 0 && c1 != '\0')
+ {
+ state = next_state[state];
+ c1 = *p1++;
+ c2 = *p2++;
+ state |= (c1 == '0') + (ISDIGIT (c1) != 0);
+ }
+
+ state = result_type[state << 2 | ((c2 == '0') + (ISDIGIT (c2) != 0))];
+
+ switch (state)
+ {
+ case CMP:
+ return diff;
+
+ case LEN:
+ while (ISDIGIT (*p1++))
+ if (!ISDIGIT (*p2++))
+ return 1;
+
+ return ISDIGIT (*p2) ? -1 : diff;
+
+ default:
+ return state;
+ }
+}
+#ifdef weak_alias
+weak_alias (__strverscmp, strverscmp)
+#endif
diff --git a/lib/strverscmp.h b/lib/strverscmp.h
new file mode 100644
index 0000000..7edeac5
--- /dev/null
+++ b/lib/strverscmp.h
@@ -0,0 +1,24 @@
+/* Compare strings while treating digits characters numerically.
+
+ Copyright (C) 1997, 2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef STRVERSCMP_H_
+# define STRVERSCMP_H_
+
+int strverscmp (const char *, const char *);
+
+#endif /* not STRVERSCMP_H_ */
diff --git a/lib/sys_time_.h b/lib/sys_time_.h
new file mode 100644
index 0000000..46cdb70
--- /dev/null
+++ b/lib/sys_time_.h
@@ -0,0 +1,44 @@
+/* Provide a more complete sys/time.h.
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#ifndef _gl_SYS_TIME_H
+#define _gl_SYS_TIME_H
+
+#if @HAVE_SYS_TIME_H@
+# include @ABSOLUTE_SYS_TIME_H@
+#else
+# include <time.h>
+#endif
+
+#if ! @HAVE_STRUCT_TIMEVAL@
+struct timeval
+{
+ time_t tv_sec;
+ long int tv_usec;
+};
+#endif
+
+#if @REPLACE_GETTIMEOFDAY@
+# undef gettimeofday
+# define gettimeofday rpl_gettimeofday
+int gettimeofday (struct timeval *restrict, void *restrict);
+#endif
+
+#endif /* _gl_SYS_TIME_H */
diff --git a/lib/t-fpending.c b/lib/t-fpending.c
new file mode 100644
index 0000000..74ecae1
--- /dev/null
+++ b/lib/t-fpending.c
@@ -0,0 +1,42 @@
+/* Ensure that __fpending works.
+
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written by Jim Meyering. */
+
+#include <config.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "__fpending.h"
+
+int
+main ()
+{
+ if (__fpending (stdout) != 0)
+ abort ();
+
+ fputs ("foo", stdout);
+ if (__fpending (stdout) != 3)
+ abort ();
+
+ fflush (stdout);
+ if (__fpending (stdout) != 0)
+ abort ();
+
+ exit (0);
+}
diff --git a/lib/tempname.c b/lib/tempname.c
new file mode 100644
index 0000000..e213600
--- /dev/null
+++ b/lib/tempname.c
@@ -0,0 +1,315 @@
+/* tempname.c - generate the name of a temporary file.
+
+ Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+ 2000, 2001, 2002, 2003, 2005, 2006, 2007 Free Software Foundation,
+ Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Extracted from glibc sysdeps/posix/tempname.c. See also tmpdir.c. */
+
+#if !_LIBC
+# include <config.h>
+# include "tempname.h"
+#endif
+
+#include <sys/types.h>
+#include <assert.h>
+
+#include <errno.h>
+#ifndef __set_errno
+# define __set_errno(Val) errno = (Val)
+#endif
+
+#include <stdio.h>
+#ifndef P_tmpdir
+# define P_tmpdir "/tmp"
+#endif
+#ifndef TMP_MAX
+# define TMP_MAX 238328
+#endif
+#ifndef __GT_FILE
+# define __GT_FILE 0
+# define __GT_BIGFILE 1
+# define __GT_DIR 2
+# define __GT_NOCREATE 3
+#endif
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <fcntl.h>
+#include <sys/time.h>
+#include <stdint.h>
+#include <unistd.h>
+
+#include <sys/stat.h>
+
+#if _LIBC
+# define struct_stat64 struct stat64
+# define small_open __open
+# define large_open __open64
+#else
+# define struct_stat64 struct stat
+# define small_open open
+# define large_open open
+# define __gen_tempname gen_tempname
+# define __getpid getpid
+# define __gettimeofday gettimeofday
+# define __mkdir mkdir
+# define __lxstat64(version, file, buf) lstat (file, buf)
+# define __xstat64(version, file, buf) stat (file, buf)
+#endif
+
+#if ! (HAVE___SECURE_GETENV || _LIBC)
+# define __secure_getenv getenv
+#endif
+
+#ifdef _LIBC
+# include <hp-timing.h>
+# if HP_TIMING_AVAIL
+# define RANDOM_BITS(Var) \
+ if (__builtin_expect (value == UINT64_C (0), 0)) \
+ { \
+ /* If this is the first time this function is used initialize \
+ the variable we accumulate the value in to some somewhat \
+ random value. If we'd not do this programs at startup time \
+ might have a reduced set of possible names, at least on slow \
+ machines. */ \
+ struct timeval tv; \
+ __gettimeofday (&tv, NULL); \
+ value = ((uint64_t) tv.tv_usec << 16) ^ tv.tv_sec; \
+ } \
+ HP_TIMING_NOW (Var)
+# endif
+#endif
+
+/* Use the widest available unsigned type if uint64_t is not
+ available. The algorithm below extracts a number less than 62**6
+ (approximately 2**35.725) from uint64_t, so ancient hosts where
+ uintmax_t is only 32 bits lose about 3.725 bits of randomness,
+ which is better than not having mkstemp at all. */
+#if !defined UINT64_MAX && !defined uint64_t
+# define uint64_t uintmax_t
+#endif
+
+#if _LIBC
+/* Return nonzero if DIR is an existent directory. */
+static int
+direxists (const char *dir)
+{
+ struct_stat64 buf;
+ return __xstat64 (_STAT_VER, dir, &buf) == 0 && S_ISDIR (buf.st_mode);
+}
+
+/* Path search algorithm, for tmpnam, tmpfile, etc. If DIR is
+ non-null and exists, uses it; otherwise uses the first of $TMPDIR,
+ P_tmpdir, /tmp that exists. Copies into TMPL a template suitable
+ for use with mk[s]temp. Will fail (-1) if DIR is non-null and
+ doesn't exist, none of the searched dirs exists, or there's not
+ enough space in TMPL. */
+int
+__path_search (char *tmpl, size_t tmpl_len, const char *dir, const char *pfx,
+ int try_tmpdir)
+{
+ const char *d;
+ size_t dlen, plen;
+
+ if (!pfx || !pfx[0])
+ {
+ pfx = "file";
+ plen = 4;
+ }
+ else
+ {
+ plen = strlen (pfx);
+ if (plen > 5)
+ plen = 5;
+ }
+
+ if (try_tmpdir)
+ {
+ d = __secure_getenv ("TMPDIR");
+ if (d != NULL && direxists (d))
+ dir = d;
+ else if (dir != NULL && direxists (dir))
+ /* nothing */ ;
+ else
+ dir = NULL;
+ }
+ if (dir == NULL)
+ {
+ if (direxists (P_tmpdir))
+ dir = P_tmpdir;
+ else if (strcmp (P_tmpdir, "/tmp") != 0 && direxists ("/tmp"))
+ dir = "/tmp";
+ else
+ {
+ __set_errno (ENOENT);
+ return -1;
+ }
+ }
+
+ dlen = strlen (dir);
+ while (dlen > 1 && dir[dlen - 1] == '/')
+ dlen--; /* remove trailing slashes */
+
+ /* check we have room for "${dir}/${pfx}XXXXXX\0" */
+ if (tmpl_len < dlen + 1 + plen + 6 + 1)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ sprintf (tmpl, "%.*s/%.*sXXXXXX", (int) dlen, dir, (int) plen, pfx);
+ return 0;
+}
+#endif /* _LIBC */
+
+/* These are the characters used in temporary file names. */
+static const char letters[] =
+"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+
+/* Generate a temporary file name based on TMPL. TMPL must match the
+ rules for mk[s]temp (i.e. end in "XXXXXX"). The name constructed
+ does not exist at the time of the call to __gen_tempname. TMPL is
+ overwritten with the result.
+
+ KIND may be one of:
+ __GT_NOCREATE: simply verify that the name does not exist
+ at the time of the call.
+ __GT_FILE: create the file using open(O_CREAT|O_EXCL)
+ and return a read-write fd. The file is mode 0600.
+ __GT_BIGFILE: same as __GT_FILE but use open64().
+ __GT_DIR: create a directory, which will be mode 0700.
+
+ We use a clever algorithm to get hard-to-predict names. */
+int
+__gen_tempname (char *tmpl, int kind)
+{
+ int len;
+ char *XXXXXX;
+ static uint64_t value;
+ uint64_t random_time_bits;
+ unsigned int count;
+ int fd = -1;
+ int save_errno = errno;
+ struct_stat64 st;
+
+ /* A lower bound on the number of temporary files to attempt to
+ generate. The maximum total number of temporary file names that
+ can exist for a given template is 62**6. It should never be
+ necessary to try all these combinations. Instead if a reasonable
+ number of names is tried (we define reasonable as 62**3) fail to
+ give the system administrator the chance to remove the problems. */
+#define ATTEMPTS_MIN (62 * 62 * 62)
+
+ /* The number of times to attempt to generate a temporary file. To
+ conform to POSIX, this must be no smaller than TMP_MAX. */
+#if ATTEMPTS_MIN < TMP_MAX
+ unsigned int attempts = TMP_MAX;
+#else
+ unsigned int attempts = ATTEMPTS_MIN;
+#endif
+
+ len = strlen (tmpl);
+ if (len < 6 || strcmp (&tmpl[len - 6], "XXXXXX"))
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ /* This is where the Xs start. */
+ XXXXXX = &tmpl[len - 6];
+
+ /* Get some more or less random data. */
+#ifdef RANDOM_BITS
+ RANDOM_BITS (random_time_bits);
+#else
+ {
+ struct timeval tv;
+ __gettimeofday (&tv, NULL);
+ random_time_bits = ((uint64_t) tv.tv_usec << 16) ^ tv.tv_sec;
+ }
+#endif
+ value += random_time_bits ^ __getpid ();
+
+ for (count = 0; count < attempts; value += 7777, ++count)
+ {
+ uint64_t v = value;
+
+ /* Fill in the random bits. */
+ XXXXXX[0] = letters[v % 62];
+ v /= 62;
+ XXXXXX[1] = letters[v % 62];
+ v /= 62;
+ XXXXXX[2] = letters[v % 62];
+ v /= 62;
+ XXXXXX[3] = letters[v % 62];
+ v /= 62;
+ XXXXXX[4] = letters[v % 62];
+ v /= 62;
+ XXXXXX[5] = letters[v % 62];
+
+ switch (kind)
+ {
+ case __GT_FILE:
+ fd = small_open (tmpl, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
+ break;
+
+ case __GT_BIGFILE:
+ fd = large_open (tmpl, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
+ break;
+
+ case __GT_DIR:
+ fd = __mkdir (tmpl, S_IRUSR | S_IWUSR | S_IXUSR);
+ break;
+
+ case __GT_NOCREATE:
+ /* This case is backward from the other three. __gen_tempname
+ succeeds if __xstat fails because the name does not exist.
+ Note the continue to bypass the common logic at the bottom
+ of the loop. */
+ if (__lxstat64 (_STAT_VER, tmpl, &st) < 0)
+ {
+ if (errno == ENOENT)
+ {
+ __set_errno (save_errno);
+ return 0;
+ }
+ else
+ /* Give up now. */
+ return -1;
+ }
+ continue;
+
+ default:
+ assert (! "invalid KIND in __gen_tempname");
+ }
+
+ if (fd >= 0)
+ {
+ __set_errno (save_errno);
+ return fd;
+ }
+ else if (errno != EEXIST)
+ return -1;
+ }
+
+ /* We got out of the loop because we ran out of combinations to try. */
+ __set_errno (EEXIST);
+ return -1;
+}
diff --git a/lib/tempname.h b/lib/tempname.h
new file mode 100644
index 0000000..c51fa69
--- /dev/null
+++ b/lib/tempname.h
@@ -0,0 +1,40 @@
+/* Create a temporary file or directory.
+
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* header written by Eric Blake */
+
+/* In gnulib, always prefer large files. GT_FILE maps to
+ __GT_BIGFILE, not __GT_FILE, for a reason. */
+#define GT_FILE 1
+#define GT_DIR 2
+#define GT_NOCREATE 3
+
+/* Generate a temporary file name based on TMPL. TMPL must match the
+ rules for mk[s]temp (i.e. end in "XXXXXX"). The name constructed
+ does not exist at the time of the call to gen_tempname. TMPL is
+ overwritten with the result.
+
+ KIND may be one of:
+ GT_NOCREATE: simply verify that the name does not exist
+ at the time of the call.
+ GT_FILE: create a large file using open(O_CREAT|O_EXCL)
+ and return a read-write fd. The file is mode 0600.
+ GT_DIR: create a directory, which will be mode 0700.
+
+ We use a clever algorithm to get hard-to-predict names. */
+extern int gen_tempname (char *tmpl, int kind);
diff --git a/lib/time_.h b/lib/time_.h
new file mode 100644
index 0000000..5467d3d
--- /dev/null
+++ b/lib/time_.h
@@ -0,0 +1,107 @@
+/* A more-standard <time.h>.
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Don't get in the way of glibc when it includes time.h merely to
+ declare a few standard symbols, rather than to declare all the
+ symbols. */
+#if defined __need_time_t || defined __need_clock_t || defined __need_timespec
+# include @ABSOLUTE_TIME_H@
+
+#elif ! defined _GL_TIME_H
+# define _GL_TIME_H
+# include @ABSOLUTE_TIME_H@
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+/* Some systems don't define struct timespec (e.g., AIX 4.1, Ultrix 4.3).
+ Or they define it with the wrong member names or define it in <sys/time.h>
+ (e.g., FreeBSD circa 1997). */
+# if ! @TIME_H_DEFINES_STRUCT_TIMESPEC@
+# if @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+# include <sys/time.h>
+# else
+# undef timespec
+# define timespec rpl_timespec
+struct timespec
+{
+ time_t tv_sec;
+ long int tv_nsec;
+};
+# endif
+# endif
+
+/* Sleep for at least RQTP seconds unless interrupted, If interrupted,
+ return -1 and store the remaining time into RMTP. See
+ <http://www.opengroup.org/susv3xsh/nanosleep.html>. */
+# if @REPLACE_NANOSLEEP@
+# define nanosleep rpl_nanosleep
+int nanosleep (struct timespec const *__rqtp, struct timespec *__rmtp);
+# endif
+
+/* Convert TIMER to RESULT, assuming local time and UTC respectively. See
+ <http://www.opengroup.org/susv3xsh/localtime_r.html> and
+ <http://www.opengroup.org/susv3xsh/gmtime_r.html>. */
+# if @REPLACE_LOCALTIME_R@
+# undef localtime_r
+# define localtime_r rpl_localtime_r
+# undef gmtime_r
+# define gmtime_r rpl_gmtime_r
+struct tm *localtime_r (time_t const *restrict __timer,
+ struct tm *restrict __result);
+struct tm *gmtime_r (time_t const *restrict __timer,
+ struct tm *restrict __result);
+# endif
+
+/* Parse BUF as a time stamp, assuming FORMAT specifies its layout, and store
+ the resulting broken-down time into TM. See
+ <http://www.opengroup.org/susv3xsh/strptime.html>. */
+# if @REPLACE_STRPTIME@
+# undef strptime
+# define strptime rpl_strptime
+char *strptime (char const *restrict __buf, char const *restrict __format,
+ struct tm *restrict __tm);
+# endif
+
+/* Convert TM to a time_t value, assuming UTC. */
+# if @REPLACE_TIMEGM@
+# undef timegm
+# define timegm rpl_timegm
+time_t timegm (struct tm *__tm);
+#endif
+
+/* Encourage applications to avoid unsafe functions that can overrun
+ buffers when given outlandish struct tm values. Portable
+ applications should use strftime (or even sprintf) instead. */
+# if GNULIB_PORTCHECK
+# undef asctime
+# define asctime eschew_asctime
+# undef asctime_r
+# define asctime_r eschew_asctime_r
+# undef ctime
+# define ctime eschew_ctime
+# undef ctime_r
+# define ctime_r eschew_ctime_r
+# endif
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif
diff --git a/lib/time_r.c b/lib/time_r.c
new file mode 100644
index 0000000..2b72692
--- /dev/null
+++ b/lib/time_r.c
@@ -0,0 +1,47 @@
+/* Reentrant time functions like localtime_r.
+
+ Copyright (C) 2003, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include <time.h>
+
+#include <string.h>
+
+static struct tm *
+copy_tm_result (struct tm *dest, struct tm const *src)
+{
+ if (! src)
+ return 0;
+ *dest = *src;
+ return dest;
+}
+
+
+struct tm *
+gmtime_r (time_t const * restrict t, struct tm * restrict tp)
+{
+ return copy_tm_result (tp, gmtime (t));
+}
+
+struct tm *
+localtime_r (time_t const * restrict t, struct tm * restrict tp)
+{
+ return copy_tm_result (tp, localtime (t));
+}
diff --git a/lib/timespec.h b/lib/timespec.h
new file mode 100644
index 0000000..cce2d66
--- /dev/null
+++ b/lib/timespec.h
@@ -0,0 +1,37 @@
+/* timespec -- System time interface
+
+ Copyright (C) 2000, 2002, 2004, 2005, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#if ! defined TIMESPEC_H
+# define TIMESPEC_H
+
+# include <time.h>
+
+/* Return negative, zero, positive if A < B, A == B, A > B, respectively.
+ Assume the nanosecond components are in range, or close to it. */
+static inline int
+timespec_cmp (struct timespec a, struct timespec b)
+{
+ return (a.tv_sec < b.tv_sec ? -1
+ : a.tv_sec > b.tv_sec ? 1
+ : a.tv_nsec - b.tv_nsec);
+}
+
+void gettime (struct timespec *);
+int settime (struct timespec const *);
+
+#endif
diff --git a/lib/u64.h b/lib/u64.h
new file mode 100644
index 0000000..1d581ec
--- /dev/null
+++ b/lib/u64.h
@@ -0,0 +1,160 @@
+/* uint64_t-like operations that work even on hosts lacking uint64_t
+
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <stddef.h>
+#include <stdint.h>
+
+/* Return X rotated left by N bits, where 0 < N < 64. */
+#define u64rol(x, n) u64or (u64shl (x, n), u64shr (x, 64 - n))
+
+#ifdef UINT64_MAX
+
+/* Native implementations are trivial. See below for comments on what
+ these operations do. */
+typedef uint64_t u64;
+# define u64hilo(hi, lo) ((u64) (((u64) (hi) << 32) + (lo)))
+# define u64init(hi, lo) u64hilo (hi, lo)
+# define u64lo(x) ((u64) (x))
+# define u64lt(x, y) ((x) < (y))
+# define u64and(x, y) ((x) & (y))
+# define u64or(x, y) ((x) | (y))
+# define u64xor(x, y) ((x) ^ (y))
+# define u64plus(x, y) ((x) + (y))
+# define u64shl(x, n) ((x) << (n))
+# define u64shr(x, n) ((x) >> (n))
+
+#else
+
+/* u64 is a 64-bit unsigned integer value.
+ u64init (HI, LO), is like u64hilo (HI, LO), but for use in
+ initializer contexts. */
+# ifdef WORDS_BIGENDIAN
+typedef struct { uint32_t hi, lo; } u64;
+# define u64init(hi, lo) { hi, lo }
+# else
+typedef struct { uint32_t lo, hi; } u64;
+# define u64init(hi, lo) { lo, hi }
+# endif
+
+/* Given the high and low-order 32-bit quantities HI and LO, return a u64
+ value representing (HI << 32) + LO. */
+static inline u64
+u64hilo (uint32_t hi, uint32_t lo)
+{
+ u64 r;
+ r.hi = hi;
+ r.lo = lo;
+ return r;
+}
+
+/* Return a u64 value representing LO. */
+static inline u64
+u64lo (uint32_t lo)
+{
+ u64 r;
+ r.hi = 0;
+ r.lo = lo;
+ return r;
+}
+
+/* Return X < Y. */
+static inline int
+u64lt (u64 x, u64 y)
+{
+ return x.hi < y.hi || (x.hi == y.hi && x.lo < y.lo);
+}
+
+/* Return X & Y. */
+static inline u64
+u64and (u64 x, u64 y)
+{
+ u64 r;
+ r.hi = x.hi & y.hi;
+ r.lo = x.lo & y.lo;
+ return r;
+}
+
+/* Return X | Y. */
+static inline u64
+u64or (u64 x, u64 y)
+{
+ u64 r;
+ r.hi = x.hi | y.hi;
+ r.lo = x.lo | y.lo;
+ return r;
+}
+
+/* Return X ^ Y. */
+static inline u64
+u64xor (u64 x, u64 y)
+{
+ u64 r;
+ r.hi = x.hi ^ y.hi;
+ r.lo = x.lo ^ y.lo;
+ return r;
+}
+
+/* Return X + Y. */
+static inline u64
+u64plus (u64 x, u64 y)
+{
+ u64 r;
+ r.lo = x.lo + y.lo;
+ r.hi = x.hi + y.hi + (r.lo < x.lo);
+ return r;
+}
+
+/* Return X << N. */
+static inline u64
+u64shl (u64 x, int n)
+{
+ u64 r;
+ if (n < 32)
+ {
+ r.hi = (x.hi << n) | (x.lo >> (32 - n));
+ r.lo = x.lo << n;
+ }
+ else
+ {
+ r.hi = x.lo << (n - 32);
+ r.lo = 0;
+ }
+ return r;
+}
+
+/* Return X >> N. */
+static inline u64
+u64shr (u64 x, int n)
+{
+ u64 r;
+ if (n < 32)
+ {
+ r.hi = x.hi >> n;
+ r.lo = (x.hi << (32 - n)) | (x.lo >> n);
+ }
+ else
+ {
+ r.hi = 0;
+ r.lo = x.hi >> (n - 32);
+ }
+ return r;
+}
+
+#endif
diff --git a/lib/uinttostr.c b/lib/uinttostr.c
new file mode 100644
index 0000000..52d288e
--- /dev/null
+++ b/lib/uinttostr.c
@@ -0,0 +1,3 @@
+#define inttostr uinttostr
+#define inttype unsigned int
+#include "inttostr.c"
diff --git a/lib/umaxtostr.c b/lib/umaxtostr.c
new file mode 100644
index 0000000..4f49a7f
--- /dev/null
+++ b/lib/umaxtostr.c
@@ -0,0 +1,3 @@
+#define inttostr umaxtostr
+#define inttype uintmax_t
+#include "inttostr.c"
diff --git a/lib/unicodeio.c b/lib/unicodeio.c
new file mode 100644
index 0000000..ceeff89
--- /dev/null
+++ b/lib/unicodeio.c
@@ -0,0 +1,257 @@
+/* Unicode character output to streams with locale dependent encoding.
+
+ Copyright (C) 2000-2003, 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Bruno Haible <haible@clisp.cons.org>. */
+
+/* Note: This file requires the locale_charset() function. See in
+ libiconv-1.8/libcharset/INTEGRATE for how to obtain it. */
+
+#include <config.h>
+
+/* Specification. */
+#include "unicodeio.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+
+#if HAVE_ICONV
+# include <iconv.h>
+#endif
+
+#include <error.h>
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
+#ifndef __attribute__
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
+# define __attribute__(x) /* empty */
+# endif
+#endif
+
+#ifndef ATTRIBUTE_UNUSED
+# define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+#endif
+
+#include "localcharset.h"
+
+/* When we pass a Unicode character to iconv(), we must pass it in a
+ suitable encoding. The standardized Unicode encodings are
+ UTF-8, UCS-2, UCS-4, UTF-16, UTF-16BE, UTF-16LE, UTF-7.
+ UCS-2 supports only characters up to \U0000FFFF.
+ UTF-16 and variants support only characters up to \U0010FFFF.
+ UTF-7 is way too complex and not supported by glibc-2.1.
+ UCS-4 specification leaves doubts about endianness and byte order
+ mark. glibc currently interprets it as big endian without byte order
+ mark, but this is not backed by an RFC.
+ So we use UTF-8. It supports characters up to \U7FFFFFFF and is
+ unambiguously defined. */
+
+/* Stores the UTF-8 representation of the Unicode character wc in r[0..5].
+ Returns the number of bytes stored, or -1 if wc is out of range. */
+static int
+utf8_wctomb (unsigned char *r, unsigned int wc)
+{
+ int count;
+
+ if (wc < 0x80)
+ count = 1;
+ else if (wc < 0x800)
+ count = 2;
+ else if (wc < 0x10000)
+ count = 3;
+ else if (wc < 0x200000)
+ count = 4;
+ else if (wc < 0x4000000)
+ count = 5;
+ else if (wc <= 0x7fffffff)
+ count = 6;
+ else
+ return -1;
+
+ switch (count)
+ {
+ /* Note: code falls through cases! */
+ case 6: r[5] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x4000000;
+ case 5: r[4] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x200000;
+ case 4: r[3] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x10000;
+ case 3: r[2] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x800;
+ case 2: r[1] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0xc0;
+ case 1: r[0] = wc;
+ }
+
+ return count;
+}
+
+/* Luckily, the encoding's name is platform independent. */
+#define UTF8_NAME "UTF-8"
+
+/* Converts the Unicode character CODE to its multibyte representation
+ in the current locale and calls the SUCCESS callback on the resulting
+ byte sequence. If an error occurs, invokes the FAILURE callback instead,
+ passing it CODE and an English error string.
+ Returns whatever the callback returned.
+ Assumes that the locale doesn't change between two calls. */
+long
+unicode_to_mb (unsigned int code,
+ long (*success) (const char *buf, size_t buflen,
+ void *callback_arg),
+ long (*failure) (unsigned int code, const char *msg,
+ void *callback_arg),
+ void *callback_arg)
+{
+ static int initialized;
+ static int is_utf8;
+#if HAVE_ICONV
+ static iconv_t utf8_to_local;
+#endif
+
+ char inbuf[6];
+ int count;
+
+ if (!initialized)
+ {
+ const char *charset = locale_charset ();
+
+ is_utf8 = !strcmp (charset, UTF8_NAME);
+#if HAVE_ICONV
+ if (!is_utf8)
+ {
+ utf8_to_local = iconv_open (charset, UTF8_NAME);
+ if (utf8_to_local == (iconv_t)(-1))
+ /* For an unknown encoding, assume ASCII. */
+ utf8_to_local = iconv_open ("ASCII", UTF8_NAME);
+ }
+#endif
+ initialized = 1;
+ }
+
+ /* Test whether the utf8_to_local converter is available at all. */
+ if (!is_utf8)
+ {
+#if HAVE_ICONV
+ if (utf8_to_local == (iconv_t)(-1))
+ return failure (code, N_("iconv function not usable"), callback_arg);
+#else
+ return failure (code, N_("iconv function not available"), callback_arg);
+#endif
+ }
+
+ /* Convert the character to UTF-8. */
+ count = utf8_wctomb ((unsigned char *) inbuf, code);
+ if (count < 0)
+ return failure (code, N_("character out of range"), callback_arg);
+
+#if HAVE_ICONV
+ if (!is_utf8)
+ {
+ char outbuf[25];
+ const char *inptr;
+ size_t inbytesleft;
+ char *outptr;
+ size_t outbytesleft;
+ size_t res;
+
+ inptr = inbuf;
+ inbytesleft = count;
+ outptr = outbuf;
+ outbytesleft = sizeof (outbuf);
+
+ /* Convert the character from UTF-8 to the locale's charset. */
+ res = iconv (utf8_to_local,
+ (ICONV_CONST char **)&inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (inbytesleft > 0 || res == (size_t)(-1)
+ /* Irix iconv() inserts a NUL byte if it cannot convert. */
+# if !defined _LIBICONV_VERSION && (defined sgi || defined __sgi)
+ || (res > 0 && code != 0 && outptr - outbuf == 1 && *outbuf == '\0')
+# endif
+ )
+ return failure (code, NULL, callback_arg);
+
+ /* Avoid glibc-2.1 bug and Solaris 7 bug. */
+# if defined _LIBICONV_VERSION \
+ || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun)
+
+ /* Get back to the initial shift state. */
+ res = iconv (utf8_to_local, NULL, NULL, &outptr, &outbytesleft);
+ if (res == (size_t)(-1))
+ return failure (code, NULL, callback_arg);
+# endif
+
+ return success (outbuf, outptr - outbuf, callback_arg);
+ }
+#endif
+
+ /* At this point, is_utf8 is true, so no conversion is needed. */
+ return success (inbuf, count, callback_arg);
+}
+
+/* Simple success callback that outputs the converted string.
+ The STREAM is passed as callback_arg. */
+long
+fwrite_success_callback (const char *buf, size_t buflen, void *callback_arg)
+{
+ FILE *stream = (FILE *) callback_arg;
+
+ fwrite (buf, 1, buflen, stream);
+ return 0;
+}
+
+/* Simple failure callback that displays an error and exits. */
+static long
+exit_failure_callback (unsigned int code, const char *msg,
+ void *callback_arg ATTRIBUTE_UNUSED)
+{
+ if (msg == NULL)
+ error (1, 0, _("cannot convert U+%04X to local character set"), code);
+ else
+ error (1, 0, _("cannot convert U+%04X to local character set: %s"), code,
+ gettext (msg));
+ return -1;
+}
+
+/* Simple failure callback that displays a fallback representation in plain
+ ASCII, using the same notation as ISO C99 strings. */
+static long
+fallback_failure_callback (unsigned int code, const char *msg ATTRIBUTE_UNUSED
+ , void *callback_arg)
+{
+ FILE *stream = (FILE *) callback_arg;
+
+ if (code < 0x10000)
+ fprintf (stream, "\\u%04X", code);
+ else
+ fprintf (stream, "\\U%08X", code);
+ return -1;
+}
+
+/* Outputs the Unicode character CODE to the output stream STREAM.
+ Upon failure, exit if exit_on_error is true, otherwise output a fallback
+ notation. */
+void
+print_unicode_char (FILE *stream, unsigned int code, int exit_on_error)
+{
+ unicode_to_mb (code, fwrite_success_callback,
+ exit_on_error
+ ? exit_failure_callback
+ : fallback_failure_callback,
+ stream);
+}
diff --git a/lib/unicodeio.h b/lib/unicodeio.h
new file mode 100644
index 0000000..9560f6e
--- /dev/null
+++ b/lib/unicodeio.h
@@ -0,0 +1,49 @@
+/* Unicode character output to streams with locale dependent encoding.
+
+ Copyright (C) 2000-2003, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef UNICODEIO_H
+# define UNICODEIO_H
+
+# include <stddef.h>
+# include <stdio.h>
+
+/* Converts the Unicode character CODE to its multibyte representation
+ in the current locale and calls the SUCCESS callback on the resulting
+ byte sequence. If an error occurs, invokes the FAILURE callback instead,
+ passing it CODE and an English error string.
+ Returns whatever the callback returned.
+ Assumes that the locale doesn't change between two calls. */
+extern long unicode_to_mb (unsigned int code,
+ long (*success) (const char *buf, size_t buflen,
+ void *callback_arg),
+ long (*failure) (unsigned int code, const char *msg,
+ void *callback_arg),
+ void *callback_arg);
+
+/* Outputs the Unicode character CODE to the output stream STREAM.
+ Upon failure, exit if exit_on_error is true, otherwise output a fallback
+ notation. */
+extern void print_unicode_char (FILE *stream, unsigned int code,
+ int exit_on_error);
+
+/* Simple success callback that outputs the converted string.
+ The STREAM is passed as callback_arg. */
+extern long fwrite_success_callback (const char *buf, size_t buflen,
+ void *callback_arg);
+
+#endif
diff --git a/lib/unistd--.h b/lib/unistd--.h
new file mode 100644
index 0000000..1fe6ce8
--- /dev/null
+++ b/lib/unistd--.h
@@ -0,0 +1,28 @@
+/* Like unistd.h, but redefine some names to avoid glitches.
+
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <unistd.h>
+#include "unistd-safer.h"
+
+#undef dup
+#define dup dup_safer
+
+#undef pipe
+#define pipe pipe_safer
diff --git a/lib/unistd-safer.h b/lib/unistd-safer.h
new file mode 100644
index 0000000..f95999d
--- /dev/null
+++ b/lib/unistd-safer.h
@@ -0,0 +1,23 @@
+/* Invoke unistd-like functions, but avoid some glitches.
+
+ Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+int dup_safer (int);
+int fd_safer (int);
+int pipe_safer (int[2]);
diff --git a/lib/unistd_.h b/lib/unistd_.h
new file mode 100644
index 0000000..77df861
--- /dev/null
+++ b/lib/unistd_.h
@@ -0,0 +1,192 @@
+/* Substitute for and wrapper around <unistd.h>.
+ Copyright (C) 2004-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _GL_UNISTD_H
+#define _GL_UNISTD_H
+
+#if @HAVE_UNISTD_H@
+# include @ABSOLUTE_UNISTD_H@
+#endif
+
+
+/* The definition of GL_LINK_WARNING is copied here. */
+
+
+/* Declare overridden functions. */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#if @GNULIB_CHOWN@
+# if @REPLACE_CHOWN@
+/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
+ to GID (if GID is not -1).
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/chown.html>. */
+# define chown rpl_chown
+extern int chown (const char *file, uid_t uid, gid_t gid);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef chown
+# define chown(f,u,g) \
+ (GL_LINK_WARNING ("chown fails to follow symlinks on some systems and " \
+ "doesn't treat a uid or gid of -1 on some systems - " \
+ "use gnulib module chown for portability"), \
+ chown (f, u, g))
+#endif
+
+
+#if @GNULIB_DUP2@
+# if !@HAVE_DUP2@
+/* Copy the file descriptor OLDFD into file descriptor NEWFD. Do nothing if
+ NEWFD = OLDFD, otherwise close NEWFD first if it is open.
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/dup2.html>. */
+extern int dup2 (int oldfd, int newfd);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef dup2
+# define dup2(o,n) \
+ (GL_LINK_WARNING ("dup2 is unportable - " \
+ "use gnulib module dup2 for portability"), \
+ dup2 (o, n))
+#endif
+
+
+#if @GNULIB_FCHDIR@
+# if @REPLACE_FCHDIR@
+
+/* Change the process' current working directory to the directory on which
+ the given file descriptor is open.
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/fchdir.html>. */
+extern int fchdir (int /*fd*/);
+
+# define close rpl_close
+extern int close (int);
+# define dup rpl_dup
+extern int dup (int);
+# define dup2 rpl_dup2
+extern int dup2 (int, int);
+
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef fchdir
+# define fchdir(f) \
+ (GL_LINK_WARNING ("fchdir is unportable - " \
+ "use gnulib module fchdir for portability"), \
+ fchdir (f))
+#endif
+
+
+#if @GNULIB_FTRUNCATE@
+# if !@HAVE_FTRUNCATE@
+/* Change the size of the file to which FD is opened to become equal to LENGTH.
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/ftruncate.html>. */
+extern int ftruncate (int fd, off_t length);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef ftruncate
+# define ftruncate(f,l) \
+ (GL_LINK_WARNING ("ftruncate is unportable - " \
+ "use gnulib module ftruncate for portability"), \
+ ftruncate (f, l))
+#endif
+
+
+#if @GNULIB_GETCWD@
+/* Include the headers that might declare getcwd so that they will not
+ cause confusion if included after this file. */
+# include <stdlib.h>
+# if @REPLACE_GETCWD@
+/* Get the name of the current working directory, and put it in SIZE bytes
+ of BUF.
+ Return BUF if successful, or NULL if the directory couldn't be determined
+ or SIZE was too small.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/getcwd.html>.
+ Additionally, the gnulib module 'getcwd' guarantees the following GNU
+ extension: If BUF is NULL, an array is allocated with 'malloc'; the array
+ is SIZE bytes long, unless SIZE == 0, in which case it is as big as
+ necessary. */
+# define getcwd rpl_getcwd
+extern char * getcwd (char *buf, size_t size);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getcwd
+# define getcwd(b,s) \
+ (GL_LINK_WARNING ("getcwd is unportable - " \
+ "use gnulib module getcwd for portability"), \
+ getcwd (b, s))
+#endif
+
+
+#if @GNULIB_GETLOGIN_R@
+/* Copies the user's login name to NAME.
+ The array pointed to by NAME has room for SIZE bytes.
+
+ Returns 0 if successful. Upon error, an error number is returned, or -1 in
+ the case that the login name cannot be found but no specific error is
+ provided (this case is hopefully rare but is left open by the POSIX spec).
+
+ See <http://www.opengroup.org/susv3xsh/getlogin.html>.
+ */
+# if !@HAVE_DECL_GETLOGIN_R@
+# include <stddef.h>
+extern int getlogin_r (char *name, size_t size);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getlogin_r
+# define getlogin_r(n,s) \
+ (GL_LINK_WARNING ("getlogin_r is unportable - " \
+ "use gnulib module getlogin_r for portability"), \
+ getlogin_r (n, s))
+#endif
+
+
+#if @GNULIB_READLINK@
+/* Read the contents of the symbolic link FILE and place the first BUFSIZE
+ bytes of it into BUF. Return the number of bytes placed into BUF if
+ successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/readlink.html>. */
+# if !@HAVE_READLINK@
+# include <stddef.h>
+extern int readlink (const char *file, char *buf, size_t bufsize);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef readlink
+# define readlink(f,b,s) \
+ (GL_LINK_WARNING ("readlink is unportable - " \
+ "use gnulib module readlink for portability"), \
+ readlink (f, b, s))
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _GL_UNISTD_H */
diff --git a/lib/unlinkdir.c b/lib/unlinkdir.c
new file mode 100644
index 0000000..07620db
--- /dev/null
+++ b/lib/unlinkdir.c
@@ -0,0 +1,68 @@
+/* unlinkdir.c - determine (and maybe change) whether we can unlink directories
+
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert and Jim Meyering. */
+
+#include <config.h>
+
+#include "unlinkdir.h"
+
+#if HAVE_PRIV_H
+# include <priv.h>
+#endif
+#include <unistd.h>
+
+#if ! UNLINK_CANNOT_UNLINK_DIR
+
+/* Return true if we cannot unlink directories, false if we might be
+ able to unlink directories. If possible, tell the kernel we don't
+ want to be able to unlink directories, so that we can return true. */
+
+bool
+cannot_unlink_dir (void)
+{
+ static bool initialized;
+ static bool cannot;
+
+ if (! initialized)
+ {
+# if defined PRIV_EFFECTIVE && defined PRIV_SYS_LINKDIR
+ /* We might be able to unlink directories if we cannot
+ determine our privileges, or if we have the
+ PRIV_SYS_LINKDIR privilege and cannot delete it. */
+ priv_set_t *pset = priv_allocset ();
+ if (pset)
+ {
+ cannot =
+ (getppriv (PRIV_EFFECTIVE, pset) == 0
+ && (! priv_ismember (pset, PRIV_SYS_LINKDIR)
+ || (priv_delset (pset, PRIV_SYS_LINKDIR) == 0
+ && setppriv (PRIV_SET, PRIV_EFFECTIVE, pset) == 0)));
+ priv_freeset (pset);
+ }
+# else
+ /* In traditional Unix, only root can unlink directories. */
+ cannot = (geteuid () != 0);
+# endif
+ initialized = true;
+ }
+
+ return cannot;
+}
+
+#endif
diff --git a/lib/unlinkdir.h b/lib/unlinkdir.h
new file mode 100644
index 0000000..6582418
--- /dev/null
+++ b/lib/unlinkdir.h
@@ -0,0 +1,27 @@
+/* unlinkdir.h - determine (and maybe change) whether we can unlink directories
+
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert and Jim Meyering. */
+
+#include <stdbool.h>
+
+#if UNLINK_CANNOT_UNLINK_DIR
+# define cannot_unlink_dir() true
+#else
+bool cannot_unlink_dir (void);
+#endif
diff --git a/lib/unlocked-io.h b/lib/unlocked-io.h
new file mode 100644
index 0000000..d009303
--- /dev/null
+++ b/lib/unlocked-io.h
@@ -0,0 +1,137 @@
+/* Prefer faster, non-thread-safe stdio functions if available.
+
+ Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#ifndef UNLOCKED_IO_H
+# define UNLOCKED_IO_H 1
+
+/* These are wrappers for functions/macros from the GNU C library, and
+ from other C libraries supporting POSIX's optional thread-safe functions.
+
+ The standard I/O functions are thread-safe. These *_unlocked ones are
+ more efficient but not thread-safe. That they're not thread-safe is
+ fine since all of the applications in this package are single threaded.
+
+ Also, some code that is shared with the GNU C library may invoke
+ the *_unlocked functions directly. On hosts that lack those
+ functions, invoke the non-thread-safe versions instead. */
+
+# include <stdio.h>
+
+# if HAVE_DECL_CLEARERR_UNLOCKED
+# undef clearerr
+# define clearerr(x) clearerr_unlocked (x)
+# else
+# define clearerr_unlocked(x) clearerr (x)
+# endif
+
+# if HAVE_DECL_FEOF_UNLOCKED
+# undef feof
+# define feof(x) feof_unlocked (x)
+# else
+# define feof_unlocked(x) feof (x)
+# endif
+
+# if HAVE_DECL_FERROR_UNLOCKED
+# undef ferror
+# define ferror(x) ferror_unlocked (x)
+# else
+# define ferror_unlocked(x) ferror (x)
+# endif
+
+# if HAVE_DECL_FFLUSH_UNLOCKED
+# undef fflush
+# define fflush(x) fflush_unlocked (x)
+# else
+# define fflush_unlocked(x) fflush (x)
+# endif
+
+# if HAVE_DECL_FGETS_UNLOCKED
+# undef fgets
+# define fgets(x,y,z) fgets_unlocked (x,y,z)
+# else
+# define fgets_unlocked(x,y,z) fgets (x,y,z)
+# endif
+
+# if HAVE_DECL_FPUTC_UNLOCKED
+# undef fputc
+# define fputc(x,y) fputc_unlocked (x,y)
+# else
+# define fputc_unlocked(x,y) fputc (x,y)
+# endif
+
+# if HAVE_DECL_FPUTS_UNLOCKED
+# undef fputs
+# define fputs(x,y) fputs_unlocked (x,y)
+# else
+# define fputs_unlocked(x,y) fputs (x,y)
+# endif
+
+# if HAVE_DECL_FREAD_UNLOCKED
+# undef fread
+# define fread(w,x,y,z) fread_unlocked (w,x,y,z)
+# else
+# define fread_unlocked(w,x,y,z) fread (w,x,y,z)
+# endif
+
+# if HAVE_DECL_FWRITE_UNLOCKED
+# undef fwrite
+# define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
+# else
+# define fwrite_unlocked(w,x,y,z) fwrite (w,x,y,z)
+# endif
+
+# if HAVE_DECL_GETC_UNLOCKED
+# undef getc
+# define getc(x) getc_unlocked (x)
+# else
+# define getc_unlocked(x) getc (x)
+# endif
+
+# if HAVE_DECL_GETCHAR_UNLOCKED
+# undef getchar
+# define getchar() getchar_unlocked ()
+# else
+# define getchar_unlocked() getchar ()
+# endif
+
+# if HAVE_DECL_PUTC_UNLOCKED
+# undef putc
+# define putc(x,y) putc_unlocked (x,y)
+# else
+# define putc_unlocked(x,y) putc (x,y)
+# endif
+
+# if HAVE_DECL_PUTCHAR_UNLOCKED
+# undef putchar
+# define putchar(x) putchar_unlocked (x)
+# else
+# define putchar_unlocked(x) putchar (x)
+# endif
+
+# undef flockfile
+# define flockfile(x) ((void) 0)
+
+# undef ftrylockfile
+# define ftrylockfile(x) 0
+
+# undef funlockfile
+# define funlockfile(x) ((void) 0)
+
+#endif /* UNLOCKED_IO_H */
diff --git a/lib/unsetenv.c b/lib/unsetenv.c
new file mode 100644
index 0000000..0f83744
--- /dev/null
+++ b/lib/unsetenv.c
@@ -0,0 +1,92 @@
+/* Copyright (C) 1992,1995-1999,2000-2002,2005-2006 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include <errno.h>
+#if !_LIBC
+# define __set_errno(ev) ((errno) = (ev))
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#if !_LIBC
+# define __environ environ
+# ifndef HAVE_ENVIRON_DECL
+extern char **environ;
+# endif
+#endif
+
+#if _LIBC
+/* This lock protects against simultaneous modifications of `environ'. */
+# include <bits/libc-lock.h>
+__libc_lock_define_initialized (static, envlock)
+# define LOCK __libc_lock_lock (envlock)
+# define UNLOCK __libc_lock_unlock (envlock)
+#else
+# define LOCK
+# define UNLOCK
+#endif
+
+/* In the GNU C library we must keep the namespace clean. */
+#ifdef _LIBC
+# define unsetenv __unsetenv
+#endif
+
+
+int
+unsetenv (const char *name)
+{
+ size_t len;
+ char **ep;
+
+ if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ len = strlen (name);
+
+ LOCK;
+
+ ep = __environ;
+ while (*ep != NULL)
+ if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
+ {
+ /* Found it. Remove this pointer by moving later ones back. */
+ char **dp = ep;
+
+ do
+ dp[0] = dp[1];
+ while (*dp++);
+ /* Continue the loop in case NAME appears again. */
+ }
+ else
+ ++ep;
+
+ UNLOCK;
+
+ return 0;
+}
+
+#ifdef _LIBC
+# undef unsetenv
+weak_alias (__unsetenv, unsetenv)
+#endif
diff --git a/lib/userspec.c b/lib/userspec.c
new file mode 100644
index 0000000..c1f580a
--- /dev/null
+++ b/lib/userspec.c
@@ -0,0 +1,303 @@
+/* userspec.c -- Parse a user and group string.
+ Copyright (C) 1989-1992, 1997-1998, 2000, 2002-2007 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "userspec.h"
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <grp.h>
+
+#if HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+
+#include <limits.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <unistd.h>
+
+#include "intprops.h"
+#include "inttostr.h"
+#include "xalloc.h"
+#include "xstrtol.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
+#ifndef HAVE_ENDGRENT
+# define endgrent() ((void) 0)
+#endif
+
+#ifndef HAVE_ENDPWENT
+# define endpwent() ((void) 0)
+#endif
+
+#ifndef UID_T_MAX
+# define UID_T_MAX TYPE_MAXIMUM (uid_t)
+#endif
+
+#ifndef GID_T_MAX
+# define GID_T_MAX TYPE_MAXIMUM (gid_t)
+#endif
+
+/* MAXUID may come from limits.h or sys/params.h. */
+#ifndef MAXUID
+# define MAXUID UID_T_MAX
+#endif
+#ifndef MAXGID
+# define MAXGID GID_T_MAX
+#endif
+
+/* ISDIGIT differs from isdigit, as follows:
+ - Its arg may be any int or unsigned int; it need not be an unsigned char
+ or EOF.
+ - It's typically faster.
+ POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
+ isdigit unless it's important to use the locale's definition
+ of `digit' even when the host does not conform to POSIX. */
+#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
+
+#ifdef __DJGPP__
+
+/* Return true if STR represents an unsigned decimal integer. */
+
+static bool
+is_number (const char *str)
+{
+ do
+ {
+ if (!ISDIGIT (*str))
+ return false;
+ }
+ while (*++str);
+
+ return true;
+}
+#endif
+
+static char const *
+parse_with_separator (char const *spec, char const *separator,
+ uid_t *uid, gid_t *gid,
+ char **username, char **groupname)
+{
+ static const char *E_invalid_user = N_("invalid user");
+ static const char *E_invalid_group = N_("invalid group");
+ static const char *E_bad_spec = N_("invalid spec");
+
+ const char *error_msg;
+ struct passwd *pwd;
+ struct group *grp;
+ char *u;
+ char const *g;
+ char *gname = NULL;
+ uid_t unum = *uid;
+ gid_t gnum = *gid;
+
+ error_msg = NULL;
+ *username = *groupname = NULL;
+
+ /* Set U and G to nonzero length strings corresponding to user and
+ group specifiers or to NULL. If U is not NULL, it is a newly
+ allocated string. */
+
+ u = NULL;
+ if (separator == NULL)
+ {
+ if (*spec)
+ u = xstrdup (spec);
+ }
+ else
+ {
+ size_t ulen = separator - spec;
+ if (ulen != 0)
+ {
+ u = xmemdup (spec, ulen + 1);
+ u[ulen] = '\0';
+ }
+ }
+
+ g = (separator == NULL || *(separator + 1) == '\0'
+ ? NULL
+ : separator + 1);
+
+#ifdef __DJGPP__
+ /* Pretend that we are the user U whose group is G. This makes
+ pwd and grp functions ``know'' about the UID and GID of these. */
+ if (u && !is_number (u))
+ setenv ("USER", u, 1);
+ if (g && !is_number (g))
+ setenv ("GROUP", g, 1);
+#endif
+
+ if (u != NULL)
+ {
+ /* If it starts with "+", skip the look-up. */
+ pwd = (*u == '+' ? NULL : getpwnam (u));
+ if (pwd == NULL)
+ {
+ bool use_login_group = (separator != NULL && g == NULL);
+ if (use_login_group)
+ {
+ /* If there is no group,
+ then there may not be a trailing ":", either. */
+ error_msg = E_bad_spec;
+ }
+ else
+ {
+ unsigned long int tmp;
+ if (xstrtoul (u, NULL, 10, &tmp, "") == LONGINT_OK
+ && tmp <= MAXUID)
+ unum = tmp;
+ else
+ error_msg = E_invalid_user;
+ }
+ }
+ else
+ {
+ unum = pwd->pw_uid;
+ if (g == NULL && separator != NULL)
+ {
+ /* A separator was given, but a group was not specified,
+ so get the login group. */
+ char buf[INT_BUFSIZE_BOUND (uintmax_t)];
+ gnum = pwd->pw_gid;
+ grp = getgrgid (gnum);
+ gname = xstrdup (grp ? grp->gr_name : umaxtostr (gnum, buf));
+ endgrent ();
+ }
+ }
+ endpwent ();
+ }
+
+ if (g != NULL && error_msg == NULL)
+ {
+ /* Explicit group. */
+ /* If it starts with "+", skip the look-up. */
+ grp = (*g == '+' ? NULL : getgrnam (g));
+ if (grp == NULL)
+ {
+ unsigned long int tmp;
+ if (xstrtoul (g, NULL, 10, &tmp, "") == LONGINT_OK && tmp <= MAXGID)
+ gnum = tmp;
+ else
+ error_msg = E_invalid_group;
+ }
+ else
+ gnum = grp->gr_gid;
+ endgrent (); /* Save a file descriptor. */
+ gname = xstrdup (g);
+ }
+
+ if (error_msg == NULL)
+ {
+ *uid = unum;
+ *gid = gnum;
+ *username = u;
+ *groupname = gname;
+ u = NULL;
+ }
+ else
+ free (gname);
+
+ free (u);
+ return _(error_msg);
+}
+
+/* Extract from SPEC, which has the form "[user][:.][group]",
+ a USERNAME, UID U, GROUPNAME, and GID G.
+ Either user or group, or both, must be present.
+ If the group is omitted but the separator is given,
+ use the given user's login group.
+ If SPEC contains a `:', then use that as the separator, ignoring
+ any `.'s. If there is no `:', but there is a `.', then first look
+ up the entire SPEC as a login name. If that look-up fails, then
+ try again interpreting the `.' as a separator.
+
+ USERNAME and GROUPNAME will be in newly malloc'd memory.
+ Either one might be NULL instead, indicating that it was not
+ given and the corresponding numeric ID was left unchanged.
+
+ Return NULL if successful, a static error message string if not. */
+
+char const *
+parse_user_spec (char const *spec, uid_t *uid, gid_t *gid,
+ char **username, char **groupname)
+{
+ char const *colon = strchr (spec, ':');
+ char const *error_msg =
+ parse_with_separator (spec, colon, uid, gid, username, groupname);
+
+ if (!colon && error_msg)
+ {
+ /* If there's no colon but there is a dot, and if looking up the
+ whole spec failed (i.e., the spec is not a owner name that
+ includes a dot), then try again, but interpret the dot as a
+ separator. This is a compatible extension to POSIX, since
+ the POSIX-required behavior is always tried first. */
+
+ char const *dot = strchr (spec, '.');
+ if (dot
+ && ! parse_with_separator (spec, dot, uid, gid, username, groupname))
+ error_msg = NULL;
+ }
+
+ return error_msg;
+}
+
+#ifdef TEST
+
+# define NULL_CHECK(s) ((s) == NULL ? "(null)" : (s))
+
+int
+main (int argc, char **argv)
+{
+ int i;
+
+ for (i = 1; i < argc; i++)
+ {
+ const char *e;
+ char *username, *groupname;
+ uid_t uid;
+ gid_t gid;
+ char *tmp;
+
+ tmp = strdup (argv[i]);
+ e = parse_user_spec (tmp, &uid, &gid, &username, &groupname);
+ free (tmp);
+ printf ("%s: %lu %lu %s %s %s\n",
+ argv[i],
+ (unsigned long int) uid,
+ (unsigned long int) gid,
+ NULL_CHECK (username),
+ NULL_CHECK (groupname),
+ NULL_CHECK (e));
+ }
+
+ exit (0);
+}
+
+#endif
diff --git a/lib/userspec.h b/lib/userspec.h
new file mode 100644
index 0000000..8a09eae
--- /dev/null
+++ b/lib/userspec.h
@@ -0,0 +1,10 @@
+#ifndef USERSPEC_H
+# define USERSPEC_H 1
+
+# include <sys/types.h>
+
+const char *
+parse_user_spec (const char *spec_arg, uid_t *uid, gid_t *gid,
+ char **username_arg, char **groupname_arg);
+
+#endif
diff --git a/lib/utime.c b/lib/utime.c
new file mode 100644
index 0000000..273a5fb
--- /dev/null
+++ b/lib/utime.c
@@ -0,0 +1,109 @@
+/* Copyright (C) 1998, 2001, 2002, 2003, 2004, 2006 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* derived from a function in touch.c */
+
+#include <config.h>
+#undef utime
+
+#include <sys/types.h>
+
+#ifdef HAVE_UTIME_H
+# include <utime.h>
+#endif
+
+#if !HAVE_UTIMES_NULL
+# include <sys/stat.h>
+# include <fcntl.h>
+#endif
+
+#include <unistd.h>
+#include <errno.h>
+
+#include "full-write.h"
+#include "safe-read.h"
+
+/* Some systems (even some that do have <utime.h>) don't declare this
+ structure anywhere. */
+#ifndef HAVE_STRUCT_UTIMBUF
+struct utimbuf
+{
+ long actime;
+ long modtime;
+};
+#endif
+
+/* The results of open() in this file are not used with fchdir,
+ therefore save some unnecessary work in fchdir.c. */
+#undef open
+#undef close
+
+/* Emulate utime (file, NULL) for systems (like 4.3BSD) that do not
+ interpret it to set the access and modification times of FILE to
+ the current time. Return 0 if successful, -1 if not. */
+
+static int
+utime_null (const char *file)
+{
+#if HAVE_UTIMES_NULL
+ return utimes (file, 0);
+#else
+ int fd;
+ char c;
+ int status = 0;
+ struct stat st;
+ int saved_errno = 0;
+
+ fd = open (file, O_RDWR);
+ if (fd < 0
+ || fstat (fd, &st) < 0
+ || safe_read (fd, &c, sizeof c) == SAFE_READ_ERROR
+ || lseek (fd, (off_t) 0, SEEK_SET) < 0
+ || full_write (fd, &c, sizeof c) != sizeof c
+ /* Maybe do this -- it's necessary on SunOS 4.1.3 with some combination
+ of patches, but that system doesn't use this code: it has utimes.
+ || fsync (fd) < 0
+ */
+ || (st.st_size == 0 && ftruncate (fd, st.st_size) < 0))
+ {
+ saved_errno = errno;
+ status = -1;
+ }
+
+ if (0 <= fd)
+ {
+ if (close (fd) < 0)
+ status = -1;
+
+ /* If there was a prior failure, use the saved errno value.
+ But if the only failure was in the close, don't change errno. */
+ if (saved_errno)
+ errno = saved_errno;
+ }
+
+ return status;
+#endif
+}
+
+int
+rpl_utime (const char *file, const struct utimbuf *times)
+{
+ if (times)
+ return utime (file, times);
+
+ return utime_null (file);
+}
diff --git a/lib/utimecmp.c b/lib/utimecmp.c
new file mode 100644
index 0000000..051d03a
--- /dev/null
+++ b/lib/utimecmp.c
@@ -0,0 +1,325 @@
+/* utimecmp.c -- compare file time stamps
+
+ Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+
+#include "utimecmp.h"
+
+#include <limits.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <time.h>
+#include "hash.h"
+#include "intprops.h"
+#include "stat-time.h"
+#include "utimens.h"
+#include "verify.h"
+#include "xalloc.h"
+
+#ifndef MAX
+# define MAX(a, b) ((a) > (b) ? (a) : (b))
+#endif
+
+enum { BILLION = 1000 * 1000 * 1000 };
+
+/* Best possible resolution that utimens can set and stat can return,
+ due to system-call limitations. It must be a power of 10 that is
+ no greater than 1 billion. */
+#if (HAVE_WORKING_UTIMES \
+ && (defined HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC \
+ || defined HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC \
+ || defined HAVE_STRUCT_STAT_ST_ATIMENSEC \
+ || defined HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC \
+ || defined HAVE_STRUCT_STAT_ST_SPARE1))
+enum { SYSCALL_RESOLUTION = 1000 };
+#else
+enum { SYSCALL_RESOLUTION = BILLION };
+#endif
+
+/* Describe a file system and its time stamp resolution in nanoseconds. */
+struct fs_res
+{
+ /* Device number of file system. */
+ dev_t dev;
+
+ /* An upper bound on the time stamp resolution of this file system,
+ ignoring any resolution that cannot be set via utimens. It is
+ represented by an integer count of nanoseconds. It must be
+ either 2 billion, or a power of 10 that is no greater than a
+ billion and is no less than SYSCALL_RESOLUTION. */
+ int resolution;
+
+ /* True if RESOLUTION is known to be exact, and is not merely an
+ upper bound on the true resolution. */
+ bool exact;
+};
+
+/* Hash some device info. */
+static size_t
+dev_info_hash (void const *x, size_t table_size)
+{
+ struct fs_res const *p = x;
+
+ /* Beware signed arithmetic gotchas. */
+ if (TYPE_SIGNED (dev_t) && SIZE_MAX < MAX (INT_MAX, TYPE_MAXIMUM (dev_t)))
+ {
+ uintmax_t dev = p->dev;
+ return dev % table_size;
+ }
+
+ return p->dev % table_size;
+}
+
+/* Compare two dev_info structs. */
+static bool
+dev_info_compare (void const *x, void const *y)
+{
+ struct fs_res const *a = x;
+ struct fs_res const *b = y;
+ return a->dev == b->dev;
+}
+
+/* Return -1, 0, 1 based on whether the destination file (with name
+ DST_NAME and status DST_STAT) is older than SRC_STAT, the same age
+ as SRC_STAT, or newer than SRC_STAT, respectively.
+
+ If OPTIONS & UTIMECMP_TRUNCATE_SOURCE, do the comparison after SRC is
+ converted to the destination's timestamp resolution as filtered through
+ utimens. In this case, return -2 if the exact answer cannot be
+ determined; this can happen only if the time stamps are very close and
+ there is some trouble accessing the file system (e.g., the user does not
+ have permission to futz with the destination's time stamps). */
+
+int
+utimecmp (char const *dst_name,
+ struct stat const *dst_stat,
+ struct stat const *src_stat,
+ int options)
+{
+ /* Things to watch out for:
+
+ The code uses a static hash table internally and is not safe in the
+ presence of signals, multiple threads, etc.
+
+ int and long int might be 32 bits. Many of the calculations store
+ numbers up to 2 billion, and multiply by 10; they have to avoid
+ multiplying 2 billion by 10, as this exceeds 32-bit capabilities.
+
+ time_t might be unsigned. */
+
+ verify (TYPE_IS_INTEGER (time_t));
+ verify (TYPE_TWOS_COMPLEMENT (int));
+
+ /* Destination and source time stamps. */
+ time_t dst_s = dst_stat->st_mtime;
+ time_t src_s = src_stat->st_mtime;
+ int dst_ns = get_stat_mtime_ns (dst_stat);
+ int src_ns = get_stat_mtime_ns (src_stat);
+
+ if (options & UTIMECMP_TRUNCATE_SOURCE)
+ {
+ /* Look up the time stamp resolution for the destination device. */
+
+ /* Hash table for devices. */
+ static Hash_table *ht;
+
+ /* Information about the destination file system. */
+ static struct fs_res *new_dst_res;
+ struct fs_res *dst_res;
+
+ /* Time stamp resolution in nanoseconds. */
+ int res;
+
+ if (! ht)
+ ht = hash_initialize (16, NULL, dev_info_hash, dev_info_compare, free);
+ if (! new_dst_res)
+ {
+ new_dst_res = xmalloc (sizeof *new_dst_res);
+ new_dst_res->resolution = 2 * BILLION;
+ new_dst_res->exact = false;
+ }
+ new_dst_res->dev = dst_stat->st_dev;
+ dst_res = hash_insert (ht, new_dst_res);
+ if (! dst_res)
+ xalloc_die ();
+
+ if (dst_res == new_dst_res)
+ {
+ /* NEW_DST_RES is now in use in the hash table, so allocate a
+ new entry next time. */
+ new_dst_res = NULL;
+ }
+
+ res = dst_res->resolution;
+
+ if (! dst_res->exact)
+ {
+ /* This file system's resolution is not known exactly.
+ Deduce it, and store the result in the hash table. */
+
+ time_t dst_a_s = dst_stat->st_atime;
+ time_t dst_c_s = dst_stat->st_ctime;
+ time_t dst_m_s = dst_s;
+ int dst_a_ns = get_stat_atime_ns (dst_stat);
+ int dst_c_ns = get_stat_ctime_ns (dst_stat);
+ int dst_m_ns = dst_ns;
+
+ /* Set RES to an upper bound on the file system resolution
+ (after truncation due to SYSCALL_RESOLUTION) by inspecting
+ the atime, ctime and mtime of the existing destination.
+ We don't know of any file system that stores atime or
+ ctime with a higher precision than mtime, so it's valid to
+ look at them too. */
+ {
+ bool odd_second = (dst_a_s | dst_c_s | dst_m_s) & 1;
+
+ if (SYSCALL_RESOLUTION == BILLION)
+ {
+ if (odd_second | dst_a_ns | dst_c_ns | dst_m_ns)
+ res = BILLION;
+ }
+ else
+ {
+ int a = dst_a_ns;
+ int c = dst_c_ns;
+ int m = dst_m_ns;
+
+ /* Write it this way to avoid mistaken GCC warning
+ about integer overflow in constant expression. */
+ int SR10 = SYSCALL_RESOLUTION; SR10 *= 10;
+
+ if ((a % SR10 | c % SR10 | m % SR10) != 0)
+ res = SYSCALL_RESOLUTION;
+ else
+ for (res = SR10, a /= SR10, c /= SR10, m /= SR10;
+ (res < dst_res->resolution
+ && (a % 10 | c % 10 | m % 10) == 0);
+ res *= 10, a /= 10, c /= 10, m /= 10)
+ if (res == BILLION)
+ {
+ if (! odd_second)
+ res *= 2;
+ break;
+ }
+ }
+
+ dst_res->resolution = res;
+ }
+
+ if (SYSCALL_RESOLUTION < res)
+ {
+ struct timespec timespec[2];
+ struct stat dst_status;
+
+ /* Ignore source time stamp information that must necessarily
+ be lost when filtered through utimens. */
+ src_ns -= src_ns % SYSCALL_RESOLUTION;
+
+ /* If the time stamps disagree widely enough, there's no need
+ to interrogate the file system to deduce the exact time
+ stamp resolution; return the answer directly. */
+ {
+ time_t s = src_s & ~ (res == 2 * BILLION);
+ if (src_s < dst_s || (src_s == dst_s && src_ns <= dst_ns))
+ return 1;
+ if (dst_s < s
+ || (dst_s == s && dst_ns < src_ns - src_ns % res))
+ return -1;
+ }
+
+ /* Determine the actual time stamp resolution for the
+ destination file system (after truncation due to
+ SYSCALL_RESOLUTION) by setting the access time stamp of the
+ destination to the existing access time, except with
+ trailing nonzero digits. */
+
+ timespec[0].tv_sec = dst_a_s;
+ timespec[0].tv_nsec = dst_a_ns;
+ timespec[1].tv_sec = dst_m_s | (res == 2 * BILLION);
+ timespec[1].tv_nsec = dst_m_ns + res / 9;
+
+ /* Set the modification time. But don't try to set the
+ modification time of symbolic links; on many hosts this sets
+ the time of the pointed-to file. */
+ if (S_ISLNK (dst_stat->st_mode)
+ || utimens (dst_name, timespec) != 0)
+ return -2;
+
+ /* Read the modification time that was set. It's safe to call
+ 'stat' here instead of worrying about 'lstat'; either the
+ caller used 'stat', or the caller used 'lstat' and found
+ something other than a symbolic link. */
+ {
+ int stat_result = stat (dst_name, &dst_status);
+
+ if (stat_result
+ | (dst_status.st_mtime ^ dst_m_s)
+ | (get_stat_mtime_ns (&dst_status) ^ dst_m_ns))
+ {
+ /* The modification time changed, or we can't tell whether
+ it changed. Change it back as best we can. */
+ timespec[1].tv_sec = dst_m_s;
+ timespec[1].tv_nsec = dst_m_ns;
+ utimens (dst_name, timespec);
+ }
+
+ if (stat_result != 0)
+ return -2;
+ }
+
+ /* Determine the exact resolution from the modification time
+ that was read back. */
+ {
+ int old_res = res;
+ int a = (BILLION * (dst_status.st_mtime & 1)
+ + get_stat_mtime_ns (&dst_status));
+
+ res = SYSCALL_RESOLUTION;
+
+ for (a /= res; a % 10 != 0; a /= 10)
+ {
+ if (res == BILLION)
+ {
+ res *= 2;
+ break;
+ }
+ res *= 10;
+ if (res == old_res)
+ break;
+ }
+ }
+ }
+
+ dst_res->resolution = res;
+ dst_res->exact = true;
+ }
+
+ /* Truncate the source's time stamp according to the resolution. */
+ src_s &= ~ (res == 2 * BILLION);
+ src_ns -= src_ns % res;
+ }
+
+ /* Compare the time stamps and return -1, 0, 1 accordingly. */
+ return (dst_s < src_s ? -1
+ : dst_s > src_s ? 1
+ : dst_ns < src_ns ? -1
+ : dst_ns > src_ns);
+}
diff --git a/lib/utimecmp.h b/lib/utimecmp.h
new file mode 100644
index 0000000..e82d15b
--- /dev/null
+++ b/lib/utimecmp.h
@@ -0,0 +1,38 @@
+/* utimecmp.h -- compare file time stamps
+
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#ifndef UTIMECMP_H
+#define UTIMECMP_H 1
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+/* Options for utimecmp. */
+enum
+{
+ /* Before comparing, truncate the source time stamp to the
+ resolution of the destination file system and to the resolution
+ of utimens. */
+ UTIMECMP_TRUNCATE_SOURCE = 1
+};
+
+int utimecmp (char const *, struct stat const *, struct stat const *, int);
+
+#endif
diff --git a/lib/utimens.c b/lib/utimens.c
new file mode 100644
index 0000000..71bc510
--- /dev/null
+++ b/lib/utimens.c
@@ -0,0 +1,189 @@
+/* Set file access and modification times.
+
+ Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 2, or (at your option) any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+/* derived from a function in touch.c */
+
+#include <config.h>
+
+#include "utimens.h"
+
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/time.h>
+#include <unistd.h>
+
+#if HAVE_UTIME_H
+# include <utime.h>
+#endif
+
+/* Some systems (even some that do have <utime.h>) don't declare this
+ structure anywhere. */
+#ifndef HAVE_STRUCT_UTIMBUF
+struct utimbuf
+{
+ long actime;
+ long modtime;
+};
+#endif
+
+/* Some systems don't have ENOSYS. */
+#ifndef ENOSYS
+# ifdef ENOTSUP
+# define ENOSYS ENOTSUP
+# else
+/* Some systems don't have ENOTSUP either. */
+# define ENOSYS EINVAL
+# endif
+#endif
+
+#ifndef __attribute__
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
+# define __attribute__(x)
+# endif
+#endif
+
+#ifndef ATTRIBUTE_UNUSED
+# define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+#endif
+
+/* Set the access and modification time stamps of FD (a.k.a. FILE) to be
+ TIMESPEC[0] and TIMESPEC[1], respectively.
+ FD must be either negative -- in which case it is ignored --
+ or a file descriptor that is open on FILE.
+ If FD is nonnegative, then FILE can be NULL, which means
+ use just futimes (or equivalent) instead of utimes (or equivalent),
+ and fail if on an old system without futimes (or equivalent).
+ If TIMESPEC is null, set the time stamps to the current time.
+ Return 0 on success, -1 (setting errno) on failure. */
+
+int
+futimens (int fd ATTRIBUTE_UNUSED,
+ char const *file, struct timespec const timespec[2])
+{
+ /* Some Linux-based NFS clients are buggy, and mishandle time stamps
+ of files in NFS file systems in some cases. We have no
+ configure-time test for this, but please see
+ <http://bugs.gentoo.org/show_bug.cgi?id=132673> for references to
+ some of the problems with Linux 2.6.16. If this affects you,
+ compile with -DHAVE_BUGGY_NFS_TIME_STAMPS; this is reported to
+ help in some cases, albeit at a cost in performance. But you
+ really should upgrade your kernel to a fixed version, since the
+ problem affects many applications. */
+
+#if HAVE_BUGGY_NFS_TIME_STAMPS
+ if (fd < 0)
+ sync ();
+ else
+ fsync (fd);
+#endif
+
+ /* There's currently no interface to set file timestamps with
+ nanosecond resolution, so do the best we can, discarding any
+ fractional part of the timestamp. */
+#if HAVE_FUTIMESAT || HAVE_WORKING_UTIMES
+ struct timeval timeval[2];
+ struct timeval const *t;
+ if (timespec)
+ {
+ timeval[0].tv_sec = timespec[0].tv_sec;
+ timeval[0].tv_usec = timespec[0].tv_nsec / 1000;
+ timeval[1].tv_sec = timespec[1].tv_sec;
+ timeval[1].tv_usec = timespec[1].tv_nsec / 1000;
+ t = timeval;
+ }
+ else
+ t = NULL;
+
+
+ if (fd < 0)
+ {
+# if HAVE_FUTIMESAT
+ return futimesat (AT_FDCWD, file, t);
+# endif
+ }
+ else
+ {
+ /* If futimesat or futimes fails here, don't try to speed things
+ up by returning right away. glibc can incorrectly fail with
+ errno == ENOENT if /proc isn't mounted. Also, Mandrake 10.0
+ in high security mode doesn't allow ordinary users to read
+ /proc/self, so glibc incorrectly fails with errno == EACCES.
+ If errno == EIO, EPERM, or EROFS, it's probably safe to fail
+ right away, but these cases are rare enough that they're not
+ worth optimizing, and who knows what other messed-up systems
+ are out there? So play it safe and fall back on the code
+ below. */
+# if HAVE_FUTIMESAT
+ if (futimesat (fd, NULL, t) == 0)
+ return 0;
+# elif HAVE_FUTIMES
+ if (futimes (fd, t) == 0)
+ return 0;
+# endif
+ }
+#endif
+
+ if (!file)
+ {
+#if ! (HAVE_FUTIMESAT || (HAVE_WORKING_UTIMES && HAVE_FUTIMES))
+ errno = ENOSYS;
+#endif
+
+ /* Prefer EBADF to ENOSYS if both error numbers apply. */
+ if (errno == ENOSYS)
+ {
+ int fd2 = dup (fd);
+ int dup_errno = errno;
+ if (0 <= fd2)
+ close (fd2);
+ errno = (fd2 < 0 && dup_errno == EBADF ? EBADF : ENOSYS);
+ }
+
+ return -1;
+ }
+
+#if HAVE_WORKING_UTIMES
+ return utimes (file, t);
+#else
+ {
+ struct utimbuf utimbuf;
+ struct utimbuf const *ut;
+ if (timespec)
+ {
+ utimbuf.actime = timespec[0].tv_sec;
+ utimbuf.modtime = timespec[1].tv_sec;
+ ut = &utimbuf;
+ }
+ else
+ ut = NULL;
+
+ return utime (file, ut);
+ }
+#endif
+}
+
+/* Set the access and modification time stamps of FILE to be
+ TIMESPEC[0] and TIMESPEC[1], respectively. */
+int
+utimens (char const *file, struct timespec const timespec[2])
+{
+ return futimens (-1, file, timespec);
+}
diff --git a/lib/utimens.h b/lib/utimens.h
new file mode 100644
index 0000000..0097aaa
--- /dev/null
+++ b/lib/utimens.h
@@ -0,0 +1,3 @@
+#include <time.h>
+int futimens (int, char const *, struct timespec const [2]);
+int utimens (char const *, struct timespec const [2]);
diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c
new file mode 100644
index 0000000..8a9ec9e
--- /dev/null
+++ b/lib/vasnprintf.c
@@ -0,0 +1,935 @@
+/* vsprintf with automatic memory allocation.
+ This file is intended to provide exactly the same functionality
+ as the version in gnulib, but without the need for the xsize module.
+
+ Copyright (C) 1999, 2002-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Tell glibc's <stdio.h> to provide a prototype for snprintf().
+ This must come before <config.h> because <config.h> may include
+ <features.h>, and once <features.h> has been included, it's too late. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+#include <config.h>
+#ifndef IN_LIBINTL
+# include <alloca.h>
+#endif
+
+/* Specification. */
+#if WIDE_CHAR_VERSION
+# include "vasnwprintf.h"
+#else
+# include "vasnprintf.h"
+#endif
+
+#include <stdio.h> /* snprintf(), sprintf() */
+#include <stdlib.h> /* abort(), malloc(), realloc(), free() */
+#include <stdint.h> /* SIZE_MAX */
+#include <string.h> /* memcpy(), strlen() */
+#include <errno.h> /* errno */
+#include <limits.h> /* CHAR_BIT, INT_MAX */
+#include <float.h> /* DBL_MAX_EXP, LDBL_MAX_EXP */
+#if WIDE_CHAR_VERSION
+# include "wprintf-parse.h"
+#else
+# include "printf-parse.h"
+#endif
+
+#if HAVE_WCHAR_T
+# if HAVE_WCSLEN
+# define local_wcslen wcslen
+# else
+ /* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid
+ a dependency towards this library, here is a local substitute.
+ Define this substitute only once, even if this file is included
+ twice in the same compilation unit. */
+# ifndef local_wcslen_defined
+# define local_wcslen_defined 1
+static size_t
+local_wcslen (const wchar_t *s)
+{
+ const wchar_t *ptr;
+
+ for (ptr = s; *ptr != (wchar_t) 0; ptr++)
+ ;
+ return ptr - s;
+}
+# endif
+# endif
+#endif
+
+#if WIDE_CHAR_VERSION
+# define VASNPRINTF vasnwprintf
+# define CHAR_T wchar_t
+# define DIRECTIVE wchar_t_directive
+# define DIRECTIVES wchar_t_directives
+# define PRINTF_PARSE wprintf_parse
+# define USE_SNPRINTF 1
+# if HAVE_DECL__SNWPRINTF
+ /* On Windows, the function swprintf() has a different signature than
+ on Unix; we use the _snwprintf() function instead. */
+# define SNPRINTF _snwprintf
+# else
+ /* Unix. */
+# define SNPRINTF swprintf
+# endif
+#else
+# define VASNPRINTF vasnprintf
+# define CHAR_T char
+# define DIRECTIVE char_directive
+# define DIRECTIVES char_directives
+# define PRINTF_PARSE printf_parse
+# define USE_SNPRINTF (HAVE_DECL__SNPRINTF || HAVE_SNPRINTF)
+# if HAVE_DECL__SNPRINTF
+ /* Windows. */
+# define SNPRINTF _snprintf
+# else
+ /* Unix. */
+# define SNPRINTF snprintf
+# endif
+#endif
+
+CHAR_T *
+VASNPRINTF (CHAR_T *resultbuf, size_t *lengthp, const CHAR_T *format, va_list args)
+{
+ DIRECTIVES d;
+ arguments a;
+
+ if (PRINTF_PARSE (format, &d, &a) < 0)
+ {
+ errno = EINVAL;
+ return NULL;
+ }
+
+#define CLEANUP() \
+ free (d.dir); \
+ if (a.arg) \
+ free (a.arg);
+
+ if (printf_fetchargs (args, &a) < 0)
+ {
+ CLEANUP ();
+ errno = EINVAL;
+ return NULL;
+ }
+
+ {
+ size_t buf_neededlength;
+ CHAR_T *buf;
+ CHAR_T *buf_malloced;
+ const CHAR_T *cp;
+ size_t i;
+ DIRECTIVE *dp;
+ /* Output string accumulator. */
+ CHAR_T *result;
+ size_t allocated;
+ size_t length;
+
+ /* Allocate a small buffer that will hold a directive passed to
+ sprintf or snprintf. */
+ buf_neededlength = 7 + d.max_width_length + d.max_precision_length + 6;
+#if HAVE_ALLOCA
+ if (buf_neededlength < 4000 / sizeof (CHAR_T))
+ {
+ buf = alloca (buf_neededlength * sizeof (CHAR_T));
+ buf_malloced = NULL;
+ }
+ else
+#endif
+ {
+ if (SIZE_MAX / sizeof (CHAR_T) < buf_neededlength)
+ goto out_of_memory_1;
+ buf = (CHAR_T *) malloc (buf_neededlength * sizeof (CHAR_T));
+ if (buf == NULL)
+ goto out_of_memory_1;
+ buf_malloced = buf;
+ }
+
+ if (resultbuf != NULL)
+ {
+ result = resultbuf;
+ allocated = *lengthp;
+ }
+ else
+ {
+ result = NULL;
+ allocated = 0;
+ }
+ length = 0;
+ /* Invariants:
+ result is either == resultbuf or == NULL or malloc-allocated.
+ If length > 0, then result != NULL. */
+
+ /* Ensures that allocated >= length + extra. Aborts through a jump to
+ out_of_memory if size is too big. */
+#define ENSURE_ALLOCATION(extra) \
+ { \
+ size_t needed = length + (extra); \
+ if (needed < length) \
+ goto out_of_memory; \
+ if (needed > allocated) \
+ { \
+ size_t memory_size; \
+ CHAR_T *memory; \
+ \
+ allocated = (allocated > 0 ? 2 * allocated : 12); \
+ if (needed > allocated) \
+ allocated = needed; \
+ if (SIZE_MAX / sizeof (CHAR_T) < allocated) \
+ goto out_of_memory; \
+ memory_size = allocated * sizeof (CHAR_T); \
+ if (result == resultbuf || result == NULL) \
+ memory = (CHAR_T *) malloc (memory_size); \
+ else \
+ memory = (CHAR_T *) realloc (result, memory_size); \
+ if (memory == NULL) \
+ goto out_of_memory; \
+ if (result == resultbuf && length > 0) \
+ memcpy (memory, result, length * sizeof (CHAR_T)); \
+ result = memory; \
+ } \
+ }
+
+ for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++)
+ {
+ if (cp != dp->dir_start)
+ {
+ size_t n = dp->dir_start - cp;
+
+ ENSURE_ALLOCATION (n);
+ memcpy (result + length, cp, n * sizeof (CHAR_T));
+ length += n;
+ }
+ if (i == d.count)
+ break;
+
+ /* Execute a single directive. */
+ if (dp->conversion == '%')
+ {
+ if (!(dp->arg_index == ARG_NONE))
+ abort ();
+ ENSURE_ALLOCATION (1);
+ result[length] = '%';
+ length += 1;
+ }
+ else
+ {
+ if (!(dp->arg_index != ARG_NONE))
+ abort ();
+
+ if (dp->conversion == 'n')
+ {
+ switch (a.arg[dp->arg_index].type)
+ {
+ case TYPE_COUNT_SCHAR_POINTER:
+ *a.arg[dp->arg_index].a.a_count_schar_pointer = length;
+ break;
+ case TYPE_COUNT_SHORT_POINTER:
+ *a.arg[dp->arg_index].a.a_count_short_pointer = length;
+ break;
+ case TYPE_COUNT_INT_POINTER:
+ *a.arg[dp->arg_index].a.a_count_int_pointer = length;
+ break;
+ case TYPE_COUNT_LONGINT_POINTER:
+ *a.arg[dp->arg_index].a.a_count_longint_pointer = length;
+ break;
+#if HAVE_LONG_LONG_INT
+ case TYPE_COUNT_LONGLONGINT_POINTER:
+ *a.arg[dp->arg_index].a.a_count_longlongint_pointer = length;
+ break;
+#endif
+ default:
+ abort ();
+ }
+ }
+ else
+ {
+ arg_type type = a.arg[dp->arg_index].type;
+ CHAR_T *p;
+ unsigned int prefix_count;
+ int prefixes[2];
+#if !USE_SNPRINTF
+ size_t tmp_length;
+ CHAR_T tmpbuf[700];
+ CHAR_T *tmp;
+
+ /* Allocate a temporary buffer of sufficient size for calling
+ sprintf. */
+ {
+ size_t width;
+ size_t precision;
+
+ width = 0;
+ if (dp->width_start != dp->width_end)
+ {
+ if (dp->width_arg_index != ARG_NONE)
+ {
+ int arg;
+
+ if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
+ abort ();
+ arg = a.arg[dp->width_arg_index].a.a_int;
+ width = (arg < 0 ? (unsigned int) (-arg) : arg);
+ }
+ else
+ {
+ const CHAR_T *digitp = dp->width_start;
+
+ do
+ {
+ size_t w_tmp = width * 10 + (*digitp++ - '0');
+ if (SIZE_MAX / 10 < width || w_tmp < width)
+ goto out_of_memory;
+ width = w_tmp;
+ }
+ while (digitp != dp->width_end);
+ }
+ }
+
+ precision = 6;
+ if (dp->precision_start != dp->precision_end)
+ {
+ if (dp->precision_arg_index != ARG_NONE)
+ {
+ int arg;
+
+ if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
+ abort ();
+ arg = a.arg[dp->precision_arg_index].a.a_int;
+ precision = (arg < 0 ? 0 : arg);
+ }
+ else
+ {
+ const CHAR_T *digitp = dp->precision_start + 1;
+
+ precision = 0;
+ while (digitp != dp->precision_end)
+ {
+ size_t p1 = 10 * precision + (*digitp++ - '0');
+ precision = ((SIZE_MAX / 10 < precision
+ || p1 < precision)
+ ? SIZE_MAX : p1);
+ }
+ }
+ }
+
+ switch (dp->conversion)
+ {
+
+ case 'd': case 'i': case 'u':
+# if HAVE_LONG_LONG_INT
+ if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
+ tmp_length =
+ (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
+ * 0.30103 /* binary -> decimal */
+ )
+ + 1; /* turn floor into ceil */
+ else
+# endif
+ if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
+ tmp_length =
+ (unsigned int) (sizeof (unsigned long) * CHAR_BIT
+ * 0.30103 /* binary -> decimal */
+ )
+ + 1; /* turn floor into ceil */
+ else
+ tmp_length =
+ (unsigned int) (sizeof (unsigned int) * CHAR_BIT
+ * 0.30103 /* binary -> decimal */
+ )
+ + 1; /* turn floor into ceil */
+ if (tmp_length < precision)
+ tmp_length = precision;
+ /* Multiply by 2, as an estimate for FLAG_GROUP. */
+ /* Add 1, to account for a leading sign. */
+ tmp_length = (tmp_length < SIZE_MAX / 2
+ ? 2 * tmp_length + 1
+ : SIZE_MAX);
+ break;
+
+ case 'o':
+# if HAVE_LONG_LONG_INT
+ if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
+ tmp_length =
+ (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
+ * 0.333334 /* binary -> octal */
+ )
+ + 1; /* turn floor into ceil */
+ else
+# endif
+ if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
+ tmp_length =
+ (unsigned int) (sizeof (unsigned long) * CHAR_BIT
+ * 0.333334 /* binary -> octal */
+ )
+ + 1; /* turn floor into ceil */
+ else
+ tmp_length =
+ (unsigned int) (sizeof (unsigned int) * CHAR_BIT
+ * 0.333334 /* binary -> octal */
+ )
+ + 1; /* turn floor into ceil */
+ if (tmp_length < precision)
+ tmp_length = precision;
+ /* Add 1, to account for a leading sign. */
+ tmp_length += (tmp_length < SIZE_MAX);
+ break;
+
+ case 'x': case 'X':
+# if HAVE_LONG_LONG_INT
+ if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
+ tmp_length =
+ (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
+ * 0.25 /* binary -> hexadecimal */
+ )
+ + 1; /* turn floor into ceil */
+ else
+# endif
+ if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
+ tmp_length =
+ (unsigned int) (sizeof (unsigned long) * CHAR_BIT
+ * 0.25 /* binary -> hexadecimal */
+ )
+ + 1; /* turn floor into ceil */
+ else
+ tmp_length =
+ (unsigned int) (sizeof (unsigned int) * CHAR_BIT
+ * 0.25 /* binary -> hexadecimal */
+ )
+ + 1; /* turn floor into ceil */
+ if (tmp_length < precision)
+ tmp_length = precision;
+ /* Add 2, to account for a leading sign or alternate form. */
+ tmp_length += 2;
+ if (tmp_length < 2)
+ goto out_of_memory;
+ break;
+
+ case 'f': case 'F':
+# if HAVE_LONG_DOUBLE
+ if (type == TYPE_LONGDOUBLE)
+ tmp_length =
+ (unsigned int) (LDBL_MAX_EXP
+ * 0.30103 /* binary -> decimal */
+ * 2 /* estimate for FLAG_GROUP */
+ )
+ + 1 /* turn floor into ceil */
+ + 10; /* sign, decimal point etc. */
+ else
+# endif
+ tmp_length =
+ (unsigned int) (DBL_MAX_EXP
+ * 0.30103 /* binary -> decimal */
+ * 2 /* estimate for FLAG_GROUP */
+ )
+ + 1 /* turn floor into ceil */
+ + 10; /* sign, decimal point etc. */
+ tmp_length += precision;
+ if (tmp_length < precision)
+ goto out_of_memory;
+ break;
+
+ case 'e': case 'E': case 'g': case 'G':
+ tmp_length =
+ 12; /* sign, decimal point, exponent etc. */
+ tmp_length += precision;
+ if (tmp_length < precision)
+ goto out_of_memory;
+ break;
+
+ case 'a': case 'A':
+# if HAVE_LONG_DOUBLE
+ if (type == TYPE_LONGDOUBLE)
+ tmp_length =
+ (unsigned int) (LDBL_DIG
+ * 0.831 /* decimal -> hexadecimal */
+ )
+ + 1; /* turn floor into ceil */
+ else
+# endif
+ tmp_length =
+ (unsigned int) (DBL_DIG
+ * 0.831 /* decimal -> hexadecimal */
+ )
+ + 1; /* turn floor into ceil */
+ if (tmp_length < precision)
+ tmp_length = precision;
+ /* Account for sign, decimal point etc. */
+ tmp_length += 12;
+ if (tmp_length < 12)
+ goto out_of_memory;
+ break;
+
+ case 'c':
+# if HAVE_WINT_T && !WIDE_CHAR_VERSION
+ if (type == TYPE_WIDE_CHAR)
+ tmp_length = MB_CUR_MAX;
+ else
+# endif
+ tmp_length = 1;
+ break;
+
+ case 's':
+# if HAVE_WCHAR_T
+ if (type == TYPE_WIDE_STRING)
+ {
+ tmp_length =
+ local_wcslen (a.arg[dp->arg_index].a.a_wide_string);
+
+# if !WIDE_CHAR_VERSION
+ if (SIZE_MAX / MB_CUR_MAX < tmp_length)
+ goto out_of_memory;
+ tmp_length *= MB_CUR_MAX;
+# endif
+ }
+ else
+# endif
+ tmp_length = strlen (a.arg[dp->arg_index].a.a_string);
+ break;
+
+ case 'p':
+ tmp_length =
+ (unsigned int) (sizeof (void *) * CHAR_BIT
+ * 0.25 /* binary -> hexadecimal */
+ )
+ + 1 /* turn floor into ceil */
+ + 2; /* account for leading 0x */
+ break;
+
+ default:
+ abort ();
+ }
+
+ if (tmp_length < width)
+ tmp_length = width;
+
+ tmp_length++; /* account for trailing NUL */
+ if (!tmp_length)
+ goto out_of_memory;
+ }
+
+ if (tmp_length <= sizeof (tmpbuf) / sizeof (CHAR_T))
+ tmp = tmpbuf;
+ else
+ {
+ if (SIZE_MAX / sizeof (CHAR_T) < tmp_length)
+ /* Overflow, would lead to out of memory. */
+ goto out_of_memory;
+ tmp = (CHAR_T *) malloc (tmp_length * sizeof (CHAR_T));
+ if (tmp == NULL)
+ /* Out of memory. */
+ goto out_of_memory;
+ }
+#endif
+
+ /* Construct the format string for calling snprintf or
+ sprintf. */
+ p = buf;
+ *p++ = '%';
+ if (dp->flags & FLAG_GROUP)
+ *p++ = '\'';
+ if (dp->flags & FLAG_LEFT)
+ *p++ = '-';
+ if (dp->flags & FLAG_SHOWSIGN)
+ *p++ = '+';
+ if (dp->flags & FLAG_SPACE)
+ *p++ = ' ';
+ if (dp->flags & FLAG_ALT)
+ *p++ = '#';
+ if (dp->flags & FLAG_ZERO)
+ *p++ = '0';
+ if (dp->width_start != dp->width_end)
+ {
+ size_t n = dp->width_end - dp->width_start;
+ memcpy (p, dp->width_start, n * sizeof (CHAR_T));
+ p += n;
+ }
+ if (dp->precision_start != dp->precision_end)
+ {
+ size_t n = dp->precision_end - dp->precision_start;
+ memcpy (p, dp->precision_start, n * sizeof (CHAR_T));
+ p += n;
+ }
+
+ switch (type)
+ {
+#if HAVE_LONG_LONG_INT
+ case TYPE_LONGLONGINT:
+ case TYPE_ULONGLONGINT:
+ *p++ = 'l';
+ /*FALLTHROUGH*/
+#endif
+ case TYPE_LONGINT:
+ case TYPE_ULONGINT:
+#if HAVE_WINT_T
+ case TYPE_WIDE_CHAR:
+#endif
+#if HAVE_WCHAR_T
+ case TYPE_WIDE_STRING:
+#endif
+ *p++ = 'l';
+ break;
+#if HAVE_LONG_DOUBLE
+ case TYPE_LONGDOUBLE:
+ *p++ = 'L';
+ break;
+#endif
+ default:
+ break;
+ }
+ *p = dp->conversion;
+#if USE_SNPRINTF
+ p[1] = '%';
+ p[2] = 'n';
+ p[3] = '\0';
+#else
+ p[1] = '\0';
+#endif
+
+ /* Construct the arguments for calling snprintf or sprintf. */
+ prefix_count = 0;
+ if (dp->width_arg_index != ARG_NONE)
+ {
+ if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
+ abort ();
+ prefixes[prefix_count++] = a.arg[dp->width_arg_index].a.a_int;
+ }
+ if (dp->precision_arg_index != ARG_NONE)
+ {
+ if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
+ abort ();
+ prefixes[prefix_count++] = a.arg[dp->precision_arg_index].a.a_int;
+ }
+
+#if USE_SNPRINTF
+ /* Prepare checking whether snprintf returns the count
+ via %n. */
+ ENSURE_ALLOCATION (1);
+ result[length] = '\0';
+#endif
+
+ for (;;)
+ {
+ size_t maxlen;
+ int count;
+ int retcount;
+
+ maxlen = allocated - length;
+ count = -1;
+ retcount = 0;
+
+#if USE_SNPRINTF
+# define SNPRINTF_BUF(arg) \
+ switch (prefix_count) \
+ { \
+ case 0: \
+ retcount = SNPRINTF (result + length, maxlen, buf, \
+ arg, &count); \
+ break; \
+ case 1: \
+ retcount = SNPRINTF (result + length, maxlen, buf, \
+ prefixes[0], arg, &count); \
+ break; \
+ case 2: \
+ retcount = SNPRINTF (result + length, maxlen, buf, \
+ prefixes[0], prefixes[1], arg, \
+ &count); \
+ break; \
+ default: \
+ abort (); \
+ }
+#else
+# define SNPRINTF_BUF(arg) \
+ switch (prefix_count) \
+ { \
+ case 0: \
+ count = sprintf (tmp, buf, arg); \
+ break; \
+ case 1: \
+ count = sprintf (tmp, buf, prefixes[0], arg); \
+ break; \
+ case 2: \
+ count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
+ arg); \
+ break; \
+ default: \
+ abort (); \
+ }
+#endif
+
+ switch (type)
+ {
+ case TYPE_SCHAR:
+ {
+ int arg = a.arg[dp->arg_index].a.a_schar;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ case TYPE_UCHAR:
+ {
+ unsigned int arg = a.arg[dp->arg_index].a.a_uchar;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ case TYPE_SHORT:
+ {
+ int arg = a.arg[dp->arg_index].a.a_short;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ case TYPE_USHORT:
+ {
+ unsigned int arg = a.arg[dp->arg_index].a.a_ushort;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ case TYPE_INT:
+ {
+ int arg = a.arg[dp->arg_index].a.a_int;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ case TYPE_UINT:
+ {
+ unsigned int arg = a.arg[dp->arg_index].a.a_uint;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ case TYPE_LONGINT:
+ {
+ long int arg = a.arg[dp->arg_index].a.a_longint;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ case TYPE_ULONGINT:
+ {
+ unsigned long int arg = a.arg[dp->arg_index].a.a_ulongint;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+#if HAVE_LONG_LONG_INT
+ case TYPE_LONGLONGINT:
+ {
+ long long int arg = a.arg[dp->arg_index].a.a_longlongint;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ case TYPE_ULONGLONGINT:
+ {
+ unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+#endif
+ case TYPE_DOUBLE:
+ {
+ double arg = a.arg[dp->arg_index].a.a_double;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+#if HAVE_LONG_DOUBLE
+ case TYPE_LONGDOUBLE:
+ {
+ long double arg = a.arg[dp->arg_index].a.a_longdouble;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+#endif
+ case TYPE_CHAR:
+ {
+ int arg = a.arg[dp->arg_index].a.a_char;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+#if HAVE_WINT_T
+ case TYPE_WIDE_CHAR:
+ {
+ wint_t arg = a.arg[dp->arg_index].a.a_wide_char;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+#endif
+ case TYPE_STRING:
+ {
+ const char *arg = a.arg[dp->arg_index].a.a_string;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+#if HAVE_WCHAR_T
+ case TYPE_WIDE_STRING:
+ {
+ const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+#endif
+ case TYPE_POINTER:
+ {
+ void *arg = a.arg[dp->arg_index].a.a_pointer;
+ SNPRINTF_BUF (arg);
+ }
+ break;
+ default:
+ abort ();
+ }
+
+#if USE_SNPRINTF
+ /* Portability: Not all implementations of snprintf()
+ are ISO C 99 compliant. Determine the number of
+ bytes that snprintf() has produced or would have
+ produced. */
+ if (count >= 0)
+ {
+ /* Verify that snprintf() has NUL-terminated its
+ result. */
+ if (count < maxlen && result[length + count] != '\0')
+ abort ();
+ /* Portability hack. */
+ if (retcount > count)
+ count = retcount;
+ }
+ else
+ {
+ /* snprintf() doesn't understand the '%n'
+ directive. */
+ if (p[1] != '\0')
+ {
+ /* Don't use the '%n' directive; instead, look
+ at the snprintf() return value. */
+ p[1] = '\0';
+ continue;
+ }
+ else
+ {
+ /* Look at the snprintf() return value. */
+ if (retcount < 0)
+ {
+ /* HP-UX 10.20 snprintf() is doubly deficient:
+ It doesn't understand the '%n' directive,
+ *and* it returns -1 (rather than the length
+ that would have been required) when the
+ buffer is too small. */
+ size_t bigger_need =
+ (allocated > 12 ? allocated : 12);
+ ENSURE_ALLOCATION (bigger_need);
+ continue;
+ }
+ else
+ count = retcount;
+ }
+ }
+#endif
+
+ /* Attempt to handle failure. */
+ if (count < 0)
+ {
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ errno = EINVAL;
+ return NULL;
+ }
+
+#if !USE_SNPRINTF
+ if (count >= tmp_length)
+ /* tmp_length was incorrectly calculated - fix the
+ code above! */
+ abort ();
+#endif
+
+ /* Make room for the result. */
+ if (count >= maxlen)
+ {
+ /* Need at least count bytes. But allocate
+ proportionally, to avoid looping eternally if
+ snprintf() reports a too small count. */
+ ENSURE_ALLOCATION (count < allocated
+ ? allocated : count);
+#if USE_SNPRINTF
+ continue;
+#endif
+ }
+
+#if USE_SNPRINTF
+ /* The snprintf() result did fit. */
+#else
+ /* Append the sprintf() result. */
+ memcpy (result + length, tmp, count * sizeof (CHAR_T));
+ if (tmp != tmpbuf)
+ free (tmp);
+#endif
+
+ length += count;
+ break;
+ }
+ }
+ }
+ }
+
+ /* Add the final NUL. */
+ ENSURE_ALLOCATION (1);
+ result[length] = '\0';
+
+ if (result != resultbuf && length + 1 < allocated)
+ {
+ /* Shrink the allocated memory if possible. */
+ CHAR_T *memory;
+
+ memory = (CHAR_T *) realloc (result, (length + 1) * sizeof (CHAR_T));
+ if (memory != NULL)
+ result = memory;
+ }
+
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+ *lengthp = length;
+ if (length > INT_MAX)
+ goto length_overflow;
+ return result;
+
+ length_overflow:
+ /* We could produce such a big string, but its length doesn't fit into
+ an 'int'. POSIX says that snprintf() fails with errno = EOVERFLOW in
+ this case. */
+ if (result != resultbuf)
+ free (result);
+ errno = EOVERFLOW;
+ return NULL;
+
+ out_of_memory:
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ out_of_memory_1:
+ CLEANUP ();
+ errno = ENOMEM;
+ return NULL;
+ }
+}
+
+#undef SNPRINTF
+#undef USE_SNPRINTF
+#undef PRINTF_PARSE
+#undef DIRECTIVES
+#undef DIRECTIVE
+#undef CHAR_T
+#undef VASNPRINTF
diff --git a/lib/vasnprintf.h b/lib/vasnprintf.h
new file mode 100644
index 0000000..7a0c01f
--- /dev/null
+++ b/lib/vasnprintf.h
@@ -0,0 +1,81 @@
+/* vsprintf with automatic memory allocation.
+ Copyright (C) 2002-2004, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _VASNPRINTF_H
+#define _VASNPRINTF_H
+
+/* Get va_list. */
+#include <stdarg.h>
+
+/* Get size_t. */
+#include <stddef.h>
+
+#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later. */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
+# define __attribute__(Spec) /* empty */
+# endif
+/* The __-protected variants of `format' and `printf' attributes
+ are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
+# define __format__ format
+# define __printf__ printf
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Write formatted output to a string dynamically allocated with malloc().
+ You can pass a preallocated buffer for the result in RESULTBUF and its
+ size in *LENGTHP; otherwise you pass RESULTBUF = NULL.
+ If successful, return the address of the string (this may be = RESULTBUF
+ if no dynamic memory allocation was necessary) and set *LENGTHP to the
+ number of resulting bytes, excluding the trailing NUL. Upon error, set
+ errno and return NULL.
+
+ When dynamic memory allocation occurs, the preallocated buffer is left
+ alone (with possibly modified contents). This makes it possible to use
+ a statically allocated or stack-allocated buffer, like this:
+
+ char buf[100];
+ size_t len = sizeof (buf);
+ char *output = vasnprintf (buf, &len, format, args);
+ if (output == NULL)
+ ... error handling ...;
+ else
+ {
+ ... use the output string ...;
+ if (output != buf)
+ free (output);
+ }
+ */
+#if REPLACE_VASNPRINTF
+# define asnprintf rpl_asnprintf
+# define vasnprintf rpl_vasnprintf
+#endif
+extern char * asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
+ __attribute__ ((__format__ (__printf__, 3, 4)));
+extern char * vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args)
+ __attribute__ ((__format__ (__printf__, 3, 0)));
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _VASNPRINTF_H */
diff --git a/lib/vasprintf.c b/lib/vasprintf.c
new file mode 100644
index 0000000..8247073
--- /dev/null
+++ b/lib/vasprintf.c
@@ -0,0 +1,52 @@
+/* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#include "vasprintf.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdlib.h>
+
+#include "vasnprintf.h"
+
+/* Some systems, like OSF/1 4.0 and Woe32, don't have EOVERFLOW. */
+#ifndef EOVERFLOW
+# define EOVERFLOW E2BIG
+#endif
+
+int
+vasprintf (char **resultp, const char *format, va_list args)
+{
+ size_t length;
+ char *result = vasnprintf (NULL, &length, format, args);
+ if (result == NULL)
+ return -1;
+
+ if (length > INT_MAX)
+ {
+ free (result);
+ errno = EOVERFLOW;
+ return -1;
+ }
+
+ *resultp = result;
+ /* Return the number of resulting bytes, excluding the trailing NUL. */
+ return length;
+}
diff --git a/lib/vasprintf.h b/lib/vasprintf.h
new file mode 100644
index 0000000..65f0531
--- /dev/null
+++ b/lib/vasprintf.h
@@ -0,0 +1,69 @@
+/* vsprintf with automatic memory allocation.
+ Copyright (C) 2002-2003, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _VASPRINTF_H
+#define _VASPRINTF_H
+
+#if HAVE_VASPRINTF
+
+/* Get asprintf(), vasprintf() declarations. */
+#include <stdio.h>
+
+#endif
+
+#if !HAVE_VASPRINTF || REPLACE_VASPRINTF
+
+/* Get va_list. */
+#include <stdarg.h>
+
+#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later. */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
+# define __attribute__(Spec) /* empty */
+# endif
+/* The __-protected variants of `format' and `printf' attributes
+ are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
+# define __format__ format
+# define __printf__ printf
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Write formatted output to a string dynamically allocated with malloc().
+ If the memory allocation succeeds, store the address of the string in
+ *RESULT and return the number of resulting bytes, excluding the trailing
+ NUL. Upon memory allocation error, or some other error, return -1. */
+#if REPLACE_VASPRINTF
+# define asprintf rpl_asprintf
+# define vasprintf rpl_vasprintf
+#endif
+extern int asprintf (char **result, const char *format, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+extern int vasprintf (char **result, const char *format, va_list args)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+#endif /* _VASPRINTF_H */
diff --git a/lib/verify.h b/lib/verify.h
new file mode 100644
index 0000000..d603b17
--- /dev/null
+++ b/lib/verify.h
@@ -0,0 +1,141 @@
+/* Compile-time assert-like macros.
+
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert, Bruno Haible, and Jim Meyering. */
+
+#ifndef VERIFY_H
+# define VERIFY_H 1
+
+/* Each of these macros verifies that its argument R is nonzero. To
+ be portable, R should be an integer constant expression. Unlike
+ assert (R), there is no run-time overhead.
+
+ There are two macros, since no single macro can be used in all
+ contexts in C. verify_true (R) is for scalar contexts, including
+ integer constant expression contexts. verify (R) is for declaration
+ contexts, e.g., the top level.
+
+ Symbols ending in "__" are private to this header.
+
+ The code below uses several ideas.
+
+ * The first step is ((R) ? 1 : -1). Given an expression R, of
+ integral or boolean or floating-point type, this yields an
+ expression of integral type, whose value is later verified to be
+ constant and nonnegative.
+
+ * Next this expression W is wrapped in a type
+ struct verify_type__ { unsigned int verify_error_if_negative_size__: W; }.
+ If W is negative, this yields a compile-time error. No compiler can
+ deal with a bit-field of negative size.
+
+ One might think that an array size check would have the same
+ effect, that is, that the type struct { unsigned int dummy[W]; }
+ would work as well. However, inside a function, some compilers
+ (such as C++ compilers and GNU C) allow local parameters and
+ variables inside array size expressions. With these compilers,
+ an array size check would not properly diagnose this misuse of
+ the verify macro:
+
+ void function (int n) { verify (n < 0); }
+
+ * For the verify macro, the struct verify_type__ will need to
+ somehow be embedded into a declaration. To be portable, this
+ declaration must declare an object, a constant, a function, or a
+ typedef name. If the declared entity uses the type directly,
+ such as in
+
+ struct dummy {...};
+ typedef struct {...} dummy;
+ extern struct {...} *dummy;
+ extern void dummy (struct {...} *);
+ extern struct {...} *dummy (void);
+
+ two uses of the verify macro would yield colliding declarations
+ if the entity names are not disambiguated. A workaround is to
+ attach the current line number to the entity name:
+
+ #define GL_CONCAT0(x, y) x##y
+ #define GL_CONCAT(x, y) GL_CONCAT0 (x, y)
+ extern struct {...} * GL_CONCAT(dummy,__LINE__);
+
+ But this has the problem that two invocations of verify from
+ within the same macro would collide, since the __LINE__ value
+ would be the same for both invocations.
+
+ A solution is to use the sizeof operator. It yields a number,
+ getting rid of the identity of the type. Declarations like
+
+ extern int dummy [sizeof (struct {...})];
+ extern void dummy (int [sizeof (struct {...})]);
+ extern int (*dummy (void)) [sizeof (struct {...})];
+
+ can be repeated.
+
+ * Should the implementation use a named struct or an unnamed struct?
+ Which of the following alternatives can be used?
+
+ extern int dummy [sizeof (struct {...})];
+ extern int dummy [sizeof (struct verify_type__ {...})];
+ extern void dummy (int [sizeof (struct {...})]);
+ extern void dummy (int [sizeof (struct verify_type__ {...})]);
+ extern int (*dummy (void)) [sizeof (struct {...})];
+ extern int (*dummy (void)) [sizeof (struct verify_type__ {...})];
+
+ In the second and sixth case, the struct type is exported to the
+ outer scope; two such declarations therefore collide. GCC warns
+ about the first, third, and fourth cases. So the only remaining
+ possibility is the fifth case:
+
+ extern int (*dummy (void)) [sizeof (struct {...})];
+
+ * This implementation exploits the fact that GCC does not warn about
+ the last declaration mentioned above. If a future version of GCC
+ introduces a warning for this, the problem could be worked around
+ by using code specialized to GCC, e.g.,:
+
+ #if 4 <= __GNUC__
+ # define verify(R) \
+ extern int (* verify_function__ (void)) \
+ [__builtin_constant_p (R) && (R) ? 1 : -1]
+ #endif
+
+ * In C++, any struct definition inside sizeof is invalid.
+ Use a template type to work around the problem. */
+
+
+/* Verify requirement R at compile-time, as an integer constant expression.
+ Return 1. */
+
+# ifdef __cplusplus
+template <int w>
+ struct verify_type__ { unsigned int verify_error_if_negative_size__: w; };
+# define verify_true(R) \
+ (!!sizeof (verify_type__<(R) ? 1 : -1>))
+# else
+# define verify_true(R) \
+ (!!sizeof \
+ (struct { unsigned int verify_error_if_negative_size__: (R) ? 1 : -1; }))
+# endif
+
+/* Verify requirement R at compile-time, as a declaration without a
+ trailing ';'. */
+
+# define verify(R) extern int (* verify_function__ (void)) [verify_true (R)]
+
+#endif
diff --git a/lib/version-etc-fsf.c b/lib/version-etc-fsf.c
new file mode 100644
index 0000000..f25eb65
--- /dev/null
+++ b/lib/version-etc-fsf.c
@@ -0,0 +1,31 @@
+/* Variable with FSF copyright information, for version-etc.
+ Copyright (C) 1999-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+
+/* Specification. */
+#include "version-etc.h"
+
+/* Default copyright goes to the FSF. */
+
+const char version_etc_copyright[] =
+ /* Do *not* mark this string for translation. %s is a copyright
+ symbol suitable for this locale, and %d is the copyright
+ year. */
+ "Copyright %s %d Free Software Foundation, Inc.";
diff --git a/lib/version-etc.c b/lib/version-etc.c
new file mode 100644
index 0000000..65997d9
--- /dev/null
+++ b/lib/version-etc.c
@@ -0,0 +1,173 @@
+/* Utility to help print --version output in a consistent format.
+ Copyright (C) 1999-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+
+/* Specification. */
+#include "version-etc.h"
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+enum { COPYRIGHT_YEAR = 2007 };
+
+/* Like version_etc, below, but with the NULL-terminated author list
+ provided via a variable of type va_list. */
+void
+version_etc_va (FILE *stream,
+ const char *command_name, const char *package,
+ const char *version, va_list authors)
+{
+ size_t n_authors;
+
+ /* Count the number of authors. */
+ {
+ va_list tmp_authors;
+
+ va_copy (tmp_authors, authors);
+
+ n_authors = 0;
+ while (va_arg (tmp_authors, const char *) != NULL)
+ ++n_authors;
+ }
+
+ if (command_name)
+ fprintf (stream, "%s (%s) %s\n", command_name, package, version);
+ else
+ fprintf (stream, "%s %s\n", package, version);
+
+ /* TRANSLATORS: Translate "(C)" to the copyright symbol
+ (C-in-a-circle), if this symbol is available in the user's
+ locale. Otherwise, do not translate "(C)"; leave it as-is. */
+ fprintf (stream, version_etc_copyright, _("(C)"), COPYRIGHT_YEAR);
+
+ fputs (_("\
+\n\
+This is free software. You may redistribute copies of it under the terms of\n\
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n\
+There is NO WARRANTY, to the extent permitted by law.\n\
+\n\
+"),
+ stream);
+
+ switch (n_authors)
+ {
+ case 0:
+ /* The caller must provide at least one author name. */
+ abort ();
+ case 1:
+ /* TRANSLATORS: %s denotes an author name. */
+ vfprintf (stream, _("Written by %s.\n"), authors);
+ break;
+ case 2:
+ /* TRANSLATORS: Each %s denotes an author name. */
+ vfprintf (stream, _("Written by %s and %s.\n"), authors);
+ break;
+ case 3:
+ /* TRANSLATORS: Each %s denotes an author name. */
+ vfprintf (stream, _("Written by %s, %s, and %s.\n"), authors);
+ break;
+ case 4:
+ /* TRANSLATORS: Each %s denotes an author name.
+ You can use line breaks, estimating that each author name occupies
+ ca. 16 screen columns and that a screen line has ca. 80 columns. */
+ vfprintf (stream, _("Written by %s, %s, %s,\nand %s.\n"), authors);
+ break;
+ case 5:
+ /* TRANSLATORS: Each %s denotes an author name.
+ You can use line breaks, estimating that each author name occupies
+ ca. 16 screen columns and that a screen line has ca. 80 columns. */
+ vfprintf (stream, _("Written by %s, %s, %s,\n%s, and %s.\n"), authors);
+ break;
+ case 6:
+ /* TRANSLATORS: Each %s denotes an author name.
+ You can use line breaks, estimating that each author name occupies
+ ca. 16 screen columns and that a screen line has ca. 80 columns. */
+ vfprintf (stream, _("Written by %s, %s, %s,\n%s, %s, and %s.\n"),
+ authors);
+ break;
+ case 7:
+ /* TRANSLATORS: Each %s denotes an author name.
+ You can use line breaks, estimating that each author name occupies
+ ca. 16 screen columns and that a screen line has ca. 80 columns. */
+ vfprintf (stream, _("Written by %s, %s, %s,\n%s, %s, %s, and %s.\n"),
+ authors);
+ break;
+ case 8:
+ /* TRANSLATORS: Each %s denotes an author name.
+ You can use line breaks, estimating that each author name occupies
+ ca. 16 screen columns and that a screen line has ca. 80 columns. */
+ vfprintf (stream, _("\
+Written by %s, %s, %s,\n%s, %s, %s, %s,\nand %s.\n"),
+ authors);
+ break;
+ case 9:
+ /* TRANSLATORS: Each %s denotes an author name.
+ You can use line breaks, estimating that each author name occupies
+ ca. 16 screen columns and that a screen line has ca. 80 columns. */
+ vfprintf (stream, _("\
+Written by %s, %s, %s,\n%s, %s, %s, %s,\n%s, and %s.\n"),
+ authors);
+ break;
+ default:
+ /* 10 or more authors. Use an abbreviation, since the human reader
+ will probably not want to read the entire list anyway. */
+ /* TRANSLATORS: Each %s denotes an author name.
+ You can use line breaks, estimating that each author name occupies
+ ca. 16 screen columns and that a screen line has ca. 80 columns. */
+ vfprintf (stream, _("\
+Written by %s, %s, %s,\n%s, %s, %s, %s,\n%s, %s, and others.\n"),
+ authors);
+ break;
+ }
+ va_end (authors);
+}
+
+
+/* Display the --version information the standard way.
+
+ If COMMAND_NAME is NULL, the PACKAGE is asumed to be the name of
+ the program. The formats are therefore:
+
+ PACKAGE VERSION
+
+ or
+
+ COMMAND_NAME (PACKAGE) VERSION.
+
+ The author names are passed as separate arguments, with an additional
+ NULL argument at the end. */
+void
+version_etc (FILE *stream,
+ const char *command_name, const char *package,
+ const char *version, /* const char *author1, ...*/ ...)
+{
+ va_list authors;
+
+ va_start (authors, version);
+ version_etc_va (stream, command_name, package, version, authors);
+}
diff --git a/lib/version-etc.h b/lib/version-etc.h
new file mode 100644
index 0000000..84da535
--- /dev/null
+++ b/lib/version-etc.h
@@ -0,0 +1,37 @@
+/* Utility to help print --version output in a consistent format.
+ Copyright (C) 1999, 2003, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#ifndef VERSION_ETC_H
+# define VERSION_ETC_H 1
+
+# include <stdarg.h>
+# include <stdio.h>
+
+extern const char version_etc_copyright[];
+
+extern void version_etc_va (FILE *stream,
+ const char *command_name, const char *package,
+ const char *version, va_list authors);
+
+extern void version_etc (FILE *stream,
+ const char *command_name, const char *package,
+ const char *version,
+ /* const char *author1, ...*/ ...);
+
+#endif /* VERSION_ETC_H */
diff --git a/lib/wchar_.h b/lib/wchar_.h
new file mode 100644
index 0000000..6813a21
--- /dev/null
+++ b/lib/wchar_.h
@@ -0,0 +1,42 @@
+/* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Eric Blake. */
+
+/*
+ * ISO C 99 <wchar.h> for platforms that have issues.
+ * <http://www.opengroup.org/susv3xbd/wchar.h.html>
+ *
+ * For now, this just ensures proper prerequisite inclusion order.
+ */
+
+#ifndef _GL_WCHAR_H
+#define _GL_WCHAR_H
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+
+/* Include the original <wchar.h>. */
+#include @ABSOLUTE_WCHAR_H@
+
+#endif /* _GL_WCHAR_H */
diff --git a/lib/wctype_.h b/lib/wctype_.h
new file mode 100644
index 0000000..1297c61
--- /dev/null
+++ b/lib/wctype_.h
@@ -0,0 +1,154 @@
+/* A substitute for ISO C99 <wctype.h>, for platforms that lack it.
+
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Bruno Haible and Paul Eggert. */
+
+/*
+ * ISO C 99 <wctype.h> for platforms that lack it.
+ * <http://www.opengroup.org/susv3xbd/wctype.h.html>
+ *
+ * iswctype, towctrans, towlower, towupper, wctrans, wctype,
+ * wctrans_t, and wctype_t are not yet implemented.
+ */
+
+#ifndef _GL_WCTYPE_H
+#define _GL_WCTYPE_H
+
+#if @HAVE_WINT_T@
+/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>.
+ Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
+# include <wchar.h>
+typedef wint_t __wctype_wint_t;
+#else
+typedef int __wctype_wint_t;
+#endif
+
+/* Include the original <wctype.h> if it exists.
+ BeOS 5 has the functions but no <wctype.h>. */
+#if @HAVE_WCTYPE_H@
+# include @ABSOLUTE_WCTYPE_H@
+#endif
+
+/* FreeBSD 4.4 to 4.11 has <wctype.h> but lacks the functions.
+ Assume all 12 functions are implemented the same way, or not at all. */
+#if ! HAVE_ISWCNTRL
+
+/* IRIX 5.3 has macros but no functions, its isw* macros refer to an
+ undefined variable _ctmp_ and to <ctype.h> macros like _P, and they
+ refer to system functions like _iswctype that are not in the
+ standard C library. Rather than try to get ancient buggy
+ implementations like this to work, just disable them. */
+# undef iswalnum
+# undef iswalpha
+# undef iswblank
+# undef iswcntrl
+# undef iswdigit
+# undef iswgraph
+# undef iswlower
+# undef iswprint
+# undef iswpunct
+# undef iswspace
+# undef iswupper
+# undef iswxdigit
+
+static inline int
+iswalnum (__wctype_wint_t wc)
+{
+ return ((wc >= '0' && wc <= '9')
+ || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'));
+}
+
+static inline int
+iswalpha (__wctype_wint_t wc)
+{
+ return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z';
+}
+
+static inline int
+iswblank (__wctype_wint_t wc)
+{
+ return wc == ' ' || wc == '\t';
+}
+
+static inline int
+iswcntrl (__wctype_wint_t wc)
+{
+ return (wc & ~0x1f) == 0 || wc == 0x7f;
+}
+
+static inline int
+iswdigit (__wctype_wint_t wc)
+{
+ return wc >= '0' && wc <= '9';
+}
+
+static inline int
+iswgraph (__wctype_wint_t wc)
+{
+ return wc >= '!' && wc <= '~';
+}
+
+static inline int
+iswlower (__wctype_wint_t wc)
+{
+ return wc >= 'a' && wc <= 'z';
+}
+
+static inline int
+iswprint (__wctype_wint_t wc)
+{
+ return wc >= ' ' && wc <= '~';
+}
+
+static inline int
+iswpunct (__wctype_wint_t wc)
+{
+ return (wc >= '!' && wc <= '~'
+ && !((wc >= '0' && wc <= '9')
+ || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')));
+}
+
+static inline int
+iswspace (__wctype_wint_t wc)
+{
+ return (wc == ' ' || wc == '\t'
+ || wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r');
+}
+
+static inline int
+iswupper (__wctype_wint_t wc)
+{
+ return wc >= 'A' && wc <= 'Z';
+}
+
+static inline int
+iswxdigit (__wctype_wint_t wc)
+{
+ return ((wc >= '0' && wc <= '9')
+ || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F'));
+}
+
+# endif /* ! HAVE_ISWCNTRL */
+
+#endif /* _GL_WCTYPE_H */
diff --git a/lib/wcwidth.h b/lib/wcwidth.h
new file mode 100644
index 0000000..8ed5ff8
--- /dev/null
+++ b/lib/wcwidth.h
@@ -0,0 +1,57 @@
+/* Determine the number of screen columns needed for a character.
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _gl_WCWIDTH_H
+#define _gl_WCWIDTH_H
+
+#if HAVE_WCHAR_T
+
+/* Get wcwidth if available, along with wchar_t. */
+# include <wchar.h>
+
+/* Get iswprint. */
+# include <wctype.h>
+
+# ifndef HAVE_DECL_WCWIDTH
+"this configure-time declaration test was not run"
+# endif
+# ifndef wcwidth
+# if !HAVE_WCWIDTH
+
+/* wcwidth doesn't exist, so assume all printable characters have
+ width 1. */
+static inline int
+wcwidth (wchar_t wc)
+{
+ return wc == 0 ? 0 : iswprint (wc) ? 1 : -1;
+}
+
+# elif !HAVE_DECL_WCWIDTH
+
+/* wcwidth exists but is not declared. */
+extern
+# ifdef __cplusplus
+"C"
+# endif
+int wcwidth (int /* actually wchar_t */);
+
+# endif
+# endif
+
+#endif /* HAVE_WCHAR_T */
+
+#endif /* _gl_WCWIDTH_H */
diff --git a/lib/xalloc-die.c b/lib/xalloc-die.c
new file mode 100644
index 0000000..090f060
--- /dev/null
+++ b/lib/xalloc-die.c
@@ -0,0 +1,42 @@
+/* Report a memory allocation failure and exit.
+
+ Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "xalloc.h"
+
+#include <stdlib.h>
+
+#include "error.h"
+#include "exitfail.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+void
+xalloc_die (void)
+{
+ error (exit_failure, 0, "%s", _("memory exhausted"));
+
+ /* The `noreturn' cannot be given to error, since it may return if
+ its first argument is 0. To help compilers understand the
+ xalloc_die does not return, call abort. Also, the abort is a
+ safety feature if exit_failure is 0 (which shouldn't happen). */
+ abort ();
+}
diff --git a/lib/xalloc.h b/lib/xalloc.h
new file mode 100644
index 0000000..0c6d8dc
--- /dev/null
+++ b/lib/xalloc.h
@@ -0,0 +1,271 @@
+/* xalloc.h -- malloc with out-of-memory checking
+
+ Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+ 1999, 2000, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef XALLOC_H_
+# define XALLOC_H_
+
+# include <stddef.h>
+
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+
+# ifndef __attribute__
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
+# define __attribute__(x)
+# endif
+# endif
+
+# ifndef ATTRIBUTE_NORETURN
+# define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
+# endif
+
+/* This function is always triggered when memory is exhausted.
+ It must be defined by the application, either explicitly
+ or by using gnulib's xalloc-die module. This is the
+ function to call when one wants the program to die because of a
+ memory allocation failure. */
+extern void xalloc_die (void) ATTRIBUTE_NORETURN;
+
+void *xmalloc (size_t s);
+void *xzalloc (size_t s);
+void *xcalloc (size_t n, size_t s);
+void *xrealloc (void *p, size_t s);
+void *x2realloc (void *p, size_t *pn);
+void *xmemdup (void const *p, size_t s);
+char *xstrdup (char const *str);
+
+/* Return 1 if an array of N objects, each of size S, cannot exist due
+ to size arithmetic overflow. S must be positive and N must be
+ nonnegative. This is a macro, not an inline function, so that it
+ works correctly even when SIZE_MAX < N.
+
+ By gnulib convention, SIZE_MAX represents overflow in size
+ calculations, so the conservative dividend to use here is
+ SIZE_MAX - 1, since SIZE_MAX might represent an overflowed value.
+ However, malloc (SIZE_MAX) fails on all known hosts where
+ sizeof (ptrdiff_t) <= sizeof (size_t), so do not bother to test for
+ exactly-SIZE_MAX allocations on such hosts; this avoids a test and
+ branch when S is known to be 1. */
+# define xalloc_oversized(n, s) \
+ ((size_t) (sizeof (ptrdiff_t) <= sizeof (size_t) ? -1 : -2) / (s) < (n))
+
+
+/* In the following macros, T must be an elementary or structure/union or
+ typedef'ed type, or a pointer to such a type. To apply one of the
+ following macros to a function pointer or array type, you need to typedef
+ it first and use the typedef name. */
+
+/* Allocate an object of type T dynamically, with error checking. */
+/* extern t *XMALLOC (typename t); */
+# define XMALLOC(t) ((t *) xmalloc (sizeof (t)))
+
+/* Allocate memory for N elements of type T, with error checking. */
+/* extern t *XNMALLOC (size_t n, typename t); */
+# define XNMALLOC(n, t) \
+ ((t *) (sizeof (t) == 1 ? xmalloc (n) : xnmalloc (n, sizeof (t))))
+
+/* Allocate an object of type T dynamically, with error checking,
+ and zero it. */
+/* extern t *XZALLOC (typename t); */
+# define XZALLOC(t) ((t *) xzalloc (sizeof (t)))
+
+/* Allocate memory for N elements of type T, with error checking,
+ and zero it. */
+/* extern t *XCALLOC (size_t n, typename t); */
+# define XCALLOC(n, t) \
+ ((t *) (sizeof (t) == 1 ? xzalloc (n) : xcalloc (n, sizeof (t))))
+
+
+# if HAVE_INLINE
+# define static_inline static inline
+# else
+ void *xnmalloc (size_t n, size_t s);
+ void *xnrealloc (void *p, size_t n, size_t s);
+ void *x2nrealloc (void *p, size_t *pn, size_t s);
+ char *xcharalloc (size_t n);
+# endif
+
+# ifdef static_inline
+
+/* Allocate an array of N objects, each with S bytes of memory,
+ dynamically, with error checking. S must be nonzero. */
+
+static_inline void *
+xnmalloc (size_t n, size_t s)
+{
+ if (xalloc_oversized (n, s))
+ xalloc_die ();
+ return xmalloc (n * s);
+}
+
+/* Change the size of an allocated block of memory P to an array of N
+ objects each of S bytes, with error checking. S must be nonzero. */
+
+static_inline void *
+xnrealloc (void *p, size_t n, size_t s)
+{
+ if (xalloc_oversized (n, s))
+ xalloc_die ();
+ return xrealloc (p, n * s);
+}
+
+/* If P is null, allocate a block of at least *PN such objects;
+ otherwise, reallocate P so that it contains more than *PN objects
+ each of S bytes. *PN must be nonzero unless P is null, and S must
+ be nonzero. Set *PN to the new number of objects, and return the
+ pointer to the new block. *PN is never set to zero, and the
+ returned pointer is never null.
+
+ Repeated reallocations are guaranteed to make progress, either by
+ allocating an initial block with a nonzero size, or by allocating a
+ larger block.
+
+ In the following implementation, nonzero sizes are increased by a
+ factor of approximately 1.5 so that repeated reallocations have
+ O(N) overall cost rather than O(N**2) cost, but the
+ specification for this function does not guarantee that rate.
+
+ Here is an example of use:
+
+ int *p = NULL;
+ size_t used = 0;
+ size_t allocated = 0;
+
+ void
+ append_int (int value)
+ {
+ if (used == allocated)
+ p = x2nrealloc (p, &allocated, sizeof *p);
+ p[used++] = value;
+ }
+
+ This causes x2nrealloc to allocate a block of some nonzero size the
+ first time it is called.
+
+ To have finer-grained control over the initial size, set *PN to a
+ nonzero value before calling this function with P == NULL. For
+ example:
+
+ int *p = NULL;
+ size_t used = 0;
+ size_t allocated = 0;
+ size_t allocated1 = 1000;
+
+ void
+ append_int (int value)
+ {
+ if (used == allocated)
+ {
+ p = x2nrealloc (p, &allocated1, sizeof *p);
+ allocated = allocated1;
+ }
+ p[used++] = value;
+ }
+
+ */
+
+static_inline void *
+x2nrealloc (void *p, size_t *pn, size_t s)
+{
+ size_t n = *pn;
+
+ if (! p)
+ {
+ if (! n)
+ {
+ /* The approximate size to use for initial small allocation
+ requests, when the invoking code specifies an old size of
+ zero. 64 bytes is the largest "small" request for the
+ GNU C library malloc. */
+ enum { DEFAULT_MXFAST = 64 };
+
+ n = DEFAULT_MXFAST / s;
+ n += !n;
+ }
+ }
+ else
+ {
+ /* Set N = ceil (1.5 * N) so that progress is made if N == 1.
+ Check for overflow, so that N * S stays in size_t range.
+ The check is slightly conservative, but an exact check isn't
+ worth the trouble. */
+ if ((size_t) -1 / 3 * 2 / s <= n)
+ xalloc_die ();
+ n += (n + 1) / 2;
+ }
+
+ *pn = n;
+ return xrealloc (p, n * s);
+}
+
+/* Return a pointer to a new buffer of N bytes. This is like xmalloc,
+ except it returns char *. */
+
+static_inline char *
+xcharalloc (size_t n)
+{
+ return XNMALLOC (n, char);
+}
+
+# endif
+
+# ifdef __cplusplus
+}
+
+/* C++ does not allow conversions from void * to other pointer types
+ without a cast. Use templates to work around the problem when
+ possible. */
+
+template <typename T> inline T *
+xrealloc (T *p, size_t s)
+{
+ return (T *) xrealloc ((void *) p, s);
+}
+
+template <typename T> inline T *
+xnrealloc (T *p, size_t n, size_t s)
+{
+ return (T *) xnrealloc ((void *) p, n, s);
+}
+
+template <typename T> inline T *
+x2realloc (T *p, size_t *pn)
+{
+ return (T *) x2realloc ((void *) p, pn);
+}
+
+template <typename T> inline T *
+x2nrealloc (T *p, size_t *pn, size_t s)
+{
+ return (T *) x2nrealloc ((void *) p, pn, s);
+}
+
+template <typename T> inline T *
+xmemdup (T const *p, size_t s)
+{
+ return (T *) xmemdup ((void const *) p, s);
+}
+
+# endif
+
+
+#endif /* !XALLOC_H_ */
diff --git a/lib/xfts.c b/lib/xfts.c
new file mode 100644
index 0000000..1402e95
--- /dev/null
+++ b/lib/xfts.c
@@ -0,0 +1,64 @@
+/* xfts.c -- a wrapper for fts_open
+
+ Copyright (C) 2003, 2005-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+
+#include <stdbool.h>
+#include <stdlib.h>
+
+#include "error.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+#include "quote.h"
+#include "xalloc.h"
+#include "xfts.h"
+
+/* Fail with a proper diagnostic if fts_open fails. */
+
+FTS *
+xfts_open (char * const *argv, int options,
+ int (*compar) (const FTSENT **, const FTSENT **))
+{
+ FTS *fts = fts_open (argv, options | FTS_CWDFD, compar);
+ if (fts == NULL)
+ {
+ /* This can fail in three ways: out of memory, invalid bit_flags,
+ and one or more of the FILES is an empty string. We could try
+ to decipher that errno==EINVAL means invalid bit_flags and
+ errno==ENOENT means there's an empty string, but that seems wrong.
+ Ideally, fts_open would return a proper error indicator. For now,
+ we'll presume that the bit_flags are valid and just check for
+ empty strings. */
+ bool invalid_arg = false;
+ for (; *argv; ++argv)
+ {
+ if (**argv == '\0')
+ invalid_arg = true;
+ }
+ if (invalid_arg)
+ error (EXIT_FAILURE, 0, _("invalid argument: %s"), quote (""));
+ else
+ xalloc_die ();
+ }
+
+ return fts;
+}
diff --git a/lib/xfts.h b/lib/xfts.h
new file mode 100644
index 0000000..4790613
--- /dev/null
+++ b/lib/xfts.h
@@ -0,0 +1,5 @@
+#include "fts_.h"
+
+FTS *
+xfts_open (char * const *, int options,
+ int (*) (const FTSENT **, const FTSENT **));
diff --git a/lib/xgetcwd.c b/lib/xgetcwd.c
new file mode 100644
index 0000000..26ea5da
--- /dev/null
+++ b/lib/xgetcwd.c
@@ -0,0 +1,41 @@
+/* xgetcwd.c -- return current directory with unlimited length
+
+ Copyright (C) 2001, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+
+#include "xgetcwd.h"
+
+#include <errno.h>
+#include <unistd.h>
+
+#include "xalloc.h"
+
+/* Return the current directory, newly allocated.
+ Upon an out-of-memory error, call xalloc_die.
+ Upon any other type of error, return NULL. */
+
+char *
+xgetcwd (void)
+{
+ char *cwd = getcwd (NULL, 0);
+ if (! cwd && errno == ENOMEM)
+ xalloc_die ();
+ return cwd;
+}
diff --git a/lib/xgetcwd.h b/lib/xgetcwd.h
new file mode 100644
index 0000000..70afe35
--- /dev/null
+++ b/lib/xgetcwd.h
@@ -0,0 +1,18 @@
+/* prototype for xgetcwd
+ Copyright (C) 1995, 2001, 2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+extern char *xgetcwd (void);
diff --git a/lib/xgethostname.c b/lib/xgethostname.c
new file mode 100644
index 0000000..b4c8dcc
--- /dev/null
+++ b/lib/xgethostname.c
@@ -0,0 +1,79 @@
+/* xgethostname.c -- return current hostname with unlimited length
+
+ Copyright (C) 1992, 1996, 2000, 2001, 2003, 2004, 2005, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+
+/* Specification. */
+#include "xgethostname.h"
+
+#include <stdlib.h>
+#include <errno.h>
+#include <unistd.h>
+
+#include "xalloc.h"
+
+#ifndef ENAMETOOLONG
+# define ENAMETOOLONG 0
+#endif
+
+#ifndef INITIAL_HOSTNAME_LENGTH
+# define INITIAL_HOSTNAME_LENGTH 34
+#endif
+
+/* Return the current hostname in malloc'd storage.
+ If malloc fails, exit.
+ Upon any other failure, return NULL and set errno. */
+char *
+xgethostname (void)
+{
+ char *hostname = NULL;
+ size_t size = INITIAL_HOSTNAME_LENGTH;
+
+ while (1)
+ {
+ /* Use SIZE_1 here rather than SIZE to work around the bug in
+ SunOS 5.5's gethostname whereby it NUL-terminates HOSTNAME
+ even when the name is as long as the supplied buffer. */
+ size_t size_1;
+
+ hostname = x2realloc (hostname, &size);
+ size_1 = size - 1;
+ hostname[size_1 - 1] = '\0';
+ errno = 0;
+
+ if (gethostname (hostname, size_1) == 0)
+ {
+ if (! hostname[size_1 - 1])
+ break;
+ }
+ else if (errno != 0 && errno != ENAMETOOLONG && errno != EINVAL
+ /* OSX/Darwin does this when the buffer is not large enough */
+ && errno != ENOMEM)
+ {
+ int saved_errno = errno;
+ free (hostname);
+ errno = saved_errno;
+ return NULL;
+ }
+ }
+
+ return hostname;
+}
diff --git a/lib/xgethostname.h b/lib/xgethostname.h
new file mode 100644
index 0000000..0177a40
--- /dev/null
+++ b/lib/xgethostname.h
@@ -0,0 +1 @@
+char *xgethostname (void);
diff --git a/lib/xmalloc.c b/lib/xmalloc.c
new file mode 100644
index 0000000..318e0dd
--- /dev/null
+++ b/lib/xmalloc.c
@@ -0,0 +1,123 @@
+/* xmalloc.c -- malloc with out of memory checking
+
+ Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+ 1999, 2000, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+ Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#if ! HAVE_INLINE
+# define static_inline
+#endif
+#include "xalloc.h"
+#undef static_inline
+
+#include <stdlib.h>
+#include <string.h>
+
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+
+/* 1 if calloc is known to be compatible with GNU calloc. This
+ matters if we are not also using the calloc module, which defines
+ HAVE_CALLOC and supports the GNU API even on non-GNU platforms. */
+#if defined HAVE_CALLOC || defined __GLIBC__
+enum { HAVE_GNU_CALLOC = 1 };
+#else
+enum { HAVE_GNU_CALLOC = 0 };
+#endif
+
+/* Allocate N bytes of memory dynamically, with error checking. */
+
+void *
+xmalloc (size_t n)
+{
+ void *p = malloc (n);
+ if (!p && n != 0)
+ xalloc_die ();
+ return p;
+}
+
+/* Change the size of an allocated block of memory P to N bytes,
+ with error checking. */
+
+void *
+xrealloc (void *p, size_t n)
+{
+ p = realloc (p, n);
+ if (!p && n != 0)
+ xalloc_die ();
+ return p;
+}
+
+/* If P is null, allocate a block of at least *PN bytes; otherwise,
+ reallocate P so that it contains more than *PN bytes. *PN must be
+ nonzero unless P is null. Set *PN to the new block's size, and
+ return the pointer to the new block. *PN is never set to zero, and
+ the returned pointer is never null. */
+
+void *
+x2realloc (void *p, size_t *pn)
+{
+ return x2nrealloc (p, pn, 1);
+}
+
+/* Allocate S bytes of zeroed memory dynamically, with error checking.
+ There's no need for xnzalloc (N, S), since it would be equivalent
+ to xcalloc (N, S). */
+
+void *
+xzalloc (size_t s)
+{
+ return memset (xmalloc (s), 0, s);
+}
+
+/* Allocate zeroed memory for N elements of S bytes, with error
+ checking. S must be nonzero. */
+
+void *
+xcalloc (size_t n, size_t s)
+{
+ void *p;
+ /* Test for overflow, since some calloc implementations don't have
+ proper overflow checks. But omit overflow and size-zero tests if
+ HAVE_GNU_CALLOC, since GNU calloc catches overflow and never
+ returns NULL if successful. */
+ if ((! HAVE_GNU_CALLOC && xalloc_oversized (n, s))
+ || (! (p = calloc (n, s)) && (HAVE_GNU_CALLOC || n != 0)))
+ xalloc_die ();
+ return p;
+}
+
+/* Clone an object P of size S, with error checking. There's no need
+ for xnmemdup (P, N, S), since xmemdup (P, N * S) works without any
+ need for an arithmetic overflow check. */
+
+void *
+xmemdup (void const *p, size_t s)
+{
+ return memcpy (xmalloc (s), p, s);
+}
+
+/* Clone STRING. */
+
+char *
+xstrdup (char const *string)
+{
+ return xmemdup (string, strlen (string) + 1);
+}
diff --git a/lib/xmemcoll.c b/lib/xmemcoll.c
new file mode 100644
index 0000000..de00c84
--- /dev/null
+++ b/lib/xmemcoll.c
@@ -0,0 +1,58 @@
+/* Locale-specific memory comparison.
+
+ Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Contributed by Paul Eggert <eggert@twinsun.com>. */
+
+#include <config.h>
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+#include "error.h"
+#include "exitfail.h"
+#include "memcoll.h"
+#include "quotearg.h"
+#include "xmemcoll.h"
+
+/* Compare S1 (with length S1LEN) and S2 (with length S2LEN) according
+ to the LC_COLLATE locale. S1 and S2 do not overlap, and are not
+ adjacent. Temporarily modify the bytes after S1 and S2, but
+ restore their original contents before returning. Report an error
+ and exit if there is an error. */
+
+int
+xmemcoll (char *s1, size_t s1len, char *s2, size_t s2len)
+{
+ int diff = memcoll (s1, s1len, s2, s2len);
+ int collation_errno = errno;
+
+ if (collation_errno)
+ {
+ error (0, collation_errno, _("string comparison failed"));
+ error (0, 0, _("Set LC_ALL='C' to work around the problem."));
+ error (exit_failure, 0,
+ _("The strings compared were %s and %s."),
+ quotearg_n_style_mem (0, locale_quoting_style, s1, s1len),
+ quotearg_n_style_mem (1, locale_quoting_style, s2, s2len));
+ }
+
+ return diff;
+}
diff --git a/lib/xmemcoll.h b/lib/xmemcoll.h
new file mode 100644
index 0000000..2f422e8
--- /dev/null
+++ b/lib/xmemcoll.h
@@ -0,0 +1,2 @@
+#include <stddef.h>
+int xmemcoll (char *, size_t, char *, size_t);
diff --git a/lib/xmemxfrm.c b/lib/xmemxfrm.c
new file mode 100644
index 0000000..8150334
--- /dev/null
+++ b/lib/xmemxfrm.c
@@ -0,0 +1,63 @@
+/* Locale-specific memory transformation
+
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert <eggert@cs.ucla.edu>. */
+
+#include <config.h>
+
+#include "xmemxfrm.h"
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+#include "error.h"
+#include "exitfail.h"
+#include "memxfrm.h"
+#include "quotearg.h"
+
+/* Store into DEST (of size DESTSIZE) the text in SRC (of size
+ SRCSIZE) transformed so that the result of memcmp on two
+ transformed texts (with ties going to the longer text) is the same
+ as the result of memcoll on the two texts before their
+ transformation. Perhaps temporarily modify the byte after SRC, but
+ restore its original contents before returning.
+
+ Return the size of the resulting text. DEST contains an
+ indeterminate value if the resulting size is greater than DESTSIZE.
+ Report an error and exit if there is an error. */
+
+size_t
+xmemxfrm (char *restrict dest, size_t destsize,
+ char *restrict src, size_t srcsize)
+{
+ size_t translated_size = memxfrm (dest, destsize, src, srcsize);
+
+ if (errno)
+ {
+ error (0, errno, _("string transformation failed"));
+ error (0, 0, _("Set LC_ALL='C' to work around the problem."));
+ error (exit_failure, 0,
+ _("The untransformed string was %s."),
+ quotearg_n_style_mem (0, locale_quoting_style, src, srcsize));
+ }
+
+ return translated_size;
+}
diff --git a/lib/xmemxfrm.h b/lib/xmemxfrm.h
new file mode 100644
index 0000000..7c4b8ad
--- /dev/null
+++ b/lib/xmemxfrm.h
@@ -0,0 +1,2 @@
+#include <stddef.h>
+size_t xmemxfrm (char *restrict, size_t, char *restrict, size_t);
diff --git a/lib/xnanosleep.c b/lib/xnanosleep.c
new file mode 100644
index 0000000..ebbd7ee
--- /dev/null
+++ b/lib/xnanosleep.c
@@ -0,0 +1,107 @@
+/* xnanosleep.c -- a more convenient interface to nanosleep
+
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Mostly written (for sleep.c) by Paul Eggert.
+ Factored out (creating this file) by Jim Meyering. */
+
+#include <config.h>
+
+#include "xnanosleep.h"
+
+#include <limits.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <assert.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <time.h>
+
+#include "intprops.h"
+
+#ifndef TIME_T_MAX
+# define TIME_T_MAX TYPE_MAXIMUM (time_t)
+#endif
+
+/* Sleep until the time (call it WAKE_UP_TIME) specified as
+ SECONDS seconds after the time this function is called.
+ SECONDS must be non-negative. If SECONDS is so large that
+ it is not representable as a `struct timespec', then use
+ the maximum value for that interval. Return -1 on failure
+ (setting errno), 0 on success. */
+
+int
+xnanosleep (double seconds)
+{
+ enum { BILLION = 1000000000 };
+
+ bool overflow = false;
+ double ns;
+ struct timespec ts_sleep;
+
+ assert (0 <= seconds);
+
+ /* Separate whole seconds from nanoseconds.
+ Be careful to detect any overflow. */
+ ts_sleep.tv_sec = seconds;
+ ns = BILLION * (seconds - ts_sleep.tv_sec);
+ overflow |= ! (ts_sleep.tv_sec <= seconds && 0 <= ns && ns <= BILLION);
+ ts_sleep.tv_nsec = ns;
+
+ /* Round up to the next whole number, if necessary, so that we
+ always sleep for at least the requested amount of time. Assuming
+ the default rounding mode, we don't have to worry about the
+ rounding error when computing 'ns' above, since the error won't
+ cause 'ns' to drop below an integer boundary. */
+ ts_sleep.tv_nsec += (ts_sleep.tv_nsec < ns);
+
+ /* Normalize the interval length. nanosleep requires this. */
+ if (BILLION <= ts_sleep.tv_nsec)
+ {
+ time_t t = ts_sleep.tv_sec + 1;
+
+ /* Detect integer overflow. */
+ overflow |= (t < ts_sleep.tv_sec);
+
+ ts_sleep.tv_sec = t;
+ ts_sleep.tv_nsec -= BILLION;
+ }
+
+ for (;;)
+ {
+ if (overflow)
+ {
+ ts_sleep.tv_sec = TIME_T_MAX;
+ ts_sleep.tv_nsec = BILLION - 1;
+ }
+
+ /* Linux-2.6.8.1's nanosleep returns -1, but doesn't set errno
+ when resumed after being suspended. Earlier versions would
+ set errno to EINTR. nanosleep from linux-2.6.10, as well as
+ implementations by (all?) other vendors, doesn't return -1
+ in that case; either it continues sleeping (if time remains)
+ or it returns zero (if the wake-up time has passed). */
+ errno = 0;
+ if (nanosleep (&ts_sleep, NULL) == 0)
+ break;
+ if (errno != EINTR && errno != 0)
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/lib/xnanosleep.h b/lib/xnanosleep.h
new file mode 100644
index 0000000..56232d5
--- /dev/null
+++ b/lib/xnanosleep.h
@@ -0,0 +1 @@
+int xnanosleep (double);
diff --git a/lib/xreadlink-with-size.c b/lib/xreadlink-with-size.c
new file mode 100644
index 0000000..5524a8a
--- /dev/null
+++ b/lib/xreadlink-with-size.c
@@ -0,0 +1,105 @@
+/* xreadlink.c -- readlink wrapper to return the link name in malloc'd storage
+
+ Copyright (C) 2001, 2003, 2004, 2005, 2006, 2007 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering <jim@meyering.net> */
+
+#include <config.h>
+
+#include "xreadlink.h"
+
+#include <stdio.h>
+#include <errno.h>
+#include <limits.h>
+#include <sys/types.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+#ifndef SSIZE_MAX
+# define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2))
+#endif
+
+/* SYMLINK_MAX is used only for an initial memory-allocation sanity
+ check, so it's OK to guess too small on hosts where there is no
+ arbitrary limit to symbolic link length. */
+#ifndef SYMLINK_MAX
+# define SYMLINK_MAX 1024
+#endif
+
+#define MAXSIZE (SIZE_MAX < SSIZE_MAX ? SIZE_MAX : SSIZE_MAX)
+
+#include "xalloc.h"
+
+/* Call readlink to get the symbolic link value of FILE.
+ SIZE is a hint as to how long the link is expected to be;
+ typically it is taken from st_size. It need not be correct.
+ Return a pointer to that NUL-terminated string in malloc'd storage.
+ If readlink fails, return NULL (caller may use errno to diagnose).
+ If malloc fails, or if the link value is longer than SSIZE_MAX :-),
+ give a diagnostic and exit. */
+
+char *
+xreadlink_with_size (char const *file, size_t size)
+{
+ /* Some buggy file systems report garbage in st_size. Defend
+ against them by ignoring outlandish st_size values in the initial
+ memory allocation. */
+ size_t symlink_max = SYMLINK_MAX;
+ size_t INITIAL_LIMIT_BOUND = 8 * 1024;
+ size_t initial_limit = (symlink_max < INITIAL_LIMIT_BOUND
+ ? symlink_max + 1
+ : INITIAL_LIMIT_BOUND);
+
+ /* The initial buffer size for the link value. */
+ size_t buf_size = size < initial_limit ? size + 1 : initial_limit;
+
+ while (1)
+ {
+ char *buffer = xmalloc (buf_size);
+ ssize_t r = readlink (file, buffer, buf_size);
+ size_t link_length = r;
+
+ /* On AIX 5L v5.3 and HP-UX 11i v2 04/09, readlink returns -1
+ with errno == ERANGE if the buffer is too small. */
+ if (r < 0 && errno != ERANGE)
+ {
+ int saved_errno = errno;
+ free (buffer);
+ errno = saved_errno;
+ return NULL;
+ }
+
+ if (link_length < buf_size)
+ {
+ buffer[link_length] = 0;
+ return buffer;
+ }
+
+ free (buffer);
+ if (buf_size <= MAXSIZE / 2)
+ buf_size *= 2;
+ else if (buf_size < MAXSIZE)
+ buf_size = MAXSIZE;
+ else
+ xalloc_die ();
+ }
+}
diff --git a/lib/xreadlink.c b/lib/xreadlink.c
new file mode 100644
index 0000000..2aba265
--- /dev/null
+++ b/lib/xreadlink.c
@@ -0,0 +1,131 @@
+/* xreadlink.c -- readlink wrapper to return the link name in malloc'd storage
+
+ Copyright (C) 2001, 2003-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering <jim@meyering.net>
+ and Bruno Haible <bruno@clisp.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "xreadlink.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <limits.h>
+#include <sys/types.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+#ifndef SSIZE_MAX
+# define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2))
+#endif
+
+#ifdef NO_XMALLOC
+# define xmalloc malloc
+#else
+# include "xalloc.h"
+#endif
+
+/* Call readlink to get the symbolic link value of FILENAME.
+ Return a pointer to that NUL-terminated string in malloc'd storage.
+ If readlink fails, return NULL (caller may use errno to diagnose).
+ If realloc fails, or if the link value is longer than SIZE_MAX :-),
+ give a diagnostic and exit. */
+
+char *
+xreadlink (char const *filename)
+{
+ /* The initial buffer size for the link value. A power of 2
+ detects arithmetic overflow earlier, but is not required. */
+#define INITIAL_BUF_SIZE 1024
+
+ /* Allocate the initial buffer on the stack. This way, in the common
+ case of a symlink of small size, we get away with a single small malloc()
+ instead of a big malloc() followed by a shrinking realloc(). */
+ char initial_buf[INITIAL_BUF_SIZE];
+
+ char *buffer = initial_buf;
+ size_t buf_size = sizeof (initial_buf);
+
+ while (1)
+ {
+ /* Attempt to read the link into the current buffer. */
+ ssize_t link_length = readlink (filename, buffer, buf_size);
+
+ /* On AIX 5L v5.3 and HP-UX 11i v2 04/09, readlink returns -1
+ with errno == ERANGE if the buffer is too small. */
+ if (link_length < 0 && errno != ERANGE)
+ {
+ if (buffer != initial_buf)
+ {
+ int saved_errno = errno;
+ free (buffer);
+ errno = saved_errno;
+ }
+ return NULL;
+ }
+
+ if ((size_t) link_length < buf_size)
+ {
+ buffer[link_length++] = '\0';
+
+ /* Return it in a chunk of memory as small as possible. */
+ if (buffer == initial_buf)
+ {
+ buffer = (char *) xmalloc (link_length);
+#ifdef NO_XMALLOC
+ if (buffer == NULL)
+ return NULL;
+#endif
+ memcpy (buffer, initial_buf, link_length);
+ }
+ else
+ {
+ /* Shrink buffer before returning it. */
+ if ((size_t) link_length < buf_size)
+ {
+ char *smaller_buffer = (char *) realloc (buffer, link_length);
+
+ if (smaller_buffer != NULL)
+ buffer = smaller_buffer;
+ }
+ }
+ return buffer;
+ }
+
+ if (buffer != initial_buf)
+ free (buffer);
+ buf_size *= 2;
+ if (SSIZE_MAX < buf_size || (SIZE_MAX / 2 < SSIZE_MAX && buf_size == 0))
+#ifdef NO_XMALLOC
+ return NULL;
+#else
+ xalloc_die ();
+#endif
+ buffer = (char *) xmalloc (buf_size);
+#ifdef NO_XMALLOC
+ if (buffer == NULL)
+ return NULL;
+#endif
+ }
+}
diff --git a/lib/xreadlink.h b/lib/xreadlink.h
new file mode 100644
index 0000000..6d93fe6
--- /dev/null
+++ b/lib/xreadlink.h
@@ -0,0 +1,34 @@
+/* Reading symbolic links without size limitation.
+
+ Copyright (C) 2001, 2003, 2004, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering <jim@meyering.net> */
+
+#include <stddef.h>
+
+/* Call readlink to get the symbolic link value of FILENAME.
+ Return a pointer to that NUL-terminated string in malloc'd storage.
+ If readlink fails, return NULL and set errno. */
+extern char *xreadlink (char const *filename);
+
+/* Call readlink to get the symbolic link value of FILENAME.
+ SIZE_HINT is a hint as to how long the link is expected to be;
+ typically it is taken from st_size. It need not be correct.
+ Return a pointer to that NUL-terminated string in malloc'd storage.
+ If readlink fails, return NULL and set errno. */
+extern char *xreadlink_with_size (char const *filename, size_t size_hint);
diff --git a/lib/xstrndup.c b/lib/xstrndup.c
new file mode 100644
index 0000000..7ccefd7
--- /dev/null
+++ b/lib/xstrndup.c
@@ -0,0 +1,37 @@
+/* Duplicate a bounded initial segment of a string, with out-of-memory
+ checking.
+ Copyright (C) 2003, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#include "xstrndup.h"
+
+#include <string.h>
+#include "xalloc.h"
+
+/* Return a newly allocated copy of at most N bytes of STRING.
+ In other words, return a copy of the initial segment of length N of
+ STRING. */
+char *
+xstrndup (const char *string, size_t n)
+{
+ char *s = strndup (string, n);
+ if (! s)
+ xalloc_die ();
+ return s;
+}
diff --git a/lib/xstrndup.h b/lib/xstrndup.h
new file mode 100644
index 0000000..88354cf
--- /dev/null
+++ b/lib/xstrndup.h
@@ -0,0 +1,24 @@
+/* Duplicate a bounded initial segment of a string, with out-of-memory
+ checking.
+ Copyright (C) 2003 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <stddef.h>
+
+/* Return a newly allocated copy of at most N bytes of STRING.
+ In other words, return a copy of the initial segment of length N of
+ STRING. */
+extern char *xstrndup (const char *string, size_t n);
diff --git a/lib/xstrtod.c b/lib/xstrtod.c
new file mode 100644
index 0000000..86e124f
--- /dev/null
+++ b/lib/xstrtod.c
@@ -0,0 +1,72 @@
+/* error-checking interface to strtod-like functions
+
+ Copyright (C) 1996, 1999, 2000, 2003, 2004, 2005, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+
+#include "xstrtod.h"
+
+#include <errno.h>
+#include <limits.h>
+#include <stdio.h>
+
+#if LONG
+# define XSTRTOD xstrtold
+# define DOUBLE long double
+#else
+# define XSTRTOD xstrtod
+# define DOUBLE double
+#endif
+
+/* An interface to a string-to-floating-point conversion function that
+ encapsulates all the error checking one should usually perform.
+ Like strtod/strtold, but upon successful
+ conversion put the result in *RESULT and return true. Return
+ false and don't modify *RESULT upon any failure. CONVERT
+ specifies the conversion function, e.g., strtod itself. */
+
+bool
+XSTRTOD (char const *str, char const **ptr, DOUBLE *result,
+ DOUBLE (*convert) (char const *, char **))
+{
+ DOUBLE val;
+ char *terminator;
+ bool ok = true;
+
+ errno = 0;
+ val = convert (str, &terminator);
+
+ /* Having a non-zero terminator is an error only when PTR is NULL. */
+ if (terminator == str || (ptr == NULL && *terminator != '\0'))
+ ok = false;
+ else
+ {
+ /* Allow underflow (in which case CONVERT returns zero),
+ but flag overflow as an error. */
+ if (val != 0 && errno == ERANGE)
+ ok = false;
+ }
+
+ if (ptr != NULL)
+ *ptr = terminator;
+
+ *result = val;
+ return ok;
+}
diff --git a/lib/xstrtod.h b/lib/xstrtod.h
new file mode 100644
index 0000000..1e5ad94
--- /dev/null
+++ b/lib/xstrtod.h
@@ -0,0 +1,31 @@
+/* Error-checking interface to strtod-like functions.
+
+ Copyright (C) 1996, 1998, 2003, 2004, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#ifndef XSTRTOD_H
+# define XSTRTOD_H 1
+
+# include <stdbool.h>
+
+bool xstrtod (const char *str, const char **ptr, double *result,
+ double (*convert) (char const *, char **));
+bool xstrtold (const char *str, const char **ptr, long double *result,
+ long double (*convert) (char const *, char **));
+
+#endif /* not XSTRTOD_H */
diff --git a/lib/xstrtoimax.c b/lib/xstrtoimax.c
new file mode 100644
index 0000000..b4baf5b
--- /dev/null
+++ b/lib/xstrtoimax.c
@@ -0,0 +1,6 @@
+#define __strtol strtoimax
+#define __strtol_t intmax_t
+#define __xstrtol xstrtoimax
+#define STRTOL_T_MINIMUM INTMAX_MIN
+#define STRTOL_T_MAXIMUM INTMAX_MAX
+#include "xstrtol.c"
diff --git a/lib/xstrtol.c b/lib/xstrtol.c
new file mode 100644
index 0000000..c4557a0
--- /dev/null
+++ b/lib/xstrtol.c
@@ -0,0 +1,263 @@
+/* A more useful interface to strtol.
+
+ Copyright (C) 1995, 1996, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#ifndef __strtol
+# define __strtol strtol
+# define __strtol_t long int
+# define __xstrtol xstrtol
+# define STRTOL_T_MINIMUM LONG_MIN
+# define STRTOL_T_MAXIMUM LONG_MAX
+#endif
+
+#include <config.h>
+
+#include "xstrtol.h"
+
+/* Some pre-ANSI implementations (e.g. SunOS 4)
+ need stderr defined if assertion checking is enabled. */
+#include <stdio.h>
+
+#include <assert.h>
+#include <ctype.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "intprops.h"
+
+static strtol_error
+bkm_scale (__strtol_t *x, int scale_factor)
+{
+ if (TYPE_SIGNED (__strtol_t) && *x < STRTOL_T_MINIMUM / scale_factor)
+ {
+ *x = STRTOL_T_MINIMUM;
+ return LONGINT_OVERFLOW;
+ }
+ if (STRTOL_T_MAXIMUM / scale_factor < *x)
+ {
+ *x = STRTOL_T_MAXIMUM;
+ return LONGINT_OVERFLOW;
+ }
+ *x *= scale_factor;
+ return LONGINT_OK;
+}
+
+static strtol_error
+bkm_scale_by_power (__strtol_t *x, int base, int power)
+{
+ strtol_error err = LONGINT_OK;
+ while (power--)
+ err |= bkm_scale (x, base);
+ return err;
+}
+
+/* FIXME: comment. */
+
+strtol_error
+__xstrtol (const char *s, char **ptr, int strtol_base,
+ __strtol_t *val, const char *valid_suffixes)
+{
+ char *t_ptr;
+ char **p;
+ __strtol_t tmp;
+ strtol_error err = LONGINT_OK;
+
+ assert (0 <= strtol_base && strtol_base <= 36);
+
+ p = (ptr ? ptr : &t_ptr);
+
+ if (! TYPE_SIGNED (__strtol_t))
+ {
+ const char *q = s;
+ unsigned char ch = *q;
+ while (isspace (ch))
+ ch = *++q;
+ if (ch == '-')
+ return LONGINT_INVALID;
+ }
+
+ errno = 0;
+ tmp = __strtol (s, p, strtol_base);
+
+ if (*p == s)
+ {
+ /* If there is no number but there is a valid suffix, assume the
+ number is 1. The string is invalid otherwise. */
+ if (valid_suffixes && **p && strchr (valid_suffixes, **p))
+ tmp = 1;
+ else
+ return LONGINT_INVALID;
+ }
+ else if (errno != 0)
+ {
+ if (errno != ERANGE)
+ return LONGINT_INVALID;
+ err = LONGINT_OVERFLOW;
+ }
+
+ /* Let valid_suffixes == NULL mean `allow any suffix'. */
+ /* FIXME: update all callers except the ones that allow suffixes
+ after the number, changing last parameter NULL to `""'. */
+ if (!valid_suffixes)
+ {
+ *val = tmp;
+ return err;
+ }
+
+ if (**p != '\0')
+ {
+ int base = 1024;
+ int suffixes = 1;
+ strtol_error overflow;
+
+ if (!strchr (valid_suffixes, **p))
+ {
+ *val = tmp;
+ return err | LONGINT_INVALID_SUFFIX_CHAR;
+ }
+
+ if (strchr (valid_suffixes, '0'))
+ {
+ /* The ``valid suffix'' '0' is a special flag meaning that
+ an optional second suffix is allowed, which can change
+ the base. A suffix "B" (e.g. "100MB") stands for a power
+ of 1000, whereas a suffix "iB" (e.g. "100MiB") stands for
+ a power of 1024. If no suffix (e.g. "100M"), assume
+ power-of-1024. */
+
+ switch (p[0][1])
+ {
+ case 'i':
+ if (p[0][2] == 'B')
+ suffixes += 2;
+ break;
+
+ case 'B':
+ case 'D': /* 'D' is obsolescent */
+ base = 1000;
+ suffixes++;
+ break;
+ }
+ }
+
+ switch (**p)
+ {
+ case 'b':
+ overflow = bkm_scale (&tmp, 512);
+ break;
+
+ case 'B':
+ overflow = bkm_scale (&tmp, 1024);
+ break;
+
+ case 'c':
+ overflow = 0;
+ break;
+
+ case 'E': /* exa or exbi */
+ overflow = bkm_scale_by_power (&tmp, base, 6);
+ break;
+
+ case 'G': /* giga or gibi */
+ case 'g': /* 'g' is undocumented; for compatibility only */
+ overflow = bkm_scale_by_power (&tmp, base, 3);
+ break;
+
+ case 'k': /* kilo */
+ case 'K': /* kibi */
+ overflow = bkm_scale_by_power (&tmp, base, 1);
+ break;
+
+ case 'M': /* mega or mebi */
+ case 'm': /* 'm' is undocumented; for compatibility only */
+ overflow = bkm_scale_by_power (&tmp, base, 2);
+ break;
+
+ case 'P': /* peta or pebi */
+ overflow = bkm_scale_by_power (&tmp, base, 5);
+ break;
+
+ case 'T': /* tera or tebi */
+ case 't': /* 't' is undocumented; for compatibility only */
+ overflow = bkm_scale_by_power (&tmp, base, 4);
+ break;
+
+ case 'w':
+ overflow = bkm_scale (&tmp, 2);
+ break;
+
+ case 'Y': /* yotta or 2**80 */
+ overflow = bkm_scale_by_power (&tmp, base, 8);
+ break;
+
+ case 'Z': /* zetta or 2**70 */
+ overflow = bkm_scale_by_power (&tmp, base, 7);
+ break;
+
+ default:
+ *val = tmp;
+ return err | LONGINT_INVALID_SUFFIX_CHAR;
+ }
+
+ err |= overflow;
+ *p += suffixes;
+ if (**p)
+ err |= LONGINT_INVALID_SUFFIX_CHAR;
+ }
+
+ *val = tmp;
+ return err;
+}
+
+#ifdef TESTING_XSTRTO
+
+# include <stdio.h>
+# include "error.h"
+
+char *program_name;
+
+int
+main (int argc, char **argv)
+{
+ strtol_error s_err;
+ int i;
+
+ program_name = argv[0];
+ for (i=1; i<argc; i++)
+ {
+ char *p;
+ __strtol_t val;
+
+ s_err = __xstrtol (argv[i], &p, 0, &val, "bckmw");
+ if (s_err == LONGINT_OK)
+ {
+ printf ("%s->%lu (%s)\n", argv[i], val, p);
+ }
+ else
+ {
+ STRTOL_FATAL_ERROR (argv[i], "arg", s_err);
+ }
+ }
+ exit (0);
+}
+
+#endif /* TESTING_XSTRTO */
diff --git a/lib/xstrtol.h b/lib/xstrtol.h
new file mode 100644
index 0000000..475728a
--- /dev/null
+++ b/lib/xstrtol.h
@@ -0,0 +1,87 @@
+/* A more useful interface to strtol.
+
+ Copyright (C) 1995, 1996, 1998, 1999, 2001, 2002, 2003, 2004, 2006
+ Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef XSTRTOL_H_
+# define XSTRTOL_H_ 1
+
+# include "exitfail.h"
+
+# include <inttypes.h>
+
+# include "gettext.h"
+
+# ifndef _STRTOL_ERROR
+enum strtol_error
+ {
+ LONGINT_OK = 0,
+
+ /* These two values can be ORed together, to indicate that both
+ errors occurred. */
+ LONGINT_OVERFLOW = 1,
+ LONGINT_INVALID_SUFFIX_CHAR = 2,
+
+ LONGINT_INVALID_SUFFIX_CHAR_WITH_OVERFLOW = (LONGINT_INVALID_SUFFIX_CHAR
+ | LONGINT_OVERFLOW),
+ LONGINT_INVALID = 4
+ };
+typedef enum strtol_error strtol_error;
+# endif
+
+# define _DECLARE_XSTRTOL(name, type) \
+ strtol_error name (const char *, char **, int, type *, const char *);
+_DECLARE_XSTRTOL (xstrtol, long int)
+_DECLARE_XSTRTOL (xstrtoul, unsigned long int)
+_DECLARE_XSTRTOL (xstrtoimax, intmax_t)
+_DECLARE_XSTRTOL (xstrtoumax, uintmax_t)
+
+# define _STRTOL_ERROR(Exit_code, Str, Argument_type_string, Err) \
+ do \
+ { \
+ switch ((Err)) \
+ { \
+ default: \
+ abort (); \
+ \
+ case LONGINT_INVALID: \
+ error ((Exit_code), 0, gettext ("invalid %s `%s'"), \
+ (Argument_type_string), (Str)); \
+ break; \
+ \
+ case LONGINT_INVALID_SUFFIX_CHAR: \
+ case LONGINT_INVALID_SUFFIX_CHAR | LONGINT_OVERFLOW: \
+ error ((Exit_code), 0, \
+ gettext ("invalid character following %s in `%s'"), \
+ (Argument_type_string), (Str)); \
+ break; \
+ \
+ case LONGINT_OVERFLOW: \
+ error ((Exit_code), 0, gettext ("%s `%s' too large"), \
+ (Argument_type_string), (Str)); \
+ break; \
+ } \
+ } \
+ while (0)
+
+# define STRTOL_FATAL_ERROR(Str, Argument_type_string, Err) \
+ _STRTOL_ERROR (exit_failure, Str, Argument_type_string, Err)
+
+# define STRTOL_FAIL_WARN(Str, Argument_type_string, Err) \
+ _STRTOL_ERROR (0, Str, Argument_type_string, Err)
+
+#endif /* not XSTRTOL_H_ */
diff --git a/lib/xstrtold.c b/lib/xstrtold.c
new file mode 100644
index 0000000..50dc6a4
--- /dev/null
+++ b/lib/xstrtold.c
@@ -0,0 +1,2 @@
+#define LONG 1
+#include "xstrtod.c"
diff --git a/lib/xstrtoul.c b/lib/xstrtoul.c
new file mode 100644
index 0000000..285f7b9
--- /dev/null
+++ b/lib/xstrtoul.c
@@ -0,0 +1,6 @@
+#define __strtol strtoul
+#define __strtol_t unsigned long int
+#define __xstrtol xstrtoul
+#define STRTOL_T_MINIMUM 0
+#define STRTOL_T_MAXIMUM ULONG_MAX
+#include "xstrtol.c"
diff --git a/lib/xstrtoumax.c b/lib/xstrtoumax.c
new file mode 100644
index 0000000..9a2349f
--- /dev/null
+++ b/lib/xstrtoumax.c
@@ -0,0 +1,6 @@
+#define __strtol strtoumax
+#define __strtol_t uintmax_t
+#define __xstrtol xstrtoumax
+#define STRTOL_T_MINIMUM 0
+#define STRTOL_T_MAXIMUM UINTMAX_MAX
+#include "xstrtol.c"
diff --git a/lib/xtime.h b/lib/xtime.h
new file mode 100644
index 0000000..d268d2d
--- /dev/null
+++ b/lib/xtime.h
@@ -0,0 +1,87 @@
+/* xtime -- extended-resolution integer time stamps
+
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#ifndef XTIME_H_
+# define XTIME_H_ 1
+
+/* xtime_t is a signed type used for time stamps. It is an integer
+ type that is a count of nanoseconds -- except for obsolescent hosts
+ without sufficiently-wide integers, where it is a count of
+ seconds. */
+# if HAVE_LONG_LONG_INT
+typedef long long int xtime_t;
+# define XTIME_PRECISION 1000000000
+# else
+# include <limits.h>
+typedef long int xtime_t;
+# if LONG_MAX >> 31 >> 31 == 0
+# define XTIME_PRECISION 1
+# else
+# define XTIME_PRECISION 1000000000
+# endif
+# endif
+
+/* Return an extended time value that contains S seconds and NS
+ nanoseconds, without any overflow checking. */
+static inline xtime_t
+xtime_make (xtime_t s, long int ns)
+{
+ if (XTIME_PRECISION == 1)
+ return s;
+ else
+ return XTIME_PRECISION * s + ns;
+}
+
+/* Return the number of seconds in T, which must be nonnegative. */
+static inline xtime_t
+xtime_nonnegative_sec (xtime_t t)
+{
+ return t / XTIME_PRECISION;
+}
+
+/* Return the number of seconds in T. */
+static inline xtime_t
+xtime_sec (xtime_t t)
+{
+ return (XTIME_PRECISION == 1
+ ? t
+ : t < 0
+ ? (t + XTIME_PRECISION - 1) / XTIME_PRECISION - 1
+ : xtime_nonnegative_sec (t));
+}
+
+/* Return the number of nanoseconds in T, which must be nonnegative. */
+static inline long int
+xtime_nonnegative_nsec (xtime_t t)
+{
+ return t % XTIME_PRECISION;
+}
+
+/* Return the number of nanoseconds in T. */
+static inline long int
+xtime_nsec (xtime_t t)
+{
+ long int ns = t % XTIME_PRECISION;
+ if (ns < 0)
+ ns += XTIME_PRECISION;
+ return ns;
+}
+
+#endif
diff --git a/lib/yesno.c b/lib/yesno.c
new file mode 100644
index 0000000..2400628
--- /dev/null
+++ b/lib/yesno.c
@@ -0,0 +1,64 @@
+/* yesno.c -- read a yes/no response from stdin
+
+ Copyright (C) 1990, 1998, 2001, 2003, 2004, 2005, 2006 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "yesno.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#if ENABLE_NLS
+# include "getline.h"
+#endif
+
+/* Return true if we read an affirmative line from standard input. */
+
+extern int rpmatch (char const *response);
+
+bool
+yesno (void)
+{
+ bool yes;
+
+#if ENABLE_NLS
+ char *response = NULL;
+ size_t response_size = 0;
+ ssize_t response_len = getline (&response, &response_size, stdin);
+
+ if (response_len <= 0)
+ yes = false;
+ else
+ {
+ response[response_len - 1] = '\0';
+ yes = (0 < rpmatch (response));
+ }
+
+ free (response);
+#else
+ /* Test against "^[yY]", hardcoded to avoid requiring getline,
+ regex, and rpmatch. */
+ int c = getchar ();
+ yes = (c == 'y' || c == 'Y');
+ while (c != '\n' && c != EOF)
+ c = getchar ();
+#endif
+
+ return yes;
+}
diff --git a/lib/yesno.h b/lib/yesno.h
new file mode 100644
index 0000000..dfa70bc
--- /dev/null
+++ b/lib/yesno.h
@@ -0,0 +1,26 @@
+/* declare yesno
+ Copyright (C) 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef YESNO_H_
+# define YESNO_H_
+
+# include <stdbool.h>
+
+bool yesno (void);
+
+#endif
diff --git a/m4/ChangeLog b/m4/ChangeLog
new file mode 100644
index 0000000..25cac3a
--- /dev/null
+++ b/m4/ChangeLog
@@ -0,0 +1,5000 @@
+2007-01-19 Jim Meyering <jim@meyering.net>
+
+ * .cvsignore, .gitignore: Add more bootstrap-inserted file names.
+
+2006-12-12 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Remove AC_FUNC_SETVBUF_REVERSED, now that it's a no-op.
+
+2006-10-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * sha512.m4 (gl_SHA512): Add u64.h to AC_LIBSOURCES.
+
+2006-10-12 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (coreutils_MACROS): Rename from gl_MACROS, now that
+ most of the gnulib macros have migrated into gnulib.
+ Don't call gl_INIT here (now it's called from configure.ac, directly).
+
+2006-10-07 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (gl_MACROS): Remove use of AC_CONFIG_LIBOBJ_DIR(lib).
+ It is no longer needed, and was causing dependencies to appear
+ in lib/lib/.deps, which provoked a "make distcheck" failure.
+
+2006-09-29 Jim Meyering <jim@meyering.net>
+
+ * readdir.m4: Remove file once again.
+ * jm-macros.m4: Remove reference to gl_FUNC_READDIR.
+
+2006-09-28 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Require the new macro.
+ * readdir.m4 (gl_FUNC_READDIR): Rename from GL_FUNC_READDIR.
+ Increment serial number.
+ * readdir.m4: Revivify this file.
+ We need it to work around a bug on Darwin 0.7.x.
+
+2006-09-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * .cvsignore: Add fcntl_h.m4, getloadavg.m4, inttypes-h.m4,
+ inttypes-prio.m4, inttypes.m,4 isapipe.m4.
+
+ * jm-macros.m4 (gl_MACROS): Call cu_PREREQ_STAT_PROG rather
+ than AC_REQUIREing, so that sys/mount.h isn't tested for after
+ the test result. I'm not sure why this fix is needed, but it
+ works.
+ * stat-prog.m4 (cu_PREREQ_STAT_PROG): Revamp to reflect better
+ what stat.c actually needs.
+
+2006-08-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stat-prog.m4 (cu_PREREQ_STAT_PROG): Check for __val versus val
+ components of fsid. Omit some checks that stat.c doesn't care
+ about.
+
+2006-08-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * .cvsignore: Add config-h.m4.
+
+2006-08-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * .cvsignore: Remove Makefile, dev-ino.m4, glibc2.m4, intdiv0.m4,
+ inttypes-h.m4, inttypes-pri.m4, jm-glibc-io.m4, lcmessage.m4,
+ lock.m4, printf-posix.m4, same-inode.m4, size_max.m4,
+ uintmax_t.m4, ulonglong.m4, visibility.m4, xsize.m4. Many of
+ these are put in automatically by ../bootstrap, but that's a
+ bootstrap bug that I plan to fix shortly.
+
+2006-08-22 Bruno Haible <bruno@clisp.org>
+
+ BeOS portability.
+ * boottime.m4 (GNULIB_BOOT_TIME): Test also for utmp.h, utmpx.h,
+ OS.h. Don't require to have utmp.h or utmpx.h. Enable boottime
+ support if <OS.h> is found.
+
+2006-08-22 Jim Meyering <jim@meyering.net>
+
+ * .cvsignore: Add files that are now generated by ../bootstrap.
+
+2006-08-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ * argmatch.m4:
+ Remove from CVS, since ../bootstrap generates it automatically.
+
+2006-08-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ Add a bootstrap procedure, so that the CVS version contains fewer
+ files and we bootstrap the rest from gnulib, gettext, etc.
+ * check-decl.m4 (gl_CHECK_DECLS):
+ Don't include stdio.h, string.h, stdlib.h, unistd.h, sys/time.h,
+ time.h. Use AC_CHECK_DECLS_ONCE for free, getenv, geteuid, getlogin,
+ getuid, lseek, malloc, memchr, realloc. Don't check for getutent,
+ memrchr, nanosleep, stpcpy, strndup, strnlen, strstr, strtoul,
+ strtoull.
+ (_gl_DECL_HEADERS): Remove; all uses removed.
+ * jm-macros.m4 (gl_MACROS): Move AC_PREREQ into configure.ac
+ for the benefit of gnulib-tool. Call gl_INIT.
+ Do not call or require the following, since gnulib now does this:
+ gl_HOST_OS, gl_ASSERT, gl_CHECK_TYPE_STRUCT_DIRENT_D_TYPE,
+ gl_CHECK_TYPE_STRUCT_DIRENT_D_INO, gl_FUNC_DIRFD, AC_FUNC_ACL,
+ gl_FUNC_LCHMOD, gl_FUNC_LCHOWN, gl_FUNC_RMDIR_NOTEMPTY,
+ gl_FUNC_CHOWN, AC_FUNC_LSTAT, AC_FUNC_STRERROR_R,
+ gl_FUNC_GROUP_MEMBER, gl_AC_FUNC_LINK_FOLLOWS_SYMLINK,
+ gl_FUNC_FPENDING, gt_INTTYPES_PRI, gl_ULLONG_MAX,
+ gl_FUNC_GETGROUPS, AC_FUNC_ALLOCA, AC_FUNC_GETLOADAVG,
+ gl_SYS_PROC_UPTIME, gl_FUNC_FTRUNCATE, AC_REPLACE_FUNCS(raise),
+ AC_CHECK_FUNCS_ONCE(gettimeofday), AC_FUNC_GETTIMEOFDAY_CLOBBER,
+ AC_FUNC_CLOSEDIR_VOID, AC_FUNC_STRTOD, gl_GLIBC21, AM_ICONV,
+ gl_FUNC_UNLINK_BUSY_TEXT, gl_FSUSAGE, gl_MOUNTLIST, gl_AC_DOS,
+ AC_FUNC_CANONICALIZE_FILE_NAME, gl_FUNC_FREE, gl_FUNC_CHDIR_LONG,
+ gl_FUNC_XFTS, gl_ROOT_DEV_INO, gl_VERSION_ETC, gl_DIACRIT,
+ gl_TYPE_SOCKLEN_T, gl_FPRINTFTIME, gl_CHDIR_SAFER.
+ Don't check for fchmod, hasmntopt, isascii, lchown, listmntent,
+ mempcpy, realpath, wcrtomb, tzset.
+ (gl_CHECK_ALL_HEADERS): Don't check for sys/statvfs.h, sys/vfs.h,
+ sys/mount.h.
+ (gl_CHECK_ALL_TYPES): Require AC_TYPE_UNSIGNED_LONG_LONG_INT.
+ Don't check for struct stat.st_blksize.
+ Don't require AC_STRUCT_ST_DM_MODE, gt_TYPE_SSIZE_T,
+ gl_AC_TYPE_UINT32_T, gl_AC_TYPE_UINTMAX_T, gl_AC_TYPE_UINTPTR_T,
+ gl_AC_TYPE_UNSIGNED_LONG_LONG.
+ * prereq.m4 (gl_PREREQ): Require gl_FUNC_XFTS, gl_ROOT_DEV_INO.
+ Don't require AM_STDBOOL_H, gl_ALLOCSA, gl_BACKUPFILE,
+ gl_BASENAME, gl_C_STRTOD, gl_C_STRTOLD, gl_CANON_HOST, gl_CLOEXEC,
+ gl_CLOSE_STREAM, gl_CLOSEOUT, gl_DIRNAME, gl_ERROR, gl_EXCLUDE,
+ gl_EXITFAIL, gl_FCNTL_SAFER, gl_FILEBLOCKS, gl_FILEMODE,
+ gl_FILE_NAME_CONCAT, gl_FILE_TYPE, gl_FSUSAGE, gl_FOPEN_SAFER,
+ gl_FUNC_ALLOCA, gl_FUNC_ATEXIT, gl_FUNC_DUP2, gl_FUNC_FNMATCH_GNU,
+ gl_FUNC_GETHOSTNAME, gl_FUNC_GETLINE, AC_FUNC_GETLOADAVG,
+ gl_FUNC_GETPASS_GNU, gl_FUNC_GETUSERSHELL, gl_FUNC_LSTAT,
+ gl_FUNC_MEMCHR, gl_FUNC_MEMCPY, gl_FUNC_MEMMOVE, gl_FUNC_MEMPCPY,
+ gl_FUNC_MEMRCHR, gl_FUNC_MEMSET, gl_FUNC_MKDIR_TRAILING_SLASH,
+ gl_FUNC_MKTIME, gl_FUNC_MKSTEMP,
+ gl_FUNC_READLINK, gl_FUNC_RMDIR, gl_FUNC_RPMATCH, gt_FUNC_SETENV,
+ gl_FUNC_SIG2STR, gl_FUNC_SNPRINTF, gl_FUNC_STPCPY,
+ gl_FUNC_STRCSPN, gl_FUNC_STRDUP, gl_FUNC_STRNDUP, gl_FUNC_STRNLEN,
+ gl_FUNC_STRPBRK, gl_FUNC_STRSTR, gl_FUNC_STRTOD,
+ gl_FUNC_STRTOIMAX, gl_FUNC_STRTOLL, gl_FUNC_STRTOL,
+ gl_FUNC_STRTOULL, gl_FUNC_STRTOUL, gl_FUNC_STRTOUMAX,
+ gl_FUNC_STRVERSCMP, gl_FUNC_TZSET_CLOBBER, gl_FUNC_VASNPRINTF,
+ gl_FUNC_VASPRINTF, gl_FUNC_WCWIDTH, gl_GETADDRINFO, gl_GETDATE,
+ gl_GETHRXTIME, gl_GETNDELIM2, gl_GETOPT, gl_GETPAGESIZE,
+ gl_GETTIME, gl_GETUGROUPS, gl_HARD_LOCALE, gl_HASH, gl_HASH_PJW,
+ gl_HEADER_ARPA_INET, gl_HEADER_NETINET_IN, gl_HEADER_SYS_SOCKET,
+ gl_HUMAN, gl_IDCACHE, gl_INET_NTOP, gl_INTTOSTR, gl_LINEBUFFER,
+ gl_LOCALCHARSET, gl_LONG_OPTIONS, gl_MBCHAR, gl_MBITER,
+ gl_MBSWIDTH, gl_MD5, gl_MEMCOLL, gl_MKANCESDIRS, gl_MKDIR_PARENTS,
+ gl_MODECHANGE, gl_MOUNTLIST, gl_OBSTACK, gl_PATHMAX, gl_PHYSMEM,
+ gl_POSIXTM, gl_POSIXVER, gl_QUOTEARG, gl_QUOTE, gl_READTOKENS,
+ gl_READUTMP, gl_REGEX, gl_SAFE_READ, gl_SAFE_WRITE, gl_SAME,
+ gl_SAVEDIR, gl_SAVE_CWD, gl_SETTIME, gl_SHA1, gl_STAT_MACROS,
+ gl_STAT_TIME, gl_STDARG_H, gl_STDINT_H, gl_STDLIB_SAFER,
+ gl_STRCASE, gl_STRIPSLASH, gl_TIMESPEC, gl_TIME_R,
+ gl_TYPE_SOCKLEN_T, gl_UNICODEIO, gl_UNISTD_SAFER, gl_UNLINKDIR,
+ gl_USERSPEC, gl_UTIMECMP, gl_UTIMENS, gl_XALLOC, gl_XGETCWD,
+ gl_XNANOSLEEP, gl_XREADLINK, gl_XSTRTOD, gl_XSTRTOL, gl_XSTRTOLD,
+ gl_YESNO, AC_FUNC_CALLOC, gl_FUNC_GLIBC_UNLOCKED_IO,
+ gl_FUNC_GNU_STRFTIME, AC_FUNC_MALLOC, gl_FUNC_MEMCMP,
+ gl_FUNC_NANOSLEEP, gl_FUNC_PUTENV, AC_FUNC_REALLOC, gl_FUNC_UTIME,
+ gl_XSTRTOIMAX, gl_XSTRTOUMAX, vb_FUNC_RENAME, gl_FUNC_FTS,
+ gl_MEMCASECMP, gl_STRIPSLASH, gl_LINEBUFFER, gl_ARGMATCH,
+ gl_CYCLE_CHECK, gl_EUIDACCESS_STAT, since gnulib handles this.
+ * stat-prog.m4 (cu_PREREQ_STAT_PROG): Don't check for
+ sys/sysmacros.h. Don't check for statvfs. Use AC_CHECK_HEADERS_ONCE
+ for netinet/in.h, nfs/nfs_clnt.h, nfs/vfs.h.
+ Don't require gl_AC_TYPE_LONG_LONG, gt_HEADER_INTTYPES_H.
+
+ * absolute-header.m4, acl.m4, alloca.m4, allocsa.m4, arpa_inet_h.m4:
+ * assert.m4, atexit.m4, backupfile.m4, basename.m4, bison.m4:
+ * c-strtod.m4, c.m4, calloc.m4, canon-host.m4, canonicalize.m4:
+ * chdir-long.m4, chdir-safer.m4, chown.m4, clock_time.m4:
+ * cloexec.m4, close-stream.m4, closeout.m4, codeset.m4:
+ * cycle-check.m4, d-ino.m4, d-type.m4, dev-ino.m4, diacrit.m4:
+ * dirfd.m4, dirname.m4, dos.m4, double-slash-root.m4, dup2.m4:
+ * eealloc.m4, eoverflow.m4, error.m4, euidaccess.m4, exclude.m4:
+ * exitfail.m4, extensions.m4, fcntl-safer.m4, file-type.m4:
+ * fileblocks.m4, filemode.m4, filenamecat.m4, fnmatch.m4:
+ * fpending.m4, fprintftime.m4, free.m4, fstypename.m4, fsusage.m4:
+ * ftruncate.m4, fts.m4, getaddrinfo.m4, getcwd-abort-bug.m4:
+ * getcwd-path-max.m4, getcwd.m4, getdate.m4, getdelim.m4:
+ * getgroups.m4, gethostname.m4, gethrxtime.m4, getline.m4:
+ * getndelim2.m4, getopt.m4, getpagesize.m4, getpass.m4, gettext.m4:
+ * gettime.m4, gettimeofday.m4, getugroups.m4, getusershell.m4:
+ * glibc21.m4, group-member.m4, hard-locale.m4, hash-pjw.m4, hash.m4:
+ * host-os.m4, human.m4, iconv.m4, idcache.m4, inet_ntop.m4:
+ * intmax_t.m4, inttostr.m4, inttypes-h.m4, inttypes-pri.m4:
+ * inttypes.m4, inttypes_h.m4, isc-posix.m4, jm-winsz1.m4:
+ * jm-winsz2.m4, lchmod.m4, lchown.m4, lib-ignore.m4, lib-ld.m4:
+ * lib-link.m4, lib-prefix.m4, linebuffer.m4, link-follow.m4:
+ * localcharset.m4, long-options.m4, longdouble.m4, longlong.m4:
+ * ls-mntd-fs.m4, lstat.m4, mbchar.m4, mbiter.m4, mbrtowc.m4:
+ * mbstate_t.m4, mbswidth.m4, md5.m4, memcasecmp.m4, memchr.m4:
+ * memcmp.m4, memcoll.m4, memcpy.m4, memmove.m4, mempcpy.m4:
+ * memrchr.m4, memset.m4, mkancesdirs.m4, mkdir-p.m4, mkdir-slash.m4:
+ * mkstemp.m4, mktime.m4, modechange.m4, mountlist.m4, nanosleep.m4:
+ * netinet_in_h.m4, nls.m4, obstack.m4, openat.m4, pathmax.m4:
+ * perl.m4, physmem.m4, po.m4, posixtm.m4, posixver.m4, progtest.m4:
+ * putenv.m4, quote.m4, quotearg.m4, readlink.m4, readtokens.m4:
+ * readutmp.m4, regex.m4, rename.m4, rmdir-errno.m4, rmdir.m4:
+ * rpmatch.m4, safe-read.m4, safe-write.m4, same-inode.m4, same.m4:
+ * save-cwd.m4, savedir.m4, setenv.m4, settime.m4, sha1.m4:
+ * sig2str.m4, signed.m4, snprintf.m4, socklen.m4, sockpfaf.m4:
+ * ssize_t.m4, st_dm_mode.m4, stat-macros.m4, stat-time.m4:
+ * stdarg.m4, stdbool.m4, stdint.m4, stdint_h.m4, stdio-safer.m4:
+ * stdlib-safer.m4, stpcpy.m4, strcase.m4, strcspn.m4, strdup.m4:
+ * strftime.m4, stripslash.m4, strndup.m4, strnlen.m4, strpbrk.m4:
+ * strstr.m4, strtod.m4, strtoimax.m4, strtol.m4, strtoll.m4:
+ * strtoul.m4, strtoull.m4, strtoumax.m4, strverscmp.m4:
+ * sys_socket_h.m4, time_r.m4, timespec.m4, tm_gmtoff.m4, tzset.m4:
+ * uint32_t.m4, uintmax_t.m4, uintptr_t.m4, ullong_max.m4:
+ * ulonglong.m4, unicodeio.m4, unistd-safer.m4, unlink-busy.m4:
+ * unlinkdir.m4, unlocked-io.m4, uptime.m4, userspec.m4, utimbuf.m4:
+ * utime.m4, utimecmp.m4, utimens.m4, utimes-null.m4, utimes.m4:
+ * vasnprintf.m4, vasprintf.m4, version-etc.m4, wchar_t.m4:
+ * wcwidth.m4, wint_t.m4, xalloc.m4, xgetcwd.m4, xnanosleep.m4:
+ * xreadlink.m4, xstrtod.m4, xstrtoimax.m4, xstrtol.m4:
+ * xstrtoumax.m4, yesno.m4:
+ Remove from CVS, since ../bootstrap generates them automatically.
+
+2006-08-18 Bruno Haible <bruno@clisp.org>
+
+ * ls-mntd-fs.m4 (gl_LIST_MOUNTED_FILE_SYSTEMS): Also check for
+ sys/statvfs.h. When getmntinfo was found, check its declaration and
+ set either MOUNTED_GETMNTINFO or MOUNTED_GETMNTINFO2 depending on it.
+ * stat-prog.m4 (cu_PREREQ_STAT_PROG): Test also for f_fstypename
+ in struct statvfs.
+
+2006-08-18 Jim Meyering <jim@meyering.net>
+
+ * gethrxtime.m4 (gl_PREREQ_GETHRXTIME): Also check for CLOCK_REALTIME,
+ since gethrxtime may revert to using clock_gettime via gettime.c.
+ Gabor Z. Papp reported that gethrxtime-using programs failed to
+ link due to unresolved clock_gettime on a linux-2.4.x system.
+
+2006-08-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * ChangeLog: Add copyright notice.
+ * check-decl.m4: Likewise.
+
+2006-08-15 Jim Meyering <jim@meyering.net>
+
+ * openat.m4 (gl_FUNC_OPENAT): Add at-func.c via AC_LIBSOURCES.
+
+2006-08-10 Jim Meyering <jim@meyering.net>
+
+ Update from gnulib.
+ * cycle-check.m4 (gl_CYCLE_CHECK): Don't mention same-inode.h.
+ Require gl_STRUCT_DEV_INO and gl_SAME_INODE.
+ * dev-ino.m4, same-inode.m4: New files.
+
+2006-08-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ Accommodate new getaddrinfo implementation in gnulib.
+ * arpa_inet_h.m4, inet_ntop.m4, netinet_in_h.m4, snprintf.m4:
+ New files, from gnulib.
+ * prereq.m4 (gl_PREREQ): Require gl_FUNC_SNPRINTF, gl_GETADDRINFO,
+ gl_HEADER_ARPA_INET, gl_HEADER_NETINET_IN, gl_HEADER_SYS_SOCKET,
+ gl_INET_NTOP, gl_TYPE_SOCKEN_T.
+
+2006-08-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * inttypes-h.m4, stdarg.m4: New files, from gnulib.
+ * prereq.m4 (gl_PREREQ): Require gl_STDARG_H.
+ Require gl_FOPEN_SAFER rather than gl_STDIO_SAFER (due to renaming).
+ * getline.m4, gettext.m4, inttypes-pri.m4, lib-link.m4, localcharset.m4:
+ * mbchar.m4, nls.m4, po.m4, stdint.m4, stdio-safer.m4, unistd-safer.m4:
+ * wcwidth.m4:
+ Update from gnulib.
+
+2006-08-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * memxfrm.m4, randint.m4, randperm.m4, randread.m4: New files.
+
+ * prereq.m4 (gl_PREREQ): Require gl_MEMXFRM, gl_RANDINT, gl_RANDPERM,
+ gl_RANDREAD.
+
+ * restrict.m4: Remove, now that we assume Autoconf 2.58 or later.
+ All uses of gl_C_RESTRICT changed to AC_C_RESTRICT.
+
+2006-07-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * close-stream.m4: New file.
+ * prereq.m4 (gl_PREREQ): Require gl_CLOSE_STREAM.
+
+2006-07-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * mkancesdirs.m4: New file.
+ * afs.m4: Remove; no longer needed.
+ * jm-macros.m4 (gl_MACROS): Remove gl_AFS.
+ * mkdir-p.m4 (gl_MKDIR_PARENTS): Mention dirchownmod.c, dirchownmod.h.
+ Don't require AC_FUNC_ALLOCA, gl_AFS, gl_CHDIR_SAFER; no longer needed.
+ Require gl_FUNC_LCHOWN, since dirchownmod.c needs it.
+ * prereq.m4 (gl_PREREQ): Require gl_MKANCESDIRS.
+
+2006-07-11 Eric Blake <ebb9@byu.net>
+
+ * absolute-header.m4: Fix comments to match recent change.
+
+2006-07-10 Derek R. Price <derek@ximbiot.com>
+ and Paul Eggert <eggert@cs.ucla.edu>
+
+ * backupfile.m4, d-ino.m4, d-type.m4, dirfd.m4, fts.m4, getcwd.m4:
+ * savedir.m4:
+ Ignore the obsolescent !HAVE_DIRENT_H case. Consolidate NAMLEN
+ macros into the GNU _D_EXACT_NAMLEN.
+
+2006-07-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stdint.m4 (gl_STDINT_H): Like yesterday's change to
+ absolute-header.m4. Also, set ABSOLUTE_STDINT_H to a string
+ "no/such/file/stdint.h" when there is no such file, so that
+ the resulting C code can be parsed by dodgy compilers.
+ Problems reported by Bob Proulx.
+
+2006-07-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * absolute-header.m4 (gl_ABSOLUTE_HEADER): Use "" rather than <>
+ around the absolute name, to work around a problem with the HP-UX
+ 11.23 native C compiler, reported by Bob Proulx.
+
+ Update from gnulib, as follows:
+
+ 2006-07-06 Derek R. Price <derek@ximbiot.com>
+ and Paul Eggert <eggert@cs.ucla.edu>
+
+ * backupfile.m4 (gl_BACKUPFILE): Check for dirent.h, instead
+ of invoking obsolescent AC_HEADER_DIRENT macro.
+ * d-ino.m4 (gl_CHECK_TYPE_STRUCT_DIRENT_D_INO): Likewise.
+ * d-type.m4 (gl_CHECK_TYPE_STRUCT_DIRENT_D_TYPE): Likewise.
+ * dirfd.m4 (gl_FUNC_DIRFD): Likewise.
+ * fts.m4 (gl_FUNC_FTS_CORE): Likewise.
+ * getcwd.m4 (gl_PREREQ_GETCWD): Likewise.
+ * savedir.m4 (gl_SAVEDIR): Likewise.
+
+ 2006-07-06 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * fileblocks.m4 (gl_PREREQ_FILEBLOCKS): AC_CHECK_DECLS_ONCE may
+ expand to nothing, so add a shell command to avoid syntax error.
+ * getpass.m4 (gl_PREREQ_GETPASS): Likewise.
+
+ 2006-07-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * fnmatch.m4 (_AC_LIBOBJ_FNMATCH): Don't check for getenv decl;
+ no longer needed. Check for isblank decl.
+ * mkstemp.m4 (gl_PREREQ_TEMPNAME): Don't check for getenv decl.
+ * regex.m4 (gl_PREREQ_REGEX): Dheck for isblank decl instead
+ of existence.
+
+ 2006-07-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * xstrtol.m4 (gl_PREREQ_XSTRTOL): Use AC_CHECK_DECLS_ONCE
+ rather than AC_CHECK_DECLS for strtoimax and strtoumax.
+ * getusershell.m4 (gl_PREREQ_GETUSERSHELL): Remove; no longer needed.
+ All uses removed.
+ * strtol.m4 (gl_PREREQ_STRTOL): Likewise.
+ * strtoul.m4 (gl_PREREQ_STRTOUL): Likewise.
+ * exclude.m4 (gl_EXCLUDE): Don't check for isascii; no longer needed.
+ * getdate.m4 (gl_GETDATE): Likewise.
+ * getusershell.m4 (gl_PREREQ_GETUSERSHELL): Likewise.
+ * memcasecmp.m4 (gl_MEMCASECMP): Likewise.
+ * strtod.m4 (gl_FUNC_STRTOD): Likewise.
+ * strtol.m4 (gl_PREREQ_STRTOL): Likewise.
+ * strtoul.m4 (gl_PREREQ_STRTOUL): Likewise.
+ * xstrtol.m4 (gl_PREREQ_XSTRTOL): Likewise.
+ * exclude.m4 (gl_EXCLUDE): Don't require AC_C_INLINE; no longer
+ needed.
+
+ 2006-07-05 Derek R. Price <derek@ximbiot.com>
+
+ * calloc.m4 (_AC_FUNC_CALLOC_IF): Don't require AC_HEADER_STDC;
+ no longer needed.
+ * exclude.m4 (gl_EXCLUDE): Likewise.
+ * getdate.m4 (gl_GETDATE): Likewise.
+ * getusershell.m4 (gl_PREREQ_GETUSERSHELL): Likewise.
+ * memcasecmp.m4 (gl_MEMCASECMP): Likewise.
+ * strtod.m4 (gl_FUNC_STRTOD): Likewise.
+ * strtol.m4 (gl_PREREQ_STRTOL): Likewise.
+ * xstrtol.m4 (gl_PREREQ_XSTRTOL): Likewise.
+
+ 2006-07-05 Eric Blake <ebb9@byu.net>
+
+ * sockpfaf.m4 (gl_SOCKET_FAMILIES): Use gl_HEADER_SYS_SOCKET
+ to avoid 'header present but could not be compiled' on cygwin.
+
+ 2006-07-03 Bruno Haible <bruno@clisp.org>
+
+ * strndup.m4 (gl_FUNC_STRNDUP): When cross-compiling, check whether
+ the function exists, before testing against AIX.
+ Reported by Martin Lambers <marlam@marlam.de>.
+
+ 2006-07-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ * absolute-header.m4 (gl_ABSOLUTE_HEADER): Prepend three slashes
+ to the absolute name, not just one, to bypass Sun C 5.8's
+ "warning: #include of /usr/include/... may be non-portable".
+
+ 2006-07-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * absolute-header.m4: Renamed from full-header-path.m4.
+ This is to keep the terminology clean; POSIX talks about
+ "absolute pathnames", not "full pathnames", but the GNU
+ Coding Standards say to use "path" for something else;
+ so use "absolute" to keep both sides happy.
+ (gl_ABSOLUTE_HEADER): Renamed from gl_FULL_HEADER_PATH.
+ Set gl_absolute_header, not gl_full_header_path.
+ Set gl_cv_absolute_<header>, not gl_full_path_<header>.
+ Define ABSOLUTE_<HEADER>, not FULL_PATH_<HEADER>.
+ All uses changed.
+
+2006-07-08 Jim Meyering <jim@meyering.net>
+
+ * link-follow.m4: Remove one of two adjacent "whether"s in a comment.
+ * getopt.m4: Remove one of two adjacent "your"s in a comment.
+ * autobuild.m4: Remove one of two adjacent "can"s in a comment.
+ * regex.m4 (gl_REGEX): Remove one of two adjacent "the"s in a comment.
+
+2006-07-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * prereq.m4 (gl_PREREQ): Require gl_FUNC_WCWIDTH, to accommodate
+ changes mentioned below.
+ * setenv.m4 (gt_FUNC_SETENV): Undo private change that added an
+ AC_LIBSOURCES line here, since Bruno didn't buy it back. Instead,
+ update ../lib/Makefile.am to mention the files explicitly.
+
+ Sync from gnulib.
+
+ 2006-06-28 Simon Josefsson <jas@extundo.com>
+
+ * getaddrinfo.m4: Look for getnameinfo prototypes too.
+
+ 2006-06-28 Eric Blake <ebb9@byu.net>
+
+ * mbswidth.m4 (gl_MBSDWIDTH): Move wcwidth from here...
+ * wcwidth.m4 (gl_FUNC_WCWIDTH): ...to this new file.
+
+ 2006-06-22 Simon Josefsson <jas@extundo.com>
+
+ * sockpfaf.m4: Include winsock2.h too, to make it work under
+ MinGW.
+
+ 2006-06-21 Simon Josefsson <jas@extundo.com>
+
+ * getaddrinfo.m4: Don't define WINVER. Look for gethostbyname in
+ -lws2_32 too. Fixes getaddrinfo on Windows 2000, with the price
+ of using the (limited) gnulib implementation on Windows XP.
+
+ 2006-06-17 Bruno Haible <bruno@clisp.org>
+
+ * setenv.m4 (gl_PREREQ_SETENV, gl_PREREQ_UNSETENV): Remove test
+ whether errno is declared. Assume <errno.h> declares errno.
+
+ 2006-06-16 Eric Blake <ebb9@byu.net>
+
+ * rmdir-errno.m4 (gl_FUNC_FMDIR_NOTEMPTY): Assume errno.h declares
+ errno.
+
+ 2006-06-15 Eric Blake <ebb9@byu.net>
+
+ * ssize_t.m4 (gt_TYPE_SSIZE_T): Work in spite of -Werror.
+
+ 2006-04-20 Bruno Haible <bruno@clisp.org>
+
+ * getpass.m4 (gl_PREREQ_GETPASS):
+ Don't call AC_CHECK_DECLS_ONCE with more than
+ one argument, so that the code will be portable to Autoconf 2.60.
+ * unlocked-io.m4 (gl_FUNC_GLIBC_UNLOCKED_IO): Likewise.
+
+ 2006-03-15 Eric Blake <ebb9@byu.net>
+
+ * dirfd.m4 (gl_FUNC_DIRFD): Use AC_REQUIRE for AC_HEADER_DIRENT.
+
+2006-07-03 Jim Meyering <jim@meyering.net>
+
+ * ftruncate.m4 (gl_FUNC_FTRUNCATE): Adjust diagnostic to recommend
+ ./configure SKIP_FTRUNCATE_CHECK=yes, rather than env ... ./configure.
+ Suggestion from Ralf Wildenhues.
+
+2006-07-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stdint.m4 (gl_STDINT_H): Use more-mnemonic identifiers for
+ test cases, so that config.log is a bit easier to follow.
+
+2006-07-02 Jim Meyering <jim@meyering.net>
+
+ * full-header-path.m4: New file, from gnulib. Required by stdint.m4.
+
+2006-07-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * longlong.m4: Sync from gnulib.
+ * stdint.m4: Likewise.
+ * ulonglong.m4: Likewise.
+
+2006-06-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * c-strtod.m4 (gl_C_STRTOLD): Add c-strtod.c to LIBSOURCES.
+ Require gl_USE_SYSTEM_EXTENSIONS, not gl_C_STRTOD, since we don't
+ want to require the building of c-strtod.o.
+ * lib-check.m4 (cu_LIB_CHECK): Remove SEQ_LIBM, since seq no longer
+ needs -lm directly.
+ * prereq.m4 (gl_PREREQ): Require gl_C_STRTOD and gl_XSTRTOLD.
+ * xstrtod.m4 (gl_XSTRTOLD): New macro.
+
+2006-06-29 Derek R. Price <derek@ximbiot.com>
+
+ * strftime.m4: Don't call AC_FUNC_STRFTIME.
+
+2006-06-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * jm-macros.m4 (jl_MACROS): Require 2.60, not 2.59d.
+ * jm-macros.m4 (gl_CHECK_ALL_TYPES): Don't require AC_C_CONST, since
+ it's obsolete.
+
+2006-06-28 Derek R. Price <derek@ximbiot.com>
+
+ * fnmatch.m4 (_AC_LIBOBJ_FNMATCH): Don't require AC_C_CONST, since
+ it's obsolete.
+ * strftime.m4 (gl_FUNC_GNU_STRFTIME): Likewise.
+ * savedir.m4: Remove AC_FUNC_CLOSEDIR_VOID requirement.
+
+2006-06-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * lib-ignore.m4 (gl_IGNORE_UNUSED_LIBRARIES): Prefer binutils's
+ --as-needed option if available. Problem reported by Albert Chin in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2006-06/msg00114.html>.
+ However, use -Wl,--as-needed, not bare --as-needed, since HP-UX 11.11
+ cc merely issues a bunch of annoying warnings for --as-needed
+ (this problem was reported by Bob Proulx). Also, try linking with
+ -lm to detect a bug in binutils 2.16 (this problem was reported
+ by Ralf Wildenhues).
+
+2006-06-18 Jim Meyering <jim@meyering.net>
+
+ Test for a bug that causes glibc's getcwd to suffer a failed assertion.
+ * getcwd-abort-bug.m4 (gl_FUNC_GETCWD_ABORT_BUG): New file and macro.
+ * getcwd.m4 (gl_FUNC_GETCWD): If we detect support for getcwd_null,
+ also check for glibc-2.4's abort-inducing bug.
+
+ * getcwd-path-max.m4 (gl_FUNC_GETCWD_PATH_MAX): Fix typo.
+ Low-probability clean-up should be to use rmdir to get rid of
+ the just-created directory, not unlink.
+
+ * ftruncate.m4 (gl_FUNC_FTRUNCATE): If ftruncate is missing, make
+ configure fail, and request a bug report to inform us about it.
+ Add a comment that, barring reports to the contrary, in 2007 we'll
+ assume ftruncate is universally available.
+
+2006-06-10 Jim Meyering <jim@meyering.net>
+
+ Apply this change from gnulib:
+
+ 2006-05-30 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+ Bruno Haible <bruno@clisp.org>
+
+ * strndup.m4 (gl_FUNC_STRNDUP): Replace the AC_REPLACE_FUNCS with a
+ check for the declaration of strnlen and a run test that exposes the
+ AIX 5.1 strnlen bug. In the failure case, #define strndup to
+ rpl_strndup.
+
+2006-05-28 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * c-strtod.m4 (gl_C99_STRTOLD): Use a link test rather than a
+ compile test, for Tru64 4.0D.
+
+2006-05-24 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Require autoconf-2.59d, for its fixed version
+ of AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK.
+
+2006-05-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * nanosleep.m4 (gl_FUNC_NANOSLEEP): Rename cache variables to use
+ gl_ rather than jm_. Link, don't run, so that cross-compiles are
+ allowed. Check that resulting type is arithmetic. Move AC_REQUIRE
+ and AC_CHECK_HEADERS_ONCE outside of AC_CACHE_CHECK, since they're
+ not really conditional on the cache.
+ (gl_PREREQ_NANOSLEEP): Check for sys/select.h.
+
+2006-05-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stdbool.m4 (AC_HEADER_STDBOOL): Fix overly-picky
+ test for C99 conformance; (bool) 0.5 is an integer constant
+ expression, but (bool) -0.5 is not. Problem reported by Fedor
+ Sergeev in <http://forum.sun.com/jive/thread.jspa?threadID=96202>.
+
+2006-02-17 Eric Blake <ebb9@byu.net>
+
+ Sync from gnulib.
+ * getaddrinfo.m4 (gl_GETADDRINFO): Fix caching error.
+
+2006-04-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * unlink-busy.m4 (gl_FUNC_UNLINK_BUSY_TEXT): Use prototype
+ to define main with arguments, for C++. Reported by Eric Blake.
+ * getcwd-path-max.m4 (gl_FUNC_GETCWD_PATH_MAX): Likewise.
+ * fsusage.m4 (gl_FILE_SYSTEM_USAGE): Specify a return type
+ for 'main', for C99 and C++.
+
+2006-04-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * fsusage.m4 (gl_FILE_SYSTEM_USAGE): Use return, not exit.
+ Don't assume that exit status -1 is valid.
+ * nanosleep.m4 (gl_FUNC_NANOSLEEP): Likewise.
+ * putenv.m4 (gl_FUNC_PUTENV): Likewise.
+ * rmdir-errno.m4 (gl_FUNC_RMDIR_NOTEMPTY): Likewise.
+ * readdir.m4 (GL_FUNC_READDIR): Include <stdlib.h>.
+ * rename.m4 (vb_FUNC_RENAME): Likewise.
+ * unlink-busy.m4 (gl_FUNC_UNLINK_BUSY_TEXT): Use AC_RUN_IFELSE,
+ not AC_TRY_RUN. Use return, not exit. Don't assume that
+ functions can be used without declaring them, or that you can
+ exit with status -1.
+ * utimes-null.m4 (gl_FUNC_UTIMES_NULL): Likewise.
+
+2006-04-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * filemode.m4 (gl_FILEMODE): Check for strmode declaration.
+
+2006-04-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * jm-macros.m4 (gl_MACROS): Check for setgroups and sync, since they
+ are not in Interix.
+
+2006-04-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * time_r.m4 (gl_TIME_R): Add AC_LIBSOURCES for time_r.c and time_r.h.
+
+2006-04-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regex.m4 (gl_REGEX): Check for new glibc interface to
+ translation table.
+
+2006-03-11 Eric Blake <ebb9@byu.net>
+
+ * double-slash-root.m4: New file, provides gl_DOUBLE_SLASH_ROOT.
+ * dirname.m4 (gl_DIRNAME): Use gl_DOUBLE_SLASH_ROOT.
+ * dos.m4 (FILE_SYSTEM_PREFIX_LEN): Move from here to dirname.h.
+ (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE): New define.
+
+2006-03-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regex.m4 (gl_REGEX): Don't insist on REG_SYNTAX_POSIX_EGREP,
+ REG_SYNTAX_EMACS, and REG_IGNORE_CASE. Settle for the traditional
+ glibc names. Even if glibc is changed to conform to POSIX, the
+ traditional names will be available anyway, since regex depends on
+ the extensions module. Also, fix a longstanding typo in the
+ implementation of Spencer ERE test #75 from grep 2.3. Problems
+ reported by Emanuele Giaquinta. Also, change sense of cached
+ variable, so that the message makes sense.
+
+2006-03-17 Jim Meyering <jim@meyering.net>
+
+ * regex.m4 (gl_REGEX): Fix typo in last change:
+ s/_REGEX_WIDE_OFFSETS/_REGEX_LARGE_OFFSETS/.
+
+2006-03-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regex.m4 (gl_REGEX): Don't check for off_t, since the code
+ no longer needs it. Instead, check that regoff_t is as least
+ as wide as ptrdiff_t.
+
+ Don't define _REGEX_WIDE_OFFSETS unless using the included regex,
+ so that our regex.h stays compatible with the installed regex.
+ This is helpful for installers who configure --without-included-regex.
+ Problem reported by Emanuele Giaquinta.
+
+2006-03-12 Jim Meyering <jim@meyering.net>
+
+ * chdir-safer.m4 (gl_CHDIR_SAFER): Add same-inode.h to the list.
+ * cycle-check.m4 (gl_CYCLE_CHECK): Likewise.
+ * same.m4 (gl_SAME): Likewise.
+ * root-dev-ino.m4 (gl_ROOT_DEV_INO): Likewise.
+
+2006-03-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * prereq.m4 (gl_PREREQ): Require gl_TIME_R.
+ * time_r.m4: New file, from gnulib.
+
+2006-03-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * clock_time.m4 (gl_CLOCK_TIME): Require gl_USE_SYSTEM_EXTENSIONS,
+ not merely AC_GNU_SOURCE, for the benefit of Solaris 10 when compiled
+ pedantically.
+ * nanosleep.m4 (gl_FUNC_NANOSLEEP): Likewise.
+ * timespec.m4 (gl_TIMESPEC): Likewise.
+
+ * extensions.m4 (gl_USE_SYSTEM_EXTENSIONS): Use "=" with "test",
+ not "==". Reported by Ralf Wildenhues.
+
+2006-02-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * mkdir-p.m4 (gl_MKDIR_PARENTS): Require gl_FUNC_LCHMOD and
+ gl_CHDIR_SAFER.
+
+2006-02-16 Eric Blake <ebb9@byu.net>
+
+ Sync from gnulib.
+ * sys_socket_h.m4: New file. Solves 'present but cannot compile'
+ warnings on cygwin, which cannot use ws2tcpip.h.
+ * socklen.m4 (gl_TYPE_SOCKLEN_T): Use gl_HEADER_SYS_SOCKET.
+ Don't use ws2tcpip.h if sys/socket.h works.
+ * getaddrinfo.m4 (gl_PREREQ_GETADDRINFO): Use
+ gl_HEADER_SYS_SOCKET.
+ (gl_GETADDRINFO): Don't use ws2tcpip.h when sys/socket.h is
+ present.
+
+2006-02-14 Simon Josefsson <jas@extundo.com>
+
+ Sync from gnulib.
+ * getaddrinfo.m4: Look for getaddrinfo inside ws2tcip.h and
+ -lws2_32. Protect sys/socket.h and netdb.h #include's. Include
+ ws2tcpip.h with WINVER=0x0501. All for mingw32.
+ * socklen.m4: Look in ws2tcpip.h too, for mingw32.
+
+2006-02-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * extensions.m4 (gl_USE_SYSTEM_EXTENSIONS): Don't #define
+ __EXTENSIONS__ if this causes compilation to fail. Problem
+ reported by Nelson H. F. Beebe with Solaris 10 and Sun C 5.7
+ c89 -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED.
+
+2006-01-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stdbool.m4 (AC_HEADER_STDBOOL): Sync from gnulib.
+ Use 'defined __GNUC__' rather than __GNUC__.
+
+2006-01-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stdbool.m4: Merge from gnulib; we still don't quite match
+ exactly, but we're getting closer.
+ (AC_HEADER_STDBOOL): Add some comments.
+
+2006-01-24 Jim Meyering <jim@meyering.net>
+
+ * openat.m4 (gl_FUNC_OPENAT): Add AC_LIBSOURCES([intprops.h]).
+ Reported by Mark D. Baushke.
+
+2006-01-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getopt.m4 (gl_PREREQ_GETOPT): Check for getenv decl.
+
+2006-01-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * lib-ignore.m4 (gl_IGNORE_UNUSED_LIBRARIES): Use -Wl,-z,ignore
+ rather than -Xlinker -z -Xlinker ignore, as it's more portable.
+ Suggested by Bruno Haible.
+
+2006-01-17 Jim Meyering <jim@meyering.net>
+
+ * fts.m4 (gl_FUNC_FTS_CORE): Depend on gl_FUNC_OPENAT.
+
+2006-01-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * lib-ignore.m4 (gl_IGNORE_UNUSED_LIBRARIES): Don't use ldd, as
+ it's not portable and it doesn't work with cross-compiles.
+ Problem reported by Bruno Haible. Fix missing-$ typo in
+ 'test "gl_cv_ignore_unused_libraries" ...' that prevented
+ -zignore from being used with Sun's C compiler.
+
+2006-01-13 Jim Meyering <jim@meyering.net>
+
+ * ls-mntd-fs.m4 (AC_FUNC_GETMNTENT): Invoke AC_CHECK_FUNCS(getmntent)
+ unconditionally so that tests of $ac_cv_func_getmntent (e.g., in
+ gl_LIST_MOUNTED_FILE_SYSTEMS) need not double-quote uses of that
+ variable, to accommodate the rare case in which getmntent is
+ available in none of the libraries checked. This happens at
+ least on FreeBSD 5.0.
+
+2006-01-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * prereq.m4 (gl_PREREQ): Require gl_STDINT_H.
+ * stdint.m4: New file, from gnulib.
+
+2006-01-11 Jim Meyering <jim@meyering.net>
+
+ * openat.m4 (gl_FUNC_OPENAT): Require and compile fchmodat.c.
+ Check for the lchmod function.
+
+2006-01-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * argmatch.m4 (gl_ARGMATCH): Don't require gl_FUNC_MEMCMP, for the
+ sake of packages that don't want to worry about ancient systems.
+
+ * getaddrinfo.m4, localcharset.m4, md5.m4, memcoll.m4:
+ Sync from gnulib.
+
+2006-01-10 Jim Meyering <jim@meyering.net>
+
+ * fpending.m4: Also include <stdio.h>, for Dragonfly.
+ Patch by Joerg Sonnenberger.
+
+2006-01-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * lib-ignore.m4: New file.
+
+2006-01-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * chmod-safer.m4: Remove.
+ * lchmod.m4: New file.
+ * jm-macros.m4 (gl_MACROS): Require gl_FUNC_LCHMOD.
+ Don't require gl_CHDIR_SAFER.
+
+2005-12-21 Jim Meyering <jim@meyering.net>
+
+ * chdir-safer.m4: New file.
+ * jm-macros.m4: Require gl_CHDIR_SAFER.
+
+2005-12-05 Andreas Gruenbacher <agruen@suse.de>
+
+ * acl.m4 (AC_FUNC_ACL): Add POSIX ACL and Linux-specific acl tests.
+
+2005-12-14 Jim Meyering <jim@meyering.net>
+
+ * fprintftime.m4: New file.
+ * jm-macros.m4: Require gl_FPRINTFTIME.
+
+2005-12-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stdbool.m4 (AM_STDBOOL_H): Substitute HAVE__BOOL again, reverting
+ 2005-11-25 change.
+ (AC_HEADER_STDBOOL): Check for buggy compiler that
+ has _Bool but mishandles _Bool |= _Bool.
+
+2005-12-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stat-time.m4 (gl_STAT_TIME): Add check for
+ TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC, to fix IRIX 5.3
+ porting problem reported by Georg Schwarz in
+ <http://lists.gnu.org/archive/html/bug-coreutils/2005-12/msg00083.html>.
+
+2005-12-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * socklen.m4 (gl_TYPE_SOCKLEN_T): Renamed from gl_SOCKLEN_T.
+ Use implementation from Albert Chin, with some
+ comments/corrections by Stepan Kasal and myself.
+ * jm-macros.m4 (gl_MACROS): Adjust to renaming.
+
+2005-12-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regex.m4 (gl_REGEX): Check whether off_t can be used in a switch
+ statement, to work around an HP-UX 10.20 compiler bug reported by
+ Peter O'Gorman.
+
+2005-12-01 Bruno Haible <bruno@clisp.org>
+
+ Import from gnulib.
+ * mbchar.m4 (gl_MBCHAR): Check for wchar.h and wctype.h. Don't compile
+ mbchar.c if they are not both present.
+ * mbiter.m4 (gl_MBITER): Likewise.
+ * strstr.m4 (gl_PREREQ_STRSTR): Use AC_REQUIRE.
+ * strcase.m4 (gl_PREREQ_STRCASECMP): Likewise.
+
+2005-11-30 Jim Meyering <jim@meyering.net>
+
+ * openat.m4 (gl_FUNC_OPENAT): Require and compile mkdirat.c.
+ Require openat-priv.h.
+
+2005-11-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stdbool.m4 (AM_STDBOOL_H): Don't bother substituting HAVE__BOOL;
+ no longer needed.
+ (gl_STDBOOL_H): New macro, from gnulib.
+ (AC_HEADER_STDBOOL): Sync with gnulib.
+
+2005-11-20 Jim Meyering <jim@meyering.net>
+
+ * c.m4: Remove spurious space-before-TAB.
+
+ * euidaccess-stat.m4 (gl_EUIDACCESS_STAT): New file/macro.
+ * prereq.m4: Require gl_EUIDACCESS_STAT.
+
+2005-11-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * c.m4: New file, to work around bugs in AIX cc.
+ Problem reported by James Lemley. This file can go away
+ after Autoconf 2.60 comes out.
+
+2005-11-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * gethrxtime.m4 (gl_PREREQ_GETHRXTIME): Don't require AC_HEADER_TIME
+ or gettimeofday; no longer needed.
+
+2005-10-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * chdir-long.m4 (gl_FUNC_CHDIR_LONG): Revamp wording and local
+ variables to suggest the intended function of the PATH_MAX check.
+
+2005-10-30 Kean Johnston <jkj@sco.com>
+
+ Trivial changes to support SCO systems.
+ * chdir-long.m4 (gl_FUNC_CHDIR_LONG): Check for MAXPATHLEN as well
+ as PATH_MAX.
+ * fpending.m4 (gl_FUNC_FPENDING): Correct check for SCO systems,
+ where __ptr is null when no I/O is pending.
+
+2005-08-27 David Madore <david.madore@ens.fr>
+
+ * sha256.m4, sha512.m4: New files.
+ * prereq.m4: Add gl_SHA256 and gl_SHA512.
+
+2005-10-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stdbool.m4 (AC_HEADER_STDBOOL): Add an "#ifdef __xlc__" test,
+ since yesterday's attempt didn't work.
+
+2005-10-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stdbool.m4 (AC_HEADER_STDBOOL): Check that bool
+ promotes to int, not unsigned int, to catch the AIX 5.3
+ compiler bug.
+
+2005-10-02 Alfred M. Szmidt <ams@gnu.org>
+
+ * chdir-long.m4 (gl_FUNC_CHDIR_LONG): Compare $gl_have_path...
+ against `yes', rather than just testing for nonempty.
+
+2005-10-01 Simon Josefsson <jas@extundo.com>
+
+ * getaddrinfo.m4: Include sys/types.h for sys/socket.h, on FreeBSD
+ and Darwin.
+
+2005-10-01 Simon Josefsson <jas@extundo.com>
+
+ * getaddrinfo.m4 (gl_PREREQ_GETADDRINFO): Use AC_GNU_SOURCE,
+ GNU declares only getaddrinfo as an (POSIX) extension.
+ Check for sys/types.h, sys/socket.h, and netdb.h too,
+ needed by getaddrinfo.h.
+ Check if getaddrinfo, freeaddrinfo and gai_strerror are
+ declared by the POSIX headers.
+ Check if struct addrinfo is declared.
+
+2005-10-01 Jim Meyering <jim@meyering.net>
+
+ * getaddrinfo.m4 (gl_GETADDRINFO): Look for getservbyname in these
+ libraries [inet nsl socket xnet]. Nelson Beebe reported that with
+ native cc on Solaris 7, getaddrinfo.c requires -lsocket.
+
+2005-09-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * openat.m4 (gl_FUNC_OPENAT): Check for fdopendir.
+
+2005-09-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * ullong_max.m4 (gl_ULLONG_MAX): Simplify so that it merely
+ defines ULONG_MAX_LT_ULLONG_MAX. Thomas M.Ott reports that
+ ULLONG_MAX doesn't work with 2.7.2.1.
+
+2005-09-26 Jim Meyering <jim@meyering.net>
+
+ * utimes.m4 (gl_FUNC_UTIMES): Detect the version of utimes
+ from glibc-2.2.5 that fails for read-only files.
+
+2005-09-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * jm-macros.m4 (gl_MACROS): Check for fchmod and fchown.
+
+ * mbchar.m4 (gl_MBCHAR): Check for wchar.h and wctype.h, and
+ don't compile mbchar.c unless both headers exist. See
+ <http://lists.gnu.org/archive/html/bug-gnulib/2005-09/msg00242.html>.
+
+2005-09-24 Jim Meyering <jim@meyering.net>
+
+ * getaddrinfo.m4 (gl_GETADDRINFO): Check for gethostbyname
+ in the inet and nsl libraries. Required on Solaris 5.7.
+
+2005-09-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regex.m4 (gl_REGEX): If replacing, define regcomp to rpl_regcomp,
+ and similarly for the other external symbols. Problem reported
+ by James Gallager.
+
+ * fnmatch.m4 (_AC_FUNC_FNMATCH_IF): Catch Sun Studio 10u1 on Linux
+ bug reported by Jim Meyering.
+
+ * jm-macros.m4 (gl_MACROS): Don't require gl_CHECK_TYPE_STRUCT_UTIMBUF.
+ (gl_CHECK_ALL_HEADERS): Don't check for utime.h.
+ * utimens.m4 (gl_UTIMENS): Check for futimesat (Solaris 10).
+ * getaddrinfo.m4 (gl_PREREQ_GETADDRINFO): Undo previous change;
+ not needed, since socklen is a prerequisite module.
+
+2005-09-23 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (gl_MACROS): AC_REQUIRE([gl_SOCKLEN_T]) here,
+ now that it's no longer required by getaddrinfo.m4.
+
+ Correct build failure (socklen_t not defined) on at least
+ mips-sgi-irix6.5 and alphaev67-dec-osf5.1.
+ * getaddrinfo.m4 (gl_PREREQ_GETADDRINFO): Require gl_SOCKLEN_T.
+ * socklen.m4: New file, from gnulib.
+
+2005-09-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getaddrinfo.m4 (gl_PREREQ_GETADDRINFO): Check for netinet/in.h.
+
+2005-09-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ * check-decl.m4 (_gl_DECL_HEADERS): Don't bother checking for
+ standard C headers, or for headers we no longer use.
+ * jm-macros.m4 (gl_MACROS): Don't require gl_FUNC_XANSTRFTIME;
+ no longer needed.
+ (gl_CHECK_ALL_HEADERS): Don't check for memory.h, mntent.h, mnttab.h,
+ netdb.h, stdlib.h, stdint.h, string.h, sys/filsys.h, sys/fs/s5param.h,
+ sys/fs_types.h, sys/fstyp.h, sys/mntent.h, sys/socket.h, sys/stafs.h,
+ sys/timeb.h, unistd.h. No longer needed.
+ * prereq.m4 (gl_PREREQ): Require gl_FUNC_GETLINE rather than
+ AM_FUNC_GETLINE. Require gl_FUNC_GETPASS_GNU rather than
+ gl_FUNC_GETPASS. Require gl_MBCHAR and gl_MBITER.
+
+ * xanstrftime.m4: Remove; no longer used.
+
+ * getaddrinfo.m4, getdelim.m4, mbchar.m4, mbiter.m4, sockpfaf.m4:
+ New files, from gnulib.
+
+ * backupfile.m4, bison.m4, calloc.m4:
+ * canonicalize.m4, chown.m4, cloexec.m4, dup2.m4:
+ * fileblocks.m4, free.m4, ftruncate.m4, fts.m4:
+ * getcwd.m4, getopt.m4, getpagesize.m4, getpass.m4:
+ * getugroups.m4, group-member.m4, idcache.m4:
+ * lib-link.m4, lib-prefix.m4, link-follow.m4:
+ * mkdir-p.m4, mkstemp.m4, mktime.m4, mountlist.m4:
+ * nanosleep.m4, onceonly_2_57.m4, pathmax.m4:
+ * physmem.m4, posixver.m4, putenv.m4, safe-read.m4:
+ * same.m4, save-cwd.m4, stdio-safer.m4, strndup.m4:
+ * strnlen.m4, unistd-safer.m4, unlinkdir.m4:
+ * userspec.m4, xreadlink.m4, xstrtod.m4:
+ Sync from gnulib.
+
+ * canon-host.m4, getline.m4, mbrtowc.m4, strcase.m4, strstr.m4:
+ Nontrivial sync from gnulib.
+
+2005-09-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * jm-macros.m4 (gl_CHECK_ALL_TYPES): Do not require
+ AC_STRUCT_ST_MTIM_NSEC; it's obsolete.
+ * prereq.m4 (gl_PREREQ): Require gl_STAT_TIME.
+
+ Import from gnulib.
+ * st_mtim.m4: Remove. Superseded by...
+ * stat-time.m4: New file.
+ * timespec.m4 (gl_TIMESPEC): Require AC_C_INLINE.
+ Do not invoke AC_STRUCT_ST_MTIM_NSEC; no longer needed.
+
+2005-09-13 Jim Meyering <jim@meyering.net>
+
+ * autobuild.m4: New file, from autobuild.
+
+2005-09-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regex.m4: Import from gnulib, to fix some 64-bit bugs.
+
+2005-09-01 Jim Meyering <jim@meyering.net>
+
+ * lchown.m4: Require gl_FUNC_CHOWN, for the definition of
+ CHOWN_MODIFIES_SYMLINK, which is used by lchown.c.
+ Require gl_STAT_MACROS, too.
+
+2005-08-27 Jim Meyering <jim@meyering.net>
+
+ * fcntl-safer.m4, stdio-safer.m4, unistd-safer.m4: Sync from gnulib.
+
+2005-08-01 Jim Meyering <jim@meyering.net>
+
+ * xanstrftime.m4 (gl_FUNC_XANSTRFTIME): New file/macro.
+ * jm-macros.m4: Require gl_FUNC_XANSTRFTIME.
+
+2005-07-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regex.m4 (gl_INCLUDED_REGEX): Use AC_RUN_ELSE instead of the
+ obsolescent AC_TRY_RUN. Include the default includes files, for 'exit'.
+
+2005-07-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getdate.m4 (gl_C_COMPOUND_LITERALS): New macro.
+ (gl_GETDATE): Use it.
+
+2005-07-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * lib-check.m4 (cu_LIB_CHECK): Remove no-longer-necessary check
+ for fesetround.
+
+2005-07-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * jm-macros.m4 (gl_CHECK_ALL_HEADERS): Check for stropts.h.
+
+2005-07-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * backupfile.m4 (gl_BACKUPFILE): Use AC_CHECK_FUNCS_ONCE on pathconf.
+ * same.m4 (gl_SAME): Likewise.
+ Require AC_SYS_LONG_FILE_NAMES; bug reported by Gerrit P. Haase.
+
+ Switch to Isamu Hasegawa's implementation of regex, which is
+ now in gnulib.
+ * regex.m4: Import from gnulib.
+
+2005-07-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ * prereq.m4 (gl_PREREQ): Don't require gl_TYPEOF; no longer needed.
+ * typeof.m4: Remove; no longer needed.
+
+2005-07-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ Remove the dependency of the strftime module on the tzset module.
+ * strftime.m4 (gl_FUNC_STRFTIME): Don't require gl_FUNC_TZSET_CLOBBER.
+ * prereq.m4 (gl_PREREQ): Add gl_FUNC_TZSET_CLOBBER.
+
+2005-07-03 Jim Meyering <jim@meyering.net>
+
+ * lstat.m4 (gl_FUNC_LSTAT): New file, from gnulib.
+ Use AC_LIBSOURCES to require lstat.c and lstat.h.
+ Remove obsolete comment.
+
+2005-07-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * fts.m4 (gl_FUNC_FTS_CORE): Don't require
+ AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK; that's now the lstat
+ module's job.
+ * jm-macros.m4 (gl_MACROS): Likewise.
+ * prereq.m4 (gl_PREREQ): Add gl_FUNC_LSTAT.
+
+2005-07-03 Jim Meyering <jim@meyering.net>
+
+ * fcntl-safer.m4 (gl_FCNTL_SAFER): Add fcntl--.h to the list.
+ * stdio-safer.m4 (gl_STDIO_SAFER): Add stdio--.h to the list.
+ * stdlib-safer.m4 (gl_STDLIB_SAFER): Add stdlib--.h to the list.
+ * unistd-safer.m4 (gl_UNISTD_SAFER): Add unistd--.h to the list.
+
+2005-07-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ Cleanup to isolate "safer" functions to a small part of the code.
+ * fcntl-safer.m4, fd-reopen.m4, stdlib-safer.m4: New files.
+ * prereq.m4 (gl_PREREQ): Require gl_FCNTL_SAFER,
+ gl_FD_REOPEN, gl_STDLIB_SAFER.
+
+2005-07-02 Jim Meyering <jim@meyering.net>
+
+ * check-decl.m4, chown.m4, free.m4, getcwd.m4, link-follow.m4:
+ * mktime.m4: Assume HAVE_UNISTD_H, i.e., that <unistd.h> works.
+
+2005-07-01 Jim Meyering <jim@meyering.net>
+
+ * chown.m4, cloexec.m4, dup2.m4, fsusage.m4, getcwd.m4, jm-macros.m4:
+ * mkstemp.m4, mountlist.m4, save-cwd.m4, unistd-safer.m4:
+ Don't check for fcntl.h anymore. Now we assume it exists and is usable.
+
+ * getcwd-path-max.m4 (gl_FUNC_GETCWD_PATH_MAX):
+ Assume HAVE_FCNTL_H (i.e., include <fcntl.h> unconditionally,
+ and don't check for fcntl.h).
+
+2005-06-30 Jim Meyering <jim@meyering.net>
+
+ * stdopen.m4 (gl_STDOPEN): New file/macro.
+ * jm-macros.m4: Require it.
+
+2005-06-26 Jim Meyering <jim@meyering.net>
+
+ * diacrit.m4 (gl_DIACRIT): New file/macro.
+ * jm-macros.m4: Require it.
+
+2005-06-25 Jim Meyering <jim@meyering.net>
+
+ * version-etc.m4 (gl_VERSION_ETC): New file/macro.
+ * jm-macros.m4: Require it.
+
+ * root-dev-ino.m4 (gl_ROOT_DEV_INO): New file/macro.
+ * jm-macros.m4: Require it.
+
+2005-06-23 Jim Meyering <jim@meyering.net>
+
+ * xreadlink.m4: Use AC_LIBSOURCES and AC_LIBOBJ.
+ * xstrtod.m4: Likewise.
+
+2005-06-19 Jim Meyering <jim@meyering.net>
+
+ * xgetcwd.m4 (gl_XGETCWD): Add `AC_LIBOBJ([xgetcwd])'.
+ Register xgetcwd.c and xgetcwd.h via AC_LIBSOURCES.
+
+ * xfts.m4 (gl_FUNC_XFTS): New file/macro.
+ * jm-macros.m4: Require it.
+
+2005-06-13 Jim Meyering <jim@meyering.net>
+
+ * openat.m4 (gl_FUNC_OPENAT): Add openat-die.c.
+
+2005-06-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * extensions.m4: Sync from gnulib; this defines
+ _POSIX_PTHREAD_SEMANTICS for the benefit of Solaris.
+
+2005-06-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * mkdir-p.m4: Renamed from makepath.m4.
+ (gl_MKDIR_PARENTS): Renamed from gl_MAKEPATH. All uses changed.
+ Rename files from makepath.c to mkdir-p.c, and from
+ makepath.h to mkdir-p.h.
+ * filenamecat.m4: Renamed from path-concat.m4.
+ (gl_FILE_NAME_CONCAT): Renamed from gl_PATH_CONCAT. All uses changed.
+ Rename files from path-concat.c to filenamecat.c,
+ and from path-concat.h to filenamecat.h.
+ * getcwd-path-max.m4: Don't use "path" or "filename" to mean
+ "file name" in local variables or comments.
+ * rename.m4: Likewise.
+
+2005-05-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * jm-macros.m4 (gl_CHECK_ALL_HEADERS): Check for priv.h.
+
+2005-05-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ * fts.m4 (gl_FUNC_FTS_CORE): Don't check for inttypes.h or stdint.h,
+ and don't require gt_INTTYPES_PRI.
+
+ * prereq.m4 (gl_PREREQ): Require gl_STRINTCMP, gl_STRNUMCMP.
+ * strnumcmp.m4: New file.
+
+2005-05-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * fts.m4 (gl_FUNC_FTS_CORE): Renamed from gl_FUNC_FTS.
+ (gl_FUNC_FTS, gl_FUNC_FTS_LGPL): New macros.
+
+2005-05-20 Eric Blake <ebb9@byu.net> (tiny change)
+
+ * chown.m4 (gl_FUNC_CHOWN): Correct sense of test for honoring IDs
+ of -1.
+
+2005-05-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * canonicalize.m4 (AC_FUNC_CANONICALIZE_FILE_NAME]):
+ Don't check for stddef.h.
+ * fts.m4 (gl_FUNC_FTS): Don't require AC_HEADER_STDC, as we
+ don't use its results.
+ Don't check for fcntl.h, stddef.h, stdlib.h, string.h, unistd.h,
+ since we include them unconditionally. Don't require
+ AM_STDBOOL_H, since stdbool is a prerequisite.
+ Don't require AC_C_CONST, AC_TYPE_SIZE_T or check for ptrdiff_t
+ since we assume C89 or better.
+ Don't require AC_FUNC_CLOSEDIR_VOID, AC_FUNC_LSTAT, or AC_FUNC_STAT,
+ as we don't use their results.
+ Don't check for fchdir, memmove, memset, strrchr, as we use
+ them unconditionally.
+ * gettimeofday.m4 (AC_FUNC_GETTIMEOFDAY_CLOBBER): Don't define
+ GETTIMEOFDAY_CLOBBERS_LOCALTIME_BUFFER, since nobody uses it.
+ * jm-macros.m4 (gl_MACROS): Require AC_FUNC_LSTAT.
+ Don't check for memcpy, strchr, strerror, strrchr, float.h.
+ Use AC_REQUIRE on AM_LANGINFO_CODESET and gl_GLIBC21 rather
+ than invoking them directly.
+ (gl_CHECK_ALL_HEADERS): Don't check for errno.h, float.h,
+ limits.h, stddef.h, since we assume C89 now.
+ * lib-check.m4: Add copyright notice.
+ (cu_LIB_CHECK): Renamed from gl_LIB_CHECK.
+ Don't check for sqrt; factor no longer needs it.
+ Revamp tests for floor, modf, rint, to define SEQ_LIBM.
+ Redo tests for fesetround to act like the other wons.
+ Use "cu_saved_libs" for local var name, not "ac_su_saved_lib".
+ * prereq.m4: Add copyright notice.
+ (gl_PREREQ): Add gl_LOCALCHARSET.
+ * localcharset.m4: New file, from gnulib.
+
+2005-05-16 Jim Meyering <jim@meyering.net>
+
+ * fts.m4 (gl_FUNC_FTS): Don't require AC_FUNC_MALLOC or
+ AC_FUNC_REALLOC. They are not needed.
+
+2005-05-14 Jim Meyering <jim@meyering.net>
+
+ * unlinkdir.m4: Register unlinkdir.c and unlinkdir.h via AC_LIBSOURCES.
+ Add `AC_LIBOBJ([unlinkdir])'.
+
+2005-05-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * prereqs.m4 (gl_PREREQ): Require gl_UNLINKDIR.
+ * unlinkdir.m4: New file.
+
+2005-05-13 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4: Don't require gl_FUNC_STAT or gl_FUNC_LSTAT.
+ * stat.m4: Remove unnecessary file.
+ * lstat.m4: Remove unnecessary file.
+
+ * readdir.m4 (GL_FUNC_READDIR): Remove, now that remove.c no
+ longer needs it.
+ * jm-macros.m4 (gl_MACROS): Don't require GL_FUNC_READDIR.
+
+2005-05-10 Derek Price <derek@ximbiot.com>
+
+ * getopt.m4 (gl_GETOPT): Check for Solaris 10 bug, not decl, when
+ possible.
+
+2005-05-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getopt.m4 (gl_GETOPT): Check for Solaris 10 getopt, and avoid
+ needless checks.
+
+2005-05-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getpass.m4, gettext.m4: Sync from gnulib.
+
+2005-04-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * euidaccess.m4 (gl_PREREQ_EUIDACCESS): Don't require AC_HEADER_STAT.
+ * jm-macros.m4 (gl_CHECK_ALL_TYPES): Likewise.
+ * lchown.m4 (gl_FUNC_CHOWN): Likewise.
+ (gl_PREREQ_CHOWN): Remove.
+ * lstat.m4 (gl_FUNC_LSTAT): Require AC_FUNC_LSTAT instead of calling
+ it. Don't require AC_HEADER_STAT.
+ (gl_PREREQ_LSTAT): Remove.
+ * mkstemp.m4 (gl_PREREQ_TEMPNAME): Check stdint.h only once.
+ Don't require AC_HEADER_STAT.
+ * prereq.m4 (gl_PREREQ): Require gl_STAT_MACROS.
+ * rmdir.m4 (gl_FUNC_RMDIR): Don't require AC_HEADER_STAT.
+ (gl_PREREQ_RMDIR): Remove.
+
+2005-04-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stat-macros.m4: New file, from gnulib, except that gl_STAT_MACROS
+ also requires AC_HEADER_STAT.
+ * canonicalize.m4 (AC_FUNC_CANONICALIZE_FILE_NAME): Don't
+ mention stat-macros.h or AC_HEADER_STAT, since we'll make
+ the stat-macros module a prerequisite.
+ * file-type.m4 (gl_FILE_TYPE): Likewise.
+ * filemode.m4 (gl_FILEMODE): Likewise.
+ * makepath.m4 (gl_MAKEPATH): Likewise.
+ * modechange.m4 (gl_MODECHANGE): Likewise.
+
+2005-04-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * clock_time.m4 (gl_CLOCK_TIME): Use gl_ rather than fetish_ for
+ variable names.
+ * jm-macros.m4 (gl_MACROS): Use gl_ or coreutils_ rather than fetish_
+ for prefixes.
+ * rmdir-errno.m4 (gl_FUNC_RMDIR_NOTEMPTY): Renamed from
+ fetish_FUNC_RMDIR_NOTEMPTY. All uses changed. Use gl_ for
+ variable prefixes.
+
+2005-04-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ Add bulletproofing for cases where stdin, stdout, or stderr are closed.
+ * fcntl-safer.m4: Remove.
+ * stdio-safer.m4 (gl_STDIO_SAFER): Use AC_LIBSOURCES and AC_LIBOBJ.
+ * unistd-safer.m4 (gl_UNISTD_SAFER): Likewise.
+ Invoke gl_PREREQ_FD_SAFER.
+ (gl_PREREQ_FD_SAFER): New macro.
+ * prereq.m4 (gl_PREREQ): Don't require gl_FCNTL_SAFER.
+
+2005-04-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * jm-macros.m4 (gl_MACROS): Check for siginterrupt.
+ * nanosleep.m4 (gl_PREREQ_NANOSLEEP): Likewise.
+ * jm-macros.m4 (gl_CHECK_ALL_TYPES): Do not require AC_TYPE_SIGNAL.
+
+2005-03-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * readutmp.m4 (gl_READUTMP): Require AC_C_INLINE.
+ Use AC_CHECK_HEADERS_ONCE and AC_CHECK_FUNCS_ONCE when possible.
+ Remove duplicate call to AC_LIBOBJ(readutmp).
+ (gl_PREREQ_READUTMP): Remove. All uses inlined.
+
+2005-03-28 Eric Blake <ebb9@byu.net> (tiny change)
+
+ * getcwd-path-max.m4: Return success on systems such as Cygwin
+ where no absolute path name can be longer than PATH_MAX.
+
+2005-03-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ * canonicalize.m4 (AC_FUNC_CANONICALIZE_FILE_NAME): Add stat-macros.h
+ to AC_LIBSOURCES.
+ * file-type.m4 (gl_FILE_TYPE): Likewise.
+ * filemode.m4 (gl_FILEMODE): Likewise.
+ * makepath.m4 (gl_MAKEPATH): Likewise.
+ * xstrtol.m4 (gl_XSTRTOL): Add xstrtoul.c to AC_LIBSOURCES.
+ Add xstrtoul to AC_LIBOBJ.
+
+ * onceonly.m4: Remove.
+ * onceonly_2_57.m4: Add.
+ This change shrinks "configure" by over 300 kB.
+
+ Another change imported from gnulib.
+ * memcasecmp.m4 (gl_MEMCASECMP): Renamed from gl_FUNC_MEMCASECMP.
+ All uses changed. Require AC_HEADER_STDC instead of invoking it.
+ Remove check for stddef.h, size_t, const, since we now assume
+ C89 or better.
+
+2005-03-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * gettext.m4, inttypes.m4, isc-posix.m4, lib-link.m4, nls.m4,
+ onceonly.m4, po.m4: Sync from gnulib.
+
+2005-03-17 Jim Meyering <jim@meyering.net>
+
+ * typeof.m4 (gl_TYPEOF): New file/macro.
+ * prereq.m4 (gl_PREREQ): Require gl_TYPEOF.
+
+2005-03-10 Jim Meyering <jim@meyering.net>
+
+ * save-cwd.m4 (gl_SAVE_CWD): Check for fchdir.
+
+ * human.m4 (gl_HUMAN): Add intprops.h.
+ * inttostr.m4 (gl_INTTOSTR): Likewise
+ * sig2str.m4 (gl_FUNC_SIG2STR): Likewise.
+ * userspec.m4 (gl_USERSPEC): Likewise.
+ * utimecmp.m4 (gl_UTIMECMP): Likewise.
+ * xnanosleep.m4 (gl_XNANOSLEEP): Likewise.
+
+ * xstrtol.m4 (gl_XSTRTOL): Use AC_LIBSOURCES and AC_LIBOBJ
+ to list the required files.
+
+2005-03-09 Jim Meyering <jim@meyering.net>
+
+ * argmatch.m4, cycle-check.m4: New files.
+ * prereq.m4: Require their macros.
+
+2005-03-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * xnanosleep.m4 (gl_XNANOSLEEP): Remove configuration attempting
+ to detect nanosleep bug.
+
+2005-02-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * gettext.m4, inttypes-pri.m4, lib-link.m4, lib-prefix.m4, nls.m4,
+ po.m4, progtest.m4: Sync from gnulib.
+
+2005-02-23 Jim Meyering <jim@meyering.net>
+
+ * extensions.m4 (gl_USE_SYSTEM_EXTENSIONS): Revert yesteday's change.
+ Thanks to Bruno Haible for catching it.
+
+2005-02-22 Jim Meyering <jim@meyering.net>
+
+ * extensions.m4 (gl_USE_SYSTEM_EXTENSIONS): Fix typo: s/ifndef/ifdef/.
+
+2005-02-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ * xnanosleep.m4: New file.
+ * gethrxtime.m4 (gl_PREREQ_GETHRXTIME): Require gl_CLOCK_TIME,
+ gl_USE_SYSTEM_EXTENSIONS. Check whether CLOCK_MONOTONIC is
+ defined, and set LIB_GETHRXTIME accordingly. This is needed
+ for newer GNU/Linux systems that have clock_gettime, so that they
+ link in the appropriate library for it when needed.
+ * prereq.m4 (gl_PREREQ): Require gl_XNANOSLEEP.
+
+2005-02-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * gethrxtime.m4: New file.
+ * gettime.m4 (gl_GETTIME): Check for nanotime.
+ * jm-macros.m4 (gl_MACROS): Don't check for gethrtime.
+ * prereq.m4 (gl_PREREQ): Require gl_GETHRXTIME.
+
+2005-02-20 Jim Meyering <jim@meyering.net>
+
+ * stripslash.m4: New file.
+ * linebuffer.m4: New file.
+ * prereq.m4 (gl_PREREQ): Require gl_STRIPSLASH and gl_LINEBUFFER.
+
+2005-02-11 Jim Meyering <jim@meyering.net>
+
+ * inttostr.m4 (gl_INTTOSTR): Use AC_LIBSOURCES to list the
+ required source files.
+
+2005-02-09 Jim Meyering <jim@meyering.net>
+
+ * getcwd.m4 (gl_FUNC_GETCWD_NULL): Use AC_LIBSOURCES to list the
+ required source files.
+
+2005-02-08 Jim Meyering <jim@meyering.net>
+
+ * memcasecmp.m4 (gl_FUNC_MEMCASECMP): New file and macro.
+ * prereq.m4: Require gl_FUNC_MEMCASECMP.
+
+2005-02-07 Jim Meyering <jim@meyering.net>
+
+ * fts.m4 (gl_FUNC_FTS): New file and macro.
+ * prereq.m4: Require gl_FUNC_FTS.
+
+2005-02-06 Jim Meyering <jim@meyering.net>
+
+ * memrchr.m4 (gl_FUNC_MEMRCHR): Check for declaration of memrchr.
+
+ * chdir-long.m4 (gl_PREREQ_CHDIR_LONG): Depend on gl_FUNC_MEMRCHR.
+
+2005-02-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * memrchr.m4 (gl_FUNC_MEMRCHR): Add AC_LIBSOURCES, for memrchr.h.
+
+2005-01-29 Jim Meyering <jim@meyering.net>
+
+ Use AC_LIBSOURCES to list corresponding source (.c, .h, .y) files
+ so that automake automatically knows to distribute those files.
+ Use AC_LIBOBJ to ensure that automake automatically knows the
+ names of always-compiled source files. Automake already knows
+ the names of conditionally compiled ones, e.g., due to preexisting
+ uses of AC_LIBOBJ and AC_REPLACE_FUNCS.
+ [This is a start. Many still remain to be fixed...]
+
+ * acl.m4, backupfile.m4, c-strtod.m4, canon-host.m4:
+ * canonicalize.m4, cloexec.m4, closeout.m4, dirfd.m4, dirname.m4:
+ * exclude.m4, exitfail.m4, file-type.m4, filemode.m4, fpending.m4:
+ * fsusage.m4, getdate.m4, getline.m4, getpagesize.m4, getpass.m4:
+ * gettime.m4, getugroups.m4, group-member.m4, hard-locale.m4:
+ * hash.m4, human.m4, idcache.m4, long-options.m4, makepath.m4:
+ * md5.m4, memcoll.m4, modechange.m4, mountlist.m4, nanosleep.m4:
+ * path-concat.m4, pathmax.m4, physmem.m4, posixtm.m4, posixver.m4:
+ * quote.m4, quotearg.m4, readtokens.m4, readutmp.m4, safe-read.m4:
+ * safe-write.m4, same.m4, savedir.m4, setenv.m4, settime.m4:
+ * sha1.m4, sig2str.m4, strdup.m4, strftime.m4, strndup.m4:
+ * strverscmp.m4, timespec.m4, unlocked-io.m4, userspec.m4:
+ * utimecmp.m4, utimens.m4, xalloc.m4, yesno.m4:
+
+2005-01-27 Jim Meyering <jim@meyering.net>
+
+ * hash-pjw.m4 (gl_HASH_PJW): New file/macro.
+ * basename.m4 (gl_BASENAME): New file/macro.
+ * prereq.m4: Require gl_HASH_PJW and gl_BASENAME.
+
+2005-01-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ Sync from gnulib.
+ * acl.m4, afs.m4, alloca.m4, assert.m4, atexit.m4,
+ backupfile.m4, bison.m4, c-strtod.m4, calloc.m4,
+ canon-host.m4, canonicalize.m4, clock_time.m4, cloexec.m4,
+ closeout.m4, d-ino.m4, d-type.m4, dirfd.m4, dirname.m4,
+ dos.m4, dup2.m4, error.m4, euidaccess.m4, exclude.m4,
+ exitfail.m4, extensions.m4, fcntl-safer.m4, file-type.m4,
+ fileblocks.m4, filemode.m4, fnmatch.m4, fpending.m4, free.m4,
+ fstypename.m4, fsusage.m4, ftruncate.m4, getcwd-path-max.m4,
+ getcwd.m4, getdate.m4, getgroups.m4, gethostname.m4,
+ getline.m4, getndelim2.m4, getopt.m4, getpagesize.m4,
+ getpass.m4, gettime.m4, gettimeofday.m4, getugroups.m4,
+ getusershell.m4, group-member.m4, hard-locale.m4, hash.m4,
+ host-os.m4, human.m4, idcache.m4, inttostr.m4, jm-winsz1.m4,
+ jm-winsz2.m4, link-follow.m4, long-options.m4, ls-mntd-fs.m4,
+ lstat.m4, makepath.m4, md5.m4, memchr.m4, memcmp.m4,
+ memcoll.m4, memcpy.m4, memmove.m4, memrchr.m4, memset.m4,
+ mkdir-slash.m4, mkstemp.m4, mktime.m4, modechange.m4,
+ mountlist.m4, nanosleep.m4, obstack.m4, path-concat.m4,
+ pathmax.m4, perl.m4, physmem.m4, posixtm.m4, posixver.m4,
+ putenv.m4, quote.m4, quotearg.m4, readdir.m4, readtokens.m4,
+ readutmp.m4, regex.m4, rename.m4, restrict.m4, rmdir-errno.m4,
+ rmdir.m4, rpmatch.m4, same.m4, savedir.m4, settime.m4,
+ sha1.m4, sig2str.m4, st_dm_mode.m4, st_mtim.m4, stat.m4,
+ stdio-safer.m4, strdup.m4, strftime.m4, strndup.m4,
+ strnlen.m4, strtod.m4, strtoimax.m4, strtol.m4, strtoll.m4,
+ strtoul.m4, strtoull.m4, strtoumax.m4, strverscmp.m4,
+ timespec.m4, tm_gmtoff.m4, tzset.m4, uint32_t.m4,
+ uintptr_t.m4, unistd-safer.m4, unlink-busy.m4, unlocked-io.m4,
+ uptime.m4, userspec.m4, utimbuf.m4, utime.m4, utimecmp.m4,
+ utimens.m4, utimes-null.m4, xalloc.m4, xgetcwd.m4,
+ xreadlink.m4, xstrtod.m4, xstrtoimax.m4, xstrtol.m4,
+ xstrtoumax.m4, yesno.m4:
+ Use an all-permissive copyright notice, recommended by RMS.
+
+2005-01-21 Bruno Haible <bruno@clisp.org>
+
+ Sync from gnulib.
+ * allocsa.m4, chdir-long.m4, chown.m4, codeset.m4, eealloc.m4,
+ eoverflow.m4, glibc21.m4, iconv.m4, intmax_t.m4, inttypes_h.m4,
+ lchown.m4, lib-ld.m4, lib-link.m4, lib-prefix.m4, longdouble.m4,
+ longlong.m4, mbrtowc.m4, mbstate_t.m4, mbswidth.m4, mempcpy.m4,
+ openat.m4, readlink.m4, safe-read.m4, safe-write.m4, setenv.m4,
+ signed.m4, ssize_t.m4, stdbool.m4, stdint_h.m4, stpcpy.m4,
+ strcase.m4, strcspn.m4, strpbrk.m4, strstr.m4, uintmax_t.m4,
+ ullong_max.m4, ulonglong.m4, unicodeio.m4, utimes.m4,
+ vasnprintf.m4, vasprintf.m4, wchar_t.m4, wint_t.m4:
+ Use an all-permissive copyright notice, recommended by RMS.
+
+2005-01-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * save-cwd.m4 (gl_SAVE_CWD): Remove check for fcntl; we now assume it.
+
+2005-01-14 Jim Meyering <jim@meyering.net>
+
+ * utimes.m4: Work around tests/touch/empty-file failure on a system
+ (sparc64, Linux-2.4.28, glibc-2.3.3) that didn't honor utimes'
+ NULL-means-set-to-current-time semantics.
+ Remove temporary file immediately, rather than waiting
+ for configure's at-exit trap code to do it.
+
+2005-01-04 Jim Meyering <jim@meyering.net>
+
+ * chown.m4 (gl_FUNC_CHOWN): When cross-compiling, assume that chown
+ is sane and DOES follow symlinks. Besides, testing 20 different
+ systems found no broken chown implementations.
+ Prompted by a change in rsync's copy of this macro.
+
+2005-01-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * ullong_max.m4: New file.
+ * jm-macros.m4 (gl_MACROS): Require gl_ULLONG_MAX.
+
+2005-01-03 Jim Meyering <jim@meyering.net>
+
+ * mkstemp.m4 (gl_FUNC_MKSTEMP): Don't `cd' into the temporary
+ subdirectory. That would make the subsequent AC_TRY_RUN macro fail,
+ for lack of the ./confdefs.h file. Instead, use the temporary
+ directory name as a prefix on the template string.
+ Include <unistd.h> for the declaration of close.
+ Remove `.tmp' suffix; mkstemp requires that XXXXXX be a suffix.
+
+2004-12-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getdate.m4 (gl_GETDATE): Remove AC_FUNC_ALLOCA.
+
+2004-12-21 Jim Meyering <jim@meyering.net>
+
+ * mkstemp.m4 (gl_FUNC_MKSTEMP): Remove temporary directory right
+ away, rather than waiting for configure's at-exit trap code to do it.
+ Suggestion from Stepan Kasal.
+
+2004-12-20 Jim Meyering <jim@meyering.net>
+
+ * mkstemp.m4: Do the `cd' in a subshell.
+
+ * mkstemp.m4: Rather than using "conftestXXXXXX" as the mkstemp
+ template, use a temporary directory and an 8.3-friendly template
+ to avoid trouble on systems like DJGPP.
+ Reported by Juan M. Guerrero via Stepan Kasal.
+
+2004-12-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * c-strtod.m4 (gl_C99_STRTOLD): New macro.
+ (gl_C_STRTOD): Use it instead of AC_CHECK_DECLS_ONCE(strtold).
+
+2004-12-10 Jim Meyering <jim@meyering.net>
+
+ * chdir-long.m4 (gl_FUNC_CHDIR_LONG: Arrange to compile chdir-long.c
+ only on systems that define PATH_MAX.
+
+2004-12-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * ls-mntd-fs.m4 (AC_FUNC_GETMNTENT): Fix typo in previous change:
+ spurious "-l"s. Problem reported by Stepan Kasal.
+
+2004-12-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * ls-mntd-fs.m4 (AC_FUNC_GETMNTENT): New macro, to work around bug
+ in Autoconf 2.59. Problem reported by Mark D. Baushke.
+
+2004-12-06 Jim Meyering <jim@meyering.net>
+
+ * save-cwd.m4 (gl_SAVE_CWD): Use AC_LIBSOURCES.
+ Use AC_LIBOBJ(save-cwd).
+ * chdir-long.m4 (gl_FUNC_CHDIR_LONG): Use AC_LIBSOURCES.
+ Use AC_LIBOBJ(chdir-long).
+ * mempcpy.m4 (gl_FUNC_MEMPCPY): Use AC_LIBSOURCES.
+ * lchown.m4 (gl_FUNC_LCHOWN): Likewise.
+ * openat.m4 (gl_FUNC_OPENAT): Likewise.
+ (gl_PREREQ_GETCWD): Use AC_REQUIRE.
+
+2004-12-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * openat.m4: Add copyright notice.
+ (gl_FUNC_OPENAT): Require gl_USE_SYSTEM_EXTENSIONS, since Solaris
+ requires __EXTENSIONS__ to be defined when compiling pedantically,
+ if you want AT_FDCWD.
+
+2004-12-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * hard-locale.m4 (gl_HARD_LOCALE): Assume locale.h and setlocale
+ exist.
+ * human.m4 (gl_HUMAN): Assume locale.h and localeconv exist.
+ * jm-macros.m4 (gl_MACROS): Assume localeconv exists.
+
+2004-11-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getcwd-path-max.m4 (gl_FUNC_GETCWD_PATH_MAX):
+ Define HAVE_PARTLY_WORKING_GETCWD if getcwd is partly working.
+
+ * readutmp.m4 (gl_READUTMP): Don't check for sys/param.h.
+
+2004-11-30 Jim Meyering <jim@meyering.net>
+
+ * chdir-long.m4: Rename from chdir.m4.
+ * jm-macros.m4 (gl_MACROS): Reflect renaming.
+
+2004-11-28 Jim Meyering <jim@meyering.net>
+
+ * chdir.m4: New file.
+ * openat.m4: New file.
+ * jm-macros.m4 (gl_MACROS): Require gl_FUNC_CHDIR.
+
+2004-11-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * mempcpy.m4: New file, taken from gnulib.
+ * getcwd-path-max.m4 (gl_FUNC_GETCWD_PATH_MAX): Renamed from
+ GL_FUNC_GETCWD_PATH_MAX for consistency. All uses changed.
+ Use the _ONCE methods, for efficiency.
+ Check for fcntl.h. In test program, include <errno.h>
+ and <fcntl.h> if available. Remove old K&R cruft from
+ test program. Check for common errors in GNU/Linux,
+ OpenBSD, and Solaris. Just set gl_cv_func_getcwd_path_max;
+ don't do AC_LIBOBJ, as that's getcwd.m4's job.
+ * getcwd.m4 (gl_FUNC_GETCWD_NULL): Renamed from
+ AC_FUNC_GETCWD_NULL. All used changed. Change cache variable
+ name accordingly.
+ (gl_FUNC_GETCWD, gl_PREREQ_GETCWD): New macros. Revamp to
+ accommodate new getcwd.c.
+ * jm-macros.m4 (gl_MACROS): Don't require GL_FUNC_GETCWD_PATH_MAX.
+ * prereq.m4 (gl_PREREQ): Add gl_FUNC_MEMPCPY.
+ * xgetcwd.m4 (gl_XGETCWD): Replace with gl_FUNC_GETCWD, since
+ that's all we need now.
+
+2004-11-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * utimens.m4 (gl_UTIMENS): Check for futimes function.
+
+2004-11-23 Sergey Poznyakoff <gray@Mirddin.farlep.net>
+
+ * getopt.m4 (gl_GETOPT): Check if GETOPT_H is already set, in
+ order not to spoil the result of an eventual previous invocation
+ of gl_GETOPT_SUBSTITUTE.
+
+2004-11-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * calloc.m4 (_AC_FUNC_CALLOC_IF): Check for buggy calloc implementations
+ that mishandle size_t overflow.
+
+2004-11-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * canon-host.m4 (gl_CANON_HOST): Check for getaddrinfo.
+
+2004-11-13 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Do require gl_FUNC_FPENDING.
+ * fpending.m4: Restore file.
+
+2004-11-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getopt.m4: Sync from gnulib.
+
+2004-11-06 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Don't require gl_FUNC_FPENDING.
+ * fpending.m4: Remove file.
+
+2004-11-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * setenv.m4: New file, from gnulib.
+ * prereq.m4 (gl_PREREQ): Require gt_FUNC_SETENV.
+ * uint32_t.m4: Sync from gnulib.
+
+2004-11-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getpass.m4: Sync from gnulib.
+
+2004-10-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getpagesize.m4: Sync from gnulib.
+
+2004-10-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * jm-macros.m4 (gl_MACROS): Check for mbrlen, for pathchk.
+ (gl_CHECK_ALL_TYPES): Require AC_TYPE_MBSTATE_T, for pathchk.
+
+ Sync from gnulib.
+ * getopt.m4 (gl_GETOPT): Detect and reject the incompatible BSD
+ implementation of getopt_long.
+
+2004-10-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ Sync from gnulib.
+
+ * xalloc.m4 (gl_PREREQ_XSTRDUP): Remove. All uses removed.
+
+ * unlocked-io.m4: Add copyright notice.
+ (gl_FUNC_GLIBC_UNLOCKED_IO): Define USE_UNLOCKED_IO.
+
+2004-10-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ Sync from gnulib.
+ * mbswidth.m4: Add copyright notice.
+ * vasnprintf.m4 (gl_FUNC_VASNPRINTF): Require gl_EOVERFLOW.
+ * eoverflow.m4: New file.
+
+2004-08-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getopt.m4: Sync from gnulib.
+
+2004-08-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * obstack.m4 (gl_PREREQ_OBSTACK): Require
+ gl_AC_HEADER_INTTYPES_H, gl_AC_HEADER_STDINT_H, gl_AC_TYPE_UINTMAX_T.
+
+ * fnmatch.m4 (_AC_LIBOBJ_FNMATCH): Check for wmemchr and wmemcpy.
+
+2004-08-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * sha1.m4: Renamed from sha.m4.
+ (gl_SHA1): Renamed from gl_SHA. All uses changed.
+
+2004-08-08 Simon Josefsson <jas@extundo.com>
+
+ * getpass.m4 (gl_FUNC_GETPASS, gl_FUNC_GETPASS_GNU):
+ Check getpass declaration.
+
+2004-08-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * canonicalize.m4, getcwd-path-max.m4, strdup.m4: Merge from gnulib.
+
+2004-08-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ Merge from gnulib.
+
+ * alloca.m4 (gl_FUNC_ALLOCA): Define HAVE_ALLOCA_H always,
+ for backward compatibility with older code. We need our own
+ alloca.h if _AIX is defined. Define HAVE_ALLOCA if we discover
+ it under some other name, and our alloca.h will define it.
+ * backupfile.m4, calloc.m4, strtoimax.m4, strtoumax.m4:
+ Bump serial number only.
+ * dirfd.m4, intmax_t.m4, inttypes_h.m4, mbrtowc.m4, stdint_h.m4,
+ uintmax_t.m4: Finish renaming jm_ to gl_.
+ * dos.m4 (gl_AC_DOS): Check for _WIN32, __WIN32__, and __MSDOS__.
+ * host-os.m4: s/KNetBSD/kNetBSD/g and s/KFreeBSD/kFreeBSD/g.
+ * prereq.m4 (gl_PREREQ): Add gl_GETTIME, AC_FUNC_CALLOC.
+ * gettime.m4: New file.
+ * settime.m4: Require gl_TIMESPEC; check for settimeofday, stime.
+ * unlocked-io.m4: Remove -*- autoconf -*-.
+ * xalloc.m4: No longer require AC_FUNC_CALLOC, AC_FUNC_MALLOC,
+ AC_FUNC_REALLOC.
+
+2004-08-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ OpenBSD porting fixes.
+ * boottime.m4: Add copyright notice.
+ (GNULIB_BOOT_TIME): Include sys/param.h before testing
+ for sys/sysctl.h.
+ * fsusage.m4: Add copyright notice.
+ (gl_FSUSAGE): Include sys/param.h before checking for sys/mount.h.
+ * jm-macros.m4: Include copyright notice.
+ (gl_MACROS): Use the _ONCE variants when appropriate.
+ Include sys/param.h before testing for sys/sysctl.h and sys/mount.h.
+ * ls-mntd-fs.m4: Include copyright notice.
+ (gl_LIST_MOUNTED_FILE_SYSTEMS): Include sys/param.h before
+ testing for sys/mount.h.
+ * stat-prog.m4: Include copyright notice.
+ (cu_PREREQ_STAT_PROG): Use the _ONCE variants when appropriate.
+ Include sys/param.h before testing for sys/mount.h.
+
+2004-08-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * jm-macros.m4 (gl_CHECK_ALL_TYPES):
+ Require gl_AC_TYPE_UINTPTR_T instead of using AC_CHECK_TYPE
+ on uintptr_t. Require gl_AC_TYPE_UINT32_T.
+ * md5.m4 (gl_MD5): Require gl_AC_TYPE_UINT32_T.
+ * uint32_t.m4, uintptr_t.m4: New files.
+
+2004-07-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * md5.m4 (gl_MD5): Do not require AC_C_INLINE, since it doesn't
+ use inline any more. Require AC_C_BIGENDIAN, though.
+ * sha.m4 (gl_SHA): Require AC_C_BIGENDIAN.
+
+2004-07-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ * euidaccess.m4 (gl_PREREQ_EUIDACCESS): Don't bother checking for
+ unistd.h, as autoconf does this for us. Check for libgen.h.
+ Also look for eaccess within -lgen, which is where it is in
+ Solaris. Set LIB_EACCESS accordingly.
+
+ * backupfile.m4 (gl_BACKUPFILE): AC_REQUIRE
+ gl_CHECK_TYPE_STRUCT_DIRENT_D_INO instead of invoking it directly.
+ Do not require AC_FUNC_CLOSEDIR_VOID.
+
+2004-07-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * jm-macros.m4 (gl_MACROS): Remove test for setreuid and setregid,
+ as test.c no longer uses them directly.
+
+ * euidaccess.m4 (gl_FUNC_NONREENTRANT_EUIDACCESS): New macro.
+ (gl_FUNC_EUIDACCESS): Use AC_CHECK_DECLS_ONCE, not AC_CHECK_DECLS.
+ (gl_PREREQ_EUIDACCESS): Check for eaccess and setregid decls.
+ Require AC_HEADER_STAT.
+
+ * prereq.m4 (gl_PREREQ): Invoke gl_FUNC_NONREENTRANT_EUIDACCESS,
+ not gl_FUNC_EUIDACCESS.
+
+2004-07-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * prereq.m4 (gl_PREREQ): Add gl_FCNTL_SAFER.
+ * fcntl-safer.m4: New file.
+
+2004-07-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * c-strtod.m4 (gl_C_STRTOD): Add gl_USE_SYSTEM_EXTENSIONS.
+
+2004-07-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * c-strtod.m4: New file.
+ * prereq.m4 (gl_PREREQ): Add gl_C_STRTOLD.
+
+2004-04-03 Dmitry V. Levin <ldv@altlinux.org>
+
+ * canonicalize.m4 (AC_FUNC_CANONICALIZE_FILE_NAME):
+ Do not add canonicalize.c here.
+
+2004-07-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * path-concat.m4 (gl_PATH_CONCAT): Don't require gl_AC_DOS, the
+ prerequisite modules now handle the DOS stuff.
+ Don't check for unistd.h.
+
+2004-06-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * dos.m4 (gl_AC_DOS): Define FILE_SYSTEM_PREFIX_LEN, not
+ FILESYSTEM_PREFIX_LEN. Generate
+ FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX, not
+ FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX. Generate
+ FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR, not
+ FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR.
+ * ls-mntd-fs.m4 (gl_LIST_MOUNTED_FILE_SYSTEMS): Renamed from
+ gl_LIST_MOUNTED_FILESYSTEMS. All uses changed.
+
+2004-06-25 Jim Meyering <jim@meyering.net>
+
+ * afs.m4 (gl_AFS): Use AC_ARG_WITH instead of ancient, hard-coded
+ AC_MSG_CHECKING/AC_MSG_RESULT etc. From Tim Waugh.
+
+2004-06-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * getcwd-path-max.m4 (GL_FUNC_GETCWD_PATH_MAX): Fix typo: getcwd
+ was being replaced when it shouldn't have been, and vice versa.
+
+2004-06-09 Jim Meyering <jim@meyering.net>
+
+ * calloc.m4 (AC_FUNC_CALLOC): Remove use of AN_FUNCTION.
+
+2004-06-07 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (gl_MACROS): Check for the directio function.
+
+2004-06-01 Jim Meyering <jim@meyering.net>
+
+ * stdbool.m4: Update from gnulib.
+
+2004-05-29 Jim Meyering <jim@meyering.net>
+
+ * xalloc.m4 (gl_PREREQ_XMALLOC): Require AC_FUNC_CALLOC.
+ * calloc.m4 (AC_FUNC_CALLOC, _AC_FUNC_CALLOC_IF): New file/macros.
+
+2004-05-21 Jim Meyering <jim@meyering.net>
+
+ * free.m4: Update from gnulib (fix reversed test).
+
+2004-05-03 Jim Meyering <jim@meyering.net>
+
+ Temporary work-around for the problem reported here:
+ http://sources.redhat.com/ml/bug-automake/2004/msg00339.html
+
+ * gettext.m4 (AM_GNU_GETTEXT): Don't require AM_INTL_SUBDIR.
+ (AM_INTL_SUBDIR): Comment out definition.
+
+2004-05-01 Jim Meyering <jim@meyering.net>
+
+ * jm-mktime.m4: Remove file. This is now part of mktime.m4.
+ * glibc.m4, c-stack.m4, xsize.m4, size_max.m4: Remove unused files.
+ * printf-posix.m4, lcmessage.m4: Likewise.
+ * gettextext.m4, intdiv0.m4, intmax.m4: Likewise.
+
+ * jm-macros.m4 (gl_MACROS): Move fchown-checking code to chown.m4.
+ * chown.m4 (gl_PREREQ_CHOWN): Check for fcntl.h.
+ See if we need an fchown replacement.
+ (gl_FUNC_CHOWN_FOLLOWS_SYMLINK): New macro.
+ (gl_FUNC_CHOWN): Require gl_FUNC_CHOWN_FOLLOWS_SYMLINK,
+ and use the replacement function if we detect either defect.
+
+2004-04-22 Paul Eggert <eggert@twinsun.com>
+
+ * jm-macros.m4 (gl_MACROS): Check for tcgetpgrp.
+
+2004-04-23 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Don't check for values.h; it's no longer used.
+
+2004-04-20 Jim Meyering <jim@meyering.net>
+
+ Change UTILS_ to gl_ in AC_DEFINE'd names.
+ Change utils_- and jm_-prefixed variables, too.
+ * mkdir-slash.m4 (gl_FUNC_MKDIR_TRAILING_SLASH): Renamed from
+ UTILS_FUNC_MKDIR_TRAILING_SLASH.
+ * mkstemp.m4 (gl_FUNC_MKSTEMP): Renamed from UTILS_FUNC_MKSTEP.
+ * host-os.m4 (gl_HOST_OS): Renamed from UTILS_HOST_OS.
+
+ * dirfd.m4 (gl_FUNC_DIRFD): Rename from UTILS_FUNC_DIRFD.
+ Don't emit trailing blanks.
+ Also rename jm_-prefixed variables to have gl_ prefix.
+
+ * jm-macros.m4: Reflect the renamings.
+ * prereq.m4: Likewise.
+
+2004-04-19 Jim Meyering <jim@meyering.net>
+
+ * readutmp.m4 (gl_PREREQ_READUTMP): Require gl_FUNC_FREE,
+ now that readutmp.c may call `free (0)'.
+
+2004-04-14 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am: Remove file. With automake-1.8.3, it's no longer needed.
+ * Makefile.am.in: Likewise.
+ * Makefile.in: Likewise.
+
+ * stat-prog.m4 (cu_PREREQ_STAT_PROG): Don't use AC_CHECK_HEADERS to
+ check for inttypes.h. Instead, require gt_HEADER_INTTYPES_H.
+
+ * jm-macros.m4: Require cu_PREREQ_STAT_PROG.
+
+ * prereq.m4: Move prerequisite function for src/stat.c to ...
+ * stat-prog.m4 (cu_PREREQ_STAT_PROG): New file. Contents from prereq.m4.
+
+2004-04-13 Jim Meyering <jim@meyering.net>
+
+ Change `jm_' in AC_DEFINE'd names to `gl_'. Update all uses.
+
+ * afs.m4, allocsa.m4, assert.m4, backupfile.m4, bison.m4:
+ * check-decl.m4, chown.m4, d-ino.m4, d-type.m4, dirname.m4:
+ * dos.m4, error.m4, fpending.m4, fstypename.m4, fsusage.m4:
+ * ftruncate.m4, getdate.m4, getgroups.m4, gettext.m4, glibc21.m4:
+ * group-member.m4, human.m4, intmax.m4, intmax_t.m4, inttostr.m4:
+ * inttypes_h.m4, jm-macros.m4, jm-mktime.m4, jm-winsz1.m4:
+ * jm-winsz2.m4, lchown.m4, lib-check.m4, link-follow.m4, longlong.m4:
+ * ls-mntd-fs.m4, lstat.m4, makepath.m4, mbrtowc.m4, mbswidth.m4:
+ * memchr.m4, memcmp.m4, mkstemp.m4, mountlist.m4, nanosleep.m4:
+ * path-concat.m4, perl.m4, prereq.m4, putenv.m4, quotearg.m4:
+ * regex.m4, stat.m4, stdint_h.m4, strftime.m4, strtoimax.m4:
+ * strtoll.m4, strtoull.m4, strtoumax.m4, timespec.m4, uintmax_t.m4:
+ * ulonglong.m4, unlink-busy.m4, unlocked-io.m4, uptime.m4, utimbuf.m4:
+ * utime.m4, utimens.m4, utimes-null.m4, vasnprintf.m4, xstrtoimax.m4:
+ * xstrtol.m4, xstrtoumax.m4: Change jm_ to gl_ in AC_DEFINE'd names.
+
+2004-03-27 Paul Eggert <eggert@twinsun.com>
+
+ * utimecmp.m4: New file.
+ * prereq.m4 (jm_PREREQ): Require gl_UTIMECMP.
+
+2004-04-07 Paul Eggert <eggert@twinsun.com>
+
+ * jm-macros.m4 (jm_MACROS): Check for fdatasync within
+ -lrt and -lposix4, so that it can be used in Solaris 2.5.1 and later.
+
+2004-03-30 Paul Eggert <eggert@twinsun.com>
+
+ * c-stack.m4, getline.m4, getndelim2.m4, mbswidth.m4, po.m4,
+ strdup.m4, xsize.m4: Sync from gnulib.
+
+ * allocsa.m4, cloexec.m4, eealloc.m4, inttostr.m4, mbstate_t.m4:
+ New files, from gnulib.
+
+ * prereq.m4 (jm_PREREQ): Add gl_ALLOCSA, gl_CLOEXEC, gl_INTTOSTR.
+
+2004-03-31 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4: Require AC_FUNC_MALLOC, not jm_FUNC_MALLOC.
+ Require AC_FUNC_REALLOC, not jm_FUNC_REALLOC.
+ * xalloc.m4: Likewise.
+
+ * realloc.m4: Remove file, since now it does no more than
+ AC_REQUIRE([AC_FUNC_REALLOC]), and that can be done via
+ the `configure.ac' section of module/realloc.
+ * malloc.m4: Likewise, but for AC_FUNC_MALLOC.
+
+2004-02-29 Paul Eggert <eggert@twinsun.com>
+
+ * clock_time.m4 (gl_CLOCK_TIME): Require AC_GNU_SOURCE.
+ * getdate.m4 (gl_GETDATE): Remove time-related stuff.
+ Require AM_STDBOOL_H and gl_TIMESPEC instead.
+ Require gl_CLOCK_TIME.
+
+2004-03-07 Paul Eggert <eggert@twinsun.com>
+
+ * Makefile.am.in (Makefile.am):
+ Don't use $<, as it doesn't work with Solaris make.
+
+2004-01-29 Jim Meyering <jim@meyering.net>
+
+ Avoid a configure-time warning about sys/ucred.h on OSF V4.0.
+ * ls-mntd-fs.m4: Test for sys/ucred.h separately, since
+ on some systems one must include <grp.h> before it.
+ Reported by Christian Krackowizer.
+
+2004-01-16 Jim Meyering <jim@meyering.net>
+
+ * onceonly.m4: Sync with version from gettext-0.13.1.
+
+2003-10-08 Paul Eggert <eggert@twinsun.com>
+
+ Merge from gnulib.
+
+ * getpass.m4 (gl_PREREQ_GETPASS): Check for stdio_ext.h.
+
+2003-08-26 Bruno Haible <bruno@clisp.org>
+
+ Merge from gnulib.
+
+ * fnmatch.m4 (_AC_LIBOBJ_FNMATCH): Remove AC_DEFINE of fnmatch here.
+ This avoids havoc on compilers for which '#define fnmatch rpl_fnmatch'
+ followed by '#define fnmatch fnmatch_posix' gives an error.
+
+2004-01-14 Paul Eggert <eggert@twinsun.com>
+
+ * posixv.m4 (gl_POSIXVER): Require gl_DEFAULT_POSIX2_VERSION.
+
+2004-01-13 Jim Meyering <jim@meyering.net>
+
+ * gettext.m4, lib-ld.m4, lib-prefix.m4, nls.m4, po.m4:
+ Update from gettext-0.13.1.
+ * intmax.m4, isc-posix.m4, printf-posix.m4, size_max.m4, xsize.m4:
+ New files. From gettext-0.13.1.
+
+2004-01-11 Paul Eggert <eggert@twinsun.com>
+
+ * posixver.m4 (gl_DEFAULT_POSIX2_VERSION): Move
+ the documentation from 'configure' into 'config.hin',
+ so that 'configure --help' isn't burdened by it and
+ we don't have to worry about its formatting there.
+ Reword the documentation so that it's more succinct
+ and can be run together into a single paragraph.
+
+2004-01-12 Jim Meyering <jim@meyering.net>
+
+ * posixver.m4 (gl_DEFAULT_POSIX2_VERSION): New macro.
+
+2003-12-20 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Don't require UTILS_SYS_OPEN_MAX.
+
+ * open-max.m4 (UTILS_SYS_OPEN_MAX): Remove file. No longer used.
+
+ * lib-check.m4 (jm_LIB_CHECK): Do not set LIB_CRYPT to the
+ value, $ac_cv_search_crypt, if it's "none required".
+
+2003-12-19 Jim Meyering <jim@meyering.net>
+
+ * clock_time.m4 (gl_CLOCK_TIME): Don't set LIB_CLOCK_GETTIME
+ if no library is required.
+
+2003-12-18 Jim Meyering <jim@meyering.net>
+
+ * search-libs.m4 (AC_SEARCH_LIBS): Remove file/macro, now that
+ this replacement is no longer needed. Besides, this macro has
+ no effect with autoconf-2.58, since `undefine' in package-supplied
+ .m4 files is no longer honored. Reported by Andreas Schwab.
+
+ Remove now-unnecessary (and unused) files. They also used `undefine'.
+ * isc-posix.m4 (AC_ISC_POSIX): Remove file.
+ * getloadavg.m4 (gl_FUNC_GETLOADAVG): Remove file.
+ * prereq.m4 (jm_PREREQ): Require AC_FUNC_GETLOADAVG,
+ not gl_FUNC_GETLOADAVG.
+
+2003-11-08 Jim Meyering <jim@meyering.net>
+
+ * inttypes.m4: Sync from gnulib (this file was previously empty,
+ to work around some sort of problem).
+
+2003-11-08 Alexandre Duret-Lutz <adl@gnu.org>
+
+ * nanosleep.m4 (jm_FUNC_NANOSLEEP): Do not set LIB_NANOSLEEP to the
+ value, $ac_cv_search_nanosleep, if it's "none required".
+
+2003-11-05 Paul Eggert <eggert@twinsun.com>
+
+ * jm-macros.m4 (jm_CHECK_ALL_TYPES): Check for uintptr_t.
+
+2003-11-05 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_MACROS): Require gl_FUNC_FREE.
+ * free.m4: New file, from gnulib.
+
+ * exitfail.m4, host-os.m4, strndup.m4: Update from gnulib.
+
+ * jm-macros.m4 (jm_MACROS): Require autoconf-2.58.
+ (AC_LANG_SOURCE): Remove definition, now that we require autoconf-2.58.
+
+2003-10-13 Paul Eggert <eggert@twinsun.com>
+
+ * xalloc.m4: Import latest version from gnulib.
+
+2003-10-06 Jim Meyering <jim@meyering.net>
+
+ * ftw.m4: Remove now-unused file.
+
+2003-10-05 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_MACROS): Don't require AC_FUNC_FTW.
+
+2003-09-17 Paul Eggert <eggert@twinsun.com>
+
+ Update from gnulib.
+ * extensions.m4 (gl_USE_SYSTEM_EXTENSIONS): Call AC_BEFORE first,
+ to avoid spurious warnings like "AC_RUN_IFELSE was called before
+ gl_USE_SYSTEM_EXTENSIONS" from autoreconf.
+
+2003-09-12 Paul Eggert <eggert@twinsun.com>
+
+ More patches to assume C89 or better.
+
+ * mkstemp.m4 (jm_PREREQ_TEMPNAME): Do not require standard C headers.
+ * strdup.m4 (gl_PREREQ_STRDUP): Likewise.
+ * userspec.m4 (gl_USERSPEC): Likewise.
+ * xalloc.m4 (gl_PREREQ_XMALLOC): Likewise.
+ * xstrtod.m4 (gl_XSTRTOD): Likewise.
+ * xstrtol.m4 (gl_PREREQ_XSTRTOL): Likewise.
+ * strftime.m4 (_jm_STRFTIME_PREREQS): Don't check for limits.h,
+ memcpy, memset.
+ (jm_FUNC_GNU_STRFTIME): Don't require standard C headers.
+ * strtod.m4 (gl_FUNC_STRTOD): Do not check for float.h.
+ * strtoimax.m4 (gl_PREREQ_STRTOIMAX): Do not check for stdlib.h, strtol.
+ * strtol.m4 (gl_FUNC_STRTOL): Do not check for limits.h.
+ * userspec.m4 (gl_USERSPEC): Do not check for string.h.
+ * xstrtol.m4 (gl_PREREQ_XSTRTOL): Do not check for string.h, strtol,
+ strtoul.
+
+2003-09-12 Paul Eggert <eggert@twinsun.com>
+
+ * error.m4 (gl_ERROR): Don't check for vprintf.
+ Require AC_FUNC_STRERROR_R rather than invoking it.
+
+2003-09-12 Paul Eggert <eggert@twinsun.com>
+
+ * check-decl.m4 (jm_CHECK_DECLS): Include <string.h>, <stdlib.h>
+ unconditionally.
+ * closeout.m4 (gl_CLOSEOUT): Don't check for stdlib.h.
+ * gettimeofday.m4 (AC_FUNC_GETTIMEOFDAY_CLOBBER):
+ Include <string.h>, <stdlib.h> unconditionally.
+ * lstat.m4 (gl_PREREQ_LSTAT): Don't check for stdlib.h, free.
+ * readdir.m4 (GL_FUNC_READDIR): Don't check for string.h.
+ * readutmp.m4 (gl_PREREQ_READUTMP): Don't check for standard C headers
+ or for string.h.
+ * strtoumax.m4 (gl_PREREQ_STRTOUMAX): Don't check for stdlb.h
+ or strtoul.
+ * extensions.m4 (gl_USE_SYSTEM_EXTENSIONS): Require AC_AIX
+ and AC_MINIX, too, so that their extensions are available.
+
+ * prereq.m4 (jm_PREREQ_ADDEXT): Remove. All uses removed.
+ This macro has been superseded by gl_BACKUPFILE.
+
+2003-09-12 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ): Require gl_READTOKENS, gl_MD5, gl_MAKEPATH,
+ gl_LONG_OPTIONS, and gl_IDCACHE, gl_GETUGROUPS.
+ * readtokens.m4: New file, from gnulib
+ * md5.m4: Likewise.
+ * makepath.m4: Likewise.
+ * long-options.m4: Likewise.
+ * idcache.m4: Likewise.
+ * getugroups.m4: Likewise.
+
+2003-09-11 Paul Eggert <eggert@twinsun.com>
+
+ More patches to assume C89 or better.
+ * strndup.m4 (gl_PREREQ_STRNDUP): Remove STDC_HEADERS check.
+ * strnlen.m4 (gl_PREREQ_STRNLEN): Don't check for memory.h,
+ string.h, memchr, STDC_HEADERS.
+
+2003-09-10 Bruno Haible <bruno@clisp.org>
+
+ * strcspn.m4 (gl_PREREQ_STRCSPN): Remove <string.h> check.
+ * strpbrk.m4 (gl_PREREQ_STRPBRK): Remove <string.h> check.
+ * strstr.m4 (gl_PREREQ_STRSTR): Remove <string.h> check.
+ * unicodeio.m4 (gl_UNICODEIO): Remove <string.h> check.
+ * xreadlink.m4 (gl_XREADLINK): Remove <stdlib.h> check.
+ * yesno.m4 (gl_YESNO): Remove <stdlib.h> check.
+
+2003-09-09 Paul Eggert <eggert@twinsun.com>
+
+ * getcwd.m4 (AC_FUNC_GETCWD_NULL): Don't check for stdlib.h.
+ * getopt.m4 (gl_GETOPT): Don't check for string.h.
+ * getusershell.m4 (gl_PREREQ_GETUSERSHELL): Do not check for stdlib.h.
+ * group-member.m4 (gl_PREREQ_GROUP_MEMBER): Do not require standard C
+ headers.
+ * hard-locale.m4 (gl_HARD_LOCALE): Do not check for stdlib.h,
+ string.h.
+ * hash.m4 (gl_HASH): Do not check for stdlib.h, malloc, free.
+ * human.m4 (gl_HUMAN): Do not check for stdlib.h, string.h, getenv.
+ * sha.m4 (gl_SHA): Don't check for standard Cheaders, memcpy.
+ * memchr.m4 (jm_PREREQ_MEMCHR): Don't check for limits.h, stdlib.h.
+ * memcmp.m4 (gl_PREREQ_MEMCMP): Don't check for string.h.
+ * memcoll.m4 (gl_MEMCOLL): Likewise.
+ * memrchr.c (gl_PREREQ_MEMRCHR): Don't check for limits.h.
+ * mkdir-slash.m4 (gl_PREREQ_MKDIR): Don't check for stdlib.h,
+ string.h, free.
+ * mktime.m4 (gl_PREREQ_MKTIME): Don't check for standard C headers.
+ * modechange.m4 (gl_MODECHANGE): Don't check for standard C headers.
+ * mountlist.m4 (gl_PREREQ_MOUNTLIST_EXTRA): Don't check for standard
+ C headers, or for string.h.
+ * obstack.m4 (gl_OBSTACK): Don't check for stddefe.h, string.h.
+ (gl_PREREQ_OBSTACK): Don't check for stdlib.h.
+ * path-concat.m4 (gl_PATH_CONCAT): Don't check for standard C
+ headers, memory.h, stdlib.h, string.h, strings.h.
+ * posixtm.m4 (gl_POSIXTM): Don't check for stdlib.h, string.h.
+ * posixver.m4 (gl_POSIXVER): Don't check for getenv.
+ * putenv.m4 (gl_PREREQ_PUTENV): Don't check for string.h, memcpy,
+ strchr.
+ * regex.m4 (jm_PREREQ_REGEX): Do not check for limits.h, string.h.
+ * rename.m4 (gl_PREREQ_RENAME): Do not check for stdlib.h, string.h,
+ free.
+ * rpmatch.m4 (gl_PREREQ_RPMATCH): Don't check for standard C headers.
+ * save-cwd.m4 (gl_SAVE_CWD): Don't check for standard C headers.
+ * savedir.m4 (gl_SAVEDIR): Don't check for standard C headers.
+ * xgetcwd.m4 (gl_XGETCWD): Don't check for stdlib.h.
+
+2003-09-09 Derek Robert Price <derek@ximbiot.com>
+
+ * getndelim2.m4 (gl_PREREQ_GETNDELIM2): Assume stdlib.h per the
+ C89 spec.
+
+2003-09-08 Paul Eggert <eggert@twinsun.com>
+
+ Assume C89 or better; remove K&R cruft.
+ * alloca.m4 (gl_PREREQ_ALLOCA): Don't check for stdlib.h, string.h.
+ * backupfile.m4 (gl_BACKUPFILE): Don't check for stdlib.h,
+ string.h, getenv, malloc.
+ * dirname.m4 (gl_DIRNAME): Don't check for string.h or C standard
+ headers.
+ * canon-host.m4 (gl_CANON_HOST): Don't check for string.h, stdlib.h.
+ * error.m4 (jm_PREREQ_ERROR): Do not require STDC headers, and
+ do not check for strerror.
+ * exclude.m4: Do not check for stdlib.h, string.h, strings.h.
+ * exitfail.m4 (gl_EXITFAIL): Do not check for stdlib.h.
+ * fnmatch.m4 (gl_PREREQ_FNMATCH_EXTRA): Remove. All uses removed.
+ * getdate.m4 (gl_GETDATE): Don't check for stdlib.h or string.h.
+
+2003-08-27 Jim Meyering <jim@meyering.net>
+
+ * mkstemp.m4: Require that the system mkstemp be able to create
+ 70 temporary files, not just 30. Tru64 V4.0F's mkstemp function
+ would fail after 32. Reported by Danny Levinson. Details here:
+ http://mail.gnu.org/archive/html/bug-coreutils/2003-08/msg00124.html
+
+2003-08-19 Jim Meyering <jim@meyering.net>
+
+ * lib-ld.m4: Revert yesterday's change, per Bruno's request here:
+ http://mail.gnu.org/archive/html/bug-gnulib/2003-08/msg00155.html
+
+2003-08-18 Paul Eggert <eggert@twinsun.com>
+
+ * same.m4 (gl_SAME): Do not check for stdlib.h or string.h or free.
+ Check for pathconf.
+
+2003-08-18 Jim Meyering <jim@meyering.net>
+
+ * getloadavg.m4: Use [\t ], not [ \t] (where \t is a literal TAB).
+ * lib-ld.m4: Likewise.
+ * po.m4: Likewise.
+
+2003-08-18 Paul Eggert <eggert@twinsun.com>
+ and Jim Meyering <jim@meyering.net>
+
+ It turns out that we need AM_NLS and AM_PO_SUBDIRS after all;
+ otherwise po/POTFILES and po/Makefile aren't built by 'configure'.
+ I'm not sure why I didn't catch this earlier; most likely some
+ leftover build files. Sorry about that.
+ * gettextext.m4 (AM_NLS, AM_PO_SUBDIRS): Remove definitions.
+ * nls.m4, po.m4: New files, taken from gnulib / gettext.
+
+2003-08-16 Paul Eggert <eggert@twinsun.com>
+
+ Sync with gnulib.
+
+ * gettextext.m4: New file.
+
+ * atexit.m4, backupfile.m4, canon-host.m4, clock_time.m4,
+ closeout.m4, dirname.m4, dup2.m4, euidaccess.m4, exclude.m4,
+ exitfail.m4, file-type.m4, fileblocks.m4, filemode.m4, getdate.m4,
+ gethostname.m4, getloadavg.m4, getopt.m4, getpagesize.m4,
+ getpass.m4, getusershell.m4, hard-locale.m4, hash.m4, malloc.m4,
+ memchr.m4, memcpy.m4, memmove.m4, memrchr.m4, memset.m4,
+ modechange.m4, mountlist.m4, obstack.m4, path-concat.m4,
+ pathmax.m4, physmem.m4, posixtm.m4, posixver.m4, quote.m4,
+ quotearg.m4, readlink.m4, readutmp.m4, realloc.m4, rmdir.m4,
+ rpmatch.m4, safe-read.m4, safe-write.m4, same.m4, save-cwd.m4,
+ savedir.m4, settime.m4, sha.m4, sig2str.m4, stdio-safer.m4,
+ stpcpy.m4, strcase.m4, strcspn.m4, strdup.m4, strndup.m4,
+ strnlen.m4, strpbrk.m4, strstr.m4, strtod.m4, strtoimax.m4,
+ strtol.m4, strtoll.m4, strtoul.m4, strtoull.m4, strtoumax.m4,
+ strverscmp.m4, ulonglong.m4, unicodeio.m4, unistd-safer.m4,
+ userspec.m4, xalloc.m4, xgetcwd.m4, xreadlink.m4, xstrtod.m4,
+ xstrtol.m4, yesno.m4: New files, from gnulib.
+
+ * acl.m4, check-decl.m4, chown.m4, c-stack.m4, d-ino.m4,
+ d-type.m4, fileblocks.m4, fsusage.m4, ftruncate.m4, getcwd.m4,
+ getgroups.m4, getline.m4, getndelim2.m4, gettext.m4,
+ gettimeofday.m4, group-member.m4, host-os.m4, iconv.m4,
+ intmax_t.m4, inttypes-pri.m4, jm-macros.m4, lchown.m4, lib-ld.m4,
+ lib-link.m4, lib-prefix.m4, longdouble.m4, longlong.m4,
+ ls-mntd-fs.m4, lstat.m4, mbrtowc.m4, mbswidth.m4, memcmp.m4,
+ mkdir-slash.m4, mkstemp.m4, nanosleep.m4, onceonly.m4, prereq.m4,
+ progtest.m4, putenv.m4, readdir.m4, rename.m4, stat.m4, tzset.m4,
+ utimbuf.m4, utime.m4, vasnprintf.m4, xstrtoimax.m4, xstrtoumax.m4:
+ Sync with gnulib.
+
+2003-08-15 Jim Meyering <jim@meyering.net>
+
+ * utimes.m4 (gl_FUNC_UTIMES): Use `conftest.utimes' as the test
+ file name, not `x'. The former will be removed automatically.
+
+2003-08-13 Jim Meyering <jim@meyering.net>
+
+ * README: Remove file.
+ * Makefile.am.in: Simplify.
+ (Makefile.am): Remove README.
+
+2003-08-10 Jim Meyering <jim@meyering.net>
+
+ * utimes.m4 (gl_FUNC_UTIMES): New file.
+ * utimens.m4: Require gl_FUNC_UTIMES.
+ Don't check for utime or utimes.
+
+ * utimes.m4: Removed.
+ * utimes-null.m4: Renamed from utimes.m4.
+
+2003-08-06 Paul Eggert <eggert@twinsun.com>
+
+ * prereq.m4 (jm_PREREQ): Require gl_UTIMENS.
+ * utimens.m4: New file.
+
+2003-08-08 Paul Eggert <eggert@twinsun.com>
+
+ * vasnprintf.m4 (gl_PREREQ_VASNPRINTF):
+ Solaris 2.5.1 needs -lw to get the wcslen function.
+
+2003-08-08 Paul Eggert <eggert@twinsun.com>
+
+ Use new gnulib 'extensions' module.
+ * extensions.m4, unlocked-io.m4: New files, from gnulib.
+ * gnu-source.m4, jm-glibc-io.m4: Remove.
+ * timespec.m4: Merge from gnulib.
+
+2003-08-08 Paul Eggert <eggert@twinsun.com>
+
+ * jm-macros.m4 (jm_MACROS): Replace jm_INCLUDED_REGEX([lib/regex.c])
+ with gl_REGEX.
+ Replace jm_FUNC_MKTIME with gl_FUNC_MKTIME.
+ Remove redundant AC_FUNC_FNMATCH_GNU, jm_FUNC_MKTIME.
+ Remove AC_FUNC_VPRINTF.
+ Add gl_ERROR.
+
+2003-08-05 Paul Eggert <eggert@twinsun.com>
+
+ * jm-macros.m4 (jm_MACROS): Use gl_GETNDELIM2 rather than
+ checking for getdelim.
+ (jm_CHECK_ALL_TYPES): Use gt_TYPE_SSIZE_T for ssize_t rather
+ than rolling our own.
+ Merge getline from gnulib.
+ * getline.m4: Merge from gnulib.
+ * getndelim2.m4, ssize_t.m4: New files, from gnulib.
+
+2003-08-04 Paul Eggert <eggert@twinsun.com>
+
+ * regex.m4: Merge with gnulib.
+ (gl_REGEX): New macro.
+ (jm_INCLUDED_REGEX): Don't assume Latin-1 encoding of source code.
+ * restrict.m4: Merge with gnulib.
+ (gl_C_RESTRICT): Renamed from ACX_C_RESTRICT. All uses changed.
+ Rename cache vars to gl_cv_*. Incorporate latest Autoconf CVS tricks.
+
+2003-08-05 Paul Eggert <eggert@twinsun.com>
+
+ * gnu-source.m4: New file, taken from gnulib, with support
+ added for __EXTENSIONS__ a la Solaris.
+ * jm-macros.m4 (jm_CHECK_ALL_TYPES): Call gl_TIMESPEC rather
+ than jm_CHECK_TYPE_STRUCT_TIMESPEC.
+ * st_mtim.m4: Sync with gnulib (white space change only).
+ * timespec.m4: Sync with gnulib, except also require
+ AC_GNU_SOURCE.
+
+2003-08-05 Paul Eggert <eggert@twinsun.com>
+
+ * prereq.m4 (jm_PREREQ_PHYSMEM, jm_PREREQ_STAT): Ignore headers
+ that are present but cannot be compiled. This avoids spurious warnings
+ on Solaris 9 sparc with Forte Developer 7 C 5.4.
+
+2003-08-04 Paul Eggert <eggert@twinsun.com>
+
+ Merge fnmatch module from gnulib.
+ * fnmatch.m4: New file, from gnulib.
+ * jm-macros.m4 (jm_MACROS): Require gl_FUNC_FNMATCH_GNU
+ instead of AC_FUNC_ERROR_AT_LINE.
+
+2003-08-04 Paul Eggert <eggert@twinsun.com>
+
+ * error.m4: Sync from gnulib.
+
+2003-07-23 Jim Meyering <jim@meyering.net>
+
+ * lstat.m4, mkstemp.m4, regex.m4, stat.m4: Normalize naming of Sun
+ operating systems in comments, e.g., SunOS4 -> SunOS 4,
+ Solaris5.9 -> Solaris 9. From Paul Eggert.
+
+2003-07-18 Paul Eggert <eggert@twinsun.com>
+
+ * jm-macros.m4 (jm_MACROS): Invoke gl_MEMCOLL.
+ * memcoll.m4: New file, from gnulib.
+ Based on a patch from Andreas Schwab.
+
+2003-07-14 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am.in: Correct comment on first line.
+
+2003-07-12 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (OPTIONAL_BIN_ZCRIPTS): Remove unused variable.
+
+2003-07-10 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_MACROS): Require gl_FUNC_VASPRINTF and
+ gl_FUNC_VASNPRINTF.
+
+ * longdouble.m4, signed.m4, vasnprintf.m4, vasprintf.m4, wchar_t.m4:
+ * wint_t.m4: New files, in support of new asprintf use. From gnulib.
+
+ * stdint_h.m4: New file.
+ * inttypes_h.m4: New file.
+ * uintmax_t.m4: New file.
+ * intmax_t.m4: New file.
+ * inttypes.m4: Remove file. Use intmax_t.m4 and uintmax_t.m4
+ from gnulib, instead.
+
+2003-06-09 Jim Meyering <jim@meyering.net>
+
+ * tzset.m4 (gl_FUNC_TZSET_CLOBBER): Also define gmtime.
+ * gettimeofday.m4 (AC_FUNC_GETTIMEOFDAY_CLOBBER): Likewise.
+ Suggestion from Paul Eggert.
+
+2003-06-08 Jim Meyering <jim@meyering.net>
+
+ * tzset.m4 (gl_FUNC_TZSET_CLOBBER): New file/macro.
+ Used by strftime.m4.
+ * strftime.m4 (_jm_STRFTIME_PREREQS): Require gl_FUNC_TZSET_CLOBBER.
+
+2003-06-07 Jim Meyering <jim@meyering.net>
+
+ * strftime.m4: Update from gnulib.
+ * tm_gmtoff.m4: New file, used by strftime.m4.
+ * mktime.m4: New file. From gnulib.
+
+2003-06-06 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Require gl_FUNC_ALLOCA.
+ * alloca.m4: New file, from gnulib.
+
+ * stdbool.m4: Update from gnulib.
+
+2003-06-04 Paul Eggert <eggert@twinsun.com>
+
+ Merge human.c etc. from gnulib.
+ * human.m4: New file, from gnulib.
+ * prereq.m4 (jm_PREREQ): Use gl_HUMAN, not jm_PREREQ_HUMAN.
+ (jm_prereq_HUMAN): Remove.
+
+2003-06-02 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_MACROS): Require AM_STDBOOL_H.
+
+2003-05-26 Jim Meyering <jim@meyering.net>
+
+ * dirfd.m4 (UTILS_FUNC_DIRFD): Merge in change from gnulib,
+ fixing an M4 quoting bug.
+
+ * lib-ld.m4 (AC_LIB_PROG_LD_GNU): Use TAB-SP, not SP-TAB
+ when setting IFS.
+ * progtest.m4 (AM_PATH_PROG_WITH_TEST): Likewise.
+
+2003-05-06 Jim Meyering <jim@meyering.net>
+
+ * getcwd-path-max.m4 (GL_FUNC_GETCWD_PATH_MAX): Check for the
+ declaration of getcwd *before* checking for the getcwd kernel bug.
+ Otherwise, configure-time `checking ...' messages would be intermixed.
+
+2003-05-02 Jim Meyering <jim@meyering.net>
+
+ * readdir.m4 (GL_FUNC_READDIR): Revive dead file. Change name to
+ have GL_ (not jm_) prefix. Adjust cache variables similarly.
+ Create 500 rather than just 300 files, to exercise bug on
+ Darwin6.5, too.
+ * jm-macros.m4 (jm_MACROS): Require GL_FUNC_READDIR.
+
+2003-04-25 Jim Meyering <jim@meyering.net>
+
+ * getcwd-path-max.m4 (GL_FUNC_GETCWD_PATH_MAX): If PATH_MAX
+ is not defined, don't run the test, and don't use the wrapper.
+ Otherwise, on the Hurd, it would take a long time to create
+ and remove a hierarchy about 4000 levels deep.
+ Based on a patch from Robert Millan.
+
+2003-04-22 Jim Meyering <jim@meyering.net>
+
+ Aesthetics.
+ * gettext.m4: Change an occurrence of [ \t] to [\t ].
+
+2003-04-07 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ_STAT): Add prerequisites and #includes
+ for Ultrix 4.4.
+
+2003-04-02 Jim Meyering <jim@meyering.net>
+
+ * perl.m4 (jm_PERL): Use $am_missing_run, not undefined $missing_dir.
+
+2003-03-19 Jim Meyering <jim@meyering.net>
+
+ * ftw.m4 (AC_FUNC_FTW): Require AC_HEADER_STAT.
+
+2003-03-17 Richard Dawe <rich@phekda.freeserve.co.uk>
+
+ * jm-macros.m4 (jm_MACROS): Include $(EXEEXT) in DF_PROG's program
+ name, since automake only adds $(EXEEXT) to programs in its *_PROGRAMS.
+ Arrange to compile the corresponding stub function if fchdir is missing.
+
+2003-03-18 Jim Meyering <jim@meyering.net>
+
+ * ls-mntd-fs.m4 (jm_LIST_MOUNTED_FILESYSTEMS): Move the MOUNTED_VMOUNT
+ test to precede the MOUNTED_GETMNTENT1 tests, since otherwise, AIX 5.1
+ systems would end up using the latter. MOUNTED_GETMNTENT1 support
+ is inadequate on such systems: 1) detecting whether a file system
+ is remote doesn't work 2) the MOUNTED_VMOUNT code reports the
+ HOSTNAME:/MOUNT_POINT, while the MOUNTED_GETMNTENT1 code reports
+ merely /MOUNT_POINT. Reported by Mike Jetzer.
+
+2003-03-17 Jim Meyering <jim@meyering.net>
+
+ * dirfd.m4 (UTILS_FUNC_DIRFD): Test the cache variable, not one
+ that is guaranteed to be `no'. Use `no_such_member' to indicate
+ that condition, rather than `-1' which is slightly misleading.
+ Change the name of the cache variable to have the gl_ prefix.
+ Prompted by a patch from Richard Dawe for DJGPP.
+
+2003-03-14 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ): Also forbid the gl_[A-Z] prefix.
+ Don't require jm_PREREQ_C_STACK.
+
+2003-03-13 Paul Eggert <eggert@twinsun.com>
+
+ [from gnulib]
+ * onceonly.m4 (m4_quote): New macro.
+ (AC_CHECK_HEADERS_ONCE, AC_CHECK_FUNCS_ONCE, AC_CHECK_DECLS_ONCE):
+ Quote AC_FOREACH variable-expansions properly.
+
+2003-03-13 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_MACROS): Arrange to compile the corresponding stub
+ function if any of the following is missing: fchown, lstat, readlink.
+ From Richard Dawe.
+
+2003-03-07 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (AC_LANG_SOURCE(C)): New macro, undefine, then define
+ using the latest version from cvs. This avoids problems with #line
+ directives using a vendor (Sun) compiler.
+
+ * jm-macros.m4: Don't require AC_SYS_MMAP_STACK.
+ * mmap-stack.m4 (AC_SYS_MMAP_STACK): Remove file.
+
+2003-03-06 Jim Meyering <jim@meyering.net>
+
+ * getcwd-path-max.m4 (GL_FUNC_GETCWD_PATH_MAX): Check for
+ declaration of getcwd.
+
+2003-03-04 Jim Meyering <jim@meyering.net>
+
+ * getcwd-path-max.m4 (GL_FUNC_GETCWD_PATH_MAX): New macro.
+ * jm-macros.m4: Require GL_FUNC_GETCWD_PATH_MAX.
+
+ `df /some/mount-point' no longer hangs when an unrelated hard-mount
+ is unavailable
+ * fsusage.m4 [__GLIBC__]: GNU libc's statvfs stats each mount point in
+ /proc/mounts until it finds one with matching device number. This is
+ unnecessary when the FILE argument *is* a mount point. No stat call
+ is necessary in that case. So, disable the statvfs-testing code on
+ systems with GNU libc. Reported by Andrei Gaponenko via Tim Waugh
+ as RedHat bug# 84846.
+
+2003-02-27 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ_PHYSMEM): Also check for `table' function.
+ Reported by Kaveh Ghazi.
+
+ * prereq.m4 (gl_SYS__SYSTEM_CONFIGURATION): New function.
+ (jm_PREREQ_PHYSMEM): Check for new headers and functions.
+ Use gl_SYS__SYSTEM_CONFIGURATION.
+ With suggestions from Kaveh Ghazi.
+
+2003-02-19 Jim Meyering <jim@meyering.net>
+
+ * c-stack.m4 (AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC): Limit stack size
+ to 1MB, so as not to render systems with no stack size limit (e.g.,
+ linux-2.2.x) unusable. Suggestion and code from Bruno Haible.
+
+2003-02-17 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ_PHYSMEM): Undo last change, since
+ Kaveh Ghazi found a better way to get the required information.
+ Add check for sys/sysmp.h.
+
+2003-02-15 Jim Meyering <jim@meyering.net>
+
+ * mmap-stack.m4: New file.
+
+ * jm-macros.m4: Require AC_SYS_MMAP_STACK.
+
+ Add Irix6 support to physmem.c.
+ * prereq.m4 (jm_PREREQ_PHYSMEM): Also check for sys/sysget.h
+ and sys/sysinfo.h.
+ Also check for sysget.
+ Reported by Kaveh Ghazi.
+
+2003-02-12 Jim Meyering <jim@meyering.net>
+
+ * restrict.m4 (ACX_C_RESTRICT): Remove #ifndef -- so now this
+ macro also checks for support when using a C++ compiler.
+ Also, remove the test for SGI's __restrict.
+ Suggested by Steven G. Johnson.
+
+ * regex.m4 (jm_PREREQ_REGEX): Require ACX_C_RESTRICT.
+
+ * restrict.m4 (ACX_C_RESTRICT): Minor syntactic changes:
+ Split long lines, use AC_COMPILE_IFELSE, indent, use `case'
+ instead of nested `if's, remove unnecessary quotes.
+
+ * restrict.m4 (ACX_C_RESTRICT): New macro.
+ Copied directly from the URL in the comments.
+ By Steven G. Johnson.
+
+2003-02-09 Jim Meyering <jim@meyering.net>
+
+ * check-decl.m4 (jm_CHECK_DECLS): Add euidaccess.
+
+2003-02-03 Jim Meyering <jim@meyering.net>
+
+ * c-stack.m4: Include <unistd.h>. On some systems,
+ it is required for the definition of _SC_PAGESIZE.
+
+2003-02-02 Jim Meyering <jim@meyering.net>
+
+ * onceonly.m4: New file. From gnulib.
+
+ * regex.m4 (jm_PREREQ_REGEX): New function, from gnulib.
+ (jm_INCLUDED_REGEX): Use it.
+ * prereq.m4 (jm_PREREQ_REGEX): Remove.
+
+2003-01-31 Jim Meyering <jim@meyering.net>
+
+ * open-max.m4 (UTILS_SYS_OPEN_MAX): New file/macro.
+ * jm-macros.m4 (jm_MACROS): Require UTILS_SYS_OPEN_MAX.
+
+2003-01-29 Jim Meyering <jim@meyering.net>
+
+ * regex.m4: Detect broken re_search in e.g. glibc-2.2.93.
+
+2003-01-23 Jim Meyering <jim@meyering.net>
+
+ * dirfd.m4 (UTILS_FUNC_DIRFD): Correct typo: s/-1/no/ that kept this
+ from working on systems without dirfd (at least Irix and OSF1/Tru64).
+
+ Merge in change by Bruno Haible from gnulib.
+ * dirfd.m4 (UTILS_FUNC_DIRFD): Invoke some AC_EGREP_CPP requirements.
+
+2003-01-16 Jim Meyering <jim@meyering.net>
+
+ * regex.m4: The `regex' struct is both input and output.
+ Initialize it before each use. Patch by Tim Waugh.
+
+2003-01-15 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Require AC_FUNC_FTW.
+
+2003-01-12 Jim Meyering <jim@meyering.net>
+
+ * ftw.m4: New file.
+
+2003-01-11 Jim Meyering <jim@meyering.net>
+
+ * canonicalize.m4 (AC_FUNC_CANONICALIZE_FILE_NAME): New file and macro.
+ * jm-macros.m4: Require AC_FUNC_CANONICALIZE_FILE_NAME.
+ (jm_MACROS): No longer check for resolvepath or canonicalize_file_name.
+
+2002-12-15 Jim Meyering <jim@meyering.net>
+
+ * jm-glibc-io.m4n: Remove now-unused file.
+ * Makefile.am.in (Makefile.am): Remove jm-glibc-io.m4
+ and jm-glibc-io.m4n.
+
+2002-12-11 Jim Meyering <jim@meyering.net>
+
+ * jm-glibc-io.m4: Maintain this file manually rather than generating it.
+ Generating it caused too much trouble. From gnulib.
+
+2002-11-19 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Require Autoconf-2.56.
+
+2002-09-30 Akim Demaille <akim@epita.fr>
+
+ * prereq.m4: Use AC_REQUIRE everywhere it is possible.
+ (jm_PREREQ_CANON_HOST): Remove duplicates.
+
+2002-11-10 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_MACROS): Add AC_REPLACE_FUNCS(raise).
+
+2002-10-30 Paul Eggert <eggert@twinsun.com>
+
+ * getgroups.m4 (jm_FUNC_GETGROUPS):
+ Fix typo: cv_func_getgroups_works -> ac_cv_func_getgroups_works.
+
+2002-10-07 Paul Eggert <eggert@twinsun.com>
+
+ * prereq.m4 (jm_PREREQ_HUMAN): Check for locale.h, localeconv,
+ AC_HEADER_STDBOOL. No need to check for limits.h since it's in
+ freestanding C89. No need to check for stdlib.h or string.h since
+ autoconf does this now.
+
+2002-10-12 Paul Eggert <eggert@twionsun.com>
+
+ * jm-macros.m4 (jm_CHECK_ALL_HEADERS): Remove fenv.h.
+
+2002-09-29 Jim Meyering <jim@meyering.net>
+
+ * gettext.m4 (AM_INTL_SUBDIR): Don't require gt_HEADER_INTTYPES_H.
+ It's not necessary with autoconf-2.54.
+
+2002-09-28 Jim Meyering <jim@meyering.net>
+
+ * getgroups.m4 (jm_FUNC_GETGROUPS): Rewrite to use AC_FUNC_GETGROUPS
+ and (if needed) to call AC_LIBOBJ and to set GETGROUPS_LIB.
+ * jm-macros.m4 (jm_MACROS): Don't set GETGROUPS_LIB here; now it's
+ done via getgroups.m4's wrapper function.
+
+ * strerror_r.m4: Remove file -- now it's part of autoconf-2.54.
+ Reported by Akim Demaille.
+
+2002-09-25 Jim Meyering <jim@meyering.net>
+
+ * gettext.m4: Upgrade to gettext-0.11.5.
+
+2002-09-07 Bruno Haible <bruno@clisp.org>
+
+ * host-os.m4 (UTILS_HOST_OS): Add a case for freebsd*-gnu*.
+
+2002-09-17 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_MACROS): Require gt_INTTYPES_PRI.
+ * inttypes-pri.m4 (gt_INTTYPES_PRI): New file, mostly from gettext.
+
+2002-09-16 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4: Forbid symbols matching ^jm_[A-Z].
+ (jm_PREREQ_QUOTEARG): Add jm_FUNC_MEMCMP.
+ From Akim Demaille.
+
+ * error.m4 (jm_PREREQ_ERROR): Check for libintl.h.
+ Reported by Akim Demaille.
+
+2002-09-13 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_MACROS): Require autoconf-2.54.
+
+2002-09-09 Jim Meyering <jim@meyering.net>
+
+ * getloadavg.m4: Remove file -- now it's part of autoconf-2.53c.
+ * jm-macros.m4: Use AC_CONFIG_LIBOBJ_DIR(lib) to tell the new
+ AC_FUNC_GETLOADAVG where to find getloadavg.c.
+
+2002-09-03 Jim Meyering <jim@meyering.net>
+
+ * gnu-source.m4: Remove file -- now it's part of autoconf-2.53c.
+ * mbstate_t.m4: Likewise.
+ * fnmatch.m4: Likewise.
+
+2002-08-05 Jim Meyering <jim@meyering.net>
+
+ * jm-winsz1.m4: Also change use of $am_cv_sys_posix_termios
+ to $ac_cv_sys_posix_termios. Reported by Andreas Schwab.
+
+2002-08-03 Jim Meyering <jim@meyering.net>
+
+ * jm-winsz1.m4: Require AC_SYS_POSIX_TERMIOS, not AM_SYS_POSIX_TERMIOS.
+ Reported by mkc@mathdogs.com.
+
+2002-08-01 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ_TEMPNAME): lib/tempname.c may use uintmax_t,
+ so require jm_AC_TYPE_UINTMAX_T. Patch by Joe Orton.
+
+2002-07-28 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Don't require jm_FUNC_READDIR.
+ * readdir.m4 (jm_FUNC_READDIR): Remove file/macro. No longer needed.
+
+2002-07-27 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ_READUTMP): Don't check just
+ `struct utmpx.ut_exit' and `struct utmp.ut_exit'. Instead, check
+ all combinations of utmp/utmpx and ut_termination/e_termination
+ and ut_exit/e_exit.
+
+2002-07-23 Jim Meyering <jim@meyering.net>
+
+ * c-bs-a.m4 (AC_C_BACKSLASH_A): Remove file, now that autoconf
+ provides this macro.
+
+2002-07-20 Jim Meyering <jim@meyering.net>
+
+ * intdiv0.m4: New file. From gettex-0.11.3.
+
+ * jm-macros.m4: Require autoconf-2.53b.
+ Use new macros AC_FUNC_MALLOC and AC_FUNC_REALLOC,
+ in place of jm_-prefixed ones. Thanks, Akim!
+ * malloc.m4: Remove file, now that autoconf provides this macro.
+ * realloc.m4: Likewise.
+
+2002-07-18 gettextize <bug-gnu-gettext@gnu.org>
+
+ * gettext.m4: Upgrade to gettext-0.11.3.
+ * iconv.m4: Upgrade to gettext-0.11.3.
+ * isc-posix.m4: Upgrade to gettext-0.11.3.
+ * lcmessage.m4: Upgrade to gettext-0.11.3.
+ * lib-link.m4: Upgrade to gettext-0.11.3.
+
+2002-07-17 Jim Meyering <jim@meyering.net>
+
+ * boottime.m4: New file. Extracted from sh-utils' configure.ac
+ and extended to work also with *BSD systems.
+
+2002-07-15 Jim Meyering <jim@meyering.net>
+
+ FreeBSD support for uname and uptime.
+ * jm-macros.m4 (jm_MACROS): Check for the sysctl function.
+ (jm_CHECK_ALL_HEADERS): Check for sys/sysctl.h.
+ Suggestion from Bruno Haible.
+
+2002-06-11 Paul Eggert <eggert@twinsun.com>
+
+ * fnmatch.m4 (_AC_LIBOBJ_FNMATCH): Check for btowc.
+
+2002-06-22 Jim Meyering <jim@meyering.net>
+
+ * c-stack.m4: New file, from diffutils-2.8.2.
+ * prereq.m4 (jm_PREREQ): Add jm_PREREQ_C_STACK.
+
+ * jm-macros.m4 (jm_CHECK_ALL_TYPES): Don't require AC__GNU_SOURCE,
+ now that configure.ac uses AC_GNU_SOURCE.
+ (jm_MACROS): Rename: jm_FUNC_FNMATCH to AC_FUNC_FNMATCH_GNU.
+ * prereq.m4 (jm_PREREQ_EXCLUDE): Likewise, wrt jm_FUNC_FNMATCH.
+
+ Update to latest tools. Suggestions from Paul Eggert.
+ * stdbool.m4: New file, from diffutils-2.8.2.
+ * gnu-source.m4: Update from diffutils-2.8.2.
+ * fnmatch.m4: Likewise.
+ * prereq.m4: Change each use of AC_CHECK_HEADERS(stdbool.h)
+ to AC_HEADER_STDBOOL
+
+2002-06-21 Jim Meyering <jim@meyering.net>
+
+ * c-bs-a.m4: Add comment, from diffutils-2.8.2.
+ * mbrtowc.m4: Likewise.
+
+ * mbstate_t.m4: Update from diffutils-2.8.2.
+ * mbswidth.m4: Reflect name change:
+ s/AC_MBSTATE_T/AC_TYPE_MBSTATE_T.
+ * prereq.m4 (jm_PREREQ_QUOTEARG): Likewise.
+
+ * lib-link.m4: Update from gettext-0.11.2.
+ * gettext.m4: Likewise.
+
+ * jm-macros.m4 (jm_CHECK_ALL_HEADERS): Check for hurd.h.
+ From Alfred M. Szmidt.
+
+2002-05-19 Paul Eggert <eggert@twinsun.com>
+
+ * jm-macros.m4 (jm_CHECK_ALL_TYPES): Check for st_author.
+
+2002-06-07 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ_STAT): Check for sys/param.h and sys/mount.h.
+ They're needed at least for NetBSD 1.5.2.
+ ($statxfs_includes): Include those same headers.
+ ($statxfs_includes): Include sys/vfs.h if available.
+ ($statxfs_includes): Likewise for sys/statvfs.h.
+ Check for the following members in both structs statfs and statvfs:
+ f_basetype, f_type, f_fsid.__val, f_namemax, f_namelen.
+
+2002-06-01 Jim Meyering <jim@meyering.net>
+
+ * d-type.m4 (jm_CHECK_TYPE_STRUCT_DIRENT_D_TYPE): Rename macro:
+ s/D_TYPE_IN_DIRENT/HAVE_STRUCT_DIRENT_D_TYPE/.
+
+2002-05-28 Jim Meyering <jim@meyering.net>
+
+ * readdir.m4 (jm_FUNC_READDIR): Undefine `mkdir', not `rmdir'.
+ Reported by Volker Borchert.
+
+2002-05-27 Jim Meyering <jim@meyering.net>
+
+ * gettimeofday.m4 (AC_FUNC_GETTIMEOFDAY_CLOBBER): Also replace
+ localtime.
+
+ * readdir.m4 (jm_FUNC_READDIR): Undefine `rmdir' so we don't try to
+ use the replacement function; it wouldn't resolve at link time.
+ Reported by Volker Borchert.
+
+2002-04-30 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ): Add jm_PREREQ_STAT.
+
+2002-04-29 Paul Eggert <eggert@twinsun.com>
+
+ * prereq.m4 (jm_PREREQ_HARD_LOCALE): Check for stdlib.h.
+ Do not check for alloca.h (no longer used) or stdbool.h (was never
+ used?). Add AM_C_PROTOTYPES since hard-locale.h uses it.
+
+2002-04-28 Paul Eggert <eggert@twinsun.com>
+
+ * prereq.m4 (jm_PREREQ_SIG2STR): Remove; all callers changed.
+
+2002-04-29 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_MACROS): Remove use of AC_FUNC_STRNLEN.
+ * prereq.m4: Add jm_PREREQ_STRNLEN.
+ Use AC_FUNC_STRNLEN here instead.
+
+ * jm-macros.m4: Don't AC_REQUIRE([AC_PROG_CC_STDC]).
+ With autoconf-2.53a, it's part of AC_PROG_CC.
+
+2002-04-28 Paul Eggert <eggert@twinsun.com>
+
+ * jm-macros.m4 (jm_MACROS): Add AC_REPLACE_FUNCS(sig2str).
+ * prereq.m4 (jm_PREREQ): Add jm_PREREQ_SIG2STR.
+
+2002-04-24 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ_HARD_LOCALE): New macro.
+ (jm_PREREQ): Use it.
+
+ * getloadavg.m4: Check for these headers: locale.h unistd.h
+ mach/mach.h fcntl.h.
+ Check for this function: setlocale.
+
+2002-04-16 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ_READUTMP): Also check for these members:
+ ut_pid, ut_id, ut_exit.
+
+2002-04-12 Jim Meyering <jim@meyering.net>
+
+ * ls-mntd-fs.m4 (checking for getmntinfo function...): Remove now-bogus
+ check for f_type in sys/mount.h. Instead, just test for the existence
+ of the getmntinfo function. Needed for Darwin 5.3.
+
+ * dirfd.m4 (UTILS_FUNC_DIRFD): Also detect when dirfd is a macro.
+ This is necessary at least on Darwin 5.3.
+
+ * jm-macros.m4: Don't AC_REPLACE(strnlen), now that we use
+ AC_FUNC_STRNLEN. Otherwise, we'd end up putting two copies of strnlen.o
+ in the library, and that makes some versions of ranlib object.
+
+2002-04-09 Jim Meyering <jim@meyering.net>
+
+ * malloc.m4: (jm_FUNC_MALLOC): Change the `checking ...' message
+ to be more precise. Rather than saying we're checking whether the
+ function `works', say what we're testing.
+ * realloc.m4 (jm_FUNC_REALLOC): Likewise.
+ Reported by Bruno Haible.
+
+2002-02-27 Paul Eggert <eggert@twinsun.com>
+
+ * jm-macros.m4 (jm_MACROS): Do not replace stime; no longer used.
+ Check for clock_settime.
+
+2002-02-25 Paul Eggert <eggert@twinsun.com>
+
+ * acl.m4: New file.
+ * jm-macros.m4 (jm_MACROS): Require AC_FUNC_ACL.
+ Do not check for acl or sys/acl.h, as AC_FUNC_ACL does that now.
+
+2002-02-16 gettextize <bug-gnu-gettext@gnu.org>
+
+ * codeset.m4: Upgrade to gettext-0.11.
+ * gettext.m4: Upgrade to gettext-0.11.
+ * glibc21.m4: Upgrade to gettext-0.11.
+ * iconv.m4: Upgrade to gettext-0.11.
+ * isc-posix.m4: Upgrade to gettext-0.11.
+ * lcmessage.m4: Upgrade to gettext-0.11.
+ * lib-ld.m4: New file, from gettext-0.11.
+ * lib-link.m4: New file, from gettext-0.11.
+ * lib-prefix.m4: New file, from gettext-0.11.
+ * progtest.m4: Upgrade to gettext-0.11.
+
+2002-02-15 Paul Eggert <eggert@twinsun.com>
+
+ * prereq.m4 (jm_PREREQ_POSIXVER): New macro.
+ (jm_PREREQ): Use it.
+
+2002-01-26 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_MACROS): Require autoconf-2.52g.
+ * strnlen.m4: Remove file, now that it's part of autoconf.
+
+2002-01-22 Paul Eggert <eggert@twinsun.com>
+
+ * jm-macros.m4 (jm_MACROS): Require AC_FUNC_FSEEKO.
+
+2002-01-19 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_MACROS): Use AC_FUNC_STRNLEN.
+ Remove useless quotes: DF_PROG="df".
+ * strnlen.m4: New file.
+
+2001-12-14 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_MACROS): Check for iswspace.
+ Suggestion from Bruno Haible.
+
+2001-11-20 Jim Meyering <jim@meyering.net>
+
+ * mkstemp.m4 (UTILS_FUNC_MKSTEMP): Update comment to reflect that
+ SunOS 4.1.4 and Solaris 2.5.1 lose, too.
+
+2001-11-19 Jim Meyering <jim@meyering.net>
+
+ * mkstemp.m4 (UTILS_FUNC_MKSTEMP): Don't bother with a temporary
+ directory. Use "conftestXXXXXX" as the template.
+ Suggestion from Paul Eggert.
+
+ * mkstemp.m4 (UTILS_FUNC_MKSTEMP): Close each descriptor immediately,
+ so the test doesn't mistakenly hit the max-open-files limit.
+
+2001-11-18 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ_TEMPNAME): Check for declaration of getenv.
+
+2001-11-17 Jim Meyering <jim@meyering.net>
+
+ * mkstemp.m4 (UTILS_FUNC_MKSTEMP): New file and macro.
+ Prompted by a report from Bob Proulx.
+
+ * jm-macros.m4 (jm_MACROS): Don't test for mkstemp here.
+ Instead, require UTILS_FUNC_MKSTEMP.
+
+2001-11-11 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_MACROS): Remove code to set POW_LIBM.
+ Now, that's done as part of AC_FUNC_STRTOD.
+
+2001-10-22 Paul Eggert <eggert@twinsun.com>
+
+ * jm-winsz1.m4 (jm_WINSIZE_IN_PTEM): Do not define
+ WINSIZE_IN_PTEM if <termios.h> defines struct winsize.
+
+2001-11-10 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ_PHYSMEM): New function.
+ (jm_PREREQ): Use it.
+
+2001-11-09 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Require autoconf-2.52f.
+ (AC_FUNC_ERROR_AT_LINE, AC_FUNC_OBSTACK, AC_FUNC_STRTOD):
+ Use these AC_-prefixed names, not the AM_-prefixed ones.
+
+ * afs.m4 (jm_AFS): Quote the body. Patch by Akim Demaille.
+
+2001-11-04 Jim Meyering <jim@meyering.net>
+
+ * fpending.m4: Remove unused cruft that saved, set, and restored $DEFS.
+
+2001-11-03 Jim Meyering <jim@meyering.net>
+
+ * jm-glibc-io.m4n (jm_FUNC_GLIBC_UNLOCKED_IO): Quote first arg
+ of AC_DEFUN.
+
+ * dirfd.m4 (UTILS_FUNC_DIRFD): Rework so dirfd.c doesn't have to
+ know the name of the variable in the macro definition.
+
+2001-11-01 Jim Meyering <jim@meyering.net>
+
+ * dirfd.m4 (UTILS_FUNC_DIRFD): New macro.
+ * jm-macros.m4 (jm_MACROS): Require UTILS_FUNC_DIRFD.
+
+2001-10-20 Paul Eggert <eggert@twinsun.com>
+
+ * error.m4 (jm_PREREQ_ERROR):
+ Do not invoke AC_CHECK_FUNCS with strerror_r, as
+ AC_FUNC_STRERROR_R does that.
+ Check for strerror declaration.
+
+ * strerror_r.m4: Add copyright notice, as nontrivial m4 files
+ are supposed to have them these days.
+ (AC_FUNC_STRERROR_R): Always do char* test, so that it gets cached.
+ Merge changes from latest Autoconf CVS.
+ Rename ac_cv_func_strerror_r_works to ac_cv_func_strerror_r_char_p,
+ and rename HAVE_WORKING_STRERROR_R to STRERROR_R_CHAR_P, since
+ POSIX decided to standardize on the int flavor of strerror_r.
+
+2001-09-30 Jim Meyering <jim@meyering.net>
+
+ * ls-mntd-fs.m4 (jm_LIST_MOUNTED_FILESYSTEMS): See if
+ `struct fsstat' has the `f_fstypename' member.
+ Use that to define FS_TYPE, which is now used to make
+ the getfsstat link test tighter.
+
+2001-09-29 Jim Meyering <jim@meyering.net>
+
+ * ls-mntd-fs.m4 (jm_LIST_MOUNTED_FILESYSTEMS)
+ [one-argument getmntent function]): Include stdio.h before mntent.h.
+ SunOS 4.1.x needs it for the declaration of `FILE'.
+ Patch by Volker Borchert.
+
+ * ls-mntd-fs.m4 (jm_LIST_MOUNTED_FILESYSTEMS)
+ Check for these headers: sys/param.h sys/ucred.h sys/mount.h
+ sys/fs_types.h, and make the link-test for getfsstat guard #include
+ directives with appropriate #if HAVE_*_H tests so that we can
+ detect getfsstat on Apple Darwin1.3.7 systems.
+ Reported by Nelson Beebe.
+ Fix harmless typo in cache variable name: s/getsstat/getfsstat/.
+
+2001-09-28 Paul Eggert <eggert@twinsun.com>
+
+ Fix bug reported by Petter Reinholdtsen for HP-UX 10.20, which
+ #defines strtoimax. Also treat the other strto* functions
+ like strtoimax.
+
+ * xstrtoimax.m4 (jm_AC_PREREQ_XSTRTOIMAX):
+ Check for strtoul and strtoumax,
+ as those declarations are made even in the signed case.
+ * xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX):
+ Likewise, for strtol and strtoimax.
+
+2001-09-24 Jim Meyering <jim@meyering.net>
+
+ * gettext.m4: Use the version from gettext-0.10.40, not CVS.
+
+2001-09-23 Jim Meyering <jim@meyering.net>
+
+ * ls-mntd-fs.m4 (jm_LIST_MOUNTED_FILESYSTEMS): Add a compile-test
+ instead of the mere test for existence of mntent.h. The latter
+ would get a false-positive on AIX 3.4 systems.
+ In the outer getmntent if-block, don't die if neither of the getmntent
+ tests succeeds. Instead, just fall through and continue with the
+ remaining tests.
+
+2001-09-22 Jim Meyering <jim@meyering.net>
+
+ * gettext.m4: New file. From gettext.
+ * lcmessage.m4: Sync with gettext -- this changes only comments.
+ * progtest.m4: Likewise
+ * isc-posix.m4: Decrement serial number to sync with gettext.
+ * glibc21.m4: Likewise.
+
+ * libintl.m4: Remove. No longer used.
+
+2001-09-20 Jim Meyering <jim@meyering.net>
+
+ * xstrtoimax.m4 (jm_AC_PREREQ_XSTRTOIMAX): Check for declaration of
+ strtoimax.
+ * xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX): Check for declaration of
+ strtoumax.
+
+2001-09-17 Jim Meyering <jim@meyering.net>
+
+ * chown.m4, fstypename.m4, getgroups.m4, gettimeofday.m4,
+ * jm-mktime.m4, lstat.m4, malloc.m4, memcmp.m4, mkdir-slash.m4,
+ * nanosleep.m4, putenv.m4, readdir.m4, realloc.m4, rename.m4,
+ * st_dm_mode.m4, stat.m4, strerror_r.m4, timespec.m4, utimbuf.m4,
+ * utimes.m4: Use AC_DEFINE rather than AC_DEFINE_UNQUOTED,
+ whenever the right hand side need not be expanded by the shell.
+
+2001-09-16 Paul Eggert <eggert@twinsun.com>
+
+ * fnmatch.m4 (jm_FUNC_FNMATCH): Remove test for GNU C
+ library. It's not correct, as some older glibcs are buggy.
+ fnmatch wasn't fixed until glibc 2.2.
+
+ Use AC_DEFINE, not AC_DEFINE_UNQUOTED, as there's no
+ special shell magic here.
+
+2001-09-16 Jim Meyering <jim@meyering.net>
+
+ * mkdir-slash.m4 (UTILS_FUNC_MKDIR_TRAILING_SLASH): New file/macro.
+ * jm-macros.m4: Require it.
+
+2001-09-15 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Check for help2man.
+
+2001-09-11 Jim Meyering <jim@meyering.net>
+
+ * host-os.m4 (UTILS_HOST_OS): New file/macro.
+ The body, by Paul Eggert, was moved here from configure.in.
+ * jm-macros.m4: Require UTILS_HOST_OS.
+
+2001-09-04 Paul Eggert <eggert@twinsun.com>
+
+ * prereq.m4 (jm_PREREQ_XREADLINK): New macro.
+ (jm_PREREQ): Use it.
+
+2001-09-03 Paul Eggert <eggert@twinsun.com>
+
+ * prereq.m4 (jm_PREREQ_XGETCWD): Check for limits.h and
+ sys/param.h, as pathmax.h includes them.
+
+2001-09-03 Paul Eggert <eggert@twinsun.com>
+
+ * prereq.m4 (jm_PREREQ): Add jm_PREREQ_XGETCWD.
+ (jm_PREREQ_XGETCWD): New macro.
+
+ * getcwd.m4: New file.
+
+2001-09-01 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_MACROS): Check for canonicalize_file_name.
+ Used by df.
+
+2001-08-30 Paul Eggert <eggert@twinsun.com>
+
+ Simplify code, partly by assuming autoconf 2.52 semantics.
+
+ * Makefile.am (EXTRA_DIST): Remove uintmax_t.m4.
+
+ * inttypes.m4 (AC_PREREQ): Bump to 2.52.
+ (jm_AC_HEADER_INTTYPES_H): Remove; now done by autoconf in 2.52.
+ All uses removed.
+ (jm_AC_TYPE_INTMAX_T, jm_AC_TYPE_UINTMAX_T):
+ Move AC_REQUIRE to next-to-top level, to avoid confusion.
+ Use 2.52's AC_CHECK_TYPE instead of merely looking for the header.
+ * prereq.m4 (jm_PREREQ_HUMAN): Don't require jm_AC_HEADER_INTTYPES_H.
+ * jm-macros.m4 (jm_MACROS): Likewise.
+
+ * uintmax_t.m4: Remove, as it duplicates inttypes.m4.
+
+ * xstrtoimax.m4 (jm_AC_PREREQ_XSTRTOIMAX):
+ Quote first arg of AC_DEFUN.
+ Require jm_AC_TYPE_UINTMAX_T and jm_AC_TYPE_UNSIGNED_LONG_LONG
+ since they are needed to parse the include file even if we need
+ only xstrtoimax. Simplify logic behind the args to AC_REPLACE.
+ * xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX): Likewise,
+ but with opposite signedness.
+
+2001-08-30 Paul Eggert <eggert@twinsun.com>
+
+ * prereq.m4 (jm_PREREQ): Add jm_PREREQ_EXCLUDE.
+ (jm_PREREQ_EXCLUDE): New macro.
+
+2001-08-26 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Require jm_AC_PREREQ_XSTRTOIMAX.
+
+ * xstrtoimax.m4: New file.
+ * xstrtoumax.m4: Add comments explaining why we
+ AC_REPLACE_FUNCS(strtol).
+
+2001-06-20 Paul Eggert <eggert@twinsun.com>
+
+ * inttypes.m4: Add AC_PREREQ(2.13).
+ (jm_AC_HEADER_INTTYPES_H): Test for intmax_t, too.
+ (jm_AC_TYPE_INTMAX_T): New macro.
+ (jm_AC_TYPE_UINTMAX_T): Moved here from uintmax_t.m4.
+
+ * longlong.m4 (jm_AC_TYPE_LONG_LONG): New macro.
+
+ * longlong.m4: Renamed from ulonglong.m4.
+ * inttypes.m4: Renamed from inttypes_h.m4.
+ * uintmax_t.m4: Removed.
+
+2001-08-12 Jim Meyering <jim@meyering.net>
+
+ * afs.m4, assert.m4, bison.m4, check-decl.m4, chown.m4, d-ino.m4,
+ d-type.m4, dos.m4, error.m4, fnmatch.m4, fpending.m4, fstypename.m4,
+ fsusage.m4, ftruncate.m4, getgroups.m4, glibc.m4, gnu-source.m4,
+ group-member.m4, jm-glibc-io.m4, jm-macros.m4, jm-mktime.m4,
+ jm-winsz1.m4, jm-winsz2.m4, lchown.m4, lib-check.m4, libintl.m4,
+ link-follow.m4, ls-mntd-fs.m4, lstat.m4, malloc.m4, mbrtowc.m4,
+ mbstate_t.m4, mbswidth.m4, memcmp.m4, nanosleep.m4, perl.m4,
+ prereq.m4, putenv.m4, readdir.m4, realloc.m4, regex.m4, rename.m4,
+ rmdir-errno.m4, search-libs.m4, st_dm_mode.m4, st_mtim.m4, stat.m4,
+ strftime.m4, timespec.m4, unlink-busy.m4, uptime.m4, utimbuf.m4,
+ utime.m4, utimes.m4, xstrtoumax.m4:
+ Quote the first argument in each use of AC_DEFUN.
+
+2001-08-05 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Require autoconf-2.52.
+
+2001-08-03 Paul Eggert <eggert@twinsun.com>
+
+ The following changes are from gettext 0.10.39 as maintained by
+ Bruno Haible, except that getline.m4 continues to use AC_LIBOBJ.
+
+ * codeset.m4: Upgrade to serial AM1.
+ (AM_LANGINFO_CODESET): Renamed from jm_LANGINFO_CODESET;
+ all uses changed. Quote first arg of AC_DEFUN.
+ (am_cv_langinfo_codeset): Renamed from jm_cv_langinfo_codeset.
+
+ * iconv.m4: Upgrade to serial AM2.
+ (AM_ICONV): Renamed from jm_ICONV; all uses changed.
+ Add --with-libconv-prefix.
+ Quote first arg of AC_DEFUN. Add description for ICONV_CONST.
+ (am_cv_func_iconv): Renamed from jm_cv_func_iconv.
+ (am_cv_lib_iconv): Renamed from jm_cv_lib_iconv.
+ (am_cv_proto_iconv): Renamed from jm_cv_proto_iconv.
+ * jm-macros.m4 (jm_MACROS): Reflect s/jm_/AM_/ renamings.
+
+ * c-bs-a.m4 (AC_C_BACKSLASH_A): Quote first arg of AC_DEFUN.
+ * getline.m4 (AM_FUNC_GETLINE): Likewise.
+ * glibc21.m4 (jm_GLIBC21): Likewise.
+ * inttypes_h.m4 (jm_AC_HEADER_INTTYPES_H): Likewise.
+ * isc-posix.m4 (AC_ISC_POSIX): Likewise.
+ * lcmessage.m4 (AM_LC_MESSAGES): Likewise.
+ * progtest.m4 (AM_PATH_PROG_WITH_TEST): Likewise.
+ * uintmax_t.m4 (jm_AC_TYPE_UINTMAX_T): Likewise.
+ * ulonglong.m4 (jm_AC_TYPE_UNSIGNED_LONG_LONG): Likewise.
+
+ * getline.m4 (AM_FUNC_GETLINE): Don't bother checking for
+ string.h any more.
+
+ * progtest.m4 (AM_PATH_PROG_WITH_TEST): If not found, print "no",
+ not the default value.
+
+ 2001-06-25 Bruno Haible <haible@clisp.cons.org>
+ * mbswidth.m4 (jm_PREREQ_MBSWIDTH): Don't require AM_C_PROTOTYPES.
+ Also check for mbsinit. Needed for SCO 3.2v5.0.2.
+ Also include <string.h>; this is where AIX 3.2.5 declares wcwidth.
+ Also check for iswcntrl, used for wcwidth fallback.
+ Use AC_TRY_COMPILE to emulate AC_CHECK_DECLS, for portability
+ to Autoconf 2.13.
+
+2001-08-03 Jim Meyering <jim@meyering.net>
+
+ * mbrtowc.m4 (jm_FUNC_MBRTOWC): Use `#include', not `@%:@include',
+ as it was in the original. Reported by Paul Eggert.
+
+2001-07-16 Jim Meyering <jim@meyering.net>
+
+ * gettimeofday.m4: New file.
+ Prompted by a report from Bernhard Baehr.
+
+2001-07-15 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am.in (Makefile.am): Remove most of the unlocked-io.h stuff.
+ Now it's in ../Makefile.cfg.
+
+2001-07-04 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am.in (glibc-io.struct): New target. Rework the code
+ that generates jm-glibc-io.m4 so that it doesn't trigger any make
+ distcheck failure.
+
+2001-07-02 Jim Meyering <jim@meyering.net>
+
+ The following changes were prompted by suggestions from Bruno Haible.
+
+ * jm-glibc-io.m4n: New file, the template from which jm-glibc-io.m4
+ is now generated.
+ * Makefile.am.in (Makefile.am): Include jm-glibc-io.m4n in emitted
+ definition of EXTRA_DIST.
+ (Makefile.am): Emit the dependency, `all-local: jm-glibc-io.m4' to
+ ensure that the generated file is created/updated whenever the list
+ of $(unlocked_functions) is changed.
+ (jm-glibc-io.m4): New rule.
+ (unlocked-io.h): New rule -- currently unused.
+
+2001-06-24 Jim Meyering <jim@meyering.net>
+
+ * regex.m4 (jm_INCLUDED_REGEX): Use a quadrigraph to represent an
+ unmatched right bracket, rather than kludging it with an extra,
+ falsely-matching quote in a comment. Patch by Akim Demaille.
+
+2001-05-27 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ_READUTMP): Check for ut_type in struct utmpx.
+ Check for ut_type in struct utmp.
+
+2001-05-22 Jim Meyering <jim@meyering.net>
+
+ * strftime.m4 (_jm_STRFTIME_PREREQS): Don't use AC_LIBOBJ(strftime),
+ now that we use the package-supplied version unconditionally.
+ (jm_FUNC_STRFTIME): Don't replace strftime, for the same reason.
+
+2001-05-21 Jim Meyering <jim@meyering.net>
+
+ * regex.m4: Change a couple backticks to single quotes to avoid shell
+ syntax errors.
+
+2001-05-19 Alexandre Duret-Lutz <duret_g@epita.fr>
+
+ * dos.m4 (jm_AC_DOS): Check for _WIN32, __WIN32__, and __MSDOS__.
+
+2001-05-11 Paul Eggert <eggert@twinsun.com>
+
+ * strftime.m4 (jm_FUNC_GNU_STRFTIME):
+ Don't bother to check library strftime, since
+ we'll be using our own my_strftime function anyway.
+ Define my_strftime instead of strftime.
+
+2001-05-15 Jim Meyering <jim@meyering.net>
+
+ * regex.m4: Use proper quoting so brackets appear in the test program.
+ Reported by, and with help from, Bruno Haible.
+
+2001-05-13 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (major_t, minor_t): Define to unsigned int if undefined.
+
+2000-11-26 Paul Eggert <eggert@twinsun.com>
+
+ * jm-macros.m4 (jm_MACROS): Do not check for fseeko; no longer used.
+
+2001-04-21 Jim Meyering <jim@meyering.net>
+
+ * rmdir-errno.m4: Write to a new file, so that a restrictive umask
+ doesn't interfere.
+
+2001-04-21 Alexandre Duret-Lutz <duret_g@epita.fr>
+
+ * ftruncate.m4: Check for chsize.
+ Link with ftruncate.o unconditionally if ftruncate is missing.
+ This was required when cross-compiling to i586-mingw32msvc.
+
+2001-03-24 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Require autoconf-2.49d.
+
+2001-03-20 Bruno Haible <haible@clisp.cons.org>
+
+ * iconv.m4 (jm_ICONV): Recommend GNU libiconv.
+
+2001-03-17 Jim Meyering <jim@meyering.net>
+
+ * memcmp.m4 (jm_AC_FUNC_MEMCMP): Remove my copy of AC_FUNC_MEMCMP,
+ now that the version in autoconf is equivalent.
+ (jm_FUNC_MEMCMP): Adjust to use AC_FUNC_MEMCMP.
+
+ * error.m4 (jm_PREREQ_ERROR): Invoke AC_FUNC_STRERROR_R.
+ Suggestion from Akim Demaille.
+
+ * prereq.m4 (jm_PREREQ): Add jm_PREREQ_TEMPNAME.
+ (jm_PREREQ_TEMPNAME): New function.
+
+2001-02-25 Paul Eggert <eggert@twinsun.com>
+
+ * jm-macros.m4 (jm_MACROS): Use mkstemp replacement if the system
+ lacks mkstemp. Compile our own tempname.c if we compile our own
+ mkstemp.c, as mkstemp relies on tempname.
+
+2001-03-01 Jim Meyering <jim@meyering.net>
+
+ * dos.m4 (jm_AC_DOS): Remove extra backslashes, now that
+ AH_VERBATIM really does output its argument verbatim.
+
+2001-02-18 Paul Eggert <eggert@twinsun.com>
+
+ * jm-macros.m4 (jm_CHECK_ALL_HEADERS): Check for sys/resource.h.
+
+2001-02-17 Jim Meyering <jim@meyering.net>
+
+ * ls-mntd-fs.m4 (jm_LIST_MOUNTED_FILESYSTEMS): Don't check for
+ getmntent via AC_CHECK_FUNCS, since that would get a `no' and disrupt
+ further attempts by AC_FUNC_GETMNTENT to check with e.g., -lgen on
+ UnixWare 7.1.1.
+
+ * mbrtowc.m4 (jm_FUNC_MBRTOWC): Adapt to use AC_CACHE_CHECK etc.,
+ rather than AC_CACHE_VAL.
+
+2001-02-17 Paul Eggert <eggert@twinsun.com>
+
+ * mbrtowc.m4: New file, defining jm_FUNC_MBRTOWC.
+ * mbswidth.m4 (jm_PREREQ_MBSWIDTH):
+ Use jm_FUNC_MBRTOWC, not AC_CHECK_FUNCS(mbrtowc).
+ * prereq.m4 (jm_PREREQ_QUOTEARG): Likewise.
+
+2001-02-07 Jim Meyering <jim@meyering.net>
+
+ * regex.m4 (jm_INCLUDED_REGEX): Add a test for the latest bug.
+
+2001-02-05 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Require autoconf-2.14d (not yet released), because
+ it includes the patch required for `large file' support with at least
+ HP-UX's 10.20 /bin/cc.
+
+2001-02-03 Jim Meyering <jim@meyering.net>
+
+ * ls-mntd-fs.m4 (jm_LIST_MOUNTED_FILESYSTEMS): Restore prior use of
+ AS_IF, now that it works once again (mysteriously).
+ * fsusage.m4 (jm_FILE_SYSTEM_USAGE): Likewise.
+
+2001-01-30 Jim Meyering <jim@meyering.net>
+
+ Don't use filenames that are 8.3-equivalent to "conftest" on DOS.
+ * chown.m4: Rename conftestchown to conftest.chown.
+ * rename.m4: s/conftestdir/conftest.d1/ and s/conftestdir2/conftest.d2/.
+ * utimes.m4: s/conftestdata/conftest.data/
+ Inspired by Pavel Roskin's change in autoconf.
+
+2001-01-27 Jim Meyering <jim@meyering.net>
+
+ * ls-mntd-fs.m4 (jm_LIST_MOUNTED_FILESYSTEMS): Open-code what was
+ a use of AS_IF.
+ * fsusage.m4 (jm_FILE_SYSTEM_USAGE): Likewise.
+
+2001-01-26 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ_QUOTEARG): Check for stddef.h, now that
+ quotearg.c includes it.
+
+2001-01-15 Bruno Haible <haible@clisp.cons.org>
+
+ * iconv.m4 (jm_ICONV): Also check whether the iconv declaration
+ has const.
+
+2001-01-20 Jim Meyering <jim@meyering.net>
+
+ Be sure that headers are checked before used in code compiled
+ for the type checks.
+ * jm-macros.m4 (jm_MACROS): Remove all header checks.
+ In place of that, invoke jm_CHECK_ALL_TYPES.
+ (jm_CHECK_ALL_HEADERS): New functions with the above checks.
+ (jm_CHECK_ALL_TYPES): Require jm_CHECK_ALL_HEADERS.
+ Alan Iwi reported a build failure on an f300-fujitsu-uxpv4.1_ES;
+ The check for ssize_t was mistakenly run before the test for unistd.h.
+
+ The configure-time check for stdbool.h was missing.
+ * prereq.m4 (jm_PREREQ): Add jm_PREREQ_HASH.
+ (jm_PREREQ_HASH): New function.
+
+2001-01-17 Jim Meyering <jim@meyering.net>
+
+ * fsusage.m4 (jm_FILE_SYSTEM_USAGE): Use AS_IF, not AS_IFELSE,
+ for autoconf-2.49c.
+ * ls-mntd-fs.m4 (jm_LIST_MOUNTED_FILESYSTEMS): Likewise.
+
+2001-01-14 Jim Meyering <jim@meyering.net>
+
+ * rename.m4: Use temporary directories named conftestdir{,2}, not
+ foo and bar. Create conftestdir/ in the script, not in the C code.
+ Remove directories in the script, not in the C code.
+ Remove conftestdir{,2} before trying to create the directory.
+ Make the entire configure script fail if the mkdir fails.
+
+2001-01-02 Volker Borchert <bt@teknon.de>
+
+ * rename.m4: New file.
+ * jm-macros.m4 (jm_MACROS): Require vb_FUNC_RENAME.
+
+2001-01-01 Alexandre Duret-Lutz <duret_g@epita.fr>
+
+ * libintl.m4 (AM_GNU_GETTEXT): Define MKINSTALLDIRS by
+ expanding the value of $ac_aux_dir, as in AM_MISSING_HAS_RUN,
+ so `make install' also works in VPATH builds.
+
+2001-01-01 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ_READUTMP): Include utmp.h (if available), even
+ on systems with utmpx.h. It's necessary for the declaration of utmp's
+ ut_user member. Reported by Andreas Jaeger.
+
+ * check-decl.m4 (jm_CHECK_DECLS): Include grp.h and pwd.h if available.
+ They are required for the declarations of getgrgid and getpwuid resp.
+ (_jm_DECL_HEADERS): Check for grp.h and pwd.h.
+ Reported by Andreas Jaeger.
+
+2000-12-25 Alexandre Duret-Lutz <duret_g@epita.fr>
+
+ * libintl.m4 (AM_WITH_NLS): When using AC_CONFIG_AUX_DIR,
+ prepend $(top_srcdir) to the value of MKINSTALLDIRS so that it
+ can be used in subdirectories.
+
+2000-12-26 Jim Meyering <jim@meyering.net>
+
+ * dos.m4 (jm_AC_DOS): Rewrite (though it's still a stub) to work better
+ with autoheader.
+
+2000-12-17 Jim Meyering <jim@meyering.net>
+
+ * dos.m4 (jm_AC_DOS): New file and macro.
+ * jm-macros.m4 (jm_MACROS): Require jm_AC_DOS.
+
+2000-12-06 Paul Eggert <eggert@twinsun.com>
+
+ * off_t-format.m4: Remove this file.
+ * jm-macros.m4 (jm_MACROS): Remove jm_SYS_OFF_T_PRINTF_FORMAT.
+
+2000-12-06 Jim Meyering <jim@meyering.net>
+
+ * xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX): If we need the replacement
+ strtoull, we may well need the replacement strtoul, too.
+ Check for declarations of strtoul and strtoull.
+ Check for strtol. Mainly as a cue to cause automake to include
+ strtol.c -- that file is included by each of strtoul.c and strtoull.c.
+ Check for limits.h -- strtol.c needs it.
+
+2000-12-02 Jim Meyering <jim@meyering.net>
+
+ * off_t-format.m4 (OFF_T_PRINTF_FORMAT_STRING): New file/macro.
+ * jm-macros.m4 (jm_MACROS): require it.
+
+2000-11-30 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_MACROS): Check for stdint.h.
+
+2000-11-30 Jim Meyering <jim@meyering.net>
+
+ * getloadavg.m4: s/ifval/m4_ifval/ to accommodate new autoconf.
+
+2000-11-03 Bruno Haible <haible@clisp.cons.org>
+
+ * jm-macros.m4 (jm_MACROS): Add test for wcrtomb.
+
+2000-11-04 Jim Meyering <jim@meyering.net>
+
+ * regex.m4: Use the `m4_' prefix on `syscmd' and `m4_sysval'.
+
+2000-10-29 Jim Meyering <jim@meyering.net>
+
+ * fsusage.m4: s/AC_SHELL_IFELSE/AS_IFELSE/ to match autoconf renaming.
+ * ls-mntd-fs.m4: Likewise
+
+2000-10-28 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ): Add jm_PREREQ_MEMCHR.
+ (jm_PREREQ_MEMCHR): New function.
+
+2000-10-21 Jim Meyering <jim@meyering.net>
+
+ * check-decl.m4 (jm_CHECK_DECLS): Also check for memrchr.
+ * prereq.m4 (jm_PREREQ_DIRNAME): New macro.
+ * jm-macros.m4 (AC_REPLACE_FUNCS): Add memrchr.
+
+2000-09-18 Jim Meyering <jim@meyering.net>
+
+ * getloadavg.m4 (AC_FUNC_GETLOADAVG): Restore the initial value of LIBS.
+ Otherwise, everyone ends up linking with -lelf for some configurations.
+ Reported by Mike Stone.
+
+2000-08-26 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Use jm_FUNC_FPENDING.
+ * fpending.m4: New file.
+
+2000-08-20 Jim Meyering <jim@meyering.net>
+
+ * check-decl.m4: Include utmp.h `#if HAVE_UTMP_H', rather than
+ `#if !HAVE_UTMPX_H'. The latter would lose on systems with neither
+ utmp.h nor utmpx.h. Reported by Eli Zaretskii.
+
+2000-08-11 J. David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ Improve fileutils installation on systems where running
+ programs (like install) can't be unlinked.
+ * unlink-busy.m4 (jm_FUNC_UNLINK_BUSY_TEXT): New file/macro.
+ * jm-macros.m4: Use jm_FUNC_UNLINK_BUSY_TEXT.
+
+2000-08-06 Paul Eggert <eggert@twinsun.com>
+
+ * mbstate_t.m4 (AC_MBSTATE_T): Define mbstate_t to be int,
+ not char, for compatibility with glibc 2.1.3 strftime.c.
+
+2000-07-23 Paul Eggert <eggert@twinsun.com>
+
+ * mbswidth.m4 (jm_PREREQ_MBSWIDTH): Check for wcwidth declaration.
+
+2000-07-23 Jim Meyering <jim@meyering.net>
+
+ * check-decl.m4 (jm_CHECK_DECLS): Check for declarations of these, too:
+ getgrgid, getpwuid, getuid.
+
+2000-07-16 Bruno Haible <haible@clisp.cons.org>
+
+ * mbswidth.m4: New file.
+ * prereq.m4 (jm_PREREQ): Call jm_PREREQ_MBSWIDTH.
+
+2000-07-14 Jim Meyering <jim@meyering.net>
+
+ * xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX): Require jm_AC_TYPE_UINTMAX_T.
+
+2000-07-10 Paul Eggert <eggert@twinsun.com>
+
+ From a suggestion by Bruno Haible.
+ * mbstate_t.m4 (AC_MBSTATE_T):
+ Renamed from AC_MBSTATE_T_OBJECT. All uses changed.
+ Change from a two-part test, which defines both HAVE_MBSTATE_T_OBJECT
+ and mbstate_t, to a single-part test that simply defines mbstate_t.
+ * prereq.m4 (jm_PREREQ_QUOTEARG): s/AC_MBSTATE_T_OBJECT/AC_MBSTATE_T/.
+
+2000-07-10 Jim Meyering <jim@meyering.net>
+
+ * strerror_r.m4: Mirror the correction made in autoconf.
+
+ * gnu-source.m4: Output to confdefs.h directly.
+ Suggestion from Akim Demaille.
+
+2000-07-09 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_MACROS): Add a test to see if -lm is required
+ to link seq. If so, set SEQ_LIBM to -lm. From Bruno Haible.
+
+ * gnu-source.m4 (AC__GNU_SOURCE): New file/macro.
+ * jm-macros.m4 (jm_CHECK_ALL_TYPES): Require it.
+
+2000-07-05 Bruno Haible <haible@clisp.cons.org>
+
+ * strerror_r.m4 (AC_FUNC_STRERROR_R): Pass a reasonably large buffer
+ to strerror_r.
+ Include <ctype.h> for use of isalpha.
+
+2000-07-05 Paul Eggert <eggert@twinsun.com>
+ and Bruno Haible <haible@clisp.cons.org>
+
+ * mbstate_t.m4 (AC_MBSTATE_T_OBJECT): Test for mbstate_t
+ only if the test for an object-type mbstate_t fails. This
+ prevents us from mistakenly reporting that mbstate_t is a
+ system object type after we "#define mbstate_t int" to work
+ around its lack.
+
+2000-07-04 Jim Meyering <jim@meyering.net>
+
+ * fsusage.m4 (jm_FILE_SYSTEM_USAGE): Use plain old `echo' instead
+ of the deprecated AC_CHECKING.
+
+2000-07-03 Jim Meyering <jim@meyering.net>
+
+ * check-decl.m4 (AC_CHECK_DECLS): Add strnlen.
+
+2000-07-03 Paul Eggert <eggert@twinsun.com>
+
+ * mbstate_t.m4 (AC_MBSTATE_T_OBJECT): Port to autoconf 2.13.
+ Add AC_CHECK_HEADERS(stdlib.h), since we use HAVE_STDLIB_H.
+
+2000-07-02 Jim Meyering <jim@meyering.net>
+
+ * mbstate_t.m4: Also define mbstate_t, if necessary.
+
+ * chown.m4: Replace each use of AC_SUBST(LIBOBJS)/LIBOBJS=... with
+ AC_LIBOBJ(function_name).
+ * chown.m4: Likewise.
+ * fnmatch.m4: Likewise.
+ * ftruncate.m4: Likewise.
+ * getgroups.m4: Likewise.
+ * getline.m4: Likewise.
+ * group-member.m4: Likewise.
+ * jm-macros.m4: Likewise.
+ * lstat.m4: Likewise.
+ * malloc.m4: Likewise.
+ * memcmp.m4: Likewise.
+ * nanosleep.m4: Likewise.
+ * putenv.m4: Likewise.
+ * realloc.m4: Likewise.
+ * regex.m4: Likewise.
+ * stat.m4: Likewise.
+ * strftime.m4: Likewise.
+
+2000-07-01 Jim Meyering <jim@meyering.net>
+
+ * ls-mntd-fs.m4: Remove a `FIXME' comment and fix the associated
+ problem.
+
+2000-06-17 Bruno Haible <haible@clisp.cons.org>
+
+ * ls-mntd-fs.m4 (jm_LIST_MOUNTED_FILESYSTEMS): Rename BeOS specific
+ macro from MOUNTED_NEXT_DEV to MOUNTED_FS_STAT_DEV.
+
+2000-07-01 Jim Meyering <jim@meyering.net>
+
+ * uptime.m4: Put double quotes around use of $cross_compiling.
+
+2000-06-28 Jim Meyering <jim@meyering.net>
+
+ * mbstate_t.m4: Use stdlib.h, not stdio.h. The latter is not included
+ by quotearg.c, for which we perform this test. From Bruno Haible.
+
+2000-06-17 Bruno Haible <haible@clisp.cons.org>
+
+ * check-decl.m4 (_jm_DECL_HEADERS): Check for utmp.h as well.
+ * prereq.m4 (jm_PREREQ_READUTMP): Likewise. If either <utmp.h> or
+ <utmpx.h> exists, put readutmp.o into LIBOBJS.
+
+2000-06-25 Jim Meyering <jim@meyering.net>
+
+ * mbstate_t.m4: Include stdio.h before wchar.h to work around
+ Linux header bug when _XOPEN_SOURCE is defined to 500.
+
+2000-06-24 Jim Meyering <jim@meyering.net>
+
+ * strerror_r.m4: Revive this file -- to try out an experimental
+ version of AC_FUNC_STRERROR_R that may work even on BeOS, a system
+ for which strerror does return char*, but which lacks a conveniently
+ accessible declaration of the function. If the compile-test says
+ strerror_r doesn't work, then resort to a `run'-test that works on
+ BeOS and segfaults on DEC Unix.
+
+2000-06-19 Paul Eggert <eggert@twinsun.com>
+
+ * mbstate_t.m4: New file, defining AC_MBSTATE_T_OBJECT.
+ * prereq.m4 (jm_PREREQ_QUOTEARG): Use it. Add check for iswprint.
+
+2000-06-23 Jim Meyering <jim@meyering.net>
+
+ * afs.m4: Add missing AC_MSG_RESULT.
+ Reported by Bruno Haible.
+
+ * fsusage.m4: s/AC_MSG_CHECKING/AC_CHECKING/.
+ Suggestion from Bruno Haible.
+
+2000-06-21 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (AC_REPLACE_FUNCS): Add getpass.
+
+2000-06-18 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (AC_REPLACE_FUNCS): Remove mkdir.
+
+ * link-follow.m4 (jm_AC_FUNC_LINK_FOLLOWS_SYMLINK): Change the
+ `checking whether...' message to be consistent with that of the
+ lstat test.
+
+2000-06-16 Bruno Haible <haible@clisp.cons.org>
+
+ * glibc21.m4 (jm_GLIBC21): Define GLIBC21 for Makefiles, not for C.
+
+2000-06-12 Jim Meyering <jim@meyering.net>
+
+ * getloadavg.m4 (AM_FUNC_GETLOADAVG): Replace with AC_FUNC_GETLOADAVG
+ from autoconf, and tweak the latter to accept an optional argument.
+ * jm-macros.m4: s/AM_FUNC_GETLOADAVG/AC_FUNC_GETLOADAVG/, and supply
+ the optional argument, `lib'.
+
+2000-06-08 Jim Meyering <jim@meyering.net>
+
+ * largefile.m4: Remove file (now that it's part of autoconf).
+
+2000-06-04 Paul Eggert <eggert@twinsun.com>
+
+ Rewrite largefile configuration so that we don't need to run
+ getconf and don't need AC_CANONICAL_HOST. [I'm leaving the use of
+ AC_CANONICAL_HOST in configure.in -- jmm]
+
+ * largefile.m4 (AC_SYS_LARGEFILE_FLAGS,
+ AC_SYS_LARGEFILE_SPACE_APPEND): Remove.
+ (AC_SYS_LARGEFILE_TEST_INCLUDES): New macro.
+ (AC_SYS_LARGEFILE_MACRO_VALUE): Change arguments from
+ CODE-TO-SET-DEFAULT to VALUE, INCLUDES, FUNCTION-BODY.
+ All uses changed.
+ Instead of inspecting the output of getconf, try to compile the
+ test program without and with the macro definition.
+ (AC_SYS_LARGEFILE): Do not require AC_CANONICAL_HOST or check
+ for getconf. Instead, check for the needed flags by compiling
+ test programs.
+
+2000-06-03 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ_HUMAN): Use []-quoted list in AC_CHECK_DECLS,
+ now that autoconf requires that.
+
+ * jm-glibc-io.m4: Add a kludge to make autoheader emit the required
+ #undefs. E.g., #undef HAVE_DECL_FERROR_UNLOCKED.
+ Use []-quoted list in AC_CHECK_DECLS, now that autoconf requires that.
+
+2000-05-26 Bruno Haible <haible@clisp.cons.org>
+
+ * glibc21.m4: New file.
+ * jm-macros.m4 (jm_MACROS): Call jm_GLIBC21.
+
+2000-05-28 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK): Rename from
+ jm_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK.
+ * stat.m4: Likewise.
+ * lstat.m4: Likewise.
+ * lstat-slash.m4: Remove file (absorbed into autoconf).
+
+ * jm-macros.m4 (AC_FUNC_STRERROR_R): Rename from jm_FUNC_STRERROR_R.
+ * strerror_r.m4: Remove file (absorbed into autoconf).
+
+2000-05-26 Jim Meyering <jim@meyering.net>
+
+ * uptime.m4: Use `$cross_compiling', not `$ac_cv_prog_cc_cross'.
+
+2000-05-24 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4: Use []-quoted list in AC_CHECK_MEMBERS, now that
+ autoconf requires that.
+ * lib-check.m4: Likewise.
+ * jm-macros.m4: Likewise.
+ * strftime.m4: Likewise.
+
+ * check-decl.m4 (jm_CHECK_DECLS): Use []-quoted list in AC_CHECK_DECLS,
+ now that autoconf requires that.
+
+2000-05-22 Jim Meyering <jim@meyering.net>
+
+ * stat.m4: Require jm_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK.
+ * lstat.m4: Likewise.
+
+2000-05-20 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ_HUMAN): New macro.
+ (jm_PREREQ): Use it.
+
+2000-05-09 Jim Meyering <jim@meyering.net>
+
+ * gettext.m4: Rename this...
+ * libintl.m4: ...to this.
+
+2000-05-06 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (AC_REPLACE_FUNCS): Add atexit.
+ (AC_REPLACE_FUNCS): Add strnlen.
+
+ * rmdir-errno.m4 (fetish_FUNC_RMDIR_NOTEMPTY): New macro and file.
+ * jm-macros.m4: Require fetish_FUNC_RMDIR_NOTEMPTY.
+
+ * nanosleep.m4 (jm_FUNC_NANOSLEEP): Save and restore LIBS around
+ AC_SEARCH_LIBS call for nanosleep.
+ (LIB_NANOSLEEP): Set and AC_SUBST.
+
+2000-05-03 Paul Eggert <eggert@twinsun.com>
+
+ * largefile.m4 (AC_SYS_LARGEFILE): Define _XOPEN_SOURCE to
+ be 500, instead of _GNU_SOURCE to be 1, to work around glibc
+ 2.1.3 bug. This avoids a clash when files like regex.c define
+ _GNU_SOURCE.
+
+2000-05-05 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_MACROS): Save and restore LIBS around AC_SEARCH_LIBS
+ call for clock_gettime.
+ (LIB_CLOCK_GETTIME): Set and AC_SUBST.
+
+ * search-libs.m4: Update from autoconf.
+
+ su doesn't work on Solaris 2.6.
+ * lib-check.m4: When checking for struct spwd.sp_pwdp, also include
+ <shadow.h>. Reported by Dragos Harabor.
+
+2000-05-03 Jim Meyering <jim@meyering.net>
+
+ * check-decl.m4 (AC_CHECK_DECLS): Add strndup.
+
+2000-05-02 Paul Eggert <eggert@twinsun.com>
+
+ * largefile.m4 (AC_SYS_LARGEFILE): Define _GNU_SOURCE if
+ this is needed to make ftello visible (e.g. glibc 2.1.3). Use
+ compile-time test, rather than inspecting host and OS, to
+ decide whether to define _LARGEFILE_SOURCE.
+
+2000-05-01 Jim Meyering <jim@meyering.net>
+
+ * fsusage.m4: Use AC_MSG_CHECKING instead of obsolete AC_CHECKING.
+
+ * ls-mntd-fs.m4 (jm_LIST_MOUNTED_FILESYSTEMS): Add BeOS support.
+ Based on a patch from Bruno Haible.
+
+2000-04-18 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ_GETPAGESIZE): New macro.
+ (jm_PREREQ): Use it.
+
+2000-04-17 Jim Meyering <jim@meyering.net>
+
+ Get it right :-)
+ * jm-macros.m4 (jm_CHECK_ALL_TYPES) [_GNU_SOURCE]: Emit the
+ actual #define via AH_VERBATIM. Don't need separate AC_DEFINE.
+ Suggestion from Akim Demaille.
+
+2000-04-14 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_CHECK_ALL_TYPES) [_GNU_SOURCE]: Use the one-arg form
+ of AC_DEFINE. Otherwise, the #ifndef in AH_VERBATIM gets clobbered.
+
+2000-04-13 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_CHECK_ALL_TYPES) [_GNU_SOURCE]: Use new AH_VERBATIM
+ to insert required #ifndef into config.h.in.
+ Suggestion from Akim Demaille.
+
+2000-04-12 Jim Meyering <jim@meyering.net>
+
+ * getloadavg.m4 (AM_FUNC_GETLOADAVG): Use AC_CHECK_HEADERS, not
+ `AC_CHECK_HEADER' to check for locale.h. Thanks to a report from
+ Christian Krackowizer.
+
+ More code moved from ../configure.in into (jm_CHECK_ALL_TYPES).
+ * jm-macros.m4 (_GNU_SOURCE): Define.
+ (AC_SYS_LARGEFILE): Require.
+ (AM_C_PROTOTYPES): Require.
+
+2000-04-05 Paul Eggert <eggert@twinsun.com>
+
+ * largefile.m4 (AC_SYS_LARGEFILE_FLAGS): Don't use -n32 on
+ IRIX if the installer said otherwise.
+
+2000-04-05 Jim Meyering <jim@meyering.net>
+
+ Portability tweaks required for ultrix4.3.
+ * check-decl.m4 [!HAVE_UTMPX_H] (headers): Include <utmp.h>.
+ (jm_CHECK_DECLS): Add getutent to the list of functions.
+ (_jm_DECL_HEADERS): Add utmpx.h.
+ From John David Anglin.
+
+ * strftime.m4: Back out the 2000-04-02 change.
+ Instead of that change, simply undefine putenv in the test program.
+
+2000-04-03 Jim Meyering <jim@meyering.net>
+
+ * gettext.m4: Fix typo in comment.
+
+ * codeset.m4 (AC_CHECK_HEADERS): Add langinfo.h (moved here from
+ textutils/configure.in). Suggestion from Paul Eggert.
+ (AC_CHECK_FUNCS): Add nl_langinfo. (also from textutils/configure.in)
+
+2000-04-02 Paul Eggert <eggert@twinsun.com>
+
+ * strftime.m4 (jm_FUNC_GNU_STRFTIME): Set TZ environment
+ variable in the shell rather than using putenv, which isn't
+ portable. This avoids the configure-time inter-test dependency
+ on the potentially-renamed putenv function.
+
+2000-03-30 Paul Eggert <eggert@twinsun.com>
+
+ * jm-macros.m4 (jm_CHECK_ALL_TYPES): Include <sys/stat.h>
+ before checking struct stat.st_blksize, so that
+ HAVE_STRUCT_STAT_ST_BLKSIZE is defined correctly.
+
+2000-03-29 Paul Eggert <eggert@twinsun.com>
+
+ * strftime.m4 (_jm_STRFTIME_PREREQS): Check for strftime,
+ since strftime.c uses HAVE_STRFTIME to decide whether to use
+ the underlying strftime.
+
+2000-03-10 Jim Meyering <jim@meyering.net>
+
+ * lib-check.m4: Look for getspnam in -lgen, too.
+ From Marco Franzen.
+
+2000-02-02 Bruno Haible <haible@clisp.cons.org>
+
+ * codeset.m4: New file.
+ * iconv.m4: New file.
+ * jm-macros.m4 (jm_MACROS): Call jm_LANGINFO_CODESET and jm_ICONV.
+
+2000-03-04 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_CHECK_ALL_TYPES): Require AC_C_VOLATILE,
+ for lib/localcharset.c.
+
+2000-03-03 Jim Meyering <jim@meyering.net>
+
+ * regex.m4: Make sure re_compile_pattern accepts patterns like `{1'.
+
+2000-03-02 Jim Meyering <jim@meyering.net>
+
+ * timespec.m4: Require AC_HEADER_TIME before the cache check so
+ the messages come out on separate lines.
+
+ * jm-glibc-io.m4 (jm_FUNC_GLIBC_UNLOCKED_IO): Use AC_CHECK_DECLS,
+ rather than jm_CHECK_DECLARATIONS.
+ * decl.m4: Remove now-unused file.
+
+ * check-decl.m4 (AC_CHECK_DECLS): Add getlogin, ttyname, and geteuid.
+
+2000-02-27 Jim Meyering <jim@meyering.net>
+
+ * check-decl.m4: Add getenv to the list.
+
+2000-02-23 Jim Meyering <jim@meyering.net>
+
+ * check-decl.m4: Now that we have the new AC_CHECK_DECLS, use it
+ in place of my hack.
+
+2000-02-10 Jim Meyering <jim@meyering.net>
+
+ * nanosleep.m4 (jm_FUNC_NANOSLEEP): Rename replacement function from
+ gnu_nanosleep to rpl_nanosleep.
+
+2000-02-09 Jim Meyering <jim@meyering.net>
+
+ * lib-check.m4 (jm_LIB_CHECK): Fix typo: check for sp_pwdp in
+ struct spwd, rather than in struct passwd. Reported by Gaël Quéri.
+
+2000-02-08 Akim Demaille <akim@epita.fr>
+
+ * largefile.m4 (AC_SYS_LARGEFILE_FLAGS): Quote square brackets with
+ `[' and `]' and remove uses of `changequote'.
+ (AC_SYS_LARGEFILE_MACRO_VALUE): Likewise.
+ (AC_SYS_LARGEFILE): Likewise.
+ * gettext.m4 (AM_GNU_GETTEXT): Likewise.
+ * strftime.m4 (jm_FUNC_GNU_STRFTIME): Remove now-unnecessary use
+ of changequote.
+ * regex.m4 (jm_INCLUDED_REGEX): Likewise.
+ * readdir.m4 (jm_FUNC_READDIR): Likewise
+ * memcmp.m4 (jm_AC_FUNC_MEMCMP): Likewise, and add `int' for main.
+ * getloadavg.m4 (AM_FUNC_GETLOADAVG): Likewise.
+
+2000-02-05 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (jm_CHECK_ALL_TYPES): Require most macros.
+ Remove explicit use of AC_HEADER_TIME. It is required by
+ jm_CHECK_TYPE_STRUCT_TIMESPEC. Using AC_HEADER_TIME and
+ `AC_REQUIRE'ing jm_CHECK_TYPE_STRUCT_TIMESPEC provoked a but
+ in autoconf whereby the expansion of the latter ended up preceding
+ the expansion of its prerequisite, AC_HEADER_TIME.
+ Reported by Volker Borchert.
+
+2000-02-03 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ_READUTMP): Check for utmpxname.
+
+2000-02-02 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ_ADDEXT): Fix typo that resulted in no
+ definition of HAVE_PATHCONF: s/AC_CHECK_FUNC/AC_CHECK_FUNCS/.
+ Reported by Eli Zaretskii.
+
+2000-01-31 Jim Meyering <jim@meyering.net>
+
+ * check-decl.m4 (jm_CHECK_DECLS): Add nanosleep to the list of
+ functions. Add the time.h and sys/time.h headers along with the
+ AC_REQUIRE'ment of AC_HEADER_TIME.
+
+2000-01-30 Jim Meyering <jim@meyering.net>
+
+ * lib-check.m4: Clean up some kludgy old shadow password tests.
+
+ * prereq.m4 (utmp_includes): Define.
+ Check for ut_user and ut_name members in both struct utmpx
+ and struct utmp.
+
+2000-01-29 Jim Meyering <jim@meyering.net>
+
+ * lib-check.m4: New file containing library-related checks from
+ fileutils and sh-utils (textutils had none).
+
+2000-01-28 Jim Meyering <jim@meyering.net>
+
+ * perl.m4: Change format of warning message to look more like that
+ from the missing script. Suggestion from François Pinard.
+
+2000-01-25 Jim Meyering <jim@meyering.net>
+
+ * timespec.m4: Require AC_HEADER_TIME, and include sys/time.h as well
+ as time.h in the compile check.
+ * nanosleep.m4: Require AC_HEADER_TIME rather than simply using it.
+ Fix typo in cross-compiling case: s/yes/no/.
+
+2000-01-23 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Move df-related tests here from fileutils/configure.in
+
+ * ls-mntd-fs.m4: s/list_mounted_fs/ac_list_mounted_fs/
+ (jm_LIST_MOUNTED_FILESYSTEMS): Take two parameters.
+
+ * fsusage.m4: New file. Extracted from fileutils/configure.in.
+ s/space/ac_fsusage_space/.
+ (jm_FILE_SYSTEM_USAGE): Take two parameters.
+
+ * ftruncate.m4: New file (derived from part of fileutils/configure.in).
+ * jm-macros.m4 (jm_FUNC_FTRUNCATE): AC_REQUIRE it.
+ (jm_CHECK_ALL_TYPES): Require AC_HEADER_MAJOR and AC_HEADER_DIRENT.
+
+ * jm-macros.m4 (OPTIONAL_BIN_PROGS, OPTIONAL_BIN_ZCRIPTS, MAN):
+ AC_SUBST these here, rather than just in sh-util/configure.in, so
+ that the now-shared-by-fileutils-and-textutils lib/Makefile.am are
+ all the same.
+ (AM_FUNC_OBSTACK): Add (from fileutils/configure.in).
+ (AC_CHECK_FUNCS): Merge all checks from fileutils, textutils, sh-utils.
+ (AM_FUNC_STRTOD): Added (from textutils', sh-utils' configure.in).
+ (AC_SUBST(POW_LIBM)): Likewise.
+ (AC_SUBST(DF_PROG)): Moved from fileutils/configure.in.
+
+2000-01-22 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Call AC_PROG_CC_STDC just before AC_C_CONST.
+
+ * prereq.m4 (jm_PREREQ_QUOTEARG): Add wctype.h.
+
+ * jm-macros.m4 (AC_CHECK_HEADERS): Add checks from fileutils'
+ configure.in
+ (AC_CHECK_HEADERS): Likewise for sh-utils.
+ (AC_CHECK_HEADERS): Likewise for textutils.
+ Merge the three lists of headers.
+
+ * prereq.m4 (jm_PREREQ_ADDEXT): New macro. Parts moved here
+ from fileutils' configure.in.
+
+ * decl.m4: Remove kludgy `test -z $ac_...AC_CHECK_HEADERS(...)' code.
+ Moved tests into their own function (_jm_DECL_HEADERS) in check-decl.m4.
+
+ * check-decl.m4: Use #if rather than #ifdef.
+ Add HAVE_DECL_STRTOUL and HAVE_DECL_STRTOULL.
+ (jm_CHECK_DECLARATIONS): Add strtoul strtoull.
+ (_jm_DECL_HEADERS): Define new function.
+ (jm_CHECK_DECLARATIONS): Require it.
+
+2000-01-19 Jim Meyering <jim@meyering.net>
+
+ * nanosleep.m4 (jm_FUNC_NANOSLEEP): Include <sys/time.h>, too.
+ Use AC_HEADER_TIME. Volker Borchert reported that OpenBSD-2.3/sparc
+ defines `struct timespec' in <sys/time.h>
+
+ * c-bs-a.m4: Remove uses of changequote altogether.
+ Thanks to Akim for explaining.
+
+2000-01-16 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4: Require jm_FUNC_GROUP_MEMBER, jm_FUNC_PUTENV,
+ AM_FUNC_ERROR_AT_LINE, jm_FUNC_GNU_STRFTIME, jm_FUNC_MKTIME,
+ jm_FUNC_GETGROUPS AC_FUNC_VPRINTF, AC_FUNC_ALLOCA,
+ AM_FUNC_GETLOADAVG, and jm_SYS_PROC_UPTIME.
+
+2000-01-16 Jim Meyering <jim@meyering.net>
+
+ * c-bs-a.m4: Use `changequote(<<,>>)', rather than `changequote(, )'
+ because the latter didn't work.
+
+2000-01-15 Jim Meyering <jim@meyering.net>
+
+ * jm-macros.m4 (AC_REPLACE_FUNCS): Add gethostname and getusershell.
+ (AC_REPLACE_FUNCS): Add memcpy and memset.
+ Add these, too: stime strcspn stpcpy strstr strtol strtoul.
+ Add strpbrk.
+ Add these: euidaccess memcmp mkdir rmdir rpmatch strndup strverscmp.
+
+2000-01-12 Jim Meyering <jim@meyering.net>
+
+ * prereq.m4 (jm_PREREQ_CANON_HOST): New macro.
+ (jm_PREREQ): Use it.
+ (jm_PREREQ_READUTMP): New macro.
+ (jm_PREREQ): Use it.
+
+2000-01-11 Paul Eggert <eggert@twinsun.com>
+
+ Quote multibyte characters correctly.
+ * c-bs-a.m4: New file.
+ * prereq.m4 (jm_PREREQ_QUOTEARG): New macro.
+ (jm_PREREQ): Use it.
+
+2000-01-11 Paul Eggert <eggert@twinsun.com>
+
+ * uintmax_t.m4: Port to autoconf 2.13.
+
+2000-01-08 Jim Meyering <meyering@ascend.com>
+
+ * strerror_r.m4 (jm_FUNC_STRERROR_R): New file/macro.
+ * jm-macros.m4 (jm_FUNC_STRERROR_R): Require it.
+
+2000-01-04 Jim Meyering <meyering@ascend.com>
+
+ * d-type.m4 (jm_CHECK_TYPE_STRUCT_DIRENT_D_TYPE): Rename from
+ jm_STRUCT_DIRENT_D_TYPE.
+ * d-ino.m4 (jm_CHECK_TYPE_STRUCT_DIRENT_D_INO): Rename from
+ jm_STRUCT_DIRENT_D_INO.
+ * utimbuf.m4 (jm_CHECK_TYPE_STRUCT_UTIMBUF): Rename from
+ jm_STRUCT_UTIMBUF.
+ * jm-macros.m4: Reflect s/jm_STRUCT_/jm_CHECK_TYPE_STRUCT_/ renamings.
+ * utime.m4: Likewise.
+
+ * timespec.m4 (jm_CHECK_TYPE_STRUCT_TIMESPEC): New file, macro.
+ * jm-macros.m4 (jm_CHECK_TYPE_STRUCT_TIMESPEC): Require it.
+
+2000-01-03 Paul Eggert <eggert@twinsun.com>
+
+ * nanosleep.m4 (jm_FUNC_NANOSLEEP): Search for nanosleep in -lrt
+ (for Solaris 7) and in -lposix4 (for Solaris 2.5.1).
+
+2000-01-02 Jim Meyering <meyering@ascend.com>
+
+ * search-libs.m4: Escape `$' in $3 of dnl comment. I no longer
+ remember if this is necessary.
+
+1999-12-26 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4: Use it here.
+ * nanosleep.m4 (jm_FUNC_NANOSLEEP): New file/macro.
+
+1999-12-23 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4: Check for clock_gettime (moved from
+ fileutils/configure.in)
+ Check for gettimeofday.
+
+1999-12-20 Jim Meyering <meyering@ascend.com>
+
+ * strftime.m4: Remove kludge, now that I'm using the fixed
+ autoconf-2.14a-1999-12-20.
+
+1999-12-19 Jim Meyering <meyering@ascend.com>
+
+ * lstat-slash.m4: New file.
+ * jm-macros.m4: Use the new macro:
+ jm_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK.
+
+1999-12-07 Jim Meyering <meyering@ascend.com>
+
+ * perl.m4: Require that File::Compare be available, too.
+ Too many systems seem to lack it.
+
+ * strftime.m4: Add checks for most of the cpp macros tested in
+ GNU's strftime.c. Prompted by a patch from Paul Eggert.
+
+1999-11-18 Paul Eggert <eggert@twinsun.com>
+
+ * largefile.m4 (AC_SYS_LARGEFILE_FLAGS): Work around a
+ problem with the QNX 4.25 shell, which doesn't propagate exit
+ status of failed commands inside shell assignments.
+
+1999-11-17 Jim Meyering <meyering@ascend.com>
+
+ * gettext.m4: Use new AC_CONFIG_LINKS in place of AC_LINK_FILES.
+
+1999-11-07 Jim Meyering <meyering@ascend.com>
+
+ * getloadavg.m4: Add `, 1, [FIXME]' to each use of AC_DEFINE.
+
+1999-11-06 Jim Meyering <meyering@ascend.com>
+
+ * link-follow.m4 (jm_AC_FUNC_LINK_FOLLOWS_SYMLINK): New file/macro.
+ * jm-macros.m4 (jm_MACROS): Use it here.
+
+1999-11-05 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4 (jm_CHECK_ALL_TYPES): Move some tests from configure.in
+ of textutils, fileutils, and sh-utils into this one (shared between
+ those packages) file.
+ Use `AC_CHECK_MEMBERS((struct stat.st_blksize))' instead of deprecated
+ AC_STRUCT_ST_BLKSIZE.
+
+1999-11-03 Jim Meyering <meyering@ascend.com>
+
+ * ssize_t.m4: Remove file. No longer needed since the new version of
+ AC_CHECK_TYPE checks includes unistd.h.
+ * jm-macros.m4: Use straight `AC_CHECK_TYPE(ssize_t, int)'.
+ Suggestion from Akim Demaille.
+
+1999-10-30 Jim Meyering <meyering@ascend.com>
+
+ * uintmax_t.m4: Require 2.14a. Remove backslash before backtick in
+ m4-quoted string.
+ * ls-mntd-fs.m4: Likewise.
+ * jm-macros.m4: Likewise. Also, use AC_TYPE_SSIZE_T instead
+ * jm-winsz1.m4: Likewise.
+
+ * const.m4: Remove file, since the fix made it into the experimental
+ version of autoconf.
+ * mktime.m4: Likewise.
+
+ * check-type.m4: Remove file, now that the latest version of
+ AC_CHECK_TYPE takes a third arg to specify additional #includes.
+
+ * ssize_t.m4: New file, requires experimental version of autoconf.
+ * jm-macros.m4: Use new AC_TYPE_SSIZE_T instead of my hacked
+ AC_CHECK_TYPE.
+
+1999-10-04 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4: Don't require autoconf-2.14.1.
+
+1999-09-22 Paul Eggert <eggert@twinsun.com>
+
+ * largefile.m4 (AC_SYS_LARGEFILE_FLAGS): Work around GCC
+ 2.95.1 bug with HP-UX 10.20.
+
+1999-09-17 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4 (AC_REPLACE_FUNCS): Add strdup.
+ Paul Nevai reported a link failure on a NeXT CUBE with NeXTSTEP 3.3
+ due to missing strdup (against sh-utils-2.0).
+
+1999-08-29 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4: Require jm_BISON.
+ * bison.m4: New file.
+
+1999-08-17 Paul Eggert <eggert@twinsun.com>
+
+ * largefile.m4 (AC_SYS_LARGEFILE): Fix typo: missing comma
+ in value for _FILE_OFFSET_BITS, which broke ports to HP-UX 10.20.
+
+1999-08-05 Jim Meyering <meyering@ascend.com>
+
+ * getline.m4: Rename test file from conftestdata to conftest.data
+ to avoid conflicts with `conftest' on 8+3 filesystems.
+ Suggestion from Eli Zaretskii.
+
+1999-08-04 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4: Move a 4-line block of code from the configure.in of
+ fileutils and sh-utils (textutils's getline test was inadequate).
+ (AM_FUNC_GETLINE): Run this test.
+ (AC_CHECK_FUNCS): Check for getdelim.
+ Reported by Bob Proulx.
+
+1999-08-02 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4: Add a comment.
+
+1999-08-01 Jim Meyering <meyering@ascend.com>
+
+ * mktime.m4 (AC_FUNC_MKTIME): Undefine to avoid syntax errors from m4.
+
+1999-08-01 Paul Eggert <eggert@twinsun.com>
+
+ * lfs.m4: Remove this file.
+ * largefile.m4: New file. It contains the old contents of
+ lfs.m4, except that all names with prefix AC_LFS have been
+ changed to use the prefix AC_SYS_LARGEFILE instead, to be
+ compatible with future autoconf versions. Also, some minor m4
+ quoting problems have been fixed.
+
+1999-07-16 Paul Eggert <eggert@twinsun.com>
+
+ * ulonglong.m4 (jm_AC_TYPE_UNSIGNED_LONG_LONG): Make sure
+ that we can shift, multiply and divide unsigned long long
+ values; Ultrix cc can't do it.
+
+1999-07-14 Paul Eggert <eggert@twinsun.com>
+
+ * xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX): Check whether
+ <inttypes.h> defines strtoumax as a macro (and not as a
+ function).
+
+1999-07-05 Paul Eggert <eggert@twinsun.com>
+
+ * gettext.m4 (AM_WITH_NLS): Remove unnecessary lines.
+ Fix typo: $nls_cv_header_intl was misspelled as $nsl_cv_header_intl.
+ (AM_GNU_GETTEXT): Fix problem with brackets and m4 quoting,
+ and simplify the shell code.
+
+1999-07-03 Paul Eggert <eggert@twinsun.com>
+
+ * mktime.m4: New file, which is a preview of what should appear
+ in the next public autoconf release.
+
+1999-07-20 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4 (AC_REPLACE_FUNCS): Add memmove.
+
+1999-07-15 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4 (AC_CHECK_FUNCS): Check for getpagesize.
+
+1999-05-22 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4 (AC_REPLACE_FUNCS): Add memchr.
+
+1999-05-20 Jim Meyering <meyering@ascend.com>
+
+ * search-libs.m4 [AC_SEARCH_LIBS]: Quote name in undefine.
+ Add a colon after each `then' in case $4 is empty.
+
+1999-05-16 Jim Meyering <meyering@ascend.com>
+
+ * search-libs.m4: New file to override autoconf's AC_SEARCH_LIBS.
+
+1999-05-10 Jim Meyering <meyering@ascend.com>
+
+ * jm-mktime.m4: Reflect renaming: AM_FUNC_MKTIME -> AC_FUNC_MKTIME.
+
+ * jm-macros.m4: Require 2.14.1, since we use newly-renamed
+ AC_FUNC_MKTIME.
+
+1999-05-10 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * jm-mktime.m4, putenv.m4: Fix typos in config.h comments.
+
+1999-05-04 Paul Eggert <eggert@twinsun.com>
+
+ * lfs.m4 (AC_LFS): -n32, -o32, and -n64 should be in CFLAGS,
+ not CPPFLAGS, so that linking works correctly in IRIX.
+
+1999-04-30 Paul Eggert <eggert@twinsun.com>
+
+ * jm-macros.m4 (AC_REPLACE_FUNCS): Add dup2.
+
+1999-04-20 Jim Meyering <meyering@ascend.com>
+
+ * xstrtoumax.m4: Require jm_AC_TYPE_UNSIGNED_LONG_LONG.
+ AC_REPLACE xstroull if necessary. From Paul Eggert.
+ (AC_CHECK_FUNCS): Remove strtoull, strtoumax, strtouq.
+
+1999-04-20 Paul Eggert <eggert@twinsun.com>
+
+ * uintmax_t.m4 (jm_AC_TYPE_UINTMAX_T): Move unsigned long
+ long check into new jm_AC_TYPE_UNSIGNED_LONG_LONG macro.
+ * jm-macros.m4 (jm_CHECK_ALL_TYPES): Require
+ jm_AC_TYPE_UNSIGNED_LONG_LONG.
+ * ulonglong.m4 (jm_AC_TYPE_UNSIGNED_LONG_LONG): New file/macro.
+
+ * lfs.m4: Port to AIX and HP-UX. Support cross-compilation.
+
+1999-04-18 Jim Meyering <meyering@ascend.com>
+
+ * xstrtoumax.m4 (jm_AC_PREREQ_XSTRTOUMAX): New file/macro.
+ * jm-macros.m4: Use it.
+
+1999-04-06 Jim Meyering <meyering@ascend.com>
+
+ * strftime.m4: Remove test for %f.
+
+1999-03-29 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4 (jm_CHECK_ALL_TYPES): New macro, contains the
+ superset of the AC_TYPE_* checks in the textutils, fileutils,
+ and sh-utils, plus AC_TYPE_PID_T. Paul Eggert suggested adding
+ AC_TYPE_PID_T.
+
+1999-03-28 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4: Define GNU_PACKAGE here.
+ Be sure to AC_SUBST it, once again, so that @GNU_PACKAGE@ is
+ replaced e.g., in the *.sh files of the sh-utils.
+
+1999-03-20 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4: s/jm_WITH_REGEX/jm_INCLUDED_REGEX/.
+ * regex.m4 (jm_INCLUDED_REGEX): Rename from jm_WITH_REGEX.
+ Don't depend on AM_GLIBC. Suggestions from Alain Magloire.
+
+1999-03-19 Jim Meyering <meyering@ascend.com>
+
+ * jm-winsz1.m4 (jm_WINSIZE_IN_PTEM): New macro.
+
+1999-03-12 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4: Use AC_FUNC_SETVBUF_REVERSED.
+
+1999-03-07 Jim Meyering <meyering@ascend.com>
+
+ * jm-glibc-io.m4: Use only those *_unlocked macros that are declared.
+
+1999-02-17 Jim Meyering <meyering@ascend.com>
+
+ * gettext.m4 (AM_GNU_GETTEXT): Do `changequote' around use of brackets
+ in macro definition. From Eli Zaretskii and Alain Magloire.
+
+1999-02-07 Jim Meyering <meyering@ascend.com>
+
+ * group-member.m4: New file -- extracted from sh-utils' configure.in.
+
+ 1999-02-05 Eli Zaretskii <eliz@is.elta.co.il>
+ * gettext.m4: Support DOS-style d:/foo/bar absolute file names.
+
+1999-02-06 Jim Meyering <meyering@ascend.com>
+
+ * chown.m4: Use `AC_SUBST(LIBOBJS)' since we set LIBOBJS.
+ * fnmatch.m4: Likewise.
+ * getgroups.m4: Likewise.
+ * lstat.m4: Likewise.
+ * malloc.m4: Likewise.
+ * putenv.m4: Likewise.
+ * realloc.m4: Likewise.
+ * regex.m4: Likewise.
+ * stat.m4: Likewise.
+ * strftime.m4: Likewise.
+ Suggestion from Alain Magloire.
+
+ * chown.m4: Use `.$ac_objext', not `.o'.
+ * fnmatch.m4: Likewise.
+ * getgroups.m4: Likewise.
+ * getline.m4: Likewise.
+ * lstat.m4: Likewise.
+ * malloc.m4: Likewise.
+ * memcmp.m4: Likewise.
+ * putenv.m4: Likewise.
+ * realloc.m4: Likewise.
+ * regex.m4: Likewise.
+ * stat.m4: Likewise.
+ * strftime.m4: Likewise.
+ Suggestion from Alain Magloire.
+
+ * jm-macros.m4: Actually invoke jm_WITH_REGEX now that it requires
+ an argument.
+
+ * regex.m4: Add a run-time Test for proper operation of
+ re_compile_pattern.
+
+1999-01-31 Jim Meyering <meyering@ascend.com>
+
+ * getloadavg.m4: Check for locale.h and the function, setlocale.
+
+1999-01-30 Jim Meyering <meyering@ascend.com>
+
+ * check-type.m4: Use 3-arg form of AC_DEFINE.
+
+ * jm-mktime.m4: Make this a wrapper around the official AM_FUNC_MKTIME
+ rather than my private copy, now that the official one is up to date.
+ * mktime.m4: Remove file.
+
+ * getloadavg.m4: Use 3-arg form of AC_DEFINE.
+ * uptime.m4: Likewise.
+ * uintmax_t.m4: Likewise.
+
+1999-01-28 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4: Use jm_AFS.
+ * afs.m4: New file (from fileutils' configure.in).
+
+ * assert.m4: Use the 3-argument forms of AC_DEFINE* macros.
+ * chown.m4: Likewise.
+ * d-ino.m4: Likewise.
+ * d-type.m4: Likewise.
+ * fnmatch.m4: Likewise.
+ * getgroups.m4: Likewise.
+ * gettext.m4: Likewise.
+ * jm-mktime.m4: Likewise.
+ * jm-winsz2.m4: Likewise.
+ * lcmessage.m4: Likewise.
+ * ls-mntd-fs.m4: Likewise.
+ * malloc.m4: Likewise.
+ * memcmp.m4: Likewise.
+ * putenv.m4: Likewise.
+ * realloc.m4: Likewise.
+ * st_mtim.m4: Likewise.
+ * strftime.m4: Likewise.
+
+1999-01-16 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4 (ARGMATCH_DIE): Define.
+ (ARGMATCH_DIE_DECL): Define.
+
+1999-01-12 Jim Meyering <meyering@ascend.com>
+
+ * Makefile.am.in: Rewrite to avoid using fmt.
+ Reported by Lars Hecking.
+
+1999-01-10 Jim Meyering <meyering@ascend.com>
+
+ * fstypename.m4: Use the new 3-arg form of AC_DEFINE instead of my
+ gross kludge.
+ * inttypes_h.m4: Likewise.
+ * lstat.m4: Likewise.
+ * malloc.m4: Likewise.
+ * readdir.m4: Likewise.
+ * realloc.m4: Likewise.
+ * st_dm_mode.m4: Likewise.
+ * stat.m4: Likewise.
+ * utimbuf.m4: Likewise.
+ * utimes.m4: Likewise.
+
+ * check-decl.m4: Use the new 3-arg form of AC_DEFINE instead of the
+ AC_CHECK_FUNCS hack. Now, it's still a hack, but at least the
+ comments in config.h.in are meaningful.
+
+ * jm-macros.m4: Require autoconf-2.13 here.
+
+ * regex.m4: By default, don't use the included regex.c on systems
+ with glibc 2. Suggestion from Uli Drepper.
+
+1999-01-02 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4: Replace strcasecmp and strncasecmp.
+
+1998-12-18 Jim Meyering <meyering@ascend.com>
+
+ * Makefile.am.in (Makefile.am): Simplify rule.
+ Based on a suggestion from Lars Hecking.
+
+1998-11-16 Jim Meyering <meyering@ascend.com>
+
+ * lfs.m4: Double-quote the `uname...` expression.
+
+1998-11-16 Paul Eggert <eggert@twinsun.com>
+
+ * lfs.m4 (AC_LFS): Add support for HP-UX 10.20 and HP-UX 11.
+
+1998-11-14 Jim Meyering <meyering@ascend.com>
+
+ * lstat.m4: Correct comment. POSIX does not permit it to succeed.
+ * stat.m4: Likewise.
+
+1998-11-03 Jim Meyering <meyering@ascend.com>
+
+ * stat.m4: Rewrite to set HAVE_STAT_EMPTY_STRING_BUG.
+ * lstat.m4: Rewrite to set HAVE_LSTAT_EMPTY_STRING_BUG.
+
+1998-10-18 Jim Meyering <meyering@ascend.com>
+
+ * check-decl.m4 (jm_CHECK_DECL_LOCALTIME_R): Remove macro.
+
+1998-10-17 Jim Meyering <meyering@ascend.com>
+
+ * decl.m4 (jm_CHECK_DECLARATION): Don't hard-code which headers to
+ include, though we still hard-code the `require'-like AC_CHECK_HEADERS
+ calls for those previously hard-coded headers. Instead, take a new
+ parameter.
+ (jm_CHECK_DECLARATIONS): Reflect interface change.
+ * check-decl.m4 (jm_CHECK_DECLS): Likewise.
+ (jm_CHECK_DECL_LOCALTIME_R): New macro.
+
+ * mktime.m4: Test for spring-forward gap before long-running test.
+
+1998-10-14 Jim Meyering <meyering@ascend.com>
+
+ * mktime.m4: Use the more portable "TZ=PST8PDT,M4.1.0,M10.5.0"
+ instead of "TZ=America/Vancouver". From Paul Eggert.
+
+1998-10-11 Jim Meyering <meyering@ascend.com>
+
+ * mktime.m4 (jm_AM_FUNC_MKTIME): New file and macro.
+ This adds a test for a recently added compatibility fix for mktime.c.
+ * jm-mktime.m4: Require jm_AM_FUNC_MKTIME, not AM_FUNC_MKTIME.
+
+1998-09-27 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4 (jm_MACROS): Require jm_FUNC_FNMATCH.
+
+ * fnmatch.m4 (jm_FUNC_FNMATCH): New file/macro. Extracted from
+ ../configure.in, including a change from Gordon Matzigkeit to allow
+ cross-compiling for the Hurd.
+
+ * glibc.m4: New file/macro to test for the GNU C Library
+ versions 1 and 2. From Gordon Matzigkeit.
+ Indent.
+
+1998-09-21 Jim Meyering <meyering@ascend.com>
+
+ * chown.m4: Declare locals: before, after. From Andries Brouwer.
+
+1998-08-18 Paul Eggert <eggert@twinsun.com>
+
+ Port nanosecond-resolution times to UnixWare 2.1.2 and
+ pedantic Solaris 2.6.
+
+ * st_mtim.m4 (AC_STRUCT_ST_MTIM_NSEC): Renamed from
+ AC_STRUCT_ST_MTIM.
+ * st_mtim.m4 (AC_STRUCT_ST_MTIM_NSEC):
+ Generate name of ns member, instead of just 1 or undef.
+ Allow for UnixWare 2.1.2 and Solaris 2.6 if in pedantic mode.
+
+1998-08-15 Jim Meyering <meyering@ascend.com>
+
+ * ssize_t.m4 (jm_TYPE_SSIZE_T): Remove file.
+ * check-type.m4: New file. Replacement for AC_CHECK_TYPE.
+ * jm-macros.m4: Use the new AC_CHECK_TYPE(ssize_t, int)
+ instead of jm_TYPE_SSIZE_T.
+
+1998-08-12 Jim Meyering <meyering@ascend.com>
+
+ * st_dm_mode.m4: New file. From Johan Danielsson.
+
+1998-08-02 Jim Meyering <meyering@ascend.com>
+
+ * st_mtim.m4: Use hack to avoid having to put #undef HAVE_ST_MTIM
+ in acconfig.h manually.
+
+1998-07-31 Paul Eggert <eggert@twinsun.com>
+
+ * st_mtim.m4: New file.
+
+1998-07-28 Jim Meyering <meyering@ascend.com>
+
+ * utimes.m4: Undef stat.
+
+1998-07-25 Jim Meyering <meyering@ascend.com>
+
+ * utime.m4 (jm_FUNC_UTIME): New file and macro.
+ * utimes.m4 (jm_FUNC_UTIMES_NULL): New file and macro.
+
+1998-07-09 Manfred Hollstein <manfred@s-direktnet.de>
+
+ * chown.m4 (jm_FUNC_CHOWN): Add a check to verify that the
+ uid and gid actually remain unchanged.
+
+1998-07-07 Jim Meyering <meyering@ascend.com>
+
+ * jm-glibc-io.m4: Remove fclose_unlocked.
+
+1998-07-04 Jim Meyering <meyering@ascend.com>
+
+ * regex.m4: Use syscmd, ifelse, and sysval. Mainly as an exercise
+ to prove that this macro can be used in packages without regex.c.
+
+1998-07-02 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * gettext.m4 (AM_WITH_NLS): Remove intl/libintl.h if <libintl.h>
+ is to be used.
+
+1998-07-03 Jim Meyering <meyering@ascend.com>
+
+ * gettext.m4: Add -lintl if it's found to be necessary.
+
+ * gettext.m4: New file -- from gettext-0.10.35.
+ * lcmessage.m4: Likewise.
+ * progtest.m4: Likewise.
+
+ * regex.m4 (jm_WITH_REGEX): New file and macro.
+ * jm-macros.m4: Require the new macro.
+
+1998-06-29 Jim Meyering <meyering@ascend.com>
+
+ * fstypename.m4: Include sys/param.h. NetBSD 1.3.1 requires this
+ for the definition of NGROUPS (used in a system header included
+ by sys/mount.h).
+
+1998-06-28 Jim Meyering <meyering@ascend.com>
+
+ * ls-mntd-fs.m4: New file.
+ * fstypename.m4: New file.
+
+ * jm-macros.m4: Require the new macro.
+ * jm-glibc-io.m4: New file.
+
+1998-05-19 Jim Meyering <meyering@ascend.com>
+
+ * jm-macros.m4: Add jm_FUNC_LCHOWN.
+ * lchown.m4: New file.
+
+ * Makefile.am.in: New file.
+ * Makefile.am (Makefile.am): Depend on Makefile.am.in.
+
+1998-05-14 Jim Meyering <meyering@ascend.com>
+
+ * Makefile.am (EXTRA_DIST): Add them.
+ * jm-macros.m4: New file.
+ * utimbuf.m4: New file.
+
+1998-05-12 Jim Meyering <meyering@ascend.com>
+
+ * Makefile.am (EXTRA_DIST): Add isc-posix.m4.
+
+1998-05-11 Jim Meyering <meyering@ascend.com>
+
+ * isc-posix.m4: New file.
+
+1998-05-10 Jim Meyering <meyering@ascend.com>
+
+ * jm-mktime.m4: Use AM_FUNC_MKTIME, now that it's up to date.
+
+1998-05-09 Jim Meyering <meyering@ascend.com>
+
+ * Makefile.am (EXTRA_DIST): Add ssize_t.m4.
+ (EXTRA_DIST): Remove mktime.m4, now that the new version is included
+ with automake.
+
+ * ssize_t.m4: New file.
+ * mktime.m4: Remove file -- the new automake has this now.
+
+1998-04-26 Jim Meyering <meyering@ascend.com>
+
+ * assert.m4: New file.
+ * Makefile.am (EXTRA_DIST): Add assert.m4.
+
+1998-04-05 Jim Meyering <meyering@ascend.com>
+
+ * prereq.m4 (jm_PREREQ_REGEX): New macro.
+ (jm_PREREQ): Use it here.
+
+1998-03-23 Jim Meyering <meyering@eng.ascend.com>
+
+ * inttypes_h.m4: Kludges so I don't have to add HAVE_INTTYPES_H
+ in acconfig.h.
+
+1998-03-15 Jim Meyering <meyering@eng.ascend.com>
+
+ * prereq.m4: New file.
+ * error.m4: New file.
+ * Makefile.am (EXTRA_DIST): Add error.m4 and prereq.m4.
+
+1998-02-07 Jim Meyering <meyering@eng.ascend.com>
+
+ * getline.m4: Don't set am_cv_func_working_getline before the
+ cache-check for the same variable -- that defeated the purpose of
+ the test; the test program was never run. This was a problem only
+ on systems with losing getline functions -- HP-UX 10.20 is one.
+ Reported by Bjorn Helgaas.
+
+1998-02-06 Jim Meyering <meyering@eng.ascend.com>
+
+ * Makefile.am (EXTRA_DIST): Add perl.m4.
+
+1998-01-10 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Makefile.am (EXTRA_DIST): Add const.m4.
+
+ * const.m4: New file. Use an initializer in this declaration
+ typedef int charset[2]; const charset x;
+ Reported by Bob Glickstein.
+
+1997-12-21 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * chown.m4: Fix reversed types on -1 args to chown.
+ From Kaveh Ghazi.
+
+1997-12-14 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * check-decl.m4: s/DECLARATION_/DECL_/g.
+ Add lseek and memchr.
+
+ * decl.m4: s/HAVE_DECLARATION_/HAVE_DECL_/g.
+ T.E.Dickey <dickey@clark.net> said that some older preprocessors
+ have a 20-character limit on names.
+
+1997-11-30 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * inttypes_h.m4: New file.
+ * uintmax_t.m4: New file.
+ * Makefile.am (EXTRA_DIST): Add inttypes_h.m4 and uintmax_t.m4.
+
+
+ -----
+
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+ 2005, 2006 Free Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without
+ modification, are permitted provided the copyright notice
+ and this notice are preserved.
diff --git a/m4/absolute-header.m4 b/m4/absolute-header.m4
new file mode 100644
index 0000000..c649df0
--- /dev/null
+++ b/m4/absolute-header.m4
@@ -0,0 +1,44 @@
+# absolute-header.m4 serial 6
+dnl Copyright (C) 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Derek Price.
+
+# gl_ABSOLUTE_HEADER(HEADER1 HEADER2 ...)
+# ---------------------------------------
+# Find the absolute name of a header file, assuming the header exists.
+# If the header were sys/inttypes.h, this macro would define
+# ABSOLUTE_SYS_INTTYPES_H to the `""' quoted absolute name of sys/inttypes.h
+# in config.h
+# (e.g. `#define ABSOLUTE_SYS_INTTYPES_H "///usr/include/sys/inttypes.h"').
+# The three "///" are to pacify Sun C 5.8, which otherwise would say
+# "warning: #include of /usr/include/... may be non-portable".
+# Use `""', not `<>', so that the /// cannot be confused with a C99 comment.
+AC_DEFUN([gl_ABSOLUTE_HEADER],
+[AC_LANG_PREPROC_REQUIRE()dnl
+AC_FOREACH([gl_HEADER_NAME], [$1],
+ [AS_VAR_PUSHDEF([gl_absolute_header],
+ [gl_cv_absolute_]m4_quote(m4_defn([gl_HEADER_NAME])))dnl
+ AC_CACHE_CHECK([absolute name of <]m4_quote(m4_defn([gl_HEADER_NAME]))[>],
+ m4_quote(m4_defn([gl_absolute_header])),
+ [AS_VAR_PUSHDEF([ac_header_exists],
+ [ac_cv_header_]m4_quote(m4_defn([gl_HEADER_NAME])))dnl
+ AC_CHECK_HEADERS_ONCE(m4_quote(m4_defn([gl_HEADER_NAME])))dnl
+ if test AS_VAR_GET(ac_header_exists) = yes; then
+ AC_LANG_CONFTEST([AC_LANG_SOURCE([[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]])])
+dnl eval is necessary to expand ac_cpp.
+dnl Ultrix and Pyramid sh refuse to redirect output of eval, so use subshell.
+ AS_VAR_SET(gl_absolute_header,
+[`(eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
+sed -n '\#/]m4_quote(m4_defn([gl_HEADER_NAME]))[#{s#.*"\(.*/]m4_quote(m4_defn([gl_HEADER_NAME]))[\)".*#\1#;s#^/[^/]#//&#;p;q;}'`])
+ fi
+ AS_VAR_POPDEF([ac_header_exists])dnl
+ ])dnl
+ AC_DEFINE_UNQUOTED(AS_TR_CPP([ABSOLUTE_]m4_quote(m4_defn([gl_HEADER_NAME]))),
+ ["AS_VAR_GET(gl_absolute_header)"],
+ [Define this to an absolute name of <]m4_quote(m4_defn([gl_HEADER_NAME]))[>.])
+ AS_VAR_POPDEF([gl_absolute_header])dnl
+])dnl
+])# gl_ABSOLUTE_HEADER
diff --git a/m4/acl.m4 b/m4/acl.m4
new file mode 100644
index 0000000..6e6bd08
--- /dev/null
+++ b/m4/acl.m4
@@ -0,0 +1,78 @@
+# acl.m4 - check for access control list (ACL) primitives
+
+# Copyright (C) 2002, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Written by Paul Eggert and Jim Meyering.
+
+AC_DEFUN([AC_FUNC_ACL],
+[
+ AC_LIBOBJ([acl])
+ AC_LIBOBJ([file-has-acl])
+
+ dnl Prerequisites of lib/acl.c.
+ AC_CHECK_HEADERS(sys/acl.h)
+ AC_CHECK_FUNCS(acl)
+ ac_save_LIBS="$LIBS"
+ AC_SEARCH_LIBS(acl_get_file, acl,
+ [test "$ac_cv_search_acl_get_file" = "none required" ||
+ LIB_ACL=$ac_cv_search_acl_get_file])
+ AC_SUBST(LIB_ACL)
+ AC_CHECK_HEADERS(acl/libacl.h)
+ AC_CHECK_FUNCS(acl_get_file acl_get_fd acl_set_file acl_set_fd \
+ acl_free acl_from_mode acl_from_text \
+ acl_delete_def_file acl_extended_file)
+ if test $ac_cv_header_sys_acl_h = yes; then
+ use_acl=1
+ if test $ac_cv_func_acl_get_file = yes; then
+ # If we detect the acl_get_file bug, disable ACL support altogether.
+ gl_ACL_GET_FILE( , [use_acl=0])
+ fi
+ else
+ use_acl=0
+ fi
+ if test $use_acl = 1 &&
+ test $ac_cv_func_acl_get_file = yes &&
+ test $ac_cv_func_acl_free = yes; then
+ AC_REPLACE_FUNCS([acl_entries])
+ fi
+ LIBS="$ac_save_LIBS"
+ if test $use_acl = 1; then
+ ac_save_LIBS="$LIBS"
+ AC_SEARCH_LIBS([acl_trivial], [sec],
+ [AC_DEFINE([HAVE_ACL_TRIVIAL], 1,
+ [Define to 1 if you have the `acl_trivial' function.])
+ test "$ac_cv_search_acl_trivial" = "none required" ||
+ LIB_ACL_TRIVIAL="$ac_cv_search_acl_trivial"])
+ AC_SUBST([LIB_ACL_TRIVIAL])
+ LIBS="$ac_save_LIBS"
+ fi
+ AC_DEFINE_UNQUOTED(USE_ACL, $use_acl,
+ [Define if you want access control list support.])
+])
+
+# gl_ACL_GET_FILE(IF-WORKS, IF-NOT)
+# -------------------------------------
+# If `acl_get_file' works (does not have a particular bug),
+# run IF-WORKS, otherwise, IF-NOT.
+# This tests for a Darwin 8.7.0 bug, whereby acl_get_file returns NULL,
+# but sets errno = ENOENT for an existing file or directory.
+AC_DEFUN([gl_ACL_GET_FILE],
+[
+ AC_CACHE_CHECK([for working acl_get_file], gl_cv_func_working_acl_get_file,
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <sys/types.h>
+ #include <sys/acl.h>
+ #include <errno.h>
+ ]],
+ [[return !! (!acl_get_file (".", ACL_TYPE_ACCESS)
+ && errno == ENOENT);]])],
+ [gl_cv_func_working_acl_get_file=yes],
+ [gl_cv_func_working_acl_get_file=no],
+ [gl_cv_func_working_acl_get_file=cross-compiling])])
+
+ AS_IF([test $gl_cv_func_working_acl_get_file = yes], [$1], [$2])
+])
diff --git a/m4/alloca.m4 b/m4/alloca.m4
new file mode 100644
index 0000000..eb62e0e
--- /dev/null
+++ b/m4/alloca.m4
@@ -0,0 +1,50 @@
+# alloca.m4 serial 7
+dnl Copyright (C) 2002-2004, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_ALLOCA],
+[
+ dnl Work around a bug of AC_EGREP_CPP in autoconf-2.57.
+ AC_REQUIRE([AC_PROG_CPP])
+ AC_REQUIRE([AC_PROG_EGREP])
+
+ AC_REQUIRE([AC_FUNC_ALLOCA])
+ if test $ac_cv_func_alloca_works = no; then
+ gl_PREREQ_ALLOCA
+ fi
+
+ # Define an additional variable used in the Makefile substitution.
+ if test $ac_cv_working_alloca_h = yes; then
+ AC_CACHE_CHECK([for alloca as a compiler built-in], [gl_cv_rpl_alloca], [
+ AC_EGREP_CPP([Need own alloca], [
+#if defined __GNUC__ || defined _AIX || defined _MSC_VER
+ Need own alloca
+#endif
+ ], [gl_cv_rpl_alloca=yes], [gl_cv_rpl_alloca=no])
+ ])
+ if test $gl_cv_rpl_alloca = yes; then
+ dnl OK, alloca can be implemented through a compiler built-in.
+ AC_DEFINE([HAVE_ALLOCA], 1,
+ [Define to 1 if you have 'alloca' after including <alloca.h>,
+ a header that may be supplied by this distribution.])
+ ALLOCA_H=alloca.h
+ else
+ dnl alloca exists as a library function, i.e. it is slow and probably
+ dnl a memory leak. Don't define HAVE_ALLOCA in this case.
+ ALLOCA_H=
+ fi
+ else
+ ALLOCA_H=alloca.h
+ fi
+ AC_SUBST([ALLOCA_H])
+
+ AC_DEFINE(HAVE_ALLOCA_H, 1,
+ [Define HAVE_ALLOCA_H for backward compatibility with older code
+ that includes <alloca.h> only if HAVE_ALLOCA_H is defined.])
+])
+
+# Prerequisites of lib/alloca.c.
+# STACK_DIRECTION is already handled by AC_FUNC_ALLOCA.
+AC_DEFUN([gl_PREREQ_ALLOCA], [:])
diff --git a/m4/allocsa.m4 b/m4/allocsa.m4
new file mode 100644
index 0000000..5a616dc
--- /dev/null
+++ b/m4/allocsa.m4
@@ -0,0 +1,15 @@
+# allocsa.m4 serial 6
+dnl Copyright (C) 2003-2004, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_ALLOCSA],
+[
+ dnl Use the autoconf tests for alloca(), but not the AC_SUBSTed variables
+ dnl @ALLOCA@ and @LTALLOCA@.
+ dnl gl_FUNC_ALLOCA dnl Already brought in by the module dependencies.
+ AC_REQUIRE([gl_EEMALLOC])
+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+ AC_REQUIRE([gt_TYPE_LONGDOUBLE])
+])
diff --git a/m4/argmatch.m4 b/m4/argmatch.m4
new file mode 100644
index 0000000..beda5a1
--- /dev/null
+++ b/m4/argmatch.m4
@@ -0,0 +1,10 @@
+#serial 3
+dnl Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_ARGMATCH],
+[
+ AC_LIBOBJ([argmatch])
+])
diff --git a/m4/arpa_inet_h.m4 b/m4/arpa_inet_h.m4
new file mode 100644
index 0000000..d01d098
--- /dev/null
+++ b/m4/arpa_inet_h.m4
@@ -0,0 +1,18 @@
+# arpa_inet_h.m4 serial 1
+dnl Copyright (C) 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Simon Josefsson
+
+AC_DEFUN([gl_HEADER_ARPA_INET],
+[
+ AC_CHECK_HEADERS_ONCE([arpa/inet.h])
+ if test $ac_cv_header_arpa_inet_h = yes; then
+ ARPA_INET_H=''
+ else
+ ARPA_INET_H='arpa/inet.h'
+ fi
+ AC_SUBST(ARPA_INET_H)
+])
diff --git a/m4/assert.m4 b/m4/assert.m4
new file mode 100644
index 0000000..bfdc00f
--- /dev/null
+++ b/m4/assert.m4
@@ -0,0 +1,19 @@
+#serial 5
+
+# Copyright (C) 1998, 1999, 2001, 2004 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl based on code from Eleftherios Gkioulekas
+
+AC_DEFUN([gl_ASSERT],
+[
+ AC_MSG_CHECKING(whether to enable assertions)
+ AC_ARG_ENABLE(assert,
+ [ --disable-assert turn off assertions],
+ [ AC_MSG_RESULT(no)
+ AC_DEFINE(NDEBUG,1,[Define to 1 if assertions should be disabled.]) ],
+ [ AC_MSG_RESULT(yes) ]
+ )
+])
diff --git a/m4/atexit.m4 b/m4/atexit.m4
new file mode 100644
index 0000000..348912f
--- /dev/null
+++ b/m4/atexit.m4
@@ -0,0 +1,18 @@
+# atexit.m4 serial 2
+dnl Copyright (C) 2002 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_ATEXIT],
+[
+ AC_REPLACE_FUNCS(atexit)
+ if test $ac_cv_func_atexit = no; then
+ gl_PREREQ_ATEXIT
+ fi
+])
+
+# Prerequisites of lib/atexit.c.
+AC_DEFUN([gl_PREREQ_ATEXIT], [
+ :
+])
diff --git a/m4/autobuild.m4 b/m4/autobuild.m4
new file mode 100644
index 0000000..bb3407b
--- /dev/null
+++ b/m4/autobuild.m4
@@ -0,0 +1,34 @@
+# autobuild.m4 serial 2 (autobuild-3.3)
+# Copyright (C) 2004, 2006 Simon Josefsson
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License. As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# This file can be used in projects which are not available under
+# the GNU General Public License or the GNU Library General Public
+# License but which still want to provide support for Autobuild.
+
+# Usage: AB_INIT([MODE]).
+AC_DEFUN([AB_INIT],
+[
+ AC_REQUIRE([AC_CANONICAL_BUILD])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
+ AC_MSG_NOTICE([autobuild project... ${PACKAGE_NAME:-$PACKAGE}])
+ AC_MSG_NOTICE([autobuild revision... ${PACKAGE_VERSION:-$VERSION}])
+ hostname=`hostname`
+ if test "$hostname"; then
+ AC_MSG_NOTICE([autobuild hostname... $hostname])
+ fi
+ ifelse([$1],[],,[AC_MSG_NOTICE([autobuild mode... $1])])
+ date=`date +%Y%m%d-%H%M%S`
+ if test "$?" != 0; then
+ date=`date`
+ fi
+ if test "$date"; then
+ AC_MSG_NOTICE([autobuild timestamp... $date])
+ fi
+])
diff --git a/m4/backupfile.m4 b/m4/backupfile.m4
new file mode 100644
index 0000000..effbce6
--- /dev/null
+++ b/m4/backupfile.m4
@@ -0,0 +1,16 @@
+# backupfile.m4 serial 12
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_BACKUPFILE],
+[
+ AC_LIBOBJ([backupfile])
+
+ dnl Prerequisites of lib/backupfile.c.
+ AC_REQUIRE([gl_CHECK_TYPE_STRUCT_DIRENT_D_INO])
+ AC_REQUIRE([gl_AC_DOS])
+ AC_REQUIRE([AC_SYS_LONG_FILE_NAMES])
+ AC_CHECK_FUNCS_ONCE([pathconf])
+])
diff --git a/m4/base64.m4 b/m4/base64.m4
new file mode 100644
index 0000000..24801ef
--- /dev/null
+++ b/m4/base64.m4
@@ -0,0 +1,16 @@
+# base64.m4 serial 3
+dnl Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_BASE64],
+[
+ gl_PREREQ_BASE64
+])
+
+# Prerequisites of lib/base64.c.
+AC_DEFUN([gl_PREREQ_BASE64], [
+ AC_REQUIRE([AC_C_INLINE])
+ AC_REQUIRE([AC_C_RESTRICT])
+])
diff --git a/m4/bison.m4 b/m4/bison.m4
new file mode 100644
index 0000000..91039b1
--- /dev/null
+++ b/m4/bison.m4
@@ -0,0 +1,24 @@
+#serial 4
+
+# Copyright (C) 2002, 2005 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_BISON],
+[
+ # getdate.y works with bison only.
+ : ${YACC='bison -y'}
+dnl
+dnl Declaring YACC & YFLAGS precious will not be necessary after GNULIB
+dnl requires an Autoconf greater than 2.59c, but it will probably still be
+dnl useful to override the description of YACC in the --help output, re
+dnl getdate.y assuming `bison -y'.
+ AC_ARG_VAR(YACC,
+[The `Yet Another C Compiler' implementation to use. Defaults to `bison -y'.
+Values other than `bison -y' will most likely break on most systems.])dnl
+ AC_ARG_VAR(YFLAGS,
+[YFLAGS contains the list arguments that will be passed by default to Bison.
+This script will default YFLAGS to the empty string to avoid a default value of
+`-d' given by some make applications.])dnl
+])
diff --git a/m4/boottime.m4 b/m4/boottime.m4
new file mode 100644
index 0000000..ad350f1
--- /dev/null
+++ b/m4/boottime.m4
@@ -0,0 +1,65 @@
+# boottime.m4 serial 3
+# Determine whether this system has infrastructure for obtaining the boot time.
+
+# Copyright (C) 1996, 2000, 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# GNULIB_BOOT_TIME([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+* ----------------------------------------------------------
+AC_DEFUN([GNULIB_BOOT_TIME],
+[
+ AC_CHECK_FUNCS(sysctl)
+ AC_CHECK_HEADERS_ONCE(sys/param.h)
+ AC_CHECK_HEADERS(sys/sysctl.h, [], [],
+ [AC_INCLUDES_DEFAULT
+ [#if HAVE_SYS_PARAM_H
+ #include <sys/param.h>
+ #endif]])
+ AC_CHECK_HEADERS_ONCE(utmp.h utmpx.h OS.h)
+ AC_CACHE_CHECK(
+ [whether we can get the system boot time],
+ [gnulib_cv_have_boot_time],
+ [
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+[AC_INCLUDES_DEFAULT
+#if HAVE_SYSCTL && HAVE_SYS_SYSCTL_H
+# if HAVE_SYS_PARAM_H
+# include <sys/param.h> /* needed for OpenBSD 3.0 */
+# endif
+# include <sys/sysctl.h>
+#endif
+#if HAVE_UTMPX_H
+# include <utmpx.h>
+#elif HAVE_UTMP_H
+# include <utmp.h>
+#endif
+#if HAVE_OS_H
+# include <OS.h>
+#endif
+],
+[[
+#if defined BOOT_TIME || (defined CTL_KERN && defined KERN_BOOTTIME) || HAVE_OS_H
+/* your system *does* have the infrastructure to determine boot time */
+#else
+please_tell_us_how_to_determine_boot_time_on_your_system
+#endif
+]])],
+ gnulib_cv_have_boot_time=yes,
+ gnulib_cv_have_boot_time=no)
+ ])
+ AS_IF([test $gnulib_cv_have_boot_time = yes], [$1], [$2])
+])
diff --git a/m4/c-strtod.m4 b/m4/c-strtod.m4
new file mode 100644
index 0000000..7f206c7
--- /dev/null
+++ b/m4/c-strtod.m4
@@ -0,0 +1,53 @@
+# c-strtod.m4 serial 9
+
+# Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Written by Paul Eggert.
+
+AC_DEFUN([gl_C99_STRTOLD],
+[
+ AC_CACHE_CHECK([whether strtold conforms to C99],
+ [gl_cv_func_c99_strtold],
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[/* On HP-UX before 11.23, strtold returns a struct instead of
+ long double. Reject implementations like that, by requiring
+ compatibility with the C99 prototype. */
+ #include <stdlib.h>
+ static long double (*p) (char const *, char **) = strtold;
+ static long double
+ test (char const *nptr, char **endptr)
+ {
+ long double r;
+ r = strtold (nptr, endptr);
+ return r;
+ }]],
+ [[return test ("1.0", NULL) != 1 || p ("1.0", NULL) != 1;]])],
+ [gl_cv_func_c99_strtold=yes],
+ [gl_cv_func_c99_strtold=no])])
+ if test $gl_cv_func_c99_strtold = yes; then
+ AC_DEFINE([HAVE_C99_STRTOLD], 1, [Define to 1 if strtold conforms to C99.])
+ fi
+])
+
+AC_DEFUN([gl_C_STRTOD],
+[
+ AC_LIBOBJ([c-strtod])
+
+ dnl Prerequisites of lib/c-strtod.c.
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ :
+])
+
+AC_DEFUN([gl_C_STRTOLD],
+[
+ AC_LIBOBJ([c-strtold])
+
+ dnl Prerequisites of lib/c-strtold.c.
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_REQUIRE([gl_C99_STRTOLD])
+ :
+])
diff --git a/m4/calloc.m4 b/m4/calloc.m4
new file mode 100644
index 0000000..c109171
--- /dev/null
+++ b/m4/calloc.m4
@@ -0,0 +1,43 @@
+# calloc.m4 serial 6
+
+# Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Written by Jim Meyering.
+
+# Determine whether calloc (N, S) returns non-NULL when N*S is zero,
+# and returns NULL when N*S overflows.
+# If so, define HAVE_CALLOC. Otherwise, define calloc to rpl_calloc
+# and arrange to use a calloc wrapper function that does work in that case.
+
+# _AC_FUNC_CALLOC_IF(IF-WORKS, IF-NOT)
+# -------------------------------------
+# If `calloc (0, 0)' is properly handled, run IF-WORKS, otherwise, IF-NOT.
+AC_DEFUN([_AC_FUNC_CALLOC_IF],
+[AC_REQUIRE([AC_TYPE_SIZE_T])dnl
+AC_CACHE_CHECK([for GNU libc compatible calloc], ac_cv_func_calloc_0_nonnull,
+[AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
+ [exit (!calloc (0, 0) || calloc ((size_t) -1 / 8 + 1, 8));])],
+ [ac_cv_func_calloc_0_nonnull=yes],
+ [ac_cv_func_calloc_0_nonnull=no],
+ [ac_cv_func_calloc_0_nonnull=no])])
+AS_IF([test $ac_cv_func_calloc_0_nonnull = yes], [$1], [$2])
+])# AC_FUNC_CALLOC
+
+
+# AC_FUNC_CALLOC
+# ---------------
+# Report whether `calloc (0, 0)' is properly handled, and replace calloc if
+# needed.
+AC_DEFUN([AC_FUNC_CALLOC],
+[_AC_FUNC_CALLOC_IF(
+ [AC_DEFINE([HAVE_CALLOC], 1,
+ [Define to 1 if your system has a GNU libc compatible `calloc'
+ function, and to 0 otherwise.])],
+ [AC_DEFINE([HAVE_CALLOC], 0)
+ AC_LIBOBJ([calloc])
+ AC_DEFINE([calloc], [rpl_calloc],
+ [Define to rpl_calloc if the replacement function should be used.])])
+])# AC_FUNC_CALLOC
diff --git a/m4/canon-host.m4 b/m4/canon-host.m4
new file mode 100644
index 0000000..906e871
--- /dev/null
+++ b/m4/canon-host.m4
@@ -0,0 +1,15 @@
+# canon-host.m4 serial 9
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_CANON_HOST],
+[
+ AC_LIBOBJ([canon-host])
+ gl_PREREQ_CANON_HOST
+])
+
+AC_DEFUN([gl_PREREQ_CANON_HOST], [
+ :
+])
diff --git a/m4/canonicalize.m4 b/m4/canonicalize.m4
new file mode 100644
index 0000000..817edd5
--- /dev/null
+++ b/m4/canonicalize.m4
@@ -0,0 +1,17 @@
+#serial 12
+
+# Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Written by Jim Meyering.
+
+AC_DEFUN([AC_FUNC_CANONICALIZE_FILE_NAME],
+ [
+ AC_LIBOBJ([canonicalize])
+
+ AC_CHECK_HEADERS_ONCE([sys/param.h])
+ AC_CHECK_DECLS_ONCE([canonicalize_file_name])
+ AC_CHECK_FUNCS_ONCE([canonicalize_file_name resolvepath])
+ ])
diff --git a/m4/chdir-long.m4 b/m4/chdir-long.m4
new file mode 100644
index 0000000..7f34f60
--- /dev/null
+++ b/m4/chdir-long.m4
@@ -0,0 +1,38 @@
+#serial 10
+
+# Use Gnulib's robust chdir function.
+# It can handle arbitrarily long directory names, which means
+# that when it is given the name of an existing directory, it
+# never fails with ENAMETOOLONG.
+# Arrange to compile chdir-long.c only on systems that define PATH_MAX.
+
+dnl Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Jim Meyering.
+
+AC_DEFUN([gl_FUNC_CHDIR_LONG],
+[
+ AC_CACHE_CHECK([whether this system has an arbitrary file name length limit],
+ gl_cv_have_arbitrary_file_name_length_limit,
+ [AC_EGREP_CPP([have_arbitrary_file_name_length_limit],
+ [#include <unistd.h>
+#include <limits.h>
+#if defined PATH_MAX || defined MAXPATHLEN
+have_arbitrary_file_name_length_limit
+#endif],
+ gl_cv_have_arbitrary_file_name_length_limit=yes,
+ gl_cv_have_arbitrary_file_name_length_limit=no)])
+
+ if test $gl_cv_have_arbitrary_file_name_length_limit = yes; then
+ AC_LIBOBJ([chdir-long])
+ gl_PREREQ_CHDIR_LONG
+ fi
+])
+
+AC_DEFUN([gl_PREREQ_CHDIR_LONG],
+[
+ :
+])
diff --git a/m4/check-decl.m4 b/m4/check-decl.m4
new file mode 100644
index 0000000..d520352
--- /dev/null
+++ b/m4/check-decl.m4
@@ -0,0 +1,49 @@
+#serial 23
+# Check declarations for this package.
+
+dnl Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006
+dnl Free Software Foundation, Inc.
+
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+
+dnl This is just a wrapper function to encapsulate this kludge.
+dnl Putting it in a separate file like this helps share it between
+dnl different packages.
+AC_DEFUN([gl_CHECK_DECLS],
+[
+ AC_REQUIRE([AC_HEADER_TIME])
+
+ AC_CHECK_HEADERS_ONCE(grp.h pwd.h)
+ headers='
+#include <sys/types.h>
+
+#include <unistd.h>
+
+#if HAVE_GRP_H
+# include <grp.h>
+#endif
+
+#if HAVE_PWD_H
+# include <pwd.h>
+#endif
+'
+ AC_CHECK_DECLS([
+ getgrgid,
+ getpwuid,
+ ttyname], , , $headers)
+
+ AC_CHECK_DECLS([isblank], [], [], [#include <ctype.h>])
+
+ AC_CHECK_DECLS_ONCE([free])
+ AC_CHECK_DECLS_ONCE([getenv])
+ AC_CHECK_DECLS_ONCE([geteuid])
+ AC_CHECK_DECLS_ONCE([getlogin])
+ AC_CHECK_DECLS_ONCE([getuid])
+ AC_CHECK_DECLS_ONCE([lseek])
+ AC_CHECK_DECLS_ONCE([malloc])
+ AC_CHECK_DECLS_ONCE([memchr])
+ AC_CHECK_DECLS_ONCE([realloc])
+])
diff --git a/m4/chown.m4 b/m4/chown.m4
new file mode 100644
index 0000000..89761f5
--- /dev/null
+++ b/m4/chown.m4
@@ -0,0 +1,83 @@
+#serial 17
+# Determine whether we need the chown wrapper.
+
+dnl Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2007 Free
+dnl Software Foundation, Inc.
+
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# chown should accept arguments of -1 for uid and gid, and it should
+# dereference symlinks. If it doesn't, arrange to use the replacement
+# function.
+
+# From Jim Meyering.
+
+AC_DEFUN([gl_FUNC_CHOWN],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_REQUIRE([AC_TYPE_UID_T])
+ AC_REQUIRE([AC_FUNC_CHOWN])
+ AC_REQUIRE([gl_FUNC_CHOWN_FOLLOWS_SYMLINK])
+
+ if test $ac_cv_func_chown_works = no; then
+ AC_DEFINE(CHOWN_FAILS_TO_HONOR_ID_OF_NEGATIVE_ONE, 1,
+ [Define if chown is not POSIX compliant regarding IDs of -1.])
+ fi
+
+ # If chown has either of the above problems, then we need the wrapper.
+ if test $ac_cv_func_chown_works$gl_cv_func_chown_follows_symlink = yesyes; then
+ : # no wrapper needed
+ else
+ REPLACE_CHOWN=1
+ AC_LIBOBJ(chown)
+ gl_PREREQ_CHOWN
+ fi
+])
+
+# Determine whether chown follows symlinks (it should).
+AC_DEFUN([gl_FUNC_CHOWN_FOLLOWS_SYMLINK],
+[
+ AC_CACHE_CHECK(
+ [whether chown(2) dereferences symlinks],
+ gl_cv_func_chown_follows_symlink,
+ [
+ AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h>
+
+ int
+ main ()
+ {
+ char const *dangling_symlink = "conftest.dangle";
+
+ unlink (dangling_symlink);
+ if (symlink ("conftest.no-such", dangling_symlink))
+ abort ();
+
+ /* Exit successfully on a conforming system,
+ i.e., where chown must fail with ENOENT. */
+ exit ( ! (chown (dangling_symlink, getuid (), getgid ()) != 0
+ && errno == ENOENT));
+ }
+ ]])],
+ [gl_cv_func_chown_follows_symlink=yes],
+ [gl_cv_func_chown_follows_symlink=no],
+ [gl_cv_func_chown_follows_symlink=yes]
+ )
+ ]
+ )
+
+ if test $gl_cv_func_chown_follows_symlink = no; then
+ AC_DEFINE(CHOWN_MODIFIES_SYMLINK, 1,
+ [Define if chown modifies symlinks.])
+ fi
+])
+
+# Prerequisites of lib/chown.c.
+AC_DEFUN([gl_PREREQ_CHOWN],
+[
+ AC_CHECK_FUNC([fchown], , [AC_LIBOBJ(fchown-stub)])
+])
diff --git a/m4/clock_time.m4 b/m4/clock_time.m4
new file mode 100644
index 0000000..227a597
--- /dev/null
+++ b/m4/clock_time.m4
@@ -0,0 +1,30 @@
+# clock_time.m4 serial 8
+dnl Copyright (C) 2002-2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Check for clock_gettime and clock_settime, and set LIB_CLOCK_GETTIME.
+# For a program named, say foo, you should add a line like the following
+# in the corresponding Makefile.am file:
+# foo_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
+
+AC_DEFUN([gl_CLOCK_TIME],
+[
+ dnl Persuade glibc and Solaris <time.h> to declare these functions.
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
+ # Solaris 2.5.1 needs -lposix4 to get the clock_gettime function.
+ # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4.
+
+ # Save and restore LIBS so e.g., -lrt, isn't added to it. Otherwise, *all*
+ # programs in the package would end up linked with that potentially-shared
+ # library, inducing unnecessary run-time overhead.
+ gl_saved_libs=$LIBS
+ AC_SEARCH_LIBS(clock_gettime, [rt posix4],
+ [test "$ac_cv_search_clock_gettime" = "none required" ||
+ LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime])
+ AC_SUBST([LIB_CLOCK_GETTIME])
+ AC_CHECK_FUNCS(clock_gettime clock_settime)
+ LIBS=$gl_saved_libs
+])
diff --git a/m4/cloexec.m4 b/m4/cloexec.m4
new file mode 100644
index 0000000..4c4e26a
--- /dev/null
+++ b/m4/cloexec.m4
@@ -0,0 +1,10 @@
+#serial 6
+dnl Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_CLOEXEC],
+[
+ AC_LIBOBJ([cloexec])
+])
diff --git a/m4/close-stream.m4 b/m4/close-stream.m4
new file mode 100644
index 0000000..b1f9d54
--- /dev/null
+++ b/m4/close-stream.m4
@@ -0,0 +1,13 @@
+#serial 3
+dnl Copyright (C) 2006-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_CLOSE_STREAM],
+[
+ AC_LIBOBJ([close-stream])
+
+ dnl Prerequisites of lib/close-stream.c.
+ :
+])
diff --git a/m4/closeout.m4 b/m4/closeout.m4
new file mode 100644
index 0000000..55a65f0
--- /dev/null
+++ b/m4/closeout.m4
@@ -0,0 +1,13 @@
+# closeout.m4 serial 5
+dnl Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_CLOSEOUT],
+[
+ AC_LIBOBJ([closeout])
+
+ dnl Prerequisites of lib/closeout.c.
+ :
+])
diff --git a/m4/codeset.m4 b/m4/codeset.m4
new file mode 100644
index 0000000..223955b
--- /dev/null
+++ b/m4/codeset.m4
@@ -0,0 +1,21 @@
+# codeset.m4 serial 2 (gettext-0.16)
+dnl Copyright (C) 2000-2002, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([AM_LANGINFO_CODESET],
+[
+ AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
+ [AC_TRY_LINK([#include <langinfo.h>],
+ [char* cs = nl_langinfo(CODESET); return !cs;],
+ am_cv_langinfo_codeset=yes,
+ am_cv_langinfo_codeset=no)
+ ])
+ if test $am_cv_langinfo_codeset = yes; then
+ AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
+ [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
+ fi
+])
diff --git a/m4/config-h.m4 b/m4/config-h.m4
new file mode 100644
index 0000000..807d515
--- /dev/null
+++ b/m4/config-h.m4
@@ -0,0 +1,13 @@
+# Say that -DHAVE_CONFIG_H is not needed.
+
+dnl Copyright (C) 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Paul Eggert.
+
+# This package's source files all include config.h unconditionally,
+# so there's no need to pass -DHAVE_CONFIG_H to the compiler.
+AC_DEFUN([gl_CONFIG_H],
+ [AC_CONFIG_COMMANDS_PRE([test "X$DEFS" = X-DHAVE_CONFIG_H && DEFS=])])
diff --git a/m4/cycle-check.m4 b/m4/cycle-check.m4
new file mode 100644
index 0000000..608f781
--- /dev/null
+++ b/m4/cycle-check.m4
@@ -0,0 +1,11 @@
+#serial 5
+dnl Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_CYCLE_CHECK],
+[
+ AC_REQUIRE([AC_C_INLINE])
+ AC_LIBOBJ([cycle-check])
+])
diff --git a/m4/d-ino.m4 b/m4/d-ino.m4
new file mode 100644
index 0000000..d87b4db
--- /dev/null
+++ b/m4/d-ino.m4
@@ -0,0 +1,35 @@
+#serial 8
+
+dnl From Jim Meyering.
+dnl
+dnl Check whether struct dirent has a member named d_ino.
+dnl
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_CHECK_TYPE_STRUCT_DIRENT_D_INO],
+ [AC_CACHE_CHECK([for d_ino member in directory struct],
+ jm_cv_struct_dirent_d_ino,
+ [AC_TRY_LINK(dnl
+ [
+#include <sys/types.h>
+#include <dirent.h>
+ ],
+ [struct dirent dp; dp.d_ino = 0;],
+
+ jm_cv_struct_dirent_d_ino=yes,
+ jm_cv_struct_dirent_d_ino=no)
+ ]
+ )
+ if test $jm_cv_struct_dirent_d_ino = yes; then
+ AC_DEFINE(D_INO_IN_DIRENT, 1,
+ [Define if there is a member named d_ino in the struct describing
+ directory headers.])
+ fi
+ ]
+)
diff --git a/m4/d-type.m4 b/m4/d-type.m4
new file mode 100644
index 0000000..7675dd2
--- /dev/null
+++ b/m4/d-type.m4
@@ -0,0 +1,35 @@
+#serial 9
+
+dnl From Jim Meyering.
+dnl
+dnl Check whether struct dirent has a member named d_type.
+dnl
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_CHECK_TYPE_STRUCT_DIRENT_D_TYPE],
+ [AC_CACHE_CHECK([for d_type member in directory struct],
+ jm_cv_struct_dirent_d_type,
+ [AC_TRY_LINK(dnl
+ [
+#include <sys/types.h>
+#include <dirent.h>
+ ],
+ [struct dirent dp; dp.d_type = 0;],
+
+ jm_cv_struct_dirent_d_type=yes,
+ jm_cv_struct_dirent_d_type=no)
+ ]
+ )
+ if test $jm_cv_struct_dirent_d_type = yes; then
+ AC_DEFINE(HAVE_STRUCT_DIRENT_D_TYPE, 1,
+ [Define if there is a member named d_type in the struct describing
+ directory headers.])
+ fi
+ ]
+)
diff --git a/m4/dirfd.m4 b/m4/dirfd.m4
new file mode 100644
index 0000000..125966b
--- /dev/null
+++ b/m4/dirfd.m4
@@ -0,0 +1,74 @@
+#serial 14 -*- Autoconf -*-
+
+dnl Find out how to get the file descriptor associated with an open DIR*.
+
+# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+# Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl From Jim Meyering
+
+AC_DEFUN([gl_FUNC_DIRFD],
+[
+ dnl Work around a bug of AC_EGREP_CPP in autoconf-2.57.
+ AC_REQUIRE([AC_PROG_CPP])
+ AC_REQUIRE([AC_PROG_EGREP])
+ AC_CHECK_FUNCS(dirfd)
+ AC_CHECK_DECLS([dirfd], , ,
+ [#include <sys/types.h>
+ #include <dirent.h>])
+
+ AC_CACHE_CHECK([whether dirfd is a macro],
+ gl_cv_func_dirfd_macro,
+ [AC_EGREP_CPP([dirent_header_defines_dirfd], [
+#include <sys/types.h>
+#include <dirent.h>
+#ifdef dirfd
+ dirent_header_defines_dirfd
+#endif],
+ gl_cv_func_dirfd_macro=yes,
+ gl_cv_func_dirfd_macro=no)])
+
+ # Use the replacement only if we have no function, macro,
+ # or declaration with that name.
+ if test $ac_cv_func_dirfd,$ac_cv_have_decl_dirfd,$gl_cv_func_dirfd_macro \
+ = no,no,no; then
+ AC_REPLACE_FUNCS([dirfd])
+ AC_CACHE_CHECK(
+ [how to get the file descriptor associated with an open DIR*],
+ gl_cv_sys_dir_fd_member_name,
+ [
+ dirfd_save_CFLAGS=$CFLAGS
+ for ac_expr in d_fd dd_fd; do
+
+ CFLAGS="$CFLAGS -DDIR_FD_MEMBER_NAME=$ac_expr"
+ AC_TRY_COMPILE(
+ [#include <sys/types.h>
+ #include <dirent.h>],
+ [DIR *dir_p = opendir("."); (void) dir_p->DIR_FD_MEMBER_NAME;],
+ dir_fd_found=yes
+ )
+ CFLAGS=$dirfd_save_CFLAGS
+ test "$dir_fd_found" = yes && break
+ done
+ test "$dir_fd_found" = yes || ac_expr=no_such_member
+
+ gl_cv_sys_dir_fd_member_name=$ac_expr
+ ]
+ )
+ if test $gl_cv_sys_dir_fd_member_name != no_such_member; then
+ AC_DEFINE_UNQUOTED(DIR_FD_MEMBER_NAME,
+ $gl_cv_sys_dir_fd_member_name,
+ [the name of the file descriptor member of DIR])
+ fi
+ AH_VERBATIM(DIR_TO_FD,
+ [#ifdef DIR_FD_MEMBER_NAME
+# define DIR_TO_FD(Dir_p) ((Dir_p)->DIR_FD_MEMBER_NAME)
+#else
+# define DIR_TO_FD(Dir_p) -1
+#endif
+])
+ fi
+])
diff --git a/m4/dirname.m4 b/m4/dirname.m4
new file mode 100644
index 0000000..e35da96
--- /dev/null
+++ b/m4/dirname.m4
@@ -0,0 +1,18 @@
+#serial 7 -*- autoconf -*-
+dnl Copyright (C) 2002-2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_DIRNAME],
+[
+ AC_LIBOBJ([basename])
+ AC_LIBOBJ([dirname])
+ AC_LIBOBJ([stripslash])
+
+ dnl Prerequisites of lib/dirname.h.
+ AC_REQUIRE([gl_AC_DOS])
+ AC_REQUIRE([gl_DOUBLE_SLASH_ROOT])
+
+ dnl No prerequisites of lib/basename.c, lib/dirname.c, lib/stripslash.c.
+])
diff --git a/m4/dos.m4 b/m4/dos.m4
new file mode 100644
index 0000000..dd59571
--- /dev/null
+++ b/m4/dos.m4
@@ -0,0 +1,71 @@
+#serial 10 -*- autoconf -*-
+
+# Define some macros required for proper operation of code in lib/*.c
+# on MSDOS/Windows systems.
+
+# Copyright (C) 2000, 2001, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# From Jim Meyering.
+
+AC_DEFUN([gl_AC_DOS],
+ [
+ AC_CACHE_CHECK([whether system is Windows or MSDOS], [ac_cv_win_or_dos],
+ [
+ AC_TRY_COMPILE([],
+ [#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __CYGWIN__
+neither MSDOS nor Windows
+#endif],
+ [ac_cv_win_or_dos=yes],
+ [ac_cv_win_or_dos=no])
+ ])
+
+ if test x"$ac_cv_win_or_dos" = xyes; then
+ ac_fs_accepts_drive_letter_prefix=1
+ ac_fs_backslash_is_file_name_separator=1
+ AC_CACHE_CHECK([whether drive letter can start relative path],
+ [ac_cv_drive_letter_can_be_relative],
+ [
+ AC_TRY_COMPILE([],
+ [#if defined __CYGWIN__
+drive letters are always absolute
+#endif],
+ [ac_cv_drive_letter_can_be_relative=yes],
+ [ac_cv_drive_letter_can_be_relative=no])
+ ])
+ if test x"$ac_cv_drive_letter_can_be_relative" = xyes; then
+ ac_fs_drive_letter_can_be_relative=1
+ else
+ ac_fs_drive_letter_can_be_relative=0
+ fi
+ else
+ ac_fs_accepts_drive_letter_prefix=0
+ ac_fs_backslash_is_file_name_separator=0
+ ac_fs_drive_letter_can_be_relative=0
+ fi
+
+ AC_DEFINE_UNQUOTED([FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX],
+ $ac_fs_accepts_drive_letter_prefix,
+ [Define on systems for which file names may have a so-called
+ `drive letter' prefix, define this to compute the length of that
+ prefix, including the colon.])
+
+ AH_VERBATIM(ISSLASH,
+ [#if FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+#else
+# define ISSLASH(C) ((C) == '/')
+#endif])
+
+ AC_DEFINE_UNQUOTED([FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR],
+ $ac_fs_backslash_is_file_name_separator,
+ [Define if the backslash character may also serve as a file name
+ component separator.])
+
+ AC_DEFINE_UNQUOTED([FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE],
+ $ac_fs_drive_letter_can_be_relative,
+ [Define if a drive letter prefix denotes a relative path if it is
+ not followed by a file name component separator.])
+ ])
diff --git a/m4/double-slash-root.m4 b/m4/double-slash-root.m4
new file mode 100644
index 0000000..69d60d0
--- /dev/null
+++ b/m4/double-slash-root.m4
@@ -0,0 +1,38 @@
+# double-slash-root.m4 serial 2 -*- Autoconf -*-
+dnl Copyright (C) 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_DOUBLE_SLASH_ROOT],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_CACHE_CHECK([whether // is distinct from /], [gl_cv_double_slash_root],
+ [ if test x"$cross_compiling" = xyes ; then
+ # When cross-compiling, there is no way to tell whether // is special
+ # short of a list of hosts. However, the only known hosts to date
+ # that have a distinct // are Apollo DomainOS (too old to port to),
+ # Cygwin, and z/OS. If anyone knows of another system for which // has
+ # special semantics and is distinct from /, please report it to
+ # <bug-gnulib@gnu.org>.
+ case $host in
+ *-cygwin | i370-ibm-openedition)
+ gl_cv_double_slash_root=yes ;;
+ *)
+ # Be optimistic and assume that / and // are the same when we
+ # don't know.
+ gl_cv_double_slash_root='unknown, assuming no' ;;
+ esac
+ else
+ set x `ls -di / //`
+ if test $[2] = $[4] && wc //dev/null >/dev/null 2>&1; then
+ gl_cv_double_slash_root=no
+ else
+ gl_cv_double_slash_root=yes
+ fi
+ fi])
+ if test "$gl_cv_double_slash_root" = yes; then
+ AC_DEFINE([DOUBLE_SLASH_IS_DISTINCT_ROOT], 1,
+ [Define to 1 if // is a file system root distinct from /.])
+ fi
+])
diff --git a/m4/dup2.m4 b/m4/dup2.m4
new file mode 100644
index 0000000..0549823
--- /dev/null
+++ b/m4/dup2.m4
@@ -0,0 +1,15 @@
+#serial 5
+dnl Copyright (C) 2002, 2005, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_DUP2],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_CHECK_FUNCS_ONCE([dup2])
+ if test $ac_cv_func_dup2 = no; then
+ HAVE_DUP2=0
+ AC_LIBOBJ([dup2])
+ fi
+])
diff --git a/m4/eealloc.m4 b/m4/eealloc.m4
new file mode 100644
index 0000000..adcfd06
--- /dev/null
+++ b/m4/eealloc.m4
@@ -0,0 +1,32 @@
+# eealloc.m4 serial 1
+dnl Copyright (C) 2003 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_EEALLOC],
+[
+ AC_REQUIRE([gl_EEMALLOC])
+ AC_REQUIRE([gl_EEREALLOC])
+ AC_REQUIRE([AC_C_INLINE])
+])
+
+AC_DEFUN([gl_EEMALLOC],
+[
+ _AC_FUNC_MALLOC_IF(
+ [gl_cv_func_malloc_0_nonnull=1],
+ [gl_cv_func_malloc_0_nonnull=0])
+ AC_DEFINE_UNQUOTED([MALLOC_0_IS_NONNULL], $gl_cv_func_malloc_0_nonnull,
+ [If malloc(0) is != NULL, define this to 1. Otherwise define this
+ to 0.])
+])
+
+AC_DEFUN([gl_EEREALLOC],
+[
+ _AC_FUNC_REALLOC_IF(
+ [gl_cv_func_realloc_0_nonnull=1],
+ [gl_cv_func_realloc_0_nonnull=0])
+ AC_DEFINE_UNQUOTED([REALLOC_0_IS_NONNULL], $gl_cv_func_realloc_0_nonnull,
+ [If realloc(NULL,0) is != NULL, define this to 1. Otherwise define this
+ to 0.])
+])
diff --git a/m4/eoverflow.m4 b/m4/eoverflow.m4
new file mode 100644
index 0000000..3bffd10
--- /dev/null
+++ b/m4/eoverflow.m4
@@ -0,0 +1,70 @@
+# eoverflow.m4 serial 2
+dnl Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+# The EOVERFLOW errno value ought to be defined in <errno.h>, according to
+# POSIX. But some systems (like AIX 3) don't define it, and some systems
+# (like OSF/1) define it when _XOPEN_SOURCE_EXTENDED is defined.
+
+# Define EOVERFLOW as a C macro and as a substituted macro in such a way that
+# 1. on all systems, after inclusion of <errno.h>, EOVERFLOW is usable,
+# 2. on systems where EOVERFLOW is defined elsewhere, we use the same numeric
+# value.
+
+AC_DEFUN([gl_EOVERFLOW],
+[
+ AC_REQUIRE([AC_PROG_CC])dnl
+
+ AC_CACHE_CHECK([for EOVERFLOW], ac_cv_decl_EOVERFLOW, [
+ AC_EGREP_CPP(yes,[
+#include <errno.h>
+#ifdef EOVERFLOW
+yes
+#endif
+ ], have_eoverflow=1)
+ if test -n "$have_eoverflow"; then
+ dnl EOVERFLOW exists in <errno.h>. Don't need to define EOVERFLOW ourselves.
+ ac_cv_decl_EOVERFLOW=yes
+ else
+ AC_EGREP_CPP(yes,[
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef EOVERFLOW
+yes
+#endif
+ ], have_eoverflow=1)
+ if test -n "$have_eoverflow"; then
+ dnl EOVERFLOW exists but is hidden.
+ dnl Define it to the same value.
+ AC_COMPUTE_INT([ac_cv_decl_EOVERFLOW], [EOVERFLOW], [
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+])
+ else
+ dnl EOVERFLOW isn't defined by the system. Define EOVERFLOW ourselves, but
+ dnl don't define it as EINVAL, because snprintf() callers want to
+ dnl distinguish EINVAL and EOVERFLOW.
+ ac_cv_decl_EOVERFLOW=E2BIG
+ fi
+ fi
+ ])
+ if test "$ac_cv_decl_EOVERFLOW" != yes; then
+ AC_DEFINE_UNQUOTED([EOVERFLOW], [$ac_cv_decl_EOVERFLOW],
+ [Define as good substitute value for EOVERFLOW.])
+ EOVERFLOW="$ac_cv_decl_EOVERFLOW"
+ AC_SUBST(EOVERFLOW)
+ fi
+])
+
+dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
+dnl Remove this when we can assume autoconf >= 2.61.
+m4_ifdef([AC_COMPUTE_INT], [], [
+ AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
+])
diff --git a/m4/error.m4 b/m4/error.m4
new file mode 100644
index 0000000..7c7746e
--- /dev/null
+++ b/m4/error.m4
@@ -0,0 +1,22 @@
+#serial 11
+
+# Copyright (C) 1996, 1997, 1998, 2001, 2002, 2003, 2004 Free Software
+# Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_ERROR],
+[
+ AC_FUNC_ERROR_AT_LINE
+ dnl Note: AC_FUNC_ERROR_AT_LINE does AC_LIBSOURCES([error.h, error.c]).
+ gl_PREREQ_ERROR
+])
+
+# Prerequisites of lib/error.c.
+AC_DEFUN([gl_PREREQ_ERROR],
+[
+ AC_REQUIRE([AC_FUNC_STRERROR_R])
+ :
+])
diff --git a/m4/euidaccess-stat.m4 b/m4/euidaccess-stat.m4
new file mode 100644
index 0000000..d1c6aed
--- /dev/null
+++ b/m4/euidaccess-stat.m4
@@ -0,0 +1,11 @@
+# serial 1
+dnl Copyright (C) 2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_EUIDACCESS_STAT],
+[
+ AC_LIBSOURCES([euidaccess-stat.c, euidaccess-stat.h])
+ AC_LIBOBJ([euidaccess-stat])
+])
diff --git a/m4/euidaccess.m4 b/m4/euidaccess.m4
new file mode 100644
index 0000000..9edb4b3
--- /dev/null
+++ b/m4/euidaccess.m4
@@ -0,0 +1,47 @@
+# euidaccess.m4 serial 7
+dnl Copyright (C) 2002-2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_NONREENTRANT_EUIDACCESS],
+[
+ AC_REQUIRE([gl_FUNC_EUIDACCESS])
+ AC_DEFINE([PREFER_NONREENTRANT_EUIDACCESS], 1,
+ [Define this if you prefer euidaccess to return the correct result
+ even if this would make it nonreentrant. Define this only if your
+ entire application is safe even if the uid or gid might temporarily
+ change. If your application uses signal handlers or threads it
+ is probably not safe.])
+])
+
+AC_DEFUN([gl_FUNC_EUIDACCESS],
+[
+ dnl Persuade glibc <unistd.h> to declare euidaccess().
+ AC_REQUIRE([AC_GNU_SOURCE])
+
+ AC_CHECK_DECLS_ONCE([euidaccess])
+ AC_REPLACE_FUNCS(euidaccess)
+ if test $ac_cv_func_euidaccess = no; then
+ gl_PREREQ_EUIDACCESS
+ fi
+])
+
+# Prerequisites of lib/euidaccess.c.
+AC_DEFUN([gl_PREREQ_EUIDACCESS], [
+ AC_CHECK_HEADERS_ONCE(libgen.h)
+ AC_CHECK_DECLS_ONCE(setregid)
+ AC_REQUIRE([AC_FUNC_GETGROUPS])
+
+ # Solaris 9 needs -lgen to get the eaccess function.
+ # Save and restore LIBS so -lgen isn't added to it. Otherwise, *all*
+ # programs in the package would end up linked with that potentially-shared
+ # library, inducing unnecessary run-time overhead.
+ gl_saved_libs=$LIBS
+ AC_SEARCH_LIBS(eaccess, [gen],
+ [test "$ac_cv_search_eaccess" = "none required" ||
+ LIB_EACCESS=$ac_cv_search_eaccess])
+ AC_SUBST([LIB_EACCESS])
+ AC_CHECK_FUNCS(eaccess)
+ LIBS=$gl_saved_libs
+])
diff --git a/m4/exclude.m4 b/m4/exclude.m4
new file mode 100644
index 0000000..23727e6
--- /dev/null
+++ b/m4/exclude.m4
@@ -0,0 +1,10 @@
+# exclude.m4 serial 7
+dnl Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_EXCLUDE],
+[
+ AC_LIBOBJ([exclude])
+])
diff --git a/m4/exitfail.m4 b/m4/exitfail.m4
new file mode 100644
index 0000000..b7a691e
--- /dev/null
+++ b/m4/exitfail.m4
@@ -0,0 +1,13 @@
+# exitfail.m4 serial 6
+dnl Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_EXITFAIL],
+[
+ AC_LIBOBJ([exitfail])
+
+ dnl No prerequisites of lib/exitfail.c.
+ :
+])
diff --git a/m4/extensions.m4 b/m4/extensions.m4
new file mode 100644
index 0000000..143a9e5
--- /dev/null
+++ b/m4/extensions.m4
@@ -0,0 +1,58 @@
+# serial 4 -*- Autoconf -*-
+# Enable extensions on systems that normally disable them.
+
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This definition of AC_USE_SYSTEM_EXTENSIONS is stolen from CVS
+# Autoconf. Perhaps we can remove this once we can assume Autoconf
+# 2.61 or later everywhere, but since CVS Autoconf mutates rapidly
+# enough in this area it's likely we'll need to redefine
+# AC_USE_SYSTEM_EXTENSIONS for quite some time.
+
+# AC_USE_SYSTEM_EXTENSIONS
+# ------------------------
+# Enable extensions on systems that normally disable them,
+# typically due to standards-conformance issues.
+AC_DEFUN([AC_USE_SYSTEM_EXTENSIONS],
+[
+ AC_BEFORE([$0], [AC_COMPILE_IFELSE])
+ AC_BEFORE([$0], [AC_RUN_IFELSE])
+
+ AC_REQUIRE([AC_GNU_SOURCE])
+ AC_REQUIRE([AC_AIX])
+ AC_REQUIRE([AC_MINIX])
+
+ AH_VERBATIM([__EXTENSIONS__],
+[/* Enable extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif])
+ AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__],
+ [ac_cv_safe_to_define___extensions__],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([
+# define __EXTENSIONS__ 1
+ AC_INCLUDES_DEFAULT])],
+ [ac_cv_safe_to_define___extensions__=yes],
+ [ac_cv_safe_to_define___extensions__=no])])
+ test $ac_cv_safe_to_define___extensions__ = yes &&
+ AC_DEFINE([__EXTENSIONS__])
+ AC_DEFINE([_POSIX_PTHREAD_SEMANTICS])
+ AC_DEFINE([_TANDEM_SOURCE])
+])
+
+# gl_USE_SYSTEM_EXTENSIONS
+# ------------------------
+# Enable extensions on systems that normally disable them,
+# typically due to standards-conformance issues.
+AC_DEFUN([gl_USE_SYSTEM_EXTENSIONS],
+ [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])])
diff --git a/m4/fchdir.m4 b/m4/fchdir.m4
new file mode 100644
index 0000000..58c933c
--- /dev/null
+++ b/m4/fchdir.m4
@@ -0,0 +1,28 @@
+# fchdir.m4 serial 3
+dnl Copyright (C) 2006-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FCHDIR],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_CHECK_FUNCS_ONCE([fchdir])
+ if test $ac_cv_func_fchdir = no; then
+ REPLACE_FCHDIR=1
+ AC_LIBOBJ([fchdir])
+ gl_PREREQ_FCHDIR
+ AC_DEFINE([FCHDIR_REPLACEMENT], 1,
+ [Define if gnulib's fchdir() replacement is used.])
+ gl_ABSOLUTE_HEADER([dirent.h])
+ ABSOLUTE_DIRENT_H=\"$gl_cv_absolute_dirent_h\"
+ DIRENT_H='dirent.h'
+ else
+ DIRENT_H=
+ fi
+ AC_SUBST([ABSOLUTE_DIRENT_H])
+ AC_SUBST([DIRENT_H])
+])
+
+# Prerequisites of lib/fchdir.c.
+AC_DEFUN([gl_PREREQ_FCHDIR], [:])
diff --git a/m4/fcntl-safer.m4 b/m4/fcntl-safer.m4
new file mode 100644
index 0000000..3475b0a
--- /dev/null
+++ b/m4/fcntl-safer.m4
@@ -0,0 +1,11 @@
+#serial 5
+dnl Copyright (C) 2005-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FCNTL_SAFER],
+[
+ AC_LIBOBJ([open-safer])
+ AC_LIBOBJ([creat-safer])
+])
diff --git a/m4/fcntl_h.m4 b/m4/fcntl_h.m4
new file mode 100644
index 0000000..9846b2f
--- /dev/null
+++ b/m4/fcntl_h.m4
@@ -0,0 +1,81 @@
+# Configure fcntl.h.
+dnl Copyright (C) 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Paul Eggert.
+
+AC_DEFUN([gl_FCNTL_H],
+[
+ AC_CACHE_CHECK([for working fcntl.h], gl_cv_header_working_fcntl_h,
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <sys/types.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
+ #include <fcntl.h>
+ #ifndef O_NOATIME
+ #define O_NOATIME 0
+ #endif
+ #ifndef O_NOFOLLOW
+ #define O_NOFOLLOW 0
+ #endif
+ static int const constants[] =
+ {
+ O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
+ O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
+ };
+ ]],
+ [[
+ int status = !constants;
+ {
+ static char const sym[] = "conftest.sym";
+ if (symlink (".", sym) != 0
+ || close (open (sym, O_RDONLY | O_NOFOLLOW)) == 0)
+ status |= 32;
+ }
+ {
+ static char const file[] = "confdefs.h";
+ int fd = open (file, O_RDONLY | O_NOATIME);
+ char c;
+ struct stat st0, st1;
+ if (fd < 0
+ || fstat (fd, &st0) != 0
+ || sleep (1) != 0
+ || read (fd, &c, 1) != 1
+ || close (fd) != 0
+ || stat (file, &st1) != 0
+ || st0.st_atime != st1.st_atime)
+ status |= 64;
+ }
+ return status;]])],
+ [gl_cv_header_working_fcntl_h=yes],
+ [case $? in #(
+ 32) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
+ 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
+ 96) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
+ *) gl_cv_header_working_fcntl_h='no';;
+ esac],
+ [gl_cv_header_working_fcntl_h=cross-compiling])])
+
+ case $gl_cv_header_working_fcntl_h in #(
+ *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
+ *) ac_val=1;;
+ esac
+ AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val],
+ [Define to 1 if O_NOATIME works.])
+
+ case $gl_cv_header_working_fcntl_h in #(
+ *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
+ *) ac_val=1;;
+ esac
+ AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val],
+ [Define to 1 if O_NOFOLLOW works.])
+
+ gl_ABSOLUTE_HEADER([fcntl.h])
+ ABSOLUTE_FCNTL_H=\"$gl_cv_absolute_fcntl_h\"
+ AC_SUBST([ABSOLUTE_FCNTL_H])
+ FCNTL_H='fcntl.h'
+ AC_SUBST([FCNTL_H])
+])
diff --git a/m4/fd-reopen.m4 b/m4/fd-reopen.m4
new file mode 100644
index 0000000..2d299bd
--- /dev/null
+++ b/m4/fd-reopen.m4
@@ -0,0 +1,15 @@
+# Invoke open, but return either a desired file descriptor or -1.
+
+dnl Copyright (C) 2005 Free Software Foundation, Inc.
+
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Paul Eggert.
+
+AC_DEFUN([gl_FD_REOPEN],
+[
+ AC_LIBSOURCES([fd-reopen.c, fd-reopen.h])
+ AC_LIBOBJ([fd-reopen])
+])
diff --git a/m4/file-type.m4 b/m4/file-type.m4
new file mode 100644
index 0000000..2d0a1d8
--- /dev/null
+++ b/m4/file-type.m4
@@ -0,0 +1,10 @@
+# file-type.m4 serial 6
+dnl Copyright (C) 2002, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FILE_TYPE],
+[
+ AC_LIBOBJ([file-type])
+])
diff --git a/m4/fileblocks.m4 b/m4/fileblocks.m4
new file mode 100644
index 0000000..5fb6311
--- /dev/null
+++ b/m4/fileblocks.m4
@@ -0,0 +1,20 @@
+# fileblocks.m4 serial 4
+dnl Copyright (C) 2002, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FILEBLOCKS],
+[
+ AC_STRUCT_ST_BLOCKS
+ dnl Note: AC_STRUCT_ST_BLOCKS does AC_LIBOBJ(fileblocks).
+ if test $ac_cv_member_struct_stat_st_blocks = no; then
+ gl_PREREQ_FILEBLOCKS
+ fi
+])
+
+# Prerequisites of lib/fileblocks.c.
+AC_DEFUN([gl_PREREQ_FILEBLOCKS], [
+ AC_CHECK_HEADERS_ONCE(sys/param.h)
+ :
+])
diff --git a/m4/filemode.m4 b/m4/filemode.m4
new file mode 100644
index 0000000..64f5cb9
--- /dev/null
+++ b/m4/filemode.m4
@@ -0,0 +1,12 @@
+# filemode.m4 serial 7
+dnl Copyright (C) 2002, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FILEMODE],
+[
+ AC_REQUIRE([AC_STRUCT_ST_DM_MODE])
+ AC_LIBOBJ([filemode])
+ AC_CHECK_DECLS_ONCE([strmode])
+])
diff --git a/m4/filenamecat.m4 b/m4/filenamecat.m4
new file mode 100644
index 0000000..bb46dba
--- /dev/null
+++ b/m4/filenamecat.m4
@@ -0,0 +1,13 @@
+# filenamecat.m4 serial 8
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FILE_NAME_CONCAT],
+[
+ AC_LIBOBJ([filenamecat])
+
+ dnl Prerequisites of lib/filenamecat.c.
+ AC_CHECK_FUNCS_ONCE(mempcpy)
+])
diff --git a/m4/flexmember.m4 b/m4/flexmember.m4
new file mode 100644
index 0000000..eb5f2b1
--- /dev/null
+++ b/m4/flexmember.m4
@@ -0,0 +1,41 @@
+# serial 1
+# Check for flexible array member support.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Written by Paul Eggert.
+
+AC_DEFUN([AC_C_FLEXIBLE_ARRAY_MEMBER],
+[
+ AC_CACHE_CHECK([for flexible array member],
+ ac_cv_c_flexmember,
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <stdlib.h>
+ #include <stdio.h>
+ #include <stddef.h>
+ struct s { int n; double d[]; };]],
+ [[int m = getchar ();
+ struct s *p = malloc (offsetof (struct s, d)
+ + m * sizeof (double));
+ p->d[0] = 0.0;
+ return p->d != (double *) NULL;]])],
+ [ac_cv_c_flexmember=yes],
+ [ac_cv_c_flexmember=no])])
+ if test $ac_cv_c_flexmember = yes; then
+ AC_DEFINE([FLEXIBLE_ARRAY_MEMBER], [],
+ [Define to nothing if C supports flexible array members, and to
+ 1 if it does not. That way, with a declaration like `struct s
+ { int n; double d@<:@FLEXIBLE_ARRAY_MEMBER@:>@; };', the struct hack
+ can be used with pre-C99 compilers.
+ When computing the size of such an object, don't use 'sizeof (struct s)'
+ as it overestimates the size. Use 'offsetof (struct s, d)' instead.
+ Don't use 'offsetof (struct s, d@<:@0@:>@)', as this doesn't work with
+ MSVC and with C++ compilers.])
+ else
+ AC_DEFINE([FLEXIBLE_ARRAY_MEMBER], 1)
+ fi
+])
diff --git a/m4/fnmatch.m4 b/m4/fnmatch.m4
new file mode 100644
index 0000000..3778742
--- /dev/null
+++ b/m4/fnmatch.m4
@@ -0,0 +1,127 @@
+# Check for fnmatch.
+
+# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software
+# Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Autoconf defines AC_FUNC_FNMATCH, but that is obsolescent.
+# New applications should use the macros below instead.
+
+# _AC_FUNC_FNMATCH_IF(STANDARD = GNU | POSIX, CACHE_VAR, IF-TRUE, IF-FALSE)
+# -------------------------------------------------------------------------
+# If a STANDARD compliant fnmatch is found, run IF-TRUE, otherwise
+# IF-FALSE. Use CACHE_VAR.
+AC_DEFUN([_AC_FUNC_FNMATCH_IF],
+[AC_CACHE_CHECK(
+ [for working $1 fnmatch],
+ [$2],
+ [dnl Some versions of Solaris, SCO, and the GNU C Library
+ dnl have a broken or incompatible fnmatch.
+ dnl So we run a test program. If we are cross-compiling, take no chance.
+ dnl Thanks to John Oleynick, François Pinard, and Paul Eggert for this test.
+ AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <fnmatch.h>
+ static int
+ y (char const *pattern, char const *string, int flags)
+ {
+ return fnmatch (pattern, string, flags) == 0;
+ }
+ static int
+ n (char const *pattern, char const *string, int flags)
+ {
+ return fnmatch (pattern, string, flags) == FNM_NOMATCH;
+ }
+ ]],
+ [[char const *Apat = 'A' < '\\\\' ? "[A-\\\\\\\\]" : "[\\\\\\\\-A]";
+ char const *apat = 'a' < '\\\\' ? "[a-\\\\\\\\]" : "[\\\\\\\\-a]";
+ static char const A_1[] = { 'A' - 1, 0 };
+ static char const A01[] = { 'A' + 1, 0 };
+ static char const a_1[] = { 'a' - 1, 0 };
+ static char const a01[] = { 'a' + 1, 0 };
+ static char const bs_1[] = { '\\\\' - 1, 0 };
+ static char const bs01[] = { '\\\\' + 1, 0 };
+ return
+ !(n ("a*", "", 0)
+ && y ("a*", "abc", 0)
+ && n ("d*/*1", "d/s/1", FNM_PATHNAME)
+ && y ("a\\\\bc", "abc", 0)
+ && n ("a\\\\bc", "abc", FNM_NOESCAPE)
+ && y ("*x", ".x", 0)
+ && n ("*x", ".x", FNM_PERIOD)
+ && y (Apat, "\\\\", 0) && y (Apat, "A", 0)
+ && y (apat, "\\\\", 0) && y (apat, "a", 0)
+ && n (Apat, A_1, 0) == ('A' < '\\\\')
+ && n (apat, a_1, 0) == ('a' < '\\\\')
+ && y (Apat, A01, 0) == ('A' < '\\\\')
+ && y (apat, a01, 0) == ('a' < '\\\\')
+ && y (Apat, bs_1, 0) == ('A' < '\\\\')
+ && y (apat, bs_1, 0) == ('a' < '\\\\')
+ && n (Apat, bs01, 0) == ('A' < '\\\\')
+ && n (apat, bs01, 0) == ('a' < '\\\\')
+ && ]m4_if([$1], [GNU],
+ [y ("xxXX", "xXxX", FNM_CASEFOLD)
+ && y ("a++(x|yy)b", "a+xyyyyxb", FNM_EXTMATCH)
+ && n ("d*/*1", "d/s/1", FNM_FILE_NAME)
+ && y ("*", "x", FNM_FILE_NAME | FNM_LEADING_DIR)
+ && y ("x*", "x/y/z", FNM_FILE_NAME | FNM_LEADING_DIR)
+ && y ("*c*", "c/x", FNM_FILE_NAME | FNM_LEADING_DIR)],
+ 1))[;]])],
+ [$2=yes],
+ [$2=no],
+ [$2=cross])])
+AS_IF([test $$2 = yes], [$3], [$4])
+])# _AC_FUNC_FNMATCH_IF
+
+
+# _AC_LIBOBJ_FNMATCH
+# ------------------
+# Prepare the replacement of fnmatch.
+AC_DEFUN([_AC_LIBOBJ_FNMATCH],
+[AC_REQUIRE([AC_FUNC_ALLOCA])dnl
+AC_REQUIRE([AC_TYPE_MBSTATE_T])dnl
+AC_CHECK_DECLS([isblank], [], [], [#include <ctype.h>])
+AC_CHECK_FUNCS_ONCE([btowc iswctype mbsrtowcs mempcpy wmemchr wmemcpy wmempcpy])
+AC_CHECK_HEADERS_ONCE([wctype.h])
+AC_LIBOBJ([fnmatch])
+FNMATCH_H=fnmatch.h
+])# _AC_LIBOBJ_FNMATCH
+
+
+AC_DEFUN([gl_FUNC_FNMATCH_POSIX],
+[
+ FNMATCH_H=
+ _AC_FUNC_FNMATCH_IF([POSIX], [ac_cv_func_fnmatch_posix],
+ [rm -f lib/fnmatch.h],
+ [_AC_LIBOBJ_FNMATCH])
+ if test $ac_cv_func_fnmatch_posix != yes; then
+ dnl We must choose a different name for our function, since on ELF systems
+ dnl a broken fnmatch() in libc.so would override our fnmatch() if it is
+ dnl compiled into a shared library.
+ AC_DEFINE([fnmatch], [posix_fnmatch],
+ [Define to a replacement function name for fnmatch().])
+ fi
+ AC_SUBST([FNMATCH_H])
+])
+
+
+AC_DEFUN([gl_FUNC_FNMATCH_GNU],
+[
+ dnl Persuade glibc <fnmatch.h> to declare FNM_CASEFOLD etc.
+ AC_REQUIRE([AC_GNU_SOURCE])
+
+ FNMATCH_H=
+ _AC_FUNC_FNMATCH_IF([GNU], [ac_cv_func_fnmatch_gnu],
+ [rm -f lib/fnmatch.h],
+ [_AC_LIBOBJ_FNMATCH])
+ if test $ac_cv_func_fnmatch_gnu != yes; then
+ dnl We must choose a different name for our function, since on ELF systems
+ dnl a broken fnmatch() in libc.so would override our fnmatch() if it is
+ dnl compiled into a shared library.
+ AC_DEFINE([fnmatch], [gnu_fnmatch],
+ [Define to a replacement function name for fnmatch().])
+ fi
+ AC_SUBST([FNMATCH_H])
+])
diff --git a/m4/fpending.m4 b/m4/fpending.m4
new file mode 100644
index 0000000..a073483
--- /dev/null
+++ b/m4/fpending.m4
@@ -0,0 +1,78 @@
+#serial 10
+
+# Copyright (C) 2000, 2001, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl From Jim Meyering
+dnl Using code from emacs, based on suggestions from Paul Eggert
+dnl and Ulrich Drepper.
+
+dnl Find out how to determine the number of pending output bytes on a stream.
+dnl glibc (2.1.93 and newer) and Solaris provide __fpending. On other systems,
+dnl we have to grub around in the FILE struct.
+
+AC_DEFUN([gl_FUNC_FPENDING],
+[
+ AC_CHECK_HEADERS_ONCE(stdio_ext.h)
+ AC_REPLACE_FUNCS([__fpending])
+ fp_headers='
+# include <stdio.h>
+# if HAVE_STDIO_EXT_H
+# include <stdio_ext.h>
+# endif
+'
+ AC_CHECK_DECLS([__fpending], , , $fp_headers)
+ if test $ac_cv_func___fpending = no; then
+ AC_CACHE_CHECK(
+ [how to determine the number of pending output bytes on a stream],
+ ac_cv_sys_pending_output_n_bytes,
+ [
+ for ac_expr in \
+ \
+ '# glibc2' \
+ 'fp->_IO_write_ptr - fp->_IO_write_base' \
+ \
+ '# traditional Unix' \
+ 'fp->_ptr - fp->_base' \
+ \
+ '# BSD' \
+ 'fp->_p - fp->_bf._base' \
+ \
+ '# SCO, Unixware' \
+ '(fp->__ptr ? fp->__ptr - fp->__base : 0)' \
+ \
+ '# old glibc?' \
+ 'fp->__bufp - fp->__buffer' \
+ \
+ '# old glibc iostream?' \
+ 'fp->_pptr - fp->_pbase' \
+ \
+ '# VMS' \
+ '(*fp)->_ptr - (*fp)->_base' \
+ \
+ '# e.g., DGUX R4.11; the info is not available' \
+ 1 \
+ ; do
+
+ # Skip each embedded comment.
+ case "$ac_expr" in '#'*) continue;; esac
+
+ AC_TRY_COMPILE(
+ [#include <stdio.h>
+ ],
+ [FILE *fp = stdin; (void) ($ac_expr);],
+ fp_done=yes
+ )
+ test "$fp_done" = yes && break
+ done
+
+ ac_cv_sys_pending_output_n_bytes=$ac_expr
+ ]
+ )
+ AC_DEFINE_UNQUOTED(PENDING_OUTPUT_N_BYTES,
+ $ac_cv_sys_pending_output_n_bytes,
+ [the number of pending output bytes on stream `fp'])
+ fi
+])
diff --git a/m4/fprintftime.m4 b/m4/fprintftime.m4
new file mode 100644
index 0000000..8b088e8
--- /dev/null
+++ b/m4/fprintftime.m4
@@ -0,0 +1,10 @@
+#serial 2
+dnl Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FPRINTFTIME],
+[
+ AC_LIBOBJ([fprintftime])
+])
diff --git a/m4/free.m4 b/m4/free.m4
new file mode 100644
index 0000000..566734b
--- /dev/null
+++ b/m4/free.m4
@@ -0,0 +1,40 @@
+# Check whether free (NULL) is supposed to work.
+
+# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Written by Paul Eggert.
+
+# We can't test for free (NULL) even at runtime, since it might
+# happen to "work" for our test program, but not in general. So, be
+# conservative and use feature tests for relatively modern hosts,
+# where free (NULL) is known to work. This costs a bit of
+# performance on some older hosts, but we can fix that later if
+# needed.
+
+AC_DEFUN([gl_FUNC_FREE],
+[
+ AC_CACHE_CHECK([whether free (NULL) is known to work],
+ [gl_cv_func_free],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[@%:@include <unistd.h>]],
+ [[@%:@if _POSIX_VERSION < 199009L && \
+ (defined unix || defined _unix || defined _unix_ \
+ || defined __unix || defined __unix__)
+ @%:@error "'free (NULL)' is not known to work"
+ @%:@endif]])],
+ [gl_cv_func_free=yes],
+ [gl_cv_func_free=no])])
+
+ if test $gl_cv_func_free = no; then
+ AC_LIBOBJ(free)
+ AC_DEFINE(free, rpl_free,
+ [Define to rpl_free if the replacement function should be used.])
+ fi
+])
+
+# Prerequisites of lib/free.c.
+AC_DEFUN([gl_PREREQ_FREE], [:])
diff --git a/m4/fstypename.m4 b/m4/fstypename.m4
new file mode 100644
index 0000000..aa676f3
--- /dev/null
+++ b/m4/fstypename.m4
@@ -0,0 +1,22 @@
+#serial 6
+
+dnl From Jim Meyering.
+dnl
+dnl See if struct statfs has the f_fstypename member.
+dnl If so, define HAVE_STRUCT_STATFS_F_FSTYPENAME.
+dnl
+
+# Copyright (C) 1998, 1999, 2001, 2004, 2006 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FSTYPENAME],
+[
+ AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,
+ [
+ #include <sys/types.h>
+ #include <sys/param.h>
+ #include <sys/mount.h>
+ ])
+])
diff --git a/m4/fsusage.m4 b/m4/fsusage.m4
new file mode 100644
index 0000000..08bf06c
--- /dev/null
+++ b/m4/fsusage.m4
@@ -0,0 +1,265 @@
+#serial 22
+# Obtaining file system usage information.
+
+# Copyright (C) 1997, 1998, 2000, 2001, 2003, 2004, 2005, 2006 Free Software
+# Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Written by Jim Meyering.
+
+AC_DEFUN([gl_FSUSAGE],
+[
+ AC_CHECK_HEADERS_ONCE(sys/param.h)
+ AC_CHECK_HEADERS_ONCE(sys/vfs.h sys/fs_types.h)
+ AC_CHECK_HEADERS(sys/mount.h, [], [],
+ [AC_INCLUDES_DEFAULT
+ [#if HAVE_SYS_PARAM_H
+ #include <sys/param.h>
+ #endif]])
+ gl_FILE_SYSTEM_USAGE([gl_cv_fs_space=yes], [gl_cv_fs_space=no])
+ if test $gl_cv_fs_space = yes; then
+ AC_LIBOBJ(fsusage)
+ gl_PREREQ_FSUSAGE_EXTRA
+ fi
+])
+
+# Try to determine how a program can obtain file system usage information.
+# If successful, define the appropriate symbol (see fsusage.c) and
+# execute ACTION-IF-FOUND. Otherwise, execute ACTION-IF-NOT-FOUND.
+#
+# gl_FILE_SYSTEM_USAGE([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+
+AC_DEFUN([gl_FILE_SYSTEM_USAGE],
+[
+
+AC_MSG_NOTICE([checking how to get file system space usage])
+ac_fsusage_space=no
+
+# Perform only the link test since it seems there are no variants of the
+# statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
+# because that got a false positive on SCO OSR5. Adding the declaration
+# of a `struct statvfs' causes this test to fail (as it should) on such
+# systems. That system is reported to work fine with STAT_STATFS4 which
+# is what it gets when this test fails.
+if test $ac_fsusage_space = no; then
+ # SVR4
+ AC_CACHE_CHECK([for statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
+ [AC_TRY_LINK([#include <sys/types.h>
+#if defined __GLIBC__ && !defined __BEOS__
+Do not use statvfs on systems with GNU libc, because that function stats
+all preceding entries in /proc/mounts, and that makes df hang if even
+one of the corresponding file systems is hard-mounted, but not available.
+statvfs in GNU libc on BeOS operates differently: it only makes a system
+call.
+#endif
+#include <sys/statvfs.h>],
+ [struct statvfs fsd; statvfs (0, &fsd);],
+ fu_cv_sys_stat_statvfs=yes,
+ fu_cv_sys_stat_statvfs=no)])
+ if test $fu_cv_sys_stat_statvfs = yes; then
+ ac_fsusage_space=yes
+ AC_DEFINE(STAT_STATVFS, 1,
+ [ Define if there is a function named statvfs. (SVR4)])
+ fi
+fi
+
+if test $ac_fsusage_space = no; then
+ # DEC Alpha running OSF/1
+ AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
+ AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
+ [AC_TRY_RUN([
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/mount.h>
+ int
+ main ()
+ {
+ struct statfs fsd;
+ fsd.f_fsize = 0;
+ return statfs (".", &fsd, sizeof (struct statfs)) != 0;
+ }],
+ fu_cv_sys_stat_statfs3_osf1=yes,
+ fu_cv_sys_stat_statfs3_osf1=no,
+ fu_cv_sys_stat_statfs3_osf1=no)])
+ AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
+ if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
+ ac_fsusage_space=yes
+ AC_DEFINE(STAT_STATFS3_OSF1, 1,
+ [ Define if statfs takes 3 args. (DEC Alpha running OSF/1)])
+ fi
+fi
+
+if test $ac_fsusage_space = no; then
+# AIX
+ AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
+member (AIX, 4.3BSD)])
+ AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
+ [AC_TRY_RUN([
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+#ifdef HAVE_SYS_VFS_H
+#include <sys/vfs.h>
+#endif
+ int
+ main ()
+ {
+ struct statfs fsd;
+ fsd.f_bsize = 0;
+ return statfs (".", &fsd) != 0;
+ }],
+ fu_cv_sys_stat_statfs2_bsize=yes,
+ fu_cv_sys_stat_statfs2_bsize=no,
+ fu_cv_sys_stat_statfs2_bsize=no)])
+ AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
+ if test $fu_cv_sys_stat_statfs2_bsize = yes; then
+ ac_fsusage_space=yes
+ AC_DEFINE(STAT_STATFS2_BSIZE, 1,
+[ Define if statfs takes 2 args and struct statfs has a field named f_bsize.
+ (4.3BSD, SunOS 4, HP-UX, AIX PS/2)])
+ fi
+fi
+
+if test $ac_fsusage_space = no; then
+# SVR3
+ AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
+ AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
+ [AC_TRY_RUN([#include <sys/types.h>
+#include <sys/statfs.h>
+ int
+ main ()
+ {
+ struct statfs fsd;
+ return statfs (".", &fsd, sizeof fsd, 0) != 0;
+ }],
+ fu_cv_sys_stat_statfs4=yes,
+ fu_cv_sys_stat_statfs4=no,
+ fu_cv_sys_stat_statfs4=no)])
+ AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
+ if test $fu_cv_sys_stat_statfs4 = yes; then
+ ac_fsusage_space=yes
+ AC_DEFINE(STAT_STATFS4, 1,
+ [ Define if statfs takes 4 args. (SVR3, Dynix, Irix, Dolphin)])
+ fi
+fi
+
+if test $ac_fsusage_space = no; then
+# 4.4BSD and NetBSD
+ AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
+member (4.4BSD and NetBSD)])
+ AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
+ [AC_TRY_RUN([#include <sys/types.h>
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+ int
+ main ()
+ {
+ struct statfs fsd;
+ fsd.f_fsize = 0;
+ return statfs (".", &fsd) != 0;
+ }],
+ fu_cv_sys_stat_statfs2_fsize=yes,
+ fu_cv_sys_stat_statfs2_fsize=no,
+ fu_cv_sys_stat_statfs2_fsize=no)])
+ AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
+ if test $fu_cv_sys_stat_statfs2_fsize = yes; then
+ ac_fsusage_space=yes
+ AC_DEFINE(STAT_STATFS2_FSIZE, 1,
+[ Define if statfs takes 2 args and struct statfs has a field named f_fsize.
+ (4.4BSD, NetBSD)])
+ fi
+fi
+
+if test $ac_fsusage_space = no; then
+ # Ultrix
+ AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
+ AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
+ [AC_TRY_RUN([#include <sys/types.h>
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+#ifdef HAVE_SYS_FS_TYPES_H
+#include <sys/fs_types.h>
+#endif
+ int
+ main ()
+ {
+ struct fs_data fsd;
+ /* Ultrix's statfs returns 1 for success,
+ 0 for not mounted, -1 for failure. */
+ return statfs (".", &fsd) != 1;
+ }],
+ fu_cv_sys_stat_fs_data=yes,
+ fu_cv_sys_stat_fs_data=no,
+ fu_cv_sys_stat_fs_data=no)])
+ AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
+ if test $fu_cv_sys_stat_fs_data = yes; then
+ ac_fsusage_space=yes
+ AC_DEFINE(STAT_STATFS2_FS_DATA, 1,
+[ Define if statfs takes 2 args and the second argument has
+ type struct fs_data. (Ultrix)])
+ fi
+fi
+
+if test $ac_fsusage_space = no; then
+ # SVR2
+ AC_TRY_CPP([#include <sys/filsys.h>
+ ],
+ AC_DEFINE(STAT_READ_FILSYS, 1,
+ [Define if there is no specific function for reading file systems usage
+ information and you have the <sys/filsys.h> header file. (SVR2)])
+ ac_fsusage_space=yes)
+fi
+
+AS_IF([test $ac_fsusage_space = yes], [$1], [$2])
+
+])
+
+
+# Check for SunOS statfs brokenness wrt partitions 2GB and larger.
+# If <sys/vfs.h> exists and struct statfs has a member named f_spare,
+# enable the work-around code in fsusage.c.
+AC_DEFUN([gl_STATFS_TRUNCATES],
+[
+ AC_MSG_CHECKING([for statfs that truncates block counts])
+ AC_CACHE_VAL(fu_cv_sys_truncating_statfs,
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#if !defined(sun) && !defined(__sun)
+choke -- this is a workaround for a Sun-specific problem
+#endif
+#include <sys/types.h>
+#include <sys/vfs.h>]],
+ [[struct statfs t; long c = *(t.f_spare);
+ if (c) return 0;]])],
+ [fu_cv_sys_truncating_statfs=yes],
+ [fu_cv_sys_truncating_statfs=no])])
+ if test $fu_cv_sys_truncating_statfs = yes; then
+ AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS, 1,
+ [Define if the block counts reported by statfs may be truncated to 2GB
+ and the correct values may be stored in the f_spare array.
+ (SunOS 4.1.2, 4.1.3, and 4.1.3_U1 are reported to have this problem.
+ SunOS 4.1.1 seems not to be affected.)])
+ fi
+ AC_MSG_RESULT($fu_cv_sys_truncating_statfs)
+])
+
+
+# Prerequisites of lib/fsusage.c not done by gl_FILE_SYSTEM_USAGE.
+AC_DEFUN([gl_PREREQ_FSUSAGE_EXTRA],
+[
+ AC_CHECK_HEADERS(dustat.h sys/fs/s5param.h sys/filsys.h sys/statfs.h)
+ gl_STATFS_TRUNCATES
+])
diff --git a/m4/ftruncate.m4 b/m4/ftruncate.m4
new file mode 100644
index 0000000..b7f346a
--- /dev/null
+++ b/m4/ftruncate.m4
@@ -0,0 +1,46 @@
+#serial 13
+
+# See if we need to emulate a missing ftruncate function using fcntl or chsize.
+
+# Copyright (C) 2000, 2001, 2003-2007 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# FIXME: remove this macro, along with all uses of HAVE_FTRUNCATE in 2010,
+# if the check below provokes no more reports. So far, the only report
+# arose from a test build of this gnulib module, cross-compiling to mingw:
+# <http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/9203>
+
+AC_DEFUN([gl_FUNC_FTRUNCATE],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_CHECK_FUNCS_ONCE([ftruncate])
+ if test $ac_cv_func_ftruncate = no; then
+ HAVE_FTRUNCATE=0
+ AC_LIBOBJ([ftruncate])
+ gl_PREREQ_FTRUNCATE
+ case "$host_os" in
+ mingw*)
+ # Yes, we know mingw lacks ftruncate.
+ ;;
+ *)
+ # If someone lacks ftruncate, make configure fail, and request
+ # a bug report to inform us about it.
+ if test x"$SKIP_FTRUNCATE_CHECK" != xyes; then
+ AC_MSG_FAILURE([Your system lacks the ftruncate function.
+ Please report this, along with the output of "uname -a", to the
+ bug-coreutils@gnu.org mailing list. To continue past this point,
+ rerun configure with SKIP_FTRUNCATE_CHECK=yes.
+ E.g., ./configure SKIP_FTRUNCATE_CHECK=yes])
+ fi
+ esac
+ fi
+])
+
+# Prerequisites of lib/ftruncate.c.
+AC_DEFUN([gl_PREREQ_FTRUNCATE],
+[
+ AC_CHECK_FUNCS(chsize)
+])
diff --git a/m4/fts.m4 b/m4/fts.m4
new file mode 100644
index 0000000..cceb48f
--- /dev/null
+++ b/m4/fts.m4
@@ -0,0 +1,28 @@
+#serial 13
+dnl Copyright (C) 2005-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_FTS],
+[
+ gl_FUNC_FTS_CORE
+])
+
+AC_DEFUN([gl_FUNC_FTS_LGPL],
+[
+ gl_FUNC_FTS_CORE
+])
+
+AC_DEFUN([gl_FUNC_FTS_CORE],
+[
+ dnl Use this version of fts unconditionally, since the GNU libc and
+ dnl NetBSD versions have bugs and/or unnecessary limitations.
+ AC_LIBOBJ([fts])
+
+ dnl Prerequisites of lib/fts.c.
+ gl_FUNC_OPENAT
+
+ # Checks for header files.
+ AC_CHECK_HEADERS_ONCE([sys/param.h])dnl
+])
diff --git a/m4/getaddrinfo.m4 b/m4/getaddrinfo.m4
new file mode 100644
index 0000000..db285d9
--- /dev/null
+++ b/m4/getaddrinfo.m4
@@ -0,0 +1,88 @@
+# getaddrinfo.m4 serial 11
+dnl Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_GETADDRINFO],
+[
+ AC_MSG_NOTICE([checking how to do getaddrinfo, freeaddrinfo and getnameinfo])
+
+ AC_SEARCH_LIBS(getaddrinfo, [nsl socket])
+ AC_CHECK_FUNCS(getaddrinfo,, [
+ AC_CACHE_CHECK(for getaddrinfo in ws2tcpip.h and -lws2_32,
+ gl_cv_w32_getaddrinfo, [
+ gl_cv_w32_getaddrinfo=no
+ am_save_LIBS="$LIBS"
+ LIBS="$LIBS -lws2_32"
+ AC_TRY_LINK([
+#ifdef HAVE_WS2TCPIP_H
+#include <ws2tcpip.h>
+#endif
+], [getaddrinfo(0, 0, 0, 0);], gl_cv_w32_getaddrinfo=yes)
+ LIBS="$am_save_LIBS"])
+ if test "$gl_cv_w32_getaddrinfo" = "yes"; then
+ LIBS="$LIBS -lws2_32"
+ else
+ AC_LIBOBJ(getaddrinfo)
+ fi
+ ])
+
+ AC_REPLACE_FUNCS(gai_strerror)
+ gl_PREREQ_GETADDRINFO
+])
+
+# Prerequisites of lib/getaddrinfo.h and lib/getaddrinfo.c.
+AC_DEFUN([gl_PREREQ_GETADDRINFO], [
+ AC_SEARCH_LIBS(gethostbyname, [inet nsl])
+ AC_SEARCH_LIBS(getservbyname, [inet nsl socket xnet])
+ AC_CHECK_FUNCS(gethostbyname,, [
+ AC_CACHE_CHECK(for gethostbyname in winsock2.h and -lws2_32,
+ gl_cv_w32_gethostbyname, [
+ gl_cv_w32_gethostbyname=no
+ am_save_LIBS="$LIBS"
+ LIBS="$LIBS -lws2_32"
+ AC_TRY_LINK([
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
+], [gethostbyname(0);], gl_cv_w32_gethostbyname=yes)
+ LIBS="$am_save_LIBS"])
+ if test "$gl_cv_w32_gethostbyname" = "yes"; then
+ LIBS="$LIBS -lws2_32"
+ fi
+ ])
+ AC_REQUIRE([AC_C_RESTRICT])
+ AC_REQUIRE([gl_SOCKET_FAMILIES])
+ AC_REQUIRE([gl_HEADER_SYS_SOCKET])
+ AC_REQUIRE([AC_C_INLINE])
+ AC_REQUIRE([AC_GNU_SOURCE])
+ AC_CHECK_HEADERS_ONCE(netinet/in.h netdb.h)
+ AC_CHECK_DECLS([getaddrinfo, freeaddrinfo, gai_strerror, getnameinfo],,,[
+ /* sys/types.h is not needed according to POSIX, but the
+ sys/socket.h in i386-unknown-freebsd4.10 and
+ powerpc-apple-darwin5.5 required it. */
+#include <sys/types.h>
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_WS2TCPIP_H
+#include <ws2tcpip.h>
+#endif
+])
+ AC_CHECK_TYPES([struct addrinfo],,,[
+#include <sys/types.h>
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_WS2TCPIP_H
+#include <ws2tcpip.h>
+#endif
+])
+])
diff --git a/m4/getcwd-abort-bug.m4 b/m4/getcwd-abort-bug.m4
new file mode 100644
index 0000000..a431a7c
--- /dev/null
+++ b/m4/getcwd-abort-bug.m4
@@ -0,0 +1,106 @@
+#serial 1
+# Determine whether getcwd aborts when the length of the working directory
+# name is unusually large. Any length between 4k and 16k trigger the bug
+# when using glibc-2.4.90-9 or older.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# From Jim Meyering
+
+# gl_FUNC_GETCWD_ABORT_BUG([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+AC_DEFUN([gl_FUNC_GETCWD_ABORT_BUG],
+[
+ AC_CHECK_DECLS_ONCE(getcwd)
+ AC_CHECK_FUNCS(getpagesize)
+ AC_CACHE_CHECK([whether getcwd aborts when 4k < cwd_length < 16k],
+ gl_cv_func_getcwd_abort_bug,
+ [# Remove any remnants of a previous test.
+ rm -rf confdir-14B---
+ # Arrange for deletion of the temporary directory this test creates.
+ ac_clean_files="$ac_clean_files confdir-14B---"
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE(
+ [[
+#include <stdlib.h>
+#include <unistd.h>
+#include <limits.h>
+#include <string.h>
+#include <sys/stat.h>
+
+/* Don't get link errors because mkdir is redefined to rpl_mkdir. */
+#undef mkdir
+
+#ifndef S_IRWXU
+# define S_IRWXU 0700
+#endif
+
+/* FIXME: skip the run-test altogether on systems without getpagesize. */
+#if ! HAVE_GETPAGESIZE
+# define getpagesize() 0
+#endif
+
+/* This size is chosen to be larger than PATH_MAX (4k), yet smaller than
+ the 16kB pagesize on ia64 linux. Those conditions make the code below
+ trigger a bug in glibc's getcwd implementation before 2.4.90-10. */
+#define TARGET_LEN (5 * 1024)
+
+int
+main ()
+{
+ char const *dir_name = "confdir-14B---";
+ char *cwd;
+ size_t initial_cwd_len;
+ int fail = 0;
+ size_t desired_depth;
+ size_t d;
+
+ /* The bug is triggered when PATH_MAX < getpagesize (), so skip
+ this relative expensive and invasive test if that's not true. */
+ if (getpagesize () <= PATH_MAX)
+ return 0;
+
+ cwd = getcwd (NULL, 0);
+ if (cwd == NULL)
+ return 0;
+
+ initial_cwd_len = strlen (cwd);
+ free (cwd);
+ desired_depth = ((TARGET_LEN - 1 - initial_cwd_len)
+ / (1 + strlen (dir_name)));
+ for (d = 0; d < desired_depth; d++)
+ {
+ if (mkdir (dir_name, S_IRWXU) < 0 || chdir (dir_name) < 0)
+ {
+ fail = 3; /* Unable to construct deep hierarchy. */
+ break;
+ }
+ }
+
+ /* If libc has the bug in question, this invocation of getcwd
+ results in a failed assertion. */
+ cwd = getcwd (NULL, 0);
+ if (cwd == NULL)
+ fail = 4; /* getcwd failed. This is ok, and expected. */
+ free (cwd);
+
+ /* Call rmdir first, in case the above chdir failed. */
+ rmdir (dir_name);
+ while (0 < d--)
+ {
+ if (chdir ("..") < 0)
+ break;
+ rmdir (dir_name);
+ }
+
+ return 0;
+}
+ ]])],
+ [gl_cv_func_getcwd_abort_bug=no],
+ [gl_cv_func_getcwd_abort_bug=yes],
+ [gl_cv_func_getcwd_abort_bug=yes])
+ ])
+ AS_IF([test $gl_cv_func_getcwd_abort_bug = yes], [$1], [$2])
+])
diff --git a/m4/getcwd-path-max.m4 b/m4/getcwd-path-max.m4
new file mode 100644
index 0000000..3d0af87
--- /dev/null
+++ b/m4/getcwd-path-max.m4
@@ -0,0 +1,189 @@
+#serial 12
+# Check for several getcwd bugs with long file names.
+# If so, arrange to compile the wrapper function.
+
+# This is necessary for at least GNU libc on linux-2.4.19 and 2.4.20.
+# I've heard that this is due to a Linux kernel bug, and that it has
+# been fixed between 2.4.21-pre3 and 2.4.21-pre4. */
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# From Jim Meyering
+
+AC_DEFUN([gl_FUNC_GETCWD_PATH_MAX],
+[
+ AC_CHECK_DECLS_ONCE(getcwd)
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_CACHE_CHECK([whether getcwd handles long file names properly],
+ gl_cv_func_getcwd_path_max,
+ [# Arrange for deletion of the temporary directory this test creates.
+ ac_clean_files="$ac_clean_files confdir3"
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE(
+ [[
+#include <errno.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <limits.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+
+#ifndef AT_FDCWD
+# define AT_FDCWD 0
+#endif
+#ifdef ENAMETOOLONG
+# define is_ENAMETOOLONG(x) ((x) == ENAMETOOLONG)
+#else
+# define is_ENAMETOOLONG(x) 0
+#endif
+
+/* Don't get link errors because mkdir is redefined to rpl_mkdir. */
+#undef mkdir
+
+#ifndef S_IRWXU
+# define S_IRWXU 0700
+#endif
+
+/* The length of this name must be 8. */
+#define DIR_NAME "confdir3"
+#define DIR_NAME_LEN 8
+#define DIR_NAME_SIZE (DIR_NAME_LEN + 1)
+
+/* The length of "../". */
+#define DOTDOTSLASH_LEN 3
+
+/* Leftover bytes in the buffer, to work around library or OS bugs. */
+#define BUF_SLOP 20
+
+int
+main ()
+{
+#ifndef PATH_MAX
+ /* The Hurd doesn't define this, so getcwd can't exhibit the bug --
+ at least not on a local file system. And if we were to start worrying
+ about remote file systems, we'd have to enable the wrapper function
+ all of the time, just to be safe. That's not worth the cost. */
+ exit (0);
+#elif ((INT_MAX / (DIR_NAME_SIZE / DOTDOTSLASH_LEN + 1) \
+ - DIR_NAME_SIZE - BUF_SLOP) \
+ <= PATH_MAX)
+ /* FIXME: Assuming there's a system for which this is true,
+ this should be done in a compile test. */
+ exit (0);
+#else
+ char buf[PATH_MAX * (DIR_NAME_SIZE / DOTDOTSLASH_LEN + 1)
+ + DIR_NAME_SIZE + BUF_SLOP];
+ char *cwd = getcwd (buf, PATH_MAX);
+ size_t initial_cwd_len;
+ size_t cwd_len;
+ int fail = 0;
+ size_t n_chdirs = 0;
+
+ if (cwd == NULL)
+ exit (1);
+
+ cwd_len = initial_cwd_len = strlen (cwd);
+
+ while (1)
+ {
+ size_t dotdot_max = PATH_MAX * (DIR_NAME_SIZE / DOTDOTSLASH_LEN);
+ char *c = NULL;
+
+ cwd_len += DIR_NAME_SIZE;
+ /* If mkdir or chdir fails, it could be that this system cannot create
+ any file with an absolute name longer than PATH_MAX, such as cygwin.
+ If so, leave fail as 0, because the current working directory can't
+ be too long for getcwd if it can't even be created. For other
+ errors, be pessimistic and consider that as a failure, too. */
+ if (mkdir (DIR_NAME, S_IRWXU) < 0 || chdir (DIR_NAME) < 0)
+ {
+ if (! (errno == ERANGE || is_ENAMETOOLONG (errno)))
+ fail = 2;
+ break;
+ }
+
+ if (PATH_MAX <= cwd_len && cwd_len < PATH_MAX + DIR_NAME_SIZE)
+ {
+ c = getcwd (buf, PATH_MAX);
+ if (!c && errno == ENOENT)
+ {
+ fail = 1;
+ break;
+ }
+ if (c || ! (errno == ERANGE || is_ENAMETOOLONG (errno)))
+ {
+ fail = 2;
+ break;
+ }
+ }
+
+ if (dotdot_max <= cwd_len - initial_cwd_len)
+ {
+ if (dotdot_max + DIR_NAME_SIZE < cwd_len - initial_cwd_len)
+ break;
+ c = getcwd (buf, cwd_len + 1);
+ if (!c)
+ {
+ if (! (errno == ERANGE || errno == ENOENT
+ || is_ENAMETOOLONG (errno)))
+ {
+ fail = 2;
+ break;
+ }
+ if (AT_FDCWD || errno == ERANGE || errno == ENOENT)
+ {
+ fail = 1;
+ break;
+ }
+ }
+ }
+
+ if (c && strlen (c) != cwd_len)
+ {
+ fail = 2;
+ break;
+ }
+ ++n_chdirs;
+ }
+
+ /* Leaving behind such a deep directory is not polite.
+ So clean up here, right away, even though the driving
+ shell script would also clean up. */
+ {
+ size_t i;
+
+ /* Try rmdir first, in case the chdir failed. */
+ rmdir (DIR_NAME);
+ for (i = 0; i <= n_chdirs; i++)
+ {
+ if (chdir ("..") < 0)
+ break;
+ rmdir (DIR_NAME);
+ }
+ }
+
+ exit (fail);
+#endif
+}
+ ]])],
+ [gl_cv_func_getcwd_path_max=yes],
+ [case $? in
+ 1) gl_cv_func_getcwd_path_max='no, but it is partly working';;
+ *) gl_cv_func_getcwd_path_max=no;;
+ esac],
+ [gl_cv_func_getcwd_path_max=no])
+ ])
+ case $gl_cv_func_getcwd_path_max in
+ no,*)
+ AC_DEFINE([HAVE_PARTLY_WORKING_GETCWD], 1,
+ [Define to 1 if getcwd works, except it sometimes fails when it shouldn't,
+ setting errno to ERANGE, ENAMETOOLONG, or ENOENT. If __GETCWD_PREFIX
+ is not defined, it doesn't matter whether HAVE_PARTLY_WORKING_GETCWD
+ is defined.]);;
+ esac
+])
diff --git a/m4/getcwd.m4 b/m4/getcwd.m4
new file mode 100644
index 0000000..6ebe2fc
--- /dev/null
+++ b/m4/getcwd.m4
@@ -0,0 +1,64 @@
+# getcwd.m4 - check for working getcwd that is compatible with glibc
+
+# Copyright (C) 2001, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Written by Paul Eggert.
+
+AC_DEFUN([gl_FUNC_GETCWD_NULL],
+ [
+ AC_CACHE_CHECK([whether getcwd (NULL, 0) allocates memory for result],
+ [gl_cv_func_getcwd_null],
+ [AC_TRY_RUN(
+ [
+# include <stdlib.h>
+# include <unistd.h>
+# ifndef getcwd
+ char *getcwd ();
+# endif
+ int
+ main ()
+ {
+ if (chdir ("/") != 0)
+ exit (1);
+ else
+ {
+ char *f = getcwd (NULL, 0);
+ exit (! (f && f[0] == '/' && !f[1]));
+ }
+ }],
+ [gl_cv_func_getcwd_null=yes],
+ [gl_cv_func_getcwd_null=no],
+ [gl_cv_func_getcwd_null=no])])
+])
+
+AC_DEFUN([gl_FUNC_GETCWD],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_GETCWD_NULL])
+
+ gl_abort_bug=no
+ case $gl_cv_func_getcwd_null in
+ yes)
+ gl_FUNC_GETCWD_PATH_MAX
+ gl_FUNC_GETCWD_ABORT_BUG([gl_abort_bug=yes]);;
+ esac
+
+ case $gl_cv_func_getcwd_null,$gl_cv_func_getcwd_path_max,$gl_abort_bug in
+ yes,yes,no) ;;
+ *)
+ REPLACE_GETCWD=1
+ AC_LIBOBJ([getcwd])
+ gl_PREREQ_GETCWD;;
+ esac
+])
+
+# Prerequisites of lib/getcwd.c.
+AC_DEFUN([gl_PREREQ_GETCWD],
+[
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_REQUIRE([gl_CHECK_TYPE_STRUCT_DIRENT_D_INO])
+ :
+])
diff --git a/m4/getdate.m4 b/m4/getdate.m4
new file mode 100644
index 0000000..d160329
--- /dev/null
+++ b/m4/getdate.m4
@@ -0,0 +1,33 @@
+# getdate.m4 serial 12
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_C_COMPOUND_LITERALS],
+[
+ AC_CACHE_CHECK([for compound literals], gl_cv_compound_literals,
+ [AC_TRY_COMPILE([struct s { int i, j; }; struct s s = (struct s) { 1, 2 };],
+ [struct s t = (struct s) { 3, 4 };
+ if (t.i != 0) return 0;],
+ gl_cv_compound_literals=yes,
+ gl_cv_compound_literals=no)])
+ if test $gl_cv_compound_literals = yes; then
+ AC_DEFINE(HAVE_COMPOUND_LITERALS, 1,
+ [Define if you have compound literals.])
+ fi
+])
+
+AC_DEFUN([gl_GETDATE],
+[
+ dnl Prerequisites of lib/getdate.h.
+ AC_REQUIRE([AM_STDBOOL_H])
+ AC_REQUIRE([gl_TIMESPEC])
+
+ dnl Prerequisites of lib/getdate.y.
+ AC_REQUIRE([gl_BISON])
+ AC_REQUIRE([gl_C_COMPOUND_LITERALS])
+ AC_STRUCT_TIMEZONE
+ AC_REQUIRE([gl_CLOCK_TIME])
+ AC_REQUIRE([gl_TM_GMTOFF])
+])
diff --git a/m4/getdelim.m4 b/m4/getdelim.m4
new file mode 100644
index 0000000..2a738f6
--- /dev/null
+++ b/m4/getdelim.m4
@@ -0,0 +1,29 @@
+# getdelim.m4 serial 2
+
+dnl Copyright (C) 2005, 2006 Free Software dnl Foundation, Inc.
+dnl
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_PREREQ(2.52)
+
+AC_DEFUN([gl_FUNC_GETDELIM],
+[
+
+ dnl Persuade glibc <stdio.h> to declare getdelim().
+ AC_REQUIRE([AC_GNU_SOURCE])
+
+ AC_REPLACE_FUNCS(getdelim)
+ AC_CHECK_DECLS_ONCE(getdelim)
+
+ if test $ac_cv_func_getdelim = no; then
+ gl_PREREQ_GETDELIM
+ fi
+])
+
+# Prerequisites of lib/getdelim.c.
+AC_DEFUN([gl_PREREQ_GETDELIM],
+[
+ AC_CHECK_FUNCS([flockfile funlockfile])
+])
diff --git a/m4/getgroups.m4 b/m4/getgroups.m4
new file mode 100644
index 0000000..edc2bde
--- /dev/null
+++ b/m4/getgroups.m4
@@ -0,0 +1,29 @@
+#serial 10
+
+dnl From Jim Meyering.
+dnl A wrapper around AC_FUNC_GETGROUPS.
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004 Free
+# Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_GETGROUPS],
+[
+ AC_REQUIRE([AC_FUNC_GETGROUPS])
+ if test $ac_cv_func_getgroups_works = no; then
+ AC_LIBOBJ(getgroups)
+ AC_DEFINE(getgroups, rpl_getgroups,
+ [Define as rpl_getgroups if getgroups doesn't work right.])
+ gl_PREREQ_GETGROUPS
+ fi
+ test -n "$GETGROUPS_LIB" && LIBS="$GETGROUPS_LIB $LIBS"
+])
+
+# Prerequisites of lib/getgroups.c.
+AC_DEFUN([gl_PREREQ_GETGROUPS],
+[
+ AC_REQUIRE([AC_TYPE_GETGROUPS])
+])
diff --git a/m4/gethostname.m4 b/m4/gethostname.m4
new file mode 100644
index 0000000..1e9749d
--- /dev/null
+++ b/m4/gethostname.m4
@@ -0,0 +1,18 @@
+# gethostname.m4 serial 2
+dnl Copyright (C) 2002 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_GETHOSTNAME],
+[
+ AC_REPLACE_FUNCS(gethostname)
+ if test $ac_cv_func_gethostname = no; then
+ gl_PREREQ_GETHOSTNAME
+ fi
+])
+
+# Prerequisites of lib/gethostname.c.
+AC_DEFUN([gl_PREREQ_GETHOSTNAME], [
+ AC_CHECK_FUNCS(uname)
+])
diff --git a/m4/gethrxtime.m4 b/m4/gethrxtime.m4
new file mode 100644
index 0000000..b596fec
--- /dev/null
+++ b/m4/gethrxtime.m4
@@ -0,0 +1,74 @@
+# gethrxtime.m4 serial 6
+dnl Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Paul Eggert.
+
+AC_DEFUN([gl_GETHRXTIME],
+[
+ AC_REQUIRE([gl_ARITHMETIC_HRTIME_T])
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_REQUIRE([gl_XTIME])
+ AC_CHECK_DECLS([gethrtime], [], [], [#include <time.h>])
+ case $ac_cv_have_decl_gethrtime,$gl_cv_arithmetic_hrtime_t in
+ yes,yes) ;;
+ *)
+ AC_LIBOBJ([gethrxtime])
+ gl_PREREQ_GETHRXTIME;;
+ esac
+])
+
+# Test whether hrtime_t is an arithmetic type.
+# It is not arithmetic in older Solaris c89 (which insists on
+# not having a long long int type).
+AC_DEFUN([gl_ARITHMETIC_HRTIME_T],
+[
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_CACHE_CHECK([for arithmetic hrtime_t], gl_cv_arithmetic_hrtime_t,
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([#include <time.h>],
+ [hrtime_t x = 0; return x/x;])],
+ [gl_cv_arithmetic_hrtime_t=yes],
+ [gl_cv_arithmetic_hrtime_t=no])])
+ if test $gl_cv_arithmetic_hrtime_t = yes; then
+ AC_DEFINE([HAVE_ARITHMETIC_HRTIME_T], 1,
+ [Define if you have an arithmetic hrtime_t type.])
+ fi
+])
+
+# Prerequisites of lib/xtime.h.
+AC_DEFUN([gl_XTIME],
+[
+ AC_REQUIRE([AC_C_INLINE])
+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+ :
+])
+
+# Prerequisites of lib/gethrxtime.c.
+AC_DEFUN([gl_PREREQ_GETHRXTIME],
+[
+ AC_REQUIRE([gl_CLOCK_TIME])
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_CHECK_FUNCS_ONCE(microuptime nanouptime)
+
+ if test $ac_cv_func_nanouptime != yes; then
+ LIB_GETHRXTIME=
+ AC_CACHE_CHECK([whether CLOCK_MONOTONIC or CLOCK_REALTIME is defined],
+ gl_cv_have_clock_gettime_macro,
+ [AC_EGREP_CPP([have_clock_gettime_macro],
+ [
+# include <time.h>
+# if defined CLOCK_MONOTONIC || defined CLOCK_REALTIME
+ have_clock_gettime_macro
+# endif
+ ],
+ gl_cv_have_clock_gettime_macro=yes,
+ gl_cv_have_clock_gettime_macro=no)])
+ if test $gl_cv_have_clock_gettime_macro = yes; then
+ LIB_GETHRXTIME=$LIB_CLOCK_GETTIME
+ fi
+ AC_SUBST([LIB_GETHRXTIME])
+ fi
+])
diff --git a/m4/getline.m4 b/m4/getline.m4
new file mode 100644
index 0000000..5b55c30
--- /dev/null
+++ b/m4/getline.m4
@@ -0,0 +1,79 @@
+# getline.m4 serial 15
+
+dnl Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006 Free Software
+dnl Foundation, Inc.
+dnl
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_PREREQ(2.52)
+
+dnl See if there's a working, system-supplied version of the getline function.
+dnl We can't just do AC_REPLACE_FUNCS(getline) because some systems
+dnl have a function by that name in -linet that doesn't have anything
+dnl to do with the function we need.
+AC_DEFUN([gl_FUNC_GETLINE],
+[
+ dnl Persuade glibc <stdio.h> to declare getline().
+ AC_REQUIRE([AC_GNU_SOURCE])
+
+ AC_CHECK_DECLS([getline])
+
+ gl_getline_needs_run_time_check=no
+ AC_CHECK_FUNC(getline,
+ dnl Found it in some library. Verify that it works.
+ gl_getline_needs_run_time_check=yes,
+ am_cv_func_working_getline=no)
+ if test $gl_getline_needs_run_time_check = yes; then
+ AC_CACHE_CHECK([for working getline function], am_cv_func_working_getline,
+ [echo fooN |tr -d '\012'|tr N '\012' > conftest.data
+ AC_TRY_RUN([
+# include <stdio.h>
+# include <stdlib.h>
+# include <string.h>
+ int main ()
+ { /* Based on a test program from Karl Heuer. */
+ char *line = NULL;
+ size_t siz = 0;
+ int len;
+ FILE *in = fopen ("./conftest.data", "r");
+ if (!in)
+ return 1;
+ len = getline (&line, &siz, in);
+ exit ((len == 4 && line && strcmp (line, "foo\n") == 0) ? 0 : 1);
+ }
+ ], am_cv_func_working_getline=yes dnl The library version works.
+ , am_cv_func_working_getline=no dnl The library version does NOT work.
+ , dnl We're cross compiling. Assume it works on glibc2 systems.
+ [AC_EGREP_CPP([Lucky GNU user],
+ [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ >= 2)
+ Lucky GNU user
+ #endif
+#endif
+ ],
+ [am_cv_func_working_getline=yes],
+ [am_cv_func_working_getline=no])]
+ )])
+ fi
+
+ if test $am_cv_func_working_getline = no; then
+ dnl We must choose a different name for our function, since on ELF systems
+ dnl a broken getline() in libc.so would override our getline() in
+ dnl libgettextlib.so.
+ AC_DEFINE([getline], [gnu_getline],
+ [Define to a replacement function name for getline().])
+ AC_LIBOBJ(getline)
+
+ gl_PREREQ_GETLINE
+ fi
+])
+
+# Prerequisites of lib/getline.c.
+AC_DEFUN([gl_PREREQ_GETLINE],
+[
+ gl_FUNC_GETDELIM
+])
diff --git a/m4/getloadavg.m4 b/m4/getloadavg.m4
new file mode 100644
index 0000000..8243729
--- /dev/null
+++ b/m4/getloadavg.m4
@@ -0,0 +1,155 @@
+# Check for getloadavg.
+
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2002, 2003,
+# 2006 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Autoconf defines AC_FUNC_GETLOADAVG, but that is obsolescent.
+# New applications should use gl_GETLOADAVG instead.
+
+# gl_GETLOADAVG(LIBOBJDIR)
+# ------------------------
+AC_DEFUN([gl_GETLOADAVG],
+[gl_have_func=no # yes means we've found a way to get the load average.
+
+# Make sure getloadavg.c is where it belongs, at configure-time.
+test -f "$srcdir/$1/getloadavg.c" ||
+ AC_MSG_ERROR([$srcdir/$1/getloadavg.c is missing])
+
+gl_save_LIBS=$LIBS
+
+# Check for getloadavg, but be sure not to touch the cache variable.
+(AC_CHECK_FUNC(getloadavg, exit 0, exit 1)) && gl_have_func=yes
+
+# On HPUX9, an unprivileged user can get load averages through this function.
+AC_CHECK_FUNCS(pstat_getdynamic)
+
+# Solaris has libkstat which does not require root.
+AC_CHECK_LIB(kstat, kstat_open)
+test $ac_cv_lib_kstat_kstat_open = yes && gl_have_func=yes
+
+# Some systems with -lutil have (and need) -lkvm as well, some do not.
+# On Solaris, -lkvm requires nlist from -lelf, so check that first
+# to get the right answer into the cache.
+# For kstat on solaris, we need libelf to force the definition of SVR4 below.
+if test $gl_have_func = no; then
+ AC_CHECK_LIB(elf, elf_begin, LIBS="-lelf $LIBS")
+fi
+if test $gl_have_func = no; then
+ AC_CHECK_LIB(kvm, kvm_open, LIBS="-lkvm $LIBS")
+ # Check for the 4.4BSD definition of getloadavg.
+ AC_CHECK_LIB(util, getloadavg,
+ [LIBS="-lutil $LIBS" gl_have_func=yes gl_cv_func_getloadavg_setgid=yes])
+fi
+
+if test $gl_have_func = no; then
+ # There is a commonly available library for RS/6000 AIX.
+ # Since it is not a standard part of AIX, it might be installed locally.
+ gl_getloadavg_LIBS=$LIBS
+ LIBS="-L/usr/local/lib $LIBS"
+ AC_CHECK_LIB(getloadavg, getloadavg,
+ [LIBS="-lgetloadavg $LIBS"], [LIBS=$gl_getloadavg_LIBS])
+fi
+
+# Make sure it is really in the library, if we think we found it,
+# otherwise set up the replacement function.
+AC_CHECK_FUNCS(getloadavg, [],
+ [gl_PREREQ_GETLOADAVG])
+
+# Some definitions of getloadavg require that the program be installed setgid.
+AC_CACHE_CHECK(whether getloadavg requires setgid,
+ gl_cv_func_getloadavg_setgid,
+[AC_EGREP_CPP([Yowza Am I SETGID yet],
+[#define CONFIGURING_GETLOADAVG
+#include "$srcdir/$1/getloadavg.c"
+#ifdef LDAV_PRIVILEGED
+Yowza Am I SETGID yet
+#endif
+],
+ gl_cv_func_getloadavg_setgid=yes,
+ gl_cv_func_getloadavg_setgid=no)])
+if test $gl_cv_func_getloadavg_setgid = yes; then
+ NEED_SETGID=true
+ AC_DEFINE(GETLOADAVG_PRIVILEGED, 1,
+ [Define to 1 if the `getloadavg' function needs to be run setuid
+ or setgid.])
+else
+ NEED_SETGID=false
+fi
+AC_SUBST(NEED_SETGID)dnl
+
+if test $gl_cv_func_getloadavg_setgid = yes; then
+ AC_CACHE_CHECK(group of /dev/kmem, gl_cv_group_kmem,
+[ # On Solaris, /dev/kmem is a symlink. Get info on the real file.
+ ac_ls_output=`ls -lgL /dev/kmem 2>/dev/null`
+ # If we got an error (system does not support symlinks), try without -L.
+ test -z "$ac_ls_output" && ac_ls_output=`ls -lg /dev/kmem`
+ gl_cv_group_kmem=`echo $ac_ls_output \
+ | sed -ne ['s/[ ][ ]*/ /g
+ s/^.[sSrwx-]* *[0-9]* *\([^0-9]*\) *.*/\1/
+ / /s/.* //;p']`
+])
+ AC_SUBST(KMEM_GROUP, $gl_cv_group_kmem)dnl
+fi
+if test "x$gl_save_LIBS" = x; then
+ GETLOADAVG_LIBS=$LIBS
+else
+ GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"`
+fi
+LIBS=$gl_save_LIBS
+
+AC_SUBST(GETLOADAVG_LIBS)dnl
+])# gl_GETLOADAVG
+
+
+# gl_PREREQ_GETLOADAVG
+# --------------------
+# Set up the AC_LIBOBJ replacement of `getloadavg'.
+AC_DEFUN([gl_PREREQ_GETLOADAVG],
+[AC_LIBOBJ(getloadavg)
+AC_DEFINE(C_GETLOADAVG, 1, [Define to 1 if using `getloadavg.c'.])
+# Figure out what our getloadavg.c needs.
+gl_have_func=no
+AC_CHECK_HEADER(sys/dg_sys_info.h,
+[gl_have_func=yes
+ AC_DEFINE(DGUX, 1, [Define to 1 for DGUX with <sys/dg_sys_info.h>.])
+ AC_CHECK_LIB(dgc, dg_sys_info)])
+
+# We cannot check for <dwarf.h>, because Solaris 2 does not use dwarf (it
+# uses stabs), but it is still SVR4. We cannot check for <elf.h> because
+# Irix 4.0.5F has the header but not the library.
+if test $gl_have_func = no && test "$ac_cv_lib_elf_elf_begin" = yes; then
+ gl_have_func=yes
+ AC_DEFINE(SVR4, 1, [Define to 1 on System V Release 4.])
+fi
+
+if test $gl_have_func = no; then
+ AC_CHECK_HEADER(inq_stats/cpustats.h,
+ [gl_have_func=yes
+ AC_DEFINE(UMAX, 1, [Define to 1 for Encore UMAX.])
+ AC_DEFINE(UMAX4_3, 1,
+ [Define to 1 for Encore UMAX 4.3 that has <inq_status/cpustats.h>
+ instead of <sys/cpustats.h>.])])
+fi
+
+if test $gl_have_func = no; then
+ AC_CHECK_HEADER(sys/cpustats.h,
+ [gl_have_func=yes; AC_DEFINE(UMAX)])
+fi
+
+if test $gl_have_func = no; then
+ AC_CHECK_HEADERS(mach/mach.h)
+fi
+
+AC_CHECK_HEADERS(nlist.h,
+[AC_CHECK_MEMBERS([struct nlist.n_un.n_name],
+ [AC_DEFINE(NLIST_NAME_UNION, 1,
+ [Define to 1 if your `struct nlist' has an
+ `n_un' member. Obsolete, depend on
+ `HAVE_STRUCT_NLIST_N_UN_N_NAME])], [],
+ [@%:@include <nlist.h>])
+])dnl
+])# gl_PREREQ_GETLOADAVG
diff --git a/m4/getndelim2.m4 b/m4/getndelim2.m4
new file mode 100644
index 0000000..f0e7ae2
--- /dev/null
+++ b/m4/getndelim2.m4
@@ -0,0 +1,19 @@
+# getndelim2.m4 serial 5
+dnl Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_GETNDELIM2],
+[
+ AC_LIBOBJ(getndelim2)
+ gl_PREREQ_GETNDELIM2
+])
+
+# Prerequisites of lib/getndelim2.h and lib/getndelim2.c.
+AC_DEFUN([gl_PREREQ_GETNDELIM2],
+[
+ dnl Prerequisites of lib/getndelim2.h.
+ AC_REQUIRE([gt_TYPE_SSIZE_T])
+ dnl No prerequisites of lib/getndelim2.c.
+])
diff --git a/m4/getopt.m4 b/m4/getopt.m4
new file mode 100644
index 0000000..c0a73b2
--- /dev/null
+++ b/m4/getopt.m4
@@ -0,0 +1,83 @@
+# getopt.m4 serial 13
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# The getopt module assume you want GNU getopt, with getopt_long etc,
+# rather than vanilla POSIX getopt. This means your code should
+# always include <getopt.h> for the getopt prototypes.
+
+AC_DEFUN([gl_GETOPT_SUBSTITUTE],
+[
+ AC_LIBOBJ([getopt])
+ AC_LIBOBJ([getopt1])
+ gl_GETOPT_SUBSTITUTE_HEADER
+ gl_PREREQ_GETOPT
+])
+
+AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER],
+[
+ GETOPT_H=getopt.h
+ AC_DEFINE([__GETOPT_PREFIX], [[rpl_]],
+ [Define to rpl_ if the getopt replacement functions and variables
+ should be used.])
+ AC_SUBST([GETOPT_H])
+])
+
+AC_DEFUN([gl_GETOPT_CHECK_HEADERS],
+[
+ if test -z "$GETOPT_H"; then
+ AC_CHECK_HEADERS([getopt.h], [], [GETOPT_H=getopt.h])
+ fi
+
+ if test -z "$GETOPT_H"; then
+ AC_CHECK_FUNCS([getopt_long_only], [], [GETOPT_H=getopt.h])
+ fi
+
+ dnl BSD getopt_long uses an incompatible method to reset option processing,
+ dnl and (as of 2004-10-15) mishandles optional option-arguments.
+ if test -z "$GETOPT_H"; then
+ AC_CHECK_DECL([optreset], [GETOPT_H=getopt.h], [], [#include <getopt.h>])
+ fi
+
+ dnl Solaris 10 getopt doesn't handle `+' as a leading character in an
+ dnl option string (as of 2005-05-05).
+ if test -z "$GETOPT_H"; then
+ AC_CACHE_CHECK([for working GNU getopt function], [gl_cv_func_gnu_getopt],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM([#include <getopt.h>],
+ [[
+ char *myargv[3];
+ myargv[0] = "conftest";
+ myargv[1] = "-+";
+ myargv[2] = 0;
+ return getopt (2, myargv, "+a") != '?';
+ ]])],
+ [gl_cv_func_gnu_getopt=yes],
+ [gl_cv_func_gnu_getopt=no],
+ [dnl cross compiling - pessimistically guess based on decls
+ dnl Solaris 10 getopt doesn't handle `+' as a leading character in an
+ dnl option string (as of 2005-05-05).
+ AC_CHECK_DECL([getopt_clip],
+ [gl_cv_func_gnu_getopt=no], [gl_cv_func_gnu_getopt=yes],
+ [#include <getopt.h>])])])
+ if test "$gl_cv_func_gnu_getopt" = "no"; then
+ GETOPT_H=getopt.h
+ fi
+ fi
+])
+
+AC_DEFUN([gl_GETOPT_IFELSE],
+[
+ AC_REQUIRE([gl_GETOPT_CHECK_HEADERS])
+ AS_IF([test -n "$GETOPT_H"], [$1], [$2])
+])
+
+AC_DEFUN([gl_GETOPT], [gl_GETOPT_IFELSE([gl_GETOPT_SUBSTITUTE])])
+
+# Prerequisites of lib/getopt*.
+AC_DEFUN([gl_PREREQ_GETOPT],
+[
+ AC_CHECK_DECLS_ONCE([getenv])
+])
diff --git a/m4/getpagesize.m4 b/m4/getpagesize.m4
new file mode 100644
index 0000000..e8697bd
--- /dev/null
+++ b/m4/getpagesize.m4
@@ -0,0 +1,13 @@
+# getpagesize.m4 serial 6
+dnl Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_GETPAGESIZE],
+[
+ dnl Prerequisites of lib/getpagesize.h.
+ AC_CHECK_HEADERS_ONCE(sys/param.h)
+ AC_CHECK_HEADERS(OS.h)
+ AC_CHECK_FUNCS(getpagesize)
+])
diff --git a/m4/getpass.m4 b/m4/getpass.m4
new file mode 100644
index 0000000..54348ce
--- /dev/null
+++ b/m4/getpass.m4
@@ -0,0 +1,47 @@
+# getpass.m4 serial 10
+dnl Copyright (C) 2002-2003, 2005-2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Provide a getpass() function if the system doesn't have it.
+AC_DEFUN([gl_FUNC_GETPASS],
+[
+ AC_REPLACE_FUNCS(getpass)
+ AC_CHECK_DECLS_ONCE(getpass)
+ if test $ac_cv_func_getpass = no; then
+ gl_PREREQ_GETPASS
+ fi
+])
+
+# Provide the GNU getpass() implementation. It supports passwords of
+# arbitrary length (not just 8 bytes as on HP-UX).
+AC_DEFUN([gl_FUNC_GETPASS_GNU],
+[
+ AC_CHECK_DECLS_ONCE(getpass)
+ dnl TODO: Detect when GNU getpass() is already found in glibc.
+ AC_LIBOBJ(getpass)
+ gl_PREREQ_GETPASS
+ dnl We must choose a different name for our function, since on ELF systems
+ dnl an unusable getpass() in libc.so would override our getpass() if it is
+ dnl compiled into a shared library.
+ AC_DEFINE([getpass], [gnu_getpass],
+ [Define to a replacement function name for getpass().])
+])
+
+# Prerequisites of lib/getpass.c.
+AC_DEFUN([gl_PREREQ_GETPASS], [
+ AC_CHECK_HEADERS_ONCE(stdio_ext.h termios.h)
+ AC_CHECK_FUNCS_ONCE(__fsetlocking tcgetattr tcsetattr)
+ AC_CHECK_DECLS([__fsetlocking],,,
+ [#include <stdio.h>
+ #if HAVE_STDIO_EXT_H
+ #include <stdio_ext.h>
+ #endif])
+ AC_CHECK_DECLS_ONCE([fflush_unlocked])
+ AC_CHECK_DECLS_ONCE([flockfile])
+ AC_CHECK_DECLS_ONCE([fputs_unlocked])
+ AC_CHECK_DECLS_ONCE([funlockfile])
+ AC_CHECK_DECLS_ONCE([putc_unlocked])
+ :
+])
diff --git a/m4/gettext.m4 b/m4/gettext.m4
new file mode 100644
index 0000000..4ffe433
--- /dev/null
+++ b/m4/gettext.m4
@@ -0,0 +1,420 @@
+# gettext.m4 serial 59 (gettext-0.16.1)
+dnl Copyright (C) 1995-2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006.
+
+dnl Macro to add for using GNU gettext.
+
+dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
+dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
+dnl default (if it is not specified or empty) is 'no-libtool'.
+dnl INTLSYMBOL should be 'external' for packages with no intl directory,
+dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory.
+dnl If INTLSYMBOL is 'use-libtool', then a libtool library
+dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
+dnl depending on --{enable,disable}-{shared,static} and on the presence of
+dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
+dnl $(top_builddir)/intl/libintl.a will be created.
+dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
+dnl implementations (in libc or libintl) without the ngettext() function
+dnl will be ignored. If NEEDSYMBOL is specified and is
+dnl 'need-formatstring-macros', then GNU gettext implementations that don't
+dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
+dnl INTLDIR is used to find the intl libraries. If empty,
+dnl the value `$(top_builddir)/intl/' is used.
+dnl
+dnl The result of the configuration is one of three cases:
+dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
+dnl and used.
+dnl Catalog format: GNU --> install in $(datadir)
+dnl Catalog extension: .mo after installation, .gmo in source tree
+dnl 2) GNU gettext has been found in the system's C library.
+dnl Catalog format: GNU --> install in $(datadir)
+dnl Catalog extension: .mo after installation, .gmo in source tree
+dnl 3) No internationalization, always use English msgid.
+dnl Catalog format: none
+dnl Catalog extension: none
+dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
+dnl The use of .gmo is historical (it was needed to avoid overwriting the
+dnl GNU format catalogs when building on a platform with an X/Open gettext),
+dnl but we keep it in order not to force irrelevant filename changes on the
+dnl maintainers.
+dnl
+AC_DEFUN([AM_GNU_GETTEXT],
+[
+ dnl Argument checking.
+ ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
+ [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
+])])])])])
+ ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
+ [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
+])])])])
+ define([gt_included_intl],
+ ifelse([$1], [external],
+ ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
+ [yes]))
+ define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
+ gt_NEEDS_INIT
+ AM_GNU_GETTEXT_NEED([$2])
+
+ AC_REQUIRE([AM_PO_SUBDIRS])dnl
+ ifelse(gt_included_intl, yes, [
+ AC_REQUIRE([AM_INTL_SUBDIR])dnl
+ ])
+
+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+
+ dnl Sometimes libintl requires libiconv, so first search for libiconv.
+ dnl Ideally we would do this search only after the
+ dnl if test "$USE_NLS" = "yes"; then
+ dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+ dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
+ dnl the configure script would need to contain the same shell code
+ dnl again, outside any 'if'. There are two solutions:
+ dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
+ dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
+ dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
+ dnl documented, we avoid it.
+ ifelse(gt_included_intl, yes, , [
+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+ ])
+
+ dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
+ gt_INTL_MACOSX
+
+ dnl Set USE_NLS.
+ AC_REQUIRE([AM_NLS])
+
+ ifelse(gt_included_intl, yes, [
+ BUILD_INCLUDED_LIBINTL=no
+ USE_INCLUDED_LIBINTL=no
+ ])
+ LIBINTL=
+ LTLIBINTL=
+ POSUB=
+
+ dnl Add a version number to the cache macros.
+ case " $gt_needs " in
+ *" need-formatstring-macros "*) gt_api_version=3 ;;
+ *" need-ngettext "*) gt_api_version=2 ;;
+ *) gt_api_version=1 ;;
+ esac
+ gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+ gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
+ dnl If we use NLS figure out what method
+ if test "$USE_NLS" = "yes"; then
+ gt_use_preinstalled_gnugettext=no
+ ifelse(gt_included_intl, yes, [
+ AC_MSG_CHECKING([whether included gettext is requested])
+ AC_ARG_WITH(included-gettext,
+ [ --with-included-gettext use the GNU gettext library included here],
+ nls_cv_force_use_gnu_gettext=$withval,
+ nls_cv_force_use_gnu_gettext=no)
+ AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
+
+ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
+ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
+ ])
+ dnl User does not insist on using GNU NLS library. Figure out what
+ dnl to use. If GNU gettext is available we use this. Else we have
+ dnl to fall back to GNU NLS library.
+
+ if test $gt_api_version -ge 3; then
+ gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+changequote(,)dnl
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+changequote([,])dnl
+'
+ else
+ gt_revision_test_code=
+ fi
+ if test $gt_api_version -ge 2; then
+ gt_expression_test_code=' + * ngettext ("", "", 0)'
+ else
+ gt_expression_test_code=
+ fi
+
+ AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
+ [AC_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;],
+ [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings],
+ [eval "$gt_func_gnugettext_libc=yes"],
+ [eval "$gt_func_gnugettext_libc=no"])])
+
+ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+ dnl Sometimes libintl requires libiconv, so first search for libiconv.
+ ifelse(gt_included_intl, yes, , [
+ AM_ICONV_LINK
+ ])
+ dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
+ dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
+ dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
+ dnl even if libiconv doesn't exist.
+ AC_LIB_LINKFLAGS_BODY([intl])
+ AC_CACHE_CHECK([for GNU gettext in libintl],
+ [$gt_func_gnugettext_libintl],
+ [gt_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $INCINTL"
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBINTL"
+ dnl Now see whether libintl exists and does not depend on libiconv.
+ AC_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);],
+ [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
+ [eval "$gt_func_gnugettext_libintl=yes"],
+ [eval "$gt_func_gnugettext_libintl=no"])
+ dnl Now see whether libintl exists and depends on libiconv.
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
+ LIBS="$LIBS $LIBICONV"
+ AC_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);],
+ [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
+ [LIBINTL="$LIBINTL $LIBICONV"
+ LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+ eval "$gt_func_gnugettext_libintl=yes"
+ ])
+ fi
+ CPPFLAGS="$gt_save_CPPFLAGS"
+ LIBS="$gt_save_LIBS"])
+ fi
+
+ dnl If an already present or preinstalled GNU gettext() is found,
+ dnl use it. But if this macro is used in GNU gettext, and GNU
+ dnl gettext is already preinstalled in libintl, we update this
+ dnl libintl. (Cf. the install rule in intl/Makefile.in.)
+ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
+ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
+ && test "$PACKAGE" != gettext-runtime \
+ && test "$PACKAGE" != gettext-tools; }; then
+ gt_use_preinstalled_gnugettext=yes
+ else
+ dnl Reset the values set by searching for libintl.
+ LIBINTL=
+ LTLIBINTL=
+ INCINTL=
+ fi
+
+ ifelse(gt_included_intl, yes, [
+ if test "$gt_use_preinstalled_gnugettext" != "yes"; then
+ dnl GNU gettext is not found in the C library.
+ dnl Fall back on included GNU gettext library.
+ nls_cv_use_gnu_gettext=yes
+ fi
+ fi
+
+ if test "$nls_cv_use_gnu_gettext" = "yes"; then
+ dnl Mark actions used to generate GNU NLS library.
+ BUILD_INCLUDED_LIBINTL=yes
+ USE_INCLUDED_LIBINTL=yes
+ LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
+ LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD"
+ LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
+ fi
+
+ CATOBJEXT=
+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
+ dnl Mark actions to use GNU gettext tools.
+ CATOBJEXT=.gmo
+ fi
+ ])
+
+ if test -n "$INTL_MACOSX_LIBS"; then
+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
+ dnl Some extra flags are needed during linking.
+ LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+ LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+ fi
+ fi
+
+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
+ AC_DEFINE(ENABLE_NLS, 1,
+ [Define to 1 if translation of program messages to the user's native language
+ is requested.])
+ else
+ USE_NLS=no
+ fi
+ fi
+
+ AC_MSG_CHECKING([whether to use NLS])
+ AC_MSG_RESULT([$USE_NLS])
+ if test "$USE_NLS" = "yes"; then
+ AC_MSG_CHECKING([where the gettext function comes from])
+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+ gt_source="external libintl"
+ else
+ gt_source="libc"
+ fi
+ else
+ gt_source="included intl directory"
+ fi
+ AC_MSG_RESULT([$gt_source])
+ fi
+
+ if test "$USE_NLS" = "yes"; then
+
+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+ AC_MSG_CHECKING([how to link with libintl])
+ AC_MSG_RESULT([$LIBINTL])
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
+ fi
+
+ dnl For backward compatibility. Some packages may be using this.
+ AC_DEFINE(HAVE_GETTEXT, 1,
+ [Define if the GNU gettext() function is already present or preinstalled.])
+ AC_DEFINE(HAVE_DCGETTEXT, 1,
+ [Define if the GNU dcgettext() function is already present or preinstalled.])
+ fi
+
+ dnl We need to process the po/ directory.
+ POSUB=po
+ fi
+
+ ifelse(gt_included_intl, yes, [
+ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
+ dnl to 'yes' because some of the testsuite requires it.
+ if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
+ BUILD_INCLUDED_LIBINTL=yes
+ fi
+
+ dnl Make all variables we use known to autoconf.
+ AC_SUBST(BUILD_INCLUDED_LIBINTL)
+ AC_SUBST(USE_INCLUDED_LIBINTL)
+ AC_SUBST(CATOBJEXT)
+
+ dnl For backward compatibility. Some configure.ins may be using this.
+ nls_cv_header_intl=
+ nls_cv_header_libgt=
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ DATADIRNAME=share
+ AC_SUBST(DATADIRNAME)
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ INSTOBJEXT=.mo
+ AC_SUBST(INSTOBJEXT)
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ GENCAT=gencat
+ AC_SUBST(GENCAT)
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ INTLOBJS=
+ if test "$USE_INCLUDED_LIBINTL" = yes; then
+ INTLOBJS="\$(GETTOBJS)"
+ fi
+ AC_SUBST(INTLOBJS)
+
+ dnl Enable libtool support if the surrounding package wishes it.
+ INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
+ AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
+ ])
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ INTLLIBS="$LIBINTL"
+ AC_SUBST(INTLLIBS)
+
+ dnl Make all documented variables known to autoconf.
+ AC_SUBST(LIBINTL)
+ AC_SUBST(LTLIBINTL)
+ AC_SUBST(POSUB)
+])
+
+
+dnl Checks for special options needed on MacOS X.
+dnl Defines INTL_MACOSX_LIBS.
+AC_DEFUN([gt_INTL_MACOSX],
+[
+ dnl Check for API introduced in MacOS X 10.2.
+ AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
+ gt_cv_func_CFPreferencesCopyAppValue,
+ [gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
+ [CFPreferencesCopyAppValue(NULL, NULL)],
+ [gt_cv_func_CFPreferencesCopyAppValue=yes],
+ [gt_cv_func_CFPreferencesCopyAppValue=no])
+ LIBS="$gt_save_LIBS"])
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+ AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1,
+ [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
+ fi
+ dnl Check for API introduced in MacOS X 10.3.
+ AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent,
+ [gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
+ [gt_cv_func_CFLocaleCopyCurrent=yes],
+ [gt_cv_func_CFLocaleCopyCurrent=no])
+ LIBS="$gt_save_LIBS"])
+ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+ AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1,
+ [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
+ fi
+ INTL_MACOSX_LIBS=
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+ fi
+ AC_SUBST([INTL_MACOSX_LIBS])
+])
+
+
+dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized.
+m4_define([gt_NEEDS_INIT],
+[
+ m4_divert_text([DEFAULTS], [gt_needs=])
+ m4_define([gt_NEEDS_INIT], [])
+])
+
+
+dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL])
+AC_DEFUN([AM_GNU_GETTEXT_NEED],
+[
+ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
+])
+
+
+dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
+AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
+ AC_DEFUN([gl_LOCK_EARLY], [])
diff --git a/m4/gettime.m4 b/m4/gettime.m4
new file mode 100644
index 0000000..601a5e6
--- /dev/null
+++ b/m4/gettime.m4
@@ -0,0 +1,15 @@
+# gettime.m4 serial 6
+dnl Copyright (C) 2002, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_GETTIME],
+[
+ AC_LIBOBJ([gettime])
+
+ dnl Prerequisites of lib/gettime.c.
+ AC_REQUIRE([gl_CLOCK_TIME])
+ AC_REQUIRE([gl_TIMESPEC])
+ AC_CHECK_FUNCS_ONCE(gettimeofday nanotime)
+])
diff --git a/m4/gettimeofday.m4 b/m4/gettimeofday.m4
new file mode 100644
index 0000000..b9bbb10
--- /dev/null
+++ b/m4/gettimeofday.m4
@@ -0,0 +1,101 @@
+#serial 11
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl From Jim Meyering.
+
+AC_DEFUN([gl_FUNC_GETTIMEOFDAY],
+[
+ AC_REQUIRE([AC_C_RESTRICT])
+ AC_REQUIRE([gl_HEADER_SYS_TIME_H])
+ AC_CHECK_FUNCS_ONCE([gettimeofday])
+
+ AC_CACHE_CHECK([for gettimeofday with POSIX signature],
+ [gl_cv_func_gettimeofday_posix_signature],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <sys/time.h>
+ struct timeval c;
+ ]],
+ [[
+ int (*f) (struct timeval *restrict, void *restrict) = gettimeofday;
+ int x = f (&c, 0);
+ return !(x | c.tv_sec | c.tv_usec);
+ ]])],
+ [gl_cv_func_gettimeofday_posix_signature=yes],
+ [gl_cv_func_gettimeofday_posix_signature=no])])
+
+ gl_FUNC_GETTIMEOFDAY_CLOBBER
+
+ if test $gl_cv_func_gettimeofday_posix_signature != yes; then
+ REPLACE_GETTIMEOFDAY=1
+ SYS_TIME_H=sys/time.h
+ if test $gl_cv_func_gettimeofday_clobber != yes; then
+ AC_LIBOBJ(gettimeofday)
+ gl_PREREQ_GETTIMEOFDAY
+ fi
+ fi
+])
+
+
+dnl See if gettimeofday clobbers the static buffer that localtime uses
+dnl for its return value. The gettimeofday function from Mac OS X 10.0.4
+dnl (i.e., Darwin 1.3.7) has this problem.
+dnl
+dnl If it does, then arrange to use gettimeofday and localtime only via
+dnl the wrapper functions that work around the problem.
+
+AC_DEFUN([gl_FUNC_GETTIMEOFDAY_CLOBBER],
+[
+ AC_REQUIRE([gl_HEADER_SYS_TIME_H])
+
+ AC_CACHE_CHECK([whether gettimeofday clobbers localtime buffer],
+ [gl_cv_func_gettimeofday_clobber],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <string.h>
+ #include <sys/time.h>
+ #include <time.h>
+ #include <stdlib.h>
+ ]],
+ [[
+ time_t t = 0;
+ struct tm *lt;
+ struct tm saved_lt;
+ struct timeval tv;
+ lt = localtime (&t);
+ saved_lt = *lt;
+ gettimeofday (&tv, NULL);
+ return memcmp (lt, &saved_lt, sizeof (struct tm)) != 0;
+ ]])],
+ [gl_cv_func_gettimeofday_clobber=no],
+ [gl_cv_func_gettimeofday_clobber=yes],
+ dnl When crosscompiling, assume it is broken.
+ [gl_cv_func_gettimeofday_clobber=yes])])
+
+ if test $gl_cv_func_gettimeofday_clobber = yes; then
+ REPLACE_GETTIMEOFDAY=1
+ SYS_TIME_H=sys/time.h
+ gl_GETTIMEOFDAY_REPLACE_LOCALTIME
+ AC_DEFINE([GETTIMEOFDAY_CLOBBERS_LOCALTIME], 1,
+ [Define if gettimeofday clobbers the localtime buffer.])
+ fi
+])
+
+AC_DEFUN([gl_GETTIMEOFDAY_REPLACE_LOCALTIME], [
+ AC_LIBOBJ(gettimeofday)
+ gl_PREREQ_GETTIMEOFDAY
+ AC_DEFINE([gmtime], [rpl_gmtime],
+ [Define to rpl_gmtime if the replacement function should be used.])
+ AC_DEFINE([localtime], [rpl_localtime],
+ [Define to rpl_localtime if the replacement function should be used.])
+])
+
+# Prerequisites of lib/gettimeofday.c.
+AC_DEFUN([gl_PREREQ_GETTIMEOFDAY], [
+ AC_CHECK_HEADERS([sys/timeb.h])
+ AC_CHECK_FUNCS([_ftime])
+])
diff --git a/m4/getugroups.m4 b/m4/getugroups.m4
new file mode 100644
index 0000000..3c5e15e
--- /dev/null
+++ b/m4/getugroups.m4
@@ -0,0 +1,13 @@
+# getugroups.m4 serial 6
+dnl Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_GETUGROUPS],
+[
+ AC_LIBOBJ([getugroups])
+
+ dnl Prerequisites of lib/getugroups.c.
+ AC_TYPE_GETGROUPS
+])
diff --git a/m4/getusershell.m4 b/m4/getusershell.m4
new file mode 100644
index 0000000..de602d3
--- /dev/null
+++ b/m4/getusershell.m4
@@ -0,0 +1,10 @@
+# getusershell.m4 serial 4
+dnl Copyright (C) 2002, 2003, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_GETUSERSHELL],
+[
+ AC_REPLACE_FUNCS(getusershell)
+])
diff --git a/m4/glibc21.m4 b/m4/glibc21.m4
new file mode 100644
index 0000000..d95fd98
--- /dev/null
+++ b/m4/glibc21.m4
@@ -0,0 +1,30 @@
+# glibc21.m4 serial 3
+dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Test for the GNU C Library, version 2.1 or newer.
+# From Bruno Haible.
+
+AC_DEFUN([gl_GLIBC21],
+ [
+ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,
+ ac_cv_gnu_library_2_1,
+ [AC_EGREP_CPP([Lucky GNU user],
+ [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+ Lucky GNU user
+ #endif
+#endif
+ ],
+ ac_cv_gnu_library_2_1=yes,
+ ac_cv_gnu_library_2_1=no)
+ ]
+ )
+ AC_SUBST(GLIBC21)
+ GLIBC21="$ac_cv_gnu_library_2_1"
+ ]
+)
diff --git a/m4/gnulib-common.m4 b/m4/gnulib-common.m4
new file mode 100644
index 0000000..5398010
--- /dev/null
+++ b/m4/gnulib-common.m4
@@ -0,0 +1,22 @@
+# gnulib-common.m4 serial 2
+dnl Copyright (C) 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# gl_MODULE_INDICATOR([modulename])
+# defines a C macro indicating the presence of the given module.
+AC_DEFUN([gl_MODULE_INDICATOR],
+[
+ AC_DEFINE([GNULIB_]translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1],
+ [Define to 1 when using the gnulib module ]$1[.])
+])
+
+# AC_PROG_MKDIR_P
+# is a backport of autoconf-2.60's AC_PROG_MKDIR_P.
+# Remove this macro when we can assume autoconf >= 2.60.
+m4_ifdef([AC_PROG_MKDIR_P], [], [
+ AC_DEFUN([AC_PROG_MKDIR_P],
+ [AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
+ MKDIR_P='$(mkdir_p)'
+ AC_SUBST([MKDIR_P])])])
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
new file mode 100644
index 0000000..b1cec44
--- /dev/null
+++ b/m4/gnulib-comp.m4
@@ -0,0 +1,945 @@
+# -*- buffer-read-only: t -*- vi: set ro:
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# Copyright (C) 2004-2007 Free Software Foundation, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License. As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+#
+# This file represents the compiled summary of the specification in
+# gnulib-cache.m4. It lists the computed macro invocations that need
+# to be invoked from configure.ac.
+# In projects using CVS, this file can be treated like other built files.
+
+
+# This macro should be invoked from ./configure.ac, in the section
+# "Checks for programs", right after AC_PROG_CC, and certainly before
+# any checks for libraries, header files, types and library functions.
+AC_DEFUN([gl_EARLY],
+[
+ m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace
+ m4_pattern_allow([^gl_ES$])dnl a valid locale name
+ m4_pattern_allow([^gl_LIBOBJS$])dnl a variable
+ m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable
+ AC_REQUIRE([AC_PROG_RANLIB])
+ AC_REQUIRE([AC_GNU_SOURCE])
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ dnl Some compilers (e.g., AIX 5.3 cc) need to be in c99 mode
+ dnl for the builtin va_copy to work. With Autoconf 2.60 or later,
+ dnl AC_PROG_CC_STDC arranges for this. With older Autoconf AC_PROG_CC_STDC
+ dnl shouldn't hurt, though installers are on their own to set c99 mode.
+ AC_REQUIRE([AC_PROG_CC_STDC])
+])
+
+# This macro should be invoked from ./configure.ac, in the section
+# "Check for header files, types and library functions".
+AC_DEFUN([gl_INIT],
+[
+ m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ]))
+ m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS]))
+ m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES]))
+ AM_CONDITIONAL([GL_COND_LIBTOOL], [false])
+ gl_cond_libtool=false
+ gl_libdeps=
+ gl_ltlibdeps=
+ gl_source_base='lib'
+ AC_FUNC_ACL
+ gl_FUNC_ALLOCA
+ gl_ALLOCSA
+ gl_ARGMATCH
+ gl_HEADER_ARPA_INET
+ AC_PROG_MKDIR_P
+ gl_ASSERT
+ gl_FUNC_ATEXIT
+ gl_BACKUPFILE
+ gl_FUNC_BASE64
+ gl_C_STRTOD
+ gl_C_STRTOLD
+ AC_FUNC_CALLOC
+ gl_CANON_HOST
+ AC_FUNC_CANONICALIZE_FILE_NAME
+ gl_MODULE_INDICATOR([canonicalize])
+ gl_FUNC_CHDIR_LONG
+ gl_FUNC_CHOWN
+ gl_UNISTD_MODULE_INDICATOR([chown])
+ gl_CLOCK_TIME
+ gl_CLOEXEC
+ gl_CLOSE_STREAM
+ gl_MODULE_INDICATOR([close-stream])
+ gl_CLOSEOUT
+ gl_CONFIG_H
+ gl_CYCLE_CHECK
+ gl_CHECK_TYPE_STRUCT_DIRENT_D_INO
+ gl_CHECK_TYPE_STRUCT_DIRENT_D_TYPE
+ gl_FUNC_DIRFD
+ gl_DIRNAME
+ gl_DOUBLE_SLASH_ROOT
+ gl_FUNC_DUP2
+ gl_UNISTD_MODULE_INDICATOR([dup2])
+ gl_ERROR
+ gl_FUNC_EUIDACCESS
+ gl_EXCLUDE
+ gl_EXITFAIL
+ gl_FUNC_FCHDIR
+ gl_UNISTD_MODULE_INDICATOR([fchdir])
+ gl_FCNTL_H
+ gl_FCNTL_SAFER
+ gl_MODULE_INDICATOR([fcntl-safer])
+ gl_FILE_TYPE
+ gl_FILEBLOCKS
+ gl_FILEMODE
+ gl_FILE_NAME_CONCAT
+ AC_C_FLEXIBLE_ARRAY_MEMBER
+ # No macro. You should also use one of fnmatch-posix or fnmatch-gnu.
+ gl_FUNC_FNMATCH_GNU
+ gl_FOPEN_SAFER
+ gl_MODULE_INDICATOR([fopen-safer])
+ gl_FUNC_FPENDING
+ gl_FPRINTFTIME
+ gl_FUNC_FREE
+ gl_FSUSAGE
+ gl_FUNC_FTRUNCATE
+ gl_UNISTD_MODULE_INDICATOR([ftruncate])
+ gl_FUNC_FTS
+ gl_MODULE_INDICATOR([fts])
+ gl_GETADDRINFO
+ gl_FUNC_GETCWD
+ gl_UNISTD_MODULE_INDICATOR([getcwd])
+ gl_GETDATE
+ gl_FUNC_GETDELIM
+ gl_FUNC_GETGROUPS
+ gl_FUNC_GETHOSTNAME
+ gl_GETHRXTIME
+ gl_FUNC_GETLINE
+ gl_GETLOADAVG([lib])
+ gl_GETNDELIM2
+ gl_GETOPT
+ gl_GETPAGESIZE
+ gl_FUNC_GETPASS_GNU
+ dnl you must add AM_GNU_GETTEXT([external]) or similar to configure.ac.
+ AM_GNU_GETTEXT_VERSION([0.16.1])
+ gl_GETTIME
+ gl_FUNC_GETTIMEOFDAY
+ gl_GETUGROUPS
+ gl_FUNC_GETUSERSHELL
+ gl_FUNC_GROUP_MEMBER
+ gl_HARD_LOCALE
+ gl_HASH
+ gl_HOST_OS
+ gl_HUMAN
+ gl_I_RING
+ AM_ICONV
+ gl_IDCACHE
+ gl_INET_NTOP
+ gl_INLINE
+ gl_INTTOSTR
+ gl_INTTYPES_H
+ gl_ISAPIPE
+ gl_FUNC_LCHMOD
+ gl_FUNC_LCHOWN
+ gl_IGNORE_UNUSED_LIBRARIES
+ gl_AC_FUNC_LINK_FOLLOWS_SYMLINK
+ gl_LOCALCHARSET
+ gl_LONG_OPTIONS
+ gl_FUNC_LSTAT
+ AC_FUNC_MALLOC
+ gl_MBCHAR
+ gl_FUNC_MBSCASECMP
+ gl_STRING_MODULE_INDICATOR([mbscasecmp])
+ gl_MBSWIDTH
+ gl_MBITER
+ gl_MD5
+ gl_MEMCASECMP
+ gl_FUNC_MEMCHR
+ gl_FUNC_MEMCMP
+ gl_MEMCOLL
+ gl_FUNC_MEMCPY
+ gl_FUNC_MEMMOVE
+ gl_FUNC_MEMPCPY
+ gl_STRING_MODULE_INDICATOR([mempcpy])
+ gl_FUNC_MEMRCHR
+ gl_STRING_MODULE_INDICATOR([memrchr])
+ gl_FUNC_MEMSET
+ gl_MKANCESDIRS
+ gl_FUNC_MKDIR_TRAILING_SLASH
+ gl_MKDIR_PARENTS
+ gl_FUNC_MKSTEMP
+ gl_STDLIB_MODULE_INDICATOR([mkstemp])
+ gl_FUNC_MKTIME
+ gl_MODECHANGE
+ gl_MOUNTLIST
+ gl_MPSORT
+ gl_FUNC_NANOSLEEP
+ gl_HEADER_NETINET_IN
+ AC_PROG_MKDIR_P
+ AC_FUNC_OBSTACK
+ dnl Note: AC_FUNC_OBSTACK does AC_LIBSOURCES([obstack.h, obstack.c]).
+ gl_FUNC_OPENAT
+ gl_PATHMAX
+ gl_PERL
+ gl_PHYSMEM
+ gl_POSIXTM
+ gl_POSIXVER
+ gl_FUNC_PUTENV
+ gl_QUOTE
+ gl_QUOTEARG
+ AC_REPLACE_FUNCS(raise)
+ gl_FUNC_READLINK
+ gl_UNISTD_MODULE_INDICATOR([readlink])
+ gl_READTOKENS
+ gl_READUTMP
+ AC_FUNC_REALLOC
+ gl_REGEX
+ gl_FUNC_RENAME
+ gl_FUNC_RENAME_TRAILING_DEST_SLASH
+ gl_FUNC_RMDIR
+ gl_FUNC_RMDIR_NOTEMPTY
+ gl_ROOT_DEV_INO
+ gl_FUNC_RPMATCH
+ gl_SAFE_READ
+ gl_SAFE_WRITE
+ gl_SAME
+ gl_SAVE_CWD
+ gl_SAVEDIR
+ gl_SAVEWD
+ gl_FUNC_SETENV
+ gl_FUNC_UNSETENV
+ gl_SETTIME
+ gl_SHA1
+ gl_FUNC_SIG2STR
+ gl_FUNC_SNPRINTF
+ gl_STDIO_MODULE_INDICATOR([snprintf])
+ gl_TYPE_SOCKLEN_T
+ gt_TYPE_SSIZE_T
+ gl_STAT_TIME
+ gl_STDARG_H
+ AM_STDBOOL_H
+ gl_STDINT_H
+ gl_STDIO_H
+ gl_STDLIB_H
+ gl_STDLIB_SAFER
+ gl_FUNC_STPCPY
+ gl_STRING_MODULE_INDICATOR([stpcpy])
+ gl_FUNC_STRCSPN
+ gl_FUNC_STRDUP
+ gl_STRING_MODULE_INDICATOR([strdup])
+ gl_FUNC_GNU_STRFTIME
+ gl_HEADER_STRING_H
+ gl_FUNC_STRNDUP
+ gl_STRING_MODULE_INDICATOR([strndup])
+ gl_FUNC_STRNLEN
+ gl_STRING_MODULE_INDICATOR([strnlen])
+ gl_FUNC_STRPBRK
+ gl_STRING_MODULE_INDICATOR([strpbrk])
+ gl_FUNC_STRTOD
+ gl_FUNC_STRTOIMAX
+ gl_INTTYPES_MODULE_INDICATOR([strtoimax])
+ gl_FUNC_STRTOL
+ gl_FUNC_STRTOLL
+ gl_FUNC_STRTOUL
+ gl_FUNC_STRTOULL
+ gl_FUNC_STRTOUMAX
+ gl_INTTYPES_MODULE_INDICATOR([strtoumax])
+ gl_FUNC_STRVERSCMP
+ gl_HEADER_SYS_SOCKET
+ AC_PROG_MKDIR_P
+ gl_HEADER_SYS_STAT_H
+ AC_PROG_MKDIR_P
+ gl_HEADER_SYS_TIME_H
+ AC_PROG_MKDIR_P
+ gl_FUNC_GEN_TEMPNAME
+ gl_HEADER_TIME_H
+ gl_TIME_R
+ gl_TIMESPEC
+ gl_FUNC_TZSET_CLOBBER
+ gl_UNICODEIO
+ gl_UNISTD_H
+ gl_UNISTD_SAFER
+ gl_FUNC_UNLINK_BUSY_TEXT
+ gl_UNLINKDIR
+ gl_FUNC_GLIBC_UNLOCKED_IO
+ gl_SYS_PROC_UPTIME
+ gl_USERSPEC
+ gl_FUNC_UTIME
+ gl_UTIMECMP
+ gl_UTIMENS
+ gl_FUNC_VASNPRINTF
+ gl_FUNC_VASPRINTF
+ gl_WCHAR_H
+ gl_WCTYPE_H
+ gl_FUNC_WCWIDTH
+ gl_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
+ gl_HEADER_TIOCGWINSZ_IN_TERMIOS_H
+ gl_WINSIZE_IN_PTEM
+ gl_XALLOC
+ gl_XGETCWD
+ gl_XNANOSLEEP
+ gl_XSTRNDUP
+ gl_XSTRTOD
+ gl_XSTRTOL
+ gl_XSTRTOLD
+ gl_YESNO
+ LIBCOREUTILS_LIBDEPS="$gl_libdeps"
+ AC_SUBST([LIBCOREUTILS_LIBDEPS])
+ LIBCOREUTILS_LTLIBDEPS="$gl_ltlibdeps"
+ AC_SUBST([LIBCOREUTILS_LTLIBDEPS])
+ m4_popdef([AC_LIBSOURCES])
+ m4_popdef([AC_REPLACE_FUNCS])
+ m4_popdef([AC_LIBOBJ])
+ AC_CONFIG_COMMANDS_PRE([
+ gl_libobjs=
+ gl_ltlibobjs=
+ if test -n "$gl_LIBOBJS"; then
+ # Remove the extension.
+ sed_drop_objext='s/\.o$//;s/\.obj$//'
+ for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
+ gl_libobjs="$gl_libobjs $i.$ac_objext"
+ gl_ltlibobjs="$gl_ltlibobjs $i.lo"
+ done
+ fi
+ AC_SUBST([gl_LIBOBJS], [$gl_libobjs])
+ AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs])
+ ])
+])
+
+# Like AC_LIBOBJ, except that the module name goes
+# into gl_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gl_LIBOBJ],
+ [gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext"])
+
+# Like AC_REPLACE_FUNCS, except that the module name goes
+# into gl_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gl_REPLACE_FUNCS],
+ [AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)])])
+
+# Like AC_LIBSOURCES, except that it does nothing.
+# We rely on EXTRA_lib..._SOURCES instead.
+AC_DEFUN([gl_LIBSOURCES],
+ [])
+
+# This macro records the list of files which have been installed by
+# gnulib-tool and may be removed by future gnulib-tool invocations.
+AC_DEFUN([gl_FILE_LIST], [
+ build-aux/announce-gen
+ build-aux/config.rpath
+ build-aux/gnupload
+ build-aux/link-warning.h
+ doc/fdl.texi
+ doc/getdate.texi
+ lib/__fpending.c
+ lib/__fpending.h
+ lib/acl-internal.h
+ lib/acl.c
+ lib/acl.h
+ lib/acl_entries.c
+ lib/alloca.c
+ lib/alloca_.h
+ lib/allocsa.c
+ lib/allocsa.h
+ lib/allocsa.valgrind
+ lib/argmatch.c
+ lib/argmatch.h
+ lib/asnprintf.c
+ lib/asprintf.c
+ lib/at-func.c
+ lib/atexit.c
+ lib/backupfile.c
+ lib/backupfile.h
+ lib/base64.c
+ lib/base64.h
+ lib/basename.c
+ lib/c-ctype.c
+ lib/c-ctype.h
+ lib/c-strcase.h
+ lib/c-strcasecmp.c
+ lib/c-strncasecmp.c
+ lib/c-strtod.c
+ lib/c-strtod.h
+ lib/c-strtold.c
+ lib/calloc.c
+ lib/canon-host.c
+ lib/canon-host.h
+ lib/canonicalize.c
+ lib/canonicalize.h
+ lib/chdir-long.c
+ lib/chdir-long.h
+ lib/chown.c
+ lib/cloexec.c
+ lib/cloexec.h
+ lib/close-stream.c
+ lib/close-stream.h
+ lib/closeout.c
+ lib/closeout.h
+ lib/config.charset
+ lib/creat-safer.c
+ lib/cycle-check.c
+ lib/cycle-check.h
+ lib/dev-ino.h
+ lib/diacrit.c
+ lib/diacrit.h
+ lib/dirchownmod.c
+ lib/dirchownmod.h
+ lib/dirent_.h
+ lib/dirfd.c
+ lib/dirfd.h
+ lib/dirname.c
+ lib/dirname.h
+ lib/dup-safer.c
+ lib/dup2.c
+ lib/error.c
+ lib/error.h
+ lib/euidaccess.c
+ lib/euidaccess.h
+ lib/exclude.c
+ lib/exclude.h
+ lib/exitfail.c
+ lib/exitfail.h
+ lib/fchdir.c
+ lib/fchmodat.c
+ lib/fchown-stub.c
+ lib/fchownat.c
+ lib/fcntl--.h
+ lib/fcntl-safer.h
+ lib/fcntl_.h
+ lib/fd-safer.c
+ lib/file-has-acl.c
+ lib/file-type.c
+ lib/file-type.h
+ lib/fileblocks.c
+ lib/filemode.c
+ lib/filemode.h
+ lib/filenamecat.c
+ lib/filenamecat.h
+ lib/fnmatch.c
+ lib/fnmatch_.h
+ lib/fnmatch_loop.c
+ lib/fopen-safer.c
+ lib/fprintftime.c
+ lib/fprintftime.h
+ lib/free.c
+ lib/fstatat.c
+ lib/fsusage.c
+ lib/fsusage.h
+ lib/ftruncate.c
+ lib/fts-cycle.c
+ lib/fts.c
+ lib/fts_.h
+ lib/full-read.c
+ lib/full-read.h
+ lib/full-write.c
+ lib/full-write.h
+ lib/gai_strerror.c
+ lib/getaddrinfo.c
+ lib/getaddrinfo.h
+ lib/getcwd.c
+ lib/getdate.h
+ lib/getdate.y
+ lib/getdelim.c
+ lib/getdelim.h
+ lib/getgroups.c
+ lib/gethostname.c
+ lib/gethrxtime.c
+ lib/gethrxtime.h
+ lib/getline.c
+ lib/getline.h
+ lib/getloadavg.c
+ lib/getndelim2.c
+ lib/getndelim2.h
+ lib/getopt.c
+ lib/getopt1.c
+ lib/getopt_.h
+ lib/getopt_int.h
+ lib/getpagesize.h
+ lib/getpass.c
+ lib/getpass.h
+ lib/gettext.h
+ lib/gettime.c
+ lib/gettimeofday.c
+ lib/getugroups.c
+ lib/getusershell.c
+ lib/group-member.c
+ lib/group-member.h
+ lib/hard-locale.c
+ lib/hard-locale.h
+ lib/hash-pjw.c
+ lib/hash-pjw.h
+ lib/hash.c
+ lib/hash.h
+ lib/human.c
+ lib/human.h
+ lib/i-ring.c
+ lib/i-ring.h
+ lib/idcache.c
+ lib/imaxtostr.c
+ lib/inet_ntop.c
+ lib/inet_ntop.h
+ lib/intprops.h
+ lib/inttostr.c
+ lib/inttostr.h
+ lib/inttypes_.h
+ lib/isapipe.c
+ lib/isapipe.h
+ lib/lchmod.h
+ lib/lchown.c
+ lib/lchown.h
+ lib/linebuffer.c
+ lib/linebuffer.h
+ lib/localcharset.c
+ lib/localcharset.h
+ lib/long-options.c
+ lib/long-options.h
+ lib/lstat.c
+ lib/lstat.h
+ lib/malloc.c
+ lib/mbchar.c
+ lib/mbchar.h
+ lib/mbscasecmp.c
+ lib/mbswidth.c
+ lib/mbswidth.h
+ lib/mbuiter.h
+ lib/md5.c
+ lib/md5.h
+ lib/memcasecmp.c
+ lib/memcasecmp.h
+ lib/memchr.c
+ lib/memcmp.c
+ lib/memcoll.c
+ lib/memcoll.h
+ lib/memcpy.c
+ lib/memmove.c
+ lib/mempcpy.c
+ lib/memrchr.c
+ lib/memset.c
+ lib/mkancesdirs.c
+ lib/mkancesdirs.h
+ lib/mkdir-p.c
+ lib/mkdir-p.h
+ lib/mkdir.c
+ lib/mkdirat.c
+ lib/mkstemp-safer.c
+ lib/mkstemp.c
+ lib/mktime.c
+ lib/modechange.c
+ lib/modechange.h
+ lib/mountlist.c
+ lib/mountlist.h
+ lib/mpsort.c
+ lib/mpsort.h
+ lib/nanosleep.c
+ lib/netinet_in_.h
+ lib/obstack.c
+ lib/obstack.h
+ lib/offtostr.c
+ lib/open-safer.c
+ lib/openat-die.c
+ lib/openat-priv.h
+ lib/openat-proc.c
+ lib/openat.c
+ lib/openat.h
+ lib/pathmax.h
+ lib/physmem.c
+ lib/physmem.h
+ lib/pipe-safer.c
+ lib/posixtm.c
+ lib/posixtm.h
+ lib/posixver.c
+ lib/posixver.h
+ lib/printf-args.c
+ lib/printf-args.h
+ lib/printf-parse.c
+ lib/printf-parse.h
+ lib/putenv.c
+ lib/quote.c
+ lib/quote.h
+ lib/quotearg.c
+ lib/quotearg.h
+ lib/raise.c
+ lib/readlink.c
+ lib/readtokens.c
+ lib/readtokens.h
+ lib/readtokens0.c
+ lib/readtokens0.h
+ lib/readutmp.c
+ lib/readutmp.h
+ lib/realloc.c
+ lib/ref-add.sin
+ lib/ref-del.sin
+ lib/regcomp.c
+ lib/regex.c
+ lib/regex.h
+ lib/regex_internal.c
+ lib/regex_internal.h
+ lib/regexec.c
+ lib/rename-dest-slash.c
+ lib/rename.c
+ lib/rmdir.c
+ lib/root-dev-ino.c
+ lib/root-dev-ino.h
+ lib/rpmatch.c
+ lib/safe-read.c
+ lib/safe-read.h
+ lib/safe-write.c
+ lib/safe-write.h
+ lib/same-inode.h
+ lib/same.c
+ lib/same.h
+ lib/save-cwd.c
+ lib/save-cwd.h
+ lib/savedir.c
+ lib/savedir.h
+ lib/savewd.c
+ lib/savewd.h
+ lib/setenv.c
+ lib/setenv.h
+ lib/settime.c
+ lib/sha1.c
+ lib/sha1.h
+ lib/sig2str.c
+ lib/sig2str.h
+ lib/snprintf.c
+ lib/socket_.h
+ lib/stat-macros.h
+ lib/stat-time.h
+ lib/stat_.h
+ lib/stdbool_.h
+ lib/stdint_.h
+ lib/stdio--.h
+ lib/stdio-safer.h
+ lib/stdio_.h
+ lib/stdlib--.h
+ lib/stdlib-safer.h
+ lib/stdlib_.h
+ lib/stpcpy.c
+ lib/strcspn.c
+ lib/strdup.c
+ lib/strftime.c
+ lib/strftime.h
+ lib/string_.h
+ lib/stripslash.c
+ lib/strndup.c
+ lib/strnlen.c
+ lib/strnlen1.c
+ lib/strnlen1.h
+ lib/strpbrk.c
+ lib/strtod.c
+ lib/strtoimax.c
+ lib/strtol.c
+ lib/strtoll.c
+ lib/strtoul.c
+ lib/strtoull.c
+ lib/strtoumax.c
+ lib/strverscmp.c
+ lib/strverscmp.h
+ lib/sys_time_.h
+ lib/tempname.c
+ lib/tempname.h
+ lib/time_.h
+ lib/time_r.c
+ lib/timespec.h
+ lib/uinttostr.c
+ lib/umaxtostr.c
+ lib/unicodeio.c
+ lib/unicodeio.h
+ lib/unistd--.h
+ lib/unistd-safer.h
+ lib/unistd_.h
+ lib/unlinkdir.c
+ lib/unlinkdir.h
+ lib/unlocked-io.h
+ lib/unsetenv.c
+ lib/userspec.c
+ lib/userspec.h
+ lib/utime.c
+ lib/utimecmp.c
+ lib/utimecmp.h
+ lib/utimens.c
+ lib/utimens.h
+ lib/vasnprintf.c
+ lib/vasnprintf.h
+ lib/vasprintf.c
+ lib/vasprintf.h
+ lib/verify.h
+ lib/version-etc-fsf.c
+ lib/version-etc.c
+ lib/version-etc.h
+ lib/wchar_.h
+ lib/wctype_.h
+ lib/wcwidth.h
+ lib/xalloc-die.c
+ lib/xalloc.h
+ lib/xgetcwd.c
+ lib/xgetcwd.h
+ lib/xgethostname.c
+ lib/xgethostname.h
+ lib/xmalloc.c
+ lib/xmemcoll.c
+ lib/xmemcoll.h
+ lib/xnanosleep.c
+ lib/xnanosleep.h
+ lib/xreadlink-with-size.c
+ lib/xreadlink.c
+ lib/xreadlink.h
+ lib/xstrndup.c
+ lib/xstrndup.h
+ lib/xstrtod.c
+ lib/xstrtod.h
+ lib/xstrtoimax.c
+ lib/xstrtol.c
+ lib/xstrtol.h
+ lib/xstrtold.c
+ lib/xstrtoul.c
+ lib/xstrtoumax.c
+ lib/xtime.h
+ lib/yesno.c
+ lib/yesno.h
+ m4/absolute-header.m4
+ m4/acl.m4
+ m4/alloca.m4
+ m4/allocsa.m4
+ m4/argmatch.m4
+ m4/arpa_inet_h.m4
+ m4/assert.m4
+ m4/atexit.m4
+ m4/backupfile.m4
+ m4/base64.m4
+ m4/bison.m4
+ m4/c-strtod.m4
+ m4/calloc.m4
+ m4/canon-host.m4
+ m4/canonicalize.m4
+ m4/chdir-long.m4
+ m4/chown.m4
+ m4/clock_time.m4
+ m4/cloexec.m4
+ m4/close-stream.m4
+ m4/closeout.m4
+ m4/codeset.m4
+ m4/config-h.m4
+ m4/cycle-check.m4
+ m4/d-ino.m4
+ m4/d-type.m4
+ m4/dirfd.m4
+ m4/dirname.m4
+ m4/dos.m4
+ m4/double-slash-root.m4
+ m4/dup2.m4
+ m4/eealloc.m4
+ m4/eoverflow.m4
+ m4/error.m4
+ m4/euidaccess.m4
+ m4/exclude.m4
+ m4/exitfail.m4
+ m4/extensions.m4
+ m4/fchdir.m4
+ m4/fcntl-safer.m4
+ m4/fcntl_h.m4
+ m4/file-type.m4
+ m4/fileblocks.m4
+ m4/filemode.m4
+ m4/filenamecat.m4
+ m4/flexmember.m4
+ m4/fnmatch.m4
+ m4/fpending.m4
+ m4/fprintftime.m4
+ m4/free.m4
+ m4/fstypename.m4
+ m4/fsusage.m4
+ m4/ftruncate.m4
+ m4/fts.m4
+ m4/getaddrinfo.m4
+ m4/getcwd-abort-bug.m4
+ m4/getcwd-path-max.m4
+ m4/getcwd.m4
+ m4/getdate.m4
+ m4/getdelim.m4
+ m4/getgroups.m4
+ m4/gethostname.m4
+ m4/gethrxtime.m4
+ m4/getline.m4
+ m4/getloadavg.m4
+ m4/getndelim2.m4
+ m4/getopt.m4
+ m4/getpagesize.m4
+ m4/getpass.m4
+ m4/gettext.m4
+ m4/gettime.m4
+ m4/gettimeofday.m4
+ m4/getugroups.m4
+ m4/getusershell.m4
+ m4/glibc2.m4
+ m4/glibc21.m4
+ m4/gnulib-common.m4
+ m4/group-member.m4
+ m4/hard-locale.m4
+ m4/hash.m4
+ m4/host-os.m4
+ m4/human.m4
+ m4/i-ring.m4
+ m4/iconv.m4
+ m4/idcache.m4
+ m4/inet_ntop.m4
+ m4/inline.m4
+ m4/intdiv0.m4
+ m4/intl.m4
+ m4/intldir.m4
+ m4/intmax.m4
+ m4/intmax_t.m4
+ m4/inttostr.m4
+ m4/inttypes-pri.m4
+ m4/inttypes.m4
+ m4/inttypes_h.m4
+ m4/isapipe.m4
+ m4/jm-winsz1.m4
+ m4/jm-winsz2.m4
+ m4/lchmod.m4
+ m4/lchown.m4
+ m4/lcmessage.m4
+ m4/lib-ignore.m4
+ m4/lib-ld.m4
+ m4/lib-link.m4
+ m4/lib-prefix.m4
+ m4/link-follow.m4
+ m4/localcharset.m4
+ m4/lock.m4
+ m4/long-options.m4
+ m4/longdouble.m4
+ m4/longlong.m4
+ m4/ls-mntd-fs.m4
+ m4/lstat.m4
+ m4/mbchar.m4
+ m4/mbiter.m4
+ m4/mbrtowc.m4
+ m4/mbscasecmp.m4
+ m4/mbstate_t.m4
+ m4/mbswidth.m4
+ m4/md5.m4
+ m4/memcasecmp.m4
+ m4/memchr.m4
+ m4/memcmp.m4
+ m4/memcoll.m4
+ m4/memcpy.m4
+ m4/memmove.m4
+ m4/mempcpy.m4
+ m4/memrchr.m4
+ m4/memset.m4
+ m4/mkancesdirs.m4
+ m4/mkdir-p.m4
+ m4/mkdir-slash.m4
+ m4/mkstemp.m4
+ m4/mktime.m4
+ m4/modechange.m4
+ m4/mountlist.m4
+ m4/mpsort.m4
+ m4/nanosleep.m4
+ m4/netinet_in_h.m4
+ m4/nls.m4
+ m4/openat.m4
+ m4/pathmax.m4
+ m4/perl.m4
+ m4/physmem.m4
+ m4/po.m4
+ m4/posixtm.m4
+ m4/posixver.m4
+ m4/printf-posix.m4
+ m4/progtest.m4
+ m4/putenv.m4
+ m4/quote.m4
+ m4/quotearg.m4
+ m4/readlink.m4
+ m4/readtokens.m4
+ m4/readutmp.m4
+ m4/regex.m4
+ m4/rename-dest-slash.m4
+ m4/rename.m4
+ m4/rmdir-errno.m4
+ m4/rmdir.m4
+ m4/root-dev-ino.m4
+ m4/rpmatch.m4
+ m4/safe-read.m4
+ m4/safe-write.m4
+ m4/same.m4
+ m4/save-cwd.m4
+ m4/savedir.m4
+ m4/savewd.m4
+ m4/setenv.m4
+ m4/settime.m4
+ m4/sha1.m4
+ m4/sig2str.m4
+ m4/size_max.m4
+ m4/snprintf.m4
+ m4/socklen.m4
+ m4/sockpfaf.m4
+ m4/ssize_t.m4
+ m4/st_dm_mode.m4
+ m4/stat-time.m4
+ m4/stdarg.m4
+ m4/stdbool.m4
+ m4/stdint.m4
+ m4/stdint_h.m4
+ m4/stdio-safer.m4
+ m4/stdio_h.m4
+ m4/stdlib-safer.m4
+ m4/stdlib_h.m4
+ m4/stpcpy.m4
+ m4/strcspn.m4
+ m4/strdup.m4
+ m4/strftime.m4
+ m4/string_h.m4
+ m4/strndup.m4
+ m4/strnlen.m4
+ m4/strpbrk.m4
+ m4/strtod.m4
+ m4/strtoimax.m4
+ m4/strtol.m4
+ m4/strtoll.m4
+ m4/strtoul.m4
+ m4/strtoull.m4
+ m4/strtoumax.m4
+ m4/strverscmp.m4
+ m4/sys_socket_h.m4
+ m4/sys_stat_h.m4
+ m4/sys_time_h.m4
+ m4/tempname.m4
+ m4/time_h.m4
+ m4/time_r.m4
+ m4/timespec.m4
+ m4/tm_gmtoff.m4
+ m4/tzset.m4
+ m4/uintmax_t.m4
+ m4/ulonglong.m4
+ m4/unicodeio.m4
+ m4/unistd-safer.m4
+ m4/unistd_h.m4
+ m4/unlink-busy.m4
+ m4/unlinkdir.m4
+ m4/unlocked-io.m4
+ m4/uptime.m4
+ m4/userspec.m4
+ m4/utimbuf.m4
+ m4/utime.m4
+ m4/utimecmp.m4
+ m4/utimens.m4
+ m4/utimes-null.m4
+ m4/utimes.m4
+ m4/vasnprintf.m4
+ m4/vasprintf.m4
+ m4/visibility.m4
+ m4/wchar.m4
+ m4/wchar_t.m4
+ m4/wctype.m4
+ m4/wcwidth.m4
+ m4/wint_t.m4
+ m4/xalloc.m4
+ m4/xgetcwd.m4
+ m4/xnanosleep.m4
+ m4/xsize.m4
+ m4/xstrndup.m4
+ m4/xstrtod.m4
+ m4/xstrtol.m4
+ m4/yesno.m4
+])
diff --git a/m4/group-member.m4 b/m4/group-member.m4
new file mode 100644
index 0000000..6f2f57e
--- /dev/null
+++ b/m4/group-member.m4
@@ -0,0 +1,29 @@
+#serial 10
+
+# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2006 Free Software
+# Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl Written by Jim Meyering
+
+AC_DEFUN([gl_FUNC_GROUP_MEMBER],
+[
+ dnl Persuade glibc <unistd.h> to declare group_member().
+ AC_REQUIRE([AC_GNU_SOURCE])
+
+ dnl Do this replacement check manually because I want the hyphen
+ dnl (not the underscore) in the filename.
+ AC_CHECK_FUNC(group_member, , [
+ AC_LIBOBJ(group-member)
+ gl_PREREQ_GROUP_MEMBER
+ ])
+])
+
+# Prerequisites of lib/group-member.c.
+AC_DEFUN([gl_PREREQ_GROUP_MEMBER],
+[
+ AC_REQUIRE([AC_FUNC_GETGROUPS])
+])
diff --git a/m4/hard-locale.m4 b/m4/hard-locale.m4
new file mode 100644
index 0000000..8b577ef
--- /dev/null
+++ b/m4/hard-locale.m4
@@ -0,0 +1,11 @@
+# hard-locale.m4 serial 7
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl No prerequisites of lib/hard-locale.c.
+AC_DEFUN([gl_HARD_LOCALE],
+[
+ AC_LIBOBJ([hard-locale])
+])
diff --git a/m4/hash.m4 b/m4/hash.m4
new file mode 100644
index 0000000..1b1873c
--- /dev/null
+++ b/m4/hash.m4
@@ -0,0 +1,13 @@
+# hash.m4 serial 6
+dnl Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_HASH],
+[
+ AC_LIBOBJ([hash])
+
+ dnl Prerequisites of lib/hash.c.
+ AC_REQUIRE([AM_STDBOOL_H])
+])
diff --git a/m4/host-os.m4 b/m4/host-os.m4
new file mode 100644
index 0000000..0b7efb6
--- /dev/null
+++ b/m4/host-os.m4
@@ -0,0 +1,82 @@
+#serial 6
+
+# Copyright (C) 2001, 2003, 2004, 2006 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Written by Paul Eggert.
+
+dnl From Paul Eggert.
+
+# Define HOST_OPERATING_SYSTEM to a name for the host operating system.
+AC_DEFUN([gl_HOST_OS],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])dnl
+ AC_CACHE_CHECK([host operating system],
+ gl_cv_host_operating_system,
+
+ [[case $host_os in
+
+ # These operating system names do not use the default heuristic below.
+ # They are in reverse order, so that more-specific prefixes come first.
+ winnt*) os='Windows NT';;
+ vos*) os='VOS';;
+ sysv*) os='Unix System V';;
+ superux*) os='SUPER-UX';;
+ sunos*) os='SunOS';;
+ stop*) os='STOP';;
+ sco*) os='SCO Unix';;
+ riscos*) os='RISC OS';;
+ riscix*) os='RISCiX';;
+ qnx*) os='QNX';;
+ pw32*) os='PW32';;
+ ptx*) os='ptx';;
+ plan9*) os='Plan 9';;
+ osf*) os='Tru64';;
+ os2*) os='OS/2';;
+ openbsd*) os='OpenBSD';;
+ nsk*) os='NonStop Kernel';;
+ nonstopux*) os='NonStop-UX';;
+ netbsd*-gnu*) os='GNU/NetBSD';; # NetBSD kernel+libc, GNU userland
+ netbsd*) os='NetBSD';;
+ knetbsd*-gnu) os='GNU/kNetBSD';; # NetBSD kernel, GNU libc+userland
+ kfreebsd*-gnu) os='GNU/kFreeBSD';; # FreeBSD kernel, GNU libc+userland
+ msdosdjgpp*) os='DJGPP';;
+ mpeix*) os='MPE/iX';;
+ mint*) os='MiNT';;
+ mingw*) os='MinGW';;
+ lynxos*) os='LynxOS';;
+ linux*) os='GNU/Linux';;
+ hpux*) os='HP-UX';;
+ hiux*) os='HI-UX';;
+ gnu*) os='GNU';;
+ freebsd*) os='FreeBSD';;
+ dgux*) os='DG/UX';;
+ bsdi*) os='BSD/OS';;
+ bsd*) os='BSD';;
+ beos*) os='BeOS';;
+ aux*) os='A/UX';;
+ atheos*) os='AtheOS';;
+ amigaos*) os='Amiga OS';;
+ aix*) os='AIX';;
+
+ # The default heuristic takes the initial alphabetic string
+ # from $host_os, but capitalizes its first letter.
+ [A-Za-z]*)
+ os=`
+ expr "X$host_os" : 'X\([A-Za-z]\)' | tr '[a-z]' '[A-Z]'
+ ``
+ expr "X$host_os" : 'X.\([A-Za-z]*\)'
+ `
+ ;;
+
+ # If $host_os does not start with an alphabetic string, use it unchanged.
+ *)
+ os=$host_os;;
+ esac
+ gl_cv_host_operating_system=$os]])
+ AC_DEFINE_UNQUOTED(HOST_OPERATING_SYSTEM,
+ "$gl_cv_host_operating_system",
+ [The host operating system.])
+])
diff --git a/m4/human.m4 b/m4/human.m4
new file mode 100644
index 0000000..72f2176
--- /dev/null
+++ b/m4/human.m4
@@ -0,0 +1,13 @@
+#serial 10
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_HUMAN],
+[
+ AC_LIBOBJ([human])
+
+ dnl Prerequisites of lib/human.c.
+ :
+])
diff --git a/m4/i-ring.m4 b/m4/i-ring.m4
new file mode 100644
index 0000000..2c51225
--- /dev/null
+++ b/m4/i-ring.m4
@@ -0,0 +1,10 @@
+# serial 1
+dnl Copyright (C) 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_I_RING],
+[
+ AC_LIBOBJ([i-ring])
+])
diff --git a/m4/iconv.m4 b/m4/iconv.m4
new file mode 100644
index 0000000..654c415
--- /dev/null
+++ b/m4/iconv.m4
@@ -0,0 +1,101 @@
+# iconv.m4 serial AM4 (gettext-0.11.3)
+dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
+[
+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+
+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+ dnl accordingly.
+ AC_LIB_LINKFLAGS_BODY([iconv])
+])
+
+AC_DEFUN([AM_ICONV_LINK],
+[
+ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
+ dnl those with the standalone portable GNU libiconv installed).
+
+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+ dnl accordingly.
+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+
+ dnl Add $INCICONV to CPPFLAGS before performing the following checks,
+ dnl because if the user has installed libiconv and not disabled its use
+ dnl via --without-libiconv-prefix, he wants to use it. The first
+ dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
+ am_save_CPPFLAGS="$CPPFLAGS"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
+
+ AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
+ am_cv_func_iconv="no, consider installing GNU libiconv"
+ am_cv_lib_iconv=no
+ AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+ [iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);],
+ am_cv_func_iconv=yes)
+ if test "$am_cv_func_iconv" != yes; then
+ am_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBICONV"
+ AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+ [iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);],
+ am_cv_lib_iconv=yes
+ am_cv_func_iconv=yes)
+ LIBS="$am_save_LIBS"
+ fi
+ ])
+ if test "$am_cv_func_iconv" = yes; then
+ AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
+ fi
+ if test "$am_cv_lib_iconv" = yes; then
+ AC_MSG_CHECKING([how to link with libiconv])
+ AC_MSG_RESULT([$LIBICONV])
+ else
+ dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
+ dnl either.
+ CPPFLAGS="$am_save_CPPFLAGS"
+ LIBICONV=
+ LTLIBICONV=
+ fi
+ AC_SUBST(LIBICONV)
+ AC_SUBST(LTLIBICONV)
+])
+
+AC_DEFUN([AM_ICONV],
+[
+ AM_ICONV_LINK
+ if test "$am_cv_func_iconv" = yes; then
+ AC_MSG_CHECKING([for iconv declaration])
+ AC_CACHE_VAL(am_cv_proto_iconv, [
+ AC_TRY_COMPILE([
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
+ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
+ am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+ AC_MSG_RESULT([$]{ac_t:-
+ }[$]am_cv_proto_iconv)
+ AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
+ [Define as const if the declaration of iconv() needs const.])
+ fi
+])
diff --git a/m4/idcache.m4 b/m4/idcache.m4
new file mode 100644
index 0000000..8bb2fc9
--- /dev/null
+++ b/m4/idcache.m4
@@ -0,0 +1,10 @@
+# idcache.m4 serial 6
+dnl Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_IDCACHE],
+[
+ AC_LIBOBJ([idcache])
+])
diff --git a/m4/inet_ntop.m4 b/m4/inet_ntop.m4
new file mode 100644
index 0000000..bb02d22
--- /dev/null
+++ b/m4/inet_ntop.m4
@@ -0,0 +1,19 @@
+# inet_ntop.m4 serial 3
+dnl Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_INET_NTOP],
+[
+ AC_REPLACE_FUNCS(inet_ntop)
+ gl_PREREQ_INET_NTOP
+])
+
+# Prerequisites of lib/inet_ntop.h and lib/inet_ntop.c.
+AC_DEFUN([gl_PREREQ_INET_NTOP], [
+ AC_CHECK_HEADERS_ONCE([netinet/in.h arpa/inet.h])
+ AC_CHECK_DECLS([inet_ntop],,,[#include <arpa/inet.h>])
+ AC_REQUIRE([gl_SOCKET_FAMILIES])
+ AC_REQUIRE([AC_C_RESTRICT])
+])
diff --git a/m4/inline.m4 b/m4/inline.m4
new file mode 100644
index 0000000..a07076c
--- /dev/null
+++ b/m4/inline.m4
@@ -0,0 +1,40 @@
+# inline.m4 serial 3
+dnl Copyright (C) 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Test for the 'inline' keyword or equivalent.
+dnl Define 'inline' to a supported equivalent, or to nothing if not supported,
+dnl like AC_C_INLINE does. Also, define HAVE_INLINE if 'inline' or an
+dnl equivalent is effectively supported, i.e. if the compiler is likely to
+dnl drop unused 'static inline' functions.
+AC_DEFUN([gl_INLINE],
+[
+ AC_REQUIRE([AC_C_INLINE])
+ AC_CACHE_CHECK([whether the compiler generally respects inline],
+ [gl_cv_c_inline_effective],
+ [if test $ac_cv_c_inline = no; then
+ gl_cv_c_inline_effective=no
+ else
+ dnl GCC defines __NO_INLINE__ if not optimizing or if -fno-inline is
+ dnl specified.
+ dnl Use AC_COMPILE_IFELSE here, not AC_EGREP_CPP, because the result
+ dnl depends on optimization flags, which can be in CFLAGS.
+ dnl (AC_EGREP_CPP looks only at the CPPFLAGS.)
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[]],
+ [[#ifdef __NO_INLINE__
+ #error "inline is not effective"
+ #endif]])],
+ [gl_cv_c_inline_effective=yes],
+ [gl_cv_c_inline_effective=no])
+ fi
+ ])
+ if test $gl_cv_c_inline_effective = yes; then
+ AC_DEFINE([HAVE_INLINE], 1,
+ [Define to 1 if the compiler supports one of the keywords
+ 'inline', '__inline__', '__inline' and effectively inlines
+ functions marked as such.])
+ fi
+])
diff --git a/m4/intmax_t.m4 b/m4/intmax_t.m4
new file mode 100644
index 0000000..17c7b0a
--- /dev/null
+++ b/m4/intmax_t.m4
@@ -0,0 +1,61 @@
+# intmax_t.m4 serial 5
+dnl Copyright (C) 1997-2004, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+
+AC_PREREQ(2.13)
+
+# Define intmax_t to 'long' or 'long long'
+# if it is not already defined in <stdint.h> or <inttypes.h>.
+
+AC_DEFUN([gl_AC_TYPE_INTMAX_T],
+[
+ dnl For simplicity, we assume that a header file defines 'intmax_t' if and
+ dnl only if it defines 'uintmax_t'.
+ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
+ AC_REQUIRE([gl_AC_HEADER_STDINT_H])
+ if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
+ AC_REQUIRE([gl_AC_TYPE_LONG_LONG])
+ test $ac_cv_type_long_long = yes \
+ && ac_type='long long' \
+ || ac_type='long'
+ AC_DEFINE_UNQUOTED(intmax_t, $ac_type,
+ [Define to long or long long if <inttypes.h> and <stdint.h> don't define.])
+ else
+ AC_DEFINE(HAVE_INTMAX_T, 1,
+ [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
+ fi
+])
+
+dnl An alternative would be to explicitly test for 'intmax_t'.
+
+AC_DEFUN([gt_AC_TYPE_INTMAX_T],
+[
+ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
+ AC_REQUIRE([gl_AC_HEADER_STDINT_H])
+ AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t,
+ [AC_TRY_COMPILE([
+#include <stddef.h>
+#include <stdlib.h>
+#if HAVE_STDINT_H_WITH_UINTMAX
+#include <stdint.h>
+#endif
+#if HAVE_INTTYPES_H_WITH_UINTMAX
+#include <inttypes.h>
+#endif
+], [intmax_t x = -1; return !x;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)])
+ if test $gt_cv_c_intmax_t = yes; then
+ AC_DEFINE(HAVE_INTMAX_T, 1,
+ [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
+ else
+ AC_REQUIRE([gl_AC_TYPE_LONG_LONG])
+ test $ac_cv_type_long_long = yes \
+ && ac_type='long long' \
+ || ac_type='long'
+ AC_DEFINE_UNQUOTED(intmax_t, $ac_type,
+ [Define to long or long long if <stdint.h> and <inttypes.h> don't define.])
+ fi
+])
diff --git a/m4/inttostr.m4 b/m4/inttostr.m4
new file mode 100644
index 0000000..0a41fad
--- /dev/null
+++ b/m4/inttostr.m4
@@ -0,0 +1,37 @@
+#serial 7
+dnl Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_INTTOSTR],
+[
+ AC_LIBOBJ([imaxtostr])
+ AC_LIBOBJ([offtostr])
+ AC_LIBOBJ([umaxtostr])
+ AC_LIBOBJ([uinttostr])
+
+ gl_PREREQ_INTTOSTR
+ gl_PREREQ_IMAXTOSTR
+ gl_PREREQ_OFFTOSTR
+ gl_PREREQ_UMAXTOSTR
+ gl_PREREQ_UINTTOSTR
+])
+
+# Prerequisites of lib/inttostr.h.
+AC_DEFUN([gl_PREREQ_INTTOSTR], [
+ AC_REQUIRE([AC_TYPE_OFF_T])
+ :
+])
+
+# Prerequisites of lib/imaxtostr.c.
+AC_DEFUN([gl_PREREQ_IMAXTOSTR], [:])
+
+# Prerequisites of lib/offtostr.c.
+AC_DEFUN([gl_PREREQ_OFFTOSTR], [:])
+
+# Prerequisites of lib/umaxtostr.c.
+AC_DEFUN([gl_PREREQ_UMAXTOSTR], [:])
+
+# Prerequisites of lib/uinttostr.c.
+AC_DEFUN([gl_PREREQ_UINTTOSTR], [:])
diff --git a/m4/inttypes-pri.m4 b/m4/inttypes-pri.m4
new file mode 100644
index 0000000..7c7f894
--- /dev/null
+++ b/m4/inttypes-pri.m4
@@ -0,0 +1,36 @@
+# inttypes-pri.m4 serial 4 (gettext-0.16)
+dnl Copyright (C) 1997-2002, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_PREREQ(2.52)
+
+# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
+# macros to non-string values. This is the case on AIX 4.3.3.
+
+AC_DEFUN([gt_INTTYPES_PRI],
+[
+ AC_CHECK_HEADERS([inttypes.h])
+ if test $ac_cv_header_inttypes_h = yes; then
+ AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
+ gt_cv_inttypes_pri_broken,
+ [
+ AC_TRY_COMPILE([#include <inttypes.h>
+#ifdef PRId32
+char *p = PRId32;
+#endif
+], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes)
+ ])
+ fi
+ if test "$gt_cv_inttypes_pri_broken" = yes; then
+ AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1,
+ [Define if <inttypes.h> exists and defines unusable PRI* macros.])
+ PRI_MACROS_BROKEN=1
+ else
+ PRI_MACROS_BROKEN=0
+ fi
+ AC_SUBST([PRI_MACROS_BROKEN])
+])
diff --git a/m4/inttypes.m4 b/m4/inttypes.m4
new file mode 100644
index 0000000..095ace9
--- /dev/null
+++ b/m4/inttypes.m4
@@ -0,0 +1,223 @@
+# inttypes.m4 serial 8
+dnl Copyright (C) 2006-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Derek Price, Bruno Haible.
+dnl Test whether <inttypes.h> is supported or must be substituted.
+
+AC_DEFUN([gl_INTTYPES_H],
+[
+ AC_REQUIRE([gl_STDINT_H])
+ AC_REQUIRE([gt_INTTYPES_PRI])
+ AC_CHECK_DECLS_ONCE([imaxabs])
+ AC_CHECK_DECLS_ONCE([imaxdiv])
+ AC_CHECK_DECLS_ONCE([strtoimax])
+ AC_CHECK_DECLS_ONCE([strtoumax])
+
+ dnl Now see if we need a substitute <inttypes.h>.
+ dnl A complete <inttypes.h> requires
+ dnl - a complete <stdint.h>,
+ dnl - the existence of an <inttypes.h>,
+ dnl - that imaxabs, imaxdiv, strtoimax, strtoumax are declared,
+ dnl - some additional tests.
+ AC_CACHE_CHECK([whether inttypes.h conforms to C99],
+ [gl_cv_header_working_inttypes_h],
+ [gl_cv_header_working_inttypes_h=no
+ if test "$gl_cv_header_working_stdint_h" = yes \
+ && test $ac_cv_header_inttypes_h = yes \
+ && test "$ac_cv_have_decl_imaxabs" = yes \
+ && test "$ac_cv_have_decl_imaxdiv" = yes \
+ && test "$ac_cv_have_decl_strtoimax" = yes \
+ && test "$ac_cv_have_decl_strtoumax" = yes; then
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([
+#include <stddef.h>
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_FORMAT_MACROS 1 /* to make it work also in C++ mode */
+#include ABSOLUTE_INTTYPES_H
+
+/* No need to duplicate the tests of stdint.m4; they are subsumed by
+ $gl_cv_header_working_stdint_h = yes. */
+
+/* Tests for macros supposed to be defined in inttypes.h. */
+
+const char *k = /* implicit string concatenation */
+#ifdef INT8_MAX
+ PRId8 PRIi8
+#endif
+#ifdef UINT8_MAX
+ PRIo8 PRIu8 PRIx8 PRIX8
+#endif
+#ifdef INT16_MAX
+ PRId16 PRIi16
+#endif
+#ifdef UINT16_MAX
+ PRIo16 PRIu16 PRIx16 PRIX16
+#endif
+#ifdef INT32_MAX
+ PRId32 PRIi32
+#endif
+#ifdef UINT32_MAX
+ PRIo32 PRIu32 PRIx32 PRIX32
+#endif
+#ifdef INT64_MAX
+ PRId64 PRIi64
+#endif
+#ifdef UINT64_MAX
+ PRIo64 PRIu64 PRIx64 PRIX64
+#endif
+ PRIdLEAST8 PRIiLEAST8 PRIoLEAST8 PRIuLEAST8 PRIxLEAST8 PRIXLEAST8
+ PRIdLEAST16 PRIiLEAST16 PRIoLEAST16 PRIuLEAST16 PRIxLEAST16 PRIXLEAST16
+ PRIdLEAST32 PRIiLEAST32 PRIoLEAST32 PRIuLEAST32 PRIxLEAST32 PRIXLEAST32
+ PRIdLEAST64 PRIiLEAST64
+ PRIoLEAST64 PRIuLEAST64 PRIxLEAST64 PRIXLEAST64
+ PRIdFAST8 PRIiFAST8 PRIoFAST8 PRIuFAST8 PRIxFAST8 PRIXFAST8
+ PRIdFAST16 PRIiFAST16 PRIoFAST16 PRIuFAST16 PRIxFAST16 PRIXFAST16
+ PRIdFAST32 PRIiFAST32 PRIoFAST32 PRIuFAST32 PRIxFAST32 PRIXFAST32
+ PRIdFAST64 PRIiFAST64
+ PRIoFAST64 PRIuFAST64 PRIxFAST64 PRIXFAST64
+ PRIdMAX PRIiMAX PRIoMAX PRIuMAX PRIxMAX PRIXMAX
+#ifdef INTPTR_MAX
+ PRIdPTR PRIiPTR
+#endif
+#ifdef UINTPTR_MAX
+ PRIoPTR PRIuPTR PRIxPTR PRIXPTR
+#endif
+ ;
+const char *l = /* implicit string concatenation */
+#ifdef INT8_MAX
+ SCNd8 SCNi8
+#endif
+#ifdef UINT8_MAX
+ SCNo8 SCNu8 SCNx8
+#endif
+#ifdef INT16_MAX
+ SCNd16 SCNi16
+#endif
+#ifdef UINT16_MAX
+ SCNo16 SCNu16 SCNx16
+#endif
+#ifdef INT32_MAX
+ SCNd32 SCNi32
+#endif
+#ifdef UINT32_MAX
+ SCNo32 SCNu32 SCNx32
+#endif
+#ifdef INT64_MAX
+ SCNd64 SCNi64
+#endif
+#ifdef UINT64_MAX
+ SCNo64 SCNu64 SCNx64
+#endif
+ SCNdLEAST8 SCNiLEAST8 SCNoLEAST8 SCNuLEAST8 SCNxLEAST8
+ SCNdLEAST16 SCNiLEAST16 SCNoLEAST16 SCNuLEAST16 SCNxLEAST16
+ SCNdLEAST32 SCNiLEAST32 SCNoLEAST32 SCNuLEAST32 SCNxLEAST32
+ SCNdLEAST64 SCNiLEAST64
+ SCNoLEAST64 SCNuLEAST64 SCNxLEAST64
+ SCNdFAST8 SCNiFAST8 SCNoFAST8 SCNuFAST8 SCNxFAST8
+ SCNdFAST16 SCNiFAST16 SCNoFAST16 SCNuFAST16 SCNxFAST16
+ SCNdFAST32 SCNiFAST32 SCNoFAST32 SCNuFAST32 SCNxFAST32
+ SCNdFAST64 SCNiFAST64
+ SCNoFAST64 SCNuFAST64 SCNxFAST64
+ SCNdMAX SCNiMAX SCNoMAX SCNuMAX SCNxMAX
+#ifdef INTPTR_MAX
+ SCNdPTR SCNiPTR
+#endif
+#ifdef UINTPTR_MAX
+ SCNoPTR SCNuPTR SCNxPTR
+#endif
+ ;
+ ])],
+ [gl_cv_header_working_inttypes_h=yes])
+ fi])
+
+ dnl Override <inttypes.h> always, so that the portability warnings work.
+ if false && test $gl_cv_header_working_inttypes_h = yes; then
+ dnl Use the existing <inttypes.h>.
+ INTTYPES_H=''
+ else
+
+ AC_REQUIRE([gl_INTTYPES_H_DEFAULTS])
+ dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h.
+ if test $ac_cv_header_inttypes_h = yes; then
+ gl_ABSOLUTE_HEADER([inttypes.h])
+ ABSOLUTE_INTTYPES_H=\"$gl_cv_absolute_inttypes_h\"
+ else
+ ABSOLUTE_INTTYPES_H=\"no/such/file/inttypes.h\"
+ fi
+ AC_SUBST([ABSOLUTE_INTTYPES_H])
+
+ PRIPTR_PREFIX=
+ if test -n "$STDINT_H"; then
+ dnl Using the gnulib <stdint.h>. It always defines intptr_t to 'long'.
+ PRIPTR_PREFIX='"l"'
+ else
+ dnl Using the system's <stdint.h>.
+ for glpfx in '' l ll I64; do
+ case $glpfx in
+ '') gltype1='int';;
+ l) gltype1='long int';;
+ ll) gltype1='long long int';;
+ I64) gltype1='__int64';;
+ esac
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([#include <stdint.h>
+ extern intptr_t foo;
+ extern $gltype1 foo;])],
+ [PRIPTR_PREFIX='"'$glpfx'"'])
+ test -n "$PRIPTR_PREFIX" && break
+ done
+ fi
+ AC_SUBST([PRIPTR_PREFIX])
+
+ if test "$ac_cv_have_decl_imaxabs" = yes; then
+ HAVE_DECL_IMAXABS=1
+ else
+ HAVE_DECL_IMAXABS=0
+ fi
+
+ if test "$ac_cv_have_decl_imaxdiv" = yes; then
+ HAVE_DECL_IMAXDIV=1
+ else
+ HAVE_DECL_IMAXDIV=0
+ fi
+
+ if test "$ac_cv_have_decl_strtoimax" = yes; then
+ HAVE_DECL_STRTOIMAX=1
+ else
+ HAVE_DECL_STRTOIMAX=0
+ fi
+
+ if test "$ac_cv_have_decl_strtoumax" = yes; then
+ HAVE_DECL_STRTOUMAX=1
+ else
+ HAVE_DECL_STRTOUMAX=0
+ fi
+
+ INTTYPES_H='inttypes.h'
+ fi
+ AC_SUBST(INTTYPES_H)
+])
+
+AC_DEFUN([gl_INTTYPES_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_INTTYPES_H_DEFAULTS])
+ GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_INTTYPES_H_DEFAULTS],
+[
+ GNULIB_IMAXABS=0; AC_SUBST([GNULIB_IMAXABS])
+ GNULIB_IMAXDIV=0; AC_SUBST([GNULIB_IMAXDIV])
+ GNULIB_STRTOIMAX=0; AC_SUBST([GNULIB_STRTOIMAX])
+ GNULIB_STRTOUMAX=0; AC_SUBST([GNULIB_STRTOUMAX])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_DECL_IMAXABS=1; AC_SUBST([HAVE_DECL_IMAXABS])
+ HAVE_DECL_IMAXDIV=1; AC_SUBST([HAVE_DECL_IMAXDIV])
+ HAVE_DECL_STRTOIMAX=1; AC_SUBST([HAVE_DECL_STRTOIMAX])
+ HAVE_DECL_STRTOUMAX=1; AC_SUBST([HAVE_DECL_STRTOUMAX])
+])
diff --git a/m4/inttypes_h.m4 b/m4/inttypes_h.m4
new file mode 100644
index 0000000..edc8ecb
--- /dev/null
+++ b/m4/inttypes_h.m4
@@ -0,0 +1,26 @@
+# inttypes_h.m4 serial 7
+dnl Copyright (C) 1997-2004, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+
+# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
+# doesn't clash with <sys/types.h>, and declares uintmax_t.
+
+AC_DEFUN([gl_AC_HEADER_INTTYPES_H],
+[
+ AC_CACHE_CHECK([for inttypes.h], gl_cv_header_inttypes_h,
+ [AC_TRY_COMPILE(
+ [#include <sys/types.h>
+#include <inttypes.h>],
+ [uintmax_t i = (uintmax_t) -1; return !i;],
+ gl_cv_header_inttypes_h=yes,
+ gl_cv_header_inttypes_h=no)])
+ if test $gl_cv_header_inttypes_h = yes; then
+ AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1,
+ [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
+ and declares uintmax_t. ])
+ fi
+])
diff --git a/m4/isapipe.m4 b/m4/isapipe.m4
new file mode 100644
index 0000000..04e6934
--- /dev/null
+++ b/m4/isapipe.m4
@@ -0,0 +1,89 @@
+# Test whether a file descriptor is a pipe.
+
+dnl Copyright (C) 2006 Free Software Foundation, Inc.
+
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Paul Eggert.
+
+AC_DEFUN([gl_ISAPIPE],
+[
+ # OpenVMS has isapipe already, so check for it.
+ AC_REPLACE_FUNCS(isapipe)
+ if test $ac_cv_func_isapipe = no; then
+ gl_PREREQ_ISAPIPE
+ fi
+])
+
+# Prerequisites of lib/isapipe.c.
+AC_DEFUN([gl_PREREQ_ISAPIPE],
+[
+ AC_CACHE_CHECK([whether pipes are FIFOs (and for their link count)],
+ [gl_cv_pipes_are_fifos],
+ [AC_RUN_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#include <stdio.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
+ #ifndef S_ISFIFO
+ #define S_ISFIFO(m) 0
+ #endif
+ #ifndef S_ISSOCK
+ #define S_ISSOCK(m) 0
+ #endif
+ int
+ main (int argc, char **argv)
+ {
+ int fd[2];
+ struct stat st;
+ if (pipe (fd) != 0 || fstat (fd[0], &st) != 0)
+ return 1;
+ if (2 <= argc && argv[1][0] == '-')
+ {
+ char const *yesno = (S_ISFIFO (st.st_mode) ? "yes" : "no");
+ if (st.st_nlink <= 1)
+ {
+ long int i = st.st_nlink;
+ if (i != st.st_nlink)
+ return 1;
+ printf ("%s (%ld)\n", yesno, i);
+ }
+ else
+ {
+ unsigned long int i = st.st_nlink;
+ if (i != st.st_nlink)
+ return 1;
+ printf ("%s (%lu)\n", yesno, i);
+ }
+ }
+ else
+ {
+ if (! S_ISFIFO (st.st_mode) && ! S_ISSOCK (st.st_mode))
+ return 1;
+ }
+ return 0;
+ }]])],
+ [gl_cv_pipes_are_fifos=`./conftest$ac_exeext -`
+ test -z "$gl_cv_pipes_are_fifos" && gl_cv_pipes_are_fifos=no],
+ [gl_cv_pipes_are_fifos=unknown],
+ [gl_cv_pipes_are_fifos=cross-compiling])])
+
+ case $gl_cv_pipes_are_fifos in #(
+ 'yes ('*')')
+ AC_DEFINE([HAVE_FIFO_PIPES], 1,
+ [Define to 1 if pipes are FIFOs, 0 if sockets. Leave undefined
+ if not known.]);; #(
+ 'no ('*')')
+ AC_DEFINE([HAVE_FIFO_PIPES], 0);;
+ esac
+
+ case $gl_cv_pipes_are_fifos in #(
+ *'('*')')
+ AC_DEFINE_UNQUOTED([PIPE_LINK_COUNT_MAX],
+ [`expr "$gl_cv_pipes_are_fifos" : '.*\((.*)\)'`],
+ [Define to the maximum link count that a true pipe can have.]);;
+ esac
+])
diff --git a/m4/jm-macros.m4 b/m4/jm-macros.m4
new file mode 100644
index 0000000..2595542
--- /dev/null
+++ b/m4/jm-macros.m4
@@ -0,0 +1,180 @@
+#serial 105 -*- autoconf -*-
+
+dnl Misc type-related macros for coreutils.
+
+# Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Written by Jim Meyering.
+
+AC_DEFUN([coreutils_MACROS],
+[
+ GNU_PACKAGE="GNU $PACKAGE"
+ AC_DEFINE_UNQUOTED(GNU_PACKAGE, "$GNU_PACKAGE",
+ [The concatenation of the strings `GNU ', and PACKAGE.])
+ AC_SUBST(GNU_PACKAGE)
+
+ AM_MISSING_PROG(HELP2MAN, help2man)
+ AC_SUBST(OPTIONAL_BIN_PROGS)
+ AC_SUBST(MAN)
+ AC_SUBST(DF_PROG)
+
+ dnl This macro actually runs replacement code. See isc-posix.m4.
+ AC_REQUIRE([AC_ISC_POSIX])dnl
+
+ gl_CHECK_ALL_TYPES
+
+ AC_REQUIRE([gl_CHECK_DECLS])
+
+ AC_REQUIRE([gl_PREREQ])
+
+ AC_REQUIRE([AC_FUNC_FSEEKO])
+
+ # By default, argmatch should fail calling usage (1).
+ AC_DEFINE(ARGMATCH_DIE, [usage (1)],
+ [Define to the function xargmatch calls on failures.])
+ AC_DEFINE(ARGMATCH_DIE_DECL, [extern void usage ()],
+ [Define to the declaration of the xargmatch failure function.])
+
+ # used by ls
+ AC_REQUIRE([gl_CLOCK_TIME])
+ # used by shred
+ AC_CHECK_FUNCS_ONCE(directio)
+
+ AC_CHECK_FUNCS_ONCE( \
+ endgrent \
+ endpwent \
+ fchown \
+ fchmod \
+ ftruncate \
+ iswspace \
+ mkfifo \
+ mbrlen \
+ setgroups \
+ sethostname \
+ siginterrupt \
+ sync \
+ sysctl \
+ sysinfo \
+ tcgetpgrp \
+ )
+
+ dnl This can't use AC_REQUIRE; I'm not quite sure why.
+ cu_PREREQ_STAT_PROG
+
+ # for dd.c and shred.c
+ coreutils_saved_libs=$LIBS
+ AC_SEARCH_LIBS([fdatasync], [rt posix4],
+ [test "$ac_cv_search_fdatasync" = "none required" ||
+ LIB_FDATASYNC=$ac_cv_search_fdatasync])
+ AC_SUBST([LIB_FDATASYNC])
+ AC_CHECK_FUNCS(fdatasync)
+ LIBS=$coreutils_saved_libs
+
+ # See if linking `seq' requires -lm.
+ # It does on nearly every system. The single exception (so far) is
+ # BeOS which has all the math functions in the normal runtime library
+ # and doesn't have a separate math library.
+
+ AC_SUBST(SEQ_LIBM)
+ ac_seq_body='
+ static double x, y;
+ x = floor (x);
+ x = rint (x);
+ x = modf (x, &y);'
+ AC_TRY_LINK([#include <math.h>], $ac_seq_body, ,
+ [ac_seq_save_LIBS="$LIBS"
+ LIBS="$LIBS -lm"
+ AC_TRY_LINK([#include <math.h>], $ac_seq_body, SEQ_LIBM=-lm)
+ LIBS="$ac_seq_save_LIBS"
+ ])
+
+ AC_REQUIRE([AM_LANGINFO_CODESET])
+
+ # Build df only if there's a point to it.
+ if test $gl_cv_list_mounted_fs = yes && test $gl_cv_fs_space = yes; then
+ DF_PROG='df$(EXEEXT)'
+ fi
+])
+
+AC_DEFUN([gl_CHECK_ALL_HEADERS],
+[
+ AC_CHECK_HEADERS_ONCE( \
+ hurd.h \
+ paths.h \
+ priv.h \
+ stropts.h \
+ sys/ioctl.h \
+ sys/param.h \
+ sys/resource.h \
+ sys/systeminfo.h \
+ sys/time.h \
+ sys/wait.h \
+ syslog.h \
+ termios.h \
+ )
+ AC_CHECK_HEADERS(sys/sysctl.h, [], [],
+ [AC_INCLUDES_DEFAULT
+ [#if HAVE_SYS_PARAM_H
+ #include <sys/param.h>
+ #endif]])
+])
+
+# This macro must be invoked before any tests that run the compiler.
+AC_DEFUN([gl_CHECK_ALL_TYPES],
+[
+ dnl This test must come as early as possible after the compiler configuration
+ dnl tests, because the choice of the file model can (in principle) affect
+ dnl whether functions and headers are available, whether they work, etc.
+ AC_REQUIRE([AC_SYS_LARGEFILE])
+
+ dnl This test must precede tests of compiler characteristics like
+ dnl that for the inline keyword, since it may change the degree to
+ dnl which the compiler supports such features.
+ AC_REQUIRE([AM_C_PROTOTYPES])
+
+ dnl Checks for typedefs, structures, and compiler characteristics.
+ AC_REQUIRE([AC_C_BIGENDIAN])
+ AC_REQUIRE([AC_C_VOLATILE])
+ AC_REQUIRE([AC_C_INLINE])
+ AC_REQUIRE([AC_C_LONG_DOUBLE])
+ AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
+
+ AC_REQUIRE([gl_CHECK_ALL_HEADERS])
+ AC_CHECK_MEMBERS(
+ [struct stat.st_author],,,
+ [$ac_includes_default
+#include <sys/stat.h>
+ ])
+ AC_REQUIRE([AC_STRUCT_ST_BLOCKS])
+
+ AC_REQUIRE([AC_TYPE_GETGROUPS])
+ AC_REQUIRE([AC_TYPE_MBSTATE_T])
+ AC_REQUIRE([AC_TYPE_MODE_T])
+ AC_REQUIRE([AC_TYPE_OFF_T])
+ AC_REQUIRE([AC_TYPE_PID_T])
+ AC_REQUIRE([AC_TYPE_SIZE_T])
+ AC_REQUIRE([AC_TYPE_UID_T])
+ AC_CHECK_TYPE(ino_t, unsigned long int)
+
+ dnl This relies on the fact that Autoconf's implementation of
+ dnl AC_CHECK_TYPE checks includes unistd.h.
+ AC_CHECK_TYPE(major_t, unsigned int)
+ AC_CHECK_TYPE(minor_t, unsigned int)
+
+ AC_REQUIRE([AC_HEADER_MAJOR])
+])
diff --git a/m4/jm-winsz1.m4 b/m4/jm-winsz1.m4
new file mode 100644
index 0000000..52653b7
--- /dev/null
+++ b/m4/jm-winsz1.m4
@@ -0,0 +1,47 @@
+#serial 9
+
+# Copyright (C) 1996, 1999, 2001, 2002, 2004, 2006 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl From Jim Meyering and Paul Eggert.
+AC_DEFUN([gl_HEADER_TIOCGWINSZ_IN_TERMIOS_H],
+[AC_REQUIRE([AC_SYS_POSIX_TERMIOS])
+ AC_CACHE_CHECK([whether use of TIOCGWINSZ requires termios.h],
+ jm_cv_sys_tiocgwinsz_needs_termios_h,
+ [jm_cv_sys_tiocgwinsz_needs_termios_h=no
+
+ if test $ac_cv_sys_posix_termios = yes; then
+ AC_EGREP_CPP([yes],
+ [#include <sys/types.h>
+# include <termios.h>
+# ifdef TIOCGWINSZ
+ yes
+# endif
+ ], jm_cv_sys_tiocgwinsz_needs_termios_h=yes)
+ fi
+ ])
+])
+
+AC_DEFUN([gl_WINSIZE_IN_PTEM],
+ [AC_REQUIRE([AC_SYS_POSIX_TERMIOS])
+ AC_CACHE_CHECK([whether use of struct winsize requires sys/ptem.h],
+ jm_cv_sys_struct_winsize_needs_sys_ptem_h,
+ [jm_cv_sys_struct_winsize_needs_sys_ptem_h=yes
+ if test $ac_cv_sys_posix_termios = yes; then
+ AC_TRY_COMPILE([#include <termios.h>],
+ [struct winsize x;
+ if (sizeof x > 0) return 0;],
+ [jm_cv_sys_struct_winsize_needs_sys_ptem_h=no])
+ fi
+ if test $jm_cv_sys_struct_winsize_needs_sys_ptem_h = yes; then
+ AC_TRY_COMPILE([#include <sys/ptem.h>],
+ [struct winsize x;
+ if (sizeof x > 0) return 0;],
+ [], [jm_cv_sys_struct_winsize_needs_sys_ptem_h=no])
+ fi])
+ if test $jm_cv_sys_struct_winsize_needs_sys_ptem_h = yes; then
+ AC_DEFINE([WINSIZE_IN_PTEM], 1,
+ [Define if sys/ptem.h is required for struct winsize.])
+ fi])
diff --git a/m4/jm-winsz2.m4 b/m4/jm-winsz2.m4
new file mode 100644
index 0000000..66c5040
--- /dev/null
+++ b/m4/jm-winsz2.m4
@@ -0,0 +1,28 @@
+#serial 6
+
+# Copyright (C) 1996, 1999, 2001, 2004 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL],
+[AC_REQUIRE([gl_HEADER_TIOCGWINSZ_IN_TERMIOS_H])
+ AC_CACHE_CHECK([whether use of TIOCGWINSZ requires sys/ioctl.h],
+ jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h,
+ [jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h=no
+
+ if test $jm_cv_sys_tiocgwinsz_needs_termios_h = no; then
+ AC_EGREP_CPP([yes],
+ [#include <sys/types.h>
+# include <sys/ioctl.h>
+# ifdef TIOCGWINSZ
+ yes
+# endif
+ ], jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h=yes)
+ fi
+ ])
+ if test $jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h = yes; then
+ AC_DEFINE(GWINSZ_IN_SYS_IOCTL, 1,
+ [Define if your system defines TIOCGWINSZ in sys/ioctl.h.])
+ fi
+])
diff --git a/m4/lchmod.m4 b/m4/lchmod.m4
new file mode 100644
index 0000000..06467a0
--- /dev/null
+++ b/m4/lchmod.m4
@@ -0,0 +1,14 @@
+#serial 2
+
+dnl Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+dnl Provide a replacement for lchmod on hosts that lack it.
+
+AC_DEFUN([gl_FUNC_LCHMOD],
+[
+ AC_CHECK_FUNCS_ONCE([lchmod])
+])
diff --git a/m4/lchown.m4 b/m4/lchown.m4
new file mode 100644
index 0000000..a7b3572
--- /dev/null
+++ b/m4/lchown.m4
@@ -0,0 +1,19 @@
+#serial 11
+
+dnl Copyright (C) 1998, 2001, 2003, 2004, 2005, 2006 Free Software
+dnl Foundation, Inc.
+
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Jim Meyering.
+dnl Provide lchown on systems that lack it.
+
+AC_DEFUN([gl_FUNC_LCHOWN],
+[
+ AC_REQUIRE([AC_TYPE_UID_T])
+ AC_REQUIRE([gl_FUNC_CHOWN])
+ AC_CHECK_DECLS_ONCE([lchown])
+ AC_REPLACE_FUNCS(lchown)
+])
diff --git a/m4/lib-check.m4 b/m4/lib-check.m4
new file mode 100644
index 0000000..2123767
--- /dev/null
+++ b/m4/lib-check.m4
@@ -0,0 +1,61 @@
+#serial 10
+
+dnl Misc lib-related macros for coreutils.
+
+# Copyright (C) 1993, 1994, 1995, 1996, 1997, 2000, 2001, 2003, 2004,
+# 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Written by Jim Meyering.
+
+AC_DEFUN([cu_LIB_CHECK],
+[
+
+ # Check for libypsec.a on Dolphin M88K machines.
+ AC_CHECK_LIB(ypsec, main)
+
+ # m88k running dgux 5.4 needs this
+ AC_CHECK_LIB(ldgc, main)
+
+ # The -lsun library is required for YP support on Irix-4.0.5 systems.
+ # m88k/svr3 DolphinOS systems using YP need -lypsec for id.
+ AC_SEARCH_LIBS(yp_match, [sun ypsec])
+
+ # SysV needs -lsec, older versions of Linux need -lshadow for
+ # shadow passwords. UnixWare 7 needs -lgen.
+ AC_SEARCH_LIBS(getspnam, [shadow sec gen])
+
+ AC_CHECK_HEADERS(shadow.h)
+
+ # Requirements for su.c.
+ shadow_includes="\
+$ac_includes_default
+#if HAVE_SHADOW_H
+# include <shadow.h>
+#endif
+"
+ AC_CHECK_MEMBERS([struct spwd.sp_pwdp],,,[$shadow_includes])
+ AC_CHECK_FUNCS(getspnam)
+
+ # SCO-ODT-3.0 is reported to need -lufc for crypt.
+ # NetBSD needs -lcrypt for crypt.
+ cu_saved_libs="$LIBS"
+ AC_SEARCH_LIBS(crypt, [ufc crypt],
+ [test "$ac_cv_search_crypt" = "none required" ||
+ LIB_CRYPT="$ac_cv_search_crypt"])
+ LIBS="$cu_saved_libs"
+ AC_SUBST(LIB_CRYPT)
+])
diff --git a/m4/lib-ignore.m4 b/m4/lib-ignore.m4
new file mode 100644
index 0000000..e518f81
--- /dev/null
+++ b/m4/lib-ignore.m4
@@ -0,0 +1,43 @@
+# If possible, ignore libraries that are not depended on.
+
+dnl Copyright (C) 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Paul Eggert.
+
+AC_DEFUN([gl_IGNORE_UNUSED_LIBRARIES],
+[
+ AC_CACHE_CHECK([for flag to ignore unused libraries],
+ [gl_cv_ignore_unused_libraries],
+ [gl_cv_ignore_unused_libraries=none
+ gl_saved_ldflags=$LDFLAGS
+ gl_saved_libs=$LIBS
+ # Link with -lm to detect binutils 2.16 bug with --as-needed; see
+ # <http://lists.gnu.org/archive/html/bug-gnulib/2006-06/msg00131.html>.
+ LIBS="$LIBS -lm"
+ # Use long option sequences like '-z ignore' to test for the feature,
+ # to forestall problems with linkers that have -z, -i, -g, -n, etc. flags.
+ # GCC + binutils likes '-Wl,--as-needed'.
+ # GCC + Solaris ld likes '-Wl,-z,ignore'.
+ # Sun C likes '-z ignore'.
+ # Don't try bare '--as-needed'; nothing likes it and the HP-UX 11.11
+ # native cc issues annoying warnings and then ignores it,
+ # which would cause us to incorrectly conclude that it worked.
+ for gl_flags in \
+ '-Wl,--as-needed' \
+ '-Wl,-z,ignore' \
+ '-z ignore'
+ do
+ LDFLAGS="$gl_flags $LDFLAGS"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM()],
+ [gl_cv_ignore_unused_libraries=$gl_flags])
+ LDFLAGS=$gl_saved_ldflags
+ test "$gl_cv_ignore_unused_libraries" != none && break
+ done
+ LIBS=$gl_saved_libs])
+
+ test "$gl_cv_ignore_unused_libraries" != none &&
+ LDFLAGS="$LDFLAGS $gl_cv_ignore_unused_libraries"
+])
diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4
new file mode 100644
index 0000000..96c4e2c
--- /dev/null
+++ b/m4/lib-ld.m4
@@ -0,0 +1,110 @@
+# lib-ld.m4 serial 3 (gettext-0.13)
+dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Subroutines of libtool.m4,
+dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
+dnl with libtool.m4.
+
+dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
+AC_DEFUN([AC_LIB_PROG_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ acl_cv_prog_gnu_ld=yes ;;
+*)
+ acl_cv_prog_gnu_ld=no ;;
+esac])
+with_gnu_ld=$acl_cv_prog_gnu_ld
+])
+
+dnl From libtool-1.4. Sets the variable LD.
+AC_DEFUN([AC_LIB_PROG_LD],
+[AC_ARG_WITH(gnu-ld,
+[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by GCC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]* | [A-Za-z]:[\\/]*)]
+ [re_direlt='/[^/][^/]*/\.\./']
+ # Canonicalize the path of ld
+ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(acl_cv_path_LD,
+[if test -z "$LD"; then
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ acl_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break ;;
+ *)
+ test "$with_gnu_ld" != yes && break ;;
+ esac
+ fi
+ done
+ IFS="$ac_save_ifs"
+else
+ acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_LIB_PROG_LD_GNU
+])
diff --git a/m4/lib-link.m4 b/m4/lib-link.m4
new file mode 100644
index 0000000..f157d98
--- /dev/null
+++ b/m4/lib-link.m4
@@ -0,0 +1,709 @@
+# lib-link.m4 serial 13 (gettext-0.16.2)
+dnl Copyright (C) 2001-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_PREREQ(2.54)
+
+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
+dnl augments the CPPFLAGS variable.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_LINKFLAGS],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+ define([Name],[translit([$1],[./-], [___])])
+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
+ ac_cv_lib[]Name[]_libs="$LIB[]NAME"
+ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
+ ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
+ ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
+ ])
+ LIB[]NAME="$ac_cv_lib[]Name[]_libs"
+ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
+ INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
+ LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+ AC_SUBST([LIB]NAME)
+ AC_SUBST([LTLIB]NAME)
+ AC_SUBST([LIB]NAME[_PREFIX])
+ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
+ dnl results of this search when this library appears as a dependency.
+ HAVE_LIB[]NAME=yes
+ undefine([Name])
+ undefine([NAME])
+])
+
+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
+dnl searches for libname and the libraries corresponding to explicit and
+dnl implicit dependencies, together with the specified include files and
+dnl the ability to compile and link the specified testcode. If found, it
+dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
+dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+ define([Name],[translit([$1],[./-], [___])])
+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+
+ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
+ dnl accordingly.
+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
+
+ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
+ dnl because if the user has installed lib[]Name and not disabled its use
+ dnl via --without-lib[]Name-prefix, he wants to use it.
+ ac_save_CPPFLAGS="$CPPFLAGS"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+
+ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
+ ac_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIB[]NAME"
+ AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
+ LIBS="$ac_save_LIBS"
+ ])
+ if test "$ac_cv_lib[]Name" = yes; then
+ HAVE_LIB[]NAME=yes
+ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
+ AC_MSG_CHECKING([how to link with lib[]$1])
+ AC_MSG_RESULT([$LIB[]NAME])
+ else
+ HAVE_LIB[]NAME=no
+ dnl If $LIB[]NAME didn't lead to a usable library, we don't need
+ dnl $INC[]NAME either.
+ CPPFLAGS="$ac_save_CPPFLAGS"
+ LIB[]NAME=
+ LTLIB[]NAME=
+ LIB[]NAME[]_PREFIX=
+ fi
+ AC_SUBST([HAVE_LIB]NAME)
+ AC_SUBST([LIB]NAME)
+ AC_SUBST([LTLIB]NAME)
+ AC_SUBST([LIB]NAME[_PREFIX])
+ undefine([Name])
+ undefine([NAME])
+])
+
+dnl Determine the platform dependent parameters needed to use rpath:
+dnl acl_libext,
+dnl acl_shlibext,
+dnl acl_hardcode_libdir_flag_spec,
+dnl acl_hardcode_libdir_separator,
+dnl acl_hardcode_direct,
+dnl acl_hardcode_minus_L.
+AC_DEFUN([AC_LIB_RPATH],
+[
+ dnl Tell automake >= 1.10 to complain if config.rpath is missing.
+ m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
+ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
+ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
+ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
+ AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+ . ./conftest.sh
+ rm -f ./conftest.sh
+ acl_cv_rpath=done
+ ])
+ wl="$acl_cv_wl"
+ acl_libext="$acl_cv_libext"
+ acl_shlibext="$acl_cv_shlibext"
+ acl_libname_spec="$acl_cv_libname_spec"
+ acl_library_names_spec="$acl_cv_library_names_spec"
+ acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+ acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+ acl_hardcode_direct="$acl_cv_hardcode_direct"
+ acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
+ dnl Determine whether the user wants rpath handling at all.
+ AC_ARG_ENABLE(rpath,
+ [ --disable-rpath do not hardcode runtime library paths],
+ :, enable_rpath=yes)
+])
+
+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
+dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
+dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ dnl Autoconf >= 2.61 supports dots in --with options.
+ define([N_A_M_E],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit([$1],[.],[_])],[$1])])
+ dnl By default, look in $includedir and $libdir.
+ use_additional=yes
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ AC_LIB_ARG_WITH([lib]N_A_M_E[-prefix],
+[ --with-lib]N_A_M_E[-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
+ --without-lib]N_A_M_E[-prefix don't search for lib$1 in includedir and libdir],
+[
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/$acl_libdirstem"
+ fi
+ fi
+])
+ dnl Search the library and its dependencies in $additional_libdir and
+ dnl $LDFLAGS. Using breadth-first-seach.
+ LIB[]NAME=
+ LTLIB[]NAME=
+ INC[]NAME=
+ LIB[]NAME[]_PREFIX=
+ rpathdirs=
+ ltrpathdirs=
+ names_already_handled=
+ names_next_round='$1 $2'
+ while test -n "$names_next_round"; do
+ names_this_round="$names_next_round"
+ names_next_round=
+ for name in $names_this_round; do
+ already_handled=
+ for n in $names_already_handled; do
+ if test "$n" = "$name"; then
+ already_handled=yes
+ break
+ fi
+ done
+ if test -z "$already_handled"; then
+ names_already_handled="$names_already_handled $name"
+ dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
+ dnl or AC_LIB_HAVE_LINKFLAGS call.
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+ eval value=\"\$HAVE_LIB$uppername\"
+ if test -n "$value"; then
+ if test "$value" = yes; then
+ eval value=\"\$LIB$uppername\"
+ test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
+ eval value=\"\$LTLIB$uppername\"
+ test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
+ else
+ dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
+ dnl that this library doesn't exist. So just drop it.
+ :
+ fi
+ else
+ dnl Search the library lib$name in $additional_libdir and $LDFLAGS
+ dnl and the already constructed $LIBNAME/$LTLIBNAME.
+ found_dir=
+ found_la=
+ found_so=
+ found_a=
+ eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
+ if test -n "$acl_shlibext"; then
+ shrext=".$acl_shlibext" # typically: shrext=.so
+ else
+ shrext=
+ fi
+ if test $use_additional = yes; then
+ dir="$additional_libdir"
+ dnl The same code as in the loop below:
+ dnl First look for a shared library.
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
+ fi
+ dnl Then look for a static library.
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ for x in $LDFLAGS $LTLIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ case "$x" in
+ -L*)
+ dir=`echo "X$x" | sed -e 's/^X-L//'`
+ dnl First look for a shared library.
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
+ fi
+ dnl Then look for a static library.
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
+ ;;
+ esac
+ if test "X$found_dir" != "X"; then
+ break
+ fi
+ done
+ fi
+ if test "X$found_dir" != "X"; then
+ dnl Found the library.
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
+ if test "X$found_so" != "X"; then
+ dnl Linking with a shared library. We attempt to hardcode its
+ dnl directory into the executable's runpath, unless it's the
+ dnl standard /usr/lib.
+ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
+ dnl No hardcoding is needed.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ dnl Use an explicit option to hardcode DIR into the resulting
+ dnl binary.
+ dnl Potentially add DIR to ltrpathdirs.
+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $found_dir"
+ fi
+ dnl The hardcoding into $LIBNAME is system dependent.
+ if test "$acl_hardcode_direct" = yes; then
+ dnl Using DIR/libNAME.so during linking hardcodes DIR into the
+ dnl resulting binary.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+ dnl Use an explicit option to hardcode DIR into the resulting
+ dnl binary.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ dnl Potentially add DIR to rpathdirs.
+ dnl The rpathdirs will be appended to $LIBNAME at the end.
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $found_dir"
+ fi
+ else
+ dnl Rely on "-L$found_dir".
+ dnl But don't add it if it's already contained in the LDFLAGS
+ dnl or the already constructed $LIBNAME
+ haveit=
+ for x in $LDFLAGS $LIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
+ fi
+ if test "$acl_hardcode_minus_L" != no; then
+ dnl FIXME: Not sure whether we should use
+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+ dnl here.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
+ dnl here, because this doesn't fit in flags passed to the
+ dnl compiler. So give up. No hardcoding. This affects only
+ dnl very old systems.
+ dnl FIXME: Not sure whether we should use
+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+ dnl here.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+ fi
+ fi
+ fi
+ fi
+ else
+ if test "X$found_a" != "X"; then
+ dnl Linking with a static library.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
+ else
+ dnl We shouldn't come here, but anyway it's good to have a
+ dnl fallback.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
+ fi
+ fi
+ dnl Assume the include files are nearby.
+ additional_includedir=
+ case "$found_dir" in
+ */$acl_libdirstem | */$acl_libdirstem/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+ LIB[]NAME[]_PREFIX="$basedir"
+ additional_includedir="$basedir/include"
+ ;;
+ esac
+ if test "X$additional_includedir" != "X"; then
+ dnl Potentially add $additional_includedir to $INCNAME.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/include,
+ dnl 2. if it's /usr/local/include and we are using GCC on Linux,
+ dnl 3. if it's already present in $CPPFLAGS or the already
+ dnl constructed $INCNAME,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ for x in $CPPFLAGS $INC[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ dnl Really add $additional_includedir to $INCNAME.
+ INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ fi
+ dnl Look for dependencies.
+ if test -n "$found_la"; then
+ dnl Read the .la file. It defines the variables
+ dnl dlname, library_names, old_library, dependency_libs, current,
+ dnl age, revision, installed, dlopen, dlpreopen, libdir.
+ save_libdir="$libdir"
+ case "$found_la" in
+ */* | *\\*) . "$found_la" ;;
+ *) . "./$found_la" ;;
+ esac
+ libdir="$save_libdir"
+ dnl We use only dependency_libs.
+ for dep in $dependency_libs; do
+ case "$dep" in
+ -L*)
+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+ dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/lib,
+ dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
+ dnl 3. if it's already present in $LDFLAGS or the already
+ dnl constructed $LIBNAME,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+ haveit=
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ haveit=
+ for x in $LDFLAGS $LIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LIBNAME.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
+ fi
+ fi
+ haveit=
+ for x in $LDFLAGS $LTLIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LTLIBNAME.
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ ;;
+ -R*)
+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
+ if test "$enable_rpath" != no; then
+ dnl Potentially add DIR to rpathdirs.
+ dnl The rpathdirs will be appended to $LIBNAME at the end.
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ dnl Potentially add DIR to ltrpathdirs.
+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $dir"
+ fi
+ fi
+ ;;
+ -l*)
+ dnl Handle this in the next round.
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+ ;;
+ *.la)
+ dnl Handle this in the next round. Throw away the .la's
+ dnl directory; it is already contained in a preceding -L
+ dnl option.
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+ ;;
+ *)
+ dnl Most likely an immediate library name.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
+ ;;
+ esac
+ done
+ fi
+ else
+ dnl Didn't find the library; assume it is in the system directories
+ dnl known to the linker and runtime loader. (All the system
+ dnl directories known to the linker should also be known to the
+ dnl runtime loader, otherwise the system is severely misconfigured.)
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
+ fi
+ fi
+ fi
+ done
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n "$acl_hardcode_libdir_separator"; then
+ dnl Weird platform: only the last -rpath option counts, the user must
+ dnl pass all path elements in one option. We can arrange that for a
+ dnl single library, but not when more than one $LIBNAMEs are used.
+ alldirs=
+ for found_dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+ done
+ dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+ else
+ dnl The -rpath options are cumulative.
+ for found_dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$found_dir"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+ done
+ fi
+ fi
+ if test "X$ltrpathdirs" != "X"; then
+ dnl When using libtool, the option that works for both libraries and
+ dnl executables is -R. The -R options are cumulative.
+ for found_dir in $ltrpathdirs; do
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
+ done
+ fi
+])
+
+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
+dnl unless already present in VAR.
+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
+dnl contains two or three consecutive elements that belong together.
+AC_DEFUN([AC_LIB_APPENDTOVAR],
+[
+ for element in [$2]; do
+ haveit=
+ for x in $[$1]; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X$element"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ [$1]="${[$1]}${[$1]:+ }$element"
+ fi
+ done
+])
+
+dnl For those cases where a variable contains several -L and -l options
+dnl referring to unknown libraries and directories, this macro determines the
+dnl necessary additional linker options for the runtime path.
+dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
+dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
+dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
+dnl otherwise linking without libtool is assumed.
+AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
+[
+ AC_REQUIRE([AC_LIB_RPATH])
+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+ $1=
+ if test "$enable_rpath" != no; then
+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+ dnl Use an explicit option to hardcode directories into the resulting
+ dnl binary.
+ rpathdirs=
+ next=
+ for opt in $2; do
+ if test -n "$next"; then
+ dir="$next"
+ dnl No need to hardcode the standard /usr/lib.
+ if test "X$dir" != "X/usr/$acl_libdirstem"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ next=
+ else
+ case $opt in
+ -L) next=yes ;;
+ -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
+ dnl No need to hardcode the standard /usr/lib.
+ if test "X$dir" != "X/usr/$acl_libdirstem"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ next= ;;
+ *) next= ;;
+ esac
+ fi
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n ""$3""; then
+ dnl libtool is used for linking. Use -R options.
+ for dir in $rpathdirs; do
+ $1="${$1}${$1:+ }-R$dir"
+ done
+ else
+ dnl The linker is used for linking directly.
+ if test -n "$acl_hardcode_libdir_separator"; then
+ dnl Weird platform: only the last -rpath option counts, the user
+ dnl must pass all path elements in one option.
+ alldirs=
+ for dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
+ done
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ $1="$flag"
+ else
+ dnl The -rpath options are cumulative.
+ for dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$dir"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ $1="${$1}${$1:+ }$flag"
+ done
+ fi
+ fi
+ fi
+ fi
+ fi
+ AC_SUBST([$1])
+])
diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4
new file mode 100644
index 0000000..a8684e1
--- /dev/null
+++ b/m4/lib-prefix.m4
@@ -0,0 +1,185 @@
+# lib-prefix.m4 serial 5 (gettext-0.15)
+dnl Copyright (C) 2001-2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
+dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
+dnl require excessive bracketing.
+ifdef([AC_HELP_STRING],
+[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
+[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
+
+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
+dnl to access previously installed libraries. The basic assumption is that
+dnl a user will want packages to use other packages he previously installed
+dnl with the same --prefix option.
+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
+dnl libraries, but is otherwise very convenient.
+AC_DEFUN([AC_LIB_PREFIX],
+[
+ AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ dnl By default, look in $includedir and $libdir.
+ use_additional=yes
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ AC_LIB_ARG_WITH([lib-prefix],
+[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
+ --without-lib-prefix don't search for libraries in includedir and libdir],
+[
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/$acl_libdirstem"
+ fi
+ fi
+])
+ if test $use_additional = yes; then
+ dnl Potentially add $additional_includedir to $CPPFLAGS.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/include,
+ dnl 2. if it's already present in $CPPFLAGS,
+ dnl 3. if it's /usr/local/include and we are using GCC on Linux,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ for x in $CPPFLAGS; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ dnl Really add $additional_includedir to $CPPFLAGS.
+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ dnl Potentially add $additional_libdir to $LDFLAGS.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/lib,
+ dnl 2. if it's already present in $LDFLAGS,
+ dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+ haveit=
+ for x in $LDFLAGS; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LDFLAGS.
+ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ fi
+])
+
+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
+dnl acl_final_exec_prefix, containing the values to which $prefix and
+dnl $exec_prefix will expand at the end of the configure script.
+AC_DEFUN([AC_LIB_PREPARE_PREFIX],
+[
+ dnl Unfortunately, prefix and exec_prefix get only finally determined
+ dnl at the end of configure.
+ if test "X$prefix" = "XNONE"; then
+ acl_final_prefix="$ac_default_prefix"
+ else
+ acl_final_prefix="$prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ acl_final_exec_prefix='${prefix}'
+ else
+ acl_final_exec_prefix="$exec_prefix"
+ fi
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+ prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
+dnl variables prefix and exec_prefix bound to the values they will have
+dnl at the end of the configure script.
+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
+[
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ $1
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_PREPARE_MULTILIB creates a variable acl_libdirstem, containing
+dnl the basename of the libdir, either "lib" or "lib64".
+AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
+[
+ dnl There is no formal standard regarding lib and lib64. The current
+ dnl practice is that on a system supporting 32-bit and 64-bit instruction
+ dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit
+ dnl libraries go under $prefix/lib. We determine the compiler's default
+ dnl mode by looking at the compiler's library search path. If at least
+ dnl of its elements ends in /lib64 or points to a directory whose absolute
+ dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the
+ dnl default, namely "lib".
+ acl_libdirstem=lib
+ searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+ if test -n "$searchpath"; then
+ acl_save_IFS="${IFS= }"; IFS=":"
+ for searchdir in $searchpath; do
+ if test -d "$searchdir"; then
+ case "$searchdir" in
+ */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+ *) searchdir=`cd "$searchdir" && pwd`
+ case "$searchdir" in
+ */lib64 ) acl_libdirstem=lib64 ;;
+ esac ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_IFS"
+ fi
+])
diff --git a/m4/link-follow.m4 b/m4/link-follow.m4
new file mode 100644
index 0000000..69a7018
--- /dev/null
+++ b/m4/link-follow.m4
@@ -0,0 +1,64 @@
+#serial 9
+dnl Run a program to determine whether link(2) follows symlinks.
+dnl Set LINK_FOLLOWS_SYMLINKS accordingly.
+
+# Copyright (C) 1999, 2000, 2001, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_AC_FUNC_LINK_FOLLOWS_SYMLINK],
+[dnl
+ AC_CACHE_CHECK(
+ [whether link(2) dereferences a symlink specified with a trailing slash],
+ jm_ac_cv_func_link_follows_symlink,
+ [
+ # Create a regular file.
+ echo > conftest.file
+ AC_TRY_RUN(
+ [
+# include <sys/types.h>
+# include <sys/stat.h>
+# include <unistd.h>
+# include <stdlib.h>
+
+# define SAME_INODE(Stat_buf_1, Stat_buf_2) \
+ ((Stat_buf_1).st_ino == (Stat_buf_2).st_ino \
+ && (Stat_buf_1).st_dev == (Stat_buf_2).st_dev)
+
+ int
+ main ()
+ {
+ const char *file = "conftest.file";
+ const char *sym = "conftest.sym";
+ const char *hard = "conftest.hard";
+ struct stat sb_file, sb_hard;
+
+ /* Create a symlink to the regular file. */
+ if (symlink (file, sym))
+ abort ();
+
+ /* Create a hard link to that symlink. */
+ if (link (sym, hard))
+ abort ();
+
+ if (lstat (hard, &sb_hard))
+ abort ();
+ if (lstat (file, &sb_file))
+ abort ();
+
+ /* If the dev/inode of hard and file are the same, then
+ the link call followed the symlink. */
+ return SAME_INODE (sb_hard, sb_file) ? 0 : 1;
+ }
+ ],
+ jm_ac_cv_func_link_follows_symlink=yes,
+ jm_ac_cv_func_link_follows_symlink=no,
+ jm_ac_cv_func_link_follows_symlink=yes dnl We're cross compiling.
+ )
+ ])
+ if test $jm_ac_cv_func_link_follows_symlink = yes; then
+ AC_DEFINE(LINK_FOLLOWS_SYMLINKS, 1,
+ [Define if `link(2)' dereferences symbolic links.])
+ fi
+])
diff --git a/m4/localcharset.m4 b/m4/localcharset.m4
new file mode 100644
index 0000000..b2b7733
--- /dev/null
+++ b/m4/localcharset.m4
@@ -0,0 +1,16 @@
+# localcharset.m4 serial 5
+dnl Copyright (C) 2002, 2004, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_LOCALCHARSET],
+[
+ dnl Prerequisites of lib/localcharset.c.
+ AC_REQUIRE([AM_LANGINFO_CODESET])
+ AC_CHECK_DECLS_ONCE(getc_unlocked)
+
+ dnl Prerequisites of the lib/Makefile.am snippet.
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([gl_GLIBC21])
+])
diff --git a/m4/long-options.m4 b/m4/long-options.m4
new file mode 100644
index 0000000..2712bad
--- /dev/null
+++ b/m4/long-options.m4
@@ -0,0 +1,12 @@
+# long-options.m4 serial 5
+dnl Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_LONG_OPTIONS],
+[
+ AC_LIBOBJ([long-options])
+
+ dnl Prerequisites of lib/long-options.c.
+])
diff --git a/m4/longdouble.m4 b/m4/longdouble.m4
new file mode 100644
index 0000000..25590f4
--- /dev/null
+++ b/m4/longdouble.m4
@@ -0,0 +1,31 @@
+# longdouble.m4 serial 2 (gettext-0.15)
+dnl Copyright (C) 2002-2003, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Test whether the compiler supports the 'long double' type.
+dnl Prerequisite: AC_PROG_CC
+
+dnl This file is only needed in autoconf <= 2.59. Newer versions of autoconf
+dnl have a macro AC_TYPE_LONG_DOUBLE with identical semantics.
+
+AC_DEFUN([gt_TYPE_LONGDOUBLE],
+[
+ AC_CACHE_CHECK([for long double], gt_cv_c_long_double,
+ [if test "$GCC" = yes; then
+ gt_cv_c_long_double=yes
+ else
+ AC_TRY_COMPILE([
+ /* The Stardent Vistra knows sizeof(long double), but does not support it. */
+ long double foo = 0.0;
+ /* On Ultrix 4.3 cc, long double is 4 and double is 8. */
+ int array [2*(sizeof(long double) >= sizeof(double)) - 1];
+ ], ,
+ gt_cv_c_long_double=yes, gt_cv_c_long_double=no)
+ fi])
+ if test $gt_cv_c_long_double = yes; then
+ AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.])
+ fi
+])
diff --git a/m4/longlong.m4 b/m4/longlong.m4
new file mode 100644
index 0000000..1f9e862
--- /dev/null
+++ b/m4/longlong.m4
@@ -0,0 +1,72 @@
+# longlong.m4 serial 10
+dnl Copyright (C) 1999-2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+
+# Define HAVE_LONG_LONG_INT if 'long long int' works.
+# This fixes a bug in Autoconf 2.60, but can be removed once we
+# assume 2.61 everywhere.
+
+# Note: If the type 'long long int' exists but is only 32 bits large
+# (as on some very old compilers), HAVE_LONG_LONG_INT will not be
+# defined. In this case you can treat 'long long int' like 'long int'.
+
+AC_DEFUN([AC_TYPE_LONG_LONG_INT],
+[
+ AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[long long int ll = 9223372036854775807ll;
+ long long int nll = -9223372036854775807LL;
+ typedef int a[((-9223372036854775807LL < 0
+ && 0 < 9223372036854775807ll)
+ ? 1 : -1)];
+ int i = 63;]],
+ [[long long int llmax = 9223372036854775807ll;
+ return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+ | (llmax / ll) | (llmax % ll));]])],
+ [dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
+ dnl If cross compiling, assume the bug isn't important, since
+ dnl nobody cross compiles for this platform as far as we know.
+ AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[@%:@include <limits.h>
+ @%:@ifndef LLONG_MAX
+ @%:@ define HALF \
+ (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+ @%:@ define LLONG_MAX (HALF - 1 + HALF)
+ @%:@endif]],
+ [[long long int n = 1;
+ int i;
+ for (i = 0; ; i++)
+ {
+ long long int m = n << i;
+ if (m >> i != n)
+ return 1;
+ if (LLONG_MAX / 2 < m)
+ break;
+ }
+ return 0;]])],
+ [ac_cv_type_long_long_int=yes],
+ [ac_cv_type_long_long_int=no],
+ [ac_cv_type_long_long_int=yes])],
+ [ac_cv_type_long_long_int=no])])
+ if test $ac_cv_type_long_long_int = yes; then
+ AC_DEFINE([HAVE_LONG_LONG_INT], 1,
+ [Define to 1 if the system has the type `long long int'.])
+ fi
+])
+
+# This macro is obsolescent and should go away soon.
+AC_DEFUN([gl_AC_TYPE_LONG_LONG],
+[
+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+ ac_cv_type_long_long=$ac_cv_type_long_long_int
+ if test $ac_cv_type_long_long = yes; then
+ AC_DEFINE(HAVE_LONG_LONG, 1,
+ [Define if you have the 'long long' type.])
+ fi
+])
diff --git a/m4/ls-mntd-fs.m4 b/m4/ls-mntd-fs.m4
new file mode 100644
index 0000000..21ac4e7
--- /dev/null
+++ b/m4/ls-mntd-fs.m4
@@ -0,0 +1,337 @@
+#serial 26
+# How to list mounted file systems.
+
+# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl From Jim Meyering.
+dnl
+dnl This is not pretty. I've just taken the autoconf code and wrapped
+dnl it in an AC_DEFUN and made some other fixes.
+dnl
+
+# Replace Autoconf's AC_FUNC_GETMNTENT to work around a bug in Autoconf
+# through Autoconf 2.59. We can remove this once we assume Autoconf 2.60
+# or later.
+AC_DEFUN([AC_FUNC_GETMNTENT],
+[# getmntent is in the standard C library on UNICOS, in -lsun on Irix 4,
+# -lseq on Dynix/PTX, -lgen on Unixware.
+AC_SEARCH_LIBS(getmntent, [sun seq gen])
+AC_CHECK_FUNCS(getmntent)
+])
+
+# gl_LIST_MOUNTED_FILE_SYSTEMS([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+AC_DEFUN([gl_LIST_MOUNTED_FILE_SYSTEMS],
+ [
+AC_CHECK_FUNCS(listmntent getmntinfo)
+AC_CHECK_HEADERS_ONCE(sys/param.h sys/statvfs.h)
+
+# We must include grp.h before ucred.h on OSF V4.0, since ucred.h uses
+# NGROUPS (as the array dimension for a struct member) without a definition.
+AC_CHECK_HEADERS(sys/ucred.h, [], [], [#include <grp.h>])
+
+AC_CHECK_HEADERS(sys/mount.h, [], [],
+ [AC_INCLUDES_DEFAULT
+ [#if HAVE_SYS_PARAM_H
+ #include <sys/param.h>
+ #endif]])
+
+AC_CHECK_HEADERS(mntent.h sys/fs_types.h)
+ getfsstat_includes="\
+$ac_includes_default
+#if HAVE_SYS_PARAM_H
+# include <sys/param.h> /* needed by powerpc-apple-darwin1.3.7 */
+#endif
+#if HAVE_SYS_UCRED_H
+# include <grp.h> /* needed for definition of NGROUPS */
+# include <sys/ucred.h> /* needed by powerpc-apple-darwin1.3.7 */
+#endif
+#if HAVE_SYS_MOUNT_H
+# include <sys/mount.h>
+#endif
+#if HAVE_SYS_FS_TYPES_H
+# include <sys/fs_types.h> /* needed by powerpc-apple-darwin1.3.7 */
+#endif
+"
+AC_CHECK_MEMBERS([struct fsstat.f_fstypename],,,[$getfsstat_includes])
+
+# Determine how to get the list of mounted file systems.
+ac_list_mounted_fs=
+
+# If the getmntent function is available but not in the standard library,
+# make sure LIBS contains the appropriate -l option.
+AC_FUNC_GETMNTENT
+
+# This test must precede the ones for getmntent because Unicos-9 is
+# reported to have the getmntent function, but its support is incompatible
+# with other getmntent implementations.
+
+# NOTE: Normally, I wouldn't use a check for system type as I've done for
+# `CRAY' below since that goes against the whole autoconf philosophy. But
+# I think there is too great a chance that some non-Cray system has a
+# function named listmntent to risk the false positive.
+
+if test -z "$ac_list_mounted_fs"; then
+ # Cray UNICOS 9
+ AC_MSG_CHECKING([for listmntent of Cray/Unicos-9])
+ AC_CACHE_VAL(fu_cv_sys_mounted_cray_listmntent,
+ [fu_cv_sys_mounted_cray_listmntent=no
+ AC_EGREP_CPP(yes,
+ [#ifdef _CRAY
+yes
+#endif
+ ], [test $ac_cv_func_listmntent = yes \
+ && fu_cv_sys_mounted_cray_listmntent=yes]
+ )
+ ]
+ )
+ AC_MSG_RESULT($fu_cv_sys_mounted_cray_listmntent)
+ if test $fu_cv_sys_mounted_cray_listmntent = yes; then
+ ac_list_mounted_fs=found
+ AC_DEFINE(MOUNTED_LISTMNTENT, 1,
+ [Define if there is a function named listmntent that can be used to
+ list all mounted file systems. (UNICOS)])
+ fi
+fi
+
+if test -z "$ac_list_mounted_fs"; then
+ # AIX.
+ AC_MSG_CHECKING([for mntctl function and struct vmount])
+ AC_CACHE_VAL(fu_cv_sys_mounted_vmount,
+ [AC_TRY_CPP([#include <fshelp.h>],
+ fu_cv_sys_mounted_vmount=yes,
+ fu_cv_sys_mounted_vmount=no)])
+ AC_MSG_RESULT($fu_cv_sys_mounted_vmount)
+ if test $fu_cv_sys_mounted_vmount = yes; then
+ ac_list_mounted_fs=found
+ AC_DEFINE(MOUNTED_VMOUNT, 1,
+ [Define if there is a function named mntctl that can be used to read
+ the list of mounted file systems, and there is a system header file
+ that declares `struct vmount.' (AIX)])
+ fi
+fi
+
+if test $ac_cv_func_getmntent = yes; then
+
+ # This system has the getmntent function.
+ # Determine whether it's the one-argument variant or the two-argument one.
+
+ if test -z "$ac_list_mounted_fs"; then
+ # 4.3BSD, SunOS, HP-UX, Dynix, Irix
+ AC_MSG_CHECKING([for one-argument getmntent function])
+ AC_CACHE_VAL(fu_cv_sys_mounted_getmntent1,
+ [AC_TRY_COMPILE([
+/* SunOS 4.1.x /usr/include/mntent.h needs this for FILE */
+#include <stdio.h>
+
+#include <mntent.h>
+#if !defined MOUNTED
+# if defined _PATH_MOUNTED /* GNU libc */
+# define MOUNTED _PATH_MOUNTED
+# endif
+# if defined MNT_MNTTAB /* HP-UX. */
+# define MOUNTED MNT_MNTTAB
+# endif
+# if defined MNTTABNAME /* Dynix. */
+# define MOUNTED MNTTABNAME
+# endif
+#endif
+],
+ [ struct mntent *mnt = 0; char *table = MOUNTED;
+ if (sizeof mnt && sizeof table) return 0;],
+ fu_cv_sys_mounted_getmntent1=yes,
+ fu_cv_sys_mounted_getmntent1=no)])
+ AC_MSG_RESULT($fu_cv_sys_mounted_getmntent1)
+ if test $fu_cv_sys_mounted_getmntent1 = yes; then
+ ac_list_mounted_fs=found
+ AC_DEFINE(MOUNTED_GETMNTENT1, 1,
+ [Define if there is a function named getmntent for reading the list
+ of mounted file systems, and that function takes a single argument.
+ (4.3BSD, SunOS, HP-UX, Dynix, Irix)])
+ fi
+ fi
+
+ if test -z "$ac_list_mounted_fs"; then
+ # SVR4
+ AC_MSG_CHECKING([for two-argument getmntent function])
+ AC_CACHE_VAL(fu_cv_sys_mounted_getmntent2,
+ [AC_EGREP_HEADER(getmntent, sys/mnttab.h,
+ fu_cv_sys_mounted_getmntent2=yes,
+ fu_cv_sys_mounted_getmntent2=no)])
+ AC_MSG_RESULT($fu_cv_sys_mounted_getmntent2)
+ if test $fu_cv_sys_mounted_getmntent2 = yes; then
+ ac_list_mounted_fs=found
+ AC_DEFINE(MOUNTED_GETMNTENT2, 1,
+ [Define if there is a function named getmntent for reading the list of
+ mounted file systems, and that function takes two arguments. (SVR4)])
+ AC_CHECK_FUNCS(hasmntopt)
+ fi
+ fi
+
+fi
+
+if test -z "$ac_list_mounted_fs"; then
+ # DEC Alpha running OSF/1, and Apple Darwin 1.3.
+ # powerpc-apple-darwin1.3.7 needs sys/param.h sys/ucred.h sys/fs_types.h
+
+ AC_MSG_CHECKING([for getfsstat function])
+ AC_CACHE_VAL(fu_cv_sys_mounted_getfsstat,
+ [AC_TRY_LINK([
+#include <sys/types.h>
+#if HAVE_STRUCT_FSSTAT_F_FSTYPENAME
+# define FS_TYPE(Ent) ((Ent).f_fstypename)
+#else
+# define FS_TYPE(Ent) mnt_names[(Ent).f_type]
+#endif
+]$getfsstat_includes
+,
+ [struct statfs *stats;
+ int numsys = getfsstat ((struct statfs *)0, 0L, MNT_WAIT);
+ char *t = FS_TYPE (*stats); ],
+ fu_cv_sys_mounted_getfsstat=yes,
+ fu_cv_sys_mounted_getfsstat=no)])
+ AC_MSG_RESULT($fu_cv_sys_mounted_getfsstat)
+ if test $fu_cv_sys_mounted_getfsstat = yes; then
+ ac_list_mounted_fs=found
+ AC_DEFINE(MOUNTED_GETFSSTAT, 1,
+ [Define if there is a function named getfsstat for reading the
+ list of mounted file systems. (DEC Alpha running OSF/1)])
+ fi
+fi
+
+if test -z "$ac_list_mounted_fs"; then
+ # SVR3
+ AC_MSG_CHECKING([for FIXME existence of three headers])
+ AC_CACHE_VAL(fu_cv_sys_mounted_fread_fstyp,
+ [AC_TRY_CPP([
+#include <sys/statfs.h>
+#include <sys/fstyp.h>
+#include <mnttab.h>],
+ fu_cv_sys_mounted_fread_fstyp=yes,
+ fu_cv_sys_mounted_fread_fstyp=no)])
+ AC_MSG_RESULT($fu_cv_sys_mounted_fread_fstyp)
+ if test $fu_cv_sys_mounted_fread_fstyp = yes; then
+ ac_list_mounted_fs=found
+ AC_DEFINE(MOUNTED_FREAD_FSTYP, 1,
+ [Define if (like SVR2) there is no specific function for reading the
+ list of mounted file systems, and your system has these header files:
+ <sys/fstyp.h> and <sys/statfs.h>. (SVR3)])
+ fi
+fi
+
+if test -z "$ac_list_mounted_fs"; then
+ # 4.4BSD and DEC OSF/1.
+ AC_MSG_CHECKING([for getmntinfo function])
+ AC_CACHE_VAL(fu_cv_sys_mounted_getmntinfo,
+ [
+ test "$ac_cv_func_getmntinfo" = yes \
+ && fu_cv_sys_mounted_getmntinfo=yes \
+ || fu_cv_sys_mounted_getmntinfo=no
+ ])
+ AC_MSG_RESULT($fu_cv_sys_mounted_getmntinfo)
+ if test $fu_cv_sys_mounted_getmntinfo = yes; then
+ AC_MSG_CHECKING([whether getmntinfo returns statvfs structures])
+ AC_CACHE_VAL(fu_cv_sys_mounted_getmntinfo2,
+ [
+ AC_TRY_COMPILE([
+#if HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+#include <sys/types.h>
+#if HAVE_SYS_MOUNT_H
+# include <sys/mount.h>
+#endif
+#if HAVE_SYS_STATVFS_H
+# include <sys/statvfs.h>
+#endif
+extern int getmntinfo (struct statfs **, int);
+ ], [],
+ [fu_cv_sys_mounted_getmntinfo2=no],
+ [fu_cv_sys_mounted_getmntinfo2=yes])
+ ])
+ AC_MSG_RESULT([$fu_cv_sys_mounted_getmntinfo2])
+ if test $fu_cv_sys_mounted_getmntinfo2 = no; then
+ ac_list_mounted_fs=found
+ AC_DEFINE(MOUNTED_GETMNTINFO, 1,
+ [Define if there is a function named getmntinfo for reading the
+ list of mounted file systems and it returns an array of
+ 'struct statfs'. (4.4BSD, Darwin)])
+ else
+ ac_list_mounted_fs=found
+ AC_DEFINE(MOUNTED_GETMNTINFO2, 1,
+ [Define if there is a function named getmntinfo for reading the
+ list of mounted file systems and it returns an array of
+ 'struct statvfs'. (NetBSD 3.0)])
+ fi
+ fi
+fi
+
+if test -z "$ac_list_mounted_fs"; then
+ # Ultrix
+ AC_MSG_CHECKING([for getmnt function])
+ AC_CACHE_VAL(fu_cv_sys_mounted_getmnt,
+ [AC_TRY_CPP([
+#include <sys/fs_types.h>
+#include <sys/mount.h>],
+ fu_cv_sys_mounted_getmnt=yes,
+ fu_cv_sys_mounted_getmnt=no)])
+ AC_MSG_RESULT($fu_cv_sys_mounted_getmnt)
+ if test $fu_cv_sys_mounted_getmnt = yes; then
+ ac_list_mounted_fs=found
+ AC_DEFINE(MOUNTED_GETMNT, 1,
+ [Define if there is a function named getmnt for reading the list of
+ mounted file systems. (Ultrix)])
+ fi
+fi
+
+if test -z "$ac_list_mounted_fs"; then
+ # BeOS
+ AC_CHECK_FUNCS(next_dev fs_stat_dev)
+ AC_CHECK_HEADERS(fs_info.h)
+ AC_MSG_CHECKING([for BEOS mounted file system support functions])
+ if test $ac_cv_header_fs_info_h = yes \
+ && test $ac_cv_func_next_dev = yes \
+ && test $ac_cv_func_fs_stat_dev = yes; then
+ fu_result=yes
+ else
+ fu_result=no
+ fi
+ AC_MSG_RESULT($fu_result)
+ if test $fu_result = yes; then
+ ac_list_mounted_fs=found
+ AC_DEFINE(MOUNTED_FS_STAT_DEV, 1,
+ [Define if there are functions named next_dev and fs_stat_dev for
+ reading the list of mounted file systems. (BeOS)])
+ fi
+fi
+
+if test -z "$ac_list_mounted_fs"; then
+ # SVR2
+ AC_MSG_CHECKING([whether it is possible to resort to fread on /etc/mnttab])
+ AC_CACHE_VAL(fu_cv_sys_mounted_fread,
+ [AC_TRY_CPP([#include <mnttab.h>],
+ fu_cv_sys_mounted_fread=yes,
+ fu_cv_sys_mounted_fread=no)])
+ AC_MSG_RESULT($fu_cv_sys_mounted_fread)
+ if test $fu_cv_sys_mounted_fread = yes; then
+ ac_list_mounted_fs=found
+ AC_DEFINE(MOUNTED_FREAD, 1,
+ [Define if there is no specific function for reading the list of
+ mounted file systems. fread will be used to read /etc/mnttab.
+ (SVR2) ])
+ fi
+fi
+
+if test -z "$ac_list_mounted_fs"; then
+ AC_MSG_ERROR([could not determine how to read list of mounted file systems])
+ # FIXME -- no need to abort building the whole package
+ # Can't build mountlist.c or anything that needs its functions
+fi
+
+AS_IF([test $ac_list_mounted_fs = found], [$1], [$2])
+
+ ])
diff --git a/m4/lstat.m4 b/m4/lstat.m4
new file mode 100644
index 0000000..b9777a6
--- /dev/null
+++ b/m4/lstat.m4
@@ -0,0 +1,17 @@
+#serial 16
+
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl From Jim Meyering.
+
+AC_DEFUN([gl_FUNC_LSTAT],
+[
+ AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
+ dnl Note: AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK does AC_LIBOBJ(lstat).
+ :
+])
diff --git a/m4/mbchar.m4 b/m4/mbchar.m4
new file mode 100644
index 0000000..02f9eff
--- /dev/null
+++ b/m4/mbchar.m4
@@ -0,0 +1,13 @@
+# mbchar.m4 serial 6
+dnl Copyright (C) 2005-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl autoconf tests required for use of mbchar.m4
+dnl From Bruno Haible.
+
+AC_DEFUN([gl_MBCHAR],
+[
+ AC_REQUIRE([AC_GNU_SOURCE])
+])
diff --git a/m4/mbiter.m4 b/m4/mbiter.m4
new file mode 100644
index 0000000..7d51af1
--- /dev/null
+++ b/m4/mbiter.m4
@@ -0,0 +1,17 @@
+# mbiter.m4 serial 2
+dnl Copyright (C) 2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl autoconf tests required for use of mbiter.h
+dnl From Bruno Haible.
+
+AC_DEFUN([gl_MBITER],
+[
+ AC_REQUIRE([AC_TYPE_MBSTATE_T])
+ dnl The following line is that so the user can test HAVE_MBRTOWC before
+ dnl #include "mbiter.h" or "mbuiter.h".
+ AC_REQUIRE([gl_FUNC_MBRTOWC])
+ :
+])
diff --git a/m4/mbrtowc.m4 b/m4/mbrtowc.m4
new file mode 100644
index 0000000..a3bd911
--- /dev/null
+++ b/m4/mbrtowc.m4
@@ -0,0 +1,31 @@
+# mbrtowc.m4 serial 8
+dnl Copyright (C) 2001-2002, 2004-2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert
+
+dnl This file can be removed, and gl_FUNC_MBRTOWC replaced with
+dnl AC_FUNC_MBRTOWC, when autoconf 2.60 can be assumed everywhere.
+
+AC_DEFUN([gl_FUNC_MBRTOWC],
+[
+ dnl Same as AC_FUNC_MBRTOWC in autoconf-2.60.
+ AC_CACHE_CHECK([whether mbrtowc and mbstate_t are properly declared],
+ gl_cv_func_mbrtowc,
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <wchar.h>]],
+ [[wchar_t wc;
+ char const s[] = "";
+ size_t n = 1;
+ mbstate_t state;
+ return ! (sizeof state && (mbrtowc) (&wc, s, n, &state));]])],
+ gl_cv_func_mbrtowc=yes,
+ gl_cv_func_mbrtowc=no)])
+ if test $gl_cv_func_mbrtowc = yes; then
+ AC_DEFINE([HAVE_MBRTOWC], 1,
+ [Define to 1 if mbrtowc and mbstate_t are properly declared.])
+ fi
+])
diff --git a/m4/mbscasecmp.m4 b/m4/mbscasecmp.m4
new file mode 100644
index 0000000..7357769
--- /dev/null
+++ b/m4/mbscasecmp.m4
@@ -0,0 +1,16 @@
+# mbscasecmp.m4 serial 1
+dnl Copyright (C) 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_MBSCASECMP],
+[
+ gl_PREREQ_MBSCASECMP
+])
+
+# Prerequisites of lib/mbscasecmp.c.
+AC_DEFUN([gl_PREREQ_MBSCASECMP], [
+ AC_REQUIRE([gl_FUNC_MBRTOWC])
+ :
+])
diff --git a/m4/mbstate_t.m4 b/m4/mbstate_t.m4
new file mode 100644
index 0000000..df2a275
--- /dev/null
+++ b/m4/mbstate_t.m4
@@ -0,0 +1,30 @@
+# mbstate_t.m4 serial 9
+dnl Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# From Paul Eggert.
+
+# BeOS 5 has <wchar.h> but does not define mbstate_t,
+# so you can't declare an object of that type.
+# Check for this incompatibility with Standard C.
+
+# AC_TYPE_MBSTATE_T
+# -----------------
+AC_DEFUN([AC_TYPE_MBSTATE_T],
+ [AC_CACHE_CHECK([for mbstate_t], ac_cv_type_mbstate_t,
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [AC_INCLUDES_DEFAULT
+# include <wchar.h>],
+ [mbstate_t x; return sizeof x;])],
+ [ac_cv_type_mbstate_t=yes],
+ [ac_cv_type_mbstate_t=no])])
+ if test $ac_cv_type_mbstate_t = yes; then
+ AC_DEFINE([HAVE_MBSTATE_T], 1,
+ [Define to 1 if <wchar.h> declares mbstate_t.])
+ else
+ AC_DEFINE([mbstate_t], int,
+ [Define to a type if <wchar.h> does not define.])
+ fi])
diff --git a/m4/mbswidth.m4 b/m4/mbswidth.m4
new file mode 100644
index 0000000..241865f
--- /dev/null
+++ b/m4/mbswidth.m4
@@ -0,0 +1,42 @@
+# mbswidth.m4 serial 14
+dnl Copyright (C) 2000-2002, 2004, 2006, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl autoconf tests required for use of mbswidth.c
+dnl From Bruno Haible.
+
+AC_DEFUN([gl_MBSWIDTH],
+[
+ AC_CHECK_HEADERS_ONCE([wchar.h])
+ AC_CHECK_FUNCS_ONCE([isascii mbsinit])
+ gl_FUNC_MBRTOWC
+
+ dnl UnixWare 7.1.1 <wchar.h> has a declaration of a function mbswidth()
+ dnl that clashes with ours.
+ AC_CACHE_CHECK([whether mbswidth is declared in <wchar.h>],
+ ac_cv_have_decl_mbswidth,
+ [AC_TRY_COMPILE([
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+], [
+ char *p = (char *) mbswidth;
+ return !p;
+], ac_cv_have_decl_mbswidth=yes, ac_cv_have_decl_mbswidth=no)])
+ if test $ac_cv_have_decl_mbswidth = yes; then
+ ac_val=1
+ else
+ ac_val=0
+ fi
+ AC_DEFINE_UNQUOTED(HAVE_DECL_MBSWIDTH_IN_WCHAR_H, $ac_val,
+ [Define to 1 if you have a declaration of mbswidth() in <wchar.h>, and to 0 otherwise.])
+
+ AC_TYPE_MBSTATE_T
+])
diff --git a/m4/md5.m4 b/m4/md5.m4
new file mode 100644
index 0000000..5a1f875
--- /dev/null
+++ b/m4/md5.m4
@@ -0,0 +1,14 @@
+# md5.m4 serial 9
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_MD5],
+[
+ AC_LIBOBJ([md5])
+
+ dnl Prerequisites of lib/md5.c.
+ AC_REQUIRE([AC_C_BIGENDIAN])
+ :
+])
diff --git a/m4/memcasecmp.m4 b/m4/memcasecmp.m4
new file mode 100644
index 0000000..7ea362c
--- /dev/null
+++ b/m4/memcasecmp.m4
@@ -0,0 +1,10 @@
+#serial 5
+dnl Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_MEMCASECMP],
+[
+ AC_LIBOBJ([memcasecmp])
+])
diff --git a/m4/memchr.m4 b/m4/memchr.m4
new file mode 100644
index 0000000..91b8636
--- /dev/null
+++ b/m4/memchr.m4
@@ -0,0 +1,18 @@
+# memchr.m4 serial 4
+dnl Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_MEMCHR],
+[
+ AC_REPLACE_FUNCS(memchr)
+ if test $ac_cv_func_memchr = no; then
+ gl_PREREQ_MEMCHR
+ fi
+])
+
+# Prerequisites of lib/memchr.c.
+AC_DEFUN([gl_PREREQ_MEMCHR], [
+ AC_CHECK_HEADERS(bp-sym.h)
+])
diff --git a/m4/memcmp.m4 b/m4/memcmp.m4
new file mode 100644
index 0000000..099b141
--- /dev/null
+++ b/m4/memcmp.m4
@@ -0,0 +1,19 @@
+# memcmp.m4 serial 12
+dnl Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_MEMCMP],
+[
+ AC_FUNC_MEMCMP
+ dnl Note: AC_FUNC_MEMCMP does AC_LIBOBJ(memcmp).
+ if test $ac_cv_func_memcmp_working = no; then
+ AC_DEFINE(memcmp, rpl_memcmp,
+ [Define to rpl_memcmp if the replacement function should be used.])
+ gl_PREREQ_MEMCMP
+ fi
+])
+
+# Prerequisites of lib/memcmp.c.
+AC_DEFUN([gl_PREREQ_MEMCMP], [:])
diff --git a/m4/memcoll.m4 b/m4/memcoll.m4
new file mode 100644
index 0000000..4362f1b
--- /dev/null
+++ b/m4/memcoll.m4
@@ -0,0 +1,13 @@
+# memcoll.m4 serial 7
+dnl Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_MEMCOLL],
+[
+ AC_LIBOBJ([memcoll])
+
+ dnl Prerequisites of lib/memcoll.c.
+ AC_FUNC_STRCOLL
+])
diff --git a/m4/memcpy.m4 b/m4/memcpy.m4
new file mode 100644
index 0000000..3edc62e
--- /dev/null
+++ b/m4/memcpy.m4
@@ -0,0 +1,18 @@
+# memcpy.m4 serial 2
+dnl Copyright (C) 2002 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_MEMCPY],
+[
+ AC_REPLACE_FUNCS(memcpy)
+ if test $ac_cv_func_memcpy = no; then
+ gl_PREREQ_MEMCPY
+ fi
+])
+
+# Prerequisites of lib/memcpy.c.
+AC_DEFUN([gl_PREREQ_MEMCPY], [
+ :
+])
diff --git a/m4/memmove.m4 b/m4/memmove.m4
new file mode 100644
index 0000000..66054e4
--- /dev/null
+++ b/m4/memmove.m4
@@ -0,0 +1,18 @@
+# memmove.m4 serial 2
+dnl Copyright (C) 2002 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_MEMMOVE],
+[
+ AC_REPLACE_FUNCS(memmove)
+ if test $ac_cv_func_memmove = no; then
+ gl_PREREQ_MEMMOVE
+ fi
+])
+
+# Prerequisites of lib/memmove.c.
+AC_DEFUN([gl_PREREQ_MEMMOVE], [
+ :
+])
diff --git a/m4/mempcpy.m4 b/m4/mempcpy.m4
new file mode 100644
index 0000000..9e854e8
--- /dev/null
+++ b/m4/mempcpy.m4
@@ -0,0 +1,26 @@
+# mempcpy.m4 serial 7
+dnl Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_MEMPCPY],
+[
+ dnl Persuade glibc <string.h> to declare mempcpy().
+ AC_REQUIRE([AC_GNU_SOURCE])
+
+ dnl The mempcpy() declaration in lib/string_.h uses 'restrict'.
+ AC_REQUIRE([AC_C_RESTRICT])
+
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ AC_REPLACE_FUNCS(mempcpy)
+ if test $ac_cv_func_mempcpy = no; then
+ HAVE_MEMPCPY=0
+ gl_PREREQ_MEMPCPY
+ fi
+])
+
+# Prerequisites of lib/mempcpy.c.
+AC_DEFUN([gl_PREREQ_MEMPCPY], [
+ :
+])
diff --git a/m4/memrchr.m4 b/m4/memrchr.m4
new file mode 100644
index 0000000..69674ff
--- /dev/null
+++ b/m4/memrchr.m4
@@ -0,0 +1,25 @@
+# memrchr.m4 serial 7
+dnl Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_MEMRCHR],
+[
+ dnl Persuade glibc <string.h> to declare memrchr().
+ AC_REQUIRE([AC_GNU_SOURCE])
+
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ AC_CHECK_DECLS_ONCE([memrchr])
+ if test $ac_cv_have_decl_memrchr = no; then
+ HAVE_DECL_MEMRCHR=0
+ fi
+
+ AC_REPLACE_FUNCS(memrchr)
+ if test $ac_cv_func_memrchr = no; then
+ gl_PREREQ_MEMRCHR
+ fi
+])
+
+# Prerequisites of lib/memrchr.c.
+AC_DEFUN([gl_PREREQ_MEMRCHR], [:])
diff --git a/m4/memset.m4 b/m4/memset.m4
new file mode 100644
index 0000000..14ac267
--- /dev/null
+++ b/m4/memset.m4
@@ -0,0 +1,18 @@
+# memset.m4 serial 2
+dnl Copyright (C) 2002 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_MEMSET],
+[
+ AC_REPLACE_FUNCS(memset)
+ if test $ac_cv_func_memset = no; then
+ gl_PREREQ_MEMSET
+ fi
+])
+
+# Prerequisites of lib/memset.c.
+AC_DEFUN([gl_PREREQ_MEMSET], [
+ :
+])
diff --git a/m4/memxfrm.m4 b/m4/memxfrm.m4
new file mode 100644
index 0000000..ca1c6a9
--- /dev/null
+++ b/m4/memxfrm.m4
@@ -0,0 +1,15 @@
+dnl Copyright (C) 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_MEMXFRM],
+[
+ AC_LIBSOURCES([memxfrm.c, memxfrm.h])
+ AC_LIBOBJ([memxfrm])
+
+ AC_REQUIRE([AC_C_RESTRICT])
+
+ dnl Prerequisites of lib/memcoll.c.
+ AC_CHECK_FUNCS_ONCE([strxfrm])
+])
diff --git a/m4/mkancesdirs.m4 b/m4/mkancesdirs.m4
new file mode 100644
index 0000000..6833dee
--- /dev/null
+++ b/m4/mkancesdirs.m4
@@ -0,0 +1,10 @@
+# Make a file's ancestor directories.
+dnl Copyright (C) 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_MKANCESDIRS],
+[
+ AC_LIBOBJ([mkancesdirs])
+])
diff --git a/m4/mkdir-p.m4 b/m4/mkdir-p.m4
new file mode 100644
index 0000000..8f1e48d
--- /dev/null
+++ b/m4/mkdir-p.m4
@@ -0,0 +1,16 @@
+# mkdir-p.m4 serial 13
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_MKDIR_PARENTS],
+[
+ AC_LIBOBJ([dirchownmod])
+ AC_LIBOBJ([mkdir-p])
+
+ dnl Prerequisites of lib/dirchownmod.c.
+ AC_REQUIRE([gl_FUNC_LCHMOD])
+ AC_REQUIRE([gl_FUNC_LCHOWN])
+ AC_CHECK_FUNCS_ONCE([fchmod])
+])
diff --git a/m4/mkdir-slash.m4 b/m4/mkdir-slash.m4
new file mode 100644
index 0000000..3c25d2a
--- /dev/null
+++ b/m4/mkdir-slash.m4
@@ -0,0 +1,48 @@
+#serial 5
+
+# Copyright (C) 2001, 2003, 2004, 2006 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# On some systems, mkdir ("foo/", 0700) fails because of the trailing slash.
+# On such systems, arrange to use a wrapper function that removes any
+# trailing slashes.
+AC_DEFUN([gl_FUNC_MKDIR_TRAILING_SLASH],
+[dnl
+ AC_CHECK_HEADERS_ONCE(unistd.h)
+ AC_CACHE_CHECK([whether mkdir fails due to a trailing slash],
+ gl_cv_func_mkdir_trailing_slash_bug,
+ [
+ # Arrange for deletion of the temporary directory this test might create.
+ ac_clean_files="$ac_clean_files confdir-slash"
+ AC_TRY_RUN([
+# include <sys/types.h>
+# include <sys/stat.h>
+# include <stdlib.h>
+# ifdef HAVE_UNISTD_H
+# include <unistd.h>
+# endif
+ int main ()
+ {
+ rmdir ("confdir-slash");
+ exit (mkdir ("confdir-slash/", 0700));
+ }
+ ],
+ gl_cv_func_mkdir_trailing_slash_bug=no,
+ gl_cv_func_mkdir_trailing_slash_bug=yes,
+ gl_cv_func_mkdir_trailing_slash_bug=yes
+ )
+ ]
+ )
+
+ if test $gl_cv_func_mkdir_trailing_slash_bug = yes; then
+ AC_LIBOBJ(mkdir)
+ AC_DEFINE(mkdir, rpl_mkdir,
+ [Define to rpl_mkdir if the replacement function should be used.])
+ gl_PREREQ_MKDIR
+ fi
+])
+
+# Prerequisites of lib/mkdir.c.
+AC_DEFUN([gl_PREREQ_MKDIR], [:])
diff --git a/m4/mkstemp.m4 b/m4/mkstemp.m4
new file mode 100644
index 0000000..20d8a1b
--- /dev/null
+++ b/m4/mkstemp.m4
@@ -0,0 +1,56 @@
+#serial 17
+
+# Copyright (C) 2001, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# On some hosts (e.g., HP-UX 10.20, SunOS 4.1.4, Solaris 2.5.1), mkstemp has a
+# silly limit that it can create no more than 26 files from a given template.
+# Other systems lack mkstemp altogether.
+# On OSF1/Tru64 V4.0F, the system-provided mkstemp function can create
+# only 32 files per process.
+# On systems like the above, arrange to use the replacement function.
+AC_DEFUN([gl_FUNC_MKSTEMP],
+[
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+ AC_REQUIRE([AC_SYS_LARGEFILE])
+
+ AC_CACHE_CHECK([for working mkstemp],
+ [gl_cv_func_working_mkstemp],
+ [
+ mkdir conftest.mkstemp
+ AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [AC_INCLUDES_DEFAULT],
+ [[int i;
+ off_t large = (off_t) 4294967295u;
+ if (large < 0)
+ large = 2147483647;
+ for (i = 0; i < 70; i++)
+ {
+ char templ[] = "conftest.mkstemp/coXXXXXX";
+ int (*mkstemp_function) (char *) = mkstemp;
+ int fd = mkstemp_function (templ);
+ if (fd < 0 || lseek (fd, large, SEEK_SET) != large)
+ return 1;
+ close (fd);
+ }
+ return 0;]])],
+ [gl_cv_func_working_mkstemp=yes],
+ [gl_cv_func_working_mkstemp=no],
+ [gl_cv_func_working_mkstemp=no])
+ rm -rf conftest.mkstemp
+ ])
+
+ if test $gl_cv_func_working_mkstemp != yes; then
+ REPLACE_MKSTEMP=1
+ AC_LIBOBJ([mkstemp])
+ gl_PREREQ_MKSTEMP
+ fi
+])
+
+# Prerequisites of lib/mkstemp.c.
+AC_DEFUN([gl_PREREQ_MKSTEMP],
+[
+])
diff --git a/m4/mktime.m4 b/m4/mktime.m4
new file mode 100644
index 0000000..5faf393
--- /dev/null
+++ b/m4/mktime.m4
@@ -0,0 +1,227 @@
+#serial 13
+dnl Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Jim Meyering.
+
+# Redefine AC_FUNC_MKTIME, to fix a bug in Autoconf 2.61a and earlier.
+# This redefinition can be removed once a new version of Autoconf is assumed.
+# The redefinition is taken from
+# <http://cvs.sv.gnu.org/viewcvs/*checkout*/autoconf/autoconf/lib/autoconf/functions.m4?rev=1.119>.
+# AC_FUNC_MKTIME
+# --------------
+AC_DEFUN([AC_FUNC_MKTIME],
+[AC_CHECK_HEADERS_ONCE(unistd.h)
+AC_CHECK_FUNCS_ONCE(alarm)
+AC_CACHE_CHECK([for working mktime], ac_cv_func_working_mktime,
+[AC_RUN_IFELSE([AC_LANG_SOURCE(
+[[/* Test program from Paul Eggert and Tony Leneis. */
+#include <limits.h>
+#include <stdlib.h>
+#include <time.h>
+
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#ifndef HAVE_ALARM
+# define alarm(X) /* empty */
+#endif
+
+/* Work around redefinition to rpl_putenv by other config tests. */
+#undef putenv
+
+static time_t time_t_max;
+static time_t time_t_min;
+
+/* Values we'll use to set the TZ environment variable. */
+static char *tz_strings[] = {
+ (char *) 0, "TZ=GMT0", "TZ=JST-9",
+ "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00"
+};
+#define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0]))
+
+/* Return 0 if mktime fails to convert a date in the spring-forward gap.
+ Based on a problem report from Andreas Jaeger. */
+static int
+spring_forward_gap ()
+{
+ /* glibc (up to about 1998-10-07) failed this test. */
+ struct tm tm;
+
+ /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0"
+ instead of "TZ=America/Vancouver" in order to detect the bug even
+ on systems that don't support the Olson extension, or don't have the
+ full zoneinfo tables installed. */
+ putenv ("TZ=PST8PDT,M4.1.0,M10.5.0");
+
+ tm.tm_year = 98;
+ tm.tm_mon = 3;
+ tm.tm_mday = 5;
+ tm.tm_hour = 2;
+ tm.tm_min = 0;
+ tm.tm_sec = 0;
+ tm.tm_isdst = -1;
+ return mktime (&tm) != (time_t) -1;
+}
+
+static int
+mktime_test1 (now)
+ time_t now;
+{
+ struct tm *lt;
+ return ! (lt = localtime (&now)) || mktime (lt) == now;
+}
+
+static int
+mktime_test (now)
+ time_t now;
+{
+ return (mktime_test1 (now)
+ && mktime_test1 ((time_t) (time_t_max - now))
+ && mktime_test1 ((time_t) (time_t_min + now)));
+}
+
+static int
+irix_6_4_bug ()
+{
+ /* Based on code from Ariel Faigon. */
+ struct tm tm;
+ tm.tm_year = 96;
+ tm.tm_mon = 3;
+ tm.tm_mday = 0;
+ tm.tm_hour = 0;
+ tm.tm_min = 0;
+ tm.tm_sec = 0;
+ tm.tm_isdst = -1;
+ mktime (&tm);
+ return tm.tm_mon == 2 && tm.tm_mday == 31;
+}
+
+static int
+bigtime_test (j)
+ int j;
+{
+ struct tm tm;
+ time_t now;
+ tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j;
+ now = mktime (&tm);
+ if (now != (time_t) -1)
+ {
+ struct tm *lt = localtime (&now);
+ if (! (lt
+ && lt->tm_year == tm.tm_year
+ && lt->tm_mon == tm.tm_mon
+ && lt->tm_mday == tm.tm_mday
+ && lt->tm_hour == tm.tm_hour
+ && lt->tm_min == tm.tm_min
+ && lt->tm_sec == tm.tm_sec
+ && lt->tm_yday == tm.tm_yday
+ && lt->tm_wday == tm.tm_wday
+ && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst)
+ == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst))))
+ return 0;
+ }
+ return 1;
+}
+
+static int
+year_2050_test ()
+{
+ /* The correct answer for 2050-02-01 00:00:00 in Pacific time,
+ ignoring leap seconds. */
+ unsigned long int answer = 2527315200UL;
+
+ struct tm tm;
+ time_t t;
+ tm.tm_year = 2050 - 1900;
+ tm.tm_mon = 2 - 1;
+ tm.tm_mday = 1;
+ tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
+ tm.tm_isdst = -1;
+
+ /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0"
+ instead of "TZ=America/Vancouver" in order to detect the bug even
+ on systems that don't support the Olson extension, or don't have the
+ full zoneinfo tables installed. */
+ putenv ("TZ=PST8PDT,M4.1.0,M10.5.0");
+
+ t = mktime (&tm);
+
+ /* Check that the result is either a failure, or close enough
+ to the correct answer that we can assume the discrepancy is
+ due to leap seconds. */
+ return (t == (time_t) -1
+ || (0 < t && answer - 120 <= t && t <= answer + 120));
+}
+
+int
+main ()
+{
+ time_t t, delta;
+ int i, j;
+
+ /* This test makes some buggy mktime implementations loop.
+ Give up after 60 seconds; a mktime slower than that
+ isn't worth using anyway. */
+ alarm (60);
+
+ for (;;)
+ {
+ t = (time_t_max << 1) + 1;
+ if (t <= time_t_max)
+ break;
+ time_t_max = t;
+ }
+ time_t_min = - ((time_t) ~ (time_t) 0 == (time_t) -1) - time_t_max;
+
+ delta = time_t_max / 997; /* a suitable prime number */
+ for (i = 0; i < N_STRINGS; i++)
+ {
+ if (tz_strings[i])
+ putenv (tz_strings[i]);
+
+ for (t = 0; t <= time_t_max - delta; t += delta)
+ if (! mktime_test (t))
+ return 1;
+ if (! (mktime_test ((time_t) 1)
+ && mktime_test ((time_t) (60 * 60))
+ && mktime_test ((time_t) (60 * 60 * 24))))
+ return 1;
+
+ for (j = 1; ; j <<= 1)
+ if (! bigtime_test (j))
+ return 1;
+ else if (INT_MAX / 2 < j)
+ break;
+ if (! bigtime_test (INT_MAX))
+ return 1;
+ }
+ return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ());
+}]])],
+ [ac_cv_func_working_mktime=yes],
+ [ac_cv_func_working_mktime=no],
+ [ac_cv_func_working_mktime=no])])
+if test $ac_cv_func_working_mktime = no; then
+ AC_LIBOBJ([mktime])
+fi
+])# AC_FUNC_MKTIME
+
+AC_DEFUN([gl_FUNC_MKTIME],
+[
+ AC_FUNC_MKTIME
+ dnl Note: AC_FUNC_MKTIME does AC_LIBOBJ(mktime).
+ if test $ac_cv_func_working_mktime = no; then
+ AC_DEFINE(mktime, rpl_mktime,
+ [Define to rpl_mktime if the replacement function should be used.])
+ gl_PREREQ_MKTIME
+ fi
+])
+
+# Prerequisites of lib/mktime.c.
+AC_DEFUN([gl_PREREQ_MKTIME],
+[
+ AC_REQUIRE([AC_C_INLINE])
+])
diff --git a/m4/modechange.m4 b/m4/modechange.m4
new file mode 100644
index 0000000..3b23955
--- /dev/null
+++ b/m4/modechange.m4
@@ -0,0 +1,10 @@
+# modechange.m4 serial 6
+dnl Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_MODECHANGE],
+[
+ AC_LIBOBJ([modechange])
+])
diff --git a/m4/mountlist.m4 b/m4/mountlist.m4
new file mode 100644
index 0000000..c25f44e
--- /dev/null
+++ b/m4/mountlist.m4
@@ -0,0 +1,23 @@
+#serial 9
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_MOUNTLIST],
+[
+ gl_LIST_MOUNTED_FILE_SYSTEMS([gl_cv_list_mounted_fs=yes],
+ [gl_cv_list_mounted_fs=no])
+ if test $gl_cv_list_mounted_fs = yes; then
+ AC_LIBOBJ(mountlist)
+ gl_PREREQ_MOUNTLIST_EXTRA
+ fi
+])
+
+# Prerequisites of lib/mountlist.c not done by gl_LIST_MOUNTED_FILE_SYSTEMS.
+AC_DEFUN([gl_PREREQ_MOUNTLIST_EXTRA],
+[
+ dnl Note gl_LIST_MOUNTED_FILE_SYSTEMS checks for mntent.h, not sys/mntent.h.
+ AC_CHECK_HEADERS(sys/mntent.h)
+ gl_FSTYPENAME
+])
diff --git a/m4/mpsort.m4 b/m4/mpsort.m4
new file mode 100644
index 0000000..d21ba69
--- /dev/null
+++ b/m4/mpsort.m4
@@ -0,0 +1,13 @@
+# Sort a vector of pointers to data.
+
+# Copyright (C) 2007 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_MPSORT],
+[
+ AC_REQUIRE([AC_C_RESTRICT])
+ AC_LIBOBJ([mpsort])
+])
diff --git a/m4/nanosleep.m4 b/m4/nanosleep.m4
new file mode 100644
index 0000000..a3a6814
--- /dev/null
+++ b/m4/nanosleep.m4
@@ -0,0 +1,116 @@
+#serial 22
+
+dnl From Jim Meyering.
+dnl Check for the nanosleep function.
+dnl If not found, use the supplied replacement.
+dnl
+
+# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 Free
+# Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_NANOSLEEP],
+[
+ dnl Persuade glibc and Solaris <time.h> to declare nanosleep.
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
+ AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
+ AC_REQUIRE([gl_CLOCK_TIME])
+ AC_CHECK_HEADERS_ONCE(sys/time.h)
+
+ nanosleep_save_libs=$LIBS
+
+ # Solaris 2.5.1 needs -lposix4 to get the nanosleep function.
+ # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4.
+ AC_SEARCH_LIBS([nanosleep], [rt posix4],
+ [test "$ac_cv_search_nanosleep" = "none required" ||
+ LIB_NANOSLEEP=$ac_cv_search_nanosleep])
+
+ AC_CACHE_CHECK([for working nanosleep],
+ [gl_cv_func_nanosleep],
+ [
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+ #include <errno.h>
+ #include <limits.h>
+ #include <signal.h>
+ #if HAVE_SYS_TIME_H
+ #include <sys/time.h>
+ #endif
+ #include <time.h>
+ #include <unistd.h>
+ #define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+ #define TYPE_MAXIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) -1 \
+ : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+
+ static void
+ check_for_SIGALRM (int sig)
+ {
+ if (sig != SIGALRM)
+ _exit (1);
+ }
+
+ int
+ main ()
+ {
+ static struct timespec ts_sleep;
+ static struct timespec ts_remaining;
+ static struct sigaction act;
+ if (! nanosleep)
+ return 1;
+ act.sa_handler = check_for_SIGALRM;
+ sigemptyset (&act.sa_mask);
+ sigaction (SIGALRM, &act, NULL);
+ ts_sleep.tv_sec = 0;
+ ts_sleep.tv_nsec = 1;
+ alarm (1);
+ if (nanosleep (&ts_sleep, NULL) != 0)
+ return 1;
+ ts_sleep.tv_sec = TYPE_MAXIMUM (time_t);
+ ts_sleep.tv_nsec = 999999999;
+ alarm (1);
+ if (nanosleep (&ts_sleep, &ts_remaining) == -1 && errno == EINTR
+ && TYPE_MAXIMUM (time_t) - 10 < ts_remaining.tv_sec)
+ return 0;
+ return 119;
+ }]])],
+ [gl_cv_func_nanosleep=yes],
+ [case $? in dnl (
+ 119) gl_cv_func_nanosleep='no (mishandles large arguments)';; dnl (
+ *) gl_cv_func_nanosleep=no;;
+ esac],
+ [gl_cv_func_nanosleep=cross-compiling])
+ ])
+ if test "$gl_cv_func_nanosleep" = yes; then
+ REPLACE_NANOSLEEP=0
+ else
+ REPLACE_NANOSLEEP=1
+ if test "$gl_cv_func_nanosleep" = 'no (mishandles large arguments)'; then
+ AC_DEFINE([HAVE_BUG_BIG_NANOSLEEP], 1,
+ [Define to 1 if nanosleep mishandle large arguments.])
+ for ac_lib in $LIB_CLOCK_GETTIME; do
+ case " $LIB_NANOSLEEP " in
+ *" $ac_lib "*) ;;
+ *) LIB_NANOSLEEP="$LIB_NANOSLEEP $ac_lib";;
+ esac
+ done
+ fi
+ AC_LIBOBJ(nanosleep)
+ gl_PREREQ_NANOSLEEP
+ fi
+
+ AC_SUBST([LIB_NANOSLEEP])
+ LIBS=$nanosleep_save_libs
+])
+
+# Prerequisites of lib/nanosleep.c.
+AC_DEFUN([gl_PREREQ_NANOSLEEP],
+[
+ AC_CHECK_FUNCS_ONCE(siginterrupt)
+ AC_CHECK_HEADERS_ONCE(sys/select.h)
+])
diff --git a/m4/netinet_in_h.m4 b/m4/netinet_in_h.m4
new file mode 100644
index 0000000..966bfe6
--- /dev/null
+++ b/m4/netinet_in_h.m4
@@ -0,0 +1,32 @@
+# netinet_in_h.m4 serial 2
+dnl Copyright (C) 2006-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_HEADER_NETINET_IN],
+[
+ AC_CACHE_CHECK([whether <netinet/in.h> is self-contained],
+ [gl_cv_header_netinet_in_h_selfcontained],
+ [
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <netinet/in.h>], [])],
+ [gl_cv_header_netinet_in_h_selfcontained=yes],
+ [gl_cv_header_netinet_in_h_selfcontained=no])
+ ])
+ if test $gl_cv_header_netinet_in_h_selfcontained = yes; then
+ NETINET_IN_H=''
+ else
+ NETINET_IN_H='netinet/in.h'
+ AC_CHECK_HEADERS([netinet/in.h])
+ gl_ABSOLUTE_HEADER([netinet/in.h])
+ ABSOLUTE_NETINET_IN_H=\"$gl_cv_absolute_netinet_in_h\"
+ AC_SUBST([ABSOLUTE_NETINET_IN_H])
+ if test $ac_cv_header_netinet_in_h = yes; then
+ HAVE_NETINET_IN_H=1
+ else
+ HAVE_NETINET_IN_H=0
+ fi
+ AC_SUBST([HAVE_NETINET_IN_H])
+ fi
+ AC_SUBST([NETINET_IN_H])
+])
diff --git a/m4/nls.m4 b/m4/nls.m4
new file mode 100644
index 0000000..7967cc2
--- /dev/null
+++ b/m4/nls.m4
@@ -0,0 +1,31 @@
+# nls.m4 serial 3 (gettext-0.15)
+dnl Copyright (C) 1995-2003, 2005-2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ(2.50)
+
+AC_DEFUN([AM_NLS],
+[
+ AC_MSG_CHECKING([whether NLS is requested])
+ dnl Default is enabled NLS
+ AC_ARG_ENABLE(nls,
+ [ --disable-nls do not use Native Language Support],
+ USE_NLS=$enableval, USE_NLS=yes)
+ AC_MSG_RESULT($USE_NLS)
+ AC_SUBST(USE_NLS)
+])
diff --git a/m4/openat.m4 b/m4/openat.m4
new file mode 100644
index 0000000..313dc6f
--- /dev/null
+++ b/m4/openat.m4
@@ -0,0 +1,93 @@
+#serial 15
+# See if we need to use our replacement for Solaris' openat et al functions.
+
+dnl Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Jim Meyering.
+
+AC_DEFUN([gl_FUNC_OPENAT],
+[
+ AC_LIBOBJ([openat-die])
+ AC_LIBOBJ([openat-proc])
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_CHECK_FUNCS_ONCE([lchmod])
+ AC_CHECK_FUNCS_ONCE([fdopendir])
+ AC_REPLACE_FUNCS([fchmodat mkdirat openat])
+ case $ac_cv_func_openat+$ac_cv_func_lstat_dereferences_slashed_symlink in
+ yes+yes) ;;
+ yes+*) AC_LIBOBJ([fstatat]);;
+ *)
+ AC_DEFINE([__OPENAT_PREFIX], [[rpl_]],
+ [Define to rpl_ if the openat replacement function should be used.])
+ gl_PREREQ_OPENAT;;
+ esac
+ gl_FUNC_FCHOWNAT
+])
+
+# gl_FUNC_FCHOWNAT_DEREF_BUG([ACTION-IF-BUGGY[, ACTION-IF-NOT_BUGGY]])
+AC_DEFUN([gl_FUNC_FCHOWNAT_DEREF_BUG],
+[
+ AC_CACHE_CHECK([whether fchownat works with AT_SYMLINK_NOFOLLOW],
+ gl_cv_func_fchownat_nofollow_works,
+ [
+ gl_dangle=conftest.dangle
+ # Remove any remnants of a previous test.
+ rm -f $gl_dangle
+ # Arrange for deletion of the temporary file this test creates.
+ ac_clean_files="$ac_clean_files $gl_dangle"
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE(
+ [[
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <sys/types.h>
+int
+main ()
+{
+ return (fchownat (AT_FDCWD, "$gl_dangle", -1, getgid (),
+ AT_SYMLINK_NOFOLLOW) != 0
+ && errno == ENOENT);
+}
+ ]])],
+ [gl_cv_func_fchownat_nofollow_works=yes],
+ [gl_cv_func_fchownat_nofollow_works=no],
+ [gl_cv_func_fchownat_nofollow_works=no],
+ )
+ ])
+ AS_IF([test $gl_cv_func_fchownat_nofollow_works = no], [$1], [$2])
+])
+
+# If we have the fchownat function, and it has the bug (in glibc-2.4)
+# that it dereferences symlinks even with AT_SYMLINK_NOFOLLOW, then
+# use the replacement function.
+# Also use the replacement function if fchownat is simply not available.
+AC_DEFUN([gl_FUNC_FCHOWNAT],
+[
+ # Assume we'll use the replacement function.
+ # The only case in which we won't is when we have fchownat, and it works.
+ use_replacement_fchownat=yes
+
+ AC_CHECK_FUNC([fchownat], [have_fchownat=yes], [have_fchownat=no])
+ if test $have_fchownat = yes; then
+ gl_FUNC_FCHOWNAT_DEREF_BUG([have_fchownat_bug=yes])
+ if test $have_fchownat_bug = no; then
+ use_replacement_fchownat=no
+ fi
+ fi
+
+ if test $use_replacement_fchownat = yes; then
+ AC_LIBOBJ(fchownat)
+ AC_DEFINE(fchownat, rpl_fchownat,
+ [Define to rpl_fchownat if the replacement function should be used.])
+ fi
+])
+
+AC_DEFUN([gl_PREREQ_OPENAT],
+[
+ :
+])
diff --git a/m4/pathmax.m4 b/m4/pathmax.m4
new file mode 100644
index 0000000..64bf26f
--- /dev/null
+++ b/m4/pathmax.m4
@@ -0,0 +1,11 @@
+# pathmax.m4 serial 6
+dnl Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_PATHMAX],
+[
+ dnl Prerequisites of lib/pathmax.h.
+ AC_CHECK_HEADERS_ONCE(sys/param.h)
+])
diff --git a/m4/perl.m4 b/m4/perl.m4
new file mode 100644
index 0000000..90c224a
--- /dev/null
+++ b/m4/perl.m4
@@ -0,0 +1,45 @@
+#serial 8
+
+dnl From Jim Meyering.
+dnl Find a new-enough version of Perl.
+
+# Copyright (C) 1998-2001, 2003, 2004, 2007 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_PERL],
+[
+ dnl FIXME: don't hard-code 5.005
+ AC_MSG_CHECKING([for perl5.005 or newer])
+ if test "${PERL+set}" = set; then
+ # `PERL' is set in the user's environment.
+ candidate_perl_names="$PERL"
+ perl_specified=yes
+ else
+ candidate_perl_names='perl perl5'
+ perl_specified=no
+ fi
+
+ found=no
+ AC_SUBST(PERL)
+ PERL="$am_missing_run perl"
+ for perl in $candidate_perl_names; do
+ # Run test in a subshell; some versions of sh will print an error if
+ # an executable is not found, even if stderr is redirected.
+ if ( $perl -e 'require 5.005; use File::Compare' ) > /dev/null 2>&1; then
+ PERL=$perl
+ found=yes
+ break
+ fi
+ done
+
+ AC_MSG_RESULT($found)
+ test $found = no && AC_MSG_WARN([
+WARNING: You don't seem to have perl5.005 or newer installed, or you lack
+ a usable version of the Perl File::Compare module. As a result,
+ you may be unable to run a few tests or to regenerate certain
+ files if you modify the sources from which they are derived.
+] )
+])
diff --git a/m4/physmem.m4 b/m4/physmem.m4
new file mode 100644
index 0000000..456bb37
--- /dev/null
+++ b/m4/physmem.m4
@@ -0,0 +1,39 @@
+# physmem.m4 serial 7
+dnl Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Check for the external symbol, _system_configuration,
+# a struct with member `physmem'.
+AC_DEFUN([gl_SYS__SYSTEM_CONFIGURATION],
+ [AC_CACHE_CHECK(for external symbol _system_configuration,
+ gl_cv_var__system_configuration,
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM(
+ [[#include <sys/systemcfg.h>
+ ]],
+ [double x = _system_configuration.physmem;
+ if (x > 0.0) return 0;])],
+ [gl_cv_var__system_configuration=yes],
+ [gl_cv_var__system_configuration=no])])
+
+ if test $gl_cv_var__system_configuration = yes; then
+ AC_DEFINE(HAVE__SYSTEM_CONFIGURATION, 1,
+ [Define to 1 if you have the external variable,
+ _system_configuration with a member named physmem.])
+ fi
+ ]
+)
+
+AC_DEFUN([gl_PHYSMEM],
+[
+ AC_LIBOBJ([physmem])
+
+ # Prerequisites of lib/physmem.c.
+ AC_CHECK_HEADERS([sys/pstat.h sys/sysmp.h sys/sysinfo.h \
+ machine/hal_sysinfo.h sys/table.h sys/param.h sys/sysctl.h \
+ sys/systemcfg.h],,, [AC_INCLUDES_DEFAULT])
+
+ AC_CHECK_FUNCS(pstat_getstatic pstat_getdynamic sysmp getsysinfo sysctl table)
+ AC_REQUIRE([gl_SYS__SYSTEM_CONFIGURATION])
+])
diff --git a/m4/po.m4 b/m4/po.m4
new file mode 100644
index 0000000..00133ef
--- /dev/null
+++ b/m4/po.m4
@@ -0,0 +1,428 @@
+# po.m4 serial 13 (gettext-0.15)
+dnl Copyright (C) 1995-2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ(2.50)
+
+dnl Checks for all prerequisites of the po subdirectory.
+AC_DEFUN([AM_PO_SUBDIRS],
+[
+ AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+ AC_REQUIRE([AC_PROG_INSTALL])dnl
+ AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
+ AC_REQUIRE([AM_NLS])dnl
+
+ dnl Perform the following tests also if --disable-nls has been given,
+ dnl because they are needed for "make dist" to work.
+
+ dnl Search for GNU msgfmt in the PATH.
+ dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
+ dnl The second test excludes FreeBSD msgfmt.
+ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+ [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+ :)
+ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+
+ dnl Test whether it is GNU msgfmt >= 0.15.
+changequote(,)dnl
+ case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+ *) MSGFMT_015=$MSGFMT ;;
+ esac
+changequote([,])dnl
+ AC_SUBST([MSGFMT_015])
+changequote(,)dnl
+ case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+ *) GMSGFMT_015=$GMSGFMT ;;
+ esac
+changequote([,])dnl
+ AC_SUBST([GMSGFMT_015])
+
+ dnl Search for GNU xgettext 0.12 or newer in the PATH.
+ dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
+ dnl The second test excludes FreeBSD xgettext.
+ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+ [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+ :)
+ dnl Remove leftover from FreeBSD xgettext call.
+ rm -f messages.po
+
+ dnl Test whether it is GNU xgettext >= 0.15.
+changequote(,)dnl
+ case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+ *) XGETTEXT_015=$XGETTEXT ;;
+ esac
+changequote([,])dnl
+ AC_SUBST([XGETTEXT_015])
+
+ dnl Search for GNU msgmerge 0.11 or newer in the PATH.
+ AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
+ [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
+
+ dnl Installation directories.
+ dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
+ dnl have to define it here, so that it can be used in po/Makefile.
+ test -n "$localedir" || localedir='${datadir}/locale'
+ AC_SUBST([localedir])
+
+ AC_CONFIG_COMMANDS([po-directories], [[
+ for ac_file in $CONFIG_FILES; do
+ # Support "outfile[:infile[:infile...]]"
+ case "$ac_file" in
+ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ esac
+ # PO directories have a Makefile.in generated from Makefile.in.in.
+ case "$ac_file" in */Makefile.in)
+ # Adjust a relative srcdir.
+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+ # In autoconf-2.13 it is called $ac_given_srcdir.
+ # In autoconf-2.50 it is called $srcdir.
+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+ case "$ac_given_srcdir" in
+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+ /*) top_srcdir="$ac_given_srcdir" ;;
+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+ # Treat a directory as a PO directory if and only if it has a
+ # POTFILES.in file. This allows packages to have multiple PO
+ # directories under different names or in different locations.
+ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
+ rm -f "$ac_dir/POTFILES"
+ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
+ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+ POMAKEFILEDEPS="POTFILES.in"
+ # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
+ # on $ac_dir but don't depend on user-specified configuration
+ # parameters.
+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+ # The LINGUAS file contains the set of available languages.
+ if test -n "$OBSOLETE_ALL_LINGUAS"; then
+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+ fi
+ ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+ # Hide the ALL_LINGUAS assigment from automake < 1.5.
+ eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+ else
+ # The set of available languages was given in configure.in.
+ # Hide the ALL_LINGUAS assigment from automake < 1.5.
+ eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
+ fi
+ # Compute POFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+ # Compute UPDATEPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+ # Compute DUMMYPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+ # Compute GMOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+ case "$ac_given_srcdir" in
+ .) srcdirpre= ;;
+ *) srcdirpre='$(srcdir)/' ;;
+ esac
+ POFILES=
+ UPDATEPOFILES=
+ DUMMYPOFILES=
+ GMOFILES=
+ for lang in $ALL_LINGUAS; do
+ POFILES="$POFILES $srcdirpre$lang.po"
+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+ done
+ # CATALOGS depends on both $ac_dir and the user's LINGUAS
+ # environment variable.
+ INST_LINGUAS=
+ if test -n "$ALL_LINGUAS"; then
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "$LINGUAS"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ INST_LINGUAS="$INST_LINGUAS $presentlang"
+ fi
+ done
+ fi
+ CATALOGS=
+ if test -n "$INST_LINGUAS"; then
+ for lang in $INST_LINGUAS; do
+ CATALOGS="$CATALOGS $lang.gmo"
+ done
+ fi
+ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
+ if test -f "$f"; then
+ case "$f" in
+ *.orig | *.bak | *~) ;;
+ *) cat "$f" >> "$ac_dir/Makefile" ;;
+ esac
+ fi
+ done
+ fi
+ ;;
+ esac
+ done]],
+ [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
+ # from automake < 1.5.
+ eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
+ # Capture the value of LINGUAS because we need it to compute CATALOGS.
+ LINGUAS="${LINGUAS-%UNSET%}"
+ ])
+])
+
+dnl Postprocesses a Makefile in a directory containing PO files.
+AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
+[
+ # When this code is run, in config.status, two variables have already been
+ # set:
+ # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
+ # - LINGUAS is the value of the environment variable LINGUAS at configure
+ # time.
+
+changequote(,)dnl
+ # Adjust a relative srcdir.
+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+ # In autoconf-2.13 it is called $ac_given_srcdir.
+ # In autoconf-2.50 it is called $srcdir.
+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+ case "$ac_given_srcdir" in
+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+ /*) top_srcdir="$ac_given_srcdir" ;;
+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+
+ # Find a way to echo strings without interpreting backslash.
+ if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
+ gt_echo='echo'
+ else
+ if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
+ gt_echo='printf %s\n'
+ else
+ echo_func () {
+ cat <<EOT
+$*
+EOT
+ }
+ gt_echo='echo_func'
+ fi
+ fi
+
+ # A sed script that extracts the value of VARIABLE from a Makefile.
+ sed_x_variable='
+# Test if the hold space is empty.
+x
+s/P/P/
+x
+ta
+# Yes it was empty. Look if we have the expected variable definition.
+/^[ ]*VARIABLE[ ]*=/{
+ # Seen the first line of the variable definition.
+ s/^[ ]*VARIABLE[ ]*=//
+ ba
+}
+bd
+:a
+# Here we are processing a line from the variable definition.
+# Remove comment, more precisely replace it with a space.
+s/#.*$/ /
+# See if the line ends in a backslash.
+tb
+:b
+s/\\$//
+# Print the line, without the trailing backslash.
+p
+tc
+# There was no trailing backslash. The end of the variable definition is
+# reached. Clear the hold space.
+s/^.*$//
+x
+bd
+:c
+# A trailing backslash means that the variable definition continues in the
+# next line. Put a nonempty string into the hold space to indicate this.
+s/^.*$/P/
+x
+:d
+'
+changequote([,])dnl
+
+ # Set POTFILES to the value of the Makefile variable POTFILES.
+ sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
+ POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
+ # Compute POTFILES_DEPS as
+ # $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
+ POTFILES_DEPS=
+ for file in $POTFILES; do
+ POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
+ done
+ POMAKEFILEDEPS=""
+
+ if test -n "$OBSOLETE_ALL_LINGUAS"; then
+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+ fi
+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+ # The LINGUAS file contains the set of available languages.
+ ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+ else
+ # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
+ sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
+ ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
+ fi
+ # Hide the ALL_LINGUAS assigment from automake < 1.5.
+ eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+ # Compute POFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+ # Compute UPDATEPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+ # Compute DUMMYPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+ # Compute GMOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+ # Compute PROPERTIESFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
+ # Compute CLASSFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
+ # Compute QMFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
+ # Compute MSGFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
+ # Compute RESOURCESDLLFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
+ case "$ac_given_srcdir" in
+ .) srcdirpre= ;;
+ *) srcdirpre='$(srcdir)/' ;;
+ esac
+ POFILES=
+ UPDATEPOFILES=
+ DUMMYPOFILES=
+ GMOFILES=
+ PROPERTIESFILES=
+ CLASSFILES=
+ QMFILES=
+ MSGFILES=
+ RESOURCESDLLFILES=
+ for lang in $ALL_LINGUAS; do
+ POFILES="$POFILES $srcdirpre$lang.po"
+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+ PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
+ CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
+ QMFILES="$QMFILES $srcdirpre$lang.qm"
+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+ MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+ RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
+ done
+ # CATALOGS depends on both $ac_dir and the user's LINGUAS
+ # environment variable.
+ INST_LINGUAS=
+ if test -n "$ALL_LINGUAS"; then
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "$LINGUAS"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ INST_LINGUAS="$INST_LINGUAS $presentlang"
+ fi
+ done
+ fi
+ CATALOGS=
+ JAVACATALOGS=
+ QTCATALOGS=
+ TCLCATALOGS=
+ CSHARPCATALOGS=
+ if test -n "$INST_LINGUAS"; then
+ for lang in $INST_LINGUAS; do
+ CATALOGS="$CATALOGS $lang.gmo"
+ JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
+ QTCATALOGS="$QTCATALOGS $lang.qm"
+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+ TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+ CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
+ done
+ fi
+
+ sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
+ if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
+ # Add dependencies that cannot be formulated as a simple suffix rule.
+ for lang in $ALL_LINGUAS; do
+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+ cat >> "$ac_file.tmp" <<EOF
+$frobbedlang.msg: $lang.po
+ @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
+ \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+ done
+ fi
+ if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
+ # Add dependencies that cannot be formulated as a simple suffix rule.
+ for lang in $ALL_LINGUAS; do
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+ cat >> "$ac_file.tmp" <<EOF
+$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
+ @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
+ \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+ done
+ fi
+ if test -n "$POMAKEFILEDEPS"; then
+ cat >> "$ac_file.tmp" <<EOF
+Makefile: $POMAKEFILEDEPS
+EOF
+ fi
+ mv "$ac_file.tmp" "$ac_file"
+])
diff --git a/m4/posixtm.m4 b/m4/posixtm.m4
new file mode 100644
index 0000000..7ace2a9
--- /dev/null
+++ b/m4/posixtm.m4
@@ -0,0 +1,12 @@
+# posixtm.m4 serial 6
+dnl Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_POSIXTM],
+[
+ AC_LIBOBJ(posixtm)
+
+ dnl No prerequisites of lib/posixtm.c.
+])
diff --git a/m4/posixver.m4 b/m4/posixver.m4
new file mode 100644
index 0000000..f60a094
--- /dev/null
+++ b/m4/posixver.m4
@@ -0,0 +1,45 @@
+# posixver.m4 serial 9
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_POSIXVER],
+[
+ AC_LIBOBJ([posixver])
+
+ AC_REQUIRE([gl_DEFAULT_POSIX2_VERSION])
+])
+
+# Set the default level of POSIX conformance at configure-time.
+# Build with `./configure DEFAULT_POSIX2_VERSION=199209 ...' to
+# support the older version, thus preserving portability with
+# scripts that use sort +1, tail +32, etc.
+# Note however, that this breaks tools that might run commands
+# like `sort +some-file' that conform with the newer standard.
+AC_DEFUN([gl_DEFAULT_POSIX2_VERSION],
+[
+ AC_MSG_CHECKING([for desired default level of POSIX conformance])
+ gl_default_posix2_version=none-specified
+ if test -n "$ac_cv_env_DEFAULT_POSIX2_VERSION_set"; then
+ gl_default_posix2_version=$ac_cv_env_DEFAULT_POSIX2_VERSION_value
+ AC_DEFINE_UNQUOTED(DEFAULT_POSIX2_VERSION,
+ $gl_default_posix2_version,
+ [Define the default level of POSIX conformance. The value is of
+ the form YYYYMM, specifying the year and month the standard was
+ adopted. If not defined here, it defaults to the value of
+ _POSIX2_VERSION in <unistd.h>. Define to 199209 to default to
+ POSIX 1003.2-1992, which makes standard programs like `head',
+ `tail', and `sort' accept obsolete options like `+10' and
+ `-10'. Define to 200112 to default to POSIX 1003.1-2001, which
+ makes these standard programs treat leading-`+' operands as
+ file names and require modern usages like `-n 10' instead of
+ `-10'. Whether defined here or not, the default can be
+ overridden at run time via the _POSIX2_VERSION environment
+ variable.])
+ fi
+ AC_MSG_RESULT($gl_default_posix2_version)
+ AC_ARG_VAR(
+ [DEFAULT_POSIX2_VERSION],
+ [POSIX version to default to; see 'config.hin'.])
+])
diff --git a/m4/prereq.m4 b/m4/prereq.m4
new file mode 100644
index 0000000..d3ecc90
--- /dev/null
+++ b/m4/prereq.m4
@@ -0,0 +1,53 @@
+#serial 73
+
+dnl We use gl_ for non Autoconf macros.
+m4_pattern_forbid([^gl_[ABCDEFGHIJKLMNOPQRSTUVXYZ]])dnl
+
+# These are the prerequisite macros for files in the lib/
+# directory of the coreutils package.
+
+
+# Copyright (C) 1998, 2000, 2001, 2003, 2004, 2005, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Written by Jim Meyering.
+
+
+AC_DEFUN([gl_PREREQ],
+[
+ # gnulib settings.
+ AC_REQUIRE([gl_FUNC_NONREENTRANT_EUIDACCESS])
+
+ # We don't use c-stack.c.
+ # AC_REQUIRE([gl_C_STACK])
+
+ # Invoke macros of modules that may migrate into gnulib.
+ # There's no need to list gnulib modules here, since gnulib-tool
+ # handles that; see ../bootstrap.conf.
+ AC_REQUIRE([gl_EUIDACCESS_STAT])
+ AC_REQUIRE([gl_FD_REOPEN])
+ AC_REQUIRE([gl_FUNC_XFTS])
+ AC_REQUIRE([gl_MEMXFRM])
+ AC_REQUIRE([gl_RANDINT])
+ AC_REQUIRE([gl_RANDPERM])
+ AC_REQUIRE([gl_RANDREAD])
+ AC_REQUIRE([gl_ROOT_DEV_INO])
+ AC_REQUIRE([gl_SHA256])
+ AC_REQUIRE([gl_SHA512])
+ AC_REQUIRE([gl_STRINTCMP])
+ AC_REQUIRE([gl_STRNUMCMP])
+])
diff --git a/m4/progtest.m4 b/m4/progtest.m4
new file mode 100644
index 0000000..a56365c
--- /dev/null
+++ b/m4/progtest.m4
@@ -0,0 +1,92 @@
+# progtest.m4 serial 4 (gettext-0.14.2)
+dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+AC_PREREQ(2.50)
+
+# Search path for a program which passes the given test.
+
+dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+AC_DEFUN([AM_PATH_PROG_WITH_TEST],
+[
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+ ac_executable_p="test -x"
+else
+ ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL(ac_cv_path_$1,
+[case "[$]$1" in
+ [[\\/]]* | ?:[[\\/]]*)
+ ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in ifelse([$5], , $PATH, [$5]); do
+ IFS="$ac_save_IFS"
+ test -z "$ac_dir" && ac_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+ echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
+ if [$3]; then
+ ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
+ break 2
+ fi
+ fi
+ done
+ done
+ IFS="$ac_save_IFS"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+ ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+ AC_MSG_RESULT([$]$1)
+else
+ AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
diff --git a/m4/putenv.m4 b/m4/putenv.m4
new file mode 100644
index 0000000..43a5dc5
--- /dev/null
+++ b/m4/putenv.m4
@@ -0,0 +1,39 @@
+# putenv.m4 serial 12
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Jim Meyering.
+dnl
+dnl Check whether putenv ("FOO") removes FOO from the environment.
+dnl The putenv in libc on at least SunOS 4.1.4 does *not* do that.
+
+AC_DEFUN([gl_FUNC_PUTENV],
+[AC_CACHE_CHECK([for SVID conformant putenv], jm_cv_func_svid_putenv,
+ [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],[
+ /* Put it in env. */
+ if (putenv ("CONFTEST_putenv=val"))
+ return 1;
+
+ /* Try to remove it. */
+ if (putenv ("CONFTEST_putenv"))
+ return 1;
+
+ /* Make sure it was deleted. */
+ if (getenv ("CONFTEST_putenv") != 0)
+ return 1;
+
+ return 0;
+ ])],
+ jm_cv_func_svid_putenv=yes,
+ jm_cv_func_svid_putenv=no,
+ dnl When crosscompiling, assume putenv is broken.
+ jm_cv_func_svid_putenv=no)
+ ])
+ if test $jm_cv_func_svid_putenv = no; then
+ AC_LIBOBJ(putenv)
+ AC_DEFINE(putenv, rpl_putenv,
+ [Define to rpl_putenv if the replacement function should be used.])
+ fi
+])
diff --git a/m4/quote.m4 b/m4/quote.m4
new file mode 100644
index 0000000..0f08791
--- /dev/null
+++ b/m4/quote.m4
@@ -0,0 +1,13 @@
+# quote.m4 serial 5
+dnl Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_QUOTE],
+[
+ AC_LIBOBJ([quote])
+
+ dnl Prerequisites of lib/quote.c.
+ dnl (none)
+])
diff --git a/m4/quotearg.m4 b/m4/quotearg.m4
new file mode 100644
index 0000000..db635d0
--- /dev/null
+++ b/m4/quotearg.m4
@@ -0,0 +1,15 @@
+# quotearg.m4 serial 6
+dnl Copyright (C) 2002, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_QUOTEARG],
+[
+ AC_LIBOBJ([quotearg])
+
+ dnl Prerequisites of lib/quotearg.c.
+ AC_CHECK_FUNCS_ONCE([mbsinit])
+ AC_TYPE_MBSTATE_T
+ gl_FUNC_MBRTOWC
+])
diff --git a/m4/randint.m4 b/m4/randint.m4
new file mode 100644
index 0000000..50209ed
--- /dev/null
+++ b/m4/randint.m4
@@ -0,0 +1,12 @@
+dnl Copyright (C) 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_RANDINT],
+[
+ AC_LIBSOURCES([randint.c, randint.h])
+ AC_LIBOBJ([randint])
+
+ AC_REQUIRE([AC_C_INLINE])
+])
diff --git a/m4/randperm.m4 b/m4/randperm.m4
new file mode 100644
index 0000000..de2d691
--- /dev/null
+++ b/m4/randperm.m4
@@ -0,0 +1,10 @@
+dnl Copyright (C) 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_RANDPERM],
+[
+ AC_LIBSOURCES([randperm.c, randperm.h])
+ AC_LIBOBJ([randperm])
+])
diff --git a/m4/randread.m4 b/m4/randread.m4
new file mode 100644
index 0000000..c30ddd3
--- /dev/null
+++ b/m4/randread.m4
@@ -0,0 +1,11 @@
+dnl Copyright (C) 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_RANDREAD],
+[
+ AC_LIBSOURCES([randread.c, randread.h, rand-isaac.c, rand-isaac.h])
+ AC_LIBOBJ([randread])
+ AC_LIBOBJ([rand-isaac])
+])
diff --git a/m4/readlink.m4 b/m4/readlink.m4
new file mode 100644
index 0000000..1c347a0
--- /dev/null
+++ b/m4/readlink.m4
@@ -0,0 +1,29 @@
+# readlink.m4 serial 4
+dnl Copyright (C) 2003, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_READLINK],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_CHECK_FUNCS_ONCE([readlink])
+ if test $ac_cv_func_readlink = no; then
+ HAVE_READLINK=0
+ AC_LIBOBJ(readlink)
+ gl_PREREQ_READLINK
+ fi
+])
+
+# Like gl_FUNC_READLINK, except prepare for separate compilation (no AC_LIBOBJ).
+AC_DEFUN([gl_FUNC_READLINK_SEPARATE],
+[
+ AC_CHECK_FUNCS_ONCE([readlink])
+ gl_PREREQ_READLINK
+])
+
+# Prerequisites of lib/readlink.c.
+AC_DEFUN([gl_PREREQ_READLINK],
+[
+ :
+])
diff --git a/m4/readtokens.m4 b/m4/readtokens.m4
new file mode 100644
index 0000000..596a97b
--- /dev/null
+++ b/m4/readtokens.m4
@@ -0,0 +1,13 @@
+# readtokens.m4 serial 5
+dnl Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_READTOKENS],
+[
+ AC_LIBOBJ([readtokens])
+
+ dnl Prerequisites of lib/readtokens.c.
+ :
+])
diff --git a/m4/readutmp.m4 b/m4/readutmp.m4
new file mode 100644
index 0000000..2e520cd
--- /dev/null
+++ b/m4/readutmp.m4
@@ -0,0 +1,62 @@
+# readutmp.m4 serial 13
+dnl Copyright (C) 2002-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_READUTMP],
+[
+ dnl Persuade utmpx.h to declare utmpxname
+ AC_REQUIRE([AC_GNU_SOURCE])
+
+ AC_CHECK_HEADERS_ONCE(utmp.h utmpx.h)
+ if test $ac_cv_header_utmp_h = yes || test $ac_cv_header_utmpx_h = yes; then
+ AC_LIBOBJ([readutmp])
+
+ dnl Prerequisites of lib/readutmp.h and lib/readutmp.c.
+ AC_REQUIRE([AC_C_INLINE])
+ AC_REQUIRE([gl_FUNC_FREE])
+ AC_CHECK_FUNCS_ONCE(utmpname utmpxname)
+ AC_CHECK_DECLS(getutent,,,[
+#ifdef HAVE_UTMP_H
+# include <utmp.h>
+#endif
+])
+ utmp_includes="\
+$ac_includes_default
+#ifdef HAVE_UTMPX_H
+# include <utmpx.h>
+#endif
+#ifdef HAVE_UTMP_H
+# if defined _THREAD_SAFE && defined UTMP_DATA_INIT
+ /* When including both utmp.h and utmpx.h on AIX 4.3, with _THREAD_SAFE
+ defined, work around the duplicate struct utmp_data declaration. */
+# define utmp_data gl_aix_4_3_workaround_utmp_data
+# endif
+# include <utmp.h>
+#endif
+"
+ AC_CHECK_MEMBERS([struct utmpx.ut_user],,,[$utmp_includes])
+ AC_CHECK_MEMBERS([struct utmp.ut_user],,,[$utmp_includes])
+ AC_CHECK_MEMBERS([struct utmpx.ut_name],,,[$utmp_includes])
+ AC_CHECK_MEMBERS([struct utmp.ut_name],,,[$utmp_includes])
+ AC_CHECK_MEMBERS([struct utmpx.ut_type],,,[$utmp_includes])
+ AC_CHECK_MEMBERS([struct utmp.ut_type],,,[$utmp_includes])
+ AC_CHECK_MEMBERS([struct utmpx.ut_pid],,,[$utmp_includes])
+ AC_CHECK_MEMBERS([struct utmp.ut_pid],,,[$utmp_includes])
+ AC_CHECK_MEMBERS([struct utmpx.ut_id],,,[$utmp_includes])
+ AC_CHECK_MEMBERS([struct utmp.ut_id],,,[$utmp_includes])
+ AC_CHECK_MEMBERS([struct utmpx.ut_exit],,,[$utmp_includes])
+ AC_CHECK_MEMBERS([struct utmp.ut_exit],,,[$utmp_includes])
+
+ AC_CHECK_MEMBERS([struct utmpx.ut_exit.ut_exit],,,[$utmp_includes])
+ AC_CHECK_MEMBERS([struct utmp.ut_exit.ut_exit],,,[$utmp_includes])
+ AC_CHECK_MEMBERS([struct utmpx.ut_exit.e_exit],,,[$utmp_includes])
+ AC_CHECK_MEMBERS([struct utmp.ut_exit.e_exit],,,[$utmp_includes])
+
+ AC_CHECK_MEMBERS([struct utmpx.ut_exit.ut_termination],,,[$utmp_includes])
+ AC_CHECK_MEMBERS([struct utmp.ut_exit.ut_termination],,,[$utmp_includes])
+ AC_CHECK_MEMBERS([struct utmpx.ut_exit.e_termination],,,[$utmp_includes])
+ AC_CHECK_MEMBERS([struct utmp.ut_exit.e_termination],,,[$utmp_includes])
+ fi
+])
diff --git a/m4/regex.m4 b/m4/regex.m4
new file mode 100644
index 0000000..b8d5b1e
--- /dev/null
+++ b/m4/regex.m4
@@ -0,0 +1,211 @@
+#serial 46
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl Initially derived from code in GNU grep.
+dnl Mostly written by Jim Meyering.
+
+AC_PREREQ([2.50])
+
+AC_DEFUN([gl_REGEX],
+[
+ AC_CHECK_HEADERS_ONCE([locale.h])
+
+ AC_ARG_WITH([included-regex],
+ [AC_HELP_STRING([--without-included-regex],
+ [don't compile regex; this is the default on 32-bit
+ systems with recent-enough versions of the GNU C
+ Library (use with caution on other systems).
+ On systems with 64-bit ptrdiff_t and 32-bit int,
+ --with-included-regex is the default, in case
+ regex functions operate on very long strings (>2GB)])])
+
+ case $with_included_regex in #(
+ yes|no) ac_use_included_regex=$with_included_regex
+ ;;
+ '')
+ # If the system regex support is good enough that it passes the
+ # following run test, then default to *not* using the included regex.c.
+ # If cross compiling, assume the test would fail and use the included
+ # regex.c.
+ AC_CACHE_CHECK([for working re_compile_pattern],
+ [gl_cv_func_re_compile_pattern_working],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [AC_INCLUDES_DEFAULT
+ #if HAVE_LOCALE_H
+ #include <locale.h>
+ #endif
+ #include <limits.h>
+ #include <regex.h>
+ ],
+ [[static struct re_pattern_buffer regex;
+ unsigned char folded_chars[UCHAR_MAX + 1];
+ int i;
+ const char *s;
+ struct re_registers regs;
+
+ #if HAVE_LOCALE_H
+ /* http://sourceware.org/ml/libc-hacker/2006-09/msg00008.html
+ This test needs valgrind to catch the bug on Debian
+ GNU/Linux 3.1 x86, but it might catch the bug better
+ on other platforms and it shouldn't hurt to try the
+ test here. */
+ if (setlocale (LC_ALL, "en_US.UTF-8"))
+ {
+ static char const pat[] = "insert into";
+ static char const data[] =
+ "\xFF\0\x12\xA2\xAA\xC4\xB1,K\x12\xC4\xB1*\xACK";
+ re_set_syntax (RE_SYNTAX_GREP | RE_HAT_LISTS_NOT_NEWLINE
+ | RE_ICASE);
+ memset (&regex, 0, sizeof regex);
+ s = re_compile_pattern (pat, sizeof pat - 1, &regex);
+ if (s)
+ return 1;
+ if (re_search (&regex, data, sizeof data - 1,
+ 0, sizeof data - 1, &regs)
+ != -1)
+ return 1;
+ if (! setlocale (LC_ALL, "C"))
+ return 1;
+ }
+ #endif
+
+ /* This test is from glibc bug 3957, reported by Andrew Mackey. */
+ re_set_syntax (RE_SYNTAX_EGREP | RE_HAT_LISTS_NOT_NEWLINE);
+ memset (&regex, 0, sizeof regex);
+ s = re_compile_pattern ("a[^x]b", 6, &regex);
+ if (s)
+ return 1;
+
+ /* This should fail, but succeeds for glibc-2.5. */
+ if (re_search (&regex, "a\nb", 3, 0, 3, &regs) != -1)
+ return 1;
+
+ /* This regular expression is from Spencer ere test number 75
+ in grep-2.3. */
+ re_set_syntax (RE_SYNTAX_POSIX_EGREP);
+ memset (&regex, 0, sizeof regex);
+ for (i = 0; i <= UCHAR_MAX; i++)
+ folded_chars[i] = i;
+ regex.translate = folded_chars;
+ s = re_compile_pattern ("a[[:@:>@:]]b\n", 11, &regex);
+ /* This should fail with _Invalid character class name_ error. */
+ if (!s)
+ return 1;
+
+ /* This should succeed, but does not for glibc-2.1.3. */
+ memset (&regex, 0, sizeof regex);
+ s = re_compile_pattern ("{1", 2, &regex);
+
+ if (s)
+ return 1;
+
+ /* The following example is derived from a problem report
+ against gawk from Jorge Stolfi <stolfi@ic.unicamp.br>. */
+ memset (&regex, 0, sizeof regex);
+ s = re_compile_pattern ("[an\371]*n", 7, &regex);
+ if (s)
+ return 1;
+
+ /* This should match, but does not for glibc-2.2.1. */
+ if (re_match (&regex, "an", 2, 0, &regs) != 2)
+ return 1;
+
+ memset (&regex, 0, sizeof regex);
+ s = re_compile_pattern ("x", 1, &regex);
+ if (s)
+ return 1;
+
+ /* glibc-2.2.93 does not work with a negative RANGE argument. */
+ if (re_search (&regex, "wxy", 3, 2, -2, &regs) != 1)
+ return 1;
+
+ /* The version of regex.c in older versions of gnulib
+ ignored RE_ICASE. Detect that problem too. */
+ re_set_syntax (RE_SYNTAX_EMACS | RE_ICASE);
+ memset (&regex, 0, sizeof regex);
+ s = re_compile_pattern ("x", 1, &regex);
+ if (s)
+ return 1;
+
+ if (re_search (&regex, "WXY", 3, 0, 3, &regs) < 0)
+ return 1;
+
+ /* REG_STARTEND was added to glibc on 2004-01-15.
+ Reject older versions. */
+ if (! REG_STARTEND)
+ return 1;
+
+ /* Reject hosts whose regoff_t values are too narrow.
+ These include glibc 2.3.5 on hosts with 64-bit ptrdiff_t
+ and 32-bit int. */
+ if (sizeof (regoff_t) < sizeof (ptrdiff_t)
+ || sizeof (regoff_t) < sizeof (ssize_t))
+ return 1;
+
+ return 0;]])],
+ [gl_cv_func_re_compile_pattern_working=yes],
+ [gl_cv_func_re_compile_pattern_working=no],
+ dnl When crosscompiling, assume it is not working.
+ [gl_cv_func_re_compile_pattern_working=no])])
+ case $gl_cv_func_re_compile_pattern_working in #(
+ yes) ac_use_included_regex=no;; #(
+ no) ac_use_included_regex=yes;;
+ esac
+ ;;
+ *) AC_MSG_ERROR([Invalid value for --with-included-regex: $with_included_regex])
+ ;;
+ esac
+
+ if test $ac_use_included_regex = yes; then
+ AC_DEFINE([_REGEX_LARGE_OFFSETS], 1,
+ [Define if you want regoff_t to be at least as wide POSIX requires.])
+ AC_DEFINE([re_syntax_options], [rpl_re_syntax_options],
+ [Define to rpl_re_syntax_options if the replacement should be used.])
+ AC_DEFINE([re_set_syntax], [rpl_re_set_syntax],
+ [Define to rpl_re_set_syntax if the replacement should be used.])
+ AC_DEFINE([re_compile_pattern], [rpl_re_compile_pattern],
+ [Define to rpl_re_compile_pattern if the replacement should be used.])
+ AC_DEFINE([re_compile_fastmap], [rpl_re_compile_fastmap],
+ [Define to rpl_re_compile_fastmap if the replacement should be used.])
+ AC_DEFINE([re_search], [rpl_re_search],
+ [Define to rpl_re_search if the replacement should be used.])
+ AC_DEFINE([re_search_2], [rpl_re_search_2],
+ [Define to rpl_re_search_2 if the replacement should be used.])
+ AC_DEFINE([re_match], [rpl_re_match],
+ [Define to rpl_re_match if the replacement should be used.])
+ AC_DEFINE([re_match_2], [rpl_re_match_2],
+ [Define to rpl_re_match_2 if the replacement should be used.])
+ AC_DEFINE([re_set_registers], [rpl_re_set_registers],
+ [Define to rpl_re_set_registers if the replacement should be used.])
+ AC_DEFINE([re_comp], [rpl_re_comp],
+ [Define to rpl_re_comp if the replacement should be used.])
+ AC_DEFINE([re_exec], [rpl_re_exec],
+ [Define to rpl_re_exec if the replacement should be used.])
+ AC_DEFINE([regcomp], [rpl_regcomp],
+ [Define to rpl_regcomp if the replacement should be used.])
+ AC_DEFINE([regexec], [rpl_regexec],
+ [Define to rpl_regexec if the replacement should be used.])
+ AC_DEFINE([regerror], [rpl_regerror],
+ [Define to rpl_regerror if the replacement should be used.])
+ AC_DEFINE([regfree], [rpl_regfree],
+ [Define to rpl_regfree if the replacement should be used.])
+ AC_LIBOBJ([regex])
+ gl_PREREQ_REGEX
+ fi
+])
+
+# Prerequisites of lib/regex.c and lib/regex_internal.c.
+AC_DEFUN([gl_PREREQ_REGEX],
+[
+ AC_REQUIRE([AC_GNU_SOURCE])
+ AC_REQUIRE([AC_C_RESTRICT])
+ AC_CHECK_FUNCS_ONCE([iswctype mbrtowc wcrtomb wcscoll])
+ AC_CHECK_DECLS([isblank], [], [], [#include <ctype.h>])
+])
diff --git a/m4/rename-dest-slash.m4 b/m4/rename-dest-slash.m4
new file mode 100644
index 0000000..227f237
--- /dev/null
+++ b/m4/rename-dest-slash.m4
@@ -0,0 +1,41 @@
+#serial 2
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Derived from rename.m4.
+
+# A rename wrapper to make tools like mv -- that would normally
+# rely on the underlying rename syscall -- work more consistently.
+
+AC_DEFUN([gl_FUNC_RENAME_TRAILING_DEST_SLASH],
+[
+ AC_CACHE_CHECK([whether rename is broken with respect to destination slashes],
+ gl_cv_func_rename_trailing_dest_slash_bug,
+ [
+ rm -rf conftest.d1 conftest.d2
+ mkdir conftest.d1 ||
+ AC_MSG_ERROR([cannot create temporary directory])
+ AC_TRY_RUN([
+# include <stdio.h>
+ int
+ main ()
+ {
+ return (rename ("conftest.d1", "conftest.d2/") ? 1 : 0);
+ }
+ ],
+ gl_cv_func_rename_trailing_dest_slash_bug=no,
+ gl_cv_func_rename_trailing_dest_slash_bug=yes,
+ dnl When crosscompiling, assume rename is broken.
+ gl_cv_func_rename_trailing_dest_slash_bug=yes)
+
+ rm -rf conftest.d1 conftest.d2
+ ])
+ if test $gl_cv_func_rename_trailing_dest_slash_bug = yes; then
+ AC_LIBOBJ(rename-dest-slash)
+ AC_DEFINE(rename, rpl_rename_dest_slash,
+ [Define to rpl_rename_dest_slash if the replacement function should be used.])
+ fi
+])
diff --git a/m4/rename.m4 b/m4/rename.m4
new file mode 100644
index 0000000..39ad5e7
--- /dev/null
+++ b/m4/rename.m4
@@ -0,0 +1,52 @@
+#serial 10
+
+# Copyright (C) 2001, 2003, 2005, 2006 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl From Volker Borchert.
+dnl Determine whether rename works for source file names with a trailing slash.
+dnl The rename from SunOS 4.1.1_U1 doesn't.
+dnl
+dnl If it doesn't, then define RENAME_TRAILING_SLASH_BUG and arrange
+dnl to compile the wrapper function.
+dnl
+
+AC_DEFUN([gl_FUNC_RENAME],
+[
+ AC_CACHE_CHECK([whether rename is broken],
+ gl_cv_func_rename_trailing_slash_bug,
+ [
+ rm -rf conftest.d1 conftest.d2
+ mkdir conftest.d1 ||
+ AC_MSG_ERROR([cannot create temporary directory])
+ AC_TRY_RUN([
+# include <stdio.h>
+# include <stdlib.h>
+ int
+ main ()
+ {
+ exit (rename ("conftest.d1/", "conftest.d2") ? 1 : 0);
+ }
+ ],
+ gl_cv_func_rename_trailing_slash_bug=no,
+ gl_cv_func_rename_trailing_slash_bug=yes,
+ dnl When crosscompiling, assume rename is broken.
+ gl_cv_func_rename_trailing_slash_bug=yes)
+
+ rm -rf conftest.d1 conftest.d2
+ ])
+ if test $gl_cv_func_rename_trailing_slash_bug = yes; then
+ AC_LIBOBJ(rename)
+ AC_DEFINE(rename, rpl_rename,
+ [Define to rpl_rename if the replacement function should be used.])
+ AC_DEFINE(RENAME_TRAILING_SLASH_BUG, 1,
+ [Define if rename does not work for source file names with a trailing
+ slash, like the one from SunOS 4.1.1_U1.])
+ gl_PREREQ_RENAME
+ fi
+])
+
+# Prerequisites of lib/rename.c.
+AC_DEFUN([gl_PREREQ_RENAME], [:])
diff --git a/m4/rmdir-errno.m4 b/m4/rmdir-errno.m4
new file mode 100644
index 0000000..7693bc7
--- /dev/null
+++ b/m4/rmdir-errno.m4
@@ -0,0 +1,49 @@
+#serial 8
+
+# Copyright (C) 2000, 2001, 2005, 2006 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# When rmdir fails because the specified directory is not empty, it sets
+# errno to some value, usually ENOTEMPTY. However, on some AIX systems,
+# ENOTEMPTY is mistakenly defined to be EEXIST. To work around this, and
+# in general, to avoid depending on the use of any particular symbol, this
+# test runs a test to determine the actual numeric value.
+AC_DEFUN([gl_FUNC_RMDIR_NOTEMPTY],
+[dnl
+ AC_CHECK_HEADERS_ONCE(unistd.h)
+ AC_CACHE_CHECK([for rmdir-not-empty errno value],
+ gl_cv_func_rmdir_errno_not_empty,
+ [
+ # Arrange for deletion of the temporary directory this test creates.
+ ac_clean_files="$ac_clean_files confdir2"
+ mkdir confdir2; : > confdir2/file
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <errno.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+ int main ()
+ {
+ FILE *s;
+ int val;
+ rmdir ("confdir2");
+ val = errno;
+ s = fopen ("confdir2/errno", "w");
+ fprintf (s, "%d\n", val);
+ return 0;
+ }
+ ],
+ gl_cv_func_rmdir_errno_not_empty=`cat confdir2/errno`,
+ gl_cv_func_rmdir_errno_not_empty='configure error in rmdir-errno.m4',
+ gl_cv_func_rmdir_errno_not_empty=ENOTEMPTY
+ )
+ ]
+ )
+
+ AC_DEFINE_UNQUOTED([RMDIR_ERRNO_NOT_EMPTY],
+ $gl_cv_func_rmdir_errno_not_empty,
+ [the value to which errno is set when rmdir fails on a nonempty directory])
+])
diff --git a/m4/rmdir.m4 b/m4/rmdir.m4
new file mode 100644
index 0000000..7235203
--- /dev/null
+++ b/m4/rmdir.m4
@@ -0,0 +1,10 @@
+# rmdir.m4 serial 3
+dnl Copyright (C) 2002, 2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_RMDIR],
+[
+ AC_REPLACE_FUNCS(rmdir)
+])
diff --git a/m4/root-dev-ino.m4 b/m4/root-dev-ino.m4
new file mode 100644
index 0000000..bf7a7c9
--- /dev/null
+++ b/m4/root-dev-ino.m4
@@ -0,0 +1,16 @@
+# -*- buffer-read-only: t -*- vi: set ro:
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+#serial 3
+dnl Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_ROOT_DEV_INO],
+[
+ AC_LIBOBJ([root-dev-ino])
+
+ dnl Prerequisites
+ AC_REQUIRE([AC_FUNC_LSTAT])
+ :
+])
diff --git a/m4/rpmatch.m4 b/m4/rpmatch.m4
new file mode 100644
index 0000000..4a471ac
--- /dev/null
+++ b/m4/rpmatch.m4
@@ -0,0 +1,16 @@
+# rpmatch.m4 serial 5
+dnl Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_RPMATCH],
+[
+ AC_REPLACE_FUNCS(rpmatch)
+ if test $ac_cv_func_rpmatch = no; then
+ gl_PREREQ_RPMATCH
+ fi
+])
+
+# Prerequisites of lib/rpmatch.c.
+AC_DEFUN([gl_PREREQ_RPMATCH], [:])
diff --git a/m4/safe-read.m4 b/m4/safe-read.m4
new file mode 100644
index 0000000..7a89d0a
--- /dev/null
+++ b/m4/safe-read.m4
@@ -0,0 +1,18 @@
+# safe-read.m4 serial 5
+dnl Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_SAFE_READ],
+[
+ AC_LIBOBJ([safe-read])
+
+ gl_PREREQ_SAFE_READ
+])
+
+# Prerequisites of lib/safe-read.c.
+AC_DEFUN([gl_PREREQ_SAFE_READ],
+[
+ AC_REQUIRE([gt_TYPE_SSIZE_T])
+])
diff --git a/m4/safe-write.m4 b/m4/safe-write.m4
new file mode 100644
index 0000000..db119ff
--- /dev/null
+++ b/m4/safe-write.m4
@@ -0,0 +1,18 @@
+# safe-write.m4 serial 3
+dnl Copyright (C) 2002, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_SAFE_WRITE],
+[
+ AC_LIBOBJ([safe-write])
+
+ gl_PREREQ_SAFE_WRITE
+])
+
+# Prerequisites of lib/safe-write.c.
+AC_DEFUN([gl_PREREQ_SAFE_WRITE],
+[
+ gl_PREREQ_SAFE_READ
+])
diff --git a/m4/same.m4 b/m4/same.m4
new file mode 100644
index 0000000..709c8f1
--- /dev/null
+++ b/m4/same.m4
@@ -0,0 +1,14 @@
+#serial 8
+dnl Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_SAME],
+[
+ AC_LIBOBJ([same])
+
+ dnl Prerequisites of lib/same.c.
+ AC_REQUIRE([AC_SYS_LONG_FILE_NAMES])
+ AC_CHECK_FUNCS_ONCE([pathconf])
+])
diff --git a/m4/save-cwd.m4 b/m4/save-cwd.m4
new file mode 100644
index 0000000..7a2286b
--- /dev/null
+++ b/m4/save-cwd.m4
@@ -0,0 +1,12 @@
+#serial 8
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_SAVE_CWD],
+[
+ AC_LIBOBJ([save-cwd])
+ dnl Prerequisites for lib/save-cwd.c.
+ AC_CHECK_FUNCS_ONCE(fchdir)
+])
diff --git a/m4/savedir.m4 b/m4/savedir.m4
new file mode 100644
index 0000000..1fc6c81
--- /dev/null
+++ b/m4/savedir.m4
@@ -0,0 +1,10 @@
+# savedir.m4 serial 9
+dnl Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_SAVEDIR],
+[
+ AC_LIBOBJ([savedir])
+])
diff --git a/m4/savewd.m4 b/m4/savewd.m4
new file mode 100644
index 0000000..147214d
--- /dev/null
+++ b/m4/savewd.m4
@@ -0,0 +1,9 @@
+# Save and restore the working directory, possibly using a child process.
+
+dnl Copyright (C) 2004 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_SAVEWD],
+ [AC_REQUIRE([AC_C_INLINE])])
diff --git a/m4/setenv.m4 b/m4/setenv.m4
new file mode 100644
index 0000000..d6901de
--- /dev/null
+++ b/m4/setenv.m4
@@ -0,0 +1,82 @@
+# setenv.m4 serial 8
+dnl Copyright (C) 2001-2004, 2006-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_SETENV],
+[
+ AC_CHECK_FUNCS_ONCE([setenv])
+ if test $ac_cv_func_setenv = no; then
+ AC_LIBOBJ([setenv])
+ gl_PREREQ_SETENV
+ fi
+])
+
+# Like gl_FUNC_SETENV, except prepare for separate compilation (no AC_LIBOBJ).
+AC_DEFUN([gl_FUNC_SETENV_SEPARATE],
+[
+ AC_CHECK_FUNCS_ONCE([setenv])
+ gl_PREREQ_SETENV
+])
+
+AC_DEFUN([gl_FUNC_UNSETENV],
+[
+ AC_CHECK_FUNCS([unsetenv])
+ if test $ac_cv_func_unsetenv = no; then
+ AC_LIBOBJ([unsetenv])
+ gl_PREREQ_UNSETENV
+ else
+ AC_CACHE_CHECK([for unsetenv() return type], gt_cv_func_unsetenv_ret,
+ [AC_TRY_COMPILE([#include <stdlib.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+int unsetenv (const char *name);
+#else
+int unsetenv();
+#endif
+], , gt_cv_func_unsetenv_ret='int', gt_cv_func_unsetenv_ret='void')])
+ if test $gt_cv_func_unsetenv_ret = 'void'; then
+ AC_DEFINE(VOID_UNSETENV, 1, [Define if unsetenv() returns void, not int.])
+ fi
+ fi
+])
+
+# Check if a variable is properly declared.
+# gt_CHECK_VAR_DECL(includes,variable)
+AC_DEFUN([gt_CHECK_VAR_DECL],
+[
+ define([gt_cv_var], [gt_cv_var_]$2[_declaration])
+ AC_MSG_CHECKING([if $2 is properly declared])
+ AC_CACHE_VAL(gt_cv_var, [
+ AC_TRY_COMPILE([$1
+ extern struct { int foo; } $2;],
+ [$2.foo = 1;],
+ gt_cv_var=no,
+ gt_cv_var=yes)])
+ AC_MSG_RESULT($gt_cv_var)
+ if test $gt_cv_var = yes; then
+ AC_DEFINE([HAVE_]translit($2, [a-z], [A-Z])[_DECL], 1,
+ [Define if you have the declaration of $2.])
+ fi
+])
+
+# Prerequisites of lib/setenv.c.
+AC_DEFUN([gl_PREREQ_SETENV],
+[
+ AC_REQUIRE([AC_FUNC_ALLOCA])
+ AC_CHECK_HEADERS_ONCE(unistd.h)
+ AC_CHECK_HEADERS(search.h)
+ AC_CHECK_FUNCS(tsearch)
+ gt_CHECK_VAR_DECL([#include <unistd.h>], environ)
+])
+
+# Prerequisites of lib/unsetenv.c.
+AC_DEFUN([gl_PREREQ_UNSETENV],
+[
+ AC_CHECK_HEADERS_ONCE(unistd.h)
+ gt_CHECK_VAR_DECL([#include <unistd.h>], environ)
+])
diff --git a/m4/settime.m4 b/m4/settime.m4
new file mode 100644
index 0000000..693e84e
--- /dev/null
+++ b/m4/settime.m4
@@ -0,0 +1,15 @@
+# settime.m4 serial 5
+dnl Copyright (C) 2002, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_SETTIME],
+[
+ AC_LIBOBJ([settime])
+
+ dnl Prerequisites of lib/settime.c.
+ AC_REQUIRE([gl_CLOCK_TIME])
+ AC_REQUIRE([gl_TIMESPEC])
+ AC_CHECK_FUNCS_ONCE(settimeofday stime)
+])
diff --git a/m4/sha1.m4 b/m4/sha1.m4
new file mode 100644
index 0000000..c6e6184
--- /dev/null
+++ b/m4/sha1.m4
@@ -0,0 +1,14 @@
+# sha1.m4 serial 7
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_SHA1],
+[
+ AC_LIBOBJ([sha1])
+
+ dnl Prerequisites of lib/sha1.c.
+ AC_REQUIRE([AC_C_BIGENDIAN])
+ :
+])
diff --git a/m4/sha256.m4 b/m4/sha256.m4
new file mode 100644
index 0000000..4284e3f
--- /dev/null
+++ b/m4/sha256.m4
@@ -0,0 +1,15 @@
+# sha256.m4 serial 1
+dnl Copyright (C) 2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_SHA256],
+[
+ AC_LIBSOURCES([sha256.c, sha256.h])
+ AC_LIBOBJ([sha256])
+
+ dnl Prerequisites of lib/sha256.c.
+ AC_REQUIRE([AC_C_BIGENDIAN])
+ :
+])
diff --git a/m4/sha512.m4 b/m4/sha512.m4
new file mode 100644
index 0000000..2de0b2e
--- /dev/null
+++ b/m4/sha512.m4
@@ -0,0 +1,15 @@
+# sha512.m4 serial 2
+dnl Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_SHA512],
+[
+ AC_LIBSOURCES([sha512.c, sha512.h, u64.h])
+ AC_LIBOBJ([sha512])
+
+ dnl Prerequisites of lib/sha512.c.
+ AC_REQUIRE([AC_C_BIGENDIAN])
+ :
+])
diff --git a/m4/sig2str.m4 b/m4/sig2str.m4
new file mode 100644
index 0000000..8b85c43
--- /dev/null
+++ b/m4/sig2str.m4
@@ -0,0 +1,19 @@
+#serial 5
+dnl Copyright (C) 2002, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_SIG2STR],
+[
+
+ AC_REPLACE_FUNCS(sig2str)
+ if test $ac_cv_func_sig2str = no; then
+ gl_PREREQ_SIG2STR
+ fi
+])
+
+# Prerequisites of lib/sig2str.c.
+AC_DEFUN([gl_PREREQ_SIG2STR], [
+ :
+])
diff --git a/m4/snprintf.m4 b/m4/snprintf.m4
new file mode 100644
index 0000000..f21200d
--- /dev/null
+++ b/m4/snprintf.m4
@@ -0,0 +1,31 @@
+# snprintf.m4 serial 4
+dnl Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_SNPRINTF],
+[
+ AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+ AC_CHECK_FUNCS([snprintf])
+ if test $ac_cv_func_snprintf = no; then
+ gl_REPLACE_SNPRINTF
+ fi
+ AC_CHECK_DECLS_ONCE([snprintf])
+ if test $ac_cv_have_decl_snprintf = no; then
+ HAVE_DECL_SNPRINTF=0
+ fi
+])
+
+AC_DEFUN([gl_REPLACE_SNPRINTF],
+[
+ AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+ AC_LIBOBJ([snprintf])
+ if test $ac_cv_func_snprintf = yes; then
+ REPLACE_SNPRINTF=1
+ fi
+ gl_PREREQ_SNPRINTF
+])
+
+# Prerequisites of lib/snprintf.c.
+AC_DEFUN([gl_PREREQ_SNPRINTF], [:])
diff --git a/m4/socklen.m4 b/m4/socklen.m4
new file mode 100644
index 0000000..e824a09
--- /dev/null
+++ b/m4/socklen.m4
@@ -0,0 +1,52 @@
+# socklen.m4 serial 5
+dnl Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Albert Chin, Windows fixes from Simon Josefsson.
+
+dnl Check for socklen_t: historically on BSD it is an int, and in
+dnl POSIX 1g it is a type of its own, but some platforms use different
+dnl types for the argument to getsockopt, getpeername, etc. So we
+dnl have to test to find something that will work.
+
+dnl On mingw32, socklen_t is in ws2tcpip.h ('int'), so we try to find
+dnl it there first. That file is included by gnulib's socket_.h, which
+dnl all users of this module should include. Cygwin must not include
+dnl ws2tcpip.h.
+AC_DEFUN([gl_TYPE_SOCKLEN_T],
+ [AC_REQUIRE([gl_HEADER_SYS_SOCKET])dnl
+ AC_CHECK_TYPE([socklen_t], ,
+ [AC_MSG_CHECKING([for socklen_t equivalent])
+ AC_CACHE_VAL([gl_cv_socklen_t_equiv],
+ [# Systems have either "struct sockaddr *" or
+ # "void *" as the second argument to getpeername
+ gl_cv_socklen_t_equiv=
+ for arg2 in "struct sockaddr" void; do
+ for t in int size_t "unsigned int" "long int" "unsigned long int"; do
+ AC_TRY_COMPILE(
+ [#include <sys/types.h>
+ #include <sys/socket.h>
+
+ int getpeername (int, $arg2 *, $t *);],
+ [$t len;
+ getpeername (0, 0, &len);],
+ [gl_cv_socklen_t_equiv="$t"])
+ test "$gl_cv_socklen_t_equiv" != "" && break
+ done
+ test "$gl_cv_socklen_t_equiv" != "" && break
+ done
+ ])
+ if test "$gl_cv_socklen_t_equiv" = ""; then
+ AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
+ fi
+ AC_MSG_RESULT([$gl_cv_socklen_t_equiv])
+ AC_DEFINE_UNQUOTED([socklen_t], [$gl_cv_socklen_t_equiv],
+ [type to use in place of socklen_t if not defined])],
+ [#include <sys/types.h>
+ #if HAVE_SYS_SOCKET_H
+ # include <sys/socket.h>
+ #elif HAVE_WS2TCPIP_H
+ # include <ws2tcpip.h>
+ #endif])])
diff --git a/m4/sockpfaf.m4 b/m4/sockpfaf.m4
new file mode 100644
index 0000000..25d9755
--- /dev/null
+++ b/m4/sockpfaf.m4
@@ -0,0 +1,58 @@
+# sockpfaf.m4 serial 5
+dnl Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Test for some common socket protocol families (PF_INET, PF_INET6, ...)
+dnl and some common address families (AF_INET, AF_INET6, ...).
+dnl This test assumes that a system supports an address family if and only if
+dnl it supports the corresponding protocol family.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([gl_SOCKET_FAMILIES],
+[
+ AC_REQUIRE([gl_HEADER_SYS_SOCKET])
+ AC_CHECK_HEADERS_ONCE([netinet/in.h])
+
+ AC_MSG_CHECKING(for IPv4 sockets)
+ AC_CACHE_VAL(gl_cv_socket_ipv4,
+ [AC_TRY_COMPILE([#include <sys/types.h>
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif],
+[int x = AF_INET; struct in_addr y; struct sockaddr_in z;
+ if (&x && &y && &z) return 0;],
+ gl_cv_socket_ipv4=yes, gl_cv_socket_ipv4=no)])
+ AC_MSG_RESULT($gl_cv_socket_ipv4)
+ if test $gl_cv_socket_ipv4 = yes; then
+ AC_DEFINE(HAVE_IPV4, 1, [Define to 1 if <sys/socket.h> defines AF_INET.])
+ fi
+
+ AC_MSG_CHECKING(for IPv6 sockets)
+ AC_CACHE_VAL(gl_cv_socket_ipv6,
+ [AC_TRY_COMPILE([#include <sys/types.h>
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif],
+[int x = AF_INET6; struct in6_addr y; struct sockaddr_in6 z;
+ if (&x && &y && &z) return 0;],
+ gl_cv_socket_ipv6=yes, gl_cv_socket_ipv6=no)])
+ AC_MSG_RESULT($gl_cv_socket_ipv6)
+ if test $gl_cv_socket_ipv6 = yes; then
+ AC_DEFINE(HAVE_IPV6, 1, [Define to 1 if <sys/socket.h> defines AF_INET6.])
+ fi
+])
diff --git a/m4/ssize_t.m4 b/m4/ssize_t.m4
new file mode 100644
index 0000000..4eaef93
--- /dev/null
+++ b/m4/ssize_t.m4
@@ -0,0 +1,21 @@
+# ssize_t.m4 serial 4 (gettext-0.15)
+dnl Copyright (C) 2001-2003, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Test whether ssize_t is defined.
+
+AC_DEFUN([gt_TYPE_SSIZE_T],
+[
+ AC_CACHE_CHECK([for ssize_t], [gt_cv_ssize_t],
+ [AC_TRY_COMPILE([#include <sys/types.h>],
+ [int x = sizeof (ssize_t *) + sizeof (ssize_t);
+ return !x;],
+ [gt_cv_ssize_t=yes], [gt_cv_ssize_t=no])])
+ if test $gt_cv_ssize_t = no; then
+ AC_DEFINE([ssize_t], [int],
+ [Define as a signed type of the same size as size_t.])
+ fi
+])
diff --git a/m4/st_dm_mode.m4 b/m4/st_dm_mode.m4
new file mode 100644
index 0000000..c1da154
--- /dev/null
+++ b/m4/st_dm_mode.m4
@@ -0,0 +1,22 @@
+#serial 4
+
+# Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Define HAVE_ST_DM_MODE if struct stat has an st_dm_mode member.
+
+AC_DEFUN([AC_STRUCT_ST_DM_MODE],
+ [AC_CACHE_CHECK([for st_dm_mode in struct stat], ac_cv_struct_st_dm_mode,
+ [AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/stat.h>], [struct stat s; s.st_dm_mode;],
+ ac_cv_struct_st_dm_mode=yes,
+ ac_cv_struct_st_dm_mode=no)])
+
+ if test $ac_cv_struct_st_dm_mode = yes; then
+ AC_DEFINE(HAVE_ST_DM_MODE, 1,
+ [Define if struct stat has an st_dm_mode member. ])
+ fi
+ ]
+)
diff --git a/m4/stat-prog.m4 b/m4/stat-prog.m4
new file mode 100644
index 0000000..df9b40d
--- /dev/null
+++ b/m4/stat-prog.m4
@@ -0,0 +1,87 @@
+# stat-prog.m4 serial 5
+# Record the prerequisites of src/stat.c from the coreutils package.
+
+# Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Written by Jim Meyering.
+
+AC_DEFUN([cu_PREREQ_STAT_PROG],
+[
+ AC_REQUIRE([gl_FSUSAGE])
+ AC_REQUIRE([gl_FSTYPENAME])
+ AC_CHECK_HEADERS_ONCE([OS.h netinet/in.h sys/param.h sys/vfs.h])
+
+ dnl Check for vfs.h first, since this avoids a warning with nfs_client.h
+ dnl on Solaris 8.
+ test $ac_cv_header_sys_param_h = yes &&
+ test $ac_cv_header_sys_mount_h = yes &&
+ AC_CHECK_HEADERS([nfs/vfs.h],
+ [AC_CHECK_HEADERS([nfs/nfs_client.h])])
+
+ statvfs_includes="\
+AC_INCLUDES_DEFAULT
+#include <sys/statvfs.h>
+"
+ statfs_includes="\
+AC_INCLUDES_DEFAULT
+#if HAVE_SYS_VFS_H
+# include <sys/vfs.h>
+#elif HAVE_SYS_MOUNT_H && HAVE_SYS_PARAM_H
+# include <sys/param.h>
+# include <sys/mount.h>
+# if HAVE_NETINET_IN_H && HAVE_NFS_NFS_CLNT_H && HAVE_NFS_VFS_H
+# include <netinet/in.h>
+# include <nfs/nfs_clnt.h>
+# include <nfs/vfs.h>
+# endif
+#elif HAVE_OS_H
+# include <fs_info.h>
+#endif
+"
+ dnl Keep this long conditional in sync with the USE_STATVFS conditional
+ dnl in ../src/stat.c.
+ if test "$fu_cv_sys_stat_statvfs" = yes &&
+ { AC_CHECK_MEMBERS([struct statvfs.f_basetype],,, [$statvfs_includes])
+ test $ac_cv_member_struct_statvfs_f_basetype = yes ||
+ { AC_CHECK_MEMBERS([struct statvfs.f_fstypename],,, [$statvfs_includes])
+ test $ac_cv_member_struct_statvfs_f_fstypename = yes ||
+ { test $ac_cv_member_struct_statfs_f_fstypename != yes &&
+ { AC_CHECK_MEMBERS([struct statvfs.f_type],,, [$statvfs_includes])
+ test $ac_cv_member_struct_statvfs_f_type = yes; }; }; }; }
+ then
+ AC_CHECK_MEMBERS([struct statvfs.f_namemax],,, [$statvfs_includes])
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [$statvfs_includes],
+ [static statvfs s;
+ return (s.s_fsid ^ 0) == 0;])],
+ [AC_DEFINE([STRUCT_STATVFS_F_FSID_IS_INTEGER], 1,
+ [Define to 1 if the f_fsid member of struct statvfs is an integer.])])
+ else
+ AC_CHECK_MEMBERS([struct statfs.f_namelen, struct statfs.f_type],,,
+ [$statfs_includes])
+ if test $ac_cv_header_OS_h != yes; then
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [$statfs_includes],
+ [static statfs s;
+ return (s.s_fsid ^ 0) == 0;])],
+ [AC_DEFINE([STRUCT_STATFS_F_FSID_IS_INTEGER], 1,
+ [Define to 1 if the f_fsid member of struct statfs is an integer.])])
+ fi
+ fi
+])
diff --git a/m4/stat-time.m4 b/m4/stat-time.m4
new file mode 100644
index 0000000..353de21
--- /dev/null
+++ b/m4/stat-time.m4
@@ -0,0 +1,63 @@
+# Checks for stat-related time functions.
+
+# Copyright (C) 1998, 1999, 2001, 2003, 2005, 2006, 2007 Free Software
+# Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+
+# st_atim.tv_nsec - Linux, Solaris
+# st_atimespec.tv_nsec - FreeBSD, if ! defined _POSIX_SOURCE
+# st_atimensec - FreeBSD, if defined _POSIX_SOURCE
+# st_atim.st__tim.tv_nsec - UnixWare (at least 2.1.2 through 7.1)
+# st_spare1 - Cygwin?
+
+AC_DEFUN([gl_STAT_TIME],
+[
+ AC_REQUIRE([AC_C_INLINE])
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_CHECK_HEADERS_ONCE([sys/time.h])
+
+ AC_CHECK_MEMBERS([struct stat.st_atim.tv_nsec],
+ [AC_CACHE_CHECK([whether struct stat.st_atim is of type struct timespec],
+ [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec],
+ [AC_TRY_COMPILE(
+ [
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #if HAVE_SYS_TIME_H
+ # include <sys/time.h>
+ #endif
+ #include <time.h>
+ struct timespec ts;
+ struct stat st;
+ ],
+ [
+ st.st_atim = ts;
+ ],
+ [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=yes],
+ [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=no])])
+ if test $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec = yes; then
+ AC_DEFINE([TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC], 1,
+ [Define to 1 if the type of the st_atim member of a struct stat is
+ struct timespec.])
+ fi],
+ [AC_CHECK_MEMBERS([struct stat.st_atimespec.tv_nsec], [],
+ [AC_CHECK_MEMBERS([struct stat.st_atimensec], [],
+ [AC_CHECK_MEMBERS([struct stat.st_atim.st__tim.tv_nsec], [],
+ [AC_CHECK_MEMBERS([struct stat.st_spare1], [],
+ [],
+ [#include <sys/types.h>
+ #include <sys/stat.h>])],
+ [#include <sys/types.h>
+ #include <sys/stat.h>])],
+ [#include <sys/types.h>
+ #include <sys/stat.h>])],
+ [#include <sys/types.h>
+ #include <sys/stat.h>])],
+ [#include <sys/types.h>
+ #include <sys/stat.h>])
+])
diff --git a/m4/stdarg.m4 b/m4/stdarg.m4
new file mode 100644
index 0000000..e8e680a
--- /dev/null
+++ b/m4/stdarg.m4
@@ -0,0 +1,40 @@
+# stdarg.m4 serial 1
+dnl Copyright (C) 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Provide a working va_copy in combination with <stdarg.h>.
+
+AC_DEFUN([gl_STDARG_H],
+[
+ AC_MSG_CHECKING([for va_copy])
+ AC_CACHE_VAL([gl_cv_func_va_copy], [
+ AC_TRY_COMPILE([#include <stdarg.h>], [
+#ifndef va_copy
+void (*func) (va_list, va_list) = va_copy;
+#endif
+],
+ [gl_cv_func_va_copy=yes], [gl_cv_func_va_copy=no])])
+ AC_MSG_RESULT([$gl_cv_func_va_copy])
+ if test $gl_cv_func_va_copy = no; then
+ # Provide a substitute, either __va_copy or as a simple assignment.
+ AC_CACHE_VAL([gl_cv_func___va_copy], [
+ AC_TRY_COMPILE([#include <stdarg.h>], [
+#ifndef __va_copy
+error, bail out
+#endif
+],
+ [gl_cv_func___va_copy=yes], [gl_cv_func___va_copy=no])])
+ if test $gl_cv_func___va_copy = yes; then
+ AC_DEFINE([va_copy], [__va_copy],
+ [Define as a macro for copying va_list variables.])
+ else
+ AH_VERBATIM([gl_VA_COPY], [/* A replacement for va_copy, if needed. */
+#define gl_va_copy(a,b) ((a) = (b))])
+ AC_DEFINE([va_copy], [gl_va_copy],
+ [Define as a macro for copying va_list variables.])
+ fi
+ fi
+])
diff --git a/m4/stdbool.m4 b/m4/stdbool.m4
new file mode 100644
index 0000000..2204ecd
--- /dev/null
+++ b/m4/stdbool.m4
@@ -0,0 +1,115 @@
+# Check for stdbool.h that conforms to C99.
+
+dnl Copyright (C) 2002-2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Prepare for substituting <stdbool.h> if it is not supported.
+
+AC_DEFUN([AM_STDBOOL_H],
+[
+ AC_REQUIRE([AC_HEADER_STDBOOL])
+
+ # Define two additional variables used in the Makefile substitution.
+
+ if test "$ac_cv_header_stdbool_h" = yes; then
+ STDBOOL_H=''
+ else
+ STDBOOL_H='stdbool.h'
+ fi
+ AC_SUBST([STDBOOL_H])
+
+ if test "$ac_cv_type__Bool" = yes; then
+ HAVE__BOOL=1
+ else
+ HAVE__BOOL=0
+ fi
+ AC_SUBST([HAVE__BOOL])
+])
+
+# AM_STDBOOL_H will be renamed to gl_STDBOOL_H in the future.
+AC_DEFUN([gl_STDBOOL_H], [AM_STDBOOL_H])
+
+# This macro is only needed in autoconf <= 2.59. Newer versions of autoconf
+# have this macro built-in.
+
+AC_DEFUN([AC_HEADER_STDBOOL],
+ [AC_CACHE_CHECK([for stdbool.h that conforms to C99],
+ [ac_cv_header_stdbool_h],
+ [AC_TRY_COMPILE(
+ [
+ #include <stdbool.h>
+ #ifndef bool
+ "error: bool is not defined"
+ #endif
+ #ifndef false
+ "error: false is not defined"
+ #endif
+ #if false
+ "error: false is not 0"
+ #endif
+ #ifndef true
+ "error: true is not defined"
+ #endif
+ #if true != 1
+ "error: true is not 1"
+ #endif
+ #ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+ #endif
+
+ struct s { _Bool s: 1; _Bool t; } s;
+
+ char a[true == 1 ? 1 : -1];
+ char b[false == 0 ? 1 : -1];
+ char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+ char d[(bool) 0.5 == true ? 1 : -1];
+ bool e = &s;
+ char f[(_Bool) 0.0 == false ? 1 : -1];
+ char g[true];
+ char h[sizeof (_Bool)];
+ char i[sizeof s.t];
+ enum { j = false, k = true, l = false * true, m = true * 256 };
+ _Bool n[m];
+ char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+ char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+ #if defined __xlc__ || defined __GNUC__
+ /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
+ reported by James Lemley on 2005-10-05; see
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+ This test is not quite right, since xlc is allowed to
+ reject this program, as the initializer for xlcbug is
+ not one of the forms that C requires support for.
+ However, doing the test right would require a run-time
+ test, and that would make cross-compilation harder.
+ Let us hope that IBM fixes the xlc bug, and also adds
+ support for this kind of constant expression. In the
+ meantime, this test will reject xlc, which is OK, since
+ our stdbool.h substitute should suffice. We also test
+ this with GCC, where it should work, to detect more
+ quickly whether someone messes up the test in the
+ future. */
+ char digs[] = "0123456789";
+ int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
+ #endif
+ /* Catch a bug in an HP-UX C compiler. See
+ http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ */
+ _Bool q = true;
+ _Bool *pq = &q;
+ ],
+ [
+ *pq |= q;
+ *pq |= ! q;
+ /* Refer to every declared value, to avoid compiler optimizations. */
+ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+ + !m + !n + !o + !p + !q + !pq);
+ ],
+ [ac_cv_header_stdbool_h=yes],
+ [ac_cv_header_stdbool_h=no])])
+ AC_CHECK_TYPES([_Bool])
+ if test $ac_cv_header_stdbool_h = yes; then
+ AC_DEFINE(HAVE_STDBOOL_H, 1, [Define to 1 if stdbool.h conforms to C99.])
+ fi])
diff --git a/m4/stdint.m4 b/m4/stdint.m4
new file mode 100644
index 0000000..1a4b4a6
--- /dev/null
+++ b/m4/stdint.m4
@@ -0,0 +1,369 @@
+# stdint.m4 serial 22
+dnl Copyright (C) 2001-2002, 2004-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert and Bruno Haible.
+dnl Test whether <stdint.h> is supported or must be substituted.
+
+AC_DEFUN([gl_STDINT_H],
+[
+ AC_PREREQ(2.59)dnl
+
+ dnl Check for long long int and unsigned long long int.
+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+ if test $ac_cv_type_long_long_int = yes; then
+ HAVE_LONG_LONG_INT=1
+ else
+ HAVE_LONG_LONG_INT=0
+ fi
+ AC_SUBST([HAVE_LONG_LONG_INT])
+ AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
+ if test $ac_cv_type_unsigned_long_long_int = yes; then
+ HAVE_UNSIGNED_LONG_LONG_INT=1
+ else
+ HAVE_UNSIGNED_LONG_LONG_INT=0
+ fi
+ AC_SUBST([HAVE_UNSIGNED_LONG_LONG_INT])
+
+ dnl Check for <inttypes.h>.
+ dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h.
+ if test $ac_cv_header_inttypes_h = yes; then
+ HAVE_INTTYPES_H=1
+ else
+ HAVE_INTTYPES_H=0
+ fi
+ AC_SUBST([HAVE_INTTYPES_H])
+
+ dnl Check for <sys/types.h>.
+ dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_sys_types_h.
+ if test $ac_cv_header_sys_types_h = yes; then
+ HAVE_SYS_TYPES_H=1
+ else
+ HAVE_SYS_TYPES_H=0
+ fi
+ AC_SUBST([HAVE_SYS_TYPES_H])
+
+ dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_stdint_h.
+ if test $ac_cv_header_stdint_h = yes; then
+ gl_ABSOLUTE_HEADER([stdint.h])
+ ABSOLUTE_STDINT_H=\"$gl_cv_absolute_stdint_h\"
+ HAVE_STDINT_H=1
+ else
+ ABSOLUTE_STDINT_H=\"no/such/file/stdint.h\"
+ HAVE_STDINT_H=0
+ fi
+ AC_SUBST([ABSOLUTE_STDINT_H])
+ AC_SUBST([HAVE_STDINT_H])
+
+ dnl Now see whether we need a substitute <stdint.h>. Use
+ dnl ABSOLUTE_STDINT_H, not <stdint.h>, so that it also works during
+ dnl a "config.status --recheck" if a stdint.h has been
+ dnl created in the build directory.
+ if test $ac_cv_header_stdint_h = yes; then
+ AC_CACHE_CHECK([whether stdint.h conforms to C99],
+ [gl_cv_header_working_stdint_h],
+ [gl_cv_header_working_stdint_h=no
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#include <stddef.h>
+#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
+#define __STDC_CONSTANT_MACROS 1 /* to make it work also in C++ mode */
+#include ABSOLUTE_STDINT_H
+#ifdef INT8_MAX
+int8_t a1 = INT8_MAX;
+int8_t a1min = INT8_MIN;
+#endif
+#ifdef INT16_MAX
+int16_t a2 = INT16_MAX;
+int16_t a2min = INT16_MIN;
+#endif
+#ifdef INT32_MAX
+int32_t a3 = INT32_MAX;
+int32_t a3min = INT32_MIN;
+#endif
+#ifdef INT64_MAX
+int64_t a4 = INT64_MAX;
+int64_t a4min = INT64_MIN;
+#endif
+#ifdef UINT8_MAX
+uint8_t b1 = UINT8_MAX;
+#else
+typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
+#endif
+#ifdef UINT16_MAX
+uint16_t b2 = UINT16_MAX;
+#endif
+#ifdef UINT32_MAX
+uint32_t b3 = UINT32_MAX;
+#endif
+#ifdef UINT64_MAX
+uint64_t b4 = UINT64_MAX;
+#endif
+int_least8_t c1 = INT8_C (0x7f);
+int_least8_t c1max = INT_LEAST8_MAX;
+int_least8_t c1min = INT_LEAST8_MIN;
+int_least16_t c2 = INT16_C (0x7fff);
+int_least16_t c2max = INT_LEAST16_MAX;
+int_least16_t c2min = INT_LEAST16_MIN;
+int_least32_t c3 = INT32_C (0x7fffffff);
+int_least32_t c3max = INT_LEAST32_MAX;
+int_least32_t c3min = INT_LEAST32_MIN;
+int_least64_t c4 = INT64_C (0x7fffffffffffffff);
+int_least64_t c4max = INT_LEAST64_MAX;
+int_least64_t c4min = INT_LEAST64_MIN;
+uint_least8_t d1 = UINT8_C (0xff);
+uint_least8_t d1max = UINT_LEAST8_MAX;
+uint_least16_t d2 = UINT16_C (0xffff);
+uint_least16_t d2max = UINT_LEAST16_MAX;
+uint_least32_t d3 = UINT32_C (0xffffffff);
+uint_least32_t d3max = UINT_LEAST32_MAX;
+uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
+uint_least64_t d4max = UINT_LEAST64_MAX;
+int_fast8_t e1 = INT_FAST8_MAX;
+int_fast8_t e1min = INT_FAST8_MIN;
+int_fast16_t e2 = INT_FAST16_MAX;
+int_fast16_t e2min = INT_FAST16_MIN;
+int_fast32_t e3 = INT_FAST32_MAX;
+int_fast32_t e3min = INT_FAST32_MIN;
+int_fast64_t e4 = INT_FAST64_MAX;
+int_fast64_t e4min = INT_FAST64_MIN;
+uint_fast8_t f1 = UINT_FAST8_MAX;
+uint_fast16_t f2 = UINT_FAST16_MAX;
+uint_fast32_t f3 = UINT_FAST32_MAX;
+uint_fast64_t f4 = UINT_FAST64_MAX;
+#ifdef INTPTR_MAX
+intptr_t g = INTPTR_MAX;
+intptr_t gmin = INTPTR_MIN;
+#endif
+#ifdef UINTPTR_MAX
+uintptr_t h = UINTPTR_MAX;
+#endif
+intmax_t i = INTMAX_MAX;
+uintmax_t j = UINTMAX_MAX;
+struct s {
+ int check_PTRDIFF: PTRDIFF_MIN < 0 && 0 < PTRDIFF_MAX ? 1 : -1;
+ int check_SIG_ATOMIC: SIG_ATOMIC_MIN <= 0 && 0 < SIG_ATOMIC_MAX ? 1 : -1;
+ int check_SIZE: 0 < SIZE_MAX ? 1 : -1;
+ int check_WCHAR: WCHAR_MIN <= 0 && 0 < WCHAR_MAX ? 1 : -1;
+ int check_WINT: WINT_MIN <= 0 && 0 < WINT_MAX ? 1 : -1;
+
+ /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */
+ int check_UINT8_C:
+ (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
+ int check_UINT16_C:
+ (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
+
+ /* Detect bugs in OpenBSD 3.9 stdint.h. */
+#ifdef UINT8_MAX
+ int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
+#endif
+#ifdef UINT16_MAX
+ int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
+#endif
+#ifdef UINT32_MAX
+ int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
+#endif
+#ifdef UINT64_MAX
+ int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
+#endif
+ int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
+ int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
+ int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
+ int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
+ int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
+ int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
+ int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
+ int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
+ int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
+ int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
+ int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
+};
+ ]])],
+ [gl_cv_header_working_stdint_h=yes])])
+ fi
+ if test "$gl_cv_header_working_stdint_h" = yes; then
+ STDINT_H=
+ else
+ dnl Check for <sys/inttypes.h>, and for
+ dnl <sys/bitypes.h> (used in Linux libc4 >= 4.6.7 and libc5).
+ AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h])
+ if test $ac_cv_header_sys_inttypes_h = yes; then
+ HAVE_SYS_INTTYPES_H=1
+ else
+ HAVE_SYS_INTTYPES_H=0
+ fi
+ AC_SUBST([HAVE_SYS_INTTYPES_H])
+ if test $ac_cv_header_sys_bitypes_h = yes; then
+ HAVE_SYS_BITYPES_H=1
+ else
+ HAVE_SYS_BITYPES_H=0
+ fi
+ AC_SUBST([HAVE_SYS_BITYPES_H])
+
+ gl_STDINT_TYPE_PROPERTIES
+ STDINT_H=stdint.h
+ fi
+ AC_SUBST(STDINT_H)
+])
+
+dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES)
+dnl Determine the size of each of the given types in bits.
+AC_DEFUN([gl_STDINT_BITSIZEOF],
+[
+ dnl Use a shell loop, to avoid bloating configure, and
+ dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
+ dnl config.h.in,
+ dnl - extra AC_SUBST calls, so that the right substitutions are made.
+ AC_FOREACH([gltype], [$1],
+ [AH_TEMPLATE([BITSIZEOF_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
+ [Define to the number of bits in type ']gltype['.])])
+ for gltype in $1 ; do
+ AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}],
+ [AC_COMPUTE_INT([result], [sizeof ($gltype) * CHAR_BIT],
+ [$2
+#include <limits.h>], [result=unknown])
+ eval gl_cv_bitsizeof_${gltype}=\$result
+ ])
+ eval result=\$gl_cv_bitsizeof_${gltype}
+ if test $result = unknown; then
+ dnl Use a nonempty default, because some compilers, such as IRIX 5 cc,
+ dnl do a syntax check even on unused #if conditions and give an error
+ dnl on valid C code like this:
+ dnl #if 0
+ dnl # if > 32
+ dnl # endif
+ dnl #endif
+ result=0
+ fi
+ GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ AC_DEFINE_UNQUOTED([BITSIZEOF_${GLTYPE}], [$result])
+ eval BITSIZEOF_${GLTYPE}=\$result
+ done
+ AC_FOREACH([gltype], [$1],
+ [AC_SUBST([BITSIZEOF_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
+])
+
+dnl gl_CHECK_TYPES_SIGNED(TYPES, INCLUDES)
+dnl Determine the signedness of each of the given types.
+dnl Define HAVE_SIGNED_TYPE if type is signed.
+AC_DEFUN([gl_CHECK_TYPES_SIGNED],
+[
+ dnl Use a shell loop, to avoid bloating configure, and
+ dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
+ dnl config.h.in,
+ dnl - extra AC_SUBST calls, so that the right substitutions are made.
+ AC_FOREACH([gltype], [$1],
+ [AH_TEMPLATE([HAVE_SIGNED_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
+ [Define to 1 if ']gltype[' is a signed integer type.])])
+ for gltype in $1 ; do
+ AC_CACHE_CHECK([whether $gltype is signed], [gl_cv_type_${gltype}_signed],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([$2[
+ int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];]])],
+ result=yes, result=no)
+ eval gl_cv_type_${gltype}_signed=\$result
+ ])
+ eval result=\$gl_cv_type_${gltype}_signed
+ GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ if test "$result" = yes; then
+ AC_DEFINE_UNQUOTED([HAVE_SIGNED_${GLTYPE}], 1)
+ eval HAVE_SIGNED_${GLTYPE}=1
+ else
+ eval HAVE_SIGNED_${GLTYPE}=0
+ fi
+ done
+ AC_FOREACH([gltype], [$1],
+ [AC_SUBST([HAVE_SIGNED_]translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
+])
+
+dnl gl_INTEGER_TYPE_SUFFIX(TYPES, INCLUDES)
+dnl Determine the suffix to use for integer constants of the given types.
+dnl Define t_SUFFIX for each such type.
+AC_DEFUN([gl_INTEGER_TYPE_SUFFIX],
+[
+ dnl Use a shell loop, to avoid bloating configure, and
+ dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
+ dnl config.h.in,
+ dnl - extra AC_SUBST calls, so that the right substitutions are made.
+ AC_FOREACH([gltype], [$1],
+ [AH_TEMPLATE(translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX],
+ [Define to l, ll, u, ul, ull, etc., as suitable for
+ constants of type ']gltype['.])])
+ for gltype in $1 ; do
+ AC_CACHE_CHECK([for $gltype integer literal suffix],
+ [gl_cv_type_${gltype}_suffix],
+ [eval gl_cv_type_${gltype}_suffix=no
+ eval result=\$gl_cv_type_${gltype}_signed
+ if test "$result" = yes; then
+ glsufu=
+ else
+ glsufu=u
+ fi
+ for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+ case $glsuf in
+ '') gltype1='int';;
+ l) gltype1='long int';;
+ ll) gltype1='long long int';;
+ i64) gltype1='__int64';;
+ u) gltype1='unsigned int';;
+ ul) gltype1='unsigned long int';;
+ ull) gltype1='unsigned long long int';;
+ ui64)gltype1='unsigned __int64';;
+ esac
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([$2
+ extern $gltype foo;
+ extern $gltype1 foo;])],
+ [eval gl_cv_type_${gltype}_suffix=\$glsuf])
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" != no && break
+ done])
+ GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" = no && result=
+ eval ${GLTYPE}_SUFFIX=\$result
+ AC_DEFINE_UNQUOTED([${GLTYPE}_SUFFIX], $result)
+ done
+ AC_FOREACH([gltype], [$1],
+ [AC_SUBST(translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])])
+])
+
+dnl gl_STDINT_INCLUDES
+AC_DEFUN([gl_STDINT_INCLUDES],
+[[
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+]])
+
+dnl gl_STDINT_TYPE_PROPERTIES
+dnl Compute HAVE_SIGNED_t, BITSIZEOF_t and t_SUFFIX, for all the types t
+dnl of interest to stdint_.h.
+AC_DEFUN([gl_STDINT_TYPE_PROPERTIES],
+[
+ gl_STDINT_BITSIZEOF([ptrdiff_t sig_atomic_t size_t wchar_t wint_t],
+ [gl_STDINT_INCLUDES])
+ gl_CHECK_TYPES_SIGNED([sig_atomic_t wchar_t wint_t],
+ [gl_STDINT_INCLUDES])
+ gl_cv_type_ptrdiff_t_signed=yes
+ gl_cv_type_size_t_signed=no
+ gl_INTEGER_TYPE_SUFFIX([ptrdiff_t sig_atomic_t size_t wchar_t wint_t],
+ [gl_STDINT_INCLUDES])
+])
+
+dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
+dnl Remove this when we can assume autoconf >= 2.61.
+m4_ifdef([AC_COMPUTE_INT], [], [
+ AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
+])
+
+# Hey Emacs!
+# Local Variables:
+# indent-tabs-mode: nil
+# End:
diff --git a/m4/stdint_h.m4 b/m4/stdint_h.m4
new file mode 100644
index 0000000..db9a8ac
--- /dev/null
+++ b/m4/stdint_h.m4
@@ -0,0 +1,26 @@
+# stdint_h.m4 serial 6
+dnl Copyright (C) 1997-2004, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+
+# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
+# doesn't clash with <sys/types.h>, and declares uintmax_t.
+
+AC_DEFUN([gl_AC_HEADER_STDINT_H],
+[
+ AC_CACHE_CHECK([for stdint.h], gl_cv_header_stdint_h,
+ [AC_TRY_COMPILE(
+ [#include <sys/types.h>
+#include <stdint.h>],
+ [uintmax_t i = (uintmax_t) -1; return !i;],
+ gl_cv_header_stdint_h=yes,
+ gl_cv_header_stdint_h=no)])
+ if test $gl_cv_header_stdint_h = yes; then
+ AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1,
+ [Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
+ and declares uintmax_t. ])
+ fi
+])
diff --git a/m4/stdio-safer.m4 b/m4/stdio-safer.m4
new file mode 100644
index 0000000..3d71452
--- /dev/null
+++ b/m4/stdio-safer.m4
@@ -0,0 +1,15 @@
+#serial 10
+dnl Copyright (C) 2002, 2005-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FOPEN_SAFER],
+[
+ AC_LIBOBJ([fopen-safer])
+])
+
+AC_DEFUN([gl_TMPFILE_SAFER],
+[
+ AC_LIBOBJ([tmpfile-safer])
+])
diff --git a/m4/stdio_h.m4 b/m4/stdio_h.m4
new file mode 100644
index 0000000..6b4170b
--- /dev/null
+++ b/m4/stdio_h.m4
@@ -0,0 +1,43 @@
+# stdio_h.m4 serial 2
+dnl Copyright (C) 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_STDIO_H],
+[
+ AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+ gl_ABSOLUTE_HEADER([stdio.h])
+ ABSOLUTE_STDIO_H=\"$gl_cv_absolute_stdio_h\"
+ AC_SUBST([ABSOLUTE_STDIO_H])
+])
+
+AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+ GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_STDIO_H_DEFAULTS],
+[
+ GNULIB_FPRINTF_POSIX=0; AC_SUBST([GNULIB_FPRINTF_POSIX])
+ GNULIB_PRINTF_POSIX=0; AC_SUBST([GNULIB_PRINTF_POSIX])
+ GNULIB_SNPRINTF=0; AC_SUBST([GNULIB_SNPRINTF])
+ GNULIB_SPRINTF_POSIX=0; AC_SUBST([GNULIB_SPRINTF_POSIX])
+ GNULIB_VFPRINTF_POSIX=0; AC_SUBST([GNULIB_VFPRINTF_POSIX])
+ GNULIB_VPRINTF_POSIX=0; AC_SUBST([GNULIB_VPRINTF_POSIX])
+ GNULIB_VSNPRINTF=0; AC_SUBST([GNULIB_VSNPRINTF])
+ GNULIB_VSPRINTF_POSIX=0; AC_SUBST([GNULIB_VSPRINTF_POSIX])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ REPLACE_FPRINTF=0; AC_SUBST([REPLACE_FPRINTF])
+ REPLACE_VFPRINTF=0; AC_SUBST([REPLACE_VFPRINTF])
+ REPLACE_PRINTF=0; AC_SUBST([REPLACE_PRINTF])
+ REPLACE_VPRINTF=0; AC_SUBST([REPLACE_VPRINTF])
+ REPLACE_SNPRINTF=0; AC_SUBST([REPLACE_SNPRINTF])
+ HAVE_DECL_SNPRINTF=1; AC_SUBST([HAVE_DECL_SNPRINTF])
+ REPLACE_VSNPRINTF=0; AC_SUBST([REPLACE_VSNPRINTF])
+ HAVE_DECL_VSNPRINTF=1; AC_SUBST([HAVE_DECL_VSNPRINTF])
+ REPLACE_SPRINTF=0; AC_SUBST([REPLACE_SPRINTF])
+ REPLACE_VSPRINTF=0; AC_SUBST([REPLACE_VSPRINTF])
+])
diff --git a/m4/stdlib-safer.m4 b/m4/stdlib-safer.m4
new file mode 100644
index 0000000..36fd17c
--- /dev/null
+++ b/m4/stdlib-safer.m4
@@ -0,0 +1,10 @@
+# stdlib-safer.m4 serial 2
+dnl Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_STDLIB_SAFER],
+[
+ AC_LIBOBJ([mkstemp-safer])
+])
diff --git a/m4/stdlib_h.m4 b/m4/stdlib_h.m4
new file mode 100644
index 0000000..d46a5f0
--- /dev/null
+++ b/m4/stdlib_h.m4
@@ -0,0 +1,31 @@
+# stdlib_h.m4 serial 1
+dnl Copyright (C) 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_STDLIB_H],
+[
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+ gl_ABSOLUTE_HEADER([stdlib.h])
+ ABSOLUTE_STDLIB_H=\"$gl_cv_absolute_stdlib_h\"
+ AC_SUBST([ABSOLUTE_STDLIB_H])
+])
+
+AC_DEFUN([gl_STDLIB_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+ GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_STDLIB_H_DEFAULTS],
+[
+ GNULIB_GETSUBOPT=0; AC_SUBST([GNULIB_GETSUBOPT])
+ GNULIB_MKDTEMP=0; AC_SUBST([GNULIB_MKDTEMP])
+ GNULIB_MKSTEMP=0; AC_SUBST([GNULIB_MKSTEMP])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_GETSUBOPT=1; AC_SUBST([HAVE_GETSUBOPT])
+ HAVE_MKDTEMP=1; AC_SUBST([HAVE_MKDTEMP])
+ REPLACE_MKSTEMP=0; AC_SUBST([REPLACE_MKSTEMP])
+])
diff --git a/m4/stpcpy.m4 b/m4/stpcpy.m4
new file mode 100644
index 0000000..d42196e
--- /dev/null
+++ b/m4/stpcpy.m4
@@ -0,0 +1,23 @@
+# stpcpy.m4 serial 3
+dnl Copyright (C) 2002, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STPCPY],
+[
+ dnl Persuade glibc <string.h> to declare stpcpy().
+ AC_REQUIRE([AC_GNU_SOURCE])
+
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ AC_REPLACE_FUNCS(stpcpy)
+ if test $ac_cv_func_stpcpy = no; then
+ HAVE_STPCPY=0
+ gl_PREREQ_STPCPY
+ fi
+])
+
+# Prerequisites of lib/stpcpy.c.
+AC_DEFUN([gl_PREREQ_STPCPY], [
+ :
+])
diff --git a/m4/strcspn.m4 b/m4/strcspn.m4
new file mode 100644
index 0000000..9565004
--- /dev/null
+++ b/m4/strcspn.m4
@@ -0,0 +1,16 @@
+# strcspn.m4 serial 2
+dnl Copyright (C) 2002-2003 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STRCSPN],
+[
+ AC_REPLACE_FUNCS(strcspn)
+ if test $ac_cv_func_strcspn = no; then
+ gl_PREREQ_STRCSPN
+ fi
+])
+
+# Prerequisites of lib/strcspn.c.
+AC_DEFUN([gl_PREREQ_STRCSPN], [:])
diff --git a/m4/strdup.m4 b/m4/strdup.m4
new file mode 100644
index 0000000..8796e9e
--- /dev/null
+++ b/m4/strdup.m4
@@ -0,0 +1,22 @@
+# strdup.m4 serial 9
+
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software
+dnl Foundation, Inc.
+
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STRDUP],
+[
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ AC_REPLACE_FUNCS(strdup)
+ AC_CHECK_DECLS_ONCE(strdup)
+ if test $ac_cv_have_decl_strdup = no; then
+ HAVE_DECL_STRDUP=0
+ fi
+ gl_PREREQ_STRDUP
+])
+
+# Prerequisites of lib/strdup.c.
+AC_DEFUN([gl_PREREQ_STRDUP], [:])
diff --git a/m4/strftime.m4 b/m4/strftime.m4
new file mode 100644
index 0000000..70b5378
--- /dev/null
+++ b/m4/strftime.m4
@@ -0,0 +1,33 @@
+#serial 29
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+# 2006, 2007 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Written by Jim Meyering and Paul Eggert.
+
+AC_DEFUN([gl_FUNC_GNU_STRFTIME],
+[
+ gl_FUNC_STRFTIME
+])
+
+# These are the prerequisite macros for GNU's strftime.c replacement.
+AC_DEFUN([gl_FUNC_STRFTIME],
+[
+ AC_LIBOBJ([strftime])
+
+ # This defines (or not) HAVE_TZNAME and HAVE_TM_ZONE.
+ AC_REQUIRE([AC_STRUCT_TIMEZONE])
+
+ AC_REQUIRE([AC_TYPE_MBSTATE_T])
+ AC_REQUIRE([gl_TM_GMTOFF])
+
+ AC_CHECK_FUNCS_ONCE(mblen mbrlen mempcpy tzset)
+ AC_CHECK_HEADERS_ONCE(wchar.h)
+
+ AC_DEFINE([my_strftime], [nstrftime],
+ [Define to the name of the strftime replacement function.])
+])
diff --git a/m4/string_h.m4 b/m4/string_h.m4
new file mode 100644
index 0000000..f706d49
--- /dev/null
+++ b/m4/string_h.m4
@@ -0,0 +1,78 @@
+# Configure a GNU-like replacement for <string.h>.
+
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Written by Paul Eggert.
+
+AC_DEFUN([gl_HEADER_STRING_H],
+[
+ dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+ dnl once only, before all statements that occur in other macros.
+ AC_REQUIRE([gl_HEADER_STRING_H_BODY])
+])
+
+AC_DEFUN([gl_HEADER_STRING_H_BODY],
+[
+ AC_REQUIRE([AC_C_RESTRICT])
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ gl_ABSOLUTE_HEADER([string.h])
+ ABSOLUTE_STRING_H=\"$gl_cv_absolute_string_h\"
+ AC_SUBST([ABSOLUTE_STRING_H])
+])
+
+AC_DEFUN([gl_STRING_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
+[
+ GNULIB_MEMMEM=0; AC_SUBST([GNULIB_MEMMEM])
+ GNULIB_MEMPCPY=0; AC_SUBST([GNULIB_MEMPCPY])
+ GNULIB_MEMRCHR=0; AC_SUBST([GNULIB_MEMRCHR])
+ GNULIB_STPCPY=0; AC_SUBST([GNULIB_STPCPY])
+ GNULIB_STPNCPY=0; AC_SUBST([GNULIB_STPNCPY])
+ GNULIB_STRCHRNUL=0; AC_SUBST([GNULIB_STRCHRNUL])
+ GNULIB_STRDUP=0; AC_SUBST([GNULIB_STRDUP])
+ GNULIB_STRNDUP=0; AC_SUBST([GNULIB_STRNDUP])
+ GNULIB_STRNLEN=0; AC_SUBST([GNULIB_STRNLEN])
+ GNULIB_STRPBRK=0; AC_SUBST([GNULIB_STRPBRK])
+ GNULIB_STRSEP=0; AC_SUBST([GNULIB_STRSEP])
+ GNULIB_STRCASESTR=0; AC_SUBST([GNULIB_STRCASESTR])
+ GNULIB_STRTOK_R=0; AC_SUBST([GNULIB_STRTOK_R])
+ GNULIB_MBSLEN=0; AC_SUBST([GNULIB_MBSLEN])
+ GNULIB_MBSCHR=0; AC_SUBST([GNULIB_MBSCHR])
+ GNULIB_MBSRCHR=0; AC_SUBST([GNULIB_MBSRCHR])
+ GNULIB_MBSSTR=0; AC_SUBST([GNULIB_MBSSTR])
+ GNULIB_MBSCASECMP=0; AC_SUBST([GNULIB_MBSCASECMP])
+ GNULIB_MBSNCASECMP=0; AC_SUBST([GNULIB_MBSNCASECMP])
+ GNULIB_MBSPCASECMP=0; AC_SUBST([GNULIB_MBSPCASECMP])
+ GNULIB_MBSCASESTR=0; AC_SUBST([GNULIB_MBSCASESTR])
+ GNULIB_MBSCSPN=0; AC_SUBST([GNULIB_MBSCSPN])
+ GNULIB_MBSPBRK=0; AC_SUBST([GNULIB_MBSPBRK])
+ GNULIB_MBSSPN=0; AC_SUBST([GNULIB_MBSSPN])
+ GNULIB_MBSSEP=0; AC_SUBST([GNULIB_MBSSEP])
+ GNULIB_MBSTOK_R=0; AC_SUBST([GNULIB_MBSTOK_R])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_DECL_MEMMEM=1; AC_SUBST([HAVE_DECL_MEMMEM])
+ HAVE_MEMPCPY=1; AC_SUBST([HAVE_MEMPCPY])
+ HAVE_DECL_MEMRCHR=1; AC_SUBST([HAVE_DECL_MEMRCHR])
+ HAVE_STPCPY=1; AC_SUBST([HAVE_STPCPY])
+ HAVE_STPNCPY=1; AC_SUBST([HAVE_STPNCPY])
+ HAVE_STRCASECMP=1; AC_SUBST([HAVE_STRCASECMP])
+ HAVE_DECL_STRNCASECMP=1; AC_SUBST([HAVE_DECL_STRNCASECMP])
+ HAVE_STRCHRNUL=1; AC_SUBST([HAVE_STRCHRNUL])
+ HAVE_DECL_STRDUP=1; AC_SUBST([HAVE_DECL_STRDUP])
+ HAVE_STRNDUP=1; AC_SUBST([HAVE_STRNDUP])
+ HAVE_DECL_STRNDUP=1; AC_SUBST([HAVE_DECL_STRNDUP])
+ HAVE_DECL_STRNLEN=1; AC_SUBST([HAVE_DECL_STRNLEN])
+ HAVE_STRPBRK=1; AC_SUBST([HAVE_STRPBRK])
+ HAVE_STRSEP=1; AC_SUBST([HAVE_STRSEP])
+ HAVE_STRCASESTR=1; AC_SUBST([HAVE_STRCASESTR])
+ HAVE_DECL_STRTOK_R=1; AC_SUBST([HAVE_DECL_STRTOK_R])
+])
diff --git a/m4/strndup.m4 b/m4/strndup.m4
new file mode 100644
index 0000000..baa6c03
--- /dev/null
+++ b/m4/strndup.m4
@@ -0,0 +1,53 @@
+# strndup.m4 serial 13
+dnl Copyright (C) 2002-2003, 2005-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STRNDUP],
+[
+ dnl Persuade glibc <string.h> to declare strndup().
+ AC_REQUIRE([AC_GNU_SOURCE])
+
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ AC_CHECK_DECLS_ONCE([strndup])
+ if test $ac_cv_have_decl_strndup = no; then
+ HAVE_DECL_STRNDUP=0
+ fi
+
+ # AIX 4.3.3, AIX 5.1 have a function that fails to add the terminating '\0'.
+ AC_CACHE_CHECK([for working strndup], gl_cv_func_strndup,
+ [AC_RUN_IFELSE([
+ AC_LANG_PROGRAM([#include <string.h>
+ #include <stdlib.h>], [[
+#ifndef HAVE_DECL_STRNDUP
+ extern char *strndup (const char *, size_t);
+#endif
+ char *s;
+ s = strndup ("some longer string", 15);
+ free (s);
+ s = strndup ("shorter string", 13);
+ return s[13] != '\0';]])],
+ [gl_cv_func_strndup=yes],
+ [gl_cv_func_strndup=no],
+ [AC_CHECK_FUNC([strndup],
+ [AC_EGREP_CPP([too risky], [
+#ifdef _AIX
+ too risky
+#endif
+ ],
+ [gl_cv_func_strndup=no],
+ [gl_cv_func_strndup=yes])],
+ [gl_cv_func_strndup=no])])])
+ if test $gl_cv_func_strndup = yes; then
+ AC_DEFINE([HAVE_STRNDUP], 1,
+ [Define if you have the strndup() function and it works.])
+ else
+ HAVE_STRNDUP=0
+ AC_LIBOBJ([strndup])
+ gl_PREREQ_STRNDUP
+ fi
+])
+
+# Prerequisites of lib/strndup.c.
+AC_DEFUN([gl_PREREQ_STRNDUP], [:])
diff --git a/m4/strnlen.m4 b/m4/strnlen.m4
new file mode 100644
index 0000000..0e2815b
--- /dev/null
+++ b/m4/strnlen.m4
@@ -0,0 +1,31 @@
+# strnlen.m4 serial 8
+dnl Copyright (C) 2002-2003, 2005-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STRNLEN],
+[
+ dnl Persuade glibc <string.h> to declare strnlen().
+ AC_REQUIRE([AC_GNU_SOURCE])
+
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ AC_CHECK_DECLS_ONCE([strnlen])
+ if test $ac_cv_have_decl_strnlen = no; then
+ HAVE_DECL_STRNLEN=0
+ fi
+
+ AC_FUNC_STRNLEN
+ if test $ac_cv_func_strnlen_working = no; then
+ # This is necessary because automake-1.6.1 doens't understand
+ # that the above use of AC_FUNC_STRNLEN means we may have to use
+ # lib/strnlen.c.
+ #AC_LIBOBJ(strnlen)
+ AC_DEFINE(strnlen, rpl_strnlen,
+ [Define to rpl_strnlen if the replacement function should be used.])
+ gl_PREREQ_STRNLEN
+ fi
+])
+
+# Prerequisites of lib/strnlen.c.
+AC_DEFUN([gl_PREREQ_STRNLEN], [:])
diff --git a/m4/strnumcmp.m4 b/m4/strnumcmp.m4
new file mode 100644
index 0000000..a7418c1
--- /dev/null
+++ b/m4/strnumcmp.m4
@@ -0,0 +1,27 @@
+# Compare numeric strings.
+
+dnl Copyright (C) 2005 Free Software Foundation, Inc.
+
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Paul Eggert.
+
+AC_DEFUN([gl_STRINTCMP],
+[
+ AC_LIBSOURCES([strintcmp.c, strnumcmp.h, strnumcmp-in.h])
+ AC_LIBOBJ([strintcmp])
+
+ dnl Prerequisites of lib/strintcmp.c.
+ AC_REQUIRE([AC_INLINE])
+])
+
+AC_DEFUN([gl_STRNUMCMP],
+[
+ AC_LIBSOURCES([strnumcmp.c, strnumcmp.h, strnumcmp-in.h])
+ AC_LIBOBJ([strnumcmp])
+
+ dnl Prerequisites of lib/strnumcmp.c.
+ AC_REQUIRE([AC_INLINE])
+])
diff --git a/m4/strpbrk.m4 b/m4/strpbrk.m4
new file mode 100644
index 0000000..0398d45
--- /dev/null
+++ b/m4/strpbrk.m4
@@ -0,0 +1,18 @@
+# strpbrk.m4 serial 4
+dnl Copyright (C) 2002-2003, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STRPBRK],
+[
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ AC_REPLACE_FUNCS(strpbrk)
+ if test $ac_cv_func_strpbrk = no; then
+ HAVE_STRPBRK=0
+ gl_PREREQ_STRPBRK
+ fi
+])
+
+# Prerequisites of lib/strpbrk.c.
+AC_DEFUN([gl_PREREQ_STRPBRK], [:])
diff --git a/m4/strtod.m4 b/m4/strtod.m4
new file mode 100644
index 0000000..1de2f2f
--- /dev/null
+++ b/m4/strtod.m4
@@ -0,0 +1,20 @@
+# strtod.m4 serial 6
+dnl Copyright (C) 2002, 2003, 2006, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STRTOD],
+[
+ AC_FUNC_STRTOD
+ dnl Note: AC_FUNC_STRTOD does AC_LIBOBJ(strtod).
+ if test $ac_cv_func_strtod = no; then
+ AC_DEFINE(strtod, rpl_strtod,
+ [Define to rpl_strtod if the replacement function should be used.])
+ gl_PREREQ_STRTOD
+ fi
+])
+
+# Prerequisites of lib/strtod.c.
+# The need for pow() is already handled by AC_FUNC_STRTOD.
+AC_DEFUN([gl_PREREQ_STRTOD], [:])
diff --git a/m4/strtoimax.m4 b/m4/strtoimax.m4
new file mode 100644
index 0000000..9957637
--- /dev/null
+++ b/m4/strtoimax.m4
@@ -0,0 +1,34 @@
+# strtoimax.m4 serial 6
+dnl Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STRTOIMAX],
+[
+ dnl Work around a bug of AC_EGREP_CPP in autoconf-2.57.
+ AC_REQUIRE([AC_PROG_CPP])
+ AC_REQUIRE([AC_PROG_EGREP])
+
+ AC_CACHE_CHECK([whether <inttypes.h> defines strtoimax as a macro],
+ jm_cv_func_strtoimax_macro,
+ [AC_EGREP_CPP([inttypes_h_defines_strtoimax], [#include <inttypes.h>
+#ifdef strtoimax
+ inttypes_h_defines_strtoimax
+#endif],
+ jm_cv_func_strtoimax_macro=yes,
+ jm_cv_func_strtoimax_macro=no)])
+
+ if test "$jm_cv_func_strtoimax_macro" != yes; then
+ AC_REPLACE_FUNCS(strtoimax)
+ if test $ac_cv_func_strtoimax = no; then
+ gl_PREREQ_STRTOIMAX
+ fi
+ fi
+])
+
+# Prerequisites of lib/strtoimax.c.
+AC_DEFUN([gl_PREREQ_STRTOIMAX], [
+ AC_CHECK_DECLS(strtoll)
+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+])
diff --git a/m4/strtol.m4 b/m4/strtol.m4
new file mode 100644
index 0000000..7fbae60
--- /dev/null
+++ b/m4/strtol.m4
@@ -0,0 +1,10 @@
+# strtol.m4 serial 4
+dnl Copyright (C) 2002, 2003, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STRTOL],
+[
+ AC_REPLACE_FUNCS(strtol)
+])
diff --git a/m4/strtoll.m4 b/m4/strtoll.m4
new file mode 100644
index 0000000..53cbed2
--- /dev/null
+++ b/m4/strtoll.m4
@@ -0,0 +1,23 @@
+# strtoll.m4 serial 4
+dnl Copyright (C) 2002, 2004, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STRTOLL],
+[
+ dnl We don't need (and can't compile) the replacement strtoll
+ dnl unless the type 'long long int' exists.
+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+ if test "$ac_cv_type_long_long_int" = yes; then
+ AC_REPLACE_FUNCS(strtoll)
+ if test $ac_cv_func_strtoll = no; then
+ gl_PREREQ_STRTOLL
+ fi
+ fi
+])
+
+# Prerequisites of lib/strtoll.c.
+AC_DEFUN([gl_PREREQ_STRTOLL], [
+ :
+])
diff --git a/m4/strtoul.m4 b/m4/strtoul.m4
new file mode 100644
index 0000000..5ec54aa
--- /dev/null
+++ b/m4/strtoul.m4
@@ -0,0 +1,10 @@
+# strtoul.m4 serial 3
+dnl Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STRTOUL],
+[
+ AC_REPLACE_FUNCS(strtoul)
+])
diff --git a/m4/strtoull.m4 b/m4/strtoull.m4
new file mode 100644
index 0000000..fcec3de
--- /dev/null
+++ b/m4/strtoull.m4
@@ -0,0 +1,23 @@
+# strtoull.m4 serial 4
+dnl Copyright (C) 2002, 2004, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STRTOULL],
+[
+ dnl We don't need (and can't compile) the replacement strtoull
+ dnl unless the type 'unsigned long long int' exists.
+ AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
+ if test "$ac_cv_type_unsigned_long_long_int" = yes; then
+ AC_REPLACE_FUNCS(strtoull)
+ if test $ac_cv_func_strtoull = no; then
+ gl_PREREQ_STRTOULL
+ fi
+ fi
+])
+
+# Prerequisites of lib/strtoull.c.
+AC_DEFUN([gl_PREREQ_STRTOULL], [
+ :
+])
diff --git a/m4/strtoumax.m4 b/m4/strtoumax.m4
new file mode 100644
index 0000000..1935250
--- /dev/null
+++ b/m4/strtoumax.m4
@@ -0,0 +1,34 @@
+# strtoumax.m4 serial 6
+dnl Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STRTOUMAX],
+[
+ dnl Work around a bug of AC_EGREP_CPP in autoconf-2.57.
+ AC_REQUIRE([AC_PROG_CPP])
+ AC_REQUIRE([AC_PROG_EGREP])
+
+ AC_CACHE_CHECK([whether <inttypes.h> defines strtoumax as a macro],
+ jm_cv_func_strtoumax_macro,
+ [AC_EGREP_CPP([inttypes_h_defines_strtoumax], [#include <inttypes.h>
+#ifdef strtoumax
+ inttypes_h_defines_strtoumax
+#endif],
+ jm_cv_func_strtoumax_macro=yes,
+ jm_cv_func_strtoumax_macro=no)])
+
+ if test "$jm_cv_func_strtoumax_macro" != yes; then
+ AC_REPLACE_FUNCS(strtoumax)
+ if test $ac_cv_func_strtoumax = no; then
+ gl_PREREQ_STRTOUMAX
+ fi
+ fi
+])
+
+# Prerequisites of lib/strtoumax.c.
+AC_DEFUN([gl_PREREQ_STRTOUMAX], [
+ AC_CHECK_DECLS(strtoull)
+ AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
+])
diff --git a/m4/strverscmp.m4 b/m4/strverscmp.m4
new file mode 100644
index 0000000..ab20c18
--- /dev/null
+++ b/m4/strverscmp.m4
@@ -0,0 +1,21 @@
+# strverscmp.m4 serial 4
+dnl Copyright (C) 2002, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STRVERSCMP],
+[
+ dnl Persuade glibc <string.h> to declare strverscmp().
+ AC_REQUIRE([AC_GNU_SOURCE])
+
+ AC_REPLACE_FUNCS(strverscmp)
+ if test $ac_cv_func_strverscmp = no; then
+ gl_PREREQ_STRVERSCMP
+ fi
+])
+
+# Prerequisites of lib/strverscmp.c.
+AC_DEFUN([gl_PREREQ_STRVERSCMP], [
+ :
+])
diff --git a/m4/sys_socket_h.m4 b/m4/sys_socket_h.m4
new file mode 100644
index 0000000..ce5acf6
--- /dev/null
+++ b/m4/sys_socket_h.m4
@@ -0,0 +1,54 @@
+# sys_socket_h.m4 serial 3
+dnl Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Simon Josefsson.
+
+AC_DEFUN([gl_HEADER_SYS_SOCKET],
+[
+ AC_CACHE_CHECK([whether <sys/socket.h> is self-contained],
+ [gl_cv_header_sys_socket_h_selfcontained],
+ [
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/socket.h>], [])],
+ [gl_cv_header_sys_socket_h_selfcontained=yes],
+ [gl_cv_header_sys_socket_h_selfcontained=no])
+ ])
+ if test $gl_cv_header_sys_socket_h_selfcontained = yes; then
+ SYS_SOCKET_H=''
+ else
+ SYS_SOCKET_H='sys/socket.h'
+
+ AC_CHECK_HEADERS([sys/socket.h])
+ gl_ABSOLUTE_HEADER([sys/socket.h])
+ ABSOLUTE_SYS_SOCKET_H=\"$gl_cv_absolute_sys_socket_h\"
+ AC_SUBST([ABSOLUTE_SYS_SOCKET_H])
+ if test $ac_cv_header_sys_socket_h = yes; then
+ HAVE_SYS_SOCKET_H=1
+ HAVE_WINSOCK2_H=0
+ HAVE_WS2TCPIP_H=0
+ else
+ HAVE_SYS_SOCKET_H=0
+ dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make
+ dnl the check for those headers unconditional; yet cygwin reports
+ dnl that the headers are present but cannot be compiled (since on
+ dnl cygwin, all socket information should come from sys/socket.h).
+ AC_CHECK_HEADERS([winsock2.h ws2tcpip.h])
+ if test $ac_cv_header_winsock2_h = yes; then
+ HAVE_WINSOCK2_H=1
+ else
+ HAVE_WINSOCK2_H=0
+ fi
+ if test $ac_cv_header_ws2tcpip_h = yes; then
+ HAVE_WS2TCPIP_H=1
+ else
+ HAVE_WS2TCPIP_H=0
+ fi
+ fi
+ AC_SUBST([HAVE_SYS_SOCKET_H])
+ AC_SUBST([HAVE_WINSOCK2_H])
+ AC_SUBST([HAVE_WS2TCPIP_H])
+ fi
+ AC_SUBST([SYS_SOCKET_H])
+])
diff --git a/m4/sys_stat_h.m4 b/m4/sys_stat_h.m4
new file mode 100644
index 0000000..9ca1311
--- /dev/null
+++ b/m4/sys_stat_h.m4
@@ -0,0 +1,32 @@
+# sys_stat_h.m4 serial 4 -*- Autoconf -*-
+dnl Copyright (C) 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Eric Blake.
+dnl Test whether <sys/stat.h> contains lstat and mkdir or must be substituted.
+
+AC_DEFUN([gl_HEADER_SYS_STAT_H],
+[
+ dnl Check for lstat. Systems that lack it (mingw) also lack symlinks, so
+ dnl stat is a good replacement.
+ AC_CHECK_FUNCS_ONCE([lstat])
+
+ dnl Check for mkdir. Mingw has _mkdir(name) in the nonstandard <io.h>
+ dnl instead.
+ AC_CHECK_DECLS([mkdir],
+ [],
+ [AC_CHECK_HEADERS([io.h])],
+ [#include <sys/stat.h>])
+ AC_REQUIRE([AC_C_INLINE])
+
+ dnl Check for broken stat macros.
+ AC_REQUIRE([AC_HEADER_STAT])
+
+ gl_ABSOLUTE_HEADER([sys/stat.h])
+ ABSOLUTE_SYS_STAT_H=\"$gl_cv_absolute_sys_stat_h\"
+ AC_SUBST([ABSOLUTE_SYS_STAT_H])
+ SYS_STAT_H='sys/stat.h'
+ AC_SUBST([SYS_STAT_H])
+]) # gl_HEADER_SYS_STAT_H
diff --git a/m4/sys_time_h.m4 b/m4/sys_time_h.m4
new file mode 100644
index 0000000..b38e1bc
--- /dev/null
+++ b/m4/sys_time_h.m4
@@ -0,0 +1,61 @@
+# Configure a replacement for <sys/time.h>.
+
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Written by Paul Eggert and Martin Lambers.
+
+AC_DEFUN([gl_HEADER_SYS_TIME_H],
+[
+ dnl Use AC_REQUIRE here, so that the REPLACE_GETTIMEOFDAY=0 statement
+ dnl below is expanded once only, before all REPLACE_GETTIMEOFDAY=1
+ dnl statements that occur in other macros.
+ AC_REQUIRE([gl_HEADER_SYS_TIME_H_BODY])
+])
+
+AC_DEFUN([gl_HEADER_SYS_TIME_H_BODY],
+[
+ AC_REQUIRE([AC_C_RESTRICT])
+ AC_CHECK_HEADERS_ONCE([sys/time.h])
+
+ if test $ac_cv_header_sys_time_h = yes; then
+ gl_ABSOLUTE_HEADER([sys/time.h])
+ ABSOLUTE_SYS_TIME_H=\"$gl_cv_absolute_sys_time_h\"
+ HAVE_SYS_TIME_H=1
+ else
+ ABSOLUTE_SYS_TIME_H=\"no/such/file/sys/time.h\"
+ HAVE_SYS_TIME_H=0
+ fi
+ AC_SUBST([ABSOLUTE_SYS_TIME_H])
+ AC_SUBST([HAVE_SYS_TIME_H])
+
+ AC_CACHE_CHECK([for struct timeval], [gl_cv_sys_struct_timeval],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#if HAVE_SYS_TIME_H
+ #include <sys/time.h>
+ #endif
+ #include <time.h>
+ ]],
+ [[static struct timeval x; x.tv_sec = x.tv_usec;]])],
+ [gl_cv_sys_struct_timeval=yes],
+ [gl_cv_sys_struct_timeval=no])])
+ if test $gl_cv_sys_struct_timeval = yes; then
+ HAVE_STRUCT_TIMEVAL=1
+ else
+ HAVE_STRUCT_TIMEVAL=0
+ fi
+ AC_SUBST([HAVE_STRUCT_TIMEVAL])
+
+ dnl Assume POSIX behavior unless another module says otherwise.
+ REPLACE_GETTIMEOFDAY=0
+ AC_SUBST([REPLACE_GETTIMEOFDAY])
+ if test $HAVE_SYS_TIME_H = 0 || test $HAVE_STRUCT_TIMEVAL = 0; then
+ SYS_TIME_H=sys/time.h
+ else
+ SYS_TIME_H=
+ fi
+ AC_SUBST([SYS_TIME_H])
+])
diff --git a/m4/tempname.m4 b/m4/tempname.m4
new file mode 100644
index 0000000..4c44d37
--- /dev/null
+++ b/m4/tempname.m4
@@ -0,0 +1,22 @@
+#serial 3
+
+# Copyright (C) 2006-2007 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# glibc provides __gen_tempname as a wrapper for mk[ds]temp. Expose
+# it as a public API, and provide it on systems that are lacking.
+AC_DEFUN([gl_FUNC_GEN_TEMPNAME],
+[
+ AC_REQUIRE([AC_SYS_LARGEFILE])
+
+ AC_LIBOBJ([tempname])
+ gl_PREREQ_TEMPNAME
+])
+
+# Prerequisites of lib/tempname.c.
+AC_DEFUN([gl_PREREQ_TEMPNAME],
+[
+ :
+])
diff --git a/m4/time_h.m4 b/m4/time_h.m4
new file mode 100644
index 0000000..e90ed7a
--- /dev/null
+++ b/m4/time_h.m4
@@ -0,0 +1,76 @@
+# Configure a more-standard replacement for <time.h>.
+
+# Copyright (C) 2000, 2001, 2003, 2004, 2005, 2006, 2007 Free Software
+# Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Written by Paul Eggert and Jim Meyering.
+
+AC_DEFUN([gl_HEADER_TIME_H],
+[
+ dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+ dnl once only, before all statements that occur in other macros.
+ AC_REQUIRE([gl_HEADER_TIME_H_BODY])
+])
+
+AC_DEFUN([gl_HEADER_TIME_H_BODY],
+[
+ AC_REQUIRE([AC_C_RESTRICT])
+ AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
+ gl_ABSOLUTE_HEADER([time.h])
+ ABSOLUTE_TIME_H=\"$gl_cv_absolute_time_h\"
+ AC_SUBST([ABSOLUTE_TIME_H])
+ AC_REQUIRE([gl_CHECK_TYPE_STRUCT_TIMESPEC])
+])
+
+AC_DEFUN([gl_HEADER_TIME_H_DEFAULTS],
+[
+ dnl If another module says to replace or to not replace, do that.
+ dnl Otherwise, replace only if someone compiles with -DGNULIB_PORTCHECK;
+ dnl this lets maintainers check for portability.
+ REPLACE_LOCALTIME_R=GNULIB_PORTCHECK; AC_SUBST([REPLACE_LOCALTIME_R])
+ REPLACE_NANOSLEEP=GNULIB_PORTCHECK; AC_SUBST([REPLACE_NANOSLEEP])
+ REPLACE_STRPTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_STRPTIME])
+ REPLACE_TIMEGM=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TIMEGM])
+])
+
+dnl Define HAVE_STRUCT_TIMESPEC if `struct timespec' is declared
+dnl in time.h or sys/time.h.
+
+AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC],
+[
+ AC_CHECK_HEADERS_ONCE([sys/time.h])
+ AC_CACHE_CHECK([for struct timespec in <time.h>],
+ [gl_cv_sys_struct_timespec_in_time_h],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <time.h>
+ ]],
+ [[static struct timespec x; x.tv_sec = x.tv_nsec;]])],
+ [gl_cv_sys_struct_timespec_in_time_h=yes],
+ [gl_cv_sys_struct_timespec_in_time_h=no])])
+
+ TIME_H_DEFINES_STRUCT_TIMESPEC=0
+ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0
+ if test $gl_cv_sys_struct_timespec_in_time_h = yes; then
+ TIME_H_DEFINES_STRUCT_TIMESPEC=1
+ else
+ AC_CACHE_CHECK([for struct timespec in <sys/time.h>],
+ [gl_cv_sys_struct_timespec_in_sys_time_h],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <sys/time.h>
+ ]],
+ [[static struct timespec x; x.tv_sec = x.tv_nsec;]])],
+ [gl_cv_sys_struct_timespec_in_sys_time_h=yes],
+ [gl_cv_sys_struct_timespec_in_sys_time_h=no])])
+ if test $gl_cv_sys_struct_timespec_in_time_h = yes; then
+ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1
+ fi
+ fi
+ AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC])
+ AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC])
+])
diff --git a/m4/time_r.m4 b/m4/time_r.m4
new file mode 100644
index 0000000..dbb6396
--- /dev/null
+++ b/m4/time_r.m4
@@ -0,0 +1,41 @@
+dnl Reentrant time functions like localtime_r.
+
+dnl Copyright (C) 2003, 2006, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Paul Eggert.
+
+AC_DEFUN([gl_TIME_R],
+[
+ dnl Persuade glibc and Solaris <time.h> to declare localtime_r.
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
+ AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
+ AC_REQUIRE([AC_C_RESTRICT])
+
+ AC_CACHE_CHECK([whether localtime_r is compatible with its POSIX signature],
+ [gl_cv_time_r_posix],
+ [AC_TRY_COMPILE(
+ [#include <time.h>],
+ [/* We don't need to append 'restrict's to the argument types,
+ even though the POSIX signature has the 'restrict's,
+ since C99 says they can't affect type compatibility. */
+ struct tm * (*ptr) (time_t const *, struct tm *) = localtime_r;
+ if (ptr) return 0;],
+ [gl_cv_time_r_posix=yes],
+ [gl_cv_time_r_posix=no])])
+ if test $gl_cv_time_r_posix = yes; then
+ REPLACE_LOCALTIME_R=0
+ else
+ REPLACE_LOCALTIME_R=1
+ AC_LIBOBJ([time_r])
+ gl_PREREQ_TIME_R
+ fi
+])
+
+# Prerequisites of lib/time_r.c.
+AC_DEFUN([gl_PREREQ_TIME_R], [
+ :
+])
diff --git a/m4/timespec.m4 b/m4/timespec.m4
new file mode 100644
index 0000000..36f1238
--- /dev/null
+++ b/m4/timespec.m4
@@ -0,0 +1,16 @@
+#serial 14
+
+# Copyright (C) 2000, 2001, 2003, 2004, 2005, 2006, 2007 Free Software
+# Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl From Jim Meyering
+
+AC_DEFUN([gl_TIMESPEC],
+[
+ dnl Prerequisites of lib/timespec.h.
+ AC_REQUIRE([AC_C_INLINE])
+])
diff --git a/m4/tm_gmtoff.m4 b/m4/tm_gmtoff.m4
new file mode 100644
index 0000000..cb0b3c8
--- /dev/null
+++ b/m4/tm_gmtoff.m4
@@ -0,0 +1,14 @@
+# tm_gmtoff.m4 serial 2
+dnl Copyright (C) 2002 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_TM_GMTOFF],
+[
+ AC_CHECK_MEMBER([struct tm.tm_gmtoff],
+ [AC_DEFINE(HAVE_TM_GMTOFF, 1,
+ [Define if struct tm has the tm_gmtoff member.])],
+ ,
+ [#include <time.h>])
+])
diff --git a/m4/tzset.m4 b/m4/tzset.m4
new file mode 100644
index 0000000..b8c111b
--- /dev/null
+++ b/m4/tzset.m4
@@ -0,0 +1,59 @@
+#serial 3
+
+# Copyright (C) 2003, 2007 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# See if we have a working tzset function.
+# If so, arrange to compile the wrapper function.
+# For at least Solaris 2.5.1 and 2.6, this is necessary
+# because tzset can clobber the contents of the buffer
+# used by localtime.
+
+# Written by Paul Eggert and Jim Meyering.
+
+AC_DEFUN([gl_FUNC_TZSET_CLOBBER],
+[
+ AC_REQUIRE([gl_HEADER_SYS_TIME_H])
+ AC_CACHE_CHECK([whether tzset clobbers localtime buffer],
+ gl_cv_func_tzset_clobber,
+ [
+ AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <time.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+ time_t t1 = 853958121;
+ struct tm *p, s;
+ putenv ("TZ=GMT0");
+ p = localtime (&t1);
+ s = *p;
+ putenv ("TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00");
+ tzset ();
+ return (p->tm_year != s.tm_year
+ || p->tm_mon != s.tm_mon
+ || p->tm_mday != s.tm_mday
+ || p->tm_hour != s.tm_hour
+ || p->tm_min != s.tm_min
+ || p->tm_sec != s.tm_sec);
+}
+ ]])],
+ [gl_cv_func_tzset_clobber=no],
+ [gl_cv_func_tzset_clobber=yes],
+ [gl_cv_func_tzset_clobber=yes])])
+
+ AC_DEFINE(HAVE_RUN_TZSET_TEST, 1,
+ [Define to 1 if you have run the test for working tzset.])
+
+ if test $gl_cv_func_tzset_clobber = yes; then
+ gl_GETTIMEOFDAY_REPLACE_LOCALTIME
+
+ AC_DEFINE(tzset, rpl_tzset,
+ [Define to rpl_tzset if the wrapper function should be used.])
+ AC_DEFINE([TZSET_CLOBBERS_LOCALTIME], 1,
+ [Define if tzset clobbers localtime's static buffer.])
+ fi
+])
diff --git a/m4/unicodeio.m4 b/m4/unicodeio.m4
new file mode 100644
index 0000000..9edd527
--- /dev/null
+++ b/m4/unicodeio.m4
@@ -0,0 +1,11 @@
+# unicodeio.m4 serial 2
+dnl Copyright (C) 2002-2003 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_UNICODEIO],
+[
+ dnl No prerequisites of lib/unicodeio.c.
+ :
+])
diff --git a/m4/unistd-safer.m4 b/m4/unistd-safer.m4
new file mode 100644
index 0000000..09adf93
--- /dev/null
+++ b/m4/unistd-safer.m4
@@ -0,0 +1,13 @@
+#serial 8
+dnl Copyright (C) 2002, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_UNISTD_SAFER],
+[
+ AC_CHECK_FUNCS_ONCE([pipe])
+ AC_LIBOBJ([dup-safer])
+ AC_LIBOBJ([fd-safer])
+ AC_LIBOBJ([pipe-safer])
+])
diff --git a/m4/unistd_h.m4 b/m4/unistd_h.m4
new file mode 100644
index 0000000..628b818
--- /dev/null
+++ b/m4/unistd_h.m4
@@ -0,0 +1,51 @@
+# unistd_h.m4 serial 5
+dnl Copyright (C) 2006-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Simon Josefsson, Bruno Haible.
+
+AC_DEFUN([gl_UNISTD_H],
+[
+ dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+ dnl once only, before all statements that occur in other macros.
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+
+ AC_CHECK_HEADERS_ONCE([unistd.h])
+ if test $ac_cv_header_unistd_h = yes; then
+ HAVE_UNISTD_H=1
+ gl_ABSOLUTE_HEADER([unistd.h])
+ ABSOLUTE_UNISTD_H=\"$gl_cv_absolute_unistd_h\"
+ else
+ HAVE_UNISTD_H=0
+ fi
+ AC_SUBST([HAVE_UNISTD_H])
+ AC_SUBST([ABSOLUTE_UNISTD_H])
+])
+
+AC_DEFUN([gl_UNISTD_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_UNISTD_H_DEFAULTS],
+[
+ GNULIB_CHOWN=0; AC_SUBST([GNULIB_CHOWN])
+ GNULIB_DUP2=0; AC_SUBST([GNULIB_DUP2])
+ GNULIB_FCHDIR=0; AC_SUBST([GNULIB_FCHDIR])
+ GNULIB_FTRUNCATE=0; AC_SUBST([GNULIB_FTRUNCATE])
+ GNULIB_GETCWD=0; AC_SUBST([GNULIB_GETCWD])
+ GNULIB_GETLOGIN_R=0; AC_SUBST([GNULIB_GETLOGIN_R])
+ GNULIB_READLINK=0; AC_SUBST([GNULIB_READLINK])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_DUP2=1; AC_SUBST([HAVE_DUP2])
+ HAVE_FTRUNCATE=1; AC_SUBST([HAVE_FTRUNCATE])
+ HAVE_READLINK=1; AC_SUBST([HAVE_READLINK])
+ HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R])
+ REPLACE_CHOWN=0; AC_SUBST([REPLACE_CHOWN])
+ REPLACE_FCHDIR=0; AC_SUBST([REPLACE_FCHDIR])
+ REPLACE_GETCWD=0; AC_SUBST([REPLACE_GETCWD])
+])
diff --git a/m4/unlink-busy.m4 b/m4/unlink-busy.m4
new file mode 100644
index 0000000..687f900
--- /dev/null
+++ b/m4/unlink-busy.m4
@@ -0,0 +1,35 @@
+#serial 11
+
+dnl From J. David Anglin.
+
+dnl HPUX and other systems can't unlink shared text that is being executed.
+
+# Copyright (C) 2000, 2001, 2004, 2007 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_UNLINK_BUSY_TEXT],
+[dnl
+ AC_CACHE_CHECK([whether a running program can be unlinked],
+ jm_cv_func_unlink_busy_text,
+ [
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE(
+ [AC_INCLUDES_DEFAULT[
+ int
+ main (int argc, char **argv)
+ {
+ return !argc || unlink (argv[0]) != 0;
+ }]])],
+ jm_cv_func_unlink_busy_text=yes,
+ jm_cv_func_unlink_busy_text=no,
+ jm_cv_func_unlink_busy_text=no
+ )
+ ]
+ )
+
+ if test $jm_cv_func_unlink_busy_text = no; then
+ INSTALL=$ac_install_sh
+ fi
+])
diff --git a/m4/unlinkdir.m4 b/m4/unlinkdir.m4
new file mode 100644
index 0000000..6ef7168
--- /dev/null
+++ b/m4/unlinkdir.m4
@@ -0,0 +1,33 @@
+#serial 5
+
+# Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Written by Paul Eggert.
+
+AC_DEFUN([gl_UNLINKDIR],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_CHECK_HEADERS_ONCE(priv.h)
+
+ AC_LIBOBJ([unlinkdir])
+
+ # The Hurd, the Linux kernel, the FreeBSD kernel version 2.2 and later,
+ # and Cygwin never let anyone (even root) unlink directories.
+ # If anyone knows of another system for which unlink can never
+ # remove a directory, please report it to <bug-coreutils@gnu.org>.
+ # Unfortunately this is difficult to test for, since it requires root access
+ # and might create garbage in the file system,
+ # so the code below simply relies on the kernel name and version number.
+ case $host in
+ *-*-gnu[[0-9]]* | \
+ *-*-linux-* | *-*-linux | \
+ *-*-freebsd2.2* | *-*-freebsd[[3-9]]* | *-*-freebsd[[1-9]][[0-9]]* | \
+ *-cygwin)
+ AC_DEFINE([UNLINK_CANNOT_UNLINK_DIR], 1,
+ [Define to 1 if unlink (dir) cannot possibly succeed.]);;
+ esac
+])
diff --git a/m4/unlocked-io.m4 b/m4/unlocked-io.m4
new file mode 100644
index 0000000..20b2da2
--- /dev/null
+++ b/m4/unlocked-io.m4
@@ -0,0 +1,42 @@
+# unlocked-io.m4 serial 14
+
+# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl From Jim Meyering.
+dnl
+dnl See if the glibc *_unlocked I/O macros or functions are available.
+dnl Use only those *_unlocked macros or functions that are declared
+dnl (because some of them were declared in Solaris 2.5.1 but were removed
+dnl in Solaris 2.6, whereas we want binaries built on Solaris 2.5.1 to run
+dnl on Solaris 2.6).
+
+AC_DEFUN([gl_FUNC_GLIBC_UNLOCKED_IO],
+[
+ AC_DEFINE([USE_UNLOCKED_IO], 1,
+ [Define to 1 if you want getc etc. to use unlocked I/O if available.
+ Unlocked I/O can improve performance in unithreaded apps,
+ but it is not safe for multithreaded apps.])
+
+ dnl Persuade glibc and Solaris <stdio.h> to declare
+ dnl fgets_unlocked(), fputs_unlocked() etc.
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
+ AC_CHECK_DECLS_ONCE([clearerr_unlocked])
+ AC_CHECK_DECLS_ONCE([feof_unlocked])
+ AC_CHECK_DECLS_ONCE([ferror_unlocked])
+ AC_CHECK_DECLS_ONCE([fflush_unlocked])
+ AC_CHECK_DECLS_ONCE([fgets_unlocked])
+ AC_CHECK_DECLS_ONCE([fputc_unlocked])
+ AC_CHECK_DECLS_ONCE([fputs_unlocked])
+ AC_CHECK_DECLS_ONCE([fread_unlocked])
+ AC_CHECK_DECLS_ONCE([fwrite_unlocked])
+ AC_CHECK_DECLS_ONCE([getc_unlocked])
+ AC_CHECK_DECLS_ONCE([getchar_unlocked])
+ AC_CHECK_DECLS_ONCE([putc_unlocked])
+ AC_CHECK_DECLS_ONCE([putchar_unlocked])
+])
diff --git a/m4/uptime.m4 b/m4/uptime.m4
new file mode 100644
index 0000000..680e30f
--- /dev/null
+++ b/m4/uptime.m4
@@ -0,0 +1,23 @@
+#serial 7
+
+# Copyright (C) 1996, 1999, 2000, 2001, 2004 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_PREREQ(2.13)
+
+AC_DEFUN([gl_SYS_PROC_UPTIME],
+[ dnl Require AC_PROG_CC to see if we're cross compiling.
+ AC_REQUIRE([AC_PROG_CC])
+ AC_CACHE_CHECK([for /proc/uptime], jm_cv_have_proc_uptime,
+ [jm_cv_have_proc_uptime=no
+ test -f /proc/uptime \
+ && test "$cross_compiling" = no \
+ && cat < /proc/uptime >/dev/null 2>/dev/null \
+ && jm_cv_have_proc_uptime=yes])
+ if test $jm_cv_have_proc_uptime = yes; then
+ AC_DEFINE(HAVE_PROC_UPTIME, 1,
+ [ Define if your system has the /proc/uptime special file.])
+ fi
+])
diff --git a/m4/userspec.m4 b/m4/userspec.m4
new file mode 100644
index 0000000..ce981e9
--- /dev/null
+++ b/m4/userspec.m4
@@ -0,0 +1,13 @@
+#serial 9
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_USERSPEC],
+[
+ AC_LIBOBJ([userspec])
+
+ dnl Prerequisites of lib/userspec.c.
+ AC_CHECK_HEADERS_ONCE(sys/param.h)
+])
diff --git a/m4/utimbuf.m4 b/m4/utimbuf.m4
new file mode 100644
index 0000000..9927908
--- /dev/null
+++ b/m4/utimbuf.m4
@@ -0,0 +1,39 @@
+#serial 8
+
+# Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2007 Free Software
+# Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl From Jim Meyering
+
+dnl Define HAVE_STRUCT_UTIMBUF if `struct utimbuf' is declared --
+dnl usually in <utime.h>.
+dnl Some systems have utime.h but don't declare the struct anywhere.
+
+AC_DEFUN([gl_CHECK_TYPE_STRUCT_UTIMBUF],
+[
+ AC_CHECK_HEADERS_ONCE(sys/time.h utime.h)
+ AC_CACHE_CHECK([for struct utimbuf], [gl_cv_sys_struct_utimbuf],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#if HAVE_SYS_TIME_H
+ #include <sys/time.h>
+ #endif
+ #include <time.h>
+ #ifdef HAVE_UTIME_H
+ #include <utime.h>
+ #endif
+ ]],
+ [[static struct utimbuf x; x.actime = x.modtime;]])],
+ [gl_cv_sys_struct_utimbuf=yes],
+ [gl_cv_sys_struct_utimbuf=no])])
+
+ if test $gl_cv_sys_struct_utimbuf = yes; then
+ AC_DEFINE(HAVE_STRUCT_UTIMBUF, 1,
+ [Define if struct utimbuf is declared -- usually in <utime.h>.
+ Some systems have utime.h but don't declare the struct anywhere. ])
+ fi
+])
diff --git a/m4/utime.m4 b/m4/utime.m4
new file mode 100644
index 0000000..967faa2
--- /dev/null
+++ b/m4/utime.m4
@@ -0,0 +1,30 @@
+#serial 7
+
+dnl From Jim Meyering
+dnl Replace the utime function on systems that need it.
+
+# Copyright (C) 1998, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl FIXME
+
+AC_DEFUN([gl_FUNC_UTIME],
+[
+ AC_REQUIRE([AC_FUNC_UTIME_NULL])
+ if test $ac_cv_func_utime_null = no; then
+ AC_LIBOBJ(utime)
+ AC_DEFINE(utime, rpl_utime,
+ [Define to rpl_utime if the replacement function should be used.])
+ gl_PREREQ_UTIME
+ fi
+])
+
+# Prerequisites of lib/utime.c.
+AC_DEFUN([gl_PREREQ_UTIME],
+[
+ AC_CHECK_HEADERS_ONCE(utime.h)
+ AC_REQUIRE([gl_CHECK_TYPE_STRUCT_UTIMBUF])
+ gl_FUNC_UTIMES_NULL
+])
diff --git a/m4/utimecmp.m4 b/m4/utimecmp.m4
new file mode 100644
index 0000000..29d3419
--- /dev/null
+++ b/m4/utimecmp.m4
@@ -0,0 +1,14 @@
+#serial 3
+dnl Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_UTIMECMP],
+[
+ AC_LIBOBJ([utimecmp])
+
+ dnl Prerequisites of lib/utimecmp.c.
+ AC_REQUIRE([gl_FUNC_UTIMES])
+ :
+])
diff --git a/m4/utimens.m4 b/m4/utimens.m4
new file mode 100644
index 0000000..9ac9c3e
--- /dev/null
+++ b/m4/utimens.m4
@@ -0,0 +1,15 @@
+dnl Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_UTIMENS],
+[
+ AC_LIBOBJ([utimens])
+
+ dnl Prerequisites of lib/utimens.c.
+ AC_REQUIRE([gl_FUNC_UTIMES])
+ AC_REQUIRE([gl_CHECK_TYPE_STRUCT_TIMESPEC])
+ AC_REQUIRE([gl_CHECK_TYPE_STRUCT_UTIMBUF])
+ AC_CHECK_FUNCS_ONCE([futimes futimesat])
+])
diff --git a/m4/utimes-null.m4 b/m4/utimes-null.m4
new file mode 100644
index 0000000..8d5c8ae
--- /dev/null
+++ b/m4/utimes-null.m4
@@ -0,0 +1,41 @@
+#serial 7
+
+# Copyright (C) 1998, 1999, 2001, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+dnl Shamelessly cloned from acspecific.m4's AC_FUNC_UTIME_NULL,
+dnl then do case-insensitive s/utime/utimes/.
+
+AC_DEFUN([gl_FUNC_UTIMES_NULL],
+[AC_CACHE_CHECK(whether utimes accepts a null argument, ac_cv_func_utimes_null,
+[rm -f conftest.data; > conftest.data
+AC_TRY_RUN([
+/* In case stat has been defined to rpl_stat, undef it here. */
+#undef stat
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+int
+main () {
+struct stat s, t;
+return ! (stat ("conftest.data", &s) == 0
+ && utimes ("conftest.data", 0) == 0
+ && stat ("conftest.data", &t) == 0
+ && t.st_mtime >= s.st_mtime
+ && t.st_mtime - s.st_mtime < 120));
+}],
+ ac_cv_func_utimes_null=yes,
+ ac_cv_func_utimes_null=no,
+ ac_cv_func_utimes_null=no)
+rm -f core core.* *.core])
+
+ if test $ac_cv_func_utimes_null = yes; then
+ AC_DEFINE(HAVE_UTIMES_NULL, 1,
+ [Define if utimes accepts a null argument])
+ fi
+ ]
+)
diff --git a/m4/utimes.m4 b/m4/utimes.m4
new file mode 100644
index 0000000..7efb2b0
--- /dev/null
+++ b/m4/utimes.m4
@@ -0,0 +1,83 @@
+# Detect some bugs in glibc's implementation of utimes.
+
+dnl Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# See if we need to work around bugs in glibc's implementation of
+# utimes from 2003-07-12 to 2003-09-17.
+# First, there was a bug that would make utimes set mtime
+# and atime to zero (1970-01-01) unconditionally.
+# Then, there was code to round rather than truncate.
+# Then, there was an implementation (sparc64, Linux-2.4.28, glibc-2.3.3)
+# that didn't honor the NULL-means-set-to-current-time semantics.
+# Finally, there was also a version of utimes that failed on read-only
+# files, while utime worked fine (linux-2.2.20, glibc-2.2.5).
+#
+# From Jim Meyering, with suggestions from Paul Eggert.
+
+AC_DEFUN([gl_FUNC_UTIMES],
+[
+ AC_CACHE_CHECK([determine whether the utimes function works],
+ gl_cv_func_working_utimes,
+ [
+ AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <sys/time.h>
+#include <time.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <utime.h>
+
+int
+main ()
+{
+ static struct timeval timeval[2] = {{9, 10}, {999999, 999999}};
+ struct stat sbuf;
+ char const *file = "conftest.utimes";
+ FILE *f;
+ time_t now;
+ int fd;
+
+ int ok = ((f = fopen (file, "w"))
+ && fclose (f) == 0
+ && utimes (file, timeval) == 0
+ && lstat (file, &sbuf) == 0
+ && sbuf.st_atime == timeval[0].tv_sec
+ && sbuf.st_mtime == timeval[1].tv_sec);
+ unlink (file);
+ if (!ok)
+ exit (1);
+
+ ok =
+ ((f = fopen (file, "w"))
+ && fclose (f) == 0
+ && time (&now) != (time_t)-1
+ && utimes (file, NULL) == 0
+ && lstat (file, &sbuf) == 0
+ && now - sbuf.st_atime <= 2
+ && now - sbuf.st_mtime <= 2);
+ unlink (file);
+ if (!ok)
+ exit (1);
+
+ ok = (0 <= (fd = open (file, O_WRONLY|O_CREAT, 0444))
+ && close (fd) == 0
+ && utimes (file, NULL) == 0);
+ unlink (file);
+
+ exit (!ok);
+}
+ ]])],
+ [gl_cv_func_working_utimes=yes],
+ [gl_cv_func_working_utimes=no],
+ [gl_cv_func_working_utimes=no])])
+
+ if test $gl_cv_func_working_utimes = yes; then
+ AC_DEFINE([HAVE_WORKING_UTIMES], 1, [Define if utimes works properly. ])
+ fi
+])
diff --git a/m4/vasnprintf.m4 b/m4/vasnprintf.m4
new file mode 100644
index 0000000..5aa05bc
--- /dev/null
+++ b/m4/vasnprintf.m4
@@ -0,0 +1,68 @@
+# vasnprintf.m4 serial 9
+dnl Copyright (C) 2002-2004, 2006-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_VASNPRINTF],
+[
+ AC_REQUIRE([gl_EOVERFLOW])
+ AC_CHECK_FUNCS_ONCE([vasnprintf])
+ if test $ac_cv_func_vasnprintf = no; then
+ gl_REPLACE_VASNPRINTF
+ fi
+])
+
+AC_DEFUN([gl_REPLACE_VASNPRINTF],
+[
+ AC_CHECK_FUNCS_ONCE([vasnprintf])
+ AC_LIBOBJ([vasnprintf])
+ AC_LIBOBJ([printf-args])
+ AC_LIBOBJ([printf-parse])
+ AC_LIBOBJ([asnprintf])
+ if test $ac_cv_func_vasnprintf = yes; then
+ AC_DEFINE([REPLACE_VASNPRINTF], 1,
+ [Define if vasnprintf exists but is overridden by gnulib.])
+ fi
+ gl_PREREQ_PRINTF_ARGS
+ gl_PREREQ_PRINTF_PARSE
+ gl_PREREQ_VASNPRINTF
+ gl_PREREQ_ASNPRINTF
+])
+
+# Prequisites of lib/printf-args.h, lib/printf-args.c.
+AC_DEFUN([gl_PREREQ_PRINTF_ARGS],
+[
+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+ AC_REQUIRE([gt_TYPE_LONGDOUBLE])
+ AC_REQUIRE([gt_TYPE_WCHAR_T])
+ AC_REQUIRE([gt_TYPE_WINT_T])
+])
+
+# Prequisites of lib/printf-parse.h, lib/printf-parse.c.
+AC_DEFUN([gl_PREREQ_PRINTF_PARSE],
+[
+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+ AC_REQUIRE([gt_TYPE_LONGDOUBLE])
+ AC_REQUIRE([gt_TYPE_WCHAR_T])
+ AC_REQUIRE([gt_TYPE_WINT_T])
+ AC_REQUIRE([AC_TYPE_SIZE_T])
+ AC_CHECK_TYPES(ptrdiff_t)
+ AC_REQUIRE([gt_AC_TYPE_INTMAX_T])
+])
+
+# Prerequisites of lib/vasnprintf.c.
+AC_DEFUN([gl_PREREQ_VASNPRINTF],
+[
+ AC_REQUIRE([AC_FUNC_ALLOCA])
+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+ AC_REQUIRE([gt_TYPE_LONGDOUBLE])
+ AC_REQUIRE([gt_TYPE_WCHAR_T])
+ AC_REQUIRE([gt_TYPE_WINT_T])
+ AC_CHECK_FUNCS(snprintf wcslen)
+])
+
+# Prerequisites of lib/asnprintf.c.
+AC_DEFUN([gl_PREREQ_ASNPRINTF],
+[
+])
diff --git a/m4/vasprintf.m4 b/m4/vasprintf.m4
new file mode 100644
index 0000000..0f4c123
--- /dev/null
+++ b/m4/vasprintf.m4
@@ -0,0 +1,43 @@
+# vasprintf.m4 serial 3
+dnl Copyright (C) 2002-2003, 2006-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_VASPRINTF],
+[
+ AC_CHECK_FUNCS([vasprintf])
+ if test $ac_cv_func_vasprintf = no; then
+ gl_REPLACE_VASPRINTF
+ fi
+])
+
+AC_DEFUN([gl_REPLACE_VASPRINTF],
+[
+ AC_LIBOBJ([vasprintf])
+ AC_LIBOBJ([asprintf])
+ if test $ac_cv_func_vasprintf = yes; then
+ AC_DEFINE([REPLACE_VASPRINTF], 1,
+ [Define if vasprintf exists but is overridden by gnulib.])
+ fi
+ gl_PREREQ_VASPRINTF_H
+ gl_PREREQ_VASPRINTF
+ gl_PREREQ_ASPRINTF
+])
+
+# Prerequisites of lib/vasprintf.h.
+AC_DEFUN([gl_PREREQ_VASPRINTF_H],
+[
+ dnl Persuade glibc <stdio.h> to declare asprintf() and vasprintf().
+ AC_REQUIRE([AC_GNU_SOURCE])
+])
+
+# Prerequisites of lib/vasprintf.c.
+AC_DEFUN([gl_PREREQ_VASPRINTF],
+[
+])
+
+# Prerequisites of lib/asprintf.c.
+AC_DEFUN([gl_PREREQ_ASPRINTF],
+[
+])
diff --git a/m4/wchar.m4 b/m4/wchar.m4
new file mode 100644
index 0000000..068f22d
--- /dev/null
+++ b/m4/wchar.m4
@@ -0,0 +1,29 @@
+dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues.
+
+dnl Copyright (C) 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Eric Blake.
+
+# wchar.m4 serial 1
+
+AC_DEFUN([gl_WCHAR_H],
+[
+ AC_CACHE_CHECK([whether <wchar.h> is standalone],
+ [gl_cv_header_wchar_h_standalone],
+ [AC_COMPILE_IFELSE([[#include <wchar.h>
+wchar_t w;]],
+ [gl_cv_header_wchar_h_standalone=yes],
+ [gl_cv_header_wchar_h_standalone=no])])
+ if test $gl_cv_header_wchar_h_standalone = yes; then
+ WCHAR_H=
+ else
+ gl_ABSOLUTE_HEADER([wchar.h])
+ ABSOLUTE_WCHAR_H=\"$gl_cv_absolute_wchar_h\"
+ WCHAR_H=wchar.h
+ fi
+ AC_SUBST([ABSOLUTE_WCHAR_H])
+ AC_SUBST([WCHAR_H])
+])
diff --git a/m4/wchar_t.m4 b/m4/wchar_t.m4
new file mode 100644
index 0000000..cde2129
--- /dev/null
+++ b/m4/wchar_t.m4
@@ -0,0 +1,20 @@
+# wchar_t.m4 serial 1 (gettext-0.12)
+dnl Copyright (C) 2002-2003 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Test whether <stddef.h> has the 'wchar_t' type.
+dnl Prerequisite: AC_PROG_CC
+
+AC_DEFUN([gt_TYPE_WCHAR_T],
+[
+ AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t,
+ [AC_TRY_COMPILE([#include <stddef.h>
+ wchar_t foo = (wchar_t)'\0';], ,
+ gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)])
+ if test $gt_cv_c_wchar_t = yes; then
+ AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.])
+ fi
+])
diff --git a/m4/wctype.m4 b/m4/wctype.m4
new file mode 100644
index 0000000..62994c6
--- /dev/null
+++ b/m4/wctype.m4
@@ -0,0 +1,41 @@
+dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it.
+
+dnl Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Paul Eggert.
+
+AC_DEFUN([gl_WCTYPE_H],
+[
+ AC_CHECK_FUNCS_ONCE([iswcntrl])
+ AC_CHECK_HEADERS_ONCE([wctype.h])
+ AC_REQUIRE([AC_C_INLINE])
+
+ AC_REQUIRE([gt_TYPE_WINT_T])
+ if test $gt_cv_c_wint_t = yes; then
+ HAVE_WINT_T=1
+ else
+ HAVE_WINT_T=0
+ fi
+ AC_SUBST([HAVE_WINT_T])
+
+ WCTYPE_H=wctype.h
+ if test $ac_cv_header_wctype_h = yes; then
+ if test "$ac_cv_func_iswcntrl" = yes; then
+ WCTYPE_H=
+ fi
+ dnl Compute ABSOLUTE_WCTYPE_H even if WCTYPE_H is empty,
+ dnl for the benefit of builds from non-distclean directories.
+ gl_ABSOLUTE_HEADER([wctype.h])
+ ABSOLUTE_WCTYPE_H=\"$gl_cv_absolute_wctype_h\"
+ HAVE_WCTYPE_H=1
+ else
+ ABSOLUTE_WCTYPE_H=\"no/such/file/wctype.h\"
+ HAVE_WCTYPE_H=0
+ fi
+ AC_SUBST([ABSOLUTE_WCTYPE_H])
+ AC_SUBST([HAVE_WCTYPE_H])
+ AC_SUBST([WCTYPE_H])
+])
diff --git a/m4/wcwidth.m4 b/m4/wcwidth.m4
new file mode 100644
index 0000000..b483499
--- /dev/null
+++ b/m4/wcwidth.m4
@@ -0,0 +1,30 @@
+# wcwidth.m4 serial 8
+dnl Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_WCWIDTH],
+[
+ dnl Persuade glibc <wchar.h> to declare wcwidth().
+ AC_REQUIRE([AC_GNU_SOURCE])
+
+ AC_REQUIRE([AC_C_INLINE])
+ AC_REQUIRE([gt_TYPE_WCHAR_T])
+ AC_REQUIRE([gt_TYPE_WINT_T])
+
+ AC_CHECK_HEADERS_ONCE([wchar.h])
+ AC_CHECK_FUNCS_ONCE([wcwidth])
+
+ AC_CHECK_DECLS([wcwidth], [], [], [
+/* AIX 3.2.5 declares wcwidth in <string.h>. */
+#include <string.h>
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+])])
diff --git a/m4/wint_t.m4 b/m4/wint_t.m4
new file mode 100644
index 0000000..3706c04
--- /dev/null
+++ b/m4/wint_t.m4
@@ -0,0 +1,28 @@
+# wint_t.m4 serial 2 (gettext-0.12)
+dnl Copyright (C) 2003, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Test whether <wchar.h> has the 'wint_t' type.
+dnl Prerequisite: AC_PROG_CC
+
+AC_DEFUN([gt_TYPE_WINT_T],
+[
+ AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t,
+ [AC_TRY_COMPILE([
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+ wint_t foo = (wchar_t)'\0';], ,
+ gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)])
+ if test $gt_cv_c_wint_t = yes; then
+ AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.])
+ fi
+])
diff --git a/m4/xalloc.m4 b/m4/xalloc.m4
new file mode 100644
index 0000000..837a948
--- /dev/null
+++ b/m4/xalloc.m4
@@ -0,0 +1,24 @@
+# xalloc.m4 serial 16
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_XALLOC],
+[
+ AC_LIBOBJ([xmalloc])
+
+ gl_PREREQ_XALLOC
+ gl_PREREQ_XMALLOC
+])
+
+# Prerequisites of lib/xalloc.h.
+AC_DEFUN([gl_PREREQ_XALLOC], [
+ AC_REQUIRE([gl_INLINE])
+ :
+])
+
+# Prerequisites of lib/xmalloc.c.
+AC_DEFUN([gl_PREREQ_XMALLOC], [
+ :
+])
diff --git a/m4/xfts.m4 b/m4/xfts.m4
new file mode 100644
index 0000000..adaf0e0
--- /dev/null
+++ b/m4/xfts.m4
@@ -0,0 +1,14 @@
+#serial 1
+dnl Copyright (C) 2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_XFTS],
+[
+ AC_LIBSOURCES([xfts.c, xfts.h])
+ AC_LIBOBJ([xfts])
+
+ dnl Prerequisites of lib/xfts.c.
+ :
+])
diff --git a/m4/xgetcwd.m4 b/m4/xgetcwd.m4
new file mode 100644
index 0000000..d8609d1
--- /dev/null
+++ b/m4/xgetcwd.m4
@@ -0,0 +1,12 @@
+#serial 6
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_XGETCWD],
+[
+ AC_LIBOBJ([xgetcwd])
+
+ AC_REQUIRE([gl_FUNC_GETCWD])
+])
diff --git a/m4/xnanosleep.m4 b/m4/xnanosleep.m4
new file mode 100644
index 0000000..0cad790
--- /dev/null
+++ b/m4/xnanosleep.m4
@@ -0,0 +1,12 @@
+#serial 4
+dnl Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Paul Eggert.
+
+AC_DEFUN([gl_XNANOSLEEP],
+[
+ AC_LIBOBJ([xnanosleep])
+])
diff --git a/m4/xstrndup.m4 b/m4/xstrndup.m4
new file mode 100644
index 0000000..8a30ab1
--- /dev/null
+++ b/m4/xstrndup.m4
@@ -0,0 +1,15 @@
+# xstrndup.m4 serial 2
+dnl Copyright (C) 2003 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_XSTRNDUP],
+[
+ gl_PREREQ_XSTRNDUP
+])
+
+# Prerequisites of lib/xstrndup.c.
+AC_DEFUN([gl_PREREQ_XSTRNDUP], [
+ :
+])
diff --git a/m4/xstrtod.m4 b/m4/xstrtod.m4
new file mode 100644
index 0000000..625e19c
--- /dev/null
+++ b/m4/xstrtod.m4
@@ -0,0 +1,17 @@
+#serial 6
+dnl Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Prerequisites of lib/xstrtod.c.
+AC_DEFUN([gl_XSTRTOD],
+[
+ AC_LIBOBJ([xstrtod])
+])
+
+# Prerequisites of lib/xstrtold.c.
+AC_DEFUN([gl_XSTRTOLD],
+[
+ AC_LIBOBJ([xstrtold])
+])
diff --git a/m4/xstrtol.m4 b/m4/xstrtol.m4
new file mode 100644
index 0000000..cd5a549
--- /dev/null
+++ b/m4/xstrtol.m4
@@ -0,0 +1,11 @@
+#serial 9
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_XSTRTOL],
+[
+ AC_LIBOBJ([xstrtol])
+ AC_LIBOBJ([xstrtoul])
+])
diff --git a/m4/yesno.m4 b/m4/yesno.m4
new file mode 100644
index 0000000..3506217
--- /dev/null
+++ b/m4/yesno.m4
@@ -0,0 +1,13 @@
+# yesno.m4 serial 5
+dnl Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_YESNO],
+[
+ AC_LIBOBJ([yesno])
+
+ dnl No prerequisites of lib/yesno.c.
+ :
+])
diff --git a/man/Makefile.am b/man/Makefile.am
new file mode 100644
index 0000000..32df9d1
--- /dev/null
+++ b/man/Makefile.am
@@ -0,0 +1,208 @@
+# Make coreutils man pages. -*-Makefile-*-
+
+# Copyright (C) 2002-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+dist_man_MANS = \
+ base64.1 basename.1 cat.1 chgrp.1 chmod.1 chown.1 cksum.1 comm.1 \
+ cp.1 csplit.1 cut.1 date.1 dd.1 df.1 dir.1 dircolors.1 dirname.1 du.1 \
+ echo.1 env.1 expand.1 expr.1 factor.1 false.1 fmt.1 fold.1 groups.1 \
+ head.1 hostname.1 id.1 install.1 join.1 kill.1 \
+ link.1 ln.1 logname.1 \
+ ls.1 md5sum.1 mkdir.1 mkfifo.1 mknod.1 mv.1 nl.1 nohup.1 od.1 \
+ paste.1 pathchk.1 pr.1 printenv.1 printf.1 ptx.1 pwd.1 readlink.1 \
+ rm.1 rmdir.1 seq.1 sha1sum.1 sha224sum.1 sha256sum.1 sha384sum.1 sha512sum.1 \
+ shred.1 shuf.1 sleep.1 sort.1 split.1 stat.1 \
+ su.1 sum.1 sync.1 tac.1 tail.1 tee.1 test.1 touch.1 tr.1 true.1 tsort.1 \
+ tty.1 unexpand.1 uniq.1 unlink.1 vdir.1 wc.1 \
+ whoami.1 yes.1 $(MAN)
+optional_mans = \
+ chroot.1 hostid.1 nice.1 pinky.1 stty.1 uname.1 uptime.1 users.1 who.1
+
+
+man_aux = $(dist_man_MANS:.1=.x) $(optional_mans:.1=.x)
+
+EXTRA_DIST = $(man_aux) help2man $(optional_mans)
+MAINTAINERCLEANFILES = $(dist_man_MANS)
+
+# Depend on configure.ac to get version number changes.
+common_dep = $(top_srcdir)/configure.ac
+
+base64.1: $(common_dep) $(srcdir)/base64.x ../src/base64.c
+basename.1: $(common_dep) $(srcdir)/basename.x ../src/basename.c
+cat.1: $(common_dep) $(srcdir)/cat.x ../src/cat.c
+chgrp.1: $(common_dep) $(srcdir)/chgrp.x ../src/chgrp.c
+chmod.1: $(common_dep) $(srcdir)/chmod.x ../src/chmod.c
+chown.1: $(common_dep) $(srcdir)/chown.x ../src/chown.c
+chroot.1: $(common_dep) $(srcdir)/chroot.x ../src/chroot.c
+cksum.1: $(common_dep) $(srcdir)/cksum.x ../src/cksum.c
+comm.1: $(common_dep) $(srcdir)/comm.x ../src/comm.c
+cp.1: $(common_dep) $(srcdir)/cp.x ../src/cp.c
+csplit.1: $(common_dep) $(srcdir)/csplit.x ../src/csplit.c
+cut.1: $(common_dep) $(srcdir)/cut.x ../src/cut.c
+date.1: $(common_dep) $(srcdir)/date.x ../src/date.c
+dd.1: $(common_dep) $(srcdir)/dd.x ../src/dd.c
+df.1: $(common_dep) $(srcdir)/df.x ../src/df.c
+
+# Note that dir depends on ls.c, since that's where it's --help text is.
+dir.1: $(common_dep) $(srcdir)/dir.x ../src/ls.c
+
+dircolors.1: $(common_dep) $(srcdir)/dircolors.x ../src/dircolors.c
+dirname.1: $(common_dep) $(srcdir)/dirname.x ../src/dirname.c
+du.1: $(common_dep) $(srcdir)/du.x ../src/du.c
+echo.1: $(common_dep) $(srcdir)/echo.x ../src/echo.c
+env.1: $(common_dep) $(srcdir)/env.x ../src/env.c
+expand.1: $(common_dep) $(srcdir)/expand.x ../src/expand.c
+expr.1: $(common_dep) $(srcdir)/expr.x ../src/expr.c
+factor.1: $(common_dep) $(srcdir)/factor.x ../src/factor.c
+false.1: $(common_dep) $(srcdir)/false.x ../src/false.c
+fmt.1: $(common_dep) $(srcdir)/fmt.x ../src/fmt.c
+fold.1: $(common_dep) $(srcdir)/fold.x ../src/fold.c
+groups.1: $(common_dep) $(srcdir)/groups.x ../src/groups.sh
+head.1: $(common_dep) $(srcdir)/head.x ../src/head.c
+hostid.1: $(common_dep) $(srcdir)/hostid.x ../src/hostid.c
+hostname.1: $(common_dep) $(srcdir)/hostname.x ../src/hostname.c
+id.1: $(common_dep) $(srcdir)/id.x ../src/id.c
+install.1: $(common_dep) $(srcdir)/install.x ../src/install.c
+join.1: $(common_dep) $(srcdir)/join.x ../src/join.c
+kill.1: $(common_dep) $(srcdir)/kill.x ../src/kill.c
+link.1: $(common_dep) $(srcdir)/link.x ../src/link.c
+ln.1: $(common_dep) $(srcdir)/ln.x ../src/ln.c
+logname.1: $(common_dep) $(srcdir)/logname.x ../src/logname.c
+ls.1: $(common_dep) $(srcdir)/ls.x ../src/ls.c
+md5sum.1: $(common_dep) $(srcdir)/md5sum.x ../src/md5sum.c
+mkdir.1: $(common_dep) $(srcdir)/mkdir.x ../src/mkdir.c
+mkfifo.1: $(common_dep) $(srcdir)/mkfifo.x ../src/mkfifo.c
+mknod.1: $(common_dep) $(srcdir)/mknod.x ../src/mknod.c
+mv.1: $(common_dep) $(srcdir)/mv.x ../src/mv.c
+nice.1: $(common_dep) $(srcdir)/nice.x ../src/nice.c
+nl.1: $(common_dep) $(srcdir)/nl.x ../src/nl.c
+nohup.1: $(common_dep) $(srcdir)/nohup.x ../src/nohup.c
+od.1: $(common_dep) $(srcdir)/od.x ../src/od.c
+paste.1: $(common_dep) $(srcdir)/paste.x ../src/paste.c
+pathchk.1: $(common_dep) $(srcdir)/pathchk.x ../src/pathchk.c
+pinky.1: $(common_dep) $(srcdir)/pinky.x ../src/pinky.c
+pr.1: $(common_dep) $(srcdir)/pr.x ../src/pr.c
+printenv.1: $(common_dep) $(srcdir)/printenv.x ../src/printenv.c
+printf.1: $(common_dep) $(srcdir)/printf.x ../src/printf.c
+ptx.1: $(common_dep) $(srcdir)/ptx.x ../src/ptx.c
+pwd.1: $(common_dep) $(srcdir)/pwd.x ../src/pwd.c
+readlink.1: $(common_dep) $(srcdir)/readlink.x ../src/readlink.c
+rm.1: $(common_dep) $(srcdir)/rm.x ../src/rm.c
+rmdir.1: $(common_dep) $(srcdir)/rmdir.x ../src/rmdir.c
+seq.1: $(common_dep) $(srcdir)/seq.x ../src/seq.c
+sha1sum.1: $(common_dep) $(srcdir)/sha1sum.x ../src/md5sum.c
+sha224sum.1: $(common_dep) $(srcdir)/sha224sum.x ../src/md5sum.c
+sha256sum.1: $(common_dep) $(srcdir)/sha256sum.x ../src/md5sum.c
+sha384sum.1: $(common_dep) $(srcdir)/sha384sum.x ../src/md5sum.c
+sha512sum.1: $(common_dep) $(srcdir)/sha512sum.x ../src/md5sum.c
+shred.1: $(common_dep) $(srcdir)/shred.x ../src/shred.c
+shuf.1: $(common_dep) $(srcdir)/shuf.x ../src/shuf.c
+sleep.1: $(common_dep) $(srcdir)/sleep.x ../src/sleep.c
+sort.1: $(common_dep) $(srcdir)/sort.x ../src/sort.c
+split.1: $(common_dep) $(srcdir)/split.x ../src/split.c
+stat.1: $(common_dep) $(srcdir)/stat.x ../src/stat.c
+stty.1: $(common_dep) $(srcdir)/stty.x ../src/stty.c
+su.1: $(common_dep) $(srcdir)/su.x ../src/su.c
+sum.1: $(common_dep) $(srcdir)/sum.x ../src/sum.c
+sync.1: $(common_dep) $(srcdir)/sync.x ../src/sync.c
+tac.1: $(common_dep) $(srcdir)/tac.x ../src/tac.c
+tail.1: $(common_dep) $(srcdir)/tail.x ../src/tail.c
+tee.1: $(common_dep) $(srcdir)/tee.x ../src/tee.c
+test.1: $(common_dep) $(srcdir)/test.x ../src/test.c
+touch.1: $(common_dep) $(srcdir)/touch.x ../src/touch.c
+tr.1: $(common_dep) $(srcdir)/tr.x ../src/tr.c
+true.1: $(common_dep) $(srcdir)/true.x ../src/true.c
+tsort.1: $(common_dep) $(srcdir)/tsort.x ../src/tsort.c
+tty.1: $(common_dep) $(srcdir)/tty.x ../src/tty.c
+uname.1: $(common_dep) $(srcdir)/uname.x ../src/uname.c
+unexpand.1: $(common_dep) $(srcdir)/unexpand.x ../src/unexpand.c
+uniq.1: $(common_dep) $(srcdir)/uniq.x ../src/uniq.c
+unlink.1: $(common_dep) $(srcdir)/unlink.x ../src/unlink.c
+uptime.1: $(common_dep) $(srcdir)/uptime.x ../src/uptime.c
+users.1: $(common_dep) $(srcdir)/users.x ../src/users.c
+vdir.1: $(common_dep) $(srcdir)/vdir.x ../src/ls.c
+wc.1: $(common_dep) $(srcdir)/wc.x ../src/wc.c
+who.1: $(common_dep) $(srcdir)/who.x ../src/who.c
+whoami.1: $(common_dep) $(srcdir)/whoami.x ../src/whoami.c
+yes.1: $(common_dep) $(srcdir)/yes.x ../src/yes.c
+
+SUFFIXES = .x .1
+
+# Ensure that help2man runs the ../src/ginstall binary as
+# `install' when creating install.1.
+# Similarly, ensure that it uses the ../src/[ binary to create test.1.
+t = $*.td
+mapped_name = `echo $*|sed 's/install/ginstall/; s/test/[/'`
+
+# Note the use of $t/$*, rather than just `$*' as in other packages.
+# That is necessary to avoid failures for programs that are also shell built-in
+# functions like echo, false, printf, pwd.
+.x.1:
+ @case '$(PERL)' in \
+ *"/missing "*) \
+ echo 'WARNING: cannot update man page $@ since perl is missing' \
+ 'or inadequate' 1>&2 \
+ ;; \
+ *) \
+ rm -f $@ \
+ && { echo "Updating man page $@"; \
+ rm -rf $t; \
+ mkdir $t; \
+ (cd $t && $(LN_S) ../../src/$(mapped_name) $*); \
+ $(PERL) -- $(srcdir)/help2man \
+ --source='$(PACKAGE_STRING)' \
+ --include=$(srcdir)/$*.x \
+ --output=$t/$@ $t/$*; \
+ } \
+ && sed 's|$*\.td/||g' $t/$@ > $@ \
+ && chmod a-w $@ \
+ && rm -rf $t ;; \
+ esac
+
+check-local: check-x-vs-1 check-programs-vs-x
+
+# Sort in traditional ASCII order, regardless of the current locale;
+# otherwise we may get into trouble with distinct strings that the
+# current locale considers to be equal.
+ASSORT = LC_ALL=C sort
+
+# Ensure that for each .x file in this directory, there is a
+# corresponding .1 file in the definition of $(dist_man_MANS) above.
+.PHONY: check-x-vs-1
+check-x-vs-1:
+ PATH=../src$(PATH_SEPARATOR)$$PATH; export PATH; \
+ t=ls-files.$$$$; \
+ (cd $(srcdir) && ls -1 *.x) | sed 's/\.x$$//' | $(ASSORT) > $$t;\
+ echo $(dist_man_MANS) | tr -s ' ' '\n' | sed 's/\.1$$//' \
+ | $(ASSORT) | diff - $$t || { rm $$t; exit 1; }; \
+ rm $$t
+
+all_programs = \
+ (cd ../src && MAKEFLAGS= $(MAKE) -s all_programs.list) \
+ | grep -v '\['
+
+.PHONY: check-programs-vs-x
+check-programs-vs-x:
+ status=0; \
+ for p in dummy `$(all_programs)`; do \
+ test $$p = dummy && continue; \
+ test $$p = ginstall && p=install || : ; \
+ test -f $(srcdir)/$$p.x \
+ || { echo missing $$p.x 1>&2; status=1; }; \
+ done; \
+ exit $$status
diff --git a/man/Makefile.in b/man/Makefile.in
new file mode 100644
index 0000000..f75b88b
--- /dev/null
+++ b/man/Makefile.in
@@ -0,0 +1,900 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils man pages. -*-Makefile-*-
+
+# Copyright (C) 2002-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = man
+DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+man1dir = $(mandir)/man1
+am__installdirs = "$(DESTDIR)$(man1dir)"
+NROFF = nroff
+MANS = $(dist_man_MANS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+dist_man_MANS = \
+ base64.1 basename.1 cat.1 chgrp.1 chmod.1 chown.1 cksum.1 comm.1 \
+ cp.1 csplit.1 cut.1 date.1 dd.1 df.1 dir.1 dircolors.1 dirname.1 du.1 \
+ echo.1 env.1 expand.1 expr.1 factor.1 false.1 fmt.1 fold.1 groups.1 \
+ head.1 hostname.1 id.1 install.1 join.1 kill.1 \
+ link.1 ln.1 logname.1 \
+ ls.1 md5sum.1 mkdir.1 mkfifo.1 mknod.1 mv.1 nl.1 nohup.1 od.1 \
+ paste.1 pathchk.1 pr.1 printenv.1 printf.1 ptx.1 pwd.1 readlink.1 \
+ rm.1 rmdir.1 seq.1 sha1sum.1 sha224sum.1 sha256sum.1 sha384sum.1 sha512sum.1 \
+ shred.1 shuf.1 sleep.1 sort.1 split.1 stat.1 \
+ su.1 sum.1 sync.1 tac.1 tail.1 tee.1 test.1 touch.1 tr.1 true.1 tsort.1 \
+ tty.1 unexpand.1 uniq.1 unlink.1 vdir.1 wc.1 \
+ whoami.1 yes.1 $(MAN)
+
+optional_mans = \
+ chroot.1 hostid.1 nice.1 pinky.1 stty.1 uname.1 uptime.1 users.1 who.1
+
+man_aux = $(dist_man_MANS:.1=.x) $(optional_mans:.1=.x)
+EXTRA_DIST = $(man_aux) help2man $(optional_mans)
+MAINTAINERCLEANFILES = $(dist_man_MANS)
+
+# Depend on configure.ac to get version number changes.
+common_dep = $(top_srcdir)/configure.ac
+SUFFIXES = .x .1
+
+# Ensure that help2man runs the ../src/ginstall binary as
+# `install' when creating install.1.
+# Similarly, ensure that it uses the ../src/[ binary to create test.1.
+t = $*.td
+mapped_name = `echo $*|sed 's/install/ginstall/; s/test/[/'`
+
+# Sort in traditional ASCII order, regardless of the current locale;
+# otherwise we may get into trouble with distinct strings that the
+# current locale considers to be equal.
+ASSORT = LC_ALL=C sort
+all_programs = \
+ (cd ../src && MAKEFLAGS= $(MAKE) -s all_programs.list) \
+ | grep -v '\['
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .x .1
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu man/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-man1: $(man1_MANS) $(man_MANS)
+ @$(NORMAL_INSTALL)
+ test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.1*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+ else file=$$i; fi; \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 1*) ;; \
+ *) ext='1' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
+ done
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.1*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 1*) ;; \
+ *) ext='1' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
+ rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
+ done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile $(MANS)
+installdirs:
+ for dir in "$(DESTDIR)$(man1dir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-man
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man: install-man1
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-man
+
+uninstall-man: uninstall-man1
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am check-local clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-man1 install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am uninstall-man uninstall-man1
+
+
+base64.1: $(common_dep) $(srcdir)/base64.x ../src/base64.c
+basename.1: $(common_dep) $(srcdir)/basename.x ../src/basename.c
+cat.1: $(common_dep) $(srcdir)/cat.x ../src/cat.c
+chgrp.1: $(common_dep) $(srcdir)/chgrp.x ../src/chgrp.c
+chmod.1: $(common_dep) $(srcdir)/chmod.x ../src/chmod.c
+chown.1: $(common_dep) $(srcdir)/chown.x ../src/chown.c
+chroot.1: $(common_dep) $(srcdir)/chroot.x ../src/chroot.c
+cksum.1: $(common_dep) $(srcdir)/cksum.x ../src/cksum.c
+comm.1: $(common_dep) $(srcdir)/comm.x ../src/comm.c
+cp.1: $(common_dep) $(srcdir)/cp.x ../src/cp.c
+csplit.1: $(common_dep) $(srcdir)/csplit.x ../src/csplit.c
+cut.1: $(common_dep) $(srcdir)/cut.x ../src/cut.c
+date.1: $(common_dep) $(srcdir)/date.x ../src/date.c
+dd.1: $(common_dep) $(srcdir)/dd.x ../src/dd.c
+df.1: $(common_dep) $(srcdir)/df.x ../src/df.c
+
+# Note that dir depends on ls.c, since that's where it's --help text is.
+dir.1: $(common_dep) $(srcdir)/dir.x ../src/ls.c
+
+dircolors.1: $(common_dep) $(srcdir)/dircolors.x ../src/dircolors.c
+dirname.1: $(common_dep) $(srcdir)/dirname.x ../src/dirname.c
+du.1: $(common_dep) $(srcdir)/du.x ../src/du.c
+echo.1: $(common_dep) $(srcdir)/echo.x ../src/echo.c
+env.1: $(common_dep) $(srcdir)/env.x ../src/env.c
+expand.1: $(common_dep) $(srcdir)/expand.x ../src/expand.c
+expr.1: $(common_dep) $(srcdir)/expr.x ../src/expr.c
+factor.1: $(common_dep) $(srcdir)/factor.x ../src/factor.c
+false.1: $(common_dep) $(srcdir)/false.x ../src/false.c
+fmt.1: $(common_dep) $(srcdir)/fmt.x ../src/fmt.c
+fold.1: $(common_dep) $(srcdir)/fold.x ../src/fold.c
+groups.1: $(common_dep) $(srcdir)/groups.x ../src/groups.sh
+head.1: $(common_dep) $(srcdir)/head.x ../src/head.c
+hostid.1: $(common_dep) $(srcdir)/hostid.x ../src/hostid.c
+hostname.1: $(common_dep) $(srcdir)/hostname.x ../src/hostname.c
+id.1: $(common_dep) $(srcdir)/id.x ../src/id.c
+install.1: $(common_dep) $(srcdir)/install.x ../src/install.c
+join.1: $(common_dep) $(srcdir)/join.x ../src/join.c
+kill.1: $(common_dep) $(srcdir)/kill.x ../src/kill.c
+link.1: $(common_dep) $(srcdir)/link.x ../src/link.c
+ln.1: $(common_dep) $(srcdir)/ln.x ../src/ln.c
+logname.1: $(common_dep) $(srcdir)/logname.x ../src/logname.c
+ls.1: $(common_dep) $(srcdir)/ls.x ../src/ls.c
+md5sum.1: $(common_dep) $(srcdir)/md5sum.x ../src/md5sum.c
+mkdir.1: $(common_dep) $(srcdir)/mkdir.x ../src/mkdir.c
+mkfifo.1: $(common_dep) $(srcdir)/mkfifo.x ../src/mkfifo.c
+mknod.1: $(common_dep) $(srcdir)/mknod.x ../src/mknod.c
+mv.1: $(common_dep) $(srcdir)/mv.x ../src/mv.c
+nice.1: $(common_dep) $(srcdir)/nice.x ../src/nice.c
+nl.1: $(common_dep) $(srcdir)/nl.x ../src/nl.c
+nohup.1: $(common_dep) $(srcdir)/nohup.x ../src/nohup.c
+od.1: $(common_dep) $(srcdir)/od.x ../src/od.c
+paste.1: $(common_dep) $(srcdir)/paste.x ../src/paste.c
+pathchk.1: $(common_dep) $(srcdir)/pathchk.x ../src/pathchk.c
+pinky.1: $(common_dep) $(srcdir)/pinky.x ../src/pinky.c
+pr.1: $(common_dep) $(srcdir)/pr.x ../src/pr.c
+printenv.1: $(common_dep) $(srcdir)/printenv.x ../src/printenv.c
+printf.1: $(common_dep) $(srcdir)/printf.x ../src/printf.c
+ptx.1: $(common_dep) $(srcdir)/ptx.x ../src/ptx.c
+pwd.1: $(common_dep) $(srcdir)/pwd.x ../src/pwd.c
+readlink.1: $(common_dep) $(srcdir)/readlink.x ../src/readlink.c
+rm.1: $(common_dep) $(srcdir)/rm.x ../src/rm.c
+rmdir.1: $(common_dep) $(srcdir)/rmdir.x ../src/rmdir.c
+seq.1: $(common_dep) $(srcdir)/seq.x ../src/seq.c
+sha1sum.1: $(common_dep) $(srcdir)/sha1sum.x ../src/md5sum.c
+sha224sum.1: $(common_dep) $(srcdir)/sha224sum.x ../src/md5sum.c
+sha256sum.1: $(common_dep) $(srcdir)/sha256sum.x ../src/md5sum.c
+sha384sum.1: $(common_dep) $(srcdir)/sha384sum.x ../src/md5sum.c
+sha512sum.1: $(common_dep) $(srcdir)/sha512sum.x ../src/md5sum.c
+shred.1: $(common_dep) $(srcdir)/shred.x ../src/shred.c
+shuf.1: $(common_dep) $(srcdir)/shuf.x ../src/shuf.c
+sleep.1: $(common_dep) $(srcdir)/sleep.x ../src/sleep.c
+sort.1: $(common_dep) $(srcdir)/sort.x ../src/sort.c
+split.1: $(common_dep) $(srcdir)/split.x ../src/split.c
+stat.1: $(common_dep) $(srcdir)/stat.x ../src/stat.c
+stty.1: $(common_dep) $(srcdir)/stty.x ../src/stty.c
+su.1: $(common_dep) $(srcdir)/su.x ../src/su.c
+sum.1: $(common_dep) $(srcdir)/sum.x ../src/sum.c
+sync.1: $(common_dep) $(srcdir)/sync.x ../src/sync.c
+tac.1: $(common_dep) $(srcdir)/tac.x ../src/tac.c
+tail.1: $(common_dep) $(srcdir)/tail.x ../src/tail.c
+tee.1: $(common_dep) $(srcdir)/tee.x ../src/tee.c
+test.1: $(common_dep) $(srcdir)/test.x ../src/test.c
+touch.1: $(common_dep) $(srcdir)/touch.x ../src/touch.c
+tr.1: $(common_dep) $(srcdir)/tr.x ../src/tr.c
+true.1: $(common_dep) $(srcdir)/true.x ../src/true.c
+tsort.1: $(common_dep) $(srcdir)/tsort.x ../src/tsort.c
+tty.1: $(common_dep) $(srcdir)/tty.x ../src/tty.c
+uname.1: $(common_dep) $(srcdir)/uname.x ../src/uname.c
+unexpand.1: $(common_dep) $(srcdir)/unexpand.x ../src/unexpand.c
+uniq.1: $(common_dep) $(srcdir)/uniq.x ../src/uniq.c
+unlink.1: $(common_dep) $(srcdir)/unlink.x ../src/unlink.c
+uptime.1: $(common_dep) $(srcdir)/uptime.x ../src/uptime.c
+users.1: $(common_dep) $(srcdir)/users.x ../src/users.c
+vdir.1: $(common_dep) $(srcdir)/vdir.x ../src/ls.c
+wc.1: $(common_dep) $(srcdir)/wc.x ../src/wc.c
+who.1: $(common_dep) $(srcdir)/who.x ../src/who.c
+whoami.1: $(common_dep) $(srcdir)/whoami.x ../src/whoami.c
+yes.1: $(common_dep) $(srcdir)/yes.x ../src/yes.c
+
+# Note the use of $t/$*, rather than just `$*' as in other packages.
+# That is necessary to avoid failures for programs that are also shell built-in
+# functions like echo, false, printf, pwd.
+.x.1:
+ @case '$(PERL)' in \
+ *"/missing "*) \
+ echo 'WARNING: cannot update man page $@ since perl is missing' \
+ 'or inadequate' 1>&2 \
+ ;; \
+ *) \
+ rm -f $@ \
+ && { echo "Updating man page $@"; \
+ rm -rf $t; \
+ mkdir $t; \
+ (cd $t && $(LN_S) ../../src/$(mapped_name) $*); \
+ $(PERL) -- $(srcdir)/help2man \
+ --source='$(PACKAGE_STRING)' \
+ --include=$(srcdir)/$*.x \
+ --output=$t/$@ $t/$*; \
+ } \
+ && sed 's|$*\.td/||g' $t/$@ > $@ \
+ && chmod a-w $@ \
+ && rm -rf $t ;; \
+ esac
+
+check-local: check-x-vs-1 check-programs-vs-x
+
+# Ensure that for each .x file in this directory, there is a
+# corresponding .1 file in the definition of $(dist_man_MANS) above.
+.PHONY: check-x-vs-1
+check-x-vs-1:
+ PATH=../src$(PATH_SEPARATOR)$$PATH; export PATH; \
+ t=ls-files.$$$$; \
+ (cd $(srcdir) && ls -1 *.x) | sed 's/\.x$$//' | $(ASSORT) > $$t;\
+ echo $(dist_man_MANS) | tr -s ' ' '\n' | sed 's/\.1$$//' \
+ | $(ASSORT) | diff - $$t || { rm $$t; exit 1; }; \
+ rm $$t
+
+.PHONY: check-programs-vs-x
+check-programs-vs-x:
+ status=0; \
+ for p in dummy `$(all_programs)`; do \
+ test $$p = dummy && continue; \
+ test $$p = ginstall && p=install || : ; \
+ test -f $(srcdir)/$$p.x \
+ || { echo missing $$p.x 1>&2; status=1; }; \
+ done; \
+ exit $$status
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/man/base64.1 b/man/base64.1
new file mode 100644
index 0000000..6dc283f
--- /dev/null
+++ b/man/base64.1
@@ -0,0 +1,56 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH BASE64 "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+base64 \- base64 encode/decode data and print to standard output
+.SH SYNOPSIS
+.B base64
+[\fIOPTION\fR] [\fIFILE\fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Base64 encode or decode FILE, or standard input, to standard output.
+.TP
+\fB\-w\fR, \fB\-\-wrap\fR=\fICOLS\fR
+Wrap encoded lines after COLS character (default 76).
+Use 0 to disable line wrapping.
+.TP
+\fB\-d\fR, \fB\-\-decode\fR
+Decode data.
+.TP
+\fB\-i\fR, \fB\-\-ignore\-garbage\fR
+When decoding, ignore non\-alphabet characters.
+.TP
+\fB\-\-help\fR
+Display this help and exit.
+.TP
+\fB\-\-version\fR
+Output version information and exit.
+.PP
+With no FILE, or when FILE is \-, read standard input.
+.PP
+The data are encoded as described for the base64 alphabet in RFC 3548.
+When decoding, the input may contain newlines in addition to the bytes of
+the formal base64 alphabet. Use \fB\-\-ignore\-garbage\fR to attempt to recover
+from any other non\-alphabet bytes in the encoded stream.
+.SH AUTHOR
+Written by Simon Josefsson.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B base64
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B base64
+programs are properly installed at your site, the command
+.IP
+.B info base64
+.PP
+should give you access to the complete manual.
diff --git a/man/base64.x b/man/base64.x
new file mode 100644
index 0000000..216c70c
--- /dev/null
+++ b/man/base64.x
@@ -0,0 +1,4 @@
+[NAME]
+base64 \- base64 encode/decode data and print to standard output
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/basename.1 b/man/basename.1
new file mode 100644
index 0000000..eda27a0
--- /dev/null
+++ b/man/basename.1
@@ -0,0 +1,52 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH BASENAME "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+basename \- strip directory and suffix from filenames
+.SH SYNOPSIS
+.B basename
+\fINAME \fR[\fISUFFIX\fR]
+.br
+.B basename
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print NAME with any leading directory components removed.
+If specified, also remove a trailing SUFFIX.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH EXAMPLES
+.TP
+basename /usr/bin/sort
+Output "sort".
+.TP
+basename include/stdio.h .h
+Output "stdio".
+.SH AUTHOR
+Written by FIXME unknown.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+dirname(1), readlink(1)
+.PP
+The full documentation for
+.B basename
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B basename
+programs are properly installed at your site, the command
+.IP
+.B info basename
+.PP
+should give you access to the complete manual.
diff --git a/man/basename.x b/man/basename.x
new file mode 100644
index 0000000..e91ee57
--- /dev/null
+++ b/man/basename.x
@@ -0,0 +1,6 @@
+[NAME]
+basename \- strip directory and suffix from filenames
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+dirname(1), readlink(1)
diff --git a/man/cat.1 b/man/cat.1
new file mode 100644
index 0000000..24121cc
--- /dev/null
+++ b/man/cat.1
@@ -0,0 +1,78 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH CAT "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+cat \- concatenate files and print on the standard output
+.SH SYNOPSIS
+.B cat
+[\fIOPTION\fR] [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Concatenate FILE(s), or standard input, to standard output.
+.TP
+\fB\-A\fR, \fB\-\-show\-all\fR
+equivalent to \fB\-vET\fR
+.TP
+\fB\-b\fR, \fB\-\-number\-nonblank\fR
+number nonblank output lines
+.TP
+\fB\-e\fR
+equivalent to \fB\-vE\fR
+.TP
+\fB\-E\fR, \fB\-\-show\-ends\fR
+display $ at end of each line
+.TP
+\fB\-n\fR, \fB\-\-number\fR
+number all output lines
+.TP
+\fB\-s\fR, \fB\-\-squeeze\-blank\fR
+never more than one single blank line
+.TP
+\fB\-t\fR
+equivalent to \fB\-vT\fR
+.TP
+\fB\-T\fR, \fB\-\-show\-tabs\fR
+display TAB characters as ^I
+.TP
+\fB\-u\fR
+(ignored)
+.TP
+\fB\-v\fR, \fB\-\-show\-nonprinting\fR
+use ^ and M\- notation, except for LFD and TAB
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+With no FILE, or when FILE is \-, read standard input.
+.SH EXAMPLES
+.TP
+cat f \- g
+Output f's contents, then standard input, then g's contents.
+.TP
+cat
+Copy standard input to standard output.
+.SH AUTHOR
+Written by Torbjorn Granlund and Richard M. Stallman.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B cat
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B cat
+programs are properly installed at your site, the command
+.IP
+.B info cat
+.PP
+should give you access to the complete manual.
diff --git a/man/cat.x b/man/cat.x
new file mode 100644
index 0000000..c219678
--- /dev/null
+++ b/man/cat.x
@@ -0,0 +1,4 @@
+[NAME]
+cat \- concatenate files and print on the standard output
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/chgrp.1 b/man/chgrp.1
new file mode 100644
index 0000000..85cebe6
--- /dev/null
+++ b/man/chgrp.1
@@ -0,0 +1,96 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH CHGRP "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+chgrp \- change group ownership
+.SH SYNOPSIS
+.B chgrp
+[\fIOPTION\fR]... \fIGROUP FILE\fR...
+.br
+.B chgrp
+[\fIOPTION\fR]... \fI--reference=RFILE FILE\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Change the group of each FILE to GROUP.
+With \fB\-\-reference\fR, change the group of each FILE to that of RFILE.
+.TP
+\fB\-c\fR, \fB\-\-changes\fR
+like verbose but report only when a change is made
+.TP
+\fB\-\-dereference\fR
+affect the referent of each symbolic link (this is
+the default), rather than the symbolic link itself
+.TP
+\fB\-h\fR, \fB\-\-no\-dereference\fR
+affect each symbolic link instead of any referenced
+file (useful only on systems that can change the
+ownership of a symlink)
+.TP
+\fB\-\-no\-preserve\-root\fR
+do not treat `/' specially (the default)
+.TP
+\fB\-\-preserve\-root\fR
+fail to operate recursively on `/'
+.TP
+\fB\-f\fR, \fB\-\-silent\fR, \fB\-\-quiet\fR
+suppress most error messages
+.TP
+\fB\-\-reference\fR=\fIRFILE\fR
+use RFILE's group rather than specifying a
+GROUP value
+.TP
+\fB\-R\fR, \fB\-\-recursive\fR
+operate on files and directories recursively
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+output a diagnostic for every file processed
+.PP
+The following options modify how a hierarchy is traversed when the \fB\-R\fR
+option is also specified. If more than one is specified, only the final
+one takes effect.
+.TP
+\fB\-H\fR
+if a command line argument is a symbolic link
+to a directory, traverse it
+.TP
+\fB\-L\fR
+traverse every symbolic link to a directory
+encountered
+.TP
+\fB\-P\fR
+do not traverse any symbolic links (default)
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH EXAMPLES
+.TP
+chgrp staff /u
+Change the group of /u to "staff".
+.TP
+chgrp \fB\-hR\fR staff /u
+Change the group of /u and subfiles to "staff".
+.SH AUTHOR
+Written by David MacKenzie and Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B chgrp
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B chgrp
+programs are properly installed at your site, the command
+.IP
+.B info chgrp
+.PP
+should give you access to the complete manual.
diff --git a/man/chgrp.x b/man/chgrp.x
new file mode 100644
index 0000000..1ceeafc
--- /dev/null
+++ b/man/chgrp.x
@@ -0,0 +1,4 @@
+[NAME]
+chgrp \- change group ownership
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/chmod.1 b/man/chmod.1
new file mode 100644
index 0000000..18f1da7
--- /dev/null
+++ b/man/chmod.1
@@ -0,0 +1,147 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH CHMOD "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+chmod \- change file mode bits
+.SH SYNOPSIS
+.B chmod
+[\fIOPTION\fR]... \fIMODE\fR[\fI,MODE\fR]... \fIFILE\fR...
+.br
+.B chmod
+[\fIOPTION\fR]... \fIOCTAL-MODE FILE\fR...
+.br
+.B chmod
+[\fIOPTION\fR]... \fI--reference=RFILE FILE\fR...
+.SH DESCRIPTION
+This manual page
+documents the GNU version of
+.BR chmod .
+.B chmod
+changes the file mode bits of each given file according to
+.IR mode ,
+which can be either a symbolic representation of changes to make, or
+an octal number representing the bit pattern for the new mode bits.
+.PP
+The format of a symbolic mode is [\c
+\fBugoa\fP.\|.\|.][[\fB+-=\fP][\fIperms\fP.\|.\|.].\|.\|.],
+where
+.I "perms"
+is either zero or more letters from the set
+\fBrwxXst\fP, or a single letter from the set \fBugo\fP.
+Multiple symbolic
+modes can be given, separated by commas.
+.PP
+A combination of the letters \fBugoa\fP controls which users' access
+to the file will be changed: the user who owns it (\fBu\fP), other
+users in the file's group (\fBg\fP), other users not in the file's
+group (\fBo\fP), or all users (\fBa\fP). If none of these are given,
+the effect is as if \fBa\fP were
+given, but bits that are set in the umask are not affected.
+.PP
+The operator \fB+\fP causes the selected file mode bits to be added to
+the existing file mode bits of each file; \fB-\fP causes them to be
+removed; and \fB=\fP causes them to be added and causes unmentioned
+bits to be removed except that a directory's unmentioned set user and
+group ID bits are not affected.
+.PP
+The letters \fBrwxXst\fP select file mode bits for the affected users:
+read (\fBr\fP), write (\fBw\fP), execute (or search for directories)
+(\fBx\fP), execute/search only if the file is a directory or already
+has execute permission for some user (\fBX\fP), set user or group ID
+on execution (\fBs\fP), restricted deletion flag or sticky bit
+(\fBt\fP). Instead of one or more of these letters, you can specify
+exactly one of the letters \fBugo\fP: the permissions granted to the
+user who owns the file (\fBu\fP), the permissions granted to other
+users who are members of the file's group (\fBg\fP),
+and the permissions granted to users that are in neither of the two preceding
+categories (\fBo\fP).
+.PP
+A numeric mode is from one to four octal digits (0\-7), derived by
+adding up the bits with values 4, 2, and 1. Omitted digits are
+assumed to be leading zeros, except that if the first digit is
+omitted, a directory's set user and group ID bits are not affected.
+The first digit selects the set user ID (4) and set group ID (2) and
+restricted deletion or sticky (1) attributes. The second digit
+selects permissions for the user who owns the file: read (4), write (2),
+and execute (1); the third selects permissions for other users in the
+file's group, with the same values; and the fourth for other users not
+in the file's group, with the same values.
+.PP
+.B chmod
+never changes the permissions of symbolic links; the
+.B chmod
+system call cannot change their permissions. This is not a problem
+since the permissions of symbolic links are never used.
+However, for each symbolic link listed on the command line,
+.B chmod
+changes the permissions of the pointed-to file.
+In contrast,
+.B chmod
+ignores symbolic links encountered during recursive directory
+traversals.
+.SH "RESTRICTED DELETION FLAG OR STICKY BIT"
+The restricted deletion flag or sticky bit is a single bit, whose
+interpretation depends on the file type. For directories, it prevents
+unprivileged users from removing or renaming a file in the directory
+unless they own the file or the directory; this is called the
+.I "restricted deletion flag"
+for the directory, and is commonly found on world-writable directories
+like \fB/tmp\fP. For regular files on some older systems, the bit
+saves the program's text image on the swap device so it will load more
+quickly when run; this is called the
+.IR "sticky bit" .
+.SH OPTIONS
+.PP
+Change the mode of each FILE to MODE.
+.TP
+\fB\-c\fR, \fB\-\-changes\fR
+like verbose but report only when a change is made
+.TP
+\fB\-\-no\-preserve\-root\fR
+do not treat `/' specially (the default)
+.TP
+\fB\-\-preserve\-root\fR
+fail to operate recursively on `/'
+.TP
+\fB\-f\fR, \fB\-\-silent\fR, \fB\-\-quiet\fR
+suppress most error messages
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+output a diagnostic for every file processed
+.TP
+\fB\-\-reference\fR=\fIRFILE\fR
+use RFILE's mode instead of MODE values
+.TP
+\fB\-R\fR, \fB\-\-recursive\fR
+change files and directories recursively
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Each MODE is of the form `[ugoa]*([\-+=]([rwxXst]*|[ugo]))+'.
+.SH AUTHOR
+Written by David MacKenzie and Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+chmod(2)
+.PP
+The full documentation for
+.B chmod
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B chmod
+programs are properly installed at your site, the command
+.IP
+.B info chmod
+.PP
+should give you access to the complete manual.
diff --git a/man/chmod.x b/man/chmod.x
new file mode 100644
index 0000000..9a73cd5
--- /dev/null
+++ b/man/chmod.x
@@ -0,0 +1,88 @@
+'\" Copyright (C) 1998, 1999, 2001, 2006 Free Software Foundation, Inc.
+'\"
+'\" This is free software. You may redistribute copies of it under the terms
+'\" of the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+'\" There is NO WARRANTY, to the extent permitted by law.
+[NAME]
+chmod \- change file mode bits
+[DESCRIPTION]
+This manual page
+documents the GNU version of
+.BR chmod .
+.B chmod
+changes the file mode bits of each given file according to
+.IR mode ,
+which can be either a symbolic representation of changes to make, or
+an octal number representing the bit pattern for the new mode bits.
+.PP
+The format of a symbolic mode is [\c
+\fBugoa\fP.\|.\|.][[\fB+-=\fP][\fIperms\fP.\|.\|.].\|.\|.],
+where
+.I "perms"
+is either zero or more letters from the set
+\fBrwxXst\fP, or a single letter from the set \fBugo\fP.
+Multiple symbolic
+modes can be given, separated by commas.
+.PP
+A combination of the letters \fBugoa\fP controls which users' access
+to the file will be changed: the user who owns it (\fBu\fP), other
+users in the file's group (\fBg\fP), other users not in the file's
+group (\fBo\fP), or all users (\fBa\fP). If none of these are given,
+the effect is as if \fBa\fP were
+given, but bits that are set in the umask are not affected.
+.PP
+The operator \fB+\fP causes the selected file mode bits to be added to
+the existing file mode bits of each file; \fB-\fP causes them to be
+removed; and \fB=\fP causes them to be added and causes unmentioned
+bits to be removed except that a directory's unmentioned set user and
+group ID bits are not affected.
+.PP
+The letters \fBrwxXst\fP select file mode bits for the affected users:
+read (\fBr\fP), write (\fBw\fP), execute (or search for directories)
+(\fBx\fP), execute/search only if the file is a directory or already
+has execute permission for some user (\fBX\fP), set user or group ID
+on execution (\fBs\fP), restricted deletion flag or sticky bit
+(\fBt\fP). Instead of one or more of these letters, you can specify
+exactly one of the letters \fBugo\fP: the permissions granted to the
+user who owns the file (\fBu\fP), the permissions granted to other
+users who are members of the file's group (\fBg\fP),
+and the permissions granted to users that are in neither of the two preceding
+categories (\fBo\fP).
+.PP
+A numeric mode is from one to four octal digits (0\-7), derived by
+adding up the bits with values 4, 2, and 1. Omitted digits are
+assumed to be leading zeros, except that if the first digit is
+omitted, a directory's set user and group ID bits are not affected.
+The first digit selects the set user ID (4) and set group ID (2) and
+restricted deletion or sticky (1) attributes. The second digit
+selects permissions for the user who owns the file: read (4), write (2),
+and execute (1); the third selects permissions for other users in the
+file's group, with the same values; and the fourth for other users not
+in the file's group, with the same values.
+.PP
+.B chmod
+never changes the permissions of symbolic links; the
+.B chmod
+system call cannot change their permissions. This is not a problem
+since the permissions of symbolic links are never used.
+However, for each symbolic link listed on the command line,
+.B chmod
+changes the permissions of the pointed-to file.
+In contrast,
+.B chmod
+ignores symbolic links encountered during recursive directory
+traversals.
+.SH "RESTRICTED DELETION FLAG OR STICKY BIT"
+The restricted deletion flag or sticky bit is a single bit, whose
+interpretation depends on the file type. For directories, it prevents
+unprivileged users from removing or renaming a file in the directory
+unless they own the file or the directory; this is called the
+.I "restricted deletion flag"
+for the directory, and is commonly found on world-writable directories
+like \fB/tmp\fP. For regular files on some older systems, the bit
+saves the program's text image on the swap device so it will load more
+quickly when run; this is called the
+.IR "sticky bit" .
+.SH OPTIONS
+[SEE ALSO]
+chmod(2)
diff --git a/man/chown.1 b/man/chown.1
new file mode 100644
index 0000000..fd9e54f
--- /dev/null
+++ b/man/chown.1
@@ -0,0 +1,130 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH CHOWN "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+chown \- change file owner and group
+.SH SYNOPSIS
+.B chown
+[\fIOPTION\fR]... [\fIOWNER\fR][\fI:\fR[\fIGROUP\fR]] \fIFILE\fR...
+.br
+.B chown
+[\fIOPTION\fR]... \fI--reference=RFILE FILE\fR...
+.SH DESCRIPTION
+This manual page
+documents the GNU version of
+.BR chown .
+.B chown
+changes the user and/or group ownership of each given file. If
+only an owner (a user name or numeric user ID) is given, that user is made the
+owner of each given file, and the files' group is not changed. If the
+owner is followed by a colon and a group name (or numeric group ID),
+with no spaces between them, the group ownership of the files is
+changed as well. If a colon but no group name follows the user name,
+that user is made the owner of the files and the group of the files is
+changed to that user's login group. If the colon and group are given,
+but the owner is omitted, only the group of the files is changed;
+in this case,
+.B chown
+performs the same function as
+.BR chgrp .
+If only a colon is given, or if the entire operand is empty, neither the
+owner nor the group is changed.
+.SH OPTIONS
+.PP
+Change the owner and/or group of each FILE to OWNER and/or GROUP.
+With \fB\-\-reference\fR, change the owner and group of each FILE to those of RFILE.
+.TP
+\fB\-c\fR, \fB\-\-changes\fR
+like verbose but report only when a change is made
+.TP
+\fB\-\-dereference\fR
+affect the referent of each symbolic link (this is
+the default), rather than the symbolic link itself
+.TP
+\fB\-h\fR, \fB\-\-no\-dereference\fR
+affect each symbolic link instead of any referenced
+file (useful only on systems that can change the
+ownership of a symlink)
+.TP
+\fB\-\-from\fR=\fICURRENT_OWNER\fR:CURRENT_GROUP
+change the owner and/or group of each file only if
+its current owner and/or group match those specified
+here. Either may be omitted, in which case a match
+is not required for the omitted attribute.
+.TP
+\fB\-\-no\-preserve\-root\fR
+do not treat `/' specially (the default)
+.TP
+\fB\-\-preserve\-root\fR
+fail to operate recursively on `/'
+.TP
+\fB\-f\fR, \fB\-\-silent\fR, \fB\-\-quiet\fR
+suppress most error messages
+.TP
+\fB\-\-reference\fR=\fIRFILE\fR
+use RFILE's owner and group rather than
+specifying OWNER:GROUP values
+.TP
+\fB\-R\fR, \fB\-\-recursive\fR
+operate on files and directories recursively
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+output a diagnostic for every file processed
+.PP
+The following options modify how a hierarchy is traversed when the \fB\-R\fR
+option is also specified. If more than one is specified, only the final
+one takes effect.
+.TP
+\fB\-H\fR
+if a command line argument is a symbolic link
+to a directory, traverse it
+.TP
+\fB\-L\fR
+traverse every symbolic link to a directory
+encountered
+.TP
+\fB\-P\fR
+do not traverse any symbolic links (default)
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Owner is unchanged if missing. Group is unchanged if missing, but changed
+to login group if implied by a `:' following a symbolic OWNER.
+OWNER and GROUP may be numeric as well as symbolic.
+.SH EXAMPLES
+.TP
+chown root /u
+Change the owner of /u to "root".
+.TP
+chown root:staff /u
+Likewise, but also change its group to "staff".
+.TP
+chown \fB\-hR\fR root /u
+Change the owner of /u and subfiles to "root".
+.SH AUTHOR
+Written by David MacKenzie and Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+chown(2)
+.PP
+The full documentation for
+.B chown
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B chown
+programs are properly installed at your site, the command
+.IP
+.B info chown
+.PP
+should give you access to the complete manual.
diff --git a/man/chown.x b/man/chown.x
new file mode 100644
index 0000000..57ad05a
--- /dev/null
+++ b/man/chown.x
@@ -0,0 +1,30 @@
+'\" Copyright (C) 1998, 1999, 2001, 2006 Free Software Foundation, Inc.
+'\"
+'\" This is free software. You may redistribute copies of it under the terms
+'\" of the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+'\" There is NO WARRANTY, to the extent permitted by law.
+[NAME]
+chown \- change file owner and group
+[DESCRIPTION]
+This manual page
+documents the GNU version of
+.BR chown .
+.B chown
+changes the user and/or group ownership of each given file. If
+only an owner (a user name or numeric user ID) is given, that user is made the
+owner of each given file, and the files' group is not changed. If the
+owner is followed by a colon and a group name (or numeric group ID),
+with no spaces between them, the group ownership of the files is
+changed as well. If a colon but no group name follows the user name,
+that user is made the owner of the files and the group of the files is
+changed to that user's login group. If the colon and group are given,
+but the owner is omitted, only the group of the files is changed;
+in this case,
+.B chown
+performs the same function as
+.BR chgrp .
+If only a colon is given, or if the entire operand is empty, neither the
+owner nor the group is changed.
+.SH OPTIONS
+[SEE ALSO]
+chown(2)
diff --git a/man/chroot.1 b/man/chroot.1
new file mode 100644
index 0000000..38c8029
--- /dev/null
+++ b/man/chroot.1
@@ -0,0 +1,46 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH CHROOT "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+chroot \- run command or interactive shell with special root directory
+.SH SYNOPSIS
+.B chroot
+\fINEWROOT \fR[\fICOMMAND\fR...]
+.br
+.B chroot
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Run COMMAND with root directory set to NEWROOT.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+If no command is given, run ``${SHELL} \fB\-i\fR'' (default: /bin/sh).
+.SH AUTHOR
+Written by Roland McGrath.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+chroot(2)
+.PP
+The full documentation for
+.B chroot
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B chroot
+programs are properly installed at your site, the command
+.IP
+.B info chroot
+.PP
+should give you access to the complete manual.
diff --git a/man/chroot.x b/man/chroot.x
new file mode 100644
index 0000000..fc1be52
--- /dev/null
+++ b/man/chroot.x
@@ -0,0 +1,6 @@
+[NAME]
+chroot \- run command or interactive shell with special root directory
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+chroot(2)
diff --git a/man/cksum.1 b/man/cksum.1
new file mode 100644
index 0000000..dae95d8
--- /dev/null
+++ b/man/cksum.1
@@ -0,0 +1,42 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH CKSUM "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+cksum \- checksum and count the bytes in a file
+.SH SYNOPSIS
+.B cksum
+[\fIFILE\fR]...
+.br
+.B cksum
+[\fIOPTION\fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print CRC checksum and byte counts of each FILE.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Q. Frank Xia.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B cksum
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B cksum
+programs are properly installed at your site, the command
+.IP
+.B info cksum
+.PP
+should give you access to the complete manual.
diff --git a/man/cksum.x b/man/cksum.x
new file mode 100644
index 0000000..b70a5c4
--- /dev/null
+++ b/man/cksum.x
@@ -0,0 +1,4 @@
+[NAME]
+cksum \- checksum and count the bytes in a file
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/comm.1 b/man/comm.1
new file mode 100644
index 0000000..252aafd
--- /dev/null
+++ b/man/comm.1
@@ -0,0 +1,52 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH COMM "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+comm \- compare two sorted files line by line
+.SH SYNOPSIS
+.B comm
+[\fIOPTION\fR]... \fIFILE1 FILE2\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Compare sorted files FILE1 and FILE2 line by line.
+.PP
+With no options, produce three\-column output. Column one contains
+lines unique to FILE1, column two contains lines unique to FILE2,
+and column three contains lines common to both files.
+.TP
+\fB\-1\fR
+suppress lines unique to FILE1
+.TP
+\fB\-2\fR
+suppress lines unique to FILE2
+.TP
+\fB\-3\fR
+suppress lines that appear in both files
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Richard Stallman and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B comm
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B comm
+programs are properly installed at your site, the command
+.IP
+.B info comm
+.PP
+should give you access to the complete manual.
diff --git a/man/comm.x b/man/comm.x
new file mode 100644
index 0000000..dfc8480
--- /dev/null
+++ b/man/comm.x
@@ -0,0 +1,4 @@
+[NAME]
+comm \- compare two sorted files line by line
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/cp.1 b/man/cp.1
new file mode 100644
index 0000000..3a72496
--- /dev/null
+++ b/man/cp.1
@@ -0,0 +1,158 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH CP "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+cp \- copy files and directories
+.SH SYNOPSIS
+.B cp
+[\fIOPTION\fR]... [\fI-T\fR] \fISOURCE DEST\fR
+.br
+.B cp
+[\fIOPTION\fR]... \fISOURCE\fR... \fIDIRECTORY\fR
+.br
+.B cp
+[\fIOPTION\fR]... \fI-t DIRECTORY SOURCE\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-a\fR, \fB\-\-archive\fR
+same as \fB\-dpPR\fR
+.TP
+\fB\-\-backup\fR[=\fICONTROL\fR]
+make a backup of each existing destination file
+.TP
+\fB\-b\fR
+like \fB\-\-backup\fR but does not accept an argument
+.TP
+\fB\-\-copy\-contents\fR
+copy contents of special files when recursive
+.TP
+\fB\-d\fR
+same as \fB\-\-no\-dereference\fR \fB\-\-preserve\fR=\fIlink\fR
+.TP
+\fB\-f\fR, \fB\-\-force\fR
+if an existing destination file cannot be
+opened, remove it and try again
+.TP
+\fB\-i\fR, \fB\-\-interactive\fR
+prompt before overwrite
+.TP
+\fB\-H\fR
+follow command\-line symbolic links
+.TP
+\fB\-l\fR, \fB\-\-link\fR
+link files instead of copying
+.TP
+\fB\-L\fR, \fB\-\-dereference\fR
+always follow symbolic links
+.TP
+\fB\-P\fR, \fB\-\-no\-dereference\fR
+never follow symbolic links
+.TP
+\fB\-p\fR
+same as \fB\-\-preserve\fR=\fImode\fR,ownership,timestamps
+.TP
+\fB\-\-preserve\fR[=\fIATTR_LIST\fR]
+preserve the specified attributes (default:
+mode,ownership,timestamps), if possible
+additional attributes: links, all
+.TP
+\fB\-\-no\-preserve\fR=\fIATTR_LIST\fR
+don't preserve the specified attributes
+.TP
+\fB\-\-parents\fR
+use full source file name under DIRECTORY
+.TP
+\fB\-R\fR, \fB\-r\fR, \fB\-\-recursive\fR
+copy directories recursively
+.TP
+\fB\-\-remove\-destination\fR
+remove each existing destination file before
+attempting to open it (contrast with \fB\-\-force\fR)
+.TP
+\fB\-\-sparse\fR=\fIWHEN\fR
+control creation of sparse files
+.TP
+\fB\-\-strip\-trailing\-slashes\fR
+remove any trailing slashes from each SOURCE
+argument
+.TP
+\fB\-s\fR, \fB\-\-symbolic\-link\fR
+make symbolic links instead of copying
+.TP
+\fB\-S\fR, \fB\-\-suffix\fR=\fISUFFIX\fR
+override the usual backup suffix
+.TP
+\fB\-t\fR, \fB\-\-target\-directory\fR=\fIDIRECTORY\fR
+copy all SOURCE arguments into DIRECTORY
+.TP
+\fB\-T\fR, \fB\-\-no\-target\-directory\fR
+treat DEST as a normal file
+.TP
+\fB\-u\fR, \fB\-\-update\fR
+copy only when the SOURCE file is newer
+than the destination file or when the
+destination file is missing
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+explain what is being done
+.TP
+\fB\-x\fR, \fB\-\-one\-file\-system\fR
+stay on this file system
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+By default, sparse SOURCE files are detected by a crude heuristic and the
+corresponding DEST file is made sparse as well. That is the behavior
+selected by \fB\-\-sparse\fR=\fIauto\fR. Specify \fB\-\-sparse\fR=\fIalways\fR to create a sparse DEST
+file whenever the SOURCE file contains a long enough sequence of zero bytes.
+Use \fB\-\-sparse\fR=\fInever\fR to inhibit creation of sparse files.
+.PP
+The backup suffix is `~', unless set with \fB\-\-suffix\fR or SIMPLE_BACKUP_SUFFIX.
+The version control method may be selected via the \fB\-\-backup\fR option or through
+the VERSION_CONTROL environment variable. Here are the values:
+.TP
+none, off
+never make backups (even if \fB\-\-backup\fR is given)
+.TP
+numbered, t
+make numbered backups
+.TP
+existing, nil
+numbered if numbered backups exist, simple otherwise
+.TP
+simple, never
+always make simple backups
+.PP
+As a special case, cp makes a backup of SOURCE when the force and backup
+options are given and SOURCE and DEST are the same name for an existing,
+regular file.
+.SH AUTHOR
+Written by Torbjorn Granlund, David MacKenzie, and Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B cp
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B cp
+programs are properly installed at your site, the command
+.IP
+.B info cp
+.PP
+should give you access to the complete manual.
diff --git a/man/cp.x b/man/cp.x
new file mode 100644
index 0000000..b26225f
--- /dev/null
+++ b/man/cp.x
@@ -0,0 +1,4 @@
+[NAME]
+cp \- copy files and directories
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/csplit.1 b/man/csplit.1
new file mode 100644
index 0000000..ffd4b54
--- /dev/null
+++ b/man/csplit.1
@@ -0,0 +1,79 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH CSPLIT "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+csplit \- split a file into sections determined by context lines
+.SH SYNOPSIS
+.B csplit
+[\fIOPTION\fR]... \fIFILE PATTERN\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,
+and output byte counts of each piece to standard output.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-b\fR, \fB\-\-suffix\-format\fR=\fIFORMAT\fR
+use sprintf FORMAT instead of %02d
+.TP
+\fB\-f\fR, \fB\-\-prefix\fR=\fIPREFIX\fR
+use PREFIX instead of `xx'
+.TP
+\fB\-k\fR, \fB\-\-keep\-files\fR
+do not remove output files on errors
+.TP
+\fB\-n\fR, \fB\-\-digits\fR=\fIDIGITS\fR
+use specified number of digits instead of 2
+.TP
+\fB\-s\fR, \fB\-\-quiet\fR, \fB\-\-silent\fR
+do not print counts of output file sizes
+.TP
+\fB\-z\fR, \fB\-\-elide\-empty\-files\fR
+remove empty output files
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Read standard input if FILE is \-. Each PATTERN may be:
+.TP
+INTEGER
+copy up to but not including specified line number
+.TP
+/REGEXP/[OFFSET]
+copy up to but not including a matching line
+.TP
+%REGEXP%[OFFSET]
+skip to, but not including a matching line
+.TP
+{INTEGER}
+repeat the previous pattern specified number of times
+.TP
+{*}
+repeat the previous pattern as many times as possible
+.PP
+A line OFFSET is a required `+' or `\-' followed by a positive integer.
+.SH AUTHOR
+Written by Stuart Kemp and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B csplit
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B csplit
+programs are properly installed at your site, the command
+.IP
+.B info csplit
+.PP
+should give you access to the complete manual.
diff --git a/man/csplit.x b/man/csplit.x
new file mode 100644
index 0000000..dc19d89
--- /dev/null
+++ b/man/csplit.x
@@ -0,0 +1,4 @@
+[NAME]
+csplit \- split a file into sections determined by context lines
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/cut.1 b/man/cut.1
new file mode 100644
index 0000000..1424029
--- /dev/null
+++ b/man/cut.1
@@ -0,0 +1,88 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH CUT "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+cut \- remove sections from each line of files
+.SH SYNOPSIS
+.B cut
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print selected parts of lines from each FILE to standard output.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-b\fR, \fB\-\-bytes\fR=\fILIST\fR
+select only these bytes
+.TP
+\fB\-c\fR, \fB\-\-characters\fR=\fILIST\fR
+select only these characters
+.TP
+\fB\-d\fR, \fB\-\-delimiter\fR=\fIDELIM\fR
+use DELIM instead of TAB for field delimiter
+.TP
+\fB\-f\fR, \fB\-\-fields\fR=\fILIST\fR
+select only these fields; also print any line
+that contains no delimiter character, unless
+the \fB\-s\fR option is specified
+.TP
+\fB\-n\fR
+(ignored)
+.TP
+\fB\-\-complement\fR
+complement the set of selected bytes, characters
+or fields.
+.TP
+\fB\-s\fR, \fB\-\-only\-delimited\fR
+do not print lines not containing delimiters
+.TP
+\fB\-\-output\-delimiter\fR=\fISTRING\fR
+use STRING as the output delimiter
+the default is to use the input delimiter
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Use one, and only one of \fB\-b\fR, \fB\-c\fR or \fB\-f\fR. Each LIST is made up of one
+range, or many ranges separated by commas. Selected input is written
+in the same order that it is read, and is written exactly once.
+Each range is one of:
+.TP
+N
+N'th byte, character or field, counted from 1
+.TP
+N\-
+from N'th byte, character or field, to end of line
+.TP
+N\-M
+from N'th to M'th (included) byte, character or field
+.TP
+\fB\-M\fR
+from first to M'th (included) byte, character or field
+.PP
+With no FILE, or when FILE is \-, read standard input.
+.SH AUTHOR
+Written by David Ihnat, David MacKenzie, and Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B cut
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B cut
+programs are properly installed at your site, the command
+.IP
+.B info cut
+.PP
+should give you access to the complete manual.
diff --git a/man/cut.x b/man/cut.x
new file mode 100644
index 0000000..fd09338
--- /dev/null
+++ b/man/cut.x
@@ -0,0 +1,4 @@
+[NAME]
+cut \- remove sections from each line of files
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/date.1 b/man/date.1
new file mode 100644
index 0000000..b88152d
--- /dev/null
+++ b/man/date.1
@@ -0,0 +1,229 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH DATE "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+date \- print or set the system date and time
+.SH SYNOPSIS
+.B date
+[\fIOPTION\fR]... [\fI+FORMAT\fR]
+.br
+.B date
+[\fI-u|--utc|--universal\fR] [\fIMMDDhhmm\fR[[\fICC\fR]\fIYY\fR][\fI.ss\fR]]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Display the current time in the given FORMAT, or set the system date.
+.TP
+\fB\-d\fR, \fB\-\-date\fR=\fISTRING\fR
+display time described by STRING, not `now'
+.TP
+\fB\-f\fR, \fB\-\-file\fR=\fIDATEFILE\fR
+like \fB\-\-date\fR once for each line of DATEFILE
+.TP
+\fB\-r\fR, \fB\-\-reference\fR=\fIFILE\fR
+display the last modification time of FILE
+.TP
+\fB\-R\fR, \fB\-\-rfc\-2822\fR
+output date and time in RFC 2822 format.
+Example: Mon, 07 Aug 2006 12:34:56 \fB\-0600\fR
+.TP
+\fB\-\-rfc\-3339\fR=\fITIMESPEC\fR
+output date and time in RFC 3339 format.
+TIMESPEC=`date', `seconds', or `ns' for
+date and time to the indicated precision.
+Date and time components are separated by
+a single space: 2006\-08\-07 12:34:56\-06:00
+.TP
+\fB\-s\fR, \fB\-\-set\fR=\fISTRING\fR
+set time described by STRING
+.TP
+\fB\-u\fR, \fB\-\-utc\fR, \fB\-\-universal\fR
+print or set Coordinated Universal Time
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+FORMAT controls the output. The only valid option for the second form
+specifies Coordinated Universal Time. Interpreted sequences are:
+.TP
+%%
+a literal %
+.TP
+%a
+locale's abbreviated weekday name (e.g., Sun)
+.TP
+%A
+locale's full weekday name (e.g., Sunday)
+.TP
+%b
+locale's abbreviated month name (e.g., Jan)
+.TP
+%B
+locale's full month name (e.g., January)
+.TP
+%c
+locale's date and time (e.g., Thu Mar 3 23:05:25 2005)
+.TP
+%C
+century; like %Y, except omit last two digits (e.g., 21)
+.TP
+%d
+day of month (e.g, 01)
+.TP
+%D
+date; same as %m/%d/%y
+.TP
+%e
+day of month, space padded; same as %_d
+.TP
+%F
+full date; same as %Y\-%m\-%d
+.TP
+%g
+last two digits of year of ISO week number (see %G)
+.TP
+%G
+year of ISO week number (see %V); normally useful only with %V
+.TP
+%h
+same as %b
+.TP
+%H
+hour (00..23)
+.TP
+%I
+hour (01..12)
+.TP
+%j
+day of year (001..366)
+.TP
+%k
+hour ( 0..23)
+.TP
+%l
+hour ( 1..12)
+.TP
+%m
+month (01..12)
+.TP
+%M
+minute (00..59)
+.TP
+%n
+a newline
+.TP
+%N
+nanoseconds (000000000..999999999)
+.TP
+%p
+locale's equivalent of either AM or PM; blank if not known
+.TP
+%P
+like %p, but lower case
+.TP
+%r
+locale's 12\-hour clock time (e.g., 11:11:04 PM)
+.TP
+%R
+24\-hour hour and minute; same as %H:%M
+.TP
+%s
+seconds since 1970\-01\-01 00:00:00 UTC
+.TP
+%S
+second (00..60)
+.TP
+%t
+a tab
+.TP
+%T
+time; same as %H:%M:%S
+.TP
+%u
+day of week (1..7); 1 is Monday
+.TP
+%U
+week number of year, with Sunday as first day of week (00..53)
+.TP
+%V
+ISO week number, with Monday as first day of week (01..53)
+.TP
+%w
+day of week (0..6); 0 is Sunday
+.TP
+%W
+week number of year, with Monday as first day of week (00..53)
+.TP
+%x
+locale's date representation (e.g., 12/31/99)
+.TP
+%X
+locale's time representation (e.g., 23:13:48)
+.TP
+%y
+last two digits of year (00..99)
+.TP
+%Y
+year
+.TP
+%z
++hhmm numeric timezone (e.g., \fB\-0400\fR)
+.TP
+%:z
++hh:mm numeric timezone (e.g., \fB\-04\fR:00)
+.TP
+%::z
++hh:mm:ss numeric time zone (e.g., \fB\-04\fR:00:00)
+.TP
+%:::z
+numeric time zone with : to necessary precision (e.g., \fB\-04\fR, +05:30)
+.TP
+%Z
+alphabetic time zone abbreviation (e.g., EDT)
+.PP
+By default, date pads numeric fields with zeroes.
+The following optional flags may follow `%':
+.TP
+\-
+(hyphen) do not pad the field
+.TP
+_
+(underscore) pad with spaces
+.TP
+0
+(zero) pad with zeros
+.TP
+^
+use upper case if possible
+.TP
+#
+use opposite case if possible
+.PP
+After any flags comes an optional field width, as a decimal number;
+then an optional modifier, which is either
+E to use the locale's alternate representations if available, or
+O to use the locale's alternate numeric symbols if available.
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B date
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B date
+programs are properly installed at your site, the command
+.IP
+.B info date
+.PP
+should give you access to the complete manual.
diff --git a/man/date.x b/man/date.x
new file mode 100644
index 0000000..bae08ac
--- /dev/null
+++ b/man/date.x
@@ -0,0 +1,4 @@
+[NAME]
+date \- print or set the system date and time
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/dd.1 b/man/dd.1
new file mode 100644
index 0000000..bd5a74a
--- /dev/null
+++ b/man/dd.1
@@ -0,0 +1,162 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH DD "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+dd \- convert and copy a file
+.SH SYNOPSIS
+.B dd
+[\fIOPERAND\fR]...
+.br
+.B dd
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Copy a file, converting and formatting according to the operands.
+.TP
+bs=BYTES
+force ibs=BYTES and obs=BYTES
+.TP
+cbs=BYTES
+convert BYTES bytes at a time
+.TP
+conv=CONVS
+convert the file as per the comma separated symbol list
+.TP
+count=BLOCKS
+copy only BLOCKS input blocks
+.TP
+ibs=BYTES
+read BYTES bytes at a time
+.TP
+if=FILE
+read from FILE instead of stdin
+.TP
+iflag=FLAGS
+read as per the comma separated symbol list
+.TP
+obs=BYTES
+write BYTES bytes at a time
+.TP
+of=FILE
+write to FILE instead of stdout
+.TP
+oflag=FLAGS
+write as per the comma separated symbol list
+.TP
+seek=BLOCKS
+skip BLOCKS obs\-sized blocks at start of output
+.TP
+skip=BLOCKS
+skip BLOCKS ibs\-sized blocks at start of input
+.TP
+status=noxfer
+suppress transfer statistics
+.PP
+BLOCKS and BYTES may be followed by the following multiplicative suffixes:
+xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,
+GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.
+.PP
+Each CONV symbol may be:
+.TP
+ascii
+from EBCDIC to ASCII
+.TP
+ebcdic
+from ASCII to EBCDIC
+.TP
+ibm
+from ASCII to alternate EBCDIC
+.TP
+block
+pad newline\-terminated records with spaces to cbs\-size
+.TP
+unblock
+replace trailing spaces in cbs\-size records with newline
+.TP
+lcase
+change upper case to lower case
+.TP
+nocreat
+do not create the output file
+.TP
+excl
+fail if the output file already exists
+.TP
+notrunc
+do not truncate the output file
+.TP
+ucase
+change lower case to upper case
+.TP
+swab
+swap every pair of input bytes
+.TP
+noerror
+continue after read errors
+.TP
+sync
+pad every input block with NULs to ibs\-size; when used
+with block or unblock, pad with spaces rather than NULs
+.TP
+fdatasync
+physically write output file data before finishing
+.TP
+fsync
+likewise, but also write metadata
+.PP
+Each FLAG symbol may be:
+.TP
+append
+append mode (makes sense only for output; conv=notrunc suggested)
+.TP
+direct
+use direct I/O for data
+.IP
+directory fail unless a directory
+dsync use synchronized I/O for data
+sync likewise, but also for metadata
+nonblock use non\-blocking I/O
+noatime do not update access time
+noctty do not assign controlling terminal from file
+nofollow do not follow symlinks
+.PP
+Sending a USR1 signal to a running `dd' process makes it
+print I/O statistics to standard error and then resume copying.
+.IP
+\f(CW$ dd if=/dev/zero of=/dev/null& pid=$!\fR
+.br
+\f(CW$ kill -USR1 $pid; sleep 1; kill $pid\fR
+.IP
+18335302+0 records in
+18335302+0 records out
+9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s
+.PP
+Options are:
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Paul Rubin, David MacKenzie, and Stuart Kemp.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B dd
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B dd
+programs are properly installed at your site, the command
+.IP
+.B info dd
+.PP
+should give you access to the complete manual.
diff --git a/man/dd.x b/man/dd.x
new file mode 100644
index 0000000..bc92af5
--- /dev/null
+++ b/man/dd.x
@@ -0,0 +1,4 @@
+[NAME]
+dd \- convert and copy a file
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/df.1 b/man/df.1
new file mode 100644
index 0000000..4ee8dc8
--- /dev/null
+++ b/man/df.1
@@ -0,0 +1,108 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH DF "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+df \- report file system disk space usage
+.SH SYNOPSIS
+.B df
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+This manual page
+documents the GNU version of
+.BR df .
+.B df
+displays the amount of disk space available on the file system
+containing each file name argument. If no file name is given, the
+space available on all currently mounted file systems is shown. Disk
+space is shown in 1K blocks by default, unless the environment
+variable POSIXLY_CORRECT is set, in which case 512-byte blocks are
+used.
+.PP
+If an argument is the absolute file name of a disk device node containing a
+mounted file system,
+.B df
+shows the space available on that file system rather than on the
+file system containing the device node (which is always the root
+file system). This version of
+.B df
+cannot show the space available on unmounted file systems, because on
+most kinds of systems doing so requires very nonportable intimate
+knowledge of file system structures.
+.SH OPTIONS
+.PP
+Show information about the file system on which each FILE resides,
+or all file systems by default.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-a\fR, \fB\-\-all\fR
+include dummy file systems
+.TP
+\fB\-B\fR, \fB\-\-block\-size\fR=\fISIZE\fR
+use SIZE\-byte blocks
+.TP
+\fB\-h\fR, \fB\-\-human\-readable\fR
+print sizes in human readable format (e.g., 1K 234M 2G)
+.TP
+\fB\-H\fR, \fB\-\-si\fR
+likewise, but use powers of 1000 not 1024
+.TP
+\fB\-i\fR, \fB\-\-inodes\fR
+list inode information instead of block usage
+.TP
+\fB\-k\fR
+like \fB\-\-block\-size\fR=\fI1K\fR
+.TP
+\fB\-l\fR, \fB\-\-local\fR
+limit listing to local file systems
+.TP
+\fB\-\-no\-sync\fR
+do not invoke sync before getting usage info (default)
+.TP
+\fB\-P\fR, \fB\-\-portability\fR
+use the POSIX output format
+.TP
+\fB\-\-sync\fR
+invoke sync before getting usage info
+.TP
+\fB\-t\fR, \fB\-\-type\fR=\fITYPE\fR
+limit listing to file systems of type TYPE
+.TP
+\fB\-T\fR, \fB\-\-print\-type\fR
+print file system type
+.TP
+\fB\-x\fR, \fB\-\-exclude\-type\fR=\fITYPE\fR
+limit listing to file systems not of type TYPE
+.TP
+\fB\-v\fR
+(ignored)
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+SIZE may be (or may be an integer optionally followed by) one of following:
+kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.
+.SH AUTHOR
+Written by Torbjorn Granlund, David MacKenzie, and Paul Eggert.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B df
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B df
+programs are properly installed at your site, the command
+.IP
+.B info df
+.PP
+should give you access to the complete manual.
diff --git a/man/df.x b/man/df.x
new file mode 100644
index 0000000..6a8b368
--- /dev/null
+++ b/man/df.x
@@ -0,0 +1,30 @@
+'\" Copyright (C) 1998, 1999, 2004 Free Software Foundation, Inc.
+'\"
+'\" This is free software. You may redistribute copies of it under the terms
+'\" of the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+'\" There is NO WARRANTY, to the extent permitted by law.
+[NAME]
+df \- report file system disk space usage
+[DESCRIPTION]
+This manual page
+documents the GNU version of
+.BR df .
+.B df
+displays the amount of disk space available on the file system
+containing each file name argument. If no file name is given, the
+space available on all currently mounted file systems is shown. Disk
+space is shown in 1K blocks by default, unless the environment
+variable POSIXLY_CORRECT is set, in which case 512-byte blocks are
+used.
+.PP
+If an argument is the absolute file name of a disk device node containing a
+mounted file system,
+.B df
+shows the space available on that file system rather than on the
+file system containing the device node (which is always the root
+file system). This version of
+.B df
+cannot show the space available on unmounted file systems, because on
+most kinds of systems doing so requires very nonportable intimate
+knowledge of file system structures.
+.SH OPTIONS
diff --git a/man/dir.1 b/man/dir.1
new file mode 100644
index 0000000..71642a5
--- /dev/null
+++ b/man/dir.1
@@ -0,0 +1,247 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH DIR "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+dir \- list directory contents
+.SH SYNOPSIS
+.B dir
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+List information about the FILEs (the current directory by default).
+Sort entries alphabetically if none of \fB\-cftuvSUX\fR nor \fB\-\-sort\fR.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-a\fR, \fB\-\-all\fR
+do not ignore entries starting with .
+.TP
+\fB\-A\fR, \fB\-\-almost\-all\fR
+do not list implied . and ..
+.TP
+\fB\-\-author\fR
+with \fB\-l\fR, print the author of each file
+.TP
+\fB\-b\fR, \fB\-\-escape\fR
+print octal escapes for nongraphic characters
+.TP
+\fB\-\-block\-size\fR=\fISIZE\fR
+use SIZE\-byte blocks
+.TP
+\fB\-B\fR, \fB\-\-ignore\-backups\fR
+do not list implied entries ending with ~
+.TP
+\fB\-c\fR
+with \fB\-lt\fR: sort by, and show, ctime (time of last
+modification of file status information)
+with \fB\-l\fR: show ctime and sort by name
+otherwise: sort by ctime
+.TP
+\fB\-C\fR
+list entries by columns
+.TP
+\fB\-\-color\fR[=\fIWHEN\fR]
+control whether color is used to distinguish file
+types. WHEN may be `never', `always', or `auto'
+.TP
+\fB\-d\fR, \fB\-\-directory\fR
+list directory entries instead of contents,
+and do not dereference symbolic links
+.TP
+\fB\-D\fR, \fB\-\-dired\fR
+generate output designed for Emacs' dired mode
+.TP
+\fB\-f\fR
+do not sort, enable \fB\-aU\fR, disable \fB\-ls\fR \fB\-\-color\fR
+.TP
+\fB\-F\fR, \fB\-\-classify\fR
+append indicator (one of */=>@|) to entries
+.TP
+\fB\-\-file\-type\fR
+likewise, except do not append `*'
+.TP
+\fB\-\-format\fR=\fIWORD\fR
+across \fB\-x\fR, commas \fB\-m\fR, horizontal \fB\-x\fR, long \fB\-l\fR,
+single\-column \fB\-1\fR, verbose \fB\-l\fR, vertical \fB\-C\fR
+.TP
+\fB\-\-full\-time\fR
+like \fB\-l\fR \fB\-\-time\-style\fR=\fIfull\-iso\fR
+.TP
+\fB\-g\fR
+like \fB\-l\fR, but do not list owner
+.TP
+\fB\-\-group\-directories\-first\fR
+group directories before files
+.TP
+\fB\-G\fR, \fB\-\-no\-group\fR
+in a long listing, don't print group names
+.TP
+\fB\-h\fR, \fB\-\-human\-readable\fR
+with \fB\-l\fR, print sizes in human readable format
+(e.g., 1K 234M 2G)
+.TP
+\fB\-\-si\fR
+likewise, but use powers of 1000 not 1024
+.TP
+\fB\-H\fR, \fB\-\-dereference\-command\-line\fR
+follow symbolic links listed on the command line
+.TP
+\fB\-\-dereference\-command\-line\-symlink\-to\-dir\fR
+follow each command line symbolic link
+that points to a directory
+.TP
+\fB\-\-hide\fR=\fIPATTERN\fR
+do not list implied entries matching shell PATTERN
+(overridden by \fB\-a\fR or \fB\-A\fR)
+.TP
+\fB\-\-indicator\-style\fR=\fIWORD\fR
+append indicator with style WORD to entry names:
+none (default), slash (\fB\-p\fR),
+file\-type (\fB\-\-file\-type\fR), classify (\fB\-F\fR)
+.TP
+\fB\-i\fR, \fB\-\-inode\fR
+print the index number of each file
+.TP
+\fB\-I\fR, \fB\-\-ignore\fR=\fIPATTERN\fR
+do not list implied entries matching shell PATTERN
+.TP
+\fB\-k\fR
+like \fB\-\-block\-size\fR=\fI1K\fR
+.TP
+\fB\-l\fR
+use a long listing format
+.TP
+\fB\-L\fR, \fB\-\-dereference\fR
+when showing file information for a symbolic
+link, show information for the file the link
+references rather than for the link itself
+.TP
+\fB\-m\fR
+fill width with a comma separated list of entries
+.TP
+\fB\-n\fR, \fB\-\-numeric\-uid\-gid\fR
+like \fB\-l\fR, but list numeric user and group IDs
+.TP
+\fB\-N\fR, \fB\-\-literal\fR
+print raw entry names (don't treat e.g. control
+characters specially)
+.TP
+\fB\-o\fR
+like \fB\-l\fR, but do not list group information
+.TP
+\fB\-p\fR, \fB\-\-indicator\-style\fR=\fIslash\fR
+append / indicator to directories
+.TP
+\fB\-q\fR, \fB\-\-hide\-control\-chars\fR
+print ? instead of non graphic characters
+.TP
+\fB\-\-show\-control\-chars\fR
+show non graphic characters as\-is (default
+unless program is `ls' and output is a terminal)
+.TP
+\fB\-Q\fR, \fB\-\-quote\-name\fR
+enclose entry names in double quotes
+.TP
+\fB\-\-quoting\-style\fR=\fIWORD\fR
+use quoting style WORD for entry names:
+literal, locale, shell, shell\-always, c, escape
+.TP
+\fB\-r\fR, \fB\-\-reverse\fR
+reverse order while sorting
+.TP
+\fB\-R\fR, \fB\-\-recursive\fR
+list subdirectories recursively
+.TP
+\fB\-s\fR, \fB\-\-size\fR
+print the size of each file, in blocks
+.TP
+\fB\-S\fR
+sort by file size
+.TP
+\fB\-\-sort\fR=\fIWORD\fR
+sort by WORD instead of name: none \fB\-U\fR,
+extension \fB\-X\fR, size \fB\-S\fR, time \fB\-t\fR, version \fB\-v\fR
+.TP
+\fB\-\-time\fR=\fIWORD\fR
+with \fB\-l\fR, show time as WORD instead of modification
+time: atime \fB\-u\fR, access \fB\-u\fR, use \fB\-u\fR, ctime \fB\-c\fR,
+or status \fB\-c\fR; use specified time as sort key
+if \fB\-\-sort\fR=\fItime\fR
+.TP
+\fB\-\-time\-style\fR=\fISTYLE\fR
+with \fB\-l\fR, show times using style STYLE:
+full\-iso, long\-iso, iso, locale, +FORMAT.
+FORMAT is interpreted like `date'; if FORMAT is
+FORMAT1<newline>FORMAT2, FORMAT1 applies to
+non\-recent files and FORMAT2 to recent files;
+if STYLE is prefixed with `posix\-', STYLE
+takes effect only outside the POSIX locale
+.TP
+\fB\-t\fR
+sort by modification time
+.TP
+\fB\-T\fR, \fB\-\-tabsize\fR=\fICOLS\fR
+assume tab stops at each COLS instead of 8
+.TP
+\fB\-u\fR
+with \fB\-lt\fR: sort by, and show, access time
+with \fB\-l\fR: show access time and sort by name
+otherwise: sort by access time
+.TP
+\fB\-U\fR
+do not sort; list entries in directory order
+.TP
+\fB\-v\fR
+sort by version
+.TP
+\fB\-w\fR, \fB\-\-width\fR=\fICOLS\fR
+assume screen width instead of current value
+.TP
+\fB\-x\fR
+list entries by lines instead of by columns
+.TP
+\fB\-X\fR
+sort alphabetically by entry extension
+.TP
+\fB\-1\fR
+list one file per line
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+SIZE may be (or may be an integer optionally followed by) one of following:
+kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.
+.PP
+By default, color is not used to distinguish types of files. That is
+equivalent to using \fB\-\-color\fR=\fInone\fR. Using the \fB\-\-color\fR option without the
+optional WHEN argument is equivalent to using \fB\-\-color\fR=\fIalways\fR. With
+\fB\-\-color\fR=\fIauto\fR, color codes are output only if standard output is connected
+to a terminal (tty). The environment variable LS_COLORS can influence the
+colors, and can be set easily by the dircolors command.
+.PP
+Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.
+.SH AUTHOR
+Written by Richard Stallman and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B dir
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B dir
+programs are properly installed at your site, the command
+.IP
+.B info dir
+.PP
+should give you access to the complete manual.
diff --git a/man/dir.x b/man/dir.x
new file mode 100644
index 0000000..9ba5e59
--- /dev/null
+++ b/man/dir.x
@@ -0,0 +1,4 @@
+[NAME]
+dir \- list directory contents
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/dircolors.1 b/man/dircolors.1
new file mode 100644
index 0000000..184e3f6
--- /dev/null
+++ b/man/dircolors.1
@@ -0,0 +1,53 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH DIRCOLORS "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+dircolors \- color setup for ls
+.SH SYNOPSIS
+.B dircolors
+[\fIOPTION\fR]... [\fIFILE\fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Output commands to set the LS_COLORS environment variable.
+.SS "Determine format of output:"
+.TP
+\fB\-b\fR, \fB\-\-sh\fR, \fB\-\-bourne\-shell\fR
+output Bourne shell code to set LS_COLORS
+.TP
+\fB\-c\fR, \fB\-\-csh\fR, \fB\-\-c\-shell\fR
+output C shell code to set LS_COLORS
+.TP
+\fB\-p\fR, \fB\-\-print\-database\fR
+output defaults
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+If FILE is specified, read it to determine which colors to use for which
+file types and extensions. Otherwise, a precompiled database is used.
+For details on the format of these files, run `dircolors \fB\-\-print\-database\fR'.
+.SH AUTHOR
+Written by H. Peter Anvin.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B dircolors
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B dircolors
+programs are properly installed at your site, the command
+.IP
+.B info dircolors
+.PP
+should give you access to the complete manual.
diff --git a/man/dircolors.x b/man/dircolors.x
new file mode 100644
index 0000000..fa13247
--- /dev/null
+++ b/man/dircolors.x
@@ -0,0 +1,4 @@
+[NAME]
+dircolors \- color setup for ls
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/dirname.1 b/man/dirname.1
new file mode 100644
index 0000000..aa1d90f
--- /dev/null
+++ b/man/dirname.1
@@ -0,0 +1,52 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH DIRNAME "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+dirname \- strip non-directory suffix from file name
+.SH SYNOPSIS
+.B dirname
+\fINAME\fR
+.br
+.B dirname
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print NAME with its trailing /component removed; if NAME contains no /'s,
+output `.' (meaning the current directory).
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH EXAMPLES
+.TP
+dirname /usr/bin/sort
+Output "/usr/bin".
+.TP
+dirname stdio.h
+Output ".".
+.SH AUTHOR
+Written by David MacKenzie and Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+basename(1), readlink(1)
+.PP
+The full documentation for
+.B dirname
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B dirname
+programs are properly installed at your site, the command
+.IP
+.B info dirname
+.PP
+should give you access to the complete manual.
diff --git a/man/dirname.x b/man/dirname.x
new file mode 100644
index 0000000..2cfa08a
--- /dev/null
+++ b/man/dirname.x
@@ -0,0 +1,6 @@
+[NAME]
+dirname \- strip non-directory suffix from file name
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+basename(1), readlink(1)
diff --git a/man/du.1 b/man/du.1
new file mode 100644
index 0000000..97c197d
--- /dev/null
+++ b/man/du.1
@@ -0,0 +1,153 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH DU "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+du \- estimate file space usage
+.SH SYNOPSIS
+.B du
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.br
+.B du
+[\fIOPTION\fR]... \fI--files0-from=F\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Summarize disk usage of each FILE, recursively for directories.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-a\fR, \fB\-\-all\fR
+write counts for all files, not just directories
+.TP
+\fB\-\-apparent\-size\fR
+print apparent sizes, rather than disk usage; although
+the apparent size is usually smaller, it may be
+larger due to holes in (`sparse') files, internal
+fragmentation, indirect blocks, and the like
+.TP
+\fB\-B\fR, \fB\-\-block\-size\fR=\fISIZE\fR
+use SIZE\-byte blocks
+.TP
+\fB\-b\fR, \fB\-\-bytes\fR
+equivalent to `\-\-apparent\-size \fB\-\-block\-size\fR=\fI1\fR'
+.TP
+\fB\-c\fR, \fB\-\-total\fR
+produce a grand total
+.TP
+\fB\-D\fR, \fB\-\-dereference\-args\fR
+dereference FILEs that are symbolic links
+.TP
+\fB\-\-files0\-from\fR=\fIF\fR
+summarize disk usage of the NUL\-terminated file
+names specified in file F
+.TP
+\fB\-H\fR
+like \fB\-\-si\fR, but also evokes a warning; will soon
+change to be equivalent to \fB\-\-dereference\-args\fR (\fB\-D\fR)
+.TP
+\fB\-h\fR, \fB\-\-human\-readable\fR
+print sizes in human readable format (e.g., 1K 234M 2G)
+.TP
+\fB\-\-si\fR
+like \fB\-h\fR, but use powers of 1000 not 1024
+.TP
+\fB\-k\fR
+like \fB\-\-block\-size\fR=\fI1K\fR
+.TP
+\fB\-l\fR, \fB\-\-count\-links\fR
+count sizes many times if hard linked
+.TP
+\fB\-m\fR
+like \fB\-\-block\-size\fR=\fI1M\fR
+.TP
+\fB\-L\fR, \fB\-\-dereference\fR
+dereference all symbolic links
+.TP
+\fB\-P\fR, \fB\-\-no\-dereference\fR
+don't follow any symbolic links (this is the default)
+.TP
+\fB\-0\fR, \fB\-\-null\fR
+end each output line with 0 byte rather than newline
+.TP
+\fB\-S\fR, \fB\-\-separate\-dirs\fR
+do not include size of subdirectories
+.TP
+\fB\-s\fR, \fB\-\-summarize\fR
+display only a total for each argument
+.TP
+\fB\-x\fR, \fB\-\-one\-file\-system\fR
+skip directories on different file systems
+.TP
+\fB\-X\fR FILE, \fB\-\-exclude\-from\fR=\fIFILE\fR
+Exclude files that match any pattern in FILE.
+.TP
+\fB\-\-exclude\fR=\fIPATTERN\fR
+Exclude files that match PATTERN.
+.TP
+\fB\-\-max\-depth\fR=\fIN\fR
+print the total for a directory (or file, with \fB\-\-all\fR)
+only if it is N or fewer levels below the command
+line argument; \fB\-\-max\-depth\fR=\fI0\fR is the same as
+\fB\-\-summarize\fR
+.TP
+\fB\-\-time\fR
+show time of the last modification of any file in the
+directory, or any of its subdirectories
+.TP
+\fB\-\-time\fR=\fIWORD\fR
+show time as WORD instead of modification time:
+atime, access, use, ctime or status
+.TP
+\fB\-\-time\-style\fR=\fISTYLE\fR
+show times using style STYLE:
+full\-iso, long\-iso, iso, +FORMAT
+FORMAT is interpreted like `date'
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+SIZE may be (or may be an integer optionally followed by) one of following:
+kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.
+.SH PATTERNS
+PATTERN is a shell pattern (not a regular expression). The pattern
+.BR ?
+matches any one character, whereas
+.BR *
+matches any string (composed of zero, one or multiple characters). For
+example,
+.BR *.o
+will match any files whose names end in
+.BR .o .
+Therefore, the command
+.IP
+.B du --exclude='*.o'
+.PP
+will skip all files and subdirectories ending in
+.BR .o
+(including the file
+.BR .o
+itself).
+.SH AUTHOR
+Written by Torbjorn Granlund, David MacKenzie, Paul Eggert, and Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B du
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B du
+programs are properly installed at your site, the command
+.IP
+.B info du
+.PP
+should give you access to the complete manual.
diff --git a/man/du.x b/man/du.x
new file mode 100644
index 0000000..b170369
--- /dev/null
+++ b/man/du.x
@@ -0,0 +1,28 @@
+'\" Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
+'\"
+'\" This is free software. You may redistribute copies of it under the terms
+'\" of the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+'\" There is NO WARRANTY, to the extent permitted by law.
+[NAME]
+du \- estimate file space usage
+[DESCRIPTION]
+.\" Add any additional description here
+[PATTERNS]
+PATTERN is a shell pattern (not a regular expression). The pattern
+.BR ?
+matches any one character, whereas
+.BR *
+matches any string (composed of zero, one or multiple characters). For
+example,
+.BR *.o
+will match any files whose names end in
+.BR .o .
+Therefore, the command
+.IP
+.B du --exclude='*.o'
+.PP
+will skip all files and subdirectories ending in
+.BR .o
+(including the file
+.BR .o
+itself).
diff --git a/man/echo.1 b/man/echo.1
new file mode 100644
index 0000000..95e8e36
--- /dev/null
+++ b/man/echo.1
@@ -0,0 +1,84 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH ECHO "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+echo \- display a line of text
+.SH SYNOPSIS
+.B echo
+[\fIOPTION\fR]... [\fISTRING\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Echo the STRING(s) to standard output.
+.TP
+\fB\-n\fR
+do not output the trailing newline
+.TP
+\fB\-e\fR
+enable interpretation of backslash escapes
+.TP
+\fB\-E\fR
+disable interpretation of backslash escapes (default)
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+If \fB\-e\fR is in effect, the following sequences are recognized:
+.TP
+\e0NNN
+the character whose ASCII code is NNN (octal)
+.TP
+\e\e
+backslash
+.TP
+\ea
+alert (BEL)
+.TP
+\eb
+backspace
+.TP
+\ec
+suppress trailing newline
+.TP
+\ef
+form feed
+.TP
+\en
+new line
+.TP
+\er
+carriage return
+.TP
+\et
+horizontal tab
+.TP
+\ev
+vertical tab
+.PP
+NOTE: your shell may have its own version of echo, which usually supersedes
+the version described here. Please refer to your shell's documentation
+for details about the options it supports.
+.SH AUTHOR
+Written by FIXME unknown.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B echo
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B echo
+programs are properly installed at your site, the command
+.IP
+.B info echo
+.PP
+should give you access to the complete manual.
diff --git a/man/echo.x b/man/echo.x
new file mode 100644
index 0000000..9c4fa81
--- /dev/null
+++ b/man/echo.x
@@ -0,0 +1,4 @@
+[NAME]
+echo \- display a line of text
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/env.1 b/man/env.1
new file mode 100644
index 0000000..4361f71
--- /dev/null
+++ b/man/env.1
@@ -0,0 +1,47 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH ENV "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+env \- run a program in a modified environment
+.SH SYNOPSIS
+.B env
+[\fIOPTION\fR]... [\fI-\fR] [\fINAME=VALUE\fR]... [\fICOMMAND \fR[\fIARG\fR]...]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Set each NAME to VALUE in the environment and run COMMAND.
+.TP
+\fB\-i\fR, \fB\-\-ignore\-environment\fR
+start with an empty environment
+.TP
+\fB\-u\fR, \fB\-\-unset\fR=\fINAME\fR
+remove variable from the environment
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+A mere \- implies \fB\-i\fR. If no COMMAND, print the resulting environment.
+.SH AUTHOR
+Written by Richard Mlynarik and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B env
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B env
+programs are properly installed at your site, the command
+.IP
+.B info env
+.PP
+should give you access to the complete manual.
diff --git a/man/env.x b/man/env.x
new file mode 100644
index 0000000..914fb9c
--- /dev/null
+++ b/man/env.x
@@ -0,0 +1,4 @@
+[NAME]
+env \- run a program in a modified environment
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/expand.1 b/man/expand.1
new file mode 100644
index 0000000..464bc6c
--- /dev/null
+++ b/man/expand.1
@@ -0,0 +1,53 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH EXPAND "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+expand \- convert tabs to spaces
+.SH SYNOPSIS
+.B expand
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Convert tabs in each FILE to spaces, writing to standard output.
+With no FILE, or when FILE is \-, read standard input.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-i\fR, \fB\-\-initial\fR
+do not convert tabs after non blanks
+.TP
+\fB\-t\fR, \fB\-\-tabs\fR=\fINUMBER\fR
+have tabs NUMBER characters apart, not 8
+.TP
+\fB\-t\fR, \fB\-\-tabs\fR=\fILIST\fR
+use comma separated list of explicit tab positions
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+unexpand(1)
+.PP
+The full documentation for
+.B expand
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B expand
+programs are properly installed at your site, the command
+.IP
+.B info expand
+.PP
+should give you access to the complete manual.
diff --git a/man/expand.x b/man/expand.x
new file mode 100644
index 0000000..06c5388
--- /dev/null
+++ b/man/expand.x
@@ -0,0 +1,6 @@
+[NAME]
+expand \- convert tabs to spaces
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+unexpand(1)
diff --git a/man/expr.1 b/man/expr.1
new file mode 100644
index 0000000..3f1823e
--- /dev/null
+++ b/man/expr.1
@@ -0,0 +1,113 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH EXPR "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+expr \- evaluate expressions
+.SH SYNOPSIS
+.B expr
+\fIEXPRESSION\fR
+.br
+.B expr
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Print the value of EXPRESSION to standard output. A blank line below
+separates increasing precedence groups. EXPRESSION may be:
+.TP
+ARG1 | ARG2
+ARG1 if it is neither null nor 0, otherwise ARG2
+.TP
+ARG1 & ARG2
+ARG1 if neither argument is null or 0, otherwise 0
+.TP
+ARG1 < ARG2
+ARG1 is less than ARG2
+.TP
+ARG1 <= ARG2
+ARG1 is less than or equal to ARG2
+.TP
+ARG1 = ARG2
+ARG1 is equal to ARG2
+.TP
+ARG1 != ARG2
+ARG1 is unequal to ARG2
+.TP
+ARG1 >= ARG2
+ARG1 is greater than or equal to ARG2
+.TP
+ARG1 > ARG2
+ARG1 is greater than ARG2
+.TP
+ARG1 + ARG2
+arithmetic sum of ARG1 and ARG2
+.TP
+ARG1 \- ARG2
+arithmetic difference of ARG1 and ARG2
+.TP
+ARG1 * ARG2
+arithmetic product of ARG1 and ARG2
+.TP
+ARG1 / ARG2
+arithmetic quotient of ARG1 divided by ARG2
+.TP
+ARG1 % ARG2
+arithmetic remainder of ARG1 divided by ARG2
+.TP
+STRING : REGEXP
+anchored pattern match of REGEXP in STRING
+.TP
+match STRING REGEXP
+same as STRING : REGEXP
+.TP
+substr STRING POS LENGTH
+substring of STRING, POS counted from 1
+.TP
+index STRING CHARS
+index in STRING where any CHARS is found, or 0
+.TP
+length STRING
+length of STRING
+.TP
++ TOKEN
+interpret TOKEN as a string, even if it is a
+.IP
+keyword like `match' or an operator like `/'
+.TP
+( EXPRESSION )
+value of EXPRESSION
+.PP
+Beware that many operators need to be escaped or quoted for shells.
+Comparisons are arithmetic if both ARGs are numbers, else lexicographical.
+Pattern matches return the string matched between \e( and \e) or null; if
+\e( and \e) are not used, they return the number of characters matched or 0.
+.PP
+Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is null
+or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.
+.SH AUTHOR
+Written by Mike Parker.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B expr
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B expr
+programs are properly installed at your site, the command
+.IP
+.B info expr
+.PP
+should give you access to the complete manual.
diff --git a/man/expr.x b/man/expr.x
new file mode 100644
index 0000000..5700077
--- /dev/null
+++ b/man/expr.x
@@ -0,0 +1,4 @@
+[NAME]
+expr \- evaluate expressions
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/factor.1 b/man/factor.1
new file mode 100644
index 0000000..e97e626
--- /dev/null
+++ b/man/factor.1
@@ -0,0 +1,45 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH FACTOR "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+factor \- factor numbers
+.SH SYNOPSIS
+.B factor
+[\fINUMBER\fR]...
+.br
+.B factor
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print the prime factors of each NUMBER.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Print the prime factors of all specified integer NUMBERs. If no arguments
+are specified on the command line, they are read from standard input.
+.SH AUTHOR
+Written by Paul Rubin.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B factor
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B factor
+programs are properly installed at your site, the command
+.IP
+.B info factor
+.PP
+should give you access to the complete manual.
diff --git a/man/factor.x b/man/factor.x
new file mode 100644
index 0000000..5d6b636
--- /dev/null
+++ b/man/factor.x
@@ -0,0 +1,4 @@
+[NAME]
+factor \- factor numbers
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/false.1 b/man/false.1
new file mode 100644
index 0000000..5ab2adc
--- /dev/null
+++ b/man/false.1
@@ -0,0 +1,46 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH FALSE "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+false \- do nothing, unsuccessfully
+.SH SYNOPSIS
+.B false
+[\fIignored command line arguments\fR]
+.br
+.B false
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Exit with a status code indicating failure.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+NOTE: your shell may have its own version of false, which usually supersedes
+the version described here. Please refer to your shell's documentation
+for details about the options it supports.
+.SH AUTHOR
+Written by Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B false
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B false
+programs are properly installed at your site, the command
+.IP
+.B info false
+.PP
+should give you access to the complete manual.
diff --git a/man/false.x b/man/false.x
new file mode 100644
index 0000000..3b3b359
--- /dev/null
+++ b/man/false.x
@@ -0,0 +1,4 @@
+[NAME]
+false \- do nothing, unsuccessfully
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/fmt.1 b/man/fmt.1
new file mode 100644
index 0000000..9e46ca0
--- /dev/null
+++ b/man/fmt.1
@@ -0,0 +1,63 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH FMT "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+fmt \- simple optimal text formatter
+.SH SYNOPSIS
+.B fmt
+[\fI-DIGITS\fR] [\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Reformat each paragraph in the FILE(s), writing to standard output.
+If no FILE or if FILE is `\-', read standard input.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-c\fR, \fB\-\-crown\-margin\fR
+preserve indentation of first two lines
+.TP
+\fB\-p\fR, \fB\-\-prefix\fR=\fISTRING\fR
+reformat only lines beginning with STRING,
+reattaching the prefix to reformatted lines
+.TP
+\fB\-s\fR, \fB\-\-split\-only\fR
+split long lines, but do not refill
+.TP
+\fB\-t\fR, \fB\-\-tagged\-paragraph\fR
+indentation of first line different from second
+.TP
+\fB\-u\fR, \fB\-\-uniform\-spacing\fR
+one space between words, two after sentences
+.TP
+\fB\-w\fR, \fB\-\-width\fR=\fIWIDTH\fR
+maximum line width (default of 75 columns)
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+With no FILE, or when FILE is \-, read standard input.
+.SH AUTHOR
+Written by Ross Paterson.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B fmt
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B fmt
+programs are properly installed at your site, the command
+.IP
+.B info fmt
+.PP
+should give you access to the complete manual.
diff --git a/man/fmt.x b/man/fmt.x
new file mode 100644
index 0000000..c4abfeb
--- /dev/null
+++ b/man/fmt.x
@@ -0,0 +1,4 @@
+[NAME]
+fmt \- simple optimal text formatter
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/fold.1 b/man/fold.1
new file mode 100644
index 0000000..dce87bd
--- /dev/null
+++ b/man/fold.1
@@ -0,0 +1,51 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH FOLD "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+fold \- wrap each input line to fit in specified width
+.SH SYNOPSIS
+.B fold
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Wrap input lines in each FILE (standard input by default), writing to
+standard output.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-b\fR, \fB\-\-bytes\fR
+count bytes rather than columns
+.TP
+\fB\-s\fR, \fB\-\-spaces\fR
+break at spaces
+.TP
+\fB\-w\fR, \fB\-\-width\fR=\fIWIDTH\fR
+use WIDTH columns instead of 80
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B fold
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B fold
+programs are properly installed at your site, the command
+.IP
+.B info fold
+.PP
+should give you access to the complete manual.
diff --git a/man/fold.x b/man/fold.x
new file mode 100644
index 0000000..5c7472c
--- /dev/null
+++ b/man/fold.x
@@ -0,0 +1,4 @@
+[NAME]
+fold \- wrap each input line to fit in specified width
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/groups.1 b/man/groups.1
new file mode 100644
index 0000000..1d3b815
--- /dev/null
+++ b/man/groups.1
@@ -0,0 +1,39 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH GROUPS "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+groups \- print the groups a user is in
+.SH SYNOPSIS
+.B groups
+[\fIOPTION\fR]... [\fIUSERNAME\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Same as id \fB\-Gn\fR. If no USERNAME, use current process.
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B groups
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B groups
+programs are properly installed at your site, the command
+.IP
+.B info groups
+.PP
+should give you access to the complete manual.
diff --git a/man/groups.x b/man/groups.x
new file mode 100644
index 0000000..1e42fed
--- /dev/null
+++ b/man/groups.x
@@ -0,0 +1,4 @@
+[NAME]
+groups \- print the groups a user is in
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/head.1 b/man/head.1
new file mode 100644
index 0000000..ce0aa83
--- /dev/null
+++ b/man/head.1
@@ -0,0 +1,61 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH HEAD "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+head \- output the first part of files
+.SH SYNOPSIS
+.B head
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print the first 10 lines of each FILE to standard output.
+With more than one FILE, precede each with a header giving the file name.
+With no FILE, or when FILE is \-, read standard input.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-c\fR, \fB\-\-bytes\fR=\fI[\-]N\fR
+print the first N bytes of each file;
+with the leading `\-', print all but the last
+N bytes of each file
+.TP
+\fB\-n\fR, \fB\-\-lines\fR=\fI[\-]N\fR
+print the first N lines instead of the first 10;
+with the leading `\-', print all but the last
+N lines of each file
+.TP
+\fB\-q\fR, \fB\-\-quiet\fR, \fB\-\-silent\fR
+never print headers giving file names
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+always print headers giving file names
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+N may have a multiplier suffix: b 512, k 1024, m 1024*1024.
+.SH AUTHOR
+Written by David MacKenzie and Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B head
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B head
+programs are properly installed at your site, the command
+.IP
+.B info head
+.PP
+should give you access to the complete manual.
diff --git a/man/head.x b/man/head.x
new file mode 100644
index 0000000..160d0ff
--- /dev/null
+++ b/man/head.x
@@ -0,0 +1,4 @@
+[NAME]
+head \- output the first part of files
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/help2man b/man/help2man
new file mode 100755
index 0000000..192576c
--- /dev/null
+++ b/man/help2man
@@ -0,0 +1,636 @@
+#!/usr/bin/perl -w
+
+# Generate a short man page from --help and --version output.
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Written by Brendan O'Dea <bod@debian.org>
+# Available from ftp://ftp.gnu.org/gnu/help2man/
+
+use 5.005;
+use strict;
+use Getopt::Long;
+use Text::Tabs qw(expand);
+use POSIX qw(strftime setlocale LC_ALL);
+use locale;
+
+my $this_program = 'help2man';
+my $this_version = '1.35';
+
+my $have_gettext;
+BEGIN {
+ eval {
+ require Locale::gettext;
+ Locale::gettext->import;
+ $have_gettext = 1;
+ };
+
+ unless ($have_gettext)
+ {
+ *gettext = sub { $_[0] };
+ *textdomain = sub {};
+ }
+}
+
+sub _ { gettext @_ }
+sub N_ { $_[0] }
+
+textdomain $this_program;
+{
+ my ($user_locale) = grep defined && length,
+ (map $ENV{$_}, qw(LANGUAGE LC_ALL LC_MESSAGES LANG)), 'C';
+
+ sub kark # die with message formatted in the invoking user's locale
+ {
+ setlocale LC_ALL, $user_locale;
+ my $fmt = gettext shift;
+ die +(sprintf $fmt, @_), "\n";
+ }
+}
+
+my $version_info = sprintf _(<<'EOT'), $this_program, $this_version;
+GNU %s %s
+
+Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+Written by Brendan O'Dea <bod@debian.org>
+EOT
+
+my $help_info = sprintf _(<<'EOT'), $this_program, $this_program;
+`%s' generates a man page out of `--help' and `--version' output.
+
+Usage: %s [OPTION]... EXECUTABLE
+
+ -n, --name=STRING description for the NAME paragraph
+ -s, --section=SECTION section number for manual page (1, 6, 8)
+ -m, --manual=TEXT name of manual (User Commands, ...)
+ -S, --source=TEXT source of program (FSF, Debian, ...)
+ -L, --locale=STRING select locale (default "C")
+ -i, --include=FILE include material from `FILE'
+ -I, --opt-include=FILE include material from `FILE' if it exists
+ -o, --output=FILE send output to `FILE'
+ -p, --info-page=TEXT name of Texinfo manual
+ -N, --no-info suppress pointer to Texinfo manual
+ --help print this help, then exit
+ --version print version number, then exit
+
+EXECUTABLE should accept `--help' and `--version' options although
+alternatives may be specified using:
+
+ -h, --help-option=STRING help option string
+ -v, --version-option=STRING version option string
+
+Report bugs to <bug-help2man@gnu.org>.
+EOT
+
+my $section = 1;
+my $manual = '';
+my $source = '';
+my $locale = 'C';
+my $help_option = '--help';
+my $version_option = '--version';
+my ($opt_name, @opt_include, $opt_output, $opt_info, $opt_no_info);
+
+my %opt_def = (
+ 'n|name=s' => \$opt_name,
+ 's|section=s' => \$section,
+ 'm|manual=s' => \$manual,
+ 'S|source=s' => \$source,
+ 'L|locale=s' => \$locale,
+ 'i|include=s' => sub { push @opt_include, [ pop, 1 ] },
+ 'I|opt-include=s' => sub { push @opt_include, [ pop, 0 ] },
+ 'o|output=s' => \$opt_output,
+ 'p|info-page=s' => \$opt_info,
+ 'N|no-info' => \$opt_no_info,
+ 'h|help-option=s' => \$help_option,
+ 'v|version-option=s' => \$version_option,
+);
+
+# Parse options.
+Getopt::Long::config('bundling');
+GetOptions (%opt_def,
+ help => sub { print $help_info; exit },
+ version => sub { print $version_info; exit },
+) or die $help_info;
+
+die $help_info unless @ARGV == 1;
+
+die "$this_program: no locale support (Locale::gettext required)\n"
+ unless $locale eq 'C' or $have_gettext;
+
+# Set localisation of date and executable's ouput.
+delete @ENV{qw(LANGUAGE LC_MESSAGES LANG)};
+setlocale LC_ALL, $ENV{LC_ALL} = $locale;
+
+my %include = ();
+my %append = ();
+my @include = (); # retain order given in include file
+
+# Process include file (if given). Format is:
+#
+# [section name]
+# verbatim text
+#
+# or
+#
+# /pattern/
+# verbatim text
+#
+
+while (@opt_include)
+{
+ my ($inc, $required) = @{shift @opt_include};
+
+ next unless -f $inc or $required;
+ kark N_("%s: can't open `%s' (%s)"), $this_program, $inc, $!
+ unless open INC, $inc;
+
+ my $key;
+ my $hash = \%include;
+
+ while (<INC>)
+ {
+ # [section]
+ if (/^\[([^]]+)\]/)
+ {
+ $key = uc $1;
+ $key =~ s/^\s+//;
+ $key =~ s/\s+$//;
+ $hash = \%include;
+ push @include, $key unless $include{$key};
+ next;
+ }
+
+ # /pattern/
+ if (m!^/(.*)/([ims]*)!)
+ {
+ my $pat = $2 ? "(?$2)$1" : $1;
+
+ # Check pattern.
+ eval { $key = qr($pat) };
+ if ($@)
+ {
+ $@ =~ s/ at .*? line \d.*//;
+ die "$inc:$.:$@";
+ }
+
+ $hash = \%append;
+ next;
+ }
+
+ # Check for options before the first section--anything else is
+ # silently ignored, allowing the first for comments and
+ # revision info.
+ unless ($key)
+ {
+ # handle options
+ if (/^-/)
+ {
+ local @ARGV = split;
+ GetOptions %opt_def;
+ }
+
+ next;
+ }
+
+ $hash->{$key} ||= '';
+ $hash->{$key} .= $_;
+ }
+
+ close INC;
+
+ kark N_("%s: no valid information found in `%s'"), $this_program, $inc
+ unless $key;
+}
+
+# Compress trailing blank lines.
+for my $hash (\(%include, %append))
+{
+ for (keys %$hash) { $hash->{$_} =~ s/\n+$/\n/ }
+}
+
+# Grab help and version info from executable.
+my ($help_text, $version_text) = map {
+ join '', map { s/ +$//; expand $_ } `$ARGV[0] $_ 2>/dev/null`
+ or kark N_("%s: can't get `%s' info from %s"), $this_program,
+ $_, $ARGV[0]
+} $help_option, $version_option;
+
+my $date = strftime "%B %Y", localtime;
+(my $program = $ARGV[0]) =~ s!.*/!!;
+my $package = $program;
+my $version;
+
+if ($opt_output)
+{
+ unlink $opt_output or kark N_("%s: can't unlink %s (%s)"),
+ $this_program, $opt_output, $! if -e $opt_output;
+
+ open STDOUT, ">$opt_output"
+ or kark N_("%s: can't create %s (%s)"), $this_program, $opt_output, $!;
+}
+
+# The first line of the --version information is assumed to be in one
+# of the following formats:
+#
+# <version>
+# <program> <version>
+# {GNU,Free} <program> <version>
+# <program> ({GNU,Free} <package>) <version>
+# <program> - {GNU,Free} <package> <version>
+#
+# and seperated from any copyright/author details by a blank line.
+
+($_, $version_text) = split /\n+/, $version_text, 2;
+
+if (/^(\S+) +\(((?:GNU|Free) +[^)]+)\) +(.*)/ or
+ /^(\S+) +- *((?:GNU|Free) +\S+) +(.*)/)
+{
+ $program = $1;
+ $package = $2;
+ $version = $3;
+}
+elsif (/^((?:GNU|Free) +)?(\S+) +(.*)/)
+{
+ $program = $2;
+ $package = $1 ? "$1$2" : $2;
+ $version = $3;
+}
+else
+{
+ $version = $_;
+}
+
+$program =~ s!.*/!!;
+
+# No info for `info' itself.
+$opt_no_info = 1 if $program eq 'info';
+
+for ($include{_('NAME')})
+{
+ if ($opt_name) # --name overrides --include contents.
+ {
+ $_ = "$program \\- $opt_name\n";
+ }
+ elsif ($_) # Use first name given as $program
+ {
+ $program = $1 if /^([^\s,]+)(?:,?\s*[^\s,\\-]+)*\s+\\?-/;
+ }
+ else # Set a default (useless) NAME paragraph.
+ {
+ $_ = sprintf _("%s \\- manual page for %s %s") . "\n", $program,
+ $program, $version;
+ }
+}
+
+# Man pages traditionally have the page title in caps.
+my $PROGRAM = uc $program;
+
+# Set default page head/footers
+$source ||= "$program $version";
+unless ($manual)
+{
+ for ($section)
+ {
+ if (/^(1[Mm]|8)/) { $manual = _('System Administration Utilities') }
+ elsif (/^6/) { $manual = _('Games') }
+ else { $manual = _('User Commands') }
+ }
+}
+
+# Extract usage clause(s) [if any] for SYNOPSIS.
+my $PAT_USAGE = _('Usage');
+my $PAT_USAGE_CONT = _('or');
+if ($help_text =~ s/^($PAT_USAGE):( +(\S+))(.*)((?:\n(?: {6}\1| *($PAT_USAGE_CONT): +\S).*)*)//om)
+{
+ my @syn = $3 . $4;
+
+ if ($_ = $5)
+ {
+ s/^\n//;
+ for (split /\n/) { s/^ *(($PAT_USAGE_CONT): +)?//o; push @syn, $_ }
+ }
+
+ my $synopsis = '';
+ for (@syn)
+ {
+ $synopsis .= ".br\n" if $synopsis;
+ s!^\S*/!!;
+ s/^(\S+) *//;
+ $synopsis .= ".B $1\n";
+ s/\s+$//;
+ s/(([][]|\.\.+)+)/\\fR$1\\fI/g;
+ s/^/\\fI/ unless s/^\\fR//;
+ $_ .= '\fR';
+ s/(\\fI)( *)/$2$1/g;
+ s/\\fI\\fR//g;
+ s/^\\fR//;
+ s/\\fI$//;
+ s/^\./\\&./;
+
+ $synopsis .= "$_\n";
+ }
+
+ $include{_('SYNOPSIS')} ||= $synopsis;
+}
+
+# Process text, initial section is DESCRIPTION.
+my $sect = _('DESCRIPTION');
+$_ = "$help_text\n\n$version_text";
+
+# Normalise paragraph breaks.
+s/^\n+//;
+s/\n*$/\n/;
+s/\n\n+/\n\n/g;
+
+# Join hyphenated lines.
+s/([A-Za-z])-\n *([A-Za-z])/$1$2/g;
+
+# Temporarily exchange leading dots, apostrophes and backslashes for
+# tokens.
+s/^\./\x80/mg;
+s/^'/\x81/mg;
+s/\\/\x82/g;
+
+my $PAT_BUGS = _('Report +bugs|Email +bug +reports +to');
+my $PAT_AUTHOR = _('Written +by');
+my $PAT_OPTIONS = _('Options');
+my $PAT_EXAMPLES = _('Examples');
+my $PAT_FREE_SOFTWARE = _('This +is +free +software');
+
+# Start a new paragraph (if required) for these.
+s/([^\n])\n($PAT_BUGS|$PAT_AUTHOR)/$1\n\n$2/og;
+
+sub convert_option;
+
+while (length)
+{
+ # Convert some standard paragraph names.
+ if (s/^($PAT_OPTIONS): *\n//o)
+ {
+ $sect = _('OPTIONS');
+ next;
+ }
+ elsif (s/^($PAT_EXAMPLES): *\n//o)
+ {
+ $sect = _('EXAMPLES');
+ next;
+ }
+
+ # Copyright section
+ if (/^Copyright +[(\xa9]/)
+ {
+ $sect = _('COPYRIGHT');
+ $include{$sect} ||= '';
+ $include{$sect} .= ".PP\n" if $include{$sect};
+
+ my $copy;
+ ($copy, $_) = split /\n\n/, $_, 2;
+
+ for ($copy)
+ {
+ # Add back newline
+ s/\n*$/\n/;
+
+ # Convert iso9959-1 copyright symbol or (c) to nroff
+ # character.
+ s/^Copyright +(?:\xa9|\([Cc]\))/Copyright \\(co/mg;
+
+ # Insert line breaks before additional copyright messages
+ # and the disclaimer.
+ s/(.)\n(Copyright |$PAT_FREE_SOFTWARE)/$1\n.br\n$2/og;
+ }
+
+ $include{$sect} .= $copy;
+ $_ ||= '';
+ next;
+ }
+
+ # Catch bug report text.
+ if (/^($PAT_BUGS) /o)
+ {
+ $sect = _('REPORTING BUGS');
+ }
+
+ # Author section.
+ elsif (/^($PAT_AUTHOR)/o)
+ {
+ $sect = _('AUTHOR');
+ }
+
+ # Examples, indicated by an indented leading $, % or > are
+ # rendered in a constant width font.
+ if (/^( +)([\$\%>] )\S/)
+ {
+ my $indent = $1;
+ my $prefix = $2;
+ my $break = '.IP';
+ $include{$sect} ||= '';
+ while (s/^$indent\Q$prefix\E(\S.*)\n*//)
+ {
+ $include{$sect} .= "$break\n\\f(CW$prefix$1\\fR\n";
+ $break = '.br';
+ }
+
+ next;
+ }
+
+ my $matched = '';
+ $include{$sect} ||= '';
+
+ # Sub-sections have a trailing colon and the second line indented.
+ if (s/^(\S.*:) *\n / /)
+ {
+ $matched .= $& if %append;
+ $include{$sect} .= qq(.SS "$1"\n);
+ }
+
+ my $indent = 0;
+ my $content = '';
+
+ # Option with description.
+ if (s/^( {1,10}([+-]\S.*?))(?:( +(?!-))|\n( {20,}))(\S.*)\n//)
+ {
+ $matched .= $& if %append;
+ $indent = length ($4 || "$1$3");
+ $content = ".TP\n\x84$2\n\x84$5\n";
+ unless ($4)
+ {
+ # Indent may be different on second line.
+ $indent = length $& if /^ {20,}/;
+ }
+ }
+
+ # Option without description.
+ elsif (s/^ {1,10}([+-]\S.*)\n//)
+ {
+ $matched .= $& if %append;
+ $content = ".HP\n\x84$1\n";
+ $indent = 80; # not continued
+ }
+
+ # Indented paragraph with tag.
+ elsif (s/^( +(\S.*?) +)(\S.*)\n//)
+ {
+ $matched .= $& if %append;
+ $indent = length $1;
+ $content = ".TP\n\x84$2\n\x84$3\n";
+ }
+
+ # Indented paragraph.
+ elsif (s/^( +)(\S.*)\n//)
+ {
+ $matched .= $& if %append;
+ $indent = length $1;
+ $content = ".IP\n\x84$2\n";
+ }
+
+ # Left justified paragraph.
+ else
+ {
+ s/(.*)\n//;
+ $matched .= $& if %append;
+ $content = ".PP\n" if $include{$sect};
+ $content .= "$1\n";
+ }
+
+ # Append continuations.
+ while ($indent ? s/^ {$indent}(\S.*)\n// : s/^(\S.*)\n//)
+ {
+ $matched .= $& if %append;
+ $content .= "\x84$1\n"
+ }
+
+ # Move to next paragraph.
+ s/^\n+//;
+
+ for ($content)
+ {
+ # Leading dot and apostrophe protection.
+ s/\x84\./\x80/g;
+ s/\x84'/\x81/g;
+ s/\x84//g;
+
+ # Convert options.
+ s/(^| |\()(-[][\w=-]+)/$1 . convert_option $2/mge;
+
+ # Escape remaining hyphens
+ s/-/\x83/g;
+ }
+
+ # Check if matched paragraph contains /pat/.
+ if (%append)
+ {
+ for my $pat (keys %append)
+ {
+ if ($matched =~ $pat)
+ {
+ $content .= ".PP\n" unless $append{$pat} =~ /^\./;
+ $content .= $append{$pat};
+ }
+ }
+ }
+
+ $include{$sect} .= $content;
+}
+
+# Refer to the real documentation.
+unless ($opt_no_info)
+{
+ my $info_page = $opt_info || $program;
+
+ $sect = _('SEE ALSO');
+ $include{$sect} ||= '';
+ $include{$sect} .= ".PP\n" if $include{$sect};
+ $include{$sect} .= sprintf _(<<'EOT'), $program, $program, $info_page;
+The full documentation for
+.B %s
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B %s
+programs are properly installed at your site, the command
+.IP
+.B info %s
+.PP
+should give you access to the complete manual.
+EOT
+}
+
+# Output header.
+print <<EOT;
+.\\" DO NOT MODIFY THIS FILE! It was generated by $this_program $this_version.
+.TH $PROGRAM "$section" "$date" "$source" "$manual"
+EOT
+
+# Section ordering.
+my @pre = (_('NAME'), _('SYNOPSIS'), _('DESCRIPTION'), _('OPTIONS'),
+ _('EXAMPLES'));
+
+my @post = (_('AUTHOR'), _('REPORTING BUGS'), _('COPYRIGHT'), _('SEE ALSO'));
+my $filter = join '|', @pre, @post;
+
+# Output content.
+for my $sect (@pre, (grep ! /^($filter)$/o, @include), @post)
+{
+ if ($include{$sect})
+ {
+ my $lsect = gettext $sect;
+ my $quote = $lsect =~ /\W/ ? '"' : '';
+ print ".SH $quote$lsect$quote\n";
+
+ for ($include{$sect})
+ {
+ # Replace leading dot, apostrophe, backslash and hyphen
+ # tokens.
+ s/\x80/\\&./g;
+ s/\x81/\\&'/g;
+ s/\x82/\\e/g;
+ s/\x83/\\-/g;
+
+ # Convert some latin1 chars to troff equivalents
+ s/\xa0/\\ /g; # non-breaking space
+
+ print;
+ }
+ }
+}
+
+close STDOUT or kark N_("%s: error writing to %s (%s)"), $this_program,
+ $opt_output || 'stdout', $!;
+
+exit;
+
+# Convert option dashes to \- to stop nroff from hyphenating 'em, and
+# embolden. Option arguments get italicised.
+sub convert_option
+{
+ local $_ = '\fB' . shift;
+
+ s/-/\x83/g;
+ unless (s/\[=(.*)\]$/\\fR[=\\fI$1\\fR]/)
+ {
+ s/=(.)/\\fR=\\fI$1/;
+ s/ (.)/ \\fI$1/;
+ $_ .= '\fR';
+ }
+
+ $_;
+}
diff --git a/man/hostid.1 b/man/hostid.1
new file mode 100644
index 0000000..4d1621a
--- /dev/null
+++ b/man/hostid.1
@@ -0,0 +1,42 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH HOSTID "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+hostid \- print the numeric identifier for the current host
+.SH SYNOPSIS
+.B hostid
+
+.br
+.B hostid
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print the numeric identifier (in hexadecimal) for the current host.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B hostid
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B hostid
+programs are properly installed at your site, the command
+.IP
+.B info hostid
+.PP
+should give you access to the complete manual.
diff --git a/man/hostid.x b/man/hostid.x
new file mode 100644
index 0000000..1bba0a6
--- /dev/null
+++ b/man/hostid.x
@@ -0,0 +1,4 @@
+[NAME]
+hostid \- print the numeric identifier for the current host
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/hostname.1 b/man/hostname.1
new file mode 100644
index 0000000..cd74a13
--- /dev/null
+++ b/man/hostname.1
@@ -0,0 +1,42 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH HOSTNAME "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+hostname \- set or print the name of the current host system
+.SH SYNOPSIS
+.B hostname
+[\fINAME\fR]
+.br
+.B hostname
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print or set the hostname of the current system.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B hostname
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B hostname
+programs are properly installed at your site, the command
+.IP
+.B info hostname
+.PP
+should give you access to the complete manual.
diff --git a/man/hostname.x b/man/hostname.x
new file mode 100644
index 0000000..4b4489c
--- /dev/null
+++ b/man/hostname.x
@@ -0,0 +1,4 @@
+[NAME]
+hostname \- set or print the name of the current host system
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/id.1 b/man/id.1
new file mode 100644
index 0000000..b371dbb
--- /dev/null
+++ b/man/id.1
@@ -0,0 +1,59 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH ID "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+id \- print user identity
+.SH SYNOPSIS
+.B id
+[\fIOPTION\fR]... [\fIUSERNAME\fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print information for USERNAME, or the current user.
+.TP
+\fB\-a\fR
+ignore, for compatibility with other versions
+.TP
+\fB\-g\fR, \fB\-\-group\fR
+print only the effective group ID
+.TP
+\fB\-G\fR, \fB\-\-groups\fR
+print all group IDs
+.TP
+\fB\-n\fR, \fB\-\-name\fR
+print a name instead of a number, for \fB\-ugG\fR
+.TP
+\fB\-r\fR, \fB\-\-real\fR
+print the real ID instead of the effective ID, with \fB\-ugG\fR
+.TP
+\fB\-u\fR, \fB\-\-user\fR
+print only the effective user ID
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Without any OPTION, print some useful set of identified information.
+.SH AUTHOR
+Written by Arnold Robbins and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B id
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B id
+programs are properly installed at your site, the command
+.IP
+.B info id
+.PP
+should give you access to the complete manual.
diff --git a/man/id.x b/man/id.x
new file mode 100644
index 0000000..4c990ac
--- /dev/null
+++ b/man/id.x
@@ -0,0 +1,4 @@
+[NAME]
+id \- print user identity
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/install.1 b/man/install.1
new file mode 100644
index 0000000..d5b565d
--- /dev/null
+++ b/man/install.1
@@ -0,0 +1,113 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH INSTALL "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+install \- copy files and set attributes
+.SH SYNOPSIS
+.B install
+[\fIOPTION\fR]... [\fI-T\fR] \fISOURCE DEST\fR
+.br
+.B install
+[\fIOPTION\fR]... \fISOURCE\fR... \fIDIRECTORY\fR
+.br
+.B install
+[\fIOPTION\fR]... \fI-t DIRECTORY SOURCE\fR...
+.br
+.B install
+[\fIOPTION\fR]... \fI-d DIRECTORY\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to
+the existing DIRECTORY, while setting permission modes and owner/group.
+In the 4th form, create all components of the given DIRECTORY(ies).
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-\-backup\fR[=\fICONTROL\fR]
+make a backup of each existing destination file
+.TP
+\fB\-b\fR
+like \fB\-\-backup\fR but does not accept an argument
+.TP
+\fB\-c\fR
+(ignored)
+.TP
+\fB\-d\fR, \fB\-\-directory\fR
+treat all arguments as directory names; create all
+components of the specified directories
+.TP
+\fB\-D\fR
+create all leading components of DEST except the last,
+then copy SOURCE to DEST
+.TP
+\fB\-g\fR, \fB\-\-group\fR=\fIGROUP\fR
+set group ownership, instead of process' current group
+.TP
+\fB\-m\fR, \fB\-\-mode\fR=\fIMODE\fR
+set permission mode (as in chmod), instead of rwxr\-xr\-x
+.TP
+\fB\-o\fR, \fB\-\-owner\fR=\fIOWNER\fR
+set ownership (super\-user only)
+.TP
+\fB\-p\fR, \fB\-\-preserve\-timestamps\fR
+apply access/modification times of SOURCE files
+to corresponding destination files
+.TP
+\fB\-s\fR, \fB\-\-strip\fR
+strip symbol tables
+.TP
+\fB\-S\fR, \fB\-\-suffix\fR=\fISUFFIX\fR
+override the usual backup suffix
+.TP
+\fB\-t\fR, \fB\-\-target\-directory\fR=\fIDIRECTORY\fR
+copy all SOURCE arguments into DIRECTORY
+.TP
+\fB\-T\fR, \fB\-\-no\-target\-directory\fR
+treat DEST as a normal file
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+print the name of each directory as it is created
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+The backup suffix is `~', unless set with \fB\-\-suffix\fR or SIMPLE_BACKUP_SUFFIX.
+The version control method may be selected via the \fB\-\-backup\fR option or through
+the VERSION_CONTROL environment variable. Here are the values:
+.TP
+none, off
+never make backups (even if \fB\-\-backup\fR is given)
+.TP
+numbered, t
+make numbered backups
+.TP
+existing, nil
+numbered if numbered backups exist, simple otherwise
+.TP
+simple, never
+always make simple backups
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B install
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B install
+programs are properly installed at your site, the command
+.IP
+.B info install
+.PP
+should give you access to the complete manual.
diff --git a/man/install.x b/man/install.x
new file mode 100644
index 0000000..6b97c22
--- /dev/null
+++ b/man/install.x
@@ -0,0 +1,4 @@
+[NAME]
+install \- copy files and set attributes
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/join.1 b/man/join.1
new file mode 100644
index 0000000..4aeedff
--- /dev/null
+++ b/man/join.1
@@ -0,0 +1,79 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH JOIN "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+join \- join lines of two files on a common field
+.SH SYNOPSIS
+.B join
+[\fIOPTION\fR]... \fIFILE1 FILE2\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+For each pair of input lines with identical join fields, write a line to
+standard output. The default join field is the first, delimited
+by whitespace. When FILE1 or FILE2 (not both) is \-, read standard input.
+.TP
+\fB\-a\fR FILENUM
+print unpairable lines coming from file FILENUM, where
+FILENUM is 1 or 2, corresponding to FILE1 or FILE2
+.TP
+\fB\-e\fR EMPTY
+replace missing input fields with EMPTY
+.TP
+\fB\-i\fR, \fB\-\-ignore\-case\fR
+ignore differences in case when comparing fields
+.TP
+\fB\-j\fR FIELD
+equivalent to `\-1 FIELD \fB\-2\fR FIELD'
+.TP
+\fB\-o\fR FORMAT
+obey FORMAT while constructing output line
+.TP
+\fB\-t\fR CHAR
+use CHAR as input and output field separator
+.TP
+\fB\-v\fR FILENUM
+like \fB\-a\fR FILENUM, but suppress joined output lines
+.TP
+\fB\-1\fR FIELD
+join on this FIELD of file 1
+.TP
+\fB\-2\fR FIELD
+join on this FIELD of file 2
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Unless \fB\-t\fR CHAR is given, leading blanks separate fields and are ignored,
+else fields are separated by CHAR. Any FIELD is a field number counted
+from 1. FORMAT is one or more comma or blank separated specifications,
+each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,
+the remaining fields from FILE1, the remaining fields from FILE2, all
+separated by CHAR.
+.PP
+Important: FILE1 and FILE2 must be sorted on the join fields.
+E.g., use `sort \fB\-k\fR 1b,1' if `join' has no options.
+.SH AUTHOR
+Written by Mike Haertel.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B join
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B join
+programs are properly installed at your site, the command
+.IP
+.B info join
+.PP
+should give you access to the complete manual.
diff --git a/man/join.x b/man/join.x
new file mode 100644
index 0000000..6f50791
--- /dev/null
+++ b/man/join.x
@@ -0,0 +1,4 @@
+[NAME]
+join \- join lines of two files on a common field
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/kill.1 b/man/kill.1
new file mode 100644
index 0000000..ab7b7db
--- /dev/null
+++ b/man/kill.1
@@ -0,0 +1,67 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH KILL "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+kill \- send signals to processes, or list signals
+.SH SYNOPSIS
+.B kill
+[\fI-s SIGNAL | -SIGNAL\fR] \fIPID\fR...
+.br
+.B kill
+\fI-l \fR[\fISIGNAL\fR]...
+.br
+.B kill
+\fI-t \fR[\fISIGNAL\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Send signals to processes, or list signals.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.HP
+\fB\-s\fR, \fB\-\-signal\fR=\fISIGNAL\fR, \fB\-SIGNAL\fR
+.IP
+specify the name or number of the signal to be sent
+.TP
+\fB\-l\fR, \fB\-\-list\fR
+list signal names, or convert signal names to/from numbers
+.TP
+\fB\-t\fR, \fB\-\-table\fR
+print a table of signal information
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+SIGNAL may be a signal name like `HUP', or a signal number like `1',
+or an exit status of a process terminated by a signal.
+PID is an integer; if negative it identifies a process group.
+.PP
+NOTE: your shell may have its own version of kill, which usually supersedes
+the version described here. Please refer to your shell's documentation
+for details about the options it supports.
+.SH AUTHOR
+Written by Paul Eggert.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+kill(2)
+.PP
+The full documentation for
+.B kill
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B kill
+programs are properly installed at your site, the command
+.IP
+.B info kill
+.PP
+should give you access to the complete manual.
diff --git a/man/kill.x b/man/kill.x
new file mode 100644
index 0000000..920c59f
--- /dev/null
+++ b/man/kill.x
@@ -0,0 +1,6 @@
+[NAME]
+kill \- send signals to processes, or list signals
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+kill(2)
diff --git a/man/link.1 b/man/link.1
new file mode 100644
index 0000000..7c91888
--- /dev/null
+++ b/man/link.1
@@ -0,0 +1,44 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH LINK "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+link \- call the link function to create a link to a file
+.SH SYNOPSIS
+.B link
+\fIFILE1 FILE2\fR
+.br
+.B link
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Call the link function to create a link named FILE2 to an existing FILE1.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Michael Stone.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+link(2)
+.PP
+The full documentation for
+.B link
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B link
+programs are properly installed at your site, the command
+.IP
+.B info link
+.PP
+should give you access to the complete manual.
diff --git a/man/link.x b/man/link.x
new file mode 100644
index 0000000..2ae12bc
--- /dev/null
+++ b/man/link.x
@@ -0,0 +1,6 @@
+[NAME]
+link \- call the link function to create a link to a file
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+link(2)
diff --git a/man/ln.1 b/man/ln.1
new file mode 100644
index 0000000..eb837ea
--- /dev/null
+++ b/man/ln.1
@@ -0,0 +1,109 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH LN "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+ln \- make links between files
+.SH SYNOPSIS
+.B ln
+[\fIOPTION\fR]... [\fI-T\fR] \fITARGET LINK_NAME (1st form)\fR
+.br
+.B ln
+[\fIOPTION\fR]... \fITARGET (2nd form)\fR
+.br
+.B ln
+[\fIOPTION\fR]... \fITARGET\fR... \fIDIRECTORY (3rd form)\fR
+.br
+.B ln
+[\fIOPTION\fR]... \fI-t DIRECTORY TARGET\fR... \fI(4th form)\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+In the 1st form, create a link to TARGET with the name LINK_NAME.
+In the 2nd form, create a link to TARGET in the current directory.
+In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.
+Create hard links by default, symbolic links with \fB\-\-symbolic\fR.
+When creating hard links, each TARGET must exist.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-\-backup\fR[=\fICONTROL\fR]
+make a backup of each existing destination file
+.TP
+\fB\-b\fR
+like \fB\-\-backup\fR but does not accept an argument
+.TP
+\fB\-d\fR, \fB\-F\fR, \fB\-\-directory\fR
+allow the superuser to attempt to hard link
+directories (note: will probably fail due to
+system restrictions, even for the superuser)
+.TP
+\fB\-f\fR, \fB\-\-force\fR
+remove existing destination files
+.TP
+\fB\-n\fR, \fB\-\-no\-dereference\fR
+treat destination that is a symlink to a
+directory as if it were a normal file
+.TP
+\fB\-i\fR, \fB\-\-interactive\fR
+prompt whether to remove destinations
+.TP
+\fB\-s\fR, \fB\-\-symbolic\fR
+make symbolic links instead of hard links
+.TP
+\fB\-S\fR, \fB\-\-suffix\fR=\fISUFFIX\fR
+override the usual backup suffix
+.TP
+\fB\-t\fR, \fB\-\-target\-directory\fR=\fIDIRECTORY\fR
+specify the DIRECTORY in which to create
+the links
+.TP
+\fB\-T\fR, \fB\-\-no\-target\-directory\fR
+treat LINK_NAME as a normal file
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+print name of each linked file
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+The backup suffix is `~', unless set with \fB\-\-suffix\fR or SIMPLE_BACKUP_SUFFIX.
+The version control method may be selected via the \fB\-\-backup\fR option or through
+the VERSION_CONTROL environment variable. Here are the values:
+.TP
+none, off
+never make backups (even if \fB\-\-backup\fR is given)
+.TP
+numbered, t
+make numbered backups
+.TP
+existing, nil
+numbered if numbered backups exist, simple otherwise
+.TP
+simple, never
+always make simple backups
+.SH AUTHOR
+Written by Mike Parker and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+link(2), symlink(2)
+.PP
+The full documentation for
+.B ln
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B ln
+programs are properly installed at your site, the command
+.IP
+.B info ln
+.PP
+should give you access to the complete manual.
diff --git a/man/ln.x b/man/ln.x
new file mode 100644
index 0000000..daba9bf
--- /dev/null
+++ b/man/ln.x
@@ -0,0 +1,6 @@
+[NAME]
+ln \- make links between files
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+link(2), symlink(2)
diff --git a/man/logname.1 b/man/logname.1
new file mode 100644
index 0000000..0e59e2f
--- /dev/null
+++ b/man/logname.1
@@ -0,0 +1,39 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH LOGNAME "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+logname \- print user\'s login name
+.SH SYNOPSIS
+.B logname
+[\fIOPTION\fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print the name of the current user.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by FIXME: unknown.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B logname
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B logname
+programs are properly installed at your site, the command
+.IP
+.B info logname
+.PP
+should give you access to the complete manual.
diff --git a/man/logname.x b/man/logname.x
new file mode 100644
index 0000000..997a1b7
--- /dev/null
+++ b/man/logname.x
@@ -0,0 +1,4 @@
+[NAME]
+logname \- print user\'s login name
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/ls.1 b/man/ls.1
new file mode 100644
index 0000000..95b08f4
--- /dev/null
+++ b/man/ls.1
@@ -0,0 +1,247 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH LS "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+ls \- list directory contents
+.SH SYNOPSIS
+.B ls
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+List information about the FILEs (the current directory by default).
+Sort entries alphabetically if none of \fB\-cftuvSUX\fR nor \fB\-\-sort\fR.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-a\fR, \fB\-\-all\fR
+do not ignore entries starting with .
+.TP
+\fB\-A\fR, \fB\-\-almost\-all\fR
+do not list implied . and ..
+.TP
+\fB\-\-author\fR
+with \fB\-l\fR, print the author of each file
+.TP
+\fB\-b\fR, \fB\-\-escape\fR
+print octal escapes for nongraphic characters
+.TP
+\fB\-\-block\-size\fR=\fISIZE\fR
+use SIZE\-byte blocks
+.TP
+\fB\-B\fR, \fB\-\-ignore\-backups\fR
+do not list implied entries ending with ~
+.TP
+\fB\-c\fR
+with \fB\-lt\fR: sort by, and show, ctime (time of last
+modification of file status information)
+with \fB\-l\fR: show ctime and sort by name
+otherwise: sort by ctime
+.TP
+\fB\-C\fR
+list entries by columns
+.TP
+\fB\-\-color\fR[=\fIWHEN\fR]
+control whether color is used to distinguish file
+types. WHEN may be `never', `always', or `auto'
+.TP
+\fB\-d\fR, \fB\-\-directory\fR
+list directory entries instead of contents,
+and do not dereference symbolic links
+.TP
+\fB\-D\fR, \fB\-\-dired\fR
+generate output designed for Emacs' dired mode
+.TP
+\fB\-f\fR
+do not sort, enable \fB\-aU\fR, disable \fB\-ls\fR \fB\-\-color\fR
+.TP
+\fB\-F\fR, \fB\-\-classify\fR
+append indicator (one of */=>@|) to entries
+.TP
+\fB\-\-file\-type\fR
+likewise, except do not append `*'
+.TP
+\fB\-\-format\fR=\fIWORD\fR
+across \fB\-x\fR, commas \fB\-m\fR, horizontal \fB\-x\fR, long \fB\-l\fR,
+single\-column \fB\-1\fR, verbose \fB\-l\fR, vertical \fB\-C\fR
+.TP
+\fB\-\-full\-time\fR
+like \fB\-l\fR \fB\-\-time\-style\fR=\fIfull\-iso\fR
+.TP
+\fB\-g\fR
+like \fB\-l\fR, but do not list owner
+.TP
+\fB\-\-group\-directories\-first\fR
+group directories before files
+.TP
+\fB\-G\fR, \fB\-\-no\-group\fR
+in a long listing, don't print group names
+.TP
+\fB\-h\fR, \fB\-\-human\-readable\fR
+with \fB\-l\fR, print sizes in human readable format
+(e.g., 1K 234M 2G)
+.TP
+\fB\-\-si\fR
+likewise, but use powers of 1000 not 1024
+.TP
+\fB\-H\fR, \fB\-\-dereference\-command\-line\fR
+follow symbolic links listed on the command line
+.TP
+\fB\-\-dereference\-command\-line\-symlink\-to\-dir\fR
+follow each command line symbolic link
+that points to a directory
+.TP
+\fB\-\-hide\fR=\fIPATTERN\fR
+do not list implied entries matching shell PATTERN
+(overridden by \fB\-a\fR or \fB\-A\fR)
+.TP
+\fB\-\-indicator\-style\fR=\fIWORD\fR
+append indicator with style WORD to entry names:
+none (default), slash (\fB\-p\fR),
+file\-type (\fB\-\-file\-type\fR), classify (\fB\-F\fR)
+.TP
+\fB\-i\fR, \fB\-\-inode\fR
+print the index number of each file
+.TP
+\fB\-I\fR, \fB\-\-ignore\fR=\fIPATTERN\fR
+do not list implied entries matching shell PATTERN
+.TP
+\fB\-k\fR
+like \fB\-\-block\-size\fR=\fI1K\fR
+.TP
+\fB\-l\fR
+use a long listing format
+.TP
+\fB\-L\fR, \fB\-\-dereference\fR
+when showing file information for a symbolic
+link, show information for the file the link
+references rather than for the link itself
+.TP
+\fB\-m\fR
+fill width with a comma separated list of entries
+.TP
+\fB\-n\fR, \fB\-\-numeric\-uid\-gid\fR
+like \fB\-l\fR, but list numeric user and group IDs
+.TP
+\fB\-N\fR, \fB\-\-literal\fR
+print raw entry names (don't treat e.g. control
+characters specially)
+.TP
+\fB\-o\fR
+like \fB\-l\fR, but do not list group information
+.TP
+\fB\-p\fR, \fB\-\-indicator\-style\fR=\fIslash\fR
+append / indicator to directories
+.TP
+\fB\-q\fR, \fB\-\-hide\-control\-chars\fR
+print ? instead of non graphic characters
+.TP
+\fB\-\-show\-control\-chars\fR
+show non graphic characters as\-is (default
+unless program is `ls' and output is a terminal)
+.TP
+\fB\-Q\fR, \fB\-\-quote\-name\fR
+enclose entry names in double quotes
+.TP
+\fB\-\-quoting\-style\fR=\fIWORD\fR
+use quoting style WORD for entry names:
+literal, locale, shell, shell\-always, c, escape
+.TP
+\fB\-r\fR, \fB\-\-reverse\fR
+reverse order while sorting
+.TP
+\fB\-R\fR, \fB\-\-recursive\fR
+list subdirectories recursively
+.TP
+\fB\-s\fR, \fB\-\-size\fR
+print the size of each file, in blocks
+.TP
+\fB\-S\fR
+sort by file size
+.TP
+\fB\-\-sort\fR=\fIWORD\fR
+sort by WORD instead of name: none \fB\-U\fR,
+extension \fB\-X\fR, size \fB\-S\fR, time \fB\-t\fR, version \fB\-v\fR
+.TP
+\fB\-\-time\fR=\fIWORD\fR
+with \fB\-l\fR, show time as WORD instead of modification
+time: atime \fB\-u\fR, access \fB\-u\fR, use \fB\-u\fR, ctime \fB\-c\fR,
+or status \fB\-c\fR; use specified time as sort key
+if \fB\-\-sort\fR=\fItime\fR
+.TP
+\fB\-\-time\-style\fR=\fISTYLE\fR
+with \fB\-l\fR, show times using style STYLE:
+full\-iso, long\-iso, iso, locale, +FORMAT.
+FORMAT is interpreted like `date'; if FORMAT is
+FORMAT1<newline>FORMAT2, FORMAT1 applies to
+non\-recent files and FORMAT2 to recent files;
+if STYLE is prefixed with `posix\-', STYLE
+takes effect only outside the POSIX locale
+.TP
+\fB\-t\fR
+sort by modification time
+.TP
+\fB\-T\fR, \fB\-\-tabsize\fR=\fICOLS\fR
+assume tab stops at each COLS instead of 8
+.TP
+\fB\-u\fR
+with \fB\-lt\fR: sort by, and show, access time
+with \fB\-l\fR: show access time and sort by name
+otherwise: sort by access time
+.TP
+\fB\-U\fR
+do not sort; list entries in directory order
+.TP
+\fB\-v\fR
+sort by version
+.TP
+\fB\-w\fR, \fB\-\-width\fR=\fICOLS\fR
+assume screen width instead of current value
+.TP
+\fB\-x\fR
+list entries by lines instead of by columns
+.TP
+\fB\-X\fR
+sort alphabetically by entry extension
+.TP
+\fB\-1\fR
+list one file per line
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+SIZE may be (or may be an integer optionally followed by) one of following:
+kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.
+.PP
+By default, color is not used to distinguish types of files. That is
+equivalent to using \fB\-\-color\fR=\fInone\fR. Using the \fB\-\-color\fR option without the
+optional WHEN argument is equivalent to using \fB\-\-color\fR=\fIalways\fR. With
+\fB\-\-color\fR=\fIauto\fR, color codes are output only if standard output is connected
+to a terminal (tty). The environment variable LS_COLORS can influence the
+colors, and can be set easily by the dircolors command.
+.PP
+Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.
+.SH AUTHOR
+Written by Richard Stallman and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B ls
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B ls
+programs are properly installed at your site, the command
+.IP
+.B info ls
+.PP
+should give you access to the complete manual.
diff --git a/man/ls.x b/man/ls.x
new file mode 100644
index 0000000..4b7e3f4
--- /dev/null
+++ b/man/ls.x
@@ -0,0 +1,4 @@
+[NAME]
+ls \- list directory contents
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/md5sum.1 b/man/md5sum.1
new file mode 100644
index 0000000..70848c4
--- /dev/null
+++ b/man/md5sum.1
@@ -0,0 +1,61 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH MD5SUM "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+md5sum \- compute and check MD5 message digest
+.SH SYNOPSIS
+.B md5sum
+[\fIOPTION\fR] [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print or check MD5 (128\-bit) checksums.
+With no FILE, or when FILE is \-, read standard input.
+.TP
+\fB\-b\fR, \fB\-\-binary\fR
+read in binary mode
+.TP
+\fB\-c\fR, \fB\-\-check\fR
+read MD5 sums from the FILEs and check them
+.TP
+\fB\-t\fR, \fB\-\-text\fR
+read in text mode (default)
+.SS "The following two options are useful only when verifying checksums:"
+.TP
+\fB\-\-status\fR
+don't output anything, status code shows success
+.TP
+\fB\-w\fR, \fB\-\-warn\fR
+warn about improperly formatted checksum lines
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+The sums are computed as described in RFC 1321. When checking, the input
+should be a former output of this program. The default mode is to print
+a line with checksum, a character indicating type (`*' for binary, ` ' for
+text), and name for each FILE.
+.SH AUTHOR
+Written by Ulrich Drepper, Scott Miller, and David Madore.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B md5sum
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B md5sum
+programs are properly installed at your site, the command
+.IP
+.B info md5sum
+.PP
+should give you access to the complete manual.
diff --git a/man/md5sum.x b/man/md5sum.x
new file mode 100644
index 0000000..4a65477
--- /dev/null
+++ b/man/md5sum.x
@@ -0,0 +1,4 @@
+[NAME]
+md5sum \- compute and check MD5 message digest
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/mkdir.1 b/man/mkdir.1
new file mode 100644
index 0000000..8d6c386
--- /dev/null
+++ b/man/mkdir.1
@@ -0,0 +1,52 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH MKDIR "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+mkdir \- make directories
+.SH SYNOPSIS
+.B mkdir
+[\fIOPTION\fR] \fIDIRECTORY\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Create the DIRECTORY(ies), if they do not already exist.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-m\fR, \fB\-\-mode\fR=\fIMODE\fR
+set file mode (as in chmod), not a=rwx \- umask
+.TP
+\fB\-p\fR, \fB\-\-parents\fR
+no error if existing, make parent directories as needed
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+print a message for each created directory
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+mkdir(2)
+.PP
+The full documentation for
+.B mkdir
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B mkdir
+programs are properly installed at your site, the command
+.IP
+.B info mkdir
+.PP
+should give you access to the complete manual.
diff --git a/man/mkdir.x b/man/mkdir.x
new file mode 100644
index 0000000..4b35013
--- /dev/null
+++ b/man/mkdir.x
@@ -0,0 +1,6 @@
+[NAME]
+mkdir \- make directories
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+mkdir(2)
diff --git a/man/mkfifo.1 b/man/mkfifo.1
new file mode 100644
index 0000000..86ab15f
--- /dev/null
+++ b/man/mkfifo.1
@@ -0,0 +1,46 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH MKFIFO "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+mkfifo \- make FIFOs (named pipes)
+.SH SYNOPSIS
+.B mkfifo
+[\fIOPTION\fR] \fINAME\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Create named pipes (FIFOs) with the given NAMEs.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-m\fR, \fB\-\-mode\fR=\fIMODE\fR
+set file permission bits to MODE, not a=rw \- umask
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+mkfifo(3)
+.PP
+The full documentation for
+.B mkfifo
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B mkfifo
+programs are properly installed at your site, the command
+.IP
+.B info mkfifo
+.PP
+should give you access to the complete manual.
diff --git a/man/mkfifo.x b/man/mkfifo.x
new file mode 100644
index 0000000..7d06348
--- /dev/null
+++ b/man/mkfifo.x
@@ -0,0 +1,6 @@
+[NAME]
+mkfifo \- make FIFOs (named pipes)
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+mkfifo(3)
diff --git a/man/mknod.1 b/man/mknod.1
new file mode 100644
index 0000000..b20deae
--- /dev/null
+++ b/man/mknod.1
@@ -0,0 +1,60 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH MKNOD "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+mknod \- make block or character special files
+.SH SYNOPSIS
+.B mknod
+[\fIOPTION\fR]... \fINAME TYPE \fR[\fIMAJOR MINOR\fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Create the special file NAME of the given TYPE.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-m\fR, \fB\-\-mode\fR=\fIMODE\fR
+set file permission bits to MODE, not a=rw \- umask
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they
+must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,
+it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;
+otherwise, as decimal. TYPE may be:
+.TP
+b
+create a block (buffered) special file
+.TP
+c, u
+create a character (unbuffered) special file
+.TP
+p
+create a FIFO
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+mknod(2)
+.PP
+The full documentation for
+.B mknod
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B mknod
+programs are properly installed at your site, the command
+.IP
+.B info mknod
+.PP
+should give you access to the complete manual.
diff --git a/man/mknod.x b/man/mknod.x
new file mode 100644
index 0000000..aaa3a9a
--- /dev/null
+++ b/man/mknod.x
@@ -0,0 +1,6 @@
+[NAME]
+mknod \- make block or character special files
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+mknod(2)
diff --git a/man/mv.1 b/man/mv.1
new file mode 100644
index 0000000..db7bdfb
--- /dev/null
+++ b/man/mv.1
@@ -0,0 +1,98 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH MV "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+mv \- move (rename) files
+.SH SYNOPSIS
+.B mv
+[\fIOPTION\fR]... [\fI-T\fR] \fISOURCE DEST\fR
+.br
+.B mv
+[\fIOPTION\fR]... \fISOURCE\fR... \fIDIRECTORY\fR
+.br
+.B mv
+[\fIOPTION\fR]... \fI-t DIRECTORY SOURCE\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-\-backup\fR[=\fICONTROL\fR]
+make a backup of each existing destination file
+.TP
+\fB\-b\fR
+like \fB\-\-backup\fR but does not accept an argument
+.TP
+\fB\-f\fR, \fB\-\-force\fR
+do not prompt before overwriting
+.TP
+\fB\-i\fR, \fB\-\-interactive\fR
+prompt before overwrite
+.TP
+\fB\-\-strip\-trailing\-slashes\fR
+remove any trailing slashes from each SOURCE
+argument
+.TP
+\fB\-S\fR, \fB\-\-suffix\fR=\fISUFFIX\fR
+override the usual backup suffix
+.TP
+\fB\-t\fR, \fB\-\-target\-directory\fR=\fIDIRECTORY\fR
+move all SOURCE arguments into DIRECTORY
+.TP
+\fB\-T\fR, \fB\-\-no\-target\-directory\fR
+treat DEST as a normal file
+.TP
+\fB\-u\fR, \fB\-\-update\fR
+move only when the SOURCE file is newer
+than the destination file or when the
+destination file is missing
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+explain what is being done
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+The backup suffix is `~', unless set with \fB\-\-suffix\fR or SIMPLE_BACKUP_SUFFIX.
+The version control method may be selected via the \fB\-\-backup\fR option or through
+the VERSION_CONTROL environment variable. Here are the values:
+.TP
+none, off
+never make backups (even if \fB\-\-backup\fR is given)
+.TP
+numbered, t
+make numbered backups
+.TP
+existing, nil
+numbered if numbered backups exist, simple otherwise
+.TP
+simple, never
+always make simple backups
+.SH AUTHOR
+Written by Mike Parker, David MacKenzie, and Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+rename(2)
+.PP
+The full documentation for
+.B mv
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B mv
+programs are properly installed at your site, the command
+.IP
+.B info mv
+.PP
+should give you access to the complete manual.
diff --git a/man/mv.x b/man/mv.x
new file mode 100644
index 0000000..6e32d5d
--- /dev/null
+++ b/man/mv.x
@@ -0,0 +1,6 @@
+[NAME]
+mv \- move (rename) files
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+rename(2)
diff --git a/man/nice.1 b/man/nice.1
new file mode 100644
index 0000000..20fb208
--- /dev/null
+++ b/man/nice.1
@@ -0,0 +1,50 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH NICE "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+nice \- run a program with modified scheduling priority
+.SH SYNOPSIS
+.B nice
+[\fIOPTION\fR] [\fICOMMAND \fR[\fIARG\fR]...]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Run COMMAND with an adjusted niceness, which affects process scheduling.
+With no COMMAND, print the current niceness. Nicenesses range from
+\fB\-20\fR (most favorable scheduling) to 19 (least favorable).
+.TP
+\fB\-n\fR, \fB\-\-adjustment\fR=\fIN\fR
+add integer N to the niceness (default 10)
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+NOTE: your shell may have its own version of nice, which usually supersedes
+the version described here. Please refer to your shell's documentation
+for details about the options it supports.
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+nice(2)
+.PP
+The full documentation for
+.B nice
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B nice
+programs are properly installed at your site, the command
+.IP
+.B info nice
+.PP
+should give you access to the complete manual.
diff --git a/man/nice.x b/man/nice.x
new file mode 100644
index 0000000..3448d69
--- /dev/null
+++ b/man/nice.x
@@ -0,0 +1,6 @@
+[NAME]
+nice \- run a program with modified scheduling priority
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+nice(2)
diff --git a/man/nl.1 b/man/nl.1
new file mode 100644
index 0000000..ffaf172
--- /dev/null
+++ b/man/nl.1
@@ -0,0 +1,103 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH NL "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+nl \- number lines of files
+.SH SYNOPSIS
+.B nl
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Write each FILE to standard output, with line numbers added.
+With no FILE, or when FILE is \-, read standard input.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-b\fR, \fB\-\-body\-numbering\fR=\fISTYLE\fR
+use STYLE for numbering body lines
+.TP
+\fB\-d\fR, \fB\-\-section\-delimiter\fR=\fICC\fR
+use CC for separating logical pages
+.TP
+\fB\-f\fR, \fB\-\-footer\-numbering\fR=\fISTYLE\fR
+use STYLE for numbering footer lines
+.TP
+\fB\-h\fR, \fB\-\-header\-numbering\fR=\fISTYLE\fR
+use STYLE for numbering header lines
+.TP
+\fB\-i\fR, \fB\-\-page\-increment\fR=\fINUMBER\fR
+line number increment at each line
+.TP
+\fB\-l\fR, \fB\-\-join\-blank\-lines\fR=\fINUMBER\fR
+group of NUMBER empty lines counted as one
+.TP
+\fB\-n\fR, \fB\-\-number\-format\fR=\fIFORMAT\fR
+insert line numbers according to FORMAT
+.TP
+\fB\-p\fR, \fB\-\-no\-renumber\fR
+do not reset line numbers at logical pages
+.TP
+\fB\-s\fR, \fB\-\-number\-separator\fR=\fISTRING\fR
+add STRING after (possible) line number
+.TP
+\fB\-v\fR, \fB\-\-first\-page\fR=\fINUMBER\fR
+first line number on each logical page
+.TP
+\fB\-w\fR, \fB\-\-number\-width\fR=\fINUMBER\fR
+use NUMBER columns for line numbers
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+By default, selects \fB\-v1\fR \fB\-i1\fR \fB\-l1\fR \fB\-sTAB\fR \fB\-w6\fR \fB\-nrn\fR \fB\-hn\fR \fB\-bt\fR \fB\-fn\fR. CC are
+two delimiter characters for separating logical pages, a missing
+second character implies :. Type \e\e for \e. STYLE is one of:
+.TP
+a
+number all lines
+.TP
+t
+number only nonempty lines
+.TP
+n
+number no lines
+.TP
+pBRE
+number only lines that contain a match for the basic regular
+expression, BRE
+.PP
+FORMAT is one of:
+.TP
+ln
+left justified, no leading zeros
+.TP
+rn
+right justified, no leading zeros
+.TP
+rz
+right justified, leading zeros
+.SH AUTHOR
+Written by Scott Bartram and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B nl
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B nl
+programs are properly installed at your site, the command
+.IP
+.B info nl
+.PP
+should give you access to the complete manual.
diff --git a/man/nl.x b/man/nl.x
new file mode 100644
index 0000000..cf9b648
--- /dev/null
+++ b/man/nl.x
@@ -0,0 +1,4 @@
+[NAME]
+nl \- number lines of files
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/nohup.1 b/man/nohup.1
new file mode 100644
index 0000000..187ec3a
--- /dev/null
+++ b/man/nohup.1
@@ -0,0 +1,46 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH NOHUP "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+nohup \- run a command immune to hangups, with output to a non-tty
+.SH SYNOPSIS
+.B nohup
+\fICOMMAND \fR[\fIARG\fR]...
+.br
+.B nohup
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Run COMMAND, ignoring hangup signals.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+NOTE: your shell may have its own version of nohup, which usually supersedes
+the version described here. Please refer to your shell's documentation
+for details about the options it supports.
+.SH AUTHOR
+Written by Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B nohup
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B nohup
+programs are properly installed at your site, the command
+.IP
+.B info nohup
+.PP
+should give you access to the complete manual.
diff --git a/man/nohup.x b/man/nohup.x
new file mode 100644
index 0000000..dbb8fb8
--- /dev/null
+++ b/man/nohup.x
@@ -0,0 +1,4 @@
+[NAME]
+nohup \- run a command immune to hangups, with output to a non-tty
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/od.1 b/man/od.1
new file mode 100644
index 0000000..bbc3699
--- /dev/null
+++ b/man/od.1
@@ -0,0 +1,147 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH OD "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+od \- dump files in octal and other formats
+.SH SYNOPSIS
+.B od
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.br
+.B od
+[\fI-abcdfilosx\fR]... [\fIFILE\fR] [[\fI+\fR]\fIOFFSET\fR[\fI.\fR][\fIb\fR]]
+.br
+.B od
+\fI--traditional \fR[\fIOPTION\fR]... [\fIFILE\fR] [[\fI+\fR]\fIOFFSET\fR[\fI.\fR][\fIb\fR] [\fI+\fR][\fILABEL\fR][\fI.\fR][\fIb\fR]]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Write an unambiguous representation, octal bytes by default,
+of FILE to standard output. With more than one FILE argument,
+concatenate them in the listed order to form the input.
+With no FILE, or when FILE is \-, read standard input.
+.PP
+All arguments to long options are mandatory for short options.
+.TP
+\fB\-A\fR, \fB\-\-address\-radix\fR=\fIRADIX\fR
+decide how file offsets are printed
+.TP
+\fB\-j\fR, \fB\-\-skip\-bytes\fR=\fIBYTES\fR
+skip BYTES input bytes first
+.TP
+\fB\-N\fR, \fB\-\-read\-bytes\fR=\fIBYTES\fR
+limit dump to BYTES input bytes
+.TP
+\fB\-S\fR, \fB\-\-strings\fR[=\fIBYTES\fR]
+output strings of at least BYTES graphic chars
+.TP
+\fB\-t\fR, \fB\-\-format\fR=\fITYPE\fR
+select output format or formats
+.TP
+\fB\-v\fR, \fB\-\-output\-duplicates\fR
+do not use * to mark line suppression
+.TP
+\fB\-w\fR, \fB\-\-width\fR[=\fIBYTES\fR]
+output BYTES bytes per output line
+.TP
+\fB\-\-traditional\fR
+accept arguments in traditional form
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SS "Traditional format specifications may be intermixed; they accumulate:"
+.TP
+\fB\-a\fR
+same as \fB\-t\fR a, select named characters, ignoring high\-order bit
+.TP
+\fB\-b\fR
+same as \fB\-t\fR o1, select octal bytes
+.TP
+\fB\-c\fR
+same as \fB\-t\fR c, select ASCII characters or backslash escapes
+.TP
+\fB\-d\fR
+same as \fB\-t\fR u2, select unsigned decimal 2\-byte units
+.TP
+\fB\-f\fR
+same as \fB\-t\fR fF, select floats
+.TP
+\fB\-i\fR
+same as \fB\-t\fR dI, select decimal ints
+.TP
+\fB\-l\fR
+same as \fB\-t\fR dL, select decimal longs
+.TP
+\fB\-o\fR
+same as \fB\-t\fR o2, select octal 2\-byte units
+.TP
+\fB\-s\fR
+same as \fB\-t\fR d2, select decimal 2\-byte units
+.TP
+\fB\-x\fR
+same as \fB\-t\fR x2, select hexadecimal 2\-byte units
+.PP
+If first and second call formats both apply, the second format is assumed
+if the last operand begins with + or (if there are 2 operands) a digit.
+An OFFSET operand means \fB\-j\fR OFFSET. LABEL is the pseudo\-address
+at first byte printed, incremented when dump is progressing.
+For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;
+suffixes may be . for octal and b for multiply by 512.
+.PP
+TYPE is made up of one or more of these specifications:
+.TP
+a
+named character, ignoring high\-order bit
+.TP
+c
+ASCII character or backslash escape
+.TP
+d[SIZE]
+signed decimal, SIZE bytes per integer
+.TP
+f[SIZE]
+floating point, SIZE bytes per integer
+.TP
+o[SIZE]
+octal, SIZE bytes per integer
+.TP
+u[SIZE]
+unsigned decimal, SIZE bytes per integer
+.TP
+x[SIZE]
+hexadecimal, SIZE bytes per integer
+.PP
+SIZE is a number. For TYPE in doux, SIZE may also be C for
+sizeof(char), S for sizeof(short), I for sizeof(int) or L for
+sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D
+for sizeof(double) or L for sizeof(long double).
+.PP
+RADIX is d for decimal, o for octal, x for hexadecimal or n for none.
+BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512
+with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to
+any type adds a display of printable characters to the end of each line
+of output. \fB\-\-string\fR without a number implies 3. \fB\-\-width\fR without a number
+implies 32. By default, od uses \fB\-A\fR o \fB\-t\fR d2 \fB\-w16\fR.
+.SH AUTHOR
+Written by Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B od
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B od
+programs are properly installed at your site, the command
+.IP
+.B info od
+.PP
+should give you access to the complete manual.
diff --git a/man/od.x b/man/od.x
new file mode 100644
index 0000000..c913f80
--- /dev/null
+++ b/man/od.x
@@ -0,0 +1,4 @@
+[NAME]
+od \- dump files in octal and other formats
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/paste.1 b/man/paste.1
new file mode 100644
index 0000000..2ea2445
--- /dev/null
+++ b/man/paste.1
@@ -0,0 +1,49 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH PASTE "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+paste \- merge lines of files
+.SH SYNOPSIS
+.B paste
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Write lines consisting of the sequentially corresponding lines from
+each FILE, separated by TABs, to standard output.
+With no FILE, or when FILE is \-, read standard input.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-d\fR, \fB\-\-delimiters\fR=\fILIST\fR
+reuse characters from LIST instead of TABs
+.TP
+\fB\-s\fR, \fB\-\-serial\fR
+paste one file at a time instead of in parallel
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David M. Ihnat and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B paste
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B paste
+programs are properly installed at your site, the command
+.IP
+.B info paste
+.PP
+should give you access to the complete manual.
diff --git a/man/paste.x b/man/paste.x
new file mode 100644
index 0000000..0af980d
--- /dev/null
+++ b/man/paste.x
@@ -0,0 +1,4 @@
+[NAME]
+paste \- merge lines of files
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/pathchk.1 b/man/pathchk.1
new file mode 100644
index 0000000..2c17a1b
--- /dev/null
+++ b/man/pathchk.1
@@ -0,0 +1,48 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH PATHCHK "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+pathchk \- check whether file names are valid or portable
+.SH SYNOPSIS
+.B pathchk
+[\fIOPTION\fR]... \fINAME\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Diagnose unportable constructs in NAME.
+.TP
+\fB\-p\fR
+check for most POSIX systems
+.TP
+\fB\-P\fR
+check for empty names and leading "\-"
+.TP
+\fB\-\-portability\fR
+check for all POSIX systems (equivalent to \fB\-p\fR \fB\-P\fR)
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Paul Eggert, David MacKenzie, and Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B pathchk
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B pathchk
+programs are properly installed at your site, the command
+.IP
+.B info pathchk
+.PP
+should give you access to the complete manual.
diff --git a/man/pathchk.x b/man/pathchk.x
new file mode 100644
index 0000000..ad8f09f
--- /dev/null
+++ b/man/pathchk.x
@@ -0,0 +1,4 @@
+[NAME]
+pathchk \- check whether file names are valid or portable
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/pinky.1 b/man/pinky.1
new file mode 100644
index 0000000..8fdc71c
--- /dev/null
+++ b/man/pinky.1
@@ -0,0 +1,68 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH PINKY "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+pinky \- lightweight finger
+.SH SYNOPSIS
+.B pinky
+[\fIOPTION\fR]... [\fIUSER\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.TP
+\fB\-l\fR
+produce long format output for the specified USERs
+.TP
+\fB\-b\fR
+omit the user's home directory and shell in long format
+.TP
+\fB\-h\fR
+omit the user's project file in long format
+.TP
+\fB\-p\fR
+omit the user's plan file in long format
+.TP
+\fB\-s\fR
+do short format output, this is the default
+.TP
+\fB\-f\fR
+omit the line of column headings in short format
+.TP
+\fB\-w\fR
+omit the user's full name in short format
+.TP
+\fB\-i\fR
+omit the user's full name and remote host in short format
+.TP
+\fB\-q\fR
+omit the user's full name, remote host and idle time
+in short format
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+A lightweight `finger' program; print user information.
+The utmp file will be /var/run/utmp.
+.SH AUTHOR
+Written by Joseph Arceneaux, David MacKenzie, and Kaveh Ghazi.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B pinky
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B pinky
+programs are properly installed at your site, the command
+.IP
+.B info pinky
+.PP
+should give you access to the complete manual.
diff --git a/man/pinky.x b/man/pinky.x
new file mode 100644
index 0000000..91cdb43
--- /dev/null
+++ b/man/pinky.x
@@ -0,0 +1,4 @@
+[NAME]
+pinky \- lightweight finger
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/pr.1 b/man/pr.1
new file mode 100644
index 0000000..4ceec93
--- /dev/null
+++ b/man/pr.1
@@ -0,0 +1,137 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH PR "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+pr \- convert text files for printing
+.SH SYNOPSIS
+.B pr
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Paginate or columnate FILE(s) for printing.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
++FIRST_PAGE[:LAST_PAGE], \fB\-\-pages\fR=\fIFIRST_PAGE[\fR:LAST_PAGE]
+begin [stop] printing with page FIRST_[LAST_]PAGE
+.TP
+\fB\-COLUMN\fR, \fB\-\-columns\fR=\fICOLUMN\fR
+output COLUMN columns and print columns down,
+unless \fB\-a\fR is used. Balance number of lines in the
+columns on each page.
+.TP
+\fB\-a\fR, \fB\-\-across\fR
+print columns across rather than down, used together
+with \fB\-COLUMN\fR
+.TP
+\fB\-c\fR, \fB\-\-show\-control\-chars\fR
+use hat notation (^G) and octal backslash notation
+.TP
+\fB\-d\fR, \fB\-\-double\-space\fR
+double space the output
+.TP
+\fB\-D\fR, \fB\-\-date\-format\fR=\fIFORMAT\fR
+use FORMAT for the header date
+.TP
+\fB\-e[CHAR[WIDTH]]\fR, \fB\-\-expand\-tabs\fR[=\fICHAR[WIDTH]\fR]
+expand input CHARs (TABs) to tab WIDTH (8)
+.TP
+\fB\-F\fR, \fB\-f\fR, \fB\-\-form\-feed\fR
+use form feeds instead of newlines to separate pages
+(by a 3\-line page header with \fB\-F\fR or a 5\-line header
+and trailer without \fB\-F\fR)
+.TP
+\fB\-h\fR HEADER, \fB\-\-header\fR=\fIHEADER\fR
+use a centered HEADER instead of filename in page header,
+\fB\-h\fR "" prints a blank line, don't use \fB\-h\fR""
+.TP
+\fB\-i[CHAR[WIDTH]]\fR, \fB\-\-output\-tabs\fR[=\fICHAR[WIDTH]\fR]
+replace spaces with CHARs (TABs) to tab WIDTH (8)
+.TP
+\fB\-J\fR, \fB\-\-join\-lines\fR
+merge full lines, turns off \fB\-W\fR line truncation, no column
+alignment, \fB\-\-sep\-string\fR[=\fISTRING\fR] sets separators
+.TP
+\fB\-l\fR PAGE_LENGTH, \fB\-\-length\fR=\fIPAGE_LENGTH\fR
+set the page length to PAGE_LENGTH (66) lines
+(default number of lines of text 56, and with \fB\-F\fR 63)
+.TP
+\fB\-m\fR, \fB\-\-merge\fR
+print all files in parallel, one in each column,
+truncate lines, but join lines of full length with \fB\-J\fR
+.TP
+\fB\-n[SEP[DIGITS]]\fR, \fB\-\-number\-lines\fR[=\fISEP[DIGITS]\fR]
+number lines, use DIGITS (5) digits, then SEP (TAB),
+default counting starts with 1st line of input file
+.TP
+\fB\-N\fR NUMBER, \fB\-\-first\-line\-number\fR=\fINUMBER\fR
+start counting with NUMBER at 1st line of first
+page printed (see +FIRST_PAGE)
+.TP
+\fB\-o\fR MARGIN, \fB\-\-indent\fR=\fIMARGIN\fR
+offset each line with MARGIN (zero) spaces, do not
+affect \fB\-w\fR or \fB\-W\fR, MARGIN will be added to PAGE_WIDTH
+.TP
+\fB\-r\fR, \fB\-\-no\-file\-warnings\fR
+omit warning when a file cannot be opened
+.TP
+\fB\-s[CHAR]\fR,\-\-separator[=CHAR]
+separate columns by a single character, default for CHAR
+is the <TAB> character without \fB\-w\fR and 'no char' with \fB\-w\fR
+\fB\-s[CHAR]\fR turns off line truncation of all 3 column
+options (\fB\-COLUMN\fR|\-a \fB\-COLUMN\fR|\-m) except \fB\-w\fR is set
+.TP
+\fB\-SSTRING\fR, \fB\-\-sep\-string\fR[=\fISTRING\fR]
+separate columns by STRING,
+without \fB\-S\fR: Default separator <TAB> with \fB\-J\fR and <space>
+otherwise (same as \fB\-S\fR" "), no effect on column options
+.TP
+\fB\-t\fR, \fB\-\-omit\-header\fR
+omit page headers and trailers
+.TP
+\fB\-T\fR, \fB\-\-omit\-pagination\fR
+omit page headers and trailers, eliminate any pagination
+by form feeds set in input files
+.TP
+\fB\-v\fR, \fB\-\-show\-nonprinting\fR
+use octal backslash notation
+.TP
+\fB\-w\fR PAGE_WIDTH, \fB\-\-width\fR=\fIPAGE_WIDTH\fR
+set page width to PAGE_WIDTH (72) characters for
+multiple text\-column output only, \fB\-s[char]\fR turns off (72)
+.TP
+\fB\-W\fR PAGE_WIDTH, \fB\-\-page\-width\fR=\fIPAGE_WIDTH\fR
+set page width to PAGE_WIDTH (72) characters always,
+truncate lines, except \fB\-J\fR option is set, no interference
+with \fB\-S\fR or \fB\-s\fR
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+\fB\-T\fR implied by \fB\-l\fR nn when nn <= 10 or <= 3 with \fB\-F\fR. With no FILE, or when
+FILE is \-, read standard input.
+.SH AUTHOR
+Written by Pete TerMaat and Roland Huebner.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B pr
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B pr
+programs are properly installed at your site, the command
+.IP
+.B info pr
+.PP
+should give you access to the complete manual.
diff --git a/man/pr.x b/man/pr.x
new file mode 100644
index 0000000..4dd836d
--- /dev/null
+++ b/man/pr.x
@@ -0,0 +1,4 @@
+[NAME]
+pr \- convert text files for printing
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/printenv.1 b/man/printenv.1
new file mode 100644
index 0000000..633f5af
--- /dev/null
+++ b/man/printenv.1
@@ -0,0 +1,46 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH PRINTENV "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+printenv \- print all or part of environment
+.SH SYNOPSIS
+.B printenv
+[\fIVARIABLE\fR]...
+.br
+.B printenv
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+If no environment VARIABLE specified, print them all.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+NOTE: your shell may have its own version of printenv, which usually supersedes
+the version described here. Please refer to your shell's documentation
+for details about the options it supports.
+.SH AUTHOR
+Written by David MacKenzie and Richard Mlynarik.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B printenv
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B printenv
+programs are properly installed at your site, the command
+.IP
+.B info printenv
+.PP
+should give you access to the complete manual.
diff --git a/man/printenv.x b/man/printenv.x
new file mode 100644
index 0000000..7445226
--- /dev/null
+++ b/man/printenv.x
@@ -0,0 +1,4 @@
+[NAME]
+printenv \- print all or part of environment
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/printf.1 b/man/printf.1
new file mode 100644
index 0000000..696ea7e
--- /dev/null
+++ b/man/printf.1
@@ -0,0 +1,100 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH PRINTF "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+printf \- format and print data
+.SH SYNOPSIS
+.B printf
+\fIFORMAT \fR[\fIARGUMENT\fR]...
+.br
+.B printf
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print ARGUMENT(s) according to FORMAT.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+FORMAT controls the output as in C printf. Interpreted sequences are:
+.TP
+\e"
+double quote
+.TP
+\eNNN
+character with octal value NNN (1 to 3 digits)
+.TP
+\e\e
+backslash
+.TP
+\ea
+alert (BEL)
+.TP
+\eb
+backspace
+.TP
+\ec
+produce no further output
+.TP
+\ef
+form feed
+.TP
+\en
+new line
+.TP
+\er
+carriage return
+.TP
+\et
+horizontal tab
+.TP
+\ev
+vertical tab
+.TP
+\exHH
+byte with hexadecimal value HH (1 to 2 digits)
+.TP
+\euHHHH
+Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)
+.TP
+\eUHHHHHHHH
+Unicode character with hex value HHHHHHHH (8 digits)
+.TP
+%%
+a single %
+.TP
+%b
+ARGUMENT as a string with `\e' escapes interpreted,
+except that octal escapes are of the form \e0 or \e0NNN
+.PP
+and all C format specifications ending with one of diouxXfeEgGcs, with
+ARGUMENTs converted to proper type first. Variable widths are handled.
+.PP
+NOTE: your shell may have its own version of printf, which usually supersedes
+the version described here. Please refer to your shell's documentation
+for details about the options it supports.
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B printf
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B printf
+programs are properly installed at your site, the command
+.IP
+.B info printf
+.PP
+should give you access to the complete manual.
diff --git a/man/printf.x b/man/printf.x
new file mode 100644
index 0000000..6489ec5
--- /dev/null
+++ b/man/printf.x
@@ -0,0 +1,4 @@
+[NAME]
+printf \- format and print data
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/ptx.1 b/man/ptx.1
new file mode 100644
index 0000000..5c623ec
--- /dev/null
+++ b/man/ptx.1
@@ -0,0 +1,96 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH PTX "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+ptx \- produce a permuted index of file contents
+.SH SYNOPSIS
+.B ptx
+[\fIOPTION\fR]... [\fIINPUT\fR]... \fI(without -G)\fR
+.br
+.B ptx
+\fI-G \fR[\fIOPTION\fR]... [\fIINPUT \fR[\fIOUTPUT\fR]]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Output a permuted index, including context, of the words in the input files.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-A\fR, \fB\-\-auto\-reference\fR
+output automatically generated references
+.TP
+\fB\-G\fR, \fB\-\-traditional\fR
+behave more like System V `ptx'
+.TP
+\fB\-F\fR, \fB\-\-flag\-truncation\fR=\fISTRING\fR
+use STRING for flagging line truncations
+.TP
+\fB\-M\fR, \fB\-\-macro\-name\fR=\fISTRING\fR
+macro name to use instead of `xx'
+.TP
+\fB\-O\fR, \fB\-\-format\fR=\fIroff\fR
+generate output as roff directives
+.TP
+\fB\-R\fR, \fB\-\-right\-side\-refs\fR
+put references at right, not counted in \fB\-w\fR
+.TP
+\fB\-S\fR, \fB\-\-sentence\-regexp\fR=\fIREGEXP\fR
+for end of lines or end of sentences
+.TP
+\fB\-T\fR, \fB\-\-format\fR=\fItex\fR
+generate output as TeX directives
+.TP
+\fB\-W\fR, \fB\-\-word\-regexp\fR=\fIREGEXP\fR
+use REGEXP to match each keyword
+.TP
+\fB\-b\fR, \fB\-\-break\-file\fR=\fIFILE\fR
+word break characters in this FILE
+.TP
+\fB\-f\fR, \fB\-\-ignore\-case\fR
+fold lower case to upper case for sorting
+.TP
+\fB\-g\fR, \fB\-\-gap\-size\fR=\fINUMBER\fR
+gap size in columns between output fields
+.TP
+\fB\-i\fR, \fB\-\-ignore\-file\fR=\fIFILE\fR
+read ignore word list from FILE
+.TP
+\fB\-o\fR, \fB\-\-only\-file\fR=\fIFILE\fR
+read only word list from this FILE
+.TP
+\fB\-r\fR, \fB\-\-references\fR
+first field of each line is a reference
+.HP
+\fB\-t\fR, \fB\-\-typeset\-mode\fR \- not implemented \-
+.TP
+\fB\-w\fR, \fB\-\-width\fR=\fINUMBER\fR
+output width in columns, reference excluded
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+With no FILE or if FILE is \-, read Standard Input. `\-F /' by default.
+.SH AUTHOR
+Written by F. Pinard.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B ptx
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B ptx
+programs are properly installed at your site, the command
+.IP
+.B info ptx
+.PP
+should give you access to the complete manual.
diff --git a/man/ptx.x b/man/ptx.x
new file mode 100644
index 0000000..af37770
--- /dev/null
+++ b/man/ptx.x
@@ -0,0 +1,4 @@
+[NAME]
+ptx \- produce a permuted index of file contents
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/pwd.1 b/man/pwd.1
new file mode 100644
index 0000000..f7ae93f
--- /dev/null
+++ b/man/pwd.1
@@ -0,0 +1,45 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH PWD "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+pwd \- print name of current/working directory
+.SH SYNOPSIS
+.B pwd
+[\fIOPTION\fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print the full filename of the current working directory.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+NOTE: your shell may have its own version of pwd, which usually supersedes
+the version described here. Please refer to your shell's documentation
+for details about the options it supports.
+.SH AUTHOR
+Written by Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+getcwd(3)
+.PP
+The full documentation for
+.B pwd
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B pwd
+programs are properly installed at your site, the command
+.IP
+.B info pwd
+.PP
+should give you access to the complete manual.
diff --git a/man/pwd.x b/man/pwd.x
new file mode 100644
index 0000000..65daec0
--- /dev/null
+++ b/man/pwd.x
@@ -0,0 +1,6 @@
+[NAME]
+pwd \- print name of current/working directory
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+getcwd(3)
diff --git a/man/readlink.1 b/man/readlink.1
new file mode 100644
index 0000000..d90c758
--- /dev/null
+++ b/man/readlink.1
@@ -0,0 +1,67 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH READLINK "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+readlink \- display value of a symbolic link
+.SH SYNOPSIS
+.B readlink
+[\fIOPTION\fR]... \fIFILE\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Display value of a symbolic link on standard output.
+.TP
+\fB\-f\fR, \fB\-\-canonicalize\fR
+canonicalize by following every symlink in
+every component of the given name recursively;
+all but the last component must exist
+.TP
+\fB\-e\fR, \fB\-\-canonicalize\-existing\fR
+canonicalize by following every symlink in
+every component of the given name recursively,
+all components must exist
+.TP
+\fB\-m\fR, \fB\-\-canonicalize\-missing\fR
+canonicalize by following every symlink in
+every component of the given name recursively,
+without requirements on components existence
+.TP
+\fB\-n\fR, \fB\-\-no\-newline\fR
+do not output the trailing newline
+.HP
+\fB\-q\fR, \fB\-\-quiet\fR,
+.TP
+\fB\-s\fR, \fB\-\-silent\fR
+suppress most error messages
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+report error messages
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Dmitry V. Levin.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+readlink(2)
+.PP
+The full documentation for
+.B readlink
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B readlink
+programs are properly installed at your site, the command
+.IP
+.B info readlink
+.PP
+should give you access to the complete manual.
diff --git a/man/readlink.x b/man/readlink.x
new file mode 100644
index 0000000..c1d6c5c
--- /dev/null
+++ b/man/readlink.x
@@ -0,0 +1,6 @@
+[NAME]
+readlink \- display value of a symbolic link
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+readlink(2)
diff --git a/man/rm.1 b/man/rm.1
new file mode 100644
index 0000000..3f9525e
--- /dev/null
+++ b/man/rm.1
@@ -0,0 +1,107 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH RM "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+rm \- remove files or directories
+.SH SYNOPSIS
+.B rm
+[\fIOPTION\fR]... \fIFILE\fR...
+.SH DESCRIPTION
+This manual page
+documents the GNU version of
+.BR rm .
+.B rm
+removes each specified file. By default, it does not remove
+directories.
+.P
+If the \fI\-I\fR or \fI\-\-interactive\=once\fR option is given,
+and there are more than three files or the \fI\-r\fR, \fI\-R\fR,
+or \fI\-\-recursive\fR are given, then
+.B rm
+prompts the user for whether to proceed with the entire operation. If
+the response is not affirmative, the entire command is aborted.
+.P
+Otherwise, if a file is unwritable, standard input is a terminal, and
+the \fI\-f\fR or \fI\-\-force\fR option is not given, or the
+\fI\-i\fR or \fI\-\-interactive\=always\fR option is given,
+.B rm
+prompts the user for whether to remove the file. If the response is
+not affirmative, the file is skipped.
+.SH OPTIONS
+.PP
+Remove (unlink) the FILE(s).
+.TP
+\fB\-f\fR, \fB\-\-force\fR
+ignore nonexistent files, never prompt
+.TP
+\fB\-i\fR
+prompt before every removal
+.TP
+\fB\-I\fR
+prompt once before removing more than three files, or
+when removing recursively. Less intrusive than \fB\-i\fR,
+while still giving protection against most mistakes
+.TP
+\fB\-\-interactive\fR[=\fIWHEN\fR]
+prompt according to WHEN: never, once (\fB\-I\fR), or
+always (\fB\-i\fR). Without WHEN, prompt always
+.TP
+\fB\-\-one\-file\-system\fR
+when removing a hierarchy recursively, skip any
+directory that is on a file system different from
+that of the corresponding command line argument
+.TP
+\fB\-\-no\-preserve\-root\fR
+do not treat `/' specially
+.TP
+\fB\-\-preserve\-root\fR
+do not remove `/' (default)
+.TP
+\fB\-r\fR, \fB\-R\fR, \fB\-\-recursive\fR
+remove directories and their contents recursively
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+explain what is being done
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+By default, rm does not remove directories. Use the \fB\-\-recursive\fR (\fB\-r\fR or \fB\-R\fR)
+option to remove each listed directory, too, along with all of its contents.
+.PP
+To remove a file whose name starts with a `\-', for example `\-foo',
+use one of these commands:
+.IP
+rm \fB\-\-\fR \fB\-foo\fR
+.IP
+rm ./\-foo
+.PP
+Note that if you use rm to remove a file, it is usually possible to recover
+the contents of that file. If you want more assurance that the contents are
+truly unrecoverable, consider using shred.
+.SH AUTHOR
+Written by Paul Rubin, David MacKenzie, Richard Stallman, and Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+unlink(1), unlink(2), chattr(1), shred(1)
+.PP
+The full documentation for
+.B rm
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B rm
+programs are properly installed at your site, the command
+.IP
+.B info rm
+.PP
+should give you access to the complete manual.
diff --git a/man/rm.x b/man/rm.x
new file mode 100644
index 0000000..422ad79
--- /dev/null
+++ b/man/rm.x
@@ -0,0 +1,32 @@
+'\" Copyright (C) 1998, 1999, 2001, 2003, 2004, 2006 Free Software
+'\" Foundation, Inc.
+'\"
+'\" This is free software. You may redistribute copies of it under the terms
+'\" of the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+'\" There is NO WARRANTY, to the extent permitted by law.
+[NAME]
+rm \- remove files or directories
+[DESCRIPTION]
+This manual page
+documents the GNU version of
+.BR rm .
+.B rm
+removes each specified file. By default, it does not remove
+directories.
+.P
+If the \fI\-I\fR or \fI\-\-interactive\=once\fR option is given,
+and there are more than three files or the \fI\-r\fR, \fI\-R\fR,
+or \fI\-\-recursive\fR are given, then
+.B rm
+prompts the user for whether to proceed with the entire operation. If
+the response is not affirmative, the entire command is aborted.
+.P
+Otherwise, if a file is unwritable, standard input is a terminal, and
+the \fI\-f\fR or \fI\-\-force\fR option is not given, or the
+\fI\-i\fR or \fI\-\-interactive\=always\fR option is given,
+.B rm
+prompts the user for whether to remove the file. If the response is
+not affirmative, the file is skipped.
+.SH OPTIONS
+[SEE ALSO]
+unlink(1), unlink(2), chattr(1), shred(1)
diff --git a/man/rmdir.1 b/man/rmdir.1
new file mode 100644
index 0000000..8034430
--- /dev/null
+++ b/man/rmdir.1
@@ -0,0 +1,53 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH RMDIR "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+rmdir \- remove empty directories
+.SH SYNOPSIS
+.B rmdir
+[\fIOPTION\fR]... \fIDIRECTORY\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Remove the DIRECTORY(ies), if they are empty.
+.HP
+\fB\-\-ignore\-fail\-on\-non\-empty\fR
+.IP
+ignore each failure that is solely because a directory
+is non\-empty
+.TP
+\fB\-p\fR, \fB\-\-parents\fR
+Remove DIRECTORY and its ancestors. E.g., `rmdir \fB\-p\fR a/b/c' is
+similar to `rmdir a/b/c a/b a'.
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+output a diagnostic for every directory processed
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+rmdir(2)
+.PP
+The full documentation for
+.B rmdir
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B rmdir
+programs are properly installed at your site, the command
+.IP
+.B info rmdir
+.PP
+should give you access to the complete manual.
diff --git a/man/rmdir.x b/man/rmdir.x
new file mode 100644
index 0000000..a612f83
--- /dev/null
+++ b/man/rmdir.x
@@ -0,0 +1,6 @@
+[NAME]
+rmdir \- remove empty directories
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+rmdir(2)
diff --git a/man/seq.1 b/man/seq.1
new file mode 100644
index 0000000..df5bc3a
--- /dev/null
+++ b/man/seq.1
@@ -0,0 +1,63 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH SEQ "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+seq \- print a sequence of numbers
+.SH SYNOPSIS
+.B seq
+[\fIOPTION\fR]... \fILAST\fR
+.br
+.B seq
+[\fIOPTION\fR]... \fIFIRST LAST\fR
+.br
+.B seq
+[\fIOPTION\fR]... \fIFIRST INCREMENT LAST\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print numbers from FIRST to LAST, in steps of INCREMENT.
+.TP
+\fB\-f\fR, \fB\-\-format\fR=\fIFORMAT\fR
+use printf style floating\-point FORMAT
+.TP
+\fB\-s\fR, \fB\-\-separator\fR=\fISTRING\fR
+use STRING to separate numbers (default: \en)
+.TP
+\fB\-w\fR, \fB\-\-equal\-width\fR
+equalize width by padding with leading zeroes
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+If FIRST or INCREMENT is omitted, it defaults to 1. That is, an
+omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.
+FIRST, INCREMENT, and LAST are interpreted as floating point values.
+INCREMENT is usually positive if FIRST is smaller than LAST, and
+INCREMENT is usually negative if FIRST is greater than LAST.
+FORMAT must be suitable for printing one argument of type `double';
+it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point
+decimal numbers with maximum precision PREC, and to %g otherwise.
+.SH AUTHOR
+Written by Ulrich Drepper.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B seq
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B seq
+programs are properly installed at your site, the command
+.IP
+.B info seq
+.PP
+should give you access to the complete manual.
diff --git a/man/seq.x b/man/seq.x
new file mode 100644
index 0000000..df7f98c
--- /dev/null
+++ b/man/seq.x
@@ -0,0 +1,4 @@
+[NAME]
+seq \- print a sequence of numbers
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/sha1sum.1 b/man/sha1sum.1
new file mode 100644
index 0000000..1ccf435
--- /dev/null
+++ b/man/sha1sum.1
@@ -0,0 +1,61 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH SHA1SUM "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+sha1sum \- compute and check SHA1 message digest
+.SH SYNOPSIS
+.B sha1sum
+[\fIOPTION\fR] [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print or check SHA1 (160\-bit) checksums.
+With no FILE, or when FILE is \-, read standard input.
+.TP
+\fB\-b\fR, \fB\-\-binary\fR
+read in binary mode
+.TP
+\fB\-c\fR, \fB\-\-check\fR
+read SHA1 sums from the FILEs and check them
+.TP
+\fB\-t\fR, \fB\-\-text\fR
+read in text mode (default)
+.SS "The following two options are useful only when verifying checksums:"
+.TP
+\fB\-\-status\fR
+don't output anything, status code shows success
+.TP
+\fB\-w\fR, \fB\-\-warn\fR
+warn about improperly formatted checksum lines
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+The sums are computed as described in FIPS\-180\-1. When checking, the input
+should be a former output of this program. The default mode is to print
+a line with checksum, a character indicating type (`*' for binary, ` ' for
+text), and name for each FILE.
+.SH AUTHOR
+Written by Ulrich Drepper, Scott Miller, and David Madore.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B sha1sum
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B sha1sum
+programs are properly installed at your site, the command
+.IP
+.B info sha1sum
+.PP
+should give you access to the complete manual.
diff --git a/man/sha1sum.x b/man/sha1sum.x
new file mode 100644
index 0000000..52bb841
--- /dev/null
+++ b/man/sha1sum.x
@@ -0,0 +1,4 @@
+[NAME]
+sha1sum \- compute and check SHA1 message digest
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/sha224sum.1 b/man/sha224sum.1
new file mode 100644
index 0000000..0271626
--- /dev/null
+++ b/man/sha224sum.1
@@ -0,0 +1,61 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH SHA224SUM "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+sha224sum \- compute and check SHA224 message digest
+.SH SYNOPSIS
+.B sha224sum
+[\fIOPTION\fR] [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print or check SHA224 (224\-bit) checksums.
+With no FILE, or when FILE is \-, read standard input.
+.TP
+\fB\-b\fR, \fB\-\-binary\fR
+read in binary mode
+.TP
+\fB\-c\fR, \fB\-\-check\fR
+read SHA224 sums from the FILEs and check them
+.TP
+\fB\-t\fR, \fB\-\-text\fR
+read in text mode (default)
+.SS "The following two options are useful only when verifying checksums:"
+.TP
+\fB\-\-status\fR
+don't output anything, status code shows success
+.TP
+\fB\-w\fR, \fB\-\-warn\fR
+warn about improperly formatted checksum lines
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+The sums are computed as described in RFC 3874. When checking, the input
+should be a former output of this program. The default mode is to print
+a line with checksum, a character indicating type (`*' for binary, ` ' for
+text), and name for each FILE.
+.SH AUTHOR
+Written by Ulrich Drepper, Scott Miller, and David Madore.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B sha224sum
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B sha224sum
+programs are properly installed at your site, the command
+.IP
+.B info sha224sum
+.PP
+should give you access to the complete manual.
diff --git a/man/sha224sum.x b/man/sha224sum.x
new file mode 100644
index 0000000..8e010a8
--- /dev/null
+++ b/man/sha224sum.x
@@ -0,0 +1,4 @@
+[NAME]
+sha224sum \- compute and check SHA224 message digest
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/sha256sum.1 b/man/sha256sum.1
new file mode 100644
index 0000000..ae35987
--- /dev/null
+++ b/man/sha256sum.1
@@ -0,0 +1,61 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH SHA256SUM "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+sha256sum \- compute and check SHA256 message digest
+.SH SYNOPSIS
+.B sha256sum
+[\fIOPTION\fR] [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print or check SHA256 (256\-bit) checksums.
+With no FILE, or when FILE is \-, read standard input.
+.TP
+\fB\-b\fR, \fB\-\-binary\fR
+read in binary mode
+.TP
+\fB\-c\fR, \fB\-\-check\fR
+read SHA256 sums from the FILEs and check them
+.TP
+\fB\-t\fR, \fB\-\-text\fR
+read in text mode (default)
+.SS "The following two options are useful only when verifying checksums:"
+.TP
+\fB\-\-status\fR
+don't output anything, status code shows success
+.TP
+\fB\-w\fR, \fB\-\-warn\fR
+warn about improperly formatted checksum lines
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+The sums are computed as described in FIPS\-180\-2. When checking, the input
+should be a former output of this program. The default mode is to print
+a line with checksum, a character indicating type (`*' for binary, ` ' for
+text), and name for each FILE.
+.SH AUTHOR
+Written by Ulrich Drepper, Scott Miller, and David Madore.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B sha256sum
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B sha256sum
+programs are properly installed at your site, the command
+.IP
+.B info sha256sum
+.PP
+should give you access to the complete manual.
diff --git a/man/sha256sum.x b/man/sha256sum.x
new file mode 100644
index 0000000..a6cfa36
--- /dev/null
+++ b/man/sha256sum.x
@@ -0,0 +1,4 @@
+[NAME]
+sha256sum \- compute and check SHA256 message digest
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/sha384sum.1 b/man/sha384sum.1
new file mode 100644
index 0000000..94a3370
--- /dev/null
+++ b/man/sha384sum.1
@@ -0,0 +1,61 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH SHA384SUM "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+sha384sum \- compute and check SHA384 message digest
+.SH SYNOPSIS
+.B sha384sum
+[\fIOPTION\fR] [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print or check SHA384 (384\-bit) checksums.
+With no FILE, or when FILE is \-, read standard input.
+.TP
+\fB\-b\fR, \fB\-\-binary\fR
+read in binary mode
+.TP
+\fB\-c\fR, \fB\-\-check\fR
+read SHA384 sums from the FILEs and check them
+.TP
+\fB\-t\fR, \fB\-\-text\fR
+read in text mode (default)
+.SS "The following two options are useful only when verifying checksums:"
+.TP
+\fB\-\-status\fR
+don't output anything, status code shows success
+.TP
+\fB\-w\fR, \fB\-\-warn\fR
+warn about improperly formatted checksum lines
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+The sums are computed as described in FIPS\-180\-2. When checking, the input
+should be a former output of this program. The default mode is to print
+a line with checksum, a character indicating type (`*' for binary, ` ' for
+text), and name for each FILE.
+.SH AUTHOR
+Written by Ulrich Drepper, Scott Miller, and David Madore.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B sha384sum
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B sha384sum
+programs are properly installed at your site, the command
+.IP
+.B info sha384sum
+.PP
+should give you access to the complete manual.
diff --git a/man/sha384sum.x b/man/sha384sum.x
new file mode 100644
index 0000000..87a5a00
--- /dev/null
+++ b/man/sha384sum.x
@@ -0,0 +1,4 @@
+[NAME]
+sha384sum \- compute and check SHA384 message digest
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/sha512sum.1 b/man/sha512sum.1
new file mode 100644
index 0000000..08bfc7e
--- /dev/null
+++ b/man/sha512sum.1
@@ -0,0 +1,61 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH SHA512SUM "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+sha512sum \- compute and check SHA512 message digest
+.SH SYNOPSIS
+.B sha512sum
+[\fIOPTION\fR] [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print or check SHA512 (512\-bit) checksums.
+With no FILE, or when FILE is \-, read standard input.
+.TP
+\fB\-b\fR, \fB\-\-binary\fR
+read in binary mode
+.TP
+\fB\-c\fR, \fB\-\-check\fR
+read SHA512 sums from the FILEs and check them
+.TP
+\fB\-t\fR, \fB\-\-text\fR
+read in text mode (default)
+.SS "The following two options are useful only when verifying checksums:"
+.TP
+\fB\-\-status\fR
+don't output anything, status code shows success
+.TP
+\fB\-w\fR, \fB\-\-warn\fR
+warn about improperly formatted checksum lines
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+The sums are computed as described in FIPS\-180\-2. When checking, the input
+should be a former output of this program. The default mode is to print
+a line with checksum, a character indicating type (`*' for binary, ` ' for
+text), and name for each FILE.
+.SH AUTHOR
+Written by Ulrich Drepper, Scott Miller, and David Madore.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B sha512sum
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B sha512sum
+programs are properly installed at your site, the command
+.IP
+.B info sha512sum
+.PP
+should give you access to the complete manual.
diff --git a/man/sha512sum.x b/man/sha512sum.x
new file mode 100644
index 0000000..b38b6b4
--- /dev/null
+++ b/man/sha512sum.x
@@ -0,0 +1,4 @@
+[NAME]
+sha512sum \- compute and check SHA512 message digest
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/shred.1 b/man/shred.1
new file mode 100644
index 0000000..7115829
--- /dev/null
+++ b/man/shred.1
@@ -0,0 +1,106 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH SHRED "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+shred \- overwrite a file to hide its contents, and optionally delete it
+.SH SYNOPSIS
+.B shred
+[\fIOPTIONS\fR] \fIFILE \fR[...]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Overwrite the specified FILE(s) repeatedly, in order to make it harder
+for even very expensive hardware probing to recover the data.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-f\fR, \fB\-\-force\fR
+change permissions to allow writing if necessary
+.TP
+\fB\-n\fR, \fB\-\-iterations\fR=\fIN\fR
+Overwrite N times instead of the default (25)
+.TP
+\fB\-\-random\-source\fR=\fIFILE\fR
+get random bytes from FILE (default /dev/urandom)
+.TP
+\fB\-s\fR, \fB\-\-size\fR=\fIN\fR
+shred this many bytes (suffixes like K, M, G accepted)
+.TP
+\fB\-u\fR, \fB\-\-remove\fR
+truncate and remove file after overwriting
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+show progress
+.TP
+\fB\-x\fR, \fB\-\-exact\fR
+do not round file sizes up to the next full block;
+.IP
+this is the default for non\-regular files
+.TP
+\fB\-z\fR, \fB\-\-zero\fR
+add a final overwrite with zeros to hide shredding
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+If FILE is \-, shred standard output.
+.PP
+Delete FILE(s) if \fB\-\-remove\fR (\fB\-u\fR) is specified. The default is not to remove
+the files because it is common to operate on device files like /dev/hda,
+and those files usually should not be removed. When operating on regular
+files, most people use the \fB\-\-remove\fR option.
+.PP
+CAUTION: Note that shred relies on a very important assumption:
+that the file system overwrites data in place. This is the traditional
+way to do things, but many modern file system designs do not satisfy this
+assumption. The following are examples of file systems on which shred is
+not effective, or is not guaranteed to be effective in all file system modes:
+.PP
+* log\-structured or journaled file systems, such as those supplied with
+AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)
+.PP
+* file systems that write redundant data and carry on even if some writes
+fail, such as RAID\-based file systems
+.PP
+* file systems that make snapshots, such as Network Appliance's NFS server
+.PP
+* file systems that cache in temporary locations, such as NFS
+version 3 clients
+.PP
+* compressed file systems
+.PP
+In the case of ext3 file systems, the above disclaimer applies
+(and shred is thus of limited effectiveness) only in data=journal mode,
+which journals file data in addition to just metadata. In both the
+data=ordered (default) and data=writeback modes, shred works as usual.
+Ext3 journaling modes can be changed by adding the data=something option
+to the mount options for a particular file system in the /etc/fstab file,
+as documented in the mount man page (man mount).
+.PP
+In addition, file system backups and remote mirrors may contain copies
+of the file that cannot be removed, and that will allow a shredded file
+to be recovered later.
+.SH AUTHOR
+Written by Colin Plumb.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B shred
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B shred
+programs are properly installed at your site, the command
+.IP
+.B info shred
+.PP
+should give you access to the complete manual.
diff --git a/man/shred.x b/man/shred.x
new file mode 100644
index 0000000..5e22616
--- /dev/null
+++ b/man/shred.x
@@ -0,0 +1,4 @@
+[NAME]
+shred \- overwrite a file to hide its contents, and optionally delete it
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/shuf.1 b/man/shuf.1
new file mode 100644
index 0000000..737ffcc
--- /dev/null
+++ b/man/shuf.1
@@ -0,0 +1,67 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH SHUF "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+shuf \- generate random permutations
+.SH SYNOPSIS
+.B shuf
+[\fIOPTION\fR]... [\fIFILE\fR]
+.br
+.B shuf
+\fI-e \fR[\fIOPTION\fR]... [\fIARG\fR]...
+.br
+.B shuf
+\fI-i LO-HI \fR[\fIOPTION\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Write a random permutation of the input lines to standard output.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-e\fR, \fB\-\-echo\fR
+treat each ARG as an input line
+.TP
+\fB\-i\fR, \fB\-\-input\-range\fR=\fILO\-HI\fR
+treat each number LO through HI as an input line
+.TP
+\fB\-n\fR, \fB\-\-head\-lines\fR=\fILINES\fR
+output at most LINES lines
+.TP
+\fB\-o\fR, \fB\-\-output\fR=\fIFILE\fR
+write result to FILE instead of standard output
+.TP
+\fB\-\-random\-source\fR=\fIFILE\fR
+get random bytes from FILE (default /dev/urandom)
+.TP
+\fB\-z\fR, \fB\-\-zero\-terminated\fR
+end lines with 0 byte, not newline
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+With no FILE, or when FILE is \-, read standard input.
+.SH AUTHOR
+Written by Paul Eggert.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B shuf
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B shuf
+programs are properly installed at your site, the command
+.IP
+.B info shuf
+.PP
+should give you access to the complete manual.
diff --git a/man/shuf.x b/man/shuf.x
new file mode 100644
index 0000000..bda519f
--- /dev/null
+++ b/man/shuf.x
@@ -0,0 +1,4 @@
+[NAME]
+shuf \- generate random permutations
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/sleep.1 b/man/sleep.1
new file mode 100644
index 0000000..0d090bb
--- /dev/null
+++ b/man/sleep.1
@@ -0,0 +1,48 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH SLEEP "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+sleep \- delay for a specified amount of time
+.SH SYNOPSIS
+.B sleep
+\fINUMBER\fR[\fISUFFIX\fR]...
+.br
+.B sleep
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),
+`m' for minutes, `h' for hours or `d' for days. Unlike most implementations
+that require NUMBER be an integer, here NUMBER may be an arbitrary floating
+point number. Given two or more arguments, pause for the amount of time
+specified by the sum of their values.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Jim Meyering and Paul Eggert.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+sleep(3)
+.PP
+The full documentation for
+.B sleep
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B sleep
+programs are properly installed at your site, the command
+.IP
+.B info sleep
+.PP
+should give you access to the complete manual.
diff --git a/man/sleep.x b/man/sleep.x
new file mode 100644
index 0000000..f1343e8
--- /dev/null
+++ b/man/sleep.x
@@ -0,0 +1,6 @@
+[NAME]
+sleep \- delay for a specified amount of time
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+sleep(3)
diff --git a/man/sort.1 b/man/sort.1
new file mode 100644
index 0000000..c2f55bb
--- /dev/null
+++ b/man/sort.1
@@ -0,0 +1,129 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH SORT "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+sort \- sort lines of text files
+.SH SYNOPSIS
+.B sort
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Write sorted concatenation of all FILE(s) to standard output.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+Ordering options:
+.TP
+\fB\-b\fR, \fB\-\-ignore\-leading\-blanks\fR
+ignore leading blanks
+.TP
+\fB\-d\fR, \fB\-\-dictionary\-order\fR
+consider only blanks and alphanumeric characters
+.TP
+\fB\-f\fR, \fB\-\-ignore\-case\fR
+fold lower case to upper case characters
+.TP
+\fB\-g\fR, \fB\-\-general\-numeric\-sort\fR
+compare according to general numerical value
+.TP
+\fB\-i\fR, \fB\-\-ignore\-nonprinting\fR
+consider only printable characters
+.TP
+\fB\-M\fR, \fB\-\-month\-sort\fR
+compare (unknown) < `JAN' < ... < `DEC'
+.TP
+\fB\-n\fR, \fB\-\-numeric\-sort\fR
+compare according to string numerical value
+.TP
+\fB\-R\fR, \fB\-\-random\-sort\fR
+sort by random hash of keys
+.TP
+\fB\-\-random\-source\fR=\fIFILE\fR
+get random bytes from FILE (default /dev/urandom)
+.TP
+\fB\-r\fR, \fB\-\-reverse\fR
+reverse the result of comparisons
+.PP
+Other options:
+.TP
+\fB\-c\fR, \fB\-\-check\fR, \fB\-\-check\fR=\fIdiagnose\-first\fR
+check for sorted input; do not sort
+.TP
+\fB\-C\fR, \fB\-\-check\fR=\fIquiet\fR, \fB\-\-check\fR=\fIsilent\fR
+like \fB\-c\fR, but do not report first bad line
+.TP
+\fB\-\-compress\-program\fR=\fIPROG\fR
+compress temporaries with PROG;
+decompress them with PROG \fB\-d\fR
+.TP
+\fB\-k\fR, \fB\-\-key\fR=\fIPOS1[\fR,POS2]
+start a key at POS1, end it at POS2 (origin 1)
+.TP
+\fB\-m\fR, \fB\-\-merge\fR
+merge already sorted files; do not sort
+.TP
+\fB\-o\fR, \fB\-\-output\fR=\fIFILE\fR
+write result to FILE instead of standard output
+.TP
+\fB\-s\fR, \fB\-\-stable\fR
+stabilize sort by disabling last\-resort comparison
+.TP
+\fB\-S\fR, \fB\-\-buffer\-size\fR=\fISIZE\fR
+use SIZE for main memory buffer
+.TP
+\fB\-t\fR, \fB\-\-field\-separator\fR=\fISEP\fR
+use SEP instead of non\-blank to blank transition
+.TP
+\fB\-T\fR, \fB\-\-temporary\-directory\fR=\fIDIR\fR
+use DIR for temporaries, not $TMPDIR or /tmp;
+multiple options specify multiple directories
+.TP
+\fB\-u\fR, \fB\-\-unique\fR
+with \fB\-c\fR, check for strict ordering;
+without \fB\-c\fR, output only the first of an equal run
+.TP
+\fB\-z\fR, \fB\-\-zero\-terminated\fR
+end lines with 0 byte, not newline
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+POS is F[.C][OPTS], where F is the field number and C the character position
+in the field; both are origin 1. If neither \fB\-t\fR nor \fB\-b\fR is in effect, characters
+in a field are counted from the beginning of the preceding whitespace. OPTS is
+one or more single\-letter ordering options, which override global ordering
+options for that key. If no key is given, use the entire line as the key.
+.PP
+SIZE may be followed by the following multiplicative suffixes:
+% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.
+.PP
+With no FILE, or when FILE is \-, read standard input.
+.PP
+*** WARNING ***
+The locale specified by the environment affects sort order.
+Set LC_ALL=C to get the traditional sort order that uses
+native byte values.
+.SH AUTHOR
+Written by Mike Haertel and Paul Eggert.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B sort
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B sort
+programs are properly installed at your site, the command
+.IP
+.B info sort
+.PP
+should give you access to the complete manual.
diff --git a/man/sort.x b/man/sort.x
new file mode 100644
index 0000000..5c171dd
--- /dev/null
+++ b/man/sort.x
@@ -0,0 +1,4 @@
+[NAME]
+sort \- sort lines of text files
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/split.1 b/man/split.1
new file mode 100644
index 0000000..a761151
--- /dev/null
+++ b/man/split.1
@@ -0,0 +1,64 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH SPLIT "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+split \- split a file into pieces
+.SH SYNOPSIS
+.B split
+[\fIOPTION\fR] [\fIINPUT \fR[\fIPREFIX\fR]]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Output fixed\-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default
+size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when INPUT
+is \-, read standard input.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-a\fR, \fB\-\-suffix\-length\fR=\fIN\fR
+use suffixes of length N (default 2)
+.TP
+\fB\-b\fR, \fB\-\-bytes\fR=\fISIZE\fR
+put SIZE bytes per output file
+.TP
+\fB\-C\fR, \fB\-\-line\-bytes\fR=\fISIZE\fR
+put at most SIZE bytes of lines per output file
+.TP
+\fB\-d\fR, \fB\-\-numeric\-suffixes\fR
+use numeric suffixes instead of alphabetic
+.TP
+\fB\-l\fR, \fB\-\-lines\fR=\fINUMBER\fR
+put NUMBER lines per output file
+.TP
+\fB\-\-verbose\fR
+print a diagnostic to standard error just
+before each output file is opened
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.
+.SH AUTHOR
+Written by Torbjorn Granlund and Richard M. Stallman.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B split
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B split
+programs are properly installed at your site, the command
+.IP
+.B info split
+.PP
+should give you access to the complete manual.
diff --git a/man/split.x b/man/split.x
new file mode 100644
index 0000000..6e98e7f
--- /dev/null
+++ b/man/split.x
@@ -0,0 +1,4 @@
+[NAME]
+split \- split a file into pieces
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/stat.1 b/man/stat.1
new file mode 100644
index 0000000..faa7ff2
--- /dev/null
+++ b/man/stat.1
@@ -0,0 +1,181 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH STAT "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+stat \- display file or file system status
+.SH SYNOPSIS
+.B stat
+[\fIOPTION\fR] \fIFILE\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Display file or file system status.
+.TP
+\fB\-L\fR, \fB\-\-dereference\fR
+follow links
+.TP
+\fB\-f\fR, \fB\-\-file\-system\fR
+display file system status instead of file status
+.TP
+\fB\-c\fR \fB\-\-format\fR=\fIFORMAT\fR
+use the specified FORMAT instead of the default;
+output a newline after each use of FORMAT
+.TP
+\fB\-\-printf\fR=\fIFORMAT\fR
+like \fB\-\-format\fR, but interpret backslash escapes,
+and do not output a mandatory trailing newline.
+If you want a newline, include \en in FORMAT.
+.TP
+\fB\-t\fR, \fB\-\-terse\fR
+print the information in terse form
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+The valid format sequences for files (without \fB\-\-file\-system\fR):
+.TP
+%a
+Access rights in octal
+.TP
+%A
+Access rights in human readable form
+.TP
+%b
+Number of blocks allocated (see %B)
+.TP
+%B
+The size in bytes of each block reported by %b
+.TP
+%d
+Device number in decimal
+.TP
+%D
+Device number in hex
+.TP
+%f
+Raw mode in hex
+.TP
+%F
+File type
+.TP
+%g
+Group ID of owner
+.TP
+%G
+Group name of owner
+.TP
+%h
+Number of hard links
+.TP
+%i
+Inode number
+.TP
+%n
+File name
+.TP
+%N
+Quoted file name with dereference if symbolic link
+.TP
+%o
+I/O block size
+.TP
+%s
+Total size, in bytes
+.TP
+%t
+Major device type in hex
+.TP
+%T
+Minor device type in hex
+.TP
+%u
+User ID of owner
+.TP
+%U
+User name of owner
+.TP
+%x
+Time of last access
+.TP
+%X
+Time of last access as seconds since Epoch
+.TP
+%y
+Time of last modification
+.TP
+%Y
+Time of last modification as seconds since Epoch
+.TP
+%z
+Time of last change
+.TP
+%Z
+Time of last change as seconds since Epoch
+.PP
+Valid format sequences for file systems:
+.TP
+%a
+Free blocks available to non\-superuser
+.TP
+%b
+Total data blocks in file system
+.TP
+%c
+Total file nodes in file system
+.TP
+%d
+Free file nodes in file system
+.TP
+%f
+Free blocks in file system
+.TP
+%i
+File System ID in hex
+.TP
+%l
+Maximum length of filenames
+.TP
+%n
+File name
+.TP
+%s
+Block size (for faster transfers)
+.TP
+%S
+Fundamental block size (for block counts)
+.TP
+%t
+Type in hex
+.TP
+%T
+Type in human readable form
+.PP
+NOTE: your shell may have its own version of stat, which usually supersedes
+the version described here. Please refer to your shell's documentation
+for details about the options it supports.
+.SH AUTHOR
+Written by Michael Meskes.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+stat(2)
+.PP
+The full documentation for
+.B stat
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B stat
+programs are properly installed at your site, the command
+.IP
+.B info stat
+.PP
+should give you access to the complete manual.
diff --git a/man/stat.x b/man/stat.x
new file mode 100644
index 0000000..f95b1dd
--- /dev/null
+++ b/man/stat.x
@@ -0,0 +1,6 @@
+[NAME]
+stat \- display file or file system status
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+stat(2)
diff --git a/man/stty.1 b/man/stty.1
new file mode 100644
index 0000000..de91668
--- /dev/null
+++ b/man/stty.1
@@ -0,0 +1,405 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH STTY "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+stty \- change and print terminal line settings
+.SH SYNOPSIS
+.B stty
+[\fI-F DEVICE\fR] [\fI--file=DEVICE\fR] [\fISETTING\fR]...
+.br
+.B stty
+[\fI-F DEVICE\fR] [\fI--file=DEVICE\fR] [\fI-a|--all\fR]
+.br
+.B stty
+[\fI-F DEVICE\fR] [\fI--file=DEVICE\fR] [\fI-g|--save\fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print or change terminal characteristics.
+.TP
+\fB\-a\fR, \fB\-\-all\fR
+print all current settings in human\-readable form
+.TP
+\fB\-g\fR, \fB\-\-save\fR
+print all current settings in a stty\-readable form
+.TP
+\fB\-F\fR, \fB\-\-file\fR=\fIDEVICE\fR
+open and use the specified DEVICE instead of stdin
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Optional \- before SETTING indicates negation. An * marks non\-POSIX
+settings. The underlying system defines which settings are available.
+.SS "Special characters:"
+.TP
+* dsusp CHAR
+CHAR will send a terminal stop signal once input flushed
+.TP
+eof CHAR
+CHAR will send an end of file (terminate the input)
+.TP
+eol CHAR
+CHAR will end the line
+.TP
+* eol2 CHAR
+alternate CHAR for ending the line
+.TP
+erase CHAR
+CHAR will erase the last character typed
+.TP
+intr CHAR
+CHAR will send an interrupt signal
+.TP
+kill CHAR
+CHAR will erase the current line
+.TP
+* lnext CHAR
+CHAR will enter the next character quoted
+.TP
+quit CHAR
+CHAR will send a quit signal
+.TP
+* rprnt CHAR
+CHAR will redraw the current line
+.TP
+start CHAR
+CHAR will restart the output after stopping it
+.TP
+stop CHAR
+CHAR will stop the output
+.TP
+susp CHAR
+CHAR will send a terminal stop signal
+.TP
+* swtch CHAR
+CHAR will switch to a different shell layer
+.TP
+* werase CHAR
+CHAR will erase the last word typed
+.SS "Special settings:"
+.TP
+N
+set the input and output speeds to N bauds
+.TP
+* cols N
+tell the kernel that the terminal has N columns
+.TP
+* columns N
+same as cols N
+.TP
+ispeed N
+set the input speed to N
+.TP
+* line N
+use line discipline N
+.TP
+min N
+with \fB\-icanon\fR, set N characters minimum for a completed read
+.TP
+ospeed N
+set the output speed to N
+.TP
+* rows N
+tell the kernel that the terminal has N rows
+.TP
+* size
+print the number of rows and columns according to the kernel
+.TP
+speed
+print the terminal speed
+.TP
+time N
+with \fB\-icanon\fR, set read timeout of N tenths of a second
+.SS "Control settings:"
+.TP
+[\-]clocal
+disable modem control signals
+.TP
+[\-]cread
+allow input to be received
+.TP
+* [\-]crtscts
+enable RTS/CTS handshaking
+.TP
+csN
+set character size to N bits, N in [5..8]
+.TP
+[\-]cstopb
+use two stop bits per character (one with `\-')
+.TP
+[\-]hup
+send a hangup signal when the last process closes the tty
+.TP
+[\-]hupcl
+same as [\-]hup
+.TP
+[\-]parenb
+generate parity bit in output and expect parity bit in input
+.TP
+[\-]parodd
+set odd parity (even with `\-')
+.SS "Input settings:"
+.TP
+[\-]brkint
+breaks cause an interrupt signal
+.TP
+[\-]icrnl
+translate carriage return to newline
+.TP
+[\-]ignbrk
+ignore break characters
+.TP
+[\-]igncr
+ignore carriage return
+.TP
+[\-]ignpar
+ignore characters with parity errors
+.TP
+* [\-]imaxbel
+beep and do not flush a full input buffer on a character
+.TP
+[\-]inlcr
+translate newline to carriage return
+.TP
+[\-]inpck
+enable input parity checking
+.TP
+[\-]istrip
+clear high (8th) bit of input characters
+.TP
+* [\-]iutf8
+assume input characters are UTF\-8 encoded
+.TP
+* [\-]iuclc
+translate uppercase characters to lowercase
+.TP
+* [\-]ixany
+let any character restart output, not only start character
+.TP
+[\-]ixoff
+enable sending of start/stop characters
+.TP
+[\-]ixon
+enable XON/XOFF flow control
+.TP
+[\-]parmrk
+mark parity errors (with a 255\-0\-character sequence)
+.TP
+[\-]tandem
+same as [\-]ixoff
+.SS "Output settings:"
+.TP
+* bsN
+backspace delay style, N in [0..1]
+.TP
+* crN
+carriage return delay style, N in [0..3]
+.TP
+* ffN
+form feed delay style, N in [0..1]
+.TP
+* nlN
+newline delay style, N in [0..1]
+.TP
+* [\-]ocrnl
+translate carriage return to newline
+.TP
+* [\-]ofdel
+use delete characters for fill instead of null characters
+.TP
+* [\-]ofill
+use fill (padding) characters instead of timing for delays
+.TP
+* [\-]olcuc
+translate lowercase characters to uppercase
+.TP
+* [\-]onlcr
+translate newline to carriage return\-newline
+.TP
+* [\-]onlret
+newline performs a carriage return
+.TP
+* [\-]onocr
+do not print carriage returns in the first column
+.TP
+[\-]opost
+postprocess output
+.TP
+* tabN
+horizontal tab delay style, N in [0..3]
+.TP
+* tabs
+same as tab0
+.TP
+* \fB\-tabs\fR
+same as tab3
+.TP
+* vtN
+vertical tab delay style, N in [0..1]
+.SS "Local settings:"
+.TP
+[\-]crterase
+echo erase characters as backspace\-space\-backspace
+.TP
+* crtkill
+kill all line by obeying the echoprt and echoe settings
+.TP
+* \fB\-crtkill\fR
+kill all line by obeying the echoctl and echok settings
+.TP
+* [\-]ctlecho
+echo control characters in hat notation (`^c')
+.TP
+[\-]echo
+echo input characters
+.TP
+* [\-]echoctl
+same as [\-]ctlecho
+.TP
+[\-]echoe
+same as [\-]crterase
+.TP
+[\-]echok
+echo a newline after a kill character
+.TP
+* [\-]echoke
+same as [\-]crtkill
+.TP
+[\-]echonl
+echo newline even if not echoing other characters
+.TP
+* [\-]echoprt
+echo erased characters backward, between `\e' and '/'
+.TP
+[\-]icanon
+enable erase, kill, werase, and rprnt special characters
+.TP
+[\-]iexten
+enable non\-POSIX special characters
+.TP
+[\-]isig
+enable interrupt, quit, and suspend special characters
+.TP
+[\-]noflsh
+disable flushing after interrupt and quit special characters
+.TP
+* [\-]prterase
+same as [\-]echoprt
+.TP
+* [\-]tostop
+stop background jobs that try to write to the terminal
+.TP
+* [\-]xcase
+with icanon, escape with `\e' for uppercase characters
+.SS "Combination settings:"
+.TP
+* [\-]LCASE
+same as [\-]lcase
+.TP
+cbreak
+same as \fB\-icanon\fR
+.TP
+\fB\-cbreak\fR
+same as icanon
+.TP
+cooked
+same as brkint ignpar istrip icrnl ixon opost isig
+icanon, eof and eol characters to their default values
+.TP
+\fB\-cooked\fR
+same as raw
+.TP
+crt
+same as echoe echoctl echoke
+.TP
+dec
+same as echoe echoctl echoke \fB\-ixany\fR intr ^c erase 0177
+kill ^u
+.TP
+* [\-]decctlq
+same as [\-]ixany
+.TP
+ek
+erase and kill characters to their default values
+.TP
+evenp
+same as parenb \fB\-parodd\fR cs7
+.TP
+\fB\-evenp\fR
+same as \fB\-parenb\fR cs8
+.TP
+* [\-]lcase
+same as xcase iuclc olcuc
+.TP
+litout
+same as \fB\-parenb\fR \fB\-istrip\fR \fB\-opost\fR cs8
+.TP
+\fB\-litout\fR
+same as parenb istrip opost cs7
+.TP
+nl
+same as \fB\-icrnl\fR \fB\-onlcr\fR
+.TP
+\fB\-nl\fR
+same as icrnl \fB\-inlcr\fR \fB\-igncr\fR onlcr \fB\-ocrnl\fR \fB\-onlret\fR
+.TP
+oddp
+same as parenb parodd cs7
+.TP
+\fB\-oddp\fR
+same as \fB\-parenb\fR cs8
+.TP
+[\-]parity
+same as [\-]evenp
+.TP
+pass8
+same as \fB\-parenb\fR \fB\-istrip\fR cs8
+.TP
+\fB\-pass8\fR
+same as parenb istrip cs7
+.TP
+raw
+same as \fB\-ignbrk\fR \fB\-brkint\fR \fB\-ignpar\fR \fB\-parmrk\fR \fB\-inpck\fR \fB\-istrip\fR
+\fB\-inlcr\fR \fB\-igncr\fR \fB\-icrnl\fR \fB\-ixon\fR \fB\-ixoff\fR \fB\-iuclc\fR \fB\-ixany\fR
+\fB\-imaxbel\fR \fB\-opost\fR \fB\-isig\fR \fB\-icanon\fR \fB\-xcase\fR min 1 time 0
+.TP
+\fB\-raw\fR
+same as cooked
+.TP
+sane
+same as cread \fB\-ignbrk\fR brkint \fB\-inlcr\fR \fB\-igncr\fR icrnl \fB\-iutf8\fR
+\fB\-ixoff\fR \fB\-iuclc\fR \fB\-ixany\fR imaxbel opost \fB\-olcuc\fR \fB\-ocrnl\fR onlcr
+\fB\-onocr\fR \fB\-onlret\fR \fB\-ofill\fR \fB\-ofdel\fR nl0 cr0 tab0 bs0 vt0 ff0
+isig icanon iexten echo echoe echok \fB\-echonl\fR \fB\-noflsh\fR
+\fB\-xcase\fR \fB\-tostop\fR \fB\-echoprt\fR echoctl echoke, all special
+characters to their default values.
+.PP
+Handle the tty line connected to standard input. Without arguments,
+prints baud rate, line discipline, and deviations from stty sane. In
+settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or
+127; special values ^\- or undef used to disable special characters.
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B stty
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B stty
+programs are properly installed at your site, the command
+.IP
+.B info stty
+.PP
+should give you access to the complete manual.
diff --git a/man/stty.x b/man/stty.x
new file mode 100644
index 0000000..f3e1e1f
--- /dev/null
+++ b/man/stty.x
@@ -0,0 +1,4 @@
+[NAME]
+stty \- change and print terminal line settings
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/su.1 b/man/su.1
new file mode 100644
index 0000000..ce9d040
--- /dev/null
+++ b/man/su.1
@@ -0,0 +1,59 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH SU "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+su \- run a shell with substitute user and group IDs
+.SH SYNOPSIS
+.B su
+[\fIOPTION\fR]... [\fI-\fR] [\fIUSER \fR[\fIARG\fR]...]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Change the effective user id and group id to that of USER.
+.TP
+\-, \fB\-l\fR, \fB\-\-login\fR
+make the shell a login shell
+.TP
+\fB\-c\fR, \fB\-\-command\fR=\fICOMMAND\fR
+pass a single COMMAND to the shell with \fB\-c\fR
+.TP
+\fB\-f\fR, \fB\-\-fast\fR
+pass \fB\-f\fR to the shell (for csh or tcsh)
+.TP
+\fB\-m\fR, \fB\-\-preserve\-environment\fR
+do not reset environment variables
+.TP
+\fB\-p\fR
+same as \fB\-m\fR
+.TP
+\fB\-s\fR, \fB\-\-shell\fR=\fISHELL\fR
+run SHELL if /etc/shells allows it
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+A mere \- implies \fB\-l\fR. If USER not given, assume root.
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B su
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B su
+programs are properly installed at your site, the command
+.IP
+.B info su
+.PP
+should give you access to the complete manual.
diff --git a/man/su.x b/man/su.x
new file mode 100644
index 0000000..b368dd6
--- /dev/null
+++ b/man/su.x
@@ -0,0 +1,4 @@
+[NAME]
+su \- run a shell with substitute user and group IDs
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/sum.1 b/man/sum.1
new file mode 100644
index 0000000..395c1f1
--- /dev/null
+++ b/man/sum.1
@@ -0,0 +1,47 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH SUM "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+sum \- checksum and count the blocks in a file
+.SH SYNOPSIS
+.B sum
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print checksum and block counts for each FILE.
+.TP
+\fB\-r\fR
+defeat \fB\-s\fR, use BSD sum algorithm, use 1K blocks
+.TP
+\fB\-s\fR, \fB\-\-sysv\fR
+use System V sum algorithm, use 512 bytes blocks
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+With no FILE, or when FILE is \-, read standard input.
+.SH AUTHOR
+Written by Kayvan Aghaiepour and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B sum
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B sum
+programs are properly installed at your site, the command
+.IP
+.B info sum
+.PP
+should give you access to the complete manual.
diff --git a/man/sum.x b/man/sum.x
new file mode 100644
index 0000000..a03b9cc
--- /dev/null
+++ b/man/sum.x
@@ -0,0 +1,4 @@
+[NAME]
+sum \- checksum and count the blocks in a file
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/sync.1 b/man/sync.1
new file mode 100644
index 0000000..a88c87b
--- /dev/null
+++ b/man/sync.1
@@ -0,0 +1,41 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH SYNC "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+sync \- flush file system buffers
+.SH SYNOPSIS
+.B sync
+[\fIOPTION\fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Force changed blocks to disk, update the super block.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+sync(2)
+.PP
+The full documentation for
+.B sync
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B sync
+programs are properly installed at your site, the command
+.IP
+.B info sync
+.PP
+should give you access to the complete manual.
diff --git a/man/sync.x b/man/sync.x
new file mode 100644
index 0000000..7947bb7
--- /dev/null
+++ b/man/sync.x
@@ -0,0 +1,6 @@
+[NAME]
+sync \- flush file system buffers
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+sync(2)
diff --git a/man/tac.1 b/man/tac.1
new file mode 100644
index 0000000..49f800b
--- /dev/null
+++ b/man/tac.1
@@ -0,0 +1,51 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH TAC "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+tac \- concatenate and print files in reverse
+.SH SYNOPSIS
+.B tac
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Write each FILE to standard output, last line first.
+With no FILE, or when FILE is \-, read standard input.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-b\fR, \fB\-\-before\fR
+attach the separator before instead of after
+.TP
+\fB\-r\fR, \fB\-\-regex\fR
+interpret the separator as a regular expression
+.TP
+\fB\-s\fR, \fB\-\-separator\fR=\fISTRING\fR
+use STRING as the separator instead of newline
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Jay Lepreau and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B tac
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B tac
+programs are properly installed at your site, the command
+.IP
+.B info tac
+.PP
+should give you access to the complete manual.
diff --git a/man/tac.x b/man/tac.x
new file mode 100644
index 0000000..d943afa
--- /dev/null
+++ b/man/tac.x
@@ -0,0 +1,4 @@
+[NAME]
+tac \- concatenate and print files in reverse
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/tail.1 b/man/tail.1
new file mode 100644
index 0000000..7e5074b
--- /dev/null
+++ b/man/tail.1
@@ -0,0 +1,97 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH TAIL "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+tail \- output the last part of files
+.SH SYNOPSIS
+.B tail
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print the last 10 lines of each FILE to standard output.
+With more than one FILE, precede each with a header giving the file name.
+With no FILE, or when FILE is \-, read standard input.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-\-retry\fR
+keep trying to open a file even if it is
+inaccessible when tail starts or if it becomes
+inaccessible later; useful when following by name,
+i.e., with \fB\-\-follow\fR=\fIname\fR
+.TP
+\fB\-c\fR, \fB\-\-bytes\fR=\fIN\fR
+output the last N bytes; alternatively, use +N to
+output bytes starting with the Nth of each file
+.TP
+\fB\-f\fR, \fB\-\-follow[=\fR{name|descriptor}]
+output appended data as the file grows;
+\fB\-f\fR, \fB\-\-follow\fR, and \fB\-\-follow\fR=\fIdescriptor\fR are
+equivalent
+.TP
+\fB\-F\fR
+same as \fB\-\-follow\fR=\fIname\fR \fB\-\-retry\fR
+.TP
+\fB\-n\fR, \fB\-\-lines\fR=\fIN\fR
+output the last N lines, instead of the last 10;
+or use +N to output lines starting with the Nth
+.TP
+\fB\-\-max\-unchanged\-stats\fR=\fIN\fR
+with \fB\-\-follow\fR=\fIname\fR, reopen a FILE which has not
+changed size after N (default 5) iterations
+to see if it has been unlinked or renamed
+(this is the usual case of rotated log files)
+.TP
+\fB\-\-pid\fR=\fIPID\fR
+with \fB\-f\fR, terminate after process ID, PID dies
+.TP
+\fB\-q\fR, \fB\-\-quiet\fR, \fB\-\-silent\fR
+never output headers giving file names
+.TP
+\fB\-s\fR, \fB\-\-sleep\-interval\fR=\fIS\fR
+with \fB\-f\fR, sleep for approximately S seconds
+(default 1.0) between iterations.
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+always output headers giving file names
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+If the first character of N (the number of bytes or lines) is a `+',
+print beginning with the Nth item from the start of each file, otherwise,
+print the last N items in the file. N may have a multiplier suffix:
+b 512, k 1024, m 1024*1024.
+.PP
+With \fB\-\-follow\fR (\fB\-f\fR), tail defaults to following the file descriptor, which
+means that even if a tail'ed file is renamed, tail will continue to track
+its end. This default behavior is not desirable when you really want to
+track the actual name of the file, not the file descriptor (e.g., log
+rotation). Use \fB\-\-follow\fR=\fIname\fR in that case. That causes tail to track the
+named file by reopening it periodically to see if it has been removed and
+recreated by some other program.
+.SH AUTHOR
+Written by Paul Rubin, David MacKenzie, Ian Lance Taylor, and Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B tail
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B tail
+programs are properly installed at your site, the command
+.IP
+.B info tail
+.PP
+should give you access to the complete manual.
diff --git a/man/tail.x b/man/tail.x
new file mode 100644
index 0000000..2ede04c
--- /dev/null
+++ b/man/tail.x
@@ -0,0 +1,4 @@
+[NAME]
+tail \- output the last part of files
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/tee.1 b/man/tee.1
new file mode 100644
index 0000000..7735a24
--- /dev/null
+++ b/man/tee.1
@@ -0,0 +1,47 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH TEE "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+tee \- read from standard input and write to standard output and files
+.SH SYNOPSIS
+.B tee
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Copy standard input to each FILE, and also to standard output.
+.TP
+\fB\-a\fR, \fB\-\-append\fR
+append to the given FILEs, do not overwrite
+.TP
+\fB\-i\fR, \fB\-\-ignore\-interrupts\fR
+ignore interrupt signals
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+If a FILE is \-, copy again to standard output.
+.SH AUTHOR
+Written by Mike Parker, Richard M. Stallman, and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B tee
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B tee
+programs are properly installed at your site, the command
+.IP
+.B info tee
+.PP
+should give you access to the complete manual.
diff --git a/man/tee.x b/man/tee.x
new file mode 100644
index 0000000..e5854cf
--- /dev/null
+++ b/man/tee.x
@@ -0,0 +1,4 @@
+[NAME]
+tee \- read from standard input and write to standard output and files
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/test.1 b/man/test.1
new file mode 100644
index 0000000..ffb6a7b
--- /dev/null
+++ b/man/test.1
@@ -0,0 +1,173 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH TEST "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+test \- check file types and compare values
+.SH SYNOPSIS
+.B test
+\fIEXPRESSION\fR
+.br
+.B test
+
+.br
+.B [
+\fIEXPRESSION \fR]
+.br
+.B [
+]
+.br
+.B [
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Exit with the status determined by EXPRESSION.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+An omitted EXPRESSION defaults to false. Otherwise,
+EXPRESSION is true or false and sets exit status. It is one of:
+.TP
+( EXPRESSION )
+EXPRESSION is true
+.TP
+! EXPRESSION
+EXPRESSION is false
+.TP
+EXPRESSION1 \fB\-a\fR EXPRESSION2
+both EXPRESSION1 and EXPRESSION2 are true
+.TP
+EXPRESSION1 \fB\-o\fR EXPRESSION2
+either EXPRESSION1 or EXPRESSION2 is true
+.TP
+\fB\-n\fR STRING
+the length of STRING is nonzero
+.TP
+STRING
+equivalent to \fB\-n\fR STRING
+.TP
+\fB\-z\fR STRING
+the length of STRING is zero
+.TP
+STRING1 = STRING2
+the strings are equal
+.TP
+STRING1 != STRING2
+the strings are not equal
+.TP
+INTEGER1 \fB\-eq\fR INTEGER2
+INTEGER1 is equal to INTEGER2
+.TP
+INTEGER1 \fB\-ge\fR INTEGER2
+INTEGER1 is greater than or equal to INTEGER2
+.TP
+INTEGER1 \fB\-gt\fR INTEGER2
+INTEGER1 is greater than INTEGER2
+.TP
+INTEGER1 \fB\-le\fR INTEGER2
+INTEGER1 is less than or equal to INTEGER2
+.TP
+INTEGER1 \fB\-lt\fR INTEGER2
+INTEGER1 is less than INTEGER2
+.TP
+INTEGER1 \fB\-ne\fR INTEGER2
+INTEGER1 is not equal to INTEGER2
+.TP
+FILE1 \fB\-ef\fR FILE2
+FILE1 and FILE2 have the same device and inode numbers
+.TP
+FILE1 \fB\-nt\fR FILE2
+FILE1 is newer (modification date) than FILE2
+.TP
+FILE1 \fB\-ot\fR FILE2
+FILE1 is older than FILE2
+.TP
+\fB\-b\fR FILE
+FILE exists and is block special
+.TP
+\fB\-c\fR FILE
+FILE exists and is character special
+.TP
+\fB\-d\fR FILE
+FILE exists and is a directory
+.TP
+\fB\-e\fR FILE
+FILE exists
+.TP
+\fB\-f\fR FILE
+FILE exists and is a regular file
+.TP
+\fB\-g\fR FILE
+FILE exists and is set\-group\-ID
+.TP
+\fB\-G\fR FILE
+FILE exists and is owned by the effective group ID
+.TP
+\fB\-h\fR FILE
+FILE exists and is a symbolic link (same as \fB\-L\fR)
+.TP
+\fB\-k\fR FILE
+FILE exists and has its sticky bit set
+.TP
+\fB\-L\fR FILE
+FILE exists and is a symbolic link (same as \fB\-h\fR)
+.TP
+\fB\-O\fR FILE
+FILE exists and is owned by the effective user ID
+.TP
+\fB\-p\fR FILE
+FILE exists and is a named pipe
+.TP
+\fB\-r\fR FILE
+FILE exists and read permission is granted
+.TP
+\fB\-s\fR FILE
+FILE exists and has a size greater than zero
+.TP
+\fB\-S\fR FILE
+FILE exists and is a socket
+.TP
+\fB\-t\fR FD
+file descriptor FD is opened on a terminal
+.TP
+\fB\-u\fR FILE
+FILE exists and its set\-user\-ID bit is set
+.TP
+\fB\-w\fR FILE
+FILE exists and write permission is granted
+.TP
+\fB\-x\fR FILE
+FILE exists and execute (or search) permission is granted
+.PP
+Except for \fB\-h\fR and \fB\-L\fR, all FILE\-related tests dereference symbolic links.
+Beware that parentheses need to be escaped (e.g., by backslashes) for shells.
+INTEGER may also be \fB\-l\fR STRING, which evaluates to the length of STRING.
+.PP
+NOTE: your shell may have its own version of test and/or [, which usually supersedes
+the version described here. Please refer to your shell's documentation
+for details about the options it supports.
+.SH AUTHOR
+Written by Kevin Braunsdorf and Matthew Bradburn.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B test
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B test
+programs are properly installed at your site, the command
+.IP
+.B info test
+.PP
+should give you access to the complete manual.
diff --git a/man/test.x b/man/test.x
new file mode 100644
index 0000000..8d5bcff
--- /dev/null
+++ b/man/test.x
@@ -0,0 +1,4 @@
+[NAME]
+test \- check file types and compare values
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/touch.1 b/man/touch.1
new file mode 100644
index 0000000..2130b97
--- /dev/null
+++ b/man/touch.1
@@ -0,0 +1,71 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH TOUCH "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+touch \- change file timestamps
+.SH SYNOPSIS
+.B touch
+[\fIOPTION\fR]... \fIFILE\fR...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Update the access and modification times of each FILE to the current time.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-a\fR
+change only the access time
+.TP
+\fB\-c\fR, \fB\-\-no\-create\fR
+do not create any files
+.TP
+\fB\-d\fR, \fB\-\-date\fR=\fISTRING\fR
+parse STRING and use it instead of current time
+.TP
+\fB\-f\fR
+(ignored)
+.TP
+\fB\-m\fR
+change only the modification time
+.TP
+\fB\-r\fR, \fB\-\-reference\fR=\fIFILE\fR
+use this file's times instead of current time
+.TP
+\fB\-t\fR STAMP
+use [[CC]YY]MMDDhhmm[.ss] instead of current time
+.TP
+\fB\-\-time\fR=\fIWORD\fR
+change the specified time:
+WORD is access, atime, or use: equivalent to \fB\-a\fR
+WORD is modify or mtime: equivalent to \fB\-m\fR
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+Note that the \fB\-d\fR and \fB\-t\fR options accept different time\-date formats.
+.PP
+If a FILE is \-, touch standard output.
+.SH AUTHOR
+Written by Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie, and Randy Smith.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B touch
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B touch
+programs are properly installed at your site, the command
+.IP
+.B info touch
+.PP
+should give you access to the complete manual.
diff --git a/man/touch.x b/man/touch.x
new file mode 100644
index 0000000..64b99df
--- /dev/null
+++ b/man/touch.x
@@ -0,0 +1,4 @@
+[NAME]
+touch \- change file timestamps
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/tr.1 b/man/tr.1
new file mode 100644
index 0000000..8cd224c
--- /dev/null
+++ b/man/tr.1
@@ -0,0 +1,141 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH TR "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+tr \- translate or delete characters
+.SH SYNOPSIS
+.B tr
+[\fIOPTION\fR]... \fISET1 \fR[\fISET2\fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Translate, squeeze, and/or delete characters from standard input,
+writing to standard output.
+.TP
+\fB\-c\fR, \fB\-C\fR, \fB\-\-complement\fR
+first complement SET1
+.TP
+\fB\-d\fR, \fB\-\-delete\fR
+delete characters in SET1, do not translate
+.TP
+\fB\-s\fR, \fB\-\-squeeze\-repeats\fR
+replace each input sequence of a repeated character
+that is listed in SET1 with a single occurrence
+of that character
+.TP
+\fB\-t\fR, \fB\-\-truncate\-set1\fR
+first truncate SET1 to length of SET2
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+SETs are specified as strings of characters. Most represent themselves.
+Interpreted sequences are:
+.TP
+\eNNN
+character with octal value NNN (1 to 3 octal digits)
+.TP
+\e\e
+backslash
+.TP
+\ea
+audible BEL
+.TP
+\eb
+backspace
+.TP
+\ef
+form feed
+.TP
+\en
+new line
+.TP
+\er
+return
+.TP
+\et
+horizontal tab
+.TP
+\ev
+vertical tab
+.TP
+CHAR1\-CHAR2
+all characters from CHAR1 to CHAR2 in ascending order
+.TP
+[CHAR*]
+in SET2, copies of CHAR until length of SET1
+.TP
+[CHAR*REPEAT]
+REPEAT copies of CHAR, REPEAT octal if starting with 0
+.TP
+[:alnum:]
+all letters and digits
+.TP
+[:alpha:]
+all letters
+.TP
+[:blank:]
+all horizontal whitespace
+.TP
+[:cntrl:]
+all control characters
+.TP
+[:digit:]
+all digits
+.TP
+[:graph:]
+all printable characters, not including space
+.TP
+[:lower:]
+all lower case letters
+.TP
+[:print:]
+all printable characters, including space
+.TP
+[:punct:]
+all punctuation characters
+.TP
+[:space:]
+all horizontal or vertical whitespace
+.TP
+[:upper:]
+all upper case letters
+.TP
+[:xdigit:]
+all hexadecimal digits
+.TP
+[=CHAR=]
+all characters which are equivalent to CHAR
+.PP
+Translation occurs if \fB\-d\fR is not given and both SET1 and SET2 appear.
+\fB\-t\fR may be used only when translating. SET2 is extended to length of
+SET1 by repeating its last character as necessary. Excess characters
+of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to
+expand in ascending order; used in SET2 while translating, they may
+only be used in pairs to specify case conversion. \fB\-s\fR uses SET1 if not
+translating nor deleting; else squeezing uses SET2 and occurs after
+translation or deletion.
+.SH AUTHOR
+Written by Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B tr
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B tr
+programs are properly installed at your site, the command
+.IP
+.B info tr
+.PP
+should give you access to the complete manual.
diff --git a/man/tr.x b/man/tr.x
new file mode 100644
index 0000000..f28f1b0
--- /dev/null
+++ b/man/tr.x
@@ -0,0 +1,4 @@
+[NAME]
+tr \- translate or delete characters
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/true.1 b/man/true.1
new file mode 100644
index 0000000..58f979f
--- /dev/null
+++ b/man/true.1
@@ -0,0 +1,46 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH TRUE "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+true \- do nothing, successfully
+.SH SYNOPSIS
+.B true
+[\fIignored command line arguments\fR]
+.br
+.B true
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Exit with a status code indicating success.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+NOTE: your shell may have its own version of true, which usually supersedes
+the version described here. Please refer to your shell's documentation
+for details about the options it supports.
+.SH AUTHOR
+Written by Jim Meyering.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B true
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B true
+programs are properly installed at your site, the command
+.IP
+.B info true
+.PP
+should give you access to the complete manual.
diff --git a/man/true.x b/man/true.x
new file mode 100644
index 0000000..8eb4151
--- /dev/null
+++ b/man/true.x
@@ -0,0 +1,4 @@
+[NAME]
+true \- do nothing, successfully
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/tsort.1 b/man/tsort.1
new file mode 100644
index 0000000..7735bb9
--- /dev/null
+++ b/man/tsort.1
@@ -0,0 +1,40 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH TSORT "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+tsort \- perform topological sort
+.SH SYNOPSIS
+.B tsort
+[\fIOPTION\fR] [\fIFILE\fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Write totally ordered list consistent with the partial ordering in FILE.
+With no FILE, or when FILE is \-, read standard input.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Mark Kettenis.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B tsort
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B tsort
+programs are properly installed at your site, the command
+.IP
+.B info tsort
+.PP
+should give you access to the complete manual.
diff --git a/man/tsort.x b/man/tsort.x
new file mode 100644
index 0000000..8ed3de9
--- /dev/null
+++ b/man/tsort.x
@@ -0,0 +1,4 @@
+[NAME]
+tsort \- perform topological sort
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/tty.1 b/man/tty.1
new file mode 100644
index 0000000..9586a24
--- /dev/null
+++ b/man/tty.1
@@ -0,0 +1,42 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH TTY "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+tty \- print the file name of the terminal connected to standard input
+.SH SYNOPSIS
+.B tty
+[\fIOPTION\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print the file name of the terminal connected to standard input.
+.TP
+\fB\-s\fR, \fB\-\-silent\fR, \fB\-\-quiet\fR
+print nothing, only return an exit status
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B tty
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B tty
+programs are properly installed at your site, the command
+.IP
+.B info tty
+.PP
+should give you access to the complete manual.
diff --git a/man/tty.x b/man/tty.x
new file mode 100644
index 0000000..7f0996f
--- /dev/null
+++ b/man/tty.x
@@ -0,0 +1,4 @@
+[NAME]
+tty \- print the file name of the terminal connected to standard input
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/uname.1 b/man/uname.1
new file mode 100644
index 0000000..66c3c31
--- /dev/null
+++ b/man/uname.1
@@ -0,0 +1,69 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH UNAME "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+uname \- print system information
+.SH SYNOPSIS
+.B uname
+[\fIOPTION\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print certain system information. With no OPTION, same as \fB\-s\fR.
+.TP
+\fB\-a\fR, \fB\-\-all\fR
+print all information, in the following order,
+except omit \fB\-p\fR and \fB\-i\fR if unknown:
+.TP
+\fB\-s\fR, \fB\-\-kernel\-name\fR
+print the kernel name
+.TP
+\fB\-n\fR, \fB\-\-nodename\fR
+print the network node hostname
+.TP
+\fB\-r\fR, \fB\-\-kernel\-release\fR
+print the kernel release
+.TP
+\fB\-v\fR, \fB\-\-kernel\-version\fR
+print the kernel version
+.TP
+\fB\-m\fR, \fB\-\-machine\fR
+print the machine hardware name
+.TP
+\fB\-p\fR, \fB\-\-processor\fR
+print the processor type or "unknown"
+.TP
+\fB\-i\fR, \fB\-\-hardware\-platform\fR
+print the hardware platform or "unknown"
+.TP
+\fB\-o\fR, \fB\-\-operating\-system\fR
+print the operating system
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+uname(2)
+.PP
+The full documentation for
+.B uname
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B uname
+programs are properly installed at your site, the command
+.IP
+.B info uname
+.PP
+should give you access to the complete manual.
diff --git a/man/uname.x b/man/uname.x
new file mode 100644
index 0000000..b019140
--- /dev/null
+++ b/man/uname.x
@@ -0,0 +1,6 @@
+[NAME]
+uname \- print system information
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+uname(2)
diff --git a/man/unexpand.1 b/man/unexpand.1
new file mode 100644
index 0000000..c5e1c19
--- /dev/null
+++ b/man/unexpand.1
@@ -0,0 +1,56 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH UNEXPAND "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+unexpand \- convert spaces to tabs
+.SH SYNOPSIS
+.B unexpand
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Convert blanks in each FILE to tabs, writing to standard output.
+With no FILE, or when FILE is \-, read standard input.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-a\fR, \fB\-\-all\fR
+convert all blanks, instead of just initial blanks
+.TP
+\fB\-\-first\-only\fR
+convert only leading sequences of blanks (overrides \fB\-a\fR)
+.TP
+\fB\-t\fR, \fB\-\-tabs\fR=\fIN\fR
+have tabs N characters apart instead of 8 (enables \fB\-a\fR)
+.TP
+\fB\-t\fR, \fB\-\-tabs\fR=\fILIST\fR
+use comma separated LIST of tab positions (enables \fB\-a\fR)
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+expand(1)
+.PP
+The full documentation for
+.B unexpand
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B unexpand
+programs are properly installed at your site, the command
+.IP
+.B info unexpand
+.PP
+should give you access to the complete manual.
diff --git a/man/unexpand.x b/man/unexpand.x
new file mode 100644
index 0000000..08bc2ad
--- /dev/null
+++ b/man/unexpand.x
@@ -0,0 +1,6 @@
+[NAME]
+unexpand \- convert spaces to tabs
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+expand(1)
diff --git a/man/uniq.1 b/man/uniq.1
new file mode 100644
index 0000000..881d448
--- /dev/null
+++ b/man/uniq.1
@@ -0,0 +1,71 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH UNIQ "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+uniq \- report or omit repeated lines
+.SH SYNOPSIS
+.B uniq
+[\fIOPTION\fR]... [\fIINPUT \fR[\fIOUTPUT\fR]]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Discard all but one of successive identical lines from INPUT (or
+standard input), writing to OUTPUT (or standard output).
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-c\fR, \fB\-\-count\fR
+prefix lines by the number of occurrences
+.TP
+\fB\-d\fR, \fB\-\-repeated\fR
+only print duplicate lines
+.TP
+\fB\-D\fR, \fB\-\-all\-repeated\fR[=\fIdelimit\-method\fR]
+print all duplicate lines
+delimit\-method={none(default),prepend,separate}
+Delimiting is done with blank lines.
+.TP
+\fB\-f\fR, \fB\-\-skip\-fields\fR=\fIN\fR
+avoid comparing the first N fields
+.TP
+\fB\-i\fR, \fB\-\-ignore\-case\fR
+ignore differences in case when comparing
+.TP
+\fB\-s\fR, \fB\-\-skip\-chars\fR=\fIN\fR
+avoid comparing the first N characters
+.TP
+\fB\-u\fR, \fB\-\-unique\fR
+only print unique lines
+.TP
+\fB\-w\fR, \fB\-\-check\-chars\fR=\fIN\fR
+compare no more than N characters in lines
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+A field is a run of whitespace, then non\-whitespace characters.
+Fields are skipped before chars.
+.SH AUTHOR
+Written by Richard Stallman and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B uniq
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B uniq
+programs are properly installed at your site, the command
+.IP
+.B info uniq
+.PP
+should give you access to the complete manual.
diff --git a/man/uniq.x b/man/uniq.x
new file mode 100644
index 0000000..0221d92
--- /dev/null
+++ b/man/uniq.x
@@ -0,0 +1,4 @@
+[NAME]
+uniq \- report or omit repeated lines
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/unlink.1 b/man/unlink.1
new file mode 100644
index 0000000..d5f6f0e
--- /dev/null
+++ b/man/unlink.1
@@ -0,0 +1,44 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH UNLINK "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+unlink \- call the unlink function to remove the specified file
+.SH SYNOPSIS
+.B unlink
+\fIFILE\fR
+.br
+.B unlink
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Call the unlink function to remove the specified FILE.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Michael Stone.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+unlink(2)
+.PP
+The full documentation for
+.B unlink
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B unlink
+programs are properly installed at your site, the command
+.IP
+.B info unlink
+.PP
+should give you access to the complete manual.
diff --git a/man/unlink.x b/man/unlink.x
new file mode 100644
index 0000000..d12cc2e
--- /dev/null
+++ b/man/unlink.x
@@ -0,0 +1,6 @@
+[NAME]
+unlink \- call the unlink function to remove the specified file
+[DESCRIPTION]
+.\" Add any additional description here
+[SEE ALSO]
+unlink(2)
diff --git a/man/uptime.1 b/man/uptime.1
new file mode 100644
index 0000000..17b274d
--- /dev/null
+++ b/man/uptime.1
@@ -0,0 +1,42 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH UPTIME "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+uptime \- tell how long the system has been running
+.SH SYNOPSIS
+.B uptime
+[\fIOPTION\fR]... [ \fIFILE \fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print the current time, the length of time the system has been up,
+the number of users on the system, and the average number of jobs
+in the run queue over the last 1, 5 and 15 minutes.
+If FILE is not specified, use /var/run/utmp. /var/log/wtmp as FILE is common.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Joseph Arceneaux, David MacKenzie, and Kaveh Ghazi.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B uptime
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B uptime
+programs are properly installed at your site, the command
+.IP
+.B info uptime
+.PP
+should give you access to the complete manual.
diff --git a/man/uptime.x b/man/uptime.x
new file mode 100644
index 0000000..5a86581
--- /dev/null
+++ b/man/uptime.x
@@ -0,0 +1,4 @@
+[NAME]
+uptime \- tell how long the system has been running
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/users.1 b/man/users.1
new file mode 100644
index 0000000..c8ca43b
--- /dev/null
+++ b/man/users.1
@@ -0,0 +1,40 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH USERS "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+users \- print the user names of users currently logged in to the current host
+.SH SYNOPSIS
+.B users
+[\fIOPTION\fR]... [ \fIFILE \fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Output who is currently logged in according to FILE.
+If FILE is not specified, use /var/run/utmp. /var/log/wtmp as FILE is common.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Joseph Arceneaux and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B users
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B users
+programs are properly installed at your site, the command
+.IP
+.B info users
+.PP
+should give you access to the complete manual.
diff --git a/man/users.x b/man/users.x
new file mode 100644
index 0000000..ca0f9ca
--- /dev/null
+++ b/man/users.x
@@ -0,0 +1,4 @@
+[NAME]
+users \- print the user names of users currently logged in to the current host
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/vdir.1 b/man/vdir.1
new file mode 100644
index 0000000..d6ca7fa
--- /dev/null
+++ b/man/vdir.1
@@ -0,0 +1,247 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH VDIR "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+vdir \- list directory contents
+.SH SYNOPSIS
+.B vdir
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+List information about the FILEs (the current directory by default).
+Sort entries alphabetically if none of \fB\-cftuvSUX\fR nor \fB\-\-sort\fR.
+.PP
+Mandatory arguments to long options are mandatory for short options too.
+.TP
+\fB\-a\fR, \fB\-\-all\fR
+do not ignore entries starting with .
+.TP
+\fB\-A\fR, \fB\-\-almost\-all\fR
+do not list implied . and ..
+.TP
+\fB\-\-author\fR
+with \fB\-l\fR, print the author of each file
+.TP
+\fB\-b\fR, \fB\-\-escape\fR
+print octal escapes for nongraphic characters
+.TP
+\fB\-\-block\-size\fR=\fISIZE\fR
+use SIZE\-byte blocks
+.TP
+\fB\-B\fR, \fB\-\-ignore\-backups\fR
+do not list implied entries ending with ~
+.TP
+\fB\-c\fR
+with \fB\-lt\fR: sort by, and show, ctime (time of last
+modification of file status information)
+with \fB\-l\fR: show ctime and sort by name
+otherwise: sort by ctime
+.TP
+\fB\-C\fR
+list entries by columns
+.TP
+\fB\-\-color\fR[=\fIWHEN\fR]
+control whether color is used to distinguish file
+types. WHEN may be `never', `always', or `auto'
+.TP
+\fB\-d\fR, \fB\-\-directory\fR
+list directory entries instead of contents,
+and do not dereference symbolic links
+.TP
+\fB\-D\fR, \fB\-\-dired\fR
+generate output designed for Emacs' dired mode
+.TP
+\fB\-f\fR
+do not sort, enable \fB\-aU\fR, disable \fB\-ls\fR \fB\-\-color\fR
+.TP
+\fB\-F\fR, \fB\-\-classify\fR
+append indicator (one of */=>@|) to entries
+.TP
+\fB\-\-file\-type\fR
+likewise, except do not append `*'
+.TP
+\fB\-\-format\fR=\fIWORD\fR
+across \fB\-x\fR, commas \fB\-m\fR, horizontal \fB\-x\fR, long \fB\-l\fR,
+single\-column \fB\-1\fR, verbose \fB\-l\fR, vertical \fB\-C\fR
+.TP
+\fB\-\-full\-time\fR
+like \fB\-l\fR \fB\-\-time\-style\fR=\fIfull\-iso\fR
+.TP
+\fB\-g\fR
+like \fB\-l\fR, but do not list owner
+.TP
+\fB\-\-group\-directories\-first\fR
+group directories before files
+.TP
+\fB\-G\fR, \fB\-\-no\-group\fR
+in a long listing, don't print group names
+.TP
+\fB\-h\fR, \fB\-\-human\-readable\fR
+with \fB\-l\fR, print sizes in human readable format
+(e.g., 1K 234M 2G)
+.TP
+\fB\-\-si\fR
+likewise, but use powers of 1000 not 1024
+.TP
+\fB\-H\fR, \fB\-\-dereference\-command\-line\fR
+follow symbolic links listed on the command line
+.TP
+\fB\-\-dereference\-command\-line\-symlink\-to\-dir\fR
+follow each command line symbolic link
+that points to a directory
+.TP
+\fB\-\-hide\fR=\fIPATTERN\fR
+do not list implied entries matching shell PATTERN
+(overridden by \fB\-a\fR or \fB\-A\fR)
+.TP
+\fB\-\-indicator\-style\fR=\fIWORD\fR
+append indicator with style WORD to entry names:
+none (default), slash (\fB\-p\fR),
+file\-type (\fB\-\-file\-type\fR), classify (\fB\-F\fR)
+.TP
+\fB\-i\fR, \fB\-\-inode\fR
+print the index number of each file
+.TP
+\fB\-I\fR, \fB\-\-ignore\fR=\fIPATTERN\fR
+do not list implied entries matching shell PATTERN
+.TP
+\fB\-k\fR
+like \fB\-\-block\-size\fR=\fI1K\fR
+.TP
+\fB\-l\fR
+use a long listing format
+.TP
+\fB\-L\fR, \fB\-\-dereference\fR
+when showing file information for a symbolic
+link, show information for the file the link
+references rather than for the link itself
+.TP
+\fB\-m\fR
+fill width with a comma separated list of entries
+.TP
+\fB\-n\fR, \fB\-\-numeric\-uid\-gid\fR
+like \fB\-l\fR, but list numeric user and group IDs
+.TP
+\fB\-N\fR, \fB\-\-literal\fR
+print raw entry names (don't treat e.g. control
+characters specially)
+.TP
+\fB\-o\fR
+like \fB\-l\fR, but do not list group information
+.TP
+\fB\-p\fR, \fB\-\-indicator\-style\fR=\fIslash\fR
+append / indicator to directories
+.TP
+\fB\-q\fR, \fB\-\-hide\-control\-chars\fR
+print ? instead of non graphic characters
+.TP
+\fB\-\-show\-control\-chars\fR
+show non graphic characters as\-is (default
+unless program is `ls' and output is a terminal)
+.TP
+\fB\-Q\fR, \fB\-\-quote\-name\fR
+enclose entry names in double quotes
+.TP
+\fB\-\-quoting\-style\fR=\fIWORD\fR
+use quoting style WORD for entry names:
+literal, locale, shell, shell\-always, c, escape
+.TP
+\fB\-r\fR, \fB\-\-reverse\fR
+reverse order while sorting
+.TP
+\fB\-R\fR, \fB\-\-recursive\fR
+list subdirectories recursively
+.TP
+\fB\-s\fR, \fB\-\-size\fR
+print the size of each file, in blocks
+.TP
+\fB\-S\fR
+sort by file size
+.TP
+\fB\-\-sort\fR=\fIWORD\fR
+sort by WORD instead of name: none \fB\-U\fR,
+extension \fB\-X\fR, size \fB\-S\fR, time \fB\-t\fR, version \fB\-v\fR
+.TP
+\fB\-\-time\fR=\fIWORD\fR
+with \fB\-l\fR, show time as WORD instead of modification
+time: atime \fB\-u\fR, access \fB\-u\fR, use \fB\-u\fR, ctime \fB\-c\fR,
+or status \fB\-c\fR; use specified time as sort key
+if \fB\-\-sort\fR=\fItime\fR
+.TP
+\fB\-\-time\-style\fR=\fISTYLE\fR
+with \fB\-l\fR, show times using style STYLE:
+full\-iso, long\-iso, iso, locale, +FORMAT.
+FORMAT is interpreted like `date'; if FORMAT is
+FORMAT1<newline>FORMAT2, FORMAT1 applies to
+non\-recent files and FORMAT2 to recent files;
+if STYLE is prefixed with `posix\-', STYLE
+takes effect only outside the POSIX locale
+.TP
+\fB\-t\fR
+sort by modification time
+.TP
+\fB\-T\fR, \fB\-\-tabsize\fR=\fICOLS\fR
+assume tab stops at each COLS instead of 8
+.TP
+\fB\-u\fR
+with \fB\-lt\fR: sort by, and show, access time
+with \fB\-l\fR: show access time and sort by name
+otherwise: sort by access time
+.TP
+\fB\-U\fR
+do not sort; list entries in directory order
+.TP
+\fB\-v\fR
+sort by version
+.TP
+\fB\-w\fR, \fB\-\-width\fR=\fICOLS\fR
+assume screen width instead of current value
+.TP
+\fB\-x\fR
+list entries by lines instead of by columns
+.TP
+\fB\-X\fR
+sort alphabetically by entry extension
+.TP
+\fB\-1\fR
+list one file per line
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+SIZE may be (or may be an integer optionally followed by) one of following:
+kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.
+.PP
+By default, color is not used to distinguish types of files. That is
+equivalent to using \fB\-\-color\fR=\fInone\fR. Using the \fB\-\-color\fR option without the
+optional WHEN argument is equivalent to using \fB\-\-color\fR=\fIalways\fR. With
+\fB\-\-color\fR=\fIauto\fR, color codes are output only if standard output is connected
+to a terminal (tty). The environment variable LS_COLORS can influence the
+colors, and can be set easily by the dircolors command.
+.PP
+Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.
+.SH AUTHOR
+Written by Richard Stallman and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B vdir
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B vdir
+programs are properly installed at your site, the command
+.IP
+.B info vdir
+.PP
+should give you access to the complete manual.
diff --git a/man/vdir.x b/man/vdir.x
new file mode 100644
index 0000000..60c02b7
--- /dev/null
+++ b/man/vdir.x
@@ -0,0 +1,4 @@
+[NAME]
+vdir \- list directory contents
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/wc.1 b/man/wc.1
new file mode 100644
index 0000000..475678f
--- /dev/null
+++ b/man/wc.1
@@ -0,0 +1,63 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH WC "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+wc \- print newline, word, and byte counts for each file
+.SH SYNOPSIS
+.B wc
+[\fIOPTION\fR]... [\fIFILE\fR]...
+.br
+.B wc
+[\fIOPTION\fR]... \fI--files0-from=F\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print newline, word, and byte counts for each FILE, and a total line if
+more than one FILE is specified. With no FILE, or when FILE is \-,
+read standard input.
+.TP
+\fB\-c\fR, \fB\-\-bytes\fR
+print the byte counts
+.TP
+\fB\-m\fR, \fB\-\-chars\fR
+print the character counts
+.TP
+\fB\-l\fR, \fB\-\-lines\fR
+print the newline counts
+.TP
+\fB\-\-files0\-from\fR=\fIF\fR
+read input from the files specified by
+NUL\-terminated names in file F
+.TP
+\fB\-L\fR, \fB\-\-max\-line\-length\fR
+print the length of the longest line
+.TP
+\fB\-w\fR, \fB\-\-words\fR
+print the word counts
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Paul Rubin and David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B wc
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B wc
+programs are properly installed at your site, the command
+.IP
+.B info wc
+.PP
+should give you access to the complete manual.
diff --git a/man/wc.x b/man/wc.x
new file mode 100644
index 0000000..e1d9b4b
--- /dev/null
+++ b/man/wc.x
@@ -0,0 +1,4 @@
+[NAME]
+wc \- print newline, word, and byte counts for each file
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/who.1 b/man/who.1
new file mode 100644
index 0000000..733f62b
--- /dev/null
+++ b/man/who.1
@@ -0,0 +1,88 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH WHO "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+who \- show who is logged on
+.SH SYNOPSIS
+.B who
+[\fIOPTION\fR]... [ \fIFILE | ARG1 ARG2 \fR]
+.SH DESCRIPTION
+.\" Add any additional description here
+.TP
+\fB\-a\fR, \fB\-\-all\fR
+same as \fB\-b\fR \fB\-d\fR \fB\-\-login\fR \fB\-p\fR \fB\-r\fR \fB\-t\fR \fB\-T\fR \fB\-u\fR
+.TP
+\fB\-b\fR, \fB\-\-boot\fR
+time of last system boot
+.TP
+\fB\-d\fR, \fB\-\-dead\fR
+print dead processes
+.TP
+\fB\-H\fR, \fB\-\-heading\fR
+print line of column headings
+.TP
+\fB\-l\fR, \fB\-\-login\fR
+print system login processes
+.TP
+\fB\-\-lookup\fR
+attempt to canonicalize hostnames via DNS
+.TP
+\fB\-m\fR
+only hostname and user associated with stdin
+.TP
+\fB\-p\fR, \fB\-\-process\fR
+print active processes spawned by init
+.TP
+\fB\-q\fR, \fB\-\-count\fR
+all login names and number of users logged on
+.TP
+\fB\-r\fR, \fB\-\-runlevel\fR
+print current runlevel
+.TP
+\fB\-s\fR, \fB\-\-short\fR
+print only name, line, and time (default)
+.TP
+\fB\-t\fR, \fB\-\-time\fR
+print last system clock change
+.TP
+\fB\-T\fR, \fB\-w\fR, \fB\-\-mesg\fR
+add user's message status as +, \- or ?
+.TP
+\fB\-u\fR, \fB\-\-users\fR
+list users logged in
+.TP
+\fB\-\-message\fR
+same as \fB\-T\fR
+.TP
+\fB\-\-writable\fR
+same as \fB\-T\fR
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.PP
+If FILE is not specified, use /var/run/utmp. /var/log/wtmp as FILE is common.
+If ARG1 ARG2 given, \fB\-m\fR presumed: `am i' or `mom likes' are usual.
+.SH AUTHOR
+Written by Joseph Arceneaux, David MacKenzie, and Michael Stone.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B who
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B who
+programs are properly installed at your site, the command
+.IP
+.B info who
+.PP
+should give you access to the complete manual.
diff --git a/man/who.x b/man/who.x
new file mode 100644
index 0000000..02b039e
--- /dev/null
+++ b/man/who.x
@@ -0,0 +1,4 @@
+[NAME]
+who \- show who is logged on
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/whoami.1 b/man/whoami.1
new file mode 100644
index 0000000..9a37e02
--- /dev/null
+++ b/man/whoami.1
@@ -0,0 +1,40 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH WHOAMI "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+whoami \- print effective userid
+.SH SYNOPSIS
+.B whoami
+[\fIOPTION\fR]...
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Print the user name associated with the current effective user ID.
+Same as id \fB\-un\fR.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by Richard Mlynarik.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B whoami
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B whoami
+programs are properly installed at your site, the command
+.IP
+.B info whoami
+.PP
+should give you access to the complete manual.
diff --git a/man/whoami.x b/man/whoami.x
new file mode 100644
index 0000000..7ee371a
--- /dev/null
+++ b/man/whoami.x
@@ -0,0 +1,4 @@
+[NAME]
+whoami \- print effective userid
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/man/yes.1 b/man/yes.1
new file mode 100644
index 0000000..127aaef
--- /dev/null
+++ b/man/yes.1
@@ -0,0 +1,42 @@
+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.35.
+.TH YES "1" "March 2007" "GNU coreutils 6.9" "User Commands"
+.SH NAME
+yes \- output a string repeatedly until killed
+.SH SYNOPSIS
+.B yes
+[\fISTRING\fR]...
+.br
+.B yes
+\fIOPTION\fR
+.SH DESCRIPTION
+.\" Add any additional description here
+.PP
+Repeatedly output a line with all specified STRING(s), or `y'.
+.TP
+\fB\-\-help\fR
+display this help and exit
+.TP
+\fB\-\-version\fR
+output version information and exit
+.SH AUTHOR
+Written by David MacKenzie.
+.SH "REPORTING BUGS"
+Report bugs to <bug\-coreutils@gnu.org>.
+.SH COPYRIGHT
+Copyright \(co 2007 Free Software Foundation, Inc.
+.br
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.SH "SEE ALSO"
+The full documentation for
+.B yes
+is maintained as a Texinfo manual. If the
+.B info
+and
+.B yes
+programs are properly installed at your site, the command
+.IP
+.B info yes
+.PP
+should give you access to the complete manual.
diff --git a/man/yes.x b/man/yes.x
new file mode 100644
index 0000000..ff0a9e3
--- /dev/null
+++ b/man/yes.x
@@ -0,0 +1,4 @@
+[NAME]
+yes \- output a string repeatedly until killed
+[DESCRIPTION]
+.\" Add any additional description here
diff --git a/old/fileutils/ChangeLog b/old/fileutils/ChangeLog
new file mode 100644
index 0000000..971ce55
--- /dev/null
+++ b/old/fileutils/ChangeLog
@@ -0,0 +1,8398 @@
+2006-08-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * ChangeLog: Add copyright notice.
+ * ChangeLog-1997: Likewise.
+ * NEWS: Likewise.
+
+2002-07-28 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.1.12.
+
+ * configure.ac: Require automake-1.6b.
+
+ * TODO: Remove entry that mentions rm's HAVE_WORKING_READDIR.
+ Since remove.c was rewritten, rm is no longer susceptible to that.
+
+2002-07-26 Jim Meyering <meyering@lucent.com>
+
+ * src/stat.c: Don't include malloc.h -- it was unnecessary.
+
+2002-07-22 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.1.11.
+
+ * src/stat.c (usage): The short form of --dereference is now -L, not -l.
+ Reported by Kalle Olavi Niemitalo.
+
+ * src/rm.c: Add new option, --presume-input-tty, for testing only.
+ Not documented.
+
+ This test might remove a file owned by the person running `make check'.
+ * tests/rm/fail-eperm: Hoist definition of $target_file, and use
+ that (not $f) in test for owner/dir/symlink. Patch by Michael Stone.
+
+ * tests/rm/fail-eperm: Handle the case in which rm produces no output.
+
+ rm would prompt for a symlink to an unwritable file
+ * src/remove.c (prompt): When not interactive, don't prompt
+ for a symlink. Reported by Dave Beckett. Patch by Michael Stone.
+ * tests/rm/dangling-symlink: Add a test for the above-fixed bug.
+
+2002-07-20 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.c (copy_internal): Use file_name_lookup, not getdport.
+ Patch by Alfred M. Szmidt.
+
+ * Makefile.maint (news-r1, news-r2): Define. Better regexp.
+ (announcement): Use them here. Also makes the line length < 80.
+
+ * Upgrade to cvs automake -- required to work with 2.53b.
+ * configure.ac: Require automake-1.6a.
+
+ * Version 4.1.10.
+
+ * Upgrade to gettext-0.11.3.
+ * Upgrade to autoconf-2.53b.
+
+2002-07-19 Jim Meyering <meyering@lucent.com>
+
+ * src/dircolors.hin: Add .wav.
+
+ * tests/rm/fail-eperm: Don't expect `ARGV_0=$0 exec ...' to work.
+ It doesn't work with /bin/sh of Solaris5.6.
+ Use an explicit `export ARGV_0' instead.
+ [comparing actual and expected output]: Don't match the entire line,
+ but rather just the `rm: cannot remove `$dir/$f':' part.
+
+ * tests/rm/dangling-symlink: Use input-tty rather than
+ testing for /dev/stdin.
+
+ * tests/Makefile.am (EXTRA_DIST): Add input-tty.
+ * tests/input-tty: New file.
+
+2002-07-18 Jim Meyering <meyering@lucent.com>
+
+ * src/dircolors.hin: Add the following to the list of colorizable
+ TERM names: dtterm xterm-color Eterm.
+ New archive suffix: .jar
+ New image suffixes: .jpeg .pbm .pgm .tiff .mpeg .xcf .xwd
+ Audio suffixes: .ogg .mp3
+ From Michael Stone.
+
+2002-07-16 Jim Meyering <meyering@lucent.com>
+
+ * src/stat.c (print_it): Use memcpy and a little pointer arithmetic,
+ rather than stpncpy.
+
+2002-07-14 Jim Meyering <meyering@lucent.com>
+
+ Under some circumstances, rm would fail due to a lack of
+ permissions, but give a misleading diagnostic like this:
+ rm: cannot chdir from `.' to `foo': Not a directory
+ * src/remove.c (remove_dir): Detect the case in which unlinking a
+ non-directory fails with EPERM, and give an appropriate diagnostic.
+ Reported by Michael Stone.
+
+2002-07-13 Jim Meyering <meyering@lucent.com>
+
+ * tests/rm/fail-eperm: New file/test, for the above.
+ * tests/rm/Makefile.am (TESTS): Add fail-eperm.
+
+ * src/stat.c (print_it): Use xstrdup, not strdup.
+ Use strspn to avoid an explicit loop.
+ Use fputc rather than printf "\n".
+
+ * src/stat.c: Include quote.h.
+ (print_stat): Use xreadlink, rather than using readlink directly.
+ Use the quote function rather than hard-coded double quotes.
+ Use error, not perror.
+
+2002-07-09 Martin Michlmayr <tbm@cyrius.com>
+
+ * src/df.c (show_dev): Make the `Use%' column align with
+ its heading, even when -P is used with -h or -H.
+
+2002-07-10 Jim Meyering <meyering@lucent.com>
+
+ * man/du.x: Add a description of --exclude=PATTERN.
+ * src/du.c (usage) [--exclude]: Use PATTERN rather than PAT.
+ From Martin Michlmayr.
+
+2002-07-09 Jim Meyering <meyering@lucent.com>
+
+ I added stat.x, but didn't update the definition of dist_man_MANS.
+ * man/Makefile.am (dist_man_MANS): Add stat.1.
+ (stat.1): Add dependency.
+ Reported by Michael Stone.
+
+ Ensure that the above never happens again.
+ * man/Makefile.am (check-x-vs-1): New target.
+ (check-local): Depend on check-x-vs-1.
+
+ * src/mv.c (euidaccess): Remove declaration. It was unused.
+ From Michael Stone.
+ (yesno): Remove declaration. It too was unused.
+
+2002-07-08 Paul Eggert <eggert@twinsun.com:
+
+ * NEWS: df now rounds all quantities up, as per POSIX.
+ This fixes a bug where df would report Size < Used.
+ * doc/coreutils.texi: Likewise.
+ * src/df.c (df_readable): Omit last arg; we always round up now.
+ All callers changed.
+
+2002-07-07 Paul Eggert <eggert@twinsun.com>
+
+ NEWS, doc/coreutils.texi:
+ New ls time style: long-iso, which generates YYYY-MM-DD HH:MM.
+ Any time style can be preceded by "posix-".
+ The default time style is now posix-long-iso instead of posix-iso.
+
+ * src/ls.c (enum time_style): Remove posix_iso_time_style.
+ Add long_iso_time_style.
+ (time_style_args, time_style_types, decode_switches): Likewise.
+ (decode_switches): If a time style is prefixed by "posix-", ignore
+ it if in the POSIX locale. Default style is now posix-long-iso.
+ (usage): Explain the above.
+
+2002-07-06 Jim Meyering <meyering@lucent.com>
+
+ * tests/Makefile.am (envvar-check): Mark as `.PHONY'.
+
+ * src/stat.c: Remove everything associated with --secure option.
+
+2002-07-04 Jim Meyering <meyering@lucent.com>
+
+ * src/remove.c (prompt): Fix test for write-protectedness to also
+ check errno == EACCES. Otherwise, `rm dangling-symlink' would
+ mistakenly prompt. Reported by Mike Castle.
+
+ * tests/rm/Makefile.am (TESTS): Add dangling-symlink.
+ * tests/rm/dangling-symlink: New file/test, for the above fix.
+
+2002-07-03 Jim Meyering <meyering@lucent.com>
+
+ * src/stat.c (usage): Rename --link/-l to --dereference/-L.
+ Describe --secure.
+ Describe --format.
+ (main): Support -L. Deprecate -l.
+
+2002-07-02 Jim Meyering <meyering@lucent.com>
+
+ * src/chgrp.c, src/chmod.c, src/chown.c, src/cp.c, src/dd.c (usage):
+ Use the PACKAGE_BUGREPORT e-mail address, rather than hard-coding it.
+ * src/df.c, src/dircolors.c, src/du.c, src/install.c: Likewise.
+ * src/link.c, src/ln.c, src/ls.c, src/mkdir.c, src/mkfifo.c: Likewise.
+ * src/mknod.c, src/mv.c, src/rm.c, src/rmdir.c, src/shred.c: Likewise.
+ * src/stat.c, src/sync.c, src/touch.c, src/unlink.c: Likewise.
+
+2002-07-01 Jim Meyering <meyering@lucent.com>
+
+ * tests/touch/fail-diag: Handle yet another different diagnostic.
+ Report from Volker Borchert.
+
+2002-06-29 Jim Meyering <meyering@lucent.com>
+
+ * src/stat.c (print_statfs): Use `fputc ('*', stdout)'
+ instead of the combination of strcat and printf.
+ (print_statfs) [!FLASK_LINUX]: Print `*' for %S and %C,
+ rather than `S' and `C'.
+ (print_stat) [!FLASK_LINUX]: Likewise.
+
+ * src/remove.c (AD_mark_current_as_unremovable): Replace dead
+ code with an assertion.
+
+2002-06-26 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls-test: Use grep, not egrep.
+
+2002-06-25 Jim Meyering <meyering@lucent.com>
+
+ * src/remove.c (prompt): Add a comment to help translators work
+ around the problem of making the translations of the adjective
+ `write-protected' and the corresponding run-time-variable noun
+ (e.g., file, directory, symlink, etc.) consistent. From Paul Eggert.
+
+2002-06-24 Jim Meyering <meyering@lucent.com>
+
+ * src/stat.c (usage): Add missing open-quote.
+ Reported by Michael Piefel.
+
+2002-06-22 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.1.9.
+
+ * configure.ac: Invoke AC_GNU_SOURCE very early.
+
+ * tests/rm/rm1: Accommodate the slightly different diagnostic we
+ get on some systems, due to `unlink (dir)' failing with EACCES
+ rather than EPERM. E.g. for ReiserFS on Linux-2.4.18.
+
+2002-06-21 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (wget-update): Checkout into config/.
+ Warn when skipping a file.
+
+ * src/stat.c: Include sys/statvfs.h.
+ [!HAVE_SYS_STATVFS_H && !HAVE_SYS_VFS_H]: Include sys/param.h
+ and sys/mount.h, to get decl of struct statfs on NetBSD 1.5.2.
+ (NAMEMAX_FORMAT, STRUCT_STATVFS): Define.
+ (HAVE_STRUCT_STATXFS_F_TYPE, SB_F_NAMEMAX): Define.
+ Remove `static' attribute from decl of program_name.
+ (human_fstype): Use f_basetype or f_fstypename if available.
+ (print_human_time): Use nstrftime and an ISO format string, in
+ place of strftime with `%c'. The latter is too locale-dependent.
+ (print_statfs): Deal with lots of portability issues: some fields
+ are available only with statfs, others only with statvfs, and
+ some are available in both, but with different types.
+ (do_statfs) [DEFAULT_FORMAT_TERSE]: Factor out.
+ [DEFAULT_FORMAT_VERBOSE]: Likewise.
+
+ * src/copy.c: Change all `preserving ...' diagnostics to
+ `failed to preserve ...' to make the failure clearer.
+ * src/cp.c: Likewise.
+
+2002-04-03 Alfred M. Szmidt <ams@kemisten.nu>
+
+ * src/copy.c Include hurd.h.
+ (copy_internal): Preserve the stat.st_author field.
+
+2002-06-21 Jim Meyering <meyering@lucent.com>
+
+ * src/ls.c (LOGIN_NAME_MAX): Define if not already defined.
+ (ID_LENGTH_MAX): Define.
+ (ST_DM_MODE): New macro. Code moved from...
+ (print_long_format): ...here.
+ (print_long_format): Itemize and comment the individual parts
+ of init_bigbuf. Use the above *_MAX macros.
+
+2002-06-20 Jim Meyering <meyering@lucent.com>
+
+ * src/system.h: Change `defined(X)' syntax to `defined X'
+ in cpp directives.
+
+2002-06-17 Jim Meyering <meyering@lucent.com>
+
+ * tests/setgid-check: Interpret a permissions string of
+ drwxr-xr-x (DOS/Windows) as meaning the cwd is not setgid.
+ Reported by Rich Dawe.
+
+2002-05-19 Paul Eggert <eggert@twinsun.com>
+
+ Add support for new ls option --author, for GNU/Hurd.
+ Derived from a suggestion by Alfred M. Szmidt.
+
+ * doc/coreutils.texi (ls invocation), NEWS: Document this.
+ * m4/jm-macros.m4 (jm_CHECK_ALL_TYPES): Check for st_author.
+ * src/ls.c (st_author) [! HAVE_STRUCT_STAT_ST_AUTHOR]: New macro.
+ (print_author): New var.
+ (AUTHOR_OPTION): New enum val.
+ (long_options, decode_switches, print_long_format, usage):
+ Support --author.
+ (format_user): New function.
+ (print_long_format): Use it. Make print buffer a bit bigger.
+
+2002-06-15 Jim Meyering <meyering@lucent.com>
+
+ * tests/sample-test (trap): Make sure the temporary hierarchy is
+ writable before removing it.
+
+ * tests/mv/perm-1: New file, to demonstrate fix of 2002-06-12.
+ * tests/mv/Makefile.am (TESTS): Add perm-1.
+
+ * src/system.h: For GNU libc 2.2 and newer, ensure that <sys/types.h>
+ has been included before this file.
+
+2002-06-13 Richard Dawe <richdawe@bigfoot.com>
+
+ Accommodate DOS file name limitations.
+ * tests/cp/same-file: Change temp. file name: s/\.err/_err/, for DOS.
+ * tests/mv/force: Similar.
+ * tests/mv/into-self: Similar.
+ * tests/touch/no-rights: Similar.
+ * tests/mv/mv-special-1: Remove leading `.' from temp. names.
+
+2002-06-15 Jim Meyering <meyering@lucent.com>
+
+ * src/sys2.h (S_ISNAM): Add to list of S_IS* macros.
+ Rearrange #if directives for each S_IS macro.
+ From diffutils-2.8.2.
+
+2002-06-12 Jim Meyering <meyering@lucent.com>
+
+ * src/mv.c (do_move): Give one diagnostic, not two, when unable to
+ unlink a destination file. This bug was introduced in fileutils-3.16l.
+
+2002-06-07 Jim Meyering <meyering@lucent.com>
+
+ * tests/mv/part-fail: Also accept the permission-denied diagnostic
+ issued by some losing systems. Reported by Volker Borchert.
+
+ * src/remove.c (remove_entry): Use DT_IS_DIR only if
+ HAVE_STRUCT_DIRENT_D_TYPE is defined.
+
+2002-06-02 Jim Meyering <meyering@lucent.com>
+
+ `rm' no longer uses explicit recursion, and as such is now able
+ to remove hierarchies of effectively unlimited depth. Prior to
+ this change, on typical systems, rm would fail (segfault) to remove
+ hierarchies of depth greater than about 25,000.
+
+ * src/remove.c: Merge in all changes from no-recursion branch.
+ See below for details.
+ * src/remove.h: Likewise.
+ * src/mv.c (do_move): Adapt to new calling sequence for rm.
+ * src/rm.c (main): Likewise.
+
+2002-06-02 Jim Meyering <meyering@lucent.com>
+
+ * tests/rm/r-2: Adjust, now that we no longer report
+ `removing all entries of directory ...'.
+ * tests/rm/r-1: Likewise.
+
+ * src/remove.c (enum Ternary): Define type.
+ (prompt): Add a parameter. Adjust callers.
+ (remove_entry): Attempt rmdir here, only if a directory is
+ `known' to be empty. Significant rework.
+ (remove_dir): Propagate failure `up' also when rmdir fails.
+
+2002-06-01 Jim Meyering <meyering@lucent.com>
+
+ * tests/rm/Makefile.am (TESTS): Add rm5.
+ * tests/rm/rm5: New test.
+
+2002-05-30 Jim Meyering <meyering@lucent.com>
+
+ In interactive mode, prompt only once about an empty directory.
+ * src/remove.c (enum Prompt_action): Define.
+ (prompt): Two new parameters. Adjust all callers.
+
+ Performance.
+ * src/remove.c (remove_entry) [!ROOT_CAN_UNLINK_DIRS]:
+ Don't call rmdir here.
+
+2002-05-29 Jim Meyering <meyering@lucent.com>
+
+ * src/remove.c (AD_pop_and_chdir): Don't use errno (it's not valid)
+ in diagnostic for changed dev/ino.
+ (remove_entry): Tweak diagnostic.
+
+2002-05-27 Jim Meyering <meyering@lucent.com>
+
+ * src/remove.c (ROOT_CAN_UNLINK_DIRS): Define.
+ (AD_pop_and_chdir): Propagate status as we traverse back `up' the tree.
+ (DO_UNLINK, DO_RMDIR): Define.
+ (remove_entry) [ROOT_CAN_UNLINK_DIRS]: Add code so this works also on
+ systems where root can use `unlink' to remove directories.
+
+2002-05-24 Jim Meyering <meyering@lucent.com>
+
+ * tests/mv/mv-special-1: Adapt for changed format of --verbose output.
+
+2002-05-22 Jim Meyering <meyering@lucent.com>
+
+ * src/remove.c: Include file-type.h.
+ Include file type in prompt when asking whether to remove file.
+ Based on a patch from Paul Eggert.
+
+ * src/remove.c (prompt): Add comment.
+
+ * src/remove.c (remove_dir): Fix another (known) leak.
+
+ * tests/rm/rm3: Don't depend on order of traversal of dir entries.
+ It is nondeterministic on some types of filesystems.
+
+ * src/remove.c (hash_freer): New function.
+ (AD_mark_helper): Use it.
+ (AD_mark_as_unremovable): xstrdup the filename argument.
+ (remove_dir): Free directory name.
+
+ * src/remove.c (remove_entry): Fail also when trying to remove a
+ directory without the --recursive option.
+ Change a diagnostic, s/unlink/remove/, now that it can apply also
+ to a directory.
+
+ * src/remove.c (is_empty_dir): New function.
+ (prompt): New function, factored out of...
+ (remove_entry): ...here. Call it.
+ (remove_dir): Call prompt before rmdir.
+
+ * src/remove.c (remove_entry): Add support for prompting (e.g., -i).
+
+ * src/remove.h (UPDATE_STATUS): New macro.
+ Include save-cwd.h.
+ (struct File_spec): Remove declaration.
+ Update prototypes.
+
+ * src/remove.c [AD_ent] (status): New member. This lets us propagate
+ the status from a subdirectory to its parent via AD_pop_and_chdir.
+ (AD_push_initial): Set it.
+ (AD_push): Likewise.
+ (remove_cwd_entries): Change return type to enum RM_status, and
+ adjust all callers.
+ (rm): Use UPDATE_STATUS rather than open-coding it.
+
+ * src/remove.c (remove_entry): New function, factored out of...
+ (remove_cwd_entries): ...here, and...
+ (rm_1): ...here.
+
+ * src/remove.c (remove_cwd_entries): Add support for --verbose.
+ (remove_dir): Likewise.
+ (rm_1): Likewise.
+
+2002-05-18 Jim Meyering <meyering@lucent.com>
+
+ * tests/rm/rm3: New file.
+ * tests/rm/rm4: New file.
+ * tests/rm/Makefile.am (TESTS): Add rm3 and rm4.
+
+2002-05-17 Jim Meyering <meyering@lucent.com>
+
+ * tests/rm/rm1: New file.
+ * tests/rm/rm2: New file.
+ * tests/rm/unread2: New file.
+ * tests/rm/Makefile.am (TESTS): Add rm1, rm2, and unread2.
+
+ * src/remove.h (enum RM_status) [RM_NONEMPTY_DIR]: New member.
+
+2002-05-13 Jim Meyering <meyering@lucent.com>
+
+ * src/remove.c (rm): Free cwd_state, if necessary.
+
+2002-05-01 Jim Meyering <meyering@lucent.com>
+
+ * src/remove.c (rm_1): Remove now useless (always true)
+ user_specified_name parameter. Adjust sole caller.
+
+ * src/remove.c (rm): New function. This interface allows
+ one to remove multiple arguments at a time. This is important in
+ that it allows us to hide the remove_init/remove_fini functions and
+ the cwd_state parameter.
+ (rm_1): Renamed from rm.
+ (remove_init, remove_fini): Remove functions. Each body is now
+ part of `rm'.
+ * src/remove.h (rm): Update prototype.
+
+2002-06-01 Jim Meyering <meyering@lucent.com>
+
+ * src/ls.c: Remove use of D_TYPE_IN_DIRENT, now that that symbol
+ has been renamed.
+
+2002-05-30 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.c (copy_reg): Use a temporary to avoid a warning
+ from gcc -W about comparison between signed and unsigned.
+ (copy_internal): Likewise, but use a cast.
+
+2002-05-22 Jim Meyering <meyering@lucent.com>
+
+ * src/sys2.h (S_ISREG, S_ISDIR): Define if not already defined.
+ (S_TYPEISSEM, S_TYPEISSHM, S_TYPEISTMO): Likewise.
+
+ * src/ls.c (S_ISLNK, S_ISFIFO, S_ISSOCK, S_ISCHR, S_ISBLK, S_ISDOOR):
+ Remove definitions.
+ * src/sys2.c (S_ISLNK, S_ISFIFO, S_ISSOCK, S_ISCHR, S_ISBLK, S_ISDOOR):
+ Define here instead.
+
+2002-04-27 Jim Meyering <meyering@lucent.com>
+
+ * src/remove.c (cycle_check): New function containing code factored
+ out of remove_dir. The sole difference is that upon detecting a
+ cycle, rm now dies unconditionally. Before, in interactive mode,
+ it would ask the user whether to continue.
+ (remove_dir): Call cycle_check.
+
+2002-04-25 Jim Meyering <meyering@lucent.com>
+
+ Avoid new warnings from gcc.
+ * src/dd.c: Declare input_file and output_file to be `const'.
+ (skip): Declare `file' parameter to be `const', too.
+
+ Remove hash table, active_dir_map, used to detect directory cycles.
+ Instead, detect them lazily with just O(1) memory.
+ Suggestion from Andi Kleen.
+ * src/remove.c (is_power_of_two): New function.
+ (print_nth_dir, make_active_dir_ent): Remove functions.
+ (hash_active_dir_ent, hash_compare_active_dir_ents): Likewise.
+ (remove_dir): Check for cycles here, ...
+ (rm): ... and don't check for cycles here.
+
+ * src/remove.c (rm): Call fspec_get_full_mode here, rather than
+ fspec_get_filetype_mode. We want to get the dev/ino earlier, and
+ at the same time as when we get the file type, to avoid the risk
+ that an attacker would change e.g. a directory to a symlink before
+ we record its dev/ino.
+
+ * configure.ac (AC_CONFIG_FILES): Remove intl/Makefile.
+ (AM_GNU_GETTEXT): Add external arg.
+
+ * intl/: Remove directory.
+ * Makefile.am (SUBDIRS): Remove intl.
+ (DISTCLEANFILES): Remove definition.
+
+ * src/sys2.h: Remove ENABLE_NLS-related code.
+ (_, N_) Remove definitions.
+ Include "gettext.h" instead.
+
+ * src/Makefile.am (INCLUDES): Remove -I../intl.
+
+2002-04-22 Jim Meyering <meyering@lucent.com>
+
+ * src/remove.c (rm): Call exit with EXIT_FAILURE, not `1'.
+
+2002-04-19 Jim Meyering <meyering@lucent.com>
+
+ * tests/cp/*: Clean up.
+
+ * tests/sample-test: Use a temporary directory named
+ `basename $0`.tmp/$$. Create with mkdir -p.
+
+ * tests/cp/backup-1: Use better trap, etc.
+ * tests/mkdir/p-2: Use better trap.
+ * tests/mkdir/p-1: Likewise.
+ * tests/mkdir/concurrent-1: Likewise.
+
+ * tests/rm/deep-1: Set $tmp the new way.
+
+ * tests/rm/ir-1: Use `rm', not $RM. Use better trap.
+ * tests/rm/i-1: Likewise.
+ * tests/rm/f-1: Likewise.
+
+ * tests/sample-test: Use automatically-derived name for temporary
+ directory. This is more 8.3-friendly. Based on a suggestion from
+ Richard Dawe.
+
+ * tests/sample-test: New file.
+ * tests/Makefile.am (EXTRA_DIST): Add sample-test.
+
+2002-04-17 Jim Meyering <meyering@lucent.com>
+
+ * src/touch.c (touch): Don't report errors for nonexistent files
+ when --no-create is in effect. Based on a patch from TAKAI Kousuke.
+ * tests/touch/no-create-missing: New file/test for above.
+ * tests/touch/Makefile.am (TESTS): Add no-create-missing.
+
+2002-04-16 Jim Meyering <meyering@lucent.com>
+
+ * src/stat.c: Add copyright comment.
+ (human_fstype): Rename from print_human_fstype, and rework accordingly.
+ (print_statfs): Use human_fstype to honor format width on %T.
+
+2002-04-15 Jim Meyering <meyering@lucent.com>
+
+ Handle "lld" vs "ld" printf formats the same way Bash does.
+ * src/stat.c: Include inttypes.h.
+ (PRIdMAX, PRIuMAX): Define, if not already defined.
+ (print_statfs): Use those macros, not the literal strings.
+ (print_stat): Likewise.
+ Suggestion from Paul Eggert.
+
+ * src/stat.c (print_human_fstype): Add missing `break;'
+ for `case S_MAGIC_MINIX:'.
+
+2002-04-14 Jim Meyering <meyering@lucent.com>
+
+ * src/stat.c (statfs_secure): Define.
+ (print_stat): Remove another #ifdef.
+ (do_statfs): Likewise.
+ (print_statfs): Prefer/use fputs over printf.
+ (print_stat): Likewise.
+
+ * src/Makefile.am (bin_PROGRAMS): Add stat.
+ (noinst_HEADERS): Add fs.h.
+
+ * src/stat.c [HAVE_SYS_VFS_H]: Guard incluion of sys/vfs.h.
+ Constify many parameters.
+ (print_statfs): Fix typo: Use %u (to match %lu) for namelen, not %d.
+ (verbose_usage): Remove function. Move contents into usage.
+ Remove lots of #if directives involving FLASK_LINUX
+ [!FLASK_LINUX] (is_flask_enabled): Define.
+ (stat_secure, lstat_secure): Define.
+ (print_statfs): Remove lots of nested #if directives.
+ Instead, rely on support fo %llu and %lld printf formats --
+ but that is only temporary, since it's not porable enough.
+ (main): Hoist is_flask_enabled test to be done here, rather
+ than in each of do_stat and do_statfs for every argument.
+
+2002-04-13 Jim Meyering <meyering@lucent.com>
+
+ * src/stat.c: Include system.h, error.h, and many other headers.
+ [HAVE_SYS_SYSMACROS_H]: Guard inclusion of sys/sysmacros.h.
+ (PROGRAM_NAME, AUTHORS): Define.
+ (long_options): Declare/define.
+ (print_human_access): Rewrite to use mode_string.
+ (usage): Rewrite.
+ (main): Use getopt_long.
+ (print_human_type): Call fputs once rather than calling
+ printf many times.
+ (print_human_fstype): Revamp in a similar fashion. Don't use strdup.
+ Declare most functions to be `static'.
+
+2002-04-12 Jim Meyering <meyering@lucent.com>
+
+ * src/Makefile.am (LDADD): List ../lib/libfetish.a both before
+ and after @LIBINTL@. Thanks to Paul Eggert for the fix and to
+ Bruno Haible for diagnosing the problem.
+
+ * src/link.c: Include long-options.h.
+ [long_opts]: Remove.
+ (usage): Tweak --help output; use *_OPTION_DESCRIPTION macros.
+ (main): Don't use getopt directly. Use parse_long_options instead.
+ Tweak a diagnostic.
+ Use EXIT_FAILURE rather than a literal `1'.
+ * src/unlink.c: Likewise.
+ (main): If POSIXLY_CORRECT is set, don't recognize --help or --version,
+ so the program can operate on a file with one of those names.
+
+2002-04-11 Jim Meyering <meyering@lucent.com>
+
+ New programs link and unlink.
+
+ * src/Makefile.am (bin_PROGRAMS): Add link and unlink.
+ * src/link.c, src/unlink.c: New files, from Debian's fileutils_4.1-10.
+ Written by Michael Stone.
+
+ * man/link.x: New file.
+ * man/unlink.x: New file.
+ * man/Makefile.am: Add link and unlink.
+
+2002-04-07 Jim Meyering <meyering@lucent.com>
+
+ * tests/install/basic-1: Tweak comments to reflect reality.
+ * tests/cp/fail-perm: Add VERBOSE=yes support.
+ * tests/mv/mv-special-1: Fix typo in VERBOSE=yes handling.
+ Reported by Richard Dawe.
+
+2002-03-30 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.1.8.
+
+ * tests/mv/i-link-no: Use --reply=no rather than -i.
+ The latter depends on whether stdin is a tty and hence would
+ fail in some situations where --reply=no doesn't.
+
+ * src/mv.c (do_move): Correct a comment.
+
+ * src/copy.c (copy_internal): Move the block that sets `earlier_file'
+ down to just before the first use of that variable. Otherwise, it was
+ possible to make mv (and probably cp, too) malfunction when copying
+ hard-linked files into a directory containing at least one of the
+ source file names. Call forget_created everywhere thereafter where
+ this function returns without creating a destination file that might
+ subsequently be linked. Reported by Iida Yosiaki.
+ * src/cp-hash.c (forget_created): New function.
+ * src/cp-hash.h (forget_created): Prototype.
+
+ * tests/mv/i-link-no: New test for the above.
+ Based on an example from Iida Yosiaki.
+ * tests/mv/Makefile.am (TESTS): Add i-link-no.
+
+2002-03-17 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.c (copy_internal) [move_mode]: Give a better diagnostic,
+ by using errno from the failed unlink, when a cross-device `mv'
+ fails, e.g., because the destination cannot be unlinked.
+ Prompted by a report from Karl Berry.
+ * tests/mv/part-fail: New test for the above.
+ * tests/mv/Makefile.am (TESTS): Add part-fail.
+
+2002-03-16 Jim Meyering <meyering@lucent.com>
+
+ * src/Makefile.am (datadir): Don't override $(datadir)
+ which might be set by --datadir and different from $(prefix)/share.
+ Patch from Albert Chin-A-Young.
+
+2002-03-10 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.1.7.
+
+ * src/ln.c (main): Change wording in diagnostic.
+ * src/cp.c (do_copy): Likewise.
+ * src/install.c (strip): Likewise.
+ Suggestions from Santiago Vila.
+
+ * Use autoconf-2.53. Regenerate dependent files.
+
+ * Makefile.maint (GZIP, BZIP2): Remove definitions.
+ ($(my_distdir).tar.bz2): Remove rule. Now, it's built by `make dist'.
+
+ * configure.ac (AM_INIT_AUTOMAKE): Specify the required version
+ of automake (1.6), and options (gnits dist-bzip2), rather than...
+ * Makefile.am (AUTOMAKE_OPTIONS): ...here. Remove definition.
+
+ * src/copy.c (copy_reg): Don't exit upon finding a replaced file.
+ Instead, just skip it like the diagnostic says.
+ Reported by Paul Eggert.
+
+2002-03-09 Paul Eggert <eggert@twinsun.com>
+
+ * src/copy.c (copy_reg): Use a more concise diagnostic for
+ reporting replaced files. This avoids a bug in the code,
+ which mishandled ino_t wider than long.
+ * src/remove.c (remove_dir): Likewise, twice.
+
+2002-03-09 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.am (EXTRA_DIST): Remove config/config.rpath,
+ now that automake knows about it.
+
+2002-03-08 Jim Meyering <meyering@lucent.com>
+
+ Don't allow a malicious user to trick another user's rm process into
+ removing unintended files. In one scenario, if root is removing a
+ hierarchy that is writable by the malicious user, that user may trick
+ root into removing all of `/'. Reported by Wojciech Purczynski.
+
+ * src/remove.c (remove_dir): After chdir `..', call lstat to get the
+ dev/inode of "." and fail if they aren't the same as the old numbers.
+ (remove_cwd_entries): New parameter, `cwd_dev_ino'.
+ (remove_dir): Likewise.
+ (rm): Likewise.
+ Adjust all callers.
+ * src/mv.c (do_move): The first time we resort to copy/remove,
+ call lstat `.' to get the device/inode numbers now required for rm.
+ * src/rm.c (main): Call lstat `.' to get the device/inode numbers
+ now required for rm.
+ * src/remove.h (struct dev_ino): Declare new type.
+ (rm): Add a parameter to the prototype.
+
+2002-03-06 Jim Meyering <meyering@lucent.com>
+
+ * Use automake-1.6. Regenerate dependent files.
+
+2002-03-05 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.am (EXTRA_DIST): Add config/config.rpath.
+
+2002-03-04 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (tgz-size): Also handle a suffix of `K', since
+ the sizes in the output of `du -h' now look like `29K'
+
+2002-03-03 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.1.6.
+
+2002-03-03 Paul Eggert <eggert@twinsun.com>
+
+ Make cp -r equivalent to cp -R. Add a new cp option --copy-contents
+ for people who want to emulate the traditional (and rarely desirable)
+ cp -r behavior.
+
+ * src/cp.c (COPY_CONTENTS_OPTION): New enum value.
+ (long_opts): Add --copy-contents.
+ (usage): Describe new behavior. Sort options.
+ (main): Implement new behavior. Remove diagnostics for -a and -r;
+ no longer needed.
+ * src/copy.c (copy_internal): Remove -r warning; no longer needed.
+
+ * NEWS: Document this.
+
+2002-03-02 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.c (copy_internal): For each symlink copied by cp -r,
+ issue a warning that `cp -r' is not portable.
+
+ * src/cp.c (main): Revert change of 2001-12-29. With this change,
+ cp -r once again preserves symlinks.
+ (usage): Document the original (now-restored) behavior.
+ * tests/cp/r-vs-symlink: Reflect changed semantics of cp's -r option.
+
+ * src/cp.c (main): Warn when -r is specified before --archive (-a).
+ * src/cp.c (main): Fail when -r is specified after --archive (-a)
+ on the command line.
+
+ * src/copy.c (copy_reg): Detect abuse of a race condition
+ whereby an unprivileged user could gain read access to otherwise-
+ inaccessible files when root uses cp or mv to copy a hierarchy
+ belonging to that user.
+
+2002-02-27 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls.c (decode_switches, usage): Add --time-style=+FORMAT.
+ * doc/coreutils.texi (Formatting file timestamps): Document it.
+
+2002-02-25 Paul Eggert <eggert@twinsun.com>
+
+ Add ACL support to 'ls' for HP-UX and Unixware, and try to
+ establish a framework for adding it for other hosts.
+ This builds on a suggestion of Andreas Gruenbacher.
+
+ * lib/Makefile.am (libfetish_a_SOURCES): Add acl.h, acl.c.
+ * lib/acl.h, lib/acl.c, m4/acl.m4: New files.
+ * m4/jm-macros.m4 (jm_MACROS): Require AC_FUNC_ACL.
+ Do not check for acl or sys/acl.h, as AC_FUNC_ACL does that now.
+ * src/ls.c: Include "acl.h" rather than <sys/acl.h>.
+ (USE_ACL): Remove; replaced by HAVE_ACL everywhere.
+ (gobble_file): Use file_has_acl rather than doing it ourselves.
+
+2002-02-20 Jim Meyering <meyering@lucent.com>
+
+ * src/touch.c: Include posixver.h.
+ (usage): Document only the intersection of the old and new behaviors,
+ to encourage portability.
+ (main): Use `posix2_version ()' in place of POSIX2_VERSION.
+
+2002-02-17 Jim Meyering <meyering@lucent.com>
+
+ * ABOUT-NLS, intl/*: Update to Gettext 0.11.
+ * INSTALL: Update to Autoconf 2.52h.
+
+ * src/Makefile.am (datadir): Use `share' in place of @DATADIRNAME@,
+ per Gettext-0.11.
+ (LDADD): Use @LIBINTL@ instead of @INTLLIBS@, per Gettext-0.11.
+
+ * configure.ac (AC_CONFIG_AUX_DIR): New macro invocation.
+ (ALL_LINGUAS): Remove: now in po/LINGUAS as per Gettext 0.11.
+
+ * config: New subdirectory, containing the following files from .:
+ config.guess, config.sub, depcomp, missing, install-sh, mkinstalldirs.
+ Move the following files here from doc: texinfo.tex, mdate-sh.
+
+2002-02-16 Jim Meyering <meyering@lucent.com>
+
+ * tests/ls/infloop: Use `head -n 7', not `head -7'.
+ * tests/rm/hash: Likewise.
+
+2002-02-10 Jim Meyering <meyering@lucent.com>
+
+ * configure.in (ALL_LINGUAS): Add Hungarian (hu).
+
+2002-02-02 Jim Meyering <meyering@lucent.com>
+
+ * src/shred.c: (VERBOSE_UPDATE): Update every 5 seconds, not every 10.
+ (wipename): Quote file names only when necessary.
+ (main): Copy quoted string into malloc'd storage so it doesn't
+ get clobbered when using -u and --verbose.
+
+ Minor clean-up.
+ * src/shred.c:
+ Use `NULL' rather than `(time_t *) 0'.
+ (dopass): Use STREQ in place of strcmp.
+ Add parentheses around use of nested ternary operator.
+
+2002-01-15 Paul Eggert <eggert@twinsun.com>
+
+ * src/shred.c (VERBOSE_UPDATE): Now counts seconds, not bytes.
+
+ (dopass): If verbose, output a line every VERBOSE_UPDATE seconds,
+ and suppress duplicate output lines. Output a percentage as well
+ as a count of bytes.
+
+ Also, fix comment/code typo regarding how many bytes have been
+ written; this typo was harmless before, but is no longer harmless with
+ the above change in effect.
+
+2002-02-02 Jim Meyering <meyering@lucent.com>
+
+ * src/remove.c (rm): Add a comment.
+
+2002-01-28 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Require automake-1.5d.
+ * configure.ac (AM_INIT_AUTOMAKE): Use zero-arg form of this macro.
+
+2002-01-21 Jim Meyering <meyering@lucent.com>
+
+ * po/POTFILES.in: Add lib/xmemcoll.c
+
+ * src/chown-core.c: Don't include "xalloc.h", as system.h already
+ does that via sys2.h.
+ * src/ls.c: Likewise.
+ * src/shred.c: Likewise.
+
+2002-01-20 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls.c: Avoid undefined behavior when strcoll fails,
+ by resorting the directory with strcmp instead.
+
+ Include <setjmp.h>.
+ Include "quote.h".
+ (compare_atime, rev_cmp_atime, compare_ctime, rev_cmp_ctime,
+ compare_mtime, rev_cmp_mtime, compare_size, rev_comp_size,
+ compare_name, rev_cmp_name, compare_extension, rev_cmp_extension,
+ compare_version, rev_compare_version): Move before use, so that
+ we can remove the forward declaration. Reimplement in terms of
+ the new functions described below, using xstrcoll instead of strcoll.
+ (failed_strcoll): New var.
+ (xstrcoll): New function.
+ (V): New type.
+ (cmp_ctime, compstr_ctime, rev_str_ctime): New functions.
+ (cmp_mtime, compstr_mtime, rev_str_mtime): Likewise.
+ (cmp_atime, compstr_atime, rev_str_atime): Likewise.
+ (cmp_size, compstr_size, rev_str_size): Likewise.
+ (cmp_version): Likewise.
+ (cmp_name, compstr_name, rev_str_name): Likewise.
+ (cmp_extension, compstr_extension, rev_str_extension): Likewise.
+ (sort_files): Use prototype for internal function var.
+ If the strcoll-based comparison fails, fall back on a strcmp-based one.
+
+2002-01-19 Jim Meyering <meyering@lucent.com>
+
+ Ensure that the two version numbers in configure.ac remain in sync.
+ * Makefile.maint (local-check): Depend on ac-check.
+ (ac_p_pkg, AC_INIT_PKG): Define.
+ (ac_p_ver, AC_INIT_VER): Define.
+ (ac-check): New rule.
+
+2002-01-19 Jim Meyering <meyering@lucent.com>
+
+ * configure.ac: Remove code that set LIBOBJS in support of ansi2knr.
+ The latest version of autoconf objected to it, and besides, I don't
+ care too much about K&R support these days.
+
+2002-01-14 Paul Eggert <eggert@twinsun.com>
+
+ * src/touch.c (main): Issue a warning for obsolete usage, unless
+ POSIXLY_CORRECT.
+
+2002-01-14 Paul Eggert <eggert@twinsun.com>
+
+ Add support for POSIX 1003.1-2001, which requires removal for
+ support of the obsolete `touch [-acm] MMDDhhmm[YY] FILE...' syntax.
+
+ * NEWS: Document this.
+ * src/touch.c (usage, main): Implement this.
+
+2002-01-12 Jim Meyering <meyering@lucent.com>
+
+ Avoid giving a misleading diagnostic in some unusual cases.
+ Instead, give one that makes sense.
+
+ * src/copy.c (copy_reg): Don't treat errno==ENOENT as a special case.
+ (same_file_ok): Detect a case that would have lead to the errno==ENOENT
+ condition above (and a misleading diagnostic), and return 0 so we give
+ a diagnostic about the source and destination being the same file.
+ (copy_internal): Use an explicit test for errno==EXDEV to detect
+ that rename has failed because source and destination are on
+ different devices. This reverts part of a change from 1997-12-13,
+ and is to avoid letting a race condition evoke a bogus diagnostic.
+ Note that while POSIX has encouraged the errno==EXDEV test for
+ years, it was inadequate back in 1997. I'm hoping that many
+ more systems have conforming support these days.
+ Reported by Michael Gaughen <mgaughen@polyserve.com>
+
+ * src/shred.c (usage): Also mention Ext3.
+ Suggestion from Göran Uddeborg.
+
+2002-01-06 Bruno Haible <bruno@clisp.org>
+
+ * src/ls.c (long_time_format): Extend translator comments.
+
+2002-01-05 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.1.5.
+
+2001-12-29 Jim Meyering <meyering@lucent.com>
+
+ * src/cp.c (main): With -r, always dereference symlinks.
+ Reported by Christian Harkort. Patch by Chris J. Bednar.
+
+ * tests/cp/r-vs-symlink: New file to test for the above fix.
+ * tests/cp/Makefile.am (TESTS): Add r-vs-symlink.
+
+2001-12-21 Jim Meyering <meyering@lucent.com>
+
+ * src/shred.c [!HAVE_CONFIG_H]: Remove cpp block that duplicated
+ code in lib/ in order to facilitate compiling this program without
+ config.h.
+
+2001-12-19 Paul Eggert <eggert@twinsun.com>
+
+ * src/shred.c: Add FSF copyright notice.
+
+2001-12-18 Paul Eggert <eggert@twinsun.com>
+
+ Use notation compatible with SI and with IEC 60027-2.
+ For example, --block-size=1MB now means --block-size=1000000,
+ whereas --block-size=1MiB now means --block-size=1048576.
+ A trailing `B' now means decimal, not binary; this is a silent change.
+ -H or --si now outputs the trailing 'B', for consistency with this.
+ Programs now output trailing 'K' (not 'k') to mean 1024.
+ New df, du short option -B is short for --block-size.
+ You can omit an integer `1' before a block size suffix,
+ e.g. `df -BG' is equivalent to `df -B 1G' and to `df --block-size=1G'.
+
+ * NEWS, doc/coreutils.texi: Document this. Remove documentation
+ for obsolescent constructs MD, --kilobytes, -m or --megabytes.
+
+ * src/dd.c (usage, parse_integer): Prefer K to k for 1024.
+ * src/shred.c (usage, main): Likewise.
+
+ * src/shred.c (xstrtoumax): If there is no number but there
+ is a valid suffix, assume 1. "MB" now means decimal, "MiB" binary.
+ Accept 'K' as well as 'k'.
+
+ * src/dd.c (usage): MD -> MB for decimal.
+
+ * src/df.c (BLOCK_SIZE_OPTION): Remove; no longer needed now that
+ we have 'B'.
+ (long_options, usage, main): Add -B.
+ (usage): Deprecate --kilobytes, -m, --megabytes.
+ Document size suffixes.
+ * src/du.c: Likewise.
+ * src/ls.c (usage): Deprecate --kilobytes. Document size suffixes.
+
+ * src/df.c (print_header, show_dev): Enlarge column widths for
+ trailing "B".
+
+2001-12-17 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (real_dir): Remove unused variable.
+ (url_dir_list): Don't set define it here, but...
+ * Makefile.cfg (url_dir_list): ...define it here instead.
+ (hosts, a_host, b_host): Remove now-unused variables.
+ (alpha_subdir, a_url_dir, b_url_dir): Remove now-unused variables.
+
+2001-12-15 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.1.4.
+
+ * tests/touch/fail-diag: Also accept SunOS4's `Not owner' diagnostic.
+ Reported by Volker Borchert.
+
+ * tests/help-version: Fail also if ./$i --version fails.
+ Run each --help and --version test with a few different settings
+ of LC_MESSAGES. Prompted by a report from Nelson Beebe.
+
+2001-12-11 Jim Meyering <meyering@lucent.com>
+
+ Include the word `fail' in some diagnostics to make it clearer
+ that they indicate a failure.
+ * src/chgrp.c (main): s/getting attributes/failed to get attributes/.
+ * src/chmod.c (change_file_mode, main): Likewise.
+ * src/chown-core.c (change_file_owner): Likewise.
+ * src/chown.c (main): Likewise.
+ * src/cp.c (re_protect): Likewise.
+ * src/touch.c (touch, main):Likewise.
+ Suggestion from Karl Berry.
+
+2001-12-10 Jim Meyering <meyering@lucent.com>
+
+ * src/dd.c (buggy_lseek_support): Remove function.
+ (skip_via_lseek) [__linux__]: New function.
+ (skip): Use skip_via_lseek, not buggy_lseek_support.
+ Based on an outline from Paul Eggert.
+
+2001-12-09 Jim Meyering <meyering@lucent.com>
+
+ * configure.in (ALL_LINGUAS): Add Estonian (et).
+
+2001-12-08 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.cfg (wget_files): Remove ansi2knr.c, since it's
+ no longer available at that location.
+
+2001-12-04 Jim Meyering <meyering@lucent.com>
+
+ * tests/chgrp/basic: Don't use diff's -u option. It's not portable.
+ Besides, with GNU diff one can use the DIFF_OPTIONS envvar.
+ * tests/ls/no-arg: Likewise.
+ * tests/ls/recursive: Likewise.
+ * tests/ls/rt-1: Likewise.
+
+2001-12-02 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.1.3.
+
+ * src/sys2.h (HELP_OPTION_DESCRIPTION): New macro.
+ (VERSION_OPTION_DESCRIPTION): New macro.
+ * src/chgrp.c, src/chmod.c, src/chown.c, src/cp.c, src/dd.c,
+ * src/df.c, src/dircolors.c, src/du.c, src/install.c, src/ln.c,
+ * src/ls.c, src/mkdir.c, src/mkfifo.c, src/mknod.c, src/mv.c, src/rm.c,
+ * src/rmdir.c, src/shred.c, src/stat.c, src/sync.c, src/touch.c (usage):
+ Use new macros, HELP_OPTION_DESCRIPTION and VERSION_OPTION_DESCRIPTION
+ instead of hard-coding --help and --version descriptions.
+
+ * POTFILES.in: Add src/sys2.h.
+
+ * src/touch.c (touch): Extend the change of 2001-09-15 to work on
+ systems for which errno is set to EPERM in that case. Thus, e.g.,
+ `touch /' by non-root gives a better diagnostic on systems like SunOS4.
+ Reported by Volker Borchert.
+
+ Don't emulate dd's skip=N for *all* character devices; lseek works
+ just fine on non-tape character devices like /dev/mem and /dev/kmem.
+ * src/dd.c (buggy_lseek_support) [__linux__]: Emulate `skip=N'
+ behavior using reads, not lseek for Linux tape devices (major == 9).
+ Kernel lseek support for tapes is broken, up to and including
+ linux-2.4.16. Reported by Herbert Xu.
+
+2001-11-27 Jim Meyering <meyering@lucent.com>
+
+ * tests/ls/rt-1: Compare all lines of output.
+ Update code to use `trap' and more up to date infrastructure.
+
+ The change of 2001-11-01 introduced a bug whereby some recursive
+ listings didn't have a blank line between per-directory groups of files.
+ * src/ls.c (print_dir): Print a newline before each directory name
+ except the first one, rather than after each except the last, since
+ now (after the changes of 2001-11-01) detecting whether a `pending*'
+ is the last would involve more work. Reported by Andreas Schwab.
+ * tests/ls/recursive: New file. Test for the above.
+ * tests/ls/Makefile.am (TESTS): Add recursive.
+
+ This change has no net effect.
+ * src/ls.c (main): Remove always-true conjunct and add a comment.
+
+2001-11-26 Jim Meyering <meyering@lucent.com>
+
+ * src/shred.c: Don't include "gtod.h"
+ (main): Don't `call' GETTIMEOFDAY_INIT.
+ * src/ls.c: Likewise.
+
+2001-11-24 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint: Include signatures for the xdelta file, too.
+
+ * Makefile.maint (emit-upload-commands): Rename from
+ emit-rsync-commands.
+ Output only the package name and the prev and current version numbers.
+
+ * Version 4.1.2.
+
+ * src/sync.c (usage): Make --help and --version strings
+ start in column 7.
+
+ * Makefile.cfg (move_if_change): Remove definition.
+ ($(srcdir)/m4/jm-glibc-io.m4): Use mv, not move-if-change.
+
+2001-11-23 Jim Meyering <meyering@lucent.com>
+
+ * cp.c, df.c, du.c, install.c, ln.c, ls.c, mkdir.c (usage):
+ * mkfifo.c, mknod.c, mv.c, shred.c, touch.c (usage):
+ Note that ``Mandatory arguments to long options are mandatory
+ for short options too.''
+
+ * src/shred.c (usage): Use `output', not `print' in description of
+ the --version option, so this message is consistent with all the rest.
+
+ * chgrp.c, chmod.c, chown.c, cp.c, dd.c, df.c, dircolors.c (usage):
+ * du.c, install.c, ln.c, ls.c, rm.c, rmdir.c, shred.c, touch.c (usage):
+ Split --help output into smaller pieces.
+ Use fputs, not printf.
+
+ * src/cp-hash.c: Use opaque type, Hash_table, not `struct hash_table'.
+ * src/du.c: Likewise.
+ * src/remove.c: Likewise.
+
+2001-11-22 Jim Meyering <meyering@lucent.com>
+
+ Don't fail for commands like this: cp a a d/
+ This change in behavior was introduced in 4.1.1, as part of the
+ 2001-09-28 change. cp and mv still fail for commands like this:
+ rm -rf a b c; mkdir a b c; touch a/f b/f; mv a/f b/f c
+
+ * src/copy.c (triple_hash_no_name): New function.
+ (src_info_init): New function.
+ (copy_internal): Warn and return early for the second and subsequent
+ occurrences of the same source file named on the command line.
+ * src/copy.h (struct cp_options) [src_info]: New member.
+ * src/install.c (cp_option_init): Initialize new member.
+ * src/mv.c (cp_option_init): Likewise.
+ * src/cp.c (cp_option_init): Likewise.
+ (do_copy): Call src_info_init.
+
+ * tests/mv/dup-source: New test for the above.
+ * tests/mv/Makefile.am (TESTS): Add dup-source.
+
+ * src/copy.c (seen_file): Change type of `stats' parameter to pointer.
+ (copy_internal): Update caller.
+
+ * src/copy.c (struct F_triple): Rename from dest_info.
+ (seen_file): Rename from seen_dest. Rename parameters accordingly.
+ (record_file): Rename from record_dest. Rename parameters accordingly.
+ (triple_hash): Rename from dest_info_hash.
+ (triple_compare): Rename from dest_info_compare.
+ (triple_free): Rename from dest_info_free.
+
+ * src/mknod.c (main): Add a literal format string to suppress
+ a warning from gcc's -Wformat-security.
+
+ copy.c shouldn't maintain static state.
+
+ * src/copy.c (dest_info): Remove declaration of file-scoped global.
+ (dest_info_init): Require a parameter.
+ Update all callers.
+ (seen_dest): Require a hash table parameter. Update callers.
+ (record_dest): Likewise.
+ * src/copy.h: Include hash.h.
+ (struct cp_options) [dest_info]: New member.
+ * src/install.c (cp_option_init): Initialize new member.
+ * src/mv.c (cp_option_init): Likewise.
+ * src/cp.c (cp_option_init): Likewise.
+ (do_copy): Remove const attribute from declaration of parameter, x.
+
+2001-11-17 Jim Meyering <meyering@lucent.com>
+
+ * tests/chmod/equals: New test for the just-fixed bug in
+ lib/modechange.c.
+ * tests/chmod/Makefile.am (TESTS): Add equals.
+
+ * configure.ac: Replace use of the one-arg form of AC_INIT
+ with a use of the 3-arg form and a use of AC_CONFIG_SRCDIR.
+
+2001-11-12 Jim Meyering <meyering@lucent.com>
+
+ * tests/rm/r-3: Clean up.
+
+2001-11-09 Jim Meyering <meyering@lucent.com>
+
+ * configure.ac: Use AC_CONFIG_FILES(...) and call AC_OUTPUT with no
+ arguments.
+
+2001-11-06 Jim Meyering <meyering@lucent.com>
+
+ * src/dircolors.hin: Remove duplicate entry for .png.
+ Reported by Frédéric L. W. Meunier.
+
+2001-11-03 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.1.1.
+
+ * src/ls.c (DEV_INO_PUSH): Avoid unnecessary copies.
+ (dev_ino_pop): Likewise.
+
+2001-11-02 Jim Meyering <meyering@lucent.com>
+
+ * src/ls.c: Rename global: s/trace_dirs/recursive/.
+ (extract_dirs_from_files): Rename parameter:
+ s/recursive/ignore_dot_and_dot_dot/.
+
+ * src/ls.c: (dev_ino_pop): Cast 2nd arg of obstack_blank to `int'
+ before negating to avoid warning from gcc on systems with 64-bit size_t.
+
+ * src/ls.c: Use XMALLOC and XREALLOC in a several places. It's cleaner.
+
+2001-11-01 Jim Meyering <meyering@lucent.com>
+
+ * src/ls.c: Include dirfd.h.
+ (print_dir): If dirfd fails, resort to using stat.
+
+ * tests/ls/infloop: Redirect cmp's stderr to /dev/null.
+
+ * src/ls.c (struct pending) [st_ino, st_dev]: Remove members.
+ (queue_directory): Remove just-added 3rd parameter
+ and associated code, and update callers.
+ (print_dir): Get dev/inode pair via `fstat (dirfd (reading), ...',
+ and call visit_dir to detect cycles here.
+ Push the dev/inode pair onto the new stack.
+ (dev_ino_obstack): New global.
+ (DEV_INO_PUSH): New macro.
+ (dev_ino_pop): New function.
+ (ASSERT_MATCHING_DEV_INO): New macro.
+ (visit_dir): Take two parameters (dev,ino), not one `pending'.
+ (main): Initialized the dev_ino_obstack.
+ Don't call visit_dir here.
+ Get the dev/ino pair from the new stack, not from the pending entry.
+
+ Make ls -R detect directory cycles.
+ Add loop detection without incurring an additional stat call per
+ directory processed. To detect loops efficiently (i.e., time: +O(1)
+ per directory processed by ls -R, total additional space:
+ O(max-tree-depth)), record the dev/ino of each `active' directory
+ in a hash table. To know when a directory is no longer active,
+ insert a marker (name == NULL) entry for it in the pending queue.
+ When a marker comes to the front of the queue, that directory is no
+ longer active, and must be removed from the hash table. To remove it,
+ we need to know its dev/ino again. Since by the time a directory
+ has become inactive its files[] info is long gone and it's DIR*
+ is closed, I must either save the dev/ino someplace (pending seemed
+ logical) or recompute them via stat.
+
+ The following change will convert to using a stack of dev/ino pairs
+ instead, pushing an entry when doing the opendir (use fstat on
+ dirfd (reading)), and popping (when encountering a marker) to get
+ the dev/ino pair to be removed from the hash table.
+
+ * src/ls.c: Include hash.h, same.h, and xalloc.h.
+ (INITIAL_TABLE_SIZE, LOOP_DETECT): Define.
+ (active_dir_set): New global.
+ (struct dev_ino): Declare.
+ (dev_ino_hash, dev_ino_compare, dev_ino_free): New functions.
+ (visit_dir, free_pending_ent): New functions.
+ (main): Initialize the active_dir_set hash table, if necessary.
+ Don't confuse a marker entry with a real one.
+ Detect loops.
+ Manage the set of active directories.
+ Free the hash table.
+ (queue_directory): Add a new parameter.
+ Ensure that we set the new dev/ino members for each enqueued directory.
+ Update all callers.
+ (print_dir): Don't confuse a marker entry with a real one.
+ (extract_dirs_from_files): Insert a marker entry before inserting
+ the entries for subdirectories.
+
+ Don't try to print a NULL pointer.
+ * src/ls.c (main): Don't use ARGMATCH_TO_ARGUMENT.
+ This reverts part of the 1998-12-31 change.
+ * tests/ls/dired: New test, for the above.
+ * tests/ls/Makefile.am (TESTS): Add dired.
+
+2001-10-24 Jim Meyering <meyering@lucent.com>
+
+ * src/cp.c (main): Free hash table storage.
+ * src/cp-hash.c (forget_all): Use hash_free, not hash_clear.
+
+2001-10-22 Paul Eggert <eggert@twinsun.com>
+
+ * src/sys2.h (alloca): Define to __builtin_alloca if __GNUC__,
+ to avoid a warning if -Wall.
+
+2001-10-21 Paul Eggert <eggert@twinsun.com>
+
+ * src/dd.c: Remove as many instances of 'unsigned' as
+ possible, as some of them were not conforming to ANSI C, and
+ they made the code hard to read. Avoiding 'unsigned' cuts
+ down on the number of casts.
+
+ (newline_character, space_character, save_char):
+ Now char, not unsigned char.
+ (obuf): Now char *, not unsigned char *.
+ (ascii_to_ebcdic, ascii_to_ibm, ebcdic_to_ascii):
+ Now char[], not unsigned char[].
+ (translate_charset, translate_buffer, swab_buffer, skip, copy_simple,
+ copy_with_block, copy_with_unblock):
+ Arg now points to char, not unsigned char.
+ All callers changed.
+ (translate_charset, parse_conversion, apply_translations):
+ Use int index, not unsigned int.
+ (bit_count): Arg is now int, not unsigned int.
+ Callers not changed, as they already assumed this.
+ (translate_buffer): Cast char to unsigned char before using
+ it as a subscript.
+ (swab_buffer): Returns char *, not unsigned char *.
+ (dd_copy): Use char, not unsigned char, for buffers.
+ Use size_t for possibly-large index, not unsigned int.
+
+2001-10-21 Jim Meyering <meyering@lucent.com>
+
+ * src/shred.c (isaac_seed_machdep): Handle SIGSEGV, too. Ick.
+
+ * tests/mv/Makefile.am (TESTS): Remove i-3. It's not portable.
+
+ * src/copy.c: Include xreadlink.h.
+ (copy_internal): Don't use PATH_MAX.
+ Rewrite the symlink-copying code to use xreadlink.
+
+2001-10-20 Jim Meyering <meyering@lucent.com>
+
+ * src/touch.c (touch): Extend last change to work on systems
+ for which errno is set to EINVAL.
+
+ * src/ls.c: Declare some local variables to be `const', where
+ appropriate.
+ (usage): Improve the description of --dereference (-L).
+
+ * src/rm.c (usage): Clarify description of --directory (-d).
+ Based on a patch from Michael Stone.
+
+ * man/chmod.x: Describe sticky files and directories.
+ From Michael Stone.
+
+ * tests/mv/partition-perm: Don't use a umask that removes owner
+ read/write. Use a stricter test for permissions.
+
+ * tests/cp/link-preserve: Don't use a umask that removes owner
+ read/write. That would induce spurious failures in a probably-
+ outdated version of purify.
+
+2001-10-18 Jim Meyering <meyering@lucent.com>
+
+ * src/mv.c (movefile): Now that remember_copied xstrdup's the file
+ name, free `new_dest'.
+
+ Plug a leak.
+ * src/cp-hash.c (remember_copied): Use src_to_dest_free to free
+ the entry we couldn't insert.
+
+ Don't use free'd memory.
+ * src/copy.c (dest_info_free): New function.
+ (dest_info_init): Make the hash table code use it.
+ (record_dest): Store each DEST in malloc'd memory. Hence the above.
+ Use dest_info_free to free the `ent' we couldn't insert.
+
+2001-10-14 Jim Meyering <meyering@lucent.com>
+
+ Now, -P is the same as --no-dereference, per POSIX.
+ Use --parents to get the old meaning.
+
+ * src/cp.c (enum) [NO_DEREFERENCE_OPTION]: Remove member.
+ (long_opts): Associate --no-dereference with `-P'.
+ (usage): Update description of -P.
+ (main): Remove local, used_P_option, and code to warn
+ that the meaning of -P would be changing.
+
+2001-10-13 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.c (copy_internal): Tighten up and add comments
+ describing the test for when to record (via remember_copied)
+ a <dst_path, source_dev, source_ino> triple.
+ Relax the test that guards the hard-linked-dir check and
+ the hard-link-preserving code.
+
+ Remove the link-preserving semantics from cp_options.dereference.
+ Clean up the code that preserves links for `cp -d' and `mv'.
+ Introduce new options:
+ --preserve[={mode,ownership,timestamps,links,all}]
+ --no-preserve={mode,ownership,timestamps,links,all}
+ -p and --preserve remain unchanged and are equivalent to
+ `--preserve=mode,ownership,timestamps'
+
+ * src/cp.c (enum) [NO_DEREFERENCE_OPTION]: New member.
+ (enum) [NO_PRESERVE_ATTRIBUTES_OPTION]: New member.
+ (enum) [PRESERVE_ATTRIBUTES_OPTION]: New member.
+ (long_opts): Separate -d and --no-dereference options.
+ Add `no-preserve'.
+ Separate -p and --preserve options.
+ The long-named --preserve now accepts optional arguments; -p doesn't.
+ (usage): Describe additions and changes.
+ (cp_option_init): Initialize new member, preserve_links, to 0.
+ (decode_preserve_arg): New function.
+ (main) [case 'a']: Set preserve_links to 1.
+ [case 'd']: Set preserve_links to 1.
+ Add `case' for long-named --no-dereference.
+ Handle long-named --no-preserve and --preserve.
+
+ * src/copy.h (enum Dereference_symlink): Add comments.
+ (struct cp_options) [preserve_links]: New member.
+ * src/install.c (cp_option_init): Initialize new member to 0.
+ * src/mv.c (cp_option_init): Initialize new member to 1.
+
+ * tests/cp/link-preserve: Add tests for some of the above.
+
+2001-10-13 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.h (struct cp_options) [failed_unlink_is_fatal]: Remove
+ unused member.
+ * src/mv.c (cp_option_init): Don't set it.
+ * src/cp.c (cp_option_init): Likewise.
+ * src/install.c (cp_option_init): Likewise.
+
+ * src/copy.h (struct cp_options): Rename members:
+ s/preserve_owner_and_group/preserve_ownership/, and
+ s/preserve_chmod_bits/preserve_mode/.
+ * src/copy.c, src/cp.c, src/install.c, src/mv.c: Update all uses.
+
+ * man/chown.x: Fix typo: s/Sh/SH/ before OPTIONS.
+ Reported by Eric S. Raymond.
+
+2001-10-12 Jim Meyering <meyering@lucent.com>
+
+ * tests/ls/Makefile.am (TESTS): Add infloop.
+ (XFAIL_TESTS): Mark it as a test that we expect to fail (temporarily).
+ * tests/ls/infloop: New file.
+
+2001-10-11 Jim Meyering <meyering@lucent.com>
+
+ * src/mknod.c (main): Tell what's wrong with `mknod c zero 1 5' rather
+ than saying just `Try `./mknod --help' for more information.'.
+ Suggestion from Karl Berry.
+
+2001-10-07 Jim Meyering <meyering@lucent.com>
+
+ * TODO: Remove items relating to cp-hash.c, now that they're done.
+
+ Allow cp -d (and mv when it resorts to copying) to preserve
+ hard links that span command line arguments.
+
+ * src/cp.c (do_copy): Don't clear the hash table after processing
+ each command line argument.
+ * tests/cp/link-preserve: New test for the above.
+ * tests/cp/Makefile.am (TESTS): Add link-preserve.
+
+ * src/cp-hash.c (remember_copied): Make a local copy of the file name.
+ (src_to_dest_free): New function (to free the above).
+ (hash_init): Register src_to_dest_free.
+ * src/copy.c (copy_dir): Now that remember_copied copies the
+ file name, free the temporary `dst_path' allocated here.
+
+2001-10-06 Jim Meyering <meyering@lucent.com>
+
+ Convert du.c to use the functions in lib/hash.c, not private,
+ slightly-modified copies of those that used to be in cp-hash.c.
+
+ * src/du.c (struct entry) [coll_link]: Remove member.
+ (struct htab): Remove.
+ (hash_reset, hash_init, hash_insert2, hash_insert): Remove functions.
+
+ * src/du.c: Include hash.h and same.h.
+ (htab): Change type of global to `struct hash';
+ (entry_hash, entry_compare, hash_ins): New functions.
+ (count_entry): Use hash_ins instead of hash_insert.
+
+2001-10-06 Jim Meyering <meyering@lucent.com>
+
+ Rewrite cp-hash.c to use the functions in lib/hash.c.
+
+ * src/cp-hash.c (hash_init): Die if hash_initialize fails.
+
+ * src/cp-hash.c: Rewrite to use the functions in lib/hash.c.
+ * src/cp-hash.h: Update prototype for hash_init.
+ * src/mv.c (do_move): Reflect that hash_init now takes no arguments.
+ * src/install.c (main): Likewise.
+ * src/cp.c (main): Likewise.
+
+2001-10-06 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.c (record_dest): Avoid a small leak.
+
+2001-10-06 Jim Meyering <meyering@lucent.com>
+
+ This decreases the memory footprint a little, when copying
+ hierarchies containing many files.
+
+ * src/copy.c (copy_internal): Call remember_copied only if
+ the source file has 1 < st_nlink, or if it's a directory.
+ Now that EARLIER_FILE is set conditionally, initialize it to NULL.
+
+ * tests/mv/childproof: Redirect stderr on one test.
+
+2001-10-05 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.c: Include hash-pjw.h and remove definition of hash_pjw.
+ * src/remove.c: Likewise.
+
+2001-10-01 Jim Meyering <meyering@lucent.com>
+
+ * src/remove.c (hash_pjw): Remove function.
+ * src/copy.c: Likewise.
+
+2001-09-29 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.c (copy_internal): Call record_dest for all types of
+ files (for which this makes sense), not just regular ones.
+
+ * mkinstalldirs: Update from master.
+
+ * Makefile.maint (wget-update): Add mkinstalldirs.
+
+2001-09-28 Jim Meyering <meyering@lucent.com>
+
+ This mv command should fail (likewise for cp), rather than
+ silently clobbering one of the source files.
+ rm -rf a b c; mkdir a b c; touch a/f b/f; mv a/f b/f c
+ Reported by Dan Jacobson.
+
+ * src/cp.c (do_copy): Call dest_info_init if necessary.
+ * src/install.c (main): Likewise.
+ * src/mv.c (main): Likewise.
+ * src/copy.h (dest_info_init): Declare.
+ * src/copy.c: Include "hash.h" and "same.h".
+ (struct Dest_info): Define.
+ (dest_info): Declare global.
+ (DEST_INFO_INITIAL_CAPACITY): Define.
+ (hash_pjw): New function.
+ (dest_info_hash): Likewise.
+ (dest_info_compare): Likewise.
+ (dest_info_init): Likewise.
+ (seen_dest): Likewise.
+ (record_dest): Likewise.
+ (copy_internal): If the destination exists, fail if it's in the set
+ of files that have already been created as part of this mv or cp.
+ (copy_internal) [move_mode]: Record the destination dev/ino/filename.
+ (copy_internal) [!move_mode, regular file]: Likewise.
+
+ Accept new option: --reply={yes,no,query}
+ * src/cp.c: (enum) [REPLY_OPTION]: Define.
+ (usage): Describe new option.
+ Split long usage string into smaller pieces.
+ (main): Handle new option.
+
+ * missing: Update from master.
+ * config.guess: Likewise.
+ * config.sub: Likewise.
+
+ * configure.ac: Tell automake to use the file name `config.hin'
+ rather than the two-`.' config.h.in.
+
+2001-09-26 Jim Meyering <meyering@lucent.com>
+
+ * man/Makefile.am (common_dep): s/configure.in/configure.ac/.
+
+ * configure.ac: Renamed from configure.in.
+
+ * INSTALL, mkinstalldirs: Update to autoconf 2.50 version.
+
+2001-09-23 Jim Meyering <meyering@lucent.com>
+
+ * tests/mv/childproof: New test, for the above fix.
+ Based on a report from Dan Jacobson.
+ * tests/mv/Makefile.am (TESTS): Add childproof.
+
+ * Makefile.am (SUBDIRS): When using newer gettext (in which
+ intl/libintl.h is created by rules intl/Makefile)
+ `intl' must precede `lib'.
+
+2001-09-22 Jim Meyering <meyering@lucent.com>
+
+ Mostly clean-up (modulo the better diagnostic).
+ * src/copy.c (copy_internal): Rename parameter, move_mode, to
+ command_line_arg, and adjust caller. Now, move_mode is a local
+ that is derived from command_line_arg.
+ Factor some involved code to produce something slightly more readable.
+ Use x->move_mode, not move_mode in determining which diagnostic
+ to give (`backing up %s would destroy source; %s not moved').
+
+2001-09-16 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls.c (usage): Fix typo in -g usage.
+ -H now means --dereference-command-line.
+
+2001-09-16 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Require automake-1.5.
+
+ * man/Makefile.am (*.1): Depend on *source* files, not binaries.
+ (.x.1): Add code to work around ginstall vs. install exception.
+
+ * man/Makefile.am (dist_man_MANS): Use dist_man_MANS, not man_MANS.
+
+2001-09-15 Jim Meyering <meyering@lucent.com>
+
+ Convert to a more conventional (e.g., like autoconf) Makefile.am.
+ * man/Makefile.am: Remove hacks.
+ * man/GNUmakefile: Remove file.
+ * man/Makefile.summ: Remove file.
+ * man/Makefile.maint: Remove file.
+ * man/ginstall.x: Remove. Renamed to ...
+ * man/install.x: ... this. New file.
+ Michael Stone reported that man pages weren't built in non-srcdir build.
+
+ * src/touch.c (EISDIR): Define to 0, if not already defined.
+ (touch): Give a better diagnostic for e.g., `touch /' by non-root.
+ Based on a patch from Michael Stone.
+ Reported by Jeff Sheinberg as Debian bug #101677.
+ * tests/touch/fail-diag: New test, for the above fix.
+ * tests/touch/Makefile.am (TESTS): Add fail-diag.
+
+ * src/copy.c (copy_internal) [move_mode]: Support the new
+ --reply=... option.
+ (UNWRITABLE): Define (factored out of copy_internal).
+ (copy_internal): Use UNWRITABLE.
+
+ Accept new option: --reply={yes,no,query}
+ * src/mv.c: Include argmatch.h.
+ (enum) [REPLY_OPTION]: Define.
+ (usage): Describe new option.
+ Split long usage string into smaller pieces.
+ (main): Handle new option.
+
+ * src/cp.c (main): Reflect renaming: s/I_ON/I_ASK_USER/.
+
+ * src/copy.h (enum Interactive): Remove members, I_OFF and I_ON.
+ Instead, add I_ALWAYS_YES, I_ALWAYS_NO, and I_ASK_USER.
+
+ * tests/mv/i-2: Clean up: use priv-check rather than open-coding it.
+
+2001-05-11 Paul Eggert <eggert@twinsun.com>
+
+ * src/chmod.c, src/chown.c, src/mkdir.c, src/rm.c, src/rmdir.c (main):
+ Don't strip trailing slashes; POSIX doesn't allow it here.
+ Don't include "dirname.h" when no longer needed.
+
+2001-09-08 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.c (copy_internal): Add braces around now-multi-stmt
+ if-block. This fixes a bug introduced by my 2001-08-06 change.
+ * tests/mv/i-4: New test, for the above.
+ * tests/mv/Makefile.am (TESTS): Add i-4.
+
+2001-09-04 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls.c (get_link_name): Update use of xreadlink.
+
+2001-09-02 Jim Meyering <meyering@lucent.com>
+
+ * tests/priv-check: Change usage not to use $1.
+ That's not portable to e.g., Solaris2.6's /bin/sh.
+ Communicate via an envvar instead.
+ * tests/mv/i-3: Don't pass an argument to a sourced script.
+ * tests/cp/special-bits: Likewise.
+ * tests/chown/basic: Likewise.
+
+ * Makefile.maint (alpha): Depend on local-check so that they run
+ a little earlier.
+
+2001-09-01 Jim Meyering <meyering@lucent.com>
+
+ * src/df.c (show_point): Use canonicalize_file_name, if possible.
+ [HAVE_RESOLVEPATH], [!HAVE_RESOLVEPATH]: Use malloc, not alloca,
+ so that these two paths also produce `resolved' in malloc'd storage.
+ Free that memory when done with it.
+
+ * src/ls.c: Include "xreadlink.h".
+ (get_link_name): Don't use PATH_MAX.
+ Rewrite to use xreadlink.
+
+2001-08-30 Paul Eggert <eggert@twinsun.com>
+
+ * src/chgrp.c: Do not include savedir.h; not used.
+ * src/chown.c: Likewise.
+
+ * src/chmod.c (change_dir_mode): Remove statp arg; no longer needed.
+ * src/chown-core.c (change_dir_owner): Likewise.
+ * src/du.c (count_entry): Remove st_size argument.
+ * src/copy.c (copy_dir): Likewise.
+
+2001-08-30 Paul Eggert <eggert@twinsun.com>
+
+ * src/copy.c: Include full-write.h.
+ * src/dd.c: Likewise.
+
+ * src/copy.c (full_write): Remove decl; not needed.
+ * src/dd.c: Likewise.
+ * src/install.c: Likewise.
+ * src/mv.c: Likewise.
+
+ * src/copy.c (copy_reg):
+ Don't assume read and write size fits in int.
+ * src/dd.c (open_fd): Likewise.
+
+2001-08-30 Paul Eggert <eggert@twinsun.com>
+
+ * src/remove.c (bool): Remove; moved to...
+ * src/system.h: ...here.
+
+ * src/du.c (count_entry, main): Reflect changes to the
+ exclude functions.
+
+2001-08-13 Jim Meyering <meyering@lucent.com>
+
+ * src/cp.c, src/dd.c, src/ln.c, src/ls.c, src/mv.c (AUTHORS): Mark
+ string for translation, since it contains the English word `and'.
+
+ * Makefile.maint (author_mark_check): New rule.
+ (local-check): Depend on it.
+
+ Change the rules governing when mv prompts before removing an
+ existing destination file so it is consistent with POSIX:
+ Now, in the absence of --force (-f), if stdin is a tty and an
+ existing destination is not writable mv will prompt before
+ overwriting the destination file.
+ Reported by Vin Shelton.
+
+ * src/copy.c (overwrite_prompt): New function.
+ (copy_internal): Separate the mv-specific and non-move_mode code
+ that determines whether to prompt the user.
+ [move_mode]: Don't make mv fail (i.e. don't return 1) just because
+ the user declined to remove one or more of the files.
+ * src/copy.h (enum Interactive): New type.
+ (struct cp_options) [interactive]: Change type to Interactive.
+ (struct cp_options) [stdin_tty]: New member.
+ * src/cp.c (cp_option_init): Adjust initialization of `interactive',
+ and initialize new member, stdin_tty.
+ * src/mv.c (cp_option_init): Likewise.
+ * src/install.c (cp_option_init): Likewise.
+ * src/cp.c (main): Adjust initialization(s) of `interactive',
+ * src/mv.c (main): Likewise.
+ * tests/mv/i-1: Change expected exit status to reflect the above.
+
+2001-08-12 Jim Meyering <meyering@lucent.com>
+
+ * tests/mk-script ($program_name): Define.
+ (main): Use $program_name, rather than long-inaccurate `build-script'.
+ (main): Iterate over the sorted keys (rather than `while...each...'),
+ so this script produces the same output regardless of which version
+ of perl (e.g., perl5.6) is used.
+
+ Work around non-compliant gettimeofday on Mac OS X 10.0.4,
+ (aka Darwin 1.3.7) that caused the date of the first file listed
+ in long output to be the current time rather than the file's mtime.
+ The real work is in m4/gettimeofday.m4 and the wrapper function,
+ lib/gettimeofday.c.
+ * src/ls.c: Include gtod.h.
+ (main): `Call' GETTIMEOFDAY_INIT.
+ (print_long_format): Add a comment about gettimeofday.
+ Report and diagnosis from Bernhard Baehr.
+
+ * src/shred.c: Include gtod.h.
+ (main): `Call' GETTIMEOFDAY_INIT, just in case the code ever changes
+ to make it necessary.
+
+2001-08-10 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls.c (print_long_format): Simplify previous patch for
+ listing negative sizes, by adding OFF_T_MAX - OFF_T_MIN + 1
+ instead of doing a fancy conditional shift. This is simpler
+ and it avoids GCC's bogus compile-time warning about shift
+ counts. (As a bonus, it is portable to hosts that do not use
+ twos-complement arithmetic. :-)
+
+2001-08-10 Jim Meyering <meyering@lucent.com>
+
+ * ls.c (print_long_format): Multiply the shift width by zero
+ to avoid a warning from gcc on hosts with an unsigned type for the
+ st_size member.
+
+2001-08-06 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls.c (print_long_format): If a file size is negative, assume
+ the typical case where it has wrapped around from a positive value.
+
+2001-08-07 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (m4-check): New rule.
+ (local-check): Depend on it.
+
+2001-08-06 Jim Meyering <meyering@lucent.com>
+
+ Fix the bug whereby `mv -uf source dest' would delete source,
+ even though it's older than dest.
+
+ * src/mv.c (usage): Correct the description of --update.
+ * src/copy.c (copy_internal): Set *rename_succeeded, so that
+ the caller (mv) doesn't remove the source file.
+ Reported by Phelippe Neveu.
+
+ * tests/mv/update: New test for the above.
+ * tests/mv/Makefile.am (TESTS): Add update.
+
+2001-08-05 Jim Meyering <meyering@lucent.com>
+
+ * tests/root-only: Generalize. Rename to ...
+ * tests/priv-check: ...this. New file. Renamed from the above.
+ * tests/Makefile.am (EXTRA_DIST): Reflect renaming.
+ * tests/mv/i-3: Reflect name and usage changes.
+ * tests/chown/basic: Likewise.
+ * tests/cp/special-bits: Likewise.
+ * tests/sample-test: Likewise.
+
+2001-08-04 Jim Meyering <meyering@lucent.com>
+
+ * tests/root-only: Remove *all* write access, not just that
+ of the owner.
+
+ * tests/mv/i-3: New test for the above fix.
+ * tests/mv/Makefile.am (TESTS): Add i-3.
+
+2001-08-03 Paul Eggert <eggert@twinsun.com>
+
+ * ls.c (quote_name): Pass 0 to mbsnwidth, since the default
+ got changed and we want the default now.
+
+2001-08-03 Paul Eggert <eggert@twinsun.com>
+
+ * ls.c (quote_name): Pass 0 to mbsnwidth, since the default
+ got changed and we want the default now.
+
+2001-07-15 Jim Meyering <meyering@lucent.com>
+
+ * src/Makefile.am (INCLUDES): Add -I../lib so sys2.h can include
+ the new, generated file, unlocked-io.h.
+
+ * src/sys2.h: Include "unlocked-io.h", rather than hard-coding the
+ HAVE_*_UNLOCKED macros.
+
+ * Makefile.cfg ($(srcdir)/m4/jm-glibc-io.m4): New rule.
+
+2001-07-14 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (tgz-size): Also work for sizes in the kilobyte range.
+
+ * Makefile.maint: More changes from autoconf.
+
+ Changes from autoconf.
+ * Makefile.maint (GZIP_ENV): Add --best.
+ (AMTAR): Define.
+ (writable-files): Factor out ../release/ constant, and work (by
+ creating it) even if such a directory doesn't exist.
+
+2001-07-08 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.c (get_dest_mode): Clear set-user-ID and set-group-ID bits
+ when copying (i.e., not in move mode) and not preserving permissions.
+ Reported by kytek@cybercomm.net.
+ FIXME: add a test for this!!!
+
+2001-07-02 Jim Meyering <meyering@lucent.com>
+
+ * src/ln.c (do_link): Test the boolean symbolic_link, not the function,
+ symlink. Patch by Frederik Eaton.
+
+2001-06-17 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint: Factor out definitions specific to fileutils,
+ sh-utils, and textutils, so that other packages can use the framework.
+ Patch by Akim Demaille.
+ * Makefile.cfg: New file with package-specific definitions.
+ * GNUmakefile: Include Makefile.cfg.
+ * Makefile.am (EXTRA_DIST): Add Makefile.cfg.
+
+2001-06-16 Jim Meyering <meyering@lucent.com>
+
+ * src/ls.c (main): Recheck global print_with_color after calling
+ parse_ls_color, since that function may have reset it.
+ Based on a patch from Richard Dawe.
+
+2001-06-16 Jim Meyering <meyering@lucent.com>
+
+ * config.sub: Update from master repository.
+ * config.guess: Likewise.
+
+2001-06-09 Jim Meyering <meyering@lucent.com>
+
+ * configure.in (ALL_LINGUAS): Add Turkish (tr).
+
+2001-05-25 Jim Meyering <meyering@lucent.com>
+
+ * src/ls.c (print_long_format): Don't truncate user names
+ or group names that are longer than 8 characters.
+
+ Add definitions that let me factor the wget rule while still letting
+ me accommodate the fact that these files reside in several different
+ directories and come from different places.
+ * Makefile.maint (wget-files): Define.
+ (get-targets, *-local_dir, *-url_prefix): Likewise.
+ (target, url, local_file): Convenience variables.
+ ($(get-targets)): The factored rule.
+
+2001-05-24 Jim Meyering <meyering@lucent.com>
+
+ * src/ansi2knr.c: Update from master source.
+
+ * Makefile.maint (wget-update): Have wget write to a temporary file,
+ and replace the original only if wget succeeds.
+ Also get ansi2nkr.c.
+ (move-if-change): Define.
+ (wget-update): Use it in place of mv.
+
+ * src/ls.c: Use `#if D_TYPE_IN_DIRENT && defined DTTOIF' to
+ determine whether to enable the DT_INIT definition, not the less
+ portable `#if defined _DIRENT_HAVE_D_TYPE || defined DTTOIF'.
+ Reported by Eli Zaretskii.
+
+ * src/mkfifo.c (main): Remove quotes around %s.
+ The argument is already quoted via the quote function.
+ * src/mknod.c (main): Likewise.
+ Reported by Göran Uddeborg.
+
+2001-05-21 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (wget-update): depcomp and missing are now in
+ automake's lib/ subdirectory.
+
+2001-05-11 Paul Eggert <eggert@twinsun.com>
+
+ Add new --time-style option.
+ Change --full-time to be equivalent to --time-style=full-iso.
+
+ * NEWS, doc/omni-utils.texi: Describe this change.
+
+ * src/ls.c: Include "hard-locale.h".
+ (nstrftime): New decl.
+ (enum time_style): New enum.
+ (time_style_args, time_style_types): New constants.
+ (full_time): Remove.
+ (long_time_format): Initialize to POSIX defaults.
+ (TIME_STYLE_OPTION): New constant.
+ (long_options, decode_switches, usage): Add --time-style support.
+ (long_time_expected_width): Use nstrftime, not strftime.
+ (print_long_format): Likewise.
+ Increase initial size to match new full-iso time style.
+
+ * tests/ls/time-1: Unset QUOTING_STYLE and TIME_STYLE. Set TZ.
+ Adjust to change in full-time format.
+ Fix typo in failure messages (-a and -m were interchanged).
+
+2001-05-20 Jim Meyering <meyering@lucent.com>
+
+ * doc/Makefile.am (EXTRA_DIST): Add constants.texi and doclicense.texi.
+ (info_TEXINFOS): s/fileutils/omni-utils/.
+ (check-texinfo): New rule.
+ (check): Depend on check-texinfo.
+
+ * doc/omni-utils.texi (uniq invocation): Document the new optional
+ arguments to the --all-repeated option.
+ Make all references to POSIX use @sc{posix}.
+
+2001-05-19 Jim Meyering <meyering@lucent.com>
+
+ * doc/fileutils.texi: Remove.
+
+ * doc/omni-utils.texi: Change a few uses of `timezone' to `time zone'.
+ Reported by Stephen Eglen.
+
+2001-05-16 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (my-distcheck): Remove work-around kludge and
+ associated comment, now that automake has ben fixed.
+
+2001-05-12 Paul Eggert <eggert@twinsun.com>
+
+ Clean up some of the places where the code assumed that random
+ types like 'mode_t' fit into 'int', which POSIX doesn't guarantee.
+
+ * src/ls.c (struct fileinfo.linkmode): Now st_mode.
+ (print_color_indicator, print_name_with_quoting, print_type_indicator,
+ length_of_file_name_and_frills):
+ Use mode_t, not unsigned int, to store modes.
+ (dired_dump_obstack): Do not assume size fits in 'int'.
+ (get_link_name): readlink returns ssize_t, not int.
+ (make_link_path): Store buffer size as size_t, not int.
+ (print_long_format): Use unsigned long, not unsigned, to print
+ nlink_t, uid_t, gid_t, major_t, minor_t.
+
+2001-05-13 Paul Eggert <eggert@sic.twinsun.com>
+
+ * src/mknod.c (main): Check for NODEV device only if NODEV is defined.
+ * src/system.h (NODEV): Remove, undoing previous change.
+
+2001-05-13 Jim Meyering <meyering@lucent.com>
+
+ * src/remove.c (dir_name, dir_len): Define to different names
+ to avoid shadowing warnings due to new declarations from dirname.h.
+
+ * tests/Fetish.pm (run_tests): Fail if any test name is longer
+ than 12 bytes.
+ * tests/ls-2/tests: Shorten test names so the length of a
+ resulting file name doesn't exceed 14.
+
+2001-05-12 Paul Eggert <eggert@twinsun.com>
+
+ * src/system.h (NODEV): New macro, if not already defined.
+
+ * src/mknod.c (main): Check for overflow when converting out
+ of uintmax_t. Do not assume that major_t and minor_t are no
+ wider than int. Check for makedev failures. Convert device
+ numbers via uintmax_t, not unsigned long, just in case.
+ Coalesce duplicate code in the block and character device
+ cases.
+
+2001-05-11 Paul Eggert <eggert@twinsun.com>
+
+ Add new --dereference-command-line option.
+ -H now means this instead of meaning --si, as POSIX requires.
+
+ * NEWS, doc/omni-utils.texi: Document this.
+
+ * src/ls.c (enum Dereference_symlink): New type.
+ (dereference): New var, replacing trace_links, which was removed.
+ (long_options, main, decode_switches, gobble_file, usage):
+ Implement the changes.
+
+ * tests/ls-2/tests:
+ Rename slink-dir test to slink-dir-dF. Add new tests
+ slink-dir-F, slink-dir-dFH, slink-dir-dFL.
+
+2001-05-11 Paul Eggert <eggert@twinsun.com>
+
+ dirname code cleanup. base_name now behaves more compatibly
+ with POSIX basename when given file names that have trailing
+ slashes, and similarly for dir_name. Add new primitives
+ base_len and dir_len. Put the directory-name-related decls
+ into dirname.h.
+
+ * src/chmod.c (strip_trailing_slashes): Remove; now in dirname.h.
+ * src/chown.c (strip_trailing_slashes): Likewise.
+ * src/cp.c (strip_trailing_slashes): Likewise.
+ * src/df.c (strip_trailing_slashes): Likewise.
+ * src/ln.c (strip_trailing_slashes): Likewise.
+ * src/mkdir.c (strip_trailing_slashes): Likewise.
+ * src/rm.c (strip_trailing_slashes): Likewise.
+ * src/rmdir.c (strip_trailing_slashes): Likewise.
+
+ * src/dircolors.c, src/ls.c, src/remove.c:
+ Include "dirname.h", to get base_name.
+
+ * src/cp.c (make_path_private): Use dir_len instead of
+ dir_name, and avoid an extra mealloc call.
+
+ * src/df.c (find_mount_point): No need to strip trailing
+ slashes before invoking new dir_name.
+
+ * src/mv.c: Include "dirname.h".
+ (strip_trailing_slashes_2): Remove; now done by
+ strip_trailing_slashes. All callers changed.
+
+ * src/sys2.h (base_name): Remove decl; now in dirname.h.
+
+ * src/copy.c (copy_internal): Remove the code that tested for NULL
+ dir_name return value. That can't happen.
+
+2001-05-12 Jim Meyering <meyering@lucent.com>
+
+ * src/ls.c (usage): Wording changes related to -o, -n, and -g.
+ * doc/omni-utils.texi: Likewise.
+ From Paul Eggert.
+
+2001-05-11 Paul Eggert <eggert@twinsun.com>
+
+ * src/chmod.c (mode_changed, change_file_mode):
+ There's no need to invoke both lstat and stat here, so call just
+ one of the two functions.
+
+2001-05-11 Jim Meyering <meyering@lucent.com>
+
+ * doc/omni-utils.texi: New file. The union of fileutils.texi,
+ sh-utils.texi, and textutils.texi. Merged by Brian Youmans.
+
+ * src/shred.c (usage): Warn about backups and mirrors.
+ * doc/omni-utils.texi (shred invocation): Likewise.
+ From Nelson Beebe.
+
+2001-05-09 Jim Meyering <meyering@lucent.com>
+
+ * src/ls.c (main): Don't set `format_needs_stat' for --recursive (-R),
+ because that would make `ls -RF dir' stat unnecessarily all of the
+ files in dir/ on some systems.
+ Similarly, don't set `format_needs_stat' for --dereference (-L),
+ because that would make `ls -RLF dir' stat unnecessarily all non-symlink
+ files in dir/ on some systems.
+ Instead, ...
+ (gobble_file): ... also stat a file if `trace_dirs' (-R) is set and its
+ type is unknown.
+ ... also stat a file if `trace_links' (-L) is set and the file is a
+ symlink or its type is unknown.
+ (print_dir): Also recognize DT_REG and DT_LNK.
+
+2001-05-07 Jim Meyering <meyering@lucent.com>
+
+ * src/chown.c (main): Fix thinko that made --from=... fail:
+ s/argv[optind]/optarg/. Reported by Andrew Pham.
+
+ * tests/chown: New directory.
+ * tests/chown/basic: New (root-only) test for the above.
+ * tests/cp/special-bits: Factor out the root-only test into this ...
+ * tests/root-only: ... new file.
+ * tests/Makefile.am (EXTRA_DIST): Add root-only.
+ (SUBDIRS): Add chown.
+ * tests/chown/Makefile.am: New file.
+ * configure.in (AC_OUTPUT): Add tests/chown/Makefile.
+
+2001-05-05 Jim Meyering <meyering@lucent.com>
+
+ * src/ls.c (decode_switches): Complain if the envvar, QUOTING_STYLE,
+ is set to an invalid value.
+ Move some declarations of locals into scopes where they're used.
+
+2001-05-02 Jim Meyering <meyering@lucent.com>
+
+ * doc/texinfo.tex: Update from master repository.
+ * config.sub: Likewise.
+ * config.guess: Likewise.
+
+2001-05-01 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (tgz-size, xd-size): Compute sizes.
+ (announcement): Include sizes of .tar.gz and .xdelta files
+ in the announcement.
+
+ * src/ls.c (print_owner): New global variable.
+ (usage): Update the descriptions of -g.
+ (decode_switches): Honor the -g option (omit owner information),
+ now that POSIX specifies it.
+ (print_long_format): Don't print owner name if -g was specified.
+ Move declaration of `user_name' into the scope where it's used.
+ (print_group): Rename global from `inhibit_group'. Update all
+ uses accordingly.
+ * doc/fileutils.texi (What information is listed): Describe -g.
+ * TODO: Remove item for ls -g.
+
+ * src/ls.c (decode_switches): Make -n work just like -l, except
+ with numeric IDs, per POSIX. Before, to have any effect, -n had
+ to be used with -l. Reported by Dale Scheetz.
+ (usage): Update the description of -n.
+ Separate the descriptions of -n and --numeric-uid-gid.
+ Split string in --help output that had exceeded my limit of
+ 2048 bytes.
+
+2001-04-29 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.1.
+
+ * configure: Regenerate using a further-patched copy of autoconf-2.49e
+ to work around a bug in its test for ranlib. This is the change to
+ autoconf's acgeneral.m4 that was made on 2001-04-24.
+
+ * README: Don't mention mvdir. It is no longer provided.
+ Don't mention HP/UX vs. du blocksize problem. It's long gone.
+ Remove note about how cp, mv, and ln couldn't make backups
+ of files with names of maximum length. Now they can do that.
+ Thank the people who have provided access to their systems
+ for portability testing.
+ Warn about and describe autoconf/automake version requirements.
+ Use a better URL for the GNU Coding Standards.
+
+ * man/rm.x: Refer to shred.
+ Remove the example showing how to remove `-foo', since that is now
+ in the --help output (and hence automatically included).
+ * src/rm.c (usage): Mention shred.
+
+ * src/shred.c (usage): Include in --help output the warning about
+ some of the filesystem types on which shred is not effective.
+
+2001-04-25 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (my-distcheck): Add a comment.
+
+2001-04-23 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0.45.
+
+2001-04-22 Jim Meyering <meyering@lucent.com>
+
+ * src/ls.c (decode_switches): Ensure that -1 has no effect when it
+ follows -l, per POSIX. Reported by Ulrich Drepper.
+
+ * src/dd.c (usage): Mention that sync makes dd pad with spaces (rather
+ than NULs) when used with block or unblock.
+ (dd_copy): When using sync with either block or unblock,
+ pad with spaces. Reported by Dale Scheetz.
+ * tests/dd/skip-seek (block-sync-1): New test, for this. Based on
+ a report from Dale Scheetz.
+ * doc/fileutils.texi (dd invocation): Document it here, too.
+
+ * configure: Regenerate using a patched copy of autoconf-2.49e to
+ work around a bug in its test for a working memcmp function.
+ This is the change to autoconf's acfunctions.m4 that was made
+ on 2001-04-22.
+
+ * tests/ls/no-arg: New file.
+ * tests/ls/Makefile.am (TESTS): Add no-arg.
+ * src/ls.c (main): Fix off-by-one error introduced with last change.
+
+2001-04-21 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0.44.
+
+ * configure, aclocal.m4, etc.: Regenerate using autoconf-2.49e.
+
+ * doc/fileutils.texi (touch invocation): Discuss ctime.
+ Based on suggestions and contributions from Aharon Robbins
+ and Dan Jacobson.
+
+ * src/ls.c (main): When given two or more arguments but the only one
+ that exists is a directory, don't treat it as if it were the only
+ argument. Before, `mkdir d; ls no-dir d 2>/dev/null' would act like
+ `ls d' and produce no output. Now, it prints `d:'.
+ Report and patch from Stéphane Chazelas.
+ * tests/ls-2/tests: New tests, for the above fix.
+
+2001-04-08 Jim Meyering <meyering@lucent.com>
+
+ * depcomp: New version, from automake.
+
+2000-10-31 Bruno Haible <haible@clisp.cons.org>
+
+ * ls.c: Don't inspect MB_LEN_MAX. Paul Eggert says it's
+ not always defined correctly.
+
+2001-04-03 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * tests/chgrp/basic: Ensure that initial group id's are properly set
+ for `d' and `d/f3'.
+
+2001-04-02 Jim Meyering <meyering@lucent.com>
+
+ * tests/mv/setup: Skip nonexistent directories so we don't get
+ diagnostics from df about e.g., `/usr/tmp not found'.
+
+2001-03-24 Jim Meyering <meyering@lucent.com>
+
+ * configure.in: Don't require autoconf version here -- it's done in m4/.
+
+2001-03-23 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0.43.
+
+ * configure, aclocal.m4, etc.: Regenerate using autoconf-2.49d.
+
+ * Makefile.maint (check-copyright): New target and rule.
+ (alpha): Depend on it.
+
+ * missing: Handle shell built-ins (only `:' and `cd' for now) to work
+ around brain damage in Ultrix's /bin/sh.
+
+2001-03-18 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0.42.
+
+ * tests/Fetish.pm: If the $DJDIR envvar is defined, set SHELL
+ to $DJDIR/bin/bash.exe. Patch from Richard Dawe, based on a
+ suggestion from Eli Zaretskii.
+
+2001-03-17 Paul Eggert <eggert@twinsun.com>
+
+ * doc/fileutils.texi: Warn that touch DATE FILE will be withdrawn.
+
+2001-03-17 Jim Meyering <meyering@lucent.com>
+
+ * tests/install/basic-1: Add the standard $VERBOSE-handling hook.
+ This test currently fails for mips-dec-ultrix4.4.
+
+ * tests/install/create-leading: Use ../envvar-check rather than
+ open-coding the same tests.
+
+ * tests/envvar-check: Set/use $as_unset, for those shells
+ (like Ultrix4's /bin/sh) that don't accept `unset'.
+
+ * missing (--run): Use `eval' to run `"$@"'. Otherwise, Ultrix4.4's
+ /bin/sh fails and outputs garbage.
+
+ * src/touch.c (usage): Tweak the obsolescent usage line so that
+ help2man recognizes it as such. Reported by Dan Jacobson.
+
+2001-03-16 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (wget-update): Also get `missing'.
+ Use for-loops.
+
+ * missing: Update from automake.
+
+2001-03-11 Jim Meyering <meyering@lucent.com>
+
+ * tests/rm/isatty: Disable this test, for now.
+ It would block when run in the background.
+
+2001-03-09 Jim Meyering <meyering@lucent.com>
+
+ * config.guess: Update from master repository.
+
+ * Makefile.maint (my_distdir): Define new variable, and use this
+ in place of most old uses of $(distdir).
+
+ * src/Makefile.am (Makefile): Don't depend on $(BUILT_SOURCES).
+ Reported by Akim Demaille.
+
+ * tests/help-version: Ensure that /dev/full is a character device
+ (using test -c) as well as being writable, before trying to write to it.
+ Otherwise, the test could mistakenly append a newline to an existing,
+ regular, writable, /dev/full file.
+ Suggested by Ulrich Drepper.
+
+2001-03-06 Jim Meyering <meyering@lucent.com>
+
+ * src/dd.c (S_TYPEISSHM): Rename parameter to reflect its type.
+ (main): Pass a `struct stat *', not stat.st_mode to S_TYPEISSHM.
+ Patch by Alain Magloire.
+
+2001-03-04 Jim Meyering <meyering@lucent.com>
+
+ * src/dd.c (output_char): Reformat so each statement is on a
+ separate line.
+
+2001-02-21 Jim Meyering <meyering@lucent.com>
+
+ * src/mkdir.c (main): Remove assignment-in-if-expression.
+ In fact, remove t_errno altogether. Reported by Nelson Beebe.
+
+ * tests/ls-2/tests: Add two tests of existing behavior -- both will
+ have to be changed (soon after release), once ls is fixed.
+
+2001-02-20 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls.c (FULL_TIME_OPTION): Renamed from FULL_TIME, for
+ consistency with the other enum values.
+
+2001-02-20 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS, doc/fileutils.texi: ls -H is now obsolescent.
+ * src/ls.c (SI_OPTION): New enum value.
+ (long_options): Use it instead of 'H' for --si.
+ (decode_switches): Warn that -H will change soon.
+ (usage): Likewise.
+
+2001-02-18 Jim Meyering <meyering@lucent.com>
+
+ * tests/rm/Makefile.am (TESTS): Add isatty.
+ * tests/rm/isatty: New test, for the bug fixed below.
+
+ * Version 4.0.41.
+
+ * depcomp: New version, from automake.
+
+ `chmod 0 file; rm file' would no longer prompt before removal.
+ * src/remove.c (remove_file): Revert last change.
+ Reported by Vin Shelton.
+
+2001-02-17 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0.40.
+
+ * src/chown.c (main): `quote' the offending argument.
+
+2001-02-17 Paul Eggert <eggert@twinsun.com>
+
+ Stop trying to support hosts that have nonstandard declarations for
+ mbrtowc and/or mbstate_t. It's not worth the portability hassle.
+
+ * m4/mbrtowc.m4: New file, defining jm_FUNC_MBRTOWC.
+ * m4/mbswidth.m4 (jm_PREREQ_MBSWIDTH):
+ Use jm_FUNC_MBRTOWC, not AC_CHECK_FUNCS(mbrtowc).
+ * m4/prereq.m4 (jm_PREREQ_QUOTEARG): Likewise.
+ * lib/mbswidth.c, lib/quotearg.c, src/ls.c (mbrtowc, mbsinit):
+ Remove workaround macros for hosts that have mbrtowc but not
+ mbstate_t, as we now insist on proper declarations for both
+ before using mbrtowc.
+ Reported by Matt Schalit.
+
+2001-02-17 Jim Meyering <meyering@lucent.com>
+
+ * config.sub: Update from master repository.
+ * config.guess: Likewise.
+
+2001-02-16 Paul Eggert <eggert@twinsun.com>
+
+ * doc/getdate.texi: Mention that only English is supported.
+ Show how to use "date" so that the output is acceptable to getdate.
+ Mention Z as an abbreviation for UTC.
+
+2001-02-11 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (emit-rsync-commands): Define.
+ (alpha): Use it here.
+
+2001-02-10 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (alpha): Fix previous, incomplete change.
+
+ * Version 4.0.39.
+
+ * depcomp: New version, from automake.
+
+2001-02-04 Jim Meyering <meyering@lucent.com>
+
+ * README: Remove note about now-ancient Sequents.
+
+2001-02-03 Jim Meyering <meyering@lucent.com>
+
+ * src/ln.c (main): Change type of index variable to `unsigned int'
+ to avoid a warning.
+
+ * config.guess: Update from master repository.
+
+ * Makefile.maint (a_host): Use fencepost.
+ (real_dir): Use the same name for both.
+ (alpha): Print commands for both hosts.
+
+ * src/mv.c (long_options): Use `strip-trailing-slashes',
+ per the documetation, not `strip-trailing-slash'.
+ * src/cp.c (long_opts): Likewise.
+ Reported by Oskar Liljeblad.
+
+ * doc/fileutils.texi (mv invocation): Add a warning about how a trailing
+ slash makes a difference. Prompted by a report from Oskar Liljeblad
+ via Michael Stone (Debian bug#83991).
+
+2001-01-31 Jim Meyering <meyering@lucent.com>
+
+ * config.sub: Update from master repository.
+ * config.guess: Likewise.
+
+2001-01-28 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0.38.
+
+ * configure, aclocal.m4, etc.: Regenerate using autoconf-2.49c.
+
+ * src/ls.c (gobble_file): Add a FIXME comment.
+
+ * TODO: Add a few items.
+
+ * src/ls.c (enum) [FULL_TIME]: Define.
+ (long_options): Use it.
+ (decode_switches): Make --full-time imply -l.
+ Prompted by a report from Karl Eichwalder.
+
+2001-01-22 Jim Meyering <meyering@lucent.com>
+
+ * src/remove.c (remove_file): Correct an expression to avoid making
+ an unnecessary call to euidaccess for each file.
+
+2001-01-21 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0.37.
+
+2001-01-20 Jim Meyering <meyering@lucent.com>
+
+ * configure.in: Remove jm_CHECK_ALL_TYPES.
+ Now it's invoked by jm_MACROS.
+
+2001-01-17 Jim Meyering <meyering@lucent.com>
+
+ * src/sys2.h (case_GETOPT_VERSION_CHAR): Use PACKAGE, not GNU_PACKAGE.
+ * src/sync.c (main): Likewise.
+ * src/shred.c (PACKAGE): Likewise.
+ * src/dd.c (main): Likewise.
+
+2001-01-14 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0.36.
+
+ * src/shred.c (UINT_MAX_32_BITS): Define.
+ Use UINT_MAX_32_BITS in the cpp conditions that determine
+ the `word32' typedef. Using a literal `0xffffffff' failed with
+ HPUX10.20's /bin/cc.
+
+ * config.sub: Update from master repository.
+ * config.guess: Likewise.
+
+2001-01-02 Volker Borchert <bt@teknon.de>
+
+ Work around a broken rename system call, e.g. on SunOS 4.1.1_U1,
+ that fails when the source path has a trailing slash.
+ * src/copy.h [RENAME_TRAILING_SLASH_BUG]: Use the rename wrapper.
+ * tests/mv/trailing-slash: Test whether the workaround works.
+ * tests/m4/Makefile.am (TESTS): Add trailing-slash.
+
+2001-01-03 Alexandre Duret-Lutz <duret_g@epita.fr>
+
+ * po/Makefile.in.in (update-po): Merge po-files in temporary files
+ in the build directory, and update the source directory only when
+ the merged catalog differs from the original. This fixes the known
+ `make distcheck' failure due to `make update-po' being called
+ on up-to-date but read-only files.
+
+2001-01-13 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.c (same_file_ok): When moving a symlink onto itself,
+ don't remove the symlink. Reported by David Luyer as Debian bug#82089,
+ via Michael Stone.
+ * tests/mv/into-self-4: New test for the above.
+ * tests/mv/Makefile.am (TESTS): Add into-self-4.
+
+ * tests/chmod/setgid: If `chmod g+s d' fails, then try to chgrp
+ to a group of which we're a member, then try the chmod again.
+
+2001-01-11 Jim Meyering <meyering@lucent.com>
+
+ * depcomp: New version, from automake.
+
+2001-01-10 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.c (copy_internal): Add a comment.
+ Set *copy_into_self in the new code that detects that.
+ Make diagnostic more consistent: s/won't/will not/.
+ [move_mode, copy_into_self]: Give a diagnstic here, now that
+ we have the top_level_* globals. Remove the corresponding diagnostic
+ from mv.c.
+ Add a FIXME comment.
+ * src/mv.c (do_move): Remove diagnostic, now that copy.c issues it.
+ Set `fail' to nonzero in the primary `if (copy_into_self)' block
+ rather than in its own tiny one below.
+
+ * src/copy.c (copy_internal): Don't allow cp (or mv, when working
+ across a partition boundary) to overwrite a non-directory with a
+ directory. Reported by Michael J. Croghan.
+ * tests/cp/dir-vs-file: New test for the above.
+ * tests/cp/Makefile.am (TESTS): Add dir-vs-file.
+
+2001-01-09 Jim Meyering <meyering@lucent.com>
+
+ Give a better diagnostic for `cp -R a a'.
+ * src/copy.c (top_level_src_path, top_level_dst_path): New globals.
+ (copy_internal): Use them.
+ (copy): Set them.
+ * src/cp-hash.c [struct entry] (node): Describe how it's used,
+ now that we've overloaded it, in order to detect and diagnose
+ the copying-directory-into-self problem.
+ (new_file): Remove global.
+ (htab): Declare global to be static.
+ (remember_created): Insert file name instead of dummy pointer, so
+ that copy.c can use the just-created directory name to detect
+ the copying-directory-into-self problem.
+ * tests/cp/into-self: New test for the above.
+ * tests/cp/Makefile.am (TESTS): Add into-self.
+
+2001-01-07 Jim Meyering <meyering@lucent.com>
+
+ * src/cp.c (usage): Split a string that was longer than 2048 bytes.
+
+ * doc/perm.texi: s/can not/cannot/
+
+2001-01-07 Karl Eichwalder <ke@suse.de>
+
+ * src/chown.c (usage): Split long message string.
+
+2001-01-07 Karl Eichwalder <ke@suse.de>
+
+ * src/ls.c (usage): Untabify.
+
+ * src/chgrp.c (parse_group): Normalize spelling.
+
+2001-01-03 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS: Document the planned --full-time change.
+ * doc/fileutils.texi: Likewise.
+ * NEWS: Document that time stamps depend on LC_TIME, not LC_MESSAGES.
+
+2001-01-03 Paul Eggert <eggert@twinsun.com>
+
+ Use the more precise algorithm of GNU "make" to decide whether
+ a file is in the future, by looking at high-resolution time
+ stamps if available.
+
+ * src/ls.c:
+ (TIMESPEC_NS): New macro.
+ (current_time): Initialize to the minimum value.
+ (current_time_ns): New var.
+ (main): Do not bother to initialize current_time;
+ it's no longer needed.
+ (get_current_time): New function.
+ (print_long_format): Use it when a file appears to be in the future.
+ Get the nanoseconds of the file's time stamp, if available,
+ and use that to decide whether the file appears to be in the future.
+
+ * src/Makefile.am (dir_LDADD, ls_LDADD, vdir_LDADD): New macros.
+
+2001-01-02 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls.c (long_time_expected_width, print_long_format): Fix
+ bug: the initial byte passed to strftime wasn't initialized to
+ a nonzero value after the buffer was reallocated.
+
+2001-01-02 Paul Eggert <eggert@twinsun.com>
+
+ Make ls -l compatible with POSIX, which requires that the
+ behavior of time formats must depend only on LC_TIME, not on
+ LC_MESSAGES.
+
+ * po/Makefile.in.in (install-data-yes): If the package is
+ fileutils, install LC_TIME as an alias for LC_MESSAGES.
+ * src/sys2.h (dcgettext): New macro.
+ * src/ls.c (decode_switches): Use dcgettext with LC_TIME,
+ not plain gettext, to get the translations of time formats.
+
+2001-01-02 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls.c (long_time_expected_width): New function.
+ (print_long_format): Use it, so that we don't assume a
+ particular width for time stamps in an internationalized
+ environment.
+
+2001-01-01 Paul Eggert <eggert@twinsun.com>
+
+ * doc/fileutils.texi, NEWS:
+ ls -l now reports the year for files even slightly in the future, as
+ POSIX requires. This helps warn users about clock skew problems.
+
+ * src/ls.c (print_long_format):
+ Report the year for files even slightly in the future.
+ Avoid overflow problems near Y2038 on 32-bit hosts.
+ To calculate "six months", take half the average Gregorian
+ year, not 180 days.
+
+2001-01-01 Jim Meyering <meyering@lucent.com>
+
+ * tests/chmod/Makefile.am (TESTS): Add setgid.
+ * tests/chmod/setgid: Test for chmod's existing behavior.
+ Based on a report from Paul Eggert.
+
+2000-12-29 Paul Eggert <eggert@twinsun.com>
+
+ Clean up the terminology a tad: some directories were called "sticky"
+ when they were really setgid.
+ * tests/Makefile.am (EXTRA_DIST): sticky-check -> setgid-check
+ * tests/chmod/c-option, tests/cp/cp-parents, tests/mkdir/parents,
+ tests/mkdir/perm: Likewise.
+ * tests/setgid-check: File renamed from tests/sticky-check.
+ All uses of "sticky" changed to "setgid".
+
+2000-12-31 Jim Meyering <meyering@lucent.com>
+
+ * tests/cp/Makefile.am (TESTS): Add deref-slink.
+ * tests/cp/deref-slink: New file. Test for the bug fixed by my
+ 2000-12-28 change to copy.c.
+
+2000-12-30 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls.c: Improve performance by invoking gettext twice at the start,
+ instead of once for each file.
+ (long_time_format): New var.
+ (decode_switches): Initialize it, if format == long_format.
+ (print_long_format): Use it.
+
+2000-12-30 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls.c (print_long_format): Don't dump core if strftime
+ returns the empty string.
+
+2000-12-30 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls.c (gobble_file): If not using long format, don't
+ invoke acl; it's not needed.
+
+2000-12-30 Jim Meyering <meyering@lucent.com>
+
+ Avoid an unnecessary `stat' when using --dereference.
+ * src/copy.c (same_file_ok): Use stat only if lstat reported that
+ the file was a symbolic link.
+
+2000-12-29 Paul Eggert <eggert@twinsun.com>
+
+ * doc/perm.texi: append-only directories -> restricted deletion flag,
+ which is the term that POSIX d5 uses for this notion.
+
+2000-12-28 Paul Eggert <eggert@twinsun.com>
+
+ * tests/group-names: Try /usr/xpg4/bin/id (Solaris 7) if plain
+ 'id' doesn't work.
+
+2000-12-28 Jim Meyering <meyering@lucent.com>
+
+ * tests/cp/cp-parents: Run sticky-check from just-created directory.
+
+2000-12-28 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.c (same_file_ok): Fix two typos from my 2000-09-03 change:
+ s/tmp_dst_sb/tmp_src_sb/.
+
+2000-12-27 Paul Eggert <eggert@twinsun.com>
+
+ * tests/sticky-check: Turn off the working directory's sticky
+ bit, so that we don't have to worry about it later.
+
+ * src/copy.c (same_file_ok): Use a single auto var for
+ tmp_dst_sb, instead of two static vars. Likewise for
+ tmp_src_sb.
+
+2000-12-26 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0.35.
+
+ * Regenerate build/config framework to use automake-1.4b and
+ the latest CVS version autoconf.
+
+ * tests/mkdir/perm: Disable the test if the working directory has
+ the sticky bit set.
+ * tests/cp/cp-parents: Likewise.
+ Reported by Nelson Beebe.
+
+2000-12-25 Jim Meyering <meyering@lucent.com>
+
+ Clean-up to avoid warnings from Irix's c89.
+
+ * src/remove.c (hash_compare_active_dir_ents): Return explicit `true'
+ or `false', rather than relying on implicit int-to-enum cast.
+ * src/copy.c (same_file_ok): Remove declaration and set of unused
+ variables: src_sb_no_link, dst_sb_no_link.
+ * src/ls.c (extract_dirs_from_files): Remove unused variable.
+ Reported by Nelson Beebe.
+
+ * src/ls.c (gobble_file): Move decl of local, val, into the scope
+ where it's used.
+
+2000-12-24 Jim Meyering <meyering@lucent.com>
+
+ For both ln and install, when using `--backup=simple --suffix=S',
+ the suffix `S' wasn't used.
+
+ * src/ln.c (main): Actually use the local variable,
+ `backup_suffix_string'.
+ * src/install.c (main): Likewise.
+ Nelson Beebe reported the unused variables.
+ * tests/ln/misc: Add a test for this (for all of cp, mv, ln, install).
+
+ * man/help2man: Update to version 1.24.
+
+2000-12-22 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0.34.
+
+ * src/shred.c (isaac_seed_machdep) [_ARCH_PPC]: Disable the code
+ that would use the PPC mfspr `asm' code. Suggestion from Michael Stone.
+
+2000-12-19 Jim Meyering <meyering@lucent.com>
+
+ * doc/fileutils.texi: Use `ref_file' in place of `file' to make
+ descriptions of the various --reference=... options clearer.
+
+2000-12-17 Jim Meyering <meyering@lucent.com>
+
+ * doc/texinfo.tex: Update from master repository.
+ * config.sub: Likewise.
+ * config.guess: Likewise.
+
+2000-12-16 Jim Meyering <meyering@lucent.com>
+
+ * src/chown-core.c (uint_to_string): New function.
+ (uid_to_name): Use it.
+ (gid_to_name): Use it.
+ Rename locals, user/group, to uid/gid.
+
+ * src/chown-core.h (enum Change_status): Start with 1.
+
+ * src/chown.c (main): Rename locals, user/group, to uid/gid.
+ * src/chgrp.c (main): Rename local, group, to gid.
+
+ * tests/group-names: New file.
+ * tests/Makefile.am (EXTRA_DIST): Add group-names.
+ * tests/chgrp/basic: Use group-names.
+ * tests/chgrp/deref: Likewise.
+ * tests/chgrp/recurse: Likewise.
+
+ * tests/chgrp/basic: Don't assume that creating a file gives it
+ group $g1.
+
+ * tests/chgrp/Makefile.am (TESTS): Add recurse.
+
+2000-12-15 Jim Meyering <meyering@lucent.com>
+
+ * src/chown-core.h [enum Dereference_symlink] (dereference): Rename
+ from change_symlinks.
+ * src/chown-core.c: Declare lstat.
+ Rename change_symlinks member to `dereference' and use the DEREF_*
+ enum values.
+ (describe_change): Merge the chgrp and chown switch statements.
+ Use xmalloc to form the `user:group' string.
+ (change_file_owner): Record (and later, use) is_symlink and is_directory
+ from the lstat stats, in order to control whether we operate on symlinks
+ and whether (with -R) we traverse symlinks to directories.
+ When dereferencing, use open/fchown (rather than chown) on symlinks.
+ * src/chown.c (main): Reflect renaming: s/dereference/change_symlinks/.
+ * src/chgrp.c (main): Likewise.
+
+ * src/chown-core.c (describe_change): Use `:' (not `.') to separate the
+ username and group in messages evoked by the --verbose and --changes
+ options.
+
+2000-12-09 Jim Meyering <meyering@lucent.com>
+
+ * src/Makefile.am (noinst_HEADERS): Add chown-core.h.
+ (chown_SOURCES): Define.
+ (chgrp_SOURCES): Define.
+
+ * src/chgrp.c: Include "chown-core.h".
+ [enum Change_status, enum Verbosity]: Remove declarations.
+ Remove decls of globals that are now part of struct Chown_option.
+ Remove decl of xstat.
+ (describe_change): Remove function.
+ (change_file_group): Likewise.
+ (change_dir_group): Likewise.
+ (parse_group): Don't set global, groupname, here...
+ (main): ... instead, initialize `chopt.group_name' here.
+ Initialize chopt and update uses of the now-members.
+ Set group_name also when it's obtained via a --reference=FILE option.
+ Call change_file_owner (with -1 for uids), not change_file_group.
+
+ * src/chown.c: Don't include pwd.h or grp.h -- no longer needed.
+ Include "chown-core.h".
+ [enum Change_status, enum Verbosity]: Remove declarations.
+ Remove decls of globals that are now part of struct Chown_option.
+ (describe_change): Remove function.
+ (change_file_owner): Likewise.
+ (change_dir_owner): Likewise.
+ (main): Initialize chopt and update uses of the now-members.
+ Set user_name and group_name also when they're obtained via a
+ --reference=FILE option.
+ Pass `chopt' to change_file_owner.
+
+ * src/chown-core.c: Include <pwd.h>, <grp.h>, and "xalloc.h".
+ [!_POSIX_VERSION]: Declare getgrnam and getgrgid.
+ (gid_to_name): New function.
+ (uid_to_name): Likewise.
+ (chopt_free): Likewise.
+
+ Factor out code that's common to chgrp.c and chown.c.
+ * src/chown-core.h: New file.
+ * src/chown-core.c (chopt_init): New function.
+ (describe_change): Extracted/combined from chgrp.c and chown.c.
+ (change_dir_owner): Likewise.
+ (change_file_owner): Likewise.
+ * po/POTFILES.in: Add src/chown-core.c.
+
+ * configure.in (AC_OUTPUT): Add tests/chgrp/Makefile.
+ * tests/Makefile.am (SUBDIRS): Add chgrp.
+ * tests/chgrp: New directory.
+ * tests/chgrp/basic: New test.
+ * tests/chgrp/deref: Likewise.
+ * tests/chgrp/Makefile.am: New file.
+
+ * src/chown.c (change_file_owner): Restore special file permission
+ bits, since calling chown resets them on some systems.
+ Reported by Matt Perry.
+
+2000-12-08 Andreas Schwab <schwab@suse.de>
+
+ * tests/mv/mv-special-1: Don't make the success of the test depend
+ on the order in which directory entries are processed.
+
+2000-12-03 Jim Meyering <meyering@lucent.com>
+
+ * src/ls.c (gobble_file) [USE_ACL]: Set have_acl member unconditionally
+ to avoid uninitialized memory reference via FILE_HAS_ACL.
+
+ * Makefile.maint (alpha): Use rsync rather than scp, so the destination
+ file is created only after the successful completion of the copy.
+
+2000-12-02 Jim Meyering <meyering@lucent.com>
+
+ * tests/ls/Makefile.am (TESTS): Add follow-slink.
+ * tests/ls/follow-slink: New file.
+
+2000-12-01 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls.c (gobble_file): Do not fall back on lstat if stat
+ fails; POSIX.2 does not allow this. Invoke acl only on
+ non-symlinks, and only if lstat or stat succeeds.
+
+2000-12-02 Jim Meyering <meyering@lucent.com>
+
+ * configure: Regenerate using the very latest version (in CVS) of
+ autoconf.
+
+ * tests/dd/skip-seek: Remove test #2, now that support for the
+ `B' suffix is gone.
+ * tests/dd/Makefile.am (TESTS): Add skip-seek2
+ * tests/dd/skip-seek2: New file.
+
+2000-12-01 Paul Eggert <eggert@twinsun.com>
+
+ * src/dd.c (skip, dd_copy): Use ssize_t to store result of
+ safe_read, to avoid overflow e.g. on 64-bit Solaris sparc.
+ (dd_copy): Remove unnecessary cast.
+
+2000-12-01 Paul Eggert <eggert@twinsun.com>
+
+ * doc/fileutils.texi: Remove B suffix. Document how to have
+ the desired effect without it.
+
+ * src/dd.c: Undo most of the changes since 2000-11-24, since we've
+ documented a standard way to do it.
+ (skip_bytes, seek_bytes): Remove.
+ (usage): Remove B suffix.
+ (scanargs, skip, dd_copy, main): Remove support for B suffix.
+
+2000-11-28 Jim Meyering <meyering@lucent.com>
+
+ * src/mkdir.c (main): Remove any trailing slash unconditionally.
+ Reported by Volker Borchert.
+ * tests/mkdir/t-slash: Add a test for this.
+
+2000-11-27 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0.33.
+
+ * tests/touch/no-rights: Use touch with `-d tomorrow' to avoid a
+ race condition.
+
+ * tests/Fetish.pm (_compare_files): New function.
+ (_process_file_spec): Likewise.
+ (_at_replace): Likewise.
+ (run_tests): Support new keywords, AUX and CMP and associated
+ syntax and semantics.
+
+ * config.sub: Likewise.
+ * config.guess: Likewise.
+
+2000-11-26 Jim Meyering <meyering@lucent.com>
+
+ * src/dd.c (skip): Perform the `records < blocksize' test
+ at the top of the loop, not at the bottom.
+
+2000-11-26 Paul Eggert <eggert@twinsun.com>
+
+ * src/dd.c (skip): New arg COUNT_BYTES. Read with BLOCKSIZE
+ bytes, but consider RECORDS to be a byte count if COUNT_BYTES
+ is nonzero.
+
+2000-11-25 Paul Eggert <eggert@twinsun.com>
+
+ * doc/fileutils.texi: Document seek=nB and skip=nB.
+
+ * src/dd.c (skip_bytes, seek_bytes): Now booleans, not counts.
+ (seek_records): Renamed from seek_record, for consistency with
+ skip_records and max_records. All uses changed.
+
+ (usage, scanargs): Remove bseek=n and bskip=n; instead, use seek=nB
+ and skip=nB.
+ (enum Unit, Unit): Remove.
+ (skip, dd_copy, main): Undo most recent change.
+ (dd_copy, main): Pass blocksize of 1 as appropriate when
+ skip_bytes or seek_bytes is nonzero.
+ (main): Rework ftruncate failure diagnostic to always use byte count.
+
+2000-11-25 Jim Meyering <meyering@lucent.com>
+
+ * src/dd.c: Add new options, bskip and bseek.
+ Based on a patch from Chris Sylvain.
+ * tests/dd/skip-seek: New tests.
+ * tests/dd/Makefile.am (TESTS): Add skip-seek.
+
+2000-11-24 Paul Eggert <eggert@green.twinsun.com>
+
+ * src/dd.c (S_TYPEISSHM): New macro.
+ (main): Report failed fstat.
+ Complain only when ftruncate fails on a regular file,
+ a directory, or a shared memory object.
+
+2000-11-24 Jim Meyering <meyering@lucent.com>
+
+ * src/dd.c: Declare a pointer parameters to be `const' as appropriate.
+
+ * src/dd.c (main): Use ftruncate only on regular files.
+ Based on a patch from Michael Stone.
+ Reported by andras@kolumbus.fi at http://bugs.debian.org/77174.
+
+2000-11-23 Jim Meyering <meyering@lucent.com>
+
+ * src/df.c (show_point): Before accepting an entry as a match, make
+ sure that the mount directory exists and has the required device number.
+ Before, e.g., `df /floppy' would mistakenly report on the root
+ partition if /floppy were not listed in /etc/mtab but / was.
+ Patch from Eirik Fuller (http://bugs.debian.org/76923).
+
+ * src/chmod.c (mode_changed): New function.
+ (change_file_mode): Use it to determine accurately when -c should
+ make chmod announce there's been a change.
+ Based on a patch from Michael Stone.
+ Reported by Kai Henningsen as Debian bug #77349.
+
+ * tests/chmod/c-option: New test for the above fix.
+ * tests/chmod/Makefile.am (TESTS): Add c-option
+
+ * tests/sticky-check: New file. Factored out of tests/mkdir/parents.
+ * tests/Makefile.am (EXTRA_DIST): Add sticky-check.
+ * tests/mkdir/parents: Source sticky-check instead of open-coding it.
+
+2000-11-19 Jim Meyering <meyering@lucent.com>
+
+ * tests/chmod/equal-x: Update to use its own directory, and better trap.
+
+2000-11-18 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls.c (BLOCK_SIZE_OPTION, COLOR_OPTION, FORMAT_OPTION,
+ INDICATOR_STYLE_OPTION, QUOTING_STYLE_OPTION,
+ SHOW_CONTROL_CHARS_OPTION, SORT_OPTION, TIME_OPTION): New enum
+ values, to ensure that option values can't collide with chars.
+ (long_options, decode_switches): Use them.
+
+2000-11-18 Paul Eggert <eggert@twinsun.com>
+
+ * src/sys2.h (GETOPT_HELP_CHAR, GETOPT_VERSION_CHAR): Now enum
+ constants rather than macros. Use values that cannot conflict
+ with C characters or with -1, CHAR_MAX + 1, etc.
+
+2000-11-18 Jim Meyering <meyering@lucent.com>
+
+ * src/du.c (count_entry): Don't omit the size of a directory entry
+ merely because we couldn't `chdir' into it. That would give subtly
+ different results in some cases. Reported by Mattias Wadenstein
+ via Michael Stone.
+
+ * src/ls.c: Revert change of 2000-11-11. It inadvertently change
+ the output format of `ls -l --full-time'.
+
+ * src/mkdir.c (main): When failing to create a directory, give only
+ one diagnostic, not two. Reported by Volker Borchert.
+
+ * src/mkdir.c (main): With --parents, remove any trailing slashes
+ from the argument to the final mkdir call. Required for NetBSD.
+ Reported by Volker Borchert.
+ * tests/mkdir/t-slash: New test for this.
+ * tests/mkdir/Makefile.am (TESTS): Add t-slash.
+
+ * tests/mv/mv-special-1: Create and `cd' into temporary directory
+ before anything else. Reported by Volker Borchert.
+
+ * configure, config.h.in, Makefile.in, etc.: Regenerate using the
+ very latest version (in CVS) of autoconf.
+
+2000-11-17 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.am (.NOTPARALLEL): Remove target.
+ * GNUmakefile (.NOTPARALLEL): ... put it here instead, since this
+ file is common to these packages: fileutils, sh-utils, textutils.
+
+ * Makefile.am (.NOTPARALLEL): New target. Prevent unwanted parallelism.
+ Suggestion from Ulrich Drepper.
+ * po/Makefile.in.in (Makefile): Likewise.
+
+ * Makefile.maint (sha1): Define.
+ (announcement): Include SHA1 digest of .tar.gz file.
+
+2000-11-14 Jim Meyering <meyering@lucent.com>
+
+ * tests/mkdir/perm: Add an `echo' so that the input to the sed command
+ is NL-terminated. Otherwise, Solaris' /bin/sed generates no output.
+ Reported by Vin Shelton.
+
+2000-11-13 Paul Eggert <eggert@twinsun.com>
+
+ * src/sys2.h (ST_TIME_CMP_NS): Fix typo: ST_MTIM_NSEC should
+ be tested with #ifdef, not with #if.
+
+2000-11-12 Jim Meyering <meyering@lucent.com>
+
+ * src/ls.c (print_long_format): Remove obsolete comment.
+ From Paul Eggert.
+
+ * doc/texinfo.tex: Update from master repository.
+
+2000-11-11 Paul Eggert <eggert@sic.twinsun.com>
+
+ * src/ls.c (<langinfo.h>): Include if HAVE_LANGINFO_H.
+ (DATE_FMT_LANGINFO): New macro, taken from sh-utils/src/date.c.
+ (print_long_format): Use it to determine "date" format.
+ Do not wrap "%b %e %Y" and "%b %e %H:%M" in _(), as it results in
+ incorrect behavior when LC_ALL is unset, LC_TIME is "C", and
+ LC_MESSAGES or LANG is set to something disagreeing with the POSIX
+ locale.
+
+2000-11-11 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0.32.
+
+ * Makefile.maint (GZIP_ENV): Define to --no-name, so the timestamp
+ is not included in the .tar.gz file.
+
+ * tests/mkdir/perm (tests): Use `empty' (instead of just blanks) to
+ indicate no `-m' option. Using just blanks wasn't portable to
+ Solaris2.5.1's /bin/sh.
+
+ * tests/mkdir/perm: Don't put a newline in IFS; that's not portable to
+ NetBSD's /bin/sh. Instead, filter newlines and leading/trailing blanks
+ out of `tests' before the `set -'.
+
+ * Makefile.maint (announcement): Limit depth of ChangeLog `find' to 2.
+
+ * src/ls.c (print_long_format): Wrap the `--full-time' date format
+ string in _(...), so it too may be internationalized.
+ Suggestion from Jungshik Shin.
+
+2000-11-10 Jim Meyering <meyering@lucent.com>
+
+ * src/touch.c (main): Interpret a lone numeric argument of 8 or 10
+ digits as a file name, rather than as a date/time in the obsolescent
+ `MMDDhhmm[YY]' format. Reported by Wenjun Zheng.
+ * tests/touch/obsolescent: New test for this.
+ * tests/touch/Makefile.am (TESTS): Add obsolescent.
+
+2000-11-06 Jim Meyering <meyering@lucent.com>
+
+ * tests/cp/cp-parents: Move mkdir tests into ../mkdir.
+
+ * doc/fileutils.texi: Use Free Documentation Licence.
+ Change GNU to @sc{gnu} in many places.
+
+ * doc/texinfo.tex: Update from master repository.
+ * config.sub: Likewise.
+ * config.guess: Likewise.
+ * man/help2man: Update from latest version: 1.23.
+
+ * src/mkdir.c: Do not set the permissions of the final directory
+ component if it was not just created.
+ Based on a patch from Volker Borchert.
+
+ * tests/rwx-to-mode: New file.
+ * tests/Makefile.am (EXTRA_DIST): Add rwx-to-mode.
+ * tests/mkdir/parents: New test for the above mkdir.c fix.
+ * tests/mkdir/Makefile.am (TESTS): Add parents.
+ (TESTS_ENVIRONMENT): Define srcdir=$(srcdir).
+
+2000-11-02 Won-kyu Park <wkpark@chem.skku.ac.kr>
+
+ * src/df.c (print_header): Mark strings for translation.
+
+2000-11-05 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0.31.
+
+ * configure, config.h.in, Makefile.in, etc.: Regenerate using the
+ very latest version (in CVS) of autoconf.
+
+ * src/mkdir.c (main): Use make_dir instead of using mkdir directly.
+ Diagnose as failure when mkdir tries to create (without the
+ --parent (-p) option) a directory that already exists.
+ * tests/cp/cp-parents: Add a test for the above fix.
+
+ * tests/mv/mv-special-1: Clean up this test.
+
+2000-11-01 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0.30.
+
+ * src/chmod.c (main): Better diagnostics.
+
+2000-10-31 Jim Meyering <meyering@lucent.com>
+
+ * tests/lang-default: Add all the internationalization-related
+ variable names autoconf uses. Set and export them in a loop.
+
+ `mkdir -p' would create parent directories with permissions
+ that did not account for the umask. [introduced with the
+ 2000-09-30 change that became part of fileutils-4.0.28]
+ * src/mkdir.c: Include dirname.h.
+ Compute the parent directory `mode' unconditionally, effectively
+ as `$(umask -S),u+wx'.
+ Use make_path to create only the parent directories, thus using
+ the same code, both with and without -p, to create the final
+ component in each file name. Reported by Bob Proulx.
+
+ Add tests for the above fix.
+ * tests/cp/cp-parents: Add some permission tests.
+ * tests/mkdir/perm: Fix the test so it actually does something.
+ Run each test also with mkdir's `-p' option and check permissions
+ on the parent directories.
+
+2000-10-23 Paul Eggert <eggert@twinsun.com>
+
+ * doc/getdate.texi: Use @sc where appropriate. Document the
+ ranges of supported times more precisely. Correct menu
+ spacing. Document old Latin 12m/12pm tradition. Remove list
+ of alphabetic time zone names, as it wasn't correct and people
+ shouldn't be relying on it anyway. Relative items also
+ account for non-DST adjustments. Fix some misspellings.
+
+2000-10-30 Jim Meyering <meyering@lucent.com>
+
+ * configure, config.h.in, Makefile.in, etc.: Regenerate using the
+ very latest version (in CVS) of autoconf.
+
+2000-10-29 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0.29.
+
+ * src/cp.c (do_copy): When constructing dst_path for use with the
+ --parents option, first remove any trailing slashes from the command
+ line argument. Otherwise, tests/cp/cp-parent would fail on NetBSD.
+
+ * tests/cp/cp-parents: Add a test.
+
+ * src/ls.c (DT_INIT): Define.
+ [enum filetype]: Remove the #ifdef, and use DT_INIT on the
+ initializers instead. `unknown' was undefined for some systems.
+ Reported by John David Anglin.
+
+ * tests/lang-default (LC_COLLATE): Set it to the empty string and
+ export it. Otherwise, tests/cp/cp-mv-backup would fail e.g., when
+ LC_COLLATE was set to en. Reported by Vin Shelton.
+
+2000-10-28 Jim Meyering <meyering@lucent.com>
+
+ * src/ls.c (main): In call to gobble_file with `"."', use `directory'
+ as the type, not `unknown'.
+ [enum filetype] (arg_directory): Rather than `100', use
+ a number that should never conflict with another DT_* value.
+ From Ulrich Drepper.
+
+ * Version 4.0.28.
+
+ Make `ls' a lot more efficient on systems (e.g., linux-2.4.*)
+ that store file type information in directory entries.
+
+ * src/ls.c [enum filetype] (unknown):
+ Add members (as yet unused):
+ (HAVE_STRUCT_DIRENT_D_TYPE): Define.
+ (format_needs_type): New global.
+ (main): Set it.
+ (print_dir): Set `type' from directory entry, if possible.
+ (gobble_file): Add a parameter, TYPE.
+ Stat the file only if its type is unknown and we need the type.
+ Patch from Ulrich Drepper.
+
+ Shred can now determine the size of a block devices (e.g. /dev/fd0)
+ by writing until a write operation fails.
+
+ * src/shred.c: Include assert.h.
+ (fillrand): Add a parameter, size_max.
+ Adjust caller.
+ Add an assertion.
+ (dopass): Break out of the `for (;;)' loop if size < offset.
+ That can happen now that dopass is called with SIZE == -1.
+ (do_wipefd): Accept a length of zero only for a regular file.
+ If lseek fails or returns 0 for a non-regular file, let dopass
+ determine the length.
+ Inspired by a patch from Alan Iwi.
+
+ * tests/Makefile.am (EXTRA_DIST): Add lang-default.
+
+ * tests/rm/hash: Factor out the expensive-test-checking code, ...
+ * tests/expensive: ... into this new file.
+ * tests/cp/perm: Disable this test by default; it's expensive.
+ Mark this as an expensive test.
+ * tests/Makefile.am (EXTRA_DIST): Add expensive.
+
+ * doc/fileutils.texi (shred invocation): Give two examples.
+
+2000-10-26 Jim Meyering <meyering@lucent.com>
+
+ * doc/getdate.texi (Authors of getdate): Add Paul Eggert.
+
+2000-10-23 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.am (EXTRA_DIST): Add .prev-version.
+
+2000-10-22 Jim Meyering <meyering@lucent.com>
+
+ * src/cp.c (make_path_private): Add a FIXME comment.
+
+ * tests/lang-default: New file. Set LANG, LC_ALL, and LANGUAGE to ''
+ (rather than to `C') and export them into the environment.
+ Suggestion from Bruno Haible.
+
+ * tests/cp/backup-is-src: Source lang-default rather than open-coding
+ the setting/exporting of LANG, LC_ALL, and LANGUAGE.
+ * tests/cp/cp-mv-backup: Likewise.
+ * tests/cp/same-file: Likewise.
+ * tests/cp/slink-2-slink: Likewise.
+ * tests/cp/symlink-slash: Likewise.
+ * tests/ln/sf-1: Likewise.
+ * tests/ls/symlink-slash: Likewise.
+ * tests/ls/time-1: Likewise.
+ * tests/mv/backup-is-src: Likewise.
+ * tests/mv/diag: Likewise.
+ * tests/mv/force: Likewise.
+ * tests/mv/hard-link-1: Likewise.
+ * tests/mv/i-2: Likewise.
+ * tests/mv/into-self: Likewise.
+ * tests/mv/into-self-2: Likewise.
+ * tests/mv/into-self-3: Likewise.
+ * tests/mv/mv-special-1: Likewise.
+ * tests/mv/part-symlink: Likewise.
+ * tests/mv/partition-perm: Likewise.
+ * tests/rm/r-1: Likewise.
+ * tests/rm/r-2: Likewise.
+
+2000-10-21 Jim Meyering <meyering@lucent.com>
+
+ * tests/cp/cp-parents: New test.
+ * tests/cp/Makefile.am (TESTS): Add cp-parents;
+
+2000-10-19 Jim Meyering <meyering@lucent.com>
+
+ * doc/texinfo.tex: Update from master repository.
+ * config.sub: Likewise.
+ * config.guess: Likewise.
+ * depcomp: Likewise.
+
+2000-10-18 Jim Meyering <meyering@lucent.com>
+
+ * tests/mv/part-symlink: Make sure the programs use C-locale formats
+ and translations. Bruno Haible reported that this test would fail
+ when using other locales, because ls printed a translation of `total'.
+
+2000-10-16 Jim Meyering <meyering@lucent.com>
+
+ * src/ls.c (print_long_format): Wrap date format strings in _(...)
+ so they may be internationalized. Suggestion from Christian Rose.
+
+2000-10-13 Jim Meyering <meyering@lucent.com>
+
+ * src/mv.c (rm_option_init): Remove FIXME-maybe comment.
+
+2000-09-30 Jim Meyering <meyering@lucent.com>
+
+ * tests/du/two-args: Update to use newer template.
+
+ * src/install.c: Remove big, option-describing comment block.
+ (main): Rename local `symbolic_mode' to `specified_mode'.
+
+ * src/mkdir.c (main): Don't set the umask to 0 and hand-apply
+ the previously-set umask unconditionally. Do that only when a
+ MODE has been specified. Otherwise, call mkdir with the full
+ creation mask (0777 or 0666) and let the kernel apply the umask.
+ The difference shows up only on file systems with ACL support
+ when the containing directory has a default ACL.
+ Patch by Andreas Gruenbacher.
+ (main): Rename local `symbolic_mode' to `specified_mode'.
+ * src/mknod.c (main): Likewise (but `call mknod', not mkdir).
+ Also, when MODE is specified, call chmod to ensure that the
+ permission bits are set as specified even when the containing
+ directory has a default ACL.
+ Patch by Andreas Gruenbacher.
+ * src/mkfifo.c (main): Likewise (but `call mkfifo', not mkdir).
+ Patch by Andreas Gruenbacher.
+
+ * tests/mkdir/perm: New test.
+ * tests/mkdir/Makefile.am (TESTS): Add perm.
+
+2000-08-17 Andreas Gruenbacher <ag@bestbits.at>
+
+ * src/chmod.c (change_file_mode): Perform the chmod even if the
+ file mode permission bits are the same as those that should be set.
+ Omitting the chmod call would be alright with minimal 1003.1e DS17
+ ACLs, but eventually there may be other permissions in addition to
+ rwx. E.g., add and delete for directories, and something analogous
+ to NT's take ownership permission.
+
+2000-09-25 Jim Meyering <meyering@lucent.com>
+
+ * tests/cp/same-file: Don't use `diff -u'. It's not portable.
+ Reported by Christian Krackowizer.
+ * tests/cp/same-file: Run `diff -c' only if cmp finds a difference.
+ * tests/mv/part-symlink: Likewise. And clean up.
+
+ `shred --exact file1 file2' wouldn't touch `file1'
+ * src/shred.c (long_opts): --exact doesn't take an argument.
+ Reported by Alan Iwi.
+ * tests/shred/exact: New test for this.
+ * tests/shred/Makefile.am (TESTS): Add exact.
+
+ * Makefile.maint (PREV_VERSION): Get the value from a file, rather
+ than trying to derive it from the current version number.
+ This is much more robust.
+ (alpha): Record just-released version number in `.prev-version',
+ and commit (post-tag).
+
+ * Version 4.0.27.
+
+2000-09-24 Paul Eggert <eggert@twinsun.com>
+
+ * doc/fileutils.texi: Update to more closely match changes in 4.0z.
+ * src/cp.c (usage): Match revised documentation better.
+
+2000-09-24 Jim Meyering <meyering@lucent.com>
+
+ * src/cp.c (main): Tweak a relatively new diagnostic.
+
+2000-09-23 Jim Meyering <meyering@lucent.com>
+
+ * tests/ls/time-1: Output more information when a test fails.
+
+2000-09-22 Jim Meyering <meyering@lucent.com>
+
+ * src/install.c (cp_option_init): Once again make it so install always
+ unlinks an existing destination before trying to open it for writing.
+ Otherwise, installing onto a running shared library would make the
+ running program malfunction.
+ Reported by Dan Pascu via Michael Stone.
+
+ * src/mv.c (do_move): Moving a directory specified with a trailing
+ slash from one partition to another, and giving it a different
+ name at the destination would cause mv to get a failed assertion.
+ Reported by Michael Stone.
+ (strip_trailing_slashes_2): Move function definition to precede
+ new first use.
+ * tests/mv/part-rename: New test for the above fix.
+ * tests/mv/Makefile.am (TESTS): Add part-rename.
+
+ * src/copy.c (copy_internal): Don't try to unlink directories when
+ using --remove-dest with -R.
+ * tests/cp/dir-rm-dest: New test for the above fix.
+ * tests/cp/Makefile.am (TESTS): Add dir-rm-dest.
+
+2000-09-19 Jim Meyering <meyering@lucent.com>
+
+ * doc/fileutils.texi (cp invocation): Describe how --force works.
+ Update description of -P (soon to change meaning to conform w/POSIX).
+ Describe --remove-destination.
+
+ * src/cp.c (main): When used with --force, each of the --link and
+ --symbolic-link options now implies --remove-destination.
+ Reported by Miles Bader via Mike Stone.
+ * tests/cp/link: New file. Test for the above fix.
+ * tests/cp/same-file: Adjust for this change in behavior.
+
+2000-09-15 Volker Borchert <bt@teknon.de>
+
+ * tests/Makefile.am (check-root, root-hint): New targets.
+ (check-recursive): Depend on root-hint.
+ * Makefile.am (check-root): New target.
+
+2000-09-16 Jim Meyering <meyering@lucent.com>
+
+ * doc/perm.texi (Changing Special Permissions): Remove this statement:
+ ``a' in the USERS part of a symbolic mode does not cause the special
+ permissions to be affected'... It doesn't reflect what the code does
+ and isn't required by POSIX. Reported by aldomel@ix.netcom.com via
+ Mike Stone.
+
+2000-09-15 Jim Meyering <meyering@lucent.com>
+
+ * config.sub: Update from master repository.
+
+2000-09-10 Jim Meyering <meyering@lucent.com>
+
+ * tests/cp/cp-mv-backup (LC_ALL): Set to `C' and export to ensure
+ that `ls' sorts the same way for everyone. Reported by Vin Shelton.
+
+ * Makefile.maint (b_host): Use freefriends.org, not tug.org.
+
+2000-09-09 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (announcement): Use a stricter regexp for the
+ previous version.
+
+ * Version 4.0z.
+
+ * tests/cp/special-bits: New file.
+ * tests/cp/Makefile.am (TESTS): Add special-bits.
+ (TESTS_ENVIRONMENT): Propagate $MAKE into environment, for special-bits.
+
+ * src/copy.c (SAME_OWNER, SAME_GROUP, SAME_OWNER_AND_GROUP): Define.
+ (copy_internal): Avoid calling chown if we know it's not necessary.
+
+ * src/copy.c (copy_internal): Call chmod also if we've made the
+ preceding chown call and we're supposed to preserve some special
+ permission bit(s) that would have been reset by chown.
+ Reported by Greg Louis.
+
+2000-09-08 Jim Meyering <meyering@lucent.com>
+
+ * src/mkdir.c (S_IRWXUGO): Remove definition.
+ * src/sys2.h (S_IRWXUGO): Define here, instead.
+
+2000-09-07 Jim Meyering <meyering@lucent.com>
+
+ * doc/texinfo.tex: Update from master repository.
+ * config.sub: Likewise.
+ * config.guess: Likewise.
+
+2000-09-05 Jim Meyering <meyering@lucent.com>
+
+ * tests/mv/part-symlink: Redirect stdout to stderr before trying to
+ remove the temp directory. Otherwise, the `rm -rf' would get an
+ error because the output file wouldn't be closed and the directory
+ wouldn't be `empty'.
+ * tests/cp/same-file: Likewise.
+
+ * tests/cp/same-file: Remove the `cp -dl sl1 sl2' case,
+ since it's no longer portable (hard link to a symlink).
+ Likewise for the `cp -bdl symlink foo' case.
+
+ * config.guess: Update from master repository.
+
+2000-09-04 Jim Meyering <meyering@lucent.com>
+
+ * src/cp.c: Move declaractions of lstat, stat, and rpl_lstat
+ as well as the definition of lstat from here...
+ * src/copy.h: ...to here.
+ * src/copy.c: Remove declaration of lstat, now that it's in copy.h.
+
+ * tests/mv/force: mv's --force (-f) option is no longer needed for
+ this test, now that all it does is cancel --interactive (-i).
+
+ * tests/cp/same-file: Add new tests using cp's --rem option.
+ Reflect the fact that cp's -f option no longer causes cp to remove the
+ destination file before trying to open it.
+ Reflect the fact that `cp -bdl' now makes a backup when copying a
+ symlink onto the file it points to (FIXME: look into this, and why
+ cp -bl does *not* do so).
+
+ * src/ln.c (do_link): Tweak diagnostics.
+
+2000-09-03 Jim Meyering <meyering@lucent.com>
+
+ * src/install.c (cp_option_init): Initialize new members.
+
+ * src/cp.c (enum): Add UNLINK_DEST_BEFORE_OPENING.
+ [long_options]: Add an entry for --remove-destination.
+ (usage): Describe --remove-destination.
+ (do_copy): Use unlink_dest_after_failed_open member, not `force.'
+ (cp_option_init): Initialize new members.
+ (main): Handle UNLINK_DEST_BEFORE_OPENING (aka --remove-destination).
+
+ * src/mv.c: Remove obsolete comment block.
+ (cp_option_init): Initialize new members.
+ (usage): Reflect the fact that --force (-f) relates only to whether
+ mv prompts.
+ (main): Remove uses of old `force' option member.
+
+ * src/install.c (cp_option_init): Reflect
+
+ `force' no longer means unlink-dest-before-opening
+ * src/copy.h (struct cp_options) [force]: Remove member.
+ [unlink_dest_before_opening]: Add member. `cp -f' and `mv -f' used to
+ do this. Now, you must use `cp --remove-destination' to get this
+ behavior. Now, `cp -f' and `mv -f' work as required by POSIX.
+ [unlink_dest_after_failed_open]: Add member.
+ Paul Eggert reported that `cp -f' removes an existing destination
+ file unconditionally, and that is contrary to POSIX.
+
+ * src/copy.c (same_file_ok): New function, extracted from copy_internal,
+ and rewritten.
+ (copy_internal): Unlink destination file when unlink_dest_before_opening
+ option is set, and when the source is neither a regular file nor a
+ directory.
+
+ * tests/mv/Makefile.am (TESTS): Add part-symlink.
+
+ * src/ls.c: Use strcoll (not strcmp) when comparing file names.
+ Suggestion from Ulrich Drepper.
+
+2000-08-27 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.c (copy_reg): New parameters: X and NEW_DST.
+ Remove the SPARSE_MODE parameter. Update caller.
+ Perform POSIX-mandated (for cp) open-with-O_WRONLY|O_TRUNC when copying
+ a regular source file and the destination file exists; upon failure,
+ unlink that existing file, then open again, but with O_WRONLY|O_CREAT.
+ (copy_internal): `force' is not related to interactive; remove
+ the conjunct.
+ Remove the entire `else if (x->force)' block; justifying
+ removal of the non-directory part is easy: POSIX requires we try
+ to open an existing regular file, so we can't unlink it beforehand.
+ The part that changes the mode on a directory to allow overwriting
+ isn't necessary.
+
+ * src/copy.c (copy_reg): Rename two goto labels.
+ (copy_internal): Set `new_dst' when the move_mode rename fails,
+ since we then unlink the destination file.
+
+ * src/cp.c (usage): --force is independent of --interactive.
+
+2000-08-24 Jim Meyering <meyering@lucent.com>
+
+ Put back the kludge. It's necessary after all.
+ * src/dd.c (buggy_lseek_support): New function.
+ (skip): Use it.
+ Frank Adler reported that although _llseek returns 0, lseek
+ erroneously returns an offset suggesting the operation succeeded
+ even though it fails.
+
+ * install-sh: Double quote as needed, to protect against arguments
+ containing spaces or shell metacharacters. Reported by Bruno Haible.
+
+2000-08-23 Jim Meyering <meyering@lucent.com>
+
+ * tests/dd/not-rewound: New test, for the SEEK_CUR vs. SEEK_SET part
+ of the last change. Based on Paul's example.
+ * tests/dd/Makefile.am (TESTS): Add not-rewound.
+
+2000-08-22 Paul Eggert <eggert@twinsun.com>
+
+ * src/dd.c (skip):
+ Assume lseek failed if it returned zero, since a zero return is
+ impossible and some buggy drivers return zero.
+
+ Use SEEK_CUR rather than SEEK_SET; this fixes a bug when the
+ file descriptor is not currently rewound.
+
+2000-08-23 Jim Meyering <meyering@lucent.com>
+
+ * src/dd.c: Back out my last change. Paul's (above) is better.
+
+2000-08-22 Jim Meyering <meyering@lucent.com>
+
+ Don't even try to use lseek on character devices.
+ * src/dd.c (buggy_lseek_support): New function.
+ (skip): Use it.
+ Reported by Martin Gallant via Michael Stone.
+
+2000-08-21 Jim Meyering <meyering@lucent.com>
+
+ * tests/cp/same-file: Clean up traps. Create files in a subdir.
+
+ * install-sh (oIFS): Remove unmatched double quote, left over from
+ my 2000-08-12 change. From J. David Anglin.
+
+ * Makefile.maint (wget-update): Get the latest version of depcomp.
+
+ * depcomp: Update from automake.
+
+2000-08-20 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0y.
+
+ Add support for cp's new POSIX-mandated -H and -L options.
+ * src/copy.h (enum Dereference_symlink): Define.
+ (struct cp_options) [dereference]: Change type to Dereference_symlink.
+ * src/copy.c: Declare lstat.
+ (copy_dir): Set `xstat' member to lstat so that with `-H' we don't
+ follow symlinks found via recursive traversal.
+ Update uses of `dereference' to compare against new enum member names.
+ * src/cp.c (long_opts): Add --dereference, -L.
+ (usage): Describe -L and -H.
+ (cp_option_init): Initialize to DEREF_UNDEFINED, not `1'.
+ (main): Add `H' and `-L' to getopt spec string.
+ [case 'a']: Initialize `dereference' to DEREF_NEVER, not 0.
+ [case 'd']: Likewise.
+ [case 'H']: New case.
+ [case 'L']: New case.
+ [case 'R']: Don't set dereference to `0' here.
+ If it's not yet defined, set x.dereference to DEREF_NEVER
+ if -R was specified, else set it to DEREF_ALWAYS.
+ Set x.xstat accordingly for -H.
+ * doc/fileutils.texi (cp invocation): Describe -H and -L.
+ * src/mv.c (cp_option_init): Initialize to DEREF_NEVER, not `0'.
+ * src/install.c (cp_option_init): Initialize to DEREF_ALWAYS, not `1'.
+
+ * tests/cp/Makefile.am (TESTS): Add cp-HL.
+ * tests/cp/cp-HL: New test.
+
+ * src/du.c (print_totals): Rename global from opt_combined_arguments.
+
+2000-08-17 Paul Eggert <eggert@twinsun.com>
+
+ * src/copy.c (DO_CHOWN): Do not make a special case for non-root.
+ POSIX.2 requires that cp -p and mv attempt to set the uid of the
+ destination file, even if you're not root. This affects behavior
+ only on hosts that let you give files away via chmod.
+ * NEWS: Describe the above change.
+
+2000-08-15 Jim Meyering <meyering@lucent.com>
+
+ * src/du.c (count_entry): Remember the current directory also for `.'
+ and `..'. Reported by Stephen Smoogen, based on a patch from H.J. Lu.
+ * tests/du/two-args: Add tests for this.
+
+2000-08-14 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.c (copy_reg): Move declaration of local, `n_read', into
+ the scope where it's used.
+ (copy_internal): In calling copy_reg, pass not the raw `src_mode',
+ but the possibly-umask-relative mode, `get_dest_mode (x, src_mode)'.
+
+2000-08-13 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.c (get_dest_mode): Rename from new_nondir_mode.
+ Honor the umask for `cp', but not for `mv' or `cp -p'.
+ (copy_reg): New 4th parameter, dst_mode. Pass it as 3rd arg. to open.
+ (copy_internal): Change type of locals `src_mode' and `src_type' from
+ int to mode_t.
+ Remove unnecessary local, `fix_mode'.
+ Combine two if-stmts into one.
+ Pass `src_mode' as 4th arg to copy_reg.
+ If we've just created a new regular file, return early, skipping the
+ chmod step. copy_reg now sets permissions of such files upon creation.
+ Use get_dest_mode, so there's just one chmod call here.
+
+ * tests/cp/Makefile.am (TESTS): Add perm.
+ * tests/cp/perm: New tests, to help ensure the above didn't
+ change anything.
+
+2000-08-12 Jim Meyering <meyering@lucent.com>
+
+ * tests/mv/into-self-2: Remove test for the VERSION_CONTROL and/or
+ SIMPLE_BACKUP_SUFFIX envvars. Source ../envvar-check instead.
+ * tests/mv/i-2: Likewise.
+ * tests/mv/to-symlink: Likewise.
+ * tests/cp/slink-2-slink: Likewise.
+ * tests/mv/partition-perm: Likewise.
+ * tests/cp/cp-mv-backup: Likewise.
+
+ * tests/Makefile.am (EXTRA_DIST): Add envvar-check.
+ * tests/envvar-check: New file.
+
+ * install-sh: Remove trailing blanks.
+ Output diagnostics to stderr, not stdout.
+ Remove many useless curly braces and double quotes.
+
+2000-08-11 J. David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * install-sh: Improve error handling.
+ Do the job even when the target file is `busy' on systems
+ that don't allow such files to be unlinked.
+
+2000-08-12 Jim Meyering <meyering@lucent.com>
+
+ * README: Remove note about how installation can fail and the
+ work-around, now that it's all automated.
+
+2000-08-07 Paul Eggert <eggert@twinsun.com>
+
+ * src/cp.c (usage, main): For cp -P messages, mention the new
+ behavior as well as the old.
+
+2000-08-07 Paul Eggert <eggert@twinsun.com>
+
+ Standardize on "memory exhausted" instead of "Memory exhausted"
+ or "virtual memory exhausted".
+ Invoke xalloc_die instead of printing our own message.
+ * src/chmod.c (main): Likewise.
+ * src/copy.c (copy_dir, copy_internal): Likewise.
+ * src/cp.c (do_copy): Likewise.
+ * src/dircolors.c (xstrndup): Likewise.
+ * src/install.c (main): Likewise.
+ * src/ln.c (do_link): Likewise.
+ * src/mkdir.c (main): Likewise.
+ * src/mkfifo.c (main): Likewise.
+ * src/mknod.c (main): Likewise.
+ * src/mv.c (movefile): Likewise.
+ * src/remove.c (remove_cwd_entries, rm): Likewise.
+ * src/shred.c (quotearg_colon, xmalloc):
+ "virtual memory exhausted" -> "memory exhausted"
+
+2000-08-07 Jim Meyering <meyering@lucent.com>
+
+ * src/cp.c (enum) [PARENTS_OPTION]: New member.
+ (long_opts): Update "parents" and deprecated "path" entries to use
+ `PARENTS_OPTION', not `P'.
+ (usage): Update --help output.
+ (main): Warn that the meaning of `-P' will soon change.
+
+2000-08-06 Jim Meyering <meyering@lucent.com>
+
+ * doc/fileutils.texi (cp invocation) [-r]: Remove inaccurate mention of
+ `non-symbolic links'.
+
+2000-08-05 Jim Meyering <meyering@lucent.com>
+
+ * config.guess: Update from master repository.
+ * config.sub: Likewise.
+
+ * Regenerate build/config framework to use the latest CVS versions
+ of automake and autoconf.
+
+2000-07-31 Jim Meyering <meyering@lucent.com>
+
+ * src/shred.c [!HAVE_CONFIG_H]: Use `virtual memory exhausted', not
+ `Memory exhausted'.
+
+2000-07-30 Jim Meyering <meyering@lucent.com>
+
+ * src/sys2.h (ISPRINT): Undef before defining to avoid warning.
+
+ * src/copy.c (copy_internal): Quote the file names that are displayed
+ with --verbose and --backup.
+ * src/remove.c (remove_file): Quote the file names that are displayed
+ with --verbose.
+ (remove_dir): Likewise.
+ * tests/mv/mv-special-1: Add quote marks to match new behavior.
+ * tests/rm/r-1: Likewise.
+ * tests/rm/r-2: Likewise.
+
+ * src/df.c: Convert "`%s'" in format strings to "%s", and wrap each
+ corresponding argument in a `quote (...)' call.
+ * src/dircolors.c: Likewise.
+ * src/du.c: Likewise.
+ * src/mkdir.c: Likewise.
+ * src/mkfifo.c: Likewise.
+ * src/mknod.c: Likewise.
+ * src/shred.c: Likewise.
+ * src/rmdir.c: Likewise.
+ * src/cp-hash.c: Likewise.
+
+ * src/chgrp.c: Convert "`%s'" in format strings to "%s", and wrap each
+ corresponding argument in a `quote (...)' call.
+ Add more precise diagnostics.
+ * src/chmod.c: Likewise.
+ * src/chown.c: Likewise.
+
+ * src/remove.c (remove_cwd_entries): Quote one more file name.
+
+ * src/help-version: Remove file. Move it to ...
+ * tests/help-version: ...here
+ * tests/Makefile.am (TESTS): Set to help-version.
+ (TESTS_ENVIRONMENT): Define.
+ (EXTRA_DIST): Add $(TESTS).
+ * src/Makefile.am (EXTRA_DIST): Remove help-version.
+ (TESTS): Remove definition.
+ (TESTS_ENVIRONMENT): Remove definition.
+
+2000-07-24 Bruno Haible <haible@clisp.cons.org>
+
+ * src/ls.c: Include <limits.h>, <stdlib.h>, <wchar.h>, <wctype.h>.
+ (quote_name): Use mbrtowc to step through the filename string while
+ replacing nonprintables with question marks. Return the screen width,
+ not the strlen length. Do no output if the out stream is NULL.
+ (length_of_file_name_and_frills): Use the quote_name return value.
+
+2000-07-25 Jim Meyering <meyering@lucent.com>
+
+ * src/chgrp.c (change_file_group): Save errno from a possibly failed
+ chown, and use that later. Otherwise, errno itself could be clobbered
+ before used.
+ * src/chmod.c (change_file_mode): Likewise.
+ * src/chown.c (change_file_owner): Likewise.
+
+ * src/mv.c (main): Remove unnecessary "%s" argument.
+
+ * src/ln.c: Convert "`%s'" in format strings to "%s", and wrap each
+ corresponding argument in a `quote (...)' call.
+ Add more precise diagnostics.
+ * src/mv.c: Likewise.
+ * src/cp.c: Likewise.
+ * src/touch.c: Likewise.
+
+2000-07-23 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0x.
+
+ * src/dd.c (main): Give a better diagnostic for e.g.,
+ `dd if=/dev/fd0 seek=100000000000'.
+ Convert "`%s'" in format strings to "%s", and wrap each
+ corresponding argument in a `quote (...)' call.
+ Add many, more precise diagnostics.
+
+ * src/remove.c (ASSIGN_STRDUPA): Remove macro definition.
+ * src/sys2.h (ASSIGN_STRDUPA): New macro (moved here from remove.c).
+
+ Fix cp so that `cp -r DIR1/ DIR2' works once again.
+ * src/cp.c (ASSIGN_BASENAME_STRDUPA): New macro.
+ (do_copy): Use it here (so we always strip trailing slashes before
+ calling base_name). Reported by Branden Robinson via Michael Stone.
+
+ Test for the above fix.
+ * tests/cp/Makefile.am (TESTS): Add dir-slash.
+ * tests/cp/dir-slash: New file.
+
+2000-07-17 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (WGET): Define.
+ (ftp-gnu): Define.
+ (wget-update): New rule, based on the one in autoconf.
+
+ * src/shred.c (usage): Give a little more info.
+ Remove a FIXME comment.
+
+ Avoid warnings.
+ * src/ls.c (struct bin_str): Declare `string' member to be `const'.
+ (put_indicator): Declare local `p' to be `const'.
+
+2000-07-15 Jim Meyering <meyering@lucent.com>
+
+ Begin converting "`%s'" in format strings to "%s", and wrap each
+ corresponding argument in a `quote (...)' call -- if there's only one.
+ If there are two or more, then use `quote_n (0, ...),
+ quote_n (1, ...), ...'.
+
+ Here's the justification, from Paul Eggert (thanks, Paul):
+
+ [Consider] the following, taken from fileutils/copy.c:
+
+ error (0, errno, _("cannot create directory `%s'"), dst_path);
+
+ Now, suppose dst_path is "/'\nrm: removing all files under `/"
+ (expressed in C string syntax). This will cause the user to see
+ the following delightfully ambiguous display:
+
+ cp: cannot create directory `/'
+ rm: removing all files under `/'
+
+ It would be better to rewrite the above line to be something
+ like this:
+
+ error (0, errno, _("cannot create directory %s"), quote (dst_path));
+
+ using the definition of "quote" [in lib/quote.c]. That way,
+ the user will see the following unambiguous display instead:
+
+ cp: cannot create directory `/\'\nrm: removing all files under `/'
+
+ One might object that any user who asks to copy a file with
+ a weird name like that deserves to get confused. But this
+ is not a good objection, as the source of the string may not
+ be under the user's control, or even visible to the user.
+
+ * src/copy.c: Adapt format strings and args as above. Include quote.h.
+ I have deliberately not changed the output of --verbose.
+ FIXME: maybe I should.
+ * src/cp.c: Likewise.
+ * src/remove.c: Likewise.
+ * src/install.c: Likewise. and improve a couple diagnostics.
+
+2000-07-13 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS: Describe --quoting-style=clocale.
+
+ * doc/fileutils.texi: New clocale quoting style.
+ Undo the previous change to the locale quoting style.
+
+2000-07-09 Jim Meyering <meyering@lucent.com>
+
+ * config.guess: Update from FSF.
+ * config.sub: Likewise.
+
+2000-07-05 Paul Eggert <eggert@twinsun.com>
+
+ * doc/fileutils.texi: Don't use ` and ' for quoting.
+
+2000-07-01 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0w.
+
+ * tests/touch/dangling-symlink: Warn about the problem rather
+ than failing, on some very recent (at least 2.3.99) versions of
+ the Linux kernel. Suggestion from Ulrich Drepper.
+ * tests/touch/Makefile.am (TESTS_ENVIRONMENT): Define host_triplet
+ for use in the dangling-symlink test.
+
+2000-06-28 Jim Meyering <meyering@lucent.com>
+
+ * tests/mv/i-2: Don't copy `out' into /tmp.
+
+2000-06-26 Paul Eggert <eggert@twinsun.com>
+
+ Now that savedir.c has been cleaned up...
+ * src/chgrp.c (change_dir_group): Don't set errno before
+ invoking savedir, and assume that errno is nonzero if savedir fails.
+ * src/chmod.c (change_dir_mode): Likewise.
+ * src/chown.c (change_dir_owner): Likewise.
+ * src/copy.c (copy_dir): Likewise.
+ * src/du.c (count_entry): Likewise.
+
+2000-06-26 Paul Eggert <eggert@twinsun.com>
+
+ * src/df.c (show_dev): Round disk usage percentage up, not to
+ nearest value. Use integer arithmetic if it's easy. Fix bug
+ when converting twos-complement negative values to floating point.
+
+2000-06-25 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.c (copy_internal): Don't return immediately after a failed
+ copy_dir call -- otherwise, the failure to read a single file in a
+ source directory would cause the containing destination directory
+ not to have the owner and/or permissions set properly.
+ Reported by Piotr and Maciej Kwapulinski.
+ * tests/cp/fail-perm: Test for it.
+ * tests/cp/Makefile.am (TESTS): Add fail-perm.
+
+ * Version 4.0v.
+
+2000-06-18 Jim Meyering <meyering@lucent.com>
+
+ * README-alpha: Update.
+
+2000-06-17 Jim Meyering <meyering@lucent.com>
+
+ * tests/install/basic-1: Don't fail (just exit 77) if strip doesn't
+ work. Suggestion from Ulrich Drepper.
+ Add canonical trap/mkdir/cd, plus exit portability cruft.
+
+2000-06-16 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.c (copy_reg): Give a slightly better diagnostic upon
+ open failure.
+
+2000-06-15 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS, doc/fileutils.texi: df, du, and ls now round disk
+ usage up and disk free space down.
+
+ * src/df.c (df_readable): New arg for rounding style.
+ Round negative numbers correctly.
+ (show_dev): Round disk usage up and disk free space down.
+
+ * src/ls.c (print_dir, gobble_file, print_long_format,
+ print_file_name_and_frills): Round disk usage up.
+ * src/du.c (print_size): Likewise.
+
+2000-06-14 Andreas Schwab <schwab@suse.de>
+
+ * tests/rm/r-1 (framework_failure): Initialize this instead of
+ test_failure.
+
+2000-06-12 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0u.
+
+ * tests/rm/r-1: Clean up.
+ Be careful to remove temp directory upon interrupt.
+
+ * src/mv.c (main): Give the correct diagnostic when using the
+ --target-dir=DIR option, but no arguments.
+ Patch from Michael Stone. Reported by Herbert Xu.
+ * tests/mv/diag: New test for this.
+ * tests/mv/Makefile.am (TESTS): Add diag.
+
+2000-06-08 Brian Youmans <3diff@gnu.org>
+
+ * doc/perm.texi (Multiple Changes): Fix typo.
+ * doc/fileutils.texi: A few typos and minor formatting fixes.
+ * doc/getdate.texi: Likewise.
+
+2000-06-06 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (alpha_subdir): Factor out `gnu/fetish'.
+
+2000-06-04 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0t.
+
+ * src/df.c (show_point) [HAVE_REALPATH && !HAVE_RESOLVEPATH]:
+ Cast undeclared `realpath' to char* to avoid warning.
+
+2000-06-03 Jim Meyering <meyering@lucent.com>
+
+ * src/install.c (usage): Document that -v is a synonym for --verbose.
+ * src/mkdir.c: Allow -v as synonym for --verbose, to be consistent
+ with other fileutils.
+ * src/rmdir.c: Likewise.
+ Suggestion from François Pinard.
+
+2000-06-02 Jim Meyering <meyering@lucent.com>
+
+ * configure.in (ALL_LINGUAS): Add Danish (da).
+
+2000-05-29 Jim Meyering <meyering@lucent.com>
+
+ Allow `cp -d -u' to copy one symlink onto another that's identical.
+ * src/copy.c (copy_internal): Change the || to ^ in the big sameness
+ test, so copying one symlink onto another, identical one doesn't fail
+ here.
+ If the symlink call fails, don't report the failure if the destination
+ already exists and is a symlink pointing to the proper name.
+ Reported by Andrew Burgess.
+ * tests/cp/slink-2-slink: New test.
+ * tests/cp/Makefile.am (TESTS): Add slink-2-slink.
+ * tests/cp/same-file: Adapt to fit new semantics of `cp -d'.
+
+2000-05-25 Jim Meyering <meyering@lucent.com>
+
+ * src/dd.c (close_stdout_wrapper): Don't dereference NULL pointer.
+ From Bob Proulx.
+
+2000-05-23 Jim Meyering <meyering@lucent.com>
+
+ * tests/shred/remove: Add traps to clean up.
+ Correct broken running-as-root test.
+
+ * tests/mv/i-2: Exit 77 when run as root. Reported by Andreas Schwab.
+
+2000-05-20 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0s.
+
+ * tests/mv/Makefile.am (TESTS): Add i-2, for 2000-05-12 change.
+
+ * tests/rm/r-2: Clean up.
+ * tests/ls/time-1 (LC_ALL): Set it unconditionally.
+
+2000-05-19 Jim Meyering <meyering@lucent.com>
+
+ Save device number as well as inode number for each directory,
+ and use both in comparisons. This makes the directory cycle
+ test more robust, and closes the small remaining hole whereby
+ an attacker could subvert a running `rm -r' command.
+
+ * src/remove.c (struct active_dir_ent) [st_dev]: New member.
+ [st_ino]: Rename from `inum'.
+ (make_active_dir_ent) [device]: New parameter.
+ (hash_compare_active_dir_ents): Compare using SAME_INODE macro.
+ (fspec_init_common): New function, factored out.
+ (fspec_init_file): Initialize have_device member.
+ (fspec_get_full_mode): Remove parameter. Update caller.
+ Set have_device and st_dev members.
+ * src/remove.h (struct File_spec) [have_device, st_dev]: New members
+
+2000-05-18 Jim Meyering <meyering@lucent.com>
+
+ * src/remove.c (rm): Combine adjacent fputc and fprintf.
+
+ * tests/rm/Makefile.am (TESTS): Add hash.
+ * tests/rm/hash: New test for the fix in lib/hash.c.
+
+2000-05-17 Jim Meyering <meyering@lucent.com>
+
+ * src/remove.c (remove_dir): Detect (and fail upon) attempt to subvert
+ a running `rm -r'. Reported by Morten Welinder.
+
+2000-05-15 Jim Meyering <meyering@lucent.com>
+
+ * src/ln.c (do_link): Use complete strings in diagnostics so they
+ are easier to translate. Reported by Michel Robitaille.
+ (main): Drop support for the case in which S_ISLNK wasn't defined.
+ It was broken in any case.
+
+ * tests/ls/time-1: Set LC_ALL to `C' to avoid failure when the
+ current locale is not C (POSIX). From Matthew Clarke.
+
+2000-05-13 Jim Meyering <meyering@lucent.com>
+
+ * src/help-version: New test.
+ * src/Makefile.am (TESTS): Define.
+ (TESTS_ENVIRONMENT): Likewise.
+ (EXTRA_DIST): Add help-version.
+
+ * src/chgrp.c: Arrange to call close_stdout only upon exit.
+ * src/chmod.c: Likewise.
+ * src/chown.c: Likewise.
+ * src/cp.c: Likewise.
+ * src/df.c: Likewise.
+ * src/dircolors.c: Likewise.
+ * src/du.c: Likewise.
+ * src/install.c: Likewise.
+ * src/ln.c: Likewise.
+ * src/ls.c: Likewise.
+ * src/mkdir.c: Likewise.
+ * src/mkfifo.c: Likewise.
+ * src/mknod.c: Likewise.
+ * src/mv.c: Likewise.
+ * src/rm.c: Likewise.
+ * src/rmdir.c: Likewise.
+ * src/shred.c: Likewise.
+ * src/sync.c: Likewise.
+ * src/touch.c: Likewise.
+
+ * src/dd.c: Include closeout.h.
+ (usage): Don't call close_stdout here.
+ (close_stdout_wrapper): New, kludgey, function and file-scoped global.
+ (main): Register it with atexit.
+
+2000-05-12 Jim Meyering <meyering@lucent.com>
+
+ Unlike for mv, -i doesn't cancel the effect of -f
+ and -f doesn't cancel the effect of -i.
+ * src/cp.c (main) ['f']: Don't reset `x.interactive'.
+ ['i']: Don't reset `x.force'.
+ * src/copy.c (copy_internal): Fix force and interactive tests.
+ Patch from Michael Stone, reported by Jeff Sheinberg.
+
+2000-05-09 Jim Meyering <meyering@lucent.com>
+
+ * src/shred.c: Include sys/types.h in shred.c before including
+ sys/stat.h or system.h. From John David Anglin.
+
+2000-05-08 Jim Meyering <meyering@lucent.com>
+
+ * tests/shred/remove: Don't use touch in root test. Instead, append to
+ the test file, since now touch operates even on files which deny owner
+ write access.
+
+2000-05-06 Jim Meyering <meyering@lucent.com>
+
+ * src/Makefile.am (shred_LDADD): Add @LIB_CLOCK_GETTIME@.
+
+ * src/rmdir.c (EEXIST): Remove now-unused definition.
+ (ENOTEMPTY): Likewise.
+ (errno_rmdir_non_empty): Rewrite to use RMDIR_ERRNO_NOT_EMPTY,
+ which is determined by the autoconf test in m4/rmdir-errno.m4.
+
+2000-05-03 Bruno Haible <haible@clisp.cons.org>
+
+ Don't fail when running `make check' with non-`C' locale.
+ * tests/cp/symlink-slash: During ls, set LANGUAGE (for GNU gettext)
+ and LC_ALL (for systems which look at LC_MESSAGES).
+ * tests/rm/r-2: Define LC_ALL instead of LANG, in case the user has
+ LC_CTYPE or LC_ALL set. Define it and LANGUAGE before the first use
+ of sort.
+
+2000-05-03 Jim Meyering <meyering@lucent.com>
+
+ With a recent glibc, _GNU_SOURCE, and -O, strndup may be a macro.
+ * src/sys2.h (!HAVE_DECL_STRNDUP): Declare strndup.
+ * src/dircolors.c: Remove declaration of strndup.
+ Reported by Bruno Haible.
+
+2000-05-02 Jim Meyering <meyering@lucent.com>
+
+ * src/rm.c (usage): Add the answer to `How do I remove a file named -f?'
+
+2000-05-01 Jim Meyering <meyering@lucent.com>
+
+ * src/install.c (change_attributes): Don't even attempt the chmod
+ if the chown fails. Before, when a non-root user ran `install -m 4755
+ -o nobody FILE DEST', DEST would set-uid not to `nobody' but rather to
+ the ID of the installing user. Reported by Marc Olzheim.
+
+2000-04-30 Jim Meyering <meyering@lucent.com>
+
+ * src/touch.c (O_NOCTTY): Define if not defined already.
+ (touch): Add O_NOCTTY to the flags passed to open.
+
+2000-04-29 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0r.
+
+ * src/cp.c [LSTAT_FOLLOWS_SLASHED_SYMLINK] (lstat): Define to rpl_lstat.
+
+2000-04-27 Jim Meyering <meyering@lucent.com>
+
+ Clean up.
+ * tests/mkdir/Makefile.am (TESTS_ENVIRONMENT): Set PATH, not MKDIR.
+ * tests/mkdir/p-1: Use mkdir, not $MKDIR.
+ * tests/mkdir/p-2: Likewise.
+
+ * configure.in (AC_OUTPUT): Add tests/du/Makefile.
+ * tests/Makefile.am (SUBDIRS): Add du.
+ * tests/du: New directory.
+ * tests/du/two-args: New test.
+
+ * tests/mkdir/special-1: New test.
+ * tests/mkdir/Makefile.am (TESTS): Add special-1.
+
+2000-04-25 Paul Eggert <eggert@twinsun.com>
+
+ * src/du.c (pop_dir): Remove through_symlink arg; use null cwd
+ for that purpose instead.
+ (count_entry): Also save the directory if we're saving more
+ than one level.
+ Fix file descriptor and memory leak when chdir fails.
+
+2000-04-26 Jim Meyering <meyering@lucent.com>
+
+ * src/mkdir.c: Rename global: s/path_mode/create_parents/.
+ (main): No longer perform explicit chmod when creating
+ parent directories, since make_path now does the chmod.
+
+2000-04-17 Jim Meyering <meyering@lucent.com>
+
+ * src/chown.c: New option: --from=CURRENT_OWNER:CURRENT_GROUP.
+ (enum) [FROM_OPTION]: New member.
+ (long_options): New getopt spec.
+ (change_file_owner): Add old_user, old_group parameters. Use them.
+ (change_dir_owner): Likewise.
+ (usage): Describe.
+ (main): New case.
+ From Andries Brouwer.
+ * doc/fileutils.texi (invoking chown): Document it.
+
+2000-04-16 Jim Meyering <meyering@lucent.com>
+
+ * src/cp.c: New option: --strip-trailing-slashes.
+ (enum) [STRIP_TRAILING_SLASHES_OPTION]: New member.
+ (remove_trailing_slashes): New global.
+ (long_opts): New getopt spec.
+ (usage): Describe.
+ (do_copy): Strip trailing slashes on SOURCE names only if the new
+ option has been specified.
+ (main): New case.
+
+ * tests/cp/symlink-slash: New test for the change in behavior.
+ * tests/cp/Makefile.am (TESTS): Add symlink-slash.
+
+ * doc/fileutils.texi (Trailing slashes): Factor out discussion on
+ trailing slashes into its own node.
+ Cross reference from cp and mv.
+
+2000-04-14 Jim Meyering <meyering@lucent.com>
+
+ * src/touch.c (touch): Add O_NOCTTY to the list of open-time flags.
+
+2000-04-13 Jim Meyering <meyering@lucent.com>
+
+ Move some code into m4/.
+ * configure.in (_GNU_SOURCE): Don't define here.
+ (AC_SYS_LARGEFILE): Don't use here.
+ (AM_C_PROTOTYPES): Don't use here.
+ * acconfig.h: Remove now-unused file.
+
+2000-04-08 Jim Meyering <meyering@lucent.com>
+
+ * doc/fileutils.texi (cp invocation): Mention that there is an
+ application for cp's --sparse=never option. From Martin Hippe.
+ (cp invocation): Describe how --backup and --force
+ can be useful together.
+
+2000-03-10 Alan Iwi <iwi@atm.ox.ac.uk>
+
+ * src/ls.c: Add support for "ln=target" in the LS_COLORS variable,
+ to colorize links as for the file/directory pointed to.
+ * src/dircolors.hin: Add a few words of documentation of the above.
+
+2000-04-08 Jim Meyering <meyering@lucent.com>
+
+ * src/cp.c (usage): Document that while the --backup option takes an
+ optional argument, the -b option accepts none.
+ (main): Use `backup type' in call to xget_version, not the
+ now-deprecated `--version-control'.
+ * src/install.c: Likewise.
+ * src/ln.c: Likewise.
+ * src/mv.c: Likewise.
+
+2000-03-12 Jim Meyering <meyering@lucent.com>
+
+ Merge from textutils.
+ * src/system.h (O_BINARY, O_TEXT): Define if necessary.
+ (SET_BINARY, SET_BINARY2): Define.
+ (DEV_BSIZE): Define to BBSIZE if appropriate.
+
+2000-03-10 Jim Meyering <meyering@lucent.com>
+
+ * tests/mv/mv-special-1: Make the message more like that in the
+ similar touch and shred tests.
+ * tests/touch/fifo: Accommodate SunOS-NFS-mounting-OpenBSD mkfifo
+ bug and `exit 77' if the fifo cannot be created.
+ Report and suggestion from Volker Borchert.
+
+2000-03-03 Jim Meyering <meyering@lucent.com>
+
+ * po/Makefile.in.in (dist distdir): Don't use `ln' (which was just a
+ space optimization anyway) to populate $(distdir). Otherwise, the dist
+ rules that change permissions would end up affecting the master sources.
+
+2000-03-01 Paul Eggert <eggert@twinsun.com>
+
+ * src/df.c (show_point): Ignore shortcuts based on path
+ prefixes that are loop file system mount points, since they
+ yield undesirable output.
+
+2000-02-29 Jim Meyering <meyering@lucent.com>
+
+ * src/ls.c (decode_switches): Remove `e' from getopt_long's list of
+ option characters. Reported by John Summerfield.
+
+2000-02-28 Jim Meyering <meyering@lucent.com>
+
+ * tests/install/basic-1: Use ginstall, not install.
+
+2000-02-27 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0q.
+
+ * src/sys2.h: Guard declaration of strtoull also with
+ `&& HAVE_UNSIGNED_LONG_LONG'.
+
+ * src/sys2.h: Use `#if !HAVE_DECL...' instead of `#ifndef HAVE_DECL...'
+ now that autoconf always defines the HAVE_DECL_ symbols.
+
+ * src/install.c (install_file_to_path): Always use install_file_in_file.
+ Based on a patch from Adam Klein via Michael Stone.
+
+ * tests/install/Makefile.am (TESTS): Add create-leading.
+ * tests/install/create-leading: New file.
+
+ * tests/install/basic-1: Clean up.
+ * tests/install/Makefile.am (TESTS_ENVIRONMENT): Add PATH. Remove cruft.
+
+2000-02-26 Jim Meyering <meyering@lucent.com>
+
+ Tranform the generated src/Makefile.in file so it falls back on
+ using /bin/rm when necessary. The old rule didn't always work.
+ This is necessary only on certain losing systems, and because this
+ package builds an `rm' executable and some people put `.' too
+ early in their PATH.
+ * Makefile.am (DISTCLEANFILES): Remove .deps and `FIXME' comment.
+ (EXTRA_DIST): Add .kludge-stamp.
+ (.kludge-stamp): New rule.
+ * src/Makefile.am (AUTOMAKE): Remove definition.
+ (Makefile.in): Remove dependency on automake-wrap script.
+ (EXTRA_DIST): Remove automake-wrap.
+ * src/automake-wrap: Remove file.
+
+ * tests/rm/r-2: Don't make the success of the test depend on the
+ order in which directory entries are processed.
+ Reported by Andreas Schwab.
+
+2000-02-12 Jim Meyering <meyering@lucent.com>
+
+ * po/POTFILES.in: Add lib/userspec.c.
+
+ * doc/fileutils.texi (chown invocation): Deprecate use of `.'.
+
+ * src/chown.c (usage): Mention only `:', and not `.' as the separator,
+ since POSIX allows only the former.
+ Prompted by a report from Manas Garg.
+
+2000-02-11 Jim Meyering <meyering@lucent.com>
+
+ * src/df.c (main): Count the stat'able arguments.
+ Print the header line only if there is at least one valid argument.
+ Reported by Andy Longton <alongton@metamark.com>
+
+2000-02-10 Jim Meyering <meyering@lucent.com>
+
+ Make du work when invoked from an unreadable directory.
+
+ * src/du.c (pop_dir): New function.
+ (count_entry): Factor out common code (pop_dir), and call the new
+ function instead.
+ Move declaration of global, `stat_buf' into this function.
+ (du_files): Don't stat `.' or call save_cwd, since count_entry
+ never returns with a changed working directory.
+
+2000-02-09 Jim Meyering <meyering@lucent.com>
+
+ * tests/mv/mv-special-1: Use $null and $dir in place of literals
+ in `here' script.
+ Exit 77 if we can't set up the framework (Volker Borchert reported
+ that this test would fail because mknod failed when run on SunOS4.1.4
+ using NFS-mounted disk from an OpenBSD system).
+
+2000-02-05 Jim Meyering <meyering@lucent.com>
+
+ * src/copy.c (copy_internal): Don't allow mv to move a directory onto
+ a non-directory. Reported by Brian Kimball via Michael Stone.
+
+2000-02-03 Jim Meyering <meyering@lucent.com>
+
+ * tests/mv/Makefile.am (TESTS): Add dir-file.
+ (TESTS_ENVIRONMENT): Remove vestiges of old tests.
+ * tests/mv/dir-file: New file.
+
+2000-02-02 Jim Meyering <meyering@lucent.com>
+
+ * tests/touch/Makefile.am (TESTS): Add fifo.
+ * tests/touch/fifo: New file.
+
+2000-02-01 Jim Meyering <meyering@lucent.com>
+
+ * src/touch.c (O_NDELAY): Define to 0 if not defined.
+ (O_NONBLOCK): Define to O_NDELAY if not defined.
+ (touch): Open with O_NONBLOCK, so one can touch a fifo without hanging.
+ Reported by Eric G. Miller via Michael Stone.
+
+ * man/*.x: Change ." to .\".
+ Reported by Andreas Schwab and Brendan O'Dea.
+
+2000-01-31 Jim Meyering <meyering@lucent.com>
+
+ * man/Makefile.maint (ginstall_filter): Define.
+ ($(man_MANS)): Use it here so that the install.1 man page refers
+ to `install', not `ginstall'. Reported by Andreas Schwab.
+
+2000-01-30 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0p.
+
+ * configure.in: Move library-related tests into m4/lib-check.m4.
+
+ * src/system.h (ST_NBLOCKS): Use st_size only for regular files and
+ for directories. From H. J. Lu.
+
+ * src/dd.c (main): Exit with nonzero status if ftruncate fails.
+
+2000-01-24 Jim Meyering <meyering@lucent.com>
+
+ * src/ln.c (usage): Describe behavior when LINK_NAME is omitted.
+ From Michael Stone.
+
+ * src/mv.c (main): Don't expect array index `n_files - 1' to evaluate
+ to `-1' for unsigned int n_files == 0. Doing so lead to a segfault on
+ alpha. From Michael Stone.
+
+2000-01-23 Jim Meyering <meyering@lucent.com>
+
+ * configure.in (AM_FUNC_OBSTACK): Remove. (move to m4/.)
+ Remove nearly all function checks (moved to m4/.)
+ (AC_SUBST(DF_PROG)): Move this to m4/.
+ (ftruncate test): Move into new file: m4/ftruncate.m4.
+ (AC_HEADER_MAJOR, AC_HEADER_DIRENT): Move into m4/.
+ Remove df-related tests. i.e., move jm_LIST_MOUNTED_FILESYSTEMS,
+ jm_FSTYPENAME, and jm_FILE_SYSTEM_USAGE) into m4/.
+
+2000-01-22 Jim Meyering <meyering@lucent.com>
+
+ * configure.in: Move addext.c prerequisites from this file into m4/.
+ (AC_CHECK_HEADERS): Move these checks into m4/.
+
+2000-01-17 Paul Eggert <eggert@twinsun.com>
+
+ * src/dd.c (interrupt_handler): Likewise.
+ (install_handler): Use SA_NOCLDSTOP, not _POSIX_VERSION,
+ to decide whether to call sigaction; this fixes an old typo.
+
+2000-01-16 Jim Meyering <meyering@lucent.com>
+
+ * lib/Makefile.am: Sync with sh-utils/lib/Makefile.am.
+
+ * configure.in: Remove AM_FUNC_ERROR_AT_LINE, jm_FUNC_GNU_STRFTIME,
+ jm_FUNC_GROUP_MEMBER, jm_FUNC_GETGROUPS, AC_FUNC_VPRINTF, and
+ AC_FUNC_ALLOCA. They're now in m4/.
+
+ Sync with the version from emacs-20.5.
+ * lib/alloca.c
+ (<string.h>): Include if HAVE_STRING_H.
+ (<stdlib.h>): Include if HAVE_STDLIB_H.
+ (alloca): Abort if malloc fails.
+ Reported by Paul Eggert.
+
+2000-01-15 Jim Meyering <meyering@lucent.com>
+
+ * configure.in (AC_REPLACE_FUNCS): Remove these: euidaccess memcpy
+ memcmp memset mkdir rmdir rpmatch stpcpy strndup strstr strtol
+ strtoul strverscmp. Now they're in m4/.
+
+2000-01-12 Jim Meyering <meyering@lucent.com>
+
+ * tests/shred/remove: Make the warning that this shred test may not
+ be run as root more prominent. Suggestion from Volker Borchert.
+
+2000-01-11 Paul Eggert <eggert@twinsun.com>
+
+ Quote multibyte characters correctly.
+
+ * lib/quotearg.c (ISGRAPH): Remove.
+ (ISPRINT): New macro.
+ (<wchar.h>): Include if HAVE_MBRTOWC && HAVE_WCHAR_H.
+ (isprint, mbrtowc, mbsinit, mbstate_t): New macros,
+ defined if ! (HAVE_MBRTOWC && HAVE_WCHAR_H).
+ (quotearg_buffer_restyled): New function, with most of the old
+ quotearg_buffer's contents.
+ Major rewrite to support multibyte characters.
+ (quotearg_buffer): Now just calls quotearg_buffer_restyled.
+
+ * m4/c-bs-a.m4: New file.
+ * m4/prereq.m4 (jm_PREREQ_QUOTEARG): New macro.
+ (jm_PREREQ): Use it.
+
+2000-01-11 Paul Eggert <eggert@twinsun.com>
+
+ * lib/modechange.c (mode_compile): Use uintmax_t, not unsigned
+ long, to parse numeric modes. Check for any unknown bits, not
+ just unknown bits left of the leftmost known bit.
+
+2000-01-11 Paul Eggert <eggert@twinsun.com>
+
+ * lib/getdate.y: Update copyright notice.
+
+2000-01-11 Paul Eggert <eggert@twinsun.com>
+
+ * COPYING: Sync with latest FSF version (fixing a minor Y2k problem).
+
+2000-01-11 Paul Eggert <eggert@twinsun.com>
+
+ * lib/exclude.c, lib/exclude.h: Sync to the slightly more
+ general version of GNU tar.
+
+ * src/du.c (count_entry):
+ Adjust to new calling convention for excluded_filename.
+ (main): Likewise, for add_exclude_file.
+
+2000-01-11 Jim Meyering <meyering@lucent.com>
+
+ * lib/memcpy.c (memcpy): Protoize.
+
+ Prepare to sync lib/ directories of fileutils, sh-utils, and textutils.
+ * lib/Makefile.am: s/fu/fetish/
+ * src/Makefile.am: s/libfu/libfetish/
+
+ * lib/hash.c (hash_initialize): Fix typo in comment.
+ From François Pinard.
+
+2000-01-10 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0o.
+
+ * lib/Makefile.am (noinst_HEADERS): Add nanosleep.h.
+
+2000-01-09 Jim Meyering <meyering@lucent.com>
+
+ * Version 4.0n.
+
+ * src/ln.c (do_link): Produce the same sort of one-line output for
+ `--backup --verbose' as cp, mv, install. Before this, the backup
+ file name wasn't printed at all.
+
+ This affects cp, install, and mv.
+ * src/copy.c (copy_internal): When making backup files in verbose
+ mode, print the backup file name on the same line as the rest of the
+ information, e.g., `a -> b (backup: b.~13~)' rather than on a separate
+ line by itself. Suggestion from Karl Berry.
+
+2000-01-08 Jim Meyering <meyering@ascend.com>
+
+ * lib/error.c (error): Use __strerror_r's return value only if
+ HAVE_WORKING_STRERROR_R.
+ (error_at_line): Likewise.
+
+ * Makefile.maint (null_AM_MAKEFLAGS): Define.
+ (my-distcheck): Use it to avoid distributing out of date files
+ whose derivation would require a maintainer tool.
+
+2000-01-07 Jim Meyering <meyering@ascend.com>
+
+ * lib/euidaccess.c: Sync with the GNU C library.
+
+ * tests/dir/Makefile.am (TESTS_ENVIRONMENT): Add `pwd`/ prefix
+ to exported PATH value (though not strictly necessary, here).
+ * tests/dd/Makefile.am: Likewise.
+ * tests/dircolors/Makefile.am: Likewise.
+ * tests/rm/Makefile.am: Likewise.
+ * tests/rmdir/Makefile.am: Likewise.
+ * tests/shred/Makefile.am: Likewise.
+ * tests/touch/Makefile.am: Likewise.
+ * tests/shred/Makefile.am: Likewise.
+
+2000-01-06 Jim Meyering <meyering@ascend.com>
+
+ * man/help2man: Import version 1.020.
+
+ * lib/strftime.c: Sync with the GNU C Library.
+
+2000-01-06 Paul Eggert <eggert@set.twinsun.com>
+
+ * tar/lib/getdate.y: Sync tm_diff with the GNU C Library.
+ (TM_YEAR_BASE): Renamed from TM_YEAR_ORIGIN. All uses changed.
+ (tm_diff): Renamed from difftm. All uses changed.
+ Replace body with that taken from GNU C Library 2.1.3pre1.
+ (get_date): Prefer tm_gmtoff to tm_diff if available.
+
+2000-01-04 Paul Eggert <eggert@twinsun.com>
+
+ * savedir.c (savedir): Don't store past the end of an array if
+ name_size is zero and the directory is empty.
+
+ * Makefile.maint (PREV_VERSION): Tweak so it handles e.g., 2.0a -> 2.0.
+ (alpha): Create xdelta diffs.
+
+2000-01-02 Jim Meyering <meyering@ascend.com>
+
+ * Version 4.0m.
+
+ * src/mv.c: New option: --strip-trailing-slashes.
+
+ 1999-11-18 Paul Eggert <eggert@twinsun.com>
+
+ * lib/strftime.c (my_strftime): Some old compilers object to
+ '\a', so don't bother optimizing for it.
+
+2000-01-01 Paul Eggert <eggert@twinsun.com>
+
+ Fix bug: `df PATH' sometimes misbehaves when there is an
+ inaccessible mount point unrelated to PATH.
+ * configure.in (AC_CHECK_FUNCS): Add realpath, resolvepath.
+ * src/df.c (#pragma alloca): Add if _AIX is defined.
+ (path-concat.h): Include.
+ (show_point): If HAVE_REALPATH or HAVE_RESOLVEPATH is defined,
+ find the real absolute path for PATH, and use that to find the
+ mount point.
+
+ (show_point): Prefer non-dummy entries in shortcuts, too.
+ Disable bogus mount dirs instead of restatting them each time.
+
+1999-12-30 Jim Meyering <meyering@ascend.com>
+ 1999-12-17 Kalle Olavi Niemitalo <tosi@stekt.oulu.fi>
+
+ * src/rmdir.c (remove_parents, main): Don't pass errno to error
+ when printing "removing directory" message. Failure of rmdir is
+ handled elsewhere.
+
+1999-12-23 Jim Meyering <meyering@ascend.com>
+
+ * configure.in: Remove clock_gettime tests.
+ Now they're in m4/jm-macros.m4.
+
+ * src/ln.c (usage): Correct typos.
+ List new --target-directory=... usage.
+ Reported by Göran Uddeborg
+
+ * src/mv.c (usage): List new --target-directory=... usage.
+
+1999-12-22 Jim Meyering <meyering@ascend.com>
+
+ * lib/getdate.y (get_date): Fix typo in time_t overflow test.
+ From Michael Stone.
+
+1999-12-21 Andreas Schwab <schwab@suse.de>
+
+ * tests/shred/remove: Use $file, not $tmp/file. Exit 77 if run as
+ root.
+
+1999-12-20 Paul Eggert <eggert@twinsun.com>
+
+ * src/df.c (ceil_percent): Remove.
+ (show_dev): Avoid overflow problems when calculating percent.
+ Do not display negative percents.
+
+1999-12-19 Jim Meyering <meyering@ascend.com>
+
+ * Version 4.0l.
+
+ * doc/fileutils.texi: Clarify and combine descriptions of -c and of
+ --time=ctime.
+ Likewise for -u/--time=atime.
+
+ * src/ls.c [! LSTAT_FOLLOWS_SLASHED_SYMLINK]: Use lstat wrapper.
+ [Notice the new configure-time test in m4/lstat-slash.m4. ]
+ (main): Back out change from 1999-02-19 that made ls remove
+ trailing slashes from command line arguments to accommodate early
+ versions of Linux. Now, `ls symlink-to-dir/' acts like
+ `ls symlink-to-dir/.' thus following the symbolic link, as POSIX says
+ it should. Suggestion from Bruno Haible and Andreas Schwab.
+
+ * lib/xstat.in (slash_aware_lstat): New function.
+ (rpl_@xstat@): Use it.
+ * lib/Makefile.am (lstat.c): Adapt rule to handle new parts of xstat.in.
+ (lstat.c): Likewise.
+
+ Make sure ls does the right thing with symlinks and trailing slashes.
+ * tests/ls/Makefile.am (TESTS): Add symlink-slash.
+ * tests/ls/symlink-slash: New test, for above-fixed bug.
+
+1999-12-18 Jim Meyering <meyering@ascend.com>
+
+ * src/shred.c (wipename): When repeatedly renaming a file, making the
+ name shorter and shorter, skip to the next shorter length length if a
+ rename fails (e.g. due to permission denied). Otherwise, this loop
+ would iterate for so long that shred would appear to be stuck in an
+ infinite loop for any but the shortest file names.
+ Reported by Joe Orton.
+
+ * configure.in (AC_OUTPUT): Add tests/shred/Makefile.
+ * tests/Makefile.am (SUBDIRS): Add shred.
+ * tests/shred: New directory
+ * tests/shred/remove: New file. Tests for the above-fixed bug.
+
+1999-12-13 Jim Meyering <meyering@ascend.com>
+
+ * lib/makepath.c (make_path): Consistently use `error' to output
+ the verbose, `created directory ...' messages.
+ Reported by Bernhard Rosenkraenzer.
+
+1999-12-12 Jim Meyering <meyering@ascend.com>
+
+ Move 120+ lines of stat.h-related macros from system.h (not shared)
+ to sys2.h, which is shared between fileutils, sh-utils, textutils.
+ * src/system.h: Move them from here...
+ * src/sys2.h: ... to here.
+
+ * src/system.h (S_IRUSR, S_IRGRP, S_IWGRP, S_IROTH, S_IWOTH): Define
+ if not defined. This was necessary on a NeXT Turbostation running
+ Mach 3.3. Reported by Nelson H. F. Beebe.
+
+ * src/ls.c (decode_switches): If -c or -u is specified and not -l
+ (or any other option that implies -l), and no sort-type was specified,
+ then sort by the ctime (-c) or atime (-u). Part of this change reverts
+ the 1998-01-10 delta.
+ (usage): Update to reflect this change.
+ Reported by Paul Slootman via Michael Stone.
+
+1999-12-09 Jim Meyering <meyering@ascend.com>
+
+ * src/df.c (BLOCK_SIZE_OPTION, SYNC_OPTION, NO_SYNC_OPTION): Define
+ these and use them instead of `CHAR_MAX + n'.
+ * src/du.c (BLOCK_SIZE_OPTION, EXCLUDE_OPTION, MAX_DEPTH_OPTION):
+ Likewise.
+ * src/touch.c (TIME_OPTION): Likewise.
+ * src/rmdir.c (IGNORE_FAIL_ON_NON_EMPTY_OPTION): Likewise.
+
+ * tests/ls/time-1: Test more of the framework (touch's -a and -m
+ options) before running the actual ls test.
+
+1999-12-07 Jim Meyering <meyering@ascend.com>
+
+ * tests/cp/cp-mv-backup: Use 1>&2 rather than `1<&-'.
+ Suggestion from Volker Borchert.
+
+1999-12-05 Jim Meyering <meyering@ascend.com>
+
+ * Makefile.maint: Remove ftp.enst.fr.
+
+1999-12-04 Jim Meyering <meyering@ascend.com>
+
+ * Version 4.0k.
+
+ * tests/mv/into-self-2: Adapt to reflect this change in behavior.
+ Make sure the VERSION_CONTROL envvar is not set.
+ Run diff if comparison fails.
+
+ * src/copy.c (copy_internal): In move mode, if the rename attempt
+ fails, then unlink any existing destination file. This makes a
+ cross-device `mv' more consistent with the intra-device behavior.
+ This change is required by POSIX to make a cross-device move act with
+ semantics similar to those of the rename syscall. For example now
+ `mv' can move a file onto a symlink to itself when that symlink
+ is on a separate partition. With fileutils-4.0j, it would fail with
+ a diagnostic saying they were the same file.
+ Reported by Bruno Haible.
+
+ * tests/mv/to-symlink: New file. Adds test for the above.
+ * tests/mv/Makefile.am (TESTS): Add to-symlink.
+
+ * tests/cp/cp-mv-backup (trap): Be careful to close $actual before
+ removing the containing directory. Otherwise, on some systems rmdir
+ fails to remove the containing directory.
+
+ * tests/ls/time-1: List --full-time dates upon failure.
+
+1999-12-02 Andreas Schwab <schwab@suse.de>
+
+ * src/ls.c (check_symlink_color): New variable.
+ (main): Set it if we need to check for dangling symlinks when
+ displaying colors.
+ (gobble_file): Check check_symlink_color instead of print_with_color.
+
+1999-11-30 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls.c (usage): Shorten help for --show-control-chars.
+
+1999-11-30 Jim Meyering <meyering@ascend.com>
+
+ Give the right diagnostic when failing to create a file in an
+ unwritable directory.
+ * src/touch.c (touch): Record errno upon failed errno and use that
+ saved value if a subsequent fstat, stat or utime call fails.
+ Reported by Wichert Akkerman via Michael Stone.
+
+1999-11-27 Jim Meyering <meyering@ascend.com>
+
+ Clean up test scripts.
+ * tests/mv/setup: Don't set/use DF or MKDIR. Use df and mkdir instead.
+ * tests/mv/mv-special-1: Likewise for these: LS MV MKDIR MKNOD RM TOUCH
+ * tests/mv/backup-is-src: Likewise for RM and MV.
+ * tests/mv/hard-link-1: Likewise.
+ * tests/mv/into-self: Likewise.
+ * tests/mv/into-self-3: Likewise.
+
+ Add test for 1999-05-23 change to src/copy.c (copy_internal).
+ * tests/mv/partition-perm: New file.
+ * tests/mv/Makefile.am (TESTS): Add partition-perm.
+
+ * Version 4.0j.
+
+1999-11-22 Paul Eggert <eggert@twinsun.com>
+
+ * src/df.c (df_readable): Now returns char const *, not char *.
+ New arg NEGATIVE.
+ (ceil_percent): Now returns double, not int.
+ Be more careful about adding 1 to a wild value.
+ (show_dev): Don't filter out wild sizes from the underlying operating
+ system; instead, show them to the user as faithfully as possible.
+
+1999-11-23 Jim Meyering <meyering@ascend.com>
+
+ * doc/getdate.texi (Calendar date item): Correction regarding 0..68/
+ 69-99 split for 1900 vs 2000. From Peter Moulder.
+
+1999-11-22 Jim Meyering <meyering@ascend.com>
+
+ * lib/Makefile.am (DISTCLEANFILES): Add lstat.c and stat.c.
+
+1999-11-20 Jim Meyering <meyering@ascend.com>
+
+ * src/rmdir.c (errno_rmdir_non_empty): New function to encapsulate
+ errno comparison.
+ (remove_parents): Use it.
+ (main): Use it.
+
+ * tests/cp/cp-mv-backup: Run `diff -c' if the test fails.
+
+ * tests/ls/time-1: Use `ls' and `touch', not $LS and $TOUCH.
+ * tests/ls/Makefile.am (TESTS_ENVIRONMENT): Specify PATH, etc.
+
+ * src/chgrp.c: Declare lstat; needed on e.g. SunOS4.
+ Reported by Tom Tromey.
+
+1999-11-19 Jim Meyering <meyering@ascend.com>
+
+ * lib/strstr.c (strstr): Include config.h.
+ Add a `;' between shloop label and `}'.
+ From Akim Demaille.
+
+1999-11-17 Jim Meyering <meyering@ascend.com>
+
+ * src/mkdir.c (S_IRWXUGO): Define if necessary.
+ (main): Use chmod to set the permissions if bits other than those
+ of S_IRWXUGO were requested. Reported by Sami Farin.
+
+1999-11-14 Paul Eggert <eggert@twinsun.com>
+
+ * touch.c (touch): Simplify code a tad, using fd == -1 instead
+ of separate valid_fd variable.
+
+1999-11-13 Jim Meyering <meyering@ascend.com>
+
+ * src/touch.c (touch): Don't fail just because we couldn't open
+ an existing file. This makes it so that touching a read-only
+ file now works. Also clean up and simplify.
+ Based on a patch from Chip Salzenberg.
+ * tests/touch/no-rights: New test for this.
+ * tests/touch/Makefile.am (TESTS): Add no-rights.
+
+1999-11-12 Jim Meyering <meyering@ascend.com>
+
+ * src/remove.c (print_nth_dir): Write one fewer byte so we don't print
+ a trailing slash.
+ (rm): Fix bugs in (and test, this time) the very rarely used code
+ to warn about directory cycles.
+ Reported by michael@roka.net.
+
+1999-11-11 Jim Meyering <meyering@ascend.com>
+
+ * src/copy.c (copy_internal): Treat src and dest as the `same' in
+ `mv src symlink-to-src' when src and dest are on different partitions.
+ Otherwise, that `mv' command would silently remove `src'.
+ Reported by Michael Stone.
+ * tests/mv/into-self-2: Add a test for this fix.
+
+ * lib/makepath.c (make_path): Fix long-latent bug: s/&&/||/ (others
+ just like that also dated back to 1992 were fixed in 1998-01-02).
+ Richard Braakman reported that using `install -d -g foo 1/2`
+ only sets the group on the intermediate directory, not the final
+ component. From Michael Stone.
+
+1999-11-07 Paul Eggert <eggert@set.twinsun.com>
+
+ * human.c (default_block_size): New function.
+ (humblock): Use it if no block size is specified.
+ (human_block_size): If the specified block size is zero, report an
+ error if report_errors is nonzero; otherwise use the default.
+
+1999-11-07 Jim Meyering <meyering@ascend.com>
+
+ * src/dircolors.hin: Add several more TERM types.
+ Add .bz2 suffix.
+ Add .png for real this time.
+ Change the image types colors to be visible in a black-on-white xterm.
+ From Michael Stone.
+
+ * src/chgrp.c (xstat): New global.
+ (main): Define it.
+ (change_file_group): Use it. Before this change, when running chgrp
+ on a symlink without --dereference (-h) and when the requested group
+ is the same as the group for the *symlink*, chgrp would do nothing.
+ Now it changes the group of the file referenced through the symlink.
+ Reported by Martin Mitchell.
+
+ * src/chmod.c: Use REFERENCE_FILE_OPTION instead of bare `CHAR_MAX + 1'.
+ * src/chown.c: Define and use REFERENCE_FILE_OPTION and
+ DEREFERENCE_OPTION in place of bare `CHAR_MAX + N'.
+ * src/chgrp.c: Likewise.
+
+ * tests/ln/misc: Add hard-link-to-symlink test.
+ Move framework_failure test to the end.
+ Fix a typo: s/||/&&/.
+
+ * src/ln.c (do_link): Warn that making a hard link to a symbolic link
+ is not portable.
+
+ * tests/ln/misc: Use --b=simple, not the now-deprecated `-V simple'.
+ * tests/ln/backup-1: Likewise.
+
+ * configure.in (AC_OUTPUT): Add tests/rmdir/Makefile.
+ * tests/Makefile.am (SUBDIRS): Add rmdir.
+ * tests/rmdir: New directory
+ * tests/rmdir/ignore: New file.
+
+ * src/rmdir.c (remove_parents): Use the correct test (just as in
+ main) in handling --ignore-fail-on-non-empty. From Michael Stone.
+ (usage): Improve description of --parents. Based on suggestion from
+ Torsten Landschoff.
+
+1999-11-06 Jim Meyering <meyering@ascend.com>
+
+ Allow hard links to symlinks on systems that support it.
+ * src/ln.c (STAT_LIKE_LINK): Define.
+ (do_link): Use STAT_LIKE_LINK, rather than bare `stat', and perform
+ the extra lstat only on systems where LINK_FOLLOWS_SYMLINKS.
+
+ * src/ls.c (long_options): Correct typo (s/'F'/'p'/) so that `-p' is
+ accepted as the short form of --file-type, per the documentation.
+ From James Sneeringer.
+
+ * src/ln.c (do_link): Fix typo (in which the function name `symlink'
+ was tested instead of the variable `symbolic_link') that could make
+ ln perform an unneeded `stat' call.
+
+1999-11-05 Jim Meyering <meyering@ascend.com>
+
+ * src/system.h: Use HAVE_STRUCT_STAT_ST_BLOCKS, not deprecated
+ HAVE_ST_BLOCKS.
+ * src/copy.c: Likewise.
+ * lib/fileblocks.c: Likewise.
+
+ * configure.in: Move some type/header/member tests into
+ m4/jm-macros.m4 (jm_CHECK_ALL_TYPES) so they are shared by all of
+ fileutils, textutils, and sh-utils.
+
+1999-11-02 Jim Meyering <meyering@ascend.com>
+
+ * man/help2man: Import version 1.018.
+ * man/Makefile.maint ($(man_MANS)): Remove use of --name=... option.
+ * man/*.x: Include one-line summary in [NAME] section.
+ * man/Makefile.summ: Remove the one-line summaries.
+ Suggestion for clean-up from Akim Demaille.
+
+ * configure.in (ALL_LINGUAS): Add Galician (gl).
+
+1999-11-01 Jim Meyering <meyering@ascend.com>
+
+ * src/cp.c (usage): Warn about mixing use of `-r' with FIFOs and
+ other special files like /dev/zero.
+
+ * lib/Makefile.am (MAINTAINERCLEANFILES): Set to $(BUILT_SOURCES).
+
+1999-10-31 Jim Meyering <meyering@ascend.com>
+
+ * Makefile.maint (my-distcheck): Remove $(DEPDIR) to work around
+ automake bug.
+
+ * doc/fileutils.texi: Document new --backup[=METHOD] option for
+ cp, mv, ln, and install.
+
+ * src/ln.c: Convert --backup to take an optional argument.
+ Deprecate --version-control (-V) in comments.
+ (usage): Remove mention of --version-control.
+ (main): Make -V warn then fall through into --backup case.
+ [--backup case]: Handle optional arg.
+ * src/install.c: Likewise.
+
+1999-10-24 Jim Meyering <meyering@ascend.com>
+
+ * src/cp.c (do_copy): Constify `dest', and cast-away the new
+ const in assignment to new_dest.
+
+1999-10-23 Jim Meyering <meyering@ascend.com>
+
+ * tests/touch/Makefile.am (TESTS): Add dangling-symlink.
+ * tests/touch/dangling-symlink: New file.
+
+1999-10-23 Paul Eggert <eggert@twinsun.com>
+
+ * src/touch.c (full_write): Remove unused decl.
+ (open_maybe_create): Remove.
+ (touch): Don't record whether the file was created; this isn't
+ possible to do reliably and portably without race conditions.
+ If the file was created and if amtime_now is nonzero, this
+ change means we'll have to do another utime system call, but
+ that's no more harmful than the previous version of this code.
+ Reported by Gabor Z. Papp.
+
+1999-10-21 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (ALL_LINGUAS): Add Japanese (pa).
+
+1999-10-17 Jim Meyering <meyering@ascend.com>
+
+ * tests/mv/backup-is-src: Remove use of mv's now-deprecated
+ -V option. Use --b=simple instead of -b -V simple.
+
+ * src/mv.c: Convert --backup to take an optional argument.
+ Deprecate --version-control (-V) in comments.
+ (usage): Remove mention of --version-control.
+ (main): Make -V warn then fall through into --backup case.
+ [--backup case]: Handle optional arg.
+
+ Accept new option: --target-directory=DIR
+ * src/cp.c (TARGET_DIRECTORY_OPTION): Define.
+ (SPARSE_OPTION): Define.
+ (usage): Describe it.
+ (do_copy): Change meanings/names of first two parameters: use `n_files'
+ in place of `argc - optind', and `file' instead of `argv + optind'.
+ Add parameter, target_directory.
+ (main): Pass new arg, target_directory.
+
+1999-10-16 Jim Meyering <meyering@ascend.com>
+
+ * tests/cp/backup-is-src: Remove use of cp's now-deprecated -V option.
+ Use --b=simple instead of -b -V simple.
+ * tests/cp/backup-1: Replace use of cp's now-deprecated
+ --version-control option with use of --backup=simple.
+
+ * src/cp.c: Convert --backup to take an optional argument.
+ Deprecate --version-control (-V) in comments.
+ (usage): Remove mention of --version-control.
+ (main): Make -V warn then fall through into --backup case.
+ [--backup case]: Handle optional arg.
+
+ * tests/cp/Makefile.am (TESTS): Add cp-mv-backup.
+ * tests/cp/cp-mv-backup: New file.
+
+1999-10-11 Jim Meyering <meyering@ascend.com>
+
+ * lib/getopt.c: Merge changes from latest glibc.
+ * lib/getopt.h: Likewise.
+ * lib/getopt1.c: Likewise.
+
+1999-10-09 Jim Meyering <meyering@ascend.com>
+
+ Accept new option: --target-directory=DIR
+ * src/ln.c (TARGET_DIRECTORY_OPTION): Define.
+ (usage): Describe it.
+ (main): Implement it.
+ Make code clearer: use new variable `n_files' in place of
+ `argc - optind'. Use `file' instead of `argv + optind'.
+
+1999-10-04 Jim Meyering <meyering@ascend.com>
+
+ * depcomp: New file, for automake's new dependency support.
+ * missing: New version, from automake's user-dep-gen-branch.
+
+ * lib/xalloc.h (__attribute__): Apply 1999-10-03 change here, too.
+ * src/sys2.h (__attribute__): Likewise.
+ Wrap with #ifndef __attribute__.
+
+1999-10-03 Paul Eggert <eggert@twinsun.com>
+
+ * getdate.y (__attribute__): Define to empty if GCC claims to
+ be before 2.8; this is needed for OPENStep 4.2 cc. Also,
+ define to empty if strict ANSI.
+
+1999-10-03 Jim Meyering <meyering@ascend.com>
+
+ Accept new option: --target-directory=DIR
+ * src/mv.c (TARGET_DIRECTORY_OPTION): Define.
+ (usage): Describe it.
+ (main): Implement it.
+ Remove unused variable, stdin_tty.
+ Make code clearer: use new variable `n_files' in place of
+ `argc - optind'. Use `file' instead of `argv + optind'.
+
+1999-09-28 Jim Meyering <meyering@ascend.com>
+
+ * src/system.h: Do s/#ifdef HAVE_/#if HAVE_/ -- solely for aesthetics.
+ Do the same for other config.h macros like CLOSEDIR_VOID and MAJOR_*.
+ * src/sys2.h: Likewise.
+
+ * lib/xalloc.h (__attribute__): Protect against redefinition.
+ From Akim Demaille.
+
+1999-09-26 Jim Meyering <meyering@ascend.com>
+
+ * lib/xmalloc.c (xalloc_die): Rename from xalloc_fail and
+ update callers.
+ Use explicit exit to help avoid warnings.
+ From Akim Demaille.
+
+ * lib/path-concat.c (DIRECTORY_SEPARATOR): Define.
+ (ISSLASH): Define.
+ (path_concat): Allow parameter DIR to be NULL.
+ (xpath_concat): New function.
+ From Akim Demaille.
+
+ * lib/xalloc.h (__attribute__): Define.
+ (ATTRIBUTE_NORETURN): Define.
+ (xalloc_die): Declare.
+ (NEW): Define as yet unused macro.
+ (XFREE): Likewise
+ (CCLONE): Likewise.
+ (CLONE): Likewise.
+ From Akim Demaille.
+
+ * lib/basename.c (base_name): Add prototype. From Akim Demaille.
+
+1999-09-19 Jim Meyering <meyering@ascend.com>
+
+ * lib/lchown.c [STAT_MACROS_BROKEN] (S_ISLNK): Undefine.
+ (S_ISLNK): Define if necessary.
+ This is necessary on a NEC SX-4 with SUPER-UX 9.1.
+ Based on a patch from Holger Berger.
+
+ * src/dd.c (siginfo_handler): Mark parameter with ATTRIBUTE_UNUSED.
+ Change many counter and index variables to be of unsigned type.
+ (dd_copy): Add new unsigned variable, n_bytes_read, in place of
+ many uses of `nread'.
+
+ * src/sys2.h (__attribute__): Define.
+ (ATTRIBUTE_NORETURN): Remove #else clause.
+ (ATTRIBUTE_UNUSED): Define.
+
+1999-09-17 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (AC_REPLACE_FUNCS): Remove strdup, now that this
+ is done in m4/jm-macros.m4.
+
+1999-09-09 Jim Meyering <meyering@ascend.com>
+
+ * src/touch.c (usage): Remove misleading sentence in --help output.
+ From Karl Heuer.
+
+ * src/Makefile.am (EXTRAdir): Remove unused variable.
+
+1999-09-03 Paul Eggert <eggert@twinsun.com>
+
+ * lib/lchown.h (ENOSYS): Don't use ENOMSG; it's not in NeXTStep3.3.
+ Use EINVAL instead.
+
+1999-09-01 Jim Meyering <meyering@ascend.com>
+
+ * src/cp.c: Remove declaration of xstrdup.
+ * src/df.c: Likewise.
+ * src/ls.c: Likewise.
+
+1999-09-01 Akim Demaille <akim@epita.fr>
+
+ * lib/xmalloc.c (xalloc_fail_func): Use `PARAMS'.
+ * lib/xalloc.h (xalloc_fail_func): Likewise.
+ (xstrdup): Add protoype.
+
+ * lib/version-etc.c (version_etc_copyright): Default copyright string.
+ (version_etc): Use it.
+ * lib/version-etc.h: Declare it.
+
+1999-08-29 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (AC_YACC): Remove use, now that we require bison.
+
+ * src/dircolors.hin: Add .rpm, .png, and .fli.
+ From Andres Soolo.
+
+1999-08-28 Paul Eggert <eggert@twinsun.com>
+
+ * getdate.y: Add copyright notice.
+
+ (number): Handle `Nov 11 1996' example; see Risks Digest 20.55
+ http://catless.ncl.ac.uk/Risks/20.55.html#subj18
+ (1999-08-27)
+
+ (<stdio.h>): Include only if testing.
+ (ISUPPER): Remove.
+ (ISLOWER, PC): New macros.
+ (<string.h>): Include if HAVE_STRING_H, not USG.
+ (bcopy): Remove.
+ (yymaxdepth, ..., yycheck): Don't bother to redefine, since we assume
+ bison.
+ (EPOCH_YEAR): Renamed from EPOCH.
+ (table): Renamed from TABLE.
+ (meridian): Now an anonymous enum.
+ (struct parser_control): New type.
+ (YYLEX_PARAM, YYPARSE_PARAM, YYSTYPE): New macros.
+ (yyInput, ..., yyRelYear): Migrated into struct parser_control.
+ (%pure_parser): Added, so that the parser is pure.
+ (%union): Removed; the type is now just plain int.
+ All %type directives removed.
+ (tLOCAL_ZONE): New %token.
+ (month_day_table): Renamed from MonthDayTable.
+ (gmtime, localtime, mktime, time): Declare only if not defined.
+ (meridian_table): New table.
+ (dst_table): New table.
+ (units_table): renamed from UnitsTable.
+ (relative_time_table): Renamed from OtherTable.
+ (time_zone_table): Renamed from TimezoneTable. Modernized data.
+ (military_table): Renamed from MilitaryTable.
+ (to_hour): Renamed from ToHour.
+ (to_year): Renamed from ToYear.
+ (lookup_zone): New function.
+ (LookupWord): Renamed from lookup_word.
+ Use lookup_zone for time zones.
+ (yylex): Now reentrant. All callers changed.
+ (get_date): Add support for local time zone abbreviations.
+ Make it reentrant.
+
+1999-08-22 Jim Meyering <meyering@ascend.com>
+
+ * src/sys2.h (IF_LINT): Define new macro.
+ * src/df.c (main): Rename locals i and j.
+ Use IF_LINT macro instead of #ifdef lint...
+
+ * src/dd.c (parse_integer): Add `const' to char* parameter and
+ add a separate `suffix' variable.
+
+1999-08-20 Jim Meyering <meyering@ascend.com>
+
+ * src/chown.c (usage): Tweak --help output to make it more consistent
+ with that of chgrp.
+ * src/chgrp.c (usage): Tweak --help output to make it more consistent
+ with that of chown.
+
+1999-08-17 Jim Meyering <meyering@ascend.com>
+
+ * configure.in: Remove check for rename and the code that would
+ enable building of the `mvdir' program.
+ * src/Makefile.am (libexec_PROGRAMS): Remove reference to @MVDIR@.
+ (EXTRA_PROGRAMS): Remove obsolete mvdir.
+ * lib/rename.c: Remove obsolete file. (it had a bug, too)
+ * src/mvdir.c: Remove obsolete file.
+ * po/POTFILES.in: Remove mvdir.c
+
+ * doc/fileutils.texi (chown, chgrp invocation): Make these sections
+ consistent with each other.
+
+1999-08-16 Jim Meyering <meyering@ascend.com>
+
+ * src/chown.c (groupname): Declare to be `const'.
+ (change_dir_owner): Declare statp parameter to be `const'.
+ (usage): Make the output be more consistent with that from chgrp.
+
+ This change is nearly identical to the chown.c change of 1998-05-24
+ * src/chgrp.c: Accept new option, --dereference.
+ --no-dereference is now the default. Include lchown.h.
+ (enum Change_status) [CH_NOT_APPLIED]: New member.
+ (change_symlinks): Enable this by default, now.
+ (describe_change): Handle new case.
+ (change_file_group): Add new parameter: cmdline_arg. Update callers.
+ Reorganize to reflect changed semantics.
+ (LCHOWN): Remove definitions.
+ From Bruno Haible.
+
+1999-08-10 Jim Meyering <meyering@ascend.com>
+
+ * po/POTFILES.in: Add lib/quotearg.c.
+
+1999-08-09 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS, doc/fileutils.texi, src/ls.c (usage):
+ Add ls --quoting-style=locale.
+
+ * lib/argmatch.c (ARGMATCH_QUOTING_STYLE):
+ Change from escape_quoting_style to locale_quoting_style.
+ (argmatch_invalid): Use new quotearg_style primitive for simplicity.
+ Also, use ARGMATCH_QUOTING_STYLE to quote, instead of quoting ourselves.
+
+ * lib/quotearg.h (locale_quoting_style): New enum value.
+ (quotearg_n_style, quotearg_style): New decls.
+
+ * lib/quotearg.c: Include <libintl.h> if ENABLE_NLS.
+ (_): New macro.
+ (quoting_style_args, quoting_style_v, quotearg_buffer): Add support
+ for locale_quoting_style, using _("`") and _("'") for open and close
+ quote symbols.
+ Do not quote spaces in escape_quoting_style.
+ (quotearg_n_style, quotearg_style): New functions.
+
+1999-08-08 Jim Meyering <meyering@ascend.com>
+
+ * src/touch.c (usage): Clarify description of --time=WORD.
+ From Karl Berry.
+
+ * lib/savedir.c (savedir): Change type of name_size parameter to off_t.
+ * lib/savedir.h (savedir): Update prototype.
+ * src/chmod.c (change_dir_mode): Remove cast of savedir arg.
+ * src/chown.c (change_dir_owner): Likewise.
+ * src/chgrp.c (change_dir_group): Likewise.
+ * src/copy.c (copy_dir): Likewise.
+ * src/du.c (count_entry): Likewise.
+ Suggestion from Bob Proulx.
+
+1999-08-07 Jim Meyering <meyering@ascend.com>
+
+ * po/POTFILES.in: Add lots of lib/*.c files.
+ Remove src/cp-hash.c, since it doesn't use _().
+
+1999-08-04 Jim Meyering <meyering@ascend.com>
+
+ * configure.in: Remove getline-testing code. Now it's in m4/.
+
+1999-08-01 Paul Eggert <eggert@twinsun.com>
+
+ * configure.in (AC_SYS_LARGEFILE): Renamed from AC_LFS.
+
+1999-07-30 Jim Meyering <meyering@ascend.com>
+
+ * src/ls.c (usage): Explain about default wrt --hide-control-chars and
+ --show-control-chars. Reported by Germano Leichsenring.
+
+1999-07-28 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (ALL_LINGUAS): Add Brazilian Portuguese (pt_BR).
+
+1999-07-24 Jim Meyering <meyering@ascend.com>
+
+ * src/dd.c (PTR_ALIGN, ROUND_UP_OFFSET): New macros.
+ (dd_copy): Use those to page-align both the input and output buffers.
+
+1999-06-01 Volker Borchert <bt@teknon.de>
+
+ * tests/Makefile.am: Make envvar-check depend on check-recursive rather
+ than on `check' so that its tests are performed before any real tests.
+
+1999-07-15 Jim Meyering <meyering@ascend.com>
+
+ * src/dd.c: Include getpagesize.h.
+ (dd_copy): Page-align the input buffer.
+ Based on a patch from Scott Lurndal.
+
+ * getpagesize.h: New file.
+ * lib/Makefile.am (noinst_HEADERS): Add getpagesize.h.
+
+ * lib/fsusage.c (get_fs_usage) [STATFS_TRUNCATES_BLOCK_COUNTS]:
+ Work around SunOS botch also when block size is different from 1k.
+ From Jürgen Fluk.
+
+1999-07-10 Jim Meyering <meyering@ascend.com>
+
+ * man/help2man: Import version 1.012.
+
+1999-07-04 Jim Meyering <meyering@ascend.com>
+
+ * lib/xstrtol.c [!defined strtoumax]: Declare strtoumax.
+
+1999-07-04 Paul Eggert <eggert@twinsun.com>
+
+ * lib/xstrtol.c (__strtol): Remove decl; it doesn't work if __strtol
+ expands to a macro, which occurs in HP-UX 10.20 with strtoumax.
+ (strtol, strtoul): New decls (for pre-ANSI hosts), to replace
+ the above decl.
+
+1999-06-27 Paul Eggert <eggert@twinsun.com>
+
+ Fix some incompatibilities between `df -P' and POSIX.2.
+
+ * lib/human.h (enum human_inexact_style): New enum.
+ (human_readable_inexact): New decl.
+
+ * lib/human.c (human_readable): New function.
+ (human_readable_inexact): Renamed from human_readable, with new arg
+ INEXACT_STYLE. Add support for ceiling and floor.
+
+ * src/df.c (print_header): Conform to POSIX if posix_format).
+ (df_readable): Take ceiling if posix_format.
+ (ceil_percent): New function.
+ (show_dev): Take ceiling of percent if posix_format.
+ Align with POSIX-conforming header if posix_format.
+
+ * doc/fileutils.texi: Document these changes.
+
+1999-05-27 Volker Borchert <bt@teknon.de>
+
+ * tests/Makefile.am: Qualify .env-warn with $(srcdir)/ prefix.
+
+1999-05-23 Jim Meyering <meyering@ascend.com>
+
+ * src/copy.c (copy_internal): Don't apply the umask in move_mode.
+ Otherwise, `mv' would not preserve the permissions when copying
+ between partitions. Reported by David Godfrey
+
+ * Version 4.0i.
+
+ * tests/cp/same-file: Correct erroneous expected output from
+ the `cp -f foo foo' tests.
+ * po/POTFILES.in: Add same.c.
+ * lib/same.h: New file.
+ * lib/same.c: New file (function extracted from ln.c).
+ * lib/Makefile.am (libfu_a_SOURCES): Add same.c.
+ (noinst_HEADERS): Add same.h.
+ * src/copy.c: Include same.h.
+ * src/ln.c (same_name): Remove function.
+ <same.h>: Include this instead.
+ <dirname.h>: No longer include this.
+ * tests/mv/force: Be sure we still allow `mv -f FILE LINK-TO-FILE'.
+
+ * src/copy.c (copy_internal): Make it so `cp/mv -f FILE FILE' does not
+ remove FILE. Suggestion from Chris Yeo.
+ * tests/mv/force: New test, for the above fix.
+ * tests/mv/Makefile.am (TESTS): Add force.
+ (TESTS_ENVIRONMENT): Change PATH to be absolute.
+
+ * tests/mv/force (mv): New test.
+
+1999-05-17 Paul Eggert <eggert@twinsun.com>
+
+ * lib/getdate.y (get_date): Let mktime deduce tm_isdst if we
+ have an absolute timestamp, or if the relative timestamp
+ mentions days, months, or years. Reported by Volker Borchert.
+
+ * lib/human.c (human_readable): Allow from_block_size to be zero.
+
+1999-05-14 Jim Meyering <meyering@ascend.com>
+
+ * tests/Makefile.am (envvar-check): Renamed from check-local.
+ (check): Depend on envvar-check so the envvar check is performed
+ before all other tests. Reported by Volker Borchert.
+ * tests/.env-warn: Use `%%' place-holder that Makefile.am rule expects,
+ so CDPATH is mentioned in the message. Reported by Volker Borchert.
+
+ * src/df.c (main): When asking for info on an explicit file name,
+ just warn rather than failing if the table of mounted filesystems
+ cannot be read. Based on a patch from Mark Kettenis.
+
+ * lib/version-etc.c (version_etc): Put version info and author names
+ on the first two lines respectively rather than putting the three
+ lines of copyright info between them.
+
+ * src/touch.c (open_maybe_create): Handle Solaris' failure mode when
+ FILE is a directory. Reported by Vin Shelton.
+
+ * lib/human.c: Include <string.h> or <strings.h> for strlen prototype.
+ * lib/getline.h [__GLIBC__ >= 2]: #if-out prototypes.
+ * src/remove.c (pop_dir): Cast length to `int' to avoid a warning on
+ 64-bit systems. From Ulrich Drepper.
+
+1999-05-12 Jim Meyering <meyering@ascend.com>
+
+ * src/shred.c (main): Put `u' for -u in getopt_long's string argument.
+ Remove the `R'.
+
+1999-05-07 Jim Meyering <meyering@ascend.com>
+
+ * Version 4.0h.
+
+ * tests/touch/dir-1: New test.
+ * tests/touch/Makefile.am (TESTS_ENVIRONMENT): Remove individual
+ upper-case program names. Add a definition of PATH.
+ (TESTS): Add dir-1.
+
+ * src/mkdir.c (main): Use better wording in diagnostic: `cannot
+ create directory' rather than `cannot make directory'. The former
+ also matches the one in makepath.c.
+
+ * src/dd.c (apply_translations): Use TOUPPER and TOLOWER,
+ not toupper and tolower.
+
+1999-05-05 Jim Meyering <meyering@ascend.com>
+
+ * lib/makepath.c (make_dir): When reporting a mkdir failure and the
+ target cannot be `stat'ed, use the errno from the failed mkdir call,
+ not the one from the stat call. Before this change, running
+ `mkdir -p /no-dir/no-dir' as an unprivileged user would wrongly
+ elicit `No such file or directory' instead of `Permission denied'.
+
+ * lib/strtol.c (TYPE_SIGNED, TYPE_MAXIMUM, TYPE_MINIMUM): Define.
+ (ULONG_LONG_MAX, LONG_LONG_MAX, LONG_LONG_MIN): Define if not defined.
+ Based on a patch from Kaveh Ghazi.
+
+ * src/ls.c (USE_ACL): Define this only #if
+ (HAVE_SYS_ACL_H && HAVE_ACL && defined GETACLCNT).
+ Use `USE_ACL' in place of `HAVE_ACL' everywhere else. From Kaveh Ghazi.
+
+1999-05-04 Jim Meyering <meyering@ascend.com>
+
+ * lib/makepath.c: Include makepath.h libintl.h, not after it.
+ Otherwise, we'd get the wrong definition of PARAMS from libintl.h.
+ (The method of defining PARAMS in libintl.h doesn't check PROTOTYPES,
+ which is necessary on Irix4 since cc doesn't define __STDC__.)
+ From Kaveh Ghazi.
+
+1999-04-30 Jim Meyering <meyering@ascend.com>
+
+ * Makefile.maint: Define several tag-related make variables.
+ (cvs-dist): Use the make variables instead of shell ones.
+ (announcement): Automatically generate diffs for all ChangeLog files,
+ not just the top level one.
+
+1999-04-30 Paul Eggert <eggert@twinsun.com>
+
+ * lib/dup2.c: New file.
+
+1999-04-30 Jim Meyering <meyering@ascend.com>
+
+ * src/touch.c (touch): Only do the fstat if we need to.
+ Resort to calling stat for directories, but only when necessary.
+ (usage): Mention --no-create.
+
+ * src/copy.c (copy_internal): Move the one-file-system test so that
+ it follows the `if (new_dst || !S_ISDIR (dst_sb.st_mode))' block.
+ Prior to this change, `cp --one-file-system' would traverse a file-
+ system boundary if the destination directory existed. From Ton Hospel.
+
+1999-04-27 Paul Eggert <eggert@twinsun.com>
+
+ * src/dd.c: Always use STDIN_FILENO for input and STDOUT_FILENO
+ for output, to avoid confusion with closed input and output fds.
+ (input_fd, output_fd): Remove; all uses changed to STDIN_FILENO
+ and STDOUT_FILENO.
+ (open_fd): New function.
+ (main): Use it, instead of open, to ensure that file descriptors
+ don't get confused.
+
+1999-04-26 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls.c (decode_switches): Use STDIN_FILENO, STDOUT_FILENO instead
+ of 0, 1.
+
+ * src/dd.c (skip): Don't fstat the input file; the result is
+ no longer used.
+
+1999-04-26 Jim Meyering <meyering@ascend.com>
+
+ * tests/mv/into-self-2: Update to reflect this change by reversing
+ the order of arguments so the symlink is the source, not the
+ destination (otherwise, the mv command would now succeed).
+
+ * src/copy.c (copy_internal): Don't make `mv foo symlink-to-foo' fail.
+ That is, even though source and destination are `the same,' don't fail
+ if the destination is a symlink. From Peter Samuelson.
+
+1999-04-26 Paul Eggert <eggert@twinsun.com>
+
+ * src/dd.c (main): If you can't open an output file (with
+ seek=...) read-write, then open it for write and report an
+ error if we can't seek.
+
+ * lib/filemode.c (setst, ftypelet, mode_string):
+ * lib/mkdir.c (mkdir):
+ * lib/makepath.c (make_path):
+ * lib/modechange.c (make_node_op_equals, mode_compile,
+ mode_create_from_ref, mode_adjust):
+ * lib/modechange.h (mode_adjust):
+ * src/chmod.c (describe_change, change_file_mode):
+ * src/copy.c (copy_reg, copy_internal):
+ * src/copy.h (struct cp_options.umask_kill):
+ * src/cp.c (do_copy, cp_option_init, main):
+ * src/dd.c (main):
+ * src/install.c (mode, cp_option_init, DIR_MODE):
+ * src/mkdir.c (main):
+ * src/mkfifo.c (main):
+ * src/mknod.c (main):
+ * src/mv.c (cp_option_init):
+ * src/touch.c (open_maybe_create):
+ Use proper mode_t types and macros.
+ Don't assume the traditional Unix values for mode bits.
+
+ * lib/filemode.c (S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH,
+ S_IXOTH): Define if not defined.
+ (rwx): Remove.
+ * lib/mkdir.c (S_IRWXU, S_IRWXG, S_IRWXO): Define if not defined.
+ * lib/makepath.c (S_ISUID, S_ISGID, S_ISVTX, S_IRUSR, S_IRWXU):
+ Define if not defined.
+ * src/system.h (S_ISUID, S_ISGID, S_ISVTX, S_IRWXU, S_IRWXG, S_IRWXO):
+ Define if not defined.
+ (CHMOD_MODE_BITS): New macro.
+ * src/install.c (isodigit): Remove unused macro.
+
+ * src/mkfifo.c, src/mknod.c (usage):
+ Use symbolic mode as default, not octal.
+
+ * lib/utime.c (utime_null):
+ Don't pass 0666 to open; it's not needed and isn't
+ guaranteed to be portable.
+
+ * lib/filemode.h: <config.h>, <sys/types.h>: Include for mode_t.
+ (mode_string): Now takes mode_t.
+
+ * lib/modechange.h: Include <config.h>, <sys/types.h> for mode_t.
+ (struct mode_change): Members affected and value are now mode_t instead
+ of unsigned short.
+
+ * doc/fileutils.texi, doc/perm.texi:
+ Don't assume traditional Unix mode numbering.
+
+ * lib/modechange.c: modechange.h now includes sys/types.h.
+ Include xstrtol.h.
+ (isodigit, oatoi): Remove.
+ (S_ISUID, S_ISGID, S_ISVTX, S_IRUSR, S_IWUSR, S_IXUSR, S_IRGRP,
+ S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH, S_IXOTH, S_IRWXU, S_IRWXG,
+ S_IRWXO): Define if not defined.
+ (CHMOD_MODE_BITS): New macro.
+ (mode_compile): Convert from octal with xstrtoul, not our own routine.
+
+1999-04-24 Jim Meyering <meyering@ascend.com>
+
+ * Version 4.0g.
+
+1999-04-22 Jim Meyering <meyering@ascend.com>
+
+ * src/shred.c (word32): Don't use `#error'; it runs afoul of
+ SunOS 4.1.4 cc. From Paul Eggert.
+
+ * lib/strtoull.c: Guard strong_alias and weak_alias with #ifdef _LIBC.
+
+1999-04-20 Paul Eggert <eggert@twinsun.com>
+
+ Replace our temporary hack implementation of strtoumax with
+ something very close to the real code in glibc.
+
+ * lib/xstrtoumax.c: Remove the temporary strtoumax replacement;
+ we now have a true replacement in strtoumax.c.
+ (__strtol): Always define to strtoumax.
+ (<stdlib.h>): No need to include.
+ (PARAMS): Remove.
+ (my_strtoumax): Move this to strtoumax.c,
+ rename it to strtoumax, and simplify.
+
+ * lib/strtoull.c, lib/strtoumax.c: New files.
+
+ * lib/strtol.c: Update to glibc 2.1.1 version.
+
+1999-04-20 Jim Meyering <meyering@ascend.com>
+
+ * tests/Makefile.am (EXTRA_DIST): s/posix-warn/env-warn/.
+ (check-local): Also test and warn if CDPATH is set.
+
+1999-04-20 Paul Eggert <eggert@twinsun.com>
+
+ * configure.in (AC_CANONICAL_HOST): Add; needed for new AC_LFS's
+ cross-compilation.
+ * config.guess: New file (from autoconf).
+ * config.sub: New file (from autoconf).
+
+ * src/shred.c <config.h>: Include first, since it can do
+ things like #define const, and this must be done before
+ including any system headers.
+
+ * lib/xstrtoumax.c (my_strtoumax): Fix typo in computing
+ whether overflow occurred. Improve overflow-detection to use
+ only one conditional branch total, rather than 2N+1
+ conditional branches for an N-digit number.
+
+1999-04-18 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (AC_CHECK_FUNCS): Remove strtoull, strtoumax, and
+ strtouq, now that they're checked in m4/xstrtoumax.m4.
+
+1999-04-18 Paul Eggert <eggert@twinsun.com>
+
+ * doc/fileutils.texi, src/shred.c (main, longopts):
+ Use -u instead of -R for --remove, so that we can preserve
+ future compatibility with rm.
+
+1999-04-18 Jim Meyering <meyering@ascend.com>
+
+ * src/shred.c [!HAVE_CONFIG_H] (ST_BLKSIZE): Define to 65536.
+ (do_wipefd): Use ST_BLKSIZE instead of referring to the st_blksize
+ member directly.
+
+1999-04-18 Paul Eggert <eggert@twinsun.com>
+
+ Fix shred to do the right thing with off_t longer than long.
+ Merge large-integer parsing code with similar code in dd.c,
+ and put the resulting in lib/xstrtoumax.c so that other programs
+ can use it. Instead of adding a new lib/xstrtoumax.h I thought
+ it cleaner to put all the xstroto* declarations into a single
+ header, which for now is lib/xstrtol.h for lack of a better place.
+ (Mayby lib/xstdlib.h would be better? :-)
+
+ I thought of several other problems with shredding regular files;
+ shredding devices is much more reliable. So I changed the defaults
+ to be more suitable for shredding devices; this should help encourage
+ users to do the right thing.
+
+ pfstatus isn't portable to environments with varying width
+ fonts, or with internationalized environments where the byte
+ count of the message is not the same as its print width.
+ Rather than deal with this, I just simplified it to not do
+ tricks with carriage-returns and spaces. (I'm also worried
+ that vprintf may not return the right value on some hosts; I
+ vaguelly recall this being a problem.) As a result, -v and -
+ no longer conflict.
+
+ When removing a special file, try to truncate it first, but don't
+ worry if this reports an error.
+
+ Try to find the size of a non-regular file by seeking to its end.
+
+ Various porting fixes, mostly because of a port to SunOS 4.1.4 cc.
+
+ Some other minor bug fixes.
+
+ * lib/xstrtoul.h: Remove this file.
+ * lib/xstrtoumax.c: New file.
+
+ * configure.in (AC_CHECK_FUNCS): Add strtoull, strtoumax, strtouq.
+
+ * lib/xstrtoul.c (STRING_TO_UNSIGNED): Remove.
+ (__strtol, __strtol_t, __xstrtol): New macros.
+
+ * lib/xstrtol.c (__strtol, __strtol_t, __xstrtol):
+ New macros to specify the
+ underlying function, its returned type, and our function. Default to
+ values suitable for xstrtol.
+
+ Include <ctype.h>, since we use its macros.
+
+ (ULONG_MAX, LONG_MAX, ISBLANK): Remove: no longer needed.
+ (ISSPACE): New macro.
+
+ (bkm_scale, bkm_scale_by_power, __xstrtol, main): __unsigned long int
+ -> __strtol_t.
+
+ (__xstrtol): Depend on whether __strtol_t is an unsigned type, not on
+ whether STRING_TO_UNSIGNED is defined. Skip isspace chars, not
+ isblank chars, to match strtol. When returning
+ LONGINT_INVALID_SUFFIX_CHAR, store the value that we computed into
+ *val.
+
+ * lib/xstrtol.h (__xstrtol, __strtol, __unsigned): Remove macro decls.
+ <inttypes.h>: Include if HAVE_INTTYPES_H.
+ (_DECLARE_XSTRTOL): New macro.
+ (xstrtol, xstrtoul, xstrtoumax): Declare all three functions, so that
+ we need only one include file, not three.
+ (_STRTOL_ERROR): Do not undef, as this is no longer needed.
+ Reword overflow message so that it's independent of type.
+
+ * lib/Makefile.am (libfu_a_SOURCES): Add xstrtoumax.c.
+ (noinst_HEADERS): Remove xstrtoul.h.
+
+ * lib/xmalloc.c (xalloc_fail):
+ Pass xalloc_msg_memory_exhausted through gettext.
+
+ * lib/getdate.y:
+ <stdlib.h>: Include if HAVE_STDLIB_H, since bison 1.27 invokes "free".
+ (LookupWord, yylex): Don't pass negative char to ctype macros.
+
+ * doc/fileutils.texi:
+ Explain why shredding devices is more reliable, and why the
+ default options are more suitable for devices.
+
+ Remove withdrawn options -b or --no-contents, -c or --freed-contents,
+ -C or --all-contents, -k or --no-links, -l or --ordinary-links, -L or
+ --all-links.
+
+ Add -R or --remove, -s or --size.
+
+ -v can no longer be doubled.
+
+ `file system' --> `filesystem' uniformly.
+
+ * src/chgrp.c: Include xstrtol.h, not obsolete file xstrtoul.h.
+
+ * src/shred.c: Include xstrtol.h, not obsolete file xstrtoul.h.
+ "human.h", "xalloc.h": Include.
+ (attribute): Remove; no longer needed.
+ (xstrdup): New decl.
+ (STDOUT_FILENO): New macro.
+ (O_NOCTTY): Make sure it's always defined, even if HAVE_CONFIG_H.
+
+ The following changes have effect only if !HAVE_CONFIG_H.
+ <ctype.h>: New include.
+ (RETSIGTYPE): Remove bogus semicolon at end.
+ (STDOUT_FILENO, uintmax_t, human_readable, LONGEST_HUMAN_READABLE):
+ New macros.
+ (xstrtoumax): Renamed from xstrtoul, with corresponding type changes.
+ Handle suffixes like the real routine does.
+ (error): Remove bogus assignment of errno to errnum.
+ (xmalloc, xstrdup): New functions.
+
+ (O_NOCTTY): Define even if !HAVE_CONFIG_H.
+ (S_ISFIFO, S_ISSOCK): New macros, if not already defined.
+ (OUTPUT_BLOCK_SIZE): New macro.
+ (struct Options.verbose): Now a boolean, since we no longer have two
+ levels of verbosity.
+ (long_opts, usage, main): Remove -D or --device option. Invert -p or
+ --preserve option, and rename it to -R or --remove.
+ (usage): Describe G suffix.
+ (usage): "-" no longer conflicts with -v.
+ (UCHAR_MAX): Indent `#error' so that SunOS 4.1.4 cc doesn't reject it.
+ (ind): Portability fixes: return word32, not unsigned; multiply by
+ sizeof (word32) instead of shifting left by 2.
+ (isaac_refill, isaac_mix): Comment out size of array parameter, as
+ ansi2knr mishandles this.
+ (status_visible, status_pos, pfstatus, flushstatus): Remove, since
+ pfstatus isn't portable to users with varying width fonts, or
+ internationalized messages, and vfprintf is problematic. All callers
+ of pfstatus changed to use error instead; this removes incompatibility
+ of -v with -. All calls to flushstatus removed.
+ (dopass, do_wipefd): Do not translate non-English msgs with gettext.
+
+ (dopass): Cast lseek constant arguments to (off_t) for benefit
+ of pre-ANSI compilers; fix one lseek call whose args were interchanged.
+ Remove unnecessary casts to (off_t). Do not check for EIO
+ when determining file size; this was just my earlier wild guess.
+ Use human_readable to print off_t, instead of casting to unsigned long
+ (which doesn't work in Solaris 2.6, where off_t is longer than long).
+ Output human-readable sizes, instead of always using "K".
+ Check for offset overflow (it happened to me in SunOS 4.1.4).
+ (do_wipefd): Do not insist on regular files, but do check for special
+ files that cannot possibly be shredded.
+ Use xmalloc instead of malloc + check.
+ Do not inspect st_size for non-regular files.
+ Try to find the size of a non-regular file by seeking to its end.
+ Do not assume that a regular file of size-0 has unknown size.
+ Check for regular files with negative sizes,
+ and for overflow after rounding to next block.
+ Always try to truncate, even for special files, but do not report an
+ error if truncation fails on a special file.
+
+ (dopass, wipefile): Do not return 1 for special files; the caller
+ doesn't care any more.
+
+ (wipefd): Remove unnecessary (and nonportable) check for
+ whether the file descriptor is read-only. Remove
+ no-longer-needed check for `-v -'.
+
+ (incname): Return 1 for carry bit, like the documentation says.
+
+ (wipename, wipefile): Accept new argument, specifying the
+ quoted file name. All callers changed.
+
+ (wipename): Use xstrdup instead of strdup+error check.
+
+ (wipefile): Check for ENOTDIR when opening /dev/fd/NNN. Check for
+ errors in NNN more carefully. Restore errno after the check.
+ Check for errors when closing the file descriptor.
+ Use more consistent wording when unable to remove a file.
+
+ (main): Do not remove files by default.
+ Use xstrtoumax instead of xstrtoul uniformly, since xstrtoul won't
+ exist if !HAVE_CONFIG_H.
+ In diagnostics, quote invalid operands to -n and -s options.
+ Allow T, P, E, Z, and Y suffixes in -s operand.
+ flags.verbose is now a boolean, not a counter.
+ Use STDOUT_FILENO instead of 1, for clarity.
+
+ * lib/human.c:
+ Include xstrtol.h, not xstrtoul.h, since xstrtol.h now defines all the
+ xstrto... functions.
+
+ * src/dd.c: Include xstrtol.h.
+ (parse_integer): Migrate most of the work into the new xstrtoumax fn.
+
+ * lib/xstrtoumax.c: New file.
+
+1999-04-18 Jim Meyering <meyering@ascend.com>
+
+ * src/dd.c (main): Open the output file with *read* access
+ only if we might need to read to satisfy a `seek=' request.
+ From Matthias Urlichs.
+
+1999-04-10 Jim Meyering <meyering@ascend.com>
+
+ * Makefile.maint (alpha): Add trailing slash for ncftp.
+
+ * Version 4.0f.
+
+ * configure.in (AC_OUTPUT): Add tests/dd/Makefile.
+ * tests/Makefile.am (SUBDIRS): Add dd.
+ * tests/dd: New directory
+ * tests/dd/misc: New file.
+
+ `ls --color' would segfault
+ * src/ls.c: Include assert.h.
+ (color_indicator[]): Add an entry for the type, `door.'
+ (main): Assert that the lengths of the color_indicator and
+ indicator_name arrays are appropriately related.
+ Reported by John Gotts.
+
+ * src/dd.c (scanargs): Fix bug introduced with last change: now that
+ the loop is gone, manually decrement argc and increment argv.
+ Reported by Andreas Jaeger and jvogel@linkny.com.
+
+1999-04-07 Jim Meyering <meyering@ascend.com>
+
+ * lib/getdate.y (difftm): Protoize.
+
+1999-04-06 Jim Meyering <meyering@ascend.com>
+
+ * lib/strftime.c: Update from master source in libc.
+
+1999-04-04 Jim Meyering <meyering@ascend.com>
+
+ * tests/ln/misc: Comment out the test added on 1999-01-31.
+
+ * Makefile.maint (url_dir_list): Define properly.
+ (real_dir_list): Likewise.
+
+ * src/shred.c: Don't include string.h.
+ [!HAVE_CONFIG_H]: Include string.h here.
+ [!HAVE_CONFIG_H]: Hard-code RETSIGTYPE to `int'.
+ (sigill_handler): Change return type and type of local `oldhandler' to
+ RETSIGTYPE.
+ (isaac_seed_machdep): Change and type of local `oldhandler' to
+ RETSIGTYPE.
+ From Colin Plumb.
+
+ * Version 4.0e
+
+ * tests/cp/same-file: Change the sed command used to extract the
+ filename from ls -l output, to accommodate the change in format.
+
+ * src/ls.c (print_long_format): Add a space between %s and %3u. This
+ assures that even when modebuf has the trailing `+' and there are more
+ than 99 hard links to a file, the permissions string and the link count
+ will be separated.
+
+1999-04-03 Jim Meyering <meyering@ascend.com>
+
+ * src/shred.c (dopass): add curly braces to avoid warning about
+ ambiguous `else'.
+ (wipefd): Add parentheses suggested by gcc.
+ (do_wipefd): Remove declaration of unused local.
+
+1999-04-02 Colin Plumb <colin@nyx.net>
+
+ * shred.c [!HAVE_CONFIG_H] (xstrtoul, error, close_stdout): Added stubs
+ to allow standalone compilation.
+
+ (wipefile): Added support for emulating /dev/fd/# files even if
+ the OS doesn't support them. From Paul Eggert.
+
+ (main, usage): Changed --device short option to -D.
+
+ (wipefd, do_wipefd): Renamed function to do_wipefd and added
+ separate wipefd that performs sanity checks on externally-opened file
+ descriptors, such as not append-only. From Paul Eggert.
+
+ (do_wipefd, isaac_seedfd): Do not read file for any reason.
+ if the file is low-entropy, it's a security hole.
+ (wipefile) Changed to open O_WRONLY and chmod to write-only when
+ forcing.
+ (isaac_seedfd) Function deleted as unnecessary.
+ From Paul Eggert.
+
+ (dopass): Dynamically fall back to fsync() if fdatasync() fails,
+ since POSIX, in their infinitesimal wisdom, encourage implementations
+ that return constant -1, making compile-time testing useless.
+ From Paul Eggert.
+
+ (dopass): Changed to support a size of -1 to mean "unknown".
+ This entailed changing to a counting-up offset rather than couting-down
+ cursize for the central state variable. Also changed size argument to
+ be call-by-reference so that it can be passed back once known.
+ (sizer) Function deleted as unnecessary.
+ (wipefd): Changed to match. From Paul Eggert
+
+ (dopass): Try to skip over bad blocks in destination files.
+ Also added ftruncate() for more complete destruction of metadata.
+
+ (main, usage): Changed "-" to stand for standard output.
+ (wipefd): Added error message to detect conflict with -v.
+
+ (dopass): Added periodic fsync() calls to keep the pass progress
+ display in sync with reality. Hopefully they're sufficiently far spaced
+ that throughput isn't affected. It might be a good thing to do even in
+ non-verbose mode, to avoid filling up the kernel caches with dirty data.
+ Also added ftruncate() for more complete destruction of metadata.
+
+ (quotearg_colon): New function to print
+ pathological filenames properly.
+ [!HAVE_CONFIG_H] (quotearg_colon_buf) New internal helper function
+ that does most of the work.
+ (wipefd, do_wipefd, dopass) Now take a qname (pre-quoted name) argument.
+ (wipename, wipefile, main) Changed diagnostics to use quotearg_colon.
+ Error messages are also in a more uniform format.
+ From Paul Eggert.
+
+ (struct Options, main, do_wipefd): Added -s/--size=N flag.
+ (xstrtoul): Added support for valid_suffixes to help this.
+ (usage) Documented it.
+
+ (error): Changed some arguments from N_() to _(), since error()
+ does not translate its argument. I think this is a bug.
+
+ (struct Options do_wipefd, wipefd, wipefile, main): moved passes
+ argument into the Options structure as n_iterations, which is now a
+ size_t. From Paul Eggert.
+
+ (isaac_seed_start, isaac_seed_data, isaac_seed_finish): New functions
+ to manage seeding of RNG with arbitrary-sized data.
+ (isaac_init): commented out as dead code.
+ (isaac_seed): changed to use new functions to prevent any possibility of
+ a buffer overflow.
+
+ (isaac_seed): Added support for Solaris' gethrtime()
+ configure.in: Corresponding feature test. From Paul Eggert.
+
+ (wipename): Change remove() to unlink() for speed & portability.
+ Use lstat() instead of access() to see if a filename is taken. This
+ works even on dangling symlinks and avoids the suid problems of
+ access(2). From Paul Eggert.
+
+ (isaac_seed_machdep): New function for reading cycle counters
+
+1999-04-02 Paul Eggert <eggert@shade.twinsun.com>
+
+ * configure.in (AC_CHECK_FUNCS): Add gethrtime.
+
+ * src/shred.c (isaac_seed): Don't overrun the s->mm buffer.
+ Use gethrtime if available. Don't assume that clock_gettime succeeds.
+ Put most random sources first.
+
+1999-04-02 Paul Eggert <eggert@twinsun.com>
+
+ shred: Add new options -bcCklL and fix some porting problems.
+ Remove options -dp. Do not read output files.
+
+ * src/shred.c (long_opts, usage, main, wipefile): Adjust to
+ new options.
+ ("human.h", "quotearg.h"): New includes.
+ (struct Options): New members contents, links, n_iterations.
+ Remove allow_devices, remove_file. Change n_iterations to size_t.
+ All uses changed.
+ (output_block_size): New var.
+ (usage): Declare __noreturn__ attribute.
+ (fdatasync): Define to -1 if not present, since we need to invoke both
+ fdatasync and fsync if both are present. All invokers of fdatasync
+ now try fdatasync, then fsync.
+ (MIXIN): New macro.
+ (isaac_seed): Use it to mix in values. Add uid, gid to mix.
+ Don't use gettimeofday, as it has too many porting problems.
+ (isaac_seedfd): Remove, since we no longer read the output files.
+ (sizefd): Remove; we now determine size by writing sequentially.
+ (dopass, wipename, wipefile, main): Clean up error messages.
+ (dopass): Keep track of offset relative to start of file, not
+ end, since we may not know how large the file is. If size is
+ negative, write until we fall off the end of the file.
+ (wipefd): Do not read output file.
+ Return 0 if successful, -1 if not; do not make a special case for
+ non-regular files, since our callers have that info now.
+ (wipename): Now static. Return errno if error.
+ (main): "-" now stands for standard output.
+ Do not shred append-only standard output.
+ (wipefile): Do not grant read permission to file when wiping it.
+ Use symbolic permission (S_IWUSR), not octal.
+
+ * src/system.h (S_IWUSR): Define if not already defined.
+
+ * configure.in (AC_SEARCH_LIBS): Prefer rt to posix4, for Solaris 7.
+ (AC_CHECK_FUNCS): Remove gettimeofday.
+
+ * doc/fileutils.texi: Document recent changes.
+
+1999-04-01 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (AC_CHECK_FUNCS): Add acl.
+ (AC_CHECK_HEADERS): Add sys/acl.h.
+ * src/ls.c [HAVE_SYS_ACL_H]: Include sys/acl.h.
+ (struct fileinfo): New member `have_acl'.
+ (gobble_file): Initialize it.
+ (print_long_format): Use it.
+ Mostly from Alen Muzinic.
+
+ * src/touch.c (open_maybe_create): New function.
+ (touch): Rewrite not to use `creat' and to eliminate a race
+ condition that could make touch truncate a nonempty file.
+ Report and suggestions from Andrew Tridgell.
+
+1999-03-31 Jim Meyering <meyering@ascend.com>
+
+ * src/du.c: Remove prototypes and tsort function definitions.
+
+ * src/chown.c (main): Move the declaration of `e' into the scope
+ where it's used and make it `const'.
+
+ * src/install.c (main): Qualify a char* with the `const' keyword.
+ (install_file_in_dir): Likewise.
+ * src/ln.c (main): Likewise.
+ * src/mkdir.c (main): Likewise.
+ * src/mkfifo.c (main): Likewise.
+ * src/mknod.c (main): Likewise.
+ * src/mv.c (main): Likewise.
+ * src/touch.c (touch): Likewise.
+
+1999-03-30 Jim Meyering <meyering@ascend.com>
+
+ * src/*.c: Don't include closeout.h or version-etc.h explicitly.
+ Now, they're included via sys2.h.
+
+1999-03-29 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (GNU_PACKAGE): Remove related code -- now it's in
+ the catch-all for shared autoconf code, m4/jm-macros.m4.
+ (jm_CHECK_ALL_TYPES): Remove explicit AC_TYPE_* macros and use
+ this instead.
+
+1999-03-29 Paul Eggert <eggert@twinsun.com>
+
+ Minor lint removal in code that forks and execs.
+
+ * lib/mkdir.c (mkdir): Use pid_t instead of int; check status
+ against zero. This is to improve portability.
+ * lib/rename.c (rename): Likewise.
+ * lib/rmdir.c (rmdir): Likewise.
+
+ * lib/rename.c (rename):
+ (rename): Do not print any error messages, so that the messages
+ are internationalized properly.
+
+ * src/install.c (strip): Use standard "cannot fork" message.
+ Check for strip nonzero exit status.
+
+1999-03-28 Jim Meyering <meyering@ascend.com>
+
+ `chmod =OP' did not properly apply the umask
+ * lib/modechange.c (make_node_op_equals): New function.
+ (mode_append_entry): Likewise.
+ (mode_compile): When none of [ugoa] is specified in an `=OP' change
+ mode request, insert a `=0' entry into the linked list so that all
+ bits are cleared first. Use the new functions.
+ Reported by Andrew Dalke.
+
+ New test for the above.
+ * configure.in (AC_OUTPUT): Add tests/chmod/Makefile.
+ * tests/Makefile.am (SUBDIRS): Add chmod.
+ * tests/chmod: New directory
+ * tests/chmod/equal-x: New file.
+
+1999-03-27 Jim Meyering <meyering@ascend.com>
+
+ * lib/modechange.c (mode_compile): Upon allocation failure, free
+ everything starting with the head, not the tail.
+
+ * src/install.c (strip): Use pid_t, not int. From John Bley.
+
+1999-03-26 Jim Meyering <meyering@ascend.com>
+
+ * src/dd.c (PROGRAM_NAME, AUTHORS): Define
+ (long_options): Remove unused struct.
+ (scanargs): Remove useless loop.
+ (main): Use PROGRAM_NAME and AUTHORS in call to parse_long_options.
+ * src/mvdir.c: Likewise.
+ * src/sync.c (PROGRAM_NAME, AUTHORS): Define and use.
+
+1999-03-25 Jim Meyering <meyering@ascend.com>
+
+ * lib/Makefile.am (libfu_a_SOURCES): Add version-etc.c.
+ (noinst_HEADERS): Add version-etc.h.
+
+ * lib/long-options.c (parse_long_options): Remove version-, copyright-,
+ and author-printing code. Do it via version_etc.
+
+ * lib/version-etc.c: New file.
+ * lib/version-etc.h: Prototype for same.
+
+ * src/sys2.h (GETOPT_HELP_CHAR): Define.
+ (GETOPT_VERSION_CHAR): Define.
+ (GETOPT_HELP_OPTION_DECL): Define.
+ (GETOPT_VERSION_OPTION_DECL): Define.
+ (case_GETOPT_HELP_CHAR): Define.
+ (case_GETOPT_VERSION_CHAR): Define.
+
+ * src/chgrp.c: No longer include long-options.h.
+ Include version-etc.h instead.
+ (PROGRAM_NAME, AUTHORS): Define.
+ [long_options]: Add entries for --help and --version.
+ Remove parse_long_options call.
+ (main) [getopt switch]: Add a case for each of --help and --version.
+ * src/chgrp.c: Likewise.
+ * src/chmod.c: Likewise.
+ * src/cp.c: Likewise.
+ * src/df.c: Likewise.
+ * src/dircolors.c: Likewise.
+ * src/du.c: Likewise.
+ * src/install.c: Likewise.
+ * src/ln.c: Likewise.
+ * src/ls.c: Likewise.
+ * src/mkdir.c: Likewise.
+ * src/mkfifo.c: Likewise.
+ * src/mknod.c: Likewise.
+ * src/mv.c: Likewise.
+ * src/rm.c: Likewise.
+ * src/rmdir.c: Likewise.
+ * src/shred.c: Likewise.
+ * src/touch.c: Likewise.
+
+1999-03-24 Jim Meyering <meyering@ascend.com>
+
+ * man/help2man: Import version 1.010.
+
+1999-03-22 Jim Meyering <meyering@ascend.com>
+
+ * src/chmod.c (usage): Add one-liner. Suggestion from Karl Berry.
+
+1999-03-19 Jim Meyering <meyering@ascend.com>
+
+ * src/automake-wrap: Rewrite the automake-generated rule for
+ clean-binPROGRAMS so that it removes rm even with a losing PATH on a
+ losing system (PATH with `.' before /bin on a system where you can't
+ unlink a running executable). Reported by William Bader.
+
+ * configure.in: Use jm_WINSIZE_IN_PTEM.
+ * src/ls.c [WINSIZE_IN_PTEM]: Include sys/stream.h and sys/ptem.h.
+ Required by SCO ODT 2.0 systems. Reported by William Bader.
+
+1999-03-18 Jim Meyering <meyering@ascend.com>
+
+ * src/remove.c (remove_cwd_entries): Reflect changes in hash_insert.
+ (remove_init): Call hash_initialize with one more argument.
+
+1999-03-15 Jim Meyering <meyering@ascend.com>
+
+ Revamp to allow fine-tuning to control when and by how
+ much the table grows and shrinks.
+ * lib/hash.c (next_prime): Don't assert.
+ (hash_reset_tuning): New function.
+ (check_tuning): New function.
+ (hash_initialize): Accept and use new tuning parameter.
+ (hash_rehash): Rewrite, updating for tuning.
+ (hash_insert): Honor tuning semantics.
+ (hash_delete): Likewise.
+ From François Pinard.
+
+ * lib/hash.h (struct hash_tuning): Define.
+ (struct hash_table) [tuning]: Add member.
+ (hash_initialize): Add `tuning' parameter.
+
+ * lib/hash.c (hash_insert): Remove last parameter and change semantics.
+ * lib/hash.h (hash_insert): Update prototype.
+
+ * lib/hash.c (hash_insert): Don't increment n_entries unconditionally --
+ otherwise, we'd do so even when the insertion failed.
+ From François Pinard.
+
+1999-03-07 Jim Meyering <meyering@ascend.com>
+
+ * lib/xmalloc.c (xalloc_fail): Use "%s" format so the message doesn't
+ have to be scanned for % signs. Suggestion from François Pinard.
+
+ * Makefile.maint: Add two more URLs and the loops to use them.
+
+ * lib/long-options.c (parse_long_options): Include `Copyright...' line
+ in --version output.
+ Add the `...NO warranty...' message.
+
+1999-03-03 Jim Meyering <meyering@ascend.com>
+
+ * lib/long-options.c (_): Define it.
+ (parse_long_options): Accept new parameter, authors, and print it.
+
+ * lib/long-options.h: Update prototype.
+
+ * src/chgrp.c: Include long-options.h
+ [long_options]: Remove the "help" and "version" entries.
+ (main): Use parse_long_options, including author name(s).
+ Remove the show_version and show_help blocks.
+ * src/chmod.c: Likewise.
+ * src/chown.c: Likewise.
+ * src/cp.c: Likewise.
+ * src/dd.c: Likewise.
+ * src/df.c: Likewise.
+ * src/dircolors.c: Likewise.
+ * src/du.c: Likewise.
+ * src/install.c: Likewise.
+ * src/ln.c: Likewise.
+ * src/ls.c: Likewise.
+ * src/mkdir.c: Likewise.
+ * src/mkfifo.c: Likewise.
+ * src/mknod.c: Likewise.
+ * src/mv.c: Likewise.
+ * src/mvdir.c: Likewise.
+ * src/rm.c: Likewise.
+ * src/rmdir.c: Likewise.
+ * src/shred.c: Likewise.
+ * src/sync.c: Likewise.
+ * src/touch.c: Likewise.
+
+1999-02-18 Paul Eggert <eggert@twinsun.com>
+
+ * getdate.y: <alloca.h>: Include if HAVE_ALLOCA_H, not FORCE_ALLOCA_H.
+ The FORCE_ALLOCA_H was a relic of the bad old pre-autoconf Emacs days.
+
+1999-02-17 Jim Meyering <meyering@ascend.com>
+
+ * src/shred.c (wipename): Fix string thinko. Now, shredding files
+ in subdirectories works (dir/file). From Janos Farkas.
+
+1999-02-13 Jim Meyering <meyering@ascend.com>
+
+ * src/dircolors.c (dc_parse_stream): Don't try to dereference
+ NULL if there's an error in our built-in list.
+ Suggestion from François Pinard.
+
+1999-02-13 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * src/install.c (main): Set x.backup_type only if backups are requested.
+ (cp_option_init): Initialize backup_type.
+ (backup_type): Remove unused variable.
+
+ * doc/fileutils.texi: Fix use of @item vs @itemx.
+
+1999-02-08 Jim Meyering <meyering@ascend.com>
+
+ * src/dircolors.c (slack_codes): Add "DOOR".
+ (ls_codes): Add corresponding "do".
+ Reported by John Gotts.
+
+ * configure.in (ALL_LINGUAS): Add Italian (it).
+
+1999-02-07 Jim Meyering <meyering@ascend.com>
+
+ * Version 4.0d (aka 4.1-b4).
+
+ * Makefile.maint (my-distcheck): Don't depend on dist, now that this
+ is hooked up to the distcheck rule.
+ * Makefile.am (distcheck-hook): New target and rule -- link to shared
+ rule, my-distcheck, in Makefile.maint.
+
+ * doc/fileutils.texi (shred invocation): New section. From Colin Plumb.
+
+ * configure.in (jm_FUNC_GETGROUPS): Move the test into a new file,
+ group-member.m4, and just use this new macro.
+ Use `.$ac_objext', not the literal `.o'.
+
+1999-02-02 Jim Meyering <meyering@ascend.com>
+
+ * src/ls.c (S_ISLNK, S_ISFIFO, S_ISSOCK, S_ISCHR, S_ISBLK, S_ISDOOR):
+ Define to zero if not already defined.
+ (HAVE_SYMLINKS): Define.
+ (gobble_file): Remove #ifdef.
+ (get_link_name, make_link_path): Guard these with #if HAVE_SYMLINKS
+ rather than #ifdef S_ISLNK.
+ (print_type_indicator): Remove #ifdefs and reorganize.
+ (print_color_indicator): Remove #ifdefs.
+ (length_of_file_name_and_frills): Likewise.
+
+1999-02-01 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
+
+ * src/dircolors.hin: Handle DOOR.
+
+ * src/ls.c (print_type_indicator): Print doors as '>'.
+ (length_of_file_name_and_frills): Account for this.
+ (indicator_no): Define C_DOOR.
+ (indicator_name): Add corresponding name.
+
+ * lib/filemode.c (ftypelet): Handle doors.
+
+ * lib/filemode.c, src/system.h (S_ISDOOR): Define if missing.
+
+1999-02-01 Jim Meyering <meyering@ascend.com>
+
+ * lib/strcasecmp.c (STRXCASECMP_FUNCTION): Don't increment within macro
+ argument list. From Akim Demaille.
+
+1999-01-31 Jim Meyering <meyering@ascend.com>
+
+ * doc/fileutils.texi: Wrap the @top node in @ifnottex instead of
+ @ifinfo so `makeinfo --html ...' works. From Karl Berry.
+
+ * tests/ln/misc: Add test for this.
+ * src/ln.c (do_link): Allow creation of a hard link to a dangling
+ symlink. Reported by Alexey Solovyov.
+
+ * src/copy.c (copy_internal): Describe any backup-related renaming
+ operations when in verbose mode.
+ (copy_internal): Likewise.
+ Based on changes from Marty Leisner.
+
+ * lib/lchown.c: Declare chown.
+
+1999-01-30 Jim Meyering <meyering@ascend.com>
+
+ * acconfig.h: Remove uintmax and STAT* #undefs.
+ * configure.in: Require autoconf 2.13.
+ Remove test for AFS.
+ Use 3-argument form of AC_DEFINE*.
+
+1999-01-28 Jim Meyering <meyering@ascend.com>
+
+ * po/POTFILES.in: Add src/shred.c.
+
+ * src/system.h: Use TIME_WITH_SYS_TIME-based #if test rather than
+ TM_IN_SYS_TIME based one (for shred).
+
+ * acconfig.h: Remove lots of `#undef's, now that we use the
+ 3-argument forms of AC_DEFINE* macros.
+
+1999-01-25 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (fdatasync): Use AC_CHECK_FUNCS instead of
+ AC_REPLACE_FUNCS.
+ (AC_CHECK_FUNCS): Add clock_gettime.
+
+ * src/shred.c (isaac_seed): Guard clock_gettime with test of
+ HAVE_CLOCK_GETTIME, not CLOCK_REALTIME.
+ (wipename): Rename local dirfd to dir_fd to avoid shadowing the
+ function declared in Linux's dirent.h.
+
+1999-01-25 Akim Demaille <demaille@inf.enst.fr>
+
+ * lib/argmatch.h (ARRAY_CARDINALITY): Define.
+ (ARGMATCH_ASSERT): New macro.
+
+ * lib/argmatch.c (program_name): Remove dcl.
+ Include error.h.
+ (argmatch_invalid): Use error rather than fprintf.
+
+1999-01-24 Jim Meyering <meyering@ascend.com>
+
+ * src/ansi2knr.c: Exit nonzero upon failed write to stdout.
+ New version from L. Peter Deutsch.
+
+ * lib/quotearg.c (quotearg_n_options): Revert type of parameter `n'
+ (and hence that of the local `n1', too) to `int' at Paul's request.
+
+ * lib/closeout.c: Add comments.
+
+ * src/shred.c (fdatasync): Remove function. instead, ...
+ (fdatasync) [! HAVE_FDATASYNC]: Define to fsync.
+ From Colin Plumb.
+
+1999-01-23 Jim Meyering <meyering@ascend.com>
+
+ * src/Makefile.am (bin_PROGRAMS): Add shred.
+ * src/shred.c: New file.
+ Portability tweaks.
+ Internationalize.
+ (wipename): Print the `FILE: deleted' and `FILE: deleting' messages
+ only when in verbose mode.
+ (fdatasync) [! HAVE_FDATASYNC]: New function.
+
+ * man/Makefile.am (man_MANS): Add shred.1.
+ * man/Makefile.summ (shred-summary): Define.
+ * man/shred.x: New file.
+
+ * src/shred.c: New file. From Colin Plumb.
+ Include config.h, getopt.h, system.h and error.h.
+ Use #else/#if, not #elif.
+
+1998-11-05 Paul Eggert <eggert@twinsun.com>
+
+ * lib/mktime.c (__mktime_internal): Adopt the traditional (and
+ problematic) notion of what to do when tm_isdst doesn't match.
+
+1999-01-17 Jim Meyering <meyering@ascend.com>
+
+ * tests/cp/Makefile.am (TESTS_ENVIRONMENT): Set PATH here, rather
+ than setting RM and CP.
+ * tests/cp/*: Now that PATH is set properly, use rm and cp rather
+ than $RM and $CP.
+
+ * tests/ln/Makefile.am (TESTS): Add backup-1.
+ (TESTS_ENVIRONMENT): Set PATH here, rather than setting LN.
+ * tests/ln/*: Now that PATH is set properly, use ln rather than $LN.
+ * tests/ln/backup-1: New test for this.
+ * src/ln.c (do_link): Try to remove DEST even after renaming it.
+ This fixes a bug reported by Jamie Lokier.
+
+ * src/ln.c (same_name): Use SAME_INODE rather than open coding it.
+
+1999-01-16 Jim Meyering <meyering@ascend.com>
+
+ * lib/argmatch.c (ARGMATCH_DIE_DECL): Use it.
+
+ * acconfig.h: Remove @BOTTOM@ section.
+ Instead, add the define and decl via m4/jm-macros.m4.
+
+ * src/ls.c: Don't declare base_name.
+ Use function-style XARGMATCH once again.
+ * src/touch.c: Likewise.
+ * acconfig.h: Add a @BOTTOM@ section.
+ (ARGMATCH_DIE) [@BOTTOM@]: Define to usage(1).
+ Declare usage.
+ From Akim Demaille.
+
+ * src/cp.c: Remove declarations of base_name and get_version.
+ (main): Don't call getenv ("VERSION_CONTROL"); xget_version does it.
+ Use xget_version and function-style XARGMATCH.
+ * src/mv.c (main): Likewise.
+ * src/ln.c (main): Likewise.
+ * src/install.c (main): Likewise.
+ * lib/quotearg.c (quotearg_n_options): Declare n1 to be of type
+ unsigned int, not just int.
+ * lib/backupfile.h (get_version): Adjust prototype.
+ (xget_version): Add prototype.
+ (base_name): Remove prototype.
+ * lib/backupfile.c [!HAVE_DECL_GETENV]: Declare getenv.
+ (backup_args): Reorder enum members.
+ (backup_types): Likewise.
+ (get_version): Take an additional parameter, `context'.
+ (xget_version): Like get_version, but if the `version' argument is NULL,
+ use the value of the envvar VERSION_CONTROL.
+ (base_name): Declare.
+ Mostly from Akim Demaille.
+
+ * lib/addext.c (base_name): Declare.
+ * src/sys2.h: Add prototype for base_name.
+
+ * lib/argmatch.c: s/argmatch_exit_failure/argmatch_die/
+ * lib/argmatch.h: Likewise.
+
+ * lib/argmatch.h (XARGMATCH): Define to return a value once again.
+ (XARGCASEMATCH): Likewise.
+
+ * lib/argmatch.c (EXIT_FAILURE): Define.
+ (ARGMATCH_DIE): Provide default.
+ (__xargmatch_internal): New function.
+ s/rogram_name/program_name.
+ From Akim Demaille.
+
+1999-01-14 Akim Demaille <demaille@inf.enst.fr>
+
+ * src/touch.c (usage): Don't make it static so that it can be
+ called from libfu.a by xargmatch.
+ * src/chgrp.c (usage): Likewise
+ * src/chmod.c (usage): Likewise
+ * src/chown.c (usage): Likewise
+ * src/cp.c (usage): Likewise
+ * src/dd.c (usage): Likewise
+ * src/df.c (usage): Likewise
+ * src/dircolors.c (usage): Likewise
+ * src/du.c (usage): Likewise
+ * src/install.c (usage): Likewise
+ * src/ln.c (usage): Likewise
+ * src/ls.c (usage): Likewise
+ * src/mkdir.c (usage): Likewise
+ * src/mkfifo.c (usage): Likewise
+ * src/mknod.c (usage): Likewise
+ * src/mv.c (usage): Likewise
+ * src/mvdir.c (usage): Likewise
+ * src/rm.c (usage): Likewise
+ * src/rmdir.c (usage): Likewise
+ * src/sync.c (usage): Likewise
+
+1999-01-12 Akim Demaille <demaille@inf.enst.fr>
+
+ * lib/backupfile.c (get_version): added the parameters KIND.
+ (xget_version): like get_version, but if argument is NULL, honor
+ the envvar VERSION_CONTROL.
+ * src/cp.c: Remove declarations of base_name and get_version.
+ (main): Use xget_version.
+ * src/mv.c (main): Likewise.
+ * src/ln.c (main): Likewise.
+ * src/install.c (main): Likewise.
+
+1999-01-12 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (ALL_LINGUAS): Add Greek (el).
+ * po/el.po: New file.
+
+ * install-sh: New version from autoconf.
+ * missing: New version from automake.
+ * src/ansi2knr.c: Likewise.
+ * lib/getopt.c: New version from glibc.
+ * lib/getopt.h: Likewise.
+ * lib/getopt1.c: Likewise.
+ * lib/regex.c: Likewise.
+ * lib/regex.h: Likewise.
+ * lib/ylwrap: Remove unused file.
+
+1999-01-10 Jim Meyering <meyering@ascend.com>
+
+ * Version 4.0c (aka 4.1-b3).
+
+ * Upgrade to autoconf-2.13 and automake-1.3b.
+
+ * src/copy.c (copy_internal): Handle two more values of errno from
+ failed rename of a directory into a subdirectory of itself.
+ Thanks to Volker Borchert for testing many types and combinations
+ of systems.
+
+ * lib/argmatch.c (ARGMATCH_QUOTING_STYLE): Change from c_quoting_style
+ to escape_quoting_style.
+ (argmatch_invalid): Now that the quoted quantity is no longer double
+ quoted, remove the code that removed leading and trailing double quotes.
+
+ * src/ls.c (decode_switches): Now that escape_quoting_style no longer
+ escapes the SPACE character, arrange for SPACEs to be quoted here.
+ * lib/quotearg.c (quotearg_buffer): Change escape_quoting_style so that
+ it no longer escapes ` '.
+ Suggestion from Paul Eggert.
+
+1999-01-05 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (space): Add `for' in message of statvfs check.
+ From Ulrich Drepper.
+
+1999-01-04 Jim Meyering <meyering@ascend.com>
+
+ * Version 4.1-b2.
+
+1999-01-02 Jim Meyering <meyering@ascend.com>
+
+ * lib/argmatch.c (argmatch_invalid): Remove double quotes from the
+ offending quoted argument before using it in explanatory diagnostic.
+ Use a single fprintf stmt.
+
+ * lib/argmatch.h (XARGMATCH): Don't return a value; instead,
+ modify a parameter. Add a `Die_stmt' parameter.
+ Add parentheses.
+ * lib/argmatch.c (__xargmatch_internal): Remove now-unused function.
+ (argmatch_to_argument): Add `const' attribute to first parameter.
+
+ * configure.in (AC_REPLACE_FUNCS): Remove strcasecmp (now it's
+ done in m4/jm-macros.m4).
+
+ * lib/backupfile.c (get_version): Adapt to use new interface to
+ XARGMATCH.
+ * src/cp.c: Likewise.
+ * src/ls.c: Likewise.
+ * src/touch.c: Likewise.
+
+1999-01-01 Jim Meyering <meyering@ascend.com>
+
+ * lib/makepath.c (make_dir): New function, factored out of make_path.
+ (make_path): Use make_dir rather than open-coding it twice.
+ This effectively reverses the order of the latter pair of stat/mkdir
+ calls and fixes a race condition bug whereby one of two concurrent
+ `mkdir -p' processes could fail with EEXIST.
+ Include locale.h and libintl.h, and define `_()'.
+ Mark translatable strings.
+
+ * lib/xmalloc.c: Add comments.
+ (xcalloc, xmalloc, xrealloc): Remove prototypes.
+ (xcalloc): Remove `#ifdef NOT_USED' that used to hide this function.
+ * lib/xalloc.h: Add comments.
+ (PARAMS, XMALLOC, XCALLOC, XREALLOC): Define.
+ (xcalloc, xmalloc, xrealloc): Add prototypes here.
+ Based on changes from Akim Demaille.
+
+ * lib/quotearg.c (quotearg_buffer): Cast -1 to size_t before comparing.
+ (quotearg_n): Change type of 1st parameter from int to unsigned int.
+ (quotearg_n_options): Likewise.
+ * lib/quotearg.h (quoting_style_vals): New public array.
+ From Akim Demaille.
+ (quotearg_n_options): Declare `options' parameter to be `const'.
+
+ * lib/human.c (humblock): Use ARGMATCH in place of argmatch.
+
+ * lib/backupfile.c (get_version): Use XARGMATCH in place of
+ argmatch & co.
+
+1998-12-31 Jim Meyering <meyering@ascend.com>
+
+ * src/ls.c (indicator_style_types): New variable.
+ (format_types): Rename from `formats'.
+ (color_args): Remove unnecessary `no' string.
+ (color_types): Remove corresponding `color_never' entry.
+ (main): Use ARGMATCH_TO_ARGUMENT.
+ (decode_switches): Use ARGMATCH instead of argmatch code
+ in each of several cases.
+ From Akim Demaille.
+
+ * src/cp.c (main): Use XARGMATCH in place of argmatch & co.
+ * src/touch.c (main): Likewise.
+ * lib/backupfile.c (get_version): Likewise.
+ From Akim Demaille.
+
+ * lib/strncasecmp.c: New file.
+ * lib/strcasecmp.c: Add #ifdefs so it can be used for strncasecmp, too.
+ * lib/argmatch.c (strncasecmp): Move to a separate file.
+ Add curly braces around some one-stmt-but-multiline blocks.
+
+ * lib/argmatch.c: Improvements from Akim Demaille.
+ * lib/argmatch.h: Likewise.
+
+ * lib/addext.c (addext): Protoize.
+ Indent cpp directives to match nesting.
+
+ Fix warnings from gcc -W -Wall
+ * lib/posixtm.c (posix_time_parse): Change type of index `i' from
+ int to unsigned int.
+ * lib/getdate.y (__attribute__): Define.
+ (ATTRIBUTE_UNUSED): Define.
+ (yyerror): Mark parameter as unused with ATTRIBUTE_UNUSED.
+ (MonthDayTable): Add initializers for last entry.
+ (UnitsTable): Likewise.
+ (OtherTable): Likewise.
+ (MilitaryTable): Likewise.
+
+1998-12-22 Jim Meyering <meyering@ascend.com>
+
+ * Version 4.1-b1.
+
+ * configure.in (ALL_LINGUAS): Add chinese (zh).
+
+1998-12-19 Jim Meyering <meyering@ascend.com>
+
+ * tests/ln/misc: Use absolute path for final rm.
+
+ * Makefile.maint (my-distcheck): Run make with
+ CFLAGS='-Wformat -Werror'.
+
+1998-12-18 Jim Meyering <meyering@ascend.com>
+
+ * src/copy.c (copy_internal): Remove errnoeous `%s: ' prefix
+ from format string. From Michiel Bacchiani.
+
+ * src/chgrp.c (MAXGID): Define.
+ Use gid_t (not int) as the type for `group' variables.
+ (parse_group): Use MAXGID, not INT_MAX.
+
+ * src/install.c (UID_T_MAX, GID_T_MAX): Remove definitions.
+ * src/sys2.h (UID_T_MAX, GID_T_MAX): Define them here instead.
+
+1998-12-13 Jim Meyering <meyering@ascend.com>
+
+ * lib/Makefile.am (EXTRA_DIST): Add xstat.in.
+
+1998-12-12 Jim Meyering <meyering@ascend.com>
+
+ 1998-10-15 Akim Demaille <demaille@inf.enst.fr>
+ * src/ls.c: Group DIRED's code together.
+ (full_time, inhibit_group, col_ext_type): Declare static.
+ (dired_dump_obstack): Apply sizeof to variable, instead of its type.
+ (parse_ls_color): Rename ext2 as e2. Move into the block where it
+ is used.
+
+ 1998-10-15 Akim Demaille <demaille@inf.enst.fr>
+ * src/ls.c: In order to distinguish col(umn|or):
+ (init_column_info): Renamed from init_col_info.
+ (struct column_info): Renamed from struct col_info.
+ (struct color_ext_type): Renamed from struct col_ext_type.
+
+1998-12-11 Jim Meyering <meyering@ascend.com>
+
+ * lib/Makefile.am (lstat.c): Add rule to generate this from xstat.in.
+ (stat.c): Likewise.
+ * lib/stat.c: Remove file.
+ * lib/lstat.c: Remove file.
+ * lib/xstat.in (xstat@): New file.
+
+ * lib/quotearg.c (quotearg_buffer): Use `7' as the mask, not `3'.
+ From Bruno Haible.
+ * tests/ls-2/tests: Add a test for this.
+
+ * man/help2man: import version 1.006.
+
+1998-12-07 Jim Meyering <meyering@ascend.com>
+
+ * src/copy.c: Use dir_name, not dirname. Include dirname.h.
+ * src/cp.c: Likewise.
+ * src/df.c: Likewise.
+ * src/install.c: Likewise.
+ * src/ln.c: Likewise.
+ * src/mvdir.c: Likewise.
+
+ * lib/dirname.c (dir_name): Rename from dirname.
+ Make argument `const'. Include "dirname.h"
+ * lib/dirname.h: New file.
+ * lib/Makefile.am (noinst_HEADERS): Add dirname.h.
+
+1998-12-06 Jim Meyering <meyering@ascend.com>
+
+ * lib/rpmatch.c (rpmatch) [!ENABLE_NLS]: Hard-code tests to use
+ `^[yY]' and `^[nN]' (avoiding regex). From Karl Heuer.
+
+ * lib/*.c: Ansideclify.
+
+ Fix `ls -R .' formatting bug that broke mktexlsr.
+ * src/ls.c: Include path-concat.h.
+ (basename_is_dot_or_dotdot): New function, derived from
+ is_not_dot_or_dotdot.
+ (is_not_dot_or_dotdot): Remove function.
+ (extract_dirs_from_files): Use `!basename_is_dot_or_dotdot'
+ instead of is_not_dot_or_dotdot and use path_concat instead of attach.
+
+ * tests/ls-2/tests: New file (renamed from quoting),
+ with new test for the `ls -R .' fix.
+ * tests/ls-2/quoting: Remove file.
+ * tests/ls-2/Makefile.am (TESTS): s/quoting/tests/.
+
+1998-11-29 Jim Meyering <meyering@ascend.com>
+
+ * src/remove.c (DOT_OR_DOTDOT): Move definition from this file...
+ * src/sys2.h (DOT_OR_DOTDOT): ...to this one.
+
+ * src/dd.c (dd_copy): Rename function from `copy'.
+
+ * src/cp.c (do_copy): Rename local: s/unused/copy_into_self/.
+
+ Per Kristian Hove reported that a certain move-directory-into-self
+ wasn't properly diagnosed.
+
+ * tests/mv/into-self-3: New file.
+ * tests/mv/Makefile.am (TESTS): Add into-self-3.
+ * src/copy.c (copy_internal): Remove earlier (but less effective)
+ test for move/copy-into-self.
+ Instead, deduce the move-into-self condition from errno==EINVAL
+ after a failed rename.
+ * src/mv.c (do_move): Don't arrange to remove DEST in the
+ copied-into-self case.
+
+1998-11-15 Jim Meyering <meyering@ascend.com>
+
+ Bob McCracken reported that mv couldn't handle certain combinations
+ of hard linked source files.
+
+ * tests/mv/hard-link-1: New file.
+ * tests/mv/Makefile.am (TESTS): Add hard-link-1.
+ * src/mv.c (movefile): Don't free new_dest.
+
+ * lib/error.c (error): Don't use strerror_r's return value.
+ From Johan Danielsson.
+
+1998-11-14 Jim Meyering <meyering@ascend.com>
+
+ * Version 4.0.
+
+ * Makefile.maint (cvs-dist): Search for `$tag:' rather than just $tag
+ to avoid matching a prefix of another tag.
+
+1998-11-10 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (ALL_LINGUAS): Add Greek (el).
+ * po/el.po: New file.
+
+1998-11-07 Jim Meyering <meyering@ascend.com>
+
+ * Version 4.0-b7.
+
+ Accommodate the Hurd (defining lstat to rpl_lstat via config.h didn't
+ work on Hurd systems because of an inline definition of lstat in a
+ system header file). This also makes it so that you may run `ls '' '
+ on systems that let l?stat operate on the empty string.
+
+ * src/remove.c [HAVE_LSTAT_EMPTY_STRING_BUG]: Define lstat to rpl_lstat
+ and declare the latter.
+ * lib/stat.c [stat]: Remove #undef.
+ (rpl_stat): Protoize.
+ * lib/lstat.c [lstat]: Remove #undef.
+ (rpl_lstat): Protoize. Use ENOENT, not EINVAL, to be consistent
+ with lib/stat.c.
+ * acconfig.h: Remove #undef's for lstat and stat.
+
+1998-10-31 Jim Meyering <meyering@ascend.com>
+
+ * tests/rm/Makefile.am (TESTS): Add new test `empty-name',
+ but comment it out.
+ * tests/rm/empty-name: New file.
+
+ * acconfig.h (stat): New #undef.
+ This omission was uncovered when Mark Kettenis reported that
+ `rm -r ''' got a failed assertion on the Hurd. This change
+ doesn't fix *that* problem -- see above.
+
+1998-10-25 Jim Meyering <meyering@ascend.com>
+
+ * Version 4.0-b6.
+
+ * README: Man pages will now be supported to the extent that
+ people send patches.
+
+ * tests/rm/unreadable: Two new tests.
+ * tests/rm/Makefile.am (TESTS): Add new test `unreadable'. But comment
+ it out since we're so close to release and since the test compares the
+ text of diagnostics that are likely to vary between systems.
+ (TEST_ENVIRONMENT): Add required framework.
+
+ * src/remove.c (remove_cwd_entries): Don't apply CLOSEDIR to a NULL
+ pointer. (provoke with `mkdir -m 0100 x; rm -rf x')
+ Upon CLOSEDIR failure, set `status' to RM_ERROR, not RM_OK.
+ (remove_dir): Return `status', rather than always RM_OK.
+
+1998-10-18 Jim Meyering <meyering@ascend.com>
+
+ * Version 4.0-b5.
+
+ * lib/mktime.c: Update from libc with this additional change from Paul.
+ * lib/strftime.c: Likewise.
+
+ 1998-10-17 Paul Eggert <eggert@twinsun.com>
+
+ Don't invoke localtime_r or gmtime_r unless it's the GNU C
+ library's localtime_r and gmtime_r; there are too many buggy
+ implementations of localtime_r and gmtime_r out there, and
+ it's not worth keeping track of all the different bugs.
+
+ * mktime.c (__EXTENSIONS__, HAVE_LOCALTIME_R): Remove.
+ (my_mktime_localtime_r): Renamed from localtime_r; all uses changed.
+ Base it on localtime unless _LIBC.
+
+ * strftime.c (__EXTENSIONS__): Remove.
+ (my_strftime_gmtime_r): Renamed from gmtime_r; all uses changed.
+ (my_strftime_localtime_r): Renamed from localtime_r; all uses changed.
+ Base them on localtime/gmtime if not _LIBC.
+
+1998-10-17 Jim Meyering <meyering@ascend.com>
+
+ * Version 4.0-b4.
+
+ * lib/mktime.c: Declare localtime_r if necessary.
+ * lib/strftime.c: Likewise.
+
+ * tests/Fetish.pm (run_tests): Run $prog with --version only
+ if $verbose.
+
+1998-10-11 Jim Meyering <meyering@ascend.com>
+
+ * Version 4.0-b3.
+
+1998-10-08 Paul Eggert <eggert@twinsun.com>
+
+ * mktime.c (__mktime_internal): When the requested time falls
+ in a spring-forward gap of size DT, return a time that is DT
+ away from the requested time, preferring a time whose tm_isdst
+ differs from the requested value. Bump the max number of
+ probes from 4 to 6 to account for the extra probes needed to
+ discover a spring-forward gap in the worst case.
+
+1998-10-08 Paul Eggert <eggert@twinsun.com>
+
+ * mktime.c (my_mktime_localtime_r): Renamed from localtime_r.
+ Define also if HAVE_LOCALTIME_R && defined (localtime_r), with
+ a body that merely expands localtime_r; this works around a
+ bug in Digital Unix 4.0A and 4.0D.
+
+1998-10-05 Jim Meyering <meyering@ascend.com>
+
+ * po/Makefile.in.in (uninstall): Remove (historical?) command that
+ removed po-Makefile.in.in. From Akim Demaille.
+
+ * src/install.c (long_options): Add entry for --suffix=SUFFIX option.
+ From aldomel.
+
+1998-10-04 Jim Meyering <meyering@ascend.com>
+
+ * tests/mv/Makefile.am (TESTS_ENVIRONMENT): Define PERL.
+ From Kaveh Ghazi.
+
+1998-10-03 Jim Meyering <meyering@ascend.com>
+
+ * Version 4.0-b2.
+
+ * tests/mv/Makefile.am (TESTS_ENVIRONMENT): Add PATH.
+
+ * man/Makefile.maint ($(man_MANS)): Don't depend on actual executables.
+ Instead, depend on corresponding source file and on configure.in.
+ Based on suggestion and code from Akim Demaille.
+ Factor out irregular men into Makefile.summ.
+
+ * man/Makefile.am (EXTRA_DIST): Add Makefile.summ.
+
+ * man/Makefile.summ: New file.
+ * man/Makefile.maint: Include it.
+
+ * tests/Fetish.pm: Make `DEBUG' be a little more verbose.
+
+ * tests/mv/Makefile.am (TESTS): Add i-1.
+ * tests/mv/i-1: New test.
+
+1998-10-02 Jim Meyering <meyering@ascend.com>
+
+ * tests/ls-2/Makefile.am (EXTRA_DIST): Remove run-test.
+ * tests/ls-2/run-test: Remove file.
+ * tests/ls-2/quoting: Include /bin/sh driver framework.
+
+ * tests/dircolors/simple: Remove file.
+ * tests/dircolors/run-test: Embed it here instead.
+ * tests/dircolors/simple: Rename from run-test.
+
+1998-10-01 Jim Meyering <meyering@ascend.com>
+
+ * tests/Makefile.am (EXTRA_DIST): Remove README.
+ From Akim Demaille.
+
+1998-09-28 Jim Meyering <meyering@ascend.com>
+
+ * Version 4.0-pre1.
+
+ * Use automake-1.3b. See notes in README.
+
+ * src/copy.c (copy_internal): Do honor `n' reply in move-mode.
+ Otherwise, `touch a b; echo n|mv -i a b' would remove b.
+ From Bernd Leibing.
+
+1998-09-27 Jim Meyering <meyering@ascend.com>
+
+ * Version 3.16z.
+
+ * Makefile.maint (alpha): New target.
+ (my-distcheck): Tweak.
+
+ * lib/backupfile.h: Protect against multiple inclusion.
+ From Akim Demaille.
+
+ * configure.in: Remove use of AC_FUNC_FNMATCH and associated code.
+ Now, it is invoked through jm_MACROS.
+
+ * lib/strftime.c (my_strftime): Update from FSF.
+
+1998-09-26 Jim Meyering <meyering@ascend.com>
+
+ * src/copy.c (copy_internal): Don't preserve hard-linked directories
+ to avoid damaging the destination filesystem when copying from a
+ Netapp snapshot directory. With code from Kjetil Torgrim Hollstein
+ and Paul Eggert.
+
+1998-09-24 Jim Meyering <meyering@ascend.com>
+
+ * man/Makefile.maint ($(man_MANS)): Correct typo: s/-tmp/-t/.
+ From Akim Demaille.
+
+1998-09-21 Jim Meyering <meyering@ascend.com>
+
+ * man/Makefile.maint ($(man_MANS)): Remove `echo'.
+
+1998-09-20 Jim Meyering <meyering@ascend.com>
+
+ * Version 3.16y.
+
+ * src/install.c (install_file_to_path) [-D]: Create any leading
+ directories with permissions of 0755.
+
+1998-09-19 Jim Meyering <meyering@ascend.com>
+
+ * src/install.c (install_file_to_path): Copy the file after creating
+ any leading directories.
+ (main) [case 'v']: Set `x.verbose' to 1, not 0.
+ Reported by Marty Leisner.
+
+ * man/Makefile.am (transform): Define.
+ (man_MANS): Include ginstall.1, not install.1, to match the name
+ of the executable in ../src.
+ * man/ginstall.x: New file.
+ * man/install.x: Remove file.
+ * man/Makefile.maint (ginstall-summary): Renamed from install-summary.
+
+ * man/Makefile.am (EXTRA_DIST): Add Makefile.maint and GNUmakefile.
+ Reported by Akim Demaille.
+
+ * lib/modechange.c: Fix post-protoization typo.
+
+ * lib/posixtm.h (PARAMS): Define and use.
+ From Kaveh Ghazi.
+
+1998-09-12 Jim Meyering <meyering@ascend.com>
+
+ * Version 3.16x.
+
+ * src/remove.c (remove_cwd_entries): Declare to be static.
+
+ Automatically generate man pages from combination of --help
+ output and the contents of new, man/*.x files.
+ * man/Makefile.am (HELP2MAN): Define.
+ (man_aux): Define.
+ (EXTRA_DIST): Add $(HELP2MAN) and $(man_aux).
+ (MAINTAINERCLEANFILES): Add $(man_MANS).
+ * man/*.x: New files.
+ * man/GNUmakefile: New file.
+ * man/Makefile.maint: New file.
+ * man/help2man: New file.
+
+1998-09-09 Jim Meyering <meyering@ascend.com>
+
+ * lib/modechange.c: Protoize.
+
+1998-09-07 Jim Meyering <meyering@ascend.com>
+
+ * Version 3.16w.
+
+ * src/df.c (show_dev) [!posix_format]: When using --print-type,
+ let the device path and the file system type share a single (wider)
+ field if their combined lengths allow it. From Andries Brouwer.
+
+ * tests/touch/empty-file: Upon failure, suggest how to rerun the test
+ with longer delay, in case NFS clock skew was the cause of the failure.
+ Reported by Kaveh Ghazi.
+
+ * tests/ls-2/quoting: Add tests.
+ * tests/Fetish.pm (run_tests): Add simple PRE/POST hooks.
+ (_create_file): Don't include $$ in temp file name.
+ (run_tests): Use shorter suffixes for temp file names.
+
+1998-09-06 Jim Meyering <meyering@ascend.com>
+
+ * src/touch.c: Include posixtm.h.
+ (usage): Correct the description of the format of the
+ date string argument to -t option.
+ (main): Update to use rewritten posixtime function.
+ Reported by Andries Brouwer.
+
+ * lib/Makefile.am (libfu_a_SOURCES): Change posixtm.y to posixtm.c.
+ (noinst_HEADERS): Add posixtm.h.
+
+ * lib/posixtm.h: New file.
+ * lib/posixtm.c: New file. Rewritten based on posixtm.y.
+ * lib/posixtm.y: Remove file.
+
+1998-09-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * src/ls.c (print_dir_name): Put back.
+ (print_dir): Also print directory name header if print_dir_name is
+ true.
+
+1998-08-29 Jim Meyering <meyering@ascend.com>
+
+ * Version 3.16v.
+
+ * src/du.c (long_options): Use corresponding short-option character
+ in place of `1', and `NULL' in place of pointer in initialization.
+ * src/cp.c (long_opts): Likewise.
+ * src/ln.c (long_options): Likewise.
+ * src/mkdir.c (longopts): Likewise.
+ * src/rmdir.c (longopts): Likewise.
+ * src/chown.c: Replace 12 and 13 with CHAR_MAX + 1 and CHAR_MAX + 2
+ respectively.
+ * src/chmod.c (long_options): Replace 12 with CHAR_MAX + 1.
+ * src/chgrp.c (long_options): Replace 12 with CHAR_MAX + 1.
+
+ * tests/Fetish.pm: New file -- moved from ls-2/.
+ * configure.in (AC_OUTPUT): Add tests/dircolors/Makefile.
+ * tests/Makefile.am (SUBDIRS): Add dircolors.
+ (EXTRA_DIST): Add Fetish.pm.
+ * tests/dircolors: New directory
+
+ * src/ls.c (print_dir_name): Remove global variable.
+ (print_dir): When trace_dirs is set, always print the directory
+ name header.
+
+1998-08-26 Jim Meyering <meyering@ascend.com>
+
+ * src/dircolors.c (dc_parse_stream): Don't segfault when a line
+ contains only one token. Reported by Olav Morkrid.
+
+1998-08-24 Paul Eggert <eggert@twinsun.com>
+
+ * src/system.h (CHAR_MIN, CHAR_MAX):
+ Renamed from SCHAR_MIN, SCHAR_MAX, since these
+ macros apply to char, not signed char.
+
+ * src/df.c, src/du.c, src/touch.c (long_options, main):
+ Don't assume ASCII.
+
+1998-08-18 Paul Eggert <eggert@twinsun.com>
+
+ Port nanosecond-resolution times to UnixWare 2.1.2 and
+ pedantic Solaris 2.6.
+
+ * configure.in (AC_STRUCT_ST_MTIM_NSEC): Renamed from AC_STRUCT_ST_MTIM.
+ * acconfig.h (ST_MTIM_NSEC): New #undef.
+ * src/system.h (ST_TIME_CMP_NS, ATIME_CMP, CTIME_CMP, MTIME_CMP):
+ Use new ST_MTIM_NSEC macro.
+
+1998-08-16 Jim Meyering <meyering@ascend.com>
+
+ * lib/filemode.h (PARAMS): Define and use.
+ From Kaveh Ghazi.
+
+1998-08-15 Jim Meyering <meyering@ascend.com>
+
+ * Version 3.16u.
+
+ * Makefile.maint (announcement): New target.
+
+ * tests/mv/into-self: Update to reflect changed behavior of mv.
+ * src/mv.c (do_move): Fail upon attempt to move a directory into itself.
+ With prodding from François Pinard :-)
+
+ * tests/ls-2/Fetish.pm: New file
+ * tests/ls-2/run-test: New file
+
+ * src/copy.c (copy_internal) [one-file-system]: Do copy mount point
+ directories (but none of their entries). This makes `cp --archive
+ --one-file-system' use the same policy `tar --one-file-system' does.
+ From Marty Leisner.
+
+ * src/ls.c (qmark_funny_chars): Add comment from Paul eggert.
+
+1998-08-14 Jim Meyering <meyering@ascend.com>
+
+ * tests/mv/setup: Work around another bug in Ultrix4.3a's /bin/sh.
+ Reported by Christian von Roques.
+
+ * configure.in (AC_OUTPUT): Add tests/ls-2/Makefile.
+ * tests/Makefile.am (SUBDIRS): Add ls-2.
+ * tests/ls-2: New directory
+
+1998-08-14 Christian von Roques <roques@pond.sub.org>
+
+ * lib/mountlist.c (read_filesystem_list) [MOUNTED_GETMNT]: Don't
+ infloop on getmnt(2) returning 0.
+
+ * tests/cp/backup-is-src: Avoid bug in Ultrix4.3a /bin/sh,
+ not initializing output redirection of : command.
+ * tests/mv/backup-is-src: Likewise.
+ * tests/rm/i-1: Likewise.
+
+1998-08-12 Jim Meyering <meyering@ascend.com>
+
+ * po/Makefile.in.in: Provide automake-style DESTDIR support.
+ From Johan Danielsson.
+ (DISTFILES): Remove ChangeLog.
+ po/ChangeLog: Remove empty file.
+
+ * configure.in (AC_STRUCT_ST_DM_MODE): Use it.
+
+ * src/ls.c: Include filemode.h.
+ * src/chmod.c: Likewise.
+
+ * lib/filemode.c (ftypelet): Add comments for Cray DMF support.
+ From Johan Danielsson.
+ Protoize. Tsort function definitions and remove prototypes of
+ static functions.
+ (mode_string): Remove prototype.
+ * lib/filemode.h (mode_string): New file.
+ * lib/Makefile.am (noinst_HEADERS): Add filemode.h.
+
+1998-08-09 Jim Meyering <meyering@ascend.com>
+
+ * Version 3.16t.
+
+1998-07-31 Paul Eggert <eggert@twinsun.com>
+
+ Add support for filesystems whose timestamps have better resolution
+ than 1 second (e.g. Solaris 2.6, recent Linux kernels).
+
+ * configure.in (AC_STRUCT_ST_MTIM): Add.
+
+ * src/copy.c (copy_internal): Compare time stamps with
+ subsecond resolution if available.
+
+ * src/ls.c (compare_ctime, rev_cmp_ctime, compare_mtime,
+ rev_cmp_mtime, compare_atime, rev_cmp_atime): Compare time
+ stamps with subsecond resolution if available.
+
+ * src/system.h (ST_TIME_CMP_NS, ST_TIME_CMP, ATIME_CMP,
+ CTIME_CMP, MTIME_CMP): New macros.
+
+1998-08-01 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (ALL_LINGUAS): Add slovak (sk) and norwegian (no).
+
+1998-07-28 Paul Eggert <eggert@twinsun.com>
+
+ * lib/mountlist.c (read_filesystem_list): Remove all_fs
+ argument, but put the necessary information into the result so
+ that the caller can ignore filesystems that he's not
+ interested in.
+
+ * lib/mountlist.h (struct mount_entry):
+ New members me_dummy, me_remote.
+ (read_filesystem_list): Remove all_fs argument.
+ (REMOTE_FS_TYPE): Remove.
+ (ME_DUMMY, ME_REMOTE): New macros.
+
+ * lib/xstrtol.c: Remove duplicate include of <stdio.h>.
+
+ * src/df.c (show_all_fs):
+ Revert to boolean value; the old negative value is
+ now in show_local_fs.
+ (show_local_fs): New variable.
+ (show_dev): New args me_dummy and me_class. Use show_local_fs
+ and boolean show_all_fs in combination with these new args
+ to decide whether to show a device.
+ (show_disk): Pass flags to show_dev.
+ (show_point): Use a non-dummy mount entry if possible.
+ (show_all_entries): Pass flags to show_dev.
+ (main): --local sets show_local_fs now. Ask for file system types if
+ show_local_fs is nonzero, since ME_REMOTE might need them.
+
+1998-07-27 Jim Meyering <meyering@ascend.com>
+
+ * tests/install/Makefile.am (TESTS_ENVIRONMENT): Set LS, MKDIR, and RM.
+
+ * tests/install/basic-1: Add a test for this.
+ * src/install.c: Make copy create each destination file initially
+ with mode 0600 so strip will work, then apply specified mode.
+ Arne Henrik Juul reported that `./ginstall -s -c -m 555 dd /tmp' failed.
+
+1998-07-25 Jim Meyering <meyering@ascend.com>
+
+ * src/mv.c (chown): Remove unused definition.
+ Reported by Kaveh Ghazi.
+
+ * src/rmdir.c (main): rmdir fails with EEXIST on some systems.
+ Handle that, so --ignore-fail-on-non-empty works.
+ (EEXIST): Define to zero if not defined.
+ (ENOTEMPTY): Likewise.
+
+ * tests/cp/same-file: Remove `diff' I'd put in for debugging.
+ Exit with the status from cmp.
+
+ * Version 3.16s.
+
+ * tests/cp/same-file: Skip three more unportable tests.
+ These failed on SunOS4.1.4.
+
+ * src/copy.c (SAME_INODE): Remove definition.
+ * src/sys2.h (SAME_INODE): Define it here instead.
+
+ * src/remove.c (same_file): New function.
+ (remove_dir): Use it to give a better diagnostic when rmdir fails
+ because it can't remove the current directory.
+
+ * src/df.c (long_options): Changes table entries not to use this form:
+ {"all", no_argument, &show_all_fs, 1},
+ but rather this form:
+ {"all", no_argument, NULL, 'a'},
+ Using the latter, all the option handling in one place: the getopt loop.
+
+ * lib/mountlist.c (read_filesystem_list) [MOUNTED_GETMNTINFO]:
+ Use fsp_to_string.
+ (fsp_to_string): Don't xmalloc return value (yet).
+ (xatoi): Ansideclify.
+ (fstype_to_string): Ansideclify.
+ * lib/mountlist.h: Define and use PARAMS macro.
+
+ * lib/utime.c: New file.
+ * src/touch.c (utime_now): Moved into m4/utimes.m4.
+ (touch) [!HAVE_UTIME_NULL]: Remove #ifdef and the use of utime_now
+ in the if-block.
+
+ * configure.in (jm_FUNC_UTIME): Use this, not AC_FUNC_UTIME.
+
+1998-07-22 Paul Eggert <eggert@twinsun.com>
+
+ * lib/human.c (human_readable): amt -> damt, to fix typo when
+ computing which power to use after overflow occurs during
+ multiplication.
+
+ * lib/xstrtol.c: Include <stdio.h> if NDEBUG is not defined;
+ needed on SunOS 4.
+
+1998-07-21 Paul Eggert <eggert@twinsun.com>
+
+ Add df -l or --local option.
+ * doc/fileutils.texi: Document it.
+ * lib/mountlist.h (REMOTE_FS_TYPE): New macro.
+ * lib/mountlist.c (read_filesystem_list):
+ If all_fs is negative, omit non-local filesytems.
+
+ * src/df.c (show_dev): Omit local devices if show_all_fs is negative.
+ (show_all_fs): If negative, omit non-local filesystems.
+ All uses of (all_fs != 0) changed to (all_fs > 0).
+ (long_options, usage, main): Add -l or --local option.
+ (main): When asking for df of an explicit file name, get all
+ the mount points, so that we're more likely to find it when
+ we look it up.
+
+1998-07-18 Jim Meyering <meyering@ascend.com>
+
+ * src/copy.c (copy_internal): Add another exclusion from the
+ sameness test: when --force has been specified, the destination
+ is unlinked before any copy.
+ (copy_internal): Add yet another: when both src and dest are symlinks.
+
+ * tests/touch: New subdir.
+ * tests/Makefile.am (SUBDIRS): Add touch.
+ * configure.in (AC_OUTPUT): Add tests/touch/Makefile.
+
+ * tests/mv/into-self-2: New test.
+ * tests/mv/Makefile.am (TESTS): Add into-self-2.
+
+1998-07-06 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * lib/mountlist.c (read_filesystem_list): Fix more memory leaks on
+ failure.
+
+1998-07-16 Jim Meyering <meyering@ascend.com>
+
+ Work around failure of chown calls on m68k-motorola-sysv systems.
+ * src/chown.c: Include lchown.h.
+ * lib/Makefile.am (noinst_HEADERS): Add lchown.h.
+ * lib/lchown.h: New file, just to define ENOSYS on systems that lack it.
+ * lib/lchown.c: Include lchown.h.
+ Reported by and with suggestions from Manfred Hollstein.
+
+1998-07-12 Paul Eggert <eggert@twinsun.com>
+
+ * src/df.c (print_header): Print "1k-blocks", not "1.0k-blocks".
+
+1998-07-07 Jim Meyering <meyering@ascend.com>
+
+ * src/sys2.h [HAVE_FCLOSE_UNLOCKED]: Remove unnecessary block.
+ Suggestion from Ulrich Drepper.
+
+1998-07-04 Jim Meyering <meyering@ascend.com>
+
+ * lib/safe-read.c (safe_read): Change type of pointer parameter to
+ `void' to avoid Irix4 cc errors. Reported by Kaveh Ghazi.
+ * lib/safe-read.h: Update prototype.
+
+ * src/dircolors.c (parse_line): Add casts to avoid errors from
+ Irix4's `cc' C compiler. From Kaveh Ghazi.
+
+ * lib/xstrtol.c: Include stdio.h. Required on some systems when
+ using assert. From Kaveh Ghazi.
+
+ * tests/mv/backup-is-src: Use cmp, not diff.
+ Reported by Kaveh Ghazi.
+
+1998-07-03 Jim Meyering <meyering@ascend.com>
+
+ * Version 3.16r.
+
+ * src/remove.c (remove_dir): Use fprintf (not error) to avoid
+ newline in prompt.
+
+1998-06-30 Paul Eggert <eggert@shade.twinsun.com>
+
+ * lib/mountlist.c (read_filesystem_list):
+ Don't leak memory on failure.
+ Don't create a dummy struct mount_entry entry;
+ use the address-of-the-tail-address method instead.
+ Preserve errno if possible on failure, setting it to 0 if inapplicable.
+ Close file descriptor leak if the F_SETLKW failed.
+ Report an error if SVR4 lock file cannot be opened for some reason
+ other than a nonexistent lock file.
+
+1998-07-03 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (AM_WITH_REGEX): Remove. Now the replacement
+ macro, jm_WITH_REGEX, is bundled with the rest in jm_MACROS.
+ * acconfig.h (WITH_REGEX): Remove undef.
+ * lib/Makefile.am (noinst_HEADERS): Add regex.h.
+ * lib/rpmatch.c: Remove #ifdef around <regex.h> inclusion.
+ * lib/rx.c: Remove file.
+ * lib/rx.h: Remove file.
+
+ * src/df.c (df_readable): Rename local so as not to shadow global.
+
+ * src/copy.c (SAME_INODE): New macro.
+ Use it to replace open-coded equivalents.
+ (copy_internal): Rename variable and reverse sense of tests
+ to make the code a little clearer.
+
+1998-07-02 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * src/copy.c (copy_internal): Try harder identifying a relative
+ symbolic link in the current directory.
+
+ * src/copy.c (copy_internal): Don't skip test for same file if
+ creating a hardlink from symlink over a non-symlink while making
+ backups.
+ * tests/cp/same-file: Skip tests that depend on link(2) not
+ following symlinks.
+
+1998-07-02 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * src/copy.c (copy_internal): Don't call chown on a symlink.
+
+1998-07-01 Jim Meyering <meyering@ascend.com>
+
+ * lib/xstrtol.c: Don't define NDEBUG here, now that it's done via
+ configure's --disable-assert option.
+
+1998-06-29 Paul Eggert <eggert@twinsun.com>
+
+ * lib/mountlist.c (read_filesystem_list):
+ Plug file descriptor leak on failure.
+ Report failure if lock file can't be opened for some reason
+ other than nonexistence.
+
+1998-06-29 Jim Meyering <meyering@ascend.com>
+
+ * Version 3.16q.
+
+ * lib/mountlist.c (read_filesystem_list) [MOUNTED_GETMNTENT2]:
+ Always close stream and file descriptor before returning.
+
+ * src/df.c (main): Move the test of the result of the
+ read_filesystem_list call up out of if-block -- code in the
+ else-block depends on it too.
+
+1998-06-29 Paul Eggert <eggert@twinsun.com>
+
+ * lib/mountlist.c (read_filesystem_list): If SVR4, lock
+ /etc/.mnttab.lock if available, to avoid race conditions
+ (e.g. with the automounter on Solaris 2.6).
+
+ Include <errno.h>, <fcntl.h>, <unistd.h>.
+
+1998-06-29 Jim Meyering <meyering@ascend.com>
+
+ * lib/mountlist.c (fstype_to_string): Guard with
+ #if ! HAVE_F_FSTYPENAME_IN_STATFS.
+
+1998-06-28 Paul Eggert <eggert@twinsun.com>
+
+ Add support for new --block-size option and
+ BLOCK_SIZE. DF_BLOCK_SIZE, etc. variables to `df', `du', and `ls'.
+ Adjust df output slightly to accommodate larger filesystems.
+
+ * lib/human.c, lib/human.h (human_readable): Coalesce last two args
+ into one, for convenience. All callers changed.
+ (human_block_size): New function.
+ * lib/human.c: Include <config.h> only if HAVE_CONFIG_H.
+ Include <stdlib.h> if HAVE_STDLIB_H;
+ declare getenv unless HAVE_DECL_GETENV.
+ (_): New macro.
+ Include <argmatch.h>, <error.h>, <xstrtoul.h>.
+ (DEFAULT_BLOCK_SIZE): New macro.
+ (block_size_args, block_size_types): New constants.
+ (humblock): New function.
+ * lib/xstrtol.h (__ZLONG_MAX): Remove.
+ * lib/xstrtol.c (bkm_scale): Don't assume that you can convert
+ unsigned long to double without losing information.
+ (bkm_scale_by_power): New function.
+
+ * lib/xstrtol.c (__xstrtol), src/dd.c (parse_integer):
+ Add support for SI-like suffixes like "GB" and "TD".
+ * src/dd.c (usage): Describe it.
+
+ * src/df.c, src/du.c, src/ls.c (human_readable_base, output_units):
+ Remove; replace with new variable output_block_size. All uses changed.
+ (long_options, usage, main): Add --block-size.
+ (main, decode_switches): Use new human_block_size function to
+ initialize output block size consistently with other programs.
+
+ * src/df.c (print_header, show_dev): Shrink some columns and expand
+ others, to squeeze in support for today's larger filesystems.
+ (print_header): Print output block size using power-of-1024 SI format.
+ (df_readable): Coalesce last two args into one, for convenience.
+ All callers changed.
+ (main): Remove check for portable output format and larger
+ or human-readable block sizes.
+
+ * NEWS, doc/fileutils.texi: Describe above changes.
+
+1998-06-28 Jim Meyering <meyering@ascend.com>
+
+ * src/ls.c (usage): Make --kilobytes description consistent with
+ that in du and df. From Göran Uddeborg.
+
+ * lib/mountlist.c (fsp_to_string): Clean out some crufty #ifdefs
+ now that we're using the jm_FSTYPENAME autoconf macro.
+ James Tanis reported the old version didn't compile on BSDI3.
+
+ * configure.in: Move big block of list_mounted_fs checks into
+ new jm_LIST_MOUNTED_FILESYSTEMS macro.
+ Use new jm_FSTYPENAME macro.
+
+ * src/sys2.h: Add macro definitions for GNU libc *_unlocked wrappers.
+ * src/ls.c: Add DIRED_ prefix to the macros: PUTCHAR, FPUTS, and
+ FPUTS_LITERAL
+
+1998-06-27 Jim Meyering <meyering@ascend.com>
+
+ * src/copy.c (copy_reg): Detect identical source and dest here.
+ (copy_internal): Make the test symmetric.
+
+ * tests/cp/same-file: New file.
+ * tests/cp/Makefile.am (TESTS): Add it.
+
+1998-06-26 Jim Meyering <meyering@ascend.com>
+
+ * src/remove.c (remove_file): Remove `non-directory' part of
+ `removing non-directory FILE' verbose message.
+
+1998-06-23 Jim Meyering <meyering@ascend.com>
+
+ * src/df.c (show_dev): Increase field width for blocks, used,
+ and available columns from 7 to 8.
+
+1998-06-21 Jim Meyering <meyering@ascend.com>
+
+ * aclocal.m4: Regenerate with fixed gettext.m4 installed.
+ See README-alpha for details.
+
+1998-06-02 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * src/automake-wrap: Quote `&' in sed replacement text.
+
+1998-05-31 Jim Meyering <meyering@ascend.com>
+
+ * Version 3.16p.
+
+ * src/install.c (main): Fix argv-handling bug in my 1998-05-09 change.
+ Reported by Don Parsons.
+
+1998-05-30 Jim Meyering <meyering@ascend.com>
+
+ * tests/ls/time-1: Clean up ctime test. Note that it fails also
+ on Solaris5.5.1 tmpfs file systems.
+
+ Solve the `rm -f rm' problem more cleanly.
+ * src/.rm-warning: Remove file.
+ * src/automake-wrap: New file.
+ * src/Makefile.am (AUTOMAKE): Define to use automake-wrap.
+ (Makefile.in): Depend on automake-wrap.
+ (EXTRA_DIST): Add automake-wrap.
+ (DISTCLEANFILES): Remove definition.
+ (rm_DEPENDENCIES): Likewise.
+ (.rm-warn-stamp): Remove rule.
+
+1998-05-27 Jim Meyering <meyering@ascend.com>
+
+ * tests/ls/Makefile.am (TESTS): s/cr-1/rt-1/
+ * tests/ls/rt-1: New file, renamed from cr-1.
+
+1998-05-26 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * src/Makefile.am (.rm-warn-stamp): Cope with $(srcdir) != ".".
+
+ * tests/ls/cr-1: Don't use the ctime for testing, it is impossible
+ to set it reliably.
+
+1998-05-25 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (_GNU_SOURCE): AC_DEFINE it here.
+ * acconfig.h (_GNU_SOURCE): Remove definition from @TOP@ section.
+ [!_GNU_SOURCE]: Add #undef instead.
+
+1998-05-24 Jim Meyering <meyering@ascend.com>
+
+ * Version 3.16o.
+
+ * src/ansi2knr.c: Use new version from automake-1.3.
+
+ * src/chown.c: Accept new option, --dereference.
+ --no-dereference is now the default.
+ (enum Change_status) [CH_NOT_APPLIED]: New member.
+ (change_symlinks): Enable this by default, now.
+ (describe_change): Handle new case.
+ (change_file_owner): Add new parameter: cmdline_arg. Update callers.
+ Reorganize to reflect changed semantics.
+ (LCHOWN): Remove definitions.
+
+ * lib/lchown.c: New file.
+
+1998-05-21 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (ALL_LINGUAS): Add russian (ru).
+
+1998-05-16 Jim Meyering <meyering@ascend.com>
+
+ * src/remove.c (hash_compare_strings): Return true or false, not 1/0.
+ (remove_cwd_entries): Use RM_OK, not equivalent literal `1'.
+
+ * lib/hash.c (is_prime): Ansideclify.
+ (next_prime): Ansideclify. Add an assertion.
+
+ * lib/Makefile.am (EXTRA_DIST): Remove. Automake groks the `LIBOBJS='
+ lines from the m4/*.m4 macros, so the hack of including some
+ custom-replaced C source file names here is no longer needed.
+
+ * configure.in (jm_MACROS): New wrapper macro.
+ Remove uses of most jm_* macros.
+
+ * acconfig.h (HAVE_STRUCT_UTIMBUF): Remove #undef. Now it's handled
+ as part of utimbuf.m4.
+ (memcmp): Add #undef.
+
+1998-05-12 Jim Meyering <meyering@ascend.com>
+
+ * configure.in: Use my replacement AC_ISC_POSIX rather than
+ open-coding it.
+
+ * src/copy.c (copy_internal): Plug a small leak.
+
+1998-05-10 Jim Meyering <meyering@ascend.com>
+
+ * src/mv.c (do_move): Remove lots of code that was duplicated in
+ copy.c (copy), now that copy() has better support for mv. This fixes
+ a bug with cross-filesystem `mv -i' whereby you could get two prompts
+ for the same destination file and eventually remove the destination
+ file even though one of the responses was negative.
+ Reported by Dirk Lattermann.
+
+ * src/copy.h: Better support for mv:
+ [struct cp_options] (move_mode): New member.
+ * src/copy.c (copy_internal): Use new move_mode member.
+ Add parameter.
+ (copy): Add parameter.
+
+ * tests/cp/Makefile.am (TESTS): Add backup-is-src.
+ * tests/mv/Makefile.am (TESTS): Likewise.
+
+ * lib/userspec.c: Don't declare strdup if it's defined as a macro.
+ Reported by Lorne Baker.
+
+ * src/Makefile.am (ginstall_SOURCES): Add copy.c and cp-hash.c.
+
+ * src/mv.c (cp_option_init): Initialize new members.
+ * src/cp.c (cp_option_init): Likewise.
+ (main): Set new preserve_* options.
+
+1998-05-09 Jim Meyering <meyering@ascend.com>
+
+ * src/copy.h: Support for install:
+ [struct cp_options] (failed_unlink_is_fatal): New member.
+ (preserve_owner_and_group): New member.
+ (preserve_chmod_bits): New member.
+ (preserve_timestamps): New member.
+ (preserve): Remove member.
+ (set_mode): New member.
+ (mode): New member.
+ * src/copy.c (new_nondir_mode): New function. Use where appropriate.
+ Use more-specific preserve_* members in place of removed `preserve'.
+ (copy_internal): Honor failed_unlink_is_fatal.
+
+ * src/install.c (main): Rewrite argv-handling to be clearer.
+ (copy_file): Rewrite to use copy.c (copy).
+ (change_attributes): Get rid of now-(with chown wrapper)-unnecessary
+ `no_need_to_chown' parameter. Fix caller.
+ (install_file_in_file): Remove now-unnecessary `to_created' parameter.
+ (cp_option_init): New function.
+ Update several functions to take new parameter specifying copy options.
+
+ * tests/install: New subdir, with one basic test.
+ * tests/Makefile.am (SUBDIRS): Add install.
+ * configure.in (AC_OUTPUT): Add tests/install/Makefile.
+
+ * src/dd.c: Include safe-read.h.
+ Don't declare safe_read.
+ * src/touch.c: Likewise.
+
+ * configure.in (jm_TYPE_SSIZE_T): Use it.
+ * acconfig.h (ssize_t): Add undef.
+
+1998-05-03 Jim Meyering <meyering@ascend.com>
+
+ * po/: Update from gettext-0.10.35.
+ * intl/: Likewise.
+ * configure.in: Remove use of AC_LINK_FILES.
+ (AC_OUTPUT): Remove po/Makefile-generating sed command.
+
+1998-04-28 Jim Meyering <meyering@ascend.com>
+
+ * src/dircolors.c (parse_line): Use ISSPACE, not isspace.
+ Use unsigned char * pointers, not potentially signed ones, to avoid
+ sign extension.
+
+1998-04-26 Jim Meyering <meyering@ascend.com>
+
+ * configure.in: Use jm_ASSERT.
+ * acconfig.h: Add NDEBUG.
+
+ * src/mv.c: Don't define NDEBUG.
+ * src/cp.c: Likewise.
+
+1998-04-14 Jim Meyering <meyering@ascend.com>
+
+ * src/.rm-warning: New file.
+ * src/Makefile.am (EXTRA_DIST): Add .rm-warning
+ (DISTCLEANFILES): Add .rm-warn-stamp.
+ (rm_DEPENDENCIES): Depend on .rm-warn-stamp.
+ (.rm-warn-stamp): New rule.
+ (rm_prep): Comment out rule.
+
+ * src/df.c (main): Use STREQ in string equality tests, not strcmp.
+ * src/dircolors.c (dc_parse_stream): Likewise.
+ (dc_parse_file): Likewise.
+ * src/du.c (main): Likewise.
+ * src/ls.c (decode_switches): Likewise.
+ * src/remove.c (hash_compare_strings): Likewise.
+ * src/touch.c (main): Likewise.
+
+1998-04-13 Jim Meyering <meyering@ascend.com>
+
+ * lib/Makefile.am (noinst_HEADERS): Add safe-read.h.
+
+1998-04-11 Jim Meyering <meyering@ascend.com>
+
+ * lib/hash.c: Add curly braces around statements in
+ if/else/while/do/etc. that span more than a line -- even around
+ multiline simple statements or single-line simple statements
+ preceded by a comment line.
+
+1998-04-09 Jim Meyering <meyering@ascend.com>
+
+ * configure.in: Don't use AC_PATH_PROG to check for perl, now that
+ we use jm_PERL.
+
+1998-04-06 Jim Meyering <meyering@ascend.com>
+
+ * src/cp-hash.c (cph_hash_insert): Rename from now-conflicting
+ hash_insert. Also declare to be static.
+ * src/cp-hash.h (hash_insert): Remove declaration.
+
+ * lib/hash.c: Lots of minor spec and name changes, and new comments.
+ (hash_rehash): Rewrite to be easier on the allocator.
+ From François Pinard.
+ * lib/hash.h: More comments.
+ * src/remove.c: Change names/usage of hash-related functions to work
+ with the above.
+
+1998-04-05 Jim Meyering <meyering@ascend.com>
+
+ * lib/regex.c (WIDE_CHAR_SUPPORT): Define.
+ This now depends on HAVE_BTOWC so systems that lack btowc (like
+ solaris-2.5.1) don't lose.
+
+1998-04-04 Jim Meyering <meyering@eng.ascend.com>
+
+ * GNUmakefile: Add conditionals so that running `make' in an
+ unconfigured source directory will get a reasonable diagnostic.
+
+ * Makefile.am (ACLOCAL_AMFLAGS): Define this, so automake/aclocal
+ know about the m4/ subdirectory.
+ * Makefile.maint (aclocal-files): Remove now-unnecessary (with
+ automake-1.2h and the above change) aclocal-related rules and includes.
+
+1998-04-01 Jim Meyering <meyering@eng.ascend.com>
+
+ * tests/ls/cr-1: New file.
+ * tests/ls/Makefile.am (TESTS): Add cr-1.
+
+1998-03-31 Jim Meyering <meyering@eng.ascend.com>
+
+ * src/system.h (TYPE_MAXIMUM): Cast result to `(t)' so this macro
+ works with `unsigned char'.
+ From Greg Wooledge.
+ (SCHAR_MIN, SCHAR_MAX, SHRT_MIN, SHRT_MAX, LONG_MAX, ULONG_MAX): Define.
+
+ * lib/xstrtol.c: Merge with the version from textutils.
+
+ * lib/memcmp.c (rpl_memcmp): Rename from memcmp.
+
+1998-03-30 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * src/ls.c (compare_ctime, rev_cmp_ctime, compare_mtime,
+ rev_cmp_mtime, compare_atime, rev_cmp_atime, compare_size,
+ rev_cmp_size): Use file name as secondary sort key to get
+ consistent sorting.
+
+1998-03-28 Jim Meyering <meyering@eng.ascend.com>
+
+ * src/copy.c: Add copyright.
+ * src/remove.c: Add copyright.
+ [_AIX]: Add #pragma alloca.
+
+1998-03-27 Jim Meyering <meyering@eng.ascend.com>
+
+ * Makefile.maint ($(ACLOCAL_M4)): Replace old rule with this
+ dependency and the := assignment of ACLOCAL to make the default
+ rule use the `-I m4' option.
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Require 1.2h.
+
+1998-03-23 Jim Meyering <meyering@eng.ascend.com>
+
+ * acconfig.h: Remove HAVE_INTTYPES_H, now that m4/inttypes_h.m4
+ automatically handles it.
+
+1998-03-21 Jim Meyering <meyering@eng.ascend.com>
+
+ * lib/quotearg.h: Update from patch-2.5.3.
+ * lib/quotearg.c: Likewise.
+ * src/ls.c (decode_switches): Pass a null pointer instead of address
+ of quotearg_quoting_options.
+
+1998-03-19 Paul Eggert <eggert@twinsun.com>
+
+ * lib/fsusage.h (struct fs_usage): New member
+ fsu_bavail_top_bit_set.
+ * lib/fsusage.c: Include <limits.h>.
+ (CHAR_BIT, EXTRACT_TOP_BIT, PROPAGATE_TOP_BIT): New macros.
+ (get_fs_usage): If top bit of system variable corresponding to
+ fsu_bavail is set, then set fsu_bavail_top_bit_set, and
+ sign-extend the value when storing it into fsu_bavail.
+ * src/df.c (show_dev): If fsu_bavail_top_bit_set is nonzero,
+ assume the original value corresponding to fsu_bavail was negative.
+ Reported by Arne Juul.
+
+1998-03-18 Jim Meyering <meyering@eng.ascend.com>
+
+ * src/Makefile.am (rm-prep): Add dependency and rule to save users
+ with `.' too early in their PATH from the `rm: cannot unlink `rm':
+ Text file busy' error. Suggestion from Philippe De Muyter.
+
+1998-03-15 Jim Meyering <meyering@eng.ascend.com>
+
+ * Version 3.16n.
+
+ * lib/chown.c: Use #if, not #ifdef with HAVE_ macros.
+ * lib/closeout.c: Likewise.
+ * lib/dirname.c: Likewise.
+ * lib/euidaccess.c: Likewise.
+ * lib/fileblocks.c: Likewise.
+ * lib/filemode.c: Likewise.
+ * lib/ftruncate.c: Likewise.
+ * lib/group-member.c: Likewise.
+ * lib/isdir.c: Likewise.
+ * lib/long-options.c: Likewise.
+ * lib/mountlist.c: Likewise.
+ * lib/path-concat.c: Likewise.
+ * lib/save-cwd.c: Likewise.
+ * lib/savedir.c: Likewise.
+ * lib/strcasecmp.c: Likewise.
+ * lib/strdup.c: Likewise.
+ * lib/userspec.c: Likewise.
+ * lib/yesno.c:: Likewise.
+
+ * src/chgrp.c: Use #if, not #ifdef with HAVE_ macros.
+ Use #if !, not #ifndef with HAVE_ macros.
+ * src/chown.c: Likewise.
+ * src/copy.c: Likewise.
+ * src/dd.c: Likewise.
+ * src/dircolors.c: Likewise.
+ * src/install.c: Likewise.
+ * src/ls.c: Likewise.
+ * src/mv.c: Likewise.
+ * src/touch.c: Likewise.
+
+ * configure.in: Use jm_PREREQ.
+
+1998-03-14 Jim Meyering <meyering@eng.ascend.com>
+
+ Revert most `getdate.h -> get-date.h' changes of 1998-02-20.
+ With automake-1.2f, that hack is no longer needed.
+
+ * src/remove.c: Use `virtual memory exhausted' message, not
+ `Memory exhausted' to be consistent with the majority of other
+ such messages.
+ Say `removing all...', not `removing any...'.
+ * src/rmdir.c (remove_parents): Be consistent with documentation of
+ --verbose option and with remove.c in saying `removing...' before
+ the operation is attempted.
+ (main): Likewise.
+ Suggestions from Santiago Vila.
+
+ * src/copy.c (copy_dir): Add new parameter, copy_into_self, and set it.
+ (copy_internal): Likewise.
+ (copy): Likewise.
+ Update all callers.
+ * src/copy.h (copy): Update prototype.
+ * src/cp.c (do_copy): Add unused arg in calls to copy.
+ * src/mv.c (do_move): Add &copy_into_self arg in call to copy.
+ Don't remove source directory when copy_into_self is nonzero.
+ Reported by Arne Henrik Juul.
+
+ * tests/mv/into-self: Test for the above.
+ * tests/mv/Makefile.am (TESTS): Add into-self.
+
+1998-02-28 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * userspec.c (parse_user_spec) [__DJGPP__]: Make function know
+ about any arbitrary user and group by pretending to be the user
+ and to belong to the group specified in `spec_arg' argument.
+
+ * idcache.c (getuidbyname) [__DJGPP__]: Make function know about
+ any arbitrary user name.
+ (getgidbyname) [__DJGPP__]: Make function know about any arbitrary
+ group name.
+
+1998-02-24 Jim Meyering <meyering@eng.ascend.com>
+
+ * lib/xstrtol.c (TYPE_SIGNED): Define.
+ (TYPE_MAXIMUM): Define.
+ (ULONG_MAX): Use TYPE_MAXIMUM.
+ (LONG_MAX): Use TYPE_MAXIMUM.
+
+ * lib/fnmatch.c: Update from libit.
+ * lib/idcache.c: Update from libit.
+
+1998-02-23 Paul Eggert <eggert@twinsun.com>
+
+ * lib/quotearg.h, lib/quotearg.c: New files.
+ * lib/Makefile.am (libfu_a_SOURCES): Add quotearg.c.
+ (noinst_HEADERS): Add quotearg.h.
+
+ * src/ls.c: Include new file quotearg.h.
+ (enum indicator_style): Rename all to classify, and not_programs
+ to file_type, to match option spellings. All users changed.
+ (indicator_style_args): New constant.
+ (quote_funny_chars, quote_as_string, quote_shell): Remove;
+ (filename_quoting_options, dirname_quoting_options): Use these
+ variables instead.
+ (long_options): Add --indicator-style, --quoting-style,
+ --show-control-chars. Remove --quote-shell.
+ (dired_dump_obstack): Remove style parameter and don't output style.
+ (main): Go back to previous method of outputting //DIRED//
+ and //SUBDIRED// lines, without style. But add a new
+ //DIRED-OPTIONS// line that does output style.
+ (decode_switches, usage): Add --indicator-style, --quoting-style,
+ --show-control-chars. Remove --quote-shell.
+ (decode_switches): Default from QUOTING_STYLE environment variable.
+ Set new quoting vars.
+ (quote_name): Renamed from quote_filename.
+ Take new arg specifying quoting options.
+ Always print; do not have a special case for null FILE * argument.
+ All callers changed.
+ Move the guts of this function to new file quotearg.c.
+ (length_of_file_name_and_frills): Use quotearg_buffer instead
+ of (old) quote_filename to find length of file name.
+
+ (decode_switches, parse_ls_color, print_dir, gobble_file,
+ get_link_name): Quote output in diagnostics.
+
+ * NEWS, doc/fileutils.texi: Describe above changes.
+ * doc/fileutils.texi: Mention that control characters are output
+ as question marks if output is a terminal.
+
+1998-02-22 Jim Meyering <meyering@eng.ascend.com>
+
+ * Version 3.16m.
+
+ * ChangeLog-1997: New file.
+ * Makefile.am (EXTRA_DIST): Add ChangeLog-1997.
+
+1998-02-21 Jim Meyering <meyering@eng.ascend.com>
+
+ * configure.in (AC_OUTPUT): Add tests/mv/Makefile.
+ * tests/Makefile.am (SUBDIRS): Add mv.
+ * tests/mv: New directory
+ * tests/mv/mv-special-1: New test.
+
+1998-02-20 Jim Meyering <meyering@eng.ascend.com>
+
+ * src/touch.c: Include get-date.h.
+ Remove get_date decl.
+
+ * lib/getdate.h: Removed. Could cause confusion with an
+ automake-generated `.y.h' rule.
+ * lib/get-date.h: Renamed from getdate.h.
+ * lib/getdate.y: s/getdate.h/get-date.h/
+ * lib/Makefile.am (noinst_HEADERS): s/getdate.h/get-date.h/
+
+1998-02-19 Jim Meyering <meyering@eng.ascend.com>
+
+ 1997-10-17 Eli Zaretskii <eliz@is.elta.co.il>
+ * lib/fileblocks.c [__DJGPP__]: Add missing typedef for daddr_t.
+
+1998-02-13 Jim Meyering <meyering@eng.ascend.com>
+
+ * src/mv.c (cp_option_init): Set copy_as_regular to 0, not 1.
+ Otherwise, mv tries to open special files.
+ Reported by Kjetil Torgrim Homme.
+
+1998-02-08 Jim Meyering <meyering@eng.ascend.com>
+
+ * Makefile.maint (cvs-dist): Update po/ to clear modified status
+ of *.po files before running cvs tag -c.
+
+ * src/ln.c (usage): Reword to use `TARGET' and `LINK_NAME' in
+ description.
+
+1998-02-07 Jim Meyering <meyering@eng.ascend.com>
+
+ * GNUmakefile: New file.
+ * Makefile.am (EXTRA_DIST): Add GNUmakefile.
+ Don't include Makefile.maint from here. It's included from GNUmakefile.
+
+ * configure.in: Don't use AM_MAINTAINER_MODE.
+ (jm_PERL): Use this.
+
+ * src/Makefile.am (EXTRA_DIST): Remove dcgen.pl. Add dcgen.
+ (CLEANFILES): Remove dcgen.
+ (dircolors.h): Use $(PERL).
+ (.pl): Remove rule.
+
+1998-02-01 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * POTFILES.in: Add remove.c. Reported by Santiago Vila.
+
+1998-01-28 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/df.c (print_header): Tweak format to align heading over
+ last column of `df -i' output. From Andreas Schwab.
+
+1998-01-27 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * Makefile.am: Include Makefile.maint from $(srcdir).
+
+1998-01-25 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 3.16l.
+
+ * Makefile.maint: New file.
+ * Makefile.am: Move rules common to textutils, fileutils, sh-utils
+ into Makefile.maint.
+ Include Makefile.maint.
+ (EXTRA_DIST): Add Makefile.maint.
+
+ * src/cp.c (re_protect): Don't fail for non-root when chown fails
+ due not only to lack of permission (EPERM), but also to lack of
+ support (EINVAL). Reported by Bengt Martensson.
+ * src/copy.c (DO_CHOWN): Likewise.
+
+1998-01-24 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/ls/time-1 (test_failure): Rename does not update ctime;
+ link does -- so use ln, not mv.
+ Note that the SunOS4.1.4 failure of the ctime test is expected.
+
+ * src/system.h (TYPE_MINIMUM): Add extra outer cast to work around
+ bug in Cray C 5.0.3.0 when T == time_t.
+
+ * tests/rm/r-1: Adjust expected output for changed format of
+ `rm --verbose'.
+ * tests/rm/r-2: Likewise.
+
+1998-01-23 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/mktime.c (__mktime_internal): Work around bug in Irix4.0.5's
+ C compiler. From Kaveh Ghazi.
+ (TYPE_MINIMUM): Define.
+ (TYPE_MAXIMUM): Define.
+ (TIME_T_MIN): Use TYPE_MINIMUM.
+ (TIME_T_MAX): Use TYPE_MAXIMUM.
+
+1998-01-22 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/dd.c: Reorder functions to obviate forward dcls.
+ (quit): Declare to be inline to stifle compile warning.
+
+ * src/cp.c (do_copy): Add unreachable `return 0' to stifle warning.
+
+ * tests/rm/sunos-1: Don't use -f. Do adjust $RM if it's a
+ relative path.
+
+ * tests/ls/time-1: Use GNU touch to work around problems with NFS
+ caching and/or clock skew. Reported by Kaveh Ghazi.
+
+ * tests/ls/Makefile.am (TESTS_ENVIRONMENT): Add TOUCH.
+
+ * src/Makefile.am (noinst_HEADERS): Add remove.h.
+ (mv_SOURCES): Define.
+ (rm_SOURCES): Define.
+
+1998-01-21 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/install.c: Declare new global, backup_type.
+ (main): Initialize backup_type unconditionally.
+ (copy_file): Call find_backup_file_name with new argument, backup_type.
+ * src/ln.c: Declare new global, backup_type.
+ (main): Initialize backup_type unconditionally.
+ (do_link): Call find_backup_file_name with new argument, backup_type.
+
+ * src/copy.c (copy_internal): Use x->backup_type, not the global.
+ (valid_options): Use VALID_BACKUP_TYPE and VALID_SPARSE_MODE.
+
+ * src/copy.h (VALID_SPARSE_MODE): Define.
+ [struct cp_options] (backup_type): New member.
+
+ * src/cp.c [NDEBUG]: Comment out definition.
+ (do_copy): Use x->backup_type, not the global.
+
+ * src/remove.c: New file. Contains guts of old rm.c.
+ (remove_init): New function.
+ (remove_fini): New function.
+ (rm): Take third argument, specifying options.
+ * src/remove.h: New file. Associated dcls.
+ * src/rm.c: Remove and minimally librarify guts for use in mv.c.
+ (main): Pass options (`&x') to rm.
+ Call remove_init and remove_fini instead of open-coding them.
+
+ * src/mv.c (rm_option_init): New function.
+ (cp_option_init): New function.
+ (copy_reg): Remove now-unused function.
+ (do_move): Set up for and use `copy.c (copy)' in place of copy_reg.
+ Set up for and use `remove.c (rm)' in place of unlink.
+
+1998-01-20 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/backupfile.c: Use ANSI function definitions.
+ Remove global declaration of backup_type.
+ (simple_backup_suffix): Default to `~', not `.orig'.
+ Use PARAMS, not __BACKUPFILE_P.
+ (find_backup_file_name): Add parameter, backup_type.
+ * lib/backupfile.h: Remove extern declaration of backup_type.
+ Use PARAMS, not __BACKUPFILE_P.
+ (VALID_BACKUP_TYPE): Define.
+ (find_backup_file_name): Adjust prototype.
+
+1998-01-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * src/df.c (print_header): Fix inode format header to line it up
+ with the rest of the output.
+
+1998-01-13 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/stat.c: Set errno to ENOENT, not EINVAL. This is consistent
+ with most other implementations.
+
+1998-01-12 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/fileblocks.c: Include sys/param.h only #if HAVE_SYS_PARAM_H.
+ Move function-spanning `#if ...BSIZE' directive to follow inclusion
+ of sys/param.h since BSIZE is sometimes defined in sys/param.h.
+ Reported by Philippe De Muyter.
+
+1998-01-10 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 3.16k.
+
+ * src/install.c (install_file_to_path): New function.
+ FIXME: update fileutils.texi.
+ (main): Handle new option, -D.
+ Based on a patch from Marty Leisner.
+ (usage): Describe -D.
+
+ * src/ls.c (decode_switches) [-u]: Fix bug whereby -u worked only
+ with -l or -t. Now, -u (like -c) implies --sort=time.
+ (usage): Correct descriptions of --sort, --time, and -t.
+ Suggestions from Andreas Schwab.
+
+ Add test for the above fix.
+ * configure.in (AC_OUTPUT): Add tests/ls/Makefile.
+ * tests/Makefile.am (SUBDIRS): Add ls.
+ * tests/ls: New directory.
+ * tests/ls/Makefile.am: New file.
+ * tests/ls/time-1: New file.
+
+ * lib/makepath.c (make_path): Reformat 3 if-stmts to test
+ `if (newly_created_dir)' only once. Suggestion from Andreas Schwab.
+
+1998-01-06 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/getdate.y: Move inclusion of getdate.h and dependent extern
+ declarations down so getdate.h's prototype follows the sometimes-
+ enabled definition of `const' to nothing. Otherwise, the prototype
+ wouldn't match the definition because of the defined-away `const'.
+ From Kaveh Ghazi.
+ (get_date): ANSI-fy definition.
+ Add %expect directive.
+
+1998-01-05 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * lib/makepath.c (make_path): Put only newly created directories
+ on the LEADING_DIRS list.
+
+1998-01-05 Paul Eggert <eggert@twinsun.com>
+
+ * lib/fsusage.c (PROPAGATE_ALL_ONES): New macro.
+ (get_fs_usage): If a value consists entirely of 1 bits,
+ propagate this info to the output by setting it to (uintmax_t) -1.
+ * src/df.c (df_readable): New function.
+ (show_dev): If a value consists entirely of 1 bits, or is derived
+ from some other value that consists entirely of 1 bits, report "-".
+ Check inode and block counts more carefully for plausibility,
+ to avoid arithmetic overflow when computing percentages.
+
+1998-01-04 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 3.16j.
+
+ * lib/Makefile.in: Regenerated with patched automake-1.2d.
+ See README-alpha.
+
+ * src/chgrp.c: Use a single enumerated type, Verbosity, instead of
+ the two booleans, verbose and changes_only. This fixes a bug whereby
+ --change had the same effect as --verbose.
+ * src/chmod.c: Likewise.
+ * src/chown.c: Likewise.
+ Reported by Paul Eggert.
+
+1998-01-04 Paul Eggert <eggert@twinsun.com>
+
+ Check for write errors more carefully.
+
+ * lib/Makefile.am (libfu_a_SOURCES): Add closeout.c.
+ (noinst_HEADERS): Add closeout.h.
+ * lib/closeout.c, lib/closeout.h: New files.
+ * lib/long-options.c (parse_long_options),
+ src/chgrp.c, src/chmod.c, src/chown.c, src/cp.c, src/dd.c,
+ src/df.c, src/dircolors.c, src/du.c, src/install.c, src/ln.c,
+ src/ls.c, src/mkdir.c, src/mkfifo.c, src/mknod.c, src/mv.c,
+ src/mvdir.c, src/rm.c, src/rmdir.c, src/sync.c, src/touch.c
+ (main, usage): Check for write error to stdout before exiting.
+ Include "closeout.h".
+
+1998-01-03 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/df.c (show_dev): Treat `fsu.fsu_bavail == (unsigned long) -1'
+ just like `fsu.fsu_blocks == 0' as an indicator that usage information
+ is invalid. This happens with Solaris-5.5.1 CD-ROM mount points.
+
+ * lib/save-cwd.h: Guard PARAMS-enabling definition with
+ `defined PROTOTYPES || (defined __STDC__ && __STDC__)' to avoid
+ problems with Irix4's cc. From Kaveh Ghazi.
+ * lib/getdate.h: Likewise, but just to be consistent.
+
+ * configure.in: Convert the .o suffix on files in LIBOBJS to $U.o so
+ those files will be built via the ANSI2KNR-filtering rules if necessary.
+ Reported by Kaveh Ghazi.
+
+1998-01-02 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 3.16i.
+
+ Fix problem with `install -d'. Reported by Marty Leisner.
+
+ * src/install.c (get_ids): When otherwise unspecified,
+ set uid and gid to -1.
+ * lib/makepath.c (make_path): Try to change ownership only if we've
+ just created the directory. Fix latent bug (s/&&/||/ in two places --
+ also, note that it could not be exercised via install or mkdir)
+ whereby chown would not be invoked when only one of owner/group is
+ not -1.
+
+1998-01-01 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/rm.c (remove_cwd_entries): Initialize the entry-name obstack
+ only once and never free it.
+
+
+ -----
+
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2006 Free Software
+ Foundation, Inc.
+
+ Copying and distribution of this file, with or without
+ modification, are permitted provided the copyright notice
+ and this notice are preserved.
diff --git a/old/fileutils/ChangeLog-1997 b/old/fileutils/ChangeLog-1997
new file mode 100644
index 0000000..72655cc
--- /dev/null
+++ b/old/fileutils/ChangeLog-1997
@@ -0,0 +1,6166 @@
+1997-12-31 Paul Eggert <eggert@twinsun.com>
+
+ If the -h or -H options are given, print inode counts and
+ disk allocations using a human readable format.
+
+ * src/df.c (show_dev): Print inode counts human readably.
+ * src/ls.c (decode_switches): -h and -H override output units.
+ (print_dir, gobble_file, print_long_format,
+ print_file_name_and_frills): Print disk allocations human readably.
+ * doc/fileutils.texi: Document the above changes.
+
+1997-12-31 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/df.c (show_dev): Move declarations and computation of
+ blocks_used etc. and blocks_percent_used and
+ inodes_used etc. and inodes_percent_used into respective branches
+ of the `if (inode_format)' statement where they're actually used.
+
+ * lib/exclude.h: Define and use PARAMS, not __EXCLUDE_P.
+ * lib/exclude.c: Use PARAMS, not __EXCLUDE_P.
+
+1997-12-29 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/rm.c (remove_cwd_entries): Plug a gross leak -- don't call
+ obstack_init inside the loop.
+
+ * src/du.c (usage): Replace TABs with spaces in --help message.
+ From Santiago Vila.
+
+ * lib/argmatch.c (invalid_arg): Use a single fprintf and whole
+ format statements to ease translation.
+ From Santiago Vila.
+ Convert from K&R to ANSI function dcls.
+
+1997-12-28 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/group-member.c: Use ANSI syntax, not K&R.
+
+ * lib/makepath.c (make_path) [!__STDC__]: Remove K&R-style definition.
+
+ * lib/group-member.h: Add PARAMS.
+ * src/chgrp.c: Remove incorrect declaration of group_member.
+ Include group-member.h instead.
+ Based on suggestion from Ulrich Drepper.
+
+1997-12-27 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 3.16h.
+
+1997-12-25 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/getline.c: (_GNU_SOURCE): Define only if not already defined.
+
+ * configure.in: Remove AC_DEFINE of _GNU_SOURCE.
+ * acconfig.h (_GNU_SOURCE): Define if not already defined.
+ Put this code in @TOP@ section.
+ (_GNU_SOURCE): Remove #undef.
+
+1997-12-20 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * configure.in: Move jm_CHECK_DECLS down so that it follows the
+ checks for the headers it requires.
+
+ * doc/fileutils.texi (mknod invocation): Fix description of file
+ type mnemonics.
+
+ * src/sys2.h: Declare stpcpy only if not defined as macro.
+
+ * src/du.c (S_ISLNK): Define this instead of S_ISDIR.
+
+ * src/dd.c (skip): Compare lseek return value with -1 to allow it
+ to be negative as signed value.
+
+ * lib/savedir.c: Declare stpcpy only if not defined as macro.
+ * lib/mountlist.c: Likewise.
+ * lib/path-concat.c: Include <string.h> if available.
+
+ * src/copy.c (copy_internal): Use S_ISLNK only if defined.
+
+ * src/install.c (get_ids): Don't cast GID_T_MAX to long, it might
+ overflow.
+
+1997-12-22 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in: AC_DEFINE _GNU_SOURCE.
+ * acconfig.h: Add _GNU_SOURCE.
+
+1997-12-21 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/copy.h: Use PARAMS, not __P.
+ * src/cp-hash.h: Likewise.
+
+ * lib/chown.c (rpl_chown): Rename from chown.
+ Undefine chown just after including config.h.
+ Include sys/stat.h.
+ Use correct ordering of uid and gid parameters both in function
+ definition and in call to chown.
+ With patches from Kaveh Ghazi.
+
+ * sys/fsusage.h: Use PARAMS, not __P.
+ * sys/getline.h: Likewise.
+ * sys/hash.h: Likewise.
+ * sys/human.h: Likewise.
+ * sys/long-options.h: Likewise.
+ * sys/makepath.h: Likewise.
+ * sys/modechange.h: Likewise.
+ * sys/path-concat.h: Likewise.
+ * sys/save-cwd.c: Likewise.
+ * sys/save-cwd.h: Likewise.
+ * sys/savedir.h: Likewise.
+ * sys/strverscmp.h: Likewise.
+ * sys/xalloc.h: Likewise.
+ * sys/xstrtol.h: Likewise.
+
+1997-12-16 Paul Eggert <eggert@twinsun.com>
+
+ Add --exclude and --exclude-from or -X options to du.
+
+ * lib/exclude.h, lib/exclude.c: New files.
+ * lib/Makefile.am (libfu_a_SOURCES): Add exclude.c.
+ (noinst_HEADERS): Add exclude.h.
+ * du.c: Include exclude.h.
+ (exclude): New static var.
+ (long_options, usage, main): Add --exclude and --exclude-from or -X.
+ (count_entry): Skip excluded entries.
+
+1997-12-16 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/sys2.h: s/__P/PARAMS/g.
+ * src/chgrp.c: Likewise.
+ * src/chmod.c: Likewise.
+ * src/chown.c: Likewise.
+ * src/copy.c: Likewise.
+ * src/du.c: Likewise.
+ * src/dd.c: Likewise.
+ * src/install.c: Likewise.
+ * src/ls.c: Likewise.
+
+1997-12-15 Paul Eggert <eggert@twinsun.com>
+
+ * ls.c (struct bin_str): Make len int, not unsigned, to avoid
+ bogus comparison < 0.
+ (quote_filename): Add forward decl.
+ (decode_switches): -b, -e, -N, -Q are now mutually exclusive.
+ (print_dir): Quote directory name as per quoting options.
+ (print_long_format): Don't count color changes as part of file name.
+ (quote_filename): Revamp interface: now accepts stream to output to
+ and filename, and returns length of quoted filename.
+ This removes duplicated code and should make errors less likely.
+ Also, no longer mallocs storage. All callers changed.
+ Don't quote ' ' if -Q.
+ (OUTCHAR): New macro.
+ (SAVECHAR, SAVE_2_CHARS): Remove.
+ (print_name_with_quoting): New stack arg. All callers changed.
+ (print_color_indicator): Cast ext len to size_t to avoid warning
+ with GCC 2.8.
+ (length_of_file_name_and_frills): Rewrite to use quote_filename.
+ This fixes bug when computing file name length with -e.
+
+1997-12-15 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/rm/deep-1 (deep): Remove `find > k' debugging remnant.
+
+1997-12-14 Paul Eggert <eggert@twinsun.com>
+
+ Add shell style quoting, and make it the default.
+
+ * NEWS, doc/fileutils.texi: Describe -e, which is now the default.
+ Describe change to --dired output.
+
+ * src/ls.c (quote_shell): New var.
+ (long_options, decode_switches, usage): New option -e or --quote-shell.
+ (dired_dump_obstack): New arg STYLE.
+ (main): Pass quoting style to dired_dump_obstack.
+ (decode_switches): -N now clears quote_as_string.
+ (quote_filename): Add shell style quoting.
+
+1997-12-14 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/ln/sf-1: Make sure we get diagnostics in English.
+
+ * Version 3.16g.
+
+ * src/system.h: Remove lseek and memchr dcls.
+ * src/sys2.h: Put them here instead.
+
+ * src/rm.c (ASSIGN_STRDUPA): Cast alloca return value to char*.
+
+ * lib/hash.h: s/HAVE_DECLARATION_/HAVE_DECL_/.
+
+1997-12-13 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/Makefile.am (check-local): New target.
+
+ * tests/.posix-warn: New file.
+
+ * src/dd.c (usage): Mention that `notrunc' is a conv= option.
+ Change --help output to tell the truth: that for of=FILE,
+ FILE *is* truncated. Reported by Miles Bader.
+ Remove incomplete, usage-like comment at top of file.
+
+ * src/mv.c (do_move): If rename fails for any reason (not just when
+ errno == EXDEV), then revert to trying copy-then-unlink. This is
+ necessary to allow moving files within certain types of Linux NFS
+ mounted filesystems. Reported by Marty Leisner.
+
+1997-12-11 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/ln.c (do_link): Don't require --force when target exists and
+ using --backup. This changes makes ln consistent with cp and mv in
+ this respect. Suggestion from Eli Zaretskii.
+
+1997-12-06 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/du.c: Separate struct dcl and typedef.
+ (String *): Rename from parameter-shadowed `string'.
+ (stringstruct): Remove typedef.
+
+1997-11-30 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/savedir.c (savedir): Revert last change. malloc always
+ works when called with zero, because we use the wrapper if the
+ system version is lacking.
+
+ * configure.in (AC_LFS): Use this macro rather than open-coding it.
+ (jm_AC_HEADER_INTTYPES_H): Likewise.
+ (jm_AC_TYPE_UINTMAX_T): Likewise.
+
+ * lib/human.c (human_readable): Convert to ANSI-style definition.
+ [lint]: Define `power'.
+
+ * src/ls.c (print_long_format): Rename inner-scoped `buf' arrays
+ to `hbuf' to avoid shadowing local.
+
+1997-11-29 Paul Eggert <eggert@twinsun.com>
+
+ Port to LFS and C9X in general, and to Solaris 2.6 in particular.
+
+ * NEWS: Describe ls -h, -H, rounding, new SI prefixes,
+ 64-bit accumulators, and LFS.
+
+ * acconfig.h (HAVE_INTTYPES_H, uintmax_t): New macros.
+
+ * configure.in (CPPFLAGS, LDFLAGS, LIBS): Set to appropriate
+ values if large file support needs explicit enabling.
+ (HAVE_INTTYPES_H, uintmax_t): New macros to configure.
+
+ * doc/fileutils.texi: Describe new -H option, new ls -h option.
+ Clarify about powers of 1000 vs 1024.
+
+ * lib/Makefile.am (libfu_a_SOURCES): Add new file human.c.
+ (noinst_HEADERS): Add new file human.h.
+
+ * lib/fileblocks.c (st_blocks): long -> off_t.
+ Avoid arithmetic overflow when size is near max.
+ Depend on _POSIX_SOURCE and BSIZE, not _POSIX_VERSION, for
+ compatibility with system.h.
+ (BSIZE): Remove definition, since if BSIZE is not defined
+ we're never invoked.
+
+ * lib/fsusage.c: Do all calculations using uintmax_t.
+ Include <inttypes.h> if available.
+ (adjust_blocks, CONVERT_BLOCKS): Remove.
+ (get_fs_usage): Set new member fsu_blocksize, and do not convert
+ numbers to 512-byte block units; this avoids overflow here.
+ Cast lseek arg to off_t, not long.
+
+ * lib/fsusage.h (struct fs_usage): New member fsu_blocksize.
+ Other members are now uintmax_t, not long.
+
+ * lib/human.c, lib/human.h: New files. The interface is inspired
+ by the human_readable function that was in du.c, but it's pretty
+ much rewritten from scratch.
+
+ * lib/idcache.c (getuidbyname, getgidbyname): Names can now
+ be NULL in cache. This change merely fixes ifdeffed-out code.
+
+ * lib/savedir.c (savedir): Check for size zero before invoking
+ malloc; this can occur if st_size arg overflows on conversion to
+ unsigned int. All callers now cast st_size arg to unsigned int.
+
+ * src/chgrp.c (<limits.h>, UINT_MAX, UINT_MAX): Remove; now
+ done by system.h.
+
+ * src/copy.c (copy_reg): Store file size as off_t, not long.
+ Do not assume st_size has been normalized to 512 byte blocks,
+ or that it fits in size_t after dividing by the blocksize.
+
+ * src/cp-hash.c (<inttypes.h>): Include if HAVE_INTTYPES_H.
+ (hash_insert2): Cast inode number to uintmax_t; this prevents
+ negative remainders if the inode number is negative and ino_t
+ is longer than unsigned.
+
+ * src/dd.c, src/df.c, src/du.c, src/ls.c (<inttypes.h>): Include if
+ HAVE_INTTYPES_H.
+ ("human.h"): Include.
+
+ * src/dd.c (input_blocksize, output_blocksize, conversion_blocksize):
+ Now size_t instead of long. 0 means unset.
+ (skip_records, seek_record, max_records): Now uintmax_t, not long.
+ (w_partial, w_full, r_partial, r_full, r_truncate):
+ Now uintmax_t instead of unsigned.
+ (print_stats): Print counts as uintmax_t, not unsigned.
+ (main, skip): Check for overflow when computing file offsets.
+ (skip): Records count arg is uintmax_t, not long; blocksize arg is
+ size_t, not long. Try lseek even on non regular files, as per comment.
+ (oc, col): Now size_t, not int.
+ (copy): No need to check max_records >= 0 any more, as the
+ default value is now effectively infinity.
+ Cast lseek arg to off_t.
+ (copy, copy_with_block): conversion_blocksize - col can never
+ be negative now, since it's unsigned, so rewrite loops to
+ avoid problems with unsigned.
+ (scanargs): Parse numeric args using uintmax_t, not int.
+ Check for overflow when converting block size args to size_t.
+ Blocksize options are now unsigned, and are now 0 when not set yet.
+ (parse_integer): Return uintmax_t, not int; accept new int * arg
+ to store error indicator, since all returned values are now valid.
+ Check for overflow when scanning integer.
+
+ * src/df.c (LONGEST_HUMAN_READABLE_1K_BYTE_BLOCKS): Remove.
+ (human_readable_base): Renamed from human_blocks; value is now
+ zero or positive integer, not just zero or nonzero.
+ (output_units): New variable;
+ replaces booleans kilobyte_blocks and megabyte_blocks.
+ (long_options): Add --si or -H.
+ (print_header): Adjust to renamed option variables.
+ (human_readable_1k_blocks): Remove.
+ (show_dev): Count blocks using uintmax_t, not long.
+ Calculate percentages using double, not long; this still isn't
+ perfect as it suffers double rounding, but it's more likely to
+ round correctly in practice than using long did.
+ Adjust to renamed option variables.
+ Use new human_readable library function to format uintmax_t values.
+ (usage): Add -H, --si.
+ (main): Adjust to renamed option variables.
+ Use -H if BLOCKSIZE is SI. Add -H.
+
+ * src/du.c (LONGEST_HUMAN_READABLE, enum Output_units): Remove.
+ (count_entry): Now returns uintmax_t, not long.
+ (human_readable_base): Renamed from opt_human_readable; value is now
+ zero or positive integer, not just zero or nonzero.
+ (output_units): Now an integer giving output size.
+ (tot_size): Now uintmax_t, not long.
+ (long_options, usage): Add --si or -H.
+ (main): Adjust to renamed option variables.
+ Use -H if BLOCKSIZE is SI. Add -H.
+ (human_readable): Remove; rewritten and now in lib/human.c.
+ (print_size): Rewrite in terms of human_readable.
+ Accept extra arg to be printed after size; all callers changed.
+
+ * src/install.c (BITSPERBYTE): Remove.
+ (UID_T_MAX, GID_T_MAX): Define in terms of TYPE_MAXIMUM.
+
+ * src/ls.c (<limits.h>): Don't include; system.h does it now.
+ (INT_MAX): Remove.
+ (longdiff): Remove bogus definition that uses subtraction;
+ it gives the wrong answer when overflows occur.
+ (convert_blocks): Remove.
+ (output_units): New variable;
+ replaces booleans kilobyte_blocks and megabyte_blocks.
+ (human_readable_base): New variable.
+ (long_options, usage): Add -h or --human-readable and -H or --si.
+ (decode_switches): Adjust to renamed option variables.
+ Use -H if BLOCKSIZE is SI. Add -h, -H.
+ (print_dir): Count blocks using uintmax_t, not int.
+ (gobble_file): Now returns uintmax_t, not int.
+ Don't convert blocks to 512 byte units, as this might overflow;
+ let caller handle the problem. Deduce what caller will print
+ by invoking human_readable.
+ (print_long_format, print_file_name_and_frills): Don't assume
+ inode number, block count, file size fit in unsigned long.
+ Use human_readable to do block count conversion and to print
+ file sizes.
+ (prep_non_filename_text): Print decimal string for time if
+ localtime fails due to enormous time_t.
+
+ * src/system.h (<limits.h>): Include if HAVE_LIMITS_H.
+ (CHAR_BIT, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM, INT_MAX, UINT_MAX):
+ New macros.
+ (ST_NBLOCKS): Now counts actual blocks, not 512-byte blocks.
+ (ST_NBLOCKSIZE): New macro.
+
+1997-11-24 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/sys2.h: New file -- but just temporary.
+ * src/system.h: Move lots of pieces into sys2.h.
+ Include sys2.h.
+
+1997-11-19 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (AUTOMAKE_OPTIONS): Use ansi2knr so *I* don't
+ have to convert my hash package to use k&r C.
+
+1997-11-15 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * intl/Makefile.in (distclean): Don't remove libintl.h here.
+ * Makefile.am (DISTCLEANFILES): Remove it here instead.
+
+1997-11-13 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/mktime.c: Update from FSF.
+ * lib/strftime.c: Update from FSF.
+ * m4/strftime.m4: Check for POSIX.2's %f format spec.
+
+1997-11-12 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/copy.c (copy_dir): Use path_concat rather than open-coding it.
+
+ * src/rm.c [mempcpy]: Remove definition.
+ * src/system.h [!HAVE_MEMPCPY] (mempcpy): Define here instead.
+ * lib/path-concat.c (path_concat): Use mempcpy, not stpcpy.
+
+1997-11-09 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * m4/jm-mktime.m4 (jm_FUNC_MKTIME): Check for localtime_r.
+ * m4/strftime.m4 (jm_STRFTIME_PREREQS): Check for localtime_r.
+ (jm_FUNC_GNU_STRFTIME): Use new macro.
+ (jm_FUNC_STRFTIME): New macro. Likewise.
+ Reported by Noel Cragg.
+
+1997-11-08 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * m4/getline.m4: Fix typo in comment.
+ Add header check for string.h.
+
+ * m4/Makefile.am (EXTRA_DIST): Add readdir.m4.
+ * configure.in (jm_FUNC_READDIR): Use it.
+ (AC_FUNC_FNMATCH): Add mempcpy.
+
+1997-11-02 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acconfig.h: Add malloc and realloc.
+
+ * src/rm.c: Put cycle-detecting code inside an
+ #ifdef ENABLE_CYCLE_CHECK, for systems lacking d_ino.
+ [D_INO_IN_DIRENT]: Define ENABLE_CYCLE_CHECK.
+
+ * src/rm.c: (ASSIGN_STRDUPA): Clean up.
+ (right_justify): Use memcpy return value directly.
+ Suggestions from Ulrich Drepper.
+
+ (remove_cwd_entries) [! defined HAVE_WORKING_READDIR]: Impose overhead
+ of working around non-POSIX readdir implementation only on systems
+ that need it.
+ (remove_cwd_entries): Temporarily save a copy of each entry name in
+ an obstack rather than on the stack via alloca, then free it in the
+ likely event that we don't save the entry in the hash table.
+
+1997-10-25 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/xmalloc.c (xalloc_fail): Renamed from fixup_null_alloc.
+ (xcalloc): #ifdef-out unused function.
+ (xrealloc): Remove code to work around deficient versions of realloc.
+ Now we have an autoconf-enabled replacement version.
+ (xmalloc): Remove code to work around deficient versions of malloc.
+ Now we have an autoconf-enabled replacement version.
+
+ * configure.in (jm_FUNC_MALLOC): Use it.
+
+ * lib/Makefile.am (EXTRA_DIST): Add malloc.c.
+ * lib/malloc.c: New file.
+ * m4/malloc.m4: New file.
+ * m4/Makefile.am (EXTRA_DIST): Add malloc.m4.
+
+ * lib/Makefile.am (noinst_HEADERS): Add xalloc.h.
+
+ * lib/xalloc.h: New file.
+ * lib/xmalloc.c: Updated from textutils.
+
+ * src/*.c: Remove old-style xmalloc and xrealloc decls.
+ * src/system.h: Include xalloc.h.
+ Remove dcls of xmalloc, xcalloc and xrealloc.
+
+1997-10-24 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/ls.c (gobble_file): Cast pointer arg in xrealloc call to char*.
+ * src/*.c: Remove old-style xmalloc and xrealloc decls.
+ * src/system.h: Add prototyped xcalloc, xmalloc and xrealloc decls.
+ Suggestion from Achim Blumensath.
+
+1997-10-23 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Makefile.am (aclocal-files): Also depend on m4/Makefile.am.
+
+ * src/system.h [!HAVE_DECLARATION_FREE]: Declare free.
+ [!HAVE_DECLARATION_MALLOC]: Declare malloc.
+ [!HAVE_DECLARATION_REALLOC]: Declare realloc.
+ [!HAVE_DECLARATION_STPCPY]: Declare stpcpy.
+ [!HAVE_DECLARATION_STRSTR]: Declare strstr.
+ * src/copy.c: Remove stpcpy decl.
+ * src/cp.c: Likewise.
+ * src/install.c: Likewise.
+ * src/ln.c: Likewise.
+ * src/ls.c: Likewise.
+ * src/dircolors.c: Remove free and malloc decls.
+ * src/ls.c: Likewise.
+ * src/rm.c: Remove free, malloc, and realloc decls.
+ On some systems, strstr and stpcpy are macros, so declaring them
+ unconditionally gets syntax errors.
+ Reported by Mark M. Kettenis.
+
+ * configure.in: Use jm_CHECK_DECLS.
+ * m4/Makefile.am (EXTRA_DIST): Add decl.m4 and check-decl.m4.
+
+1997-10-22 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * m4/decl.m4: New file.
+ * m4/check-decl.m4: New file. New macro, jm_CHECK_DECLS.
+
+1997-10-18 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/rm.c (remove_cwd_entries): Entries in table of processed dir
+ entries are not malloc'd, so don't have hash cleanup free them.
+ Rewind dirp upon NULL readdir, required for at least SunOS.
+
+1997-10-13 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_CHECK_HEADERS): Add termios.h.
+ * src/ls.c: Bracket inclusion of termios.h with #ifdef HAVE_TERMIOS_H.
+ Masami Takikawa reported that this is necessary on NeXTStep 3.0 systems.
+
+1997-10-07 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/*.c: Update bug-reporting address.
+
+1997-10-06 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/install.c (usage): Add a line describing --verbose.
+
+ * lib/makepath.c (make_path): Print message IFF the directory was
+ just created and the format string is non-NULL.
+ Print the verbose message using fprintf, not error.
+
+1997-10-05 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (noinst_HEADERS): Add savedir.h.
+
+ * src/copy.h (struct cp_options): New field: require_preserve.
+ * src/copy.c (copy_internal): Use require_preserve.
+ * src/cp.c (cp_option_init): Initialize it.
+ (main): Set to 1 for -a and for -p.
+
+1997-10-03 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/savedir.h (savedir) [__P]: New file with prototype.
+ * lib/savedir.c (savedir): Declare DIR parameter to be const.
+ Include savedir.h. Indent cpp directives.
+ * src/chgrp.c: Remove old-style savedir dcl. Include savedir.h for
+ prototype.
+ * src/chmod.c: Likewise.
+ * src/chown.c: Likewise.
+ * src/copy.c: Likewise.
+ * src/du.c: Likewise.
+ Achim Blumensath reported that ``on systems like BeOS, where off_t is
+ 64 bits [not having a prototype] results in passing 0 as name_size...''
+
+1997-09-27 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/Makefile.am (Makefile): Depend on $(BUILT_SOURCES), per
+ automake manual.
+
+1997-09-20 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (libfu_a_SOURCES): Use hash.c, not oa-hash.c.
+ (noinst_HEADERS): Use hash.h, not oa-hash.h.
+
+1997-09-15 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/rm.c: Use hash.c (chaining) functions, not those of oa-hash.c
+ (open addressing). The latter implementation is wonderful when
+ deletions are rare, but doesn't support the frequent deletions
+ required to implement the active directory set.
+
+ * lib/hash.c: New file -- replaces oa-hash.c.
+ * lib/hash.h: New file.
+ * lib/oa-hash.c: Remove.
+ * lib/oa-hash.h: Remove.
+
+ * src/ln.c (do_link): Perform S_ISLNK test only if lstat succeeded.
+ Otherwise, dest_stats could be used uninitialized.
+
+1997-09-14 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/rm.c (full_filename): Use realloc, not xrealloc.
+
+ * configure.in (jm_FUNC_REALLOC): Use it.
+ * m4/Makefile.am (EXTRA_DIST): Add realloc.m4.
+ * m4/realloc.m4: New file.
+ * lib/Makefile.am (EXTRA_DIST): Add realloc.c.
+ * acconfig.h (realloc): Add #undef.
+
+ * src/dd.c (equal): Use STREQ (from system.h) instead.
+ (siginfo_handler): New function: handler for SIGINFO/SIGUSR1.
+ (install_handler): New function.
+ (main): Use install_handler instead of open-coding it.
+ Handle SIGINFO (or SIGUSR1 if that's not defined).
+ (print_stats): Move definition to precede first reference.
+ Remove prototype.
+
+1997-09-13 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/ls.c (print_many_per_line): Add some non-essential curly braces.
+ (print_horizontal): Likewise.
+ (struct col_info) [valid_len]: Rename from `valid' which conflicted
+ with the macro in locale.h of SunOS4.1.4.
+
+ * src/rm.c: (PARAMS): Define.
+ (rm): Guard prototype in forward dcl with PARAMS.
+
+ * lib/strverscmp.h [HAVE_CONFIG_H]: Include config.h.
+ (PARAMS): Define.
+ Guard prototype with PARAMS.
+
+ * lib/oa-hash.c: Use K&R style function dcls, not ANSI.
+ (HASH_MALLOC): Prefix with (Type*) cast to placate old compilers.
+ Use assert, not ASSERT.
+ Include assert.h.
+ (HASH_DELETED_ITEM_MARKER): Define to address of file-scoped static,
+ not less-portable ((void *) (~0U)).
+ (HASH_VACANT): Define here, not in hash.h.
+
+ * lib/oa-hash.h: (HASH_DELETED_ITEM_MARKER): Move definition to hash.c.
+ (HASH_VACANT): Likewise.
+
+ * lib/strverscmp.c [HAVE_CONFIG_H]: Include config.h.
+ (strverscmp): Use `1' not `+1' -- some compilers (sunos' cc) can't
+ parse it.
+
+ * lib/strdup.c [HAVE_CONFIG_H]: Include config.h.
+
+ * src/rm.c: Finish rewrite to use chdir and hash tables.
+ See `Implementation overview' comment in the source.
+
+1997-09-11 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/install.c: Add new option: --verbose (-v).
+ From Andreas Schwab.
+
+1997-09-01 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (EXTRA_DIST): Remove mvdir.c and rmdir.c.
+ Add lstat.c and stat.c.
+
+ * src/ls.c [!STDC_HEADERS]: Declare malloc.
+
+ * m4/Makefile.am (EXTRA_DIST): Add stat.m4.
+ * m4/stat.m4: New file.
+ * m4/stat.m4 (jm_FUNC_STAT): New macro.
+ * lib/stat.c: New file.
+ * configure.in (jm_FUNC_STAT): Use it.
+
+ * src/ln.c (do_link): Form destination file name (when DEST is a
+ directory) before checking whether SOURCE and DEST are the same file.
+ See tests/ln/sf-1. Reported by Michael Veksler.
+
+ * tests/ln: New directory and test.
+ * tests/Makefile.am (SUBDIRS): Add ln.
+ * configure.in (AC_OUTPUT): Add tests/ln/Makefile.
+
+1997-08-31 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/chgrp.c (change_file_group): Call describe_change with a
+ 3-state argument.
+ (describe_change): Report whether the operation was successful,
+ a failure, or that the request was a no-op.
+ Before, running `chgrp --verb bin /' as non-root reported
+ group of / changed to bin
+ chgrp: you are not a member of group `bin': Not owner
+
+ * src/chown.c (change_file_owner): Call describe_change with a
+ 3-state argument.
+ (describe_change): Report whether the operation was successful,
+ a failure, or that the request was a no-op.
+ Before, running `chown --verb bin /' as non-root reported
+ owner of / changed to bin
+ chown: /: Not owner
+
+ * configure.in (jm_FUNC_LSTAT): Use it.
+
+ * acconfig.h (lstat): Add #undef.
+
+ * m4/Makefile.am (EXTRA_DIST): Add lstat.m4.
+
+ * m4/lstat.m4: New file.
+ * m4/lstat.m4 (jm_FUNC_LSTAT): New macro.
+ * lib/lstat.c: New file.
+
+ * src/rm.c (fspec_get_full_mode): Don't call error here.
+ (remove_file): Call error after fspec_get_full_mode call, if necessary.
+ Don't print mode when asking whether to descend into write-protected
+ directory.
+ (remove_dir): Don't fail just because we can't stat the file to get
+ the mode for the prompt string.
+ (rm): Exit successfully for missing files when -f is given.
+ (rm): Remove cruft to work around SunOS4's broken lstat now that
+ there is a working replacement function.
+
+ * lib/oa-hash.c: New file.
+ * lib/oa-hash.h: New file.
+
+ * lib/Makefile.am (libfu_a_SOURCES): Add oa-hash.c.
+ (noinst_HEADERS): Add oa-hash.h.
+
+ * lib/stpncpy.c: New file.
+ * configure.in (AC_REPLACE_FUNCS): Add stpncpy.
+
+ * src/rm.c (remove_cwd_entries): Convert to using oa-hash.c.
+
+ * m4/Makefile.am (EXTRA_DIST): Add d-ino.m4 and d-type.m4.
+
+ * tests/rm: New directory and tests.
+ * tests/Makefile.am (SUBDIRS): Add rm.
+ * configure.in (AC_OUTPUT): Add tests/rm/Makefile.
+
+ * src/dircolors.c [!STDC_HEADERS]: Declare malloc.
+ Remove unnecessary dcl of xmalloc.
+
+ * src/rm.c: Major rewrite in progress. Use fchdir/chdir.
+
+ * m4/d-ino.m4: New file.
+ * m4/d-type.m4: New file.
+ * acconfig.h (D_TYPE_IN_DIRENT): Define.
+ * configure.in: Move code to check for d_ino into its own file.
+ Use jm_STRUCT_DIRENT_D_TYPE and jm_STRUCT_DIRENT_D_INO.
+
+ * src/chmod.c (change_file_mode): Call describe_change with a 3-state
+ argument.
+ (describe_change): Report whether the operation was successful,
+ a failure, or that the request was a no-op.
+ Before, running `chmod --verb u-r /' as non-root reported
+ mode of / changed to 0355 (-wxr-xr-x)
+ chmod: /: Not owner
+ Reported by Philippe Schnoebelen <phs@hobbes.fing.edu.uy>
+
+1997-07-28 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_OUTPUT): Remove tests/ls/Makefile.
+ Add tests/cp/Makefile and tests/mkdir/Makefile.
+
+ * lib/modechange.c (mode_create_from_ref): Don't use umask.
+ Don't use MODE_X_IF_ANY_X.
+
+ * src/install.c (main): New option --preserve-timestamps (-p).
+ (install_file_in_file): Preserve timestamps if requested.
+ (change_timestamps): New function.
+ (usage): Describe --preserve-timestamps.
+ Correct --mode description.
+ From Galen Hazelwood.
+
+ * src/install.c: Declare pointer parameters const as appropriate.
+
+1997-07-13 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * doc/Makefile.am (EXTRA_DIST): Remove explicit mention of texinfo.texi.
+ Now, automake includes it automatically.
+
+1997-07-09 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/mkdir: New directory and associated files.
+ * tests/cp: New directory and associated files.
+ * tests/Makefile.am (SUBDIRS): Add cp and mkdir.
+
+ * lib/makepath.c (make_path): Chdir to `/' before starting if necessary.
+ Call save_cwd before while loop rather than from first iteration
+ inside it.
+
+ * lib/strverscmp.c (strverscmp): Add `parenentheses around arithmetic
+ in operand of |' as suggested by gcc -Wall.
+
+1997-07-06 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/idcache.c (getuidbyname): Declare parameter to be const.
+ (getgidbyname): Declare parameter to be const.
+
+1997-07-06 Jean-François Bignolles <bignolle@ecoledoc.ibp.fr>
+
+ * lib/modechange.h (mode_create_from_ref): Add prototype.
+ (MODE_MASK_ALL): New define.
+ (MODE_BAD_REFERENCE): New define.
+ * lib/modechange.c (mode_create_from_ref): New function.
+ * lib/strverscmp.c: New file.
+ * lib/strverscmp.h: New file.
+ * lib/Makefile.am (noinst_HEADERS): Add strverscmp.h.
+
+ * configure.in (AC_REPLACE_FUNCS): Add strverscmp.
+
+ * src/ls.c: Add new option: --sort=version (-v).
+ * src/chgrp.c: Add new option: --reference=FILE.
+ * src/chown.c: Add new option: --reference=FILE.
+ * src/chmod.c: Add new option: --reference=FILE.
+
+1997-07-06 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/idcache.c (getuser): Return NULL (rather than stringified uid)
+ upon lookup failure.
+ (getgroup): Likewise.
+ (getuidbyname) [NOT_USED]: #ifdef-out unused function.
+ (getgidbyname) [NOT_USED]: #ifdef-out unused function.
+ Suggested by François Pinard.
+ * src/ls.c (print_long_format): Reflect changes in semantics of
+ getuser, getgroup.
+
+1997-07-04 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Makefile.am (aclocal-files): Look in source directory, not build dir.
+ From Andreas Schwab.
+
+1997-07-03 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/mv.c (apply_attributes): New function.
+ (copy_reg): Use apply_attributes instead of open-coding the pieces.
+ Now, failure to preserve file attributes does not cause mv to change
+ its exit status, and such failures elicit warning diagnostics. This
+ behavior is required by POSIX. Before, failure to preserve ownership
+ due to insufficient access was diagnosed only for root.
+ Prompted by a report from Bengt Martensson.
+
+Tue Jul 1 06:42:17 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/makepath.c (make_path): Reorder stat-then-mkdir-if-missing
+ calls so that mkdir is called first. Before make_path would first
+ `stat' a directory, then call mkdir if it didn't exist. But if
+ some other process created the directory between the stat & mkdir,
+ the mkdir would fail with EEXIST. Diagnosis and suggestion from
+ Greg McGary.
+
+Sun Jun 29 17:19:30 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/dd.c (copy): Add FIXME comment.
+
+ * src/mv.c (copy_reg): New parameter, SOURCE_STATS.
+ (do_move): Update caller.
+
+Sun Jun 22 08:32:46 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ Use variable width columns when printing in multi-column mode.
+ * src/ls.c: (init_col_info): New function.
+ (print_current_files): Call init_col_info if format is
+ `many_per_line' or `horizontal'.
+ (print_many_per_line): Calculate and apply optimum column widths.
+ (print_horizontal): Likewise.
+ From Ulrich Drepper.
+
+ * src/mv.c (movefile): Take new boolean parameter, DEST_IS_DIR,
+ to save a stat per moved file when the destination is a directory.
+ (main): Call movefile with additional argument.
+ (strip_trailing_slashes_2): New function.
+ (movefile): Remove trailing slashes from dest. Otherwise, stat ("b/")
+ fails with ENOTDIR on systems including Linux w/libc 2.0.30.
+ Reproduce with `rm -rf a b; mkdir a; touch b; ./mv a b/'.
+ (do_move): Fix misleading comment.
+
+Sat Jun 21 21:26:57 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in: Remove now-unused definitions of LN, MV, RM.
+
+Sun Jun 15 07:04:29 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/full-write.c (full_write): Add comment regarding failure due
+ to bug in Linux Slackware 1.2.13 kernel.
+
+ * lib/makepath.c: Rewrite using save-cwd.c and chdir to remove
+ quadratic component of complexity. Before, it processed O(n^2)
+ directory name components via stat and mkdir. Now it's O(n).
+ This makes mkdir -p a lot more efficient when creating directories
+ with very many components. On a Linux 2.0.30 ext2fs filesystem
+ this command: mkdir -p `perl -e 'print "a/" x 500'` now runs in
+ 0.77 seconds (user+sys). Contrast that with the 9.5(!) seconds
+ it took before.
+
+Sat Jun 14 11:40:17 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * man/Makefile.am: (EXTRA_DIST): Put man_MANS here so they are
+ distributed. This is necessary for automake-1.1p.
+
+Tue Jun 3 15:00:00 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/fileblocks.c [HAVE_UNISTD_H]: Include unistd.h.
+ John Gatewood Ham reported that this is necessary for DJGPP/Win95.
+
+Wed May 28 06:35:56 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/mountlist.c (read_filesystem_list): Add `|| defined (__OpenBSD__)'
+ to the NetBSD #if so OpenBSD also uses the f_fstypename member.
+ (fstype_to_string): Add `&& !defined (__OpenBSD__)' to the NetBSD #if
+ expression to exclude this function definition. OpenBSD 2.1 beta
+ doesn't need it. Patch from Hugh Daniel <hugh@ecotone.xanadu.com>
+
+Tue May 27 04:35:17 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/cp.c: Use base_name, not basename.
+ * src/dircolors.c: Likewise.
+ * src/install.c: Likewise.
+ * src/ln.c: Likewise.
+ * src/mv.c: Likewise.
+ * src/mvdir.c: Likewise.
+ * src/rm.c: Likewise.
+
+ * configure.in: Add AC_SYS_LONG_FILE_NAMES.
+ Check for pathconf.
+ Don't replace basename. Now we use only base_name.
+ Clean up kludge that worked around a bug (now-fixed) in automake.
+
+ * lib/argmatch.h Change dcl of program_name so it doesn't conflict
+ with the ubiquitous char* one.
+
+ * lib/addext.c: New file.
+ * lib/Makefile.am (libfu_a_SOURCES): Add addext.c.
+ Remove getversion.c; get_version is now in backupfile.c.
+ Add basename.c since it's no longer replacible.
+
+ * lib/getopt.c: Update from glibc via patch-2.2.93.
+ * lib/getopt1.c: Likewise.
+ * lib/getopt.h: Likewise.
+ * lib/argmatch.h: Update from FSF via patch-2.2.93.
+ * lib/argmatch.c: Likewise.
+ * lib/backupfile.c: Likewise.
+ * lib/backupfile.h: Likewise.
+ * lib/basename.c: Likewise.
+
+Sun May 25 09:21:01 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/copy.c (copy_internal): When preserving symlinks
+ (--no-dereference) and the destination file is a symlink,
+ use stat (not xstat) to see if it points back to the source.
+ Reported by James <james@albion.glarp.com>.
+
+ * src/du.c: Remove global variable opt_human_readable.
+ (enum Output_units): Rename from output_size.
+ Rename size_* to Unit_*.
+ Add Unit_variable to correspond to --human-readable.
+ (convert_blocks): Remove now-unused definition.
+ (human_readable): Rename paramater n_bytes to n_blocks.
+ Adjust conversions to reflect fact that input is now number of
+ 512-byte blocks, not bytes.
+ (print_size): New function.
+ (du_files): Use print_size instead of open coding it.
+ (count_entry): Always count in units of 512-byte blocks to delay.
+ This lets du accumulate totals corresponding to a terabyte before
+ overflowing 32-bit long int.
+ Use print_size instead of open coding it.
+
+ Tue Feb 4 11:58:49 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * src/du.c (convert_blocks): Remove now-unnecessary #undef.
+ (du_files): Pass output_size unchanged to convert_blocks. No need
+ to test output_size for size_bytes, convert_blocks handles that
+ correctly.
+ (count_entry): Likewise.
+
+ * src/system.h (convert_blocks): Remove definition.
+ * src/ls.c (convert_blocks): Add definition.
+
+Sun May 25 09:11:17 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/du.c [AIX]: Remove unused #pragma alloca.
+
+Sat May 24 09:20:12 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/rmdir.c: New options: --ignore-fail-on-non-empty and --verbose.
+ (remove_parents): Implement new options.
+ (main): Likewise.
+
+ * lib/mountlist.c (read_filesystem_list): Show automount-related
+ duplicate filesystems only when --all specified. With suggestions
+ from Stuart Kemp. Also indent cpp directives.
+
+ * configure.in (AC_CHECK_FUNCS): Add hasmntopt.
+ (AC_CHECK_HEADERS): Add sys/mntent.h.
+ (ALL_LINGUAS): Add Czech (cs).
+
+Wed Mar 26 23:43:57 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/du.c (main): Implement new --max-depth=N option.
+ Based on the idea and a patch from Torbjorn Lindgren.
+ (du_files): Likewise.
+ (count_entry): Likewise.
+
+Sat Mar 22 20:29:10 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * missing: New file -- from the automake-1.1m distribution.
+
+Fri Mar 21 23:58:12 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Require automake-1.1l.
+ (aclocal.m4): Use aclocal's new -I option.
+
+Thu Mar 13 21:27:36 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/mktime.c: (TIME_T_MIN): Work around a bug in Cray C 5.0.3.0.
+
+Wed Mar 12 23:11:11 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/chgrp.c (change_file_group): Use uid of -1 to indicate
+ we don't want to change the file's user ID.
+
+ * m4/gettext.m4: Update from gettext-0.10.27.
+
+ * acconfig.h (chown): Add #undef.
+
+ * configure.in (ALL_LINGUAS): Add ko.
+ Use jm_FUNC_CHOWN.
+ * m4/chown.m4: New file.
+ * m4/Makefile.am (EXTRA_DIST): Add chown.m4.
+ * lib/chown.c: New file.
+ * lib/Makefile.am (EXTRA_DIST): Add chown.c.
+
+Sun Mar 9 22:46:41 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/ls.c (decode_switches): Ignore value of COLUMNS envionment
+ variable when it is the empty string. Suggestion from Ulrich Drepper.
+ This makes it easier on people using shells (which?) with which it
+ is not easy to unset environment variables.
+
+Wed Feb 26 23:46:39 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/getdate.y: (tYEAR_UNIT): Increase yyRelYear by $1, not just by 1.
+ From Andreas Schwab.
+
+ * src/copy.c (copy_internal): When there is any potential for
+ ambiguity in a diagnostic, give explanatory diagnostic in addition
+ to file name.
+ * src/cp.c (re_protect): Likewise.
+
+Sat Feb 22 14:10:25 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/getdate.y
+ (tMONTH_UNIT): Increase yyRelMonth by $1, not just by 1.
+ (tDAY_UNIT): Likewise for yyRelDay.
+ (tHOUR_UNIT): Likewise for yyRelHour.
+ (tMINUTE_UNIT): Likewise for yyRelMinutes.
+ (tSEC_UNIT): Likewise for yyRelSeconds.
+ Matthew S. Levine reported that touch -d yesterday didn't work.
+
+Thu Feb 20 20:16:59 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/mktime.c: Update from libc.
+ * lib/strtol.c: Update from libc.
+
+Wed Feb 19 22:06:32 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/ls.c (main): Remove trailing slashes from command line arguments.
+ Otherwise, running `mkdir x; chmod 644 x; ls -d x/' (note the trailing
+ slash) makes ls fail with permission denied on at least Linux 1.2.13
+ and 2.0.14 systems.
+
+Wed Feb 5 21:54:17 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/ls.c (quote_filename): Allocate two more bytes (for quotes)
+ when using --quote-name (-Q).
+ Feb 2 change wasn't complete. Patch from Mark Harris.
+
+Mon Feb 3 21:49:55 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * po/POTFILES.in: Add copy.c and cp-hash.c. Remove cp-aux.c.
+
+Sun Feb 2 09:40:37 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/system.h [__GNUC__]: Don't define alloca to __builtin_alloca.
+
+ * Makefile.am (SUBDIRS): Add tests.
+
+ * configure.in (AC_OUTPUT): Add tests/Makefile and tests/ls/Makefile.
+ * tests: New directory.
+ * tests/ls: New directory.
+
+ * src/ls.c (quote_filename): Don't backslash-escape double quotes.
+ This fixes a problem whereby columns weren't aligned when some files
+ contained double quote characters and ls's --escape (-b) option was
+ used. Reported by Mark Harris.
+
+ * src/cp-hash.c (struct entry): Move dcl to this file from cp.h.
+ (struct htab): Likewise.
+ No longer include cp.h. Instead, include the things it used to
+ include.
+ (hash_insert2): Make function static. Move this function to precede
+ the sole function from which it is called.
+
+ * src/Makefile.am (noinst_HEADERS): Add copy.h, cp-hash.h.
+ Remove cp.h.
+ (EXTRA_DIST): Remove cp-aux.c and cp-hash.c.
+ (cp_SOURCES): Remove cp-aux.c. Add cp-hash.c.
+ * src/cp-aux.c: Remove file.
+ * src/cp.h: Remove file.
+
+ * src/du.c (hash_insert2): Rename local HTAB to HT to avoid shadowing
+ global.
+
+ * src/dircolors.c [obstack_chunk_alloc]: Define to malloc, not xmalloc
+ to work better with new obstack functions.
+ * src/ls.c (obstack_chunk_alloc): Likewise.
+
+ * src/df.c (main): Rename local I to C to avoid shadowing and to
+ be more consistent. Declare I in inner scopes.
+
+ * po/Makefile.in.in (POTFILES): Redirect to an intermediate file
+ and write-protect POTFILES.
+
+Fri Jan 31 21:13:04 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/chown.c (usage): Make the parenthetical note on --no-dereference
+ a little more general.
+
+ * src/*.c: Compare getopt_long return value against -1, not EOF.
+ Use NULL, not `(int *) 0' as last parameter in getopt_long call.
+ (usage): Bracket bug-reporting address with <> and append a period.
+
+1997-01-27 Paul Eggert <eggert@twinsun.com>
+
+ * src/ls.c (print_long_format): Fix off-by-one problem in size
+ being passed to strftime.
+
+Sun Jan 26 20:17:50 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 3.16.
+
+ * acconfig.h (strftime): Add #undef. From Marcus Daniels.
+
+Sat Jan 25 00:34:39 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/du.c (count_entry): Fix blatant bug (typo?) that made
+ --megabytes report numbers in units of kilobytes.
+ Reported by Galen Hazelwood.
+
+ * src/cp.h: Remove now-unnecessary prototype for is_ancestor.
+
+ * lib/Makefile.am (noinst_HEADERS): Add getdate.h.
+
+ * src/cp-aux.c (is_ancestor): Remove function.
+ * src/cp.c (is_ancestor): Add function.
+
+ * src/cp.h: Remove spurious extern dcl of htab.
+
+ * m4/getgroups.m4: Move the code from configure.in into
+ this macro that resorts to looking for getgroups in -lbsd.
+ Set new shell variable, GETGROUPS_LIB (that callers should check),
+ if it is found there.
+ * configure.in: Check $GETGROUPS_LIB just after jm_FUNC_GETGROUPS.
+ (AC_CHECK_FUNCS): Remove getgroups.
+ Remove code that resorts to looking for getgroups in -lbsd.
+
+ * configure.in (jm_FUNC_GNU_STRFTIME): Use it -- because ls
+ needs a version of strftime that supports the %e format and
+ pretty many systems lack that: NextStep 3.3, Mips Ultrix ?.?.
+ This is a little bit overkill (for now) in that if the strftime
+ in your C library doesn't have all features of GNU strftime (even
+ though it may support %e) ls will be linked with the version of
+ strftime provided with this package. But for an upcoming release,
+ GNU ls will provide an option to allow the user to specify the
+ date format string -- and for that I want to make GNU strftime
+ the default in any case. Think of this as an incentive to use
+ the GNU C library.
+
+Fri Jan 24 23:36:00 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/long-options.c (parse_long_options): Reset optind to zero
+ before just returning so that getopt internals get initialized from
+ the probably-new parameters when/if getopt is called later.
+ From Ulrich Drepper.
+
+Mon Jan 20 06:52:09 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (fu_cv_sys_truncating_statfs): Add preprocessor
+ guard to make sure that this test for Sun brokenness doesn't
+ get a false positive on any other type of system. Eirik Fuller
+ reported that Linux 2.1.20 <sys/vfs.h> has a f_spare member in
+ the statfs struct. And that triggered a false positive.
+
+Thu Jan 9 06:23:18 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * m4/gettext.m4: Remove AC_ISC_POSIX. From Karl Heuer.
+
+Wed Jan 8 16:38:24 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 3.15.
+
+ * src/ls.c (print_long_format): Cast alloca return value to char*.
+
+ * lib/getopt.c (_getopt_internal): Use `_', rather than the
+ (sometimes-)expansion `gettext'.
+
+Tue Jan 7 22:49:55 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/getopt.c: New (more POSIX compliant) version from GNU libc.
+ [_]: Define to gettext also if ENABLE_NLS is defined.
+ This is temporary.
+
+Sun Jan 5 09:33:07 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/ls.c (print_long_format): Avoid making unnecessary copy of
+ date/time string. Patch from Paul Eggert.
+ (print_long_format): NUL-terminate line of output.
+ (print_long_format): Detect and handle strftime failure
+ due to pathologically long strings in locale tables.
+ Patch from Paul Eggert.
+ (print_long_format): Change references to BIGBUF in use of
+ FPUTS macro to references to BUF.
+ Use 11 (not 20) bytes for mode string buffer.
+
+Sat Jan 4 21:14:36 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/ls.c (print_long_format): Clean up vestiges of legacy
+ ctime-oriented code. With internationalization and strftime,
+ you can't presume that %a expands to a 3-byte string.
+ Reported by Ross Ridge.
+ (print_long_format): Use POSIX-mandated %e (blank-padded numeric
+ day of month), not %d (the same number, but *zero*-filled).
+
+Fri Jan 3 21:08:29 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acconfig.h (getgroups): Add #undef.
+ From Marcus Daniels.
+
+Thu Jan 2 21:16:16 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (EXTRA_DIST): Add getgroups.c.
+
+Wed Jan 1 17:30:26 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/getgroups.c: New file.
+
+ * configure.in (AC_ARG_PROGRAM): Remove explicit use.
+ It's implicit in AM_INIT_AUTOMAKE. From Wayne Stewart.
+ (list_mounted_fs): Fix typo (by declaring NUMSYS) in test for
+ getfsstat on osf1. From hitchens@epa001.enet.dec.com.
+
+Sun Dec 29 21:55:13 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (jm_FUNC_GETGROUPS): Use it.
+
+Sat Dec 28 14:32:05 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/ls.c: Two problems fixed by these changes from Joakim Rosqvist.
+ Quoting Joakim:
+ 1) The "total" number and the size of the first file as
+ output from 'ls --color -s' did not get colorized according
+ to the "no"-argument in LS_COLORS. Fixed by adding a function
+ prep_non_filename_text which prints the C_LEFT C_NORM C_RIGHT
+ strings (or C_END). It is called from main before any text is
+ output, and from print_name_with_quoting after having output a
+ colorized filename.
+ 2) If the "no"-argument of LS_COLORS is set, the terminal will be
+ set to print in that color after ls exits. The man-pages suggests
+ setting "no" and "fi" to the terminals default colors to avoid
+ the problem, but that would mean I can't use anything but the
+ default color for regular files and non-filename text. Fixed by
+ outputting C_LEFT immediately followed by C_RIGHT right before
+ exit, which restores the default color.
+
+Fri Dec 27 17:29:02 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Makefile.am (aclocal.m4): No longer depend on acinclude.m4.
+
+ * configure.in: AC_REQUIRE version 2.12 of autoconf.
+
+Sun Dec 22 23:29:10 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acinclude.m4: Move macros to individual files in new directory, m4/.
+ See ChangeLog entries in sh-utils for the details.
+
+Wed Dec 18 23:09:19 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/dircolors.hin (ORPHAN): By default, color orphans red on
+ a black background.
+
+ * src/dircolors.c (usage): Remove --print-data-base.
+ Now only --print-database remains. Although it wasn't documented,
+ --print-data-base was still accepted. But it made `--p', `--print',
+ `--print-data', etc. ambiguous.
+
+ * src/ls.c (gobble_file): Stat symlinks also when printing with
+ color and set linkok to reflect existence of referent.
+ Patches from Joakim Rosqvist, James Antill, and Jesse Thilo.
+
+Tue Dec 17 21:03:40 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/system.h (ISDIGIT): Replace with smaller, faster edition
+ that yields nonzero only on ASCII digits.
+ (ISDIGIT_LOCALE): New macro, with same meaning that ISDIGIT
+ used to have. From Paul Eggert.
+ * lib/backupfile.c (ISDIGIT): Likewise.
+ * lib/getdate.y (ISDIGIT): Likewise.
+
+ * src/cp.c (ROOT_CHOWN_AFFECTS_SYMLINKS): New macro.
+ (DO_CHOWN): Take an additional parameter.
+ (LINK_CHOWN): Remove macro.
+ (copy): When preserving owner and group of a symlink, use
+ chown only if ROOT_CHOWN_AFFECTS_SYMLINKS and EUID == 0.
+ Otherwise, the chown would affect the file referenced through
+ the symlink.
+
+Sat Dec 14 14:51:50 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acinclude.m4 (jm_SYS_PROC_UPTIME): Fix typo in cache variable
+ name for cross compiling.
+ Remove definitions of gettext-related macros. The gettext
+ installation procedure installs corresponding .m4 files so that
+ aclocal will use them.
+
+Wed Dec 11 19:34:22 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 3.14.
+
+Tue Dec 10 00:14:24 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in: Bump version to 3.13k.
+
+ * src/install.c [_POSIX_VERSION]: Don't declare wait. That
+ declaration conflicted with one in a system header file on
+ i386-pc-isc3.0, now that I've removed the AC_ISC_POSIX macro
+ and _POSIX_VERSION is no longer defined.
+ Reported by Karl Heuer.
+
+ * configure.in (AC_ISC_POSIX): Remove kludgy macro.
+ Use this test instead:
+ (LIBS): Add -lcposix if it contains strerror.
+ Patch from Karl Heuer.
+
+ * lib/Makefile.am (EXTRA_DIST): Add mktime.c.
+ Reported by Thomas Bushnell.
+ * (EXTRA_DIST): Add strftime.c to appease automake.
+ Although it's not used yet, it'll be used by ls's (to-be-done)
+ --format=FORMAT option.
+
+Mon Dec 9 18:26:54 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/obstack.h: Include config.h.
+ [!HAVE_BCOPY && HAVE_MEMCPY && !defined (bcopy)]: Define bcopy
+ in terms of memcpy. Reported by Marcus Daniels.
+
+ * configure.in (LIBOBJS): After AC_FUNC_FNMATCH, add fnmatch.o
+ and define fnmatch to rpl_fnmatch if necessary.
+
+ * acconfig.h (fnmatch): Add undef.
+
+ * src/df.c (find_mount_point): Convert from K&R style header to ANSI.
+ Patch from Kaveh Ghazi.
+
+Sun Dec 8 07:22:38 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ =========== Update for automake-1.1k.
+ * Makefile.am (AUTOMAKE_OPTIONS): Require 1.1k.
+ * configure.in (AM_CONFIG_HEADER): Use it.
+ (AC_OUTPUT): Remove stamp-h timestamping statement.
+ Now, AM_CONFIG_HEADER does it automatically.
+ * lib/Makefile.am (noinst_LIBRARIES): Rename to libfu.a as per
+ new automake requirement.
+ Rename fu_* variables to libfu_a_*.
+
+Mon Dec 2 20:30:20 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (jm_FUNC_MKTIME): Use this instead of AM_FUNC_MKTIME.
+
+ * src/system.h [!S_IXUGO] (S_IXUGO): Define it.
+
+ * src/ls.c (print_color_indicator): Check the file's suffix only
+ if it's a regular file.
+ Reported by Santiago Vila Doncel.
+ (print_type_indicator): Use S_IXUGO instead of writing out
+ (S_IEXEC | S_IXGRP | S_IXOTH).
+ (length_of_file_name_and_frills): Likewise.
+
+Sun Dec 1 13:07:39 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/getdate.y (date): Interpret the date, L/M/N, as YYYY/MM/DD
+ if L >= 1000, otherwise as MM/DD/YY. With this change,
+ date --date=DATE accepts dates like those in an RCS log listing.
+
+Sat Nov 30 22:11:42 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acinclude.m4: (jm_FUNC_MKTIME): New macro. This is like
+ AM_FUNC_MKTIME, but with one addition: when it replaces the
+ function, it also redefines mktime to gnu_mktime.
+
+Fri Nov 29 21:19:13 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/install.c (copy_file): Allow installation from non-directory
+ (rather than only regular) files. Suggestion from Charles Karney.
+
+ * src/df.c (main): Accept -F as a synonym for -t for compatibility
+ with Solaris. From Peter Eriksson.
+
+ * src/ls.c (main): Close stdout and check result, in case any
+ deferred writes fail.
+ Use EXIT_SUCCESS and EXIT_FAILURE in exit and usage calls.
+
+Thu Nov 28 13:10:22 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/df.c (find_mount_point): Use strip_trailing_slashes and dirname
+ instead of open-coding them. When given FILE containing no slashes,
+ chdir to the directory containing it (the current directory) rather
+ than to `..'.
+
+ Tue Nov 5 14:51:56 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * src/df.c (find_mount_point): Use save_cwd/restore_cwd.
+ "save-cwd.h": New include.
+
+ Wed Oct 30 00:21:16 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * lib/fsusage.c (get_fs_usage): If DISK is 0 and we needed to use
+ it, return -1 with 0 in ERRNO.
+ * src/df.c (show_dev): Deal with null values for DISK and FSTYPE,
+ including interpreting special 0 errno return from get_fs_usage.
+ (show_point): Don't fail if we can't find a mount entry for POINT,
+ just call show_dev with 0 values and let it fail if necessary.
+ (main): Require a non-zero MOUNT_LIST only if showing all filesystems.
+ (find_mount_point): New function.
+ (xgetcwd): New declaration.
+
+Thu Nov 28 00:31:11 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AM_GNU_GETTEXT): Renamed from ud_GNU_GETTEXT
+ for gettext-0.10.25.
+
+Tue Nov 26 23:24:13 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acinclude.m4: Update with macros from gettext-0.10.25.
+
+Sun Nov 24 22:43:24 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acconfig.h (mktime): Add undef for my enhanced (beyond automake's
+ 1.1g version of) AM_FUNC_MKTIME.
+
+ * acinclude.m4 (AM_FUNC_GETLINE): Use am_, not su_ prefix for
+ local/cache variables.
+
+Sat Nov 23 16:11:59 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (EXTRA_DIST): Add getline.c now that getline
+ isn't mentioned in AC_REPLACE_FUNCS.
+
+ * lib/Makefile.am (EXTRA_DIST):
+
+ * chgrp.c (usage): Alphabetize option descriptions the way
+ sort -f would.
+ * chown.c (usage): Likewise.
+ * cp-aux.c (usage): Likewise.
+ * df.c (usage): Likewise.
+ * install.c (usage): Likewise.
+ * ln.c (usage): Likewise.
+ * ls.c (usage): Likewise.
+ * mkdir.c (usage): Likewise.
+ * mv.c (usage): Likewise.
+ * rm.c (usage): Likewise.
+ From Karl Berry.
+
+Fri Nov 22 22:14:10 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_REPLACE_FUNCS): Don't try to replace getline this
+ way. AM_FUNC_GETLINE does it now.
+ (AM_FUNC_GETLINE): Use it here.
+
+ * src/cp.c (copy): With -i and not -f, prompt for any type of
+ (non-directory) source file before overwriting an existing target.
+ Reported by Mark A. Thomas and Emile LeBlanc.
+
+Tue Nov 19 23:10:32 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AM_SANITY_CHECK_CC): Remove it. Autoconf-2.11
+ has this built-in.
+ (AC_FUNC_FNMATCH): Use this macro (new with autoconf-2.11) instead
+ of open-coding it.
+
+Sun Nov 17 20:53:00 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/touch.c: Remove unused declaration of mktime. From Tony Leneis.
+
+Mon Nov 4 23:18:03 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (test for group_member): Handle it separately
+ so I can keep the hyphen (not the underscore) in the filename.
+
+ * lib/rename.c: New version from François Pinard.
+
+Sat Nov 2 07:05:36 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/ls.c (gobble_file): Set linkok for non-orphaned symlinks.
+ From Bauke Jan Douma.
+ (gobble_file): Initialize linkok.
+ With these two changes, ls --color should display orphaned symlinks
+ as blinking text on terminals that support it.
+
+ * configure.in (ALL_LINGUAS): Add Spanish (es).
+
+ * doc/Makefile.am (MAKEINFO): Set to makeinfo --no-split.
+ Otherwise, the generated info files have names longer than
+ the 14-byte max of some old systems.
+ Reported by Karl Heuer.
+
+Tue Oct 29 06:49:16 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/ls.c (decode_switches): Make -A set really_all_files to zero
+ as well as setting all_files to 1. With this change, ls -f -A prints
+ everything but . and .., unsorted. Before, the -A was effectively
+ ignored. From Karl Berry.
+
+Tue Oct 22 07:00:00 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/Makefile.am (dircolors.h): Depend on dcgen only in maintainer
+ mode.
+
+Mon Oct 21 16:52:28 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (EXTRA_DIST): Remove group-member.c.
+ Add (temporary hack to work around bug in automake-1.1f) mvdir.c and
+ rmdir.c.
+
+ * configure.in: Remove hack that created link from group_member.c
+ to group-member.c.
+
+ * lib/group_member.c: New file. Renamed from group-member.c.
+ * lib/group-member.c: Delete.
+
+ * src/dircolors.hin: Comment out DOS-style suffixes.
+
+Sun Oct 20 13:49:25 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (INCLUDES): Add -I../intl. Reported by Eric Backus.
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Set to `gnits'.
+ (EXTRA_DIST): Remove.
+
+ * configure.in: Remove README_ALPHA related code. Automake takes
+ care of it automatically now when in gnits mode.
+
+Sun Oct 13 14:02:41 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/ls.c (print_long_format): Use strftime of localtime
+ (not ctime) to produce the date/time in long listings.
+ From Rafal Maszkowski.
+
+Sat Oct 12 18:20:38 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/mountlist.c (fstype_to_string): Handle fstypes of freebsd.
+ From Arne Henrik Juul.
+
+Thu Oct 10 23:47:34 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (EXTRA_DIST): Remove posixtm.y and getdate.y.
+ (fu_SOURCES): Put them here instead.
+ Remove rules for building getdate.c and posixtm.c; now automake
+ generates those rules.
+ * lib/ylwrap: New file.
+ * lib/interlock: New file.
+
+Wed Oct 9 06:51:47 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/ls.c (usage): Improve brief descriptions of --sort and --time.
+ From François Pinard.
+
+ * lib/rpmatch.c [!WITH_REGEX]: Include rx.h.
+ From Andreas Schwab.
+
+Mon Oct 7 23:31:10 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (EXTRA_DIST): Remove names of several files
+ that automake adds automatically.
+ (fu_SOURCES): Likewise.
+ (fu_DEPENDENCIES): Depend on fu_LIBADD.
+
+ * src/chown.c (usage): Improve usage message.
+ * src/cp-aux.c (usage): Likewise.
+ * src/ls.c (usage): Likewise.
+ * src/install.c (strip): Improve diagnostic.
+ From Ulisses Alonso.
+
+ * src/Makefile.am (noinst_HEADERS): Add dircolors.h.
+ (dircolors.h): Always depend on dcgen.
+
+Sat Oct 5 08:07:03 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acinclude.m4 (AM_FUNC_ERROR_AT_LINE): New macro.
+ (AM_FUNC_OBSTACK): New macro.
+
+ * configure.in (AM_FUNC_ERROR_AT_LINE): Use this instead of
+ open-coding it.
+ (AM_FUNC_OBSTACK): Likewise.
+
+ * lib/filemode.c (ftypelet) [HAVE_ST_DM_MODE]: Add support for
+ Cray's migrated dmf files.
+ * src/ls.c (print_long_format) [HAVE_ST_DM_MODE]: Likewise.
+ * acconfig.h [HAVE_ST_DM_MODE]: New macro.
+ From Johan Danielsson.
+
+ * acinclude.m4 (AC_HEADER_SYS_TIME_H): New macro.
+ (AM_FUNC_MKTIME): Require AC_HEADER_SYS_TIME_H so that configure's
+ checking... messages don't get nested.
+
+ * configure.in (GNU_PACKAGE): New variable.
+ (PACKAGE_VERSION): Remove it.
+
+ * acconfig.h (GNU_PACKAGE): New variable.
+ (PACKAGE_VERSION): Remove now-unused variable.
+
+ * src/*.c: Update --version output to conform to the coding standard.
+
+Wed Oct 2 21:44:36 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/dircolors.c (usage): Deprecate --print-data-base even though
+ that's the way GNU make writes it. `database' is one word.
+ Add description of FILE argument.
+
+Tue Oct 1 12:56:23 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (fu_SOURCES): Remove getline.c.
+ (EXTRA_DIST): Add getline.c.
+ Reported by François Pinard.
+
+Mon Sep 30 20:08:45 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/Makefile.am (dircolors.h): Don't depend on anything unless
+ in maintainer-mode. Reported by Marcus Daniels.
+
+ * lib/path-concat.c (path_concat): Use K&R style function definition.
+
+Sun Sep 29 22:00:44 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (ALL_LINGUAS): Add slovenian (sl).
+
+ * src/cp-aux.c (usage): Take only one argument -- like all the other
+ usage functions.
+
+ * src/cp.c (do_copy): Give better error message when copying multiple
+ files and the last one is not a directory. From Karl Berry.
+ Call error (0, 0, ... then usage (1) -- instead of calling usage
+ with two arguments.
+
+Sat Sep 28 13:16:29 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/getversion.c (backup_types): Declare const.
+ (backup_args): Likewise.
+
+Sat Sep 21 10:22:28 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/dircolors.c (xstrndup): Use message that's the same as the one
+ you get from e.g., xmalloc. Reported by Santiago Vila.
+
+Thu Sep 19 22:13:31 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (fu_SOURCES): Remove regex.c and rx.c.
+ (EXTRA_DIST): Put them here instead.
+
+ * configure.in ($PACKAGE, $VERSION): Don't AC_DEFINE_UNQUOTED these.
+ AM_INIT_AUTOMAKE now does it (as of automake-1.1e).
+
+ * lib/Makefile.am (fu_SOURCES): Move getopt.c and getopt1.c back to
+ here fro EXTRA_DIST.
+ * configure.in (AC_REPLACE_GNU_GETOPT): Remove it -- it's not
+ necessary.
+
+ * acinclude.m4 (AM_SANITY_CHECK_CC, AC_SYS_POSIX_TERMIOS,
+ AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL): Remove definitions.
+ Now automake's aclocal includes them.
+
+Sun Sep 15 23:08:48 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Makefile.am (EXTRA_DIST): Remove acinclude.m4.
+
+Mon Sep 9 21:39:49 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/cp.c (do_copy): Describe in a little more detail the code
+ that makes `cp non-directory file/' (eventually) fail.
+
+Sun Sep 8 12:54:31 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/dircolors.c (usage): Refer to LS_COLORS, not LS_COLOR.
+ From Santiago Vila Doncel.
+
+ * src/cp.c (do_copy): Set backup_type to `none' only *after*
+ calling to find_backup_file_name. Reported by Eli Zaretskii.
+
+Sat Sep 7 12:25:42 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/regex.c, lib/regex.h: New files.
+ * lib/rx.c, lib/rx.h: New files.
+
+ * lib/Makefile.am (INCLUDES): Add -I../intl so compiler will find
+ libintl.h for rpmatch.c.
+
+ * src/system.h: Add comments justifying IS* versions of ctype.h macros.
+
+Thu Sep 5 18:12:44 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/chmod.c (main): Don't set verbose flag for --changes.
+ (change_file_mode): If chmod succeeds and --changes was given,
+ give a diagnostic describing the new permissions.
+ Reported by Philippe Schnoebelen (phs@fing.edu.uy).
+
+ * src/cp.c (do_copy): When concatenating DEST (with a trailing `/')
+ and the basename part of non-directory SOURCE, don't add a slash
+ between them.
+
+Wed Sep 4 21:42:32 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/rpmatch.c: Make sure NULL is defined by including stddef.h
+ (if STDC_HEADERS || _LIBC) or simply defining it (otherwise).
+ Include sys/types.h for definition of size_t needed by regex.h.
+
+ * lib/Makefile.am (fu_SOURCES): Add regex.c and rx.c.
+ (noinst_HEADERS): Add regex.h and rx.h.
+
+ * configure.in (AM_SANITY_CHECK_CC): Use it.
+ (AM_WITH_REGEX): Use it.
+
+ * acconfig.h (WITH_REGEX): Add it.
+
+Tue Sep 3 08:13:09 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/rpmatch.c (rpmatch): Set yesexpr to "^[yY]" and noexpr to
+ "^[nN]"; this conforms to POSIX.2. From Paul Eggert
+ <eggert@twinsun.com>.
+
+Mon Sep 2 10:59:10 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * POTFILES.in: Add lib/rpmatch.c.
+
+ * lib/rpmatch.c (ENABLE_NLS): Include libintl.h and define _ to
+ gettext.
+
+ * src/*.c (usage): Tell where to report bugs.
+
+Sat Aug 31 18:48:18 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/touch.c (utime_now): Protoize.
+ Reported by David S. Miller (davem@caip.rutgers.edu).
+
+Sun Aug 25 22:43:15 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acinclude.m4 (AM_FUNC_MKTIME): New macro.
+ * configure.in (AM_FUNC_MKTIME): Use it.
+ (AC_REPLACE_FUNCS): Remove mktime.
+
+Wed Aug 21 23:17:04 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/Makefile.am (EXTRA_DIST): Remove ansi2knr.1 and ansi2knr.c.
+ Automake includes them automatically.
+
+ * configure.in (AM_INIT_AUTOMAKE): Use it.
+ (AM_PROG_INSTALL): Remove. AM_INIT_AUTOMAKE does this.
+ (AC_PROG_MAKE_SET): Likewise.
+
+Sun Aug 18 09:52:39 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (jm_MAINTAINER_MODE, fp_C_PROTOTYPES): Rename with
+ AM_ prefix for latest automake/aclocal.
+
+ * lib/Makefile.am (noinst_HEADERS): Add path-concat.h.
+ (fu_SOURCES): Add path-concat.c.
+
+ * src/mv.c: Include path-concat.h.
+ (movefile): Use path_concat instead of open-coding its functionality.
+ Declare pointer parameters const as appropriate.
+
+ * src/cp.c: Include path-concat.h.
+ (do_copy): Check path_concat return value.
+ (path_concat): Remove function.
+
+ * lib/path-concat.h: New file.
+ * lib/path-concat.c (path_concat): New file. Just like the function
+ from cp.c except the stand-alone version uses malloc instead of
+ xmalloc.
+
+ * configure.in (ALL_LINGUAS): Add Dutch (nl).
+
+Fri Aug 16 21:59:24 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/chgrp.c (parse_group): Don't abort when given a group number
+ larger than INT_MAX. Fix bug whereby root could run
+ `chgrp INVALID-GROUP FILE' and it wouldn't fail, but rather would
+ change FILE's group to some indeterminate value. This problem
+ was reported as Debian Bug#4119 via Erick Branderhorst
+ (branderh@IAEhv.nl).
+ Declare pointer parameters const as appropriate.
+
+Thu Aug 1 22:12:15 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/system.h (ST_NBLOCKS) [_CRAY]: Special case for Cray.
+ * lib/fsusage.c (get_fs_usage) [STAT_STATFS4] [_CRAY]: Define
+ f_bavail to f_bfree.
+ From Johan Danielsson.
+
+Wed Jul 31 23:39:23 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/ln.c [LINK_TYPE]: Remove macro. NLS messages aren't
+ extracted from macros. Reported by Santiago Vila.
+ (link_type_string): New global variable to be used instead of
+ LINK_TYPE.
+ (main): Set it here.
+ (do_link): Use it (instead of macro) here.
+
+Tue Jul 30 23:24:18 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_CHECK_HEADERS): Add sys/fs/s5param.h.
+ * lib/fsusage.c [HAVE_SYS_FS_S5PARAM_H]: Include sys/fs/s5param.h
+ to work around bug in sys/filsys.h of Fujitsu UXP/V.
+ From by Johan Danielsson.
+
+ * src/cp.c (DO_CHOWN): New macro -- derived from code in copy.
+ (copy): Use DO_CHOWN to assure that any newly-created symbolic
+ links have proper owner and group.
+
+Sat Jul 27 17:22:14 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/system.h (bindtextdomain) [!ENABLE_NLS]: Undefine to avoid
+ redefinition warnings on solaris.
+ (textdomain) [!ENABLE_NLS]: Likewise.
+
+Thu Jul 25 21:10:42 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/chgrp.c (main): Fix typo in getopt_long string: s/n/h/.
+ Reported by Ken Pizzini.
+
+Wed Jul 24 22:24:37 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/dircolors.c (usage): Remove -h. It is not an option.
+ Reported by Ulrich Drepper.
+
+Sun Jul 21 11:58:48 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_CHECK_HEADERS): Add sys/timeb.h for lib/getdate.y.
+ This was a problem for SCO OSR5. From Bela Lubkin <belal@sco.com>.
+ (statvfs test): Arrange for this test to fail (as it should) for
+ SCO OSR5. Suggestion from Bela Lubkin.
+
+ * src/Makefile.am (BUILT_SOURCES): Remove @MAINT@.
+ (dircolors.h): Remove @MAINT@. These prevented `make distcheck'
+ from working sometimes.
+
+ * lib/yesno.c (yesno) [!HAVE_RPMATCH]: Remove function since we'll
+ always use the rpmatch-based version.
+ Declare rpmatch.
+
+ * lib/rpmatch.c [STDC_HEADERS]: Guard inclusion of stdlib.h.
+ (_) [!_]: Define it.
+ (try): Add RESPONSE parameter.
+ (rpmatch): Update caller.
+ Anchor regular expressions to beginning of string.
+
+ * configure.in (AC_CHECK_FUNCS): Don't check rpmatch.
+
+ * acconfig.h (HAVE_OBSTACK): Undef it.
+
+ The following is from Ulrich Drepper.
+
+ * configure.in (AC_REPLACE_FUNCS): Add rpmatch.
+ * lib/Makefile.am (EXTRA_DIST): Add rpmatch.c.
+ * lib/rpmatch.c: New file.
+ * lib/yesno.c (yesno): New rpmatch-based version of the function.
+ * config.h.in (HAVE_RPMATCH): Undef it.
+
+ * lib/Makefile.am (EXTRA_DIST): Put error.c and obstack.c here...
+ (fu_SOURCES): Instead of here.
+
+ * configure.in (AC_CHECK_FUNCS): Add rpmatch.
+ Add checks for error_at_line and obstacks so systems with GNU libc
+ don't compile and link with distributed error.c and obstack.c.
+
+ * configure.in (AC_REPLACE_FUNCS): Replace getline.c.
+ Add related check for the getdelim function. As done in gettext.
+
+Sat Jul 20 17:01:56 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (fu_SOURCES): Remove error.c, and obstack.c.
+ (EXTRA_DIST): Add error.c, and obstack.c.
+
+ * configure.in (PACKAGE_VERSION): Use space instead of hyphen to
+ separate PACKAGE and VERSION.
+
+Fri Jul 19 23:28:36 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/cp.c (path_concat): Rewrite to return new parameter.
+ (do_copy): Update uses of path_concat to use new parameter.
+ Use that new pointer to compute correct offset for make_path_private.
+ Before, cp --recursive --parents SRC DEST failed when SRC was
+ an absolute file name. E.g.,
+ % cd /tmp; rm -rf d f; mkdir d; touch f; cp -PR /tmp/f d
+ cp: tmp: No such file or directory
+ Reported by Horst von Brand vonbrand@sleipnir.valparaiso.cl.
+
+Thu Jul 18 21:58:51 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/install.c [_AIX]: Add #pragma alloca.
+ From Bernd Leibing <bernd.leibing@rz.uni-ulm.de>.
+
+ * src/chgrp.c (main): Initialize for internationalized message support:
+ call setlocale, bindtextdomain, and textdomain. Reported by
+ Michel Robitaille <robitail@IRO.UMontreal.CA>.
+
+Wed Jul 17 22:37:40 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (ALL_LINGUAS): Add polish (pl).
+
+Mon Jul 15 23:42:57 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Many files: Update FSF address.
+
+Sun Jul 14 07:53:45 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/du.c (usage): Sort option descriptions in dictionary order.
+
+Sat Jul 13 07:34:24 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/dircolors.c (long_options): Add missing last line of NULL
+ entries. From Ralph Loader <loader@maths.ox.ac.uk>.
+
+Thu Jul 11 21:50:48 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 3.13.
+
+ * dircolors.1: New file -- but just a pointer to texinfo docs.
+ * man/Makefile.am (man_MANS): Add dircolors.1.
+
+ * configure.in (VERSION): Bump to 3.13.
+
+Wed Jul 10 22:57:29 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * aclocal.m4 (fp_PROG_CC_STDC): Include sys/stat.h in test program
+ so that DYNIX/ptx V4.1.3 doesn't use `-Xc -D__EXTENSIONS__' -- with
+ those options on that system, sys/stat.h gets compile errors.
+ With help from Marcus Daniels.
+
+ * getopt.c: Update from gettext-0.10.23.
+ * getopt1.c: Likewise.
+ * getopt.h: Likewise.
+
+Tue Jul 9 20:19:44 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/dircolors.c (usage): Improve --help message. From Karl Berry.
+ (long_options): Add print-data-base and print-database.
+
+ * src/dircolors.c (dc_parse_stream): Don't give `unrecognized keyword'
+ message unless we've processed a matching TERM directive. Reported
+ by Karl Berry and François Pinard.
+
+ * src/install.c (UID_T_MAX): Use `(unsigned long)1' rather than
+ `(uid_t)1' to avoid problems on systems where uid_t is signed.
+ (GID_T_MAX): Likewise for gid_t.
+ From Kjetil Torgrim Homme.
+
+Sun Jul 7 22:40:08 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/ls.c: Change initial colors for `color_indicator' to match
+ those currently in dircolors.hin. From Joshua Cowan.
+
+ * src/dircolors.hin: Recognize more filename extensions.
+ From Joshua Cowan.
+
+ * src/Makefile.am (CLEANFILES): Add dcgen. From Joshua Cowan
+ <jcowan@jcowan.reslife.okstate.edu>.
+
+ * src/Makefile.am (MAINTAINERCLEANFILES): Add dircolors.h.
+
+ * configure.in (AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL): Use it.
+ * acconfig.h [GWINSZ_IN_SYS_IOCTL]: Add #undef.
+
+ * src/ls.c: Include termios.h.
+ Guard inclusion of sys/ioctl.h with #ifdef GWINSZ_IN_SYS_IOCTL,
+ rather than HAVE_SYS_IOCTL_H. Modelled after sh-utils' stty.c
+ at suggestion from Chip Bennett <BennettC@j64.stratcom.af.mil>
+ to make ls adjust its idea of screen width upon window resize
+ on systems (SunOS, Solaris) where TIOCGWINSZ is defined in
+ termios.h, and not sys/ioctl.h.
+
+ * aclocal.m4 (AM_SYS_POSIX_TERMIOS): New macro, derived from test
+ in the configure.in from sh-utils.
+ (AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL): Likewise.
+
+Sat Jul 6 12:46:27 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/cp-aux.c (usage): Factor out backup-related text into
+ separate string/printf statement so translators deal with only
+ one corresponding string in .pot file.
+ * src/install.c (usage): Likewise.
+ * src/ln.c (usage): Likewise.
+ * src/mv.c (usage): Likewise.
+ Suggestion from Santiago Vila Doncel.
+
+ * configure.in (AC_REPLACE_FUNCS): Add group_member.
+ (AC_LINK_FILES): Create link lib/group_member.c to lib/group-member.c.
+ * lib/Makefile.am (fu_SOURCES): Remove group-member.c.
+ (EXTRA_DIST): Add group-member.c here.
+
+Fri Jul 5 22:16:13 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/dircolors.c [!STDC_HEADERS]: Declare free.
+ From Marcus Daniels.
+
+Thu Jul 4 12:34:50 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/dd.c (usage): Remove space before newline in usage message.
+ * src/mknod.c (usage): Likewise.
+ * src/mv.c (usage): Likewise.
+
+ * src/Makefile.am (libexec_PROGRAMS): Regenerate using patched
+ automake-1.0 to work around rm -f bug on Solaris2.4.
+ Reported by Kaveh Ghazi.
+
+ * src/ls.c: Make `dir --version' and `vdir --version' print their
+ names, not `ls'.
+ Reported by Ulrich Drepper.
+
+Wed Jul 3 17:41:15 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/dircolors.c: Include sys/types.h before system.h.
+ From Jim Blandy (jimb@cyclic.com).
+
+ * src/chgrp.c [!MAXUID]: Define after inclusion of system.h to avoid
+ warning about redefinition on SunOS4, Solaris2.4 and SGI-irix5.3.
+ From Kaveh Ghazi. Also, Santiago Vila Doncel reported that defining
+ MAXUID before including system.h caused a compilation failure on some
+ ConvexOS system.
+
+Tue Jul 2 22:56:03 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (VERSION): Bump to 3.12q.
+
+ * src/system.h [!EXIT_SUCCESS]: Define it.
+ [!EXIT_FAILURE]: Define it.
+
+ * lib/strndup.c (strndup): Include stdio.h and sys/types.h to
+ get definition of NULL and size_t on SunOS4.1.3.
+
+Mon Jul 1 23:47:29 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/ln.c (do_link): Update messages to ease translation.
+ Suggestion from Santiago Vila.
+
+Sun Jun 30 16:41:45 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/install.c (usage): Fix typo, 3nd->3rd, in usage message.
+ From Santiago Vila Doncel.
+
+Sat Jun 29 00:33:31 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (PACKAGE_VERSION): Add `GNU ' prefix so we see
+ it in the output of --version. Reported by RMS.
+
+ * src/Makefile.am (BUILT_SOURCES): Guard dependency on dircolors.h
+ with @MAINT@ so it won't be removed with a casual disctlean.
+ (EXTRA_DIST): Add dcgen.pl and dircolors.hin.
+
+Fri Jun 28 22:56:00 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/dircolors.c (dc_parse_stream): Move `enum states' dcl into
+ this function.
+
+ * src/ln.c (do_link): Allow `ln -sf --backup k k' to succeed in
+ creating the self-referential symlink, since doing so doesn't
+ remove the source but merely renames it.
+
+Wed Jun 26 06:58:58 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * ln.c (same_name): New function.
+ (do_link): Use it to test reliably whether A and B (from
+ ln --force A B) are hard links to the same file.
+ From Andreas Schwab.
+
+Tue Jun 25 00:03:43 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/getline.c: New file.
+ * lib/getline.h: New file.
+ * lib/Makefile.am (fu_SOURCES): Add getline.c.
+ (noinst_HEADERS): Add getline.h.
+
+Mon Jun 24 22:39:02 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_REPLACE_FUNCS): Add strndup.
+ (AC_PATH_PROG): Check for perl.
+
+ * ls.c (decode_switches): Allow 0 as argument to --tabsize (-T) option.
+ Interpret as a directive to use no TAB characters to separate columns.
+ (indent): Handle TABSIZE == 0.
+
+ * dircolors.c (dc_parse_stream): Remove spurious newline in
+ error message.
+ (dc_parse_stream): Give `unrecognized keyword' diagnostic for
+ misspelled `TERM' keyword as well as for others.
+
+Sun Jun 23 12:58:32 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * dircolors.hin: New file.
+ * dcgen.pl: New file.
+ * src/Makefile.am (dircolors.h): Add a rule to create this file.
+ (dcgen): Likewise.
+
+ * dircolors.c (parse_line): Rewrite to avoid modifying LINE.
+ Put LINE first in parameter list.
+ Adjust caller.
+ (dc_parse_stream): Free KEYWD and ARG.
+ (main): Give diagnostic for unreasonable combinations of
+ options/arguments.
+
+ * lib/Makefile.am (EXTRA_DIST): Add strndup.c.
+ * configure.in (AC_REPLACE_FUNCS): Add strndup.
+ * strndup.c: New file. From id-utils-3.0k.
+ (strndup): Deansify.
+ [!STDC_HEADERS]: Include string.h and stdlib.h.
+
+Sat Jun 22 16:57:53 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * dircolors.c: Major overhaul. No longer read from /etc/DIR_COLORS
+ or from ~/.dircolors. Defaults are now compiled in. If you specify
+ a file on the command line, it is used instead of the compiled-in
+ defaults.
+ (main): New option --print-database (-p).
+ Detect write failure.
+ Add --bourne-shell and --c-shell aliases for --sh and --csh resp.
+
+Tue Jun 18 20:54:05 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * cp.c (copy_reg): Cast both sides of comparison to size_t
+ to avoid a warning about `comparison between signed and unsigned'
+ from gcc -Wall.
+ Declare pointer parameters const as appropriate.
+
+ * ln.c (do_link): Refine last change so we don't disallow commands
+ like `ln --force A B' when A and B are hard links to the same file.
+ See comments in the source. Reported by Erik Naggum <erik@naggum.no>
+ and Andreas Schwab.
+
+ * ls.c (decode_switches): Correct typo in error messages:
+ enironment -> environment. From Santiago Vila Doncel
+ <sanvila@unex.es>.
+
+ * aclocal.m4: Update from gettext-0.10.20.
+ * ABOUT-NLS: Likewise.
+ * intl/*: Likewise.
+
+ * cp.c (do_copy): Change message from `missing file argument' to
+ more precise `missing destination file'. From Karl Berry.
+
+ * ln.c (STREQ): Remove macro definition
+ * system.h (STREQ): Add it here instead.
+ * cp.c (do_copy): Use STREQ here instead of strcmp(...) == 0.
+ * ls.c (parse_ls_color): Likewise.
+ * df.c (selected_fstype, excluded_fstype, show_disk, main): Likewise.
+
+ * cp.c (do_copy): When the force and backup options have been
+ specified and the source and destination are the same name for an
+ existing, regular file, convert the user's command, e.g.
+ `cp --force --backup foo foo' to `cp --force foo fooSUFFIX'
+ where SUFFIX is determined by any version control options used.
+ (usage): Update --help message.
+ At urging of (most recently) Karl Berry.
+
+Sun Jun 16 13:40:22 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * doc/Makefile.am (EXTRA_DIST): Add texinfo.tex.
+
+ * Makefile.am (cvs-dist): Use -c option in cvs tag command.
+
+Sat Jun 15 22:21:09 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (ALL_LINGUAS): Add pt.
+ (AC_REPLACE_FUNCS): Add basename.
+
+ * Makefile.am (EXTRA_DIST): Add basename.c.
+ (fu_SOURCES): Remove basename.c.
+
+Thu Jun 6 21:57:08 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * po/Makefile.in.in: Update from gettext-0.10.16.
+ * intl/*: Likewise.
+ * ABOUT-NLS: Likewise.
+ * aclocal.m4 (AC_REPLACE_GNU_GETOPT): Move definition to precede
+ gettext-related ones.
+ Update from gettext-0.10.16.
+
+Sat Jun 1 12:44:51 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * ls.c: Rename options and internal variables to reflect change to
+ --color=WHEN where WHEN is never, always, or auto (for consistency
+ with e.g. cp --sparse=WHEN. For at least a while, the original
+ slackware-supported arguments `none', `force', `yes', etc will be
+ supported but deprecated by lack of documentation.
+ (decode_switches): Use STDOUT_FILENO instead of `1' in isatty test.
+ (usage): Update/add description of the --color option.
+
+ * ls.c: Declare pointer parameters const as appropriate.
+
+Tue May 28 18:39:49 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * dd.c (print_stats): Don't mark "%u %s" as a translatable string.
+ * mv.c (main): Don't mark "%s" as a translatable string.
+ From Göran Uddeborg.
+
+Thu May 23 07:50:38 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * ls.c (usage): Make --literal (-N) description clearer.
+
+ * acconfig.h (MOUNTED_LISTMNTENT): Add it.
+ * fsusage [_CRAY]: Don't include sys/filsys.h because although
+ Unicos-9 has it, it's not needed and would cause other problems
+ because it requires inclusion of other, non-standard headers.
+ * mountlist.c (read_filesystem_list) [MOUNTED_LISTMNTENT]: New
+ function.
+ From Johan Danielsson (joda@pdc.kth.se).
+
+ * configure.in (AC_CHECK_FUNCS): Add listmntent for Unicos-9.
+ Define MOUNTED_LISTMNTENT #ifdef _CRAY and HAVE_GETMNTENT.
+ With an initial patch from Johan Danielsson.
+
+Wed May 22 18:58:01 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (LINGUAS): Add sv.
+
+Tue May 21 07:06:30 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/euidaccess.c (euidaccess) [!S_IROTH]: Define.
+ [!S_IWOTH]: Define.
+ [!S_IXOTH]: Define.
+ Marcus Daniels <marcus@sysc.pdx.edu> reported that m68k NEXTSTEP 3.2
+ doesn't define S_IROTH or S_IWOTH unless some posix compile option
+ is used and associated symbols defined.
+
+Sun May 19 09:32:51 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * chown.c: New option: --no-dereference (-h). Solaris 5.4's chown
+ provides -h.
+ (change_file_owner): Use lchown if --no-dereference (-h) was given.
+ (usage): Update.
+ (main): Fail if user requests --no-dereference on a system that
+ doesn't have support for it.
+
+ * chgrp.c: New option: --no-dereference (-h).
+ [!MAXUID]: Define to INT_MAX.
+ (change_file_group): Use lchown if --no-dereference (-h) was given.
+ (usage): Update.
+ (main): Fail if user requests --no-dereference on a system that
+ doesn't have support for it.
+
+Wed May 15 22:54:31 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * fsusage.c (get_fs_usage): Declare parameter PATH to be const.
+ * fsusage.h: Update prototype to match.
+
+ * chmod.c (describe_change): Declare pointer parameters to be const.
+ (change_file_mode): Likewise.
+ (change_dir_mode): Likewise.
+
+ * ln.c (do_link): Declare pointer parameters to be const.
+
+ * df.c (main): Fail with a diagnostic if both --human-readable and
+ --portability are used.
+ Likewise if --megabytes and --portability are used.
+ Rearrange function definitions to precede respective uses to obviate
+ all forward dcls. Remove forward dcls.
+ Declare parameters const as appropriate.
+
+ * modechange.c (mode_compile): Declare parameter MODE_STRING const.
+ Remove register attribute.
+ (mode_adjust): Likewise for CHANGES.
+ * modechange.h: Reflect above changes in prototypes.
+
+ * lib/Makefile.am (getdate.c): Disable dependencies that can
+ require rerunning YACC when not in maintainer mode.
+ (posixtm.c): Likewise.
+
+Tue May 14 23:36:54 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * dd.c (print_stats): Restructure pluralization of error message
+ so it's easier to translate. Reported by Göran Uddeborg
+ <gvran@uddeborg.pp.se>.
+ * mv.c (main): Likewise.
+
+Tue May 7 22:10:20 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * configure.in: Require autoconf-2.10.
+
+ * aclocal.m4 (jm_MAINTAINER_MODE): New macro.
+ * configure.in (jm_MAINTAINER_MODE): Use it.
+
+Sun May 5 20:27:47 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * src/Makefile.am (bin_PROGRAMS): Add dircolors.
+ (DEFS): Add -DSHAREDIR=\"$(datadir)\".
+ (GNUVER): Remove definition of unused variable.
+
+Sat May 4 20:54:32 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * system.h [IN_CTYPE_DOMAIN]: Rename from ISASCII.
+ * backupfile.c [IN_CTYPE_DOMAIN]: Rename from ISASCII.
+
+ * dircolors.c: Make enumerated constants upper case.
+ (main): Don't use ANSI-style string concatenation.
+ Add `static' and/or `const' to some file scope variables.
+
+Wed May 1 00:20:00 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * lib/Makefile.am (EXTRA_DIST): Add strcasecmp.c.
+ * configure.in (AC_REPLACE_FUNCS): Add strcasecmp.
+
+ * ls.c (parse_ls_color, usage): Remove support for alternate spellings:
+ --colours and LS_COLOURS.
+ (parse_ls_color): Reverse sense of test for LS_COLORS environment
+ variable and return -- save a level of indentation on a 100+-line
+ block.
+
+Mon Apr 29 22:07:41 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * POTFILES.in: Add chgrp.c. From François Pinard.
+ Add dircolors.c.
+ * dircolors.c: New file. Written by H. Peter Anvin.
+
+Sun Apr 28 16:32:38 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * ls.c: Apply color ls changes by Peter Anvin <Peter.Anvin@linux.org>
+ and Dennis Flaherty <dennisf@denix.elk.miles.com> based on original
+ patches by Greg Lee <lee@uhunix.uhcc.hawaii.edu>. And on top of all
+ that, a few changes from Ulrich Drepper.
+
+ * ls.c (parse_ls_color): Use strcpy to initialize 3-character array.
+ Automatic aggregate initialization isn't portable.
+ Remove all ^L's.
+ (get_funky_string): Declare static and move to precede single
+ caller: parse_ls_color.
+ Make some globals `static' and/or `const'.
+ (LEN_STR_PAIR): New macro.
+ (color_indicator): Use it in this declaration.
+ (parse_ls_color): Use error, not fprintf.
+ (decode_switches): Add a comment.
+ (print_name_with_quoting): Add braces around inner if-else
+ statement to clarify.
+
+ * configure.in: Add a comment that fp_C_PROTOTYPES must precede
+ AC_C_INLINE. Otherwise, some systems lose because the value
+ AC_C_INLINE choses with plain `cc' is different from that chosen
+ when using the ANSI-mode C compiler. From Kaveh Ghazi.
+
+ * fileblocks.c [HAVE_ST_BLOCKS || _POSIX_VERSION]: Add extern dcl
+ of unused variable so that after preprocessing, the file will never
+ be empty. Otherwise, some compilers in ANSI mode (among them, the
+ Dec Alpha OSF 2.0 C compiler) reject empty files. From Kaveh Ghazi.
+ Indent CPP conditionals.
+
+Fri Apr 26 05:52:03 1996 Karl Eichwalder <ke@ke.Central.DE>
+
+ * ls.c (usage): Add newline at end of printf format string.
+
+Wed Apr 24 21:33:43 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * ln.c (do_link): Remove duplicate `if (lstat(...' block.
+
+ * ln.c (do_link): With --force, don't remove DEST when it's
+ the same as SOURCE. Before, `ln -f FILE FILE' would remove FILE.
+ Reported by Bruno Haible (haible@ilog.fr).
+
+ * mkdir.c (main): Use verbose_fmt_string, not string literal in
+ call to make_path for --parents. Reported by Ulrich Drepper.
+
+ * doc/mdate-sh: Get year as last rather than 6th field in output
+ of date. Otherwise, people with 2-word TZ (like `MET DST') lost.
+ From Andreas Schwab.
+
+Tue Apr 23 22:05:35 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * src/*.c, src/*.h: Update Copyright years to include 1996.
+
+ * aclocal.m4 (AC_REPLACE_GNU_GETOPT): New macro.
+ * configure.in: Use it.
+ * lib/Makefile.am (fu_SOURCES): Remove getopt.c and getopt1.c.
+ (EXTRA_DIST): Add getopt.c and getopt1.c
+
+ * configure.in (AC_CHECK_FUNCS): Add lchown.
+ * chgrp.c [HAVE_LCHOWN]: Define chown to lchown.
+ * chown.c [HAVE_LCHOWN]: Likewise.
+ * cp.c [HAVE_LCHOWN]: Likewise.
+ * mv.c [HAVE_LCHOWN]: Likewise.
+ Suggested by François Pinard.
+
+ * backupfile.c (find_backup_file_name, max_backup_version,
+ make_version_name, version_number, concat): Const-ify decls of
+ formal parameters.
+ * backupfile.h: Likewise.
+
+ * du.c (usage): The long-named arg is --human-readable, not --human.
+ * df.c: Be consistent. Accept --human-readable, not just --human.
+ (usage): Reflect the change.
+ From Karl Berry.
+
+Sun Apr 21 08:04:51 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * df.c (usage): Reflect that now --no-sync is the default.
+
+ * Makefile.am (LDADD): Put @INTLLIBS@ before package library.
+
+Sat Apr 20 22:48:59 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * ls.c: Include xstrtol.h.
+ (decode_switches): Use xstrtol, not atoi.
+ Detect and ignore invalid value for COLUMNS environment variable.
+ In error about invalid TABSIZE, don't reference optarg!
+ [!POSIXLY_CORRECT]: Don't consider TABSIZE environment variable.
+
+ * install.c: Include xstrtol.h.
+ [HAVE_VALUES_H]: Include <values.h>.
+ [!BITSPERBYTE]: Define.
+ [!UID_T_MAX]: Define.
+ [!GID_T_MAX]: Define.
+ (get_ids): Use xstrtol, not atoi.
+ (is_number): Remove now-unused function.
+ * configure.in (AC_CHECK_HEADERS): Add values.h.
+
+Fri Apr 19 00:06:02 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * Makefile.am (cvs-dist): New rule. Based on the one from
+ Tom Tromey's automake.
+
+ * df.c: No longer call sync by default.
+
+ * cp.c (copy_reg): Rearrange arithmetic in conditional to avoid
+ integer overflow with large files.
+
+Fri Apr 12 21:40:44 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * mkdir.c (main): Add new option: --verbose.
+ Remove long-deprecated and nowhere-documented --path, a synonym
+ for --parents. It was confusing to get an error about `--p'
+ being ambiguous.
+
+Thu Apr 4 21:28:03 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * configure.in (LINGUAS): Add de.
+ * po/de.po: New file.
+
+ * src/Makefile.am (EXTRAdir): Set to $(bindir).
+
+Wed Apr 3 06:12:23 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * cp.c (copy_reg): Use `ST_NBLOCKS (sb) * 512', not `sb.st_blocks *
+ DEV_BSIZE.' From H.J. Lu (hjl@lucon.org).
+
+ * mvdir.c: Protoize.
+ Include save-cwd.h.
+ (fullpath): Rewrite to use save_cwd, xgetcwd, and restore_cwd
+ rather than explicit chdir/getcwd calls.
+
+ * src/Makefile.am (INCLUDES): Add -I$(srcdir) to get system.h
+ when srcdir != builddir. From Kaveh Ghazi.
+
+Mon Apr 1 23:50:29 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * cp.c: Include assert.h (disabled).
+ (path_concat): New function.
+ (do_copy): Use path_concat instead of open-coding part of its
+ functionality in two places. This has the additional benefit
+ of avoiding forming destination names like `D//file' when the
+ destination directory D includes a trailing slash -- as would
+ happen when cp is used like this:
+ mkdir D; touch file D/file; cp -i file D/
+ Reported by François Pinard.
+
+Sun Mar 31 11:18:09 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * ls.c (quote_filename): Use ISGRAPH and ISPRINT in place of
+ ASCII-centric tests against literals.
+ (length_of_file_name_and_frills): Likewise.
+
+Thu Mar 21 16:43:13 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * src/*.c (main): Declare to be of type int, not void.
+
+Sat Mar 16 10:46:23 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * configure.in (PACKAGE_VERSION): New macro.
+ * acconfig.h (PACKAGE_VERSION): Add it.
+ * src/Makefile.am: Remove rules for generating version.c.
+ Remove references to version.o, version.h, and stamp-v.
+ * version.c: Remove file.
+ * version.h: Remove file.
+ * chgrp.c chmod.c chown.c cp.c dd.c df.c du.c install.c ln.c
+ ls.c mkdir.c mkfifo.c mknod.c mv.c mvdir.c rm.c rmdir.c sync.c
+ touch.c: Don't include version.h.
+ (main): Use PACKAGE_VERSION instead of version_string.
+
+Sun Mar 10 22:36:11 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * backupfile.c (max_backup_version): Declare file_name_length to
+ be of type size_t. This avoids a warning from gcc -Wall.
+
+ * chmod.c chown.c cp.c dd.c df.c du.c install.c ln.c ls.c
+ mkdir.c mkfifo.c mknod.c mv.c mvdir.c rm.c rmdir.c sync.c
+ touch.c (main): Initialize for internationalized message support:
+ call setlocale, bindtextdomain, and textdomain.
+ * system.h: Add definitions and includes for NLS.
+ * Makefile.am (SUBDIRS): Add intl and po.
+ * src/Makefile.am (datadir): Define.
+ (localedir): Define.
+ (DEFS): Add LOCALEDIR definition.
+ (LDADD): Add @INTLLIBS@.
+ * aclocal.m4: Add NLS-related macro definitions from
+ gettext distribution.
+ * acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_LC_MESSAGES,
+ HAVE_STPCPY): New macros.
+ Add PACKAGE and VERSION.
+ * configure.in (PACKAGE): Define with AC_DEFINE_UNQUOTED.
+ (VERSION): Likewise.
+ (ALL_LINGUAS): Define.
+ (ud_GNU_GETTEXT): Use it.
+ Link an nls file.
+ (AC_OUTPUT): Reflect addition of two new directories, intl and po.
+ Create po/Makefile.
+ From François Pinard.
+
+Thu Mar 7 20:26:07 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * df.c (main): Tell read_filesystem_list that it should determine
+ file system type when the user specifies --print-type or -T.
+ From Michael Rendell <michael@cs.mun.ca>.
+
+Tue Feb 27 23:13:46 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * src/Makefile.am: Adapt for automake-0.30.
+ (noinst_HEADERS): Rename from HEADERS.
+ (EXTRA_PROGRAMS): Set to `df mvdir'.
+ (PROGRAMS): Remove definition.
+ (bin_PROGRAMS): Remove hard-coded df. Use @DF_PROG@ instead.
+ (libexec_PROGRAMS): Remove hard-coded mvdir. Use @MVDIR_PROG@ instead.
+ * lib/Makefile.am: (noinst_HEADERS): Rename from HEADERS.
+
+ * configure.in (DF_PROG, MVDIR_PROG): Use these instead of bundling
+ both into PROGS.
+
+Mon Feb 26 21:23:58 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * dd.c (copy): Remove bogus (now that we're using full_write)
+ increment of w_partial.
+ Change sense of the tests (though they're equivalent) that check
+ the value returned by full_write. making it clearer where errno
+ is valid. full_write always writes the full amount or fails.
+
+Thu Feb 15 23:08:41 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * cp.c (copy): Detect (and fail) when creating backup file would
+ destroy the source file. Before, running the commands
+ cd /tmp; rm -f a a~; : > a; echo A > a~; cp -b -V simple a~ a
+ would leave two zero-length files: a and a~.
+ Reported by Martin C. Martin <mcm@cs.cmu.edu>.
+
+Mon Feb 12 23:23:25 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * configure.in (LIBOBJS): Split assignment into two statements to
+ accomodate automake-0.29 buglet.
+
+ Update for automake-0.29.
+ * Makefile.am (CONFIG_HEADER): Don't define. Automake now does it.
+ * src/Makefile.am: Likewise.
+ * lib/Makefile.am: Likewise.
+ * doc/Makefile.am (info_TEXINFOS): Renamed from TEXINFOS.
+ * man/Makefile.am (man_MANS): Renamed from MANS.
+
+Wed Jan 31 21:50:41 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * dd.c (skip): Change type of parameter #5 from char* to
+ unsigned char* to match type of argument.
+ (copy): Cast first arg in memset call to char* to avoid warnings
+ from SunOS's acc.
+ (copy_simple): Likewise.
+
+ * du.c: Remove comma after last item in enum.
+
+ * df.c: Remove block of usage comments at beginning of file.
+
+ * df.c (main): New options --human-readable (-h) and --megabytes (-m).
+ (human_readable_1k_blocks): New function.
+ (print_header): Honor new options.
+ (show_dev): Honor new options.
+ Add ifdef'd-out code to avoid printing lines for mount points that
+ match ^/auto/.* and ^/tmp_mnt.*. Rather than hard-coding those
+ two prefixes, the code should allow the user to specify a regular
+ expression. From Larry McVoy (lm@sgi.com).
+
+ * du.c (human_readable): Fix off-by-one error that converted
+ 1024*1024 to 1024K rather than 1G. Describe the function.
+ * df.c (human_readable_1k_blocks): Likewise
+ (usage): Update usage message to reflect additions.
+
+Sat Jan 20 06:00:09 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * cp-aux.c (usage): Fix description of --archive. From Andreas Schwab.
+
+ * install.c (copy_files): Accept backup/suffix options just as cp,
+ ln, and mv do. From Marty Leisner <leisner@sdsp.mc.xerox.com>.
+
+ * src/Makefile.am (DISTCLEANFILES): Set to stamp-v version.c.
+ (version.c): Update with rules from textutils.
+ (transform): Add `s/ginstall/install/;' prefix.
+
+ * lib/Makefile.am (BUILT_SOURCES): Set to posixtm.c getdate.c so
+ autodependencies work after `make maintainer-clean.'
+
+ * du.c (main): New options --human-readable (-h) and --megabytes (-m).
+ (human_readable): New function.
+ From Larry McVoy (lm@sgi.com).
+
+Fri Dec 22 21:34:55 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * configure.in: Touch stamp-h only if config.h is remade.
+
+Sat Dec 23 11:33:19 1995 Jim Meyering (meyering@comco.com)
+
+ * ls.c (decode_switches): Make -o a synonym for -lG for compatibility
+ with most other versions of ls. Reported by Karl Berry.
+ (usage): Update.
+
+Fri Dec 22 00:48:01 1995 Jim Meyering (meyering@comco.com)
+
+ * dd.c (cleanup): New function -- broken out from quit.
+ (interrupt_handler): Rewrite to reset default signal handler,
+ call cleanup, then repost caught signal.
+
+Thu Dec 21 23:15:06 1995 Jim Meyering (meyering@comco.com)
+
+ * argmatch.h: New file.
+ * lib/Makefile.am (HEADERS): Add argmatch.h.
+ * argmatch.c: (argmatch): Add const attribute to parameters.
+ (invalid_arg): Add const attribute to parameters.
+
+ * cp.c: Include argmatch.h.
+ * ls.c: Likewise.
+ * touch.c: Likewise.
+
+ * cp.c (main): Accept new option, --sparse={never,auto,always},
+ to control creation of sparse files.
+ (copy_reg): Set local, make_holes, from global flag_sparse.
+ * cp-aux (usage): Describe new option.
+
+Mon Dec 18 22:29:49 1995 Jim Meyering (meyering@comco.com)
+
+ * ln.c: [SYMBOLIC_SPACE_STRING]: New macro.
+ (do_link): Use SYMBOLIC_SPACE_STRING instead of open-coded #ifdef.
+ For --verbose, output `create [symbolic ]link DEST to SRC' instead
+ of ambiguous (or inconsistent with cp -v and mv -v) `SRC -> DEST.'
+
+Tue Dec 5 17:38:11 1995 Jim Meyering (meyering@comco.com)
+
+ * rm.c (rm): Work around SunOS 4 bug whereby lstat doesn't fail
+ when given a zero-length file name argument. Reported by
+ Mark Calabretta <mcalabre@atnf.csiro.au>.
+
+Wed Nov 22 23:12:47 1995 Jim Meyering (meyering@comco.com)
+
+ * Makefile.in (all et. al.): If make was invoked with -k and a
+ sub-make fails, fail after the loop rather than exiting right away.
+ Otherwise, make's -k option could be ineffective.
+
+Thu Nov 16 21:25:45 1995 Jim Meyering (meyering@comco.com)
+
+ * Makefile.in (default): New default target. Depend on `all' to work
+ around bug in AIX-3.2.5's /bin/make. Reported by Andreas Luik
+ <luik@isa.de>.
+
+Fri Nov 10 23:31:46 1995 Jim Meyering (meyering@comco.com)
+
+ * src/Makefile.in (.c._o, ._c._o): Remove temporary source files.
+ (.c._c): Don't redirect directly to $@.
+
+ * src/Makefile.in (DISTFILES): Include ansi2knr.c and ansi2knr.1.
+ (clean): Remove temp files generated by ansi2knr rules.
+ (ansi2knr): New rule.
+ Add suffixes, dependencies, and rules to convert ANSI source to K&R
+ when required.
+ ($(OBJECTS)): Depend on $(ANSI2KNR)
+
+ * configure.in: Add fp_C_PROTOTYPES.
+
+ * Makefile.in (DISTFILES): Add aclocal.m4.
+ (configure): Depend on aclocal.m4.
+ (stamp.h.in): Depend on aclocal.m4 and acconfig.h.
+ * acconfig.h: Add PROTOTYPES.
+
+ * cp.h: Remove declaration of error. Include error.h instead.
+ Protoize forward dcls of functions in cp-hash.c and cp-aux.c
+ * cp-aux.c: Protoize and add const attribute to parameters.
+ * cp-hash.c: Likewise.
+
+Thu Nov 9 23:27:05 1995 Jim Meyering (meyering@comco.com)
+
+ * system.h [__P]: Define it.
+
+ * src/*.c: Protoize.
+
+ * ls.c (enum filetype): Move dcl to precede prototypes.
+ (struct fileinfo): Likewise.
+ Add const attribute to some parameters.
+
+ * rm.c (struct pathstack): Move dcl to precede prototypes.
+
+ * dd.c (translate_charset): Make parameter `const'.
+
+ * ln.c (main): Move to the end.
+ Remove most fwd dcls.
+ * chmod.c: Likewise.
+ * chown.c: Likewise.
+ * chgrp.c: Likewise.
+ * mkdir.c: Likewise.
+ * mkfifo.c: Likewise.
+ * mknod.c: Likewise.
+ * mvdir.c: Likewise.
+ * touch.c: Likewise.
+
+ * mv.c: Rearrange functions to obviate forward dcls.
+ Remove forward dcls.
+
+ * cp.c: Protect prototyped forward dcls with __P.
+ * dd.c: Likewise.
+ * df.c: Likewise.
+ * du.c: Likewise.
+ * install.c: Likewise.
+ * ls.c: Likewise.
+ * rm.c: Likewise.
+
+Wed Nov 1 23:11:05 1995 Jim Meyering (meyering@comco.com)
+
+ * cp.c (copy): Use euidaccess instead of euidaccess_stat.
+ * mv.c (do_move): Likewise.
+ * rm.c (remove_file, remove_dir): Likewise.
+
+Sun Oct 29 06:06:13 1995 Jim Meyering (meyering@comco.com)
+
+ * aclocal.m4 (jm_WITH_AUTODEPS): New directive.
+ * configure.in: Use it.
+
+ * lib/Makefile.in (INCLUDE, COMPILE): New variables.
+ (.c.o): Rewrite to be more like src/Makefile.in.
+ Add line that (--with-autodeps) will include mkdep-Makefile.
+ (distclean): Remove .deps.
+ * src/Makefile.in: Likewise.
+
+ * src/Makefile.in (test.o): Remove special rule.
+
+ * mkdep-Makefile: New file.
+ * Makefile.in (DISTFILES): Add mkdep-Makefile.
+
+ * doc/Makefile.in (mostlyclean): Remove *.info.
+
+ * touch.c: Change long option name `--file' to `--reference'.
+ Leave --file as an alias, for now. It will be removed later.
+ (usage): Reflect option name change. From Franc,ois Pinard.
+
+Wed Oct 18 23:09:55 1995 Jim Meyering (meyering@comco.com)
+
+ * configure.in (AC_CHECK_HEADERS): Add sys/wait.h and sys/ioctl.h.
+ (AC_CHECK_FUNCS): Add endpwent.
+
+ * fileblocks.c: Use _POSIX_VERSION, not _POSIX_SOURCE.
+
+ * userspec.c [endgrent]: Test !HAVE_ENDGRENT rather than _POSIX_SOURCE.
+ [endpwent]: Test !HAVE_ENDPWENT rather than _POSIX_SOURCE.
+
+ * chgrp.c [endgrent]: Test !HAVE_ENDGRENT rather than _POSIX_SOURCE.
+
+ * chown.c [endpwent]: Test !HAVE_ENDPWENT rather than _POSIX_SOURCE.
+ [endgrent]: Remove unused definition.
+
+ * df.c (main): Fail if the same file system type was both selected
+ and excluded. Reported by Paul Close pdc@lunch.engr.sgi.com.
+
+ * rm.c (duplicate_entry): Always return 0 if !D_INO_IN_DIRENT,
+ rather than if _POSIX_SOURCE.
+
+ * install.c: Use HAVE_SYS_WAIT_H, not _POSIX_VERSION in conditional
+ inclusion of sys/wait.h.
+ [endgrent]: Test !HAVE_ENDGRENT rather than _POSIX_SOURCE.
+ [endpwent]: Test !HAVE_ENDPWENT rather than _POSIX_SOURCE.
+
+ * ls.c Use HAVE_SYS_IOCTL_H, rather than !_POSIX_SOURCE || _AIX.
+
+Thu Oct 5 21:49:34 1995 Jim Meyering (meyering@comco.com)
+
+ * configure.in (HAVE_STRUCT_UTIMBUF): Add new test. Testing for
+ the existence of <utime.h> is insufficient on some Next systems.
+ * acconfig.h (HAVE_STRUCT_UTIMBUF): Add it.
+ * system.h [!HAVE_UTIME_H]: Don't declare struct utimbuf here.
+ [!HAVE_STRUCT_UTIMBUF]: Declare struct utimbuf here instead.
+
+ * chgrp.c: Include limits.h.
+ [!INT_MAX]: Define it.
+
+ * df.c (show_point): Cast -2 to dev_t before assignment.
+ * mountlist.c (read_filesystem_list): Cast -1 to dev_t before
+ assignment.
+
+Sun Oct 1 13:22:36 1995 Jim Meyering (meyering@comco.com)
+
+ * configure.in (AC_REPLACE_FUNCS): Add strtoul.
+ * strtoul.c: New file.
+ * lib/Makefile.in (SOURCES): Add strtoul.c.
+
+ * acconfig.h (STATFS_TRUNCATES_BLOCK_COUNTS): Add it.
+ * configure.in (STATFS_TRUNCATES_BLOCK_COUNTS): New check to enable
+ workaround for SunOS statfs brokenness. Block counts in struct
+ statfs for partitions 2GB and larger are truncated, but correct
+ values are stored in f_spare array member.
+
+ * fsusage.c (get_fs_usage) [STATFS_TRUNCATES_BLOCK_COUNTS]: Copy
+ untruncated block counts from f_spare array into proper members
+ of struct statfs. From Eirik Fuller (eirik@netapp.com);
+
+ * ls.c (dired_dump_obstack): Don't generate any output if the
+ obstack is empty.
+ (main): Always initialize and dump subdired_obstack, not just if -R.
+ `ls -lDR dir dir2' was using uninitialized subdired_obstack.
+ Reported by Samuli K{rkk{inen <hskarkka@snakemail.hut.fi>.
+
+Tue Sep 26 23:05:01 1995 Jim Meyering (meyering@comco.com)
+
+ * man/Makefile.in (install-data, uninstall): Use sed not basename.
+ The GNU Coding Standard suggests that only a select set of
+ relatively standard utilities be used in Makefiles. basename is
+ not among them. Suggested by Ulrich Drepper.
+
+Mon Sep 25 23:12:37 1995 Jim Meyering <meyering@gremlin.comco.com>
+
+ * src/df.c (show_point): Ignore mtab entries with either
+ nonexistent mount points or with inconsistent device number.
+ From Eirik Fuller <eirik@synopsys.com>.
+
+Wed Aug 9 00:33:05 1995 Jim Meyering (meyering@comco.com)
+
+ * mknod.c (my_strtol): Remove function.
+ (main): Use xstrtol instead.
+
+Mon Aug 7 23:27:54 1995 Jim Meyering (meyering@comco.com)
+
+ * Makefile.in (DISTFILES): Don't distribute unneeded COPYING.LIB.
+ From Franc,ois.
+
+Fri Aug 4 22:11:06 1995 Jim Meyering (meyering@comco.com)
+
+ * install.c (isnumber): Rename to is_number to avoid conflict with
+ FreeBSD 2.0.5 macro definition. Reported by David O'Brien
+ (obrien@sea.legent.com).
+
+ * lib/save-cwd.c: New file.
+ * lib/save-cwd.h: New file.
+ * lib/Makefile.in (SOURCES, OBJECTS, DISTFILES): Update for new files.
+
+ * configure.in: (AC_REPLACE_FUNCS): Remove fnmatch.
+ Add check for working fnmatch functions so that
+ systems providing it don't incur the space overhead of linking
+ with the version in lib. Cross compiling builds always use the
+ version in lib.
+
+ * ls.c (decode_switches): Set SORT_TYPE. Before, ls -c was sorting
+ by name, rather than change time. Reported by Ken Estes
+ (m-ke0082@sparky.cs.nyu.edu).
+
+ * du.c: (save_cwd, restore_cwd, free_cwd): Remove functions.
+ New versions have been broken out into save-cwd.c.
+ (du_files): Adapt to handle status code returned by new versions
+ of save_cwd and restore_cwd.
+ (count_entry): Likewise.
+
+ * all programs (main): Include program name in --version output.
+
+ * src/Makefile.in (cp.o): Depend on ../lib/obstack.h.
+
+ * xstrtol.c, xstrtol.h: New files.
+ * xstrtoul.c, xstrtoul.h: New files.
+ * lib/Makefile.in (SOURCES, OBJECTS, DISTFILES): Update for new files.
+
+ * chgrp.c (parse_group): Use xstrtoul instead of isnumber; the
+ latter would silently overflow, accepting a group id larger
+ than INT_MAX.
+ (isnumber): Remove now-unused static function.
+ (change_file_group) [MAXUID]: Give a more descriptive message
+ when numeric group id is larger than MAXUID.
+
+Sat May 27 00:35:47 1995 Jim Meyering (meyering@comco.com)
+
+ * system.h [!STDC_HEADERS && HAVE_MEMORY_H]: Include memory.h.
+ Without this, SunOS doesn't get type for memchr.
+ Reported by Kaveh Ghazi.
+
+Sun May 21 07:20:55 1995 Jim Meyering (meyering@comco.com)
+
+ * all source files (usage): Include one- or two-line synopsis
+ in --help output. From Karl Berry.
+
+ * Makefile.in (.PHONY): TAGS is not a phony target. From Franc,ois.
+
+ * All Makefile.in (install-exec, install-exec): New targets.
+ From Karl Berry.
+
+ * all Makefile.in (maintainer-clean): Renamed from realclean
+ per GNU Standards.
+
+ * euidaccess.c: No longer include safe-l?stat.h.
+ * fsusage.c: Likewise.
+ * isdir.c: Likewise.
+ * makepath.c: Likewise.
+ * mkdir.c: Likewise.
+ * rename.c : Likewise.
+ * rmdir.c: Likewise.
+
+Sat May 13 07:47:44 1995 Jim Meyering (meyering@comco.com)
+
+ * lib/Makefile.in: Remove safe-l?stat.[ch]in and related rules.
+ (maintainer-clean): Rename from realclean.
+ (.PHONY): New dependencies.
+ [.c.o]: Remove -I. since safe-l?stat.h are no longer used.
+
+ * argmatch.c (argmatch): Include sys/types.h and declare length
+ argument with type size_t.
+
+ * backupfile.c: Remove unnecessary definitions for r?index.
+ Update definitions for ISDIGIT.
+
+ * basename.c (basename): Make argument const.
+
+ * euidaccess.c (eaccess_stat): Make statp and path arguments const.
+ (euidaccess): Make statp argument const. Use stat, not safe_stat.
+
+ * fsusage.c (statfs): Use stat, not safe_stat.
+ * isdir.c (isdir): Likewise.
+ * mkdir.c (mkdir): Likewise.
+ * rename.c (rename): Likewise.
+ * rmdir.c (rmdir): Likewise.
+
+ * userspec.c (parse_user_spec): Use strchr, not index.
+ [!HAVE_STRING_H]: Define strchr in terms of index, not the
+ other way around.
+
+ * makepath.c: (make_path): Use stat, not SAFE_STAT.
+ Use strchr, not index. Adjust defines accordingly.
+
+ * makepath.h: Undef __P before defining.
+ Guard definition with simpler `#if __STDC__'.
+
+ * chgrp.c: Use stat (lstat), not safe_stat (safe_lstat).
+ * chmod.c: Likewise.
+ * chown.c: Likewise.
+ * cp-hash.c: Likewise.
+ * cp.c: Likewise.
+ * df.c: Likewise.
+ * du.c: Likewise.
+ * install.c: Likewise.
+ * ln.c: Likewise.
+ * ls.c: Likewise.
+ * mv.c: Likewise.
+ * mvdir.c: Likewise.
+ * rm.c: Likewise.
+ * touch.c: Likewise.
+
+Fri May 12 21:21:23 1995 Jim Meyering (meyering@comco.com)
+
+ * mv.c (movefile): Remove a single trailing slash from destdir
+ before concatenating with `/' and filename for `ok to overwrite...'
+ message. Reported by Franc,ois Pinard.
+
+Mon May 1 23:03:30 1995 Jim Meyering (meyering@comco.com)
+
+ * ls.c (quote_filename): Never return NULL when quoting filenames
+ as C-strings. --quote-name was quoting only strings containing
+ at least one C-quotable character. Reported by David J. MacKenzie.
+
+Mon Mar 20 21:44:40 1995 Jim Meyering (meyering@comco.com)
+
+ * rename.c (rename): Compare src and dest inode numbers rather
+ than src inode and dest dev when determining whether they refer
+ to the same file. From marc@math.cornell.edu (Marc Parmet).
+
+ * df.c (usage): Add ellipsis after `[OPTION]'. Use FILE,
+ not deprecated PATH in text of help message. From Karl Berry.
+
+Fri Mar 10 21:13:23 1995 Jim Meyering (meyering@comco.com)
+
+ * src/*.c: Update Copyright dates.
+
+ * src/Makefile.in (uninstall): Handle case in which LIBPROGS is empty.
+ Reported by Peter Smidt <smidt@cd.chalmers.se>.
+
+Thu Feb 23 22:29:11 1995 Jim Meyering (meyering@comco.com)
+
+ * du.c (save_cwd) [!HAVE_FCHDIR]: Always initialize cwd->desc.
+ (restore_cwd) [!HAVE_FCHDIR]: Remove unnecessary redefinition
+ of fchdir. Both from Bruno Haible.
+
+Mon Feb 20 22:54:39 1995 Jim Meyering (meyering@comco.com)
+
+ * du.c (save_cwd, restore_cwd): New functions.
+ (main): Use them instead of open coded versions.
+ (count_entry): Use them here instead of relying on chdir ("..") --
+ but only when necessary. Before, with --dereference (-L),
+ traversing a symlink caused failure because chdir ("..") didn't
+ work as expected. Reported by Bruno Haible.
+
+Sat Feb 11 07:52:01 1995 Jim Meyering (meyering@comco.com)
+
+ * configure.in (AC_REPLACE_FUNCS): Add memcmp, memcpy, and memset.
+ (AC_CHECK_FUNCS): Add strchr and strrchr.
+ * lib/Makefile.in (SOURCES): Add memcmp.c, memcpy.c, and memset.c.
+
+ * system.h: Remove index/rindex and bcmp/bcopy/bzero references.
+ Separate errno declaration from STDC_HEADERS.
+
+ * dd.c (copy): Use memset, not bzero.
+ (copy_simple): Use memcpy, not bcopy.
+
+ * fsusage.c (get_fs_usage, statfs): Use safe_read, and safe_stat
+ rather than bare read and stat. From Bruno Haible.
+
+ * lib/Makefile.in (DISTFILES): Add error.h.
+
+ * chgrp.c, chmod.c, chown.c, cp-hash.c, cp.c, df.c, du.c, install.c,
+ ln.c, ls.c, mv.c, mvdir.c, rm.c, touch.c: Rename SAFE_STAT and
+ SAFE_LSTAT to safe_stat and safe_lstat.
+
+ * basename.c (basename): Use strrchr, not rindex.
+ [!STDC_HEADERS && !HAVE_STRING_H]: Define strrchr to rindex.
+
+Tue Dec 27 07:07:53 1994 Jim Meyering (meyering@comco.com)
+
+ * src/*.c: Include "error.h" rather than simply declaring
+ `void error ();'.
+ * src/Makefile.in (OBJECTS): Depend on ../lib/error.h.
+
+ * sync.c (main): Make error message accurate.
+
+ * dd.c (skip): Use safe_read instead of read.
+ (copy): Use full_write instead of write.
+ From Bruno Haible.
+
+Sat Dec 10 00:02:09 1994 Jim Meyering (meyering@comco.com)
+
+ * Makefile.in (install): Install `install' first as transformed
+ `ginstall,' then remove the target (transformed `install')
+ and move GNU install into its place. Before, the installation
+ process failed on systems (e.g. HPUX) that can't overwrite the
+ executable associated with a running process.
+
+ * system.h [!HAVE_STRING_H]: Define strchr to index and strrchr to
+ rindex instead of the other way around.
+ * rmdir.c (remove_parents): Use strr?chr instead of r?index.
+ * mvdir.c (main): Likewise.
+ * dd.c (parse_conversion, scan_args): Likewise.
+ * cp.c (copy, make_path_private): Likewise.
+
+ * system.h: Include <ctype.h> and define IS* macros.
+ * touch.c: No longer include <ctype.h>.
+ * chown.c: Likewise.
+ * install.c: Likewise.
+ [isascii, ISDIGIT]: Remove definitions.
+ * chgrp.c: Likewise.
+ * dd.c: Likewise.
+
+Sun Dec 4 14:53:12 1994 Jim Meyering (meyering@comco.com)
+
+ * doc/Makefile.in (DISTFILES): Add getdate.texi.
+
+Fri Nov 11 11:15:20 1994 Jim Meyering (meyering@comco.com)
+
+ * mknod.c (my_strtol): New function.
+ (main): Use it instead of atoi to convert argument strings to
+ major and minor device numbers. Now, mknod diagnoses invalid
+ device numbers and accepts octal and hexadecimal as well as
+ decimal string arguments. Ralf Lammers
+ <rlammers@physik.uni-osnabrueck.de> suggested that mknod accept
+ hex device numbers for compatibility with HPUX's mknod program.
+
+ * configure.in (AC_REPLACE_FUNCS): Add strtol.
+ * lib/Makefile.in (SOURCES): Add strtol.c.
+
+Sun Nov 06 00:18:56 1994 Jim Meyering (meyering@comco.com)
+
+ * Version 3.12.
+
+Sat Nov 05 15:20:07 1994 Jim Meyering (meyering@comco.com)
+
+ * group-member.c: Use up-to-date version.
+ * group-member.h: New file.
+ * lib/Makefile.in (DISTFILES): Add group-member.h.
+ (group-member.o): Depend on group-member.h.
+
+ * Version 3.11.
+
+ * src/Makefile.in (obstack.o): Depend on obstack.h.
+ * makepath.c (makepath) [__STDC__]: Add an ANSI-style prototype.
+ From Kaveh Ghazi.
+
+Fri Nov 04 17:27:55 1994 Jim Meyering (meyering@comco.com)
+
+ * Version 3.10.
+
+Thu Nov 03 12:59:34 1994 Jim Meyering (meyering@comco.com)
+
+ * makepath.h: New file.
+ * makepath.c: Include it.
+ Add an argument: PRESERVE_EXISTING.
+ Declare char* arguments const.
+ * install.c, mkdir.c: Update callers. Set it in mkdir.c so
+ that `mkdir -p' ignores existing directories as POSIX mandates.
+ Before, it would try to change owner and/or permissions of such
+ directories. Christopher S. Arthur <csa@halcyon.com> reported
+ the mkdir -p failure.
+ * lib/Makefile.in (DISTFILES): Add it.
+ (makepath.o): Depend on makepath.h.
+ * src/Makefile.in (install.o, mkdir.o): Depend on makepath.h.
+ * cp.c (make_path_private): Rename function from make_path to
+ avoid confusion.
+ (do_copy): Update caller.
+
+ * ls.c: Include <limits.h> before system.h because limits.h on
+ some systems undefines PATH_MAX, whereas system.h includes pathmax.h
+ which sets PATH_MAX. From Kaveh Ghazi.
+
+ * euidaccess.c: Define S_IXUSR, S_IXGRP, and S_IXOTH in terms of
+ S_IEXEC if they're not already defined. Reported by Kaveh Ghazi
+ and Daniel Hagerty <hag@gnu.ai.mit.edu>.
+
+Tue Nov 01 06:18:20 1994 Jim Meyering (meyering@comco.com)
+
+ * eaccess.c (euidaccess): Rename from eaccess to avoid conflict
+ with like-named, different function in some C libraries.
+ * euidaccess.c: Renamed from eaccess.c
+ * lib/Makefile.in (SOURCES): Rename eaccess.c.
+ Update dependency, too.
+ * configure.in (AC_REPLACE_FUNCS): Check for euidaccess
+
+Mon Oct 31 08:02:31 1994 Jim Meyering (meyering@comco.com)
+
+ * ls.c (dired_dump_obstack): Cast obstack_finish for non-ANSI
+ compilers. Kaveh Ghazi reported the problem.
+
+Sat Oct 29 00:42:18 1994 Jim Meyering (meyering@comco.com)
+
+ * fsusage.c (get_fs_usage) [STAT_STATFS4]: Define CONVERT_BLOCKS
+ to adjust_blocks for _AIX. Was getting off-by-8x numbers.
+
+ * df.c: Make --sync the default.
+ Add new option: --no-sync.
+ Remove short option alias for --sync.
+ (usage): Update.
+
+ * ls.c [!STDC_HEADERS]: Declare free.
+ (dired_dump_obstack): Cast pos[i] (of type size_t) to int so it
+ matches %d in printf.
+ (quote_filename): Fix typo in stpcpy call.
+
+Thu Oct 27 00:02:45 1994 Jim Meyering (meyering@comco.com)
+
+ * fsusage.c: Include <sys/stat.h> before safe-stat.h.
+
+ * cp.c (make_path): Don't change protections on existing directory.
+ Reported by Andreas Schwab.
+
+ * df.c: New option: --sync. No longer perform sync by default.
+ Do it only when this option is used. Invoking sync can be very
+ expensive, and it's not clear that doing so yields more up to date
+ results. With encouragement/prodding from Paolo Zeppegno
+ (paolo@to.sem.it), Nick Holloway, and Kaveh Ghazi.
+
+Thu Oct 20 00:52:59 1994 Jim Meyering (meyering@comco.com)
+
+ * system.h [!S_IEXEC]: Define as S_IXUSR.
+
+ * cp.h [S_IEXEC]: Remove definition. cp.c doesn't use it.
+
+ * ls.c [!INT_MAX]: Define to 2^31 - 1 so subsequent #if test works.
+ [S_IEXEC]: Remove definition. It's in system.h now.
+ (usage): Sort options, but without segregating upper and lower case.
+
+ * ls.c: Support for new option: --dired (-D).
+ (dired, dired_pos, dired_obstack, subdired_obstack): Global variables.
+ [PUTCHAR, FPUTS, FPUTS_LITERAL, PUSH_CURRENT_DIRED_POS]: New macros
+ (dired_dump_obstack, quote_filename): New functions.
+ (main): Initialize obstacks.
+ (decode_switches): Recognize -D.
+ (print_dir): Make arguments `const.'
+ Record directory name indices in obstack.
+ (print_dir, print_long_format, print_type_indicator): Use macros
+ FPUTS, FPUTS_LITERAL, PUTCHAR for output.
+ (print_long_format): Record file name indices in obstack.
+ (print_name_with_quoting): Just call quote_filename and output the
+ result.
+
+Mon Oct 17 23:56:36 1994 Jim Meyering (meyering@comco.com)
+
+ * savedir.c: Indent CPP conditionals. Change some #ifdefs to #ifs.
+ From Franc,ois Pinard.
+
+Mon Oct 17 10:27:26 1994 David J. MacKenzie (djm@duality.gnu.ai.mit.edu)
+
+ * lib/dirname.c: Use strrchr, not rindex.
+
+Sun Oct 16 07:53:27 1994 Jim Meyering (meyering@comco.com)
+
+ * system.h (S_IXUSR, S_IXGRP, S_IXOTH): Define these in terms of
+ S_IEXEC if they're not already defined. From Kaveh Ghazi.
+
+ * eaccess.c (eaccess_stat): Don't use NULL in comparison.
+ Some systems don't define it except in stdio.h -- and including
+ (yes, just including) stdio.h has been known to significantly
+ increase object code size (though admittedly, that probably
+ happens only on old systems). Kaveh Ghazi reported the problem.
+
+ * src/Makfile.in lib/Makfile.in (DEFS): Remove -Dlint.
+ It causes problems on broken pyramid system.
+ From Kaveh Ghazi.
+
+Sat Oct 08 10:39:32 1994 Jim Meyering (meyering@comco.com)
+
+ * mountlist.c: Always include <sys/param.h> if it exists.
+ (fstype_to_string) [__NetBSD__]: Don't define this function.
+ (read_filesystem_list) [__NetBSD__]: Use fsp's f_fstypename field,
+ rather than fstype_to_string (f_type). With suggestions from
+ Greg Hudson (ghudson@mit.edu).
+
+ * lib/Makefile.in (OBJECTS): Remove eaccess.o.
+ * configure.in (AC_REPLACE_FUNCS): Add `eaccess' here instead.
+ The Hurd and Linux will have it.
+
+Fri Oct 07 20:27:48 1994 Jim Meyering (meyering@comco.com)
+
+ * (doc): New subdirectory with texinfo documentation.
+ * fileutils.texi: Thanks to Franc,ois Pinard and Karl Berry!
+
+ * Makefile.in (All of them): Update from the ones in sh-utils.
+ From now on, rules and definitions that are comon to the fileutils,
+ textutils, and sh-utils will get ChangeLog entries only in the
+ sh-utils.
+
+ * Makefile.in (install, uninstall): Prepend ginstall->install
+ mapping to standard $(transform) sed mapping.
+
+ * chgrp.c, chmod.c, chown.c, install.c, mkdir.c, mkfifo.c, mknod.c,
+ rm.c, rmdir.c (main): Diagnose wrong number of argument -- usually
+ too few -- instead of just referring the user to the --help option.
+ * mknod.c (main): Give diagnostics explaining specific problems
+ instead of just the usage message. Reported by Karl Berry.
+
+ * configure.in: Overhaul tests that determine how to get filesystem
+ usage statistics. Now, most use AC_TRY_RUN and test for the precise
+ feature that will be used. I know that that will make configuring a
+ little harder for the people who cross compile, but if one of them
+ is annoyed enough (or complains loudly enough :-) maybe someone will
+ find the time to add tests to be used solely when cross compiling.
+ * acconfig.h (STAT_READ): Rename to STAT_READ_FILSYS.
+ * fsusage.c: Reorganize accordingly.
+
+Tue Oct 04 20:38:12 1994 Jim Meyering (meyering@comco.com)
+
+ * chmod.c (main): Remove trailing slashes from file name arguments.
+ Otherwise, `chmod 600 foo/; chmod 700 foo/' failed with the error
+ `chmod: foo/: Permission denied' under Linux 1.1.51. Reported by
+ Thomas Koenig (ig25@fg70.rz.uni-karlsruhe.de).
+ * chown.c (main): Likewise.
+
+Thu Oct 2 23:03:32 1994 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Replace obsolete AC_DIR_HEADER with AC_HEADER_DIRENT
+ and AC_FUNC_CLOSEDIR_VOID.
+
+ * configure.in: Remove AC_SIZEOF_TYPE(int).
+ ls.c: Instead of comparing SIZEOF_INT == 2, compare INT_MAX to 2^16.
+ Suggestion from Roland McGrath.
+
+Sat Oct 01 21:23:27 1994 Jim Meyering (meyering@comco.com)
+
+ * src/*.c: Remove CONFIG_BROKETS conditional.
+
+ * {*/,}Makefile.in: Revamp to look much like those in sh-utils.
+ * acconfig.h (HAVE_FTRUNCATE): Remove it.
+ (ino_t, D_INO_IN_DIRENT): Add these.
+
+ * configure.in: Convert for autoconf-2.0.
+ * backupfile.c: Likewise.
+ * savedir.c: Likewise.
+
+ * mkdir.c, rmdir.c: Split the two functions from old mkdir.c into
+ separate files.
+
+ * chgrp.c [_POSIX_VERSION]: Test this instead of _POSIX_SOURCE.
+
+ * ls.c: Don't use SIZEOF_INT because it would require configure
+ to run a program -- then cross compilers would lose. Instead,
+ compare INT_MAX to 64k-1 since all we need to know is whether
+ an int is 2 bytes or larger.
+
+ * rm.c [D_INO]: Use D_INO_IN_DIRENT rather than _POSIX_SOURCE in the
+ test for how to define this macro.
+
+ * system.h: Use HAVE_SYS_PARAM_H (not _POSIX_SOURCE) in test
+ for whether to include <sys/param.h>.
+ Likewise for <utime.h>.
+ Update for DIRENT->HAVE_DIRENT_H etc. autoconf-2.0 changes.
+ Ditto for VOID_CLOSEDIR->CLOSEDIR_VOID.
+
+ * xgetcwd.c [!_POSIX_VERSION && !HAVE_GETCWD]: Remove
+ !defined (_POSIX_VERSION) conjunct. From Kaveh Ghazi.
+
+Mon Sep 26 17:47:17 1994 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
+
+ * lib/*.c: Remove CONFIG_BROKETS conditional.
+ * lib/Makefile.in src/Makefile.in: Don't define it.
+
+Sun Sep 25 12:20:52 1994 Jim Meyering (meyering@comco.com)
+
+ * ln.c (do_link): Give a diagnostic when trying to make a hard
+ link to a nonexistent source file. Before, running the command
+ `ln -i no-such-file existing-file' and responding `yes' to the
+ prompt would both remove `existing-file' and fail to make a link.
+ Karl Berry reported the problem.
+
+Sat Sep 10 04:34:34 1994 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * src/rm.c (remove_dir): Pass pathname to eaccess_stat.
+
+Fri Sep 2 13:54:13 1994 Michael I Bushnell <mib@geech.gnu.ai.mit.edu>
+
+ * lib/Makefile.in (safe-lstat.c, safe-lstat.h, safe-stat.c,
+ safe-stat.h): Use $(srcdir) to find source files.
+ (.c.o): Use -I. to get safe-lstat.h and safe-stat.h from the
+ build directory.
+ * src/Makefile.in (incl): Add -I../lib to get lib/safe-lstat.h and
+ lib/safe-stat.h from the build directory.
+
+Sat Aug 27 16:33:04 1994 Jim Meyering (meyering@comco.com)
+
+ * ln.c (main): Accept new option --no-dereference (-n).
+ (do_link): If the destination command line argument is a symlink
+ to a directory and --no-dereference is given, use that as the
+ destination instead of the file in the directory.
+ * ln.1: Document this.
+
+ * system.h [BROKEN_STAT_MACROS]: Remove unnecessary #ifdef's.
+ From Francois Pinard.
+
+ * isdir.c, makepath.c, rename.c [STAT_MACRO_BROKEN]: Remove
+ spurious #ifdef's.
+
+Thu Aug 25 00:12:20 1994 Jim Meyering (meyering@comco.com)
+
+ * dd.c (copy): Clean up and fix off-by-one error when freeing
+ the input buffer.
+
+Thu Aug 18 11:41:16 1994 Jim Meyering (meyering@comco.com)
+
+ * du.c (du_files) [HAVE_FCHDIR]: Use open (".", ...) and fchdir
+ instead of xgetcwd and chdir. Otherwise, running du in a subdirectory
+ of an unreadable directory would fail because xgetcwd fails.
+ * configure.in (AC_HAVE_FUNCS): Add fchdir. AIX-2.3 (for one)
+ doesn't have it.
+
+ * lib/Makefile.in (DISTFILES): Include getdate.c and posixtim.c
+ so one doesn't need $(YACC).
+ Add dependencies on safe-stat.h.
+
+Sat Jul 30 08:08:02 1994 Jim Meyering (meyering@comco.com)
+
+ * du.c (main): Don't initialize automatic array CWD_ONLY in declaration.
+ Some compilers don't allow that.
+
+ * backupfile.c [DIRENT]: Remove spurious `|| defined(_POSIX_VERSION)'.
+ * savedir.c: Ditto.
+
+ * safe-xstat.c.in, safe-xstat.h.in: New files.
+ * lib/Makefile.in: Add rules and dependencies for building safe-stat.c,
+ safe-stat.h, safe-lstat.c, and safe-lstat.h from them.
+
+ * eaccess.c (eaccess): Use SAFE_STAT instead of stat
+ (and/or SAFE_LSTAT instead of lstat) to avoid unnecessary failure
+ on systems for which stat (lstat) can return EINTR.
+ * fsusage.c (statfs): Ditto.
+ * isdir.c (isdir): Ditto.
+ * makepath.c (make_path): Ditto.
+ * rename.c (rename): Ditto.
+ * chgrp.c (change_file_group): Ditto.
+ * chmod.c (change_file_mode): Ditto.
+ * chown.c (change_file_owner): Ditto.
+ * cp-hash.c (remember_created): Ditto.
+ * cp.c (main, do_copy): Ditto.
+ * df.c (main, show_point): Ditto.
+ * du.c (main, du_files, count_entry): Ditto.
+ * install.c (copy_file): Ditto.
+ * ln.c (main, do_link): Ditto.
+ * ls.c (gobble_file): Ditto.
+ * mv.c (is_real_dir, do_move): Ditto.
+ * mvdir.c (main): Ditto.
+ * rm.c (rm): Ditto.
+ * touch.c (main, touch): Ditto.
+
+ * Makefile.in (install): Tell GNU make that this target is .PHONY
+ so it doesn't unnecessarily build ./install from install.sh.
+
+Tue Jul 26 11:33:53 1994 Jim Meyering (meyering@comco.com)
+
+ * system.h: Remove `|| defined(_POSIX_VERSION)' from test that
+ decides whether to include <fcntl.h>. From Francois Pinard.
+
+Sun Jul 03 08:44:00 1994 Jim Meyering (meyering@comco.com)
+
+ * configure.in [AC_HAVE_HEADERS]: Add sys/param.h, for definition
+ of HAVE_SYS_PARAM_H, now tested in pathmax.h.
+
+ * makepath.c (make_path): Avoid spurious failure for file names
+ that contain `/.' or `/..'. From Andreas Schwab
+ <schwab@issan.informatik.uni-dortmund.de>.
+
+ * dd.c (main): Handle SIGPIPE like other interrupts.
+ From Scott L. Burson <gyro@zeta-soft.com>.
+
+ * df.c (main, show_dev, usage): New option --print-type=fstype.
+ From Arne Henrik Juul.
+ * df.1: Update.
+
+Thu Jun 30 10:28:32 1994 Jim Meyering (meyering@comco.com)
+
+ * ls.c (longdiff) [SIZEOF_INT == 2]: Choose which version of this
+ macro to use based on SIZEOF_INT rather than obsolete INT_16_BITS.
+ [INODE_DIGITS]: New macro.
+ (print_long_format): Use it.
+ (print_file_name_and_frills): Ditto.
+ (length_of_file_name_and_frills): Ditto.
+ (print_long_format): Add a couple casts to unsigned types.
+
+ * ls.c: Change type name from `struct file' to `struct fileinfo'.
+ David J. Mackenzie reported a name conflict on HPUX with the former.
+
+ * dd.c (copy): Allocate an extra byte so I/O buffer begins on an
+ even address. This because the ITOS 3000WS running SEIUX 3.1
+ (a descendant of MIPS RISC/OS 4.x) has SCSI device drivers that
+ require the I/O buffer begin on an even address. From
+ Tilman Schmidt <tilman@gb1.sema.de>.
+
+Mon Jun 20 23:45:34 1994 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Use AC_PROGRAM_PATH to get values for LN, MV, RM.
+ (AC_HAVE_FUNCS): Add getgroups.
+ (AC_OUTPUT): Remove touch command.
+
+ * eaccess.c (in_group): Remove static function. Use group_member
+ instead.
+ (eaccess_stat, eaccess): Change calling sequence to take filename.
+ Save UID and GID and use access if they are the same as effective IDs.
+ (main) [TEST]: Test driver.
+ * cp.c (copy): Update callers.
+ * mv.c (do_move): Ditto.
+ * rm.c (remove_file): Ditto.
+
+ * cp.c (copy): With --preserve (-p) for non-root users, don't even
+ try to preserve file ownership in chown call. Otherwise, on systems
+ with the mis-feature allowing non-root users to change file ownership,
+ the subsequent chmod would fail.
+
+ * userspec.c (parse_user_spec): Rewrite. Be careful to free all
+ allocated memory upon error.
+ (main) [TEST]: Test driver.
+
+ * src/Makefile.in (uninstall): Delete $(LIBPROGS) one at a time
+ instead of like `rm -f $(libdir)/$(LIBPROGS)'. The old way loses
+ when LIBPROGS is empty and $(libdir) is a non-directory, and would
+ lose if LIBPROGS could ever have more than one word.
+ * (RM, LN, MV, INSTALL): Use values determined by ./configure instead
+ of the newly built binaries so people can build with a cross
+ compiler and still run `make (un)install.'
+
+ * chgrp.c (change_file_group): Give a better error message when
+ failing because the invoking user does not belong to the requested
+ group. This affects systems on which chown sets errno to EPERM
+ for both `inaccessible file' and `user not a member of the specified
+ group' errors. Before, `chgrp bin file-I-own' would give the
+ misleading and incorrect diagnostic `chgrp: file-I-own: Not owner'.
+ Now it reports `you are not a member of group `bin''.
+ Thomas A Peterson (tap@src.honeywell.com) reported this weakness.
+
+ * long-options.c: Move from src/ to lib/.
+ * long-options.h: Ditto.
+ * src/Makefile.in: Remove references to long-options.[ch].
+ * lib/Makefile.in (SOURCES, OBJECTS): Add long-options.[co].
+
+Sat Jun 18 15:45:34 1994 Jim Meyering (meyering@comco.com)
+
+ * du.c (count_entry): Print "/" instead of zero-length string.
+ From Kjetil Torgrim Homme.
+
+Sun May 29 13:43:50 1994 Jim Meyering (meyering@comco.com)
+
+ * group-member.c: New file.
+ * lib/Makefile.in (SOURCES, OBJECTS): Add group-member.[co].
+
+ * sync.c: New file.
+ * Makefile.in (PROGS): Add sync.
+ (SOURCES): Add sync.c
+ * src/Makefile.in: Add rules and dependencies for sync.
+
+ * configure.in: Use AC_SET_MAKE and AC_PROG_INSTALL.
+ If AC_FUNC_CHECK doesn't find getgroups, add -lbsd if possible.
+ This was reported by Tilman Schmidt <ts@gb1.sema.de>
+ to be necessary on an ITOS 3000WS running SEIUX 3.1.
+
+ * Makefile.in: Edit MAKE assignments into @SET_MAKE@.
+ (Makefile): Remove dependencies on */Makefile.in.
+ Change the rule so running config.status creates only Makefile.
+ (stamp-config): Have config.status generate only config.h.
+
+ * {lib,man,src}/Makefile.in (Makefile): Add single dependency on
+ Makefile.in and rule to make config.status create only Makefile.
+
+ * system.h: Move from lib to src.
+ * src/Makefile.in (DISTFILES): Add system.h.
+ * lib/Makefile.in (DISTFILES): Remove system.h.
+
+Mon Apr 18 19:54:24 1994 Jim Meyering (meyering@comco.com)
+
+ * documentation: Change uses of `pathname' and `path' as per
+ GNU standards.
+
+Fri Apr 15 20:41:15 1994 Jim Meyering (meyering@comco.com)
+
+ * mv.c (main): Give a reason for failure when given fewer than
+ two non-option arguments, rather than just the pointer to --help.
+ * ln.c (main): Ditto, but for no non-option arguments.
+
+ * configure.in: Update for autoconf-1.8.
+ Use AC_CHECKING instead of echo.
+ Use AC_SIZEOF_TYPE instead of obsolete AC_INT_16_BITS.
+
+Wed Apr 13 11:18:19 1994 Jim Meyering (meyering@comco.com)
+
+ * cp.c (copy_reg): Correct off-by-DEV_BSIZE error in test for
+ whether a file has holes. From Michael Bushnell <mib@gnu.ai.mit.edu>.
+
+Wed Mar 30 08:53:21 1994 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Use AC_SET_MAKE.
+ * Makefile.in: Edit MAKE assignments into @SET_MAKE@.
+
+Mon Mar 14 11:01:09 1994 Jim Meyering (meyering@comco.com)
+
+ * fsusage.c (adjust_blocks): Return -1 when FROMSIZE is non-positive.
+ Suggestion from Andries.Brouwer@cwi.nl. He reported that df failed
+ with divide by zero when trying to process an entry for an nfs file
+ system mounted over a SLIP line after the SLIP connection had been
+ broken.
+ [convert_blocks]: Rename macro to CONVERT_BLOCKS.
+
+Sat Jan 29 13:24:07 1994 Jim Meyering (meyering@comco.com)
+
+ * du.c (main): Call du_files (with ".") when there are no
+ non-option arguments rather than treating that as a special case.
+ (du_files): Ignore return value from count_entry.
+ (count_entry): Accumulate file sizes into new global sum used for
+ the -c option; the return value is unchanged and is still used
+ by recursive calls. Now, using -S and -c together works.
+ Add parentheses to clarify precedence.
+
+Fri Jan 28 11:02:21 1994 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Don't set LDFLAGS since linking now uses both
+ LDFLAGS and CFLAGS.
+
+Thu Jan 13 17:27:38 1994 Jim Meyering (meyering@comco.com)
+
+ * src/Makefile.in: Change all link commands to use both $(CFLAGS)
+ and $(LDFLAGS).
+
+Mon Jan 10 01:20:38 1994 Jim Meyering (meyering@comco.com)
+
+ * man/Makefile.in (manprefix): Use binprefix as the default.
+
+Thu Dec 30 23:11:10 1993 Jim Meyering (meyering@comco.com)
+
+ * The following changes are necessary to avoid spurious failures
+ when a read or write system call is interrupted (e.g. by SIGTSTP).
+ A POSIX implementation of those system calls may either return
+ -1 and set errno to EINTR or return a positive value indicating
+ that a partial read or write has completed successfully. On Linux
+ 0.99.14, interrupted read and write system calls return -1/EINTR.
+ Thanks to Bruno Haible <haible@ma2s2.mathematik.uni-karlsruhe.de>
+ for pointing this out.
+
+ * full-write.c, safe-read.c: New files.
+
+ * cp.c (copy_reg): Use full_write instead of write. Handle
+ errno == EINTR (instead of failing) after read system call.
+ * dd.c (skip): Handle errno == EINTR (instead of failing) after
+ read system call.
+ (copy): Use safe_read instead of read.
+ * install.c (copy_file): Use safe_read and full_write instead of
+ read and write system calls.
+ * mv.c (copy_reg): Ditto.
+ * touch.c (utime_now): Ditto.
+
+Tue Dec 28 15:49:32 1993 Jim Meyering (meyering@comco.com)
+
+ * install.sh: New file.
+ Makefile.in [DISTFILES]: Add it.
+
+Sat Dec 18 01:12:24 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in (AC_OUTPUT): Put `touch stamp-config' in second arg
+ so it goes in config.status. This eliminates unnecessary second run
+ of configure.
+
+Thu Nov 18 00:03:24 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in [STAT_STATFS2_FSIZE]: Fix test (that had obsolete
+ and now-broken use of AC_HEADER_EGREP) so that this flag is set
+ for NetBSD 0.9.
+
+Mon Oct 25 20:27:00 1993 Jim Meyering (meyering@comco.com)
+
+ * cp-aux.c, df.c, install.c, ln.c, ls.c, mkdir.c, mkfifo.c,
+ mknod.c, mv.c, touch.c: Use the preferred `--longopt=arg'
+ syntax in --help message rather than `--longopt arg'.
+ From Francois Pinard.
+
+Tue Oct 19 07:02:18 1993 Jim Meyering (meyering@comco.com)
+
+ * Version 3.9.
+
+Mon Oct 18 00:13:40 1993 Jim Meyering (meyering@comco.com)
+
+ * src/*.c (usage): Now the usage message is simply
+ "Try `%s --help' for more information. From Francois Pinard.
+
+ * src/Makefile.in [LIBPROGS]: Depend on ../lib/libfu.a and
+ version.o. From Francois Pinard.
+
+ * src/*.c (usage): Remove blank line before "Try `%s --help..."
+ in usage message.
+
+Sun Oct 17 00:19:58 1993 Jim Meyering (meyering@comco.com)
+
+ * fileblocks.c [!NINDIR]: Define BSIZE only if it's not already
+ defined.
+
+ * ls.c (print_long_format): Cast printf args major and minor
+ so they'll have types matching %u format even on systems
+ where those macros have signed type.
+
+Sat Oct 16 00:25:42 1993 Jim Meyering (meyering@comco.com)
+
+ * chmod.c (change_file_mode): Reapply Oct 6 change for symlinks.
+ Somehow it got removed from working sources.
+
+ * lib/Makefile.in [OBJECTS]: Change dependency to ../config.h so
+ it works when building in a subdirectory. From Rick Sladkey
+ (jrs@world.std.com).
+
+Wed Oct 13 19:43:47 1993 Jim Meyering (meyering@comco.com)
+
+ * cp.c (copy), ls.c (get_link_name): Complete Aug 27 change so
+ that we use PATH_MAX + 1 rather than sizeof(char*) as size of
+ buffer in readlink call. This was causing spurious errors.
+
+ * cp.c (copy), mv.c (do_move), rm.c (remove_file, remove_dir):
+ Cast to `unsigned int' stat->st_mode printf arguments corresponding
+ to %o formats to avoid warnings.
+
+ * lib/Makefile.in [DEFS]: Remove -DMVDIR. Add -DCONFIG_BROKETS.
+ (rename.o): Add a specific rule. Use -DMVDIR=... here instead.
+
+ * src/Makefile.in [DEFS]: Add -DCONFIG_BROKETS.
+ (distclean): Don't delete dir.c and vdir.c; they aren't
+ created anymore.
+
+ * lib/Makefile.in: Make all .o files depend on $(srcdir)/../config.h.
+ * src/Makefile.in: Ditto.
+
+Sun Oct 10 13:38:54 1993 Jim Meyering (meyering@comco.com)
+
+ * src/Makefile.in (dist): Depend on $(DISTFILES).
+
+ * src/Makefile.in [libdir, LIBPROGS]: Define them.
+ From Francois Pinard.
+
+ * posixtm.y: [HAVE_CONFIG_H, CONFIG_BROKETS]: Include <config.h>
+ or "config.h". From Francois Pinard.
+
+ * makepath.c: [HAVE_CONFIG_H, CONFIG_BROKETS]: Remove the duplicate
+ #ifdef block following the alloca #ifdefs. From Francois Pinard.
+
+ * df.c: Remove unnecessary dcl of strstr.
+
+Sat Oct 9 13:30:28 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in [STATFS_OSF1]: Change name to STAT_STATFS3_OSF1
+ to be consistent with names of the other STAT_* macros.
+ * acconfig.h: Ditto.
+ * fsusage.c: Ditto.
+
+ * acconfig.h: Add comments.
+ * Makefile.in: Remove comments about -D flags that could be added
+ to DEFS; now (using autoheader) those comments end up in config.h.
+
+ * Makefile.in (configure, config.h.in): Warn that they may not be
+ up to date. Don't touch them.
+
+ * ls.c (usage): Split long usage string between two fprintf
+ statements to avoid default limit of SGI's cc on string length.
+
+ * Makefile.in, src/Makefile.in [PROGS]: Alphabetize.
+
+ * configure.in: Remove AC_UNISTD_H; add unistd.h to AC_HAVE_HEADERS.
+
+Thu Oct 07 12:57:10 1993 Jim Meyering (meyering@comco.com)
+
+ * chgrp.c, chmod.c, chown.c, cp-aux.c, cp.c, dd.c, df.c, du.c,
+ install.c, ln.c, ls.c, mkdir.c, mkfifo.c, mknod.c, mv.c, mvdir.c,
+ rm.c, rmdir.c, touch.c (usage): Using --help gets long well-
+ formatted help. Now --help writes to stdout and exits successfully.
+ From Francois Pinard <pinard@iro.umontreal.ca>.
+
+ * lib/Makefile.in [libdir]: Make sure it's defined.
+
+ * posixtm.y [!__GNUC__ && !HAVE_ALLOCA_H]: Declare alloca as void*
+ rather than char*. The latter conflicts with a dcl from bison.simple.
+
+Wed Oct 06 18:22:00 1993 Jim Meyering (meyering@comco.com)
+
+ * chmod.c (change_file_mode): Add an argument to control how symbolic
+ links are treated.
+ (main, change_dir_mode): Reflect changed calling sequence.
+ Now symlinks listed on the command line are processed (they
+ were ignored before); the permissions of the dereferenced files are
+ changed. Symlinks encountered in recursive traversals are still
+ ignored. This makes GNU chmod act more like e.g. Sun's.
+ From Nick Holloway <alfie@dcs.warwick.ac.uk>.
+ * chmod.1: Document it.
+
+Tue Oct 05 14:52:02 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Add AC_STAT_MACROS_BROKEN.
+
+ * isdir.c, makepath.c, rename.c, system.h [STAT_MACROS_BROKEN]:
+ Test this.
+
+ * install.c (install_file_in_dir): Use stpcpy instead of slow sprintf.
+
+ * argmatch.c, backupfile.c, basename.c, dirname.c, eaccess.c,
+ fileblocks.c, fsusage.c, getversion.c, idcache.c, isdir.c,
+ makepath.c, mountlist.c, rename.c, savedir.c, stripslash.c,
+ userspec.c, xgetcwd.c, xstrdup.c, yesno.c, [HAVE_CONFIG_H,
+ CONFIG_BROKETS]: Include <config.h> or "config.h".
+
+ * lib/Makefile.in, src/Makefile.in [.c.o]: Put -I.. before
+ -I$(srcdir) so <config.h> will get the right file.
+
+ * chgrp.c, chmod.c, chown.c, cp-aux.c, cp-hash.c, cp.c, dd.c,
+ df.c, du.c, install.c, ln.c, ls.c, mkdir.c, mkfifo.c, mknod.c,
+ mv.c, mvdir.c, rm.c, rmdir.c, touch.c, version.c [HAVE_CONFIG_H,
+ CONFIG_BROKETS]: Include <config.h> or "config.h".
+
+ * configure.in [AC_CONFIG_HEADER]: Use it.
+
+ * configure.in (rename.o) [MVDIR definition]: Remove it.
+ * lib/Makefile.in [DEFS]: Put it here instead.
+
+ * config.h.in, acconfig.h: New files
+ * Makefile [DISTFILES]: Add them.
+ (config.h.in): Add a rule to warn if it may need to be rebuilt.
+
+ * lib/Makefile [YACC]: Get definition from @YACC@.
+
+ * system.h: Include <unistd.h>. This is needed for the definition
+ of _POSIX_VERSION.
+
+Thu Sep 9 08:52:10 1993 Jim Meyering (meyering@comco.com)
+
+ * src/*.c: Print version on standard output, not stderr.
+
+Fri Aug 27 23:53:50 1993 Jim Meyering (meyering@comco.com)
+
+ * cp.c (copy), ls.c (get_link_name): Don't use PATH_MAX as array
+ length in declarations because on some systems it gets defined
+ to the function pathconf. Use dynamic allocation instead.
+
+ * fsusage.c (adjust_blocks): Use `1' instead of `+1'. Many
+ compilers don't parse the latter. From Kaveh R. Ghazi.
+
+Thu Aug 26 22:26:09 1993 Jim Meyering (meyering@comco.com)
+
+ * ls.c (print_long_format, print_file_name_and_frills): Cast inode
+ number to unsigned long and print it with %lu to avoid warnings from
+ gcc -Wformat because the size and type of ino_t are system dependent.
+
+ * cp.c (do_copy): Plug a memory leak with --parents.
+
+ * ln.c (main): Like mv and cp, convert `ln x y/' to ln x y/x
+ when a is not a directory.
+ [PATH_BASENAME_CONCAT]: New macro.
+ (do_link): Use it here, too.
+
+ * ls.c (sort_files): Add `default: abort();' clause to switch stmts.
+
+ * cp.c (do_copy): Don't remove trailing slashes from source.
+
+Wed Aug 25 21:40:00 1993 Jim Meyering (meyering@comco.com)
+
+ * cp.c: Add --parents as synonym for --path. Change --path to
+ --parents in comments. --path is deprecated.
+
+ * rm.c (clear_directory): Fix incorrect test for determining when
+ to reallocate buffer. Thanks to Ric Anderson <ric@CS.Arizona.EDU>.
+
+Fri Aug 13 17:19:52 1993 Jim Meyering (meyering@comco.com)
+
+ * fsusage (adjust_blocks): Round away from zero -- this matters
+ when computing the negative free-block count for disks that are
+ more than 100% full.
+
+ * mv.c (movefile): Use nested calls to stpcpy instead of sprintf.
+ (is_real_dir): New function.
+ (movefile): In addition to when dest is a directory, if dest has
+ a trailing `/' and source is not a directory, presume the target
+ is dest/`basename source`. This converts `mv x y/' to `mv x y/x'
+ when x is not a directory. This change means that the command
+ `mv any file/' will now fail rather than performing the move.
+
+ * cp.c (do_copy): Similarly, convert `cp x y/' to cp x y/x when
+ x is not a directory.
+
+Wed Aug 4 17:43:18 1993 Jim Meyering (meyering@comco.com)
+
+ * ls.c (get_link_name): Don't ever use the stat field st_size as a
+ buffer size. Too many systems don't set it properly for mount points.
+ Instead, use a fixed-length buffer. From Michael Joosten
+ <joost@ori.CAdlab.DE>.
+ * cp.c (copy): Ditto.
+
+Mon Jul 19 17:39:01 1993 Jim Meyering (meyering@comco.com)
+
+ * backupfile.c (concat): Temporary STR1_LENGTH should have type `int'
+ instead of `char.'
+
+Fri Jul 16 22:00:16 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu)
+
+ * dd.c (print_stats): Change message from "truncated blocks"
+ to "truncated records" for final POSIX.2 spec.
+
+Fri Jun 25 17:18:15 1993 Jim Meyering (meyering@comco.com)
+
+ * mkdir.c, rmdir.c: Change --path long option to --parents to avoid
+ confusion with search-path semantics of --path as an option to other
+ programs. --path will still work, but is no longer documented.
+
+Tue Jun 8 00:46:26 1993 Jim Meyering (meyering@comco.com)
+
+ * dd.c (parse_integer): Also accept `c' multiplier for consistency
+ with find's -size option.
+
+Thu May 27 00:03:51 1993 Jim Meyering (meyering@comco.com)
+
+ * Version 3.8.
+
+ * configure.in (STAT_OSF1): Reference the statfs f_fsize member
+ so that configure defines STAT_OSF1 only if there is such a member.
+ Without such a reference, a Pyramid MIServer running OSx 5.1
+ improperly defined STAT_OSF1 instead of the one it needed:
+ STAT_STATFS2_BSIZE.
+
+Wed May 26 00:57:46 1993 Jim Meyering (meyering@comco.com)
+
+ * ls.h, ls-ls.c ls-dir.c, ls-vdir.c: New files that define or
+ simply set the new global variable ls_mode. ls_mode defines whether
+ the executable built from ls.o should act like ls, dir, or vdir.
+ * ls.c (decode_switches): Use the variable instead of #ifdefs.
+ This is modelled after the approach used in GNU binutils 2.x for
+ ar and ranlib. Here we avoid two redundant compilations.
+
+ * install.c (change_attributes, copy_file, install_file_in_file):
+ Don't call chown if we can efficiently determine that doing so is
+ unnecessary. On some systems, calls to chown (even with your own
+ uid and gid) fail unless made by root. On such systems install
+ got spurious failures.
+
+Sat May 22 02:13:12 1993 Jim Meyering (meyering@comco.com)
+
+ * Version 3.6.
+
+Fri May 21 18:42:27 1993 Jim Meyering (meyering@comco.com)
+
+ * rename.c (rename): Be careful not to unlink `from' if it happens
+ to be equal to `to' or (on filesystems that silently truncate
+ filenames after 14 characters) if `from' and `to' share the
+ significant characters. From Bruno Haible
+ <haible@ma2s2.mathematik.uni-karlsruhe.de>.
+
+ * mountlist.c, fsusage.c: Make these work under m88k DolphinOS.
+ From Kjetil Wiekhorst J|rgensen <jorgens@pvv.unit.no>.
+
+Tue May 18 23:49:26 1993 Jim Meyering (meyering@comco.com)
+
+ * mkinstalldirs: New file.
+ * Makefile.in (installdirs): Use it.
+
+Sat May 15 01:20:26 1993 Jim Meyering (meyering@comco.com)
+
+ * ln.c (do_link): Make `ln -s dir_pathname .' work when the
+ pathname has a trailing slash.
+
+Fri May 14 23:45:52 1993 Jim Meyering (meyering@comco.com)
+
+ * all source: With --version, print version and exit immediately.
+
+Wed May 12 20:48:55 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Add check for the -ldgc library that is required
+ for getmntent on m88k DGUX-5.4 systems.
+
+ * Makefile.in (installdirs): New rules for creating installation
+ directories. (install): Depend on it.
+
+Sat May 8 11:31:14 1993 Jim Meyering (meyering@comco.com)
+
+ * lib/Makefile.in (dist): Use `cp -p' instead of just `cp'
+ if linking fails.
+
+Thu May 6 22:45:25 1993 Jim Meyering (meyering@comco.com)
+
+ * makepath.c: Use explicit dcl of errno only if !STDC_HEADERS.
+ Some systems have <errno.h> but don't declare errno.
+ From Kaveh R. Ghazi <ghazi@caip.rutgers.edu>.
+
+ * getdate.y: Test TIME_WITH_SYS_TIME, not TIME_AND_SYS_TIME.
+
+Wed May 5 00:21:12 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Add AC_TIME_WITH_SYS_TIME.
+ * getdate.y: Use it (this is a version local to fileutils).
+
+Tue May 4 20:25:41 1993 Jim Meyering (meyering@comco.com)
+
+ * du.c (count_entry): Give an error and exit if chdir ("..") fails.
+ From Bruce Evans <bde@runx.oz.AU>.
+
+ * eaccess (eaccess_stat): Cast NGROUPS_MAX to appropriate types.
+ From Bruce Evans <bde@runx.oz.AU>.
+
+Mon May 3 22:09:24 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Add AC_GETGROUPS_T.
+ * eaccess.c: Don't define GETGROUPS_T. Now configure does it.
+
+Sun May 2 09:18:53 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Check for libypsec.a on Dolphin M88K machines.
+ This can result in significant speedup for programs that access
+ YP information. From Kjetil Wiekhorst J{\o}rgensen
+ <jorgens@pvv.unit.no>.
+
+Fri Apr 30 02:21:48 1993 Jim Meyering (meyering@comco.com)
+
+ * ls.c (main): Make `-f' work like on standard Unix ls, instead
+ of as a short equivalent of --full-time.
+ * ls.1: Document it.
+
+Thu Apr 29 00:46:46 1993 Jim Meyering (meyering@comco.com)
+
+ * src/Makefile.in [dir.o, vdir.o]: Make ordering of CFLAGS etc
+ in compilation rules consistent with that in .c.o rule.
+
+ * Makefile.in (dist): Depend on Makefile so that changes to
+ Makefile.in (like adding new files to DISTRIB) are reflected
+ in the new distribution.
+
+Tue Apr 27 21:35:11 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Remove unnecessary AC_PROG_INSTALL.
+
+Fri Apr 23 23:39:16 1993 Jim Meyering (meyering@comco.com)
+
+ * {lib,src}/Makefile.in [.c.o]: Make CPPFLAGS and CFLAGS follow
+ other options so users can use them to override DEFS.
+
+ * lib/mktime.c: Use new version from glibc instead of one from
+ libc-subst. `touch' built with the latter didn't set proper
+ time unless given a specific --date option.
+
+Thu Apr 22 00:22:25 1993 Jim Meyering (meyering@comco.com)
+
+ * makepath.c: Decouple inclusion of errno.h from definition of
+ STDC_HEADERS; many systems have errno.h, yet shouldn't define
+ STDC_HEADERS.
+ * makepath.c (make_path): Add EPERM clause only if both AFS and
+ EPERM are defined.
+ * configure.in: Test for errno.h header file.
+
+Mon Apr 19 11:21:14 1993 Jim Meyering (meyering@comco.com)
+
+ * Version 3.5.
+
+ * ls.c, touch.c: Don't include time.h explicitly -- it's included
+ by system.h. From Franc,ois Pinard.
+
+ * posixtm.y: Use TM_IN_SYS_TIME.
+
+ * backupfile.c [index, rindex]: Don't redefine them.
+
+ * system.h [alloca]: Don't redefine it.
+
+ * configure.in: Check for sys/time.h; getdate.y needs it for
+ structs timeval and timezone on some systems.
+
+Sun Apr 18 22:40:19 1993 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu)
+
+ * ls.c: Include fnmatch.h after system.h, so we get our
+ definitions of FNM_*, not those from unistd.h.
+
+ * mountlist.c [MOUNTED_GETMNTINFO]: Add #ifdef around MOUNT_PC.
+
+ * configure.in: Fix test for 4.4BSD statfs to not grep for a
+ macro in cpp output.
+
+Sun Apr 18 02:35:36 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Check for gettimeofday.
+ Check for `struct tm'.
+ Change MVDIR definition so it works with new AC_DEFINE.
+
+ * system.h: Remove last vestiges of USG; instead, use specific
+ test for TM_IN_SYS_TIME to determine whether to include time.h
+ or sys/time.h.
+
+ * src/Makefile.in (install): Rewrite the test for whether to install
+ mvdir so that it doesn't cause gratuitous failures with broken shells.
+ Split long rule so the pieces fit in 80-column lines.
+
+Thu Apr 15 23:44:01 1993 Jim Meyering (meyering@comco.com)
+
+ * lib/Makefile.in (posixtm.c): Add dependency on getdate.c to enforce
+ sequential invocations of YACC.
+ * (posixtm.c, getdate.c): Remove use of `bison -o' and associated
+ conditional rename commands -- not needed since the parser generators
+ won't be run in parallel; now bison (when used) is always invoked
+ with -y.
+
+Tue Apr 13 09:18:18 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Find a parser generator.
+ * Makefile.in [MDEFINES]: Add YACC to the list of variables passed to
+ sub-makes.
+ * lib/Makefile.in (posixtm.c, getdate.c): Try first to build with
+ `bison -o' -- for parallel makes. If that fails, use $(YACC).
+
+ * posixtm.y [HAVE_MEMCPY && !HAVE_BCOPY]: Define bcopy in terms
+ of memcpy for old versions of bison that generate parsers that
+ use bcopy.
+
+ * configure.in: Add tests for memcpy and bcopy.
+
+Mon Apr 12 23:02:14 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in (mounted, space): Add filesystem checks for DEC Alpha
+ running OSF/1 to complement new code in mountlist.c and fsusage.c.
+
+ * lib/mountlist.c (read_filesystem_list) [MOUNTED_GETFSSTAT]: Add code
+ to do it the OSF/1 way on a DEC alpha.
+ From Brian Fox (bfox@tinker.crseo.ucsb.edu).
+
+ * lib/fsusage.c (get_fs_usage) [STATFS_OSF1]: Add code to call OSF/1's
+ variant of statfs. From Brian Fox (bfox@tinker.crseo.ucsb.edu).
+
+Sun Apr 11 20:29:31 1993 Jim Meyering (meyering@comco.com)
+
+ * df.c (main, show_dev): Don't list dummy (automounter) filesystems
+ unless they're explicitly listed on the command line or if the -a
+ option is given.
+
+Fri Apr 9 11:40:48 1993 Jim Meyering (meyering@comco.com)
+
+ * src/Makefile.in [.c.o]: Put CFLAGS after include directives.
+
+Wed Apr 7 23:54:48 1993 Jim Meyering (meyering@comco.com)
+
+ * eaccess.c: Undefine NGROUPS_MAX before redefining it.
+ From ghazi@caip.rutgers.edu (Kaveh R. Ghazi).
+
+Mon Apr 5 20:14:17 1993 Jim Meyering (meyering@comco.com)
+
+ * chgrp.c, chmod.c, chown.c, install.c, ls.c, mkfifo.c, mknod.c,
+ touch.c: Add `case 0: break;' for long-only options help and version.
+
+Sun Apr 4 09:38:00 1993 Jim Meyering (meyering@comco.com)
+
+ * src/*.c (usage): Mention --help and --version.
+ (main): Handle flag_help and flag_version before checking for
+ invocation errors.
+
+ * cp.c (copy): Declare to be static.
+
+ * cp.c (copy, make_path, re_protect): Explicitly cast alloca return
+ value to (char *).
+ * ln.c (do_link): Ditto
+ * mv.c (do_move): Ditto
+ * makepath.c (make_path): Ditto
+
+ * lib/eaccess.c (eaccess_stat): Cast to unsigned the value to
+ be right-shifted to avoid ANSI vs K&R semantic ambiguity.
+
+ * src/Makefile.in (incl): New variable.
+
+ * chown.c (main): Explicitly cast -1 to [ug]id_t to avoid compiler
+ warnings.
+
+ * cp.h: Remove unneeded extern dcl of exit_status.
+
+ * basename.c [rindex]: Don't redefine it.
+ * system.h [rindex, incl, bcopy, bzero]: Ditto.
+ * userspec.c [index]: Ditto.
+
+ * Makefile.in [CFLAGS, LDFLAGS]: Don't hard-code these; get their
+ definitions from configure.
+ * configure.in [CFLAGS, LDFLAGS]: Assign reasonable defaults.
+
+Sat Apr 3 18:17:23 1993 Jim Meyering (meyering@comco.com)
+
+ * Makefile.in [Makefile]: Add dependencies and a rule to remake it.
+ [targets that cd then run make in subdirectories]: Don't depend
+ on `cd ..'; use a subshell instead.
+ [info, install-info, dvi, check, installcheck]: New targets but no
+ rules; comply with standards.
+
+ * src/Makefile.in [.c.o, dir.o, vdir.o]: Put CFLAGS after DEFS and
+ CPPFLAGS per standards.texi.
+ Use automatically generated dependencies.
+
+ * mvdir.c (main): Remove dcl of unused variable.
+
+Thu Apr 1 18:05:48 1993 Jim Meyering (meyering@comco.com)
+
+ * install.c, chgrp.c, dd.c [isascii]: Undefine before redefining.
+
+ * ls.c: Move some dcls so they appear before first function.
+
+ * all programs: Add --help and --version options.
+ * version.c: Remove `Version: ' and newlines from version string.
+
+ * dd.c: Convert usage to take no arguments.
+ * lib/Makefile.in [DISTFILES]: Add version.h.
+
+Wed Mar 31 22:03:28 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in [MVDIR]: Don't quote right hand side.
+ * backupfile.c, chgrp.c, install.c: Define isascii macro to be 1
+ also if STDC_HEADERS.
+
+Tue Mar 30 17:42:11 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * ls.c: Add -G,--no-group option to inhibit display of group
+ information.
+ * ls.1: Document it.
+
+Mon Mar 29 22:22:40 1993 Jim Meyering (meyering@comco.com)
+
+ * system.h [ST_NBLOCKS]: Check also for __hpux. From Henrik B}kman
+ <Henrik.Bakman@csd.uu.se>.
+
+Sun Mar 28 21:22:30 1993 Jim Meyering (meyering@comco.com)
+
+ * Makefile.in (dist): Use cp when hard link fails.
+ Use tar-1.11.2's -z option instead of -Z.
+
+ * makepath.c [index]: Don't redefine.
+
+Fri Mar 26 00:32:39 1993 Jim Meyering (meyering@comco.com)
+
+ * df.c (add_excluded_fs_type, excluded_fs_type): New functions adding
+ support for --exclude-type option. Derived from Kaveh R. Ghazi
+ <ghazi@caip.rutgers.edu>.
+
+ * ls.c (decode_switches, print_long_format): New option: --full-time.
+ From K. Richard Pixley (rich@rtl.cygnus.com)
+
+Thu Mar 25 21:02:36 1993 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu)
+
+ * dirname.c [rindex]: Don't redefine.
+
+Tue Mar 23 23:13:33 1993 Jim Meyering (meyering@comco.com)
+
+ * ls.c (gobble_file): Don't stat symlinks unless we need to.
+ From Mike Rendell <michael@mercury.cs.mun.ca>.
+
+ * dd.c (copy, copy_with_block, copy_with_block): Decrement
+ pending_spaces only if it's > 0. The following command didn't
+ terminate:
+ perl -e 'print "a a\n";'| dd of=/dev/null ibs=1 cbs=3 conv=unblock
+ With suggestions from Chris Weber <weber@bucknell.edu>,
+ Marlys.A.Nelson@uwrf.edu, and Albert-Lunde@nwu.edu.
+
+Fri Mar 05 00:02:53 1993 Jim Meyering (meyering@comco.com)
+
+ * chmod.c: Add long-named options.
+
+Mon Feb 15 23:34:55 1993 Jim Meyering (meyering@comco.com)
+
+ * rm.c (remove_file): Don't ask about overriding a mode if the
+ target is a symbolic link -- some systems (like SGI's Irix 4.0)
+ zero the permissions fields of symbolic links.
+ From Arne Henrik Juul (arnej@imf.unit.no).
+
+Fri Dec 11 16:46:50 1992 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu)
+
+ * rm.c (main): If -f is given, don't complain if no file args
+ are given.
+
+Tue Dec 8 21:09:16 1992 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu)
+
+ * posixtm.y: Include alloca.h if HAVE_ALLOCA_H, not if sparc.
+
+Mon Dec 7 20:09:59 1992 Jim Meyering (meyering@idefix.comco.com)
+
+ * install.c (isnumber), chgrp.c (change_file_group): Define ISDIGIT
+ and use it instead of isdigit.
+
+ * dd.c: Define ISLOWER and ISUPPER independent of STDC_HEADERS.
+ Define ISDIGIT and use it instead of isdigit.
+
+Wed Dec 2 12:28:10 1992 Jim Meyering (meyering@idefix.comco.com)
+
+ * all files using getopt.h: Convert static declarations of
+ struct option to use new macros from getopt.h: no_argument,
+ required_argument, and optional_argument.
+
+Tue Nov 24 07:54:45 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu)
+
+ * system.h: Use HAVE_FCNTL_H instead of USG.
+
+ * xgetcwd.c: Use HAVE_GETCWD instead of USG.
+
+ * backupfile.c, basename.c, dirname.c, idcache.c, makepath.c,
+ mountlist.c, stripslash.c, userspec.c, xstrdup.c, system.h:
+ Use HAVE_STRING_H instead of USG.
+
+ * system.h: Use SYSDIR and NDIR instead of USG.
+ Define direct as dirent, not vice-versa.
+ * ls.c, rm.c, backupfile.c, savedir.c: Use `struct dirent',
+ not `struct direct'.
+
+Thu Nov 12 23:10:56 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu)
+
+ * system.h: If dirent is #defined, don't define direct as dirent;
+ for Sinix. Derived from Heinfried Korn (korn@med-in.uni-sb.de).
+
+Mon Nov 9 14:13:57 1992 Jim Meyering (meyering@idefix.comco.com)
+
+ * fsusage.c (adjust_blocks): Reverse Oct 31 change --
+ the function is more readable than the macro.
+
+ * All files in src: Make all functions and extern variables static.
+ Make all longopts arrays const as well as static.
+ Make a couple statically initialized aggregates `const.'
+
+Sat Oct 31 16:32:17 1992 Jim Meyering (meyering@idefix.comco.com)
+
+ * fsusage.c (adjust_blocks): Convert to a macro. The static
+ function wasn't always used.
+
+ * makepath.c, cp.c, ls.c: Add parentheses to expressions
+ like (c = *p++) as per suggestion from gcc -Wall.
+
+ * dd.c (swab_buffer): Fix typo that incremented pointer instead
+ of counter. Add braces around static struct initializers.
+
+Fri Oct 30 11:40:58 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu)
+
+ * ln.c, cp.c (main): Make -s on systems without symlinks an
+ error, not a warning.
+
+Thu Oct 29 14:57:21 1992 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu)
+
+ * Version 3.4.
+
+ * cp.c (copy, re_protect), mv.c (copy_reg): Do utime and chown
+ before chmod, so set[ug]id bits don't get nuked.
+ Don't use fchmod.
+
+Wed Oct 28 16:13:18 1992 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu)
+
+ * cp.c, mv.c, ln.c: Rename some variables to use consistent
+ terminology: source and destination.
+
+ * ln.c, mkdir.c, mkfifo.c, mknod.c: Don't strip trailing slashes.
+ * install.c: Don't strip slashes from dest. dirs.
+
+Mon Aug 24 12:49:14 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * xgetcwd.c: Make path_max unsigned, not long. From Bruce Evans.
+
+Sun Aug 23 03:06:04 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * idcache.c: Use a union for uid_t and gid_t. From
+ bde@runx.oz.au (Bruce Evans).
+
+ * eaccess.c: Use NGROUPS_MAX if it's defined. 386BSD is like sun.
+
+Sat Aug 22 02:36:49 1992 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
+
+ * makepath.c: Use uid_t and gid_t.
+
+ * system.h, makepath.c: Use HAVE_ALLOCA_H, not sparc.
+
+ * cp.c (make_path, re_protect): Allocate room for terminating NULs.
+
+Fri Aug 21 21:12:18 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * fsusage.c [STAT_STATVFS]: Use f_bsize if f_frsize is 0.
+ From Paul M Reilly <pmr@rock.concert.net>.
+
+ * xgetcwd.c [!errno]: Declare errno. From Karl Berry.
+
+ * chown.c (main, change_file_owner, change_dir_owner): Use
+ uid_t and gid_t. From Rob McMahon <cudcv@csv.warwick.ac.uk>
+ and glaze@cs.mu.oz.au (Glaze).
+
+Thu Jul 23 14:29:17 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * Version 3.3.
+
+Sat Jul 18 20:12:56 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * idcache.c: Use uid_t and gid_t.
+ (getuidbyname, getgidbyname): New functions, for cpio.
+
+ * userspec.c: New file, from code in chown.c.
+ * chown.c: Use it.
+
+Fri Jul 17 00:43:38 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * system.h: Protect from getopt prototype in stdlib.h.
+
+ * ls.c [_AIX]: Include sys/ioctl.h.
+ * fsusage.c: Include sys/vfs.h if AIX PS/2, but not if RS6000.
+ From tranle@intellicorp.com (Minh Tran-Le).
+
+ * mvdir.c: Declare getcwd. From Francois Pinard.
+
+ * chown.c, chgrp.c, install.c [_POSIX_SOURCE]: Define endpwent
+ and endgrent as empty.
+
+ * makepath.c (make_path): Add cast to alloca call.
+ From Jim Meyering.
+
+ * cp.c (copy, re_protect), mv.c (copy_reg): Notify root of
+ EPERM errors from chown.
+ * makepath.c, install.c [AFS]: Ignore EPERM from chown.
+
+ * system.h (ST_NBLOCKS) [_AIX && _I386]: st_blocks is in 4K units.
+ * fsusage.c (statfs) [_AIX && _I386]: Supply this function.
+ From tranle@intellicorp.com (Minh Tran-Le).
+
+Thu Jul 16 23:08:39 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * df.c (print_header, show_dev): In inode format, print the
+ total number of inodes as well.
+
+ * fsusage.[ch], df.c (show_dev): Count internally using
+ 512-byte blocks, not 1024-byte, to avoid rounding errors.
+
+Mon Jul 6 20:03:54 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * rename.c: Use S_ISDIR instead of S_IFDIR.
+
+Fri Jul 3 14:36:34 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * fileblocks.c, system.h, cp.c, dd.c, mv.c, touch.c: Change
+ FOO_MISSING to HAVE_FOO.
+
+Wed Jun 3 19:28:04 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * xgetcwd.c (xgetcwd): Accept errno==EINVAL as nonfatal.
+
+Wed May 20 00:05:52 1992 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
+
+ * system.h: If we include a header file specifically to get
+ major et al., assume we have them.
+
+Mon May 11 20:04:10 1992 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
+
+ * chgrp.c, chown.c: --show-changes -> --changes.
+
+Sat May 9 18:39:38 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * system.h: Define DEV_BSIZE if not defined.
+
+Thu Apr 30 13:55:37 1992 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
+
+ * du.c (count_entry): Remove the trailing "/" before printing.
+
+Wed Apr 29 11:34:38 1992 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
+
+ * rename.c (rename): If removing `from' fails, remove `to' to
+ clean up. From Matthew Farwell <dylan@ibmpcug.co.uk>.
+
+Thu Apr 23 21:14:16 1992 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
+
+ * ls.c (gobble_file): Only read the link contents if -l or the
+ file was named on the command line.
+
+Wed Apr 22 02:16:38 1992 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
+
+ * fsusage.c (get_fs_usage) [STAT_STATFS4 and _SEQUENT_]: Has f_bavail.
+ From Donn Cave <donn@carson.u.washington.edu>.
+
+ * getversion.c (get_version): If given invalid arg, exit.
+
+ * cp.c (copy): Fix mode with chmod if copying as a regular file.
+
+ * system.h, dd.c: SIGTYPE -> RETSIGTYPE.
+
+Sat Apr 18 00:18:41 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * fsusage.[ch] (get_fs_usage): Take another arg, the device name.
+ * fsusage.c (get_fs_usage) [STAT_READ]: Fix number of inodes
+ calculation. Use the device name. From Brian Matthews.
+ * df.c (show_dev): Pass the device name.
+
+Fri Apr 17 11:25:28 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * fsusage.c: Special-case AIX.
+
+ * mountlist.c [MOUNTED_VMOUNT]: New code for AIX, from
+ Garrett A. Wollman (wollman@uvm.edu).
+
+ * ls.c (gobble_file): Use stat, not lstat, on symlinked-to
+ file, for Unix compat. From ian@airs.com (Ian Lance Taylor).
+
+Mon Apr 6 14:16:06 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * xgetcwd.c: Include stdio.h to get NULL.
+
+Thu Apr 2 14:41:18 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * df.c: Call sync only once, instead of once per filesystem.
+
+Wed Apr 1 16:00:08 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * Version 3.2.
+
+Tue Mar 31 13:39:06 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * df.c (main): stat all arg pathnames before getting
+ list of mounted filesystems.
+ (show_entry, show_point): Take a struct stat * as another arg,
+ to avoid repeatedly statting files.
+
+Mon Mar 30 12:21:28 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * install.c (main): Allow symbolic modes for -m.
+ (atoo): Function removed.
+
+ * mkdir.c (main): Include invalid -m arg in error message.
+
+ * fsusage.c (get_fs_usage) [STAT_STATFS4]: Go back to using
+ 512 instead of f_bsize. Empirically, it gives the right answer.
+
+ * mvdir.c (main): Don't deref NULL pointer on last iteration
+ of loop.
+
+ * fsusage.c (adjust_blocks): New function.
+ (get_fs_usage): Call it.
+
+ * mvdir.c (main): Don't possibly try to use ".." entry of new dir
+ before creating it.
+
+ * fsusage.c (get_fs_usage) [STAT_STATFS4]: Use f_bsize member
+ of struct statfs.
+
+Sat Mar 28 00:36:57 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * dd.c (copy_simple, copy_with_block, copy_with_unblock,
+ translate_buffer, swab_buffer): New functions, mostly made
+ from code taken from copy. Incorporate some optimizations due
+ to Stuart Kemp: For each type of conversion, only check
+ whether to do it once per buffer read, instead of once per character.
+ (copy): If conv=block and the input didn't end with a newline,
+ pad the final block with spaces.
+
+Wed Mar 25 14:35:17 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * system.h: Don't use BSIZE for calculating ST_BLKSIZE if it
+ isn't defined.
+
+ * mountlist.c [MOUNTED_FREAD], fsusage.c [STAT_READ]: New code
+ for SVR2, from archive@ideahb.sublink.org (Lele Gaifax).
+
+Tue Mar 24 14:53:19 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * mvdir.c: Use getcwd, not getwd.
+
+ * system.h, xgetcwd.c: Redo how PATH_MAX is figured out, to
+ work on SVR3.
+
+ * fsusage.c, mountlist.c: New files split from fsinfo.c.
+ Revise conditionals to make the two files independent of each other.
+ * fsusage.h, mountlist.h: New files split from fsinfo.h.
+ * df.c: Use them.
+
+Mon Mar 23 13:01:07 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * fsinfo.c (read_filesystem_list): Take another arg, all_fs.
+ [FS_MNTENT]: Ignore type "auto" (from amd) as well as "ignore"
+ (from automounter), if not all_fs.
+ * df.c (main): Pass the new arg.
+
+ * fsinfo.h: Add function decls.
+
+ * chown.c, chgrp.c, chmod.c: Remove -L option. Didn't handle
+ changing symlinks correctly and wasn't very useful.
+
+Sat Mar 14 17:38:38 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * dirname.c (dirname): Don't use strdup.
+
+Fri Mar 13 14:56:15 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * rm.c (remove_file, remove_dir, clear_directory): If -f was
+ given, don't complain about ENOENT when removing.
+
+Mon Mar 9 00:09:48 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * install.c (main): Allow making multiple dirs with -d.
+ (usage): Document it.
+ * makepath.c (make_path): Clear umask while working and
+ restore it when done. chmod dirs that should have
+ set[ug]id or sticky bits set, if we're chowning them.
+ Make chown failure nonfatal. Do chmod after chown, not before.
+
+ * du.c (count_entry): Set exit_status on nonfatal error.
+ (main): Use it.
+
+Sun Mar 8 22:07:50 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * du.c (du_files): New function, from code in main.
+ Use xgetcwd instead of getcwd or getwd.
+ * system.h: Don't declare getcwd or getwd.
+
+ * xgetcwd.c: New file.
+
+ * ls.c (main): Exit with `exit_status' instead of 0.
+ (print_dir, gobble_file, get_link_name): Set exit_status on error.
+
+ * ls.c (print_long_format): Allow a slop factor for deciding
+ what is in the future.
+
+ * All programs: Change usage messages and documentation for
+ long options to use -- instead of +.
+
+ * df.c (main, usage): Add -v option for SysV compat.
+
+Tue Feb 4 12:45:09 1992 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * fileblocks.c [!NINDIR]: Try to fake indirect block info for
+ systems that don't define it.
+
+Thu Jan 16 01:04:16 1992 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * df.c (print_header): Capitalize some header words for
+ POSIX.2a draft 8.
+
+Sat Jan 4 01:19:25 1992 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * posixtm.y: Capitalize token name.
+
+Tue Dec 24 01:05:44 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * system.h, makepath.c, idcache.c, eaccess.c, backupfile.c,
+ install.c, dd.c, chown.c, chgrp.c: Change POSIX ifdefs to
+ HAVE_UNISTD_H.
+
+Wed Dec 18 16:42:00 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * system.h: To get major, minor and makedev, don't check for
+ _POSIX_SOURCE and USG; use MAJOR_IN_MKDEV and MAJOR_IN_SYSMACROS.
+
+Mon Dec 16 18:16:42 1991 David J. MacKenzie (djm at wombat.gnu.ai.mit.edu)
+
+ * dd.c (skip): Fix typos in arg name.
+ (output_char): Fix off by one error in check.
+
+Sun Dec 8 19:55:06 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * system.h: Only define major et al. if not already defined.
+
+Fri Dec 6 18:26:53 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * dd.c (main) [POSIX]: Use sigaction instead of signal, which
+ POSIX doesn't have.
+
+ * df.c, du.c, ls.c: POSIX_ME_HARDER -> POSIXLY_CORRECT.
+
+Wed Dec 4 14:30:16 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * dd.c: Cleanups, mostly from Stuart Kemp:
+ (output_char): New macro, from code in copy.
+ (write_output): New function, used by output_char, from code
+ in copy.
+ (skip): New function, from code in copy.
+ (copy): Use output_char and skip.
+ Simplify test for quitting before main loop.
+ Zero buffer using bzero for speed.
+
+Sun Nov 17 19:39:04 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * fsinfo.c (get_fs_usage) [FS_MNTENT]: Take blocksize into account.
+ (read_filesystem_list) [FS_MNTENT]: Ignore filesystems of type
+ "ignore" (automounter dummy entries).
+
+ * install.c (change_attributes): Do chmod even if chown fails.
+
+Thu Oct 24 23:50:46 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * chown.c (change_file_owner), chgrp.c (change_file_group):
+ don't skip symlinks, since the chown system call works on them.
+
+Fri 18 Oct 1991 23:29:24 Jim Meyering (meyering at wombat)
+
+ * configure: fixed test to detect sequent's strange interpretation
+ of utime(file, NULL).
+
+Fri Oct 18 00:30:42 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * eaccess.c: GID_T -> GETGROUPS_T, for clarity.
+
+Sat Oct 12 12:25:55 1991 David J. MacKenzie (djm at churchy.gnu.ai.mit.edu)
+
+ * configure: Define uid_t and gid_t as int if they're not
+ defined in sys/types.h. That's probably right for old Unixes
+ and avoids trying to find the C preprocessor.
+
+ * df.c: Don't declare sync, to avoid conflict with Minix (and
+ maybe others) unistd.h.
+ (show_point): Cast -1 to dev_t before comparing, in case dev_t
+ is unsigned. From Rainer Orth.
+
+ * chown.c [!POSIX]: Declare getgrgid.
+
+Fri Sep 13 14:55:41 1991 David J. MacKenzie (djm at churchy.gnu.ai.mit.edu)
+
+ * eaccess.c [POSIX]: Always use sysconf to get NGROUPS_MAX.
+
+Thu Sep 5 23:40:39 1991 David J. MacKenzie (djm at apple-gunkies)
+
+ * system.h: Instead of defining getwd in terms of getcwd with
+ PATH_MAX as an arg (which might be -1 on POSIX), define getcwd
+ in terms of getwd.
+ * du.c (main): Call getcwd with path_max as an arg.
+
+ * install.c (change_attributes): Do chown before chmod, so
+ chown doesn't remove set[ug]id bits.
+
+Wed Aug 28 20:53:50 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * Version 3.1.
+
+Mon Aug 26 15:44:16 1991 David J. MacKenzie (djm at pogo.gnu.ai.mit.edu)
+
+ * du.c (main): If pathconf fails, use 1024 for PATH_MAX. This
+ happens if "/" is NFS-mounted.
+
+Sun Aug 25 00:56:11 1991 David J. MacKenzie (djm at apple-gunkies)
+
+ * df.c, fsinfo.c, fsinfo.h: New program.
+ * configure: Check for various ways of getting info on mounted
+ filesystems.
+
+Thu Aug 22 10:53:23 1991 David J. MacKenzie (djm at apple-gunkies)
+
+ * src/Makefile.in: Workaround #10006 for C compilers that are
+ too dumb to allow -c and -o together. Copy the source files.
+ * system.h: Moved from src to lib to avoid having to add yet
+ more -I options to CFLAGS.
+
+ * du.c, ls.c: If POSIX_ME_HARDER is set in environment, use
+ 512-byte blocks by default.
+
+Wed Aug 21 13:03:14 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * Version 3.0.
+
+ * du.c, ls.c: Make 1K blocks the default size, and -k a no-op.
+ Down with dumb standards!
+
+ * system.h, backupfile.c, savedir.c [VOID_CLOSEDIR]: Fake a
+ return value for closedir, which returns void on some systems,
+ like Sequents.
+ * configure: Check sys/dir.h for 'void closedir'.
+
+Tue Aug 20 22:22:47 1991 Jim Meyering (meyering at nutrimat)
+
+ * mvdir.c (main): Clean up loop to stat component
+ directories -- as in makepath and pathchk.
+
+Tue Aug 20 22:10:47 1991 Jim Meyering (meyering at nutrimat)
+
+ * dirname.c (dirname): Allocate exact amount of space
+ needed for result.
+
+Tue Aug 20 02:13:40 1991 David J. MacKenzie (djm at apple-gunkies)
+
+ * savedir.c (savedir): Try to open directory before allocating
+ buffer. From Jim Meyering.
+
+Mon Aug 19 01:14:13 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * Many files: indent '#pragma alloca' so non-ANSI compilers
+ don't choke on it.
+
+ * backupfile.c (max_backup_version): Check closedir return
+ value (though it might not do any good).
+
+Tue Aug 6 20:50:56 1991 David J. MacKenzie (djm at wheat-chex)
+
+ * configure, Makefile.in's: Support +srcdir option, using VPATH.
+ Don't check for bison, just try it and if it fails use yacc.
+ Create config.status. Fix up clean targets.
+
+ * posixtm.y (posixtm): New function.
+
+ Most of the following is from Paul Eggert:
+ * savedir.c (savedir), ls.c (print_dir), rm.c
+ (clear_directory): Check closedir return for errors.
+ * dd.c (main): Check for stdin or stdout being closed.
+ * dd.c (quit), install.c (copy_file): Check for close errors.
+ * mv.c (copy): Was missing a close.
+
+Sat Aug 3 02:05:51 1991 David J. MacKenzie (djm at apple-gunkies)
+
+ * ln.c: Declare link() unconditionally (SCO UNIX needs it).
+
+Tue Jul 30 00:23:19 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * configure: NEED_TZSET has become FTIME_MISSING.
+
+ * configure: Define uid_t and gid_t if sys/types.h doesn't.
+
+Sat Jul 27 00:55:16 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * configure: Only compile fileblocks.c if st_blocks is missing.
+
+ * cp.c (copy): Make directories with initial mode of source
+ permissions minus umask, plus 0700. For POSIX and John Gilmore.
+
+ * system.h: Include errno.h and, if STDC_HEADERS, stdlib.h.
+ * All programs: Remove includes of those files.
+
+ * ftruncate.c: New file.
+ * configure: Use it if needed.
+
+Wed Jul 24 02:09:45 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * ls.c (get_name_link), cp.c (copy) [_AIX]: Allocate extra
+ space for the buffer, since st_size is wrong.
+
+ * system.h: Don't declare alloca for AIX.
+ * makepath.c, posixtm.y, cp.c, du.c, ln.c, ls.c, mv.c:
+ Declare alloca first (AIX needs it).
+
+ * cp.c, dd.c, touch.c: Use SEEK_ instead of L_.
+ * system.h: Define SEEK_ if not defined.
+
+Tue Jul 23 15:02:20 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * eaccess.c: GID_T is int if ultrix as well as if sun.
+
+Mon Jul 22 11:39:31 1991 David J. MacKenzie (djm at bleen)
+
+ * install.c: Use uid_t and gid_t.
+
+ * eaccess.c: Support POSIX method of getting multiple groups.
+
+Sat Jul 20 14:24:40 1991 David J. MacKenzie (djm at bleen)
+
+ * Move cat cmp cut expand head paste split tac tail unexpand
+ to textutils.
+
+ * system.h [MKFIFO_MISSING]: Define mkfifo macro.
+ * cp.c, mkfifo.c: Don't define it.
+
+ * mknod.c, gmknod.1: New files.
+
+Fri Jul 19 13:43:01 1991 David J. MacKenzie (djm at apple-gunkies)
+
+ * version.c: New file.
+ * All C programs: Link with it, to get version number in the
+ binary where at least `strings -' and GNU grep can find it.
+
+Mon Jul 15 13:46:53 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * configure: Also look in sys/signal.h for signal decl.
+
+Sun Jul 14 22:43:57 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * Rename touchtm.y back to posixtm.y, as the date command will
+ use it too.
+
+Mon Jul 8 22:56:36 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * Replace lib/Makefile with lib/Makefile.in.
+ * configure: For some library functions that might be missing,
+ conditionally add the .o files to lib/Makefile instead of
+ defining func_MISSING.
+ * lib/mkdir.c: Renamed from lib/mkrmdir.c.
+
+Sat Jul 6 02:19:09 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * xstrdup.c [STDC_HEADERS]: Include string.h.
+
+ * stripslash.h: Include string header file.
+
+ * configure: Add to DEFS if Minix.
+
+ * system.h [_POSIX_SOURCE]: Make ST_BLKSIZE 1024 instead of
+ 512, for better performance.
+
+ * system.h, configure: If sys/mkdev.h exists, use it instead
+ of sys/sysmacros.h.
+
+ * configure: echo messages to stdout, not stderr.
+ Use test programs to see if alloca needs -lPW and if chars are
+ unsigned.
+
+Tue Jul 2 03:16:32 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * chown.c, chgrp.c [!POSIX]: Declare pwd.h and grp.h functions.
+
+Sat Jun 29 16:46:12 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * cp.h: Don't declare `open', to avoid conflict with varargs
+ prototypes.
+
+ * chown.c, chgrp.c: Include sys/types.h before, not after,
+ pwd.h and grp.h, to get uid_t and gid_t if necessary.
+
+Fri Jun 28 01:12:45 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * ls.c: Use time_t instead of long, where appropriate.
+
+Thu Jun 27 16:31:45 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * touchtm.y: Renamed from posixtime.y for SysV systems with Bison.
+
+ * configure: No longer need to pass bison the -y option.
+ Now lib/Makefile should allow a parallel make with bison.
+
+ * cp.c (copy_reg), cat.c (main),
+ touch.c (touch, utime_now), mv.c (copy): Check close return
+ value for delayed error report due to NFS.
+
+Thu Jun 20 01:33:06 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * configure: Include $DEFS when compiling test programs.
+
+ * configure: Use test programs instead of grep to check for
+ USG, POSIX, and ANSI C headers, in case symbols are defined in
+ header files included by the standard ones. Check for BSD
+ memory functions (bcopy et al.) as well as string functions.
+ Add notice to top of generated Makefile saying that it's
+ automatically generated.
+
+Thu Jun 13 00:50:18 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * Version 2.1.
+
+ * configure: If rename is missing, define MVDIR.
+ Use , instead of / as sed substitution separator so variables'
+ values can contain slashes.
+
+ * du.c (main): Use alloca to allocate `wd' instead of making
+ it an auto array, since PATH_MAX might be a call to pathconf.
+
+Wed Jun 12 19:56:22 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * cp-aux.c (usage), install.c (usage), ln.c (usage), mv.c
+ (usage): Combine the option lists for the multiple usage forms.
+
+Tue Jun 11 00:12:15 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * idcache.c: pwd.h and grp.h might need sys/types.h.
+
+ * configure: Create Makefile from Makefile.in instead of
+ makefile from makefile.skel, to more closely follow the new
+ GNU coding standards.
+
+ * ls.c (file_interesting): Use POSIX.2 fnmatch instead of glob_match.
+
+ * configure: If $RANDOM is implemented (ksh, bash or zsh), use
+ the `type' builtin to determine if gcc, bison, ranlib are
+ available. ksh writes "fubar: command not found" to stderr,
+ foiling the test -n "`command 2>&1`" method.
+ Remove makefile on signal.
+
+ * system.h: Include sys/param.h if not _POSIX_SOURCE instead
+ of if not POSIX, to get DEV_BSIZE.
+
+ * makepath.c, posixtime.y, system.h: Add _AIX case to alloca decl.
+
+Sun Jun 9 01:26:27 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * Version 2.0.
+
+ * basename.c, dirname.c: Use str[r]chr and string.h if
+ STDC_HEADERS as well as if USG.
+
+ * touch.c (utime_now): Created from code in touch ().
+
+Sat Jun 8 11:02:32 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * backupfile.c: Use POSIX instead of _POSIX_SOURCE to
+ determine whether to check whether readdir returned a valid
+ entry.
+
+Fri Jun 7 21:44:51 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * fileblocks.c (st_blocks), system.h (ST_NBLOCKS): Always
+ return number of 512 byte blocks, not DEV_BSIZE blocks.
+ (convert_blocks): Always expect 512-byte blocks.
+
+Thu Jun 6 12:54:26 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * system.h [POSIX]: If PATH_MAX not defined, use pathconf.
+ Remove NAME_MAX stuff; not used.
+
+ * system.h: Make #include <strings.h> depend on not (USG or
+ STDC_HEADERS) instead of not (USG or POSIX).
+
+ * configure: New shell script to aid compilation.
+
+Mon Jun 3 16:42:41 1991 David J. MacKenzie (djm at wheat-chex)
+
+ * cp.h: Remove some decls of functions returning int that
+ conflict with prototypes on HPUX.
+
+ * cp.c (make_path, re_protect): New functions from Jim
+ Meyering. Changes to other functions as well, to add +path,
+ +link, +symbolic-link options.
+
+Sun Jun 2 15:45:24 1991 David J. MacKenzie (djm at wheat-chex)
+
+ * most files: use GPL version 2.
+
+Sat Jun 1 20:17:35 1991 David J. MacKenzie (djm at wheat-chex)
+
+ * rm.c, backupfile.c: If _POSIX_SOURCE, don't refer to d_ino.
+
+Sun May 19 18:42:09 1991 David J. MacKenzie (djm at churchy.gnu.ai.mit.edu)
+
+ * touch.c: Renamed getdate to get_date to avoid SVR4 conflict.
+
+Thu May 16 23:12:01 1991 David J. MacKenzie (djm at albert.gnu.ai.mit.edu)
+
+ * cp.c, mv.c, ln.c: Use alloca and strcpy directly instead of
+ in a macro for generating backup filename. The latter
+ sometimes coredumps for some reason.
+
+Sat Apr 20 00:03:09 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * dd.c: Add conv=notrunc and truncate output file by default,
+ for POSIX.
+
+ * rm.c (rm): Refuse to remove path/. and path/.., as well as `.'
+ and `..', for POSIX.
+
+ * chown.c: Allow `:' as well as `.' to separate group from
+ user, for POSIX.2 draft 11.
+
+ * Many programs: Don't bother to get the long-option index
+ value from getopt_long, since we ignore it.
+
+ * Many programs: Separate long-option option names from their
+ args with `=' instead of ` ' in usage messages.
+
+ * touch.c (touch): Don't refuse to touch non-regular files.
+
+Wed Apr 10 12:19:30 1991 David J. MacKenzie (djm at churchy.gnu.ai.mit.edu)
+
+ * cp.c, cp-aux.c: Add -a +archive option, an easier to
+ remember synonym for -dpR.
+
+Fri Mar 15 16:16:54 1991 David J. MacKenzie (djm at geech.ai.mit.edu)
+
+ * mv.c (copy): Try to preserve file ownership in
+ cross-filesystem copies.
+
+ * backupfile.c, rm.c: Go back to using d_ino instead of
+ d_fileno. POSIX.1 specifies neither, and d_ino is more
+ common, perhaps ubiquitous.
+
+ * chown.c (describe_change): Don't print the group name if it
+ didn't change (thus is a null pointer).
+ (main): Initialize group name to null.
+
+Mon Feb 25 11:44:14 1991 David J. MacKenzie (djm at geech.ai.mit.edu)
+
+ * dd.c (copy): Only seek if not seeking to start of file, so
+ "dd >> foo" works with Minix shell that doesn't open foo in
+ append mode.
+
+Thu Feb 21 11:59:39 1991 David J. MacKenzie (djm at geech.ai.mit.edu)
+
+ * ln.c (do_link), mv.c (do_move), cp.c (copy): Store backup
+ filename using alloca so we don't have to free it every place
+ we return. From Jim Meyering.
+
+Thu Feb 14 00:41:43 1991 David J. MacKenzie (djm at geech.ai.mit.edu)
+
+ * cp.c (copy_reg): Only make holes when copying a regular file
+ onto a regular file.
+
+Fri Jan 18 06:31:59 1991 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * ls.c: Move defn. of S_IEXEC to after header files are included.
+ * cp.h: Always declare stat and lstat.
+
+Thu Jan 10 02:16:55 1991 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cp.h: Only declare some system calls if not POSIX.
+
+ * eaccess.c, idcache.c, dd.c, install.c, ln.c, system.h:
+ Change _POSIX_SOURCE to POSIX.
+
+ * fileblocks.c, system.h: Change STBLOCKS_MISSING to
+ ST_BLOCKS_MISSING (was already that way in cp.c).
+
+Fri Dec 28 18:40:34 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * chmod.c, chown.c, chgrp.c, du.c: Rename -d option to -L for
+ similarity to ls and cpio.
+
+Thu Dec 27 00:06:45 1990 David J. MacKenzie (djm at egypt)
+
+ * rm.c (clear_directory): Keep looking for files to remove
+ until we don't find any, so that any .nfs* files created by
+ removing other files are also removed, eventually.
+
+ * install.c (main): Strip trailing slashes on all args.
+
+ * mv.c (copy): Open target file with mode 0600, not 0777.
+ [FCHMOD_MISSING]: Perform chmod after closing files, not
+ before, for MS-DOS.
+
+ * cp.c (do_copy): Don't append `..' to target dir name.
+
+ * du.c (main, count_entry, usage): Add -D +dereference-args
+ and -d +dereference options.
+
+Wed Dec 26 03:39:18 1990 David J. MacKenzie (djm at egypt)
+
+ * dirname.c, xstrdup.c: Get decls from standard files, if available.
+
+Thu Dec 20 23:10:22 1990 David J. MacKenzie (djm at egypt)
+
+ * makepath.c: New file, adapted from code in mkdir.c,
+ install.c, and cpio util.c by Jim Meyering.
+ * mkdir.c, install.c: Use make_path.
+
+Sun Dec 16 00:56:54 1990 David J. MacKenzie (djm at egypt)
+
+ * chown.c, chgrp.c: New files.
+
+Sat Dec 15 20:42:32 1990 David J. MacKenzie (djm at egypt)
+
+ * cp.h: Declare POSIX functions always -- _POSIX_SOURCE
+ doesn't imply STDC declarations.
+
+ * system.h: Define S_ISTYPE macros not defined by sys/stat.h.
+
+ * Many files: Use S_ISTYPE macros.
+
+ * backupfile.c, rm.c: Use name d_fileno for member of struct
+ dirent instead of d_ino, for POSIX.
+
+Wed Dec 12 23:38:22 1990 David J. MacKenzie (djm at egypt)
+
+ * ls.c: Declare time() as time_t instead of long, to prevent
+ conflict with standard header files.
+
+ * cp.c (copy_reg): Instead of using NO_SPARSE_FILES, use
+ st_blocks to determine whether the original file contains any
+ sparse blocks, and only create them if so. On systems without
+ st_blocks, to be safe, never create sparse blocks.
+
+Thu Nov 8 12:16:27 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * idcache.c: If _POSIX_SOURCE not defined, declare getpw and
+ getgr functions (not an optimal solution, but I hate to add
+ yet another configuration macro).
+
+ * Makefile: Define AR and RANLIB and pass to child makes.
+ lib/Makefile: Use them.
+
+Tue Nov 6 23:18:06 1990 David J. MacKenzie (djm at mole.ai.mit.edu)
+
+ * idcache.c: New file from code in ls.c.
+
+Fri Nov 2 14:34:40 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * Move files into src and lib directories, split out library
+ functions into separate files in lib, and rewrite Makefiles.
+
+Mon Oct 29 01:20:46 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * mv.c (do_move), rm.c (remove_file, remove_dir): If stdin is
+ a tty and file is unwritable, prompt before overwriting.
+
+ * cp.c (copy_reg): Only make sparse files if
+ NO_SPARSE_FILES is undefined, to accommodate dumb kernels.
+
+ * du.c (count_entry): Remove misinformed HPUX kludge that
+ doesn't really fix the problem.
+
+ * rm.c (rm): Check for textual equality with '.' and '..', not
+ dev/inode equality.
+
+Sat Oct 27 23:38:55 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * rm.c (check_stack): If not interactive, don't prompt when
+ corruption is found, just quit.
+ (remove_file, remove_dir): Delete leading spaces in verbose
+ output.
+
+ * cp.c (copy), rm.c (remove_dir): If we think the dest. file
+ is unwritable, warn the user in the interactive prompt instead
+ of automatically skipping the file. Because of race
+ conditions and other protection mechanisms we might not know
+ about, and POSIX.
+
+Mon Oct 8 18:51:25 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * du.c (main, usage, count_entry): Add +separate-dirs -S option.
+
+ * dd.c (main): Don't trap SIGINT if it was being ignored.
+
+Tue Sep 25 16:40:43 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * install.c (copy_file, install_file_in_file): Change
+ attributes after stripping, to guard against strip programs
+ that clear setuid bits, etc.
+
+Fri Sep 21 22:31:43 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * cp.c (copy_reg): Put back ftruncate way of making holes
+ because the other way can't make a hole at the end of a file.
+
+Tue Sep 18 03:47:45 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * install.c (change_attributes): Don't ignore EPERM for chown,
+ since the default uid is now the current uid.
+
+Sun Sep 9 16:54:19 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * Version 1.4.
+
+ * cp.h: Declare free returning void, not int, so it
+ doesn't bomb on Xenix.
+
+Fri Sep 7 04:35:35 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * system.h, backupfile.c, savedir.c [DIRENT]: if direct is
+ defined (as on Ultrix 4.0), undefine it before redefining it.
+
+Tue Sep 4 03:10:24 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * dd.c (apply_translations, translate_charset): Code moved
+ from parse_conversion.
+ (apply_translations): Convert from EBCDIC to ASCII before
+ converting case.
+
+ * mvdir.c (fullpath): Return a value.
+
+ * dd.c (copy): Increment count of truncated records once
+ per record, not once per character that overflows.
+
+Mon Sep 3 22:23:57 1990 David J. MacKenzie (djm at coke)
+
+ * dd.c (swab_array): Function removed.
+ (copy): Rewrite conv=swab to work when odd number of bytes
+ are read.
+ (scanargs): Die if invalid numeric value is given.
+ (parse_integer): Return -1 if invalid arg.
+ (bit_count): Faster version from Jim Meyering.
+
+ * cp.c, mkfifo.c [MKFIFO_MISSING]: Define mkfifo.
+
+Thu Aug 30 00:17:02 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * mvdir.c (main): Make sure `from' is not a parent of any part
+ of `to', not just the explicitly given part.
+ (fullpath): New function.
+
+Wed Aug 29 19:50:05 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * mvdir.c: Renamed from mv_dir.c, for consistency with mkdir and rmdir.
+ * dirlib.c: Caller changed.
+
+Tue Aug 28 18:05:24 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * touch.c (main): Don't interpret first non-option arg as a
+ time if `--' is given (POSIX-required kludge).
+
+ * touch.c: Add long-named options.
+
+ * Many files: Include <getopt.h> instead of "getopt.h" since
+ getopt.h will be in the GNU /usr/include.
+
+ * install.c: Declare some functions.
+
+ * touch.c, getdate.y, posixtime.y, mktime.c: New files, from bin-src.
+
+ * posixtime.y: Move year from before time to after it (but
+ before the seconds), for 1003.2 draft 10.
+
+Mon Aug 27 03:25:36 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * touch.c (main): If no time is given and first arg is a valid
+ timespec, use it as one.
+
+Sat Aug 25 01:36:16 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * posixtime.y: Enclose YYABORT in braces in case some yacc's
+ need it.
+
+ * touch.c: Remove -i option. Change some error messages.
+ (readname): Function removed.
+
+Thu Aug 23 12:56:33 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * cp.c (copy): Only restore dir mode if it was changed.
+
+Wed Aug 22 01:45:54 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * cp.c (copy): Don't only backup files when -f is given.
+
+ * ls.c: Add -X +sort=extension option. Rename
+ +kilobyte-file-size to +kilobytes.
+
+ * du.c: Rename -f option to -x, for POSIX. Rename
+ +kilobyte-file-size to +kilobytes. Add -b, +bytes option for
+ POSIX.
+
+ * cp-aux.c (usage): Change -o to -x.
+ (stpcpy): Renamed from str_cpy. Change callers in cp.c.
+
+ * cp.c: New variable, `flag_copy_as_regular'.
+ (main): For -R, unset `flag_copy_as_regular'.
+ Rename -o to -x for consistency with du.
+ (copy): Only unlink destination files when -f is given.
+ Only prompt when -i given and copying as a regular file.
+ Move check for previous link after other checks, reducing
+ duplicate code.
+ Create directories with mode 0700 initially, for POSIX.
+
+Mon Aug 20 03:29:08 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * dd.c (copy): Swap input bytes instead of output bytes.
+ (swab_array): New function.
+
+ * dd.c (copy): If sync and noerror, zero the buffer before the
+ read instead of after so that any data read before an error
+ occurred are preserved.
+ On read error, print stats and seek past the bad block if noerror.
+ noerror doesn't affect write errors, for POSIX.
+ (scanargs): Use two buffers if no buffer sizes given.
+ Do not block or unblock if cbs not given.
+ (print_stats): New function.
+ (quit): Call it.
+
+Mon Aug 13 23:30:03 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * cp.c (copy): If dest. exists and is unwritable, skip the file.
+
+ * rm.c, mv.c, cp.c, ln.c (main): Respect the last -f or -i given,
+ for POSIX.
+
+ * rm.c (remove_file): Only prompt if -i is given.
+ (main, usage): Remove -o +override-mode option, obsolete if
+ POSIX accepts our objection about prompting.
+
+ * mv.c (do_move): Only prompt if -i is given.
+
+ * ln.c (do_link): If dest. file exists and -i and -f not
+ given, skip the file.
+
+Tue Aug 7 12:51:18 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * dd.c (main): If seek= given, don't truncate output file.
+ (copy): Use `read' to skip output blocks if not regular file.
+ Sync with NUL instead of SPC.
+
+Mon Aug 6 14:43:30 1990 David J. MacKenzie (djm at pogo.ai.mit.edu)
+
+ * rm.c: Rename `ignore_errors' to `ignore_missing_files', and
+ have it only suppress messages about nonexisting files.
+ (main): Get dev and ino of `.' and `..'.
+ (rm): If file is the same as `.' or `..', return with error.
+ (remove_file): Remove the file rather than skipping it if
+ unwritable, no -i, and stdin not tty.
+ (remove_dir): Return an error if directory is nonwritable,
+ rather than nonreadable or nonsearchable, for POSIX.2 draft 10.
+
+ * chmod.c (main): Use fixed error checking to make sure that
+ options aren't mixed together in the same args as mode specifiers.
+
+Sun Aug 5 11:51:12 1990 David J. MacKenzie (djm at pogo.ai.mit.edu)
+
+ * chmod.c (main): Use umask for '-' op.
+
+Sat Aug 4 10:11:30 1990 David J. MacKenzie (djm at pogo.ai.mit.edu)
+
+ * mkfifo.c: Remove -p +path option, no longer specified by POSIX.
+
+Fri Aug 3 13:38:28 1990 David J. MacKenzie (djm at pogo.ai.mit.edu)
+
+ * mkdir.c, mkfifo.c, create.c (main): Don't tell mode_compile to
+ respect the umask for certain operations, since the umask is 0 anyway.
+
+ * install.c (get_ids): Use getuid and getgid to get defaults,
+ instead of -1.
+
+Fri Jul 27 14:32:40 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * backupfile.c (dirname): Always replace frontmost slash with a null.
+
+Thu Jul 26 00:20:35 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * cp.h: Declare umask as unsigned short.
+
+ * eaccess.c: Make uid and gid unsigned short, and group array unsigned.
+
+Wed Jul 25 18:38:57 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * rm.c (remove_file, remove_dir): Print verbose message right
+ before actually trying to remove the file, after the prompting.
+
+ * ls.c (getuser, getgroup): Make uid and gid unsigned short, not int.
+
+Tue Jul 24 03:39:42 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cp.c (copy), ln.c (do_link), mv.c (do_move): For +verbose,
+ print the file names just before actually attempting the
+ copy/link/move, to produce a list of the files that they
+ actually try to copy/link/move, omitting skipped files.
+ Remove leading spaces from +verbose output.
+
+Mon Jul 23 16:57:44 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cp.c (copy): Make +update operate silently, like +one-file-system.
+
+ * ln.c: Add -F as synonym for -d, for SunOS compatibility.
+
+Sun Jul 15 23:23:28 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cp.c (copy): Go back to using xstat on dest.
+
+Wed Jul 11 12:10:33 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cp.c (copy): Make directories with desired mode plus u+wx so
+ if the copy is interrupted, the dir is closer to the desired mode.
+ Don't backup directories.
+
+Sun Jul 8 00:39:31 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * rm.c (main, usage): Add new option -d, +directory.
+ (rm): If -d given, use remove_file instead of remove_dir for
+ directories.
+ (remove_file): If directory, print "remove directory `foo'?"
+ for interactive instead of "remove `foo'?".
+
+ * ln.c (main): If -s given, print warning message if symlinks
+ are not available.
+ * mkfifo.c (main): If fifo's are not available, print message
+ and exit.
+
+Fri Jul 6 02:02:49 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * install.c (main): Use the current user and group ID for the
+ default owner and group.
+
+ * mv.c (main): New option -u, +update.
+ (do_move): Don't move nondirectories if -u and there is an existing
+ destination that has the same or newer mtime.
+ (usage): Document -u, +update.
+
+ * cp.c (main): New option -u, +update.
+ (copy): Don't copy nondirectories if -u and there is an existing
+ destination that has the same or newer mtime.
+ * cp-aux.c (usage): Document -u ,+update.
+
+Thu Jul 5 10:04:12 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * ln.c (do_link): Don't check whether OLD exists before trying
+ to make link.
+
+Tue Jul 3 01:51:55 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * ls.c: Allow "+time=atime" and "+time=ctime" for C hackers.
+
+ * chmod.c (main): Don't check whether multiple mode arguments
+ are given, because optind has a different value depending on
+ whether or not the option is the last character in the
+ ARGV-element.
+
+Sat Jun 30 12:32:51 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * cp.c (copy): Use lstat on dest. file, not *xstat.
+
+Mon Jun 25 18:07:20 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * ls.c (print_long_format): Truncate user and group names to 8
+ chars to preserve column alignment.
+ (length_of_file_name_and_frills): Don't assume type indicator
+ will be printed for unknown file types that some os's have.
+
+ * install.c: Declare getgrnam for systems where grp.h doesn't.
+
+Sat Jun 23 00:06:35 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * Version 1.3.
+
+ * du.c (count_entry) [HPUX_NFS_BUG]: If the size of the file
+ according to the number of blocks reported is twice or more than
+ the size of the file according to the number of bytes
+ reported, halve the number of blocks.
+
+Fri Jun 22 00:38:20 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cp.c (copy_dir): Initialize 'ret' to 0.
+
+ * cp.c (main), ln.c (main), mv.c (main), rm.c (main):
+ Make -i override -f and -o, to be conservative about
+ removing peoples' files.
+
+ * mkdir.c (make_path), mkfifo.c (make_path): Don't try to stat
+ "" or "/".
+
+ * rm.c, rmdir.c, mkdir.c, mkfifo.c: Move code to remove
+ slashes at the end of an arg from main to
+ strip_trailing_slashes.
+
+ * install.c (strip): Print error message if the `strip'
+ program can't be run.
+
+ * system.h (convert_blocks): Macro moved from du.c and ls.c.
+ Take a second parameter indicating whether to convert to
+ kilobytes or 512 byte blocks.
+ * ls.c, du.c: Pass second parameter to convert_blocks.
+
+Thu Jun 21 01:19:28 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * ls.c (print_long_format): Use mode_string instead of filemodestring.
+
+ * ls.c (print_long_format): Compare times as longs, not ints.
+ (longdiff): Macro to compare two longs efficiently if sizeof
+ int == sizeof long and less efficiently but correctly if they
+ are different sizes.
+ (compare_ctime, etc.): Use longdiff.
+
+ * ls.c (decode_switches): Make -k not imply -s, to allow the
+ summary directory size printed by -l to be in 1k blocks
+ without having the size of each file printed as well.
+ (convert_blocks): Provide for systems with a blocksize that is
+ other than 512 or 1024 bytes.
+
+ * du.c (main): Exit with status 0 normally.
+ (convert_blocks): Provide for systems with a blocksize that is
+ other than 512 or 1024 bytes.
+
+Wed Jun 20 01:46:09 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * ln.c (do_link): Take out code to give an error if source and
+ dest are the same file. The dubious usefulness of the special
+ case to prevent 'ln x x' from removing 'x' (ln -i can be used
+ instead) is not worth preventing 'ln x y' from failing the
+ second time in a row, and appears to contradict POSIX anyway.
+
+Mon Jun 18 02:48:17 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * ls.c (print_file_name_and_frills):
+ (length_of_file_name_and_frills, print_long_format):
+ Allow 6 digits for i-number, not 5.
+
+Sun Jun 17 00:09:23 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * install.c (install_dir): Don't check whether "" or the root
+ directory exists (the former fails on some systems).
+
+ * system.h: Make inclusion of sys/file.h conditional on USG
+ and _POSIX_SOURCE, not DIRENT.
+
+ * chmod.c (change_dir_mode): Use xrealloc instead of free and
+ xmalloc in case malloc already left extra room.
+ (xrealloc): New function.
+
+ * rm.c (clear_directory): Prevent buffer overruns.
+ More efficient string handling. Don't skip rest of directory
+ if continuing after finding circular inode.
+ (xrealloc): New function.
+
+Sat Jun 16 01:45:42 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * argmatch.c (invalid_arg): Change order in which the items
+ are printed.
+
+ * ls.c: Add +tabsize (-T) option.
+
+Fri Jun 15 23:40:55 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * dd.c (scanargs): For ibs and obs, set C_HARDWAY.
+ (copy): Use different buffers only if C_HARDWAY, not if
+ blocksizes are the same, to ensure constant output block sizes.
+
+Wed Jun 13 23:56:20 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * savedir.c: New file from code in chmod.c, modified to
+ prevent buffer overruns.
+ * chmod.c (change_dir_mode), cp.c (copy_dir), du.c
+ (count_entry): Use savedir.
+
+Thu Jun 7 03:52:02 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * system.h (ST_BLKSIZE) [!STBLOCKS_MISSING]: If st_blksize is
+ 0 (as on pipe reads on some systems), use BSIZE instead.
+ Define BSIZE as DEV_BSIZE if necessary.
+
+ * Makefile, system.h, fileblocks.c: Use STBLOCKS_MISSING to
+ control whether st_blksize and st_blocks are used.
+ * Makefile, system.h, backupfile.c: Use DIRENT to control
+ whether <dirent.h> is used.
+
+Thu May 31 00:55:36 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * fileblocks.c: New file.
+ * du.c (blocks_to_kb): Replace with convert_blocks macro.
+ (main): Recognize new -k option.
+ (usage): Document it.
+ * ls.c (nblocks): Replace with convert_blocks macro.
+ * system.h (ST_BLKSIZE) [USG]: Use BSIZE from sys/param.h instead of
+ having the user define BLKSIZE.
+ (ST_NBLOCKS) [USG]: Use st_blocks from fileblocks.c.
+
+Wed May 23 00:40:39 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * argmatch.c: New file, taken from ls.c.
+ * getversion.c (get_version): Use argmatch, to allow
+ abbreviations. Default backup type is existing_numbered.
+ * mv.c (main), ln.c (main), cp.c (main): Only make backups if
+ -b (+backup) is given. If envar SIMPLE_BACKUP_SUFFIX is set,
+ use it as a default instead of `~'.
+ * mv.c (usage), ln.c (usage), cp-aux.c (usage): Update messages.
+
+Tue May 22 00:56:51 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * install.c: New file (from ../bin-src).
+
+ * dd.c (copy): Don't count completely failed writes as partial
+ writes. Make buffers unsigned. If blocking or unblocking,
+ pad final partial buffer if necessary.
+
+ * getversion.c: New file.
+ * mv.c (main), cp.c (main), ln.c (main): Control backup types
+ with getenv ("VERSION_CONTROL") and +version-control or -V.
+
+ * cp.c (yesno), mv.c (yesno), ln.c (yesno): Stop reading if
+ EOF reached as well as at newline.
+
+ * backupfile.[ch]: Rename var `version_control' to `backup_type'.
+
+Sat May 19 23:38:46 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * touch.c: Change some error messages. Include "getopt.h".
+
+Sat May 19 00:16:50 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * mv.c (main), ln.c (main), cp.c (main): Revise
+ backup-creation options.
+ * mv.c (usage), ln.c (usage), cp-aux.c (usage): Revise messages.
+
+ * chmod.c (describe_change): Use mode_string instead of
+ filemodestring.
+
+ * cp.c (main): Recognize new options for making backups.
+ * cp.c (copy): Make backups if requested. Fix typo.
+ * cp-aux.c (usage): Update message.
+
+ * mv.c, cp.c: Remove code to conditionally use utimes instead
+ of utime, since the extra resolution of utimes was not being
+ used, the emulation overhead is probably insignificant,
+ and utime is a standard function.
+
+ * cp-hash.c: Fix up comments.
+
+Fri May 18 23:06:23 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * mv.c (do_move): Only make backup if dest file exists.
+ Don't continue moving file if dest can't be backed up.
+ * ln.c (do_link): Don't try to unlink dest if it was backed up.
+ Don't continue moving file if dest can't be backed up.
+
+ * system.h: Make SIGTYPE default to void if not defined.
+
+ * modechange.[ch]: Rename struct and external functions to start
+ with 'mode_'.
+ * modechange.c (oatoi): Make static.
+ (mode_compile): Take an additional arg indicating which
+ symbolic operators should be affected by the umask.
+ * modechange.h: Add defines for mode_compile arg mask.
+ If __STDC__, use prototypes.
+ * chmod.c, mkdir.c, mkfifo.c, create.c: Account for above changes.
+
+Tue May 15 16:17:34 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * dd.c (copy): Quit with nonzero status if final write fails.
+
+Mon May 14 14:34:10 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * dd.c: Make translation tables unsigned.
+ (main): Give `input_file' and `output_file' nonzero values for
+ stdin and stdout.
+ (parse_conversion): Set new global vars 'space_character' and
+ 'newline_character' to correct values when translating to EBCDIC
+ (either flavor).
+ (copy): Use 'space_character' and 'newline_character' instead
+ of hardcoded ASCII values. Ignore attempts to seek on output pipe,
+ socket, or fifo. If possible, seek instead of reading to skip
+ initial input records. Sync with `space_character' instead of
+ nulls, for POSIX.
+
+ * cp.c (copy_reg): Compare lseek values as longs, not ints.
+
+Sat May 12 01:16:42 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cp-hash (remember_created): Return error status instead of
+ fatal error.
+ * cp.c (copy): Change caller.
+ (do_copy, copy_reg): Return error status instead of fatal error.
+
+ * Move rename emulation from mv.c to dirlib.c so other
+ programs can use it.
+ * mv.c, ln.c (main): Recognize new options for making backups.
+ * mv.c (do_move), ln.c (do_link): Make backups if requested.
+ * mv.c, ln.c (usage): Update message.
+ * backupfile.c, backupfile.h: New files.
+
+ * cp.h: Ifdef out decl of umask because of SunOS 4.1 (POSIX) conflict.
+
+ * Define all `main' functions as returning void.
+
+Fri May 11 02:11:03 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * ln.c, mv.c, rm.c, rmdir.c, create.c, chmod.c: Change some
+ error messages.
+
+ * du.c, cp-aux.c (error): Function removed.
+ Change callers to use error.c version.
+ * cp.c (copy, do_copy, copy_dir): Return an error status.
+ * ls.c (error, fatal, perror_with_name): Functions removed.
+ Change callers to use error.c.
+
+Sat May 5 23:46:48 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * ln.c (do_link): Don't allow trying to link a file to itself,
+ because the source file would be removed if they are the same
+ directory entry, and also for consistency with mv and cp.
+
+Fri May 4 13:42:53 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cp.c (copy_reg): Only write a null to the end of the file if
+ the end of the file was sparse.
+
+ * ls.c (print_name_with_quoting): Make the char to print
+ unsigned to prevent sign extension problems with -b.
+
+Fri Apr 20 13:52:15 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * Version 1.2 released.
+
+Wed Apr 18 14:36:15 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * Makefile: Use chsize for ftruncate on Xenix.
+
+ * cp.c (copy): Remove broken code that attempted to
+ substitute for ftruncate on systems missing it.
+
+Mon Apr 16 13:58:01 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cp-aux.c (usage): Fix mistake in message.
+
+ * Version 1.1 released.
+
+Sat Apr 14 17:23:11 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * ls.c (main): Don't remove leading path from program_name.
+ (basename): Function removed.
+ (length_of_file_name_and_frills): Don't add 1 for type indicator
+ for block and character special files.
+
+Thu Apr 12 19:50:15 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * Makefile: Suggest using -DBLKSIZE=512 instead of 1024 for USG.
+
+ * dd.c (copy): Print copying statistics when exiting because
+ of a read or seek error.
+ (interrupt_handler): New function.
+ (main): Trap SIGINT to run interrupt_handler, for POSIX.
+
+Tue Apr 10 01:09:38 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * chmod.c (change_file_mode): Don't change the mode of
+ symbolic links.
+
+Mon Apr 9 13:30:00 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * modechange.c (compile_mode): Return an error if an octal
+ number argument is too large.
+
+Sun Apr 8 20:33:20 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * dd.c: Use `error' instead of `fatal' and `pfatal_with_name',
+ for greater control of the message format.
+ * head.c, tail.c: Use `error' instead of `fatal_perror' and
+ `nonfatal_perror'. Remove some unnecessary info from messages.
+ * chmod.c, create.c, ln.c, mkdir.c, mkfifo.c, mv.c, mv_dir.c,
+ rm.c, rmdir.c: Remove definition of `error'.
+ * error.c: New file created from code in mv.c.
+ * Makefile: Link the above programs with error.o.
+
+ * ln.c (do_link): Use eaccess_stat to determine writability.
+ * mv.c (do_move): Ditto.
+ * rm.c (remove_file): Ditto.
+ (remove_dir): Use eaccess_stat to determine readability and
+ searchability. Move initial interactive query here from
+ clear_directory.
+ * Makefile: Link ln, mv, and rm with eaccess.o.
+
+Sat Apr 7 11:47:52 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * Makefile: Link cp with eaccess.o.
+ * eaccess.c: New file adapted from code in cp.c and cp-aux.c.
+ * cp.c (copy): Use eaccess_stat to determine writability.
+ Consider a file unwritable by root if it has no permissions.
+ (main): Remove groups initialization code.
+ * cp-aux.c (member): Function deleted.
+
+ * cp.c (copy): Temporarily change the mode of directories if
+ necessary to overwrite them when running recursively.
+ Consider a directory to be non-overwritable if it lacks write
+ permission as well as if it lacks execute permission.
+
+ * rm.c, mv.c, mv_dir.c, chmod.c, create.c, ln.c: Remove some
+ irrelevant or redundant information from error messages.
+
+Fri Apr 6 15:20:45 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cp.c (copy): Only change mode of regular files and directories;
+ others are already correct.
+
+Thu Apr 5 04:31:56 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * dd.c: Remove the vars that are set by command line options
+ from a useless struct and give them more meaningful names.
+
+Mon Apr 2 02:58:34 1990 David J. MacKenzie (djm at spike.ai.mit.edu)
+
+ * cp.c (main): Use NGROUPS from sys/param.h to determine
+ whether BSD multiple groups are supported and how large to
+ make the array.
+ * Makefile: Remove references to GETGROUPS_MISSING.
+
+Sun Apr 1 18:53:57 1990 David J. MacKenzie (djm at spike.ai.mit.edu)
+
+ * cp.c (main): Always initialize group info.
+
+Sat Mar 31 22:29:57 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * mv.c [RENAME_MISSING] (rename): To rename directories, run
+ setuid root mv_dir program.
+
+Tue Mar 20 14:28:25 1990 David J. MacKenzie (djm at pogo.ai.mit.edu)
+
+ * touch.c: Remove POSIX_COMPAT ifdef since there is no reason
+ to disable the GNU extensions.
+ (main): Set new global var `program_name'.
+ (error): Replace with more versatile version.
+ Global: Change calls to fprintf and error to use the new error.
+ (main): Initialize global variables. Don't bother making
+ temporary copy of arg to -d. Don't ignore any files named on
+ the command line if -i is given.
+ (usage): Don't take an arg. Use `program_name' instead of
+ hardcoded name.
+ (touch): In utime emulation for BSD, ftruncate the file to its
+ original size so empty files stay empty after being touched.
+
+Sun Mar 18 01:02:39 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * ln.c (strip_trailing_slashes): New function.
+ (main, do_link): Call it.
+
+ * cp-aux.c (strip_trailing_slashes): New function.
+ * cp.c (do_copy): Call it.
+ * cp.h: Declare it.
+
+ * mv.c (strip_trailing_slashes): New function.
+ (main, movefile): Call it.
+
+Sat Mar 17 21:45:35 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cp-aux.c, cp.h: Rename user_confirm_overwriting to yesno and
+ don't have it print a prompt, so it can be used in several
+ places.
+
+ * cp.c (do_copy): Change an error message to resemble mv's.
+ Remove all trailing slashes from all non-option args.
+ (main): Set new global var `stdin_not_tty'.
+ (copy): Use POSIX method of handling file overwriting and
+ prompting.
+
+ * dirlib.c (mkdir): Use chmod to set the directory mode after
+ successful creation, so set[ug]id and sticky bits are set
+ correctly.
+
+Thu Mar 15 12:33:23 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * Makefile: Add commented out definitions for SCO Xenix.
+
+ * ls.c (print_type_indicator): Don't print a '*' next to
+ executable block or character special files.
+
+ * chmod.c (error): New function, replacing nonfatal_perror,
+ memory_out, and invalid_mode.
+ Global: Call error instead of the above functions.
+ (change_dir_mode): Make the new size of the path twice the
+ size of the name that was too long, rather than twice its old
+ size.
+
+ * rm.c: Move interactive query about whether to remove a
+ directory from remove_dir to clear_directory; only query for
+ directories that are not empty.
+
+Wed Mar 14 10:48:40 1990 David J. MacKenzie (djm at rice-chex)
+
+ * system.h [USG]: Define X_OK.
+
+ * rm.c (main): Set new global var `stdin_not_tty'.
+ (rm): Most of code moved to two new functions, remove_file and
+ remove_dir.
+ (remove_file): Use POSIX method of determining whether to remove
+ non-directories.
+ (remove_dir): Use POSIX method of determining whether to
+ remove directories, almost.
+ (perror_with_name): Function removed.
+ (error): Simple version replaced with more powerful version.
+ Global: Change calls to fprintf, perror_with_name, and old
+ error to calls to new error.
+
+ * ln.c (main): Set new global var `stdin_not_tty'.
+ If force, turn off interactive.
+ (do_link): By default, don't allow hard links to symbolic links to
+ directories. Use POSIX method of determining whether to
+ overwrite destination.
+ (yesno): Function renamed from confirm, and arg removed.
+ (lisdir): Function removed.
+
+ * mv.c (main): Set new global var `stdin_not_tty'.
+ (yesno): Function renamed from yes.
+ (do_move): Use POSIX method of determining whether to
+ overwrite destination.
+
+ * Makefile: Make executables depend on .o files, not .c files,
+ to allow for parallel compilation.
+
+Tue Mar 13 00:50:14 1990 David J. MacKenzie (djm at rice-chex)
+
+ * rm.c (main): Disallow removal of paths that have '..' as the
+ final element.
+ (basename): New function.
+
+ * ls.c (print_type_indicator): Mark FIFOs with '|' and sockets
+ with '='.
+ (print_long_format): Print numbers as unsigned and add extra
+ space for POSIX flag.
+
+ * dd.c: Make the record counts unsigned.
+ (quit): Print them as unsigned.
+
+ * modechange.c (compile_mode): Only get umask value when needed.
+ If users are not given or are `a', affect set?id and sticky bits.
+ If memory is exhausted while allocating a new list element,
+ free the old elements before returning.
+
+ * Makefile (CC): Add comment noting that either fixincludes or
+ -traditional needs to be used for gcc to compile ioctl calls
+ correctly.
+
+Mon Mar 12 16:25:23 1990 Jim Kingdon (kingdon at pogo.ai.mit.edu)
+
+ * touch.c [UTIME_OF_NULL_MISSING]: Call lseek() before write().
+
+ * posixtime.y [__GNUC__]: Use __builtin_alloca.
+
+Fri Mar 9 10:25:09 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * chmod.c (main): Recognize "a,+-=" as valid options.
+
+ * mv.c: Move the code to copy files across filesystems from
+ do_move to a new function, copy, which will eventually be
+ replaced with modules from cp and rm (POSIX requires mv to
+ move directories recursively across filesystems).
+ (do_move): Don't query about overriding a mode that prohibits
+ writing if interactive. Remove unneeded variable.
+ (copy): Unlink target if copy fails partway through.
+
+Thu Mar 8 10:56:16 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cp.c (copy): Don't remove a destination file of a different
+ type unless +force is given.
+
+ * ls.c (decode_switches, usage): Add -U (for "unsorted") as an
+ equivalent to +sort=none.
+
+Mon Mar 5 16:31:14 1990 Torbj|rn Granlund (tege at echnaton)
+
+ * cp.c (copy): Test for temporarily modified permission mode
+ after the other test, so that `-p' work for files whose mode
+ needed a temporary mode change.
+ * cp.c (copy): Don't waste time calling unlink if we already
+ know that the destination doesn't exists.
+ * cp.c (comment before do_copy): Correct.
+ * cp.c (comment before copy): Describe all params.
+ * cp.c (copy): Only change permission mode for regular files
+ and directories.
+ * cp.c (copy): Unlink the destination file if its type is
+ different from the source. If the destination is a
+ directory, error.
+
+Mon Mar 5 00:34:36 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * chmod.c (nonfatal_perror): Don't check for force_silent.
+ (change_file_mode, change_dir_mode): If force_silent, don't
+ print error messages.
+
+ * mv.c (main): If force, turn off interactive.
+ (do_move): Simplify check for query. Rename `stb' to
+ `to_stats' and `stbf' to `from_stats'.
+ Return error condition if original file could not be renamed or
+ unlinked.
+
+ * rm.c: Rename global `force_flag' to `ignore_errors' and change its
+ meaning so that it does not overlap with `override_mode'.
+ (main): Have -f +force set override_mode. If override_mode is
+ set, turn off interactive.
+ (rm): Simplify checks for whether to query the user, based on
+ the new relationship between override_mode and interactive.
+
+Sun Mar 4 23:39:03 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * ln.c (main): Reword an error message to be more like mv's.
+
+ * rmdir.c: Move global `errors' into main instead of having
+ error set it.
+
+ * mkdir.c: Move global `errors' into main and have make_path
+ return an error status instead of having error set it.
+
+ * chmod.c: Move global `errors' into main and have
+ change_file_mode and change_dir_mode return an error status
+ instead of setting it in nonfatal_perror.
+
+Sat Mar 3 13:59:40 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * ln.c (main): Don't strip leading dirs from argv[0].
+
+ * ln.c (confirm), mv.c (yes, do_move),
+ cp-aux.c (user_confirm_overwriting), rm.c (rm, yesno, check_stack):
+ Print query messages to stderr instead of stdout, for POSIX.
+ Include program name in messages.
+
+Sat Mar 3 11:27:27 1990 Torbj|rn Granlund (tege at echnaton)
+
+ * cp.c (copy): Don't unlink directories with flag_force
+ (`-f'). Also avoid using force when not necessary.
+ Always copy fifo's and symbolic links as themselves.
+
+ * cp.c (copy_reg): Make int scan first, char scan then, to
+ find first non-zero byte. This to avoid false hole
+ creation.
+
+Sat Mar 3 10:22:28 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * mv.c: Rename `pgm' to `program_name'. Move global `errors'
+ into main. Have do_move and movefile return an error status
+ instead having error set it. Remove global vars `args'
+ and `args_left'.
+ (main): Rename `ac' and `av' to `argc' and `argv' and use them
+ and `optind' instead of `args' and `args_left'.
+
+ * cp.c (copy): Don't ignore errors other than EPERM from chown.
+
+Fri Mar 2 16:20:57 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * rm.c (main, usage): Allow -R as a synonym for -r, for POSIX.
+
+ * cp.c (copy): If flag_preserve, preserve the owner and group
+ if possible, as well as mode.
+ (main): Allow -R as a synonym for -r option, for POSIX.
+ * cp-aux.c (usage): Mention -R.
+
+Tue Feb 27 11:49:04 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cp.c (copy): If not recursive, copy special files and
+ symlinks like regular files and omit fifos.
+
+Mon Feb 26 19:55:24 1990 Jim Kingdon (kingdon at pogo.ai.mit.edu)
+
+ * ls.c (print_long_format): If time is in the future, print the year.
+ Make the cutoff for old files 6 months not 300 days.
+
+Mon Feb 26 13:31:07 1990 Jim Kingdon (kingdon at pogo.ai.mit.edu)
+
+ * touch.c, Makefile: Use getdate.y instead of unctime.y.
+
+ * touch.c: Remove posixtime.
+ (main): Check for error from posixtime.
+ posixtime.y: New file.
+
+ * touch.c: Change a few cryptic error messages.
+ Include <errno.h> not <sys/errno.h>.
+ (just_set_amtime): New variable.
+ (touch): Add if (just_set_amtime) code.
+
+Mon Feb 26 15:03:29 1990 Torbj|rn Granlund (tege at echnaton)
+
+ * cp.c (copy): Test for recursive copy in DIR alternative in
+ the switch statement, so all file types are copied correctly
+ even in a non-recursive copy.
+ * cp.c (copy): Return after having created a symlink, since
+ chmod and utimes dereference, and would affect the symlink
+ target. Remove test for symlinks after switch.
+
+Sun Feb 25 18:31:09 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * Makefile: Compile ls after vdir so systems with a cc that
+ can't do -c -o don't have to compile ls.c twice for ls.
+
+ * dd.c (usage): Add braces around alternatives.
+
+ * ls.c (print_long_format): Always print the group, for POSIX.
+ (decode_switches): Make -g option a no-op for BSD users.
+ (usage): Remove +group option.
+
+Wed Feb 21 11:13:26 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * ln.c (error): New function.
+ (main, do_link): Call error instead of fprintf and exit.
+ (main): Recognize new -d +directory option to allow superuser to
+ make hard links to dirs, like the BSD ln -f option.
+ (do_link): Don't allow hard links to dirs (they are hard to
+ get rid of -- rmdir and unlink don't do it), unless -d was given.
+ (usage): Mention -d +directory option.
+
+ * rmdir.c (main): Remove trailing slashes from args (added by
+ shell file completion but the rmdir syscall can't handle them).
+ * mkdir.c (main): Remove trailing slashes from args, for
+ uniformity with rmdir (you can't do file completion on dirs
+ that haven't been made yet . . .).
+
+ * mv.c: Rename global var `nargs' to `args_left' to avoid
+ conflict with undocumented BSD libc function (the new name is
+ clearer, anyway).
+
+Tue Feb 20 17:09:19 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * dd.c: Use new global var `program_name' in error messages
+ instead of hardcoded "dd".
+ (main): Set program_name from argv[0].
+
+ * chmod.c, head.c, tail.c (main): Don't strip leading dirs
+ from argv[0].
+ (basename): Function removed.
+
+ * rm.c (main): Don't strip leading dirs from argv[0].
+
+Mon Feb 19 14:34:18 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * rm.c (main): Strip trailing slashes from each arg.
+
+Thu Feb 15 13:23:52 1990 David J. MacKenzie (djm at rice-chex)
+
+ * Makefile [HPUX CFLAGS]: Add -DUTIMES_MISSING.
+
+Wed Feb 14 15:01:18 1990 David J. MacKenzie (djm at rice-chex)
+
+ * Makefile (dist): Don't make a non-compressed tar file.
+
+ * mv.c (do_move): Refuse to copy non-regular files across filesystems.
+
+Tue Feb 13 15:06:18 1990 Jim Kingdon (kingdon at pogo.ai.mit.edu)
+
+ * touch.c (getname): New function.
+ (main): Use it.
+
+Mon Feb 12 11:30:45 1990 David J. MacKenzie (djm at rice-chex)
+
+ * ln.c (do_link): Check error return from unlink.
+ Include errno.h.
+
+ * du.c (main): Check error return from stat.
+ (str_copyc, str_concatc): Don't return a value, since it is
+ ignored.
+
+ * cp.c (copy): Check error return from unlink and chmod. Fix
+ typo in call to error.
+
+ * mv.c (do_move): Check error return of fchmod/chmod and utime[s].
+ (rename): Check error return of unlink.
+
+ * Makefile Definitions of preprocessor macros moved from
+ cp.c and mv.c. HAVE_FTRUNCATE changed to FTRUNCATE_MISSING.
+ * Makefile, dirlib.c: NEED_MKDIR changed to MKDIR_MISSING.
+ * mv.c, cp.c: Change USG ifdefs to UTIMES_MISSING.
+
+Sun Feb 11 17:50:29 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * chmod.c (usage): Add yet another ellipsis.
+
+Sun Feb 11 16:41:30 1990 Jim Kingdon (kingdon at pogo.ai.mit.edu)
+
+ * cp.c (copy_reg): Use HAVE_FTRUNCATE to decide whether to
+ use ftruncate().
+ (main): Use GETGROUPS_MISSING to decide whether to use getgroups().
+ [hpux || !USG]: Define HAVE_FTRUNCATE.
+ [USG && !hpux]: Define GETGROUPS_MISSING.
+ mv.c (rename): Put in #ifdef RENAME_MISSING not #ifdef USG.
+ (do_move): Use FCHMOD_MISSING to decide whether to use fchmod().
+ [USG && !hpux]: Define FCHMOD_MISSING and RENAME_MISSING.
+
+Fri Feb 9 10:25:03 1990 David J. MacKenzie (djm at rice-chex)
+
+ * mv.c (movefile): Remove trailing slashes from FROM (some
+ filename completion systems add them for dirs, and they cause
+ the rename syscall to fail).
+
+Thu Feb 8 22:50:12 1990 Torbj|rn Granlund (tege at sics.se)
+
+ * cp.c (copy_reg): Change error handling after lseek, since
+ this is a fatal error. Also change error message to
+ something more generally understood.
+ * Handle files that end in a zero block on USG systems.
+
+ * cp-aux.c (error): Use FATAL to recog fatal errs.
+
+Thu Feb 8 21:25:40 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * ln.c: Remove incorrect comment.
+
+ * cp.c, cp-aux.c (usage): Change +dereference option to
+ +no-dereference, since dereferencing is done by default and
+ the option turns it off.
+
+Mon Feb 5 17:29:20 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * Version 1.0 released.
+
+
+ -----
+
+ Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
+ Foundation, Inc.
+
+ Copying and distribution of this file, with or without
+ modification, are permitted provided the copyright notice
+ and this notice are preserved.
diff --git a/old/fileutils/NEWS b/old/fileutils/NEWS
new file mode 100644
index 0000000..5adff8f
--- /dev/null
+++ b/old/fileutils/NEWS
@@ -0,0 +1,760 @@
+[4.1.11]
+* `rm symlink-to-unwritable' doesn't prompt [introduced in 4.1.10]
+[4.1.10]
+* rm once again gives a reasonable diagnostic when failing to remove a file
+ owned by someone else in a sticky directory [introduced in 4.1.9]
+* df now rounds all quantities up, as per POSIX.
+* New ls time style: long-iso, which generates YYYY-MM-DD HH:MM.
+* Any time style can be preceded by "posix-"; this causes "ls" to
+ use traditional timestamp format when in the POSIX locale.
+* The default time style is now posix-long-iso instead of posix-iso.
+ Set TIME_STYLE="posix-iso" to revert to the behavior of 4.1.1 thru 4.1.9.
+* `rm dangling-symlink' doesn't prompt [introduced in 4.1.9]
+* stat: remove support for --secure/-s option and related %S and %C format specs
+* stat: rename --link/-l to --dereference/-L.
+ The old options will continue to work for a while.
+[4.1.9]
+* rm can now remove very deep hierarchies, in spite of any limit on stack size
+* new programs: link, unlink, and stat
+* New ls option: --author (for the Hurd).
+* `touch -c no-such-file' no longer fails, per POSIX
+[4.1.8]
+* mv no longer mistakenly creates links to preexisting destination files
+ that aren't moved
+[4.1.7]
+* rm: close a hole that would allow a running rm process to be subverted
+[4.1.6]
+* New cp option: --copy-contents.
+* cp -r is now equivalent to cp -R. Use cp -R -L --copy-contents to get the
+ traditional (and rarely desirable) cp -r behavior.
+* ls now accepts --time-style=+FORMAT, where +FORMAT works like date's format
+* The obsolete usage `touch [-acm] MMDDhhmm[YY] FILE...' is no longer
+ supported on systems conforming to POSIX 1003.1-2001. Use touch -t instead.
+* cp and inter-partition mv no longer give a misleading diagnostic in some
+ unusual cases
+[4.1.5]
+* cp -r no longer preserves symlinks
+* The block size notation is now compatible with SI and with IEC 60027-2.
+ For example, --block-size=1MB now means --block-size=1000000,
+ whereas --block-size=1MiB now means --block-size=1048576.
+ A missing `B' (e.g. `1M') has the same meaning as before.
+ A trailing `B' now means decimal, not binary; this is a silent change.
+ The nonstandard `D' suffix (e.g. `1MD') is now obsolescent.
+* -H or --si now outputs the trailing 'B', for consistency with the above.
+* Programs now output trailing 'K' (not 'k') to mean 1024, as per IEC 60027-2.
+* New df, du short option -B is short for --block-size.
+* You can omit an integer `1' before a block size suffix,
+ e.g. `df -BG' is equivalent to `df -B 1G' and to `df --block-size=1G'.
+* The following options are now obsolescent, as their names are
+ incompatible with IEC 60027-2:
+ df, du: -m or --megabytes (use -BM or --block-size=1M)
+ df, du, ls: --kilobytes (use --block-size=1K)
+[4.1.4]
+* df --local no longer lists smbfs file systems whose name starts with //
+* dd now detects the Linux/tape/lseek bug at run time and warns about it.
+[4.1.3]
+* ls -R once again outputs a blank line between per-directory groups of files.
+ This was broken by the cycle-detection change in 4.1.1.
+* dd once again uses `lseek' on character devices like /dev/mem and /dev/kmem.
+ On systems with the linux kernel (at least up to 2.4.16), dd must still
+ resort to emulating `skip=N' behavior using reads on tape devices, because
+ lseek has no effect, yet appears to succeed. This may be a kernel bug.
+[4.1.2]
+* cp no longer fails when two or more source files are the same;
+ now it just gives a warning and doesn't copy the file the second time.
+ E.g., cp a a d/ produces this:
+ cp: warning: source file `a' specified more than once
+* chmod would set the wrong bit when given symbolic mode strings like
+ these: g=o, o=g, o=u. E.g., `chmod a=,o=w,ug=o f' would give a mode
+ of --w-r---w- rather than --w--w--w-.
+[4.1.1]
+* mv (likewise for cp), now fails rather than silently clobbering one of
+ the source files in the following example:
+ rm -rf a b c; mkdir a b c; touch a/f b/f; mv a/f b/f c
+* ls -R detects directory cycles, per POSIX. It warns and doesn't infloop.
+* cp's -P option now means the same as --no-dereference, per POSIX.
+ Use --parents to get the old meaning.
+* When copying with the -H and -L options, cp can preserve logical
+ links between source files with --preserve=links
+* cp accepts new options:
+ --preserve[={mode,ownership,timestamps,links,all}]
+ --no-preserve={mode,ownership,timestamps,links,all}
+* cp's -p and --preserve options remain unchanged and are equivalent
+ to `--preserve=mode,ownership,timestamps'
+* mv and cp accept a new option: --reply={yes,no,query}; provides a consistent
+ mechanism to control whether one is prompted about certain existing
+ destination files. Note that cp's and mv's -f options don't have the
+ same meaning: cp's -f option no longer merely turns off `-i'.
+* remove portability limitations (e.g., PATH_MAX on the Hurd, fixes for
+ 64-bit systems)
+* mv now prompts before overwriting an existing, unwritable destination file
+ when stdin is a tty, unless --force (-f) is specified, as per POSIX.
+* mv: fix the bug whereby `mv -uf source dest' would delete source,
+ even though it's older than dest.
+* chown's --from=CURRENT_OWNER:CURRENT_GROUP option now works
+* cp now ensures that the set-user-ID and set-group-ID bits are cleared for
+ the destination file when when copying and not preserving permissions.
+* `ln -f --backup k k' gives a clearer diagnostic
+* ls no longer truncates user names or group names that are longer
+ than 8 characters.
+* ls's new --dereference-command-line option causes it to dereference
+ symbolic links on the command-line only. It is the default unless
+ one of the -d, -F, or -l options are given.
+* ls -H now means the same as ls --dereference-command-line, as per POSIX.
+* ls -g now acts like ls -l, except it does not display owner, as per POSIX.
+* ls -n now implies -l, as per POSIX.
+* ls can now display dates and times in one of four time styles:
+
+ - The `full-iso' time style gives full ISO-style time stamps like
+ `2001-05-14 23:45:56.477817180 -0700'.
+ - The 'iso' time style gives ISO-style time stamps like '2001-05-14 '
+ and '05-14 23:45'.
+ - The 'locale' time style gives locale-dependent time stamps like
+ 'touko 14 2001' and 'touko 14 23:45' (in a Finnish locale).
+ - The 'posix-iso' time style gives traditional POSIX-locale
+ time stamps like 'May 14 2001' and 'May 14 23:45' unless the user
+ specifies a non-POSIX locale, in which case it uses ISO-style dates.
+ This is the default.
+
+ You can specify a time style with an option like --time-style='iso'
+ or with an environment variable like TIME_STYLE='iso'. GNU Emacs 21
+ and later can parse ISO dates, but older Emacs versions cannot, so
+ if you are using an older version of Emacs outside the default POSIX
+ locale, you may need to set TIME_STYLE="locale".
+
+* --full-time is now an alias for "-l --time-style=full-iso".
+
+Changes in release 4.1:
+[4.0.45]
+* dd conv=sync,block now pads only with spaces
+* ls's -1 option no longer cancels the effect of a preceding -l
+* regenerate configure using a patched version of autoconf-2.49e to work
+ around a bug in its test for a working memcmp function
+* ls: fix off-by-one error introduced with the previous change
+[4.0.44]
+* ls: When given two or more arguments but the only one that exists is a
+ directory, don't treat it as if it were the only argument. Before,
+ `mkdir d; ls no-dir d 2>/dev/null' would act like `ls d' and produce
+ no output. Now, it prints `d:'.
+* touch -d 'last friday' would use a time stamp that was one hour off
+ (e.g., 23:00 on *thursday* rather than 00:00 of the preceding friday)
+ when run such that the current time and the target date/time fall on
+ opposite sides of a daylight savings time transition.
+ This problem arises only with relative date strings like `last monday'.
+ It is not a problem with strings that include absolute dates.
+[4.0.43]
+* regenerate configure-related files using autoconf-2.49d
+[4.0.42]
+* Using ls's short-named `-H' option evokes the warning that the
+ meaning of `-H' will soon change. Use `--si' instead.
+[4.0.41]
+* fix bug in rm introduced in 4.0.38: `chmod 0 f; rm f' would no longer prompt
+ before removal.
+[4.0.40]
+* portability fixes, mainly for UnixWare 7.1.1
+[4.0.39]
+* cp and mv accept --strip-trailing-slashes, not just --strip-trailing-slash
+[4.0.38]
+* ls --full-time now implies -l; before, without -l it was a no-op
+[4.0.37]
+* portability fixes for SunOS4.1.1, Fujitsu (f300-fujitsu-uxpv4.1_ES),
+ and Unicos (alphaev5-cray-unicosmk2.0.5.X)
+[4.0.36]
+* `mv dir/ new-name' no longer fails on SunOS4.1.1U
+* attempting to use mv to move a symlink onto itself no longer removes
+ the symlink
+* `cp -R directory file' no longer removes `file'. now it fails and gives
+ a diagnostic
+* The manual now warns that ls's --full-time format string is planned
+ to change in a future release.
+* ls -l's time stamp format now depends on LC_TIME, not LC_MESSAGES,
+ as POSIX requires.
+* ls -l now reports the year for files even slightly in the future, as
+ POSIX requires. This helps warn users about clock skew problems.
+* `cp -d file symlink-to-some-other-file' no longer fails
+* performance improvements for ls
+[4.0.35]
+* ln --backup=simple --suffix=SUFFIX once again uses SUFFIX
+* install: Likewise.
+[4.0.34]
+* fix a bug (introduced in 4.0z) that made `chown 123:456 file' act like
+ `chown 123:123 file'. Other uses with a numeric group ID would cause
+ chown to fail when it shouldn't have.
+* the chown and chgrp programs preserve set-uid and set-gid bits, even on
+ systems for which the chown function call resets those bits.
+* `ls -L dangling-symlink' now fails (per POSIX) rather than printing the
+ link name
+* dd no longer honors the just-added `B' suffix on skip= and seek= arguments.
+* `mkdir no-such-dir/' no longer fails on NetBSD systems
+[4.0.33]
+* dd now accepts skip=nB and seek=nB, to advance past some number of bytes, n,
+ that need not be a multiple of the block size.
+* dd (without conv=notrunc) now complains only when ftruncate fails on a
+ regular file, a directory, or a shared memory object -- not when it fails
+ to truncate other types of files, like /dev/fd0.
+* chmod --changes (-c) once again issues diagnostics only for the files
+ with changed permissions
+* mkdir now gives one diagnostic (rather than two) for certain failures
+* mkdir portability fix for NetBSD
+[4.0.32]
+* touch now interprets a lone numeric argument of 8 or 10 digits as a file name,
+ rather than as a date/time in the obsolescent `MMDDhhmm[YY]' format.
+* mkdir no longer sets the permissions of the final directory component
+ if it already exists (this bug, too, was introduced recently)
+* ls's --full-time format string is now locale dependent
+[4.0.31]
+* mkdir: fix a bug introduced in 4.0.30 whereby `mkdir existing-dir' would
+ succeed. Now it fails, as it should (and used to).
+[4.0.30]
+* mkdir: fix a bug introduced in 4.0.28 whereby parent directories created
+ via `mkdir -p' would have permissions that did not account for the umask
+[4.0.29]
+* ls.c wouldn't compile on some systems: fix it
+* `cp -R --parents dir1/ dir2' failed on NetBSD, due to a portability problem
+[4.0.28]
+* ls is much more efficient on systems (e.g., linux-2.4.*) that store file
+ type information in directory entries.
+* shred now automatically determines the size of each block device argument
+* ls's date/time format strings are now locale dependent
+* mkdir, mknod, mkfifo, and chmod work better in conjunction with ACLs
+* `cp --parents dir1/ dir2' no longer gets a failed assertion
+* shred now determines the size of block devices like /dev/fd0
+* `shred --exact file1 file2' now erases `file1', too
+[4.0.27]
+* install once again unlinks an existing destination before trying to open it
+* mv no longer gets a failed assertion when moving a directory (specified with
+ a trailing slash) from one partition to another, and giving it a different
+ name at the destination.
+* `cp --link -f src existing-dest' no longer fails (bug introduced in 4.0z)
+* cp's new --remove-destination option now works with -R
+[4.0z]
+* `cp -p' once again preserves `special' permission bits (this bug was
+ introduced in 4.0y)
+* mv's --force (-f) option now controls solely whether mv prompts (per POSIX)
+* `cp -f' now first attempts to open an existing destination file, and only
+ if that fails does it resort to unlinking the file and retrying the open.
+ Before, it would unlink the file before trying to open it.
+* cp accepts a new option, --remove-destination, that provides the old behavior
+* cp's -f option no longer cancels the effect of --interactive (-i) (per POSIX)
+* when ls sorts directory entries, it now honors the current locale settings
+* dd's `skip=BLOCKS' operator once again works on systems with a buggy lseek
+ function (Linux, at least on SCSI tape devices)
+* fix a typo in install-sh
+[4.0y]
+* cp now accepts the POSIX-mandated -H and -L options.
+* cp -p and mv now try to preserve uid even if you're not root, as per POSIX.2.
+ This affects behavior only on hosts that let you give files away via chmod.
+* du would fail when given `.' or `..' followed by other command line arguments
+* Using cp's short-named `-P' option evokes the warning that the
+ meaning of `-P' will soon change. Use `--parents' instead.
+* chgrp, chmod, and chown: when used with the --verbose option, might give an
+ invalid diagnostic (due to clobbered errno) when failing.
+[4.0x]
+* Fix cp so that `cp -r DIR1/ DIR2' works properly once again.
+* New ls option --quoting-style=clocale acts like --quoting-style=locale,
+ except that it quotes "like this" by default instead of `like this'.
+[4.0w]
+* When `cp -pR' fails to copy a file, it now preserves permissions, owner,
+ and group of the containing directory.
+[4.0v]
+* df, du, and ls now round disk usage up and disk free space down
+* df, du, ls: --block-size=N now works for values of N that are e.g.,
+ not a multiple of the file's block size
+[4.0u]
+* give proper diagnostic for mv usage error
+* fix compile problem with lib/strnlen.c
+[4.0t]
+* `cp -d -u' no longer fails with certain existing destination symlinks
+* rmdir and mkdir accept -v as synonym for --verbose
+[4.0s]
+* rm no longer segfaults on certain very deep hierarchies
+* IMPORTANT SECURITY FIX: a running `rm -r' may no longer be subverted to
+ remove unintended directories
+* cp can now remove unwritable files in interactive mode; contrary to how mv
+ works, cp's --interactive (-i) option does *not* cancel the effect of a
+ preceding --force (-f) option.
+* all programs fail when printing --help or --version output to a full device
+* install no longer performs chmod if chown fails (see ChangeLog for example)
+[4.0r]
+* `du dir/subdir1 dir/subdir2' no longer fails
+* chown accepts new option: --from=CURRENT_OWNER:CURRENT_GROUP
+* cp accepts new option: --strip-trailing-slashes
+* install --directory (-d) may now be used to set special bits
+ e.g., `install -m a=rwx,o+t -d DIR' now honors the `o+t' part
+* cp, mv, ln, install: document that while the --backup option takes an
+ optional argument, the -b option accepts none
+* `ls -e' fails with a more useful diagnostic
+* df produces better output for loop file system mount points
+[4.0q]
+* install -D bug is fixed
+* chown now works properly when the specified login name contains a period
+ This is at the expense of always looking up the entire USER.GROUP string
+ as a login name first, and only then (upon failure) interpreting the `.'
+ as a separator and looking up `USER'. To avoid the extra getpwnam call,
+ always use the POSIX-mandated `:' character as the separator.
+* `du some-other-dir' no longer fails if it can't open the current directory
+* `mv DIR EXISTING-FILE' no longer removes EXISTING-FILE. Now it gets an error
+ as POSIX says it must.
+* touch no longer hangs on fifos
+[4.0p]
+* various tools: quote multibyte characters correctly in diagnostics
+* mv: portability fix for alpha
+* dd: portability fix
+* unified lib/: now that directory and most of the configuration framework
+ is common between fileutils, textutils, and sh-utils
+[4.0o]
+* Include lib/nanosleep.h.
+[4.0n]
+* cp, install, ln, and mv: when making backup files in verbose mode, these
+ commands now print the backup file name on the same line as the rest of the
+ information, e.g., `a -> b (backup: b.~13~)' rather than on a separate line
+ as all but ln used to do. ln didn't output the backup file name at all.
+[4.0m]
+* mv accepts new option: --strip-trailing-slashes (soon, many other
+ programs will, too)
+* df no longer hangs when there is an inaccessible mount point unrelated to PATH
+* rmdir --verbose no longer prints extra, bogus diagnosic upon failure
+* fix df bug that made it print bogus values in the `Use%' column.
+* touch -d once again parses dates with `hh:mm ZONE' time zone info.
+[4.0l]
+* ls -l honors a trailing slash on a symlink argument, per POSIX.
+* shred no longer appears to infloop when asked to remove files in
+ unwritable directories
+* `ls -ul' and `ls -uc' sort by name once again, as they should
+[4.0k]
+* mv may now be used to move a file onto a symlink to itself when that
+ symlink is on a separate partition. With fileutils-4.0j, it would
+ fail with a diagnostic saying they were the same file.
+* touch would fail with the misleading diagnostic `no such file' when asked
+ to create a file in an unwritable directory. Now it says something like
+ `permission denied' or `read-only file system'.
+[4.0j]
+* mkdir may now be used to set special bits e.g., `mkdir -m o+t dir' works
+* touch can now change the time(s) of a file you own even if you don't have
+ read or write access to it
+* rm no longer dumps core after warning about directory cycles
+* mv now refuses to move a file onto a symlink to itself when that symlink
+ is on a separate partition. Before, it would remove the file and leave
+ only the symlink.
+* `install -d -g foo 1/2' now sets the `group' of the final component as well
+ as that of the leading one.
+* df, du, and ls no longer divide by zero when an invalid block size is
+ specified through an environment variable
+* under certain conditions, chgrp would fail to affect files referenced
+ through symlinks. Now it does.
+* ln now makes hard links to symlinks on systems that support it.
+* touch: no longer infloop on dangling symlinks
+* cp, install, ln, mv: deprecate the --version-control option. Use --backup's
+ new optional argument instead. The old option still works, but now evokes a
+ warning.
+* cp, install, ln, mv: the --backup option now accepts an optional argument
+* cp, install, ln, mv: accept new option: --target-directory=DIR
+* chgrp: accept new option, --dereference. --no-dereference is now the default.
+* New ls option --quoting-style=locale acts like --quoting-style=c, except
+ with locale-specific quoting symbols (` and ' by default) instead of ".
+* `df DIR' is less likely to hang due to bad NFS mounts
+* As per POSIX.2, `df -P' now uses ceiling rather than rounding, and its
+ header now says `1024-blocks ... Capacity' instead of `1k-blocks ... Use%'.
+[4.0i]
+* `cp -f FILE FILE' and `mv -f FILE FILE' no longer remove FILE
+* touch works once again (DST-wise) when certain `--date DATE-TIME'
+ values are specified.
+* shred's -u option (short form of --remove) is now accepted
+[4.0h]
+* cp --one-file-system (-x) no longer crosses filesystem boundaries.
+* touch can once again operate on directories
+[4.0g]
+* New large-file support for AIX and HP-UX, and for cross-compiles.
+* shred's default options are now suitable for devices, not files, since
+ shred is more reliable on devices. shred now does not remove by default;
+ the old -p or --preserve option was inverted and renamed to -u or --remove.
+* shred -u now attempts to truncate devices before removing them.
+* shred -v no longer outputs carriage-returns; shred -vv has no extra effect;
+ shred -v now outputs to stderr.
+* shred now tries to find the size of a non-regular file by seeking to its end.
+* dd now opens the output file for *read* access only if `seek=' is used.
+[4.0f]
+* `ls --color' no longer segfaults
+* dd works once again
+[4.0e]
+* shred --devices option renamed to -D so that -d, -i and -r can be
+ compatible with rm.
+* shred -s/--size=N option added to specify the size of the object to be
+ shredded.
+* `shred -' now shreds stdout rather than stdin. This is incompatible with -v.
+* shred now does not need to read from its output file, so opens it O_WRONLY
+* `ls -l' uses `+' to designate each file that has a custom ACL
+* eliminate race condition that could make touch truncate a nonempty file
+* No longer use *_unlocked I/O macros on systems (like solaris5.5.1) where
+ they're not declared, so selected executables (e.g., rm) that are linked
+ with shared libraries will once again run on solaris5.6 systems.
+[4.0d (aka 4.1-b3)]
+* ls recognizes solaris 2 `doors'
+* new program: shred
+* ln: Allow creation of a hard link to a dangling symlink
+* cp, mv, install: --verbose now prints a message for each backup-related
+ renaming
+* portability fixes for copy.c's code to detect move-directory-into-self
+* upgrade to automake-1.3b
+* upgrade to autoconf-2.13, and...
+* remove some of the kludges in m4/*.m4 that permitted
+[4.1-b2]
+* concurrent `mkdir -p' processes no longer fail when creating the
+ same hierarchy
+* argmatch.c has been fixed so that the unambiguous usage `ls --color=n'
+ no longer evokes an error.
+* now, specifying an improper argument for an option that accepts enumerated
+ values evokes diagnostics like this:
+ $ src/touch --time=x file
+ src/touch: invalid argument `x' for `--time'
+ Valid arguments are:
+ - `atime', `access', `use'
+ - `mtime', `modify'
+ Try `src/touch --help' for more information.
+[4.1-b1]
+* ls --quoting-style=c prints correct octal escapes for certain nonprinting
+ characters in file names.
+* fix `ls -R .' formatting bug that broke mktexlsr
+* moving a directory into itself is properly diagnosed in more cases
+* moving a directory containing hard-linked files now works
+
+Changes in release 4.0:
+[4.0-b7]
+* rm -rf '' no longer gets a failed assertion on the Hurd
+[4.0-b6]
+* rm simply fails as it should (rather than segfaulting) for
+ `mkdir -m 0100 x; rm -rf x'
+[4.0-b5]
+* still *more* mktime.c portability tweaks
+[4.0-b4]
+* mktime.c portability tweak for headers with GNU libc 5.4.44.
+[4.0-b3]
+* mktime.c works around problems with Digital Unix 4.0A and 4.0D.
+* mktime.c handles dates in the spring-forward gap the same way other
+ implementations do
+* install accepts long option --suffix=SUFFIX
+[4.0-b2]
+* man/Makefile.maint framework tweaks
+* add test for `mv -i' bug
+[4.0-pre1]
+* fix serious bug whereby `touch a b; echo n|mv -i a b' would remove b.
+[3.16z]
+* portability tweaks
+* avoid `root `cp -a' from Netapp snapshot' corruption
+[3.16y]
+* `install -D' now works
+* distribute maintainer Makefiles in man/
+[3.16x]
+* man pages are now automatically generated from a combination of --help
+ output and the contents of new (though mostly empty), man/*.x files.
+[3.16w]
+* touch now interprets `-t TIME-DATE' as POSIX specifies
+* `ls EMPTY-DIR EMPTY-DIR' once again outputs the directory names
+[3.16v]
+* portability fixes
+* `ls -R EMPTY-DIR' now outputs the name of the directory
+[3.16u]
+* mv now fails (as it should) upon attempt to move a directory into itself
+* `cp -a --one-file-system' now copies any mount point directories it
+ encounters on the selected file system.
+[3.16t]
+* cp (with --update) and ls compare time stamps with subsecond resolution when
+ available (e.g., on systems with recent Linux kernels and on Solaris 2.6).
+* install once again does the -m-specified chmod *after* running strip
+ (this fixes another bug introduced in 3.16o)
+[3.16s]
+* df accept a new option --local (-l)
+* touch works around a system-specific bug so it now affects existing,
+ zero-length files on certain systems
+* chown now works even on certain SVR3 systems where it used to fail
+[3.16r]
+* include gettext's m4 macros
+* minor cp bug fixed
+* non-portable cp tests removed
+* --without-included-regex now means don't compile regex.c
+* rx support removed
+[3.16q]
+* `df', `du', and `ls' now accept a new option --block-size=SIZE,
+ where SIZE can be a positive integer block size, followed by an
+ optional SI prefix (e.g. `k' for kilo, `M' for Mega), followed by an
+ optional `B' (for ``byte'', indicating powers of 1024, which is the
+ default) or `D' (for ``decimal byte'', indicating powers of 1000).
+ SIZE can also be `human-readable' (for -h or --human-readable
+ behavior) or `si' (for -H or --si behavior).
+* These suffixes can also be used by `dd'; e.g. `dd bs=1MB' is equivalent
+ to `dd bs=1048576'.
+* The default block size for the `df' command is now obtained from the
+ DF_BLOCK_SIZE environment variable or, if that is not set, from BLOCK_SIZE.
+ Similarly for `du' and `ls'.
+* The output columns of `df' have been adjusted slightly to accommodate
+ larger filesystems.
+* fix gettext-related link failures seen when configuring certain ways
+[3.16p]
+* fix install bug introduced in 3.16o
+* build/test changes only
+[3.16o]
+* chown accepts new option, --dereference. --no-dereference is now the default.
+* install now shares core copying code with mv and cp
+* mv (between distinct filesystems) now uses more of the core copying code
+* fixed a bug or two in mv
+* df once again displays negative numbers when that's what's returned
+ by get_fs_usage
+[3.16n]
+* `mv dir dir' once again does *not* remove dir/
+* ls accepts new options:
+ --indicator-style=none (no indicators, the default)
+ --indicator-style=classify (all indicators)
+ (equivalent to -F or --classify)
+ --indicator-style=file-type (file type indicators)
+ (equivalent to -p or --file-type)
+
+ --quoting-style=literal (do not quote output)
+ --quoting-style=shell (minimally quote output for the shell)
+ --quoting-style=shell-always (always quote output with '' for the shell)
+ --quoting-style=c (quote output as for a C-language string)
+ (equivalent to -Q or --quote-name)
+ --quoting-style=escape (like c but omit enclosing "")
+ (equivalent to -b or --escape)
+
+ --show-control-chars is the opposite of --hide-control-chars
+ This option can be useful if output is to a terminal,
+ to override the default beahvior of hiding control characters.
+
+* The QUOTING_STYLE environment variable can now be used to specify the
+ default value for ls's --quoting-style option. If not specified,
+ the default quoting style is 'literal', but this default may change to
+ 'shell' in a future version of this package.
+* ls's quoting style now affects operands in diagnostics, too.
+* ls's --dired option now outputs the quoting style
+ using the format of the new --quoting-style option.
+* ls's -e or --quote-shell option (introduced in 3.16j) has been removed;
+ use --quoting-style=shell to get its functionality.
+[3.16m]
+* mv can move (and doesn't read) special files
+* remove maintainer mode
+[3.16l]
+* mv can finally move non-regular files between partitions
+[3.16k]
+* install accepts new option, -D
+[3.16j]
+* du accepts new options, --exclude=PAT and --exclude-from=FILE (-X FILE)
+* ls now quotes file names for the shell by default, if they contain
+ characters that need quoting. Use -N to get the old default behavior.
+ The new behavior is also enabled by the new option -e or --quote-shell.
+* ln --backup is now consistent with cp and mv in that --force is no longer
+ required when the destination is an existing non-directory.
+* install accepts new option, --verbose (-v)
+* mkdir -p is a lot faster when creating very deep directories on some systems
+* rm -i no longer exits with status indicating failure solely because the
+ user declines to remove a file
+* rm -r is a lot faster on some systems when removing deep hierarchies
+* chgrp, chmod, and chown no longer give contradictory output when --verbose
+ is used and an operation fails
+* ls's multicolumn option now uses variable width columns to conserve
+ vertical space
+* install accepts new option, --preserve-timestamps
+* du --megabytes --total now shows total in megabytes
+* ls accepts new option, -h or --human-readable
+* df, du, and ls now accept new option, -H or --si, for powers of 1000 not 1024
+* df, du, and ls now consistently round to nearest, with ties going to even
+* df, du, and ls now use `k' instead of `K' for `kilo',
+ and support larger abbreviations T(era), P(eta), E(xa), Z(etta), Y(otta)
+* touch -d DATE now works on Unicos
+* du accepts new option --max-depth=N
+* rmdir accepts new options: --ignore-fail-on-non-empty and --verbose
+* on most hosts df, du, and ls now overflow at 2**64 bytes, not 2**31 bytes
+* all programs now work on large files on LFS systems like Solaris 2.6 and
+ Linux with the pre-2.1 development version of GNU libc.
+* df now works with OpenBSD 2.1 beta
+* cp -d FILE SYMLINK-TO-FILE doesn't erase FILE. Now it gives an error.
+
+Changes in release 3.16:
+* du --megabytes (-m) works
+* ls -l works even on systems with non-POSIX strftime in their C library
+
+Changes in release 3.15:
+* touch --date=DATE bug (due to broken getdate.y) has been fixed
+* ls -l no longer misformats the date when run in a locale for which the
+ locale's abbreviated week-day name (strftime's %a format) is shorter or
+ longer than the `normal' three bytes (with LANG=de it's a two-byte string).
+* Using --program-prefix no longer applies the prefix twice
+* ls --color properly restores color attributes upon completion when the
+ normal (`no') color attribute is not the default color.
+* with ls -s --color, the `total' and size of the first file are printed
+* ls --color stats symlinks and distinguishes between regular symlinks
+ and orphan ones.
+* cp --preserve preserves owner and group of symlinks on Linux when run
+ with EUID == 0
+* dircolors no longer accepts --print-data-base (alternate spelling of
+ --print-database)
+
+Changes in release 3.14:
+* ls --color highlights based on suffix rules only for regular files
+* touch --date=DATE accepts dates like those in an RCS log listing, e.g.,
+ `1992/11/01 05:44:34'.
+* install SRC DST no longer rejects non-regular, non-directory SRC
+* df accepts -F as a synonym for -t for compatibility with Solaris
+* cp -i /dev/null existing-file now prompts before overwriting the target
+* ls --color highlights orphaned symlinks text on terminals that support it
+* ls -l honors current locale with respect to abbreviated month names (and,
+ with --full-time day names) on systems with a locale-supporting strftime
+ function, e.g., ones based on recent versions of the GNU C library
+* ls -l recognizes Cray's migrated dmf files.
+* chgrp no longer aborts when given a group number larger than INT_MAX
+* chgrp now fails when run by root with an unrecognized group name
+* when possible, cp -p preserves owner/group even on symlinks in case
+ they're in a directory that has the sticky-bit set.
+* cp --recursive --parents SRC DEST works when SRC is an absolute file name.
+
+Changes in release 3.13:
+* ls properly determines window size on SunOS and Solaris systems
+* ls accepts new option --color[=WHEN] where WHEN is `always', `never',
+ or `auto'. --color=never is the default. --color is equivalent
+ to --color=always.
+* new program: dircolors
+* ls allows 0 as argument to --tabsize (-T) option. Using --tabsize=0
+ inhibits the use of TAB characters for separating columns.
+* you can create a backup of FILE with cp --force --backup FILE FILE. Before,
+ that command failed saying that ``FILE' and `FILE' are the same file'.
+* uses automake-generated Makefile templates
+* chown and chgrp accept new option --no-dereference (-h)
+* ln -f FILE FILE fails with a diagnostic rather than silently removing FILE
+* when building on systems that have getopt_long (most GNU-oriented ones),
+ the system-provided function will be used -- so executables may be a
+ little smaller
+* cp -p, and mv modify owner and/or group of symlinks on systems
+ (like Solaris) that provide the lchown system call.
+* df no longer invokes the sync system call by default. You can use the
+ --sync option to make df invoke sync before getting file system sizes.
+* internationalized diagnostic messages
+* mkdir accepts new option: --verbose
+* `cp file D/' uses the full file name `D/file' instead of `D//file'.
+* cp --backup a~ a fails instead of silently destroying the source file
+* df and du have new options --human-readable (-h) and --megabytes (-m).
+* install now honors --backup (-b), --suffix=SUFFIX (-S SUFFIX), and
+ --version-control=WORD (-V WORD) options just as cp, ln, and mv do.
+* ln --verbose output is less prone to misinterpretation
+* ls -o works like -lG; for compatibility with other versions of ls
+* cp has a new option to control creation of sparse files:
+ --sparse={auto,always,never}. --sparse=auto is the default.
+* rm -rf '' behaves properly on SunOS 4 systems
+* touch: rename long option name, --file, to --reference.
+ `touch --file' will continue to work a little longer.
+* df fails if the same file system type is both selected and excluded.
+* df works around SunOS statfs brokenness wrt filesystems larger than 2GB
+* df better handles inconsistent mtab entries
+* `ls -lDR dir dir2' works
+* `ls -c' does what it's supposed to
+* all programs include program name in --version output
+* `ls --quote-name' works
+* mv properly determines whether src and dest are the same file
+ Before, it could (though with very low probability) fail to do the move,
+ reporting that distinct source and destination are the same file.
+* du --dereference (-L) works with directory symlinks
+* du works on SunOS 4 systems even when accounting is enabled
+* many programs that convert strings to integers now use strtol or strtoul
+ and detect overflow
+
+User-visible changes in release 3.12:
+* None.
+User-visible changes in release 3.11:
+* None.
+User-visible changes in release 3.10:
+* mkdir -p now ignores arguments that are existing directories. Before,
+ (contrary to POSIX spec) it would attempt to change ownership and/or
+ protections of existing directories listed on the command line. And
+ it would fail when such a directory was owned by another user.
+* Fix bug in cp that made the commands `mkdir dir; touch foo; cp -P foo dir'
+ incorrectly change the permissions on directory, dir.
+* df accepts a new option, --no-sync, that inhibits the default invocation
+ of the sync system call.
+* ls accepts a new option, --dired, that makes emacs' dired mode more efficient
+* skeletal texinfo documentation (mainly just the `invoking' nodes)
+* ln accepts a new option: --no-dereference (-n). With this option,
+ if the destination command line argument is a symlink to a directory,
+ use that as the destination instead of the file in the directory.
+* `ln -i no-such-file existing-file' gives a diagnostic and fails.
+ Before, if you responded `yes' to the prompt it would both remove
+ `existing-file' and fail to make a link.
+* du no longer requires read access to all of the directory components
+ of the current working directory on systems with fchdir.
+* touch -d 'date' is no longer off by one hour.
+* New program: sync.
+* Fix bug in cp that made the commands `ln -s . s; cp -rd s r' incorrectly
+ create `r' as a symlink instead of as a regular file.
+* du's -S and -c options now work when used together.
+ Before, the grand total was always reported to be zero.
+
+Major changes in release 3.9:
+* --help gives a one-line description of each option and shows the
+ correspondence between short and long-named options.
+* work around systems with BROKEN_STAT_MACROS
+* work around problem where $(srcdir)/config.h was used instead of
+ ../config.h -- this happened only when building in a subdirectory
+ and when config.h remained in $(srcdir) from a previous ./configure.
+* GNU chmod treats symlinks the same way other vendor's versions do.
+ Now symlinks listed on the command line are processed (they were
+ ignored before); the permissions of the dereferenced files are
+ changed. Symlinks encountered in recursive traversals are still
+ ignored. This makes GNU chmod act more like e.g. Sun's.
+* configure uses config.h, so DEFS won't exceed preprocessor limits of
+ some compilers on the number of symbols defined via -D.
+* ls and cp can handle mount points on more systems
+* cp, mkdir, and rmdir long option --path renamed to --parents; --path
+ will still work for a while
+* cp, ln, and mv convert `cp A B/' to cp A B/A when A is not a directory.
+ This change affects only the two-argument form of the commands. It makes
+ such commands fail when the target has a trailing slash but is not a
+ directory or symlink to a directory and the source is not a directory.
+ They used to succeed, ignoring the implicitly contradictory trailing slash.
+
+Major changes in release 3.8:
+* install isn't as likely to produce spurious errors
+* avoid redundant compilations for `dir' and `vdir';
+* configure properly defines STAT_STATFS2_BSIZE on a Pyramid MIServer
+ running OSx 5.1
+
+Major changes in release 3.7:
+* none
+Major changes in release 3.6:
+* `ln -s dir_pathname .' works when the pathname has a trailing slash
+* with the --version option programs print the version and exit immediately
+* GNU ls -f works like Unix ls -f
+* mktime replacement works
+
+Major changes in release 3.5:
+* adds support for DEC Alpha under OSF/1
+* configuring with gcc uses CFLAGS='-g -O' by default
+* all programs accept --help and --version options
+* long-named options must be introduced with `--'; `+' is no longer
+ accepted since it is incompatible with the POSIX.2 standard
+* chmod accepts long-named options
+* dd conv=unblock doesn't hang
+* new df option --exclude=fstype
+* new ls option --full-time
+
+Major changes in release 3.4:
+* cp -p and mv preserve setuid and setgid bits
+* chown works on systems where sizeof(uid_t) != sizeof(int)
+ or sizeof(uid) != sizeof(gid)
+* catch errors from spurious slashes at ends of arguments
+
+Major changes in release 3.3:
+* df sped up by not calling sync for every filesystem
+* df ported to AIX (RS/6000 and PS/2), and SVR2 port fixed
+* df -i now also prints the total number of inodes per filesystem
+* ls sped up by not reading symlink contents unnecessarily
+* du doesn't die on POSIX systems when the root filesystem is NFS mounted
+* cp and mv report chown Permission denied errors when run by root
+
+========================================================================
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts. A copy of the license is included in the ``GNU Free
+Documentation License'' file as part of this distribution.
diff --git a/old/sh-utils/ChangeLog b/old/sh-utils/ChangeLog
new file mode 100644
index 0000000..f95975d
--- /dev/null
+++ b/old/sh-utils/ChangeLog
@@ -0,0 +1,4866 @@
+2006-08-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * ChangeLog: Add copyright notice.
+ * ChangeLog.0: Likewise.
+ * NEWS: Likewise.
+
+2002-08-08 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0.15.
+
+2002-08-05 Paul Eggert <eggert@twinsun.com>
+
+ Fix some minor time-related bugs with POSIX time arguments.
+ Some valid time stamps were being rejected (notably -1, and
+ time stamps before 1900 on 64-bit hosts). And some invalid
+ time stamps were being accepted, e.g. September 31.
+
+ * src/date.c (main): Adjust to posixtime signature change.
+
+2002-08-05 Jim Meyering <meyering@lucent.com>
+
+ * configure.ac: Change $am_cv_sys_posix_termios to
+ $ac_cv_sys_posix_termios. From Andreas Schwab.
+
+2002-08-04 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0.14.
+
+2002-07-30 Paul Eggert <eggert@twinsun.com>
+
+ * src/chroot.c (main): Exit with status 126 or 127 when execvp or
+ execv fails, for consistency with POSIX commands like env and nice.
+ * src/su.c (run_shell): Likewise.
+
+2002-07-29 Paul Eggert <eggert@twinsun.com>
+
+ * src/nohup.sh: Change behavior to conform to POSIX 1003.1-2001:
+ - Do not adjust scheduling priority.
+ - Redirects stderr to stdout, if stderr is not a terminal.
+ - Exit status is now 126 if command was found but not invoked,
+ 127 if nohup failed or if command was not found.
+ Fix bug: command was run if nohup.out wasn't writeable.
+ * NEWS, doc/coreutils.texi: Document the above.
+
+2002-07-28 Jim Meyering <meyering@lucent.com>
+
+ * configure.ac: Require automake-1.6b.
+
+2002-07-27 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0.13.
+
+ * src/who.c (UT_EXIT_E_TERMINATION, UT_EXIT_E_EXIT): Remove definitions.
+ Now they're defined in readutmp.h.
+ (print_deadprocs): Remove obsolete FIXME comment.
+
+2002-07-07 Paul Eggert <eggert@twinsun.com>
+
+ * src/nohup.sh: Port to POSIX 1003.1-2001 "nice", which
+ requires the option "-n 5" rather than "-5". This matters
+ with GNU "nice" if the user has set the _POSIX2_VERSION
+ environment variable.
+
+2002-07-24 Jim Meyering <meyering@lucent.com>
+
+ * src/Makefile.am (AM_INSTALLCHECK_STD_OPTIONS_EXEMPT): Exempt false.
+
+2002-07-20 Jim Meyering <meyering@lucent.com>
+
+ * Upgrade to cvs automake -- required to work with 2.53b.
+ * configure.ac: Require automake-1.6a.
+
+ * tests/Makefile.am (TESTS_ENVIRONMENT): Remove now-unused parts
+ of this definition.
+ (EXTRA_DIST): Add priv-check.
+ * tests/priv-check: New file.
+
+ * Upgrade to gettext-0.11.3.
+ * Upgrade to autoconf-2.53b.
+
+2002-07-18 Jim Meyering <meyering@lucent.com>
+
+ * src/uname.c (main): Test sysctl(...) >= 0, not == 0, since
+ on NetBSD the return value may well be positive.
+ Use one-line aggregate initializations.
+ Use tightly scoped static buffers to avoid warnings about
+ unused variables on some systems.
+
+2002-05-07 Paul Eggert <eggert@twinsun.com>
+
+ Add support for BSD-style sysctl to get the strings needed for
+ uname -p and uname -i. Unfortunately the different BSDs vary,
+ but I've surveyed FreeBSD, NetBSD, and OpenBSD.
+
+ * src/uname.c (UNAME_HARDWARE_PLATFORM, UNAME_PROCESSOR): New macros.
+ (main): Use them, along with sysctl, to support uname -i and uname -p
+ on BSD hosts.
+
+2002-07-17 Jim Meyering <meyering@lucent.com>
+
+ * src/uptime.c (print_uptime): Restore use of (equivalent, but
+ more readable) `>=' from Bruno's patch.
+
+ * configure.ac (jm_BOOT_TIME): Remove. (moved/renamed to m4/boottime.m4)
+ Use the replacement: GNULIB_BOOT_TIME.
+
+2002-07-13 Bruno Haible <bruno@clisp.org>
+
+ * src/uptime.c: Include sys/sysctl.h.
+ (print_uptime): Add support for determining the boot time on FreeBSD.
+
+2002-07-15 Jim Meyering <meyering@lucent.com>
+
+ * src/uptime.c (print_uptime): Use STREQ in place of !strcmp.
+
+ * src/uname.c (main): Remove unnecessary uses of `defined' when
+ operating on `HAVE_...' symbols. Remove unnecessary parentheses.
+
+2002-07-02 Jim Meyering <meyering@lucent.com>
+
+ * src/basename.c, src/chroot.c, src/date.c, src/dirname.c (usage):
+ Use the PACKAGE_BUGREPORT e-mail address, rather than hard-coding it.
+ * src/echo.c, src/env.c, src/expr.c, src/factor.c: Likewise.
+ * src/hostname.c, src/id.c, src/kill.c, src/logname.c: Likewise.
+ * src/nice.c, src/pathchk.c, src/pinky.c, src/printenv.c: Likewise.
+ * src/printf.c, src/pwd.c, src/seq.c, src/sleep.c, src/stty.c: Likewise.
+ * src/su.c, src/tee.c, src/test.c, src/true.c, src/tty.c: Likewise.
+ * src/uname.c, src/uptime.c, src/users.c, src/who.c: Likewise.
+ * src/whoami.c, src/yes.c: Likewise.
+
+ * src/Makefile.am (.sh): Also substitute @PACKAGE_BUGREPORT@.
+ * src/groups.sh (usage): Use @PACKAGE_BUGREPORT@, rather than
+ hard-coding a deprecated address.
+ * src/nohup.sh (usage_help): Likewise.
+
+ * src/date.c (usage): Mention that the expansions of %p and %P are
+ empty in many locales. From matthew arnison.
+
+2002-06-22 Jim Meyering <meyering@lucent.com>
+
+ * configure.ac: Invoke AC_GNU_SOURCE very early.
+
+2002-05-24 Jim Meyering <meyering@lucent.com>
+
+ * tests/nice: Move this file...
+ * tests/misc/nice: ...to here.
+ * tests/Makefile.am (TESTS): Remove nice.
+ * tests/misc/Makefile.am (TESTS): Add nice.
+ * configure.ac (AC_CONFIG_FILES): Add tests/misc/Makefile.
+
+ * src/pathchk.c (validate_path): Compare the result of the function --
+ not its (constant) address -- against zero.
+ Patch from Tim J. Robbins <tjr@FreeBSD.ORG>
+ * tests/misc/pathchk1: New test for the above.
+ * tests/misc: New directory.
+ * tests/Makefile.am (SUBDIRS): Add misc.
+ * tests/misc/Makefile.am: New file.
+
+2002-05-03 Jim Meyering <meyering@lucent.com>
+
+ * src/uptime.c (print_uptime): Use ngettext for day/days and user/users.
+ Suggestion from Karl Eichwalder.
+
+ * src/kill.c (usage): Add a little to the description of --list.
+ Uncapitalize first word and remove period at end of each one line
+ option description.
+
+ * src/who.c (usage): Tweak description of --users.
+ From Karl Eichwalder.
+
+2002-04-29 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0.12.
+
+ Avoid warnings from gcc.
+ * src/who.c (PIDSTR_DECL_AND_INIT): Cast ut_pid value to int.
+ (make_id_equals_comment): Cast sizeof expression (used as field
+ width argument) to `int'.
+
+ * configure, config.hin, Makefile.in, etc.: Regenerate using
+ autoconf-2.53a.
+
+2002-04-28 Jim Meyering <meyering@lucent.com>
+
+ * src/who.c: Don't include xalloc.h.
+ It's already included via system.h.
+
+2002-04-28 Paul Eggert <eggert@twinsun.com>
+
+ * src/kill.c: Rewrite from scratch. Support everything
+ required by POSIX 1003.1-2001; when this conflicts with Bash,
+ stick with POSIX. The conflicts are kill -l output format,
+ and lower case signal names preceded by `-' (e.g., "kill -hup"
+ is no longer supported). Remove -L or --long-list option.
+ Add -t or --table option. Rename --sigspec to --signal;
+ remove --signum and do not advertise obsolescent option -n.
+ Use str2sig and str2sig to convert between signal names and
+ numbers.
+
+ * doc/coreutils.texi (kill invocation): Document the above.
+ Document POSIX signals better.
+
+ * lib/sig2str.h, lib/sig2str.c: New files.
+ * configure.ac (AC_CHECK_DECLS): Add str2signal, strtoimax,
+ sys_siglist, _sys_siglist.
+ * lib/Makefile.am (libfetish_a_SOURCES): Add sig2str.h.
+ * m4/jm-macros.m4 (jm_MACROS): Add AC_REPLACE_FUNCS(sig2str).
+ * m4/prereq.m4 (jm_PREREQ): Add jm_PREREQ_SIG2STR.
+ (jm_PREREQ_SIG2STR): New macro.
+
+2002-04-28 Jim Meyering <meyering@lucent.com>
+
+ * src/test.c (test_syntax_error): Add `const' to paramater
+ declarations to avoid new warning from gcc.
+ (integer_expected_error): Likewise.
+
+2002-04-25 Jim Meyering <meyering@lucent.com>
+
+ * configure.ac (AM_GNU_GETTEXT): Add external arg.
+ (AC_CONFIG_FILES): Remove intl/Makefile.
+ * Makefile.am (SUBDIRS): Remove intl.
+ * src/Makefile.am (INCLUDES): Remove -I../intl.
+
+2002-04-16 Jim Meyering <meyering@lucent.com>
+
+ * src/who.c (BOOT_TIME): Define.
+ (NEW_TIME): Define to 0, not INT_MAX.
+ (UT_PID, UT_ID, UT_EXIT_E_TERMINATION, UT_EXIT_E_EXIT): Define.
+ Replace literal uses of ut_pid, ut_id, and ut_exit members with
+ uses through macros.
+ (make_id_equals_comment): New function, factored out of three others.
+ (UT_TYPE_UNDEF, UT_TYPE, IS_USER_PROCESS): Define.
+ (print_line): Use "%-8.8s" for the format: the user name is not
+ always NUL terminated.
+ (scan_entries) [need_users]: Use IS_USER_PROCESS, so that this works
+ even on systems without ut_type.
+
+2002-04-15 Jim Meyering <meyering@lucent.com>
+
+ * src/who.c: Include xalloc.h.
+ Use xmalloc everywhere, not malloc.
+
+2002-04-12 Jim Meyering <meyering@lucent.com>
+
+ * src/Makefile.am (LDADD): List ../lib/libfetish.a both before
+ and after @LIBINTL@. Thanks to Paul Eggert for the fix and to
+ Bruno Haible for diagnosing the problem.
+
+2002-02-26 Paul Eggert <eggert@twinsun.com>
+
+ * src/test.c (age_of): Return -1 and 0 rather than 0 and 1.
+ Might as well keep it simple, and like bash.
+ (binary_operator): Fix bug with -nt and -ot, when one of the
+ files did not exist. We want to be compatible with the ksh93
+ documentation, and with Bash.
+
+2002-03-17 Jim Meyering <meyering@lucent.com>
+
+ * src/seq.c (usage): Mention that --format=FORMAT must be
+ a *floating-point* format, also in description of that option.
+ Reported by Karl Eichwalder.
+ (usage): Also add the `=' signs here: --format=FORMAT,
+ --separator=STRING.
+
+2002-03-16 Jim Meyering <meyering@lucent.com>
+
+ * src/Makefile.am (datadir): Don't override $(datadir)
+ which might be set by --datadir and different from $(prefix)/share.
+ Patch from Albert Chin-A-Young.
+
+2002-03-10 Jim Meyering <meyering@lucent.com>
+
+ * configure.ac (AM_INIT_AUTOMAKE): Specify here the required version
+ of automake (1.6), and options (gnits dist-bzip2), rather than...
+ * Makefile.am (AUTOMAKE_OPTIONS): ...here. Remove definition.
+
+2002-03-09 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.am (EXTRA_DIST): Remove config/config.rpath,
+ now that automake knows about it.
+
+2002-03-05 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.am (EXTRA_DIST): Add config/config.rpath.
+
+2002-03-02 Jim Meyering <meyering@lucent.com>
+
+ * tests/nice: Export _POSIX2_VERSION=199209, so we can continue
+ to exercise the now-obsolete options.
+
+ * Makefile.maint (strftime-check): Add `N'.
+
+2002-02-27 Paul Eggert <eggert@twinsun.com>
+
+ * doc/coreutils.texi (Time directives): Add %N for nanoseconds.
+ This documents the recent change to 'ls'. But for this to
+ be accurate we also have to update 'date', as follows:
+
+ * src/Makefile.am (date_LDADD): New macro.
+
+ * src/date.c: Include timespec.h.
+ (strftime, time, stime): Remove declarations; no longer needed.
+ (usage): Document %N.
+ (main): Use gettime rather than time to get the time of day,
+ so that we can get fractional times.
+ Similarly for settime and stime, so that we can set fractional times
+ (though this currently is not available to the user since we don't
+ parse fractional times; add FIXMES for that).
+ Check for gettime failures; e.g. this can occur if it
+ is past 2038 and we are a 32-bit app running on a 64-bit OS.
+ Get fractional part of file time stamps.
+ Do not falsely report failures just because time_t happens to be -1
+ (e.g. a file time stamp 1 second before the epoch).
+ (show_date): 2nd arg is now struct timespec, not time_t.
+ All uses changed. Use nstrftime rather than strftime, so that
+ we can format fractional seconds.
+
+2002-02-24 Jim Meyering <meyering@lucent.com>
+
+ * src/nice.c: Include posixver.h.
+ * src/date.c: Likewise.
+
+2002-02-17 Jim Meyering <meyering@lucent.com>
+
+ * ABOUT-NLS, intl/*: Update to Gettext 0.11.
+ * INSTALL: Update to Autoconf 2.52h.
+
+ * src/Makefile.am (datadir): Use `share' in place of @DATADIRNAME@,
+ per Gettext-0.11.
+ (LDADD): Use @LIBINTL@ instead of @INTLLIBS@, per Gettext-0.11.
+
+ * configure.ac (AC_CONFIG_AUX_DIR): New macro invocation.
+ (ALL_LINGUAS): Remove: now in po/LINGUAS as per Gettext 0.11.
+
+ * config: New subdirectory, containing the following files from .:
+ config.guess, config.sub, depcomp, missing, install-sh, mkinstalldirs.
+ Move the following files here from doc: texinfo.tex, mdate-sh.
+
+2002-02-15 Paul Eggert <eggert@twinsun.com>
+
+ Add support for _POSIX2_VERSION, which lets you pick which POSIX
+ version you want the utilities to conform to. Remove warnings about
+ failure to conform to a future POSIX version.
+
+ * src/date.c (ISO_8601_OPTION): Remove; no longer needed.
+ All uses changed to back to the corresponding short options.
+ (short_options): Remove; no longer needed.
+ (COMMON_SHORT_OPTIONS): New macro.
+
+ * src/date.c (usage): Document only the intersection of the
+ old and new behaviors, to encourage portability.
+ (main): Parse options using POSIX 1003.1-2001 rules if
+ conforming to that standard. Do not warn of obsolete options.
+ * src/nice.c (usage, main): Likewise.
+
+2002-02-11 Paul Eggert <eggert@twinsun.com>
+
+ * src/nice.c (main): Output warnings only if OBSOLETE_OPTION_WARNINGS.
+
+2002-02-11 Jim Meyering <meyering@lucent.com>
+
+ * src/date.c (usage): Describe %F, %g, %G, %P, and %R.
+ Tweak the description of %p.
+
+ * tests/stty/basic-1: Use `tail -n +2', rather than `tail +2'.
+
+2002-02-03 Paul Eggert <eggert@twinsun.com>
+
+ Add more support for POSIX 1003.1-2001, which requires removal
+ for support of obsolete "-DIGITS" option syntax in nice, and
+ which prohibits options with optional arguments like date's
+ -I option.
+
+ * NEWS, coreutils.texi: Document this.
+
+ * src/date.c (ISO_8601_OPTION): New enum value.
+ (long_options): Use it.
+ (short_options): New constant.
+
+ * src/date.c (usage): Document the change.
+ * src/nice.c (usage): Likewise.
+
+ * src/date.c (main): Conform to POSIX 1003.1-2001 if
+ POSIX2_VERSION says to, otherwise warn of obsolete usage if
+ OBSOLETE_OPTION_WARNINGS is nonzero and if not POSIXLY_CORRECT.
+ * src/nice.c (main): Likewise.
+
+2002-02-02 Bruno Haible <bruno@clisp.org>
+
+ * printf.c (print_esc): Call print_unicode_char with exit_on_error =
+ false.
+
+2002-01-28 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Require automake-1.5d.
+ * configure.ac (AM_INIT_AUTOMAKE): Use zero-arg form of this macro.
+
+2002-01-22 Jim Meyering <meyering@lucent.com>
+
+ * po/POTFILES.in: Add lib/xmemcoll.c and src/sys2.h.
+
+2002-01-21 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (strftime-check): New rule.
+ (local-check): Convert this target to a list. Update uses.
+ Mark them as .PHONY.
+ (header-check): New rule.
+ (local-check): Add header-check.
+
+ * src/dirname.c: Don't include "xalloc.h", as system.h already
+ does that via sys2.h.
+ * src/expr.c: Likewise.
+
+2002-01-19 Jim Meyering <meyering@lucent.com>
+
+ * configure.ac: Remove code that set LIBOBJS in support of ansi2knr.
+ The latest version of autoconf objected to it, and besides, I don't
+ care too much about K&R support these days.
+
+2002-01-14 Paul Eggert <eggert@twinsun.com>
+
+ * src/date.c, src/logname.c, src/pathchk.c: Comment fixes
+ to bring us up to date with respect to POSIX 1003.1-2001.
+ In particular, POSIX.2 is now obsolete.
+
+2001-12-28 Jim Meyering <meyering@lucent.com>
+
+ * configure.ac (ALL_LINGUAS): Add Catalan (ca).
+
+2001-12-17 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (real_dir): Remove unused variable.
+ (url_dir_list): Don't set define it here, but...
+ * Makefile.cfg (url_dir_list): ...define it here instead.
+ (hosts, a_host, b_host): Remove now-unused variables.
+ (alpha_subdir, a_url_dir, b_url_dir): Remove now-unused variables.
+
+2001-12-15 Jim Meyering <meyering@lucent.com>
+
+ * src/basename.c, src/chroot.c, src/date.c, src/dirname.c, src/echo.c,
+ * src/env.c, src/expr.c, src/factor.c, src/hostid.c, src/hostname.c,
+ * src/id.c, src/kill.c, src/logname.c, src/nice.c, src/pathchk.c,
+ * src/pinky.c, src/printenv.c, src/printf.c, src/pwd.c, src/seq.c,
+ * src/sleep.c, src/stty.c, src/su.c, src/tee.c, src/test.c, src/true.c,
+ * src/tty.c, src/uname.c, src/uptime.c, src/users.c, src/who.c,
+ * src/whoami.c, src/yes.c (usage): Use fputs, not printf.
+ Split --help output into smaller pieces.
+ Use new macros, HELP_OPTION_DESCRIPTION and VERSION_OPTION_DESCRIPTION
+ instead of hard-coding --help and --version descriptions.
+
+2001-12-08 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.cfg (wget_files): Remove ansi2knr.c, since it's
+ no longer available at that location.
+
+2001-11-25 Jim Meyering <meyering@lucent.com>
+
+ * basename.c, dirname.c, expr.c, factor.c, hostname.c (usage):
+ * logname.c, printenv.c, printf.c, pwd.c, sleep.c, test.c (usage):
+ * true.c, whoami.c, yes.c (usage):
+ Indent --help and --version strings to start in the 7th column.
+
+2001-11-17 Jim Meyering <meyering@lucent.com>
+
+ * configure.ac: Replace use of the one-arg form of AC_INIT
+ with a use of the 3-arg form and a use of AC_CONFIG_SRCDIR.
+
+2001-11-11 Jim Meyering <meyering@lucent.com>
+
+ * src/Makefile.am (printf_LDADD): Reflect spelling change:
+ s/POW_LIBM/POW_LIB/.
+ (sleep_LDADD): Likewise.
+
+2001-11-10 Jim Meyering <meyering@lucent.com>
+
+ * src/date.c (usage): Document %u. Reported by Albert Hopkins.
+
+2001-11-09 Jim Meyering <meyering@lucent.com>
+
+ * configure.ac: Use AC_CONFIG_FILES(...) and call AC_OUTPUT with no
+ arguments.
+
+2001-09-28 Jim Meyering <meyering@lucent.com>
+
+ * configure.ac: Tell automake to use the file name `config.hin'
+ rather than the two-`.' config.h.in.
+
+2001-09-26 Jim Meyering <meyering@lucent.com>
+
+ * man/Makefile.am (common_dep): Define it, so we depend on configure.ac.
+
+ * configure.ac: Renamed from configure.in.
+
+2001-09-25 Jim Meyering <meyering@lucent.com>
+
+ * src/Makefile.am:
+ (factor_DEPENDENCIES, printf_DEPENDENCIES seq_DEPENDENCIES):
+ (sleep_DEPENDENCIES uptime_DEPENDENCIES su_DEPENDENCIES):
+ Remove unnecessary definitions. They can cause trouble
+ when @INTLLIBS@ expands to -lintl.
+
+2001-09-23 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.am (SUBDIRS): When using newer gettext (in which
+ intl/libintl.h is created by rules intl/Makefile)
+ `intl' must precede `lib'.
+
+2001-09-17 Jim Meyering <meyering@lucent.com>
+
+ * src/printf.c (main): Change the `ignoring excess arguments' diagnostic
+ to list the first one we're ignoring. Suggestion from Karl Berry.
+
+2001-09-16 Jim Meyering <meyering@lucent.com>
+
+ * src/stty.c (usage): Prefix each line with a space, so that
+ help2man produces a better stty.1 man page.
+ From Colin Watson, via Michael Stone. http://bugs.debian.org/95816
+
+ * src/test.c (usage): Describe -h option.
+ From Colin Watson, via Michael Stone. http://bugs.debian.org/99272
+
+ * man/pwd.x: Add note to help people understand that this documentation
+ may not refer to the (shell built-in) command they're running.
+ * man/echo.x: Likewise.
+ * man/printf.x: Likewise.
+ From Michael Stone.
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Require automake-1.5.
+
+ * man/Makefile.am: Revamp this file, as for fileutils.
+
+2001-09-11 Jim Meyering <meyering@lucent.com>
+
+ * configure.in: Move HOST_OPERATING_SYSTEM code from this file
+ into a new macro defined in m4/host-os.m4.
+
+2001-09-09 Jim Meyering <meyering@lucent.com>
+
+ * src/test.c (binary_operator): Correct typo in diagnostic.
+ From Jochen Hein.
+
+2001-09-03 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS: New 'uname' options -i or --hardware-platform,
+ and -o or --operating-system.
+ 'uname -a' now outputs -i and -o information at the end.
+ New uname option --kernel-version is an alias for -v.
+ Uname option --release has been renamed to --kernel-release,
+ and --sysname has been renamed to --kernel-name;
+ the old options will work for a while, but are no longer documented.
+
+ * configure.in (HOST_OPERATING_SYSTEM): New macro; set it
+ from $host_os with a translation table and other heuristics.
+
+ * src/uname.c: Correct copyright notice as per latest coding standards.
+ Remove list of options in comment, which wasn't
+ worth maintaining separately from usage().
+
+ (print_element): Move definition up, avoiding the need for
+ declaration and allowing inlining on some platforms.
+ Keep track of whether something has been printed; this is more
+ natural than modifying `toprint'.
+
+ (PRINT_KERNEL_NAME): Renamed from PRINT_SYSNAME.
+ (PRINT_KERNEL_RELEASE): Renamed from PRINT_RELEASE.
+ (PRINT_KERNEL_VERSION): Renamed from PRINT_VERSION.
+ (PRINT_HARDWARE_PLATFORM, PRINT_OPERATING_SYSTEM): New macros.
+ (toprint): Remove global var; now local in `main'.
+ (long_options, usage, main): Implement changes described in NEWS.
+ Reorder options to reflect output order.
+ (main): Use buffers one byte longer, for compatibility with Solaris 8.
+ Output newline at end. -a sets `toprint' to -1 now; this is simpler.
+ Do not bother invoking system calls like uname if the resulting
+ information does not need to be printed.
+ Do not fail if sysinfo fails; just print "unknown".
+
+2001-08-30 Paul Eggert <eggert@twinsun.com>
+
+ * src/tee.c (full_write): Remove decl; not needed.
+
+2001-06-19 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS: expr now uses LC_COLLATE for string comparison, as per POSIX.
+ * src/expr.c (nextarg): Use strcoll, not strcmp.
+
+2001-08-24 Jim Meyering <meyering@lucent.com>
+
+ * src/pinky.c (main): Fail if -l is specified with no username.
+
+ * src/pinky.c (usage): Clarify description of -l. From Clark Morgan.
+
+2001-06-21 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS: 'expr' now requires '+' rather than 'quote' to quote tokens.
+
+ * src/expr.c (posixly_correct): Remove; no longer needed.
+ (main): Do not worry about POSIXLY_CORRECT, as it's OK for
+ expr to have options (so long as they do not begin with digits).
+ (eval6, usage): Use "+" rather than "quote" to quote tokens.
+
+2001-08-19 Jim Meyering <meyering@lucent.com>
+
+ * src/Makefile.am (bin_PROGRAMS): Add kill.
+ * src/kill.c: New program. Written by Marcus Brinkmann.
+
+2001-08-19 Jim Meyering <meyering@lucent.com>
+
+ * po/POTFILES.in: Add src/kill.c
+
+2001-06-21 Paul Eggert <eggert@twinsun.com>
+
+ * src/expr.c (nextarg): Advance ARGS by one if the next token matches.
+ All callers changed.
+
+2001-06-21 Paul Eggert <eggert@twinsun.com>
+
+ * src/expr.c (isstring): Remove.
+ (eval2): Do comparisons as strings first, before trying to convert to
+ integer. This avoids loss of information and wrong result, e.g. for
+ "expr '00' '<' '0!'", where you don't want to convert '00' to '0'.
+
+2001-08-18 Jim Meyering <meyering@lucent.com>
+
+ * tests/expr/basic (00): New test for the above.
+
+2001-06-21 Paul Eggert <eggert@twinsun.com>
+
+ * src/expr.c: Code cleanup to avoid tricky macros and
+ old-style function declarations.
+
+ (cmpf, less_than, less_equal, equal, not_equal, greater_equal,
+ greater_than, arithf, arithdivf, plus, minus, multiply, divide, mod):
+ Remove.
+
+ (eval4, eval3, eval2): Rewrite to avoid the need for the above macros
+ and functions.
+
+2001-08-18 Jim Meyering <meyering@lucent.com>
+
+ * src/test.c (binary_operator): Move declarations of lt,rt `down'
+ into the scopes where they're actually used.
+ (unary_operator): Likewise for `fd'.
+
+2001-06-20 Paul Eggert <eggert@twinsun.com>
+
+ * src/test.c (isint, binary_operator, unary_operator):
+ Use intmax_t for argument integers, not long.
+ (age_of, binary_operator): Use time_t for times, not long.
+ (unary_operator): If N is out of int range, -t N now returns false.
+
+2001-06-20 Paul Eggert <eggert@twinsun.com>
+
+ * src/expr.c (main): Handle a leading "--" option as POSIX requires.
+
+2001-08-18 Jim Meyering <meyering@lucent.com>
+
+ * tests/expr/basic: Add a test for the above.
+
+2001-06-20 Paul Eggert <eggert@twinsun.com>
+
+ * src/expr.c (toarith): Don't accept plain "-" as a valid integer.
+
+2001-06-20 Paul Eggert <eggert@twinsun.com>
+
+ Modify 'expr' so that it uses intmax_t, not int, to calculate
+ the value of integer expressions.
+
+ * src/expr.c (struct valinfo.i): Now intmax_t, not int.
+ (docolon, int_value, str_value, isstring, nextarg, toarith,
+ freev, tostring, trace): Remove unnecessary forward decls.
+ (int_value, printv, tostring, toarith, arithf, arithdivf, docolon,
+ eval6, eval4, eval3): Do integer arithmetic using intmax_t, not int.
+ (docolon): Don't assume size_t fits in int.
+
+2001-08-18 Jim Meyering <meyering@lucent.com>
+
+ * tests/expr/basic: New test for the above.
+ * tests/expr/Makefile.am: New file.
+ * tests/expr: New directory.
+ * tests/Makefile.am (SUBDIRS): Add expr.
+ * configure.in (AC_OUTPUT): Add tests/expr/Makefile.
+
+2001-08-18 Jim Meyering <meyering@lucent.com>
+
+ Revert part of last change and solve the problem a better way.
+ * src/date.c (show_date) [--rfc-822]: Set LC_ALL=C just before
+ calling strftime and restore it just afterwards.
+ Suggestion from Ulrich Drepper.
+
+2001-08-18 H. Peter Anvin <hpa@transmeta.com>
+
+ * src/date.c (show_date) [--rfc-822]: Don't space-pad the day of
+ the month.
+ Set only LC_TYPE to the "C" locale. Setting LC_ALL is overkill,
+ and would have unwanted side effects if there is an error message.
+
+2001-08-16 Jim Meyering <meyering@lucent.com>
+
+ * src/date.c (main): When there are too many non-option arguments,
+ include the first offending argument in the diagnostic.
+ Suggestion from Karl Berry.
+
+2001-08-14 Jim Meyering <meyering@lucent.com>
+
+ * src/Makefile.am (INCLUDES): Add -I../lib so sys2.h can include
+ the new, generated file, unlocked-io.h.
+
+ * tests/Makefile.am (TESTS_ENVIRONMENT): Remove first definition
+ of this variable, and move its RHS into the RHS of the second.
+ Thanks, automake!
+
+ * src/su.c (xputenv): Remove parameter's const qualifier.
+
+ * src/dirname.c, src/env.c, src/id.c, src/pathchk.c, src/pinky.c,
+ * src/printenv.c, src/sleep.c, src/tee.c, src/test.c, src/uptime.c,
+ * src/users.c, src/who.c: (AUTHORS): Mark string for translation,
+ since it contains the English word `and'.
+
+2001-08-12 Jim Meyering <meyering@lucent.com>
+
+ * src/pathchk.c (PATH_MAX_FOR): Use pathconf via wrapper.
+ (NAME_MAX_FOR): Likewise.
+ Guard the above pathconf-using definitions with `#if HAVE_PATHCONF'
+ rather than with `#ifdef _POSIX_VERSION'.
+ (pathconf_wrapper): New function.
+ (validate_path): Declare length variables to be `long', not `int'.
+ Adjust corresponding printf-style specs to use %ld.
+ Reported by Neal H Walfield.
+
+2001-08-07 Jim Meyering <meyering@lucent.com>
+
+ * src/printf.c (cfcc_msg): Remove now-inaccurate part of comment.
+ From Bruno Haible.
+
+2001-07-04 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.cfg: New file with package-specific definitions.
+ * Makefile.am (EXTRA_DIST): Add Makefile.cfg.
+
+2001-06-09 Jim Meyering <meyering@lucent.com>
+
+ (PIDSTR_DECL_AND_INIT): Define.
+
+2001-06-05 Jim Meyering <meyering@lucent.com>
+
+ * configure.in (ALL_LINGUAS): Add Turkish (tr).
+
+2001-05-27 Jim Meyering <meyering@lucent.com>
+
+ * src/dirname.c (main): Add `const' to declaration of local, `result'.
+
+2001-04-01 Jim Meyering <meyering@lucent.com>
+
+ Add options to make `who' more POSIX compliant.
+ * who.c: Accept new options: --all (-a), --boot (-b), --dead (-d),
+ --login, --process (-p), --runlevel (-r), --short (-s), --time (-t),
+ --users (-u).
+ The -u option now produces POSIX-specified results and is the same as
+ the long option `--users'. --idle is no longer the same as -u.
+ (time_string, print_line, print_boottime, print_deadprocs, print_login,
+ print_initspawn, print_clockchange, print_runlevel): New functions.
+ (print_user): Renamed from print_entry and reworked.
+ (search_entries): Remove function.
+ (who_am_i): Likewise.
+ (usage): Describe new options.
+ (main): Handle new options.
+ Mostly from Michael Stone.
+
+2001-05-11 Paul Eggert <eggert@twinsun.com>
+
+ dirname code cleanup. base_name now behaves more compatibly
+ with POSIX basename when given file names that have trailing
+ slashes, and similarly for dir_name. Add new primitives
+ base_len and dir_len. Put the directory-name-related decls
+ into dirname.h.
+
+ * basename.c: Include "dirname.h".
+ (base_name, strip_trailing_slashes): Remove decls; now in dirname.h.
+ (main): Use base_len instead of strip_trailing_slashes to strip
+ trailing slashes.
+
+ * dirname.c (strip_trailing_slashes): Remove decl;
+ now in dirname.h.
+ (main): Use dir_len rather than dir_name_r.
+
+ * su.c: Include "dirname.h".
+ (base_name): Remove decl; now in dirname.h.
+
+2001-04-20 Jim Meyering <meyering@lucent.com>
+
+ * doc/sh-utils.texi (false invocation): Describe how --help and
+ --version are treated with and without POSIXLY_CORRECT.
+ (true invocation): Likewise. Forwarded by Michael Stone.
+
+2001-03-18 Jim Meyering <meyering@lucent.com>
+
+ * tests/Fetish.pm: If the $DJDIR envvar is defined, set SHELL
+ to $DJDIR/bin/bash.exe. Patch from Richard Dawe, based on a
+ suggestion from Eli Zaretskii.
+
+2001-03-10 Jim Meyering <meyering@lucent.com>
+
+ * doc/sh-utils.texi (date invocation): Correct the description of how
+ date works when given no format. Reported by Ole Laursen.
+
+ * src/factor.c: Include wheel-size.h.
+ (WHEEL_START): Adjust definition.
+ (wheel_tab[]): Remove body of definition.
+ Include generated file, wheel.h, instead.
+
+ * src/wheel-gen.pl: New file.
+ * src/Makefile.am (noinst_HEADERS): Add wheel.h wheel-size.h.
+ (EXTRA_DIST): Add wheel-gen.pl.
+ (PERL): Define.
+ (wheel-size.h, wheel.h): New rules.
+ (BUILT_SOURCES): Add wheel.h and wheel-size.h.
+ (MAINTAINERCLEANFILES): Define.
+
+2001-03-09 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (my_distdir): Define new variable, and use this
+ in place of most old uses of $(distdir).
+
+ * src/date.c (usage): Describe %C.
+ * doc/sh-utils.texi (Date directives): Likewise.
+
+ * tests/help-version: Ensure that /dev/full is a character device
+ (using test -c) as well as being writable, before trying to write to it.
+ Otherwise, the test could mistakenly append a newline to an existing,
+ regular, writable, /dev/full file.
+ Suggested by Ulrich Drepper.
+
+2001-03-07 Jim Meyering <meyering@lucent.com>
+
+ * tests/stty/Makefile.am (EXTRA_DIST): Remove input-tty.
+ * tests/Makefile.am (EXTRA_DIST): Add input-tty.
+
+ * tests/stty/basic-1: Reflect change in location of input-tty.
+ * tests/stty/row-col: Likewise.
+ * tests/stty/input-tty: Move this file...
+ * tests/input-tty: ... to here.
+
+2001-02-24 Paul Eggert <eggert@twinsun.com>
+
+ * doc/sh-utils.texi: Fix typo: '-d=1may' -> '-d 1may'.
+ Fix and clarify time zone usage in 'date' examples.
+
+2001-02-04 Jim Meyering <meyering@lucent.com>
+
+ * src/factor.c (usage): Tweak --help output: it prints the _prime_
+ factors, not just any factors.
+
+2001-02-03 Jim Meyering <meyering@lucent.com>
+
+ Improve the performance of `factor' (more than 2x speed-up for large N).
+ * src/factor.c (wheel_tab): New global table.
+ (WHEEL_START, WHEEL_END): Define.
+ (factor): Remove the loop that special-cased `2'.
+ Instead of incrementing by `2', use the offsets from the wheel table.
+ From Michael Steffens.
+
+2000-11-27 Prashant TR <rprash@wilco-int.com>
+
+ * src/test.c (eaccess) [__MSDOS__]: Just use access.
+
+2001-01-26 Jim Meyering <meyering@lucent.com>
+
+ * src/dirname.c (main): Declare local result as non-const, now
+ that it's freed.
+
+2001-01-20 Jim Meyering <meyering@lucent.com>
+
+ * configure.in: Remove jm_CHECK_ALL_TYPES.
+ Now it's invoked by jm_MACROS.
+
+2001-01-04 Jim Meyering <meyering@lucent.com>
+
+ * src/date.c (main): Fail when --rfc-822 (-R) is specified along
+ with a format string. Reported by Jochen Hein.
+
+2000-12-17 Jim Meyering <meyering@lucent.com>
+
+ * doc/texinfo.tex: Update from master repository.
+ * config.sub: Likewise.
+ * config.guess: Likewise.
+
+ * djgpp: New directory.
+ * djgpp/*: New files.
+ * Makefile.am (SUBDIRS): Add djgpp.
+ * configure.in (AC_OUTPUT): Add djgpp/Makefile.
+ From Prashant TR.
+
+2000-12-08 Jim Meyering <meyering@lucent.com>
+
+ * src/dirname.c: Include xalloc.h.
+ (main): Use dir_name rather than the underlying dir_name_r.
+ The former now handles cwd-relative names with drive-letter prefixes.
+
+2000-12-02 Jim Meyering <meyering@lucent.com>
+
+ * src/seq.c (valid_format): Move pre-increment to a separate statement
+ to avoid a warning.
+
+ * src/id.c: Move dcls of globals used only in main...
+ (main): ...to here.
+ (usage): Clarify option descriptions.
+
+2000-11-18 Jim Meyering <meyering@lucent.com>
+
+ * po/Makefile.in.in: Sync with the one from fileutils.
+
+ * configure, config.h.in, Makefile.in, etc.: Regenerate using the
+ very latest version (in CVS) of autoconf.
+
+2000-11-17 Jim Meyering <meyering@lucent.com>
+
+ * GNUmakefile (.NOTPARALLEL): New target. Prevent unwanted parallelism.
+ Suggestion from Ulrich Drepper.
+
+ * src/pinky.c: Explicitly include sys/types.h before including system.h.
+ * src/uptime.c: Likewise.
+ * src/users.c: Likewise.
+ * src/who.c: Likewise.
+
+2000-11-13 Paul Eggert <eggert@twinsun.com>
+
+ * src/sys2.h (ST_TIME_CMP_NS): Fix typo: ST_MTIM_NSEC should
+ be tested with #ifdef, not with #if.
+
+2000-11-12 Jim Meyering <meyering@lucent.com>
+
+ * src/date.c (show_date): Add a comment explaining why the
+ format string must not be translatable via _(). From Paul Eggert.
+
+2000-10-31 Jim Meyering <meyering@lucent.com>
+
+ * doc/sh-utils.texi: Clean up indentation and punctuation.
+ Fix a couple typos. From Brian Youmans.
+
+2000-10-30 Jim Meyering <meyering@lucent.com>
+
+ * configure, config.h.in, Makefile.in, etc.: Regenerate using the
+ very latest version (in CVS) of autoconf.
+
+2000-10-29 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0.11.
+
+2000-10-27 Jim Meyering <meyering@lucent.com>
+
+ * src/date.c (usage): Mention the time zone, UTC, and write the date
+ in ISO format in the description of %s. Suggestion from Karl Berry.
+
+2000-10-25 Jim Meyering <meyering@lucent.com>
+
+ * src/dirname.c: Include dirname.h.
+ (main): Use dir_name_r rather than open-coding it.
+
+2000-10-23 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.am (EXTRA_DIST): Add .prev-version.
+
+2000-10-18 Paul Eggert <eggert@twinsun.com>
+
+ * src/date.c (universal_time): Remove; it's just a temptation to
+ do the wrong thing.
+ (main): The -u option now just sets TZ; it doesn't do anything else.
+ (show_date): Do not do anything special if -u is set.
+ This affects the behavior of the -I and -R options.
+ * doc/sh-utils.texi: Document the above.
+
+2000-10-18 Jim Meyering <meyering@lucent.com>
+
+ * doc/sh-utils.texi (Examples of date): Fix a typo.
+
+2000-10-11 Jim Meyering <meyering@lucent.com>
+
+ * doc/sh-utils.texi (Time directives) [%S]: Range is 0..60, not 0..61.
+
+2000-10-06 Paul Eggert <eggert@twinsun.com>
+
+ Undo the effect of the 1997-07-12 change to date.c; it
+ broke "date -u MMDDhhmm" and it wasn't documented.
+ This reverts to the behavior of the 1996-01-03 patch.
+
+ * src/date.c (TZ_UTC0, MAYBE_SET_TZ_UTC0, set_tz): Remove.
+ (batch_convert): Don't futz with TZ.
+ (main): -u now parses all dates as UTC, not just some.
+ Reported by Karl-Michael Schneider.
+ * tests/date/Test.pm (utc-0, utc-1, relative-2): Adjust to
+ above change.
+
+2000-09-29 Jim Meyering <meyering@lucent.com>
+
+ * src/yes.c (usage): Add a separate usage line, just for `OPTION'.
+ Suggestion from M. P. Suzuki.
+
+2000-09-09 Jim Meyering <meyering@lucent.com>
+
+ * src/date.c (usage): Make the second `Usage' line more precise
+ (also making it match the texinfo documentation).
+ From Karl Eichwalder.
+
+ * doc/sh-utils.texi (Setting the time): Correct the capitalization of
+ `HHMM' in the info-rendering of the texinfo documentation.
+ Reported by Karl Eichwalder.
+
+2000-08-14 Jim Meyering <meyering@lucent.com>
+
+ * src/tee.c (main): Remove incorrect `FIXME' comment.
+
+2000-08-07 Paul Eggert <eggert@twinsun.com>
+
+ * src/su.c (xputenv): Invoke xalloc_die instead of printing
+ our own message.
+
+2000-07-30 Jim Meyering <meyering@lucent.com>
+
+ * src/tee.c (tee): Use SET_BINARY and SET_BINARY2.
+ From Prashant TR.
+
+ * src/help-version: Remove file. Move it to ...
+ * tests/help-version: ...here
+ * tests/Makefile.am (TESTS): Add help-version.
+ (TESTS_ENVIRONMENT): Define.
+ * src/Makefile.am (EXTRA_DIST): Remove help-version.
+ (TESTS): Remove definition.
+ (TESTS_ENVIRONMENT): Remove definition.
+
+2000-07-23 Jim Meyering <meyering@lucent.com>
+
+ * src/help-version (su_args): Punt, so we don't try to start a shell.
+
+ * src/su.c: Include <sys/param.h> if HAVE_SYS_PARAM_H is defined,
+ rather than if _POSIX_VERSION is defined. Remove declarations of
+ getpwuid, getgrgid, and getuid, now that they're in sys2.h.
+ Prompted by a report from John David Anglin.
+
+ * src/sys2.h [!HAVE_DECL_GETPWUID]: Declare getpwuid.
+ [!HAVE_DECL_GETGRGID]: Declare getgrgid.
+ [!HAVE_DECL_GETUID]: Declare getuid.
+
+2000-07-19 Jim Meyering <meyering@lucent.com>
+
+ * src/date.c (batch_convert): Free `initial_TZ' only if it was set.
+ Reported by Michael Hohn.
+
+2000-07-17 Jim Meyering <meyering@lucent.com>
+
+ * src/stty.c (visible): Don't mark `<undef>' for translation.
+ The standard requires that exact string.
+
+2000-07-09 Jim Meyering <meyering@lucent.com>
+
+ * config.guess: Update from FSF.
+ * config.sub: Likewise.
+
+ * src/Makefile.am (seq_LDADD): Don't hard-code `-lm' -- some systems
+ don't have/need it. From Bruno Haible.
+
+2000-07-06 Jim Meyering <meyering@lucent.com>
+
+ * src/help-version: Punt on `groups' test, since all it does
+ is run `id -Gn', and groups fails if GNU id is not installed.
+ Reported by Christian Krackowizer.
+
+2000-07-05 Bruno Haible <haible@clisp.cons.org>
+
+ * tests/nice: Avoid syntax error in "test" when `nice` generates
+ no output.
+
+2000-07-04 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0j.
+
+ * tests/date/Test.pm (test_vector): Disable test #2 for all systems,
+ even though it fails only on SunOS4.
+
+2000-07-01 Jim Meyering <meyering@lucent.com>
+
+ * configure.in (jm_DUMMY_1): Wrap a snippet in a macro definition
+ so we can use AC_REQUIRE.
+ (jm_BOOT_TIME): Likewise.
+
+2000-06-17 Bruno Haible <haible@clisp.cons.org>
+
+ * configure.in: Add pinky, users, who to OPTIONAL_BIN_PROGS if either
+ <utmp.h> or <utmpx.h> exists. Add uptime only if either <utmp.h> or
+ <utmpx.h> exists.
+ * src/Makefile.am (bin_PROGRAMS): Remove pinky, users, who from here...
+ (EXTRA_PROGRAMS): ... and add them here.
+
+2000-06-26 Jim Meyering <meyering@lucent.com>
+
+ `id -Gn' (invoked by groups) would fail without giving a diagnostic
+ on malconfigured systems.
+ * src/id.c (print_user): Give a diagnostic if number->name lookup fails.
+ (print_group): Likewise.
+
+2000-06-25 Jim Meyering <meyering@lucent.com>
+
+ * configure.in (ALL_LINGUAS): Add Danish (da).
+
+2000-06-21 Jim Meyering <meyering@lucent.com>
+
+ * tests/stty/basic-1: New test for that.
+ * src/stty.c (valid_options): Don't segfault on `stty erase -'.
+ Patch from Harry Liu.
+
+2000-06-15 Jim Meyering <meyering@lucent.com>
+
+ * tests/date/Test.pm: Add tests for getdate.y fix.
+
+2000-06-14 Jim Meyering <meyering@lucent.com>
+
+ * src/help-version: Punt on nohup; give it --version.
+
+2000-06-10 Jim Meyering <meyering@lucent.com>
+
+ * doc/sh-utils.texi: Typo-fixes and some clean-up from Brian Youmans.
+
+2000-05-29 Jim Meyering <meyering@lucent.com>
+
+ * tests/nice: Remove now-unused reference to srcdir.
+
+ * src/help-version: Use `WARNING', not just `Warning' in the
+ broken-/bin/sh diagnostic, to be consistent with other such warnings.
+
+2000-05-21 Jim Meyering <meyering@lucent.com>
+
+ * tests/nice: Disable test on djgpp.
+
+2000-05-15 Jim Meyering <meyering@lucent.com>
+
+ * tests/date/Test.pm (test_vector): Skip the %c test on SunOS4 systems.
+ Suggested by Paul Eggert. Reported by Volker Borchert.
+
+2000-05-13 Jim Meyering <meyering@lucent.com>
+
+ * src/groups.sh: Detect and report write failure of --help/--version.
+ * src/nohup.sh: Likewise.
+
+2000-05-11 Jim Meyering <meyering@lucent.com>
+
+ * src/date.c (usage): Don't call close_stdout_status directly,
+ since that didn't cover --version output.
+ (main): Instead, call close_stdout_set_status and arrange to
+ call close_stdout via atexit.
+ * src/printenv.c: Likewise.
+ * src/tty.c: Likewise.
+
+ * src/true.c (usage): Don't call close_stdout directly, since that
+ didn't cover --version output.
+ (main): Arrange to call close_stdout via atexit, instead.
+ * src/yes.c: Likewise.
+ * src/sleep.c: Likewise.
+
+2000-05-09 Jim Meyering <meyering@lucent.com>
+
+ * src/sys2.h (case_GETOPT_VERSION_CHAR): Don't call close_stdout.
+ * src/help-version: New test.
+ * src/Makefile.am (TESTS): Define.
+ (TESTS_ENVIRONMENT): Likewise.
+ (EXTRA_DIST): Add help-version.
+
+2000-05-08 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0i.
+
+2000-05-07 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0h.
+
+ * src/basename.c: Include "closeout.h".
+ (main): Call atexit with close_stdout.
+ * src/chroot.c: Likewise.
+ * src/dirname.c: Likewise.
+ * src/echo.c: Likewise.
+ * src/env.c: Likewise.
+ * src/expr.c: Likewise.
+ * src/factor.c: Likewise.
+ * src/hostid.c: Likewise.
+ * src/hostname.c: Likewise.
+ * src/id.c: Likewise.
+ * src/logname.c: Likewise.
+ * src/nice.c: Likewise.
+ * src/pathchk.c: Likewise.
+ * src/pinky.c: Likewise.
+ * src/printf.c: Likewise.
+ * src/pwd.c: Likewise.
+ * src/seq.c: Likewise.
+ * src/stty.c: Likewise.
+ * src/su.c: Likewise.
+ * src/test.c: Likewise.
+ * src/uname.c: Likewise.
+ * src/uptime.c: Likewise.
+ * src/users.c: Likewise.
+ * src/who.c: Likewise.
+ * src/whoami.c: Likewise.
+ * src/tee.c: Likewise. Remove explicit close_stdout.
+
+ * src/yes.c Include "closeout.h".
+ (usage): Call close_stdout just before exit.
+ * src/sleep.c: Likewise.
+ * src/true.c: Likewise.
+ * src/date.c (usage): Call close_stdout_status.
+ * src/printenv.c (usage): Likewise.
+
+ * tests/date/Test.pm ($Test::env{'rfc822-1'}): Add TZ=UTC0.
+
+2000-05-06 Jim Meyering <meyering@lucent.com>
+
+ * src/Makefile.am (sleep_LDADD): Add @LIB_CLOCK_GETTIME@ and
+ @LIB_NANOSLEEP@.
+
+ * src/tty.c (main): Warn about arguments, don't fail.
+ (usage): Call close_stdout_status from here as well as from main.
+
+2000-05-05 Jim Meyering <meyering@lucent.com>
+
+ Exit nonzero upon write failure.
+ * src/printf.c: Include "closeout.h".
+ (main): Call close_stdout.
+ Reported by Ian Jackson via Michael Stone.
+
+2000-05-04 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (my-distcheck): Remove spurious blank line.
+ Remove $(DEPDIR) *after* making distclean, not before.
+
+2000-04-30 Jim Meyering <meyering@lucent.com>
+
+ * src/yes.c: Detect and terminate upon write failure.
+
+2000-04-14 Jim Meyering <meyering@lucent.com>
+
+ * src/seq.c: Shorten `#ifdef HAVE_...' to `#if HAVE_...' and
+ remove unnecessary uses of `defined' (aesthetics).
+
+2000-04-12 Jim Meyering <meyering@lucent.com>
+
+ Move some code into m4/.
+ * configure.in (_GNU_SOURCE): Don't define here.
+ (AC_SYS_LARGEFILE): Don't use here.
+ (AM_C_PROTOTYPES): Don't use here.
+ (AC_DEFINE): Use 3-arg form.
+ * acconfig.h: Remove now-unused file.
+
+2000-04-09 Jim Meyering <meyering@lucent.com>
+
+ * configure.in (ALL_LINGUAS): Add Estonian (et).
+
+2000-04-01 Jochen Hein <jochen@jochen.org>
+
+ * src/date.c: Use the "C" locale when using --rfc-822 (-R), as
+ required by rfc822. Before, in the de_DE locale, date would
+ print the German weekday and month abbreviations.
+
+ * tests/date/Test.pm: Add test for rfc822 format and foreign
+ locale settings.
+
+2000-04-04 Jim Meyering <meyering@lucent.com>
+
+ * man/Makefile.am (man_MANS): Add uptime.1.
+ * man/uptime.x: New file.
+
+ * man/Makefile.am (man_MANS): Add factor.1.
+ * man/factor.x: New file.
+
+ * tests/seq/basic: Split a long line and tweak for font-lock mode.
+ * tests/factor/basic: Likewise.
+ * tests/basename/basic: Likewise.
+
+2000-03-29 Paul Eggert <eggert@twinsun.com>
+
+ * src/date.c: Include <langinfo.h> if it exists.
+ (DATE_FMT_LANGINFO): New macro.
+ (show_date): Use it to get the locale-specific default format for
+ "date" if it exists.
+
+2000-03-19 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0g.
+
+ * doc/sh-utils.texi (chroot invocation): Include a couple tips and
+ a simple example.
+
+ * doc/getdate.texi (Calendar date item): Fix typos.
+ From Per Cederqvist.
+
+2000-03-18 Jim Meyering <meyering@lucent.com>
+
+ * src/uptime.c (print_uptime): Use `buf' only if fgets succeeds.
+
+2000-03-12 Jim Meyering <meyering@lucent.com>
+
+ Merge from textutils.
+ * src/system.h (O_BINARY, O_TEXT): Define if necessary.
+ (SET_BINARY, SET_BINARY2): Define.
+ (DEV_BSIZE): Define to BBSIZE if appropriate.
+
+2000-03-11 Jim Meyering <meyering@lucent.com>
+
+ * tests/date/Test.pm: Set the default TZ value to UTC0, not UTC.
+ The latter didn't have any effect on alphaev56-dec-osf4.0f.
+
+ Final merge with fileutils.
+ * src/system.h: Use standard `#if TIME_WITH_SYS_TIME...' block
+ rather than `#if TM_IN_SYS_TIME' one.
+
+2000-02-02 Bruno Haible <haible@clisp.cons.org>
+
+ * printf.c: Include "unicodeio.h".
+ (usage): Mention \u and \U directives. \x outputs a byte, not a
+ character.
+ (print_esc): Implement \u and \U.
+ * Makefile.am (printf_LDADD): Add @LIBICONV@.
+
+2000-03-03 Jim Meyering <meyering@lucent.com>
+
+ Make it so stty's rprnt attribute works on HPUX 10.20.
+ * src/stty.c [CREPRINT && !CRPRNT] (CRPRNT): Define.
+ (control_info): Recognize HPUX's CREPRINT.
+
+2000-03-02 Jim Meyering <meyering@lucent.com>
+
+ * doc/sh-utils.texi (printf invocation): Describe new unicode syntax.
+ From Bruno Haible.
+
+ Unify with fileutils/src/system.h.
+ * src/system.h (ST_NBLOCKS): Sync with recent changes in fileutils.
+ [!_POSIX_VERSION]: Remove declarations of getlogin, ttyname, geteuid.
+ * src/sys2.h: Declare them here, if needed.
+
+2000-03-01 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.am (EXTRA_DIST): Include GNUmakefile.
+
+ * src/seq.c (get_width_format): Fix portability problem with
+ `-0' vs. `0'.
+
+2000-02-22 Jim Meyering <meyering@lucent.com>
+
+ * tests/date/Test.pm (datevtime-1): New test.
+ From John Kendall.
+
+2000-02-15 Jim Meyering <meyering@lucent.com>
+
+ * man/Makefile.maint ($(man_MANS)): Remove $@-t1.
+
+2000-02-13 Jim Meyering <meyering@lucent.com>
+
+ * tests/Fetish.pm (run_tests): Discard stderr.
+ Reverse diff args, so `expected' is last, as in mk-script.
+
+2000-02-12 Jim Meyering <meyering@lucent.com>
+
+ * tests/mk-script: Invoke `diff' when differences are found.
+ * tests/Fetish.pm (run_tests): Likewise.
+
+2000-02-09 Jim Meyering <meyering@lucent.com>
+
+ * src/su.c (correct_password): Correct HAVE_STRUCT_* name in #if guard
+ to go along with corrected autoconf test: Reported by Gaël Quéri.
+
+2000-02-05 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0f.
+
+ * src/who.c: Use UT_USER in place of hard-coded `->ut_name' here, too.
+ * src/pinky.c: Likewise.
+ Reported by Tom Tromey and Andreas Schwab.
+ * src/uptime.c (print_uptime): Likewise.
+ * src/users.c (list_entries_users): Likewise.
+
+2000-01-30 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0e.
+
+ * src/su.c (correct_password): Guard with `HAVE_GETSPNAM &&
+ HAVE_STRUCT_PASSWD_SP_PWDP', rather than just `#ifdef HAVE_SHADOW_H'.
+
+ * po/POTFILES.in: Add lib/makepath.c, lib/obstack.c, lib/rpmatch.c,
+ and lib/same.c.
+
+2000-01-29 Jim Meyering <meyering@lucent.com>
+
+ * configure.in: Move library-related tests into m4/lib-check.m4.
+ Remove lib-check for cposix now that we use m4/isc-posix.m4.
+
+ * src/seq.c: Back out most of the 2000-01-21 and 01-22 changes.
+ [Instead, merely give examples showing how to accomplish the same
+ task with fewer limitations using existing tools. ]
+ Suggestion from Bruno Haible.
+ (valid_format): Rename from check_format.
+ * tests/seq/basic: Remove associated tests and add two equal-width ones.
+
+ * tests/stty/row-col-1: Set COLUMNS envvar, just to be safe.
+
+2000-01-28 Jim Meyering <meyering@lucent.com>
+
+ * src/stty.c (wrapf): Emit a newline only if 0 < current_col.
+ (screen_columns): Use xstrtol, not atoi.
+ If get_win_size fails and $COLUMNS == 0, then return 80, not `0'.
+
+2000-01-23 Jim Meyering <meyering@lucent.com>
+
+ * configure.in (OPTIONAL_BIN_PROGS, OPTIONAL_BIN_ZCRIPTS, MAN):
+ AC_SUBST these not here, but rather in m4/, so that the now-shared
+ lib/Makefile.am are all the same.
+ (AC_CHECK_FUNCS): Remove check for utmpname, since it's already
+ in m4/prereq.m4.
+ Remove many function checks (moved to m4/.)
+
+ * configure.in (AM_FUNC_STRTOD): Move to m4/.
+ (AC_SUBST(POW_LIBM)): Likewise.
+
+ * configure.in (SEQ_LIBM): Remove AC_SUBST of a constant.
+ * src/Makefile.am (seq_LDADD): Add -lm rather than constant $(SEQ_LIBM).
+
+2000-01-22 Jim Meyering <meyering@lucent.com>
+
+ * src/sys2.h [! HAVE_DECL_STRTOUL]: Declare strtoul.
+ [! HAVE_DECL_STRTOULL]: Declare strtoull.
+ Required for some AIX systems. Reported by Christian Krackowizer.
+
+ * configure.in (ALL_LINGUAS): Add Slovenian (sl).
+ (AC_CHECK_HEADERS): Move these checks into m4/.
+
+ * src/seq.c (enum Format_type): Declare.
+ (format_type): New global to take place of intconv.
+ (format_str): Move global declaration...
+ (main): ... to here.
+ (check_format): Rename parameter to avoid shadowing global.
+ (DO_printf): New macro.
+ (main): Use it.
+ Topologically sort the functions and remove fwd declarations.
+
+2000-01-21 Bruno Haible <haible@linuix.math.u-bordeaux.fr>
+
+ Add support for octal and hexadecimal output.
+ * seq.c (intconv): New variable.
+ (usage): Update.
+ (main): Call scan_arg instead of scan_double_arg. Call check_format
+ before scan_arg.
+ (scan_int_arg, scan_arg): New functions.
+ (check_format): Add intconv argument. Accept %d, %u, %o, %x, %X.
+ (print_numbers): If intconv is true, pass an int argument to printf.
+
+2000-01-21 Jim Meyering <meyering@lucent.com>
+
+ * configure.in (ALL_LINGUAS): Add Galician (gl).
+
+2000-01-16 Jim Meyering <meyering@lucent.com>
+
+ * lib/Makefile.am: Sync with fileutils/lib/Makefile.am.
+
+ * src/date.c (usage): Correct error in %V description.
+ From Wolfram Kleff.
+
+ * configure.in: Remove jm_FUNC_GROUP_MEMBER, jm_FUNC_PUTENV,
+ AM_FUNC_GETLOADAVG, jm_SYS_PROC_UPTIME, AM_SYS_POSIX_TERMIOS,
+ jm_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL.
+
+2000-01-15 Jim Meyering <meyering@lucent.com>
+
+ * configure.in (AC_REPLACE_FUNCS): Remove gethostname, getusershell,
+ memcpy, and memset. Now that's done in m4/.
+ Remove these, too: stime strcspn stpcpy strstr strtol strtoul.
+
+2000-01-12 Jim Meyering <meyering@lucent.com>
+
+ * configure.in: Remove the tests that are now in jm_PREREQ_CANON_HOST.
+
+2000-01-11 Jim Meyering <meyering@lucent.com>
+
+ Sync lib/ directories of sh-utils, and textutils.
+
+ * lib/Makefile.am (libfetish_a_SOURCES): Add diacrit.c, hard-locale.c,
+ linebuffer.c, md5.c, memcasecmp.c, memcoll.c, obstack.c, safe-read.c
+ (noinst_HEADERS): Add bumpalloc.h, diacrit.h, hard-locale.h,
+ linebuffer.h, md5.h, memcasecmp.h, memcoll.h, obstack.h, safe-read.h.
+
+ * lib/Makefile.am: s/su/fetish/
+ * src/Makefile.am: s/libsu/libfetish/
+
+2000-01-10 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0d.
+
+ * src/Makefile.am (sleep_LDADD): Add @POW_LIBM@, for systems that use
+ lib/strtod.c and need -lm to resolve its pow reference.
+
+2000-01-07 Jim Meyering <meyering@ascend.com>
+
+ * Version 2.0c.
+
+ * tests/basename/Makefile.am (TESTS_ENVIRONMENT): Add `pwd`/ prefix
+ to exported PATH value (though not strictly necessary, here).
+ * tests/factor/Makefile.am (TESTS_ENVIRONMENT): Likewise.
+ * tests/seq/Makefile.am (TESTS_ENVIRONMENT): Likewise.
+ * tests/stty/Makefile.am (TESTS_ENVIRONMENT): Likewise.
+
+2000-01-06 Paul Eggert <eggert@set.twinsun.com>
+
+ * tar/lib/getdate.y: Sync tm_diff with the GNU C Library.
+ (TM_YEAR_BASE): Renamed from TM_YEAR_ORIGIN. All uses changed.
+ (tm_diff): Renamed from difftm. All uses changed.
+ Replace body with that taken from GNU C Library 2.1.3pre1.
+ (get_date): Prefer tm_gmtoff to tm_diff if available.
+
+2000-01-05 Paul Eggert <eggert@twinsun.com>
+
+ Minor code cleanup.
+ * src/sleep.c (clock_get_realtime): Return argument, for convenience.
+ (main): Use this to simplify main sleep loop.
+
+2000-01-05 Jim Meyering <meyering@ascend.com>
+
+ Some systems lack a definition of struct timespec (AIX, Ultrix)
+ Reported by Christian Krackowizer.
+ * lib/Makefile.am (noinst_HEADERS): Add nanosleep.h.
+ * lib/nanosleep.h: New file.
+ * lib/nanosleep.c: Include it.
+ Don't include time.h or sys/time.h here.
+ * src/sleep.c: Include it.
+ (AUTHORS): Add Paul Eggert.
+
+2000-01-04 Jim Meyering <meyering@ascend.com>
+
+ * lib/nanosleep.c: Include both time.h and sys/time.h only
+ #if TIME_WITH_SYS_TIME.
+
+2000-01-03 Paul Eggert <eggert@twinsun.com>
+
+ Fix some porting and rounding problems with the new `sleep' code.
+
+ * configure.in (AC_CHECK_HEADERS): Add fenv.h.
+ (FESETROUND_LIBM): New macro.
+
+ * lib/xstrtod.c: Add #pragma STDC FENV_ACCESS ON if C99.
+ * src/sleep.c: Likewise.
+
+ * src/Makefile.am (sleep_LDADD, sleep_DEPENDENCIES): New macros.
+
+ * src/sleep.c (<fenv.h>): Include if available.
+ (main): Always round floating-point interval calculations upwards,
+ as we must sleep for at least the specified time.
+ Do the right thing with NaNs.
+
+ (main): Sleep forever if the time calculations overflow.
+ (apply_suffix): Don't assert that *s <= TIME_T_MAX.
+
+ (clock_get_realtime): Fix typo; address was improperly taken.
+
+2000-01-02 Jim Meyering <meyering@ascend.com>
+
+ * Version 2.0b.
+
+ * lib/Makefile.in: Regenerate.
+
+ * Version 2.0a.
+
+1999-12-26 Jim Meyering <meyering@ascend.com>
+
+ * lib/nanosleep.c (nanosleep): New file.
+
+1999-12-23 Jim Meyering <meyering@ascend.com>
+
+ * src/sleep.c (USE_CLOCK_GETTIME): Define.
+ [USE_CLOCK_GETTIME]: Include sys/time.h.
+ (timespec_subtract): New function.
+ (clock_get_realtime): New function.
+ (sighandler): Remove function.
+ (main): Reimplement again, using nanosleep and clock_gettime.
+
+ * configure.in: Remove check for gettimeofday.
+ Now it's in m4/jm-macros.m4
+
+ * man/Makefile.summ: Remove now-unused summaries.
+
+1999-12-22 Jim Meyering <meyering@ascend.com>
+
+ * lib/getdate.y (get_date): Fix typo in time_t overflow test.
+ From Michael Stone.
+
+ * tests/date/Test.pm (regress-1): New test for the above.
+
+1999-12-18 Jim Meyering <meyering@ascend.com>
+
+ * src/who.c (print_entry): Correct do_lookup test so that who
+ prints whatever host information it has, even without --lookup.
+ Reported by Bill Peters.
+
+1999-12-12 Jim Meyering <meyering@ascend.com>
+
+ Move 120+ lines of stat.h-related macros from system.h (not shared)
+ to sys2.h, which is shared between fileutils, sh-utils, textutils.
+ * src/system.h: Move them from here...
+ * src/sys2.h: ... to here.
+
+1999-11-27 Jim Meyering <meyering@ascend.com>
+
+ Rewrite to allow fractional seconds and to handle SIGCONT.
+ * src/sleep.c (main): Rewrite.
+ (sighandler): New function.
+ (apply_suffix): New function.
+ (timeval_subtract): New function.
+ Reported by Raul Miller.
+
+ * src/sleep.c (argdecode): Move definition to precede use.
+ Remove prototype.
+ (usage): Add elipses to show that sleep allows more than one argument.
+
+1999-11-22 Jim Meyering <meyering@ascend.com>
+
+ * lib/Makefile.am (DISTCLEANFILES): Add lstat.c and stat.c.
+
+1999-11-09 Jim Meyering <meyering@ascend.com>
+
+ * src/expr.c (NEW): Undefine to avoid warning about redefinition.
+ (NEW): Redefine in terms of XMALLOC.
+
+ * lib/xalloc.h (XMALLOC): Correct misnamed macro parameter name:
+ s/N_bytes/N_items/.
+ (XCALLOC): Likewise.
+ (XREALLOC): Likewise.
+
+1999-11-05 Jim Meyering <meyering@ascend.com>
+
+ * src/system.h: Use HAVE_STRUCT_STAT_ST_BLOCKS, not deprecated
+ HAVE_ST_BLOCKS.
+
+ * configure.in: Move some type/header/member tests into
+ m4/jm-macros.m4 (jm_CHECK_ALL_TYPES) so they are shared by all of
+ fileutils, textutils, and sh-utils.
+
+1999-11-01 Jim Meyering <meyering@ascend.com>
+
+ * lib/Makefile.am (MAINTAINERCLEANFILES): Set to $(BUILT_SOURCES).
+
+1999-10-07 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (ALL_LINGUAS): Add Japanese (ja).
+
+1999-10-04 Jim Meyering <meyering@ascend.com>
+
+ * depcomp: New file, for automake's new dependency support.
+ * missing: New version, from automake's user-dep-gen-branch.
+
+1999-09-28 Jim Meyering <meyering@ascend.com>
+
+ * src/system.h: Update from the system.h from fileutils.
+ Now they're finally almost identical...
+
+1999-09-09 Jim Meyering <meyering@ascend.com>
+
+ * src/Makefile.am (EXTRAdir): Remove unused variable.
+ (installed_su): Use `$(DESTDIR)$(bindir)' in place of $(bindir).
+ (install-exec-local): Likewise.
+ (.sh): Substitute `$(bindir)' rather than @bindir@.
+ Based on a patch from Andreas Schwab.
+
+1999-09-08 Andreas Schwab <schwab@suse.de>
+
+ * tests/nice: Instead of failing, exit with 77 if running niced.
+
+1999-09-08 Jim Meyering <meyering@ascend.com>
+
+ * src/su.c: Remove declaration of xstrdup.
+
+1999-09-02 Jim Meyering <meyering@ascend.com>
+
+ * src/expr.c: Remove xstrdup declaration.
+ * src/date.c: Likewise.
+ * src/pathchk.c: Likewise.
+ * src/su.c: Likewise.
+
+1999-08-29 Jim Meyering <meyering@ascend.com>
+
+ * tests/nice: Use `nice' instead of $nice.
+ * tests/Makefile.am (TESTS_ENVIRONMENT): Prepend ../src to PATH so
+ the above works.
+
+ * src/env.c (main): Call exit explicitly to avoid warning from gcc.
+ * src/nice.c (main): Likewise.
+ Include "xstrtol.h".
+ (isinteger): Remove function and prototype.
+ (main): Use xstrtol in place of atoi. Remove associated FIXME comments.
+
+ * configure.in (AC_YACC): Remove use, now that we require bison.
+
+ * tests/date/Test.pm (test_vector): Add a test for the Risks-reported
+ problem with syntax like this: Nov 11 1996.
+
+ * lib/getdate.y (get_date): Rename outermost local `probe' to `quarter'.
+ (get_date): Rename latter local `tm' to probe_tm.
+
+ * lib/getdate.y (relative_time_table): Change `type' of `THIS' from
+ tMINUTE_UNIT to tUNUMBER. From Urs Thuermann.
+ * tests/date/Test.pm (test_vector): Add tests for use of `this'.
+
+1999-08-25 Jim Meyering <meyering@ascend.com>
+
+ * man/Makefile.summ (seq-summary): Define.
+ * man/Makefile.am (man_MANS): Add seq.1.
+ Reported by Dirk-Jan Faber.
+
+1999-08-23 Jim Meyering <meyering@ascend.com>
+
+ * src/pathchk.c (longopts): Restore accidentally-removed entry for
+ `--portability' long option.
+ * src/chroot.c (usage): Correct --help message.
+ * src/hostid.c (usage): Likewise.
+ * src/hostname.c (usage): Likewise.
+ * src/logname.c (usage): Likewise.
+ * src/nice.c (usage): Likewise.
+ * src/printenv.c (usage): Likewise.
+ * src/sleep.c (usage): Likewise.
+ * src/stty.c (usage): Likewise.
+ Reported by Daniel Bergstrom.
+
+1999-08-22 Jim Meyering <meyering@ascend.com>
+
+ * src/sys2.h (ATTRIBUTE_NORETURN): Define.
+ * src/test.c: Use ATTRIBUTE_NORETURN instead of NO_RETURN_ATTRIBUTE.
+ (NO_RETURN_ATTRIBUTE): Remove definition.
+
+ * src/su.c (run_shell): Declare with gcc's noreturn attribute.
+ Use an explicit exit(1) rather than doing that through error.
+
+ * src/sys2.h (IF_LINT): Define new macro.
+ * src/date.c (batch_convert): Use IF_LINT macro instead of #ifdef lint.
+ * src/pathchk.c (validate_path): Likewise.
+
+1999-08-21 Jim Meyering <meyering@ascend.com>
+
+ * src/hostid.c (usage): Remove the ` [-v]' from the Usage: line.
+ Reported by Daniel Bergstrom.
+
+1999-08-17 Jim Meyering <meyering@ascend.com>
+
+ * tests/stty/input-tty: New file, containing code factored out of
+ the two test scripts. Mention `at' and `batch' in addition to `rsh'.
+ * tests/stty/basic-1: Source it.
+ * tests/stty/row-col-1: Source it.
+ * tests/stty/Makefile.am (EXTRA_DIST): Add input-tty.
+
+1999-08-14 Jim Meyering <meyering@ascend.com>
+
+ * Version 2.0.
+
+ * tests/stty/basic-1: Fail-77 if stdin is not a tty.
+ * tests/stty/row-col-1: Likewise.
+ Suggestion from Volker Borchert.
+
+1999-08-07 Jim Meyering <meyering@ascend.com>
+
+ * Version 1.16m.
+
+ * Makefile.maint (po-check): New rule.
+ (alpha): Make it.
+
+ * po/POTFILES.in: Add the following from lib/: argmatch.c, closeout.c,
+ error.c, getopt.c, human.c, long-options.c, version-etc.c, xmalloc.c.
+ Add these from src/: false.c, hostid.c, true.c.
+
+ * lib/getdate.y (OtherTable[]): Use tDAY_UNIT for `tomorrow,'
+ `yesterday,' `today,' and `now' rather than tMINUTE_UNIT. Of course
+ with correspondingly smaller numbers for tomorrow and yesterday.
+ This change does not change the way the code works, since the
+ grammar rules for the two symbols are analogous.
+ From Tadayoshi Funaba.
+
+1999-08-04 Jim Meyering <meyering@ascend.com>
+
+ false and true once again generate --help and --version output
+ * src/true.c: Honor --help and --version once again, bug ignore
+ those options when POSIXLY_CORRECT is set.
+ * src/false.c: Fail even for --help and --version.
+ * src/Makefile.am (false.c): Generate automatically from true.c.
+ (BUILT_SOURCES): Add false.c.
+ * man/Makefile.am (EXTRA_DIST): Remove false.1in and true.1in.
+ * man/Makefile.summ: Remove the rules added on 1999-07-31.
+ * man/Makefile.maint: Likewise.
+ * man/true.1in: Removed.
+ * man/false.1in: Removed.
+
+ * configure.in: Remove getline-testing code. Now it's in m4/.
+
+1999-08-01 Jim Meyering <meyering@ascend.com>
+
+ * src/date.c (usage): Correct description of %S; (00..60, not 00..61).
+ From Ken Pizzini.
+
+1999-08-01 Paul Eggert <eggert@twinsun.com>
+
+ * configure.in (AC_SYS_LARGEFILE): Renamed from AC_LFS.
+
+1999-07-31 Jim Meyering <meyering@ascend.com>
+
+ * Version 1.16l.
+
+ false and true are now C programs rather than shell scripts
+ * src/true.c: New file.
+ * src/false.c: New file.
+ * src/true.sh: Removed.
+ * src/false.sh: Removed.
+ * src/Makefile.am (bin_PROGRAMS): Add true and false.
+ (bin_SCRIPTS): Remove true and false.
+ (EXTRA_DIST): Remove false.sh and true.sh.
+ * man/true.1in: New file.
+ * man/false.1in: New file.
+ * man/Makefile.am (EXTRA_DIST): Remove extra (shadowed) assignment.
+ (EXTRA_DIST): Add false.1in and true.1in.
+ * man/Makefile.maint (helpful-men): Define.
+ * man/Makefile.summ ($(helpless-men)): New manual-generating rules to
+ accommodate the fact that false and true no longer accept --help.
+ * doc/sh-utils.texi: Include a couple of sentences from the
+ truefalse package.
+ Prompted by Christi Alice Scarborough's truefalse package.
+
+1999-07-30 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (ALL_LINGUAS): Add Brazilian Portuguese (pt_BR).
+
+1999-07-26 Jim Meyering <meyering@ascend.com>
+
+ * src/tee.c (tee): Convert from open/fds to using fopen/streams for
+ output, in preparation for addition of new compression option.
+
+1999-07-21 Jim Meyering <meyering@ascend.com>
+
+ * tests/stty/basic-1 (options): Avoid Solaris' broken /usr/ucb/tr by
+ removing offending use of tr altogether and removing hyphens with sed.
+ Reported by Kaveh Ghazi.
+
+1999-06-01 Volker Borchert <bt@teknon.de>
+
+ * tests/Makefile.am: Make envvar-check depend on check-recursive rather
+ than on `check' so that its tests are performed before any real tests.
+
+1999-07-15 Jim Meyering <meyering@ascend.com>
+
+ * src/false.sh: Always exit unsuccessfully, even with
+ --help and --version. Suggested by Felix Lee.
+
+1999-07-12 Jim Meyering <meyering@ascend.com>
+
+ * src/sys2.h (mempcpy): Define only if not already defined.
+ Reported by Collin Rogowski.
+
+1999-05-27 Volker Borchert <bt@teknon.de>
+
+ * tests/Makefile.am: Qualify .env-warn with $(srcdir)/ prefix.
+
+1999-05-25 Jim Meyering <meyering@ascend.com>
+
+ * tests/stty/basic-1: Fix non-portable use of `tr' that caused
+ this test to fail when run with a SysV-style tr.
+ Based on a patch from Kaveh Ghazi.
+
+1999-05-21 Jim Meyering <meyering@ascend.com>
+
+ * Version 1.16k.
+ * configuration fixes: see m4/ChangeLog.
+
+1999-05-16 Jim Meyering <meyering@ascend.com>
+
+ * Version 1.16j.
+
+ * configure.in (AC_SEARCH_LIBS): Set LIB_CRYPT to $ac_cv_search_crypt,
+ to go along with the new macro in m4/search-libs.m4.
+
+1999-05-14 Jim Meyering <meyering@ascend.com>
+
+ * lib/getugroups.c (getugroups): Don't dereference a null pointer when
+ running `id USER' for some USER that is listed on the RHS in /etc/group.
+ From Sander van Malssen.
+ Add some curly braces, use STREQ, reverse the sense of a test
+ and use `continue' to save a level of nesting.
+
+ * tests/Makefile.am (envvar-check): Renamed from check-local.
+ (check): Depend on envvar-check so the envvar check is performed
+ before all other tests. Reported by Volker Borchert.
+ * tests/.env-warn: Use `%%' place-holder that Makefile.am rule expects,
+ so CDPATH is mentioned in the message. Reported by Volker Borchert.
+
+1999-05-10 Jim Meyering <meyering@ascend.com>
+
+ * src/uptime.c (AUTHORS): add Kaveh.
+
+ Expand each `&' character in the gecos field.
+ * src/pinky.c (count_ampersands): New function.
+ (create_fullname): New function.
+ (print_entry): Use create_fullname here.
+ (print_long_entry): Use it here, too.
+ From Kaveh Ghazi.
+
+1999-05-09 Jim Meyering <meyering@ascend.com>
+
+ * lib/regex.c: Update from libc.
+
+ * Version 1.16i.
+
+ * configure.in: Clean up checks for libraries so that we don't add
+ -lshadow unless necessary. Reported by Joseph S. Myers.
+
+1999-05-05 Jim Meyering <meyering@ascend.com>
+
+ Add definitions to help read utmpx on systems with utmpname.
+ * lib/readutmp.h (UTMP_NAME_FUNCTION): Define.
+ (SET_UTMP_ENT): Likewise.
+ (GET_UTMP_ENT): Likewise.
+ (END_UTMP_ENT): Likewise.
+ * lib/readutmp.c (read_utmp): Use the new definitions.
+ From Kaveh Ghazi.
+
+ * src/date.c (show_date): Change an automatic aggregate initializer
+ to be a static one. For SunOS4's cc. From Kaveh Ghazi.
+
+1999-05-03 Jim Meyering <meyering@ascend.com>
+
+ * configure.in: Remove duplicate use of jm_FUNC_GNU_STRFTIME.
+ Kaveh Ghazi reported that strftime.o was listed twice in the command
+ to build libsu.a.
+
+1999-05-02 Jim Meyering <meyering@ascend.com>
+
+ * Version 1.16h.
+
+ * src/hostname.c (main): Give a better diagnostic when we fail to
+ set the hostname.
+
+ * man/Makefile.summ (hostid-summary): Use correct description.
+ Reported by Joseph S. Myers.
+
+ * lib/readutmp.c (read_utmp): Ignore the return value from utmpname.
+
+1999-04-30 Jim Meyering <meyering@ascend.com>
+
+ * src/dirname.c (main): Manually handle `--', since we no longer
+ call getopt. Reported by Joseph S. Myers.
+ * src/basename.c (main): Likewise.
+ * src/factor.c (main): Likewise.
+
+1999-04-25 Jim Meyering <meyering@ascend.com>
+
+ * src/seq.c (main): Handle the case in which seq is given no args.
+ Reported by John Gotts.
+ (main): Revert last change.
+ Instead, loop on `optind < argc' to protect use of argv[optind].
+
+ * lib/human.c <inttypes.h>: Don't include it here.
+ * lib/human.h <inttypes.h>: Include it here instead.
+ <config.h>: Include it here too.
+ Reported by Andreas Jaeger.
+
+ * src/nice.c [NDEBUG]: Remove definition.
+ Reported by Andreas Jaeger.
+
+1999-04-24 Jim Meyering <meyering@ascend.com>
+
+ * src/who.c (print_entry): Use `#if', not `#ifdef HAVE_UT_HOST'.
+
+ * Version 1.16g.
+
+ * configure.in: Use AC_CANONICAL_HOST.
+
+1999-04-20 Jim Meyering <meyering@ascend.com>
+
+ Update factor to use `uintmax_t'.
+ * src/factor.c <xstrtol.h>: Include this, not xstrtoul.h.
+ <human.h>: Include.
+ Use uintmax_t in place of unsigned long.
+ Use human_readable to convert to strings for printing.
+ * lib/xstrtoumax.c: New file.
+ * lib/human.c: New file.
+ * lib/human.h: New file.
+ * lib/Makefile.am (libsu_a_SOURCES): Add human.c and xstrtoumax.c.
+ (noinst_HEADERS): Add human.h. Remove xstrtoul.h.
+
+1999-04-19 Jim Meyering <meyering@ascend.com>
+
+ * src/seq.c (main): Restore `+' in getopt_long string. Otherwise,
+ commands like `seq 10 -2 0' wouldn't work. From Andreas Schwab.
+ * tests/seq/basic: Add tests for that.
+
+1999-04-17 Jim Meyering <meyering@ascend.com>
+
+ * tests/seq: New directory and basic tests.
+ * tests/Makefile.am (SUBDIRS): Add seq.
+ * configure.in (AC_OUTPUT): Add tests/seq/Makefile.
+
+1999-04-17 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * configure.in: Check for localeconv.
+
+ * src/seq.c (decimal_point): New variable.
+ (main): Set it to locale's decimal point. Fix recognition of
+ negative number as argument.
+ (get_width_format): Correctly handle a negative min_val or step
+ when computing fraction width. Use decimal_point.
+
+1999-04-08 Jim Meyering <meyering@ascend.com>
+
+ 1999-03-25 James R. Van Zandt <jrv@vanzandt.mv.com>
+ * doc/sh-utils.texi (Options for date): Document --iso-8601
+ * src/date.c: Accept new option: --iso-8601.
+ * lib/Makefile.am (libsu_a_SOURCES): Add argmatch.c and quotearg.c.
+ (noinst_HEADERS): Add argmatch.h and quotearg.h.
+ * lib/argmatch.c: New file.
+ * lib/argmatch.h: New file.
+ * lib/quotearg.c: New file.
+ * lib/quotearg.h: New file.
+
+1999-03-30 Jim Meyering <meyering@ascend.com>
+
+ * src/sys2.h: Include "closeout.h" and "version-etc.h"
+
+ * src/*.c (PROGRAM_NAME, AUTHORS): Define and use.
+
+ * src/date.c: No longer include long-options.h.
+ [long_options]: Add entries for --help and --version.
+ Remove parse_long_options call.
+ (main) [getopt switch]: Add a case for each of --help and --version.
+ * src/env.c: Likewise.
+ * src/id.c: Likewise.
+ * src/pinky.c: Likewise.
+ * src/seq.c: Likewise.
+ * src/su.c: Likewise.
+ * src/sys2.h: Likewise.
+ * src/tee.c: Likewise.
+ * src/tty.c: Likewise.
+ * src/uname.c: Likewise.
+ * src/who.c: Likewise.
+
+1999-03-29 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (GNU_PACKAGE): Remove related code -- now it's in
+ the catch-all for shared autoconf code, m4/jm-macros.m4.
+ (jm_CHECK_ALL_TYPES): Remove explicit AC_TYPE_* macros and use
+ this instead.
+
+1999-03-28 Jim Meyering <meyering@ascend.com>
+
+ * src/test.c (PROGRAM_NAME): Rename from COMMAND_NAME.
+
+1999-03-28 Paul Eggert <eggert@twinsun.com>
+
+ * lib/getdate.y (get_date): Reuse tm_isdst of first localtime
+ call; this is an improvement on a bug fix suggested by
+ martin@dresden.nacamar.de. Do not assume that localtime and
+ gmtime return non-null.
+
+1999-03-27 Jim Meyering <meyering@ascend.com>
+
+ * src/false.sh (usage): Change `[OPTION]...' to `[OPTION]' to show
+ that only one of --help or --version is recognized at a time.
+ Reported by Meelis Roos.
+ * src/true.sh: Likewise.
+
+ * src/id.c (print_user): Use uid_t instead of int.
+ (print_group): Use gid_t instead of int.
+ From John Bley.
+
+1999-03-26 Jim Meyering <meyering@ascend.com>
+
+ * lib/Makefile.am (libfu_a_SOURCES): Add version-etc.c.
+ (noinst_HEADERS): Add version-etc.h.
+
+1999-03-20 Jim Meyering <meyering@ascend.com>
+
+ * src/nohup.sh: Don't modify PATH just to get GNU nice. Instead,
+ try to find an absolute path for GNU nice. From Bruno Haible.
+
+1999-03-19 Jim Meyering <meyering@ascend.com>
+
+ * configure.in: Use new macro, jm_WINSIZE_IN_PTEM, instead of
+ open-coding it.
+
+1999-03-17 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (ALL_LINGUAS): Add Italian (it) and Slovak (sk).
+
+1999-03-13 Jim Meyering <meyering@ascend.com>
+
+ * lib/basename.c (base_name): If NAME is all slashes, return `/' (in
+ conformance with the single unix spec). Reported by Peter Moulder.
+
+1999-03-10 Jim Meyering <meyering@ascend.com>
+
+ * src/uptime.c: Declare getloadavg so I can build with -Werror.
+
+ * tests/stty/basic-1: Skip failing tests: parenb, -parenb, -cread.
+
+ * lib/canon-host.c (canon_host): Don't use he->h_addr directly.
+ Based on a patch from Savochkin Andrey Vladimirovich.
+
+1999-03-09 Jim Meyering <meyering@ascend.com>
+
+ Running `id USER' doesn't report any groups if there is no entry
+ for USER in /etc/group. Always include the one from /etc/passwd.
+ * src/id.c (xgetgroups): Take new parameter, gid, and pass
+ it to getugroups.
+ (print_group_list): Call getpwuid and adjust calls to xgetgroups
+ to include new parameter.
+ * lib/getugroups.c (getugroups): Take new parameter, gid.
+ Add gid to the list of groups.
+ From Ulrich Drepper.
+ * lib/getgroups.c (getgroups): Protoize.
+
+1999-03-08 Jim Meyering <meyering@ascend.com>
+
+ * tests/basename: New directory and tests.
+ * tests/Makefile.am (SUBDIRS): Add basename.
+ * configure.in (AC_OUTPUT): Add tests/basename/Makefile.
+
+1999-03-06 Jim Meyering <meyering@ascend.com>
+
+ * src/date.c (batch_convert): Use a `%s' format in error call,
+ in case the argument string contains a `%'.
+
+ * man/Makefile.am (man_MANS): Add pinky.1.
+ * man/Makefile.summ (pinky-summary): Define.
+
+ * src/date.c: Include long-options.h.
+ [long_options]: Remove the "help" and "version" entries.
+ Remove declarations of show_help and show_version.
+ (main): Use parse_long_options, including author name(s).
+ Remove the show_version and show_help blocks.
+ * src/env.c: Likewise.
+ * src/id.c: Likewise.
+ * src/logname.c: Likewise.
+ * src/pathchk.c: Likewise.
+ * src/pinky.c: Likewise.
+ * src/printenv.c: Likewise.
+ * src/seq.c: Likewise.
+ * src/sleep.c: Likewise.
+ * src/su.c: Likewise.
+ * src/tee.c: Likewise.
+ * src/tty.c: Likewise.
+ * src/uname.c: Likewise.
+ * src/uptime.c: Likewise.
+ * src/users.c: Likewise.
+ * src/who.c: Likewise.
+ * src/whoami.c: Likewise.
+
+1999-03-04 Jim Meyering <meyering@ascend.com>
+
+ * src/basename.c (main): Include author name argument in call to
+ parse_long_options.
+ * src/chroot.c: Likewise.
+ * src/dirname.c: Likewise.
+ * src/echo.c: Likewise.
+ * src/expr.c: Likewise.
+ * src/factor.c: Likewise.
+ * src/hostid.c: Likewise.
+ * src/hostname.c: Likewise.
+ * src/nice.c: Likewise.
+ * src/printf.c: Likewise.
+ * src/pwd.c: Likewise.
+ * src/stty.c: Likewise.
+ * src/test.c: Likewise.
+ * src/yes.c: Likewise.
+
+1999-03-02 Jim Meyering <meyering@ascend.com>
+
+ * lib/readutmp.c (read_utmp) [HAVE_UTMPNAME]: Rewrite.
+
+1999-02-15 Jim Meyering <meyering@ascend.com>
+
+ * src/stty.c (main): #ifdef-out unreachable code.
+
+ * src/pinky.c (usage): Add a one-line description.
+ Suggestion from Karl Berry.
+
+1999-02-08 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (ALL_LINGUAS): Add Czech (cs).
+
+1999-02-07 Jim Meyering <meyering@ascend.com>
+
+ * tests/stty/basic-1: Run all tests even if some fail.
+ Don't use trap.
+
+ * tests/stty/basic-1: Use `stty', not $STTY.
+ Fix typo in VERBOSE code: s/\$RM/stty/.
+ * tests/stty/row-col-1: Likewise.
+
+ * tests/stty/Makefile.am (TESTS_ENVIRONMENT): Set PATH, not STTY.
+
+ Include stdio.h before defining `_unlocked' macros.
+ * src/pinky.c: Include stdio.h.
+ * src/uptime.c: Likewise.
+ * src/users.c: Likewise.
+ * src/who.c: Likewise.
+ * lib/readutmp.c: Include stdio.h here...
+ * lib/readutmp.h: ...not here.
+ From Ulrich Drepper.
+
+ * Version 1.16f.
+
+ * Makefile.maint (my-distcheck): Don't depend on dist, now that this
+ is hooked up to the distcheck rule.
+ * Makefile.am (distcheck-hook): New target and rule -- link to shared
+ rule, my-distcheck, in Makefile.maint.
+
+ * configure.in (jm_FUNC_GETGROUPS): Move the test into a new file,
+ group-member.m4, and just use this new macro.
+
+1999-01-31 Jim Meyering <meyering@ascend.com>
+
+ * doc/sh-utils.texi: Wrap the @top node in @ifnottex instead of
+ @ifinfo so `makeinfo --html ...' works. From Karl Berry.
+
+ * src/chroot.c (main): Call chdir ("/") after chroot.
+ Suggestion from James Youngman.
+
+ * src/uptime.c (print_uptime): Use the C numeric locale for sscanf
+ of /proc/uptime data, then restore.
+ * lib/getloadavg.c: Include locale.h.
+ [!HAVE_SETLOCALE]: Define-away setlocale.
+ (getloadavg): Ensure the sscanf of /proc/getloadavg data uses the
+ `C' numeric locale. Restore afterwards.
+ Based on a suggestion from Thomas Quinot.
+
+ * lib/strtod.c: Protoize.
+
+1999-01-30 Jim Meyering <meyering@ascend.com>
+
+ * acconfig.h: Remove lots of now-unnecessary #undefs.
+
+ * configure.in: Require autoconf 2.13.
+
+ * doc/Makefile.am (DISTCLEANFILES): Arrange to remove sh-utils.fl.
+
+ * configure.in (ALL_LINGUAS): Add Greek (el).
+ * po/el.po: New file.
+
+1999-01-25 Jim Meyering <meyering@ascend.com>
+
+ * src/date.c (usage): Remove static attribute.
+ Move function be the first in the file.
+ * src/env.c: Likewise.
+ * src/id.c: Likewise.
+ * src/nice.c: Likewise.
+ * src/pathchk.c: Likewise.
+ * src/tty.c: Likewise.
+ * src/uname.c: Likewise.
+
+ * src/*.c (usage): Remove static attribute.
+
+1999-01-14 Jim Meyering <meyering@ascend.com>
+
+ * src/date.c: Include closeout.h.
+ (main): Use close_stdout_status.
+ * src/printenv.c: Likewise.
+ * src/tty.c: Likewise.
+
+ * src/hostid.c: Include closeout.h.
+ (main): Use close_stdout.
+ * src/tee.c: Likewise.
+
+1999-01-10 Jim Meyering <meyering@ascend.com>
+
+ * src/Makefile.am (pinky_LDADD, pinky_DEPENDENCIES, who_LDADD,
+ who_DEPENDENCIES): Remove definitions.
+
+ * lib/Makefile.am (BUILT_SOURCES): Add lstat.c and stat.c.
+ (lstat.c, stat.c): New rules.
+
+ * lib/canon-host.c (main) [TEST_CANON_HOST]: Add a simple test driver.
+
+ * configure.in: Require autoconf-2.13.
+ Use new AC_SEARCH_LIBS to see if we need nsl or inet libraries
+ to resolve gethostbyname.
+
+1998-12-22 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (ALL_LINGUAS): Add chinese (zh).
+
+1998-12-13 Jim Meyering <meyering@ascend.com>
+
+ * lib/putenv.c: Don't include stdlib.h and declare malloc and free.
+ This works around Solaris 5.7's conflicting prototype.
+ Reported by Karl Berry.
+
+ * lib/Makefile.am (lstat.c): Add rule to generate this from xstat.in.
+ (stat.c): Likewise.
+ (EXTRA_DIST): Add xstat.in.
+ * lib/stat.c: Remove file.
+ * lib/lstat.c: Remove file.
+ * lib/xstat.in (xstat@): New file.
+
+1998-12-10 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * src/date.c (main): Arrange to exit unsuccessfully when stime fails.
+
+1998-12-07 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (ALL_LINGUAS): Add Russian (ru).
+
+1998-10-31 Jim Meyering <meyering@ascend.com>
+
+ * tests/Makefile.am (EXTRA_DIST): Add Fetish.pm.
+ * tests/Fetish.pm: New file.
+
+ * tests/factor/Makefile.am: Rewrite to use new testing framework.
+ * tests/factor/Test.pm: Remove file.
+ * tests/factor/factor-tests: Remove file.
+ * tests/factor/basic: New file (rewrite of Test.pm).
+
+ * acconfig.h (stat): New #undef.
+
+1998-10-03 Jim Meyering <meyering@ascend.com>
+
+ * man/Makefile.am: Switch to using help2man.
+ (EXTRA_DIST): Add Makefile.summ.
+
+ * man/help2man: Invoke program with --manhelp option only if
+ --name=STRING not specified. Otherwise, this would fail with `yes'.
+ * man/Makefile.summ: New file.
+ * man/Makefile.maint: Include it.
+ * man/help2man: New file.
+ * man/GNUmakefile: New file.
+ * man/Makefile.maint: New file.
+ * man/*.x: New files.
+ * man/*.1: Remove files.
+
+ * src/Makefile.am (install-exec-local): Change comments to use `##'
+ to avoid automake warning.
+
+ * lib/Makefile.am (noinst_HEADERS): s/posixtm.c/posixtm.h/
+ (libsu_a_SOURCES): s/posixtm.y/posixtm.y/
+ (libsu_a_SOURCES): Remove getdate.c. Add fnmatch.h.
+
+ * src/date.c (main): Update to use new version of posixtime.
+ * lib/posixtm.c: New file.
+ * lib/posixtm.h: New file.
+ * lib/posixtm.y: Remove file.
+
+ * lib/fnmatch.c: New file. (unused)
+ * lib/fnmatch.h: New file. (unused)
+
+1998-09-27 Jim Meyering <meyering@ascend.com>
+
+ * src/seq.c (main): Decrement optind when we find an `option' that
+ looks like -N. Reported by Clark Morgan.
+
+1998-09-26 Jim Meyering <meyering@ascend.com>
+
+ * lib/xstrtol.c (__xstrtol) [STRING_TO_UNSIGNED]: Return
+ LONGINT_INVALID for strings that begin with `-'.
+
+ * tests/factor/Test.pm: Add a test for negative argument.
+ Tweak postprocessing framework.
+
+1998-09-19 Jim Meyering <meyering@ascend.com>
+
+ * src/stty.c (main): Revamp option processing, again.
+ stty couldn't parse some of its options.
+ * tests/stty/basic-1: New test.
+ * tests/stty/Makefile.am (TESTS): Add basic-1.
+
+1998-08-29 Jim Meyering <meyering@ascend.com>
+
+ * src/su.c (longopts): Use corresponding short-option character
+ in place of `1', and `NULL' in place of pointer in initialization.
+
+1998-08-11 Jim Meyering <meyering@ascend.com>
+
+ * src/uptime.c (usage): Correct description. Reported by John Murphy.
+
+1998-07-16 Jim Meyering <meyering@ascend.com>
+
+ * lib/Makefile.am (noinst_HEADERS): Add lchown.h.
+ * lib/lchown.h: New file, just to define ENOSYS on systems that lack it.
+ * lib/lchown.c: Include lchown.h.
+
+1998-07-15 Jim Meyering <meyering@ascend.com>
+
+ * src/seq.c (check_format): Add `5' to the list of digits.
+ Reported by Donni Erpel.
+
+1998-07-12 Jim Meyering <meyering@ascend.com>
+
+ * tests/test: New directory and tests.
+ * tests/Makefile.am (SUBDIRS): Add test.
+ * configure.in (AC_OUTPUT): Add tests/test/Makefile.
+
+1998-07-04 Jim Meyering <meyering@ascend.com>
+
+ * lib/Makefile.am (libsu_a_SOURCES): Remove regex.c, now that it's
+ automatically discovered by automake.
+ (noinst_HEADERS): Remove unused safe-read.h.
+
+ * src/Makefile.am (CLEANFILES): Put $(SCRIPTS) here rather than in
+ DISTCLEANFILES.
+ (CLEANFILES): Add su, since we build it unconditionally, yet it's
+ never put in @OPTIONAL_BIN_PROGS@.
+
+1998-06-29 Jim Meyering <meyering@ascend.com>
+
+ * src/uptime.c: Include system.h only after error.h and readutmp.h
+ so we don't get redefinition warnings about getc, etc.
+ * src/who.c: Likewise.
+ * src/users.c: Likewise.
+
+1998-06-28 Jim Meyering <meyering@ascend.com>
+
+ * src/sys2.h: Add macro definitions for GNU libc *_unlocked wrappers.
+
+1998-06-06 Jim Meyering <meyering@ascend.com>
+
+ * src/test.c (unary_operator): Fail if the operand to -t is not valid.
+ (posixtest): Treat `test -t' the same as `test -t 1'.
+
+1998-05-26 Jim Meyering <meyering@ascend.com>
+
+ * src/test.c (two_arguments): Don't test argv[pos][2] if it's
+ past end of string.
+
+1998-05-25 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (_GNU_SOURCE): AC_DEFINE it here.
+ * acconfig.h (_GNU_SOURCE): Remove definition from @TOP@ section.
+ [!_GNU_SOURCE]: Add #undef instead.
+
+1998-05-16 Jim Meyering <meyering@ascend.com>
+
+ * lib/readutmp.c (read_utmp): Add variant for systems that have
+ the utmpname function.
+ Ansideclify.
+ * configure.in: Check for utmpname.
+
+ * configure.in (jm_MACROS): New wrapper macro.
+ Remove uses of most jm_* macros.
+
+ * acconfig.h (chown): Add undef.
+ (D_INO_IN_DIRENT): Likewise.
+ (D_TYPE_IN_DIRENT): Likewise.
+ (ssize_t): Likewise.
+
+ * lib/Makefile.am (EXTRA_DIST): Remove. Automake groks the `LIBOBJS='
+ lines from the m4/*.m4 macros, so the hack of including some
+ custom-replaced C source file names here is no longer needed.
+
+1998-05-03 Jim Meyering <meyering@ascend.com>
+
+ * po/: Update from gettext-0.10.35.
+ * intl/: Likewise.
+ * configure.in: Remove use of AC_LINK_FILES.
+ (AC_OUTPUT): Remove po/Makefile-generating sed command.
+
+1998-05-02 Jim Meyering <meyering@ascend.com>
+
+ * src/seq.c (check_format): Use ISDIGIT, not isdigit.
+
+1998-04-26 Jim Meyering <meyering@ascend.com>
+
+ * configure.in: Use jm_ASSERT.
+ * acconfig.h: Add NDEBUG.
+
+1998-04-13 Jim Meyering <meyering@eng.ascend.com>
+
+ * lib/Makefile.am (noinst_HEADERS): Add safe-read.h.
+
+1998-04-09 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (AM_MAINTAINER_MODE): Remove it.
+ No longer use AC_PATH_PROG to check for perl.
+ (jm_PERL): Use this instead.
+
+1998-04-04 Jim Meyering <meyering@ascend.com>
+
+ * lib/readutmp.h (PARAMS): Define.
+
+ * tests/Makefile.am (SUBDIRS): Add stty.
+ * tests/stty/row-col-1: New file.
+ * tests/stty: New directory.
+ * configure.in (AC_OUTPUT): Add tests/stty/Makefile.
+
+ * src/stty.c: Use STREQ in place of strcmp everywhere.
+ (valid_options): Indent.
+ Parenthesize assignment in while expr.
+ (main): s/case 'f':/case 'F':/
+ Tweak error messages to make them consistent.
+ Remove #if-0'd block.
+ Move dcl of `fdflags' into scope where it's used.
+ Remove dcl of unused `cp'.
+ Use "%s", not device_name, as the format string, in case the
+ latter contains `%'.
+
+ [1998-03-31 Theodore Ts'o <tytso@rsts-11.mit.edu>]
+ * src/stty.c (valid_options): New function.
+ (main): Fix broken options parsing that worked only
+ by serendipity (getopt_long_only already parsed short options; no
+ need to parse them again manually!). Add support for the --file
+ option, which allows the user to specify the device whose line
+ settings are to be set. This is necessary because POSIX ttys will
+ block waiting for carrier detect to go high if CLOCAL is not set,
+ unless the device is opened with the O_NONBLOCK flag.
+ Unfortunately, the shell doesn't use this flag, so users lose.
+ Opening the device in stty is the easist way to fix this.
+ (speeds): Add support for 230400 and 460800 line speeds, which are
+ supported by Linux.
+
+ * acconfig.h (uintmax_t): Add #undef.
+
+ * configure.in (jm_AC_HEADER_INTTYPES_H): Use it.
+ (jm_AC_TYPE_UINTMAX_T): Use it.
+ (jm_PREREQ): Use it.
+
+ * src/system.h: Sync with system.c from fileutils.
+
+ * Makefile.am (ACLOCAL_AMFLAGS): Define this, so automake/aclocal
+ know about the m4/ subdirectory.
+ * Makefile.maint (aclocal-files): Remove now-unnecessary (with
+ automake-1.2h and the above change) aclocal-related rules and includes.
+
+1998-04-03 Jim Meyering <meyering@eng.ascend.com>
+
+ * lib/closeout.c: New file.
+ * lib/closeout.h: New file.
+ * lib/Makefile.am (libsu_a_SOURCES): Add closeout.c.
+ (noinst_HEADERS): Add closeout.h.
+
+1998-03-27 Jim Meyering <meyering@eng.ascend.com>
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Require 1.2h.
+
+1998-03-26 Jim Meyering <meyering@eng.ascend.com>
+
+ * src/date.c (batch_convert): Remove spurious space in error message.
+ Reported by Karl Berry.
+
+1998-03-13 Jim Meyering <meyering@eng.ascend.com>
+
+ * lib/getugroups.c (getugroups): Don't add a group number if it
+ would be a duplicate. From Ulrich Drepper.
+
+1998-02-22 Jim Meyering <meyering@eng.ascend.com>
+
+ * tests/Makefile.am (EXTRA_DIST): Add mk-script.
+ * tests/Makefile.am.in (EXTRA_DIST): Remove mk-script.pl.
+ (mk_script): Set to ../mk-script.
+ (x-tests): Use `$(PERL) -w -- $(mk_script)', not ./mk-script.
+ Remove @MAINT@ cruft.
+ (Makefile.am): Likewise.
+ Remove @MAINT@ cruft. Now `missing' will explain the failure
+ when people don't have Perl yet modify a file whose rebuilding
+ would lead to the use of Perl.
+
+ * src/Makefile.am (pinky_LDADD): Explicitly add @GETHOSTBYNAME_LIB@.
+ (who_LDADD): Likewise.
+ (pinky_DEPENDENCIES): Set to $(LDADD)
+ (who_DEPENDENCIES): Likewise.
+
+1998-02-20 Jim Meyering <meyering@eng.ascend.com>
+
+ * lib/getdate.h: Removed. Could cause confusion with an
+ automake-generated `.y.h' rule.
+ * lib/get-date.h: Renamed from getdate.h.
+ * lib/getdate.y: s/getdate.h/get-date.h/
+ * lib/Makefile.am (noinst_HEADERS): s/getdate.h/get-date.h/
+ * src/date.c: s/getdate.h/get-date.h/
+
+1998-02-16 Jim Meyering <meyering@eng.ascend.com>
+
+ * configure.in (jm_FUNC_LSTAT): Use it.
+ (jm_FUNC_STAT): Use it.
+ * acconfig.h: Add lstat.
+ * lib/Makefile.am (EXTRA_DIST): Add lstat.c and stat.c.
+
+1998-02-06 Jim Meyering <meyering@eng.ascend.com>
+
+ * tests/nice: Fail immediately if this test is run with `nice'
+ level different from zero. Reported by Philippe De Muyter.
+
+1998-02-03 Philippe De Muyter <phdm@macqel.be>
+
+ * src/id.c (xgetgroups): Guard function defn with #if HAVE_GETGROUPS.
+
+ * lib/putenv.c (sys/types.h): Include to get size_t on some systems.
+ (NULL): Define if needed.
+
+1998-01-31 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_LFS): Use it.
+
+1998-01-25 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Makefile.maint: New file.
+ * Makefile.am: Move rules common to textutils, fileutils, sh-utils
+ into Makefile.maint.
+ Include Makefile.maint.
+ (EXTRA_DIST): Add Makefile.maint.
+
+1998-01-03 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (AUTOMAKE_OPTIONS): Define to ../src/ansi2knr.
+
+ * configure.in: Convert the .o suffix on files in LIBOBJS to $U.o so
+ those files will be built via the ANSI2KNR-filtering rules if necessary.
+
+1997-12-25 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in: Remove AC_DEFINE of _GNU_SOURCE.
+ * acconfig.h (_GNU_SOURCE): Define if not already defined.
+ Put this code in @TOP@ section.
+ (_GNU_SOURCE): Remove #undef.
+
+1997-12-22 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in: AC_DEFINE _GNU_SOURCE.
+ * acconfig.h: Add _GNU_SOURCE.
+
+1997-12-21 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/date.c: s/__P/PARAMS/
+ * src/env.c: Likewise.
+ * src/expr.c: Likewise.
+ * src/id.c: Likewise.
+ * src/nice.c: Likewise.
+ * src/pathchk.c: Likewise.
+ * src/seq.c: Likewise.
+ * src/sleep.c: Likewise.
+ * src/stty.c: Likewise.
+ * src/tee.c: Likewise.
+ * src/test.c: Likewise.
+ * src/tty.c: Likewise.
+ * src/uname.c: Likewise.
+
+ * src/system.h: Merge in several things from fileutils' version of
+ this file.
+
+ * src/factor.c: Don't include limits.h.
+ (UINT_MAX): Don't define.
+ (INT_MAX): Don't define.
+ These are all done in system.h now.
+ * src/hostname.c: Don't include limits.h.
+ * src/id.c: Don't include limits.h or sys/param.h.
+ * src/pathchk.c: Don't include limits.h.
+ * src/su.c: Likewise.
+
+1997-12-10 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/su.c (main): Make sure pw->pw_shell is non-NULL before trying
+ to strdup it.
+ Patch from Dick Streefland.
+
+1997-11-17 Paul Eggert <eggert@twinsun.com>
+
+ * lib/mktime.c, lib/strftime.c (_REENTRANT): #define,
+ as some hosts need this to declare localtime_r properly.
+
+1997-11-15 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * intl/Makefile.in (distclean): Don't remove libintl.h here.
+ * Makefile.am (DISTCLEANFILES): Remove it here instead.
+
+ * m4/Makefile.am (EXTRA_DIST): Add mktime.m4.
+ * m4/jm-mktime.m4: Require jm_AM_FUNC_MKTIME, not the one from automake.
+
+ * m4/strftime.m4: Check for %F format.
+
+1997-11-14 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * m4/mktime.m4: Temporarily add a copy of this file from the automake
+ distribution.
+ (jm_AM_FUNC_MKTIME): Renamed from AM_FUNC_MKTIME.
+ (irix_6_4_bug): New function based on code from Ariel Faigon.
+ (bigtime_test): New function from Paul Eggert to detect SunOS4.1.4's
+ infinite looping mktime.
+ Portability tweaks from Paul Eggert.
+
+1997-11-13 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/mktime.c: Update from FSF.
+ * lib/strftime.c: Update from FSF.
+ * m4/strftime.m4: Check for POSIX.2's %f format spec.
+
+1997-11-12 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_CHECK_FUNCS): Add mempcpy.
+ * src/system.h [!HAVE_MEMPCPY] (mempcpy): Define.
+ * src/date.c (batch_convert): Use mempcpy rather than stpcpy.
+
+1997-11-09 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * m4/jm-mktime.m4 (jm_FUNC_MKTIME): Check for localtime_r.
+ * m4/strftime.m4 (jm_STRFTIME_PREREQS): Check for localtime_r.
+ (jm_FUNC_GNU_STRFTIME): Use new macro.
+ (jm_FUNC_STRFTIME): New macro. Likewise.
+ Reported by Noel Cragg.
+
+1997-11-02 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acconfig.h: Add malloc and realloc.
+
+1997-10-25 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/xmalloc.c (xalloc_fail): Renamed from fixup_null_alloc.
+ (xcalloc): #ifdef-out unused function.
+ (xrealloc): Remove code to work around deficient versions of realloc.
+ Now we have an autoconf-enabled replacement version.
+ (xmalloc): Remove code to work around deficient versions of malloc.
+ Now we have an autoconf-enabled replacement version.
+
+ * configure.in (jm_FUNC_MALLOC): Use it.
+ (jm_FUNC_REALLOC): Use it.
+ * lib/Makefile.am (noinst_HEADERS): Add xalloc.h.
+ (EXTRA_DIST): Add realloc.c.
+ (EXTRA_DIST): Add malloc.c.
+
+ * lib/malloc.c: New file.
+ * m4/malloc.m4: New file.
+ * m4/Makefile.am (EXTRA_DIST): Add malloc.m4.
+
+ * lib/xalloc.h: New file.
+ * lib/xmalloc.c: Updated from textutils.
+
+ * src/*.c: Remove old-style xmalloc and xrealloc decls.
+ * src/system.h: Include xalloc.h.
+ Remove dcls of xmalloc, xcalloc and xrealloc.
+
+1997-10-23 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Makefile.am (aclocal-files): Also depend on m4/Makefile.am.
+
+ * src/system.h [!HAVE_DECLARATION_FREE]: Declare free.
+ [!HAVE_DECLARATION_MALLOC]: Declare malloc.
+ [!HAVE_DECLARATION_REALLOC]: Declare realloc.
+ [!HAVE_DECLARATION_STPCPY]: Declare stpcpy.
+ [!HAVE_DECLARATION_STRSTR]: Declare strstr.
+ [STREQ]: Define.
+ * src/date.c: Remove stpcpy decl.
+ * src/expr.c: Remove strstr decl.
+ * src/test.c [STREQ]: Undef then redefine.
+ On some systems, strstr and stpcpy are macros, so declaring them
+ unconditionally gets syntax errors.
+ Reported by Mark M. Kettenis.
+
+ * configure.in: Use jm_CHECK_DECLS.
+ * m4/Makefile.am (EXTRA_DIST): Add decl.m4 and check-decl.m4.
+
+1997-10-22 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * m4/decl.m4: New file.
+ * m4/check-decl.m4: New file. New macro, jm_CHECK_DECLS.
+
+1997-10-07 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/*.c: Update bug-reporting address.
+ * src/*.sh: Update bug-reporting address.
+
+1997-10-02 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/date/Test.pm (test_vector): Remove _%Z from test `9'.
+ The timezone string was too system dependent.
+
+1997-09-25 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/echo.c: Make echo conform to POSIX. By default, don't
+ interpret backslash escape sequences.
+ [V9_DEFAULT]: Don't #define.
+ (usage): Document -e option.
+ (main): Recognize options iff POSIXLY_CORRECT is not set.
+ From Bruno Haible.
+
+1997-09-19 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/getusershell.c (IN_CTYPE_DOMAIN): Define.
+ (ISSPACE): Define.
+ (readname): Use ISSPACE, not isspace.
+ * lib/strtod.c (IN_CTYPE_DOMAIN): Define.
+ (ISSPACE): Define.
+ (ISDIGIT): Define.
+ (TOLOWER): Define.
+ Use upper-case versions of ctype macros.
+ * lib/strtol.c (IN_CTYPE_DOMAIN): Define.
+ (ISSPACE): Guard with IN_CTYPE_DOMAIN.
+ (ISDIGIT): Guard with IN_CTYPE_DOMAIN.
+ (TOUPPER): Guard with IN_CTYPE_DOMAIN.
+ From Bruno Haible.
+
+1997-09-17 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/yes.c (main): Call parse_long_options only if POSIXLY_CORRECT
+ is *not* set. Reported by Frank T Lofaro.
+
+ * src/hostid.c: New file.
+ * src/Makefile.am (EXTRA_PROGRAMS): Add hostid.
+ * configure.in (OPTIONAL_BIN_PROGS): Check for gethostid,
+ and if found add hostid to the list.
+ * man/hostid.1: New file.
+ * man/Makefile.am (man_MANS): Add hostid.1.
+
+1997-08-31 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/who.c (main): New option --lookup (-l).
+ (print_entry): Only call canon_host if user explicitly asks for it.
+ (usage): Describe --lookup.
+ From Galen Hazelwood.
+
+ * configure.in (ALL_LINGUAS): Add Spanish (es).
+
+1997-08-02 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/Makefile.am (bin_PROGRAMS): Add pinky.
+
+ * src/pinky.c: New file. From Kaveh Ghazi.
+ * po/POTFILES.in: Add pinky.c.
+
+1997-07-19 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * src/date.c (show_date): Don't hang if strftime produces an empty
+ string.
+
+1997-07-16 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/groups.sh: Exit with status from subsidiary `id' command.
+ Don't print `$name : $groups' if id fails.
+ Reported by Austin Donnelly.
+
+1997-07-15 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/getloadavg.c: Merge in changes from FSF.
+
+1997-07-13 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * doc/Makefile.am (EXTRA_DIST): Remove explicit mention of texinfo.texi.
+ Now, automake includes it automatically.
+
+1997-07-12 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * po/Makefile.in.in (DISTFILES): Remove ChangeLog.
+ * po/POTFILES.in: Add who.c, users.c, uptime.c.
+ Remove who-users.c.
+
+ * src/who.c: Rename lots of `this' locals.
+ Make some parameters `const'.
+ (who): Update read_utmp caller.
+ (search_entries): Take additional param: utmp_buf.
+ Update read_utmp caller.
+ (who_am_i): Update read_utmp caller.
+
+ * src/users.c (users): Update read_utmp caller.
+ * src/uptime.c (uptime): Update read_utmp caller.
+
+ * lib/readutmp.h (PARAMS): Update prototype.
+ (utmp_contents): Remove dcl.
+
+ * lib/readutmp.c (read_utmp): Take new params: count and buffer.
+ Return boolean indicating failure.
+ Now, caller must give diagnostic upon failure.
+
+1997-07-12 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * lib/readutmp.c, lib/readutmp.h: New files implementing shared
+ functionality from src/who-users.c.
+
+ * lib/Makefile.am (libsu_a_SOURCES): Add readutmp.c.
+ (noinst_HEADERS): Add readutmp.h.
+
+ * src/who.c, src/users.c, src/uptime.c: Split these so they no
+ longer derive from the template source file who-users.c. Use
+ shared functionality from lib/readutmp.c instead.
+
+ * src/Makefile.am: Remove rules to build who.c, users.c and
+ uptime.c from template source file who-users.c. Handle these
+ files as stand-alone sources.
+
+ * src/who-users.c: Remove file. It is no longer used.
+
+1997-07-12 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/date.c (MAYBE_SET_TZ_UTC0): New macro.
+ (set_tz): New function.
+ (batch_convert): If necessary, save the initial value of TZ and
+ for each date in the file, restore it before each call to get_date,
+ then set it to UTC0 before each show_date call.
+ (main): Don't set TZ before calling get_date.
+ Set TZ after get_date call and before show_date call.
+ Reported by Matthew Braun.
+ * tests/date/Test.pm: Add new tests for this bug.
+ Add tests based on new examples in documentation.
+
+ * stpcpy.c: New file.
+ * configure.in (AC_REPLACE_FUNCS): Add stpcpy.c
+
+1997-07-05 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/Makefile.am (EXTRA_PROGRAMS): Add su here.
+ (bin_PROGRAMS): Remove su here.
+ (install-exec-local): Rewrite rule so that su is installed only if
+ it can be made setuid root. Before it was always installed and then
+ removed if it could *not* be made setuid root. That had the potential
+ undesirable side effect of removing (and not replacing) a working
+ version of su.
+ (all_local): New target. Dependend on su. Required now that su is
+ no longer in bin_PROGRAMS.
+ (uninstall-local): Remove su only if it comes from the GNU sh-utils.
+
+ * src/su.c: Redefine/undef getusershell around inclusion of <unistd.h>
+ (via system.h) so Cray's int-returning prototype doesn't conflict
+ with our char*-returning one. Reported by Johan Danielsson.
+
+1997-07-04 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/Makefile.am.in (Makefile.am): Clean up and enable rule to
+ generate tests/*/Makefile.am.
+
+ * configure.in (ALL_LINGUAS): Add Norwegian (no).
+
+ * tests/date/mk-script.pl (validate): Create test files in $(srcdir),
+ not in build dir.
+ * tests/Makefile.am.in ($x-tests): Create $x-tests in $(srcdir),
+ not in build dir.
+ * Makefile.am (aclocal-files): Look in source directory, not build dir.
+ From Andreas Schwab.
+
+1997-07-03 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/date/Test.pm (test_vector): Remove bogus TZ=GMT environment
+ setting.
+
+Wed Jul 2 11:05:09 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/printf.c (STRTOX): Convert function header in macro definition
+ to K&R-style. Otherwise, ansi2knr would fail to convert the function
+ definitions to K&R for old style compilers. From Kaveh Ghazi.
+
+Tue Jul 1 06:28:00 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/putenv.c [putenv]: Undefine before including system headers.
+ Otherwise, the declaration of *rpl_putenv* conflicts with the system
+ prototype on at least Irix5.3. From Marcus Daniels.
+
+Sun Jun 29 07:18:25 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/putenv.c (rpl_putenv): Renamed from putenv.
+ [putenv]: Remove definition and subsequent #undef hack that avoided
+ conflicts with system prototypes. That didn't let the definition of
+ putenv to rpl_putenv from config.h get through.
+ Suggestion from Marcus Daniels.
+
+ * configure.in (LIB_CRYPT): AC_SUBST new variable. Use it to add
+ crypt-related library (-lufc or -lcrypt) only for the program that
+ needs it (su), rather than to all executables.
+ * src/Makefile.am (su_LDADD): Set to `$(LDADD) @LIB_CRYPT@'.
+ Suggestion from Ulrich Drepper.
+
+ * tests/date/mk-script.pl: Set and export LANGUAGE, LC_ALL, and LANG
+ so tests get english strings. From Ulrich Drepper.
+
+Mon Jun 16 11:06:57 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * m4/putenv.m4 (jm_FUNC_PUTENV): New file and macro.
+ * configure.in (jm_FUNC_PUTENV): Use it.
+ * acconfig.h (putenv): Add #undef.
+ * lib/Makefile.am (EXTRA_DIST): Add putenv.c.
+ (libsu_a_SOURCES): Remove putenv.c.
+ * m4/Makefile.am (EXTRA_DIST): Add putenv.m4.
+
+Thu Jun 12 06:48:23 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/expr.c (eval6): Accept new unary operator, quote.
+ From Karl Heuer.
+
+Wed Jun 11 15:13:56 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/expr.c (docolon): Test (re_buffer.re_nsub > 0) rather than
+ searching for `\(' to determine whether to return 0 or the empty
+ string. Before it would improperly return '' if the pattern
+ contained a substring like this: `\\('. From Karl Heuer.
+ For example, running expr c : '\\(' should print `0'.
+
+Sun Jun 1 12:00:10 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/getdate.y (OtherTable): Interpret `next' as 1 (not 2) units.
+ Patch from Richard Sharman <rsharman@magmacom.com>.
+ * tests/date/Test.pm: Add tests using `next'.
+
+Tue May 27 06:08:06 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/basename.c: Don't include backupfile.h.
+
+ * lib/Makefile.am (noinst_HEADERS): Add backupfile.h.
+
+ * src/basename.c: Use base_name, not basename.
+ * src/su.c: Use base_name, not basename.
+
+ * configure.in: Don't replace basename. Now it's always required.
+
+ * lib/Makefile.am (libsu_a_SOURCES): Add basename.c.
+
+ * lib/getopt.c: Update from glibc via patch-2.2.93.
+ * lib/getopt1.c: Likewise.
+ * lib/getopt.h: Likewise.
+ * lib/basename.c: Likewise.
+
+Sat May 24 13:26:04 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * man/Makefile.am (EXTRA_DIST): Put man_MANS here so they are
+ distributed. This seems to be necessary for automake-1.1p.
+
+Thu May 1 00:10:11 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * ansi2knr.c echo.c factor.c hostname.c id.c nice.c pathchk.c
+ spline.c test.c uname.c: Indent cpp-directives.
+
+ * src/system.h (N_): Define.
+
+Sun Apr 27 18:30:53 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/printf.c (cfcc_msg): File-scope constant.
+ (STRTOX): Use new constant as error message format string in macro.
+ Suggestion from Andreas Schwab.
+ (STRTOX): Don't fail because of extra character(s) following a
+ character constant. Give the *warning* only if !POSIXLY_CORRECT.
+
+Sun Apr 6 14:29:14 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/printf.c: Reorder functions to obviate forward decls.
+ Change most char* dcls to const char*.
+ (STRTOX): New macro to eliminate code duplication.
+ (xstrtod, xstrtol, xstrtoul): Remove functions.
+ Use the STRTOX instead.
+
+ * src/printf.c (STRTOX): Interpret arguments like 'a and "a
+ as POSIX requires. Derived from a patch by Dennis Henriksen.
+
+Sun Mar 23 15:20:17 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (ALL_LINGUAS): Add polish (pl).
+
+Sat Mar 22 00:03:02 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Require automake-1.1l.
+ (aclocal.m4): Use aclocal's new -I option.
+
+ * missing: New file -- from the automake-1.1m distribution.
+
+Thu Mar 20 21:10:44 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * m4/ccstdc.m4: Remove file.
+ * m4/init.m4: Likewise.
+ * m4/sanity.m: Likewise.
+ * m4/protos.m: Likewise.
+ * m4/dmalloc.m4: Likewise.
+ * m4/error.m4: Likewise.
+ * m4/header.m4: Likewise.
+ * m4/install.m4: Likewise.
+ * m4/lispdir.m4: Likewise.
+ * m4/maintainer.m4: Likewise.
+ * m4/obstack.m4: Likewise.
+ * m4/ptrdiff.m4: Likewise.
+ * m4/regex.m4: Likewise.
+ * m4/strtod.m4: Likewise.
+ * m4/termios.m4: Likewise.
+ * m4/winsz.m4: Likewise.
+
+Tue Mar 18 06:46:54 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/su.c: Indent cpp-directives to reflect nesting.
+ Change a few #ifdef to #if.
+ Remove 3 spurious #ifdef that were guarding an #undef each.
+
+ * src/seq.c (check_format): Rename local, FORMAT_STRING, to avoid
+ shadowing global.
+ (print_numbers): Likewise.
+
+ * src/who-users.c (idle_string): Rename local, IDLE, to avoid
+ shadowing global.
+
+ * src/su.c (log_su): Resort to getpwuid if getlogin fails.
+ If no tty name is found, use `none' in the log message.
+ Based on a patch from Galen Hazelwood.
+
+Thu Mar 13 21:27:36 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/mktime.c (TIME_T_MIN): Work around a bug in Cray C 5.0.3.0.
+
+Wed Feb 19 23:06:46 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/factor.c (factor): Rewrite inner loop to be more efficient.
+ Patch from Torbjorn Granlund.
+
+Tue Feb 18 21:18:04 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/date/Test.pm: Add tests for %U, %V, and %W and for a bug
+ fixed on 1996-03-05.
+ Remove misleading `-' from leap-1 test.
+
+ * tests/Makefile.am (SUBDIRS): Add factor.
+ * tests/factor: New directory.
+ * configure.in (AC_OUTPUT): Add tests/factor/Makefile.
+
+Tue Feb 4 22:03:13 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/stty.c: Bracket inclusion of termios.h with #if HAVE_TERMIOS_H.
+ Masami Takikawa reported that NeXTStep 3.0 doesn't have termios.h.
+ * configure.in (AC_CHECK_HEADERS): Add termios.h.
+
+Fri Jan 31 21:13:13 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/*.c (usage): Bracket bug-reporting address with <> and append
+ a period.
+ * src/*.sh: Likewise.
+
+ * src/*.c: Compare getopt_long return value against -1, not EOF.
+ Use NULL, not `(int *) 0' as last parameter in getopt_long call.
+
+Mon Jan 27 21:43:50 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/chroot.c (usage): Remove one space in message to make
+ colons line up.
+
+Sun Jan 26 12:51:05 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 1.16.
+
+ * src/who-users.c (usage): Fix typo (--writeable -> --writable)
+ in help output. From Galen Hazelwood.
+
+Sat Jan 25 21:01:13 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/factor.c (print_factors): Reflect changes to xstrtoul interface.
+
+ * tests/date/mk-script.pl: Generated script now reflects
+ specification (in Test.pm) of default and per-test environment
+ settings.
+
+Fri Jan 24 23:36:00 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/long-options.c (parse_long_options): Reset optind to zero
+ before just returning so that getopt internals get initialized from
+ the probably-new parameters when/if getopt is called later.
+ This solves the problem (reintroduced with 1.15) where `stty -tabs'
+ would not work as advertised but instead act like `stty -a'.
+ Reported by Arne Juul.
+ Suggested fix from Ulrich Drepper.
+
+Wed Jan 22 20:12:31 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/getopt.c: Update from GNU C library.
+ * lib/getopt1.c: Update from GNU C library.
+ * lib/getopt.h: Update from GNU C library.
+
+ * tests/Makefile.am (EXTRA_DIST): Add README Makefile.am.in.
+ (SUBDIRS): Set to `date'.
+
+ * configure.in: Check for perl.
+ (AC_OUTPUT): Add tests/date/Makefile.
+ * tests/date: New directory.
+
+ * m4/getgroups.m4: Move the code from configure.in into
+ this macro that resorts to looking for getgroups in -lbsd.
+ Set new shell variable, GETGROUPS_LIB (that callers should check),
+ if it is found there.
+ * configure.in: Check $GETGROUPS_LIB just after jm_FUNC_GETGROUPS.
+ (AC_CHECK_FUNCS): Remove getgroups.
+ Remove code that resorts to looking for getgroups in -lbsd.
+
+ * m4/mktime.m4 (AM_FUNC_MKTIME): Run tests for each of a few values
+ for the TZ environment variable. Andre Novaes Cunha provided the
+ hairy TZ setting that exercized the Solaris tzset bug.
+
+1997-01-22 Paul Eggert <eggert@twinsun.com>
+
+ * lib/strftime.c (_strftime_copytm):
+ New function, to work around Solaris 2.5 tzset bug.
+
+ * m4/mktime.m4 (AM_FUNC_MKTIME): Fix bug in mktime test -- don't
+ test now, test a couple of thousand times.
+
+ * m4/strftime.m4 (main): Use TZ=GMT0, not TZ=GMT, since only GMT0 is
+ specified by Posix.1.
+
+Sat Jan 18 09:32:26 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/getdate.y (get_date): Change prototype to reflect const'ness
+ of parameters.
+ Indent cpp-directives to reflect nesting.
+ Indent with GNU indent.
+
+ * lib/getdate.h: New file.
+ * src/date.c: Include getdate.h.
+ (<time.h>, <sys/time.h>): Don't include -- now getdate.h does it.
+ (get_date): Don't declare. getdate.h does it.
+
+ * lib/Makefile.am (noinst_HEADERS): Add getdate.h.
+
+ 1997-01-06 Paul Eggert <eggert@twinsun.com>
+
+ * getdate.y: Rewrite to use mktime.
+
+ <sys/timeb.h>: Don't include.
+ (mktime): Declare.
+
+ (struct timeb, timezone, DOOMSDAY, SECSPERDAY, DSTMODE, yyDSTmode,
+ ToSeconds, Convert, DSTcorrect, RelativeDate, RelativeMonth): Remove.
+ (ToHour): New function (part of the old ToSeconds fn).
+ (ToYear): New function (part of the old Convert fn).
+
+ (TABLE.value, yyDayOrdinal, yyDayNumber, yyTimezone, yyDay, yyHour,
+ yyMinutes, yyMonth, yySeconds, yyYear, yyRelMonth, yyRelSeconds,
+ Number): Now int instead of time_t.
+ (HOUR): Don't cast to time_t.
+
+ (tDAY_UNIT, tHOUR_UNIT, tYEAR_UNIT): New %tokens.
+ (UnitsTable): Use new units that are closer to the keywords.
+
+ (yyRelDay, yyRelHour, yyRelMinutes, yyRelYear): New variables.
+ (rel, relunit, get_date): Add support for them.
+
+ (time): Fix timezone calculations for negative half-hour offsets
+ when integer division truncates towards minus infinity.
+
+ (zone): Incorporiate DST calculation directly.
+
+ (get_date): 2nd arg is now time_t *, not struct timeb *.
+ Use mktime to do most of the work, instead of computing it ourselves.
+ Guard against falsely reporting errors near the time_t boundaries
+ when parsing times in other time zones.
+
+Thu Jan 16 20:58:40 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * m4/getloadavg.m4 (AM_FUNC_GETLOADAVG): Check for pstat_getdynamic.
+ * configure.in (AC_CHECK_FUNCS): Don't check for pstat_getdynamic here.
+
+Tue Jan 14 22:45:36 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_CHECK_FUNCS): Add pstat_getdynamic.
+ Alphabetize functions.
+
+ * lib/getloadavg.c [hpux && HAVE_PSTAT_GETDYNAMIC]: Use HPUX's
+ pstat_getdynamic function so we don't need any special privileges
+ to determine load averages. Patch from Kaveh Ghazi, based on a
+ sample implementation from Richard J. Rauenzahn.
+ Indent cpp-directives to reflect nesting.
+
+Wed Jan 8 16:38:24 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 1.15.
+
+ * lib/getopt.c (_getopt_internal): Use `_', rather than the
+ (sometimes-)expansion `gettext'.
+
+Tue Jan 7 22:10:51 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/nice.c (main): Work around failures induced by new version of
+ getopt.c by not modifying optind before the first getopt_long call
+ in main. With suggestions from Ulrich Drepper.
+
+ * lib/getopt.c: New (more POSIX compliant) version from GNU libc.
+ [_]: Define to gettext also if ENABLE_NLS is defined.
+ This is temporary.
+
+Fri Jan 3 21:08:29 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acconfig.h (getgroups): Add #undef.
+ From Marcus Daniels.
+
+Fri Dec 27 17:25:18 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/who-users.c [!WTMP_FILE]: Provide default path.
+ (UTMP_FILE) [UTMPX_FILE]: Use UTMPX_FILE in favor of UTMP_FILE.
+ Patch from Kaveh R. Ghazi.
+ Indent cpp directives.
+
+ * m4/getgroups.m4: Rewrite the test so that systems lacking
+ getgroups don't try to use the supplied replacement function --
+ that depends on the existence of such a function.
+
+ * Makefile.am (aclocal.m4): No longer depend on acinclude.m4.
+
+ * configure.in (jm_FUNC_GETGROUPS): Use it.
+ Reported by Marcus Daniels.
+ AC_REQUIRE version 2.12 of autoconf.
+
+Sun Dec 22 23:31:32 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in: Increment version to 1.14a.
+
+ * m4/Makefile.am (EXTRA_DIST): Add README.
+
+Fri Dec 20 19:28:37 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/who-users.c (usage): Say that UTMP_FILE is the default FILE
+ rather than hard-coding /etc/utmp. Replace hard-coded /etc/wtmp
+ with WTMP_FILE. Suggestion from Eivind.
+
+ * src/seq.c (usage): Tweak --help text.
+
+ * configure.in (AC_OUTPUT): Add m4/Makefile.
+
+ * lib/Makefile.am (EXTRA_DIST): Add getgroups.c.
+
+ * Makefile.am (SUBDIRS): Add m4.
+ (aclocal-files): Add rules that rely on (GNU) make's include
+ directive that computes dependencies for aclocal.m4.
+ (aclocal.m4): Override automake-generated rule.
+
+ * m4/Makefile.am: New file.
+
+ * lib/strftime.c: Update from GNU libc.
+
+ * m4/getline.m4: New file, extracted from acinclude.m4.
+ * m4/getloadavg.m4: Likewise.
+ * m4/jm-mktime.m4: Likewise.
+ * m4/jm-winsz1.m4: Likewise.
+ * m4/jm-winsz2.m4: Likewise.
+ * m4/memcmp.m4: Likewise.
+ * m4/strftime.m4: Likewise.
+ * m4/uptime.m4: Likewise.
+
+ * m4/ccstdc.m4: Copied from automake-1.1l.
+ * m4/dmalloc.m4: Likewise.
+ * m4/error.m4: Likewise.
+ * m4/gettext.m4: Likewise.
+ * m4/header.m4: Likewise.
+ * m4/init.m4: Likewise.
+ * m4/install.m4: Likewise.
+ * m4/lcmessage.m4: Likewise.
+ * m4/lispdir.m4: Likewise.
+ * m4/maintainer.m4: Likewise.
+ * m4/mktime.m4: Likewise.
+ * m4/obstack.m4: Likewise.
+ * m4/progtest.m4: Likewise.
+ * m4/protos.m4: Likewise.
+ * m4/ptrdiff.m4: Likewise.
+ * m4/regex.m4: Likewise.
+ * m4/sanity.m4: Likewise.
+ * m4/strtod.m4: Likewise.
+ * m4/termios.m4: Likewise.
+ * m4/winsz.m4: Likewise.
+
+ * m4/getgroups.m4: New file.
+ (jm_FUNC_GETGROUPS): New macro
+ * lib/getgroups.c: New file.
+
+ * m4: New directory.
+
+Wed Dec 18 07:47:29 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_CHECK_HEADERS): Add paths.h.
+ * src/su.c [HAVE_PATHS_H]: Include <paths.h>.
+ [_PATH_DEFPATH]: Use this to define DEFAULT_LOGIN_PATH.
+ [_PATH_DEFPATH_ROOT]: Use this to define DEFAULT_ROOT_LOGIN_PATH.
+ From Rik Faith.
+
+ * acinclude.m4 (jm_FUNC_GNU_STRFTIME): Change m4 quote strings
+ outside the quoted test program. Quote the test program with <<, >>.
+ Reported by Andreas Schwab.
+ (AM_FUNC_GETLOADAVG): Likewise.
+ (jm_FUNC_GNU_STRFTIME): Add tests for new, upcasing ^ modifier
+
+Tue Dec 17 18:54:32 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/Makefile.am (install-exec-local): Properly redirect stdout
+ and stderr to /dev/null. From Eric Backus.
+
+ * lib/strftime.c: Update from GNU libc.
+
+ * acinclude.m4 (jm_SYS_PROC_UPTIME): Require AC_PROG_CC, rather than
+ now-obsolete AC_C_CROSS.
+ (jm_FUNC_MKTIME): When redefining, use rpl_ prefix, not gnu_ one
+ since there's nothing GNU-specific about the replacement. Contrast
+ with gnu_ prefix added to strftime.
+ (jm_FUNC_MEMCMP): New macro.
+ * configure.in: Use jm_FUNC_MEMCMP instead of AM_FUNC_MEMCMP.
+ * acconfig.h: Add memcmp.
+
+Sun Dec 15 18:37:08 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (check for 3-argument setpriority function): Complete
+ partial change made on Dec 12. From Arne Juul.
+
+Sat Dec 14 14:51:50 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acinclude.m4 (jm_SYS_PROC_UPTIME): Fix typo in cache variable
+ name for cross compiling.
+ Remove definitions of gettext-related macros. The gettext
+ installation procedure installs corresponding .m4 files so that
+ aclocal will use them.
+
+Thu Dec 12 06:07:30 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 1.14.
+
+ * src/system.h (ISDIGIT): Replace with smaller, faster edition
+ that yields nonzero only on ASCII digits.
+ (ISDIGIT_LOCALE): New macro, with same meaning that ISDIGIT
+ used to have. From Paul Eggert.
+
+ * configure.in: Bump version to 1.14.
+
+ * lib/getdate.y (IN_CTYPE_DOMAIN): Rename from ISASCII.
+ (ISDIGIT): New definition from Paul Eggert.
+ This one evaluates its argument exactly once.
+ (yylex): Move increment out of ISALPHA argument. Use a
+ comma-expression instead.
+
+ * src/false.sh (usage): Update bug-reporting address.
+ * src/groups.sh (usage): Likewise.
+ * src/nohup.sh (usage): Likewise.
+ * src/true.sh (usage): Likewise.
+ Reported by Karl Heuer.
+
+ * configure.in (check for 3-argument setpriority function): Add nohup
+ to list of scripts, not the list of programs.
+ From Karl Heuer.
+
+ * POTFILES.in: Add chroot.c. Reported by Michel Robitaille.
+
+Wed Dec 11 19:33:36 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 1.13.
+
+Tue Dec 10 06:36:57 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acinclude.m4 (jm_SYS_PROC_UPTIME): New macro. Derived from the
+ code in configure.in, except now it punts when cross compiling.
+ Suggestion from Karl Heuer.
+ * configure.in (jm_SYS_PROC_UPTIME): Use it instead of open-coded
+ version.
+
+ * lib/Makefile.am (EXTRA_DIST): Add mktime.c.
+ Reported by Thomas Bushnell.
+
+ * configure.in: Bump version to 1.12t.
+
+ * Regenerate all Makefile.in using a patched version of automake-1.1l.
+
+ * acconfig.h (strftime): Add #undef.
+ From Karl Heuer.
+
+ * acinclude.m4 (AM_GNU_GETTEXT): Don't require AC_ISC_POSIX.
+ From Karl Heuer.
+
+Mon Dec 9 06:58:11 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in: Bump version to 1.12s.
+
+ * lib/getdate.y (Convert): Don't reject all dates in 2038.
+ Some fit in 31 bits.
+
+ * configure.in (jm_FUNC_GNU_STRFTIME): Use it.
+
+ * acinclude.m4 (AC_REPLACE_GNU_GETOPT): Remove unused macro.
+ (jm_FUNC_GNU_STRFTIME): New macro.
+
+ * lib/Makefile.am (libsu_a_SOURCES): Remove strftime.c.
+ (EXTRA_DIST): Add strftime.c.
+
+ * configure.in (jm_HEADER_TIOCGWINSZ_IN_TERMIOS_H): Fix typo:
+ Change $am_cv_sys_tiocgwinsz_needs_sys_ioctl_h to
+ $jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h.
+ Patch from Kaveh R. Ghazi.
+
+ * src/stty.c: Include config.h before testing for
+ TERMIOS_NEEDS_XOPEN_SOURCE.
+ Patch from Karl Heuer.
+
+ * configure.in (AC_ISC_POSIX): Remove kludgy macro.
+ Use this test instead:
+ (LIBS): Add -lcposix if it contains strerror.
+ Patch from Karl Heuer.
+
+ * acinclude.m4 (AM_FUNC_GETLOADAVG): Put shell assignments to
+ ac_save_LIBS and LIBS on separate lines to avoid order-of-evaluation
+ problems -- some versions of sh (e.g. SunOS4.1.3's) evaluate such
+ space-separated assignments from right to left. Patch from Karl Heuer.
+ (AM_FUNC_GETLOADAVG): Fix typo: su_save_LIBS => am_cv_saved_LIBS.
+ Patch from Karl Heuer.
+
+ * lib/strftime.c [HAVE_TZNAME]: Declare tzname.
+ Patch from Karl Heuer.
+
+ * src/Makefile.am (.sh): Also substitute @bindir@.
+ Reported by Karl Heuer.
+
+Sun Dec 8 07:22:38 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ =========== Update for automake-1.1k.
+ * Makefile.am (AUTOMAKE_OPTIONS): Require 1.1k.
+ * configure.in (AM_CONFIG_HEADER): Use it.
+ (AC_OUTPUT): Remove stamp-h timestamping statement.
+ Now, AM_CONFIG_HEADER does it automatically.
+ * lib/Makefile.am (noinst_LIBRARIES): Rename to libsu.a as per
+ new automake requirement.
+ Rename su_* variables to libsu_a_*.
+
+Sun Dec 8 00:08:44 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/stty.c (get_win_size): Rename formal parameter from fileno to FD.
+
+Sat Dec 7 12:52:00 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/chroot.c (main): Call setlocale, bindtextdomain, and textdomain.
+ From Michel Robitaille.
+
+ * configure.in (ALL_LINGUAS): Add Portuguese (pt).
+
+ * lib/getloadavg.c [__SVR4]: Define SVR4.
+ Remove duplicate `|| defined(SVR4)' disjunct guarding the
+ #define KERNEL_FILE "/unix" definiton.
+
+ * configure.in (jm_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL): Use this variant
+ of the AM_ prefixed macro.
+ (check for TIOCGWINSZ in sys/pty): In essence, require
+ jm_HEADER_TIOCGWINSZ_IN_TERMIOS_H so that
+ $jm_cv_sys_tiocgwinsz_needs_termios_h (renamed from
+ $gwinsz_in_termios_h) is defined.
+
+ * lib/strftime.c (strftime): Remove " %Z" part of format for %c.
+ Correction from Paul Eggert.
+
+Fri Dec 6 20:52:07 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acinclude.m4 (jm_FUNC_MKTIME): Rather than including the text of
+ AM_FUNC_MKTIME, simply AC_REQUIRE it.
+
+Mon Dec 2 20:59:38 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (su_cv_func_ut_host_in_utmp): Move test that can
+ define WINSIZE_IN_PTEM to precede test that checks whether
+ `TIOCGWINSZ in sys/pty.h'. The latter test uses the symbol.
+ (jm_FUNC_MKTIME): Use this instead of AM_FUNC_MKTIME.
+
+Sun Dec 1 13:07:39 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/getdate.y (date): Interpret the date, L/M/N, as YYYY/MM/DD
+ if L >= 1000, otherwise as MM/DD/YY. With this change,
+ date --date=DATE accepts dates like those in an RCS log listing.
+
+Sat Nov 30 22:08:00 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/strftime.c: Update from GNU libc.
+
+Fri Nov 29 22:16:40 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/uname.c (main) [HAVE_SYSINFO && SI_ARCHITECTURE]: Support
+ --processor (-p). Print processor type.
+ (usage): Document it.
+
+Thu Nov 28 00:28:37 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AM_GNU_GETTEXT): Renamed from ud_GNU_GETTEXT
+ for gettext-0.10.25.
+ (AM_FUNC_GETLINE): Move the test to just before the check for getdelim.
+
+Sun Nov 24 11:02:29 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/system.h [!defined STDIN_FILENO]: Define it.
+ [!defined STDOUT_FILENO]: Define it.
+ [!defined STDERR_FILENO]: Define it.
+
+ * src/stty.c (get_win_size): Take a FILENO parameter rather than
+ trying to get a size from both stdin and stdout.
+ Update callers.
+ Use STDIN_FILENO and STDOUT_FILENO instead of literal 0, 1.
+
+ ========== From Karl Heuer =========
+ * src/stty.c [TERMIOS_NEEDS_XOPEN_SOURCE]: Define _XOPEN_SOURCE.
+ i386-pc-isc3.0, needs that in order to cause all of the useful
+ termios symbols to be defined, instead of just those that are
+ required by POSIX. This enables all of: iuclc ixany olcuc ocrnl
+ onlcr onocr onlret ofill ofdel nl0 cr0 tab0 bs0 vt0 ff0 xcase.
+
+ [GWINSZ_IN_SYS_PTY]: Include sys/ioctl.h, sys/tty.h, and sys/pty.h.
+
+ [!VSUSP && !VSWTCH]: Map VSWTCH and CSWTCH to VSUSP and CSUSP resp.
+ termio.h defines VSWTCH, but termios.h defines VSUSP instead (since
+ POSIX requires that symbol). Define VSWTCH as a synonym if needed,
+ so that either one can be used on input.
+ (display_changed): If the slot for swtch is the same as the one for
+ susp, display only the setting for susp.
+ (display_all): Likewise.
+
+ (display_changed): Some systems still have (VEOF,VEOL) == (VMIN,VTIME).
+ On such systems, it's confusing to print both pairs. So, skip eof and
+ eol when icanon is unset, and skip min and time when icanon is set.
+ (display_all): Likewise.
+
+ (set_window_size): Check only stdin (the device being queried) for
+ window size info. You don't want "stty </dev/foo" to report the size
+ of your current window when /dev/foo has no size info.
+ (display_window_size): Likewise.
+
+ (screen_columns): Check only stdout for window size info. You want
+ "stty </dev/foo" to wrap columns at the right margin of your current
+ window, not the /dev/foo width.
+
+ * acconfig.h (GWINSZ_IN_SYS_PTY): Add #undef.
+ (TERMIOS_NEEDS_XOPEN_SOURCE): Add #undef.
+
+ * configure.in (whether termios.h needs _XOPEN_SOURCE): New test.
+ (whether TIOCGWINSZ is defined in sys/pty.h): New test.
+
+Sat Nov 23 16:15:37 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (EXTRA_DIST): Add getline.c now that getline
+ isn't mentioned in AC_REPLACE_FUNCS.
+
+ * env.c (usage): Alphabetize option descriptions the way sort -f would.
+ * test.c (usage): Likewise.
+ * who-users.c (usage): Likewise.
+ From Karl Berry.
+
+Fri Nov 22 20:33:26 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_REPLACE_FUNCS): Don't try to replace getline this
+ way. AM_FUNC_GETLINE does it now.
+
+ * configure.in New test to check for TIOCGWINSZ in sys/pty.h.
+ * config.h.in (GWINSZ_IN_SYS_PTY): Add #undef.
+ From Karl Heuer.
+
+ * src/printf.c (main): Warn if excess arguments are ignored.
+ E.g., printf foo bar now warns that it is ignoring the single
+ non-format argument, bar.
+
+Wed Nov 20 20:37:54 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/xgethostname.c (xgethostname): Work around bug in SunOS5.5's
+ gethostname. Reported by Fletcher Mattox.
+
+Tue Nov 19 23:01:01 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AM_SANITY_CHECK_CC): Remove it. Autoconf-2.11
+ has this built-in.
+ (OPTIONAL_BIN_ZCRIPTS): Rename from OPTIONAL_SCRIPTS -- because
+ automake-1.1g couldn't deal with the _SCRIPTS suffix.
+ * src/Makefile.am (bin_SCRIPTS): Rename @OPTIONAL_SCRIPTS@.
+
+Sun Nov 17 20:49:37 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/id.c (main): Ignore -a, for compatibility with SVR4.
+ Suggestion from Noah Friedman.
+
+Mon Nov 4 20:24:31 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (test for group_member): Handle it separately
+ so I can keep the hyphen (not the underscore) in the filename.
+
+ Thu Oct 31 19:32:32 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * lib/xgethostname.c [ENAMETOOLONG] (xgethostname): If gethostname
+ returns an error other than buffer overflow, exit with an error
+ message instead of allocating infinite amounts of space.
+ [!EXIT_FAILURE] (EXIT_FAILURE): New macro.
+ <errno.h>: New include.
+ [!errno] (errno): New declaration.
+
+ * acinclude.m4 (AM_FUNC_GETLINE): Use cache.
+
+ * configure.in: Check for -linet library before checking for the
+ gethostbyname function. Suggested by Karl Heuer.
+ Use AM_FUNC_GETLINE.
+
+ * acinclude.m4 (AM_FUNC_GETLINE): Add run-time test for getline.
+ Based on a test from Karl Heuer.
+
+Sun Nov 3 14:57:09 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acinclude.m4 (GETLOADAVG_LIBS): Unanchor the sed regexp that removes
+ am_cv_saved_LIBS from LIBS. From Karl Heuer.
+
+ * src/stty.c (recover_mode): Fail also if there are too many fields.
+ From Karl Heuer.
+
+ * lib/canon-host.c: Include sys/types.h for the definitions
+ (otherwise missing on some systems) of caddr_t (used by
+ sys/socket.h) and ushort (used by netinet/in.h). From Karl Heuer.
+
+Sat Nov 2 00:16:16 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * doc/Makefile.am (MAKEINFO): Set to makeinfo --no-split.
+ Otherwise, the generated info files have names longer than
+ the 14-byte max of some old systems.
+ Reported by Karl Heuer.
+
+ * src/date.c (main): Give better diagnostic.
+ Suggestion from Karl Berry.
+
+Thu Oct 31 18:28:05 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/posixtm.y: Remap yacc globals to have pt_ prefix.
+ * lib/getdate.y: Remap yacc globals to have gd_ prefix.
+ Suggestion to do as in gdb/c-exp.y from Tom Tromey.
+
+Mon Oct 28 17:40:54 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/Makefile.am (install-exec-local): Redirect stderr of chown to
+ /dev/null and suggest running `make install-root' upon failure to
+ install su. Suggestions from François Pinard.
+
+ * configure.in: Don't output confusing diagnostic: `checking for
+ shadow password routines'. Suggestion from François Pinard.
+
+Thu Oct 24 13:50:46 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * src/tee.c (main): Ignore SIGPIPE.
+
+Wed Oct 23 23:42:43 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/stty.c: Guard inclusion of stdarg.h and definition of VA_START
+ with #if PROTOTYPES rather than with #ifdef __STDC__. The latter
+ loses with Dynix/PTX.
+ (wrapf) [PROTOTYPES]: Similarly, guard ANSI-style ... definition.
+ Suggestion from Marcus Daniels.
+
+Mon Oct 21 16:49:08 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/getloadavg.c [__linux__]: Don't bother with a.out/nlist/kernel
+ defines or includes -- Linux systems simply read /proc/loadavg.
+ From Ulrich Drepper.
+
+ * lib/Makefile.am (EXTRA_DIST): Remove group-member.c.
+
+ * configure.in: Remove hack that created link from group_member.c
+ to group-member.c.
+
+ * lib/group_member.c: New file. Renamed from group-member.c.
+ * lib/group-member.c: Delete.
+
+ * src/stty.c (main): Remove TAB from diagnostic, for consistency.
+
+Sun Oct 20 09:03:51 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Makefile.am (install-root): Add it here, too.
+
+ * lib/Makefile.am (INCLUDES): Add -I../intl. Reported by Eric Backus.
+
+ * src/Makefile.am (install-root): New rule.
+ Suggestion from François Pinard.
+
+ * src/who-users.c (print_entry): Don't take address of UT_TIME_MEMBER
+ directly. From Ulrich Drepper.
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Set to `gnits'.
+ (EXTRA_DIST): Remove @README_ALPHA@.
+
+ * configure.in: Remove README_ALPHA related code. Automake takes
+ care of it automatically now when in gnits mode.
+
+ * acinclude.m4 (AM_FUNC_GETLOADAVG): Use $srcdir (not $top_srcdir) in
+ #include $srcdir/lib/getloadavg.c. The latter isn't defined at that
+ point in configure script. From Eric Backus.
+
+Fri Oct 18 21:31:58 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Makefile.am (cvs-dist): Uncomment cvs tag command.
+ (cvs-dist): Use cvs tag's -c option.
+
+Thu Oct 17 23:48:16 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (LIBS): Add -lypsec on m88k/svr3 DolphinOS systems
+ using YP. From Arne Juul.
+
+Sun Oct 13 07:34:15 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in: Don't save and restore LIBS around AM_FUNC_GETLOADAVG.
+ * acinclude.m4 (AM_FUNC_GETLOADAVG): Don't modify LIBS in this macro
+ (by saving and restoring initial value). Instead, arrange for
+ substitution of @GETLOADAVG_LIBS@.
+ * src/Makefile.am (uptime_LDADD): Add @GETLOADAVG_LIBS@,
+ not @UPTIME_LIBS@.
+
+ * configure.in (ALL_LINGUAS): Add swedish (sv).
+
+Fri Oct 11 22:51:50 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/who-users.c (print_uptime): Change #ifdef guard on getloadavg
+ call from just HAVE_GETLOADAVG to HAVE_GETLOADAVG || C_GETLOADAVG.
+ From Kaveh R. Ghazi.
+
+ * src/Makefile.am (uptime_LDADD): Add @UPTIME_LIBS@.
+
+ * acinclude.m4 (AM_FUNC_GETLOADAVG): Like AC_FUNC_GETLOADAVG, but
+ with the following changes:
+ - include $top_srcdir/lib/getloadavg.c, not src/getloadavg.c.
+ Reported by Eric Backus.
+ - Check for Solaris' libkstat.
+ - Define C_GETLOADAVG if we end up using getloadavg.c.
+ From Kaveh R. Ghazi.
+ * acconfig.h (C_GETLOADAVG): Add it.
+ From Kaveh R. Ghazi.
+
+ * configure.in: Use new AM_FUNC_GETLOADAVG and be careful to add
+ getloadavg-related libraries only when linking uptime.
+
+Thu Oct 10 23:50:05 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (EXTRA_DIST): Remove posixtm.y and getdate.y.
+ (su_SOURCES): Put them here instead.
+ Remove rules for building getdate.c and posixtm.c; now automake
+ generates those rules.
+ * lib/ylwrap: New file.
+ * lib/interlock: New file.
+
+Wed Oct 9 00:26:55 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/getloadavg.c [__sun]: Define sun. Reported by Kaveh Ghazi.
+
+ * lib/strftime.c (strftime): Accommodate the broken C compiler
+ that comes with SunOS -- don't initialize aggregates in decls of
+ automatic variables. Reported by Kaveh Ghazi.
+
+ * tests/: Renamed checks/ directory.
+ * Makefile.am (SUBDIRS): Rename checks to tests.
+ * configure.in (AC_OUTPUT): Rename checks to tests.
+
+ * configure.in (/proc/uptime check): Guard the read of /proc/uptime
+ with an existence test to avoid a messy configure-time warning on
+ systems that lack that special file. Reported by Kaveh R. Ghazi.
+
+ * configure.in (check whether floor needs -lm): Fix typo: save $LIBS,
+ not $LIB. From Kaveh R. Ghazi.
+
+ * checks/nice: Protect echoed args with leading `x' so echo doesn't
+ interpret leading -n on e.g. SunOS systems.
+
+Mon Oct 7 18:46:28 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/getloadavg.c [__hpux]: Define hpux. From Eric Backus.
+
+ * lib/Makefile.am (EXTRA_DIST): Remove alloca.c, error.c, and mktime.
+ (su_SOURCES): Remove memcmp.c.
+ Automake automatically includes at least these, now.
+ From François Pinard.
+
+ * lib/Makefile.am (su_SOURCES): Remove getline.c.
+
+Sat Oct 5 11:38:23 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (su_SOURCES): Remove gethostname.c --
+ it's AC_REPLACE'd and already in EXTRA_DIST.
+
+ * configure.in: Use AM_SANITY_CHECK_CC.
+
+ * configure.in: Use AM_FUNC_ERROR_AT_LINE.
+ * lib/Makefile.am (EXTRA_DIST): Put error.c here.
+ (su_SOURCES): Remove error.c
+ Suggested by Ulrich Drepper.
+
+ * configure.in (GNU_PACKAGE): AC_SUBST it for the src/*.sh scripts.
+ * src/Makefile.am (.sh): Substitute for @GNU_PACKAGE@ and @VERSION@
+ in the four installed scripts.
+ * src/*.sh: Update --version output to conform to the coding standard.
+
+ * acinclude.m4 (AC_HEADER_SYS_TIME_H): New macro.
+ (AM_FUNC_MKTIME): Require AC_HEADER_SYS_TIME_H so that configure's
+ checking... messages don't get nested.
+
+ * configure.in (GNU_PACKAGE): New variable.
+ (PACKAGE_VERSION): Remove it.
+
+ * acconfig.h (GNU_PACKAGE): New variable.
+ (PACKAGE_VERSION): Remove now-unused variable.
+
+ * src/*.c: Update --version output to conform to the coding standard.
+
+Sun Sep 22 22:41:54 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_CHECK_HEADERS): Alphabetize.
+ Update for automake-1.1e.
+
+Thu Sep 19 07:47:18 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/regex.c: Merge with FSF version.
+ * lib/getloadavg.c: Replace with FSF version.
+
+Mon Sep 16 23:13:04 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/strftime.c (strftime): New version, from GNU libc.
+
+Sun Sep 15 23:08:48 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Makefile.am (EXTRA_DIST): Remove acinclude.m4.
+
+Mon Sep 9 22:10:45 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in: Improve handling of math library so -lm is used
+ only when it's actually required. That makes a difference when
+ using dynamic linking.
+ Remove check that added -lm to LIBS.
+ (SQRT_LIBM): Test for and AC_SUBST it.
+ (POW_LIBM): Likewise.
+ (SEQ_LIBM): Likewise.
+ Motivation and suggestions from Ulrich Drepper.
+
+ * src/Makefile.am (factor_LDADD, printf_LDADD, seq_LDADD):
+ Set these using new @SQRT_LIBM@, @POW_LIBM@, and @SEQ_LIBM@ resp.
+ Also set corresponding _DEPENDENCIES variables.
+
+Sat Sep 7 12:41:39 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/system.h: Add comments justifying IS* versions of ctype.h macros.
+
+ * lib/getdate.y: Define and use upper case variants of ctype.h
+ is* macros. From Bruno Haible.
+
+Thu Sep 5 22:12:20 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/strftime.c: New version from glibc.
+
+Wed Sep 4 23:39:51 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (ALL_LINGUAS): Add dutch (nl).
+
+Mon Sep 2 10:52:55 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/*.c (usage): Tell where to report bugs.
+
+Sun Sep 1 07:56:07 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AM_FUNC_MKTIME): Use it.
+ (AC_REPLACE_FUNCS): Remove mktime.
+ (AM_INIT_AUTOMAKE): Use it.
+ (AM_PROG_INSTALL): Remove. AM_INIT_AUTOMAKE does this.
+ (AC_PROG_MAKE_SET): Likewise.
+ (jm_MAINTAINER_MODE, fp_C_PROTOTYPES): Rename with
+ AM_ prefix for latest automake/aclocal.
+
+ * Makefile.am (EXTRA_DIST): Add acinclude.m4.
+
+ * acinclude.m4: New file -- derived from aclocal.m4.
+ * aclocal.m4: This file is now generated by the aclocal program
+ (which comes with the automake package.)
+
+Sat Aug 17 00:14:55 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/strftime.c: Update from GNU libc -- this adds back %z and %s
+ formats and reverts to old behavior where unrecognized format like
+ %E is treated as eqivalent to `E'.
+
+Sun Aug 4 09:14:28 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * checks/: New directory.
+ * checks/Makefile.am: New file.
+ * checks/nice: New file. Derived from tests from Eric Backus.
+ * configure.in (AC_OUTPUT): Add new directory: checks.
+ * Makefile.am (SUBDIRS): Likewise.
+
+ * src/nice.c (main): Allow `+' in options like -+8 and -+13.
+
+Fri Aug 2 21:45:06 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/nice.c (main): Set minus_flag to zero in two places.
+ Otherwise, `nice --1 -3' would mistakenly do the equivalent of
+ `nice --3'. Thanks to Eric Backus <ericb@lsid.hp.com> for the
+ test cases.
+
+ * configure.in (check for /proc/uptime): New check.
+ * acconfig.h (SAVE_PROC_UPTIME): #undef it. Reorder so symbols
+ are sorted again.
+ *src/who-users.c (print_uptime) [HAVE_PROC_UPTIME]: Read from
+ /proc/uptime.
+ From Ulrich Drepper.
+
+Thu Aug 1 22:38:38 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_REPLACE_GNU_GETOPT): No longer use it.
+ It isn't necessary because the cpp-time checks of getopt.c and
+ getopt1.c are at least as good.
+ * lib/Makefile.am (EXTRA_DIST): Remove getopt.c and getopt1.c.
+ (su_SOURCES): Add getopt.c and getopt1.c
+ This reverts much of the April 23 change.
+
+Sat Jul 27 17:22:14 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/system.h (bindtextdomain) [!ENABLE_NLS]: Undefine to avoid
+ redefinition warnings on solaris.
+ (textdomain) [!ENABLE_NLS]: Likewise.
+
+Sun Jul 21 09:47:55 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_REPLACE_FUNCS): Replace getline.c.
+ Add related check for the getdelim function.
+ From Ulrich Drepper -- as done in gettext.
+
+ * src/stty.c (usage): Correct typo (-iucl -> -iuclc) in usage message.
+ From Thomas Olsson <d95to@efd.lth.se>.
+
+Sat Jul 20 17:01:56 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (PACKAGE_VERSION): Use space instead of hyphen to
+ separate PACKAGE and VERSION.
+
+Wed Jul 17 23:13:19 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/chroot.c: Include <sys/types.h> before system.h.
+ * src/seq.c: Likewise.
+ * src/yes.c: Likewise.
+ From Arne Juul.
+
+Tue Jul 16 00:06:33 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/strftime.c (strftime): Use `(void)0' as second arg to add macro.
+ Omitting that second arg made some HPUX C compiler report an error.
+ From Kaveh R. Ghazi.
+
+Mon Jul 15 23:42:57 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/who-users.c (print_uptime): Reverse `days' and `day' in
+ uptime message. From Kaveh R. Ghazi.
+
+ * Many files: Update FSF address.
+
+Sun Jul 14 20:05:34 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/who-users.c (print_uptime): Use 0, not undefined errno in
+ couldn't-get-boot-time diagnostic. From Ulrich Drepper.
+
+Sat Jul 13 14:22:54 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/chroot.c (usage): Add a `\' after `\n' in usage message.
+ Otherwise, SunOS's /bin/cc chokes.
+
+ * src/stty.c [GWINSZ_BROKEN]: Remove thus-guarded `#undef TIOCGWINSZ'.
+ GWINSZ_BROKEN can't be defined anymore.
+
+ * configure.in (boot time test): Use AC_EGREP_CPP instead of
+ AC_EGREP_HEADER; #endif, instead of #fi.
+ (AM_SYS_POSIX_TERMIOS, AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL): Use
+ these macros instead of the tests from which they were derived.
+ ($am_cv_sys_posix_termios): Renamed to have am_ prefix instead of su_.
+
+Wed Jul 10 22:57:29 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * aclocal.m4 (fp_PROG_CC_STDC): Include sys/stat.h in test program
+ so that DYNIX/ptx V4.1.3 doesn't use `-Xc -D__EXTENSIONS__' -- with
+ those options on that system, sys/stat.h gets compile errors.
+ With help from Marcus Daniels.
+
+ * getopt.c: Update from gettext-0.10.23.
+ * getopt1.c: Likewise.
+ * getopt.h: Likewise.
+
+Sun Jul 7 22:40:08 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * aclocal.m4 (AM_SYS_POSIX_TERMIOS): New macro, derived from test
+ in configure.in.
+ (AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL): Likewise.
+
+Sat Jul 6 12:47:48 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_REPLACE_FUNCS): Add group_member.
+ (AC_LINK_FILES): Create link lib/group_member.c to lib/group-member.c.
+ * lib/Makefile.am (su_SOURCES): Remove group-member.c.
+ (EXTRA_DIST): Add group-member.c here.
+
+Thu Jul 4 22:40:06 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/expr.c (docolon): Remove space before newline in usage message.
+
+Sat Jun 29 18:58:20 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (PACKAGE_VERSION): Add `GNU ' prefix so we see
+ it in the output of --version. Reported by RMS.
+
+Tue Jun 18 22:14:42 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * aclocal.m4: Update from gettext-0.10.20.
+ * ABOUT-NLS: Likewise.
+ * intl/*: Likewise.
+
+Sun Jun 16 13:44:36 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * doc/Makefile.am (EXTRA_DIST): Add texinfo.tex.
+
+Thu Jun 6 21:57:08 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * po/Makefile.in.in: Update from gettext-0.10.16.
+ * intl/*: Likewise.
+ * ABOUT-NLS: Likewise.
+ * aclocal.m4 (AC_REPLACE_GNU_GETOPT): Move definition to precede
+ gettext-related ones.
+ Update from gettext-0.10.16.
+
+Wed May 29 21:28:53 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * expr.c (docolon): Give a warning when the first character
+ of the basic regular expression is `^'.
+
+Mon May 20 22:56:06 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * id.c (xgetgroups): New function, factored out of
+ print_group_list and print_full_info.
+ (print_group_list): Call it.
+ (print_full_info): Call it.
+
+ * lib/Makefile.am (getdate.c): Disable dependencies that can
+ require rerunning YACC when not in maintainer mode.
+ (posixtm.c): Likewise.
+
+Tue May 14 18:47:35 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * id.c (print_group_list): When USERNAME is specified use
+ getugroups to get the number of groups.
+ (print_full_info): Likewise.
+
+Sun May 19 21:45:49 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * seq.c (usage): Make it clearer.
+
+Sat May 18 13:29:46 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * expr.c (main): Don't recognize --help, --h, --he, --version,
+ --v, etc. if the POSIXLY_CORRECT environment variable is set.
+ * echo.c (main): Likewise.
+ * printf.c (main): Likewise.
+ * test.c (main): Likewise.
+
+ * expr.c (docolon) [RE_SYNTAX_POSIX_BASIC]: Revert change of Mar 1.
+
+Tue May 7 22:10:20 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * configure.in: Require autoconf-2.10.
+
+ * aclocal.m4 (jm_MAINTAINER_MODE): New macro.
+ * configure.in (jm_MAINTAINER_MODE): Use it.
+
+Mon May 6 22:40:54 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * lib/strftime.c: Update from GNU libc.
+
+Sat May 4 20:54:32 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * system.h [IN_CTYPE_DOMAIN]: Rename from ISASCII.
+ * seq.c: Remove useless void casts of *printf return values.
+
+Mon Apr 29 22:23:40 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * basename.c (usage): Mark translatable strings.
+ * chroot.c (main): Likewise.
+ * basename.c (main): Separate messages about `too few' and `too many'
+ arguments to ease translation.
+ * dirname.c (main): Likewise.
+ * date.c (usage): Change TAB in message to spaces. Doing that seems
+ to have worked around a problem with something in gettext that was
+ producing a truncated usage message for date's usage.
+ From François Pinard.
+
+Sun Apr 28 17:10:03 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * configure.in: Make fp_C_PROTOTYPES precede AC_C_INLINE.
+ Otherwise, some systems lose because the value AC_C_INLINE choses
+ with plain `cc' is different from that chosen when using the ANSI-mode
+ C compiler. From Kaveh Ghazi.
+
+Tue Apr 23 22:05:35 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * aclocal.m4 (AC_REPLACE_GNU_GETOPT): New macro.
+ * configure.in: Use it.
+ * lib/Makefile.am (su_SOURCES): Remove getopt.c and getopt1.c.
+ (EXTRA_DIST): Add getopt.c and getopt1.c
+
+ * whoami.c (main): Declare to return int, not void.
+ * who-users.c (main): Likewise.
+ * yes.c (main): Likewise.
+
+ * src/*.c, src/*.h: Update Copyright years to include 1996.
+
+Sun Apr 21 08:04:51 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * date.c (usage): Describe new %V format. From Karl Berry.
+
+ * Makefile.am (LDADD): Put @INTLLIBS@ before package library.
+
+Sat Apr 20 22:22:01 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * chroot.c (usage): Improve help message.
+ Enclose message strings in _().
+ * seq.c (usage): Improve help message.
+ * factor.c (usage): Likewise.
+ From Karl Berry.
+
+Fri Apr 19 23:48:53 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * Makefile.am (cvs-dist): New rule. Based on the one from
+ Tom Tromey's automake.
+
+Thu Apr 18 23:16:41 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * basename.c (basename): Rewrite so it doesn't rely on strrchr,
+ and hence doesn't need to include string.h -- on some alpha-based
+ OSF systems, there's a conflicting prototype for basename in string.h.
+ Reported by Kaveh Ghazi.
+
+ * configure.in (AC_REPLACE_FUNCS): Add basename.
+ * lib/Makefile.am (EXTRA_DIST): Add basename.c.
+ (su_SOURCES): Remove basename.c.
+ From Kaveh Ghazi.
+
+Tue Apr 16 20:24:44 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * src/Makefile.am (who.c): Qualify who-users.c reference with
+ $(srcdir)/ prefix.
+ (users.c): Likewise.
+ (uptime.c): Likewise.
+ From François Pinard.
+
+ * configure.in: Always invoke AC_GETLOADAVG, not just if we're
+ building uptime.
+
+Sat Apr 13 13:24:35 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * getloadavg.c: Test cpp-defined __sun as well as sun, because
+ in strict ANSI mode, only __sun is defined. From Kaveh Ghazi.
+
+ * date.c (usage): Add missing `\n\' at the end of newly added
+ lines for %e and %z.
+
+ * who-users.c (print_uptime): Call getloadavg only if we have it.
+
+Fri Apr 12 22:03:13 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * configure.in (LINGUAS): Add de.
+
+ * date.c (usage): Describe %e and %z. Reported by Karl Berry.
+
+ * who-users.c: Mark translatable strings in new code.
+
+Wed Apr 10 21:26:30 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * configure.in: Add test for boot_time.
+ From Kaveh Ghazi.
+
+ * lib/Makefile.am (EXTRA_DIST): Add getloadavg.c.
+
+ * src/Makefile.am (EXTRA_PROGRAMS): Add uptime.
+ (BUILT_SOURCES): Add uptime.c.
+ (MOSTLYCLEANFILES): Add uptime.c.
+ (uptime.c): Add rule to build it from who-users.c.
+
+ * who-users.c: Reindent.
+ (UT_TIME_MEMBER): New macro.
+ (print_uptime): Use it instead of #ifdef HAVE_UTMPX_H #else.
+ (print_entry): Likewise.
+
+Tue Apr 9 23:57:19 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * who-users.c (print_uptime) [UPTIME]: New function. From Kaveh Ghazi.
+
+Sun Apr 7 11:58:13 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * seq.c (print_numbers): Rearrange loops to get it right.
+ Reported by Karl Eichwalder <ke@ke.Central.DE>.
+
+ * seq.c (print_numbers): Give more precise diagnostic when INCREMENT
+ is inconsistent with START and LIMIT.
+ (usage): Clean up help message.
+
+ * factor.c (usage): Give minimal description of the program.
+ (print_factors): Give a better diagnostic.
+ (main): Suggest --help upon failure.
+ Reported by Karl Eichwalder <ke@ke.Central.DE>.
+
+ * seq.c (print_numbers): Fix off-by-one error in
+ backwards-counting loop. Reported by Karl Eichwalder.
+
+ * strftime.c (mon_week_ISO): New function to implement new %V format.
+ (sun_week): Make TM parameter `const'.
+ (mon_week): Likewise.
+ (mon_week): Rewrite to implement %W format correctly.
+ (strftime): Handle %V format.
+ Reported by Arne Juul.
+
+Fri Apr 5 07:33:00 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * strftime.c (sun_week): Make %U work properly.
+ Before, `date -d '1 Jan 1995' +%U' output `00'. Now it prints `01'.
+
+ * nice.c (main): Simplify option handling. Before, `nice -18 -- nice'
+ improperly printed `8'. Patch from Frank Korz.
+ (main): Use `if' stmt, not while loop, around getopt invocation.
+ Otherwise, `./nice --a=1 -1 ./nice' (in which old-style option
+ follows a long option) gets an error.
+
+Thu Apr 4 20:14:02 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * aclocal.m4 (fp_PROG_CC_STDC): Change -Xc -D_POSIX_C_SOURCE to
+ `-Xc -D__EXTENSIONS__' because of problems with Solaris header
+ files. Suggested by Kaveh Ghazi.
+
+Wed Apr 3 07:08:57 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * src/Makefile.am (INCLUDES): Add -I$(srcdir) to get system.h
+ when srcdir != builddir. From Kaveh Ghazi.
+
+ * lib/getugroups.c: Include stdio.h before grp.h. Because
+ <grp.h> on alpha OSF1 V2.0 uses "FILE *". From Kaveh Ghazi.
+
+Sun Mar 31 16:26:06 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * configure.in: Simplify checking for math library.
+ This also eliminates some confusing output from configure.
+ Suggested by François Pinard.
+
+Fri Mar 29 22:13:10 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * src/Makefile.am (INCLUDES): Replace -I$(top_srcdir)/intl with
+ -I../intl. With the former, compiles didn't find libintl.h when
+ configured with `--srcdir=..'. Reported by Marcus Daniels
+ <marcus@sysc.pdx.edu>.
+
+ * doc/Makefile.am (EXTRA_DIST): Set to getdate.texi so that file
+ gets distributed.
+
+ * src/Makefile.am (EXTRAdir): Set to $(bindir).
+
+Thu Mar 28 23:01:48 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * ChangeLog.0: New file.
+ * Makefile.am (EXTRA_DIST): Add ChangeLog.0.
+
+Thu Mar 28 00:06:28 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * man/Makefile.am (man_MANS): Add chroot.1.
+ * src/Makefile.am (EXTRA_PROGRAMS): Add chroot.
+
+Sun Dec 24 10:55:34 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * configure.in: Check for chroot a la uname.
+ * src/chroot.c, man/chroot.1: New files.
+
+Sun Mar 24 11:44:35 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * su.c: Protoize and reorder functions to obviate forward decls.
+
+ * seq.c: Make parameters const where appropriate.
+ Rename global FROM to START.
+ (print_numbers): Rewrite loops to avoid incrementing. Instead,
+ use `x = first + i * increment' paradigm. Otherwise, with inexact
+ increment, you could miss the last value.
+
+ * xstrtod.c: New file.
+ * xstrtod.h: New file.
+ * lib/Makefile.am: Add xstrtod.c and xstrtod.h.
+ * seq.c: Include xstrtod.h.
+ (scan_double_arg): Use xstrtod rather than strtod directly.
+
+ * src/*: Update FSF's address.
+
+Thu Mar 21 16:43:13 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * src/*.c (main): Declare to be of type int, not void.
+
+Sat Mar 16 10:07:49 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * configure.in (PACKAGE_VERSION): New macro.
+ (OPTIONAL_BIN_PROGS): Rename from OPTIONAL_PROGS.
+ * acconfig.h (PACKAGE_VERSION): Add it.
+ * src/Makefile.am: Remove rules for generating version.c.
+ Remove references to version.o, version.h, and stamp-v.
+ [.sh]: Change @VERSION@ to @PKG_VERSION@.
+ On RHS of sed substitution, use @PACKAGE_VERSION@, not GNUVER.
+ (OPTIONAL_BIN_PROGS): Rename from OPTIONAL_PROGS.
+ (install-exec-local): New target/rules to make the installed su
+ binary setuid root or failing that, to delete it.
+ * false.sh groups.sh nohup.sh true.sh: Use @PKG_VERSION@,
+ not @VERSION@.
+ * version.c: Remove file.
+ * version.h: Remove file.
+ * basename.c date.c dirname.c echo.c env.c expr.c factor.c
+ hostname.c id.c logname.c nice.c pathchk.c printenv.c printf.c
+ pwd.c seq.c sleep.c stty.c su.c tee.c test.c tty.c uname.c
+ who-users.c whoami.c yes.c: Don't include version.h.
+ (main): Use PACKAGE_VERSION instead of version_string.
+
+Fri Mar 15 23:42:29 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * basename.c: Remove __P-protected prototype for basename.
+ Reported by François Pinard.
+ (remove_suffix): Move to precede use. Remove prototype.
+ Declare formal parameter SUFFIX to be const.
+
+ * pathchk.c (validate_path): Cast path_max to size_t before
+ comparing with strlen(path).
+
+ * who-users.c (read_utmp): Declare n_read to be of type size_t
+ rather than int.
+
+Tue Mar 12 17:52:05 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * basename.c date.c dirname.c echo.c env.c expr.c factor.c hostname.c
+ id.c logname.c nice.c pathchk.c printenv.c printf.c pwd.c seq.c
+ sleep.c stty.c su.c tee.c test.c tty.c uname.c who-users.c whoami.c
+ yes.c (main): Initialize for internationalized message support:
+ call setlocale, bindtextdomain, and textdomain.
+ * system.h: Add definitions and includes for NLS.
+ * Makefile.am (SUBDIRS): Add intl and po.
+ * src/Makefile.am (datadir): Define.
+ (localedir): Define.
+ (DEFS): Add LOCALEDIR definition.
+ (LDADD): Add @INTLLIBS@.
+ * aclocal.m4: Add NLS-related macro definitions from
+ gettext distribution.
+ * acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_LC_MESSAGES,
+ HAVE_STPCPY): New macros.
+ Add PACKAGE and VERSION.
+ * configure.in (PACKAGE): Define with AC_DEFINE_UNQUOTED.
+ (VERSION): Likewise.
+ (ALL_LINGUAS): Define.
+ (ud_GNU_GETTEXT): Use it.
+ Link an nls file.
+ (AC_OUTPUT): Reflect addition of two new directories, intl and po.
+ Create po/Makefile.
+ Mostly from François Pinard.
+
+Wed Mar 6 21:40:34 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * who-users.c (print_entry): Use STRUCT_UTMP, not `struct utmp' to
+ declare formal parameter.
+
+Tue Mar 5 22:49:33 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * getdate.y (RelativeMonth): Add 1900 to the year so that relative
+ date specs that push the year through the end of the century work.
+ For example, `date -d "01/01/1998 3 years" +%Y' now prints 2001.
+ From Peter Dalgaard (pd@kubism.ku.dk).
+
+Mon Mar 4 23:46:43 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * seq.c (main): Exit after processing --version.
+ Reported by François Pinard.
+
+Fri Mar 1 23:46:32 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * expr.c (docolon): Don't initialize re_syntax_options to
+ deceptively-named RE_SYNTAX_POSIX_BASIC -- it recognizes non-BRE
+ \?, \+, and \|. Use RE_SYNTAX_POSIX_MINIMAL_BASIC instead.
+
+ * od.c (WINDOWS_SETFILEMODE_BINARY): New macro.
+ (skip) [_WIN32 && _O_BINARY]: Use it.
+ (read_char): Likewise.
+ (read_block): Likewise.
+ [_WIN32 && _O_BINARY]: Include malloc.h and io.h.
+ Based on changes by Gary Newman <gnewman@shore.net>.
+
+Wed Feb 28 21:48:07 1996 Paul Eggert <eggert@twinsun.com>
+
+ * configure.in (LOCALTIME_CACHE):
+ Also define if localtime mishandles unsetting TZ.
+ This works around a localtime bug in mips-dec-ultrix.
+
+Wed Feb 28 23:08:24 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * lib/Makefile.am (su_SOURCES): Add xstrtoul.c.
+ (noinst_HEADERS): Add xstrtoul.h.
+
+ * factor.c: General cleanup. Use xstrtoul, not atoi.
+ Change output format. Allow inputs as large as ULONG_MAX.
+ Allow more than one command line argument.
+
+ * stty.c (wrapf) [!__STDC__]: Indent by one space the first line
+ of the pre-ANSI function definition so ansi2knr doesn't munge it.
+
+ * src/Makefile.am: Adapt for automake-0.30.
+ * lib/Makefile.am: Likewise.
+
+ * expr.c (eval6): Cast strlen to int to avoid warning from gcc -Wall.
+
+Sun Feb 25 22:19:52 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * src/Makefile.am (BUILT_SOURCES): Set to `who.c users.c'.
+ (MOSTLYCLEANFILES): Add who.c and users.c.
+ (who.c): New rule to create this file. Concatenate definition of
+ WHO and contents of who-users.c.
+ (users.c): New rule to create this file. Concatenate definition of
+ USERS and contents of who-users.c.
+
+Sat Feb 24 12:20:58 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * readtokens.c: Unprotoize.
+
+ * expr.c (cmpf): Indent macro uses so ansi2knr doesn't mistake them
+ for function dcls and munge them.
+ (arithf): Likewise.
+ (arithdivf): Likewise.
+
+ * test.c: __P-protect forward declarations.
+ (main): Protoize function definition.
+
+ * date.c (batch_convert): Declare BUFLEN local to be of type size_t,
+ not int.
+
+ * expr.c (docolon): Set re_syntax_options to RE_SYNTAX_POSIX_BASIC
+ so expr's pattern matching uses BASIC (not GNU-extended) REs.
+ Reported by Jim Kingdon.
+
+ * who-users.c (print_entry): Use strchr, not index.
+
+ * configure.in (AC_CHECK_HEADERS): Add sys/socket.h.
+ * canon-host.c [HAVE_SYS_SOCKET_H]: Include <sys/socket.h> for
+ definition of AF_INET on at least SunOS 4.
+
+Tue Feb 13 23:49:16 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * who-users.c (main): When failing because there were
+ `too many arguments,' say so.
+
+Mon Feb 12 23:26:05 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * configure.in (AC_CHECK_FUNCS): Add gethostbyname, gethostbyaddr,
+ and inet_ntoa.
+ (AC_CHECK_HEADERS): Add netdb.h netinet/in.h arpa/inet.h.
+ * lib/canon-host.c: New file.
+ * lib/Makefile.am (su_SOURCES): Add canon-host.c.
+ * src/who.c (print_entry): If possible, canonicalize the host hame.
+ From Miles Bader (miles@gnu.ai.mit.edu).
+
+ Update for automake-0.29.
+ * Makefile.am (CONFIG_HEADER): Don't define. Automake now does it.
+ * src/Makefile.am: Likewise.
+ * lib/Makefile.am: Likewise.
+ * doc/Makefile.am (info_TEXINFOS): Renamed from TEXINFOS.
+ * man/Makefile.am (man_MANS): Renamed from MANS.
+
+Wed Jan 31 23:40:50 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * lib/strftime.c (add_num_tz): New function.
+ (strftime): Handle new %z format.
+ * date.c (main): Accept new option, --rfc-822 (-R).
+ (show_date): Use RFC822-mandated strftime format.
+ From H. Peter Anvin (hpa@storm.net).
+ (usage): Add a line describing the new option.
+
+ * lib/strftime.c (add_num_tz): Don't use local, LENGTH,
+ before it's defined.
+
+Mon Jan 29 19:24:04 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * acconfig.h (PROTOTYPES): Define it.
+
+Fri Jan 19 22:00:08 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * aclocal.m4 (fp_PROG_INSTALL): New macro.
+ * configure.in: Use it instead of AC_PROG_INSTALL.
+
+ * who-users.c: Protoize.
+
+Wed Jan 17 23:37:59 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * stty.c: Protoize and __P-protect forward dcls.
+ (visible): Change parameter type to unsigned int from unsigned char.
+ (integer_arg): Use xstrtol instead of open-coding this.
+
+ * lib/Makefile.am (su_SOURCES): Add xstrtol.c.
+ (HEADERS): Add xstrtol.h.
+
+ * test.c (advance): Protoize function.
+
+ * sleep.c (argdecode): Declare parameter const.
+
+Sat Jan 13 22:31:23 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * stty.c: Indent cpp directives.
+
+Sun Jan 7 23:56:03 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ Use automake to generate Makefile.in files.
+ * Makefile.am: New file.
+ * doc/Makefile.am: New file.
+ * lib/Makefile.am: New file.
+ * man/Makefile.am: New file.
+ * src/Makefile.am: New file.
+
+ * configure.in (OPTIONAL_PROGS, OPTIONAL_SCRIPTS): New variables
+ used in place of PROGS.
+
+Sat Jan 6 05:13:40 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * configure.in (PACKAGE, VERSION): New variables.
+ (fp_C_PROTOTYPES): Use it.
+
+ * printf.c (print_esc_char): Change type of argument from char
+ to int to avoid potential promotion problem.
+ * uname.c (print_element): Likewise.
+
+ * system.h [__P]: New macro.
+
+ * basename.c, date.c, dirname.c, echo.c, env.c, expr.c, factor.c,
+ hostname.c, id.c, logname.c, nice.c, pathchk.c, printenv.c,
+ printf.c, pwd.c, seq.c, sleep.c, tee.c, test.c, tty.c, uname.c,
+ whoami.c, yes.c: Protoize and __P-protect forward dcls.
+
+ * who-users.c: New file. Renamed from who.c.
+ * who.c: Define WHO and include who-users.c.
+ * uses.c: Define USERS and include who-users.c.
+
+ * id.c Remove no-longer-used NGROUPS_MAX cpp macros.
+ (print_group_list) [HAVE_GETGROUPS]: Reorganize to use
+ getgroups (0, NULL) to compute number of groups at run time
+ rather than relying on NGROUPS_MAX at compile time.
+ (print_full_info) [HAVE_GETGROUPS]: Likewise.
+ Suggestion from Roland McGrath.
+
+ * su.c: Remove NGROUPS_MAX junk. It wasn't being used.
+
+Wed Jan 3 19:03:26 1996 Paul Eggert <eggert@twinsun.com>
+
+ * configure.in (LOCALTIME_CACHE): Define if tzset exists and
+ if localtime caches TZ. Check for tzset.
+ * acconfig.h (LOCALTIME_CACHE): New macro.
+ * date.c (putenv): Declare.
+ (universal_time): Remove.
+ (main): If -u is given, set TZ to "UTC0"; this causes date to use
+ UTC uniformly and fixes bugs in the handling of date -u +'%s %Z'.
+ (show_date): Just use localtime and a single format, since TZ will
+ be set properly if -u is given.
+
+Fri Dec 22 21:34:55 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * configure.in: Touch stamp-h only if config.h is remade.
+
+Sun Nov 26 16:09:33 1995 Jim Meyering (meyering@comco.com)
+
+ * test.c (usage): Clarify usage. From Karl Berry.
+
+Wed Nov 22 23:12:47 1995 Jim Meyering (meyering@comco.com)
+
+ * Makefile.in (all et. al.): If make was invoked with -k and a
+ sub-make fails, fail after the loop rather than exiting right away.
+ Otherwise, make's -k option could be ineffective.
+
+Thu Nov 16 21:25:45 1995 Jim Meyering (meyering@comco.com)
+
+ * Makefile.in (default): New default target. Depend on `all' to work
+ around bug in AIX-3.2.5's /bin/make. Reported by Andreas Luik
+ <luik@isa.de>.
+
+Tue Nov 7 23:53:20 1995 Jim Meyering (meyering@comco.com)
+
+ * stty.c (usage): Clarify descriptions of ignpar and ignbrk.
+ From Theodore Ts'o and Ulrich Windl.
+
+Sun Oct 29 08:47:50 1995 Jim Meyering (meyering@comco.com)
+
+ * test.c [TEST_STANDALONE]: Define.
+ * src/Makefile.in (test.o): Remove special rule.
+
+Sat Oct 28 00:49:13 1995 Jim Meyering (meyering@comco.com)
+
+ * aclocal.m4 (jm_WITH_AUTODEPS): New directive.
+ * configure.in: Use it.
+
+ * lib/Makefile.in (INCLUDE, COMPILE): New variables.
+ (.c.o): Rewrite to be more like src/Makefile.in.
+ Add line that (--with-autodeps) will include mkdep-Makefile.
+ (distclean): Remove .deps.
+ * src/Makefile.in: Likewise.
+
+ * mkdep-Makefile: New file.
+ * Makefile.in (DISTFILES): Add mkdep-Makefile.
+
+ * doc/Makefile.in (mostlyclean): Remove *.info.
+
+ * date.c: New option --reference=FILE (-r FILE) analogous to the
+ like-named touch option.
+ (main): Recognize it and give diagnostic for misuse.
+ (usage): Describe briefly.
+ From Franc,ois Pinard.
+
+ * date.c (batch_convert): Close input stream also when it's not stdin.
+ (main): Reorganize to do option-consistency checks before all else.
+
+Tue Sep 26 23:05:01 1995 Jim Meyering (meyering@comco.com)
+
+ * man/Makefile.in (install-data, uninstall): Use sed not basename.
+ The GNU Coding Standard suggests that only a select set of
+ relatively standard utilities be used in Makefiles. basename is
+ not among them. Suggested by Ulrich Drepper.
+
+Tue Aug 8 22:57:34 1995 Jim Meyering (meyering@comco.com)
+
+ * yes.c: Include system.h to get definition of _.
+
+Mon Aug 7 23:27:54 1995 Jim Meyering (meyering@comco.com)
+
+ * system.h (_): Define macro -- as empty for now.
+ * src/*.c: Annotate localizable strings with _(...). From Franc,ois.
+
+ * Makefile.in (DISTFILES): Don't distribute unneeded COPYING.LIB.
+ From Franc,ois.
+
+Fri Jun 23 23:04 1995 Jim Meyering (meyering@comco.com)
+
+ * configure.in (AC_REPLACE_FUNCS): Add memcpy and memset.
+ Add checks for floor, modf, and rint -- all used by seq.c.
+
+Mon Jun 12 00:26:54 1995 Jim Meyering (meyering@comco.com)
+
+ * getdate.y (Convert): Use 2037 as threshold, not 1999.
+ Before years after 1999 were treated as invalid.
+ From Andreas Schwab.
+
+Sat May 27 00:35:47 1995 Jim Meyering (meyering@comco.com)
+
+ * system.h [!STDC_HEADERS && HAVE_MEMORY_H]: Include memory.h.
+ Without this, SunOS doesn't get type for memchr.
+ Reported by Kaveh Ghazi.
+
+Sun May 21 07:20:55 1995 Jim Meyering (meyering@comco.com)
+
+ * Makefile.in (.PHONY): TAGS is not a phony target. From Franc,ois.
+
+ * All Makefile.in (install-exec, install-exec): New targets.
+ From Karl Berry.
+
+ * all Makefile.in (maintainer-clean): Renamed from realclean
+ per GNU Standards.
+
+Mon May 15 01:00:08 1995 Jim Meyering (meyering@comco.com)
+
+ * all source files (usage): Include one- or two-line synopsis
+ in --help output. From Karl Berry.
+
+Sat May 13 08:57:20 1995 Jim Meyering (meyering@comco.com)
+
+ * lib/Makefile.in (maintainer-clean): Rename from realclean.
+ (.PHONY): New dependencies.
+ [.c.o]: Remove -I. since safe-l?stat.h are no longer used.
+
+Fri May 12 21:25:50 1995 Jim Meyering (meyering@comco.com)
+
+ * test.c (usage): Remove duplicate descriptions of --help
+ and --version. From Karl Berry.
+
+ * pathchk.c: Use stat (lstat), not safe_stat (safe_lstat).
+ * test.c: Likewise.
+ * who.c: Likewise.
+
+ * lib/Makefile.in (SOURCE): Add memcpy.c, memset.c.
+ Remove all reference to (now unused) safe-xstat.hin.
+
+Tue Apr 18 22:57:43 1995 Jim Meyering (meyering@comco.com)
+
+ * configure.in (AC_OUTPUT): Use echo, not date, to avoid creating
+ unnecessary conflicts for people using version control software
+ like RCS and CVS.
+ (AC_ARG_PROGRAM): Use it.
+
+Fri Mar 10 21:14:11 1995 Jim Meyering (meyering@comco.com)
+
+ * src/*.c: Update Copyright dates.
+
+Mon Feb 27 08:05:25 1995 Jim Meyering (meyering@comco.com)
+
+ * system.h: Separate errno declaration from STDC_HEADERS.
+ Remove bcopy, bzero, strchr, strrchr definitions.
+
+ * stty.c (main, set_window_size): Use memset instead of bzero.
+ * su.c (correct_password): Likewise.
+
+ * seq.c Remove \n's from error format strings.
+ (main): Let `seq 1 1' work.
+ Invoke usage always with 1 when failing.
+
+Sat Feb 11 08:27:12 1995 Jim Meyering (meyering@comco.com)
+
+ * src/Makefile.in (install): Fix rules for su to avoid relying on
+ just-built `id' executable. That would lose when cross-compiling and
+ on systems like GNU in which a user may have several effective IDs.
+ (SOURCES, OBJECTS, PROGS): Add seq.
+ * Makefile.in (PROGS): Add seq.
+
+ * configure.in (AC_REPLACE_FUNCS): Add memcmp, memcpy, and memset.
+ (AC_CHECK_FUNCS): Add strchr and strrchr.
+ * lib/Makefile.in (SOURCES): Add memcmp.c, memcpy.c, and memset.c.
+
+ * system.h: Remove index/rindex and bcmp/bcopy/bzero references.
+ Separate errno declaration from STDC_HEADERS.
+
+Thu Jan 26 23:38:04 1995 Jim Meyering (meyering@comco.com)
+
+ * getdate.y (ToSeconds): Properly convert 12am and 12pm.
+ From Takeshi Sone <ts1@tsn.or.jp>.
+
+ * lib/Makefile.in (SOURCES, OBJECTS, DISTFILES): Add readtokens.[coh].
+ (all): Depend on safe-stat.h and safe-lstat.h.
+
+ * date.c (batch_convert): Remove any trailing newline from offending
+ line before including it in the `invalid date' error from `date -f'.
+ Reported by Franc,ois Pinard.
+
+Sat Dec 31 09:25:09 1994 Jim Meyering (meyering@comco.com)
+
+ * factor.c: New file.
+ * Makefile.in (PROGS): Add factor.
+ * src/Makefile.in (SOURCES, OBJECTS, PROGS): Add factor.
+ (factor): New rule.
+
+Mon Dec 26 18:31:08 1994 Jim Meyering (meyering@comco.com)
+
+ * test.c (term): Running `./test \( a -o b' got a seg fault.
+ From from Klaus.Reichl@aut.alcatel.at.
+
+Mon Dec 19 22:05:12 1994 Jim Meyering (meyering@comco.com)
+
+ * src/*.c: Include "error.h" rather than simply declaring
+ `void error ();'.
+ * src/Makefile.in (OBJECTS): Depend on ../lib/error.h.
+
+ * lib/Makefile.in (DISTFILES): Remove safe-xstat.cin.
+ (distclean): Remove references to safe-l?stat.c.
+ Remove all related rules and dependencies.
+
+ * safe-xstat.hin (SAFE_LSTAT, SAFE_STAT): Remove macros.
+ Now that we always define the functions, these are no longer needed.
+
+ * pathchk.c (dir_ok): Use safe_stat instead of SAFE_STAT.
+ * who.c (print_entry): Likewise.
+ * test.c (test_stat, binary_operator): Likewise.
+ (unary_operator): Use safe_lstat instead of SAFE_LSTAT.
+
+Mon Dec 12 22:42:09 1994 Jim Meyering (meyering@comco.com)
+
+ * expr.c (docolon): Zero out re_buffer and re_regs before using them.
+ From H.J. Lu <hjl@nynexst.com>.
+
+Sun Dec 4 14:53:12 1994 Jim Meyering (meyering@comco.com)
+
+ * dirname.c (main): Use strchr and strrchr instead of index and rindex.
+ * echo.c (main): Likewise.
+ * env.c (main): Likewise.
+ * pathchk.c (validate_path): Likewise.
+ * printf.c (print_formatted, print_esc): Likewise.
+ * test.c [member]: Likewise.
+ * who.c (extract_trimmed_name): Likewise.
+ * system.h [!HAVE_STRING_H]: Define strchr to index and strrchr to
+ rindex instead of the other way around.
+
+ * doc/Makefile.in (DISTFILES): Add getdate.texi.
+
+Sat Dec 3 07:59:55 1994 Jim Meyering (meyering@comco.com)
+
+ * configure.in (AC_CHECK_FUNCS): Add strchr and strrchr.
+ (AC_CHECK_HEADERS): Add stdlib.h.
+ (LIBS): If the strtod replacement is required, check for pow in -lm.
+ * src/Makefile.in (printf): Remove hard-coded -lm. Not every
+ system has it.
+
+Thu Nov 17 23:47:26 1994 Jim Meyering (meyering@comco.com)
+
+ * who.c (list_entries): Delete. Split in two actually...
+ (list_entries_users, list_entries_who, userid_compare): New functions.
+ (list_entries_users): Sort the user names. Reported by
+ Michael I Bushnell.
+ Topologically sort the functions and remove fwd declarations.
+
+
+ -----
+
+ Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2006
+ Free Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without
+ modification, are permitted provided the copyright notice
+ and this notice are preserved.
diff --git a/old/sh-utils/ChangeLog.0 b/old/sh-utils/ChangeLog.0
new file mode 100644
index 0000000..77705c8
--- /dev/null
+++ b/old/sh-utils/ChangeLog.0
@@ -0,0 +1,1720 @@
+Sat Nov 05 08:35:25 1994 Jim Meyering (meyering@comco.com)
+
+ * Version 1.12.
+
+Fri Nov 04 06:01:00 1994 Jim Meyering (meyering@comco.com)
+
+ * Version 1.11.
+
+Wed Nov 02 18:52:20 1994 Jim Meyering (meyering@comco.com)
+
+ * doc/Makefile.in (install): Remove test for existence of info
+ file. Simply change to $(srcdir) instead.
+
+Wed Oct 26 23:40:07 1994 Jim Meyering (meyering@comco.com)
+
+ * safe-xstat.hin [EINTR]: Always define safe_l?stat.
+ Define it __static -- which is `static' for most includers,
+ but `/* empty */' for safe-xstat.cin.
+ * safe-xstat.cin: Define __static to nothing so we get public
+ safe_l?stat functions in the library.
+
+ * Makefile.in (All actions invoking $(MAKE) from within compound
+ (e.g. `for') sh statements): Exit non-zero if the sub-make fails.
+ Otherwise, the top-level make may exit successfully when it should
+ fail. From Jim Kingdon (kingdon@cygnus.com).
+
+Sun Oct 23 23:36:26 1994 Jim Meyering (meyering@comco.com)
+
+ * safe-xstat.hin: Don't use a statement expression here.
+ Use an inline function instead.
+ * safe-xstat.cin: Don't duplicate the definition of safe_l?stat here.
+ Get the definition from safe-xstat.hin.
+
+Fri Oct 21 00:57:23 1994 Jim Meyering (meyering@comco.com)
+
+ * man/Makefile.in: Fix typo that had su.1 being installed as
+ `man/man1/.1'. From Kjetil Torgrim Homme.
+
+ * basename.c, dirname.c, expr.c, pathchk.c, sleep.c (main): Diagnose
+ wrong number of argument -- usually too few -- instead of just
+ referring the user to the --help option. Reported by Karl Berry.
+
+Mon Oct 17 23:55:41 1994 Jim Meyering (meyering@comco.com)
+
+ * doc/Makefile.in (install): Install the info files from either
+ the source directory or the object directory.
+ From Ian Lance Taylor (ian@cygnus.com).
+
+Sun Oct 16 12:14:02 1994 Jim Meyering (meyering@comco.com)
+
+ * lib/Makefile.in (distclean): Don't delete getdate.c and posixtm.c
+ here since they are not distributed.
+ (realclean): Delete them here instead.
+ From Francois Pinard.
+
+Mon Oct 10 21:44:42 1994 Jim Meyering (meyering@comco.com)
+
+ * id.c (print_group_list, print_full_info): Use more precise
+ feature tests. Rather than assuming that a definition for
+ NGROUPS_MAX implies the existence of the getgroups function,
+ test for HAVE_GETGROUPS explicitly.
+ * su.c (log_su): Likewise. Similarly, check HAVE_INITGROUPS.
+ Both from Kaveh Ghazi. He reported that a Pyramid 9820 OSx 5.0d
+ (Dual universe SVR3/BSD4.2) system had NGROUPS_MAX and syslog.h
+ but not getgroups, initgroups or the syslog functions.
+
+Fri Oct 07 19:42:35 1994 Jim Meyering (meyering@comco.com)
+
+ * doc/Makefile.in (sh-utils.dvi): Depend on version.texi.
+ * version.texi: Use RELEASEDATE, not RELEASE_DATE.
+ * sh-utils.texi: Likewise.
+
+ * configure.in: Test for crypt in -lcrypt for NetBSD.
+ Reported by Greg Hudson (ghudson@mit.edu).
+
+ * system.h: Don't define lstat. safe-l?stat.h does that now.
+
+Thu Oct 06 21:14:07 1994 Jim Meyering (meyering@comco.com)
+
+ * src/Makefile.in (link_command): Remove $(CFLAGS). Because
+ the default value usually includes -g, Linux users were getting
+ statically linked executables. With this removal they'll get
+ much smaller, dynamically linked ones by default.
+
+ * lib/Makefile.in (safe-lstat.o): Depend on safe-stat.h, too.
+
+Sun Oct 02 16:15:32 1994 Jim Meyering (meyering@comco.com)
+
+ * src/Makefile.in: Don't use binprefix. Use autoconf-2's
+ @program_transform_name@ instead.
+ * man/Makefile.in: Likewise for manprefix.
+
+ * safe-xstat.hin [!S_ISLNK]: Include safe-stat.h and define
+ SAFE_LSTAT and safe_lstat to their symlink-ignorant counterparts.
+ * lib/Makefile.in (extract_lstat, extract_stat): Add sed rules to
+ extract the new cpp directives into safe-lstat.h, but not into
+ safe-stat.h.
+
+Sat Oct 01 00:14:10 1994 Jim Meyering (meyering@comco.com)
+
+ * system.h: Remove conditional definition of mode_t.
+ configure takes care of this now.
+
+ * configure.in: Add -l$lib (not $lib) to LIBS when checking
+ for syslog. From Kaveh Ghazi.
+
+ * date.c (batch_convert): Use K&R style function definition.
+ From Kaveh Ghazi.
+
+ * date.c (main): When reading dates from a file with a +FORMAT-style
+ user-specified format, don't print the leading `+'. Franc,ois Pinard
+ noticed this problem.
+ Make an error message clearer. From Franc,ois.
+
+ * lib/Makefile.in (DISTFILES): Add getline.h.
+ (SOURCES, OBJECTS): Add getline.c, getline.o.
+
+ * safe-xstat.hin: Don't include <sys/types.h> or <sys/stat.h>.
+ Otherwise, we'd lose when the includer has already included
+ <sys/stat.h> on systems that aren't protected against multiple
+ inclusion. Add a note that those headers must be included before
+ this one. Don't include <config.h> either.
+ * safe-xstat.cin: Include <sys/types.h> and <sys/stat.h> here instead.
+ Include <config.h> here, too.
+ Kaveh Ghazi reported this problem.
+
+Fri Sep 30 22:40:21 1994 Jim Meyering (meyering@comco.com)
+
+ * date.c (main): Accept new option: (-f) --file=datefile.
+ (batch_convert): New function. Suggested by Karl Berry.
+
+ * date.c (main): Diagnose use of conflicting options.
+ Revamp non-option argument processing.
+ Detect write errors.
+
+ * lib/*.c, src/*.c: Remove CONFIG_BROKETS conditional.
+ * lib/Makefile.in src/Makefile.in: Don't define it.
+
+ configure.in (AC_CHECK_FUNCS): Add getcwd. From Kaveh Ghazi.
+
+ * safe-xstat.c.in, safe-xstat.h.in: Rename to safe-xstat.cin and
+ safe-xstat.hin so the names don't exceed the 14-character limit.
+ Reported by Kaveh Ghazi.
+
+Mon Sep 26 19:49:40 1994 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Don't use $su_cv_sys_tiocgwinsz_in_termios_h
+ uninitialized. From R. Bernstein <rocky@panix.com> and Kaveh Ghazi.
+ (NICE_PRIORITY): Fix typo that caused omission from PROGS of nice
+ and nohup on systems with nice but not setpriority.
+ From Andreas Schwab.
+
+Sat Sep 24 10:13:00 1994 Jim Meyering (meyering@comco.com)
+
+ * Makefile.in (stamp-h.in): Create using echo, not date.
+ Using the latter could easily lead to rcs/cvs merge conflicts.
+ * configure.in (stamp-h): Ditto, though this is less important
+ because stamp-h isn't distributed.
+
+ * nice.c (main): Revamp option processing to detect options
+ like `--7' manually and pass the rest off to getopt_long.
+ (isinteger): Use ISDIGIT.
+ Use parse_long_options.
+
+ * system.h: Include <ctype.h> and add IS* macros.
+ * expr.c: Don't include <ctype.h> or define IS* macros since
+ system.h now does that.
+ * printf.c: Ditto.
+
+ * date.c (usage): Add description of numeric modifiers.
+
+ * printf.c (print_formatted): Declare DIREC_LENGTH size_t, not int.
+ (print_esc_string): Ditto for LENGTH.
+ * dirname.c (main): Cast string literal to (char*).
+ * stty.c (wrapf): Declare first argument const char *.
+ * tee.c (main, tee): More const dcls and casting.
+ * who.c (read_utmp): New variable: size to avoid type warnings.
+ All of these eliminate compilation warnings reported by
+ Franc,ois Pinard.
+
+ * doc/Makefile.in (DISTFILES): Add version.texi because generating
+ that file now depends on having a version of date that can handle
+ formats like `+%Y %B'.
+ (version.texi): Generate RELEASE_DATE, too.
+ * sh-utils.texi: Use RELEASE_DATE instead of hard-coded date.
+
+ * long-options.h: Prepend underscores to arg names in prototype
+ to avoid warnings about shadowing.
+
+ * src/Makefile.in: Add dependencies on long-options.h.
+
+ * configure.in: Make having autoconf-1.120 a prerequisite.
+
+ * sh-utils.texi [INFO-DIR-ENTRY]: Add an entry for each `invoking'
+ node. Regularize punctuation, indexing, and xrefs.
+ From Franc,ois Pinard.
+
+ * date.c (usage): Tweak the usage message a little.
+ Add `const' to more dcls.
+
+ * stty.c: Add `const' to more dcls.
+ * su.c: Ditto.
+ * who.c: Ditto.
+
+ * tee.c (main): Use _POSIX_SOURCE, not _POSIX_VERSION.
+
+Sat Sep 17 15:48:10 1994 Jim Meyering (meyering@comco.com)
+
+ * (doc): New subdirectory with texinfo documentation.
+ Thanks to Franc,ois Pinard and Karl Berry!
+ Note however that it contains mainly the information from the
+ `man' pages, so it is not good documentation. But this way,
+ at least we don't have to maintain the troff man pages anymore.
+
+ * su.c: Test !HAVE_ENDGRENT and !HAVE_ENDPWENT rather than
+ _POSIX_SOURCE to determine whether endgrent and endpwent should
+ be defined away.
+ * configure.in (AC_CHECK_FUNCS): Add endgrent and endpwent.
+
+ * who.c: Test HAVE_SYS_PARAM_H rather than _POSIX_SOURCE
+ to determine whether <sys/param.h> should be included.
+
+ * date.c (main): Rewrite command-line argument handling code
+ to give diagnostics for inconsistent options.
+
+ * Makefile.in: Restructure dependencies using local-*
+ and recursive-* targets to avoid evil double-colon rules.
+ Although the actions assiciated with double-colon rules are
+ run sequentially using GNU make-3.71, POSIX doesn't guarantee
+ that behavior. The next release may run them in parallel.
+ Running the old rules in parallel would sometimes delete
+ config.status before it was used in a subdirectory make.
+ With several suggestions from Franc,ois Pinard.
+
+Thu Sep 15 19:10:51 1994 Jim Meyering (meyering@comco.com)
+
+ * stty.c [VWERSE && !VWERASE]: Define VWERASE for AIX-3.2.5.
+
+Sat Sep 03 00:41:53 1994 Jim Meyering (meyering@comco.com)
+
+ * lib/Makefile.in (safe-lstat.c, safe-lstat.h, safe-stat.c,
+ safe-stat.h): Use $(srcdir) to find source files.
+ (.c.o): Use -I. to get safe-lstat.h and safe-stat.h from the
+ build directory.
+ * src/Makefile.in (incl): Add -I../lib to get lib/safe-lstat.h and
+ lib/safe-stat.h from the build directory. From Michael I Bushnell
+ <mib@geech.gnu.ai.mit.edu>.
+
+ * Makefile.in: Remove rules to create installation directories.
+ * {src,man}/Makefile.in: Put them here instead.
+
+ * configure.in: Update to take advantage of autoconf 2.0 features.
+
+Sat Aug 27 16:57:20 1994 Jim Meyering (meyering@comco.com)
+
+ * system.h [BROKEN_STAT_MACROS]: Remove unnecessary #ifdef's.
+ From Francois Pinard.
+
+Thu Aug 18 11:44:48 1994 Jim Meyering (meyering@comco.com)
+
+ * su.1: Explain why GNU doesn't support the `wheel group'.
+
+Mon Aug 01 21:58:14 1994 Jim Meyering (meyering@comco.com)
+
+ * date.c: Add --utc option. It will supercede --uct.
+ Change references to `universal coordinated time' to
+ correct `coordinated universal time'. From Harris Boldt Edelman
+ <hbe@red-eft.la.ca.us>.
+ * date.1: Correct the documentation, too.
+
+ * date.c (main, show_date): For -u, use gmtime instead of relying on
+ localtime's ability to interpret the TZ enviroment variable.
+ `date -u' failed (by reporting local time) on romp-ibm-bsd and PCs
+ (DOS and OS/2) running emx 0.8h. From R. Bernstein
+ <rocky@watson.ibm.com>.
+
+Sat Jul 30 07:52:27 1994 Jim Meyering (meyering@comco.com)
+
+ * nohup.sh: Separate `nice -5' from COMMAND with `--' to ensure
+ that COMMAND isn't interpreted as an option to nice.
+ * groups.sh: Similarly, separate each name from `id -Gn' with `--'.
+ Karl Berry pointed out that `groups --help user' gave confusing
+ diagnostics.
+
+Tue Jul 26 11:33:53 1994 Jim Meyering (meyering@comco.com)
+
+ * su.c (main): Make copies of the password information we'll use
+ so that log_su (through getlogin) doesn't clobber the static data.
+ With suggestions from Francois Pinard.
+
+ * system.h: Remove `|| defined(_POSIX_VERSION)' from test that
+ decides whether to include <fcntl.h>. From Francois Pinard.
+
+Mon Jul 25 23:54:36 1994 Jim Meyering (meyering@comco.com)
+
+ * pathchk.c (dir_ok): Use SAFE_STAT.
+ * test.c (test_stat, binary_operator, unary_operator): Use SAFE_STAT
+ and SAFE_LSTAT.
+ * who.c (print_entry): Use SAFE_STAT.
+
+ * test.c (group_member): Remove function. Use the one broken out
+ into group-member.c instead.
+
+Fri Jul 15 00:23:17 1994 Jim Meyering (meyering@comco.com)
+
+ system.h: Remove unneeded decls of atof and atol.
+
+Fri Jul 08 01:09:23 1994 Jim Meyering (meyering@comco.com)
+
+ stty.c (main): Initialize max_col (used by wrapf) before calling
+ display_speed. Otherwise, `stty speed' output a spurious newline.
+ From Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>.
+
+Sun Jul 03 08:44:00 1994 Jim Meyering (meyering@comco.com)
+
+ * configure.in [AC_HAVE_HEADERS]: Add sys/param.h, for
+ definition of HAVE_SYS_PARAM_H, now tested in pathmax.h.
+
+ * configure.in [AC_WORDS_BIGENDIAN]: Add it. This macro is
+ required by memcmp.c on big-endian systems. Its absence was
+ diagnosed by Lars Duening (duening@ibr.cs.tu-bs.de).
+
+Sun Jun 19 00:18:06 1994 Jim Meyering (meyering@comco.com)
+
+ * nice.c (main): Accept options like `--5' (equivalent to `-n -5')
+ instead of letting getopt give an `unrecognized option' error.
+
+ * long-options.c: Require another argument: version_string.
+ Don't include "version.h" or "system.h".
+ * basename.c, dirname.c, echo.c, expr.c, hostname.c, printf.c,
+ pwd.c, stty.c, test.c, yes.c: Adjust callers of parse_long_options
+ accordingly.
+
+Thu Jun 02 14:11:31 1994 Jim Meyering (meyering@comco.com)
+
+ * stty.c (main): Set max_col and current_col before running
+ display_window_size. Otherwise, `stty size' output a spurious
+ newline. From Bauke Jan Douma (bjdouma@xs4all.hacktic.nl).
+
+Mon May 30 09:33:53 1994 Jim Meyering (meyering@comco.com)
+
+ * test.c (test_syntax_error, beyond): Add __attribute__ ((noreturn))
+ so gcc will know enough not to give warnings.
+
+Sun May 29 17:40:21 1994 Jim Meyering (meyering@comco.com)
+
+ * long-options.c: Move from src/ to lib/.
+ * long-options.h: Ditto.
+ * src/Makefile.in: Remove references to long-options.[ch].
+ * lib/Makefile.in (SOURCES, OBJECTS): Add long-options.[co].
+
+Fri May 27 18:20:18 1994 Jim Meyering (meyering@comco.com)
+
+ * stty.c [VFLUSH && !VFLUSHO]: Define VFLUSH0.
+ Ultrix's termios.h defines VFLUSH, but not VFLUSHO.
+ From Kjetil Torgrim Homme <kjetilho@ifi.uio.no>.
+
+Thu May 26 08:46:32 1994 Jim Meyering (meyering@comco.com)
+
+ * configure.in [INSTALL]: Revert change of March 8. autoconf
+ has fixed this.
+
+Thu May 19 01:10:20 1994 Jim Meyering (meyering@comco.com)
+
+ * Version 1.10.
+
+ * lib/Makefile.in (DISTFILES): Add getdate.c and posixtm.c.
+
+ * src/Makefile.in (users.c): Use cp if hard link fails.
+ From Ian Lance Taylor.
+
+ * Makefile.in (dist): Change package name from shellutils to sh-utils.
+ That allows a hyphen and 5-character version number without exceeding
+ the 14-character limit on file name length. shellutils-1.10 would
+ have been too long.
+ * version.c: Update package name.
+
+ * hostname.c: Include <sys/types.h> before "system.h".
+ From Kaveh Ghazi and Karl Berry.
+
+ * hostname.c (sethostname) [!HAVE_SETHOSTNAME && HAVE_SYSINFO &&
+ HAVE_SYS_SYSTEMINFO_H && HAVE_LIMITS_H]: New function. SVR4 systems
+ prefer sysinfo over sethostname.
+ * configure.in (AC_HAVE_FUNCS): Add sysinfo.
+ (AC_HAVE_HEADERS): Add sys/systeminfo.h.
+ From Kaveh Ghazi.
+
+Fri May 13 09:45:23 1994 Jim Meyering (meyering@comco.com)
+
+ * lib/xgethostname.c (xgethostname): Call xmalloc outside the loop.
+ Correct loop termination condition.
+
+ * pwd.c: Include <sys/types.h> before "system.h".
+ From Kaveh Ghazi.
+
+ * {lib,man,src}/Makefile.in (Makefile): Use ../config.status
+ instead of $(srcdir)/../config.status. The latter didn't work
+ for builddir != srcdir. From Kaveh Ghazi.
+
+ * Makefile.in (Makefile): Remove dependencies on */Makefile.in.
+ Change the rule so running config.status creates only Makefile.
+ (stamp-config): Have config.status generate only config.h.
+
+ * {lib,man,src}/Makefile.in (Makefile): Add single dependency on
+ Makefile.in and rule to make config.status create only Makefile.
+
+ * hostname.c: New program.
+ * hostname.1: New file.
+ * Makefile.in (PROGS): Add hostname.
+ (SOURCES): Add hostname.c
+ * src/Makefile.in: Add rules and dependencies for hostname.
+ * configure.in (AC_HAVE_FUNCS): Add sethostname.
+
+ * pathchk.c (validate_path) [lint]: Initialize a variable to
+ suppress `used before initialized' warning.
+
+ * who.c: Correct gethostname prototype to indicate the function
+ returns int, not char.
+
+Sun May 01 08:38:18 1994 Jim Meyering (meyering@comco.com)
+
+ * who.c: Add #ifdefs to build the `users' executable.
+ * src/Makefile.in: Add corresponding rules.
+ * Makefile.in (PROGS): Add users.
+ From Kaveh R. Ghazi <ghazi@noc.rutgers.edu>.
+ * users.1: Document it.
+
+Thu Apr 28 00:45:02 1994 Jim Meyering (meyering@comco.com)
+
+ * pwd.c: New program.
+ * pwd.1: New file.
+ * Makefile.in (PROGS): Add pwd.
+ * lib/Makefile.in: (DISTFILES): Add pathmax.h.
+ (SOURCES, OBJECTS): Add xgetcwd.c and xgetcwd.o respectively.
+ * src/Makefile.in: Add rules and dependencies for pwd.
+
+ * yes.c: Don't include version.h.
+
+Mon Apr 18 19:54:24 1994 Jim Meyering (meyering@comco.com)
+
+ * documentation: Change uses of `pathname' and `path' as per
+ GNU standards.
+
+ * long-options.c (parse-long-options): Take a new argument,
+ command_name, for use in --version output.
+ * basename.c, dirname.c, echo.c, expr.c, printf.c, stty.c, test.c,
+ yes.c (main): Update callers.
+
+Wed Mar 30 08:53:21 1994 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Use AC_SET_MAKE.
+ * Makefile.in: Edit MAKE assignments into @SET_MAKE@.
+
+Fri Mar 25 01:13:42 1994 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Use AC_VERBOSE, AC_CHECKING, and AC_WARN instead
+ of explicit echo commands.
+ When checking for shadow password routines, make sure the function
+ getspnam is available before defining HAVE_SHADOW_H.
+ <dvldbg@cs.umu.se> reported that shadow.h exists on some
+ linux system that did not have the function.
+
+Tue Mar 8 10:29:13 1994 Jim Meyering (meyering@comco.com)
+
+ * configure.in [INSTALL]: When AC_PROG_INSTALL resorts to setting
+ this to `./install.sh', make it `../install.sh' instead since that
+ script will be invoked only from subdirectories.
+ [WINSIZE_IN_PTEM]: Check for this unconditionally, rather than
+ only when TIOCGWINSZ is not defined through termios.h. The old
+ method loses on SCO ODT 3.0 systems.
+
+Sat Feb 19 14:23:14 1994 Jim Meyering (meyering@comco.com)
+
+ * Version 1.9.4.
+
+ * stty.c (main): Use getopt_long_only with "ag" instead of
+ getopt_long with "". The latter incremented optind so the
+ -a and -g options weren't recognized.
+
+ * Version 1.9.3.
+
+Tue Feb 15 18:28:28 1994 Jim Meyering (meyering@comco.com)
+
+ * stty.c (main): Use getopt only to recognize long options.
+ Hand code the loop to detect -a, -g, -ag and -ga. Using getopt
+ to detect the short options loses (because we have to ignore
+ unrecognized options and we are allowing GNU getopt to permute)
+ because e.g. `-tabs' is interpreted as a group of options, one of
+ which is `-a'. Before, running `stty -tabs echo' gave this error:
+ stty: when specifying an output style, modes may not be set
+ Reported by Arne H. Juul.
+
+Sun Feb 13 13:34:25 1994 Jim Meyering (meyering@comco.com)
+
+ * basename.1, dirname.1, stty.1: Reflect usage changes.
+ * basename.c, dirname.c, stty.c (usage): Ditto.
+
+ * long-options.h (parse_long_options): Invoke usage function
+ argument with explicit dereference as per GNU coding standards.
+
+ * basename.c dirname.c: Use parse_long_options instead of the
+ conventional getopt_long paradigm. Before, the commands
+ `basename file-dist -dist' and `basename -- file.c .c' produced
+ incorrect results. Now, even `basename -file-dist -dist' works
+ and the command `basename -- file.c .c' fails for the right
+ reason: the `--' is not a special (to getopt) token for these
+ commands. It is interpreted as the filename, so there are too
+ many arguments to basename. Rick Sladkey <jrs@world.std.com>
+ reported the problem with basename.
+
+ * stty.c (set_window_size): When stty fails to get the window size
+ (as happens on telnet sessions to Solaris systems), initialize all
+ fields of the winsize struct. Before, it was using the uninitialized
+ pixel fields of the struct in the ioctl to set window size parameters.
+ From Rick Sladkey.
+
+ * stty.c (main): Use parse_long_options to handle --help and --version.
+ (main): In the remaining getopt_long loop, don't jump out of the
+ loop from the `default' branch of the switch statement. Doing that
+ left optind in an inconsistent when there were non-option arguments
+ preceding `reversed' arguments (e.g. stty echo -echoe) and the
+ preceding non-option arguments were ignored. Rick Sladkey reported
+ that stty was ignoring arguments.
+
+ * stty.c (main): Fail with a diagnostic when both -g and -a are given.
+ (main): Fail with a diagnostic when either -g or -a is used with
+ arguments for setting modes.
+
+Fri Feb 11 19:39:37 1994 Jim Meyering (meyering@comco.com)
+
+ * stty.c (get_win_size): Don't use an ANSI-style function
+ definition. From Kaveh R. Ghazi <ghazi@noc.rutgers.edu>.
+
+Thu Feb 10 01:22:37 1994 Jim Meyering (meyering@comco.com)
+
+ * stty.c [CSWTCH] (__sparc__ && __svr4__): Define `swtch' to
+ _POSIX_VDISABLE by default. Otherwise, the default settings on
+ SunOS 5.3 (from /usr/include/sys/termios.h) have both `swtch'
+ and `susp' set to ^Z. Those default settings are not unusual.
+ What is unusual is that with such settings on SunOS 5.3, the tty
+ driver doesn't generate a signal for control-Z. Reported by
+ Brent Wiese <brent@dot.imgen.bcm.tmc.edu>.
+
+ * stty.c (main) [CIBAUD]: Don't report an error on SunOS 4.1.x
+ systems if the only difference is in this nybble of c_cflag.
+ See the comments for the gory details. Thanks to
+ Erez "HWank1" Zadok <ezk@cs.columbia.edu> for reporting this
+ and helping me reproduce it.
+
+Tue Feb 01 00:59:56 1994 Jim Meyering (meyering@comco.com)
+
+ * stty.c (main): Call tcsetattr only if we've updated tty modes,
+ not e.g. if we've changed the window size.
+
+ * Update Copyright dates in src/*.
+
+Fri Jan 28 11:02:21 1994 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Don't set LDFLAGS since linking now uses both
+ LDFLAGS and CFLAGS.
+
+Wed Jan 26 10:54:02 1994 Jim Meyering (meyering@comco.com)
+
+ * stty.c (get_win_size): New function. Try getting size first
+ for the device on stdout. Try stdin only if that fails. Suggested
+ by Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>.
+ (set_win_size): Call get_win_size instead of calling ioctl directly.
+ (display_window_size): Ditto.
+ (screen_columns): Ditto.
+
+Mon Jan 24 22:57:18 1994 Jim Meyering (meyering@comco.com)
+
+ * stty.c (set_window_size): Work around SunOS 4.x kernel bug that
+ makes `stty rows 34 cols 80;stty rows 0;stty cols 0' incorrectly
+ set rows to 80 and columns to 0. Sun's stty has this problem, too.
+ The kernel bug is fixed in Solaris 2. Mostly from Alexander Dupuy
+ <dupuy@cs.columbia.edu>.
+
+ * src/Makefile.in: Use both LDFLAGS and CFLAGS when linking.
+ * man/Makefile.in: Use binprefix as the default manprefix.
+
+ * nohup.sh: Redirect usage message to stderr.
+ From Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>.
+
+Thu Jan 13 17:27:38 1994 Jim Meyering (meyering@comco.com)
+
+ * src/Makefile.in: Change all link commands to use both $(CFLAGS)
+ and $(LDFLAGS).
+
+Mon Jan 10 01:20:38 1994 Jim Meyering (meyering@comco.com)
+
+ * man/Makefile.in (manprefix): Use binprefix as the default.
+
+Thu Jan 06 18:19:06 1994 Jim Meyering (meyering@comco.com)
+
+ * who.c (print_entry): Prepend `/dev/' only if ut_line is not
+ already an absolute filename. Just to be safe.
+
+Fri Dec 31 00:22:59 1993 Jim Meyering (meyering@comco.com)
+
+ * date.c (usage): Reorder listing of % formats in `sort -f' order.
+
+Tue Dec 28 15:49:32 1993 Jim Meyering (meyering@comco.com)
+
+ * install.sh: New file.
+ Makefile.in [DISTFILES]: Add it.
+
+ * who.c (read_utmp): Use stdio functions instead of open/read/close
+ to avoid having to handle POSIX read's -1/errno=EINTR failure case.
+
+ * tee.c (tee): A POSIX implementation of the read system call
+ may return -1 and set errno to EINTR when it is interrupted.
+ Retry instead of failing with an error.
+ (tee): Don't use xwrite. Use full_write instead and include the
+ losing file name in the message reporting a write failure.
+ Don't treat standard output as a special case, so a failed write
+ to stdout doesn't exit immediately.
+
+ * date.c (usage): Note that for %w, 0 corresponds to Sunday.
+
+Sat Dec 25 23:15:58 1993 Jim Meyering (meyering@comco.com)
+
+ * who.c (main): Don't chdir ("/dev") for the stat in print_entry.
+ (print_entry): Instead of stat'ing the /dev-relative path, ut_line,
+ stat the absolute path with "/dev/" prefix. From David MacKenzie.
+
+Wed Dec 22 00:53:51 1993 Jim Meyering (meyering@comco.com)
+
+ * expr.c (toarith): Interpret the empty string as just that
+ rather than as the integer zero.
+ Before, `expr "" == 0' output 1. Now it prints 0.
+
+ * configure.in (AC_HAVE_HEADERS): Check for float.h for strtod.c.
+
+ * configure.in (check for TIOCGWINSZ): Don't look in sys/ioctl.h
+ or sys/ptem.h if we've already found it in termios.h. This
+ eliminates redefinition warnings from including both termios.h
+ and sys/ioctl.h on sytems running SunOS. From Matthew Seaman
+ (matthew@dyson.ox.ac.uk).
+
+ * date.1: Document new %s format and old `-' and `_' numeric field
+ modifiers.
+
+ * memcmp.c: Use the latest version from GNU C library.
+
+Mon Dec 20 23:29:30 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in [test for 8-bit clean memcmp]: Add a test to detect
+ losing memcmp from SunOS4.1.x. From Robert H. de Vries
+ <robert@and.nl>.
+
+Sat Dec 18 01:12:24 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in (AC_OUTPUT): Put `touch stamp-config' in second arg
+ so it goes in config.status. This eliminates unnecessary second run
+ of configure.
+
+Fri Dec 10 01:06:28 1993 Jim Meyering (meyering@comco.com)
+
+ * stty.c (screen_columns): Instead of dying just because Solaris'
+ `ioctl (0, TIOCGWINSZ' fails (strangely only for telnet sessions,
+ not rlogin sessions), ignore its errno == EINVAL and try to get
+ the number of columns another way.
+
+ * stty.c (set_window_size): If ioctl to get window size fails,
+ (as on telnet sessions to Solaris 2.[12] systems) try to set the
+ requested fields anyway, setting to zero any unspecified fields.
+ This is what Sun's /bin/stty appears to do.
+ * (display_window_size): Don't display anything for the number
+ of rows and columns if the ioctl call intended to get them fails.
+
+Tue Nov 30 23:58:54 1993 Jim Meyering (meyering@comco.com)
+
+ * Version 1.9.2.
+
+Mon Nov 29 00:28:35 1993 Jim Meyering (meyering@comco.com)
+
+ * stty.c, configure.in, acconfig.h: Revert change of Nov 26.
+ I am no longer able to reproduce the behavior that prompted
+ that patch -- but I had tested only using an old version of gcc.
+ When building with a more recent version of gcc or with /bin/cc
+ there is no problem.
+
+Sat Nov 27 15:11:21 1993 Jim Meyering (meyering@comco.com)
+
+ * nice.c (main): If an adjustment is specified, but no command is
+ given, give a diagnostic in addition to the usage message.
+ (isinteger): Accept a leading `+'.
+
+Fri Nov 26 18:49:42 1993 Jim Meyering (meyering@comco.com)
+
+ * stty.c [GWINSZ_BROKEN]: Define TIOCGWINSZ to TCGETS for Solaris-2.2.
+ On that system, ioctl (0, TIOCGWINSZ, &win) always fails, but using
+ TCGETS works. Reported by Francois Pinard.
+
+ * configure.in [GWINSZ_BROKEN]: New test to detect Solaris' inability
+ to get window size from ioctl using TIOCGWINSZ.
+ * acconfig.h [GWINSZ_BROKEN]: Add an #undef.
+
+Mon Nov 22 23:40:21 1993 Jim Meyering (meyering@comco.com)
+
+ * who.c [defined (UTMPX_FILE)]: (undef and) define UTMP_FILE to
+ this value even if UTMP_FILE is already defined. Because some
+ systems define both symbols. From Arne H. Juul.
+ * [MESG_BIT]: Rename to S_IWGRP (from sys/stat.h>) and define only
+ if not already defined.
+
+Fri Nov 19 23:08:03 1993 Jim Meyering (meyering@comco.com)
+
+ * who.c (print_entry): Produce reasonably formatted output even when
+ sizeof (this->ut_name,ut_line) are much larger than 8. For Solaris
+ and other SysVr4. With help from Arne H. Juul.
+ * configure.in (HAVE_UTMPX_H): New test; combined with test for the
+ ut_host field. From Arne H. Juul.
+
+ * memcmp.c: New file.
+ * lib/Makefile.in [SOURCES]: Add memcmp.c.
+ * configure.in (AC_REPLACE_FUNCS): Add memcmp.
+ Add test for 8-bit clean memcmp.
+
+ * configure.in (AC_HAVE_FUNCS): Add isascii.
+ * expr.c [!defined (isascii) || defined (STDC_HEADERS)]: This failed
+ on AIX PS/2 1.3 systems because isascii is a function and it is used
+ in definitions (with the necessary side effect of assigning to a
+ global variable) of the is* macros. Also test HAVE_ISASCII and
+ redefine ISASCII(c) instead of isascii.
+ Reported by Minh Tran-Le (tranle@intellicorp.com).
+ * printf.c: Ditto.
+
+ * configure.in (AC_HAVE_HEADERS): Add sys/timeb.h; getdate.y tests
+ HAVE_SYS_TIMEB_H.
+
+ * stty.c (main): Detect the case in which POSIX-conformant tcsetattr
+ fails and still returns zero.
+
+Wed Nov 17 21:05:10 1993 Jim Meyering (meyering@comco.com)
+
+ * yes.c (main): Complete my half-finished Nov 2 change.
+ yes with arguments did not print newlines. From Andreas Schwab
+ (ls5.informatik.uni-dortmund.de).
+
+ * stty.c (wrapf): Fix off-by-one error that could make `stty -a'
+ output lines one character too long. From Andreas Schwab.
+
+Sat Nov 13 00:11:19 1993 Jim Meyering (meyering@comco.com)
+
+ * Version 1.9.1.
+
+ * configure.in [LIBS]: Add -lbsd if that is necessary to get the
+ syslog function. With help from Kaveh Ghazi.
+
+ * configure.in [LIBS]: Reorganize/unify the code that adds libraries
+ solely to resolve syslog. Add a library only if it is required to
+ resolve the syslog reference.
+
+ * configure.in [AC_HAVE_HEADERS]: Check for sys/timeb.h.
+ getdate.y needs to know.
+ [LIBS]: Check for initgroups in -los. This is required by SCO-ODT-3.0
+ when linking su.
+ [LIBS]: Check -lufc for crypt.
+ Reported by Steven W Orr (steveo@world.std.com).
+
+Thu Nov 11 23:55:48 1993 Jim Meyering (meyering@comco.com)
+
+ * id.c [NGROUPS_MAX]: Undefine before redefining.
+ From Kaveh R. Ghazi (ghazi@noc.rutgers.edu).
+
+ * who.c (list_entries): Trim any trailing blanks from ut_name
+ and make sure the string is NUL-terminated before printing it.
+ Before, `who -q' displayed 8-character names with a tty
+ (e.g. `q1') suffix.
+
+ * stty.c [CFLUSHO]: Move this definition so it follows the
+ one for VFLUSHO.
+
+Mon Nov 08 23:16:36 1993 Jim Meyering (meyering@comco.com)
+
+ * Version 1.9.
+
+ * su.c (correct_password): Report an error and fail if getpass
+ returns NULL.
+
+Tue Nov 02 01:14:21 1993 Jim Meyering (meyering@comco.com)
+
+ * acconfig.h: Add comments.
+
+ * printenv.c (main): Exit with status == 2 for file error.
+
+ * yes.c (main): Restore argv/optind handling -- now that
+ parse_long_options doesn't change optind.
+
+Mon Oct 25 19:22:58 1993 Jim Meyering (meyering@comco.com)
+
+ * basename.c, date.c, dirname.c, echo.c, env.c, expr.c, id.c,
+ logname.c, nice.c, pathchk.c, printenv.c, printf.c, sleep.c,
+ stty.c, su.c, tee.c, test.c, tty.c, uname.c, who.c, whoami.c,
+ yes.c: Use the preferred `--longopt=arg' syntax in --help message
+ rather than `--longopt arg'. From Francois Pinard.
+
+ * stty.c (main, integer_arg): Don't just call error(1,... about
+ improper usage. Call `error (0,...' then usage (1).
+
+Sun Oct 24 14:10:23 1993 Jim Meyering (meyering@comco.com)
+
+ * test.c [member]: Don't try to cast index return value to an int.
+ That can lose on systems with 64-bit pointers.
+
+ * long-options.c: Save and restore optind, too.
+ * long-options.h: New file.
+ * long-options.c, echo.c, expr.c, printf.c, test.c, yes.c:
+ Include it instead of duplicating dcls.
+ * src/Makefile.in: Add dependencies for it.
+
+Tue Oct 19 00:26:27 1993 Jim Meyering (meyering@comco.com)
+
+ * expr.c [!__STDC__]: Don't define away `const'. configure alone
+ decides whether to do that. From Francois Pinard.
+
+Sat Oct 16 22:32:54 1993 Jim Meyering (meyering@comco.com)
+
+ * whoami.c (main): Cast printf arg UID so it matches the type
+ expected by %u format no matter how uid_t is defined.
+
+ * stty.c: Accept `status' option and VDISCARD as an alias for
+ VFLUSHO. From Arne H. Juul (arnej@imf.unit.no).
+
+ * basename.c, date.c, dirname.c, echo.c, env.c, expr.c,
+ false.sh, groups.sh, id.c, logname.c, long-options.c, nice.c,
+ nohup.sh, pathchk.c, printenv.c, printf.c, sleep.c, stty.c,
+ su.c, tee.c, test.c, true.sh, tty.c, uname.c, who.c, whoami.c,
+ yes.c: Using --help gets long well- formatted help. Now --help
+ writes to stdout and exits successfully. From Francois Pinard
+ <pinard@iro.umontreal.ca>.
+
+Wed Oct 13 13:10:27 1993 Jim Meyering (meyering@comco.com)
+
+ * long-options.c: Include sys/types before system.h.
+ From Franc,ois Pinard (pinard@iro.umontreal.ca).
+
+Tue Oct 12 00:53:26 1993 Jim Meyering (meyering@comco.com)
+
+ * stime.c [HAVE_CONFIG_H, CONFIG_BROKETS]: Include <config.h>
+ or "config.h".
+
+ * src/Makefile.in [clean]: Also delete '['.
+
+Sun Oct 10 14:05:23 1993 Jim Meyering meyering@comco.com
+
+ * false.sh, groups.sh, nohup.sh, true.sh: Add --help and --version.
+ * src/Makefile.in (false, groups, nohup, true): Substitute the string
+ from version.c for @VERSION@ in *.sh.
+
+Sat Oct 9 23:12:53 1993 Jim Meyering meyering@comco.com
+
+ * configure.in: Remove AC_UNISTD_H; add unistd.h to AC_HAVE_HEADERS.
+
+Tue Oct 5 22:18:05 1993 Jim Meyering meyering@comco.com
+
+ * tty.c (main): Detect write error. Use isatty (rather than
+ testing whether ttyname() is NULL) to determine exit status
+ because ttyname may return NULL when stdin is a terminal device.
+
+ * expr.c (eval7): Rewrite if-else-if-else... sequence to avoid a
+ spurious `function returns without a value' warning.
+
+ * printenv.c (main), tty.c (main): Detect and report write errors.
+
+ * echo.c, patchchk.c, printenv.c, printf.c, sleep.c, stty.c, su.c,
+ tee.c, test.c, tty.c, uname.c, yes.c: Accept --help and --version
+ options.
+
+ * long-options.c: New file. To let echo, expr, printf, test, and
+ yes accept --help and --version as unobtrusively as possible.
+ * src/Makefile.in [SORUCES]: Add it.
+
+ * configure.in: Add AC_TIME_WITH_SYS_TIME and AC_STAT_MACROS_BROKEN.
+
+ * nice.c (main) [NICE_PRIORITY]: When given an argument, don't
+ try to get current priority. nice() requires only the delta;
+ we don't need to compute the absolute priority as for setpriority.
+
+Mon Oct 04 22:15:07 1993 Jim Meyering (meyering@comco.com)
+
+ * who.c (print_entry, print_heading, who_am_i):
+ Cast printf field width arguments to int to avoid warnings.
+ (idle_string): Cast idle seconds and minutes to int.
+ Declare functions read_utmp and idle_string to be static.
+ Don't declare ttyname as static.
+
+ * echo.c (just_echo): Use putchar instead of printf.
+
+ * expr.c (parse_long_options): New function.
+ (main): Use it to handle --version and --help properly.
+
+ * tee.c (main): Put entire #ifdef inside if-braces to make structure
+ clearer.
+ (main, tee): Compare close() != 0 rather than close () == -1.
+
+ * pathchk.c (portable_chars_only, dir_ok): Make a couple variables
+ const.
+
+Wed Sep 08 00:07:36 1993 Jim Meyering (meyering@comco.com)
+
+ * test.c [advance, unary_advance]: Rewrite using do{...}while(0)
+ paradigm instead of comma expressions that make Alpha OSFv1.3
+ C compiler segfault.
+
+ * basename.c, date.c, dirname.c, env.c, id.c, logname.c, nice.c:
+ Add --help and --version options.
+
+Sat Jul 24 08:52:18 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Check for -lshadow. Linux needs it when using shadow
+ passwords. Reported by Mattias Olofsson <mattias@lysator.liu.se>.
+
+Thu May 27 20:05:50 1993 Roland McGrath (roland@churchy.gnu.ai.mit.edu)
+
+ * configure.in (c_line test): Add missing `fi'.
+
+Tue May 18 23:49:26 1993 Jim Meyering (meyering@comco.com)
+
+ * mkinstalldirs: New file.
+ * Makefile.in (installdirs): Use it.
+
+Thu May 13 01:03:16 1993 Jim Meyering (meyering@comco.com)
+
+ * Makefile.in (installdirs): New rules for creating installation
+ directories. (install): depend on it.
+
+Mon May 3 22:09:24 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Add AC_GETGROUPS_T.
+ * id.c, test.c: Don't define GETGROUPS_T. Now configure does it.
+
+Sun May 2 00:21:05 1993 Jim Meyering (meyering@comco.com)
+
+ * expr.c (eval6): Terminate result with a zero byte.
+ The command `expr substr xx 1 2' would fail on systems with
+ tight malloc. From Steve James <smj@cats.COM>.
+
+ * expr.c (null): Recognize the string `0' as zero.
+ (divide, mod): Upon request to divide by zero, give an error
+ message instead of dumping core.
+ From J.T. Conklin <jtc@wimsey.com>.
+
+ * configure.in: Check for sys/time.h; getdate.y needs it for
+ structs timeval and timezone on some systems.
+ * Check for gettimeofday and for `struct tm'.
+ * Add existence tests for memcpy and bcopy.
+
+ * configure.in: Find a parser generator.
+
+ * putenv.c: Include stdlib.h only if __GNU_LIBRARY__ is defined.
+ Many vendor-supplied <stdlib.h> have a declaration of putenv that
+ conflicts with ours.
+
+Tue Apr 20 02:33:24 1993 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu)
+
+ * stty.c: Use GWINSZ_IN_SYS_IOCTL, not _AIX, to determine
+ whether sys/ioctl.h is needed to support `stty size'.
+
+Thu Apr 1 18:03:47 1993 Jim Meyering (meyering@comco.com)
+
+ * printf.c, expr.c [isascii]: Undefine before redefining.
+
+Sun Mar 28 00:07:45 1993 Jim Meyering (meyering@comco.com)
+
+ * stty.c: Accept `flush' option. From Arne H. Juul arnej@lise.unit.no
+ * system.h: Don't define r?index, bcopy... if they're already defined.
+
+Thu Mar 25 22:41:01 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Add AC_IRIX_SUN to get -lsun because
+ Irix-4.0.5's libc.a doesn't have yp/NIS entrypoints.
+ From Kjetil Wiekhorst J|rgensen <jorgens@pvv.unit.no>.
+
+Fri Mar 05 00:02:53 1993 Jim Meyering (meyering@comco.com)
+
+ * date.c: Add long-named options.
+
+Sun Dec 6 23:17:09 1992 Jim Meyering (meyering@comco.com)
+
+ * date.c: Remove unused definition of isdigit.
+ * expr.c (toarith): Change single use of isdigit to ISDIGIT.
+ * printf.c (print_formatted, print_esc): Define ISDIGIT and
+ ISXDIGIT and use them instead of isdigit and isxdigit.
+
+Wed Dec 2 12:49:11 1992 Jim Meyering (meyering@comco.com)
+
+ * env.c, id.c, nice.c, pathchk.c, stty.c, su.c, tee.c, tty.c,
+ uname.c, who.c: Convert static declarations of struct option
+ to use new macros from getopt.h: no_argument, required_argument,
+ and optional_argument.
+
+Tue Nov 24 09:46:02 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu)
+
+ * echo.c: Use V9_DEFAULT instead of USG. Define it always.
+
+ * system.h: Use HAVE_FCNTL_H and HAVE_STRING_H instead of USG.
+
+Wed Nov 11 18:19:10 1992 Jim Meyering (meyering@hal.gnu.ai.mit.edu)
+
+ * All files in src: Make all functions and extern variables static.
+ Make all longopts arrays const as well as static.
+ Make a couple statically initialized aggregates `const.'
+
+ * pathchk.c (portable_chars_only): Cast char used as array index.
+
+ * echo.c (main), su.c (restricted_shell): Add parentheses to
+ assignment statements used in boolean context.
+
+ * stty.c (set_mode): Parenthesize expressions with bit operations
+ to correctly set/reset modes bits.
+
+Wed Oct 28 14:16:48 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu)
+
+ * Version 1.8.
+
+ * stty.c: Accept Irix VRPRNT for VREPRINT.
+ From Jim Meyering.
+
+ * stty.c: Fix some type mismatches. From Bruce Evans, bde@runx.oz.au.
+
+ * who.c (read_utmp): Close file on error.
+ From Bruce Evans.
+
+ * su.c, test.c: Add some decls. From Bruce Evans.
+
+ * sleep.c (main): Arg to sleep is unsigned, not long.
+ From Bruce Evans.
+
+Fri Sep 11 00:25:52 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * echo.c, echo.1: New files.
+
+Thu Sep 10 18:42:44 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * pathchk.c (main): Don't strip trailing slashes from args;
+ they might make a path invalid.
+ (portable_chars_only, dir_ok): New functions.
+ (validate_path): Renamed from validate_new_path.
+ Call them. Don't complain if a leading
+ dir doesn't exist. Don't replace `parent' with a dir that
+ doesn't exist. Don't print a message when falling back
+ from pathconf to constant values.
+
+ * who.c [!UTMP_FILE]: If _PATH_UTMP is defined, use it instead
+ of /etc/utmp. From Marc Boucher <marc@cam.org>.
+
+Tue Aug 25 17:02:25 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * Version 1.7.
+
+ * groups.sh, nohup.sh: Add $(bindir) to front of path.
+
+Mon Aug 24 16:39:39 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * stty.c: make sane value for "min" 1, not 0.
+ From haible@ma2s2.mathematik.uni-karlsruhe.de (Bruno Haible).
+
+Sun Aug 23 03:02:07 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * id.c, test.c: Use NGROUPS_MAX if it's defined. 386BSD is like sun.
+
+Sat Aug 22 03:16:41 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * test.c: Rename STANDALONE to TEST_STANDALONE to avoid IBM RT
+ ACIS sys/param.h conflict.
+
+ * su.c (correct_password) [HAVE_SHADOW_H]: Try to get the
+ encrypted correct password from the shadow password file.
+
+Fri Jul 17 15:25:01 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * su.c, getusershell.c: New files.
+
+Fri Jul 3 15:08:43 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * stty.c, who.c: Change FOO_MISSING to HAVE_FOO.
+
+Fri Jun 5 01:49:29 1992 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
+
+ * strcspn.c: New file.
+
+ * expr.c: Misc. cleanups.
+
+ * expr.c (eval7): Renamed from eval6.
+ Give syntax error if no more args. Don't coerce all values to numbers.
+ (eval6): New function.
+ (eval5): Accept == as a synonym for =.
+ (eval2): Coerce values to numbers for comparisons.
+ Above all from Dana Jacobsen (jacobsd@prism.cs.orst.edu).
+
+Thu Jun 4 19:32:09 1992 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
+
+ * printf.c (print_formatted): Move main loop into new function.
+ (main): Add an outer loop to use the format multiple times.
+ (verify): Don't reject a completely empty string.
+ Check errno (for overflow).
+
+ * false.sh, true.sh: New programs. Oh, boy.
+
+Thu May 14 01:17:22 1992 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
+
+ * stty.c (set_mode): Support crt and dec modes partially if
+ necessary, so they work on, for example, Ultrix . . . .
+
+Wed May 13 14:47:45 1992 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
+
+ * stty.c (set_mode): Swap nl and -nl. Have them also affect
+ output as well as input.
+
+Tue May 12 00:07:28 1992 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
+
+ * date.c (show_date): Use strftime for the whole conversion.
+
+Tue May 5 15:20:24 1992 David J. MacKenzie (djm@hal)
+
+ * stty.c (wrapf): Print the formatted buffer; don't redo the
+ formatting using vprintf.
+
+Thu Apr 30 01:17:08 1992 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
+
+ * printf.c (xstrtol, xstrtoul, xstrtod, verify): New functions.
+ (main, print_direc): Use them. Make error messages more specific.
+
+ * tee.c (tee): Only malloc and free the table of file descriptors
+ if >0 files are given.
+
+Fri Apr 17 11:56:48 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * pathchk.c (validate_new_path): Print the name of the component that
+ failed the length test, not the whole path.
+ From Andreas Schwab (schwab@ls5.informatik.uni-dortmund.de).
+
+Mon Apr 6 15:11:36 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * who.c (read_utmp): Check close return for error.
+ (print_heading): Align columns based on sizes of utmp members.
+ (who_am_i): Skip past /dev/ instead of skipping leading path.
+
+Mon Mar 16 23:47:03 1992 David J. MacKenzie (djm@apple-gunkies.gnu.ai.mit.edu)
+
+ * date.c (show_date): Don't call strftime if FORMAT is the
+ empty string.
+
+ * date.c (main): Reorganize to reduce duplicated code.
+ Add -d option.
+ (usage): Document -d.
+ (set_date): Function removed.
+
+Tue Feb 11 16:12:18 1992 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * printf.c (print_esc): When a numeric escape is given,
+ don't call print_esc_char, and return 1 less.
+ From Thorston Ohl.
+
+Mon Jan 20 02:17:18 1992 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * Version 1.6.
+
+ * test.c: HAVE_MULTIPLE_GROUPS -> HAVE_GETGROUPS, for bash 1.11.
+
+Fri Jan 17 15:46:18 1992 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * expr.c (docolon): Use re_nsub to find the number of
+ subexpressions . . . From Karl Berry, who knows.
+
+Wed Dec 25 23:27:53 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * expr.c (docolon): Use the new way (re_regs.num_regs > 0) to find
+ out if there were any subexpressions, instead of the old way
+ (re_regs.start[1] >= 0), which can cause random memory
+ accesses with regex 0.1. From Brian Matthews.
+
+Tue Dec 24 02:12:15 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * system.h, id.c, pathchk.c, tee.c: Change POSIX ifdefs to
+ HAVE_UNISTD_H and _POSIX_VERSION.
+
+Wed Dec 11 13:15:09 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * Version 1.5.
+
+ * expr.c (main): Set obscure_syntax to tell re_match to
+ allocate memory for the group registers.
+
+Mon Dec 9 16:03:14 1991 Charles Hannum (mycroft at hal.gnu.ai.mit.edu)
+
+ * who.c (list_entries): Check type == USER_PROCESS if defined, for SysV.
+
+Sat Dec 7 00:32:02 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * Version 1.4.
+
+ * env, id, nice, pathchk, stty, tee, tty, uname: Change usage
+ messages and documentation to list long-named options starting
+ with `--' rather than `+'.
+
+ * env.c (main), nice.c (main): Simplify test for which exit
+ status to use if exec fails.
+
+Fri Dec 6 23:49:42 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * tee.c (main) [POSIX]: Use sigaction instead of signal, which
+ POSIX doesn't have.
+
+Fri Oct 18 00:31:35 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * test.c (two_arguments): Fix from Chet.
+
+ * expr.c: Include regex.h after sys/types.h, not before, so
+ size_t gets defined.
+
+ * test.c: New version, adapted from bash 1.10.
+
+ * id.c: GID_T -> GETGROUPS_T, for clarity.
+
+Sat Oct 12 14:38:34 1991 David J. MacKenzie (djm at churchy.gnu.ai.mit.edu)
+
+ * configure: Define uid_t and gid_t as int if they're not
+ defined in sys/types.h. That's probably right for old Unixes
+ and avoids trying to find the C preprocessor.
+
+Sat Sep 28 13:01:23 1991 David J. MacKenzie (djm at churchy.gnu.ai.mit.edu)
+
+ * stty.c (set_mode): Make `raw' and `cooked' not change parity
+ and character size, which would probably make them useless on
+ 7-bit lines.
+ Make `raw' set the `time' character to 0, not 1.
+ From Bruce Evans.
+
+ * nohup.sh: If creating nohup.out, give it mode 0600, for POSIX.
+
+Fri Sep 13 14:59:51 1991 David J. MacKenzie (djm at churchy.gnu.ai.mit.edu)
+
+ * id.c [POSIX]: Always use sysconf to get NGROUPS_MAX.
+
+Thu Aug 29 14:43:07 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * test.c: Don't include sys/file.h if POSIX.
+ Use gid_t for getgroups.
+
+ * stty.c (set_mode): Use CEOF and CEOL instead of hardcoding them.
+ (display_speed): Fix a printf string type mismatch.
+ From Bruce Evans.
+
+Mon Aug 26 16:52:51 1991 David J. MacKenzie (djm at pogo.gnu.ai.mit.edu)
+
+ * configure, src/Makefile.in, lib/Makefile.in: Only put $< in
+ Makefiles if VPATH is being used, because older makes don't
+ understand it.
+
+Mon Aug 19 01:57:46 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * Version 1.3.
+
+Sat Aug 17 22:48:15 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * src/Makefile.in (install): Install a link to test called '['.
+
+Wed Aug 14 12:22:57 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * test.c (unary_operator): Check first char of string, not its address.
+
+Sun Aug 11 18:10:30 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * Version 1.2.
+
+ * system.h: Define S_IFMT if needed, for test.c.
+
+ * test.c: New file, from bash.
+
+ * nice.c: Change +priority to +adjustment (more accurate).
+
+Sat Aug 10 13:09:51 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * stty.c [WINSIZE_IN_PTEM]: sys/ptem.h requires sys/stream.h.
+
+ * nice.c, configure: Use nice if available and setpriority is missing.
+
+Thu Aug 8 01:34:05 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * date.c: USG needs TZ=GMT0 for UCT timezone, also.
+
+ * stty.c: Add pass8 and litout modes.
+
+Sun Aug 4 22:45:51 1991 David J. MacKenzie (djm at wheat-chex)
+
+ * Version 1.1.
+
+Fri Aug 2 13:22:31 1991 David J. MacKenzie (djm at apple-gunkies)
+
+ * configure: Implement +srcdir. Don't check for bison.
+
+ * stty.c: Don't change ixon in "sane" mode.
+
+ * configure: Use 1 instead of 255 for checking tzname,
+ because of signedness.
+
+Thu Aug 1 13:40:58 1991 David J. MacKenzie (djm at apple-gunkies)
+
+ * printenv.c (main): Don't print the variable names when given
+ args, as people seem to use printenv in scripts after all . . . .
+
+ * stty.c: Don't change parity or character size settings in
+ "sane" mode. The right values for those depend on the hardware.
+
+Wed Jul 31 01:19:01 1991 David J. MacKenzie (djm at hal)
+
+ * stty.c [_AIX]: Include sys/ioctl.h -- needed on
+ AIX to get window size.
+
+Tue Jul 30 00:06:54 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * getdate.y: New file.
+ * date.c: Add -s option to set date in English.
+ * configure: Check for ftime.
+
+ * date.c: Remove COMPUTE_TM_ZONE code, which didn't work.
+ * configure: Instead of checking whether tzname is declared,
+ check whether it exists.
+
+ * logname.c (main): Go back to just printing an error message
+ if getlogin fails, as required by POSIX.
+
+ * stty.c (screen_columns, wrapf): New functions to implement
+ output wrapping.
+ Globally: use them.
+
+ * configure: Define uid_t and gid_t if sys/types.h doesn't.
+ * system.h: Define F_OK et al. if nothing else does.
+
+Mon Jul 29 21:11:16 1991 David J. MacKenzie (djm at wombat.gnu.ai.mit.edu)
+
+ * pathchk.c (validate_new_path): Rearrange tests so that
+ pathconf is only called on existing directories. Use access
+ instead of stat to determine directory searchability.
+ From Jim Meyering.
+
+ * stty.c, configure: Add WINSIZE_IN_PTEM and GWINSZ_BROKEN for SCO.
+
+Wed Jul 24 02:13:31 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * stty.c (sane_mode): Always set control chars to sane values.
+ Set min and time if they're different from eof and eol.
+
+ * whoami.c: Print UID as unsigned.
+ * logname.c: Do "whoami" if getlogin fails.
+
+ * logname.c (main): fprintf was missing an arg.
+
+Tue Jul 23 02:20:15 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * id.c: GID_T is int if ultrix as well as if sun.
+
+ * stty.c: Implement raw and cooked modes.
+
+Mon Jul 22 15:21:21 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * tee.c (main): close stdin and stdout to check for errors.
+
+ * stty.c: Use tcflag_t for termios bitmasks.
+ Use speed_t for speeds. Use unsigned long for baud rates to
+ accomodate large values, and support 57600 and 115200 if available.
+
+ * date.c, configure: Instead of SIZE_T_MISSING,
+ define size_t if it's missing.
+
+ * id.c, whoami.c: Use uid_t and gid_t.
+
+ * id.c: If POSIX and not sun (bogus!), pass getgroups and
+ getugroups an array of gid_t instead of int.
+
+ * system.h: New file.
+ * Most programs: include it.
+
+Fri Jul 19 12:04:58 1991 David J. MacKenzie (djm at apple-gunkies)
+
+ * env.c [!STDC_HEADERS]: Declare errno.
+ * printf.c, pathchk.c: Don't include errno.h; not needed.
+
+ * version.c: New file.
+ * All C programs: Link with it, to get version number in the
+ binary where at least `strings -' and grep can find it.
+
+ * pathchk.c (strip_trailing_slashes): Function removed; use
+ version in lib.
+
+Mon Jul 15 11:34:22 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * Version 1.0.
+
+ * pathchk.c: Always check whether _POSIX_PATH_MAX and
+ _POSIX_NAME_MAX need to be defined.
+ [POSIX]: If no PATH_MAX or NAME_MAX and pathconf for the path
+ returns -1 (some systems do this if the path does not exist),
+ use pathconf for "/".
+
+Sun Jul 14 21:17:22 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * date.c (date_seconds): Function removed, replaced with
+ posixtm.y in lib.
+ (set_date): Change caller.
+ * configure: Check for bison.
+
+ * stty.c [!C_LINE_MISSING]: Add support for setting and
+ printing the line discipline.
+ * configure: Check for C_LINE_MISSING.
+
+ * configure: Check for Minix.
+
+Sat Jul 13 01:33:59 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * Add `man' directory and manual pages.
+ * configure: Set INSTALLDATA and MAN.
+
+ * id.c: Add #ifdefs for POSIX ways of getting max groups list size.
+ (print_group_list, print_full_info): Allocate list of groups
+ with malloc since its size might not be constant.
+
+ * nice.c (main): Don't adjust priority if printing it.
+ Default adjustment of 10, not 0.
+
+ * printf.c: Add \c escape and %b conversion.
+ Implement '*' for field width and precision.
+ Make all errors fatal.
+ (print_esc_string, print_esc): New functions.
+
+ * configure, date.c: Change SYS_TIME_H to TM_IN_SYS_TIME.
+ * configure: Always check where to find struct tm.
+
+ * yes.c: Rewrite to accept multiple arguments.
+
+ * Add groups.sh.
+
+Fri Jul 12 10:57:00 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * dirname.c: Move code from dirname function into main,
+ simplifying things quite a bit. From Jim Meyering.
+ * Omit strdup from lib; no longer used.
+ * configure: Don't check for strdup.
+
+ * printenv.c (main): If args given, print the values in the order
+ given on the command line rather than the order given in the
+ environment.
+
+ * tee.c, tty.c (struct longopts): Revise to make short-option
+ equivalents clear.
+
+Thu Jul 11 12:46:11 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * nice.c: Add long options.
+
+ * Add date command and libraries it needs.
+ * configure: Updated.
+
+ * env.c: Add long options. Use GNU putenv instead of custom
+ setenv function.
+
+ * id.c: Add long options.
+
+ * pathchk.c [POSIX]: Use pathconf if necessary to get NAME_MAX
+ and PATH_MAX.
+
+ * nice.c: Use exit status required for nohup by POSIX.2
+ (nohup execs nice).
+
+ * sleep.c: Don't bother with hex and octal.
+
+ * env.c: Fix exit status for POSIX.2 draft 11.1.
+
+ * Many files: Remove private copies of xmalloc, error, xstrdup,
+ etc. to use shared versions.
+ Fix #includes for USG, STDC_HEADERS, POSIX.
+
+Mon Jul 8 18:56:24 1991 David J. MacKenzie (djm at churchy.gnu.ai.mit.edu)
+
+ * date.c (main): For -u, set TZ to "" instead of "GMT0",
+ unless on HP-UX or Ultrix.
+
+ * Rename some feature-test macros.
+ * stime.c: Created from code in date.c.
+ * date.c (compute_tm_zone): New function.
+ (date_seconds, show_date): Use it.
+ (xmalloc, xrealloc): Functions removed; use xmalloc.c instead.
+
+Tue Jul 2 02:28:11 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * tee.c (tee): Report errors in closing files.
+
+Mon Mar 18 10:13:59 1991 Jeffrey A. Law (law at geech.ai.mit.edu)
+
+ * date.c (date_seconds, show_date): #if COMPUTE_TMZONE then
+ compute the proper value to place in tm->tm_zone from
+ information returned by localtime and gettimeofday.
+
+Fri Apr 26 11:38:09 1991 David J. MacKenzie (djm at mole.gnu.ai.mit.edu)
+
+ * stty.c: Define default values for control chars if necessary.
+ Complain about invalid options if no other options follow.
+ Use POSIX functions instead of ioctl, for manipulating termios.
+
+ * expr.c (main): Exit status was backwards.
+
+Thu Dec 20 00:36:01 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * id.c: Reorganization and many changes to fix bugs and POSIX
+ compliance problems.
+
+Mon Dec 10 03:09:13 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * stty.c: Don't declare printf and some other functions that
+ might have variable numbers of args in system header file decls.
+
+Tue Nov 14 23:37:22 1990 Roland McGrath (roland at geech.ai.mit.edu)
+
+ * id.c (print_groups): Put spaces after commas.
+ (print_group): New fn, to print a group id. Uses numeric fmt
+ unless -n, in which case it uses group names.
+ (print_groups): Call it. Find the rgid and egid, and print them as
+ well as the supplementary groups. Make sure we print each group only
+ once.
+
+Sun Sep 16 01:49:14 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * id.c (main): Add -G option for POSIX.2 draft 10.
+ Allow a username to be given.
+ (print_groups): New function from code in main.
+ (getugroups): New function.
+
+Sun Aug 12 00:32:01 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * env.c (main): Instead of setting _POSIX_OPTION_ORDER,
+ tell getopt to not permute, with `+'.
+
+Sat Aug 11 01:32:53 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * expr.c: Use regex.c library instead of private regex routines.
+
+ * nice.c (main): Add -n option for POSIX.2a.
+ (usage): New function.
+
+Fri Aug 10 23:58:11 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * who.c: Add -m, -i, -w options for POSIX.2a.
+
+Tue Aug 7 00:01:02 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * expr.c: Use exit directly instead of longjmp on error.
+ Use argv[0] instead of hardcoded "expr" in messages.
+ Make some functions void.
+
+Sat Aug 4 21:19:25 1990 David J. MacKenzie (djm at pogo.ai.mit.edu)
+
+ * env.c: Change exit statuses for POSIX draft 10.
+
+Wed Jul 4 04:32:51 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * tee.c: Use error instead of perror_with_name and
+ out_of_memory.
+
+Wed Jun 20 02:39:49 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * date.c: Change -DSETTOD to -DSTIME_MISSING, -DSIZE_T to
+ -DSIZE_T_IN_TYPES, and -DSTDC_HDRS to -DSTDC_HEADERS.
+ Declare some more functions. Replace fatal, memory_out, and
+ nonfatal_perror with error.
+
+Mon Jun 18 00:16:52 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * stty.c: Add some Unix compatibility modes.
+
+Sat Jun 16 21:05:59 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * stty.c (display_changed, display_all): Print values of min
+ and time.
+
+Thu Jun 14 17:49:31 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * stty.c: Implement tab, backspace, etc. delay args.
+
+Thu May 31 12:25:40 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * nohup.sh: Don't ignore SIGTERM.
+ If ./nohup.out is unwritable, try $HOME/nohup.out.
+
+Thu May 3 22:33:32 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * who.c: Use error instead of fatal and fatal_perror.
+ (print_headings): Print headings in all caps, like SYSV does.
+ (list_entries): New function for -q to make it like SYSV -q.
+ (valid_entries): Function removed.
+
+Mon Apr 2 01:27:23 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * id.c (main): Don't strip off leading path from program name.
+ Revise a couple of error messages.
+
+ * whoami.c (main): Use geteuid, not getuid, for Unix compatibility.
+
+Tue Mar 20 14:28:25 1990 David J. MacKenzie (djm at pogo.ai.mit.edu)
+
+ * tee.c (main): Pass list of files and its size as args to tee
+ rather than as global vars. Exit with return value of tee
+ instead of always 0.
+ (tee): Use unbuffered I/O instead of stdio, for POSIX.
+ Return an error status.
+ (xwrite): New function.
+
+Tue Mar 13 00:38:13 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * who.c (who_am_i): Print heading before checking to see
+ whether there is an entry for the tty on stdin, for
+ consistency with the who function.
+ (main): Use argv[optind], not argv[1], as alternate file.
+
+Fri Mar 9 15:49:04 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * who.c: Rename UTMP to UTMP_FILE for compatibility with SysV
+ utmp.h. Include some additional header files.
+ (main): Recognize some options from SysVr3 who. Call usage.
+ Set new global var `program_name' from argv[0].
+ (usage): New function.
+ (who): If -q given, only print count of users logged on.
+ (print_entry): New function to format an entry on the output;
+ make format more like that of the Unix who programs.
+ (print_heading): New function to print a line describing each
+ output field.
+ (who, who_am_i): Call print_entry and print_heading.
+ (valid_entries): New function to return count of nonempty
+ entries in utmp.
+ (search_entries): Compare with utmp tty field instead of
+ username field. Don't assume null termination in utmp field.
+ (who_am_i): Print the entry for the tty on stdin rather than
+ the first entry found for the uid. If hostname is not
+ available, use a null one instead of "<unknown>".
+ Don't hardcode max hostname length.
+ (idle_string): New function to format idle time field.
+ (fatal, fatal_perror): Use program_name instead of hardcoded "who"
+ in error messages.
+
+Tue Mar 6 00:59:03 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * printenv.c (main): Allow multiple variables to be specified.
+ (barf): Function removed.
+
+Sat Jan 20 18:41:48 1990 Jim Kingdon (kingdon at geech)
+
+ * expr.c (nextarg): Do not pass *args to strcmp if NULL.
+
+Mon Dec 18 09:57:20 1989 David J. MacKenzie (djm at hobbes.ai.mit.edu)
+
+ * printenv.c (main): Simplify error messages.
+
+Sat Dec 16 15:15:50 1989 David J. MacKenzie (djm at hobbes.ai.mit.edu)
+
+ * expr.c: Indent to regularize spacing.
+ (cmpv, arithf): Change '#define foo (args)' to '#define foo(args)'
+ so they compile.
+ (docolon): Remove unused vars.
+ (multiply): Rename from times to avoid libc conflict.
+ (error): Include program name in message.
+ (xmalloc): Rename from Malloc.
+ (re_compiled): Rename from re_comp to avoid libc conflict.
+
+ * basename.c: Fix some weird indentation.
+ (main): Print a clearer usage message.
+ Use a simpler method for removing suffix, if given.
+ (fatal): Function no longer used; removed.
+
+ * sleep.c: (main): Rename `time' to `seconds'. Print usage
+ message if given no args.
+ Exit with status 0 instead of falling off end.
+ (error): Print to stderr, not stdout.
+
+ * tee.c: (main): Use getopt_long instead of custom parser,
+ and adjust usage message.
+ Use list of filenames in argv rather than making a copy.
+ (tee): New function created from the second half of main.
+ Fix bug where it tried to fclose a loop index instead of a stream.
+ (xmalloc): Ok to return 0 if 0 bytes requested.
+ (xrealloc): Unused function removed.
+
+ * whoami.c: Canonicalize usage message and fix error message.
+
+ * who.c: Declare some functions.
+ (fatal_perror): New function for printing errors after system
+ calls.
+ Global: Use it when appropriate.
+ (xmalloc): Return char *, not int.
+ (read_utmp): Ok if utmp file is empty.
+ Include filename in error messages.
+ (scan_entries): Adjust columns to line up better, particularly
+ when there are users with 8 character long usernames logged in.
+
+Sat Oct 28 13:20:43 1989 David J. MacKenzie (djm at spiff)
+
+ * uname.c: Added long options.
+ global: changed the word `part' to the word `element'
+ (more precise).
+ (program_name, long_options): New variables.
+ (main): Support long options.
+ (usage): Add long options summary to message.
+
+
+ -----
+
+ Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994 Free Software
+ Foundation, Inc.
+
+ Copying and distribution of this file, with or without
+ modification, are permitted provided the copyright notice
+ and this notice are preserved.
+
+Local Variables:
+mode: indented-text
+left-margin: 8
+version-control: never
+End:
diff --git a/old/sh-utils/NEWS b/old/sh-utils/NEWS
new file mode 100644
index 0000000..d9dc3b5
--- /dev/null
+++ b/old/sh-utils/NEWS
@@ -0,0 +1,284 @@
+ [2.0.15]
+* date no longer accepts e.g., September 31 in the MMDDhhmm syntax
+* fix a bug in this package's .m4 files and in configure.ac
+ [2.0.14]
+* nohup's behavior is changed as follows, to conform to POSIX 1003.1-2001:
+ - nohup no longer adjusts scheduling priority; use "nice" for that.
+ - nohup now redirects stderr to stdout, if stderr is not a terminal.
+ - nohup exit status is now 126 if command was found but not invoked,
+ 127 if nohup failed or if command was not found.
+ [2.0.13]
+* uname and uptime work better on *BSD systems
+* pathchk now exits nonzero for a path with a directory component
+ that specifies a non-directory
+ [2.0.12]
+* kill: new program
+* who accepts new options: --all (-a), --boot (-b), --dead (-d), --login,
+ --process (-p), --runlevel (-r), --short (-s), --time (-t), --users (-u).
+ The -u option now produces POSIX-specified results and is the same as
+ the long option `--users'. --idle is no longer the same as -u.
+* The following changes apply on systems conforming to POSIX 1003.1-2001,
+ and are required by the new POSIX standard:
+ - `date -I' is no longer supported. Instead, use `date --iso-8601'.
+ - `nice -NUM' is no longer supported. Instead, use `nice -n NUM'.
+* New 'uname' options -i or --hardware-platform, and -o or --operating-system.
+ 'uname -a' now outputs -i and -o information at the end.
+ New uname option --kernel-version is an alias for -v.
+ Uname option --release has been renamed to --kernel-release,
+ and --sysname has been renamed to --kernel-name;
+ the old options will work for a while, but are no longer documented.
+* 'expr' now uses the LC_COLLATE locale for string comparison, as per POSIX.
+* 'expr' now requires '+' rather than 'quote' to quote tokens;
+ this removes an incompatibility with POSIX.
+* date -d 'last friday' would print a date/time that was one hour off
+ (e.g., 23:00 on *thursday* rather than 00:00 of the preceding friday)
+ when run such that the current time and the target date/time fall on
+ opposite sides of a daylight savings time transition.
+ This problem arose only with relative date strings like `last monday'.
+ It was not a problem with strings that include absolute dates.
+* factor is twice as fast, for large numbers
+ [2.0.11]
+* setting the date now works properly, even when using -u
+* `date -f - < /dev/null' no longer dumps core
+* some DOS/Windows portability changes
+ [2.0j]
+* `date -d DATE' now parses certain relative DATEs correctly
+ [2.0i]
+* fixed a bug introduced in 2.0h that made many programs fail with a
+ `write error' when invoked with the --version option
+ [2.0h]
+* all programs fail when printing --help or --version output to a full device
+* printf exits nonzero upon write failure
+* yes now detects and terminates upon write failure
+* date --rfc-822 now always emits day and month names from the `C' locale
+* portability tweaks for Solaris8, Ultrix, and DOS
+ [2.0g]
+* date now handles two-digit years with leading zeros correctly.
+* printf interprets unicode, \uNNNN \UNNNNNNNN, on systems with the
+ required support; from Bruno Haible.
+* stty's rprnt attribute now works on HPUX 10.20
+* seq's --equal-width option works more portably
+ [2.0f]
+* fix build problems with ut_name vs. ut_user
+ [2.0e]
+* stty: fix long-standing bug that caused test failures on at least HPUX
+ systems when COLUMNS was set to zero
+* still more portability fixes
+* unified lib/: now that directory and most of the configuration framework
+ is common between fileutils, textutils, and sh-utils
+ [2.0d]
+* fix portability problem with sleep vs lib/strtod.c's requirement for -lm
+ [2.0c]
+* fix portability problems with nanosleep.c and with the new code in sleep.c
+ [2.0b]
+* Regenerate lib/Makefile.in so that nanosleep.c is distributed.
+ [2.0a]
+* sleep accepts floating point arguments on command line
+* sleep's clock continues counting down when sleep is suspended
+* when a suspended sleep process is resumed, it continues sleeping if
+ there is any time remaining
+* who once again prints whatever host information it has, even without --lookup
+Changes in release 2.0
+* disable stty tests (otherwise they fail) when `make check' is run via rsh
+ [1.16m]
+* false and true now ignore --help and --version when POSIXLY_CORRECT is set
+ [1.16l]
+* false and true are now C programs rather than shell scripts
+ [1.16k]
+* fix typos in my version of AC_SEARCH_LIBS.
+* fix dates on config files so builders don't need autoconf/automake
+ [1.16j]
+* work around problems with my use of AC_SEARCH_LIBS
+* fix a bug in id
+ [1.16i]
+* portability tweaks for lib/readutmp.[ch] and src/date.c
+ [1.16h]
+* seq with no arguments now elicits a useful diagnostic rather than a segfault
+* portability tweaks to work around utmpname differences
+* who works on Solaris
+ [1.16g]
+* factor now uses uintmax_t, so the largest number it can factor is now 2^64 - 1
+ on systems with type `long long'.
+* nohup no longer modifies the shell's search path
+* `basename /' now prints `/', per the single unix spec
+* `who --lookup' no longer erroneously reports `localhost' for IP addresses
+ for which it could not do a reverse lookup.
+* `id user' wouldn't report a group id in some situations. Now it always does.
+ [1.16f]
+* chroot now calls chdir ("/") after chroot.
+* `date -s' now exits with nonzero status upon failure
+* new autoconf tests detect bugs in vendor mktime from Irix-6.4 and SunOS4.1.4
+ Your executables will be a little larger on such systems because you'll use
+ GNU's mktime function, but date will work more reliably.
+* hostid: new program
+* `yes --help' and `yes --version' print those strings when the POSIXLY_CORRECT
+ environment variable is set
+* who no longer does DNS lookups by default -- the new option, --lookup (-l),
+ enables lookups
+ [1.16e]
+* pinky: new lightweight finger-style program
+ [1.16d]
+* the groups script now exits non-zero and doesn't print anything more
+ when `id' fails
+ [1.16c]
+* date -u -d DATE now prints the correct date
+* don't remove already-installed su unless it is possible to install the
+ new one setuid root.
+ [1.16b]
+ [1.16a]
+* expr accepts new unary operator, quote.
+* expr now returns 0 for failed matches where pattern contained e.g., `\\('
+* date -d DATE now works on Unicos systems
+* add tests for factor and more for date.
+* factor runs a lot faster for large 64-bit inputs
+* date works with relative offsets involving the `next' keyword
+
+Changes in release 1.16
+* stty -tabs works properly
+* add tests for date
+* date --date "02/29/1996 - 1 year" now works properly
+
+Changes in release 1.15
+* nice works with very recently-changed GNU libc getopt
+* fix several bugs in m4 macros used to create `configure' script
+* id works on systems with disfunctional getgroups function
+* uptime configure test detects /proc/uptime on Linux
+
+Changes in release 1.14
+* fix bug in getdate.y that broke date's --date=DATE option on systems
+ like SunOS4.
+* expr treats unadorned ? and + as literals. To make expr treat them as
+ operators you have to use \? and \+.
+
+Changes in release 1.13
+* two patches for ISC
+* Regenerate all Makefile.in using a patched version of automake-1.1l.
+ [1.12s]
+* lots of little bug fixes -- see ChangeLog
+ [1.12r]
+* uname --processor (-p) works on systems that have sysinfo and define
+ SI_ARCHITECTURE.
+* stty works better on systems like i386-pc-isc3.0
+* date --date=DATE accepts dates like those in an RCS log listing, e.g.,
+ `1992/11/01 05:44:34'.
+* printf now warns if excess arguments are ignored.
+* tee no longer fails immediately upon receipt of SIGPIPE
+ [1.12q]
+* running `make check' runs tests of nice
+* lots of configuration-related improvements
+* nice allows `+' in options like -+8 and -+13.
+* when matching, expr warns about non-portability when the first character
+ of the basic regular expression is `^'
+* `id user' no longer prints bogus group list
+* uses automake-generated Makefile templates
+* date accepts new %V format
+* date's %U and %W formats work properly
+* nice option handling works with 2-digit old-style-option adjustments.
+ Now, `nice -18 -- nice' prints `18'. Before it printed `8'.
+* internationalized diagnostic messages
+* `date -d "01/01/1998 3 years" +%Y' now works properly. It prints 2001.
+* New programs: chroot, factor, seq, uptime.
+* date accepts new option: --rfc-822 (-R)
+* date accepts new format, %z, for RFC-822 style numeric timezone (-0500)
+* date: fix bugs in the handling of date -u +'%s %Z'.
+* date accepts new option --reference=FILE (-r FILE) analogous to the
+ like-named touch option.
+* date can now format dates up to and including ones in the year 2037
+User visible changes in release 1.12
+* None.
+User visible changes in release 1.11
+* date accepts new option: (-f) --file=DATEFILE
+* skeletal texinfo documentation (mainly just the `invoking' nodes)
+* `stty werase ^W' works. Before, werase wasn't enabled for AIX-3.2.5.
+* su with no arguments works properly
+* nice accepts options like `--5' (this is interpreted like `-n -5')
+* nice now interprets `-1 -1' like `-1' not like `-11'
+* `stty speed' and `stty size' no longer output a spurious newline
+User visible changes in release 1.10
+* change package name from shellutils to sh-utils
+* add hostname, pwd, and users commands
+* --version outputs the name of the utility as well as the package name
+ and version number.
+* Configure properly determines options for stty on SCO ODT 3.0 systems.
+* `date -d' works better. Before, `date -d '4apr94'' produced
+ `Sun Apr 3 23:00:00 CDT 1994'.
+User visible changes in release 1.9.4
+* Repair stty option handling.
+User visible changes in release 1.9.3
+* `stty -a -g' gets a diagnostic
+* `stty {-a|-g} any-other-argument' gets a diagnostic
+* stty no longer ignores some of its arguments
+* basename and dirname no longer treat `--' specially
+* `basename -- file.c .c' generates a usage error. Before, it output `file'.
+* `basename file-dist -dist' outputs `file'. Before it output `file-dist'.
+* stty defaults `swtch' to undefined for Solaris so `susp' (^Z) will work.
+ Before, with the default settings ^Z did nothing.
+* stty no longer gives an error message when it finds a spurious difference
+ (due to buggy tcgetattr/tcsetattr) between requested and current tty
+ modes under SunOS 4.1.x.
+* stty no longer fails if the ioctl to determine the display width fails
+ when displaying settings.
+* stty works around SunOS 4.x kernel bug that made `stty rows 0 cols 0' fail.
+* who and tee no longer fail gratuitously when continued after an
+ interrupted read or write system call.
+* date accepts new format: %s time in seconds since 1970-01-01 00:00:00 UCT
+* date -d can parse dates like `11-JUL-1991'
+* expr '' == 0 works (before, it printed 1)
+* stty no longer fails on telnet sessions to Solaris systems
+* `cd /etc; who utmp' now works. Before, any filename argument had to be
+ absolute or relative to /dev.
+
+User visible changes in release 1.9.2:
+* who output is better formatted on Solaris and other SysVr4 systems
+* fix a minor problem in formatting the output from `stty -a'
+* yes with arguments outputs newlines again
+* partial stty failures are reported
+
+Major changes in release 1.9.1:
+* stty can be built on Suns again
+* minor fix for who -q
+
+Major changes in release 1.9:
+* su fails gracefully when getpass is unable to open /dev/tty.
+* printenv and tty detect and report write errors
+* fix bug in stty
+* stty accepts the new options status and flush on systems that provide them
+* `expr 1 / 0' gives an error message rather than trying to divide by zero
+* expr's `substr' doesn't overrun malloc'd buffer
+* expr recognizes the string `0' as zero
+* better support for Linux, Dec Alpha, and SGI Irix
+* all programs (even true and false) accept --version and --help options
+* uname's --version option is no longer equivalent to its -v option
+* configure uses config.h, so DEFS won't exceed preprocessor limits of
+ some compilers on the number of symbols defined via -D.
+* work around problem where $(srcdir)/config.h was used instead of
+ ../config.h -- this happened only when building in a subdirectory
+ and when config.h remained in $(srcdir) from a previous ./configure.
+* make may be run from the subdirectories
+
+Major changes in release 1.8:
+* add echo command
+* fix some incorrect warnings in pathchk
+* look at the right utmp file on 386BSD
+* date doesn't dump core on some systems now
+
+Major changes in release 1.7:
+* add su, who, true, false commands
+* add more tests to expr
+* fix printf program handling of \ escapes
+* printf can re-use format string for multiple groups of arguments
+* printf catches numeric conversion errors with an ANSI C library
+* stty nl and -nl were backwards
+* date can format an arbitrary date without setting it
+
+========================================================================
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts. A copy of the license is included in the ``GNU Free
+Documentation License'' file as part of this distribution.
diff --git a/old/textutils/ChangeLog b/old/textutils/ChangeLog
new file mode 100644
index 0000000..cc3331e
--- /dev/null
+++ b/old/textutils/ChangeLog
@@ -0,0 +1,8753 @@
+2006-08-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * ChangeLog: Add copyright notice.
+ * NEWS: Likewise.
+
+2002-07-29 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.1.
+
+ * src/tail.c: Adjust command examples in comments to use
+ POSIX 1003.1-2001 option syntax.
+ * src/sort.c: Likewise.
+ From Paul Eggert.
+
+2002-07-28 Jim Meyering <meyering@lucent.com>
+
+ * configure.ac: Require automake-1.6b.
+
+2002-07-20 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0.22.
+
+ * Upgrade to cvs automake -- required to work with 2.53b.
+ * configure.ac: Require automake-1.6a.
+
+ * Upgrade to gettext-0.11.3.
+ * Upgrade to autoconf-2.53b.
+
+2002-07-02 Jim Meyering <meyering@lucent.com>
+
+ * src/cat.c, src/cksum.c, src/comm.c, src/csplit.c, src/cut.c (usage):
+ Use the PACKAGE_BUGREPORT e-mail address, rather than hard-coding it.
+ * src/expand.c, src/fmt.c, src/fold.c, src/head.c, src/join.c: Likewise.
+ * src/md5sum.c, src/nl.c, src/od.c, src/paste.c, src/pr.c: Likewise.
+ * src/sort.c, src/split.c, src/sum.c, src/tac.c, src/tail.c: Likewise.
+ * src/tr.c, src/tsort.c, src/unexpand.c, src/uniq.c, src/wc.c: Likewise.
+
+2002-06-22 Jim Meyering <meyering@lucent.com>
+
+ * configure.ac: Invoke AC_GNU_SOURCE very early.
+
+2002-06-15 Jim Meyering <meyering@lucent.com>
+
+ * src/cksum.c: Include <sys/types.h> before system.h.
+
+2002-05-22 Jim Meyering <meyering@lucent.com>
+
+ * src/od.c [struct dummy]: Renamed. Don't rely on portability of
+ zero-length arrays. Instead, use sizes of -1 or +1.
+ Reported by Eric Backus.
+
+2002-05-14 Jim Meyering <meyering@lucent.com>
+
+ `od -t f8' didn't work.
+ This bug was introduced with my change of 2000-10-22 (textutils-2.0.8).
+ * src/od.c (ulonglong_t): Move declaration to precede new use.
+ [enum size_spec] (N_SIZE_SPECS): New member.
+ (width_bytes): Add initializer corresponding to ulonglong_t type.
+ (struct assert_width_bytes_matches_size_spec_decl): Declare.
+ Based on a patch from Tony Kocurko.
+
+2002-04-29 Paul Eggert <eggert@twinsun.com>
+
+ Use ENABLE_NLS only for gettext-related stuff, not also for
+ setlocale-related stuff. From a patch suggested by Bruno
+ Haible.
+
+ Since setlocale is now almost universal, this patch also
+ removes some of the optimizations that clutter up the code and
+ which don't help all that much even on hosts that lack
+ setlocale.
+
+ * lib/hard-locale.c: Upgrade to version used in GNU Diffutils 2.8.1.
+ * m4/prereq.m4 (jm_PREREQ_HARD_LOCALE): Check for stdlib.h.
+ Do not check for alloca.h (no longer used) or stdbool.h (was never
+ used?). Add AM_C_PROTOTYPES since hard-locale.h uses it.
+
+ * src/sys2.h (HAVE_SETLOCALE): Define to 0 if not defined.
+ * src/comm.c (compare_files): Replace #ifdef ENABLE_NLS
+ with if (HAVE_SETLOCALE).
+ * src/join.c (keycmp): Likewise.
+ * src/sort.c (keycompare, compare): Likewise.
+
+ * src/comm.c (hard_LC_COLLATE): Define even if ! ENABLE_NLS.
+ * src/join.c (hard_LC_COLLATE): Likewise.
+ * src/sort.c (hard_LC_COLLATE): Likewise.
+
+ * src/comm.c (main): Always initialize hard_LC_COLLATE.
+ Put initialization next to other locale-related stuff.
+ * src/join.c (main): Likewise.
+ * src/sort.c (main): Likewise.
+
+ * src/sort.c: Include <langinfo.h> even if ! ENABLE_NLS.
+ (decimal_point, th_sep): Depend on HAVE_SETLOCALE, not ENABLE_NLS.
+ (main): Likewise.
+ (MONTHTAB_CONST): Remove; all uses removed.
+ (struct_month_cmp, inittables): Do not depend on ENABLE_NLS.
+ (main): hard_LC_TIME locale does not depend on ENABLE_NLS.
+
+2002-04-29 Jim Meyering <meyering@lucent.com>
+
+ * src/tail.c (parse_obsolescent_option): Do not limit the maximum
+ line/byte count (when specified via obsolete option syntax) to be
+ less than ULONG_MAX on systems where OFF_T_MAX is larger.
+
+2002-04-28 Paul Eggert <eggert@twinsun.com>
+
+ * src/tail.c (tail_forever): Do not treat
+ max_n_unchanged_stats_between_opens specially (as if it were
+ infinite) if it has its maximal value. Similarly for
+ max_n_consecutive_size_changes_between_opens.
+
+2002-04-28 Jim Meyering <meyering@lucent.com>
+
+ Avoid new warnings from gcc.
+ * src/pr.c [struct COLUMN] <name>: Declare member to be const.
+ (init_fps): Declare local variable `firstname' to be const.
+
+2002-04-25 Jim Meyering <meyering@lucent.com>
+
+ * src/wc.c (usage): Adjust ordering to match that of default output.
+ Suggestion from Gaute Hvoslef Kvalnes.
+
+ * configure.ac (AM_GNU_GETTEXT): Add external arg.
+ (AC_CONFIG_FILES): Remove intl/Makefile.
+ * Makefile.am (SUBDIRS): Remove intl.
+ * src/Makefile.am (INCLUDES): Remove -I../intl.
+
+2002-04-15 Jim Meyering <meyering@lucent.com>
+
+ * src/tr.c (usage): Give a verbose description of --squeeze-repeats,
+ including the mention of SET1. Reported by Dan Jacobson.
+
+2002-04-12 Jim Meyering <meyering@lucent.com>
+
+ * src/Makefile.am (LDADD): List ../lib/libfetish.a both before
+ and after @LIBINTL@. Thanks to Paul Eggert for the fix and to
+ Bruno Haible for diagnosing the problem.
+
+2002-03-16 Jim Meyering <meyering@lucent.com>
+
+ * src/Makefile.am (datadir): Don't override $(datadir)
+ which might be set by --datadir and different from $(prefix)/share.
+ Patch from Albert Chin-A-Young.
+
+2002-03-10 Jim Meyering <meyering@lucent.com>
+
+ * configure.ac (AM_INIT_AUTOMAKE): Specify the required version
+ of automake (1.6), and options (gnits dist-bzip2), rather than...
+ * Makefile.am (AUTOMAKE_OPTIONS): ...here. Remove definition.
+
+2002-03-09 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.am (EXTRA_DIST): Remove config/config.rpath,
+ now that automake knows about it.
+
+2002-03-05 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.am (EXTRA_DIST): Add config/config.rpath.
+
+2002-02-23 Paul Eggert <eggert@twinsun.com>
+
+ * src/cat.c (simple_cat, cat, main): Use char * rather than
+ unsigned char *, to avoid some technical violations of the C
+ standard, and to avoid the need for casts. I guess the
+ unsigned char * was probably there for improved performance
+ with ancient compilers, but the code wasn't using the
+ unsignedness any more.
+ Reported by Nelson H. F. Beebe.
+
+ (cat): int -> size_t for full_write arg. This doesn't
+ fix any bugs since the buffer size is small, but it makes
+ the code a bit clearer.
+
+2002-02-18 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0.21.
+
+ * tests/tail/Test.pm: For tests matching /^(obs|err-[134])/,
+ put _POSIX2_VERSION=199209 in the environment, so the tests succeed
+ even when the environment would have contained _POSIX2_VERSION=200112.
+ * tests/uniq/Test.pm (test_vector): Rename tests of obsolete usage
+ to have prefix of `obs'. Adjust environment for those tests as above.
+
+ * tests/mk-script: When getting input via a pipe, apply the
+ environment settings to the command in question, not to `cat'.
+ No longer allow more than one element in the $Test::env or
+ $Test::env_default arrays. No caller used that feature.
+
+2002-02-17 Jim Meyering <meyering@lucent.com>
+
+ * tests/head/Test.pm: Accept pre-POSIX 1003.1-2001 options.
+ * tests/pr/Test.pm: Likewise.
+ * tests/sort/Test.pm: Likewise.
+
+ * Makefile.cfg (wget_files): Reflect new location of these files.
+
+2002-02-16 Jim Meyering <meyering@lucent.com>
+
+ * ABOUT-NLS, intl/*: Update to Gettext 0.11.
+ * INSTALL: Update to Autoconf 2.52h.
+
+ * src/Makefile.am (datadir): Use `share' in place of @DATADIRNAME@,
+ per Gettext-0.11.
+ (LDADD): Use @LIBINTL@ instead of @INTLLIBS@, per Gettext-0.11.
+
+ * configure.ac (AC_CONFIG_AUX_DIR): New macro invocation.
+ (ALL_LINGUAS): Remove: now in po/LINGUAS as per Gettext 0.11.
+
+ * config: New subdirectory, containing the following files from .:
+ config.guess, config.sub, depcomp, missing, install-sh, mkinstalldirs.
+ Move the following files here from doc: texinfo.tex, mdate-sh.
+
+2002-02-15 Paul Eggert <eggert@twinsun.com>
+
+ Add support for _POSIX2_VERSION, which lets you pick which POSIX
+ version you want the utilities to conform to. Remove warnings about
+ failure to conform to a future POSIX version.
+
+ * NEWS, doc/coreutils.texi: Document _POSIX2_VERSION.
+ * doc/coreutils.texi (Standards Conformance): New section.
+
+ * src/expand.c: Include posixver.h.
+ (usage): Document only the intersection of the old and new behaviors,
+ to encourage portability.
+ * src/fold.c: Likewise.
+ * src/head.c: Likewise.
+ * src/od.c: Likewise.
+ * src/pr.c: Likewise.
+ * src/sort.c: Likewise.
+ * src/split.c: Likewise.
+ * src/uniq.c: Likewise.
+ * src/tail.c: Likewise.
+ * src/unexpand.c: Likewise.
+
+ * src/expand.c (shortopts): Remove; no longer needed.
+ * src/od.c (short_options): Likewise.
+ * src/pr.c (short_options): Likewise.
+ * src/sort.c (short_options): Likewise.
+ * src/split.c (shortopts): Likewise.
+ * src/uniq.c (shortopts): Likewise.
+ * src/unexpand.c (shortopts): Likewise.
+
+ * src/od.c (COMMON_SHORT_OPTIONS): New macro.
+ * src/pr.c (COMMON_SHORT_OPTIONS): Likewise.
+ * src/sort.c (COMMON_SHORT_OPTIONS): Likewise.
+
+ * src/expand.c (main): Revert to previous behavior, except report
+ an error and exit if the obsolete syntax is used and if conforming
+ to the new standard.
+ * src/fold.c (main): Likewise.
+ * src/head.c (main): Likewise.
+ * src/split.c (main): Likewise.
+ * src/uniq.c (main): Likewise.
+ * src/tail.c (main, parse_obsolescent_option): Likewise.
+ * src/unexpand.c (main): Likewise.
+
+ * src/od.c (STRINGS_OPTION, WIDTH_OPTION): Remove; no longer needed.
+ All uses changed back to the corresponding short options.
+ * src/pr.c (SEP_STRING_OPTION): Likewise.
+
+ * src/od.c (main): Parse options using POSIX 1003.1-2001 rules if
+ conforming to that standard. Do not warn of obsolete options.
+ * src/pr.c (main): Likewise.
+ * src/sort.c (main): Likewise.
+
+ * src/system.h (_POSIX2_VERSION, POSIX2_VERSION): Remove definitions.
+ (OPTARG_POSIX, OBSOLETE_OPTION_WARNINGS): Likewise.
+
+2002-02-16 Jim Meyering <meyering@lucent.com>
+
+ * tests/misc/split-a: New test for change of 2002-02-05.
+ * tests/misc/Makefile.am (TESTS): Add split-a.
+
+2002-02-12 Jim Meyering <meyering@lucent.com>
+
+ * src/split.c (DEFAULT_SUFFIX_LENGTH): Define constant.
+ (suffix_length): Use it here.
+ (usage): Use it here.
+
+2002-02-05 Paul Eggert <eggert@twinsun.com>
+
+ Change 'split' to conform to POSIX. It now accepts an -a or
+ --suffix-length option, and refuses to generate more files
+ than there are suffixes.
+
+ * NEWS, doc/coreutils.texi: Document this.
+ * src/split.c: Include "dirname.h".
+ (outbase): Now a global var.
+ (outfile_end): Remove.
+ (suffix_length): New var.
+ (shortopts, longopts, main): Add -a or --suffix-length.
+ (next_file_name): Implement -a. Do not extend the suffix length.
+ Check for file names that are too long.
+ (main): Move outfile initialization to next_file_name.
+
+ * src/split.c (shortopts): Remove -v (a typo).
+
+2002-02-11 Jim Meyering <meyering@lucent.com>
+
+ * tests/misc/head-pos: New file/test for the change of 2002-02-08.
+ * tests/misc/Makefile.am (TESTS): Add head-pos.
+
+ * src/tr.c (unquote): Make comment a little clearer.
+
+2002-02-08 Paul Eggert <eggert@twinsun.com>
+
+ * src/head.c (head_lines): If we have read too much data, try
+ to seek back to the position we would have gotten to had we
+ been reading one byte at a time. POSIX currently doesn't
+ require this, but it's easy to do and some software relies on it.
+
+2002-02-02 Jim Meyering <meyering@lucent.com>
+
+ * src/uniq.c (main): Prepend `warning: ' to the diagnostic, so it's
+ consistent with all of the other `... is obsolete...' diagnostics.
+
+2002-01-31 Paul Eggert <eggert@twinsun.com>
+
+ Add more support for POSIX 1003.1-2001, which requires removal for
+ support of obsolete "-N" option syntax in expand, head, fold,
+ split, tail, unexpand, uniq, and which prohibits options with
+ optional arguments in od and pr.
+
+ * NEWS: Document this.
+ * doc/coreutils.texi: Likewise.
+ * src/expand.c (usage): Likewise.
+ * src/fold.c (usage): Likewise.
+ * src/head.c (usage): Likewise.
+ * src/od.c (usage): Likewise.
+ * src/pr.c (usage): Likewise.
+ * src/split.c (usage): Likewise.
+ * src/unexpand.c (usage): Likewise.
+ * src/uniq.c (usage): Likewise.
+
+ * NEWS: Improve doc for previous fix in this area.
+
+ * src/expand.c (shortopts): New constant.
+ * src/od.c (short_options): Likewise.
+ * src/pr.c (short_options): Likewise.
+ * src/sort.c (short_options): Likewise.
+ * src/split.c (shortopts): Likewise.
+ * src/unexpand.c (shortopts): Likewise.
+ * src/uniq.c (shortopts): Likewise.
+
+ * src/expand.c (main): Check for obsolete options.
+ * src/fold.c (main): Likewise.
+ * src/head.c (main): Likewise.
+ * src/od.c (main): Likewise.
+ * src/pr.c (main): Likewise.
+ * src/sort.c (main): Likewise.
+ * src/split.c (main): Likewise.
+ * src/tail.c (parse_obsolescent_option, main): Likewise.
+ * src/unexpand.c (main): Likewise.
+ * src/uniq.c (main): Likewise.
+
+ * src/head.c (header_mode_option): New constant.
+
+ * src/od.c: New enum for long options.
+
+ * src/pr.c (SEP_STRING_OPTION): New enum value.
+ (long_options): Use it.
+
+ * src/split.c (main): Use -1, not EOF, for getopt_long.
+
+ * src/system.h (OPTARG_POSIX, OBSOLETE_OPTION_WARNINGS): New macros.
+
+ * src/fold.c (main): Fix bug: -- -N was treated as -N --.
+
+2002-02-01 Jim Meyering <meyering@lucent.com>
+
+ * src/tail.c (start_lines): Handle the case in which bytes_read is zero.
+
+2002-01-28 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (ac-check): Remove, now that we no longer have
+ to duplicate that information.
+ (local-check): Remove ac-check.
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Require automake-1.5d.
+
+ * configure.ac (AM_INIT_AUTOMAKE): Use zero-arg form of this macro.
+ (ALL_LINGUAS): Add the bokmål dialect of Norwegian (nb).
+
+2002-01-27 Jim Meyering <meyering@lucent.com>
+
+ tail -n +2 would perform an extra read after encountering EOF
+ * src/tail.c (start_lines): Detect EOF, inform caller.
+ (tail_lines): Upon EOF in start_lines, return immediately.
+
+2002-01-22 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0.20.
+
+2002-01-22 Paul Eggert <eggert@twinsun.com>
+
+ * src/od.c (skip): Remove redundant check for overflow.
+ fseeko's seek argument is already known to be in range,
+ since it is less than the file size.
+
+2002-01-22 Jim Meyering <meyering@lucent.com>
+
+ * po/POTFILES.in: Add lib/xmemcoll.c.
+
+2002-01-22 Paul Eggert <eggert@twinsun.com>
+
+ * src/tac.c (save_stdin): Report proper errno value after
+ fwrite failures. Do not bother to rewind the temp file, as
+ it'll be read backwards anyway.
+
+2002-01-22 Paul Eggert <eggert@twinsun.com>
+
+ * src/ptx.c (swallow_file_in_memory): Work even if `open' returns 0.
+ Check for `close' error.
+
+2002-01-22 Paul Eggert <eggert@twinsun.com>
+
+ Port to glibc 2.2.5, whose mmap stdio positions the underlying
+ file descriptor at a nonzero offset after an fopen.
+
+ * m4/jm-macros.m4 (jm_MACROS): Require AC_FUNC_FSEEKO.
+ * src/od.c (skip): Use fseeko rather than lseek.
+ (Also, check for overflow when converting uintmax_t to off_t.)
+ * src/sys2.h (EOVERFLOW, fseeko): New macros.
+
+2001-01-21 Paul Eggert <eggert@twinsun.com>
+
+ * src/comm.c: Include xmemcoll.h, not memcoll.h.
+ Use xmemcoll instead of memcoll.
+ * src/join.c: Likewise.
+ * src/sort.c: Likewise.
+
+ * src/sort.c (die): Do not invoke cleanup; atexit does this now.
+ (main): Use atexit to invoke cleanup on exit.
+ Set xmemcoll_exit_failure to SORT_FAILURE.
+
+2002-01-20 Paul Eggert <eggert@twinsun.com>
+
+ * src/comm.c (compare_files): Don't assume that the difference
+ between two size_t values can be stored in an int; this doesn't
+ work, for example, on 64-bit Solaris.
+ * src/sort.c (CMP_WITH_IGNORE): Likewise.
+ * src/join.c (keycmp): Likewise. Also, fix the type of two locals
+ to be size_t instead of int.
+
+2002-01-20 Paul Eggert <eggert@twinsun.com>
+
+ * src/csplit.c: Don't include "xalloc.h", as system.h already
+ does that via sys2.h.
+ * src/sort.c: Likewise.
+
+2002-01-19 Jim Meyering <meyering@lucent.com>
+
+ * configure.ac: Remove code that set LIBOBJS in support of ansi2knr.
+ The latest version of autoconf objected to it, and besides, I don't
+ care too much about K&R support these days.
+
+2002-01-18 Jim Meyering <meyering@lucent.com>
+
+ Fix tr so it no longer gets a failed assertion for [::] or [==].
+
+ * src/tr.c (xmemdup): Rename from `substr' and rewrite to
+ take only pointer/length parameters.
+ (build_spec_list): Update sole caller.
+ Properly diagnose the invalid specs [::] and [==].
+ Pawel Prokop reported that `tr '[::]' x' elicits a failed assertion.
+ * tests/tr/Test.pm: Add tests for the above fix.
+
+2002-01-14 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (main): Issue a warning for obsolete usage, unless
+ POSIXLY_CORRECT.
+ * src/tail.c (parse_obsolescent_option): Likewise.
+ * src/uniq.c (main): Likewise.
+
+2002-01-14 Paul Eggert <eggert@twinsun.com>
+
+ Add support for POSIX 1003.1-2001, which requires removal for
+ support of obsolete "+" option syntax in sort, tail, and uniq.
+
+ * NEWS: Document this.
+
+ * src/sort.c (usage, main): Implement this.
+ * src/tail.c (usage, parse_obsolescent_option): Likewise.
+ * src/uniq.c (usage, main): Likewise.
+ * src/system.h (_POSIX2_VERSION, POSIX2_VERSION): New macros.
+
+ * src/sys2.h (ISDIGIT, S_ISVTX, S_IXUGO): Comment fix.
+
+2002-01-14 Jim Meyering <meyering@lucent.com>
+
+ * tests/misc/sort: New test, for just-fixed bug.
+ * tests/misc/Makefile.am (TESTS): Add sort.
+ (TESTS_ENVIRONMENT): Add PROG=$$tst. This is a gross kludge
+ that depends on the name of an automake-generated local variable.
+
+2002-01-13 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (mergefps): Fix bug when eliminating empty files.
+ Bug reported by James Hutt.
+
+2002-01-13 Jim Meyering <meyering@lucent.com>
+
+ * tests/help-version: Tweak to work with the programs in diffutils.
+
+2002-01-09 Jim Meyering <meyering@lucent.com>
+
+ * configure.in (ALL_LINGUAS): Add Turkish (tr).
+
+2001-12-18 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (usage, specify_sort_size): Accept 'K' (which is
+ now preferred, as it connotes 1024) as well as 'k'.
+ * NEWS: Document this change.
+
+2001-12-17 Jim Meyering <meyering@lucent.com>
+
+ * src/uniq.c (usage): Remove stray `)' in --help output.
+ Reported by Padraig Brady.
+
+ * Makefile.maint (real_dir): Remove unused variable.
+ (url_dir_list): Don't set define it here, but...
+ * Makefile.cfg (url_dir_list): ...define it here instead.
+ (hosts, a_host, b_host): Remove now-unused variables.
+ (alpha_subdir, a_url_dir, b_url_dir): Remove now-unused variables.
+
+2001-12-12 Bruno Haible <bruno@clisp.org>
+ Paul Eggert <eggert@twinsun.com>
+
+ * src/wc.c (wc): Use ISSPACE and iswspace in addition to hard-coding
+ the ASCII space character.
+
+2001-12-08 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0.19.
+
+ * Makefile.cfg (wget_files): Remove ansi2knr.c, since it's
+ no longer available at that location.
+
+2001-12-03 Jim Meyering <meyering@lucent.com>
+
+ * src/od.c, src/tail.c, src/tr.c (usage): I will not split translatable
+ strings in the middle of a sentence. I will not split translatable
+ strings in the middle of a sentence. I will not split translatable
+ strings in the middle of a sentence. ...
+ * src/join.c (usage): Merge lone "\n" into adjacent string.
+ * src/md5sum.c (usage): Likewise.
+ * src/paste.c (usage): Likewise.
+ Reported by Karl Eichwalder.
+
+2001-12-02 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (emit-upload-commands): Fix typo: s/distdir/PACKAGE/.
+
+2001-12-01 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0.18.
+
+ * Makefile.maint (po-check): Check for uses of _() not just in .c
+ files, but also in .h files.
+
+ Ideally, there would be just one translation for all --help
+ and --version description strings. Before this change, they
+ differed only in the number of blanks between the option name
+ and the description. Someday gettext may be smart enough
+ to merge such strings and to reconstruct the proper spacing at
+ run time. In the mean time, now there is one string for each,
+ and those descriptions in the --help output are no longer aligned
+ with the others.
+ * src/sys2.h (HELP_OPTION_DESCRIPTION): New macro.
+ (VERSION_OPTION_DESCRIPTION): New macro.
+ * src/cat.c, src/cksum.c, src/comm.c, src/csplit.c, src/cut.c:
+ * src/expand.c, src/fmt.c, src/fold.c, src/head.c, src/join.c:
+ * src/md5sum.c, src/nl.c, src/od.c, src/paste.c, src/pr.c, src/ptx.c:
+ * src/sort.c, src/split.c, src/sum.c, src/sys2.h, src/tac.c:
+ * src/tail.c, src/tr.c, src/tsort.c, src/unexpand.c, src/uniq.c:
+ * src/wc.c (usage): Use new macros, HELP_OPTION_DESCRIPTION and
+ VERSION_OPTION_DESCRIPTION instead of hard-coding --help and
+ --version descriptions.
+ * po/POTFILES.in: Add src/sys2.h.
+
+2001-11-27 Jim Meyering <meyering@lucent.com>
+
+ * src/system.h (SET_MODE) [O_BINARY]: Call setmode, not set_mode.
+ From Matthew Smith.
+
+2001-11-26 Jim Meyering <meyering@lucent.com>
+
+ * src/cat.c (cat): Don't test whether the full_write return value
+ (of type size_t) is less than 0. Reported by Nelson H. F. Beebe,
+ as a warning from Irix 6.5's C compiler.
+
+2001-11-25 Jim Meyering <meyering@lucent.com>
+
+ * src/cksum.c (usage): Indent --help and --version strings to
+ start in the 7th column.
+ * src/pr.c (usage): Likewise.
+
+2001-11-23 Jim Meyering <meyering@lucent.com>
+
+ Factor out some common strings to make translation easier.
+
+ * cat.c, cksum.c, comm.c, csplit.c, cut.c, expand.c, fmt.c, fold.c:
+ * head.c, join.c, md5sum.c, nl.c, od.c, paste.c, pr.c, ptx.c:
+ * sort.c, split.c, sum.c, tac.c, tail.c, tr.c, tsort.c, unexpand.c:
+ * uniq.c, wc.c: Split usage strings so that --help and --version
+ descriptions are alone in their own string.
+ Likewise for the one that says ``Mandatory arguments to long
+ options are mandatory for short options too.''
+ Suggestion from Karl Eichwalder.
+
+ * src/ptx.c (main): Don't split copyright string in the middle
+ of a sentence.
+
+2001-11-22 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0.17.
+
+ csplit could get a failed assertion: printf 'a\n\n'|csplit - '/^$/' 2
+ * src/csplit.c: No longer include assert.h.
+ (process_line_count): Remove invalid assertion. The test that caused
+ the failure has been in the code since before 1992-11-08, but since
+ 1996 it's been in an assertion. That assertion was disabled by default
+ until textutils-1.22g (1999-01-10). Reported by Eric Pemente.
+
+ * tests/misc/csplit: New file. Test for the above fix and others.
+ * tests/misc/Makefile.am (TESTS): Add csplit.
+ * tests/Makefile.am (EXTRA_DIST): Add lang-default.
+
+2001-11-19 Jim Meyering <meyering@lucent.com>
+
+ * src/tail.c (xlseek): New function.
+ Call it instead of lseek, in most cases, so any failure is reported.
+
+2001-11-18 Jim Meyering <meyering@lucent.com>
+
+ * config.sub: Update from master repository.
+ * config.guess: Likewise.
+
+2001-11-17 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.cfg ($(srcdir)/m4/jm-glibc-io.m4): Use $(move_if_change),
+ not the literal `move-if-change'.
+
+ * src/tail.c (tail_forever): Add a cast.
+
+ Avoid compiler warnings.
+ * src/fmt.c: Remove `unsigned' attribute from type of global `prefix'.
+ (copy_rest): Cast to (unsigned char *) before dereferencing.
+ (get_prefix): Likewise.
+
+ * configure.ac: Replace use of the one-arg form of AC_INIT
+ with a use of the 3-arg form and a use of AC_CONFIG_SRCDIR.
+
+2001-11-14 Paul Eggert <eggert@twinsun.com>
+
+ * src/tail.c (file_lines): Remove unnecessary cast.
+ (tail_lines): Could have called file_lines even though the first
+ lseek failed. Fix that.
+
+2001-11-14 Jim Meyering <meyering@lucent.com>
+
+ * src/tail.c (file_lines): Add a parameter, start_pos.
+ Work properly even when the read pointer is not at beginning of file.
+ (tail_lines): Call file_lines for any regular file, as long as lseek
+ can be used to seek to its end, not just when the initial read pointer
+ is at beginning of file.
+
+2001-11-13 Jim Meyering <meyering@lucent.com>
+
+ * src/tail.c (tail_lines): Move declaration of local `length'
+ into scope where it's used.
+ (tail_file): Likewise for local `stats'.
+
+ * tests/tail-2/Makefile.am (TESTS): Add proc-ksyms and start-middle.
+ * tests/tail-2/start-middle: New test, for the bug fixed on 1995-07-24.
+
+ `tail /proc/ksyms' would segfault on Linux.
+ * src/tail.c (tail_lines): Use status of lseek (...SEEK_END) call
+ in deciding whether to call file_lines or pipe_lines.
+ From Herbert Xu.
+ * tests/tail-2/proc-ksyms: New test, for the above fix.
+
+2001-11-11 Jim Meyering <meyering@lucent.com>
+
+ * src/od.c (struct tspec): Declare function pointer with prototype.
+
+ * src/sum.c (main): Declare function pointer with prototype.
+
+ * src/tsort.c (count_items): Mark parameter as unused.
+
+ * src/sort.c (struct_month_cmp): Guard definition with the same
+ cpp condition that guards the use.
+
+ * src/tail.c (xwrite): Remove assertion that size_t N >= 0.
+
+ * src/pr.c (struct COLUMN) [print_func]: Declare with a protype.
+ (struct COLUMN) [char_func]: Declare with a protype.
+
+ * src/od.c (parse_old_offset): Declare to be static.
+
+ * src/join.c (make_blank): Declare to be static.
+ (prfield): Declare local to be of type size_t, not int.
+
+ Some help strings were very long. Split them so that
+ they're no longer than the magic length 509 that ISO C89
+ compilers are required to support. Sorry, translators :-(
+
+ * src/md5sum.c (usage): Split --help output into smaller pieces.
+ * src/ptx.c (main, usage): Likewise.
+ * src/fmt.c (usage): Likewise.
+
+ * src/wc.c (usage): Split --help output into smaller pieces.
+ Use fputs, not printf.
+ * src/cat.c (usage): Likewise.
+ * src/cut.c (usage): Likewise.
+ * src/csplit.c (usage): Likewise.
+ * src/expand.c (usage): Likewise.
+ * src/head.c (usage): Likewise.
+ * src/join.c (usage): Likewise.
+ * src/nl.c (usage): Likewise.
+ * src/od.c (usage): Likewise.
+ * src/pr.c (usage): Likewise.
+ * src/sort.c (usage): Likewise.
+ * src/split.c (usage): Likewise.
+ * src/tac.c (usage): Likewise.
+ * src/tr.c (usage): Likewise.
+ * src/unexpand.c (usage): Likewise.
+ * src/uniq.c (usage): Likewise.
+ * src/tail.c (usage): Likewise.
+
+ * src/sys2.h (alloca) [__GNUC__]: Define only if not already defined.
+
+ * src/Makefile.am (sort_LDADD): Reflect spelling change:
+ s/POW_LIBM/POW_LIB/.
+
+2001-11-10 Jim Meyering <meyering@lucent.com>
+
+ * src/nl.c (proc_text): Use `puts' to output a string of spaces,
+ not printf. This avoids a warning from gcc's -Wformat-security.
+
+2001-11-09 Jim Meyering <meyering@lucent.com>
+
+ * configure.ac: Use AC_CONFIG_FILES(...) and call AC_OUTPUT with no
+ arguments.
+
+2001-11-05 Jim Meyering <meyering@lucent.com>
+
+ * src/sort.c (usage): Don't recommend setting LC_COLLATE=C.
+ That can cause problems (now documented in coreutils.texi).
+
+2001-11-04 Jim Meyering <meyering@lucent.com>
+
+ * uniq.c, unexpand.c, tail.c, tac.c, split.c, sort.c, pr.c, paste.c:
+ * od.c, nl.c, head.c, fold.c, expand.c, cut.c, csplit.c (usage):
+ Say that ``Mandatory arguments to long options are mandatory for
+ short options too.''
+
+ * src/ptx.c (usage): Add one-line description.
+
+2001-10-28 Jim Meyering <meyering@lucent.com>
+
+ * tests/sum/sysv: New test for the fix below.
+ * tests/sum/Makefile.am (TESTS): Add sysv.
+
+2001-10-27 Paul Eggert <eggert@twinsun.com>
+
+ * src/sum.c: Include human.h.
+ (ROTATE_RIGHT): Remove; it was slow and the comment was
+ misleading anyway.
+ (bsd_sum_file): Avoid unsigned and long when they're not needed.
+ Compute total input bytes as uintmax_t, not long, so that the
+ code works even with files whose size does not fit in 'long'.
+ (sysv_sum_file): Likewise.
+ (sysv_sum_file): Do not reduce checksum until the end; this is
+ what System V does.
+ Reported by Nick Lawes.
+
+2001-10-27 Jim Meyering <meyering@lucent.com>
+
+ Give an accurate diagnostic when `head --bytes=30M' fails.
+ * src/head.c (string_to_integer): Check explicitly for overflow,
+ and lump everything else together as `invalid'.
+
+2001-10-04 Jim Meyering <meyering@lucent.com>
+
+ Rename --all-repeated argument `precede' to `prepend'.
+ * src/uniq.c (enum delimit_method): s/DM_PRECEDE/DM_PREPEND/
+ and change all uses.
+ (delimit_method_string): s/precede/prepend/
+ * tests/uniq/Test.pm: Adjust tests accordingly.
+ Patches by Padraig Brady.
+
+ * src/uniq.c (usage): Correct typo in description of --all-repeated.
+ Patch by Padraig Brady.
+
+2001-09-30 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0.16.
+
+ tail -F would segfault
+ * src/tail.c (parse_options): Add missing `break;' from last change.
+
+2001-09-28 Jim Meyering <meyering@lucent.com>
+
+ * configure.ac: Tell automake to use the file name `config.hin'
+ rather than the two-`.' config.h.in.
+
+2001-09-26 Jim Meyering <meyering@lucent.com>
+
+ * man/Makefile.am (common_dep): Define it, so we depend on configure.ac.
+
+ * configure.ac: Renamed from configure.in.
+
+2001-09-25 Jim Meyering <meyering@lucent.com>
+
+ * src/Makefile.am (sort_DEPENDENCIES): Remove definition altogether.
+ It adds nothing to the existing: $(PROGRAMS): ../lib/libfetish.a.
+
+2001-09-24 Paul Eggert <eggert@twinsun.com>
+
+ * src/Makefile.am (sort_DEPENDENCIES): Depend only on
+ ../lib/libfetish.a, not on $(LDADD), since the latter may
+ contain `-lintl'. This resembles yesterday's patch for the
+ `$(PROGRAMS)' rule.
+
+2001-09-23 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0.15.
+
+ * src/Makefile.am ($(PROGRAMS)): Depend only on ../lib/libfetish.a,
+ not on $(LDADD), since the former may contain `-lintl'.
+
+ * Makefile.am (SUBDIRS): When using newer gettext (in which
+ intl/libintl.h is created by rules intl/Makefile)
+ `intl' must precede `lib'.
+
+2001-09-22 Jim Meyering <meyering@lucent.com>
+
+ * ABOUT-NLS: Upgrade to gettext 0.10.40
+ * intl: Upgrade entire directory to gettext 0.10.40
+ * po/ChangeLog: New file.
+
+ * Makefile.am (DISTCLEANFILES): Remove definition, since intl/libintl.h
+ is no longer created via configure.
+
+ * tests/od/od-N: New test for the 2001-09-19 fix by Ian Bruce.
+ * tests/od/Makefile.am: New file.
+ * tests/od: New directory.
+ * tests/Makefile.am (SUBDIRS): Add od.
+ * configure.in (AC_OUTPUT): Add tests/od/Makefile.
+
+2001-09-19 Paul Eggert <eggert@twinsun.com>
+
+ * src/od.c (MAX_ADDRESS_LENGTH, pseudo_offset, format_address,
+ n_bytes_to_skip, skip, format_address_none,
+ format_address_std, format_address_paren,
+ format_address_label, write_block, parse_old_offset, dump,
+ dump_strings, main):
+ Use uintmax_t, not off_t, for file addresses, so that we can
+ handle multiple large files even if the sum of their sizes
+ exceeds off_t limits.
+
+ (print_s_char, print_char, print_s_short, print_short,
+ print_int, print_long, print_long_long, print_float,
+ print_double, print_long_double, dump_hexl_mode_trailer,
+ print_named_ascii, print_ascii, decode_one_format):
+ Use size_t, not off_t, for in-memory byte counts.
+
+ (end_offset): New var.
+ (dump, dump_strings): Use it.
+ (main): Set it, but check for overflow while doing so.
+
+ (skip): Report an error if an in-range lseek fails on a
+ regular file, as something's seriously wrong. Check for
+ negative regular file sizes (possible with some broken NFS
+ implementations).
+
+ (parse_old_offset): Now all offsets are valid, so return a
+ success boolean and take a pointer to an offset as an argument.
+ All callers changed.
+
+ (dump_strings): Check for overflow when computing end_offset -
+ string_min.
+
+ (main): Remove OFF_T_MAX checks that are no longer needed.
+ Don't bother assigning through temporary when there's no size
+ limit to check.
+
+2001-09-19 Jim Meyering <meyering@lucent.com>
+
+ * src/od.c (open_next_file): Use SETVBUF, not setbuf.
+ (skip): Revert part of last change: use lseek, not fseek.
+
+ When --read-bytes=N (-N N) is used, disable input buffering in
+ the standard I/O library. Otherwise, od would read more input
+ than requested. This could have caused problems when reading
+ from pipes, character devices, or open file descriptors inherited
+ from a parent process.
+
+ * src/od.c (open_next_file): New function, factored out of...
+ (skip): Adapt to use open_next_file.
+ (read_char): Likewise.
+ (read_block): Likewise.
+ (main): Likewise.
+ (dump): Fix an off-by-one error that could have made od fail to
+ report a read error when reading from a named file (not stdin).
+ (check_and_close): Account for the fact that in_stream may now be NULL.
+ (usage): Correct descriptions of -j and -N options.
+ Patch by Ian Bruce.
+
+2001-09-16 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Require automake-1.5.
+
+ * man/Makefile.am: Revamp this file, as for fileutils.
+
+ * src/md5sum.c (digest_check): On systems for which setmode actually
+ does something, arrange to read the file containing checksum strings
+ in text mode. Based on a patch from Chris Faylor.
+ * src/system.h (SET_MODE): Define.
+
+2001-09-12 Jim Meyering <meyering@lucent.com>
+
+ The command `echo a|./fmt -2147483647' would cause fmt to segfault.
+ * src/fmt.c (fmt_paragraph): Test for sentinal directly, rather than
+ doing arithmetic with it's potentially large (INT_MAX) length.
+ * tests/fmt/basic: Add tests for the above.
+
+ tail: accept new option: -F, equivalent to `--follow=name --retry',
+ for compatibility with FreeBSD and NetBSD versions of tail.
+
+ * src/tail.c (usage): Describe new option.
+ (parse_options): Accept it.
+ Patch by Christian Kurz, via Herbert Xu.
+
+ The command `echo foo|fmt -w N' for N>=32K would cause fmt to segfault.
+
+ * src/fmt.c [struct Word]: Declare members length, space, and
+ line_length to be of type `int', not short.
+ (MAXCOST): Define using TYPE_MAXIMUM.
+ Reported by Herbert Xu.
+
+2001-08-31 Jim Meyering <meyering@lucent.com>
+
+ * src/fmt.c (bool): Remove typedef, now that it's in system.h.
+ (TRUE): Define to `true', not 1.
+ (FALSE): Define to `false', not 0.
+
+2001-08-30 Paul Eggert <eggert@twinsun.com>
+
+ * src/cat.c: Include full-write.h.
+ (full_write): Remove decl; not needed.
+ * src/split.c: Likewise.
+
+ * src/cat.c (simple_cat, cat):
+ Don't assume read and write size fits in int.
+
+2001-08-28 Jim Meyering <meyering@lucent.com>
+
+ * src/fmt.c (main): Correct the diagnostic for invalid argument to -w.
+ (main): Diagnose an invalid, old-style width option.
+
+2001-08-27 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint: Undo last change. Instead, simply remove `N_(',
+ since the `Copyright ...' line should not be translated.
+
+2001-08-26 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (copyright-check): Update to reflect fact that
+ the copyright year is now defined separately.
+
+2001-08-08 Charles Randall <crandall@matchlogic.com>
+
+ * src/sort.c (mergefps): Do not allocate at least sort_size
+ bytes for each merge buffer. Instead, allocate at least
+ sort_size bytes total.
+
+2001-08-25 Jim Meyering <meyering@lucent.com>
+
+ * tests/uniq/Test.pm: Re-enable some commented-out tests.
+
+2001-08-25 Paul Eggert <eggert@twinsun.com>
+
+ * src/uniq.c (main): Fix a typo in the previous patch: missing
+ a bounds check for examples like `uniq a b c'.
+
+ * uniq.c (main): Fix some more incompatibilities with POSIX.2,
+ (e.g. `uniq +3 --' did not work) by invoking getopt_long with
+ leading '-', resembling what was done to 'sort' on 2001-03-20.
+ Recognize an +N option only if it is an integer in range, and
+ (if POSIXLY_CORRECT) only if a file name argument has not been seen;
+ otherwise silently treat it as a file name.
+
+ If the user specifies too many operands, output the first one
+ in the error message, as a diagnostic aid.
+
+2001-08-24 Paul Eggert <eggert@twinsun.com>
+
+ * src/uniq.c (main): Don't report an error when given the
+ valid options `+3 -d'.
+
+2001-08-24 Paul Eggert <eggert@twinsun.com>
+
+ * src/uniq.c (different): Don't assume that lengths can fit
+ into size_t. Tune code for the common case where the line
+ lengths differ: we avoid comparing them entirely in that case.
+
+2001-08-25 Jim Meyering <meyering@lucent.com>
+
+ * tests/uniq/Test.pm: Add tests for -s 0 and -w 0.
+
+2001-08-24 Paul Eggert <eggert@twinsun.com>
+
+ Remove arbitrary restrictions on sizes, fixing a bug reported
+ by Geoff Whale.
+
+ * src/uniq.c (skip_fields, skip_chars, check_chars): Now size_t,
+ not int.
+ (size_opt): New function. Do not arbitrarily reject size zero.
+ Change the wording of the error message slightly, for convenience.
+ (find_field): Use size_t, not int, to compute sizes.
+ (different, main): check_chars==0 is no longer a special case, as
+ it defaults to SIZE_MAX.
+ (main): Check for overflow with args like -234234234234234.
+ Use 'size_opt' to convert optional arguments to sizes.
+
+2001-08-25 Jim Meyering <meyering@lucent.com>
+
+ * tests/uniq/Test.pm: Add new test, #54, for the just-fixed bug.
+
+2001-08-24 Paul Eggert <eggert@twinsun.com>
+
+ * src/uniq.c (find_field): Don't count trailing newline to be
+ part of the field. This disagrees with POSIX.2, but it's
+ gotta be a bug in the standard. An interpretations request
+ has been submitted to PASC.
+ Reported by Geoff Whale.
+
+2001-08-18 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint: Merge in changes from autoconf.
+
+ * Makefile.maint ($(v_etc_file)): Define.
+ (copyright-check): Use the new variable.
+ (my-distcheck): Depend on local-check so those checks are once
+ again run by `make distcheck'.
+
+ * src/head.c (head_bytes): Read no more than the specified
+ number of bytes. Patch by Ian Bruce.
+
+ * tests/misc/head-c: New test for the above.
+ * tests/misc/Makefile.am: New file.
+ * tests/misc: New directory.
+ * tests/Makefile.am (SUBDIRS): Add misc.
+ * configure.in (AC_OUTPUT): Add tests/misc/Makefile.
+
+2001-08-14 Jim Meyering <meyering@lucent.com>
+
+ * src/Makefile.am (INCLUDES): Add -I../lib so sys2.h can include
+ the new, generated file, unlocked-io.h.
+
+2001-08-13 Jim Meyering <meyering@lucent.com>
+
+ * src/cat.c (AUTHORS): Mark string for translation, since it
+ contains the English word `and'.
+ * src/comm.c: Likewise
+ * src/csplit.c: Likewise
+ * src/cut.c: Likewise
+ * src/md5sum.c: Likewise
+ * src/nl.c: Likewise
+ * src/paste.c: Likewise
+ * src/pr.c: Likewise
+ * src/sort.c: Likewise
+ * src/split.c: Likewise
+ * src/sum.c: Likewise
+ * src/tac.c: Likewise
+ * src/uniq.c: Likewise
+ * src/wc.c: Likewise
+
+2001-08-12 Jim Meyering <meyering@lucent.com>
+
+ * tests/mk-script ($program_name): Define.
+ (main): Use $program_name, rather than long-inaccurate `build-script'.
+ (main): Iterate over the sorted keys (rather than `while...each...'),
+ so this script produces the same output regardless of which version
+ of perl (e.g., perl5.6) is used.
+
+2001-08-04 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.am (EXTRA_DIST): Add Makefile.cfg.
+
+ * man/Makefile.am (EXTRA_DIST): Remove duplicate definition.
+
+2001-07-08 Jim Meyering <meyering@lucent.com>
+
+ * src/tail.c (usage): Reformat so help2man generates a properly
+ indented man page. Patch by Herbert Xu.
+
+2001-07-04 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.cfg: New file with package-specific definitions.
+ * Makefile.am (EXTRA_DIST): Add Makefile.cfg.
+
+2001-07-01 Jim Meyering <meyering@lucent.com>
+
+ * src/sort.c (usage): Suggest setting LC_COLLATE=C, rather
+ than LC_ALL=C.
+
+2001-06-10 Jim Meyering <meyering@lucent.com>
+
+ * tests/sort/Test.pm: Add a test based on a report from Herbert Xu.
+
+2001-05-20 Jim Meyering <meyering@lucent.com>
+
+ * src/uniq.c: Rename new option values: s/all/precede/ and
+ s/minimum/separate/.
+ * tests/uniq/Test.pm: Reflect the above renamings.
+
+2001-05-12 Bruno Haible <haible@clisp.cons.org>
+
+ * src/tail.c (parse_obsolescent_option): Accept a b suffix.
+
+2001-05-19 Jim Meyering <meyering@lucent.com>
+
+ msgmerge-0.10.37 complains about some `invalid multibyte sequences.'
+ * po/el.po: Remove the offending entries.
+ * po/ko.po: Likewise.
+ * po/zh.po: Likewise.
+
+2001-05-19 Jim Meyering <meyering@lucent.com>
+
+ Support new modes for uniq's --all-repeated option.
+ The default behavior is unchanged.
+
+ * src/uniq.c: Include argmatch.h.
+ (usage): Update.
+ (check_file): Implement it.
+ (main): Handle new, optional arguments.
+ * tests/uniq/Test.pm: New tests for the above.
+ Patch by Padraig Brady.
+
+2001-05-12 Bruno Haible <haible@clisp.cons.org>
+
+ * src/tail.c (parse_obsolescent_option): Use t_count_lines, not
+ count_lines, in error message.
+
+2001-05-05 Jim Meyering <meyering@lucent.com>
+
+ * src/comm.c (usage): Correct description of -3.
+ Reported by Soeren Sonnenburg.
+
+2001-04-22 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0.14.
+
+ * configure: Regenerate using a patched copy of autoconf-2.49e to
+ work around a bug in its test for a working memcmp function.
+
+2001-03-28 Paul Eggert <eggert@twinsun.com>
+
+ * src/cksum.c: Fix bugs when computing length of large files.
+ Add overflow and write error checks. Use uint_fast32_t, not
+ unsigned long, to do checksum calculation, as C99 says
+ uint_fast32_t should be no slower and might be faster.
+
+ Include <stdio.h> and "system.h" even if CRCTAB is defined,
+ so that the code will compile if CRCTAB is defined.
+ Include "human.h" if CRCTAB is not defined.
+ (uint_fast32_t): Define if it appears that stdint.h didn't.
+ (BIT, remainder, main, crctab): Use uint_fast32_t, not unsigned long,
+ for checksums.
+ (fill_r, remainder, main): Use ANSI prototypes.
+ (fill_r, remainder, main): Omit duplicate code.
+ (main): Use uintmax_t, not unsigned long, for file lengths.
+ Use size_t, not long, for result of fread.
+ Check for overflow when computing file lengths.
+ Check for write error immediately after printing a line, so that
+ we don't write to stdout indefinitely after an error.
+
+2001-04-14 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (default_sort_size): Leave a 1/16 margin for RSS.
+ Suggestion from Solar Designer.
+
+2001-04-14 Jim Meyering <meyering@lucent.com>
+
+ * src/wc.c (usage): Tweak --help output: s/line,/newline,/
+
+2001-04-13 Jim Meyering <meyering@lucent.com>
+
+ * src/sort.c (main): Add a comment justifying the use of
+ `multi-character' rather than `multibyte' in a diagnostic.
+ From Paul Eggert.
+
+2001-04-12 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (RLIMIT_AS): Do not define; just use conditional
+ code, since RLIMIT_RSS is similar (and is not standardized).
+ (default_sort_size): Don't allocate more than the RSS limit,
+ if this host has such a limit.
+
+2001-03-20 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS, doc/textutils.texi: sort now accepts long options and
+ checks POSIX option syntax.
+
+ * doc/textutils.texi: Document --, -, sort long options, and
+ sort -o after files.
+
+ * src/sort.c: Include <getopt.h>.
+ (usage, main): Add support for long options, and check option
+ syntax as POSIX requires, though (as usual for GNU apps)
+ options can follow file names unless POSIXLY_CORRECT is set.
+ Many diagnostic revamped.
+ (long_options): New constant.
+ (badfieldspec): New arg MSGID. Mark as noreturn.
+ (parse_field_count): New arg MSGID; if null, just return null on error.
+ (new_key): Renamed from key_init. All callers changed. Now allocates
+ the new key.
+
+2001-03-18 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0.13.
+
+ * tests/Fetish.pm: If the $DJDIR envvar is defined, set SHELL
+ to $DJDIR/bin/bash.exe. Patch from Richard Dawe, based on a
+ suggestion from Eli Zaretskii.
+
+2001-03-17 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c, src/tail.c, src/uniq.c (usage):
+ Warn that the +N form will be withdrawn.
+ * doc/textutils.texi: Likewise.
+
+2001-03-08 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS, doc/textutils.texi: Document pr changes.
+
+ * src/pr.c: Include mbswidth.h.
+ (standard_header, header, test_suite): Remove.
+ (date_format, date_text, file_text, header_width_available): New vars.
+ (long_options, main, init_header, usage):
+ Add new -D or --date-format option.
+ (CHARS_FOR_DATE_AND_PAGE, T_BUF_FMT, T_BUF_SIZE, NO_DATE): Remove.
+ (init_header): Allow arbitrary width for date format. Change
+ "Page %5d" to "Page %d", since the code no longer assumes fixed width.
+ Do not assume that localtime succeeds.
+ (init_header, print_header, usage): Do not truncate headers.
+ (init_header, print_header): Defer width calculations until
+ page is printed, since "Page 100000" is wider than "Page 1".
+ Count columns, not bytes, in page headers.
+ Custom headers take up only the center, not the whole header.
+ (print_header): Use printf rather than fprintf(stdout).
+
+ * po/Makefile.in.in (install-data-yes): Install LC_TIME locale
+ for all packages, not just for fileutils.
+ (uninstall): Remove LC_TIME locale too.
+
+ * src/sys2.h (INT_STRLEN_BOUND): New macro.
+
+ * tests/pr/0F, tests/pr/0FF, tests/pr/2-S_f-t_notab,
+ tests/pr/2-Sf-t_notab, tests/pr/2f-t_notab,
+ tests/pr/2s_f-t_notab, tests/pr/2s_w60f-t_nota,
+ tests/pr/2sf-t_notab, tests/pr/2sw60f-t_notab,
+ tests/pr/2w60f-t_notab, tests/pr/3-0F, tests/pr/3-5l17f-t,
+ tests/pr/3-FF, tests/pr/3a2l17-FF, tests/pr/3a3f-0F,
+ tests/pr/3a3l15-t, tests/pr/3a3l8f-t, tests/pr/3b2l17-FF,
+ tests/pr/3b3f-0F, tests/pr/3b3f-0FF, tests/pr/3b3f-FF,
+ tests/pr/3b3l15-t, tests/pr/3b3l8f-t, tests/pr/3f-0F,
+ tests/pr/3f-FF, tests/pr/3l17f-t, tests/pr/3l24-t,
+ tests/pr/3ml17f-t, tests/pr/3ml24-FF, tests/pr/3ml24-t,
+ tests/pr/3ml24-t-FF, tests/pr/4-7l24-FF, tests/pr/4l24-FF,
+ tests/pr/a2l15-FF, tests/pr/a2l17-FF, tests/pr/a3-0F,
+ tests/pr/a3f-0F, tests/pr/a3f-0FF, tests/pr/a3f-FF,
+ tests/pr/a3l15-t, tests/pr/a3l17f-lm, tests/pr/a3l8f-t,
+ tests/pr/b2l15-FF, tests/pr/b2l17-FF, tests/pr/b3-0F,
+ tests/pr/b3f-0F, tests/pr/b3f-0FF, tests/pr/b3f-FF,
+ tests/pr/b3l15-t, tests/pr/b3l17f-lm, tests/pr/b3l8f-t,
+ tests/pr/FF, tests/pr/Ja3l17f-lm, tests/pr/Jb3l17f-lm,
+ tests/pr/Jml17f-lm-lo, tests/pr/l17f-t, tests/pr/l24-FF,
+ tests/pr/l24-t, tests/pr/ml17f-0F, tests/pr/ml17f-lm-lo,
+ tests/pr/ml17f-t, tests/pr/ml17f-t-0F, tests/pr/ml20-FF-t,
+ tests/pr/ml24-FF, tests/pr/ml24-t, tests/pr/ml24-t-FF,
+ tests/pr/n+2-5l17f-0FF, tests/pr/n+2l17f-0FF,
+ tests/pr/n+2l17f-bl, tests/pr/n+3-7l24-FF,
+ tests/pr/n+3l17f-0FF, tests/pr/n+3l17f-bl,
+ tests/pr/n+3ml13f-bl-FF, tests/pr/n+3ml17f-bl-tn,
+ tests/pr/n+3ml17f-tn-bl, tests/pr/n+4-8a2l17-FF,
+ tests/pr/n+4b2l10f-0FF, tests/pr/n+5-8b3l10f-FF,
+ tests/pr/n+5a3l6f-0FF, tests/pr/n+6a2l17-FF,
+ tests/pr/n+6b3l6f-FF, tests/pr/n+7l24-FF,
+ tests/pr/n+8l20-FF, tests/pr/nJml17f-lmlmlo,
+ tests/pr/nJml17f-lmlolm, tests/pr/nl17f-bl,
+ tests/pr/nN1+3l17f-bl, tests/pr/nN15l17f-bl,
+ tests/pr/nSml13-bl-FF, tests/pr/nSml13-t-t-FF,
+ tests/pr/nSml13-t-tFFFF, tests/pr/nSml17-bl-FF,
+ tests/pr/nSml17-t-t-FF, tests/pr/nSml17-t-tFFFF,
+ tests/pr/o3a3l17f-tn, tests/pr/o3a3Sl17f-tn,
+ tests/pr/o3a3Snl17f-tn, tests/pr/o3b3l17f-tn,
+ tests/pr/o3b3Sl17f-tn, tests/pr/o3b3Snl17f-tn,
+ tests/pr/o3Jml17f-lm-lo, tests/pr/o3ml17f-bl-tn,
+ tests/pr/o3mSl17f-bl-tn, tests/pr/o3mSnl17fbltn,
+ tests/pr/Test.pm, tests/pr/W-72l17f-ll, tests/pr/W20l17f-ll,
+ tests/pr/W26l17f-ll, tests/pr/W27l17f-ll,
+ tests/pr/W28l17f-ll, tests/pr/W35a3l17f-lm,
+ tests/pr/W35b3l17f-lm, tests/pr/W35Ja3l17f-lm,
+ tests/pr/W35Jb3l17f-lm, tests/pr/W35Jml17f-lmlo,
+ tests/pr/W35ml17f-lm-lo, tests/pr/W72Jl17f-ll,
+ tests/pr/w72l17f-ll:
+ Adjust to minor spacing changes in pr headers.
+
+2001-03-11 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (die): New message arg, to describe failures
+ better. All callers changed.
+
+2001-03-11 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c: Decrease buffer size when only merging or checking.
+ (sort_size): Now the user-specified sort size.
+ (MIN_MERGE_BUFFER_SIZE): New macro.
+ (MIN_SORT_SIZE): Use it.
+ (merge_buffer_size): New variable.
+ (fillbuf): Increase merge_buffer_size if a longer line is encountered.
+ (checkfp, mergefps): Do not allocate a buffer smaller than
+ merge_buffer_size.
+ (sort): Use the default_sort_size if sort_size is zero.
+ (main): Do not set sort_size to default_sort_size.
+
+2001-03-06 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (sort): If all the input files are empty, create
+ an empty output file.
+ * tests/sort/Test.pm: Test for this.
+
+2001-03-13 Jim Meyering <meyering@lucent.com>
+
+ * src/sort.c (merge): Move declarations of local variables into
+ the inner scope where they're used.
+ (sort): Likewise.
+
+2001-03-06 Paul Eggert <eggert@sic.twinsun.com>
+
+ Avoid the need for a copy of the input file when the input and
+ output overlap, e.g. 'sort F -o F'. With -m, though, a copy
+ is still needed sometimes.
+
+ * doc/textutils.texi: 'sort F -o F' no longer needs to copy F.
+
+ * src/sort.c: Do not include closeout.h.
+ (xfopen): Use stdout if *how != 'r'.
+ (mergefps): Remove FPS arg.
+ Open all input files, and close all files when done.
+ If OFP is null, open the output file (but after opening input files).
+ All callers changed.
+ (first_same_file): New function.
+ (sort, merge): Remove arg OFP; we now open the output file as needed.
+ All callers changed.
+ (merge): New arg MAX_MERGE. All callers changed.
+ (sort): For "sort F -o F", close the input before opening the output.
+ (main): Do not use close_stdout; 'sort' and 'merge' now close stdout.
+ (This also fixes a close-stdout-twice bug.)
+ Remove test for overlapping input and output files, as 'sort' no longer
+ needs to worry about overlap, and 'merge' checks for overlap itself.
+ Use first_same_file to inform 'merge' about how much to merge at
+ the top level, to avoid overlap.
+
+2001-03-12 Jim Meyering <meyering@lucent.com>
+
+ `fmt --prefix=S' would not work properly for any string S containing
+ a byte with the high bit set.
+ * src/fmt.c (prefix): Declare to be of type unsigned char, not `char'.
+ (get_prefix): Likewise for local, `p'.
+ Reported by François Pinard.
+
+ Add a test for the above-fixed problem.
+ * tests/fmt: New directory/files.
+ * configure.in (AC_OUTPUT): Add tests/fmt/Makefile.
+ * tests/Makefile.am (SUBDIRS): Add fmt.
+
+2001-03-05 Andreas Schwab <schwab@suse.de>
+
+ * src/tac.c (save_stdin): Use mkstemp to create temporary file.
+
+2001-03-09 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (my_distdir): Define new variable, and use this
+ in place of most old uses of $(distdir).
+
+ * tests/help-version: Ensure that /dev/full is a character device
+ (using test -c) as well as being writable, before trying to write to it.
+ Otherwise, the test could mistakenly append a newline to an existing,
+ regular, writable, /dev/full file.
+ Suggested by Ulrich Drepper.
+
+2001-03-08 Jim Meyering <meyering@lucent.com>
+
+ * tests/sha1sum/sample-vec: Insert the `--text' argument for each test.
+ Reported by Matthew Smith.
+
+2001-03-04 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint (my_distdir): Define.
+ Use it in place of $(distdir) almost everywhere.
+
+ * Version 2.0.12.
+
+ * Makefile.maint (alpha): Use $(PACKAGE)-$(VERSION), not $(distdir),
+ since the latter now has a `$(top_distdir)/' prefix.
+
+2001-03-01 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (die): New function.
+ (create_temp_file, xfopen, xfclose, write_bytes, sort_buffer_size,
+ fillbuf, main): Use it to regularize error messages. The only change
+ in behavior is that write_bytes and the final close used to say "write
+ error" but now give just the output file name, which should be enough.
+
+2001-03-01 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (xfclose): Add FILE arg, and report the file name
+ on error. All callers changed.
+
+2001-03-01 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (main): When fclose (stdin) fails, do not mention
+ the output file in the error message; mention "-" instead.
+
+2001-02-28 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (xfopen): Set have_read_stdin to 1 only if file is "-".
+ Use fopen_safer, not fopen, to avoid subtle bugs when fopen returns
+ stdin, stdout, or stderr.
+ (xfclose): stdout is no longer a special case.
+ (main): Close output file, don't just flush it; there might be
+ an error on the close.
+
+2001-02-27 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (initbuf): If the desired size cannot be
+ allocated, repeatedly halve it until allocation succeeds.
+ Reported by Solar Designer.
+
+2001-02-26 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (parse_field_count): Comment fix.
+
+2001-02-25 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c: Tune allocation and comparison of nodes
+ representing temp files. This improved CPU performance of
+ 'sort -S 1 *.[ch]' by 17% on my host.
+
+ (struct tempnode): name member now uses struct hack.
+ (temphead): Now a pointer, not a structure. All uses changed.
+ (create_temp_file): Allocate node using struct hack.
+ (zaptemp): Free node using struct hack. Use pointer comparison, not
+ string comparison.
+
+2001-02-25 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (eolchar, trim_trailing_blanks): Now static.
+
+2001-02-25 Paul Eggert <eggert@twinsun.com>
+
+ 'sort' race condition fixes.
+
+ Defend against a DoS attack where someone else creates a
+ temporary file with the same name as ours. Use mkstemp to do
+ this, supplying our own mkstemp if the system doesn't have one.
+
+ Also, fix a race condition during cleanup on hosts without
+ sigaction.
+
+ * src/sort.c (NAME_MAX_IN_DIR): Remove.
+ (sigprocmask, sigset_t): New macros, defined only on older hosts.
+ (caught_signals): New var.
+ (xtmpfopen, tempname): Removed.
+ (create_temp_file): New function, combining the functions of the old
+ xtmpfopen and tempname. All callers changed.
+ Use mkstemp to create the file.
+ (sighandler): On hosts without sigaction, ignore signals while
+ cleaning up, instead of letting them interrupt cleanup.
+ (main): Initialize caught_signals. On hosts with sigaction, block all
+ caught signals while handling one. Remove duplicate code.
+
+2001-02-22 Jim Meyering <meyering@lucent.com>
+
+ * src/sort.c (keycompare): Move declarations of locals, lena and lenb,
+ into the inner scope where they are used.
+
+2001-02-19 Jim Meyering <meyering@lucent.com>
+
+ * src/sort.c (AUTHORS): Add Paul Eggert.
+
+ * src/wc.c (wc): Rename innermost `buf' to avoid shadowing warning.
+ (wc): Rename local `wc' to avoid shadowing function name.
+
+2001-02-18 Paul Eggert <eggert@twinsun.com>
+
+ Fix a race condition: freed storage accessed during a signal handler.
+
+ * src/sort.c (struct tempnode.next): Now volatile.
+ (zaptemp): Free the file name after removing it from the temp list,
+ not before, because a signal can arrive between the two actions
+ and cleanup () traverses the list.
+
+2001-02-18 Paul Eggert <eggert@twinsun.com>
+
+ Check for input size, and do not overallocate memory.
+ Also check for memory quotas.
+
+ Revamp storage management so that line tables and character data are
+ taken from the same buffer. Line tables are now in reverse order,
+ since they grow down while the character data grow up.
+
+ * src/sort.c:
+ (<sys/resource.h>): Include if HAVE_SYS_RESOURCE_H.
+ (struct rlimit, getrlimit): Define a replacement if RLIMIT_DATA
+ is not defined.
+ (RLIMIT_AS): Define to RLIMIT_DATA if not defined.
+ (struct lines): Remove.
+ (struct buffer): New members nlines, line_bytes, eof.
+ Remove member newline_free; no longer needed, since the code no longer
+ runs out of line table space.
+ (SORTALLOC_MIN, SORTALLOC_DEFAULT_MIN): Remove.
+ (sort_size): Renamed from sortalloc; now applies to the sum of the
+ character data and the line table, not just the character data.
+ (MIN_SORT_SIZE, INPUT_FILE_SIZE_GUESS): New macros.
+ (linelength): remove.
+ (specify_sort_size): Don't worry about the distinction between the
+ character data and the line table; that is now the caller's
+ responsibility.
+ (default_sort_size): Return the value, instead of being executed for
+ side effect. Return half of available memory, or 1/16 of total memory,
+ whichever is greater; except do not exceed 1/2 of quota.
+ (sort_buffer_size): New function.
+ (initbuf): New arg LINE_BYTES. Ensure that the line array is properly
+ aligned. Initialize the new set of struct buffer members.
+ (buffer_linelim): New function.
+ (fillbuf): Return int, not size_t, since the callers merely care
+ whether the result is nonzero. New arg FILE so that error messages
+ can report the file name. Keep track of eof. Initialize the line
+ table too, taking its memory from the input buffer's memory; this
+ subsumes the old findlines function and removes the need for worrying
+ about running out of line table entries.
+ (checkfp, mergefps, sortlines, merge, sort): Adjust to the new storage
+ management regime, in particular the fact that line tables are now
+ filled in by fillbuf and are in reverse order.
+ (checkfp): Now takes char *, not const char *, since subroutines
+ require that now. Rewrite to avoid lint and duplicate code.
+ If line length alloc calculation overflows,
+ simply allocate enough memory to hold the line.
+ (mergefps): New arg FILES, used for buffer size calculation and error
+ messages. Rewrite to avoid lint. Do not loop if savealloc*2
+ overflows.
+ (mergefps, merge): Zap temporary files eagerly rather than lazily;
+ this is needed because we now pass FILES to mergefps.
+ (sortlines): Args now point at end of arrays, not at beginnings.
+ (sort): Do not allocate temporary line array for sortlines;
+ instead, take the space from the same buffer.
+ (main): Adjust to sort_size and default_sort_size changes.
+
+2001-02-18 Jim Meyering <meyering@lucent.com>
+
+ Rename test input files to avoid conflicts on case-insensitive
+ file systems.
+ * tests/pr/2-Sf-t_notab: Rename from 2Sf-t_notab.
+ * tests/pr/2-S_f-t_notab: Rename from 2S_f-t_notab.
+ * tests/pr/W-72l17f-ll: Rename from W72l17f-ll.
+ * tests/pr/Test.pm: Update file names to reflect renamings.
+ Reported by Matthew Smith.
+
+2001-01-20 Jim Meyering <meyering@lucent.com>
+
+ * configure.in: Remove jm_CHECK_ALL_TYPES.
+ Now it's invoked by jm_MACROS.
+
+2001-01-17 Jim Meyering <meyering@lucent.com>
+
+ * src/cksum.c (main): Use PACKAGE, not GNU_PACKAGE.
+ * src/tsort.c (main): Likewise.
+ * src/sort.c (main): Likewise.
+ (usage): Convert each TAB in --help output to a sequence of 8 spaces.
+
+2001-01-07 Jim Meyering <meyering@lucent.com>
+
+ * src/tail.c (usage): Split a string that was longer than 2048 bytes.
+
+2001-01-03 Jim Meyering <meyering@lucent.com>
+
+ * src/sort.c (main): Remove embedded \n from diagnostic.
+
+2001-01-02 Jim Meyering <meyering@lucent.com>
+
+ * src/od.c (ulonglong_t): Define place-holder type to avoid some #if
+ directives.
+ (LONGEST_INTEGRAL_TYPE): Remove definition.
+ (MAX_INTEGRAL_TYPE_SIZE): Use ulonglong_t instead of
+ LONGEST_INTEGRAL_TYPE.
+ (print_long_long): Compile this function even on systems without
+ long long support.
+ (decode_one_format): Remove #if directive.
+
+ * src/od.c (decode_one_format): Guard use of print_long_long with
+ `#if HAVE_UNSIGNED_LONG_LONG'. From Darren Salt.
+ Change all `#ifdef HAVE_UNSIGNED_LONG_LONG' to use `#if' instead.
+
+2000-12-23 Jim Meyering <meyering@lucent.com>
+
+ * src/sys2.h [HAVE_INTTYPES_H]: Include <inttypes.h>.
+
+2000-12-19 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0.11.
+
+2000-12-18 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS, doc/textutils.texi: New "sort" option -S SIZE.
+
+ * src/sys2.h (UINTMAX_MAX): New macro, taken from C99.
+
+ * src/sort.c: Include physmem.h.
+ (SORTALLOC, mergealloc, LINEALLOC): Remove.
+ (sortalloc): Default to zero at program startup.
+ (SORTALLOC_MIN, SORTALLOC_DEFAULT_MIN): New macros.
+ (usage, main): Add support for new -S SIZE option.
+ (specify_sort_size, default_sort_size): New functions.
+ (initlines): Do not let alloc exceed limit.
+ (findlines): Likewise.
+ (checkfp, mergefps, sort): Use sortalloc to size everything
+ else, instead of relying on precomputed sizes.
+
+2000-12-17 Jim Meyering <meyering@lucent.com>
+
+ * doc/texinfo.tex: Update from master repository.
+ * config.sub: Likewise.
+ * config.guess: Likewise.
+
+2000-12-11 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0.10.
+
+2000-12-07 Jim Meyering <meyering@lucent.com>
+
+ * src/od.c (address_base): Declare to be static.
+
+2000-12-06 Paul Eggert <eggert@twinsun.com>
+
+ * src/od.c (address_base, address_pad_len): New var.
+ (output_address_fmt_string, address_fmt_buffer, address_pad): Remove.
+ (flag_pseudo_start): Now int, not long int.
+ (pseudo_offset): Now off_t, not long int.
+ (n_specs, n_specs_allocated): Now size_t, not unsigned int.
+ (format_address, format_address_none, format_address_std,
+ format_address_label): Now accepts an extra char argument (an extra
+ char to print if nonzero), and prints instead of returning a string.
+ All callers changed.
+ (bytes_per_block): Now size_t, not int.
+ (format_address_none): Do not even print the extra char argument.
+ This simplifies the callers.
+ (format_address_std, format_address_label): Print off_t ourself
+ instead of trying to use autoconfigured format. This is faster and
+ more portable.
+ (format_address_paren): New function.
+ (dump): Remove unnecessary cast.
+ (expand_address_fmt): Remove.
+ (main): Use size_t, off_t, etc. instead of builtin types where this is
+ advisable. Adjust to above changes. Remove unnecessary cast.
+
+2000-12-03 Jim Meyering <meyering@lucent.com>
+
+ * src/tail.c (tail_file): Initialize ignore, dev, and ino members,
+ when tailing forever and the open failed. Otherwise, we could get
+ uninitialized memory references of those fields in recheck.
+ * tests/tail-2/Makefile.am (TESTS): Add assert-2.
+ * tests/tail-2/assert-2: New file.
+
+ * Version 2.0.9.
+
+ Make od print valid addresses for offsets of 2^32 and larger, and
+ allow byte offset (-j) and byte count (-N) to be 2^32 and larger.
+
+ * src/od.c (MAX_ADDRESS_LENGTH): Don't hard-code as a literal.
+ Rather, define in terms of the type, off_t.
+ (string_min): Declare to be of type size_t.
+ (flag_dump_strings): Declare to be of type int.
+ (print_s_char): Declare the n_bytes parameter and the local, `i',
+ to be of type off_t.
+ (print_char): Likewise.
+ (print_s_short): Likewise.
+ (print_short): Likewise.
+ (print_int): Likewise.
+ (print_long): Likewise.
+ (print_long_long): Likewise.
+ (print_float): Likewise.
+ (print_double): Likewise.
+ (print_long_double): Likewise.
+ (dump_hexl_mode_trailer): Likewise.
+ (print_named_ascii): Likewise.
+ (print_ascii): Likewise.
+ (write_block): Likewise.
+ (print_ascii): Declare local, `print_function' with a prototype.
+ Change a few `>' comparisons to the equivalent `<' form.
+ (parse_options): Declare `tmp' to be of type uintmax_t.
+ Use xstrtoumax, not xstrtoul.
+ Fail if the specified offset if larger than OFF_T_MAX.
+ (dump_strings): Declare local `i' to be of type size_t.
+ Remove the now-unnecessary cast-to-off_t.
+ (main) [IF_LINT]: Initialize desired_width to avoid a warning.
+ Declare `tmp' to be of type uintmax_t.
+ Use xstrtoumax, not xstrtoul.
+ Fail if minimum string length is larger than SIZE_MAX.
+ Fail if specified width is larger than ULONG_MAX.
+
+ * src/od.c (format_address): Use off_t, not long unsigned_int as the
+ parameter type.
+ (format_address_none): Likewise. Mark parameter as unused.
+ (format_address_std): Likewise.
+ (format_address_label): Likewise.
+ (print_ascii): Mark format string parameter as unused.
+ (write_block): Use off_t, not long unsigned_int as offset type.
+ (expand_address_fmt): New function.
+ (main): Use it to expand each address format string template.
+ Reported by Mark Nudelman, via Andreas Jaeger.
+
+ * src/sys2.h (OFF_T_MIN): Define here instead.
+ (OFF_T_MAX): Likewise.
+ (CHAR_BIT): Define.
+
+ * src/tail.c (parse_options): Use xstrtoumax to parse the byte and line
+ offset. Give a better diagnostic when the requested offset is still
+ representable but larger than OFF_T_MAX.
+ (OFF_T_MIN): Remove definition.
+ (OFF_T_MAX): Likewise.
+
+2000-12-02 Jim Meyering <meyering@lucent.com>
+
+ * src/sort.c (checkfp): Rename local `buf' to avoid shadowing previous
+ declaration.
+
+ * src/sort.c (NONZERO): Define and use it to make the code a tiny
+ bit more readable.
+
+ * doc/textutils.texi (sort invocation): Clarify how -t works
+ when a sort key specifies a range of fields. From Karl O. Pinc.
+
+2000-11-26 Paul Eggert <eggert@twinsun.com>
+
+ * src/od.c (skip): Use lseek instead of worrying about fseeko or fseek.
+ This should be portable, as we seek before doing any I/O.
+ (fseeko): Remove; no longer used.
+
+2000-11-30 Jim Meyering <meyering@lucent.com>
+
+ * src/sort.c: s/SIZE_T_MAX/SIZE_MAX/.
+
+2000-11-30 Paul Eggert <eggert@twinsun.com>
+
+ * src/sys2.h: Include <stdint.h> if HAVE_STDINT_H.
+ (SIZE_MAX): Renamed from SIZE_T_MAX, as C99 uses SIZE_MAX.
+ All uses changed.
+
+2000-11-30 Jim Meyering <meyering@lucent.com>
+
+ * src/sort.c: SIZE_MAX is not defined, so s/SIZE_MAX/SIZE_T_MAX/, and...
+ * src/sys2.h (SIZE_T_MAX): ... define.
+
+2000-11-29 Paul Eggert <eggert@twinsun.com>
+
+ Port GNU "sort" to hosts where sizes don't fit in "int",
+ e.g. 64-bit Solaris (sparc).
+
+ * src/sort.c ("human.h", "xstrtol.h"): Include.
+ (struct line): length member is now size_t, not int.
+ (struct lines): Likewise for used, alloc, limit members.
+ (struct buffer): Likewise for used, alloc, left, newline_free members.
+ (struct keyfield): Likewise for sword, schar, eword, echar members.
+ (sortalloc, mergealloc, linelength): Now size_t, not int.
+
+ (initbuf, fillbuf, initlines, begfield, limfield, findlines,
+ numcompare, getmonth, keycompare, compare, checkfp, mergefps,
+ sortlines, sort): Accept, return, and use size_t for sizes, not int.
+
+ (fillbuf, initlines, findlines, checkfp, sort): Check for overflow
+ when computing buffer sizes.
+
+ (begfield, limfield): Do not index past end of array.
+
+ (checkfp): Return a boolean, not a line number, as the line
+ number may not fit in int. All callers changed. Use
+ uintmax_t for line numbers, not int.
+
+ (sort): Don't allocate tmp until we need it (and know the right size).
+
+ (parse_field_count): New function.
+
+ (main): Use it to check for overflow in field counts.
+ "outfile" is now a pointer to const.
+
+2000-11-27 Jim Meyering <meyering@lucent.com>
+
+ * src/checksum.h: Don't include system.h here.
+ * src/md5.c: Include config.h, stdio.h, sys/types.h. and system.h here
+ instead.
+ * src/sha1sum.c: Likewise.
+
+2000-11-18 Paul Eggert <eggert@twinsun.com>
+
+ * src/pr.c (main): Do not assume EOF == -1.
+ Handle the case correctly when digits options immediately precede a
+ non-option.
+
+2000-11-18 Jim Meyering <meyering@lucent.com>
+
+ * doc/textutils.texi: Change GNU to @sc{gnu} in many places.
+ Update to use the Free Documentation Licence.
+
+ * configure, config.h.in, Makefile.in, etc.: Regenerate using the
+ very latest version (in CVS) of autoconf.
+
+2000-11-17 Jim Meyering <meyering@lucent.com>
+
+ * GNUmakefile (.NOTPARALLEL): New target. Prevent unwanted parallelism.
+ Suggestion from Ulrich Drepper.
+
+2000-11-16 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * tsort.c: Include sys/types.h before system.h.
+
+2000-11-16 Jim Meyering <meyering@lucent.com>
+
+ * src/join.c: Declare global `tab' to be of type *unsigned* char,
+ so join works with 8-bit delimiter characters.
+ Reported by Antonio Rendas.
+ * tests/join/Test.pm (8-bit-t): New test for the above fix.
+
+2000-11-13 Paul Eggert <eggert@twinsun.com>
+
+ * src/sys2.h (ST_TIME_CMP_NS): Fix typo: ST_MTIM_NSEC should
+ be tested with #ifdef, not with #if.
+
+2000-11-11 Jim Meyering <meyering@lucent.com>
+
+ * doc/textutils.texi: More minor rewording and grammar correction.
+ From Brian Youmans.
+
+2000-11-06 Paul Eggert <eggert@twinsun.com>
+
+ * src/od.c (skip): st_size is not defined for directories.
+
+2000-11-03 Jim Meyering <meyering@lucent.com>
+
+ * tests/sha1sum/sample-vec: New file, with tests derived from
+ http://csrc.nist.gov/cryptval/shs/sha1-vectors.zip
+ * tests/sha1sum/Makefile.am (TESTS): Add sample-vec.
+
+2000-10-30 Jim Meyering <meyering@lucent.com>
+
+ * configure, config.h.in, Makefile.in, etc.: Regenerate using the
+ very latest version (in CVS) of autoconf.
+
+ * src/wc.c: Include "system.h" after wctype.h (not before)
+ to avoid a compilation error on Solaris 5.5.1 systems.
+ Reported by Vin Shelton.
+
+2000-10-23 Jim Meyering <meyering@lucent.com>
+
+ * Makefile.maint: Clean up version-related variables.
+
+ * Version 2.0.8.
+
+ * Makefile.am (EXTRA_DIST): Add .prev-version.
+
+2000-10-22 Jim Meyering <meyering@lucent.com>
+
+ * tests/Makefile.am (SUBDIRS): Add sha1sum.
+ * tests/sha1sum/basic-1: New file.
+ * configure.in (AC_OUTPUT): Add tests/sha1sum/Makefile.
+
+ * src/Makefile.am (bin_PROGRAMS): Add sha1sum.
+ (md5sum_SOURCES): Define.
+ (sha1sum_SOURCES): Define.
+ (noinst_HEADERS): Add checksum.h.
+
+ * src/md5sum.c: Factor out the differences between MD5 and SHA1,
+ and parameterize so this code may be used by both md5sum and the new
+ program, sha1sum. Loosely based on a patch from Scott Miller.
+ * src/checksum.h: New file.
+ * src/md5.c: New file that simply defines `algorithm'.
+ * src/sha1sum.c: Likewise.
+
+ * man/Makefile.am (man_MANS): Add sha1sum.1.
+ * man/sha1sum.x: New file.
+
+ Support 8-byte integers, assuming they're printable with e.g., %lld.
+ * src/od.c: Add support for printing data as unsigned
+ long long integers.
+
+2000-10-21 Jim Meyering <meyering@lucent.com>
+
+ The command, `yes ''|./cat -n' would stop printing after INT_MAX lines.
+ * src/cat.c (cat): Never let `newlines' exceed 3.
+
+2000-10-21 Jim Meyering <meyering@lucent.com>
+
+ Prevent a counter buffer overrun when numbering lines and when
+ processing 100 billion lines (or more) of input.
+ * src/cat.c (LINE_COUNTER_BUF_LEN): Define to allow numbering as
+ many as 10^18 - 1 lines (the old limit was 10^11 - 1, and could
+ be exceeded without too much trouble). Use this symbol rather
+ than hard-coding the constant everywhere.
+ (next_line_num): Rather than overrunning for input with more lines,
+ mark the line number by putting a `>' in the leftmost slot.
+ Patch by Jan Nieuwenhuizen.
+
+ * src/sort.c (SORT_OUT_OF_ORDER): Define.
+ (main): Use it instead of hard-coding the `1'.
+
+2000-10-10 Jim Meyering <meyering@lucent.com>
+
+ * src/sort.c (main): Use EXIT_SUCCESS rather than 0.
+ Fail when checking (-c) with more than one file argument,
+ rather than simply ignoring the extra arguments.
+
+2000-09-07 Jim Meyering <meyering@lucent.com>
+
+ * src/cut.c: Remove obsolete comment block.
+ (usage): Note that when using -f, lines with no delimiters are
+ also printed.
+ * doc/textutils.texi (cut invocation): Likewise.
+
+2000-08-23 Jim Meyering <meyering@lucent.com>
+
+ * src/md5sum.c: Include <config.h> unconditionally, to be consistent
+ with all the other programs in this directory.
+ * src/tsort.c: Likewise.
+
+2000-08-19 Jim Meyering <meyering@lucent.com>
+
+ * src/comm.c (writeline): Correct comments. From Bruno Haible.
+
+2000-08-11 Paul Eggert <eggert@twinsun.com>
+
+ * doc/textutils.texi:
+
+ Portable shell scripts should specify global options before
+ key fields.
+
+ Move global LC_CTYPE remark to each sort option that depends
+ on LC_CTYPE.
+
+ sort -g depends on LC_NUMERIC.
+
+ Add @vindex where it's missing.
+
+ "radix character" -> "decimal-point character", to match Standard C
+ terminology, which is easier for most people to follow.
+
+ "comm" does not consider trailing newlines to be significant.
+
+2000-08-10 Paul Eggert <eggert@twinsun.com>
+
+ * doc/textutils.texi: Recommend against the System V syntax
+ for tr ranges, and don't use it in examples. Use POSIX
+ classes rather than ranges, for portability.
+ * src/tr.c (usage): Don't describe System V syntax, as it
+ doesn't always work.
+
+ * src/sort.c (usage): Describe -d and -i in a locale-independent way.
+
+ * doc/Makefile.am (constants.texi): Use the C locale so that
+ [A-Z] works as expected.
+
+2000-08-07 Paul Eggert <eggert@twinsun.com>
+
+ * src/cut.c (cut_fields): Invoke xalloc_die instead of printing
+ our own message.
+ (cut_fields): Check for I/O error as well as end-of-file
+
+2000-08-06 Bruno Haible <haible@clisp.cons.org>
+
+ * src/wc.c: Add support for multi-byte locales.
+ (iswprint, mbrtowc, wcwidth): Provide default definitions.
+ (total_bytes): New variable.
+ (print_bytes): New variable.
+ (longopts): Change abbreviation for --chars from 'c' to 'm'.
+ (usage): Update.
+ (write_counts): Add `bytes' argument.
+ (wc): New variables `bytes', `count_bytes', `count_chars',
+ `count_complicated'. The old code determines `bytes', not `chars'.
+ New case for MB_CUR_MAX > 1. A non-printable non-space character does
+ not increment the line position or start a word. Update `total_bytes'.
+ (main): Initialize `print_bytes' and `total_bytes' to 0. Accept 'm'
+ option. Pass `total_bytes' to write_counts.
+ * doc/textutils.texi (wc invocation): Update accordingly.
+
+2000-08-06 Bruno Haible <haible@clisp.cons.org>
+
+ * src/head.c (head): Call write_header here.
+ (head_file): ... not here.
+
+ * src/cat.c (closeout_func): Remove variable.
+ (close_stdout_wrapper): Remove unused function.
+ (main): Remove assignment to closeout_func.
+
+ * src/fold.c (fold_file): Remove ferror(stdout) check, already done
+ in close_stdout.
+
+2000-08-06 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (usage): Warn more succinctly about the effects of
+ the locale on sort order.
+
+2000-08-06 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0g.
+
+ * src/tail.c (pipe_lines): Declare local `cp' to be const.
+
+2000-08-04 Greg McGary <greg@mcgary.org>
+
+ * src/tail.c (pipe_lines): Add variable `nbytes' so we can free
+ `tmp' immediately after read loop. Don't process an empty file.
+ [This fixes a buffer-underrun error -- detected thanks to
+ bounded pointers -jmm]
+
+2000-08-05 Jim Meyering <meyering@lucent.com>
+
+ Fix buffer-overrun error.
+ * src/pr.c (init_header): Allocated buffer was sometimes too small.
+ Reported by Greg McGary (who found this bug using his
+ bounded-pointers-enabled gcc).
+ (init_header): Move declarations of several variables into the
+ inner scope where they are used.
+ * tests/pr/Test.pm (narrow-1): New test, for the above.
+
+ * src/csplit.c (MAX): Remove definition (It's in sys2.h).
+
+2000-08-04 Jim Meyering <meyering@lucent.com>
+
+ * src/sort.c (main): Rename local `t' to `tmp_dir' to avoid shadowing
+ a previous local by that name.
+ (usage): Warn that GNU sort is now locale-aware, and suggest
+ people put LC_ALL=POSIX in their environment.
+
+ * src/pr.c (store_columns): Remove conjunct that would dereference
+ an out-of-bounds pointer. Reported by Greg McGary (who found this
+ bug using his bounded-pointers-enabled gcc).
+
+2000-08-03 Jim Meyering <meyering@lucent.com>
+
+ * tests/Makefile.am.in ($(srcdir)/$x-tests): Use -I$(srcdir), not `-I.'.
+ (Makefile.am): Likewise. Reported by Greg McGary.
+
+2000-08-01 Jim Meyering <meyering@lucent.com>
+
+ * doc/textutils.texi (tr invocation): Note that ranges are not portable.
+ Update examples not to use ranges.
+
+2000-07-31 Jim Meyering <meyering@lucent.com>
+
+ * src/cut.c (cut_fields): Use `virtual memory exhausted',
+ not `Memory exhausted'.
+
+2000-07-30 Jim Meyering <meyering@lucent.com>
+
+ * src/help-version: Remove file. Move it to ...
+ * tests/help-version: ...here
+ * tests/Makefile.am (TESTS): Set to help-version.
+ (TESTS_ENVIRONMENT): Define.
+ (EXTRA_DIST): Add $(TESTS).
+ * src/Makefile.am (EXTRA_DIST): Remove help-version.
+ (TESTS): Remove definition.
+ (TESTS_ENVIRONMENT): Remove definition.
+
+2000-07-28 Paul Eggert <eggert@twinsun.com>
+
+ sort's -T option can now appear multiple times.
+ Thanks to Charles Randall for suggesting this idea.
+
+ * doc/textutils.texi, NEWS: Document this.
+
+ * src/sort.c (temp_dir): Remove.
+ (temp_dirs, temp_dir_count, temp_dir_alloc): New vars.
+ (process_id): New var.
+ (usage): Describe new use of -T.
+ (add_temp_dir): New function.
+ (tempname): Use new temp_dirs array.
+ Do not discard information from the process-id or sequence
+ number, unless we have short file names.
+ (sighandle): Use process_id instead of getpid.
+ (main): Initialize process_id.
+ Add support for the new use of -T.
+
+2000-07-23 Jim Meyering <meyering@lucent.com>
+
+ * tests/head/Test.pm: Rename tests (and hence files) to have a short
+ enough prefix so that they're not truncated on 8+3 file systems.
+ Reported by Eli Zaretskii.
+
+2000-07-09 Jim Meyering <meyering@lucent.com>
+
+ * config.guess: Update from FSF.
+ * config.sub: Likewise.
+
+2000-07-02 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0f.
+
+2000-07-01 Jim Meyering <meyering@lucent.com>
+
+ * src/cut.c: Change type of global, field_1_bufsize, from int to size_t.
+
+2000-06-29 Jim Meyering <meyering@lucent.com>
+
+ * src/tr.c (find_bracketed_repeat): Add a cast to suppress a warning.
+ Reported by Gerhard Poul.
+
+ * src/tail.c (enum): Remove comma from end of enumerator list.
+ From Gerhard Poul.
+
+2000-06-25 Jim Meyering <meyering@lucent.com>
+
+ * configure.in (ALL_LINGUAS): Add Danish (da).
+
+2000-06-24 Jim Meyering <meyering@lucent.com>
+
+ * doc/textutils.texi: Lots of minor rewording and grammar correction.
+ From Brian Youmans.
+
+ * tests/sum/basic-1: New file.
+ * tests/sum/Makefile.am: New file.
+ * configure.in (AC_OUTPUT): Add tests/md5sum/Makefile.
+ * tests/Makefile.am (SUBDIRS): Add sum.
+
+2000-06-22 Bruno Haible <haible@clisp.cons.org>
+
+ * src/sum.c (sysv_sum_file): Avoid overflowing 32-bit accumulator
+ on files whose bytes sum to 2^32 or larger. The smallest such file
+ contains 16,843,010 bytes, nearly all of which have the value 0xff.
+
+2000-06-22 Bruno Haible <haible@clisp.cons.org>
+
+ * src/cat.c (main): Correct a comment.
+
+2000-06-21 Jim Meyering <meyering@lucent.com>
+
+ * src/cut.c (getstr): Remove private (and out of date) version of
+ this function.
+ (cut_fields): Adjust caller to use the just-extended one in ../lib.
+ Reported by Paul Sauer.
+
+2000-06-20 Jim Meyering <meyering@lucent.com>
+
+ * src/uniq.c (main): Fix off-by-argc test, so +N-style options are
+ recognized once again. Reported by Geoff Keunning.
+ Fix typo in diagnostic: s/compare/skip/.
+
+2000-05-27 Jim Meyering <meyering@lucent.com>
+
+ * src/tail.c: Arrange to call close_stdout upon exit.
+ Don't close stdout explicitly.
+ (usage): Add missing backslash at end of line.
+ (write_header): Remove now-unused COMMENT parameter.
+ Update all callers.
+
+2000-05-24 Jim Meyering <meyering@lucent.com>
+
+ * src/head.c (head_file): Use STDIN_FILENO in place of `0'.
+ (main): Likewise.
+
+2000-05-20 Jim Meyering <meyering@lucent.com>
+
+ * src/cat.c: Arrange to call close_stdout upon exit.
+ Don't close stdout explicitly. Replace uses of global constant,
+ output_desc, with uses of STDOUT_FILENO.
+
+ Arrange to call close_stdout upon exit. Don't close stdout explicitly.
+ * src/cksum.c: Likewise.
+ * src/comm.c: Likewise.
+ * src/csplit.c: Likewise.
+ * src/cut.c: Likewise.
+ * src/expand.c: Likewise.
+ * src/fmt.c: Likewise.
+ * src/fold.c: Likewise.
+ * src/head.c: Likewise.
+ * src/join.c: Likewise.
+ * src/md5sum.c: Likewise.
+ * src/nl.c: Likewise.
+ * src/od.c: Likewise.
+ * src/paste.c: Likewise.
+ * src/pr.c: Likewise.
+ * src/ptx.c: Likewise.
+ * src/sort.c: Likewise. (but set exit status and file name, too)
+ * src/split.c: Likewise.
+ * src/sum.c: Likewise.
+ * src/tac.c: Likewise.
+ * src/tr.c: Likewise.
+ * src/tsort.c: Likewise.
+ * src/unexpand.c: Likewise.
+ * src/uniq.c: Likewise.
+ * src/wc.c:: Likewise.
+
+2000-05-13 Jim Meyering <meyering@lucent.com>
+
+ * src/help-version: Run each program successfully at least once.
+
+2000-05-12 Jim Meyering <meyering@lucent.com>
+
+ * src/head.c (string_to_integer): Restrict base to 10.
+ Reported by Joseph S. Myers.
+ * tests/head/Test.pm: Add a few tests for this.
+
+ New option: --first-only
+ * src/unexpand.c (anonymous enum) [CONVERT_FIRST_ONLY_OPTION]: Define.
+ (long_options): Add `first-only'.
+ (main): Handle new option.
+
+2000-05-11 Jim Meyering <meyering@lucent.com>
+
+ * tests/unexpand/basic-1: New tests.
+
+2000-04-17 Bruno Haible <haible@clisp.cons.org>
+
+ * src/system.h [__BEOS__]: Ignore O_BINARY and O_TEXT.
+
+2000-04-16 Jim Meyering <meyering@lucent.com>
+
+ * src/tail.c: Prepare to remove option: --max-consecutive-size-changes.
+ Doesn't seem useful.
+ (usage): Remove description.
+ * doc/textutils.texi (tail invocation): Remove description.
+
+2000-04-12 Jim Meyering <meyering@lucent.com>
+
+ * src/tail.c (usage): Tweak --help output. Suggestions from Karl Berry.
+
+ Move some macros into m4/.
+ * configure.in (_GNU_SOURCE): Don't define here.
+ (AC_SYS_LARGEFILE): Don't use here.
+ (AM_C_PROTOTYPES): Don't use here.
+ * acconfig.h: Remove now-unused file.
+
+2000-04-09 Jim Meyering <meyering@lucent.com>
+
+ * doc/textutils.texi: Include constants.texi.
+ (tail invocation): Use `@value's instead of referring to the
+ output of `tail --help' for defaults.
+ * doc/Makefile.am (constants.texi): New rule.
+ (EXTRA_DIST): Add constants.texi.
+ (MAINTAINERCLEANFILES): Add it here, too.
+ (textutils.dvi, textutils.info): Depend on constants.texi.
+
+ * src/tail.c (usage): Clarify descriptions of the --max-* options.
+ From Karl Berry.
+
+2000-04-03 Jim Meyering <meyering@lucent.com>
+
+ * configure.in (AC_CHECK_HEADERS): Remove langinfo.h. Now it's in m4/.
+ (AC_CHECK_FUNCS): Remove nl_langinfo. Now it's in m4/.
+
+2000-03-17 Jim Meyering <meyering@lucent.com>
+
+ * configure.in (ALL_LINGUAS): Add Slovenian (sl).
+
+2000-03-12 Jim Meyering <meyering@lucent.com>
+
+ Merge from fileutils.
+ * src/system.h "pathmax.h": Include.
+ <sys/time.h>: Include if appropriate.
+ <time.h>: Likewise.
+ <sys/mkdev.h>: Likewise.
+ <sys/sysmacros.h>: Likewise.
+ <utime.h>: Likewise.
+ (major, minor, makedev): Define if needed.
+ (struct utimbuf): Declare if missing.
+ (ST_BLKSIZE, ST_NBLOCKS, ST_NBLOCKSIZE): Define.
+
+ * src/cksum.c (usage): Correct --help output.
+ Prompted by a report from Gregory Leblanc.
+
+2000-03-05 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (struct buffer.newline_free): New member.
+ (initbuf, findlines): Set it.
+ (fillbuf): Do not double the size of a full buffer to append a newline
+ unless the buffer is known to be newline free.
+
+2000-03-05 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0e.
+
+2000-03-04 Jim Meyering <meyering@lucent.com>
+
+ Don't get failed assertion for `tail -f directory'.
+ * src/tail.c: Revert most of 1999-10-20 change. Instead, ...
+ (IS_TAILABLE_FILE_TYPE): Define to produce similar result.
+ (recheck): Use it here.
+ (tail_file): Use it here.
+ Reported by François Pinard.
+
+ Once we encounter a file that is not of IS_TAILABLE_FILE_TYPE,
+ marke it as such and ignore it forever after.
+ * src/tail.c (struct File_spec): New member.
+ (recheck): Initialize new member.
+ (tail_file): Likewise.
+ (tail_forever): Skip the file if it's marked as ignorable.
+
+2000-03-03 Jim Meyering <meyering@lucent.com>
+
+ * src/sort.c (fillbuf): Move declaration of local, cc, into scope of
+ `while' loop where it's used.
+
+2000-03-02 Paul Eggert <eggert@set.twinsun.com>
+
+ Big performance improvement when sorting many small files,
+ building on a suggestion by Charles Randall.
+
+ * src/sort.c (fillbuf): Skip memmove if it would be a no-op,
+ as many memmove implementations are slow in that case.
+ Don't examine leftover bytes for eolchar, since they may be left
+ over from a previous file, and we want to read from this file.
+
+ (sort): At end of file, if there is more input and buffer room,
+ concatenate the next input file.
+
+2000-02-29 Jim Meyering <meyering@lucent.com>
+
+ * src/join.c (make_blank): Add an explicit cast to `unsigned char *'
+ to placate HPUX's C compiler. Reported by Bob Proulx.
+
+2000-01-30 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0d.
+
+ * Makefile.maint (my-distcheck): Depend on po-check, so I'll be warned
+ about any required changes at `make distcheck' time rather than at
+ `make alpha' time.
+ (writable-files): New target.
+ (my-distcheck): Depend on it.
+ (alpha): Likewise.
+
+ * po/POTFILES.in: Add these: lib/makepath.c, lib/rpmatch.c,
+ and lib/same.c
+
+2000-01-29 Jim Meyering <meyering@lucent.com>
+
+ * configure.in: Remove lib-check for cposix now that we use
+ m4/isc-posix.m4.
+ (jm_LIB_CHECK): Use this even though the library checks aren't
+ required for this patchage (so all three lib/Makefile.in files
+ will be the same).
+
+2000-01-24 Mark Kettenis <kettenis@gnu.org>
+
+ * src/tsort.c (exit_status): New variable.
+ (loop): New varibale.
+ (count_items, scan_zeroes): Change return type to int.
+ (detect_loop): Complete rewrite to correctly implement detection
+ of loops. Also change return type to int.
+ (recurse_tree): Stop if ACTION returns non-zero. This involves
+ changing the return type of this function and ACTION to int.
+ (walk_tree): Change return type of ACTION to int.
+ (tsort): Continue sort after a loop has been detected (and
+ broken). Set exit_status to 1 if a loop was detected.
+ (main): Use exit_status to determine exit code.
+ * tests/tsort/basic-1: Change expected output for cycle-1 and
+ cycle-2 tests.
+
+2000-01-23 Jim Meyering <meyering@lucent.com>
+
+ * configure.in (AM_FUNC_STRTOD): Move to m4/.
+ (AC_SUBST(POW_LIBM)): Likewise.
+
+2000-01-22 Jim Meyering <meyering@lucent.com>
+
+ * src/sort.c (keycompare): Use global, hard_LC_COLLATE in place of
+ local that is sometimes undeclared.
+
+ * configure.in (ALL_LINGUAS): Add Brazilian Portuguese (pt_BR).
+ (AC_CHECK_HEADERS): Move these checks into m4/.
+
+ * src/tr.c ("xstrtol.h"): Include.
+ (Filter): Rename from PFL.
+ (non_neg_strtol): Remove function.
+ (find_bracketed_repeat): Use xstrtoul instead of non_neg_strtol.
+ (squeeze_filter, set_initialize, main): Use size_t and ssize_t in
+ place of long and int in several decls.
+ (read_and_delete, read_and_xlate): Likewise, and remove assertion.
+ * tests/tr/Test.pm (o-rep-1, o-rep-2): New tests.
+
+ * src/cut.c: Correct copying notice to use GPL, per author's request.
+ * src/paste.c: Likewise.
+ (AUTHORS): Add djm.
+
+1999-09-19 Bruno Haible <haible@clisp.cons.org>
+
+ * src/tr.c (PFI): Return `long', not `int'.
+ (PFL): Rename from PFI now that it returns long.
+ (squeeze_filter): Declare as `long': i, nr, out_len.
+
+2000-01-17 Paul Eggert <eggert@twinsun.com>
+
+ Tweak sort performance.
+
+ * src/sort.c (hard_LC_CTYPE): Remove.
+ (keylist): Renamed from keyhead. Now a pointer, not a
+ mostly-unused struct. All uses changed.
+ (findlines, keycompare, CMP_WITH_IGNORE, compare, checkfp, mergefps,
+ sort): Tune and use a more consistent style for reallocation.
+ (keycompare, main): Don't worry about LC_CTYPE;
+ it's buggy with multibyte chars anyway.
+ (compare): Invoke alloca (0) after each call to keycompare,
+ not just the ones that return nonzero. This avoids a memory
+ leak on architectures without builtin alloca that occurs
+ sometimes when a file contains all duplicate lines.
+
+2000-01-17 Paul Eggert <eggert@twinsun.com>
+
+ * src/csplit.c (interrupt_handler, main):
+ Don't use SA_INTERRUPT to decide whether to call sigaction, as
+ POSIX.1 doesn't require SA_INTERRUPT and some systems
+ (e.g. Solaris 7) don't define it. Use SA_NOCLDSTOP instead;
+ it's been part of POSIX.1 since day 1 (in 1988).
+ * src/sort.c (sighandler, main): Likewise.
+
+2000-01-16 Jim Meyering <meyering@lucent.com>
+
+ * lib/Makefile.am: Merge with fileutils/lib/Makefile.am.
+
+ * configure.in: Remove AM_FUNC_ERROR_AT_LINE, jm_FUNC_STRFTIME,
+ AC_FUNC_VPRINTF, and AC_FUNC_ALLOCA. Now they're in m4/.
+
+2000-01-15 Jim Meyering <meyering@lucent.com>
+
+ * configure.in (AC_REPLACE_FUNCS): Remove these: memcpy memset stpcpy
+ strpbrk strtol strtoul. Now that's in m4/.
+
+ unexpand could infloop
+ * src/unexpand.c (TAB_STOP_SENTINEL): Define.
+ (unexpand): Use it instead of INT_MAX.
+ Declare column and pending to be `unsigned'.
+ Increment pending and column counters only if column is smaller
+ than TAB_STOP_SENTINEL.
+ * tests/Makefile.am (SUBDIRS): Add unexpand.
+ * tests/unexpand/basic-1: New tests for the above-fixed bug.
+ * configure.in (AC_OUTPUT): Add tests/unexpand/Makefile.
+ Reported by John Kodis.
+
+2000-01-12 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (fillbuf): Avoid quadratic behavior with long lines.
+ Also, stop worrying about ancient memchr bug (misbehavior when
+ size is zero), since other code doesn't worry either.
+
+2000-01-11 Jim Meyering <meyering@lucent.com>
+
+ Sync lib/ directories of sh-utils, and textutils.
+
+ * lib/Makefile.am (libfetish_a_SOURCES): Add getdate.y, posixtm.c,
+ basename.c, canon-host.c, readutmp.c, stripslash.c, xgetcwd.c,
+ xgethostname.c.
+ (noinst_HEADERS): Add getdate.h, group-member.h, posixtm.h,
+ pathmax.h, readutmp.h
+
+ * lib/Makefile.am: s/tu/fetish/
+ * src/Makefile.am: s/libtu/libfetish/
+
+2000-01-10 Jim Meyering <meyering@lucent.com>
+
+ * Version 2.0c.
+
+ * Makefile.maint (announcement): Include URLs for xdelta files.
+ (alpha): Use scp, not ncftp.
+
+ * lib/Makefile.am (noinst_HEADERS): Add nanosleep.h.
+
+2000-01-08 Jim Meyering <meyering@ascend.com>
+
+ * Version 2.0b.
+
+ More nits.
+ * src/cut.c (OUTPUT_DELIMITER_OPTION): Define this and use it
+ instead of `CHAR_MAX + n'.
+ * src/pr.c (PAGES_OPTION, COLUMNS_OPTION): Likewise.
+
+2000-01-07 Jim Meyering <meyering@ascend.com>
+
+ * tests/tsort/Makefile.am (TESTS_ENVIRONMENT): Add `pwd`/ prefix
+ to exported PATH value (though not strictly necessary, here).
+ * tests/md5sum/Makefile.am: Likewise.
+
+ Nits.
+ * lib/memcasecmp.c: Use `#if' instead of `#ifdef' for `HAVE_CONFIG_H'.
+ Capitalize all macro parameters.
+ (memcasecmp): Ansideclify.
+ Don't cast away `const'ness of parameters.
+ * lib/strpbrk.c (strpbrk): Ansideclify.
+ Use `#if' instead of `#ifdef' for `HAVE_CONFIG_H'.
+ Suggestions from François Pinard.
+
+2000-01-06 Jim Meyering <meyering@ascend.com>
+
+ * tests/tail-2/assert: Tell the user just before sleeping for 7 seconds.
+
+ * tests/tail-2/Makefile.am (TESTS): Remove fflush test. It didn't
+ test the losing behavior, and left a stray tail process to boot.
+
+2000-01-01 Jim Meyering <meyering@ascend.com>
+
+ * Version 2.0a.
+
+ * lib/Makefile.am (lstat.c): Adapt rule to handle new parts of xstat.in.
+
+1999-12-12 Jim Meyering <meyering@ascend.com>
+
+ Move 120+ lines of stat.h-related macros from system.h (not shared)
+ to sys2.h, which is shared between fileutils, sh-utils, textutils.
+ * src/system.h: Move them from here...
+ * src/sys2.h: ... to here.
+
+1999-12-09 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (ALL_LINGUAS): Add Galician (gl).
+
+1999-12-06 Jim Meyering <meyering@ascend.com>
+
+ * tests/tail-2/fflush: New test for latest change.
+ * tests/tail-2/Makefile.am (TESTS): Add fflush.
+
+1999-10-26 Marc Boucher <marc@mbsi.ca>
+
+ * src/tail.c (main): Flush stdout before switching to unbuffered mode
+ and calling tail_forever. Required only on Solaris 5.7 -- on other
+ systems, using setvbuf to switch to unbufferd mode does the flush.
+
+1999-11-22 Jim Meyering <meyering@ascend.com>
+
+ * lib/Makefile.am (DISTCLEANFILES): Put $(BUILT_SOURCES) here rather
+ than in $(MAINTAINERCLEANFILES).
+
+ * src/tail.c (recheck): Handle a race condition (including <dev,inode>
+ reuse) that would lead to a failed assertion.
+ Reported by Ken Pizzini.
+ (tail_forever): Record errno before using it in call to `error'
+ which might change it.
+ (tail_file): Likewise.
+
+ New test for the above.
+ * tests/tail-2/assert: New file.
+ * tests/tail-2/Makefile.am: New file.
+ * tests/tail-2: New directory.
+ * tests/Makefile.am (SUBDIRS): Add tail-2.
+ * configure.in (AC_OUTPUT): Add tests/tail-2/Makefile.
+
+1999-11-05 Jim Meyering <meyering@ascend.com>
+
+ * src/system.h: Use HAVE_STRUCT_STAT_ST_BLKSIZE not HAVE_ST_BLKSIZE.
+
+ * configure.in: Move some type/header/member tests into
+ m4/jm-macros.m4 (jm_CHECK_ALL_TYPES) so they are shared by all of
+ fileutils, textutils, and sh-utils.
+
+1999-11-04 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (SORTALLOC): New macro.
+ (sortalloc, mergealloc, LINEALLOC): Use it.
+ (sortalloc, mergealloc, linelength): Now const.
+ (sortalloc): Increase from 0.5 to 8 MB.
+ (mergealloc): Increase from 16 to 256 kB.
+ (LINEALLOC): Increase from 0.25 to 4 MB.
+
+1999-11-03 Paul Eggert <eggert@twinsun.com>
+
+ * NEWS, doc/textutils.texi:
+ Do not consider newline to be part of a line when comparing lines
+ in `sort' and `comm'. POSIX.2 requires that we consider newline,
+ but this is a bug in the spec and the bug will likely be fixed.
+ * src/comm.c (compare_files): Likewise.
+ * src/sort.c (begfield, limfield, findlines, keycompare, compare):
+ Likewise.
+ * tests/sort/Test.pm: Update tests `use-nl' and `11d' to reflect
+ this change.
+
+ * lib/linebuffer.c (readline): Do not leave room for an extra
+ byte after the newline; it's no longer needed.
+ * src/sort.c (sortalloc, mergealloc, fillbuf, checkfp, mergefps):
+ Likewise.
+
+ * lib/memcoll.c (memcoll): The two arguments cannot be
+ adjacent any more, so remove the alloca/copy workaround for
+ that case.
+
+1999-11-03 Jim Meyering <meyering@ascend.com>
+
+ Fix so that `tail -fn 2 file' works again.
+ * src/tail.c (anonymous enum) [LONG_FOLLOW_OPTION]: Define.
+ (long_options): Use LONG_FOLLOW_OPTION here, instead of 'f'.
+ (main): Remove the `::' after the `f' in getopt_long string.
+ Add `case LONG_FOLLOW_OPTION' after `case 'f':'.
+ Based on a patch from Tim Waugh.
+
+ * src/tail.c (anonymous enum) [RETRY_OPTION]: Define.
+ [MAX_UNCHANGED_STATS_OPTION]: Likewise.
+ [MAX_CONSECUTIVE_SIZE_CHANGES_OPTION]: Likewise.
+ [PID_OPTION]: Likewise.
+ (long_options): Use *_OPTION instead of CHAR_MAX + N.
+ (main): Likewise.
+
+1999-11-02 Jim Meyering <meyering@ascend.com>
+
+ * man/help2man: Import version 1.018.
+ * man/Makefile.maint ($(man_MANS)): Remove use of --name=... option.
+ * man/*.x: Include one-line summary in [NAME] section.
+ * man/Makefile.summ (cat-summary): Remove now-unused file.
+ * man/Makefile.am (EXTRA_DIST): Remove Makefile.summ.
+ * man/Makefile.maint: Include Makefile.summ with leading `-'.
+ This file is shared by fileutils and sh-utils, both of which still
+ have the file (albeit nearly empty now).
+ Suggestion for clean-up from Akim Demaille.
+
+1999-11-01 Jim Meyering <meyering@ascend.com>
+
+ * lib/Makefile.am (MAINTAINERCLEANFILES): Set to $(BUILT_SOURCES).
+
+1999-10-20 Jim Meyering <meyering@ascend.com>
+
+ * src/tail.c (recheck): Don't refuse to tail a non-regular, non-pipe.
+ (tail_file): Likewise.
+
+1999-10-07 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (ALL_LINGUAS): Add Japanese (ja).
+
+1999-10-04 Jim Meyering <meyering@ascend.com>
+
+ * depcomp: New file, for automake's new dependency support.
+ * missing: New version, from automake's user-dep-gen-branch.
+
+1999-09-28 Jim Meyering <meyering@ascend.com>
+
+ * src/system.h: Update from the system.h from fileutils.
+
+ * lib/error.c (error_at_line): Use strerror portably here, too,
+ just as was done in error.
+
+1999-09-02 Jim Meyering <meyering@ascend.com>
+
+ * src/cut.c: Remove xstrdup declaration.
+ * src/sort.c: Likewise.
+ * src/tsort.c: Likewise.
+
+1999-08-22 Jim Meyering <meyering@ascend.com>
+
+ * src/tsort.c (detect_loop): There's no loop if k->top is NULL.
+ Niklas Edmundsson showed how to make tsort segfault.
+
+ * tests/tsort/Makefile.am: Rewrite to use Fetish.pm-based framework.
+ * tests/tsort/basic-1: New file.
+ Add a few more tests.
+ * tests/tsort/Test.pm: Remove.
+
+ * man/help2man: Escape backslashes so tr's manual comes out right.
+ Reported by Andreas Schwab.
+
+ * src/tsort.c (usage): Correct address for bug reports.
+ (tsort): Remove trailing `\n' in error format.
+
+ * src/md5sum.c (md5_check): Remove trailing `\n' in error format.
+
+ * src/sys2.h (IF_LINT): Define new macro.
+ * src/od.c (dump): Use IF_LINT macro instead of #ifdef lint...
+ (main): Likewise.
+ * src/paste.c (paste_parallel): Likewise.
+ * src/pr.c (read_line): Likewise.
+ * src/sort.c (checkfp): Likewise.
+ (mergefps): Likewise.
+
+ * src/cksum.c (cksum): Constify a char*.
+ * src/comm.c (writeline): Likewise.
+
+ * src/uniq.c (check_file): Move declarations of local variables
+ into the scopes where they're used.
+ (min): Remove macro definition.
+ (different): Use MIN, not min.
+ (SWAP_LINES): New macro.
+ (check_file): Use it here.
+
+ * src/uniq.c (check_file): Generate each line of output earlier,
+ when possible. It is possible when using none of these options:
+ --count, -repeated, --all-repeated, --unique.
+ Based on a patch from Ian Turner.
+
+1999-08-15 Jim Meyering <meyering@ascend.com>
+
+ * src/tail.c (ENOSYS): Define to a bogus value if not already defined.
+
+1999-08-13 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * src/tail.c (parse_options): Warn if --pid=PID is used and kill()
+ returns ENOSYS (e.g. when compiled with DJGPP).
+
+1999-08-13 Jim Meyering <meyering@ascend.com>
+
+ * src/tsort.c (usage): Use consistent bug-reporting address.
+
+ * tests/tsort/Test.pm: New file.
+ * tests/tsort/Makefile.am: New file.
+ * tests/tsort: New directory.
+ * tests/Makefile.am (SUBDIRS): Add tsort.
+ * configure.in (AC_OUTPUT): Add tests/tsort/Makefile.
+
+1999-08-11 Paul Eggert <eggert@twinsun.com>
+
+ * doc/textutils.texi: Document how to ignore newline during sort.
+
+1999-08-07 Jim Meyering <meyering@ascend.com>
+
+ * po/POTFILES.in: Add lots of lib/*.c files. Remove src/system.h.
+
+1999-08-06 Jim Meyering <meyering@ascend.com>
+
+ * Version 2.0.
+
+ * src/sort.c: Include file name in `write error' diagnostics.
+ (write_bytes): Add output_file parameter and use it. Update callers.
+ (mergefps): Likewise.
+ (merge): Likewise.
+ (sort): Likewise.
+ Reported by John Summerfield.
+
+1999-08-05 Jim Meyering <meyering@ascend.com>
+
+ * src/tail.c (Follow_mode): Remove comma at end of enumerator list.
+ Reported by Kaveh Ghazi.
+
+ * config.sub: Update from autoconf.
+ * config.guess: Update from autoconf.
+
+1999-08-04 Jim Meyering <meyering@ascend.com>
+
+ * Version 1.22q.
+
+ * configure.in: Remove inadequate getline-testing code. md5sum would
+ segfault on HPUX because of the getline function in their C library.
+ Use the AM_FUNC_GETLINE test in m4/ instead.
+
+1999-08-03 Jim Meyering <meyering@ascend.com>
+
+ * src/tail.c (tail_forever): When following by name and calling recheck
+ because of exceeding max_n_consecutive_size_changes_between_opens,
+ `continue' so we don't fall through and (assuming the file finally grew)
+ get the erroneous `file truncated' message. This was hard to reproduce.
+
+1999-08-01 Jim Meyering <meyering@ascend.com>
+
+ * Version 1.22p.
+
+ * configure.in (AM_C_PROTOTYPES): Move test to precede a few
+ header tests -- merely on principle.
+
+1999-08-01 Paul Eggert <eggert@twinsun.com>
+
+ * configure.in (AC_SYS_LARGEFILE): Renamed from AC_LFS.
+
+1999-07-16 Paul Eggert <eggert@twinsun.com>
+
+ * lib/quotearg.c (quotearg_buffer):
+ Don't quote spaces if C quoting style.
+
+1999-07-31 Jim Meyering <meyering@ascend.com>
+
+ * src/tail.c (tail_forever): Don't call kill if pid is 0.
+ Detect when `writer_is_dead' also when the writer is some other user.
+ From Karl Heuer.
+
+ * src/tail.c (parse_options): Warn if --pid=PID is used without -f.
+
+1999-07-30 Jim Meyering <meyering@ascend.com>
+
+ * Version 1.22o.
+
+ * src/tail.c: New option: --pid=PID.
+ Include signal.h for kill prototype.
+ (pid): New global.
+ (long_options): Add `pid'.
+ (usage): Describe it.
+ (tail_forever): Implement it.
+ (parse_options): Handle the new option and required arg.
+ Suggestion and pseudo-code from Karl Heuer.
+
+1999-07-27 Jim Meyering <meyering@ascend.com>
+
+ * lib/linebuffer.c: Include <sys/types.h> now that linebuffer.h uses
+ size_t. This is required on at least SunOS4. From Kaveh Ghazi.
+
+1999-07-26 Jim Meyering <meyering@ascend.com>
+
+ * src/sys2.h (PID_T_MAX): Define.
+
+ * src/tail.c (struct File_spec) [n_stat_calls]: Remove unused member.
+
+1999-07-25 Jim Meyering <meyering@ascend.com>
+
+ * src/pr.c (usage): Remove `NEWS'-style paragraph (sorry to have
+ let that in, translators).
+
+ * Version 1.22n.
+
+1999-06-01 Volker Borchert <bt@teknon.de>
+
+ * tests/Makefile.am: Make envvar-check depend on check-recursive rather
+ than on `check' so that its tests are performed before any real tests.
+
+1999-07-20 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (AC_REPLACE_FUNCS) Remove memmove, now that it's
+ AC_REPLACE...'d in m4/jm-macros.m4.
+
+ * src/wc.c (posixly_correct): Declare global.
+ (write_counts): Use it to select printf formats.
+ (main): Set posixly_correct from the POSIXLY_CORRECT envvar.
+ From Peter Moulder.
+
+1999-07-15 Jim Meyering <meyering@ascend.com>
+
+ * tests/md5sum/Makefile.am: Revert the 1999-02-15 change.
+ * tests/md5sum/basic-1, newine-1: Add --text for each individual test.
+ Reported by Eli Zaretskii.
+
+1999-07-12 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (ALL_LINGUAS): Add Slovak (sk).
+
+1999-07-11 Jim Meyering <meyering@ascend.com>
+
+ * src/tail.c (recheck): Use assert instead of unnecessary close_fd.
+ Remove a couple of unnecessary FIXME comments.
+
+1999-07-10 Jim Meyering <meyering@ascend.com>
+
+ * doc/textutils.texi: Document new tail options.
+
+ * src/tail.c (struct File_spec) [tailable]: Rename from `missing' and
+ document. Change all uses and locals like was_missing to was_tailable.
+ Invert expressions as appropriate.
+ (reopen_inaccessible_files): Rename from allow_missing.
+ (sleep_interval): Describe.
+ (--allow-missing): Deprecate.
+ (--retry): New option, equivalent to --allow-missing.
+ (usage): Document name vs. descriptor differences.
+ Refer to manual for descriptions of --max-unchanged-stats=N
+ and --max-consecutive-size-changes=N.
+ (valid_file_spec): New function.
+ (recheck): Assert valid_file_spec.
+ Remove dead else-if block (suggestion from Eli Zaretskii).
+ Adjust stmts that set f->tailable -- unlike for `missing', tailable
+ doesn't depend on errno == ENOENT.
+ (parse_options): Give a warning if --retry is used when not following
+ by name.
+
+ * tests/join/Test.pm: New test case (but commented out) for
+ Paul's 1999-06-01 fix.
+
+1999-07-09 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (ALL_LINGUAS): Add Greek (el).
+
+1999-07-04 Jim Meyering <meyering@ascend.com>
+
+ * tests/join/Test.pm: New test case for Paul's 1999-06-03 fix.
+
+1999-07-03 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * src/tail.c (struct File_spec): New member, errnum.
+ (recheck): Record the new value of errno in f->errnum. Don't
+ output an error message unless the new value of errno differs from
+ the old one. Output a message if previously-inaccessible file
+ becomes accessible.
+ (tail_forever): Always recheck files whose fd is negative. If the
+ file cannot be fstat'ed, record the errno value in f[i].errnum.
+ (tail_file): If the file cannot be open, record the errno value in
+ f->errnum. If it can be opened, initialize f->errnum to zero. If
+ it's a non-regular non-fifo file, initialize f->errnum to -1.
+
+1999-06-21 Jim Meyering <meyering@ascend.com>
+
+ * doc/textutils.texi: Use lower case characters in sc{} context.
+ Reported by Eli Zaretskii.
+
+1999-06-03 Paul Eggert <eggert@shade.twinsun.com>
+
+ * src/join.c (xfields): Only <blank>s separate fields, not <space>s.
+
+1999-06-01 Paul Eggert <eggert@twinsun.com>
+
+ * lib/linebuffer.c (readline): Leave room for an extra byte
+ after the newline; comm needs this for memcoll.
+
+1999-06-01 Paul Eggert <eggert@twinsun.com>
+
+ Add LC_COLLATE support to `join'.
+
+ * doc/textutils.texi: Describe join and LC_COLLATE.
+
+ * src/join.c: Add support for LC_COLLATE locale.
+ Include hard-locale.h, linebuffer.h, memcoll.h.
+ (struct line): New member `buf', replacing `beg' and `lim'.
+ All uses changed.
+ (hard_LC_COLLATE): New var.
+ (main): Initialize it.
+ (get_line): Use readline to read the line,
+ instead of doing it by hand.
+ That way, we get a buffer that we can pass to memcoll.
+ (keycmp): Use memcoll to compare lines if hard_LC_COLLATE is nonzero.
+
+1999-05-27 Volker Borchert <bt@teknon.de>
+
+ * tests/Makefile.am: Qualify .env-warn with $(srcdir)/ prefix.
+
+1999-05-25 Paul Eggert <eggert@twinsun.com>
+
+ Add LC_COLLATE support to `comm', so that `comm' is compatible
+ with `sort' in nontrivial locales.
+
+ * doc/textutils.texi: Document locale-specific mode for comm.
+
+ * lib/Makefile.am (libtu_a_SOURCES): Add hard-locale.c, memcoll.c.
+ (noinst_HEADERS): Add hard-locale.h, memcoll.h.
+
+ * src/comm.c: Include hard-locale.h, memcoll.h.
+ (hard_LC_COLLATE): New variable.
+ (compare_files): Use memcoll to compare if hard_LC_COLLATE.
+ (main): Initialize hard_LC_COLLATE from locale.
+
+ * src/sort.c: Include hard-locale.h, memcoll.h.
+ (hard_LC_COLLATE, hard_LC_CTYPE, hard_LC_TIME): New variables,
+ replacing `need_locale'.
+ (memcoll): Move to lib/memcoll.c.
+ (keycompare): No need to alloc (0), since our caller now does it.
+ (compare): alloca (0) before returning.
+ (my_setlocale): Remove; hard_locale now dows this.
+ (main): Invoke setlocale, bindtextdomain, and textdomain before
+ invoking anything that might print an error.
+ Use hard_locale to determine which locales are hard.
+
+ * lib/hard-locale.c, lib/hard-locale.h, lib/memcoll.c, lib/memcoll.h:
+ New files.
+
+1999-05-25 Paul Eggert <eggert@shade.twinsun.com>
+
+ * lib/linebuffer.c (readline):
+ Append trailing newline to line.
+ * lib/linebuffer.h
+ [struct linebuffer] (size): Declare to be of type size_t, not long.
+ [struct linebuffer] (length): Likewise.
+ * src/comm.c, (writeline): Lines now contain trailing newline.
+ * src/uniq.c (find_field, different): Use size_t, not int, for lengths.
+ (writeline): Lines now contain trailing newline.
+ (check_file): Use size_t, not int, for lengths.
+ * src/nl.c (proc_text, check_section, main): More of the same.
+
+ * lib/linebuffer.h (struct linebuffer): Use size_t for sizes.
+ src/nl.c (header_del_len, body_del_len, footer_del_len, main):
+ Likewise.
+ src/uniq.c (find_field, different, check_file): Likewise.
+
+ * lib/linebuffer.c (readline): Silently append trailing
+ newline if needed. Do not bother setting buffer length to 0
+ at EOF, since it's not part of the spec and nobody relies on
+ it. Do not compute the difference between unrelated pointers.
+
+1999-05-25 Paul Eggert <eggert@twinsun.com>
+
+ * src/tac.c (memrchr): Ifdef out this unused function.
+
+1999-05-25 Jim Meyering <meyering@ascend.com>
+
+ * doc/textutils.texi (Squeezing): Remove misleading square brackets
+ from SET1 in the one-word-per-line example.
+
+1999-05-22 Jim Meyering <meyering@ascend.com>
+
+ * lib/Makefile.am (libtu_a_SOURCES): Remove memchr.c.
+ From Ulrich Drepper.
+
+ * Version 1.22m.
+
+1999-05-22 Paul Eggert <eggert@twinsun.com>
+
+ * doc/textutils.texi: Document locale-specific changes to `sort',
+ as well as the new, POSIX-compliant definition of line comparison,
+ and -g's more careful treatment of NaNs, infinities and zeros.
+
+ * src/sort.c (general_numcompare): Put exceptional cases
+ first, not last, to be consistent with -M.
+
+1999-05-21 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (strtod): Declare if STDC_HEADERS is not defined.
+ (general_numcompare): Use strtod, not xstrtod.
+ Do not consider partial conversions to be errors.
+ Put -infinity at the start, and +infinity at the end;
+ follow +infinity with NaNs (sorted by bit pattern),
+ and finally by conversion errors.
+
+1999-05-21 Jim Meyering <meyering@ascend.com>
+
+ * tests/sort/Test.pm (11d): Reverse lines in expected output
+ to reflect latest change.
+ (use-nl): New test from Paul Eggert.
+
+1999-05-20 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c: Treat the trailing newline as part of the line,
+ as required by POSIX.2.
+
+ (struct line, findlines, compare, checkfp, mergefps, sort):
+ A line now includes its trailing newline.
+ (findlines): Do not replace newline with NUL.
+ (memcoll, keycompare): Work even if the data to be compared are
+ adjacent strings; this is possible now that lines contain the
+ trailing newline.
+ (fillbuf): Always have an unused byte at the end of the buffer,
+ since memcoll and keycompare want to modify a byte after the last line.
+ (sortalloc, mergealloc): Increase by 1, for trailing byte.
+
+1999-05-20 Jim Meyering <meyering@ascend.com>
+
+ * tests/sort/Test.pm: Add test case from Paul Eggert.
+
+1999-05-20 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (keycompare): Ignore any length difference if the
+ localized comparison says the strings are equal.
+
+ * src/sort.c (memcoll, keycompare, compare): Handle NUL
+ characters properly when comparing with LC_COLLATE semantics.
+ (NLS_MEMCMP): Remove.
+ (memcoll): Renamed from strncoll.
+ Take separate lengths for each string.
+ This function is now invoked only when need_locale.
+ (keycompare): Don't copy strings when ignore and translate
+ are both NULL.
+
+1999-05-18 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (MONTHTAB_CONST): Renamed from NLS_CONST; the use
+ is also changed. Define to const also if !HAVE_NL_LANGINFO.
+
+ (usage): `,' -> `;' (English typo).
+
+1999-05-17 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * src/cat.c (main): When stdout is in binary mode, make sure all
+ input files are also read in binary mode.
+
+1999-05-16 Jim Meyering <meyering@ascend.com>
+
+ * Version 1.22l.
+
+1999-05-11 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c: Don't autodetect the locale of numbers and
+ months, as this conflicts with POSIX.2 and is tricky to boot.
+
+ (FLOATING_COMMA, NLS_STRNCMP, NLS_MAX_GROUPS,
+ NLS_ONE_CHARACTER_STRING): Remove macros no longer used.
+
+ (nls_grouping, nls_fraction_found, nls_month_found, nos_monthtab,
+ nls_months_collide, nls_keyhead, us_monthtab): Remove variables no
+ longer used.
+
+ (struct nls_keyfield): Remove types no longer used.
+
+ (strncoll_s2_readonly, nls_set_fraction, look_for_fraction,
+ nls_month_is_either_locale, nls_numeric_format): Remove functions no
+ longer used.
+
+ (monthtab): Now has the role that us_monthtab had, but it's const only
+ if ENABLE_NLS is not defined.
+
+ (C_DECIMAL_POINT): Renamed from FLOATING_POINT. All uses changed.
+ (MONTHS_PER_YEAR): Renamed from NLS_NUM_MONTHS. All uses changed.
+ (struct_month_cmp): Renamed from nls_sort_month_comp. All uses changed.
+ Use strcmp, not strcoll, since the user doesn't care about collating
+ here.
+
+ (inittables): Read locale data into monthtab, rather than modifying a
+ separate month table and futzing with indirection. Do not worry about
+ colliding months, since we no longer autodetect month locale.
+
+ (fraccompare): Don't set no-longer-used variable nls_fraction_found.
+
+ (getmonth): Use strncmp to compare months, since user doesn't care
+ about collating here. Fix bug where code incorrectly assumed that
+ strlen (monthtab[lo].name) == strlen (monthtab[ix].name).
+
+ (keycompare, main): Don't autodetect month locale.
+
+ (compare): Don't use NLS_MEMCP in code that can't be executed if
+ need_locale is false, as NLS_MEMCP is equivalent to memcmp in that
+ case.
+
+ (sort, insertkey, main): Don't autodetect numeric locale.
+
+1999-05-15 Jim Meyering <meyering@ascend.com>
+
+ * tests/join/Test.pm (trailing-sp): New test for this fix.
+ * src/join.c (xfields): Don't interpret a trailing blank as a
+ delimiter when e.g. -t: was specified. From Tim Smithers.
+
+1999-05-12 Jim Meyering <meyering@ascend.com>
+
+ * tests/Makefile.am (envvar-check): Renamed from check-local.
+ (check): Depend on envvar-check so the envvar check is performed
+ before all other tests. Reported by Volker Borchert.
+ * tests/.env-warn: Use `%%' place-holder that Makefile.am rule expects,
+ so CDPATH is mentioned in the message. Reported by Volker Borchert.
+
+1999-05-11 Jim Meyering <meyering@ascend.com>
+
+ * src/sort.c (usage): Split the --help message into two pieces so that
+ neither is longer than 2048. For Irix4's cc. Reported by Kaveh Ghazi.
+
+1999-05-09 Jim Meyering <meyering@ascend.com>
+
+ * lib/regex.c: Update from libc.
+
+ * Version 1.22k.
+
+ * Makefile.maint (alpha): Put the announcement in
+ /tmp/announce-$(distdir)
+
+ * tests/sort/Test.pm (neg-nls): New test.
+
+1999-05-08 Jim Meyering <meyering@ascend.com>
+
+ * src/system.h (CHAR_BIT, TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM,
+ and all the *_MIN and *_MAX symbols): Remove definitions.
+ * src/sys2.h: Put the definitions here instead (this file is shared
+ between all three *utils packages, while system.h is not).
+
+1999-05-06 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (fraccompare, numcompare): Merge the NLS and
+ non-NLS versions into a single function.
+
+ (decimal_point): Now char, since we no longer convert to unsigned
+ char.
+ (th_sep): Now int, since we use a value out of char range to denote
+ the absence of a thousands separator.
+ (IS_THOUSANDS_SEP): New macro.
+ (USE_NEW_FRAC_COMPARE): Remove.
+ (nls_set_fraction): Arg is now char, not unsigned char.
+ Set th_sep to CHAR_MAX + 1 if there is no thousands separator.
+ (numcompare): Don't convert to unsigned char unless necessary.
+ (main): Turn off decimal points and thousand separators if they
+ are multibyte characters, as we don't support that yet.
+
+1999-05-06 Paul Eggert <eggert@twinsun.com>
+
+ * src/system.h (CHAR_MIN, CHAR_MAX): New macros.
+ (SCHAR_MIN, SCHAR_MAX): Don't assume that char is signed.
+
+1999-05-06 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (numcompare): Handle comparison of two negative
+ numbers correctly in the ENABLE_NLS case.
+
+1999-05-04 Jim Meyering <meyering@ascend.com>
+
+ * src/pr.c (usage): Break the usage message into 3 pieces instead of
+ only 2. The strings had grown to be longer than 2048, which evokes
+ errors when compiling with Irix4's cc. Reported by Kaveh Ghazi.
+
+ * src/tsort.c (search_item): Use `1' instead of `+1'. The latter
+ elicits a syntax error from SunOS4's cc. From Kaveh Ghazi.
+
+1999-05-03 Jim Meyering <meyering@ascend.com>
+
+ * src/ptx.c <ctype.h>: Don't include.
+ [!STDC_HEADERS]: Remove definitions of ctype macros.
+ Convert e.g., isspace to ISSPACE to use definitions from sys2.h.
+ Reported by Kaveh Ghazi.
+
+ * src/sys2.h (TOLOWER): Define.
+ (TOUPPER): Define.
+ * src/join.c (TOLOWER): Remove definition.
+ * src/md5sum.c (TOLOWER): Remove definition.
+
+1999-04-30 Jim Meyering <meyering@ascend.com>
+
+ * src/sort.c (usage): Document the differences between the
+ obsolescent, +POS1[-POS2] form, and the POSIX -k option.
+
+1999-04-24 Jim Meyering <meyering@ascend.com>
+
+ * configure.in: Use AC_CANONICAL_HOST.
+
+ * lib/Makefile.am (libtu_a_SOURCES): Add xstrtoumax.c
+ (noinst_HEADERS): Remove xstrtoul.h.
+
+ * src/csplit.c: Include new "xstrtol.h", not "xstrtoul.h".
+ (struct control) [repeat]: Declare as uintmax_t, not int.
+ (struct control) [lines_required]: Likewise.
+ (handle_line_error): Use human_readable to print lines_required.
+ (parse_repeat_count): Parse a uintmax_t.
+ (parse_patterns): Parse a uintmax_t.
+
+ * src/tail.c: Include new "xstrtol.h", not "xstrtoul.h".
+ * src/od.c: Likewise.
+
+ * src/head.c: Include new "xstrtol.h", not "xstrtoul.h".
+ Change all U_LONG_LONG to uintmax_t.
+ (head_lines): Move a couple dcls into an inner scope.
+ (string_to_integer): Rename from string_to_ull.
+
+1999-04-19 Jim Meyering <meyering@ascend.com>
+
+ * Makefile.maint (b_host): Remove /pub suffix.
+
+1999-04-18 Jim Meyering <meyering@ascend.com>
+
+ * Version 1.22j.
+
+ * Makefile.maint (my-distcheck): Use AMTAR, not TAR.
+
+ * src/sort.c (usage): s/DIRECT/DIRECTORY/g
+ Rename global: s/temp_file_prefix/temp_dir/.
+ (NAME_MAX_IN_DIR): Rename from PATH_MAX_IN_DIR. Use _POSIX_NAME_MAX,
+ not _POSIX_PATH_MAX. Guard with #if HAVE_PATHCONF rather than
+ #if HAVE_UNISTD_H.
+ (tempname): Wrap after 99999 only for length-impaired file systems.
+
+1999-04-17 Jim Meyering <meyering@ascend.com>
+
+ * src/tail.c (file_lines): Fix serious bug introduced with last changes.
+ From Andreas Schwab.
+
+1999-04-15 Jim Meyering <meyering@ascend.com>
+
+ * tests/Makefile.am (EXTRA_DIST): Rename .posix-warn to .env-warn.
+ (check-local): Warn about CDPATH in the same way
+ we warn about POSIXLY_CORRECT, since the cp/same-file test fails at
+ least when using bash with CDPATH set. Reported by Mark Hewitt.
+
+ * src/pr.c Add comments.
+ (init_header): Tweak white space in Date/Time header.
+ * tests/pr/Test.pm: Updated all tests to reflect the big
+ 1999-02-13 change. From Roland Huebner.
+
+1999-04-12 Jim Meyering <meyering@ascend.com>
+
+ * src/cat.c (main): Declare out_dev to be of type dev_t, not `int'.
+ Declare out_ino to be of type ino_t, not `int'.
+ From John Bley.
+
+ * src/od.c (MIN, MAX): Remove definitions.
+ * src/sys2.h (MIN, MAX): Define here instead.
+ Reported by John Bley.
+
+1999-04-11 Jim Meyering <meyering@ascend.com>
+
+ * Version 1.22i.
+
+ * tests/pr/Test.pm (test_vector): Disable all tests while I wait for
+ an updated suite.
+
+ Fix the problem whereby `yes > k & sleep 1; tail -2c k' would infloop.
+ * src/tail.c (COPY_TO_EOF): Define.
+ (dump_remainder): Add parameter, n_bytes, and rewrite to use it.
+ Update callers.
+ (file_lines): Rename parameter.
+ (tail_bytes): Remove obsolete comment.
+
+ Fix the problem whereby `yes > k & sleep 1; tail -1 k' would infloop.
+ * src/tail.c (dump_remainder): Move this function to precede the
+ new use in file_lines.
+ (tail_lines): Don't call dump_remainder here.
+ (file_lines): Call dump_remainder here instead.
+ Reported by Lehti Rami.
+
+ * lib/readtokens.c (readtoken, readtokens): Protoize.
+
+1999-04-10 Jim Meyering <meyering@ascend.com>
+
+ * src/tail.c (xwrite): Use STDOUT_FILENO instead of literal `1'.
+
+1999-04-04 Jim Meyering <meyering@ascend.com>
+
+ * src/cat.c: Standardize --help and --version processing.
+ * src/comm.c: Likewise.
+ * src/csplit.c: Likewise.
+ * src/cut.c: Likewise.
+ * src/expand.c: Likewise.
+ * src/fmt.c: Likewise.
+ * src/fold.c: Likewise.
+ * src/head.c: Likewise.
+ * src/join.c: Likewise.
+ * src/md5sum.c: Likewise.
+ * src/nl.c: Likewise.
+ * src/od.c: Likewise.
+ * src/paste.c: Likewise.
+ * src/pr.c: Likewise.
+ * src/ptx.c: Likewise.
+ * src/split.c: Likewise.
+ * src/sum.c: Likewise.
+ * src/tac.c: Likewise.
+ * src/tail.c: Likewise.
+ * src/tr.c: Likewise.
+ * src/unexpand.c: Likewise.
+ * src/uniq.c: Likewise.
+ * src/wc.c: Likewise.
+
+1999-03-29 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (GNU_PACKAGE): Remove related code -- now it's in
+ the catch-all for shared autoconf code, m4/jm-macros.m4.
+ (jm_CHECK_ALL_TYPES): Remove explicit AC_TYPE_* macros and use
+ this instead.
+
+1999-03-26 Jim Meyering <meyering@ascend.com>
+
+ * lib/Makefile.am (libfu_a_SOURCES): Add version-etc.c.
+ (noinst_HEADERS): Add version-etc.h.
+
+1999-03-25 Jim Meyering <meyering@ascend.com>
+
+ * src/tail.c (recheck): Factor out a block of duplicated code.
+ Set f->size to 0 upon encountering a new file so we read it from
+ the beginning rather than from the end of the first line or
+ block. Otherwise, after a log rotation, tail would omit the first
+ line or block of the new file. Reported by Ed Avis.
+
+1999-03-20 Jim Meyering <meyering@ascend.com>
+
+ * tests/Makefile.am (SUBDIRS): Temporarily remove pr.
+
+1999-03-13 Jim Meyering <meyering@ascend.com>
+
+ * src/tac.c (tac_mem): `#if-0'-out this unused function.
+ (tac_stdin_to_mem): Likewise.
+
+ * doc/textutils.texi (cut invocation): Describe --output-delimiter.
+
+1999-03-12 Jim Meyering <meyering@ascend.com>
+
+ * src/sys2.h (SETVBUF): Define new macro.
+ * src/tail.c (dump_remainder): Don't fflush stdout here.
+ (main) [if forever]: Make stdout unbuffered, instead.
+ Akim Demaille pointed out that when running `echo x>a; tail -f a>>a' ,
+ the file `a' didn't grow longer than two lines. Now it grows
+ without bound.
+
+1999-03-07 Jim Meyering <meyering@ascend.com>
+
+ * tests/md5sum/newline-1: Test for the actual feature.
+ With help from Eli Zaretskii.
+
+ * src/pr.c (usage): Add missing \n\.
+
+ The newline test would always fail on MSDOS/Windows systems --
+ so move it to a separate file where we can test for that.
+ * tests/md5sum/basic-1: Remove newline test.
+ * tests/md5sum/newline-1: New file.
+ * tests/md5sum/Makefile.am (TESTS): Add newline-1.
+ Pointed out by Eli Zaretskii.
+
+ 1999-02-13 Roland Huebner <rh@pelikan.cologne.de>
+ * src/pr.c
+ (main): Redefine options -s, -w to be POSIX compliant; introduce
+ new options -J, -S, -W to disentangle -s and -w when used together
+ with the three column options;
+ (add_line_number): Make POSIX compliant; use default number
+ separator TAB with single column output.
+ (add_line_number): Make POSIX compliant; with multicolumn output
+ now prefer `text columns of equal width' rather than a consequent
+ use of `default n-separator TAB'.
+ (add_line_number): Change line number cut-off from lower-oder to
+ higher-oder digit to avoid loss of information; no consequent
+ handling exists in different utilities and other UNIXes.
+ (char_to_clump): Expand input text tabs to 8 spaces, if
+ input_tab_char doesn't equal TAB (adapted to other UNIXes).
+ (usage): Update POSIX compliant options -s, -w; add new options -J,
+ -S, -W.
+ (main): Update the source internal documentation.
+ Some smaller BUGFIXES (print_sep_string, init_header, skip_to_page,
+ reset_status, print_header).
+
+ * tests/md5sum/basic-1 (backslash): Use .\foo instead of \.foo so we
+ don't tramp on root directory in MSDOS/Windows.
+ Suggestion from Eli Zaretskii.
+
+ 1999-02-15 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * tests/md5sum/Makefile.am (TESTS_ENVIRONMENT): Run md5sum with the
+ --text option (for MSDOS).
+
+1999-03-06 Jim Meyering <meyering@ascend.com>
+
+ * src/cut.c (getstr): Change type of `delim' parameter from char to int.
+ (cut_fields): Cast to `unsigned char' before comparing.
+ (main): Cast to `unsigned char' before assigning.
+ From Arne Juul.
+ * tests/cut/Test.pm: Add a test to exercise the bug.
+
+ * src/ptx.c (swallow_file_in_memory): Use a `%s' format in error call,
+ in case the argument string contains a `%'.
+ (main): Likewise.
+ * src/fmt.c (main): Likewise.
+ * src/sort.c (main): Likewise.
+
+ 1999-02-13 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * src/sys2.h [__DJGPP__]: Include <io.h> and <sys/exceptn.h>.
+
+ * src/ptx.c (swallow_file_in_memory): Slurp up the whole file at
+ once on MSDOS as well, but we have to relax the test for whether
+ reading it succeeded.
+
+1999-03-03 Jim Meyering <meyering@ascend.com>
+
+ * src/cat.c: Include long-options.h
+ [long_options]: Remove the "help" and "version" entries.
+ Remove declarations of show_help and show_version.
+ (main): Use parse_long_options, including author name(s).
+ Remove the show_version and show_help blocks.
+ * src/cksum.c: Likewise.
+ * src/comm.c: Likewise.
+ * src/csplit.c: Likewise.
+ * src/cut.c: Likewise.
+ * src/expand.c: Likewise.
+ * src/fmt.c: Likewise.
+ * src/fold.c: Likewise.
+ * src/head.c: Likewise.
+ * src/nl.c: Likewise.
+ * src/od.c: Likewise.
+ * src/paste.c: Likewise.
+ * src/pr.c: Likewise.
+ * src/split.c: Likewise.
+ * src/sum.c: Likewise.
+ * src/tac.c: Likewise.
+ * src/tail.c: Likewise.
+ * src/tr.c: Likewise.
+ * src/unexpand.c: Likewise.
+ * src/uniq.c: Likewise.
+ * src/wc.c: Likewise.
+
+ * src/ptx.c: Include long-options.h
+ [long_options]: Remove the "help" and "version" entries.
+ Remove declarations of show_help and show_version.
+ (main): Remove `const' attribute from dcl of argv parameter.
+ Call bindtextdomain and textdomain.
+ Use parse_long_options, including author name(s).
+ Remove the show_version and show_help blocks.
+
+ * src/join.c (main): Include author name argument in call to
+ parse_long_options.
+ * src/md5sum.c (main): Likewise.
+ * src/sort.c (main): Likewise.
+ * src/tsort.c (main): Likewise.
+
+1999-02-07 Jim Meyering <meyering@ascend.com>
+
+ * Version 1.22h.
+
+ * Makefile.maint (my-distcheck): Don't depend on dist, now that this
+ is hooked up to the distcheck rule.
+ * Makefile.am (distcheck-hook): New target and rule -- link to shared
+ rule, my-distcheck, in Makefile.maint.
+
+1999-01-31 Jim Meyering <meyering@ascend.com>
+
+ * doc/textutils.texi: Wrap the @top node in @ifnottex instead of
+ @ifinfo so `makeinfo --html ...' works. From Karl Berry.
+
+1999-01-30 Jim Meyering <meyering@ascend.com>
+
+ * acconfig.h: Remove lots of `#undef's, now that we use the
+ 3-argument forms of AC_DEFINE* macros.
+
+ * configure.in: Require autoconf 2.13.
+ Use 3-argument form of AC_DEFINE*.
+
+1999-01-24 Jim Meyering <meyering@ascend.com>
+
+ * src/tac.c (DONT_UNLINK_WHILE_OPEN) [__MSDOS__ || _WIN32]: Define.
+
+ * lib/quotearg.c (quotearg_n_options): Revert type of parameter `n'
+ (and hence that of the local `n1', too) to `int' at Paul's request.
+
+1999-01-18 Akim Demaille <demaille@inf.enst.fr>
+
+ * doc/textutils.texi: Harmonization of @samp use for options.
+
+1999-01-17 Jim Meyering <meyering@ascend.com>
+
+ * Makefile.am (SUBDIRS): Add djgpp.
+ * configure.in (AC_OUTPUT): Add djgpp/Makefile.
+ * djgpp/: New directory.
+
+ * man/Makefile.maint ($(man_MANS)): Don't remove the target (the
+ man page) until after we've created its replacement.
+
+1999-01-16 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * GNUmakefile: Add SHELL = /bin/sh.
+ * man/GNUmakefile: Likewise.
+
+1999-01-16 Jim Meyering <meyering@ascend.com>
+
+ * acconfig.h: Remove @BOTTOM@ section.
+ Instead, add the define and decl via m4/jm-macros.m4.
+
+ * lib/argmatch.h (XARGMATCH): Define to return a value once again.
+ (XARGCASEMATCH): Likewise.
+
+ * lib/argmatch.c (EXIT_FAILURE): Define.
+ (ARGMATCH_DIE): Provide default.
+ (__xargmatch_internal): New function.
+ s/rogram_name/program_name.
+ From Akim Demaille.
+
+1999-01-14 Jim Meyering <meyering@ascend.com>
+
+ * tests/md5sum/basic-1: Use `f', not `x' as temp. file name to avoid
+ warnings from perl5.004.
+ Reported by Volker Borchert.
+
+ * lib/long-options.c (parse_long_options): Rename `usage' parameter
+ to avoid shadowing globally scoped function.
+
+1999-01-14 Akim Demaille <demaille@inf.enst.fr>
+
+ * acconfig.h: Add a @BOTTOM@ section.
+ (ARGMATCH_DIE) [@BOTTOM@]: Define to usage(1).
+ Declare usage.
+ * src/*.c: Don't prototype usage as static.
+
+1999-01-10 Jim Meyering <meyering@ascend.com>
+
+ * Version 1.22g.
+
+ All of the following new code is protected by
+ `#if DONT_UNLINK_WHILE_OPEN'
+ * src/tac.c (file_to_remove): New global.
+ (fp_to_close): New global.
+ (unlink_tempfile): New function.
+ (record_tempfile): New function.
+ (save_stdin): Call record_tempfile.
+ Use SET_BINARY.
+ (main): Use SET_BINARY and SET_BINARY2.
+ From Eli Zaretskii.
+
+1999-01-09 Jim Meyering <meyering@ascend.com>
+
+ * tests/uniq/Test.pm: Add tests from Jochen Hein.
+ * src/uniq.c: New option: --all-repeated (-D).
+ (output_all_repeated) [output_mode]: New enum value.
+ (usage): Describe it.
+ (writeline): Test for new mode.
+ (check_file): Likewise.
+ Based on patches from Jochen Hein and Florin Iucha.
+ (main): Diagnose `too many arguments'.
+
+ * tests/head/Test.pm (null-1): Add test from Jochen Hein.
+
+ * src/tail.c (parse_obsolescent_option): Interpret `number' as decimal.
+ (parse_options): Likewise.
+ Reported by Kamal Paul Nigam.
+
+ * src/tail.c: New option: --max-unchanged-stats=N.
+ New option: --max-n-consecutive-size-changes=N.
+
+1999-01-03 Jim Meyering <meyering@ascend.com>
+
+ * src/md5sum.c (usage): Remove third program_name argument -- there
+ were only two `%s' in the format string.
+
+1999-01-02 Jim Meyering <meyering@ascend.com>
+
+ * src/tsort.c (tsort): Use a single call to error instead of two
+ to fprintf.
+ (main): Remove `%s: ' prefix on format string.
+
+ * src/tail.c (parse_options): Use XARGMATCH in place of argmatch.
+
+ * src/ptx.c (format_vals): New array.
+ (main): Use XARGMATCH in place of argmatch.
+
+ * lib/argmatch.h (XARGMATCH): Don't return a value; instead,
+ modify a parameter. Add a `Die_stmt' parameter.
+ Add parentheses.
+ * lib/argmatch.c (__xargmatch_internal): Remove now-unused function.
+ (argmatch_to_argument): Add `const' attribute to first parameter.
+
+1999-01-01 Jim Meyering <meyering@ascend.com>
+
+ * src/tsort.c: Move inclusion of assert.h to follow that of stdio.h.
+ Some losing systems require this.
+ Use STREQ macro instead of strcmp in a few places.
+
+ * po/POTFILES.in: Add tsort.c.
+
+ * man/Makefile.maint ($(man_MANS)): `exit 1' if any of help2man,
+ chmod, or mv fails. Otherwise, the failure could go unnoticed.
+
+ * man/Makefile.summ: Add entries for ptx and tsort.
+
+ * src/tsort.c: Include readtokens.h.
+ (zeros): Rename global from `rr'.
+ (getstr): Remove function.
+ (tsort) Use readtoken instead of getstr.
+
+ * lib/readtokens.c: New file.
+ * lib/readtokens.h: New file.
+ * lib/Makefile.am (libtu_a_SOURCES): Add readtokens.c.
+ (noinst_HEADERS): Add readtokens.h.
+
+ * man/Makefile.am (man_MANS): Add ptx.1.
+ * man/ptx.x: New file.
+
+ * src/tail.c (parse_options): Use XARGMATCH in place of argmatch.
+
+ * man/Makefile.am (man_MANS): Add tsort.1.
+ * man/tsort.x: New (essentially empty) file.
+
+ * src/tsort.c: Rename globals N and R so they don't shadow locals.
+ (tsort): Rename from `sort'.
+
+ 1998-11-07 Mark Kettenis <kettenis@phys.uva.nl>
+ * src/Makefile.am (bin_PROGRAMS): Add tsort.
+ * src/tsort.c: New program.
+
+ * lib/Makefile.am (libtu_a_SOURCES): Add quotearg.c.
+ (noinst_HEADERS): Add quotearg.h.
+
+ ============================
+ All of the following are from:
+ 1998-04-17 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * src/system.h (SET_BINARY, SET_BINARY2, fileno, setmode): New
+ macros.
+
+ * src/cat.c (usage) [O_BINARY]: Describe -B,--binary option.
+ (main) [O_BINARY]: binary_files, binary_output, file_open_mode:
+ new variables. Add --binary to long_options[]. Switch stdin and
+ stdout to binary mode unless file contents are not important
+ anyway. Open files in binary mode when required.
+
+ * src/cksum.c (cksum) [O_BINARY]: Read redirected stdin in binary
+ mode.
+
+ * src/expand.c (expand): Use binary I/O where appropriate.
+
+ * src/head.c (head_bytes, head_lines) [O_BINARY]: Use binary I/O.
+
+ * src/md5sum.c (OPENOPTS) [O_BINARY]: Use binary I/O when non-zero
+ argument.
+ (md5_file) [O_BINARY]: Switch redirected stdin to binary mode.
+ (main) [O_BINARY]: Use binary reads by default on those systems
+ which care about the difference.
+
+ * src/od.c (skip, read_char, read_block) [O_BINARY]: Switch input
+ stream to binary mode.
+
+ * src/sort.c (PATH_MAX_IN_DIR) [HAVE_UNISTD_H]: New macro, for max
+ file name characters in a given directory.
+ (tempname): Make sure the temp file name is unique even if long
+ file names aren't supported.
+
+ * src/split.c (cwrite) [O_BINARY]: Write output in binary mode.
+ (main) [O_BINARY]: Read input in binary mode.
+
+ * src/sum.c (bsd_sum_file, sysv_sum_file) [O_BINARY]: Read input
+ in binary mode.
+
+ * src/tac.c (record_tempfile, unlink_tempfile)
+ [DONT_UNLINK_WHILE_OPEN]: New functions, for systems where a file
+ cannot be removed before it is closed.
+ (save_stdin) [DONT_UNLINK_WHILE_OPEN]: Record the temporary file,
+ to be removed before exit.
+ (tac_file, save_stdin, main): Use binary I/O when appropriate.
+
+ * src/tail.c (tail_lines, tail_bytes) [O_BINARY]: Use binary I/O
+ when appropriate.
+
+ * src/tr.c (main) [O_BINARY]: Use binary I/O when appropriate.
+
+ * src/unexpand.c (unexpand): Use binary I/O where appropriate.
+
+ * src/wc.c (wc): Use binary mode for input.
+
+ * doc/textutil.texi: Add comments about peculiarities of Textutils
+ operation on MS-DOS/MS-Windows.
+
+1998-12-22 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (ALL_LINGUAS): Add chinese (zh).
+
+1998-12-17 Jim Meyering <meyering@ascend.com>
+
+ New options for tail:
+ --follow=name, --follow=descriptor, --allow-missing
+ * src/tail.c (Follow_mode): New enum.
+ (n_live_files): New function.
+ (tail_forever): Avoid starvation with --follow=name and a
+ continually-growing unlinked or renamed file.
+
+1998-12-13 Jim Meyering <meyering@ascend.com>
+
+ * tests/uniq/Test.pm: New file.
+ * tests/uniq/Makefile.am: New file.
+ * tests/uniq: New directory.
+ * tests/Makefile.am (SUBDIRS): Add uniq.
+ * configure.in (AC_OUTPUT): Add tests/uniq/Makefile.
+ From Jochen Hein.
+
+ * lib/Makefile.am (lstat.c): Add rule to generate this from xstat.in.
+ (stat.c): Likewise.
+ (EXTRA_DIST): Add xstat.in.
+ * lib/stat.c: Remove file.
+ * lib/lstat.c: Remove file.
+ * lib/xstat.in (xstat@): New file.
+
+ * configure.in (ALL_LINGUAS): Add Russian (ru).
+
+1998-10-31 Jim Meyering <meyering@ascend.com>
+
+ * acconfig.h (stat): New #undef.
+
+1998-10-22 Jim Meyering <meyering@ascend.com>
+
+ * src/fold.c (usage): Add mention of --version and --help.
+ Reported by Matej Vela <mvela@public.srce.hr>.
+
+1998-10-04 Jim Meyering <meyering@ascend.com>
+
+ * lib/fnmatch.h: New file. (unused)
+ * lib/fnmatch.c: New file. (unused)
+ * lib/Makefile.am (noinst_HEADERS): Add fnmatch.h.
+
+1998-10-03 Jim Meyering <meyering@ascend.com>
+
+ * man/Makefile.am: Switch to using help2man.
+ (EXTRA_DIST): Add Makefile.summ.
+
+ * man/help2man: Invoke program with --manhelp option only if
+ --name=STRING not specified. Otherwise, this would fail with `yes'.
+ * man/Makefile.summ: New file.
+ * man/Makefile.maint: Include it.
+ * man/help2man: New file.
+ * man/GNUmakefile: New file.
+ * man/Makefile.maint: New file.
+ * man/*.x: New files.
+ * man/*.1: Remove files.
+
+ * src/md5sum.c (split_3): Rename local variable, to `escaped_filename'.
+ (main): Output the leading backslash not just when there's a newline
+ in the file name, but also when there's a backslash.
+ Reported by Jim Dennis.
+
+ * tests/md5sum/basic-1: Add tests with filenames containing newline
+ and backslash characters. (for the bug fixed above)
+
+ * tests/Makefile.am (EXTRA_DIST): Add Fetish.pm.
+ * tests/Fetish.pm: New file.
+
+ * tests/md5sum/basic-1: New file: rewrite of old tests to use Fetish.pm.
+ * tests/md5sum/Test.pm: Remove file.
+ * tests/md5sum/Makefile.am: Rewrite.
+
+1998-09-19 Jim Meyering <meyering@ascend.com>
+
+ * src/ptx.c (program_name): Declare *not* to be const.
+
+1998-08-29 Jim Meyering <meyering@ascend.com>
+
+ * src/cut.c: Don't assume ASCII.
+ * src/pr.c: Likewise.
+ * src/tail.c: Likewise.
+
+1998-08-15 Jim Meyering <meyering@ascend.com>
+
+ * src/pr.c (usage): Reformat.
+
+ * src/ptx.c: Add braces to suppress warning about ambiguous `else'.
+ * lib/bumpalloc.h: Likewise.
+
+1998-08-13 François Pinard <pinard@iro.umontreal.ca>
+
+ * src/ptx.c: New file.
+ * src/Makefile.am (bin_PROGRAMS): Add ptx.
+ * lib/bumpalloc.h, lib/diacrit.h, lib/diacrit.c: New files.
+ * lib/Makefile.am (libtu_a_SOURCES): Add diacrit.c.
+ (noinst_HEADERS): Add bumpalloc.h and diacrit.h.
+
+1998-08-09 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * src/pr.c (long_options): Add long names for all options.
+ (usage): Update help string.
+ (main): Handle the special options --pages and --columns.
+
+1998-08-02 Jim Meyering <meyering@ascend.com>
+
+ * lib/linebuffer.c (readline): Return zero upon error as well as upon
+ end of file. From James Youngman.
+ Ansideclify.
+
+1998-08-01 Jim Meyering <meyering@ascend.com>
+
+ * src/sort.c (my_setlocale): Guard definition within #ifdef ENABLE_NLS.
+ From Manfred Hollstein.
+
+1998-07-30 Jim Meyering <meyering@ascend.com>
+
+ * tests/cut/Test.pm: Avoid broken pipe message for tests that fail
+ with usage errors.
+
+ * src/sort.c (usage): Add angle brackets to make `Report bugs...'
+ message consistent with all the rest.
+
+1998-07-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * tests/cut/Test.pm: Avoid broken pipe for 'y' and 'z' tests.
+
+ * src/sort.c (NEGATION_SIGN): Renamed from NEGATIVE_SIGN to avoid
+ clash with <langinfo.h>. All uses changed.
+
+1998-07-26 Jim Meyering <meyering@ascend.com>
+
+ * intl/localealias.c (read_alias_file): Avoid mixing `char*' and
+ `unsigned char*' variables. Again for irix4.
+ Mostly from Kaveh Ghazi.
+
+ * src/join.c: Convert some char* dcls to `unsigned char*' and remove
+ a cast -- to placate irix4's cc.
+ * src/fmt.c (check_punctuation): Add cast to placate irix4's cc.
+ Reported by Kaveh Ghazi.
+
+ * src/md5sum.c (split_3): Add cast to placate irix4's cc.
+ From Kaveh Ghazi.
+
+1998-07-25 Jim Meyering <meyering@ascend.com>
+
+ * Version 1.22f.
+
+ * tests/cut/Test.pm: Add tests for new --output-delimiter option,
+ as well as for NUL input delimiter (--delimiter='').
+ * src/cut.c (cut_fields): Honor new --output-delimiter option.
+ (main): Fix handling of --delimiter='' (-d ''). Until now, it has
+ never worked as advertised. I guess no one tried it.
+
+ * tests/sort/Test.pm: Add two tests relating to this.
+ * src/sort.c (main): Stat all non-`-' input file files (and fail if a
+ stat fails) when an output file is specified by `-o' but doesn't exist.
+ Reported by Will Edgington.
+
+ * tests/sort/Test.pm: New tests of -o.
+
+1998-07-16 Jim Meyering <meyering@ascend.com>
+
+ * lib/Makefile.am (noinst_HEADERS): Add lchown.h.
+ * lib/lchown.h: New file, just to define ENOSYS on systems that lack it.
+ * lib/lchown.c: Include lchown.h.
+
+1998-07-04 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (AM_WITH_REGEX): Remove. Now the replacement
+ macro, jm_WITH_REGEX, is bundled with the rest in jm_MACROS.
+ * acconfig.h (WITH_REGEX): Remove undef.
+ * src/csplit.c: Remove #ifdef around <regex.h> inclusion.
+ * src/nl.c: Likewise.
+ * src/tac.c: Likewise.
+ * src/csplit.c (extract_regexp): Remove #if !WITH_REGEX...#endif block.
+ * lib/Makefile.am (noinst_HEADERS): Remove rx.h.
+ * lib/rx.c: Remove file.
+ * lib/rx.h: Remove file.
+
+1998-06-29 Jim Meyering <meyering@ascend.com>
+
+ * src/wc.c: Update calls to human_readable -- now there's one fewer arg.
+
+ * lib/Makefile.am (libtu_a_SOURCES): Add argmatch.c.
+ (noinst_HEADERS): Add argmatch.h.
+
+1998-06-28 Jim Meyering <meyering@ascend.com>
+
+ * src/sys2.h: Add macro definitions for GNU libc *_unlocked wrappers.
+
+1998-06-27 Jim Meyering <meyering@ascend.com>
+
+ * tests/pr/Test.pm: Add two tests for double spacing.
+ * src/pr.c (print_page): If cols_ready_to_print is zero,
+ break out of loop just before the double-space test.
+ Reported by Michael Stutz.
+
+1998-06-18 Jim Meyering <meyering@ascend.com>
+
+ * tests/Makefile.am.in (check): Depend on $(maint_gen) so
+ `make maintainer-clean; ./configure; make check' works.
+
+1998-05-25 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (_GNU_SOURCE): AC_DEFINE it here.
+ * acconfig.h (_GNU_SOURCE): Remove definition from @TOP@ section.
+ [!_GNU_SOURCE]: Add #undef instead.
+
+1998-05-16 Jim Meyering <meyering@ascend.com>
+
+ * configure.in (jm_MACROS): New wrapper macro.
+ Remove uses of most jm_* macros.
+
+ * src/tac.c (tac_seekable): Fix error in handling regex separators.
+ * tests/tac/Test.pm (opt-b, opt-s, opt_sb, opt_r): New tests.
+ (opt_br): New test -- exercises above-fixed bug.
+
+ * lib/Makefile.am (EXTRA_DIST): Remove. Automake groks the `LIBOBJS='
+ lines from the m4/*.m4 macros, so the hack of including some
+ custom-replaced C source file names here is no longer needed.
+
+ * acconfig.h (chown): Add undef.
+ (D_INO_IN_DIRENT): Likewise.
+ (D_TYPE_IN_DIRENT): Likewise.
+ (ssize_t): Likewise.
+
+1998-05-09 Jim Meyering <meyering@ascend.com>
+
+ * src/tac.c (tac_seekable): Rename from tac_stream.
+ Change `FILE *in' parameter to `int input_fd'. Adjust callers.
+
+1998-05-03 Jim Meyering <meyering@ascend.com>
+
+ * po/: Update from gettext-0.10.35.
+ * intl/: Likewise.
+ * configure.in: Remove use of AC_LINK_FILES.
+ (AC_OUTPUT): Remove po/Makefile-generating sed command.
+
+1998-04-26 Jim Meyering <meyering@ascend.com>
+
+ * tests/tail/Test.pm: Disable test f-1, now that it fails.
+
+ * src/sort.c (keycompare) (CMP_WITH_IGNORE): Don't return 0 from inside
+ the keyspec-iterating loop. With this change, test 22a passes.
+ Reported by Zvi Har'El.
+ (strncoll): Remove bogus assertion.
+ * tests/sort/Test.pm: Add tests for the above fix.
+
+ * configure.in: Use jm_ASSERT.
+ * acconfig.h: Add NDEBUG.
+
+ * src/cut.c: Don't define NDEBUG.
+ * src/csplit.c: Likewise.
+ * src/join.c: Likewise.
+ * src/sort.c: Likewise.
+ * src/tr.c: Likewise.
+
+ * src/cut.c: Don't define _GNU_SOURCE (now it's in config.h).
+ * src/expand.c: Likewise.
+ * src/fold.c: Likewise.
+ * src/join.c: Likewise.
+ * src/sort.c: Likewise.
+ * src/tr.c: Likewise.
+ * src/unexpand.c: Likewise.
+ * src/uniq.c: Likewise.
+
+ * src/tail.c (close_fd): New function -- converted from macro.
+ [struct File_spec] (n_stat_calls): New member.
+ [struct File_spec] (n_unchanged_stats): New member.
+ (max_n_unchanged_stats): New global.
+ Initialize new members.
+ (xwrite): New function -- converted from macro.
+ [struct File_spec] (pretty_name): Remove member.
+ (pretty_name): New function.
+
+ * src/md5sum.c (md5_check): Declare local, `md5num' as _unsigned_ char*.
+ (hex_digits): Declare parameter `s' as _unsigned_ char*.
+ (split_3): Declare parameter `u' as _unsigned_ char**.
+
+1998-04-17 Jim Meyering <meyering@ascend.com>
+
+ * src/fmt.c (check_punctuation): Used unsigned char* pointers to avoid
+ new warning.
+ * src/join.c (xfields): Likewise.
+
+1998-04-12 Jim Meyering <meyering@ascend.com>
+
+ * src/cat.c: Use STREQ macro rather than strcmp.
+ * src/cksum.c: Likewise.
+ * src/comm.c: Likewise.
+ * src/csplit.c: Likewise.
+ * src/cut.c: Likewise.
+ * src/fmt.c: Likewise.
+ * src/fold.c: Likewise.
+ * src/head.c: Likewise.
+ * src/join.c: Likewise.
+ * src/md5sum.c: Likewise.
+ * src/nl.c: Likewise.
+ * src/paste.c: Likewise.
+ * src/pr.c: Likewise.
+ * src/split.c: Likewise.
+ * src/sum.c: Likewise.
+ * src/tac.c: Likewise.
+ * src/uniq.c: Likewise.
+ * src/wc.c: Likewise.
+
+1998-04-11 Jim Meyering <meyering@ascend.com>
+
+ * lib/safe-read.h: New file.
+ * lib/safe-read.c: Include it.
+ * src/cat.c: Include it instead of merely declaring safe_read.
+ * src/csplit.c: Likewise.
+ * src/head.c: Likewise.
+ * src/split.c: Likewise.
+ * src/sum.c: Likewise.
+ * src/tac.c: Likewise.
+ * src/tail.c: Likewise.
+ * src/tr.c: Likewise.
+ * src/wc.c: Likewise.
+
+ * lib/Makefile.am (noinst_HEADERS): Add safe-read.h.
+
+ * src/wc.c [HAVE_INTTYPES_H]: Include inttypes.h.
+ Declare counters to be of type uintmax_t.
+ (write_counts): Use human_readable to format potentially-long-long
+ numbers. Suggestion from Rogier Wolff.
+ (wc): Declare per-file counters to be of type uintmax_t.
+ Declare bytes_read to be ssize_t.
+ * lib/Makefile.am (libtu_a_SOURCES): Add human.c.
+ (noinst_HEADERS): Add human.h.
+
+ * lib/human.c: New file.
+ * lib/human.h: New file.
+
+1998-04-04 Jim Meyering <meyering@eng.ascend.com>
+
+ * configure.in (jm_AC_HEADER_INTTYPES_H): Use it.
+ (jm_AC_TYPE_UINTMAX_T): Use it.
+ (jm_PREREQ): Use it.
+
+ * Makefile.am (ACLOCAL_AMFLAGS): Define this, so automake/aclocal
+ know about the m4/ subdirectory.
+ * Makefile.maint (aclocal-files): Remove now-unnecessary (with
+ automake-1.2h and the above change) aclocal-related rules and includes.
+
+1998-04-03 Jim Meyering <meyering@eng.ascend.com>
+
+ * lib/closeout.c: New file.
+ * lib/closeout.h: New file.
+ * lib/Makefile.am (libtu_a_SOURCES): Add closeout.c.
+ (noinst_HEADERS): Add closeout.h.
+
+1998-03-31 Jim Meyering <meyering@eng.ascend.com>
+
+ * lib/xstrtol.c: Merge with the version from fileutils.
+
+1998-03-27 Jim Meyering <meyering@eng.ascend.com>
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Require 1.2h.
+
+1998-03-23 Jim Meyering <meyering@eng.ascend.com>
+
+ * acconfig.h: Remove HAVE_INTTYPES_H, now that m4/inttypes_h.m4
+ automatically handles it.
+
+1998-03-19 Jim Meyering <meyering@eng.ascend.com>
+
+ * src/system.h (SCHAR_MIN): Define.
+ (SHRT_MIN): Define.
+ od.c needs these when compiling with NCR's R2.0c C compiler.
+ (TYPE_MAXIMUM): Cast result to `(t)' so this macro works with
+ `unsigned char'.
+ From Greg Wooledge.
+
+1998-03-15 Jim Meyering <meyering@eng.ascend.com>
+
+ * src/tail.c (tail_file): Merge largely-duplicated blocks of code.
+
+1998-03-03 Paul Eggert <eggert@twinsun.com>
+
+ * src/sort.c (xtmpfopen): Open temporary file exclusively, to
+ foil a common denial-of-service attack.
+ * src/tac.c (save_stdin): Likewise.
+
+1998-02-16 Jim Meyering <meyering@eng.ascend.com>
+
+ * configure.in (jm_FUNC_LSTAT): Use it.
+ (jm_FUNC_STAT): Use it.
+ * lib/Makefile.am (EXTRA_DIST): Add lstat.c and stat.c.
+
+1998-02-06 Jim Meyering <meyering@eng.ascend.com>
+
+ * configure.in: Don't use AM_MAINTAINER_MODE or
+ AC_PATH_PROG(PERL, perl).
+ (jm_PERL): Use this.
+
+1998-02-04 Jim Meyering <meyering@eng.ascend.com>
+
+ * tests/Makefile.am.in (EXTRA_DIST): Remove mk-script.pl.
+ (mk_script): Set to ../mk-script.
+ (x-tests): Use `$(PERL) -w -- $(mk_script)', not ./mk-script.
+ Remove @MAINT@ cruft.
+ (Makefile.am): Likewise.
+ Remove @MAINT@ cruft. Now `missing' will explain the failure
+ when people don't have Perl yet modify a file whose rebuilding
+ would lead to the use of Perl.
+
+ * tests/Makefile.am (EXTRA_DIST): Add mk-script.
+ * tests/*/mk-script.pl: Remove files.
+
+ * GNUmakefile: New file.
+ * Makefile.am (EXTRA_DIST): Add GNUmakefile.
+ Don't include Makefile.maint from here. It's included from GNUmakefile.
+
+1998-01-30 Paul Eggert <eggert@twinsun.com>
+
+ * configure.in (AC_LFS): Put before anything that can affect or use
+ CPPFLAGS, LDFLAGS, or LIBS.
+
+1998-01-25 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Makefile.maint: New file.
+ * Makefile.am: Move rules common to textutils, fileutils, sh-utils
+ into Makefile.maint.
+ Include Makefile.maint.
+ (EXTRA_DIST): Add Makefile.maint.
+
+ * src/cat.c (cat): Convert comma-expressions to pairs of
+ semicolon-terminated stmts.
+ Add braces around compound if/else stmts.
+
+1998-01-24 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/tail.c (parse_obsolescent_option): Do not interpret `-f -n 1 ...'
+ as obsolescent options.
+ Accept new option: --sleep-interval=SECONDS (-s).
+ (parse_options): Recognize it.
+ (usage): Describe it.
+ (tail_forever): Use it.
+ (dump_remainder): Use it.
+ * tests/tail/Test.pm (f-1): Add test for option-processing of `-f -n 1'.
+
+ * tests/cut/: Rename directory to remove `-test' suffix.
+ * tests/join/: Likewise.
+ * tests/md5sum/: Likewise.
+ * tests/pr/: Likewise.
+ * tests/sort/: Likewise.
+ * tests/tr/: Likewise.
+ * configure.in (AC_OUTPUT): Reflect renamings in tests/.
+ * tests/Makefile.am (SUBDIRS): Reflect renamings in tests/.
+
+ * src/system.h (TYPE_MINIMUM): Add extra outer cast to work around
+ bug in Cray C 5.0.3.0 when T == time_t.
+
+1998-01-18 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/sort.c (strncoll, strncoll_s2_readonly, look_for_fraction,
+ numcompare): Remove the `unsigned' from some `unsigned char*'
+ parameter types. Add casts via UCHAR where necessary to avoid
+ problems with unwanted sign extension. Based on a patch from
+ Kaveh Ghazi to appease Irix4's cc compiler.
+
+1998-01-17 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/split.c (next_file_name): Rewrite. This removes an artificial
+ limit (albeit already high, at INT_MAX :-) on the number of files
+ split could create. Reported by Ralf W. Stephan.
+
+1998-01-16 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/sort.c (mergefps): Add braces to avoid ambiguous `else' stmt.
+ (nls_set_fraction): Likewise.
+
+ * src/sort.c: Guard inclusion of langinfo.h also with HAVE_LANGINFO_H,
+ for Irix-4.0.5. From Kaveh Ghazi.
+ * configure.in: Check for langinfo.h.
+
+ * lib/getline.c: Make PARAMS-defining conditionals consistent.
+ * lib/linebuffer.h: Likewise.
+ * lib/long-options.h: Likewise.
+ * lib/memcasecmp.h: Likewise.
+ * lib/xstrtod.h: Likewise.
+ * lib/xstrtol.h: Likewise.
+ Suggestion from Kaveh Ghazi.
+
+ * tests/head/Test.pm (fail-0): Disable test. It depends on
+ sizeof(long) being 32 bits. Reported by Kaveh Ghazi.
+
+1998-01-10 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 1.22d.
+
+ * src/system.h [HAVE_LIMITS_H]: Include limits.h
+ (TYPE_SIGNED): Define.
+ (TYPE_MINIMUM): Define.
+ (TYPE_MAXIMUM): Define.
+ (CHAR_BIT): Define.
+ (SCHAR_MAX): Define.
+ (UCHAR_MAX): Define.
+ (SHRT_MAX): Define.
+ (INT_MAX): Define.
+ (UINT_MAX): Define.
+ (LONG_MAX): Define.
+ (ULONG_MAX): Define.
+ * src/*.c: Remove definitions of those symbols.
+
+ * src/csplit.c: Move inclusion of regex.h/rx.h to follow system.h
+ since it now includes limit.h which defines RE_DUP_MAX.
+ * src/nl.c: Likewise.
+ * src/tac.c: Likewise.
+
+ * lib/xstrtol.c (bkm_scale): Renamed from BKM_SCALE.
+ Rewrite macro as function. Return a value. Update caller.
+ Cast __ZLONG_MAX `__unsigned long int' before casting to double to
+ avoid SunOS /bin/cc compiler bug.
+
+1998-01-08 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/tac-pipe.c: New file. But not yet used.
+ * src/Makefile.am (EXTRA_DIST): Add tac-pipe.c.
+
+ * src/tac.c (tac_stream): Don't perform arithmetic on now-void* pointer
+ result of xrealloc (until recently it was char*).
+
+ * configure.in (AC_CHECK_FUNCS): Add nl_langinfo.
+ * src/sort.c (inittables): Add && HAVE_NL_LANGINFO to the #if-test
+ guarding the nls month-checking code.
+ (nls_numeric_format): Remove unnecessary (and error-evoking w/SunOS' cc)
+ `unsigned' from dcls of text and lim.
+ (main): Cast lconvp->grouping to `unsigned char*' to appease SunOS's cc.
+
+1998-01-03 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (AUTOMAKE_OPTIONS): Define to ../src/ansi2knr.
+
+ * configure.in: Convert the .o suffix on files in LIBOBJS to $U.o so
+ those files will be built via the ANSI2KNR-filtering rules if necessary.
+
+1997-12-25 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in: Remove AC_DEFINE of _GNU_SOURCE.
+ * acconfig.h (_GNU_SOURCE): Define if not already defined.
+ Put this code in @TOP@ section.
+ (_GNU_SOURCE): Remove #undef.
+
+1997-12-22 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in: AC_DEFINE _GNU_SOURCE.
+ * acconfig.h: Add _GNU_SOURCE.
+
+1997-12-21 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_CHECK_HEADERS): Add stdlib.h.
+
+ * src/system.h: Merge in things from fileutils' version of this file.
+ * src/csplit.c: s/__P/PARAMS/.
+ * src/fmt.c: s/__P/PARAMS/.
+ * src/od.c: s/__P/PARAMS/.
+ * src/pr.c: s/__P/PARAMS/.
+
+1997-12-14 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/sys2.h: s/HAVE_DECLARATION_/HAVE_DECL_/g.
+
+1997-12-13 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/fmt.c (main): Add some braces.
+ Check return code from fclose of each input file.
+ Close stdout and check for errors.
+
+ * src/csplit.c (close_output_file): Check ferror before calling fclose.
+ (main): Close stdout and check for errors.
+
+1997-11-15 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acconfig.h: Add mktime.
+ * configure.in (jm_FUNC_MKTIME): Use it.
+ * lib/mktime.c: New file.
+ * lib/Makefile.am (EXTRA_DIST): Add mktime.c
+
+ * intl/Makefile.in (distclean): Don't remove libintl.h here.
+ * Makefile.am (DISTCLEANFILES): Remove it here instead.
+
+1997-11-13 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/strftime.c: Update from FSF.
+ * m4/strftime.m4: Check for POSIX.2's %f format spec.
+
+1997-11-12 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/system.h [!HAVE_MEMPCPY] (mempcpy): Define.
+ * configure.in (AC_CHECK_FUNCS): Add mempcpy.
+
+1997-11-09 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (jm_FUNC_STRFTIME): Use it.
+ * m4/jm-mktime.m4 (jm_FUNC_MKTIME): Check for localtime_r.
+ * m4/strftime.m4 (jm_STRFTIME_PREREQS): Check for localtime_r.
+ (jm_FUNC_GNU_STRFTIME): Use new macro.
+ (jm_FUNC_STRFTIME): New macro. Likewise.
+ Reported by Noel Cragg.
+
+1997-11-08 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * m4/lfs.m4 (AC_LFS): New file/macro.
+ * m4/Makefile.am (EXTRA_DIST): Add lfs.m4.
+ * configure.in (AC_LFS): Use it.
+ (AC_CHECK_FUNCS): Add fseeko.
+ * src/od.c (fseeko): Define a stub if ! HAVE_FSEEKO.
+ (skip): Use fseeko if available. Don't use lseek; it causes
+ the stdio stream to become out of sync with respect to the
+ underyling file descriptor.
+ From Paul Eggert.
+
+1997-10-16 Paul Eggert <eggert@twinsun.com>
+
+ * configure.in (AC_CHECK_FUNCS): Add fseeko.
+
+ * src/od.c (skip): Use fseeko. Don't use lseek; it causes
+ the stdio stream to become out of sync with respect to the
+ underyling file descriptor.
+
+1997-11-06 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/sort.c (getmonth): Remove HAVE_ALLOCA #ifdefs.
+ We always have alloca.
+ (keycompare): Don't use variable size arrays (it's a gcc-extension).
+ Rewrite code that increments new lengths when not `ignoring'.
+
+1997-11-02 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acconfig.h: Add malloc and realloc.
+
+ * src/wc.c (main): New option, --max-line-length (-L).
+ (wc, write_counts): Implement it.
+ From Bruno Haible.
+
+1997-10-26 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/memcasecmp.c: Convert to upper case before comparing.
+ This makes join -i work with sort -f.
+ Reported by Arthur Pool.
+
+1997-10-25 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/xmalloc.c (xalloc_fail): Renamed from fixup_null_alloc.
+ (xcalloc): #ifdef-out unused function.
+ (xrealloc): Remove code to work around deficient versions of realloc.
+ Now we have an autoconf-enabled replacement version.
+ (xmalloc): Remove code to work around deficient versions of malloc.
+ Now we have an autoconf-enabled replacement version.
+
+ * lib/memcmp.c (rpl_memcmp): Rename from memcmp.
+
+ * src/sort.c (NLS_STRNCMP) [!ENABLE_NLS]: s/strcmp/strncmp/.
+
+ * lib/xmalloc.c (xalloc_fail_func): Initialize to 0, not NULL.
+
+ * configure.in (jm_FUNC_MALLOC): Use it.
+ (jm_FUNC_REALLOC): Use it.
+
+ * lib/Makefile.am (EXTRA_DIST): Add malloc.c.
+ * lib/malloc.c: New file.
+ * m4/malloc.m4: New file.
+ * m4/Makefile.am (EXTRA_DIST): Add malloc.m4.
+
+ * lib/Makefile.am (noinst_HEADERS): Add xalloc.h.
+ (EXTRA_DIST): Add realloc.c.
+ (EXTRA_DIST): Add malloc.c.
+
+ * src/system.h: Include xalloc.h.
+ Remove dcls of xmalloc, xcalloc and xrealloc.
+
+ * lib/xalloc.h: New file.
+
+ * lib/xmalloc.c: Include xalloc.h.
+ Change VOID to void.
+ (xalloc_exit_failure): Renamed extern.
+ (xalloc_msg_memory_exhausted): New extern.
+ (xalloc_fail_func): New extern.
+ (fixup_null_alloc): Use new variables.
+
+1997-10-24 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/unexpand.c: Remove old-style xmalloc and xrealloc decls.
+ (add_tabstop): Cast first arg of xrealloc to char*.
+
+ * src/sort.c: Include xalloc.h.
+ (xmalloc): Remove function.
+ (xrealloc): Remove function.
+ (main): Set xalloc_fail_func to cleanup.
+ Set xalloc_exit_failure SORT_FAILURE.
+
+ * src/paste.c: Remove old-style xmalloc and xrealloc decls.
+ (paste_parallel): Cast first arg of xrealloc to char*.
+
+ * src/od.c: Remove old-style xmalloc and xrealloc decls.
+ (decode_format_string): Cast first arg of xrealloc to char*.
+
+ * src/expand.c: Remove old-style xmalloc and xrealloc decls.
+ (add_tabstop): Cast first arg of xrealloc to char*.
+
+ * lib/xalloc.h: New file.
+
+ * src/cut.c (ADD_RANGE_PAIR): Cast first arg of xrealloc to char*.
+ (getstr): Cast xmalloc return value to char*.
+
+ * src/csplit.c: Include xalloc.h.
+ (xmalloc): Remove function.
+ (xrealloc): Remove function.
+ (main): Set xalloc_fail_func to cleanup.
+
+ * src/*.c: Remove old-style xmalloc and xrealloc decls.
+ * src/system.h: Add prototyped xcalloc, xmalloc and xrealloc decls.
+ Suggestion from Achim Blumensath.
+
+1997-10-23 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Makefile.am (aclocal-files): Also depend on m4/Makefile.am.
+
+ * src/system.h [!HAVE_DECLARATION_FREE]: Declare free.
+ [!HAVE_DECLARATION_MALLOC]: Declare malloc.
+ [!HAVE_DECLARATION_REALLOC]: Declare realloc.
+ [!HAVE_DECLARATION_STPCPY]: Declare stpcpy.
+ [!HAVE_DECLARATION_STRSTR]: Declare strstr.
+ * src/cat.c: Remove stpcpy dcl.
+ * src/csplit.c: Remove malloc and realloc dcls.
+ * src/sort.c: Remove free, malloc, and realloc dcls.
+ * src/tac.c: Remove malloc, and realloc dcls.
+ * src/tr.c: Remove stpcpy dcl.
+ On some systems, strstr and stpcpy are macros, so declaring them
+ unconditionally gets syntax errors.
+ Reported by Mark M. Kettenis.
+
+ * configure.in: Use jm_CHECK_DECLS.
+ * m4/Makefile.am (EXTRA_DIST): Add decl.m4 and check-decl.m4.
+
+1997-10-22 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * m4/decl.m4: New file.
+ * m4/check-decl.m4: New file. New macro, jm_CHECK_DECLS.
+
+1997-10-16 Paul Eggert <eggert@twinsun.com>
+
+ * src/od.c (LONG_MAX): Define if not defined.
+
+1997-10-16 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/sort.c (look_for_fraction): Patch from Ørn Hansen.
+ (getmonth): Compare the two month names only to the length of the
+ string in the month table. Patch from Ørn Hansen.
+ (NLS_STRNCMP): New macro.
+ (strncoll_s2_readonly): New function.
+ (inittables): Don't use temporary `comp' to hide type of
+ comparator function.
+ (nls_sort_month_comp): Declare parameters to be void* to match
+ comparator function type required for qsort.
+ (getmonth): Use NLS_STRNCMP rather than #ifdef.
+ Use do-while, rather than while-loop.
+
+1997-10-14 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/sort.c (_NL_ITEM) [!defined]: Define.
+ From from Ørn E. Hansen.
+
+ * src/sort.c: Use STREQ in place of most uses of strcmp.
+ (NLS_STRCMP): Define.
+ (getmonth): Remove ifdef and use NLS_STRCMP instead.
+ Use HAVE_ALLOCA, not _HAVE_ALLOCA.
+ (zaptemp): Make parameter `const'.
+
+ * tests/sort-test/Test.pm: Add tests to exercise new fraccompare.
+
+ * src/sort.c (CHARS_IN_ABM): Remove definition
+ (inittables): Remove assumption that all abbreviated month names have
+ length 3.
+ (getmonth): Likewise.
+ (main): Add #if's for more efficient code when using the GNU C library.
+ From Ulrich Drepper.
+
+ * src/sort.c (strncoll): Rename parameter to LEN.
+ (keycompare): Move assignment out of if-expression.
+
+ * lib/xstrdup.c: New file.
+ * lib/Makefile.am (libtu_a_SOURCES): Add xstrdup.c
+
+ * src/sort.c: Declare xstrdup.
+ (my_setlocale): New function.
+ (main): Guard against failure of strdup (use xstrdup) and setlocale.
+
+ * src/system.h (STREQ): Define.
+ * src/od.c (STREQ): Remove definition.
+
+ * src/sort.c (look_for_fraction): Eliminate arbitrary limit on
+ number of `groups'. Declare as void, not int.
+ Patch from Ørn E. Hansen.
+ (main): When determining whether we're in the C or POSIX locale,
+ don't rely on the form of the string returned by setlocale.
+ Suggestion from Ulrich Drepper.
+
+1997-10-12 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/sort.c: Apply big patch from Ørn E. Hansen.
+ Clean up, indent.
+ (NLS_MEMCMP): Define.
+ (keycompare): Use it instead of open-coded #ifdefs.
+ (compare): Likewise.
+ (NLS_MAP): Remove unused definitions.
+ Replace with uses of UCHAR.
+ (nls_locale_map): Remove dcl of unused file-scope array.
+
+1997-10-10 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/sort-test/Test.pm: Add a test.
+ From William Lewis.
+
+1997-10-07 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/*.c: Update bug-reporting address.
+ * src/cat.c: Indent cpp directives to reflect nesting.
+ * src/cksum.c: Likewise.
+ * src/csplit.c: Likewise.
+ * src/fmt.c: Likewise.
+ * src/nl.c: Likewise.
+ * src/paste.c: Likewise.
+
+1997-09-27 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * m4/memcmp.m4: Integrate test to detect bug in memcmp from the
+ Next x86 OpenStep C library. Test program from William Lewis.
+
+1997-09-21 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/od.c [struct tspec] (hexl_mode_trailer): Rename from `trailer.'
+ (dump_hexl_mode_trailer): Rename from dump_string_trailer.
+ Use fputs and putchar instead of trivial or %-less printfs.
+ (decode_one_format): Parenthesize each field_width assignment in an
+ argument list to make the side effect a little more apparent.
+ (write_block): Use fputs and putchar instead of trivial or %-less
+ printfs.
+ (dump_strings): Cast string_min to off_t to avoid long-standing warning.
+
+ * src/od.c: Implement new `z' (hexl-mode) modifier.
+ [struct tspec] (trailer): New field.
+ (field_width): Likewise.
+ (dump_string_trailer): New function.
+ (decode_one_format): Save each field_width in the tspec.
+ Patch from John Kodis.
+
+1997-09-14 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/od.c (main) [--traditional]: Don't give diagnostic about there
+ being more than three arguments if there are *no* arguments specified.
+ Reported by Jochen Hein.
+
+1997-09-13 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/sort-test/Test.pm: Add tests 19a and 19b.
+
+1997-07-21 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/tail.c (parse_obsolescent_option): #ifdef-out portability warning.
+
+1997-07-19 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/sort.c (checkfp): Print the `disorder' message. Include both
+ the number and the contents of the first out-of-order line, in addition
+ to the file name. Change meaning of return value.
+ (check): Don't print disorder message here.
+ Adjust test of checkfp's return value.
+ Feature suggestion from Karl Heuer.
+
+1997-07-13 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * doc/Makefile.am (EXTRA_DIST): Remove explicit mention of texinfo.texi.
+ Now, automake includes it automatically.
+
+ * src/head.c: Include xstrtoul.h.
+ Remove global variable, unit_size.
+ (atou): Remove now-unused function.
+ (parse_unit): Likewise.
+ (string_to_ull): New function.
+ (head): Take new parameter, count_lines. Use it instead of unit_size.
+ Update callers.
+ (head_file): Likewise.
+ (main): Use string_to_ull, not atou/parse_unit.
+ The problem was that overflow wasn't detected, so `head -c 4096m'
+ was treated just like `head -c 0'.
+ Reported by Jerome Abela.
+
+ * tests/wc: New directory.
+ * tests/head: New directory.
+ * tests/Makefile.am (SUBDIRS): Add head and wc.
+ * configure.in (AC_OUTPUT): Add tests/head/Makefile and
+ tests/wc/Makefile.
+
+1997-07-05 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/tail.c (parse_obsolescent_option): If POSIXLY_CORRECT is set, give
+ a diagnostic and fail when there are two or more non-option arguments.
+
+1997-07-04 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/tac/mk-script.pl: Redirect output of cmp to /dev/null.
+
+ * configure.in (ALL_LINGUAS): Add Norwegian (no).
+
+ * Makefile.am (aclocal-files): Look in source directory, not build dir.
+ From Andreas Schwab.
+
+Sun Jun 15 06:36:41 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/pr.c (init_header) [T_BUF_FMT]: Output the 4-digit year (not the
+ 2-digit abbreviation) in each page header. Reported by Noah Friedman.
+
+Sat Jun 14 12:29:12 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/cut.c (cut_fields): Detect when the input is empty and handle
+ that special case. Before `cut -f1 < /dev/null' would improperly
+ output a single newline. Reported by Phil Richards.
+
+Sun Apr 27 15:10:58 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * man/Makefile.am (DISTFILES): Add $(man_MANS).
+
+ * configure.in (ALL_LINGUAS): Add Czech (cs) and Swedish (sv).
+
+Thu Apr 3 21:14:02 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * m4/Makefile.am (EXTRA_DIST): Update file list.
+
+ * tests/cut-test/Test.pm: Add test from Phil Richards.
+
+Sat Mar 22 20:29:10 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * missing: New file -- from the automake-1.1m distribution.
+
+Fri Mar 21 23:56:41 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Require automake-1.1l.
+ (aclocal.m4): Use aclocal's new -I option.
+
+Thu Mar 13 21:46:04 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/tr.c (main): Make sure c1 is not -1 before using it as an
+ array index. Patch from Greg McGary. Although this is truly a
+ bug, I believe it would not cause tr to misbehave on most systems.
+ I could not construct a test case with which this bug causes tr
+ to generate invalid output.
+
+ * tests/pr-test/Test.pm: Add test that -o 0 works.
+
+ * src/pr.c (main): Allow use of 0 (zero) as the margin offset
+ argument to the -o option. Patch from Gary Anderson.
+
+Fri Feb 28 22:32:51 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/uniq.c (usage): Fix typo in --help output. From Andreas Schwab.
+
+Tue Feb 25 20:34:51 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (noinst_HEADERS): Add obstack.h.
+ (libtu_a_SOURCES): Add obstack.c.
+
+Sun Feb 16 08:30:29 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/Makefile.am (SUBDIRS): Add tac.
+ * tests/tac: New directory.
+ * configure.in (AC_OUTPUT): Add tests/tac/Makefile.
+
+ * tests/pr-test/{tt-0FF, tt-bl, tta3-0FF, ttb3-0FF, tt-FF, tt-t,
+ tta3-FF, ttb3-FF}: New files. Renamed (s/T/tt/) to avoid name clashes
+ on case-independent filesystems.
+ * tests/pr-test/Test.pm (Tests '7.*'): Reflect file-renaming.
+
+ * src/tail.c (parse_obsolescent_option): Reverse order of args in
+ diagnostic. Remove `' quotes in diagnostic.
+ (parse_options): Remove `' quotes in diagnostic.
+
+Sat Feb 8 22:43:45 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/tail.c (parse_obsolescent_option): Give warning diagnostic for
+ (but now accept) obsolescent usage with more than one file argument.
+
+Sun Feb 2 23:06:59 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/join.c: Move alloca-related preprocessor code into system.h.
+ * src/od.c: Remove alloca-related preprocessor code.
+ * src/system.h: Add alloca-related preprocessor code.
+
+Sat Feb 1 07:21:43 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/pr-test/*: Rename files to avoid exceeding 14-character limit.
+ * tests/pr-test/Test.pm: Reflect renamings.
+
+ * tests/pr-test/mk-script.pl (spec_to_list): Warn about all filenames
+ that exceed max-length before dying.
+
+ * src/pr.c (init_parameters): For compatibility: use default
+ separator `TAB' with full length lines. From Roland Huebner.
+
+Fri Jan 31 19:53:54 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/tac.c: Rename globals buffer and buffer_size to have G_ prefix
+ to avoid shadowing local variables.
+
+ * lib/long-options.c (parse_long_options): Compare getopt_long return
+ value against -1, not EOF. Use NULL, not `(int *) 0' as last parameter
+ in getopt_long call.
+
+ * src/pr.c (add_line_number): Rename from `number' to avoid shadowing
+ local variables.
+
+ * src/*.c: Compare getopt_long return value against -1, not EOF.
+ Use NULL, not `(int *) 0' as last parameter in getopt_long call.
+ (usage): Bracket bug-reporting address with <> and append a period.
+
+Wed Jan 29 20:54:24 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/tr-test/Test.pm: Do each test twice: get input via REDIR
+ and PIPE.
+
+ * tests/tail/Test.pm (test_vector): Do each (non-stdin-requiring)
+ test three times.
+
+ * tests/pr-test/Test.pm: Remove common_option_prefix flag.
+ (test_vector): Prepend the common option here instead.
+
+ * tests/md5sum-test/Test.pm: Remove input_via_stdin flag.
+ Do each test twice: get input via REDIR and PIPE.
+
+ * tests/cut-test/Test.pm: Do each test three times.
+
+ * tests/cut-test/mk-script.pl: Allow each test to be run any or all
+ of three different ways. Program input may be specified via a file
+ or files listed on the command line, via input redirection (if there's
+ only one file), or via a pipe.
+
+Tue Jan 28 20:54:06 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/cut-test/mk-script.pl: Remove `t' prefix on all generated
+ test file names.
+ Change suffixes from (.in, .exp, .out, .err) to (.I, .X, .O, .E).
+ Ensure that no test file (generated or maintainer-supplied) has a
+ name longer than 14 characters.
+
+Sun Jan 26 12:49:50 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 1.22.
+
+ * src/tail.c (parse_options): Add quotes to make messages identical.
+
+Sat Jan 25 00:12:29 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/tail.c (parse_obsolescent_option): Comment.
+ (parse_options): Remove unnecessary goto and label.
+
+ * tests/sort-test/mk-script.pl: Interpret `input arg is a hash
+ reference' as meaning that the tested program will read no input.
+ Most of the tests for the date program use this feature.
+ Also for date, the generated script now reflects specification
+ (in Test.pm) of default and per-test environment settings.
+
+ * src/csplit.c: Reflect changes to xstrtol and xstrtoul interfaces.
+ * src/fold.c: Likewise.
+ * src/head.c: Likewise.
+ * src/join.c: Likewise.
+ * src/nl.c: Likewise.
+ * src/od.c: Likewise.
+ * src/pr.c: Likewise.
+ * src/uniq.c: Likewise.
+
+ * lib/xstrtoul.h (XSTRTOL_H): Undefine it.
+
+ * lib/xstrtol.h [!_STRTOL_ERROR]: Define the type `enum strtol_error'
+ only if it hasn't already been defined.
+ (_STRTOL_ERROR): Undefine.
+
+ * lib/xstrtol.c (__xstrtol): Change interpretation of
+ VALID_SUFFIXES == NULL vs VALID_SUFFIXES == "". Use the former
+ when any suffix is valid, the later when no suffix is allowed.
+
+Fri Jan 24 23:36:00 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/long-options.c (parse_long_options): Reset optind to zero
+ before just returning so that getopt internals get initialized from
+ the probably-new parameters when/if getopt is called later.
+ From Ulrich Drepper.
+
+Thu Jan 23 19:17:03 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/tail.c (parse_obsolescent_option): Recognize and fail for
+ more malformed obsolescent options. Makes for better diagnostics.
+
+Wed Jan 22 21:34:50 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/Makefile.am (SUBDIRS): Add tail.
+ * tests/tail: New directory.
+ * configure.in (AC_OUTPUT): Add tests/tail/Makefile.
+
+ * src/tail.c (parse_options): New function.
+ (parse_obsolescent_option): New function.
+ (main): Use the new functions instead of open-coding them.
+ This better fixes the bug in handling obsolescent `+Nc' options.
+ General cleanup.
+
+Tue Jan 21 22:49:00 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/tail.c (main): Properly handle what the POSIX spec calls
+ the `obsolescent' usage (e.g., tail +2c). It didn't work.
+ Reported by Karl Heuer.
+
+Sun Jan 12 22:13:27 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/tr-test/Test.pm: Rename tests so that the associated files
+ have names that are distinct even on filesystems on which file
+ names are case insensitive.
+ Reported by Fred Fish.
+ * tests/cut-test/Test.pm: Likewise.
+
+ * tests/tr-test/Makefile.am: Regenerated to reflect renamed tests.
+ * tests/cut-test/Makefile.am: Likewise.
+
+Wed Jan 8 16:38:24 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 1.21.
+
+ * lib/getopt.c (_getopt_internal): Use `_', rather than the
+ (sometimes-)expansion `gettext'.
+
+Tue Jan 7 22:50:13 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/getopt.c: New (more POSIX compliant) version from GNU libc.
+ [_]: Define to gettext also if ENABLE_NLS is defined.
+ This is temporary.
+
+Thu Jan 2 21:17:50 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/pr.c (init_fps): Initialize lines_stored field in three places.
+ This avoids uninitialized memory reads in close_file.
+
+Wed Jan 1 17:32:18 1997 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_ARG_PROGRAM): Remove explicit use.
+ It's implicit in AM_INIT_AUTOMAKE. From Wayne Stewart.
+
+Sun Dec 29 23:42:57 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/pr.c (init_header): Plug a small memory leak by using stack
+ rather than heap for a 15-byte temporary buffer.
+
+Sat Dec 28 00:03:23 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/pr.c (TAB_WIDTH): Parenthesize uses of parameters and renamed
+ from tab_width.
+ (POS_AFTER_TAB): Renamed from pos_after_tab. Define in terms of
+ TAB_WIDTH rather than duplicating the expression.
+
+Fri Dec 27 17:29:02 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/join-test/mk-script.pl: Fix a couple of thinkos and typos.
+ Now it works with pr's tests, too.
+
+ * tests/pr-test/Makefile.am (explicit): Regenerate list of files,
+ this time with duplicates removed.
+
+ * src/pr.c (usage): Break long string literal into two separate
+ printf statements to accomodate default maximum of 2048 characters
+ for Irix-4.0.5. Reported by Kaveh Ghazi.
+
+ * Makefile.am (aclocal.m4): No longer depend on acinclude.m4.
+
+ * tests/Makefile.am (SUBDIRS): Add pr-test.
+
+ * configure.in: AC_REQUIRE version 2.12 of autoconf.
+ AC_OUTPUT: Add tests/pr-test/Makefile.
+
+Sun Dec 22 08:11:27 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acinclude.m4: Move macros to individual files in new directory, m4/.
+ See ChangeLog entries in sh-utils for the details.
+
+ * configure.in: Increment version to 1.20a.
+
+ * tests/md5sum-test/Makefile.am: Use same framework as other tests.
+ * tests/md5sum-test/Test.pm: New file.
+
+Sat Dec 21 20:32:58 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/Makefile.am (EXTRA_DIST): Add README and Makefile.am.in.
+
+ * tests/Makefile.am.in: New file.
+
+ * tests/sort-test/Makefile.am: Clone the Makefile.am from join-test.
+ Replace only the definition of $x and the auto-generated lists of
+ test files.
+ * tests/cut-test/Makefile.am: Likewise.
+ * tests/tr-test/Makefile.am: Likewise.
+
+ * tests/join-test/Makefile.am: Add @MAINT@-protected rule for
+ verifying that Makefile.am is consistent with Test.pm.
+
+Fri Dec 20 00:08:36 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/join-test/Makefile.am (MAINTAINERCLEANFILES): Use $(in1)
+ and $(in2), not $(in).
+
+ * tests/join-test/mk-script.pl: New option: --list.
+ Generate lists of files used/generated.
+
+Thu Dec 19 23:28:41 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/join-test/mk-script.pl: Rewrite to be more general -- so
+ it can be used for join, cut, sort, tr, and soon, pr test suites.
+ * tests/tr-test/mk-script.pl: Symlink through CVS repo to join's
+ mk-script.pl.
+ * tests/sort-test/mk-script.pl: Likewise.
+ * tests/cut-test/mk-script.pl: Likewise.
+
+ * tests/tr-test/Test.pm: Adapted for new mk-script.pl.
+ * tests/join-test/Test.pm: Likewise.
+
+Tue Dec 17 16:48:51 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/join-test/Makefile.am (.pl): Make generated file read-only so
+ I don't accidentally modify it instead of the one with the .pl suffix.
+
+ * acinclude.m4 (jm_SYS_PROC_UPTIME): Require AC_PROG_CC, rather than
+ now-obsolete AC_C_CROSS.
+ (jm_FUNC_MKTIME): When redefining, use rpl_ prefix, not gnu_ one
+ since there's nothing GNU-specific about the replacement. Contrast
+ with gnu_ prefix added to strftime.
+ (jm_FUNC_MEMCMP): New macro.
+ * configure.in: Use jm_FUNC_MEMCMP instead of AM_FUNC_MEMCMP.
+ * acconfig.h: Add memcmp.
+ * README: Remove warning about memcmp. The new macro handles it.
+
+Mon Dec 16 23:03:27 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/Makefile.am (pkgdata_DATA): Remove unnecessary assignment.
+ From Eric Backus.
+ (AUTOMAKE_OPTIONS): Likewise.
+
+Sat Dec 14 14:51:50 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acinclude.m4 (jm_SYS_PROC_UPTIME): Fix typo in cache variable
+ name for cross compiling.
+ Remove definitions of gettext-related macros. The gettext
+ installation procedure installs corresponding .m4 files so that
+ aclocal will use them.
+
+1996-12-12 Paul Eggert <eggert@twinsun.com>
+
+ * system.h (ISDIGIT): Replace with smaller, faster edition
+ that yields nonzero only on ASCII digits.
+ (ISDIGIT_LOCALE): New macro, with same meaning that ISDIGIT
+ used to have.
+
+ * tr.c (is_char_class_member): Use ISDIGIT_LOCALE instead of
+ ISDIGIT to test for characters in CC_DIGIT class.
+
+ * sort.c (digits): Remove; subsumed by new ISDIGIT.
+ (inittables): Remove initialization of `digits'.
+ (fraccompare, numcompare, main): Use ISDIGIT (x) instead of digits[x].
+ (fraccompare, numcompare): Avoid casts to unsigned char that are no
+ longer needed.
+
+ * csplit.c (get_format_width, get_format_prec): Avoid
+ unnecessary comparison of digit to '\0'.
+
+Thu Dec 12 23:42:51 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/sort.c (usage): Clarify description of -u option.
+ From Karl Berry.
+
+Wed Dec 11 19:32:18 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 1.20.
+
+Tue Dec 10 00:15:50 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ The file name, `build-script.pl' is longer than 14 characters.
+ Rename it.
+ * tests/cut-test/mk-script.pl: Rename from build-script.pl.
+ * tests/cut-test/Makefile.am: Reflect renaming.
+ * tests/tr-test/mk-script.pl: Rename from build-script.pl.
+ * tests/tr-test/Makefile.am: Reflect renaming.
+ * tests/sort-test/mk-script.pl: Rename from build-script.pl.
+ * tests/sort-test/Makefile.am: Reflect renaming.
+ * tests/join-test/mk-script.pl: Rename from build-script.pl.
+ * tests/join-test/Makefile.am: Reflect renaming.
+ Reported by Karl Heuer.
+
+ * configure.in (VERSION): Bump to 1.19r.
+ (AC_ISC_POSIX): Remove kludgy macro.
+ Use this test instead:
+ (LIBS): Add -lcposix if it contains strerror.
+ Patch from Karl Heuer.
+
+Sun Dec 8 07:22:38 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ =========== Update for automake-1.1k.
+ * Makefile.am (AUTOMAKE_OPTIONS): Require 1.1k.
+ * configure.in (AM_CONFIG_HEADER): Use it.
+ (AC_OUTPUT): Remove stamp-h timestamping statement.
+ Now, AM_CONFIG_HEADER does it automatically.
+ * lib/Makefile.am (noinst_LIBRARIES): Rename to libtu.a as per
+ new automake requirement.
+ Rename tu_* variables to libtu_a_*.
+
+Wed Dec 4 21:03:18 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/pr.c: Apply big patch from Roland Huebner.
+
+ * src/tr.c (main) [!POSIXLY_CORRECT]: Allow the identity mappings:
+ [:upper:] to [:upper:] and [:lower:] to [:lower:].
+ (main) [POSIXLY_CORRECT]: Give a more specific diagnostic for
+ the invalid identity mappings [:upper:] to [:upper:] and [:lower:]
+ to [:lower:].
+ (class_ok): Update table to reflect that tr now allows these
+ identity mappings. Suggestion from Risto Kankkunen.
+
+Thu Nov 28 00:31:18 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AM_GNU_GETTEXT): Renamed from ud_GNU_GETTEXT
+ for gettext-0.10.25.
+
+Tue Nov 26 23:05:14 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/sort.c (fraccompare): Add explicit `int' in `register' dcls,
+ to avoid new warning from gcc.
+
+Sun Nov 24 21:02:15 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/sort-test/Makefile.am (t): Add names of those 5 tests.
+
+ * tests/sort-test/Test.pm: Add 5 tests to exercize just-fixed code.
+
+ * src/sort.c (set_ordering): Revert 1994-05-04 change to this function
+ so that blanks are not unconditionally ignored when computing start
+ and end positions for numeric keys with explicit character offsets.
+ Reported by Markus Demleitner.
+
+Sat Nov 23 16:07:08 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * cat.c (usage): Alphabetize option descriptions the way sort -f would.
+ * fmt.c (usage): Likewise.
+ * join.c (usage): Likewise.
+ * md5sum.c (usage): Likewise.
+ * od.c (usage): Likewise.
+ * pr.c (usage): Likewise.
+ * sort.c (usage): Likewise.
+ * split.c (usage): Likewise.
+ * wc.c (usage): Likewise.
+ From Karl Berry.
+
+Fri Nov 22 20:20:37 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/csplit.c (process_regexp): Update CURRENT_LINE only if
+ the new value would be larger. This avoids the infinite loop
+ otherwise provoked by situations like this:
+ printf "\na\n" | csplit - '/a/-1' '{*}'
+ From Jens Schmidt.
+
+Tue Nov 19 23:16:57 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AM_SANITY_CHECK_CC): Remove it. Autoconf-2.11
+ has this built-in.
+
+Sat Nov 2 08:50:01 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * doc/Makefile.am (MAKEINFO): Set to makeinfo --no-split.
+ Otherwise, the generated info files have names longer than
+ the 14-byte max of some old systems.
+ Reported by Karl Heuer.
+
+Fri Nov 1 21:33:16 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/strtol.c: Update from GNU libc.
+
+ * tests/sort-test/Test.pm: Add a test to exercize this fix.
+
+ * src/sort.c [!ENABLE_ASSERTIONS]: Guard NDEBUG definition.
+ (checkfp): Fix off-by-one error that resulted in writing one byte
+ beyond the end of a malloc'd buffer. It caused `sort -c' to segfault
+ on Linux systems having a relatively recent libc. Before, running
+ the command, perl -e "print 'x' x 30, \"\n\";"|sort -c
+ would provoke the memory overrun (though not necessarily the failure).
+ Add an assertion.
+ Reported by Risto Kankkunen.
+
+Thu Oct 31 17:48:24 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/sort.c (key_init): New function.
+ (main): Use key_init in the two places where it was open-coded.
+ This fixes a UMR of the general_numeric field.
+
+ * src/join.c (decode_field_spec): Always give FIELD_INDEX a value.
+ This avoids a spurious UMR report from purify.
+ (prjoin): Add an assertion.
+ (add_field): Update assertion.
+
+ * src/tr.c (es_free): New function.
+ (parse_str): Use it to plug a small memory leak.
+
+Wed Oct 23 22:02:24 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/md5.c: Update from GNU libc.
+ * lib/md5.h: Update from GNU libc.
+
+Mon Oct 21 16:48:12 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/tr.c (validate): Remove TAB from diagnostic, for consistency.
+
+Sun Oct 20 13:44:07 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (INCLUDES): Add -I../intl. Reported by Eric Backus.
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Set to `gnits'
+ (EXTRA_DIST): Remove.
+
+ * configure.in: Remove README_ALPHA related code. Automake takes
+ care of it automatically now when in gnits mode.
+
+ * lib/md5.c (md5_process_bytes): Cast void* pointer to char* before
+ doing arithmetic with it.
+
+Sat Oct 19 23:13:54 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/md5.c: Update from GNU libc.
+ * lib/md5.h: Update from GNU libc.
+
+Fri Oct 18 00:08:04 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_OUTPUT): Add tests/join-test/Makefile.
+
+ * tests/Makefile.am (SUBDIRS): Add join-test.
+
+Tue Oct 15 23:25:31 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/tr.c (get_next): Rewrite to treat lower/upper mapping as a
+ special case.
+ (main): Write separate loops to initialize mapping for lower->upper
+ and upper->lower conversion.
+ Reported by Arne Henrik Juul.
+
+Sun Oct 13 12:52:42 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/xstrtol.c (__xstrtol): Return an error for invalid suffix.
+ Before, e.g., `split -b 1M' would be silently accepted and treated
+ like `split -b 1'. Reported by Franc,ois.
+
+ * src/split.c (usage): Remove parameter, REASON.
+ (main): Update callers to use combination of error (0, 0, ... and
+ usage (EXIT_FAILURE).
+ (main): When a string operand cannot be converted to a number of
+ bytes or lines, include that string in the diagnostic.
+
+Sat Oct 12 00:05:11 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_REPLACE_FUNCS): Add strpbrk and strtol.
+
+ * lib/Makefile.am (EXTRA_DIST): Remove.
+
+Thu Oct 10 23:41:36 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/md5.c (md5_stream): Apply fix from Ralph Loader
+ <loader@maths.ox.ac.uk> via Ulrich Drepper.
+
+Wed Oct 9 07:26:40 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (tu_DEPENDENCIES): Depend on $(tu_LIBADD).
+
+Tue Oct 8 21:32:17 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/error.c: Include error.h to align with libit --
+ under protest, François :-).
+
+Sun Oct 6 08:02:28 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * acinclude.m4 (AC_HEADER_SYS_TIME_H, AM_FUNC_MKTIME,
+ AM_FUNC_ERROR_AT_LINE, AM_FUNC_OBSTACK): Remove definitions.
+ They're included in automake-1.1f.
+
+ * configure.in (AM_FUNC_ERROR_AT_LINE): Use it instead of
+ open-coding it.
+
+Sat Oct 5 12:40:22 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/memcpy.c [HAVE_CONFIG_H]: Include config.h.
+ From Karl Berry.
+
+Fri Oct 4 07:20:37 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (GNU_PACKAGE): New variable.
+ (PACKAGE_VERSION): Remove it.
+
+ * acconfig.h (GNU_PACKAGE): New variable.
+ (PACKAGE_VERSION): Remove now-unused variable.
+
+ * lib/long-options.c (parse_long_options): Separate package name
+ and version number to accomodate new --version output requirement.
+ * lib/long-options.h: Update prototype.
+
+Thu Oct 3 23:27:31 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/md5sum.c (main): Remove dead code that used to print --version
+ output.
+
+Tue Oct 1 06:54:22 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in: Use result of AM_FUNC_STRTOD to set POW_LIBM.
+ * src/Makefile.am (sort_LDADD): Use any library (-lm) that
+ gets substituted for @POW_LIBM@.
+
+ * tests/md5sum-test/md5-rfc (md5sum): Use ../../src/md5sum.
+
+Mon Sep 30 23:35:46 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/md5sum-test/md5-rfc (md5sum): Set to $srcdir/md5sum.
+
+ * acinclude.m4: Update definitions from gettext-0.24.
+
+Sun Sep 29 20:04:53 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/sort-test/build-script.pl: Die if close fails.
+ * tests/tr-test/build-script.pl: Likewise.
+
+ * configure.in (AC_OUTPUT): Add tests/cut-test/Makefile.
+ * tests/Makefile.am (SUBDIRS): Add cut-test.
+ * tests/cut-test: New directory.
+
+Fri Sep 27 22:22:09 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (ALL_LINGUAS): Add spanish (es).
+
+Thu Sep 26 21:02:54 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/md5sum.c (usage): Remove references in --help output to
+ the now-deprecated --string option. Support for it will be
+ removed soon. Using this option can provoke a memory access
+ violation on some systems because of (unavoidable in an efficient
+ implementation) alignment assumptions made by functions in md5.c.
+ md5sum.c could leave the option in and accomodate the alignment
+ restriction, but this option was intended solely for testing, and
+ the tests are now all file-oriented, so it's not necessary.
+
+ * tests/md5sum-test/md5-rfc: Rewrite to avoid use of --string option.
+
+Wed Sep 25 21:43:10 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/sort-test/Makefile.am (t): Factor out .in suffix.
+ Include new test: t16a.
+ * tests/tr-test/Makefile.am (t): Likewise.
+
+ * src/Makefile.am (EXTRA_DIST): Remove md5-test.rfc.
+
+Mon Sep 23 10:00:50 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/md5sum-test/Makefile.am (EXTRA_DIST): Distribute $(TESTS).
+
+Sun Sep 22 09:24:22 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/sort.c (keycompare): Declare translate to be unsigned char *.
+ Otherwise, sign extension caused misordering when using e.g. -f.
+ Reported by Erick Branderhorst.
+ * tests/sort-test/Test.pm: Add Erick's test for that fix.
+
+ * tests/Makefile.am (SUBDIRS): Add md5sum-test.
+
+Sat Sep 21 13:34:59 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/Makefile.am (check): Remove tests for md5sum.
+ * tests/md5sum-test: New directory. Put them here instead.
+ * configure.in (AC_OUTPUT): Add tests/md5sum-test/Makefile.
+
+Thu Sep 19 08:54:05 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * tests/: Rename from checks.
+ * Makefile.am (SUBDIRS): Change `checks' to `tests'.
+ * configure.in (AC_OUTPUT): Likewise.
+
+ * configure.in ($PACKAGE, $VERSION): Don't AC_DEFINE_UNQUOTED these.
+ AM_INIT_AUTOMAKE now does it (as of automake-1.1e).
+
+Sun Sep 15 23:08:48 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Makefile.am (EXTRA_DIST): Remove acinclude.m4.
+
+Thu Sep 12 17:05:23 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * lib/Makefile.am (EXTRA_DIST): Add getline.c.
+ (tu_SOURCES): Remove getline.c
+ From Kaveh Ghazi.
+
+Sun Sep 8 13:55:18 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * checks/sort-test/build-script.pl: Prefix $in with \$srcdir/
+ so make check works with VPATH build. From Uli Drepper.
+
+Sat Sep 7 12:25:42 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/system.h: Add comments justifying IS* versions of ctype.h macros.
+
+ * src/fmt.c (check_punctuation): Use ISPUNCT instead of ispunct.
+ (get_line): Use ISSPACE instead of isspace. From Bruno Haible.
+
+Mon Sep 2 10:34:46 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/*.c (usage): Tell where to report bugs.
+
+Sun Aug 25 22:50:47 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * checks/sort-test/Makefile.am (EXTRA_DIST): Add $x-tests.
+ ($x-tests): Guard dependencies with @MAINT@.
+ * checks/tr-test/Makefile.am: Likewise.
+
+Sat Aug 24 14:25:41 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/cat.c (cat): Cast first arg to stpcpy to char* to avoid warnings.
+
+Wed Aug 21 22:28:26 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (ALL_LINGUAS): Add polish (pl).
+
+Sun Aug 18 09:34:42 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (AC_OUTPUT): Add checks/sort-test/Makefile.
+ * checks/Makefile.am (SUBDIRS): Add sort-test.
+
+Sat Aug 17 18:57:17 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Makefile.am (EXTRA_DIST): Add acinclude.m4.
+
+Tue Aug 13 21:47:23 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/Makefile.am (EXTRA_DIST): Remove ansi2knr.1 and ansi2knr.c.
+ Automake includes them automatically.
+
+ * configure.in (AM_INIT_AUTOMAKE): Use it.
+ (AM_PROG_INSTALL): Remove. AM_INIT_AUTOMAKE does this.
+ (AC_PROG_MAKE_SET): Likewise.
+
+Sun Aug 11 20:49:21 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in: Rename a few macros for automake-1.1c.
+ (AC_REPLACE_GNU_GETOPT): Remove.
+ (AC_PATH_PROG): Find perl -- needed only for checks if you
+ change or remove things with e.g. make maintainerclean.
+
+
+ * lib/Makefile.am (tu_LIBADD): Remove @REGEXOBJ@. New AM_WITH_REGEX
+ adds .o files to @LIBOBJ@.
+ (tu_SOURCES): Add getopt.c and getopt1.c.
+ (EXTRA_DIST): Remove getopt.c and getopt1.c.
+
+ * acinclude.m4: New file -- derived from aclocal.m4.
+ * aclocal.m4: This file is now generated by the aclocal program
+ (which comes with the automake package.)
+
+Sun Aug 4 10:50:46 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * checks/: New directory.
+ * checks/Makefile.am: New file.
+ * configure.in (AC_OUTPUT): Add new directories: checks,
+ checks/tr-test.
+ * Makefile.am (SUBDIRS): Likewise.
+
+Sat Jul 27 17:22:14 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/system.h (bindtextdomain) [!ENABLE_NLS]: Undefine to avoid
+ redefinition warnings on solaris.
+ (textdomain) [!ENABLE_NLS]: Likewise.
+
+Thu Jul 25 23:06:35 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/unexpand.c (unexpand): Move EOF check to follow code that
+ processes and generates output for pending spaces. Before
+ `printf ' ' |unexpand -t 1,2' generated no output.
+
+ * src/md5sum.c (md5_check): Remove parameter, BINARY.
+ Rename local TYPE_FLAG to BINARY, so md5_file uses the binary mode
+ from the input stream rather than the one from the command line.
+ (main): Fail with a diagnostic if --binary or --text is specified
+ when verifying checksums.
+ Reported by Eli Zaretskii <eliz@is.elta.co.il>.
+
+Sun Jul 21 11:58:48 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in: Add check for error_at_line so systems with
+ GNU libc don't compile and link with distributed error.c.
+ * lib/Makefile.am (tu_SOURCES): Remove error.c.
+ (EXTRA_DIST): Add error.c.
+
+ * configure.in (AC_REPLACE_FUNCS): Replace getline.c.
+ Add related check for the getdelim function.
+ From Ulrich Drepper -- as done in gettext.
+
+Sat Jul 20 15:59:36 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (PACKAGE_VERSION): Use space instead of hyphen to
+ separate PACKAGE and VERSION.
+
+ * aclocal.m4 (AM_SANITY_CHECK_CC): New macro. Derived from
+ macros from Bruno Haible and from Cygnus.
+ * configure.in (AM_SANITY_CHECK_CC): Use it.
+
+Wed Jul 17 00:30:28 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * install-sh: Get version with MIT copyright.
+
+Tue Jul 16 00:09:37 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * aclocal.m4 (fp_C_PROTOTYPES): Improved version from
+ François Pinard.
+ Update all other macros to reference $fp_cv_prog_cc_stdc, rather
+ than $ac_cv_prog_cc_stdc.
+
+ * src/od.c (OFF_T_MAX): Remove definition.
+ (main): Compare against LONG_MAX rather than OFF_T_MAX.
+
+Mon Jul 15 23:42:57 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Many files: Update FSF address.
+
+Sun Jul 14 16:53:50 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/unexpand.c (unexpand): Fix bug that contributed to endless loop
+ when invoking `echo ' ' |unexpand -t 1,2': use print_tab_index, not
+ tab_index in inner flush_pend: while loop. From Keith Owens
+ <kaos@audio.apana.org.au>.
+
+ * src/unexpand.c [HAVE_LIMITS_H]: Include limits.h for INT_MAX.
+ [!INT_MAX]: Define it.
+ (main): Append INT_MAX to command-line-specified tab list to
+ ensure termination in unexpand's inner loop.
+ Derived from a patch from Keith Owens.
+
+Thu Jul 11 22:04:36 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 1.19.
+
+ * configure.in (VERSION): Bump to 1.19.
+
+Wed Jul 10 22:57:29 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * aclocal.m4 (fp_PROG_CC_STDC): Include sys/stat.h in test program
+ so that DYNIX/ptx V4.1.3 doesn't use `-Xc -D__EXTENSIONS__' -- with
+ those options on that system, sys/stat.h gets compile errors.
+ With help from Marcus Daniels.
+
+ * getopt.c: Update from gettext-0.10.23.
+ * getopt1.c: Likewise.
+ * getopt.h: Likewise.
+
+Tue Jul 9 18:07:23 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/fmt.c (MAXCOST): Use `(unsigned long)1' rather than `(COST)1'
+ so the left operand of the << isn't signed.
+ From Kjetil Torgrim Homme.
+
+ * po/Makefile.in.in (install-data): Don't install NLS files when
+ they're not requested. From Ulrich Drepper. Reported by
+ Kjetil Torgrim Homme <kjetilho@ifi.uio.no>.
+
+Fri Jul 5 21:55:58 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * po/Makefile.in.in ($(PACKAGE).pot): Merge from gettext-0.10.23.
+ * ABOUT-NLS: Likewise.
+ * intl/*: Likewise.
+ * aclocal.m4: Likewise.
+
+Thu Jul 4 07:24:54 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/uniq.c (usage): Remove space before newline in usage message.
+
+ * src/md5sum.c (MIN_DIGEST_LINE_LENGTH): New macro.
+ [NEWLINE_REPLACEMENT_STRING*]: Remove macros.
+ (main): Output a leading backslash for a line describing a file
+ whose name contains a newline. Then translate each NEWLINE byte
+ in the file name to the string, "\\n", and each backslash to "\\\\".
+ File names that don't contain NEWLINE aren't translated.
+ (split_3): Rewrite to handle file names with embedded newlines.
+ Miles Bader and Jim Blandy suggested this new encoding scheme.
+
+ * src/md5sum.c (md5_file): Replace obsolete comment with a description
+ of the function.
+ (md5_check): Don't use "s"-adding trick to form the plural of
+ `checksum.' That doesn't work well with translation.
+ Suggestions from Ulrich Drepper.
+ (split_3): Add missing semicolon so it compiles. From Jim Blandy.
+
+Wed Jul 3 23:21:09 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/md5sum.c (split_3): Correct test for 35-byte line to accomodate
+ fact that leading blanks may be stripped.
+
+Tue Jul 2 21:51:40 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (ALL_LINGUAS): Add dutch (nl).
+
+Mon Jul 1 23:50:19 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/md5sum.c [NEWLINE_REPLACEMENT_STRING]: Define.
+ (split_3): Translate NL bytes not to NUL, but to
+ NEWLINE_REPLACEMENT_STRING.
+ Suggested by Ulrich Drepper.
+ (main): Translate back to NL-containing filename.
+
+Sun Jun 30 22:42:17 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/md5sum.c (split_3): Take an additional parameter, S_LEN.
+ Adapt caller.
+ Map translated NEWLINE-containing filename back into the original
+ NEWLINE-containing name.
+ (md5_check): Translate NEWLINE bytes to NUL bytes in filename.
+
+Sat Jun 29 18:59:07 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (PACKAGE_VERSION): Add `GNU ' prefix so it
+ appears in the output of --version. Reported by RMS.
+
+Wed Jun 26 21:35:10 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * src/Makefile.am (LDADD): Remove sort-specific hack to link
+ with -lm.
+ * aclocal.m4 (AM_FUNC_STRTOD): New macro.
+ * configure.in (AM_FUNC_STRTOD): Use it.
+ (AC_REPLACE_FUNCS): Remove strtod.
+ Suggested by Tom Tromey.
+
+ * po/Makefile.in.in (install-data): Add `else true;' to avoid
+ letting failing if-condition cause make failure.
+ From Fred Fish (fnf@ninemoons.com).
+
+Tue Jun 25 21:55:18 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 1.18a.
+
+Tue Jun 18 20:43:20 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * aclocal.m4: Update from gettext-0.10.20.
+ * ABOUT-NLS: Likewise.
+ * intl/*: Likewise.
+
+Thu Jun 13 22:31:39 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (VERSION): Bump to 1.18a.
+
+ * po/Makefile.in.in ($(PACKAGE).pot): Reapply change of May 30.
+ Depend on POTFILES only when using maintainer mode.
+
+ * intl/*: Update from gettext-0.10.18.
+
+Tue Jun 11 23:32:10 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 1.18.
+
+ * po/Makefile.in.in: Update from gettext-0.10.17.
+ * intl/*: Likewise.
+ * ABOUT-NLS: Likewise.
+
+Mon Jun 10 18:22:29 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Makefile.am (cvs-dist): Use -c option in cvs tag command.
+
+Fri Jun 7 22:06:46 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * configure.in (VERSION): Set to 1.18.
+
+ * src/Makefile.am (sort_LDADD): Set this to -lm to get pow when using
+ the strtod supplied with this package. Otherwise, linking failed on
+ Solaris-2.4 systems. Reported by Wayne Stewart <wstewa@atl.com>.
+
+Thu Jun 6 21:57:08 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * po/Makefile.in.in: Update from gettext-0.10.16.
+ * intl/*: Likewise.
+ * ABOUT-NLS: Likewise.
+ * aclocal.m4 (AC_REPLACE_GNU_GETOPT): Move definition to precede
+ gettext-related ones.
+ Update from gettext-0.10.16.
+
+Fri May 31 22:04:51 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 1.17.
+
+ * Makefile.am (EXTRA_DIST): Set to texinfo.tex so that file is
+ distributed.
+
+Thu May 30 00:07:48 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * Version 1.16.
+
+ * tail.c (main): Interpret the old-style +VALUE and -VALUE options
+ like -c VALUE and -c +VALUE (resp) when VALUE has one of the [bkm]
+ suffix multipliers. This makes the code consistent with --help
+ output. Reported by Karl Heuer.
+
+ * sort.c (limfield): #ifdef-out a block of code that makes
+ GNU sort incompatible with Unix sort when a key-end spec refers
+ to the N'th character in a field that has fewer than N characters.
+ The POSIX spec doesn't appear to specify behavior for this case.
+ From Karl Heuer.
+
+ * po/Makefile.in.in (stamp-cat-id): Avoid using temp filename
+ longer than 14 characters.
+ (mostlyclean): Likewise.
+ From Karl Heuer.
+
+ * po/Makefile.in.in ($(PACKAGE).pot): Depend on POTFILES only
+ when using maintainer mode. Reported by Karl Heuer.
+
+ * po/Makefile.in.in (.po.mo): Reenable dependency and rule.
+ It is required when using native NLS, e.g. on Solaris.
+ From Marcus Daniels.
+
+ * od.c (decode_one_format): Use %lu (not %d) printf format
+ corresponding to unsigned long, SIZE.
+
+ * Version 1.15.
+
+ * intl/Makefile.in (installcheck): New target.
+ * po/Makefile.in.in (installcheck): New target.
+
+ * od.c (decode_one_format): Take another parameter.
+ Give a specific diagnostic for invalid format spec here rather
+ than an overly general one from caller's caller.
+ (decode_format_string): Update caller.
+ (main): Don't give diagnostic here when decode_format_string fails.
+ Remove assertions that could fail on some Crays because they don't
+ have a two-byte type.
+ Johan Danielsson (joda@pdc.kth.se) reported the failed assertions.
+
+Mon May 27 17:43:31 1996 Jim Meyering <meyering@na-net.ornl.gov>
+
+ * cat.c (main): Use STDIN_FILENO and STDOUT_FILENO instead of
+ less portable fileno (stdin) and fileno (stdout).
+ * sort.c (main): Use STDIN_FILENO instead of less portable
+ fileno (stdin).
+
+Mon May 20 21:50:23 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * Makefile.am (distcheck): Remove target and rule -- automake-0.33
+ adds it automatically.
+
+Sun May 19 13:15:49 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * configure.in (LINGUAS): Add ko.
+ * Makefile.am (distcheck): Remove @MAINT@ prefix from first command.
+
+Thu May 16 22:18:41 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * Makefile.am (distcheck): New target. From Gord Matzigkeit.
+
+Fri May 10 20:46:13 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * po/Makefile.in.in (all-yes): Always depend on CATALOGS. Otherwise
+ they won't be built and install could fail. From Ulrich Drepper.
+ (.po.mo): Disable dependency and rule when not in maintainer mode.
+
+ * aclocal.m4 (ud_WITH_NLS): Make DATADIRNAME and CATOBJEXT depend
+ on whether we're using GNU gettext. From Ulrich Drepper.
+
+Wed May 8 21:10:43 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * intl/Makefile.in (distdir): Renamed from dist. For compatibility
+ with automake-0.32.
+ * po/Makefile.in.in (distdir): Likewise.
+
+ * po/Makefile.in.in (all-yes): Depend on GMOFILES.
+ Depend on CATALOGS and GMOFILES files only in maintainer mode.
+
+Tue May 7 22:10:20 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * configure.in: Require autoconf-2.10.
+
+ * aclocal.m4 (jm_MAINTAINER_MODE): New macro.
+ * configure.in (jm_MAINTAINER_MODE): Use it.
+
+Sat May 4 20:40:01 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * configure.in (LINGUAS): Add de.
+ * po/de.po: New file.
+
+ * memcasecmp.c [IN_CTYPE_DOMAIN]: Rename from ISASCII.
+ * regex.c [IN_CTYPE_DOMAIN]: Likewise.
+ * system.h [IN_CTYPE_DOMAIN]: Likewise.
+
+Sun Apr 28 17:10:03 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * fmt.c (copy_rest): Don't copy past end of prefix. Output
+ trailing spaces if the prefix had any. Before, fmt would
+ improperly output NUL bytes. The command
+ perl -e 'print "| S";' |fmt -p' | '|tr '\0' @
+ output `|@S'. Reported by François Pinard.
+
+ * sort.c (main): Give a better diagnostic for `sort -0'.
+ Reported by Karl Berry.
+
+ * configure.in: Make fp_C_PROTOTYPES precede AC_C_INLINE.
+ Otherwise, some systems lose because the value AC_C_INLINE choses
+ with plain `cc' is different from that chosen when using the ANSI-mode
+ C compiler. From Kaveh Ghazi.
+
+Tue Apr 23 22:05:35 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * aclocal.m4 (AC_REPLACE_GNU_GETOPT): New macro.
+ * configure.in: Use it.
+ * lib/Makefile.am (tu_SOURCES): Remove getopt.c and getopt1.c.
+ (EXTRA_DIST): Add getopt.c and getopt1.c
+
+ * src/*.c, src/*.h: Update Copyright years to include 1996.
+
+Sun Apr 21 08:04:51 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * getline.c: New version from gettext-0.10.12.
+ * getline.h: Likewise.
+ * configure.in (AC_CHECK_FUNCS): Add getdelim.
+ Suggested by Ulrich Drepper.
+
+ * md5sum.c (md5_check): Remove spurious newline at end of error
+ format string.
+
+ * od.c (decode_one_format): Use printf's L modifier for long doubles,
+ not `l'. From Eric Backus.
+
+ * Makefile.am (LDADD): Put @INTLLIBS@ before package library.
+
+ * od.c: Include <values.h>.
+ [!BITSPERBYTE]: Define.
+ [OFF_T_MAX]: Use BITSPERBYTE, not 8, and cast the result to off_t.
+ * configure.in (AC_CHECK_HEADERS): Add values.h.
+
+Fri Apr 19 23:48:53 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * Makefile.am (cvs-dist): New rule. Based on the one from
+ Tom Tromey's automake.
+
+Thu Apr 18 22:13:14 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * tail.c (main): Make code clearer: use new variable `n_files' in
+ place of `argc - optind'. Use `file' instead of `argv + optind'.
+
+Sat Apr 13 13:08:29 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * lib/Makefile.am (noinst_HEADERS): Include memcasecmp.h,
+ not memcasecmp.c.
+
+ * memcasecmp.c: Unprotoize.
+ [ISASCII]: Define.
+ [ISUPPER]: Define.
+
+ * join.c (decode_field_spec): Rename local variable `valid'
+ to invalid (and reverse sense) to avoid conflict with the
+ macro definition in /usr/include/locale.h on SunOS 4.1.3.
+
+Tue Apr 9 22:43:57 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * uniq.c: Add new option --ignore-case (-i).
+ Include memcasecmp.h.
+ (different): Compare with memcasecmp if ignoring case.
+ (main): Handle 'i'.
+
+ * join.c (memcasecmp): Remove static definition of function.
+ Include memcasecmp.h instead.
+
+ * memcasecmp.c: New file.
+ * memcasecmp.h: New file.
+ * lib/Makefile.am (tu_SOURCES): Add memcasecmp.c.
+ (noinst_HEADERS): Add memcasecmp.h.
+
+Thu Apr 4 17:05:33 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * tr.c: The following commands all failed unnecessarily.
+ tr -cs '[:upper:]' '[X*]'
+ tr -dcs '[:lower:]' n-rs-z
+ tr -ds '[:xdigit:]' [:alnum:]'
+ tr -dcs '[:alnum:]' [:digit:]'
+ tr -dc '[:upper:]'
+ Reported by Ross Ridge (ross@worf.mks.com).
+ (validate): Add missing conjunct (translating) in test for
+ `translating and complementing character classes' error. Before,
+ valid uses of tr could fail. E.g. `tr -dcs '[:cntrl:]' '[:alnum:]''.
+ (homogeneous_spec_list): New function.
+ (validate): Use it to relax the old (overly restrictive) restriction
+ that prohibited use of complemented character classes when translating.
+ Now, that is allowed as long as the translation maps many to one.
+ (get_spec_stats): Rename and redefine global has_char_class from
+ has_upper_or_lower.
+
+Wed Apr 3 07:08:57 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * aclocal.m4: Update NLS macros from gettext-0.10.11.
+
+ * src/Makefile.am (INCLUDES): Add -I$(srcdir) to get system.h
+ when srcdir != builddir. From Kaveh Ghazi.
+
+Wed Mar 27 23:33:36 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * cksum.c (cksum): Use format "%lu %ld" (instead of "%10lu %8ld")
+ to be POSIX compliant. From Stephen Gildea <gildea@x.org>.
+
+Sun Mar 24 08:47:40 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * join.c (main): Use EXIT_FAILURE, not 2, as exit code in error call.
+ * od.c (skip, main): Likewise.
+ * tr.c (main): Likewise.
+
+ * cat.c cksum.c comm.c csplit.c cut.c expand.c fmt.c fold.c head.c
+ join.c md5sum.c nl.c od.c paste.c pr.c split.c sum.c tac.c tail.c
+ tr.c unexpand.c uniq.c wc.c: Exit with status EXIT_SUCCESS or
+ EXIT_FAILURE, rather than 0 or 1.
+
+Sat Mar 23 23:14:40 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * system.h [EXIT_FAILURE]: Undefine and define to 1 also if it
+ is defined to zero. Suggested by Paul Eggert.
+
+ * sort.c [SORT_FAILURE]: New macro.
+ Be careful to exit with 1 only when -c is used and the
+ input is not properly sorted. In all other cases, use
+ SORT_FAILURE as required by POSIX.
+ (main): Change some `error (1, ...' to use SORT_FAILURE.
+ Upon successful termination, exit with EXIT_SUCCESS instead of `0'.
+ Replace all uses of `2' (as exit code) with SORT_FAILURE.
+
+Thu Mar 21 22:47:50 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * csplit.c: Include assert.h, but disable assertions.
+ (process_line_count): Replace if-abort with a slightly relaxed
+ assertion. Before, `echo |csplit - 1 1' would abort.
+ Reported by Samuli.Karkkainen@hut.fi.
+ (parse_patterns): Disallow uses like `csplit FILE 0' with zero
+ line number, `csplit FILE 2 1' with decreasing line numbers, and
+ warn about uses like `csplit FILE 3 3' that have equal line numbers.
+
+ * sort.c (main): Declare to be of type int, not void.
+ From Peter Seebach <seebs@taniemarie.solon.com>.
+ * cat.c cksum.c comm.c csplit.c cut.c expand.c fold.c head.c join.c
+ nl.c paste.c pr.c split.c sum.c tac.c tail.c tr.c unexpand.c uniq.c
+ wc.c (main): Likewise.
+
+Sat Mar 16 16:30:07 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * configure.in (PACKAGE_VERSION): New macro.
+ * acconfig.h (PACKAGE_VERSION): Add it.
+ * src/Makefile.am: Remove rules for generating version.c.
+ Remove references to version.o, version.h, and stamp-v.
+ * version.c: Remove file.
+ * version.h: Remove file.
+ * cat.c cksum.c comm.c csplit.c cut.c expand.c fmt.c fold.c
+ head.c join.c md5sum.c nl.c od.c paste.c pr.c sort.c split.c
+ sum.c tac.c tail.c tr.c unexpand.c uniq.c wc.c: Don't include
+ version.h.
+ (main): Use PACKAGE_VERSION instead of version_string.
+
+Mon Mar 11 16:07:08 CST 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * sort.c (write_bytes): Renamed from xfwrite.
+ Remove SIZE parameter. It was always 1. Update all callers.
+ Rename NELEM parameter to N_BYTES and change its type to size_t.
+
+Sat Mar 9 13:30:12 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * cat.c cksum.c comm.c csplit.c cut.c expand.c fmt.c
+ fold.c head.c join.c md5sum.c nl.c od.c paste.c pr.c sort.c
+ split.c sum.c tac.c tail.c tr.c unexpand.c uniq.c wc.c (main):
+ Initialize for internationalized message support: call setlocale,
+ bindtextdomain, and textdomain.
+ * system.h: Add definitions and includes for NLS.
+ * Makefile.am (SUBDIRS): Add intl and po.
+ * src/Makefile.am (datadir): Define.
+ (localedir): Define.
+ (DEFS): Add LOCALEDIR definition.
+ (LDADD): Add @INTLLIBS@.
+ * aclocal.m4: Add NLS-related macro definitions from
+ gettext distribution.
+ * acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_LC_MESSAGES,
+ HAVE_STPCPY): New macros.
+ Add PACKAGE and VERSION.
+ * configure.in (PACKAGE): Define with AC_DEFINE_UNQUOTED.
+ (VERSION): Likewise.
+ (ALL_LINGUAS): Define.
+ (AC_CHECK_HEADERS): Add float.h.
+ (ud_GNU_GETTEXT): Use it.
+ Link an nls file.
+ (AC_OUTPUT): Reflect addition of two new directories, intl and po.
+ Create po/Makefile.
+ From François Pinard.
+
+ * tr.c (star_digits_closebracket): Declare formal param, IDX,
+ and local I to be of type size_t (rather than int) to avoid
+ warnings from gcc -Wall.
+
+Wed Feb 28 20:32:48 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * src/Makefile.am: Adapt for automake-0.30.
+ (noinst_HEADERS): Rename from HEADERS.
+ (INCLUDES): Remove -I.. and -I$(srcdir). automake-0.30 adds these
+ to DEFS automatically.
+ * lib/Makefile.am (noinst_HEADERS): Rename from HEADERS.
+
+Wed Feb 21 18:56:27 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * join.c (xfields) [without -t]: Ignore leading blanks.
+ From David Dyck (dcd@tc.fluke.COM).
+
+Sun Feb 18 12:07:27 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * join.c [TOLOWER]: Define.
+ (usage): Briefly describe new --ignore-case (-i) option.
+ (memcasecmp): New function.
+ (main): Set IGNORE_CASE for -i.
+ (keycmp): Compare with memcasecmp if IGNORE_CASE is set.
+ Suggestion and an initial patch from Alberto Accomazzi
+ <alberto@cfa0.harvard.edu>.
+
+Sat Feb 17 18:54:40 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * sort.c: Add -z option. Change all occurrences of '\n' to `eolchar'.
+ (usage): Describe it.
+ (main): Set eolchar to 0 for -z.
+ From Mark W. Eichin <eichin@cygnus.com>.
+
+Fri Feb 16 21:44:14 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * join.c (main): Mark two strings for translation.
+ * md5sum.c (md5_check): Mark a string for translation.
+ From François Pinard.
+
+Mon Feb 12 21:12:28 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ Update for automake-0.29.
+ * Makefile.am (CONFIG_HEADER): Don't define. Automake now does it.
+ * src/Makefile.am: Likewise.
+ * lib/Makefile.am: Likewise.
+ * doc/Makefile.am (info_TEXINFOS): Renamed from TEXINFOS.
+ * man/Makefile.am (man_MANS): Renamed from MANS.
+
+ * fmt.c [TRUE]: Undefine before defining to avoid warning on NeXT.
+ [FALSE]: Likewise.
+ From Derek Clegg (dclegg@next.com).
+
+Sat Feb 3 16:20:40 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * Version 1.14.
+
+Wed Jan 31 23:26:13 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * tail.c (dump_remainder): Flush stdout when tailing-forever on
+ multiple files. From Carlos Canau <Carlos.Canau@relay.puug.pt>.
+
+Fri Jan 5 18:30:28 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * aclocal.m4: For SVR4 systems, use -Xc -D_POSIX_C_SOURCE in CFLAGS,
+ not just -Xc. From François Pinard.
+
+ * doc/Makefile.am (DIST_OTHER): Don't set to mdate-sh. mdate-sh is
+ distributed automatically. From Tom Tromey.
+
+Thu Jan 4 20:32:52 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * nl.c: Include rx.h after limit.h (not before) to avoid warning
+ about the redeclaration of RE_DUP_MAX in limit.h. rx.h protects
+ its definition. From Kaveh Ghazi.
+
+ * src/Makefile.am (DIST_OTHER): Include md5-test.rfc so make check
+ works again. Reported by François Pinard and Kaveh Ghazi.
+
+ * rx.c [SYNTAX]: Rename from SYNTAX_TABLE.
+ [SYNTAX_TABLE]: Remove extern dcl of re_syntax_table.
+ (RE_SEARCH_2_FN): Cast string1 and string2 to avoid pointer type
+ mismatch errors from e.g. SunOS's /bin/cc.
+ Reported by Kaveh Ghazi.
+
+Wed Jan 3 23:34:39 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * configure.in (VERSION): Set variable directly rather than from
+ a separate file.
+ * Makefile.am (DIST_OTHER): Remove VERSION.
+ * src/Makefile.am (version.c): Depend on Makefile, not ../VERSION.
+ (stamp-v): New target; depend on Makefile.
+ (DISTCLEANFILES): Add stamp-v, version.c.
+
+Tue Jan 2 00:08:08 1996 Jim Meyering (meyering@na-net.ornl.gov)
+
+ * sort.c (keycompare): Rewrite cases handling ignored characters
+ so that they really are ignored. Reported by Carl Johnson
+ <carlj@cjlinux.home.org>.
+
+Fri Dec 22 21:34:55 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * configure.in: Touch stamp-h only if config.h is remade.
+
+ * csplit.c (extract_regexp) [!WITH_REGEX]: Intialize
+ syntax_parens field.
+
+Mon Dec 18 21:42:44 1995 Jim Meyering (meyering@comco.com)
+
+ Use automake to generate Makefile.in files.
+ * Makefile.am: New file.
+ * doc/Makefile.am: New file.
+ * lib/Makefile.am: New file.
+ * man/Makefile.am: New file.
+ * src/Makefile.am: New file.
+
+Thu Dec 14 21:13:22 1995 Jim Meyering (meyering@comco.com)
+
+ * fmt.c (main): Use xstrtol instead of atoi.
+
+ * fold.c (main): Use xstrtol instead of atoi.
+ (fold_file): Make a couple locals `int', not size_t, and cast
+ fwrite's third parameter to size_t.
+
+ * nl.c (main): Use xstrtol instead of atoi.
+ Rename misleading --first-page=N option to --starting-line-number=N.
+ (usage): Update.
+
+ * uniq.c (main): Use xstrtol instead of atoi.
+
+Fri Dec 8 20:48:00 1995 Jim Meyering (meyering@comco.com)
+
+ * aclocal.m4 (fp_C_PROTOTYPES): Set ANSI2KNR to ./ansi2knr.
+
+Thu Dec 7 19:55:03 1995 Jim Meyering (meyering@comco.com)
+
+ * aclocal.m4 (ud_WITH_REGEX): New macro.
+ * configure.in: Use it.
+ * rx.c, rx.h: New files.
+ * lib/Makefile.in (REGEX): Set to @REGEXOBJ@, not regex.o.
+ (SOURCES, DISTFILES): Add rx.c, rx.h.
+ * acconfig.h (WITH_REGEX): Add it.
+ * csplit.c [!WITH_REGEX]: Include rx.h.
+ * nl.c [!WITH_REGEX]: Likewise.
+ * tac.c [!WITH_REGEX]: Likewise.
+ From Ulrich Drepper and François Pinard.
+
+Tue Dec 5 17:49:53 1995 Jim Meyering (meyering@comco.com)
+
+ * sort.c (main): Diagnose invalid arguments to -k, then fail.
+
+ * sort.c (numcompare): Properly handle all cases in which signs differ.
+ From Karl Heuer.
+
+ * Makefile.in (mandir): @mandir@ is just $(prefix)/man.
+ Append `/man1'. Reported by Karl Heuer.
+
+ * sum.c (bsd_sum_file): Remove misleading comment. From Karl Heuer.
+
+ * src/Makefile.in [.c._o]: Don't create $<-tmp. From Kaveh Ghazi.
+
+Fri Dec 1 01:02:36 1995 Jim Meyering (meyering@comco.com)
+
+ * lib/Makefile.in (default): New target.
+
+ * sort.c (numcompare): Properly order `-' and valid integers;
+ treat `-' as if it were zero. Reported by Ross Alexander
+ <r.alexander@auckland.ac.nz>.
+
+ * Makefile.in (DISTFILES): Remove unused mkdep-Makefile.
+ (.PHONY): Depend on default.
+
+Wed Nov 29 21:50:53 1995 Jim Meyering (meyering@comco.com)
+
+ * aclocal.m4 (jm_PROG_C_MKDEP): Remove, for now.
+ (jm_AUTODEPS): Likewise.
+ (jm_WITH_GNU_MAKE): Likewise.
+ * configure.in (jm_AUTODEPS): Remove.
+
+ * sort.c (begfield): Replace loop with equivalent if-else.
+ (limfield): Fix bug that made field specs like -k1.5 return a
+ pointer into LINE beyond the first field.
+ Don't try to trim trailing blanks here; it's not
+ possible because we don't know where the field begins.
+ Replace loop with equivalent if-else.
+ (trim_trailing_blanks): New function.
+ (findlines): Call it.
+ (keycompare): Likewise.
+ (main): Don't decrement T2 corresponding to `x' in field
+ specs like -ku.v,w.x.
+
+Sun Nov 26 15:50:23 1995 Jim Meyering (meyering@comco.com)
+
+ * csplit.c [!UINT_MAX]: Define.
+ [!INT_MAX]: Define.
+ Include xstrtoul.h.
+ (string_to_number): Remove function.
+ (check_for_offset): Use xstrtoul instead of string_to_number.
+ (parse_repeat_count): Likewise.
+ (parse_patterns): Likewise.
+ (main): Likewise.
+
+Wed Nov 22 23:12:47 1995 Jim Meyering (meyering@comco.com)
+
+ * Makefile.in (all et. al.): If make was invoked with -k and a
+ sub-make fails, fail after the loop rather than exiting right away.
+ Otherwise, make's -k option could be ineffective.
+
+Sat Nov 18 12:04:30 1995 Jim Meyering (meyering@comco.com)
+
+ * src/Makefile.in (version.c): Depend on ../VERSION, not Makefile.
+
+ Update for autoconf-2.5:
+ * src/Makefile.in (libdir): Set to @libdir@.
+ (bindir): Set to @bindir@.
+ * doc/Makefile.in (infodir): Set to @infodir@.
+ * man/Makefile.in (exec_prefix): Remove it.
+ (mandir): Set to @mandir@.
+ (bindir): Remove it.
+
+Thu Nov 16 21:25:45 1995 Jim Meyering (meyering@comco.com)
+
+ * Makefile.in (default): New default target. Depend on `all' to
+ work around bug in AIX-3.2.5's /bin/make. Reported by Andreas Luik
+ <luik@isa.de>.
+
+Wed Nov 15 23:48:31 1995 Jim Meyering (meyering@comco.com)
+
+ * mkdep-Makefile (.deps/empty.P): Depend on BUILT-HEADERS.
+
+ * aclocal.m4 (jm_PROG_C_MKDEP): Rename from jm_PROG_MKDEP.
+ * src/Makefile.in (C_MKDEP): Rename from MKDEP.
+ * lib/Makefile.in (C_MKDEP): Likewise.
+ * mkdep-Makefile (C_MKDEP): Likewise.
+ Add comments.
+
+ * csplit.c [__P]: Don't define it here.
+ * pr.c [__P]: Don't define it here.
+ * fmt.c [__P]: Don't define it here.
+ * system.h [__P]: Define it here.
+
+ * aclocal.m4 (jm_AUTODEPS): Rename from jm_WITH_AUTODEPS.
+ Revamp, with suggestions from Franc,ois Pinard.
+ (jm_WITH_GNU_MAKE): New macro.
+ (jm_PROG_MKDEP): New macro.
+ * configure.in (jm_PROG_MKDEP): Use it.
+ * src/Makefile.in (MKDEP): Set it.
+ * lib/Makefile.in (MKDEP): Likewise.
+ * mkdep-Makefile: Use MKDEP, not DEP_CC.
+ (DEP_CFLAGS): Remove it.
+
+Tue Nov 14 23:10:54 1995 Jim Meyering (meyering@comco.com)
+
+ * sort.c: Add support for sorting numbers in scientific notation.
+ Include xstrtod.h.
+ (struct keyfield): Add field: general_numeric.
+ (usage): Describe -g option.
+ (general_numcompare): New function.
+ (keycompare): Use new comparison function when general_numeric
+ flag is set.
+ (set_ordering): Honor `g' flag.
+ (main): Initialize and use new field.
+ From Marcus Daniels <marcus@sysc.pdx.edu>.
+
+ * configure.in (AC_REPLACE_FUNCS): Add strtod.
+ * lib/Makefile.in (SOURCES): Add xstrtod.c.
+ (OBJECTS): Add xstrtod.o.
+ (DISTFILES): Add xstrtod.h.
+
+ * csplit.c (cleanup): Don't exit.
+ (interrupt_handler): Rewrite to reset default signal handler
+ then repost caught signal.
+ (xmalloc, xrealloc, read_input, write_to_file, handle_line_error,
+ process_line_count, process_regexp, create_output_file,
+ close_output_file): Call cleanup_fatal, not cleanup.
+ Add const attribute to lots of parameters.
+ (cleanup_fatal): Renamed from cleanup. Call cleanup, then exit.
+ Update callers.
+
+ * tac.c (cleanup): Don't exit.
+ (cleanup_fatal): New function. Call cleanup, then exit.
+ (sighandler): New function.
+ (cleanup_fatal): Renamed from cleanup. Call cleanup, then exit.
+ Update callers.
+ (tac_stdin): Set up sighandler as signal handler, not `cleanup'.
+
+Sat Nov 11 15:46:02 1995 Jim Meyering (meyering@comco.com)
+
+ * od.c (skip): Cast fseek's offset argument to `long'.
+ Erik Bennett <bennett@cvo.oneworld.com> reported that this is
+ necessary on BSDI systems. And if offset doesn't fit in a long,
+ then try using lseek instead.
+
+ * sort.c (xmalloc): Declare static.
+ (xrealloc): Likewise.
+
+ * tac.c (cleanup): Add signal number parameter.
+ Update callers.
+
+ * cat.c (main): Don't die when dev/ino of input and output are
+ the same and the file descriptors correspond to stdin and stdout.
+ This is necessary on at least Digital UNIX (aka OSF1) 3.2C.
+ Otherwise, running `cat << X > $$' would fail with `cat: -: input
+ file is output file'. From Jarkko Hietaniemi <jhi@epsilon.hut.fi>.
+
+ * Makefile.in (DISTFILES): Add @README_ALPHA@.
+ (config.status) Depend on VERSION.
+ * configure.in: Set README_ALPHA if the version number ends in [a-z].
+
+Fri Nov 10 21:13:42 1995 Jim Meyering (meyering@comco.com)
+
+ * fold.c (usage): Clarify meaning of --spaces. From Karl Berry.
+
+ src/Makefile.in (.c._c): Don't redirect directly to $@.
+ (._c._o, .c._o): Remove temporary src file.
+
+Tue Nov 7 23:55:24 1995 Jim Meyering (meyering@comco.com)
+
+ * VERSION: New file.
+ * configure.in (VERSION): New variable.
+ (PACKAGE): New variable.
+
+ * Makefile.in (DISTFILES): Add VERSION.
+ (distdir): Use @PACKAGE@-@VERSION@, not distname.
+ Remove all references to distname.
+ * src/Makefile.in (version.c): Generate it.
+ (SOURCES): Remove now-generated version.c.
+ (distclean): Delete version.c.
+ * doc/Makefile.in (version.texi): Use @PACKAGE@-@VERSION@,
+ not version.c
+
+ * */Makefile.in (distdir): Use @PACKAGE@-@VERSION@, not distname.
+ Remove all references to distname.
+
+ * split.c: New option: --verbose.
+ (main): Recognize it.
+ (usage): Document it.
+ From Marty Leisner <leisner@sdsp.mc.xerox.com>.
+
+Sun Nov 5 06:59:27 1995 Jim Meyering (meyering@comco.com)
+
+ * src/Makefile.in: Reflect protoization of csplit.c, fmt.c, pr.c,
+ and unexpand.c.
+
+ * pr.c: Protoize.
+ (store_columns): Remove spurious 2nd argument in call to read_line.
+ [__P]: Define. Use it in prototyped forward decls.
+
+ * csplit.c: Move prototypes after struct declarations.
+ Remove prototypes for xmalloc, xrealloc.
+ Protect prototypes with __P.
+ (new_control_record): Cast arg 1 to realloc.
+
+ * fmt.c [__P]: Test PROTOTYPES, not __STDC__.
+ Protoize.
+
+Sat Nov 4 23:51:30 1995 Jim Meyering (meyering@comco.com)
+
+ * csplit.c (close_output_file): Set output_stream to NULL so we
+ don't recurse endlessly between this function and cleanup.
+
+ * unexpand.c: Reorder functions to obviate forward dcls. Remove
+ forward dcls. Protoize. Add `const' attribute to some parameters.
+
+Mon Oct 30 23:15:56 1995 Jim Meyering (meyering@comco.com)
+
+ * wc.c: Reorder functions to obviate forward dcls. Remove
+ forward dcls. Protoize. Add `const' attribute to some parameters.
+ * uniq.c: Likewise.
+ * split.c: Likewise.
+
+ * split.c (isdigits, convint): Remove these.
+ (main): Use xstrtol instead.
+
+Sun Oct 29 14:04:36 1995 Jim Meyering (meyering@comco.com)
+
+ * paste.c (main): Move function body to end of file.
+ Remove forward dcls and protoize.
+ * sum.c (main): Likewise.
+ * nl.c: Protoize. Reorder functions to obviate forward dcls.
+ Remove forward dcls.
+ * tac.c: Likewise.
+ * src/Makefile.in (OBJECTS): Reflect that all of the above
+ now use prototypes.
+
+ * sum.c (bsd_sum_file): Give file name parameter const attribute.
+ (sysv_sum_file): Likewise.
+
+ * tac.c (xwrite): Give output buffer parameter const attribute.
+ (output): Likewise for both parameters.
+ (tac): Likewise for file name parameter.
+ (tac_file): Likewise.
+
+Sat Oct 28 16:02:39 1995 Jim Meyering (meyering@comco.com)
+
+ * md5sum.c (md5_check): Use the same message format when there is
+ a single file and it gets a read error or checksum mismatch as when
+ there are more. Write that warning to standard error, not standard
+ output. Suggestions from Greg Troxel (gdt@b-sgi.bbn.com).
+
+Thu Oct 26 00:11:35 1995 Jim Meyering (meyering@comco.com)
+
+ * sort.c (xtmpfopen): New function to set proper permissions on
+ temporary files. Use it instead of xfopen. Reported by Erik Corry
+ (erik@kroete2.freinet.de).
+
+Mon Oct 23 23:17:04 1995 Jim Meyering (meyering@comco.com)
+
+ * aclocal.m4 (jm_WITH_AUTODEPS): New directive.
+ * configure.in: Use it.
+
+ * lib/Makefile.in (INCLUDE, COMPILE): New variables.
+ (.c.o): Rewrite to be more like src/Makefile.in.
+
+ * src/Makefile.in (distclean): Remove .deps.
+ Include @top_srcdir@/mkdep-Makefile.
+
+ * mkdep.Makefile: New file.
+ * Makefile.in (DISTFILES): Add mkdep-Makefile.
+ * doc/Makefile.in (mostlyclean): Also remove *.info.
+
+Thu Oct 19 17:38:28 1995 Jim Meyering (meyering@comco.com)
+
+ * od.c: Indent cpp directives.
+
+ * tr.c (BEGIN_STATE): Use INT_MAX - 1 so as not to interfere
+ with large repeat counts.
+ (struct E_string): New struct.
+ (find_closing_delim): Take E_string arg rather than char* and length.
+ (find_bracketed_repeat): Likewise.
+ (star_digits_closebracket): New function.
+ (append_char_class): No longer give diagnostic.
+ (append_equiv_class): Likewise.
+ (build_spec_list): Give them here instead, allowing string1 like
+ [:*][:upper:] that got errors before.
+ Take E_string arg rather than char*.
+ Convert switch stmts into if-then so as to use ES_MATCH.
+
+Tue Oct 17 22:48:00 1995 Jim Meyering (meyering@comco.com)
+
+ * cat.c: Protoize. Reorder functions to obviate forward dcls.
+ Remove forward dcls.
+ * expand.c: Likewise.
+ * fold.c: Likewise.
+ * head.c: Likewise.
+ * od.c: Likewise.
+ * sort.c: Likewise.
+ * tail.c: Likewise.
+
+ * src/Makefile.in (OBJECTS): Reflect that all of the above
+ now use prototypes.
+
+ * head.c: Add `const' attribute to dcls of lots of formals.
+
+ * sort.c: Add `const' attribute to dcls of lots of formals.
+ Move struct dcls to precede dcls of file-scope variables.
+ (monthtab, keyhead): Separate variable dcls from type dcls.
+
+Fri Oct 13 20:38:39 1995 Jim Meyering (meyering@comco.com)
+
+ * join.c (add_field_list): Allow SPACE and TAB as well as `,' as
+ list item separators, per POSIX spec.
+ (prjoin): Rewrite loop that iterates over field specs.
+ Handle case in which file spec is 0.
+
+Sun Oct 8 22:41:15 1995 Jim Meyering (meyering@comco.com)
+
+ * strpbrk.c: New file.
+ * lib/Makefile.in (SOURCES): Add strpbrk.c.
+ Remove bcopy.c.
+
+Sat Oct 7 22:27:01 1995 Jim Meyering (meyering@comco.com)
+
+ * join.c (add_field): No longer return a value.
+ (decode_field_spec): New function.
+ (add_field_list): Rewrite to be more strict.
+ Before, `,1.2' was accepted as valid.
+ (main): Use xstrtol instead atoi.
+ Combine nearly identical -a and -v cases.
+ Close input files.
+
+Fri Oct 6 23:10:01 1995 Jim Meyering (meyering@comco.com)
+
+ * join.c (main): Report `too few/many non-option arguments'
+ then print --help output rather than just the latter.
+ Properly interpret obsolescent usage like `join -o 2.1 2.1 2.2'.
+ (usage): Describe POSIX -1, -2 options and deprecate -j* ones
+
+ * join.c (usage): Move to precede all other functions.
+
+ * join.c: Protoize.
+
+Tue Oct 3 22:44:05 1995 Jim Meyering (meyering@comco.com)
+
+ * csplit.c, sort.c, tac.c: Test SA_INTERRUPT, not _POSIX_VERSION,
+ to determine whether `sigaction' functions are available.
+ Reported by Paul Nevai <nevai@ops.mps.ohio-state.edu>.
+ Fix suggested by Karl Berry.
+
+ * md5sum.c (main): Declare counter, N_STRINGS, to be an integral
+ type, not `char'.
+
+ * cut.c: Convert many declarations using `int' to use `unsigned int'
+ to avoid warnings from `gcc -Wall' about comparing signed and
+ unsigned types.
+ (set_fields): Use memset (not open coded loop) to initialize array.
+
+Thu Sep 28 23:16:05 1995 Jim Meyering (meyering@comco.com)
+
+ * Version 1.13.
+
+ * Makefile.in (DISTFILES): Remove README.alpha for major release.
+
+ * od.c (decode_one_format): Remove spurious semicolon.
+ From John Kodis.
+
+Tue Sep 26 23:05:01 1995 Jim Meyering (meyering@comco.com)
+
+ * man/Makefile.in (install-data, uninstall): Use sed not basename.
+ The GNU Coding Standard suggests that only a select set of
+ relatively standard utilities be used in Makefiles. basename is
+ not among them. Suggested by Ulrich Drepper.
+
+Sun Sep 24 08:36:47 1995 Jim Meyering (meyering@comco.com)
+
+ * cksum.c: Protoize.
+ * cut.c: Protoize.
+
+ * src/Makefile.in (OBJECTS): Reflect that cksum.c and cut.c use
+ prototypes.
+ (cksum): Depend on cksum$O.
+ (cut): Depend on cut$O.
+
+Sat Sep 23 15:43:46 1995 Jim Meyering (meyering@comco.com)
+
+ * Version 1.12.2.
+
+ * Makefile.in (DISTFILES): Add README.alpha.
+
+ * lib/Makfile.in (GETOPT, MEMCHR, REGEX): New variables.
+ (OBJECTS): Use them instead of hard-coding object file names.
+ Suggested by Ulrich Drepper.
+
+ * md5sum.c (md5_check): Distinguish between open/read failure
+ and checksum mismatch.
+
+Mon Sep 18 23:15:05 1995 Jim Meyering (meyering@comco.com)
+
+ * md5sum.c: Protoize.
+ * src/Makefile.in (OBJECTS): Change md5sum.o to md5sum$O.
+ (join.o, md5sum$O, sort.o) Depend on ../lib/long-options.h.
+ (md5sum): Depend on md5sum$O.
+
+ * md5sum.c (main, usage): Remove -h, -s, -v short options.
+ Rename --verbose to --warn, --quiet to --status.
+ (main): Handle --help and --version using parse_long_options.
+ (md5_check): Check ferror.
+
+ * sort.c (tempname): Replace `16' with a more readable expansion.
+ Make sure that counter never exceeds 99999.
+ (checkfp): Rearrange loop to avoid duplicate test.
+ Move a couple dcls from function scope into inner block.
+
+Tue Aug 8 21:49:27 1995 Jim Meyering (meyering@comco.com)
+
+ * md5sum.c (main): Fail if either --verbose or --quiet is specified
+ when not verifying checksums.
+
+ * md5sum.c (md5_check): Fail if no valid line is found.
+ Don't use the word `fail' unless there were failures --
+ instead, say `all N tests passed.'
+
+ * md5sum.c (main) [handling --string option]: Don't output
+ nonstandard `b' binary flag. From Greg Troxel (gdt@bbn.com).
+ * md5-test.rfc: Remove now-inconsistant `b' marker.
+ (usage): Clarify help message. With suggestions from Greg Troxel.
+
+Mon Aug 7 23:27:54 1995 Jim Meyering (meyering@comco.com)
+
+ * sort.c (mergefps) [lint]: Initialize SAVEALLOC to avoid spurious
+ compiler warning. From Ulrich Drepper.
+
+ * pr.c (read_line) [lint]: Initialize CHARS to avoid spurious
+ compiler warning. From Ulrich Drepper.
+
+ * Makefile.in (DISTFILES): Don't distribute unneeded COPYING.LIB.
+ From Franc,ois.
+
+Mon Aug 7 00:02:59 1995 Jim Meyering (meyering@comco.com)
+
+ * system.h (_): Define macro -- as empty for now.
+ * src/*.c: Annotate localizable strings with _(...). From Franc,ois.
+
+Sat Aug 5 23:51:25 1995 Jim Meyering (meyering@comco.com)
+
+ * Version 1.12.1.
+
+ * configure.in: Add fp_C_PROTOTYPES.
+
+Fri Aug 4 23:21:46 1995 Jim Meyering (meyering@comco.com)
+
+ * src/Makefile.in (DISTFILES): Include ansi2knr.c and ansi2knr.1.
+ Add suffixes, dependencies, and rules to convert ANSI source to K&R
+ when required. Mark tr.o and comm.o as the only such files (for now).
+
+ * tr.c: Protoize.
+ * comm.c: Protoize.
+
+ * Makefile.in (DISTFILES): Add aclocal.m4 and acconfig.h.
+ (configure): Depend on aclocal.m4.
+ (stamp.h.in): Depend on aclocal.m4 and acconfig.h.
+
+Sun Jul 30 00:01:58 1995 Jim Meyering (meyering@comco.com)
+
+ * md5sum.c (md5_check): Use getline instead of fgets.
+
+ * lib/Makefile.in (SOURCES): Add getline.c.
+ (OBJECTS): Add getline.o.
+ (DISTFILES): Add getline.h.
+ (getline.o): Depend on getline.h.
+
+ * md5.c [memcpy]: Define to bcopy if needed.
+ (md5_buffer): Explicitely cast SWAP expressions to unsigned
+ to avoid warning.
+
+ * lib/Makefile.in (strtoul.o): Depend on strtol.c.
+
+ * sort.c (check): Print `disorder on...' message on standard error,
+ not stdout. This is a minor concession to POSIX which says
+ `no output shall be produced...'.
+
+ * sort.c (main): Fix -k so it works. -k 2,3 was being treated
+ like -k 2. Reported by Marcus Daniels <marcus@sysc.pdx.edu>.
+
+Wed Jul 26 22:54:48 1995 Jim Meyering (meyering@comco.com)
+
+ * man/Makefile.in (install, uninstall): Strip off `.1', not just `1'
+ before applying $(transform) to manual name. From Karl Berry.
+
+ * md5sum.c (have_read_stdin): New global variable.
+ (md5_file, md5_check): Set it.
+ (main): Use it.
+
+ * md5sum.c [OPENOPTS]: Depend explicitly on BINARY.
+ (md5_file): Take a new parameter, MD5_RESULT, and no longer
+ generate output.
+ (md5_check): Invoke md5_file instead of calling fopen directly.
+ When giving a diagnostic for a line with invalid format, also report
+ the line number.
+ (main): Generate output after a successful md5_file call.
+ [in many places]: Upon detection of an error, rather than exiting
+ immediately, issue a diagnostic, note that an error occurred and
+ exit later.
+
+Mon Jul 24 21:48:26 1995 Jim Meyering (meyering@comco.com)
+
+ * tail.c (tail_bytes) [from_start]: For regular files, seek
+ relative to the initial input file pointer position, not
+ necessarily from the beginning of the file.
+ [!from_start]: Don't back up past the initial position of the
+ input file pointer.
+ (tail_lines): Call file_lines only if FD refers to a regular file
+ with its file pointer positioned at beginning of file. Otherwise,
+ call pipe_lines. This is a kludge. Once there's a decent test
+ suite, fix this properly.
+ Before, (echo 1; echo 2) > k; sh -c 'read x; tail' < k
+ would output both lines of the input file even though the first had
+ already been read. Reported by John Roll (john@panic.harvard.edu).
+
+ * md5sum.c [_LIBC || STDC_HEADERS] (TOLOWER): Define to tolower.
+
+ * csplit.c (main): When too few arguments are given, don't just
+ issue the usage message; also report why.
+
+Sat Jul 22 00:16:01 1995 Jim Meyering (meyering@comco.com)
+
+ * md5sum.c (md5_check): New function -- extracted from main.
+
+Fri Jul 21 01:21:49 1995 Jim Meyering (meyering@comco.com)
+
+ * md5sum.c (md5_file): New function -- extracted from main.
+ (main): Call the new function instead of doing all that in an
+ if-stmt. Always use "%s" format rather than raw filename as
+ format argument in printf-style functions like error. Otherwise,
+ filenames containing `%' are likely to lose.
+ Remove all mention of `old format'.
+ (split_3): No longer parse the `new format.' There is only one
+ valid format now: the compatible one.
+
+ * lib/Makefile.in (SOURCES): Add md5.c.
+ (OBJECTS): Add md5.o.
+ (DISTFILES): Add md5.h.
+ (md5.o): Depend on md5.h.
+
+ * system.h [!EXIT_FAILURE, !EXIT_SUCCESS]: Define them.
+ * lib/md5.c (md5_stream): Check for read failure and return
+ indication of success rather than second argument.
+ * lib/md5.h (md5_stream): Update prototype.
+ [__P]: Define macro.
+ * md5sum.c: Use EXIT_FAILURE and EXIT_SUCCESS.
+ (main): Report an error if md5_stream fails. Otherwise, running
+ `md5sum dir-on-mounted-filesystem' always reported the checksum
+ for an empty file. Now it gets the `is a directory' error.
+ Greg McGary (gkm@magilla.cichlid.com) reported that the released
+ version got stuck in an infinite loop with such arguments.
+
+ * lib/md5.c: New file.
+ * lib/md5.h: New file.
+ * md5sum.c: Rewritten to use library interface.
+ From Ulrich Drepper.
+
+Sun Jul 16 18:42:34 1995 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Add AC_C_INLINE: md5sum.c uses inline keyword.
+
+Tue Jul 11 21:56:02 1995 Jim Meyering (meyering@comco.com)
+
+ * md5sum.c Add #else block after #ifdef VMS.
+ (main): Rename local variable.
+ Detect and report failed fclose calls on stdout and checkfile_stream.
+
+ * tr.c (unqote): Comment out unreachable break stmts.
+ (append_range): Declare FIRST and LAST parameters to be unsigned int,
+ not size_t.
+ (find_closing_delim): Clean up interface, separating boolean success
+ indicator and index.
+ (find_bracketed_repeat): Likewise.
+ (build_spec_list): Adapt to use new interfaces.
+ Declare CLOSING_DELIM_IDX and CLOSING_BRACKET_IDX to be of
+ type size_t, not int.
+ (main): Declare NR and CHARS_READ to be of type long, not int.
+
+ * sort.c (main): Comment out unreachable break stmt.
+
+ * tail.c (tail): Explicitly cast to long the N_UNITS argumennt in
+ call to tail_lines. Otherwise, NetBSD lost because N_UNITS (of type
+ off_t, a 64-bit type on NetBSD) wasn't converted to the target type,
+ long. Reported by Dan Hagerty (hag@gnu.ai.it.edu).
+
+ * comm.c: Reorder functions so main is last, so no forward dcls
+ are needed.
+
+Sun Jul 9 11:41:15 1995 Jim Meyering (meyering@comco.com)
+
+ * sort.c (main): When using obsolescent +pos -pos syntax, allow
+ omission of field spec only when character offset is specified.
+ Otherwise, -. +. would be accepted.
+
+Sat Jul 8 13:48:06 1995 Jim Meyering (meyering@comco.com)
+
+ * sort.c (main): Allow field spec, M, to be omitted in +M.N or -M.N
+ position specification. For compatibility with existing practice
+ (what vendors?), omitting M is now equivalent to specifying `0' for M,
+ but only when using the +pos -pos syntax, not with the -k option.
+ From Rick Sladkey (jrs@world.std.com).
+
+Thu Jul 6 23:44:20 1995 Jim Meyering (meyering@comco.com)
+
+ * od.c (dump): Correct loop-termination criterion.
+ Before, running `printf 1234| ./od --width=4 --read-bytes=4'
+ printed output for 8 bytes -- the last four were garbage.
+ This happened only when the dump limit, N, was specified (with
+ --read-bytes=N) and N was a multiple of bytes_per_block
+ (usually 16, but 4 in this example). From Andreas Schwab.
+
+Sun Jul 2 22:12:40 1995 Jim Meyering (meyering@comco.com)
+
+ * lib/Makefile.in (check): Depend on libtu.a.
+
+ * md5sum.c (split_3): Rewrite to parse Plumb/Lankester format as well.
+ (main): Print each sum line in (de facto) standard Plumb/Lankester
+ format.
+ New option: --quiet.
+ Check option no longer takes an argument.
+ When checking, exit status reflects success.
+
+Sat Jun 24 16:18:01 1995 Jim Meyering (meyering@comco.com)
+
+ * md5sum.c [__GNUC__]: Don't conditionalize use of "inline".
+ Autoconf (via config.h) defines it away for compilers that don't
+ grok it.
+
+ * cat.c, comm.c, join.c, sort.c, uniq.c: Undefine min/max before
+ defining to avoid redefinition warning on some systems.
+
+ * csplit.c (read_input): Rename paramater MAX to MAX_N_BYTES.
+ This avoids potential conflict with max macro from some system's
+ header files when using bad pre-ANSI compilers.
+
+ * uniq.c (usage): Fix typo in text of --help output.
+ From Steve McConnel <steve@acadcomp.sil.org>
+
+ * md5sum.c [uint32]: When testing for 32-bit arithmetic type,
+ also check `unsigned long', as a concession to systems with
+ int's smaller than 32 bits.
+
+ * configure.in (AC_REPLACE_FUNCS): Remove memcmp (again!) since
+ AC_FUNC_MEMCMP already handles it. This avoids warnings from
+ ranlib on nextstep systems. From Kaveh Ghazi.
+
+ * csplit.c (interrupt_handler): Declare to have a single integer
+ parameter. Otherwise, some compilers fail with a type mismatch
+ error in sa_handler assignment.
+
+ * fmt.c [word]: Redefine. Otherwise, systems (Unicos for one) with
+ headers that typedef `word' get syntax errors because of the
+ variable by the same name.
+
+ * join.c [join]: Redefine to avoid conflict with prototype in some
+ system header file. Also for Unicos.
+
+ * md5sum.c (main): Remove spurious colon in getopt spec string.
+ From Ken Pizzini <kenp@spry.com>.
+
+Tue Jun 20 06:59:16 1995 Jim Meyering (meyering@comco.com)
+
+ * md5sum.c (md5_file): Initialize two elements of LEN portably,
+ rather than with ANSI aggregate initialization. Reported by
+ Edzer Pebesma <Edzer.Pebesma@rivm.nl>.
+
+Sun Jun 18 09:15:57 1995 Jim Meyering (meyering@comco.com)
+
+ * Version 1.12.
+
+ * md5sum.c (process_buffer): Copy values from struct into
+ individual local variables before performing computation on them,
+ then copy results back into returned struct. Solely for better
+ optimization by compilers that can't keep struct members in
+ registers. From Ulrich Drepper.
+
+Thu Jun 15 22:09:14 1995 Jim Meyering (meyering@comco.com)
+
+ * md5sum.c: Remove unnecessary uses of `defined' in #if* tests.
+ Don't use #elif. Some older compilers don't grok it.
+ (split_3): New function to parse out sum, flag, and filename
+ when reading check file.
+ (hex_digits): Remove length parameter since string parameter is
+ now nul-terminated.
+ (main): Don't allocate separate arrays for filename and sum
+ when checking. Get pointers into line buffer with split_3 instead
+ of using sscanf.
+ (main): Treat `no file args' just like `-' when not checking
+ or using strings.
+ (hex_digits): Unprotoize.
+
+ * md5sum.c (main): Don't use a separate loop to convert to lower
+ case. Suggested by Ulrich Drepper.
+ (CLOSE): New macro.
+ (md5_file): Use it.
+ From Ulrich Drepper.
+
+ * md5sum.c: Don't include values.h.
+ [__P]: Undefine it.
+
+ * md5sum.c: [UNIX || unix]: Also test __UNIX__, __unix__,
+ and _POSIX_VERSION. Reported by Arne H. Juul.
+
+Tue Jun 13 21:20:10 1995 Jim Meyering (meyering@comco.com)
+
+ * tr.c [NDEBUG]: Define it to disable assertions. Some systems
+ have a broken <assert.h> header.
+ (is_char_class_member): Set a variable in each branch of switch
+ stmt and return that value after the switch (rather than returning
+ directly from every branch).
+ (unquote): More int->size_t changes.
+ (build_spec_list): More int->size_t changes.
+ Be very careful about comparison now that variables are unsigned:
+ Use i + 2 < len rather than i < len - 2. The latter didn't work
+ for len < 2. Caught early thanks to a thorough regression test
+ suite.
+
+Mon Jun 12 23:07:59 1995 Jim Meyering (meyering@comco.com)
+
+ * sort.c (xfclose): Don't try to flush stdin, only stdout.
+ Otherwise, at least Ultrix-4.3's fflush would return EOF.
+ Reported by Jim Blandy (jimb@cyclic.com).
+
+ * tr.c (non_neg_strtol): Don't compare signed and unsigned.
+ [struct Spec_list] (indefinite_repeat_element): New member.
+ Use size_t rather than int or unsigned long where reasonable.
+ (get_spec_status): Make interface cleaner.
+ (get_s1_spec_status): New function.
+ (get_s2_spec_status): New function.
+ (validate): Use new functions instead of get_spec_status.
+
+Sun Jun 11 00:39:50 1995 Jim Meyering (meyering@comco.com)
+
+ * md5sum.c: New file. From Ulrich Drepper.
+ * md5-test.rfc: New file.
+ * Makefile.in (PROGS): Add md5sum.
+ (check): Run a recursive make in each subdirectory.
+ * man/Makefile.in (MANFILES): Add md5sum.1.
+ * src/Makefile.in (SOURCES): Add md5sum.c.
+ (OBJECTS): Add md5sum.o.
+ (PROGS): Add md5sum.
+ (check): Add basic checks for md5sum.
+ (md5sum): Add dependency and link rule.
+ (DISTFILES): Add md5-test.rfc.
+
+ * tr.c (look_up_char_class, append_char_class, append_equiv_class):
+ Use const attribute when appropriate.
+
+Sun May 28 14:48:58 1995 Jim Meyering (meyering@comco.com)
+
+ * join.c: Overhauled to make -a1 and -a2 options work.
+ Passed all tests in a fairly thorough test suite.
+ Reported by Michael Hasselberg (mikelh@zonta.ping.de).
+
+Sat May 27 00:35:47 1995 Jim Meyering (meyering@comco.com)
+
+ * tail.c (main): Remove dcl of and statements that set now-unused
+ variable.
+
+ * system.h [!STDC_HEADERS && HAVE_MEMORY_H]: Include memory.h.
+ Without this, SunOS doesn't get type for memchr.
+ Reported by Kaveh Ghazi.
+
+Thu May 25 00:06:50 1995 Jim Meyering (meyering@comco.com)
+
+ * tail.c (tail_lines): Change one more `long' to `off_t'.
+ Otherwise, tail didn't work on NetBSD. From Arne H. Juul.
+
+ * csplit.c [struct control]: Change type of `repeat' to unsigned
+ long to avoid conversion warning.
+
+Sun May 21 07:50:00 1995 Jim Meyering (meyering@comco.com)
+
+ * Makefile.in (.PHONY): TAGS is not a phony target. From Franc,ois.
+
+ * xstrtol.c (__strtol): Remove prototype altogether.
+ Move inclusion of xstrtol.h back so that it follows system headers.
+
+ * Version 1.11.2.
+
+Sat May 20 06:44:14 1995 Jim Meyering (meyering@comco.com)
+
+ * join.c (ADD_FIELD): Declare in K&R style, not ANSI.
+ From Kaveh Ghazi.
+
+ * xstrtol.c: Define NDEBUG for systems with losing assert.h.
+ (__strtol): Add __unsigned to prototype and use __P.
+ Move inclusion of xstrtol.h to precede prototype.
+ From Kaveh Ghazi.
+
+ * memmove.c: Include config.h for definition of const.
+ From Kaveh Ghazi.
+
+ * All Makefile.in (install-exec, install-exec): New targets.
+ From Karl Berry.
+
+ * tr.c (look_up_char_class): Take a string length argument -- required
+ because the argument is a string that is *not* NUL-terminated.
+ Use strncmp, not strcmp and add string lengths comparison.
+ (append_char_class): Update caller. Before this change,
+ tr '[:upper:]' '[:lower:]' read one uninitialized byte.
+ From Andreas Schwab.
+
+ * split.c (next_file_name): Move dcls of file-scope variables into
+ this function. Don't rely on arithmetic being two's complement.
+
+ * paste.c [CLOSED, ENDLIST]: Don't cast constants to FILE pointers.
+ Instead, declare two FILE structs and use their addresses.
+
+ * csplit.c (record_line_starts): Remove set-but-not-used,
+ file-scope variable.
+
+Sat May 13 08:57:20 1995 Jim Meyering (meyering@comco.com)
+
+ * all source files (usage): Include one- or two-line synopsis
+ in --help output. From Karl Berry.
+
+ * lib/Makefile.in [.c.o]: Remove -I. since safe-l?stat.h are no
+ longer used.
+
+Wed May 10 22:26:35 1995 Jim Meyering (meyering@comco.com)
+
+ * Version 1.11.1
+
+Sun May 7 13:35:49 1995 Jim Meyering (meyering@comco.com)
+
+ * all Makefile.in (maintainer-clean): Renamed from realclean
+ per GNU Standards.
+
+Thu May 4 23:15:58 1995 Jim Meyering (meyering@comco.com)
+
+ * sort.c (main): Use stat, not safe_stat. The latter was unnecessary.
+ Don't include safe-stat.h.
+
+ * lib/Makefile.in (DISTFILES): Remove safe-xstat.hin.
+ Remove all associated rules. safe-l?stat.h are no longer used.
+
+ * sort.c Don't hard-code /tmp.
+ [DEFAULT_TMPDIR]: Use this instead.
+ * tac.c (save_stdin): Likewise.
+
+ * sort.c (set_ordering): Properly parse arguments like `+x.yn'.
+ Reported by John Salmon (johns@mullet.anu.edu.au).
+ Patch from Mike Haertel.
+
+Wed Apr 26 23:48:13 1995 Jim Meyering (meyering@comco.com)
+
+ * sort.c (tempname): AND-off high bits of pid so that its decimal
+ string representation is no longer than five digits.
+ From Hans Verkuil (hans@wyst.hobby.nl).
+
+Thu Apr 20 23:09:33 1995 Jim Meyering (meyering@comco.com)
+
+ * expand.c (add_tabstop): Give correct size when reallocating
+ tab_list buffer. From Geoff Odhner (geoff@franklin.com).
+ Reproduce with expand --t=`perl -e "print join (',', (1..300));"`.
+
+Tue Apr 18 22:57:43 1995 Jim Meyering (meyering@comco.com)
+
+ * configure.in (AC_OUTPUT): Use echo, not date, to avoid creating
+ unnecessary conflicts for people using version control software
+ like RCS and CVS.
+ (AC_ARG_PROGRAM): Use it.
+
+Thu Apr 13 23:22:57 1995 Jim Meyering (meyering@comco.com)
+
+ * head.c: Remove block of redundant comments describing options.
+ (usage): Remove reference to -l option. It's not valid.
+
+ * od.c (write_block): Declare index I as unsigned int, not int.
+ (get_lcm): Likewise.
+ (dump_strings): Likewise.
+ (main): Likewise.
+ (dump): Cast BYTES_PER_BLOCK to off_t in MIN expression.
+ (dump_strings): Declare bufsize to be of type size_t, not int.
+
+ * split.c (next_file_name): Don't reuse X as an index.
+ Declare new variable I instead.
+
+Sat Mar 25 15:07:23 1995 Jim Meyering (meyering@comco.com)
+
+ * csplit.c: Declare as `unsigned int' all variables that were
+ just `unsigned'.
+ (make_filename): Change type of arg to unsigned int.
+ (split_file): Change type of indices to unsigned int.
+
+Thu Mar 16 22:05:05 1995 Jim Meyering (meyering@comco.com)
+
+ * od.c (main): Detect and fail when argument to -N is too large
+ to fit in an off_t.
+
+Sun Mar 12 12:02:39 1995 Jim Meyering (meyering@comco.com)
+
+ * configure.in (AC_REPLACE_FUNCS): Add memcmp.c.
+ Remove check for sizeof long.
+
+ * linebuffer.h: Undefine __P before defining it.
+ * long-options.h: Likewise.
+ * xstrtol.h: Likewise.
+
+ * memcpy.c: New file.
+ * lib/Makefile.in (SOURCES): Add memcpy.c.
+
+Fri Mar 10 21:14:11 1995 Jim Meyering (meyering@comco.com)
+
+ * src/*.c: Update Copyright dates.
+
+Sat Feb 11 07:31:08 1995 Jim Meyering (meyering@comco.com)
+
+ * system.h: Remove index/rindex and bcmp/bcopy/bzero references.
+ Separate errno declaration from STDC_HEADERS.
+
+ * wc.c (wc): For efficiency, handle separately the cases in which
+ words need not be counted. Suggested by Karl Heuer.
+
+ * wc.c (wc): Don't overcount the number of bytes when reading
+ from a regular file on stdin with file pointer not at BOF.
+ From Karl Heuer <karl@gnu.ai.mit.edu>. Before, the command
+ `(dd ibs=99k skip=1; wc -c) < /etc/group' made wc wrongly output
+ the size of the file. Now it outputs `0'.
+
+Sat Jan 28 07:07:23 1995 Jim Meyering (meyering@comco.com)
+
+ * cat.c (cat): Use memmove rather than bcopy.
+ * csplit.c (load_buffer): Use memcpy rather than bcopy.
+ (extract_regexp): Use strrchr, not rindex.
+ * fmt.c (isopen, isclose, isperiod): Use strchr, not index.
+ (flush_paragraph): Use memmove instead of bcopy.
+ * fold.c (fold_file): Use memmove instead of bcopy.
+ * od.c (decode_format_string): Use memmove instead of bcopy.
+ [EQUAL_BLOCKS]: Use memcmp, not bcmp.
+ (parse_old_offset): Use strchr, not index.
+ (dump): Use memset, not bzero.
+ * sort.c (checkfp, mergefps): Use memcpy instead of bcopy.
+ (fillbuf): Use memmove instead of bcopy.
+ * split.c (main): Use memset, not bzero.
+ (line_bytes_split): Use memmove instead of bcopy.
+ * tac.c (tac): Use memmove instead of bcopy.
+ (output): Use memcpy instead of bcopy.
+ * tail.c (pipe_lines, pipe_bytes): Use memcpy instead of bcopy.
+ * tr.c (substr): Use memcpy instead of bcopy.
+ (card_of_complement, set_initialize): Use memset, not bzero.
+
+ * tr.c (substr): Don't allocate a byte for trailing NUL in result
+ since the result needn't be NUL-terminated. Don't NUL terminate it.
+
+ * configure.in (AC_REPLACE_FUNCS): Check for memmove and memcpy,
+ not bcopy.
+ (AC_CHECK_FUNCS): Add strchr and strrchr.
+
+ * lib/Makefile.in (SOURCES): Add memmove.c and memcpy.c.
+ * memmove.c: New file.
+ * memcpy.c: New file.
+
+Tue Jan 24 22:18:19 1995 Jim Meyering (meyering@comco.com)
+
+ * fmt.c (copy_rest): Replace `||' with `&&'. Before, a paragraph
+ not followed by a newline would be followed by data copied from
+ uninitialized storage. Repeat by `printf abc|fmt|od -ac'.
+ Reported by Franc,ois Pinard.
+
+ * od.c: Rename macros with FP_ prefix. Use FLOAT_ instead.
+ AIX-2.2.1 declares a typedef, FP_DOUBLE, that conflicted.
+ Be careful to use off_t instead of explicit `unsigned long'.
+ Otherwise, systems like 4.4BSD lose on calls to fseek that
+ expect off_t (which is long long on that system).
+ (parse_old_offset): Use xstrtoul
+ (main): Likewise.
+
+ * src/Makefile.in (od.o, tail.o): Depend on ../lib/strtol.h.
+
+Mon Dec 19 22:13:55 1994 Jim Meyering (meyering@comco.com)
+
+ * tail.c (numerous functions): Give char* filename arguments the
+ const attribute.
+
+ * lib/Makefile.in (SOURCES): Remove xwrite.c. It was no longer used.
+ Add xstrtol.c and xstrtoul.c.
+ (OBJECTS): Likewise for .o files.
+ (DISTFILES): Add error.h and xstrtol.h and xstrtoul.h.
+
+ * lib/Makefile.in (DISTFILES): Remove safe-xstat.cin.
+ (distclean): Remove references to safe-l?stat.c.
+ Remove all related rules and dependencies.
+
+ * src/Makefile.in: $(OBJECTS): Depend on ../lib/error.h.
+
+Thu Dec 15 23:14:04 1994 Jim Meyering (meyering@comco.com)
+
+ * tail.c (tail_file): Fix call to error with %s in format, but
+ no corresponding argument.
+
+ * src/*.c: Include "error.h" instead of simply declaring
+ `void error ();'.
+ * od.c (main): Use %lu, not %d for unsigned long.
+ (my_strtoul, uint_fatal_error): Remove functions. Use xstrtoul
+ and STRTOL_FATAL_ERROR instead.
+
+Sun Dec 11 17:24:09 1994 Jim Meyering (meyering@comco.com)
+
+ * sort.c (main): Fix interpretation of field offsets when specified
+ via -k option. They were being interpreted as zero-indexed. POSIX
+ says they are 1-based indices. From Rik Faith <faith@cs.unc.edu>.
+ (keycompare): Don't ignore characters at the end of words when
+ otherwise they would compare equal. From Rik Faith.
+
+ * tail.c (<most functions>): Change the type of n_units/n_lines/n_bytes
+ to off_t because n_bytes is used as the option to fseek and off_t may
+ be long long (e.g. on BSD4.4). The only place where a 32-bit limit is
+ imposed is in the string-to-integer converstion of xstrtol.
+ (main): Use xstrtol instead of manual string to integer conversion.
+
+ * csplit.c (get_format_width, get_format_prec): Use ISDIGIT instead of
+ comparisons against '0' and '9'.
+
+ * tr.c [!ULONGMAX]: Define it.
+ [!LONGMAX]: Define in terms of ULONGMAX instead of as a 32-bit constant.
+
+ * full-write.c: Declare (or not) errno based on definedness or
+ errno, not STDC_HEADERS.
+ * safe-read.c: Likewise.
+ * xwrite.c: Likewise.
+
+Thu Nov 17 06:37:33 1994 Jim Meyering (meyering@comco.com)
+
+ * tail.c (dump_remainder): Flush standard output just before
+ sleeping so that `tail -f' will output partial lines sooner.
+ This applies only when following the end of a single file.
+ From Leonard N. Zubkoff <lnz@dandelion.com>.
+
+ * tail.c (file_lines, pipe_lines, pipe_bytes, start_bytes,
+ start_lines, dump_remainder): Use STDOUT_FILENO instead of `1' in
+ XWRITE calls.
+ * tac.c (output): Use STDOUT_FILENO instead of `1' in xwrite call.
+ * system.h (STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO): Define if
+ not already defined.
+
+Wed Nov 16 07:01:38 1994 Jim Meyering (meyering@comco.com)
+
+ * tr.c: Include <getopt.h> instead of "getopt.h".
+
+ * sort.c (tempname): Merge two very similar sprintf stmts into one.
+
+ * tail.c: Use BUFSIZ instead of BUFSIZE.
+
+ * cut.c: Declare DELIM to be `int' rather than unsigned char.
+
+ * fmt.c: Use index, not strchr -- per GNU Standards.
+ Reported by Kaveh Ghazi.
+ Always include <config.h>.
+ (main): Include program name in --version output.
+
+Sun Nov 06 00:17:21 1994 Jim Meyering (meyering@comco.com)
+
+ * Version 1.11.
+
+Sat Nov 05 15:14:44 1994 Jim Meyering (meyering@comco.com)
+
+ * memcmp.c, srtoul.c: Use up-to-date versions.
+ Reported by Franc,ois Pinard.
+
+ * src/Makefile.in (DEFS): Remove -Dlint... again.
+
+ * src/Makefile.in (PROGS): Add fmt!
+ Reported by Andreas Stolcke (stolcke@ICSI.Berkeley.EDU).
+
+Fri Nov 04 17:26:16 1994 Jim Meyering (meyering@comco.com)
+
+ * Version 1.10.
+
+Thu Nov 03 23:23:08 1994 Jim Meyering (meyering@comco.com)
+
+ * linebuffer.h: Use __P instead of _P since the latter conflicts
+ with a definition in some <ctype.h>. From Kaveh Ghazi.
+
+Wed Nov 02 17:36:34 1994 Jim Meyering (meyering@comco.com)
+
+ * tr.c: Add const attribute where appropriate.
+
+ * tail.c (BUFSIZ): Use definition from <stdio.h>.
+
+Tue Nov 01 23:54:09 1994 Jim Meyering (meyering@comco.com)
+
+ * tail.c (XWRITE): Allow n_bytes == 0 but call fwrite only if
+ n_bytes is positive. Turn off assertions. `tail /dev/null' was
+ getting a failed assertion. Reported by Doug McLaren
+ (dougmc@comco.com).
+
+ * cut.c (cut_bytes): Print at least a newline for every line of input.
+ (cut_fields): Print a newline even for lines whose only selected
+ field is empty. But print nothing when using -s without -f1.
+ And print nothing for empty input. Reported by
+ Richard_Sharman@software.mitel.com.
+
+Tue Nov 01 06:05:23 1994 Jim Meyering (meyering@comco.com)
+
+ * fmt.c: Change #ifdef __STDC__ to #if defined (__STDC__) && __STDC__.
+ * linebuffer.h: Likewise.
+
+Mon Oct 31 06:53:32 1994 Jim Meyering (meyering@comco.com)
+
+ * configure.in (AC_REPLACE_FUNCS): Remove memcmp since AC_FUNC_MEMCMP
+ already handles it. From Kaveh Ghazi.
+
+ * {lib,src}/Makefile.in (DEFS): Don't use -Dlint. Some systems
+ get failures when it's defined. From Kaveh Ghazi.
+
+ * cat.c (cat): Conditionalize test for errno == ENOSYS. It's not
+ defined on some Next and Alliant systems. From Kaveh Ghazi.
+
+ * sort.c join.c (main): Include version.h and call parse_long_options
+ with the proper number of arguments. Reported by Franc,ois Pinard.
+
+Sun Oct 30 01:30:41 1994 Jim Meyering (meyering@comco.com)
+
+ * (configure.in): Add AC_OFF_T and rearrange by type along the
+ same lines as autoscan.
+
+ * fmt.c, fmt.1: New files.
+ Both from Ross Paterson (rap@doc.ic.ac.uk).
+
+ * Makefile.in (PROGS): Add fmt.
+ * src/Makefile.in (SOURCES, OBJECTS): Add fmt.c and fmt.o respectively.
+ (fmt): Add a link rule.
+ * man/Makefile.in (MANFILES): Add fmt.1.
+
+Sat Oct 08 10:44:30 1994 Jim Meyering (meyering@comco.com)
+
+ * Makefile.in (All of them): Update from the ones in sh-utils.
+ From now on, rules and definitions that are comon to the fileutils,
+ textutils, and sh-utils will get ChangeLog entries only in the
+ sh-utils.
+
+Tue Oct 04 20:42:46 1994 Jim Meyering (meyering@comco.com)
+
+ * od.c (my_strtoul): Set errno to zero before calling strtoul.
+ Otherwise, od can fail complaining about a valid integer argument.
+ From Andreas Schwab.
+
+Sun Oct 02 17:57:09 1994 Jim Meyering (meyering@comco.com)
+
+ * tr.c (main): Give an error and fail when squeezing repeats
+ and no non-options are given. Reported by Tony Robinson
+ (ajr@eng.cam.ac.uk).
+
+ * sort.c (main): Temporarily copy each input file that might be
+ another name for the output file. When in doubt (e.g. a pipe),
+ copy. This allows the dangerous (historical -- in cnews) idiom
+ `cat file | sort -o file' to work properly. Don't rely on this
+ behavior in new shell scripts. From Paul Eggert (eggert@twinsun.com).
+
+Mon Sep 26 18:01:47 1994 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
+
+ * lib/xwrite.c safe-read.c memchr.c linebuffer.c full-write.c:
+ Remove CONFIG_BROKETS ifdef.
+ * src/Makefile.in lib/Makefile.in: Don't define it.
+
+Sat Sep 24 21:26:27 1994 Jim Meyering (meyering@comco.com)
+
+ * full-write.c (full_write): Declare argument LEN to be size_t.
+
+Mon Sep 12 13:35:27 1994 Jim Meyering (meyering@comco.com)
+
+ * tail.c (tail_file): [For multiple files only]: Report truncation
+ of monitored file and reset current file size. From Franc,ois Pinard.
+
+Sat Aug 27 16:57:20 1994 Jim Meyering (meyering@comco.com)
+
+ * system.h [BROKEN_STAT_MACROS]: Remove unnecessary #ifdef's.
+ From Franc,ois Pinard.
+
+Tue Jul 26 11:33:53 1994 Jim Meyering (meyering@comco.com)
+
+ * system.h: Remove `|| defined(_POSIX_VERSION)' from test that
+ decides whether to include <fcntl.h>. From Francois Pinard.
+
+Wed Jul 13 12:33:34 1994 Jim Meyering (meyering@comco.com)
+
+ * tr.c (substr): Fix off-by-one allocation error.
+
+Wed Jun 22 01:02:50 1994 Jim Meyering (meyering@comco.com)
+
+ * tac.c (tac_file): Use O_RDONLY instead of zero in call to open.
+ (tac): Fix typo that had `1' as arg #2 of error after failed read.
+ Use errno instead. From Michael I Bushnell <mib@gnu.ai.mit.edu>.
+
+Thu May 26 08:46:32 1994 Jim Meyering (meyering@comco.com)
+
+ * configure.in [INSTALL]: Revert change of March 25. autoconf
+ has been fixed.
+
+Mon Apr 11 17:25:43 1994 Jim Meyering (meyering@comco.com)
+
+ * join.c (prline): Remove unused function. Indent.
+
+Fri May 6 05:44:24 1994 Jim Meyering (meyering@comco.com)
+
+ * tail.c (tail_forever): Don't print headers when asked not to.
+ From Karsten Thygesen <karthy@kom.auc.dk>.
+
+ * wc.c (wc): Optimize for the case when only bytes are being counted
+ and the input is not a regular file. From Jeff Moore <jbm@mordor.com>.
+
+Sun Apr 24 10:54:08 1994 Jim Meyering (meyering@comco.com)
+
+ * configure.in [AC_SIZEOF_TYPE]: Update for autoconf-1.9.
+ * memchr.c: Test SIZEOF_LONG instead of LONG_64_BITS.
+
+Mon Apr 11 17:55:52 1994 Jim Meyering (meyering@comco.com)
+
+ * csplit.c (struct control): Add new field, repeat_forever.
+ Remove now-unneeded definition of INT_MAX.
+ (process_regexp): Test repeat_forever instead of comparing `repeat'
+ to INT_MAX.
+ (split_file): Don't even reference `repeat' count if repeat_forever
+ is set.
+ (new_control_record): Initialize repeat_forever field.
+ (parse_repeat_count): Set it instead of setting repeat count to
+ INT_MAX.
+ (process_line_count): Abort for internal error instead of calling
+ handle_line_error.
+
+ * long-options.c (parse_long_options): Take a new argument indicating
+ the utility name (e.g. "join", not "gjoin") for version output.
+ Print both the utility and the package names, e.g. `join - GNU
+ textutils-1.9.1' instead of just the package name.
+
+ * join.c (main): Call parse_long_options with program name arg.
+ * sort.c (main): Ditto.
+
+ * All source except sort.c and join.c (main): Change --version output
+ to include utility name as well as package name and version info.
+
+Wed Mar 30 08:53:21 1994 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Use AC_SET_MAKE.
+ * Makefile.in: Edit MAKE assignments into @SET_MAKE@.
+
+Mon Mar 28 09:55:05 1994 Jim Meyering (meyering@comco.com)
+
+ * tr.c (main): In addition to the --help usage pointer, give an
+ explicit error message for too many arguments.
+
+Fri Mar 25 18:11:19 1994 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Use AC_VERBOSE, AC_CHECKING, and AC_WARN instead
+ of explicit echo commands.
+ [INSTALL]: When AC_PROG_INSTALL resorts to setting this to
+ `./install.sh', make it `../install.sh' instead since that
+ script will be invoked only from subdirectories.
+ [AC_SIZEOF_TYPE]: Use this instead of deprecated AC_LONG_64_BITS.
+
+ * cat.c (cat): The command `:|cat -s' failed on Irix5 because
+ ioctl (d, FIONREAD,... now returns ENOSYS for pipes -- under Irix4
+ it returned EINVAL. Detect this.
+ (main) [lint]: Initialize variables to suppress `used before
+ initialized' warnings.
+
+ * csplit.c: Change long option name from --suffix to --suffix-format.
+
+ * od.c (skip): Correct a comment.
+ (main): Don't output anything to stdout if the sole input file
+ doesn't exist. Reported by Bauke Jan Douma <bjd@dds.hacktic.nl>.
+
+ * od.c (dump) [lint]: Initialize a variable to suppress `used before
+ initialized' warning.
+ (main) [lint]: Ditto.
+ * paste.c (paste_parallel) [lint]: Ditto.
+
+Fri Jan 28 11:02:21 1994 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Don't set LDFLAGS since linking now uses both
+ LDFLAGS and CFLAGS.
+
+Wed Jan 18 16:14:00 1994 Jim Meyering (meyering@comco.com)
+
+ * unexpand.c (unexpand): Don't segfault when given a name of a
+ nonexistent file.
+ * expand.c (expand): Ditto.
+ Both from Bauke Jan Douma <bjd@dds.hacktic.nl>.
+
+Thu Jan 13 17:27:38 1994 Jim Meyering (meyering@comco.com)
+
+ * src/Makefile.in: Change all link commands to use both $(CFLAGS)
+ and $(LDFLAGS).
+
+ * csplit.c (load_buffer): Rather than incrementing buffer size,
+ double it each time we fail to find a newline. Otherwise, csplit
+ would run out of memory when processing files with very long lines.
+
+Mon Jan 10 01:20:38 1994 Jim Meyering (meyering@comco.com)
+
+ * man/Makefile.in (manprefix): Use binprefix as the default.
+
+Sat Jan 08 22:22:45 1994 Jim Meyering (meyering@comco.com)
+
+ * cat.c: Use full_write and safe_read instead of write and read resp.
+ * csplit.c: Ditto.
+ * head.c: Ditto.
+ * split.c: Ditto.
+ * tac.c: Ditto.
+
+ * sum.c: Use safe_read instead of read.
+ * tr.c: Ditto.
+ * wc.c: Ditto.
+
+ * tail.c: Replace calls to xwrite with calls to fwrite.
+ Use fopen/fclose instead of open/close.
+ (write_header): Use a single call to printf instead of four to xwrite.
+ Use safe_read instead of read.
+ * head.c: Ditto.
+
+Tue Dec 28 15:49:32 1993 Jim Meyering (meyering@comco.com)
+
+ * install.sh: New file.
+ Makefile.in [DISTFILES]: Add it.
+
+Wed Dec 22 18:52:44 1993 Jim Meyering (meyering@comco.com)
+
+ * memcmp.c: Use the latest version from the GNU C library.
+
+ * cut.c [ADD_RANGE_PAIR]: New macro.
+ (set_fields): Collect the list of all selected ranges before
+ allocating and initializing the boolean lookup table.
+ (cut_bytes, cut_fields): Complete rewrite. Avoid copying
+ into buffer whenever possible. Properly handle input without
+ trailing newline.
+ (getstr): New function. Copied from getline.c, but with minor changes.
+
+ * sort.c (main): Properly handle -Tdir.
+ Before, `sort -T/var/tmp' gave `sort: unrecognized option `-v''.
+ Reported by Kristoffer Rose (kris@diku.dk).
+
+ * cut.c (main): Give separate errors for `-s without -f'
+ and `-d without -f'.
+ (main): Now -d '' means `use the NUL byte as the delimiter'.
+ Before, it got an error.
+
+Mon Dec 20 23:29:30 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in [test for 8-bit clean memcmp]: Add a test to detect
+ losing memcmp from SunOS4.1.x. From Robert H. de Vries
+ <robert@and.nl>.
+
+Sat Dec 18 01:12:24 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in (AC_OUTPUT): Put `touch stamp-config' in second arg
+ so it goes in config.status. This eliminates unnecessary second run
+ of configure.
+
+Thu Dec 02 23:53:03 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in (AC_HAVE_FUNCS): Add isascii.
+ * system.h [!defined (isascii) || defined (STDC_HEADERS)]: This failed
+ on AIX PS/2 1.3 systems because isascii is a function and it is used
+ in definitions (with the necessary side effect of assigning to a
+ global variable) of the is* macros. Also test HAVE_ISASCII and
+ redefine ISASCII(c) instead of isascii.
+ Reported by Minh Tran-Le (tranle@intellicorp.com).
+
+Fri Nov 19 22:41:48 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Don't run the test for 8-bit clean memcmp if we
+ already know we'll be using our replacement.
+
+Fri Nov 12 00:44:49 1993 Jim Meyering (meyering@comco.com)
+
+ * Version 1.9.1.
+
+ * tac.c (usage): Fix typo in long usage.
+ * sort.c (usage): Likewise.
+ From Philippe.Schnoebelen@imag.fr.
+
+ * cut.c [FATAL_ERROR]: New macro.
+ (main): Call both error and usage (2) through FATAL_ERROR in
+ many places. Before, only `error (2...' was called.
+ (invalid_list): Removed. This function is subsumed by FATAL_ERROR.
+
+ * cut.c (cut_fields): Properly handle input lacking a terminating
+ newline. Before, the command `printf "a\tb" |cut -f 1' generated
+ no output.
+
+Tue Nov 09 17:26:25 1993 Jim Meyering (meyering@comco.com)
+
+ od.c (usage): Change --backward-compatible to --traditional in
+ the long usage message.
+
+Sun Nov 07 00:50:05 1993 Jim Meyering (meyering@comco.com)
+
+ * Version 1.9.
+
+Sat Nov 06 22:51:31 1993 Jim Meyering (meyering@comco.com)
+
+ * cut.c (cut_fields): Revert July 27 change. Instead, strip off
+ trailing delimiter unless given a range of fields like `3-' that
+ extends to end of line.
+ (set_fields): Moved local `eol_range_start' to file-scope.
+ Reported by Arne H. Juul (arnej@solan.unit.no).
+
+Tue Nov 02 00:53:41 1993 Jim Meyering (meyering@comco.com)
+
+ * fold.c (fold_file): Don't get stuck in an endless loop when
+ width is smaller than 8 and there are TABs in the input.
+
+Sat Oct 30 15:31:28 1993 Jim Meyering (meyering@comco.com)
+
+ * join.c: Remove now-unused dcls of show_help and show_version.
+
+Fri Oct 29 13:58:50 1993 Jim Meyering (meyering@comco.com)
+
+ * csplit.c [INT_MAX]: Make sure it's defined.
+ [not HAVE_LIMITS_H]: Don't include limits.h.
+ From Kaveh R. Ghazi (ghazi@noc.rutgers.edu).
+
+Wed Oct 27 01:13:52 1993 Jim Meyering (meyering@comco.com)
+
+ * Version 1.8.1.
+
+Mon Oct 25 20:16:33 1993 Jim Meyering (meyering@comco.com)
+
+ * sort.c: Accept but ignore -y0 for compatibility with Solaris 2.
+ From Chuck Hedrick (hedrick@klinzhai.rutgers.edu).
+
+ * sort.c (main): Handle --help and --version options.
+ * Makefile.in (sort.o): Depend on long-options.h.
+
+Sun Oct 24 00:31:02 1993 Jim Meyering (meyering@comco.com)
+
+ * csplit.c, cut.c, expand.c, fold.c, head.c, nl.c, od.c, paste.c,
+ split.c, tac.c, tail.c, unexpand.c, uniq.c: Use the preferred
+ `--longopt=arg' syntax in --help message rather than `--longopt arg'.
+ From Francois Pinard.
+
+ * tail.c: Don't include <signal.h>. It hasn't been necessary
+ since the Dec 12, 1992 change.
+
+ * join.c (main): Accept `-v 1' again. Adding the --version
+ long option had broken it, although -v1 still worked. Call
+ parse_long_options instead of adding "help" and "version"
+ to join's longopt strct.
+ * Makefile.in [SOURCES, OBJECTS, DISTFILES]: Add long-options.c
+ and long-options.h.
+ * (join): Depend on and link with long-options.o.
+ * (join.o): Depend on long-options.h.
+
+ * od.c: Change --compatible (-C) to --backward-compatible (-B).
+
+ * csplit.c: Change --abandon-null-files to --elide-empty-files.
+
+Sat Oct 23 01:00:12 1993 Jim Meyering (meyering@comco.com)
+
+ * tr.c (get_next, string2_extend): Add default: label to switch stmt.
+
+ * cat.c, cksum.c, comm.c, csplit.c, cut.c, expand.c, fold.c, head.c,
+ join.c, nl.c, od.c, paste.c, pr.c, split.c, sum.c, tac.c, tail.c,
+ tr.c, unexpand.c, uniq.c, wc.c (usage): Add long --help.
+ Exit successfully for --help, non-zero for usage error.
+ From Francois Pinard.
+
+ * configure.in: Add AC_STAT_MACROS_BROKEN.
+ * system.h [AC_STAT_MACROS_BROKEN]: Test it.
+
+Fri Oct 22 23:26:17 1993 Jim Meyering (meyering@comco.com)
+
+ * linebuffer.c, memchr.c [HAVE_CONFIG_H, CONFIG_BROKETS]: Include
+ <config.h> or "config.h".
+ * cat.c, cksum.c, comm.c, csplit.c, cut.c, expand.c, fold.c, head.c,
+ join.c, nl.c, od.c, paste.c, pr.c, sort.c, split.c, sum.c, tac.c,
+ tail.c, tr.c, unexpand.c, uniq.c, version.c, wc.c: Ditto.
+
+ * configure.in: Use AC_CONFIG_HEADER.
+ * Makefile.in [DIST]: Add config.h.in.
+
+ * Makefile.in: Convert so make may be run from subdirectories.
+ Add dependencies on config.h.
+ * src/Makefile.in: Ditto.
+ * lib/Makefile.in: Ditto.
+ * man/Makefile.in: Ditto.
+
+Wed Oct 20 20:05:48 1993 Jim Meyering (meyering@comco.com)
+
+ * memchr.c (memchr): Do the 32-bit assignment only if !LONG_64_BITS.
+ In the 64-bit assignment, be careful to cast the shift operand to
+ long.
+ Abort if sizeof (unsigned long) > 8.
+
+Tue Oct 19 22:37:58 1993 Jim Meyering (meyering@comco.com)
+
+ * csplit.c: Allow repeat counts to be specified via `{*}'.
+ New option --suffix=format. Supercedes --digits option.
+ New option --abandon-null-files.
+ From Ronald F. Guilmette (rfg@netcom.com).
+
+ * csplit.1: Updated.
+ From Ronald F. Guilmette.
+
+ * csplit.c: Remove register keyword (replace with `int' in two cases).
+
+ * csplit.c: [MAX]: Macro renamed from max and moved to top of file.
+ (bytes_to_octal_digits): New static array.
+ (get_format_flags): Combine '+' and ' ' cases of switch stmt.
+ Return count if for loop terminates.
+ (get_format_width): Use `bytes_to_octal_digits' instead of just 11.
+ (get_format_prec): Make sure is_negative is defined before used.
+ (get_format_conv_type): Give a different error message if there
+ is no conversion specifier.
+ Test ISPRINT (ch) instead of `ch < '~' && ch > ' ''.
+ (max_out): Use `%%' rather than `%' in format string.
+
+Sat Oct 16 10:45:17 1993 Jim Meyering (meyering@comco.com)
+
+ * pr.c (main): When argc == 1, don't try to xmalloc (0).
+
+Tue Oct 12 00:53:26 1993 Jim Meyering (meyering@comco.com)
+
+ * xwrite.c [HAVE_CONFIG_H, CONFIG_BROKETS]: Include <config.h>
+ or "config.h".
+
+Sat Oct 09 23:37:43 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Remove AC_UNISTD_H; add unistd.h to AC_HAVE_HEADERS.
+
+Thu Sep 9 21:52:10 1993 Jim Meyering (meyering@comco.com)
+
+ * src/*.c: Print version on standard output, not stderr.
+
+ * configure.in: Add AC_LONG_64_BITS.
+ * memchr.c: Use #ifdef LONG_64_BITS instead of
+ `if (sizeof(longword) > 4)'.
+
+Tue Jul 27 22:19:39 1993 Jim Meyering (meyering@comco.com)
+
+ * cat.c (cat): Don't fail just because ioctl (d, FIONREAD,... can't
+ always handle devices. Ignore errno == EINVAL and errno == ENODEV.
+ `cat -v /dev/null' was failing on many systems.
+
+ * cut.c (cut_fields): Don't strip off trailing delimiter e.g.
+ `echo 'a:b:c:' | cut -d: -f3-' should print `c:', not just `c'.
+ From William Dowling <will@franklin.com>.
+
+Thu May 27 01:37:51 1993 Jim Meyering (meyering@comco.com)
+
+ * Version 1.8.
+
+ * memchr.c: De-ansify the fixed version from glibc.
+ It is supposed to work on systems with 64-bit long ints.
+
+Mon May 24 00:32:43 1993 Jim Meyering (meyering@comco.com)
+
+ * Version 1.7.
+
+Sat May 22 02:13:12 1993 Jim Meyering (meyering@comco.com)
+
+ * Version 1.6.
+
+Fri May 21 22:57:53 1993 Jim Meyering (meyering@comco.com)
+
+ * pr.c (cols_ready_to_print): New function. It replaces a global
+ variable by the same name and computes on the fly the value that
+ was supposed to be maintained through that variable. This should
+ put to rest the `pr -2a' bug.
+ (main): Don't let getopt_long reorder arguments so we can
+ distinguish between `pr -1 -2' and `pr -12'. Rework handling of
+ -n and +n options.
+
+ * fold.c: Declare xmalloc.
+
+Wed May 19 19:12:18 1993 Karl Berry (karl@owl.hq.ileaf.com)
+
+ * sort.c (main): fflush before exit, so a closed stdout doesn't lose.
+
+Tue May 18 23:49:26 1993 Jim Meyering (meyering@comco.com)
+
+ * mkinstalldirs: New file.
+ * Makefile.in (installdirs): Use it to create installation directories.
+
+Fri May 14 23:45:52 1993 Jim Meyering (meyering@comco.com)
+
+ * all source: With --version, print version and exit immediately.
+
+Thu May 13 01:03:16 1993 Jim Meyering (meyering@comco.com)
+
+ * Makefile.in (installdirs): New rules for creating installation
+ directories. (install): depend on it.
+
+ * tail.c (main): Remove --compatible since `+1f' may be used
+ to get the BSD `-0f' behavior portably.
+
+ * fold.c (main): Turn -N arguments, where N is a digit, into -wN.
+ From Ian Lance Taylor (ian@cygnus.com).
+
+Mon May 10 22:33:44 1993 Jim Meyering (meyering@comco.com)
+
+ * tail.c (main): New option -C, --compatible to make `tail -0f'
+ work like `tail +1f' for compatibility with BSD tail.
+
+Thu May 6 23:28:56 1993 Jim Meyering (meyering@comco.com)
+
+ * pr.c (print_page): Decrement cols_ready_to_print even when
+ lines_to_print == 0. The command `echo |pr -2ta' *still* didn't
+ terminate. Add parentheses for clarity.
+
+Mon May 3 23:57:47 1993 Jim Meyering (meyering@comco.com)
+
+ * Version 1.5.
+
+ * od.c (main): Remove set-but-not-used variable, `usage_error'.
+
+ * split.c (main): Call usage with an argument.
+
+Sun May 2 16:05:04 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in: Reverse if-else branches in AC_TEST_PROGRAM test
+ for 8-bit clean memcmp.
+
+ * cat.c (usage, main): Remove unused argument.
+
+ * csplit.c (remove_line): Remove set-but-not-used variable, `line_got.'
+ (check_for_offset): Remove unused argument `argnum.'
+
+ * configure.in: Add AC_SIZE_T.
+
+Sat May 1 09:03:19 1993 Jim Meyering (meyering@comco.com)
+
+ * uniq.c (main): Interpret non-option arguments with a leading `+'
+ only if we haven't seen `--'.
+
+ * tr.c (main): Change variable name to avoid shadowed dcl.
+ * wc.c (write_counts): Ditto.
+
+ * sum.1: Make documentation agree with the code.
+
+ * od.c: Depend only on HAVE_LONG_DOUBLE for long double support.
+
+Fri Apr 30 20:16:03 1993 Jim Meyering (meyering@comco.com)
+
+ * configure.in [AC_HAVE_HEADERS]: Add limits.h.
+
+ * configure.in [CFLAGS, LDFLAGS]: Assign reasonable defaults.
+
+ * od.c (parse_old_offset): Don't use prototype in function
+ definition. Remove unnecessary conjunct from test for hexadecimal
+ prefix.
+
+ * od.c: Depend on __GNUC__ || HAVE_LONG_DOUBLE rather than __STDC__
+ for long double support; there are compilers (Stardent Vistra svr4)
+ without long double but still define __STDC__.
+
+Thu Apr 29 02:01:27 1993 Jim Meyering (meyering@comco.com)
+
+ * src/*.c and man/*.c except for sort: Add --help and --version
+ options.
+
+ * pr.c: Convert to use getopt_long.
+
+ * lib/memcmp.c: Use version from glibc.
+ [WORDS_BIGENDIAN]: Test this instead of the using glibc's
+ __BYTE_ORDER macro.
+ * configure.in: Use AC_WORDS_BIGENDIAN to set it.
+
+ * od.c (parse_old_offset): Allow `0X' as well as `0x' prefix to
+ indicate hex.
+
+ * Makefile.in (dist): Depend on Makefile so that changes to
+ Makefile.in (like adding new files to DISTRIB) are reflected
+ in the new distribution.
+
+Fri Apr 23 21:53:47 1993 Jim Meyering (meyering@comco.com)
+
+ * {lib,src}/Makefile.in [.c.o]: Make CPPFLAGS and CFLAGS follow
+ other options so users can use them to override DEFS.
+ * src/Makefile.in [.c.o]: Add -I$(srcdir) for version.h.
+
+ * Makefile.in [CFLAGS, LDFLAGS]: Don't set to -g explicitely;
+ configure's AC_SUBST will set these.
+
+ * Makefile.in [Makefile]: Add dependencies and a rule to remake it.
+ [targets that cd then run make in subdirectories]: Don't depend
+ on `cd ..'; use a subshell instead.
+
+ * Makefile.in [info, install-info, dvi, check, installcheck]:
+ New targets but no rules; comply with standards.
+
+ * configure.in [CFLAGS]: Default to -g -O if CC is gcc and the user
+ hasn't specified CFLAGS.
+ [LDFLAGS]: Substitute into Makefile.
+
+Tue Mar 30 21:36:11 1993 Jim Meyering (meyering@comco.com)
+
+ * od.c: New option --compatible, -C.
+ (parse_old_offset): New function.
+ * od.1: Document new option.
+
+Mon Mar 29 21:27:56 1993 Jim Meyering (meyering@comco.com)
+
+ * cut.c, expand.c, join.c, nl.c: Always call error with errno
+ (not zero) after failed fclose or non-zero ferror.
+
+Sun Mar 28 16:59:31 1993 Mike Haertel (mike@cs.uoregon.edu)
+
+ * configure.in: Add check for working memcmp; use GNU's if
+ the system's doesn't grok the 8th bit.
+ * memcmp.c: Fix it so it groks the 8th bit.
+ TODO: We really need to provide a fast memcmp, since most
+ machines will have a broken memcmp. Probably should get
+ the one from glibc.
+ * sort.c (mergefps): Maintain keybeg and keylim when copying
+ the current line to `saved'.
+ (numcompare): Skip white space here since -n no longer implies -b.
+ (getmonth): Skip white space here since -M no longer implies -b.
+ (compare): Completely overhauled to make the 8th bit work right,
+ also to properly handle the global reverse option.
+ (set_ordering): -n no longer implies -b, according to Posix.
+ For consistency, -M also no longer implies -b.
+ (main): Correct treatment of -r and global keys.
+ (findlines): Clear keybeg and keylim if no keys are used.
+ (sort): Avoid overwriting tempfiles[] array bounds.
+
+Sun Mar 21 22:29:29 1993 Jim Meyering (meyering@comco.com)
+
+ * pr.c (close_file): Reverse May 13, '92 change, but add the condition
+ that cols_ready_to_print not be decremented when printing across.
+ The command `echo |pr -2ta' didn't terminate.
+ (print_page): Rewrite conditional (that had side effects in second
+ conjunct) using nested if statements to make it clear that we do
+ indeed want those semantics.
+
+Tue Jan 19 13:35:24 1993 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu)
+
+ * Version 1.4.
+
+ * system.h: Try BBSIZE if BSIZE isn't defined.
+ From Tony Robinson <ajr@eng.cam.ac.uk>.
+
+Sat Dec 12 12:37:00 1992 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu)
+
+ * tail.c (tail_forever): Use an array of file descriptors
+ instead of forking processes.
+ (dump_remainder): Return number of bytes read.
+ (tail_file): Fill in the new array.
+ From Ian Lance Taylor.
+
+Fri Dec 11 17:18:16 1992 David J. MacKenzie (djm@kropotkin.gnu.ai.mit.edu)
+
+ * system.h: Only define index, bcmp, etc. if not already defined.
+
+Tue Dec 8 10:31:14 1992 Jim Meyering (meyering@idefix.comco.com)
+
+ * tr.c (is_char_class_member): Remove unreached return after abort.
+
+Sun Dec 6 22:34:52 1992 Jim Meyering (meyering@idefix.comco.com)
+
+ * csplit, cut.c, expand.c, fold.c, head.c, join.c, od.c, pr.c,
+ sort.c, split.c, tail.c, tr.c, unexpand.c, uniq.c: Remove inclusion
+ of <ctype.h> and definitions of is* ctype macros to system.h.
+ Change a few more uses of is* ctype macros to (protected) upper
+ case versions.
+
+ * system.h: Add isascii-protected ctype IS* macros.
+
+Wed Dec 2 12:28:10 1992 Jim Meyering (meyering@idefix.comco.com)
+
+ * all files using getopt.h: Convert static declarations of
+ struct option to use new macros from getopt.h: no_argument,
+ required_argument, and optional_argument.
+
+Tue Dec 01 10:57:24 1992 Jim Meyering (meyering@idefix.comco.com)
+
+ * od.c, pr.c, sort.c: Make uses of ctype.h macros consistent.
+
+ * tr.c (main): Close stdin and stdout and check return status.
+
+Tue Nov 24 09:26:08 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu)
+
+ * system.h, csplit.c: Use HAVE_FCNTL_H and HAVE_STRING_H
+ instead of USG.
+
+Tue Nov 24 08:42:30 1992 Jim Meyering (meyering@idefix.comco.com)
+
+ * tr.c: Define new macros ISPRINT, ISALNUM, ISXDIGIT, ... that
+ use isascii if it is defined.
+ (is_char_class_member, make_printable_char, make_printable_str,
+ non_neg_strtol): Use new macros instead of lower case ones
+ from <ctype.h>.
+
+ * od.c (print_ascii, dump_strings): Use ISDIGIT and ISPRINT
+ macros like pr.c. Suggested by David J. MacKenzie.
+
+ * od.c (print_ascii, dump_strings): Check for isascii before isprint.
+ (dump_strings): Free malloc'd buffer before returning.
+ (skip): Return non-zero if an error occurred, zero otherwise.
+ Exit only if asked to skip beyond end of combined input.
+ (check_and_close): New function.
+ (skip, read_block, read_char): Call check_and_close when done
+ processing the file associated with in_stream.
+ (skip, read_block, read_char): Set have_read_stdin.
+ (main): Close stdin (if it was ever read) and check for errors
+ just before exiting.
+ (write_block, dump_strings, dump): Don't test return value from
+ functions that operate on streams. Rely on later ferror tests.
+
+Sat Nov 21 12:41:49 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu)
+
+ * sort.c (main, usage): Add -T option.
+
+Thu Nov 19 14:33:40 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu)
+
+ * tail.c (tail_forever, sigusr1, kill_kids): New functions to
+ do -f on multiple files.
+ (main): Call tail_forever.
+ From Ian Lance Taylor.
+
+Tue Nov 10 14:29:11 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu)
+
+ * cut.c (cut_fields): Add cast.
+
+ * od.c (decode_one_format): Remove '#' from pre_fmt_string;
+ many systems don't support it.
+ Conditionalize long double support on __STDC__, not __GNUC__.
+ From Ian Lance Taylor.
+
+Mon Nov 9 00:24:41 1992 Jim Meyering (meyering@idefix.comco.com)
+
+ * sort.c (numcompare, keycompare): Add parentheses suggested
+ by gcc -Wall. Put braces around individual monthtab initializers.
+
+ * cksum.c: Declare error. Make checksum table `const.'
+
+ * pr.c: Remove comment and dcl of unused variable, `print_a_number'.
+
+ * split.c (main): Add `default: abort();' to enumeration switch.
+
+ * All files: Make all functions and extern variables static.
+ Make all longopts arrays const as well as static.
+ Make a couple statically initialized aggregates `const.'
+
+Sun Nov 8 19:46:59 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu)
+
+ * od.c (main): Make old-style format options accumulate.
+ From Jim Meyering.
+
+Sat Nov 7 00:26:14 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu)
+
+ * tr.c (look_up_char_class): Add cast.
+
+ * nl.c (build_type_arg), csplit.c (extract_regexp), tac.c (main):
+ Add `const' to variable receiving value from re_compile_pattern.
+
+ * wc.c (wc): If doing only -c, use st_size for regular files.
+
+ * fold.c (fold_file): Was folding 1 column too early.
+ From Eric Backus <ericb@lsid.hp.com>.
+
+ * memset.c: New file.
+
+Fri Nov 6 20:14:51 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu)
+
+ * cksum.c: New file.
+
+Tue Oct 13 16:24:06 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu)
+
+ * tac.c (tac_stdin): Handle SIGPIPE.
+ * sort.c (main): Handle SIGTERM.
+
+ * od.c: New file.
+
+ * system.h [USG || STDC_HEADERS]: Define bcmp.
+
+Sat Oct 3 20:41:24 1992 David J. MacKenzie (djm@goldman.gnu.ai.mit.edu)
+
+ * sort.c (main): Handle SIGPIPE. From trq@dionysos.thphys.ox.ac.uk.
+
+Tue Sep 29 01:10:05 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * paste.c (main): Don't write on a string constant.
+
+Mon Aug 24 00:02:45 1992 Jim Meyering (meyering@churchy.gnu.ai.mit.edu)
+
+ * tr.c: Minor cleanup. Replaced some assert(0) with abort().
+
+Tue Jul 7 02:14:19 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * cmp.c, cmp.1: Move to diff distribution.
+
+Fri Jul 3 16:37:59 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * system.h: Change FOO_MISSING to HAVE_FOO.
+
+Wed May 13 20:05:41 1992 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
+
+ * pr.c (COLUMN): Add structure member to remember filename.
+ (main, init_fps, open_file, close_file): Use it.
+
+ (close_file): Don't decrement cols_ready_to_print when closing
+ a file. From cdl@mpl.UCSD.EDU (Carl Lowenstein).
+
+Mon May 11 19:17:33 1992 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
+
+ * cmp.c: --show-chars -> --print-chars.
+
+ * pr.c: Rename some variables.
+
+Sat May 9 18:39:47 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * system.h: Define DEV_BSIZE if not defined.
+
+Wed Apr 22 02:15:09 1992 David J. MacKenzie (djm@churchy.gnu.ai.mit.edu)
+
+ * system.h, tac.c: SIGTYPE -> RETSIGTYPE.
+
+Fri Apr 17 10:42:23 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * sort.c (main): Don't stop processing args when we hit "-";
+ treat it like a regular filename.
+ From ian@airs.com (Ian Lance Taylor).
+
+ * pr.c (print_page): Fix off by one line count when ^L is in input.
+ From Andreas Schwab (schwab@ls5.informatik.uni-dortmund.de).
+
+Mon Apr 6 20:52:29 1992 Jim Meyering (meyering@churchy.gnu.ai.mit.edu)
+
+ * tr.c (validate): Change error message so it doesn't mention
+ actual name of --truncate-set1 option. From David MacKenzie.
+
+Sun Apr 5 14:22:42 1992 Jim Meyering (meyering@hal.gnu.ai.mit.edu)
+
+ * tr.c (string2_extend, validate): Give an error message when
+ translating without --truncate-set1, with empty string2, and
+ with non-empty string1. "tr 1 ''" produced a failed assertion.
+
+Mon Mar 30 02:20:56 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * system.h: Change how ST_BLKSIZE is calculated to allow for
+ non-POSIX systems that don't define BSIZE in sys/param.h.
+
+Sat Mar 28 11:18:01 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * sum.c (main, bsd_sum_file): Don't print filename if BSD
+ algorithm is used and only one file was given.
+
+Wed Mar 25 11:34:41 1992 Jim Meyering (meyering@wombat.gnu.ai.mit.edu)
+
+ * tr.c (get_spec_stats): Fix assertion to allow ranges like a-a
+ with starting character equal to ending character. This is
+ contrary to the POSIX spec, but what is already implemented
+ in find_closing_delim.
+
+Mon Mar 16 00:15:11 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * Version 1.3.
+
+ * sort.c (numcompare, checkfp): Add parens to placate gcc2.
+
+ * sort.c (mergefps): For -u, output the first, not last, of
+ the lines that compare equal. From Mike Haertel.
+
+Tue Mar 10 10:51:38 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * tr.c: Remove initial capitals and periods from error messages.
+
+Sun Mar 8 22:03:45 1992 David J. MacKenzie (djm@nutrimat.gnu.ai.mit.edu)
+
+ * sum.c (main): Add -r option for SYSV compat.
+
+Thu Feb 27 22:26:25 1992 David J. MacKenzie (djm@wookumz.gnu.ai.mit.edu)
+
+ * sort.c (compare): If -s given, leave lines in their original order.
+ (main): Recognize -s.
+ (usage): Document -s.
+ From Mike Haertel.
+
+Tue Feb 18 20:29:45 1992 Randall Smith (randy at geech.gnu.ai.mit.edu)
+
+ * sort.c (sort): Check for complete parsing of buffer into
+ lines before nixing temp files.
+
+Mon Feb 17 10:35:58 1992 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * sum.c (sysv_sum_file): Use %lu instead of %u to print a
+ long. Not that it matters for GNU . . .
+
+ * tr.c (unquote, make_printable_str): Use \007 instead of ANSI \a.
+ (append_normal_char, append_range, append_char_class,
+ append_repeated_char, append_equiv_class, spec_init):
+ Initialize `next' field of new `struct List_element'.
+ From rommel@informatik.tu-muenchen.de (Kai-Uwe Rommel).
+
+Sat Feb 8 17:16:49 1992 David J. MacKenzie (djm at apple-gunkies.gnu.ai.mit.edu)
+
+ * join.c (get_line): Renamed from getline to avoid GNU libc conflict.
+
+Sun Feb 2 21:22:01 1992 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * Version 1.2.
+
+ * nl.c: Support multiple files and "-" for stdin.
+ (main): Check for read and write errors.
+ (nl_file): New function.
+
+Wed Jan 29 10:09:10 1992 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * tr.c (main): -t option was called -b in getopt spec.
+ (validate): Don't warn that set1 is longer than set2.
+
+ * tr.c: Rename --sysv-string2-truncate to --truncate-string1.
+
+Fri Jan 17 16:29:05 1992 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * nl.c: New program from bin-src.
+
+ * nl.c (main): Use a struct linebuffer for line_buf.
+ (process_file): Use readline instead of fgets, to preserve NULs.
+ (check_section): Use memcmp instead of strncmp.
+ (proc_text): Print line_buf with fwrite instead of printf.
+
+ * nl.c (main): Usage message if too many args given. Check
+ for error in closing input file. Lengths of section delimiter
+ strings were 1 too large. Take separator_str into account in
+ length of print_no_line_fmt.
+ (build_print_fmt): Allocate space for print_fmt, in case
+ separator_str is long.
+ (proc_text): A blank line is one that contains nothing, not
+ even nonprinting characters.
+
+Fri Jan 17 01:04:22 1992 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * All programs: Document `--' instead of `+' to introduce
+ long-named options, in usage messages.
+
+ * sum.c (bsd_sum_file): Renamed from sum_file.
+ (sysv_sum_file): New function.
+ (main): Recognize an option to select between the algorithms.
+
+Sun Jan 5 17:41:18 1992 Jim Meyering (meyering at churchy.gnu.ai.mit.edu)
+
+ * pr.c (close_file, print_page): Fixed bug that had the command
+ yes |head |pr -t printing "yyyyyyyyyy".
+ * (print_page): Fixed bug that had pr -3 -a printing two too few
+ trailer lines per page.
+ * (main): Added restriction that -a and -m are incompatible.
+ Although the POSIX spec doesn't explicitly say they shouldn't
+ be used together, it says -a modifies the -column option and
+ that -column shouldn't be used with -m.
+
+Thu Jan 2 15:23:59 1992 David J. MacKenzie (djm at albert.gnu.ai.mit.edu)
+
+ * nl.c: Include regex.h after, not before, sys/types.h.
+
+Thu Jan 2 12:18:10 1992 Tom Lord (lord at geech.gnu.ai.mit.edu)
+
+ * sort.c (fillbuf) return bytes buffered instead of bytes read.
+
+Fri Dec 27 22:53:36 1991 Jim Kingdon (kingdon at geech.gnu.ai.mit.edu)
+
+ * sort.c (LINEALLOC): New #define.
+ (struct lines): New field ``limit''.
+ (initlines): Set it from new arg ``limit''.
+ (sort, mergefps, checkfp): Pass new arg to initlines().
+ (findlines): Don't realloc past lines->limit.
+
+Tue Dec 24 01:24:03 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * tac.c, sort.c, csplit.c, system.h: Change POSIX ifdefs to
+ HAVE_UNISTD_H and _POSIX_VERSION.
+
+ * xwrite.c: Change POSIX ifdef to HAVE_UNISTD_H.
+
+Sat 14 Dec 1991 11:46:42 Jim Meyering (meyering at wombat)
+
+ * tr.c: Fixed an inaccurate comment on posix_pedantic.
+
+Thu 12 Dec 1991 21:15:20 Jim Meyering (meyering at hal)
+
+ * tr.c: Changed underscores to hyphens in long option name
+ "sysv_string2_truncate".
+
+Wed Dec 11 13:33:34 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * tac.c (main): Set obscure_syntax to tell re_search to
+ allocate memory for the group registers.
+
+Fri Dec 6 18:26:27 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * tac.c, sort.c, csplit.c [POSIX]: Use sigaction instead of
+ signal, which POSIX doesn't have.
+ * sort.c: Replace inthandler and huphandler with sighandler.
+ * csplit.c (main): Only handle signals if they were not being
+ ignored.
+
+ * tr.c: POSIX_ME_HARDER -> POSIXLY_CORRECT.
+
+Wed Dec 4 00:47:47 1991 Jim Meyering (meyering at wombat)
+
+ * tr.c (unquote): Reformat code so it doesn't go beyond column 80.
+ * tr.c (squeeze_filter): Comment a little on why it's better
+ to step through the input by two.
+ * tr.c (set_initialize): Write a comment describing the function.
+ * tr.c: Eliminated the variable `portability_warnings' and replaced
+ references to it by references to `!posix_pedantic'. One of the
+ uses of portability_warnings had been wrong.
+
+Tue Dec 3 14:03:35 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * tr.c: New program.
+
+Sun Dec 1 15:07:35 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * linebuffer.[ch] (freebuffer): New function (used by cron).
+
+Thu Oct 17 22:30:22 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * system.h, configure, Makefile.in: Don't include memory.h if
+ STDC_HEADERS, removing need for MEMORY_H_MISSING.
+
+Thu 17 Oct 1991 16:53:07 Jim Meyering (meyering at wombat)
+
+ * pr.c (print_page): REALLY fixed `extra newline at EOF' problem.
+ Somehow, part of my patch didn't make it last time.
+
+Sat Oct 12 12:04:47 1991 David J. MacKenzie (djm at churchy.gnu.ai.mit.edu)
+
+ * tail.c (pipe_lines, pipe_bytes): Initialize `first->next'.
+
+ * cmp.c (cmp): Print EOF message to stderr, not stdout, for
+ POSIX 1003.2.11.2.
+
+ * sort.c (xfwrite): fwrite never returns < 0, so check if
+ number written is number we asked to write.
+ (fillbuf, main): fread never returns < 0, so check ferror instead.
+ From Rainer Orth.
+
+Tue Oct 8 18:07:08 1991 Jim Meyering (meyering at churchy)
+
+ * pr.c (print_page): Really fixed `extra newline at EOF' problem.
+ * (store_columns): Fixed bug that caused `pr -b -2' to coredump
+ on files of certain lengths.
+
+Fri Oct 4 22:30:25 1991 Jim Meyering (meyering at churchy)
+
+ * pr.c (print_page): Fixed to not add single spurious newline
+ at EOF when using -t.
+
+Wed Oct 2 01:02:05 1991 David J. MacKenzie (djm at apple-gunkies)
+
+ * pr.c (print_page): Don't pad the page if -t given.
+
+ * csplit.c (load_buffer), sort.c (mergefps): Use bcopy, not memcpy.
+
+Thu Sep 26 12:35:00 1991 David J. MacKenzie (djm at churchy.gnu.ai.mit.edu)
+
+ * Version 1.1.
+
+ * configure, system.h: Include memory.h if it works.
+
+ * split.c: Allow `b' unit as well as `k' and `m'.
+
+ * head.c, tail.c: Replace -b +blocks option with specifying
+ units (b, k, or m) after the number.
+ (parse_unit): New function.
+
+ * fold.c (main): Check that -w arg is a number.
+
+ * cut.c: +delimiter takes an arg.
+
+Mon Sep 16 14:52:38 1991 David J. MacKenzie (djm at churchy.gnu.ai.mit.edu)
+
+ * pr.c (close_file): Don't close an already closed file.
+
+Thu Sep 12 00:14:43 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * memchr.c: New file.
+ * configure: Check if it's needed.
+
+ * csplit.c, gcsplit.1: New program.
+
+ * pr.c (cleanup): Only free buffers if they were allocated.
+
+ * sort.c [!USG && !STDC_HEADERS]: Declare memchr.
+
+Wed Sep 11 20:54:16 1991 Jim Meyering (meyering at churchy)
+
+ * pr.c: The following 3 bugs appeared (at least) when printing
+ a single file with the options `-3 -f'.
+ * (print_white_space): Single spaces were being replaced
+ with tabs.
+ * (print_page): Some lines were getting too much white space
+ at the beginning because spaces_not_printed wasn't being reset
+ to 0.
+ * (read_line): The single space between a truncated column
+ on its left and the column on its right was omitted. Fixed
+ so that previous value of input_position is restored before
+ returning FALSE.
+
+Sat Sep 7 03:22:18 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * configure: Only remove /etc from PATH when it's not part of
+ a larger name.
+
+Wed Sep 4 17:09:24 1991 David J. MacKenzie (djm at apple-gunkies)
+
+ * linebuffer.c (readline): Fix incorrect recalculation of `end'.
+
+ * head.c, tail.c: Replace `mode' variables and bitmasks with
+ separate variables for each option.
+
+Mon Sep 2 04:00:37 1991 David J. MacKenzie (djm at apple-gunkies)
+
+ * wc.c: New program.
+
+Sun Sep 1 01:18:38 1991 David J. MacKenzie (djm at apple-gunkies)
+
+ * fold.c (fold_file): Read in an int, not a char, for EOF
+ comparison.
+
+ * configure: Check whether st_blksize is missing.
+
+ * tac.c (save_stdin): Put copy of pipe input in TMPDIR if
+ defined, instead of /tmp.
+
+Thu Aug 29 14:48:15 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * xwrite.c [POSIX]: unistd.h might require sys/types.h.
+
+Wed Aug 28 11:57:39 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * paste.c (main): Consider -d "" to be like -d "\0",
+ for POSIX (if I read it right).
+
+ * sort.c, join.c: New programs.
+
+ * cut.c (set_field): Allow blanks as well as commas to
+ separate numbers in ranges.
+
+Sun Aug 25 19:57:40 1991 Jim Meyering (meyering at apple-gunkies)
+
+ * pr.c: Failure to open an input file is no longer a fatal error.
+ A message is printed for each failed open. When printing
+ in parallel, each failed open results in one fewer output column.
+ Added POSIX -r option to suppress the message.
+ * pr.c: Added variables: failed_opens, ignore_failed_opens.
+ These changes were based in part on work by David MacKenzie.
+
+Sat Aug 24 15:27:39 1991 Jim Meyering (meyering at pogo)
+
+ * pr.c: Complain if user gives both -m and -[0-9]+ options.
+
+Wed Aug 21 22:04:57 1991 David J. MacKenzie (djm at apple-gunkies)
+
+ * Version 1.0.
+
+Mon Aug 19 00:16:51 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * expand.c: Rename some variables.
+ (expand): Don't access value off end of array.
+ * unexpand.c: Rename some variables.
+ (unexpand): Don't access value off end of array.
+ Instead of copying tabs verbatim and flushing pending spaces
+ when one is reached, count them as the proper number of
+ pending spaces. Instead of changing tabs to single spaces if
+ the tabstop list is exhausted, print the rest of the line
+ unchanged (for POSIX).
+
+Sat Aug 17 01:49:41 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * cut.c (cut_file), paste.c (paste_parallel, paste_serial):
+ Clear EOF and error conditions on stdin so it can be reused.
+
+ * expand.c, unexpand.c (parse_tabstops): Allow blanks as well
+ as commas to separate tabstops, for POSIX.
+ * expand.c (expand), unexpand.c (unexpand): Don't line-buffer
+ the output; send it directly to stdout.
+ * unexpand.c (main): Make -t stupidly imply -a for POSIX.
+ (unexpand): If a tab stop list was given and we move past its end,
+ copy the rest of the line verbatim.
+
+ * split.c (convint): New function to allow 'm' and 'k' after
+ byte counts.
+ (main): Use it. Change -c option to -b for POSIX.
+
+Fri Aug 9 02:47:02 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * pr.c: Protect isdigit with isascii, if required.
+
+Tue Aug 6 21:42:25 1991 David J. MacKenzie (djm at wheat-chex)
+
+ Most of the following is from Paul Eggert:
+ * cat.c (main): If stdin is read, check close at end.
+ * cmp.c (main): Check for stdin being closed.
+ Check for close errors on stdin and stdout.
+ (cmp): Return a value instead of exiting.
+ * cut.c (cut_file): New function, from code in main.
+ Check for read errors.
+ (main): Check for close errors.
+ * expand.c, unexpand.c (main): Check for close errors.
+ (next_file): Go to next file if one can't be opened.
+ Check for close errors.
+ * head.c (main), tail.c (main): If stdin was read, check for
+ close errors.
+ * head.c (head_file), tail.c (tail_file): Check for close errors.
+ * paste.c (main, paste_parallel, paste_serial), tac.c (main):
+ Check for close errors. Close stdin if it was read.
+ * split.c (main): Check for close errors.
+
+ * configure, Makefile.in's: Support +srcdir option.
+ Make config.status. Fix up clean targets.
+
+Wed Jul 31 01:32:59 1991 David J. MacKenzie (djm at hal)
+
+ * linebuffer.h (struct linebuffer): Add a field to indicate
+ the number of valid chars in the line.
+ * linebuffer.c (initbuffer, readline): Fill it in.
+ * uniq.c, comm.c: Use it.
+
+ * pr.c (main): Check stdin and stdout fclose for errors.
+ (init_parameters): If there's no room for header and footer,
+ omit them rather than dying (for POSIX).
+ (init_header): Take a file descriptor as additional arg.
+ (init_fps): Change callers. Note when stdin is read.
+ (open_file): For filename "-" use stdin.
+ (close_file): Don't close stdin. Check close for errors.
+ (print_char, char_to_clump): Use isprint instead of explicit
+ comparisons.
+
+ * memcmp.c: New file (needed for comm).
+ * bcopy.c: New file (needed for fold).
+ * system.h: Don't define bcopy as memcpy.
+ * configure: Check for bcopy and memcmp.
+
+ * uniq.c (main): Use "-" instead of NULL to mean stdin or
+ stdout.
+ (check_file): Use "-" instead of NULL to mean stdin or stdout.
+ Check readline return instead of for NUL character to
+ detect eof.
+ Check fclose for errors.
+ (find_field): Use linebuffer length, not NULs, to detect end
+ of line.
+ (different): New function, replaces compare. Uses memcmp
+ instead of strncmp.
+ (writeline): Use fwrite instead of fputs so NULs are preserved.
+
+ * comm.c (compare_files): Return an error indication.
+ Don't take a filename of NULL to mean stdin.
+ Use memcmp instead of strcmp to allow for NULs.
+ Check fclose for errors.
+ (writeline): Use fwrite instead of fputs so NULs are preserved.
+
+ * sum.c (sum_file): Take an arg indicating whether to print
+ the filename, and don't take NULL meaning stdin. Set a flag
+ when we read stdin. Check fclose return for errors.
+ (main): If stdin was read, check fclose return for errors.
+ Use filename of "-" if no args given.
+
+Thu Jul 25 15:17:10 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * fold.c: Rewritten from scratch for POSIX.
+
+Wed Jul 24 01:55:41 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * split.c (line_bytes_split): Use xmalloc instead of alloca.
+ * system.h: Don't declare alloca.
+
+ * tac.c, tail.c: Use SEEK_ instead of L_ for lseek.
+ * system.h: Define SEEK_ macros if not defined.
+
+ * pr.c: Rename variable `truncate' to avoid library function conflict.
+
+Tue Jul 23 13:21:48 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * linebuffer.c, linebuffer.h: New files.
+ * comm.c, uniq.c (initbuffer, readline): Functions
+ removed (use versions in linebuffer.c).
+
+Mon Jul 22 13:23:53 1991 David J. MacKenzie (djm at wookumz.gnu.ai.mit.edu)
+
+ * sum.c (sumfile): Always print 5 digits for second number, too.
+ Interpret "-" to mean stdin.
+
+Sat Jul 20 14:24:40 1991 David J. MacKenzie (djm at bleen)
+
+ * uniq.c: Use isblank instead of isspace, to support POSIX.2.
+ * comm.c, pr.c, uniq.c (concat, fatal, error,
+ pfatal_with_name, xmalloc, xrealloc): Functions removed.
+
+Sat Jul 13 02:04:53 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * nl.c: Add long-named options. Doc fixes.
+
+Sat Jul 6 02:19:09 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * expand.c, unexpand.c [STDC_HEADERS]: Include stdlib.h.
+
+ * xwrite.c [POSIX]: Include unistd.h.
+ [STDC_HEADERS]: Don't declare errno.
+
+Sun Jun 30 23:35:16 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * uniq.c: Add long-named options. Remove marginally useful -z
+ option (zero padded repeat counts).
+
+Thu Jun 27 16:31:45 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * tail.c (tail_file), tac.c (save_stdin, tac_file), split.c
+ (cwrite), head.c (head_file), cat.c (main): Check close return
+ value for delayed error report due to NFS.
+
+Tue Jun 11 00:12:15 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * cat.c: Replace "uchar" with "unsigned char", to avoid
+ problems with various systems' typedefs.
+
+Thu Jun 6 12:54:26 1991 David J. MacKenzie (djm at geech.gnu.ai.mit.edu)
+
+ * cat.c (cat): Interpret ENOTTY return from FIONREAD ioctl to mean
+ operation is unsupported, for HP-UX 7.0.
+
+Sun Apr 14 21:49:17 1991 Richard Stallman (rms at mole.gnu.ai.mit.edu)
+
+ * sum.c: Always print five digits for first number.
+
+Fri Mar 15 16:16:54 1991 David J. MacKenzie (djm at geech.ai.mit.edu)
+
+ * cat.c, cmp.c: Don't use fileno(); not needed.
+
+Thu Jan 10 02:16:55 1991 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * tac.c, tail.c: Change _POSIX_SOURCE to POSIX.
+
+Thu Dec 27 00:06:45 1990 David J. MacKenzie (djm at egypt)
+
+ * cut.c (cut_file_bytes, cut_file_fields): Make inbufp and
+ outbufp global.
+ (enlarge_line): Adjust inbufp and outbufp.
+
+Sun Sep 9 16:54:19 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cat.c: Declare free returning void, not int, so it
+ doesn't bomb on Xenix.
+
+Mon Sep 3 22:23:57 1990 David J. MacKenzie (djm at coke)
+
+ * tac.c: Print error messages before calling cleanup, not after.
+
+Tue Aug 28 18:05:24 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * tac.c (cleanup): Return SIGTYPE, not int.
+
+Tue Aug 7 12:51:18 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * cut.c (main, usage): Add -b and -n options for POSIX.
+ (set_fields): Don't allow SPC or TAB as number separators.
+
+ * paste.c (paste_parallel): If open of any file fails, quit
+ (for POSIX).
+
+Mon Aug 6 22:14:13 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * pr.c: Add POSIX -F option (same as -f).
+
+ * uniq.c (check_file): Allow '-' to mean stdin or stdout.
+
+Mon Aug 6 14:43:30 1990 David J. MacKenzie (djm at pogo.ai.mit.edu)
+
+ * head.c, tail.c: Change `chars' to `bytes' globally.
+ (main, usage): Use POSIX.2 draft 10 option syntax.
+
+Sun Aug 5 11:51:12 1990 David J. MacKenzie (djm at pogo.ai.mit.edu)
+
+ * cat.c (main): Don't delay error messages, so they appear
+ where expected.
+ (main, simple_cat, cat): Make errors in input files nonfatal.
+
+Sat Aug 4 10:11:30 1990 David J. MacKenzie (djm at pogo.ai.mit.edu)
+
+ * cat.c: Remove -c option added for POSIX draft 9, since POSIX
+ draft 10 removed it.
+
+ * tac.c (tac_stdin): Use fstat instead of lseek to determine
+ whether stdin is seekable, because lseek silently fails on
+ some special files, like tty's.
+ tail.c (tail_chars, tail_lines): Use fstat instead of lseek;
+ don't turn off -f for non-regular files (assume the user knows
+ what he's doing; it might work for fifo's and sockets).
+
+ * paste.c (main): If no files given, use stdin.
+ Don't let collapse_escapes write on string constant (delim default).
+ (paste_parallel): Don't close stdin.
+
+ * cut.c (main): Use standard input for filename of "-".
+
+ * comm.c (compare_files): Allow '-' to mean stdin.
+
+Fri Aug 3 13:38:28 1990 David J. MacKenzie (djm at pogo.ai.mit.edu)
+
+ * cut.c (enlarge_line): Take an arg giving the required amount
+ of space. Change callers.
+ (main): Don't allow -t'<TAB>' without -f.
+ Make `delim' unsigned to fix sign extension problem in comparison.
+
+Tue Jul 17 12:36:11 EDT 1990 Jay Fenlason (hack@ai.mit.edu)
+
+ * pr.c Deleted excess whitespace from ends of lines.
+ Modified to work with current version of getopt, which
+ returns 1 instead of 0 for non-options.
+ Reversed the meaning of the -f option, to be compatable
+ with real pr.
+
+Sun Jul 8 00:39:31 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * cmp.c (main, usage): Rename -L option to -c and don't have
+ it imply -l.
+ (printc): Take an arg to specify number of chars to pad to,
+ for column alignment.
+ (cmp): Respect flag_print_chars in default output format.
+ Align columns for cmp -cl.
+
+Sat Jul 7 17:23:30 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * cmp.c: For +show-chars, have getopt return 'L' so
+ `flag_print_chars' gets set.
+
+Fri Jun 29 01:04:19 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * tac.c (main): Initialize fastmap and translate fields of
+ regex before compiling it.
+
+Fri Jun 22 00:38:20 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * tac.c: Change +regexp to +regex for consistency with GNU find.
+
+Wed Jun 20 01:46:09 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cat.c (cat): If FIONREAD is available, only use it if it is
+ supported by the filesystem that the file is on.
+
+Sun Jun 3 20:26:19 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cat.c (main): Add a variable to control whether the check
+ for input file == output file is made, because no values of
+ st_dev and st_ino should be assumed to be available for this
+ purpose. Only do the check for regular files.
+
+ * tac.c: Use bcopy instead of memcpy.
+
+Thu May 31 00:55:36 1990 David J. MacKenzie (djm at apple-gunkies)
+
+ * head.c: Use longs instead of ints for file offsets, for 16
+ bit machines.
+
+Tue May 22 00:56:51 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cmp.c: Change some ints to longs for 16 bit machines.
+ (bcmp_cnt): Make char-pointer counting slightly simpler.
+
+Sat May 12 01:16:42 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cat.c (main): Allow input file to be output file for devices
+ (ttys, etc.). Check whether input file is output file when
+ reading standard input. Print any error messages for standard
+ input.
+
+ * cmp.c (bcmp_cnt): Handle int comparisons correctly on 16 bit
+ machines as well as 32 bit ones.
+ * cmp.c, tail.c: Use longs instead of ints for file offsets.
+
+Fri May 11 02:11:03 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cmp.c: Fix some exit statuses for POSIX.
+
+Tue May 8 03:41:42 1990 David J. MacKenzie (djm at abyss)
+
+ * tac.c: Use regular expressions as the record boundaries.
+ Give better error messages.
+ Reformat code and make it more readable.
+ (main): Use getopt_long to parse options.
+ (tac_stdin): Do not make a temporary file if standard input
+ is a file.
+ (tac_file): New function.
+ (tac): Take an open file desc as an arg.
+ (output): Rewrite to use its own efficient buffering.
+ (xmalloc, xrealloc, xwrite): New functions.
+
+Sun Apr 8 20:33:20 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * head.c, tail.c: Use `error' instead of `fatal_perror' and
+ `nonfatal_perror'. Remove some unnecessary info from messages.
+
+Wed Mar 21 09:30:18 1990 David J. MacKenzie (djm at pogo.ai.mit.edu)
+
+ * comm.c (main): Pass the list of files to compare_files as a
+ char ** instead of a char *.
+ (compare_files): Make arg a char **.
+
+ * uniq.c: Declare some functions as void.
+ Change global vars `countmode' and `mode' from ints to enums.
+ (main): Use getopt to parse options and support POSIX options.
+ Don't use integer_arg to parse numbers, since `-#' can't be
+ parsed that way using getopt.
+ (find_field): Use isspace for finding fields boundaries.
+
+Tue Mar 20 14:28:25 1990 David J. MacKenzie (djm at pogo.ai.mit.edu)
+
+ * comm.c (main): Call usage if given bad option or wrong
+ number of args. Exit with 0 status normally.
+ (usage): New function.
+ Declare some other functions as void.
+
+Wed Mar 14 10:48:40 1990 David J. MacKenzie (djm at rice-chex)
+
+ * cmp.c (main, cmp, usage): Replace -q +quick option with -L
+ +show-chars option to add ASCII representation of bytes to -l format.
+
+Tue Mar 13 00:50:14 1990 David J. MacKenzie (djm at rice-chex)
+
+ * cmp.c (cmp): Change EOF message for POSIX compatibility.
+ For -l format, clear bits > FF.
+
+Mon Mar 5 17:21:00 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * tail.c: Move global `errors' into main instead of having
+ nonfatal_perror set it.
+ (tail, tail_chars, tail_file, tail_lines, pipe_chars, pipe_lines):
+ Return an error status.
+ (file_lines, start_chars, start_lines): Reverse the meaning of
+ the return value.
+ (tail_lines, tail_chars): Account for that reversal.
+
+Mon Mar 5 00:34:36 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * head.c: Move global `errors' into main and have the various
+ functions return an error status instead of setting it in
+ nonfatal_perror.
+
+Sat Mar 3 11:27:27 1990 Torbj|rn Granlund (tege at echnaton)
+
+ * cmp.c (cmp): Call function bcmp_cnt for flag == 0 (i.e. no
+ options specified), to compare the two blocks and count
+ newlines simultaneously.
+ * cmp.c New function: bcmp_cnt.
+
+ * cmp.c (main): Test if output is redirected to /dev/null, and
+ assume `-s' if this is so.
+
+Tue Feb 20 17:09:19 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cat.c: Change `argbad' from a char to a short, so it will
+ work on machines with unsigned chars.
+
+Sat Feb 10 02:16:40 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
+
+ * cmp.c (cmp): Rename `r' to `first_diff', and `x' to `smaller'.
+ Remove unneccessary variable `c1'. If -l was given, increase
+ `char_number' by the number of bytes read, after producing output,
+ rather than by the offset of the first differing bytes, before
+ producing output.
+ Replace if-else-if constructions with case statements for clarity.
+ (bcmp2): Rename `n' to `nread'.
+
+Wed Dec 20 01:32:06 1989 David J. MacKenzie (djm at hobbes.ai.mit.edu)
+
+ * nl.c (proc_text): Use re_search instead of re_match.
+
+Tue Dec 19 01:26:34 1989 David J. MacKenzie (djm at hobbes.ai.mit.edu)
+
+ * nl.c: Indent. Un-nest statements. Use GNU regexp functions
+ instead of System V ones. Move function declarations together.
+ (quit): Remove useless function.
+ (program_name): New variable for error messages.
+ (main): Use perror in error message.
+ (xmalloc): New function to replace myalloc.
+ (myalloc): Function removed.
+ Global: use program_name and xmalloc.
+
+Sun Dec 17 00:36:36 1989 David J. MacKenzie (djm at hobbes.ai.mit.edu)
+
+ * uniq.c: Declare some functions.
+ (main): Initialize infile and outfile. Call usage if given
+ invalid args. Normally exit with 0 status instead of garbage.
+ (usage): New function to print usage message and exit.
+ (check_file): Remove unused variable.
+ (readline): Compare against EOF, not < 0.
+ (xmalloc, xrealloc): Return char *, not int.
+ Ok to return 0 if 0 bytes requested.
+ (lb1, lb2): Remove unused global vars.
+ (concat): Remove unused function.
+
+Sat Dec 16 15:15:50 1989 David J. MacKenzie (djm at hobbes.ai.mit.edu)
+
+ * comm.c: Remove unused global variables lb1, lb2.
+ (main): Remove unneeded variable.
+ (compare_files): Remove unused arg.
+ (readline): un-nest assignment. Test against EOF instead of < 0.
+ (error): Print to stderr, not stdout.
+ (xmalloc, xrealloc): Return char * instead of int.
+ Returning 0 is ok if 0 bytes requested (ANSI C).
+
+
+ -----
+
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2006 Free Software
+ Foundation, Inc.
+
+ Copying and distribution of this file, with or without
+ modification, are permitted provided the copyright notice
+ and this notice are preserved.
diff --git a/old/textutils/NEWS b/old/textutils/NEWS
new file mode 100644
index 0000000..da8d1a5
--- /dev/null
+++ b/old/textutils/NEWS
@@ -0,0 +1,472 @@
+Changes in release 2.1
+[2.0.22]
+* `od -t f8' works once again [bug introduced in textutils-2.0.8]
+* various portability fixes, and general clean-up
+* various minor, corner-case bug fixes
+[2.0.21]
+* split accepts new option -a or --suffix-length.
+* split no longer generates longer suffixes than requested; instead, it reports
+ an error when suffixes are exhausted. POSIX requires this behavior.
+* The _POSIX2_VERSION environment variable lets you select which version
+ of POSIX the utilities should conform to. Its default value is system
+ dependent. Set _POSIX2_VERSION=199209 to cause the utilities to support
+ obsolete usage like "sort +1".
+* The following obsolete usages are no longer supported when conforming
+ to POSIX 1003.1-2001, which (at the time this change was made) was thought
+ to say that implementations must reject most digit-string options:
+ expand -N (instead, use expand -t N)
+ head -N (instead, use head -c N or head -n N)
+ fold -N (instead, use fold -w N)
+ split -N (instead, use split -l N)
+ tail -N (instead, use tail -c N or tail -n N)
+ unexpand -N (instead, use unexpand --first-only -t N)
+ uniq -N (instead, use uniq -f N)
+ The following obsolete usages (options without arguments) are no
+ longer supported when conforming to POSIX 1003.1-2001, which (at the
+ time this change was made) was thought to say that implementations must
+ reject options with optional arguments:
+ od -s (instead, use od --strings)
+ od -w (instead, use od --width)
+ pr -S (instead, use pr --sep-string)
+[2.0.20]
+* tr no longer gets failed a assertion for [==] or [::]
+* The following obsolete usages are no longer supported when conforming
+ to POSIX 1003.1-2001, which says that arguments with leading "+"
+ are file names in these contexts:
+ sort +POS1 (instead, use sort -k)
+ tail +N (instead, use tail -c +N or tail -n +N)
+ uniq +N (instead, use uniq -s N)
+* Warnings are issued for obsolete usages on older hosts,
+ unless POSIXLY_CORRECT is set in the environment.
+* sort -m no longer segfaults when given an empty file
+* sort -S now accepts 'K' as a synonym for 'k'.
+* wc recognizes all locale-defined white-space characters, not just those
+ in the "C" locale.
+[2.0.19]
+* portability tweak to make lib/regex.c compile
+* split translatable strings only in the middle of sentences
+[2.0.18]
+* sort could segfault on systems without a working mkstemp function and
+ with a gettimeofday function that clobbers the static buffer that
+ localtime uses for it's return value -- introduced in 2.0.17
+[2.0.17]
+* csplit no longer gets a failed assertion for this:
+ printf 'a\n\n'|csplit - '/^$/' 2
+* sort detects physical memory attributes more portably
+* tail no longer gets a segfault on Linux's /proc/ksyms
+* sum -s produces the proper 16-bit checksum for large files
+ (this fixes a bug that was introduced in 2.0f)
+* uniq is now about 3 times faster than the version from 2.0 on Linux systems;
+ the code uses lock-avoiding variants of common I/O functions
+[2.0.16]
+* tail -F no longer segfaults
+[2.0.15]
+* `head -c N' and `od -N N' now read no more than N bytes of input
+* tail accepts new option: -F, equivalent to `--follow=name --retry',
+ for compatibility with the FreeBSD and NetBSD versions of tail.
+* fmt no longer segfaults when using a maximum line width larger than 32767
+* uniq's --all-repeated option has new modes to delimit groups
+ of duplicate lines: --all-repeated={precede,separate,none(default)}
+[2.0.14]
+* sort now accepts long options like "--reverse" and "--".
+* sort now checks option syntax as POSIX requires, except that (as usual
+ for GNU) options can follow file names unless POSIXLY_CORRECT is set.
+ For example, invalid positional combinations like "sort +1 -r -2" are
+ now rejected as per POSIX.
+* The next POSIX standard will require that obsolescent 'sort'
+ positional options like +1 be treated as file names, not options.
+ Please use 'sort -k' instead.
+[2.0.13]
+* pr accepts new -D or --date option, to specify date format.
+* The following changes are required by POSIX:
+ - If POSIXLY_CORRECT is set, dates in pr headers now look something like
+ 'Dec 4 23:59 2001', with the exact appearance affected by LC_TIME.
+ - pr -h now affects only the center header string, not the entire header.
+ - pr no longer truncates headers.
+* Spacing in pr headers has been adjusted slightly.
+* `fmt --prefix=S' now works when S contains a byte with the high bit set
+[2.0.12]
+* sort has improved performance when using very little main memory
+* sort has improved memory management
+* sort is no longer susceptible to certain denial of service attacks
+* sort no longer suffers from a race condition whereby an interrupt received
+ during cleanup could cause it to fail to remove temporary files.
+ This problem could arise only on hosts without sigaction.
+[2.0.11]
+* sort accepts new -S SIZE option, to specify main-memory usage.
+[2.0.10]
+* od is faster and more portable than it was in 2.0.9
+* tail avoids an uninitialized memory reference
+[2.0.9]
+* od now prints valid addresses for offsets of 2^32 and larger, and allows
+ the byte offset (-j) and byte count (-N) arguments to be 2^32 and larger.
+* tail now works with line and byte counts of 2^32 and larger, on systems
+ with large file support
+* join now works with an 8-bit delimiter
+* fix a compilation failure on some Solaris systems with wc.c
+[2.0.8]
+* od now supports 8-byte integers, assuming they're printable with e.g., %lld
+* new program: sha1sum
+* wc accepts new -m option: count (potentially multi-byte) characters
+* wc's `--chars' option is now equivalent to -m, not --bytes as it used to be
+* `cat -n' works properly when processing 2^31 or more lines
+[2.0g]
+* sort's --help output now warns that it is locale-aware
+* tail: fix a buffer underrun error that occurred on an empty pipe,
+ also thanks to bounded pointers
+* pr: fix a bounds violation found by Greg McGary's bounded-pointers-enabled gcc
+ It could have caused (with low probability) the columns on the last page of
+ output *not* to be `balanced' when they should have been.
+* sort: if the -T tmpdir option is given multiple times, all the given
+ directories are used; this can improve performance for huge sort/merges.
+[2.0f]
+* all programs fail when printing --help or --version output to a full device
+* cut no longer gets a segfault under some circumstances
+* unexpand accepts new option: --first-only
+[2.0e]
+* `tail -f directory' no longer gets a failed assertion
+* sort: big performance improvement when sorting many small files;
+ from Charles Randall
+* configure and portability changes in m4/ and lib/
+[2.0d]
+* preliminary sort performance improvements
+* tsort now works more like the traditional UNIX tsort. Before it would
+ exit when it found a loop. Now it continues and outputs all items.
+* unexpand no longer infloops on certain sequences of white space
+* unified lib/: now that directory and most of the configuration framework
+ is common between fileutils, textutils, and sh-utils
+[2.0c]
+* include lib/nanosleep.h.
+[2.0b]
+* portability tweaks for error.c vs. systems with deficient strerror_r
+[2.0a]
+* `tail --follow=name' no longer gets a failed assertion for a
+ dev,inode-reusing race condition
+* sort and comm no longer consider newlines to be part of the line,
+ as this requirement will likely be removed from POSIX.2.
+ This undoes some changes made for textutils 1.22m and 1.22n.
+* tail's (short only) -f option no longer accepts an optional argument,
+ so e.g., `tail -fn 2 file' works again.
+* tail no longer refuses to operate on certain types of files
+* fixed bug in tsort's handling of cycles
+
+Changes in release 2.0
+[1.22q]
+* HPUX portability fix: md5sum would dump core due to use of libc's getline
+[1.22p]
+* portability fixes from Paul Eggert based largely on tar-1.13 reports
+* `tail --pid=PID' now works even when PID belongs to some other user
+[1.22o]
+* tail accepts new option: --pid=PID
+[1.22n]
+* tail accepts the following new options (some of which were added in 1.22g):
+ --retry
+ --follow[={name|descriptor}]
+ --max-unchanged-stats=N
+ --max-consecutive-size-changes=N
+ --sleep-interval=S
+* wc uses the POSIX-mandated output format when POSIXLY_CORRECT is set
+* To maintain compatibility with sort, comm and join now obey the LC_COLLATE
+ locale, and comm now considers newlines to be part of the lines.
+* use lib/memchr.c only if it's not provided by the system -- this means
+ that on systems with a fast library memchr function you may notice an
+ improvement. If you use a system with a buggy or signifcantly slower
+ memchr, please report it.
+[1.22m]
+* sort now considers newlines to be part of the line, as required by POSIX.2.
+ E.g. a line starting with a tab now sorts before an empty line,
+ since tab precedes newline in the ASCII collating sequence.
+* sort handles NUL bytes correctly when configured/compiled with --enable-nls
+* fix typos in my version of AC_SEARCH_LIBS.
+* fix dates on config files so builders don't need autoconf/automake
+[1.22l]
+* sort no longer autodetects the locale of numbers and months,
+ as that conflicts with POSIX.2
+* `join -tC' now works when input contains trailing spaces
+* portability tweaks for Irix's cc
+[1.22k]
+* `sort -n' works with negative numbers when configured/compiled
+ with --enable-nls
+* head accepts byte and line counts of type uintmax_t (so up to 2^64 - 1)
+[1.22j]
+* tail: fix bug introduced in 1.22i
+[1.22i]
+* tail now terminates in `yes > k & sleep 1; tail -2c k'
+* `tail -f' now ensures that stdout is unbuffered
+* fix a bug in cut to allow use of 8-bit delimiters
+* pr accepts POSIX compliant options -s and -w,
+ the new capital letter options -J, -S and _W turn off the
+ unexpected interferences of the small letter options -s and -w
+ if used together with the column options.
+* pr output has been adapted to other UNIXes in some cases.
+[1.22h]
+* portability tweaks
+* Window/NT/DOS support
+[1.22g]
+* uniq accepts new option: --all-repeated (-D).
+* Windows/DOS portability fixes
+* new program: tsort
+* tail has several new options
+* md5sum can handle file names with embedded backslash characters
+* pr accepts long option names (see `pr --help')
+* new program: ptx (moved to this package from being its own distribution)
+[1.22f]
+* cut accepts new --output-delimiter=STR option
+* `sort -o no-such-file no-such-file' now fails, as it should
+* fix pr bug: pr -td didn't double space
+* fix tac bug when using -b, -r, and -s SEPARATOR
+* fix sort bug whereby using key-local `d' option would cause following
+ key specs to be ignored when any two keys (in the `d'-modified test)
+ compared equal.
+[1.22e]
+* remove maintainer mode
+[1.22d]
+* wc accepts new option: --max-line-length (-L)
+* sort can sort according to your locale if your C library supports that
+[1.22c]
+[1.22b]
+* od supports a new trailing `z' character in a type specification:
+ $ od -tx1z .
+ 0000000 be ef c6 0f fd f9 d7 e0 ec cb f3 c6 00 db e8 00 >................<
+ 0000020 00 00 d2 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
+ 0000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >................<
+ *
+ 0000600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 cc >..............5.<
+ 0000620 05 63 76 74 2e 6f 00 00 29 ac 08 70 72 6f 6a 65 >.cvt.o..)..proje<
+ 0000640 63 74 73 00 00 00 18 9a 05 63 76 74 2e 63 00 00 >cts......cvt.c..<
+ 0000660 18 d9 03 52 43 53 00 00 18 c0 05 78 2e 64 61 74 >...RCS.....x.dat<
+
+[1.22a]
+* sort -c reports both the number and the contents of the first out-of-order
+ line, in addition to the file name.
+* `head -c 4096m' is no longer treated just like `head -c 0'
+ now it gets a diagnostic about 4096m being too large.
+* pr: For compatibility (also more POSIX compliant): Include default
+ separator `TAB' when merging lines of full length.
+* When POSIXLY_CORRECT is not set, tail -N now accepts more than one file
+ argument, to be consistent with the way head -N works. If POSIXLY_CORRECT
+ is set, using two or more file arguments with the obsolescent form (-N)
+ evokes an error. To avoid the warning or failure, use the POSIX -n N option
+ or the GNU --lines=N option.
+
+Changes in release 1.22
+[1.21a]
+* Fix a bug in tail when invoked with an argument like `+NUMBERc'
+* Add test suite for tail
+
+Changes in release 1.21
+* Using --program-prefix no longer applies the prefix twice
+
+Changes in release 1.20
+* fix pr: -l now uses total number of lines per page also with -f
+* fix pr: use left-hand-side truncation of header string to avoid line
+ overflow
+* fix pr: it now accepts `form feeds set in input files', also with -m
+ and multiple form feeds at different pages in each file
+* pr now accepts: -h "", print a blank line header
+* pr: when skipping pages (+FIRST_PAGE option) line counting (-n option)
+ starts with 1st line of input file (not of 1st page printed) by default
+* pr accepts new option: -N, start printing with an optional line number
+* pr -t retains `form feeds set in input files' (`don't destroy page layout')
+* pr accepts new option: -T, equivalent to -t, but eliminate also form feeds
+ (`clear file')
+* pr accepts the extension: +FIRST_PAGE[:LAST_PAGE]
+* pr -w and -s option disentangled (`use a separator' no longer destroys
+ column alignment)
+* pr accepts new option: -j, merge lines of full length
+* pr accepts the extension: -s[STRING], use separator string instead of
+ character only
+* pr -b is no longer an independent option, balancing is always used
+ with -COLUMN (a requirement of unrestricted use of form feeds)
+* pr accepts new option: --test, to run the pr tests with a constant
+ header string
+* join passes all of its tests on Alpha OSF 4.0.
+* sort no longer improperly ignores blanks in determining starting and ending
+ positions for keys with explicit character offsets
+* fix bug in csplit with regexp and negative offset that led to infinite loop
+ Changes in test release 1.19q
+* fix bug in sort -c that sometimes resulted in a segfault
+ Changes in test release 1.19p
+* md5sum's --string option is being deprecated and is no longer documented.
+ It is still accepted, but will be removed altogether in 1.22.
+* tr '[:lower:]' '[:upper:]' no longer fails when LC_CTYPE is set to
+ iso_8859_1 on Solaris -- or any other character set with differing
+ numbers of uppercase and lowercase characters
+* split and tail diagnose unrecognized multiplier suffixes, in e.g.,
+ `split --bytes=1M' (should be `-b 1m' or `--bytes=1m')
+* fix bug in md5sum's handling of partial reads
+* fix bug in treatment by sort -f of bytes with high-bit set
+* update configuration system to use automake's aclocal program
+* configure performs sanity check on CC and CFLAGS to avoid a misleading
+ failure that suggested cross-compiling was the cause
+* distribute test suites for cut, join, sort, and tr
+* unexpand no longer gets in endless loop
+* when verifying checksums, md5sum uses the binary mode flag from the
+ input stream rather than the one from the command line
+
+Changes in release 1.19
+* md5sum can verify digests of files with names containing newline characters
+* update from gettext-0.10.20.
+
+Changes in release 1.18
+* when building sort, link with -lm on systems that use the replacement strtod
+* update from gettext-0.10.17.
+
+Changes in release 1.17
+* include texinfo.tex in the distribution
+
+Changes in release 1.16
+* sort is compatible with Unix sort when a key-end spec refers to the N'th
+ character in a field that has fewer than N characters
+* tail with old-style options like -20k and +31m operates on units of bytes,
+ as the --help usage message says. Before, it used units of lines.
+
+Changes in release 1.15
+* od gives better diagnostics for invalid format specs
+* uses automake-generated Makefile templates
+* configure takes a new option: --enable-maintainer-mode
+* fix a bug in fmt when prefix has trailing white space
+* internationalized diagnostic messages
+* fix a couple bugs in tr involving use of -c and/or -d flags -- see ChangeLog
+* diagnose some improper or questionable invocations of csplit
+* properly handle `echo |csplit - 1 1', rather than aborting
+* fix join: without -t it now ignores leading blanks
+* sort accepts new option: -z for NUL terminated records
+* join accepts new option: --ignore-case, -i
+* uniq accepts new option: --ignore-case, -i
+
+User-visible changes in release 1.14
+* sort -i and sort -d properly order strings containing ignored characters
+* nl: rename misleading --first-page=N option to --starting-line-number=N.
+* sort diagnoses invalid arguments to -k, then fails
+* sort -n properly orders invalid integers with respect to valid integers
+* sorting works with character offsets larger than corresponding field width
+* sort's -b option and `b' modifier work
+* sort -k2,2 works.
+* csplit detects integer overflow when converting command line arguments
+* sort accepts new option/flag, -g, for sorting numbers in scientific notation
+* join accepts POSIX `-o 0' field specifier.
+* tr 'a[b*512]' '[a*]' < /dev/null terminates
+* tr '[:*3][:digit:]' 'a-m' and tr 'a[=*2][=c=]' 'xyyz' no longer fail
+* special characters in tr's string1 and string2 may be escaped with backslash
+
+User-visible changes in release 1.13
+* md5sum: with --check, distinguish between open/read failure and bad checksum
+* md5sum: remove -h, -s, -v short options
+* md5sum: rename --verbose to --warn, --quiet to --status
+* md5sum --check fails if it finds no properly formatted checksum lines
+* sort -c prints `disorder on...' message on standard error, not stdout
+* sort -k works as described in the texinfo documentation
+* tail works on NetBSD
+* md5sum reads and writes (de facto) standard Plumb/Lankester format
+* sort accepts -.1 +.2 options for compatibility
+* od works properly when dump limit is specified and is a multiple of
+ bytes_per_block (set by --width, 16 by default).
+
+User-visible changes in release 1.12
+* sort no longer reports spurious errors on Ultrix systems
+* new program: md5sum
+* all --help messages have been improved
+* join's -a1 and -a2 options work
+* tr '[:upper:]' '[:lower:]' no longer reads uninitialized memory
+* sort properly handles command line arguments like `+7.2n'
+* fmt properly formats paragraphs not terminated by a newline
+* tail -f flushes stdout before sleeping so that it will output partial
+ lines sooner
+* sort properly orders fields where one field is a proper prefix of the other
+* sort properly interprets field offsets specified via the -k option
+* dd, od, and tail work on systems for which off_t is long long (e.g. BSD4.4)
+* wc is faster when not counting words
+* wc now works even when file pointer isn't at beginning of file
+* expand no longer seg faults with very long tab lists
+
+User-visible changes in release 1.11
+* fmt is built
+
+User-visible changes in release 1.10
+* skeletal texinfo documentation (mainly just the `invoking' nodes)
+* new program: fmt
+* tail -f on multiple files reports file truncation
+* tail -q has been fixed so it never prints headers
+* wc -c is much faster when operating on non-regular files
+* unexpand gives a diagnostic (rather than a segfault) when given a name of
+ a nonexistent file.
+* cat, csplit, head, split, sum, tac, tail, tr, and wc no longer fail
+ gratuitously when continued after a suspended read or write system call.
+* cut interprets -d '' to mean `use the NUL byte as the delimiter' rather
+ than reporting that no delimiter was specified and failing.
+* `echo a:b:c: | cut -d: -f3,4' prints `c:'. Before it printed just `c'.
+* cut has been rewritten, is markedly faster for large inputs, and passes a
+ fairly large test suite.
+* sort properly handles the argument to the -T option.
+
+Major changes in release 1.9.1:
+* cut no longer ignores the last line of input when that line lacks a
+ trailing newline character
+
+Major changes in release 1.9:
+* `echo a:b:c: | cut -d: -f3-' prints `c:' and
+ `echo a:b | cut -d: -f1' prints `a'.
+* the command `printf '\t\n' |fold -w n' now terminates.
+ Before, it wouldn't stop for n less than 8.
+* sort accepts and ignores -y[string] options for compatibilty with Solaris.
+* cat -v /dev/null works on more systems
+* od's --compatible (-C) flag renamed to --traditional (no short option)
+* --help and --version exit successfully
+* --help gives a one-line description of each option and shows the
+ correspondence between short and long-named options.
+* fix bug in cut. Now `echo 'a:b:c:' | cut -d: -f3-' works.
+ Before it printed `c' instead of `c:'
+* csplit allows repeat counts to be specified via `{*}'.
+* csplit accepts a new option, --suffix=format that supercedes the
+ --digits option. The --digits option will continue to work.
+* csplit accepts a new option, --elide-empty-files.
+* configure uses config.h, so DEFS won't exceed preprocessor limits of
+ some compilers on the number of symbols defined via -D.
+* work around problem where $(srcdir)/config.h was used instead of
+ ../config.h -- this happened only when building in a subdirectory
+ and when config.h remained in $(srcdir) from a previous ./configure.
+
+Major changes in release 1.8:
+* added non-ANSIfied version of memchr.c from GNU libc.
+
+Major changes in release 1.7:
+* none
+Major changes in release 1.6:
+* with the --version option programs print the version and exit immediately
+* pr -2a really terminates
+* pr -n produces multi-column output
+
+Major changes in release 1.5:
+* sort is 8-bit clean
+* sort's -n and -M options no longer imply -b
+* several bugs in sort have been fixed
+* all programs accept --help and --version options
+* od --compatible accepts pre-POSIX arguments
+* pr -2a terminates
+
+Major changes in release 1.4:
+* add od and cksum programs
+* move cmp to GNU diff distribution
+* tail -f works for multiple files
+* pr prints the file name in error messages
+* fix some off by 1 errors in pr and fold
+* optimize wc -c on regular files
+* sort handles `-' argument correctly
+* sort supports -T option
+* tr ranges like a-a work
+* tr x '' fails gracefully
+* default sum output format is BSD compatible
+* paste -d '' works
+
+========================================================================
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2006 Free Software Foundation, Inc.
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
+Texts. A copy of the license is included in the ``GNU Free
+Documentation License'' file as part of this distribution.
diff --git a/po/ChangeLog b/po/ChangeLog
new file mode 100644
index 0000000..80fa52a
--- /dev/null
+++ b/po/ChangeLog
@@ -0,0 +1,229 @@
+2006-10-19 Jim Meyering <jim@meyering.net>
+
+ * POTFILES.in: Also include lib/regcomp.c, since it too uses gettext.
+
+2006-10-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * POTFILES.in: Add lib/xstrtol.h.
+
+2006-08-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * .cvsignore: More ../bootstrap-related fixes, plus remove old
+ cruft. Add *.po, LINGUAS, Makevars. Remove *.cat, *.msg,
+ cat-id-dbl.c, messages.mo, stamp-cat-id.
+
+2006-08-22 Jim Meyering <jim@meyering.net>
+
+ * .cvsignore: Add files that are now generated by ../bootstrap.
+
+2006-08-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * LINGUAS, Makefile.in.in, Makevars, Rules-quot, af.po, be.po:
+ * bg.po, boldquot.sed, ca.po, cs.po, da.po, de.po, el.po:
+ * en@boldquot.header, en@quot.header, es.po, et.po, eu.po:
+ * fi.po, fr.po, ga.po, gl.po, hr.po, hu.po, insert-header.sin:
+ * it.po, ja.po, ko.po, lg.po, ms.po, nb.po, nl.po, no.po, pl.po:
+ * pt.po, pt_BR.po, quot.sed, remove-potcdate.sin, ro.po, ru.po:
+ * rw.po, sk.po, sl.po, sr.po, sv.po, tr.po, uk.po, vi.po, wa.po:
+ * zh_CN.po, zh_TW.po:
+ Remove from CVS, since ../bootstrap generates them automatically.
+
+2006-08-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * po/ChangeLog: Add copyright notice.
+ * po/Makevars: Likewise.
+
+2006-08-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makevars (XGETTEXT_OPTIONS): Add pass-c-format flags for
+ _ and N_, so that we get format checking even when --enable-nls.
+ Add c-format flags for error, error_at_line, asprintf, vasprintf,
+ asnprintf, vasnprintf, wrapf.
+ (USE_MSGCTXT): New macro.
+ * Rules-quot (en@quot.po-create, en@boldquot.po-create): New rules.
+
+2006-08-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.in.in: Sync from gettext 0.15.
+
+ * LINGUAS: Add ro, sr, uk, wa.
+ * ro.po, sr.po, uk,po, wa.po: New files,
+ gotten from the following files relative to
+ <http://www.iro.umontreal.ca/translation/teams/PO/>:
+ ro/fileutils-4.1.11.ro.po, sr/sh-utils-2.0.15.sr.po,
+ uk/fileutils-4.1.11.uk.po, wa/fileutils-4.1.11.wa.po.
+
+2006-08-09 Jim Meyering <jim@meyering.net>
+
+ * POTFILES.in: Add lib/randread.c, lib/xmemxfrm.c, and src/shuf.c.
+
+2006-02-27 Jim Meyering <jim@meyering.net>
+
+ * POTFILES.in: Add src/base64.c.
+
+2005-12-17 Jim Meyering <jim@meyering.net>
+
+ * POTFILES.in: Add lib/acl.c.
+
+2005-12-13 Jim Meyering <jim@meyering.net>
+
+ * LINGUAS: Add Kinyarwanda (rw).
+ Add Croatian (hr).
+
+2005-11-22 Jim Meyering <jim@meyering.net>
+
+ * POTFILES.in: Add lib/euidaccess-stat.c.
+
+2005-10-24 Jim Meyering <jim@meyering.net>
+
+ * Makefile.in.in: Update from gettext cvs (0.15).
+ (Makefile): Remove stray po-directories argument.
+
+2005-10-07 Jim Meyering <jim@meyering.net>
+
+ * POTFILES.in: Remove the lib/euidaccess-stat.c line,
+ until I'm ready to add the corresponding file.
+
+2005-10-02 Jim Meyering <jim@meyering.net>
+
+ * POTFILES.in: Add lib/euidaccess-stat.c.
+
+2005-09-24 Jim Meyering <jim@meyering.net>
+
+ * POTFILES.in: Add lib/gai_strerror.c.
+
+2005-06-14 Jim Meyering <jim@meyering.net>
+
+ * POTFILES.in: Change openat.c to openat-die.c.
+
+2005-06-02 Jim Meyering <jim@meyering.net>
+
+ * POTFILES.in: Change makepath.c to mkdir-p.c here, too.
+
+2005-05-10 Jim Meyering <jim@meyering.net>
+
+ * LINGUAS: Add Vietnamese (vi).
+
+2005-04-06 Jim Meyering <jim@meyering.net>
+
+ * LINGUAS: Remove rw.
+ * rw.po: Remove file -- many invalid message strings.
+
+2005-04-05 Jim Meyering <jim@meyering.net>
+
+ * LINGUAS: Add Kinyarwanda (rw).
+
+2004-12-14 Jim Meyering <jim@meyering.net>
+
+ * LINGUAS: Add Bulgarian (bg).
+
+2004-11-28 Jim Meyering <jim@meyering.net>
+
+ * POTFILES.in: Add lib/openat.c.
+
+2004-10-11 Jim Meyering <jim@meyering.net>
+
+ * fr.po: Fix two typos reported in http://bugs.debian.org/275924
+
+2004-09-22 Jim Meyering <jim@meyering.net>
+
+ * POTFILES.in: Remove lib/xmalloc.c.
+ Add lib/xalloc-die.c.
+
+2004-06-26 Jim Meyering <jim@meyering.net>
+
+ * LINGUAS: Add Basque (eu).
+
+2004-04-16 Jim Meyering <jim@meyering.net>
+
+ * fr.po: Correct typo in the french rendition of date's --help output:
+ s/%r/%R/. Patch by Nicolas Boulenguez.
+
+2004-03-02 Jim Meyering <jim@meyering.net>
+
+ * LINGUAS: Add Afrikaans (af)
+
+2004-01-13 Jim Meyering <jim@meyering.net>
+
+ * POTFILES.in: Replace src/sys2.h with src/system.h.
+
+2004-01-12 Jim Meyering <jim@meyering.net>
+
+ * Makefile.in.in: Update from gettext-0.13.1.
+
+2003-11-09 Jim Meyering <jim@meyering.net>
+
+ * POTFILES.in: Add lib/root-dev-ino.h.
+
+2003-10-17 Jim Meyering <jim@meyering.net>
+
+ * POTFILES.in: Add lib/xfts.c.
+
+2003-09-22 Jim Meyering <jim@meyering.net>
+
+ * Makevars (XGETTEXT_OPTIONS): Add --from-code=UTF-8 to accommodate the
+ non-ASCII comment to translators in ptx.c regarding the author's name.
+
+2003-08-27 Jim Meyering <jim@meyering.net>
+
+ * Makefile.in.in: Update from gettext-0.12.2.
+
+2003-08-19 Jim Meyering <jim@meyering.net>
+
+ * Makevars (MSGID_BUGS_ADDRESS): Define.
+
+2003-08-12 Jim Meyering <jim@meyering.net>
+
+ * LINGUAS: Add Irish (ga).
+
+2003-07-11 Jim Meyering <jim@meyering.net>
+
+ * POTFILES.in: Add src/nohup.c and src/setuidgid.c.
+
+2003-03-18 Jim Meyering <jim@meyering.net>
+
+ * POTFILES.in: Remove lib/c-stack.c.
+
+2003-02-16 Jim Meyering <jim@meyering.net>
+
+ * LINGUAS: Add Finnish (fi).
+
+2003-01-11 Jim Meyering <jim@meyering.net>
+
+ * POTFILES.in: Add src/readlink.c.
+
+2002-11-21 Jim Meyering <jim@meyering.net>
+
+ * LINGUAS: Add ms (Malay).
+
+2002-11-14 Jim Meyering <jim@meyering.net>
+
+ * POTFILES.in: Remove lib/long-options.c and lib/same.c.
+ Although each defines `_', neither actually used it.
+
+2002-11-09 Jim Meyering <jim@meyering.net>
+
+ * Makevars (EXTRA_LOCALE_CATEGORIES): Add LC_TIME.
+ Patch by Tim Waugh for Red Hat bug #73669.
+
+2002-09-25 gettextize <bug-gnu-gettext@gnu.org>
+
+ * Makefile.in.in: Upgrade to gettext-0.11.5.
+
+2002-09-16 Jim Meyering <jim@meyering.net>
+
+ * LINGUAS: Add be (Belarusian).
+
+2002-09-02 Jim Meyering <jim@meyering.net>
+
+ * LINGUAS: Add lg (Luganda).
+
+
+ -----
+
+ Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software
+ Foundation, Inc.
+
+ Copying and distribution of this file, with or without
+ modification, are permitted provided the copyright notice
+ and this notice are preserved.
diff --git a/po/LINGUAS b/po/LINGUAS
new file mode 100644
index 0000000..12c1bef
--- /dev/null
+++ b/po/LINGUAS
@@ -0,0 +1,34 @@
+af
+be
+bg
+ca
+cs
+da
+de
+el
+es
+et
+eu
+fi
+fr
+ga
+gl
+hu
+it
+ja
+ko
+ms
+nb
+nl
+no
+pl
+pt
+pt_BR
+ru
+rw
+sk
+sl
+sv
+tr
+zh_CN
+zh_TW
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
new file mode 100644
index 0000000..e7d1ab2
--- /dev/null
+++ b/po/Makefile.in.in
@@ -0,0 +1,395 @@
+# -*- buffer-read-only: t -*- vi: set ro:
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# Makefile for PO directory in any package using GNU gettext.
+# Copyright (C) 1995-1997, 2000-2006 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+#
+# This file can be copied and used freely without restrictions. It can
+# be used in projects which are not available under the GNU General Public
+# License but which still want to provide support for the GNU gettext
+# functionality.
+# Please note that the actual code of GNU gettext is covered by the GNU
+# General Public License and is *not* in the public domain.
+#
+# Origin: gettext-0.15
+
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+
+SHELL = /bin/sh
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datarootdir = @datarootdir@
+datadir = @datadir@
+localedir = @localedir@
+gettextsrcdir = $(datadir)/gettext/po
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+mkinstalldirs = $(SHELL) @install_sh@ -d
+mkdir_p = @mkdir_p@
+
+GMSGFMT_ = @GMSGFMT@
+GMSGFMT_no = @GMSGFMT@
+GMSGFMT_yes = @GMSGFMT_015@
+GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
+MSGFMT_ = @MSGFMT@
+MSGFMT_no = @MSGFMT@
+MSGFMT_yes = @MSGFMT_015@
+MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
+XGETTEXT_ = @XGETTEXT@
+XGETTEXT_no = @XGETTEXT@
+XGETTEXT_yes = @XGETTEXT_015@
+XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
+MSGMERGE = msgmerge
+MSGMERGE_UPDATE = @MSGMERGE@ --update
+MSGINIT = msginit
+MSGCONV = msgconv
+MSGFILTER = msgfilter
+
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+UPDATEPOFILES = @UPDATEPOFILES@
+DUMMYPOFILES = @DUMMYPOFILES@
+DISTFILES.common = Makefile.in.in remove-potcdate.sin \
+$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
+DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
+$(POFILES) $(GMOFILES) \
+$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+
+# Makevars gets inserted here. (Don't remove this line!)
+
+.SUFFIXES:
+.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
+
+.po.mo:
+ @echo "$(MSGFMT) -c -o $@ $<"; \
+ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
+
+.po.gmo:
+ @lang=`echo $* | sed -e 's,.*/,,'`; \
+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
+ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
+
+.sin.sed:
+ sed -e '/^#/d' $< > t-$@
+ mv t-$@ $@
+
+
+all: all-@USE_NLS@
+
+all-yes: stamp-po
+all-no:
+
+# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
+# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
+# we don't want to bother translators with empty POT files). We assume that
+# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
+# In this case, stamp-po is a nop (i.e. a phony target).
+
+# stamp-po is a timestamp denoting the last time at which the CATALOGS have
+# been loosely updated. Its purpose is that when a developer or translator
+# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
+# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
+# invocations of "make" will do nothing. This timestamp would not be necessary
+# if updating the $(CATALOGS) would always touch them; however, the rule for
+# $(POFILES) has been designed to not touch files that don't need to be
+# changed.
+stamp-po: $(srcdir)/$(DOMAIN).pot
+ test ! -f $(srcdir)/$(DOMAIN).pot || \
+ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
+ @test ! -f $(srcdir)/$(DOMAIN).pot || { \
+ echo "touch stamp-po" && \
+ echo timestamp > stamp-poT && \
+ mv stamp-poT stamp-po; \
+ }
+
+# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
+# otherwise packages like GCC can not be built if only parts of the source
+# have been downloaded.
+
+# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
+# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
+$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
+ if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
+ msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
+ else \
+ msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
+ fi; \
+ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
+ --files-from=$(srcdir)/POTFILES.in \
+ --copyright-holder='$(COPYRIGHT_HOLDER)' \
+ --msgid-bugs-address="$$msgid_bugs_address"
+ test ! -f $(DOMAIN).po || { \
+ if test -f $(srcdir)/$(DOMAIN).pot; then \
+ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
+ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
+ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
+ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
+ else \
+ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
+ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+ fi; \
+ else \
+ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+ fi; \
+ }
+
+# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
+# every "make" invocation, only create it when it is missing.
+# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
+$(srcdir)/$(DOMAIN).pot:
+ $(MAKE) $(DOMAIN).pot-update
+
+# This target rebuilds a PO file if $(DOMAIN).pot has changed.
+# Note that a PO file is not touched if it doesn't need to be changed.
+$(POFILES): $(srcdir)/$(DOMAIN).pot
+ @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
+ if test -f "$(srcdir)/$${lang}.po"; then \
+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+ echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
+ cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \
+ else \
+ $(MAKE) $${lang}.po-create; \
+ fi
+
+
+install: install-exec install-data
+install-exec:
+install-data: install-data-@USE_NLS@
+ if test "$(PACKAGE)" = "gettext-tools"; then \
+ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+ for file in $(DISTFILES.common) Makevars.template; do \
+ $(INSTALL_DATA) $(srcdir)/$$file \
+ $(DESTDIR)$(gettextsrcdir)/$$file; \
+ done; \
+ for file in Makevars; do \
+ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+ done; \
+ else \
+ : ; \
+ fi
+install-data-no: all
+install-data-yes: all
+ $(mkdir_p) $(DESTDIR)$(datadir)
+ @catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+ dir=$(localedir)/$$lang/LC_MESSAGES; \
+ $(mkdir_p) $(DESTDIR)$$dir; \
+ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
+ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
+ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
+ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+ if test -n "$$lc"; then \
+ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+ for file in *; do \
+ if test -f $$file; then \
+ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+ fi; \
+ done); \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ else \
+ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+ :; \
+ else \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ fi; \
+ fi; \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
+ fi; \
+ done; \
+ done
+
+install-strip: install
+
+installdirs: installdirs-exec installdirs-data
+installdirs-exec:
+installdirs-data: installdirs-data-@USE_NLS@
+ if test "$(PACKAGE)" = "gettext-tools"; then \
+ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+ else \
+ : ; \
+ fi
+installdirs-data-no:
+installdirs-data-yes:
+ $(mkdir_p) $(DESTDIR)$(datadir)
+ @catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+ dir=$(localedir)/$$lang/LC_MESSAGES; \
+ $(mkdir_p) $(DESTDIR)$$dir; \
+ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+ if test -n "$$lc"; then \
+ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+ for file in *; do \
+ if test -f $$file; then \
+ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+ fi; \
+ done); \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ else \
+ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+ :; \
+ else \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ fi; \
+ fi; \
+ fi; \
+ done; \
+ done
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall: uninstall-exec uninstall-data
+uninstall-exec:
+uninstall-data: uninstall-data-@USE_NLS@
+ if test "$(PACKAGE)" = "gettext-tools"; then \
+ for file in $(DISTFILES.common) Makevars.template; do \
+ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+ done; \
+ else \
+ : ; \
+ fi
+uninstall-data-no:
+uninstall-data-yes:
+ catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+ done; \
+ done
+
+check: all
+
+info dvi ps pdf html tags TAGS ctags CTAGS ID:
+
+mostlyclean:
+ rm -f remove-potcdate.sed
+ rm -f stamp-poT
+ rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
+ rm -fr *.o
+
+clean: mostlyclean
+
+distclean: clean
+ rm -f Makefile Makefile.in POTFILES *.mo
+
+maintainer-clean: distclean
+ @echo "This command is intended for maintainers to use;"
+ @echo "it deletes files that may require special tools to rebuild."
+ rm -f stamp-po $(GMOFILES)
+
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir:
+ $(MAKE) update-po
+ @$(MAKE) dist2
+# This is a separate target because 'update-po' must be executed before.
+dist2: stamp-po $(DISTFILES)
+ dists="$(DISTFILES)"; \
+ if test "$(PACKAGE)" = "gettext-tools"; then \
+ dists="$$dists Makevars.template"; \
+ fi; \
+ if test -f $(srcdir)/$(DOMAIN).pot; then \
+ dists="$$dists $(DOMAIN).pot stamp-po"; \
+ fi; \
+ if test -f $(srcdir)/ChangeLog; then \
+ dists="$$dists ChangeLog"; \
+ fi; \
+ for i in 0 1 2 3 4 5 6 7 8 9; do \
+ if test -f $(srcdir)/ChangeLog.$$i; then \
+ dists="$$dists ChangeLog.$$i"; \
+ fi; \
+ done; \
+ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
+ for file in $$dists; do \
+ if test -f $$file; then \
+ cp -p $$file $(distdir) || exit 1; \
+ else \
+ cp -p $(srcdir)/$$file $(distdir) || exit 1; \
+ fi; \
+ done
+
+update-po: Makefile
+ $(MAKE) $(DOMAIN).pot-update
+ test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
+ $(MAKE) update-gmo
+
+# General rule for creating PO files.
+
+.nop.po-create:
+ @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
+ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
+ exit 1
+
+# General rule for updating PO files.
+
+.nop.po-update:
+ @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
+ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
+ tmpdir=`pwd`; \
+ echo "$$lang:"; \
+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+ echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+ cd $(srcdir); \
+ if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \
+ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+ rm -f $$tmpdir/$$lang.new.po; \
+ else \
+ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+ :; \
+ else \
+ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+ exit 1; \
+ fi; \
+ fi; \
+ else \
+ echo "msgmerge for $$lang.po failed!" 1>&2; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ fi
+
+$(DUMMYPOFILES):
+
+update-gmo: Makefile $(GMOFILES)
+ @:
+
+Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
+ cd $(top_builddir) \
+ && $(SHELL) ./config.status $(subdir)/$@.in po-directories
+
+force:
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/po/Makevars b/po/Makevars
new file mode 100644
index 0000000..d56dcbe
--- /dev/null
+++ b/po/Makevars
@@ -0,0 +1,53 @@
+# -*- buffer-read-only: t -*- vi: set ro:
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ \
+ \
+ --flag=_:1:pass-c-format\
+ --flag=N_:1:pass-c-format\
+ --flag=error:3:c-format --flag=error_at_line:5:c-format\
+\
+ --from-code=UTF-8\
+ --flag=asprintf:2:c-format --flag=vasprintf:2:c-format\
+ --flag=asnprintf:3:c-format --flag=vasnprintf:3:c-format\
+ --flag=wrapf:1:c-format\
+ $${end_of_xgettext_options+}
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
+# package. (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.) Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright. The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER = Free Software Foundation, Inc.
+
+# This is the email address or URL to which the translators shall report
+# bugs in the untranslated strings:
+# - Strings which are not entire sentences, see the maintainer guidelines
+# in the GNU gettext documentation, section 'Preparing Strings'.
+# - Strings which use unclear terms or require additional context to be
+# understood.
+# - Strings which make invalid assumptions about notation of date, time or
+# money.
+# - Pluralisation problems.
+# - Incorrect English spelling.
+# - Incorrect formatting.
+# It can be your email address, or a mailing list address where translators
+# can write to without being subscribed, or the URL of a web page through
+# which the translators can contact you.
+MSGID_BUGS_ADDRESS = bug-coreutils@gnu.org
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used. It is usually empty.
+EXTRA_LOCALE_CATEGORIES = LC_TIME
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644
index 0000000..3746acc
--- /dev/null
+++ b/po/POTFILES.in
@@ -0,0 +1,125 @@
+# List of files which contain translatable strings.
+# Copyright (C) 1996-2006 Free Software Foundation, Inc.
+
+# These are nominally temporary...
+lib/acl.c
+lib/argmatch.c
+lib/closeout.c
+lib/error.c
+lib/euidaccess-stat.c
+lib/file-type.c
+lib/gai_strerror.c
+lib/getopt.c
+lib/human.c
+lib/mkdir-p.c
+lib/obstack.c
+lib/openat-die.c
+lib/quotearg.c
+lib/randread.c
+lib/regcomp.c
+lib/root-dev-ino.h
+lib/rpmatch.c
+lib/unicodeio.c
+lib/userspec.c
+lib/version-etc.c
+lib/xalloc-die.c
+lib/xfts.c
+lib/xmemcoll.c
+lib/xmemxfrm.c
+lib/xstrtol.h
+
+# Package source files
+
+src/base64.c
+src/basename.c
+src/cat.c
+src/chgrp.c
+src/chmod.c
+src/chown-core.c
+src/chown.c
+src/chroot.c
+src/cksum.c
+src/comm.c
+src/copy.c
+src/cp.c
+src/csplit.c
+src/cut.c
+src/date.c
+src/dd.c
+src/df.c
+src/dircolors.c
+src/dirname.c
+src/du.c
+src/echo.c
+src/env.c
+src/expand.c
+src/expr.c
+src/factor.c
+src/false.c
+src/fmt.c
+src/fold.c
+src/head.c
+src/hostid.c
+src/hostname.c
+src/id.c
+src/install.c
+src/join.c
+src/kill.c
+src/link.c
+src/ln.c
+src/logname.c
+src/ls.c
+src/md5sum.c
+src/mkdir.c
+src/mkfifo.c
+src/mknod.c
+src/mv.c
+src/nice.c
+src/nl.c
+src/nohup.c
+src/od.c
+src/paste.c
+src/pathchk.c
+src/pinky.c
+src/pr.c
+src/printenv.c
+src/printf.c
+src/ptx.c
+src/pwd.c
+src/readlink.c
+src/remove.c
+src/rm.c
+src/rmdir.c
+src/seq.c
+src/setuidgid.c
+src/shred.c
+src/shuf.c
+src/sleep.c
+src/sort.c
+src/split.c
+src/stat.c
+src/stty.c
+src/su.c
+src/sum.c
+src/sync.c
+src/system.h
+src/tac-pipe.c
+src/tac.c
+src/tail.c
+src/tee.c
+src/test.c
+src/touch.c
+src/tr.c
+src/true.c
+src/tsort.c
+src/tty.c
+src/uname.c
+src/unexpand.c
+src/uniq.c
+src/unlink.c
+src/uptime.c
+src/users.c
+src/wc.c
+src/who.c
+src/whoami.c
+src/yes.c
diff --git a/po/Rules-quot b/po/Rules-quot
new file mode 100644
index 0000000..9c2a995
--- /dev/null
+++ b/po/Rules-quot
@@ -0,0 +1,47 @@
+# Special Makefile rules for English message catalogs with quotation marks.
+
+DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
+
+.SUFFIXES: .insert-header .po-update-en
+
+en@quot.po-create:
+ $(MAKE) en@quot.po-update
+en@boldquot.po-create:
+ $(MAKE) en@boldquot.po-update
+
+en@quot.po-update: en@quot.po-update-en
+en@boldquot.po-update: en@boldquot.po-update-en
+
+.insert-header.po-update-en:
+ @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
+ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
+ tmpdir=`pwd`; \
+ echo "$$lang:"; \
+ ll=`echo $$lang | sed -e 's/@.*//'`; \
+ LC_ALL=C; export LC_ALL; \
+ cd $(srcdir); \
+ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
+ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+ rm -f $$tmpdir/$$lang.new.po; \
+ else \
+ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+ :; \
+ else \
+ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+ exit 1; \
+ fi; \
+ fi; \
+ else \
+ echo "creation of $$lang.po failed!" 1>&2; \
+ rm -f $$tmpdir/$$lang.new.po; \
+ fi
+
+en@quot.insert-header: insert-header.sin
+ sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
+
+en@boldquot.insert-header: insert-header.sin
+ sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
+
+mostlyclean: mostlyclean-quot
+mostlyclean-quot:
+ rm -f *.insert-header
diff --git a/po/af.gmo b/po/af.gmo
new file mode 100644
index 0000000..c5a568c
--- /dev/null
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
new file mode 100644
index 0000000..a0a64f6
--- /dev/null
+++ b/po/af.po
@@ -0,0 +1,8160 @@
+# coreutils-5.2.1.af.po.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# Petri Jooste <rkwjpj@puknet.puk.ac.za>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 5.2.1\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2004-03-17 11:58+0200\n"
+"Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
+"Language-Team: Afrikaans <i18n@af.org.za>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "toegangsregte vir %s word gestel"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "toegangsregte vir %s word gestel"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "ongeldige parameter %s vir %s"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "dubbelsinnige parameter %s vir %s"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Geldige parameters is soos volg:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "skryffout"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Onbekende stelselfout"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "kan nie stat %s uitvoer nie"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "gewone leë lêer"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "gewone lêer"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "lêergids"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "spesiale bloklêer"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "spesiale karakterlêer"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "fifo"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "simboliese skakel"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "sok"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "boodskapwagtou"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "semafoor"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "gedeeldegeheue-objek"
+
+#: lib/file-type.c:69
+#, fuzzy
+msgid "typed memory object"
+msgstr "gedeeldegeheue-objek"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "vreemde lêer"
+
+#: lib/gai_strerror.c:44
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "fifo-lêers word nie ondersteun nie"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "fifo-lêers word nie ondersteun nie"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr ""
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "fifo-lêers word nie ondersteun nie"
+
+#: lib/gai_strerror.c:54
+#, fuzzy
+msgid "System error"
+msgstr "skryffout"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+#, fuzzy
+msgid "Unknown error"
+msgstr "Onbekende stelselfout"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: opsie `%s' is dubbelsinnig\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: opsie `--%s' laat nie 'n parameter toe nie\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: opsie `%c%s' laat nie 'n parameter toe nie\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: opsie `%s' benodig 'n parameter\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: onbekende opsie `--%s'\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: onbekende opsie `%c%s'\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: onwettige opsie -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ongeldige opsie -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: opsie benodig 'n parameter -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: opsie `-W %s' is dubbelsinnig\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: opsie `-W %s' laat nie 'n parameter toe nie\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "blokgrootte"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "kan nie toegangsregte van %s verander nie"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "Kan nie lêergids %s skep nie."
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "geheue uitgeput"
+
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr "kon nie na aanvanklike werkgids terugkeer nie"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "kon nie na aanvanklike werkgids terugkeer nie"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "'"
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "%s: seek het misluk"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: ongeldige reëlmatige uitdrukking: %s"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "ongeldige karakterklas `%s'"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "geheue uitgeput"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: ongeldige reëlmatige uitdrukking: %s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "fout in soektog met reëlmatige uitdrukking"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "%s: ongeldige reëlmatige uitdrukking: %s"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "fout in soektog met reëlmatige uitdrukking"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr "dit is gevaarlik om rekursief te werk op %s"
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr "dit is gevaarlik om rekursief te werk op %s (net soos %s)"
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr "gebruik --no-preserve-root om hierdie veiligheidsnet ter syde te stel"
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[jJ]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "iconv-funksie onbruikbaar"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "iconv-funksie is nie beskikbaar nie"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "karakter is buite die grense"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "kan nie U+%04X omskakel na 'n plaaslike karakterstel nie"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "kan nie U+%04X omskakel na 'n plaaslike karakterstel nie: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "ongeldige gebruiker"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "ongeldige groep "
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "ongeldige gebruiker"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+
+# TRANSLATORS: %s denotes an author name.
+# TRANSLATORS: %s denotes an author name.
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Geskryf deur %s.\n"
+
+# TRANSLATORS: Each %s denotes an author name.
+# TRANSLATORS: Each %s denotes an author name.
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Geskryf deur %s en %s.\n"
+
+# TRANSLATORS: Each %s denotes an author name.
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Geskryf deur %s, %s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Geskryf deur %s, %s, %s \n"
+"en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Geskryf deur %s, %s, %s, \n"
+"%s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Geskryf deur %s, %s, %s, \n"
+"%s, %s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Geskryf deur %s, %s, %s, \n"
+"%s, %s, %s en %s.\n"
+
+# TRANSLATORS: Each %s denotes an author name.
+# You can use line breaks, estimating that each author name occupies
+# ca. 16 screen columns and that a screen line has ca. 80 columns.
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Geskryf deur %s, %s, %s, \n"
+"%s, %s, %s, %s\n"
+"en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Geskryf deur %s, %s, %s, \n"
+"%s, %s, %s, %s,\n"
+"%s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Geskryf deur %s, %s, %s, \n"
+"%s, %s, %s, %s\n"
+"%s, %s en ander.\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "ongeldige parameter: %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "stringvergelyking het gefaal"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Stel LC_ALL='C' om die probleem te systap"
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "Die stringe wat vergelyk is, is %s en %s."
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "stringvergelyking het gefaal"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "ongeldige datum `%s'"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "ongeldige karakterklas `%s'"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s is te groot"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Probeer `%s --help' vir meer inligting.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr " --version wys weergawe-inligting en stop\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Met geen LÊER, of wanneer die LÊER - is, lees standaardtoevoer.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Rapporteer foute aan <%s>.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "leesfout"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "ongeldige gebruiker"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "ongeldige keepgrootte: %s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, fuzzy, c-format
+msgid "extra operand %s"
+msgstr "ekstra operand `%s'"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "standaard-toevoer word nou toegemaak"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik so: %s NAAM [SUFFIKS]\n"
+" of: %s OPSIE\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Druk NAAM sonder enige voorafgaande gidsaanduiding.\n"
+"Indien gespesifiseer, word die SUFFIKS agteraan ook verwyder.\n"
+"\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, fuzzy, c-format
+msgid "missing operand"
+msgstr "lêerparameter ontbreek"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Gebruik so: %s [OPSIE] [ LÊER]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"Skakel LÊER(s) of standaardtoevoer aaneen en stuur dit na standaardafvoer.\n"
+"\n"
+" -A, --show-all ekwivalent aan -vET\n"
+" -b, --number-nonblank nommer nie-leë afvoerreëls\n"
+" -e ekwivalent aan -vE\n"
+" -E, --show-ends wys 'n $ aan die einde van elke reël\n"
+" -n, --number nommer al die afvoerreëls\n"
+" -s, --squeeze-blank nooit meer as een leë reël word gewys nie\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t ekwivalent aan -vT\n"
+" -T, --show-tabs wys keepkarakters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting gebruik ^ and M- notasie, behalwe vir LFD and "
+"TAB\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+#: src/cat.c:333
+#, fuzzy, c-format
+msgid "cannot do ioctl on %s"
+msgstr "kan nie ioctl uitvoer op `%s' nie"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "standaard-afvoer"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: Die toevoerlêernaam is 'n afvoerlêer."
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "ongeldige groep %s"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Gebruik so: %s [OPSIE]... GROEP LÊER...\n"
+" of: %s [OPSIE]... --reference=RLÊER LÊER...\n"
+
+#: src/chgrp.c:117
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+
+#: src/chgrp.c:130 src/chown.c:118
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root moenie `/' spesiaal anders hanteer nie (by "
+"verstek)\n"
+" --preserve-root moenie rekursief te werk gaan met `/' nie\n"
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr ""
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, fuzzy, c-format
+msgid "missing operand after %s"
+msgstr "parameter vir `%s' ontbreek"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "kon nie attribute van %s verkry nie"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "nuwe attribute van %s word verkry"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr ""
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "modus %s is verander na %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "modus %s kon nie na %04lo (%s) verander word nie\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "modus van %s is behou as %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "kan nie toegang verkry na %s nie"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "kan nie gids %s lees nie"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "toegangsregte van %s word verander"
+
+#: src/chmod.c:286
+#, fuzzy, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "toegangsregte vir %s word gestel"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr "fts_read het misluk"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+"Verander die modus vir elke LÊER na MODUS.\n"
+"\n"
+" -c, --changes soos verbose maar meld slegs veranderinge\n"
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root moenie `/' spesiaal anders hanteer nie (by "
+"verstek)\n"
+" --preserve-root moenie rekursief te werk gaan met `/' nie\n"
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr ""
+
+#: src/chmod.c:510
+#, fuzzy, c-format
+msgid "invalid mode: %s"
+msgstr "ongeldige modus %s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "eienaarskap is vernader van %s na %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "die groep is verander van %s na %s\n"
+
+#: src/chown-core.c:149
+#, fuzzy, c-format
+msgid "no change to ownership of %s\n"
+msgstr "kan nie eienaarskap van %s verander nie"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "groep kon nie eienaarskap van %s na %s verander nie\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "groep kon nie van %s na %s verander word nie\n"
+
+#: src/chown-core.c:154
+#, fuzzy, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "groep kon nie eienaarskap van %s na %s verander nie\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "eienaarskap van %s is behou as %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "groep van %s is behou as %s\n"
+
+#: src/chown-core.c:159
+#, fuzzy, c-format
+msgid "ownership of %s retained\n"
+msgstr "eienaarskap van %s is behou as %s\n"
+
+#: src/chown-core.c:344
+#, fuzzy, c-format
+msgid "cannot dereference %s"
+msgstr "kan nie %s verwyder nie"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "eienaarskap van %s word verander"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "groep van %s word verander"
+
+#: src/chown.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Gebruik so: %s [OPSIE]... GROEP LÊER...\n"
+" of: %s [OPSIE]... --reference=RLÊER LÊER...\n"
+
+#: src/chown.c:98
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik so: %s NUWEBEGINPUNT [BEVEL...]\n"
+" of: %s OPSIE\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"Loop BEVEL met wortelgids gestel volgens NUWEBEGINPUNT.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"As geen bevel gegee is nie, loop ``${SHELL} -i'' (verstek: /bin/sh).\n"
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "kan nie wortelgids verander na %s toe nie"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "kan nie chdir uitvoer na wortelgids toe nie"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "kan nie bevel %s uitvoer nie"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: lêer te lank"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Gebruik so: %s [LÊER]... \n"
+" of: %s [OPSIE]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"Druk CRC-toetssom en greeptellings van elke LÊER.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Gebruik so: %s [OPSIE]... LÊER1 LÊER2 \n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr "Vergelyk gesorteerde lêers LÊER1 en LÊER2 reël-vir-reël.\n"
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "eienaarskap van %s kon nie behou word nie"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr "kon nie lêer %s opspoor nie"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "outeurskap van %s kon nie behou word nie"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "kan nie %s oopmaak om te lees nie"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "kan nie fstat op %s uitvoer nie"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "lêer %s word oorgeslaan, want dit is vervang tydens kopieëring"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "kan nie %s verwyder nie"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "%s is verwyder.\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "kan nie 'n gewone lêer %s skep nie"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "besig om %s te lees"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "kan nie lseek op %s doen nie"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "besig om %s te skryf"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "lêertye van %s word behou"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "besig om %s toe te maak"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: oorskryf %s, moet modus %04lo ter syde gestel word? "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: oorskryf %s?"
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr "(rugsteun: %s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "lêergids %s word oorgeslaan"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "waarskuwing: bronlêer %s is meer as een keer gespesifiseer"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s en %s is dieselfde lêer"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "die nie-gids %s kan nie met gids %s oorskryf word nie"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "die pasgeskepte %s sal nie met %s oorskryf word nie"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "gids %s kan nie oorskryf word met 'n nie-gids nie"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "'n gids kan nie geskuif word bo-oor 'n nie-gids nie: %s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr ""
+"om rugsteun te neem van %s sal die bron vernietig; %s is nie verskuif nie"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr ""
+"om rugsteun te neem van %s sal die bron vernietig; %s is nie gekopieer nie"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "kan nie rugsteun neem van %s nie"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "kan nie 'n lêergids, %s, na homself kopieer nie, %s"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "sal nie 'n vaste skakel %s skep na gids %s nie"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "kon nie vaste skakel %s na %s skep nie"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "kan nie 'n gids %s skuif na 'n kind van dieselfde gids nie, %s"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "kan nie %s skuif na %s nie"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+"inter-toestel verskuiwing het misluk: %s na %s; die bestemming kan nie "
+"verwyder word nie"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "sikliese simboliese skakel %s kan nie gekopieer word nie"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr ""
+"%s: relatiewe simboliese skakels kan slegs in die huidige gids gemaak word"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "kon nie simboliese skakel %s na %s skep nie"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "kan nie die skakel %s skep nie"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "kan nie die pyp %s skep nie"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "kan nie spesiale lêer %s skep nie"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "simboliese skakel %s kan nie gelees word nie"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "kon nie simboliese skakel %s skep nie"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s het 'n onbekende lêertipe"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "kan nie %s ont-rugsteun nie"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (ont-rugsteun)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Gebruik so: %s [OPSIE]... EIENAAR[:[GROEP]] LÊER...\n"
+" or: %s [OPSIE]... :GROEP LÊER...\n"
+" or: %s [OPSIE]... --reference=RLÊER LÊER...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Verpligte parameters vir langformaat opsies is ook verpligtend vir "
+"kortformaat opsies.\n"
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+
+#: src/cp.c:205
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "lêertye van %s kon nie behou word nie"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "magtigings vir %s kon nie behou word nie"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "kan nie gids %s maak nie"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s bestaan maar is nie 'n lêergids nie"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "verkry toegang na %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, fuzzy, c-format
+msgid "missing file operand"
+msgstr "lêerparameter ontbreek"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, fuzzy, c-format
+msgid "missing destination file operand after %s"
+msgstr "spesifikasie lêer ontbreek"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, fuzzy, c-format
+msgid "target %s is not a directory"
+msgstr "%s: hierdie bestemming is nie 'n lêergids nie"
+
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "wanneer paaie behou word, moet die bestemming 'n gids wees"
+
+#: src/cp.c:967 src/mv.c:384
+#, fuzzy, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr "Waarskuwing: `-l' is verouderd; gebruik eerder `-L'"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, fuzzy, c-format
+msgid "multiple target directories specified"
+msgstr "veelvuldige afvoerlêers is gespesifiseer"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "kan nie sowel vaste skakels as simboliese skakels maak nie"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "rugsteuntipe"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "toevoer het verdwyn"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: reëlnommer buite bereik"
+
+#: src/csplit.c:709
+#, fuzzy, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: `%s': reëlnommer buite bereik"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr "by herhaling %s\n"
+
+#: src/csplit.c:755
+#, fuzzy, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: `%s': patroon nie gevind nie"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "fout in soektog met reëlmatige uitdrukking"
+
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "skryffout vir `%s'"
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: 'n heelgetal is verwag na die skeisimbool"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: `}' word benodig in herhaaltelling"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: tussen `{' en `}' moet 'n heelgetal wees"
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: afsluit-skeisimbool `%c' ontbreek"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: ongeldige reëlmatige uitdrukking: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: ongeldige patroon"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: reëlnommer moet groter as nul wees"
+
+#: src/csplit.c:1172
+#, fuzzy, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "reëlnommer `%s' is kleiner as die voorafgaande reëlnommer, %s"
+
+#: src/csplit.c:1178
+#, fuzzy, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr ""
+"waarskuwing: reëlnommer `%s' is dieselfde as die voorafgaande reëlnommer"
+
+#: src/csplit.c:1231
+#, c-format
+msgid "invalid format width"
+msgstr "ongeldige wydte vir formaat"
+
+#: src/csplit.c:1252
+#, c-format
+msgid "invalid format precision"
+msgstr "ongeldige presisie vir formaat"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "ontbrekende omskakelingaanduider in suffiks"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "ontbrekende omskakelingaanduider in suffiks: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "ontbrekende omskakelingaanduider in suffiks: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "te veel %% omskakelingaanduiders in suffiks"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "ontbrekende %% omskakelingaanduider in suffiks"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: ongeldige getal"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Gebruik so: %s [OPSIE]... LÊER PATROON...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/csplit.c:1486
+#, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"Lees vanaf standaardtoevoer as LÊER gegee is as -. Elke PATROON kan wees:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Gebruik so: %s [OPSIE]... [LÊER]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"Druk die geselekteerde dele van reëls uit elke LÊER na standaardafvoer.\n"
+"\n"
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "ongeldige greep of veldlys"
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr "greepuitwyking %s is te groot"
+
+#: src/cut.c:472
+#, c-format
+msgid "field number %s is too large"
+msgstr "veldnommer %s is te groot"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "slegs een soort lys mag gespesifiseer word"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "die verdeler mag net een karakter wees"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "u moet 'n lys van grepe, karakters of velde spesifiseer"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr ""
+"slegs wanneer velde gebruik word mag 'n toevoer-skeikarakter gespesifiseer "
+"word"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"om nie-afgeslote reëls te onderdruk, maak slegs sin\n"
+"\twanneer dit op velde van toepassing gemaak word"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "ontbrekende lys van velde"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "ontbrekende lys van posisies"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "standaardtoevoer"
+
+#: src/date.c:297 src/date.c:517
+#, fuzzy, c-format
+msgid "invalid date %s"
+msgstr "ongeldige datum `%s'"
+
+#: src/date.c:408 src/date.c:442
+#, fuzzy, c-format
+msgid "multiple output formats specified"
+msgstr "veelvuldige afvoerlêers is gespesifiseer"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "die opsies om drukdatums te spesifiseer is onderling uitsluitend"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr ""
+"die opsies om die tyd te vertoon en te stel kan nie saam gebruik word nie"
+
+#: src/date.c:448
+#, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "kon nie die datum stel nie"
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "tyd %s is buite bereik"
+
+#: src/dd.c:404
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik so: %s [STRING]... \n"
+" of: %s OPSIE\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+
+#: src/dd.c:418
+#, fuzzy
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=LÊER lees vanaf LÊER in plaas van stdin\n"
+" obs=GREPE skryf GREPE(aantal) grepe op 'n slag\n"
+" of=LÊER skryf na LÊER in plaas van na stdout\n"
+" seek=BLOKKE slaan BLOKKE(aantal) obs-grootte blokke oor aan die begin "
+"van afvoer\n"
+" skip=BLOKKE slaan BLOKKE(aantal) ibs-grootte blokke oor aan die begin "
+"van toevoer\n"
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:437
+#, fuzzy
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii van EBCDIC na ASCII\n"
+" ebcdic van ASCII na EBCDIC\n"
+" ibm van ASCII na afwisselende EBCDIC\n"
+" block vul nuwereël-getermineerde rekords met spasies tot by cbs-"
+"grootte\n"
+" unblock vervang spasies agteraan cbs-grootte rekords met "
+"nuwereëlkarakters\n"
+" lcase verander bokas na onderkas\n"
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "%s: hierdie bestemming is nie 'n lêergids nie"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "afgekapte rekord"
+msgstr[1] "afgekapte rekord"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr ""
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ""
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "toevoerlêer %s word toegemaak"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "afvoerlêer %s word toegemaak"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "besig om te skryf na %s"
+
+#: src/dd.c:886
+#, fuzzy, c-format
+msgid "unrecognized operand %s"
+msgstr "onbekende opsie %s"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "ongeldige omskakeling: %s"
+
+#: src/dd.c:900
+#, fuzzy, c-format
+msgid "invalid input flag: %s"
+msgstr "ongeldige wydte: %s"
+
+#: src/dd.c:903
+#, fuzzy, c-format
+msgid "invalid output flag: %s"
+msgstr "ongeldige groepnaam %s"
+
+#: src/dd.c:906
+#, fuzzy, c-format
+msgid "invalid status flag: %s"
+msgstr "ongeldige datumformaat %s"
+
+#: src/dd.c:942
+#, fuzzy, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "onbekende opsie %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "ongeldige nommer %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#: src/dd.c:973
+#, fuzzy, c-format
+msgid "cannot combine block and unblock"
+msgstr "die gebruikernaam en groepnaam mag nie albei ontbreek nie"
+
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "die gebruikernaam en groepnaam mag nie albei ontbreek nie"
+
+#: src/dd.c:977
+#, c-format
+msgid "cannot combine excl and nocreat"
+msgstr ""
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+
+#: src/dd.c:1180 src/dd.c:1237
+#, fuzzy, c-format
+msgid "%s: cannot seek"
+msgstr "%s: kan nie verwyder nie"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+#: src/dd.c:1229
+#, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr ""
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr ""
+
+#: src/dd.c:1376
+#, fuzzy, c-format
+msgid "setting flags for %s"
+msgstr "die tyd van %s is verstel"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr ""
+
+#: src/dd.c:1623
+#, fuzzy, c-format
+msgid "fsync failed for %s"
+msgstr "kon nie %s oopmaak nie"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "%s word oopgemaak"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr ""
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "Lêerstelseltipe: "
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "Lêerstelsel"
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr ""
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Grootte InGebruik Beskikbaar Gebruik%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Grootte InGebruik Beskikbaar Gebruik%%"
+
+#: src/df.c:165
+#, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr ""
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr ""
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " geheg aan\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "kan nie huidige gids verkry nie"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "kan nie chdir doen om na gids %s te gaan nie"
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr ""
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+
+#: src/df.c:749
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, fuzzy, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr "Waarskuwing: `-l' is verouderd; gebruik eerder `-L'"
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr ""
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Waarskuwing: "
+
+#: src/df.c:943
+#, fuzzy, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%s kan nie die tabel met gemonteerde lêerstelsels lees nie"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Gebruik so: %s [OPSIE]... [ LÊER ]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr ""
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu: onbekende sleutelwoord %s"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<intern>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr ""
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik so: %s NAAM\n"
+" of: %s OPSIE\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#: src/du.c:279 src/wc.c:108
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Gebruik so: %s [OPSIE]... GROEP LÊER...\n"
+" of: %s [OPSIE]... --reference=RLÊER LÊER...\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "totaal"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "ongeldige maksimum diepte %s"
+
+#: src/du.c:789
+#, fuzzy, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr "Waarskuwing: `-l' is verouderd; gebruik eerder `-L'"
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr ""
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr ""
+
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr ""
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+#: src/du.c:960 src/wc.c:662
+#, fuzzy, c-format
+msgid "cannot read file names from %s"
+msgstr "kan nie die pyp %s skep nie"
+
+#: src/du.c:1000 src/du.c:1003
+#, fuzzy
+msgid "invalid zero-length file name"
+msgstr "ongeldige groepnaam %s"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Gebruik so: %s [OPSIE]... [STRING]... \n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr ""
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr "inkeping is te groot %s"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr ""
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "inkeping mag nie 0 wees nie"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr ""
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, fuzzy, c-format
+msgid "input line is too long"
+msgstr "groepnaam te lank"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik so: %s UITDRUKKING \n"
+" of: %s OPSIE\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "sintaksfout"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "fout in soektog met reëlmatige uitdrukking"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "nie-numeriese parameter"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "deling deur nul"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik so: %s [GETAL]... \n"
+" of: %s OPSIE\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+
+#: src/factor.c:85
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s is te groot"
+
+#: src/factor.c:158
+#, fuzzy, c-format
+msgid "%s is not a valid positive integer"
+msgstr "`%s' is nie 'n geldige positiewe heelgetal nie"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Gebruik so: %s [-SYFERS] [OPSIE]... [LÊER]... \n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr "ongeldige wydte: %s"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "ongeldige aantal kolomme: `%s'"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "fout met die les van %s"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "fout met die skryf na %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr ""
+
+#: src/head.c:230 src/head.c:1046
+#, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s: aantal grepe is te veel"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr ""
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: kan nie skuif tot by uitwyking %s nie"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "kan nie die lêerwyser herposisioneer vir %s nie"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr ""
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "aantal reëls"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "aantal grepe"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "ongeldige aantal reëls"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "ongeldige aantal grepe"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "ongeldige opsie -- %c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "kan nie die masjiennaam verander na `%s' nie"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "kan die masjiennaam nie vasstel nie"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Gebruik so: %s [OPSIE]... [ LÊER ]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "kan nie slegs gebruikernaam of slegs groepnaam druk nie"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr ""
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: gebruiker bestaan nie"
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "%s: kan nie die gebruikersnaam vir UID %u opspoor nie\n"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "%s: kan nie die gebruikersnaam vir UID %u opspoor nie\n"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "kan nie aanvullende groeplys verkry nie"
+
+#: src/id.c:375
+msgid " groups="
+msgstr "groepe="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr ""
+
+#: src/install.c:321
+#, fuzzy, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "%s: hierdie bestemming is nie 'n lêergids nie"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "ongeldige modus %s"
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "kan nie eienaarskap van %s verander nie"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr ""
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "fork-stelselroep het gefaal"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "kan nie strip-bevel uitvoer nie"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "besig om te skryf na %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "ongeldige gebruiker %s"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "gids %s word geskep"
+
+#: src/install.c:651
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Gebruik so: %s [OPSIE]... EIENAAR[:[GROEP]] LÊER...\n"
+" or: %s [OPSIE]... :GROEP LÊER...\n"
+" or: %s [OPSIE]... --reference=RLÊER LÊER...\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+
+#: src/install.c:681
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+
+#: src/join.c:617 src/join.c:812
+#, c-format
+msgid "invalid field number: %s"
+msgstr "ongeldige veldnommer: %s"
+
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "ongeldige veld-aanduider: `%s'"
+
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "ongeldige wydte vir reëlnommer veld: %s"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr "leë keepkarakter"
+
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "saamgestelde keepkarakter `%s'"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr "onversoenbare keepkarakters"
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr ""
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"Gebruik so: %s [-s SEIN | -SEIN] PID... \n"
+" of: %s -l [SEIN]...\n"
+" of: %s -t [SEIN]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: ongeldige sein"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: ongeldige proses-id"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "ongeldige opsie -- %c"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: veelvuldige seine is gespesifiseer"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "veelvuldige -l of -t opsies is gespesifiseer"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr ""
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr "geen proses-id is gespesifiseer"
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik so: %s LÊER1 LÊER2\n"
+" of: %s OPSIE\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "kon nie skakel %s na %s skep nie"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: 'n vaste skakel word nie toegelaat vir 'n gids nie"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: kan nie die gids oorskryf nie"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: vervang %s?"
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "simboliese skakel %s na %s word geskep"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "simboliese skakel %s na %s word geskep"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "vaste skakel %s na %s word geskep"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "vaste skakel %s na %s word geskep"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "vaste skakel %s na %s word geskep"
+
+#: src/ln.c:324
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+
+#: src/ln.c:484
+#, fuzzy, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "%s: hierdie bestemming is nie 'n lêergids nie"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Gebruik so: %s [OPSIE]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"Druk die naam van die huidige gebruiker.\n"
+"\n"
+
+#: src/logname.c:89
+#, c-format
+msgid "no login name"
+msgstr "geen gebruikersnaam"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%b %e %Y"
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%b %e %H:%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr ""
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr ""
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr ""
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "ongeldige reëlwydte: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "ongeldige keepgrootte: %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "ongeldige tydformaatstring: %s"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "onbekende voorvoegsel: %s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr ""
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "Kan nie lêergids %s oopmaak nie."
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr ""
+
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "%s: kan nie die gids oorskryf nie"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "lêergids %s word gelees"
+
+#: src/ls.c:2410
+#, fuzzy, c-format
+msgid "closing directory %s"
+msgstr "gids %s word geskep"
+
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr ""
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#: src/md5sum.c:150
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Verander spasies in elke LÊER na keepkarakters, terwyl dit op "
+"standaardafvoer geskryf word.\n"
+"Met geen LÊER, of as LÊER gegee is as -, lees vanaf standaardtoevoer.\n"
+"\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+"\n"
+" -B, --binary skryf binêre data na die konsole-toestel.\n"
+"\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr ""
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr ""
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: MISLUKTE open of lees\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "GEFAAL"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "OK"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: leesfout"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr ""
+
+#: src/md5sum.c:562
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "WAARSKUWING: %d van %d gelyste %s kon nie gelees word nie"
+msgstr[1] "WAARSKUWING: %d van %d gelyste %s kon nie gelees word nie"
+
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "die --status opsie is slegs sinvol by die nagaan van toetssomme"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "die --warn opsie is slegs sinvol by die nagaan van toetssomme"
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Gebruik so: %s [OPSIE] GIDS...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"Skep die LÊERGIDS(e), as hulle nie reeds bestaan nie.\n"
+"\n"
+
+#: src/mkdir.c:67
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "gids %s is geskep"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Gebruik so: %s [OPSIE] NAAM...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+
+#: src/mkfifo.c:62 src/mknod.c:64
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "ongeldige modus"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr ""
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr "ongeldige subtoestelnommer %s"
+
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "ongeldige subtoestelnommer %s"
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "spesiale bloklêers word nie ondersteun nie"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "spesiale karakterlêers word nie ondersteun nie"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "ongeldige hooftoestelnommer %s"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "ongeldige subtoestelnommer %s"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "ongeldige toestel %s %s"
+
+#: src/mknod.c:216
+#, c-format
+msgid "invalid device type %s"
+msgstr "ongeldige toesteltipe %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+
+#: src/mv.c:308
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Gebruik so: %s [OPSIE] [BEVEL [ARG]...]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "ongeldige parameter: %s"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr ""
+
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "kan nie die stelselnaam vasstel nie"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "kon nie die datum stel nie"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+
+#: src/nl.c:214
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:281
+#, fuzzy, c-format
+msgid "line number overflow"
+msgstr "veldnommer is nul"
+
+#: src/nl.c:479
+#, c-format
+msgid "invalid header numbering style: %s"
+msgstr "ongeldige styl vir kopnommering: %s"
+
+#: src/nl.c:487
+#, c-format
+msgid "invalid body numbering style: %s"
+msgstr "ongeldige styl vir lyfnommering: %s"
+
+#: src/nl.c:495
+#, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "ongeldige styl vir voetnommering: %s"
+
+#: src/nl.c:504
+#, c-format
+msgid "invalid starting line number: %s"
+msgstr "ongeldige beginreëlnommer: %s"
+
+#: src/nl.c:513
+#, c-format
+msgid "invalid line number increment: %s"
+msgstr "ongeldige inkrement vir reëlnommers: %s"
+
+#: src/nl.c:525
+#, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "ongeldige aantal leë reëls: %s"
+
+#: src/nl.c:539
+#, c-format
+msgid "invalid line number field width: %s"
+msgstr "ongeldige wydte vir reëlnommer veld: %s"
+
+#: src/nl.c:558
+#, c-format
+msgid "invalid line numbering format: %s"
+msgstr "ongeldige reëlnommeringformaat: %s"
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik so: %s BEVEL [ARG]...\n"
+" of: %s OPSIE\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "all parameters word geïgnoreer"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr "kon nie %s oopmaak nie"
+
+#: src/nohup.c:161
+#, fuzzy, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "afvoer word bygevoeg by %s"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr "kon nie standaardfoutafvoer herlei nie"
+
+#: src/od.c:307
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:353
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "ongeldige tipe-string `%s'"
+
+#: src/od.c:693
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+
+#: src/od.c:812
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "ongeldige karakter `%c' in tipe-string `%s'"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr ""
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "oorslaanparameter"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "grensparameter"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "minimum stringlengte"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "wydte-spesifikasie"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr ""
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr ""
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr ""
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr ""
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: fmt=\"%s\" wydte=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "standaardtoevoer is gesluit"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Gebruik so: %s [OPSIE]... NAAM...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "ongeldige karakter %s in modusstring %s"
+
+#: src/pathchk.c:282
+#, fuzzy, c-format
+msgid "empty file name"
+msgstr "gewone leë lêer"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Aantekennaam:"
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "In die regte lewe:"
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Lêergids:"
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Dop:"
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Projek:"
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "Plan:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Aanteken"
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr "Naam"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr " TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Luier"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Wanneer"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Waar"
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Gebruik so: %s [OPSIE]... [GEBRUIKER]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr ""
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr ""
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr ""
+
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "ongeldige tipe-string `%s'"
+
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "`-l PAGE_LENGTH' ongeldige aantal reëls: `%s'"
+
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "`-N NUMBER' ongeldige beginreëlnommer: `%s'"
+
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "`-o MARGIN' ongeldige lynuitwyking: `%s'"
+
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-w PAGE_WIDTH' ongeldige aantal karakters: `%s'"
+
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-W PAGE_WIDTH' ongeldige aantal karakters: `%s'"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr ""
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr ""
+
+#: src/pr.c:1202
+#, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr ""
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "Bladsywydte te nou"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2406
+#, fuzzy, c-format
+msgid "Page number overflow"
+msgstr "veldnommer is nul"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -SSTRING, --sep-string[=STRING]\n"
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik so: %s FORMAAT [ARGUMENT]...\n"
+" of: %s OPSIE\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: 'n numeriese waarde is verwag"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: waarde is nie volledig omgeskakel nie"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "heksadesimale getal ontbreek in ontsnapkode"
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "ongeldige universele karakternaam \\%c%0*x"
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr "ongeldige veldwydte: %s"
+
+#: src/printf.c:585
+#, c-format
+msgid "invalid precision: %s"
+msgstr "ongeldige presisie: %s"
+
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%s: ongeldige veldspesifikasie `%s'"
+
+#: src/printf.c:683
+#, fuzzy, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "waarskuwing: oortollige parameters geïgnoreer; begin by `%s'"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr "F. Pinard"
+
+#: src/ptx.c:422
+#, fuzzy, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (vir regexp `%s')"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "ongeldige wydte: %s"
+
+#: src/ptx.c:2089
+#, fuzzy, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr "Waarskuwing: `-l' is verouderd; gebruik eerder `-L'"
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+
+#: src/pwd.c:160
+#, fuzzy, c-format
+msgid "failed to chdir to %s"
+msgstr "kon nie %s oopmaak nie"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "kon nie %s oopmaak nie"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "parameters wat nie opsies is nie word geïgnoreer"
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Gebruik so: %s [OPSIE]... LÊER \n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "kon nie lêer %s opspoor nie"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "Kan nie lêergids %s oopmaak nie."
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, fuzzy, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "%s dev/ino is verander"
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "Kan nie lêergids %s skep nie."
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr ""
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s: wil jy ingaan in lêergids %s?"
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: verwyder lees-alleen %s %s? "
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: verwyder %s %s? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "lêergids is verwyder: %s\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "Kan nie lêergids %s oopmaak nie."
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "kan nie gids %s verwyder nie"
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr ""
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "kan nie gids %s verwyder nie"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "kan nie gids %s verwyder nie"
+
+#: src/remove.c:1558
+#, fuzzy, c-format
+msgid "cannot restore current working directory"
+msgstr "kan nie huidige gids verkry nie"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Gebruik so: %s [OPSIE]... LÊER...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: verwyder %s %s? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "lêergids word verwyder, %s"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Gebruik so: %s [OPSIE]... GIDS...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+
+#: src/rmdir.c:148
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+
+#: src/seq.c:88
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "ongeldige wisselpunt parameter: %s"
+
+#: src/seq.c:342
+#, fuzzy, c-format
+msgid "invalid format string: %s"
+msgstr "ongeldige formaatstring: `%s'"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr ""
+
+#: src/setuidgid.c:51
+#, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr "onbekende gebruiker-id: %s"
+
+#: src/setuidgid.c:109
+#, c-format
+msgid "cannot set supplemental group"
+msgstr "kan nie die aanvullende groep stel nie"
+
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "kan nie groep-ID na %ld verander nie"
+
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "kan nie gebruiker-ID na %ld verander nie"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Gebruik so: %s [OPSIES] LÊER [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+
+#: src/shred.c:303
+#, fuzzy, c-format
+msgid "%s: fdatasync failed"
+msgstr "%s: seek het misluk"
+
+#: src/shred.c:314
+#, fuzzy, c-format
+msgid "%s: fsync failed"
+msgstr "%s: seek het misluk"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s: kan nie teruggaan nie"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: pass %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s: fout tydens skryfbewerking by uitwyking %s"
+
+#: src/shred.c:478
+#, fuzzy, c-format
+msgid "%s: lseek failed"
+msgstr "%s: seek het misluk"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s: lêer te groot"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: pass %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+
+#: src/shred.c:776
+#, fuzzy, c-format
+msgid "%s: fstat failed"
+msgstr "'stat' het gefaal"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: ongeldige lêertipe:"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: lêer het negatiewe grootte"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s: fout tydens afeindiging"
+
+#: src/shred.c:889
+#, fuzzy, c-format
+msgid "%s: fcntl failed"
+msgstr "%s: seek het misluk"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr ""
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: besig om te verwyder"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: hernoem as %s"
+
+#: src/shred.c:1018
+#, fuzzy, c-format
+msgid "%s: failed to remove"
+msgstr "%s: lêer te groot"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: is verwyder"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, fuzzy, c-format
+msgid "%s: failed to close"
+msgstr "%s: lêer te lank"
+
+#: src/shred.c:1065
+#, fuzzy, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: lêer te lank"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: ongeldige aantal lopies"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "veelvuldige afvoerlêers is gespesifiseer"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: ongeldige lêergrootte."
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Gebruik so: %s [OPSIE]... EIENAAR[:[GROEP]] LÊER...\n"
+" or: %s [OPSIE]... :GROEP LÊER...\n"
+" or: %s [OPSIE]... --reference=RLÊER LÊER...\n"
+
+#: src/shuf.c:57
+#, fuzzy
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"Druk die geselekteerde dele van reëls uit elke LÊER na standaardafvoer.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "veelvuldige -l of -t opsies is gespesifiseer"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "ongeldige nommer %s"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "ongeldige reëlwydte: %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr "veelvuldige afvoerlêers is gespesifiseer"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "die gebruikernaam en groepnaam mag nie albei ontbreek nie"
+
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr "ekstra operand `%s'"
+
+#: src/sleep.c:47
+#, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "ongeldige tydinterval `%s'"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "kan nie die reëletyd-horlosie lees nie"
+
+#: src/sort.c:310
+#, fuzzy
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"Druk die geselekteerde dele van reëls uit elke LÊER na standaardafvoer.\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+
+#: src/sort.c:326
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -z, --zero-terminated beëindig reëls met 'n 0-greep, i.p.v. 'n "
+"nuwereëlkarakter\n"
+
+#: src/sort.c:363
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "besig om te skryf na %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "kan nie 'n tydelike lêer skep nie"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "'open' het gefaal"
+
+#: src/sort.c:758
+#, fuzzy
+msgid "fflush failed"
+msgstr "'close' het gefaal"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "'close' het gefaal"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "'open' het gefaal"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr ""
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "kan nie 'n tydelike lêer skep nie"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "kan nie 'n tydelike lêer skep nie"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr ""
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "Kan nie lêergids %s skep nie."
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "'write' het gefaal"
+
+#: src/sort.c:975
+#, fuzzy, c-format
+msgid "warning: cannot remove: %s"
+msgstr "kan nie %s verwyder nie"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "sorteergrootte"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "'stat' het gefaal"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "'read' het gefaal"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr ""
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "standaardfout-afvoer"
+
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: ongeldige veldspesifikasie `%s'"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: ongeldige telling by begin van `%s'"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "ongeldige getal na `-'"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "ongeldige getal na `.'"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "verdwaalde karakter in veldspesifikasie"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "veelvuldige -l of -t opsies is gespesifiseer"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "ongeldige nommer by begin van veld"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "veldnommer is nul"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "karakteruitwyking is nul"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "ongeldige getal na `,'"
+
+#: src/sort.c:3142
+#, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr ""
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Gebruik so: %s [OPSIE] [TOEVOER [PREFIKS]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose druk 'n diagnostiese boodskap op standaardafvoer\n"
+" direk voor elke afvoerlêer oopgemaak word\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "uitgange vir afvoerlêers is uitgeput"
+
+#: src/split.c:211
+#, fuzzy, c-format
+msgid "creating file %s\n"
+msgstr "besig om nuwe lêer `%s' te skep\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "kan nie verdeel op meer as een manier nie"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: ongeldige suffikslengte"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: ongeldige aantal grepe"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: ongeldige aantal reëls"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "opsie om reëls te tel -%s%c... is te groot"
+
+#: src/split.c:518
+#, c-format
+msgid "invalid number of lines: 0"
+msgstr "ongeldige aantal reëls: 0"
+
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s: onbekende opsie `%c%s'\n"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%%%c: ongeldige direktief"
+
+#: src/stat.c:726
+#, c-format
+msgid "warning: backslash at end of format"
+msgstr ""
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr ""
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Gebruik so: %s [OPSIE] LÊER...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr "slegs een toestel mag gespesifiseer word"
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr ""
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr ""
+
+#: src/stty.c:885 src/stty.c:995
+#, fuzzy, c-format
+msgid "invalid argument %s"
+msgstr "ongeldige parameter: %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, fuzzy, c-format
+msgid "missing argument to %s"
+msgstr "parameter vir `%s' ontbreek"
+
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "ongeldige reëlwydte: %s"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr ""
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "nuwe_modus: modus\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: geen grootte-inligting is beskikbaar vir hierdie toestel nie"
+
+#: src/stty.c:1888
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "ongeldige heelgetalparameter `%s'"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Wagwoord:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: kan nie /dev/tty oopmaak nie"
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "kan nie groepe stel nie"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "kan nie die groep-id stel nie"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "kan nie gebruiker-id stel nie"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Gebruik so: %s [OPSIE]... [-] [GEBRUIKER [ARG]...]\n"
+
+#: src/su.c:386
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "gebruiker %s bestaan nie"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "verkeerde wagwoord"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "gebruik tans beperkte dop %s"
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "waarskuwing: kan nie chdir uitvoer na gids %s toe nie"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "all parameters word geïgnoreer"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help wys hierdie teks en stop\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version wys weergawe-inligting en stop\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+
+#: src/tac.c:236 src/tac.c:337
+#, c-format
+msgid "%s: seek failed"
+msgstr "%s: seek het misluk"
+
+#: src/tac.c:265
+#, fuzzy, c-format
+msgid "record too large"
+msgstr "%s: lêer te groot"
+
+#: src/tac.c:459
+#, fuzzy, c-format
+msgid "cannot create temporary file %s"
+msgstr "kan nie 'n tydelike lêer skep nie"
+
+#: src/tac.c:466
+#, fuzzy, c-format
+msgid "cannot open %s for writing"
+msgstr "kan nie %s oopmaak om te lees nie"
+
+#: src/tac.c:487 src/tac.c:494
+#, fuzzy, c-format
+msgid "%s: write error"
+msgstr "skryffout"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "verdeler mag nie leeg wees nie"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tail.c:229
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+
+#: src/tail.c:244
+#, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "lêer word toegemaak: %s (fd=%d)"
+
+#: src/tail.c:411
+#, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr ""
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr ""
+
+#: src/tail.c:867
+#, fuzzy, c-format
+msgid "%s has become inaccessible"
+msgstr "`%s' het ontoeganklik geword"
+
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+
+#: src/tail.c:905
+#, fuzzy, c-format
+msgid "%s has become accessible"
+msgstr "`%s' het toeganklik geword"
+
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr ""
+
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr ""
+
+#: src/tail.c:1025
+#, fuzzy, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "kan nie verander na die null-groep nie"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: lêer is afgekap"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "geen oorblywende lêers"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+
+#: src/tail.c:1439
+#, fuzzy, c-format
+msgid "number in %s is too large"
+msgstr "veldnommer %s is te groot"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr ""
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: ongeldige PID"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: ongeldige aantal sekondes"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr ""
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr ""
+
+#: src/tail.c:1667
+#, c-format
+msgid "cannot follow %s by name"
+msgstr "kan nie %s per naam volg nie"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+
+#: src/tee.c:71
+#, fuzzy
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Met geen LÊER, of wanneer die LÊER - is, lees standaardtoevoer.\n"
+
+#: src/test.c:125
+#, fuzzy, c-format
+msgid "missing argument after %s"
+msgstr "parameter vir `%s' ontbreek"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "ongeldige nommer %s"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "')' is verwag\n"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "')' is verwag, maar %s gevind\n"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: unitêre operator is verwag\n"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "-nt aanvaar nie -l nie\n"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "-ef aanvaar nie -l nie \n"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "-ot aanvaar nie -l nie \n"
+
+#: src/test.c:368
+#, fuzzy
+msgid "unknown binary operator"
+msgstr "onbenede binêre operator\n"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: binêre operator is verwag\n"
+
+#: src/test.c:694
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "ontbrekende `]'\n"
+
+#: src/test.c:846
+#, fuzzy, c-format
+msgid "extra argument %s"
+msgstr "ongeldige parameter: %s"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "ongeldige datumformaat %s"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "besig om %s te skep"
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr "kan nie %s aanraak nie"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "die tyd van %s is verstel"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr ""
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Gebruik so: %s [OPSIE]... STEL1 [STEL2]\n"
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+
+#: src/tr.c:519
+#, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr ""
+
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr ""
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "karakterklasnaam ontbreek `[::]'"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "ekwivalensieklaskarakter ontbreek `[==]'"
+
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "ongeldige karakterklas `%s'"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr ""
+
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr "verdwaalde karakter in veldspesifikasie"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr ""
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr ""
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr ""
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr ""
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr ""
+
+#: src/tr.c:1731
+#, fuzzy
+msgid "Two strings must be given when translating."
+msgstr "twee stringe moet gegee word tydens vertaling"
+
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr ""
+
+#: src/true.c:42
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik so: %s NAAM\n"
+" of: %s OPSIE\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tsort.c:474
+#, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr ""
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: toevoer bevat 'n lus"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Gebruik so: %s [OPSIE]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "nie 'n tty nie"
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "kan nie die stelselnaam vasstel nie"
+
+#: src/unexpand.c:125
+#, fuzzy
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Verander spasies in elke LÊER na keepkarakters, terwyl dit op "
+"standaardafvoer geskryf word.\n"
+"Met geen LÊER, of as LÊER gegee is as -, lees vanaf standaardtoevoer.\n"
+"\n"
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "inkeping is te groot %s"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Gebruik so: %s [OPSIE]... [TOEVOER [AFVOER]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+
+#: src/uniq.c:350
+#, fuzzy, c-format
+msgid "too many repeated lines"
+msgstr "te veel parameters"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "ongeldige aantal velde om oor te slaan"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "ongeldige aantal grepe om oor te slaan"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "ongeldige aantal grepe om te vergelyk"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik so: %s LÊER \n"
+" of: %s OPSIE\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"Roep die unlink-funksie om die gespesifiseerde LÊER te verwyder.\n"
+"\n"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "kan nie %s ontkoppel nie"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "kon nie die herlaaityd vasstel nie"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s verby "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "vm"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "nm"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr " ??:???? verby"
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr ""
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/uptime.c:147
+#, fuzzy, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "ongeldige gebruiker"
+msgstr[1] "ongeldige gebruiker"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", ladinggemiddeld: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Gebruik so: %s [OPSIE]... [ LÊER ]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Vertoon wie tans aangeteken is volgens LÊER.\n"
+"As LÊER nie gespesifiseer is nie, gebruik %s. %s vir LÊER is algemeen.\n"
+"\n"
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+
+#: src/wc.c:121
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr " oud"
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "term="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "verlaat="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "horlosieverandering"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "uitvoervlak"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "laaste="
+
+#: src/who.c:545
+#, fuzzy, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"# gebruikers=%u\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "NAAM"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "LYN"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "TYD"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr "LUIER"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "KOMMENTAAR"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "VERLAAT"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Gebruik so: %s [OPSIE]... [ LÊER | ARG1 ARG2 ]\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"As LÊER nie gespesifiseer is nie, gebruik %s. %s vir LÊER is algemeen.\n"
+"As ARG1 ARG2 gegee is, word -n veronderstel: `am i'of `mom likes' is "
+"normaal.\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+"Waarskuwing: -i sal wegval in 'n toekomstige vrystelling; gebruik eerder -u"
+
+#: src/whoami.c:51
+#, fuzzy
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Druk die gebruikersnaam geassosieer met die gebruikers-id wat tans aktief "
+"is.\n"
+"Dieselfde as id -un.\n"
+"\n"
+
+#: src/whoami.c:95
+#, fuzzy, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: kan nie die gebruikersnaam vir UID %u opspoor nie\n"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik so: %s [STRING]... \n"
+" of: %s OPSIE\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"Skryf voortdurend 'n reël met al die gespesifiseerde STRING(e), of `y'.\n"
+"\n"
+
+#~ msgid "strip failed"
+#~ msgstr "strip het misluk"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "kan nie die eienaar en/of groep van %s verander nie"
+
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "kan nie chdir doen om na gids %s te gaan nie"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "kan nie die aantekengroep van 'n numeriese UID verkry nie"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Hierdie is vry sagteware; kyk in die bronkode vir kopieërvoorwaardes. "
+#~ "Daar is GEEN\n"
+#~ "waarborg nie; selfs nie vir VERKOOPBAARHEID of GESKIKTHEID VIR 'N "
+#~ "SPESIFIEKE DOEL nie.\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "te min parameters"
+
+#~ msgid "closing standard output"
+#~ msgstr "standaard-afvoer word nou toegemaak"
+
+#~ msgid "group number"
+#~ msgstr "groepnommer"
+
+#~ msgid "invalid group number %s"
+#~ msgstr "ongeldige groepnommer %s"
+
+#~ msgid ""
+#~ " --no-preserve-root do not treat `/' specially (the default)\n"
+#~ " --preserve-root fail to operate recursively on `/'\n"
+#~ msgstr ""
+#~ " --no-preserve-root moenie `/' spesiaal anders hanteer nie (by "
+#~ "verstek)\n"
+#~ " --preserve-root moenie rekursief te werk gaan met `/' nie\n"
+
+#~ msgid "invalid mode string: %s"
+#~ msgstr "ongeldige modusstring: %s"
+
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "kan nie die gids %s oorskryf nie"
+
+#~ msgid "%s: specified destination directory does not exist"
+#~ msgstr "%s: die gespesifiseerde doelgids bestaan nie"
+
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "%s: hierdie bestemming is nie 'n lêergids nie"
+
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr ""
+#~ "meer as een lêer word gekopieer, maar die laaste parameter %s is nie 'n "
+#~ "gids nie"
+
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "waarskuwing: --version-control (-V) is verouderd; dit sal nie meer\n"
+#~ "ondersteun word in die toekoms nie. Gebruik eerder --backup=%s."
+
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "simboliese skakels word nie ondersteun op hierdie stelsel nie"
+
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "te veel nie-opsie parameters: %s%s"
+
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-2822 (-R) option"
+#~ msgstr ""
+#~ "'n formaatstring mag nie gespesifiseer word saam met die opsie --rfc-2822 "
+#~ "(-R) nie"
+
+#~ msgid "undefined"
+#~ msgstr "ongedefinieerd"
+
+#~ msgid "cannot get time of day"
+#~ msgstr "kon nie die tyd van die dag vasstel nie"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "%s+%s rekords in\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "%s+%s rekords uit\n"
+
+#~ msgid "truncated records"
+#~ msgstr "afgekap"
+
+#~ msgid "file offset out of range"
+#~ msgstr "lêeruitwyking buite bereik"
+
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "`-LIST' opsie is verouderd; gebruik `-t LIST'"
+
+#~ msgid "`%s' is too large"
+#~ msgstr "%s: lêer is te groot"
+
+#~ msgid "invalid width option: %s"
+#~ msgstr "ongeldige opsie %s vir wydte"
+
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "`%s' opsie is verouderd; gebruik `%s'"
+
+#~ msgid "%s: number of bytes is large"
+#~ msgstr "%s: aantal grepe is groot"
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "onherkenbare opsie `-%c'"
+
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "`-%s' opsie is verouderd; gebruik `-%c %.*s%.*s%s'"
+
+#~ msgid "%s is a directory"
+#~ msgstr "%s is 'n gids"
+
+#~ msgid "too many non-option arguments"
+#~ msgstr "te veel nie-opsie parameters"
+
+#~ msgid "invalid field number: `%s'"
+#~ msgstr "ongeldige veldnommer: `%s'"
+
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "ongeldige veldnommer vir lêer 1: `%s'"
+
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "ongeldige veldnommer vir lêer 2: `%s'"
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "te min nie-opsie parameters"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: lêer bestaan"
+
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "skep simboliese skakel %s na %s"
+
+#~ msgid "create hard link %s to %s"
+#~ msgstr "skep vaste skakel %s na %s"
+
+#~ msgid "User name too long"
+#~ msgstr "gebruikersnaam te lank"
+
+#~ msgid "file"
+#~ msgstr "lêer"
+
+#~ msgid "files"
+#~ msgstr "lêers"
+
+#~ msgid "checksum"
+#~ msgstr "toetssom"
+
+#~ msgid "checksums"
+#~ msgstr "toetssomme"
+
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "die --string en --check opsies is onderling uitsluitend"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "geen lêers mag gespesifiseer word wanneer --string gebruik word nie"
+
+#~ msgid "only one argument may be specified when using --check"
+#~ msgstr "slegs een argument mag gegee word wanneer --check gebruik word"
+
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "kan nie toegangsregte van gids %s verander nie"
+
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "kan nie die toegangsregte van fifo %s verander nie"
+
+#~ msgid "wrong number of arguments"
+#~ msgstr "verkeerde aantal parameters"
+
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "kan nie toegangsregte van %s verander nie"
+
+#~ msgid "invalid option `%s'"
+#~ msgstr "ongeldige opsie `%s'"
+
+#~ msgid "invalid priority `%s'"
+#~ msgstr "ongeldige prioriteit `%s'"
+
+#~ msgid "cannot get priority"
+#~ msgstr "kan nie prioriteit verkry nie"
+
+#~ msgid "cannot set priority"
+#~ msgstr "kan nie prioriteit stel nie"
+
+#~ msgid "failed to redirect standard output"
+#~ msgstr "herleiding van standaardafvoer het misluk"
+
+#~ msgid "old-style offset"
+#~ msgstr "ou uitwykingstyl"
+
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "pad `%s' bevat 'n nie-oordraagbare karakter `%c'"
+
+#~ msgid "`%s' is not a directory"
+#~ msgstr "`%s' is nie 'n gids nie"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "gids `%s' is nie deursoekbaar nie"
+
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "`--pages' ongeldige omvang vir bladsynommers: `%s'"
+
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "`--pages' ongeldige nommer vir beginbladsy: `%s'"
+
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "`--pages' ongeldige nommer vir eindbladsy: `%s'"
+
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "`--columns=COLUMN' ongeldige aantal kolomme: `%s'"
+
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%b %e %H:%M %Y"
+
+#~ msgid "Page %d"
+#~ msgstr "Blady %d"
+
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "Gebruik so: %s formaat [parameter]...\n"
+
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "kan nie chdir doen vanaf gids %s na ... nie"
+
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "kan nie lstat op `.' in %s uitvoer nie"
+
+#~ msgid "cannot lstat %s"
+#~ msgstr "kan nie lstat %s uitvoer nie"
+
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "kan nie chdir doen van %s na %s nie"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "kan nie `.' of `..'verwyder nie"
+
+#~ msgid "%s: count `%.*s' too large"
+#~ msgstr "%s: telling `%.*s' is te groot"
+
+#~ msgid "`-%s' option is obsolete; use `-l %s'"
+#~ msgstr "`%s' opsie is verouderd; gebruik `-l %s'"
+
+#~ msgid "invalid argument `%s'"
+#~ msgstr "ongeldige parameter `%s'"
+
+#~ msgid "stdin: read error"
+#~ msgstr "stdin: leesfout"
+
+#~ msgid "`%s' option is obsolete; use `%s-%c %.*s'"
+#~ msgstr "`%s' opsie is verouderd; gebruik `%s-%c %.*s'"
+
+#~ msgid "argument expected\n"
+#~ msgstr "argument verwag\n"
+
+#~ msgid "%s: integer expression expected\n"
+#~ msgstr "%s: heelgetal-uitdrukking is verwag\n"
+
+#~ msgid "before -lt"
+#~ msgstr "voor -lt"
+
+#~ msgid "after -lt"
+#~ msgstr "na -lt"
+
+#~ msgid "before -le"
+#~ msgstr "voor -le"
+
+#~ msgid "after -le"
+#~ msgstr "na -le"
+
+#~ msgid "before -gt"
+#~ msgstr "voor -gt"
+
+#~ msgid "after -gt"
+#~ msgstr "na -gt"
+
+#~ msgid "before -ge"
+#~ msgstr "voor -ge"
+
+#~ msgid "after -ge"
+#~ msgstr "na -ge"
+
+#~ msgid "before -ne"
+#~ msgstr "voor -ne"
+
+#~ msgid "after -ne"
+#~ msgstr "na -ne"
+
+#~ msgid "before -eq"
+#~ msgstr "voor -eq"
+
+#~ msgid "after -eq"
+#~ msgstr "na -eq"
+
+#~ msgid "after -t"
+#~ msgstr "na -t"
+
+#~ msgid "too many arguments\n"
+#~ msgstr "te veel parameters\n"
+
+#~ msgid "file arguments missing"
+#~ msgstr "lêerparameters ontbreek"
+
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "ongeldige tru-skuinsstreep-ontsnapkode `\\%c'"
+
+#~ msgid "only one argument may be specified"
+#~ msgstr "slegs een parameter mag gespesifiseer word"
+
+#~ msgid "tab size contains an invalid character"
+#~ msgstr "keepgrootte bevat 'n ongeldige karakter"
+
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr "`-LIST' opsie is verouderd; gebruik `--first-only -t LIST'"
+
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "`-%lu' opsie is verouderd; gebruik `-f %lu'"
diff --git a/po/be.gmo b/po/be.gmo
new file mode 100644
index 0000000..b23b3b4
--- /dev/null
+++ b/po/be.gmo
Binary files differ
diff --git a/po/be.po b/po/be.po
new file mode 100644
index 0000000..1e5e683
--- /dev/null
+++ b/po/be.po
@@ -0,0 +1,8432 @@
+# Translation of coreutils-5.97.po to Belarusian
+# Belarusian translation of coreutils.
+# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This file is distributed under the same license as the coreutils package.
+# Alexander Nyakhaychyk <nyakhaychyk@gmail.com>, 2002, 2003, 2006.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 5.97\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2006-08-16 03:27+0300\n"
+"Last-Translator: Alexander Nyakhaychyk <nyakhaychyk@gmail.com>\n"
+"Language-Team: Belarusian <i18n@mova.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "уÑталÑваньне правоў Ð´Ð»Ñ %s"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "уÑталÑваньне правоў Ð´Ð»Ñ %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "нерÑчаіÑны довад %s Ð´Ð»Ñ %s"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "неадназначны довад %s Ð´Ð»Ñ %s"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "РÑчаіÑÐ½Ñ‹Ñ Ð´Ð¾Ð²Ð°Ð´Ñ‹:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "памылка запіÑу"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "ÐевÑÐ´Ð¾Ð¼Ð°Ñ ÑÑ–ÑÑ‚ÑÐ¼Ð½Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "немагчыма зрабіць stat %s"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "звычайны парожні файл"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "звычайны файл"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "Ñ‚Ñчка"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "аÑаблівы кавалкавы файл"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "аÑаблівы знакавы файл"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "fifo"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "знакавае лучыва"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "socket"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "чарга паведамленьнÑÑž"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "ÑÑмафор"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "абьект з агульнай памÑцьцю"
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr "тыпізаваны аб'ект памÑці"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "лёÑавы файл"
+
+#: lib/gai_strerror.c:44
+msgid "Address family for hostname not supported"
+msgstr "ГÑта адраÑÐ½Ð°Ñ ÑÑм'Ñ Ð´Ð»Ñ Ð³Ñтага вузла не падтрымліваецца"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr "ЧаÑовы збой у вызначÑнні назвы вузла вфаыв выфа "
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr "КепÑкае значÑнне Ð´Ð»Ñ ai_flags"
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr "ÐÐµÐ²Ñ‹Ð¿Ñ€Ð²Ñ–Ð¼Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ñž вызначÑнні назвы вузла"
+
+#: lib/gai_strerror.c:48
+msgid "ai_family not supported"
+msgstr "ai_family не падтрымліваецца"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr "Збой Ñ€Ð°Ð·Ð¼ÐµÑ€ÐºÐ°Ð²Ð°Ð½Ð½Ñ Ð¿Ð°Ð¼Ñці"
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr "ÐдÑутнічае звÑзаны з назвай вузла адраÑ"
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr "ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð½Ð°Ð·Ð²Ð° або паÑлуга"
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+msgid "ai_socktype not supported"
+msgstr "ai_socktype не падтрымліваецца"
+
+#: lib/gai_strerror.c:54
+msgid "System error"
+msgstr "СіÑÑ‚ÑÐ¼Ð½Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr "Запыт ÑкаÑаваны"
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr "УÑе запыты выкананы"
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr "Спынена з-за Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ð½Ð½Ñ Ñігналу"
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+msgid "Unknown error"
+msgstr "ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: выбар `%s' неадназначны\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: выбар `--%s' не дазвалÑе довад\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: выбар `%c%s' не дазвалÑе довад\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: выбар `%s' патрабуе довад\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: нераÑпазнаны выбар `--%s'\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: нераÑпазнаны выбар `%c%s'\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: недапушчальны выраб -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: нерÑчаіÑны парамÑтар -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: выбар патрабуе довад -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: выбар `-W %s' неадназначыны\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: выбар `-W %s' не дазвалÑе довад\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "памер кавалку"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "немагчыма зьмÑніць правы %s"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "немагчыма Ñтварыць Ñ‚Ñчку %s"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "памÑць вычарпана"
+
+#: lib/openat-die.c:34
+#, c-format
+msgid "unable to record current working directory"
+msgstr "немагчыма запіÑаць цÑперашнюю працоўную Ñ‚Ñчку"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "немагчыма вÑрнуцца Ñž пачатковую працоўную Ñ‚Ñчку"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "'"
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "%s: збой seek"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: нерÑчаіÑны Ñталы выраз: %s"
+
+#: lib/regcomp.c:140
+#, fuzzy
+msgid "Invalid collation character"
+msgstr "недзеÑÐ·Ð´Ð¾Ð»ÑŒÐ½Ð°Ñ ÐºÐ»ÑÑа знака %s"
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "недзеÑÐ·Ð´Ð¾Ð»ÑŒÐ½Ð°Ñ ÐºÐ»ÑÑа знака %s"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+#, fuzzy
+msgid "Invalid back reference"
+msgstr "ÐедзеÑздольны прамежак Ñтаронак %s"
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+#, fuzzy
+msgid "Invalid range end"
+msgstr "ÐедзеÑздольны прамежак Ñтаронак %s"
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "памÑць вычарпана"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: нерÑчаіÑны Ñталы выраз: %s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "памылка ў пошуку звычайнага выразу"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "памылка Ñž ÑупаÑтаўлÑльніку Ñталых выразаў"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "памылка ў пошуку звычайнага выразу"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr ""
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr ""
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[тТ]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[нÐ]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ iconv непрыгодна Ð´Ð»Ñ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹ÑтаньнÑ"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "недаÑтупна Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ iconv"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "знак па за дапушчальнымі межамі"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "немагчыма пераўтварыць U+%04X у мÑÑцовы набор знакаў"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "немагчыма пераўтварыць U+%04X у мÑÑцовы набор знакаў: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "нерÑчаіÑны карыÑтальнік"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "нерÑчаіÑÐ½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð°"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "нерÑчаіÑны карыÑтальнік"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr "(C)"
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Ðўтар: %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Ðўтары: %s Ñ– %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Ðўтары: %s, %s Ñ– %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr "Ðўтары: %s, %s, %s Ñ– %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr "Ðўтары: %s, %s, %s, %s Ñ– %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Ðўтары %s, %s, %s,\n"
+"%s, %s Ñ– %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Ðўтары: %s, %s, %s,\n"
+"%s, %s, %s Ñ– %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Ðўтары: %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"Ñ– %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Ðўатры: %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s Ñ– %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Ðўтары:·%s,·%s,·%s,\n"
+"%s,·%s,·%s,·%s,\n"
+"%s,·%s Ñ– іншыÑ.\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "нерÑчаіÑны довад: %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "памылка Ð¿Ð°Ñ€Ð°ÑžÐ½Ð°Ð½ÑŒÐ½Ñ Ñ€Ð°Ð´ÐºÑƒ"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "УÑталюйце LC_ALL='C' каб працаваць без пытаньнÑÑž."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "Радкі былі параўнаны тут %s і тут %s."
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "памылка Ð¿Ð°Ñ€Ð°ÑžÐ½Ð°Ð½ÑŒÐ½Ñ Ñ€Ð°Ð´ÐºÑƒ"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "нерÑчаіÑны карыÑтальнік %s"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "недзеÑÐ·Ð´Ð¾Ð»ÑŒÐ½Ð°Ñ ÐºÐ»ÑÑа знака %s"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s занадта вÑлікі"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "ПаÑпрабуйце \"%s --help\" Ð´Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆ падрабÑзных зьвеÑтак.\n"
+
+#: src/base64.c:65
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [ВЫБÐР] [ФÐЙЛ]...\n"
+" ці: %s [ВЫБÐР] --check [ФÐЙЛ]\n"
+"Друкуе ці правÑрае %s (%d-бітавую) праверчую Ñуму.\n"
+"Калі файл незаданы, ці калі замеÑÑ‚ Ñго працÑжнік, чытае Ñтандартны ўвод.\n"
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr " --version выводзіць зьвеÑткі пра вÑÑ€ÑÑ–ÑŽ\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Калі ФÐЙЛ не зададзены альбо зададзены -, чытае Ñтандартны ўвод.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"ПаведамлÑйце пра памылкі на <%s>.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "памылка чытаньнÑ"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "нерÑчаіÑны ÑьцÑг уводу: %s"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "незразумелы памер табулÑцыі: %s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr "непатрÑбны аргумÑнт %s"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "зачыненьне Ñтандартнага уводу"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"ВыкарыÑтаньне: %s ÐÐЗВР[УСТÐЎКÐ]\n"
+" ці: %s ВЫБÐР\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Друкуе ÐÐЗВу без уÑÑлÑкіх папÑÑ€Ñдніх чаÑтак(Ñ‚Ñчак).\n"
+"Калі пазначака, так Ñама вікідае й УСТÐЎКу.\n"
+"\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+"\n"
+"Прыклады:\n"
+" %s /usr/bin/sort Выводзіць \"sort\".\n"
+" %s include/stdio.h .h Выводзіць \"stdio\".\n"
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, c-format
+msgid "missing operand"
+msgstr "прапушчаны аргумент"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "ВыкарыÑтаньне: %s [ВЫБÐР] [ФÐЙЛ]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"ЗьвÑзвае ФÐЙЛ(Ñ‹), ці Ñтандартны ўвод Ñа Ñтандартным вывадам.\n"
+"\n"
+" -A, --show-all раўназначна -vET\n"
+" -b, --number-nonblank колькаÑьць непарожніх радкоў вываду\n"
+" -e раўназначна -vE\n"
+" -E, --show-ends адлюÑтроўвае $ на праканцы кожнага радка\n"
+" -n, --number нумараваць уÑе радкі вываду\n"
+" -s, --squeeze-blank Ð½Ñ Ð±Ð¾Ð»ÑŒÑˆ за адзін парожні радок\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t раўназначна -vT\n"
+" -T, --show-tabs адлюÑтроўвае знак TAB Ñк ^I\n"
+" -u (адхілена)\n"
+" -v, --show-nonprinting выарыÑтоўвае ^ Ñ– M- запіÑ, за выключÑньнем\n"
+" LFD Ñ– TAB\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+"\n"
+"Прыклады:\n"
+" %s f - g Выводзіць зьмеÑÑ‚ f, затым Ñтандартны ўвод, затым зьмеÑÑ‚ файла "
+"g.\n"
+" %s Капіюе Ñтандартны ўвод на Ñтандартны вывад.\n"
+
+#: src/cat.c:333
+#, c-format
+msgid "cannot do ioctl on %s"
+msgstr "немагчыма выканаць ioctl на %s"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "Ñтандартны вывад"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: файл уводу зьÑўлÑецца й файлам вываду"
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "нерÑчаіÑÐ½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð° %s"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [ВЫБÐР]... ГРУПРФÐЙЛ...\n"
+" or: %s [ВЫБÐР]... --reference=RФÐЙЛ ФÐЙЛ...\n"
+
+#: src/chgrp.c:117
+#, fuzzy
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"ЗьмÑнÑе ўладальніка й/альбо групу кожнага ФÐЙЛа на ЎЛÐДÐЛЬÐІКа й/альбо "
+"ГРУПУ.\n"
+"Калі зададзены --reference, зьмÑнÑе ўладальніка й групу кожнага ФÐЙЛа на\n"
+"Ð°Ð´Ð¿Ð°Ð²ÐµÐ´Ð½Ñ‹Ñ Ð·Ð½Ð°Ñ‡Ñньні Ñž файла RFILE.\n"
+"\n"
+" -c, --changes Ñк Ñ– verbose, але друкуе толькі калі зьмены "
+"адбыліÑÑ\n"
+" --dereference узьдзейнічае на аб'ект ÑпаÑылкі, замеÑÑ‚ Ñамой\n"
+" Ñымбалічнае ÑпаÑылкі (гÑта Ð¿Ñ€Ð°Ð´Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ñ‹Ñ "
+"паводзіны)\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chgrp.c:134
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet не адлюÑтроўваць аÑÐ½Ð¾ÑžÐ½Ñ‹Ñ Ð¿Ð°Ð²ÐµÐ´Ð°Ð¼Ð»ÐµÐ½ÑŒÐ½Ñ– аб "
+"памылках\n"
+" --reference=RФÐЙЛ выкарыÑтоўвае ўладальніка й групу RФÐЙЛу замеÑÑ‚\n"
+" зададзеных значÑньнÑÑž УЛÐДÐЛЬÐІК:ГРУПÐ\n"
+" -R, --recursive апрацоўвае файлы й Ñ‚Ñчкі Ñ€ÑкурÑыўна\n"
+" -v, --verbose выводзіць праверку Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð°Ð³Ð° апрацаванага файлу\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr "-R --dereference патрабуе альо -H альбо -L"
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, c-format
+msgid "missing operand after %s"
+msgstr "прапушчаны аргумент паÑÐ»Ñ %s"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "немагчыма атрымаць атрыбуты %s"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "атрыманьне новых атрыбутаў %s"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr ""
+"ні знакавае лучува %s ні файл, на Ñкі Ñно ÑпаÑылаецца, не былі зьменены\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "Ñ€Ñжым %s зьменены на %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "немагчыма зьмÑніць Ñ€Ñжым %s на %04lo (%s)\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "Ñ€Ñжым %s утрыманы Ñк %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "немагчыма атрымаць доÑтуп да %s"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "немагчыма прачытаць Ñ‚Ñчку %s"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "зьмÑненьне правоў %s"
+
+#: src/chmod.c:286
+#, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "%s: Ð½Ð¾Ð²Ñ‹Ñ Ð¿Ñ€Ð°Ð²Ñ‹: %s, замеÑÑ‚ %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr "збой fts_read"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [ВЫБÐР]... РЭЖЫМ[,РЭЖЫМ]... ФÐЙЛ...\n"
+" ці: %s [ВЫБÐР]... Ð’ÐСЬМЯРЫЧÐЫ_РЭЖЫМ ФÐЙЛ...\n"
+" ці: %s [ВЫБÐР]... --reference=RФÐЙЛ ФÐЙЛ...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+" -f, --silent, --quiet затрымлівае большаÑьць паведамленьнÑÑž пра памылкі\n"
+" -v, --verbose друкуе дыÑгноÑтыку Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð°Ð³Ð° апрацаванага файла\n"
+" --reference=RFILE выкарыÑтоўвае Ñ€Ñжым RFILE'а замеÑÑ‚ РЭЖЫМу\n"
+" -R, --recursive апрацоўвае файлы й дырÑкторыі Ñ€ÑкурÑіўна\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+"\n"
+"Кожны РЭЖЫМ Ñкладаецца з \"[ugoa]*([-+=]([rwxXst]*|[ugo]))+\".\n"
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr "немагчыма ÑумÑÑьціць Ñ€Ñжым Ñ– парамÑтры --reference"
+
+#: src/chmod.c:510
+#, c-format
+msgid "invalid mode: %s"
+msgstr "нерÑчаіÑны Ñ€Ñжым: %s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "зьменены уладальнік %s на %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "зьменена група %s на %s\n"
+
+#: src/chown-core.c:149
+#, c-format
+msgid "no change to ownership of %s\n"
+msgstr "зьмены ўладальніка %s не было\n"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "немагчыма зьмÑніць уладальніка %s на %s\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "немагчыма зьмÑніць групу %s на %s\n"
+
+#: src/chown-core.c:154
+#, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "немагчыма зьмÑніць уладальніка %s\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "уладальнік %s захаваны Ñк %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "група %s захавана Ñк %s\n"
+
+#: src/chown-core.c:159
+#, c-format
+msgid "ownership of %s retained\n"
+msgstr "у %s заÑтаўÑÑ Ñ€Ð°Ð½ÐµÐ¹ÑˆÑ‹ ўладальнік\n"
+
+#: src/chown-core.c:344
+#, c-format
+msgid "cannot dereference %s"
+msgstr "немагчыма знайÑьці аб'ект ÑпаÑылкі %s"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "зьмена ўладальніка %s"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "зьмена групы %s"
+
+#: src/chown.c:93
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [ПÐРÐМЭТÐР]... [УЛÐДÐЛЬÐІК][:[ГРУПÐ]] ФÐЙЛ...\n"
+" альбо: %s [ПÐРÐМЭТÐР]... --reference=RFILE ФÐЙЛ...\n"
+
+#: src/chown.c:98
+#, fuzzy
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"ЗьмÑнÑе ўладальніка й/альбо групу кожнага ФÐЙЛа на ЎЛÐДÐЛЬÐІКа й/альбо "
+"ГРУПУ.\n"
+"Калі зададзены --reference, зьмÑнÑе ўладальніка й групу кожнага ФÐЙЛа на\n"
+"Ð°Ð´Ð¿Ð°Ð²ÐµÐ´Ð½Ñ‹Ñ Ð·Ð½Ð°Ñ‡Ñньні Ñž файла RFILE.\n"
+"\n"
+" -c, --changes Ñк Ñ– verbose, але друкуе толькі калі зьмены "
+"адбыліÑÑ\n"
+" --dereference узьдзейнічае на аб'ект ÑпаÑылкі, замеÑÑ‚ Ñамой\n"
+" Ñымбалічнае ÑпаÑылкі (гÑта Ð¿Ñ€Ð°Ð´Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ñ‹Ñ "
+"паводзіны)\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=БЯГУЧЫ_ЎЛÐДÐЛЬÐІК:БЯГУЧÐЯ_ГРУПÐ\n"
+" зьмÑнÑе ўладальніка й/ці групу кожнага файла "
+"толькі\n"
+" калі Ñго бÑгучы ўладальнік Ñ–/ці група Ñупадаюць з\n"
+" зададзенымі тутака. Як група так і ўладальнік "
+"могуць\n"
+" быць не зададзены, у гÑтым выпадку Ñупадзеньне "
+"гÑтага\n"
+" атрыбуту неабавÑзкова.\n"
+
+#: src/chown.c:122
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet не адлюÑтроўваць аÑÐ½Ð¾ÑžÐ½Ñ‹Ñ Ð¿Ð°Ð²ÐµÐ´Ð°Ð¼Ð»ÐµÐ½ÑŒÐ½Ñ– аб "
+"памылках\n"
+" --reference=RФÐЙЛ выкарыÑтоўвае ўладальніка й групу RФÐЙЛу замеÑÑ‚\n"
+" зададзеных значÑньнÑÑž УЛÐДÐЛЬÐІК:ГРУПÐ\n"
+" -R, --recursive апрацоўвае файлы й Ñ‚Ñчкі Ñ€ÑкурÑыўна\n"
+" -v, --verbose выводзіць праверку Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð°Ð³Ð° апрацаванага файлу\n"
+
+#: src/chown.c:144
+#, fuzzy
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"Калі ўладальнік прапушчаны, ён не зьмÑнÑецца. Калі група прапушчана, Ñна\n"
+"не зьмÑнÑецца, але ж зьмÑнÑецца на Ñ€ÑгіÑтрацыйную групу калі зададзен "
+"толькі\n"
+"уладальнік з `:'. УЛÐДÐЛЬÐІК Ñ– ГРУПРмогуць быць зададзены Ñк лічбамі, так "
+"Ñ–\n"
+"мÑнушкамі Ð´Ð»Ñ Ð»Ñ–Ñ‡Ð±Ð°Ð²Ñ‹Ñ… значÑньнÑÑž.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+"\n"
+"Прыклады:\n"
+" %s root /u ЗьмÑнÑе ўладальніка /u на \"root\".\n"
+" %s root:staff /u Тое Ñама, але ÑÑˆÑ‡Ñ Ð·ÑŒÐ¼ÑнÑе групу на \"staff\".\n"
+" %s -hR root /u ЗьмÑнÑе ўладальніка /u Ñ– Ñубфайлаў на \"root\".\n"
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"ВыкарыÑтаньне: %s ÐОВЫ_ROOT [ЗÐГÐД...]\n"
+" ці: %s ВЫБÐР\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"ЗапуÑкае ЗÐГÐД з новай каранёвай Ñ‚Ñчкай.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"Калі не атрыман загад, выконвае ``${SHELL} -i'' (дапомна: /bin/sh).\n"
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "немагчыма зьмÑніць каранёвую Ñ‚Ñчку на %s"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "немачыма перайÑьці да каранёвае Ñ‚Ñчкі"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "немагчыма выканаць загад %s"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: файл занадта вÑлікі"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [ФÐЙЛ]...\n"
+" ці: %s [ВЫБÐР]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"Друкуе CRC падлік Ñ– колькаÑьць байтаў кожнага ФÐЙЛу.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "ВыкарыÑтаньне: %s [ПÐРÐМЭТÐР]... ФÐЙЛ1 ФÐЙЛ2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr ""
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+
+#: src/comm.c:86
+#, fuzzy
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"Парановае ÑƒÐ¿Ð°Ñ€Ð°Ð´ÐºÐ°Ð²Ð°Ð½Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹ ЛЕВЫ_ФÐЙЛ Ñ– ПРÐВЫ_ФÐЙЛ радок за радком.\n"
+"\n"
+" -1 не адлюÑтроўваць радкі, ÑÐºÑ–Ñ Ñ‘Ñьць толькі Ñž левым файле\n"
+" -2 не адлюÑтроўваць радкі, ÑÐºÑ–Ñ Ñ‘Ñьць толькі Ñž правым файле\n"
+" -3 неадлюÑтроўваць радкі, ÑÐºÑ–Ñ Ñ‘Ñьць у абодвух файлах\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "памылка пры захаваньні ўладальніку Ð´Ð»Ñ %s"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr "немагчыма адшукаць файл %s"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "збой пры захаваньні аўтарÑтва Ð´Ð»Ñ %s"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "немагыма адчыніць %s Ð´Ð»Ñ Ñ‡Ñ‹Ñ‚Ð°Ð½ÑŒÐ½Ñ"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "немагчыма выканаць fstat %s"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "файл %s мінаецца, таму што ён быў заменены пад Ñ‡Ð°Ñ ÐºÐ°Ð¿Ñ–ÑваньнÑ"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "немагчыма выдаліць %s"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "выдален %s\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "немагчыма Ñтварыць звычайны файл %s"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "чытаецца %s"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "немагчыма зрабіць lseek %s"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "пішацца %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "захоўвае Ñ‡Ð°Ñ Ð´Ð»Ñ %s"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "зачынÑецца %s"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: перазапіÑаць %s, Ñ€Ñжым перазапіÑу %04lo? "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: перазапіÑаць %s? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (запаÑны: %s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "мінаецца Ñ‚Ñчка %s"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "увага: зыходны файл %s зададзены больш за адзін раз"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s і %s адзін і той жа ж файл"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "немагчыма перазапіÑаць Ð½Ñ Ñ‚Ñчку %s Ñ‚Ñчкай %s"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "толькі што Ñтвораны %s з %s Ð½Ñ Ð±ÑƒÐ´Ð·Ðµ перазапіÑаны"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "немагчыма перазапіÑаць Ñ‚Ñчку %s Ð½Ñ Ñ‚Ñчкай"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "немагчыма перамÑÑьціць Ñ‚Ñчку Ñž Ð½Ñ Ñ‚Ñчку: %s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "ÑтварÑньне запаÑной копіі %s зьнішчыць крыніцу; %s не перанеÑен"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "ÑтварÑньне запаÑной копіі %s зьнішчыць крыніцу; %s не ÑкапіÑван"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "немагчыма Ñтварыць запаÑную копію %s"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "немагчыма ÑкапіÑваць Ñ‚Ñчку, %s, Ñаму Ñž ÑÑбе, %s"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "жорÑткае лучыва %s на Ñ‚Ñчку %s Ð½Ñ Ð±ÑƒÐ´Ð·Ðµ Ñтворана"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "немагчыма Ñтварыць жорÑткае лучыва %s на %s"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "немагчыма перамÑÑьціць %s ва ўлаÑную падтÑчку, %s"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "немагчыма перамÑÑьціць %s у %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr "збой міжпрыладнага перамÑшчÑньнÑ: %s у %s; немагчыма выдаліць мÑту"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "немагчыма ÑкапіÑваць цыклічнае знакавае лучыва %s"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr "%s: можа Ñтварыць адноÑнае знакавае лучыва толькі Ñž бÑгучае Ñ‚Ñчцы"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "немагчыма Ñтварыць знакавае лучыва %s на %s"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "немагчыма Ñтварыць лучыва %s"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "немагчыма Ñтварыць fifo %s"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "немагчыма Ñтварыць аÑаблівы файл %s"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "немагчыма прачытаць знакавае лучыва %s"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "немагчыма Ñтварыць знакавае лучыва %s"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s мае невÑдомы від файлу"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "немагчыма ваÑтанавіць %s з запаÑное копіі"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (ваÑтанаўленьне)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [ВЫБÐР]... ÐДКУЛЬ КУДЫ\n"
+" ці: %s [ВЫБÐР]... ÐДКУЛЬ... ТЭЧКÐ\n"
+" ці: %s [ВЫБÐР]... --target-directory=ТЭЧКРÐДКУЛЬ...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Капуе КРЫÐІЦу Ñž ПРЫЗÐÐЧЭÐЬÐЕ; ці ÑˆÐ¼Ð°Ñ‚Ð»Ñ–ÐºÑ–Ñ ÐšÐ Ð«ÐІЦ(Ñ‹) у ТЭЧКу.\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr "Довады, абавÑÐ·ÐºÐ¾Ð²Ñ‹Ñ Ð´Ð»Ñ Ð´Ð¾ÑžÐ³Ñ–Ñ… выбараў, абавÑÐ·ÐºÐ¾Ð²Ñ‹Ñ Ð¹ Ð´Ð»Ñ ÐºÐ°Ñ€Ð¾Ñ‚ÐºÑ–Ñ….\n"
+
+#: src/cp.c:170
+#, fuzzy
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive тое што й -dpR\n"
+" --backup[=CONTROL] Ñтварае запаÑную копію кожнага Ñ–Ñнуючага "
+"файлу\n"
+" прызначÑньнÑ\n"
+" -b Ñк --backup але не прымае довад\n"
+" --copy-contents капуе зьмеÑÑ‚ аÑабіÑÑ‚Ñ‹Ñ… файлаў, у выпадку\n"
+" Ñ€ÑкурÑÑ‹Ñ–\n"
+" -d тое ж, што й --no-dereference --"
+"preserve=link\n"
+
+#: src/cp.c:177
+#, fuzzy
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" --no-dereference ніколі Ð½Ñ Ñледаваць за знакавымі лучывамі\n"
+" -f, --force калі Ñ–Ñнуючы файл прызначÑÐ½ÑŒÐ½Ñ Ð½Ñ Ð¼Ð¾Ð¶Ð° "
+"быць\n"
+" адчынены, выдаліць Ñго й паÑпрабаваць "
+"нанава\n"
+" -i, --interactive паведаміць перад перазапіÑам\n"
+" -H Ñ–Ñьці за знакавымі лучывамі Ñž загадным радку\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+#, fuzzy
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -l, --link злучае файлы замеÑÑ‚ капіÑваньнÑ\n"
+" -L, --dereference заўÑёды йÑьці за знакавымі лучывамі\n"
+" -p Ñк Ñ– --preserve=mode,ownership,timestamps\n"
+" --preserve[=СЬПІС_ÐТРЫБУТÐÐŽ]\n"
+" захоўвае Ð¿Ð°Ð·Ð½Ð°Ñ‡Ð°Ð½Ñ‹Ñ Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹ (дапомныÑ:\n"
+" mode,ownership,timestamps), калі магчыма,\n"
+" Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹: links, all\n"
+
+#: src/cp.c:196
+#, fuzzy
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=СЬПІС_ÐТРЫБУТÐÐŽ\n"
+" не захоўваць Ð¿Ð°Ð·Ð½Ð°Ñ‡Ð°Ð½Ñ‹Ñ Ð°Ñ‚Ñ€Ñ‹Ð±ÑƒÑ‚Ñ‹\n"
+" --parents дадаць зыходны шлÑÑ… да ТЭЧКі\n"
+" -P Ñк Ñ– `--no-dereference'\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive Ñ€ÑкурÑыўна капіÑваць Ñ‚Ñчкі\n"
+" --remove-destination выдаліць кожны Ñ–Ñнуючы файл прызначÑньнÑ\n"
+" перад тым Ñк адчыніць Ñго (у разрÑз з --"
+"force)\n"
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --reply={yes,no,query} вызначае Ñк апрацоўваць паведамленьне пра\n"
+" Ñ–Ñнуючы файл прызначÑньнÑ\n"
+" --sparse=WHEN кантралюе ÑтварÑньне разрÑджаных файлаў\n"
+" --strip-trailing-slashes выдалÑе ÑžÑе цÑгнучыеÑÑ ÑкоÑÑ‹ з кожнага "
+"доваду\n"
+" КРЫÐІЦы\n"
+
+#: src/cp.c:210
+#, fuzzy
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link Ñтварае Ð·Ð½Ð°ÐºÐ°Ð²Ñ‹Ñ Ð»ÑƒÑ‡Ñ‹Ð²Ñ‹ замеÑÑ‚ капіÑваньнÑ\n"
+" -S, --suffix=КÐÐЧÐТÐК перазапіÑвае звычайны канчатак запаÑу\n"
+" --target-directory=ТЭЧКРперамÑшчае ÑžÑе довады КРЫÐІЦы Ñž ТЭЧКу\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update капуе толькі калі файл КРЫÐІЦРнавешы за "
+"файл\n"
+" прызначÑньнÑ, ці файл прызначÑньне "
+"прапушчаны\n"
+" -v, --verbose пведамлÑе што ўжо зроблена\n"
+" -x, --one-file-system не пакідаць межы гÑтае файлавае ÑÑ‹ÑÑ‚Ñмы\n"
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+" Дапомна, \"sparse\" файлы з КРЫÐІЦы раÑпазнаецца непрадуманай ÑўрыÑтыкай "
+"Ñ–\n"
+"ÑуадноÑна гÑтаму, Ñтвараецца \"sparse\" файл ПРЫЗÐÐЧЭÐЬÐÑ. ГÑтак ж "
+"паводзіць\n"
+"ÑÑбе выбар --sparse=auto. Заданьне --sparse=always прымушае Ñтвараць файл\n"
+"ПРЫЗÐÐЧЭÐЬÐÑ Ð·Ð°ÑžÑёды, нават калі КРЫÐІЦРўтрымлівае за шмат "
+"паÑлÑдоўнаÑьцей.\n"
+"нулÑвых байтаў. ВыкарыÑтоўвайце--sparse=never Ð´Ð»Ñ Ð·Ð°Ð±Ð°Ñ€Ð¾Ð½Ñ‹ ÑтварÑньнÑ\n"
+"\"sparse\" файлаў.\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+" Канчаткам запаÑных файлаў зьÑўлÑецца `~', калі не пераназначаецца\n"
+"выбарам --suffix ці пераменнай аÑÑÑ€Ð¾Ð´Ð·ÑŒÐ´Ð·Ñ SIMPLE_BACKUP_SUFFIX.\n"
+"ШлÑÑ… кантралÑÐ²Ð°Ð½ÑŒÐ½Ñ Ð²ÑÑ€Ñый можа быць абраны выбарам --backup, ці праз\n"
+"пераменную аÑÑÑ€Ð¾Ð´Ð·ÑŒÐ´Ð·Ñ VERSION_CONTROL. ÐœÐ°Ð³Ñ‡Ñ‹Ð¼Ð°Ñ Ð·Ð½Ð°Ñ‡Ñньні:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off ніколі не запаÑіць (нават калі зададзены --backup)\n"
+" numbered, t Ñтвараць Ð½ÑƒÐ¼Ð°Ñ€Ð°Ð²Ð°Ð½Ñ‹Ñ Ð·Ð°Ð¿Ð°ÑÑ‹\n"
+" existing, nil нумараваць, калі йÑнуе нумараваны, інакш не нумараваць\n"
+" simple, never заўÑёды Ñтвараць ненумараваныÑ\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+" Загад cp запаÑіць КРЫÐІЦы калі зададзены выбары -f Ñ– -b, Ñ– калі\n"
+"КРЫÐІЦРй ПРЫЗÐÐЧЭÐЬÐЕ адна й Ñ‚Ð°Ñ Ð¶ назва Ñ–Ñнуючага звычанага файлу.\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "збой пры захаваньні чаÑу Ð´Ð»Ñ %s"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "збой пры захаваньні правоў Ð´Ð»Ñ %s"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "немагчыма Ñтварыць Ñ‚Ñчку %s"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s Ñ–Ñнуе, але гÑта Ð½Ñ Ñ‚Ñчка"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "доÑтуп да %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, c-format
+msgid "missing file operand"
+msgstr "прапушчаны файлавы довад"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, c-format
+msgid "missing destination file operand after %s"
+msgstr "прапушчаны файл прызначÑÐ½ÑŒÐ½Ñ Ð¿Ð°ÑÑŒÐ»Ñ %s"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, c-format
+msgid "target %s is not a directory"
+msgstr "Ð·Ð³Ð°Ð´Ð°Ð½Ð°Ñ Ð¼Ñта %s не з'ÑўлÑецца Ñ‚Ñчкай"
+
+#: src/cp.c:697
+#, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "калі зададзены --parents, прызначÑньне муÑіць быць дырÑкторыÑй"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr "парамÑтар --reply аÑуджаны; выкарыÑтоўваеце замеÑÑ‚ Ñго -i альбо -f"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, c-format
+msgid "multiple target directories specified"
+msgstr "зададзены некалькі дырÑкторыÑÑž прызначÑньнÑ"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "немагчыма Ñтварыць ні жорÑткае, ні знакавае лучыва"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "від запаÑной копіі"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "увод недаÑтупны"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: нумар радку за дапушчальнымі межамі"
+
+#: src/csplit.c:709
+#, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: %s: нумар радка па-за дазволенымі межамі"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr " на паўтарÑньні %s\n"
+
+#: src/csplit.c:755
+#, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: %s: Ñупадзеньне Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ð°"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "памылка ў пошуку звычайнага выразу"
+
+#: src/csplit.c:984
+#, c-format
+msgid "write error for %s"
+msgstr "памылка запіÑу Ð´Ð»Ñ %s"
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: паÑÑŒÐ»Ñ Ð¿Ð°Ð´Ð·ÑлÑльніка чакаецца цÑлы лік"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: `}' патрабуецца Ð´Ð»Ñ Ð¿Ð°Ð´Ð»Ñ–ÐºÑƒ паўтораў"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: цÑлы патрабуецца паміж `{' Ñ– `}'"
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: прапушчаны падзÑлÑльнік Ð·Ð°Ñ‡Ñ‹Ð½ÐµÐ½ÑŒÐ½Ñ `%c'"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: нерÑчаіÑны Ñталы выраз: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: нерÑчаіÑны прыклад"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: нумар радку павінен быць большым за нуль."
+
+#: src/csplit.c:1172
+#, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "нумар радка %s меншы за нумар папÑÑ€ÑднÑга радка, %s"
+
+#: src/csplit.c:1178
+#, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "Увага! Ðумар радка %s Ñупадае з нумарам папÑÑ€ÑднÑга радка."
+
+#: src/csplit.c:1231
+#, c-format
+msgid "invalid format width"
+msgstr "недзеÑздольны фармат шырыні"
+
+#: src/csplit.c:1252
+#, c-format
+msgid "invalid format precision"
+msgstr "недзеÑздольны фармат дакладнаÑьці"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "прапушчан вызначальнік пераўтварÑÐ½ÑŒÐ½Ñ Ð²Ð° ÑžÑтаўцы"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "нерÑчаіÑны вызначальнік пераўтварÑÐ½ÑŒÐ½Ñ Ð²Ð° ÑžÑтаўцы: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "нерÑчаіÑны вызначальнік пераўтварÑÐ½ÑŒÐ½Ñ Ð²Ð° ÑžÑтаўцы: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "за шмат ва ÑžÑтаўцы %% вызначальнікаў пераўтварÑньнÑ"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "ва ÑžÑтаўцы прапушчан %% вызначальнік пераўтварÑньнÑ"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: нерÑчаіÑны нумар"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "ВыкарыÑтаньне: %s [ВЫБÐР]... ФÐЙЛ УЗОР..\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"Выводзіць кавалкі ФÐЙЛа Ð¿Ð°Ð´Ð·ÐµÐ»ÐµÐ½Ñ‹Ñ Ð¿Ð° ЎЗОРу Ñž файлы `xx01', `xx02', ...,\n"
+"такÑама выводзіць на Ñтандартны вывад колькаÑьць байтаў у кожным кавалку.\n"
+"\n"
+
+#: src/csplit.c:1486
+#, fuzzy, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=ФÐРМÐТ ВыкарыÑтоўваць sprintf ФÐРМÐТ замеÑÑ‚ %d\n"
+" -f, --prefix=ПРЫСТÐЎКРВыкарыÑтоўваць ПРЫСТÐЎКу замеÑÑ‚ `xx'\n"
+" -k, --keep-files Ðе выдалÑць файлы вываду пры памылках\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=РÐЗРÐДЫ ВыкарыÑтоўваць зададзеную колькаÑьць "
+"разрадаў,\n"
+" замеÑÑ‚ звычайных двух.\n"
+" -s, --quiet, --silent Ðе друкаваць падлікі памераў файлаў вываду.\n"
+" -z, --elide-empty-files ВыдалÑць Ð¿Ð°Ñ€Ð¾Ð¶Ð½Ñ–Ñ Ñ„Ð°Ð¹Ð»Ñ‹ вываду.\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"Чытае Ñтандартны ўвод, калі замеÑÑ‚ ФÐЙЛа -. Кожны ЎЗОР можа быць:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "ВыкарыÑтаньне: %s [ПÐРÐМЭТÐР]... [ФÐЙЛ]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+" Друкуе Ð°Ð±Ñ€Ð°Ð½Ñ‹Ñ Ñ‡Ð°Ñкі радкоў з кожнага ФÐЙЛу Ñž Ñтандартны вывад.\n"
+"\n"
+
+#: src/cut.c:199
+#, fuzzy
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=СЬПІС Выводзіць тольі гÑÑ‚Ñ‹Ñ Ð±Ð°Ð¹Ñ‚Ñ‹.\n"
+" -c, --characters=СЬПІС Выводзіць толькі гÑÑ‚Ñ‹Ñ Ð·Ð½Ð°ÐºÑ–.\n"
+" -d, --delimiter=ПÐДЗЯЛЯЛЬÐІК\n"
+" ВыкарыÑтоўваць адмыÑловы падзÑлÑльнік длÑ\n"
+" Ñ€Ð°Ð·Ð¼ÐµÐ¶Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ð¿Ð°Ð»Ñ‘Ñž, замеÑÑ‚ TAB.\n"
+
+#: src/cut.c:204
+#, fuzzy
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=СЬПІС Выводзіць толькі гÑÑ‚Ñ‹Ñ Ð¿Ð°Ð»Ñ–; так Ñама друкаваць\n"
+" любы радок, Ñкі не зьмÑшчае падзÑлÑльнік, за\n"
+" вынÑткам Ñ‚Ñ‹Ñ… выпадкаў, калі заданы выбар -s.\n"
+" -n (незаўважаецца)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited Ðе друкуе радкі без падзÑлÑльніка.\n"
+" --output-delimiter=РÐДОК\n"
+" ВыкарыÑтоўвае радок Ñк падзÑлÑльнік вываду;\n"
+" дапомна выкарыÑтоўваецца падзÑлÑльнік уводу.\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "нерÑчаіÑны байт ці ÑÑŒÐ¿Ñ–Ñ Ð¿Ð¾Ð»Ñ"
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr "байт зруху %s занадта вÑлікі"
+
+#: src/cut.c:472
+#, c-format
+msgid "field number %s is too large"
+msgstr "нумар Ð¿Ð¾Ð»Ñ %s занадта вÑлікі"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "толькі адзін від ÑьпіÑу можа быць зададзены"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "падзÑлÑльнік паінен быць адным знакам"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "вы павінны пазначыць ÑÑŒÐ¿Ñ–Ñ Ð±Ð°Ð¹Ñ‚Ð°Ñž, знакаў ці палёў"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "падзÑлÑльнік уводу можа быць зададзены толькі Ð´Ð»Ñ Ð´Ð·ÐµÑньнÑÑž над палÑмі"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"падаўленьне непадзеленых радкоў мае ÑÑÐ½Ñ Ñ‚Ð¾Ð»ÑŒÐºÑ– длÑ\n"
+"\tдзеÑньнÑÑž над палÑмі"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "прапушчан ÑÑŒÐ¿Ñ–Ñ Ð¿Ð°Ð»Ñ‘Ñž"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "прапушчан ÑÑŒÐ¿Ñ–Ñ Ñтановішчаў"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [ВЫБÐР]... [+ФÐРМÐТ]\n"
+" ці: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+#, fuzzy
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+" -r, --reference=ФÐЙЛ ÐдлюÑтроўвае Ñ‡Ð°Ñ Ð°Ð¿Ð¾ÑˆÐ½Ñга зьмÑÐ½ÐµÐ½ÑŒÐ½Ñ Ñ„Ð°Ð¹Ð»Ð°.\n"
+" -R, --rfc-2822 Выдае радок чаÑу ўзгодна з RFC-2822.\n"
+" --rfc-3339=TIMESPEC друкуе дату й Ñ‡Ð°Ñ Ñƒ фармаце RFC 3339.\n"
+" TIMESPEC='date', 'seconds' альо 'ns' длÑ\n"
+" даты й чаÑу, каб вызначыць дакладнаÑьць.\n"
+" -s, --set=РÐДОК УÑталёвае чаÑ, Ñкі апіÑаны радком.\n"
+" -u, --utc, --universal Друкуе ЎнівÑÑ€Ñальны Ñкаардынаваны чаÑ.\n"
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+
+#: src/date.c:167
+#, fuzzy
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A ÐŸÐ¾ÑžÐ½Ð°Ñ Ð¼ÑÑÑ†Ð¾Ð²Ð°Ñ Ð½Ð°Ð·Ð²Ð° днÑ; Ð¿ÐµÑ€Ð°Ð¼ÐµÐ½Ð½Ð°Ñ Ð´Ð°ÑžÐ¶Ñ‹Ð½Ñ (ПÑнÑдзелак...Серада).\n"
+" %b Ð¡ÐºÐ°Ñ€Ð¾Ñ‡Ð°Ð½Ð°Ñ Ð¼ÑÑÑ†Ð¾Ð²Ð°Ñ Ð½Ð°Ð·Ð²Ð° меÑÑца (Стд..Снж).\n"
+" %B ÐŸÐ¾ÑžÐ½Ð°Ñ Ð¼ÑÑÑ†Ð¾Ð²Ð°Ñ Ð½Ð°Ð·Ð²Ð° меÑÑца пераменнае даўжыні (Студзень..."
+"Сьнежань).\n"
+" %c ÐœÑÑÑ†Ð¾Ð²Ñ‹Ñ Ð´Ð°Ñ‚Ð° й Ñ‡Ð°Ñ (Чцв Ð›Ñ–Ñ 18 06:06:06 MSK 1982).\n"
+
+#: src/date.c:173
+#, fuzzy
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C Стагоддзе (год, падзелены на 100 Ñ– абрÑзаны да цÑлага) [00-99].\n"
+" %d Дзень меÑÑца (01..31).\n"
+" %D Дата (мм/дздз/гг).\n"
+" %e Дзень меÑÑца, бÑз 0 ( 1..31).\n"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+" %F Ð¿Ð¾ÑžÐ½Ð°Ñ Ð´Ð°Ñ‚Ð°; тое, што й %Y-%m-%d.\n"
+" %g дзвюх лічбавы год нумара Ñ‚Ñ‹Ð´Ð½Ñ Ñž ISO (гл. %G).\n"
+" %G год нумара Ñ‚Ñ‹Ð´Ð½Ñ Ñž ISO (гл. %V); звычайна ідзе разам з %V.\n"
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h Ñк Ñ– %b\n"
+" %H гадзіна (00..23)\n"
+" %I гадзіна (01..12)\n"
+" %j дзень году (001..366)\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k гадзіна ( 0..23)\n"
+" %l гадзіна ( 1..12)\n"
+" %m меÑÑц (01..12)\n"
+" %M хвіліна (00..59)\n"
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+" %n новы радок\n"
+" %N нанаÑÑкунды (000000000..999999999)\n"
+" %p мÑÑцовы Ñквівалент паказчык AM ці PM; нічога калі Ñго нÑма\n"
+" %P Ñк %p, але малымі літарамі\n"
+" %r мÑÑцовы Ñ‡Ð°Ñ Ñƒ 12-гадзінным фармаце (напрыклад 11:11:04 PM)\n"
+" %R 24-гадзінны чаÑ; Ñк Ñ– %H:%M\n"
+" %s колькаÑьць ÑÑкундаў з 1970-01-01 00:00:00 UTC\n"
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+
+#: src/date.c:211
+#, fuzzy
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U Ðумар Ñ‚Ñ‹Ð´Ð½Ñ Ð³Ð¾Ð´Ð°, дзе першы дзень Ñ‚Ñ‹Ð´Ð½Ñ - нÑÐ´Ð·ÐµÐ»Ñ (00..53).\n"
+" %V Ðумар Ñ‚Ñ‹Ð´Ð½Ñ Ð³Ð¾Ð´Ð°, дзе першы дзень Ñ‚Ñ‹Ð´Ð½Ñ - панÑдзелак (01..53).\n"
+" %w Дзень Ñ‚Ñ‹Ð´Ð½Ñ (0..6); дзе 0 - гÑта нÑдзелÑ.\n"
+" %W Ðумар Ñ‚Ñ‹Ð´Ð½Ñ Ð³Ð¾Ð´Ð°, дзе першы дзень Ñ‚Ñ‹Ð´Ð½Ñ - панÑдзелак (00..53).\n"
+
+#: src/date.c:217
+#, fuzzy
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x мÑÑцовы выглÑд даты (мм/дздз/гг)\n"
+" %X мÑÑцовы выглÑд чаÑу (%Г:%Хв:%С)\n"
+" %y дзьве Ð°Ð¿Ð¾ÑˆÐ½Ñ–Ñ Ð»Ñ–Ñ‡Ð±Ñ‹ году (00..99)\n"
+" %Y год (1970...)\n"
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "Ñтандартны ўвод"
+
+#: src/date.c:297 src/date.c:517
+#, c-format
+msgid "invalid date %s"
+msgstr "нерÑчаіÑÐ½Ð°Ñ Ð´Ð°Ñ‚Ð° %s"
+
+#: src/date.c:408 src/date.c:442
+#, c-format
+msgid "multiple output formats specified"
+msgstr "зададзены некалькі фарматаў вываду"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "выбары, што вызначаюць дату Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÑƒ ўзаема выключныÑ"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr "выбары Ð´Ð»Ñ ÑžÑталÑÐ²Ð°Ð½ÑŒÐ½Ñ Ð¹ друку чаÑу нельга ўжываць разам"
+
+#: src/date.c:448
+#, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "немагчыма ÑžÑталÑваць дату"
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "Ñ‡Ð°Ñ %s за дазволенымі межамі"
+
+#: src/dd.c:404
+#, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [ÐПЭРÐÐД]...\n"
+" або: %s ПÐРÐМЭТÐР\n"
+
+#: src/dd.c:409
+#, fuzzy
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+" Капуе файл, пераўтварае й фарматуе згодна з выбарамі.\n"
+"\n"
+" bs=БÐЙТÐÐŽ УÑталÑваць Ñ– ibs Ñ– obs у заданую колькаÑьць байтаў.\n"
+" cbs=БÐЙТÐÐŽ Пераўтвараць заданую колькаÑьць байтаў за раз.\n"
+" conv=КЛЮЧÐВЫЯ_СЛОВЫ\n"
+" Пераўтварае файл згодна Ñа ÑьпіÑам ключавых Ñловаў,\n"
+" разьмежаваных коÑкамі.\n"
+" count=БЛÐКÐÐŽ КапіÑваць толькі заданую колькаÑьць блёкаў уводу.\n"
+" ibs=БÐЙТÐÐŽ Чатаць заданую колькаÑьць байтаў за раз.\n"
+
+#: src/dd.c:418
+#, fuzzy
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=ФÐЙЛ Чытаць з файлу замеÑÑ‚ Ñтандартнага ўводу.\n"
+" obs=БÐЙТÐÐŽ ПіÑаць заданую колькаÑьць байтаў за раз.\n"
+" of=ФÐЙЛ ПіÑаць у файл замеÑÑ‚ Ñтандартнага вываду.\n"
+" seek=БЛÐКÐÐŽ Ðбмінуць заданую колькаÑьць блёкаў ад пачатку Ñž файле "
+"вываду.\n"
+" skip=БЛÐКÐÐŽ Ðбмінуць заданую колькаÑьць блёкаў ад пачатку Ñž файле "
+"ўводу.\n"
+
+#: src/dd.c:428
+#, fuzzy
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"Блёкі й байты могуць Ñ–Ñьці з ÑуфікÑамі множаньнÑ:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, Ñ– тое ж Ð´Ð»Ñ T, P, E, Z, Y.\n"
+"Кожнае ключавое Ñлова можа быць:\n"
+"\n"
+
+#: src/dd.c:437
+#, fuzzy
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii З EBCDIC у ASCII.\n"
+" ebcdic З ASCII ў EBCDIC.\n"
+" ibm З ASCII Ñž альтÑрнатыўнае EBCDIC.\n"
+" block ЗамÑнÑць запіÑÑ‹ з канцавымі знакамі новага радка на прагалы.\n"
+" unblock ЗамÑнÑць ÐºÐ°Ð½Ñ†Ð°Ð²Ñ‹Ñ Ð¿Ñ€Ð°Ð³Ð°Ð»Ñ‹ на Ð½Ð¾Ð²Ñ‹Ñ Ñ€Ð°Ð´ÐºÑ–.\n"
+" lcase ЗьмÑнÑць вÑÐ»Ñ–ÐºÑ–Ñ Ð»Ñ–Ñ‚Ð°Ñ€Ñ‹ на маленькіÑ.\n"
+
+#: src/dd.c:445
+#, fuzzy
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+" notrunc Ðе абразаць файл вываду.\n"
+" ucase ЗьмÑніць Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÑ–Ñ Ð»Ñ–Ñ‚Ð°Ñ€Ñ‹ на вÑлікіÑ.\n"
+" swab ÐœÑнÑць меÑцамі кожную пару байтаў уводу.\n"
+" noerror ПрацÑгваць працу паÑÑŒÐ»Ñ Ð¿Ð°Ð¼Ñ‹Ð»Ð°Ðº чытаньнÑ.\n"
+" sync Дадаваць да кожнага блёку ўводу нулі да памеру ibs; калі\n"
+" выкарыÑтоўваецца разам з block ці unblock, дадаваць прагалы,\n"
+" замеÑÑ‚ нулёў.\n"
+
+#: src/dd.c:452
+#, fuzzy
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+" notrunc Ðе абразаць файл вываду.\n"
+" ucase ЗьмÑніць Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÑ–Ñ Ð»Ñ–Ñ‚Ð°Ñ€Ñ‹ на вÑлікіÑ.\n"
+" swab ÐœÑнÑць меÑцамі кожную пару байтаў уводу.\n"
+" noerror ПрацÑгваць працу паÑÑŒÐ»Ñ Ð¿Ð°Ð¼Ñ‹Ð»Ð°Ðº чытаньнÑ.\n"
+" sync Дадаваць да кожнага блёку ўводу нулі да памеру ibs; калі\n"
+" выкарыÑтоўваецца разам з block ці unblock, дадаваць прагалы,\n"
+" замеÑÑ‚ нулёў.\n"
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "%s: Ð·Ð°Ð´Ð°Ð½Ð°Ñ Ñ‚Ñчка мÑÑ‚Ñ‹ не зьÑўлÑецца Ñ‚Ñчкай"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr " text выкарыÑтоўваць Ñ‚ÑкÑтавы ўвод/вывад Ð´Ð»Ñ Ð´Ð°Ð½Ñ‹Ñ…\n"
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+"%<PRIuMAX>+%<PRIuMAX> запіÑаў уайшло\n"
+"%<PRIuMAX>+%<PRIuMAX> запіÑаў выйшла\n"
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "1 абрÑзаны запіÑ\n"
+msgstr[1] "%<PRIuMAX> абрÑзаных запіÑÑ‹\n"
+msgstr[2] "%<PRIuMAX> абрÑзаных запіÑаў\n"
+
+#: src/dd.c:565
+#, fuzzy, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] "1 байт ÑкапіÑваны"
+msgstr[1] "%<PRIuMAX> байты (%s) ÑкапіÑвана"
+msgstr[2] "%<PRIuMAX> байтаў (%s) ÑкапіÑвана"
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr "БÑÑконцаÑьць"
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, fuzzy, c-format
+msgid ", %g s, %s/s\n"
+msgstr ", %g ÑÑкунда , %s/s\n"
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "зачынÑецца файл уводу %s"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "закрываецца файл вываду %s"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "Ð·Ð°Ð¿Ñ–Ñ Ñƒ %s"
+
+#: src/dd.c:886
+#, c-format
+msgid "unrecognized operand %s"
+msgstr "нераÑпазнаны апÑранд %s"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "нерÑчаіÑнае ператварÑньне: %s"
+
+#: src/dd.c:900
+#, c-format
+msgid "invalid input flag: %s"
+msgstr "нерÑчаіÑны ÑьцÑг уводу: %s"
+
+#: src/dd.c:903
+#, c-format
+msgid "invalid output flag: %s"
+msgstr "нерÑчаіÑны ÑьцÑг вываду: %s"
+
+#: src/dd.c:906
+#, c-format
+msgid "invalid status flag: %s"
+msgstr "нерÑчаіÑны ÑьцÑг ÑтатуÑу: %s"
+
+#: src/dd.c:942
+#, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "нераÑпазнаны апÑранд %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "нерÑчаіÑны нумар %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#: src/dd.c:973
+#, fuzzy, c-format
+msgid "cannot combine block and unblock"
+msgstr "немагчыма абмінуць разам карыÑтальніка й групу"
+
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "немагчыма параўнаць назвы файлаў %s і %s"
+
+#: src/dd.c:977
+#, c-format
+msgid "cannot combine excl and nocreat"
+msgstr ""
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+
+#: src/dd.c:1180 src/dd.c:1237
+#, c-format
+msgid "%s: cannot seek"
+msgstr "%s: немагчыма пераÑунуць паказальнік"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr "перапаўненьне зруху цÑгам Ñ‡Ñ‹Ñ‚Ð°Ð½ÑŒÐ½Ñ Ñ„Ð°Ð¹Ð»Ð° %s"
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "увага: зрух файла пашкоджаны паÑÑŒÐ»Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÑ– чытаньнÑ"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr "немагчыма абмінуць памылку Ñдра"
+
+#: src/dd.c:1376
+#, c-format
+msgid "setting flags for %s"
+msgstr "выÑтаўленьне ÑьцÑгоў Ð´Ð»Ñ %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr "збой fdatasync Ð´Ð»Ñ %s"
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr "збой fsync Ð´Ð»Ñ %s"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "адчынÑецца %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, fuzzy, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "даÑÑгнуты %s байтаў у файле вываду %s"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "Ф-Ñ ÑÑ‹ÑÑ‚Ñма Тып"
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "Ð¤Ð°Ð¹Ð»Ð°Ð²Ð°Ñ ÑÑ‹ÑÑ‚Ñма "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr ""
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Памер Ужыта В-на У-а%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Памер Ужыта В-на У-а%%"
+
+#: src/df.c:165
+#, fuzzy, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %4s-блёкаў Ужыта Вольна ÐміÑÑ‚."
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " %4s-блёкаў Ужыта Вольна У-а%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Пункт мантаваньнÑ\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "немагчыма атрымаць бÑгучую Ñ‚Ñчку"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "немагчыма перайÑьці Ñž Ñ‚Ñчку %s"
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "немагчыма атрымаць Ñтан бÑгучае Ñ‚Ñчкі (зараз %s)"
+
+#: src/df.c:741
+#, fuzzy
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+" Паказывае зьвеÑткі пра файлавую ÑÑ‹ÑÑ‚Ñму, на Ñкой знаходзіцца файл, "
+"альбо,\n"
+"дапомна, пра ÑžÑе Ñ„Ð°Ð¹Ð»Ð°Ð²Ñ‹Ñ ÑÑ‹ÑÑ‚Ñмы.\n"
+"\n"
+
+#: src/df.c:749
+#, fuzzy
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all уключыць Ñ„Ð°Ð¹Ð»Ð°Ð²Ñ‹Ñ ÑÑ‹ÑÑ‚Ñмы ÑÐºÑ–Ñ Ð¼Ð°ÑŽÑ†ÑŒ 0 блёкаў\n"
+" -B, --block-size=N выкарыÑтоўваць блёкі памерам N байтаў\n"
+" -h, --human-readable друкаваць памеры ў чалавека-чытальным фармаце\n"
+" (Ñк напрыклад, 1Кб, 234Мб, 2Гб)\n"
+" -H, --si гл. вышÑй, але выкарыÑтоўваць Ñтупені 1000 замеÑÑ‚ "
+"1024\n"
+
+#: src/df.c:755
+#, fuzzy
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes выводзіць зьвеÑткі пра вузлы, замеÑÑ‚ блёкаў\n"
+" -k раўназначна --block-size=1K\n"
+" -l, --local абмежаваць вывад толькі мÑÑцовымі файлавымі "
+"ÑÑ‹ÑÑ‚Ñмамі\n"
+" --no-sync не выклÑкаць sync перад атрыманьнем зьвеÑтак "
+"(дапомна)\n"
+
+#: src/df.c:761
+#, fuzzy
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability выкарыÑтоўваць POSIX фармат вывадц\n"
+" --sync выклÑкаць sync перад атрыманьнем зьвеÑтак\n"
+" -t, --type=ТЫП абмежаваць вывад файлавымі ÑÑ‹ÑÑ‚Ñмамі заданага тыпу\n"
+" -T, --print-type друкаваць тып файлавае ÑÑ‹ÑÑ‚Ñмы\n"
+" -x, --exclude-type=ТЫП\n"
+" абмежаваць вывад файлавымі ÑÑ‹ÑÑ‚Ñмамі Ð½Ñ Ð³Ñтага тыпу\n"
+" -v (незаўважаецца)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr "аргумент --kilobytes аÑуджаны; замеÑÑ‚ Ñго карыÑтайцеÑÑ -k"
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "Ñ„Ð°Ð¹Ð»Ð°Ð²Ð°Ñ ÑÑ‹ÑÑ‚Ñма тыпу %s адначаÑова вылучана й выключана"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Увага: "
+
+#: src/df.c:943
+#, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%s немагчыма прачытаць табліцу прымантаваных файлавых ÑÑ‹ÑÑ‚Ñм"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "ВыкарыÑтаньне: %s [ВЫБÐР]... [ФÐЙЛ]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s:%lu: нерÑчаіÑны радок; прапушчана Ð´Ñ€ÑƒÐ³Ð°Ñ Ñ‡Ð°Ñтка"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu: нераÑпазнанае ключавое Ñлова %s"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<унутраны>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr "Ð¤Ð°Ð¹Ð»Ð°Ð²Ñ‹Ñ Ð°Ð¿Ñранбы Ð½Ñ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ быць аб'Ñднаны з --print-database (-p)."
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr ""
+"адÑутнічае Ð·ÑŒÐ¼ÐµÐ½Ð½Ð°Ñ Ð°ÑÑÑ€Ð¾Ð´Ð·ÑŒÐ´Ð·Ñ SHELL да таго ж, незаданы выбар віду абалонкі"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"ВыкарыÑтаньне: %s ÐÐЗВÐ\n"
+" ці: %s ВЫБÐР\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+"\n"
+"Прыклады:\n"
+" %s /usr/bin/sort друкуе \"/usr/bin\".\n"
+" %s stdio.h друкуе \".\".\n"
+
+#: src/du.c:279 src/wc.c:108
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [КЛЮЧ]... [ФÐЙЛ]...\n"
+" ці: %s [КЛЮЧ]... --files0-from=F\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"ПадÑумоўвае ўжываньне дыÑка кожным файлам; дзейнічае\n"
+"Ñ€ÑкурÑіўна Ð´Ð»Ñ Ñ‚Ñчак.\n"
+"\n"
+
+#: src/du.c:290
+#, fuzzy
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+" -a, --all друкаваць падлікі Ð´Ð»Ñ ÑžÑÑ–Ñ… файлаў, а не "
+"абмÑжоўвацца\n"
+" толькі Ñ‚Ñчкамі\n"
+" --apparent-size друкаваць ÑÐ°Ð¿Ñ€Ð°ÑžÐ´Ð½Ñ‹Ñ Ð¿Ð°Ð¼ÐµÑ€Ñ‹, замеÑÑ‚ памераў на "
+"дыÑке\n"
+" да таго ж, ÑÐ°Ð¿Ñ€Ð°ÑžÐ´Ð½Ñ‹Ñ Ð¿Ð°Ð¼ÐµÑ€Ñ‹, звычайна, меншыÑ, Ñны\n"
+" могуць быць Ð±Ð¾Ð»ÑŒÑˆÑ‹Ñ Ð·Ð° кошт \"дзірак\" у файлах,\n"
+" унутранай фрагмÑнтацыі уÑкоÑных блёкаў Ñ– Ñ‚.п.\n"
+" -B, --block-size=SIZE ужыць блёкі памеру SIZE-байтаў\n"
+" -b, --bytes адпаведнік --apparent-size --block-size=1\n"
+" -c, --total падлічыць агульны вынік\n"
+" -D, --dereference-args разьвÑзваць ÑÑ‹Ð¼Ð±Ð°Ð»Ñ–Ñ‡Ð½Ñ‹Ñ ÑпаÑылкі\n"
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "уÑÑго"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "Ð½ÐµÐ·Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ»Ð°Ñ Ð½Ð°Ð¹Ð±Ð¾Ð»ÑŒÑˆÐ°Ñ Ð³Ð»Ñ‹Ð±Ñ–Ð½Ñ %s"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr "парамÑтар \"--megabytes \" - аÑуджаны; замеÑÑ‚ Ñго карыÑтайцеÑÑ \"-m\""
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "немагчыма адначаÑова й падлічыць Ñ– паказаць уÑе пункты"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr ""
+
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr ""
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+#: src/du.c:960 src/wc.c:662
+#, c-format
+msgid "cannot read file names from %s"
+msgstr "немагчыма прачытаць назвы файлаў з %s"
+
+#: src/du.c:1000 src/du.c:1003
+msgid "invalid zero-length file name"
+msgstr "назва файла нулÑвой даўжыні"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "ВыкарыÑтаньне: %s [ВЫБÐР]... [РÐДОК]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [ВЫБÐР]... [-] [ПЕРÐМЕÐÐÐЯ=ЗÐÐЧЭÐЬÐЕ]... [ЗÐГÐД "
+"[ДОВÐД]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr "крок табулÑцыі %s занадта вÑлікі"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "памер табулÑцыі зьмÑшчае нерÑчаіÑны(Ñ) знак(Ñ–): %s"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "памер табулÑцыі Ð½Ñ Ð¼Ð¾Ð¶Ð° быць нулÑвым"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "памеры табулÑцыі павінны ўзраÑтаць"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, c-format
+msgid "input line is too long"
+msgstr "радок вываду задаўгі"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"ВыкарыÑтаньне: %s ВЫРÐЗ\n"
+" ці: %s ВЫБÐР\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "ÑынтакÑÑ–Ñ‡Ð½Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°"
+
+#: src/expr.c:468 src/ptx.c:292
+#, c-format
+msgid "error in regular expression matcher"
+msgstr "памылка Ñž ÑупаÑтаўлÑльніку Ñталых выразаў"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "Ð½Ñ Ð»Ñ–Ñ‡Ð±Ð°Ð²Ñ‹ довад"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "дзÑленьне на нуль"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [ЛІК]...\n"
+" ці: %s ВЫБÐР\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"Друкуе проÑÑ‚Ñ‹Ñ Ð¼Ð½Ð¾Ð¶Ð½Ñ–ÐºÑ– кожнага ліка.\n"
+"\n"
+
+#: src/factor.c:85
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+"Друкуе проÑÑ‚Ñ‹Ñ Ð¼Ð½Ð¾Ð¶Ð½Ñ–ÐºÑ– кожнага цÑлага ліка. Калі довады не заданыÑ, \n"
+"чытае лікі Ñа Ñтандартнага ўводу.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s занадта вÑлікі"
+
+#: src/factor.c:158
+#, c-format
+msgid "%s is not a valid positive integer"
+msgstr "%s - гÑта не Ñтаноўчы цÑлы лік"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "ВыкарыÑтаньне: %s [-ЛІЧБЫ] [ВЫБÐР]... [ФÐЙЛ]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr "недзеÑÐ·Ð´Ð¾Ð»ÑŒÐ½Ð°Ñ ÑˆÑ‹Ñ€Ñ‹Ð½Ñ: %s"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+
+#: src/fold.c:291 src/pr.c:841
+#, c-format
+msgid "invalid number of columns: %s"
+msgstr "Ð½ÐµÐ·Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ»Ð°Ñ ÐºÐ¾Ð»ÑŒÐºÐ°Ñьць Ñлупкоў: %s"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+" Друкуе Ð¿ÐµÑ€ÑˆÑ‹Ñ 10 радкоў кожнага файла Ñž Ñтандартны вывад. Калі заданы\n"
+"больш чым адзін файл, дадаткова друкуе загаловак з назвай файла.\n"
+"Калі файл незаданы, ці калі замеÑÑ‚ Ñго працÑжнік, чытае Ñтандартны ўвод.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "памылка Ñ‡Ñ‹Ñ‚Ð°Ð½ÑŒÐ½Ñ %s"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "памылка запіÑу %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr ""
+
+#: src/head.c:230 src/head.c:1046
+#, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s: колькаÑьць байтаў занадта вÑлікаÑ"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: немагчыма перамÑÑьціцца назад да зыходнага Ñтановішча"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: немагчыма перамÑÑьціцца да зруха %s"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr ""
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s такі вÑлікі, што немагчыма паказаць"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "колькаÑьць радкоў"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "колькаÑьць байтаў"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "недзеÑÐ·Ð´Ð¾Ð»ÑŒÐ½Ð°Ñ ÐºÐ¾Ð»ÑŒÐºÐ°Ñьць радкоў"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "недзеÑÐ·Ð´Ð¾Ð»ÑŒÐ½Ð°Ñ ÐºÐ¾Ð»ÑŒÐºÐ°Ñьць байтаў"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "нерÑчаіÑны парамÑтар -- %c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [ÐÐЗВÐ]\n"
+" ці: %s ВЫБÐР\n"
+"Друкуе ці ÑžÑталёўвае назву бÑгучага вузла(ÑÑ‹ÑÑ‚Ñмы).\n"
+"\n"
+
+#: src/hostname.c:103
+#, c-format
+msgid "cannot set name to %s"
+msgstr "немагчыма ÑžÑталÑваць назву %s"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr "немагчыма ÑžÑталÑваць назву вузла, ÑÑ‹ÑÑ‚Ñме бракуе функцыÑнальнаÑьці"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "немагчыма вызначыць назву вузла"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "ВыкарыÑтаньне: %s [ВЫБÐР]... [УЛІКОВÐЕ_ЙМЯ]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr ""
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr ""
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: такі карыÑтальнік Ð½Ñ Ð¹Ñнуе"
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "немагчыма атрымаць Ñ–Ð¼Ñ Ð´Ð»Ñ ID карыÑтальніка %u"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "немагчыма атрымаць назву Ð´Ð»Ñ ID групы %u"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "немагчыма атрымаць ÑÑŒÐ¿Ñ–Ñ Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ… групаў"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " групы="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr ""
+
+#: src/install.c:321
+#, fuzzy, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "%s: Ð·Ð°Ð´Ð°Ð½Ð°Ñ Ñ‚Ñчка мÑÑ‚Ñ‹ не зьÑўлÑецца Ñ‚Ñчкай"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "нерÑчаіÑны Ñ€Ñжым %s"
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "немагчыма зьмÑніць уладальніка %s"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "немагчыма ÑžÑталÑваць адбіткі чаÑу Ð´Ð»Ñ %s"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr ""
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr ""
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "Ð·Ð°Ð¿Ñ–Ñ Ñƒ %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "нерÑчаіÑны карыÑтальнік %s"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "Ñтвараецца Ñ‚Ñчка %s"
+
+#: src/install.c:651
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [ВЫБÐР]... ÐДКУЛЬ КУДЫ\n"
+" ці: %s [ВЫБÐР]... ÐДКУЛЬ... ТЭЧКÐ\n"
+" ці: %s [ВЫБÐР]... --target-directory=ТЭЧКРÐДКУЛЬ...\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+
+#: src/install.c:667
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" -a, --archive тое што й -dpR\n"
+" --backup[=CONTROL] Ñтварае запаÑную копію кожнага Ñ–Ñнуючага "
+"файлу\n"
+" прызначÑньнÑ\n"
+" -b Ñк --backup але не прымае довад\n"
+" --copy-contents капуе зьмеÑÑ‚ аÑабіÑÑ‚Ñ‹Ñ… файлаў, у выпадку\n"
+" Ñ€ÑкурÑÑ‹Ñ–\n"
+" -d тое ж, што й --no-dereference --"
+"preserve=link\n"
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+
+#: src/install.c:681
+#, fuzzy
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -s, --symbolic-link Ñтварае Ð·Ð½Ð°ÐºÐ°Ð²Ñ‹Ñ Ð»ÑƒÑ‡Ñ‹Ð²Ñ‹ замеÑÑ‚ капіÑваньнÑ\n"
+" -S, --suffix=КÐÐЧÐТÐК перазапіÑвае звычайны канчатак запаÑу\n"
+" --target-directory=ТЭЧКРперамÑшчае ÑžÑе довады КРЫÐІЦы Ñž ТЭЧКу\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+
+#: src/join.c:617 src/join.c:812
+#, c-format
+msgid "invalid field number: %s"
+msgstr "недзеÑздольны нумар полÑ: %s"
+
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "%s: нерÑчаіÑÐ½Ð°Ñ ÑпÑÑ†Ñ‹Ñ„Ñ–ÐºÐ°Ñ†Ñ‹Ñ Ð¿Ð¾Ð»Ñ \"%s\""
+
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "недзеÑÐ·Ð´Ð¾Ð»ÑŒÐ½Ð°Ñ ÑˆÑ‹Ñ€Ñ‹Ð½Ñ Ð¿Ð¾Ð»Ñ Ð½ÑƒÐ¼Ð°Ñ€Ð° радка: %s"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr "пуÑÑ‚Ð°Ñ Ñ‚Ð°Ð±ÑƒÐ»ÑцыÑ"
+
+#: src/join.c:870 src/sort.c:3031
+#, c-format
+msgid "multi-character tab %s"
+msgstr "шмат-байтавы знак табулÑцыі %s"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr ""
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "абодва файлы Ð½Ñ Ð¼Ð¾Ð³ÑƒÑ†ÑŒ быць Ñтандартным уводам"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [-s СЫГÐÐЛ | -СЫГÐÐЛ] PID...\n"
+" ці: %s -l [СЫГÐÐЛ]...\n"
+" ці: %s -t [СЫГÐÐЛ]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+" ДаÑылае Ñыгналы працÑÑам альбо ÑÑŒÐ¿Ñ–Ñ Ñыгналаў.\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: недзеÑздольны Ñыгнал"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: недзеÑздольны id-працÑÑу"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "нерÑчаіÑны парамÑтар -- %c"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: Ð·Ð°Ð´Ð°Ð½Ñ‹Ñ Ð½ÐµÐºÐ°Ð»ÑŒÐºÑ– Ñыгналаў"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr ""
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr ""
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr "незаданы ID працÑÑу"
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"ВыкарыÑтаньне: %s ФÐЙЛ1 ФÐЙЛ2\n"
+" ці: %s ВЫБÐР\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "немагчыма Ñтварыць ÑпаÑылку %s на %s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: жорÑÑ‚ÐºÑ–Ñ ÑпаÑылкі Ð´Ð»Ñ Ñ‚Ñчак не дазволены"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: немагчыма перазапіÑаць Ñ‚Ñчку"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: замÑніць %s? "
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "Ñтвараецца Ð·Ð½Ð°ÐºÐ°Ð²Ð°Ñ ÑпаÑылка %s на %s"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "Ñтвараецца Ð·Ð½Ð°ÐºÐ°Ð²Ð°Ñ ÑпаÑылка %s на %s"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "Ñтвараецца жоÑÑ‚ÐºÐ°Ñ ÑпаÑылка %s на %s"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "Ñтвараецца жоÑÑ‚ÐºÐ°Ñ ÑпаÑылка %s на %s"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "Ñтвараецца жоÑÑ‚ÐºÐ°Ñ ÑпаÑылка %s на %s"
+
+#: src/ln.c:324
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+
+#: src/ln.c:342
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" -a, --archive тое што й -dpR\n"
+" --backup[=CONTROL] Ñтварае запаÑную копію кожнага Ñ–Ñнуючага "
+"файлу\n"
+" прызначÑньнÑ\n"
+" -b Ñк --backup але не прымае довад\n"
+" --copy-contents капуе зьмеÑÑ‚ аÑабіÑÑ‚Ñ‹Ñ… файлаў, у выпадку\n"
+" Ñ€ÑкурÑÑ‹Ñ–\n"
+" -d тое ж, што й --no-dereference --"
+"preserve=link\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+
+#: src/ln.c:484
+#, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "Ðемагчыма ўжыць разам --target-directory Ñ– --no-target-directory"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "ВыкарыÑтаньне: %s [ПÐРÐМЭТÐР]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"Друкуе ўліковае Ñ–Ð¼Ñ Ð±Ñгучага карыÑтальніка.\n"
+"\n"
+
+#: src/logname.c:89
+#, c-format
+msgid "no login name"
+msgstr "нÑма ўліковага ймÑ"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%b %e %Y"
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%b %e %H:%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr ""
+"незаўважаецца нерÑчаіÑнае значÑньне зьменнай аÑÑÑ€Ð¾Ð´Ð·ÑŒÐ´Ð·Ñ QUOTING_STYLE: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr ""
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr ""
+"незаўважае незразумелы памер табулÑцыі Ñž пераменнай аÑÑÑ€Ð¾Ð´Ð·ÑŒÐ´Ð·Ñ TABSIZE: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "Ð½ÐµÐ·Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ»Ð°Ñ ÑˆÑ‹Ñ€Ñ‹Ð½Ñ Ñ€Ð°Ð´ÐºÐ°: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "незразумелы памер табулÑцыі: %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "незразумелы фармат Ñтылю чаÑу %s"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "нераÑÐ¿Ð°Ð·Ð½Ð°Ð½Ð°Ñ Ð¿Ñ€Ñ‹Ñтаўка: %s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr ""
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "немагчыма адчыніць Ñ‚Ñчку %s"
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr ""
+
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "%s: немагчыма перазапіÑаць Ñ‚Ñчку"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "чытаецца дырÑÐºÑ‚Ð¾Ñ€Ñ‹Ñ %s"
+
+#: src/ls.c:2410
+#, c-format
+msgid "closing directory %s"
+msgstr "зачынÑецца дырÑÐºÑ‚Ð¾Ñ€Ñ‹Ñ %s"
+
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "немагчыма параўнаць назвы файлаў %s і %s"
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"Выводзіць зьвеÑткі пра файл(Ñ‹) (зь бÑгучае дырÑкторыі, калі не зададзена "
+"іншае).\n"
+"Упарадкоўвае запіÑÑ‹ па алфавіту, калі нÑма -cftuSUX ці --sort.\n"
+"\n"
+
+#: src/ls.c:4285
+#, fuzzy
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all не хаваць запіÑÑ‹, што пачынаююца з .\n"
+" -A, --almost-all не выводзіьц . і ..\n"
+" --author друкаваць Ñтваральніка кожнага файла\n"
+" -b, --escape друкаваць ваÑьмÑÑ€Ñ‹Ñ‡Ð½Ñ‹Ñ Ð·Ð½Ð°Ñ‡Ñньні длÑ\n"
+" Ñлужбовых/неграфічных знакаў\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+#, fuzzy
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all уключыць Ñ„Ð°Ð¹Ð»Ð°Ð²Ñ‹Ñ ÑÑ‹ÑÑ‚Ñмы ÑÐºÑ–Ñ Ð¼Ð°ÑŽÑ†ÑŒ 0 блёкаў\n"
+" -B, --block-size=N выкарыÑтоўваць блёкі памерам N байтаў\n"
+" -h, --human-readable друкаваць памеры ў чалавека-чытальным фармаце\n"
+" (Ñк напрыклад, 1Кб, 234Мб, 2Гб)\n"
+" -H, --si гл. вышÑй, але выкарыÑтоўваць Ñтупені 1000 замеÑÑ‚ "
+"1024\n"
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+
+#: src/ls.c:4368
+#, fuzzy
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse адваротны парадак упарадкаваньнÑ\n"
+" -R, --recursive паказываць Ñ‚Ñчкі Ñ€ÑкурÑыўна\n"
+" -s, --size друаваць памер кожнага файла ў блёках\n"
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -w, --width=ШЫРЫÐЯ задае шырыню Ñкрану Ñž знаках\n"
+" -x паказываць запіÑÑ‹ па радкох а Ð½Ñ Ð¿Ð°Ñлупкох\n"
+" -X упарадкаваць па абÑцÑдзе ÑуфікÑаў файлаў\n"
+" -1 паказываць па файлу на радок\n"
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#: src/md5sum.c:150
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [ВЫБÐР] [ФÐЙЛ]...\n"
+" ці: %s [ВЫБÐР] --check [ФÐЙЛ]\n"
+"Друкуе ці правÑрае %s (%d-бітавую) праверчую Ñуму.\n"
+"Калі файл незаданы, ці калі замеÑÑ‚ Ñго працÑжнік, чытае Ñтандартны ўвод.\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+"\n"
+" -B, --binary выкарыÑтоўвае дваічны Ð·Ð°Ð¿Ñ–Ñ Ñƒ прыладу канÑолі.\n"
+"\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+#, fuzzy
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"Два наÑтупных выбара карыÑÐ½Ñ‹Ñ Ñ‚Ð¾Ð»ÑŒÐºÑ– тады, калі правÑраюцца Ð¿Ñ€Ð°Ð²ÐµÑ€Ñ‡Ñ‹Ñ Ñумы:\n"
+" --status нічога не выводзіць, код завÑршÑÐ½ÑŒÐ½Ñ Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼Ñ‹\n"
+" Ñьведчыць аб паÑьпÑховаÑьці праверкі\n"
+" -w, --warn паведамлÑць пра нÑÐ¿Ñ€Ð°Ð²Ñ–Ð»ÑŒÐ½Ñ‹Ñ Ñ€Ð°Ð´ÐºÑ– з праверчымі "
+"Ñумамі\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: зашмат радкоў з кантрольнымі Ñумамі"
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %<PRIuMAX>: Ð½Ñ Ð¿Ñ€Ð°Ð²Ñ–Ð»ÑŒÐ½Ð° Ñкладзены радок з кантрольнай Ñумай %s"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: немагчыма прачытаць файл\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "ПÐМЫЛКÐ"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "ДОБРÐ"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: памылка чытаньнÑ"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr ""
+
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] ""
+"УВÐГÐ! %<PRIuMAX> з %<PRIuMAX> пералічаных файлаў немагчыма прачытаць"
+msgstr[1] ""
+"УВÐГÐ! %<PRIuMAX> з %<PRIuMAX> пералічаных файлаў немагчыма прачытаць"
+msgstr[2] ""
+"УВÐГÐ! %<PRIuMAX> з %<PRIuMAX> пералічаных файлаў немагчыма прачытаць"
+
+#: src/md5sum.c:574
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "УВÐГÐ! %d з %d вылічаных %s ÐЕ СУПÐДÐЕ"
+msgstr[1] "УВÐГÐ! %d з %d вылічаных %s ÐЕ СУПÐДÐЕ"
+msgstr[2] "УВÐГÐ! %d з %d вылічаных %s ÐЕ СУПÐДÐЕ"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr ""
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "выбар --warn мае ÑÑÐ½Ñ Ñ‚Ð¾Ð»ÑŒÐºÑ– тады, калі параўноваюцца Ð¿Ñ€Ð°Ð²ÐµÑ€Ñ‡Ñ‹Ñ Ñумы"
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "ВыкарыÑтаньне: %s [ВЫБÐР] ТЭЧКР...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+" Стварае Ñ‚Ñчку(Ñ–), калі Ñны ÑˆÑ‡Ñ Ð½Ðµ йÑнуюць.\n"
+"\n"
+
+#: src/mkdir.c:67
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "Ñтворана Ñ‚Ñчка %s"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "ВыкарыÑтаньне: %s [ВЫБÐР] ÐÐЗВÐ...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"Стварае найменны канвÑер (fifo) з зададзенымі ÐÐЗВÐмі.\n"
+"\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "нерÑчаіÑны Ñ€Ñжым"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "ВыкарыÑтаньне: %s [ВЫБÐР]... ÐÐЗВРТЫП [ÐœÐЖОР МІÐОР]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+" Стварае адмыÑловы файз з заданымі назвай Ñ– відам.\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"калі Ñтвараюцца адмыÑÐ»Ð¾Ð²Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹, павінны быць заданыÑ\n"
+"мажорны й мінорны нумары прылады"
+
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "нерÑчаіÑны мінорны нумар прылады %s"
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "адмыÑÐ»Ð¾Ð²Ñ‹Ñ Ð±Ð»Ñ‘Ñ‡Ð½Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹ непадтрымліваюцца"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "адмыÑÐ»Ð¾Ð²Ñ‹Ñ Ð·Ð½Ð°ÐºÐ°Ð²Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹ непадтрымліваюцца"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "нерÑчаіÑны мажорны нумар прылады %s"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "нерÑчаіÑны мінорны нумар прылады %s"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "нерÑчаіÑÐ½Ð°Ñ Ð¿Ñ€Ñ‹Ð»Ð°Ð´Ð° %s %s"
+
+#: src/mknod.c:216
+#, c-format
+msgid "invalid device type %s"
+msgstr "нерÑчаіÑны від прылады %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+" Пераназывае крыніцу Ñž мÑту, ці перамÑшчае крыніцу(Ñ‹) Ñž Ñ‚Ñчку.\n"
+"\n"
+
+#: src/mv.c:297
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" -a, --archive тое што й -dpR\n"
+" --backup[=CONTROL] Ñтварае запаÑную копію кожнага Ñ–Ñнуючага "
+"файлу\n"
+" прызначÑньнÑ\n"
+" -b Ñк --backup але не прымае довад\n"
+" --copy-contents капуе зьмеÑÑ‚ аÑабіÑÑ‚Ñ‹Ñ… файлаў, у выпадку\n"
+" Ñ€ÑкурÑÑ‹Ñ–\n"
+" -d тое ж, што й --no-dereference --"
+"preserve=link\n"
+
+#: src/mv.c:303
+#, fuzzy
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --reply={yes,no,query} вызначае Ñк апрацоўваць паведамленьне пра\n"
+" Ñ–Ñнуючы файл прызначÑньнÑ\n"
+" --sparse=WHEN кантралюе ÑтварÑньне разрÑджаных файлаў\n"
+" --strip-trailing-slashes выдалÑе ÑžÑе цÑгнучыеÑÑ ÑкоÑÑ‹ з кожнага "
+"доваду\n"
+" КРЫÐІЦы\n"
+
+#: src/mv.c:308
+#, fuzzy
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" -u, --update капуе толькі калі файл КРЫÐІЦРнавешы за "
+"файл\n"
+" прызначÑньнÑ, ці файл прызначÑньне "
+"прапушчаны\n"
+" -v, --verbose пведамлÑе што ўжо зроблена\n"
+" -x, --one-file-system не пакідаць межы гÑтае файлавае ÑÑ‹ÑÑ‚Ñмы\n"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "ВыкарыÑтаньне: %s [ПÐРÐМЭТÐР] [ЗÐГÐД [ДОВÐД]...]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+"Выконвае ЗÐГÐД Ñа зьмененым значÑньнем niceness, што ўзьдзейнічае\n"
+"на раÑклад Ð²Ñ‹ÐºÐ°Ð½Ð°Ð½ÑŒÐ½Ñ (прыÑрытÑÑ‚) працÑÑу.\n"
+"Калі ЗÐГÐД адÑутнічае, друкуе бÑгучае значÑньне niceness. ЗначÑньні\n"
+"niceness вагаюцца ад\n"
+"%d (найбольш прыÑрытÑтны) да %d (найменш прыÑрытÑтны).\n"
+"\n"
+" -n, --adjustment=N дадаць цÑлы N да niceness (прадвызначана 10)\n"
+
+#: src/nice.c:155
+#, c-format
+msgid "invalid adjustment %s"
+msgstr "нерÑчаіÑнае значÑньне %s"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "загад муÑіць быць зададзены разам Ñа значÑньнем прыÑрытÑту"
+
+#: src/nice.c:171 src/nice.c:182
+#, c-format
+msgid "cannot get niceness"
+msgstr "немагчыма атрымаць значÑньне niceness"
+
+#: src/nice.c:186
+#, c-format
+msgid "cannot set niceness"
+msgstr "немагчыма ÑžÑталÑваць значÑньне niceness"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+
+#: src/nl.c:214
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:281
+#, c-format
+msgid "line number overflow"
+msgstr "перапаўненьне колькаÑьці радкоў"
+
+#: src/nl.c:479
+#, c-format
+msgid "invalid header numbering style: %s"
+msgstr "нерÑчаіÑны Ñтыль Ð½ÑƒÐ¼Ð°Ñ€Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ð·Ð°Ð³Ð°Ð»Ð¾ÑžÐºÑƒ: %s"
+
+#: src/nl.c:487
+#, c-format
+msgid "invalid body numbering style: %s"
+msgstr "нерÑчаіÑны Ñтыль Ð½ÑƒÐ¼Ð°Ñ€Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ñ†ÐµÐ»Ð°: %s"
+
+#: src/nl.c:495
+#, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "нерÑчаіÑны Ñтыль Ð½ÑƒÐ¼Ð°Ñ€Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ð¿Ð°Ð´Ð²Ð°Ð»Ñƒ: %s"
+
+#: src/nl.c:504
+#, c-format
+msgid "invalid starting line number: %s"
+msgstr "нерÑчаіÑны нумар пачатковага радка: %s"
+
+#: src/nl.c:513
+#, c-format
+msgid "invalid line number increment: %s"
+msgstr "недзеÑздольнае значÑньне павелічÑÐ½ÑŒÐ½Ñ Ð½ÑƒÐ¼Ð°Ñ€Ñƒ радка: \"%s\""
+
+#: src/nl.c:525
+#, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "недзеÑÐ·Ð´Ð¾Ð»ÑŒÐ½Ð°Ñ ÐºÐ¾Ð»ÑŒÐºÐ°Ñьць чыÑÑ‚Ñ‹Ñ… радокоў: %s"
+
+#: src/nl.c:539
+#, c-format
+msgid "invalid line number field width: %s"
+msgstr "недзеÑÐ·Ð´Ð¾Ð»ÑŒÐ½Ð°Ñ ÑˆÑ‹Ñ€Ñ‹Ð½Ñ Ð¿Ð¾Ð»Ñ Ð½ÑƒÐ¼Ð°Ñ€Ð° радка: %s"
+
+#: src/nl.c:558
+#, c-format
+msgid "invalid line numbering format: %s"
+msgstr "нерÑчаіÑны фармат Ð½ÑƒÐ¼Ð°Ñ€Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ñ€Ð°Ð´ÐºÐ¾Ñž: %s"
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"ВыкарыÑтаньне: %s ЗÐГÐД [ДОВÐД]...\n"
+" ці: %s ВЫБÐР\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+" Выконвае загад, незаўважаючы Ñыгналы HUP.\n"
+"\n"
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "на ÑžÑе довады не зьвÑртаецца ўвага"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr "немагчыма адчыніць %s"
+
+#: src/nohup.c:161
+#, fuzzy, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "далучÑньне вываду да %s"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr "немагчыма перанакіраваць Ñтандартны вывад памылак"
+
+#: src/od.c:307
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [ВЫБÐР]... [ФÐЙЛ]...\n"
+" ці: %s --traditional [ФÐЙЛ] [[+]ВОДСТУП [[+]ÐДМЕЦІÐÐ]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr "УÑе довады Ð´Ð»Ñ Ð´Ð¾ÑžÐ³Ñ–Ñ… выбараў абавÑзковы й Ð´Ð»Ñ ÐºÐ°Ñ€Ð¾Ñ‚ÐºÑ–Ñ….\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:353
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+
+#: src/od.c:683 src/od.c:802
+#, c-format
+msgid "invalid type string %s"
+msgstr "недзеÑздольны радок тыпу %s"
+
+#: src/od.c:693
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"нерÑчаіÑны від радка \"%s\";\n"
+"ÑÑ‹ÑÑ‚Ñма не прадаÑтаўлÑе %lu-байтны цÑлы тып"
+
+#: src/od.c:812
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"нерÑчаіÑны від радка \"%s\";\n"
+"ÑÑ‹ÑÑ‚Ñма не прадаÑтаўлÑе %lu-байтны цÑлы тып"
+
+#: src/od.c:871
+#, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "нерÑчаіÑны знак \"%c\" у радку тыпу \"%s\""
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr ""
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "абінуць довад"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "абмежаваць довад"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "Ð½Ð°Ð¹Ð¼ÐµÐ½ÑŒÑˆÐ°Ñ Ð´Ð°ÑžÐ¶Ñ‹Ð½Ñ Ñ€Ð°Ð´ÐºÐ°"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "ÑпÑÑ†Ñ‹Ñ„Ñ–ÐºÐ°Ñ†Ñ‹Ñ ÑˆÑ‹Ñ€Ñ‹Ð½Ñ–"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr ""
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr ""
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr ""
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "Увага! ÐерÑчаіÑÐ½Ð°Ñ ÑˆÑ‹Ñ€Ñ‹Ð½Ñ %lu; выкарыÑтоўвайце %d замеÑÑ‚ Ñе"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: фармат=\"%s\" шырынÑ=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "Ñтандартны вывад зачынены"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "ВыкарыÑтаньне: %s [ВЫБÐР]... ÐÐЗВÐ...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "нерÑчаіÑны знак %s у радку Ñ€Ñжыму %s"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr "Ð½Ñ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð° назва файла"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Уліковае ймÑ:"
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "У ÑапраўднаÑьці:"
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "ТÑчка: "
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Ðбалонка:"
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "ПражÑкт:"
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "ПлÑн:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "ІмÑ"
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr "Ðазва"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr " ТÑрмінал"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "ДарÑмна"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Калі"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Дзе"
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "ВыкарыÑтаньне: %s [ВЫБÐР]... [КÐРЫСТÐЛЬÐІК]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+"\n"
+"Ð¡Ð¿Ñ€Ð¾ÑˆÑ‡Ð°Ð½Ð°Ñ Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼Ð° \"finger\"; друкуе зьвеÑткі пра карыÑтальніка.\n"
+"Файлам utmp будзе %s.\n"
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr ""
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr ""
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr ""
+
+#: src/pr.c:916
+#, c-format
+msgid "Invalid page range %s"
+msgstr "ÐедзеÑздольны прамежак Ñтаронак %s"
+
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "\"-W ШЫРЫÐЯ_СТÐРОÐКІ\" нерÑчаіÑÐ½Ð°Ñ ÐºÐ¾Ð»ÑŒÐºÐ°Ñьць знакаў: %s"
+
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "нерÑчаіÑны нумар пачатковага радка: %s"
+
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "Ð½ÐµÐ·Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ»Ð°Ñ ÑˆÑ‹Ñ€Ñ‹Ð½Ñ Ñ€Ð°Ð´ÐºÐ°: %s"
+
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "\"-w ШЫРЫÐЯ_СТÐРОÐКІ\" нерÑчаіÑÐ½Ð°Ñ ÐºÐ¾Ð»ÑŒÐºÐ°Ñьць знакаў: %s"
+
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "\"-W ШЫРЫÐЯ_СТÐРОÐКІ\" нерÑчаіÑÐ½Ð°Ñ ÐºÐ¾Ð»ÑŒÐºÐ°Ñьць знакаў: %s"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr ""
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr ""
+
+#: src/pr.c:1202
+#, fuzzy, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "\"-%c\" Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ Ð·Ð½Ð°Ñ†Ñ– ці нерÑчаіÑны нумар у довадзе: \"%s\""
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "ÑˆÑ‹Ñ€Ñ‹Ð½Ñ Ñтаронкі занадта вузкаÑ"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2406
+#, c-format
+msgid "Page number overflow"
+msgstr ""
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+" ПадзÑлÑе файл(Ñ‹) на Ñтаронкі ці Ñлупкі Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÑƒ.\n"
+"\n"
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr ""
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [ПЕРÐМЕÐÐÐЯ]...\n"
+" ці: %s ВЫБÐР\n"
+"Калі ПЕРÐМЕÐÐÐЯ незададзена, друкуе Ñ–Ñ… уÑе.\n"
+"\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"ВыкарыÑтаньне: %s ФÐРМÐТ [ДОВÐД]...\n"
+" ці: %s ВЫБÐР\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+" Друкуе довад(Ñ‹) ÑуадноÑна фармату.\n"
+"\n"
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n Ðовы радок.\n"
+" \\r Ð’Ñртаньне карÑткі.\n"
+" \\t Ð“Ð°Ñ€Ñ‹Ð·Ð°Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð°Ð±ÑƒÐ»ÑцыÑ.\n"
+" \\v Ð’ÑÑ€Ñ‚Ñ‹ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð°Ð±ÑƒÐ»ÑцыÑ.\n"
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: чакаецца лічбавае значÑньне"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: значÑньне цалка не пераўтворана"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr ""
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "нерÑчаіÑÐ½Ð°Ñ Ð½Ð°Ð·Ð²Ð° ўнівÑÑ€Ñальнага знаку \\%c%0*x"
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr "недзеÑÐ·Ð´Ð¾Ð»ÑŒÐ½Ð°Ñ ÑˆÑ‹Ñ€Ñ‹Ð½Ñ Ñ€Ð°Ð´ÐºÐ°: %s"
+
+#: src/printf.c:585
+#, c-format
+msgid "invalid precision: %s"
+msgstr "нерÑчаіÑÐ½Ð°Ñ Ð´Ð°ÐºÐ»Ð°Ð´Ð½Ð°Ñьць: %s"
+
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%s: нерÑчаіÑÐ½Ð°Ñ ÑпÑÑ†Ñ‹Ñ„Ñ–ÐºÐ°Ñ†Ñ‹Ñ Ð¿Ð¾Ð»Ñ \"%s\""
+
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "увага: ігнаруецца лішак довадаў пачынаючы з %s"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr ""
+
+#: src/ptx.c:422
+#, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (Ð´Ð»Ñ Ñталага выразу %s)"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [ВЫБÐР]... [УВОД]... (без -G)\n"
+" ці: %s -G [ВЫБÐР]... [УВОД [ВЫВÐД]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+
+#: src/ptx.c:2016
+#, c-format
+msgid "invalid gap width: %s"
+msgstr "нерÑчаіÑÐ½Ð°Ñ ÑˆÑ‹Ñ€Ñ‹Ð½Ñ Ð¿Ñ€Ð°Ð¼ÐµÐ¶ÐºÑƒ: %s"
+
+#: src/ptx.c:2089
+#, fuzzy, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr "парамÑтар --reply аÑуджаны; выкарыÑтоўваеце замеÑÑ‚ Ñго -i альбо -f"
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+" Друкуе поўную назву бÑгучае Ñ‚Ñчкі.\n"
+"\n"
+
+#: src/pwd.c:160
+#, c-format
+msgid "failed to chdir to %s"
+msgstr "збой chdir у %s"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, c-format
+msgid "failed to stat %s"
+msgstr "збой stat %s"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "незаўважаюцца довады, ÑÐºÑ–Ñ Ð½Ðµ зьўлÑюцца выбарамі"
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "ВыкарыÑтаньне: %s [ВЫБÐР]... ФÐЙЛ\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+"ÐдлюÑтроўвае значÑньне знакавага лучыва Ñž Ñтандартны вывад.\n"
+"\n"
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "збой chdir у %s"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "немагчыма адчыніць Ñ‚Ñчку %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, fuzzy, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "%s зьмÑніў dev/ino"
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "немагчыма Ñтварыць Ñ‚Ñчку %s"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr ""
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr ""
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: выдаліць абаронены ад запіÑу %s %s? "
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: выдаліць %s %s? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "Ñ‚Ñчка выдалена: %s\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "збой chdir у %s"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "немагчыма выдаліць Ñ‚Ñчку %s"
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr ""
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "немагчыма выдаліць Ñ‚Ñчку %s"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "немагчыма выдаліць Ñ‚Ñчку %s"
+
+#: src/remove.c:1558
+#, c-format
+msgid "cannot restore current working directory"
+msgstr "немагчыма аднавіць бÑгучую працоўную дырÑкторыю"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "ВыкарыÑтаньне: %s [ВЫБÐР]... ФÐЙЛ...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"ВыдалÑе файлы, ÑÐºÑ–Ñ Ð¿Ð°Ñ‡Ñ‹Ð½Ð°ÑŽÑ†Ñ†Ð° з `-', напраклад `-foo', выкарыÑтоўвайце\n"
+"адзін з наÑтупных загадаў:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+" Ðдзначце, што калі Ð’Ñ‹ выкарыÑтоўваеце rm Ð´Ð»Ñ Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½ÑŒÐ½Ñ Ñ„Ð°Ð¹Ð»Ð°, звычайна "
+"Ñ–Ñнуе магчымаÑьць аднавіць зьмеÑÑ‚ гÑтага файла. Калі Ð’Ñ‹ жадаеце большае\n"
+"ўпÑўненаÑьці, што зьмеÑÑ‚ фала нельга аднавіць, разгледзьце выкарыÑтаньне "
+"shred.\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: выдаліць %s %s? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "выдалÑецца Ñ‚Ñчка, %s"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "ВыкарыÑтаньне: %s [ВЫБÐР]... ТЭЧКР...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+
+#: src/rmdir.c:148
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [ВЫБÐР]... ÐПОШÐІ\n"
+" ці: %s [ВЫБÐР]... ПЕРШЫ ÐПОШÐІ\n"
+" ці: %s [ВЫБÐР]... ПЕРШЫ ПРЫРОСТ ÐПОШÐІ\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+
+#: src/seq.c:88
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr ""
+
+#: src/seq.c:342
+#, c-format
+msgid "invalid format string: %s"
+msgstr "нерÑчаіÑны радок фармату: %s"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr ""
+
+#: src/setuidgid.c:51
+#, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"ВыкарыÑтаньне: %s УЛІКОВÐЕ_ЙМЯ ЗÐГÐД [ДОВÐД]...\n"
+" ці: %s ВЫБÐР\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr "невÑдомы ID карыÑтальніка: %s"
+
+#: src/setuidgid.c:109
+#, c-format
+msgid "cannot set supplemental group"
+msgstr "немагчыма ÑžÑталÑваць дадатковую групу"
+
+#: src/setuidgid.c:114
+#, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "немагчыма задаць ID групы Ð´Ð»Ñ %lu"
+
+#: src/setuidgid.c:118
+#, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "немагчыма выÑтавіць ID карыÑтальніка Ñž %lu"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "ВыкарыÑтаньне: %s [ВЫБÐРЫ] ФÐЙЛ [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr "%s: збой fdatasync"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr "%s: збой fsync"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr ""
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: праход %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s: памылка запіÑу Ð»Ñ Ð²Ð¾Ð´Ñтупа %s"
+
+#: src/shred.c:478
+#, c-format
+msgid "%s: lseek failed"
+msgstr "%s: збой lseek"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s: файл занадта вÑлікі"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: праход %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr ""
+
+#: src/shred.c:776
+#, c-format
+msgid "%s: fstat failed"
+msgstr "%s: збой fstat"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: нерÑчаіÑны від файла"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: файл мае адмоўны памер"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s: памылка абрÑзаньнÑ"
+
+#: src/shred.c:889
+#, c-format
+msgid "%s: fcntl failed"
+msgstr "%s: збой fcntl"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr ""
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: выдаленьне"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: перайменаваны ў %s"
+
+#: src/shred.c:1018
+#, c-format
+msgid "%s: failed to remove"
+msgstr "%s: немагчыма выдаліць"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: выдален"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, c-format
+msgid "%s: failed to close"
+msgstr "%s: немагчыма зачыніць"
+
+#: src/shred.c:1065
+#, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: немагчыма адчыніць Ð´Ð»Ñ Ð·Ð°Ð¿Ñ–Ñу"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: Ð½ÐµÐ·Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ»Ð°Ñ ÐºÐ¾Ð»ÑŒÐºÐ°Ñьць праходаў"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "зададзены некалькі фарматаў вываду"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: нерÑчаіÑны памер файла"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [ВЫБÐР]... ÐПОШÐІ\n"
+" ці: %s [ВЫБÐР]... ПЕРШЫ ÐПОШÐІ\n"
+" ці: %s [ВЫБÐР]... ПЕРШЫ ПРЫРОСТ ÐПОШÐІ\n"
+
+#: src/shuf.c:57
+#, fuzzy
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"ЗапіÑвае зьвÑз упарадкаваных ФÐЙЛаў на Ñтандартны вывад.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "Ð·Ð°Ð´Ð°Ð½Ñ‹Ñ ÑˆÐ¼Ð°Ñ‚Ð»Ñ–ÐºÑ–Ñ Ñ„Ð°Ð¹Ð»Ñ‹ вываду"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "нерÑчаіÑны ÑьцÑг уводу: %s"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "Ð½ÐµÐ·Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ»Ð°Ñ ÑˆÑ‹Ñ€Ñ‹Ð½Ñ Ñ€Ð°Ð´ÐºÐ°: %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr "Ð·Ð°Ð´Ð°Ð½Ñ‹Ñ ÑˆÐ¼Ð°Ñ‚Ð»Ñ–ÐºÑ–Ñ Ñ„Ð°Ð¹Ð»Ñ‹ вываду"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "немагчыма ÑумÑÑьціць Ñ€Ñжым Ñ– парамÑтры --reference"
+
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr "непатрÑбны аргумÑнт %s"
+
+#: src/sleep.c:47
+#, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+
+#: src/sleep.c:138
+#, c-format
+msgid "invalid time interval %s"
+msgstr "нерÑчаіÑны адрÑзак чаÑу %s"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "немагчыма прачытаць гадзіньнік Ñ€Ñальнага чаÑу"
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"ЗапіÑвае зьвÑз упарадкаваных ФÐЙЛаў на Ñтандартны вывад.\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+"ПарамÑтры ўпарадкаваньнÑ:\n"
+"\n"
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+
+#: src/sort.c:326
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -z, --zero-terminated ЗавÑршаць радкі байтам 0, а Ð½Ñ Ð½Ð¾Ð²Ñ‹Ð¼ радком.\n"
+
+#: src/sort.c:363
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "Ð·Ð°Ð¿Ñ–Ñ Ñƒ %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "немагчыма Ñтварыць чаÑовы файл"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "памылка адкрыцьцÑ"
+
+#: src/sort.c:758
+msgid "fflush failed"
+msgstr "збой fflush"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "памылка закрыцьцÑ"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "памылка адкрыцьцÑ"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr ""
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "немагчыма Ñтварыць чаÑовы файл"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "немагчыма Ñтварыць чаÑовы файл"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr ""
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "немагчыма Ñтварыць Ñ‚Ñчку %s"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "памылка запіÑу"
+
+#: src/sort.c:975
+#, c-format
+msgid "warning: cannot remove: %s"
+msgstr "увага: немагчыма выдаліць: %s"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr ""
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "збой пачатку"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "памылка чытаньнÑ"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: бÑзладдзе: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "Ñтандартны вывад памылак"
+
+#: src/sort.c:2562
+#, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: нерÑчаіÑнае вызначÑньне Ð¿Ð¾Ð»Ñ %s"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: нерÑчаіÑны падлік на пачатку %s"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "нерÑчаіÑÐ½Ð°Ñ Ð»Ñ–Ñ‡Ð±Ð° паÑÑŒÐ»Ñ \"-\""
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "нерÑчаіÑÐ½Ð°Ñ Ð»Ñ–Ñ‡Ð±Ð° паÑÑŒÐ»Ñ \".\""
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr ""
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "зададзены некалькі фарматаў вываду"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr ""
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr ""
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr ""
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "нерÑчаіÑÐ½Ð°Ñ Ð»Ñ–Ñ‡Ð±Ð° паÑÑŒÐ»Ñ \",\""
+
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "непатрÑбны аргумÑнт %s"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "ВыкарыÑтаньне: %s [ВЫБÐР] [УВОД [ПРЫСТÐЎКÐ]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr ""
+
+#: src/split.c:211
+#, c-format
+msgid "creating file %s\n"
+msgstr "ÑтварÑньне файла %s\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr ""
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr ""
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: нерÑчаіÑÐ½Ð°Ñ ÐºÐ¾Ð»ÑŒÐºÐ°Ñьць байтаў"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: нерÑчаіÑÐ½Ð°Ñ ÐºÐ¾Ð»ÑŒÐºÐ°Ñьць радкоў"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr ""
+
+#: src/split.c:518
+#, c-format
+msgid "invalid number of lines: 0"
+msgstr "недзеÑÐ·Ð´Ð¾Ð»ÑŒÐ½Ð°Ñ ÐºÐ¾Ð»ÑŒÐºÐ°Ñьць радкоў: 0"
+
+#: src/stat.c:636
+#, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "увага!: нераÑпазнаны парамÑтар \"\\%c\""
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%s%s: нерÑчаіÑÐ½Ð°Ñ Ð´Ñ‹Ñ€Ñктыва"
+
+#: src/stat.c:726
+#, c-format
+msgid "warning: backslash at end of format"
+msgstr ""
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr "немагчыма прачытаць зьвеÑткі файлавае ÑÑ‹ÑÑ‚Ñмы Ð´Ð»Ñ %s"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "ВыкарыÑтаньне: %s [ВЫБÐР] ФÐЙЛ...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr "толькі адна прылада можа быць пазначана"
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr ""
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr ""
+
+#: src/stty.c:885 src/stty.c:995
+#, c-format
+msgid "invalid argument %s"
+msgstr "нерÑчаіÑны довад %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, c-format
+msgid "missing argument to %s"
+msgstr "прапушчаны довад Ð´Ð»Ñ %s"
+
+#: src/stty.c:976
+#, c-format
+msgid "invalid line discipline %s"
+msgstr "нерÑчаіÑÐ½Ð°Ñ Ð´Ñ‹Ñцыпліна лініі %s"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr ""
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "new_mode: Ñ€Ñжым\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: нÑма зьвеÑтак пра памеры Ð´Ð»Ñ Ð³Ñтае прылады"
+
+#: src/stty.c:1888
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "кепÑкі цÑлы довад %s"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Пароль:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: немагчыма адчыніць /dev/tty"
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "немагчыма ÑžÑталÑваць групы"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "немагчыма ÑžÑталÑваць id групы"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "немагчыма ÑžÑталÑваць id карыÑтальніка"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "ВыкарыÑтаньне: %s [ПÐРÐМЭТÐР]... [-] [КÐРЫСТÐЛЬÐІК [ДОВÐД]...]\n"
+
+#: src/su.c:386
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "карыÑтальнік %s не Ñ–Ñнуе"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "нÑÑлушны пароль"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "выкарыÑтоўваецца Ð°Ð±Ð¼ÐµÐ¶Ð°Ð²Ð°Ð½Ð°Ñ Ð°Ð±Ð°Ð»Ð¾Ð½ÐºÐ° %s"
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "Увага! Ðемагчыма перайÑьці да Ñ‚Ñчкі %s"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Друкуе ÐºÐ°Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ñ‹Ñ Ñумы й колькаÑьць блёкаў Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð°Ð³Ð° ФÐЙЛÐ.\n"
+"\n"
+" -r перакрывае -s, выкарыÑтоўваць альгарытм BSD Ñ– блёкі Ñž 1 "
+"Кб\n"
+" -s, --sysv выкарыÑтоўваць альгарытм System V Ñ– блёкі Ñž 512 байтаў\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+" Вымагае запіÑу ÑžÑÑ–Ñ… зьмененых блёкаў на дыÑк Ñ– абнаўленьне ÑупÑрблёка.\n"
+"\n"
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "на ÑžÑе довады не зьвÑртаецца ўвага"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+"\n"
+"ЗÐÐŽÐ’ÐГÐ! Ваш інтÑрпрÑтатар загадаў можа мець улаÑную вÑÑ€ÑÑ–ÑŽ %s, ÑкаÑ,\n"
+"звычайна, замÑнÑе вÑÑ€ÑÑ–ÑŽ, што апіÑана тутака. Калі лаÑка, зьвÑрніцеÑÑ Ð´Ð°\n"
+"дакумÑнтацыі вашага інтÑрпрÑтатара загадаў, каб даведацца аб парамÑтрах,\n"
+"ÑÐºÑ–Ñ Ñ‘Ð½ падтрымлівае.\n"
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help паказвае гÑтую даведку\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version выводзіць зьвеÑткі пра вÑÑ€ÑÑ–ÑŽ\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"ЗапіÑвае кожны ФÐЙЛ Ñž Ñтандартны вывад з апошнÑга па першы радок.\n"
+"Калі ФÐЙЛ не зададзне альбо зададзены -, чытае Ñтандартны ўвод.\n"
+"\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+
+#: src/tac.c:236 src/tac.c:337
+#, c-format
+msgid "%s: seek failed"
+msgstr "%s: збой seek"
+
+#: src/tac.c:265
+#, c-format
+msgid "record too large"
+msgstr "Ð·Ð°Ð¿Ñ–Ñ Ð·Ð°Ð²Ñлікі"
+
+#: src/tac.c:459
+#, c-format
+msgid "cannot create temporary file %s"
+msgstr "немагчыма Ñтварыць чаÑовы файл %s"
+
+#: src/tac.c:466
+#, c-format
+msgid "cannot open %s for writing"
+msgstr "немагчыма адчыніць %s Ð´Ð»Ñ Ð·Ð°Ð¿Ñ–Ñу"
+
+#: src/tac.c:487 src/tac.c:494
+#, c-format
+msgid "%s: write error"
+msgstr "%s: памылка запіÑу"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "падзÑлÑльнік павінен нешта ўтрымліваць"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tail.c:229
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+
+#: src/tail.c:244
+#, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "зачынÑецца %s (fd=%d)"
+
+#: src/tail.c:411
+#, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: немагчыма перамÑÑьціцца да адноÑнага зруху %s"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr ""
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr "%s Ñтаў недаÑтупны"
+
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr "%s быў заменены на небÑÑконцы файл; апрацоўка гÑтага файла Ñпынена"
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr "%s Ñтаў даÑтупны"
+
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr ""
+
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr ""
+
+#: src/tail.c:1025
+#, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: немагчыма зьмÑніць незаблÑкаваны Ñ€Ñжым"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: файл абрÑзаны"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "не заÑталоÑÑ Ð±Ð¾Ð»ÑŒÑˆ файла"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+
+#: src/tail.c:1439
+#, c-format
+msgid "number in %s is too large"
+msgstr "нумар у %s завÑлікі"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr ""
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: нерÑчаіÑны PID"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: нерÑчаіÑÐ½Ð°Ñ ÐºÐ¾Ð»ÑŒÐºÐ°Ñьць ÑÑкундаў"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr ""
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "увага: --pid=PID не падтрымліваецца на гÑтае ÑÑ‹ÑÑ‚Ñме"
+
+#: src/tail.c:1667
+#, c-format
+msgid "cannot follow %s by name"
+msgstr "немагчыма крочыць за %s па назве"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"ПерапіÑвае Ñтандартны ўвод у кожны ФÐЙЛ, а такÑама Ñž Ñтандартны вывад.\n"
+"\n"
+" -a, --append Дадае да ФÐЙЛаў (не перазапіÑвае Ñ–Ñ…).\n"
+" -i, --ignore-interrupts Ðе зьвÑртае ўвагі на Ñыгнал ÑпыненьнÑ.\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Калі ФÐЙЛ -, капіюе зноў на Ñтандартны ўвод.\n"
+
+#: src/test.c:125
+#, c-format
+msgid "missing argument after %s"
+msgstr "прапушчаны довад паÑÑŒÐ»Ñ %s"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "зададзены Ð½Ñ Ñ†Ñлы лік %s\n"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "')' чакаецца\n"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "')' чакаецца, знойдзен %s\n"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: чакаецца ўнарны апÑратар\n"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "-nt не прыймае -l\n"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "-ef не праймае -l\n"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "-ot не прыймае -д\n"
+
+#: src/test.c:368
+#, fuzzy
+msgid "unknown binary operator"
+msgstr "невÑдомы двайковы дзейнік\n"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: чакаецца бінарны апÑратар\n"
+
+#: src/test.c:694
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"ВыкарыÑтаньне: test ВЫРÐЗ\n"
+" альбо: test\n"
+" альбо: [ ВЫРÐЗ ]\n"
+" альбо: [ ]\n"
+" альбо: [ ПÐРÐМЭТÐР\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"ЗавÑршае працу з кодам вÑртаньнÑ, Ñкі вызначаецца ВЫРÐЗÐÐœ.\n"
+"\n"
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+" -L ФÐЙЛ ФÐЙЛ Ñ–Ñнуе, зьÑўлÑецца Ñымбалічнай ÑпаÑылкай (тое, што й -h)\n"
+" -O ФÐЙЛ ФÐЙЛ Ñ–Ñнуе, Ñ– ім валодае карыÑтальнік з ÑÑ„Ñктыўным ID "
+"карыÑтальніка\n"
+" -p ФÐЙЛ ФÐЙЛ Ñ–Ñнуе, зьÑўлÑецца найменным канвÑерам\n"
+" -r ФÐЙЛ ФÐЙЛ Ñ–Ñнуе, маюцца правы на Ñго чытаньне\n"
+" -s ФÐЙЛ ФÐЙЛ Ñ–Ñнуе, Ñго памер большы за нуль\n"
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr "test і/альбо ["
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "прапушчаны \"]\"\n"
+
+#: src/test.c:846
+#, c-format
+msgid "extra argument %s"
+msgstr "дадатковы довад %s"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "нерÑчаіÑны фармат даты %s"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "Ñтвараецца %s"
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr "немагчыма дакрануцца да %s"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "уÑталÑваньне чаÑу %s"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+" ÐбнаўлÑе Ñ‡Ð°Ñ Ð´Ð¾Ñтупу й зьмÑÐ½ÐµÐ½ÑŒÐ½Ñ ÐºÐ¾Ð¶Ð½Ð°Ð³Ð° ФÐЙЛа да бÑгучага чаÑу.\n"
+"\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a ЗьмÑніць толькі Ñ‡Ð°Ñ Ð´Ð¾Ñтупу.\n"
+" -c, --no-create Ðе Ñтвараць ніÑкіх файлаў.\n"
+" -d, --date=РÐДОК СкарыÑтаць РÐДОК у ÑкаÑьці бÑгучага чаÑу.\n"
+" -f (не заўважаецца)\n"
+" -m ЗьмÑнÑць толькі Ñ‡Ð°Ñ Ð·ÑŒÐ¼ÑненьнÑ.\n"
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"Зазначце, што парамÑтры -d Ñ– -t ужываюць Ñ€Ð¾Ð·Ð½Ñ‹Ñ Ñ„Ð°Ñ€Ð¼Ð°Ñ‚Ñ‹ чаÑу.\n"
+"\n"
+"Калі ФÐЙЛ -, дакранаецца да Ñтандартнага вываду.\n"
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "немагчыма вызначыць Ñ‡Ð°Ñ Ð±Ð¾Ð»ÑŒÑˆ чым з адной крыніцы"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+"увага: \"touch %s\" зьÑўлÑеца ÑžÑтарÑлым; карыÑтайцеÑÑ\"touch -t %04ld%02d%02d"
+"%02d%02d.%02d\""
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "ВыкарыÑтаньне: %s [ВЫБÐР]... ÐœÐОСТВÐ1 [ÐœÐОСТВÐ2]\n"
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+
+#: src/tr.c:519
+#, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr ""
+
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr ""
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr ""
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr ""
+
+#: src/tr.c:937
+#, c-format
+msgid "invalid character class %s"
+msgstr "недзеÑÐ·Ð´Ð¾Ð»ÑŒÐ½Ð°Ñ ÐºÐ»ÑÑа знака %s"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr ""
+
+#: src/tr.c:1275
+#, c-format
+msgid "too many characters in set"
+msgstr "зашмат знакаў у знакавым мноÑтве"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr ""
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr ""
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr ""
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr ""
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr ""
+
+#: src/tr.c:1731
+msgid "Two strings must be given when translating."
+msgstr ""
+
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr ""
+
+#: src/true.c:42
+#, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [довады загаднага радка ігнаруюцца]\n"
+" альбо: %s ПÐРÐМЭТÐР\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tsort.c:474
+#, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: увод утрымлівае нÑцотную колькаÑьць ÑлемÑнтаў"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: увод утрымлівае цыкал:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "ВыкарыÑтаньне: %s [ПÐРÐМЭТÐР]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "гÑта не Ñ‚Ñрмінал"
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Друкуе пÑÑžÐ½Ñ‹Ñ Ð·ÑŒÐ²ÐµÑткі пра ÑÑ‹ÑÑ‚Ñму. Выклік без ПÐРÐМЭТРа \n"
+"раўназначны выкліку з парамÑтрам -s.\n"
+"\n"
+" -a, --all друкуе ÑžÑе зьвеÑткі Ñž наÑтупным парадку,\n"
+" за выключÑньнем пропуÑку -p Ñ– -i, калі "
+"невÑдома:\n"
+" -s, --kernel-name друкуе назву Ñдра\n"
+" -n, --nodename друкуе назву вузла Ñеткі\n"
+" -r, --kernel-release друкуе назву выпуÑку Ñдра\n"
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v, --kernel-version друкуе вÑÑ€ÑÑ–ÑŽ Ñдра\n"
+" -m, --machine друкуе апаратную назву кампутара\n"
+" -p, --processor друкуе тып працÑÑара альбо \"невÑдома\"\n"
+" -i, --hardware-platform друкуе назву плÑтформы альбо \"невÑдома\"\n"
+" -o, --operating-system друкуе назву апÑрацыйнае ÑÑ‹ÑÑ‚Ñмы\n"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "немагчыма атрымаць назву ÑÑ‹ÑÑ‚Ñмы"
+
+#: src/unexpand.c:125
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, c-format
+msgid "tab stop value is too large"
+msgstr "крок табулÑцыі завÑлікі"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "ВыкарыÑтаньне: %s [ПÐРÐМЭТÐР]... [УВОД [ВЫВÐД]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+
+#: src/uniq.c:350
+#, c-format
+msgid "too many repeated lines"
+msgstr "зашмат аднолькавых радкоў"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr ""
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr ""
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "нерÑчаіÑÐ½Ð°Ñ ÐºÐ¾Ð»ÑŒÐºÐ°Ñьць байтаў Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°ÑžÐ½Ð°Ð½ÑŒÐ½Ñ"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"ВыкарыÑтаньне: %s ФÐЙЛ\n"
+" ці: %s ВЫБÐР\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"Выклікае функцыю unlink Ð´Ð»Ñ Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½ÑŒÐ½Ñ Ð¿Ð°Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°Ð³Ð° ФÐЙЛа.\n"
+"\n"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "немагчыма unlink %s"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "немагчыма вызначыць Ñ‡Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÑ–"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s працуе "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "am"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "pm"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr " ??:???? працуе "
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr "???? дзён ??:??, "
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%ld дзень"
+msgstr[1] "%ld дні"
+msgstr[2] "%ld дзён"
+
+#: src/uptime.c:147
+#, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%lu карыÑтальнік"
+msgstr[1] "%lu карыÑтальніка"
+msgstr[2] "%lu карыÑтальнікаў"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", ÑÑÑ€ÑднÑÑ Ð½Ð°Ð³Ñ€ÑƒÐ·ÐºÐ°: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "ВыкарыÑтаньне: %s [ПÐРÐМЭТÐР]... [ ФÐЙЛ ]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Друкуе бÑгучы чаÑ, Ñ‡Ð°Ñ Ð¿Ñ€Ð°Ñ†Ñ‹ ÑÑ‹ÑÑ‚Ñмы, колькаÑьць карыÑтальнікаў у ÑÑ‹ÑÑ‚Ñме\n"
+"Ñ– ÑÑÑ€Ñднюю колькаÑьць задач у чарзе на выкананьне за Ð°Ð¿Ð¾ÑˆÐ½Ñ–Ñ 1, 5 Ñ– 15 "
+"хвілінаў.\n"
+"Калі ФÐЙЛ не зададзены, выкарыÑтоўвае %s. %s - агульны ФÐЙЛ.\n"
+"\n"
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+
+#: src/wc.c:121
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr " Ñтары "
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "Ñ‚Ñрм.="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "выхад="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "зьмена чаÑу"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "узровень"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "апошні="
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"# карыÑтальнікі=%lu\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "NAME"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "LINE"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "TIME"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr "IDLE"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "COMMENT"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "EXIT"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "ВыкарыÑтаньне: %s [ПÐРÐМЭТÐР]... [ ФÐЙЛ | ДОВÐД1 ДОВÐД2 ]\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" -a, --all тое, што й -b -d --login -p -r -t -T -u\n"
+" -b, --boot Ñ‡Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÑ– ÑÑ‹ÑÑ‚Ñмы\n"
+" -d, --dead друкуе Ð¼Ñ‘Ñ€Ñ‚Ð²Ñ‹Ñ Ð¿Ñ€Ñ†ÑÑÑ‹\n"
+" -H, --heading друкуе радок загалоўкаў Ñлупкоў\n"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr " -l, --login друкуе працÑÑÑ‹ ўваходу Ñž ÑÑ‹ÑÑ‚Ñму\n"
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+" --lookup паÑпрабаваць вызначыць назвы вузлоў праз DNS\n"
+" -m толькі назву вузла й Ñ–Ð¼Ñ ÐºÐ°Ñ€Ñ‹Ñтальніка, зьвÑзанае Ñа "
+"stdin\n"
+" -p, --process друкуе Ð°ÐºÑ‚Ñ‹ÑžÐ½Ñ‹Ñ Ð¿Ñ€Ð°Ñ†ÑÑÑ‹, Ð½Ð°Ñ€Ð¾Ð´Ð¶Ð°Ð½Ñ‹Ñ init\n"
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+" -q, --count уÑе карыÑтальнікі й колькаÑьць увайшоўшых\n"
+" -r, --runlevel друкуе бÑгучы ўзровень працы (run-level)\n"
+" -s, --short друкуе толькі імÑ, лінію й Ñ‡Ð°Ñ (прадвызначаны вывад)\n"
+" -t, --time друкуе апошнюю зьмену ÑÑ‹ÑÑ‚Ñмнага чаÑу\n"
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+" -T, -w, --mesg дадае ÑÑ‚Ð°Ñ‚ÑƒÑ ÐºÐ°Ñ€Ñ‹Ñтальніка Ñк +, - альбо ?\n"
+" -u, --users друкуе ÑÑŒÐ¿Ñ–Ñ ÑƒÐ²Ð°Ð¹ÑˆÐ¾ÑžÑˆÑ‹Ñ… карыÑтальнікаў\n"
+" --message тое, што й -T\n"
+" --writable тое, што й -T\n"
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"Калі ФÐЙЛ Ð½Ñ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ñ‹, выкарыÑтоўвае фай %s.\n"
+"Файл %s зьÑўлÑецца агульным ФÐЙЛам.\n"
+"Калі ДОВÐД1 ДОВÐД2 зададзены, прадугледжваецца -m: \"am i\" альбо\n"
+"\"mom likes\" Ñк звычайна.\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+"Увага! Выбар -i будзе выдалены Ñž будучым; выкарыÑтоўвайце -u замеÑÑ‚ Ñго."
+
+#: src/whoami.c:51
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Друкуе ўліковае Ñ–Ð¼Ñ ÐºÐ°Ñ€Ñ‹Ñтальніка, зьвÑзанае зь бÑгучым ÑÑ„Ñктыўным\n"
+"ID карыÑтальніка. Тое Ñамае, што й \"id -un\".\n"
+"\n"
+
+#: src/whoami.c:95
+#, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: немагчыма адшукаць Ñ–Ð¼Ñ ÐºÐ°Ñ€Ñ‹Ñтальніка з ID %lu\n"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"ВыкарыÑтаньне: %s [РÐДОК]...\n"
+" ці: %s ВЫБÐР\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"БеÑперапынна выводзіць РÐДОК(Ñ–), ці літару \"y\".\n"
+"\n"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "немагчыма зьмÑніць уладальніка й/ці групу %s"
+
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "немагчыма перайÑьці да Ñ‚Ñчкі %s"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "немагчыма атрымаць уліковую групу лічбавага UID"
+
+#~ msgid "-R -h requires -P"
+#~ msgstr "-R -h патрабуе -P"
+
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "Ð·Ð½Ð°ÐºÐ°Ð²Ñ‹Ñ Ð»ÑƒÑ‡Ñ‹Ð²Ñ‹ не падтрымліваюцца гÑтае ÑÑ‹ÑÑ‚Ñмай"
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "нераÑпазнаны выбар \"-%c\""
+
+#, fuzzy
+#~ msgid "cannot return to working directory"
+#~ msgstr "немагчыма вÑрнуцца Ñž пачатковую працоўную Ñ‚Ñчку"
+
+#, fuzzy
+#~ msgid "cannot return to current directory"
+#~ msgstr "немагчыма атрымаць бÑгучую Ñ‚Ñчку"
+
+#, fuzzy
+#~ msgid "value %s is so large that it is not representable"
+#~ msgstr "%s: %s такі вÑлікі, што немагчыма паказаць"
+
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "Ñтварыць знакавую ÑпаÑылку %s на %s"
+
+#~ msgid "create hard link %s to %s"
+#~ msgstr "Ñтварыць жорÑткую ÑпаÑылку %s на %s"
+
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "немагчыма ÑžÑталÑваць правы Ñ‚Ñчкі %s"
+
+#~ msgid "fifo files not supported"
+#~ msgstr "fifo файлы непадтрымліваюцца"
+
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "немагчыма ÑžÑталÑваць правы fifo %s"
+
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "немагчыма ÑžÑталÑваць правы %s"
+
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
+#~ msgstr ""
+#~ "Ð’Ñ‹ павінны былі атрымаць копію ліцÑнзыі \"GNU General Public License\n"
+#~ "разам з гÑтай праграмай, калі не, ліÑтуйце Ñž Free Software Foundation, "
+#~ "Inc.,\n"
+#~ "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "немагчыма зьмÑніць Ñ‚Ñчку з %s на .."
+
+#~ msgid "cannot lstat %s"
+#~ msgstr "немагчыма выканаць lstat %s"
+
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "немагчыма перайÑьці з %s у %s"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "немагчыма выдаліць `.' ці `..'"
diff --git a/po/bg.gmo b/po/bg.gmo
new file mode 100644
index 0000000..0d1fa9b
--- /dev/null
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
new file mode 100644
index 0000000..3991088
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,10822 @@
+# translation of coreutils.bg.po to Bulgarian
+# Message catalog for coreutils
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This file is distributed under the same license as the coreutils package.
+# Anton Zinoviev <zinoviev@debian.org>, 2003,2004,2005,2006.
+#
+# Thanks to Alexander Shopov for some bug reports.
+#
+# Look at the CHECK string.
+#
+# This file should be sent to translation@iro.umontreal.ca with the
+# following subject line: TP-Robot coreutils-6.5.bg.po
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 6.5\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2006-11-23 22:41+0200\n"
+"Last-Translator: Anton Zinoviev <zinoviev@debian.org>\n"
+"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, c-format
+msgid "preserving permissions for %s"
+msgstr "режимът за доÑтъп до %s е запазен"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "уÑтановÑва Ñе режимът за доÑтъп до %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "недопуÑтим аргумент %s за %s"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "двуÑмиÑлен аргумент %s за %s"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "ДопуÑтими аргументи Ñа:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "грешка при запиÑ"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Ðепозната ÑиÑтемна грешка"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "не могат да Ñе получат атрибутите на %s"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "обикновен празен файл"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "обикновен файл"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "каталог"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "Ñпециален блоков файл"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "Ñпециален Ñимволен файл"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "именуван канал"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "Ñимволна връзка"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "гнездо"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "опашка ÑÑŠÑ ÑъобщениÑ"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "Ñемафор"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "Ñподелен обект в паметта"
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr "типизиран обект в паметта"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "непознат тип файл"
+
+#: lib/gai_strerror.c:44
+msgid "Address family for hostname not supported"
+msgstr "Този тип адреÑи не Ñе поддържа за името на хоÑта"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr "Временен проблем при намиране IP-адреÑа на хоÑÑ‚"
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr "Ðеправилна ÑтойноÑÑ‚ за ai_flags"
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr "Окончателен неуÑпех при намиране IP-адреÑа на хоÑÑ‚"
+
+#: lib/gai_strerror.c:48
+msgid "ai_family not supported"
+msgstr "не Ñе поддържа поÑочването на тип адреÑи (ai_family)"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr "ÐеуÑпешно заделÑне на памет"
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr "ÐÑма IP-Ð°Ð´Ñ€ÐµÑ Ñ Ð¿Ð¾Ñоченото име на хоÑÑ‚"
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr "Името или уÑлугата Ñа непознати"
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+"Името на уÑлугата не Ñе поддържа за използваното тип гнездо (ai_socktype)"
+
+#: lib/gai_strerror.c:53
+msgid "ai_socktype not supported"
+msgstr "не Ñе поддържа поÑочването на тип гнездо (ai_socktype)"
+
+#: lib/gai_strerror.c:54
+msgid "System error"
+msgstr "грешка в ÑиÑтемата"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr "ЗаÑвката е в Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð° изпълнение"
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr "ЗаÑвката е отменена"
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr "ЗаÑвката не е отменена"
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr "Изпълнени Ñа вÑички заÑвки"
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr "ПрекъÑнат ÑÑŠÑ Ñигнал"
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr "Ðеправилно кодиран низ на аргумент"
+
+#: lib/gai_strerror.c:74
+msgid "Unknown error"
+msgstr "Ðепозната грешка"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: опциÑта „%s“ е двуÑмиÑлена\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: опциÑта „--%s“ не допуÑка аргумент\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: опциÑта „%c%s“ не допуÑка аргумент\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: опциÑта „%s“ изиÑква аргумент\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: непозната Ð¾Ð¿Ñ†Ð¸Ñ â€ž--%s“\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: непозната Ð¾Ð¿Ñ†Ð¸Ñ â€ž%c%s“\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: неправилна Ð¾Ð¿Ñ†Ð¸Ñ -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: неправилна Ð¾Ð¿Ñ†Ð¸Ñ -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: опциÑта изиÑква аргумент -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: опциÑта „-W %s“ е двуÑмиÑлена\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: опциÑта „-W %s“ не допуÑка аргумент\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "блоковиÑÑ‚ размер"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "не може да Ñе ÑменÑÑ‚ правата за доÑтъп до %s"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "не може да Ñе Ñъздаде каталог %s"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "паметта е изчерпана"
+
+#: lib/openat-die.c:34
+#, c-format
+msgid "unable to record current working directory"
+msgstr "не може да Ñе запомни текущиÑÑ‚ работен каталог"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "невъзможно връщане в Ð¿ÑŠÑ€Ð²Ð¾Ð½Ð°Ñ‡Ð°Ð»Ð½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚ÐµÐ½ каталог"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "„"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "“"
+
+#: lib/randread.c:125
+#, c-format
+msgid "%s: end of file"
+msgstr "%s: край на файла"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr "УÑпех"
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr "ÐÑма ÑъответÑтвие"
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr "Ðеправилен регулÑрен израз"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr "Ðеправилен знак за ÑъпоÑтавÑне"
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr "Ðеправилно име на ÐºÐ»Ð°Ñ Ñимволи"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr "Завършваща обратно наклонена черта"
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr "Ðеправилно обратно позоваване"
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr "Ðезатворена [ или [^"
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr "Ðезатворена ( или \\("
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr "Ðезатворена \\{"
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr "Ðеправилно Ñъдържание на \\{\\}"
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr "Ðеправилен край на диапазон"
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr "Паметта е изчерпана"
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr "Ðеправилен предхождащ регулÑрен израз"
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr "Ðеочакван край на регулÑрен израз"
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr "РегулÑрниÑÑ‚ израз е твърде голÑм"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr "Ðеотворена ) или \\)"
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr "ÐÑма предходен регулÑрен израз"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr "опаÑно е да Ñе работи рекурÑивно върху %s"
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr "опаÑно е да Ñе работи рекурÑивно върху %s, Ñ‚.е. върху %s"
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr "ползвайте --no-preserve-root, за да отмените тази предпазна мÑрка"
+
+# Клавишът О (латинÑко) генерира "Д" Ñпоред подредбата по БДС
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[дДoOyY]"
+
+# Клавишът K (латинÑко) генерира "Ð" Ñпоред подредбата по БДС
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[нÐkKnN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "функциÑта iconv не е използваема"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "функциÑта iconv е недоÑтъпна"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "знак извън диапазона"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "не може да Ñе конвертира U+%04X в локалното кодиране"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "не може да Ñе конвертира U+%04X в локалното кодиране: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "неÑъщеÑтвуващ потребител"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "неÑъщеÑтвуваща група"
+
+#: lib/userspec.c:109
+msgid "invalid spec"
+msgstr "неправилна ÑпецификациÑ"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr "©"
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Това е Ñвободен Ñофтуер. Можете да разпроÑтранÑвате негови ÐºÐ¾Ð¿Ð¸Ñ ÑъглаÑно\n"
+"уÑловиÑта на ОÑновната общодоÑтъпна Ð»Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ Ð½Ð° ГÐУ\n"
+" <http://www.gnu.org/licenses/gpl.html>.\n"
+"Ðе Ñе дават ÐИКÐКВИ ГÐРÐÐЦИИ до Ñтепента, позволÑвана от закона.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "ÐапиÑан от %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "ÐапиÑан от %s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "ÐапиÑан от %s, %s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"ÐапиÑан от %s, %s, %s\n"
+"и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"ÐапиÑан от %s, %s, %s,\n"
+"%s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"ÐапиÑан от %s, %s, %s,\n"
+"%s, %s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"ÐапиÑан от %s, %s, %s,\n"
+"%s, %s, %s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"ÐапиÑан от %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"ÐапиÑан от %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s и %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"ÐапиÑан от %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s и други.\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "неправилен аргумент: %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "Ñравнението на низове не уÑпÑ"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Използвайте LC_ALL='C', за да заобиколите този проблем."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "СравнÑваните низове бÑха %s и %s."
+
+#: lib/xmemxfrm.c:55
+#, c-format
+msgid "string transformation failed"
+msgstr "неуÑпешно преобразуване на низ"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr "ÐепреобразуваниÑÑ‚ низ беше %s."
+
+#: lib/xstrtol.h:62
+#, c-format
+msgid "invalid %s `%s'"
+msgstr "неправилен %s „%s“"
+
+#: lib/xstrtol.h:69
+#, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "неправилен пиÑмен знак, Ñледващ %s в „%s“"
+
+#: lib/xstrtol.h:74
+#, c-format
+msgid "%s `%s' too large"
+msgstr "%s „%s“ е твърде дълго"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Използвайте „%s --help“ за повече информациÑ.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+"Използване: %s [ОПЦИЯ] [ФÐЙЛ]\n"
+"Кодира/декодира Ñ Ð¾Ñнова 64 от ФÐЙЛ или ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ към ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ "
+"изход\n"
+"\n"
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+" -w, --wrap=ШИРИÐРПренаÑÑ ÐºÐ¾Ð´Ð¸Ñ€Ð°Ð½Ð¸Ñ‚Ðµ редове Ñлед ШИРИÐРзнаци "
+"(подразбира\n"
+" Ñе 76). Използвайте 0, за да забраните "
+"пренаÑÑнето.\n"
+"\n"
+" -d, --decode Декодира данните.\n"
+" -i, --ignore-garbage При декодиране пренебрегва небуквените знаци.\n"
+"\n"
+
+#: src/base64.c:77
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+" --help Извежда тази Ñправка и завършва.\n"
+" --version Извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° верÑиÑта и завършва.\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Ðко нÑма ФÐЙЛ или ако ФÐЙЛ е -, Ñе чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+
+#: src/base64.c:83
+#, fuzzy
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+"\n"
+"Данните Ñе кодират по оÑнова 64, както това е опиÑано в RFC 3548.\n"
+"Декодирането изиÑква правилни входни данни, ползвайте --ignore-garbage,\n"
+"за да Ñе опита да Ñе преодолеÑÑ‚ небуквените знаци (например знаци за нов "
+"ред)\n"
+"във Ð²Ñ…Ð¾Ð´Ð½Ð¸Ñ Ð¿Ð¾Ñ‚Ð¾Ðº.\n"
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Съобщавайте за програмни грешки на <%s>.\n"
+"За грешки в българÑÐºÐ¸Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´ на <dict@fsa-bg.org>\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "грешка при четене"
+
+#: src/base64.c:234
+#, c-format
+msgid "invalid input"
+msgstr "недопуÑтим вход"
+
+#: src/base64.c:271
+#, c-format
+msgid "invalid wrap size: %s"
+msgstr "неправилен размер за пренаÑÑне: %s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr "излишен операнд „%s“"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "затварÑне на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Използване: %s ИМЕ [РÐЗШИРЕÐИЕ]\n"
+" или: %s ОПЦИЯ\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"ОтÑтранÑва от ИМЕ каталозите в началото и го отпечатва.\n"
+"Ðко е поÑочено, изтрива Ñъщо и РÐЗШИРЕÐИЕ-то в краÑ.\n"
+"\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+"\n"
+"Примери:\n"
+" %s /usr/bin/sort извежда „sort“.\n"
+" %s include/stdio.h .h извежда „stdio“.\n"
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, c-format
+msgid "missing operand"
+msgstr "липÑващ операнд"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Използване: %s [ОПЦИЯ] [ФÐЙЛ]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"СъединÑва ФÐЙЛ(овете) или ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ и ги изпраща на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ "
+"изход.\n"
+"\n"
+" -A, --show-all еквивалентно на -vET\n"
+" -b, --number-nonblank брой непразни редове на изхода\n"
+" -e еквивалентно на -vE\n"
+" -E, --show-ends поÑÑ‚Ð°Ð²Ñ $ в ÐºÑ€Ð°Ñ Ð½Ð° вÑеки ред\n"
+" -n, --number номерира изведените редове\n"
+" -s, --squeeze-blank никога поÑледователноÑÑ‚ от повече от един празен "
+"ред\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t еквивалентно на -vT\n"
+" -T, --show-tabs изобразÑва табулациите като ^I\n"
+" -u (пренебрегва Ñе)\n"
+" -v, --show-nonprinting ползва Ð·Ð°Ð¿Ð¸Ñ Ñ ^ и M-, оÑвен за нов ред и "
+"табулациÑ\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+"\n"
+"Примери:\n"
+" %s f - g Извежда Ñъдържанието на f, поÑле ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´ и g\n"
+" %s Копира ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n"
+
+#: src/cat.c:333
+#, c-format
+msgid "cannot do ioctl on %s"
+msgstr "не може да Ñе изпълни ioctl за „%s“"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "ÑтандартниÑÑ‚ изход"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: входниÑÑ‚ файл е изходен файл"
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "неправилна група %s"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Използване: %s [ОПЦИЯ]... ГРУПРФÐЙЛ...\n"
+" или: %s [ОПЦИЯ]... --reference=ЕТФÐЙЛ ФÐЙЛ...\n"
+
+#: src/chgrp.c:117
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Прави ГРУПРда бъде групата на вÑеки ФÐЙЛ.\n"
+"При --reference прави групата на вÑеки ФÐЙЛ да бъде Ñъщата като тази на "
+"ЕТФÐЙЛ.\n"
+"\n"
+" -c, --changes подобно на verbose, но Ñъобщава Ñамо при промени\n"
+" --dereference дейÑтва върху файловете, Ñочени от Ñимволни връзки\n"
+" (по подразбиране), вмеÑто върху Ñамите Ñимволни "
+"връзки\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference дейÑтва върху Ñимволните връзки, вмеÑто върху "
+"Ñочените\n"
+" файлове (Ñамо при ÑиÑтеми, позволÑващи промÑна на\n"
+" ÑобÑтвеноÑтта на Ñимволна връзка)\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root да не Ñе обработва „/“ по-оÑобено (по "
+"подразбиране)\n"
+" --preserve-root да не Ñе дейÑтва рекурÑивно от „/“\n"
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet потиÑка повечето ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð° грешки\n"
+" --reference=ЕТФÐЙЛ ползва групата на ЕТФÐЙЛ вмеÑто поÑочена ГРУПÐ\n"
+" -R, --recursive дейÑтва рекурÑивно върху файловете и каталозите\n"
+" -v, --verbose извежда диагноÑтично Ñъобщение за вÑеки обработен "
+"файл\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+"Следните опции влиÑÑÑ‚ на обхождането на йерархиÑта, когато е поÑочена\n"
+"Ñъщо и Ð¾Ð¿Ñ†Ð¸Ñ -R. Ðко е зададена повече от една Ñ‚ÑÑ…, взема Ñе пред вид\n"
+"Ñамо поÑледната зададена.\n"
+"\n"
+"\n"
+" -H ако аргумент от ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´ е Ñимволна връзка\n"
+" към каталог, да Ñе обходи и той\n"
+" -L да Ñе обхожда вÑеки каталог, Ñочен от Ñрещната\n"
+" Ñимволна връзка\n"
+" -P да не Ñе обхождат Ñимволните връзки (по "
+"подразбиране)\n"
+"\n"
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+"\n"
+"Примери:\n"
+" %s staff /u прави групата на /u да бъде „staff“.\n"
+" %s -hR staff /u прави групата на /u и файловете в /u да бъде „staff“.\n"
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr "-R --dereference изиÑква -H или -L"
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, c-format
+msgid "missing operand after %s"
+msgstr "липÑващ операнд Ñлед %s"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "не могат да Ñе получат атрибутите на %s"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "получават Ñе новите атрибути на %s"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "нито Ñимволната връзка %s, нито ÑочениÑÑ‚ файл бÑха променени\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "режимът за доÑтъп до %s е променен на %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "режимът за доÑтъп до %s не може да Ñе Ñмени на %04lo (%s)\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "режимът за доÑтъп до %s е запазен на %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "нÑма доÑтъп до %s"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "каталогът %s не може да Ñе чете"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "променÑÑ‚ Ñе правата за доÑтъп до %s"
+
+#: src/chmod.c:286
+#, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "%s: новиÑÑ‚ режим за доÑтъп е %s, а не %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr "неуÑпешен fts_read"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Използване: %s [ОПЦИЯ]... РЕЖИМ[,РЕЖИМ]... ФÐЙЛ...\n"
+" или: %s [ОПЦИЯ]... ОСМИЧЕÐ-РЕЖИМ ФÐЙЛ...\n"
+" или: %s [ОПЦИЯ]... --reference=ЕТФÐЙЛ ФÐЙЛ...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+"Режимът за доÑтъп до вÑеки ФÐЙЛ Ñтава РЕЖИМ.\n"
+"\n"
+" -c, --changes като verbose, но Ñъобщава Ñамо за направени "
+"промени\n"
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root да не Ñе обработва „/“ по-оÑобено (по "
+"подразбиране)\n"
+" --preserve-root да не Ñе дейÑтва рекурÑивно от „/“\n"
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+" -f, --silent, --quiet потиÑка повечето ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð° грешки\n"
+" -v, --verbose извежда диагноÑтично Ñъобщение за вÑеки обработен "
+"файл\n"
+" --reference=ЕТФÐЙЛ ползва режимa за доÑтъп до ЕТФÐЙЛ вмеÑто РЕЖИМ\n"
+" -R, --recursive дейÑтва рекурÑивно върху файловете и каталозите\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+"\n"
+"Ð’Ñеки РЕЖИМ е от вида „[ugoa]*([-+=]([rwxXst]*|[ugo]))+“.\n"
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr "не може да Ñе комбинират опциите за режим и --reference"
+
+#: src/chmod.c:510
+#, c-format
+msgid "invalid mode: %s"
+msgstr "неправилен режим за доÑтъп %s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "ÑобÑтвеник на %s Ñтава %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "група на %s Ñтава %s\n"
+
+#: src/chown-core.c:149
+#, c-format
+msgid "no change to ownership of %s\n"
+msgstr "без промÑна на ÑобÑтвеника на %s\n"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "ÑобÑтвеник на %s не можа да Ñе промени на %s\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "групата на %s не можа да Ñе промени на %s\n"
+
+#: src/chown-core.c:154
+#, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "промÑната на ÑобÑтвеника на %s не уÑпÑ\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "ÑобÑтвеник на %s оÑтана %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "групата на %s оÑтана %s\n"
+
+#: src/chown-core.c:159
+#, c-format
+msgid "ownership of %s retained\n"
+msgstr "ÑобÑтвеник на %s оÑтана непроменен\n"
+
+#: src/chown-core.c:344
+#, c-format
+msgid "cannot dereference %s"
+msgstr "Ñимволната връзка %s не може да бъде поÑледвана"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñе ÑобÑтвеноÑтта на %s"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñе групата на %s"
+
+#: src/chown.c:93
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Използване: %s [ОПЦИЯ]... [СОБСТВЕÐИК][:[ГРУПÐ]] ФÐЙЛ...\n"
+" или: %s [ОПЦИЯ]... --reference=ЕТФÐЙЛ ФÐЙЛ...\n"
+
+#: src/chown.c:98
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"СобÑтвеник и/или група на вÑеки ФÐЙЛ Ñтават СОБСТВЕÐИК и/или ГРУПÐ.\n"
+"При --reference прави ÑобÑтвеника и групата на ФÐЙЛ да Ñа Ñъщите като на "
+"ЕТФÐЙЛ.\n"
+"\n"
+" -c, --changes като verbose, но Ñъобщава Ñамо за направени "
+"промени\n"
+" --dereference дейÑтва върху файла, Ñочен от Ñимволните връзки\n"
+" (по подразбиране), вмеÑто върху Ñамата Ñимволна "
+"връзка\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=ТЕКУЩ_СОБСТВЕÐИК:ТЕКУЩÐ_ГРУПÐ\n"
+" ÑобÑтвеникът и/или групата на вÑеки файл Ñе "
+"променÑ\n"
+" Ñамо ако текущиÑÑ‚ му ÑобÑтвеник и/или група "
+"отговарÑÑ‚\n"
+" на поÑочените. Ð’ÑÑко от двете може да Ñе изпуÑне, "
+"при\n"
+" което ÑъответÑтвие Ñ Ð¿Ñ€Ð¾Ð¿ÑƒÑÐ½Ð°Ñ‚Ð¸Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ не е "
+"нужно.\n"
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet потиÑка повечето ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð° грешка\n"
+" --reference=ЕТФÐЙЛ да Ñе ползват ÑобÑтвеникът и групата на ЕТФÐЙЛ "
+"вмеÑто\n"
+" поÑочени ÑтойноÑти СОБСТВЕÐИК:ГРУПÐ\n"
+" -R, --recursive дейÑтва върху файловете и каталозите рекурÑивно\n"
+" -v, --verbose извежда диагноÑтично Ñъобщение за вÑеки обработен "
+"файл\n"
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"Ðко ÑобÑтвеник не е поÑочен, той оÑтава непроменен. Ðко група не е\n"
+"поÑочена, Ñ‚Ñ Ð¾Ñтава непроменена, оÑвен ако има „:“, в който Ñлучай Ñе "
+"използва\n"
+"входÑщата група на Ð½Ð¾Ð²Ð¸Ñ ÑобÑтвеник. СОБСТВЕÐИК и ГРУПРмогат да бъдат\n"
+"както номера, така и имена.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+"\n"
+"Примери:\n"
+" %s root /u прави ÑобÑтвеника на /u да бъде „root“.\n"
+" %s root:staff /u подобно, но Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ð¸ групата на „staff“.\n"
+" %s -hR root /u прави ÑобÑтвеника на /u и файловете в /u да е „root“.\n"
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Използване: %s ÐОВКОРЕÐОВ [КОМÐÐДÐ...]\n"
+" или: %s ОПЦИЯ\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"ИзпълнÑва КОМÐÐÐ”Ð Ñ ÐºÐ¾Ñ€ÐµÐ½Ð¾Ð² каталог ÐОВКОРЕÐОВ.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"Ðко не е поÑочена команда, изпълнÑва „${SHELL} -i“ (по подразбиране: /bin/"
+"sh).\n"
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "кореновиÑÑ‚ каталог не може да Ñе Ñмени на %s"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "Ñ chdir не може да Ñе влиза в Ð³Ð»Ð°Ð²Ð½Ð¸Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "неуÑпешно изпълнение на командата %s"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: файлът е твърде дълъг"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Използване: %s [ФÐЙЛ]...\n"
+" или: %s [ОПЦИЯ]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"Отпечатва контролна Ñума CRC и Ð±Ñ€Ð¾Ñ Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ðµ на вÑеки ФÐЙЛ.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Използване: %s [ОПЦИЯ]... ФÐЙЛ1 ФÐЙЛ2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr "СравнÑва Ñортираните файлове ФÐЙЛ1 и ФÐЙЛ2 ред по ред.\n"
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+"\n"
+"Без опции извежда информациÑта в триколонен формат. ПървиÑÑ‚ Ñтълб Ñъдържа\n"
+"редовете, които Ñа Ñамо във ФÐЙЛ1. ВториÑÑ‚ Ñтълб Ñъдържа редовете, които\n"
+"Ñа Ñамо във ФÐЙЛ2. ТретиÑÑ‚ Ñтълб Ñъдържа редовете, общи и за двата файла.\n"
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"\n"
+" -1 не извежда редовете, които Ñа Ñамо във ФÐЙЛ1\n"
+" -2 не извежда редовете, които Ñа Ñамо във ФÐЙЛ2\n"
+" -3 не извежда редовете, които Ñе поÑвÑват и в двата файла\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "ÑобÑтвеноÑтта на %s не можа да Ñе запази"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr "не може да Ñе Ñ‚ÑŠÑ€Ñи файла %s"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "не можа да Ñе запази авторÑтвото на %s"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "не може да Ñе отвори %s за четене"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "не може да Ñе получи режимът за доÑтъп до %s"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "файлът %s Ñе пропуÑка, тъй като бе замеÑтен по време на копирането"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "не може да Ñе изтрие %s"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "%s е изтрит\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "не може да Ñе Ñъздаде обикновен файл %s"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "чете Ñе %s"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "не може да Ñе обработи непоÑледователно %s"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "запиÑва Ñе %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "времената за %s Ñе запазват"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "Ð·Ð°Ñ‚Ð²Ð°Ñ€Ñ Ñе %s"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: да Ñе замеÑти ли %s (режимът за доÑтъп е %04lo)? "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: да Ñе замеÑти ли %s? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (резервно копие: %s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "каталогът %s Ñе пропуÑка"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "внимание: Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» %s е поÑочен повече от веднъж"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s и %s Ñа един и Ñъщ файл"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "%s не е каталог и не може да Ñе замеÑти Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° %s"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "току що ÑъздадениÑÑ‚ %s нÑма да бъде замеÑтен Ñ %s"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "каталогът %s не може да Ñе замеÑти Ñ Ñ„Ð°Ð¹Ð», който не е каталог"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr ""
+"каталог не може да Ñе премеÑти върху файл, който не е каталог: %s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "резервното копиране на %s би разрушило източника; %s не бе премеÑтен"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "резервното копиране на %s би разрушило източника; %s не бе копиран"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "не може да Ñе направи резервно копие на %s"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "не може да Ñе копира каталог (%s) в ÑÐ°Ð¼Ð¸Ñ Ñебе Ñи (%s)"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "нÑма да Ñе направи твърда връзка %s към каталога %s"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "не може да Ñе направи твърда връзка %s към %s"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "не може да Ñе премеÑти %s в ÑÐ²Ð¾Ñ Ð¿Ð¾Ð´ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ %s"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "не може да Ñе премеÑти %s в %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+"премеÑтването между уÑтройÑтва не уÑÐ¿Ñ (от %s в %s); целевиÑÑ‚ файл не можа "
+"да Ñе изтрие"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "не може да Ñе копира цикличната Ñимволна връзка %s"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr ""
+"%s: отноÑителни Ñимволни връзки може да Ñе правÑÑ‚ Ñамо в Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "не може да Ñе Ñъздаде Ñимволна връзка %s към %s"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "не може да Ñе Ñъздаде връзка %s"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "не може да Ñе Ñъздаде именуван канал %s"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "не може да Ñе Ñъздаде Ñпециален файл %s"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "не може да Ñе чете Ñимволната връзка %s"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "не може да Ñе Ñъздаде Ñимволна връзка %s"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s има непознат файлов тип"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "не може да Ñе възÑтанови от резервно копие %s"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (от резервно копие)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Използване: %s [ОПЦИЯ]... [-T] ИЗТОЧÐИК ЦЕЛ\n"
+" или: %s [ОПЦИЯ]... ИЗТОЧÐИК... КÐТÐЛОГ\n"
+" или: %s [ОПЦИЯ]... -t КÐТÐЛОГ ИЗТОЧÐИК...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Копира ИЗТОЧÐИК в ЦЕЛ или много ИЗТОЧÐИЦ(и) в КÐТÐЛОГ.\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Ðргументите, задължителни за дългите опции, Ñа задължителни и за къÑите.\n"
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive Ñъщо като -dpPR\n"
+" --backup[=МЕТОД] резервно копира ÑъщеÑтвуващите целеви "
+"файлове\n"
+" -b като --backup, но не може да получава "
+"аргумент\n"
+" --copy-contents копира Ñъдържанието на Ñпец. файлове при "
+"рекурÑ.\n"
+" -d като --no-dereference --preserve=link\n"
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" -f, --force ако ÑъщеÑтвуващ целеви файл не може да бъде\n"
+" отворен, да Ñе изтрие и да Ñе опита отново\n"
+" -i, --interactive да Ñе пита преди замеÑтване\n"
+" -H копира файла от Ñимволна връзка на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ "
+"ред\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+" -l, --link не копира, а прави връзки (твърди)\n"
+" -L, --dereference винаги проÑледÑва Ñимволните връзки\n"
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr " -P, --no-dereference не проÑледÑва Ñимволните връзки\n"
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -p Ñъщо като --preserve=mode,ownership,"
+"timestamps\n"
+" --preserve[=СПИС_ÐТРИБ] да Ñе запазват поÑочените атрибути "
+"(подразбиране:\n"
+" mode,ownership,timestamps), а при "
+"възможноÑÑ‚ и\n"
+" Ñледните допълнителни атрибути: links, all\n"
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=СПИС_ÐТРИБ да не Ñе запазват поÑочените атрибути\n"
+" --parents допълва КÐТÐЛОГ Ñ Ð¿ÑŠÑ‚ÐµÐºÐ°Ñ‚Ð° в ИЗТОЧÐИК\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive копира каталозите рекурÑивно\n"
+" --remove-destination премахва вÑеки ÑъщеÑтвуващ целеви файл преди\n"
+" да Ñе опитва отварÑне (Ñравнете Ñ --force)\n"
+
+#: src/cp.c:205
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --sparse=КОГРрегулира Ñъздаването на разредени файлове\n"
+" --strip-trailing-slashes премахва крайните „/“ от вÑеки аргумент "
+"ИЗТОЧÐИК\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link правене на Ñимволни връзки, а не копиране\n"
+" -S, --suffix=СУФИКС вмеÑто Ð¾Ð±Ð¸Ñ‡Ð°Ð¹Ð½Ð¸Ñ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð·Ð° резервни копиÑ\n"
+" --target-directory=КÐТÐЛОГ копира вÑички аргументи ИЗТОЧÐИК в "
+"КÐТÐЛОГ\n"
+" -T, --no-target-directory работи Ñ Ð¦Ð•Ð› като Ñ Ð½Ð¾Ñ€Ð¼Ð°Ð»ÐµÐ½ файл\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update копира Ñамо, ако ИЗТОЧÐИК е по-нов от "
+"целевиÑ\n"
+" файл или ако целевиÑÑ‚ файл липÑва\n"
+" -v, --verbose Ñъобщава какво Ñе прави\n"
+" -x, --one-file-system оÑтава в текущата файлова ÑиÑтема\n"
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"По подразбиране Ñе приема --sparse=auto, при което чрез груба евриÑтика Ñе\n"
+"разпознава кои файлове ИЗТОЧÐИК Ñа разредени и целевите файлове Ñъщо Ñе "
+"правÑÑ‚\n"
+"такива. При --sparse=always целевите файлове Ñе правÑÑ‚ разредени, винаги "
+"когато\n"
+"файловете ИЗТОЧÐИК Ñъдържат доÑтатъчно дълга поÑледователноÑÑ‚ от нули.\n"
+"Ползвайте --sparse=never, за да забраните Ñъздаването на разредени файлове.\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"СуфикÑÑŠÑ‚ за резервни ÐºÐ¾Ð¿Ð¸Ñ Ðµ „~“, оÑвен при промÑна Ñ --suffix или Ñ "
+"променлива\n"
+"от обкръжението SIMPLE_BACKUP_SUFFIX. Методът за управление на верÑиите може "
+"да\n"
+"Ñе поÑочва Ñ --backup или Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ð»Ð¸Ð²Ð°Ñ‚Ð° VERSION_CONTROL. Ето ÑтойноÑтите:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off никога да не Ñе правÑÑ‚ резервни ÐºÐ¾Ð¿Ð¸Ñ (оÑвен при --"
+"backup)\n"
+" numbered, t да Ñе правÑÑ‚ номерирани резервни копиÑ\n"
+" existing, nil номерирани, ако вече Ñа правени номерирани, а проÑти "
+"иначе\n"
+" simple, never винаги да Ñе правÑÑ‚ проÑти резервни копиÑ\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"По изключение ако Ñа зададени опции --force и --backup, а ИЗТОЧÐИК и ЦЕЛ Ñа "
+"едно\n"
+"и Ñъщо име на ÑъщеÑтвуващ обикновен файл, cp прави резервно копие на "
+"ИЗТОЧÐИК.\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "времената на %s не можаха да Ñе запазÑÑ‚"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "правата за доÑтъп до %s не можаха да Ñе запазÑÑ‚"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "не може да Ñе направи каталог %s"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s ÑъщеÑтвува, но не е каталог"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "доÑтъп до %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, c-format
+msgid "missing file operand"
+msgstr "липÑващ файлов операнд"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, c-format
+msgid "missing destination file operand after %s"
+msgstr "липÑващ операнд за целеви файл Ñлед %s"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+"Ðе може да Ñе комбинират --target-directory (-t) и --no-target-directory (-T)"
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, c-format
+msgid "target %s is not a directory"
+msgstr "целта %s не е каталог"
+
+#: src/cp.c:697
+#, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "Ñ --parents целта Ñ‚Ñ€Ñбва да бъде каталог"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr "опциÑта --reply е оÑтарÑла; ползвайте -i или -f вмеÑто неÑ"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, c-format
+msgid "multiple target directories specified"
+msgstr "поÑочени Ñа много целеви каталози"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "не може едновременно да Ñе правÑÑ‚ твърди и Ñимволни връзки"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "тип резервни копиÑ"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "входът изчезна"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: номерът на ред е извън диапазона"
+
+#: src/csplit.c:709
+#, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: %s: номерът на ред е извън диапазона"
+
+# Ðе е ÑÑно за какво Ñлужи това.
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr " при повтарÑне %s\n"
+
+#: src/csplit.c:755
+#, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: %s: не е открито ÑъответÑтвие"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "грешка при Ñ‚ÑŠÑ€Ñене на регулÑрен израз"
+
+#: src/csplit.c:984
+#, c-format
+msgid "write error for %s"
+msgstr "грешка при Ð·Ð°Ð¿Ð¸Ñ Ð·Ð° %s"
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: Ñлед разделител Ñе очаква цÑло чиÑло"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: при означаване брой Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð¸Ñ Ðµ необходим „}“"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: между „{“ и „}“ е необходимо цÑло чиÑло"
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: липÑва затварÑщ ограничител „%c“"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: неправилен регулÑрен израз: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: неправилен образец"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: номерът на ред Ñ‚Ñ€Ñбва да бъде положителен"
+
+#: src/csplit.c:1172
+#, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "номерът на ред %s е по-малък от Ð¿Ñ€ÐµÐ´Ñ…Ð¾Ð´Ð½Ð¸Ñ Ð½Ð¾Ð¼ÐµÑ€ - %s"
+
+#: src/csplit.c:1178
+#, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "внимание: номерът на ред %s Ñъвпада Ñ Ð¿Ñ€ÐµÐ´Ñ…Ð¾Ð´Ð½Ð¸Ñ Ð½Ð¾Ð¼ÐµÑ€ на ред"
+
+#: src/csplit.c:1231
+#, c-format
+msgid "invalid format width"
+msgstr "неправилна ширина на формат"
+
+#: src/csplit.c:1252
+#, c-format
+msgid "invalid format precision"
+msgstr "неправилна точноÑÑ‚ на формат"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "в ÑуфикÑа липÑва означител за преобразуване"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "неправилен означител за преобразуване в ÑуфикÑа: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "неправилен означител за преобразуване в ÑуфикÑа: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "твърде много означители за преобразуване %% в ÑуфикÑа"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "липÑва означител %% за преобразуване в ÑуфикÑа"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: недопуÑтимо чиÑло"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Използване: %s [ОПЦИЯ]... ФÐЙЛ ОБРÐЗЕЦ...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"ÐžÑ‚Ð´ÐµÐ»Ñ Ñ‡Ð°Ñтите на ФÐЙЛ, разделени от ОБРÐЗЕЦ(и) и ги запиÑва във файлове\n"
+"“xx01“, „xx02“,... Дължината им в байтове Ñе извежда на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n"
+"\n"
+
+#: src/csplit.c:1486
+#, fuzzy, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=ФОРМÐТ да Ñе ползва sprintf-ФОРМÐТ вмеÑто %02d\n"
+" -f, --prefix=ПРЕФИКС да Ñе ползва ПРЕФИКС вмеÑто „xx“\n"
+" -k, --keep-files да не Ñе изтриват Ñъздадените файлове при "
+"грешка\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=ЦИФРИ да Ñе използва поÑочениÑÑ‚ брой цифри вмеÑто 2\n"
+" -s, --quiet, --silent да не Ñе извеждат размерите на генерираните "
+"файлове\n"
+" -z, --elide-empty-files да Ñе изтриват генерираните празни файлове\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"Ðко ФÐЙЛ е -, Ñе чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´. Ð’Ñеки ОБРÐЗЕЦ може да бъде:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" ЦЯЛО_ЧИСЛО копира до поÑÐ¾Ñ‡ÐµÐ½Ð¸Ñ Ð½Ð¾Ð¼ÐµÑ€ на ред, без да го включва\n"
+" /РЕГИЗРÐЗ/[ОТМЕСТ] копира до отговарÑщ ред, но без да го включва\n"
+" %РЕГИЗРÐЗ%[ОТМЕСТ] пропуÑка до отговарÑщ ред, но без да го включва\n"
+" {ЦЯЛО_ЧИСЛО} Ð¿Ð¾Ð²Ñ‚Ð°Ñ€Ñ Ð¿Ñ€ÐµÐ´Ñ…Ð¾Ð´Ð½Ð¸Ñ Ð¾Ð±Ñ€Ð°Ð·ÐµÑ† поÑÐ¾Ñ‡ÐµÐ½Ð¸Ñ Ð±Ñ€Ð¾Ð¹ пъти\n"
+" {*} Ð¿Ð¾Ð²Ñ‚Ð°Ñ€Ñ Ð¿Ñ€ÐµÐ´Ñ…Ð¾Ð´Ð½Ð¸Ñ Ð¾Ð±Ñ€Ð°Ð·ÐµÑ† колкото пъти е възможно\n"
+"\n"
+"ОТМЕСТ мери брой редове и е положително чиÑло, предхождано от „+“ или „-“.\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Използване: %s [ОПЦИЯ]... [ФÐЙЛ]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"Отпечатва избраните чаÑти от редовете на вÑеки ФÐЙЛ на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n"
+"\n"
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=СПИСЪК извежда Ñамо тези байтове\n"
+" -c, --characters=СПИСЪК извежда Ñамо тези знаци\n"
+" -d, --delimiter=РÐЗДЕЛ РÐЗДЕЛ вмеÑто Ñ‚Ð°Ð±ÑƒÐ»Ð°Ñ†Ð¸Ñ ÐºÐ°Ñ‚Ð¾ разделител между "
+"полетата\n"
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=СПИС извежда Ñамо тези полета; отпечатва и вÑеки ред,\n"
+" който не Ñъдържа разделители между полетата, "
+"оÑвен\n"
+" ако е поÑочена и опциÑта -s.\n"
+" -n (пренебрегва Ñе)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+" --complement извежда допълнението на ÑъвкупноÑтта от избрани\n"
+" байтове, знаци или полета.\n"
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited да не Ñе отпечатват редове, неÑъдържащи "
+"разделители\n"
+" --output-delimiter=ÐИЗ да Ñе ползва ÐИЗ като разделител на изхода\n"
+" по подразбиране Ñе използва входниÑÑ‚ разделител\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+#, fuzzy
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Използвайте точно една от опциите -b, -c и -f. Ð’Ñеки СПИС Ñе ÑÑŠÑтои\n"
+"от един или повече диапазона, разделени ÑÑŠÑ Ð·Ð°Ð¿ÐµÑ‚Ð°Ð¸. Редовете Ñе\n"
+"извеждат в ÑÑŠÑ‰Ð¸Ñ Ñ€ÐµÐ´, в който Ñа били прочетени, и при това точно\n"
+"по веднъж. Ð’Ñеки диапазон е едно от Ñледните:\n"
+"\n"
+" n n-тиÑÑ‚ байт, знак или поле, броейки от 1\n"
+" n- от n-Ñ‚Ð¸Ñ Ð±Ð°Ð¹Ñ‚, знак или поле до ÐºÑ€Ð°Ñ Ð½Ð° реда\n"
+" n-m от n-Ñ‚Ð¸Ñ Ð´Ð¾ m-Ñ‚Ð¸Ñ (включително) байт, знак или поле\n"
+" -n от Ð¿ÑŠÑ€Ð²Ð¸Ñ Ð´Ð¾ m-Ñ‚Ð¸Ñ (включително) байт, знак или поле\n"
+"\n"
+"Без ФÐЙЛ или ако ФÐЙЛ е - Ñе чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "неправилен ÑпиÑък байтове или полета"
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr "байтовото отмеÑтване %s е твърде дълго"
+
+#: src/cut.c:472
+#, c-format
+msgid "field number %s is too large"
+msgstr "номерът на поле %s е твърде голÑм"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "Ñ‚Ñ€Ñбва да Ñе поÑочи Ñамо един вид ÑпиÑък"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "разделителÑÑ‚ Ñ‚Ñ€Ñбва да Ñе ÑÑŠÑтои от един знак"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "Ñ‚Ñ€Ñбва да поÑочите ÑпиÑък байтове, знаци или полета"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "входен разделител може да Ñе поÑочва Ñамо ако Ñе работи Ñ Ð¿Ð¾Ð»ÐµÑ‚Ð°"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"потиÑкането на редове, неÑъдържащи разделител, има ÑмиÑъл\n"
+"\tÑамо ако Ñе работи Ñ Ð¿Ð¾Ð»ÐµÑ‚Ð°"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "липÑва ÑпиÑък полета"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "липÑва ÑпиÑък позиции"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Използване: %s [ОПЦИЯ]... [+ФОРМÐТ]\n"
+" или: %s [-u|--utc|--universal] [ММДДччмм[[ГГ]ГГ][.ÑÑ]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"Извежда текущото време в поÑÐ¾Ñ‡ÐµÐ½Ð¸Ñ Ð¤ÐžÐ ÐœÐТ или уÑтановÑва датата на "
+"ÑиÑтемата.\n"
+"\n"
+" -d, --date=ÐИЗ извежда времето, поÑочено от ÐИЗ, вмеÑто „now“\n"
+" -f, --file=ФÐЙЛДÐТИ като --date по веднъж за вÑеки ред от ФÐЙЛДÐТИ\n"
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+#, fuzzy
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+" -r, --reference=ФÐЙЛ извежда времето на поÑледна промÑна на ФÐЙЛ\n"
+" -R, --rfc-2822 извежда датов низ Ñпоред RFC-2822\n"
+" --rfc-3339=ТОЧÐОСТ извежда датата и времето във формат RFC 3339.\n"
+" ТОЧÐОСТ може да бъде `date' (Ñамо датата), "
+"`seconds'\n"
+" (до Ñекунди) или `ns' (наноÑекунди)\n"
+" -s, --set=ÐИЗ наÑтройва ÑиÑтемното време да бъде поÑоченото в "
+"ÐИЗ\n"
+" -u, --utc, --universal отпечатва или наÑтройва гринуичко време\n"
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"\n"
+"ФОРМÐТ управлÑва изхода. ЕдинÑтвената допуÑтима Ð¾Ð¿Ñ†Ð¸Ñ Ð·Ð° втората форма е да "
+"Ñе\n"
+"поÑочи използването на гринуичко време. Разпознавани редици във ФОРМÐТ Ñа:\n"
+"\n"
+" %% знакът %\n"
+" %a Ñъкратено наименование на Ð´ÐµÐ½Ñ Ð¾Ñ‚ Ñедмицата Ñпоред локала (пн,вт,"
+"ÑÑ€,...)\n"
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A Ð´ÐµÐ½Ñ Ð¾Ñ‚ Ñедмицата Ñпоред локала, променлива дължина (напр. "
+"понеделник)\n"
+" %b Ñъкратено име на меÑеца Ñпоред локала (Ñну, фев, мар)\n"
+" %B име на меÑеца Ñпоред локала, променлива дължина (напр. Ñнуари)\n"
+" %c датата и чаÑÑŠÑ‚ Ñпоред локала (например Ñб ное 4 12:02:33 EЕТ 1989)\n"
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C векът, Ñ‚.е. като %Y, но без поÑледните две цифри (напр. 21)\n"
+" %d денÑÑ‚ от меÑеца (01, 02, ..., 31)\n"
+" %D датата; Ñъщото като %m/%d/%y\n"
+" %e денÑÑ‚ от меÑеца Ñ Ð¿ÑŠÐ»Ð½ÐµÐ¶ от интервал; Ñъщото като %_d (напр. „ 1“)\n"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+" %F пълната дата; Ñъщото като %Y-%m-%d\n"
+" %g поÑледните две цифри на годината, Ñъдържаща Ñедмицата Ñ Ð½Ð¾Ð¼ÐµÑ€ %V\n"
+" %G годината, Ñъдържаща Ñедмицата Ñ Ð½Ð¾Ð¼ÐµÑ€ %V\n"
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h Ñъщо като %b\n"
+" %H чаÑÑŠÑ‚ (00-23)\n"
+" %I чаÑÑŠÑ‚ (01-12)\n"
+" %j поредниÑÑ‚ ден в годината (001-366)\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k чаÑÑŠÑ‚ ( 0-23)\n"
+" %l чаÑÑŠÑ‚ ( 1-12)\n"
+" %m меÑецът (01-12)\n"
+" %M минутата (00-59)\n"
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+" %n нов ред\n"
+" %N наноÑекунди (000000000-999999999)\n"
+" %p указателÑÑ‚ AM или PM Ñ Ð³Ð»Ð°Ð²Ð½Ð¸ букви (празен в българÑÐºÐ¸Ñ Ð»Ð¾ÐºÐ°Ð»)\n"
+" %P като %p, но Ñ Ð¼Ð°Ð»ÐºÐ¸ букви\n"
+" %r 12 чаÑово време Ñпоред локала (напр. 11,11,04)\n"
+" %R 24 чаÑово време, Ñъщото като %H:%M\n"
+" %s Ñекундите изминали от 1 Ñнуари 1970, 00:00:00 по гринуич\n"
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+" %S Ñекундите (00-60); 60 вмеÑто 59, за да Ñе обхване и коригираща "
+"Ñекунда\n"
+" %t хоризонтална табулациÑ\n"
+" %T 24 чаÑово време, Ñъщото като %H:%M:%S\n"
+" %u денÑÑ‚ от Ñедмицата (1-7); 1 означава понеделник\n"
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U номерът на Ñедмицата в годината, Ð½ÐµÐ´ÐµÐ»Ñ Ðµ пръв Ñедмичен ден (00-53)\n"
+" %V номерът на Ñедмицата в годината, понеделник е пръв Ñедмичен ден (01-"
+"53)\n"
+" %w Ð´ÐµÐ½Ñ Ð¾Ñ‚ Ñедмицата (0-6); 0 означава неделÑ\n"
+" %W номерът на Ñедмицата в годината, понеделник е пръв Ñедмичен ден (00-"
+"53)\n"
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x датата, предÑтавена Ñпоред локала (напр. 31.12.99)\n"
+" %X времето, предÑтавено Ñпоред локала (напр. 23,13,48)\n"
+" %y поÑледните две цифри от годината (00-99)\n"
+" %Y годината\n"
+
+#: src/date.c:223
+#, fuzzy
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+" %z +hhmm чаÑови поÑÑ ÐºÐ°Ñ‚Ð¾ чиÑло (напр. -0400)\n"
+" %:z +hh:mm чаÑÐ¾Ð²Ð¸Ñ Ð¿Ð¾ÑÑ ÐºÐ°Ñ‚Ð¾ чаÑ:минути (напр. -04:00)\n"
+" %::z +hh:mm:ss чаÑÐ¾Ð²Ð¸Ñ Ð¿Ð¾ÑÑ ÐºÐ°Ñ‚Ð¾ чаÑ:минути:Ñекунди (напр. -04:00:00)\n"
+" %:::z едно от горните Ñамо до необходимата точноÑÑ‚ (напр. -04, +05:30)\n"
+" %Z Ñъкращение за Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð½Ð¸Ñ Ñ‡Ð°Ñови поÑÑ (напр. EEST за времето в "
+"БългариÑ)\n"
+"\n"
+"По подразбиране date допълва чиÑловите полета Ñ Ð½ÑƒÐ»Ð¸.\n"
+"Следните флагове могат да Ñледват „%“:\n"
+"\n"
+" - (минуÑ) да не Ñе допълва Ñ Ð½ÑƒÐ»Ð¸\n"
+" _ (знак за подчертаване) да Ñе допълва Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð»Ð¸\n"
+" 0 (нула) да Ñе допълва Ñ Ð½ÑƒÐ»Ð¸\n"
+" ^ да Ñе използват главни букви, където може\n"
+" # да Ñе използват малки букви, където може\n"
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+"\n"
+"След кой да е от флаговете може да бъде поÑочена ширина на полето във вид "
+"на\n"
+"деÑетично чиÑло, Ñлед което може да е зададен още един от Ñледните "
+"модификатори:\n"
+"\n"
+"E за да Ñе използва алтернативното предÑтавÑне Ñпоред локала, или\n"
+"O за да Ñе използват алтернативните чиÑлови знаци, ако ги има.\n"
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "ÑтандартниÑÑ‚ вход"
+
+#: src/date.c:297 src/date.c:517
+#, c-format
+msgid "invalid date %s"
+msgstr "неправилна дата %s"
+
+#: src/date.c:408 src/date.c:442
+#, c-format
+msgid "multiple output formats specified"
+msgstr "поÑочени Ñа много формати за изхода"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "поÑочените опции за дати за отпечатване Ñа взаимно изключващи Ñе"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr ""
+"не може едновременно да Ñе използват опции за отпечатване и наÑтройка на "
+"времето"
+
+#: src/date.c:448
+#, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"липÑва начален знак „+“ за аргумента %s.\n"
+"При използване на Ð¾Ð¿Ñ†Ð¸Ñ Ð·Ð° поÑочване на дата/дати, вÑеки задължителен "
+"аргумент\n"
+"Ñ‚Ñ€Ñбва да бъде форматен низ, започващ Ñ â€ž+“."
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "не може да Ñе наÑтрои датата"
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "времето %s е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½"
+
+#: src/dd.c:404
+#, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Използване: %s [ОПЕРÐÐД]...\n"
+" или: %s ОПЦИЯ\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"Копира файл, преобразуван и форматиран Ñпоред поÑочените опции.\n"
+"\n"
+" bs=БÐЙТОВЕ еквивалентно на „ibs=БÐЙТОВЕ obs=БÐЙТОВЕ“\n"
+" cbs=БÐЙТОВЕ преобразува на парчета от по БÐЙТОВЕ байта\n"
+" conv=КЛЮЧДУМИ преобразува файла ÑъглаÑно ÑпиÑъка КЛЮЧДУМИ\n"
+" count=БЛОКОВЕ копира Ñамо БЛОКОВЕ входни блока\n"
+" ibs=БÐЙТОВЕ чете на парчета от по БÐЙТОВЕ байта\n"
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=ФÐЙЛ чете от ФÐЙЛ вмеÑто от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´\n"
+" iflag=ФЛÐГ,... чете Ñпоред поÑочените флагове\n"
+" obs=БÐЙТОВЕ запиÑва на парчета от по БÐЙТОВЕ байта\n"
+" of=ФÐЙЛ запиÑва във ФÐЙЛ, вмеÑто на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´\n"
+" oflag=ФЛÐГ,... запиÑва Ñпоред поÑочените флагове\n"
+" seek=БЛОКОВЕ пропуÑка БЛОКОВЕ изходни блока Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€ obs вÑеки\n"
+" skip=БЛОКОВЕ пропуÑка БЛОКОВЕ входни блока Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€ ibs вÑеки\n"
+" status=noxfer без ÑтатиÑтика за транÑфера\n"
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"БЛОКОВЕ и БÐЙТОВЕ могат да бъдат Ñледвани от Ñледните ÑуфикÑи-множители:\n"
+"xM=M, c=1, w=2, b=512, kB=1000, K=1024, MB=1000*1000, M=1024*1024,\n"
+"GB=1000*1000*1000, G=1024*1024*1024 и аналогично за T, P, E, Z и Y.\n"
+"Ð’ÑÑка КЛЮЧДУМРможе да бъде:\n"
+"\n"
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii от EBCDIC към ASCII\n"
+" ebcdic от ASCII към EBCDIC\n"
+" ibm от ASCII към алтернативен EBCDIC\n"
+" block попълва блоковете, завършващи Ñ Ð½Ð¾Ð² ред, Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð»Ð¸ до размер "
+"cbs\n"
+" unblock Ð·Ð°Ð¼ÐµÐ½Ñ ÐºÑ€Ð°Ð¹Ð½Ð¸Ñ‚Ðµ интервали във вÑеки блок Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€ cbs Ñ Ð½Ð¾Ð²Ð¸ "
+"редове\n"
+" lcase Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ð¾Ñ‚ главни в малки букви\n"
+
+#: src/dd.c:445
+#, fuzzy
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+" nocreat да не Ñе Ñъздава Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»\n"
+" excl да не дейÑтва, ако Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» вече ÑъщеÑтвува\n"
+" notrunc да не Ñъкращава Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»\n"
+" ucase Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ð¾Ñ‚ малки в главни букви\n"
+" swab Ñ€Ð°Ð·Ð¼ÐµÐ½Ñ Ð²ÑÑка двойка входни байтове\n"
+" noerror продължава дори при възникване на грешка\n"
+" sync попълва вÑеки входен блок Ñ Ð½ÑƒÐ»Ð¸ до размера на Ð²Ñ…Ð¾Ð´Ð½Ð¸Ñ Ð±Ð»Ð¾Ðº; "
+"при\n"
+" използване Ñ block или unblock попълва Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð»Ð¸ вмеÑто Ñ "
+"нули\n"
+" fdatasync запиÑва физичеÑки изходните данни още преди пълното приключване\n"
+" fsync подобно, но оÑвен това запиÑва и метаданните\n"
+
+#: src/dd.c:452
+#, fuzzy
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+" nocreat да не Ñе Ñъздава Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»\n"
+" excl да не дейÑтва, ако Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» вече ÑъщеÑтвува\n"
+" notrunc да не Ñъкращава Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»\n"
+" ucase Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ð¾Ñ‚ малки в главни букви\n"
+" swab Ñ€Ð°Ð·Ð¼ÐµÐ½Ñ Ð²ÑÑка двойка входни байтове\n"
+" noerror продължава дори при възникване на грешка\n"
+" sync попълва вÑеки входен блок Ñ Ð½ÑƒÐ»Ð¸ до размера на Ð²Ñ…Ð¾Ð´Ð½Ð¸Ñ Ð±Ð»Ð¾Ðº; "
+"при\n"
+" използване Ñ block или unblock попълва Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð»Ð¸ вмеÑто Ñ "
+"нули\n"
+" fdatasync запиÑва физичеÑки изходните данни още преди пълното приключване\n"
+" fsync подобно, но оÑвен това запиÑва и метаданните\n"
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+"\n"
+"Ð’Ñеки знак за ФЛÐГ може да бъде:\n"
+"\n"
+" append режим добавÑне (ÑмиÑлено Ñамо за изхода, препоръчва Ñе "
+"conv=notrunc)\n"
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+" direct да Ñе използват директни входно/изходни операции за данните\n"
+
+#: src/dd.c:468
+msgid " directory fail unless a directory\n"
+msgstr " directory отказва да работи, оÑвен при каталог\n"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+" dsync да Ñе използват Ñинхронизирани входно/изходни операции за "
+"данните\n"
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+" sync подобно, но Ñъщо и за метаданните (напр. на файловата ÑиÑтема)\n"
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr " nonblock да Ñе използват неблокиращи входно/изходни операции\n"
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr " noatime да не Ñе обновÑва времето за доÑтъп\n"
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr " noctty да не Ñе Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñващ терминал от файл\n"
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr " nofollow да не Ñе Ñледват Ñимволните връзки\n"
+
+# TODO: наиÑтина ли Ñе имат предвид твърди връзки?
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr " nolinks отказва да работи при множеÑтво твърди връзки\n"
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+" binary да Ñе използват двоични входно/изходни операции за данните\n"
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+" text да Ñе използват текÑтови входно/изходни операции за данните\n"
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+"\n"
+"Изпращането на Ñигнал %s към към работещ Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ždd“ го кара да изведе\n"
+"на Ñтандартната грешка ÑтатиÑтика за Ð±Ñ€Ð¾Ñ Ð¿Ñ€Ð¾Ñ‡ÐµÑ‚ÐµÐ½Ð¸ и запиÑани до\n"
+"момента блокове, Ñлед което копирането продължава.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 прочетени блока\n"
+" 18335302+0 запиÑани блока\n"
+" изкопирани Ñа 9387674624 байта (9.4 GB) за 34,6279 Ñекунди Ñ 271 MB/s\n"
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+"%<PRIuMAX>+%<PRIuMAX> прочетени блока\n"
+"%<PRIuMAX>+%<PRIuMAX> запиÑани блока\n"
+
+#: src/dd.c:553
+#, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "%<PRIuMAX> Ñъкратен запиÑ\n"
+msgstr[1] "%<PRIuMAX> Ñъкратени запиÑа\n"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] "изкопиран е %<PRIuMAX> байт (%s)"
+msgstr[1] "изкопирани Ñа %<PRIuMAX> байта (%s)"
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr "Безброй"
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ", %g s, %s/s\n"
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "затварÑне на Ð²Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» %s"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "затварÑне на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» %s"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "Ð·Ð°Ð¿Ð¸Ñ Ð² %s"
+
+#: src/dd.c:886
+#, c-format
+msgid "unrecognized operand %s"
+msgstr "непознат операнд %s"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "неправилно поÑочено преобразуване: %s"
+
+#: src/dd.c:900
+#, c-format
+msgid "invalid input flag: %s"
+msgstr "непознат входен флаг: %s"
+
+#: src/dd.c:903
+#, c-format
+msgid "invalid output flag: %s"
+msgstr "непознат изходен флаг: %s"
+
+#: src/dd.c:906
+#, c-format
+msgid "invalid status flag: %s"
+msgstr "непознат флаг за ÑÑŠÑтоÑние: %s"
+
+#: src/dd.c:942
+#, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "непознат операнд %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "недопуÑтимо чиÑло %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr "не може да Ñе комбинират никои две от {ascii,ebcdic,ibm}"
+
+#: src/dd.c:973
+#, c-format
+msgid "cannot combine block and unblock"
+msgstr "не може да Ñе комбинират block и unblock"
+
+#: src/dd.c:975
+#, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "не може да Ñе комбинират lcase и ucase"
+
+#: src/dd.c:977
+#, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "не може да Ñе комбинират excl и nocreat"
+
+# Това ме мързи да го превеждам.
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, c-format
+msgid "%s: cannot seek"
+msgstr "%s: неуÑпешно позициониране"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr "препълване на отмеÑтването при четене на файла %s"
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "внимание: Ñъмнително отмеÑтване във файла Ñлед пропаднало четене"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr "в крайна Ñметка не може да Ñе компенÑира грешката в Ñдрото"
+
+#: src/dd.c:1376
+#, c-format
+msgid "setting flags for %s"
+msgstr "задейÑтват Ñе флаговете за %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr "неуÑпешно извикване на fdatasync за %s"
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr "неуÑпешнен Ð·Ð°Ð¿Ð¸Ñ (fsync) за %s"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "отварÑне на %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+"твърде голÑмо отмеÑтване: не може да Ñе отреже до дължината на seek=%"
+"<PRIuMAX> (%lu-byte) блокове"
+
+#: src/dd.c:1730
+#, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "Ñъкращаване до %<PRIuMAX> байта в Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» %s"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "Файлова Ñ-ма Тип "
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "Файлова Ñ-ма "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " I-възли Заети Свобод Изп%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Размер Заети Своб Изп%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Размер Заети Свобод Изп%%"
+
+#: src/df.c:165
+#, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %s-блокове Заети Свободни Обем"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " %3s-блокове Заети Свободни Изп%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Монтирана на\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "не може да Ñе определи кой е текущиÑÑ‚ каталог"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "не може да Ñе влезе в каталога %s"
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "не може да Ñе намери текущиÑÑ‚ каталог (Ñега %s)"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"Дава Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° файловата ÑиÑтема, Ñъдържаща вÑеки от ФÐЙЛ-овете\n"
+"или за вÑички файлови ÑиÑтеми по подразбиране.\n"
+"\n"
+
+#: src/df.c:749
+#, fuzzy
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all включително празните файлови ÑиÑтеми (Ñ 0 блокове)\n"
+" -B, --block-size=РÐЗМ да Ñе ползват блокове Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€ РÐЗМ байта\n"
+" -h, --human-readable извежда размерите като за хора (напр. 1K, 234M, 2G)\n"
+" -H, --si подобно, но Ñ Ð¼Ð½Ð¾Ð¶Ð¸Ñ‚ÐµÐ» 1000 вмеÑто 1024\n"
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° използваните i-възли, а не "
+"блокове\n"
+" -k като --block-size=1K\n"
+" -l, --local извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ñамо за локалните файлови "
+"ÑиÑтеми\n"
+" --no-sync без sync преди получаване на използването (по "
+"подразб.)\n"
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability да Ñе използва изходен формат POSIX\n"
+" --sync изпълнÑва sync преди получаване на информациÑ\n"
+" -t, --type=ТИП извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ñамо за файлови ÑиÑтеми от тип "
+"ТИП\n"
+" -T, --print-type извежда типа на файловата ÑиÑтема\n"
+" -x, --exclude-type=ТИП не извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° файлови ÑиÑтеми от тип "
+"ТИП\n"
+" -v (пренебрегва Ñе)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"РÐЗМ Ñе ÑÑŠÑтои от незадължително цÑло чиÑло, Ñледвано от едно от:\n"
+"kB=1000, K=1024, MB=1000*1000, M=1024*1024 и аналогично за G, T, P, E, Z и "
+"Y.\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr "опциÑта --kilobytes е оÑтарÑла; ползвайте -k вмеÑто неÑ"
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "файловите ÑиÑтеми от тип %s Ñа едновременно избрани и изключени"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Внимание: "
+
+#: src/df.c:943
+#, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%sне може да Ñе прочете таблицата на монтирани файлови ÑиÑтеми"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr "нито една файлова ÑиÑтема не бе обработена"
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Използване: %s [ОПЦИЯ]... [ФÐЙЛ]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Извежда команди за приÑвоÑване ÑтойноÑÑ‚ на променливата LS_COLORS.\n"
+"\n"
+"Опции, определÑщи формата на изхода:\n"
+" -b, --sh, --bourne-shell извежда код за обвивка на Бурн\n"
+" -c, --csh, --c-shell извежда код за Си-обвивка\n"
+" -p, --print-database извежда ÑтойноÑтите по подразбиране\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"Ðко е поÑочен, ФÐЙЛ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ ÐºÐ°ÐºÐ²Ð¸ цветове да Ñе използват за различните\n"
+"файлови типове и разширениÑ. Ð’ противен Ñлучай Ñе използва вградена база "
+"данни.\n"
+"За подробноÑти отноÑно формата на ФÐЙЛ, изпълнете „dircolors --print-"
+"database“.\n"
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s:%lu: неправилен ред; липÑва втора лекÑема"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu: непозната ключова дума %s"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<интервал>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"опциите за извеждане на вътрешната база данни на dircolors и\n"
+"за избор на обвивка Ñе изключват взаимно"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr "Файлови операнди не може да Ñе комбинират Ñ --print-database (-p)."
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "променливата SHELL нÑма ÑтойноÑÑ‚, а не дадена и Ð¾Ð¿Ñ†Ð¸Ñ Ð·Ð° тип обвивка"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Използване: %s ИМЕ\n"
+" или: %s ОПЦИЯ\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"ОтÑтранÑва от ИМЕ крайната /чаÑÑ‚ и го извежда, а в Ñлучай, че ИМЕ не "
+"Ñъдържа /,\n"
+"извежда „.“ (като по този начин означава Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³).\n"
+"\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+"\n"
+"Примери:\n"
+" %s /usr/bin/sort извежда „/usr/bin“.\n"
+" %s stdio.h извежда „.“.\n"
+
+#: src/du.c:279 src/wc.c:108
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Използване: %s [ОПЦИЯ]... [ФÐЙЛ]...\n"
+" или: %s [ОПЦИЯ]... --files0-from==Ф\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"Резюмира използването на диÑка от вÑеки ФÐЙЛ, рекурÑивно за каталозите.\n"
+"\n"
+
+#: src/du.c:290
+#, fuzzy
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+" -a, --all извежда Ñума за вÑички файлове, не Ñамо за "
+"каталозите\n"
+" --apparent-size извежда дейÑтвителни размери, а не използваното "
+"диÑково\n"
+" проÑтранÑтво. Обикновено дейÑтвителниÑÑ‚ размер е\n"
+" по-малък, но може да бъде и по-голÑм в ÑледÑтвие "
+"на\n"
+" дупки в „разредени“ (sparse) файлове, вътрешна\n"
+" фрагментациÑ, недиректни блокове и други подобни.\n"
+" -B, --block-size=РÐЗМ да Ñе ползват блокове Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€ РÐЗМ байта\n"
+" -b, --bytes отпечатва размера в байтове\n"
+" -c, --total преÑмÑта и обща Ñума на използването\n"
+" -D, --dereference-args работи върху файловете, Ñочени от ФÐЙЛ-Ñимволна "
+"връзка\n"
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+#, fuzzy
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+" --files0-from=Ф резюмира използваното диÑково проÑтранÑтво от "
+"файловите\n"
+" имена ÑÑŠÑ Ð·Ð°Ð²ÑŠÑ€ÑˆÐ¸Ñ‚ÐµÐ» NUL, поÑочени във файла Ф\n"
+" -H като --si, но генерира предупреждение; Ñкоро ще "
+"бъде\n"
+" променено да бъде Ñъщото като --dereference-args (-"
+"D)\n"
+" -h, --human-readable отпечатва размерите като за хора (напр. 1K, 234M, "
+"2G)\n"
+" --si подобно, но Ñ Ð¼Ð½Ð¾Ð¶Ð¸Ñ‚ÐµÐ»Ð¸ 1000 вмеÑто 1024\n"
+" -k Ñъщо като --block-size=1K\n"
+" -l, --count-links брои размерите многократно при твърди връзки\n"
+" -m Ñъщо като --block-size=1M\n"
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference работи върху файловете, Ñочени от Ñимволни връзки\n"
+" -P, --no-dereference да не Ñе Ñледват Ñимволни връзки (по подразбиране)\n"
+" -0, --null завършва вÑеки изведен ред Ñ Ð±Ð°Ð¹Ñ‚ 0 вмеÑто Ñ Ð½Ð¾Ð² "
+"ред\n"
+" -S, --separate-dirs да не Ñе включва размерът на подкаталозите\n"
+" -s, --summarize резюмира -- извежда Ñамо общата Ñума за вÑеки "
+"аргумент\n"
+
+#: src/du.c:323
+#, fuzzy
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system пропуÑка каталозите, които Ñа в друга файлова "
+"ÑиÑтема\n"
+" -X ФÐЙЛ, --exclude-from=ФÐЙЛ изключва файлове, паÑващи на образец от "
+"ФÐЙЛ\n"
+" --exclude=ОБРÐЗЕЦ изключва файлове, чието име паÑва на ОБРÐЗЕЦ\n"
+" --max-depth=N отпечатва общ размер на каталози (или файлове Ñ --"
+"all)\n"
+" Ñамо ако те Ñа Ñ N или по-малко нива под "
+"аргумента\n"
+" на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´; --max-depth=0 е еквивалентно "
+"на\n"
+" --summarize\n"
+
+#: src/du.c:332
+#, fuzzy
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+" --time показва времето на поÑледна промÑна на вÑеки файл "
+"от\n"
+" каталога или вÑеки от подкаталозите му\n"
+" --time=ДУМРпоказва времето от ДУМРвмеÑто поÑледната промÑна.\n"
+" ДУМРможе да бъде atime, access, use, ctime или "
+"status\n"
+" --time-style=СТИЛ показва времената използвайки Ñтил СТИЛ, Ñ‚.е.\n"
+" full-iso, long-iso, iso или +ФОРМÐТ\n"
+" ФОРМÐТ Ñе интерпретира както от „date“\n"
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "общо"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+"Ð’ÐИМÐÐИЕ: ползвайте --si вмеÑто -H; Ñкоро дейÑтвието на опциÑта -H ще бъде\n"
+"променено да бъде Ñъщото като това на опциÑта --dereference-args (-D)"
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "неправилна макÑимална дълбочина %s"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr "опциÑта --megabytes е оÑтарÑла; ползвайте -m вмеÑто неÑ"
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "не може едновременно да Ñе резюмира и да Ñе показват вÑички елементи"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "внимание: резюмирането е еквивалентно на --max-depth=0"
+
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "внимание: резюмирането влиза в конфликт Ñ --max-depth=%lu"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr "Ðе може да Ñе комбинират файлови операнди Ñ --files0-from."
+
+#: src/du.c:960 src/wc.c:662
+#, c-format
+msgid "cannot read file names from %s"
+msgstr "не може да Ñе четат файлови имена от %s"
+
+#: src/du.c:1000 src/du.c:1003
+msgid "invalid zero-length file name"
+msgstr "неправилно файлово име Ñ Ð´ÑŠÐ»Ð¶Ð¸Ð½Ð° нула"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Използване: %s [ОПЦИЯ]... [ÐИЗ]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+"Извежда ÐИЗовете на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n"
+"\n"
+" -n не извежда знаци за нов ред Ñлед вÑеки от ÐИЗовете\n"
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+" -e позволÑва обработката знаци, защитени Ñ \\ (по "
+"подразбиране)\n"
+" -E забранÑва Ñпециалната обработка на \\\n"
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"Ðко е в Ñила -e, Ñе разпознават и интерпретират Ñледните поÑледователноÑти:\n"
+"\n"
+" \\NNN знакът, чийто оÑмичен ASCII код е NNN\n"
+" \\\\ обратно наклонена черта\n"
+" \\a звуков Ñигнал (BEL)\n"
+" \\b връщане назад (backspace)\n"
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c забранÑва Ð½Ð¾Ð²Ð¸Ñ Ñ€ÐµÐ´ в краÑ\n"
+" \\f нова Ñтраница (FF)\n"
+" \\n нов ред (LF)\n"
+" \\r връщане на курÑора (CR)\n"
+" \\t хоризонтална Ñ‚Ð°Ð±ÑƒÐ»Ð°Ñ†Ð¸Ñ (HT)\n"
+" \\v вертикална Ñ‚Ð°Ð±ÑƒÐ»Ð°Ñ†Ð¸Ñ (VT)\n"
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr ""
+"Използване: %s [ОПЦИЯ]... [-] [ПРОМЕÐЛИВÐ=СТОЙÐОСТ]... [КОМÐÐДР[ÐРГ]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"ПриÑвоÑва СТОЙÐОСТ на вÑÑка ПРОМЕÐЛИВРи изпълнÑва КОМÐÐДРв новото "
+"обкръжение.\n"
+"\n"
+" -i, --ignore-environment започва Ñ Ð¿Ñ€Ð°Ð·Ð½Ð¾ обкръжение\n"
+" -u, --unset=ПРОМЕÐЛИВРотÑтранÑва променливата от обкръжението\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"ПроÑто - означава -i. Ðко не е дадена КОМÐÐДÐ, отпечатва полученото "
+"обкръжение.\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"ЗамеÑтва табулациите във вÑеки ФÐЙЛ Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð»Ð¸ и извежда на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ "
+"изход.\n"
+"Без ФÐЙЛ или ако ФÐЙЛ е - чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+"\n"
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial не преобразува табулациите Ñлед не-интервал\n"
+" -t, --tabs=БРОЙ работи Ñ Ñ‚Ð°Ð±ÑƒÐ»Ð°Ñ†Ð¸Ð¸ през БРОЙ интервала вмеÑто през 8\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+" -t, --tabs=СПИС да Ñе ползва ÑпиÑък от Ñвно зададени табулационни "
+"позиции\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr "табулациÑта е твърде дълга %s"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "размерът на табулациите включва непозволен знак: %s"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "размерът на табулациите не може да бъде 0"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "позициите на табулациите Ñ‚Ñ€Ñбва да Ñа в нараÑтващ ред"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, c-format
+msgid "input line is too long"
+msgstr "входниÑÑ‚ ред е твърде дълъг"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Използване: %s ИЗРÐЗ\n"
+" или: %s ОПЦИЯ\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"\n"
+"Отпечатва ÑтойноÑтта на ИЗРÐЗ на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´. По-долу празни редове\n"
+"отделÑÑ‚ групите операции Ñ Ð½Ð°Ñ€Ð°Ñтващ приоритет. ИЗРÐЗ може да бъде:\n"
+"\n"
+" ARG1 | ARG2 ARG1, ако той не е нито празен, нито 0, а иначе ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1, ако никой от аргументите не е празен или 0, иначе "
+"0\n"
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"\n"
+" ARG1 < ARG2 ARG1 е по-малък от ARG2\n"
+" ARG1 <= ARG2 ARG1 е по-малък или равен на ARG2\n"
+" ARG1 = ARG2 ARG1 е равен на ARG2\n"
+" ARG1 != ARG2 ARG1 е различен от ARG2\n"
+" ARG1 >= ARG2 ARG1 е по-голÑм или равен на ARG2\n"
+" ARG1 > ARG2 ARG1 е по-голÑм от ARG2\n"
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+"\n"
+" ARG1 + ARG2 аритметична Ñума на ARG1 и ARG2\n"
+" ARG1 - ARG2 аритметична разлика на ARG1 и ARG2\n"
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+"\n"
+" ARG1 * ARG2 аритметично произведение на ARG1 и ARG2\n"
+" ARG1 / ARG2 аритметично чаÑтно на ARG1 разделен на ARG2\n"
+" ARG1 % ARG2 аритметичен оÑтатък на ARG1 разделен на ARG2\n"
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"\n"
+" ÐИЗ : РЕГИЗР Ñтриктно (anchored) ÑъпоÑтавÑне на образеца РЕГИЗР в "
+"ÐИЗ\n"
+"\n"
+" match ÐИЗ РЕГИЗР Ñъщото като ÐИЗ : РЕГИЗР\n"
+" substr ÐИЗ ПОЗИЦ ДЪЛЖ подниз на ÐИЗ, ПОЗИЦ Ñе брои от 1\n"
+" index ÐИЗ ЗÐÐЦИ мÑÑто в ÐИЗ, където Ñе намира нÑкой от ЗÐÐЦИ, "
+"или 0\n"
+" length ÐИЗ дължината на ÐИЗ\n"
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+" + ЛЕКСЕМРразглежда ЛЕКСЕМРкато низ дори и ако е\n"
+" ключова дума като „match“ или оператор като "
+"„/“\n"
+"\n"
+" ( ИЗРÐЗ ) ÑтойноÑтта на ИЗРÐЗ\n"
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"Ð’ командните обвивки Ñ‚Ñ€Ñбва да защитавате много от операторите Ñ ÐºÐ°Ð²Ð¸Ñ‡ÐºÐ¸ или "
+"\\.\n"
+"СравнениÑта Ñа аритметични, ако и двата ARG Ñа чиÑла, а иначе "
+"лекÑикографÑки.\n"
+"СъпоÑтавÑниÑта Ñ Ð¾Ð±Ñ€Ð°Ð·ÐµÑ† връщат низа, паÑнал между първите \\( и \\) или "
+"празен,\n"
+"а ако не Ñа използвани \\( и \\) връща Ð±Ñ€Ð¾Ñ Ð¿Ð°Ñнали знаци или 0.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+"\n"
+"Кодът на завършване е 0, ако ИЗРÐЗ не е нито празен, нито 0; 1, ако ИЗРÐЗ е\n"
+"празен или 0; 2, ако ИЗРÐЗ е Ñинтактично неправилен и 3, ако е Ñтанала "
+"грешка.\n"
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "Ñинтактична грешка"
+
+#: src/expr.c:468 src/ptx.c:292
+#, c-format
+msgid "error in regular expression matcher"
+msgstr "грешка при паÑването на регулÑÑ€Ð½Ð¸Ñ Ð¸Ð·Ñ€Ð°Ð·"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "нечиÑлов аргумент"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "делене на нула"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Използване: %s [ЧИСЛО]...\n"
+" или: %s ОПЦИЯ\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"Отпечатва проÑтите множители на вÑÑко ЧИСЛО.\n"
+"\n"
+
+#: src/factor.c:85
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+" Отпечатва проÑтите множители на вÑички поÑочени целочиÑлени ЧИСЛÐ. При "
+"липÑа\n"
+" на аргументи на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´, чиÑлата Ñе четат от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s е твърде дълго"
+
+#: src/factor.c:158
+#, c-format
+msgid "%s is not a valid positive integer"
+msgstr "%s не е правилно положително цÑло чиÑло"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Използване: %s [-ШИРИÐÐ] [ОПЦИЯ]... [ФÐЙЛ]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"Преформатира вÑеки абзац във ФÐЙЛовете, извеждайки на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n"
+"Ðко нÑма поÑочен ФÐЙЛ или ако ФÐЙЛ е „-“, чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+"\n"
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin запазва отÑтъпа на първите два реда\n"
+" -p, --prefix=ÐИЗ преформатира Ñамо редовете, започващи Ñ ÐИЗ. "
+"Маха\n"
+" ÐИЗ, форматира, Ñлед което Ð´Ð¾Ð±Ð°Ð²Ñ Ð¿Ð°Ðº ÐИЗ\n"
+" -s, --split-only цепи дългите редове, но не попълва къÑите\n"
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph отÑтъпа на Ð¿ÑŠÑ€Ð²Ð¸Ñ Ñ€ÐµÐ´ да Ñе отличава от вториÑ\n"
+" -u, --uniform-spacing един интервал между думите, два между изречениÑ\n"
+" -w, --width=ШИРИÐРмакÑимална ширина на реда (по подразбиране 75 "
+"знака)\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+"неправилна Ð¾Ð¿Ñ†Ð¸Ñ -- %c; -ШИРИÐÐ Ñе разпознава Ñамо ако е първа опциÑ;\n"
+"в противен Ñлучай ползвайте -w ШИРИÐÐ"
+
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr "неправилна ширина: %s"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"Развива поредово входните редове на вÑеки ФÐЙЛ (или ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´), като\n"
+"извежда резултата на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes брои байтовете, вмеÑто Ñтълбовете\n"
+" -s, --spaces прекъÑва при интервали\n"
+" -w, --width=ШИРИÐРда Ñе ползват ШИРИÐÐ Ñтълбове, вмеÑто 80\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, c-format
+msgid "invalid number of columns: %s"
+msgstr "неправилен номер Ñтълбове: %s"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Извежда първите 10 реда от вÑеки ФÐЙЛ на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n"
+"При повече от един ФÐЙЛ, поÑÑ‚Ð°Ð²Ñ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ñ Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ‚Ðµ имена.\n"
+"При отÑÑŠÑтвие на ФÐЙЛ или ако ФÐЙЛ е -, чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+" -c, --bytes=[-]N извежда първите N байта от вÑеки файл;\n"
+" ÑÑŠÑ Ð·Ð½Ð°Ðº Ð¼Ð¸Ð½ÑƒÑ Ð¿Ñ€ÐµÐ´Ð¸ N извежда вÑички, оÑвен\n"
+" поÑледните N байта от вÑеки файл\n"
+" -n, --lines=[-]N извежда първите N реда вмеÑто първите 10;\n"
+" ÑÑŠÑ Ð·Ð½Ð°Ðº Ð¼Ð¸Ð½ÑƒÑ Ð¿Ñ€ÐµÐ´Ð¸ N извежда вÑички, оÑвен\n"
+" поÑледните N реда от вÑеки файл\n"
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent да не Ñе извеждат Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ñ Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ‚Ðµ имена\n"
+" -v, --verbose винаги да извежда Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ñ Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ‚Ðµ имена\n"
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"N може да има ÑуфикÑ-множител: b за 512, k за 1024, m за 1024*1024.\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "грешка при четене на %s"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "грешка при Ð·Ð°Ð¿Ð¸Ñ Ð² %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr "%s: файлът Ñе е Ñвил твърде много"
+
+#: src/head.c:230 src/head.c:1046
+#, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s: твърде голÑм брой байтове"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: не може да Ñе отиде на първоначалното мÑÑто във файла"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: не може да Ñе отиде на отмеÑтване %s във файла"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "не може да Ñе Ñмени мÑÑтото на Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ» за %s"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s е толкова голÑм, че не е изводим"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "брой на редовете"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "количеÑтво байтове"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "недопуÑтим брой редове"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "недопуÑтимо количеÑтво байтове"
+
+# TODO: Как да Ñе праведе trailing?
+#: src/head.c:976 src/head.c:1034
+#, c-format
+msgid "invalid trailing option -- %c"
+msgstr "неправилна Ð¾Ð¿Ñ†Ð¸Ñ -- %c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Използване: %s\n"
+" или: %s ОПЦИЯ\n"
+"Извежда шеÑтнадеÑетичен чиÑлов идентификатор на хоÑта.\n"
+"\n"
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Използване: %s [ИМЕ]\n"
+" или: %s ОПЦИЯ\n"
+"Извежда или задава хоÑÑ‚-името на текущата ÑиÑтема.\n"
+"\n"
+
+#: src/hostname.c:103
+#, c-format
+msgid "cannot set name to %s"
+msgstr "името не може да Ñе направи %s"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+"не може да Ñе задава хоÑÑ‚-име, тази ÑиÑтема не притежава такава възможноÑÑ‚"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "хоÑÑ‚-името не може да бъде определено"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Използване: %s [ОПЦИЯ]... [ПОТРЕБИТЕЛ]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° ПОТРЕБИТЕЛ или Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ».\n"
+"\n"
+" -a пренебрегва Ñе; за ÑъвмеÑтимоÑÑ‚ Ñ Ð¿Ñ€ÐµÐ´Ð¸ÑˆÐ½Ð¸ верÑии\n"
+" -g, --group извежда Ñамо номера на дейÑтващата (effective) група\n"
+" -G, --groups извежда номерата на вÑички групи\n"
+" -n, --name извежда име вмеÑто номер; -ugG\n"
+" -r, --real извежда реалните (real) вмеÑто дейÑтващите номера, Ñ -ugG\n"
+" -u, --user извежда Ñамо номера на дейÑÑ‚Ð²Ð°Ñ‰Ð¸Ñ (effective) потребител\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"Без никаква ОПЦИЯ проÑто отпечатва полезна идентификационна информациÑ.\n"
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "не може да Ñе извежда хем Ñамо потребителÑÑ‚, хем Ñамо групата"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr ""
+"не може да Ñе извеждат Ñамо имена или номера във формата по подразбиране"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: ÐÑма такъв потребител"
+
+#: src/id.c:205
+#, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "не може да Ñе намери името на потребител Ñ Ð½Ð¾Ð¼ÐµÑ€ %lu"
+
+#: src/id.c:229
+#, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "не може да Ñе намери името на група Ñ Ð½Ð¾Ð¼ÐµÑ€ %lu"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "не може да Ñе получи ÑпиÑъка от допълнителни групи"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " групи="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr ""
+"опциÑта махане на Ñимволните таблици не може да Ñе използва при инÑталиране "
+"на каталог"
+
+#: src/install.c:321
+#, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr ""
+"при инÑталиране на каталог не Ñе позволÑва поÑочването на целеви каталог"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "неправилен режим %s"
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "не може да Ñе Ñмени ÑобÑтвеноÑтта на %s"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "не може да Ñе зададе времето на %s"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "ÑиÑтемната Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð° нов Ð¿Ñ€Ð¾Ñ†ÐµÑ (fork) не уÑпÑ"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "не може да Ñе Ñтартира strip"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "Ð·Ð°Ð¿Ð¸Ñ Ð² %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "неправилен потребител %s"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "Ñъздава Ñе каталог %s"
+
+#: src/install.c:651
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Използване: %s [ОПЦИЯ]... [-T] ИЗТОЧÐИК ЦЕЛ\n"
+" или: %s [ОПЦИЯ]... ИЗТОЧÐИК... КÐТÐЛОГ\n"
+" или: %s [ОПЦИЯ]... -t КÐТÐЛОГ ЦЕЛ...\n"
+" или: %s [ОПЦИЯ]... -d КÐТÐЛОГ...\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"При първите три формата ИЗТОЧÐИК Ñе копира в ЦЕЛ или нÑколкото ИЗТОЧÐИКа\n"
+"в ÑъщеÑтвуващ КÐТÐЛОГ, като Ñе уÑтановÑват режим на доÑтъп и ÑобÑтвеник/"
+"група.\n"
+"При Ñ‡ÐµÑ‚Ð²ÑŠÑ€Ñ‚Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñе Ñъздават вÑички компоненти на дадениÑ(ните) КÐТÐЛОГ"
+"(зи).\n"
+"\n"
+
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup[=МЕТОД] прави резервно копие на ÑъщеÑтвуващите целеви "
+"файлове\n"
+" -b като --backup, но не допуÑка използването на аргумент\n"
+" -c (пренебрегва Ñе)\n"
+" -d, --directory приема вÑички аргументи като имена на каталози; "
+"Ñъздава\n"
+" вÑички компоненти на поÑочените каталози\n"
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D Ñъздава вÑички начални компоненти на ЦЕЛ оÑвен "
+"поÑледниÑ,\n"
+" а Ñлед това копира ИЗТОЧÐИК в ЦЕЛ\n"
+" -g, --group=ГРУПРпоÑочва група вмеÑто текущата група на процеÑа\n"
+" -m, --mode=РЕЖИМ поÑочва режим за доÑтъп (като при chmod), вмеÑто rwxr-"
+"xr-x\n"
+" -o, --owner=СОБСТВ поÑочва ÑобÑтвеник (Ñамо от привилегирован "
+"потребител)\n"
+
+#: src/install.c:681
+#, fuzzy
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps прилага времената за доÑтъп/промÑна на\n"
+" файловете-ИЗТОЧÐИК за Ñъответните целеви файлове\n"
+" -s, --strip маха Ñимволните таблици\n"
+" -S, --suffix=СУФИКС вмеÑто Ð¾Ð±Ð¸Ñ‡Ð°Ð¹Ð½Ð¸Ñ ÑÑƒÑ„Ð¸ÐºÑ Ð·Ð° резервни копиÑ\n"
+" -t, --target-directory=КÐТÐЛОГ копира вÑички аргументи ИЗТОЧÐИК в "
+"КÐТÐЛОГ\n"
+" -T, --no-target-directory работи Ñ Ð¦Ð•Ð› като Ñ Ð¾Ð±Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½ файл\n"
+" -v, --verbose извежда името на вÑеки каталог при Ñъздаването му\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"СуфикÑÑŠÑ‚ за резервни ÐºÐ¾Ð¿Ð¸Ñ Ðµ „~“, оÑвен при промÑна Ñ --suffix или Ñ "
+"променлива\n"
+"от обкръжението SIMPLE_BACKUP_SUFFIX. Методът за управление на верÑиите може "
+"да\n"
+"Ñе поÑочва Ñ --backup или Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ð»Ð¸Ð²Ð°Ñ‚Ð° VERSION_CONTROL. Ето ÑтойноÑтите:\n"
+"\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"Извежда ред за вÑÑка двойка входни редове Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ‡Ð½Ð¸ Ñвързващи полета.\n"
+"По подразбиране Ñвързващо поле е първото, ограничава Ñе интервали и "
+"табулации.\n"
+"Когато ФÐЙЛ1 или ФÐЙЛ2 (не едновременно) е -, Ñе чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+"\n"
+" -a ФÐЙЛÐОМ извежда неÑъответÑтващите редове от файла ФÐЙЛÐОМ, "
+"където\n"
+" ФÐЙЛÐОМ е 1 или 2 Ñъответно за ФÐЙЛ1 и ФÐЙЛ2\n"
+" -e ПРÐЗÐО Ð·Ð°Ð¼ÐµÐ½Ñ Ð»Ð¸Ð¿Ñващите входни полета Ñ ÐŸÐ ÐЗÐО\n"
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case не различава големи/малки букви при ÑравнÑване на "
+"полетата\n"
+" -j ПОЛЕ Ñъщо като „-1 ПОЛЕ -2 ПОЛЕ“\n"
+" -o ФОРМÐТ Ñледва ФОРМÐТ при ÑÑŠÑтавÑне на изходните редове\n"
+" -t ЗÐÐК ползва ЗÐÐК като разделител на входните и изходни "
+"полета\n"
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v ФÐЙЛÐОМ като -a ФÐЙЛÐОМ, но потиÑка ÑъответÑтващите входни "
+"редове\n"
+" -1 ПОЛЕ Ñвързва Ñпоред това ПОЛЕ във файл 1\n"
+" -2 ПОЛЕ Ñвързва Ñпоред това ПОЛЕ във файл 2\n"
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"Ðко не е зададен -t ЗÐÐК, бÑлото поле пред полетата е разделител и Ñе "
+"игнорира.\n"
+"Иначе полетата Ñа разделени ÑÑŠÑ Ð—ÐÐК. Ð’ÑÑко ПОЛЕ е номер, който Ñе брои от "
+"1.\n"
+"ФОРМÐТ е една или повече Ñпецификации, разделени ÑÑŠÑ Ð·Ð°Ð¿ÐµÑ‚Ð°Ñ Ð¸Ð»Ð¸ интервал,\n"
+"вÑÑка от които е „ФÐЙЛÐОМ.ПОЛЕ“ или „0“. По подразбиране ФОРМÐТ извежда\n"
+"Ñвързващото поле, оÑтаналите полета от ФÐЙЛ1 и оÑтаналите полета от ФÐЙЛ2, "
+"като\n"
+"ги Ñ€Ð°Ð·Ð´ÐµÐ»Ñ ÑÑŠÑ Ð—ÐÐК.\n"
+"\n"
+"Важно: ФÐЙЛ1 и ФÐЙЛ2 Ñ‚Ñ€Ñбва да бъдат Ñортирани по Ñвързващите полета. "
+"Ðапример\n"
+"ако на join не Ñа подадени опции, ползвайте „sort -k 1b,1“.\n"
+
+#: src/join.c:617 src/join.c:812
+#, c-format
+msgid "invalid field number: %s"
+msgstr "неправилен номер на поле: %s"
+
+#: src/join.c:638 src/join.c:647
+#, c-format
+msgid "invalid field specifier: %s"
+msgstr "неправилен означител за поле: %s"
+
+#: src/join.c:654
+#, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "неправилен номер на файл при означител на поле: %s"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr "неправилни Ñвързващи полета %lu, %lu"
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr "неÑъвмеÑтими заменÑщи низове за празно поле"
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr "празна табулациÑ"
+
+#: src/join.c:870 src/sort.c:3031
+#, c-format
+msgid "multi-character tab %s"
+msgstr "многоÑимволна Ñ‚Ð°Ð±ÑƒÐ»Ð°Ñ†Ð¸Ñ %s"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr "неÑъвмеÑтими табулации"
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "не може и двата файла да Ñа ÑтандартниÑÑ‚ вход"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"Използване: %s [-s СИГÐÐЛ | -СИГÐÐЛ] PID...\n"
+" или: %s -l [СИГÐÐЛ]...\n"
+" или: %s -t [СИГÐÐЛ]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+"Изпраща Ñигнали на процеÑите или извежда Ñигналите.\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+" -s, --signal=СИГÐÐЛ, -СИГÐÐЛ\n"
+" поÑочва името или номера на Ñигнала, който да бъде "
+"изпратен\n"
+" -l, --list извежда имената на Ñигналите или ги преобразува в/от "
+"номера\n"
+" -t, --table извежда таблица Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° Ñигналите\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+"\n"
+"СИГÐÐЛ може да бъде име на Ñигнал (напр. „HUP“) или номер (напр. „1“)\n"
+"или код-ÑÑŠÑтоÑние на изход на процеÑ, прекратен чрез Ñигнал.\n"
+"PID е цÑло чиÑло; ако е отрицателно, поÑочва група от процеÑи.\n"
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: неправилен Ñигнал"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: неправилен номер на процеÑ"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "неправилна Ð¾Ð¿Ñ†Ð¸Ñ -- %c"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: поÑочени Ñа много Ñигнали"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "поÑочени Ñа много опции -l или -t"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "не може да Ñе задават Ñигнали заедно Ñ -l или -t"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr "не е поÑочен номер на процеÑ"
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Използване: %s ФÐЙЛ1 ФÐЙЛ2\n"
+" или: %s ОПЦИЯ\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+"Извиква функциÑта за правене на твърда връзка ФÐЙЛ2 към ÑъщеÑтвуващ ФÐЙЛ2.\n"
+"\n"
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "не може да Ñе направи връзка %s към %s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+"%s: внимание: Ñъздаването на твърда връзка към Ñимволна връзка не е преноÑимо"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: не Ñе позволÑва твърда връзка към каталог"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: каталогът не може да Ñе замеÑти"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: да Ñе замени ли %s? "
+
+#: src/ln.c:295
+#, c-format
+msgid "creating symbolic link %s"
+msgstr "Ñъздава Ñе Ñимволна връзка %s"
+
+#: src/ln.c:296
+#, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "Ñъздава Ñе Ñимволна връзка %s -> %s"
+
+#: src/ln.c:298
+#, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "Ñъздава Ñе твърда връзка към %.0s%s"
+
+#: src/ln.c:301
+#, c-format
+msgid "creating hard link %s"
+msgstr "Ñъздава Ñе твърда връзка %s"
+
+#: src/ln.c:302
+#, c-format
+msgid "creating hard link %s => %s"
+msgstr "Ñъздава Ñе твърда връзка %s => %s"
+
+#: src/ln.c:324
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Използване: %s [ОПЦИЯ]... [-T] ИЗТОЧÐИК ИМЕ_ÐÐ_ВРЪЗКР(1-ви формат)\n"
+" или: %s [ОПЦИЯ]... ИЗТОЧÐИК (2-ри формат)\n"
+" или: %s [ОПЦИЯ]... ИЗТОЧÐИК... КÐТÐЛОГ (3-ти формат)\n"
+" или: %s [ОПЦИЯ]... -t КÐТÐЛОГ ЦЕЛ... (4-ти формат)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"При Ð¿ÑŠÑ€Ð²Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñъздава връзка към поÑÐ¾Ñ‡ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»-ЦЕЛ Ñ Ð¸Ð¼Ðµ "
+"ИМЕ_ÐÐ_ВРЪЗКÐ.\n"
+"При Ð²Ñ‚Ð¾Ñ€Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñъздава връзка към поÑÐ¾Ñ‡ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»-ЦЕЛ в Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³.\n"
+"При Ñ‚Ñ€ÐµÑ‚Ð¸Ñ Ð¸ Ñ‡ÐµÑ‚Ð²ÑŠÑ€Ñ‚Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñъздава в КÐТÐЛОГ връзки към файловете-ЦЕЛ.\n"
+"По подразбиране Ñе правÑÑ‚ твърди връзки, а Ñимволни при --symbolic.\n"
+"При правене на твърди връзки вÑÑка ЦЕЛ Ñ‚Ñ€Ñбва да ÑъщеÑтвува.\n"
+"\n"
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup[=МЕТОД] копира резервно вÑеки ÑъщеÑтвуващ целеви файл\n"
+" -b като --backup, но не позволÑва аргумент\n"
+" -d, -F, --directory позволÑва на root да Ñе опита да направи "
+"твърди\n"
+" връзки към каталози (забележка: поради "
+"ограни-\n"
+" Ñ‡ÐµÐ½Ð¸Ñ Ð² ÑиÑтемата това вероÑтно ще "
+"пропадне)\n"
+" -f, --force изтрива ÑъщеÑтвуващи целеви файлове\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference приема цел, коÑто е Ñимволна връзка към "
+"каталог,\n"
+" вÑе едно че е нормален файл\n"
+" -i, --interactive да Ñе пита при замеÑтване на ÑъщеÑтвуващи "
+"файлове\n"
+" -s, --symbolic да Ñе правÑÑ‚ Ñимволни връзки вмеÑто твърди "
+"връзки\n"
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" -S, --suffix=СУФИКС вмеÑто обичайниÑÑ‚ ÑÑƒÑ„Ð¸ÐºÑ Ð·Ð° резервни копиÑ\n"
+" -t, --target-directory=КÐТÐЛОГ поÑочва каталога, в който да Ñе правÑÑ‚\n"
+" връзките\n"
+" -T, --no-target-directory работи Ñ Ð˜ÐœÐ•_ÐÐ_ВРЪЗКРкато Ñ Ð¾Ð±Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½ файл\n"
+" -v, --verbose извежда името на вÑеки файл преди Ñвързване\n"
+
+#: src/ln.c:484
+#, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr ""
+"Ðе може да Ñе използват едновременно --target-directory и --no-target-"
+"directory"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Използване: %s [ОПЦИЯ]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"Извежда името на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ».\n"
+"\n"
+
+#: src/logname.c:89
+#, c-format
+msgid "no login name"
+msgstr "нÑма входÑщо име"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%e %b %Y"
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%e %b %k,%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr ""
+"пренебрегва Ñе неправилната ÑтойноÑÑ‚ на променливата от обкръжението "
+"QUOTING_STYLE: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr ""
+"пренебрегва Ñе неправилната ширина в променливата от обкръжението COLUMNS: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr ""
+"пренебрегва Ñе неправилниÑÑ‚ размер на табулациите в променливата от "
+"обкръжението TABSIZE: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "неправилна дължина на реда: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "неправилен размер на табулациите: %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "неправилен формат за времето %s"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "непознат префикÑ: %s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "неразбираема ÑтойноÑÑ‚ на променливата от обкръжението LS_COLORS"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "не може да Ñе отвори каталогът %s"
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "не може да Ñе уÑтанови уÑтройÑтвото и i-възлите на %s"
+
+#: src/ls.c:2353
+#, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "%s: вече изведениÑÑ‚ каталог не Ñе извежда"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "чете Ñе каталогът %s"
+
+#: src/ls.c:2410
+#, c-format
+msgid "closing directory %s"
+msgstr "Ð·Ð°Ñ‚Ð²Ð°Ñ€Ñ Ñе каталогът %s"
+
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "не може да Ñе ÑравнÑÑ‚ файловите имена %s и %s"
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"Извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° ФÐЙЛовете (по подразбиране за Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³).\n"
+"Сортира елементите азбучно, оÑвен ако има Ð¾Ð¿Ñ†Ð¸Ñ -cftuSUX или --sort.\n"
+"\n"
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all не Ñкрива елементите, започващи Ñ .\n"
+" -A, --almost-all не извежда подразбиращите Ñе . и ..\n"
+" --author Ñ -l извежда автора на вÑеки файл\n"
+" -b, --escape извежда оÑмични чиÑла за неграфичните знаци\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=РÐЗМ ползва блокове Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€ РÐЗМ байта\n"
+" -B, --ignore-backups не извежда елементи, завършващи Ñ ~\n"
+" -c Ñ -lt: Ñортира и показва Ñпоред ctime (времето "
+"на\n"
+" поÑледна промÑна на информациÑта за файла)\n"
+" Ñ -l: показва ctime и Ñортира Ñпоред името\n"
+" иначе: Ñортира Ñпоред ctime\n"
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C извежда елементите в колони\n"
+" --color[=КОГÐ] Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð´Ð°Ð»Ð¸ да Ñе използват цветове за "
+"поÑочване\n"
+" типовете на файловете. КОГРможе да бъде\n"
+" „never“ (никога), „always“ (винаги) или\n"
+" „auto“ (автоматично)\n"
+" -d, --directory извежда Ñамите каталози, вмеÑто Ñъдържанието "
+"им\n"
+" и Ñимволните връзки, вмеÑто Ñочените файлове\n"
+" -D, --dired генерира изход за режима „dired“ на ЕмакÑ\n"
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f да не Ñортира; позволÑва -aU, забранÑва -ls --"
+"color\n"
+" -F, --classify Ð´Ð¾Ð±Ð°Ð²Ñ Ð·Ð½Ð°Ðº за типа на файловете (нÑкой от */"
+"=>@|)\n"
+" --file-type подобно, но не Ñе Ð´Ð¾Ð±Ð°Ð²Ñ â€ž*“\n"
+" --format=ДУМРacross -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time като -l --time-style=full-iso\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr " -g като -l, но не извежда ÑобÑтвеника\n"
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+" --group-directories-first\n"
+" извежда каталозите преди другите файлове\n"
+
+#: src/ls.c:4322
+#, fuzzy
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all включително празните файлови ÑиÑтеми (Ñ 0 блокове)\n"
+" -B, --block-size=РÐЗМ да Ñе ползват блокове Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€ РÐЗМ байта\n"
+" -h, --human-readable извежда размерите като за хора (напр. 1K, 234M, 2G)\n"
+" -H, --si подобно, но Ñ Ð¼Ð½Ð¾Ð¶Ð¸Ñ‚ÐµÐ» 1000 вмеÑто 1024\n"
+
+#: src/ls.c:4328
+#, fuzzy
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+" -G, --no-group при подробно изреждане не извежда групата\n"
+" -h, --human-readable Ñ -l извежда размерите като за хора\n"
+" (напр. 1K, 234M, 2G)\n"
+" --si подобно, но Ñ Ð¼Ð½Ð¾Ð¶Ð¸Ñ‚ÐµÐ» 1000 вмеÑто 1024\n"
+" -H, --dereference-command-line\n"
+" Ñледва Ñимволните връзки на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´\n"
+" --dereference-command-line-symlink-to-dir\n"
+" Ñледва Ñимволните връзки на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´, \n"
+" които Ñочат към каталог\n"
+" --hide=ОБРÐЗЕЦ не извежда елементите, паÑващи на ОБРÐЗЕЦ\n"
+" (пренебрегва Ñе, ако има -a или -A)\n"
+
+# TODO: превод на shell-ОБРÐЗЕЦ?
+#: src/ls.c:4337
+#, fuzzy
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=Ð”Ð£ÐœÐ Ð´Ð¾Ð±Ð°Ð²Ñ Ð·Ð½Ð°Ðº в Ñтил ДУМРкъм файловете:\n"
+" none (Ñтандартно), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode Ñ -l извежда номера на i-възела на вÑеки файл\n"
+" -I, --ignore=ОБРÐЗЕЦ не извежда елементите, паÑващи на shell-"
+"ОБРÐЗЕЦ\n"
+" -k като --block-size=1K\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l да Ñе ползва формат Ñ Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð½Ð¾ изброÑване\n"
+" -L, --dereference при показване на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° Ñимволна връзка\n"
+" да показва Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° ÑÐ¾Ñ‡ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð» вмеÑто "
+"за\n"
+" Ñамата Ñимволна връзка\n"
+" -m попълва в широчина Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸ ÑÑŠÑ Ð·Ð°Ð¿ÐµÑ‚Ð°Ñ "
+"елементи\n"
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid като -l, но извежда номера за потребител и "
+"група\n"
+" -N, --literal извежда „Ñурови“ имена (напр. управлÑващите "
+"кодове\n"
+" не Ñе обработват по по-различен начин)\n"
+" -o като -l, но не извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° групата\n"
+" -p, --file-type Ð´Ð¾Ð±Ð°Ð²Ñ Ð·Ð½Ð°Ðº за типа (нÑкой от /=@|) към "
+"елементите\n"
+" -p, --indicator-style=slash\n"
+" Ð´Ð¾Ð±Ð°Ð²Ñ Ð·Ð½Ð°Ðº / към каталозите\n"
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars извежда ? вмеÑто неграфични знаци\n"
+" --show-control-chars извежда неграфичните знаци както Ñа Ñи "
+"(Ñтандартно,\n"
+" оÑвен ако програмата е „ls“ и изходът е "
+"терминал)\n"
+" -Q, --quote-name огражда имената на елементите Ñ ÐºÐ°Ð²Ð¸Ñ‡ÐºÐ¸\n"
+" --quoting-style=ДУМРÑтил ДУМРза извеждане на неграфични знаци:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse обратен ред при Ñортиране\n"
+" -R, --recursive извежда подкаталозите рекурÑивно\n"
+" -s, --size извежда размера в блокове на вÑеки файл\n"
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S Ñортира Ñпоред размера на файловете\n"
+" --sort=ДУМРÑортира Ñпоред ДУМÐ: none -U, extension -X,\n"
+" size -S, time -t, version -v\n"
+" --time=Ð”Ð£ÐœÐ Ñ -l показва времето ДУМРвмеÑто времето на "
+"промÑ-\n"
+" на. ДУМРможе да бъде atime, access, use, "
+"ctime,\n"
+" или status; по това време Ñе и Ñортира\n"
+
+#: src/ls.c:4382
+#, fuzzy
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=СТИЛ Ñ -l показва времената използвайки Ñтил СТИЛ:\n"
+" full-iso, long-iso, iso, locale, +FORMAT\n"
+" ФОРМÐТ Ñе обработва Ñъщо както „date“; ako "
+"ФОРМÐТ е\n"
+" ФОРМÐТ1<новред>ФОРМÐТ2, ФОРМÐТ1 Ñе отнаÑÑ ÐºÑŠÐ¼\n"
+" по-отдавнашните файлове, а ФОРМÐТ2 към "
+"Ñкорошните;\n"
+" ако СТИЛ Ñе предшеÑтва от „posix-“, СТИЛ влиза\n"
+" в Ñила Ñамо извън POSIX локал\n"
+" -t Ñортира Ñпоред времето на промÑна\n"
+" -T, --tabsize=КОЛОÐИ приема, че табулациите Ñа през КОЛОÐИ вмеÑто "
+"през 8\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u Ñ -lt: Ñортира и извежда Ñпоред времето за "
+"доÑтъп,\n"
+" Ñ -l: извежда времето за доÑтъп, Ñортира по "
+"име,\n"
+" иначе: Ñортира по времето за доÑтъп\n"
+" -U да не Ñе Ñортира: извежда Ñе както е в "
+"каталога\n"
+" -v Ñортира Ñпоред верÑиÑта\n"
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -w, --width=КОЛОÐИ приема, че екранът има ширина КОЛОÐИ\n"
+" -x извежда елементите по редове, а не в Ñтълбове\n"
+" -X Ñортира в азбучен ред Ñпоред разширението\n"
+" -1 извежда по един файл на ред\n"
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"По подразбиране не Ñе използват цветове за отличаване на типовете. Това е "
+"вÑе\n"
+"едно да Ñе използва --color=none. Използването на --color без "
+"незадължителниÑ\n"
+"аргумент КОГРе еквивалентно на --color=always. С --color=auto цветове Ñе\n"
+"използват Ñамо, ако ÑтандартниÑÑ‚ изход е Ñвързан Ñ Ñ‚ÐµÑ€Ð¼Ð¸Ð½Ð°Ð» (tty). "
+"Променливата\n"
+"от обкръжението LS_COLORS може да влиÑе на цветовете, а ÑтойноÑÑ‚ може леÑно "
+"да и\n"
+"бъде зададена поÑредÑтвом командата dircolors.\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+"\n"
+"Кодът на завършване е 0 при уÑпех, 1 при малък проблем и 2 при по-Ñериозен.\n"
+
+#: src/md5sum.c:150
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Използване: %s [ОПЦИЯ] [ФÐЙЛ]...\n"
+"Извежда или проверÑва контролни Ñуми %s (%d-битови).\n"
+"Без ФÐЙЛ или ако ФÐЙЛ е -, чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+" -b, --binary чете в двоичен режим (по подразбиране, при четене от "
+"терминал)\n"
+
+#: src/md5sum.c:164
+msgid " -b, --binary read in binary mode\n"
+msgstr " -b, --binary чете в двоичен режим\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+" -c, --check прочита %s Ñуми от ФÐЙЛовете и ги проверÑва\n"
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+" -t, --text чете в текÑтов режим (по подразбиране, ako\n"
+" ÑтандартниÑÑ‚ вход е от терминал)\n"
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr " -t, --text чете в текÑтов режим (по подразбиране)\n"
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"\n"
+"Следните две опции Ñа полезни Ñамо при проверÑване на контролни Ñуми:\n"
+" --status без изход, уÑпехът Ñе Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ Ñпоред кода за "
+"изход\n"
+" -w, --warn Ñъобщава при неправилно форматирани редове ÑÑŠÑ "
+"Ñуми\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"Сумите Ñе изчиÑлÑват така, както е поÑочено в %s. При проверка входът\n"
+"Ñ‚Ñ€Ñбва да бъде предишен изход от тази програма. По подразбиране Ñе извежда "
+"ред\n"
+"Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ð½Ð° Ñума, знак поÑочващ типа (“*“ за двоичен, „ “ за текÑтов)\n"
+"и името на вÑеки ФÐЙЛ.\n"
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: твърде много редове Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ð½Ð¸ Ñуми"
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %<PRIuMAX>: неправилно форматиран ред Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ð½Ð° Ñума %s"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: ÐЕ УСПЯ ÑиÑтемна Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ open или read\n"
+
+# Ðе е ÑÑно къде Ñе използва
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "ÐЕУСПЕШÐО"
+
+# Ðе е ÑÑно къде Ñе използва
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "ОК"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: грешка при четене"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: не Ñа открити правилно форматирани %s редове Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ð½Ð¸ Ñуми"
+
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] ""
+"Ð’ÐИМÐÐИЕ: %<PRIuMAX> от общо %<PRIuMAX> изброен файл не може да бъде прочетен"
+msgstr[1] ""
+"Ð’ÐИМÐÐИЕ: %<PRIuMAX> от общо %<PRIuMAX> изброени файла не могат да бъдат "
+"прочетени"
+
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] ""
+"Ð’ÐИМÐÐИЕ: %<PRIuMAX> от %<PRIuMAX> преÑметната контролна Ñума ÐЕ паÑва"
+msgstr[1] ""
+"Ð’ÐИМÐÐИЕ: %<PRIuMAX> от %<PRIuMAX> преÑметнати контролни Ñуми ÐЕ паÑват"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"опциите --binary и --text Ñа безÑмиÑлени при проверка на контролни Ñуми"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "опциÑта --status е ÑмиÑлена Ñамо при проверÑване на контролни Ñуми"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "опциÑта --warn е ÑмиÑлена Ñамо при проверÑване на контролни Ñуми"
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Използване: %s [ОПЦИЯ] КÐТÐЛОГ...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"Създава КÐТÐЛОГ(зи), ако вече не Ñа Ñъздадени.\n"
+"\n"
+
+#: src/mkdir.c:67
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+" -m, --mode=РЕЖИМ задава режим за доÑтъп (като chmod), not a=rwx - umask\n"
+" -p, --parents Ñъздава и родителÑките каталози, без грешка за "
+"ÑъщеÑтвуващи\n"
+" -v, --verbose извежда Ñъобщение за вÑеки Ñъздаден каталог\n"
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "Ñъздаден е каталог %s"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Използване: %s [ОПЦИЯ] ИМЕ...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"Създава именувани канали (FIFO) Ñ Ð¿Ð¾Ñочените ИМЕна.\n"
+"\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+" -m, --mode=РЕЖИМ задава режим за доÑтъп (като при chmod), not a=rw - "
+"umask\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "неправилен режим за доÑтъп"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr "режимът Ñ‚Ñ€Ñбва да Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ Ñамо битовете за доÑтъп до файла"
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Използване: %s [ОПЦИЯ]... ИМЕ ТИП [ГОЛЯМ ÐœÐЛЪК]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"Създава Ñпециален файл ИМЕ от зададен ТИП.\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+"\n"
+"Както ГОЛЯМ, така и ÐœÐЛЪК Ñ‚Ñ€Ñбва да Ñе поÑочат, ако ТИП е „b“, „c“ или „u“, "
+"и\n"
+"Ñ‚Ñ€Ñбва да Ñе пропуÑнат, ако ТИП е „p“. Ðко ГОЛЯМ или ÐœÐЛЪК започва Ñ 0x или "
+"0X,\n"
+"номерът Ñе интерпретира като шеÑтнадеÑетичен, иначе ако започва Ñ 0, като\n"
+"оÑмичен и иначе -- като деÑетичен. ТИП може да бъде:\n"
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+" b Ñъздава блоков (буфериран) Ñпециален файл\n"
+" c, u Ñъздава Ñимволен (небуфериран) Ñпециален файл\n"
+" p Ñъздава именуван канал\n"
+
+#: src/mknod.c:146
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"при Ñъздаване на Ñпециални файлове Ñ‚Ñ€Ñбва да Ñе поÑочат\n"
+"голÑм и малък номер на уÑтройÑтво"
+
+#: src/mknod.c:156
+msgid "Fifos do not have major and minor device numbers."
+msgstr "Именуваните канали нÑмат малък и голÑм номер на уÑтройÑтво."
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "не Ñе поддържа работа Ñ Ð±Ð»Ð¾ÐºÐ¾Ð²Ð¸ Ñпециални файлове"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "не Ñе поддържа работа ÑÑŠÑ Ñимволни Ñпециални файлове"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "погрешен голÑм номер на уÑтройÑтво %s"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "погрешен малък номер на уÑтройÑтво %s"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "неправилно уÑтройÑтво %s %s"
+
+#: src/mknod.c:216
+#, c-format
+msgid "invalid device type %s"
+msgstr "неправилен тип на уÑтройÑтво %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Преименува ИЗТОЧÐИК на ЦЕЛ или премеÑтва ИЗТОЧÐИК(ци) в КÐТÐЛОГ.\n"
+"\n"
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup[=МЕТОД] прави резервно копие на ÑъщеÑтвуващи целеви "
+"файлове\n"
+" -b като --backup, но не допуÑка на аргумент\n"
+" -f, --force да не Ñе пита преди замеÑтване на файлове\n"
+" -i, --interactive да Ñе пита преди замеÑтване на файлове\n"
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --strip-trailing-slashes отÑтранÑва крайните наклонени черти от вÑеки\n"
+" аргумент ЦЕЛ\n"
+" -S, --suffix=СУФИКС вмеÑто Ð¾Ð±Ð¸Ñ‡Ð°Ð¹Ð½Ð¸Ñ ÑÑƒÑ„Ð¸ÐºÑ Ð·Ð° резервни копиÑ\n"
+
+#: src/mv.c:308
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --target-directory=КÐТÐЛОГ премеÑтва вÑички аргументи ИЗТОЧÐИК в "
+"КÐТÐЛОГ\n"
+" -T, --no-target-directory работи Ñ DEST като Ñ Ð¾Ð±Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½ файл\n"
+" -u, --update премеÑтва Ñамо ако ИЗТОЧÐИК е по-нов от "
+"целевиÑ\n"
+" файл, или ако целевиÑÑ‚ файл липÑва\n"
+" -v, --verbose Ñъобщава какво Ñе прави\n"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Използване: %s [ОПЦИЯ] [КОМÐÐДР[ÐРГУМЕÐТ]...]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+"ИзпълнÑва КОМÐÐÐ”Ð Ñ Ð½Ð°Ð³Ð¾Ð´ÐµÐ½Ð° ÑтойноÑÑ‚ на nice, влиÑеща на диÑпечера на "
+"задачите\n"
+"на операционната ÑиÑтема. Без КОМÐÐДРизвежда текущата ÑтойноÑÑ‚. "
+"Диапазонът на\n"
+"nice е от %d (най-голÑмо предимÑтво за процеÑа) до %d (най-малко "
+"предимÑтво).\n"
+"\n"
+" -n, --adjustment=N Ð´Ð¾Ð±Ð°Ð²Ñ N към ÑтойноÑтта на nice (по подразбиране 10)\n"
+
+#: src/nice.c:155
+#, c-format
+msgid "invalid adjustment %s"
+msgstr "неправилна наÑтройка: %s"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "заедно Ñ ÐºÐ¾Ñ€ÐµÐºÑ†Ð¸Ñта Ñ‚Ñ€Ñбва да Ñе поÑочи команда"
+
+#: src/nice.c:171 src/nice.c:182
+#, c-format
+msgid "cannot get niceness"
+msgstr "не може да Ñе получи ÑтойноÑтта на nice"
+
+#: src/nice.c:186
+#, c-format
+msgid "cannot set niceness"
+msgstr "не може да Ñе наÑтрои ÑтойноÑтта на nice"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Извежда вÑеки от ФÐЙЛовете на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´ Ñ Ð´Ð¾Ð±Ð°Ð²ÐµÐ½Ð¸ номера на "
+"редовете.\n"
+"Без ФÐЙЛ или ако ФÐЙЛ е - Ñе чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=СТИЛ ползва СТИЛ при номериране редовете от "
+"Ñ‚Ñлото\n"
+" -d, --section-delimiter=CC CC да е разделител между логичеÑките "
+"Ñтраници\n"
+" -f, --footer-numbering=СТИЛ ползва СТИЛ при номериране Ð´Ð¾Ð»Ð½Ð¸Ñ "
+"колонтитул\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=СТИЛ ползва СТИЛ при номериране Ð³Ð¾Ñ€Ð½Ð¸Ñ "
+"колонтитул\n"
+" -i, --page-increment=РÐÐ—Ð›Ð˜ÐšÐ Ñ ÐºÐ¾Ð»ÐºÐ¾ нараÑтва номера на вÑеки Ñледващ "
+"ред\n"
+" -l, --join-blank-lines=БРОЙ номерира от БРОЙ празни реда Ñамо "
+"поÑледниÑ\n"
+" -n, --number-format=ФОРМÐТ вмъква номерата на редовете Ñпоред ФОРМÐТ\n"
+" -p, --no-renumber не брои отначало при нова логичеÑка "
+"Ñтраница\n"
+" -s, --number-separator=ÐИЗ Ð´Ð¾Ð±Ð°Ð²Ñ ÐИЗ Ñлед вÑеки номер на ред\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=ÐОМЕР номер на Ð¿ÑŠÑ€Ð²Ð¸Ñ Ñ€ÐµÐ´ от логичеÑките "
+"Ñтраници\n"
+" -w, --number-width=БРОЙ ползва БРОЙ Ñтълбове за номерата на "
+"редовете\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"По подразбиране Ñе използва -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC Ñа\n"
+"двата Ñимвола, използвани за разделÑне на логичеÑките Ñтраници. Ðко "
+"липÑва,\n"
+"по подразбиране вториÑÑ‚ Ñимвол е :. Използвайте \\\\ за \\. СТИЛ е едно "
+"от:\n"
+
+#: src/nl.c:214
+#, fuzzy
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a за да Ñе номерират вÑички редове\n"
+" t за да Ñе номерират Ñамо непразните редове\n"
+" n за да не Ñе номерира никой ред\n"
+" pРЕГИЗР за да Ñе номерират Ñамо редове, Ñъдържащи ÑъответÑтвие на "
+"РЕГИЗР\n"
+"\n"
+"ФОРМÐТ е едно от:\n"
+"\n"
+" ln за лÑво подравнÑване, без предхождащи нули\n"
+" rn за дÑÑно подравнÑване, без предхождащи нули\n"
+" rz за дÑÑно подравнÑване, Ñ Ð¿Ñ€ÐµÐ´Ñ…Ð¾Ð¶Ð´Ð°Ñ‰Ð¸ нули\n"
+"\n"
+
+#: src/nl.c:281
+#, c-format
+msgid "line number overflow"
+msgstr "препълване на номера на ред"
+
+#: src/nl.c:479
+#, c-format
+msgid "invalid header numbering style: %s"
+msgstr "неправилен формат за номериране на горен колонтитул: %s"
+
+#: src/nl.c:487
+#, c-format
+msgid "invalid body numbering style: %s"
+msgstr "неправилен формат за номериране: %s"
+
+#: src/nl.c:495
+#, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "неправилен формат за номериране на долен колонтитул: %s"
+
+#: src/nl.c:504
+#, c-format
+msgid "invalid starting line number: %s"
+msgstr "неправилен начален номер на ред: %s"
+
+#: src/nl.c:513
+#, c-format
+msgid "invalid line number increment: %s"
+msgstr "неправилна разлика между ÑÑŠÑедни редове: %s"
+
+#: src/nl.c:525
+#, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "неправилен брой празни редове: %s"
+
+#: src/nl.c:539
+#, c-format
+msgid "invalid line number field width: %s"
+msgstr "неправилна ширина на полето за номер на ред: %s"
+
+#: src/nl.c:558
+#, c-format
+msgid "invalid line numbering format: %s"
+msgstr "неправилен формат за номериране на редове: %s"
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Използване: %s КОМÐÐДР[ÐРГУМЕÐТ]...\n"
+" или: %s ОПЦИЯ\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+"ИзпълнÑва КОМÐÐДÐ, пренебрегвайки Ñигналите за увиÑване (SIGHUP).\n"
+"\n"
+
+#: src/nohup.c:117
+#, c-format
+msgid "ignoring input"
+msgstr "входът Ñе пренебрегва"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr "не може да Ñе отвори %s"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "входът Ñе пренебрегва, а изходът Ñе наÑочва към %s"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr "не уÑпешно затварÑне на Ñтандартната грешка"
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+"входът Ñе пренебрегва, а Ñтандартната грешка Ñе пренаÑочва към ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ "
+"изход"
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr "неуÑпешно пренаÑочване на Ñтандартната грешка"
+
+#: src/od.c:307
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Използване: %s [ОПЦИЯ]... [ФÐЙЛ]...\n"
+" или: %s [-abcdfilosx]... [ФÐЙЛ] [[+]ОТМЕСТВÐÐЕ[.][b]]\n"
+" или: %s --traditional [ФÐЙЛ] [[+]ОТМЕСТВÐÐЕ [[+]ЕТИКЕТ]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"Извежда еднозначно предÑтавÑне (по подразбиране оÑмични байтове) на\n"
+"ФÐЙЛ на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´. Ðко Ñа поÑочени повече от един ФÐЙЛ,\n"
+"поÑледователно обработва и извежда файловете в поÑÐ¾Ñ‡ÐµÐ½Ð¸Ñ Ñ€ÐµÐ´. Без\n"
+"ФÐЙЛ или ако ФÐЙЛ е - Ñе чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+"\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+"Ð’Ñички аргументи, задължителни за дългите опции, Ñа задължителни и за "
+"къÑите.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=БÐЗРкак да Ñе извежда отмеÑтването\n"
+" -j, --skip-bytes=БÐЙТОВЕ пропуÑка БÐЙТОВЕ входни байта в началото\n"
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=БÐЙТОВЕ обработва до БÐЙТОВЕ входни байта\n"
+" -S, --strings[=ДЪЛЖИÐÐ] извежда низове от поне по ДЪЛЖИÐРграфични "
+"знаци\n"
+" -t, --format=ТИП поÑочва формат или формати за извеждане\n"
+" -v, --output-duplicates да не Ñе ползва * за отбелÑзване на еднакви "
+"редове\n"
+" -w, --width[=БÐЙТОВЕ] извежда по БÐЙТОВЕ входни байта на един ред\n"
+" --traditional да Ñе приемат аргументи в Ñ‚Ñ€Ð°Ð´Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚\n"
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"Спецификациите в традиционен формат може да Ñе ÑмеÑват и Ñе натрупват:\n"
+" -a е Ñъщото като -t a, извеждат Ñе именувани знаци, пренебрегва ÑÑ‚Ð°Ñ€ÑˆÐ¸Ñ "
+"бит\n"
+" -b е Ñъщото като -t o1, извеждат Ñе оÑмични байтове\n"
+" -c е Ñъщото като -t c, извеждат Ñе ASCII знаци или префикÑи Ñ \\\n"
+" -d е Ñъщото като -t u2, извеждат Ñе беззнакови двубайтови деÑетични "
+"чиÑла\n"
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f е Ñъщото като -t fF, извеждат Ñе чиÑла Ñ Ð¿Ð»Ð°Ð²Ð°Ñ‰Ð° запетаÑ\n"
+" -i е Ñъщото като -t dI, извеждат Ñе деÑетични цели чиÑла\n"
+" -l е Ñъщото като -t dL, извеждат Ñе деÑетични дълги чиÑла\n"
+" -o е Ñъщото като -t o2, извеждат Ñе двубайтови оÑмични чиÑла\n"
+" -s е Ñъщото като -t d2, извеждат Ñе двубайтови деÑетични чиÑла\n"
+" -x е Ñъщото като -t x2, извеждат Ñе двубайтови шеÑтнадеÑетични чиÑла\n"
+
+#: src/od.c:353
+#, fuzzy
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"Ðко и първиÑÑ‚, и вториÑÑ‚ формат Ñа валидни, Ñе приема вториÑÑ‚, ако "
+"поÑледниÑÑ‚\n"
+"операнд започва Ñ + или (ако има два операнда) чиÑло. \n"
+"Операнд ОТМЕСТВÐÐЕ означава -j ОТМЕСТВÐÐЕ. ЕТИКЕТ е пÑевдоадреÑÑŠÑ‚ на "
+"първиÑ\n"
+"изведен байт и Ñе увеличава поÑтепенно заедно Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ°Ñ‚Ð°. При\n"
+"ОТМЕСТВÐÐЕ и ЕТИКЕТ може да има префикÑи 0x или 0X, които показват\n"
+"шеÑтнадеÑетично чиÑло, и ÑуфикÑи . за оÑмично чиÑло и b за множител 512.\n"
+"\n"
+"ТИП Ñе ÑÑŠÑтои от една или повече от Ñледните Ñпецификации:\n"
+"\n"
+" a именуван знак, ÑтаршиÑÑ‚ бит Ñе пренебрегва\n"
+" c знак от ASCII или код, защитен Ñ \\\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[РÐЗМ] знаково деÑетично чиÑло от РÐЗМ байта\n"
+" f[РÐЗМ] чиÑло Ñ Ð¿Ð»Ð°Ð²Ð°Ñ‰Ð° Ð·Ð°Ð¿ÐµÑ‚Ð°Ñ Ð¾Ñ‚ РÐЗМ байта\n"
+" o[РÐЗМ] знаково оÑмично чиÑло от РÐЗМ байта\n"
+" u[РÐЗМ] беззнаково деÑетично чиÑло от РÐЗМ байта\n"
+" x[РÐЗМ] шеÑтнадеÑетично чиÑло от РÐЗМ байта\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"РÐЗМ е чиÑло. Ðко ТИП е doux, РÐЗМ може да бъде и C за sizeof(char),\n"
+"S за sizeof(short), I за sizeof(int) или L за sizeof(long). Ðко ТИП е\n"
+"f, РÐЗМ може да бъде и F за sizeof(float), D за sizeof(double) или L\n"
+"за sizeof(long double).\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"БÐЗРе d за деÑетична бройна ÑиÑтема, o за оÑмична, x за\n"
+"шеÑтнадеÑетична или n за никаква. БÐЙТОВЕ е шеÑтнадеÑетично, ако има\n"
+"Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ 0x или 0X и Ñе умножава по 512 при ÑÑƒÑ„Ð¸ÐºÑ b, по 1024 при k и\n"
+"по 1048576 при m. Ðко Ñе добави ÑÑƒÑ„Ð¸ÐºÑ z, в ÐºÑ€Ð°Ñ Ð½Ð° вÑеки изведен ред\n"
+"Ñе Ð´Ð¾Ð±Ð°Ð²Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ на входните знаци. "
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"--string без чиÑло предполага 3. --width без чиÑло предполага 32.\n"
+"По подразбиране od ползва -A o -t d2 -w16. \n"
+
+#: src/od.c:683 src/od.c:802
+#, c-format
+msgid "invalid type string %s"
+msgstr "неправилен низ за тип %s"
+
+#: src/od.c:693
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"неправилен низ за тип %s;\n"
+"тази ÑиÑтема не поддържа %lu-байтови целочиÑлени чиÑла"
+
+#: src/od.c:812
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"неправилен низ за тип %s;\n"
+"тази ÑиÑтема не поддържа %lu-байтови чиÑла Ñ Ð¿Ð»Ð°Ð²Ð°Ñ‰Ð° запетаÑ"
+
+#: src/od.c:871
+#, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "неправилен знак „%c“ в низа за тип %s"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "не може да Ñе пропуÑне Ñлед ÐºÑ€Ð°Ñ Ð½Ð° ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð¸Ñ€Ð°Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+"неправилна база „%c“ на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ð°Ð´Ñ€ÐµÑ; Ñ‚Ñ€Ñбва да бъде знак измежду [doxn]"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "пропуÑкане на аргумент"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "ограничаване на аргумента"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "минимална дължина на низа"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð° ширина"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "при извеждане на низове не може да Ñе поÑочва тип"
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr "При Ñ‚Ñ€Ð°Ð´Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñе поддържа най-много един файл."
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr "skip-bytes + read-bytes Ñа твърде много"
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "внимание: неправилна ширина %lu; вмеÑто Ð½ÐµÑ Ñе ползва %d"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: формат=„%s“ ширина=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "ÑтандартниÑÑ‚ вход е затворен"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Извежда на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´ редове, ÑÑŠÑтоÑщи Ñе от поредно\n"
+"ÑъответÑтващи Ñи редове от вÑеки ФÐЙЛ, разделени Ñ Ñ‚Ð°Ð±ÑƒÐ»Ð°Ñ†Ð¸Ð¸.\n"
+"Без ФÐЙЛ или ако ФÐЙЛ е - чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=СПИС Ñ€Ð°Ð·Ð´ÐµÐ»Ñ ÑÑŠÑ Ð·Ð½Ð°Ñ†Ð¸Ñ‚Ðµ от СПИС вмеÑто Ñ Ñ‚Ð°Ð±ÑƒÐ»Ð°Ñ†Ð¸Ð¸\n"
+" -s, --serial изкарва файловете един Ñлед друг вмеÑто паралелно\n"
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Използване: %s [ОПЦИЯ]... ИМЕ...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+"ÐžÐ¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼ÐµÐ½Ð¾Ð·Ð°Ð²Ð¸Ñимите конÑтрукции в ИМЕ.\n"
+"\n"
+" -p проверки за повечето POSIX-ÑъвмеÑтими ÑиÑтеми\n"
+" -P проверÑва за празни имена и начални „-“\n"
+" --portability проверÑва за вÑички POSIX-ÑъвмеÑтими ÑиÑтеми (като -p -"
+"P)\n"
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr "начален „-“ в компонент на файловото име %s"
+
+#: src/pathchk.c:206
+#, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "платформенозавиÑим знак %s във файловото име %s"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr "празно файлово име"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr "%s: не може да Ñе определи макÑималната дължина за име на файл"
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr "ограничението %lu е задминато от дължината %lu на файловото име %s"
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+"ограничението %lu е надминато от дължината %lu на компонента на файловото "
+"име %s"
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "ВходÑщо име: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "Ð’ Ñ€ÐµÐ°Ð»Ð½Ð¸Ñ Ð¶Ð¸Ð²Ð¾Ñ‚: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Каталог: "
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Обвивка: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Проект: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "План:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Вход "
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr "Име "
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr " TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Ðеактивен"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Кога"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Къде"
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Използване: %s [ОПЦИЯ]... [ПОТРЕБИТЕЛ]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"\n"
+" -l извежда в дълъг по-подробен формат за поÑочените "
+"ПОТРЕБИТЕЛи\n"
+" -b изпуÑка потребителÑÐºÐ¸Ñ Ð´Ð¾Ð¼Ð°ÑˆÐµÐ½ каталог в Ð´ÑŠÐ»Ð³Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚\n"
+" -h изпуÑка потребителÑÐºÐ¸Ñ Ñ„Ð°Ð¹Ð» проект в Ð´ÑŠÐ»Ð³Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚\n"
+" -p изпуÑка потребителÑÐºÐ¸Ñ Ñ„Ð°Ð¹Ð» план в Ð´ÑŠÐ»Ð³Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚\n"
+" -s извежда в кратък формат; по подразбиране е така\n"
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+" -f изпуÑка реда-антетка при къÑÐ¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚\n"
+" -w изпуÑка пълните имена при къÑÐ¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚\n"
+" -i изпуÑка пълните имена и отдалечените хоÑтове при къÑÐ¸Ñ "
+"формат\n"
+" -q изпуÑка пълните имена, отдалечените хоÑтове и\n"
+" време на неактивноÑÑ‚ при къÑÐ¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚\n"
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+"\n"
+"Олекотена програма „finger“ -- извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° потребител.\n"
+"Файлът utmp ще бъде %s.\n"
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr "при използване на -l Ñ‚Ñ€Ñбва да Ñе поÑочи поне едно потребителÑко име"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr "диапазон Ñтраници"
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "на „--pages=ПЪРВÐ_СТР[:ПОСЛ_СТР]“ липÑва аргумент"
+
+#: src/pr.c:916
+#, c-format
+msgid "Invalid page range %s"
+msgstr "Ðеправилен диапазон от Ñтраници %s"
+
+#: src/pr.c:981
+#, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "“-l СТР_ДЪЛЖ“ неправилен брой редове: %s"
+
+#: src/pr.c:1005
+#, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "“-N ÐОМЕР“ неправилен номер на ред: %s"
+
+#: src/pr.c:1017
+#, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "“-o ПОЛЕ“ неправилно отмеÑтване на редовете: %s"
+
+#: src/pr.c:1058
+#, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "“-w СТР_ШИР“ неправилен брой знаци: %s"
+
+#: src/pr.c:1072
+#, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "“-W СТР_ШИР“ неправилен брой знаци: %s"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "Ðе може да Ñе поÑочва номер на Ñтълбове при паралелен печат."
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "Ðе може да Ñе задава едновременно уÑпореден печат и печат напреки."
+
+#: src/pr.c:1202
+#, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "“-%c“ излишни знаци или неправилен номер в аргумент: %s"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "ширината на Ñтраницата е твърде малка"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+"началниÑÑ‚ номер на Ñтраница %<PRIuMAX> надминава Ð±Ñ€Ð¾Ñ Ñтраници %<PRIuMAX>"
+
+#: src/pr.c:2406
+#, c-format
+msgid "Page number overflow"
+msgstr "Препълване на номера на Ñтраница"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr "Стр. %<PRIuMAX>"
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+"Форматира за печат ФÐЙЛовете по Ñтраници и Ñтълбове.\n"
+"\n"
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +ПЪРВÐ_СТР[:ПОСЛ_СТР], --pages=ПЪРВÐ_СТР[:ПОСЛ_СТР]\n"
+" започва/Ñвършва печата при ПЪРВÐ_СТР/ПОСЛ_СТР\n"
+" -COLUMN, --columns=СТЪЛБОВЕ\n"
+" извежда СТЪЛБОВЕ Ñтълба и отпечатва Ñтълбовете надолу,\n"
+" оÑвен ако е използвано -a. ПодравнÑва Ð±Ñ€Ð¾Ñ Ð½Ð° редове\n"
+" в Ñтълбовете на вÑÑка Ñтраница.\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across печата Ñтълбовете напреки вмеÑто надолу, използва Ñе\n"
+" заедно Ñ -COLUMN\n"
+" -c, --show-control-chars\n"
+" използва Ð·Ð°Ð¿Ð¸Ñ ÑÑŠÑ ÑˆÐ°Ð¿ÐºÐ¸ (^G) и оÑмични чиÑла\n"
+" -d, --double-space\n"
+" двойни интервали в изхода\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=ФОРМÐТ\n"
+" да Ñе ползва ФОРМÐТ при датата на колонтитула\n"
+" -e[ЗÐÐК[ШИР]], --expand-tabs[=ЗÐÐК[ШИР]]\n"
+" разширÑва вÑеки входен ЗÐÐК като Ñ‚Ð°Ð±ÑƒÐ»Ð°Ñ†Ð¸Ñ ÑÑŠÑ Ð¨Ð˜Ð Ð¸Ð½Ð° "
+"(8)\n"
+" -F, -f, --form-feed\n"
+" Ñ€Ð°Ð·Ð´ÐµÐ»Ñ Ñтраниците Ñ form feed вмеÑто Ñ Ð½Ð¾Ð²Ð¸ редове\n"
+" (при -F има 3-редов горен колонтитул, а без -F има 5-"
+"редови\n"
+" горен и долен колонтитули)\n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h ГКОЛОÐТ, --header=ГКОЛОÐТ\n"
+" ГКОЛОÐТ в Ñредата на Ð³Ð¾Ñ€Ð½Ð¸Ñ ÐºÐ¾Ð»Ð¾Ð½Ñ‚Ð¸Ñ‚ÑƒÐ» вмеÑто името на "
+"файла\n"
+" -h \"\" отпечатва празен ред, не ползвайте -h\"\"\n"
+" -i[ЗÐÐК[ШИР]], --output-tabs[=ЗÐÐК[ШИР]]\n"
+" Ð·Ð°Ð¼ÐµÐ½Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð»Ð¸Ñ‚Ðµ ÑÑŠÑ Ð—ÐÐЦи (табулации) ÑÑŠÑ Ð¨Ð˜Ð Ð¸Ð½Ð° (8)\n"
+" -J, --join-lines Ñлива пълните редове, Ð¾Ñ‚Ð¼ÐµÐ½Ñ Ñъкращаването на редове Ñ -"
+"W,\n"
+" без подравнÑване на Ñтълбовете, --sep-string[=ÐИЗ] "
+"поÑочва\n"
+" ограничителите\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l СТР_ДЪЛЖ, --length=СТР_ДЪЛЖ\n"
+" поÑочва дължина на Ñтраниците от СТР_ДЪЛЖ (66) реда\n"
+" (по подразбиране броÑÑ‚ редове на текÑÑ‚ е 56, Ñ -F -- "
+"63)\n"
+" -m, --merge извежда паралелно вÑички файлове, по един в Ñтълб.\n"
+" Ñъкращава редовете, но Ñ -J Ñлива пълните редове\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[РÐЗД[ЦИФРИ]], --number-lines[=РÐЗД[ЦИФРИ]]\n"
+" номерира редовете, номерата Ñа Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð° ЦИФРИ (5), Ñлед "
+"Ñ‚ÑÑ… \n"
+" РÐЗД (табулации); по подразб. започва да брои от 1\n"
+" -N ÐОМЕР, --first-line-number=ÐОМЕР\n"
+" при номериране на редовете първиÑÑ‚ ред от първата "
+"Ñтраница\n"
+" е Ñ Ð½Ð¾Ð¼ÐµÑ€ ÐОМЕР (вж. +ПЪРВÐ_СТР)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o ПОЛЕ, --indent=ПОЛЕ\n"
+" вÑеки ред е отмеÑтен Ñ ÐŸÐžÐ›Ð• (нула) интервала, не влиÑе "
+"на\n"
+" -w и -W, ПОЛЕ ще бъде добавено към СТР_ШИР\n"
+" -r, --no-file-warnings\n"
+" не предупреждава, ако файлът не може да бъде отворен\n"
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[ЗÐÐК],--separator[=ЗÐÐК]\n"
+" Ñ€Ð°Ð·Ð´ÐµÐ»Ñ Ñтълбовете Ñ ÐµÐ´Ð¸Ð½ знак, без -w по подразбиране "
+"e\n"
+" табулациÑ, а Ñ -w нÑма разделител. Без -s разделителÑÑ‚ "
+"е\n"
+" интервал. -s Ð¾Ñ‚Ð¼ÐµÐ½Ñ Ñъкращаването на редовете при "
+"вÑички\n"
+" опции за Ñтълбове (-СТЪЛБОВЕ|-a -СТЪЛБОВЕ|-m), оÑвен ако "
+"е\n"
+" зададено и -w\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -SÐИЗ, --sep-string[=ÐИЗ]\n"
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" Ñ€Ð°Ð·Ð´ÐµÐ»Ñ Ñтълбовете Ñ ÐИЗ; без -S, но Ñ -J разделител е "
+"табу-\n"
+" лациÑ, а без -J е интервал. Ðе влиÑе на Ñтълбовите "
+"опции.\n"
+" -t, --omit-header пропуÑка горните и долните колонтитули\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" не Ñлага горни и долни колонтитули, изпуÑка "
+"управлÑващите\n"
+" кодове form feed от входните файлове.\n"
+" -v, --show-nonprinting\n"
+" използва оÑмични чиÑла Ñ Ð½Ð°ÐºÐ»Ð¾Ð½ÐµÐ½Ð° черта (\\019)\n"
+" -w СТР_ШИР, --width=СТР_ШИР\n"
+" задава ширина на Ñтраницата от СТР_ШИР (72) знака при\n"
+" многоколонен извод, -s[знак] Ð¾Ñ‚Ð¼ÐµÐ½Ñ (72)\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W СТР_ШИР, --page-width=СТР_ШИР\n"
+" задава ширина на Ñтраницата от СТР_ШИР (72) знака "
+"винаги,\n"
+" Ñъкращава редовете, оÑвен ако е зададена Ð¾Ð¿Ñ†Ð¸Ñ -J, не "
+"Ñе\n"
+" влиÑе от -S и -s\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"-T Ñе подразбира при -l n, ако n <= 10 или <= 3 при -F. Без ФÐЙЛ или ако\n"
+"ФÐЙЛ е -, Ñе чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Използване: %s [ПРОМЕÐЛИВÐ]...\n"
+" или: %s ОПЦИЯ\n"
+"Ðко не е поÑочена ПРОМЕÐЛИВРот обкръжението, отпечатва вÑички.\n"
+"\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+"внимание: %s: знакът(знаците) Ñледващи знакова конÑтанта Ñа пренебрегнати"
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Използване: %s ФОРМÐТ [ÐРГУМЕÐТ]...\n"
+" или: %s ОПЦИЯ\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+"Отпечатва ÐРГУМЕÐТ(ите) Ñпоред ФОРМÐТ.\n"
+"\n"
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"\n"
+"ФОРМÐТ управлÑва изхода както при командата printf на Си. Разпознават Ñе:\n"
+"\n"
+" \\\" двойни прави кавички\n"
+" \\NNN знакът, чийто оÑмичен код е NNN (от 1 to 3 цифри)\n"
+" \\\\ обратна наклонена черта\n"
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+" \\a звуков Ñигнал (BEL)\n"
+" \\b връщане назад (backspace)\n"
+" \\c повече не извежда изход\n"
+" \\f край на Ñтраницата (form feed)\n"
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n нов ред\n"
+" \\r връщане на курÑора\n"
+" \\t хоризонтална табулациÑ\n"
+" \\v вертикална табулациÑ\n"
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+" \\xNN байт ÑÑŠÑ ÑˆÐµÑтнадеÑетичен код NN (от 1 до 2 цифри)\n"
+"\n"
+" \\uNNNN знак от Unicode (ISO/IEC 10646) ÑÑŠÑ 16-ичен код NNNN (4 цифри)\n"
+" \\UNNNNNNNN знак от Unicode ÑÑŠÑ ÑˆÐµÑтнадеÑетичен код NNNNNNNN (8 цифри)\n"
+
+#: src/printf.c:129
+#, fuzzy
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+" %% знак процент\n"
+" %b ÐРГУМЕÐТ, в който Ñе обработват обратните наклонени черти „\\“,\n"
+" но оÑмичните чиÑла имат вида \\0 или \\0NNN\n"
+"\n"
+"и вÑички форматни Ñпецификации на Си, завършващи ÑÑŠÑ Ð·Ð½Ð°Ðº измежду "
+"diouxXfeEgGcs.\n"
+"ÐРГУМЕÐТите Ñе преобразуват в Ð½ÑƒÐ¶Ð½Ð¸Ñ Ñ‚Ð¸Ð¿. Поддържат Ñе променливи ширини.\n"
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: очаква Ñе чиÑлова ÑтойноÑÑ‚"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: ÑтойноÑтта не е напълно преобразувана"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "липÑва шеÑтнадеÑетично чиÑло Ñлед \\"
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "неправилно универÑално име на знак \\%c%0*x"
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr "неправилна ширина на поле: %s"
+
+#: src/printf.c:585
+#, c-format
+msgid "invalid precision: %s"
+msgstr "неправилна точноÑÑ‚: %s"
+
+#: src/printf.c:612
+#, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%.*s: неправилна ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð½Ð° преобразувание"
+
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "внимание: пренебрегват Ñе излишните аргументи започвайки от %s"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr "Ф. Пинард"
+
+#: src/ptx.c:422
+#, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (за рег. израз %s)"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Използване: %s [ОПЦИЯ]... [ВХОД]... (без -G)\n"
+" или: %s -G [ОПЦИЯ]... [ВХОД [ИЗХОД]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"Извежда подреден азбучен показалец на думите и контекÑта им във входните "
+"файлове\n"
+"\n"
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference извежда автоматично генерираните препратки\n"
+" -G, --traditional работи подобно на командата „ptx“ от System "
+"V\n"
+" -F, --flag-truncation=ÐИЗ обозначава Ñ ÐИЗ при Ñъкращаване на "
+"редовете\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=ÐИЗ използва ÐИЗ вмеÑто „xx“ за макроÑи\n"
+" -O, --format=roff извежда изход Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ за roff\n"
+" -R, --right-side-refs поÑÑ‚Ð°Ð²Ñ Ð¿Ñ€ÐµÐ¿Ñ€Ð°Ñ‚ÐºÐ¸Ñ‚Ðµ отдÑÑно, не Ñе броÑÑ‚ "
+"при -w\n"
+" -S, --sentence-regexp=РЕГИЗР за край на редовете или край на "
+"изречениÑта\n"
+" -T, --format=tex извежда изход Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ за TeX\n"
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=РЕГИЗР ползва РЕГИЗР като определÑщ какво е дума\n"
+" -b, --break-file=ФÐЙЛ думите Ñвършват при знак от този ФÐЙЛ\n"
+" -f, --ignore-case Ñортира еднакво главните и малките букви\n"
+" -g, --gap-size=БРОЙ мÑÑто между полетата в изхода\n"
+" -i, --ignore-file=ФÐЙЛ ФÐЙЛ Ñ Ð´ÑƒÐ¼Ð¸, които да Ñе пренебрегват\n"
+" -o, --only-file=ФÐЙЛ признават Ñе Ñамо думи от този ФÐЙЛ\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references първото поле на вÑеки ред е препратка\n"
+" -t, --typeset-mode - не е реализирана -\n"
+" -w, --width=БРОЙ ширина на изхода, препратките не Ñе броÑÑ‚\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"Без ФÐЙЛ или ако ФÐЙЛ е -, Ñе чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´. „-F /“ Ñе "
+"подразбира.\n"
+
+#: src/ptx.c:2016
+#, c-format
+msgid "invalid gap width: %s"
+msgstr "неправилна ширина на мÑÑтото между полетата: %s"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr "опциÑта --copyright е оÑтарÑла; ползвайте --version вмеÑто неÑ"
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+"Извежда пълното файлово име на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚ÐµÐ½ каталог.\n"
+"\n"
+
+#: src/pwd.c:160
+#, c-format
+msgid "failed to chdir to %s"
+msgstr "не може отвори каталогът %s"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, c-format
+msgid "failed to stat %s"
+msgstr "не може да Ñе изпълни stat за %s"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+"не може да Ñе намери елемента на каталога в %s ÑÑŠÑ ÑъответÑтващ i-възел"
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "пренебрегват Ñе аргументи, които не Ñа опции"
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Използване: %s [ОПЦИЯ]... ФÐЙЛ\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+"Извежда ÑтойноÑтта на Ñимволна препратка на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n"
+"\n"
+
+#: src/readlink.c:70
+#, fuzzy
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+" -f, --canonicalize прави в канонична форма Ñледвайки вÑÑка "
+"Ñимволна\n"
+" връзка във вÑеки компонент на даденото име\n"
+" рекурÑивно; вÑички оÑвен поÑледниÑÑ‚ "
+"компонент\n"
+" Ñ‚Ñ€Ñбва да ÑъщеÑтвуват\n"
+" -e, --canonicalize-existing прави в канонична форма Ñледвайки вÑÑка "
+"Ñимволна\n"
+" връзка във вÑеки компонент на даденото име\n"
+" рекурÑивно; компонентите Ñ‚Ñ€Ñбва да "
+"ÑъщеÑтвуват\n"
+" -m, --canonicalize-missing прави в канонична форма Ñледвайки вÑÑка "
+"Ñимволна\n"
+" връзка във вÑеки компонент на да даденото "
+"име\n"
+" без изиÑÐºÐ²Ð°Ð½Ð¸Ñ Ð·Ð° ÑъщеÑтвуването на "
+"компонентите\n"
+" -n, --no-newline не Ñимволи за нов ред в краÑ\n"
+" -q, --quiet,\n"
+" -s, --silent потиÑка повечето ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð° грешка\n"
+" -v, --verbose извежда ÑъобщениÑта за грешки\n"
+
+#: src/readlink.c:78
+#, fuzzy
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+" -f, --canonicalize нормализира, Ñледвайки рекурÑивно вÑÑка Ñимволна\n"
+" връзка, коÑто е компонент на зададената пътека\n"
+" -n, --no-newline не извежда в ÐºÑ€Ð°Ñ Ð·Ð½Ð°Ðº за нов ред\n"
+" -q, --quiet,\n"
+" -s, --silent потиÑка повечето ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð° грешка\n"
+" -v, --verbose Ñъобщава при наличие на грешка\n"
+
+#: src/remove.c:481 src/remove.c:525
+#, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "КРИТИЧÐРГРЕШКÐ: каталогът %s не може да Ñе затвори"
+
+#: src/remove.c:494
+#, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "КРИТИЧÐРГРЕШКÐ: не може да Ñе отвори .. от %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+"КРИТИЧÐРГРЕШКÐ: не може да Ñе гарантира, че %s (върнато през ..) е Ñигурно"
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "КРИТИЧÐРГРЕШКÐ: промени Ñе dev/ino на %s"
+
+#: src/remove.c:631
+#, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "КРИТИЧÐРГРЕШКÐ: не може да Ñе влезе в каталога %s"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+"КРИТИЧÐРГРЕШКÐ: каталогът %s, в който току що Ñе влезе, Ñи Ñмени dev/ino"
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"Ð’ÐИМÐÐИЕ: Циклична каталожна Ñтруктура.\n"
+"Това почти ÑÑŠÑ ÑигурноÑÑ‚ означава, че имате повредена файлова ÑиÑтема.\n"
+"ИЗВЕСТЕТЕ Ð’ÐШИЯ СИСТЕМЕРÐДМИÐИСТРÐТОР.\n"
+"СледващиÑÑ‚ каталог е чаÑÑ‚ от цикъла:\n"
+" %s\n"
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s: да Ñе навлезе ли в Ð·Ð°Ñ‰Ð¸Ñ‚ÐµÐ½Ð¸Ñ Ñрещу Ð·Ð°Ð¿Ð¸Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ %s? "
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s: да Ñе навлезе ли в каталога %s? "
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: да Ñе изтрие ли %s ÑÑŠÑ Ð·Ð°Ñ‰Ð¸Ñ‚Ð° Ñрещу Ð·Ð°Ð¿Ð¸Ñ %s? "
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: да Ñе изтрие ли %s %s? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "каталогът %s е изтрит\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, c-format
+msgid "failed to close directory %s"
+msgstr "каталогът %s не може да Ñе затвори"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr "пропуÑка Ñе %s тъй като е на друго уÑтройÑтво"
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "не може да Ñе изтрие каталогът %s"
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "КРИТИЧÐРГРЕШКÐ: не може да Ñе върне в .. от %s"
+
+#: src/remove.c:1504
+#, c-format
+msgid "cannot remove root directory %s"
+msgstr "не може да Ñе изтрие кореновиÑÑ‚ каталог %s"
+
+#: src/remove.c:1544
+#, c-format
+msgid "cannot remove relative-named %s"
+msgstr "не може да Ñе изтрие отноÑително именуваниÑÑ‚ %s"
+
+#: src/remove.c:1558
+#, c-format
+msgid "cannot restore current working directory"
+msgstr "не може да Ñе възÑтанови текущиÑÑ‚ работен каталог"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr "Опитайте „%s ./%s“, за да изтриете файла %s.\n"
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Използване: %s [ОПЦИЯ]... ФÐЙЛ...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+"Изтрива (unlink) ФÐЙЛовете.\n"
+"\n"
+" -f, --force пренебрегва неÑъщеÑтвуващи файлове, не пита\n"
+" -i пита преди вÑÑко триене\n"
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+" -I пита веднъж преди изтриването на повече от три "
+"файла\n"
+" или при рекурÑивно триене. По-малко доÑадно от -"
+"i,\n"
+" но вÑе пак защитава Ñрещу повечето грешки\n"
+" --interactive[=КОГÐ] пита Ñпоред КОГÐ: never, once (-I) или always (-"
+"i).\n"
+" Без КОГРпита винаги\n"
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+" --one-file-system при рекурÑивно оÑтранÑване на файлове, пропуÑка\n"
+" каталози, които Ñа на файлова ÑиÑтема, различна "
+"от\n"
+" тази на ÑÑŠÐ¾Ñ‚Ð²ÐµÑ‚Ð½Ð¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´\n"
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --no-preserve-root да не Ñе обработва „/“ по-оÑобено\n"
+" --preserve-root да не Ñе дейÑтва рекурÑивно от „/“ (по "
+"подразбиране)\n"
+" -r, -R, --recursive изтрива рекурÑивно каталозите и Ñъдържанието им\n"
+" -v, --verbose Ñъобщава какво Ñе прави\n"
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+"\n"
+"По подразбиране rm не изтрива каталози. За целта ползвайте опциÑта --"
+"recursive\n"
+"(-r или -R), коÑто ще изтрие вÑеки изброен каталог, заедно ÑÑŠÑ Ñъдържанието "
+"му.\n"
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"За да Ñе изтрие файл, чието име започва Ñ â€ž-“ (напр. „-трънки“),\n"
+"използвайте една от командите:\n"
+" %s -- -трънки\n"
+"\n"
+" %s ./-трънки\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"Забележете, че ако използвате rm, за да изтриете даден файл, обикновено е\n"
+"възможно Ñъдържанието му да бъде възÑтановено. Ðко иÑкате да Ñи гарантирате, "
+"че\n"
+"Ñъдържанието му е напълно невъзÑтановимо, помиÑлете дали да не използвате "
+"shred.\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr "%s: да Ñе изтриÑÑ‚ ли рекурÑивно вÑички аргументи? "
+
+#: src/rm.c:366
+#, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: да Ñе изтриÑÑ‚ ли вÑички аргументи"
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "каталогът %s Ñе изтрива"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Използване: %s [ОПЦИЯ]... КÐТÐЛОГ...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"Изтрива КÐТÐЛОГ(зите), ако Ñа празни.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" пренебрегва вÑеки неуÑпех, дължащ Ñе Ñамо на това, че "
+"нÑкой\n"
+" каталог е бил непразен\n"
+
+#: src/rmdir.c:148
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents изтрива КÐТÐЛОГ, Ñлед това Ñе опитва да изтрие вÑеки "
+"каталог,\n"
+" който е чаÑÑ‚ от поÑочената пътека. Ðапр. „rmdir -p a/b/c“ "
+"е\n"
+" като „rmdir a/b/c a/b a“.\n"
+" -v, --verbose извежда Ñъобщение за вÑеки обработен каталог\n"
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Използване: %s [ОПЦИЯ]... ПОСЛЕДÐО\n"
+" или: %s [ОПЦИЯ]... ПЪРВО ПОСЛЕДÐО\n"
+" или: %s [ОПЦИЯ]... ПЪРВО СТЪПКРПОСЛЕДÐО\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"Извежда чиÑлата от ПЪРВО до ПОСЛЕДÐО ÑÑŠÑ Ñтъпка СТЪПКÐ.\n"
+"\n"
+" -f, --format=ФОРМÐТ използва ФОРМÐТ за плаваща Ð·Ð°Ð¿ÐµÑ‚Ð°Ñ Ð½Ð° printf\n"
+" -s, --separator=ÐИЗ ползва ÐИЗ, за да Ñ€Ð°Ð·Ð´ÐµÐ»Ñ Ñ‡Ð¸Ñлата (по подразб. "
+"\\n)\n"
+" -w, --equal-width подравнÑва ширината, попълвайки в началото Ñ "
+"нули\n"
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"\n"
+"Ðко ПЪРВО или СТЪПКРÑа пропуÑнати, по подразбиране Ñе използва 1. Ðапример "
+"ако\n"
+"е пропуÑната СТЪПКÐ, по подразбиране Ñ‚Ñ Ðµ 1 дори и ако ПОСЛЕДÐО е по-малко "
+"от\n"
+"ПЪРВО. ПЪРВО, СТЪПКРИ ПОСЛЕДÐО Ñе интерпретират като чиÑла Ñ Ð¿Ð»Ð°Ð²Ð°Ñ‰Ð° "
+"запетаÑ.\n"
+"Обикновено СТЪПКРе положителна, ако ПЪРВО е по-малко от ПОСЛЕДÐО и "
+"отрицателна\n"
+"иначе. ФОРМÐТът Ñ‚Ñ€Ñбва да бъде подходÑщ за извеждането на едно чиÑло Ñ "
+"плаваща\n"
+"запетаÑ; по подразбиране е %.ТОЧÐОСТf, ако вÑÑко от ПЪРВО, СТЪПКРИ ПОСЛЕДÐО "
+"е\n"
+"чиÑло Ñ Ð¿Ð»Ð°Ð²Ð°Ñ‰Ð° Ð·Ð°Ð¿ÐµÑ‚Ð°Ñ Ñ Ð¼Ð°ÐºÑимална точноÑÑ‚ TOЧÐОСТ и %g иначе.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "неправилно чиÑло Ñ Ð¿Ð»Ð°Ð²Ð°Ñ‰Ð° Ð·Ð°Ð¿ÐµÑ‚Ð°Ñ ÐºÐ°Ñ‚Ð¾ аргумент: %s"
+
+#: src/seq.c:342
+#, c-format
+msgid "invalid format string: %s"
+msgstr "неправилен низ за формат: %s"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr ""
+"не може да Ñе използва форматен низ, когато Ñе извеждат низове Ñ ÐµÐ´Ð½Ð°ÐºÐ²Ð° "
+"ширина"
+
+#: src/setuidgid.c:51
+#, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Използване: %s ПОТРЕБ_ИМЕ КОМÐÐДР[ÐРГУМЕÐТ]...\n"
+" или: %s ОПЦИЯ\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+"Отказва Ñе от вÑички допълнителни групи, приема Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð¸ групата на\n"
+"поÑоченото ПОТРЕБ_ИМЕ и изпълнÑва КОМÐÐДÐта Ñ Ð²Ñички поÑочени ÐРГУМЕÐТи.\n"
+"Приключва Ñ ÐºÐ¾Ð´-ÑÑŠÑтоÑние 111, ако не могат да Ñе приемат необходимите\n"
+"потребител и група. Ð’ противен Ñлучай приключва Ñ ÐºÐ¾Ð´Ð°-ÑÑŠÑтоÑние на\n"
+"КОМÐÐДÐта. Тази програма е полезна Ñамо ако Ñе изпълнÑва от root.\n"
+"\n"
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr "непознат потребител: %s"
+
+#: src/setuidgid.c:109
+#, c-format
+msgid "cannot set supplemental group"
+msgstr "не може да Ñе уÑтанови допълнителна група"
+
+#: src/setuidgid.c:114
+#, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "не може да Ñе приеме група %lu"
+
+#: src/setuidgid.c:118
+#, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "не може да Ñе приеме потребител %lu"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Използване: %s [ОПЦИИ] ФÐЙЛ [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"Заличава многократно поÑочените ФÐЙЛ(ове) Ñ Ñ†ÐµÐ» да Ñе затрудни значително\n"
+"възÑтановÑването на данните от Ñ‚ÑÑ… дори и Ñ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð½Ðµ на Ñпециална "
+"апаратура.\n"
+"\n"
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force ако Ñ‚Ñ€Ñбва, Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñ€ÐµÐ¶Ð¸Ð¼ÑŠÑ‚ за доÑтъп, за да Ñе позволи "
+"запиÑ\n"
+" -n, --iterations=N Заличава N пъти (по подразбиране %d пъти)\n"
+" --random-source=ФÐЙЛ чете Ñлучайни байтове от ФÐЙЛ (вмеÑто /dev/"
+"urandom)\n"
+" -s, --size=N заличава N байта (приемат Ñе ÑуфикÑи като K, M, G)\n"
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove Ñъкращава до нулева дължина и изтрива файла Ñлед "
+"заличаването\n"
+" -v, --verbose показва Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° напредъка\n"
+" -x, --exact не закръглÑва размерите на файловете до ÑÐ»ÐµÐ´Ð²Ð°Ñ‰Ð¸Ñ Ð¿ÑŠÐ»ÐµÐ½ "
+"блок;\n"
+" за Ñпециални файлове и каталози това е по подразбиране\n"
+" -z, --zero Ð½Ð°ÐºÑ€Ð°Ñ Ð·Ð°Ð»Ð¸Ñ‡Ð°Ð²Ð° Ñ Ð½ÑƒÐ»Ð¸, за да Ñе Ñкрие използването на "
+"shred\n"
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"Ðко ФÐЙЛ е -, заличава ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n"
+"\n"
+"Изтрива ФÐЙЛ(овете), ако е поÑочена Ð¾Ð¿Ñ†Ð¸Ñ --remove (-u). По подразбиране\n"
+"файловете не Ñе изтриват, защото е обичайно shred да Ñе използва за "
+"уÑтройÑтва\n"
+"като /dev/hda, а обикновено такива файлове не Ñ‚Ñ€Ñбва да Ñе изтриват. Когато "
+"Ñе\n"
+"дейÑтва върху обикновени файлове, повечето хора използват опциÑта --remove.\n"
+"\n"
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"Ð’ÐИМÐÐИЕ: Забележете, че shred разчита на Ñледното ÑъщеÑтвено "
+"предположение:\n"
+"файловата ÑиÑтема заличава данните на мÑÑтото им. Традиционно Ñе прави "
+"точно\n"
+"това, но замиÑълът на много от модерните файлови ÑиÑтеми е такъв, че те не\n"
+"отговарÑÑ‚ на това предположение. Следват примери на файлови ÑиÑтеми, при "
+"които\n"
+"shred не е ефективна команда или поне не Ñе гарантира да бъде ефективна при\n"
+"вÑички режими на работа на файловата ÑиÑтема:\n"
+"\n"
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"- log-Ñтруктурираните или журнализирани файлови ÑиÑтеми като JFS, ReiserFS, "
+"XFS,\n"
+" Ext3 (включително файловите ÑиÑтеми, разпроÑтранÑвани Ñ AIX и Solaris)\n"
+"\n"
+"- файловите ÑиÑтеми, които запиÑват излишни данни и ги пазÑÑ‚, дори когато "
+"нÑкой\n"
+" запиÑва върху файла, например файловите ÑиÑтеми, използващи RAID\n"
+"\n"
+"- файловите ÑиÑтеми, които правÑÑ‚ копиÑ, като напр. NFS-Ñървърът на\n"
+" Network Appliance\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+#, fuzzy
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+"- файловите ÑиÑтеми които кешират информациÑта на временни меÑта, например\n"
+" клиентите на NFS, верÑÐ¸Ñ 3\n"
+"\n"
+"- компреÑиращите файлови ÑиÑтеми\n"
+"\n"
+"По отношение на файловата ÑиÑтема ext3 горното предупреждение е приложимо\n"
+"(и Ñледователно shred е Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð° ефективноÑÑ‚) Ñамо в режим "
+"data=journal,\n"
+"при който оÑвен метаданни Ñе журнализират и данни от файловете. Както при\n"
+"data=ordered (по подразбиране), така и при data=writeback, shred работи\n"
+"както Ñ‚Ñ€Ñбва. ЖурнализиращиÑÑ‚ режим на Ext3 може да бъде избран "
+"поÑредÑтвом\n"
+"добавÑне на Ð¾Ð¿Ñ†Ð¸Ñ data=нещо към опциите при монтиране на Ñъответната "
+"файлова\n"
+"ÑиÑтема във файла /etc/fstab, както това е опиÑано в man-Ñтраницата на "
+"mount\n"
+"(използвайте: man mount).\n"
+"\n"
+"ТрÑбва да Ñе има предвид още и това, че резервните ÐºÐ¾Ð¿Ð¸Ñ Ð¸ отдалечени "
+"огледала\n"
+"Ñъщо могат да Ñъдържат ÐºÐ¾Ð¿Ð¸Ñ Ð½Ð° файла, които не могат да бъдат отÑтранени и\n"
+"дават възможноÑÑ‚ заличениÑÑ‚ ÑÑŠÑ shred файл да бъде възÑтановен.\n"
+
+#: src/shred.c:234
+#, fuzzy
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+"- файлови ÑиÑтеми, които кешират информациÑта на временни меÑта, като "
+"клиентите\n"
+" на NFS верÑÐ¸Ñ 3\n"
+"\n"
+"- компреÑираните файлови ÑиÑтеми\n"
+"\n"
+"ОÑвен това резервните ÐºÐ¾Ð¿Ð¸Ñ Ð½Ð° файловите ÑиÑтеми могат да Ñъдържат ÐºÐ¾Ð¿Ð¸Ñ Ð½Ð°\n"
+"файла, които не могат да бъдат изтрити и които ще позволÑÑ‚ по-къÑно "
+"изтритиÑÑ‚\n"
+"файл да бъде възÑтановен.\n"
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr "%s: неуÑпешно извикване на fdatasync"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr "%s: неуÑпешно извикване на fsync"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s: битовете не могат да Ñе обръщат"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: Ð¸Ñ‚ÐµÑ€Ð°Ñ†Ð¸Ñ %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s: грешка при Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° отмеÑтване %s"
+
+#: src/shred.c:478
+#, c-format
+msgid "%s: lseek failed"
+msgstr "%s: неуÑпешно извикване на lseek"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s: файлът е твърде дълъг"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: Ð¸Ñ‚ÐµÑ€Ð°Ñ†Ð¸Ñ %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: Ð¸Ñ‚ÐµÑ€Ð°Ñ†Ð¸Ñ %lu/%lu (%s)...%s/%s %d%%"
+
+#: src/shred.c:776
+#, c-format
+msgid "%s: fstat failed"
+msgstr "%s: неуÑпешно извикване на fstat"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: недопуÑтим тип на файла"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: файлът има отрицателен размер"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s: грешка при Ñъкращаване"
+
+#: src/shred.c:889
+#, c-format
+msgid "%s: fcntl failed"
+msgstr "%s: неуÑпешно извикване на fcntl"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s: не може да Ñе заличава файл Ñ Ñ€ÐµÐ¶Ð¸Ð¼ на доÑтъп Ñамо за добавÑне"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: изтриване"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: преименуван на %s"
+
+#: src/shred.c:1018
+#, c-format
+msgid "%s: failed to remove"
+msgstr "%s: не може да Ñе отÑтрани"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: изтрит"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, c-format
+msgid "%s: failed to close"
+msgstr "%s: не може да Ñе затвори"
+
+#: src/shred.c:1065
+#, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: не може да Ñе отвори в режим за пиÑане"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: неправилен брой итерации"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, c-format
+msgid "multiple random sources specified"
+msgstr "поÑочени Ñа много Ñлучайни източници"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: неправилен размер на файла"
+
+#: src/shuf.c:51
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Използване: %s [ОПЦИЯ]... [ФÐЙЛ]\n"
+" или: %s -e [ОПЦИЯ]... [ÐРГУМЕÐТ]...\n"
+" или: %s -i ОТ-ДО [ОПЦИЯ]...\n"
+
+#: src/shuf.c:57
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"Извежда на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´ Ñлучайни пермутации на входните редове.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -e, --echo работи Ñ Ð²Ñеки ÐРГУМЕÐТ като Ñ Ð²Ñ…Ð¾Ð´ÐµÐ½ ред\n"
+" -i, --input-range=ОТ-ДО работи Ñ Ð²ÑÑко чиÑло от ОТ до ДО като Ñ Ð²Ñ…Ð¾Ð´ÐµÐ½ "
+"ред\n"
+" -n, --head-lines=БРОЙ извежда най-много БРОЙ реда\n"
+" -o, --output=ФÐЙЛ извежда резултата във ФÐЙЛ вмеÑто на Ñтанд. "
+"изход\n"
+" --random-source=ФÐЙЛ чете Ñлучайни байтове от ФÐЙЛ (вмеÑто /dev/"
+"urandom)\n"
+" -z, --zero-terminated завършва редовете Ñ Ð½ÑƒÐ»ÐµÐ² байт вмеÑто Ñ Ð½Ð¾Ð² ред\n"
+
+#: src/shuf.c:287
+#, c-format
+msgid "multiple -i options specified"
+msgstr "поÑочени Ñа много опции -i"
+
+#: src/shuf.c:307
+#, c-format
+msgid "invalid input range %s"
+msgstr "неправилен входен диапазон: %s"
+
+#: src/shuf.c:320
+#, c-format
+msgid "invalid line count %s"
+msgstr "неправилен брой редове: %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr "поÑочени Ñа твърде много изходни файлове"
+
+#: src/shuf.c:353
+#, c-format
+msgid "cannot combine -e and -i options"
+msgstr "не може да Ñе комбинират опциите -e и -i"
+
+#: src/shuf.c:362
+#, c-format
+msgid "extra operand %s\n"
+msgstr "излишен операнд %s\n"
+
+#: src/sleep.c:47
+#, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Използване: %s ЧИСЛО[СУФИКС]...\n"
+" или: %s ОПЦИЯ\n"
+"Чака ЧИСЛО Ñекунди. СУФИКС може да бъде „s“ за Ñекунди (по подразбиране),\n"
+"“m“ за минути, „h“ за чаÑове или „d“ за дни. За разлика от повечето други\n"
+"реализации, при които ЧИСЛО Ñ‚Ñ€Ñбва да бъде цÑло чиÑло, тук ЧИСЛО може да "
+"бъде\n"
+"произволно чиÑло Ñ Ð¿Ð»Ð°Ð²Ð°Ñ‰Ð° запетаÑ. При повече от един аргументи чака "
+"Ñумата\n"
+"от поÑочените времена.\n"
+"\n"
+
+#: src/sleep.c:138
+#, c-format
+msgid "invalid time interval %s"
+msgstr "неправилен интервал за време %s"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "не може да Ñе чете чаÑовникът в реално време"
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"Извежда на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´ Ñортирана ÐºÐ¾Ð½ÐºÐ°Ñ‚ÐµÐ½Ð°Ñ†Ð¸Ñ Ð½Ð° вÑички ФÐЙЛ(ове).\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+"Опции, определÑщи наредбата:\n"
+"\n"
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks не отчита интервалите в началото\n"
+" -d, --dictionary-order отчита Ñамо интервалите и буквено-цифровите "
+"знаци\n"
+" -f, --ignore-case приравнÑва малките Ñ Ð³Ð»Ð°Ð²Ð½Ð¸Ñ‚Ðµ букви\n"
+
+#: src/sort.c:326
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort ÑравнÑва Ñпоред общата чиÑлова ÑтойноÑÑ‚\n"
+" -i, --ignore-nonprinting отчита Ñамо печатните знаци\n"
+" -M, --month-sort ÑравнÑва (неизвеÑтно) < `ЯÐУ' < ... < `ДЕК'\n"
+" -n, --numeric-sort ÑравнÑва Ñпоред чиÑловата ÑтойноÑÑ‚ на "
+"низовете\n"
+" -R, --random-sort Ñортира Ñпоред Ñлучаен хеш\n"
+" --random-source=FILE чете Ñлучайни байтове от ФÐЙЛ (вмеÑто /dev/"
+"urandom)\n"
+" -r, --reverse Ñортира в обратен ред\n"
+"\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+#, fuzzy
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+"Други опции:\n"
+"\n"
+" -c, --check проверÑва дали входът е Ñортиран; не Ñортира\n"
+" -k, --key=ПОЗ1[,ПОЗ2] Ñортира по ключ от ПОЗ1 до ПОЗ2 (брои Ñе от 1)\n"
+" -m, --merge Ñлива вече Ñортирани файлове; не Ñортира\n"
+" -o, --output=ФÐЙЛ запиÑва резултата във ФÐЙЛ вмеÑто на Ñтанд. "
+"изход\n"
+" -s, --stable Ñтабилизира sort пропуÑкайки last-resort "
+"comparison\n"
+" -S, --buffer-size=РÐЗМ използва буфер в паметта Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€ РÐЗМ\n"
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=РÐЗД ползва РÐЗД вмеÑто преход от видим знак към "
+"интерв.\n"
+" -T, --temporary-directory=КÐТ каталог за временни файлове вмеÑто $TMPDIR "
+"или\n"
+" %s; нÑколко такива опции за нÑколко каталога\n"
+" -u, --unique Ñ â€ž-c“ проверÑва за Ñтрога наредба; иначе\n"
+" извежда Ñамо Ð¿ÑŠÑ€Ð²Ð¸Ñ Ð¾Ñ‚ група еквивалентни "
+"редове\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -z, --zero-terminated завършва редовете Ñ Ð±Ð°Ð¹Ñ‚ 0 вмеÑто Ñ Ð½Ð¾Ð² ред\n"
+
+#: src/sort.c:363
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"ПОЗ е F[.C][ОПЦ], където F е номер на поле, а C - мÑÑтото на знака в\n"
+"полето, броейки от 1. Ðко нито -t, нито -b е активно, знаците Ñе\n"
+"броÑÑ‚ от началото на предхождащото бÑло поле. ОПЦ е една или повече\n"
+"еднобуквени опции за наредба на буквите, които има приоритет при това\n"
+"поле пред глобалните опции за наредба. Ðко не е поÑочено поле, като\n"
+"поле Ñе ползва целиÑÑ‚ ред.\n"
+"\n"
+"РÐЗМ може да бъде Ñледван от нÑкой от Ñледните множители:\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"% 1% от паметта, b 1, K 1024 (по подразб.) и т.н. за M, G, T, P, E, Z, Y.\n"
+"\n"
+"Без ФÐЙЛ или ако ФÐЙЛ е -, чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+"\n"
+"*** Ð’ÐИМÐÐИЕ ***\n"
+"Локалът, поÑочен в обкръжението, влиÑе на наредбата.\n"
+"Използвайте LC_ALL=C, за да получите традиционната наредба,\n"
+"коÑто ÑравнÑва Ñпоред кодовете на знаците.\n"
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "Ð·Ð°Ð¿Ð¸Ñ Ð² %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "не може да Ñе направи временен файл"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "неуÑпешно отварÑне на файл"
+
+#: src/sort.c:758
+msgid "fflush failed"
+msgstr "неуÑпешно извикване на fflush"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "неуÑпешно затварÑне на файл"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "неуÑпешно отварÑне на файл"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr ""
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "не може да Ñе направи временен файл"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "не може да Ñе направи временен файл"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr ""
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "не може да Ñе Ñъздаде каталог %s"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "неуÑпешен запиÑ"
+
+#: src/sort.c:975
+#, c-format
+msgid "warning: cannot remove: %s"
+msgstr "внимание: не може да Ñе изтрие: %s"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "Ñортировка размер"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "файл не може да бъде открит"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "не може да Ñе чете"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: разбърканоÑÑ‚: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "Ñтандартната грешка"
+
+#: src/sort.c:2562
+#, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: неправилна ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð½Ð° поле %s"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr "опциите „-%s“ Ñа неÑъвмеÑтими"
+
+#: src/sort.c:2637
+#, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: неправилен брой в началото на %s"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "неправилно чиÑло Ñлед „-“"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "неправилно чиÑло Ñлед „.“"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "неочакван знак в ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð½Ð° поле"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "поÑочени Ñа много формати за изхода"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "неправилно чиÑло в началото на поле"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "номерът на поле е нула"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "отмеÑтването в знаци е нула"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "неправилно чиÑло Ñлед „,“"
+
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "допълнителниÑÑ‚ операнд %s не е позволен Ñ -c"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Използване: %s [ОПЦИЯ] [ВХОД [ПРЕФИКС]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"Ð Ð°Ð·Ð´ÐµÐ»Ñ Ð’Ð¥ÐžÐ” на парчета ПРЕФИКСaa, ПРЕФИКСab,... Ñ Ñ„Ð¸ÐºÑиран размер. По \n"
+"подразбиране ПРЕФИКС е „xx“, а размерът - 1000 реда. Без ВХОД или ако ВХОД "
+"e -,\n"
+"чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+"\n"
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=N ползва ÑуфикÑи Ñ Ð´ÑŠÐ»Ð¶Ð¸Ð½Ð° N (по подразбиране %d)\n"
+" -b, --bytes=РÐЗМ дели на парчета Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€ РÐЗМ байта\n"
+" -C, --line-bytes=РÐЗМ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ Ð¿Ð¾ редове до РÐЗМ байта на изходен файл\n"
+" -d, --numeric-suffixes ползва чиÑлови ÑуфикÑи вмеÑто буквени\n"
+" -l, --lines=ЧИСЛО дели на по ЧИСЛО редове на изходен файл\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose Ñъобщава на Ñтандартната грешка преди отварÑнето\n"
+" на вÑеки изходен файл\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"РÐЗМ може да има ÑуфикÑ-множител: b за 512, k за 1 Kб, m за 1 Мб.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "Изчерпаха Ñе ÑуфикÑите за изходни файлове"
+
+#: src/split.c:211
+#, c-format
+msgid "creating file %s\n"
+msgstr "Ñъздава Ñе файл %s\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "не може да Ñе цепи по повече от един начин"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: неправилна дължина на ÑуфикÑ"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: неправилен брой байтове"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: неправилен брой редове"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "опциÑта за брой редове -%s%c... е твърде голÑмa"
+
+#: src/split.c:518
+#, c-format
+msgid "invalid number of lines: 0"
+msgstr "недопуÑтим брой редове: 0"
+
+#: src/stat.c:636
+#, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "внимание: неразпозната команда Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð° наклонена черта „\\%c“"
+
+#: src/stat.c:680
+#, c-format
+msgid "%s: invalid directive"
+msgstr "%s: неправилна команда"
+
+#: src/stat.c:726
+#, c-format
+msgid "warning: backslash at end of format"
+msgstr "внимание: обратна наклонена черта в ÐºÑ€Ð°Ñ Ð½Ð° форматен низ"
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr "не може да Ñе прочете от файловата ÑиÑтема Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° %s"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Използване: %s [ОПЦИЯ] ФÐЙЛ...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+"Извежда ÑÑŠÑтоÑнието на файл или файлова ÑиÑтема.\n"
+"\n"
+" -L, --dereference Ñледва Ñимволните връзки\n"
+" -f, --file-system извежда ÑÑŠÑтоÑнието на файловата ÑиÑтема, вмеÑто на "
+"файла\n"
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+" -c --format=ФОРМÐТ да Ñе използва поÑочениÑÑ‚ ФОРМÐТ, вмеÑто "
+"Ð¿Ð¾Ð´Ñ€Ð°Ð·Ð±Ð¸Ñ€Ð°Ñ‰Ð¸Ñ Ñе;\n"
+" да Ñе изведе нов ред Ñлед вÑÑко използване на "
+"ФОРМÐТ\n"
+" --printf=ФОРМÐТ като --format, но да Ñе интерпретират обратно "
+"наклонените черти\n"
+" и да не Ñе извежда Ð·Ð°Ð´ÑŠÐ»Ð¶Ð¸Ñ‚ÐµÐ»Ð½Ð¸Ñ Ð·Ð°Ð²ÑŠÑ€ÑˆÐ²Ð°Ñ‰ нов "
+"ред.\n"
+" Ðко иÑкате нов ред, вмъкнете \\n във ФОРМÐТ.\n"
+" -t, --terse информациÑта да Ñе извежда в Ñбита форма\n"
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"\n"
+"ДопуÑтими ФОРМÐТи за файлове (без --file-system) Ñа:\n"
+"\n"
+" %a Режим за доÑтъп като оÑмично чиÑло\n"
+" %A Режим за доÑтъп във формат удобен за четене от хора\n"
+" %b Брой заделени блокове (вж. %B)\n"
+" %B Размерът в байтове на вÑеки блок, Ñъобщен от %b\n"
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+" %d ДеÑетичен номер на уÑтройÑтво\n"
+" %D ШеÑтнадеÑетичен номер на уÑтройÑтво\n"
+" %f ШеÑтнадеÑетичен Ñуров режим (raw mode)\n"
+" %F Тип на файла\n"
+" %g Ðомер на групата на ÑобÑтвеника\n"
+" %G Име на групата на ÑобÑтвеника\n"
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+" %h Брой твърди връзки\n"
+" %i Ðомер на i-възел\n"
+" %n Име на файла\n"
+" %N Име на файла в кавички и Ñочен файл, ако е Ñимволна връзка\n"
+" %o размер на входно-Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ð±Ð»Ð¾Ðº\n"
+" %s Общ размер в байтове\n"
+" %t ГолÑм шеÑтнадеÑетичен номер на уÑтройÑтво\n"
+" %T Малък шеÑтнадеÑетичен номер на уÑтройÑтво\n"
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+" %u ПотребителÑки номер на ÑобÑтвеника\n"
+" %U ПотребителÑко име на ÑобÑтвеника\n"
+" %x Време на поÑледен доÑтъп\n"
+" %X Време на поÑледен доÑтъп в Ñекунди от Епохата\n"
+" %y Време на поÑледно изменение (modification)\n"
+" %Y Време на поÑледно изменение в Ñекунди от Епохата\n"
+" %z Време на поÑледна промÑна (change)\n"
+" %Z Време на поÑледна промÑна в Ñекунди от Епохата\n"
+"\n"
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"Валидни формати за файловите ÑиÑтеми Ñа:\n"
+"\n"
+" %a Свободни блокове, доÑтъпни за обикновени потребители\n"
+" %b Общ брой блокове за данни във файловата ÑиÑтема\n"
+" %c Общ брой файлови възли във файловата ÑиÑтема\n"
+" %d Свободни файлови възли във файловата ÑиÑтема\n"
+" %f Свободни блокове във файловата ÑиÑтема\n"
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+" %i ШеÑтнадеÑетичен Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð° файловата ÑиÑтема\n"
+" %l МакÑимална дължина на файловите имена\n"
+" %n Име на файла\n"
+" %s Оптимален размер на блока за бърз транÑфер\n"
+" %S ОÑновен размер на блока (при броене на блоковете)\n"
+" %t Типът като шеÑтнадеÑетично чиÑло\n"
+" %T Типът във вид за четене от човек\n"
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Използване: %s [-F УСТРОЙСТВО] [--file=УСТРОЙСТВО] [ÐÐСТРОЙКÐ]...\n"
+" или: %s [-F УСТРОЙСТВО] [--file=УСТРОЙСТВО] [-a|--all]\n"
+" или: %s [-F УСТРОЙСТВО] [--file=УСТРОЙСТВО] [-g|--save]\n"
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Извежда или Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñ…Ð°Ñ€Ð°ÐºÑ‚ÐµÑ€Ð¸Ñтиките на терминала\n"
+"\n"
+" -a, --all извежда вÑички текущи наÑтройки в удобен за четене вид\n"
+" -g, --save извежда вÑички текущи наÑтройки във формат, четим от "
+"stty\n"
+" -F, --file=УСТРОЙСТВО Ð¾Ñ‚Ð²Ð°Ñ€Ñ Ð¸ използва поÑоченото УСТРОЙСТВО вмеÑто Ñтд."
+"вход\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+"\n"
+"ÐœÐ¸Ð½ÑƒÑ Ð¿Ñ€ÐµÐ´Ð¸ ÐÐСТРОЙКРпоказва отрицание. Знак * означава не POSIX "
+"наÑтройка.\n"
+"Кои наÑтройки Ñа допуÑтими завиÑи от използваната ÑиÑтема.\n"
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"\n"
+"УправлÑващи кодове:\n"
+" * dsusp ЗÐÐК ЗÐÐК ще изпрати Ñигнал terminal stop, когато входът "
+"изпрати\n"
+" eof ЗÐÐК ЗÐÐК ще изпрати Ñигнал край на файл (ще прекрати входа)\n"
+" eol ЗÐÐК ЗÐÐК ще завърши реда\n"
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+" * eol2 ЗÐÐК алтернативен ЗÐÐК за край на реда\n"
+" erase ЗÐÐК ЗÐÐК ще изтрие поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÐ½ знак\n"
+" intr ЗÐÐК ЗÐÐК ще изпрати Ñигнал за прекъÑване\n"
+" kill ЗÐÐК ЗÐÐК ще изтрие Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ€ÐµÐ´\n"
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+" * lnext ЗÐÐК ЗÐÐК ще въведе ÑÐ»ÐµÐ´Ð²Ð°Ñ‰Ð¸Ñ Ð·Ð½Ð°Ðº буквално, дори ако е "
+"управлÑващ\n"
+" quit ЗÐÐК ЗÐÐК ще изпрати Ñигнал „изход“\n"
+" * rprnt ЗÐÐК ЗÐÐК ще пречертае Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ€ÐµÐ´\n"
+" start ЗÐÐК ЗÐÐК ще възобнови извеждането, Ñлед като е било прекъÑнато\n"
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+" stop ЗÐÐК ЗÐÐК ще Ñпре извеждането\n"
+" susp ЗÐÐК ЗÐÐК ще изпрати Ñигнал „Ñпиране на терминала“\n"
+" * swtch ЗÐÐК ЗÐÐК ще превключи на друг Ñлой на обвивката (shell layer)\n"
+" * werase ЗÐÐК ЗÐÐК ще изтрие поÑледната въведена дума\n"
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"\n"
+"Специални наÑтройки:\n"
+" N поÑочва ÑкороÑти за входа и изхода N бода\n"
+" * cols N казва на Ñдрото, че терминалът има N Ñтълба\n"
+" * columns N Ñъщото като cols N\n"
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+" ispeed N поÑочва ÑкороÑÑ‚ на входа N бода\n"
+" * line N ползва редова диÑциплина N\n"
+" min N Ñ -icanon поÑочва поне N знака за завършено четене\n"
+" ospeed N поÑочва ÑкороÑÑ‚ на изхода N бода\n"
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+" * rows N казва на Ñдрото, че терминалът има N реда\n"
+" * size извежда Ð±Ñ€Ð¾Ñ Ñ€ÐµÐ´Ð¾Ð²Ðµ и Ñтълбове Ñпоред Ñдрото\n"
+" speed извежда ÑкороÑтта на терминала\n"
+" time N Ñ -icanon поÑочва прекъÑване при четене до N деÑети от "
+"Ñекундата\n"
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"\n"
+"УправлÑващи наÑтройки:\n"
+" [-]clocal забранÑва Ñигналите управлÑващите Ñигнали за модем\n"
+" [-]cread позволÑва да Ñе получава входа\n"
+" * [-]crtscts позволÑва диалог (handshaking) RTS/CTS\n"
+" csN поÑочва размер на знаците до N бита, N е от 5 до 8\n"
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+" [-]cstopb използва два Ñтоп-бита на знак (един Ñ â€ž-“)\n"
+" [-]hup изпраща Ñигнал за увиÑване, ako вÑички процеÑи затворÑÑ‚ "
+"tty\n"
+" [-]hupcl Ñъщото като [-]hup\n"
+" [-]parenb генерира на изхода и очаква на входа бит за четноÑÑ‚\n"
+" [-]parodd поÑочва текова четноÑÑ‚ (четна Ñ â€ž-“)\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"\n"
+"ÐаÑтройки на входа:\n"
+" [-]brkint прекъÑваниÑта да довеждат до Ñигнал за прекъÑване\n"
+" [-]icrnl превежда кодовете за връщане на курÑора в кодове за нов "
+"ред\n"
+" [-]ignbrk пренебрегва знаците за прекъÑване\n"
+" [-]igncr пренебрегва знаците за връщане на курÑора\n"
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+" [-]ignpar пренебрегва знаците Ñ Ð³Ñ€ÐµÑˆÐºÐ° на четноÑтта\n"
+" * [-]imaxbel звуков Ñигнал и запазване на препълнен буфер при нов знак\n"
+" [-]inlcr превежда кодовете за нов ред в кодове за връщане на "
+"курÑора\n"
+" [-]inpck позволÑва проверка за четноÑтта на входа\n"
+" [-]istrip изчиÑтва ÑÑ‚Ð°Ñ€ÑˆÐ¸Ñ (8-миÑ) бит на входните знаци\n"
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+" * [-]iutf8 да Ñе предполага, че входните знаци Ñа кодирани в UTF-8\n"
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+" * [-]iuclc превежда знаците от горен региÑÑ‚ÑŠÑ€ в долен региÑÑ‚ÑŠÑ€\n"
+" * [-]ixany вÑеки знак да реÑтартира извеждането (не Ñамо знака за "
+"Ñтарт)\n"
+" [-]ixoff позволÑва изпращането на знаци за Ñтарт/Ñтоп\n"
+" [-]ixon позволÑва управление на потока XON/XOFF (Ñ‚.е. Ctrl-S/Ctrl-"
+"Q)\n"
+" [-]parmrk маркира грешките по четноÑÑ‚ (Ñ Ð¿Ð¾ÑледователноÑÑ‚ 255-0)\n"
+" [-]tandem Ñъщото като [-]ixoff\n"
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"\n"
+"ÐаÑтройки на извеждането:\n"
+" * bsN Ñтил за задържане на backspace, N е 0 или 1\n"
+" * crN Ñтил за задържане на връщане на курÑора, N е от 0 до 3\n"
+" * ffN Ñтил за задържане на код за нова Ñтраница, N е 0 или 1\n"
+" * nlN Ñтил за задържане на код за нов ред, N е 0 или 1\n"
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+" * [-]ocrnl превежда кодовете за връщане на курÑора в кодове за нов "
+"ред\n"
+" * [-]ofdel използва кодове delete за попълване вмеÑто null\n"
+" * [-]ofill използва попълващи кодове вмеÑто Ñинхронизиране при "
+"забавÑне\n"
+" * [-]olcuc превежда знаците от долен региÑÑ‚ÑŠÑ€ в знаци от горен "
+"региÑÑ‚ÑŠÑ€\n"
+" * [-]onlcr превежда кодовете нов ред в кодове връщане на курÑора и нов "
+"ред\n"
+" * [-]onlret кодът за нов ред оÑъщеÑтвÑва връщане на курÑора\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+" * [-]onocr не извежда знаци за връщане на курÑора в Ð¿ÑŠÑ€Ð²Ð¸Ñ Ñтълб\n"
+" [-]opost дообработка (postprocess) на изхода\n"
+" * tabN Ñтил за задържане на кодове за хориз. табулациÑ, N е от 0 "
+"до 3\n"
+" * tabs Ñъщото като tab0\n"
+" * -tabs Ñъщото като tab3\n"
+" * vtN Ñтил за задържане на кодове за вертик. табулациÑ, N е 0 или "
+"1\n"
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"\n"
+"Локални наÑтройки:\n"
+" [-]crterase ехо на кодовете за изтриване като backspace-интервал-"
+"backspace\n"
+" * crtkill убива реда Ñпоред на наÑтройките echoprt и echoe\n"
+" * -crtkill убива реда Ñпоред на наÑтройките echoctl и echok\n"
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+" * [-]ctlecho ехо на управлÑващите кодове Ñ ÑˆÐ°Ð¿ÐºÐ¸ (“^c“)\n"
+" [-]echo ехо на входните знаци\n"
+" * [-]echoctl Ñъщото като [-]ctlecho\n"
+" [-]echoe Ñъщото като [-]crterase\n"
+" [-]echok ехо на нов ред Ñлед код за убиване\n"
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+" * [-]echoke Ñъщото като [-]crtkill\n"
+" [-]echonl ехо на нов ред дори ако не е имало ехо на други Ñимволи\n"
+" * [-]echoprt ехо на изтритите знаци назад, между „\\“ и „/“\n"
+" [-]icanon позволÑва управлÑващите кодове за erase, kill, werase и "
+"rprnt\n"
+" [-]iexten позволÑва управлÑващите кодове, които не отговарÑÑ‚ на "
+"POSIX\n"
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+" [-]isig позволÑва управлÑващите кодове за interrupt, quit и "
+"suspend\n"
+" [-]noflsh забранÑва моменталното извеждане Ñлед кодове interrupt и "
+"quit\n"
+" * [-]prterase Ñъщото като [-]echoprt\n"
+" * [-]tostop Ñпира фоновите задачи, които Ñе опитват да пишат на "
+"терминала\n"
+" * [-]xcase Ñ icanon извежда главните букви като предшеÑтвани от „\\“ "
+"малки\n"
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+"\n"
+"Комбинирани наÑтройки:\n"
+" * [-]LCASE Ñъщото като [-]lcase\n"
+" cbreak Ñъщото като -icanon\n"
+" -cbreak Ñъщото като icanon\n"
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+" cooked Ñъщото като brkint ignpar istrip icrnl ixon opost isig "
+"icanon\n"
+" управлÑващите Ñимволи eof и eol имат Ñтандартното Ñи "
+"значение\n"
+" -cooked Ñъщото като raw\n"
+" crt Ñъщото като echoe echoctl echoke\n"
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+" dec Ñъщото като echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq Ñъщото като [-]ixany\n"
+" ek управлÑващите Ñимволи erase и kill ÑÑŠÑ Ñтандартната Ñи "
+"ÑтойноÑÑ‚\n"
+" evenp Ñъщото като parenb -parodd cs7\n"
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+" -evenp Ñъщото като -parenb cs8\n"
+" * [-]lcase Ñъщото като xcase iuclc olcuc\n"
+" litout Ñъщото като -parenb -istrip -opost cs8\n"
+" -litout Ñъщото като parenb istrip opost cs7\n"
+" nl Ñъщото като -icrnl -onlcr\n"
+" -nl Ñъщото като icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+" oddp Ñъщото като parenb parodd cs7\n"
+" -oddp Ñъщото като -parenb cs8\n"
+" [-]parity Ñъщото като [-]evenp\n"
+" pass8 Ñъщото като -parenb -istrip cs8\n"
+" -pass8 Ñъщото като parenb istrip cs7\n"
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+" raw Ñъщото като -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw Ñъщото като\n"
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+" sane Ñъщото като -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, вÑички управлÑващи\n"
+" знаци запазват Ñтандартната Ñи ÑтойноÑÑ‚.\n"
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"УправлÑва терминалната линиÑ, Ñвързана на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´. Без аргументи\n"
+"извежда ÑкороÑтта в бодове (Ñ‚.е. бит/Ñек), диÑциплината на линиÑта и\n"
+"различиÑта от stty sane. Ð’ наÑтройките ЗÐÐК Ñе задава буквално или кодиран\n"
+"като ^c, 0x37, 0177 или 127; Ñпециалните ÑтойноÑти ^- и undef Ñе използват,\n"
+"за да Ñе забранÑÑ‚ Ñъответните управлÑващи знаци.\n"
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr "може да Ñе поÑочва Ñамо едно уÑтройÑтво"
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+"опциите за подробен и stty-четим изходен Ñтил\n"
+"взаимно Ñе изключват"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "при поÑочване на изходен Ñтил не може да Ñе наÑтройват режими"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: не може да Ñе презададе режимът non-blocking"
+
+#: src/stty.c:885 src/stty.c:995
+#, c-format
+msgid "invalid argument %s"
+msgstr "неправилен аргумент %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, c-format
+msgid "missing argument to %s"
+msgstr "липÑва аргумент за %s"
+
+#: src/stty.c:976
+#, c-format
+msgid "invalid line discipline %s"
+msgstr "неправилна диÑциплина на редовете %s"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: не може да Ñе оÑъщеÑтвÑÑ‚ вÑички поиÑкани операции"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "new_mode: mode\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: нÑма Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° размера на това уÑтройÑтво"
+
+#: src/stty.c:1888
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "неправилен чиÑлов аргумент %s"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Парола:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: не може да Ñе отвори /dev/tty"
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "не може да Ñе зададат групите"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "не може да Ñе зададе групата"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "не може да Ñе зададе потребителÑÑ‚"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Използване: %s [ОПЦИЯ]... [-] [ПОТР [ÐРГ]...]\n"
+
+#: src/su.c:386
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Прави дейÑтващите (effective) номера на потребител и група да Ñа тези на "
+"ПОТР.\n"
+"\n"
+" -, -l, --login прави обвивката да бъде входÑща обвивка\n"
+" -c, --commmand=КОМÐÐДРподава Ñ -c на обвивката неÑÑŠÑтавна КОМÐÐДÐ\n"
+" -f, --fast подава -f на обвивката (за csh и tcsh)\n"
+" -m, --preserve-environment не преуÑтановÑва променливите от "
+"обкръжението\n"
+" -p Ñъщото като -m\n"
+" -s, --shell=ОБВИВКРÑтартира ОБВИВКÐ, ако /etc/shells позволÑва "
+"това\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+"\n"
+"Само - влече -l. Ðко не е поÑочен ПОТР, приема Ñе root.\n"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "не ÑъщеÑтвува потребител %s"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "неправилна парола"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "използва Ñе ограничената обвивка %s"
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "внимание: каталогът не може да Ñе Ñмени на %s"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Извежда контролна Ñума и количеÑтвото блокове на вÑеки ФÐЙЛ.\n"
+"\n"
+" -r Ð¾Ñ‚Ð¼ÐµÐ½Ñ -s, използва ÑÑƒÐ¼Ð¸Ñ€Ð°Ñ‰Ð¸Ñ Ð°Ð»Ð³Ð¾Ñ€Ð¸Ñ‚ÑŠÐ¼ на BSD, блокове от "
+"1K\n"
+" -s, --sysv ползва ÑÑƒÐ¼Ð¸Ñ€Ð°Ñ‰Ð¸Ñ Ð°Ð»Ð³Ð¾Ñ€Ð¸Ñ‚ÑŠÐ¼ на System V, блокове от 512 "
+"байта\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr "ЗапиÑва на диÑка изменените блокове, актуализира Ñуперблока.\n"
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "вÑички аргументи Ñе пренебрегват"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+"\n"
+"ЗÐБЕЛЕЖКÐ: Обвивката ви може да има ÑÐ²Ð¾Ñ ÑобÑтвена верÑÐ¸Ñ Ð½Ð° %s.\n"
+"Ð¢Ñ Ð¾Ð±Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½Ð¾ Ñе предпочита пред верÑиÑта, опиÑана тук. ÐœÐ¾Ð»Ñ Ð¾Ð±ÑŠÑ€Ð½ÐµÑ‚Ðµ Ñе\n"
+"към документациÑта на използваната от Ð²Ð°Ñ Ð¾Ð±Ð²Ð¸Ð²ÐºÐ° за поддържаните от Ð½ÐµÑ "
+"опции.\n"
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help извежда тази Ñправка и завършва\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° верÑиÑта и завършва\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Извежда на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´ вÑеки ФÐЙЛ, поÑледениÑÑ‚ ред е пръв.\n"
+"Без ФÐЙЛ или ако ФÐЙЛ е -, Ñе чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+"\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before Ð¿Ñ€Ð¸ÐºÑ€ÐµÐ¿Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¸Ñ‚ÐµÐ»Ñ Ð¿Ñ€ÐµÐ´Ð¸, а не Ñлед\n"
+" -r, --regex интерпретира Ñ€Ð°Ð·Ð´ÐµÐ»Ð¸Ñ‚ÐµÐ»Ñ ÐºÐ°Ñ‚Ð¾ регулÑрен израз\n"
+" -s, --separator=ÐИЗ вмеÑто кода за нов ред, използва като разделител "
+"ÐИЗ\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, c-format
+msgid "%s: seek failed"
+msgstr "%s: неуÑпешно позициониране (seek) във файл"
+
+#: src/tac.c:265
+#, c-format
+msgid "record too large"
+msgstr "твърде дълъг запиÑ"
+
+#: src/tac.c:459
+#, c-format
+msgid "cannot create temporary file %s"
+msgstr "не може да Ñе направи временен файл %s"
+
+#: src/tac.c:466
+#, c-format
+msgid "cannot open %s for writing"
+msgstr "не може да Ñе отвори %s за запиÑ"
+
+#: src/tac.c:487 src/tac.c:494
+#, c-format
+msgid "%s: write error"
+msgstr "%s: грешка при запиÑ"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "разделителÑÑ‚ не може да бъде празен"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Извежда на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´ поÑледните %d реда от вÑеки ФÐЙЛ.\n"
+"Ðко има повече от един ФÐЙЛ, преди вÑеки поÑÑ‚Ð°Ð²Ñ Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ðµ Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¾Ñ‚Ð¾ име.\n"
+"Без ФÐЙЛ или ако ФÐЙЛ е -, Ñе чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+"\n"
+
+#: src/tail.c:229
+#, fuzzy
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry продължава опитите да отвори файла, дори ако той\n"
+" бъде недоÑтъпен при Ñтартирането на tail или "
+"Ñтане\n"
+" недоÑтъпен по-къÑно; полезно е Ñамо ÑъвмеÑтно Ñ\n"
+" --follow=name\n"
+" -c, --bytes=N извежда поÑледните N байта\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={name|descriptor}]\n"
+" извежда добавÑните данни при нараÑтване на "
+"файла;\n"
+" -f, --follow и --follow=descriptor Ñа "
+"еквивалентни\n"
+" -F Ñъщото като --follow=name --retry\n"
+
+#: src/tail.c:244
+#, fuzzy, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=N извежда поÑледните N реда вмеÑто поÑледните %d\n"
+" --max-unchanged-stats=N\n"
+" Ñ --follow=name Ð¾Ñ‚Ð²Ð°Ñ€Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ вÑеки ФÐЙЛ, който "
+"не\n"
+" Ñи е Ñменил размера Ñлед N (Ñтандартно %d) "
+"итерации,\n"
+" за да Ñе провери, дали не е бил изтрит или\n"
+" преименуван (което е обичайно при завъртане на\n"
+" журналните файлове)\n"
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID Ñ -f завършва Ñлед като процеÑÑŠÑ‚ Ñ Ð½Ð¾Ð¼ÐµÑ€ PID "
+"умре\n"
+" -q, --quiet, --silent не извежда Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ñ Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ‚Ðµ имена\n"
+" -s, --sleep-interval=S Ñ -f интервалът между итерациите е около S "
+"Ñекунди\n"
+" (Ñтандартно 1.0)\n"
+" -v, --verbose винаги извежда Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ñ Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ‚Ðµ имена\n"
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"Ðко първиÑÑ‚ знак в N (броÑÑ‚ байтове или редове) е „+“, извеждането започва\n"
+"от N-Ñ‚Ð¸Ñ Ñ€ÐµÐ´ или знак от началото на вÑеки от файловете. Ð’ противен Ñлучай\n"
+"извежда поÑледните N реда или знака от вÑеки файл. N може да има\n"
+"ÑуфикÑ-множител: b за 512, k за 1024, m за 1024*1024.\n"
+"\n"
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"С --follow (-f) tail използва един и Ñъщ файлов деÑкриптор, Ñ‚.е. tail ще\n"
+"продължи да Ñледи ÐºÑ€Ð°Ñ Ð½Ð° файлÑ, дори ако файлът бъде преименуван. "
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"Това Ñтандартно поведение не е желателно, ако иÑкате да Ñледите файла Ñ\n"
+"поÑоченото име, а не Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор (което е важно напр. при завъртане "
+"на\n"
+"журналните файлове). Ð’ този Ñлучай използвайте --follow=name и tail ще "
+"отварÑ\n"
+"многократно файла, за да провери дали той не е бил отÑтранен или Ñъздаден\n"
+"нов файл ÑÑŠÑ Ñъщото име от друга програма.\n"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "ЗатварÑне на %s (файлов деÑкриптор=%d)"
+
+#: src/tail.c:411
+#, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: не може да Ñе отиде на отноÑително отмеÑтване %s във файла"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s: не може да Ñе отиде на отмеÑтване %s отноÑно ÐºÑ€Ð°Ñ Ð½Ð° файла"
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr "%s е Ñтанал недоÑтъпен"
+
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+"%s е бил заменен Ñ Ñ„Ð°Ð¹Ð», който е недоÑтъпен за tail; tail повече нÑма да го "
+"Ñледи"
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr "%s е Ñтанал доÑтъпен"
+
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "%s Ñе е поÑвил; Ñледва Ñе краÑÑ‚ на Ð½Ð¾Ð²Ð¸Ñ Ñ„Ð°Ð¹Ð»"
+
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "%s е бил заменен; Ñледва Ñе краÑÑ‚ на Ð½Ð¾Ð²Ð¸Ñ Ñ„Ð°Ð¹Ð»"
+
+#: src/tail.c:1025
+#, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: не може да Ñе Ñмени режимът non-blocking"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: файлът е Ñъкратен"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "нÑма повече файлове"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+"%s: не може да Ñе Ñледва ÐºÑ€Ð°Ñ Ð½Ð° този тип файлове; tail нÑма да Ñледи този "
+"файл"
+
+#: src/tail.c:1439
+#, c-format
+msgid "number in %s is too large"
+msgstr "номерът в %s е твърде голÑм"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr "%s: неправилен макÑимален брой доÑтъпи без промÑна между отварÑниÑта"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: неправилен номер на процеÑ"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: неправилен брой Ñекунди"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr "опциÑ, използване в грешен контекÑÑ‚ -- %c"
+
+#: src/tail.c:1566
+#, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "внимание: опциÑта --retry обикновено е полезна Ñамо Ñ --follow=name"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+"внимание: пренебрегва Ñе номера на процеÑ; --pid=PID е полезно Ñамо при "
+"Ñледване"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "внимание: --pid=PID не Ñе поддържа на тази ÑиÑтема"
+
+#: src/tail.c:1667
+#, c-format
+msgid "cannot follow %s by name"
+msgstr "не може да Ñе Ñледва %s Ñпоред името"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr "внимание: безкрайното Ñледване на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ е безполезно"
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Копира ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´ във вÑеки от ФÐЙЛовете, а Ñъщо и на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ "
+"изход.\n"
+"\n"
+" -a, --append Ð´Ð¾Ð±Ð°Ð²Ñ ÐºÑŠÐ¼ поÑочените ФÐЙЛове, а не ги замеÑтва\n"
+" -i, --ignore-interrupts пренебрегва Ñигналите за прекъÑване\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Ðко ФÐЙЛ е -, копира отново към ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n"
+
+#: src/test.c:125
+#, c-format
+msgid "missing argument after %s"
+msgstr "липÑва аргумент Ñлед %s"
+
+#: src/test.c:161
+#, c-format
+msgid "invalid integer %s"
+msgstr "неправилно цÑло чиÑло %s"
+
+#: src/test.c:242
+msgid "')' expected"
+msgstr "очаква Ñе „)“"
+
+#: src/test.c:245
+#, c-format
+msgid "')' expected, found %s"
+msgstr "очаква Ñе „)“, а е намерен %s"
+
+#: src/test.c:261 src/test.c:606
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: очаква Ñе унарна операциÑ"
+
+#: src/test.c:330
+msgid "-nt does not accept -l"
+msgstr "-nt не допуÑка -l"
+
+#: src/test.c:343
+msgid "-ef does not accept -l"
+msgstr "-ef не приема -l"
+
+#: src/test.c:359
+msgid "-ot does not accept -l"
+msgstr "-ot не приема -l"
+
+#: src/test.c:368
+msgid "unknown binary operator"
+msgstr "непозната двумеÑтна операциÑ"
+
+#: src/test.c:634
+#, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: очаква Ñе двумеÑтна операциÑ"
+
+#: src/test.c:694
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Използване: test ИЗРÐЗ\n"
+" или: test\n"
+" или: [ ИЗРÐЗ ]\n"
+" или: [ ]\n"
+" или: [ ОПЦИЯ\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"Завършва Ñ ÐºÐ¾Ð´-ÑÑŠÑтоÑние, определен от ИЗРÐЗ.\n"
+"\n"
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"\n"
+"Ðко ИЗРÐЗ е изпуÑнат, Ñе приема лъжа. Иначе ИЗРÐЗ е иÑтина и лъжа и "
+"определÑ\n"
+"кода на завършване. Той може да бъде:\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+"\n"
+" ( ИЗРÐЗ ) ИЗРÐЗ е иÑтина\n"
+" ! ИЗРÐЗ ИЗРÐЗ е лъжа\n"
+" ИЗРÐЗ1 -a ИЗРÐЗ2 както ИЗРÐЗ1, така и ИЗРÐЗ2 Ñа иÑтина\n"
+" ИЗРÐЗ1 -o ИЗРÐЗ2 поне един от ИЗРÐЗ1 и ИЗРÐЗ2 е иÑтина\n"
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"\n"
+" [-n] ÐИЗ ÐИЗ е Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ð° дължина\n"
+" ÐИЗ Ñъщото като -n ÐИЗ\n"
+" -z ÐИЗ ÐИЗ е Ñ Ð´ÑŠÐ»Ð¶Ð¸Ð½Ð° нула\n"
+" ÐИЗ1 = ÐИЗ2 низовете Ñа еднакви\n"
+" ÐИЗ1 != ÐИЗ2 низовете не Ñа еднакви\n"
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" ЦЯЛО1 -eq ЦЯЛО2 ЦЯЛО1 е равно на ЦЯЛО2\n"
+" ЦЯЛО1 -ge ЦЯЛО2 ЦЯЛО1 е по-голÑмо или равно на ЦЯЛО2\n"
+" ЦЯЛО1 -gt ЦЯЛО2 ЦЯЛО1 е по-голÑмо от ЦЯЛО2\n"
+" ЦЯЛО1 -le ЦЯЛО2 ЦЯЛО1 е по-малко или равно на ЦЯЛО2\n"
+" ЦЯЛО1 -lt ЦЯЛО2 ЦЯЛО1 е по-малко от ЦЯЛО2\n"
+" ЦЯЛО1 -ne ЦЯЛО2 ЦЯЛО1 е различно от ЦЯЛО2\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+"\n"
+" ФÐЙЛ1 -ef ФÐЙЛ2 ФÐЙЛ1 и ФÐЙЛ2 имат еднакви номера на уÑтройÑтво и i-"
+"възел\n"
+" ФÐЙЛ1 -nt ФÐЙЛ2 ФÐЙЛ1 е по-нов (ÑпрÑмо датата на изменение) от ФÐЙЛ2\n"
+" ФÐЙЛ1 -ot ФÐЙЛ2 ФÐЙЛ1 е по-Ñтар от ФÐЙЛ2\n"
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+"\n"
+" -b ФÐЙЛ ФÐЙЛ ÑъщеÑтвува и е Ñпециален блоков\n"
+" -c ФÐЙЛ ФÐЙЛ ÑъщеÑтвува и е Ñимволен Ñпециален\n"
+" -d ФÐЙЛ ФÐЙЛ ÑъщеÑтвува и е каталог\n"
+" -e ФÐЙЛ ФÐЙЛ ÑъщеÑтвува\n"
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+" -f ФÐЙЛ ФÐЙЛ ÑъщеÑтвува и е обикновен файл\n"
+" -g ФÐЙЛ ФÐЙЛ ÑъщеÑтвува и е ÑÑŠÑ set-group-ID\n"
+" -h ФÐЙЛ ФÐЙЛ ÑъщеÑтвува и е Ñимволна връзка (Ñъщото като -L)\n"
+" -G ФÐЙЛ ФÐЙЛ ÑъщеÑтвува и Ñе притежава от дейÑтващата (effective) "
+"група\n"
+" -k ФÐЙЛ ФÐЙЛ ÑъщеÑтвува и е ÑÑŠÑ sticky bit\n"
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+" -L ФÐЙЛ ФÐЙЛ ÑъщеÑтвува и е Ñимволна връзка (Ñъщото като -h)\n"
+" -O ФÐЙЛ ФÐЙЛ ÑъщеÑтвува и Ñе притежава от дейÑтващиÑÑ‚ потребител\n"
+" -p ФÐЙЛ ФÐЙЛ ÑъщеÑтвува и е именуван канал\n"
+" -r ФÐЙЛ ФÐЙЛ ÑъщеÑтвува и е доÑтъпен за четене\n"
+" -s ФÐЙЛ ФÐЙЛ ÑъщеÑтвува и има ненулев размер\n"
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+" -S ФÐЙЛ ФÐЙЛ ÑъщеÑтвува и е гнездо\n"
+" -t [FD] файловиÑÑ‚ деÑкриптор FD е отворен на терминал\n"
+" -u ФÐЙЛ ФÐЙЛ ÑъщеÑтвува и е ÑÑŠÑ set-user-ID\n"
+" -w ФÐЙЛ ФÐЙЛ ÑъщеÑтвува и е доÑтъпен за запиÑ\n"
+" -x ФÐЙЛ ФÐЙЛ ÑъщеÑтвува и е изпълним файл (при каталог: може да Ñе "
+"Ñ‚ÑŠÑ€Ñи)\n"
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"ОÑвен -h и -L, вÑички файлови проверки Ñе отнаÑÑÑ‚ към Ñочените от Ñимволни\n"
+"връзки файлове. Имайте предвид, че при повечето обвивки Ñкобите Ñ‚Ñ€Ñбва да\n"
+"бъдат защитени (напр. Ñ \\).\n"
+"\n"
+"ЦЯЛО може да бъде Ñъщо и -l ÐИЗ и дава дължината на ÐИЗ.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr "test и/или ["
+
+#: src/test.c:831
+msgid "missing `]'"
+msgstr "липÑва „]“"
+
+#: src/test.c:846
+#, c-format
+msgid "extra argument %s"
+msgstr "излишен аргумент %s"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "неправилен формат за дата %s"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "Ñъздава Ñе %s"
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr "не може да Ñе въздейÑтва на %s"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "задава Ñе време на %s"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+"Прави времето на доÑтъп и поÑледна промÑна на вÑеки ФÐЙЛовете текущото "
+"време.\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñамо времето за доÑтъп\n"
+" -c, --no-create не Ñъздава файловете, ако не ÑъщеÑтвуват\n"
+" -d, --date=ÐИЗ прави разбор на ÐИЗ и го използва вмеÑто текущото "
+"време\n"
+" -f (пренебрегва Ñе)\n"
+" -m Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñамо времето на поÑледна промÑна\n"
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --reference=ФÐЙЛ използва времената на този ФÐЙЛ вмеÑто текущото "
+"време\n"
+" -t ЩÐМПРползва [[ГГ]ГГ]ММДДччММ[.ÑÑ] вмеÑто текущото време\n"
+" --time=Ð”Ð£ÐœÐ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ñ‚Ð¾ Ñ Ð”Ð£ÐœÐ Ð²Ñ€ÐµÐ¼Ðµ:\n"
+" access, atime и use: Ñъщото като -а\n"
+" modify и mtime: Ñъщото като -m\n"
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"Забележете, че опциите -d и -t приемат различни формати за време и дата.\n"
+"\n"
+"Ðко ФÐЙЛ е -, дейÑтва Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор за ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n"
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "не може да Ñе поÑочват времена Ñ Ð¿Ð¾Ð²ÐµÑ‡Ðµ от един източник"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+"внимание: „touch %s“ e архаично; ползвайте „touch -t %04ld%02d%02d%02d%02d.%"
+"02d'"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Използване: %s [ОПЦИЯ]... ÐœÐОЖ1 [ÐœÐОЖ2]\n"
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Превежда или отÑтранÑва знаци и/или Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð¸Ñ Ð¾Ñ‚ ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´,\n"
+"пише на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n"
+"\n"
+" -c, -C, --complement първо Ð·Ð°Ð¼ÐµÐ½Ñ ÐœÐОЖ1 Ñ Ð½ÐµÐ³Ð¾Ð²Ð¾Ñ‚Ð¾ допълнение\n"
+" -d, --delete отÑтранÑва знаците от ÐœÐОЖ1, не превежда\n"
+" -s, --squeeze-repeats Ð·Ð°Ð¼ÐµÐ½Ñ Ð²ÑÑка входÑща редица от един и Ñъщ повтарÑщ "
+"Ñе\n"
+" знак, опиÑан в ÐœÐОЖ1, Ñ ÐµÐ´Ð¸Ð½ такъв знак\n"
+" -t, --truncate-set1 първо Ñъкращава ÐœÐОЖ1 до дължината на ÐœÐОЖ2\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"ÐœÐОЖ Ñе задават като низове от знаци. Повечето предÑтавÑÑ‚ Ñебе Ñи.\n"
+"Интерпретирани поÑледователноÑти Ñа Ñледните:\n"
+"\n"
+" \\NNN знакът Ñ Ð¾Ñмичен код NNN (1 до 3 оÑмични цифри)\n"
+" \\\\ обратна наклонена черта\n"
+" \\a BEL (звуков Ñигнал)\n"
+" \\b backspace\n"
+" \\f form feed (край на Ñтраницата)\n"
+" \\n нов ред (new line)\n"
+" \\r връщане на курÑора (return)\n"
+" \\t хоризонтална табулациÑ\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v вертикална табулациÑ\n"
+" ЗÐÐК1-ЗÐÐК2 вÑички знаци от ЗÐÐК1 до ЗÐÐК2\n"
+" [ЗÐÐК*] (Ñамо при ÐœÐОЖ2) ÐºÐ¾Ð¿Ð¸Ñ Ð½Ð° ЗÐÐК до доÑтигане дължината на "
+"ÐœÐОЖ1\n"
+" [ЗÐÐК*ПОВТ] ПОВТ Ð±Ñ€Ð¾Ñ Ð½Ð° ЗÐÐК; ПОВТ е оÑмично чиÑло, ако започва Ñ 0\n"
+" [:alnum:] вÑички букви и цифри\n"
+" [:alpha:] вÑички букви\n"
+" [:blank:] вÑички празни знаци (интервал, табулации)\n"
+" [:cntrl:] вÑички управлÑващи Ñимволи\n"
+" [:digit:] вÑички цифри\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] вÑички видими знаци Ñ Ð¸Ð·ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ на интервали, табулации и "
+"др.\n"
+" [:lower:] вÑички малки букви\n"
+" [:print:] вÑички видими знаци, включително интервали, табулации\n"
+" [:punct:] вÑички препинателни знаци\n"
+" [:space:] хоризонтално или вертикално бÑло поле\n"
+" [:upper:] вÑички главни букви\n"
+" [:xdigit:] вÑички шеÑтнадеÑетични цифри\n"
+" [=ЗÐÐК=] вÑички знаци, еквивалентни на ЗÐÐК\n"
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"Извършва Ñе превод, ако не е поÑочено -d и има както ÐœÐОЖ1, така и ÐœÐОЖ2.\n"
+"-t може да Ñе използва Ñамо при превод. Ðко Ñ‚Ñ€Ñбва, ÐœÐОЖ2 Ñе разширÑва до\n"
+"дължината на ÐœÐОЖ1 Ñ Ð¿Ð¾Ð²Ñ‚Ð°Ñ€Ñне на поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð·Ð½Ð°Ðº. "
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"Излишните знаци от ÐœÐОЖ2\n"
+"Ñе пренебрегват. Само за знаците от [:lower:] и [:upper:] е гарантирано, че "
+"ще\n"
+"Ñа подредени поÑледователно; използвани в ÐœÐОЖ2 при превод, те могат да "
+"бъдат\n"
+"използвани Ñамо в двойки, за да означат ÑмÑна на големи/малки букви. "
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"-s използва ÐœÐОЖ1,\n"
+"ако не Ñе превежда, нито изтрива; в противен Ñлучай Ñе отÑтранÑват "
+"повторните\n"
+"знаци от ÐœÐОЖ2, като това Ñтава Ñлед преводa или изтриването.\n"
+
+#: src/tr.c:519
+#, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"внимание: двуÑмиÑлената оÑмична поÑледователноÑÑ‚ \\%c%c%c е интерпретирана\n"
+"\tкато двубайтовата поÑледователноÑÑ‚ \\0%c%c, %c"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "граници на интервала „%s-%s“ Ñа в обратен ред"
+
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "неправилен брой Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð¸Ñ %s в конÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ [c*n]"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "липÑва име на ÐºÐ»Ð°Ñ Ð¾Ñ‚ Ñимволи „[::]“"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "липÑва знак за ÐºÐ»Ð°Ñ Ð½Ð° еквивалентноÑÑ‚ „[==]“"
+
+#: src/tr.c:937
+#, c-format
+msgid "invalid character class %s"
+msgstr "неправилен ÐºÐ»Ð°Ñ Ð¾Ñ‚ Ñимволи %s"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: клаÑÑŠÑ‚ на еквивалентноÑÑ‚ Ñ‚Ñ€Ñбва да Ñе означи Ñамо един знак"
+
+#: src/tr.c:1275
+#, c-format
+msgid "too many characters in set"
+msgstr "множеÑтво Ñ Ñ‚Ð²ÑŠÑ€Ð´Ðµ много знаци"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "конÑтрукциÑта [c*] не може да Ñе поÑвÑва в ÐœÐОЖ1"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "в ÐœÐОЖ2 може да Ñе Ñреща Ñамо конÑтрукциÑта за повторение [c*]"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "при превод не може да Ñе Ñрещат конÑтрукции [=c=] в ÐœÐОЖ2"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "когато не Ñе Ñъкращава ÐœÐОЖ1, ÐœÐОЖ2 Ñ‚Ñ€Ñбва да бъде непразно"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"при превод Ñ Ð´Ð¾Ð¿ÑŠÐ»Ð½Ð¸Ñ‚ÐµÐ»Ð½Ð¸ (обратни) клаÑове Ñимволи, ÐœÐОЖ2 Ñ‚Ñ€Ñбва\n"
+"да изобразÑва вÑички знаци от облаÑтта в един"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"при превод единÑтвените клаÑове Ñимволи, които може да Ñе Ñрещат в\n"
+"ÐœÐОЖ2 Ñа „upper“ и „lower“"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "конÑтрукциÑта [c*] може да Ñе Ñреща в ÐœÐОЖ2 Ñамо при превод"
+
+#: src/tr.c:1731
+msgid "Two strings must be given when translating."
+msgstr "При превод Ñ‚Ñ€Ñбва да Ñе поÑочат два низа (множеÑтва)"
+
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"Само един низ може да бъде даден, когато Ñе изтрива без отÑтранÑване на "
+"повторениÑта"
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "лошо подравнена [:upper:] и/или [:lower:] конÑтрукциÑ"
+
+#: src/true.c:42
+#, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Използване: %s [аргументи, които Ñе пренебрегват]\n"
+" или: %s ОПЦИЯ\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr "Завършва Ñ ÐºÐ¾Ð´-ÑÑŠÑтоÑние, поÑочващ уÑпех."
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Използване: %s [ОПЦИЯ] [ФÐЙЛ]\n"
+"\n"
+"Извежда линейно нареден ÑпиÑък, ÑъвмеÑтим Ñ Ñ‡Ð°Ñтичната наредба във ФÐЙЛ.\n"
+"Без ФÐЙЛ или ако ФÐЙЛ е -, чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+"\n"
+
+#: src/tsort.c:474
+#, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: входните данни Ñъдържат нечетен брой лекÑеми"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: входниÑÑ‚ файл Ñъдържа цикъл:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Използване: %s [ОПЦИЯ]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Извежда файловото име на терминала, Ñвързан ÑÑŠÑ ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+"\n"
+" -s, --silent, --quiet не извежда нищо, връща Ñамо код на завършване\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "не е tty"
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Извежда определена ÑиÑтемна информациÑ. Без никаква ОПЦИЯ е Ñъщото като Ñ -"
+"s.\n"
+"\n"
+" -a, --all извежда вÑÑкаква Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð² ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ñ€ÐµÐ´\n"
+" (но пропуÑка -p и -i, ако не Ñа извеÑтни):\n"
+" -s, --kernel-name извежда името на Ñдрото\n"
+" -n, --nodename извежда името на компютъра в мрежата\n"
+" -r, --kernel-release извежда изданието на Ñдрото\n"
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v, --kernel-version извежда верÑиÑта на Ñдрото\n"
+" -m, --machine извежда хардуерното име на машината\n"
+" -p, --processor извежда типа на микропроцеÑора или „unknown“\n"
+" -i, --hardware-platform извежда хардуерната платформа или „unknown“\n"
+" -o, --operating-system извежда операционната ÑиÑтема\n"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "не може да Ñе получи ÑиÑтемното име"
+
+#: src/unexpand.c:125
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Преобразува интервалите във вÑеки от ФÐЙЛовете в табулации, извежда на\n"
+"ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´. Без ФÐЙЛ или ако ФÐЙЛ е - чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´.\n"
+"\n"
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all преобразува вÑÑко бÑло поле, а не Ñамо в началото на "
+"редовете\n"
+" --first-only преобразува Ñамо бÑло поле в началото на редовете (Ð¾Ñ‚Ð¼ÐµÐ½Ñ "
+"-a)\n"
+" -t, --tabs=N използва табулации през N знака вмеÑто през 8 (позволÑва -"
+"a)\n"
+" -t, --tabs=СПИС СПИСък от разделени Ñ â€ž,“ позиции за табулации (позволÑва "
+"-a)\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr "табулациите Ñа твърде отдалечени"
+
+#: src/unexpand.c:512
+#, c-format
+msgid "tab stop value is too large"
+msgstr "табулациÑта е твърде дълга"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Използване: %s [ОПЦИЯ]... [ВХОД [ИЗХОД]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"ОтÑтранÑва вÑички оÑвен един от ÑÑŠÑедни повтарÑщи Ñе редове от ВХОД\n"
+"(или ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´); извежда в ИЗХОД (или ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´).\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count редовете да Ñе предхождат от брой ÑрещаниÑ\n"
+" -d, --repeated извежда Ñамо повтарÑщите Ñе редове\n"
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated[=delimit-method] извежда вÑички повтарÑщи Ñе редове\n"
+" delimit-method={none(по подразбиране),prepend,"
+"separate}\n"
+" РазделÑнето Ñе прави Ñ Ð¿Ñ€Ð°Ð·Ð½Ð¸ редове.\n"
+" -f, --skip-fields=N не ÑравнÑва първите N полета\n"
+" -i, --ignore-case не различава големите от малките букви\n"
+" -s, --skip-chars=N не ÑравнÑва първите N знака\n"
+" -u, --unique извежда Ñамо редовете, които не Ñе повтарÑÑ‚\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr " -w, --check-chars=N ÑравнÑва по не повече от N знака в редовете\n"
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"Полето Ñе ÑÑŠÑтои от бÑло поле, Ñледвано от видими знаци.\n"
+"Fields are skipped before chars.\n"
+
+#: src/uniq.c:350
+#, c-format
+msgid "too many repeated lines"
+msgstr "твърде много повторени редове"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "неправилен брой полета за пропуÑкане"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "неправилен брой байтове за пропуÑкане"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "неправилен брой знаци за ÑравнÑване"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+"безÑмиÑлено е да Ñе извеждат вÑички повтарÑщи Ñе редове и Ð±Ñ€Ð¾Ñ ÑрещаниÑ"
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Използване: %s ФÐЙЛ\n"
+" или: %s ФÐЙЛ\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"ОтÑтранÑва поÑÐ¾Ñ‡ÐµÐ½Ð¸Ñ Ð¤ÐЙЛ поÑредÑтвом ÑиÑтемната Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ â€žunlink“.\n"
+"\n"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "неуÑпешно изпълнение на unlink за %s"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "не може да Ñе получи времето на начално зареждане"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s включен "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "пр.обед"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "Ñл.обед"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr " ??:???? включен "
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr "???? дена ??:??, "
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%ld ден"
+msgstr[1] "%ld дена"
+
+#: src/uptime.c:147
+#, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%lu потребител"
+msgstr[1] "%lu потребителÑ"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", Ñредно натоварване: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Използване: %s [ОПЦИЯ]... [ ФÐЙЛ ]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Извежда текущото време, продължителноÑтта на времето, през което ÑиÑтемата е "
+"била\n"
+"Ñтартирана, броÑÑ‚ потребители, използващи в момента ÑиÑтемата, и ÑредниÑÑ‚ "
+"брой задачи\n"
+"в опашката на Ð¼Ð½Ð¾Ð³Ð¾Ð·Ð°Ð´Ð°Ñ‡Ð½Ð¸Ñ Ð´Ð¸Ñпечер през поÑледните 1, 5 и 15 минути.\n"
+"Ðко не е поÑочен ФÐЙЛ, използва %s. Обичайно е използването на %s като име "
+"на файл.\n"
+"\n"
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Извежда кой в момента е влÑзъл в ÑиÑтемата Ñпоред ФÐЙЛ.\n"
+"Ðко не е поÑочен ФÐЙЛ, използва %s. ЧеÑто ФÐЙЛ е %s.\n"
+"\n"
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Извежда Ð±Ñ€Ð¾Ñ Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ðµ, думи и редове във вÑеки ФÐЙЛ, както и Ð¾Ð±Ñ‰Ð¸Ñ Ð±Ñ€Ð¾Ð¹, ако "
+"е\n"
+"поÑочен повече от един ФÐЙЛ. Без ФÐЙЛ или ако ФÐЙЛ е - чете от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ "
+"вход.\n"
+" -c, --bytes извежда Ð±Ñ€Ð¾Ñ Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ðµ\n"
+" -m, --chars извежда Ð±Ñ€Ð¾Ñ Ð±ÑƒÐºÐ²Ð¸\n"
+" -l, --lines извежда Ð±Ñ€Ð¾Ñ Ñ€ÐµÐ´Ð¾Ð²Ðµ\n"
+
+#: src/wc.c:121
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" --files0-from=Ф чете от файловете, чиито имена Ñа изредени във "
+"файла Ф,\n"
+" като вÑÑко име завършва Ñ Ð½ÑƒÐ»ÐµÐ² байт\n"
+" -L, --max-line-length извежда дължината на най-Ð´ÑŠÐ»Ð³Ð¸Ñ Ñ€ÐµÐ´\n"
+" -w, --words извежда Ð±Ñ€Ð¾Ñ Ð´ÑƒÐ¼Ð¸\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+"при четене на файлови имена от stdin, никое файлово име не може да бъде %s"
+
+#: src/who.c:212
+msgid " old "
+msgstr " Ñтар "
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "term="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "exit="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "ÑмÑна на чаÑа"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "Ñтартниво"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "last="
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"брой потребители - %lu\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "ИМЕ"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "ЛИÐИЯ"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "ВРЕМЕ"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr "БЕЗДЕЕÐ"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "КОМЕÐТÐР"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "ИЗХОД"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Използване: %s [ОПЦИЯ]... [ ФÐЙЛ | ÐРГ1 ÐРГ2 ]\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" -a, --all Ñъщото като -b -d --login -p -r -t -T -u\n"
+" -b, --boot времето на поÑледното начално зареждане\n"
+" -d, --dead извежда Ð±Ñ€Ð¾Ñ ÑƒÐ¼Ñ€ÐµÐ»Ð¸ процеÑи\n"
+" -H, --heading извежда антетка\n"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr " -l, --login извежда процеÑите за влизане в ÑиÑтемата\n"
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+" --lookup опитва да канонизира мрежовите имена на компютрите чрез "
+"DNS\n"
+" -m Ñамо мрежовото име и потребителÑ, Ñвързан на Ñтанд. "
+"вход\n"
+" -p, --process извежда активните процеÑи, породени от init\n"
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+" -q, --count извежда вÑички входни имена и Ð±Ñ€Ð¾Ñ Ð½Ð° влезлите "
+"потребители\n"
+" -r, --runlevel извежда текущото ниво на Ñтартиране\n"
+" -s, --short извежда Ñамо името, линиÑта и времето (по подразбиране)\n"
+" -t, --time извежда поÑледната промÑна на ÑиÑÑ‚ÐµÐ¼Ð½Ð¸Ñ Ñ‡Ð°Ñовник\n"
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+" -T, -w, --mesg Ð´Ð¾Ð±Ð°Ð²Ñ ÑÑŠÑтоÑнието на mesg на потребителите (+, - "
+"или ?)\n"
+" -u, --users изрежда потребителите, влезли в ÑиÑтемата\n"
+" --message Ñъщото като -T\n"
+" --writable Ñъщото като -T\n"
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"Ðко не е поÑочен ФÐЙЛ, Ñе използва %s. ЧеÑто ФÐЙЛ е %s.\n"
+"Ðко Ñа поÑочени ÐРГ1 ÐРГ2, Ñе предполага -m, обичайни Ñа „am i“ и „Ñъм аз“.\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+"Внимание: в Ñледваща верÑÐ¸Ñ -i ще бъде отÑтранено; използвайте вмеÑто това -u"
+
+#: src/whoami.c:51
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Извежда името Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð´ÐµÐ¹Ñтвителен (effective) потребител.\n"
+"Същото като id -un.\n"
+"\n"
+
+#: src/whoami.c:95
+#, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: не може да Ñе намери името на потребител Ñ Ð½Ð¾Ð¼ÐµÑ€ %lu\n"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Използване: %s [ÐИЗ]...\n"
+" или: %s ОПЦИЯ\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"ÐепрекъÑнато извежда ред, ÑÑŠÑтоÑщ Ñе от поÑочените ÐИЗ(ове) или „y“.\n"
+"\n"
+
+#~ msgid "strip failed"
+#~ msgstr "strip не уÑпÑ"
+
+#~ msgid "-R -h requires -P"
+#~ msgstr "-R -h изиÑква -P"
+
+#~ msgid "value %s is so large that it is not representable"
+#~ msgstr "ÑтойноÑтта %s е толкова голÑма, че не може да Ñе изведе"
+
+#~ msgid "%s: count `%.*s' too large"
+#~ msgstr "%s: броÑÑ‚ „%.*s“ е твърде голÑм"
+
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "тази ÑиÑтема не поддържа работа ÑÑŠÑ Ñимволни връзки"
+
+#~ msgid "fifo files not supported"
+#~ msgstr "не Ñе поддържа работа Ñ Ð¸Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð¸ канали"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "не може да Ñе изтриват „.“ и „..“"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "не може да Ñе Ñмени ÑобÑтвеника и/или групата на %s"
+
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "не може да Ñе влезе в каталога %s"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "не може да Ñе получи входÑщата група по потребителÑки номер"
+
+#~ msgid ""
+#~ " --no-preserve-root do not treat `/' specially (the default)\n"
+#~ " --preserve-root fail to operate recursively on `/'\n"
+#~ msgstr ""
+#~ " --no-preserve-root да не Ñе обработва „/“ по-оÑобено (по "
+#~ "подразбиране)\n"
+#~ " --preserve-root да не Ñе дейÑтва рекурÑивно от „/“\n"
+
+#~ msgid ""
+#~ " -e enable interpretation of backslash escapes\n"
+#~ " -E disable interpretation of backslash escapes (default)\n"
+#~ msgstr ""
+#~ " -e позволÑва обработката знаци, защитени Ñ \\\n"
+#~ " -E забранÑва Ñпециалната обработка на \\ (по подразбиране)\n"
+
+#~ msgid ""
+#~ "warning: unportable BRE: %s: using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr ""
+#~ "внимание: непреноÑим BRE: „%s“: използването на „^“ като пръв знак на\n"
+#~ "Ð±Ð°Ð·Ð¾Ð²Ð¸Ñ Ñ€ÐµÐ³ÑƒÐ»Ñрен израз не е преноÑимо; „^“ бе пренебрегнат"
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "непозната Ð¾Ð¿Ñ†Ð¸Ñ â€ž-%c“"
+
+#~ msgid "cannot return to working directory"
+#~ msgstr "невъзможно връщане в Ñ€Ð°Ð±Ð¾Ñ‚Ð½Ð¸Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³"
+
+#~ msgid "cannot return to current directory"
+#~ msgstr "невъзможно връщане в Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³"
+
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "Ñъздава Ñе Ñимволна връзка %s към %s"
+
+#~ msgid "create hard link %s to %s"
+#~ msgstr "Ñъздава Ñе твърда връзка %s към %s"
+
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "не може да Ñе поÑочи режим за доÑтъп до каталог %s"
+
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "не може да Ñе зададе режим за доÑтъп до именуван канал %s"
+
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "не може да Ñе зададат правата за доÑтъп до %s"
+
+#~ msgid ""
+#~ "This program is free software; you can redistribute it and/or modify\n"
+#~ "it under the terms of the GNU General Public License as published by\n"
+#~ "the Free Software Foundation; either version 2, or (at your option)\n"
+#~ "any later version.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Тази програма е Ñвободен Ñофтуер; може да Ñ Ñ€Ð°Ð·Ð¿Ñ€Ð¾ÑтранÑвате и/или "
+#~ "изменÑте\n"
+#~ "ÑъглаÑно уÑловиÑта на ОÑновната общодоÑтъпна Ð»Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ Ð½Ð° ГÐУ, както Ñ‚Ñ Ðµ\n"
+#~ "публикувана от Free Software Foundation -- верÑÐ¸Ñ 2 или (по ваш избор)\n"
+#~ "ÐºÐ¾Ñ Ð´Ð° е Ñледваща верÑиÑ.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "This program is distributed in the hope that it will be useful,\n"
+#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+#~ "GNU General Public License for more details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Тази програма Ñе разпроÑтранÑва Ñ Ð½Ð°Ð´ÐµÐ¶Ð´Ð°Ñ‚Ð°, че ще бъде полезна,\n"
+#~ "но БЕЗ ÐИКÐКВИ ГÐРÐÐЦИИ -- включително без предполагаемите гаранции,\n"
+#~ "ЧЕ ЩЕ Е ПОЛЕЗÐРили ЩЕ СЛУЖИ ЗРÐЕЩО. Вж. ОÑновната общодоÑтъпна\n"
+#~ "Ð»Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ Ð½Ð° ГÐУ за повече подробноÑти.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
+#~ msgstr ""
+#~ "Вие би Ñ‚Ñ€Ñбвало да Ñте получили копие на ОÑновната общодоÑтъпна лицензиÑ\n"
+#~ "на ГÐУ заедно Ñ Ñ‚Ð°Ð·Ð¸ програма; в противен Ñлучай пишете на Free Software\n"
+#~ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+#~ "USA.\n"
+
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "не може да Ñе Ñмени каталогът от %s на .."
+
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "не може да Ñе открие „.“ в %s"
+
+#~ msgid "cannot lstat %s"
+#~ msgstr "не може да Ñе открие %s"
+
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "каталогът не може да Ñе Ñмени от %s на %s"
+
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only; this works only if your "
+#~ "system\n"
+#~ " supports `unlink' for nonempty directories)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ msgstr ""
+#~ "Изтрива (Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ unlink) ФÐЙЛовете.\n"
+#~ "\n"
+#~ " -d, --directory изпълнÑва unlink за вÑеки ФÐЙЛ, дори и ако е "
+#~ "непразен\n"
+#~ " каталог (Ñамо за root, работи Ñамо ако "
+#~ "ÑиÑтемата\n"
+#~ " поддържа „unlink“ за непразни каталози)\n"
+#~ " -f, --force пренебрегва неÑъщеÑтвуващи файлове, за нищо не "
+#~ "пита\n"
+#~ " -i, --interactive пита преди изтриване\n"
+
+#~ msgid "Exit with a status code indicating failure."
+#~ msgstr "Завършва Ñ ÐºÐ¾Ð´-ÑÑŠÑтоÑние, поÑочващ неуÑпех."
+
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "не може да бъде замеÑтен каталогът %s"
+
+#~ msgid ""
+#~ "Display file or file system status.\n"
+#~ "\n"
+#~ " -f, --file-system display file system status instead of file "
+#~ "status\n"
+#~ " -c --format=FORMAT use the specified FORMAT instead of the default\n"
+#~ " -L, --dereference follow links\n"
+#~ " -t, --terse print the information in terse form\n"
+#~ msgstr ""
+#~ "Извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° ÑÑŠÑтоÑнието на файл или файлова ÑиÑтема.\n"
+#~ "\n"
+#~ " -f, --file-system извежда ÑÑŠÑтоÑнието на файлова ÑиÑтема вмеÑто на "
+#~ "файл\n"
+#~ " -c --format=ФОРМÐТ ползва поÑÐ¾Ñ‡ÐµÐ½Ð¸Ñ Ð¤ÐžÐ ÐœÐТ вмеÑто ÑтандартниÑ\n"
+#~ " -L, --dereference Ñледва Ñимволните връзки\n"
+#~ " -t, --terse извежда информациÑта в Ñбит вид\n"
+
+#~ msgid "Warning: `-l' is deprecated; use `-L' instead"
+#~ msgstr "Внимание: „-l“ е оÑтарÑла опциÑ; вмеÑто Ð½ÐµÑ Ð¿Ð¾Ð»Ð·Ð²Ð°Ð¹Ñ‚Ðµ „-L“"
+
+#~ msgid "the --allow-missing option is deprecated; use --retry instead"
+#~ msgstr "опциÑта --allow-missing е оÑтарÑла; ползвайте --retry вмеÑто неÑ"
+
+#~ msgid ""
+#~ " -i, --idle add idle time as HOURS:MINUTES, . or old\n"
+#~ " (deprecated, use -u)\n"
+#~ " -l, --login print system login processes\n"
+#~ msgstr ""
+#~ " -i, --idle Ð´Ð¾Ð±Ð°Ð²Ñ Ð²Ñ€ÐµÐ¼ÐµÑ‚Ð¾ за бездейÑтвие като ЧÐСОВЕ:МИÐУТИ, . "
+#~ "или Ñтар\n"
+#~ " (оÑтарÑла опциÑ, използвайте -u)\n"
+#~ " --login извежда процеÑите за влизане в ÑиÑтемата\n"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Това е Ñвободен Ñофтуер; вижте Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ за уÑловиÑта за копиране.\n"
+#~ "Ðе Ñе дават ÐИКÐКВИ гаранции, включително предполаганата гаранциÑ,\n"
+#~ "че е ПОЛЕЗЕРили ПРИГОДЕРЗРÐЯКÐКВРЦЕЛ.\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "твърде малко аргументи"
+
+#~ msgid "closing standard output"
+#~ msgstr "затварÑне на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´"
+
+#~ msgid "cannot change to null group"
+#~ msgstr "не може да Ñе Ñмени на неÑъщеÑтвуваща група"
+
+#~ msgid "group number"
+#~ msgstr "номер на група"
+
+#~ msgid "invalid group number %s"
+#~ msgstr "неправилен номер на група %s"
+
+#~ msgid ""
+#~ "\n"
+#~ "Each MODE is one or more of the letters ugoa, one of the symbols +-= and\n"
+#~ "one or more of the letters rwxXstugo.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ð’Ñеки РЕЖИМ е една или повече от буквите ugoa, един от знаците +-= и\n"
+#~ "една или повече от буквите rwxXstugo.\n"
+
+#~ msgid "invalid mode string: %s"
+#~ msgstr "недопуÑтим низ за режим: %s"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "Използване: %s [ОПЦИЯ]... СОБСТВЕÐИК[:[ГРУПÐ]] ФÐЙЛ...\n"
+#~ " или: %s [ОПЦИЯ]... :ГРУПРФÐЙЛ...\n"
+#~ " или: %s [ОПЦИЯ]... --reference=ЕТФÐЙЛ ФÐЙЛ...\n"
+
+#~ msgid "%s: specified destination directory does not exist"
+#~ msgstr "%s: поÑочениÑÑ‚ целеви каталог не ÑъщеÑтвува"
+
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "%s: поÑочената цел не е каталог"
+
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr "копират Ñе много файлове, но поÑледниÑÑ‚ аргумент %s не е каталог"
+
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "внимание: --version-control (-V) оÑтарÑла опциÑ; поддръжката за Ð½ÐµÑ Ñ‰Ðµ "
+#~ "бъде\n"
+#~ "ÑпрÑна в нÑÐºÐ¾Ñ Ð±ÑŠÐ´ÐµÑ‰Ð° верÑиÑ. ВмеÑто това ползвайте --backup=%s."
+
+#~ msgid ""
+#~ "Display the current time in the given FORMAT, or set the system date.\n"
+#~ "\n"
+#~ " -d, --date=STRING display time described by STRING, not `now'\n"
+#~ " -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+#~ " -ITIMESPEC, --iso-8601[=TIMESPEC] output date/time in ISO 8601 "
+#~ "format.\n"
+#~ " TIMESPEC=`date' for date only,\n"
+#~ " `hours', `minutes', or `seconds' for date "
+#~ "and\n"
+#~ " time to the indicated precision.\n"
+#~ " --iso-8601 without TIMESPEC defaults to "
+#~ "`date'.\n"
+#~ msgstr ""
+#~ "Извежда текущото време Ñпоред поÑÐ¾Ñ‡ÐµÐ½Ð¸Ñ Ð¤ÐžÐ ÐœÐТ или наÑтройва ÑиÑтемната "
+#~ "дата.\n"
+#~ "\n"
+#~ " -d, --date=ÐИЗ извежда времето, поÑочено Ñ ÐИЗ; не може да е "
+#~ "„now“\n"
+#~ " -f, --file=ФÐЙЛДÐТИ като --date веднъж за вÑеки ред от ФÐЙЛДÐТИ\n"
+#~ " -IВИДВРЕМЕ, --iso-8601[=ВИДВРЕМЕ] извежда датата/чаÑа във формат ISO "
+#~ "8601.\n"
+#~ " ВИДВРЕМЕ=“date“ за извеждане Ñамо на датата,\n"
+#~ " `hours', `minutes' или `seconds' за извеждане "
+#~ "на\n"
+#~ " датата и чаÑа Ñ Ð¿Ð¾Ñочената точноÑÑ‚.\n"
+#~ " --iso-8601 без ВИДВРЕМЕ е еквивалентно на "
+#~ "„date“.\n"
+
+#~ msgid ""
+#~ " %z RFC-2822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %Z time zone (e.g., EDT), or nothing if no time zone is determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr ""
+#~ " %z чаÑовата зона в Ñтил RFC-2822 (+0200) (неÑтандартно разширение)\n"
+#~ " %Z чаÑовата зона (напр. EET) или нищо, ако Ñ‚Ñ Ð½Ðµ може да Ñе определи\n"
+#~ "\n"
+#~ "По подразбиране date допълва чиÑловите полета Ñ Ð½ÑƒÐ»Ð¸. ГÐУ реализациÑта на "
+#~ "date\n"
+#~ "разпознава и Ñледните модификатори между знака „%“ и чиÑловата "
+#~ "директива:\n"
+#~ "\n"
+#~ " `-' (тире) да не Ñе попълва полето\n"
+#~ " `_' (знак за подчертаване) полето да Ñе попълва Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð»Ð¸\n"
+
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "твърде много аргументи, които не Ñа опции: %s%s"
+
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-2822 (-R) option"
+#~ msgstr ""
+#~ "при използване на опциÑта --rfc-2822 (-R) не може да Ñе поÑочва форматен "
+#~ "низ"
+
+#~ msgid "undefined"
+#~ msgstr "неопределено"
+
+#~ msgid "cannot get time of day"
+#~ msgstr "не може да Ñе получи времето от денÑ"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "%s+%s прочетени блока\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "%s+%s запиÑани блока\n"
+
+#~ msgid "truncated records"
+#~ msgstr "Ñъкратени запиÑи"
+
+#~ msgid ""
+#~ "\tonly one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}"
+#~ msgstr ""
+#~ "\tÑамо по един conv от {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}"
+
+#~ msgid "file offset out of range"
+#~ msgstr "файлово отмеÑтване извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr ""
+#~ "при Ð¾Ð¿Ñ†Ð¸Ñ Ð·Ð° извеждане вътрешната база данни на dircolors\n"
+#~ "не може да Ñе използва аргумент ФÐЙЛ"
+
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ msgstr ""
+#~ "Извежда ÐИЗовете на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n"
+#~ "\n"
+#~ " -n не извежда в ÐºÑ€Ð°Ñ Ð½Ð¾Ð² ред\n"
+#~ " -e позволÑва Ñпециалното значение на знаците, предшеÑтвани "
+#~ "от \\,\n"
+#~ " опиÑани по-долу\n"
+#~ " -E забранÑва Ñпециалното значение на тези знаци в "
+#~ "ÐИЗовете\n"
+
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "опциÑта „-СПИС“ е оÑтарÑла; ползвайте „-t СПИС“"
+
+#~ msgid "`%s' is too large"
+#~ msgstr "“%s“ е твърде дълго"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Използване: %s [командни аргументи, които Ñе пренебрегват]\n"
+#~ " или: %s ОПЦИЯ\n"
+#~ "Приключва Ñ ÐºÐ¾Ð´ на завършване, поÑочващ неуÑпех.\n"
+#~ "\n"
+#~ "Имената на Ñледващите опции не могат да Ñе Ñъкращават.\n"
+#~ "\n"
+
+#~ msgid "invalid width option: %s"
+#~ msgstr "неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð·Ð° ширина: %s"
+
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "опциÑта „%s“ е оÑтарÑла; ползвайте „%s“"
+
+#~ msgid "%s: number of bytes is large"
+#~ msgstr "%s: твърде голÑм брой байтове"
+
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "опциÑта „-%s“ е архаична, ползвайте „-%c %.*s%.*s%s“"
+
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr ""
+#~ "инÑталират Ñе нÑколко файлове, а поÑледниÑÑ‚ аргумент (%s) не е каталог"
+
+#~ msgid "%s is a directory"
+#~ msgstr "%s е каталог"
+
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "не може да Ñе получат данни за времето на %s"
+
+#~ msgid "too many non-option arguments"
+#~ msgstr "твърде много аргументи, които не Ñа опции"
+
+#~ msgid "invalid field number: `%s'"
+#~ msgstr "неправилен номер на поле: „%s“"
+
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "неправилен номер на поле за файл 1: „%s“"
+
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "неправилен номер на поле за файл 2: „%s“"
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "нÑма доÑтатъчно аргументи, които не Ñа опции"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: Файлът ÑъщеÑтвува"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "Използване: %s [ОПЦИЯ]... ЦЕЛ [ИМЕ_ÐÐ_ВРЪЗКÐ]\n"
+#~ " или: %s [ОПЦИЯ]... ЦЕЛ... КÐТÐЛОГ\n"
+#~ " или: %s [ОПЦИЯ]... --target-directory=КÐТÐЛОГ ЦЕЛ...\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr ""
+#~ "при правене на нÑколко връзки поÑледниÑÑ‚ аргумент Ñ‚Ñ€Ñбва да бъде каталог"
+
+#~ msgid "User name too long"
+#~ msgstr "Твърде дълго потребителÑко име"
+
+#~ msgid ""
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -b, --binary чете в двоичен режим (Ñтандартно при DOS/"
+#~ "Windows)\n"
+#~ " -c, --check проверÑва Ñумите %s Ñпоред зададен ÑпиÑък\n"
+#~ " -t, --text чете файловете в текÑтов режим (Ñтандартно)\n"
+#~ "\n"
+
+#~ msgid "file"
+#~ msgstr "файл"
+
+#~ msgid "files"
+#~ msgstr "файла"
+
+#~ msgid "checksum"
+#~ msgstr "контролна Ñума"
+
+#~ msgid "checksums"
+#~ msgstr "контролни Ñуми"
+
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "опциите --string и --check не може да Ñе използват едновременно"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "не може да Ñе поÑочват файлове при използване на --string"
+
+#~ msgid "only one argument may be specified when using --check"
+#~ msgstr "може да Ñе поÑочва Ñамо един аргумент при използване на --check"
+
+#~ msgid "wrong number of arguments"
+#~ msgstr "неправилен брой аргументи"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr ""
+#~ "не може да Ñе поÑочват голÑм и малък номер на уÑтройÑтво при именувани "
+#~ "канали"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr ""
+#~ "при премеÑтване на нÑколко файла поÑледниÑÑ‚ аргумент Ñ‚Ñ€Ñбва да е каталог"
+
+#~ msgid ""
+#~ "Run COMMAND with an adjusted scheduling priority.\n"
+#~ "With no COMMAND, print the current scheduling priority. ADJUST is 10\n"
+#~ "by default. Range goes from -20 (highest priority) to 19 (lowest).\n"
+#~ "\n"
+#~ " -n, --adjustment=ADJUST increment priority by ADJUST first\n"
+#~ msgstr ""
+#~ "ИзпълнÑва КОМÐÐÐ”Ð Ñ Ñ€ÐµÐ³ÑƒÐ»Ð¸Ñ€Ð°Ð½ приоритет за многозадачното планиране.\n"
+#~ "Без КОМÐÐДРотпечатва Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚. По подразбиране КОРЕКЦИЯ е 10.\n"
+#~ "ДопуÑтимиÑÑ‚ интервал е от -20 (най-голÑм приоритет) до 19 (най-малък).\n"
+#~ "\n"
+#~ " -n, --adjustment=КОРЕКЦИЯ увеличава в началото приоритета Ñ ÐšÐžÐ Ð•ÐšÐ¦Ð˜Ð¯\n"
+
+#~ msgid "invalid option `%s'"
+#~ msgstr "неправилна Ð¾Ð¿Ñ†Ð¸Ñ â€ž%s“"
+
+#~ msgid "invalid priority `%s'"
+#~ msgstr "неправилен приоритет „%s“"
+
+#~ msgid "cannot get priority"
+#~ msgstr "не може да Ñе получи приоритетът"
+
+#~ msgid "cannot set priority"
+#~ msgstr "не може да Ñе зададе приоритета"
+
+#~ msgid "failed to redirect standard output"
+#~ msgstr "не може да Ñе пренаÑочи ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´"
+
+#~ msgid "old-style offset"
+#~ msgstr "отмеÑтване в традиционен формат"
+
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "неправилен втори операнд при режим за ÑъвмеÑтимоÑÑ‚ „%s“"
+
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr ""
+#~ "при използване на Ñ‚Ñ€Ð°Ð´Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ поÑледните два аргумента Ñ‚Ñ€Ñбва да "
+#~ "бъдат отмеÑтваниÑ"
+
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr ""
+#~ "УÑтановÑва непреноÑимите конÑтрукции в ИМЕ.\n"
+#~ "\n"
+#~ " -p, --portability проверка за вÑÑкакви POSIX-ÑиÑтеми, а не Ñамо за "
+#~ "тази\n"
+
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "пътеката „%s“ Ñъдържа непреноÑим Ñимвол „%c“"
+
+#~ msgid "`%s' is not a directory"
+#~ msgstr "“%s“ не е каталог"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "в каталога „%s“ не може да Ñе извършва Ñ‚ÑŠÑ€Ñене"
+
+#~ msgid "name `%s' has length %ld; exceeds limit of %ld"
+#~ msgstr "името „%s“ има дължина %ld, превишаващo пределната граница %ld"
+
+#~ msgid "path `%s' has length %lu; exceeds limit of %ld"
+#~ msgstr "пътеката „%s“ има дължина %lu, превишаваща пределната граница %ld"
+
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "“--pages“ неправилен интервал от номера на Ñтраници: „%s“"
+
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "“--pages“ неправилен начален номер на Ñтраница: „%s“"
+
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "“--pages“ неправилен краен номер на Ñтраница: „%s“"
+
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr "“--pages“ началниÑÑ‚ номер на Ñтраница е по-голÑм от крайниÑ"
+
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "“--columns=СТЪЛБОВЕ“ неправилен брой Ñтълбове: „%s“"
+
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%e %b %Y %k,%M"
+
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr "началниÑÑ‚ номер на Ñтраница е по-голÑм от Ð¾Ð±Ñ‰Ð¸Ñ Ð±Ñ€Ð¾Ð¹ Ñтраници: „%d“"
+
+#~ msgid "Page %d"
+#~ msgstr "ÑÑ‚Ñ€. %d"
+
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "Използване: %s формат [аргументи...]\n"
+
+#~ msgid "`-%s' option is obsolete; use `-l %s'"
+#~ msgstr "опциÑта „-%s“ е оÑтарÑла; ползвайте „-l %s“"
+
+#~ msgid "invalid argument `%s'"
+#~ msgstr "неправилен аргумент „%s“"
+
+#~ msgid "stdin: read error"
+#~ msgstr "stdin: грешка при четене"
+
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "%c: неправилен знак за ÑÑƒÑ„Ð¸ÐºÑ Ð² архаична опциÑ"
+
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "твърде много аргументи. Когато Ñе използва Ð°Ñ€Ñ…Ð°Ð¸Ñ‡Ð½Ð¸Ñ ÑинтакÑÐ¸Ñ Ð·Ð° "
+#~ "опциите на\n"
+#~ "tail (%s), не може да Ñе използва повече от един аргумент. ВмеÑто това\n"
+#~ "използвайте еквивалентната Ð¾Ð¿Ñ†Ð¸Ñ -n или -c."
+
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "Внимание: използването на две или повече файлови аргумента не е преноÑимо "
+#~ "Ñ\n"
+#~ "Ð°Ñ€Ñ…Ð°Ð¸Ñ‡Ð½Ð¸Ñ ÑинтакÑÐ¸Ñ Ð½Ð° Ð¾Ð¿Ñ†Ð¸Ñ (%s). ВмеÑто това използвайте "
+#~ "еквивалентната\n"
+#~ "Ð¾Ð¿Ñ†Ð¸Ñ -n или -c."
+
+#~ msgid "`%s' option is obsolete; use `%s-%c %.*s'"
+#~ msgstr "опциÑта „%s“ е архаична; ползвайте „%s-%c %.*s“"
+
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr "%s: неправилен макÑимален брой ÑÑŠÑедни промени в размера"
+
+#~ msgid "argument expected\n"
+#~ msgstr "очаква Ñе аргумент\n"
+
+#~ msgid "%s: integer expression expected\n"
+#~ msgstr "%s: очаква Ñе целочиÑлен израз\n"
+
+#~ msgid "before -lt"
+#~ msgstr "преди -lt"
+
+#~ msgid "after -lt"
+#~ msgstr "Ñлед -lt"
+
+#~ msgid "before -le"
+#~ msgstr "преди -le"
+
+#~ msgid "after -le"
+#~ msgstr "Ñлед -le"
+
+#~ msgid "before -gt"
+#~ msgstr "преди -gt"
+
+#~ msgid "after -gt"
+#~ msgstr "Ñлед -gt"
+
+#~ msgid "before -ge"
+#~ msgstr "преди -ge"
+
+#~ msgid "after -ge"
+#~ msgstr "Ñлед -ge"
+
+#~ msgid "before -ne"
+#~ msgstr "преди -ne"
+
+#~ msgid "after -ne"
+#~ msgstr "Ñлед -ne"
+
+#~ msgid "before -eq"
+#~ msgstr "преди -eq"
+
+#~ msgid "after -eq"
+#~ msgstr "Ñлед -eq"
+
+#~ msgid "after -t"
+#~ msgstr "Ñлед -t"
+
+#~ msgid "too many arguments\n"
+#~ msgstr "твърде много аргументи\n"
+
+#~ msgid "file arguments missing"
+#~ msgstr "липÑва файлов аргумент"
+
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "неправилна обратно наклонена черта „\\%c“"
+
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr ""
+#~ "когато едновременно Ñе отÑтранÑват Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð¸Ñ Ð¸ изтрива знаци, Ñ‚Ñ€Ñбва да "
+#~ "Ñа дадени два низа"
+
+#~ msgid "at least one string must be given when squeezing repeats"
+#~ msgstr "при отÑтранÑване на Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð¸Ñ Ñ‚Ñ€Ñбва да Ñе поÑочи поне един низ"
+
+#~ msgid ""
+#~ "invalid identity mapping; when translating, any [:lower:] or [:upper:]\n"
+#~ "construct in string1 must be aligned with a corresponding construct\n"
+#~ "([:upper:] or [:lower:], respectively) in string2"
+#~ msgstr ""
+#~ "неправилно изображение идентитет; при превод вÑÑка конÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ [:lower:] "
+#~ "или\n"
+#~ "[:upper:] в ÐœÐОЖ1 Ñ‚Ñ€Ñбва да бъде подравнена ÑÑŠÑ Ñъответна конÑтрукциÑ\n"
+#~ "([:upper:] или [:lower:] Ñъответно) в ÐœÐОЖ2"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Използване: %s [аргументи, които Ñе пренебрегват]\n"
+#~ " или: %s ОПЦИЯ\n"
+#~ "Завършва Ñ ÐºÐ¾Ð´-ÑÑŠÑтоÑние, поÑочващ уÑпех.\n"
+#~ "\n"
+#~ "Следващите имена на опции не могат да бъдат Ñъкращавани.\n"
+#~ "\n"
+
+#~ msgid "only one argument may be specified"
+#~ msgstr "може да Ñе поÑочва Ñамо един аргумент"
+
+#~ msgid "tab size contains an invalid character"
+#~ msgstr "размерът на табулациите включва непозволен знак"
+
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr "опциÑта „-LIST“ е архаична; използвайте „--first-only -t LIST“"
+
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "опциÑта „-%lu“ е архаична; използвайте „-f %lu“"
+
+#~ msgid "%s: cannot find username for UID %u\n"
+#~ msgstr ""
+#~ "%s: не може да Ñе уÑтанови потребителÑкото име на потребител Ñ Ð½Ð¾Ð¼ÐµÑ€ %u\n"
+
+#~ msgid "program error"
+#~ msgstr "програмна грешка"
+
+#~ msgid "stack overflow"
+#~ msgstr "препълване на Ñтека"
+
+#~ msgid "Torbjorn Granlund and Richard M. Stallman"
+#~ msgstr "Torbjorn Granlund и Richard M. Stallman"
+
+#~ msgid "unable to restore permissions of %s"
+#~ msgstr "не може да Ñе възÑтановÑÑ‚ правата за доÑтъп до %s"
+
+#~ msgid "Richard Stallman and David MacKenzie"
+#~ msgstr "Richard Stallman и David MacKenzie"
+
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "Използване: %s [ОПЦИЯ]... ЛЯВ_ФÐЙЛ ДЕСЕÐ_ФÐЙЛ\n"
+
+#~ msgid "Torbjorn Granlund, David MacKenzie, and Jim Meyering"
+#~ msgstr "Torbjorn Granlund, David MacKenzie и Jim Meyering"
+
+#~ msgid "Stuart Kemp and David MacKenzie"
+#~ msgstr "Stuart Kemp и David MacKenzie"
+
+#~ msgid "%s: `+' or `-' expected after delimeter"
+#~ msgstr "%s: очаква Ñе „+“ или „-“ Ñлед разделителÑ"
+
+#~ msgid "David Ihnat, David MacKenzie, and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie и Jim Meyering"
+
+#~ msgid "Paul Rubin, David MacKenzie, and Stuart Kemp"
+#~ msgstr "Paul Rubin, David MacKenzie и Stuart Kemp"
+
+#~ msgid "Torbjorn Granlund, David MacKenzie, Larry McVoy, and Paul Eggert"
+#~ msgstr "Torbjorn Granlund, David MacKenzie, Larry McVoy и Paul Eggert"
+
+#~ msgid " Type"
+#~ msgstr " Тип "
+
+#~ msgid "David MacKenzie and Jim Meyering"
+#~ msgstr "David MacKenzie и Jim Meyering"
+
+#~ msgid ""
+#~ "Torbjorn Granlund, David MacKenzie, Larry McVoy, Paul Eggert, and Jim "
+#~ "Meyering"
+#~ msgstr ""
+#~ "Torbjorn Granlund, David MacKenzie, Larry McVoy, Paul Eggert и Jim "
+#~ "Meyering"
+
+#~ msgid "cannot change to parent of directory %s"
+#~ msgstr "не може да Ñе влече в Ñ€Ð¾Ð´Ð¸Ñ‚ÐµÐ»Ñ Ð½Ð° каталога %s"
+
+#~ msgid "Richard Mlynarik and David MacKenzie"
+#~ msgstr "Richard Mlynarik и David MacKenzie"
+
+#~ msgid ""
+#~ "\n"
+#~ "In -wNUMBER, the letter `w' may be omitted.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ð’ -wЧИСЛО буквата „w“ може да Ñе пропуÑне.\n"
+
+#~ msgid ""
+#~ " -c, --bytes=SIZE print first SIZE bytes\n"
+#~ " -n, --lines=NUMBER print first NUMBER lines instead of first 10\n"
+#~ msgstr ""
+#~ " -c, --bytes=РÐЗМ извежда началните РÐЗМ байтове\n"
+#~ " -n, --lines=БРОЙ извежда първите БРОЙ реда вмеÑто първите 10\n"
+
+#~ msgid "Arnold Robbins and David MacKenzie"
+#~ msgstr "Arnold Robbins и David MacKenzie"
+
+#~ msgid "Mike Parker and David MacKenzie"
+#~ msgstr "Mike Parker и David MacKenzie"
+
+#~ msgid "Ulrich Drepper and Scott Miller"
+#~ msgstr "Ulrich Drepper и Scott Miller"
+
+#~ msgid "Mike Parker, David MacKenzie, and Jim Meyering"
+#~ msgstr "Mike Parker, David MacKenzie и Jim Meyering"
+
+#~ msgid "Scott Bartram and David MacKenzie"
+#~ msgstr "Scott Bartram и David MacKenzie"
+
+#~ msgid "David M. Ihnat and David MacKenzie"
+#~ msgstr "David M. Ihnat и David MacKenzie"
+
+#~ msgid "Joseph Arceneaux, David MacKenzie, and Kaveh Ghazi"
+#~ msgstr "Joseph Arceneaux, David MacKenzie и Kaveh Ghazi"
+
+#~ msgid "Pete TerMaat and Roland Huebner"
+#~ msgstr "Pete TerMaat и Roland Huebner"
+
+#~ msgid "David MacKenzie and Richard Mlynarik"
+#~ msgstr "David MacKenzie и Richard Mlynarik"
+
+#~ msgid "\\%c: invalid escape"
+#~ msgstr "\\%c: неправилно използване на \\"
+
+#~ msgid "Paul Rubin, David MacKenzie, Richard Stallman, and Jim Meyering"
+#~ msgstr "Paul Rubin, David MacKenzie, Richard Stallman и Jim Meyering"
+
+#~ msgid ""
+#~ "when the starting value is larger than the limit,\n"
+#~ "the increment must be negative"
+#~ msgstr ""
+#~ "ако началната ÑтойноÑÑ‚ е по-голÑма от границата,\n"
+#~ "Ñтъпката Ñ‚Ñ€Ñбва да бъде отрицателна"
+
+#~ msgid ""
+#~ "when the starting value is smaller than the limit,\n"
+#~ "the increment must be positive"
+#~ msgstr ""
+#~ "Ðко началната ÑтойноÑÑ‚ е по-малка от границата,\n"
+#~ "Ñтъпката Ñ‚Ñ€Ñбва да бъде положителна"
+
+#~ msgid "Jim Meyering and Paul Eggert"
+#~ msgstr "Jim Meyering и Paul Eggert"
+
+#~ msgid "Mike Haertel and Paul Eggert"
+#~ msgstr "Mike Haertel и Paul Eggert"
+
+#~ msgid "invalid number"
+#~ msgstr "неправилно чиÑло"
+
+#~ msgid "*** invalid date/time ***"
+#~ msgstr "*** неправилна дата/време ***"
+
+#~ msgid "Kayvan Aghaiepour and David MacKenzie"
+#~ msgstr "Kayvan Aghaiepour и David MacKenzie"
+
+#~ msgid "Jay Lepreau and David MacKenzie"
+#~ msgstr "Jay Lepreau и David MacKenzie"
+
+#~ msgid "Paul Rubin, David MacKenzie, Ian Lance Taylor, and Jim Meyering"
+#~ msgstr "Paul Rubin, David MacKenzie, Ian Lance Taylor и Jim Meyering"
+
+#~ msgid "%s is larger than the maximum file size on this system"
+#~ msgstr ""
+#~ "%s е по-голÑм от макÑимално допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€ на файл при тази ÑиÑтема"
+
+#~ msgid "Mike Parker, Richard M. Stallman, and David MacKenzie"
+#~ msgstr "Mike Parker, Richard M. Stallman и David MacKenzie"
+
+#~ msgid ""
+#~ "Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie, and Randy Smith"
+#~ msgstr ""
+#~ "Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie и Randy Smith"
+
+#~ msgid "Joseph Arceneaux and David MacKenzie"
+#~ msgstr "Joseph Arceneaux и David MacKenzie"
+
+#~ msgid "Paul Rubin and David MacKenzie"
+#~ msgstr "Paul Rubin и David MacKenzie"
+
+#~ msgid "Joseph Arceneaux, David MacKenzie, and Michael Stone"
+#~ msgstr "Joseph Arceneaux, David MacKenzie и Michael Stone"
+
+#~ msgid ""
+#~ "Warning: the meaning of '-l' will change in a future release to conform "
+#~ "to POSIX"
+#~ msgstr ""
+#~ "Внимание: значението на „-l“ в бъдеще ще Ñе промени да Ð¾Ñ‚Ð³Ð¾Ð²Ð°Ñ€Ñ Ð½Ð° "
+#~ "Ñтандарта POSIX"
diff --git a/po/boldquot.sed b/po/boldquot.sed
new file mode 100644
index 0000000..4b937aa
--- /dev/null
+++ b/po/boldquot.sed
@@ -0,0 +1,10 @@
+s/"\([^"]*\)"/“\1â€/g
+s/`\([^`']*\)'/‘\1’/g
+s/ '\([^`']*\)' / ‘\1’ /g
+s/ '\([^`']*\)'$/ ‘\1’/g
+s/^'\([^`']*\)' /‘\1’ /g
+s/“â€/""/g
+s/“/“/g
+s/â€/â€/g
+s/‘/‘/g
+s/’/’/g
diff --git a/po/ca.gmo b/po/ca.gmo
new file mode 100644
index 0000000..c993e2c
--- /dev/null
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
new file mode 100644
index 0000000..692c205
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,10913 @@
+# Catalan messages for GNU coreutils.
+# Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
+# Ivan Vilata i Balaguer <ivan@selidor.net>, 1999, 2002, 2003, 2004, 2005, 2006.
+# Jordi Mallach <jordi@sindominio.net>, 2001, 2002.
+# Ernest Adrogué Calveras <eadrogue@gmx.net>, 2002.
+#
+# No em decideixo entre destí i destinació. jm
+# Destí és correcte i més curt, ho passe tot a destí. ivb
+#
+# Sóc Ivan, aquestes són les convencions que adopte per a la 4.5.1:
+# * Sempre que es puga s’usaran els caràcters adequats per al text en català:
+# l’apòstrof (’), ela geminada (Å€, Ä¿), cometes («, », “, â€, ‘, ’, en aquest
+# ordre de d’aparició), guionet (â€), guionet dur (‑), guió (—) i punts
+# suspensius (…). Compte, perquè *cap*, repetesc, *CAP* dels anteriors és
+# el caràcter que s’obté teclejant directament; vegeu
+# http://www.selidor.net/~ivan/blog/bits/20060304T0023-ortotipografia.html.
+# * Use 2 espais després d'un punt.
+# * Missatges d'ajuda:
+# * Forma d'ús: ...
+# o bé: ...
+# * ARGUMENT_COMPOST, però ARGCOMP
+# * FILE(s) -> cada FITXER (si és possible)
+# * Cada línia de descripció d'una opció comença en la columna 24, i
+# sempre es manté com a mínim a 4 espais del nom de l'opció. Quan
+# l'opció arriba a la columna 24, la descripció comença en la línia
+# inferior. Les descripcions que no caben en una línia es parteixen i
+# continuen en la columna 24 de la línia següent.
+# * Les descripcions d'ítems que no són opcions es mantenen alineades a
+# 4 espais de l'ítem més llarg del bloc. Les que no caben en una línia
+# es parteixen i continuen en la mateixa columna on comencen.
+# * Errors i avisos:
+# * no és igual «no es pot obrir» que «no s'ha pogut obrir»
+# * no és igual «s'està obrint X» que «en obrir X» (error)
+# * «avís:» comença amb minúscula, la cadena següent també
+# * sempre van en una sola línia, a no ser que els retorns importen; en
+# aquest cas, les noves línies comencen amb un caràcter de tabulació
+# * VARIABLE_ENTORN, però «valor de variable»
+# * Noms de funció: printf()
+# * Noms de fitxer: «fitxer»
+# * Noms d'opcions: «--opció=ARGUMENT»
+# * El text com a molt arriba a la columna 78, amb el caràcter de nova línia
+# en la 79. Les línies es parteixen de forma automàtica (no per a que quede
+# bonic, excepte quan quede realment horrend o porte a confusió).
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 5.97\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2006-08-21 00:02+0200\n"
+"Last-Translator: Ivan Vilata i Balaguer <ivan@selidor.net>\n"
+"Language-Team: Catalan <ca@dodds.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+# Usa quote(). ivb
+# Indica condició d'error. ivb
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "en establir els permisos de %s"
+
+# Usa quote(). ivb
+# Indica condició d'error. ivb
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "en establir els permisos de %s"
+
+# Usa quote() en els 2 args. ivb
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "l’argument %s no és vàlid per a %s"
+
+# Usa quote() en els 2 args. ivb
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "l’argument %s és ambigu per a %s"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Els arguments vàlids són:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "error d’escriptura"
+
+# Amb el mateix format que els errors de la libc. ivb
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Error desconegut del sistema"
+
+# Els 3 usen quote(). ivb
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "ha fallat stat() sobre %s"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "fitxer ordinari buit"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "fitxer ordinari"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "directori"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "fitxer especial de blocs"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "fitxer especial de caràcters"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "cua FIFO"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "enllaç simbòlic"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "connector"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "cua de missatges"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "semàfor"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "objecte de memòria compartida"
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr "objecte de memòria amb tipus"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "fitxer estrany"
+
+#: lib/gai_strerror.c:44
+msgid "Address family for hostname not supported"
+msgstr "La família d’adreces del nom d’estació no és permesa"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr "Fallada temporal a la resolució de noms"
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr "El valor d’«ai_flags» no és vàlid"
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr "Fallada irrecuperable a la resolució de noms"
+
+#: lib/gai_strerror.c:48
+msgid "ai_family not supported"
+msgstr "El valor d’«ai_family» no és permés"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr "No s’ha pogut reservar memòria"
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr "No hi ha cap adreça associada amb el nom d’estació"
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr "El nom o servei no és conegut"
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr "El servei per a aquest valor d’«ai_socktype» no és permés"
+
+#: lib/gai_strerror.c:53
+msgid "ai_socktype not supported"
+msgstr "El valor d’«ai_socktype» no és permés"
+
+#: lib/gai_strerror.c:54
+msgid "System error"
+msgstr "Error del sistema"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr "S’està processant la petició"
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr "La petició ha estat canceŀlada"
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr "La petició no ha estat canceŀlada"
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr "S’han completat totes les peticions"
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr "Interromput per un senyal"
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr "La codificació del paràmetre cadena no és correcta"
+
+#: lib/gai_strerror.c:74
+msgid "Unknown error"
+msgstr "Error desconegut"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: l’opció «%s» és ambigua\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: l’opció «--%s» no admet arguments\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: l’opció «%c%s» no admet arguments\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: l’opció «%s» necessita un argument\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: l’opció «--%s» no és reconeguda\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: l’opció «%c%s» no és reconeguda\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: no es permet l’opció «%c»\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: l’opció «%c» no és vàlida\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: l’opció «%c» necessita un argument\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: l’opció «-W %s» és ambigua\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: l’opció «-W %s» no admet arguments\n"
+
+# FIXME: xmalloc.h: _STRTOL_ERROR lacks i18n. ivb
+# Açò quedarà com «invalid mida de bloc `MIDA'» mentre no ho facen. ivb
+#: lib/human.c:477
+msgid "block size"
+msgstr "mida de bloc"
+
+# Els 2 usen quote(). ivb
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "no s’han pogut canviar els permisos de %s"
+
+# Els 3 usen quote(). ivb
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "no s’ha pogut crear el directori %s"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "la memòria s’ha exhaurit"
+
+#: lib/openat-die.c:34
+#, c-format
+msgid "unable to record current working directory"
+msgstr "no s’ha pogut registrar el directori de treball actual"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "no s’ha pogut tornar al directori inicial de treball"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "«"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "»"
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "%s: ha fallat el desplaçament"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: l’expressió regular no és vàlida: %s"
+
+# Usa quote(). ivb
+#: lib/regcomp.c:140
+#, fuzzy
+msgid "Invalid collation character"
+msgstr "la classe de caràcters %s no és vàlida"
+
+# Usa quote(). ivb
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "la classe de caràcters %s no és vàlida"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+# Usa quote(). ivb
+#: lib/regcomp.c:149
+#, fuzzy
+msgid "Invalid back reference"
+msgstr "el rang de pàgines no és vàlid: %s"
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+# Usa quote(). ivb
+#: lib/regcomp.c:164
+#, fuzzy
+msgid "Invalid range end"
+msgstr "el rang de pàgines no és vàlid: %s"
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "la memòria s’ha exhaurit"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: l’expressió regular no és vàlida: %s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "error a la cerca de l’expressió regular"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "error al cercador d’expressions regulars"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "error a la cerca de l’expressió regular"
+
+# Usa quote(). ivb
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr "és perillós operar recursivament sobre %s"
+
+# Els 2 usen quote(). ivb
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr "és perillós operar recursivament sobre %s (com sobre %s)"
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr "useu «--no-preserve-root» per a evitar aquesta comprovació"
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[sS]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "la funció iconv() no és útil"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "la funció iconv() no es troba disponible"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "el caràcter es troba fora del rang"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "no s’ha pogut convertir U+%04X al joc de caràcters local"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "no s’ha pogut convertir U+%04X al joc de caràcters local: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "l’usuari no és vàlid"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "el grup no és vàlid"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "l’usuari no és vàlid"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr "©"
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Aquest és programari lliure. Podeu redistribuirâ€ne còpies sota els\n"
+"termes de la Llicència Pública General GNU, que podeu trobar en\n"
+"http://www.gnu.org/licenses/gpl.html. No hi ha CAP GARANTIA, fins on ho\n"
+"permeta la legislació vigent.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Escrit per %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Escrit per %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Escrit per %s, %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Escrit per %s, %s, %s\n"
+"i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Escrit per %s, %s, %s,\n"
+"%s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Escrit per %s, %s, %s,\n"
+"%s, %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Escrit per %s, %s, %s,\n"
+"%s, %s, %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Escrit per %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Escrit per %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Escrit per %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s i d’altres.\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "l’argument no és vàlid: %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "ha fallat la comparació de cadenes"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Establiu la variable LC_ALL a «C» per a evitar el problema."
+
+# Usa quote() en les 2. ivb
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "Les cadenes comparades eren %s i %s."
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "ha fallat la comparació de cadenes"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+# Usa quote(). ivb
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "l’usuari %s no és vàlid"
+
+# Usa quote(). ivb
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "la classe de caràcters %s no és vàlida"
+
+# És un enter correcte però massa gran. ivb
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s és massa gran"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Proveu «%s --help» per a obtenir més informació.\n"
+
+#: src/base64.c:65
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+"Forma d’ús: %s [OPCIÓ] [FITXER]…\n"
+"Escriu o comprova sumes de verificació %s (de %d bits).\n"
+"Sense FITXER, o quan FITXER és «-», llegeix l’entrada estàndard.\n"
+"\n"
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr " --version Mostra informació sobre la versió i surt.\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Sense cap FITXER, o quan FITXER és «-», llegeix l’entrada estàndard.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Informeu dels errors a <%s>.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "error de lectura"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "el senyalador d’entrada no és vàlid: %s"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "l’amplària de tabulació no és vàlida: %s"
+
+# Usa quote(). ivb
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr "sobra l’operand %s"
+
+# Indica la situació d'un missatge d'error. ivb
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "en tancar l’entrada estàndard"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Forma d’ús: %s NOM [SUFIX]\n"
+" o bé: %s OPCIÓ\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Mostra NOM eliminant qualsevol component directori que tinga al davant. Si\n"
+"s’especifica, també s’elimina el SUFIX del darrere.\n"
+"\n"
+
+# Esperem que el «%s» no empente la línia més enllà de la columna 78. ivb
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+"\n"
+"Exemples:\n"
+" «%s /usr/bin/sort» produeix «sort».\n"
+" «%s include/stdio.h .h» produeix «stdio».\n"
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, c-format
+msgid "missing operand"
+msgstr "manca un operand"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Forma d’ús: %s [OPCIÓ] [FITXER]…\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"Concatena els FITXERs o l’entrada estàndard, i escriu el resultat a la\n"
+"sortida estàndard.\n"
+"\n"
+" -A, --show-all Equival a «-vET».\n"
+" -b, --number-nonblank Enumera les línies que no estan en blanc.\n"
+" -e, Equival a «-vE».\n"
+" -E, --show-ends Escriu un caràcter «$» al final de cada línia.\n"
+" -n, --number Enumera totes les línies.\n"
+" -s, --squeeze-blank No mostra més d’una línia en blanc seguida.\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t Equival a «-vT».\n"
+" -T, --show-tabs Mostra els caràcters de tabulació com a «^I».\n"
+" -u (No es té en compte.)\n"
+" -v, --show-nonprinting\n"
+" Empra la notació «^» i «M-», excepte per als "
+"caràcters\n"
+" de nova línia i per a les tabulacions.\n"
+
+# Esperem que el «%s» no empente la línia més enllà de la columna 78. ivb
+# Aquest arranjament funciona bé per a «%s = cat», el més comú. ivb
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+"\n"
+"Exemples:\n"
+" «%s f - g» Mostra el contingut d’«f», de l’entrada estàndard, i en\n"
+" acabant el contingut de «g».\n"
+" «%s» Còpia l’entrada estàndard a l’eixida estàndard.\n"
+
+# Usa quote(). ivb
+#: src/cat.c:333
+#, c-format
+msgid "cannot do ioctl on %s"
+msgstr "ha fallat ioctl() sobre %s"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "eixida estàndard"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: el fitxer d’entrada i el de sortida són el mateix"
+
+# Usa quote(). ivb
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "el grup %s no és vàlid"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Forma d’ús: %s [OPCIÓ]… GRUP FITXER…\n"
+" o bé: %s [OPCIÓ]… --reference=FITXREF FITXER…\n"
+
+#: src/chgrp.c:117
+#, fuzzy
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Canvia la pertinença de grup de cada FITXER a GRUP.\n"
+"Amb «--reference», canvia el grup de cada FITXER a aquell de FITXREF.\n"
+"\n"
+" -c, --changes Com «--verbose», però només informa quan es fa un\n"
+" canvi.\n"
+" --dereference Afecta el fitxer apuntat per cada enllaç simbòlic, "
+"en\n"
+" lloc del propi enllaç simbòlic (per defecte).\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference Afecta cadascun dels enllaços simbòlics en lloc "
+"dels\n"
+" fitxers apuntats (disponible només en sistemes que\n"
+" puguen canviar el propietari d’un enllaç simbòlic).\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root\n"
+" No tracta «/» de forma especial (per defecte).\n"
+" --preserve-root Falla en operar recursivament sobre «/».\n"
+
+#: src/chgrp.c:134
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet No mostra la majoria de missatges d’error.\n"
+" --reference=FITXREF\n"
+" Empra el grup del fitxer FITXREF en lloc del valor\n"
+" especificat de GRUP.\n"
+" -R, --recursive Opera recursivament sobre fitxers i directoris.\n"
+" -v, --verbose Mostra un missatge per cada fitxer processat.\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+"Les opcions següents modifiquen la forma de recórrer una jerarquia quan "
+"s’haja\n"
+"especificat també l’opció «-R». Si se n’especifica més d’una, només la\n"
+"darrera d’elles tindrà efecte.\n"
+"\n"
+" -H Si un argument de la línia d’ordres és un ellaç\n"
+" simbòlic cap a un directori, aquest serà recorregut.\n"
+" -L Es seguirà qualsevol enllaç que es trobe que apunte\n"
+" cap a un directori.\n"
+" -P No es seguirà cap enllaç simbòlic (per defecte).\n"
+"\n"
+
+# Esperem que el «%s» no empente la línia més enllà de la columna 78. ivb
+# Aquest arranjament funciona bé per a «%s = chgrp», el més comú. ivb
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+"\n"
+"Exemples:\n"
+" «%s staff /u» Canvia el grup de «/u» a «staff».\n"
+" «%s -hR staff /u» Canvia el grup de «/u» i descendents a «staff».\n"
+
+# -H i -L es reemplacen però no són incompatibles. ivb
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr "«-R --dereference» necessita «-H» o «-L»"
+
+# Usa quote(). ivb
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, c-format
+msgid "missing operand after %s"
+msgstr "manca un operand després de %s"
+
+# Els 9 usen quote(). ivb
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "no s’han pogut obtindre els atributs de %s"
+
+# Usa quote(). ivb
+# Indica situació d'error. ivb
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "en obtenir els nous atributs de %s"
+
+# Usa quote(). ivb
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "no s’han canviat ni l’enllaç simbòlic %s ni el fitxer apuntat\n"
+
+# Usa quote() en el 1r arg. El 3r és un mode «rwxrwxrwx». ivb
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "s’ha canviat el mode de %s a %04lo (%s)\n"
+
+# Usa quote() en el 1r arg. El 3r és un mode «rwxrwxrwx». ivb
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "no s’ha pogut canviar el mode de %s a %04lo (%s)\n"
+
+# Usa quote() en el 1r arg. El 3r és un mode «rwxrwxrwx». ivb
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "el mode de %s es manté en %04lo (%s)\n"
+
+# Usa quote(). ivb
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "no s’ha pogut accedir a %s"
+
+# En les 3 és nom de fitxer amb quote(). ivb
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+# Usa quote(). ivb
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "no s’ha pogut llegir el directori %s"
+
+# Usa quote(). ivb
+# Indica una condició d'error. ivb
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "en canviar els permisos de %s"
+
+# No usa quote(), però són números. ivb
+#: src/chmod.c:286
+#, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "%s: els nous permisos són %s, no %s"
+
+# És una funció. ivb
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr "ha fallat fts_read()"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Forma d’ús: %s [OPCIÓ]… MODE[,MODE]… FITXER…\n"
+" o bé: %s [OPCIÓ]… MODE_OCTAL FITXER…\n"
+" o bé: %s [OPCIÓ]… --reference=FITXREF FITXER…\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+"Canvia el mode de cada FITXER a MODE.\n"
+"\n"
+" -c, --changes Com «--verbose», però només informa quan es produeix "
+"un\n"
+" canvi.\n"
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root\n"
+" No tracta «/» de forma especial (per defecte).\n"
+" --preserve-root Falla en operar recursivament sobre «/».\n"
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+" -f, --silent, --quiet No mostra la majoria dels missatges d’error.\n"
+" -v, --verbose Mostra un missatge per cada fitxer processat.\n"
+" --reference=FITXREF\n"
+" Empra el mode de FITXREF en lloc dels valors de "
+"MODE.\n"
+" -R, --recursive Canvia recursivament fitxers i directoris.\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+"\n"
+"Cada MODE té la forma «[ugoa]*([-+=]([rwxXst]*|[ugo]))+».\n"
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr "no es poden combinar el mode i l’opció «--reference»"
+
+#: src/chmod.c:510
+#, c-format
+msgid "invalid mode: %s"
+msgstr "el mode no és vàlid: %s"
+
+# Usa quote() en el 1r arg. ivb
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "s’ha canviat el propietari de %s a «%s»\n"
+
+# Usa quote en el 1r arg. ivb
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "s’ha canviat el grup de %s a «%s»\n"
+
+# Usa quote(). ivb
+#: src/chown-core.c:149
+#, c-format
+msgid "no change to ownership of %s\n"
+msgstr "no s’ha canviat el propietari de %s\n"
+
+# Usa quote() en el 1r arg. ivb
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "no s’ha pogut canviar el propietari de %s a «%s»\n"
+
+# Usa quote() en el 1r arg. ivb
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "no s’ha pogut canviar el grup de %s a «%s»\n"
+
+# Usa quote(). ivb
+#: src/chown-core.c:154
+#, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "no s’ha pogut canviar el propietari de %s\n"
+
+# Usa quote() en el 1r arg. ivb
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "el propietari de %s es manté en «%s»\n"
+
+# Usa quote() en el 1r arg. ivb
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "el grup de %s es manté en «%s»\n"
+
+# Usa quote(). ivb
+#: src/chown-core.c:159
+#, c-format
+msgid "ownership of %s retained\n"
+msgstr "el propietari de %s es manté\n"
+
+# Usa quote(). ivb
+#: src/chown-core.c:344
+#, c-format
+msgid "cannot dereference %s"
+msgstr "no s’ha pogut seguir %s"
+
+# Usa quote(). ivb
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "s’està canviant el propietari de %s"
+
+# Usa quote(). ivb
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "s’està canviant el grup de %s"
+
+#: src/chown.c:93
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Forma d’ús: %s [OPCIÓ]… [PROPIETARI][:[GRUP]] FITXER…\n"
+" o bé: %s [OPCIÓ]… --reference=FITXREF FITXER…\n"
+
+#: src/chown.c:98
+#, fuzzy
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Canvia el propietari o grup de cada FITXER a PROPIETARI o GRUP.\n"
+"Amb «--reference», canvia el propietari i grup de cada FITXER a aquell de\n"
+"FITXREF.\n"
+"\n"
+" -c, --changes Com «--verbose», però només informa quan es fa un\n"
+" canvi.\n"
+" --dereference Afecta el fitxer apuntat per cada enllaç simbòlic, "
+"en\n"
+" lloc del propi enllaç simbòlic (per defecte).\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=PROPIETARI_ACTUAL:GRUP_ACTUAL\n"
+" Canvia el propietari o grup de cada fitxer només si "
+"el\n"
+" seu propietari o grup actual coincideixen amb "
+"aquests.\n"
+" Es pot ometre qualsevol dels dos; en aqueix cas no\n"
+" caldrà que hi haja coincidència amb l’atribut omés.\n"
+
+#: src/chown.c:122
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet No mostra la majoria de missatges d’error.\n"
+" --reference=FITXREF\n"
+" Empra el propietari i grup del fitxer FITXERF en "
+"lloc\n"
+" dels valors especificats de PROPIETARI:GRUP.\n"
+" -R, --recursive Opera recursivament sobre fitxers i directoris.\n"
+" -v, --verbose Mostra un missatge per cada fitxer processat.\n"
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"El propietari es manté si no s’especifica. El grup també es manté si no\n"
+"s’especifica, però és canviat al grup d’entrada si s’indica un «:» darrere "
+"del\n"
+"PROPIETARI simbòlic. El PROPIETARI i el GRUP poden ser tant numèrics com\n"
+"simbòlics.\n"
+
+# Esperem que el «%s» no empente la línia més enllà de la columna 78. ivb
+# Aquest arranjament funciona bé per a «%s = chown», el més comú. ivb
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+"\n"
+"Exemples:\n"
+" «%s root /u» Canvia el propietari de «/u» a «root».\n"
+" «%s root:staff /u» El mateix, però també canvia el seu grup a\n"
+" «staff».\n"
+" «%s -hR root /u» Canvia el propietari de «/u» i descendents a\n"
+" «root».\n"
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Forma d’ús: %s NOU_ARREL [ORDRE…]\n"
+" o bé: %s OPCIÓ\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"Executa l’ORDRE establintâ€hi el directori arrel a NOU_ARREL.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"Si no s’especifica cap ordre s’executa «${SHELL} -i» (per defecte: /bin/"
+"sh).\n"
+
+# No usa quote(). ivb
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "no s’ha pogut canviar el directori arrel a «%s»"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "no s’ha pogut canviar al directori arrel"
+
+# Els 2 usen quote(). ivb
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "no s’ha pogut executar l’ordre %s"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: el fitxer és massa gran"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Forma d’ús: %s [FITXER]…\n"
+" o bé: %s [OPCIÓ]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"Mostra la suma CRC i la mida en octets de cada FITXER.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Forma d’ús: %s [OPCIÓ]… FITXER1 FITXER2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr "Compara els fitxers ordenats FITXER1 i FITXER2 línia per línia.\n"
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+"\n"
+"Sense opcions, produeix una eixida amb tres columnes. La primera conté les\n"
+"línies que només es troben al FITXER1, la segona les que només es troben al\n"
+"FITXER2, i la tercera les línies comunes a ambdós fitxers.\n"
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"\n"
+" -1 Elimina aquelles línies que només apareixen al "
+"FITXER1.\n"
+" -2 Elimina aquelles línies que només apareixen al "
+"FITXER2.\n"
+" -3 Elimina aquelles línies que apareixen en ambdós\n"
+" fitxers.\n"
+
+# Els 3 usen quote(). ivb
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "no s’ha pogut preservar el propietari de %s"
+
+# Usa quote(). ivb
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr "no s’ha pogut cercar el fitxer %s"
+
+# Usa quote(). ivb
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "no s’ha pogut preservar l’autoria de %s"
+
+# Usa quote(). ivb
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "no s’ha pogut obrir %s per a llegir"
+
+# Els 4 usen quote(). ivb
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "ha fallat fstat() sobre %s"
+
+# Usa quote(). ivb
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "es salta el fitxer %s, que va ser reemplaçat en ser copiat"
+
+# Els 6 usen quote(). ivb
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "no s’ha pogut eliminar %s"
+
+# Usa quote(). ivb
+# Missatge informatiu. ivb
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "s’ha eliminat %s\n"
+
+# Usa quote(). ivb
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "no s’ha pogut crear el fitxer ordinari %s"
+
+# Els 3 usen quote(). ivb
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "s’està llegint %s"
+
+# Usa quote(). ivb
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "ha fallat lseek() sobre %s"
+
+# Els 4 usen quote(). ivb
+# En els 4 indica condició d'error. ivb
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "en escriure %s"
+
+# Usa quote(). ivb
+# Indica condició d'error. ivb
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "en preservar les dates de %s"
+
+# Els 2 usen quote(). ivb
+# En els 2 indica condició d'error. ivb
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "en tancar %s"
+
+# Ací tinc un diff de la Debian 2.0 on insisteix bastant en posar «(s/n)»
+# al final d'aquestes qüestions (un diff d'es.po) iv
+# Creus que fa falta ficar (s/n)? De moment ho he llevat, però torna
+# a ficar-ho si vols. Quin luser contestaria «a» vegades, i no «s» o «n»?
+# (nota per a la posteritat) Debian 3.0 ja fa 2 mesos que "ja està
+# a punt" :) I encara no tindrà fileutils traduït... jm
+# Aiii senyor, com passa el temps, ja ni hi ha fileutils (2003-1). ivb
+# Usa quote() en el 1r arg. ivb
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: voleu sobreescriure %s, reemplaçant el mode %04lo? "
+
+# Usa quote(). ivb
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: voleu sobreescriure %s? "
+
+# Usa quote(). ivb
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (còpia de seguretat: %s)"
+
+# Usa quote(). ivb
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "es descarta el directori %s"
+
+# Usa quote(). ivb
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "avís: s’ha especificat el fitxer origen %s més d’una vegada"
+
+# Els 2 usen quote() en els 2 args. ivb
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s i %s són el mateix fitxer"
+
+# Usa quote() en els 2 args. ivb
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "no es pot sobreescriure el noâ€directori %s amb el directori %s"
+
+# Usa quote() en els 2 args. ivb
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "no es sobreescriurà %s, tot just creat, amb %s"
+
+# Usa quote(). ivb
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "no es pot sobreescriure el directori %s amb un noâ€directori"
+
+# Usa quote() en els 2 args. ivb
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "no es pot moure un directori sobre un no-directori: %s -> %s"
+
+# Usa quote() en els 2 args. ivb
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "una còpia de seguretat de %s destruiria el fitxer origen; no es mou %s"
+
+# Usa quote() en els 2 args. ivb
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr ""
+"una còpia de seguretat de %s destruiria el fitxer origen; no es còpia %s"
+
+# Els 2 usen quote(). ivb
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "no sha pogut crear una còpia de seguretat de %s"
+
+# Usa quote() en els 2 args. ivb
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "no es pot copiar un directori, %s, dins d’ell mateix, %s"
+
+# Un quote() en els 2 args. ivb
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "no es crearà l’enllaç fort %s cap al directori %s"
+
+# Usa quote() en els 2 args. ivb
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "no s’ha pogut crear l’enllaç fort %s cap a %s"
+
+# Usa quote() en els 2 args. ivb
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "no es pot moure %s a un subdirectori d’ell mateix, %s"
+
+# Usa quote() en els dos args. ivb
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "no s’ha pogut moure %s a %s"
+
+# Usa quote() en es 2 args. ivb
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+"no s’ha pogut moure entre dispositius: %s a %s; no s’ha pogut eliminar el "
+"destí"
+
+# Usa quote(). ivb
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "no es pot copiar l’enllaç simbòlic cíclic %s"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr ""
+"%s: només es poden fer enllaços simbòlics relatius en el directori actual"
+
+# Usa quote() en els 2 arguments. ivb
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "no s’ha pogut crear l’enllaç simbòlic %s cap a %s"
+
+# Usa quote(). ivb
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "no s’ha pogut crear l’enllaç %s"
+
+# Els 2 usen quote(). ivb
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "no s’ha pogut crear la cua FIFO %s"
+
+# Usa quote(). ivb
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "no s’ha pogut crear el fitxer especial %s"
+
+# Els 3 usen quote(). ivb
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "no s’ha pogut llegir l’enllaç simbòlic %s"
+
+# Usa quote(). ivb
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "no s’ha pogut crear l’enllaç simbòlic %s"
+
+# Usa quote(). ivb
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s és d’un tipus de fitxer desconegut"
+
+# Els 2 usen quote(). ivb
+# L'argument és el nom original. ivb
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "no s’ha pogut recuperar la còpia de seguretat de %s"
+
+# Usa quote() en els 2 args. ivb
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (recuperació de la còpia de seguretat)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Forma d’ús: %s [OPCIÓ]… [-T] ORIGEN DESTÃ\n"
+" o bé: %s [OPCIÓ]… ORIGEN… DIRECTORI\n"
+" o bé: %s [OPCIÓ]… -t DIRECTORI ORIGEN…\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Còpia ORIGEN a DESTÃ, o múltiples ORIGENs a un DIRECTORI.\n"
+"\n"
+
+# Agafat més o menys de libc. ivb
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Els arguments obligatoris per a les opcions llargues també ho són per a les\n"
+"opcions curtes corresponents.\n"
+
+#: src/cp.c:170
+#, fuzzy
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive Equival a «-dpR».\n"
+" --backup[=CONTROL]\n"
+" Crea una còpia de seguretat de cada fitxer destí\n"
+" existent.\n"
+" -b Com «--backup», però no accepta cap argument.\n"
+" --copy-contents Còpia el contingut dels fitxers especials quan "
+"actua\n"
+" recursivament.\n"
+" -d Equival a «--no-dereference --preserve=link».\n"
+
+# FIXME: Ugly description of -f: you need to know how cp works internally! ivb
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" -f, --force Si no es pot obrir un fitxer destí existent, "
+"l’esborra\n"
+" i torna a provar.\n"
+" -i, --interactive Pregunta abans de sobreescriure.\n"
+" -H Segueix els enllaços simbòlics que es troben a la "
+"línia\n"
+" d’ordres.\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+" -l, --link Enllaça els fitxers en lloc de copiarâ€los.\n"
+" -L, --dereference Segueix sempre els enllaços simbòlics.\n"
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr " -P, --no-dereference No segueix mai els enllaços simbòlics.\n"
+
+# No sé si en --preserve volen dir açò, però crec que queda clar. ivb
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -p Equival a «--preserve=mode,ownership,timestamps».\n"
+" --preserve[=LLISTA_ATRS]\n"
+" Preserva els atributs indicats, si es pot; per "
+"defecte\n"
+" es prenen «mode» (permisos), «ownership» (propietari "
+"i\n"
+" grup) i «timestamps» (dates); altres atributs "
+"possibles\n"
+" són «links» (enllaços) i «all» (tots els atributs).\n"
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=LLISTA_ATRS\n"
+" No preserva els atributs indicats.\n"
+" --parents Crea el camí complet del fitxer origen sota el\n"
+" directori destí.\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive Còpia recursivament els directoris.\n"
+" --remove-destination\n"
+" Elimina cada fitxer destí existent abans d’intentar\n"
+" obrirâ€lo (no després, com fa «--force»).\n"
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --sparse=QUAN Controla la creació de fitxers dispersos.\n"
+" --strip-trailing-slashes\n"
+" Elimina la barra final (si n’hi ha) de cada argument\n"
+" ORIGEN.\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link Crea enllaços simbòlics en lloc de copiar.\n"
+" -S, --suffix=SUFIX Reemplaça el sufix habitual de les còpies de\n"
+" seguretat.\n"
+" --target-directory=DIRECTORI\n"
+" Còpia tots els arguments ORIGEN al DIRECTORI.\n"
+" -T, --no-target-directory\n"
+" Tracta el DESTÃ com a un fitxer normal.\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update Només còpia quan el fitxer ORIGEN és més nou que el\n"
+" fitxer destí o quan aquest darrer no existeix.\n"
+" -v, --verbose Explica què s’està fent.\n"
+" -x, --one-file-system Es manté dins d’aquest sistema de fitxers.\n"
+
+# ivb:
+# «Sparse» són fitxers amb blocs seguits de caràcters nuls. Com es pareix
+# molt al concepte de «matriu dispersa» he aprofitat la traducció (que a més
+# és la que dóna el diccionari). Mireu «perforate(1)».
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"Per defecte, els fitxers ORIGEN dispersos es detecten amb una heurística\n"
+"simple i els fitxers DESTà corresponents són creats dispersos. Aquest és "
+"el\n"
+"comportament indicat per «--sparse=auto». Amb «--sparse=always» es crearà "
+"un\n"
+"fitxer DESTà dispers sempre que el fitxer ORIGEN continga una seqüència\n"
+"suficientment llarga d’octets zero. Useu «--sparse=never» per a evitar la\n"
+"creació de fitxers dispersos.\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"El sufix de còpia de seguretat és «~», si no s’estableix amb «--suffix» o "
+"amb\n"
+"la variable d’entorn SIMPLE_BACKUP_SUFFIX. El mètode de control de "
+"versions\n"
+"es pot establir amb l’opció «--backup» o fent servir la variable d’entorn\n"
+"VERSION_CONTROL. Es poden emprar aquests valors:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off Mai fa còpies de seguretat (ni especificant «--backup»).\n"
+" numbered, t Fa còpies de seguretat numerades.\n"
+" existing, nil Fa còpies de seguretat numerades si ja n’existeixen, les "
+"fa\n"
+" simples en cas contrari.\n"
+" simple, never Fa còpies de seguretat simples sempre.\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Com a cas especial, «cp» fa una còpia de seguretat d’ORIGEN quan les "
+"opcions\n"
+"«--force» i «--backup» són actives i ORIGEN i DESTà són el mateix nom d’un\n"
+"fitxer ordinari existent.\n"
+
+# Usa quote(). ivb
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "no s’han pogut preservar les dates de %s"
+
+# Usa quote(). ivb
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "no s’han pogut preservar els permisos de %s"
+
+# Usa quote(). ivb
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "no s’ha pogut crear el directori %s"
+
+# Els 4 usen quote(). ivb
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s existeix però no és un directori"
+
+# Els 5 usen quote(). ivb
+# Indica condició d'error. ivb
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "en accedir a %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, c-format
+msgid "missing file operand"
+msgstr "manca un operand fitxer"
+
+# Usa quote(). ivb
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, c-format
+msgid "missing destination file operand after %s"
+msgstr "manca un operand fitxer destí després de %s"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+"no es poden combinar «--target-directory» (-t) i «--no-target-directory» (-T)"
+
+# Usa quote(). ivb
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, c-format
+msgid "target %s is not a directory"
+msgstr "el destí %s no és un directori"
+
+#: src/cp.c:697
+#, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "en emprar «--parents», el destí ha de ser un directori"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr "l’opció «--reply» està desaprovada; useu «-i» o «-f» al seu lloc"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, c-format
+msgid "multiple target directories specified"
+msgstr "s’han especificat múltiples directoris destí"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "no es poden fer enllaços forts i simbòlics alhora"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "tipus de còpia de seguretat"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "l’entrada ha desaparegut"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: el número de línia està fora de rang"
+
+# Usa quote(). ivb
+#: src/csplit.c:709
+#, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: %s: el número de línia està fora de rang"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr " a la %sa repetició\n"
+
+# Usa quote(). ivb
+#: src/csplit.c:755
+#, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: %s: no s’ha trobat cap coincidència"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "error a la cerca de l’expressió regular"
+
+# Usa quote(). ivb
+#: src/csplit.c:984
+#, c-format
+msgid "write error for %s"
+msgstr "error en escriure %s"
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: s’esperava un número enter després del delimitador"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: cal «}» al nombre de repeticions"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: cal especificar un número enter entre «{» i «}»"
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: manca el delimitador «%c» de tancament"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: l’expressió regular no és vàlida: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: el patró no és vàlid"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: el número de línia ha de ser major que zero"
+
+# Usa quote() en ambdues. ivb
+#: src/csplit.c:1172
+#, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "el número de línia %s és menor que el número anterior, %s"
+
+# Usa quote(). ivb
+#: src/csplit.c:1178
+#, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "avís: el número de línia %s és el mateix que el número anterior"
+
+# Es refereix al modificador d'amplada en una cadena de format C (-b). ivb
+#: src/csplit.c:1231
+#, c-format
+msgid "invalid format width"
+msgstr "l’especificació d’amplada del format no és vàlida"
+
+# Es refereix al modificador de precisió en una cadena de format C (-b). ivb
+#: src/csplit.c:1252
+#, c-format
+msgid "invalid format precision"
+msgstr "l’especificació de precisió del format no és vàlida"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "manca l’especificació de conversió al sufix"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "l’especificació de conversió al sufix no és vàlida: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "l’especificació de conversió al sufix no és vàlida: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "sobren especificacions de conversió «%%» al sufix"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "manca l’especificació de conversió «%%» al sufix"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: el número no és vàlid"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Forma d’ús: %s [OPCIÓ]… FITXER PATRÓ…\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"Divideix el FITXER en fragments separats pels patrons (PATRÓ) indicats, i\n"
+"escriu els fragments en fitxers anomenats «xx00», «xx01»… indicant a "
+"l’eixida\n"
+"estàndard la mida en octets de cadascun d’ells.\n"
+"\n"
+
+#: src/csplit.c:1486
+#, fuzzy, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=FORMAT\n"
+" Empra aquest FORMAT d’sprintf() en lloc de «%02d».\n"
+" -f, --prefix=PREFIX Empra aquest PREFIX en lloc de «xx».\n"
+" -k, --keep-files No esborra els fitxer generats, en cas d’error.\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=DIGITS Empra el nombre de dígits especificat en lloc de "
+"2.\n"
+" -s, --quiet, --silent No mostra la mida dels fitxers resultants.\n"
+" -z, --elide-empty-files\n"
+" Esborra els fitxers resultants que estan buits.\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"Si FITXER és «-», llegeix l’entrada estàndard. Cada PATRÓ pot ser:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" ENTER Copia fins a (però sense incloure) la línia "
+"especificada.\n"
+" /EXPREG/[DESPL] Copia fins a (però sense incloure) la línia "
+"coincident.\n"
+" %EXPREG%[DESPL] Salta fins a (però sense incloure) la línia "
+"coincident.\n"
+" {ENTER} Repeteix el patró anterior el nombre de vegades\n"
+" especificat.\n"
+" {*} Repeteix el patró anterior tants cops com sigui "
+"possible.\n"
+"\n"
+"Un desplaçament de línia (DESPL) és un «+» o «-» seguit d’un número enter\n"
+"positiu.\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Forma d’ús: %s [OPCIÓ]… [FITXER]…\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"Escriu parts seleccionades de les línies de cada FITXER a la sortida\n"
+"estàndard.\n"
+"\n"
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=LLISTA Només selecciona aquests octets.\n"
+" -c, --characters=LLISTA\n"
+" Només selecciona aquests caràcters.\n"
+" -d, --delimiter=DELIM Empra DELIM en lloc de la tabulació com a\n"
+" delimitador de camp.\n"
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=LLISTA Només selecciona aquests camps; també escriu totes "
+"les\n"
+" línies que no continguen el caràcter delimitador, "
+"tret\n"
+" que s’especifique l’opció «-s».\n"
+" -n (No es té en compte.)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+" --complement Complementa el conjunt d’octets, caràcters o camps\n"
+" escollits.\n"
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited No escriu les línies que no continguen el "
+"caràcter\n"
+" delimitador.\n"
+" --output-delimiter=CADENA\n"
+" Empra la CADENA com a delimitador de sortida; per\n"
+" defecte s’utilitza el delimitador d’entrada.\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+#, fuzzy
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"No utilitzeu les opcions «-b», «-c» o «-f» conjuntament. Cada LLISTA "
+"consta\n"
+"d’un interval, o de diversos intervals separats per comes. L’entrada que "
+"és\n"
+"seleccionada és escrita en el mateix ordre que és llegida, i és escrita una\n"
+"sola volta, exactament. Cada interval pot ser un de:\n"
+"\n"
+" N L’octet, caràcter o camp N, comptant des de 1.\n"
+" N- Des de l’octet, caràcter o camp N fins al final de la línia.\n"
+" N-M Des de l’octet, caràcter o camp N fins a l’M (inclòs).\n"
+" -M Des del principi fins a l’octet, caràcter o camp M (inclòs).\n"
+"\n"
+"Sense FITXER, o quan FITXER és «-», llegeix l’entrada estàndard.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "la llista d’octets o camps no és vàlida"
+
+# És un enter correcte però massa gran. ivb
+# Usa quote(). ivb
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr "el desplaçament en octets %s és massa gran"
+
+# És un enter correcte però massa gran. ivb
+# Usa quote(). ivb
+#: src/cut.c:472
+#, c-format
+msgid "field number %s is too large"
+msgstr "el número de camp %s és massa gran"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "només es pot especificar un únic tipus de llista"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "el delimitador ha de ser un únic caràcter"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "cal especificar una llista d’octets, caràcters o camps"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr ""
+"només es pot especificar un delimitador d’entrada quan s’opere amb camps"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"eliminar les línies no delimitades només té sentit quan s’opera amb camps"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "manca la llista de camps"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "manca la llista de posicions"
+
+# CC és de «century», així que S de «segle»... iv
+# Nopes, la centúria és el segle menys 1 (com hauria de ser!). ivb
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Forma d’ús: %s [OPCIÓ]… [+FORMAT]\n"
+" o bé: %s [-u|--utc|--universal] [MMDDhhmm[[CC]AA][.ss]]\n"
+
+# Sembla que date no accepta «ara»... No anirà al locale... iv
+# No, en efecte, és cosa de getdate.y, que no té i18 iv
+# Hm. Ivan, revisa -I. Cal traduir les coses entrecomillades? jm
+# No, són arguments literals de -I, i no tenen traducció. ivb
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"Mostra la data actual en el FORMAT indicat, o estableix la data del "
+"sistema.\n"
+"\n"
+" -d, --date=CADENA Mostra la data descrita a la CADENA en lloc de la "
+"data\n"
+" actual («now», ara).\n"
+" -f, --file=FITXER_DATES\n"
+" Com aplicar «--date» una volta per cada línia de\n"
+" FITXER_DATES.\n"
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+#, fuzzy
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+" -r, --reference=FITXER\n"
+" Mostra la data de la darrera modificació del FITXER.\n"
+" -R, --rfc-2822 Mostra la data conforme a l’RFC 2822.\n"
+" --rfc-3339=PRECISIÓ\n"
+" Mostra la data conforme a l’RFC 3339, fins a la\n"
+" PRECISIÓ indicada: «date» (data), «seconds» (segons) "
+"o\n"
+" «ns» (nanosegons).\n"
+" -s, --set=CADENA Estableix la data descrita a la CADENA.\n"
+" -u, --utc, --universal\n"
+" Mostra o estableix el Temps Universal Coordinat.\n"
+
+# Les descr. han de començar en la 12a. columna (per «%:::z»). ivb
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"\n"
+"FORMAT controla l’eixida. L’única opció vàlida a la segona forma "
+"especifica\n"
+"el Temps Universal Coordinat. Les seqüències interpretades són:\n"
+"\n"
+" %% Un «%» literal.\n"
+" %a Dia de la setmana abreujat del locale, p. ex. «dg».\n"
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A Dia de la setmana complet del locale, p. ex. «diumenge».\n"
+" %b Dia del mes abreujat del locale, p. ex. «gen».\n"
+" %B Dia del mes complet del locale, p. ex. «gener».\n"
+" %c Data i hora del locale, p. ex. «dj 03 mar 2005 23:05:25 CET».\n"
+
+# No pose «segle» pq no ho és exactament, així llegiran l'explicació. ivb
+# A més, pose «20» en lloc de «21» per a no marejar el personal. ivb
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C Centúria, com «%Y» però sense els dos darrers dígits, p. ex. "
+"«20».\n"
+" %d Dia del mes, p. ex. «01».\n"
+" %D Format de data equivalent a «%m/%d/%y».\n"
+" %e Dia del mes replenat amb blancs, equival a «%_d».\n"
+
+# Ja sé que sona estrany però és el que vol dir. info date. ivb
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+" %F Data completa, equival a «%Y-%m-%d».\n"
+" %g Darrers dos dígits de l’any, segons el número ISO de la setmana\n"
+" (vegeu «%G»).\n"
+" %G Any, segons el número ISO de la setmana (vegeu «%V»); a sovint\n"
+" només és útil amb «%V».\n"
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h Equival a «%b».\n"
+" %H Hora (00..23).\n"
+" %I Hora (01..12).\n"
+" %j Dia de l’any (001..366).\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k Hora ( 0..23).\n"
+" %l Hora ( 1..12).\n"
+" %m Mes (01..12).\n"
+" %M Minut (00..59).\n"
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+" %n Un caràcter de nova línia.\n"
+" %N Nanosegons (000000000..999999999).\n"
+" %p L’equivalent d’AM o PM del locale, buit si es desconeix.\n"
+" %P Com «%p», però en minúscules.\n"
+" %r Hora del rellotge de 12 hores del locale, p. ex. «11:11:04 PM» "
+"al\n"
+" locale C.\n"
+" %R Hora i minuts del rellotge de 24 hores, equival a «%H:%M».\n"
+" %s Segons des de l’1 de gener de 1970 a les 00:00:00 UTC.\n"
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+" %S Segon (00..60).\n"
+" %t Un caràcter de tabulació.\n"
+" %T Hora, equival a «%H:%M:%S».\n"
+" %u Dia de la setmana (1..7), on 1 és el dilluns.\n"
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U Número de la setmana dins l’any, amb el diumenge com a primer "
+"dia\n"
+" de la setmana (00..53).\n"
+" %V Número ISO de la setmana, amb el dilluns com a primer dia de la\n"
+" setmana (01..53).\n"
+" %w Dia de la setmana (0..6), on 0 és el diumenge.\n"
+" %W Número de la setmana dins l’any, amb el dilluns com a primer dia "
+"de\n"
+" la setmana (00..53).\n"
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x Representació de la data del locale, p. ex. «31/12/99».\n"
+" %X Representació de l’hora del locale, p. ex. «23:13:48».\n"
+" %y Darrers dos dígits de l’any (00..99).\n"
+" %Y Any.\n"
+
+#: src/date.c:223
+#, fuzzy
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+" %z Zona horària numèrica «+hhmm», p. ex. «-0400».\n"
+" %:z Zona horària numèrica «+hh:mm», p. ex. «-04:00».\n"
+" %::z Zona horària numèrica «+hh:mm:ss», p. ex. «-04:00:00».\n"
+" %:::z Zona horària numèrica amb els «:» imprescindibles, p.ex. «-04» o\n"
+" «+05:30».\n"
+" %Z Abreviatura alfanumèrica de la zona horària, p. ex. «EDT».\n"
+"\n"
+"Per defecte, «date» replena els camps numèrics amb zeros. Els senyaladors\n"
+"següents són opcionals i poden ser emprats al darrere de «%»:\n"
+"\n"
+" «-» (menys) No replena el camp.\n"
+" «_» (subratllat) Replena el camp amb espais.\n"
+" «0» (zero) Replena el camp amb zeros.\n"
+" «^» Empra majúscules, si és possible.\n"
+" «#» Intercanvia majúscules i minúscules, si és possible.\n"
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+"\n"
+"Després dels senyaladors es pot indicar l’amplada del camp com a un número\n"
+"decimal; després es pot incloure el modificador opcional «E», per a emprar "
+"les\n"
+"representacions alternatives del locale (si n’hi ha), o «O», per a emprar "
+"els\n"
+"símbols numèrics alternatius del locale (si n’hi ha).\n"
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "entrada estàndard"
+
+# Ambdues usen quote(). ivb
+#: src/date.c:297 src/date.c:517
+#, c-format
+msgid "invalid date %s"
+msgstr "la data %s no és vàlida"
+
+#: src/date.c:408 src/date.c:442
+#, c-format
+msgid "multiple output formats specified"
+msgstr "s’han especificat múltiples formats d’eixida"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "les opcions per a especificar dates a mostrar són mútuament excloents"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr ""
+"no es poden emprar alhora les opcions per a mostrar i per a establir dates"
+
+# Usa quote(). ivb
+#: src/date.c:448
+#, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"manca un «+» al davant de l’argument %s; Quan useu una opció per a "
+"especificar dates, cal que qualsevol argument noâ€opció siga una cadena de "
+"format que comence per «+»."
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "no s’ha pogut establir la data"
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "la data %s està fora de rang"
+
+#: src/dd.c:404
+#, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Forma d’ús: %s [OPERAND]…\n"
+" o bé: %s OPCIÓ\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"Còpia un fitxer, convertint i formatant les dades d’acord amb els operands.\n"
+"\n"
+" bs=OCTETS Fa que «ibs=OCTETS» i «obs=OCTETS».\n"
+" cbs=OCTETS Converteix aquest nombre d’OCTETS alhora.\n"
+" conv=CONVERSIONS Converteix el fitxer d’acord amb la llista de\n"
+" símbols separats per comes.\n"
+" count=BLOCS Només còpia aquest nombre de BLOCS de "
+"l’entrada.\n"
+" ibs=OCTETS Llegeix aquest nombre d’OCTETS alhora.\n"
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=FITXER Llegeix del FITXER en lloc de ferâ€ho de "
+"l’entrada\n"
+" estàndard.\n"
+" iflag=SENYALADOR Llegeix d’acord amb la llista de símbols "
+"separats\n"
+" per comes.\n"
+" obs=OCTETS Escriu aquest nombre d’OCTETS alhora.\n"
+" of=FITXER Escriu al FITXER en lloc de ferâ€ho a l’eixida\n"
+" estàndard.\n"
+" oflag=SENYALADOR Escriu d’acord amb la llista de símbols "
+"separats\n"
+" per comes.\n"
+" seek=BLOCS Salta aquest nombre de BLOCS de mida «obs» al\n"
+" principi de l’eixida.\n"
+" skip=BLOCS Salta aquest nombre de BLOCS de mida «ibs» al\n"
+" principi de l’entrada.\n"
+" status=noxfer No mostra l’estadística de la tranferència.\n"
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"BLOCS i OCTETS poden estar seguits dels sufixos multiplicatius següents\n"
+"(prefix valor): xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000,\n"
+"M 1024*1024, GB 1000*1000*1000, G 1024*1024*1024, i així per a T, P, E, Z, "
+"Y.\n"
+"\n"
+"Cada símbol de CONVERSIONS pot ser:\n"
+"\n"
+
+# Les més llargues són unblock, notrunc, noerror. ivb
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii D’EBCDIC a ASCII.\n"
+" ebcdic D’ASCII a EBCDIC.\n"
+" ibm D’ASCII a EBCDIC alternat.\n"
+" block Emplena amb espais cada registre terminat en nova línia fins "
+"que\n"
+" tinga la mida «cbs».\n"
+" unblock Substitueix els espais del final de cada registre de mida "
+"«cbs»\n"
+" per un caràcter de nova línia.\n"
+" lcase Transforma les majúscules en minúscules.\n"
+
+# Les més llargues són unblock, notrunc, noerror. ivb
+#: src/dd.c:445
+#, fuzzy
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+" nocreat No crea el fitxer d’eixida.\n"
+" excl Falla si el fitxer d’eixida ja existeix.\n"
+" notrunc No trunca el fitxer d’eixida.\n"
+" ucase Transforma les minúscules en majúscules.\n"
+" swab Intercanvia cada parell d’octets de l’entrada.\n"
+" noerror Continua després d’un error de lectura.\n"
+" sync Emplena cada bloc d’entrada amb NULs fins a la mida «ibs»; "
+"quan\n"
+" s’empra amb «block» o «unblock», emplena els blocs amb "
+"espais\n"
+" en lloc de NULs.\n"
+" fdatasync Escriu físicament les dades del fitxer d’eixida abans de\n"
+" terminar.\n"
+" fsync El mateix, però també n’escriu les metadades.\n"
+
+# Les més llargues són unblock, notrunc, noerror. ivb
+#: src/dd.c:452
+#, fuzzy
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+" nocreat No crea el fitxer d’eixida.\n"
+" excl Falla si el fitxer d’eixida ja existeix.\n"
+" notrunc No trunca el fitxer d’eixida.\n"
+" ucase Transforma les minúscules en majúscules.\n"
+" swab Intercanvia cada parell d’octets de l’entrada.\n"
+" noerror Continua després d’un error de lectura.\n"
+" sync Emplena cada bloc d’entrada amb NULs fins a la mida «ibs»; "
+"quan\n"
+" s’empra amb «block» o «unblock», emplena els blocs amb "
+"espais\n"
+" en lloc de NULs.\n"
+" fdatasync Escriu físicament les dades del fitxer d’eixida abans de\n"
+" terminar.\n"
+" fsync El mateix, però també n’escriu les metadades.\n"
+
+#: src/dd.c:459
+#, fuzzy
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+"\n"
+"Cada símbol SENYALADOR pot ser:\n"
+"\n"
+" append Mode de només addició (només té sentit per a l’eixida).\n"
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr " direct Empra E/S directa per a les dades.\n"
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr " direct Empra E/S directa per a les dades.\n"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr " dsync Empra E/S sincronitzada per a les dades.\n"
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr " sync El mateix, però també per a les metadades.\n"
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr " nonblock Empra E/S no blocadora.\n"
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr " noctty No assigna el fitxer com a terminal de control.\n"
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr " nofollow No segueix els enllaços simbòlics.\n"
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr " binary Empra E/S binària per a les dades.\n"
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr " text Empra E/S textual per a les dades.\n"
+
+# La substitució pot ser «USR1» o «INFO». ivb
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+"\n"
+"Enviar un senyal %s a un procés «dd» en marxa fa que mostre una estadística\n"
+"d’entrada/eixida a l’eixida estàndard d’errors, i que després continue\n"
+"copiant.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 registres llegits\n"
+" 18335302+0 registres escrits\n"
+" 9387674624 octets (9,4 GB) copiats, 34,6279 segons, 271 MB/s\n"
+"\n"
+"Les opcions són:\n"
+"\n"
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+"%<PRIuMAX>+%<PRIuMAX> registres llegits\n"
+"%<PRIuMAX>+%<PRIuMAX> registres escrits\n"
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "1 registre truncat\n"
+msgstr[1] "%<PRIuMAX> registres truncats\n"
+
+#: src/dd.c:565
+#, fuzzy, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] "1 octet (1 B) copiat"
+msgstr[1] "%<PRIuMAX> octets (%s) copiats"
+
+# Es refereix a octets per segon. ivb
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr "Infinits B"
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, fuzzy, c-format
+msgid ", %g s, %s/s\n"
+msgstr ", %g segon, %s/s\n"
+
+# Usa quote(). ivb
+# Condició d'error. ivb
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "en tancar el fitxer d’entrada %s"
+
+# Usa quote(). ivb
+# Condició d'error. ivb
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "en tancar el fitxer d’eixida %s"
+
+# Usa quote(). ivb
+# Condició d'error. ivb
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "en escriure %s"
+
+# Usa quote(). ivb
+#: src/dd.c:886
+#, c-format
+msgid "unrecognized operand %s"
+msgstr "l’operand %s no és reconegut"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "la conversió no és vàlida: %s"
+
+#: src/dd.c:900
+#, c-format
+msgid "invalid input flag: %s"
+msgstr "el senyalador d’entrada no és vàlid: %s"
+
+#: src/dd.c:903
+#, c-format
+msgid "invalid output flag: %s"
+msgstr "el senyalador d’eixida no és vàlid: %s"
+
+#: src/dd.c:906
+#, c-format
+msgid "invalid status flag: %s"
+msgstr "el senyalador d’estat no és vàlid: %s"
+
+# Usa quote() en els 2 args. ivb
+#: src/dd.c:942
+#, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "l’operand %s=%s no és reconegut"
+
+# Usa quote(). ivb
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "el número %s no és vàlid"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr "no es poden combinar «ascii», «ebcdic» o «ibm»"
+
+# Són noms de senyaladors. ivb
+#: src/dd.c:973
+#, c-format
+msgid "cannot combine block and unblock"
+msgstr "no es poden combinar «block» i «unblock»"
+
+# Són noms de senyaladors. ivb
+#: src/dd.c:975
+#, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "no es poden combinar «lcase» i «ucase»"
+
+# Són noms de senyaladors. ivb
+#: src/dd.c:977
+#, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "no es poden combinar «excl» i «nocreat»"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"avís: s’evita un error del nucli en lseek() per al fitxer «%s» de tipus "
+"mt_type=0x%0lx —vegeu <sys/mtio.h> per a la llista de tipus"
+
+# El primer hauria de ser «no *es pot* desplaçar». ivb
+#: src/dd.c:1180 src/dd.c:1237
+#, c-format
+msgid "%s: cannot seek"
+msgstr "%s: no s’ha pogut desplaçar"
+
+# Usa quote(). ivb
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr "s’ha desbordat el desplaçament en llegir el fitxer %s"
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr ""
+"avís: després de la lectura fallada el desplaçament de fitxer no és "
+"acceptable"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr "al final no s’ha pogut evitar l’error del nucli"
+
+# Usa quote(). ivb
+# Condició d'error. ivb
+#: src/dd.c:1376
+#, c-format
+msgid "setting flags for %s"
+msgstr "en establir els senyaladors de %s"
+
+# Usa quote. ivb
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr "ha fallat fdatasync() sobre %s"
+
+# Usa quote(). ivb
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr "ha fallat fsync() sobre %s"
+
+# Usa quote(). ivb
+# Condició d'error. ivb
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "en obrir %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+"el desplaçament és massa gran: no es pot truncar a una longitud de %"
+"<PRIuMAX> blocs de %lu octets"
+
+# Usa quote(). ivb
+# Condició d'error. ivb
+#: src/dd.c:1730
+#, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "en truncar a %<PRIuMAX> octets al fitxer d’eixida %s"
+
+# FIXME: This arrangement is extremely language-dependent. ivb
+# Ehemmm... AARGHHFSSS!! ivb
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "S. fitxers Tipus"
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "S. fitxers "
+
+# Informació sobre inodes. ivb
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " Nodesâ€i En ús Lliures %%Ús"
+
+# Format humà 2. ivb
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Mida En ús Lliure %%Ús"
+
+# Format humà 1. ivb
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Mida En ús Lliure %%Ús"
+
+# Format portable 1. ivb
+#: src/df.c:165
+#, fuzzy, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " Blocs %4s En ús Lliures Cabuda"
+
+# Format habitual. ivb
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " Blocs %4s En ús Lliures %%Ús"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Muntat a\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "no s’ha pogut obtenir el directori actual"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "no s’ha pogut canviar al directori %s"
+
+# Usa quote(). ivb
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "ha fallat stat() sobre el directori actual (ara %s)"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"Mostra informació sobre el sistema de fitxers on resideix cada FITXER, o "
+"(per\n"
+"defecte) informació sobre tots els sistemes de fitxers.\n"
+"\n"
+
+# Crec que «virtual» capta millor el significat de «dummy». ivb
+#: src/df.c:749
+#, fuzzy
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all Inclou els sistemes de fitxers virtuals.\n"
+" -B, --block-size=MIDA Empra blocs de MIDA octets.\n"
+" -h, --human-readable Mostra les mides en un format llegible per als\n"
+" humans (per exemple: 1K 234M 2G).\n"
+" -H, --si El mateix, però empra potències de 1000, no de 1024.\n"
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes Llista informació sobre els nodes índex en lloc de\n"
+" sobre l’ús de blocs.\n"
+" -k Equival a «--block-size=1K».\n"
+" -l, --local Limita el llistat als sistemes de fitxers locals.\n"
+" --no-sync No invoca sync() abans d’obtenir la informació sobre\n"
+" l’ús (per defecte).\n"
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability Empra el format d’eixida POSIX.\n"
+" --sync Invoca sync() abans d’obtenir la informació sobre "
+"l’ús.\n"
+" -t, --type=TIPUS Limita el llistat als sistemes de fitxers del TIPUS\n"
+" especificat.\n"
+" -T, --print-type Mostra el tipus de sistema de fitxers.\n"
+" -x, --exclude-type=TIPUS\n"
+" Limita el llistat als sistemes de fitxers que no "
+"siguen\n"
+" del TIPUS especificat.\n"
+" -v (No es té en compte.)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"MIDA pot ser una de les següents: kB 1000, K 1024, MB 1000*1000, M "
+"1024*1024,\n"
+"i així per a G, T, P, E, Z, Y. També poden anar precedides d’un número "
+"enter.\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr "l’opció «--kilobytes» està desaprovada; useu «-k» al seu lloc"
+
+# Usa quote(). ivb
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "s’ha seleccionat i exclós alhora el tipus de sistema de fitxers %s"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "avís: "
+
+#: src/df.c:943
+#, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%sno es pot llegir la taula de sistemes de fitxers muntats"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Foma d’ús: %s [OPCIÓ]… [FITXER]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Produeix ordres per a establir la variable d’entorn LS_COLORS.\n"
+"\n"
+"Opcions per a determinar el format de l’eixida:\n"
+" -b, --sh, --bourne-shell\n"
+" Produeix codi destinat a l’intèrpret Bourne per\n"
+" establir LS_COLORS.\n"
+" -c, --csh, --c-shell Produeix codi destinat a l’intèrpret C per\n"
+" establir LS_COLORS.\n"
+" -p, --print-database Mostra els valors per defecte.\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"Si s’especifica un FITXER, aquest es llegeix per a determinar quins colors\n"
+"emprar per a quins tipus de fitxer i extensions. Altrament, s’empra una "
+"base\n"
+"de dades precompilada. Proveu «dircolors --print-database» per a obtenir\n"
+"detalls sobre el format d’aquests fitxers.\n"
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s:%lu: la línia no és vàlida; manca el segon component"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu: la paraula clau «%s» no és reconeguda"
+
+# Es refereix a la base de dades interna de dircolors. ivb
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<interna>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"l’opció que mostra la base de dades interna de «dircolors» i la que "
+"selecciona una sintaxi d’intèrpret són mútuament excloents"
+
+# Açò s'imprimeix després d'un missatge d'error. ivb
+# Només es pot admetre un operand fitxer. ivb
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr "No es pot combinar un operand fitxer amb «--print-database» (-p)."
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr ""
+"no hi ha variable d’entorn SHELL ni s’ha indicat cap opció de tipus "
+"d’intèrpret"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Forma d’ús: %s NOM\n"
+" o bé: %s OPCIÓ\n"
+
+# FIXME: This is not true: `dirname foo/' prints `.'. ivb
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"Mostra el NOM sense el «/component» final; si el NOM no conté cap «/», "
+"mostra\n"
+"«.» (indicant així el directori actual).\n"
+"\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+"\n"
+"Exemples:\n"
+" «%s /usr/bin/sort» Mostra «/usr/bin».\n"
+" «%s stdio.h» Mostra «.».\n"
+
+#: src/du.c:279 src/wc.c:108
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Forma d’ús: %s [OPCIÓ]… [FITXER]…\n"
+" o bé: %s [OPCIÓ]… --files0-from=FITXER\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"Resumeix l’ús de disc de cada FITXER, de forma recursiva per als "
+"directoris.\n"
+"\n"
+
+#: src/du.c:290
+#, fuzzy
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+" -a, --all Mostra recomptes per a tots els fitxers, no només "
+"per\n"
+" als directoris.\n"
+" --apparent-size Mostra les mides aparents en lloc de l’ús de disc;\n"
+" tot i que la mida aparent sol ser menor, pot ser "
+"major\n"
+" pels forats dels fitxers dispersos, per fragmentació\n"
+" interna, blocs indirectes…\n"
+" -B, --block-size=MIDA Empra blocs de MIDA octets.\n"
+" -b, --bytes Equival a «--apparent-size --block-size=1».\n"
+" -c, --total Produeix un recompte total.\n"
+" -D, --dereference-args\n"
+" Segueix cada FITXER que siga un enllaç simbòlic.\n"
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+#, fuzzy
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+" --files0-from=FITXER\n"
+" Resumeix l’ús de disc dels fitxers els noms dels "
+"quals\n"
+" es troben llistats al FITXER, terminats pel caràcter\n"
+" NUL.\n"
+" -H Com «--si», però mostra un avís; aviat serà "
+"equivalent\n"
+" a «--dereference-args» (-D).\n"
+" -h, --human-readable Mostra les mides en un format llegible per als\n"
+" humans (per exemple: 1K 234M 2G).\n"
+" -H, --si El mateix, però empra potències de 1000, no de 1024\n"
+" (opció desaprovada).\n"
+" -k Equival a «--block-size=1K».\n"
+" -l, --count-links Compta les mides més d’una volta en el cas "
+"d’enllaços\n"
+" forts.\n"
+" -m Equival a «--block-size=1M».\n"
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference Segueix tots els enllaços simbòlics.\n"
+" -P, --no-dereference No segueix cap enllaç simbòlic (per defecte).\n"
+" -0, --null Termina cada línia d’eixida amb un octet 0 en lloc "
+"d’un\n"
+" caràcter de nova línia.\n"
+" -S, --separate-dirs No inclou la mida dels subdirectoris.\n"
+" -s, --summarize Només mostra un total per cada argument.\n"
+
+#: src/du.c:323
+#, fuzzy
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system Exclou els directoris que es troben en altres\n"
+" sistemes de fitxers diferents.\n"
+" -X FITXER, --exclude-from=FITXER\n"
+" Exclou aquells fitxers que coincideixen amb algun "
+"dels\n"
+" patrons continguts al FITXER.\n"
+" --exclude=PATRÓ Exclou aquells fitxers que coincideixen amb el "
+"PATRÓ.\n"
+" --max-depth=N Només mostra el total d’un directori (o fitxer, amb\n"
+" «--all») si es troba N nivells o menys per sota de\n"
+" l’argument de la línia d’ordres; «--max-depth=0»\n"
+" equival a «--summarize».\n"
+
+# «du» significa «disc usage», què OO tenen a veure aquestes opcions? ivb
+# More creeping featurism. ivb
+#: src/du.c:332
+#, fuzzy
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+" --time Mostra la data de modificació més recent de tots els\n"
+" fitxers del directori i subdirectoris.\n"
+" --time=DATA Mostra la DATA indicada en lloc de la de "
+"modificació:\n"
+" accés (amb «atime», «access» o «use») o canvi "
+"d’estat\n"
+" (amb «ctime» o «status»).\n"
+" --time-style=ESTIL\n"
+" Mostra les dates emprant l’ESTIL indicat: full-iso,\n"
+" long-iso, iso, +FORMAT; FORMAT s’interpreta com en\n"
+" «date».\n"
+
+# Els 3 fan el mateix ús. ivb
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "total"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+"avís: useu «--si», no «-H»; el significat de l’opció «-H» canviarà aviat al "
+"mateix que «--dereference-args» (-D)"
+
+# Usa quote(). ivb
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "la profunditat màxima %s no és vàlida"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr "l’opció «--megabytes» està desaprovada; useu «-m» al seu lloc"
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "no es pot resumir les entrades i mostrarâ€ne els continguts alhora"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "avís: resumir equival a utilitzar «--max-depth=0»"
+
+# conflicts -> no compatible? jm
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "avís: resumir no és compatible amb «--max-depth=%lu»"
+
+# Açò s'imprimeix després d'un missatge d'error. ivb
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr "No es poden combinar els operands fitxer amb «--files0-from»."
+
+# Usa quote(). ivb
+#: src/du.c:960 src/wc.c:662
+#, c-format
+msgid "cannot read file names from %s"
+msgstr "no s’han pogut llegir els noms de fitxer de %s"
+
+# Usa quote(). ivb
+#: src/du.c:1000 src/du.c:1003
+msgid "invalid zero-length file name"
+msgstr "el nom buit de fitxer no és vàlid"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Forma d’ús: %s [OPCIÓ]… [CADENA]…\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+"Fa eco de cada CADENA a l’eixida estàndard.\n"
+"\n"
+" -n No genera el caràcter final de nova línia.\n"
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+" -e Habilita la interpretació de seqüències d’escapada "
+"amb\n"
+" barra invertida (per defecte).\n"
+" -E Inhabilita la interpretació de seqüències d’escapada\n"
+" amb barra invertida.\n"
+
+# \0NNN és l'entrada més llarga. ivb
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"Si s’especifica «-e» es reconeixen les seqüències següents:\n"
+"\n"
+" \\0NNN El caràcter el codi ASCII del qual és NNN (en octal).\n"
+" \\\\ Barra invertida.\n"
+" \\a Alarma (BEL).\n"
+" \\b Retrocés.\n"
+
+# \0NNN és l'entrada més llarga. ivb
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c Elimina el caràcter final de nova línia.\n"
+" \\f Salt de pàgina.\n"
+" \\n Nova línia.\n"
+" \\r Retorn de carro.\n"
+" \\t Tabulació horitzontal.\n"
+" \\v Tabulació vertical.\n"
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Forma d’ús: %s [OPCIÓ]… [-] [NOM=VALOR]… [ORDRE [ARG]…]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Estableix cada NOM a VALOR a l’entorn i executa l’ORDRE.\n"
+"\n"
+" -i, --ignore-environment\n"
+" Parteix d’un entorn buit.\n"
+" -u, --unset=NOM Elimina la variable NOM de l’entorn.\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"Un «-» a soles implica «-i». Si no s’indica l’ORDRE, mostra l’entorn\n"
+"resultant.\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Converteix els caràcters de tabulació de cada FITXER a espais, i escriu el\n"
+"resultat a la sortida estàndard. Sense FITXER, o quan FITXER és «-», "
+"llegeix\n"
+"l’entrada estàndard.\n"
+"\n"
+
+# Hau! ivb
+# L'explicació d'«--initial» vé de la plana info. ivb
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial Només converteix les tabulacions que es troben a\n"
+" prinicipi de línia.\n"
+" -t, --tabs=NÚMERO Tabula a una distància de NÚMERO caràcters, en lloc\n"
+" de 8.\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+" -t, --tabs=LLISTA Especifica una llista de posicions explícites per "
+"cada\n"
+" tabulació, separades per comes.\n"
+
+# És un enter correcte però massa gran. ivb
+# Usa quote(). ivb
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr "la distància de tabulació %s és massa gran"
+
+# Usa quote(). ivb
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "la distància de tabulació conté caràcters no vàlids: %s"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "la distància de tabulació no pot ser 0"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "les distàncies de tabulació han de ser ascendents"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, c-format
+msgid "input line is too long"
+msgstr "la línia d’entrada és massa llarga"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Forma d’ús: %s EXPRESSIÓ\n"
+" o bé: %s OPCIÓ\n"
+
+# El més llarg és «substr CADENA POS LONGITUD». ivb
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"\n"
+"Mostra el valor de l’EXPRESSIÓ a l’eixida estàndard. A sota, una línia en\n"
+"blanc separa grups amb precedència creixent. L’EXPRESSIÓ pot ser:\n"
+"\n"
+" ARG1 | ARG2 ARG1 si no és nul ni 0, ARG2 altrament.\n"
+"\n"
+" ARG1 & ARG2 ARG1 si cap argument és nul ni 0, 0 "
+"altrament.\n"
+
+# El més llarg és «substr CADENA POS LONGITUD». ivb
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"\n"
+" ARG1 < ARG2 ARG1 és menor que ARG2.\n"
+" ARG1 <= ARG2 ARG1 és menor o igual que ARG2.\n"
+" ARG1 = ARG2 ARG1 és igual a ARG2.\n"
+" ARG1 != ARG2 ARG1 no és igual a ARG2.\n"
+" ARG1 >= ARG2 ARG1 és major o igual que ARG2.\n"
+" ARG1 > ARG2 ARG1 és major que ARG2.\n"
+
+# El més llarg és «substr CADENA POS LONGITUD». ivb
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+"\n"
+" ARG1 + ARG2 Suma aritmètica d’ARG1 i ARG2.\n"
+" ARG1 - ARG2 Resta aritmètica d’ARG1 i ARG2.\n"
+
+# El més llarg és «substr CADENA POS LONGITUD». ivb
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+"\n"
+" ARG1 * ARG2 Producte aritmètic d’ARG1 i ARG2.\n"
+" ARG1 / ARG2 Quocient aritmètic d’ARG1 entre ARG2.\n"
+" ARG1 % ARG2 Residu aritmètic d’ARG1 entre ARG2.\n"
+
+# El més llarg és «substr CADENA POS LONGITUD». ivb
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"\n"
+" CADENA : EXPREG Resultat d’aplicar l’expressió regular "
+"EXPREG\n"
+" sobre la CADENA.\n"
+"\n"
+" match CADENA EXPREG Equival a «CADENA : EXPREG».\n"
+" substr CADENA POS LONGITUD Subâ€cadena de CADENA, comptant POS des d’1.\n"
+" index CADENA CARÀCTERS Ãndex de CADENA on hi ha algun CARÀCTER, o "
+"0.\n"
+" length STRING Longitud de la CADENA.\n"
+
+# El més llarg és «substr CADENA POS LONGITUD». ivb
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+" + COMPONENT Interpreta el COMPONENT com a una cadena,\n"
+" encara que siga una paraula clau com "
+"«match»\n"
+" o un operador com «/».\n"
+" ( EXPRESSIÓ ) Valor de l’EXPRESSIÓ.\n"
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"Teniu en compte que molts operadors han de ser escapats o entrecometats als\n"
+"intèrprets d’ordres. Les comparacions són aritmètiques entre números,\n"
+"lexicogràfiques en altre cas. Les comparacions amb patrons retornen la "
+"cadena\n"
+"coincident entre «\\(» i «\\)» o la cadena buida; si no s’empra «\\(» i "
+"«\\)»,\n"
+"retornen el nombre de caràcters coincidents o 0.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+"\n"
+"L’estat d’eixida és 0 si l’expressió no és nuŀla ni 0; 1 si l’expressió és\n"
+"nuŀla o 0; 2 si l’EXPRESSIÓ no és vàlida sintàcticament; 3 si ocorre un "
+"error.\n"
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "error de sintaxi"
+
+#: src/expr.c:468 src/ptx.c:292
+#, c-format
+msgid "error in regular expression matcher"
+msgstr "error al cercador d’expressions regulars"
+
+# És un missatge d'error (expr a + 3). ivb
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "l’argument no és numèric"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "divisió entre zero"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Forma d’ús: %s [NÚMERO]…\n"
+" o bé: %s OPCIÓ\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"Mostra els factors primers de cada NÚMERO.\n"
+"\n"
+
+#: src/factor.c:85
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+"Mostra els factors primers de cada NÚMERO enter especificat. Si no "
+"s’indica\n"
+"cap argument a la línia d’ordres, es llegiran de l’entrada estàndard.\n"
+
+# És un enter correcte però massa gran. ivb
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s és massa gran"
+
+# Usa quote(). ivb
+#: src/factor.c:158
+#, c-format
+msgid "%s is not a valid positive integer"
+msgstr "%s no és un número enter positiu vàlid"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Forma d’ús: %s [-DÃGITS] [OPCIÓ]… [FITXER]…\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"Reformata els paràgrafs de cada FITXER, i escriu a la sortida estàndard.\n"
+"Sense FITXER, o si el FITXER és «-», llegeix l’entrada estàndard.\n"
+"\n"
+
+# buscar una traducció per refill
+# Així queda prou clar, d'acord amb l'info. ivb
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin Preserva la indentació de les dues primeres línies.\n"
+" -p, --prefix=CADENA Només combina les línies que tenen la CADENA com a\n"
+" prefix, tornantâ€la a posar al principi de les línies\n"
+" reformatades.\n"
+" -s, --split-only Només separa les línies llargues, no combina les "
+"línies\n"
+" curtes.\n"
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph\n"
+" La indentació de la primera línia és diferent de la "
+"de\n"
+" la segona.\n"
+" -u, --uniform-spacing Un espai entre paraules, dos entre frases.\n"
+" -w, --width=AMPLADA Indica l’AMPLADA màxima de la línia (per defecte "
+"75\n"
+" columnes).\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+"l’opció «%c» no és vàlida; «-AMPLADA» només es reconeix quan és la primera\n"
+"opció; useu «-w AMPLADA» al seu lloc"
+
+# Usa quote(). ivb
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr "l’amplada no és vàlida: %s"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"Ajusta les línies de cada FITXER (per defecte l’entrada estàndard), i "
+"escriu\n"
+"a la sortida estàndard.\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes Compta octets, i no columnes.\n"
+" -s, --spaces Només parteix les línies als espais.\n"
+" -w, --width=AMPLADA Indica el nombre de columnes, en lloc de 80.\n"
+
+# Usa quote(). ivb
+#: src/fold.c:291 src/pr.c:841
+#, c-format
+msgid "invalid number of columns: %s"
+msgstr "el nombre de columnes no és vàlid: %s"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Escriu les 10 primeres línies de cada FITXER a la sortida estàndard. Amb "
+"més\n"
+"d’un fitxer, els precedeix amb una capçalera amb el nom del fitxer. Sense "
+"cap\n"
+"FITXER, o quan FITXER és «-», llegeix l’entrada estàndard.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+" -c, --bytes=[-]N Escriu els N primers octets de cada fitxer; amb un "
+"«-»\n"
+" al davant, escriu tots els octets de cada fitxer\n"
+" exceptuantâ€ne els darrers N.\n"
+" -n, --lines=[-]N Escriu les primeres N línies en lloc de les primeres\n"
+" 10; amb un «-» al davant, escriu totes les línies de\n"
+" cada fitxer exceptuantâ€ne les darreres N.\n"
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent Omet les capçaleres amb els noms dels fitxers.\n"
+" -v, --verbose Sempre escriu les capçaleres amb els noms dels "
+"fitxers.\n"
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"N pot tenir un sufix multiplicador: «b» per a 512 octets, «k» per a 1024, "
+"«m»\n"
+"per a 1024*1024.\n"
+
+# uniq no usa quote(). ivb
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "error en llegir %s"
+
+# uniq no usa quote(). ivb
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "error en escriure %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr "%s: el fitxer ha minvat massa"
+
+#: src/head.c:230 src/head.c:1046
+#, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s: el nombre d’octets és massa gran"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: no s’ha pogut desplaçar fins a la posició original"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: no s’ha pogut moure fins al desplaçament %s"
+
+# Usa quote(). ivb
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "no s’ha pogut recoŀlocar el punter del fitxer de %s"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s és tan gran que no es pot representar"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "el nombre de línies"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "el nombre d’octets"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "el nombre de línies no és vàlid"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "el nombre d’octets no és vàlid"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "l’opció «%c» no és vàlida"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Forma d’ús: %s\n"
+" o bé: %s OPCIÓ\n"
+"Mostra l’identificador numèric (en hexadecimal) de l’estació actual.\n"
+"\n"
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Forma d’ús: %s [NOM]\n"
+" o bé: %s OPCIÓ\n"
+"Mostra o estableix el nom d’estació del sistema actual.\n"
+"\n"
+
+# Usa quote(). ivb
+#: src/hostname.c:103
+#, c-format
+msgid "cannot set name to %s"
+msgstr "no s’ha pogut establir el nom a %s"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr "no es pot establir el nom d’estació; el sistema no ho admet"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "no s’ha pogut determinar el nom d’estació"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Forma d’ús: %s [OPCIÓ]… [NOM_USUARI]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Mostra informació sobre NOM_USUARI, o sobre l’usuari actual.\n"
+"\n"
+" -a No es té en compte, s’accepta per compatibilitat amb\n"
+" altres versions.\n"
+" -g, --group Només mostra l’identificador efectiu de grup.\n"
+" -G, --groups Mostra tots els identificadors de grup.\n"
+" -n, --name Mostra un nom en lloc d’un número, per a «-ugG».\n"
+" -r, --real Mostra l’identificador real en lloc de l’efectiu, "
+"per\n"
+" «-ugG».\n"
+" -u, --user Només mostra l’identificador efectiu d’usuari.\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"Sense cap OPCIÓ, mostra un conjunt útil d’informació d’identificació.\n"
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "no es pot mostrar només l’usuari i només el grup"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr "no es pot mostrar només noms o ID reals al format per defecte"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: l’usuari no existeix"
+
+#: src/id.c:205
+#, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "no s’ha pogut trobar el nom de l’ID d’usuari %lu"
+
+#: src/id.c:229
+#, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "no s’ha pogut trobar el nom de l’ID de grup %lu"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "no s’ha pogut obtenir la llista de grups suplementaris"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " grups="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr "no es pot emprar l’opció «--strip» en instaŀlar un directori"
+
+# Es refereix a especificar l'opció «--target-directory». ivb
+#: src/install.c:321
+#, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "no es pot especificar el directori destí en instaŀlar un directori"
+
+# Els 2 usen quote(). ivb
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "el mode %s no és vàlid"
+
+# Usa quote(). ivb
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "no s’ha pogut canviar el propietari de %s"
+
+# Usa quote(). ivb
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "no s’han pogut establir les dates de %s"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "ha fallat la crida al sistema fork()"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "no s’ha pogut executar «strip»"
+
+# Usa quote(). ivb
+# Condició d'error. ivb
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "en escriure %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+# Usa quote(). ivb
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "l’usuari %s no és vàlid"
+
+# Els 2 usen quote(). ivb
+# És un missatge informatiu. ivb
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "s’està creant el directori %s"
+
+#: src/install.c:651
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Forma d’ús: %s [OPCIÓ]… [-T] ORIGEN DESTÃ\n"
+" o bé: %s [OPCIÓ]… ORIGEN… DIRECTORI\n"
+" o bé: %s [OPCIÓ]… -t DIRECTORI ORIGEN…\n"
+" o bé: %s [OPCIÓ]… -d DIRECTORI…\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"Als tres primers formats es còpia un ORIGEN a un DESTà o diversos ORIGENs "
+"al\n"
+"DIRECTORI existent, i se n’estableixen els permisos i el propietari o grup.\n"
+"Al quart format es creen tots els components de cada DIRECTORI indicat.\n"
+"\n"
+
+#: src/install.c:667
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup[=CONTROL]\n"
+" Crea una còpia de seguretat de cada fitxer destí\n"
+" existent.\n"
+" -b Com «--backup», però no accepta cap argument.\n"
+" -c (No es té en compte.)\n"
+" -d, --directory Tracta tots els arguments com a noms de directori; "
+"crea\n"
+" tots els components de cada directori especificat.\n"
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D Crea tots els components que porten al DESTÃ excepte\n"
+" el darrer, i còpia ORIGEN a DESTÃ.\n"
+" -g, --group=GRUP Estableix la propietat de grup a GRUP, en comptes\n"
+" d’emprar el grup actual del procés.\n"
+" -m, --mode=MODE Estableix els permisos a MODE (com fa «chmod»), en "
+"lloc\n"
+" d’emprar «rwxr-xr-x».\n"
+" -o, --owner=OWNER Estableix el propietari (només per al superusuari).\n"
+
+#: src/install.c:681
+#, fuzzy
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps\n"
+" Aplica les dates d’accés i modificació dels fitxers\n"
+" ORIGEN als fitxers destí corresponents.\n"
+" -s, --strip Elimina les taules de símbols.\n"
+" -S, --suffix=SUFIX Reemplaça el sufix habitual de les còpies de\n"
+" seguretat.\n"
+" -t, --target-directory=DIRECTORI\n"
+" Còpia cada ORIGEN al DIRECTORI.\n"
+" -T, --no-target-directory\n"
+" Tracta el DESTÃ com a un fitxer normal.\n"
+" -v, --verbose Mostra el nom de cada directori segons es van "
+"creant.\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"El sufix de còpia de seguretat és «~», si no s’estableix amb «--suffix» o "
+"amb\n"
+"la variable SIMPLE_BACKUP_SUFFIX. El mètode de control de versions es pot\n"
+"establir amb l’opció «--backup» o fent servir la variable d’entorn\n"
+"VERSION_CONTROL. Es poden emprar aquests valors:\n"
+"\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"Escriu una línia a la sortida estàndard per cada parell de línies de "
+"l’entrada\n"
+"que continguin idèntics camps d’unió. El camp per defecte és el primer,\n"
+"delimitat per espais en blanc. Si o FITXER1 o FITXER2 (no els dos) és «-»,\n"
+"llegeix l’entrada estàndard.\n"
+"\n"
+" -a NUMFITXER Escriu les línies desaparellades del fitxer "
+"NUMFITXER,\n"
+" «1» per al FITXER1 o «2» per al FITXER2.\n"
+" -e CADENA Reemplaça els camps que manquen amb CADENA.\n"
+
+#: src/join.c:147
+#, fuzzy
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case No té en compte les majúscules i minúscules en "
+"comparar\n"
+" els camps.\n"
+" -j CAMP Equival a «-1 CAMP -2 CAMP».\n"
+" -o FORMAT Empra el FORMAT per a construir la línia de sortida.\n"
+" -t CARÀCTER Empra el CARÀCTER com a separador dels camps "
+"d’entrada\n"
+" i de sortida.\n"
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v NUMFITXER Com «-a NUMFITXER», però elimina les línies\n"
+" emparellades.\n"
+" -1 CAMP Uneix respecte aquest CAMP del fitxer 1.\n"
+" -2 CAMP Uneix respecte aquest CAMP del fitxer 2.\n"
+
+#: src/join.c:160
+#, fuzzy
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"Tret que especifiqueu «-t CARÀCTER», els separadors de camp són espais en\n"
+"blanc i no es tenen en compte; si no el separador és el CARÀCTER. Cada "
+"CAMP\n"
+"s’identifica amb un número, comptant des de 1. FORMAT és una especifiació, "
+"o\n"
+"diverses separades per espais o comes, del tipus «NUMFITXER.CAMP» o «0». "
+"El\n"
+"FORMAT per defecte escriu el camp d’unió, els camps restants del FITXER1 i "
+"els\n"
+"camps restants del FITXER2, tots separats pel CARÀCTER.\n"
+"\n"
+"Important: FITXER1 i FITXER2 han d’estar ordenats per llurs camps d’unió.\n"
+
+#: src/join.c:617 src/join.c:812
+#, c-format
+msgid "invalid field number: %s"
+msgstr "el número de camp «%s» no és vàlid"
+
+# Ambdues usen quote(). ivb
+#: src/join.c:638 src/join.c:647
+#, c-format
+msgid "invalid field specifier: %s"
+msgstr "l’especificació de camp %s no és vàlida"
+
+# Usa quote(). ivb
+# No ho pose al davant pq tb hi apareix el número de camp. ivb
+#: src/join.c:654
+#, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "el número de fitxer a l’especificació de camp no és vàlid: %s"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr "els camps d’unió %lu i %lu no són compatibles"
+
+# Hau! ivb
+# I damunt no descriu bé l'error. ivb
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+"s’han indicat dues cadenes distintes per a reemplaçar els camps mancants"
+
+# No és necessàriament una tabulació, ho diu info. ivb
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr "el separador és buit"
+
+# Ambdues usen quote(). ivb
+# No és necessàriament una tabulació, ho diu info. ivb
+#: src/join.c:870 src/sort.c:3031
+#, c-format
+msgid "multi-character tab %s"
+msgstr "%s és un separador multicaràcter"
+
+# No és necessàriament una tabulació, ho diu info. ivb
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr "els separadors no són compatibles"
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "ambdós fitxers no poden ser l’entrada estàndard"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"Forma d’ús: %s [-s SENYAL | -SENYAL] PID…\n"
+" o bé: %s -l [SENYAL]…\n"
+" o bé: %s -t [SENYAL]…\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+"Envia senyals als processos, o llista els senyals.\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+" -s, --signal=SENYAL, -SENYAL\n"
+" Especifica el nom o número del senyal a enviar.\n"
+" -l, --list Llista els noms dels senyals, o converteix els noms "
+"de\n"
+" senyals a números i a la inversa.\n"
+" -t, --table Mostra una taula amb informació sobre els senyals.\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+"\n"
+"SENYAL pot ser un nom de senyal com «HUP», un número de senyal com «1», o\n"
+"l’estat d’eixida d’un procés terminat per un senyal. PID és un número "
+"enter;\n"
+"si és negatiu identifica un grup de processos.\n"
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: el senyal no és vàlid"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: l’identificador de procés no és vàlid"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "l’opció «%c» no és vàlida"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: s’han especificat múltiples senyals"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "s’han especificat múltiples opcions «-l» o «-t»"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "no es pot combinar un senyal amb «-l» o «-t»"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr "no s’ha especificat cap identificador de procés"
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Forma d’ús: %s FITXER1 FITXER2\n"
+" o bé: %s OPCIÓ\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+"Crida la funció link() per a crear un enllaç anomenat FITXER2 que apunte cap "
+"a\n"
+"un FITXER1 existent.\n"
+"\n"
+
+# Usa quote() en els 2 args. ivb
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "no s’ha pogut crear l’enllaç %s cap a %s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr "%s: avís: fer un enllaç fort cap a un enllaç simbòlic no és portable"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: no es permet l’enllaç fort cap al directori"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: no es pot sobreescriure un directori"
+
+# Usa quote(). ivb
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: voleu reemplaçar %s? "
+
+# Usa quote() en els 2 args. ivb
+# És un missatge d'error. ivb
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "en crear l’enllaç simbòlic %s a %s"
+
+# Usa quote() en els 2 args. ivb
+# És un missatge d'error. ivb
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "en crear l’enllaç simbòlic %s a %s"
+
+# Usa quote() en els 2 args. ivb
+# Indica condició d'error. ivb
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "s’està creant l’enllaç fort %s a %s"
+
+# Usa quote() en els 2 args. ivb
+# Indica condició d'error. ivb
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "s’està creant l’enllaç fort %s a %s"
+
+# Usa quote() en els 2 args. ivb
+# Indica condició d'error. ivb
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "s’està creant l’enllaç fort %s a %s"
+
+#: src/ln.c:324
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Forma d’ús: %s [OPCIÓ]… [-T] DESTà NOM_ENLLAÇ (1a form)\n"
+" o bé: %s [OPCIÓ]… DESTà (2a form)\n"
+" o bé: %s [OPCIÓ]… DESTÃ… DIRECTORI (3a form)\n"
+" o bé: %s [OPCIÓ]… -t DIRECTORI DESTÃ… (4a form)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"A la 1a forma crea un enllaç anomenat NOM_ENLLAÇ que apunta al DESTÃ. A la "
+"2a\n"
+"forma crea un enllaç al directori actual que apunta al DESTÃ. A les formes "
+"3a\n"
+"i 4a crea enllaços al DIRECTORI a cada DESTÃ. Per defecte es creen "
+"enllaços\n"
+"forts; es creen simbòlics fent servir «--symbolic». En crear enllaços "
+"forts,\n"
+"cal que existesca cadascun dels fitxers DESTÃ.\n"
+"\n"
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup[=CONTROL]\n"
+" Crea una còpia de seguretat de cada fitxer destí\n"
+" existent.\n"
+" -b Com «--backup», però no accepta cap argument.\n"
+" -d, -F, --directory Crea enllaços forts cap als directoris (només per al\n"
+" superusuari).\n"
+" -d, -F, --directory Permet al superusuari provar de crear enllaços forts\n"
+" cap a directoris (nota: probablement fallarà fins i "
+"tot\n"
+" per al superusuari a causa de restriccions del\n"
+" sistema).\n"
+" -f, --force Elimina els fitxers destí existents.\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference Tracta un destí que siga un enllaç simbòlic a un\n"
+" directori com si fóra un fitxer normal.\n"
+" -i, --interactive Pregunta si cal eliminar algun destí.\n"
+" -s, --symbolic Crea enllaços simbòlics en lloc de forts.\n"
+
+#: src/ln.c:356
+#, fuzzy
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" -S, --suffix=SUFIX Reemplaça el sufix habitual de les còpies de\n"
+" seguretat.\n"
+" -t, --target-directory=DIRECTORI\n"
+" Especifica el DIRECTORI on crear els enllaços.\n"
+" -T, --no-target-directory\n"
+" Tracta NOM_ENLLAÇ com a un fitxer normal.\n"
+" -v, --verbose Mostra els noms de cada fitxer enllaçat.\n"
+
+#: src/ln.c:484
+#, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "no es poden combinar «--target-directory» i «--no-target-directory»"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Forma d’ús: %s [OPCIÓ]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"Mostra el nom de l’usuari actual.\n"
+"\n"
+
+#: src/logname.c:89
+#, c-format
+msgid "no login name"
+msgstr "no hi ha nom d’entrada"
+
+# Data de fitxers antics (p.ex. «15 gen 2003»). Ocupa igual que l'altra. ivb
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%e %b %Y"
+
+# Data de fitxers nous (p.ex. «15 gen 11:53»). Ocupa igual que l'altra. ivb
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%e %b %H:%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr ""
+"es descarta el valor no vàlid de la variable d’entorn QUOTING_STYLE: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "es descarta l’amplària no vàlida a la variable d’entorn COLUMNS: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr ""
+"es descarta l’amplària no vàlida de tabulació a la variable d’entorn "
+"TABSIZE: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "l’amplària de línia no és vàlida: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "l’amplària de tabulació no és vàlida: %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "l’estil de data «%s» no és vàlid"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "el prefix no és reconegut: %s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "el valor de la variable d’entorn LS_COLORS no és interpretable"
+
+# Usa quote(). ivb
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "no s’ha pogut obrir el directori %s"
+
+# Usa quote(). ivb
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "no es poden determinar el dispositiu i node índex de %s"
+
+# Usa quote(). ivb
+#: src/ls.c:2353
+#, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "%s: no es llista el directori ja llistat"
+
+# Els 2 usen quote(). ivb
+# Indica condició d'error. ivb
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "en llegir el directori %s"
+
+# Usa quote(). ivb
+# És un missatge d'error. ivb
+#: src/ls.c:2410
+#, c-format
+msgid "closing directory %s"
+msgstr "en tancar el directori %s"
+
+# Usa quote() en els 2 args. ivb
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "no es poden comparar els noms de fitxer %s i %s"
+
+# Traduint tot açò s'entenen tres coses:
+# 1.- Què significa que l'ls pateix el «second system effect»
+# 2.- Com és d'important el principi KISS
+# 3.- Com és de _vital_ el moviment cap enrere de la pantalla de text
+# (Déu els compila i ells s'enllacen!) ivb
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"Llista informació sobre cada FITXER (per defecte sobre el directori "
+"actual).\n"
+"Ordena les entrades alfabèticament si no s’indica cap de les opcions\n"
+"«-cftuvSUX» o «--sort».\n"
+"\n"
+
+# Amb «implied» vol dir que no han estat indicats explícitament com a args. ivb
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all No passa per alt les entrades que comencen amb «.».\n"
+" -A, --almost-all No llista els directoris implícits «.» i «..».\n"
+" --author Amb «-l», mostra l’autor de cada fitxer.\n"
+" -b, --escape Mostra seqüències d’escapada octals per als "
+"caràcters\n"
+" no gràfics.\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" -B, --ignore-backups No mostra les entrades implícites acabades en "
+"«~».\n"
+" -c Amb «-lt», ordena per (i mostra) la data de canvi\n"
+" (moment de la darrera modificació de la informació\n"
+" d’estat del fitxer).\n"
+" Amb «-l», mostra la data de canvi i ordena pel nom.\n"
+" Altrament, ordena per la data de canvi.\n"
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C Llista les entrades en columnes.\n"
+" --color[=QUAN] Controla quan s’empren colors per a distingir tipus "
+"de\n"
+" fitxers. QUAN pot ser «never», «always» o «auto».\n"
+" -d, --directory Llista les entrades dels directoris en lloc de llurs\n"
+" continguts, i no segueix els enllaços simbòlics.\n"
+" -D, --dired Genera eixida preparada per al mode «dired» d’Emacs.\n"
+
+#: src/ls.c:4307
+#, fuzzy
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f No ordena, activa «-aU» i desactiva «-lst».\n"
+" -F, --classify Afegeix un caràcter identificador del tipus "
+"d’entrada\n"
+" (un de «*/=@|»).\n"
+" --file-type Similar a l’anterior, però no afegeix «*».\n"
+" --format=PARAULA Cada PARAULA equival a l’(opció): across (-x),\n"
+" commas (-m), horizontal (-x), long (-l),\n"
+" single-column (-1), verbose (-l), vertical (-C).\n"
+" --full-time Equival a «-l --time-style=full-iso».\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+# Crec que «virtual» capta millor el significat de «dummy». ivb
+#: src/ls.c:4322
+#, fuzzy
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all Inclou els sistemes de fitxers virtuals.\n"
+" -B, --block-size=MIDA Empra blocs de MIDA octets.\n"
+" -h, --human-readable Mostra les mides en un format llegible per als\n"
+" humans (per exemple: 1K 234M 2G).\n"
+" -H, --si El mateix, però empra potències de 1000, no de 1024.\n"
+
+# «--dereference-command-line-symlink-to-dir» /**/ ivb
+# «--hide», encara una altra opció! O_O ivb
+#: src/ls.c:4328
+#, fuzzy
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+" -g Com «-l», però no mostra el propietari.\n"
+" -G, --no-group Com «-l», però no mostra el grup.\n"
+" -h, --human-readable Amb «-l», mostra les mides en un format llegible\n"
+" per als humans (per exemple: 1K 234M 2G).\n"
+" --si El mateix, però empra potències de 1000, no de 1024.\n"
+" -H, --dereference-command-line\n"
+" Segueix els enllaços simbòlics que es troben a la "
+"línia\n"
+" d’ordres.\n"
+" --dereference-command-line-symlink-to-dir\n"
+" Segueix els enllaços simbòlics que es troben a la "
+"línia\n"
+" d’ordres i apunten cap a un directori.\n"
+" --hide=PATRÓ No mostra les entrades implícites que coincideixen "
+"amb\n"
+" el PATRÓ d’intèrpret indicat (inhabilitada per les\n"
+" opcions «-a» i «A»).\n"
+
+#: src/ls.c:4337
+#, fuzzy
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=PARAULA\n"
+" Afegeix un indicador amb l’estil PARAULA als noms de\n"
+" les entrades: none (per defecte), slash (-p),\n"
+" file-type (--file-type), classify (-F).\n"
+" -i, --inode Amb «-l», mostra el número de node índex de cada\n"
+" fitxer.\n"
+" -I, --ignore=PATRÓ No llista les entrades implícites que coincideixen "
+"amb\n"
+" el PATRÓ d’intèrpret indicat.\n"
+" -k Equival a «--block-size=1K».\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l Empra un format de llistat llarg.\n"
+" -L, --dereference En mostrar la informació de fitxer d’un enllaç\n"
+" simbòlic, mostra la informació del fitxer referit en\n"
+" lloc de la del propi fitxer.\n"
+" -m Plena a l’ample amb una llista d’entrades separades "
+"per\n"
+" comes.\n"
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid Com «-l», però llista els UID i GID "
+"numèricament.\n"
+" -N, --literal Mostra els noms de les entrades en brut (per "
+"exemple,\n"
+" sense tractar especialment els caràcters de "
+"control).\n"
+" -o Com «-l», però no mostra la informació de grup.\n"
+" -p, --indicator-style=slash\n"
+" Afegeix l’indicador «/» als directoris.\n"
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars\n"
+" Mostra «?» en lloc dels caràcters no gràfics.\n"
+" --show-control-chars\n"
+" Mostra els caràcters no gràfics tal qual (per "
+"defecte,\n"
+" a no ser que el programa siga «ls» i l’eixida siga "
+"un\n"
+" terminal).\n"
+" -Q, --quote-name Tanca els noms de les entrades entre cometes dobles.\n"
+" --quote-style=ESTIL\n"
+" Empra l’ESTIL indicat per a citar les paraules:\n"
+" literal, locale, shell, shell-always, c, escape.\n"
+
+#: src/ls.c:4368
+#, fuzzy
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse Inverteix l’ordre.\n"
+" -R, --recursive Llista recursivament els subdirectoris.\n"
+" -s, --size Amb «-l», mostra la mida en blocs de cada fitxer.\n"
+
+# FIXME: time is repeated. ivb
+#: src/ls.c:4373
+#, fuzzy
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S Ordena les entrades per la seua mida.\n"
+" --sort=ORDRE Cada ORDRE equival a l’(opció): none (-U),\n"
+" extension (-X), version (-v), size (-S), time (-t),\n"
+" status (-c), atime (-u), access (-u), use (-u).\n"
+" --time=DATA Amb «-l», mostra la DATA indicada en lloc de la de\n"
+" modificació: atime, access, use, ctime o status; amb\n"
+" «--sort=time» s’ordenarà en base a aquesta data.\n"
+
+# ls, your next programming language for the shell... ivb
+#: src/ls.c:4382
+#, fuzzy
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=ESTIL\n"
+" Amb «-l», mostra les dates emprant l’ESTIL indicat:\n"
+" full-iso, long-iso, iso, locale, +FORMAT; FORMAT\n"
+" s’interpreta com en «date»; si FORMAT és\n"
+" «FORMAT1<nova línia>FORMAT2», FORMAT1 s’aplica als\n"
+" fitxers no recents i FORMAT2 als recents; si es "
+"prefixa\n"
+" l’ESTIL amb «posix-», només s’empra l’ESTIL si el\n"
+" locale POSIX no es troba actiu.\n"
+" -t Ordena per la data de modificació.\n"
+" -T, --tabsize=COLUMNES\n"
+" Indica les COLUMNES entre tabulacions, en lloc de 8.\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u Amb «-lt», ordena per (i mostra) la data d’accés.\n"
+" Amb «-l», mostra la data d’accés i ordena pel nom.\n"
+" Altrament, ordena per la data d’accés.\n"
+" -U No ordena, mostra les entrades en l’ordre en què es\n"
+" troben al directori.\n"
+" -v Ordena per la versió.\n"
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -w, --width=COLS Assumeix un altre ample de pantalla en lloc del "
+"valor\n"
+" actual.\n"
+" -x Llista les entrades en línies en lloc d’en columnes.\n"
+" -X Ordena alfabèticament segons l’extensió de cada\n"
+" entrada.\n"
+" -1 Llista un fitxer per línia.\n"
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"Per defecte no s’empren colors per a distingir tipus de fitxers. Açò "
+"equival\n"
+"a emprar «--color=none» (cap). Emprar l’opció «--color» sense l’argument\n"
+"opcional QUAN equival a emprar «--color=always» (sempre). Amb «--"
+"color=auto»,\n"
+"només es generen codis de color si l’eixida està connectada amb un terminal\n"
+"(tty). Es poden alterar els colors emprant la variable d’entorn LS_COLORS,\n"
+"que pot ser establerta de forma senzilla emprant l’ordre «dircolors».\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+"\n"
+"L’estat d’eixida és 0 si tot va bé, 1 si hi ha problemes menors, 2 si hi ha\n"
+"problemes greus.\n"
+
+#: src/md5sum.c:150
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Forma d’ús: %s [OPCIÓ] [FITXER]…\n"
+"Escriu o comprova sumes de verificació %s (de %d bits).\n"
+"Sense FITXER, o quan FITXER és «-», llegeix l’entrada estàndard.\n"
+"\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+" -b, --binary Llegeix en mode binari (per defecte, excepte quan es\n"
+" llegeix l’entrada estàndard d’un terminal).\n"
+
+#: src/md5sum.c:164
+msgid " -b, --binary read in binary mode\n"
+msgstr " -b, --binary Llegeix en mode binari.\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr " -c, --check Llegeix i comprova la suma %s de cada FITXER.\n"
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+" -t, --text Llegeix en mode text (per defecte quan es llegeix\n"
+" l’entrada estàndard d’un terminal).\n"
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr " -t, --text Llegeix en mode text (per defecte).\n"
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"\n"
+"Les dues opcions següents només són útils per a la comprovació de sumes:\n"
+" --status No escriu res, el codi d’estat indica el resultat.\n"
+" -w, --warn Avisa de les línies de suma amb un format "
+"incorrecte.\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"El càlcul de les sumes es realitza com es descriu al document %s.\n"
+"A les comprovacions, l’entrada hauria de ser una sortida anterior d’aquest\n"
+"mateix programa. Per defecte escriu una línia amb la suma de verificació, "
+"un\n"
+"caràcter indicant el tipus («*» per a binari, « » per a text), i el nom de\n"
+"cada FITXER.\n"
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: hi ha massa línies de suma"
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %<PRIuMAX>: la línia de suma %s està mal formatada"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: no s’ha pogut obrir o llegir\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "INCORRECTE"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "CORRECTE"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: error de lectura"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: no s’ha trobat cap línia de suma %s ben formatada"
+
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "avís: %<PRIuMAX> de %<PRIuMAX> fitxer llistat no s’ha pogut llegir"
+msgstr[1] ""
+"avís: %<PRIuMAX> de %<PRIuMAX> fitxers llistats no s’han pogut llegir"
+
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "avís: %<PRIuMAX> de %<PRIuMAX> suma calculada NO coincideix"
+msgstr[1] "avís: %<PRIuMAX> de %<PRIuMAX> sumes calculades NO coincideixen"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"les opcions «--binary» i «--text» no tenen sentit a la comprovació de sumes"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "l’opció «--status» només té sentit a la comprovació sumes"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "l’opció «--warn» només té sentit a la comprovació de sumes"
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Forma d’ús: %s [OPCIÓ] DIRECTORI…\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"Crea cada DIRECTORI indicat, si no existeix ja.\n"
+"\n"
+
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+" -m, --mode=MODE Estableix els permisos (com fa «chmod», no com\n"
+" «rwxrwxrwx» - umask).\n"
+" -p, --parents Crea els directoris pare necessaris, sense mostrar\n"
+" errors si aquests ja existeixen.\n"
+" --verbose Mostra un missatge per cada directori creat.\n"
+
+# Usa quote(). ivb
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "s’ha creat el directori %s"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Forma d’ús: %s [OPCIÓ] NOM…\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"Crea les canonades amb nom (FIFO) indicades pels seus NOMs.\n"
+"\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+" -m, --mode=MODE Estableix els permisos (com fa «chmod», no com\n"
+" «a=rw» - umask).\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "el mode no és vàlid"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Forma d’ús: %s [OPCIÓ]… NOM TIPUS [MAJOR MENOR]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"Crea el fitxer especial NOM, del TIPUS especificat.\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+"\n"
+"Cal especificar MAJOR i MENOR quan el TIPUS siga «b», «c» o «u»; cal "
+"ometre’ls\n"
+"quan aquest siga «p». Si MAJOR o MENOR comença per «0x» o «0X», "
+"s’interpreta\n"
+"com a hexadecimal; si comença per «0», com a octal; altrament s’interpreta "
+"com\n"
+"a decimal. El TIPUS pot ser:\n"
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+" b Crea un fitxer especial de blocs (amb memòria intermèdia).\n"
+" c, u Crea un fitxer especial de caràcters (sense memòria intermèdia).\n"
+" p Crea una cua FIFO.\n"
+
+# Açò s'imprimeix després d'un missatge d'error. ivb
+#: src/mknod.c:146
+msgid "Special files require major and minor device numbers."
+msgstr "Els fitxers especials requereixen números major i menor de dispositiu."
+
+# Açò s'imprimeix després d'un missatge d'error. ivb
+#: src/mknod.c:156
+msgid "Fifos do not have major and minor device numbers."
+msgstr "Les cues FIFO no tenen números major i menor de dispositiu."
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "aquest sistema no permet fitxers especials de blocs"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "aquest sistema no permet fitxers especials de caràcters"
+
+# Usa quote(). ivb
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "el número major de dispositiu %s no és vàlid"
+
+# Usa quote(). ivb
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "el número menor de dispositiu %s no és vàlid"
+
+# No crec que calguen cometes. ivb
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "el dispositiu %s %s no és vàlid"
+
+# Usa quote(). ivb
+#: src/mknod.c:216
+#, c-format
+msgid "invalid device type %s"
+msgstr "el tipus de dispositiu %s no és vàlid"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Canvia el nom d’ORIGEN a DESTÃ, o mou cada ORIGEN al DIRECTORI.\n"
+"\n"
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup[=CONTROL]\n"
+" Crea una còpia de seguretat de cada fitxer destí\n"
+" existent.\n"
+" -b Com «--backup», però no accepta cap argument.\n"
+" -f, --force No pregunta abans de sobreescriure.\n"
+" -i, --interactive Pregunta abans de sobreescriure.\n"
+
+#: src/mv.c:303
+#, fuzzy
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --strip-trailing-slashes\n"
+" Elimina la barra final (si n’hi ha) de cada argument\n"
+" ORIGEN.\n"
+" -S, --suffix=SUFIX Reemplaça el sufix habitual de les còpies de\n"
+" seguretat.\n"
+
+#: src/mv.c:308
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" -t, --target-directory=DIRECTORI\n"
+" Mou cada argument ORIGEN al DIRECTORI.\n"
+" -T, --no-target-directory\n"
+" Tracta DESTÃ com a un fitxer normal.\n"
+" -u, --update Només mou quan el fitxer ORIGEN és més nou que el\n"
+" fitxer destí o quan el fitxer destí no hi és.\n"
+" -v, --verbose Explica què s’està fent.\n"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Forma d’ús: %s [OPCIÓ] [ORDRE [ARG]…]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+"Executa l’ORDRE amb un valor de prioritat ajustat, cosa que afecta la\n"
+"planificació del procés. Sense l’ORDRE, mostra el valor actual de "
+"prioritat.\n"
+"Els valors de prioritat van des de %d (planificació més favorable) a %d\n"
+"(planificació menys favorable).\n"
+"\n"
+" -n, --adjustment=N Afegeix l’enter N al valor de prioritat (10 per\n"
+" defecte).\n"
+
+# Usa quote(). ivb
+#: src/nice.c:155
+#, c-format
+msgid "invalid adjustment %s"
+msgstr "l’ajust %s no és vàlid"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "cal que especifiqueu una ordre juntament amb l’ajustament"
+
+#: src/nice.c:171 src/nice.c:182
+#, c-format
+msgid "cannot get niceness"
+msgstr "no s’ha pogut obtenir la prioritat"
+
+#: src/nice.c:186
+#, c-format
+msgid "cannot set niceness"
+msgstr "no s’ha pogut establir la prioritat"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Escriu cada FITXER a la sortida estàndard, amb les línies numerades. Sense\n"
+"FITXER, o quan fitxer és «-», llegeix l’entrada estàndard.\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=ESTIL\n"
+" Enumera les línies del cos segons l’ESTIL.\n"
+" -d, --section-delimiter=CC\n"
+" Empra CC per a separar les pàgines lògiques.\n"
+" -f, --footer-numbering=ESTIL\n"
+" Enumera les línies del peu segons ESTIL.\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=ESTIL\n"
+" Enumera les línies de la capçalera segons l’ESTIL.\n"
+" -i, --page-increment=NÚMERO\n"
+" Increment que es produeix per cada línia al compte "
+"de\n"
+" línies.\n"
+" -l, --join-blank-lines=NÚMERO\n"
+" Compta NÚMERO línies en blanc com a una.\n"
+" -n, --number-format=FORMAT\n"
+" Inserta els números de línia segons el FORMAT.\n"
+" -p, --no-renumber No reinicia el compte en cada pàgina lògica.\n"
+" -s, --number-separator=CADENA\n"
+" Escriu la CADENA al darrere del possible número de\n"
+" línia.\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=NÚMERO\n"
+" Primer NÚMERO de línia de cada pàgina lògica.\n"
+" -w, --number-width=NÚMERO\n"
+" Empra NÚMERO columnes per cada número de línia.\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"Les opcions per defecte són «-v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn». CC "
+"són\n"
+"dos caràcters delimitadors per a separar les pàgines lògiques, on "
+"l’absència\n"
+"del segon caràcter implica «:». Escriviu «\\\\» per a «\\». ESTIL pot "
+"ser:\n"
+
+#: src/nl.c:214
+#, fuzzy
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a Numera totes les línies.\n"
+" t Numera totes les línies que no estan en blanc.\n"
+" n No numera cap línia.\n"
+" pEXPREG Només numera les línies que contenen una ocurrència de\n"
+" l’expressió regular bàsica EXPREG.\n"
+"\n"
+"El FORMAT pot ser:\n"
+"\n"
+" ln Alineat a l’esquerra, sense zeros de replé.\n"
+" rn Alineat a la dreta, sense zeros de replé.\n"
+" rz Alineat a la dreta, replenat amb zeros.\n"
+"\n"
+
+#: src/nl.c:281
+#, c-format
+msgid "line number overflow"
+msgstr "el comptador de línies s’ha desbordat"
+
+# Usa quote(). ivb
+#: src/nl.c:479
+#, c-format
+msgid "invalid header numbering style: %s"
+msgstr "l’estil de numeració de capçalera no és vàlid: %s"
+
+# Usa quote(). ivb
+#: src/nl.c:487
+#, c-format
+msgid "invalid body numbering style: %s"
+msgstr "l’estil de numeració de cos no és vàlid: %s"
+
+# Usa quote(). ivb
+#: src/nl.c:495
+#, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "l’estil de numeració de peu no és vàlid: «%s»"
+
+# Usa quote(). ivb
+#: src/nl.c:504
+#, c-format
+msgid "invalid starting line number: %s"
+msgstr "el número inicial de línia no és vàlid: %s"
+
+# Usa quote(). ivb
+#: src/nl.c:513
+#, c-format
+msgid "invalid line number increment: %s"
+msgstr "l’increment del número de línia no és vàlid: %s"
+
+# Usa quote(). ivb
+#: src/nl.c:525
+#, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "el número de línies en blanc no és vàlid: %s"
+
+# Usa quote(). ivb
+#: src/nl.c:539
+#, c-format
+msgid "invalid line number field width: %s"
+msgstr "l’amplada del camp de números de línia no és vàlida: %s"
+
+# Usa quote(). ivb
+#: src/nl.c:558
+#, c-format
+msgid "invalid line numbering format: %s"
+msgstr "l’estil de numeració de línia no és vàlid: %s"
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Forma d’ús: %s ORDRE [ARGUMENT]…\n"
+" o bé: %s OPCIÓ\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+"Executa l’ORDRE descartant els senyals de penjat.\n"
+"\n"
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "es descarten tots els arguments"
+
+# Els 2 usen quote(). ivb
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr "no s’ha pogut obrir %s"
+
+# Missatge informatiu. ivb
+# Usa quote(). ivb
+#: src/nohup.c:161
+#, fuzzy, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "s’afegeix l’eixida a %s"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+"no s’ha pogut preparar la còpia de l’eixida estàndard d’errors per a que es "
+"tanque en fer exec()"
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr "no s’ha pogut redirigir l’eixida estàndard d’errors"
+
+#: src/od.c:307
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Forma d’ús: %s [OPCIÓ]… [FITXER]…\n"
+" o bé: %s [-abcdfilosx]… [FITXER] [[+]DESPLAÇAMENT[.][b]]\n"
+" o bé: %s --traditional [OPC]… [FITX] [[+]DESPL[.][b] [+][ETIQ][.][b]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"Escriu una representació inequívoca, d’octets en octal per defecte, del "
+"FITXER\n"
+"a la sortida estàndard. Amb diversos arguments FITXER, els concatena en\n"
+"l’ordre especificat per a formar l’entrada. Sense FITXER, o quan FITXER és\n"
+"«-», llegeix l’entrada estàndard.\n"
+"\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+"Els arguments obligatoris per a les opcions llargues també ho són per a les\n"
+"opcions curtes corresponents.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=BASE\n"
+" Indica la BASE amb què es mostraran els "
+"desplaçaments.\n"
+" -j, --skip-bytes=OCTETS\n"
+" Salta aquest nombre d’OCTETS al principi de "
+"l’entrada.\n"
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=OCTETS\n"
+" Limita la transcripció a aquest nombre d’OCTETS\n"
+" d’entrada.\n"
+" -S, --strings[=OCTETS]\n"
+" Escriu cadenes d’almenys OCTETS caràcters gràfics.\n"
+" -t, --format=TIPUS Especifica el format (o formats) de sortida.\n"
+" -v, --output-duplicates\n"
+" No empra «*» per a marcar la supressió de línies.\n"
+" -w, --width[=OCTETS] Escriu aquest nombre d’OCTETS per línia.\n"
+" --traditional Accepta arguments en la forma tradicional.\n"
+
+# buscar una traducció per `named characters' i `shorts'
+# Crec que així va bé. ivb
+#: src/od.c:337
+#, fuzzy
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"Les especificacions en format tradicional poden estar mesclades, acumulantâ€"
+"se;\n"
+"són les següents:\n"
+" -a Equival a «-t a», nom dels caràcters.\n"
+" -b Equival a «-t oC», octets en octal.\n"
+" -c Equival a «-t c», caràcters ASCII o seqüències d’escapada amb "
+"barra\n"
+" invertida.\n"
+" -d Equival a «-t u2», enters de 2 octets sense signe en decimal.\n"
+
+# buscar traduccions pels diferents tipus
+# Crec que així va bé. ivb
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f Equival a «-t fF», números reals en coma flotant.\n"
+" -i Equival a «-t dI», enters en decimal.\n"
+" -l Equival a «-t dL», enters llargs en decimal.\n"
+" -o Equival a «-t o2», enters de 2 octets en octal.\n"
+" -s Equival a «-t d2», enters de 2 octets en decimal.\n"
+" -x Equival a «-t x2», enters de 2 octets en hexadecimal.\n"
+
+# El més llarg és «x[MIDA]». ivb
+#: src/od.c:353
+#, fuzzy
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"Si tant la primera com la segona formes d’ús són aplicables, s’assumeix la\n"
+"segona forma si el darrer operand comença per «+» o (si hi ha dos operands)\n"
+"per un dígit. Un operand DESPLAÇAMENT significa «-j DESPLAÇAMENT». "
+"ETIQUETA\n"
+"és la pseudoadreça del primer octet escrit, que s’incrementa a mesura que "
+"va\n"
+"progressant la transcripció. En DESPLAÇAMENT i ETIQUETA, un prefix «0x» o\n"
+"«0X» indica hexadecimal. Els sufixs poden ser «.» per a octal i «b» com a\n"
+"multiplicació per 512.\n"
+"\n"
+"TIPUS està format per una o diverses de les següents especificacions:\n"
+"\n"
+" a Nom del caràcter.\n"
+" c Caràcter ASCII o seqüència d’escapada amb barra invertida.\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+# El més llarg és «x[MIDA]». ivb
+# «SIZE bytes per integer»->«tindira MIDA octets si fóra un enter», crec. ivb
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[MIDA] Decimal amb signe, de MIDA octets com a enter.\n"
+" f[MIDA] Número real en coma flotant, de MIDA octets com a enter.\n"
+" o[MIDA] Octal, de MIDA octets com a enter.\n"
+" u[MIDA] Decimal sense signe, de MIDA octets com a enter.\n"
+" x[MIDA] Hexadecimal, de MIDA bytes com a enter.\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"MIDA és un número. Als TIPUS «doux», MIDA també pot ser «C» per a\n"
+"«sizeof(char)», «S» per a «sizeof(short)», «I» per a «sizeof(int)» o «L» per "
+"a\n"
+"«sizeof(long)». Si el TIPUS és «f», la MIDA pot ser també «F» per a\n"
+"«sizeof(float)», «D» per a «sizeof(double)» o bé «L» per a\n"
+"«sizeof(long double)».\n"
+
+# Aquesta cadena continua. ivb
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"BASE és «d» per a decimal, «o» per a octal, «x» per a hexadecimal, o bé «n»\n"
+"per a cap. OCTETS és hexadecimal si té el prefix «0x» o «0X», i es "
+"multiplica\n"
+"per 512 amb el sufix «b», per 1024 amb «k» i per 1048576 amb «m». Afegint "
+"el\n"
+"sufix «z» a qualsevol dels tipus, mostra també els caràcters imprimibles al\n"
+"final de cada línia d’eixida. "
+
+# aquesta entrada va junta amb l'anterior
+# Cal estar pendent del final de la primera línia. ivb
+#: src/od.c:391
+#, fuzzy
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"«--string» sense cap número implica 3.\n"
+"«--width» sense número implica 32. Per defecte, s’utilitzen les opcions\n"
+"«-A o -t d2 -w 16».\n"
+
+# Ambdues usen quote(). ivb
+#: src/od.c:683 src/od.c:802
+#, c-format
+msgid "invalid type string %s"
+msgstr "la cadena de tipus no és vàlida: %s"
+
+# Usa quote(). ivb
+#: src/od.c:693
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"la cadena de tipus no és vàlida: %s; aquest sistema no proporciona un tipus "
+"enter de %lu octets"
+
+# Usa quote(). ivb
+#: src/od.c:812
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"la cadena de tipus no és vàlida: %s; aquest sistema no proporciona un tipus "
+"de coma flotant de %lu octets"
+
+# Usa quote() en la segona. ivb
+#: src/od.c:871
+#, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "el caràcter «%c» de la cadena de tipus %s no és vàlid"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "no es pot saltar més enllà del final de l’entrada combinada"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+"la base «%c» del desplaçament no és vàlida; ha de ser un caràcter de [doxn]"
+
+# FIXME: xmalloc.h: _STRTOL_ERROR lacks i18n. ivb
+# Açò quedarà com «invalid argument de salt `ARG'» mentre no ho facen. ivb
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "argument de salt"
+
+# FIXME: xmalloc.h: _STRTOL_ERROR lacks i18n. ivb
+# Açò quedarà com «invalid argument de límit `ARG'» mentre no ho facen. ivb
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "argument de límit"
+
+# FIXME: xmalloc.h: _STRTOL_ERROR lacks i18n. ivb
+# Açò quedarà com «invalid longitud mínima de cadena `ARG'» mentre no ho facen. ivb
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "longitud mínima de cadena"
+
+# FIXME: xmalloc.h: _STRTOL_ERROR lacks i18n. ivb
+# Açò quedarà com «invalid especificació d'amplada `ARG'» mentre no ho facen. ivb
+#: src/od.c:1747
+msgid "width specification"
+msgstr "especificació d’amplada"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "no es pot especificar cap tipus quan es transcriuen cadenes"
+
+# Açò s'imprimeix després d'un missatge d'error. ivb
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr "El mode de compatibilitat permet com a màxim un fitxer."
+
+# Són noms d'opcions. ivb
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr "«skip-bytes» + «read-bytes» és massa gran"
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "atenció: l’amplada %lu no és vàlida; s’emprarà %d"
+
+# És una cadena de depuració. ivb
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: fmt=\"%s\" amplada=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "l’entrada estàndard està tancada"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Escriu línies consistents en les línies corresponents seqüencialment de "
+"cada\n"
+"FITXER, separades per caràcters de tabulació, a la sortida estàndard. "
+"Sense\n"
+"FITXER, o quan FITXER és «-», llegeix l’entrada estàndard.\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=LLISTA\n"
+" Empra els caràcters de la LLISTA, en lloc de\n"
+" tabulacions.\n"
+" -s, --serial Processa cada fitxer de cop, i no en paraŀlel.\n"
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Forma d’ús: %s [OPCIÓ]… NOM…\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+"Comprova si hi ha construccions no portables al NOM.\n"
+"\n"
+" -p Prova amb la majoria de sistemes POSIX.\n"
+" -P Comprova els noms buits o que comencen per «-».\n"
+" --portability Prova amb tots els sistemes POSIX (equival a «-p -"
+"P»).\n"
+
+# Usa quote(). ivb
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr "un dels components del nom de fitxer %s comença per «-»"
+
+# Usa quote() en els 2. ivb
+#: src/pathchk.c:206
+#, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "el nom de fitxer %2$s conté el caràcter no portable %1$s"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr "el nom de fitxer és buit"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr "%s: no s’ha pogut determinar la longitud màxima dels noms de fitxer"
+
+# Usa quote(). ivb
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr "s’ha excedit el límit %lu per la longitud %lu del nom de fitxer %s"
+
+# Usa quote(). ivb
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+"s’ha excedit el límit %lu per la longitud %lu del component de nom de fitxer "
+"%s"
+
+# FIXME: This way of arranging output is language dependent. ivb
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Nom d’entrada: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "En la vida real: "
+
+# Un nom real desconegut. ivb
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Directori: "
+
+# Compensa els 3 caràcters que «Nom d'entrada» desplaça «En la vida real». ivb
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr " Intèrpret d’ordres: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Projecte: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "Pla:\n"
+
+# FIXME: This way of arranging output is language dependent. ivb
+# No es passa de 8, ok. ivb
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Entrada"
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr "Nom"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr " TTY"
+
+# Hauria de ser «Inactiu», però té més de 6 caràcters. ivb
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Ociós"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Quan"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "On"
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Forma d’ús: %s [OPCIÓ]… [USUARI]…\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"\n"
+" -l Genera una eixida amb format llarg per cada USUARI.\n"
+" -b Omet el directori personal i intèrpret de l’usuari "
+"al\n"
+" format llarg.\n"
+" -h Omet el fitxer de projecte de l’usuari al format "
+"llarg.\n"
+" -p Omet el fitxer de pla de l’usuari al format llarg.\n"
+" -s Genera una eixida amb format curt (per defecte).\n"
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+" -f Omet la línia de capçaleres de columna al format "
+"curt.\n"
+" -w Omet el nom complet de l’usuari al format curt.\n"
+" -i Omet el nom complet i l’estació remota de l’usuari "
+"al\n"
+" format curt.\n"
+" -q Omet el nom complet, l’estació remota i el temps\n"
+" d’inactivitat (ociós) al format curt.\n"
+
+# No usa quote(). ivb
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+"\n"
+"Un programa de «finger» lleuger; mostra informació sobre els usuaris. El\n"
+"fitxer «utmp» serà «%s».\n"
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr ""
+"no s’ha indicat cap nom d’usuari; n’heu d’indicar almenys un si useu «-l»"
+
+# És un missatge d'error! Qui ho diria... ivb
+# FIXME: ``pr`` messages are quite unconforming to other ones. ivb
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr "el rang de pàgines no és vàlid"
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "--pages=PRIM_PÀG[:ÚLT_PÀG]: manca un argument"
+
+# Usa quote(). ivb
+#: src/pr.c:916
+#, c-format
+msgid "Invalid page range %s"
+msgstr "el rang de pàgines no és vàlid: %s"
+
+# Usa quote(). ivb
+#: src/pr.c:981
+#, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "-l LLARG_PÀG: el nombre de línies no és vàlid: %s"
+
+# Usa quote(). ivb
+#: src/pr.c:1005
+#, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "-N NÚMERO: el número inicial de línia no és vàlid: %s"
+
+# Usa quote(). ivb
+#: src/pr.c:1017
+#, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "-o MARGE: el desplaçament de línia no és vàlid: %s"
+
+# Usa quote(). ivb
+#: src/pr.c:1058
+#, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "-w AMPLADA_PÀG: el nombre de caràcters no és vàlid: %s"
+
+# Usa quote(). ivb
+#: src/pr.c:1072
+#, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "-W AMPLADA_PÀG: el nombre de caràcters no és vàlid: %s"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr ""
+"no es pot especificar el nombre de columnes quan s’imprimeix en paraŀlel"
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "no es pot especificar impressió en paraŀlel i de través alhora"
+
+# Usa quote() en la segona. ivb
+#: src/pr.c:1202
+#, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "-%c: sobren caràcters o el número de l’argument no és vàlid: %s"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "l’amplada de pàgina és insuficient"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+"el número de pàgina inicial %<PRIuMAX> excedeix el comptador de pàgines %"
+"<PRIuMAX>"
+
+#: src/pr.c:2406
+#, c-format
+msgid "Page number overflow"
+msgstr "el comptador de pàgines s’ha desbordat"
+
+# Açò és el text per a numerar les pàgines. ivb
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr "Pàgina %<PRIuMAX>"
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+"Arranja el(s) FITXER(s) en pàgines o columnes per a imprimir.\n"
+"\n"
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +PRIM_PÀG[:ÚLT_PÀG], --pages=PRIM_PÀG[:ÚLT_PÀG] \n"
+" Comença [i acaba] la paginació en PRIM_PÀG [i "
+"ÚLT_PÀG].\n"
+" -COLUMNES, --columns=COLUMNES\n"
+" Disposa el text en les COLUMNES indicades i les "
+"escriu\n"
+" en vertical, tret que especifiqueu «-a». Iguala el\n"
+" nombre de línies de les columnes de cada pàgina.\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across Escriu les columnes de través en lloc de "
+"verticalment,\n"
+" emprat juntament amb -COLUMNES.\n"
+" -c, --show-control-chars\n"
+" Empra la notació «^G» i la notació de seqüència\n"
+" d’escapada en octal amb barra invertida.\n"
+" -d, --double-space Escriu el text amb espaiat doble.\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=FORMAT\n"
+" Formata la data de la capçalera emprant aquest "
+"FORMAT.\n"
+" -e[CARÀCTER[NÚMERO]], --expand-tabs[=CARÀCTER[NÚMERO]]\n"
+" Converteix cada CARÀCTER de l’entrada en NÚMERO "
+"espais\n"
+" a l’eixida (per defecte CARÀCTER és la tabulació i\n"
+" NÚMERO és 8).\n"
+" -F, -f, --form-feed Empra un salt de pàgina, en lloc de caràcters de "
+"nova\n"
+" línia, per a separar cada pàgina (es separen amb una\n"
+" capçalera de 3 línies amb l’opció «-F»; amb 5 línies "
+"de\n"
+" capçalera i 5 de cua sense «-F»).\n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h CAPÇALERA, --header=CAPÇALERA\n"
+" Escriu una CAPÇALERA centrada de pàgina, en lloc del\n"
+" nom del fitxer; «-h \"\"» escriu una línia en blanc, "
+"no\n"
+" useu «-h\"\"».\n"
+" -i[CARÀCTER[NÚMERO], --output-tabs[=CARÀCTER[NÚMERO]]\n"
+" Converteix cada grup de NÚMERO espais consecutius de\n"
+" l’entrada en un CARÀCTER a l’eixida (per defecte\n"
+" CARÀCTER és la tabulació i NÚMERO és 8).\n"
+" -J, --join-lines Ajunta les línies senceres, inhabilita el truncament "
+"de\n"
+" línies de l’opció «-W», no hi ha alineament de "
+"columna,\n"
+" i «--sep-string[=CADENA]» defineix els separadors.\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l LLARG_PÀG, --length=LLARG_PÀG\n"
+" Defineix la llargada de pàgina en LLARG_PÀG (66) "
+"línies\n"
+" (per defecte hi ha 56 línies de text, 63 amb «-F»).\n"
+" -m, --merge Escriu els fitxers en paraŀlel, un en cada columna,\n"
+" amb truncament de línies, però ajuntant les que "
+"ocupen\n"
+" una línia sencera si s’empra l’opció «-J».\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[SEPARADOR[DÃGITS]], --number-lines[=SEPARADOR[DÃGITS]]\n"
+" Numera les línies emprant DÃGITS dígits i un "
+"SEPARADOR\n"
+" a continuació, comptant per defecte des de la 1a "
+"línia\n"
+" del text (per defecte SEPARADOR és la tabulació i\n"
+" DÃGITS és 5).\n"
+" -N NÚMERO, --first-line-number=NÚMERO\n"
+" Comença la numeració amb NÚMERO a la 1a línia de la\n"
+" primera pàgina escrita (vegeu «+PRIM_PÀG»).\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o MARGE, --indent=MARGE\n"
+" Desplaça cada línia MARGE espais, sense afectar les\n"
+" opcions «-w» o «-W» en ús; el MARGE s’afegeix a\n"
+" AMPLADA_PÀG (per defecte MARGE és 0).\n"
+" -r, --no-file-warnings\n"
+" No avisa quan un fitxer no es pot obrir.\n"
+
+# Aaalaaa, ni punts ni res! ivb
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[CARÀCTER], --separator[=CARÀCTER]\n"
+" Separa les columnes amb un únic CARÀCTER; aquest és "
+"per\n"
+" defecte una tabulació si no s’empra «-w» i cap "
+"caràcter\n"
+" quan s’empra «-w». «-s[CARÀCTER]» inhabilita el\n"
+" truncament de línia de totes les opcions de columna\n"
+" («-COLUMNES», «-a -COLUMNES» i «-m») tret que\n"
+" especifiqueu «-w».\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -SCADENA, --sep-string[=CADENA]\n"
+
+# Eeeeinnn?? Beneït info! ivb
+#: src/pr.c:2846
+#, fuzzy
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" Separa les columnes amb aquesta CADENA; si no "
+"s’empra\n"
+" «-S» i sí s’empra «-J» el separador per defecte és "
+"la\n"
+" tabulació, altrament és l’espai (equival a «-S\" "
+"\"»).\n"
+" Aquesta opció no té efecte sobre les opcions de\n"
+" columna.\n"
+" -t, --omit-header Omet les capçaleres i cues de pàgina.\n"
+
+# FIXME: suggest using `just take a look at info, man!' for some option descriptions. ivb
+# revisar l'opció -w
+# Hau! ivb
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination Omet les capçaleres i cues de pàgina, i elimina\n"
+" tota paginació amb salts de pàgina que es trobe als\n"
+" fitxers de l’entrada.\n"
+" -v, --show-nonprinting\n"
+" Empra la notació de seqüència d’escapada en octal "
+"amb\n"
+" barra invertida.\n"
+" -w AMPLADA_PÀG, --width=AMPLADA_PÀG\n"
+" Defineix l’amplada de pàgina a AMPLADA_PÀG caràcters\n"
+" només per a la paginació per columnes (per defecte\n"
+" AMPLADA_PÀG és 72); l’opció «-s[CARÀCTER]» "
+"inhabilita\n"
+" l’amplada de pàgina per defecte.\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W AMPLADA_PÀG, --page-width=AMPLADA_PÀG\n"
+" Defineix l’amplada de pàgina a AMPLADA_PÀG caràcters\n"
+" sempre, truncant les línies excepte si useu l’opció\n"
+" «-J»; no interfereix amb les opcions «-S» o «-s».\n"
+
+# Termina pr i encara estic viu! Vaig a prendre una aspirina... ivb
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"L’opció «-T» és implícita quan s’especifica «-l LLARG_PÀG» i LLARG_PÀG és\n"
+"menor o igual que 10, o menor o igual que 3 quan s’empra l’opció «-F». "
+"Sense\n"
+"FITXER, o quan FITXER és «-», llegeix l’entrada estàndard.\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Forma d’ús: %s [VARIABLE]…\n"
+" o bé: %s OPCIÓ\n"
+"Si no s’especifica cap VARIABLE d’entorn, les mostra totes.\n"
+"\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+"avís: %s: s’han descartat els caràcters que segueixen la constant caràcter"
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Forma d’ús: %s FORMAT [ARGUMENT]…\n"
+" o bé: %s OPCIÓ\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+"Mostra cada ARGUMENT seguint el FORMAT indicat.\n"
+"\n"
+
+# El més llarg és «UHHHHHHHH». ivb
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"\n"
+"FORMAT controla l’eixida com fa printf() en C. S’interpreten les "
+"seqüències:\n"
+"\n"
+" \\\" Cometes dobles.\n"
+" \\NNN Caràcter amb valor octal NNN (de 1 a 3 dígits).\n"
+" \\\\ Barra invertida.\n"
+
+# El més llarg és «UHHHHHHHH». ivb
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+" \\a Alarma (BEL).\n"
+" \\b Retrocés.\n"
+" \\c No produeix més eixida.\n"
+" \\f Salt de pàgina.\n"
+
+# El més llarg és «UHHHHHHHH». ivb
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n Nova línia.\n"
+" \\r Retorn de carro.\n"
+" \\t Tabulació horitzontal.\n"
+" \\v Tabulació vertical.\n"
+
+# El més llarg és «UHHHHHHHH». ivb
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+" \\xHH Octet amb valor hexadecimal HH (d’1 a 2 dígits).\n"
+" \\uHHHH Caràcter Unicode (ISO/IEC 10646) amb valor hexadecimal "
+"HHHH\n"
+" (4 dígits).\n"
+" \\UHHHHHHHH Caràcter Unicode amb valor hexadecimal HHHHHHHH (8 "
+"dígits).\n"
+
+# El més llarg és «UHHHHHHHH». ivb
+#: src/printf.c:129
+#, fuzzy
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+" %% Un sol «%».\n"
+" %b L’ARGUMENT com a una cadena on s’interpreten les seqüències\n"
+" d’escapada amb barra invertida; tanmateix, les seqüències\n"
+" d’escapada octals hi tenen la forma «\\0» o «\\0NNN».\n"
+"\n"
+"i totes les especificacions de format C que acaben en un dels caràcters\n"
+"«diouxXfeEgGcs», on cada ARGUMENT serà convertit al tipus adequat. "
+"S’admeten\n"
+"les amplàries variables.\n"
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: cal un valor numèric"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: no s’ha convertit completament el valor"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "manca un número hexadecimal a la seqüència d’escapada"
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "el nom de caràcter universal «\\%c%0*x» no és vàlid"
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr "l’amplària de camp no és vàlida: %s"
+
+#: src/printf.c:585
+#, c-format
+msgid "invalid precision: %s"
+msgstr "la precisió no és vàlida: %s"
+
+#: src/printf.c:612
+#, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%.*s: l’especifiació de conversió no és vàlida"
+
+# Usa quote(). ivb
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "avís: es descarten els arguments sobrants, començant per %s"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr "F. Pinard"
+
+# La primera és un missatge d'error. ivb
+# Usa quote() en la segona. ivb
+#: src/ptx.c:422
+#, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (en l’expressió regular %s)"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Forma d’ús: %s [OPCIÓ]… [ENTRADA]… (sense «-G»)\n"
+" o bé: %s -G [OPCIÓ]… [ENTRADA [SORTIDA]]\n"
+
+# Escriu les paraules del text seguides, començant cada colta per una. ivb
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"Escriu un índex permutat, incloent el context, amb les paraules dels "
+"fitxers\n"
+"que formen l’entrada.\n"
+"\n"
+
+#: src/ptx.c:1894
+#, fuzzy
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference Escriu les referències generades automàticament.\n"
+" -C, --copyright Mostra el Copyright i les condicions de còpia.\n"
+" -G, --traditional Es comporta com el «ptx» de System V.\n"
+" -F, --flag-truncation=CADENA\n"
+" Empra la CADENA per a senyalar els truncaments de\n"
+" línia.\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=CADENA\n"
+" Nom del macro a emprar en lloc de «xx».\n"
+" -O, --format=roff Genera la sortida com a directives de «roff».\n"
+" -R, --right-side-refs Posa les referències a la dreta, i «-w» no les "
+"té\n"
+" en compte.\n"
+" -S, --sentence-regexp=EXPREG\n"
+" Identifica els finals de línia o de frase fent "
+"servir\n"
+" l’expressió regular indicada.\n"
+" -T, --format=tex Genera la sortida com a directives de TeX.\n"
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=EXPREG\n"
+" Identifica les paraules clau fent servir l’expressió\n"
+" regular idicada.\n"
+" -b, --break-file=FITXER\n"
+" El FITXER conté els caràcters separadors de les\n"
+" paraules clau.\n"
+" -f, --ignore-case Passa a majúscules per a ordenar.\n"
+" -g, --gap-size=NÚMERO Mida (en columnes) de la separació entre els "
+"camps\n"
+" de la sortida.\n"
+" -i, --ignore-file=FITXER\n"
+" El FITXER conté una llista de paraules que mai seran\n"
+" preses com a paraules clau.\n"
+" -o, --only-file=FITXER\n"
+" El FITXER conté una llista de les úniques paraules "
+"que\n"
+" seran preses com a paraules clau.\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references Pren el primer camp de cada línia com a una "
+"referència.\n"
+" -t, --typeset-mode (No es troba implementada.)\n"
+" -w, --width=NÚMERO Amplada (en columnes) de la sortida (excloentâ€ne la\n"
+" referència).\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"Sense cap FITXER o si FITXER és «-», llegeix l’entrada estàndard. Per "
+"defecte\n"
+"s’empra «-F /».\n"
+
+# Usa quote(). ivb
+#: src/ptx.c:2016
+#, c-format
+msgid "invalid gap width: %s"
+msgstr "la mida de la separació no és vàlida: %s"
+
+#: src/ptx.c:2089
+#, fuzzy, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr "l’opció «--reply» està desaprovada; useu «-i» o «-f» al seu lloc"
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+"Mostra el nom de fitxer complet del directori de treball actual.\n"
+"\n"
+
+# Usa quote(). ivb
+#: src/pwd.c:160
+#, c-format
+msgid "failed to chdir to %s"
+msgstr "no s’ha pogut canviar al directori %s"
+
+# Usa quote(). ivb
+#: src/pwd.c:164 src/pwd.c:271
+#, c-format
+msgid "failed to stat %s"
+msgstr "ha fallat stat() sobre %s"
+
+# Usa quote(). ivb
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+"no s’ha pogut trobar una entrada de directori en %s amb un node índex "
+"coincident"
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "es descarten els arguments noâ€opció"
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Foma d’ús: %s [OPCIÓ]… FITXER\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+"Mostra el valor d’un enllaç simbòlic a l’eixida estàndard.\n"
+"\n"
+
+#: src/readlink.c:70
+#, fuzzy
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+" -f, --canonicalize Prova de trobar el nom canònic, seguint "
+"recursivament\n"
+" cada enllaç simbòlic de cada component del camí\n"
+" indicat; cal que existesquen tots els components del\n"
+" camí excepte el darrer.\n"
+" -e, --canonicalize-existing\n"
+" Prova de trobar el nom canònic, seguint "
+"recursivament\n"
+" cada enllaç simbòlic de cada component del camí\n"
+" indicat, cal que existesquen tots els components del\n"
+" camí.\n"
+" -m, --canonicalize-missing\n"
+" Prova de trobar el nom canònic, seguint "
+"recursivament\n"
+" cada enllaç simbòlic de cada component del camí\n"
+" indicat, sense requerir que existesquen els "
+"components\n"
+" del camí.\n"
+" -n, --no-newline No escriu un caràcter de nova línia al final.\n"
+" -q, --quiet,\n"
+" -s, --silent No mostra la majoria de missatges d’error.\n"
+" -v, --verbose Mostra els missatges d’error.\n"
+
+#: src/readlink.c:78
+#, fuzzy
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+" -f, --canonicalize Prova de trobar el nom canònic, seguint "
+"recursivament\n"
+" cada enllaç simbòlic de cada component del camí\n"
+" indicat; cal que existesquen tots els components del\n"
+" camí excepte el darrer.\n"
+" -e, --canonicalize-existing\n"
+" Prova de trobar el nom canònic, seguint "
+"recursivament\n"
+" cada enllaç simbòlic de cada component del camí\n"
+" indicat, cal que existesquen tots els components del\n"
+" camí.\n"
+" -m, --canonicalize-missing\n"
+" Prova de trobar el nom canònic, seguint "
+"recursivament\n"
+" cada enllaç simbòlic de cada component del camí\n"
+" indicat, sense requerir que existesquen els "
+"components\n"
+" del camí.\n"
+" -n, --no-newline No escriu un caràcter de nova línia al final.\n"
+" -q, --quiet,\n"
+" -s, --silent No mostra la majoria de missatges d’error.\n"
+" -v, --verbose Mostra els missatges d’error.\n"
+
+# Usa quote(). ivb
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "no s’ha pogut canviar al directori %s"
+
+# Usa quote(). ivb
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "no s’ha pogut obrir el directori %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+# Els 2 usen quote(). ivb
+#: src/remove.c:510
+#, fuzzy, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "%s ha canviat de dispositiu o nodeâ€i"
+
+# Els 3 usen quote(). ivb
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "no s’ha pogut crear el directori %s"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+# Usa quote(). ivb
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"avís: Estructura de directoris circular.\n"
+"\tAçò indica quasi amb certesa que el sistema de fitxers és corrupte.\n"
+"\tAVISEU L’ADMINISTRADOR DEL SISTEMA.\n"
+"\tEl següent directori és part del cicle:\n"
+"\t %s\n"
+
+# Usa quote(9. ivb
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s: voleu descendir al directori protegit contra escriptura %s? "
+
+# Usa quote(). ivb
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s: voleu descendir al directori %s? "
+
+# FIXME: Language-dependent. ivb
+# Usa quote() en els 2 args. ivb
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: voleu eliminar el %s protegit contra escriptura %s? "
+
+# FIXME: Language-dependent. ivb
+# Usa quote() en els 2 args. ivb
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: voleu eliminar el %s %s? "
+
+# Els 2 usen quote(). ivb
+# Missatge informatiu. ivb
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "s’ha eliminat el directori: %s\n"
+
+# Usa quote(). ivb
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "no s’ha pogut canviar al directori %s"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+# Els 2 usen quote(). ivb
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "no s’ha pogut eliminar el directori %s"
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr ""
+
+# Els 2 usen quote(). ivb
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "no s’ha pogut eliminar el directori %s"
+
+# Els 2 usen quote(). ivb
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "no s’ha pogut eliminar el directori %s"
+
+#: src/remove.c:1558
+#, c-format
+msgid "cannot restore current working directory"
+msgstr "no s’ha pogut recuperar el directori de treball"
+
+# La tercera usa quote(). ivb
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr "Proveu amb «%s ./%s» per a eliminar el fitxer %s.\n"
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Forma d’ús: %s [OPCIÓ]… FITXER…\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --no-preserve-root\n"
+" No tracta «/» de forma especial (per defecte).\n"
+" --preserve-root Falla en operar recursivament sobre «/».\n"
+" -r, -R, --recursive Elimina recursivament els directoris i llurs\n"
+" continguts.\n"
+" -v, --verbose Explica què s’està fent.\n"
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+"\n"
+"Per defecte, «rm» no elimina els directoris. Useu l’opció «--recursive» («-"
+"r»\n"
+"o «-R») per a eliminar també cadascun dels directoris llistats, juntament "
+"amb\n"
+"el seu contingut.\n"
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"Per a esborrar un fitxer amb un nom que comence per «-», per exemple «-"
+"mec»,\n"
+"useu una d’aquestes ordres:\n"
+" %s -- -mec\n"
+"\n"
+" %s ./-mec\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"Tingueu en compte que si useu «rm» per a eliminar un fitxer, normalment és\n"
+"possible recuperarâ€ne els continguts. Si voleu estar més segurs de que els\n"
+"continguts esdevinguen realment irrecuperables, considereu emprar «shred».\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+# FIXME: Language-dependent. ivb
+# Usa quote() en els 2 args. ivb
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: voleu eliminar el %s %s? "
+
+# Cap dels 2 usa quote(). ivb
+# Missatge informatiu. ivb
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "s’està eliminant el directori «%s»"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Forma d’ús: %s [OPCIÓ]… DIRECTORI…\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"Elimina cada DIRECTORI, si es troba buit.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" No té en compte els errors originats només perquè un\n"
+" directori no es troba buit.\n"
+
+#: src/rmdir.c:148
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents Elimina el DIRECTORI i els seus ascendents. Per\n"
+" exemple, l’ordre «rmdir -p a/b/c» és similar a "
+"l’ordre\n"
+" «rmdir a/b/c a/b a».\n"
+" -v, --verbose Mostra un missatge per cada directori processat.\n"
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Forma d’ús: %s [OPCIÓ]… DARRER\n"
+" o bé: %s [OPCIÓ]… PRIMER DARRER\n"
+" o bé: %s [OPCIÓ]… PRIMER INCREMENT DARRER\n"
+
+#: src/seq.c:79
+#, fuzzy
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"Mostra els números del PRIMER al DARRER, amb pas INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT Empra el FORMAT indicat de coma flotat d’estil\n"
+" printf() (per defecte «%g»).\n"
+" -s, --separator=CADENA Empra aquesta CADENA per a separar els números\n"
+" (per defecte «\\n»).\n"
+" -w, --equal-width Iguala l’amplària replenant amb zeros al davant.\n"
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"\n"
+"Si s’omet PRIMER o INCREMENT, es pren 1 per defecte. És a dir, un "
+"INCREMENT\n"
+"omés pren un valor per defecte d’1, fins i tot quan DARRER és menor que\n"
+"PRIMER. PRIMER, INCREMENT i DARRER s’interpreten com a valors reals en "
+"coma\n"
+"flotant. INCREMENT sol ser positiu si PRIMER és menor que DARRER, i sol "
+"ser\n"
+"negatiu si PRIMER és major que DARRER. Si s’indica un argument FORMAT, "
+"aquest\n"
+"ha de contenir exactament un dels formats de printf() d’eixida de flotants:\n"
+"«%e», «%f» o «%g».\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "l’argument de coma flotant no és vàlid: «%s»"
+
+# Usa quote(). ivb
+#: src/seq.c:342
+#, c-format
+msgid "invalid format string: %s"
+msgstr "la cadena de format no és vàlida: %s"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr ""
+"no s’ha d’indicar una cadena de format quan s’empren amplàries igualades"
+
+#: src/setuidgid.c:51
+#, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Forma d’ús: %s NOM_USUARI ORDRE [ARGUMENT]…\n"
+" o bé: %s OPCIÓ\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+"Abandona els grups suplementaris, assumeix els identificadors d’usuari i "
+"grup\n"
+"de NOM_USUARI, i executa l’ORDRE amb els ARGUMENTs especificats. Ix amb "
+"codi\n"
+"111 si no pot assumir els UID i GID requerits. En cas contrari ix amb el "
+"codi\n"
+"d’eixida de l’ORDRE. Aquest programa només és d’utilitat quan l’executa "
+"root\n"
+"(que té identificador d’usuari 0).\n"
+"\n"
+
+# Usa quote(). ivb
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr "l’identificador d’usuari no és conegut: %s"
+
+#: src/setuidgid.c:109
+#, c-format
+msgid "cannot set supplemental group"
+msgstr "no s’ha pogut establir el grup suplementari"
+
+#: src/setuidgid.c:114
+#, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "no s’ha pogut establir l’identificador de grup a %lu"
+
+#: src/setuidgid.c:118
+#, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "no s’ha pogut establir l’identificador d’usuari %lu"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Forma d’ús: %s [OPCIONS] FITXER […]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"Sobreescriu cada FITER repetidament, per tal de fer més difícil recuperar "
+"les\n"
+"dades, fins i tot per sondejos de maquinari molt cars.\n"
+"\n"
+
+#: src/shred.c:174
+#, fuzzy, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force Canvia, si cal, els permisos per a permetre\n"
+" l’escriptura.\n"
+" -n, --iterations=N Sobreescriu N voltes en lloc del nombre per defecte\n"
+" (%d).\n"
+" -s, --size=N Sobreescriu aquest nombre d’octets (s’accepten "
+"sufixos\n"
+" com «K», «M» i «G»).\n"
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove Trunca i elimina el fitxer després de "
+"sobreescriure’l.\n"
+" -v, --verbose Mostra com progressa el procés.\n"
+" -x, --exact No arrodoneix les mides de fitxer al següent bloc\n"
+" complet; aquest és el comportament per defecte per "
+"als\n"
+" fitxers no ordinaris.\n"
+" -z, --zero Afegeix una passada final de sobreescriptura amb "
+"zeros\n"
+" per amagar la destrucció de les dades.\n"
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"Si el FITXER és «-», sobreescriu l’eixida estàndard.\n"
+"\n"
+"Si s’especifica «--remove» (-u) s’elimina cada FITXER. Per defecte no\n"
+"s’eliminen aquests perquè és comú operar sobre fitxers dispositiu com\n"
+"«/dev/hda», i normalment aquests fitxers no s’haurien d’eliminar. Quan\n"
+"s’opera sobre fitxers ordinaris la majoria de la gent empra l’opció\n"
+"«--remove».\n"
+"\n"
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"COMPTE: Teniu en compte que «shred» confia en una assumpció molt important:\n"
+"que el sistema de fitxers sobreescriu les dades al mateix lloc. Aquesta és "
+"la\n"
+"foma tradicional de fer les coses, però molts sistemes de fitxers moderns "
+"no\n"
+"satisfan aquesta assumpció. Aquests són exemples de sistemes de fitxers "
+"sobre\n"
+"els quals «shred» no és efectiu, o no garanteix l’efectivitat a tots els "
+"modes\n"
+"del sistema de fitxers:\n"
+"\n"
+
+#: src/shred.c:207
+#, fuzzy
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"* Sistemes de fitxers transaccionals o que empren diari, com els que es "
+"troben\n"
+" en AIX i Solaris (i JFS, ReiserFS, XFS, Ext3, etc.).\n"
+"\n"
+"* Sistemes de fitxers que escriuen dades redundants i continuen fins i tot "
+"en\n"
+" fallar algunes escriptures, com els sistemes de fitxers basats en RAID.\n"
+"\n"
+"* Sistemes de fitxers que creen instantànies, com el servidor NFS de "
+"Network\n"
+" Appliances.\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+#, fuzzy
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+"* Sistemes de fitxers que empren ubicacions temporals com a memòria cau\n"
+" (cache), com els clients d’NFS versió 3.\n"
+"\n"
+"* Sistemes de fitxers comprimits.\n"
+"\n"
+"La nota anterior també és aplicable (i per tant «shred» hi té una "
+"efectivitat\n"
+"limitada) al cas dels sistemes de fitxers Ext3 muntats en mode "
+"«data=journal»,\n"
+"que no només empra el diari per a les metadades, sinò també per a les "
+"dades.\n"
+"Als modes «data=ordered» (mode per defecte) i «data=writeback», «shred»\n"
+"funciona normalment. Podeu canviar el mode de diari d’un sistema de "
+"fitxers\n"
+"Ext3 afegint l’opció «data=MODE» a les seues opcions de muntatge al fitxer\n"
+"«/etc/fstab», com s’indica al manual de «mount» (executeu «man mount»).\n"
+"\n"
+"A més a més, les còpies de seguretat i les rèpliques remotes dels sistemes "
+"de\n"
+"fitxers poden contenir còpies del fitxer que no poden ser eliminades, i que\n"
+"podrien permetre recuperar més endavant el fitxer destruït.\n"
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr "%s: ha fallat fdatasync()"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr "%s: ha fallat fsync()"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s: no s’ha pogut rebobinar"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: passada %lu/%lu (%s)…"
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s: error en escriure al desplaçament %s"
+
+#: src/shred.c:478
+#, c-format
+msgid "%s: lseek failed"
+msgstr "%s: ha fallat lseek()"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s: el fitxer és massa gran"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: passada %lu/%lu (%s)…%s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: passada %lu/%lu (%s)…%s/%s %d%%"
+
+#: src/shred.c:776
+#, c-format
+msgid "%s: fstat failed"
+msgstr "%s: ha fallat fstat()"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: el tipus del fitxer no és vàlid"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: el fitxer té una mida negativa"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s: error en truncar"
+
+#: src/shred.c:889
+#, c-format
+msgid "%s: fcntl failed"
+msgstr "%s: ha fallat fcntl()"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr ""
+"%s: no es pot destruir el fitxer d’un descriptor obert només per afegir"
+
+# Missatge informatiu, es refereix al nom, no a les dades. ivb
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: inici de l’eliminació"
+
+# No usa quote(). ivb
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: s’ha reanomenat a «%s»"
+
+#: src/shred.c:1018
+#, c-format
+msgid "%s: failed to remove"
+msgstr "%s: no s’ha pogut eliminar"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: ha estat eliminat"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, c-format
+msgid "%s: failed to close"
+msgstr "%s: no s’ha pogut tancar"
+
+#: src/shred.c:1065
+#, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: no s’ha pogut obrir per a escriure"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: el nombre de passades no és vàlid"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "s’han especificat múltiples formats d’eixida"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: la mida del fitxer no és vàlida"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Forma d’ús: %s [OPCIÓ]… DARRER\n"
+" o bé: %s [OPCIÓ]… PRIMER DARRER\n"
+" o bé: %s [OPCIÓ]… PRIMER INCREMENT DARRER\n"
+
+#: src/shuf.c:57
+#, fuzzy
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"Escriu la concatenació ordenada de tots els FITXERs a la sortida estàndard.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "s’han especificat múltiples opcions «-l» o «-t»"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "el senyalador d’entrada no és vàlid: %s"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "l’amplària de línia no és vàlida: %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr "s’han especificat múltiples fitxers d’eixida"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "no es poden combinar el mode i l’opció «--reference»"
+
+# Usa quote(). ivb
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr "sobra l’operand %s"
+
+#: src/sleep.c:47
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Forma d’ús: %s NÚMERO[SUFIX]…\n"
+" o bé: %s OPCIÓ\n"
+"Fa una pausa per NÚMERO segons. SUFIX pot ser «s» per a segons (per "
+"defecte),\n"
+"«m» per a minuts, «h» per a hores o «d» per a dies. Al contrari que la\n"
+"majoria de les implementacions, que requereixen que NÚMERO siga un enter, "
+"ací\n"
+"NÚMERO pot ser un número real en coma flotant qualsevol.\n"
+"\n"
+
+# Usa quote(). ivb
+#: src/sleep.c:138
+#, c-format
+msgid "invalid time interval %s"
+msgstr "l’interval de temps %s no és vàlid"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "no s’ha pogut llegir el rellotge de temps real"
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"Escriu la concatenació ordenada de tots els FITXERs a la sortida estàndard.\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+"Opcions d’ordenació:\n"
+"\n"
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks\n"
+" No té en compte els espais en blanc inicials.\n"
+" -d, --dictionary-order\n"
+" Només té en compte els espais en blanc i els "
+"caràcters\n"
+" alfanumèrics.\n"
+" -f, --ignore-case Converteix a majúscules.\n"
+
+#: src/sort.c:326
+#, fuzzy
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort\n"
+" Ordena segons el valor numèric general.\n"
+" -i, --ignore-nonprinting\n"
+" Només té en compte els caràcters imprimibles.\n"
+" -M, --month-sort Ordena per mesos: (desconegut) < GEN < … < DES.\n"
+" -n, --numeric-sort Ordena segons el valor numèric de la cadena.\n"
+" -r, --reverse Inverteix el resultat de l’ordenació.\n"
+"\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+#, fuzzy
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+"Altres opcions:\n"
+"\n"
+" -c, --check Comprova si l’entrada està ordenada; no ordena.\n"
+" -k, --key=POS1[,POS2] Defineix com a clau d’ordenació allò que es "
+"troba\n"
+" entre POS1 i POS2 (començant per 1).\n"
+" -m, --merge Mescla fitxers prèviament ordenats; no ordena.\n"
+" -o, --output=FITXER Escriu el resultat al FITXER i no a l’eixida\n"
+" estàndard.\n"
+" -s, --stable Dóna per acabada cada ordenació sense passar per la\n"
+" comparació emprada com a darrer recurs.\n"
+" -S, --buffer-size=MIDA\n"
+" Defineix la MIDA de l’avantmemòria principal.\n"
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=SEP\n"
+" Empra SEP com a separador de camp, en lloc de la\n"
+" transició de caràcter no blanc a blanc.\n"
+" -T, --temporary-directory=DIR\n"
+" Empra DIR com a directori temporal, en lloc de "
+"$TMPDIR\n"
+" o «%s»; se’n poden indicar més repetint l’opció.\n"
+" -u, --unique Amb «-c», comprova que l’ordenació és estricta; en "
+"cas\n"
+" contrari només escriu la primera d’aquelles entrades\n"
+" que resulten iguals.\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -z, --zero-terminated Escriu un octet 0 en lloc de cada caràcter de "
+"nova\n"
+" línia.\n"
+
+#: src/sort.c:363
+#, fuzzy
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"POS és F[.C][OPCS], on F és el número del camp i C la posició del caràcter "
+"al\n"
+"camp. OPCS és una més opcions d’ordenació, d’una única lletra, que tenen\n"
+"preferència sobre les opcions globals d’ordenació per aquesta clau. Si no\n"
+"s’especifica cap clau, s’empra la línia sencera com a clau.\n"
+"\n"
+"La MIDA pot anar seguida dels següent sufixs multiplicadors:\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"% 1% de memòria, b 1, K 1024 (per defecte), i així per a M, G, T, P, E, Z, "
+"Y.\n"
+"\n"
+"Sense FITXER, o quan FITXER és «-», llegeix l’entrada estàndard.\n"
+"\n"
+"*** AVÃS ***\n"
+"El locale especificat a l’entorn afecta l’ordenació. Establiu LC_ALL a «C»\n"
+"per a obtenir l’ordenació tradicional que empra el valor numèric dels\n"
+"caràcters.\n"
+
+# Usa quote(). ivb
+# Condició d'error. ivb
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "en escriure %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+# Va seguit del nom del fitxer. ivb
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "no s’ha pogut crear el fitxer temporal"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "no s’ha pogut obrir"
+
+#: src/sort.c:758
+msgid "fflush failed"
+msgstr "ha fallat fflush()"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "no s’ha pogut tancar"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "no s’ha pogut obrir"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr ""
+
+# Va seguit del nom del fitxer. ivb
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "no s’ha pogut crear el fitxer temporal"
+
+# Va seguit del nom del fitxer. ivb
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "no s’ha pogut crear el fitxer temporal"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr ""
+
+# Els 3 usen quote(). ivb
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "no s’ha pogut crear el directori %s"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "no s’ha pogut escriure"
+
+# No usa quote(). ivb
+#: src/sort.c:975
+#, c-format
+msgid "warning: cannot remove: %s"
+msgstr "avís: no s’ha pogut eliminar: %s"
+
+# FIXME: xmalloc.h: _STRTOL_ERROR lacks i18n. ivb
+# Açò quedarà com «invalid mida d'ordenació `MIDA'» mentre no ho facen. ivb
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "mida d’ordenació"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "ha fallat stat()"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "no s’ha pogut llegir"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: fora d’ordre: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "eixida estàndard d’errors"
+
+# Usa quote(). ivb
+#: src/sort.c:2562
+#, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: l’especifiació de camp no és vàlida: %s"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+# Usa quote(). ivb
+#: src/sort.c:2637
+#, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: el comptador a l’inici de %s no és vàlid"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "el número després de «-» no és vàlid"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "el número després de «.» no és vàlid"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "l’especificació de camp conté un caràcter extraviat"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "s’han especificat múltiples formats d’eixida"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "el número a l’inici del camp no és vàlid"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "el número de camp és zero"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "el desplaçament de caràcter és zero"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "el número després de «,» no és vàlid"
+
+# Usa quote(). ivb
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "no es permet l’operand extra %s en emprar l’opció «-c»"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Forma d’ús: %s [OPCIÓ] [ENTRADA [PREFIX]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"Escriu fragments de mida fixa de l’ENTRADA en fitxers «PREFIXaa», "
+"«PREFIXab»…\n"
+"La mida per defecte és de 1000 línies, i el PREFIX per defecte és «x». "
+"Sense\n"
+"ENTRADA, o quan ENTRADA és «-», llegeix l’entrada estàndard.\n"
+"\n"
+
+# corregir l'opció -C
+# Ein? ivb
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=N Empra sufixs de longitud N (per defecte %d).\n"
+" -b, --bytes=MIDA Escriu MIDA octets per fitxer.\n"
+" -C, --line-bytes=MIDA Escriu com a molt MIDA octets de línies senceres\n"
+" per cada fitxer d’eixida.\n"
+" -d, --numeric-suffixes\n"
+" Empra sufixs numèrics en lloc d’alfabètics.\n"
+" -l, --lines=NOMBRE Escriu aquest NOMBRE de línies per fitxer.\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose Mostra un missatge a la sortida estàndard d’errors\n"
+" abans d’obrir cada fitxer de sortida.\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"MIDA pot tenir un sufix multiplicador: «b» per a 512 octets, «k» per a 1 K,\n"
+"«m» per a 1 M.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "s’han esgotat els sufixs per als fitxers de sortida"
+
+# Usa quote(). ivb
+# Missatge informatiu. ivb
+#: src/split.c:211
+#, c-format
+msgid "creating file %s\n"
+msgstr "s’està creant el fitxer %s\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "només es pot partir el fitxer d’una manera"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: la longitud del sufix no és vàlida"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: el nombre d’octets no és vàlid"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: el nombre de línies no és vàlid"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "l’opció de nombre de línies «-%s%c…» és massa gran"
+
+#: src/split.c:518
+#, c-format
+msgid "invalid number of lines: 0"
+msgstr "el nombre de línies no és vàlid: 0"
+
+#: src/stat.c:636
+#, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "avís: la seqüència d’escapada «\\%c» no és reconeguda"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%s%s: la directiva no és vàlida"
+
+#: src/stat.c:726
+#, c-format
+msgid "warning: backslash at end of format"
+msgstr "avís: hi ha una barra invertida al final de la línia"
+
+# Usa quote(). ivb
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr "no s’ha pogut llegir la informació de sistema de fitxers de %s"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Forma d’ús: %s [OPCIÓ] FITXER…\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+"Mostra l’estat d’un fitxer o sistema de fitxers.\n"
+"\n"
+" -L, --dereference Segueix els enllaços simbòlics.\n"
+" -f, --file-system Mostra l’estat del sistema de fitxers en lloc de\n"
+" l’estat del fitxer.\n"
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+" -c, --format=FORMAT Empra el FORMAT especificat en lloc de l’emprat "
+"per\n"
+" defecte, i afegeix un caràcter de nova línia després "
+"de\n"
+" cada ús del FORMAT.\n"
+" --printf=FORMAT Com «--format», però interpreta les seqüències\n"
+" d’escapada amb barres invertides, i no afegeix un\n"
+" caràcter de nova línia al final. Si en voleu un,\n"
+" incloeu «\\n» al FORMAT.\n"
+" -t, --terse Mostra la informació de forma pelada.\n"
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"\n"
+"Seqüències de format vàlides per als fitxers (és a dir, sense\n"
+"«--file-system»):\n"
+"\n"
+" %a Permisos d’accés en octal.\n"
+" %A Permisos d’accés en un format llegible per als humans.\n"
+" %b Nombre de blocs reservats (vegeu «%B»).\n"
+" %B Mida en octets de cada bloc mostrat per «%b».\n"
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+" %d Número del dispositiu en decimal.\n"
+" %D Número del dispositiu en hexadecimal.\n"
+" %f Mode en brut, en hexadecimal.\n"
+" %F Tipus del fitxer.\n"
+" %g Identificador del grup del propietari.\n"
+" %G Nom del grup del propietari.\n"
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+" %h Nombre d’enllaços forts.\n"
+" %i Número del node índex.\n"
+" %n Nom del fitxer.\n"
+" %N Nom entrecometat del fitxer, o del fitxer apuntat en el cas d’un\n"
+" enllaç simbòlic.\n"
+" %o Mida del bloc d’E/S.\n"
+" %s Mida total, en octets.\n"
+" %t Número major de dispositiu, en hexadecimal.\n"
+" %T Número menor de dispositiu, en hexadecimal.\n"
+
+# Indique «de les dades» i «del node índex», queda més clar. ivb
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+" %u Identificador d’usuari del propietari.\n"
+" %U Nom d’usuari del propietari.\n"
+" %x Data del darrer accés.\n"
+" %X Data del darrer accés, en segons des de l’Època.\n"
+" %y Data de la darrera modificació de les dades.\n"
+" %Y Data de la darrera modificació de les dades, en segons des de "
+"l’Època.\n"
+" %z Data del darrer canvi al node índex.\n"
+" %Z Data del darrer canvi al node índex, en segons des de l’Època.\n"
+"\n"
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"Seqüències de format vàlides per als sistemes de fitxers:\n"
+"\n"
+" %a Nombre de blocs lliures disponibles per als usuaris normals.\n"
+" %b Nombre total de blocs de dades del sistema de fitxers.\n"
+" %c Nombre total de nodes índex del sistema de fitxers.\n"
+" %d Nombre de nodes índex lliures del sistema de fitxers.\n"
+" %f Nombre de blocs de dades lliures del sistema de fitxers.\n"
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+" %i Identificador del sistema de fitxers en hexadecimal.\n"
+" %l Longitud màxima dels noms de fitxer.\n"
+" %n Nom del fitxer.\n"
+" %s Mida del bloc (per a transferències més ràpides).\n"
+" %S Mida del bloc fonamental (per a recomptes de blocs).\n"
+" %t Tipus del sistema de fitxers en hexadecimal.\n"
+" %T Tipus del sistema de fitxers en un format llegible per als humans.\n"
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Forma d’ús: %s [-F DISPOSITIU] [--file=DISPOSITIU] [PROPIETAT]…\n"
+" o bé: %s [-F DISPOSITIU] [--file=DISPOSITIU] [-a|--all]\n"
+" o bé: %s [-F DISPOSITIU] [--file=DISPOSITIU] [-g|--save]\n"
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Mostra o canvia les característiques del terminal.\n"
+"\n"
+" -a, --all Mostra totes les propietats actuals de forma "
+"llegible\n"
+" per als humans.\n"
+" -g, --save Mostra totes les propietats actuals de forma "
+"llegible\n"
+" per «stty».\n"
+" -F, --file=DISPOSITIU Obre i empra el DISPOSITIU especificat en lloc "
+"de\n"
+" l’entrada estàndard.\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+"\n"
+"Un «-» opcional davant d’una PROPIETAT la nega. Un «*» marca les "
+"propietats\n"
+"noâ€POSIX. Les propietats disponibles venen determinades pel sistema "
+"subjaent.\n"
+
+# El més llarg és «werase CAR». ivb
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"\n"
+"Caràcters especials:\n"
+" * dsusp CAR El caràcter CAR enviarà un senyal d’aturada de terminal "
+"una\n"
+" volta s’haja buidat l’entrada.\n"
+" eof CAR CAR enviarà un final de fitxer (que termina l’entrada).\n"
+" eol CAR CAR terminarà la línia.\n"
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+" * eol2 CAR CAR indica un caràcter alternatiu de terminació de línia.\n"
+" erase CAR CAR esborrarà el darrer caràcter escrit.\n"
+" intr CAR CAR enviarà un senyal d’interrupció.\n"
+" kill CAR CAR esborrarà la línia actual.\n"
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+" * lnext CAR CAR entrarà el caràcter següent entrecometat.\n"
+" quit CAR CAR enviarà un senyal d’eixir.\n"
+" * rprnt CAR CAR redibuixarà la línia actual.\n"
+" start CAR CAR reiniciarà l’eixida després d’haverâ€la aturat.\n"
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+" stop CAR CAR aturarà l’eixida.\n"
+" susp CAR CAR enviarà un senyal d’aturada de terminal.\n"
+" * swtch CAR CAR canviarà a una capa d’intèrpret diferent.\n"
+" * werase CAR CAR esborrarà la darrera paraula escrita.\n"
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"\n"
+"Propietats especials:\n"
+" N Estableix la velocitat d’entrada i eixida a N bauds.\n"
+" * cols N Anuncia al nucli que el terminal té N columnes.\n"
+" * columns N Equival a «cols N».\n"
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+" ispeed N Estableix la velocitat d’entrada a N bauds.\n"
+" * line N Empra la disciplina de línia N.\n"
+" min N Amb «-icanon», caldran almenys N caràcters per a fer una\n"
+" lectura completa.\n"
+" ospeed N Estableix la velocitat d’eixida a N bauds.\n"
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+" * rows N Anucia al nucli que el terminal té N files.\n"
+" * size Mostra el nombre de files i columnes d’acord amb el nucli.\n"
+" speed Mostra la velocitat del terminal.\n"
+" time N Amb «-icanon», l’expiració de la lectura esdevé d’N "
+"dècimes\n"
+" de segon.\n"
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"\n"
+"Propietats de control:\n"
+" [-]clocal Inhabilita els senyals de control del mòdem.\n"
+" [-]cread Permet rebre entrada.\n"
+" * [-]crtscts Habilita l’establiment de connexió amb RTS/CTS.\n"
+" csN Estableix la mida de caràcter a N bits [5..8].\n"
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+" [-]cstopb Empra dos bits d’aturada per caràcter (només un amb «-»).\n"
+" [-]hup S’envia un senyal de penjat quan el darrer procés tanque "
+"el\n"
+" terminal.\n"
+" [-]hupcl Equival a «[-]hup».\n"
+" [-]parenb Genera un bit de paritat a l’eixida i n’espera un a\n"
+" l’entrada.\n"
+" [-]parodd Empra paritat senar (parella amb «-»).\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"\n"
+"Propietats de l’entrada:\n"
+" [-]brkint Fa que les interrupcions de teclat generen senyals\n"
+" d’interrupció.\n"
+" [-]icrnl Tradueix els retorns de carro a noves línies.\n"
+" [-]ignbrk Descarta els caràcters d’interrupció.\n"
+" [-]igncr Descarta els retorns de carro.\n"
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+" [-]ignpar Descarta els caràcters amb error de paritat.\n"
+" * [-]imaxbel Xiula i no buida un bloc de memòria intermèdia d’entrada "
+"ple\n"
+" quan arriba un caràcter.\n"
+" [-]inlcr Tradueix les noves línies en retorns de carro.\n"
+" [-]inpck Habilita la comprovació de paritat de l’entrada.\n"
+" [-]istrip Posa a zero el bit alt (8é) dels caràcters d’entrada.\n"
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+" * [-]iutf8 Assumeix que els caràcters d’entrada estan codificats fent\n"
+" servir UTF‑8.\n"
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+" * [-]iuclc Tradueix els caràcters en majúscula a minúscula.\n"
+" * [-]ixany Permet que qualsevol caràcter reinicie l’eixida, no només "
+"el\n"
+" caràcter definit amb «start».\n"
+" [-]ixoff Habilita l’enviament de caràcters d’inici/aturada.\n"
+" [-]ixon Habilita el control de flux amb XON/XOFF.\n"
+" [-]parmrk Marca els errors de paritat (amb la seqüència de caràcters\n"
+" 255â€0â€caràcter).\n"
+" [-]tandem Equival a «[-]ixoff»\n"
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"\n"
+"Propietats de l’eixida:\n"
+" * bsN Estil del retard del retrocés, N en [0..1].\n"
+" * crN Estil del retard del retorn de carro, N en [0..3].\n"
+" * ffN Estil del retard del salt de pàgina, N en [0..1].\n"
+" * nlN Estil del retard de la nova línia, N en [0..1].\n"
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+" * [-]ocrnl Tradueix els retorns de carro a noves línies.\n"
+" * [-]ofdel Empra per a replenar caràcters d’esborrat en lloc de nuls.\n"
+" * [-]ofill Replena amb caràcters en lloc d’esperar durant els "
+"retards.\n"
+" * [-]olcuc Tradueix els caràcters en minúscula a majúscula.\n"
+" * [-]onlcr Tradueix les noves línies a retorn de carro i nova línia.\n"
+" * [-]onlret Fa que la nova línia provoque un retorn de carro.\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+" * [-]onocr No imprimeix retorns de carro a la primera columna.\n"
+" [-]opost Postprocessa l’eixida.\n"
+" * tabN Estil del retard de la tabulació horitzontal, N en [0..3].\n"
+" * tabs Equival a «tab0».\n"
+" * -tabs Equival a «tab3».\n"
+" * vtN Estil del retard de la tabulació vertical, N en [0..1].\n"
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"\n"
+"Propietats locals:\n"
+" [-]crterase Mostra els caràcters de retrocés com a\n"
+" retrocésâ€espaiâ€retrocés.\n"
+" * crtkill Esborra totes les línies d’acord amb «echoprt» i «echoe».\n"
+" * -crtkill Esborra totes les línies d’acord amb «echoctl» i «echok».\n"
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+" * [-]ctlecho Mostra els caràcters de control amb notació d’accent\n"
+" circumflex («^c»).\n"
+" [-]echo Mostra els caràcters de l’entrada.\n"
+" * [-]echoctl Equival a «[-]ctlecho».\n"
+" [-]echoe Equival a «[-]crterase».\n"
+" [-]echok Mostra una nova línia després del caràcter d’esborrar "
+"línia.\n"
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+" * [-]echoke Equival a «[-]crtkill».\n"
+" [-]echonl Mostra les noves línies encara que no es mostren la resta\n"
+" dels caràcters.\n"
+" * [-]echoprt Mostra entre «\\\\» i «/» els caràcters esborrats amb el\n"
+" retrocés.\n"
+" [-]icanon Habilita els caràcters especials d’esborrar, esborrar "
+"línia,\n"
+" esborrar paraula i redibuixar.\n"
+" [-]iexten Habilita els caràcters especials noâ€POSIX.\n"
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+" [-]isig Habilita els caràcters especials d’interrupció, eixida i\n"
+" aturada de terminal.\n"
+" [-]noflsh Inhabilita el buidat després d’haver rebut els caràcters\n"
+" especials d’interrupció i eixida.\n"
+" * [-]prterase Equival a «[-]echoprt».\n"
+" * [-]tostop Para els processos de fons que intenten escriure al "
+"terminal.\n"
+" * [-]xcase Amb «icanon», escapa amb «\\\\» les majúscules.\n"
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+"\n"
+"Propietats combinades:\n"
+" * [-]LCASE Equival a «[-]lcase».\n"
+" cbreak Equival a «-icanon».\n"
+" -cbreak Equival a «icanon».\n"
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+" cooked Posa a llurs valors per defecte els caràcters: brkint "
+"ignpar\n"
+" istrip icrnl ixon opost isig icanon eof eol.\n"
+" -cooked Equival a «raw».\n"
+" crt Equival a «echoe echoctl echoke».\n"
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+" dec Equival a «echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u».\n"
+" * [-]decctlq Equival a «[-]ixany».\n"
+" ek Posa a llurs valors per defecte els caràcters «kill» i\n"
+" «erase».\n"
+" evenp Equival a «parenb -parodd cs7».\n"
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+" -evenp Equival a «-parenb cs8».\n"
+" * [-]lcase Equival a «xcase iuclc olcuc».\n"
+" litout Equival a «-parenb -istrip -opost cs8».\n"
+" -litout Equival a «parenb istrip opost cs7».\n"
+" nl Equival a «-icrnl -onlcr».\n"
+" -nl Equival a «icrnl -inlcr -igncr onlcr -ocrnl -onlret».\n"
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+" oddp Equival a «parenb parodd cs7».\n"
+" -oddp Equival a «-parenb cs8».\n"
+" [-]parity Equival a «[-]evenp».\n"
+" pass8 Equival a «-parenb -istrip cs8».\n"
+" -pass8 Equival a «parenb istrip cs7».\n"
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+" raw Equival a «-ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel\n"
+" -opost -isig -icanon -xcase min 1 time 0»\n"
+" -raw Equival a «cooked».\n"
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+" sane Equival a «cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr -"
+"onocr\n"
+" -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon\n"
+" iexten echo echoe echok -echonl -noflsh -xcase -tostop\n"
+" -echoprt echoctl echoke», posant tots els caràcters "
+"especials\n"
+" a llurs valors per defecte.\n"
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"Controla la línia tty connectada a l’entrada estàndard. Sense arguments,\n"
+"mostra la velocitat en bauds, la disciplina de línia i les diferències amb\n"
+"«stty sane». En indicar propietats, el caràcter CAR ha de ser literal, o\n"
+"codificat com «^c», «0x37», «0177» o «127»; els valors especials «^-» i\n"
+"«undef» s’empren per a inhabilitar caràcters especials.\n"
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr "només es pot especificar un dispositiu"
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+"les opcions per a mostrar les propietats de forma llegible per humans i per "
+"«stty» són mútuament excloents"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "no es poden establir modes en especificar un estil d’eixida"
+
+# Realment el desactiva, no reinicia. ivb
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: no s’ha pogut desactivar el mode no blocador"
+
+# Ambdues usen quote(). ivb
+#: src/stty.c:885 src/stty.c:995
+#, c-format
+msgid "invalid argument %s"
+msgstr "l’argument %s no és vàlid"
+
+# Totes sis usen quote(). ivb
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, c-format
+msgid "missing argument to %s"
+msgstr "manca un argument per a %s"
+
+# Usa quote(). ivb
+#: src/stty.c:976
+#, c-format
+msgid "invalid line discipline %s"
+msgstr "la disciplina de línia %s no és vàlida"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: no s’han pogut realitzar totes les operacions requerides"
+
+# Missatge de depuració. ivb
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "new_mode: mode\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: aquest dispositiu no té informació de mida"
+
+# Usa quote(). ivb
+#: src/stty.c:1888
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "l’argument enter %s no és vàlid"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Contrasenya:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: no s’ha pogut obrir «/dev/tty»"
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "no s’han pogut establir els grups"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "no s’ha pogut establir l’identificador de grup"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "no s’ha pogut establir l’identificador d’usuari"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Forma d’ús: %s [OPCIÓ]… [-] [USUARI [ARG]…]\n"
+
+#: src/su.c:386
+#, fuzzy
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Canvia els identificadors efectius d’usuari i grup als de l’USUARI.\n"
+"\n"
+" -, -l, --login Fa servir un intèrpret d’entrada.\n"
+" -c, --command=ORDRE Passa una ORDRE a l’intèrpret amb «-c».\n"
+" -f, --fast Passa «-f» a l’intèrpret (per a «csh» o «tcsh»).\n"
+" -m, --preserve-environment\n"
+" No reinicia les variables d’entorn.\n"
+" -p Equival a «-m».\n"
+" -s, --shell=INTÈRPRET Executa l’INTÈRPRET si ho permet «/etc/shells».\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+"\n"
+"Un «-» simple implica «-l». Si no s’indica cap USUARI, s’assumeix «root».\n"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "l’usuari «%s» no existeix"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "la contrasenya no és correcta"
+
+# No usa quote(). ivb
+# Missatge informatiu. ivb
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "s’empra l’intèrpret restringit «%s»"
+
+# No usa quote(). ivb
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "avís: no s’ha pogut canviar al directori «%s»"
+
+# Això de «defeat» és que el darrer té preferència. ivb
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Mostra la suma de verificació i el nombre de blocs de cada FITXER.\n"
+"\n"
+" -r Empra l’algorisme de suma de BSD, amb blocs de 1 kB.\n"
+" -s, --sysv Empra l’algorisme de suma de System V, amb blocs de "
+"512\n"
+" octets.\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+"Bolca els blocs modificats al disc i actualitza el superbloc.\n"
+"\n"
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "es descarten tots els arguments"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+"\n"
+"NOTA: Potser el vostre intèrpret d’ordres té la seua pròpia versió de «%s»,\n"
+"que preval sobre la descrita ací. Per favor, consulteu a la documentació "
+"del\n"
+"vostre intèrpret quines opcions admet.\n"
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help Mostra aquesta ajuda i surt.\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version Mostra informació sobre la versió i surt.\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Escriu cada FITXER a la sortida estàndard, invertint l’ordre de les línies.\n"
+"Sense cap FITXER, o quan FITXER és «-», llegeix l’entrada estàndard.\n"
+"\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before Posa el separador abans, i no després.\n"
+" -r, --regexp Interpreta el separador com a una expressió regular.\n"
+" -s, --separator=CADENA\n"
+" Empra la CADENA com a separador en lloc del caràcter "
+"de\n"
+" nova línia.\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, c-format
+msgid "%s: seek failed"
+msgstr "%s: ha fallat el desplaçament"
+
+#: src/tac.c:265
+#, c-format
+msgid "record too large"
+msgstr "el registre és massa gran"
+
+# Usa quote(). ivb
+#: src/tac.c:459
+#, c-format
+msgid "cannot create temporary file %s"
+msgstr "no s’ha pogut crear el fitxer temporal %s"
+
+# Usa quote(). ivb
+#: src/tac.c:466
+#, c-format
+msgid "cannot open %s for writing"
+msgstr "no s’ha pogut obrir %s per a escriure"
+
+#: src/tac.c:487 src/tac.c:494
+#, c-format
+msgid "%s: write error"
+msgstr "%s: error d’escriptura"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "el separador no pot ser buit"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Escriu les darreres %d línies de cada FITXER a la sortida estàndard. Amb "
+"més\n"
+"d’un FITXER, les precedeix amb una capçalera amb el nom del fitxer. Sense "
+"cap\n"
+"FITXER, o quan FITXER és «-», llegeix l’entrada estàndard.\n"
+"\n"
+
+#: src/tail.c:229
+#, fuzzy
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry Continua intentant obrir un fitxer fins i tot si és\n"
+" inaccessible al principi, o si després es torna\n"
+" inaccessible; només és útil en seguir la pista d’un\n"
+" nom, és a dir, amb «--follow=NOM».\n"
+" -c, --bytes=N Escriu els darrers N octets.\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --folow[={NOM|DESCRIPTOR}]\n"
+" Escriu les dades a mesura que el fitxer creix; «-f»,\n"
+" «--follow», i «--follow=DESCRIPTOR» són equivalents.\n"
+" -F Equival a «--follow=NOM --retry».\n"
+
+# «-n» cap pq per defecte és 10. ivb
+#: src/tail.c:244
+#, fuzzy, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=N Escriu les darreres N línies, i no les darreres %d.\n"
+" --max-unchanged-stats=N\n"
+" Amb «--follow=NOM», reobre el FITXER que no ha "
+"canviat\n"
+" de mida després d’N iteracions (per defecte %d), per\n"
+" veure si ha estat esborrat o reanomenat (com és el "
+"cas\n"
+" habitual dels fitxers de registre en ser rotats).\n"
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID Amb «-f», acaba després que el procés identificat "
+"per\n"
+" aquest PID mori.\n"
+" -q, --quiet, --silent Omet les capçaleres amb els noms dels fitxers.\n"
+" -s, --sleep-interval=S\n"
+" Amb «-f», cada iteració dura aproximadament S segons\n"
+" (per defecte 1.0).\n"
+" -v, --verbose Sempre escriu els noms dels fitxers.\n"
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"Si el primer caràcter d’N (nombre d’octets o línies) és un «+», escriu cada\n"
+"fitxer començant pel seu Nè element, comptant des de l’inici; en altre cas,\n"
+"escriu els darrers N elements del fitxer. N pot tenir un sufix "
+"multiplicador:\n"
+"«b» per a 512, «k» per a 1024, «m» per a 1024*1024.\n"
+"\n"
+
+# atenció: dues entrades seguides
+# Xanxullo horrend perquè la traducció acaba amb la línia! ivb
+# El xanxullo inclou canviar el dialecte d'un verb! Aargh! XP ivb
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"Amb «--follow» (-f), es segueix per defecte el descriptor de fitxer, de "
+"manera\n"
+"que encara que el fitxer siga reanomenat, es continuarà seguint el seu final."
+
+# aquesta entrada va junta amb l'anterior
+# Xanxullo horrend perquè la traducció comença amb la línia! ivb
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+" \n"
+"Aquest comportament no és desitjable si el que voleu realment és seguir el\n"
+"nom del fitxer, i no el seu descriptor (per exemple, durant la rotació d’un\n"
+"registre). Useu «--follow=NOM» en aquest cas. Això fa que s’òbriga\n"
+"periòdicament el fitxer en qüestió per a veure si ha estat esborrat i "
+"recreat\n"
+"per algun altre programa.\n"
+
+# No usa quote(). ivb
+# Missatge d'error. ivb
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "en tancar «%s» (fd=%d)"
+
+#: src/tail.c:411
+#, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: no s’ha pogut moure dins el desplaçament relatiu %s"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s: no s’ha pogut moure fins al desplaçament relatiu al final %s"
+
+# Usa quote(). ivb
+# FIXME: pretty_name() lacks i18n. ivb
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr "%s ha esdevingut inaccessible"
+
+# tailable = cuable? ;)
+# Usa quote(). ivb
+# FIXME: pretty_name() lacks i18n. ivb
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+"%s ha estat substituït per un fitxer no seguible; s’abandona la pista "
+"d’aquest nom"
+
+# Usa quote(). ivb
+# FIXME: pretty_name() lacks i18n. ivb
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr "%s ha esdevingut accessible"
+
+# Usa quote(). ivb
+# FIXME: pretty_name() lacks i18n. ivb
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "%s ha aparegut; es segueix el final del nou fitxer"
+
+# Usa quote(). ivb
+# FIXME: pretty_name() lacks i18n. ivb
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "%s ha estat substituït; es segueix el final del nou fitxer"
+
+# Realment el desactiva, no reinicia. ivb
+#: src/tail.c:1025
+#, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: no s’ha pogut desactivar el mode no blocador"
+
+# FIXME: pretty_name() lacks i18n. ivb
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: el fitxer ha estat truncat"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "no resta cap fitxer"
+
+# FIXME: pretty_name() lacks i18n. ivb
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+"%s: no es pot seguir el final d’aquest tipus de fitxer; s’abandona la pista "
+"d’aquest nom"
+
+# És un enter correcte però massa gran. ivb
+# Usa quote(). ivb
+#: src/tail.c:1439
+#, c-format
+msgid "number in %s is too large"
+msgstr "el número %s és massa gran"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr ""
+"%s: el nombre màxim d’iteracions sense alteracions entre obertures no és "
+"vàlid"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: el PID no és vàlid"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: el nombre de segons no és vàlid"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, fuzzy, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "avís: «--retry» només és útil quan es segueix la pista d’un nom"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr "avís: es descarta el PID; «--pid=PID» només és útil en fer seguiments"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "avís: aquest sistema no permet l’opció «--pid=PID»"
+
+# Usa quote(). ivb
+#: src/tail.c:1667
+#, c-format
+msgid "cannot follow %s by name"
+msgstr "no es pot seguir %s pel nom"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr "avís: seguir indefinidament l’entrada estàndard no és efectiu"
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Còpia l’entrada estàndard a cada FITXER, i també a l’eixida estàndard.\n"
+"\n"
+" -a, --append Afegeix a cada FITXER indicat, no el sobreescriu.\n"
+" -i, --ignore-interrupts\n"
+" Descarta els senyals d’interrupció.\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Si un dels FITXER és «-», el torna a copiar sobre l’eixida estàndard.\n"
+
+# Usa quote(). ivb
+#: src/test.c:125
+#, c-format
+msgid "missing argument after %s"
+msgstr "manca un argument després de %s"
+
+# Usa quote(). ivb
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "el número enter %s no és vàlid\n"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "cal «)»\n"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "cal «)», s’ha trobat «%s»\n"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: cal un operador unari\n"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "«-nt» no admet «-l»\n"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "«-ef» no admet «-l»\n"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "«-ot» no admet «-l»\n"
+
+#: src/test.c:368
+#, fuzzy
+msgid "unknown binary operator"
+msgstr "l’operador binari no és conegut\n"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: cal un operador binari\n"
+
+#: src/test.c:694
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Forma d’ús: test EXPRESSIÓ\n"
+" o bé: test\n"
+" o bé: [ EXPRESSIÓ ]\n"
+" o bé: [ ]\n"
+" o bé: [ OPCIÓ\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"Ix amb un estat determinat per l’EXPRESSIÓ.\n"
+"\n"
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"\n"
+"Una EXPRESSIÓ omesa és per defecte falsa. Altrament, l’EXPRESSIÓ és certa "
+"o\n"
+"falsa i estableix l’estat d’eixida. És una de:\n"
+
+# El més llarg és «EXPRESSIÓ1 -a EXPRESSIÓ2». ivb
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+"\n"
+" ( EXPRESSIÓ ) L’EXPRESSIÓ és certa.\n"
+" ! EXPRESSIÓ L’EXPRESSIÓ és falsa.\n"
+" EXPRESSIÓ1 -a EXPRESSIÓ2 L’EXPRESSIÓ1 i l’EXPRESSIÓ2 són certes.\n"
+" EXPRESSIÓ1 -o EXPRESSIÓ2 L’EXPRESSIÓ1 o l’EXPRESSIÓ2 és certa.\n"
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"\n"
+" [-n] CADENA La longitud de la CADENA no és zero.\n"
+" CADENA Equival a «-n CADENA».\n"
+" -z CADENA La longitud de la CADENA és zero.\n"
+" CADENA1 = CADENA2 Les cadenes són iguals.\n"
+" CADENA1 != CADENA2 Les cadenes no són iguals.\n"
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" ENTER1 -eq ENTER2 L’ENTER1 és igual a l’ENTER2.\n"
+" ENTER1 -ge ENTER2 L’ENTER1 és major o igual que l’ENTER2.\n"
+" ENTER1 -gt ENTER2 L’ENTER1 és major que l’ENTER2.\n"
+" ENTER1 -le ENTER2 L’ENTER1 és menor o igual que l’ENTER2.\n"
+" ENTER1 -lt ENTER2 L’ENTER1 és menor que l’ENTER2.\n"
+" ENTER1 -ne ENTER2 L’ENTER1 no és igual que l’ENTER2.\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+"\n"
+" FITXER1 -ef FITXER2 El FITXER1 i el FITXER2 tenen els mateixos\n"
+" números de dispositiu i node índex.\n"
+" FITXER1 -nt FITXER2 El FITXER1 és més nou (data de modificació) "
+"que\n"
+" el FITXER2.\n"
+" FITXER1 -ot FITXER2 El FITXER1 és més antic que el FITXER2.\n"
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+"\n"
+" -b FITXER El FITXER existeix i és un dispositiu de "
+"blocs.\n"
+" -c FITXER El FITXER existeix i és un dispositiu de\n"
+" caràcters.\n"
+" -d FITXER El FITXER existeix i és un directori.\n"
+" -e FITXER El FITXER existeix.\n"
+
+# En «-G» no és necessari posar «ID». ivb
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+" -f FITXER El FITXER existeix i és un fitxer ordinari.\n"
+" -g FITXER El FITXER existeix i té activat el bit\n"
+" d’establiment de l’ID de grup.\n"
+" -G FITXER El FITXER existeix i pertany al grup efectiu.\n"
+" -h FITXER El FITXER existeix i és un enllaç simbòlic\n"
+" (equival a «-L»).\n"
+" -k FITXER El FITXER existeix i té activat el bit de\n"
+" permanença.\n"
+
+# En «-O» no és necessari posar ID. ivb
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+" -L FITXER El FITXER existeix i és un enllaç simbòlic\n"
+" (equival a «-h»).\n"
+" -O FITXER El FITXER existeix i pertany a l’usuari "
+"efectiu.\n"
+" -p FITXER El FITXER existeix i és una canonada amb nom.\n"
+" -r FITXER El FITXER existeix i té permís de lectura.\n"
+" -s FITXER El FITXER existeix i la seua mida és major "
+"que\n"
+" zero.\n"
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+" -S FITXER El FITXER existeix i és un connector.\n"
+" -t DF El descriptor de fitxer DF és obert en un\n"
+" terminal.\n"
+" -u FITXER El FITXER existeix i té activat el bit\n"
+" d’establiment de l’ID d’usuari.\n"
+" -w FITXER El FITXER existeix i té permís d’escriptura.\n"
+" -x FITXER El FITXER existeix i té permís d’execució (o "
+"de\n"
+" cerca).\n"
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"Excepte «-h» i «-L», totes les comprovacions sobre un FITXER segueixen els\n"
+"enllaços simbòlics. Teniu en compte que cal que els parèntesis siguen\n"
+"escapats (per exemple, amb barres invertides) en els intèrprets d’ordres.\n"
+"ENTER també pot ser «-l CADENA», que s’avalua a la longitud de la CADENA.\n"
+
+# FIXME: The way this integrates in the message about builtins is language-dependent. ivb
+# Quin xanxullo!!! ivb
+#: src/test.c:776
+msgid "test and/or ["
+msgstr "test» o «["
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "manca «]»\n"
+
+# Usa quote(). ivb
+#: src/test.c:846
+#, c-format
+msgid "extra argument %s"
+msgstr "sobra l’argument %s"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "el format de data «%s» no és vàlid"
+
+# Els 3 usen quote(). ivb
+# Condició d'error. ivb
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "en crear %s"
+
+# Usa quote(). ivb
+# En el codi font diu que no val la pena distingir el tipus d'error. ivb
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr "no s’han pogut canviar les dates de %s"
+
+# Usa quote(). ivb
+# Condició d'error. ivb
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "en establir les dates de %s"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+"Actualitza les dates d’accés i modificació de cada FITXER a la data actual.\n"
+"\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a Només canvia la data d’accés.\n"
+" -c, --no-create No crea cap fitxer.\n"
+" -d, --date=CADENA Interpreta la CADENA i l’empra en lloc de la data\n"
+" actual.\n"
+" -f (No es té en compte.)\n"
+" -m Només canvia la data de modificació de les dades.\n"
+
+# Què té aquesta gent en contra de les cometes? ivb
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --reference=FITXER\n"
+" Empra les dates d’aquest FITXER en lloc de la data\n"
+" actual.\n"
+" -t DATA Empra la data [[CC]AA]MMDDhhmm[.ss] en lloc de la "
+"data\n"
+" actual.\n"
+" --time=PARAULA Modifica la data indicada per la PARAULA: la "
+"d’accés\n"
+" amb «access», «atime» o «use» (equivalen a «-a»); la "
+"de\n"
+" modificació amb «modify» o «mtime» (equivalen a «-"
+"m»).\n"
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"Teniu en compte que les opcions «-d» i «-t» accepten formats de data i hora\n"
+"distints.\n"
+"\n"
+"Si un FITXER és «-», actua sobre l’eixida estàndard.\n"
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "no es poden especificar dates de més d’un origen"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+"avís: «touch %s» és obsoleta; useu «touch -t %04ld%02d%02d%02d%02d.%02d»"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Forma d’ús: %s [OPCIÓ]… JOC1 [JOC2]\n"
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Tradueix, redueix, o suprimeix caràcters de l’entrada estàndard, i escriu "
+"el\n"
+"resultat a la sortida estàndard.\n"
+"\n"
+" -c, -C, --complement Complementa primer el JOC1.\n"
+" -d, --delete Suprimeix els caràcters del JOC1, no tradueix.\n"
+" -s, --squeeze-repeats Substitueix cada seqüència de repeticions d’un\n"
+" caràcter de JOC1 per una única ocurrència del "
+"caràcter.\n"
+" -t, --truncate-set1 Trunca primer el JOC1 a la llargada del JOC2.\n"
+
+# El més llag és «[:xdigit:]». ivb
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"Cada JOC s’especifica com a una cadena de caràcters. La majoria d’ells es\n"
+"representen literalment. Les seqüències que s’interpreten són:\n"
+"\n"
+" \\NNN Caràcter amb valor octal NNN (d’1 a 3 dígits octals).\n"
+" \\\\ Barra invertida.\n"
+" \\a Alarma (BEL).\n"
+" \\b Retrocés.\n"
+" \\f Salt de pàgina.\n"
+" \\n Nova línia.\n"
+" \\r Retorn de carro.\n"
+" \\t Tabulació horitzontal.\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v Tabulació vertical.\n"
+" CAR1-CAR2 Tots els caràcters en ordre ascendent entre CAR1 i CAR2.\n"
+" [CAR*] Al JOC2, còpies de CAR fins a arribar a la llargada de "
+"JOC1.\n"
+" [CAR*REP] REP còpies de CAR; REP és octal si comença amb 0.\n"
+" [:alnum:] Totes les lletres i dígits.\n"
+" [:alpha:] Totes les lletres.\n"
+" [:blank:] Tots els espais en blanc horitzontals.\n"
+" [:cntrl:] Tots els caràcters de control.\n"
+" [:digit:] Tots els dígits.\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] Tots els caràcters imprimibles, excepte l’espai.\n"
+" [:lower:] Totes les lletres minúscules.\n"
+" [:print:] Tots els caràcters imprimibles, incloent l’espai.\n"
+" [:punct:] Tots els caràcters de puntuació.\n"
+" [:space:] Tots els espais en blanc verticals o horitzontals.\n"
+" [:upper:] Totes les lletres majúscules.\n"
+" [:xdigit:] Tots els dígits hexadecimals.\n"
+" [=CAR=] Tots els caràcters equivalents a CAR.\n"
+
+# Les tres següents entrades van juntes !!
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"La traducció es produeix si no s’indica «-d» i ambdós JOC1 i JOC2 "
+"apareixen.\n"
+"Només es pot emprar «-t» quan es tradueix. El JOC2 s’expandeix a la "
+"llargada\n"
+"de JOC1 repetint el darrer caràcter tant com sigui necessari. "
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"Els caràcters\n"
+"sobrants del JOC2 es descarten. Només s’assegura una expansió ascendent "
+"per\n"
+"les seqüències «[:lower:]» i «[:upper:]»; quan s’empren en JOC2 i s’estiga\n"
+"traduint, només es poden utilitzar en parelles respecte JOC1, especificant\n"
+"conversió de majúscules a minúscules (o a la inversa). "
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"«-s» empra el JOC1 si no\n"
+"s’està traduint ni suprimint; a la reducció s’empra el JOC2 i aquesta es\n"
+"produeix després de traduïr o suprimir.\n"
+
+#: src/tr.c:519
+#, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"avís: la seqüència ambígua d’escapada en octal «\\%c%c%c» s’interpreta com "
+"la seqüència de 2 octets «\\0%c%c», «%c»"
+
+# que coi significa `cotejar'???
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "els extrems del rang «%s-%s» es troben en ordre invers"
+
+# Usa quote(). ivb
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "el nombre de repeticions %s de la construcció «[c*n]» no és vàlid"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "manca el nom de la classe de caràcters: «[::]»"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "manca el caràcter de la classe d’equivalència: «[==]»"
+
+# Usa quote(). ivb
+#: src/tr.c:937
+#, c-format
+msgid "invalid character class %s"
+msgstr "la classe de caràcters %s no és vàlida"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: l’operand de la classe d’equivalència ha de ser un únic caràcter"
+
+#: src/tr.c:1275
+#, c-format
+msgid "too many characters in set"
+msgstr "el conjunt conté massa caràcters"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr ""
+"la construcció de repetició «[c*]» no pot aparèixer a la primera cadena"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr ""
+"només pot aparèixer una construcció de repetició «[c*]» a la segona cadena"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr ""
+"en traduir, les expressions «[=c=]» no poden aparèixer a la segona cadena"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "si no es trunca el primer joc, la segona cadena no pot ser nuŀla"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"en traduir amb classes de caràcters complementàries, la segona cadena ha "
+"d’assignar tots els caràcters del domini a un de sol"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"en traduir, les úniques classes de caràcters que poden aparèixer a la segona "
+"cadena són «upper» i «lower»"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr ""
+"en traduir, la construcció «[c*]» només pot aparèxier a la segona cadena"
+
+# Açò s'imprimeix després d'un missatge d'error. ivb
+#: src/tr.c:1731
+msgid "Two strings must be given when translating."
+msgstr "En traduir, cal especificar les dues cadenes."
+
+# Açò s'imprimeix després d'un missatge d'error. ivb
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"En eliminar sense reduir repeticions, només es pot especificar una cadena."
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "la construcció «[:upper:]» o «[:lower:]» està desalineada"
+
+# no estic molt content amb aquesta. jm
+# Retoque un poc la forma d'ús, queda un poc més clar. ivb
+# Un retoc més i ja pareix més un nom d'opció. ivb
+#: src/true.c:42
+#, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Forma d’ús: %s [arguments de la línia d’ordres que seran descartats]\n"
+" o bé: %s OPCIÓ\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr "Ix amb un codi d’estat que indica èxit."
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Forma d’ús: %s [OPCIÓ] [FITXER]\n"
+"Escriu una llista totalment ordenada d’acord amb l’ordenació parcial "
+"descrita\n"
+"en FITXER. Sense FITXER, o quan FITXER és «-», llegeix l’entrada "
+"estàndard.\n"
+"\n"
+
+#: src/tsort.c:474
+#, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: l’entrada conté un nombre senar de components"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: l’entrada conté un cicle:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Forma d’ús: %s [OPCIÓ]…\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Mostra el nom de fitxer del terminal connectat a l’entrada estàndard.\n"
+"\n"
+" -s, --silent, --quiet No mostra res, només retorna un estat d’eixida.\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "no és un tty"
+
+# On deia «sistema operatiu» en una traducció antiga ara diu «nucli» ;) ivb
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Mostra alguna informació sobre el sistema. Si no s’indica cap OPCIÓ, fa el\n"
+"mateix que amb «-s».\n"
+"\n"
+" -a, --all Mostra tota la informació (excepte la de «-p» i «-i» "
+"si\n"
+" és desconeguda), en l’ordre següent:\n"
+" -s, --kernel-name Mostra el nom del nucli.\n"
+" -n, --nodename Mostra el nom de l’estació a la xarxa.\n"
+" -r, --kernel-release Mostra el llançament del nucli.\n"
+
+# FIXME: “unknown†in ``uname.c`` lacks i18n. ivb
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v, --kernel-version Mostra la versió del nucli.\n"
+" -m, --machine Mostra el tipus del maquinari.\n"
+" -p, --processor Mostra el tipus del processador («unknown» si es\n"
+" desconeix).\n"
+" -i, --hardware-platform\n"
+" Mostra la plataforma del maquinari («unknown» si es\n"
+" desconeix).\n"
+" -o, --operating-system\n"
+" Mostra el sistema operatiu.\n"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "no s’ha pogut obtenir el nom del sistema"
+
+#: src/unexpand.c:125
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Converteix els espais en blanc a tabulacions per cada FITXER, i escriu a la\n"
+"sortida estàndard. Sense FITXER, o quan FITXER és «-», llegeix l’entrada\n"
+"estàndard.\n"
+"\n"
+
+# mirar la traducció del expand
+#: src/unexpand.c:133
+#, fuzzy
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all Converteix tots els espais en blanc, no només els "
+"que\n"
+" es troben a principi de línia.\n"
+" --first-only Només converteix les seqüències d’espais en blanc "
+"que\n"
+" es troben a principi de la línia (inhabilita «-a»).\n"
+" -t, --tabs=NÚMERO Tabula a una distància de NÚMERO caràcters, en lloc "
+"de\n"
+" 8 (habilita «-a»).\n"
+" -t, --tabs=LLISTA Especifica una llista de posicions explícites per "
+"cada\n"
+" tabulació, separades per comes (habilita «-a»).\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr "els tabuladors es troben massa separats"
+
+# És un enter correcte però massa gran. ivb
+#: src/unexpand.c:512
+#, c-format
+msgid "tab stop value is too large"
+msgstr "la distància de tabulació és massa gran"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Forma d’ús: %s [OPCIÓ]… [ENTRADA [SORTIDA]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"Descarta totes tret d’una de successives línies idèntiques de l’ENTRADA (o "
+"de\n"
+"l’entrada estàndard) i escriu a la SORTIDA (o a la sortida estàndard).\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count Prefixa cada línia amb el nombre d’ocurrències.\n"
+" -d, --repeated Només escriu les línies duplicades.\n"
+
+#: src/uniq.c:151
+#, fuzzy
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated[=MÈTODE_DELIMITACIÓ]\n"
+" Escriu totes les línies duplicades, delimitant els\n"
+" grups segons el MÈTODE: «none» (per defecte) no els\n"
+" separa; «prepend» els prefixa i «separate» els "
+"separa\n"
+" amb una línia buida.\n"
+" -f, --skip-fields=N Evita la comparació dels primers N camps.\n"
+" -i, --ignore-case No té en compte les diferències entre majúscules i\n"
+" minúscules.\n"
+" -s, --skip-chars=N Evita la comparació dels primers N caràcters.\n"
+" -u, --unique Només escriu les línies que són úniques.\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr " -w, --check-chars=N No compara més d’N caràcters per línia.\n"
+
+# Hau! ivb
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"Un camp és una sèrie d’espais en blanc, seguit de caràcters no en blanc.\n"
+"En emprar «--skip-fields» i «--skip-chars», primer es salten els camps i\n"
+"després els caràcters.\n"
+
+#: src/uniq.c:350
+#, c-format
+msgid "too many repeated lines"
+msgstr "hi ha massa línies repetides"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "el nombre de camps a saltar no és vàlid"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "el nombre d’octets a saltar no és vàlid"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "el nombre d’octets a comparar no és vàlid"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+"escriure totes les línies duplicades i el nombre de repeticions és absurd"
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Forma d’ús: %s FITXER\n"
+" o bé: %s OPCIÓ\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"Crida la funció unlink() per a eliminar el FITXER especificat.\n"
+"\n"
+
+# Usa quote(). ivb
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "no s’ha pogut deslligar %s"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "no s’ha pogut obtenir l’hora d’arrencada"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s en marxa "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "am"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "pm"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr " ??:???? en marxa "
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr "???? dies ??:??, "
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%ld dia"
+msgstr[1] "%ld dies"
+
+#: src/uptime.c:147
+#, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%lu usuari"
+msgstr[1] "%lu usuaris"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", càrrega mitjana: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Forma d’ús: %s [OPCIÓ]… [FITXER]\n"
+
+# Dubte sobre lo de uptime. jm
+# Ein? ivb
+# No usa quote() en cap dels 2 args. ivb
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Mostra l’hora actual, quant temps ha estat el sistema en marxa, el nombre\n"
+"d’usuaris en el sistema i la mitjana de treballs a la cua d’execució durant\n"
+"els darrers 1, 5 i 15 minuts. Si no s’indica el FITXER, s’empra «%s».\n"
+"És comú emprar «%s» com a FITXER.\n"
+"\n"
+
+# No usa quote() en cap dels dos args. ivb
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Mostra qui està connectat actualment, d’acord amb el contingut del FITXER. "
+"Si\n"
+"no s’indica el FITXER, s’empra «%s». És comú emprar «%s»\n"
+"com a FITXER.\n"
+"\n"
+
+# afegir una línia en blanc entre la descripció i les opcions
+# Ja està. ivb
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Escriu el nombre de caràcters de nova línia, paraules i octets de cada "
+"FITXER,\n"
+"i una línia de totals si especifiqueu més d’un FITXER. Sense FITXER, o "
+"quan\n"
+"FITXER és «-», llegeix l’entrada estàndard.\n"
+"\n"
+" -c, --bytes Escriu el nombre d’octets.\n"
+" -m, --chars Escriu el nombre de caràcters.\n"
+" -l, --lines Escriu el nombre de caràcters de nova línia.\n"
+
+#: src/wc.c:121
+#, fuzzy
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" -L, --max-line-length Escriu la longitud de la línia més llarga.\n"
+" -w, --words Escriu el nombre de paraules.\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+# Ull, usar el mateix terme d'«antic» que baix. ivb
+# XXX: S'entén com a sessió i és femení? ivb
+# 6 caràcters. ivb
+#: src/who.c:212
+msgid " old "
+msgstr "antic"
+
+# Identificador d'una tasca d'init. ivb
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+# Codi de terminació. ivb
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "term="
+
+# Codi d'eixida. ivb
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "eixida="
+
+# 12 caràcters. ivb
+#: src/who.c:497
+msgid "clock change"
+msgstr "canvi rlltge"
+
+# 10 caràcters. ivb
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "nivll exec"
+
+# Últim nivell d'execució. ivb
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "darrer="
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"nombre d’usuaris=%lu\n"
+
+# FIXME: This arrangement is language-dependent because of width. ivb
+# Nom d'un usuari del sistema. ivb
+#: src/who.c:551
+msgid "NAME"
+msgstr "NOM"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "LÃNIA"
+
+# Hora d'entrada d'un usuari al sistema. ivb
+#: src/who.c:551
+msgid "TIME"
+msgstr "HORA"
+
+# Temps ociós d'un usuari. ivb
+#: src/who.c:551
+msgid "IDLE"
+msgstr "OCIÓS"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+# 8 caràcters. ivb
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "COMENT."
+
+# Codis de terminació i eixida del procés. ivb
+#: src/who.c:552
+msgid "EXIT"
+msgstr "EIXIDA"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Forma d’ús: %s [OPCIÓ]… [FITXER | ARG1 ARG2]\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" -a, --all Equival a «-b -d --login -p -r -t -T -u».\n"
+" -b, --boot Moment de la darrera arrencada del sistema.\n"
+" -d, --dead Mostra els processos morts.\n"
+" -H, --heading Mostra una línia de capçaleres de columna.\n"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr " -l, --login Mostra els processos d’entrada al sistema.\n"
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+" -l, --lookup Prova de fer canònics els noms d’estació via DNS.\n"
+" -m Només mostra el nom d’estació i usuari associats amb\n"
+" l’entrada estàndard.\n"
+" -p, --process Mostra els processos actius llançats per «init».\n"
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+" -q, --count Mostra els noms i el nombre total d’usuaris "
+"connectats.\n"
+" -r, --runlevel Mostra el nivell d’execució actual.\n"
+" -s, --short Només mostra el nom, línia i hora (per defecte).\n"
+" -t, --time Mostra el moment del darrer canvi del rellotge del\n"
+" sistema.\n"
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+" -T, -w, --mesg Inclou l’estat de missatges dels usuaris com a «+», "
+"«-»\n"
+" o «?».\n"
+" -u, --users Llista els usuaris connectats.\n"
+" --message Equival a «-T».\n"
+" --writable Equival a «-T».\n"
+
+# No usa quote() en cap dels 2 args. ivb
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"Si no s’indica el FITXER, s’empra «%s». És comú emprar «%s»\n"
+"com a FITXER. Si s’especifiquen ARG1 i ARG2, és com emprar «-m»: és "
+"habitual\n"
+"emprar «am i» o «és genial».\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr "avís: s’eliminarà «-i» en una versió futura; useu «-u» al seu lloc"
+
+#: src/whoami.c:51
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Mostra el nom d’usuari associat amb l’identificador d’usuari efectiu\n"
+"actualment. Equival a «id -un».\n"
+"\n"
+
+#: src/whoami.c:95
+#, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: no s’ha pogut trobar el nom de l’ID d’usuari %lu\n"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Forma d’ús: %s [CADENA]…\n"
+" o bé: %s OPCIÓ\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"Mostra repetidament una línia amb totes les cadenes indicades, o «y».\n"
+"\n"
+
+#~ msgid "strip failed"
+#~ msgstr "ha fallat el programa «strip»"
+
+# Els 3 usen quote(). ivb
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "no s’ha pogut canviar el propietari o grup de %s"
+
+# Usa quote(). ivb
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "no s’ha pogut canviar al directori %s"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "no s’ha pogut obtenir el grup d’entrada d’un UID numèric"
+
+#~ msgid ""
+#~ " --no-preserve-root do not treat `/' specially (the default)\n"
+#~ " --preserve-root fail to operate recursively on `/'\n"
+#~ msgstr ""
+#~ " --no-preserve-root\n"
+#~ " No tracta «/» de forma especial (per defecte).\n"
+#~ " --preserve-root Falla en operar recursivament sobre «/».\n"
+
+#~ msgid "-R -h requires -P"
+#~ msgstr "«-R -h» necessita «-P»"
+
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "aquest sistema no permet enllaços simbòlcs"
+
+#~ msgid ""
+#~ " -e enable interpretation of backslash escapes\n"
+#~ " -E disable interpretation of backslash escapes (default)\n"
+#~ msgstr ""
+#~ " -e Habilita la interpretació de seqüències d’escapada "
+#~ "amb\n"
+#~ " barra invertida.\n"
+#~ " -E Inhabilita la interpretació de seqüències "
+#~ "d’escapada\n"
+#~ " amb barra invertida (per defecte).\n"
+
+# Usa quote(). ivb
+#~ msgid ""
+#~ "warning: unportable BRE: %s: using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr ""
+#~ "avís: l’expressió %s no és portable: emprar «^» com a primer caràcter "
+#~ "d’una expressió regular bàsica no és portable; es descarta"
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "l’opció «-%c» no és reconeguda"
+
+#~ msgid "cannot return to working directory"
+#~ msgstr "no s’ha pogut tornar al directori de treball"
+
+#~ msgid "cannot return to current directory"
+#~ msgstr "no s’ha pogut tornar al directori actual"
+
+# Usa quote(). ivb
+#~ msgid "value %s is so large that it is not representable"
+#~ msgstr "el valor %s és tan gran que no es pot representar"
+
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "es crea l’enllaç simbòlic %s cap a %s"
+
+# Usa quote() en els 2 args. ivb
+# És un missatge de progrés. ivb
+#~ msgid "create hard link %s to %s"
+#~ msgstr "es crea un l’enllaç fort %s cap a %s"
+
+# Usa quote(). ivb
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "no s’han pogut els permisos del directori %s"
+
+#~ msgid "fifo files not supported"
+#~ msgstr "aquest sistema no permet fitxers FIFO"
+
+# Usa quote(). ivb
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "no s’han pogut establir els permisos de la cua FIFO «%s»"
+
+# Usa quote(). ivb
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "no s’han pogut establir els permisos de %s"
+
+#~ msgid ""
+#~ "This program is free software; you can redistribute it and/or modify\n"
+#~ "it under the terms of the GNU General Public License as published by\n"
+#~ "the Free Software Foundation; either version 2, or (at your option)\n"
+#~ "any later version.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Aquest és programari lliure; podeu redistribuirâ€lo i/o modificarâ€lo sota "
+#~ "els\n"
+#~ "termes de la Llicència Pública General GNU tal i com ha estat publicada "
+#~ "per la\n"
+#~ "Free Software Foundation; bé sota la versió 2 de la Llicència o bé (si "
+#~ "ho\n"
+#~ "preferiu) sota qualsevol versió posterior.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "This program is distributed in the hope that it will be useful,\n"
+#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+#~ "GNU General Public License for more details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Aquest programa es distribueix amb l’expectativa de que serà útil, però "
+#~ "SENSE\n"
+#~ "CAP GARANTIA; ni tan sols la garantia implícita de COMERCIABILITAT o "
+#~ "ADEQUACIÓ\n"
+#~ "PER A UN PROPÒSIT PARTICULAR. Vegeu la Llicència Pública General GNU "
+#~ "per\n"
+#~ "obtenir-ne més detalls.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
+#~ msgstr ""
+#~ "Hauríeu d’haver rebut una còpia de la Llicència Pública General GNU "
+#~ "juntament\n"
+#~ "amb aquest programa; en cas contrari, escriviu a la Free Software "
+#~ "Foundation,\n"
+#~ "Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
+
+# Usa quote(). ivb
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "no s’ha pogut canviar del directori %s a «..»"
+
+# Hmm... queda bé? jm
+# Els 2 usen quote(). ivb
+# En sintonia amb libc... ivb
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "ha fallat lstat() sobre «.» en %s"
+
+# Els 4 usen quote(). ivb
+#~ msgid "cannot lstat %s"
+#~ msgstr "ha fallat lstat() sobre %s"
+
+# Els 2 usen quote() en els 2 args. ivb
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "no s’ha pogut canviar del directori %s a %s"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "no es pot eliminar «.» ni «..»"
+
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only; this works only if your "
+#~ "system\n"
+#~ " supports `unlink' for nonempty directories)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ msgstr ""
+#~ "Elimina (o deslliga) cada FITXER.\n"
+#~ "\n"
+#~ " -d, --directory Deslliga el FITXER, encara que siga un directori "
+#~ "no\n"
+#~ " buit (només per al superusuari; només funciona si "
+#~ "el\n"
+#~ " sistema permet deslligar directoris no buits).\n"
+#~ " -f, --force Descarta els fitxers inexistents, i mai no "
+#~ "pregunta.\n"
+#~ " -i, --interactive Pregunta abans d’esborrar.\n"
+
+#~ msgid "%s: count `%.*s' too large"
+#~ msgstr "%s: el comptador «%.*s» és massa gran"
+
+#~ msgid "Exit with a status code indicating failure."
+#~ msgstr "Ix amb un codi d’estat que indica error."
diff --git a/po/coreutils.pot b/po/coreutils.pot
new file mode 100644
index 0000000..0d8f6e7
--- /dev/null
+++ b/po/coreutils.pot
@@ -0,0 +1,7620 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, c-format
+msgid "preserving permissions for %s"
+msgstr ""
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr ""
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr ""
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr ""
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr ""
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr ""
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr ""
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr ""
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr ""
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr ""
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr ""
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr ""
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr ""
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr ""
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr ""
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr ""
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr ""
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr ""
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr ""
+
+#: lib/gai_strerror.c:44
+msgid "Address family for hostname not supported"
+msgstr ""
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:48
+msgid "ai_family not supported"
+msgstr ""
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr ""
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+msgid "ai_socktype not supported"
+msgstr ""
+
+#: lib/gai_strerror.c:54
+msgid "System error"
+msgstr ""
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+msgid "Unknown error"
+msgstr ""
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/human.c:477
+msgid "block size"
+msgstr ""
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr ""
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr ""
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr ""
+
+#: lib/openat-die.c:34
+#, c-format
+msgid "unable to record current working directory"
+msgstr ""
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/randread.c:125
+#, c-format
+msgid "%s: end of file"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr ""
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr ""
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr ""
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr ""
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr ""
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr ""
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr ""
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr ""
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr ""
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr ""
+
+#: lib/userspec.c:109
+msgid "invalid spec"
+msgstr ""
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr ""
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr ""
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr ""
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr ""
+
+#: lib/xmemxfrm.c:55
+#, c-format
+msgid "string transformation failed"
+msgstr ""
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, c-format
+msgid "invalid %s `%s'"
+msgstr ""
+
+#: lib/xstrtol.h:69
+#, c-format
+msgid "invalid character following %s in `%s'"
+msgstr ""
+
+#: lib/xstrtol.h:74
+#, c-format
+msgid "%s `%s' too large"
+msgstr ""
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr ""
+
+#: src/base64.c:234
+#, c-format
+msgid "invalid input"
+msgstr ""
+
+#: src/base64.c:271
+#, c-format
+msgid "invalid wrap size: %s"
+msgstr ""
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr ""
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr ""
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, c-format
+msgid "missing operand"
+msgstr ""
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr ""
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+#: src/cat.c:333
+#, c-format
+msgid "cannot do ioctl on %s"
+msgstr ""
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr ""
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr ""
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr ""
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+
+#: src/chgrp.c:117
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr ""
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, c-format
+msgid "missing operand after %s"
+msgstr ""
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr ""
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr ""
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr ""
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr ""
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr ""
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr ""
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr ""
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr ""
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr ""
+
+#: src/chmod.c:286
+#, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr ""
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr ""
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr ""
+
+#: src/chmod.c:510
+#, c-format
+msgid "invalid mode: %s"
+msgstr ""
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr ""
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr ""
+
+#: src/chown-core.c:149
+#, c-format
+msgid "no change to ownership of %s\n"
+msgstr ""
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr ""
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr ""
+
+#: src/chown-core.c:154
+#, c-format
+msgid "failed to change ownership of %s\n"
+msgstr ""
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr ""
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr ""
+
+#: src/chown-core.c:159
+#, c-format
+msgid "ownership of %s retained\n"
+msgstr ""
+
+#: src/chown-core.c:344
+#, c-format
+msgid "cannot dereference %s"
+msgstr ""
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr ""
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr ""
+
+#: src/chown.c:93
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+
+#: src/chown.c:98
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr ""
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr ""
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr ""
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr ""
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr ""
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr ""
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr ""
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr ""
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr ""
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr ""
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr ""
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr ""
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr ""
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr ""
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr ""
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr ""
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr ""
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr ""
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr ""
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr ""
+
+#: src/copy.c:805
+#, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr ""
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr ""
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr ""
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr ""
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr ""
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr ""
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr ""
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr ""
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr ""
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr ""
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr ""
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr ""
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr ""
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr ""
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr ""
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr ""
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr ""
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr ""
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr ""
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr ""
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr ""
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr ""
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr ""
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr ""
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr ""
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr ""
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr ""
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr ""
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr ""
+
+#: src/cp.c:157 src/mv.c:284
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+
+#: src/cp.c:205
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr ""
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr ""
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr ""
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr ""
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr ""
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, c-format
+msgid "missing file operand"
+msgstr ""
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, c-format
+msgid "missing destination file operand after %s"
+msgstr ""
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, c-format
+msgid "target %s is not a directory"
+msgstr ""
+
+#: src/cp.c:697
+#, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr ""
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr ""
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, c-format
+msgid "multiple target directories specified"
+msgstr ""
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr ""
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr ""
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr ""
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr ""
+
+#: src/csplit.c:709
+#, c-format
+msgid "%s: %s: line number out of range"
+msgstr ""
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr ""
+
+#: src/csplit.c:755
+#, c-format
+msgid "%s: %s: match not found"
+msgstr ""
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr ""
+
+#: src/csplit.c:984
+#, c-format
+msgid "write error for %s"
+msgstr ""
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr ""
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr ""
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr ""
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr ""
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr ""
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr ""
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr ""
+
+#: src/csplit.c:1172
+#, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr ""
+
+#: src/csplit.c:1178
+#, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr ""
+
+#: src/csplit.c:1231
+#, c-format
+msgid "invalid format width"
+msgstr ""
+
+#: src/csplit.c:1252
+#, c-format
+msgid "invalid format precision"
+msgstr ""
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr ""
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr ""
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr ""
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr ""
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr ""
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr ""
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr ""
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/csplit.c:1486
+#, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr ""
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr ""
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr ""
+
+#: src/cut.c:472
+#, c-format
+msgid "field number %s is too large"
+msgstr ""
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr ""
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr ""
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr ""
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr ""
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr ""
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr ""
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr ""
+
+#: src/date.c:297 src/date.c:517
+#, c-format
+msgid "invalid date %s"
+msgstr ""
+
+#: src/date.c:408 src/date.c:442
+#, c-format
+msgid "multiple output formats specified"
+msgstr ""
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr ""
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr ""
+
+#: src/date.c:448
+#, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr ""
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr ""
+
+#: src/dd.c:404
+#, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+msgid " directory fail unless a directory\n"
+msgstr ""
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr ""
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ""
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr ""
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr ""
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr ""
+
+#: src/dd.c:886
+#, c-format
+msgid "unrecognized operand %s"
+msgstr ""
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr ""
+
+#: src/dd.c:900
+#, c-format
+msgid "invalid input flag: %s"
+msgstr ""
+
+#: src/dd.c:903
+#, c-format
+msgid "invalid output flag: %s"
+msgstr ""
+
+#: src/dd.c:906
+#, c-format
+msgid "invalid status flag: %s"
+msgstr ""
+
+#: src/dd.c:942
+#, c-format
+msgid "unrecognized operand %s=%s"
+msgstr ""
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr ""
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#: src/dd.c:973
+#, c-format
+msgid "cannot combine block and unblock"
+msgstr ""
+
+#: src/dd.c:975
+#, c-format
+msgid "cannot combine lcase and ucase"
+msgstr ""
+
+#: src/dd.c:977
+#, c-format
+msgid "cannot combine excl and nocreat"
+msgstr ""
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+
+#: src/dd.c:1180 src/dd.c:1237
+#, c-format
+msgid "%s: cannot seek"
+msgstr ""
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+#: src/dd.c:1229
+#, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr ""
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr ""
+
+#: src/dd.c:1376
+#, c-format
+msgid "setting flags for %s"
+msgstr ""
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr ""
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr ""
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr ""
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr ""
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr ""
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr ""
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr ""
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr ""
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr ""
+
+#: src/df.c:165
+#, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr ""
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr ""
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr ""
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr ""
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr ""
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr ""
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+
+#: src/df.c:749
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr ""
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr ""
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr ""
+
+#: src/df.c:943
+#, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr ""
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr ""
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr ""
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr ""
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr ""
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr ""
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#: src/du.c:279 src/wc.c:108
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr ""
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr ""
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr ""
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr ""
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr ""
+
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr ""
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+#: src/du.c:960 src/wc.c:662
+#, c-format
+msgid "cannot read file names from %s"
+msgstr ""
+
+#: src/du.c:1000 src/du.c:1003
+msgid "invalid zero-length file name"
+msgstr ""
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr ""
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr ""
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr ""
+
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr ""
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr ""
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr ""
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, c-format
+msgid "input line is too long"
+msgstr ""
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr ""
+
+#: src/expr.c:468 src/ptx.c:292
+#, c-format
+msgid "error in regular expression matcher"
+msgstr ""
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr ""
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr ""
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+
+#: src/factor.c:85
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr ""
+
+#: src/factor.c:158
+#, c-format
+msgid "%s is not a valid positive integer"
+msgstr ""
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr ""
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr ""
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+
+#: src/fold.c:291 src/pr.c:841
+#, c-format
+msgid "invalid number of columns: %s"
+msgstr ""
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr ""
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr ""
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr ""
+
+#: src/head.c:230 src/head.c:1046
+#, c-format
+msgid "%s: number of bytes is too large"
+msgstr ""
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr ""
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr ""
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr ""
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr ""
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr ""
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr ""
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr ""
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr ""
+
+#: src/head.c:976 src/head.c:1034
+#, c-format
+msgid "invalid trailing option -- %c"
+msgstr ""
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+
+#: src/hostname.c:103
+#, c-format
+msgid "cannot set name to %s"
+msgstr ""
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr ""
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr ""
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr ""
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr ""
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr ""
+
+#: src/id.c:205
+#, c-format
+msgid "cannot find name for user ID %lu"
+msgstr ""
+
+#: src/id.c:229
+#, c-format
+msgid "cannot find name for group ID %lu"
+msgstr ""
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr ""
+
+#: src/id.c:375
+msgid " groups="
+msgstr ""
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr ""
+
+#: src/install.c:321
+#, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr ""
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr ""
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr ""
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr ""
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr ""
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr ""
+
+#: src/install.c:570
+#, c-format
+msgid "waiting for strip"
+msgstr ""
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr ""
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr ""
+
+#: src/install.c:651
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+
+#: src/install.c:681
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+
+#: src/join.c:617 src/join.c:812
+#, c-format
+msgid "invalid field number: %s"
+msgstr ""
+
+#: src/join.c:638 src/join.c:647
+#, c-format
+msgid "invalid field specifier: %s"
+msgstr ""
+
+#: src/join.c:654
+#, c-format
+msgid "invalid file number in field spec: %s"
+msgstr ""
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr ""
+
+#: src/join.c:870 src/sort.c:3031
+#, c-format
+msgid "multi-character tab %s"
+msgstr ""
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr ""
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr ""
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr ""
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr ""
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr ""
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr ""
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr ""
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr ""
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr ""
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr ""
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr ""
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr ""
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr ""
+
+#: src/ln.c:295
+#, c-format
+msgid "creating symbolic link %s"
+msgstr ""
+
+#: src/ln.c:296
+#, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr ""
+
+#: src/ln.c:298
+#, c-format
+msgid "creating hard link to %.0s%s"
+msgstr ""
+
+#: src/ln.c:301
+#, c-format
+msgid "creating hard link %s"
+msgstr ""
+
+#: src/ln.c:302
+#, c-format
+msgid "creating hard link %s => %s"
+msgstr ""
+
+#: src/ln.c:324
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+
+#: src/ln.c:484
+#, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr ""
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr ""
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+
+#: src/logname.c:89
+#, c-format
+msgid "no login name"
+msgstr ""
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr ""
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr ""
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr ""
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr ""
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr ""
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr ""
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr ""
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr ""
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr ""
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr ""
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr ""
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr ""
+
+#: src/ls.c:2353
+#, c-format
+msgid "%s: not listing already-listed directory"
+msgstr ""
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr ""
+
+#: src/ls.c:2410
+#, c-format
+msgid "closing directory %s"
+msgstr ""
+
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr ""
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#: src/md5sum.c:150
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr ""
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr ""
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr ""
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr ""
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr ""
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr ""
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr ""
+
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr ""
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr ""
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr ""
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+
+#: src/mkdir.c:67
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr ""
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr ""
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+
+#: src/mkfifo.c:62 src/mknod.c:64
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr ""
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr ""
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+
+#: src/mknod.c:146
+msgid "Special files require major and minor device numbers."
+msgstr ""
+
+#: src/mknod.c:156
+msgid "Fifos do not have major and minor device numbers."
+msgstr ""
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr ""
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr ""
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr ""
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr ""
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr ""
+
+#: src/mknod.c:216
+#, c-format
+msgid "invalid device type %s"
+msgstr ""
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+
+#: src/mv.c:308
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr ""
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+#: src/nice.c:155
+#, c-format
+msgid "invalid adjustment %s"
+msgstr ""
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr ""
+
+#: src/nice.c:171 src/nice.c:182
+#, c-format
+msgid "cannot get niceness"
+msgstr ""
+
+#: src/nice.c:186
+#, c-format
+msgid "cannot set niceness"
+msgstr ""
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+
+#: src/nl.c:214
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:281
+#, c-format
+msgid "line number overflow"
+msgstr ""
+
+#: src/nl.c:479
+#, c-format
+msgid "invalid header numbering style: %s"
+msgstr ""
+
+#: src/nl.c:487
+#, c-format
+msgid "invalid body numbering style: %s"
+msgstr ""
+
+#: src/nl.c:495
+#, c-format
+msgid "invalid footer numbering style: %s"
+msgstr ""
+
+#: src/nl.c:504
+#, c-format
+msgid "invalid starting line number: %s"
+msgstr ""
+
+#: src/nl.c:513
+#, c-format
+msgid "invalid line number increment: %s"
+msgstr ""
+
+#: src/nl.c:525
+#, c-format
+msgid "invalid number of blank lines: %s"
+msgstr ""
+
+#: src/nl.c:539
+#, c-format
+msgid "invalid line number field width: %s"
+msgstr ""
+
+#: src/nl.c:558
+#, c-format
+msgid "invalid line numbering format: %s"
+msgstr ""
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+
+#: src/nohup.c:117
+#, c-format
+msgid "ignoring input"
+msgstr ""
+
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr ""
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr ""
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr ""
+
+#: src/od.c:307
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:353
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+
+#: src/od.c:683 src/od.c:802
+#, c-format
+msgid "invalid type string %s"
+msgstr ""
+
+#: src/od.c:693
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+
+#: src/od.c:812
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+
+#: src/od.c:871
+#, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr ""
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr ""
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr ""
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr ""
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr ""
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr ""
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr ""
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr ""
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr ""
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr ""
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr ""
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr ""
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr ""
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, c-format
+msgid "nonportable character %s in file name %s"
+msgstr ""
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr ""
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr ""
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr ""
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr ""
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr ""
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr ""
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr ""
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr ""
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr ""
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr ""
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr ""
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr ""
+
+#: src/pinky.c:427
+msgid "When"
+msgstr ""
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr ""
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr ""
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr ""
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr ""
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr ""
+
+#: src/pr.c:916
+#, c-format
+msgid "Invalid page range %s"
+msgstr ""
+
+#: src/pr.c:981
+#, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr ""
+
+#: src/pr.c:1005
+#, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr ""
+
+#: src/pr.c:1017
+#, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr ""
+
+#: src/pr.c:1058
+#, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr ""
+
+#: src/pr.c:1072
+#, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr ""
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr ""
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr ""
+
+#: src/pr.c:1202
+#, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr ""
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr ""
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2406
+#, c-format
+msgid "Page number overflow"
+msgstr ""
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr ""
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr ""
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr ""
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr ""
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr ""
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr ""
+
+#: src/printf.c:585
+#, c-format
+msgid "invalid precision: %s"
+msgstr ""
+
+#: src/printf.c:612
+#, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr ""
+
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr ""
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr ""
+
+#: src/ptx.c:422
+#, c-format
+msgid "%s (for regexp %s)"
+msgstr ""
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+
+#: src/ptx.c:2016
+#, c-format
+msgid "invalid gap width: %s"
+msgstr ""
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr ""
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+
+#: src/pwd.c:160
+#, c-format
+msgid "failed to chdir to %s"
+msgstr ""
+
+#: src/pwd.c:164 src/pwd.c:271
+#, c-format
+msgid "failed to stat %s"
+msgstr ""
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr ""
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr ""
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+
+#: src/remove.c:481 src/remove.c:525
+#, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr ""
+
+#: src/remove.c:494
+#, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr ""
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:631
+#, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr ""
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr ""
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr ""
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr ""
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr ""
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr ""
+
+#: src/remove.c:1262 src/remove.c:1465
+#, c-format
+msgid "failed to close directory %s"
+msgstr ""
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr ""
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr ""
+
+#: src/remove.c:1504
+#, c-format
+msgid "cannot remove root directory %s"
+msgstr ""
+
+#: src/remove.c:1544
+#, c-format
+msgid "cannot remove relative-named %s"
+msgstr ""
+
+#: src/remove.c:1558
+#, c-format
+msgid "cannot restore current working directory"
+msgstr ""
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr ""
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, c-format
+msgid "%s: remove all arguments? "
+msgstr ""
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr ""
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr ""
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+
+#: src/rmdir.c:148
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+
+#: src/seq.c:88
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr ""
+
+#: src/seq.c:342
+#, c-format
+msgid "invalid format string: %s"
+msgstr ""
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr ""
+
+#: src/setuidgid.c:51
+#, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr ""
+
+#: src/setuidgid.c:109
+#, c-format
+msgid "cannot set supplemental group"
+msgstr ""
+
+#: src/setuidgid.c:114
+#, c-format
+msgid "cannot set group-ID to %lu"
+msgstr ""
+
+#: src/setuidgid.c:118
+#, c-format
+msgid "cannot set user-ID to %lu"
+msgstr ""
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr ""
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr ""
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr ""
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr ""
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr ""
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr ""
+
+#: src/shred.c:478
+#, c-format
+msgid "%s: lseek failed"
+msgstr ""
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr ""
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr ""
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr ""
+
+#: src/shred.c:776
+#, c-format
+msgid "%s: fstat failed"
+msgstr ""
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr ""
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr ""
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr ""
+
+#: src/shred.c:889
+#, c-format
+msgid "%s: fcntl failed"
+msgstr ""
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr ""
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr ""
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr ""
+
+#: src/shred.c:1018
+#, c-format
+msgid "%s: failed to remove"
+msgstr ""
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr ""
+
+#: src/shred.c:1029 src/shred.c:1072
+#, c-format
+msgid "%s: failed to close"
+msgstr ""
+
+#: src/shred.c:1065
+#, c-format
+msgid "%s: failed to open for writing"
+msgstr ""
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr ""
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, c-format
+msgid "multiple random sources specified"
+msgstr ""
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr ""
+
+#: src/shuf.c:51
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+
+#: src/shuf.c:57
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, c-format
+msgid "multiple -i options specified"
+msgstr ""
+
+#: src/shuf.c:307
+#, c-format
+msgid "invalid input range %s"
+msgstr ""
+
+#: src/shuf.c:320
+#, c-format
+msgid "invalid line count %s"
+msgstr ""
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr ""
+
+#: src/shuf.c:353
+#, c-format
+msgid "cannot combine -e and -i options"
+msgstr ""
+
+#: src/shuf.c:362
+#, c-format
+msgid "extra operand %s\n"
+msgstr ""
+
+#: src/sleep.c:47
+#, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+
+#: src/sleep.c:138
+#, c-format
+msgid "invalid time interval %s"
+msgstr ""
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr ""
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+
+#: src/sort.c:326
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/sort.c:363
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+
+#: src/sort.c:538
+#, c-format
+msgid "waiting for %s [-d]"
+msgstr ""
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr ""
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr ""
+
+#: src/sort.c:758
+msgid "fflush failed"
+msgstr ""
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr ""
+
+#: src/sort.c:772
+#, c-format
+msgid "dup2 failed"
+msgstr ""
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr ""
+
+#: src/sort.c:880 src/sort.c:929
+msgid "couldn't create temporary file"
+msgstr ""
+
+#: src/sort.c:903
+msgid "couldn't open temporary file"
+msgstr ""
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr ""
+
+#: src/sort.c:924
+#, c-format
+msgid "couldn't create process for %s -d"
+msgstr ""
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr ""
+
+#: src/sort.c:975
+#, c-format
+msgid "warning: cannot remove: %s"
+msgstr ""
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr ""
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr ""
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr ""
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr ""
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr ""
+
+#: src/sort.c:2562
+#, c-format
+msgid "%s: invalid field specification %s"
+msgstr ""
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, c-format
+msgid "%s: invalid count at start of %s"
+msgstr ""
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr ""
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr ""
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr ""
+
+#: src/sort.c:2934
+#, c-format
+msgid "multiple compress programs specified"
+msgstr ""
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr ""
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr ""
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr ""
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr ""
+
+#: src/sort.c:3142
+#, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr ""
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr ""
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr ""
+
+#: src/split.c:211
+#, c-format
+msgid "creating file %s\n"
+msgstr ""
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr ""
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr ""
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr ""
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr ""
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr ""
+
+#: src/split.c:518
+#, c-format
+msgid "invalid number of lines: 0"
+msgstr ""
+
+#: src/stat.c:636
+#, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr ""
+
+#: src/stat.c:680
+#, c-format
+msgid "%s: invalid directive"
+msgstr ""
+
+#: src/stat.c:726
+#, c-format
+msgid "warning: backslash at end of format"
+msgstr ""
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr ""
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr ""
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr ""
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr ""
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr ""
+
+#: src/stty.c:885 src/stty.c:995
+#, c-format
+msgid "invalid argument %s"
+msgstr ""
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, c-format
+msgid "missing argument to %s"
+msgstr ""
+
+#: src/stty.c:976
+#, c-format
+msgid "invalid line discipline %s"
+msgstr ""
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr ""
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr ""
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr ""
+
+#: src/stty.c:1888
+#, c-format
+msgid "invalid integer argument %s"
+msgstr ""
+
+#: src/su.c:242
+msgid "Password:"
+msgstr ""
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr ""
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr ""
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr ""
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr ""
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr ""
+
+#: src/su.c:386
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr ""
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr ""
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr ""
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr ""
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr ""
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+
+#: src/tac.c:236 src/tac.c:337
+#, c-format
+msgid "%s: seek failed"
+msgstr ""
+
+#: src/tac.c:265
+#, c-format
+msgid "record too large"
+msgstr ""
+
+#: src/tac.c:459
+#, c-format
+msgid "cannot create temporary file %s"
+msgstr ""
+
+#: src/tac.c:466
+#, c-format
+msgid "cannot open %s for writing"
+msgstr ""
+
+#: src/tac.c:487 src/tac.c:494
+#, c-format
+msgid "%s: write error"
+msgstr ""
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr ""
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tail.c:229
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+
+#: src/tail.c:244
+#, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr ""
+
+#: src/tail.c:411
+#, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr ""
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr ""
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr ""
+
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr ""
+
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr ""
+
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr ""
+
+#: src/tail.c:1025
+#, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr ""
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr ""
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr ""
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+
+#: src/tail.c:1439
+#, c-format
+msgid "number in %s is too large"
+msgstr ""
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr ""
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr ""
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr ""
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr ""
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr ""
+
+#: src/tail.c:1667
+#, c-format
+msgid "cannot follow %s by name"
+msgstr ""
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+
+#: src/test.c:125
+#, c-format
+msgid "missing argument after %s"
+msgstr ""
+
+#: src/test.c:161
+#, c-format
+msgid "invalid integer %s"
+msgstr ""
+
+#: src/test.c:242
+msgid "')' expected"
+msgstr ""
+
+#: src/test.c:245
+#, c-format
+msgid "')' expected, found %s"
+msgstr ""
+
+#: src/test.c:261 src/test.c:606
+#, c-format
+msgid "%s: unary operator expected"
+msgstr ""
+
+#: src/test.c:330
+msgid "-nt does not accept -l"
+msgstr ""
+
+#: src/test.c:343
+msgid "-ef does not accept -l"
+msgstr ""
+
+#: src/test.c:359
+msgid "-ot does not accept -l"
+msgstr ""
+
+#: src/test.c:368
+msgid "unknown binary operator"
+msgstr ""
+
+#: src/test.c:634
+#, c-format
+msgid "%s: binary operator expected"
+msgstr ""
+
+#: src/test.c:694
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+msgid "missing `]'"
+msgstr ""
+
+#: src/test.c:846
+#, c-format
+msgid "extra argument %s"
+msgstr ""
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr ""
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr ""
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr ""
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr ""
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr ""
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr ""
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+
+#: src/tr.c:519
+#, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr ""
+
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr ""
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr ""
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr ""
+
+#: src/tr.c:937
+#, c-format
+msgid "invalid character class %s"
+msgstr ""
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr ""
+
+#: src/tr.c:1275
+#, c-format
+msgid "too many characters in set"
+msgstr ""
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr ""
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr ""
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr ""
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr ""
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr ""
+
+#: src/tr.c:1731
+msgid "Two strings must be given when translating."
+msgstr ""
+
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr ""
+
+#: src/true.c:42
+#, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tsort.c:474
+#, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr ""
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr ""
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr ""
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr ""
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr ""
+
+#: src/unexpand.c:125
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, c-format
+msgid "tab stop value is too large"
+msgstr ""
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+
+#: src/uniq.c:350
+#, c-format
+msgid "too many repeated lines"
+msgstr ""
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr ""
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr ""
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr ""
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr ""
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr ""
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr ""
+
+#: src/uptime.c:135
+msgid "am"
+msgstr ""
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr ""
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr ""
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr ""
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/uptime.c:147
+#, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ""
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr ""
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+
+#: src/wc.c:121
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr ""
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr ""
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr ""
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr ""
+
+#: src/who.c:497
+msgid "clock change"
+msgstr ""
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr ""
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr ""
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+
+#: src/who.c:551
+msgid "NAME"
+msgstr ""
+
+#: src/who.c:551
+msgid "LINE"
+msgstr ""
+
+#: src/who.c:551
+msgid "TIME"
+msgstr ""
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr ""
+
+#: src/who.c:552
+msgid "PID"
+msgstr ""
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr ""
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr ""
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr ""
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+
+#: src/whoami.c:51
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+
+#: src/whoami.c:95
+#, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr ""
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
diff --git a/po/cs.gmo b/po/cs.gmo
new file mode 100644
index 0000000..16f6e04
--- /dev/null
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
new file mode 100644
index 0000000..7239694
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,12478 @@
+# Czech translations for GNU textutils
+# Copyright (C) 1996 Free Software Foundation, Inc.
+# Vladimir Michl <Vladimir.Michl@seznam.cz>, 1996.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: textutils 2.0.14\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2001-08-18 15:01+0200\n"
+"Last-Translator: Vladimir Michl <Vladimir.Michl@seznam.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: 8-bit\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "práva %s nelze zmìnit"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, fuzzy, c-format
+msgid "setting permissions for %s"
+msgstr "práva %s nelze zmìnit"
+
+#: lib/argmatch.c:134
+#, fuzzy, c-format
+msgid "invalid argument %s for %s"
+msgstr "argument %s je pro `%s' neplatný"
+
+#: lib/argmatch.c:135
+#, fuzzy, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argument %s je pro `%s' nejednoznaèný"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Platné argumenty jsou:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "chyba pøi zápisu"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Neznámá chyba systému"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, fuzzy, c-format
+msgid "cannot stat %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr ""
+
+#: lib/file-type.c:39
+#, fuzzy
+msgid "regular file"
+msgstr "ètení ze souboru se nezdaøilo"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr ""
+
+#: lib/file-type.c:45
+#, fuzzy
+msgid "block special file"
+msgstr "velikost bloku"
+
+#: lib/file-type.c:48
+#, fuzzy
+msgid "character special file"
+msgstr "posun znaku je nula"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr ""
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr ""
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr ""
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr ""
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr ""
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr ""
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr ""
+
+#: lib/file-type.c:71
+#, fuzzy
+msgid "weird file"
+msgstr "ètení ze souboru se nezdaøilo"
+
+#: lib/gai_strerror.c:44
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "tento systém nepodporuje roury"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "tento systém nepodporuje roury"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr ""
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "tento systém nepodporuje roury"
+
+#: lib/gai_strerror.c:54
+#, fuzzy
+msgid "System error"
+msgstr "chyba pøi zápisu"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+#, fuzzy
+msgid "Unknown error"
+msgstr "Neznámá chyba systému"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: pøepínaè `%s' není jednoznaèný\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: pøepínaè `--%s' musí být zadán bez argumentu\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: pøepínaè `%c%s' musí být zadán bez argumentu\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: pøepínaè `%s' vy¾aduje argument\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: neznámý pøepínaè `--%s'\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: neznámý pøepínaè `%c%s'\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: neznámý pøepínaè -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: neznámý pøepínaè -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: pøepínaè vy¾aduje argument -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: pøepínaè `-W %s' není jednoznaèný\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: pøepínaè `-W %s' musí být zadán bez argumentu\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "velikost bloku"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "práva %s nelze zmìnit"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "pamì» vyèerpána"
+
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "'"
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "%s: chyba pøi ètení"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: chybný regulární výraz: %s"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "chybná tøída znaku `%s'"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "pamì» vyèerpána"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: chybný regulární výraz: %s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "chyba pøi vyhledávání pomocí regulárního výrazu"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "%s: chybný regulární výraz: %s"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "chyba pøi vyhledávání pomocí regulárního výrazu"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr ""
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr ""
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[aAyY]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+#, fuzzy
+msgid "iconv function not usable"
+msgstr "znak U+%04X nelze vypsat: funkce iconv není pou¾itelná"
+
+#: lib/unicodeio.c:153
+#, fuzzy
+msgid "iconv function not available"
+msgstr "znak U+%04X nelze vypsat: funkce iconv není dostupná"
+
+#: lib/unicodeio.c:160
+#, fuzzy
+msgid "character out of range"
+msgstr "U+%04X: znak je mimo rozsah"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "znak U+%04X nelze pøevést do lokální znakové sady"
+
+#: lib/unicodeio.c:226
+#, fuzzy, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "znak U+%04X nelze pøevést do lokální znakové sady"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "neplatný u¾ivatel"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "neplatná skupina"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "neplatný u¾ivatel"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+#, fuzzy
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+" Tento program je volné programové vybavení; mù¾ete jej ¹íøit a "
+"modifikovat\n"
+"podle ustanovení Obecné veøejné licence GNU, vydávané Free Software\n"
+"Foundation; a to buï verze 2 této licence anebo (podle va¹eho uvá¾ení),\n"
+"kterékoli pozdìj¹í verze.\n"
+"\n"
+" Tento program je roz¹iøován v nadìji, ¾e bude u¾iteèný, av¹ak BEZ "
+"JAKÉKOLI\n"
+"ZÁRUKY; neposkytují se ani odvozené záruky PRODEJNOSTI anebo VHODNOSTI PRO\n"
+"NÌJAKÝ KONKRÉTNÍ ÚÈEL. Dal¹í podrobnosti najdete v Obecné veøené licenci "
+"GNU.\n"
+"\n"
+" Kopie Obecné veøejné licence GNU mìla být dodána spolu s tímto programem;\n"
+"pokud se tak nestalo, napi¹te o ni Free Software Foundation, Inc.,\n"
+"59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Autoøi: %s\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Autoøi: %s\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, fuzzy, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Autoøi: %s\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr "Autoøi: %s\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr "Autoøi: %s\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xfts.c:58
+#, fuzzy, c-format
+msgid "invalid argument: %s"
+msgstr "argument %s je pro `%s' neplatný"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr ""
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr ""
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr ""
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "chybí seznam polo¾ek"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "chybná tøída znaku `%s'"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s je pøíli¹ velké"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Více informací získáte pøíkazem `%s --help'.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+"Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+"\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+" Chyby v programu oznamujte na adrese <bug-textutils@gnu.org> (pouze\n"
+"anglicky), pøipomínky k pøekladu zasílejte na adresu <cs@li.org> (èesky)."
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "chyba pøi ètení"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "neplatné èíslo"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "chybný typ øetìzce `%s'"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, fuzzy, c-format
+msgid "extra operand %s"
+msgstr "extra argument `%s' není s -c dovolen"
+
+#: src/base64.c:316 src/cat.c:785
+#, fuzzy, c-format
+msgid "closing standard input"
+msgstr "standardní vstup"
+
+#: src/basename.c:54
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾ití: %s [SOUBOR]...\n"
+" nebo: %s [PØEPÍNAÈ]\n"
+
+#: src/basename.c:59
+#, fuzzy
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+" Vypí¹e JMÉNO bez úvodních adresáøù. Pokud je zadáno, také odstraní "
+"koncovou\n"
+"PØÍPONU.\n"
+"\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, fuzzy, c-format
+msgid "missing operand"
+msgstr "%s: po `%c' je oèekáváno celé èíslo"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ] [SOUBOR]...\n"
+
+#: src/cat.c:99
+#, fuzzy
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+" Vypisuje SOUBOR(Y) na standardní výstup. Je-li uvedeno více souborù,\n"
+"vypisuje je postupnì. Toho se dá vyu¾ít na spojení více souborù do jednoho.\n"
+"\n"
+" -A, --show-all stejné jako -vET\n"
+" -b, --number-nonblank èísluje neprázdné výstupní øádky\n"
+" -e stejné jako -vE\n"
+" -E, --show-ends vypí¹e $ na konci ka¾dého øádku\n"
+" -n, --number èísluje v¹echny výstupní øádky\n"
+" -s, --squeeze-blank prázdné øádky jdoucí po sobì redukuje na jediný\n"
+" -t stejné jako -vT\n"
+" -T, --show-tabs vypisuje znak TAB jako ^I\n"
+" -u (ignorováno)\n"
+" -v, --show-nonprinting pou¾ije zápisu ^ a M-, kromì znakù LF a TAB\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+"Jestli¾e SOUBOR nebude zadán nebo bude -, pak bude èten standardní vstup.\n"
+
+#: src/cat.c:109
+#, fuzzy
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" Vypisuje SOUBOR(Y) na standardní výstup. Je-li uvedeno více souborù,\n"
+"vypisuje je postupnì. Toho se dá vyu¾ít na spojení více souborù do jednoho.\n"
+"\n"
+" -A, --show-all stejné jako -vET\n"
+" -b, --number-nonblank èísluje neprázdné výstupní øádky\n"
+" -e stejné jako -vE\n"
+" -E, --show-ends vypí¹e $ na konci ka¾dého øádku\n"
+" -n, --number èísluje v¹echny výstupní øádky\n"
+" -s, --squeeze-blank prázdné øádky jdoucí po sobì redukuje na jediný\n"
+" -t stejné jako -vT\n"
+" -T, --show-tabs vypisuje znak TAB jako ^I\n"
+" -u (ignorováno)\n"
+" -v, --show-nonprinting pou¾ije zápisu ^ a M-, kromì znakù LF a TAB\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+"Jestli¾e SOUBOR nebude zadán nebo bude -, pak bude èten standardní vstup.\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+#: src/cat.c:333
+#, fuzzy, c-format
+msgid "cannot do ioctl on %s"
+msgstr "ioctl na `%s' není mo¾né vykonat"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "standardní výstup"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: vstupní soubor je zároveò výstupním"
+
+#: src/chgrp.c:95 src/install.c:611
+#, fuzzy, c-format
+msgid "invalid group %s"
+msgstr "neplatná skupina"
+
+#: src/chgrp.c:112
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Pou¾ití: %s [PØEPÍNAÈ]... [SOUBOR]...\n"
+" nebo: %s --traditional [SOUBOR] [[+]POSUN [[+]NÁVÌ©TÍ]]\n"
+
+#: src/chgrp.c:117
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr ""
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, fuzzy, c-format
+msgid "missing operand after %s"
+msgstr "%s: po `%c' je oèekáváno celé èíslo"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, fuzzy, c-format
+msgid "failed to get attributes of %s"
+msgstr "nastavení práv souboru %s"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr ""
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "symbolický odkaz %s ani soubor na nìj¾ se odkazuje nebyly zmìnìny\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "práva souboru %s zmìnìna na %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "práva souboru %s se nepodaøila zmìnit na %04lo (%s)\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "práva souboru %s zùstala %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, fuzzy, c-format
+msgid "cannot access %s"
+msgstr "%s nelze provést"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, fuzzy, c-format
+msgid "cannot read directory %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/chmod.c:251
+#, fuzzy, c-format
+msgid "changing permissions of %s"
+msgstr "práva %s nelze zmìnit"
+
+#: src/chmod.c:286
+#, fuzzy, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "práva %s nelze zmìnit"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, fuzzy, c-format
+msgid "fts_read failed"
+msgstr "ètení ze souboru se nezdaøilo"
+
+#: src/chmod.c:345
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Pou¾ití: %s [PØEPÍNAÈ]... POSLEDNÍ\n"
+" nebo: %s [PØEPÍNAÈ]... PRVNÍ POSLEDNÍ\n"
+" nebo: %s [PØEPÍNAÈ]... PRVNÍ PØÍRÙSTEK POSLEDNÍ\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chmod.c:360
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+"Zmìna práv zadaných SOUBORù na PRÁVA.\n"
+"\n"
+" -c, --changes vypisuje pouze soubory, jejich¾ práva byla "
+"zmìnìna\n"
+" -f, --silent, --quiet potlaèí vìt¹inu chybových zpráv\n"
+" -v, --verbose vypisuje informaci o ka¾dém zpracovaném souboru\n"
+" --reference=RSOUBOR místo hodnoty PRÁVA pou¾ije práva souboru RSOUBOR\n"
+" -R, --recursive pracuje i se soubory a adresáøi v podadresáøích\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+" Ka¾dá PRÁVA jsou slo¾ena z jednoho nebo více písmen z 'ugoa' "
+"následovaného\n"
+"jedním ze symbolù '+-=' a jedním nebo více písmeny z 'rwxXstugo'.\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr ""
+
+#: src/chmod.c:510
+#, fuzzy, c-format
+msgid "invalid mode: %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/chown-core.c:147
+#, fuzzy, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "vlastníka souboru %s se nepodaøilo zmìnit na "
+
+#: src/chown-core.c:148
+#, fuzzy, c-format
+msgid "changed group of %s to %s\n"
+msgstr "skupinu souboru %s se nepodaøilo zmìnit na %s\n"
+
+#: src/chown-core.c:149
+#, fuzzy, c-format
+msgid "no change to ownership of %s\n"
+msgstr "zachování vlastnictví souboru %s"
+
+#: src/chown-core.c:152
+#, fuzzy, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "práva %s nelze zmìnit"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "skupinu souboru %s se nepodaøilo zmìnit na %s\n"
+
+#: src/chown-core.c:154
+#, fuzzy, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "práva %s nelze zmìnit"
+
+#: src/chown-core.c:157
+#, fuzzy, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "vlastníkem souboru %s zùstal "
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "skupina souboru %s zùstala %s\n"
+
+#: src/chown-core.c:159
+#, fuzzy, c-format
+msgid "ownership of %s retained\n"
+msgstr "vlastníkem souboru %s zùstal "
+
+#: src/chown-core.c:344
+#, fuzzy, c-format
+msgid "cannot dereference %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/chown-core.c:432
+#, fuzzy, c-format
+msgid "changing ownership of %s"
+msgstr "zachování vlastnictví souboru %s"
+
+#: src/chown-core.c:433
+#, fuzzy, c-format
+msgid "changing group of %s"
+msgstr "vlastníka a/nebo skupinu %s nelze zmìnit"
+
+#: src/chown.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Pou¾ití: %s [PØEPÍNAÈ]... [SOUBOR]...\n"
+" nebo: %s --traditional [SOUBOR] [[+]POSUN [[+]NÁVÌ©TÍ]]\n"
+
+#: src/chown.c:98
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾ití: %s [SOUBOR]...\n"
+" nebo: %s [PØEPÍNAÈ]\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+
+#: src/chroot.c:89
+#, fuzzy, c-format
+msgid "cannot change root directory to %s"
+msgstr "do adresáøe `%s' nelze vejít"
+
+#: src/chroot.c:92
+#, fuzzy, c-format
+msgid "cannot chdir to root directory"
+msgstr "do adresáøe `%s' nelze vejít"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, fuzzy, c-format
+msgid "cannot run command %s"
+msgstr "ioctl na `%s' není mo¾né vykonat"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: soubor je pøíli¹ dlouhý"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Pou¾ití: %s [SOUBOR]...\n"
+" nebo: %s [PØEPÍNAÈ]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ]... SOUBOR1 SOUBOR2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr ""
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+
+#: src/comm.c:86
+#, fuzzy
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+" Porovnává soubory LEVÝ_SOUBOR a PRAVÝ_SOUBOR, jejich¾ øádky jsou "
+"uspoøádány\n"
+"podle nìjakého klíèe, øádek po øádku. Výstupem jsou tøi sloupce, øádky "
+"obsa¾ené\n"
+"pouze v levém souboru, øádky obsa¾ené pouze v pravém souboru, øádky "
+"spoleèné\n"
+"obìma souborùm.\n"
+"\n"
+" -1 neukazuje øádky obsa¾ené pouze v levém souboru\n"
+" -2 neukazuje øádky obsa¾ené pouze v pravém souboru\n"
+" -3 neukazuje øádky spoleèné obìma souborùm\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, fuzzy, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "zachování vlastnictví souboru %s"
+
+#: src/copy.c:222
+#, fuzzy, c-format
+msgid "failed to lookup file %s"
+msgstr "zachování èasù souboru %s"
+
+#: src/copy.c:227
+#, fuzzy, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "zachování vlastnictví souboru %s"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, fuzzy, c-format
+msgid "cannot open %s for reading"
+msgstr "`%s' nelze do `%s' pøemístit"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, fuzzy, c-format
+msgid "cannot fstat %s"
+msgstr "datum nelze nastavit"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr ""
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, fuzzy, c-format
+msgid "cannot remove %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, fuzzy, c-format
+msgid "removed %s\n"
+msgstr "mazání %s\n"
+
+#: src/copy.c:329
+#, fuzzy, c-format
+msgid "cannot create regular file %s"
+msgstr "nelze vytvoøit doèasný soubor"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, fuzzy, c-format
+msgid "reading %s"
+msgstr "chyba pøi ètení %s"
+
+#: src/copy.c:467 src/head.c:428
+#, fuzzy, c-format
+msgid "cannot lseek %s"
+msgstr "%s nelze provést"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, fuzzy, c-format
+msgid "writing %s"
+msgstr "chyba pøi zápisu %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "zachování èasù souboru %s"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, fuzzy, c-format
+msgid "closing %s"
+msgstr "uzavírání %s (fd=%d)"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: pøepsat `%s', pøehlédnout práva %04lo? "
+
+#: src/copy.c:812
+#, fuzzy, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: pøepsat `%s'? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (záloha: %s)"
+
+#: src/copy.c:1048
+#, fuzzy, c-format
+msgid "omitting directory %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr ""
+
+#: src/copy.c:1093 src/ln.c:209
+#, fuzzy, c-format
+msgid "%s and %s are the same file"
+msgstr "`%s' a `%s' jsou jeden a tentý¾ soubor"
+
+#: src/copy.c:1149
+#, fuzzy, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "do adresáøe `%s' nelze vejít"
+
+#: src/copy.c:1167
+#, fuzzy, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "%s: adresáø nelze pøepsat souborem, který není adresáøem"
+
+#: src/copy.c:1185
+#, fuzzy, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/copy.c:1223
+#, fuzzy, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "do adresáøe `%s' nelze vejít"
+
+#: src/copy.c:1253
+#, fuzzy, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "vytvoøení zálohy souboru `%s' mù¾e znièit zdroj; `%s' nepøejmenován"
+
+#: src/copy.c:1254
+#, fuzzy, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "vytvoøení zálohy souboru `%s' mù¾e znièit zdroj; `%s' nekopírován"
+
+#: src/copy.c:1273 src/ln.c:239
+#, fuzzy, c-format
+msgid "cannot backup %s"
+msgstr "pøíkaz %s nelze provést"
+
+#: src/copy.c:1372
+#, fuzzy, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/copy.c:1389
+#, fuzzy, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "do adresáøe `%s' nelze vejít"
+
+#: src/copy.c:1414
+#, fuzzy, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/copy.c:1459
+#, fuzzy, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "do adresáøe `%s' nelze vejít"
+
+#: src/copy.c:1502
+#, fuzzy, c-format
+msgid "cannot move %s to %s"
+msgstr "ioctl na `%s' není mo¾né vykonat"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+
+#: src/copy.c:1553
+#, fuzzy, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "%s: zacyklené symbolické odkazy nelze kopírovat"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr "%s: relativní symbolický odkaz lze vytvoøit pouze v aktuálním adresáøi"
+
+#: src/copy.c:1661
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/copy.c:1686
+#, fuzzy, c-format
+msgid "cannot create link %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, fuzzy, c-format
+msgid "cannot create fifo %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/copy.c:1722
+#, fuzzy, c-format
+msgid "cannot create special file %s"
+msgstr "posun znaku je nula"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, fuzzy, c-format
+msgid "cannot read symbolic link %s"
+msgstr "ioctl na `%s' není mo¾né vykonat"
+
+#: src/copy.c:1759
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/copy.c:1790
+#, fuzzy, c-format
+msgid "%s has unknown file type"
+msgstr "%s: neznámý typ souboru"
+
+#: src/copy.c:1910 src/ln.c:308
+#, fuzzy, c-format
+msgid "cannot un-backup %s"
+msgstr "pøíkaz %s nelze provést"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (obnoven ze zálohy)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Pou¾ití: %s [PØEPÍNAÈ]... POSLEDNÍ\n"
+" nebo: %s [PØEPÍNAÈ]... PRVNÍ POSLEDNÍ\n"
+" nebo: %s [PØEPÍNAÈ]... PRVNÍ PØÍRÙSTEK POSLEDNÍ\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+"Kopíruje ZDROJ do CÍLe nebo více ZDROJù do ADRESÁØe.\n"
+"\n"
+" -a, --archive stejné jako pou¾ití pøepínaèù '-dpR'\n"
+" --backup=[TYP] vytvoøí zálo¾ní kopie pøepisovaných souborù\n"
+" -b jako --backup, ale bez argumentu\n"
+" -d, --no-dereference zachovává symbolické odkazy\n"
+" -f, --force bude mazat existující cíle bez optání\n"
+" -i, --interactive ptá se pøed pøepsáním\n"
+" -l, --link tvoøí odkazy místo kopírování\n"
+" -p, --preserve zachovává práva a èasy souborù, je-li to "
+"mo¾né\n"
+" -P, --parents pøidává zdrojovou cestu do cílového ADRESÁØe\n"
+" -r kopíruje rekurzivnì, co není adresáøem "
+"kopíruje\n"
+" jako by to byl soubor.\n"
+" POZOR: Pokud budete kopírovat speciální "
+"soubory\n"
+" jako tøeba roury nebo /dev/zero, pak radìji\n"
+" pou¾ijte -R\n"
+" --sparse=KDY øídí tvorbu souborù s dírami\n"
+" -R, --recursive kopíruje adresáøe rekurzivnì\n"
+" --strip-trailing-slashes odstraòuje lomítka na konci názvù v¹ech "
+"ZDROJù\n"
+" -s, --symbolic-link tvoøí symbolické odkazy místo kopírování\n"
+" -S, --suffix=PØÍPONA zmìní obvyklou pøíponu zálo¾ních souborù\n"
+" na PØÍPONU\n"
+" -u, --update kopíruje pouze, kdy¾ zdrojový soubor je\n"
+" novìj¹í ne¾ cílový, nebo kdy¾ cílový soubor\n"
+" neexistuje\n"
+" -v, --verbose vypisuje bli¾¹í informace o vykonávání "
+"pøíkazu\n"
+" -x, --one-file-system zùstane v jednom souborovém systému\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+" Implicitnì, jsou ZDROJové soubory s dírami detekovány a odpovídající "
+"CÍLový\n"
+"soubor je vytvoøen stejnì `dìravý'. Toto je voleno pøepínaèem --"
+"sparse=auto.\n"
+"Pøepínaèem --sparse=always øíkáme, ¾e v CÍLových souborech se mají tvoøit\n"
+"díry, jakmile ZDROJový soubor obsahuje dostateènì dlouhé sekvence nulových\n"
+"bajtù. Pøepínaèem --sparse=never tvorbì souborù s dírami zabráníme.\n"
+"\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+
+#: src/cp.c:216
+#, fuzzy
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+"Pøejmenování ZDROJe na CÍL nebo pøemístìní ZDROJe(ù) do ADRESÁØe.\n"
+"\n"
+" --backup=[TYP] vytvoøí zálo¾ní kopii ka¾dého existujícího\n"
+" cílového souboru\n"
+" -b jako --backup, ale bez argumentu\n"
+" -f, --force ma¾e existující cíle, neptá se\n"
+" -i, --interactive pøed pøepsáním souboru se zeptá\n"
+" --strip-trailing-slashes odstraní v¹echna lomítka z konce ZDROJe(ù)\n"
+" -S, --suffix=PØÍPONA pøípona zálo¾ních souborù\n"
+" --target-directory=ADRESÁØ pøemístí v¹echny ZDROJe do ADRESÁØe\n"
+" -u, --update pøemístí pouze star¹í a úplnì nové soubory\n"
+" -v, --verbose vypisuje co se dìje\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+
+#: src/cp.c:225
+#, fuzzy
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"Kopíruje ZDROJ do CÍLe nebo více ZDROJù do ADRESÁØe.\n"
+"\n"
+" -a, --archive stejné jako pou¾ití pøepínaèù '-dpR'\n"
+" --backup=[TYP] vytvoøí zálo¾ní kopie pøepisovaných souborù\n"
+" -b jako --backup, ale bez argumentu\n"
+" -d, --no-dereference zachovává symbolické odkazy\n"
+" -f, --force bude mazat existující cíle bez optání\n"
+" -i, --interactive ptá se pøed pøepsáním\n"
+" -l, --link tvoøí odkazy místo kopírování\n"
+" -p, --preserve zachovává práva a èasy souborù, je-li to "
+"mo¾né\n"
+" -P, --parents pøidává zdrojovou cestu do cílového ADRESÁØe\n"
+" -r kopíruje rekurzivnì, co není adresáøem "
+"kopíruje\n"
+" jako by to byl soubor.\n"
+" POZOR: Pokud budete kopírovat speciální "
+"soubory\n"
+" jako tøeba roury nebo /dev/zero, pak radìji\n"
+" pou¾ijte -R\n"
+" --sparse=KDY øídí tvorbu souborù s dírami\n"
+" -R, --recursive kopíruje adresáøe rekurzivnì\n"
+" --strip-trailing-slashes odstraòuje lomítka na konci názvù v¹ech "
+"ZDROJù\n"
+" -s, --symbolic-link tvoøí symbolické odkazy místo kopírování\n"
+" -S, --suffix=PØÍPONA zmìní obvyklou pøíponu zálo¾ních souborù\n"
+" na PØÍPONU\n"
+" -u, --update kopíruje pouze, kdy¾ zdrojový soubor je\n"
+" novìj¹í ne¾ cílový, nebo kdy¾ cílový soubor\n"
+" neexistuje\n"
+" -v, --verbose vypisuje bli¾¹í informace o vykonávání "
+"pøíkazu\n"
+" -x, --one-file-system zùstane v jednom souborovém systému\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+" Implicitnì, jsou ZDROJové soubory s dírami detekovány a odpovídající "
+"CÍLový\n"
+"soubor je vytvoøen stejnì `dìravý'. Toto je voleno pøepínaèem --"
+"sparse=auto.\n"
+"Pøepínaèem --sparse=always øíkáme, ¾e v CÍLových souborech se mají tvoøit\n"
+"díry, jakmile ZDROJový soubor obsahuje dostateènì dlouhé sekvence nulových\n"
+"bajtù. Pøepínaèem --sparse=never tvorbì souborù s dírami zabráníme.\n"
+"\n"
+
+#: src/cp.c:234
+#, fuzzy
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+" Pokud není pøípona zálo¾ních souborù nastavena pøepínaèem --suffix nebo \n"
+"promìnnou SIMPLE_BACKUP_SUFFIX, je pou¾ívána pøípona `~'. Zpùsob vytváøení\n"
+"zálo¾ních souborù lze ovlivnit nastavením promìnné VERSION_CONTROL, hodnoty\n"
+"mohou být:\n"
+"\n"
+" none, off zálo¾ní kopie nevytváøet (i kdy¾ je zadán pøepínaè --"
+"backup)\n"
+" numbered, t èíslované zálo¾ní kopie\n"
+" existing, nil èíslované, jestli¾e ji¾ èíslovaná zálo¾ní kopie existuje,\n"
+" jinak jednoduché\n"
+" simple, never jednoduché zálo¾ní kopie\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+#, fuzzy
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" Pokud není pøípona zálo¾ních souborù nastavena pøepínaèem --suffix nebo \n"
+"promìnnou SIMPLE_BACKUP_SUFFIX, je pou¾ívána pøípona `~'. Zpùsob vytváøení\n"
+"zálo¾ních souborù lze ovlivnit nastavením promìnné VERSION_CONTROL, hodnoty\n"
+"mohou být:\n"
+"\n"
+" none, off zálo¾ní kopie nevytváøet (i kdy¾ je zadán pøepínaè --"
+"backup)\n"
+" numbered, t èíslované zálo¾ní kopie\n"
+" existing, nil èíslované, jestli¾e ji¾ èíslovaná zálo¾ní kopie existuje,\n"
+" jinak jednoduché\n"
+" simple, never jednoduché zálo¾ní kopie\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+" Speciálním pøípadem je, má-li má cp tvoøit zálo¾ní kopii ZDROJe, kdy¾ "
+"jsou\n"
+"zadány pøepínaèe --force a --backup, a ZDROJ a CÍL jsou stejného jména "
+"jednoho\n"
+"obyèejného souboru.\n"
+
+#: src/cp.c:314
+#, fuzzy, c-format
+msgid "failed to preserve times for %s"
+msgstr "zachování èasù souboru %s"
+
+#: src/cp.c:340
+#, fuzzy, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "práva %s nelze zmìnit"
+
+#: src/cp.c:456
+#, fuzzy, c-format
+msgid "cannot make directory %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s exituje, ale není adresáøem"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr ""
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, fuzzy, c-format
+msgid "missing file operand"
+msgstr "pøeskakuji argument"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, fuzzy, c-format
+msgid "missing destination file operand after %s"
+msgstr "chybí seznam polo¾ek"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, fuzzy, c-format
+msgid "target %s is not a directory"
+msgstr "%s exituje, ale není adresáøem"
+
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "jestli¾e mají být zachovány cesty, cílem musí být adresáø"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr ""
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, fuzzy, c-format
+msgid "multiple target directories specified"
+msgstr "\\%c: chybná escape sekvence"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "symbolický a pevný odkaz nelze vytvoøit zároveò"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "typ zálohy"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "vstup se ztratil"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: èíslo øádku je mimo rozsah"
+
+#: src/csplit.c:709
+#, fuzzy, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: `%s': èíslo øádku je mimo rozsah"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, fuzzy, c-format
+msgid " on repetition %s\n"
+msgstr " v %d. opakování\n"
+
+#: src/csplit.c:755
+#, fuzzy, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: `%s': nenalezeno"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "chyba pøi vyhledávání pomocí regulárního výrazu"
+
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "chyba pøi zápisu do `%s'"
+
+#: src/csplit.c:1060
+#, fuzzy, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: po `%c' je oèekáváno celé èíslo"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: '}' je po¾adována v poèítadle opakování"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: mezi `{' a `}' musí být celé èíslo"
+
+#: src/csplit.c:1113
+#, fuzzy, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: postrádán koncový oddìlovaè `%c'"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: chybný regulární výraz: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: chybný vzorek"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: èíslo øádku musí být vìt¹í ne¾ nula"
+
+#: src/csplit.c:1172
+#, fuzzy, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "èíslo øádku `%s' je men¹í ne¾ èíslo pøedcházejícího øádku, %s"
+
+#: src/csplit.c:1178
+#, fuzzy, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "varování: èíslo øádku `%s' je stejné s èíslem pøedcházejícího øádku"
+
+#: src/csplit.c:1231
+#, fuzzy, c-format
+msgid "invalid format width"
+msgstr "argument %s je pro `%s' neplatný"
+
+#: src/csplit.c:1252
+#, fuzzy, c-format
+msgid "invalid format precision"
+msgstr "chybný typ øetìzce `%s'"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "v parametru pøepínaèe chybí urèení typu konverze"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "chybnì zadaný typ konverze v parametru pøepínaèe: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "chybnì zadaný typ konverze v parametru pøepínaèe: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "pøíli¹ mnoho typù konverze %% v parametru pøepínaèe"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "v parametru pøepínaèe chybí zadání typu konverze pomocí %%"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: chybné èíslo"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ]... SOUBOR VZOREK...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/csplit.c:1486
+#, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ]... [SOUBOR]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/cut.c:199
+#, fuzzy
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" Zalamuje vstupní øádky ka¾dého SOUBORu (implicitnì standardního vstupu),\n"
+"zapisujíce výstup na standardní výstup.\n"
+"\n"
+" -b, --bytes pro zalamování poèítá bajty na øádku místo sloupcù\n"
+" -s, --spaces zalamuje øádky v mezerách\n"
+" -w, --width=©ÍØKA pou¾ívá ©ÍØKA sloupcù místo 80\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+"Ve sloupcích nejsou zahrnuty kontrolní znaky narozdíl od bajtù.\n"
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "chybný seznam bajtù nebo polo¾ek"
+
+#: src/cut.c:469
+#, fuzzy, c-format
+msgid "byte offset %s is too large"
+msgstr "%s je pøíli¹ velké"
+
+#: src/cut.c:472
+#, fuzzy, c-format
+msgid "field number %s is too large"
+msgstr "èíslo polo¾ky je nula"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "pouze jeden typ seznamu mù¾e být zadán"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "oddìlovaè musí být jediný znak"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "musíte zadat seznam bajtù, znakù nebo polo¾ek"
+
+#: src/cut.c:831
+#, fuzzy
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "oddìlovaè mù¾e být zadán pouze pøi práci s polo¾kami"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"potlaèení øádkù neobsahujících oddìlovaè, má význam pouze\n"
+"pøi pou¾ití pøepínaèe -f"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "chybí seznam polo¾ek"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "chybí seznam pozicí"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Pou¾ití: %s [PØEPÍNAÈ]... [+FORMÁT]\n"
+" nebo: %s [-u|--utc|--universal] [MMDDhhmm[[CC]RR][.ss]]\n"
+
+#: src/date.c:137
+#, fuzzy
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"Vypí¹e aktuální èas v daném FORMÁTu, nebo nastaví datum v systému.\n"
+"\n"
+" -d, --date=ØETÌZEC vypí¹e èas zadaný jako ØETÌZEC, nikoli aktuální\n"
+" -f, --file=DATASOUBOR jako --date, ale èasy jsou v DATASOUBORu,\n"
+" jeden èas na jeden øádek\n"
+" -I, --iso-8601[=TIMESPEC] vypí¹e datum a èas podle ISO-8601.\n"
+" Bude-li TIMESPEC=`date' (nebo nebude nastavena)\n"
+" vypí¹e pouze datum. Hodnoty `hours', `minutes',\n"
+" nebo `seconds' zpùsobí výpis datumu a èasu\n"
+" se odpovídající pøesností.\n"
+" -r, --reference=SOUBOR vypí¹e èas poslední zmìny souboru SOUBOR\n"
+" -R, --rfc-822 vypí¹e datum podle RFC-822\n"
+" -s, --set=ØETÌZEC nastaví datum podle ØETÌZCE\n"
+" -u, --utc, --universal nastaví nebo vypí¹e UTC (Coordinated Universal "
+"Time)\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèi\n"
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "standardní vstup"
+
+#: src/date.c:297 src/date.c:517
+#, fuzzy, c-format
+msgid "invalid date %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/date.c:408 src/date.c:442
+#, fuzzy, c-format
+msgid "multiple output formats specified"
+msgstr "\\%c: chybná escape sekvence"
+
+#: src/date.c:420
+#, fuzzy, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "pøepínaèe --string a --check se vzájemnì vyluèují"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr "pøepínaèe pro výpis a nastavení èasu nemohou být u¾ity souèasnì"
+
+#: src/date.c:448
+#, fuzzy, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"argument `%s' potøebuje úvodní `+';\n"
+"kdy¾ je pou¾it pøepínaè pro zadání data, kterýkoli argument (který není\n"
+"pøepínaèem) musí být formátovací øetìzec uvozený '+'"
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "datum nelze nastavit"
+
+#: src/date.c:548 src/du.c:425
+#, fuzzy, c-format
+msgid "time %s is out of range"
+msgstr "%s: èíslo øádku je mimo rozsah"
+
+#: src/dd.c:404
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾ití: %s [SOUBOR]...\n"
+" nebo: %s [PØEPÍNAÈ]\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "%s exituje, ale není adresáøem"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "zkrácený záznam"
+msgstr[1] "zkrácený záznam"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr ""
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ""
+
+#: src/dd.c:604
+#, fuzzy, c-format
+msgid "closing input file %s"
+msgstr "vytváøím soubor `%s'\n"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr ""
+
+#: src/dd.c:791 src/dd.c:1455
+#, fuzzy, c-format
+msgid "writing to %s"
+msgstr "chyba pøi zápisu %s"
+
+#: src/dd.c:886
+#, fuzzy, c-format
+msgid "unrecognized operand %s"
+msgstr "neznámý pøepínaè `-%c'"
+
+#: src/dd.c:897
+#, fuzzy, c-format
+msgid "invalid conversion: %s"
+msgstr "chybný typ øetìzce `%s'"
+
+#: src/dd.c:900
+#, fuzzy, c-format
+msgid "invalid input flag: %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/dd.c:903
+#, fuzzy, c-format
+msgid "invalid output flag: %s"
+msgstr "neplatná skupina"
+
+#: src/dd.c:906
+#, fuzzy, c-format
+msgid "invalid status flag: %s"
+msgstr "argument %s je pro `%s' neplatný"
+
+#: src/dd.c:942
+#, fuzzy, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "neznámý pøepínaè `-%c'"
+
+#: src/dd.c:948
+#, fuzzy, c-format
+msgid "invalid number %s"
+msgstr "neplatné èíslo"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#: src/dd.c:973
+#, fuzzy, c-format
+msgid "cannot combine block and unblock"
+msgstr "nemù¾ete vynechat jak u¾ivatele tak skupinu"
+
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "odkaz `%s' nelze vytvoøit"
+
+#: src/dd.c:977
+#, fuzzy, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+
+#: src/dd.c:1180 src/dd.c:1237
+#, fuzzy, c-format
+msgid "%s: cannot seek"
+msgstr "%s: nelze smazat"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "varování: chybná ¹íøka %lu; u¾ívám %d místo ní"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr ""
+
+#: src/dd.c:1376
+#, fuzzy, c-format
+msgid "setting flags for %s"
+msgstr "zachování èasù souboru %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr ""
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr ""
+
+#: src/dd.c:1670 src/dd.c:1699
+#, fuzzy, c-format
+msgid "opening %s"
+msgstr "chyba pøi ètení %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr ""
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr ""
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr ""
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr ""
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr ""
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr ""
+
+#: src/df.c:165
+#, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr ""
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr ""
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr ""
+
+#: src/df.c:468
+#, fuzzy, c-format
+msgid "cannot get current directory"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, fuzzy, c-format
+msgid "cannot change to directory %s"
+msgstr "do adresáøe `%s' nelze vejít"
+
+#: src/df.c:498
+#, fuzzy, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+
+#: src/df.c:749
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr ""
+
+#: src/df.c:900
+#, fuzzy, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "souborový systém typu `%s' je zároveò vybrán a vylouèen"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Varování: "
+
+#: src/df.c:943
+#, fuzzy, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%stabulku pøipojených souborových systémù nelze pøeèíst"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ]... [SOUBOR]...\n"
+
+#: src/dircolors.c:103
+#, fuzzy
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Výstupem jsou pøíkazy, které zajistí nastavení promìnné prostøedí LS_COLOR.\n"
+"\n"
+"Specifikace výstupního formátu:\n"
+" -b, --sh, --bourne-shell výstupem je Bourne shellový kód\n"
+" pro nastavení LS_COLORS\n"
+" -c, --csh, --c-shell výstupem je C shellový kód\n"
+" pro nastavení LS_COLORS\n"
+" -p, --print-database výstupem je vnitøní databáze\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+
+#: src/dircolors.c:291
+#, fuzzy, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s: neplatný poèet sekund"
+
+#: src/dircolors.c:363
+#, fuzzy, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s: neznámý pøepínaè `%c%s'\n"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<interní>"
+
+#: src/dircolors.c:445
+#, fuzzy, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr "pøepínaèe pro výstup èitelný lidmi a èitelný stty se vzájemnì vyluèují"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "promìnná prostøedí SHELL neexistuje a není zadáb typ shellu"
+
+#: src/dirname.c:48
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾ití: %s [SOUBOR]...\n"
+" nebo: %s [PØEPÍNAÈ]\n"
+
+#: src/dirname.c:53
+#, fuzzy
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+" Vypí¹e JMÉNO bez koncové /komponenty; pokud JMÉNO neobsahuje '/', vypí¹e\n"
+"'.' (tzn. aktuální adresáø).\n"
+"\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#: src/du.c:279 src/wc.c:108
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Pou¾ití: %s [PØEPÍNAÈ]... [SOUBOR]...\n"
+" nebo: %s --traditional [SOUBOR] [[+]POSUN [[+]NÁVÌ©TÍ]]\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "celkem"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+
+#: src/du.c:780
+#, fuzzy, c-format
+msgid "invalid maximum depth %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr ""
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr ""
+"není mo¾né oboje, poèítat celkové souèty pro ka¾dý argument a ukázat\n"
+"v¹echny polo¾ky"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "varování: sumarizace je stejná jako pou¾ití --max-depth=0"
+
+#: src/du.c:884
+#, fuzzy, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "varování: sumarizace je v rozporu s --max-depth=%d"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+#: src/du.c:960 src/wc.c:662
+#, fuzzy, c-format
+msgid "cannot read file names from %s"
+msgstr "odkaz `%s' nelze vytvoøit"
+
+#: src/du.c:1000 src/du.c:1003
+#, fuzzy
+msgid "invalid zero-length file name"
+msgstr "neplatná skupina"
+
+#: src/echo.c:64
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ]... [SOUBOR]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/env.c:118
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ]... [SOUBOR]...\n"
+
+#: src/env.c:121
+#, fuzzy
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Nastaví ka¾dou promìnnou prostøedí JMÉNO na HODNOTU a provede PØÍKAZ.\n"
+"\n"
+" -i, --ignore-environment zaène s prázdnou tabulkou promìnných prostøedí\n"
+" -u, --unset=JMÉNO odstraní promìnnou JMÉNO\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+" Pouze - znamená -i. Pokud není PØÍKAZ zadán, vypí¹e výslednou tabulku\n"
+"promìnných prostøedí.\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+
+#: src/expand.c:180 src/unexpand.c:199
+#, fuzzy, c-format
+msgid "tab stop is too large %s"
+msgstr "%s je pøíli¹ velké"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, fuzzy, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "velikost tabelátoru obsahuje neplatný znak"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "velikost tabelátoru nemù¾e být 0"
+
+# sizes or positions? - rzm
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "posloupnost pozic tabelátorù musí být rostoucí"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, fuzzy, c-format
+msgid "input line is too long"
+msgstr "%s: soubor je pøíli¹ dlouhý"
+
+#: src/expr.c:102
+#, fuzzy, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾ití: %s [SOUBOR]...\n"
+" nebo: %s [PØEPÍNAÈ]\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+" Pøi vytváøení výrazù musí být nìkteré symboly chránìny pøed shellem "
+"(napø.\n"
+"uzavøením do uvozovek nebo apostrofù). Porovnání mezi ARGx je aritmetické,\n"
+"pokud se jedná o èísla, jinak je lexikografické. Pokud bylo v REGVÝR "
+"pou¾ito\n"
+"\\( a \\), vyhodnocení vrátí øetìzec z ØETÌZCE, který odpovídá výrazu "
+"uzavøenému\n"
+"v \\( a \\) nebo vrátí prázdný øetìzec; pokud nebylo v REGVÝR pou¾ito \\( a "
+"\\),\n"
+"vrací poèet odpovídajích znakù nebo 0.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#: src/expr.c:175
+#, fuzzy, c-format
+msgid "syntax error"
+msgstr "standardní chybový výstup"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "chyba pøi vyhledávání pomocí regulárního výrazu"
+
+#: src/expr.c:653 src/expr.c:711
+#, fuzzy, c-format
+msgid "non-numeric argument"
+msgstr "argument oøezán"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr ""
+
+#: src/factor.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾ití: %s [SOUBOR]...\n"
+" nebo: %s [PØEPÍNAÈ]\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+
+#: src/factor.c:85
+#, fuzzy
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+" Vypí¹e rozklad ka¾dého celého ÈÍSLA na prvoèísla. Pokud ÈÍSLA nebudou "
+"zadána,\n"
+"bude je èíst ze standardního vstupu.\n"
+"\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s je pøíli¹ velké"
+
+#: src/factor.c:158
+#, fuzzy, c-format
+msgid "%s is not a valid positive integer"
+msgstr "'%s' není celé kladné èíslo z pøípustného rozsahu (integer)"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Pou¾ití: %s [-ÈÍSLICE] [PØEPÍNAÈ]... [SOUBOR]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/fmt.c:282
+#, fuzzy
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" Pøeformátuje ka¾dý odstavec v SOUBORu(ech) a výsledek zapí¹e na "
+"standardní\n"
+"výstup. Jestli¾e SOUBOR nebude zadán nebo bude -, bude èten standardní "
+"vstup.\n"
+"\n"
+"Argumenty po¾adované dlouhými pøepínaèi, jsou také po¾adovány krátkými.\n"
+" -c, --crown-margin zachová odsazení prvních dvou øádkù\n"
+" -p, --prefix=ØETÌZEC pracuje pouze s øádky majícími ØETÌZEC jako "
+"prefix\n"
+" -s, --split-only pouze rozdìlí dlouhé øádky\n"
+" -t, --tagged-paragraph odsadí první øádek rozdílnì od druhého\n"
+" -u, --uniform-spacing jedna mezera mezi slovy, dvì za vìtou\n"
+" -w, --width=©ÍØKA maximální ¹íøka øádku (implicitnì 75)\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+"U pøepínaèe -w©ÍØKA je mo¾no vynechat znak `w'.\n"
+
+#: src/fmt.c:289
+#, fuzzy
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" Pøeformátuje ka¾dý odstavec v SOUBORu(ech) a výsledek zapí¹e na "
+"standardní\n"
+"výstup. Jestli¾e SOUBOR nebude zadán nebo bude -, bude èten standardní "
+"vstup.\n"
+"\n"
+"Argumenty po¾adované dlouhými pøepínaèi, jsou také po¾adovány krátkými.\n"
+" -c, --crown-margin zachová odsazení prvních dvou øádkù\n"
+" -p, --prefix=ØETÌZEC pracuje pouze s øádky majícími ØETÌZEC jako "
+"prefix\n"
+" -s, --split-only pouze rozdìlí dlouhé øádky\n"
+" -t, --tagged-paragraph odsadí první øádek rozdílnì od druhého\n"
+" -u, --uniform-spacing jedna mezera mezi slovy, dvì za vìtou\n"
+" -w, --width=©ÍØKA maximální ¹íøka øádku (implicitnì 75)\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+"U pøepínaèe -w©ÍØKA je mo¾no vynechat znak `w'.\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+
+#: src/fmt.c:400
+#, fuzzy, c-format
+msgid "invalid width: %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "neplatný poèet sloupcù: `%s'"
+
+#: src/head.c:113
+#, fuzzy
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+" Vypí¹e prvních 10 øádkù ka¾dého souboru na standardní výstup. S více jak\n"
+"jedním souborem, bude pøed vypsáním ka¾dého uvedena hlavièka obsahující "
+"jméno\n"
+"souboru. Jestli¾e SOUBOR nebude zadán nebo bude -, bude èten standardní "
+"vstup.\n"
+"\n"
+" -c, --bytes=VELIKOST vypí¹e prvních VELIKOST bajtù\n"
+" -n, --lines=POÈET vypí¹e prvních POÈET øádkù místo prvních 10\n"
+" -q, --quiet, --silent nikdy nevypisuje hlavièky s názvy souborù\n"
+" -v, --verbose vypisuje hlavièky s názvy souborù v¾dy\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+" VELIKOST mù¾e mít násobící pøíponu: b pro 512, k pro 1K, m pro 1M. "
+"Jestli¾e\n"
+"první pøepínaè bude -HODNOTA a bude-li pou¾ita násobící pøípona, pak bude "
+"brán\n"
+"jako -c HODNOTA. Jinak bude pøepínaè brán jako -n HODNOTA.\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "chyba pøi ètení %s"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "chyba pøi zápisu %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr ""
+
+#: src/head.c:230 src/head.c:1046
+#, fuzzy, c-format
+msgid "%s: number of bytes is too large"
+msgstr "chybný poèet bajtù pro porovnání: `%s'"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr ""
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, fuzzy, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "ioctl na `%s' není mo¾né vykonat"
+
+#: src/head.c:793
+#, fuzzy, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+# src/tail.c:968
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s je pøíli¹ velký, proto není reprezentovalený"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "poèet øádkù"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "poèet bajtù"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "chybný poèet øádkù"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "chybný poèet bajtù"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "%s: neznámý pøepínaè -- %c\n"
+
+#: src/hostid.c:48
+#, fuzzy, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Pou¾ití: %s\n"
+" nebo: %s PØEPÍNAÈ\n"
+"Vypí¹e èíselný identifikátor (v ¹estnáctkovém tvaru) pro tento stroj.\n"
+"\n"
+" --help vypí¹e tuto nápovìdu a skonèi\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+
+#: src/hostname.c:65
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Pou¾ití: %s [JMÉNO]\n"
+" nebo: %s PØEPÍNAÈ\n"
+"Vypí¹e nebo nastavuje jméno stroje.\n"
+"\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "ioctl na `%s' není mo¾né vykonat"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr "jméno poèítaèe nelze nastavit; systém tuto funkci neposkytuje"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "jméno poèítaèe nelze zjistit"
+
+#: src/id.c:78
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ]... MNO®INA1 [MNO®INA2]\n"
+
+#: src/id.c:79
+#, fuzzy
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Vypí¹e informace o u¾ivateli JMÉNO_U®IVATELE nebo o aktuálním u¾ivateli.\n"
+"\n"
+" -a ignoruje se, z dùvodu kompatibility\n"
+" -g, --group vypí¹e pouze identifikaèní èíslo skupiny (GID)\n"
+" -G, --groups vypí¹e pouze doplòkové skupiny\n"
+" -n, --name vypí¹e jména, ne èísla (pro -ugG)\n"
+" -r, --real vypí¹e skuteèné ID místo efektivního (pro -ugG)\n"
+" -u, --user vypí¹e pouze identifikaèní èíslo u¾ivatele (UID)\n"
+" --help vypí¹e tuto nápovìdu a skonèi\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+"Bez jakéhokoli PØEPÍNAÈE, jsou vypsány nìkteré u¾iteèné informace.\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+
+#: src/id.c:152
+#, fuzzy, c-format
+msgid "cannot print only user and only group"
+msgstr "nemù¾ete vynechat jak u¾ivatele tak skupinu"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr "pouze jména nebo skuteèné ID nelze v implicitním formátu vypsat"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: U¾ivatel neexistuje"
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "jméno u¾ivatele pro UID %u nelze najít"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "vlastníka a/nebo skupinu %s nelze zmìnit"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "seznam doplòkových skupin nelze získat"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " skupiny="
+
+#: src/install.c:318
+#, fuzzy, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr ""
+"formátovací øetìzec nesmí být zadán pøi zarovnávání øetìzcù (--equal-width)"
+
+#: src/install.c:321
+#, fuzzy, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr ""
+"formátovací øetìzec nesmí být zadán pøi zarovnávání øetìzcù (--equal-width)"
+
+#: src/install.c:369 src/mkdir.c:193
+#, fuzzy, c-format
+msgid "invalid mode %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/install.c:520
+#, fuzzy, c-format
+msgid "cannot change ownership of %s"
+msgstr "práva %s nelze zmìnit"
+
+#: src/install.c:541
+#, fuzzy, c-format
+msgid "cannot set time stamps for %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/install.c:562
+#, fuzzy, c-format
+msgid "fork system call failed"
+msgstr "velikost bloku"
+
+#: src/install.c:566
+#, fuzzy, c-format
+msgid "cannot run strip"
+msgstr "pøíkaz %s nelze provést"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "chyba pøi zápisu %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, fuzzy, c-format
+msgid "invalid user %s"
+msgstr "neplatný u¾ivatel"
+
+#: src/install.c:628
+#, fuzzy, c-format
+msgid "creating directory %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/install.c:651
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Pou¾ití: %s [PØEPÍNAÈ]... POSLEDNÍ\n"
+" nebo: %s [PØEPÍNAÈ]... PRVNÍ POSLEDNÍ\n"
+" nebo: %s [PØEPÍNAÈ]... PRVNÍ PØÍRÙSTEK POSLEDNÍ\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+
+#: src/install.c:681
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+#, fuzzy
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+" Pokud není pøípona zálo¾ních souborù nastavena pøepínaèem --suffix nebo \n"
+"promìnnou SIMPLE_BACKUP_SUFFIX, je pou¾ívána pøípona `~'. Zpùsob vytváøení\n"
+"zálo¾ních souborù lze ovlivnit nastavením promìnné VERSION_CONTROL, hodnoty\n"
+"mohou být:\n"
+"\n"
+" none, off zálo¾ní kopie nevytváøet (i kdy¾ je zadán pøepínaè --"
+"backup)\n"
+" numbered, t èíslované zálo¾ní kopie\n"
+" existing, nil èíslované, jestli¾e ji¾ èíslovaná zálo¾ní kopie existuje,\n"
+" jinak jednoduché\n"
+" simple, never jednoduché zálo¾ní kopie\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+
+#: src/join.c:153
+#, fuzzy
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" Porovnává soubory LEVÝ_SOUBOR a PRAVÝ_SOUBOR, jejich¾ øádky jsou "
+"uspoøádány\n"
+"podle nìjakého klíèe, øádek po øádku. Výstupem jsou tøi sloupce, øádky "
+"obsa¾ené\n"
+"pouze v levém souboru, øádky obsa¾ené pouze v pravém souboru, øádky "
+"spoleèné\n"
+"obìma souborùm.\n"
+"\n"
+" -1 neukazuje øádky obsa¾ené pouze v levém souboru\n"
+" -2 neukazuje øádky obsa¾ené pouze v pravém souboru\n"
+" -3 neukazuje øádky spoleèné obìma souborùm\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+
+#: src/join.c:617 src/join.c:812
+#, fuzzy, c-format
+msgid "invalid field number: %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "chybnì zadaná polo¾ka: `%s'"
+
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "chybné èíslo souboru v popisu polo¾ky: `%s'"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr ""
+
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "vízeznakový tabulátor `%s'"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr ""
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "oba dva soubory nemohou být standardním vstupem"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+
+#: src/kill.c:103
+#, fuzzy
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+"Kopíruje standardní vstup do ka¾dého souboru a také na standardní výstup.\n"
+"\n"
+" -a, --append pøipojí k daným SOUBORÙM, nepøepisuje je\n"
+" -i, --ignore-interrupts ignoruje signál 'interrupt'\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+
+#: src/kill.c:161
+#, fuzzy, c-format
+msgid "%s: invalid signal"
+msgstr "%s: neplatný PID"
+
+#: src/kill.c:266
+#, fuzzy, c-format
+msgid "%s: invalid process id"
+msgstr "%s: chybný vzorek"
+
+#: src/kill.c:320
+#, fuzzy, c-format
+msgid "invalid option -- %c"
+msgstr "%s: neznámý pøepínaè -- %c\n"
+
+#: src/kill.c:329
+#, fuzzy, c-format
+msgid "%s: multiple signals specified"
+msgstr "\\%c: chybná escape sekvence"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr ""
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr ""
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr ""
+
+#: src/link.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾ití: %s [SOUBOR]...\n"
+" nebo: %s [PØEPÍNAÈ]\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+
+#: src/link.c:95
+#, fuzzy, c-format
+msgid "cannot create link %s to %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+"%s: varování: vytvoøení pevného odkazu na symbolický odkaz\n"
+"není pøenositelné"
+
+#: src/ln.c:165
+#, fuzzy, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "`%s' není adresáøem"
+
+#: src/ln.c:218
+#, fuzzy, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/ln.c:223
+#, fuzzy, c-format
+msgid "%s: replace %s? "
+msgstr "%s: pøepsat `%s'? "
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "vytvoøen symbolický odkaz `%s' na `%s'"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "vytvoøen symbolický odkaz `%s' na `%s'"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "vytvoøen pevný odkaz `%s' na `%s'"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "vytvoøen pevný odkaz `%s' na `%s'"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "vytvoøen pevný odkaz `%s' na `%s'"
+
+#: src/ln.c:324
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Pou¾ití: %s [PØEPÍNAÈ]... ZDROJ CÍL (1-ní formát)\n"
+" nebo: %s [PØEPÍNAÈ]... ZDROJ... ADRESÁØ (2-hý formát)\n"
+" nebo: %s -d [PØEPÍNAÈ]... ADRESÁØ... (3-tí formát)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+
+#: src/ln.c:484
+#, fuzzy, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "%s exituje, ale není adresáøem"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ] [SOUBOR]...\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+
+#: src/logname.c:89
+#, fuzzy, c-format
+msgid "no login name"
+msgstr "%s: chybné èíslo"
+
+#: src/ls.c:684
+#, fuzzy
+msgid "%b %e %Y"
+msgstr "%e. %b %Y %H.%M"
+
+#: src/ls.c:692
+#, fuzzy
+msgid "%b %e %H:%M"
+msgstr "%e. %b %Y %H.%M"
+
+#: src/ls.c:1453
+#, fuzzy, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "¹patná ¹íøka (%s) v promìnné prostøedí COLUMNS, bude ignorována"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "¹patná ¹íøka (%s) v promìnné prostøedí COLUMNS, bude ignorována"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr ""
+"¹patná velikost tabelárotu (%s) v promìnné prostøedí TABSIZE, bude ignorována"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, fuzzy, c-format
+msgid "invalid line width: %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/ls.c:1704
+#, fuzzy, c-format
+msgid "invalid tab size: %s"
+msgstr "chybný typ øetìzce `%s'"
+
+#: src/ls.c:1885
+#, fuzzy, c-format
+msgid "invalid time style format %s"
+msgstr "argument %s je pro `%s' neplatný"
+
+#: src/ls.c:2229
+#, fuzzy, c-format
+msgid "unrecognized prefix: %s"
+msgstr "neznámý pøepínaè `-%c'"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "nesrozumitelná hodnota v promìnné prostøedí LS_COLORS"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, fuzzy, c-format
+msgid "cannot open directory %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/ls.c:2344
+#, fuzzy, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, fuzzy, c-format
+msgid "reading directory %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/ls.c:2410
+#, fuzzy, c-format
+msgid "closing directory %s"
+msgstr "do adresáøe `%s' nelze vejít"
+
+#: src/ls.c:2918
+#, fuzzy, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "odkaz `%s' nelze vytvoøit"
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+
+#: src/ls.c:4360
+#, fuzzy
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -g (ignorován)\n"
+" -G, --no-group nevypisuju informace o skupinách\n"
+" -h, --human-readable vypisuje velikosti ve formátu pro èlovìka\n"
+" (napø: 1K, 234M, 2G)\n"
+" -H, --si jako pøedchozí, ale jednotky jsou násobky 1000\n"
+" a ne 1024.\n"
+" --indicator-style=SLOVO pøidává indikátory stylem SLOVO k názvùm "
+"souborù\n"
+" SLOVO mù¾e být: none (implicitnì), classify (-"
+"F),\n"
+" file-type (-p)\n"
+" -i, --inode ke ka¾dému souboru vypí¹e jeho i-uzlové èíslo\n"
+" -I, --ignore=VZOR nevypisuje soubory vyhovující VZORu\n"
+" -k, --kilobytes jako --block-size=1024\n"
+" -l vypí¹e výstup ve dlouhém formátu\n"
+" -L, --dereference u symbolického odkazu vypí¹e soubor, na který\n"
+" odkaz ukazuje\n"
+" -m vypí¹e soubory jako seznam jmen souborù "
+"oddìlených\n"
+" èárkami\n"
+" -n, --numeric-uid-gid místo jména u¾ivatele (UID) a skupiny (GID)\n"
+" vypisuje èísla\n"
+" -N, --literal vypí¹e jména souborù tak, jak jsou na disku\n"
+" ulo¾ena. Nezpracovává øídící znaky\n"
+" -o dlouhý formát bez informací o skupinách\n"
+" -p, --file-type k názvùm souborù pøidá znak urèující jejich "
+"typ\n"
+" (jeden z /=@|)\n"
+" -q, --hide-control-chars vypí¹e '?' místo negrafických znakù\n"
+" --show-control-chars vypí¹e negrafické znaky tak jak jsou "
+"(implicitní,\n"
+" jestli¾e program není `ls' a výstup není na\n"
+" terminál)\n"
+" -Q, --quote-name vlo¾í názvy souborù do uvozovek\n"
+" --quoting-style=SLOVO pou¾ije kvótovací styl SLOVO pro jména "
+"souborù.\n"
+" SLOVO mù¾e být:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+" -r, --reverse opaèné uspoøádání pøi øazení\n"
+" -R, --recursive vypí¹e adresáøe rekurzivnì\n"
+" -s, --size vypí¹e velikost ka¾dého souboru v blocích\n"
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#: src/md5sum.c:150
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Pou¾ití: %s [PØEPÍNAÈ] [SOUBOR]\n"
+" Výstupem je totálnì seøazený seznam v¹ech polo¾ek ze v¹ech vstupních "
+"øádkù,\n"
+"na kterých jsou polo¾ky seøazeny, vstupního SOUBORu. Jednotlivé polo¾ky "
+"jsou\n"
+"na øádku oddìleny mezerou.\n"
+" Jestli¾e není SOUBOR zadán, bude èten standardní vstup.\n"
+"\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+"\n"
+" -B, --binary pou¾ije mód binárního zápisu na zaøízení konzoly\n"
+"\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+
+#: src/md5sum.c:459
+#, fuzzy, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: nenalezeny správnì formátované øádky %s kontrolního souètu"
+
+#: src/md5sum.c:481
+#, fuzzy, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %lu: nesprávnì formátovaný øádek %s kontrolního souètu"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: SELHALO otevøení nebo ètení\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "CHYBNÝ"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "V POØÁDKU"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: chyba pøi ètení"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: nenalezeny správnì formátované øádky %s kontrolního souètu"
+
+# that's a case where cases are needed in Slavic languages
+# podanych/podanego are plural/singular Genitive, I moved them to
+# next messages hoping it doesn't spoil anything - rzm
+#
+# see also md5sum.c:430. it is somewhat surprising that we need
+# such things only in two places in this file - rzm 960902
+#
+#: src/md5sum.c:562
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "UPOZORNÌNÍ: %d z %d %s nelze èíst"
+msgstr[1] "UPOZORNÌNÍ: %d z %d %s nelze èíst"
+
+# once more `of computed checksum(s)' is `wyliczonej sumy' or
+# `wyliczonych sum' in sing. or plural Genitive; how to handle? - rzm
+#
+# it is better now but the word `wyliczonych' should also change according
+# to the number too (what a horrible language! - but there are worse)
+# so I'm moving it to the changing part; fortunately it is Genitive
+# so we don't need to use two forms for plural (depending on number: nn[234]
+# are different that the other ones) - rzm 960902
+#
+#: src/md5sum.c:574
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "UPOZORNÌNÍ: %d z %d %s NEBYLY vyhodnoceny"
+msgstr[1] "UPOZORNÌNÍ: %d z %d %s NEBYLY vyhodnoceny"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"pøepínaèe --binary a --text jsou bezvýznamné pøi ovìøování kontrolních souètù"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "pøepínaè --status má význam pouze pøi ovìøování kontrolních souètù"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "pøepínaè --warn má význam pouze pøi ovìøování kontrolních souètù"
+
+#: src/mkdir.c:59
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ] [SOUBOR]...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+"Vytvoøí ADRESÁØ(e), jestli¾e je¹tì neexistuje(í).\n"
+"\n"
+" -m, --mode=PRÁVA nastaví pøístupová práva (zadány jako pøíkazu 'chmod'),\n"
+" místo toho, aby byla práva nastavena na rwxrwxrwx - "
+"umask\n"
+" -p, --parents vytvoøí neexistující rodièovské adresáøe zadaného "
+"adresáøe\n"
+" -v, --verbose vypí¹e zprávu pro ka¾dý vytvoøený adresáø\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/mkdir.c:168
+#, fuzzy, c-format
+msgid "created directory %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/mkfifo.c:54
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ] [SOUBOR]...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+"Tvoøí pojmenované roury (FIFO) se jmény JMÉNO.\n"
+"\n"
+" -m, --mode=PRÁVA nastaví pøístupová práva (zadána jako pøíkazu 'chmod'),\n"
+" místo toho, aby byla nastavena na 0666 - umask\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, fuzzy, c-format
+msgid "invalid mode"
+msgstr "neplatné èíslo"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ]... MNO®INA1 [MNO®INA2]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+
+#: src/mknod.c:76
+#, fuzzy
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"Vytvoøí speciální soubor JMÉNO zadaného TYPu.\n"
+"\n"
+" -m, --mode=PRÁVA nastaví pøístupová práva (zadána jako pøíkazu 'chmod'),\n"
+" místo toho, aby byla nastavena na 0666 - umask\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+"HLAVNÍ a VEDLEJ©Í èíslo není dovoleno u TYPu p, jinak povinné. TYP mù¾e "
+"být:\n"
+"\n"
+" b blokový (bufferovaný) speciální soubor\n"
+" c, u znakový (nebufferovaný) speciální soubor\n"
+" p roura (FIFO)\n"
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"pøi vytváøení speciálního blokového souboru, musí být hlavní\n"
+"a vedlej¹í èíslo zaøízení zadáno"
+
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "chybné poèáteèní èíslo øádku: `%s'"
+
+#: src/mknod.c:167
+#, fuzzy, c-format
+msgid "block special files not supported"
+msgstr "velikost bloku"
+
+#: src/mknod.c:176
+#, fuzzy, c-format
+msgid "character special files not supported"
+msgstr "posun znaku je nula"
+
+#: src/mknod.c:192
+#, fuzzy, c-format
+msgid "invalid major device number %s"
+msgstr "chybné poèáteèní èíslo øádku: `%s'"
+
+#: src/mknod.c:197
+#, fuzzy, c-format
+msgid "invalid minor device number %s"
+msgstr "chybné poèáteèní èíslo øádku: `%s'"
+
+#: src/mknod.c:202
+#, fuzzy, c-format
+msgid "invalid device %s %s"
+msgstr "argument %s je pro `%s' neplatný"
+
+#: src/mknod.c:216
+#, fuzzy, c-format
+msgid "invalid device type %s"
+msgstr "argument %s je pro `%s' neplatný"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+
+#: src/mv.c:308
+#, fuzzy
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+"Pøejmenování ZDROJe na CÍL nebo pøemístìní ZDROJe(ù) do ADRESÁØe.\n"
+"\n"
+" --backup=[TYP] vytvoøí zálo¾ní kopii ka¾dého existujícího\n"
+" cílového souboru\n"
+" -b jako --backup, ale bez argumentu\n"
+" -f, --force ma¾e existující cíle, neptá se\n"
+" -i, --interactive pøed pøepsáním souboru se zeptá\n"
+" --strip-trailing-slashes odstraní v¹echna lomítka z konce ZDROJe(ù)\n"
+" -S, --suffix=PØÍPONA pøípona zálo¾ních souborù\n"
+" --target-directory=ADRESÁØ pøemístí v¹echny ZDROJe do ADRESÁØe\n"
+" -u, --update pøemístí pouze star¹í a úplnì nové soubory\n"
+" -v, --verbose vypisuje co se dìje\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+
+#: src/nice.c:76
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ] [SOUBOR]...\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "argument %s je pro `%s' neplatný"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "pøíkaz musí být zadán s èíslem, o kolik zmìnit prioritu"
+
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "nelze vytvoøit doèasný soubor"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "datum nelze nastavit"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:189
+#, fuzzy
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" Vypí¹e ka¾dý SOUBOR na standardní výstup. Poslední øádek jako první.\n"
+"Jestli¾e SOUBOR nebude zadán nebo bude -, bude èten standardní vstup.\n"
+"\n"
+" -b, --before pøipojí oddìlovaè øádkù pøed øádky místo za nì\n"
+" -r, --regex interpretuje oddìlovaè jako regulární výraz\n"
+" -s, --separator=ØETÌZEC pou¾ije ØETÌZCE jako oddìlovaèe místo nového "
+"øádku\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+
+#: src/nl.c:214
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:281
+#, fuzzy, c-format
+msgid "line number overflow"
+msgstr "èíslo polo¾ky je nula"
+
+#: src/nl.c:479
+#, fuzzy, c-format
+msgid "invalid header numbering style: %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/nl.c:487
+#, fuzzy, c-format
+msgid "invalid body numbering style: %s"
+msgstr "neplatné èíslo"
+
+#: src/nl.c:495
+#, fuzzy, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "chybné èíslo souboru v popisu polo¾ky: `%s'"
+
+#: src/nl.c:504
+#, fuzzy, c-format
+msgid "invalid starting line number: %s"
+msgstr "chybné poèáteèní èíslo øádku: `%s'"
+
+#: src/nl.c:513
+#, fuzzy, c-format
+msgid "invalid line number increment: %s"
+msgstr "chybná hodnota pøírùstku èísla øádku: `%s'"
+
+#: src/nl.c:525
+#, fuzzy, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "chybný poèet prázdných øádkù: `%s'"
+
+#: src/nl.c:539
+#, fuzzy, c-format
+msgid "invalid line number field width: %s"
+msgstr "chybná ¹íøka èísla øádku: `%s'"
+
+#: src/nl.c:558
+#, fuzzy, c-format
+msgid "invalid line numbering format: %s"
+msgstr "chybná hodnota pøírùstku èísla øádku: `%s'"
+
+#: src/nohup.c:57
+#, fuzzy, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾ití: %s [SOUBOR]...\n"
+" nebo: %s [PØEPÍNAÈ]\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "pøíli¹ mnoho argumentù"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, fuzzy, c-format
+msgid "failed to open %s"
+msgstr "zachování èasù souboru %s"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr ""
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr ""
+
+#: src/od.c:307
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Pou¾ití: %s [PØEPÍNAÈ]... [SOUBOR]...\n"
+" nebo: %s --traditional [SOUBOR] [[+]POSUN [[+]NÁVÌ©TÍ]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:353
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "chybný typ øetìzce `%s'"
+
+#: src/od.c:693
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr "chybný typ `%s'; tento systém nemá %lu-bajtová celá èísla"
+
+#: src/od.c:812
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"chybný typ `%s'; tento systém nemá %lu-bajtová èísla s plovoucí øádovou "
+"èárkou"
+
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "znak `%c' v øetìzci typu `%s' je chybný"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr ""
+"více bajtù, ne¾ kolik obsahují v¹echny vstupní soubory, nelze pøeskoèit"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr "chybný základ výstupní adresy `%c'; musí to být jeden ze znakù [doxn]"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "pøeskakuji argument"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "argument oøezán"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "minimální délka øetìzce"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "specifikace ¹íøky"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "pøi vypisování øetìzcù nelze zadat typ"
+
+#: src/od.c:1844
+#, fuzzy
+msgid "Compatibility mode supports at most one file."
+msgstr "v kompatibilním módu nemù¾ou být více jak tøi argumenty"
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr ""
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "varování: chybná ¹íøka %lu; u¾ívám %d místo ní"
+
+# should this be translated? - rzm
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: formát='%s' ¹íøka=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "standardní vstup je uzavøen"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+
+#: src/pathchk.c:99
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ]... [SOUBOR]...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "znak `%c' v øetìzci typu `%s' je chybný"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr ""
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Pøihla¹ovací jméno: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "Reálné jméno: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Adresáø: "
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Shell: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Projekt: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "Plán:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Login"
+
+#: src/pinky.c:423
+#, fuzzy
+msgid "Name"
+msgstr " Jméno"
+
+#: src/pinky.c:424
+#, fuzzy
+msgid " TTY"
+msgstr "TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Prostoj"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Kdy"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Odkud"
+
+#: src/pinky.c:510
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ]... [SOUBOR]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+
+#: src/pinky.c:612
+#, fuzzy, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr "pøi pou¾ití pøepínaèe --string nemohou být zadány soubory"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr ""
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "`--pages=PRVNÍ_STRÁNKA[:POSLEDNÍ_STRÁNKA]' postrádá argument"
+
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "chybný typ øetìzce `%s'"
+
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "`-l DÉLKA_STRÁNKY' chybný poèet øádkù na stránku: `%s'"
+
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "`-N ÈÍSLO' chybné èíslo poèáteèního øádku: `%s'"
+
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "`-o OKRAJ' chybný posun øádku: `%s'"
+
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-w ©ÍØKA_STRÁNKY' chybný poèet øádkù na stránku: `%s'"
+
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-w ©ÍØKA_STRÁNKY' chybný poèet øádkù na stránku: `%s'"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "Pøi výpisu vedle sebe, není mo¾né zadat poèet sloupcù."
+
+# wzdluz? - rzm
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "Není mo¾né zadat výpis souborù po sobì a vedle sebe."
+
+#: src/pr.c:1202
+#, fuzzy, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "`-%c` nadbyteèné znaky nebo ¹patné èíslo v argumentu: `%s'"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "¹íøka stránky je pøíli¹ malá"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2406
+#, fuzzy, c-format
+msgid "Page number overflow"
+msgstr "èíslo polo¾ky je nula"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr ""
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+
+#: src/pr.c:2862
+#, fuzzy
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" Porovnává soubory LEVÝ_SOUBOR a PRAVÝ_SOUBOR, jejich¾ øádky jsou "
+"uspoøádány\n"
+"podle nìjakého klíèe, øádek po øádku. Výstupem jsou tøi sloupce, øádky "
+"obsa¾ené\n"
+"pouze v levém souboru, øádky obsa¾ené pouze v pravém souboru, øádky "
+"spoleèné\n"
+"obìma souborùm.\n"
+"\n"
+" -1 neukazuje øádky obsa¾ené pouze v levém souboru\n"
+" -2 neukazuje øádky obsa¾ené pouze v pravém souboru\n"
+" -3 neukazuje øádky spoleèné obìma souborùm\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/printenv.c:61
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Pou¾ití: %s [PROMÌNNÁ]...\n"
+" nebo: %s PØEPÍNAÈ\n"
+" Vypí¹e hodnotu promìnné prostøedí PROMÌNNÁ. Pokud není PROMÌNNÁ zadána\n"
+"vypí¹e v¹echny promìnné prostøedí a jejich hodnoty.\n"
+"\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+"varování: %s: znak nebo znaky, které následují za znakovou konstantou budou\n"
+"ignorovány"
+
+#: src/printf.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾ití: %s [SOUBOR]...\n"
+" nebo: %s [PØEPÍNAÈ]\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: oèekávána numerická hodnota"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: hodnota nebyla zcela pøevedena"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "v escape sekvenci oèekáváno ¹estnáctkové èíslo"
+
+#: src/printf.c:289
+#, fuzzy, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "chybná tøída znaku `%s'"
+
+#: src/printf.c:550
+#, fuzzy, c-format
+msgid "invalid field width: %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/printf.c:585
+#, fuzzy, c-format
+msgid "invalid precision: %s"
+msgstr "chybný typ øetìzce `%s'"
+
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%s: neplatné zadání `%s' polo¾ky"
+
+#: src/printf.c:683
+#, fuzzy, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "varování: pøebyteèné argumenty jsou ignorovány"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr ""
+
+#: src/ptx.c:422
+#, fuzzy, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (pro regvýr `%s')"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Pou¾ití: %s [PØEPÍNAÈ]... [VSTUP]... (bez -G)\n"
+" nebo: %s -G [PØEPÍNAÈ]... [VSTUP [VÝSTUP]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr ""
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+
+#: src/pwd.c:160
+#, fuzzy, c-format
+msgid "failed to chdir to %s"
+msgstr "skupinu souboru %s se nepodaøilo zmìnit na %s\n"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "nastavení práv souboru %s"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, fuzzy, c-format
+msgid "ignoring non-option arguments"
+msgstr "pøíli¹ mnoho argumentù, které nejsou pøepínaèi"
+
+#: src/readlink.c:67
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ]... [SOUBOR]...\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "do adresáøe `%s' nelze vejít"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, fuzzy, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"VAROVÁNÍ: Zacyklená struktura adresáøù.\n"
+"To témìø jistì znamená, ¾e máte poru¹en souborový systém.\n"
+"INFORMUJTE VA©EHO ADMINISTRÁTORA SYSTÉMU.\n"
+"Následující dva adresáøe mají stejné èíslo i-uzlu:\n"
+
+#: src/remove.c:854
+#, fuzzy, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/remove.c:855
+#, fuzzy, c-format
+msgid "%s: descend into directory %s? "
+msgstr "do adresáøe `%s' nelze vejít"
+
+#: src/remove.c:865
+#, fuzzy, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: smazat soubor `%s' se zakázaným zápisem? "
+
+#: src/remove.c:866
+#, fuzzy, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: smazat `%s'? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, fuzzy, c-format
+msgid "removed directory: %s\n"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "do adresáøe `%s' nelze vejít"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, fuzzy, c-format
+msgid "cannot remove directory %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/remove.c:1450
+#, fuzzy, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "do adresáøe `%s' nelze vejít"
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/remove.c:1558
+#, fuzzy, c-format
+msgid "cannot restore current working directory"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#: src/rm.c:160 src/touch.c:233
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ]... [SOUBOR]...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: smazat `%s'? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, fuzzy, c-format
+msgid "removing directory, %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/rmdir.c:140
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ]... [SOUBOR]...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+
+#: src/rmdir.c:148
+#, fuzzy
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+"Smazání ADRESÁØe(ù), pouze jsou-li prázdné.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignoruje v¹echny chyby zpùsobené neprázdností adresáøe\n"
+" -p, --parents ma¾e ADRESÁØ a v¹echny rodièovské adresáøe, ze zadané\n"
+" cesty. Napø: `rmdir -p a/b/c' je podobné \n"
+" `rmdir a/b/c a/b a'\n"
+" -v, --verbose vypisuje oznámení o ka¾dém zpravovávaném adresáøi\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/seq.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Pou¾ití: %s [PØEPÍNAÈ]... [VSTUP]... (bez -G)\n"
+" nebo: %s -G [PØEPÍNAÈ]... [VSTUP [VÝSTUP]]\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"Vypí¹e èísla od PRVNÍho do POSLEDNÍHO, s krokem PØÍRÙSTEK.\n"
+"\n"
+" -f, --format FORMÁT pou¾ije FORMÁT pro funkci printf(3) (implicitnì: %"
+"%g)\n"
+" -s, --separator ØETÌZ pou¾ije ØETÌZEC k oddìlení èísel (implicitnì: "
+"\\n)\n"
+" -w, --equal-width srovná ¹íøku zarovnáním úvodními nulami\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+" Bude-li PRVNÍ nebo POSLEDNÍ vynechán, implicitnì se nastaví na 1. PRVNÍ,\n"
+"PØÍRÙSTEK a POSLEDNÍ jsou údaje v pohyblivé øádové èárce. PØÍRÙSTEK musí "
+"být\n"
+"kladný, pokud je PRVNÍ men¹í ne¾ POSLEDNÍ, jinak záporný. Formáty pro "
+"plovoucí\n"
+"øádovou èárku jsou %%e, %%f, %%g.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, fuzzy, c-format
+msgid "invalid floating point argument: %s"
+msgstr "chybné poèáteèní èíslo øádku: `%s'"
+
+#: src/seq.c:342
+#, fuzzy, c-format
+msgid "invalid format string: %s"
+msgstr "chybný typ øetìzce `%s'"
+
+#: src/seq.c:364
+#, fuzzy, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr "pøi vypisování øetìzcù nelze zadat typ"
+
+#: src/setuidgid.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾ití: %s [SOUBOR]...\n"
+" nebo: %s [PØEPÍNAÈ]\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr ""
+
+#: src/setuidgid.c:109
+#, fuzzy, c-format
+msgid "cannot set supplemental group"
+msgstr "seznam doplòkových skupin nelze získat"
+
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "nemù¾ete vynechat jak u¾ivatele tak skupinu"
+
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "nemù¾ete vynechat jak u¾ivatele tak skupinu"
+
+#: src/shred.c:165
+#, fuzzy, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ] [SOUBOR]...\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+
+#: src/shred.c:303
+#, fuzzy, c-format
+msgid "%s: fdatasync failed"
+msgstr "funkce stat selhala"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr ""
+
+#: src/shred.c:391
+#, fuzzy, c-format
+msgid "%s: cannot rewind"
+msgstr "pøíkaz %s nelze provést"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: prùchod %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, fuzzy, c-format
+msgid "%s: error writing at offset %s"
+msgstr "chyba pøi zápisu %s"
+
+#: src/shred.c:478
+#, fuzzy, c-format
+msgid "%s: lseek failed"
+msgstr "uzavøení souboru selhalo"
+
+#: src/shred.c:489
+#, fuzzy, c-format
+msgid "%s: file too large"
+msgstr "%s: soubor je pøíli¹ dlouhý"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: prùchod %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, fuzzy, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: prùchod %lu/%lu (%s)...%s/%s"
+
+#: src/shred.c:776
+#, fuzzy, c-format
+msgid "%s: fstat failed"
+msgstr "funkce stat selhala"
+
+#: src/shred.c:787
+#, fuzzy, c-format
+msgid "%s: invalid file type"
+msgstr "%s: chybný poèet øádkù"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: soubor má zápornou velikost"
+
+#: src/shred.c:873
+#, fuzzy, c-format
+msgid "%s: error truncating"
+msgstr "%s: soubor byl zkrácen"
+
+#: src/shred.c:889
+#, fuzzy, c-format
+msgid "%s: fcntl failed"
+msgstr "funkce stat selhala"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s: shred nelze pou¾ít na popisovaè souboru pouze pro pøidávání"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: probíhá mazání"
+
+#: src/shred.c:996
+#, fuzzy, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: chyba pøi ètení"
+
+#: src/shred.c:1018
+#, fuzzy, c-format
+msgid "%s: failed to remove"
+msgstr "%s: soubor je pøíli¹ dlouhý"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: smazán"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, fuzzy, c-format
+msgid "%s: failed to close"
+msgstr "%s: soubor je pøíli¹ dlouhý"
+
+#: src/shred.c:1065
+#, fuzzy, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: soubor je pøíli¹ dlouhý"
+
+#: src/shred.c:1130
+#, fuzzy, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: neplatný poèet sekund"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "\\%c: chybná escape sekvence"
+
+#: src/shred.c:1153
+#, fuzzy, c-format
+msgid "%s: invalid file size"
+msgstr "%s: chybný poèet øádkù"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Pou¾ití: %s [PØEPÍNAÈ]... [VSTUP]... (bez -G)\n"
+" nebo: %s -G [PØEPÍNAÈ]... [VSTUP [VÝSTUP]]\n"
+
+#: src/shuf.c:57
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "\\%c: chybná escape sekvence"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "neplatné èíslo"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, fuzzy, c-format
+msgid "multiple output files specified"
+msgstr "\\%c: chybná escape sekvence"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr "extra argument `%s' není s -c dovolen"
+
+#: src/sleep.c:47
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Pou¾ití: %s ÈÍSLO[PØÍPONA]...\n"
+" nebo: %s PØEPÍNAÈ\n"
+" Èeká POÈET sekund. PØÍPONA mù¾e být s (sekundy) - implicitnì, m (minuty),\n"
+"h (hodiny) nebo d (dny). V mnoha implementacích musí být ÈÍSLO èíslo celé,\n"
+"zde mù¾e být i èíslem desetiným. \n"
+"\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "z hodin reálného èasu nelze èíst"
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+#, fuzzy
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+"Spojí v¹echny SOUBORy a seøazený výsledek zapí¹e na standardní výstup\n"
+"\n"
+"Øadící pøepínaèe:\n"
+"\n"
+" -b, --ignore-leading-blanks ignoruje úvodní mezery v polo¾kách i klíèích\n"
+" -d, --dictionary-order v klíèích uva¾uje pouze mezery a "
+"alfanumerické\n"
+" znaky\n"
+" -f, --ignore-case v klíèích pøevede malá písmena za velká\n"
+" -g, --general-numeric-sort porovnává podle èíselných hodnot\n"
+" (po pøevodu na double)\n"
+" -i, --ignore-nonprinting v klíèích uva¾uje pouze tisknutelné znaky\n"
+" -M, --month-sort porovná podle mìsícù\n"
+" (neznámý) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort porovná podle èíselné hodnoty øetìzce\n"
+" -r, --reverse obrácený výsledek porovnávání\n"
+
+#: src/sort.c:326
+#, fuzzy
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+"Spojí v¹echny SOUBORy a seøazený výsledek zapí¹e na standardní výstup\n"
+"\n"
+"Øadící pøepínaèe:\n"
+"\n"
+" -b, --ignore-leading-blanks ignoruje úvodní mezery v polo¾kách i klíèích\n"
+" -d, --dictionary-order v klíèích uva¾uje pouze mezery a "
+"alfanumerické\n"
+" znaky\n"
+" -f, --ignore-case v klíèích pøevede malá písmena za velká\n"
+" -g, --general-numeric-sort porovnává podle èíselných hodnot\n"
+" (po pøevodu na double)\n"
+" -i, --ignore-nonprinting v klíèích uva¾uje pouze tisknutelné znaky\n"
+" -M, --month-sort porovná podle mìsícù\n"
+" (neznámý) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort porovná podle èíselné hodnoty øetìzce\n"
+" -r, --reverse obrácený výsledek porovnávání\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/sort.c:363
+#, fuzzy
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+" POZ je P[.Z][PØEPÍNAÈE], kde P je èíslo polo¾ky a Z pozice znaku v "
+"polo¾ce,\n"
+"oboje poèítáno od 1 s -k a od 0 se zastaralým formátem. PØEPÍNAÈE jsou "
+"tvoøeny\n"
+"z jednoho nebo z více písmen jednopísmených øadících pøepínaèù, které "
+"pøebijí\n"
+"globální nastavení pro tento klíè. Nebude-li klíè zadán, pou¾ije se celý "
+"øádek\n"
+"jako klíè.\n"
+"\n"
+" VELIKOST mù¾e být následována následujícími násobícími pøíponami:\n"
+"% - % (procento) pamìti, b - 1, k - 1024 (implicitní) a podobnì pro M, G, T, "
+"P,\n"
+"E, Z, Y.\n"
+"\n"
+"Pokud není SOUBOR zadán nebo bude -, bude èten standardní vstup.\n"
+"\n"
+"*** UPOZORNÌNÍ ***\n"
+" Výsledek øazení závisí na nastaveném jazykovém prostøedí. Pokud si "
+"pøejete\n"
+"tradièní zpùsob øazení, podle hodnot bajtù, nastavte LC_ALL=C.\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "chyba pøi zápisu %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "nelze vytvoøit doèasný soubor"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "soubor se nepodaøilo otevøít"
+
+#: src/sort.c:758
+#, fuzzy
+msgid "fflush failed"
+msgstr "uzavøení souboru selhalo"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "uzavøení souboru selhalo"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "soubor se nepodaøilo otevøít"
+
+#: src/sort.c:871
+#, fuzzy, c-format
+msgid "couldn't execute %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "nelze vytvoøit doèasný soubor"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "nelze vytvoøit doèasný soubor"
+
+#: src/sort.c:920
+#, fuzzy, c-format
+msgid "couldn't execute %s -d"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "zápis se nezdaøil"
+
+#: src/sort.c:975
+#, fuzzy, c-format
+msgid "warning: cannot remove: %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "velikost pamì»ového bloku pro øazení"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "funkce stat selhala"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "ètení ze souboru se nezdaøilo"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: neseøaditelný øádek: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "standardní chybový výstup"
+
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: neplatné zadání `%s' polo¾ky"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: neplatné èíslo na zaèátku `%s'"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "neplatné èíslo za `-'"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "neplatné èíslo za `.'"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "zbloudilý znak v zadání øadící polo¾ky"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "\\%c: chybná escape sekvence"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "neplatné èíslo na zaèátku polo¾ky"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "èíslo polo¾ky je nula"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "posun znaku je nula"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "neplatné èíslo za `,'"
+
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "extra argument `%s' není s -c dovolen"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ] [SOUBOR [PØEDPONA]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/split.c:119
+#, fuzzy, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" Rozdìlí SOUBOR do souborù PØEDPONAaa, PØEDPONAab, ... s pevnou délkou.\n"
+"Implicitní PØEDPONA je `x'. Pokud SOUBOR nebude zadán nebo bude -, bude "
+"èten\n"
+"standardní vstup.\n"
+"\n"
+" -b, --bytes=VELIKOST zapí¹e VELIKOST bajtù do výstupního souboru\n"
+" -C, --line-bytes=VELIKOST zapí¹e nejvý¹e VELIKOST bajtù na výstupní øádek\n"
+" -l, --lines=POÈET zapí¹e POÈET øádkù do výstupního souboru\n"
+" -POÈET to samé jako -l POÈET\n"
+" --verbose pøed otevøením ka¾dého výstupního souboru "
+"vypí¹e\n"
+" oznámení o tomto na standardní výstup\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+"VELIKOST mù¾e mít násobící pøíponu: b - 512, k - 1024, m - 1 Mega.\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr ""
+
+#: src/split.c:211
+#, fuzzy, c-format
+msgid "creating file %s\n"
+msgstr "vytváøím soubor `%s'\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "soubor nelze rozdìlit více zpùsoby"
+
+#: src/split.c:420
+#, fuzzy, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: chybný poèet øádkù"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: chybný poèet bajtù"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: chybný poèet øádkù"
+
+#: src/split.c:487
+#, fuzzy, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "%s: poèet `%.*s' je pøíli¹ velký"
+
+#: src/split.c:518
+#, fuzzy, c-format
+msgid "invalid number of lines: 0"
+msgstr "chybný poèet øádkù"
+
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s: neznámý pøepínaè `%c%s'\n"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%s: chybný vzorek"
+
+#: src/stat.c:726
+#, fuzzy, c-format
+msgid "warning: backslash at end of format"
+msgstr "chybnì pou¾ité zpìtné lomítko na konci øetìzce"
+
+#: src/stat.c:755
+#, fuzzy, c-format
+msgid "cannot read file system information for %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/stat.c:831
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ] [SOUBOR]...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Pou¾ití: %s [-F ZAØÍZENÍ] [--file=ZAØÍZENÍ] [NASTAVENÍ]...\n"
+" nebo: %s [-F ZAØÍZENÍ] [--file=ZAØÍZENÍ] [-a|--all]\n"
+" nebo: %s [-F ZAØÍZENÍ] [--file=ZAØÍZENÍ] [-g|--save]\n"
+
+#: src/stty.c:517
+#, fuzzy
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Vypí¹e nebo mìní nastavení terminálu.\n"
+"\n"
+" -a, --all vypí¹e v¹echna nastavení ve formì pro èlovìka èitelné\n"
+" -g, --save vypí¹e v¹echna nastavení ve formì pro stty\n"
+" -F, --file=ZAØÍZENÍ místo stdin otevøe a pou¾ije zadané zaøízení\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+" Volitelné - pøed NASTAVENÍm znamená negaci. * oznaèuje nastavení "
+"nedefinované\n"
+"normou POSIX. Daný systém definuje, která nastavení jsou mo¾ná.\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+
+#: src/stty.c:583
+#, fuzzy
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+"\n"
+"Nastavení øízení:\n"
+" [-]clocal zaká¾e signály pro øízení modemu\n"
+" [-]cread povolí pøíjem na vstupu\n"
+"* [-]crtscts umo¾ní 'handshake' (RTS/CTS)\n"
+" csN nastaví velikost znaku na N bitù, N je [5..8]\n"
+" [-]cstopb pou¾ije dva stop bity (jeden stop bit pomocí `-')\n"
+" [-]hup po¹le signál hangup, kdy¾ poslední proces uzavøe tty\n"
+" [-]hupcl jako [-]hup\n"
+" [-]parenb generuje paritní bit na výstupu a oèekává ho na vstupu\n"
+" [-]parodd nastaví lichou paritu (sudou pomocí `-')\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:624
+#, fuzzy
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+"\n"
+"Nastavení výstupu:\n"
+"* bsN zpùsob èekání na backspace, N je [0..1]\n"
+"* crN zpùsob èekání na CR (carriage return), N je [0..3]\n"
+"* ffN zpùsob èekání na FF (form feed), N je [0..1]\n"
+"* nlN zpùsob èekání na LF (newline), N je [0..1]\n"
+"* [-]ocrnl pøekládá CR (cariage return) na LF (newline)\n"
+"* [-]ofdel pou¾ije znak 'delete' místo znaku 'null' pro výplnì\n"
+"* [-]ofill pou¾ije vyplòovací znak místo èekání\n"
+"* [-]olcuc pøekládá malá písmena na velká\n"
+"* [-]onlcr pøekládá LF (newline) na CRLF (carriage return-newline)\n"
+"* [-]onlret LF (newline) provede CR (carriage return)\n"
+"* [-]onocr v prvním sloupci netiskne CR (carriage return)\n"
+" [-]opost zpracování postprocesorem\n"
+"* tabN zpùsob èekání na horizontální tabelátor, N je [0..3]\n"
+"* tabs jako tab0\n"
+"* -tabs jako tab3\n"
+"* vtN zpùsob èekání na vertikální tabelátor, N je [0..1]\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+" Pracuje s linkou tty pøipojenou ke standardnímu vstupu. Bez argumentù,\n"
+"vypí¹e rychlost, 'line discipline', a odchylky od nastavení 'sane'. Pøi\n"
+"nastavování je ZNAK brán jako literál, nebo kódován jak pøi ^c, 0x37, 0177 "
+"nebo\n"
+"127; speciální hodnoty ^- nebo 'undef' jsou pou¾ity pro zákaz speciálních\n"
+"znakù.\n"
+
+#: src/stty.c:789
+#, fuzzy, c-format
+msgid "only one device may be specified"
+msgstr "mù¾e být zadán pouze jeden argument"
+
+#: src/stty.c:819
+#, fuzzy, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr "pøepínaèe --string a --check se vzájemnì vyluèují"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "pøi zadávání výstupního stylu, nemohou být nastavovány re¾imy"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: neblokovací mód souboru nelze zru¹it"
+
+#: src/stty.c:885 src/stty.c:995
+#, fuzzy, c-format
+msgid "invalid argument %s"
+msgstr "argument %s je pro `%s' neplatný"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, fuzzy, c-format
+msgid "missing argument to %s"
+msgstr "argument %s je pro `%s' nejednoznaèný"
+
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: v¹echny po¾adované operace nelze provést"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "new_mode: práva\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: pro toto zaøízení neexistuje informace o velikosti"
+
+#: src/stty.c:1888
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "chybná hodnota pøírùstku èísla øádku: `%s'"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Heslo:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: /dev/tty nelze otevøít"
+
+#: src/su.c:303
+#, fuzzy, c-format
+msgid "cannot set groups"
+msgstr "nemù¾ete vynechat jak u¾ivatele tak skupinu"
+
+#: src/su.c:307
+#, fuzzy, c-format
+msgid "cannot set group id"
+msgstr "nemù¾ete vynechat jak u¾ivatele tak skupinu"
+
+#: src/su.c:309
+#, fuzzy, c-format
+msgid "cannot set user id"
+msgstr "nemù¾ete vynechat jak u¾ivatele tak skupinu"
+
+#: src/su.c:385
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ]... [SOUBOR]...\n"
+
+#: src/su.c:386
+#, fuzzy
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Mìní efektivní èíslo u¾ivatele (nebo skupiny) na daného U®IVATELE.\n"
+"\n"
+" -, -l, --login tento shell jako login shell\n"
+" -c, --commmand=PØÍKAZ nastaví shellu argument -c PØÍKAZ\n"
+" -f, --fast nastaví shellu -f (pro csh nebo tcsh)\n"
+" -m, --preserve-environment nema¾e promìné prostøedí\n"
+" -p jako -m\n"
+" -s, --shell=SHELL pou¾ije SHELL (pokud to povoluje /etc/"
+"shells)\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+" Je-li zadáno pouze - znamená to -l. Pokud u¾ivatel není zadán, pøedpokládá "
+"se\n"
+"u¾ivatel root.\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "u¾ivatel %s neexistuje"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "chybné heslo"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "pou¾íván omezený (restricted) shell %s"
+
+#: src/su.c:523
+#, fuzzy, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/sum.c:63
+#, fuzzy
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Ke ka¾dému SOUBORu vypí¹e kontrolní souèet a poèet blokù.\n"
+"\n"
+" -r pou¾ije BSD algoritmus a bloky po 1 KB\n"
+" -s, --sysv pou¾ije System V algoritmus a bloky po 512 bajtech\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+"Jestli¾e SOUBOR nebude zadán nebo bude -, bude èten standardní vstup.\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+
+#: src/sync.c:74
+#, fuzzy, c-format
+msgid "ignoring all arguments"
+msgstr "pøíli¹ mnoho argumentù"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#: src/system.h:417
+#, fuzzy
+msgid " --help display this help and exit\n"
+msgstr ""
+"Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+"\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/system.h:419
+#, fuzzy
+msgid " --version output version information and exit\n"
+msgstr ""
+"Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+"\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tac.c:145
+#, fuzzy
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" Vypí¹e ka¾dý SOUBOR na standardní výstup. Poslední øádek jako první.\n"
+"Jestli¾e SOUBOR nebude zadán nebo bude -, bude èten standardní vstup.\n"
+"\n"
+" -b, --before pøipojí oddìlovaè øádkù pøed øádky místo za nì\n"
+" -r, --regex interpretuje oddìlovaè jako regulární výraz\n"
+" -s, --separator=ØETÌZEC pou¾ije ØETÌZCE jako oddìlovaèe místo nového "
+"øádku\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, fuzzy, c-format
+msgid "%s: seek failed"
+msgstr "uzavøení souboru selhalo"
+
+#: src/tac.c:265
+#, fuzzy, c-format
+msgid "record too large"
+msgstr "%s: soubor je pøíli¹ dlouhý"
+
+#: src/tac.c:459
+#, fuzzy, c-format
+msgid "cannot create temporary file %s"
+msgstr "nelze vytvoøit doèasný soubor"
+
+#: src/tac.c:466
+#, fuzzy, c-format
+msgid "cannot open %s for writing"
+msgstr "`%s' nelze do `%s' pøemístit"
+
+#: src/tac.c:487 src/tac.c:494
+#, fuzzy, c-format
+msgid "%s: write error"
+msgstr "chyba pøi zápisu"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "oddìlovaè nemù¾e být prázdný"
+
+#: src/tail.c:220
+#, fuzzy, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+" Vypí¹e prvních 10 øádkù ka¾dého souboru na standardní výstup. S více jak\n"
+"jedním souborem, bude pøed vypsáním ka¾dého uvedena hlavièka obsahující "
+"jméno\n"
+"souboru. Jestli¾e SOUBOR nebude zadán nebo bude -, bude èten standardní "
+"vstup.\n"
+"\n"
+" -c, --bytes=VELIKOST vypí¹e prvních VELIKOST bajtù\n"
+" -n, --lines=POÈET vypí¹e prvních POÈET øádkù místo prvních 10\n"
+" -q, --quiet, --silent nikdy nevypisuje hlavièky s názvy souborù\n"
+" -v, --verbose vypisuje hlavièky s názvy souborù v¾dy\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+" VELIKOST mù¾e mít násobící pøíponu: b pro 512, k pro 1K, m pro 1M. "
+"Jestli¾e\n"
+"první pøepínaè bude -HODNOTA a bude-li pou¾ita násobící pøípona, pak bude "
+"brán\n"
+"jako -c HODNOTA. Jinak bude pøepínaè brán jako -n HODNOTA.\n"
+
+#: src/tail.c:229
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+
+#: src/tail.c:244
+#, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "uzavírání %s (fd=%d)"
+
+#: src/tail.c:411
+#, fuzzy, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "adresáø %s nelze vytvoøit"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr ""
+
+#: src/tail.c:867
+#, fuzzy, c-format
+msgid "%s has become inaccessible"
+msgstr "`%s' se stal nedostupným"
+
+#: src/tail.c:884
+#, fuzzy, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr "soubor %s byl nahrazen nesledovatelným; sledování ukonèeno"
+
+#: src/tail.c:905
+#, fuzzy, c-format
+msgid "%s has become accessible"
+msgstr "`%s' se stal znovu dostupným"
+
+#: src/tail.c:913
+#, fuzzy, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "soubor %s se objevil. Sledování konce souboru pokraèuje."
+
+#: src/tail.c:924
+#, fuzzy, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr ""
+"soubor %s byl nahrazen jiným. Sledování konce souboru\n"
+"pokraèuje."
+
+#: src/tail.c:1025
+#, fuzzy, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: neblokovací mód souboru nelze zru¹it"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: soubor byl zkrácen"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "ji¾ nezbývají ¾ádné soubory"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr "%s: nelze sledovat konec souboru tohoto typu; sledování ukonèeno"
+
+#: src/tail.c:1439
+#, fuzzy, c-format
+msgid "number in %s is too large"
+msgstr "%s je pøíli¹ velké"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr ""
+"%s: neplatné èíslo maximálního poètu nezmìnìných výsledkù funkce stat\n"
+"mezi otevøeními"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: neplatný PID"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: neplatný poèet sekund"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, fuzzy, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "varování: --retry je u¾iteèný pouze v pøípadì --follow=name"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+"varování: PID ignorován; --pid=PID je u¾iteèný pouze v pøípadì sledování "
+"konce"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "varování: --pid=PID není na tomto systému podporován"
+
+#: src/tail.c:1667
+#, fuzzy, c-format
+msgid "cannot follow %s by name"
+msgstr "nelze vytvoøit doèasný soubor"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+
+#: src/tee.c:63
+#, fuzzy
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Kopíruje standardní vstup do ka¾dého souboru a také na standardní výstup.\n"
+"\n"
+" -a, --append pøipojí k daným SOUBORÙM, nepøepisuje je\n"
+" -i, --ignore-interrupts ignoruje signál 'interrupt'\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+
+#: src/test.c:125
+#, fuzzy, c-format
+msgid "missing argument after %s"
+msgstr "argument %s je pro `%s' nejednoznaèný"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "neplatné èíslo"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "oèekávána ')'\n"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "oèekávána ')', nalezeno %s\n"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: oèekáván unární operátor\n"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "k pøepínaèi -nt nemù¾e být uveden pøepínaè -l\n"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "k pøepínaèi -ef nemù¾e být uveden pøepínaè -l\n"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "k pøepínaèi -nt nemù¾e být uveden pøepínaè -l\n"
+
+#: src/test.c:368
+#, fuzzy
+msgid "unknown binary operator"
+msgstr "Neznámá chyba systému"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: oèekáván binární operátor\n"
+
+#: src/test.c:694
+#, fuzzy
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Pou¾ití: %s [SOUBOR]...\n"
+" nebo: %s [PØEPÍNAÈ]\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+
+#: src/test.c:707
+#, fuzzy
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+"\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+
+#: src/test.c:727
+#, fuzzy
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" ( VÝRAZ ) VÝRAZ je pravdivý\n"
+" ! VÝRAZ VÝRAZ je nepravdivý\n"
+" VÝRAZ1 -a VÝRAZ2 VÝRAZ1 i VÝRAZ2 jsou pravdivé\n"
+" VÝRAZ1 -o VÝRAZ2 buï VÝRAZ1 nebo VÝRAZ2 je pravdivý\n"
+"\n"
+" [-n] ØETÌZ ØETÌZ má nenulovou délku\n"
+" -z ØETÌZ ØETÌZ má nulovou délku\n"
+" ØETÌZ1 = ØETÌZ2 ØETÌZce mají stejnou délku\n"
+" ØETÌZ1 != ØETÌZ2 ØETÌZce nemají stejnou délku\n"
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 je roven INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 je vìt¹í nebo roven INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 je vìt¹í ne¾ INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 je men¹í nebo roven INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 je men¹í ne¾ INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 není roven INTEGER2\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+
+#: src/test.c:770
+#, fuzzy
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"Upozornìní: závorky nesmí být interpretovány shellem (musí být oznaèeny "
+"znakem\n"
+"zpìtného lomítka). INTEGER také mù¾e být -l ØE«EZEC, který je vyhodnocen "
+"jako\n"
+"délka øetìzce.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "oèekávána ']'\n"
+
+#: src/test.c:846
+#, fuzzy, c-format
+msgid "extra argument %s"
+msgstr "pøíli¹ mnoho argumentù"
+
+#: src/touch.c:112 src/touch.c:318
+#, fuzzy, c-format
+msgid "invalid date format %s"
+msgstr "argument %s je pro `%s' neplatný"
+
+#: src/touch.c:154
+#, fuzzy, c-format
+msgid "creating %s"
+msgstr "vytváøím soubor `%s'\n"
+
+#: src/touch.c:211
+#, fuzzy, c-format
+msgid "cannot touch %s"
+msgstr "do adresáøe `%s' nelze vejít"
+
+#: src/touch.c:217
+#, fuzzy, c-format
+msgid "setting times of %s"
+msgstr "zachování èasù souboru %s"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+
+#: src/touch.c:344
+#, fuzzy, c-format
+msgid "cannot specify times from more than one source"
+msgstr "soubor nelze rozdìlit více zpùsoby"
+
+#: src/touch.c:389
+#, fuzzy, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr "varování: chybná ¹íøka %lu; u¾ívám %d místo ní"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ]... MNO®INA1 [MNO®INA2]\n"
+
+#: src/tr.c:294
+#, fuzzy
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+" Nahrazuje, komprimuje a/nebo ma¾e znaky ze standardního vstupu, výsledek\n"
+"je zapisován na standardní výstup.\n"
+"\n"
+" -c, --complement napøed vytvoøí doplnìk MNO®INY1\n"
+" -d, --delete pouze ma¾e znaky z MNO®INY1\n"
+" -s, --squeeze-repeats nahradí sekvence jednoho znaku pouze jedním\n"
+" -t, --truncate-set1 napøed zkrátí MNO®INU1 na délku MNO®INY2\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+
+#: src/tr.c:342
+#, fuzzy
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+" Nahrazení nastane, jestli¾e není zadán pøepínaè -d a jsou zadány obì\n"
+"mno¾iny. -t mù¾e být pou¾ito pouze pøi nahrazování. V pøípadì potøeby je\n"
+"MNO®INA2 roz¹íøena na délku MNO®INY1 opakováním posledního znaku. "
+"Pøebyteèné\n"
+"znaky MNO®INY2 jsou ignorovány. Pouze u [:lower:] a [:upper:] je "
+"garantováno,\n"
+"¾e budou rozepsány vzestupnì; pøi pou¾ití v MNO®INÌ2 pøi nahrazování mohou "
+"být\n"
+"pou¾ívány pouze v párech pro zmìnu velikosti písmen. -s pou¾ívá MNO®INU2\n"
+"pøi nahrazování nebo mazání a komprese je vykonána a¾ po tomto. Jinak -s\n"
+"pou¾ívá MNO®INU1.\n"
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+
+#: src/tr.c:354
+#, fuzzy
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"\n"
+" Nahrazení nastane, jestli¾e není zadán pøepínaè -d a jsou zadány obì\n"
+"mno¾iny. -t mù¾e být pou¾ito pouze pøi nahrazování. V pøípadì potøeby je\n"
+"MNO®INA2 roz¹íøena na délku MNO®INY1 opakováním posledního znaku. "
+"Pøebyteèné\n"
+"znaky MNO®INY2 jsou ignorovány. Pouze u [:lower:] a [:upper:] je "
+"garantováno,\n"
+"¾e budou rozepsány vzestupnì; pøi pou¾ití v MNO®INÌ2 pøi nahrazování mohou "
+"být\n"
+"pou¾ívány pouze v párech pro zmìnu velikosti písmen. -s pou¾ívá MNO®INU2\n"
+"pøi nahrazování nebo mazání a komprese je vykonána a¾ po tomto. Jinak -s\n"
+"pou¾ívá MNO®INU1.\n"
+
+#: src/tr.c:519
+#, fuzzy, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"varování: nejednoznaèný osmièkový zápis \\%c%c%c bude\n"
+"\tinterpretován jako 2-bajtová sekvence \\0%c%c, `%c'"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "konce rozsahu `%s-%s' jsou v obráceném poøadí"
+
+#: src/tr.c:838
+#, fuzzy, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "chybný èítaè opakování `%s' v konstrukci [c*n]"
+
+#: src/tr.c:919
+#, fuzzy, c-format
+msgid "missing character class name `[::]'"
+msgstr "chybná tøída znaku `%s'"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr ""
+
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "chybná tøída znaku `%s'"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: operand ve tøídì [=c=] musí být jediný znak"
+
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr "zbloudilý znak v zadání øadící polo¾ky"
+
+# should it be string1 or SET1?
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "zadání opakování [c*] nemù¾e být v MNO®INÌ1"
+
+# string2 or SET2?
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "opakování znaku [c*] mù¾e být v MNO®INÌ2 pouze jednou"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "výraz [=c=] nemù¾e být v MNO®INÌ2 pøi nahrazování"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "jestli¾e MNO®INA1 není zkracována, pak MNO®INA2 nesmí být prázdná"
+
+# ? - rzm
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"pøi nahrazování s doplòkem mno¾iny znakù, MNO®INA2 musí mapovat v¹echny\n"
+"znaky z této oblasti do jednoho"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"pøi nahrazování mohou být v MNO®INÌ2 pouze tøídy znakù [:upper:]\n"
+"a [:lower:]"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "výraz [c*] mù¾e být v MNO®INÌ2 pouze pøi nahrazování"
+
+#: src/tr.c:1731
+#, fuzzy
+msgid "Two strings must be given when translating."
+msgstr "obì dvì mno¾iny musí být pøi nahrazování zadány"
+
+#: src/tr.c:1741
+#, fuzzy
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"pouze jedna mno¾ina mù¾e být zadána pøi mazání bez komprimace\n"
+"opakujících se znakù"
+
+# ? - rzm
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "nezarovnané(á) konstrukce [:upper:] a/nebo [:lower:]"
+
+#: src/true.c:42
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾ití: %s [SOUBOR]...\n"
+" nebo: %s [PØEPÍNAÈ]\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Pou¾ití: %s [PØEPÍNAÈ] [SOUBOR]\n"
+" Výstupem je totálnì seøazený seznam v¹ech polo¾ek ze v¹ech vstupních "
+"øádkù,\n"
+"na kterých jsou polo¾ky seøazeny, vstupního SOUBORu. Jednotlivé polo¾ky "
+"jsou\n"
+"na øádku oddìleny mezerou.\n"
+" Jestli¾e není SOUBOR zadán, bude èten standardní vstup.\n"
+"\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/tsort.c:474
+#, fuzzy, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: vstup obsahuje cyklus:"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: vstup obsahuje cyklus:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ] [SOUBOR]...\n"
+
+#: src/tty.c:70
+#, fuzzy
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Vypí¹e jméno souboru terminálu pøipojeného na standardní vstup.\n"
+"\n"
+" -s, --silent, --quiet potlaèí výstup a vrátí pouze návratový kód.\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "není tty"
+
+#: src/uname.c:118
+#, fuzzy
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+" Vypí¹e nìkteré informace o systému. Není-li zadán ¾ádný pøepínaè, výpis "
+"je\n"
+"stejný jako u pøepínaèe -s.\n"
+"\n"
+" -a, --all v¹echny informace\n"
+" -m, --machine typ poèítaèe (hardware)\n"
+" -n, --nodename jméno poèítaèe v síti\n"
+" -r, --release verze operaèního systému\n"
+" -s, --sysname jméno operaèního systému\n"
+" -p, --procesor typ procesoru\n"
+" -v verze (datum kompilace) operaèního systému\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+
+#: src/uname.c:236
+#, fuzzy, c-format
+msgid "cannot get system name"
+msgstr "nelze vytvoøit doèasný soubor"
+
+#: src/unexpand.c:125
+#, fuzzy
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+" V ka¾dém SOUBORu konvertuje mezery na tabelátory a výsledek vypisuje\n"
+"na standardní výstup. Nebude-li SOUBOR zadán nebo bude-li -, bude èten\n"
+"standardní vstup.\n"
+"\n"
+" -a, --all konvertuje v¹echny mezery, místo pouze úvodních\n"
+" -t, --tabs=POÈET nastaví tabelátor na POÈET mezer (8)\n"
+" -t, --tabs=SEZNAM pou¾ije èárkami oddìlený seznam pro pozice tabelátorù\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+"\n"
+"Místo -t POÈET nebo -t SEZNAM je mo¾no pou¾ít -POÈET nebo -SEZNAM.\n"
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "%s je pøíli¹ velké"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ]... [VSTUP [VÝSTUP]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+
+#: src/uniq.c:350
+#, fuzzy, c-format
+msgid "too many repeated lines"
+msgstr "pøíli¹ mnoho argumentù"
+
+#: src/uniq.c:512
+#, fuzzy
+msgid "invalid number of fields to skip"
+msgstr "chybný poèet polo¾ek na pøeskoèení: `%s'"
+
+# bytes to skip? we were talking about chars? - rzm
+#: src/uniq.c:521
+#, fuzzy
+msgid "invalid number of bytes to skip"
+msgstr "chybný poèet bajtù na pøeskoèení: `%s'"
+
+#: src/uniq.c:530
+#, fuzzy
+msgid "invalid number of bytes to compare"
+msgstr "chybný poèet bajtù pro porovnání: `%s'"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr "výpis v¹ech opakujících se øádkù a poèítadla opakování nemá smysl"
+
+#: src/unlink.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾ití: %s [SOUBOR]...\n"
+" nebo: %s [PØEPÍNAÈ]\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+
+#: src/unlink.c:91
+#, fuzzy, c-format
+msgid "cannot unlink %s"
+msgstr "ioctl na `%s' není mo¾né vykonat"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "èas startu OS nelze zjistit"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s bì¾í"
+
+#: src/uptime.c:135
+msgid "am"
+msgstr " "
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr " "
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr ""
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr ""
+
+#: src/uptime.c:143
+#, fuzzy, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "den"
+msgstr[1] "den"
+
+#: src/uptime.c:147
+#, fuzzy, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "neplatný u¾ivatel"
+msgstr[1] "neplatný u¾ivatel"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", prùmìrná zátì¾: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ]... [SOUBOR]...\n"
+
+#: src/uptime.c:198
+#, fuzzy, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+" Vypí¹e aktuální èas, èas po který je systém v provozu, poèet u¾ivatelù\n"
+"pøihlá¹ených v systému a prùmìrný poèet procesù èekajících ve frontì\n"
+"na zpracování bìhem posledních 1, 5 a 15 minut. \n"
+" Pokud není SOUBOR zadán, pou¾ije se %s. Zadání %s jako SOUBORu je "
+"obvyklé.\n"
+"\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/users.c:109
+#, fuzzy, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+" Vypí¹e momentálnì pøihlá¹ené u¾ivatele. Informace jsou brány ze SOUBORu.\n"
+"Pokud není SOUBOR zadán, pou¾ije se %s. Pokud zadáte %s jako SOUBOR získáte\n"
+"u¾ivatele pøipojené v poslední dobì.\n"
+"\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/wc.c:113
+#, fuzzy
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+" Ke ka¾dému SOUBORu vypí¹e poèet øádkù, slov a bajtù. Bude-li zadán více\n"
+"ne¾ jeden SOUBOR, vypí¹e i celkové údaje. Jestli¾e SOUBOR nebude zadán nebo\n"
+"bude -, bude èten standardní vstup.\n"
+"\n"
+" -c, --bytes, --chars vypí¹e poèet bajtù\n"
+" -m, --chars vypí¹e poèet znakù\n"
+" -l, --lines vypí¹e poèet øádkù\n"
+" -L, --max-line-length vypí¹e délku nejdel¹ího øádku\n"
+" -w, --words vypí¹e poèet slov\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/wc.c:121
+#, fuzzy
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+"Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+"\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr "starý"
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr ""
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr ""
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr ""
+
+#: src/who.c:497
+msgid "clock change"
+msgstr ""
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr ""
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr ""
+
+#: src/who.c:545
+#, fuzzy, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"# u¾ivatelù=%u\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr ""
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "TERMINÁL"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr ""
+
+#: src/who.c:551
+#, fuzzy
+msgid "IDLE"
+msgstr "CHYBNÝ"
+
+#: src/who.c:552
+msgid "PID"
+msgstr ""
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr ""
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr ""
+
+#: src/who.c:633
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Pou¾ití: %s [PØEPÍNAÈ]... SOUBOR1 SOUBOR2\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+
+#: src/whoami.c:51
+#, fuzzy
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+" Vypí¹e jméno aktuálního efektivním u¾ivatele. Stejné jako pøíkaz id -un.\n"
+"\n"
+" --help vypí¹e tuto nápovìdu a skonèí\n"
+" --version vypí¹e oznaèení verze a skonèí\n"
+
+#: src/whoami.c:95
+#, fuzzy, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "jméno u¾ivatele pro UID %u nelze najít"
+
+#: src/yes.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾ití: %s [SOUBOR]...\n"
+" nebo: %s [PØEPÍNAÈ]\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+
+#, fuzzy
+#~ msgid "strip failed"
+#~ msgstr "funkce stat selhala"
+
+#, fuzzy
+#~ msgid "program error"
+#~ msgstr "chyba pøi ètení"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "vlastníka a/nebo skupinu %s nelze zmìnit"
+
+#, fuzzy
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "do adresáøe `%s' nelze vejít"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "k UID nelze zjistit pøihla¹ovací skupinu"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ " Toto je volné programové vybavení; podmínky pro kopírování a "
+#~ "roz¹iøování\n"
+#~ "naleznete ve zdrojových textech. Toto programové vybavení je zcela BEZ "
+#~ "ZÁRUKY,\n"
+#~ "a to i bez záruky PRODEJNOSTI nebo VHODNOSTI PRO NÌJAKÝ KONKRÉTNÍ ÚÈEL.\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "pøíli¹ málo argumentù"
+
+#, fuzzy
+#~ msgid "closing standard output"
+#~ msgstr "standardní výstup"
+
+#, fuzzy
+#~ msgid "cannot change to null group"
+#~ msgstr "vlastníka a/nebo skupinu %s nelze zmìnit"
+
+#~ msgid "group number"
+#~ msgstr "èíslo skupiny"
+
+#, fuzzy
+#~ msgid "invalid group number %s"
+#~ msgstr "neplatné èíslo"
+
+#, fuzzy
+#~ msgid "invalid mode string: %s"
+#~ msgstr "chybný typ øetìzce `%s'"
+
+#, fuzzy
+#~ msgid "unable to restore permissions of %s"
+#~ msgstr "práva %s nelze zmìnit"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "Pou¾ití: %s [PØEPÍNAÈ]... POSLEDNÍ\n"
+#~ " nebo: %s [PØEPÍNAÈ]... PRVNÍ POSLEDNÍ\n"
+#~ " nebo: %s [PØEPÍNAÈ]... PRVNÍ PØÍRÙSTEK POSLEDNÍ\n"
+
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "Pou¾ití: %s [PØEPÍNAÈ]... LEVÝ_SOUBOR PRAVÝ_SOUBOR\n"
+
+#, fuzzy
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "adresáø %s nelze vytvoøit"
+
+#, fuzzy
+#~ msgid "missing file arguments"
+#~ msgstr "pøíli¹ málo argumentù"
+
+#, fuzzy
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "%s exituje, ale není adresáøem"
+
+#, fuzzy
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr ""
+#~ "pøi kopírování více souborù, musí být poslední argument (%s) adresáø"
+
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "varování: --version-control (-V) je zastaralý; podpora pøepínaèe bude\n"
+#~ "v nìkteré z dal¹ích verzí odstranìna. Radìji pou¾ijte --backup=%s."
+
+#, fuzzy
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "varování: --pid=PID není na tomto systému podporován"
+
+#~ msgid "%s: `+' or `-' expected after delimeter"
+#~ msgstr "%s: po oddìlovaèi je oèekáváno `+' nebo `-'"
+
+#, fuzzy
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "pøíli¹ mnoho argumentù, které nejsou pøepínaèi"
+
+#, fuzzy
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-822 (-R) option"
+#~ msgstr "pøi pou¾ití pøepínaèe --string nemohou být zadány soubory"
+
+#~ msgid "undefined"
+#~ msgstr "nedefinováno"
+
+#, fuzzy
+#~ msgid "cannot get time of day"
+#~ msgstr "soubor nelze rozdìlit více zpùsoby"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "%s+%s vstoupiv¹ích záznamù\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "%s+%s vystoupiv¹ích záznamù\n"
+
+#~ msgid "truncated records"
+#~ msgstr "zkrácené záznamy"
+
+#~ msgid ""
+#~ "only one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, "
+#~ "{unblock,sync}"
+#~ msgstr ""
+#~ "mù¾e být pou¾it v¾dy pouze jeden z {ascii,ebcdic,ibm}, {lcase,ucase},\n"
+#~ "{block,unblock}, {unblock,sync}"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr ""
+#~ "s pøepínaèem pro výpis vnitøní databáze 'dircolors' nemù¾e\n"
+#~ "být pou¾it argument pro soubor"
+
+#, fuzzy
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "varování: chybná ¹íøka %lu; u¾ívám %d místo ní"
+
+#~ msgid ""
+#~ "warning: unportable BRE: `%s': using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr ""
+#~ "upozornìní: nepøenositelné : '%s': pou¾ití '^' jako prvního znaku\n"
+#~ "základního regulárního výrazu není pøenositelné; bude ignorováno"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Pou¾ití: %s [argumenty jsou ignorovány]\n"
+#~ " nebo: %s PØEPÍNAÈ\n"
+#~ "Ukonèí se s návratovým kódem znamenajícím chybu.\n"
+#~ "\n"
+#~ "Následující jména pøepínaèù nemohou být zkracována.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid "invalid width option: `%s'"
+#~ msgstr "chybný typ øetìzce `%s'"
+
+#, fuzzy
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "varování: chybná ¹íøka %lu; u¾ívám %d místo ní"
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "neznámý pøepínaè `-%c'"
+
+#, fuzzy
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "varování: chybná ¹íøka %lu; u¾ívám %d místo ní"
+
+#, fuzzy
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr ""
+#~ "pøi kopírování více souborù, musí být poslední argument (%s) adresáø"
+
+#, fuzzy
+#~ msgid "%s is a directory"
+#~ msgstr "%s exituje, ale není adresáøem"
+
+#, fuzzy
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "adresáø %s nelze vytvoøit"
+
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "chybné èíslo polo¾ky pro soubor 1: `%s'"
+
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "chybné èíslo polo¾ky pro soubor 2: `%s'"
+
+#~ msgid "too many non-option arguments"
+#~ msgstr "pøíli¹ mnoho argumentù, které nejsou pøepínaèi"
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "pøíli¹ málo argumentù, které nejsou pøepínaèi"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: Soubor existuje"
+
+#, fuzzy
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "vytvoøen symbolický odkaz `%s' na `%s'"
+
+#, fuzzy
+#~ msgid "create hard link %s to %s"
+#~ msgstr "vytvoøen pevný odkaz `%s' na `%s'"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "Pou¾ití: %s [PØEPÍNAÈ]... POSLEDNÍ\n"
+#~ " nebo: %s [PØEPÍNAÈ]... PRVNÍ POSLEDNÍ\n"
+#~ " nebo: %s [PØEPÍNAÈ]... PRVNÍ PØÍRÙSTEK POSLEDNÍ\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr "pøi vytváøení více odkazù, musí být poslední argument adresáø"
+
+# in Genitive - rzm
+#~ msgid "file"
+#~ msgstr "zadaného souboru"
+
+# in Genitive - rzm
+#~ msgid "files"
+#~ msgstr "zadaných souborù"
+
+#~ msgid "checksum"
+#~ msgstr "kontrolního souètu"
+
+#~ msgid "checksums"
+#~ msgstr "kontrolních souètù"
+
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "pøepínaèe --string a --check se vzájemnì vyluèují"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "pøi pou¾ití pøepínaèe --string nemohou být zadány soubory"
+
+#~ msgid "only one argument may be specified when using --check"
+#~ msgstr "pouze jeden argument mù¾e být zadán pøi u¾ití pøepínaèe --check"
+
+#, fuzzy
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "práva %s nelze zmìnit"
+
+#, fuzzy
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "práva %s nelze zmìnit"
+
+#, fuzzy
+#~ msgid "wrong number of arguments"
+#~ msgstr "pøíli¹ málo argumentù"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr "pro roury nesmí být hlavní a vedlej¹í èíslo zaøízení zadáno"
+
+#, fuzzy
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "práva %s nelze zmìnit"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr "pøi pøemís»ování více souborù, musí být poslední argument adresáø"
+
+#, fuzzy
+#~ msgid ""
+#~ "Run COMMAND with an adjusted scheduling priority.\n"
+#~ "With no COMMAND, print the current scheduling priority. ADJUST is 10\n"
+#~ "by default. Range goes from -20 (highest priority) to 19 (lowest).\n"
+#~ "\n"
+#~ " -n, --adjustment=ADJUST increment priority by ADJUST first\n"
+#~ msgstr ""
+#~ " Provede PØÍKAZ se zadanou prioritou. Bez PØÍKAZu, vypí¹e aktuální "
+#~ "prioritu.\n"
+#~ "NASTAVENÍ je implicitnì 10. Rozsah je od -20 (nejvy¹¹í priorita) do 19\n"
+#~ "(nejni¾¹í).\n"
+#~ "\n"
+#~ " -NASTAVENÍ aktuální prioritu zvý¹í o NASTAVENÍ\n"
+#~ " -n, --adjustment=NASTAVENÍ jako -NASTAVENÍ\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid "invalid option `%s'"
+#~ msgstr "chybný typ øetìzce `%s'"
+
+#, fuzzy
+#~ msgid "invalid priority `%s'"
+#~ msgstr "chybné èíslo polo¾ky: `%s'"
+
+#, fuzzy
+#~ msgid "cannot get priority"
+#~ msgstr "adresáø %s nelze vytvoøit"
+
+#, fuzzy
+#~ msgid "cannot set priority"
+#~ msgstr "adresáø %s nelze vytvoøit"
+
+#~ msgid "old-style offset"
+#~ msgstr "posunutí ve starém stylu"
+
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "chybný druhý argument '%s' ve starém formátu"
+
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr "v kompatibilním módu musí být poslední dva argumenty posuny"
+
+#, fuzzy
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr ""
+#~ "Rozpoznává nepøenositelné konstrukce ve JMÉNU.\n"
+#~ "\n"
+#~ " -p, --portability kontrola pro v¹echny POSIXové systémy, ne jen "
+#~ "tento\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "velikost tabelátoru obsahuje neplatný znak"
+
+#, fuzzy
+#~ msgid "`%s' is not a directory"
+#~ msgstr "%s exituje, ale není adresáøem"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "adresáø '%s' není prohledávatelný"
+
+#, fuzzy
+#~ msgid "name `%s' has length %ld; exceeds limit of %ld"
+#~ msgstr "délka jména '%s' je %d; maximum ale je %d"
+
+#, fuzzy
+#~ msgid "path `%s' has length %d; exceeds limit of %ld"
+#~ msgstr "délka cesty '%s' je %d; maximum ale je %d"
+
+# c-format
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "`--pages' chybný rozsah èísel stránek: `%s'"
+
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "`--pages' chybné èíslo poèáteèní stránky: `%s'"
+
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "`--pages' chybné èíslo koncové stránky: `%s'"
+
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr ""
+#~ "`--pages' èíslo poèáteèní stránky je vìt¹í ne¾ èíslo koncové stránky"
+
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "`--columns=SLOUPCÙ' neplatný poèet sloupcù: `%s'"
+
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%e. %b %Y %H.%M"
+
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr "èíslo poèáteèní stránky je vìt¹í ne¾ èíslo koncové stránky: `%d'"
+
+#~ msgid "Page %d"
+#~ msgstr "Strana %d"
+
+#, fuzzy
+#~ msgid "\\%c: invalid escape"
+#~ msgstr "%s: chybný vzorek"
+
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "Pou¾ití: %s formát [argument...]\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+#~ msgstr ""
+#~ " Tento program je volné programové vybavení; mù¾ete jej ¹íøit a "
+#~ "modifikovat\n"
+#~ "podle ustanovení Obecné veøejné licence GNU, vydávané Free Software\n"
+#~ "Foundation; a to buï verze 2 této licence anebo (podle va¹eho uvá¾ení),\n"
+#~ "kterékoli pozdìj¹í verze.\n"
+#~ "\n"
+#~ " Tento program je roz¹iøován v nadìji, ¾e bude u¾iteèný, av¹ak BEZ "
+#~ "JAKÉKOLI\n"
+#~ "ZÁRUKY; neposkytují se ani odvozené záruky PRODEJNOSTI anebo VHODNOSTI "
+#~ "PRO\n"
+#~ "NÌJAKÝ KONKRÉTNÍ ÚÈEL. Dal¹í podrobnosti najdete v Obecné veøené licenci "
+#~ "GNU.\n"
+#~ "\n"
+#~ " Kopie Obecné veøejné licence GNU mìla být dodána spolu s tímto "
+#~ "programem;\n"
+#~ "pokud se tak nestalo, napi¹te o ni Free Software Foundation, Inc.,\n"
+#~ "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "do adresáøe `%s' nelze vejít"
+
+#, fuzzy
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "pøíkaz %s nelze provést"
+
+#, fuzzy
+#~ msgid "cannot lstat %s"
+#~ msgstr "datum nelze nastavit"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "do adresáøe `%s' nelze vejít"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "`.' nebo `..' nelze smazat"
+
+#, fuzzy
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ " -r, -R, --recursive remove the contents of directories recursively\n"
+#~ " -v, --verbose explain what is being done\n"
+#~ msgstr ""
+#~ "Ma¾e SOUBOR(y).\n"
+#~ "\n"
+#~ " -d, --directory sma¾e adresáø, dokonce kdy¾ není prázdný (pouze\n"
+#~ " superu¾ivatel)\n"
+#~ " -f, --force ignoruje neexistující soubory\n"
+#~ " -i, --interactive ptá se pøed ka¾dým smazáním\n"
+#~ " -r, -R, --recursive ma¾e obsah adresáøù rekurzívnì\n"
+#~ " -v, --verbose vypisuje co je udìláno\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ "Smazání souboru jeho¾ název zaèíná znakem `-', napøíklad `-foo',\n"
+#~ "docílíte jedním z následujících pøíkazù:\n"
+#~ " %s -- -foo\n"
+#~ " %s ./-foo\n"
+
+#~ msgid ""
+#~ "when the starting value is larger than the limit,\n"
+#~ "the increment must be negative"
+#~ msgstr ""
+#~ "pokud je poèáteèní hodnota vìt¹í ne¾ koncová,\n"
+#~ "pøírùstek musí být záporný"
+
+#~ msgid ""
+#~ "when the starting value is smaller than the limit,\n"
+#~ "the increment must be positive"
+#~ msgstr ""
+#~ "pokud je poèáteèní hodnota men¹í ne¾ koncová,\n"
+#~ "pøírùstek musí být kladný"
+
+#, fuzzy
+#~ msgid "`-%d' option is obsolete; use `-l %d'"
+#~ msgstr "varování: chybná ¹íøka %lu; u¾ívám %d místo ní"
+
+#~ msgid "stdin: read error"
+#~ msgstr "stdin: chyba pøi ètení"
+
+# src/tail.c:938
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "%c: neplatný znak v zastaralém pøepínaèi"
+
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "pøíli¹ mnoho argumentù; Pøi pou¾ití zastaralé syntaxe pøepínaèe %s,\n"
+#~ "mù¾e být uveden pouze jeden souborový argument. Radìji pou¾ijte\n"
+#~ "ekvivalentní pøepínaè -n nebo -c."
+
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "Varování: pou¾ití dvou nebo více souborových argumentù se zastaralou "
+#~ "syntaxí\n"
+#~ "pøepínaèe %s není portabilní. Radìji pou¾ijte ekvivalentní pøepínaè\n"
+#~ "-n nebo -c."
+
+#, fuzzy
+#~ msgid "`%s' option is obsolete; use `%s-%c %.*s'"
+#~ msgstr "varování: chybná ¹íøka %lu; u¾ívám %d místo ní"
+
+# src/tail.c:968
+#~ msgid "%s: is so large that it is not representable"
+#~ msgstr "%s: je pøíli¹ velké, proto jej nelze vnitønì popsat"
+
+#~ msgid "%s is larger than the maximum file size on this system"
+#~ msgstr "%s je vìt¹í ne¾ maximální mo¾ná velikost souboru v tomto systému"
+
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr ""
+#~ "%s: neplatné èíslo maximálního poètu po sobì jdoucích zmìn velikosti"
+
+#~ msgid "argument expected\n"
+#~ msgstr "oèekáván argument\n"
+
+#~ msgid "integer expression expected %s\n"
+#~ msgstr "%s je oèekáván výraz typu integer\n"
+
+#~ msgid "before -lt"
+#~ msgstr "pøed -lt"
+
+#~ msgid "after -lt"
+#~ msgstr "po -lt"
+
+#~ msgid "before -le"
+#~ msgstr "pøed -le"
+
+#~ msgid "after -le"
+#~ msgstr "po -le"
+
+#~ msgid "before -gt"
+#~ msgstr "pøed -gt"
+
+#~ msgid "after -gt"
+#~ msgstr "po -gt"
+
+#~ msgid "before -ge"
+#~ msgstr "pøed -ge"
+
+#~ msgid "after -ge"
+#~ msgstr "po -ge"
+
+#~ msgid "before -ne"
+#~ msgstr "pøed -ne"
+
+#~ msgid "after -ne"
+#~ msgstr "po -ne"
+
+#~ msgid "before -eq"
+#~ msgstr "pøed -eq"
+
+#~ msgid "after -eq"
+#~ msgstr "po -eq"
+
+#~ msgid "after -t"
+#~ msgstr "po -t"
+
+#, fuzzy
+#~ msgid "too many arguments\n"
+#~ msgstr "pøíli¹ mnoho argumentù"
+
+#, fuzzy
+#~ msgid "file arguments missing"
+#~ msgstr "pøíli¹ málo argumentù"
+
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "chybný zápis `\\%c'"
+
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr ""
+#~ "dvì mno¾iny musí být zadány pøi mazání a komprimaci opakujících se znakù"
+
+#~ msgid "at least one string must be given when squeezing repeats"
+#~ msgstr ""
+#~ "nejménì jedna mno¾ina musí být zadána pøi komprimaci opakujících se znakù"
+
+#~ msgid ""
+#~ "invalid identity mapping; when translating, any [:lower:] or [:upper:]\n"
+#~ "construct in string1 must be aligned with a corresponding construct\n"
+#~ "([:upper:] or [:lower:], respectively) in string2"
+#~ msgstr ""
+#~ "nelze identifikovat mapování: pøi nahrazování, libovolná konstrukce [:"
+#~ "lower:]\n"
+#~ "nebo [:upper:] v MNO®INÌ1 musí být zarovnána s odpovídající konstrukcí\n"
+#~ "([:upper:] nebo [:lower:]) v MNO®INÌ2."
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Pou¾ití: %s [argumenty jsou ignorovány]\n"
+#~ " nebo: %s PØEPÍNAÈ\n"
+#~ "Ukonèí se s návratovým kódem znamenajícím ukonèení bez chyby.\n"
+#~ "\n"
+#~ "Následující jména pøepínaèù nemohou být zkracována.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+
+#~ msgid "only one argument may be specified"
+#~ msgstr "mù¾e být zadán pouze jeden argument"
+
+#, fuzzy
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr "varování: chybná ¹íøka %lu; u¾ívám %d místo ní"
+
+#, fuzzy
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "varování: chybná ¹íøka %lu; u¾ívám %d místo ní"
+
+#~ msgid "%s: cannot find username for UID %u\n"
+#~ msgstr "%s: jméno u¾ivatele pro UID %u nelze najít\n"
+
+#, fuzzy
+#~ msgid "Try %s --help' for more information.\n"
+#~ msgstr "Více informací získáte pøíkazem `%s --help'.\n"
+
+#, fuzzy
+#~ msgid "cannot lstat `.'"
+#~ msgstr "datum nelze nastavit"
+
+#, fuzzy
+#~ msgid "%s: remove directory %s? "
+#~ msgstr "adresáø %s nelze vytvoøit"
+
+#, fuzzy
+#~ msgid "%s: directory %s is write protected; descend into it anyway? "
+#~ msgstr "%s: do adresáøe `%s' je zakázán zápis; opravdu pokraèovat? "
+
+#~ msgid "removing all entries of directory %s\n"
+#~ msgstr "mazání v¹ech polo¾ek adresáøe `%s'\n"
+
+#~ msgid "continue? "
+#~ msgstr "pokraèovat? "
+
+#, fuzzy
+#~ msgid "cannot change back to directory %s via `..'"
+#~ msgstr "do adresáøe `%s' nelze vejít"
+
+#, fuzzy
+#~ msgid "%s: remove directory %s%s? "
+#~ msgstr "adresáø %s nelze vytvoøit"
+
+#~ msgid " (might be nonempty)"
+#~ msgstr " (nemusí být prázdný)"
+
+#, fuzzy
+#~ msgid "removing the directory itself: %s\n"
+#~ msgstr "varování: adresáø nelze zmìnit na %s"
+
+#, fuzzy
+#~ msgid "cannot fork"
+#~ msgstr "pøíkaz %s nelze provést"
+
+#, fuzzy
+#~ msgid ""
+#~ "ERROR: the source file %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after opening it), the numbers\n"
+#~ "are %lu/%lu. That means that while this program was running,\n"
+#~ "the file was replaced with another one. Skipping this file."
+#~ msgstr ""
+#~ "CHYBA: adresáø `%s' mìl pøi spu¹tìní zaøízení/i-uzel\n"
+#~ "èísla %lu/%lu, ale nyní (po zmìnì adresáøe do nìj), jsou èísla pro `.'\n"
+#~ "%lu/%lu. To znamená, ¾e bìhem bìhu pøíkazu rm, do¹lo k nahrazení "
+#~ "adresáøe\n"
+#~ "jiným adresáøem nebo ke zmìnì odkazu na jiný adresáø."
+
+#, fuzzy
+#~ msgid ""
+#~ "ERROR: the directory %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after a chdir into it), the numbers for `.'\n"
+#~ "are %lu/%lu. That means that while rm was running, the directory\n"
+#~ "was replaced with either another directory or a link to another directory."
+#~ msgstr ""
+#~ "CHYBA: adresáø `%s' mìl pøi spu¹tìní zaøízení/i-uzel\n"
+#~ "èísla %lu/%lu, ale nyní (po zmìnì adresáøe do nìj), jsou èísla pro `.'\n"
+#~ "%lu/%lu. To znamená, ¾e bìhem bìhu pøíkazu rm, do¹lo k nahrazení "
+#~ "adresáøe\n"
+#~ "jiným adresáøem nebo ke zmìnì odkazu na jiný adresáø."
+
+#, fuzzy
+#~ msgid ""
+#~ "ERROR: the directory %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after changing into at least one subdirectory\n"
+#~ "and changing back via `..'), the numbers for `.' are %lu/%lu.\n"
+#~ "That means that while rm was running, a partially-removed subdirectory\n"
+#~ "was moved to a different position in the file system hierarchy."
+#~ msgstr ""
+#~ "CHYBA: adresáø `%s' mìl pøi spu¹tìní zaøízení/i-uzel\n"
+#~ "èísla %lu/%lu, ale nyní (po zmìnì adresáøe do nìj), jsou èísla pro `.'\n"
+#~ "%lu/%lu. To znamená, ¾e bìhem bìhu pøíkazu rm, do¹lo k nahrazení "
+#~ "adresáøe\n"
+#~ "jiným adresáøem nebo ke zmìnì odkazu na jiný adresáø."
+
+#, fuzzy
+#~ msgid " or: %s [-acm] MMDDhhmm[YY] FILE... (obsolete)\n"
+#~ msgstr " nebo : %s [-acm] MMDDhhmm[YY] SOUBOR... (zastaralé)\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#~ msgid ""
+#~ "Change the group membership of each FILE to GROUP.\n"
+#~ "\n"
+#~ " -c, --changes like verbose but report only when a change is "
+#~ "made\n"
+#~ " --dereference affect the referent of each symbolic link, "
+#~ "rather\n"
+#~ " than the symbolic link itself\n"
+#~ " -h, --no-dereference affect symbolic links instead of any referenced "
+#~ "file\n"
+#~ " (available only on systems that can change the\n"
+#~ " ownership of a symlink)\n"
+#~ " -f, --silent, --quiet suppress most error messages\n"
+#~ " --reference=RFILE use RFILE's group rather than the specified\n"
+#~ " GROUP value\n"
+#~ " -R, --recursive operate on files and directories recursively\n"
+#~ " -v, --verbose output a diagnostic for every file processed\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Mìní skupinu zadaných SOUBORù na SKUPINU.\n"
+#~ "\n"
+#~ " -c, --changes vypí¹e soubory, jejich¾ skupina byla zmìnìna\n"
+#~ " --dereference pùsobí na soubor, na nìj¾ se odkazuje "
+#~ "symbolický\n"
+#~ " odkaz\n"
+#~ " -h, --no-dereference pùsobí na symbolický odkaz místo na soubor,\n"
+#~ " na který odkaz odkazuje (funguje pouze na "
+#~ "systémech,\n"
+#~ " které mohou mìnit vlastníky symbolických "
+#~ "odkazù)\n"
+#~ " -f, --silent, --quiet potlaèí vìt¹inu chybových zpráv\n"
+#~ " --reference=RSOUBOR místo hodnoty SKUPINA pou¾ije skupinu souboru "
+#~ "RSOUBOR\n"
+#~ " -R, --recursive vykoná se i v podadresáøích\n"
+#~ " -v, --verbose vypí¹e informaci o ka¾dém zpracovávaném "
+#~ "souboru\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+#~ "\n"
+#~ " -c, --changes like verbose but report only when a change is "
+#~ "made\n"
+#~ " --dereference affect the referent of each symbolic link, "
+#~ "rather\n"
+#~ " than the symbolic link itself\n"
+#~ " -h, --no-dereference affect symbolic links instead of any referenced "
+#~ "file\n"
+#~ " (available only on systems that can change the\n"
+#~ " ownership of a symlink)\n"
+#~ " --from=CURRENT_OWNER:CURRENT_GROUP\n"
+#~ " change the owner and/or group of each file only "
+#~ "if\n"
+#~ " its current owner and/or group match those "
+#~ "specified\n"
+#~ " here. Either may be omitted, in which case a "
+#~ "match\n"
+#~ " is not required for the omitted attribute.\n"
+#~ " -f, --silent, --quiet suppress most error messages\n"
+#~ " --reference=RFILE use RFILE's owner and group rather than\n"
+#~ " the specified OWNER:GROUP values\n"
+#~ " -R, --recursive operate on files and directories recursively\n"
+#~ " -v, --verbose output a diagnostic for every file processed\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Mìní vlastníka a/nebo skupinu zadaných SOUBORù na VLASTNÍKa a/nebo "
+#~ "SKUPINU.\n"
+#~ "\n"
+#~ " -c, --changes vypí¹e soubory, jejich¾ vlastnictví bylo "
+#~ "zmìnìno\n"
+#~ " --dereference pùsobí na soubory, na nì¾ se odkazují "
+#~ "symbolické\n"
+#~ " odkazy\n"
+#~ " -h, --no-dereference pùsobí na symbolické odkazy místo na soubory,\n"
+#~ " na které se odkazy odkazují (funguje pouze na\n"
+#~ " systémech, které umo¾òují mìnit vlatsníky\n"
+#~ " symbolických odkazù)\n"
+#~ " --from=CURRENT_OWNER:CURRENT_GROUP\n"
+#~ " mìní vlastníka a/nebo skupinu ka¾dého souboru,\n"
+#~ " pouze kdy¾ jeho aktuální vlastník a/nebo "
+#~ "skupina\n"
+#~ " odpovídá zadaným. Jak vlastník tak skupina mù¾e "
+#~ "být\n"
+#~ " vynechána, a tedy nebude uva¾ována.\n"
+#~ " -f, --silent, --quiet potlaèí vìt¹inu chybových zpráv\n"
+#~ " --reference=RSOUBOR místo hodnot VLASTNÍK.SKUPINA pou¾ije "
+#~ "vlastníka\n"
+#~ " a skupinu souboru RSOUBOR\n"
+#~ " -R, --recursive pracuje i se soubory a adresáøi v "
+#~ "podadresáøích\n"
+#~ " -v, --verbose vypí¹e informaci o ka¾dém zpracovávaném "
+#~ "souboru\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ " Vlastník nebude zmìnìn, není-li zadán. Skupina nebude zmìnìna, není-li\n"
+#~ "zadána, ale v pøípadì, ¾e uvedete za vlastníkem dvojteèku, bude skupina "
+#~ "zmìnìna\n"
+#~ "na pøihla¹ovací skupinu vlastníka. VLASTNÍKa a SKUPINu lze také zadat "
+#~ "èíselnì\n"
+#~ "stejnì jako symbolicky.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -l, --link link files instead of copying\n"
+#~ " -L, --dereference always follow symbolic links\n"
+#~ " -p same as --preserve=mode,ownership,"
+#~ "timestamps\n"
+#~ " --preserve[=ATTR_LIST] preserve the specified attributes "
+#~ "(default:\n"
+#~ " mode,ownership,timestamps), if possible\n"
+#~ " additional attributes: links, all\n"
+#~ " --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+#~ " --parents append source path to DIRECTORY\n"
+#~ " -P same as `--no-dereference'\n"
+#~ " -r copy recursively, non-directories as "
+#~ "files\n"
+#~ " WARNING: use -R instead when you might "
+#~ "copy\n"
+#~ " special files like FIFOs or /dev/zero\n"
+#~ " --remove-destination remove each existing destination file "
+#~ "before\n"
+#~ " attempting to open it (contrast with --"
+#~ "force)\n"
+#~ msgstr ""
+#~ "Kopíruje ZDROJ do CÍLe nebo více ZDROJù do ADRESÁØe.\n"
+#~ "\n"
+#~ " -a, --archive stejné jako pou¾ití pøepínaèù '-dpR'\n"
+#~ " --backup=[TYP] vytvoøí zálo¾ní kopie pøepisovaných "
+#~ "souborù\n"
+#~ " -b jako --backup, ale bez argumentu\n"
+#~ " -d, --no-dereference zachovává symbolické odkazy\n"
+#~ " -f, --force bude mazat existující cíle bez optání\n"
+#~ " -i, --interactive ptá se pøed pøepsáním\n"
+#~ " -l, --link tvoøí odkazy místo kopírování\n"
+#~ " -p, --preserve zachovává práva a èasy souborù, je-li to "
+#~ "mo¾né\n"
+#~ " -P, --parents pøidává zdrojovou cestu do cílového "
+#~ "ADRESÁØe\n"
+#~ " -r kopíruje rekurzivnì, co není adresáøem "
+#~ "kopíruje\n"
+#~ " jako by to byl soubor.\n"
+#~ " POZOR: Pokud budete kopírovat speciální "
+#~ "soubory\n"
+#~ " jako tøeba roury nebo /dev/zero, pak "
+#~ "radìji\n"
+#~ " pou¾ijte -R\n"
+#~ " --sparse=KDY øídí tvorbu souborù s dírami\n"
+#~ " -R, --recursive kopíruje adresáøe rekurzivnì\n"
+#~ " --strip-trailing-slashes odstraòuje lomítka na konci názvù v¹ech "
+#~ "ZDROJù\n"
+#~ " -s, --symbolic-link tvoøí symbolické odkazy místo kopírování\n"
+#~ " -S, --suffix=PØÍPONA zmìní obvyklou pøíponu zálo¾ních souborù\n"
+#~ " na PØÍPONU\n"
+#~ " -u, --update kopíruje pouze, kdy¾ zdrojový soubor je\n"
+#~ " novìj¹í ne¾ cílový, nebo kdy¾ cílový "
+#~ "soubor\n"
+#~ " neexistuje\n"
+#~ " -v, --verbose vypisuje bli¾¹í informace o vykonávání "
+#~ "pøíkazu\n"
+#~ " -x, --one-file-system zùstane v jednom souborovém systému\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ " Implicitnì, jsou ZDROJové soubory s dírami detekovány a odpovídající "
+#~ "CÍLový\n"
+#~ "soubor je vytvoøen stejnì `dìravý'. Toto je voleno pøepínaèem --"
+#~ "sparse=auto.\n"
+#~ "Pøepínaèem --sparse=always øíkáme, ¾e v CÍLových souborech se mají "
+#~ "tvoøit\n"
+#~ "díry, jakmile ZDROJový soubor obsahuje dostateènì dlouhé sekvence "
+#~ "nulových\n"
+#~ "bajtù. Pøepínaèem --sparse=never tvorbì souborù s dírami zabráníme.\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Copy a file, converting and formatting according to the options.\n"
+#~ "\n"
+#~ " bs=BYTES force ibs=BYTES and obs=BYTES\n"
+#~ " cbs=BYTES convert BYTES bytes at a time\n"
+#~ " conv=KEYWORDS convert the file as per the comma separated keyword "
+#~ "list\n"
+#~ " count=BLOCKS copy only BLOCKS input blocks\n"
+#~ " ibs=BYTES read BYTES bytes at a time\n"
+#~ " if=FILE read from FILE instead of stdin\n"
+#~ " obs=BYTES write BYTES bytes at a time\n"
+#~ " of=FILE write to FILE instead of stdout\n"
+#~ " seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+#~ " skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "BLOCKS and BYTES may be followed by the following multiplicative "
+#~ "suffixes:\n"
+#~ "xM M, c 1, w 2, b 512, kD 1000, k 1024, MD 1,000,000, M 1,048,576,\n"
+#~ "GD 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.\n"
+#~ "Each KEYWORD may be:\n"
+#~ "\n"
+#~ " ascii from EBCDIC to ASCII\n"
+#~ " ebcdic from ASCII to EBCDIC\n"
+#~ " ibm from ASCII to alternated EBCDIC\n"
+#~ " block pad newline-terminated records with spaces to cbs-size\n"
+#~ " unblock replace trailing spaces in cbs-size records with newline\n"
+#~ " lcase change upper case to lower case\n"
+#~ " notrunc do not truncate the output file\n"
+#~ " ucase change lower case to upper case\n"
+#~ " swab swap every pair of input bytes\n"
+#~ " noerror continue after read errors\n"
+#~ " sync pad every input block with NULs to ibs-size; when used\n"
+#~ " with block or unblock, pad with spaces rather than NULs\n"
+#~ msgstr ""
+#~ " Kopírování souboru, konverze a formátování. Toto v¹e lze navolit\n"
+#~ "následujícími pøepínaèi.\n"
+#~ "\n"
+#~ " bs=BAJTÙ nastaví ibs=BAJTÙ a obs=BAJTÙ\n"
+#~ " cbs=BAJTÙ konvertuje BAJTÙ bajtù najednou\n"
+#~ " conv=KLÍÈ_SLOVA konvertuje podle èárkami oddìleného seznamu klíèových "
+#~ "slov\n"
+#~ " count=BLOKÙ kopíruje pouze BLOKÙ vstupních blokù\n"
+#~ " ibs=BAJTÙ ète BAJTÙ bajtù najednou\n"
+#~ " if=SOUBOR ète ze souboru SOUBOR, místo z stdin\n"
+#~ " obs=BAJTÙ zapisuje BAJTÙ bajtù najednou\n"
+#~ " of=SOUBOR zapisuje do souboru SOUBOR, místo do stdout. Pokud "
+#~ "SOUBOR\n"
+#~ " existuje výstup bude pøipojen k existujícímu obsahu\n"
+#~ " seek=BLOKÙ pøeskoèí prvních BLOKÙ výstupních blokù velikosti "
+#~ "'obs'\n"
+#~ " skip=BLOKÙ pøeskoèí prvních BLOKÙ vstupních blokù velikosti 'ibs'\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ " Poèet BAJTÙ mù¾e mít dodatek: xM pro násobení èíslem M, c pro násobení\n"
+#~ "jednou, w pro násobení dvìma, b - 512-ti, kD - 1000-ci, k - 1024,\n"
+#~ "MD - 1 000 000, M - 1 048 576, GD - 1 000 000 000, G - 1 073 741 826. "
+#~ "Ka¾dé\n"
+#~ "KLÍÈ_SLOVO mù¾e být:\n"
+#~ "\n"
+#~ " ascii z EBCDIC do ASCII\n"
+#~ " ebcdic z ASCII do EBCDIC\n"
+#~ " ibm z ASCII do pozmìnìného EBCDIC\n"
+#~ " block vyplní záznamy ukonèené zn. nového øádku mezerami\n"
+#~ " do velikosti 'cbs'\n"
+#~ " unblock zámìna koncových mezer v záznamech o velikosti 'cbs' na zn. "
+#~ "nového\n"
+#~ " øádku\n"
+#~ " lcase zmìna velkých písmen na malá\n"
+#~ " notrunc nezkracuje výstupní soubory\n"
+#~ " ucase zmìna malých písmen na velká\n"
+#~ " swab zámìna ka¾dého páru vstupních bajtù\n"
+#~ " noerror pokraèuje i pøi vzniku chyby pøi ètení\n"
+#~ " sync doplní ka¾dý vstupní blok nulovými bajty do velikosti 'ibs'\n"
+
+#~ msgid ""
+#~ "Show information about the filesystem on which each FILE resides,\n"
+#~ "or all filesystems by default.\n"
+#~ "\n"
+#~ " -a, --all include filesystems having 0 blocks\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -i, --inodes list inode information instead of block usage\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l, --local limit listing to local filesystems\n"
+#~ " -m, --megabytes like --block-size=1048576\n"
+#~ " --no-sync do not invoke sync before getting usage info "
+#~ "(default)\n"
+#~ " -P, --portability use the POSIX output format\n"
+#~ " --sync invoke sync before getting usage info\n"
+#~ " -t, --type=TYPE limit listing to filesystems of type TYPE\n"
+#~ " -T, --print-type print filesystem type\n"
+#~ " -x, --exclude-type=TYPE limit listing to filesystems not of type "
+#~ "TYPE\n"
+#~ " -v (ignored)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ " Vypí¹e informace o souborových systémech, ve kterých ka¾dý SOUBOR "
+#~ "le¾í,\n"
+#~ "nebo implicitnì v¹ech souborových systémech.\n"
+#~ "\n"
+#~ " -a, --all také souborové systémy mající 0 blokù\n"
+#~ " --block-size=VELIKOST pou¾ije tuto velikost bloku\n"
+#~ " -h, --human-readable velikosti ve formátu èitelném pro èlovìka\n"
+#~ " (napø. 1K 234M 2G)\n"
+#~ " -H, --si podobnì jako pøedchozí, ale násobky 1000 ne 1024\n"
+#~ " -i, --inodes výpis informací o i-uzlech místo o blocích\n"
+#~ " -k, --kilobytes jako --block-size=1024. Implicitnì 512 bajtù,\n"
+#~ " které odpovídají normì POSIX\n"
+#~ " -l, --local omezení výpisu na lokální souborový systém\n"
+#~ " -m, --megabytes jako --block-size=1048576. Implicitnì 512 bajtù,\n"
+#~ " které odpovídají normì POSIX\n"
+#~ " --no-sync nevolá 'sync' pøed získáním informací "
+#~ "(implicitní)\n"
+#~ " -P, --portability pou¾ije formát definovaný normou POSIX\n"
+#~ " --sync zavolá 'sync' pøed získáním informací\n"
+#~ " -t, --type=TYP ve výstupu pouze souborové systémy typu TYP\n"
+#~ " -T, --print-type vypisuje typ souborového systému\n"
+#~ " -x, --exclude-type=TYP ve výstupu nebudou souborové systémy typu TYP\n"
+#~ " -v (ignorován)\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#~ msgid ""
+#~ "Summarize disk usage of each FILE, recursively for directories.\n"
+#~ "\n"
+#~ " -a, --all write counts for all files, not just directories\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -b, --bytes print size in bytes\n"
+#~ " -c, --total produce a grand total\n"
+#~ " -D, --dereference-args dereference PATHs when symbolic link\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l, --count-links count sizes many times if hard linked\n"
+#~ " -L, --dereference dereference all symbolic links\n"
+#~ " -m, --megabytes like --block-size=1048576\n"
+#~ " -S, --separate-dirs do not include size of subdirectories\n"
+#~ " -s, --summarize display only a total for each argument\n"
+#~ " -x, --one-file-system skip directories on different filesystems\n"
+#~ " -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+#~ "FILE.\n"
+#~ " --exclude=PAT Exclude files that match PAT.\n"
+#~ " --max-depth=N print the total for a directory (or file, with --"
+#~ "all)\n"
+#~ " only if it is N or fewer levels below the "
+#~ "command\n"
+#~ " line argument; --max-depth=0 is the same as\n"
+#~ " --summarize\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ " Sèítá diskový prostor zabraný ka¾dým SOUBORem, pro adresáøe i s "
+#~ "obsahem\n"
+#~ "podadresáøù.\n"
+#~ "\n"
+#~ " -a, --all vypí¹e souèet velikosti v¹ech souborù,\n"
+#~ " ne pouze adresáøù\n"
+#~ " --block-size=VELIKOST pou¾ije tuto velikost bloku\n"
+#~ " -b, --bytes velikosti vypí¹e v bajtech\n"
+#~ " -c, --total vypí¹e i celkový souèet\n"
+#~ " -D, --dereference-args následuje symbolický odkaz, kdy¾ jako argument "
+#~ "zadán\n"
+#~ " -h, --human-readable vypisuje velikosti ve formátu èitelném pro lidi\n"
+#~ " (napø. 1K 234M 2G)\n"
+#~ " -H, --si jako pøedchozí, ale jednotky jsou násobkem 1000\n"
+#~ " -k, --kilobytes jako --block-size=1024\n"
+#~ " -l, --count-links jestli¾e jsou soubory pevnými odkazy na jeden "
+#~ "soubor,\n"
+#~ " sèítá velikosti, jako by to byly obyèejné "
+#~ "soubory\n"
+#~ " -L, --dereference následuje v¹echny symbolické odkazy\n"
+#~ " -m, --megabytes jako --block-size=1048576\n"
+#~ " -S, --separate-dirs nepoèítá do velikosti adresáøù velikosti jejich\n"
+#~ " podadresáøù\n"
+#~ " -s, --summarize vypí¹e pouze celkový souèet pro ka¾dý argument\n"
+#~ " -x, --one-file-system pøeskoèí adresáøe na jiných souborových "
+#~ "systémech\n"
+#~ " -X SOUBOR, --exclude-from=SOUBOR pøeskoèí soubory, které vyhovují "
+#~ "libovolnému\n"
+#~ " reg.výr. ze souboru SOUBOR\n"
+#~ " --exclude=REGVÝR pøeskoèí soubory vyhovující REGVÝR\n"
+#~ " --max-depth=N vypisuje názvy adresáøù a celkové souèty pouze\n"
+#~ " do N-té úrovnì adresáøù. Argument --max-depth=0\n"
+#~ " je rovnocenný se --sumarize.\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+# dunno what means `make all components of the given DIRECTORY(ies)' - rzm
+#~ msgid ""
+#~ "In the first two formats, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+#~ "the existing DIRECTORY, while setting permission modes and owner/group.\n"
+#~ "In the third format, create all components of the given DIRECTORY(ies).\n"
+#~ "\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination file\n"
+#~ " -b like --backup but does not accept an argument\n"
+#~ " -c (ignored)\n"
+#~ " -d, --directory treat all arguments as directory names; create all\n"
+#~ " components of the specified directories\n"
+#~ " -D create all leading components of DEST except the "
+#~ "last,\n"
+#~ " then copy SOURCE to DEST; useful in the 1st "
+#~ "format\n"
+#~ " -g, --group=GROUP set group ownership, instead of process' current "
+#~ "group\n"
+#~ " -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-"
+#~ "xr-x\n"
+#~ " -o, --owner=OWNER set ownership (super-user only)\n"
+#~ " -p, --preserve-timestamps apply access/modification times of SOURCE "
+#~ "files\n"
+#~ " to corresponding destination files\n"
+#~ " -s, --strip strip symbol tables, only for 1st and 2nd formats\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " -v, --verbose print the name of each directory as it is created\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ " V prvních dvou formátech kopírování ZDROJe do CÍLe nebo více ZDROJù\n"
+#~ "do ADRESÁØe, s nastavením u¾ivatelských práv a u¾ivatele/skupiny. Ve "
+#~ "tøetím\n"
+#~ "formátu, vytvoøení v¹ech komponent zadaného ADRESÁØE(ù).\n"
+#~ "\n"
+#~ " --backup=[TYP] vytvoøí zálo¾ní kopii pøed smazáním\n"
+#~ " -b jako --backup, ale bez argumentu\n"
+#~ " -c (ignorován)\n"
+#~ " -d, --directory v¹echny argumenty jsou brány jako názvy "
+#~ "adresáøù.\n"
+#~ " V¹echny neexistující komponenty tìchto adresáøù\n"
+#~ " jsou vytvoøeny.\n"
+#~ " -D vytvoøí v¹echy úvodní komponenty CÍLe, kromì "
+#~ "poslední\n"
+#~ " -g, --group=SKUPINA nastaví skupinu souboru na SKUPINU\n"
+#~ " -m, --mode=PRÁVA nastaví pøístupová práva souboru na PRÁVA (zadána "
+#~ "jako\n"
+#~ " pro chmod)\n"
+#~ " -o, --owner=VLASTNÍK nastaví vlastníka souboru (pouze superu¾ivatel - "
+#~ "root)\n"
+#~ " -p, --preserve-timestamps èasy cílového souboru nastaví tak, jak byly\n"
+#~ " nastaveny u zdrojového\n"
+#~ " -s, --strip odstraní tabulky symbolù, pouze 1 a 2 formát\n"
+#~ " -S, --suffix=PØÍPONA nastaví novou pøíponu zálo¾ních souborù\n"
+#~ " -v, --verbose vypisuje jména v¹ech vytváøených adresáøù\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Create a link to the specified TARGET with optional LINK_NAME.\n"
+#~ "If LINK_NAME is omitted, a link with the same basename as the TARGET is\n"
+#~ "created in the current directory. When using the second form with more\n"
+#~ "than one TARGET, the last argument must be a directory; create links\n"
+#~ "in DIRECTORY to each TARGET. Create hard links by default, symbolic\n"
+#~ "links with --symbolic. When creating hard links, each TARGET must "
+#~ "exist.\n"
+#~ "\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination "
+#~ "file\n"
+#~ " -b like --backup but does not accept an "
+#~ "argument\n"
+#~ " -d, -F, --directory hard link directories (super-user only)\n"
+#~ " -f, --force remove existing destination files\n"
+#~ " -n, --no-dereference treat destination that is a symlink to a\n"
+#~ " directory as if it were a normal file\n"
+#~ " -i, --interactive prompt whether to remove destinations\n"
+#~ " -s, --symbolic make symbolic links instead of hard links\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " --target-directory=DIRECTORY specify the DIRECTORY in which to "
+#~ "create\n"
+#~ " the links\n"
+#~ " -v, --verbose print name of each file before linking\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ " Tvoøí odkaz na zadaný CÍL s volitelným NÁZVEM_ODKAZU. Jestli¾e "
+#~ "NÁZEV_ODKAZU\n"
+#~ "není zadán, je vytvoøen odkaz v aktuálním adresáøi, se stejným názvem "
+#~ "jako má\n"
+#~ "CÍL. Pøi pou¾ití druhé formy s více ne¾ jedním CÍLem, poslední argument "
+#~ "musí\n"
+#~ "být ADRESÁØem; v tomto pøípadì, jsou pak vytvoøeny odkazy v adresáøi "
+#~ "ADRESÁØ na\n"
+#~ "CÍLe. Implicitnì jsou tvoøeny pevné odkazy, symbolické pomocí pøepínaèe\n"
+#~ "--symbolic. Pøi tvorbì pevného odkazu musí v¹echny CÍLe existovat.\n"
+#~ "\n"
+#~ " --backup=[TYP] vytvoøí zálohu ka¾dého souboru, který má "
+#~ "být\n"
+#~ " odkazem pøepsán\n"
+#~ " -b jako --backup, ale bez argumentu\n"
+#~ " -d, -F, --directory pevný odkaz na adresáø (pouze "
+#~ "superu¾ivatel)\n"
+#~ " -f, --force vytváøí odkaz i tehdy, existuje-li soubor "
+#~ "tého¾\n"
+#~ " názvu (soubor bude smazán)\n"
+#~ " -n, --no-dereference má-li být pøepsán symbolický odkaz na "
+#~ "adresáø,\n"
+#~ " pak jej sma¾e a vytvoøí po¾adovaný odkaz. "
+#~ "Pokud\n"
+#~ " by nebyl tento pøepínaè zadán, pak by byl "
+#~ "odkaz\n"
+#~ " vytvoøen v adresáøi, na který se odkaz "
+#~ "odkazuje.\n"
+#~ " -i, --interactive ptá se, zda smazat ji¾ existující soubor\n"
+#~ " -s, --symbolic tvoøí symbolický odkaz místo pevného\n"
+#~ " -S, --suffix=PØÍPONA mìní obvyklou pøíponu pro zálo¾ní soubory\n"
+#~ " --target-directory=ADRESÁØ zadání ADRESÁØe, ve kterém vytvoøit "
+#~ "odkazy\n"
+#~ " -v, --verbose pøed vytvoøením odkazu na soubor, vypí¹e "
+#~ "název\n"
+#~ " tohoto souboru\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "List information about the FILEs (the current directory by default).\n"
+#~ "Sort entries alphabetically if none of -cftuSUX nor --sort.\n"
+#~ "\n"
+#~ " -a, --all do not hide entries starting with .\n"
+#~ " -A, --almost-all do not list implied . and ..\n"
+#~ " -b, --escape print octal escapes for nongraphic "
+#~ "characters\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -B, --ignore-backups do not list implied entries ending with ~\n"
+#~ " -c with -lt: sort by, and show, ctime (time of "
+#~ "last\n"
+#~ " modification of file status information)\n"
+#~ " with -l: show ctime and sort by name\n"
+#~ " otherwise: sort by ctime\n"
+#~ " -C list entries by columns\n"
+#~ " --color[=WHEN] control whether color is used to distinguish "
+#~ "file\n"
+#~ " types. WHEN may be `never', `always', or "
+#~ "`auto'\n"
+#~ " -d, --directory list directory entries instead of contents\n"
+#~ " -D, --dired generate output designed for Emacs' dired "
+#~ "mode\n"
+#~ " -f do not sort, enable -aU, disable -lst\n"
+#~ " -F, --classify append indicator (one of */=@|) to entries\n"
+#~ " --format=WORD across -x, commas -m, horizontal -x, long -"
+#~ "l,\n"
+#~ " single-column -1, verbose -l, vertical -C\n"
+#~ " --full-time like -l --time-style=full-iso\n"
+#~ msgstr ""
+#~ " Vypisuje informace o SOUBORech (implicitnì z aktuálního adresáøe). "
+#~ "Jestli¾e\n"
+#~ "není zadán ¾ádný z pøepínaèù -cftuSUX nebo --sort, výstup bude seøazen\n"
+#~ "abecednì.\n"
+#~ "\n"
+#~ " -a, --all vypí¹e v¹echny soubory i ty zaèínající "
+#~ "teèkou\n"
+#~ " -A, --almost-all vypí¹e v¹echny soubory, kromì souborù '.' a "
+#~ "'..'\n"
+#~ " -b, --escape vypí¹e negrafické znaky osmièkovì\n"
+#~ " --block-size=VELIKOST pou¾ije tuto velikost bloku\n"
+#~ " -B, --ignore-backups nevypisuje soubory konèící na ~\n"
+#~ " -c s -lt: øadí podle ctime a vypisuje ctime "
+#~ "(èas\n"
+#~ " poslední zmìny i-uzlových informací);\n"
+#~ " s -l: vypisuje ctime, øadí podle názvu "
+#~ "souboru;\n"
+#~ " jinak: øadí podle ctime\n"
+#~ " -C vypí¹e soubory ve sloupcích\n"
+#~ " --color[=KDY] urèuje kdy jsou barvy pou¾ívány k rozli¹ení "
+#~ "typù\n"
+#~ " souborù. KDY mù¾e být `never', `always' "
+#~ "nebo\n"
+#~ " `auto'\n"
+#~ " -d, --directory vypí¹e názvy adresáøù místo jejich obsahu\n"
+#~ " -D, --dired generuje výstup formátovaný pro Emacsový\n"
+#~ " mód 'dired'\n"
+#~ " -f neseøadí výstup, povolí -aU, zaká¾e -lst\n"
+#~ " -F, --classify k názvùm souborù pøidá znak urèující jejich "
+#~ "typ\n"
+#~ " (jeden z */=@|)\n"
+#~ " --format=SLOVO across jako -x, commas jako -m, horizontal\n"
+#~ " jako -x, long jako -l, single-column jako -"
+#~ "1,\n"
+#~ " verbose jako -l, vertical jako -C\n"
+#~ " --full-time vypí¹e celé datum i celý èas\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -g like -l, but do not list owner\n"
+#~ " -G, --no-group inhibit display of group information\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " --si likewise, but use powers of 1000 not 1024\n"
+#~ " -H, --dereference-command-line follow symbolic links on the command "
+#~ "line\n"
+#~ " --indicator-style=WORD append indicator with style WORD to entry "
+#~ "names:\n"
+#~ " none (default), classify (-F), file-type (-"
+#~ "p)\n"
+#~ " -i, --inode print index number of each file\n"
+#~ " -I, --ignore=PATTERN do not list implied entries matching shell "
+#~ "PATTERN\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l use a long listing format\n"
+#~ " -L, --dereference when showing file information for a "
+#~ "symbolic\n"
+#~ " link, show information for the file the "
+#~ "link\n"
+#~ " references rather than for the link "
+#~ "itself\n"
+#~ " -m fill width with a comma separated list of "
+#~ "entries\n"
+#~ msgstr ""
+#~ " -g (ignorován)\n"
+#~ " -G, --no-group nevypisuju informace o skupinách\n"
+#~ " -h, --human-readable vypisuje velikosti ve formátu pro èlovìka\n"
+#~ " (napø: 1K, 234M, 2G)\n"
+#~ " -H, --si jako pøedchozí, ale jednotky jsou násobky "
+#~ "1000\n"
+#~ " a ne 1024.\n"
+#~ " --indicator-style=SLOVO pøidává indikátory stylem SLOVO k názvùm "
+#~ "souborù\n"
+#~ " SLOVO mù¾e být: none (implicitnì), classify "
+#~ "(-F),\n"
+#~ " file-type (-p)\n"
+#~ " -i, --inode ke ka¾dému souboru vypí¹e jeho i-uzlové "
+#~ "èíslo\n"
+#~ " -I, --ignore=VZOR nevypisuje soubory vyhovující VZORu\n"
+#~ " -k, --kilobytes jako --block-size=1024\n"
+#~ " -l vypí¹e výstup ve dlouhém formátu\n"
+#~ " -L, --dereference u symbolického odkazu vypí¹e soubor, na "
+#~ "který\n"
+#~ " odkaz ukazuje\n"
+#~ " -m vypí¹e soubory jako seznam jmen souborù "
+#~ "oddìlených\n"
+#~ " èárkami\n"
+#~ " -n, --numeric-uid-gid místo jména u¾ivatele (UID) a skupiny (GID)\n"
+#~ " vypisuje èísla\n"
+#~ " -N, --literal vypí¹e jména souborù tak, jak jsou na disku\n"
+#~ " ulo¾ena. Nezpracovává øídící znaky\n"
+#~ " -o dlouhý formát bez informací o skupinách\n"
+#~ " -p, --file-type k názvùm souborù pøidá znak urèující jejich "
+#~ "typ\n"
+#~ " (jeden z /=@|)\n"
+#~ " -q, --hide-control-chars vypí¹e '?' místo negrafických znakù\n"
+#~ " --show-control-chars vypí¹e negrafické znaky tak jak jsou "
+#~ "(implicitní,\n"
+#~ " jestli¾e program není `ls' a výstup není na\n"
+#~ " terminál)\n"
+#~ " -Q, --quote-name vlo¾í názvy souborù do uvozovek\n"
+#~ " --quoting-style=SLOVO pou¾ije kvótovací styl SLOVO pro jména "
+#~ "souborù.\n"
+#~ " SLOVO mù¾e být:\n"
+#~ " literal, locale, shell, shell-always, c, "
+#~ "escape\n"
+#~ " -r, --reverse opaèné uspoøádání pøi øazení\n"
+#~ " -R, --recursive vypí¹e adresáøe rekurzivnì\n"
+#~ " -s, --size vypí¹e velikost ka¾dého souboru v blocích\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -S sort by file size\n"
+#~ " --sort=WORD extension -X, none -U, size -S, time -t,\n"
+#~ " version -v\n"
+#~ " status -c, time -t, atime -u, access -u, use "
+#~ "-u\n"
+#~ " --time=WORD show time as WORD instead of modification "
+#~ "time:\n"
+#~ " atime, access, use, ctime or status; use\n"
+#~ " specified time as sort key if --sort=time\n"
+#~ " --time-style=WORD show times using style WORD:\n"
+#~ " full-iso, iso, locale, posix-iso\n"
+#~ " -t sort by modification time\n"
+#~ " -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+#~ " -u with -lt: sort by, and show, access time\n"
+#~ " with -l: show access time and sort by "
+#~ "name\n"
+#~ " otherwise: sort by access time\n"
+#~ " -U do not sort; list entries in directory "
+#~ "order\n"
+#~ " -v sort by version\n"
+#~ " -w, --width=COLS assume screen width instead of current "
+#~ "value\n"
+#~ " -x list entries by lines instead of by columns\n"
+#~ " -X sort alphabetically by entry extension\n"
+#~ " -1 list one file per line\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "By default, color is not used to distinguish types of files. That is\n"
+#~ "equivalent to using --color=none. Using the --color option without the\n"
+#~ "optional WHEN argument is equivalent to using --color=always. With\n"
+#~ "--color=auto, color codes are output only if standard output is "
+#~ "connected\n"
+#~ "to a terminal (tty).\n"
+#~ msgstr ""
+#~ " -S výstup seøadí podle délky souborù\n"
+#~ " --sort=SLOVO výstup seøadí podle SLOVA:\n"
+#~ " extension (-X), none (-U), size (-S), time (-"
+#~ "t)\n"
+#~ " version (-v)\n"
+#~ " status (-c), time (-t), atime (-u), access (-"
+#~ "u),\n"
+#~ " use (-u)\n"
+#~ " --time=SLOVO vypisuje èas podle SLOVA:\n"
+#~ " atime, access, use, ctime nebo status (-c);\n"
+#~ " jestli¾e je zadán pøepínaè --sort=time, "
+#~ "pou¾ije\n"
+#~ " se tento èas jako øadící klíè\n"
+#~ " -t výstup seøadí podle èasu poslední zmìny "
+#~ "souboru\n"
+#~ " -T, --tabsize=SLOUPCÙ pozice tabelátoru ka¾dých SLOUPCÙ znakù "
+#~ "(impl. 8)\n"
+#~ " -u s -lt: øadí podle atime a také jej "
+#~ "vypisuje;\n"
+#~ " s -l: vypisuje atime, ale øadí podle názvù "
+#~ "souborù\n"
+#~ " jinak: øadí podle atime\n"
+#~ " -U zaká¾e seøazení výstupu, názvy souborù "
+#~ "budou\n"
+#~ " vypsány v tom poøadí v jakém jsou v "
+#~ "adresáøi\n"
+#~ " -v seøadí výstup podle verzí souborù\n"
+#~ " -w, --width=SLOUPCÙ pou¾ije tuto ¹íøku obrazovky pøi vypisování\n"
+#~ " -x jména souborù vypí¹e po øádcích místo po "
+#~ "sloupcích\n"
+#~ " -X výstup seøadí podle pøípon souborù\n"
+#~ " -1 vypí¹e jeden soubor na jeden øádek\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ " Implictnì není k rozli¹ování typù souborù barva pou¾ívána. To je "
+#~ "rovnocenné\n"
+#~ "s pou¾itím pøepínaèe --color=none. Pou¾ití pøepínaèe --color bez "
+#~ "argumentu\n"
+#~ "KDY je rovnocenné s pou¾itím pøepínaèe --color=always. Pøepínaè --"
+#~ "color=auto\n"
+#~ "zpùsobí, ¾e barvy budou pou¾ity pouze, je-li standardní výstup pøipojen\n"
+#~ "k terminálu (tty).\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+#~ "for even very expensive hardware probing to recover the data.\n"
+#~ "\n"
+#~ " -f, --force change permissions to allow writing if necessary\n"
+#~ " -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+#~ " -s, --size=N shred this many bytes (suffixes like k, M, G accepted)\n"
+#~ " -u, --remove truncate and remove file after overwriting\n"
+#~ " -v, --verbose show progress\n"
+#~ " -x, --exact do not round file sizes up to the next full block\n"
+#~ " -z, --zero add a final overwrite with zeros to hide shredding\n"
+#~ " - shred standard output\n"
+#~ " --help display this help and exit\n"
+#~ " --version print version information and exit\n"
+#~ "\n"
+#~ "Delete FILE(s) if --remove (-u) is specified. The default is not to "
+#~ "remove\n"
+#~ "the files because it is common to operate on device files like /dev/hda,\n"
+#~ "and those files usually should not be removed. When operating on "
+#~ "regular\n"
+#~ "files, most people use the --remove option.\n"
+#~ "\n"
+#~ "CAUTION: Note that shred relies on a very important assumption:\n"
+#~ "that the filesystem overwrites data in place. This is the traditional\n"
+#~ "way to do things, but many modern filesystem designs do not satisfy this\n"
+#~ "assumption. The following are examples of filesystems on which shred is\n"
+#~ "not effective:\n"
+#~ "\n"
+#~ "* log-structured or journaled filesystems, such as those supplied with\n"
+#~ " AIX and Solaris (and JFS, ReiserFS, XFS, etc.)\n"
+#~ "\n"
+#~ "* filesystems that write redundant data and carry on even if some writes\n"
+#~ " fail, such as RAID-based filesystems\n"
+#~ "\n"
+#~ "* filesystems that make snapshots, such as Network Appliance's NFS "
+#~ "server\n"
+#~ "\n"
+#~ "* filesystems that cache in temporary locations, such as NFS\n"
+#~ " version 3 clients\n"
+#~ "\n"
+#~ "* compressed filesystems\n"
+#~ "\n"
+#~ "In addition, file system backups and remote mirrors may contain copies\n"
+#~ "of the file that cannot be removed, and that will allow a shredded file\n"
+#~ "to be recovered later.\n"
+#~ msgstr ""
+#~ " Bezpeèné mazání souborù, najprve je v¾dy soubor pøepsán, aby byl znièen "
+#~ "jeho\n"
+#~ "obsah a následnì je teprve soubor smazán.\n"
+#~ "\n"
+#~ " -f, --force povolí zmìnu práva pro zápis do souboru, jestli¾e\n"
+#~ " je to nutné\n"
+#~ " -n, --iterations=N pøepí¹e N-krát, místo implicitního poètu (%d)\n"
+#~ " -s, --size=N aplikuje na tuto délku souboru (pøípony jako k, M, "
+#~ "G\n"
+#~ " jsou mo¾né)\n"
+#~ " -u, --remove zkrátí a sma¾e soubor po pøepsání\n"
+#~ " -v, --verbose výpis informací o prùbìhu\n"
+#~ " -x, --exact nezaokrouhluje velikost souboru nahoru na celé "
+#~ "bloky\n"
+#~ " -z, --zero pøidá poslední fázi pøepisu nulami\n"
+#~ " - pøepisuje standardní výstup\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí"
+
+#~ msgid ""
+#~ "Update the access and modification times of each FILE to the current "
+#~ "time.\n"
+#~ "\n"
+#~ " -a change only the access time\n"
+#~ " -c, --no-create do not create any files\n"
+#~ " -d, --date=STRING parse STRING and use it instead of current time\n"
+#~ " -f (ignored)\n"
+#~ " -m change only the modification time\n"
+#~ " -r, --reference=FILE use this file's times instead of current time\n"
+#~ " -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current "
+#~ "time\n"
+#~ " --time=WORD set time given by WORD: access atime use (same "
+#~ "as -a)\n"
+#~ " modify mtime (same as -m)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Note that the three time-date formats recognized for the -d and -t "
+#~ "options\n"
+#~ "and for the obsolescent argument are all different.\n"
+#~ msgstr ""
+#~ " Nastaví èas posledního pøístupu a poslední zmìny ka¾dého zadaného "
+#~ "SOUBORU\n"
+#~ "na aktuální èas.\n"
+#~ "\n"
+#~ " -a zmìní pouze èas posledního pøístupu\n"
+#~ " -c, --no-create nevytvoøí nové soubory\n"
+#~ " -d, --date=ØETÌZEC analyzuje ØETÌZEC a pou¾ije ho místo aktuálního "
+#~ "èasu\n"
+#~ " -f (ignorován)\n"
+#~ " -m zmìní pouze èas poslední zmìny souboru\n"
+#~ " -r, --reference=SOUBOR pou¾ije èasy SOUBORu místo aktuálního èasu\n"
+#~ " -t ÈAS pou¾ije [[CC]YY]MMDDhhmm[.ss] místo aktuálního "
+#~ "èasu\n"
+#~ " --time=SLOVO nastaví ÈAS zadaný SLOVEM: \n"
+#~ " access, atime, use (jako -a)\n"
+#~ " modify, mtime (jako -m)\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ "Formáty èasù pro pøepínaèe -d, -t a pro zastaralou syntaxi jsou rùzné.\n"
+
+#~ msgid "Copyright (C) 2001 Free Software Foundation, Inc."
+#~ msgstr "Copyright (C) 2001 Free Software Foundation, Inc."
+
+#~ msgid ""
+#~ "when creating character special files, major and minor device\n"
+#~ "numbers must be specified"
+#~ msgstr ""
+#~ "pøi vytváøení speciálního znakového zaøízení, musí být zadáno hlavní\n"
+#~ "a vedlej¹í èíslo zaøízení"
+
+#, fuzzy
+#~ msgid "virtual memory exhausted"
+#~ msgstr "pamì» vyèerpána"
+
+#~ msgid "group of %s changed to %s\n"
+#~ msgstr "skupina souboru %s zmìnìna na %s\n"
+
+#~ msgid "you are not a member of group `%s'"
+#~ msgstr "nejste èlenem skupiny `%s'"
+
+#~ msgid "owner of %s changed to "
+#~ msgstr "vlastník souboru %s zmìnìn na "
+
+#, fuzzy
+#~ msgid "cannot remove old link to `%s'"
+#~ msgstr "ioctl na `%s' není mo¾né vykonat"
+
+#, fuzzy
+#~ msgid "cannot make fifo `%s'"
+#~ msgstr "ioctl na `%s' není mo¾né vykonat"
+
+#~ msgid "days"
+#~ msgstr "dny"
+
+#~ msgid "users"
+#~ msgstr "u¾ivatelé"
+
+#, fuzzy
+#~ msgid "%s: only one signal specififier allowed"
+#~ msgstr "mù¾e být zadán pouze jeden argument"
+
+#, fuzzy
+#~ msgid ""
+#~ "Run COMMAND with root directory set to NEWROOT.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "FORMAT controls the output. The only valid option for the second form\n"
+#~ "specifies Coordinated Universal Time. Interpreted sequences are:\n"
+#~ "\n"
+#~ " %%%% a literal %%\n"
+#~ " %%a locale's abbreviated weekday name (Sun..Sat)\n"
+#~ " %%A locale's full weekday name, variable length (Sunday..Saturday)\n"
+#~ " %%b locale's abbreviated month name (Jan..Dec)\n"
+#~ " %%B locale's full month name, variable length (January..December)\n"
+#~ " %%c locale's date and time (Sat Nov 04 12:02:33 EST 1989)\n"
+#~ " %%C century (year divided by 100 and truncated to an integer) [00-"
+#~ "99]\n"
+#~ " %%d day of month (01..31)\n"
+#~ " %%D date (mm/dd/yy)\n"
+#~ " %%e day of month, blank padded ( 1..31)\n"
+#~ " %%h same as %%b\n"
+#~ " %%H hour (00..23)\n"
+#~ " %%I hour (01..12)\n"
+#~ " %%j day of year (001..366)\n"
+#~ " %%k hour ( 0..23)\n"
+#~ " %%l hour ( 1..12)\n"
+#~ " %%m month (01..12)\n"
+#~ " %%M minute (00..59)\n"
+#~ " %%n a newline\n"
+#~ " %%p locale's AM or PM\n"
+#~ " %%r time, 12-hour (hh:mm:ss [AP]M)\n"
+#~ " %%s seconds since `00:00:00 1970-01-01 UTC' (a GNU extension)\n"
+#~ " %%S second (00..60)\n"
+#~ " %%t a horizontal tab\n"
+#~ " %%T time, 24-hour (hh:mm:ss)\n"
+#~ " %%u day of week (1..7); 1 represents Monday\n"
+#~ " %%U week number of year with Sunday as first day of week (00..53)\n"
+#~ " %%V week number of year with Monday as first day of week (01..53)\n"
+#~ " %%w day of week (0..6); 0 represents Sunday\n"
+#~ " %%W week number of year with Monday as first day of week (00..53)\n"
+#~ " %%x locale's date representation (mm/dd/yy)\n"
+#~ " %%X locale's time representation (%%H:%%M:%%S)\n"
+#~ " %%y last two digits of year (00..99)\n"
+#~ " %%Y year (1970...)\n"
+#~ " %%z RFC-822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %%Z time zone (e.g., EDT), or nothing if no time zone is "
+#~ "determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr ""
+#~ "\n"
+#~ " Výstup je urèen øetìzcem FORMÁT. Pro druhou formu zápisu mohou být "
+#~ "pou¾ity\n"
+#~ "pouze pøepínaèe urèující UTC. Interpretované sekvence jsou:\n"
+#~ "\n"
+#~ " %%%% znak %%\n"
+#~ " %%a zkrácené jméno dne podle lokalizace (Sun..Sat)\n"
+#~ " %%A celé jméno dne podle lokalizace (Sunday..Saturday)\n"
+#~ " %%b zkrácené jméno mìsíce podle lokalizace (Jan..Dec)\n"
+#~ " %%B celé jméno mìsíce podle lokalizace (January..December)\n"
+#~ " %%c datum a èas podle lokalizace (Sat Nov 04 12:02:33 EST 1989)\n"
+#~ " %%d èíslo dne v mìsíci (01..31)\n"
+#~ " %%D datum (mm/dd/yy)\n"
+#~ " %%e den v mìsíci, zarovnaný mezerami ( 1..31)\n"
+#~ " %%h jako %%b\n"
+#~ " %%H hodina (00..23)\n"
+#~ " %%I hodina (01..12)\n"
+#~ " %%j èíslo dne v roce (001..366)\n"
+#~ " %%k hodina ( 0..23)\n"
+#~ " %%l hodina ( 1..12)\n"
+#~ " %%m mìsíc (01..12)\n"
+#~ " %%M minuta (00..59)\n"
+#~ " %%n nový øádek\n"
+#~ " %%p øetìzec odpovídající anglickým AM a PM podle lokalizace\n"
+#~ " %%r èas, 12-hodinový formát (hh:mm:ss [AP]M)\n"
+#~ " %%s poèet sekund od `00:00:00 1.1.1970 UTC' (roz¹íøení GNU)\n"
+#~ " %%S sekundy (00..61)\n"
+#~ " %%t horizontální tabulátor\n"
+#~ " %%T èas, 24-hodinový formát (hh:mm:ss)\n"
+#~ " %%U èíslo týdne v daném roce, nedìle jako první den v týdnu (00..53)\n"
+#~ " %%V èíslo týdne v daném roce, pondìlí jako první den v týdnu "
+#~ "(01..53)\n"
+#~ " %%w den v týdnu (0..6); 0 znamená nedìle\n"
+#~ " %%W èíslo týdne v daném roce, pondìlí jako první den v týdnu "
+#~ "(00..53)\n"
+#~ " %%x reprezentace data (mm/dd/yy) podle lokalizace\n"
+#~ " %%X reprezentace èasu (%%H:%%M:%%S) podle lokalizace\n"
+#~ " %%y poslední dvì èíslice letopoètu (00..99)\n"
+#~ " %%Y rok (1970...)\n"
+#~ " %%z èasové pásmo podle RFC-822 (-0500) (nestandardní roz¹íøení)\n"
+#~ " %%Z èasové pásmo (pø.: EDT), nebo prázdný øetìzec, pokud není mo¾no "
+#~ "èasové\n"
+#~ " pásmo urèit\n"
+#~ "\n"
+#~ " Implicitnì jsou numerické polo¾ky data zarovnány nulami. Formát data "
+#~ "podle\n"
+#~ "GNU umo¾òuje následující modifikátory mezi `%%' a specifikací "
+#~ "numerického\n"
+#~ "výstupu.\n"
+#~ "\n"
+#~ " `-' (spojovník) nezarovnání polo¾ky\n"
+#~ " `_' (podtr¾ítko) zarovnání polo¾ky mezerami\n"
+
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ " --help display this help and exit (should be alone)\n"
+#~ " --version output version information and exit (should be alone)\n"
+#~ "\n"
+#~ "Without -E, the following sequences are recognized and interpolated:\n"
+#~ "\n"
+#~ " \\NNN the character whose ASCII code is NNN (octal)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a alert (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c suppress trailing newline\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r carriage return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ msgstr ""
+#~ "Vypí¹e ØETÌZEC na standardní výstup.\n"
+#~ "\n"
+#~ " -n bez ukonèovacího znaku nového øádku\n"
+#~ " -e povolí interpretaci escape sekvencí zaèínajících znakem "
+#~ "\\\n"
+#~ " a vysaných ní¾e\n"
+#~ " -E zaká¾e interpretaci nìkterých sekvencí v ØETÌZCI\n"
+#~ " --help vypí¹e tuto nápovìdu (pouze jako jedinný argument)\n"
+#~ " --version vypí¹e oznaèení verze (pouze jako jedinný argument)\n"
+#~ "\n"
+#~ "Pokud není -E zadáno, jsou následující sekvence interpretovány "
+#~ "následovnì:\n"
+#~ "\n"
+#~ " \\NNN znak s ascii kódem NNN (osmièkovì)\n"
+#~ " \\\\ zpìtné lomítko (backslash)\n"
+#~ " \\a zvonek (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c bez ukonèení znakem pro nový øádek\n"
+#~ " \\f znak vysunutí formuláøe (form feed)\n"
+#~ " \\n znak nového øádku\n"
+#~ " \\r návrat vozíku (carriage return)\n"
+#~ " \\t horizontální tabelátor\n"
+#~ " \\v vertikální tabelátor\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print the value of EXPRESSION to standard output. A blank line below\n"
+#~ "separates increasing precedence groups. EXPRESSION may be:\n"
+#~ "\n"
+#~ " ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+#~ "\n"
+#~ " ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+#~ "\n"
+#~ " ARG1 < ARG2 ARG1 is less than ARG2\n"
+#~ " ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+#~ " ARG1 = ARG2 ARG1 is equal to ARG2\n"
+#~ " ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+#~ " ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+#~ " ARG1 > ARG2 ARG1 is greater than ARG2\n"
+#~ "\n"
+#~ " ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+#~ " ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+#~ "\n"
+#~ " ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+#~ " ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+#~ " ARG1 %% ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+#~ "\n"
+#~ " STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+#~ "\n"
+#~ " match STRING REGEXP same as STRING : REGEXP\n"
+#~ " substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+#~ " index STRING CHARS index in STRING where any CHARS is found, or "
+#~ "0\n"
+#~ " length STRING length of STRING\n"
+#~ " + TOKEN interpret TOKEN as a string, even if it is "
+#~ "a\n"
+#~ " keyword like `match' or an operator like "
+#~ "`/'\n"
+#~ "\n"
+#~ " ( EXPRESSION ) value of EXPRESSION\n"
+#~ msgstr ""
+#~ " Vypí¹e hodnotu VÝRAZu na standardní výstup. Prázdný øádek, v "
+#~ "následujícím\n"
+#~ "výpise, oddìluje skupiny operátorù s rùznou prioritou, priorita "
+#~ "operátorù\n"
+#~ "je rostoucí. VÝRAZ mù¾e být:\n"
+#~ "\n"
+#~ " ARG1 | ARG2 ARG1 pokud není prázdný nebo 0, jinak ARG2\n"
+#~ "\n"
+#~ " ARG1 & ARG2 ARG1 pokud ¾ádný argument není prázdný (\"\") nebo 0, "
+#~ "jinak 0\n"
+#~ "\n"
+#~ " ARG1 < ARG2 ARG1 je men¹í ne¾ ARG2\n"
+#~ " ARG1 <= ARG2 ARG1 je men¹í nebo roven ARG2\n"
+#~ " ARG1 = ARG2 ARG1 je roven ARG2\n"
+#~ " ARG1 != ARG2 ARG1 není roven ARG2\n"
+#~ " ARG1 >= ARG2 ARG1 je vìt¹í nebo roven ARG2\n"
+#~ " ARG1 > ARG2 ARG1 je vìt¹í ne¾ ARG2\n"
+#~ "\n"
+#~ " ARG1 + ARG2 aritmetický souèet ARG1 a ARG2\n"
+#~ " ARG1 - ARG2 aritmetický rozdíl ARG1 a ARG2\n"
+#~ "\n"
+#~ " ARG1 * ARG2 aritmetický souèin ARG1 a ARG2\n"
+#~ " ARG1 / ARG2 aritmetický podíl ARG1 / ARG2\n"
+#~ " ARG1 %% ARG2 zbytek po aritmetickém dìlení ARG1 / ARG2\n"
+#~ "\n"
+#~ " ØETÌZEC : REGVÝR vyhodnocení REGVÝR v ØETÌZCI\n"
+#~ "\n"
+#~ " match ØETÌZEC REGVÝR stejné jako ØETÌZEC : REGVÝR\n"
+#~ " substr ØETÌZEC POZICE DÉLKA podøetìzec ØETÌZCE, POZICE je poèítána od "
+#~ "1\n"
+#~ " index ØETÌZEC ZNAKY pozice prvního výskytu libovolného znaku ze "
+#~ "ZNAKÙ\n"
+#~ " v ØETÌZCI, v pøípadì neúspìchu 0\n"
+#~ " length ØETÌZEC délka ØETÌZCE\n"
+#~ "\n"
+#~ " ( VÝRAZ ) hodnota VÝRAZu\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " -l produce long format output for the specified USERs\n"
+#~ " -b omit the user's home directory and shell in long "
+#~ "format\n"
+#~ " -h omit the user's project file in long format\n"
+#~ " -p omit the user's plan file in long format\n"
+#~ " -s do short format output, this is the default\n"
+#~ " -f omit the line of column headings in short format\n"
+#~ " -w omit the user's full name in short format\n"
+#~ " -i omit the user's full name and remote host in short "
+#~ "format\n"
+#~ " -q omit the user's full name, remote host and idle time\n"
+#~ " in short format\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "A lightweight `finger' program; print user information.\n"
+#~ "The utmp file will be %s.\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -l dlouhý výstupní formát\n"
+#~ " -b nevypisování domovského adresáøe a shellu v dlouhém "
+#~ "formátu\n"
+#~ " -h nevypisování projektu v dlouhém formátu\n"
+#~ " -p nevypisování plánu v dlouhém formátu\n"
+#~ " -s krátký výstupní formát (implicitní)\n"
+#~ " -f nevypisuje hlavièky sloupcù v krátkém formátu\n"
+#~ " -w nevypisuje celé jméno v krátkém formátu\n"
+#~ " -i nevypisuje celé jméno a odkud v krátkém formátu\n"
+#~ " -q nevypisuje celé jméno, odkud a prostoj v krátkém "
+#~ "formátu\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ "Odlehèený program `finger'; vypisuje informace o u¾ivateli.\n"
+#~ "Utmp soubor bude %s.\n"
+
+#~ msgid ""
+#~ "Print ARGUMENT(s) according to FORMAT.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+#~ "\n"
+#~ " \\\" double quote\n"
+#~ " \\0NNN character with octal value NNN (0 to 3 digits)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a alert (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c produce no further output\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r carriage return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ " \\xNNN byte with hexadecimal value NNN (1 to 3 digits)\n"
+#~ "\n"
+#~ " \\uNNNN character with hexadecimal value NNNN (4 digits)\n"
+#~ " \\UNNNNNNNN character with hexadecimal value NNNNNNNN (8 digits)\n"
+#~ " %%%% a single %%\n"
+#~ " %%b ARGUMENT as a string with `\\' escapes interpreted\n"
+#~ "\n"
+#~ "and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+#~ "ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+#~ msgstr ""
+#~ "Vypí¹e ARGUMENT(y) urèené FORMÁTem.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ "FORMÁT urèuje výstup (jako v jazyce C). Interpretované sekvence jsou:\n"
+#~ "\n"
+#~ " \\\" uvozovka\n"
+#~ " \\0NNN znak s osmièkovou hodnotou NNN (1 a¾ 3 èíslice)\n"
+#~ " \\\\ zpìtné lomítko (backslash)\n"
+#~ " \\a zvonek (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c ¾ádný dal¹í výstup\n"
+#~ " \\f posun formuláøe (form feed)\n"
+#~ " \\n nový øádek (new line)\n"
+#~ " \\r návrat vozíku (carriage return)\n"
+#~ " \\t horizontální tabelátor (horizontal tab)\n"
+#~ " \\v vertikální tabelátor (vertical tab)\n"
+#~ " \\xNNN znak s ¹estnáctkovou hodnotou NNN (1 a¾ 3 èíslice)\n"
+#~ "\n"
+#~ " \\uNNNN znak s ¹estnáctkovou hodnotou NNNN (4 èíslice)\n"
+#~ " \\UNNNNNNNN znak s ¹estnáctkovou hodnotou NNNNNNNN (8 èíslic)\n"
+#~ " %%%% jeden znak 'procenta' (%%)\n"
+#~ " %%b ARGUMENT jako øetìzec, kde jsou interpretovány escape sekvence "
+#~ "(`\\')\n"
+#~ "\n"
+#~ "a v¹echny specifikace formátu z jazyka C konèící jedním znakem z "
+#~ "diouxXfeEgGcs,\n"
+#~ "s ARGUMENTy konvertovanými nejprve na odpovídající typ. ©íøky promìnných "
+#~ "jsou\n"
+#~ "respektovány.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print the full filename of the current working directory.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Special characters:\n"
+#~ " * dsusp CHAR CHAR will send a terminal stop signal once input "
+#~ "flushed\n"
+#~ " eof CHAR CHAR will send an end of file (terminate the input)\n"
+#~ " eol CHAR CHAR will end the line\n"
+#~ " * eol2 CHAR alternate CHAR for ending the line\n"
+#~ " erase CHAR CHAR will erase the last character typed\n"
+#~ " intr CHAR CHAR will send an interrupt signal\n"
+#~ " kill CHAR CHAR will erase the current line\n"
+#~ " * lnext CHAR CHAR will enter the next character quoted\n"
+#~ " quit CHAR CHAR will send a quit signal\n"
+#~ " * rprnt CHAR CHAR will redraw the current line\n"
+#~ " start CHAR CHAR will restart the output after stopping it\n"
+#~ " stop CHAR CHAR will stop the output\n"
+#~ " susp CHAR CHAR will send a terminal stop signal\n"
+#~ " * swtch CHAR CHAR will switch to a different shell layer\n"
+#~ " * werase CHAR CHAR will erase the last word typed\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Speciální znaky:\n"
+#~ "* dsusp ZNAK ZNAK, který posílá terminálu signál stop pøi vyprázdnìní\n"
+#~ " standardního vstupu\n"
+#~ " eof ZNAK ZNAK, který posílá 'konec souboru' (pøeru¹ení vstupu)\n"
+#~ " eol ZNAK ZNAK, který ukonèuje øádek\n"
+#~ "* eol2 ZNAK alternativní ZNAK pro konec øádku\n"
+#~ " erase ZNAK ZNAK, který ma¾e poslední zapsaný znak\n"
+#~ " intr ZNAK ZNAK, který zasílá signál interrupt\n"
+#~ " kill ZNAK ZNAK, který ma¾e aktuální øádek\n"
+#~ "* lnext ZNAK ZNAK, který znemo¾òuje interpretaci dal¹ího znaku "
+#~ "(quote)\n"
+#~ " quit ZNAK ZNAK, který posílá signál quit\n"
+#~ "* rprnt ZNAK ZNAK, který pøekresluje aktuální øádek\n"
+#~ " start ZNAK ZNAK, který znovu spu¹tí výstup, po jeho pozastavení\n"
+#~ " stop ZNAK ZNAK, který pozastavuje výstup\n"
+#~ " susp ZNAK ZNAK, který posílá signál 'terminal stop'\n"
+#~ "* swtch ZNAK ZNAK, který pøepíná na jinou vrstvu shellu\n"
+#~ "* werase ZNAK ZNAK, který ma¾e poslední znak\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Special settings:\n"
+#~ " N set the input and output speeds to N bauds\n"
+#~ " * cols N tell the kernel that the terminal has N columns\n"
+#~ " * columns N same as cols N\n"
+#~ " ispeed N set the input speed to N\n"
+#~ " * line N use line discipline N\n"
+#~ " min N with -icanon, set N characters minimum for a completed "
+#~ "read\n"
+#~ " ospeed N set the output speed to N\n"
+#~ " * rows N tell the kernel that the terminal has N rows\n"
+#~ " * size print the number of rows and columns according to the "
+#~ "kernel\n"
+#~ " speed print the terminal speed\n"
+#~ " time N with -icanon, set read timeout of N tenths of a second\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Speciální nastavení:\n"
+#~ " N nastaví vstupní a výstupní rychlost na N baud\n"
+#~ "* cols N po¹le jádru OS, ¾e terminál má N sloupcù\n"
+#~ "* columns N stejné jako cols N\n"
+#~ " ispeed N nastaví vstupní rychlost na N\n"
+#~ "* line N pou¾ije 'line discipline' N\n"
+#~ " min N spolu s -icanon nastaví N znakù, jako minimum pro "
+#~ "ukonèení\n"
+#~ " ètení\n"
+#~ " ospeed N nastaví rychlost výstupu na N\n"
+#~ "* rows N po¹le jádru OS, ¾e terminál má N øádkù\n"
+#~ "* size vypí¹e poèet øádkù a sloupcù podle jádra OS\n"
+#~ " speed vypí¹e rychlost terminálu\n"
+#~ " time N spolu -icanon, nastaví èasový limit pro ètení na N "
+#~ "desetin\n"
+#~ " sekundy\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Input settings:\n"
+#~ " [-]brkint breaks cause an interrupt signal\n"
+#~ " [-]icrnl translate carriage return to newline\n"
+#~ " [-]ignbrk ignore break characters\n"
+#~ " [-]igncr ignore carriage return\n"
+#~ " [-]ignpar ignore characters with parity errors\n"
+#~ " * [-]imaxbel beep and do not flush a full input buffer on a "
+#~ "character\n"
+#~ " [-]inlcr translate newline to carriage return\n"
+#~ " [-]inpck enable input parity checking\n"
+#~ " [-]istrip clear high (8th) bit of input characters\n"
+#~ " * [-]iuclc translate uppercase characters to lowercase\n"
+#~ " * [-]ixany let any character restart output, not only start "
+#~ "character\n"
+#~ " [-]ixoff enable sending of start/stop characters\n"
+#~ " [-]ixon enable XON/XOFF flow control\n"
+#~ " [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+#~ " [-]tandem same as [-]ixoff\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Nastavení vstupu:\n"
+#~ " [-]brkint znak break zpùsobí signál interrupt\n"
+#~ " [-]icrnl pøekládá CR (carriage return) na LF (newline)\n"
+#~ " [-]ignbrk ignoruje znak break\n"
+#~ " [-]igncr ignoruje znak CR (carriage return)\n"
+#~ " [-]ignpar ignoruje znaky s chybou parity\n"
+#~ "* [-]imaxbel zvukový signál a nevyprázdnìní plného vstupního bufferu "
+#~ "pøi\n"
+#~ " novém pøíchozím znaku\n"
+#~ " [-]inlcr pøekládá LF (newline) na CR (carriage return)\n"
+#~ " [-]inpck zaène kontrolovat paritu na vstupu\n"
+#~ " [-]istrip nuluje 8-mý bit vstupních znakù\n"
+#~ "* [-]iuclc pøekládá velká písmena na malá\n"
+#~ "* [-]ixany ka¾dý znak restartuje výstup, nikoli jen znak 'start'\n"
+#~ " [-]ixoff povolí posílání znakù start/stop\n"
+#~ " [-]ixon povolí øízení toku dat pomocí XON/XOFF\n"
+#~ " [-]parmrk oznaèí chyby parity (sekvencí 255-0-znak)\n"
+#~ " [-]tandem jako [-]ixoff\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Local settings:\n"
+#~ " [-]crterase echo erase characters as backspace-space-backspace\n"
+#~ " * crtkill kill all line by obeying the echoprt and echoe settings\n"
+#~ " * -crtkill kill all line by obeying the echoctl and echok settings\n"
+#~ " * [-]ctlecho echo control characters in hat notation (`^c')\n"
+#~ " [-]echo echo input characters\n"
+#~ " * [-]echoctl same as [-]ctlecho\n"
+#~ " [-]echoe same as [-]crterase\n"
+#~ " [-]echok echo a newline after a kill character\n"
+#~ " * [-]echoke same as [-]crtkill\n"
+#~ " [-]echonl echo newline even if not echoing other characters\n"
+#~ " * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+#~ " [-]icanon enable erase, kill, werase, and rprnt special "
+#~ "characters\n"
+#~ " [-]iexten enable non-POSIX special characters\n"
+#~ " [-]isig enable interrupt, quit, and suspend special characters\n"
+#~ " [-]noflsh disable flushing after interrupt and quit special "
+#~ "characters\n"
+#~ " * [-]prterase same as [-]echoprt\n"
+#~ " * [-]tostop stop background jobs that try to write to the terminal\n"
+#~ " * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Lokální nastavení:\n"
+#~ " [-]crterase vypisuje mazací znak (erase) jako backspace-mezera-"
+#~ "backspace\n"
+#~ "* crtkill zru¹í celý øádek podle nastavení echoprt a echoe\n"
+#~ "* -crtkill zru¹í celý øádek podle nastavení echoctl a echok\n"
+#~ "* [-]ctlecho øídící znaky pøepisuje v notaci se støí¹kou (`^c')\n"
+#~ " [-]echo opisuje vstupní znaky\n"
+#~ "* [-]echoctl jako [-]ctlecho\n"
+#~ " [-]echoe jako [-]crterase\n"
+#~ " [-]echok vypí¹e znak CR (newline) po znaku 'kill'\n"
+#~ "* [-]echoke jako [-]crtkill\n"
+#~ " [-]echonl pokud není vypsán jiný znak, vypí¹e LF (newline)\n"
+#~ "* [-]echoprt vypisuje vymazané znaky pozpátku, mezi `\\' a '/'\n"
+#~ " [-]icanon povolí speciální znaky erase, kill a werase\n"
+#~ " [-]iexten povolí speciální znaky, které neodpovídají normì POSIX.\n"
+#~ " [-]isig povolí speciální znaky interrupt, quit a suspend\n"
+#~ " [-]noflsh zaká¾e vyprázdnìní bufferù po speciálních znacích "
+#~ "interrupt \n"
+#~ " a quit\n"
+#~ "* [-]prterase jako [-]echoprt\n"
+#~ "* [-]tostop pozastaví procesy na pozadí, které se pokou¹ejí o zápis\n"
+#~ " na terminál\n"
+#~ "* [-]xcase spolu s icanon, pou¾ije escape sekvenci (`\\') pro velká "
+#~ "písmena\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Combination settings:\n"
+#~ " * [-]LCASE same as [-]lcase\n"
+#~ " cbreak same as -icanon\n"
+#~ " -cbreak same as icanon\n"
+#~ " cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+#~ " icanon, eof and eol characters to their default values\n"
+#~ " -cooked same as raw\n"
+#~ " crt same as echoe echoctl echoke\n"
+#~ " dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+#~ " kill ^u\n"
+#~ " * [-]decctlq same as [-]ixany\n"
+#~ " ek erase and kill characters to their default values\n"
+#~ " evenp same as parenb -parodd cs7\n"
+#~ " -evenp same as -parenb cs8\n"
+#~ " * [-]lcase same as xcase iuclc olcuc\n"
+#~ " litout same as -parenb -istrip -opost cs8\n"
+#~ " -litout same as parenb istrip opost cs7\n"
+#~ " nl same as -icrnl -onlcr\n"
+#~ " -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+#~ " oddp same as parenb parodd cs7\n"
+#~ " -oddp same as -parenb cs8\n"
+#~ " [-]parity same as [-]evenp\n"
+#~ " pass8 same as -parenb -istrip cs8\n"
+#~ " -pass8 same as parenb istrip cs7\n"
+#~ " raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+#~ " -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+#~ " -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+#~ " -raw same as cooked\n"
+#~ " sane same as cread -ignbrk brkint -inlcr -igncr icrnl\n"
+#~ " -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+#~ " -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+#~ " isig icanon iexten echo echoe echok -echonl -noflsh\n"
+#~ " -xcase -tostop -echoprt echoctl echoke, all special\n"
+#~ " characters to their default values.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Nastavení kombinací:\n"
+#~ "* [-]LCASE jako [-]lcase\n"
+#~ " cbreak jako -icanon\n"
+#~ " -cbreak jako icanon\n"
+#~ " cooked jako brkint ignpar istrip icrnl ixon opost isig\n"
+#~ " znaky icanon, eof a eol jsou nastaveny na jejich "
+#~ "implicitní \n"
+#~ " hodnoty\n"
+#~ " -cooked jako raw\n"
+#~ " crt jako echoe echoctl echoke\n"
+#~ " dec jako echoe echoctl echoke -ixany intr ^c erase 0177\n"
+#~ " kill ^u\n"
+#~ "* [-]decctlq jako [-]ixany\n"
+#~ " ek znaky erase a kill na jejich implicitní hodnoty\n"
+#~ " evenp jako parenb -parodd cs7\n"
+#~ " -evenp jako -parenb cs8\n"
+#~ "* [-]lcase jako xcase iuclc olcuc\n"
+#~ " litout jako -parenb -istrip -opost cs8\n"
+#~ " -litout jako parenb istrip opost cs7\n"
+#~ " nl jako -icrnl -onlcr\n"
+#~ " -nl jako icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+#~ " oddp jako parenb parodd cs7\n"
+#~ " -oddp jako -parenb cs8\n"
+#~ " [-]parity jako [-]evenp\n"
+#~ " pass8 jako -parenb -istrip cs8\n"
+#~ " -pass8 jako parenb istrip cs7\n"
+#~ " raw jako -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+#~ " -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+#~ " -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+#~ " -raw jako cooked\n"
+#~ " sane jako cread -ignbrk brkint -inlcr -igncr icrnl\n"
+#~ " -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+#~ " -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+#~ " isig icanon iexten echo echoe echok -echonl -noflsh\n"
+#~ " -xcase -tostop -echoprt echoctl echoke, v¹echny "
+#~ "speciální\n"
+#~ " znaky na jejich implicitní hodnoty.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode "
+#~ "numbers\n"
+#~ " FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+#~ " FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+#~ "\n"
+#~ " -b FILE FILE exists and is block special\n"
+#~ " -c FILE FILE exists and is character special\n"
+#~ " -d FILE FILE exists and is a directory\n"
+#~ " -e FILE FILE exists\n"
+#~ " -f FILE FILE exists and is a regular file\n"
+#~ " -g FILE FILE exists and is set-group-ID\n"
+#~ " -h FILE FILE exists and is a symbolic link (same as -L)\n"
+#~ " -G FILE FILE exists and is owned by the effective group ID\n"
+#~ " -k FILE FILE exists and has its sticky bit set\n"
+#~ " -L FILE FILE exists and is a symbolic link (same as -h)\n"
+#~ " -O FILE FILE exists and is owned by the effective user ID\n"
+#~ " -p FILE FILE exists and is a named pipe\n"
+#~ " -r FILE FILE exists and is readable\n"
+#~ " -s FILE FILE exists and has a size greater than zero\n"
+#~ " -S FILE FILE exists and is a socket\n"
+#~ " -t [FD] file descriptor FD (stdout by default) is opened on a "
+#~ "terminal\n"
+#~ " -u FILE FILE exists and its set-user-ID bit is set\n"
+#~ " -w FILE FILE exists and is writable\n"
+#~ " -x FILE FILE exists and is executable\n"
+#~ msgstr ""
+#~ "\n"
+#~ " SOUBOR1 -ef SOUBOR2 SOUBOR1 a SOUBOR2 jsou na stejném zaøízení a "
+#~ "mají\n"
+#~ " stejný i-uzel\n"
+#~ " SOUBOR1 -nt SOUBOR2 SOUBOR1 je novìj¹í (datum modifikace) ne¾ "
+#~ "SOUBOR2\n"
+#~ " SOUBOR1 -ot SOUBOR2 SOUBOR1 je star¹í ne¾ SOUBOR2\n"
+#~ "\n"
+#~ " -b SOUBOR SOUBOR existuje a je speciální blokový\n"
+#~ " -c SOUBOR SOUBOR existuje a je speciální znakový\n"
+#~ " -d SOUBOR SOUBOR existuje a je to adresáø\n"
+#~ " -e SOUBOR SOUBOR existuje\n"
+#~ " -f SOUBOR SOUBOR existuje a je to obyèejný soubor (ne adresáø)\n"
+#~ " -g SOUBOR SOUBOR existuje a má nastaven sgid bit\n"
+#~ " -G SOUBOR SOUBOR existuje a je vlastnìn aktuálním efektivním GID\n"
+#~ " -k SOUBOR SOUBOR existuje a má nastaven 'sticky' bit\n"
+#~ " -L SOUBOR SOUBOR existuje a je symbolický odkaz\n"
+#~ " -O SOUBOR SOUBOR existuje a je vlastnìn aktuálním efektivním UID\n"
+#~ " -p SOUBOR SOUBOR existuje a je pojmenovaná roura\n"
+#~ " -r SOUBOR SOUBOR existuje a je èitelný\n"
+#~ " -s SOUBOR SOUBOR existuje a má nenulovou délku\n"
+#~ " -S SOUBOR SOUBOR existuje a je soket\n"
+#~ " -t [FD] SOUBOR s deskriptorem FD (implicitnì stdout) je otevøen\n"
+#~ " na terminálu\n"
+#~ " -u SOUBOR SOUBOR existuje a má nastaven suid bit\n"
+#~ " -w SOUBOR SOUBOR existuje a lze do nìj zapisovat\n"
+#~ " -x SOUBOR SOUBOR existuje a je spustitelný\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " -a, --all same as -b -d --login -p -r -t -T -u\n"
+#~ " -b, --boot time of last system boot\n"
+#~ " -d, --dead print dead processes\n"
+#~ " -H, --heading print line of column headings\n"
+#~ " -i, --idle add idle time as HOURS:MINUTES, . or old\n"
+#~ " (deprecated, use -u)\n"
+#~ " --login print system login processes\n"
+#~ " (equivalent to SUS -l)\n"
+#~ " -l, --lookup attempt to canonicalize hostnames via DNS\n"
+#~ " (-l is deprecated, use --lookup)\n"
+#~ " -m only hostname and user associated with stdin\n"
+#~ " -p, --process print active processes spawned by init\n"
+#~ " -q, --count all login names and number of users logged on\n"
+#~ " -r, --runlevel print current runlevel\n"
+#~ " -s, --short print only name, line, and time (default)\n"
+#~ " -t, --time print last system clock change\n"
+#~ " -T, -w, --mesg add user's message status as +, - or ?\n"
+#~ " -u, --users lists users logged in\n"
+#~ " --message same as -T\n"
+#~ " --writable same as -T\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "If FILE is not specified, use %s. %s as FILE is common.\n"
+#~ "If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -H, --heading vypí¹e názvy jednotlivých sloupcù\n"
+#~ " -i, -u, --idle pøidá dobu neèinnosti HODINY:MINUTY, . nebo starý\n"
+#~ " -l, --lookup zpùsobí vypisování jmen získaných z DNS\n"
+#~ " -m pouze poèítaèe a u¾ivatele pøipojené ke standardnímu "
+#~ "vstupu\n"
+#~ " -q, --count v¹echna pøihla¹ovací jména a poèet pøihlá¹ených "
+#~ "u¾ivatelù\n"
+#~ " -s (ignorováno)\n"
+#~ " -T, -w, --mesg pøipojí stav mo¾nosti posílat zprávy (+, - nebo ?)\n"
+#~ " --message jako -T\n"
+#~ " --writable jako -T\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ " Pokud SOUBOR není zadán, pou¾ije se %s. Pokud zadáte %s jako SOUBOR, "
+#~ "budou\n"
+#~ "vypisovány informace o u¾ivatelích, kteøí se pøihlásili v poslední dobì. "
+#~ "Pokud\n"
+#~ "jsou zadány ARG1 a ARG2, implicitním pøepínaèem je -m. Jako ARG1 a ARG2\n"
+#~ "se obvykle zadává 'am i' nebo 'mom likes', mù¾e být ale zadáno cokoliv.\n"
+#~ "Podstatný je poèet argumentù.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Repeatedly output a line with all specified STRING(s), or `y'.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#~ msgid "cannot get processor type"
+#~ msgstr "typ procesoru nelze zjistit"
+
+#~ msgid "USER"
+#~ msgstr "U®IVATEL"
+
+#~ msgid "MESG "
+#~ msgstr "ZPRÁV "
+
+#~ msgid "LOGIN-TIME "
+#~ msgstr "ÈAS-PØIHLÁ©. "
+
+#~ msgid "FROM\n"
+#~ msgstr "Z\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "(obsolete) If -VALUE is used as first OPTION, same as -c VALUE when one "
+#~ "of\n"
+#~ "multipliers bkm follows concatenated, else same as -n VALUE.\n"
+#~ msgstr ""
+#~ " Vypí¹e prvních 10 øádkù ka¾dého souboru na standardní výstup. S více "
+#~ "jak\n"
+#~ "jedním souborem, bude pøed vypsáním ka¾dého uvedena hlavièka obsahující "
+#~ "jméno\n"
+#~ "souboru. Jestli¾e SOUBOR nebude zadán nebo bude -, bude èten standardní "
+#~ "vstup.\n"
+#~ "\n"
+#~ " -c, --bytes=VELIKOST vypí¹e prvních VELIKOST bajtù\n"
+#~ " -n, --lines=POÈET vypí¹e prvních POÈET øádkù místo prvních 10\n"
+#~ " -q, --quiet, --silent nikdy nevypisuje hlavièky s názvy souborù\n"
+#~ " -v, --verbose vypisuje hlavièky s názvy souborù v¾dy\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ " VELIKOST mù¾e mít násobící pøíponu: b pro 512, k pro 1K, m pro 1M. "
+#~ "Jestli¾e\n"
+#~ "první pøepínaè bude -HODNOTA a bude-li pou¾ita násobící pøípona, pak bude "
+#~ "brán\n"
+#~ "jako -c HODNOTA. Jinak bude pøepínaè brán jako -n HODNOTA.\n"
+
+#, fuzzy
+#~ msgid "warning: `od -w' is obsolete; use `od --width'"
+#~ msgstr "varování: chybná ¹íøka %lu; u¾ívám %d místo ní"
+
+#, fuzzy
+#~ msgid "warning: `pr -S' is obsolete; use `pr --sep-string'"
+#~ msgstr "varování: chybná ¹íøka %lu; u¾ívám %d místo ní"
+
+#, fuzzy
+#~ msgid ""
+#~ " +POS1 [-POS2] start a key at POS1, end it before POS2 "
+#~ "(origin 0)\n"
+#~ " Warning: this option is obsolete\n"
+#~ msgstr ""
+#~ " Porovnává soubory LEVÝ_SOUBOR a PRAVÝ_SOUBOR, jejich¾ øádky jsou "
+#~ "uspoøádány\n"
+#~ "podle nìjakého klíèe, øádek po øádku. Výstupem jsou tøi sloupce, øádky "
+#~ "obsa¾ené\n"
+#~ "pouze v levém souboru, øádky obsa¾ené pouze v pravém souboru, øádky "
+#~ "spoleèné\n"
+#~ "obìma souborùm.\n"
+#~ "\n"
+#~ " -1 neukazuje øádky obsa¾ené pouze v levém souboru\n"
+#~ " -2 neukazuje øádky obsa¾ené pouze v pravém souboru\n"
+#~ " -3 neukazuje øádky spoleèné obìma souborùm\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid "warning: `sort -y' is obsolete; omit `-y'"
+#~ msgstr "varování: chybná ¹íøka %lu; u¾ívám %d místo ní"
+
+#, fuzzy
+#~ msgid "warning: `tail %s' is obsolete; use -n or -c instead"
+#~ msgstr "varování: chybná ¹íøka %lu; u¾ívám %d místo ní"
+
+#, fuzzy
+#~ msgid "warning: `uniq %s' is obsolete; use `uniq -s %s' instead"
+#~ msgstr "varování: chybná ¹íøka %lu; u¾ívám %d místo ní"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolní souèet a délku v bajtech ka¾dého SOUBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Convert tabs in each FILE to spaces, writing to standard output.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -i, --initial do not convert TABs after non whitespace\n"
+#~ " -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+#~ msgstr ""
+#~ " Konvertuje tabelátory v ka¾dém SOUBORu na mezery, výstup jde na "
+#~ "standardní\n"
+#~ "výstup. Nebude-li SOUBOR zadán nebo bude-li -, bude èten standardní "
+#~ "vstup.\n"
+#~ "\n"
+#~ " -i, --initial konvertuje pouze tabelátory pøed prvním znakem na "
+#~ "øádku\n"
+#~ " -t, --tabs=POÈET tabelátor pova¾uje za POÈET (8) mezer\n"
+#~ " -t, --tabs=SEZNAM pou¾ije èárkami oddìlený seznam pozicí tabelátorù\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ "Místo -t POÈET nebo -t SEZNAM mù¾ete pou¾ít -POÈET nebo -SEZNAM.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Instead of -t NUMBER or -t LIST, -NUMBER or -LIST may be used.\n"
+#~ msgstr ""
+#~ " Konvertuje tabelátory v ka¾dém SOUBORu na mezery, výstup jde na "
+#~ "standardní\n"
+#~ "výstup. Nebude-li SOUBOR zadán nebo bude-li -, bude èten standardní "
+#~ "vstup.\n"
+#~ "\n"
+#~ " -i, --initial konvertuje pouze tabelátory pøed prvním znakem na "
+#~ "øádku\n"
+#~ " -t, --tabs=POÈET tabelátor pova¾uje za POÈET (8) mezer\n"
+#~ " -t, --tabs=SEZNAM pou¾ije èárkami oddìlený seznam pozicí tabelátorù\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ "Místo -t POÈET nebo -t SEZNAM mù¾ete pou¾ít -POÈET nebo -SEZNAM.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Wrap input lines in each FILE (standard input by default), writing to\n"
+#~ "standard output.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --bytes count bytes rather than columns\n"
+#~ " -s, --spaces break at spaces\n"
+#~ " -w, --width=WIDTH use WIDTH columns instead of 80\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ " Zalamuje vstupní øádky ka¾dého SOUBORu (implicitnì standardního "
+#~ "vstupu),\n"
+#~ "zapisujíce výstup na standardní výstup.\n"
+#~ "\n"
+#~ " -b, --bytes pro zalamování poèítá bajty na øádku místo sloupcù\n"
+#~ " -s, --spaces zalamuje øádky v mezerách\n"
+#~ " -w, --width=©ÍØKA pou¾ívá ©ÍØKA sloupcù místo 80\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ "Ve sloupcích nejsou zahrnuty kontrolní znaky narozdíl od bajtù.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Write lines consisting of the sequentially corresponding lines from\n"
+#~ "each FILE, separated by TABs, to standard output.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+#~ " -s, --serial paste one file at a time instead of in "
+#~ "parallel\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ " Vypí¹e øádky skládající se z øádkù jednotlivých SOUBORù, v zadaném "
+#~ "poøadí,\n"
+#~ "a oddìlených tabelátory na standardní výstup. Jestli¾e SOUBOR nebude "
+#~ "zadán\n"
+#~ "nebo bude -, bude èten standardní vstup.\n"
+#~ "\n"
+#~ " -d, --delimiters=SEZNAM pou¾ije znakù ze SEZNAMU jako oddìlovaèù (místo "
+#~ "TAB)\n"
+#~ " -s, --serial vypí¹e soubory za sebou místo vedle sebe\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -NUMBER same as -l NUMBER\n"
+#~ " --verbose print a diagnostic to standard error just\n"
+#~ " before each output file is opened\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+#~ msgstr ""
+#~ " Rozdìlí SOUBOR do souborù PØEDPONAaa, PØEDPONAab, ... s pevnou délkou.\n"
+#~ "Implicitní PØEDPONA je `x'. Pokud SOUBOR nebude zadán nebo bude -, bude "
+#~ "èten\n"
+#~ "standardní vstup.\n"
+#~ "\n"
+#~ " -b, --bytes=VELIKOST zapí¹e VELIKOST bajtù do výstupního souboru\n"
+#~ " -C, --line-bytes=VELIKOST zapí¹e nejvý¹e VELIKOST bajtù na výstupní "
+#~ "øádek\n"
+#~ " -l, --lines=POÈET zapí¹e POÈET øádkù do výstupního souboru\n"
+#~ " -POÈET to samé jako -l POÈET\n"
+#~ " --verbose pøed otevøením ka¾dého výstupního souboru "
+#~ "vypí¹e\n"
+#~ " oznámení o tomto na standardní výstup\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ "VELIKOST mù¾e mít násobící pøíponu: b - 512, k - 1024, m - 1 Mega.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Write each FILE to standard output, last line first.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --before attach the separator before instead of after\n"
+#~ msgstr ""
+#~ " Vypí¹e ka¾dý SOUBOR na standardní výstup. Poslední øádek jako první.\n"
+#~ "Jestli¾e SOUBOR nebude zadán nebo bude -, bude èten standardní vstup.\n"
+#~ "\n"
+#~ " -b, --before pøipojí oddìlovaè øádkù pøed øádky místo za "
+#~ "nì\n"
+#~ " -r, --regex interpretuje oddìlovaè jako regulární výraz\n"
+#~ " -s, --separator=ØETÌZEC pou¾ije ØETÌZCE jako oddìlovaèe místo nového "
+#~ "øádku\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print the last %d lines of each FILE to standard output.\n"
+#~ "With more than one FILE, precede each with a header giving the file "
+#~ "name.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " --retry keep trying to open a file even if it is\n"
+#~ " inaccessible when tail starts or if it "
+#~ "becomes\n"
+#~ " inaccessible later -- useful only with -f\n"
+#~ msgstr ""
+#~ " Vypí¹e prvních 10 øádkù ka¾dého souboru na standardní výstup. S více "
+#~ "jak\n"
+#~ "jedním souborem, bude pøed vypsáním ka¾dého uvedena hlavièka obsahující "
+#~ "jméno\n"
+#~ "souboru. Jestli¾e SOUBOR nebude zadán nebo bude -, bude èten standardní "
+#~ "vstup.\n"
+#~ "\n"
+#~ " -c, --bytes=VELIKOST vypí¹e prvních VELIKOST bajtù\n"
+#~ " -n, --lines=POÈET vypí¹e prvních POÈET øádkù místo prvních 10\n"
+#~ " -q, --quiet, --silent nikdy nevypisuje hlavièky s názvy souborù\n"
+#~ " -v, --verbose vypisuje hlavièky s názvy souborù v¾dy\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ " VELIKOST mù¾e mít násobící pøíponu: b pro 512, k pro 1K, m pro 1M. "
+#~ "Jestli¾e\n"
+#~ "první pøepínaè bude -HODNOTA a bude-li pou¾ita násobící pøípona, pak bude "
+#~ "brán\n"
+#~ "jako -c HODNOTA. Jinak bude pøepínaè brán jako -n HODNOTA.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -t, --tabs=NUMBER have tabs NUMBER characters apart instead of 8\n"
+#~ " -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Instead of -t NUMBER or -t LIST, -NUMBER or -LIST may be used.\n"
+#~ msgstr ""
+#~ " V ka¾dém SOUBORu konvertuje mezery na tabelátory a výsledek vypisuje\n"
+#~ "na standardní výstup. Nebude-li SOUBOR zadán nebo bude-li -, bude èten\n"
+#~ "standardní vstup.\n"
+#~ "\n"
+#~ " -a, --all konvertuje v¹echny mezery, místo pouze úvodních\n"
+#~ " -t, --tabs=POÈET nastaví tabelátor na POÈET mezer (8)\n"
+#~ " -t, --tabs=SEZNAM pou¾ije èárkami oddìlený seznam pro pozice "
+#~ "tabelátorù\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ "Místo -t POÈET nebo -t SEZNAM je mo¾no pou¾ít -POÈET nebo -SEZNAM.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Output pieces of FILE separated by PATTERN(s) to files `xx01', "
+#~ "`xx02', ...,\n"
+#~ "and output byte counts of each piece to standard output.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --suffix-format=FORMAT use sprintf FORMAT instead of %%d\n"
+#~ " -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+#~ " -k, --keep-files do not remove output files on errors\n"
+#~ " -n, --digits=DIGITS use specified number of digits instead of 2\n"
+#~ " -s, --quiet, --silent do not print counts of output file sizes\n"
+#~ " -z, --elide-empty-files remove empty output files\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Read standard input if FILE is -. Each PATTERN may be:\n"
+#~ "\n"
+#~ " INTEGER copy up to but not including specified line number\n"
+#~ " /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+#~ " %%REGEXP%%[OFFSET] skip to, but not including a matching line\n"
+#~ " {INTEGER} repeat the previous pattern specified number of "
+#~ "times\n"
+#~ " {*} repeat the previous pattern as many times as "
+#~ "possible\n"
+#~ "\n"
+#~ "A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+#~ msgstr ""
+#~ " Rozdìluje SOUBOR v místech VZORKu(ù) do souborù `xx01', `xx02', ...\n"
+#~ "a vypisuje velikosti ka¾dého souboru na standardní výstup.\n"
+#~ "\n"
+#~ " -b, --suffix-format=FORMÁT pou¾ije sprintf FORMÁT místo %%d\n"
+#~ " -f, --prefix=PØEDPONA pou¾ije PØEDPONY místo `xx'\n"
+#~ " -k, --keep-files nema¾e výstupní soubory pøi chybách\n"
+#~ " -n, --digits=CIFER pou¾ije zadaný poèet èíslic místo 2\n"
+#~ " -s, --quiet, --silent nevypisuje velikosti výstupních souborù\n"
+#~ " -z, --elide-empty-files sma¾e prázdné výstupní soubory\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ "Jestli¾e SOUBOR bude -, bude èten standardní vstup. Ka¾dý VZOREK mù¾e "
+#~ "být:\n"
+#~ "\n"
+#~ " CELÉ_ÈÍSLO kopíruje v¹e a¾ do øádku tohoto èísla, ale bez nìj\n"
+#~ " /REGVÝR/[POSUN] kopíruje v¹e do øádku odpovídajícího regulárnímu "
+#~ "výrazu,\n"
+#~ " ale bez nìj\n"
+#~ " %%REGVÝR%%[POSUN] pøeskoèí v¹e a¾ do øádku odpovídajícího regulárnímu\n"
+#~ " výrazu, ale bez nìj\n"
+#~ " {CELÉ_ÈÍSLO} opakuje pøede¹lý vzorek tolikrát, kolikrát je zde "
+#~ "uvedeno\n"
+#~ " {*} opakuje pøede¹lý vzorek tolikrát, kolikrát je to "
+#~ "mo¾né\n"
+#~ "\n"
+#~ " POSUN musí zaèínat `+' nebo `-', následovaným celým kladným èíslem. "
+#~ "Posun\n"
+#~ "urèuje kolik znakù se je¹tì zahrne do bloku v místì vyhodnocení REGVÝR.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print selected parts of lines from each FILE to standard output.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --bytes=LIST output only these bytes\n"
+#~ " -c, --characters=LIST output only these characters\n"
+#~ " -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+#~ " -f, --fields=LIST output only these fields; also print any line\n"
+#~ " that contains no delimiter character, unless\n"
+#~ " the -s option is specified\n"
+#~ " -n (ignored)\n"
+#~ " -s, --only-delimited do not print lines not containing delimiters\n"
+#~ " --output-delimiter=STRING use STRING as the output delimiter\n"
+#~ " the default is to use the input delimiter\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+#~ "range, or many ranges separated by commas. Each range is one of:\n"
+#~ "\n"
+#~ " N N'th byte, character or field, counted from 1\n"
+#~ " N- from N'th byte, character or field, to end of line\n"
+#~ " N-M from N'th to M'th (included) byte, character or field\n"
+#~ " -M from first to M'th (included) byte, character or field\n"
+#~ "\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ msgstr ""
+#~ "Vypí¹e pouze vybrané èásti øádkù z ka¾dého SOUBORu na standardní výstup.\n"
+#~ "\n"
+#~ " -b, --bytes=SEZNAM vypí¹e pouze tyto bajty\n"
+#~ " -c, --characters=SEZNAM vypí¹e pouze tyto znaky\n"
+#~ " -d, --delimiter=ODDÌLOVAÈ jako oddìlovaè pou¾ije ODDÌLOVAÈ (místo "
+#~ "tabulátoru)\n"
+#~ " -f, --fields=SEZNAM vypí¹e pouze tyto polo¾ky; také vypí¹e "
+#~ "v¹echny\n"
+#~ " øádky, které neobsahují oddìlovaè, ale pouze "
+#~ "pokud\n"
+#~ " není zadáno -s\n"
+#~ " -n (ignorováno)\n"
+#~ " -s, --only-delimited potlaèí øádky neobsahující znak oddìlovaèe\n"
+#~ " --output-delimiter=ØE«EZEC ØETEZEC se pou¾ije jako výstupní "
+#~ "oddìlovaè.\n"
+#~ " Implicitnì je jako tento oddìlovaè pou¾it "
+#~ "vstupní\n"
+#~ " oddìlovaè.\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ " Pou¾ijte pouze jeden z pøepínaèù -b, -c nebo -f. Ka¾dý seznam se "
+#~ "skládá\n"
+#~ "z jednoho rozsahu nebo z více rozsahù oddìlených èárkami. Ka¾dý rozsah "
+#~ "mù¾e\n"
+#~ "být:\n"
+#~ "\n"
+#~ " N N-tý bajt, znak nebo polo¾ka, poèítáno od 1\n"
+#~ " N- od N-tého bajtu, znaku nebo polo¾ky, do konce øádku\n"
+#~ " N-M od N-tého do M-tého (vèetnì) bajtu, znaku nebo polo¾ky\n"
+#~ " -M od prvního do M-tého (vèetnì) bajtu, znaku nebo polo¾ky\n"
+#~ "\n"
+#~ "Jestli¾e SOUBOR není zadán nebo je `-', bude èten ze standardního "
+#~ "vstupu.\n"
+
+#~ msgid ""
+#~ "For each pair of input lines with identical join fields, write a line to\n"
+#~ "standard output. The default join field is the first, delimited\n"
+#~ "by whitespace. When FILE1 or FILE2 (not both) is -, read standard "
+#~ "input.\n"
+#~ "\n"
+#~ " -a SIDE print unpairable lines coming from file SIDE\n"
+#~ " -e EMPTY replace missing input fields with EMPTY\n"
+#~ " -i, --ignore-case ignore differences in case when comparing fields\n"
+#~ " -j FIELD (obsolescent) equivalent to `-1 FIELD -2 FIELD'\n"
+#~ " -j1 FIELD (obsolescent) equivalent to `-1 FIELD'\n"
+#~ " -j2 FIELD (obsolescent) equivalent to `-2 FIELD'\n"
+#~ " -o FORMAT obey FORMAT while constructing output line\n"
+#~ " -t CHAR use CHAR as input and output field separator\n"
+#~ " -v SIDE like -a SIDE, but suppress joined output lines\n"
+#~ " -1 FIELD join on this FIELD of file 1\n"
+#~ " -2 FIELD join on this FIELD of file 2\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+#~ "else fields are separated by CHAR. Any FIELD is a field number counted\n"
+#~ "from 1. FORMAT is one or more comma or blank separated specifications,\n"
+#~ "each being `SIDE.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+#~ "the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+#~ "separated by CHAR.\n"
+#~ msgstr ""
+#~ " Pro ka¾dý pár vstupních øádkù se stejnými propojovacími polo¾kami, "
+#~ "zapí¹e\n"
+#~ "øádek na standardní výstup. Implicitnì je propojovací polo¾kou polo¾ka "
+#~ "první\n"
+#~ "a oddìlovaè je mezera. Jestli¾e SOUBOR1 nebo SOUBOR2 bude -, pak tento "
+#~ "bude\n"
+#~ "èten ze standardního vstupu.\n"
+#~ "\n"
+#~ " -a STRANA vypí¹e nepárové øádky pocházející ze souboru STRANA\n"
+#~ " -e PRÁZDN nahradí chybìjící vstupní polo¾ky znakem PRÁZDN\n"
+#~ " -i, --ignore-case pøi porovnávání polo¾ek ignoruje rozdíly mezi malými\n"
+#~ " a velkými písmeny\n"
+#~ " -j POLO®KA (zastaralé) rovnocenné s `-1 POLE -2 POLE'\n"
+#~ " -j1 POLO®KA (zastaralé) rovnocenné s `-1 POLE'\n"
+#~ " -j2 POLO®KA (zastaralé) rovnocenné s `-2 POLE'\n"
+#~ " -o FORMÁT øídí se FORMÁTem pøi tvorbì výstupního øádku\n"
+#~ " -t ZNAK pou¾ije ZNAK jako oddìlovaè polo¾ek na vstupu i "
+#~ "výstupu.\n"
+#~ " -v STRANA jako -a STRANA, ale bez spojených øádkù.\n"
+#~ " -1 POLO®KA spojuje pøes tuto POLO®KU souboru 1\n"
+#~ " -2 POLO®KA spojuje pøes tuto POLO®KU souboru 2\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ " Jestli¾e pøepínaè -t ZNAK nebude zadán, jako oddìlovaè bude pou¾ita "
+#~ "mezera\n"
+#~ "a prázdné polo¾ky na poèátku øádku budou ignorovány. Jinak bude "
+#~ "oddìlovaèem\n"
+#~ "polo¾ek ZNAK. Libovolná POLO®KA je poøadí polo¾ky poèítané od 1. FORMÁT "
+#~ "je\n"
+#~ "jedna nebo více èárkami nebo mezerami oddìlených popisovaèù, ka¾dý mù¾e "
+#~ "být\n"
+#~ "'STRANA.POLO®KA' nebo '0'. Implicitní FORMÁT vypisuje propojovací "
+#~ "polo¾ku,\n"
+#~ "zbytek polo¾ek ze souboru 1, zbytek polo¾ek ze souboru 2. V¹echny jsou "
+#~ "oddìleny\n"
+#~ "znakem ZNAK.\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION] [FILE]...\n"
+#~ " or: %s [OPTION] --check [FILE]\n"
+#~ "Print or check %s (%d-bit) checksums.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ "The following two options are useful only when verifying checksums:\n"
+#~ " --status don't output anything, status code shows "
+#~ "success\n"
+#~ " -w, --warn warn about improperly formated checksum lines\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "The sums are computed as described in %s. When checking, the input\n"
+#~ "should be a former output of this program. The default mode is to print\n"
+#~ "a line with checksum, a character indicating type (`*' for binary, ` ' "
+#~ "for\n"
+#~ "text), and name for each FILE.\n"
+#~ msgstr ""
+#~ "Pou¾ití: %s [PØEPÍNAÈ] [SOUBOR]...\n"
+#~ " nebo: %s [PØEPÍNAÈ] --check [SOUBOR]\n"
+#~ "\n"
+#~ " Vypí¹e nebo kontroluje %s (%dbitové) kontrolní souèty. Jestli¾e SOUBOR\n"
+#~ "nebude zadán nebo bude -, bude èten standardní vstup.\n"
+#~ "\n"
+#~ " -b, --binary ète soubory v binárním módu (implicitní\n"
+#~ " v DOSu/Windows)\n"
+#~ " -c, --check porovnává %s souèty se zadanými\n"
+#~ " -t, --text ète soubory v textovém módu (implicitní)\n"
+#~ "\n"
+#~ "Následující dva pøepínaèe jsou u¾iteèné pouze pøi ovìøování kontrolních "
+#~ "souètù:\n"
+#~ " --status nevypisuje nic, status kód ukazuje úspì¹nost\n"
+#~ " -w, --warn varování o nesprávnì formátovaných øádcích "
+#~ "souètù\n"
+#~ "\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ " Souèty jsou poèítány podle popisu v %s. Pøi testování by vstup mìl\n"
+#~ "být døívìj¹ím výstupem tohoto programu. Implicitní nastavení je výpis "
+#~ "jednoho\n"
+#~ "øádku pro ka¾dý SOUBOR. Formát øádku je kontrolní souèet, znak indikující "
+#~ "typ\n"
+#~ "('*' pro binární, ' ' pro textový) a jméno SOUBORu.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Write each FILE to standard output, with line numbers added.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+#~ " -d, --section-delimiter=CC use CC for separating logical pages\n"
+#~ " -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+#~ " -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+#~ " -i, --page-increment=NUMBER line number increment at each line\n"
+#~ " -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+#~ "one\n"
+#~ " -n, --number-format=FORMAT insert line numbers according to "
+#~ "FORMAT\n"
+#~ " -p, --no-renumber do not reset line numbers at logical "
+#~ "pages\n"
+#~ " -s, --number-separator=STRING add STRING after (possible) line "
+#~ "number\n"
+#~ " -v, --first-page=NUMBER first line number on each logical page\n"
+#~ " -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+#~ "two delimiter characters for separating logical pages, a missing\n"
+#~ "second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+#~ "\n"
+#~ " a number all lines\n"
+#~ " t number only nonempty lines\n"
+#~ " n number no lines\n"
+#~ " pREGEXP number only lines that contain a match for REGEXP\n"
+#~ "\n"
+#~ "FORMAT is one of:\n"
+#~ "\n"
+#~ " ln left justified, no leading zeros\n"
+#~ " rn right justified, no leading zeros\n"
+#~ " rz right justified, leading zeros\n"
+#~ "\n"
+#~ msgstr ""
+#~ " Pøepí¹e ka¾dý SOUBOR na standardní výstup a ke ka¾dému øádku pøidá "
+#~ "jeho\n"
+#~ "èíslo. Jestli¾e SOUBOR nebude zadán nebo bude -, bude èten standardní "
+#~ "vstup.\n"
+#~ "\n"
+#~ " -b, --body-numbering=STYL pou¾ije STYL k èíslování øádkù v tìle\n"
+#~ " -d, --section-delimiter=CC pou¾ije CC pro oddìlení logických "
+#~ "stránek\n"
+#~ " -f, --footer-numbering=STYL pou¾ije STYL k èíslování øádkù v "
+#~ "patièce\n"
+#~ " -h, --header-numbering=STYL pou¾ije STYL k èíslování øádkù v "
+#~ "hlavièce\n"
+#~ " -i, --page-increment=ÈÍSLO o kolik zvy¹ovat èíslo øádku\n"
+#~ " -l, --join-blank-lines=POÈET bere POÈET prázdných øádkù jako jeden\n"
+#~ " -n, --number-format=FORMÁT èísla øádkù vypisuje podle FORMÁTu\n"
+#~ " -p, --no-renumber nenuluje èíslo øádku na poèátku "
+#~ "logické\n"
+#~ " stránky\n"
+#~ " -s, --number-separator=ØETÌZEC pøidá øetìzec za èíslo øádku "
+#~ "(oddìlovaè\n"
+#~ " èísla od dal¹ího øádku)\n"
+#~ " -v, --first-page=ÈÍSLO èíslo prvního øádku na logické stránce\n"
+#~ " -w, --number-width=POÈET èísla øádkù vypisuje na POÈET míst\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ " Implicitní jsou parametry -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC "
+#~ "jsou\n"
+#~ "dva znaky, které jsou pou¾ity k oddìlování logických stránek. Pro zadání "
+#~ "'\\'\n"
+#~ "je tøeba napsat '\\\\'. STYL je jeden z:\n"
+#~ "\n"
+#~ " a èísluje v¹echny øádky\n"
+#~ " t èísluje pouze neprázdné øádky\n"
+#~ " n øádky neèísluje\n"
+#~ " pREGVÝR èísluje pouze øádky vyhovující REGVÝR\n"
+#~ "\n"
+#~ "FORMÁT je jeden z:\n"
+#~ "\n"
+#~ " ln zarovnává vlevo, bez úvodních nul\n"
+#~ " rn zarovnává vpravo, bez úvodních nul\n"
+#~ " rz zarovnává vpravo, s úvodními nulami\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Write an unambiguous representation, octal bytes by default,\n"
+#~ "of FILE to standard output. With more than one FILE argument,\n"
+#~ "concatenate them in the listed order to form the input.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -A, --address-radix=RADIX decide how file offsets are printed\n"
+#~ " -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+#~ " -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+#~ " -s, --strings[=BYTES] output strings of at least BYTES graphic "
+#~ "chars\n"
+#~ " -t, --format=TYPE select output format or formats\n"
+#~ " -v, --output-duplicates do not use * to mark line suppression\n"
+#~ " -w, --width[=BYTES] output BYTES bytes per output line\n"
+#~ " --traditional accept arguments in pre-POSIX form\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Pre-POSIX format specifications may be intermixed, they accumulate:\n"
+#~ " -a same as -t a, select named characters\n"
+#~ " -b same as -t oC, select octal bytes\n"
+#~ " -c same as -t c, select ASCII characters or backslash escapes\n"
+#~ " -d same as -t u2, select unsigned decimal shorts\n"
+#~ " -f same as -t fF, select floats\n"
+#~ " -h same as -t x2, select hexadecimal shorts\n"
+#~ " -i same as -t d2, select decimal shorts\n"
+#~ " -l same as -t d4, select decimal longs\n"
+#~ " -o same as -t o2, select octal shorts\n"
+#~ " -x same as -t x2, select hexadecimal shorts\n"
+#~ msgstr ""
+#~ " Vypí¹e SOUBOR v zadaném formátu, implicitní je osmièkový výpis, na\n"
+#~ "standardní výstup. Jestli¾e SOUBOR nebude zadán nebo bude -, bude èten\n"
+#~ "standardní vstup.\n"
+#~ "\n"
+#~ " -A, --address-radix=ZÁKLAD pozici v souboru vypisuje v zadané "
+#~ "soustavì\n"
+#~ " -j, --skip-bytes=POÈET pøeskoèí prvních POÈET bajtù ka¾dého "
+#~ "souboru\n"
+#~ " -N, --read-bytes=POÈET vypí¹e pouze POÈET bajtù ka¾dého souboru\n"
+#~ " -s, --strings[=POÈET] vypí¹e pouze øetìzce obsahující nejménì "
+#~ "POÈET\n"
+#~ " znakù\n"
+#~ " -t, --format=TYP vybere výstupní formát nebo formáty\n"
+#~ " -v, --output-duplicates vypisuje i za sebou se opakující stejné "
+#~ "øádky\n"
+#~ " -w, --width[=POÈET] vypí¹e POÈET bajtù na výstupní øádek\n"
+#~ " --traditional akceptuje argumenty v pøed-POSIXovém tvaru\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ "Pøed-POSIXové formáty mohou být pou¾ívány spolu s POSIXovými, to "
+#~ "zahrnuje:\n"
+#~ " -a stejné jako -t a, názvy znakù\n"
+#~ " -b stejné jako -t oC, bajty osmièkovì\n"
+#~ " -c stejné jako -t c, ASCII znaky nebo kódy znakù se zpìtným "
+#~ "lomítkem\n"
+#~ " -d stejné jako -t u2, desítková bez znaménka (dvou bajtová - short)\n"
+#~ " -f stejné jako -t fF, èísla v pohyblivé øádové èárce\n"
+#~ " -h stejné jako -t x2, ¹estnáctková (dvou bajtová - short)\n"
+#~ " -i stejné jako -t d2, desítková se znaménkem (dvou bajtová - short)\n"
+#~ " -l stejné jako -t d4, desítková se znaménkem (ètyø bajtová - long)\n"
+#~ " -o stejné jako -t o2, osmièková (dvou bajtová - short)\n"
+#~ " -x stejné jako -t x2, ¹estnáctková (dvou bajtová - short)\n"
+
+# `maybe' or `may be'? - rzm
+#~ msgid ""
+#~ "\n"
+#~ "For older syntax (second call format), OFFSET means -j OFFSET. LABEL\n"
+#~ "is the pseudo-address at first byte printed, incremented when dump is\n"
+#~ "progressing. For OFFSET and LABEL, a 0x or 0X prefix indicates\n"
+#~ "hexadecimal, suffixes maybe . for octal and b multiply by 512.\n"
+#~ "\n"
+#~ "TYPE is made up of one or more of these specifications:\n"
+#~ "\n"
+#~ " a named character\n"
+#~ " c ASCII character or backslash escape\n"
+#~ " d[SIZE] signed decimal, SIZE bytes per integer\n"
+#~ " f[SIZE] floating point, SIZE bytes per integer\n"
+#~ " o[SIZE] octal, SIZE bytes per integer\n"
+#~ " u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+#~ " x[SIZE] hexadecimal, SIZE bytes per integer\n"
+#~ "\n"
+#~ "SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+#~ "sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+#~ "sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+#~ "for sizeof(double) or L for sizeof(long double).\n"
+#~ "\n"
+#~ "RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+#~ "BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+#~ "with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix "
+#~ "to\n"
+#~ "any type adds a display of printable characters to the end of each line\n"
+#~ "of output. -s without a number implies 3. -w without a number implies "
+#~ "32.\n"
+#~ "By default, od uses -A o -t d2 -w 16.\n"
+#~ msgstr ""
+#~ "\n"
+#~ " U staré syntaxe (druhý zpùsob volání), POSUN znaèí -j POSUN. NÁVÌ©TÍ\n"
+#~ "je pseudo-adresa vypsaná u prvního bajtu a zvìt¹ovaná bìhem výpisu. "
+#~ "POSUN\n"
+#~ "a NÁVÌ©TÍ jsou brány jako osmièková èísla. Pokud èíslo zaèíná 0x nebo 0X\n"
+#~ "oznaèuje ¹estnáctkové èíslo. Pokud èíslo konèí desetinnou teèkou '.' "
+#~ "oznaèuje\n"
+#~ "desítkové èíslo. Pokud èíslo konèí znakem 'b' znamená to, ¾e bude "
+#~ "násobeno\n"
+#~ "512-ti.\n"
+#~ "\n"
+#~ "TYP je tvoøen z jedné nebo více tìchto mo¾ností:\n"
+#~ "\n"
+#~ " a názvy znakù\n"
+#~ " c ASCII znaky nebo kódy znakù se zpìtným lomítkem\n"
+#~ " d[BAJTÙ] desítkové se znaménkem s poètem BAJTÙ na èíslo\n"
+#~ " f[BAJTÙ] s plovoucí øádovou èárkou s poètem BAJTÙ na èíslo\n"
+#~ " o[BAJTÙ] osmièkové s poètem BAJTÙ na èíslo\n"
+#~ " u[BAJTÙ] desítkové bez znaménka s poètem BAJTÙ na èíslo\n"
+#~ " x[BAJTÙ] ¹estnáctkové s poètem BAJTÙ na èíslo\n"
+#~ "\n"
+#~ " BAJTÙ je èíslo. Pro TYPy d, o, u, x mù¾e být BAJTÙ také C jako\n"
+#~ "sizeof(char), S jako sizeof(short), I jako sizeof(int) nebo L jako\n"
+#~ "sizeof(long). Jestli¾e TYP je f, BAJTÙ mù¾e být také F jako sizeof"
+#~ "(float),\n"
+#~ "D jako sizeof(double) nebo L jako sizeof(long double).\n"
+#~ "\n"
+#~ " ZÁKLAD je d pro dekadické, o - osmièkové, x - ¹estnáctkové, n - ¾ádné.\n"
+#~ "POÈET je brán jako ¹estnáctkové èíslo zaèíná-li 0x nebo 0X, konèí-li "
+#~ "znakem\n"
+#~ "'b', bude násobeno 512-ti, k - 1024-mi, m - 1048576-ti. -s bez zadaného "
+#~ "èísla\n"
+#~ "je bráno jako -s 3. -w bez èísla je bráno jako -w 32. Implicitní jsou "
+#~ "tyto\n"
+#~ "hodnoty -A o -t d2 -w 16.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Paginate or columnate FILE(s) for printing.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+#~ " begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+#~ " -COLUMN, --columns=COLUMN\n"
+#~ " produce COLUMN-column output and print columns down,\n"
+#~ " unless -a is used. Balance number of lines in the\n"
+#~ " columns on each page.\n"
+#~ " -a, --across print columns across rather than down, used together\n"
+#~ " with -COLUMN\n"
+#~ " -c, --show-control-chars\n"
+#~ " use hat notation (^G) and octal backslash notation\n"
+#~ " -d, --double-space\n"
+#~ " double space the output\n"
+#~ " -D, --date-format=FORMAT\n"
+#~ " use FORMAT for the header date\n"
+#~ " -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+#~ " expand input CHARs (TABs) to tab WIDTH (8)\n"
+#~ " -F, -f, --form-feed\n"
+#~ " use form feeds instead of newlines to separate pages\n"
+#~ " (by a 3-line page header with -F or a 5-line header\n"
+#~ " and trailer without -F)\n"
+#~ msgstr ""
+#~ "Nastránkuje nebo nasloupcuje SOUBOR(y) pro tisk.\n"
+#~ "\n"
+#~ " +PRVNÍ_STRÁNKA[:POSLEDNÍ_STRÁNKA], --pages=PRVNÍ_STRÁNKA[:"
+#~ "POSLEDNÍ_STRÁNKA]\n"
+#~ " zaène [skonèí] výpis na stránce PRVNÍ_[POSLEDNÍ_]"
+#~ "STRÁNKA\n"
+#~ " -SLOUPCÙ, --columns=SLOUPCÙ\n"
+#~ " produkuje SLOUPCÙ-sloupcový výstup. Øádky vypisuje\n"
+#~ " na stránku do sloupcù, pokud není pou¾it pøepínaè -"
+#~ "a.\n"
+#~ " Také se sna¾í vyrovnat poèet øádkù ve sloupcích.\n"
+#~ " -a, --across vypisuje øádky pøes sloupce. Pou¾ívá se dohromady\n"
+#~ " s pøepínaèem -SLOUPCÙ.\n"
+#~ " -c, --show-control-chars\n"
+#~ " pou¾ije notaci (^G) a osmièkovou se zpìtným lomítkem\n"
+#~ " -d, --double-space\n"
+#~ " za ka¾dý øádek vlo¾í jeden prázdný\n"
+#~ " -D, --date-format=FORMÁT\n"
+#~ " pou¾ije FORMÁT pro datum v hlavièce\n"
+#~ " -e[ZNAK[©ÍØKA]], --expand-tabs[=ZNAK[©ÍØKA]]\n"
+#~ " expanduje vstupní ZNAKy (tabelátory) na ©ÍØKA (8) "
+#~ "mezer\n"
+#~ " -F, -f, --form-feed\n"
+#~ " pou¾ije znak nové stránky (FF) místo nových øádkù "
+#~ "(CR)\n"
+#~ " k oddìlení stránek (a 3-øádkovou hlavièku stránky pøi "
+#~ "-F\n"
+#~ " nebo 5-øádkovou hlavièku s patièkou bez -F).\n"
+
+#~ msgid ""
+#~ " -h HEADER, --header=HEADER\n"
+#~ " use a centered HEADER instead of filename in page "
+#~ "header,\n"
+#~ " -h \"\" prints a blank line, don't use -h\"\"\n"
+#~ " -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+#~ " replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+#~ " -J, --join-lines merge full lines, turns off -W line truncation, no "
+#~ "column\n"
+#~ " alignment, -S[STRING] sets separators\n"
+#~ " -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+#~ " set the page length to PAGE_LENGTH (66) lines\n"
+#~ " (default number of lines of text 56, and with -F 63)\n"
+#~ " -m, --merge print all files in parallel, one in each column,\n"
+#~ " truncate lines, but join lines of full length with -"
+#~ "J\n"
+#~ " -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+#~ " number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+#~ " default counting starts with 1st line of input file\n"
+#~ " -N NUMBER, --first-line-number=NUMBER\n"
+#~ " start counting with NUMBER at 1st line of first\n"
+#~ " page printed (see +FIRST_PAGE)\n"
+#~ " -o MARGIN, --indent=MARGIN\n"
+#~ " offset each line with MARGIN (zero) spaces, do not\n"
+#~ " affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+#~ " -r, --no-file-warnings\n"
+#~ " omit warning when a file cannot be opened\n"
+#~ msgstr ""
+#~ " -h HLAVIÈKA, --header=HLAVIÈKA\n"
+#~ " pou¾ije vystøedìnou HLAVIÈKU místo jména souboru.\n"
+#~ " -h \"\" vypí¹e prázdnou hlavièku. Nepou¾ívejte -h"
+#~ "\"\"\n"
+#~ " -i[ZNAK[©ÍØKA]], --output-tabs[=ZNAK[©ÍØKA]]\n"
+#~ " nahradí ©ÍØKA (8) mezer ZNAKem (tabelátorem)\n"
+#~ " -J, --join-lines vypisuje slité celé øádky, vyøadí -W zkracování "
+#~ "øádkù,\n"
+#~ " ru¹í zarovnání sloupcù, -S[ØETÌZEC] nastavuje "
+#~ "oddìlovaèe\n"
+#~ " -l DÉLKA_STRÁNKY, --length=DÉLKA_STRÁNKY\n"
+#~ " nastaví délku stránky (66). Zadáno v øádcích.\n"
+#~ " (implicitnì je 56 øádkù textu, s -F 63)\n"
+#~ " -m, --merge vypí¹e soubory vedle sebe, ka¾dý v jednom sloupci,\n"
+#~ " zkracuje øádky, ale spolu s pøepínaèem -J je vypisuje "
+#~ "celé\n"
+#~ " -n [ODDÌL[ÈÍSLIC]], --number-lines[=ODDÌL[ÈÍSLIC]]\n"
+#~ " èísluje øádky, vypisuje ÈÍSLIC (5) èíslic a potom "
+#~ "ODDÌL\n"
+#~ " (TAB). Implicitnì poèítání zaèíná od jednièky prvním\n"
+#~ " vstupním øádkem\n"
+#~ " -N ÈÍSLO, --first-line-number=ÈÍSLO\n"
+#~ " zaène poèítání èíslem ÈÍSLO prvního øádku první\n"
+#~ " vypisované stránky (viz +PRVNÍ_STRÁNKA)\n"
+#~ " -o OKRAJ, --indent=OKRAJ\n"
+#~ " okraj na levé stranì stránky (neovlivòuje -w nebo -"
+#~ "W,\n"
+#~ " okraj bude pøidán k ©ÍØCE_STRÁNKY)\n"
+#~ " -r, --no-file-warnings\n"
+#~ " potlaèí varování, kdy¾ soubor nemù¾e být otevøen\n"
+
+#~ msgid ""
+#~ " -s[CHAR],--separator[=CHAR]\n"
+#~ " separate columns by a single character, default for "
+#~ "CHAR\n"
+#~ " is the <TAB> character without -w and 'no char' with -"
+#~ "w\n"
+#~ " -s[CHAR] turns off line truncation of all 3 column\n"
+#~ " options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+#~ " -S[STRING], --sep-string[=STRING]\n"
+#~ " separate columns by an optional STRING, don't use\n"
+#~ " -S \"STRING\", -S only: No separator used (same as -S"
+#~ "\"\"),\n"
+#~ " without -S: Default separator <TAB> with -J and "
+#~ "<space>\n"
+#~ " otherwise (same as -S\" \"), no effect on column "
+#~ "options\n"
+#~ " -t, --omit-header omit page headers and trailers\n"
+#~ " -T, --omit-pagination\n"
+#~ " omit page headers and trailers, eliminate any "
+#~ "pagination\n"
+#~ " by form feeds set in input files\n"
+#~ " -v, --show-nonprinting\n"
+#~ " use octal backslash notation\n"
+#~ " -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+#~ " set page width to PAGE_WIDTH (72) characters for\n"
+#~ " multiple text-column output only, -s[char] turns off "
+#~ "(72)\n"
+#~ " -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+#~ " set page width to PAGE_WIDTH (72) characters always,\n"
+#~ " truncate lines, except -J option is set, no "
+#~ "interference\n"
+#~ " with -S or -s\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+#~ "FILE is -, read standard input.\n"
+#~ msgstr ""
+#~ " -s[ZNAK], --separator[=ZNAK]\n"
+#~ " oddìlí sloupce volitelným ZNAKem, implicitnì je to "
+#~ "TAB,\n"
+#~ " kdy¾ není zadán pøepínaè -w a ¾ádný znak, kdy¾ je -w "
+#~ "zadán.\n"
+#~ " -s[CHAR] vypne zkracování øádkù ve v¹ech tøech "
+#~ "sloupcích\n"
+#~ " (pøepínaèe -COLUMN|-a -COLUMN|-m) kromì toho, kdy¾ je "
+#~ "zadán\n"
+#~ " pøepínaè -w\n"
+#~ " -S[ØETÌZEC], --sep-string[=ØETÌZEC]\n"
+#~ " oddìlí sloupce volitelným ØETÌZECem, nepou¾ívejte\n"
+#~ " -S \"ØETÌZEC\". \n"
+#~ " Pouze -S: oddìlovaè není u¾it, rovnocenné s -S\"\" \n"
+#~ " bez -S: s pøepínaèem -J je implicitní `TAB', jinak "
+#~ "mezera\n"
+#~ " (rovnocenné s -S\" \"), neovlivòuje parametry "
+#~ "sloupcù.\n"
+#~ " -t, --omit-header nevypisuje hlavièky a patièky stránek\n"
+#~ " -T, --omit-pagination\n"
+#~ " nevypisuje hlavièky a patièky stránek, ignoruje "
+#~ "rozvr¾ení\n"
+#~ " stránek vstupního souboru (ignoruje znak nové stránky "
+#~ "FF)\n"
+#~ " -v, --show-nonprinting\n"
+#~ " pou¾ije osmièkovou notaci se zpìtným lomítkem\n"
+#~ " -w ©ÍØKA_STRÁNKY, --width=©ÍØKA_STRÁNKY\n"
+#~ " nastaví ¹íøku stránky na ©ÍØKA_STRÁNKY (72) znakù "
+#~ "pouze\n"
+#~ " pro vícesloupcový výstup, -s[ZNAK] vypíná (72),\n"
+#~ " -W ©ÍØKA_STRÁNKY, --page-width=©ÍØKA_STRÁNKY\n"
+#~ " nastaví ¹íøku stránky na ©ÍØKA_STRÁNKY (72) znakù,\n"
+#~ " kdy¾ není zadán pøepínaè -J, zkracuje øádky\n"
+#~ " neovlivòuje -S nebo -s.\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ " Jestli¾e je zadáno -l nn, kdy nn <= 10 nebo nn >= 3 a -F, pak je "
+#~ "implicitnì\n"
+#~ "pou¾it pøepínaè -T. Nebude-li SOUBOR zadán nebo bude-li -, pak bude èten\n"
+#~ "standardní vstup.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Output a permuted index, including context, of the words in the input "
+#~ "files.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -A, --auto-reference output automatically generated "
+#~ "references\n"
+#~ " -C, --copyright display Copyright and copying "
+#~ "conditions\n"
+#~ " -G, --traditional behave more like System V `ptx'\n"
+#~ " -F, --flag-truncation=STRING use STRING for flagging line "
+#~ "truncations\n"
+#~ " -M, --macro-name=STRING macro name to use instead of `xx'\n"
+#~ " -O, --format=roff generate output as roff directives\n"
+#~ " -R, --right-side-refs put references at right, not counted in -"
+#~ "w\n"
+#~ " -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+#~ " -T, --format=tex generate output as TeX directives\n"
+#~ " -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+#~ " -b, --break-file=FILE word break characters in this FILE\n"
+#~ " -f, --ignore-case fold lower case to upper case for "
+#~ "sorting\n"
+#~ " -g, --gap-size=NUMBER gap size in columns between output "
+#~ "fields\n"
+#~ " -i, --ignore-file=FILE read ignore word list from FILE\n"
+#~ " -o, --only-file=FILE read only word list from this FILE\n"
+#~ " -r, --references first field of each line is a reference\n"
+#~ " -t, --typeset-mode - not implemented -\n"
+#~ " -w, --width=NUMBER output width in columns, reference "
+#~ "excluded\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+#~ msgstr ""
+#~ " Povinné argumenty dlouhých pøepínaèù, jsou také povinné i u "
+#~ "odpovídajících\n"
+#~ "krátkých pøepínaèù.\n"
+#~ "\n"
+#~ " -A, --auto-reference ve výstupu jsou automaticky generované "
+#~ "odkazy\n"
+#~ " -C, --copyright vypí¹e autorská práva a podmínky "
+#~ "kopírování\n"
+#~ " -G, --traditional zpùsobí chování jako System V `ptx'\n"
+#~ " -F, --flag-truncation=ØETÌZEC pou¾ije ØETÌZEC pro urèení zkracování "
+#~ "øádkù\n"
+#~ " -M, --macro-name=ØETÌZEC jméno makra, které se má pou¾ít místo "
+#~ "`xx'\n"
+#~ " -O, --format=roff generuje výstup pro program roff\n"
+#~ " -R, --right-side-refs vlo¾í odkazy vpravo, nepoèítány v -w\n"
+#~ " -S, --sentence-regexp=REGVÝR pro konec øádkù a konec vìt\n"
+#~ " -T, --format=tex generuje výstup pro TeX\n"
+#~ " -W, --word-regexp=REGVÝR pou¾ije REGVÝR pro urèení ka¾dého slova\n"
+#~ " -b, --break-file=SOUBOR znaky pøeru¹ující slovo v tomto SOUBORu\n"
+#~ " -f, --ignore-case pøepsání malých písmen na velká pro "
+#~ "øazení\n"
+#~ " -g, --gap-size=ÈÍSLO velikost mezery ve sloupcích mezi "
+#~ "výstupními\n"
+#~ " polo¾kami\n"
+#~ " -i, --ignore-file=SOUBOR pøeète slova, která se mají ignorovat\n"
+#~ " ze SOUBORu\n"
+#~ " -o, --only-file=SOUBOR pøeètení seznamu slov pouze ze SOUBORu\n"
+#~ " -r, --references první polo¾ka ka¾dého øádku je odkaz\n"
+#~ " -t, --typeset-mode - neimplementováno -\n"
+#~ " -w, --width=ÈÍSLO ¹íøka výstupu ve slupcích, bez odkazù\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ "Jestli¾e není SOUBOR zadán nebo je -, bude èten standardní vstup. "
+#~ "Implicitní\n"
+#~ "pøepínaèe: `-F /'\n"
+
+# nie wiem jak ladnie tlumaczyc `last resort comparison' - rzm
+#~ msgid ""
+#~ "Other options:\n"
+#~ "\n"
+#~ " -c, --check check whether input is sorted; do not sort\n"
+#~ " -k, --key=POS1[,POS2] start a key at POS1, end it at POS 2 (origin "
+#~ "1)\n"
+#~ " -m, --merge merge already sorted files; do not sort\n"
+#~ " -o, --output=FILE write result to FILE instead of standard "
+#~ "output\n"
+#~ " -s, --stable stabilize sort by disabling last-resort "
+#~ "comparison\n"
+#~ " -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+#~ " -t, --field-separator=SEP use SEP instead of non- to whitespace "
+#~ "transition\n"
+#~ " -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+#~ "s\n"
+#~ " multiple options specify multiple "
+#~ "directories\n"
+#~ " -u, --unique with -c: check for strict ordering\n"
+#~ " otherwise: output only the first of an "
+#~ "equal run\n"
+#~ " -z, --zero-terminated end lines with 0 byte, not newline\n"
+#~ " +POS1 [-POS2] start a key at POS1, end it before POS2 "
+#~ "(origin 0)\n"
+#~ " Warning: this option is obsolescent\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Dal¹í pøepínaèe:\n"
+#~ "\n"
+#~ " -c, --check v pøípadì, ¾e vstupní soubory jsou ji¾ "
+#~ "seøazeny\n"
+#~ " neøadí je\n"
+#~ " -k, --key=POZ1[,POZ2] zaèátek klíèe na POZ1 a konec *na* POZ2 "
+#~ "èísla\n"
+#~ " polo¾ek a pozice znakù jsou poèítány od "
+#~ "jedné\n"
+#~ " -m, --merge spojí ji¾ seøazené soubory, neseøazuje je\n"
+#~ " -o, --output=SOUBOR výsledek zapí¹e do SOUBORu místo na "
+#~ "standardní\n"
+#~ " výstup\n"
+#~ " -s, --stable stabilizuje výsledek zakázáním seøazení "
+#~ "stejných\n"
+#~ " polo¾ek porovnáváním bajt po bajtu\n"
+#~ " -S, --buffer-size=VELIKOST\n"
+#~ " pou¾ije VELIKOST pro hlavní pamì»ový buffer\n"
+#~ " -t, --field-separator=ODDÌL\n"
+#~ " pou¾ije ODDÌLovaèe místo pøechodu nemezera/"
+#~ "mezera\n"
+#~ " -T, --temporary-directory=ADRESÁØ\n"
+#~ " pou¾ije ADRESÁØ pro doèasné soubory, "
+#~ "nepou¾ívá\n"
+#~ " $TMPDIR ani %s.\n"
+#~ " Více pøepínaèù zadává více adresáøù.\n"
+#~ " -u, --unique s -c testuje striktní uspoøádání;\n"
+#~ " jinak vypí¹e pouze první ze stejných "
+#~ "sekvencí\n"
+#~ " -z, --zero-terminated vstupní øádky jsou ukonèeny bajtem 0 místo "
+#~ "LF\n"
+#~ " (pro pou¾ití s 'find -print0')\n"
+#~ " +POZ1 [-POZ2] zaèátek klíèe na pozici POZ1, konec pøed "
+#~ "POZ2\n"
+#~ " (poèítáno od nuly).\n"
+#~ " Varování: tento pøepínaè je zastaralý\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print the last %d lines of each FILE to standard output.\n"
+#~ "With more than one FILE, precede each with a header giving the file "
+#~ "name.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " --retry keep trying to open a file even if it is\n"
+#~ " inaccessible when tail starts or if it "
+#~ "becomes\n"
+#~ " inaccessible later -- useful only with -f\n"
+#~ " -c, --bytes=N output the last N bytes\n"
+#~ " -f, --follow[={name|descriptor}]\n"
+#~ " output appended data as the file grows;\n"
+#~ " -f, --follow, and --follow=descriptor are\n"
+#~ " equivalent\n"
+#~ " -F same as --follow=name --retry\n"
+#~ " -n, --lines=N output the last N lines, instead of the last %"
+#~ "d\n"
+#~ " --max-unchanged-stats=N\n"
+#~ " with --follow=name, reopen a FILE which has "
+#~ "not\n"
+#~ " changed size after N (default %d) iterations\n"
+#~ " to see if it has been unlinked or renamed\n"
+#~ " (this is the usual case of rotated log files)\n"
+#~ " --pid=PID with -f, terminate after process ID, PID dies\n"
+#~ " -q, --quiet, --silent never output headers giving file names\n"
+#~ " -s, --sleep-interval=S with -f, each iteration lasts approximately S\n"
+#~ " (default 1) seconds\n"
+#~ " -v, --verbose always output headers giving file names\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ " Vypí¹e, na standardní výstup, posledních %d øádkù ka¾dého SOUBORu. "
+#~ "Jestli¾e\n"
+#~ "bude zadán více jak jeden soubor, pøedchází výpisu ka¾dého souboru název "
+#~ "tohoto\n"
+#~ "souboru. Jestli¾e SOUBOR nebude zadán nebo bude -, bude èten standardní "
+#~ "vstup.\n"
+#~ "\n"
+#~ " --retry bude zkou¹et otevøít soubor dokonce i kdy¾\n"
+#~ " bude nedostupný v okam¾iku spu¹tìní tailu "
+#~ "nebo\n"
+#~ " jestli¾e se stane nedostupným pozdìji -- "
+#~ "u¾iteèné\n"
+#~ " pouze s -f\n"
+#~ " -c, --bytes=N vypí¹e posledních N bajtù\n"
+#~ " -f, --follow[={name|descriptor}]\n"
+#~ " vypisuje pouze data pøidávaná do souboru;\n"
+#~ " -f, --follow a --follow=descriptor jsou "
+#~ "stejné\n"
+#~ " -n, --lines=N vypí¹e posledních N øádkù místo posledních %d\n"
+#~ " --max-unchanged-stats=N\n"
+#~ " dohromady s --follow=name, znovuotevøe "
+#~ "SOUBOR,\n"
+#~ " jestli¾e se velikost souboru bìhem posledních "
+#~ "N\n"
+#~ " (implicitnì %d) iterací nezmìnila, by se "
+#~ "podíval,\n"
+#~ " zda nebyl soubor smazán, nebo pøejmenován "
+#~ "(obvyklé\n"
+#~ " pøi rotaci log souborù). \n"
+#~ " --pid=PID s -f se ukonèí, kdy¾ proces s èíslem PID "
+#~ "skonèí\n"
+#~ " -q, --quiet, --silent nevypisuje názvy souborù\n"
+#~ " -s, --sleep-interval=S spolu s -f èeká S sekund mezi testováním, zde "
+#~ "nìco\n"
+#~ " nepøibylo (implicitnì 1)\n"
+#~ " -v, --verbose v¾dy vypisuje názvy souborù\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "If the first character of N (the number of bytes or lines) is a `+',\n"
+#~ "print beginning with the Nth item from the start of each file, "
+#~ "otherwise,\n"
+#~ "print the last N items in the file. N may have a multiplier suffix:\n"
+#~ "b for 512, k for 1024, m for 1048576 (1 Meg). A first OPTION of -VALUE\n"
+#~ "or +VALUE is treated like -n VALUE or -n +VALUE unless VALUE has one of\n"
+#~ "the [bkm] suffix multipliers, in which case it is treated like -c VALUE\n"
+#~ "or -c +VALUE. Warning: a first option of +VALUE is obsolescent, and "
+#~ "support\n"
+#~ "for it will be withdrawn.\n"
+#~ "\n"
+#~ "With --follow (-f), tail defaults to following the file descriptor, "
+#~ "which\n"
+#~ "means that even if a tail'ed file is renamed, tail will continue to "
+#~ "track\n"
+#~ "its end. This default behavior is not desirable when you really want to\n"
+#~ "track the actual name of the file, not the file descriptor (e.g., log\n"
+#~ "rotation). Use --follow=name in that case. That causes tail to track "
+#~ "the\n"
+#~ "named file by reopening it periodically to see if it has been removed "
+#~ "and\n"
+#~ "recreated by some other program.\n"
+#~ "\n"
+#~ msgstr ""
+#~ " Jestli¾e první znak N (poèet bajtù nebo øádkù) je `+', výpis zaèíná\n"
+#~ "od N-tého elementu od poèátku ka¾dého souboru. Jinak se vypisuje "
+#~ "posledních\n"
+#~ "N elementù souboru. N mù¾e mít násobící pøíponu: b - 512, k - 1024 nebo\n"
+#~ "m - 1048576 (1 Mega). První pøepínaè -HODNOTA nebo +HODNOTA, je brán "
+#~ "jako\n"
+#~ "-n HODNOTA nebo -n +HODNOTA, pokud HODNOTA nemá násobící pøíponu [bkm].\n"
+#~ "Jestli¾e ji má, pak je HODNOTA brána jako -c HODNOTA nebo -c +HODNOTA.\n"
+#~ "\n"
+#~ " UPOZORNÌNÍ: první pøepínaè +VALUE je zastaralý a jeho podpora bude\n"
+#~ "odstranìna.\n"
+#~ "\n"
+#~ "S --follow (-f), tail sleduje popisovaè souboru, co¾ znamená, jestli¾e\n"
+#~ "sledovaný soubor bude pøejmenován, tail bude sledovat tento pøejmenovaný\n"
+#~ "soubor. Implicitní funkce není ¾ádoucí, jestli¾e chcete sledovat "
+#~ "aktuální\n"
+#~ "soubor pod daným jménem a ne popisovaè souboru (napøíklad rotace logù).\n"
+#~ "V tomto pøípadì pou¾ijte --follow=name. To zpùsobí, ¾e tail bude "
+#~ "sledovat\n"
+#~ "soubor daného jména s periodickým znovuotevíráním, aby zjistil, zda byl \n"
+#~ "soubor smazán a znovuvytvoøen nìjakým jiným programem.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "SETs are specified as strings of characters. Most represent themselves.\n"
+#~ "Interpreted sequences are:\n"
+#~ "\n"
+#~ " \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a audible BEL\n"
+#~ " \\b backspace\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ " CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+#~ " [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+#~ " [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+#~ " [:alnum:] all letters and digits\n"
+#~ " [:alpha:] all letters\n"
+#~ " [:blank:] all horizontal whitespace\n"
+#~ " [:cntrl:] all control characters\n"
+#~ " [:digit:] all digits\n"
+#~ " [:graph:] all printable characters, not including space\n"
+#~ " [:lower:] all lower case letters\n"
+#~ " [:print:] all printable characters, including space\n"
+#~ " [:punct:] all punctuation characters\n"
+#~ " [:space:] all horizontal or vertical whitespace\n"
+#~ " [:upper:] all upper case letters\n"
+#~ " [:xdigit:] all hexadecimal digits\n"
+#~ " [=CHAR=] all characters which are equivalent to CHAR\n"
+#~ msgstr ""
+#~ "\n"
+#~ " MNO®INY jsou zadány jako øetìzce znakù. Vìt¹ina znakù reprezentuje je "
+#~ "samé,\n"
+#~ "speciální význam mají tyto:\n"
+#~ "\n"
+#~ " \\NNN znak o hodnotì NNN (zadáno v osmièkové soustavì)\n"
+#~ " \\\\ zpìtné lomítko\n"
+#~ " \\a znak BEL (pípnutí)\n"
+#~ " \\b backspace\n"
+#~ " \\f nová strana (form feed)\n"
+#~ " \\n nový øádek (line feed)\n"
+#~ " \\r návrat vozíku (return)\n"
+#~ " \\t horizontální tabelátor\n"
+#~ " \\v vertikální tabelátor\n"
+#~ " ZNAK1-ZNAK2 v¹echny znaky od ZNAKu1 do ZNAKu2, vzestupnì\n"
+#~ " [ZNAK*] v MNO®INÌ2 kopíruje ZNAK tolikrát, aby byla MNO®INA2 "
+#~ "stejnì\n"
+#~ " dlouhá jako MNO®INA1\n"
+#~ " [ZNAK*KOLIKRÁT] KOLIKRÁT kopií ZNAKu, osmièkovì kdy¾ zaèíná èíslicí 0\n"
+#~ " [:alnum:] v¹echna písmena a èíslice\n"
+#~ " [:alpha:] v¹echna písmena\n"
+#~ " [:blank:] v¹echny horizontální mezery\n"
+#~ " [:cntrl:] v¹echny øídící znaky\n"
+#~ " [:digit:] v¹echny èíslice\n"
+#~ " [:graph:] v¹echny tisknutelné znaky bez mezer\n"
+#~ " [:lower:] v¹echna malá písmena\n"
+#~ " [:print:] v¹echny tisknutelné znaky vèetnì mezer\n"
+#~ " [:punct:] v¹echny interpunkèní znaky\n"
+#~ " [:space:] v¹echny horizontální a vertikální mezery\n"
+#~ " [:upper:] v¹echna velká písmena\n"
+#~ " [:xdigit:] v¹echny v¹echny ¹estnáctkové èíslice\n"
+#~ " [=ZNAK=] v¹echny znaky rovnocenné s ZNAKem\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Discard all but one of successive identical lines from INPUT (or\n"
+#~ "standard input), writing to OUTPUT (or standard output).\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -c, --count prefix lines by the number of occurrences\n"
+#~ " -d, --repeated only print duplicate lines\n"
+#~ " -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+#~ " delimit-method={none(default),prepend,separate)}\n"
+#~ " Delimiting is done with blank lines.\n"
+#~ " -f, --skip-fields=N avoid comparing the first N fields\n"
+#~ " -i, --ignore-case ignore differences in case when comparing\n"
+#~ " -s, --skip-chars=N avoid comparing the first N characters\n"
+#~ " -u, --unique only print unique lines\n"
+#~ " -w, --check-chars=N compare no more than N characters in lines\n"
+#~ " -N same as -f N\n"
+#~ " +N same as -s N (obsolescent; will be withdrawn)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "A field is a run of whitespace, then non-whitespace characters.\n"
+#~ "Fields are skipped before chars.\n"
+#~ msgstr ""
+#~ " Ze v¹ech po sobì jdoucích stejných vstupních øádkù, vypí¹e na výstup "
+#~ "v¾dy\n"
+#~ "pouze jeden. Implicitnì je jako VSTUP brán standardní vstup a jako "
+#~ "VÝSTUP\n"
+#~ "standardní výstup.\n"
+#~ "\n"
+#~ " -c, --count pøed ka¾dý øádek vlo¾í poèet opakování\n"
+#~ " -d, --repeated vypisuje pouze opakující se øádky\n"
+#~ " -D, --all-repeated vypisuje v¹echny opakující se øádky\n"
+#~ " -f, --skip-fields=N neporovnává prvních N polo¾ek\n"
+#~ " -i, --ignore-case ignoruje rozdíl mezi malými a velkými písmeny\n"
+#~ " -s, --skip-chars=N neporovnává prvních N znakù\n"
+#~ " -u, --unique vypisuje pouze neopakující se øádky\n"
+#~ " -w, --check-chars=N porovnává nejvý¹e N prvních znakù ka¾dého øádku\n"
+#~ " -N stejné jako -f N\n"
+#~ " +N stejné jako -s N (zastaralé; bude odstranìno)\n"
+#~ " --help vypí¹e tuto nápovìdu a skonèí\n"
+#~ " --version vypí¹e oznaèení verze a skonèí\n"
+#~ "\n"
+#~ " Jako polo¾ka je chápán neprázdný øetìzec znakù, které nejsou mezerami "
+#~ "nebo\n"
+#~ "tabelátory. Polo¾ky jsou oddìleny mezerami a tabelátory. Pokud mají být\n"
+#~ "pøeskoèeny polo¾ky a znaky zároveò (-f, -s), pak jsou nejdøíve "
+#~ "pøeskoèeny\n"
+#~ "polo¾ky.\n"
diff --git a/po/da.gmo b/po/da.gmo
new file mode 100644
index 0000000..0b2645e
--- /dev/null
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
new file mode 100644
index 0000000..c64b1ec
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,10327 @@
+# Danish messages for core-utils.
+# Copyright (C) 1996 Free Software Foundation, Inc.
+# Keld Jørn Simonsen <keld@dkuug.dk>, 2000-2003.
+#
+# Review 2003-03-26 Ole Laursen <olau@hardworking.dk>
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 4.5.11\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2003-03-30 19:53+0200\n"
+"Last-Translator: Keld Jørn Simonsen <keld@dkuug.dk>\n"
+"Language-Team: Danish <dansk@klid.dk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "sætter adgangsrettigheder på %s"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "sætter adgangsrettigheder på %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "ugyldigt argument %s for %s"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "flertydigt argument %s til %s"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Gyldige argumenter er: "
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "fejl ved skrivning"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "ukendt systemfejl"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "kan ikke udføre stat() %s"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "almindelig tom fil"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "almindelig fil"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "katalog"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "blokspecialfil"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "tegnspecialfil"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "fifo"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "symbolsk lænke"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "sokkel"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "meddelelseskø"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "semafor"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "delt hukommelsesobjekt"
+
+#: lib/file-type.c:69
+#, fuzzy
+msgid "typed memory object"
+msgstr "delt hukommelsesobjekt"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "mærkelig fil"
+
+#: lib/gai_strerror.c:44
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "fifo-filer er ikke understøttet"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "fifo-filer er ikke understøttet"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr ""
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "fifo-filer er ikke understøttet"
+
+#: lib/gai_strerror.c:54
+#, fuzzy
+msgid "System error"
+msgstr "fejl ved skrivning"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+#, fuzzy
+msgid "Unknown error"
+msgstr "ukendt systemfejl"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: flag '%s' er flertydigt\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: flag '--%s' tillader ikke et argument\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: flag '%c%s' tillader ikke et argument\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: flag '%s' kræver et argument\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: ugyldigt flag '--%s'\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: ugyldigt flag '%c%s'\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: ulovligt flag -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ugyldigt flag -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: flag kræver et argument -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: flag '-W %s' er flertydigt\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: flag '-W %s' tillader ikke et argument\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "blokstørrelse"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "kan ikke ændre adgangsrettigheder på %s"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "kan ikke oprette katalog %s"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "hukommelsen opbrugt"
+
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr "Mislykkedes med at returnere til oprindeligt arbejdskatalog"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "Mislykkedes med at returnere til oprindeligt arbejdskatalog"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "'"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "'"
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "%s: omdøbt til %s"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: ugyldigt regulært udtryk: %s"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "ugyldig tegnklasse '%s'"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "hukommelsen opbrugt"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: ugyldigt regulært udtryk: %s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "fejl i søgning med regulært udtryk"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "%s: ugyldigt regulært udtryk: %s"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "fejl i søgning med regulært udtryk"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr ""
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr ""
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[YyJj]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "iconv-funktion ikke brugelig"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "iconv-funktion ikke til stede"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "tegn uden for område"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "kan ikke konvertere U+%04X til lokalt tegnsæt"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "Kan ikke konvertere U+%04X til lokalt tegnsæt: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "ugyldig bruger"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "ugyldig gruppe"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "ugyldig bruger"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+#, fuzzy
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"Dette program er frit programmel. Du kan redistribuere det og/eller\n"
+"ændre det under betingelserne givet i 'GNU General Public License' som\n"
+"udgivet af Free Software Foundation - enten version 2, eller (efter eget\n"
+"valg) en hvilken som helst senere version.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Skrevet af %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Skrevet af %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, fuzzy, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Skrevet af %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr "Skrevet af %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr "Skrevet af %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xfts.c:58
+#, fuzzy, c-format
+msgid "invalid argument: %s"
+msgstr "ugyldigt argument '%s'"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "strengsammenligning mislykkedes"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Sæt LC_ALL='C' for at omgå problemet."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "De sammenlignede strenge var '%s' og '%s'."
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "strengsammenligning mislykkedes"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "ugyldig dato '%s'"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "ugyldig tegnklasse '%s'"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s er for stor"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Prøv '%s --help' for mere information.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr " --version vis versionsinformation og afslut\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Hvis ingen FIL er angivet, eller FIL er -, læses fra standard-ind.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Rapportér fejl til <%s>.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "læsefejl"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "ugyldigt tal"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "ugyldig tabulatorstørrelse %s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, fuzzy, c-format
+msgid "extra operand %s"
+msgstr "ekstra operand '%s'"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "lukker standard-ind"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Brug: %s NAVN [SUFFIKS]\n"
+" eller: %s FLAG\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Udskriv NAVN med eventuelle indledende katalog-komponenter fjernet.\n"
+"Hvis SUFFIKS er angivet, fjernes også afsluttende SUFFIKS.\n"
+"\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, fuzzy, c-format
+msgid "missing operand"
+msgstr "manglende argument efter '%s'"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Brug: %s [FLAG] [FIL]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"Flet FILer eller standard-ind, til standard-ud.\n"
+"\n"
+" -A, --show-all samme som -vET\n"
+" -b, --number-nonblank nummerér ikke-blanke ud-linjer\n"
+" -e samme som -vE\n"
+" -E, --show-ends skriv $ i slutningen af hver linje\n"
+" -n, --number nummerér alle ud-linjer\n"
+" -s, --squeeze-blank aldrig mere end én blank linje\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t samme som -vT\n"
+" -T, --show-tabs vis tabulatorer som ^I\n"
+" -u (ignoreret)\n"
+" -v, --show-nonprinting brug ^ og M- notation, undtagen for LFD og TAB\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+#: src/cat.c:333
+#, fuzzy, c-format
+msgid "cannot do ioctl on %s"
+msgstr "kan ikke lave ioctl på %s"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "standard-ud"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: indfil er udfil"
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "ugyldig gruppe %s"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Brug: %s [FLAG]... GRUPPE FIL...\n"
+" eller: %s [FLAG]... --reference=RFIL FIL...\n"
+
+#: src/chgrp.c:117
+#, fuzzy
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Ændr gruppemedlemskab af hver FIL til GRUPPE.\n"
+"\n"
+" -c, --changes som verbose, men fortæl kun om ændringer\n"
+" --dereference ændr referent for hver symbolsk lænke i stedet "
+"for\n"
+" den symbolske lænke selv\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+#, fuzzy
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference ændr symbolske lænker i stedet for refererede "
+"filer\n"
+" (kun for systemer der kan ændre ejerskabet af\n"
+" en symlænke)\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chgrp.c:134
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet undertryk de fleste fejlmeldinger\n"
+" --reference=RFIL brug RFIL's gruppe i stedet for at den angivne\n"
+" GRUPPE-værdi\n"
+" -R, --recursive ændr filer og kataloger rekursivt (inkl. "
+"underkataloger)\n"
+" -v, --verbose vis en meddelelse for hver fil som behandles\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr ""
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, fuzzy, c-format
+msgid "missing operand after %s"
+msgstr "manglende argument efter '%s'"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "Kunne ikke hente attributter for %s"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "henter nye attributter for %s"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "hverken symbolsk lænke %s eller referent er blevet ændret\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "tilstand for %s ændret til %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "kunne ikke ændre tilstand for %s til %04lo (%s)\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "tilstand for %s beholdt som %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "kan ikke tilgå %s"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "kan ikke læse katalog %s"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "ændrer rettigheder på %s"
+
+#: src/chmod.c:286
+#, fuzzy, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "sætter adgangsrettigheder på %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, fuzzy, c-format
+msgid "fts_read failed"
+msgstr "læsefejl"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Brug: %s [FLAG]... TILSTAND[,TILSTAND]... FIL...\n"
+" eller: %s [FLAG]... OKTAL-TILSTAND FIL...\n"
+" eller: %s [FLAG]... --reference=RFIL FIL...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chmod.c:360
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+"Ændr tilstanden for hver FIL til TILSTAND.\n"
+"\n"
+" -c, --changes som verbose, men siger kun noget ved ændringer\n"
+" -f, --silent, --quiet undertryk de fleste fejlmeldinger\n"
+" -v, --verbose giv en meddelelse for hver fil som behandles\n"
+" --reference=RFIL brug RFIL's tilstand i stedet for TILSTAND-"
+"værdier\n"
+" -R, --recursive ændr filer og kataloger rekursivt (med "
+"underkataloger)\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr ""
+
+#: src/chmod.c:510
+#, fuzzy, c-format
+msgid "invalid mode: %s"
+msgstr "ugyldig rettighed %s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "ændrede ejer af %s til %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "ændrede gruppe for %s til %s\n"
+
+#: src/chown-core.c:149
+#, fuzzy, c-format
+msgid "no change to ownership of %s\n"
+msgstr "ændrer ejerskab for %s"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "kunne ikke ændre ejerskab på %s til %s\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "kunne ikke ændre gruppe for %s til %s\n"
+
+#: src/chown-core.c:154
+#, fuzzy, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "kunne ikke ændre ejerskab på %s til %s\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "ejer af %s beholdt som %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "gruppe for %s beholdt som %s\n"
+
+#: src/chown-core.c:159
+#, fuzzy, c-format
+msgid "ownership of %s retained\n"
+msgstr "ejer af %s beholdt som %s\n"
+
+#: src/chown-core.c:344
+#, fuzzy, c-format
+msgid "cannot dereference %s"
+msgstr "kan ikke fjerne %s"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "ændrer ejerskab for %s"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "ændrer gruppe for %s"
+
+#: src/chown.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Brug: %s [FLAG]... GRUPPE FIL...\n"
+" eller: %s [FLAG]... --reference=RFIL FIL...\n"
+
+#: src/chown.c:98
+#, fuzzy
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Ændr ejer og/eller gruppe for hver FIL til EJER og/eller GRUPPE.\n"
+"\n"
+" -c, --changes som verbose, men rapportér kun når en ændring er "
+"gjort\n"
+" --dereference foretag ændringerne på referenten af hver symbolsk\n"
+" lænke i stedet for den symbolske lænke selv\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=AKTUELLE_EJER:AKTUELLE_GRUPPE\n"
+" ændr kun ejer og/eller gruppe for hver fil, hvis\n"
+" filens aktuelle ejer eller gruppe er lig dem "
+"angivet\n"
+" her. Ejer eller gruppe kan udelades, i så fald er "
+"overensstemmelse\n"
+" ikke krævet for den udeladte attribut.\n"
+
+#: src/chown.c:122
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet undertryk de fleste fejlmeldinger\n"
+" --reference=RFIL brug ejer og gruppe af RFIL i stedet for at bruge\n"
+" de angivne EJER:GRUPPE-værdier\n"
+" -R, --recursive arbejd på filer og kataloger rekursivt\n"
+" -v, --verbose vis oplysninger om hver eneste fil der behandles\n"
+
+#: src/chown.c:144
+#, fuzzy
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"Ejer forbliver uændret hvis udeladt. Gruppe forbliver uændret hvis andet\n"
+"ikke er angivet, men bliver sat til det samme som logind-gruppen hvis det "
+"er\n"
+"angivet med et ':'. EJER og GRUPPE kan være numerisk eller symbolsk.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Brug: %s NYROD [KOMMANDO...]\n"
+"eller: %s FLAG\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"Kør KOMMANDO med rod-kataloget sat til NYROD.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"Hvis ingen kommando er angivet, kør '${SHELL} -i' (default: /bin/sh).\n"
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "kan ikke ændre rod-kataloget til %s"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "kan ikke ændre til rod-katalog"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, fuzzy, c-format
+msgid "cannot run command %s"
+msgstr "kan ikke aflænke %s"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: fil for lang"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Brug: %s [FIL]...\n"
+" eller: %s [FLAG]...\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"Udskriv CRC-kontrolsum og byteantal for hver FIL.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Brug: %s [FLAG]... FIL1 FIL2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr ""
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+
+#: src/comm.c:86
+#, fuzzy
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"Sammenlign de sorterede filer VENSTRE_FIL og HØJRE_FIL linje for linje.\n"
+"\n"
+" -1 se bort fra linjer som kun findes i den venstre fil\n"
+" -2 se bort fra linjer som kun findes i den højre fil\n"
+" -3 se bort fra linjer som findes i begge filer\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "kunne ikke bevare ejerskab for %s"
+
+#: src/copy.c:222
+#, fuzzy, c-format
+msgid "failed to lookup file %s"
+msgstr "kunne ikke beholde tider for %s"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "kunne ikke bevare forfatter af %s"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "kan ikke åbne %s til læsning"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "kan ikke udføre fstat() %s"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "overspringer fil %s, da den blev erstattet mens den blev kopieret"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "kan ikke fjerne %s"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "fjernede %s\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "kan ikke oprette almindelig fil %s"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "læser %s"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "kan ikke udføre lseek() %s"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "skriver %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "beholder tider for %s"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "lukker %s"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: overskriv %s, uden hensyn til tilstand %04lo?"
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: overskriv %s? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (sikkerhedskopi: %s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "udelader katalog %s"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "advarsel: kildefil %s er angivet mere end én gang"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s og %s er den samme fil"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "kan ikke overskrive ikke-katalog %s med katalog %s"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "vil ikke overskrive netop oprettet %s med %s"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "kan ikke overskrive katalog %s med ikke-katalog"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "kan ikke flytte katalog til ikke-katalog: %s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "sikkerhedskopi af %s vil overskrive kildefil; %s er ikke flyttet"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "sikkerhedskopi af %s vil overskrive kildefil; %s er ikke kopieret"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "kan ikke sikkerhedskopiere %s"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "kan ikke kopiere et katalog %s til sig selv %s"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "vil ikke oprette hård lænke %s til katalog %s"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "kan ikke oprette hård lænke %s til %s"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "kan ikke flytte %s til et underkatalog af sig selv, %s"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "kan ikke flytte %s til %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr "flytning mellem enheder mislykkedes: %s til %s; kan ikke fjerne målet"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "kan ikke kopiere cyklisk symbolsk lænke %s"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr "%s: kan kun oprette relative symbolske lænker i aktuelt katalog"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "kan ikke oprette symbolsk lænke %s til %s"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "kan ikke oprette lænke %s"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "kan ikke oprette fifo %s"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "kan ikke oprette specialfil %s"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "kan ikke læse symbolsk lænke %s"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "kan ikke oprette symbolsk lænke %s"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s har ukendt filtype"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "kan ikke genoprette sikkerhedskopi af %s"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (genopret sikkerhedskopi)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Brug: %s [FLAG]... KILDE MÅL\n"
+" eller: %s [FLAG]... KILDE... KATALOG\n"
+" eller: %s [FLAG]... --target-directory=KATALOG KILDE...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Kopiér KILDE til MÅL eller en eller flere KILDE'r til KATALOG.\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Obligatoriske argumenter til lange flag er også obligatoriske for de korte.\n"
+
+#: src/cp.c:170
+#, fuzzy
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive det samme som -dpR\n"
+" --backup[=KONTROL] lav sikkerhedskopi af hver eksisterende "
+"målfil\n"
+" -b ligesom --backup, men tager ikke noget "
+"argument\n"
+" --copy-contents kopiér indholdet af specialfiler når "
+"rekursiv\n"
+" -d det samme som --no-dereference --"
+"preserve=link\n"
+
+#: src/cp.c:177
+#, fuzzy
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" --no-dereference følg aldrig symbolske henvisninger\n"
+" -f, --force hvis en eksisterende målfil ikke kan åbnes, "
+"så\n"
+" fjern den og prøv igen\n"
+" -i, --interactive bed om bekræftelse før overskrivning af "
+"filer\n"
+" -H følg kommandolinje symbolske henvisninger\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+#, fuzzy
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -l, --link opret lænker i stedet for at kopiere\n"
+" -L, --dereference følg altid symbolske henvisninger\n"
+" -p det samme som --preserve=mode,ownership,"
+"timestamps\n"
+" --preserve[ATTR_LIST] bevar filattributter om muligt (standard:\n"
+" 'mode','ownership','timestamps'), om "
+"muligt\n"
+" yderligere attributter: 'links', 'all'\n"
+
+#: src/cp.c:196
+#, fuzzy
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=ATTR_LIST bevar ikke de angivne attributter\n"
+" --parents tilføj kildens søgesti efter KATALOG\n"
+" -P det samme som '--no-dereference'\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive kopiér kataloger rekursivt\n"
+" --remove-destination fjern hver eksisterende målfil før forsøg på "
+"at\n"
+" åbne den (sammenlign med --force)\n"
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --reply={yes,no,query} angiv hvorledes forespørgsel om eksisterende "
+"målfil\n"
+" skal behandles\n"
+" --sparse=NÅR bestem oprettelsen af tynde filer\n"
+" --strip-trailing-slashes fjern eventuelle skråstreger i slutningen "
+"af \n"
+" hvert KILDE-argument\n"
+
+#: src/cp.c:210
+#, fuzzy
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link opret symbolske lænker i stedet for "
+"kopiering\n"
+" -S, --suffix=ENDELSE tilsidesæt den sædvanlige sikkerhedskopi-"
+"endelse\n"
+" --target-directory=KATALOG flyt alle KILDE-argumenter til KATALOG\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update kopiér kun hvis KILDE-filen er nyere end\n"
+" målfilen, eller når målfilen ikke findes\n"
+" -v, --verbose forklar hvad der sker\n"
+" -x, --one-file-system bliv på dette filsystem\n"
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"Normalt bliver KILDE-filer med huller opdaget ved hjælp af en enkel "
+"heuristik,\n"
+"og den korresponderende MÅL-fil bliver også lavet med huller. Det er den\n"
+"opførsel som er givet med --sparse=auto. Angiv --sparse=always for at\n"
+"oprette en MÅL-fil med huller i, hvis KILDE-filen indeholder en "
+"tilstrækkeligt\n"
+"lang sekvens med nul-tegn.\n"
+"Brug --sparse=never for at forhindre oprettelse af filer med huller.\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Endelsen for sikkerhedskopiering er '~', med mindre andet er angivet med\n"
+"--suffix eller SIMPLE_BACKUP_SUFFIX. Versionskontrolmetoden kan vælges med\n"
+"--backup flaget eller vha. miljøvariabelen VERSION_CONTROL. Gyldige værdier "
+"er:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off lav aldrig sikkerhedskopier (selvom --backup er givet)\n"
+" numbered, t lav nummererede sikkerhedskopier\n"
+" existing, nil nummererede, hvis nummererede sikkerhedskopier "
+"eksisterer,\n"
+" ellers enkle sikkerhedskopier\n"
+" simple, never lav altid enkle sikkerhedskopier\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Som et specialtilfælde laver cp en sikkerhedskopi af KILDE når flagene for\n"
+"'force' og 'backup' er angivet, og KILDE og MÅL er samme navn for en "
+"eksisterende,\n"
+"regulær fil.\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "kunne ikke beholde tider for %s"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "kan ikke beholde adgangsrettigheder på %s"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "kan ikke oprette katalog %s"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s eksisterer, men er ikke et katalog"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "tilgår %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, fuzzy, c-format
+msgid "missing file operand"
+msgstr "manglende fil-argument"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, fuzzy, c-format
+msgid "missing destination file operand after %s"
+msgstr "manglende målfil"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, fuzzy, c-format
+msgid "target %s is not a directory"
+msgstr "angivet mål '%s' er ikke et katalog"
+
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "når stier beholdes, skal målet være et katalog"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr ""
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, fuzzy, c-format
+msgid "multiple target directories specified"
+msgstr "flere -l eller -t-flag angivet"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "kan ikke lave både hårde og symbolske lænker"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "type af sikkerhedskopi"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "inddata forsvandt"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: linjenummer uden for område"
+
+#: src/csplit.c:709
+#, fuzzy, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: '%s': linjenummer uden for område"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, fuzzy, c-format
+msgid " on repetition %s\n"
+msgstr " ved %d. gentagelse\n"
+
+#: src/csplit.c:755
+#, fuzzy, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: '%s': ingen træffer fundet"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "fejl i søgning med regulært udtryk"
+
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "skrivefejl for \"%s\""
+
+#: src/csplit.c:1060
+#, fuzzy, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: heltal forventedes efter \"%c\""
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: '}' er nødvendig i gentagelsesantal"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: heltal kræves mellem '{' og '}'"
+
+#: src/csplit.c:1113
+#, fuzzy, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: afslutningende skilletegn '%c' mangler"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: ugyldigt regulært udtryk: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: ugyldigt mønster"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: linjenummeret skal være større end nul"
+
+#: src/csplit.c:1172
+#, fuzzy, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "linjenummer '%s' er mindre end foregående linjenummer, %s"
+
+#: src/csplit.c:1178
+#, fuzzy, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "advarsel: linjenummer '%s' er det samme som foregående"
+
+#: src/csplit.c:1231
+#, fuzzy, c-format
+msgid "invalid format width"
+msgstr "ugyldigt datoformat %s"
+
+#: src/csplit.c:1252
+#, fuzzy, c-format
+msgid "invalid format precision"
+msgstr "ugyldig præcision: %s"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "manglende konverteringsspecifikator i suffiks"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "ugyldig konverteringsspecifikator i suffiks: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "ugyldig konverteringsspecifikator i suffiks: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "for mange %%-konverteringsspecifikationer i suffiks"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "manglende %%-konverteringsspecifikation i suffiks"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: ugyldigt tal"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Brug: %s [FLAG]... FIL MØNSTER...\n"
+
+#: src/csplit.c:1478
+#, fuzzy
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"Udskriv dele af FIL separeret af MØNSTER til filerne 'xx01', 'xx02',...,\n"
+"og vis antal byte for hver del på standard-ud.\n"
+"\n"
+
+#: src/csplit.c:1486
+#, fuzzy, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=FORMAT brug sprintf-FORMAT i stedet for %d\n"
+" -f, --prefix=PRÆFIKS brug PRÆFIKS i stedet for 'xx'\n"
+" -k, --keep-files fjern ikke udfiler ved fejl\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=CIFRE brug angivet antal cifre i stedet for 2\n"
+" -s, --quiet, --silent vis ikke størrelsen af udfilerne\n"
+" -z, --elide-empty-files fjern tomme udfiler\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"Læs standard-ind når FIL er '-'. Hvert MØNSTER kan være:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" HELTAL kopier frem til, men ikke med, angivet linjenummer\n"
+" /REGUDT/[POSITION] kopier frem til, men ikke med, en 'passende' linje\n"
+" %%REGUDT%%[POSITION] hop frem til, men ikke med, en 'passende' linje\n"
+" {HELTAL} gentag forrige mønster så mange gange som angivet\n"
+" {*} gentag forrige mønster så mange gange som muligt\n"
+"\n"
+"En linje-POSITION skal være '+' eller '-' fulgt af et positivt heltal\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Brug: %s [FLAG]... [FIL]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"Udskriv valgte dele af linjerne fra hver FIL til standard-ud.\n"
+"\n"
+
+#: src/cut.c:199
+#, fuzzy
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=LISTE udskriv kun disse byte\n"
+" -c, --characters=LISTE udskriv kun disse tegn\n"
+" -d, --delimiter=SKILLE brug SKILLE i stedet for TAB som skilletegn\n"
+
+#: src/cut.c:204
+#, fuzzy
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=LISTE udskriv kun disse felter; udskriv også enhver\n"
+" linje som ikke indeholder et skilletegn, "
+"medmindre\n"
+" flaget -s er angivet\n"
+" -n (ignoreret)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited udskriv ikke linjer som ikke indeholder "
+"skilletegn\n"
+" --output-delimiter=STRENG brug STRENG som forvalgt ud-skilletegn.\n"
+" forvalgt er at bruge ind-skilletegnet\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+#, fuzzy
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Brug én, og kun én af -b, -c og -f. Hver LISTE er lavet af en\n"
+"'serie', eller mange serier separeret af komma. Hver serie er en af:\n"
+"\n"
+" N N'te byte, tegn eller felt, talt fra 1\n"
+" N- fra N'te byte, tegn eller felt, til slutningen af linjen\n"
+" N-M fra N'te til M'te (til og med) byte, tegn eller felt\n"
+" -M fra første til M'te (til og med) byte, tegn eller felt\n"
+"\n"
+"Hvis ingen FIL er angivet, eller FIL er -, læses fra standard-ind.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "ugyldig byte- eller feltliste"
+
+#: src/cut.c:469
+#, fuzzy, c-format
+msgid "byte offset %s is too large"
+msgstr "%s er for stor"
+
+#: src/cut.c:472
+#, fuzzy, c-format
+msgid "field number %s is too large"
+msgstr "felt-nummeret er nul"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "kun én slags liste må bruges"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "skilletegnet skal være et enkelt tegn"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "du skal angive en liste af byte, tegn eller felt"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "et inddataskilletegn kan kun specificeres ved arbejde på felter"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"fjernelse af linjer uden skilletegn giver kun mening hvis man opererer\n"
+"\tmed felter"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "feltliste mangler"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "positionsliste mangler"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Brug: %s [FLAG]... [+FORMAT]\n"
+" eller: %s [FLAG] [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+
+#: src/date.c:143
+#, fuzzy
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+" -r, --reference=FIL vis sidste ændringsdato for FIL\n"
+" -R, --rfc-822 udskriv en datostreng i henhold til RFC-822\n"
+" -s, --set=STRENG sæt tiden som er beskrevet af STRENG\n"
+" -u, --utc, --universal udskriv eller sæt 'Coordinated Universal Time'\n"
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+#, fuzzy
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"\n"
+"FORMAT styrer udskriften. Den eneste gyldige flag for den anden\n"
+"form specificerer Koordineret Universel Tid (UTC). Fortolkede sekvenser er:\n"
+"\n"
+" %% et egentligt %\n"
+" %a lokaltilrettet ugedagsnavn (man..søn)\n"
+
+#: src/date.c:167
+#, fuzzy
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A ugedag ifølge lokale (mandag-søndag), fuldstændigt (variabel længde)\n"
+" %b måned ifølge lokal (jan-dec), forkortet\n"
+" %B måned ifølge lokal (januar-december), fuldstændigt (variabel længde)\n"
+" %c dato og tid (som lør 04 nov 12:02:33 CET 1989)\n"
+
+#: src/date.c:173
+#, fuzzy
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C århundrede (heltalsdelen af år divideret med 100) [00-99]\n"
+" %d dag i måned (01-31)\n"
+" %D dato ifølge amerikansk format (mm/dd/åå)\n"
+" %e dag i måned, indledende nul erstattet med blanktegn ( 1-31)\n"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h samme som %b\n"
+" %H time (00-23)\n"
+" %I time (01-12)\n"
+" %j dag på året (001-366)\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k time ( 0-23)\n"
+" %l time ( 1-12)\n"
+" %m måned (01-12)\n"
+" %M minut (00-59)\n"
+
+#: src/date.c:196
+#, fuzzy
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+" %n en ny linje\n"
+" %N nanosekunder (000000000..999999999)\n"
+" %p FM eller EM i store bogstaver ifølge lokale (tom i mange lokaler)\n"
+" %P fm eller em i små bogstaver ifølge lokale (tom i mange lokaler)\n"
+" %r tid, 12-timers (hh:mm:ss [FE]M)\n"
+" %R tid, 2stimers (hh:mm)\n"
+" %s sekunder siden \"1970-01-01 00:00:00 UTC\" (en GNU-tilføjelse)\n"
+
+#: src/date.c:205
+#, fuzzy
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+" %S sekunder (00-60), 60 behøves for at klare et skudsekund\n"
+" %t en vandret tabulator\n"
+" %T tid, 24-timers (hh:mm:ss)\n"
+" %u dag i ugen (1-7), 1 betyder mandag\n"
+
+#: src/date.c:211
+#, fuzzy
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U ugenummer, med søndag som første dag i ugen (00-53)\n"
+" %V ugenummer, med mandag som første dag i ugen (01-53)\n"
+" %w ugedag (0-6); søndag repræsenteres som 0\n"
+" %W ugenummer, med mandag som første dag i ugen (00-53)\n"
+
+#: src/date.c:217
+#, fuzzy
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x dato på lokaleformat (åå-mm-dd)\n"
+" %X tid på lokaleformat (%H:%M:%S)\n"
+" %y sidste to cifre i årstallet (00-99)\n"
+" %Y år (1970-)\n"
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "standard-ind"
+
+#: src/date.c:297 src/date.c:517
+#, fuzzy, c-format
+msgid "invalid date %s"
+msgstr "ugyldig dato '%s'"
+
+#: src/date.c:408 src/date.c:442
+#, fuzzy, c-format
+msgid "multiple output formats specified"
+msgstr "flere -l eller -t-flag angivet"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "flagene for at angive datoer til udskriving kan ikke bruges sammen"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr "flagene for at udskrive og sætte tiden kan ikke bruges sammen"
+
+#: src/date.c:448
+#, fuzzy, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"argumentet '%s' mangler et indledende '+';\n"
+"Når man bruger et flag for at angive datoer skal eventuelle\n"
+"andre typer argumenter bestå af en formatstreng som begynder med '+'"
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "kan ikke sætte dato"
+
+#: src/date.c:548 src/du.c:425
+#, fuzzy, c-format
+msgid "time %s is out of range"
+msgstr "filposition uden for interval"
+
+#: src/dd.c:404
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Brug: %s [STRENG]...\n"
+" eller: %s FLAG\n"
+
+#: src/dd.c:409
+#, fuzzy
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"Kopiér en fil med konvertering og formatering som angivet.\n"
+"\n"
+" bs=BYTE tving ibs=BYTE og obs=BYTE\n"
+" cbs=BYTE konvertér BYTE byte ad gangen\n"
+" conv=NØGLEORD konvertér filen vha. en liste med kommaadskilte nøgleord\n"
+" count=BLOKKE kopiér kun BLOKKE indblokke\n"
+" ibs=BYTE læs BYTE byte ad gangen\n"
+
+#: src/dd.c:418
+#, fuzzy
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=FIL læs fra FIL i stedet for stdin\n"
+" obs=BYTE skriv BYTE byte ad gangen\n"
+" of=FIL skriv til FIL i stedet for stdout\n"
+" seek=BLOKKE udelad BLOKKE blokke med obs-størrelse fra\n"
+" begyndelsen af uddata\n"
+" skip=BLOKKE udelad BLOKKE blokke med ibs-størrelse fra\n"
+" begyndelsen af inddata\n"
+
+#: src/dd.c:428
+#, fuzzy
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"BLOKKE og BYTE kan have følgende multiplikative suffikser:\n"
+"xM M, c 1, w 2, b 512, kD 1000, k 1024, MD 1.000.000, M 1.048.576,\n"
+"GD 1.000.000.000, G 1.073.741.824, og så videre for T, P, E, Z og Y.\n"
+"Hvert NØGLEORD kan være:\n"
+"\n"
+
+#: src/dd.c:437
+#, fuzzy
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii fra EBCDIC til ASCII\n"
+" ebcdic fra ASCII til EBCDIC\n"
+" ibm fra ASCII til alterneret EBCDIC\n"
+" block udfyld felter afsluttet med linjeskift med mellemrum til\n"
+" cbs-størrelse\n"
+" unblock erstat mellemrum med linjeskift i blokke med størrelse\n"
+" som givet i cbs\n"
+" lcase lav store bogstaver om til små\n"
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "%s: angivet målkatalog er ikke et katalog"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "afkortet blok"
+msgstr[1] "afkortet blok"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr ""
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ""
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "lukker indfil %s"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "lukker uddatafil %s"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "skriver til %s"
+
+#: src/dd.c:886
+#, fuzzy, c-format
+msgid "unrecognized operand %s"
+msgstr "ukendt flag %s"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "ugyldig konvertering: %s"
+
+#: src/dd.c:900
+#, fuzzy, c-format
+msgid "invalid input flag: %s"
+msgstr "ugyldig linjelængde: \"%s\""
+
+#: src/dd.c:903
+#, fuzzy, c-format
+msgid "invalid output flag: %s"
+msgstr "ugyldigt gruppenavn %s"
+
+#: src/dd.c:906
+#, fuzzy, c-format
+msgid "invalid status flag: %s"
+msgstr "ugyldigt datoformat %s"
+
+#: src/dd.c:942
+#, fuzzy, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "ukendt flag %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "ugyldigt antal %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#: src/dd.c:973
+#, fuzzy, c-format
+msgid "cannot combine block and unblock"
+msgstr "kan ikke undlade både bruger *og* gruppe"
+
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "kan ikke sammenligne filnavnene %s og %s"
+
+#: src/dd.c:977
+#, fuzzy, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "kan ikke kombinere signal med -l eller -t"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"advarsel: omgår lseek-kernefejl for fil (%s)\n"
+" med mt_type=0x%0lx -- se <sys/mtio.h> for listen af typer"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, fuzzy, c-format
+msgid "%s: cannot seek"
+msgstr "%s: kan ikke slette"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "advarsel: ugyldig bredde %lu; bruger %d i stedet"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr ""
+
+#: src/dd.c:1376
+#, fuzzy, c-format
+msgid "setting flags for %s"
+msgstr "sætter tider for %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr ""
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr ""
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "åbner %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, fuzzy, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "passerer forbi %s byte i uddatafil %s"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "Filsystem Type"
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "Filsystem "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " Inoder IBrugt IFri IBrug%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Størr Brugt Tilb Brug%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Størr Brugt Tilb Brug"
+
+#: src/df.c:165
+#, fuzzy, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %4s-blokke Brugt Tilbage Kapacitet"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " %4s-blokke Brugt Tilbage Brug%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Monteret på\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "kan ikke finde aktuelt katalog"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "kan ikke gå til kataloget %s"
+
+#: src/df.c:498
+#, fuzzy, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "kan ikke finde aktuelt katalog"
+
+#: src/df.c:741
+#, fuzzy
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"Vis information om filsystemet som FIL ligger på, eller normalt alle "
+"filsystemer.\n"
+"\n"
+
+#: src/df.c:749
+#, fuzzy
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all medtag filsystemer med 0 blokke\n"
+" -B, --block-size=STR brug blokke på STR byte\n"
+" -h, --human-readable skriv størrelser på en læsevenlig form \n"
+" (f.eks. 1K 234M 2G)\n"
+" -H, --si det samme, men brug 1000 som grundtal, ikke 1024\n"
+
+#: src/df.c:755
+#, fuzzy
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes skriv inodeinformation i stedet for blokforbrug\n"
+" -k, --kilobytes ligesom --block-size=1024\n"
+" -l, --local begræns til lokale filsystemer\n"
+" --no-sync kør ikke sync før hentning af information "
+"(standard)\n"
+
+#: src/df.c:761
+#, fuzzy
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability brug POSIX-format for uddata\n"
+" --sync kør sync før hentning af oplysninger om forbrug\n"
+" -t, --type=TYPE vis kun filsystemer af typen TYPE\n"
+" -T, --print-type vis filsystemtype\n"
+" -x, --exclude-type=TYPE vis kun filsystemer som ikke er af typen TYPE\n"
+" -v (ignoreret)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+#, fuzzy
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"STØRRELSE kan være (eller kan være et heltal muligvis fulgt af) en af de "
+"følgende:\n"
+"kB 1000, K 1024, MB 1.000.000 og M 1.048.576, og så videre for G, T, P, E, Z "
+"og Y.\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr ""
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "filsystem af typen %s er både valgt og udeladt"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Advarsel: "
+
+#: src/df.c:943
+#, fuzzy, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%s kan ikke læse tabellen over monterede filsystemer"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Brug: %s [FLAG]... [FIL]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Udskriv kommandoer for at sætte miljøvariablen LS_COLORS.\n"
+"\n"
+"Bestem ud-format:\n"
+" -b, --sh, --bourne-shell udskriv Bourne shell-kode for at sætte "
+"LS_COLORS\n"
+" -c, --csh, --c-shell udskriv C skal-kode for at sætte LS_COLORS\n"
+" -p, --print-data-base udskriv den interne database\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"Hvis FIL er angivet, læs den for at bestemme hvilke farver der skal bruges "
+"til\n"
+"hvilke filtyper og endelser. Ellers bliver en foroversat database brugt.\n"
+"For detaljer om formatet af disse filer kør 'dircolors --print-database'.\n"
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s:%lu: ugyldig linje; mangler andet element"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu: ukendt nøgleord %s"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<intern>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"flagene for at udskrive dircolors interne database og at vælge en\n"
+"skálsyntaks er gensidigt udelukkende"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "ingen SHELL-miljøvariabel, og ingen skal-type angivet med flag"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Brug: %s NAVN\n"
+" eller: %s FLAG\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"Udskriv NAVN med alt fra sidste '/' fjernet; Hvis NAVN ikke indeholder nogen "
+"'/'-er, udskriv '.' (for nuværende katalog).\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#: src/du.c:279 src/wc.c:108
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Brug: %s [FLAG]... GRUPPE FIL...\n"
+" eller: %s [FLAG]... --reference=RFIL FIL...\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"Opsummér diskforbrug for hver FIL, rekursivt for kataloger.\n"
+"\n"
+
+#: src/du.c:290
+#, fuzzy
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+" -a, --all medtag filer, ikke kun kataloger\n"
+" --apparent-size udskriv tilsyneladende størrelse i stedet for "
+"diskforbrug;\n"
+" selvom den tilsyneladende størrelse normalt er "
+"mindre,\n"
+" kan den være større på grund af huller i (tynde) "
+"filer,\n"
+" intern fragmentering, indirekte blokke og "
+"lignende\n"
+" -B, --block-size=STØR brug blokke på STØR byte\n"
+" -b, --bytes skriv størrelse i byte\n"
+" -c, --total vis totalsum\n"
+" -D, --dereference-args følg FIL'er når de er symbolske lænker\n"
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+#, fuzzy
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference følg alle symbolske lænker\n"
+" -S, --separate-dirs medtag ikke størrelsen på underkataloger\n"
+" -s, --summarize vis kun sum for hvert argument\n"
+
+#: src/du.c:323
+#, fuzzy
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system udelad kataloger på andre filsystemer\n"
+" -X FIL, --exclude-from=FIL udelad filer som svarer til et hvilket som\n"
+" helst mønster i FIL.\n"
+" --exclude=MØN udelad filer som svarer til MØN\n"
+" --max-depth=N vis kun totalsum for et katalog (eller fil, med --"
+"all)\n"
+" hvis der er N eller færre niveauer under "
+"kommandolinje-\n"
+" argumentet; --max-depth=0 er det samme som\n"
+" --summarize\n"
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "totalt"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "ugyldig største dybde %s"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr ""
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "kan ikke både summere og vise alle størrelser"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "advarsel: summering er det samme som at bruge --max-depth=0"
+
+#: src/du.c:884
+#, fuzzy, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "advarsel: summering er i konflikt med --max-depth=%d"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+#: src/du.c:960 src/wc.c:662
+#, fuzzy, c-format
+msgid "cannot read file names from %s"
+msgstr "kan ikke sammenligne filnavnene %s og %s"
+
+#: src/du.c:1000 src/du.c:1003
+#, fuzzy
+msgid "invalid zero-length file name"
+msgstr "ugyldigt gruppenavn %s"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Brug: %s [FLAG]... [STRENG]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+#: src/echo.c:80
+#, fuzzy
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"Uden -E vil følgende sekvenser blive forstået og indsat:\n"
+"\n"
+" \\NNN det tegn, hvis ASCII-værdi er NNN (oktalt)\n"
+" \\\\ omvendt skråstreg\n"
+" \\a advarsel (SIGNAL)\n"
+" \\b baktegn\n"
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c udelad linjeskift på slutningen\n"
+" \\f sideskift\n"
+" \\n ny linje\n"
+" \\r vognretur\n"
+" \\t vandret tabulator\n"
+" \\v lodret tabulator\n"
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Brug: %s [FLAG]... [-] [NAVN=VÆRDI]... [KOMMANDO [ARG]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Sæt hvert NAVN til VÆRDI fra miljøvariable og udfør KOMMANDO.\n"
+" -i, --ignore-environment start uden miljøvariable\n"
+" -u, --unset=NAVN fjern miljøvariablen NAVN\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"En - for sig selv implicerer -i. Hvis ingen KOMMANDO er angivet, udskriv\n"
+"det resulterende miljø.\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Konvertér tabulatorer i hver FIL til mellemrum, skriv til standard-ud.\n"
+"Hvis ingen FIL er angivet, eller FIL er -, læses fra standard-ind.\n"
+"\n"
+
+#: src/expand.c:123
+#, fuzzy
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial konvertér ikke tabulatorer efter ikke-blanke tegn\n"
+" -t, --tabs=TAL hav tabulatorer TAL tegn fra hinanden, ikke 8\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr " -t, --tabs=LISTE brug komma-separeret LISTE med tab-positioner\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, fuzzy, c-format
+msgid "tab stop is too large %s"
+msgstr "%s er for stor"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, fuzzy, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "tabulatorstørrelsen indeholder et ugyldigt tegn"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "tabulatorstørrelse kan ikke være 0"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "tabulatorstørrelser skal være stigende"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, fuzzy, c-format
+msgid "input line is too long"
+msgstr "%s: fil for lang"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Brug: %s UDTRYK\n"
+" eller: %s FLAG\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"\n"
+"Udskriv værdien på UDTRYK til standard-ud. En tom linje nedenfor adskiller "
+"grupper\n"
+"med voksende prioritet. UDTRYK kan være:\n"
+"\n"
+" ARG1 | ARG2 ARG1 hvis det hverken er nul eller 0, ellers ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 hvis intet af argumenterne er nul eller 0, ellers "
+"0\n"
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"\n"
+" ARG1 < ARG2 ARG1 er mindre end ARG2\n"
+" ARG1 <= ARG2 ARG1 er mindre end eller lig med ARG2\n"
+" ARG1 = ARG2 ARG1 er lig med ARG2\n"
+" ARG1 != ARG2 ARG1 er ikke lig med ARG2\n"
+" ARG1 >= ARG2 ARG1 er større end eller lig med ARG2\n"
+" ARG1 > ARG2 ARG1 er større end ARG2\n"
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+"\n"
+" ARG1 + ARG2 aritmetisk sum af ARG1 og ARG2\n"
+" ARG1 - ARG2 aritmetisk forskel mellem ARG1 og ARG2\n"
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+"\n"
+" ARG1 * ARG2 aritmetisk produkt af ARG1 og ARG2\n"
+" ARG1 / ARG2 aritmetisk kvotient af ARG1 divideret med ARG2\n"
+" ARG1 % ARG2 aritmetisk rest af ARG1 divideret med ARG2\n"
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"\n"
+" STRENG : REGUDTRYK forankret mønstersøgning efter REGUDTRYK i STRENG\n"
+"\n"
+" match STRENG REGUDTRYK samme som STRENG : REGUDTRYK\n"
+" subtr STRENG POS LÆNGDE delstreng af STRENG, POS regnes fra 1\n"
+" index STRENG BOGST index i STRENG hvor BOGST fandtes, eller 0\n"
+" length STRENG længden af STRENG\n"
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+" + ELEMENT tolk ELEMENT som en streng, selv om den er et\n"
+" nøgleord som \"match\" eller en operator som "
+"\"/\"\n"
+" ( UDTRYK ) værdien af UDTRYK\n"
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"Vær opmærksom på at mange operatorer skal beskyttes mod "
+"kommandofortolkeren,\n"
+"f.eks. med gåseøjne. Sammenligninger er aritmetiske hvis begge\n"
+"ARG'umenter er tal, ellers leksikografiske. Mønster-sammenligninger\n"
+"returnerer strengen som passede på mønstret mellem \\( og \\) eller nul.\n"
+"Hvis \\( og \\) ikke bruges, returneres antal tegn som passede eller 0.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "syntaksfejl"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "fejl i søgning med regulært udtryk"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "ikke-numerisk argument"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "deling med nul"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Brug: %s [TAL]...\n"
+" eller: %s FLAG\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"Udskriv primtalsfaktorerne for hvert TAL.\n"
+"\n"
+
+#: src/factor.c:85
+#, fuzzy
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+" Udskriv primtals-faktorerne til alle angivne heltal TAL. Hvis \n"
+" ingen argumenter er angivet på kommandolinjen læses de fra standard-ind.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s er for stor"
+
+#: src/factor.c:158
+#, fuzzy, c-format
+msgid "%s is not a valid positive integer"
+msgstr "'%s' er ikke et gyldig positivt heltal"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Brug: %s [-CIFRE] [FLAG]... [FIL]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"Omformatér hvert afsnit i FILerne, og skriv til standard-ud.\n"
+"Hvis ingen FIL er angivet, eller FIL er -, læses fra standard-ind.\n"
+"\n"
+
+#: src/fmt.c:282
+#, fuzzy
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin behold indrykning for de første to linjer\n"
+" -p, --prefix=STRENG sammensæt kun linjer som har STRENG som\n"
+" forstavelse\n"
+" -s, --split-only opdel lange linjer, men fyld ikke op\n"
+
+#: src/fmt.c:289
+#, fuzzy
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph indrykning for første linje er forskellig fra "
+"næste\n"
+" -u, --uniform-spacing et mellemrum mellem ord, to efter sætninger\n"
+" -w, --width=TAL maksimal linjelængde (ellers 75 kolonner)\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+
+#: src/fmt.c:400
+#, fuzzy, c-format
+msgid "invalid width: %s"
+msgstr "ugyldig linjelængde: \"%s\""
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"Ombryd linjerne i hver FIL (forvalgt standard-ind), og skriv til standard-"
+"ud\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes tæl byte i stedet for kolonner\n"
+" -s, --spaces ombryd ved mellemrum\n"
+" -w, --width=BREDDE brug BREDDE kolonner i stedet for 80\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "ugyldigt antal kolonner: \"%s\""
+
+#: src/head.c:113
+#, fuzzy
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv de første 10 linjer af hver FIL til standard-ud.\n"
+"Med mere end en FIL angivet udskrives filnavnet før hver FIL.\n"
+"Hvis ingen FIL er angivet, eller FIL er -, læses fra standard-ind.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent udskriv ikke overskrifter med filnavne først\n"
+" -v, --verbose skriv altid overskrifter med filnavne først\n"
+
+#: src/head.c:136
+#, fuzzy
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"STØRRELSE kan have en multiplikatorendelse: b for 512, k for 1K eller\n"
+" m for 1 Meg.\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "fejl ved læsning af %s"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "fejl ved skrivning til %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr ""
+
+#: src/head.c:230 src/head.c:1046
+#, fuzzy, c-format
+msgid "%s: number of bytes is too large"
+msgstr "ugyldigt antal byte at sammenligne"
+
+#: src/head.c:443
+#, fuzzy, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: kan ikke søge til relativt afsæt %s"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: kan ikke søge til afsæt %s"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "kan ikke flytte filpegeren for %s"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s er så stor at den ikke kan repræsenteres"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "antal linjer"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "antal bytes"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "ugyldigt antal linjer"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "ugyldigt antal byte"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "ugyldigt flag - %c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Brug: %s\n"
+" eller: %s FLAG\n"
+"Udskriv den numeriske identifikator (heksadecimalt) for dette system.\n"
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Brug: %s [NAVN]\n"
+" eller: %s FLAG\n"
+"Udskriv eller sæt værtsnavnet for dette system.\n"
+
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "kan ikke sætte værtsnavnet til '%s'"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr "kan ikke sætte værtsnavnet; dette system mangler funktionaliteten"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "kan ikke bestemme værtsnavnet"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Brug: %s [FLAG]... [BRUGERNAVN]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Udskriv information for BRUGERNAVN eller nuværende bruger.\n"
+"\n"
+" -a ignoreres, for kompatibilitet med andre versioner\n"
+" -g, --group udskriv kun gruppe-ID\n"
+" -G, --groups udskriv alle gruppe-ID'er\n"
+" -n, --name skriv et navn i stedet for et nummer, for -ugG\n"
+" -r, --real udskriv den virkelige ID i stedet for den effektive,\n"
+" for -ugG\n"
+" -u, --user udskriv kun brugeridentiteten\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"Uden nogen FLAG udskrives et nyttigt udvalg af identificeret information.\n"
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "kan ikke udskrive kun bruger *og* kun gruppe"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr "kan ikke udskrive kun navn eller virkelige ID'er i forvalgt format"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Ingen sådan bruger"
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "kan ikke finde navnet for bruger-ID %u"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "kan ikke finde navnet for gruppe-ID %u"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "kan ikke hente supplerende gruppeliste"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " grupper="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr "strip-flaget kan ikke bruges ved installation af et katalog"
+
+#: src/install.c:321
+#, fuzzy, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "strip-flaget kan ikke bruges ved installation af et katalog"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "ugyldig rettighed %s"
+
+#: src/install.c:520
+#, fuzzy, c-format
+msgid "cannot change ownership of %s"
+msgstr "kan ikke ændre adgangsrettigheder på %s"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "kan ikke sætte tidsstempler for %s"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "systemkaldet fork mislykkedes"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "kan ikke køre strip"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "skriver til %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "ugyldig bruger %s"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "opretter katalog %s"
+
+#: src/install.c:651
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Brug: %s [FLAG]... KILDE MÅL\n"
+" eller: %s [FLAG]... KILDE... KATALOG\n"
+" eller: %s [FLAG]... --target-directory=KATALOG KILDE...\n"
+
+#: src/install.c:658
+#, fuzzy
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"De to første formater kopierer KILDE til MÅL eller en eller flere KILDE'r\n"
+"til KATALOG, samtidig med at tilstand og ejer/gruppe angives. Det tredje\n"
+"format opretter KATALOG'er samt alle disses komponenter.\n"
+"\n"
+
+#: src/install.c:667
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup[=KONTROL] opret sikkerhedskopi før sletning\n"
+" -b som --backup, men accepterer ikke et argument\n"
+" -c (ignoreret)\n"
+" -d, --directory behandl alle argumenter som katalognavne, opret "
+"alle\n"
+" komponenter i de angivne kataloger.\n"
+
+#: src/install.c:674
+#, fuzzy
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D opret alle indledende komponenter af MÅL undtagen "
+"den\n"
+" sidste, kopiér derefter KILDE til MÅL; nyttigt med\n"
+" det første format.\n"
+" -g, --group=GRUPPE vælg gruppeejerskab, i stedet for processens\n"
+" nuværende gruppe\n"
+" -m, --mode=TILSTAND vælg tilstand (ligesom chmod), i stedet for rwxr-xr-"
+"x\n"
+" -o, --owner=EJER vælg ejerskabsrettigheder (kun superbruger)\n"
+
+#: src/install.c:681
+#, fuzzy
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps brug samme læse/ændringstider på MÅL-filerne\n"
+" som der er på KILDE-filerne.\n"
+" -s, --strip fjern symboltabeller, kun for 1. og 2. format\n"
+" -S, --suffix=SUFFIKS tilsidesæt det sædvanlige sikkerhedskopi-suffiks\n"
+" -v, --verbose skriv navnet på hvert katalog når det bliver "
+"oprettet\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"Suffikset for sikkerhedskopiering er '~', med mindre andet er angivet med\n"
+"--suffix eller SIMPLE_BACKUP_SUFFIX. Versionskontrolmetoden kan vælges med\n"
+"--backup flaget eller vha. miljøvariabelen VERSION_CONTROL. Gyldige værdier "
+"er:\n"
+"\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"For hvert par af ind-linjer med ens flettefelt skrives en linje til\n"
+"standard-ud. Det forvalgte flettefelt er det første\n"
+"felt, begrænset af blanktegn. Hvis FIL1 eller FIL2 (ikke begge)\n"
+"er -, læses fra standard-ind.\n"
+"\n"
+" -a FILNR udskriv linjer som ikke kan parres som fra fil FILNR,\n"
+" hvor FILNR er 1 eller 2 svarende til FIL1 eller FIL2\n"
+" -e TOM erstat manglende ind-felter med TOM\n"
+
+#: src/join.c:147
+#, fuzzy
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case ignorer forskelle i store/små bogstaver ved\n"
+" sammenligning af felter\n"
+" -j FELT (forældet) samme som '-1 FELT -2 FELT'\n"
+" -j1 FELT (forældet) samme som '-1 FELT'\n"
+" -j2 FELT (forældet) samme som '-2 FELT'\n"
+" -o FORMAT følg FORMAT når udlinjen laves\n"
+" -t TEGN brug TEGN som feltseparator for ind og ud\n"
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v FILNR som -a FILNR, men drop flettede ud-linjer\n"
+" -1 FELT flet ved dette FELT fra fil 1\n"
+" -2 FELT flet ved dette FELT fra fil 2\n"
+
+#: src/join.c:160
+#, fuzzy
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"Hvis -t TEGN ikke er angivet, er 'indledende blanke' feltseparator, og "
+"ignoreres,\n"
+"ellers er felt adskilt af TEGN. Hvert FELT er et feltnummer talt fra 1.\n"
+"FORMAT er en eller flere komma- eller blank-separerede specifikationer, der\n"
+"hver er 'FILNR.FELT' eller '0'. Det forvalgte FORMAT udskriver\n"
+"flettefeltet, resten af felterne fra FIL1 og resten af felterne fra\n"
+"FIL2, alle adskilt med TEGN.\n"
+
+#: src/join.c:617 src/join.c:812
+#, fuzzy, c-format
+msgid "invalid field number: %s"
+msgstr "ugyldigt feltnummer: \"%s\""
+
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "ugyldig specifikation af felt: \"%s\""
+
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "ugyldigt filnummer i feltspec: \"%s\""
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr ""
+
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "flertegns-tabulator '%s'"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr ""
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "begge filer kan ikke være standard-ind"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"Brug: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" eller: %s -l [SIGNAL]...\n"
+" eller: %s -t [SIGNAL]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+"Send signaler til processer, eller vís signaler.\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" angiv navnet eller nummeret på signalet som skal sendes\n"
+" -l, --list list signalnavne, eller konvertér signalnavn til/fra\n"
+" nummer\n"
+" -t, --table skriv en tabel med signalinformation\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+"\n"
+"SIGNAL kan være et signalnavn som \"HUP\" eller et signalnummer som\n"
+"\"1\", eller en slutstatus fra en proces afsluttet af et signal. PID\n"
+"er et heltal; hvis det er negativt, identificerer det en procesgruppe.\n"
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: ugyldigt signal"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: ugyldig proces-id"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "ugyldigt flag - %c"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: flere signaler angivet"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "flere -l eller -t-flag angivet"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "kan ikke kombinere signal med -l eller -t"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr ""
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Brug: %s FIL1 FIL2\n"
+" eller: %s [FLAG]\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+"Kald funktionen link for at oprette en lænke FIL2 til en\n"
+"eksisterende FIL1.\n"
+"\n"
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "kan ikke oprette lænke %s til %s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+"%s: advarsel: at lave en hård lænke til en symbolsk lænke er ikke portabelt"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: hård lænke ikke tilladt for katalog"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: kan ikke overskrive katalog"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: overskriv %s? "
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "opret symbolsk lænke %s til %s"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "opret symbolsk lænke %s til %s"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "opret hård lænke %s til %s"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "opret hård lænke %s til %s"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "opret hård lænke %s til %s"
+
+#: src/ln.c:324
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Brug: %s [FLAG]... KILDE MÅL (1. format)\n"
+" eller: %s [FLAG]... KILDE... KATALOG (2. format)\n"
+" eller: %s -d [FLAG]... KATALOG... (3. format)\n"
+
+#: src/ln.c:331
+#, fuzzy
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"Opret en lænke til det angivne MÅL med et valgfrit LÆNKENAVN. Hvis\n"
+"LÆNKENAVN er udeladt, vil en lænke med samme basisnavn som MÅL blive\n"
+"oprettet i det aktuelle katalog. Hvis du bruger det andet format med mere "
+"end\n"
+"et mål, skal det sidste argument være et katalog; opret lænker i KATALOG "
+"til\n"
+"hvert MÅL. Opret hårde lænker som standard, symbolske lænker med --"
+"symbolic.\n"
+"Når du opretter hårde lænker, skal hvert MÅL eksistere.\n"
+"\n"
+
+#: src/ln.c:342
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup[=CONTROL] lav sikkerhedskopi af hver eksisterende\n"
+" destinationsfil\n"
+" -b ligesom --backup, men tager ikke noget "
+"argument\n"
+" -d, -F, --directory lav hårde lænker for kataloger (kun "
+"superbruger)\n"
+" -f, --force fjern eksisterende destinationsfiler\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference behandl destination som er en symbolsk lænke\n"
+" til et katalog som om den er en normal fil\n"
+" -i, --interactive bekræft før sletning af destinationer\n"
+" -s, --symbolic lav symbolske lænker i stedet for hårde "
+"lænker\n"
+
+#: src/ln.c:356
+#, fuzzy
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" -S, --suffix=SUFFIKS tilsidesæt det sædvanlige sikkerhedskopi-"
+"suffiks\n"
+" --target-directory=KATALOG angiv det KATALOG som lænkerne skal "
+"oprettes i\n"
+" -v, --verbose skriv navnet på hver fil før lænkning\n"
+
+#: src/ln.c:484
+#, fuzzy, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "%s: angivet målkatalog er ikke et katalog"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Brug: %s [FLAG]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"Udskriv navnet på den nuværende bruger.\n"
+"\n"
+
+#: src/logname.c:89
+#, fuzzy, c-format
+msgid "no login name"
+msgstr "%s: ikke noget login-navn\n"
+
+# Disse to format skal expandera til samme længd. (Det findes en
+# kommentar omedelbart inden dem i koden om det. Hur får man xgettext
+# at tage med kommentarer?)
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%e %b %Y"
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%e %b %H:%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "ignorerer ugyldig værdi af miljøvariabelen QUOTING_STYLE: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "ignorerer ugyldig længde i miljøvariabelen COLUMNS: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr "ignorerer ugyldig tabulatorstørrelse i miljøvariabelen TABSIZE: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "ugyldig linjelængde: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "ugyldig tabulatorstørrelse %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "ugyldig tidsstílsformat %s"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "ukendt præfiks: %s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "uforståelig værdi i miljøvariabelen LS_COLORS"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "kan ikke åbne katalog %s"
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "kan ikke bestemme enhed og inode for %s"
+
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "viser ikke allerede vist katalog: %s"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "læser katalog %s"
+
+#: src/ls.c:2410
+#, fuzzy, c-format
+msgid "closing directory %s"
+msgstr "opretter katalog %s"
+
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "kan ikke sammenligne filnavnene %s og %s"
+
+#: src/ls.c:4277
+#, fuzzy
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"Vis information om FIL'er (nuværende katalog med mindre andet er angivet).\n"
+"Sortér filerne alfabetisk hvis ingen af flagene -cftuSUX eller --sort\n"
+"er givet.\n"
+"\n"
+
+#: src/ls.c:4285
+#, fuzzy
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all skjul ikke filer som starter med .\n"
+" -A, --almost-all vis ikke . og ..\n"
+" --author skriv forfatter for hver fil\n"
+" -b, --escape skriv oktale koder for ikke-grafiske tegn\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=STØR brug blokke på STØR byte\n"
+" -B, --ignore-backups vis ikke filer som ender på ~\n"
+" -c med -lt: sortér efter, og vis, ctime (sidste\n"
+" ændring af filstatusinformation)\n"
+" med -l: vis ctime og sortér efter navn\n"
+" ellers: sortér efter ctime\n"
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C vis filer i kolonner\n"
+" --color[=NÅR] angiv om du vil bruge farver for at skelne\n"
+" mellem filtyper. NÅR kan være 'never',\n"
+" 'always' eller 'auto'.\n"
+" -d, --directory vis kataloger uden at vise indholdet,\n"
+" og behold symbolske lænker\n"
+" -D, --dired lav uddata for Emacs' dired-tilstand\n"
+
+#: src/ls.c:4307
+#, fuzzy
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f sortér ikke, brug -aU, brug ikke -lst\n"
+" -F, --classify tilføj et bogstav (*/=@|) for at vise filtype\n"
+" --format=ORD 'across' -x, 'commas' -m, 'horizontal' -x, "
+"'long' -l,\n"
+" 'single-column' -1, 'verbose' -l, 'vertical' -"
+"C\n"
+" --full-time ligesom -l --time-style=full-iso\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+#, fuzzy
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all medtag filsystemer med 0 blokke\n"
+" -B, --block-size=STR brug blokke på STR byte\n"
+" -h, --human-readable skriv størrelser på en læsevenlig form \n"
+" (f.eks. 1K 234M 2G)\n"
+" -H, --si det samme, men brug 1000 som grundtal, ikke 1024\n"
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+
+#: src/ls.c:4337
+#, fuzzy
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=ORD tilføj indikator med stilen ORD til elementer:\n"
+" none (standard), classify (-F), file-type (-"
+"p)\n"
+" -i, --inode vis indeksnummer for hver fil\n"
+" -I, --ignore=MØNSTER vis ikke filer som stemmer overens med\n"
+" skal-MØNSTER\n"
+" -k, --kilobytes ligesom --block-size=1024\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l brug langt listeformat\n"
+" -L, --dereference vis filer som peges på af symbolske lænker\n"
+" -m brug hele skærmbredden med en liste adskilt af\n"
+" kommaer\n"
+
+#: src/ls.c:4352
+#, fuzzy
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid ligesom -l, men skriv UID og GID med tal\n"
+" -N, --literal skriv rå filnavne (behandl ikke fx kontroltegn\n"
+" anderledes)\n"
+" -o ligesom -l, men vís ikke gruppeinformation\n"
+" -p --file-type tilføj indikator (/=@|) for filtype\n"
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars skriv ? i stedet for ikke-grafiske tegn\n"
+" --show-control-chars vis ikke-grafiske tegn som de er (standard med\n"
+" mindre programmet er 'ls' og uddata er en\n"
+" terminal)\n"
+" -Q, --quote-name sæt filnavne i gåseøjne\n"
+" --quoting-style=ORD brug anførselsstil ORD for filnavn:\n"
+" literal, locale, shell, shell-always, c\n"
+" eller escape\n"
+
+#: src/ls.c:4368
+#, fuzzy
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse sortér i omvendt rækkefølge\n"
+" -R, --recursive vis underkataloger rekursivt\n"
+" -s, --size skriv blokstørrelse for hver fil\n"
+
+#: src/ls.c:4373
+#, fuzzy
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S sortér efter filstørrelse\n"
+" --sort=ORD extension -X, none -U, size -S, time -t\n"
+" version -v\n"
+" status -c, time -t, atime -u, access -u, use -"
+"u\n"
+" --time=ORD vis tid som ORD i stedet for "
+"ændringstidspunkt:\n"
+" atime, access, use, ctime eller status; brug\n"
+" angivet tid som sorteringsnøgle hvis --"
+"sort=tid\n"
+
+#: src/ls.c:4382
+#, fuzzy
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=STIL vis tidspunkter med stilen STIL:\n"
+" full-iso, iso, locale, posix-iso, +FORMAT\n"
+" FORMAT fortolkes som 'date'; hvis FORMAT er\n"
+" FORMAT1<linjeskift>FORMAT2, gælder FORMAT1 for\n"
+" ældre filer, og FORMAT2 for nyere filer\n"
+" -t sortér efter ændringstidspunkt\n"
+" -T, --tabsize=KOLONNER brug KOLONNER som tabulatorlængde i stedet for "
+"8\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u med -lt: sortér efter, og vis, læsningstid\n"
+" med -l: vis læsningstid og sortér efter navn\n"
+" ellers: sortér efter læsningstid\n"
+" -U sortér ikke; vis filer som de ligger i "
+"kataloget\n"
+" -v sortér efter version\n"
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -w, --width=KOLONNER antag skærmbredde i stedet for aktuel værdi\n"
+" -x vís indgange linjevis i stedet for kolonnevis\n"
+" -X sortér alfabetisk efter endelser\n"
+" -1 list én fil per linje\n"
+
+#: src/ls.c:4414
+#, fuzzy
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"Normalt bruges farver ikke til at skelne mellem filtyper. Det svarer til \n"
+"at bruge --color=none. At bruge --color-flaget uden det valgfri argument\n"
+"NÅR svarer til at bruge --color=always. Med --color=auto bruges farvekoder\n"
+"kun hvis standard-uddata er forbundet med en terminal (tty).\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#: src/md5sum.c:150
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Brug: %s [FLAG] [FIL]...\n"
+" eller: %s [FLAG] --check [FIL]\n"
+"Skriv eller tjek %s-kontrolsummer (%d-bit).\n"
+"Hvis ingen FIL er angivet eller FIL er -, læses fra standard-ind.\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+"\n"
+" -B, --binary skriv binært til konsolenheden.\n"
+"\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+#, fuzzy
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"De følgende to flag bruges kun ved kontrol af kontrolsummer:\n"
+" --status udskriv ikke noget, statuskode angiver resultat\n"
+" -w, --warn advar mod fejlformatterede kontrolsum-linjer\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"Summerne bliver beregnet som beskrevet i %s. Ved kontrol skal\n"
+"inddata være tidligere uddata fra dette program. Forvalgt \n"
+"tilstand er at udskrive en linje med kontrolsum, et tegn som indikerer\n"
+"type ('*' for binær, ' ' for tekst), og navnet på hver FIL.\n"
+
+#: src/md5sum.c:459
+#, fuzzy, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: ingen rigtigt formatterede %s-kontrolsumlinjer fundet"
+
+#: src/md5sum.c:481
+#, fuzzy, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %lu: ukorrekt formatteret %s-kontrolsumlinje"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: FEJL ved åbning eller læsning\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "MISLYKKEDES"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "O.k."
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: læsefejl"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: ingen rigtigt formatterede %s-kontrolsumlinjer fundet"
+
+#: src/md5sum.c:562
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "ADVARSEL: %d af %d opførte %s kunne ikke læses"
+msgstr[1] "ADVARSEL: %d af %d opførte %s kunne ikke læses"
+
+#: src/md5sum.c:574
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "ADVARSEL: %d af %d beregnede %s stemte IKKE overens"
+msgstr[1] "ADVARSEL: %d af %d beregnede %s stemte IKKE overens"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"flagene --binary og --text giver ikke mening ved verificering af "
+"kontrolsummer"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "flaget --status har kun betydning ved kontrol af kontrolsummer"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "flaget --warn har kun betydning ved kontrol af kontrolsummer"
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Brug: %s [FLAG] KATALOG...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"Opret KATALOG(erne), hvis de ikke allerede eksisterer.\n"
+"\n"
+
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+" -m, --mode=RETTIGHEDER sæt rettigheder (som chmod), ikke rwxrwxrwx - "
+"umask\n"
+" -p, --parents opret forældrekataloger om nødvendigt\n"
+" -v, --verbose skriv en besked for hvert katalog som oprettes\n"
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "oprettede katalog %s"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Brug: %s [FLAG] NAVN...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"Opret navngivne datakanaler (FIFO-er) med angivne NAVN'e.\n"
+"\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+" -m, --mode=TILSTAND sæt rettighedstilstand (ligesom chmod), ikke a=rw - "
+"umask\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "ugyldig tilstand"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Brug: %s [FLAG]... NAVN TYPE [STØRRE MINDRE]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"Opret specialfilen NAVN med den angivne TYPE.\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+"\n"
+"Både STØRRE og MINDRE skal angives når TYPE er b, c eller u, og de\n"
+"må ikke angives når TYPE er p. Hvis STØRRE eller MINDRE begynder med 0x "
+"eller 0X,\n"
+"forstås det som heksadecimalt; ellers hvis de begynder med 0, som oktalt;\n"
+"ellers decimalt. TYPE kan være:\n"
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+" b opret en blok-specialfil (bufret) \n"
+" c, u opret en tegn-specialfil (ubufret) \n"
+" p opret en FIFO\n"
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"ved oprettelse af specialfiler skal større og mindre\n"
+"enhedsnumre angives"
+
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "ugyldigt mindre enhedsnummer %s"
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "blokspecialfiler understøttes ikke"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "tegnspecialfiler understøttes ikke"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "ugyldigt større enhedsnummer %s"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "ugyldigt mindre enhedsnummer %s"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "ugyldig enhed %s %s"
+
+#: src/mknod.c:216
+#, fuzzy, c-format
+msgid "invalid device type %s"
+msgstr "ugyldig enhed %s %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Omdøb KILDE til MÅL eller flyt KILDE(r) til KATALOG.\n"
+"\n"
+
+#: src/mv.c:297
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup[=KONTROL] lav sikkerhedskopi af hver eksisterende "
+"målfil\n"
+" -b ligesom --backup, men tager ikke noget "
+"argument\n"
+" -f, --force overskriv eksisterende filer uden "
+"bekræftelse\n"
+" -i, --interactive bekræft før overskrivning af filer\n"
+" det samme som --reply=query\n"
+
+#: src/mv.c:303
+#, fuzzy
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --reply={yes,no,query} angiv hvorledes forespørgsel om eksisterende "
+"målfil\n"
+" skal behandles\n"
+" --strip-trailing-slashes fjern evt. skråstreger i slutningen af \n"
+" hvert MÅL-argument\n"
+" -S, --suffix=ENDELSE tilsidesæt den sædvanlige sikkerhedskopi-"
+"endelse\n"
+
+#: src/mv.c:308
+#, fuzzy
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --target-directory=KATALOG flyt alle MÅL-argumenter til KATALOG\n"
+" -u, --update kopiér kun hvis KILDE-filen er nyere end\n"
+" målfilen, eller når målfilen ikke findes\n"
+" -v, --verbose forklar hvad der sker\n"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Brug: %s [FLAG]... [KOMMANDO [ARG]...]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "ugyldigt argument '%s'"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "en kommando skal være givet med en justering"
+
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "kan ikke finde ud af systemnavnet"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "kan ikke sætte dato"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv hver fil til standard-ud, med linjenummer lagt til.\n"
+"Hvis ingen FIL er angivet, eller FIL er -, læses fra standard-ind.\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=STIL brug STIL til nummerering\n"
+" -d, --section-delimiter=CC brug CC til at skille logiske sider\n"
+" -f, --footer-numbering=STIL brug STIL til at nummerere bundtekst\n"
+"\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=STIL brug STIL for at nummerere toptekst\n"
+" -i, --page-increment=ANTAL linjenummerforøgelse for hver linje\n"
+" -l, --join-blank-lines=ANTAL ANTAL tomme linjer som tæller som en\n"
+" -n, --number-format=FORMAT indsæt linjenummer efter FORMAT\n"
+" -p, --no-renumber begynd ikke linjenumre på ny ved logiske\n"
+" sider\n"
+" -s, --number-separator=STRENG tilføj STRENG efter (muligt) linjenummer\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=ANTAL første linjenummer på hver logiske side\n"
+" -w, --number-width=ANTAL brug ANTAL kolonner for linjenummerering\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"Forvalgt er -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC er\n"
+"to skilletegn for at skille logiske sider, et manglende tegn nummer to\n"
+"implicerer ':'. Brug \\\\ for \\. STIL er en af:\n"
+
+#: src/nl.c:214
+#, fuzzy
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a nummerér alle linjer\n"
+" t nummerér kun ikke-tomme linjer\n"
+" n nummerér ingen linjer\n"
+" pREGUDT nummerér kun linjer som passer REGUDT\n"
+"\n"
+"FORMAT er et af følgende:\n"
+"\n"
+" ln venstrejusteret, ingen ledende nuller\n"
+" rn højrejusteret, ingen ledende nuller\n"
+" rz højrejusteret, ledende nuller\n"
+"\n"
+
+#: src/nl.c:281
+#, fuzzy, c-format
+msgid "line number overflow"
+msgstr "felt-nummeret er nul"
+
+#: src/nl.c:479
+#, fuzzy, c-format
+msgid "invalid header numbering style: %s"
+msgstr "ugyldigt feltnummer: \"%s\""
+
+#: src/nl.c:487
+#, fuzzy, c-format
+msgid "invalid body numbering style: %s"
+msgstr "ugyldigt antal %s"
+
+#: src/nl.c:495
+#, fuzzy, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "ugyldigt filnummer i feltspec: \"%s\""
+
+#: src/nl.c:504
+#, fuzzy, c-format
+msgid "invalid starting line number: %s"
+msgstr "ugyldigt første linjenummer: \"%s\""
+
+#: src/nl.c:513
+#, fuzzy, c-format
+msgid "invalid line number increment: %s"
+msgstr "ugyldig øgning af linjenummer: \"%s\""
+
+#: src/nl.c:525
+#, fuzzy, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "ugyldigt antal tomme linjer: \"%s\""
+
+#: src/nl.c:539
+#, fuzzy, c-format
+msgid "invalid line number field width: %s"
+msgstr "ugyldig bredde på linjenummerfelt: \"%s\""
+
+#: src/nl.c:558
+#, fuzzy, c-format
+msgid "invalid line numbering format: %s"
+msgstr "ugyldig øgning af linjenummer: \"%s\""
+
+#: src/nohup.c:57
+#, fuzzy, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Brug: %s FORMAT [ARGUMENT]...\n"
+" eller: %s FLAG\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "ignorerer alle argumenter"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, fuzzy, c-format
+msgid "failed to open %s"
+msgstr "kunne ikke beholde tider for %s"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr ""
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr ""
+
+#: src/od.c:307
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Brug: %s [FLAG]... [FIL]...\n"
+" eller: %s --traditional [FIL] [[+]POSITION [[+]MÆRKE]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"Skriv en entydig repræsentation, oktale byte forvalgt, af FIL\n"
+"til standard-ud. Med mere end ét FIL-argument sammenkædes de i\n"
+"den angivne rækkefølge som inddata. Hvis ingen FIL er angivet,\n"
+"eller FIL er -, læses fra standard-ind.\n"
+"\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr "Alle argumenter til lange flag er obligatoriske for de korte flag.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=RADIX bestem hvordan filoffset'er skrives\n"
+" -j, --skip-bytes=BYTE overspring første BYTE fra hver fil\n"
+
+#: src/od.c:327
+#, fuzzy
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=BYTE begræns opgaven til første antal BYTE fra hver "
+"fil\n"
+" -s, --strings[=BYTE] udskriv strenge med mindst antal BYTE grafiske "
+"tegn\n"
+" -t, --format=TYPE vælg udformater\n"
+" -v, --output-duplicates brug ikke * for at markere linjefjernelse\n"
+" -w, --width[=BYTE] skriv BYTE byte per udlinje\n"
+" --traditional acceptér argumenter på traditionel form\n"
+
+#: src/od.c:337
+#, fuzzy
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"Traditionelle formatangivelser kan blandes, de akkumulerer:\n"
+" -a samme som -t a, vælg navngivne tegn\n"
+" -b samme som -t oC, vælg oktalbyte\n"
+" -c samme som -t c, vælg ASCII-tegn eller omvendt skråstreg-notation\n"
+" -d samme som -t u2, vælg korte decimaler uden fortegn\n"
+
+#: src/od.c:345
+#, fuzzy
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f samme som -t fF, vælg flydende tal\n"
+" -h samme som -t x2, vælg korte hexadecimaler\n"
+" -i samme som -t d2, vælg korte decimaler\n"
+" -l samme som -t d4, vælg lange decimaler\n"
+" -o samme som -t o2, vælg korte oktaler\n"
+" -x samme som -t x2, vælg korte hexadecimaler\n"
+
+#: src/od.c:353
+#, fuzzy
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"Ved ældre syntaks ('second call format') opfattes POSITION som -j "
+"POSITION. \n"
+"MÆRKE er pseudoadressen til den første udskrevne byte, som øges mens\n"
+"udskriften pågår. For POSITION og MÆRKE indikerer en 0x- eller \n"
+"0X-forstavelse hexadecimalt talformat. Endelser kan være '.' for oktal,\n"
+"og b for blokke på 512 bytes.\n"
+"\n"
+"TYPE er lavet af en eller flere af følgende angivelser:\n"
+"\n"
+" a et navngivet tegn\n"
+" c ASCII-tegn eller omvendt skråstreg-notation\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[STØRRELSE] decimal med fortegn, STØRRELSE byte per tal\n"
+" f[STØRRELSE] flydende tal, STØRRELSE byte per tal\n"
+" o[STØRRELSE] oktal, STØRRELSE byte per tal\n"
+" u[STØRRELSE] decimal uden fortegn, STØRRELSE byte per tal\n"
+" x[STØRRELSE] hexadecimal, STØRRELSE byte per tal\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"STØRRELSE er et tal. For TYPE lig med d, o, u eller x, kan STØRRELSE også "
+"være\n"
+"C for sizeof(char), S for sizeof(short), I for sizeof(int) eller L for \n"
+"sizeof(long). Når TYPE er f, kan STØRRELSE være F for sizeof(float), \n"
+"D for sizeof(double) eller L for sizeof(long double).\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"RADIX er d for decimal, o for oktal, x for hexadecimal eller n for ingen.\n"
+"BYTE er hexadecimal med 0x- eller 0X-prefix, multipliceres med 512\n"
+"med endelse b, med 1024 med endelse k og med 1048576 med endelse m. \n"
+"En z-endelse for en hvilken som helst type viser skrivbare tegn til "
+"slutningen\n"
+"af hver linje af udskriften. "
+
+#: src/od.c:391
+#, fuzzy
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"--string uden et tal implicerer 3. --width uden et tal implicerer 32.\n"
+"Normalt bruger od: -A o -t d2 -w 16.\n"
+
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "ugyldig typestreng \"%s\""
+
+#: src/od.c:693
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"ugyldig type-streng '%s';\n"
+"dette system understøtter ikke en %lu-byte heltalstype"
+
+#: src/od.c:812
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"ugyldig type-streng '%s';\n"
+"dette system understøtter ikke en %lu-byte flydende-talstype"
+
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "ugyldigt tegn \"%c\" i typestreng \"%s\""
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "kan ikke hoppe til efter slutning på kombineret inddata"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr "ugyldig ud-adresse-grundtal '%c'; det skal være et af tegnene [doxn]"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "overspring argument"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "begræns argument"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "minimal strenglængde"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "breddespecifikation"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "ingen type kan angives når strenge gemmes"
+
+#: src/od.c:1844
+#, fuzzy
+msgid "Compatibility mode supports at most one file."
+msgstr "kompatibilitetstilstand støtter maksimum tre argumenter"
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr ""
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "advarsel: ugyldig bredde %lu; bruger %d i stedet"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: fmt=\"%s\" bredde=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "standard-ind er lukket"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv linjer som består af de sekventielt tilsvarende linjer fra hver\n"
+"FIL, separeret med tabulatorer, til standard-ud.\n"
+"Hvis ingen FIL er angivet, eller FIL er -, læses fra standard-ind.\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=LISTE brug tegn fra LISTE i stedet for tabulatorer\n"
+" -s, --serial indsæt en fil ad gangen i stedet for i parallel\n"
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Brug: %s [FLAG]... NAVN...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "ugyldigt tegn %s i tilstands-streng %s"
+
+#: src/pathchk.c:282
+#, fuzzy, c-format
+msgid "empty file name"
+msgstr "almindelig tom fil"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Login-navn: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "I virkeligheden: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Katalog: "
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Skal: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Projekt: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "Plan:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Login"
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr "Navn"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr " TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Inaktiv"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Hvornår"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Hvor"
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Brug: %s [FLAG]... [BRUGER]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"\n"
+" -l udskriv i langt format for de angivne BRUGER'e\n"
+" -b udelad brugerens hjemmekatalog og skál i det lange format\n"
+" -h udelad brugerens projektfil i det lange format\n"
+" -p udelad brugerens planfil i det lange format\n"
+" -s udskriv i kort format, dette er standard\n"
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+" -f udelad linjen med kolonneoverskrifter i kort format\n"
+" -w udelad brugerens fuldstændige navn i kort format\n"
+" -i udelad brugerens fuldstændige navn og fjernvært i kort\n"
+" format\n"
+" -q udelad brugerens fuldstændige navn, fjernvært og \n"
+" inaktiv tid i kort format\n"
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+"\n"
+"Et letvægts \"finger\"-program; udskriver brugerinformation.\n"
+"utmp-filen vil være %s.\n"
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr "intet brugernavn angivet; mindst ét skal angives når -l bruges"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr ""
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "'--pages=START_SIDE[:SLUT_SIDE]' mangler argument"
+
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "ugyldig typestreng \"%s\""
+
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "'-l SIDELÆNGDE' ugyldigt antal linjer: '%s'"
+
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "'-N TAL' ugyldigt start-linjenummer: '%s'"
+
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "'-o MARGEN' ugyldigt linje-afsæt: '%s'"
+
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "'-w SIDEBREDDE' ugyldigt antal tegn: '%s'"
+
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "'-W SIDEBREDDE' ugyldigt antal tegn: '%s'"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "Kan ikke angive antal kolonner når der skrives i parallel."
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "Kan ikke angive både skrivning på tværs og skriving parallelt"
+
+#: src/pr.c:1202
+#, fuzzy, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "'-%c' ekstra tegn eller ugyldig tal i argumentet: '%s'"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "sidebredde for smal"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2406
+#, fuzzy, c-format
+msgid "Page number overflow"
+msgstr "felt-nummeret er nul"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr "Sidenummerér eller omform FIL(er) til kolonner for udskrivning.\n"
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +FØRSTE_SIDE[:SIDSTE_SIDE], --pages=FØRSTE_SIDE[:SIDSTE_SIDE]\n"
+" start [slut] udskrift med FØRSTE_[SIDSTE_]SIDE\n"
+" -KOLONNER, --columns=KOLONNER\n"
+" lav KOLONNER-kolonners udskrift og skriv kolonner nedad\n"
+" medmindre '-a' er angivet: balancér antal linjer\n"
+" i kolonnerne på hver side.\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across skriv kolonner henover i stedet for nedad. Bruges\n"
+" sammen med -KOLONNER\n"
+" -c, --show-control-chars\n"
+" brug hat-notation (^G) og oktal omvendt "
+"skråstrgsnotation\n"
+" -d, --double-space\n"
+" dobbelt afstand i udskriften\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=FORMAT\n"
+" brug FORMAT for dato i overskriften\n"
+" -e[TEGN[BREDDE]], --expand-tabs[=TEGN[BREDDE]]\n"
+" udvid ind-TEGN (TABs) til BREDDE blanktegn (8)\n"
+" -F, -f, --form-feed\n"
+" brug sideskift(FF) i stedet for linjeskift for at\n"
+" separere sider (med et 3-linjers sidehoved med -F eller\n"
+" et 5-linjers hoved og bund uden -F).\n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h OVERSKRIFT, --header=OVERSKRIFT\n"
+" brug centreret OVERSKRIFT i stedet for filnavn i "
+"sidetopteksterne\n"
+" -h \"\" skriver en blank linje. Brug ikke -h\"\".\n"
+" -i[TEGN[BREDDE]], --output-tabs=[TEGN[BREDDE]]\n"
+" erstat BREDDE (8) mellemrum til TEGN (TABs) \n"
+" -J, --join-lines flet fulde linjer. Deaktiverer -W linjetrunkering,\n"
+" ingen kolonnejustering, --sep-string[=STRENG] sætter "
+"separatorer\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l SIDELÆNGDE, --length=SIDELÆNGDE\n"
+" sæt sidelængde til SIDELÆNGDE (66) linjer\n"
+" (forvalgt antal linjer med tekst er 56 med -f 63)\n"
+" -m, --merge udskriv alle filer parallelt, en i hver kolonne\n"
+" trunkér linjer, men flet linjer af fuld længde med -j\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[SEP[CIFRE]], --number-lines[=SEP[CIFRE]\n"
+" nummerér linjer, brug CIFRE (5) cifre, så SEP (TAB)\n"
+" forvalgt tælling starter med første linje af indfil\n"
+" -N NUMMER, --first-line-number=NUMMER\n"
+" start tælling med NUMMER på første linje på første side\n"
+" som skrives (se +FØRSTE_SIDE)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o MARGEN, --indent=MARGEN\n"
+" indryk linjer MARGEN mellemrum (påvirker ikke -w)\n"
+" eller -W, MARGEN vil blive lagt til SIDEBREDDE\n"
+" -r, --no-file-warnings\n"
+" advar ikke når en fil ikke kan åbnes\n"
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[TEGN], --separator[=TEGN]\n"
+" adskil kolonner med et enkelt TEGN. Forvalgt TEGN er\n"
+" TAB uden -w og 'ingen tegn' med -w.\n"
+" -s[TEGN] slår linjetrunkering fra for alle 3 kolonne-\n"
+" flagene (-KOLONNER|-a -KOLONNER|-m) bortset fra -w\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -SSTRENG, --sep-string[=STRENG]\n"
+
+#: src/pr.c:2846
+#, fuzzy
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" adskil kolonner med STRENG,\n"
+" uden -S: forvalgt skilletegn er <TAB> med -J og "
+"<mellemrum>\n"
+" ellers (samme som -S\" \"), ingen effekt på kolonneflag\n"
+" -t, --omit-header brug ikke top- og bundtekst\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" brug ikke top- og bundtekst, eliminer evt. side-layout\n"
+" ved sideskift(FF) sat i indfiler\n"
+" -v, --show-nonprinting\n"
+" brug oktal omvendt skråstregsnotation\n"
+" -w SIDEBREDDE, --width=SIDEBREDDE\n"
+" sæt sidebredde til SIDEBREDDE (72) kolonner, kun for\n"
+" flerkolonneudskrift, -s[tegn] slår fra (72)\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W SIDEBREDDE, --page-width=SIDEBREDDE\n"
+" sæt sidebredde til SIDEBREDDE (72) kolonner, altid.\n"
+" Trunkér linjer hvis -J ikke er sat. Påvirker\n"
+" ikke -S eller -s\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"-T er medført af -l nn, når nn <= 10 eller <= 3 ved -F. Hvis ingen FIL\n"
+"er angivet eller FIL er -, læses fra standard-ind.\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Brug: %s [VARIABEL]...\n"
+"eller: %s FLAG\n"
+"Hvis ingen miljø-VARIABEL er angivet, udskriv alle.\n"
+"\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr "advarsel: %s: tegn efter tegnkonstant er blevet ignorerede"
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Brug: %s FORMAT [ARGUMENT]...\n"
+" eller: %s FLAG\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+"Udskriv ARGUMENT'er ifølge FORMAT.\n"
+"\n"
+
+#: src/printf.c:104
+#, fuzzy
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"\n"
+"FORMAT styrer uddata som i C printf. Tolkede sekvenser er:\n"
+"\n"
+" \\\" citationstegn\n"
+" \\0NNN tegn med oktal værdi NNN (0 til 3 cifre)\n"
+" \\\\ omvendt skråstreg\n"
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+" \\a advarsel (SIGNAL)\n"
+" \\b baktegn\n"
+" \\c lav ikke mere uddata\n"
+" \\f sideskift\n"
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n ny linje\n"
+" \\r vognretur\n"
+" \\t vandret tabulator\n"
+" \\v lodret tabulator\n"
+
+#: src/printf.c:124
+#, fuzzy
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+" \\xNN byte med heksadecimal værdi NN (1 il 2 cifre)\n"
+"\n"
+" \\uNNNN tegn med heksadecimal værdi NNNN (4 cifre)\n"
+" \\UNNNNNNNN tegn med heksadecimal værdi NNNNNNNN (8 cifre)\n"
+
+#: src/printf.c:129
+#, fuzzy
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+" %% et enkelt %\n"
+" %b ARGUMENT som en streng med \"\\\"-kontrolsekvenser tolkes\n"
+"\n"
+"og alle specifikationer i C-format som slutter med en af diouxXfeEgGcs, "
+"med \n"
+"ARGUMENT'er konverterede til en passende type først. Variable bredder "
+"behandles.\n"
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: forventede en numerisk værdi"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: værdi ikke fuldstændig konverteret"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "manglende heksadecimal-tal i beskyttet tegnsekvens"
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "ugyldigt universelt tegnnavn \\%c%0*x"
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr "ugyldig feltlængde: %s"
+
+#: src/printf.c:585
+#, c-format
+msgid "invalid precision: %s"
+msgstr "ugyldig præcision: %s"
+
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%s: ugyldig feltangivelse '%s'"
+
+#: src/printf.c:683
+#, fuzzy, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "advarsel: ignorerer overflødige argumenter, startende med '%s'"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr ""
+
+#: src/ptx.c:422
+#, fuzzy, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (for regexp '%s')"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Brug: %s [FLAG]... [INDFIL]... (uden -G)\n"
+" eller: %s -G [FLAG]... [INDFIL [UDFIL]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"Udskriv et permuteret indeks, med kontekst, over ordene i inddatafilerne.\n"
+"\n"
+
+#: src/ptx.c:1894
+#, fuzzy
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference udskriv automatisk genererede referencer\n"
+" -C, --copyright vis Copyright og kopieringsbetingelser\n"
+" -G, --traditional vær mere som System V's 'ptx'\n"
+" -F, --flag-truncation=STRENG brug STRENG for at markere linjetrunkering\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=STRENG makronavn at bruge i stedet for 'xx'\n"
+" -O, --format=roff generér udskrift som roff-direktiver\n"
+" -R, --right-side-refs placér referencerne på højre side, ikke\n"
+" talt med i -w\n"
+" -S, --sentence-regexp=REGUDT for slutningen af linjer eller slutningen "
+"af\n"
+" sætninger\n"
+" -T, --format=tex generér udskrift som TeX-direktiver\n"
+" -o, --only-file=FIL læs liste over ord som *ikke* skal "
+"ignoreres\n"
+" fra denne FIL\n"
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=REGUDT brug REGUDT for at ramme hvert nøgleord\n"
+" -b, --break-file=FIL tegn for orddeling i denne FIL\n"
+" -f, --ignore-case lav små bogstaver om til store for "
+"sortering\n"
+" -g, --gap-size=TAL størrelse på mellemrum mellem kolonner i "
+"udfelter\n"
+" -i, --ignore-file=FIL læs liste over ord som skal ignoreres fra\n"
+" denne FIL\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references første felt i hver linje er en reference\n"
+" -t, --typeset-mode - ikke implementeret -\n"
+" -w, --width=BREDDE udskriftbredde for kolonner, eksklusive\n"
+" referencer\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"Ved ingen FIL eller hvis FIL er -, læses fra standard-ind. '-F /' er\n"
+"forvalgt.\n"
+
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "ugyldig linjelængde: \"%s\""
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr ""
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+"Udskriv hele filnavnet på det aktuelle arbejdskatalog.\n"
+"\n"
+
+#: src/pwd.c:160
+#, fuzzy, c-format
+msgid "failed to chdir to %s"
+msgstr "kunne ikke ændre gruppe for %s til %s\n"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "Kunne ikke hente attributter for %s"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "ignorerer argumenter som ikke er flag"
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Brug: %s [FLAG]... [FIL]\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+"Vis værdien af en symbolsk lænke på standard-uddata.\n"
+"\n"
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+#, fuzzy
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+" -f, --canonicalize normalisér ved at følge hver symlænke i hver\n"
+" komponent i den givne sti rekursivt\n"
+" -n, --no-newline udskriv ikke et afsluttende linjeskift\n"
+" -q, --quiet,\n"
+" -s, --silent undertryk de fleste fejlmeddelelser\n"
+" -v, --verbose rapportér fejlmeddelelser\n"
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "kan ikke åbne katalog %s"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "kan ikke åbne katalog %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, fuzzy, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "%s ændrede enh/ino"
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "kan ikke oprette katalog %s"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"ADVARSEL: Cirkulær katalogstruktur.\n"
+"Dette betyder næsten helt sikkert at du har et ødelagt filsystem.\n"
+"RAPPORTÉR TIL SYSTEMANSVARLIG.\n"
+"Følgende katalog udgør en del af cirkelen:\n"
+" %s\n"
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s: gå ned i skrivebeskyttet katalog %s? "
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s: gå ned i katalog %s? "
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: fjern skrivebeskyttet %s %s? "
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: fjern %s %s? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "fjernede katalog %s\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "kan ikke åbne katalog %s"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "kan ikke fjerne katalog %s"
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr ""
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "kan ikke fjerne katalog %s"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "kan ikke fjerne katalog %s"
+
+#: src/remove.c:1558
+#, fuzzy, c-format
+msgid "cannot restore current working directory"
+msgstr "kan ikke finde aktuelt katalog"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Brug: %s [FLAG]... [FIL]...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"For at fjerne en fil hvis navn begynder med et '-', for eksempel '-foo',\n"
+"kan du bruge en af disse kommandoer:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"Bemærk at hvis du bruger 'rm' til at fjerne en fil, er det normalt muligt "
+"at\n"
+"genskabe indholdet af denne fil. Hvis du ønsker større sikkerhed for at "
+"indholdet\n"
+"virkelig ikke kan genskabes, så overvej at bruge 'shred'.\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: fjern %s %s? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "fjerner katalog, %s"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Brug: %s [FLAG]... [KATALOG]...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"Slet KATALOG'er, hvis de er tomme.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignorér alle fejl som udelukkende skyldes at kataloget "
+"ikke\n"
+" er tomt\n"
+
+#: src/rmdir.c:148
+#, fuzzy
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents slet KATALOG, prøv dernæst at fjerne hvert katalog-element "
+"i\n"
+" hele stinavnet. F.eks. 'rmdir -p a/b/c' virker ligesom\n"
+" 'rmdir a/b/c a/b a'.\n"
+" -v, --verbose vis meddelelse for hvert katalog som behandles\n"
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Brug: %s [FLAG]... SIDSTE\n"
+" eller: %s [FLAG]... FØRSTE SIDSTE\n"
+" eller: %s [FLAG]... FØRSTE FORØGELSE SIDSTE\n"
+
+#: src/seq.c:79
+#, fuzzy
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"Udskriv tallene fra FØRSTE til SIDSTE, med trin på FORØGELSE.\n"
+"\n"
+" -f, --format=FORMAT brug printf-lignende flydendetals-FORMAT "
+"(forvalgt: %g)\n"
+" -s, --separator=STRENG brug STRENG for at separere tallene (forvalgt: "
+"\\n)\n"
+" -w, --equal-width gør bredden ens ved at udfylde med nuller foran\n"
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"\n"
+"Hvis FØRSTE eller FORØGELSE er udeladt, er forvalgt værdi 1.\n"
+"FØRSTE, FORØGELSE og SIDSTE tolkes som flydendetals-værdier. FORØGELSE bør "
+"være\n"
+"positiv hvis FØRSTE er mindre end SIDSTE, og negativ ellers. Når FORMAT\n"
+"er angivet, skal det indeholde nøjagtig ét af printf-direktiverne for\n"
+"flydende tal: %e, %f eller %g.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "ugyldigt flydende tal-argument: %s"
+
+#: src/seq.c:342
+#, fuzzy, c-format
+msgid "invalid format string: %s"
+msgstr "ugyldig formatstreng: '%s'"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr ""
+"formatstrengen kan ikke angives når der udskrives strenge\n"
+"med ens bredde"
+
+#: src/setuidgid.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Brug: %s FORMAT [ARGUMENT]...\n"
+" eller: %s FLAG\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr ""
+
+#: src/setuidgid.c:109
+#, fuzzy, c-format
+msgid "cannot set supplemental group"
+msgstr "kan ikke hente supplerende gruppeliste"
+
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "kan ikke sætte gruppe-id"
+
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "kan ikke sætte bruger-id"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Brug: %s [FLAG] FIL [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"Overskiv de angivne FILER gentagne gange for at gøre det sværere for\n"
+"selv meget dyrt genoprettelsesudstyr at genskabe data.\n"
+"\n"
+
+#: src/shred.c:174
+#, fuzzy, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force ændr om nødvendigt rettigheder for at tillade skrivning\n"
+" -n, --iterations=N Overskriv N gange i stedet for det normale (%d)\n"
+" -s, --size=N makulér dette antal byte (endelser som k, M, G accepteret)\n"
+
+#: src/shred.c:180
+#, fuzzy
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove afkort og fjern fil efter overskrivningen\n"
+" -v, --verbose vis fremskridt\n"
+" -x, --exact rund ikke filstørrelser op til den næste fulde blok\n"
+" dette er standard for ikke-regulære filer\n"
+" -z, --zero tilføj til slut en overskrivning med nul-tegn for at skjule "
+"makulering\n"
+" - standard-uddata for 'shred'\n"
+
+#: src/shred.c:189
+#, fuzzy
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"Slet FILER hvis --remove er angivet. Det normale er at ikke fjerne filerne\n"
+"fordi det er almindeligt at behandle enhedsfiler som /dev/hda,\n"
+"og disse filer bør normalt ikke fjernes. Ved behandling af almindelige "
+"filer\n"
+"bruger de fleste --remove-valgmuligheden.\n"
+"\n"
+
+#: src/shred.c:199
+#, fuzzy
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"PAS PÅ: Bemærk at 'shred' bygger på en meget vigtig antagelse:\n"
+"at filsystemet overskriver data på stedet. Dette er den traditionelle\n"
+"måde at det på, men mange moderne filsystemsdesign opfylder ikke denne\n"
+"antagelse. Det følgende er eksempler på filsystemer hvor 'shred' ikke er\n"
+"effektiv:\n"
+"\n"
+
+#: src/shred.c:207
+#, fuzzy
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"* log-strukturerede eller journaliserende filsystemer, såsom dem der "
+"leveres\n"
+" med AIX, Solaris (og JFS, ReiserFS, XFS, Ext3 osv.)\n"
+"\n"
+"* filsystemer som skriver redundante data og fortsætter selv om nogle "
+"skrivninger\n"
+" mislykkes, såsom RAID-baserede filsystemer\n"
+"\n"
+"* filsystemer som laver øjebliksbilleder, såsom Network Appliances' NFS "
+"server\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+#, fuzzy
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+"* filsystemer der mellemlagrer på midlertidige steder, såsom NFS version 3-"
+"klienter\n"
+"\n"
+"* komprimerede filsystemer\n"
+"\n"
+"Derudover kan sikkerhedskopier af filsystemer og eksterne spejlinger "
+"indeholde\n"
+"kopier af filen, som ikke kan fjernes, og som vil tillade genskabelse senere "
+"af\n"
+"en makuleret fil.\n"
+
+#: src/shred.c:303
+#, fuzzy, c-format
+msgid "%s: fdatasync failed"
+msgstr "stat() mislykkedes"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr ""
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s: kan ikke tilbagespole"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: gennemløb %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s: fejl ved skrivning fra afsæt %s"
+
+#: src/shred.c:478
+#, fuzzy, c-format
+msgid "%s: lseek failed"
+msgstr "fejl ved lukning af filen"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s: fil for stor"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: gennemløb %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: gennemløb %lu/%lu (%s)...%s/%s %d%%"
+
+#: src/shred.c:776
+#, fuzzy, c-format
+msgid "%s: fstat failed"
+msgstr "stat() mislykkedes"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: ugyldig filtype"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: fil har negativ størrelse"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s: fejl ved afkortning"
+
+#: src/shred.c:889
+#, fuzzy, c-format
+msgid "%s: fcntl failed"
+msgstr "stat() mislykkedes"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s: kan ikke makulere beskriver for fil, der kun kan tilføjes til"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: sletter"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: omdøbt til %s"
+
+#: src/shred.c:1018
+#, fuzzy, c-format
+msgid "%s: failed to remove"
+msgstr "%s: fil for stor"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: slettet"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, fuzzy, c-format
+msgid "%s: failed to close"
+msgstr "%s: fil for lang"
+
+#: src/shred.c:1065
+#, fuzzy, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: fil for lang"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: ugyldigt antal gennemløb"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "flere -l eller -t-flag angivet"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: ugyldig filstørrelse"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Brug: %s [FLAG]... SIDSTE\n"
+" eller: %s [FLAG]... FØRSTE SIDSTE\n"
+" eller: %s [FLAG]... FØRSTE FORØGELSE SIDSTE\n"
+
+#: src/shuf.c:57
+#, fuzzy
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"Udskriv valgte dele af linjerne fra hver FIL til standard-ud.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "flere -l eller -t-flag angivet"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "ugyldigt antal %s"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "ugyldig linjelængde: %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, fuzzy, c-format
+msgid "multiple output files specified"
+msgstr "flere -l eller -t-flag angivet"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "kan ikke kombinere signal med -l eller -t"
+
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr "ekstra operand '%s'"
+
+#: src/sleep.c:47
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Brug: %s ANTAL[SUFFIKS]...\n"
+" eller: %s FLAG\n"
+"Sov i ANTAL sekunder. SUFFIKS kan være 's' for at angive sekunder "
+"(forvalgt),\n"
+"'m' for minutter, 'h' for timer (hours) og 'd' for dage. Ulig de fleste "
+"implementeringer\n"
+"som kræver at ANTAL er et heltal, kan ANTAL her være et vilkårligt\n"
+"flydende tal.\n"
+"\n"
+
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "ugyldigt tidsinterval '%s'"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "kan ikke læse realtids-ur"
+
+#: src/sort.c:310
+#, fuzzy
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"Skriv sorteret konkatenering af alle FILER til standard-uddata.\n"
+"\n"
+"Sorteringsmuligheder:\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+#, fuzzy
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks ignorér indledende blanke\n"
+" -d, --dictionary-order tag kun blanke og alfanumeriske tegn i "
+"betragtning\n"
+" -f, --ignore-case behandl små bogstaver som store bogstaver\n"
+
+#: src/sort.c:326
+#, fuzzy
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort sammenlign ifølge generel numerisk værdi\n"
+" -i, --ignore-nonprinting tag kun synlige tegn i betragtning\n"
+" -M, --month-sort sammenlign (ukendt) < 'JAN' < ... < 'DEC'\n"
+" -n, --numeric-sort sammenlign ifølge numerisk værdi af strenge\n"
+" -r, --reverse vend resultaterne af sammenligningerne om\n"
+"\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+#, fuzzy
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+"Andre muligheder:\n"
+"\n"
+" -c, --check tjek om inddata er sorteret; sortér ikke\n"
+" -k, --key=POS1[,POS2] start en nøgle ved POS1, afslut den ved POS 2 "
+"(startpunkt 1)\n"
+" -m, --merge sammenflet allerede sorterede filer; sortér "
+"ikke\n"
+" -o, --output=FIL udskriv resultat til FIL i stedet for standard-"
+"uddata\n"
+" -s, --stable stabilisér sortering ved deaktivering af sidste-"
+"udvejs-sammenligning\n"
+" -S, --buffer-size=STØR brug størrelsen STØR for indre "
+"hukommelsesbuffer\n"
+
+#: src/sort.c:351
+#, fuzzy, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=SEP brug SEP i stedet for ikke-mellemrum til "
+"mellemrums-overgang\n"
+" -T, --temporary-directory=KAT brug KAT til mellemlagring, ikke $TMPDIR "
+"eller %s\n"
+" flere muligheder angiver flere kataloger\n"
+" -u, --unique med -c: tjek for streng ordning\n"
+" ellers: udskriv kun den første af en række "
+"ens\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -z, --zero-terminated afslut linjer med en 0 byte, ikke ny-linje\n"
+
+#: src/sort.c:363
+#, fuzzy
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"POS er F[.T][FLAG], hvor F er et feltnummer og T en tegnposition\n"
+"i feltet. FLAG er sat sammen af en eller flere enkeltbogstavs-flag,\n"
+"som tilsidesætter globale sorterings-flag for denne nøgle. Hvis ingen\n"
+"nøgle er angivet, bruges hele linjen som nøgle.\n"
+"\n"
+"STØRRELSE kan efterfølges af de følgende endelser, som kan kombineres:\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"%% 1%% af hukommelse, b 1, k 1024 (forvalgt), og så videre for M, G, T, P, "
+"E, Z, Y.\n"
+"\n"
+"Hvis ingen FIL er angivet, eller FIL er -, læses fra standard-ind.\n"
+"\n"
+"*** ADVARSEL ***\n"
+"Lokalet angivet i miljøet påvirker sorteringsordenen.\n"
+"Sæt LC_ALL=C for at få den traditionelle sorteringsorden som benytter\n"
+"de interne byte-værdier.\n"
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "skriver til %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "kan ikke oprette midlertidig fil %s"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "fejl ved åbning af filen"
+
+#: src/sort.c:758
+#, fuzzy
+msgid "fflush failed"
+msgstr "fejl ved lukning af filen"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "fejl ved lukning af filen"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "fejl ved åbning af filen"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr ""
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "kan ikke oprette midlertidig fil %s"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "kan ikke oprette midlertidig fil %s"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr ""
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "kan ikke oprette katalog %s"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "fejl ved skrivning"
+
+#: src/sort.c:975
+#, fuzzy, c-format
+msgid "warning: cannot remove: %s"
+msgstr "kan ikke fjerne %s"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "sorteringsstørrelse"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "stat() mislykkedes"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "læsefejl"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: uorden: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "standardfejl"
+
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: ugyldig feltangivelse '%s'"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: ugyldigt antal ved starten af '%s'"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "ugyldigt tal efter '-'"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "ugyldigt tal efter '.'"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "forvildet tegn i feltangivelse"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "flere -l eller -t-flag angivet"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "ugyldigt tal ved feltbegyndelsen"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "felt-nummeret er nul"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "tegnafsæt er nul"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "ugyldigt tal efter ','"
+
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "ekstra operand '%s' er ikke tilladt med -c"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Brug: %s [FLAG] [INDDATA [PRÆFIKS]]\n"
+
+#: src/split.c:110
+#, fuzzy
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv stykker af fast størrelse af INDDATA til PRÆFIKSaa, PRÆFIKSab, ...;\n"
+"Forvalgt PRÆFIKS er `x'. Hvis ingen INPUT er angivet, eller INPUT er -,\n"
+"læses fra standard-ind.\n"
+"\n"
+
+#: src/split.c:119
+#, fuzzy, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=N brug endelser med længden N (normalt %d)\n"
+" -b, --bytes=STØRRELSE skriv STØRRELSE byte i hver udfil\n"
+" -C, --line-bytes=STØRRELSE skriv maksimum STØRRELSE byte med linjer per\n"
+" udfil\n"
+" -l, --lines=ANTAL skriv ANTAL linjer i hver udfil\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose skriv en diagnostik til standard error lige\n"
+" før hver udfil åbnes\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"STØRRELSE kan have en multiplikatorendelse: b for 512, k for 1K eller\n"
+" m for 1 Meg.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "Løbet tør for endelser til uddatafiler"
+
+#: src/split.c:211
+#, fuzzy, c-format
+msgid "creating file %s\n"
+msgstr "opretter filen '%s'\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "kan ikke opdele på mere end én måde"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: ugyldig længde på endelse"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: ugyldigt antal oktetter"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: ugyldigt antal linjer"
+
+#: src/split.c:487
+#, fuzzy, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "%s: antallet `%.*s' er for stort"
+
+#: src/split.c:518
+#, fuzzy, c-format
+msgid "invalid number of lines: 0"
+msgstr "ugyldigt antal linjer"
+
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s: ugyldigt flag '%c%s'\n"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%%%c: ugyldigt direktiv"
+
+#: src/stat.c:726
+#, fuzzy, c-format
+msgid "warning: backslash at end of format"
+msgstr "ugyldig omvendt skråstreg-beskyttelse ved slutningen af streng"
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr "kan ikke læse information om filsystem for %s"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Brug: %s [FLAG] FIL...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+#, fuzzy
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"\n"
+"De gyldige format-sekvenser for filer (uden --filesystem):\n"
+"\n"
+" %A - Adgangsrettigheder på læsevenlig form\n"
+" %a - Adgangsrettigheder oktalt\n"
+" %B Størrelsen i byte for hver blok rapporteret af '%b'\n"
+" %b - Antal blokke allokeret (se %B)\n"
+
+#: src/stat.c:857
+#, fuzzy
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+" %D - Enhedsnummer i hex\n"
+" %d - Enhedsnummer decimalt\n"
+" %F - Filtype\n"
+" %f - Rå tilstand i hex\n"
+" %G - Gruppenavn på ejer\n"
+" %g - Gruppe-ID på ejer\n"
+
+#: src/stat.c:865
+#, fuzzy
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+" %h - Antal hårde lænker\n"
+" %i - Inode-nummer\n"
+" %N - Citeret filnavn med dereference hvis symbolsk lænke\n"
+" %n - Filnavn\n"
+" %o - IO-blokstørrelse\n"
+" %s - Total størrelse, i byte\n"
+" %T - Større enhedstype i hex\n"
+" %t - Mindre enhedstype i hex\n"
+
+#: src/stat.c:875
+#, fuzzy
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+" %U - Brugernavn på ejer\n"
+" %u - Bruger-ID på ejer\n"
+" %X - Tidspunkt for sidste tilgang som sekunder siden Epoken\n"
+" %x - Tidspunkt for sidste tilgang\n"
+" %Y - Tidspunkt for sidste modificering som sekunder siden Epoken\n"
+" %y - Tidspunkt for sidste modificering\n"
+" %Z - Tidspunkt for sidste ændring som sekunder siden Epoken\n"
+" %z - Tidspunkt for sidste ændring\n"
+"\n"
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"Gyldige formatsekvenser for filsystemer:\n"
+"\n"
+" %a - Frie blokke tilgængelige for ikke-superbruger\n"
+" %b - Totale datablokke i filsystem\n"
+" %c - Totale filnoder i filsystem\n"
+" %d - Frie filnoder i filsystem\n"
+" %f - Frie blokke i filsystem\n"
+
+#: src/stat.c:896
+#, fuzzy
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+" %i - Filsystems-id i hex\n"
+" %l - Største længde på filnavne\n"
+" %n - Filnavn\n"
+" %s - Optimal størrelse på overførelsesblokke\n"
+" %T - Type på læsevenlig form\n"
+" %t - Type i hex\n"
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Brug: %s [-F ENHED] [--file=ENHED] [INDSTILLING]...\n"
+" eller: %s [-F ENHED] [--file=ENHED] [-a|--all]\n"
+" eller: %s [-F ENHED] [--file=ENHED] [-g|--save]\n"
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Udskriv eller ændr terminal-egenskaber.\n"
+"\n"
+" -a, --all udskriv alle nuværende indstillinger i læsevenlig form\n"
+" -g, --save udskriv alle nuværende indstillinger i stty-læsbar form\n"
+" -F, --file=ENHED åbn og brug den angivne ENHED i stedet for stdin\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+"\n"
+"Eventuelt '-' før INDSTILLING indikerer en modsat indstilling. '*' markerer\n"
+"indstillinger som ikke følger POSIX-standarden. Det underliggende system\n"
+"definerer hvilke indstillinger som er tilgængelige.\n"
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"\n"
+"Specialtegn:\n"
+" * dsusp TEGN TEGN sender et stopsignal så snart inddata er slut.\n"
+" eof TEGN TEGN sender et filslut (afslutter inddata)\n"
+" eol TEGN TEGN afslutter linjen\n"
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+" * eol2 TEGN alternativt TEGN for linjeslut\n"
+" erase TEGN TEGN sletter det senest skrevne tegn\n"
+" intr TEGN TEGN sender et afbrydningssignal\n"
+" kill TEGN TEGN sletter nuværende linje\n"
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+" * lnext TEGN TEGN skriver næste tegn som et specialtegn\n"
+" quit TEGN TEGN sender en afslutningssignal\n"
+" * rprnt TEGN TEGN genskriver nuværende linje\n"
+" start TEGN TEGN starter udskrift igen efter at have stoppet den\n"
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+" stop TEGN TEGN stopper udskriften\n"
+" susp TEGN TEGN sender et terminalstopsignal\n"
+" * swtch TEGN TEGN skifter til en anden skál\n"
+" * werase TEGN TEGN sletter det senest skrevne ord\n"
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"\n"
+"Specialindstillinger:\n"
+" N sæt ind- og uddatahastighed til N baud\n"
+" * cols N sig til kernen at terminalen har N kolonner\n"
+" * columns N samme som cols N\n"
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+" ispeed N sæt inddatahastighed til N\n"
+" * line N anvend linjetype N\n"
+" min N med -icanon, sæt N tegn til minimum for en afsluttet "
+"læsning\n"
+" ospeed N sæt udskriftshastighed til N\n"
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+" * rows N sig til kernen at terminalen har N linjer\n"
+" * size udskriv antal linjer og kolonner ifølge kernen\n"
+" speed udskriv terminalens hastighed\n"
+" time N med -icanon, sæt timeout for læsning til N tiendedels "
+"sekunder\n"
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"\n"
+"Kontrollindstillinger:\n"
+" [-]clocal deaktivér signaler for modem-kontrol\n"
+" [-]cread lad inddata blive modtaget\n"
+"* [-]crtscts aktivér RTS/CTS-forhandling ('handshaking')\n"
+" csN sæt tegnstørrelse til N bit, N i [5..8]\n"
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+" [-]cstopb brug to stop-bit per tegn (én med '-')\n"
+" [-]hup send et hangup-signal når den sidste proces lukker tty-en\n"
+" [-]hupcl samme som [-]hup\n"
+" [-]parenb generér paritetsbit ved skriving og forvent paritetsbit "
+"ved\n"
+" læsning\n"
+" [-]parodd sæt ulige paritet (lige paritet med '-')\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"\n"
+"Indstillinger for inddata:\n"
+" [-]brkint afbrydning forårsager et afbrydningssignal\n"
+" [-]icrnl oversæt vognretur til linjeskift\n"
+" [-]ignbrk ignorér afbrydningstegn\n"
+" [-]igncr ignorér vognretur\n"
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+" [-]ignpar ignorér tegn med paritetsfejl\n"
+" * [-]imaxbel bip-signal, men tøm ikke fuld inddatabuffer på grund af\n"
+" et tegn\n"
+" [-]inlcr oversæt linjeskift til vognretur\n"
+" [-]inpck muliggør paritetskontrol af inddata\n"
+" [-]istrip nulstil den høje (8.) bit i et inddatategn\n"
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+" * [-]iuclc oversæt store til små bogstaver\n"
+" * [-]ixany tillad hvilket tegn som helst at genstarte udskrift, \n"
+" ikke kun starttegn\n"
+" [-]ixoff aktivér start/stop-tegn\n"
+" [-]ixon aktivér XON/XOFF flydningskontrol\n"
+" [-]parmrk markér paritetsfejl (med en 255-0 tegnsekvens)\n"
+" [-]tandem samme som [-]ixoff\n"
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"\n"
+"Indstillinger for uddata:\n"
+"* bsN baktegn-forsinkelsesstil, N i [0..1]\n"
+"* crN vognretur-forsinkelsesstil, N i [0..3]\n"
+"* ffN sideskift-forsinkelsesstil, N i [0..1]\n"
+"* nlN linjeskift-forsinkelsesstil, N i [0..1]\n"
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+"* [-]ocrnl oversæt vognretur til linjeskift\n"
+"* [-]ofdel brug slettetegn til fyld i stedet for nul-tegn\n"
+"* [-]ofill brug fyld-tegn (padding) i stedet for forsinkelses-timing\n"
+"* [-]olcuc oversæt små bogstaver til store\n"
+"* [-]onlcr oversæt linjeskift til vognretur-linjeskift\n"
+"* [-]onlret linjeskift foretager vognretur\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+"* [-]onocr skriv ikke vognreturer i første kolonne\n"
+" [-]opost efterbehandl uddata\n"
+"* tabN vandret tab-forsinkelsesstil, N i [0..3]\n"
+"* tabs samme som tab0\n"
+"* -tabs samme som tab3\n"
+"* vtN lodret tab-forsinkelsesstil, N i [0..1]\n"
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"\n"
+"Lokale indstillinger:\n"
+" [-]crterase ekko slettetegn som baglæns-mellemrum-baglæns\n"
+" * crtkill dræb hele linjen ved at bruge indstillingerne \n"
+" for echoprt og echoe\n"
+" * -crtkill dræb hele linjen ved at bruge indstillingerne\n"
+" for echoctl og echok\n"
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+" * [-]ctlecho ekko kontroltegn med hatnotation (\"^c\")\n"
+" [-]echo ekko indtastede tegn\n"
+" * [-]echoctl samme som [-]ctlecho\n"
+" [-]echoe samme som [-]crterase\n"
+" [-]echok ekko et linjeskift efter et dræbertegn\n"
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+" * [-]echoke samme som [-]crtkill\n"
+" [-]echonl ekko linjeskift selv om ingen andre tegn ekkoes\n"
+" * [-]echoprt ekko slettede tegn baglæns, mellem \"\\\" og \"/\"\n"
+" [-]icanon aktivér specialtegnene erase, kill, werase og rprnt\n"
+" [-]iexten aktivér specialtegn som ikke er POSIX-tegn\n"
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+" [-]isig aktivér specialtegn for afbrydning, afslut og hvile\n"
+" [-]noflsh deaktivér rensning efter afbrydningssignaler og \n"
+" specialsluttegn\n"
+" * [-]prterase samme som [-]echoprt\n"
+" * [-]tostop stop baggrundsjob som forsøger at skrive til terminalen\n"
+" * [-]xcase sammen med icanon, brug \"\\\" som kontrolsekvens\n"
+" for store bogstaver\n"
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+"\n"
+"Kombinationsindstillinger:\n"
+" * [-]LCASE samme som [-]lcase\n"
+" cbreak samme som -icanon\n"
+" -cbreak samme som icanon\n"
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+" cooked samme som at sætte brkint ignpar istrip icrnl ixon oppst "
+"isig icanon,\n"
+" filsluttegn og linjesluttegn til deres standardværdier\n"
+" -cooked samme som raw\n"
+" crt samme som echoe echoctl echoke\n"
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+" dec samme som echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq samme som [-]ixany\n"
+" ek slette- og dræbertegn sættes til deres standardværdier\n"
+" evenp samme som parenb -parodd cs7\n"
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+" -evenp samme som -parenb cs8\n"
+" * [-]lcase samme som xcase iuclc olcuc\n"
+" litout samme som -parenb -istrip -opost cs8\n"
+" -litout samme som parenb istrip opost cs7\n"
+" nl samme som -icrnl -onlcr\n"
+" -nl samme som icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+" oddp samme som parenb parodd cs7\n"
+" -oddp samme som -parenb cs8\n"
+" [-]parity samme som [-]evenp\n"
+" pass8 samme som -parenb -istrip cs8\n"
+" -pass8 samme som parenb istrip cs7\n"
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+" raw samme som -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw samme som cooked\n"
+
+#: src/stty.c:709
+#, fuzzy
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+" sane samme som cread -ignbrk brkint -inlcr -igncr icrnl\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, \n"
+" alle specialtegn sættes til deres standardværdier.\n"
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"Håndtér tty-linjen koblet til standard-ind. Uden argumenter, udskriv\n"
+"bitrate, linjedisciplin og afvigelse fra 'stty sane'. I indstillinger tages\n"
+"TEGN bogstaveligt eller kodet som i ^c, 0x37, 0177 eller 127; specielle\n"
+"værdier, ^- eller undef bruges for at deaktivere specielle tegn\n"
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr "kun en enhed kan angives"
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr "flagene for fyldig og stty-læsbar udskrift udelukker hinanden"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "når en stil for uddata angives kan tilstande ikke sættes"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: kunne ikke nulstille ikke-blokerende tilstand"
+
+#: src/stty.c:885 src/stty.c:995
+#, fuzzy, c-format
+msgid "invalid argument %s"
+msgstr "ugyldigt argument '%s'"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, fuzzy, c-format
+msgid "missing argument to %s"
+msgstr "manglende argument til '%s'"
+
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "ugyldig linjelængde: %s"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: ikke i stand til at udføre alle forespurgte operationer"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "new_mode: tilstand\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: ingen information for denne enhed"
+
+#: src/stty.c:1888
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "ugyldig heltalsargument '%s'"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Adgangskode:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: kan ikke åbne /dev/tty"
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "kan ikke sætte grupper"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "kan ikke sætte gruppe-id"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "kan ikke sætte bruger-id"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Brug: %s [FLAG]... [-] [BRUGER [ARG]...]\n"
+
+#: src/su.c:386
+#, fuzzy
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Ændr den effektive bruger-id og gruppe-id til BRUGER.\n"
+"\n"
+" -, -l, --login gør skallen til en login-skal\n"
+" -c, --command=KOMMANDO send en enkelt kommando til skallen med -c\n"
+" -f, --fast send -f til skallen (for csh eller tcsh)\n"
+" -m, --preserve-environment nulstil ikke miljøvariable\n"
+" -s, --shell=SHELL kør SHELL hvis /etc/shells tillader det\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+"\n"
+"En enkelt - implicerer -l. Hvis BRUGER ikke er angivet, antag root.\n"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "bruger %s eksisterer ikke"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "forkert adgangskode"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "bruger begrænset skal %s"
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "advarsel: kan ikke skifte katalog til %s"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Udskriv kontrolsum og blok-antal for hver FIL.\n"
+"\n"
+" -r brug BSD-sum-algoritme, brug 1K-blokke\n"
+" -s, --sysv brug System V-sum-algoritme, brug 512 byte-blokke\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+"Gem ændrede blokke til disk, opdatér superblokken.\n"
+"\n"
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "ignorerer alle argumenter"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help vis denne hjælpetekst og afslut\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version vis versionsinformation og afslut\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv hver fil til standard-uddata, sidste linje først.\n"
+"Hvis ingen FIL er angivet, eller FIL er -, læses fra standard-ind.\n"
+"\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before indsæt separator før i stedet for efter\n"
+" -r, --regex fortolk separatoren som et regulært udtryk\n"
+" -s, --separator=STRENG brug STRENG som separator i stedet for "
+"linjeskift\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, fuzzy, c-format
+msgid "%s: seek failed"
+msgstr "fejl ved lukning af filen"
+
+#: src/tac.c:265
+#, fuzzy, c-format
+msgid "record too large"
+msgstr "%s: fil for stor"
+
+#: src/tac.c:459
+#, fuzzy, c-format
+msgid "cannot create temporary file %s"
+msgstr "kan ikke oprette midlertidig fil %s"
+
+#: src/tac.c:466
+#, fuzzy, c-format
+msgid "cannot open %s for writing"
+msgstr "kan ikke åbne %s til læsning"
+
+#: src/tac.c:487 src/tac.c:494
+#, fuzzy, c-format
+msgid "%s: write error"
+msgstr "fejl ved skrivning"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "separatoren kan ikke være tom"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv de sidste %d linjer af hver FIL til standard-ud.\n"
+"Med mere end en FIL angivet, udskriv filnavnet før hver FIL.\n"
+"Hvis ingen FIL er angivet, eller FIL er -, læses fra standard-ind.\n"
+"\n"
+
+#: src/tail.c:229
+#, fuzzy
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry bliv ved med at forsøge at åbne en fil selvom "
+"den\n"
+" er utilgængelig når 'tail' starter, eller hvis\n"
+" den bliver utilgængelig senere - kun nyttigt "
+"med -f\n"
+" -c, --bytes=N udskriv de sidste N byte\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={navn|deskriptor}] udskriv tilføjede data efterhånden som "
+"filen vokser\n"
+" -f, --follow, og --follow=deskriptor er\n"
+" det samme\n"
+" -F det samme som --follow=navn --retry\n"
+
+#: src/tail.c:244
+#, fuzzy, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=N udskriv de sidste N linjer i stedet for de sidste "
+"%d\n"
+" --max-unchanged-stats=N\n"
+" med --follow=navn, genåbn en FIL som ikke har\n"
+" ændret størrelse efter N (normalt %d) "
+"iterationer\n"
+" for at se om den er blevet afrefereret eller "
+"omdøbt\n"
+" (dette er det normale for roterede logfiler)\n"
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID med -f, terminér efter proces med ID, PID er død\n"
+" -q, --quiet, --silent udskriv ikke filnavne\n"
+" -s, --sleep-interval=S med -f, sov cirka S sekunder mellem hvert "
+"gennemløb,\n"
+" (normalt 1,0 sekund)\n"
+" -v, --verbose udskriv altid filnavnet i toptekster\n"
+
+#: src/tail.c:265
+#, fuzzy
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"Hvis det første tegn i N (antal byte eller linjer) er et '+',\n"
+"så udskriv fra N'te element fra starten af hver fil, ellers udskriv de\n"
+"sidste N elementer i filen. N kan have en multiplikatorendelse:\n"
+"b for 512, k for 1024, m for 1048576 (1 Meg).\n"
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"Med --follow (-f) vil 'tail' som standard følge fildeskriptoren, hvilket\n"
+"betyder at selv om en 'tail'-et fil omdøbes, vil 'tail' fortsætte med at "
+"følge\n"
+"dens slutning. "
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"Den normale opførsel er ikke ønskværdig når du virkelig ønsker at\n"
+"følge det faktiske navn på filen og ikke fildeskriptoren (fx ved "
+"logrotation).\n"
+"Brug --follow=navn i dette tilfælde. Dette får 'tail' til at følge den\n"
+"angivne fil ved at genåbne den med mellemrum for at se om den er blevet "
+"fjernet og\n"
+"genskabt af et andet program.\n"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "lukker %s (fd=%d)"
+
+#: src/tail.c:411
+#, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: kan ikke søge til relativt afsæt %s"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s: kan ikke søge til afsæt relativt til slutningen %s"
+
+#: src/tail.c:867
+#, fuzzy, c-format
+msgid "%s has become inaccessible"
+msgstr "'%s' er blevet utilgængelig"
+
+#: src/tail.c:884
+#, fuzzy, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+"'%s' er blevet erstattet af en fil der ikke kan laves 'tail' på; giver op "
+"for dette navn"
+
+#: src/tail.c:905
+#, fuzzy, c-format
+msgid "%s has become accessible"
+msgstr "'%s' er blevet tilgængelig"
+
+#: src/tail.c:913
+#, fuzzy, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "'%s' er blevet oprettet. Følger efter slutningen af ny fil"
+
+#: src/tail.c:924
+#, fuzzy, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "'%s' er blevet erstattet. Følger efter slutningen af ny fil"
+
+#: src/tail.c:1025
+#, fuzzy, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: kunne ikke nulstille ikke-blokerende tilstand"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: fil trunkeret"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "ingen filer tilbage"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+"%s: kan ikke følge slutningen på denne filtype; giver op for dette navn"
+
+#: src/tail.c:1439
+#, fuzzy, c-format
+msgid "number in %s is too large"
+msgstr "%s er for stor"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr ""
+"%s: ugyldig maksimum antal af uændrede resultater af kald til stat() mellem "
+"kald til open()"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: ugyldig PID"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: ugyldigt antal sekunder"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, fuzzy, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "advarsel: --retry er kun brugbart ved følgning af navn"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr "advarsel: PID ignoreret; --pid=PID er kun brugbart ved følgning"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "advarsel: --pid=PID er ikke understøttet på dette system"
+
+#: src/tail.c:1667
+#, fuzzy, c-format
+msgid "cannot follow %s by name"
+msgstr "kan ikke finde ud af systemnavnet"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Kopier standard-ind til hver FIL og til standard-ud.\n"
+"\n"
+" -a, --append tilføj til de angivne FILer, overskriv ikke\n"
+" -i, --ignore-interrrupts ignorer afbrydningssignaler\n"
+
+#: src/tee.c:71
+#, fuzzy
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Hvis ingen FIL er angivet, eller FIL er -, læses fra standard-ind.\n"
+
+#: src/test.c:125
+#, fuzzy, c-format
+msgid "missing argument after %s"
+msgstr "manglende argument til '%s'"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "ugyldigt antal %s"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "')' forventet\n"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "')' forventet, fandt %s\n"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: unær operator forventet\n"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "-nt accepterer ikke -l\n"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "-ef accepterer ikke -l\n"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "-ot accepterer ikke -l\n"
+
+#: src/test.c:368
+msgid "unknown binary operator"
+msgstr "ukendt binær operator"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: binær operator forventet\n"
+
+#: src/test.c:694
+#, fuzzy
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Brug: %s UDTRYK\n"
+" eller: [ UDTRYK ]\n"
+" eller: %s FLAG\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"Returnér med en statusværdi som bestemmes af UDTRYK.\n"
+"\n"
+
+#: src/test.c:707
+#, fuzzy
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"\n"
+"UDTRYK er sandt eller falsk og sætter returværdien. Det er én af:\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+"\n"
+" ( UDTRYK ) UDTRYK er sandt\n"
+" ! UDTRYK UDTRYK er falsk\n"
+" UDTRYK1 -a UDTRYK2 både UDTRYK1 og UDTRYK2 er sande\n"
+" UDTRYK1 -o UDTRYK2 mindst ét af udtrykkene er sande\n"
+
+#: src/test.c:719
+#, fuzzy
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"\n"
+" [-n] STRENG længden af STRENG er forskellig fra nul\n"
+" -z STRENG længden af STRENG er nul\n"
+" STRENG1 = STRENG2 strengene er ens\n"
+" STRENG1 != STRENG2 strengene er forskellige\n"
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" HELTAL1 -eq HELTAL2 HELTAL1 er lig med HELTAL2\n"
+" HELTAL1 -ge HELTAL2 HELTAL1 er større end eller lig med HELTAL2\n"
+" HELTAL1 -gt HELTAL2 HELTAL1 er større end HELTAL2\n"
+" HELTAL1 -le HELTAL2 HELTAL1 er mindre end eller lig med HELTAL2\n"
+" HELTAL1 -lt HELTAL2 HELTAL1 er mindre end HELTAL2\n"
+" HELTAL1 -ne HELTAL2 HELTAL1 er forskellig fra HELTAL2\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+"\n"
+" FIL1 -ef FIL2 FIL1 og FIL2 har samme enheds- og inodenummer\n"
+" FIL1 -nt FIL2 FIL1 er nyere (ændringstidspunkt) end FIL2\n"
+" FIL1 -ot FIL2 FIL1 er ældre end FIL2\n"
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+"\n"
+" -b FIL FIL findes og er en specialfil for blokadgang\n"
+" -c FIL FIL findes og er en specialfil for tegnadgang\n"
+" -d FIL FIL findes og er et katalog\n"
+" -e FIL FIL findes\n"
+
+#: src/test.c:749
+#, fuzzy
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+" -f FIL FIL findes og er en almindelig fil\n"
+" -g FIL FIL findes og har sæt-gruppe-ID-bitten sat\n"
+" -h FIL FIL findes og er en symbolsk lænke (samme som -L)\n"
+" -G FIL FIL findes og ejes af den effektiv gruppeidentitet\n"
+" -k FIL FIL findes med klæbrigbitten sat\n"
+
+#: src/test.c:756
+#, fuzzy
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+" -L FIL FIL findes og er en symbolsk lænke (samme som -h)\n"
+" -O FIL FIL findes og ejes af den effektive brugeridentitet\n"
+" -p FIL FIL findes og er en navngivet datakanal\n"
+" -r FIL FIL findes og er læsbar\n"
+" -s FIL FIL findes og har størrelse større end nul\n"
+
+#: src/test.c:763
+#, fuzzy
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+" -S FIL FIL findes og er en sokkel\n"
+" -t [FI] filidentifikator FI (standard-ud hvis intet angives) er åbnet "
+"på en\n"
+" terminal\n"
+" -u FIL FIL findes og dens set-user-ID-bit er sat\n"
+" -w FIL FIL findes og er skrivbar\n"
+" -x FIL FIL findes og kan udføres\n"
+
+#: src/test.c:770
+#, fuzzy
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"Vær opmærksom på at paranteser skal være beskyttet (f.eks. med omvendte "
+"skråstreger)\n"
+"for skaller. HELTAL kan også være -l STRENG, som evalueres til længden\n"
+"af STRENG'en.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "manglende ']'\n"
+
+#: src/test.c:846
+#, fuzzy, c-format
+msgid "extra argument %s"
+msgstr "for mange argumenter"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "ugyldigt datoformat %s"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "opretter %s"
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr "kan ikke røre %s"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "sætter tider for %s"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+"Opdatér læsnings- og ændringstider for FIL(er) til nuværende tid og dato.\n"
+"\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a ændr kun læsningstidspunkt\n"
+" -c opret ikke nogen filer\n"
+" -d, --date=STRENG læs STRENG og brug det i stedet for nuværende "
+"klokkeslæt\n"
+" -f (ignoreret)\n"
+" -m ændr kun ændringstidspunkt\n"
+
+#: src/touch.c:248
+#, fuzzy
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --reference=FIL brug denne fils tider i stedet for nuværende\n"
+" klokkeslæt\n"
+" -t STAMP brug MMDDttmm[[HH]ÅÅ][.ss] i stedet for nuværende\n"
+" klokkeslæt\n"
+" --time=ORD ORD er tidsformat: access, atime, use (ligesom -a)\n"
+" mtime, modify (ligesom -m)\n"
+
+#: src/touch.c:257
+#, fuzzy
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"Bemærk at -d og -t flagene tager forskellige tidspunkts- og dato-formater.\n"
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "kan ikke angive tidspunkter fra mere end én kilde"
+
+#: src/touch.c:389
+#, fuzzy, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+"advarsel: 'touch %s' er forældet; brug 'touch -t %04d%02d%02d%02d%02d.%02d'"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Brug: %s [OPTION]... MÆNGDE1 [MÆNGDE2]\n"
+
+#: src/tr.c:294
+#, fuzzy
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Oversæt, klem sammen og/eller fjern tegn fra standard-ind,\n"
+"udskriv til standard-ud.\n"
+"\n"
+" -c, --complement komplementér først MÆNGDE1\n"
+" -d, --delete slet tegn i MÆNGDE1, oversæt ikke\n"
+" -s, --squeeze-repeats erstat hver række af gentagne inddatategn som er\n"
+" listet i MÆNGDE1 med et enkelt af dette tegn\n"
+" -t, --truncate-set1 forkort først MÆNGDE1 til længden af MÆNGDE2\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"MÆNGDE er angivet med strenge af tegn. De fleste tegn står for sig\n"
+"selv. Følgende sekvenser tolkes specielt:\n"
+"\n"
+" \\NNN tegn med oktalværdi NNN (1 til 3 oktale cifre)\n"
+" \\\\ omvendt skråstreg\n"
+" \\a hørbar BEL\n"
+" \\b baktegn\n"
+" \\f sideskift (FF)\n"
+" \\n linjeskift (LF)\n"
+" \\r vognretur (CR)\n"
+" \\t vandret tabulator\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v lodret tabulator\n"
+" TEGN1-TEGN2 alle tegn fra TEGN1 til TEGN2, stigende\n"
+" [TEGN*] i MÆNGDE2, kopier af TEGN indtil samme længde til MÆNGDE1\n"
+" [TEGN*ANTAL] ANTAL kopier af TEGN, ANTAL er oktal, hvis det begynder "
+"med 0\n"
+" [:alnum:] alle bogstaver og tal\n"
+" [:alpha:] alle bogstaver\n"
+" [:blank:] alle vandrette blanke tegn\n"
+" [:cntrl:] alle kontroltegn\n"
+" [:digit:] alle cifre\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] alle skrivbare tegn, undtaget blanke tegn\n"
+" [:lower:] alle små bogstaver\n"
+" [:print:] alle skrivbare tegn, inkluderet blanke tegn\n"
+" [:punct:] alle tegnsætningstegn\n"
+" [:space:] alle vandrette og lodrette blanke tegn\n"
+" [:upper:] alle store bogstaver\n"
+" [:xdigit:] alle hexadecimale cifre\n"
+" [=TEGN=] alle tegn som er lig TEGN\n"
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"Oversættelse sker hvis -d ikke er givet, og både MÆNGDE1 og MÆNGDE2 er der.\n"
+"-t kan kun blive brugt ved oversættelse. MÆNGDE2 bliver udvidet til længden "
+"af\n"
+"MÆNGDE1 ved at repetere dets sidste tegn om nødvendigt. "
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"Tegn til overs i \n"
+"MÆNGDE2 ignoreres. Kun [:lower:] og [:upper:] er garanteret at ekspandere i\n"
+"stigende rækkefølge; brugt i MÆNGDE2 ved oversættelse kan de kun bruges i "
+"par\n"
+"for at angive oversættelse fra store/små til små/store bogstaver. "
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"-s bruger MÆNGDE1 hvis der ikke er oversættelse eller sletning; ellers "
+"bruger \n"
+"sammenklemning MÆNGDE2 og sker efter oversættelse eller sletning.\n"
+
+#: src/tr.c:519
+#, fuzzy, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"advarsel: den flertydige oktal-beskyttelse \\%c%c%c bliver tolket som \n"
+"\t2-byte-sekvensen \\0%c%c, '%c'"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "række-slutpunkt i '%s-%s' er i omvendt sorteringsrækkefølge"
+
+#: src/tr.c:838
+#, fuzzy, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "ugyldig gentagelsestæller '%s' i [c*n]-konstruktion"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "mangler navn på tegnklasse '[::]'"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "mangler tegn for ækvivalensklasse '[==]'"
+
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "ugyldig tegnklasse '%s'"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: ækvivalensklasseoperanden skal være et enkelt tegn"
+
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr "forvildet tegn i feltangivelse"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "gentagelseskonstruktionen [c*] kan ikke optræde i streng1"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "kun en [c*] gentagelseskonstruktion kan optræde i streng2"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "[=c=]-udtryk kan ikke optræde i streng2 under oversættelse"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "når mængde1 ikke bliver forkortet, kan streng2 ikke være tom"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"når det oversættes med komplementerede tegnklasser\n"
+"skal streng2 mappe alle tegn i domænet til én"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"ved oversættelse er de eneste tegnklasser som kan være i streng2\n"
+"'upper' og 'lower'"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "[c*]-konstruktionen kan kun optræde i streng2 ved oversættelse"
+
+#: src/tr.c:1731
+#, fuzzy
+msgid "Two strings must be given when translating."
+msgstr "to strenge skal være givet ved oversættelse"
+
+#: src/tr.c:1741
+#, fuzzy
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"kun én streng kan opgives når der slettes uden sammenklemning af gentagelser"
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "fejlplaceret [:upper:]- og/eller [:lower:]-konstruktion"
+
+#: src/true.c:42
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Brug: %s NAVN\n"
+" eller: %s FLAG\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Brug: %s [FLAG] [FIL]\n"
+"Skriv en fuldstændig sorteret liste konsistent med den delvise sortering\n"
+"i FIL. Hvis ingen FIL eller hvis FIL er -, læses fra standard-ind.\n"
+"\n"
+
+#: src/tsort.c:474
+#, fuzzy, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: inddata indeholder en løkke:"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: inddata indeholder en løkke:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Brug: %s [FLAG]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Udskriv filnavnet for terminalen som er koblet til standard-ind.\n"
+"\n"
+" -s, --silent, --quiet udskriv ikke noget, returnér kun en "
+"afslutningsstatus\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "ikke en tty"
+
+#: src/uname.c:118
+#, fuzzy
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Udskriv bestemt systeminformation. Hvis ingen FLAG blev angivet bruges -s.\n"
+"\n"
+" -a, --all udskriv al information, i følgende rækkefølge:\n"
+" -s, --kernel-name udskriv kernens navn\n"
+" -n, --nodename udskriv maskinens netværksnavn\n"
+" -r, --kernel-release udskriv kernens udgave\n"
+
+#: src/uname.c:127
+#, fuzzy
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v, --kernel-version udskriv kernens version\n"
+" -m, --machine udskriv maskintypen\n"
+" -p, --processor udskriv processortypen\n"
+" -i, --hardware-platform udskriv maskinelplatform\n"
+" -o, --operating-system udskriv operativsystemet\n"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "kan ikke finde ud af systemnavnet"
+
+#: src/unexpand.c:125
+#, fuzzy
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Konvertér mellemrum i hver FIL til tabulatorer, med uddata til standard-ud.\n"
+"Uden en FIL, eller når FIL er -, læses standard-ind.\n"
+
+#: src/unexpand.c:133
+#, fuzzy
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all konvertér alle blanke, i stedet for initielle blanke\n"
+" --first-only konvertér kun indledende sekvenser af blanke "
+"(tilsidesætter -a)\n"
+" -t, --tabs=ANTAL hav tabulatorer ANTAL tegn fra hinanden i stedet for "
+"8\n"
+" -t, --tabs=LISTE brug en kommasepareret liste med eksplicitte "
+"tabulatorpositioner\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "%s er for stor"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Brug: %s [FLAG]... [INDDATA [UDDATA]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"Fjern ekstra identiske efterfølgende linjer fra IND\n"
+"(eller standard-ind), og skriv til UD (eller standard-ud).\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count begynd linjer med antal forekomster\n"
+" -d, --repeated udskriv kun linjer der er flere af\n"
+
+#: src/uniq.c:151
+#, fuzzy
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated[=adskillelses-metode] skriv alle linjer der er flere "
+"af\n"
+" adskillelses-metode={none(forvalgt),prepend,"
+"separate)}\n"
+" Adskillelse gøres med blanke linjer.\n"
+" -f, --skip-fields=N sammenlign ikke de første N felter\n"
+" -i, --ignore-case ignorér forskelle med store og små bogstaver\n"
+" -s, --skip-chars=N sammenlign ikke de første N tegn\n"
+" -u, --unique udskriv kun unikke linjer\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr " -w, --check-chars=N sammenlign ikke mere end N tegn per linje\n"
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"Et felt er en række blanke tegn, derefter andre tegn. Felter hoppes over før "
+"tegn.\n"
+
+#: src/uniq.c:350
+#, fuzzy, c-format
+msgid "too many repeated lines"
+msgstr "for mange argumenter"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "ugyldigt antal felter at hoppe over"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "ugyldigt antal byte at hoppe over"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "ugyldigt antal byte at sammenligne"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+"skrivning af alle duplikerede linjer *og* gentagelsesantal giver ikke mening"
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Brug: %s FIL\n"
+" eller: %s FLAG\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"Kald funktionen unlink for at fjerne angivet FIL.\n"
+"\n"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "kan ikke aflænke %s"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "kunne ikke finde ud af boot-tid"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s oppe "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "am"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "pm"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr ""
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr ""
+
+#: src/uptime.c:143
+#, fuzzy, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "dage"
+msgstr[1] "dag"
+
+#: src/uptime.c:147
+#, fuzzy, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "brugere"
+msgstr[1] "bruger"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", belastningennemsnit: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Brug: %s [FLAG]... [ FIL ]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Udskriv den aktuelle tid, hvor længe systemet har været oppe,\n"
+"antal brugere på systemet, og det gennemsnitlige antal opgaver\n"
+"i kørselskøen for de seneste 1, 5 og 15 minutter.\n"
+"Hvis FIL ikke er angivet, brug da %s. %s som FIL er almindeligt.\n"
+"\n"
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Udskriv hvem som for øjeblikket er logget ind ifølge FIL.\n"
+"Hvis FIL ikke er angivet bruges %s. %s som FIL er almindeligt.\n"
+"\n"
+
+#: src/wc.c:113
+#, fuzzy
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Udskriv antal oktetter, ord og linjeskift for hver FIL, og en total-linje\n"
+"hvis mere end én FIL er angivet. Hvis ingen FIL er angivet,\n"
+"eller FIL er -, læses fra standard-ind.\n"
+" -c, --bytes udskriv antal oktetter\n"
+" -m, --bytes udskriv antal tegn\n"
+" -l, --lines udskriv antal linjeskift.\n"
+
+#: src/wc.c:121
+#, fuzzy
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" -L, --max-line-length udskriv længden af den længste linje\n"
+" -w, --words udskriv antal ord\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr " gammel "
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "term="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "afslut="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "tidsændring"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "kørselsniveau"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "sidste="
+
+#: src/who.c:545
+#, fuzzy, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"antal brugere=%u\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "NAVN"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "LINJE"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "TID"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr "INAKTIV"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "KOMMENTAR"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "AFSLUT"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Brug: %s [FLAG]... [ FIL | ARG1 ARG2 ]\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" -a, --all samme som -b -d --login -p -r -t -T -u\n"
+" -b, --boot tid for seneste systemopstart\n"
+" -d, --dead udskriv døde processer\n"
+" -H, --heading udskriv linje med kolonneoverskrifter\n"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+#, fuzzy
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+" -l, --lookup forsøg at finde værtsnavne med hjælp af DNS\n"
+" (-l forældet, brug --lookup)\n"
+" -m kun værtsnavn og brugernavn associeret med standard-ind\n"
+" -p, --process udskriv aktive processer startede af init\n"
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+" -q, --count alle indlogningsnavne og antal indloggede brugere\n"
+" -r, --runleve skriv aktuelt kørselsniveau\n"
+" -s, --short skriv kun navn, linje og tid (standard)\n"
+" -t, --time skriv seneste ændring af systemklokken\n"
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+" -T, -w, --mesg tilføj brugeres meddelelsestatus som +, - eller ?\n"
+" -u, --users list indloggede brugere\n"
+" --message samme som -T\n"
+" --writeable samme som -T\n"
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"Hvis FIL ikke er angivet, brug %s. %s som FIL er almindeligt.\n"
+"Hvis ARG1 ARG2 er angivet, antages -m: \"am i\" eller \"mom likes\" er "
+"almindeligt.\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr "Advarsel: -i vil blive fjernet i en fremtidig udgave; brug -u i stedet"
+
+#: src/whoami.c:51
+#, fuzzy
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Udskriv brugernavnet tilknyttet den nuværende effektive brugeridentitet.\n"
+"Samme som id -un.\n"
+"\n"
+
+#: src/whoami.c:95
+#, fuzzy, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "kan ikke finde navnet for bruger-ID %u"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Brug: %s [STRENG]...\n"
+" eller: %s FLAG\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"Skriv gentagne gange en linje med alle specificerede STRENG'e, eller \"y\"\n"
+"\n"
+
+#~ msgid "strip failed"
+#~ msgstr "strip mislykkedes"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "kan ikke ændre ejer og/eller gruppe på %s"
+
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "kan ikke skifte katalog til %s"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "kan ikke finde logind-gruppen for en numerisk bruger-ID"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Dette er frit programmel; se kildeteksten for betingelser for kopiering. "
+#~ "Der er INGEN\n"
+#~ "garanti; ikke engang for SALGBARHED eller EGNETHED FOR ET SPECIELT "
+#~ "FORMÅL.\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "for få argumenter"
+
+#~ msgid "Torbjorn Granlund and Richard M. Stallman"
+#~ msgstr "Torbjørn Granlund og Richard M. Stallman"
+
+#~ msgid "closing standard output"
+#~ msgstr "lukker standard-ud"
+
+#~ msgid "cannot change to null group"
+#~ msgstr "kan ikke ændre til nul-gruppe"
+
+#~ msgid "group number"
+#~ msgstr "gruppenummer"
+
+#~ msgid "invalid group number %s"
+#~ msgstr "ugyldigt gruppenummer %s"
+
+#~ msgid ""
+#~ "\n"
+#~ "Each MODE is one or more of the letters ugoa, one of the symbols +-= and\n"
+#~ "one or more of the letters rwxXstugo.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Hver TILSTAND skal være ét eller flere af bogstaverne ugoa, ét af "
+#~ "symbolerne +-=\n"
+#~ "og ét eller flere af bogstaverne rwxXstugo.\n"
+
+#~ msgid "invalid mode string: %s"
+#~ msgstr "ugyldig tilstands-streng: %s"
+
+#~ msgid "unable to restore permissions of %s"
+#~ msgstr "kunne ikke genskabe adgangsrettigheder på %s"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "Brug: %s [FLAG]... EJER[:[GRUPPE]] FIL...\n"
+#~ " eller: %s [FLAG]... :GRUPPE FIL...\n"
+#~ " eller: %s [FLAG]... --reference=RFIL FIL...\n"
+
+#~ msgid "Richard Stallman and David MacKenzie"
+#~ msgstr "Richard Stallman og David MacKenzie"
+
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "Brug: %s [FLAG]... VENSTRE_FIL HØJRE_FIL\n"
+
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "kan ikke overskrive katalog %s"
+
+#~ msgid "Torbjorn Granlund, David MacKenzie, and Jim Meyering"
+#~ msgstr "Torbjørn Granlund, David MacKenzie og Jim Meyering"
+
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "%s: angivet mål er ikke et katalog"
+
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr "kopierer flere filer, men sidste argument, %s, er ikke et katalog"
+
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "advarsel: --version-control (-V) er forældet; understøttelse for det\n"
+#~ "vil blive fjernet i en fremtidig udgave. Brug --backup=%s i stedet."
+
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "symbolske lænker understøttes ikke på dette system"
+
+#~ msgid "Stuart Kemp and David MacKenzie"
+#~ msgstr "Stuart Kemp og David MacKenzie"
+
+#~ msgid "%s: `+' or `-' expected after delimeter"
+#~ msgstr "%s: '+' eller '-' forventet efter skilletegn"
+
+#~ msgid "David Ihnat, David MacKenzie, and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie og Jim Meyering"
+
+#~ msgid ""
+#~ "Display the current time in the given FORMAT, or set the system date.\n"
+#~ "\n"
+#~ " -d, --date=STRING display time described by STRING, not `now'\n"
+#~ " -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+#~ " -ITIMESPEC, --iso-8601[=TIMESPEC] output date/time in ISO 8601 "
+#~ "format.\n"
+#~ " TIMESPEC=`date' for date only,\n"
+#~ " `hours', `minutes', or `seconds' for date "
+#~ "and\n"
+#~ " time to the indicated precision.\n"
+#~ " --iso-8601 without TIMESPEC defaults to "
+#~ "`date'.\n"
+#~ msgstr ""
+#~ "Vis den nuværende tid i det givne FORMAT eller sæt systemdatoen.\n"
+#~ "\n"
+#~ " -d, --date=STRENG vis tiden beskrevet af STRENG, ikke 'nu'\n"
+#~ " -f, --file=DATOFIL som --date en gang for hver linje af DATOFIL\n"
+#~ " -ITIDSSPEC, --iso-8601[=TIDSSPEC] udskriv en dato/tid streng i henhold "
+#~ "til ISO 8601.\n"
+#~ " TIDSSPEC='date' for kun dato,\n"
+#~ " 'hours', 'minutes', eller `seconds' for dato "
+#~ "og\n"
+#~ " tid til den indikerede præcision.\n"
+#~ " --iso-8601 uden TIDSSPEC er det samme som "
+#~ "'date'.\n"
+
+#~ msgid ""
+#~ " %F same as %Y-%m-%d\n"
+#~ " %g the 2-digit year corresponding to the %V week number\n"
+#~ " %G the 4-digit year corresponding to the %V week number\n"
+#~ msgstr ""
+#~ " %F samme som %Y-%m-%d\n"
+#~ " %g det 2-cifrede årstal svarende til %V-ugenummeret\n"
+#~ " %G det 4-cifrede årstal svarende til %V-ugenummeret\n"
+
+#~ msgid ""
+#~ " %z RFC-822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %Z time zone (e.g., EDT), or nothing if no time zone is determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr ""
+#~ " %z RFC-822-numerisk tidszone (+0100) (en tilføjelse som ikke er "
+#~ "standard)\n"
+#~ " %Z tidszone (fx CET), eller intet hvis tidszonen ikke kunne "
+#~ "bestemmes\n"
+#~ "\n"
+#~ "Normalt udfylder date numeriske felter med nuller. GNU date forstår\n"
+#~ "følgende bestemningstegn mellem \"%\" og en numerisk anvisning.\n"
+#~ "\n"
+#~ " \"-\" (bindestreg) udfyld ikke feltet\n"
+#~ " \"_\" (understregning) udfyld feltet med blanktegn\n"
+
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "for mange argumenter der ikke er flag: %s%s"
+
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-822 (-R) option"
+#~ msgstr "en formatstreng kan ikke angives når tilvalget --rfc-822 bruges"
+
+#~ msgid "undefined"
+#~ msgstr "ikke-defineret"
+
+#~ msgid "cannot get time of day"
+#~ msgstr "kan ikke bestemme klokkeslæt"
+
+#~ msgid "Paul Rubin, David MacKenzie, and Stuart Kemp"
+#~ msgstr "Paul Rubin, David MacKenzie og Stuart Kemp"
+
+#~ msgid ""
+#~ " notrunc do not truncate the output file\n"
+#~ " ucase change lower case to upper case\n"
+#~ " swab swap every pair of input bytes\n"
+#~ " noerror continue after read errors\n"
+#~ " sync pad every input block with NULs to ibs-size; when used\n"
+#~ " with block or unblock, pad with spaces rather than NULs\n"
+#~ msgstr ""
+#~ " notrunc afkort ikke uddatafilen\n"
+#~ " ucase lav små bogstaver om til store\n"
+#~ " swab ombyt hvert par af byte i inddata\n"
+#~ " noerror fortsæt efter læsefejl\n"
+#~ " sync udfyld hver inddatablok med nul-tegn indtil ibs-størrelse;\n"
+#~ " ved brug med block eller unblock - udfyld med blanke i "
+#~ "stedet\n"
+#~ " for med nul-tegn\n"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "%s+%s blokke ind\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "%s+%s blokke ud\n"
+
+#~ msgid "truncated records"
+#~ msgstr "afkortede blokke"
+
+#~ msgid ""
+#~ "only one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, "
+#~ "{unblock,sync}"
+#~ msgstr ""
+#~ "kun én konvertering i {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, "
+#~ "{unblock,sync}"
+
+#~ msgid "Torbjorn Granlund, David MacKenzie, Larry McVoy, and Paul Eggert"
+#~ msgstr "Torbjørn Granlund, David MacKenzie, Larry McVoy og Paul Eggert"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr ""
+#~ "flaget for at udskrive dircolors' interne database til uddata\n"
+#~ "tillader ikke argumenter"
+
+#~ msgid "David MacKenzie and Jim Meyering"
+#~ msgstr "David MacKenzie og Jim Meyering"
+
+#~ msgid ""
+#~ "Torbjorn Granlund, David MacKenzie, Larry McVoy, Paul Eggert, and Jim "
+#~ "Meyering"
+#~ msgstr ""
+#~ "Torbjørn Granlund, David MacKenzie, Larry McVoy, Paul Eggert og Jim "
+#~ "Meyering"
+
+#~ msgid ""
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -k like --block-size=1K\n"
+#~ " -l, --count-links count sizes many times if hard linked\n"
+#~ msgstr ""
+#~ " -h, --human-readable skriv størrelser i et læsevenligt format \n"
+#~ " (fx 1K 234M 2G)\n"
+#~ " -H, --si det samme, men brug 1000 som grundtal, ikke 1024\n"
+#~ " -k, --kilobytes ligesom --block-size=1024\n"
+#~ " -l, --count-links tæl størrelsen med flere gange for hårde lænker\n"
+
+#~ msgid "cannot change to parent of directory %s"
+#~ msgstr "kan ikke gå til overkatalog for kataloget %s"
+
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ msgstr ""
+#~ "Ekko STRENG'e til standard-ud.\n"
+#~ "\n"
+#~ " -n udskriv ikke det efterfølgende linjeskift\n"
+#~ " -e aktivér tolkning af sekvenserne med omvendt skråstreg "
+#~ "nævnt nedenfor\n"
+#~ " -E deaktivér tolkningen af disse sekvenser i STRENG'e\n"
+
+#~ msgid "Richard Mlynarik and David MacKenzie"
+#~ msgstr "Richard Mlynarik og David MacKenzie"
+
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "'-LIST'-flaget er forældet; brug '-t LIST'"
+
+#~ msgid ""
+#~ "warning: unportable BRE: `%s': using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr ""
+#~ "advarsel: ikke-portabel BRE (Basic Regular Expression): '%s': \n"
+#~ "brug af '^' som første tegn af et almindelig regulært udtryk er ikke\n"
+#~ "portabelt; '^' ignoreres"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Brug: %s [ignorerede kommandolinje-argumenter]\n"
+#~ " eller: %s FLAG\n"
+#~ "Afslut med en statuskode der angiver fejl.\n"
+#~ "\n"
+#~ "Disse navne på flag kan ikke forkortes.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "In -wNUMBER, the letter `w' may be omitted.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ved -wTAL kan bogstavet 'w' udelades.\n"
+
+#~ msgid "invalid width option: `%s'"
+#~ msgstr "ugyldig linjelængdeflag: \"%s\""
+
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "'%s'-flag er forældet; brug '%s'"
+
+#~ msgid ""
+#~ " -c, --bytes=SIZE print first SIZE bytes\n"
+#~ " -n, --lines=NUMBER print first NUMBER lines instead of first 10\n"
+#~ msgstr ""
+#~ " -c, --bytes=STØRRELSE udskriv første STØRRELSE bytes\n"
+#~ " -n, --lines=ANTAL udskriv første ANTAL linjer i stedet for 10\n"
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "ukendt flag \"-%c\""
+
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "'-%s'-flaget er forældet; brug '-%c %.*s%.*s%s'"
+
+#~ msgid "Arnold Robbins and David MacKenzie"
+#~ msgstr "Arnold Robbins og David MacKenzie"
+
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr ""
+#~ "installerer flere filer, men sidste argument, %s, er ikke et katalog"
+
+#~ msgid "%s is a directory"
+#~ msgstr "%s er et katalog"
+
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "kan ikke få tidsstempler for %s"
+
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "ugyldigt feltnummer for fil 1: \"%s\""
+
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "ugyldigt feltnummer for fil 2: \"%s\""
+
+#~ msgid "too many non-option arguments"
+#~ msgstr "for mange argumenter, der ikke er flag"
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "for få argumenter, der ikke er flag"
+
+#~ msgid "Mike Parker and David MacKenzie"
+#~ msgstr "Mike Parker og David MacKenzie"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: Filen eksisterer"
+
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "opret symbolsk lænke %s til %s"
+
+#~ msgid "create hard link %s to %s"
+#~ msgstr "opret hård lænke %s til %s"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "Brug: %s [FLAG]... MÅL [LÆNKENAVN]\n"
+#~ " eller: %s [FLAG]... MÅL... KATALOG\n"
+#~ " eller: %s [FLAG]... --target-directory=KATALOG MÅL...\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr "ved oprettelse af flere lænker skal sidste argument være et katalog"
+
+#~ msgid ""
+#~ " -g like -l, but do not list owner\n"
+#~ " -G, --no-group inhibit display of group information\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " --si likewise, but use powers of 1000 not 1024\n"
+#~ " -H, --dereference-command-line\n"
+#~ " follow symbolic links listed on the command "
+#~ "line\n"
+#~ " --dereference-command-line-symlink-to-dir\n"
+#~ " follow each command line symbolic link\n"
+#~ " that points to a directory\n"
+#~ msgstr ""
+#~ " -g som -l, men vís ikke ejer\n"
+#~ " -G, --no-group medtag ikke gruppeinformation\n"
+#~ " -h, --human-readable skriv størrelser i et læsevenligt format \n"
+#~ " (f.eks. 1K 234M 2G)\n"
+#~ " --si det samme, men brug 1000 som grundtal, ikke "
+#~ "1024\n"
+#~ " -H --dereference-command-line følg symbolske lænker på kommandolinjen\n"
+#~ " --dereference-command-line-symlink-to-dir\n"
+#~ " følg symbolske lænker på kommandolinjen,\n"
+#~ " der peger til et katalog\n"
+
+#~ msgid "Ulrich Drepper and Scott Miller"
+#~ msgstr "Ulrich Drepper og Scott Miller"
+
+#~ msgid ""
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -b, --binary læs filerne i binærtilstand (forvalg i DOS/"
+#~ "Windows)\n"
+#~ " -c, --check tjek %s-summerne mod angivet liste\n"
+#~ " -t, --text læs filerne i teksttilstand (forvalgt)\n"
+#~ "\n"
+
+#~ msgid "file"
+#~ msgstr "fil"
+
+#~ msgid "files"
+#~ msgstr "filer"
+
+#~ msgid "checksum"
+#~ msgstr "kontrolsum"
+
+#~ msgid "checksums"
+#~ msgstr "kontrolsummer"
+
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "flagene --string og --check kan ikke bruges samtidigt"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "ingen fil kan angives når --string bruges"
+
+#~ msgid "only one argument may be specified when using --check"
+#~ msgstr "kun et argument kan angives når --check bruges"
+
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "kan ikke sætte adgangsrettigheder på kataloget %s"
+
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "kan ikke ændre adgangsrettigheder på fifo %s"
+
+#~ msgid "wrong number of arguments"
+#~ msgstr "forkert antal argumenter"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr "større- og mindre-nummer kan ikke angives for fifo-filer"
+
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "kan ikke sætte adgangsrettigheder på %s"
+
+#~ msgid "Mike Parker, David MacKenzie, and Jim Meyering"
+#~ msgstr "Mike Parker, David MacKenzie og Jim Meyering"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr "ved flytning af flere filer skal sidste argument være et katalog"
+
+#~ msgid ""
+#~ "Run COMMAND with an adjusted scheduling priority.\n"
+#~ "With no COMMAND, print the current scheduling priority. ADJUST is 10\n"
+#~ "by default. Range goes from -20 (highest priority) to 19 (lowest).\n"
+#~ "\n"
+#~ " -n, --adjustment=ADJUST increment priority by ADJUST first\n"
+#~ msgstr ""
+#~ "Kør KOMMANDO med en justeret behandlingsprioritet.\n"
+#~ "Uden nogen KOMMANDO, udskriv nuværende behandlingsprioritet. JUSTERING\n"
+#~ "er forvalgt til 10. Skalaen går fra -20 (højeste prioritet) til 19 "
+#~ "(laveste).\n"
+#~ "\n"
+#~ " -n, --adjustment=JUSTERING øg prioriteten med JUSTERING først\n"
+
+#~ msgid "invalid option `%s'"
+#~ msgstr "ugyldigt flag '%s'"
+
+#~ msgid "invalid priority `%s'"
+#~ msgstr "ugyldig prioritet '%s'"
+
+#~ msgid "cannot get priority"
+#~ msgstr "kan ikke bestemme prioritet"
+
+#~ msgid "cannot set priority"
+#~ msgstr "kan ikke sætte prioritet"
+
+#~ msgid "Scott Bartram and David MacKenzie"
+#~ msgstr "Scott Bartram og David MacKenzie"
+
+#~ msgid "old-style offset"
+#~ msgstr "position på gammel form"
+
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "ugyldig 2. operand i kompatibilitetstilstand '%s'"
+
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr ""
+#~ "i kompatibilitetstilstand skal de sidste to argumenter være positioner"
+
+#~ msgid "David M. Ihnat and David MacKenzie"
+#~ msgstr "David M. Ihnat og David MacKenzie"
+
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr ""
+#~ "Tjekker for ikke-portable konstruktioner i filNAVN.\n"
+#~ "\n"
+#~ " -p, --portability tjek for alle POSIX-systemer, ikke kun dette\n"
+
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "stien '%s' indeholder et ikke-portabelt tegn '%c'"
+
+#~ msgid "`%s' is not a directory"
+#~ msgstr "'%s' er ikke et katalog"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "kataloget '%s' er ikke søgbart"
+
+#~ msgid "name `%s' has length %ld; exceeds limit of %ld"
+#~ msgstr "navnet '%s' har længde %ld; overstiger grænsen på %ld"
+
+#~ msgid "path `%s' has length %d; exceeds limit of %ld"
+#~ msgstr "stien '%s' har længde %d; overstiger grænsen på %ld"
+
+#~ msgid "Joseph Arceneaux, David MacKenzie, and Kaveh Ghazi"
+#~ msgstr "Joseph Arceneaux, David MacKenzie og Kaveh Ghazi"
+
+#~ msgid "Pete TerMaat and Roland Huebner"
+#~ msgstr "Pete TerMaat og Roland Hübner"
+
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "'--pages' ugyldigt område for sidenumre: '%s'"
+
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "\"--pages\" ugyldigt startsidenummer: \"%s\""
+
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "\"--pages\" ugyldigt slutsidenummer: \"%s\""
+
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr "'--pages' startsidenummeret er større end slutsidenummeret"
+
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "'--columns=KOLONNER' ugyldigt antal kolonner: '%s'"
+
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%Y-%m-%d %H:%M"
+
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr "start-sidenummeret er større end totalt antal sider: '%d'"
+
+#~ msgid "Page %d"
+#~ msgstr "Side %d"
+
+#~ msgid "David MacKenzie and Richard Mlynarik"
+#~ msgstr "David MacKenzie og Richard Mlynarik"
+
+#~ msgid "\\%c: invalid escape"
+#~ msgstr "\\%c: ugyldig beskyttelse"
+
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "Brug: %s format [argument...]\n"
+
+#~ msgid ""
+#~ "This program is distributed in the hope that it will be useful,\n"
+#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+#~ "GNU General Public License for more details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Dette program er distribueret i håb om at det vil være nyttigt,\n"
+#~ "men UDEN NOGEN GARANTIER, heller ikke implicerede om SALGBARHED eller\n"
+#~ "EGNETHED FOR NOGEN SPECIEL ANVENDELSE. Se 'GNU General Public License'\n"
+#~ "for flere detaljer.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+#~ msgstr ""
+#~ "Du bør have modtaget en kopi af 'GNU General Public License' sammen med\n"
+#~ "dette program - hvis ikke, så skriv til Free Software Foundation Inc.,\n"
+#~ "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "kan ikke skifte katalog fra %s til .."
+
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "kan ikke tage status (lstat) på '.' i %s"
+
+#~ msgid "cannot lstat %s"
+#~ msgstr "kan ikke tage status (lstat) på %s"
+
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "kan ikke skifte katalog fra %s til %s"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "kan ikke slette '.' eller '..'"
+
+#~ msgid "Paul Rubin, David MacKenzie, Richard Stallman, and Jim Meyering"
+#~ msgstr "Paul Rubin, David MacKenzie, Richard Stallman og Jim Meyering"
+
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ " -r, -R, --recursive remove the contents of directories recursively\n"
+#~ " -v, --verbose explain what is being done\n"
+#~ msgstr ""
+#~ "Fjern (unlink) FIL'er.\n"
+#~ "\n"
+#~ " -d, --directory slet kataloger selv om de ikke er tomme (kun "
+#~ "superbruger)\n"
+#~ " -f, --force ignorér ikke-eksisterende filer, ingen "
+#~ "bekræftelse\n"
+#~ " -i, --interactive bed om bekræftelse før sletning af filer\n"
+#~ " -r, -R, --recursive slet indhold af kataloger rekursivt\n"
+#~ " -v, --verbose forklar hvad der sker\n"
+
+#~ msgid ""
+#~ "when the starting value is larger than the limit,\n"
+#~ "the increment must be negative"
+#~ msgstr "når startværdien er større end grænsen skal øgningen være negativ"
+
+#~ msgid ""
+#~ "when the starting value is smaller than the limit,\n"
+#~ "the increment must be positive"
+#~ msgstr "når startværdien er mindre end grænsen skal øgningen være positiv"
+
+#~ msgid "Jim Meyering and Paul Eggert"
+#~ msgstr "Jim Meyering og Paul Eggert"
+
+#~ msgid "Mike Haertel and Paul Eggert"
+#~ msgstr "Mike Haertel og Paul Eggert"
+
+#~ msgid "`-%d' option is obsolete; use `-l %d'"
+#~ msgstr "'-%d'-flaget er forældet; brug '-l %d'"
+
+#~ msgid "*** invalid date/time ***"
+#~ msgstr "*** ugyldig datoi/klokkeslæt ***"
+
+#~ msgid ""
+#~ "Display file or filesystem status.\n"
+#~ "\n"
+#~ " -f, --filesystem display filesystem status instead of file status\n"
+#~ " -c --format=FORMAT use the specified FORMAT instead of the default\n"
+#~ " -L, --dereference follow links\n"
+#~ " -t, --terse print the information in terse form\n"
+#~ msgstr ""
+#~ "Vis fils eller filsystems status.\n"
+#~ "\n"
+#~ " -f, --filesystem vis filsystemstatus i stedet for filstatus\n"
+#~ " -c --format=FORMAT brug det angivne FORMAT i stedet for det normale\n"
+#~ " -L, --dereference følg lænker\n"
+#~ " -t, --terse udskriv informationen i sammentrængt form\n"
+
+#~ msgid "Kayvan Aghaiepour and David MacKenzie"
+#~ msgstr "Kayvan Aghaiepour og David MacKenzie"
+
+#~ msgid "Jay Lepreau and David MacKenzie"
+#~ msgstr "Jay Lepreau og David MacKenzie"
+
+#~ msgid "stdin: read error"
+#~ msgstr "stdind: læsefejl"
+
+#~ msgid "Paul Rubin, David MacKenzie, Ian Lance Taylor, and Jim Meyering"
+#~ msgstr "Paul Rubin, David MacKenzie, Ian Lance Taylor og Jim Meyering"
+
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "%c: ugyldig suffiks-tegn i forældet flag"
+
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "for mange argumenter; Når 'tail's forældede flag-syntaks bruges (%s)\n"
+#~ "kan det ikke være mere end et filargument. Brug det tilsvarende -n "
+#~ "eller\n"
+#~ "-c-flag i stedet."
+
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "Advarsel: det er ikke portabelt at bruge to eller flere filargumenter "
+#~ "med\n"
+#~ "tails gamle flagsyntaks (%s). Brug det tilsvarende -n eller -c-\n"
+#~ "flaget i stedet."
+
+#~ msgid "`%s' option is obsolete; use `%s-%c %.*s'"
+#~ msgstr "'%s'-flaget er forældet; brug '%s-%c %.*s'"
+
+#~ msgid "%s is larger than the maximum file size on this system"
+#~ msgstr "%s er større end den maksimale filstørrelse på dette system"
+
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr "%s: ugyldig maksimum antal af efterfølgende ændringer i størrelse"
+
+#~ msgid "Mike Parker, Richard M. Stallman, and David MacKenzie"
+#~ msgstr "Mike Parker, Richard M. Stallman og David MacKenzie"
+
+#~ msgid "argument expected\n"
+#~ msgstr "argument forventet\n"
+
+#~ msgid "integer expression expected %s\n"
+#~ msgstr "forventet heltalsudtryk %s\n"
+
+#~ msgid "before -lt"
+#~ msgstr "før -lt"
+
+#~ msgid "after -lt"
+#~ msgstr "efter -lt"
+
+#~ msgid "before -le"
+#~ msgstr "før -le"
+
+#~ msgid "after -le"
+#~ msgstr "efter -le"
+
+#~ msgid "before -gt"
+#~ msgstr "før -gt"
+
+#~ msgid "after -gt"
+#~ msgstr "efter -gt"
+
+#~ msgid "before -ge"
+#~ msgstr "før -ge"
+
+#~ msgid "after -ge"
+#~ msgstr "efter -ge"
+
+#~ msgid "before -ne"
+#~ msgstr "før -ne"
+
+#~ msgid "after -ne"
+#~ msgstr "efter -ne"
+
+#~ msgid "before -eq"
+#~ msgstr "før -eq"
+
+#~ msgid "after -eq"
+#~ msgstr "efter -eq"
+
+#~ msgid "after -t"
+#~ msgstr "efter -t"
+
+#~ msgid "FIXME: ksb and mjb"
+#~ msgstr "FIXMIG: ksb og mjb"
+
+#~ msgid "too many arguments\n"
+#~ msgstr "for mange argumenter\n"
+
+#~ msgid ""
+#~ "Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie, and Randy Smith"
+#~ msgstr ""
+#~ "Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie og Randy Smith"
+
+#~ msgid "file arguments missing"
+#~ msgstr "filargumenter mangler"
+
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "ugyldig omvendt skråstreg-beskyttelse '\\%c'"
+
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr ""
+#~ "to strenge skal være givet ved både sletning og sammenklemning af "
+#~ "gentagelser"
+
+#~ msgid "at least one string must be given when squeezing repeats"
+#~ msgstr "mindst en streng skal være givet ved sammenklemning af gentagelser"
+
+#~ msgid ""
+#~ "invalid identity mapping; when translating, any [:lower:] or [:upper:]\n"
+#~ "construct in string1 must be aligned with a corresponding construct\n"
+#~ "([:upper:] or [:lower:], respectively) in string2"
+#~ msgstr ""
+#~ "ugyldig identitetsafbildning; ved oversættelse skal evt. [:lower:]- "
+#~ "eller\n"
+#~ "[:upper:]-konstruktioner i streng1 være placeret i henhold til en\n"
+#~ "tilsvarende konstruktion (henholdsvis [:upper:] eller [:lower:]) i\n"
+#~ "streng2"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Brug: %s [ignorerede kommandolinje-argumenter]\n"
+#~ " eller: %s FLAG\n"
+#~ "Afslut med en statuskode der angiver succes.\n"
+#~ "\n"
+#~ "Disse navne på flag kan ikke forkortes.\n"
+#~ "\n"
+
+#~ msgid "only one argument may be specified"
+#~ msgstr "kun ét argument kan angives"
+
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr "'-LIST' flaget er forældet; brug '--first-only -t LIST'"
+
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "'-%lu'-flaget er forældet; brug '-f %lu'"
+
+#~ msgid "Joseph Arceneaux and David MacKenzie"
+#~ msgstr "Joseph Arceneaux og David MacKenzie"
+
+#~ msgid "Paul Rubin and David MacKenzie"
+#~ msgstr "Paul Rubin og David MacKenzie"
+
+#~ msgid "Joseph Arceneaux, David MacKenzie, and Michael Stone"
+#~ msgstr "Joseph Arceneaux, David MacKenzie og Michael Stone"
+
+#~ msgid ""
+#~ " -i, --idle add idle time as HOURS:MINUTES, . or old\n"
+#~ " (deprecated, use -u)\n"
+#~ " --login print system login processes\n"
+#~ " (equivalent to SUS -l)\n"
+#~ msgstr ""
+#~ " -i, --idle tilføj brugerens inaktive tid som TIMER:MINUTTER,\n"
+#~ " . eller \"længe\" (forældet, brug -u)\n"
+#~ " --login udskriv indlogningsprocesser (det samme som SUS -l)\n"
+
+#~ msgid ""
+#~ "Warning: the meaning of '-l' will change in a future release to conform "
+#~ "to POSIX"
+#~ msgstr ""
+#~ "Advarsel: betydningen af \"-l\" vil blive ændret i en fremtidig udgave "
+#~ "for at stemme med POSIX"
+
+#~ msgid "%s: cannot find username for UID %u\n"
+#~ msgstr "%s: kan ikke finde brugernavnet for UID %u\n"
diff --git a/po/de.gmo b/po/de.gmo
new file mode 100644
index 0000000..d4bcbf1
--- /dev/null
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
new file mode 100644
index 0000000..3ab318c
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,10852 @@
+# German translation of coreutils messages.
+# Copyright © 2006 Free Software Foundation, Inc.
+# This file is distributed under the same license as the coreutils package.
+# Karl Eichwalder <ke@suse.de>, 2001–2002.
+# Lutz Behnke <lutz.behnke@gmx.de>, 1996, 1997, 1998, 1999, 2000, 2001.
+# Michael Schmidt <michael@guug.de>, 1996, 1997, 1998, 1999, 2000.
+# Michael Piefel <piefel@informatik.hu-berlin.de>, 2001, 2002, 2003, 2004, 2005, 2006.
+#
+# The first 200+ lines are translations for the lib directory. This is very
+# similar or even identical to other tools’ lib directories. Therefore take
+# care to have consistent translation. I have made this identical to the
+# translation in sh-utils and fileutils. -MPi
+# PS: This file now contains sh-utils and fileutils, but the lib dir is in
+# other projects, too.
+#
+# TAB: spell it out („Tabulatoren“). -ke-
+# Don’t use obscure abbreviations, please. -ke-
+# No hyphenation, please. -ke-
+#
+# space: Leerzeichen oder Leerschritt
+#
+# Check:
+# idle - untätig
+# idle: untätig, ruhig, „idle“, Leerlauf
+# user idle time: Untätigkeitszeit des Benutzers, Ruhezeit, Idle-Time,
+# Benutzer im Leerlauf
+# digit - Zahl, Ziffer, Nummer, Stelle
+# logged in - angemeldet, eingeloggt
+# requested - gewünscht?
+#
+# Some comments on translations used in oder to ensure persistence:
+#
+# symbolic links: symbolische Verknüpfungen
+# hard links: harte Verknüpfungen
+# backup: Sicherung
+# mount: einhängen
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU coreutils 6.8\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2007-02-27 16:30+0100\n"
+"Last-Translator: Michael Piefel <piefel@informatik.hu-berlin.de>\n"
+"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, c-format
+msgid "preserving permissions for %s"
+msgstr "Erhalten der Zugriffsrechte für %s"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "Setzen der Zugriffsrechte für %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "ungültiges Argument %s für %s"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "mehrdeutiges Argument %s für %s"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Gültige Argumente sind:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "Schreibfehler"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Unbekannter Systemfehler"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "Aufruf von stat für %s nicht möglich"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "reguläre leere Datei"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "reguläre Datei"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "Verzeichnis"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "blockorientierte Spezialdatei"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "zeichenorientierte Spezialdatei"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "FIFO"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "symbolische Verknüpfung"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "Socket"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "Nachrichtenwarteschlange"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "Semaphor"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "Objekt gemeinsamen Speichers"
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr "Objekt getypten Speichers"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "merkwürdige Datei"
+
+#: lib/gai_strerror.c:44
+msgid "Address family for hostname not supported"
+msgstr "Adressfamilie für Hostnamen nicht unterstützt"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr "Vorübergehender Fehler bei Namensauflösung"
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr "Ungültiger Wert für ai_flags"
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr "Nicht behebbarer Fehler bei Namensauflösung"
+
+#: lib/gai_strerror.c:48
+msgid "ai_family not supported"
+msgstr "ai_family nicht unterstützt"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr "Fehler bei Speicheranforderung"
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr "Keine Adresse mit Hostnamen verbunden"
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr "Name oder Service unbekannt"
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr "Servname für ai_socktype nicht unterstützt"
+
+#: lib/gai_strerror.c:53
+msgid "ai_socktype not supported"
+msgstr "ai_socktype nicht unterstützt"
+
+#: lib/gai_strerror.c:54
+msgid "System error"
+msgstr "Systemfehler"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr "Argumentenpuffer zu klein"
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr "Bearbeitungsanfrage läuft"
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr "Anfrage abgebrochen"
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr "Anfrage nicht abgebrochen"
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr "Alle Anfragen erledigt"
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr "Von einem Signal unterbrochen"
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr "Parameterzeichenkette nicht korrekt codiert"
+
+#: lib/gai_strerror.c:74
+msgid "Unknown error"
+msgstr "Unbekannter Fehler"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: Option „%s“ ist mehrdeutig\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: Option „--%s“ erlaubt kein Argument\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: Option „%c%s“ erlaubt kein Argument\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: Option „%s“ erfordert ein Argument\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: unbekannte Option „--%s“\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: unbekannte Option „%c%s“\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: ungültige Option -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ungültige Option -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: Option erfordert ein Argument -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: Option „-W %s“ ist mehrdeutig\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: Option „-W %s“ erlaubt kein Argument\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "Blockgröße"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "kann Zugriffsrechte von %s nicht ändern"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "kann Verzeichnis %s nicht anlegen"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "Speicher ausgeschöpft"
+
+#: lib/openat-die.c:34
+#, c-format
+msgid "unable to record current working directory"
+msgstr "kann aktuelles Verzeichnisses nicht aufzeichnen"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "konnte nicht in ursprüngliches Arbeitsverzeichnis zurückkehren"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "„"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "“"
+
+#: lib/randread.c:125
+#, c-format
+msgid "%s: end of file"
+msgstr "%s: Dateieende"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr "Erfolg"
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr "Keine Ãœbereinstimmung"
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr "Ungültiger regulärer Ausdruck"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr "Ungültiges Suchzeichen"
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr "Ungültiger Zeichenklassenname"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr "Rückschrägstrich am Ende"
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr "Ungültiger Rückwärtsreferenz"
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr "Kein Gegenstück für [ ode [^"
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr "Kein Gegenstück für ( ode \\("
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr "Kein Gegenstück für \\{"
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr "Ungültiger Inhalt von \\{\\}"
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr "Ungültiges Bereichsende"
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr "Speicher ausgeschöpft"
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr "Ungültiger vorhergehender regulärer Ausdruck"
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr "Vorzeitiges Ende des regulären Ausdrucks"
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr "Regulärer Ausdruck zu groß"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr "Kein Gegenstück für ) ode \\)"
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr "Kein vorhergehender regulärer Ausdruck"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr "Es ist gefährlich, rekursiv auf %s zu arbeiten."
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr "Es ist gefährlich, rekursiv auf %s (das gleiche wie %s) zu arbeiten."
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+"Benutzen Sie --no-preserve-root, um diese Sicherheitsmaßnahme zu umgehen."
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[jJyY]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "iconv-Funktion nicht benutzbar"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "iconv-Funktion nicht verfügbar"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "Zeichen außerhalb erlaubter Grenzen"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "kann U+%04X nicht in lokalen Zeichensatz konvertieren"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "kann U+%04X nicht in lokalen Zeichensatz konvertieren: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "ungültiger Benutzer"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "ungültige Gruppe"
+
+#: lib/userspec.c:109
+msgid "invalid spec"
+msgstr "ungültige Spezifikation"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr "©"
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Dieses Programm ist freie Software. Sie dürfen Kopien davon weitergeben "
+"gemäß\n"
+"der GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"Es gibt KEINERLEI GARANTIE, so weit das Gesetz es erlaubt.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Geschrieben von %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Geschrieben von %s und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Geschrieben von %s, %s und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s\n"
+"und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s, %s und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s, %s, %s und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s und %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Geschrieben von %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s und anderen.\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "ungültiges Argument: %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "Zeichenkettenvergleich fehlgeschlagen"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Setzen Sie LC_ALL=C, um das Problem zu umgehen."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "Die verglichenen Zeichenketten waren %s und %s."
+
+#: lib/xmemxfrm.c:55
+#, c-format
+msgid "string transformation failed"
+msgstr "Zeichenkettentransformation fehlgeschlagen"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr "Die untransformierte Zeichenkette war %s."
+
+#: lib/xstrtol.h:62
+#, c-format
+msgid "invalid %s `%s'"
+msgstr "ungültiges %s „%s“"
+
+#: lib/xstrtol.h:69
+#, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "ungültiges Zeichen hinter %s in „%s“"
+
+#: lib/xstrtol.h:74
+#, c-format
+msgid "%s `%s' too large"
+msgstr "%s „%s“ ist zu groß"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "„%s --help“ gibt weitere Informationen.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+"Aufruf: %s [OPTION] [DATEI]\n"
+"Mit Base64 Kodieren oder Dekodieren von\n"
+"DATEI oder Standardeingabe auf die Standardausgabe.\n"
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+" -w, --wrap=SPALTEN kodierte Zeilen nach SPALTEN Zeichen umbrechen; "
+"ohne\n"
+" Angabe nach 76 Zeichen;\n"
+" kein Zeilenumbruch, wenn hier 0 benutzt wird\n"
+"\n"
+" -d, --decode Daten dekodieren\n"
+" -i, --ignore-garbage beim Dekodieren nicht zum Alphabet gehörende Zeichen "
+"ignorieren\n"
+"\n"
+
+#: src/base64.c:77
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+" --help diese Hilfe anzeigen und beenden\n"
+" --version Versionsinformation anzeigen und beenden\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Ohne DATEI oder wenn DATEI „-“ ist, Standardeingabe lesen.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+"\n"
+"Die Daten werden entsprechend dem Base64-Alphabet aus RFC 3548 kodiert.\n"
+"Beim Dekodieren darf die Eingabe zusätzlich zu den formal gültigen\n"
+"Base64-Zeichen noch Zeilenumbrüche enthalten. Benutzen Sie die Option\n"
+"--ignore-garbage, um zu versuchen, auch weitere nicht zum Alphabet "
+"gehörende\n"
+"Zeichen in der kodierten Eingabe zu verkraften.\n"
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Melden Sie Ãœbersetzungsfehler an <translation-team-de@lists.sourceforge."
+"net>,\n"
+"Programmfehler dagegen (auf Englisch, mit LC_ALL=C) an <%s>.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "Lesefehler"
+
+#: src/base64.c:234
+#, c-format
+msgid "invalid input"
+msgstr "ungültige Eingabe"
+
+#: src/base64.c:271
+#, c-format
+msgid "invalid wrap size: %s"
+msgstr "ungültige Umbruchgröße: %s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr "zusätzlicher Operand %s"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "schließe Standardeingabe"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Aufruf: %s NAME [SUFFIX]\n"
+" oder: %s OPTION\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Den NAMEn ohne führende Verzeichnisse ausgeben.\n"
+"Wenn angegeben, auch SUFFIX entfernen.\n"
+"\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+"\n"
+"Beispiele:\n"
+" %s /usr/bin/sort Ausgabe: „sort“.\n"
+" %s include/stdio.h .h Ausgabe: „stdio“.\n"
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, c-format
+msgid "missing operand"
+msgstr "fehlender Operand"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Aufruf: %s [OPTION] [DATEI]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"DATEI(en) oder Standardeingabe auf Standardausgabe verketten. \n"
+"\n"
+" -A, --show-all äquivalent zu -vET\n"
+" -b, --number-nonblank nichtleere Ausgabezeilen nummerieren\n"
+" -e äquivalent zu -vE\n"
+" -E, --show-ends $ am Ende jeder Zeile ausgeben\n"
+" -n, --number alle Ausgabezeilen nummerieren\n"
+" -s, --squeeze-blank nie mehr als eine einzige Leerzeile\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t äquivalent zu -vT\n"
+" -T, --show-tabs Tabulator-Zeichen als ^I ausgeben\n"
+" -u (wird ignoriert)\n"
+" -v, --show-nonprinting ^- und M-Notation benutzen, außer für LFD und "
+"Tab.\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+"\n"
+"Beispiele:\n"
+" %s f - g Gibt den Inhalt von f aus, dann die Standardeingabe,\n"
+" schließlich den Inhalt von g.\n"
+" %s Kopiert die Standardeingabe in die Standardausgabe.\n"
+
+#: src/cat.c:333
+#, c-format
+msgid "cannot do ioctl on %s"
+msgstr "Anwendung von ioctl auf „%s“ ist nicht möglich"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "Standardausgabe"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: Eingabedatei ist Ausgabedatei"
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "ungültige Gruppe %s"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Aufruf: %s [OPTION]... GRUPPE DATEI...\n"
+" oder: %s [OPTION]... --reference=RDATEI DATEI...\n"
+
+#: src/chgrp.c:117
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Ändern der Gruppen-Zugehörigkeit für jede DATEI nach GRUPPE.\n"
+"Mit --reference: Ändern der Gruppen-Zugehörigkeit für jede DATEI auf die von "
+"RDATEI.\n"
+"\n"
+" -c, --changes wie --verbose, aber nur bei wirklichen Änderungen\n"
+" --dereference referenzierte Datei einer symbolischen "
+"Verknüpfung\n"
+" ändern (dies ist die Voreinstellung)\n"
+" statt der Verknüpfung selbst\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference symbolische Verknüpfung statt einer "
+"referenzierten\n"
+" Datei ändern. (Nützlich auf Systemen, die für\n"
+" symb. Verknüpfungen die Besitzer ändern "
+"können.)\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root „/“ nicht besonders behandeln (Voreinstellung)\n"
+" --preserve-root rekursive Bearbeitung von „/“ ablehnen\n"
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet die meisten Fehlermeldungen unterdrücken\n"
+" --reference=RDATEI RDATEIs Gruppe verwenden anstatt eines GRUPPE-"
+"Wertes\n"
+" -R, --recursive Dateien und Verzeichnisse rekursiv ändern\n"
+" -v, --verbose Diagnose für jede verarbeitete Datei ausgeben\n"
+"\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+"Die folgenden Optionen bestimmen, wie eine Hierarchie abgearbeitet wird, "
+"wenn\n"
+"die Option -R ebenfalls gegeben ist. Sind mehr als eine angegeben, wirkt "
+"sich\n"
+"nur die letzte aus.\n"
+"\n"
+" -H wenn ein Kommandzeilenargument eine symbolische\n"
+" Verknüpfung auf ein Verzeichnis ist, abarbeiten\n"
+" -L jede gefundene symbolische Verknüpfung auf ein\n"
+" Verzeichnis abarbeiten\n"
+" -P überhaupt keinen symbolischen Verknüpfungen folgen\n"
+" (Voreinstellung)\n"
+"\n"
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+"\n"
+"Beispiele:\n"
+" %s staff /u Ändert die Gruppe von /u zu „staff“.\n"
+" %s -hR staff /u Ändert die Gruppe von /u und enthaltener Dateien zu "
+"„staff“.\n"
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr "-R --dereference erfordert entweder -H oder -L"
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, c-format
+msgid "missing operand after %s"
+msgstr "fehlender Operand nach %s"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "konnte Attribute von %s nicht holen"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "Beim Holen der neuen Attribute von %s"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr ""
+"Weder die symbolische Verknüpfung %s, noch die referenzierte Datei wurden "
+"verändert.\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "Modus von %s nach %04lo (%s) geändert\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "Änderung des Modus von %s nach %04lo (%s) fehlgeschlagen\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "Modus von %s als %04lo (%s) erhalten\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "Zugriff auf %s nicht möglich"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "kann Verzeichnis %s nicht lesen"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "Beim Setzen der Zugriffsrechte für %s"
+
+#: src/chmod.c:286
+#, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "%s: neue Zugriffsrechte sind %s, nicht %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr "fts_read fehlgeschlagen"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Aufruf: %s [OPTION]... MODUS[,MODUS]... DATEI...\n"
+" oder: %s [OPTION]... OKTAL-MODUS DATEI...\n"
+" oder: %s [OPTION]... --reference=RDATEI DATEI...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+"Den Modus jeder DATEI auf MODUS ändern.\n"
+"\n"
+" -c, --changes wie --verbose, aber nur bei wirklichen Änderungen\n"
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root „/“ nicht besonders behandeln (Voreinstellung)\n"
+" --preserve-root nicht rekursiv auf „/“ arbeiten\n"
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+" -f, --silent, --quiet unterdrücken der meisten Fehlermeldungen\n"
+" -v, --verbose ausgabe einer Diagnose für jede verarbeitete "
+"Datei\n"
+" --reference=RDATEI verwendung von RDATEIs Modus anstatt eines MODUS-\n"
+" Wertes\n"
+" -R, --recursive rekursives Ändern der Dateien und Verzeichnisse\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+"\n"
+"Jeder MODUS hat die Form „[ugoa]*([-+=]([rwxXst]*|[ugo]))+“.\n"
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr "Modus- und Referenz-Optionen können nicht kombiniert werden."
+
+#: src/chmod.c:510
+#, c-format
+msgid "invalid mode: %s"
+msgstr "Ungültiger Modus: %s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "Eigentümer von %s in %s geändert\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "Gruppe von %s in %s gewechselt\n"
+
+#: src/chown-core.c:149
+#, c-format
+msgid "no change to ownership of %s\n"
+msgstr "kann Wechsel des Eigentümers von %s\n"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "Wechsel des Eigentümers von %s in %s fehlgeschlagen\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "Wechsel der Gruppe von %s in %s fehlgeschlagen\n"
+
+#: src/chown-core.c:154
+#, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "Wechsel des Eigentümers von %s fehlgeschlagen\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "Eigentümer von %s als %s erhalten\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "Gruppe von %s als %s erhalten\n"
+
+#: src/chown-core.c:159
+#, c-format
+msgid "ownership of %s retained\n"
+msgstr "Eigentümer von %s erhalten\n"
+
+#: src/chown-core.c:344
+#, c-format
+msgid "cannot dereference %s"
+msgstr "kann %s nicht derefenzieren"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "Ändern des Eigentümers von %s"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "Ändern der Gruppe für %s"
+
+#: src/chown.c:93
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Aufruf: %s [OPTION]... [EIGENTÃœMER][:[GRUPPE DATEI...\n"
+" oder: %s [OPTION]... --reference=RDATEI DATEI...\n"
+
+#: src/chown.c:98
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Ändern des Eigentümers und/oder der Gruppe für jede DATEI nach EIGENTÜMER\n"
+"und/oder GRUPPE.\n"
+"Mit --reference: Ändern von Eigentümers und Gruppe für jede DATEI auf die\n"
+"von RDATEI.\n"
+"\n"
+" -c, --changes wie --verbose, aber nur bei wirklichen Änderungen\n"
+" --dereference referenzierte Datei einer symbolischen "
+"Verknüpfung\n"
+" ändern (dies ist die Voreinstellung)\n"
+" statt der Verknüpfung selbst\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=MOMENTANER_EIGENTÃœMER:MOMENTANE_GRUPPE\n"
+" Ändern des Eigentümers und/oder der Gruppe jeder "
+"Datei\n"
+" nur wenn der momentane Eigentümer und/oder die\n"
+" Gruppe der angegebenen entsprechen. Eine von "
+"beiden\n"
+" kann weggelassen werden, woraufhin eine "
+"Ãœbereinstim-\n"
+" mung des weggelassenen Attributs nicht "
+"notwendig\n"
+" ist.\n"
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet die meisten Fehlermeldungen unterdrücken\n"
+" --reference=RDATEI RDATEIs Eigentümer und Gruppe verwenden anstatt\n"
+" eines EIGENTÃœMER:GRUPPE-Wertes\n"
+" -R, --recursive Dateien und Verzeichnisse rekursiv ändern\n"
+" -v, --verbose Diagnose für jede verarbeitete Datei ausgeben\n"
+"\n"
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"Eigentümer bleibt unverändert, wenn nicht angegeben. Gruppe bleibt\n"
+"unverändert, wenn nicht angegeben, wird aber auf die Login-Gruppe\n"
+"gesetzt, wenn durch „:“ impliziert hinter einem symbolische EIGENTÜMER.\n"
+"EIGENTÜMER und GRUPPE können sowohl numerisch als auch symbolisch\n"
+"angegeben werden.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+"\n"
+"Beispiele:\n"
+" %s root /u Ändert den Eigentümer von /u auf „root“.\n"
+" %s root:staff /u Genauso, setzt zusätzlich die Gruppe auf „staff“.\n"
+" %s -hR root /u Ändert den Eigentümer von /u und enthaltener\n"
+" Dateien auf „root“.\n"
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Aufruf: %s NEUEWURZEL [BEFEHL...]\n"
+" oder: %s OPTION\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"BEFEHL ausführen, wobei das Wurzelverzeichnis auf NEUEWURZEL gesetzt wird.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"Wenn kein Befehl angegeben ist, „${SHELL} -i“ (Vorgabe: /bin/sh) ausführen.\n"
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "Es ist nicht möglich, das Wurzelverzeichnis in %s zu ändern"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "Es ist nicht möglich, in das Wurzelverzeichnis zu wechseln"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "es ist nicht möglich, %s auszuführen"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: Datei zu lang"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Aufruf: %s [DATEI]...\n"
+" oder: %s [OPTION]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"CRC-Checksumme und Byteanzahl für jede DATEI ausgeben.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Aufruf: %s [OPTION]... DATEI1 DATEI2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr "Sortierte Dateien DATEI1 und DATEI2 Zeile für Zeile vergleichen.\n"
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+"\n"
+"Ohne Optionen wird eine dreispaltige Ausgabe erzeugt. Spalte 1 enthält "
+"Zeilen,\n"
+"die nur in DATEI1 sind, Spalte 2 dementsprechend Zeilen aus DATEI2, und\n"
+"Spalte 3 die Zeilen, die in beiden Dateien gleich sind.\n"
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"\n"
+" -1 Zeilen unterdrücken, die nur in DATEI1 auftauchen\n"
+" -2 Zeilen unterdrücken, die nur in DATEI2 auftauchen\n"
+" -3 Zeilen unterdrücken, die in beiden Dateien auftauchen\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "konnte den Eigentümer für %s nicht erhalten"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr "konnte die Datei %s nicht finden"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "konnte den Urheber für %s nicht erhalten"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "%s kann nicht zum Lesen geöffnet werden"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "Aufruf von fstat für %s nicht möglich"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "überspringe Datei %s, da sie während des Kopierens ersetzt wurde"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "Entfernen von %s nicht möglich"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "%s entfernt\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "reguläre Datei %s kann nicht angelegt werden"
+
+# XLATE_REMARK: Check this out! is the %s replaced by the name of the directory?
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "Lesen von %s"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "Aufruf von lseek für %s nicht möglich"
+
+# XLATE_REMARK: Check this out! is the %s replaced by the name of the directory?
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "Schreiben von %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "Erhalten der Zeiten für %s"
+
+# XLATE_REMARK: Check this out! is the %s replaced by the name of the directory?
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "Schließen von %s"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: Überschreiben von %s, über Modus %04lo hinwegsetzen? "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: %s überschreiben? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (Sicherung: %s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "Verzeichnis %s ausgelassen"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "Warnung: Quelldatei %s mehr als einmal angegeben"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s und %s sind die gleiche Datei"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr ""
+"Überschreiben des Nicht-Verzeichnisses %s mit Verzeichnis %s nicht möglich."
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "Neu erstelltes %s wird nicht mit %s überschrieben."
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr ""
+"Überschreiben des Verzeichnisses %s mit Nicht-Verzeichnis nicht möglich."
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr ""
+"Verschieben von Verzeichnis auf ein Nicht-Verzeichnis nicht möglich: %s → %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "Sicherung von %s würde Quelle zerstören; %s nicht verschoben"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "Sicherung von %s würde Quelle zerstören; %s nicht kopiert"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "Sicherung von %s nicht möglich"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "Kopieren eines Verzeichnisses, %s, in sich selbst (%s) nicht möglich"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "Harte Verknüpfung %s zu Verzeichnis %s wird nicht erzeugt"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "Erzeugen von harter Verknüpfung %s zu Verzeichnis %s nicht möglich"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "Verschieben von %s in eigenes Unterverzeichnis (%s) nicht möglich"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "Verschieben von %s nach %s nicht möglich"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+"Verschieben zwischen Geräten fehlgeschlagen: %s zu %s; kann Ziel nicht "
+"entfernen"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "Kopieren von zyklischer symbolischer Verknüpfung %s nicht möglich"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr ""
+"%s: Erzeugen relativer symbolischer Verknüpfungen nur in momentanem "
+"Verzeichnis möglich"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "Erzeugen der symbolischen Verknüpfung %s nach %s nicht möglich"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "Erzeugen von Verknüpfung %s nicht möglich"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "Erzeugen von FIFO %s nicht möglich"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "Erzeugen der Spezialdatei %s nicht möglich"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "Lesen der symbolischen Verknüpfung %s nicht möglich"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "Erzeugen der symbolischen Verknüpfung %s nicht möglich"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s hat einen unbekannten Dateityp"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "Löschen der Sicherung von %s nicht möglich"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s → %s (Löschen der Sicherung)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Aufruf: %s [OPTION]... [-T] QUELLE ZIEL\n"
+" oder: %s [OPTION]... QUELLE... VERZEICHNIS\n"
+" oder: %s [OPTION]... -t VERZEICHNIS QUELLE...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Kopieren von QUELLE nach ZIEL, oder mehrere QUELLE(n) in VERZEICHNIS\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Erforderliche Argumente für lange Optionen sind auch für kurze "
+"erforderlich.\n"
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive genau wie -dpPR\n"
+" --backup[=KONTROLLE] eine Sicherung existierender Zieldateien "
+"erzeugen\n"
+" -b wie --backup, akzeptiert aber kein Argument\n"
+" --copy-contents wenn rekursiv, Inhalt von Spezialdateien "
+"kopieren\n"
+" -d genaus wie --no-dereference --preserve=link\n"
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" -f, --force wenn eine existierende Zieldatei nicht "
+"geöffnet\n"
+" werden kann wird sie gelöscht und es noch\n"
+" einmal versucht\n"
+" -i, --interactive vor einem Ãœberschreiben nachfragen\n"
+" -H symbolischen Verknüpfungen, die auf der "
+"Kommando-\n"
+" zeile angegeben sind, folgen\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+" -l, --link Dateien verknüpfen, statt zu kopieren\n"
+" -L, --dereference symbolischen Verknüpfungen immer folgen\n"
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr " -P, --no-dereference symbolischen Verknüpfungen nie folgen\n"
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -p genau wie --preserve=mode,ownership,"
+"timestamps\n"
+" --preserve[=ATTR_LIST] angegebene Datei-Attribute (Voreinstellung: "
+"mode,\n"
+" ownership,timestamps) wenn möglich "
+"erhalten.\n"
+" Weitere Attribute: links, all\n"
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=ATTR_LIST Angegebene Attribute nicht erhalten\n"
+" --parents Quell-Pfad an VERZEICHNIS anhängen\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive Verzeichnisse rekursiv kopieren\n"
+" --remove-destination jede Zieldatei vor dem Versuch, sie zu "
+"öffnen,\n"
+" löschen (im Gegensatz zu --force)\n"
+
+#: src/cp.c:205
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --sparse=WANN Erstellung von spärlich besetzter Dateien "
+"steuern\n"
+" --strip-trailing-slashes Schrägstriche vom Ende jedes QUELLE-"
+"Arguments\n"
+" entfernen\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link symbolischen Verknüpfungen erzeugen anstatt\n"
+" zu kopieren\n"
+" -S, --suffix=SUFFIX normale Sicherungs-Dateiendung ändern\n"
+" -t, --target-directory=VERZ alle QUELLE-Argumente in VERZ verschieben\n"
+" -T, --no-target-directory ZIEL als normale Datei behandeln\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update nur kopieren, wenn die QUELL-Datei neuer ist\n"
+" als die Zieldatei oder die Zieldatei nicht\n"
+" existiert\n"
+" -v, --verbose durchgeführte Tätigkeiten erklären\n"
+" -x, --one-file-system in diesem Dateisystem verbleiben\n"
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"Standardmäßig werden „sparse“-QUELL-Dateien durch eine einfache Heuristik\n"
+"erkannt und die korrespondierenden ZIEL-Dateien werden ebenfalls „sparse“\n"
+"gemacht. Dieses Verhalten wird mit --sparse=auto ausgewählt. Geben Sie\n"
+"--sparse=always an um „sparse“-ZIEL-Dateien zu erzeugen wenn die QUELL-\n"
+"Datei eine ausreichend lange Sequenz aus Null-Bytes enthält.\n"
+"Verwenden Sie --sparse=never um das Erzeugen von „sparse“-Dateien zu\n"
+"verhindern.\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Der Anhang für Sicherheitskopien ist ~, außer wenn er --suffix oder\n"
+"SIMPLE_BACKUP_SUFFIX gesetzt wurde. Die Versionskontrolle kann mit\n"
+"--backup oder VERSION_CONTROL gesetzt werden. Mögliche Werte sind:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off Niemals Sicherung erzeugen (selbst wenn --backup\n"
+" angegeben wurde)\n"
+" numbered, t Erzeugen von nummerierten Sicherheitskopien\n"
+" existing, nil Nummeriert wenn nummerierte Backups existieren, sonst "
+"einfach.\n"
+" simple, never Immer einfache Sicherheitskopien erzeugen\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Als Spezialfall erzeugt cp eine Sicherheitskopie von QUELLE wenn „force“ "
+"und\n"
+"„backup“ Optionen angegeben wurden und QUELLE und ZIEL der gleiche Name für\n"
+"eine vorhandene reguläre Datei sind.\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "konnte die Zeiten für %s nicht erhalten"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "konnte die Zugriffsrechte für %s nicht erhalten"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "Erzeugen des Verzeichnisses %s nicht möglich"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s existiert, ist aber kein Verzeichnis"
+
+# XLATE_REMARK: Check this out! is the %s replaced by the name of the directory?
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "Zugriff auf %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, c-format
+msgid "missing file operand"
+msgstr "Fehlendes Dateioperand"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, c-format
+msgid "missing destination file operand after %s"
+msgstr "Fehlender Zieldatei-Operand hinter %s"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+"Kann --target-directory (-t) und --no-target-directory (-T) nicht kombinieren"
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, c-format
+msgid "target %s is not a directory"
+msgstr "angegebenes Ziel %s ist kein Verzeichnis"
+
+#: src/cp.c:697
+#, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "mit --parents muss das Ziel ein Verzeichnis sein"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr ""
+"Warnung: „--reply“ wird in einer kommenden Version aufgegeben werden;\n"
+"bitte verwenden Sie stattdessen „-i“ oder „-f“."
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, c-format
+msgid "multiple target directories specified"
+msgstr "mehrere Zielverzeichnisse angegeben"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr ""
+"Gleichzeitiges Erzeugen harter und symbolischer Verknüpfung nicht möglich."
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "Typ der Sicherung"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "Eingabe ist verschwunden"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: Zeilennummer nicht im zulässigen Bereich"
+
+#: src/csplit.c:709
+#, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: %s: Zeilennummer nicht im zulässigen Bereich"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr " bei Wiederholung %s\n"
+
+#: src/csplit.c:755
+#, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: %s: keine Entsprechung gefunden"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "Fehler bei Suche mit regulären Ausdrücken"
+
+#: src/csplit.c:984
+#, c-format
+msgid "write error for %s"
+msgstr "Fehler beim Schreiben von %s"
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: ganze Zahl nach Trenner erwartet"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: „}“ ist bei Angabe einer Wiederholungsanzahl erforderlich"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: ganze Zahl zwischen „{“ and „}“ erforderlich"
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: schließender Trenner „%c“ fehlt"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: ungültiger regulärer Ausdruck: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: ungültiges Muster"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: Zeilennummer muss größer als Null sein"
+
+#: src/csplit.c:1172
+#, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "Zeilennummer %s ist kleiner als vorhergehende Zeilennummer %s"
+
+#: src/csplit.c:1178
+#, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "Warnung: Zeilennummer %s ist dieselbe wie die vorhergehende"
+
+#: src/csplit.c:1231
+#, c-format
+msgid "invalid format width"
+msgstr "Ungültige Format-Breite"
+
+#: src/csplit.c:1252
+#, c-format
+msgid "invalid format precision"
+msgstr "Ungültige Format-Genauigkeit"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "Angabe zur Wandlung fehlt im Suffix"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "Angabe zur Wandlung fehlt im Suffix: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "Ungültige Angabe zur Wandlung im Suffix: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "Zu viele Angaben zur %%-Wandlung im Suffix"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "Fehlende %%-Angabe zur Wandlung im Suffix"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: ungültige Zahl"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Aufruf: %s [OPTION]... DATEI MUSTER...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"Teile der DATEI getrennt durch MUSTER in die Dateien „xx01“, „xx02“, ...\n"
+"ausgeben und die Bytezahl für jedes Teil auf Standardausgabe.\n"
+"\n"
+
+#: src/csplit.c:1486
+#, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=FORMAT sprintf-FORMAT anstelle von %02d benutzen\n"
+" -f, --prefix=PRÄFIX PRÄFIX anstelle von „xx“ benutzen\n"
+" -k, --keep-files Ausgabedateien bei Fehler nicht löschen\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=ZIFFERN angegebene Anzahl ZIFFERN anstelle von 2 "
+"benutzen\n"
+" -s, --quiet, --silent keine Bytezahlen der Ausgabedateigrößen "
+"ausgeben\n"
+" -z, --elide-empty-files leere Ausgabedateien löschen\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"Standardeingabe lesen, wenn DATEI „-“ ist. Jedes MUSTER kann sein:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" GANZZAHL bis zu angebener Zeilennumer kopieren (ausschließlich)\n"
+" /REGEXP/[OFFSET] bis zu entsprechender Zeile kopieren (ausschließlich)\n"
+" %%REGEXP%%[OFFSET] bis zu entsprechender Zeile übergehen "
+"(ausschließlich)\n"
+" {GANZZAHL} das vorherige Muster sooft wie angegeben wiederholen\n"
+" {*} das vorherige Muster sooft wie möglich wiederholen\n"
+"\n"
+"Ein Zeilen-OFFSET ist ein „+“ or „-“ gefolgt von einer positiven ganzen "
+"Zahl.\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Aufruf: %s [OPTION]... [DATEI]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr "Ausgewählte Teile jeder DATEI auf Standardausgabe ausgeben.\n"
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=LISTE nur diese Bytes ausgeben\n"
+" -c, --characters=LISTE nur diese Zeichen ausgeben\n"
+" -d, --delimiter=TRENN TRENN anstelle von Tabulator als Trenner benutzen\n"
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=LIST nur diese Felder ausgeben; außerdem jede Zeile\n"
+" ausgeben, die kein Trennzeichen enthält, außer "
+"die\n"
+" Option -s ist gegeben\n"
+" -n (ignoriert)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+" --complement das Komplement der Menge der gewählten Bytes,\n"
+" Zeichen oder Felder bilden\n"
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited keine Zeilen ausgeben, die keinen Trenner "
+"enthalten\n"
+" --ouput-delimiter=ZKETTE ZKETTE als Ausgabetrennzeichen benutzen;\n"
+" Voreinstellung ist das Eingabetrennzeichen\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+"\n"
+"Benutzen Sie genau eins aus -b, -c oder -f. Jede LISTE besteht aus einem\n"
+"Bereich oder mehreren kommagetrennten. Gewählte Eingabe wird in derselben\n"
+"Reihenfolge geschrieben, wie sie gelesen wird, und genau einmal "
+"geschrieben.\n"
+
+#: src/cut.c:227
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"Jeder Bereich ist eins aus:\n"
+"\n"
+" N Ntes Byte, Zeichen oder Feld, beginnend von 1\n"
+" N- vom Nten Byte, Zeichen oder Feld bis zum Ende der Zeile\n"
+" N-M vom Nten zum Mten (einschl.) Byte, Zeichen oder Feld\n"
+" -M vom ersten zum Mten (einschl.) Byte, Zeichen oder Feld\n"
+"\n"
+"Ohne DATEI, oder wenn DATEI „-“ ist, die Standardeingabe lesen.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "Ungültige Byte- oder Feldliste"
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr "Byte-Offset %s ist zu groß"
+
+#: src/cut.c:472
+#, c-format
+msgid "field number %s is too large"
+msgstr "Feldnummer %s ist zu groß"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "Nur ein Typ einer Liste kann angegeben werden"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "Trenner muss ein einzelnes Zeichen sein"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "Sie müssen eine Liste von Bytes, Zeichen oder Feldern angeben"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr ""
+"Ein Eingabe-Begrenzer darf nur angegeben werden, wenn auf Feldern gearbeitet "
+"wird"
+
+# CHECKIT → no \t, please
+# 2001-08-10 08:03:34 CEST -ke-
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"Nicht-getrennte Zeilen zu unterdrücken ist nur sinnvoll,\n"
+"\twenn auf Feldern operiert wird."
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "Liste der Felder fehlt"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "Liste der Positionen fehlt"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Aufruf: %s [OPTION]... [+FORMAT]\n"
+" oder: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"Die aktuelle Uhrzeit im angegebenen FORMAT anzeigen oder die Systemzeit "
+"setzen.\n"
+"\n"
+" -d, --date=ZEICHENKETTE Zeit gemäß ZEICHENKETTE anzeigen, nicht „jetzt“\n"
+" -f, --file=DATEI wie --date für jede Zeile in DATEI\n"
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+" -r, --reference=DATEI Zeit der letzten Änderung von DATEI anzeigen\n"
+" -R, --rfc-2822 Datumsausgabe gemäß RFC-2822 anzeigen\n"
+" Beispiel: Tue, 27 Feb 2007 16:03:44 +0100\n"
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+" --rfc-3339=ZEITSPEZ Datumsausgabe gemäß RFC-3339 anzeigen;\n"
+" ZEITSPEZ=„date“, „seconds“ oder „ns“ für\n"
+" Datum und Zeit mit angegebener Genauigkeit\n"
+" Datum und Zeit werden durch einzelnes "
+"Leerzeichen\n"
+" getrennt: 2007-02-27 16:03:44+0100\n"
+" -s, --set=ZEICHENKETTE Zeit gemäß ZEICHENKETTE setzen\n"
+" -u, --utc, --universal Coordinated Universal Time anzeigen oder setzen\n"
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"\n"
+"FORMAT bestimmt die Ausgabe. Die einzig gültige Option für die zweite\n"
+"Form ist Coordinated Universal Time. Interpretierte Angaben sind:\n"
+"\n"
+" %% wörtliches %\n"
+" %a abgekürzter Name des Wochentags der Lokale (z. B. Son)\n"
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A voller Name des Wochentags der Lokale, (z. B. Freitag)\n"
+" %b abgekürzter Monatsname der Lokale (z. B. Nov)\n"
+" %B voller Monatsname der Lokale, variable Länge (z. B. November)\n"
+" %c Datum und Zeit der Lokale (z. B. Fr 18 Nov 2005 15:05:42 CET)\n"
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C Jahrhundert; wie %Y, aber ohne die letzten beiden Stellen (z. B. 20)\n"
+" %d Tag des Monats (z. B. 01)\n"
+" %D Datum; dasselbe wie %m/%d/%y\n"
+" %e Tag des Monats, mit Leerzeichen aufgefüllt; wie %_d\n"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+" %F volles Datum; dasselbe wie %Y-%m-%d\n"
+" %g Jahr als 2-stellige Zahl bezüglich der ISO-Wochennummer (siehe %G)\n"
+" %G Jahr der ISO-Wochennummer (siehe %V); normalerweise nur mit %V "
+"benutzt\n"
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h dasselbe wie %b\n"
+" %H Stunde (00..23)\n"
+" %I Stunde (01..12)\n"
+" %j Tag des Jahres (001..366)\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k Stunde ( 0..23)\n"
+" %l Stunde ( 1..12)\n"
+" %m Monat (01..12)\n"
+" %M Minute (00..59)\n"
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+" %n neue Zeile („newline“)\n"
+" %N Nanosekunden (000000000..999999999)\n"
+" %p das Äquivalent von AM oder PM in der Lokale; leer wenn unbekannt\n"
+" %P wie %p, aber in Kleinbuchstaben\n"
+" %r Zeit im 12-Stunden-Format (z. B. 03:11:30)\n"
+" %R Zeit im 24-Stunden-Format; dasselbe wie %H:%M\n"
+" %s Sekunden seit „1970-01-01 00:00:00 UTC“\n"
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+" %S Sekunde (00..60)\n"
+" %t horizontaler Tabulatorstopp\n"
+" %T Zeit; dasselbe wie %H:%M:%S\n"
+" %u Tag der Woche (1..7); 1 steht für Montag\n"
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U Wochennummer des Jahres mit Sonntag als erstem Tag der Woche "
+"(00..53)\n"
+" %V ISO-Wochennummer mit Montag als erstem Tag der Woche (01..53)\n"
+" %w Tag der Woche (0..6); 0 steht für Sonntag\n"
+" %W Wochennummer des Jahres mit Montag als erstem Tag der Woche (00..53)\n"
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x Datumsrepräsentation der Lokale (z. B. 18.11.2005)\n"
+" %X Zeitrepräsentation der Lokale (z. B. 15:14:33)\n"
+" %y die letzten zwei Ziffern des Jahres (00..99)\n"
+" %Y Jahr\n"
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+" %z +hhmm numerische Zeitzone (z. B. +0100)\n"
+" %:z +hh:mm numerische Zeitzone (z. B. +01:00)\n"
+" %::z +hh:mm:ss numerische Zeitzone (z. B. +01:00:00)\n"
+" %:::z numerische Zeitzone mit nötiger Zahl an „:“ (z. B. +01 oder "
+"+05:30)\n"
+" %Z alphabetische Zeitzonenabkürzung (z. B. CET)\n"
+"\n"
+"Die Vorgabe ist, numerische Felder mit Nullen aufzufüllen.\n"
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+"Die folgenden optionalen Flags können „%“ folgen:\n"
+"\n"
+" - (Bindestrich/Minus) Feld nicht auffüllen\n"
+" _ (Unterstrich) Feld mit Leerzeichen auffüllen\n"
+" 0 (Null) mit Nullen auffüllen\n"
+" ^ wenn möglich Großbuchstaben benutzen\n"
+" # wenn möglich Groß- und Kleinbuchstaben vertauschen\n"
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+"\n"
+"Nach jedem Flag kommt eine optionales Feldbreite, als Dezimalzahl;\n"
+"dann ein optionaler Modifikator, der entweder E oder O ist:\n"
+"E: die alternative Repräsentation der Locale verwenden (so vorhanden)\n"
+"O: die alternativen numerischen Symbole der Locale verwenden (so vorhanden)\n"
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "Standardeingabe"
+
+#: src/date.c:297 src/date.c:517
+#, c-format
+msgid "invalid date %s"
+msgstr "ungültiges Datum %s"
+
+#: src/date.c:408 src/date.c:442
+#, c-format
+msgid "multiple output formats specified"
+msgstr "mehrere Ausgabeformate angegeben"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr ""
+"Die angegebenen Optionen zur Datumsanzeige schließen sich gegenseitig aus"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr ""
+"Die Optionen zum Anzeigen und Setzen der Zeit können\n"
+"nicht zugleich verwendet werden."
+
+#: src/date.c:448
+#, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"Dem Argument „%s“ fehlt das führende „+“.\n"
+"Wenn eine Option angegeben wird, um das Datum zu spezifizieren, muss jedes\n"
+"Argument, das keine Option ist, eine Formatzeichenkette sein, die mit „+“\n"
+"beginnt."
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "das Datum kann nicht gesetzt werden"
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "Zeit %s außerhalb des zulässigen Bereichs"
+
+#: src/dd.c:404
+#, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Aufruf: %s [OPERAND...]\n"
+" oder: %s OPTION\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"Kopieren einer Datei, Konvertierung und Formatierung gemäß der Operanden.\n"
+"\n"
+" bs=BYTES ibs=BYTES und obs=BYTES erzwingen\n"
+" cbs=BYTES BYTES Bytes auf einmal konvertieren\n"
+" conv=CONV Datei gemäß kommagetrennter Schlüsselwörter-Liste "
+"konvertieren\n"
+" count=BLÖCKE nur BLÖCKE Eingabeblöcke kopieren\n"
+" ibs=BYTES Lesen von BYTES Bytes auf einmal\n"
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=DATEI aus DATEI statt von der Standardeingabe lesen\n"
+" iflag=FLAGS anhand der kommagetrennten Symbolliste lesen\n"
+" obs=BYTES BYTES Bytes auf einmal schreiben\n"
+" of=DATEI in DATEI statt in die Standardausgabe schreiben\n"
+" oflag=FLAGS anhand der kommagetrennten Symbolliste schreiben\n"
+" seek=BLÖCKE BLÖCKE obs-große Blöcke am Anfang der Ausgabe "
+"überspringen\n"
+" skip=BLÖCKE BLÖCKE ibs-große Blöcke am Anfang der Eingabe "
+"überspringen\n"
+" status=noxfer Transferstatistik unterdrücken\n"
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"BLÖCKE und BYTES können folgende multiplikativen Endungen tragen:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000×1000, M 1024×1024,\n"
+"GB 1000×1000×1000, G 1024×1024×1024, und so weiter für T, P, E, Z, Y.\n"
+"\n"
+"Jedes CONV-Symbol kann sein:\n"
+"\n"
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii von EBCDIC in ASCII\n"
+" ebcdic von ASCII in EBCDIC\n"
+" ibm von ASCII in alternatives EBCDIC\n"
+" block mit Zeilenumbrüchen terminierte Datensätzen durch\n"
+" Leerzeichen bis zur cbs-Größe auffüllen\n"
+" unblock nachlaufende Leerzeichen in Datensätzen von\n"
+" cbs-Größe mit Zeilenumbrüchen ersetzen\n"
+" lcase Großbuchstaben in Kleinbuchstaben ändern\n"
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+" nocreat Ausgabedatei nicht anlegen\n"
+" excl wenn Ausgabedatei schon existiert, abbrechen\n"
+" notrunc Ausgabedatei nicht abschneiden\n"
+" ucase Kleinbuchstaben in Großbuchstaben ändern\n"
+" swab jedes Paar von Eingabebytes vertauschen\n"
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+" noerror nach Lesefehlern fortfahren\n"
+" sync jeden Eingabeblock mit NULLen zur ibs-Größe auffüllen; wenn mit\n"
+" „block“ oder „unblock“ benutzt, stattdessen mit Leerzeichen\n"
+" fdatasync vor Beendigung Ausgabedatendatei physisch schreiben\n"
+" fsync genauso, zusätzlich auch die Metadaten\n"
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+"\n"
+"Jedes Symbol FLAG kann sein:\n"
+"\n"
+" append Anfügemodus (nur für Ausgabe sinnvoll; conv=notrunc empfohlen)\n"
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr " direct direkte Ein-/Ausgabe für Daten benutzen\n"
+
+#: src/dd.c:468
+msgid " directory fail unless a directory\n"
+msgstr " directory abbrechen, wenn es sich nicht um ein Verzeichnis handelt\n"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr " dsync synchronisierte Ein-/Ausgabe für Daten benutzen\n"
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr " sync genauso, aber auch für Metadaten\n"
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr " nonblock nicht-blockierende Ein-/Ausgabe benutzen\n"
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr " noatime die Zugriffszeit nicht erneuern\n"
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr " noctty das kontrollierende Terminal nicht von Datei zuweisen\n"
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr " nofollow symbolischen Verknüpfungen nicht folgen\n"
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr " nolinks abbrechen, wenn mehrfach verlinkt\n"
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr " binary binäre Ein-/Ausgabe benutzen\n"
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr " text textuelle Ein-/Ausgabe benutzen\n"
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+"\n"
+"Schickt man einem laufenden „dd“-Prozess ein %s-Signal, gibt dieser\n"
+"auf der Standardfehlerausgabe Eingabe-/Ausgabe-Statistiken aus und fährt\n"
+"mit dem Kopieren fort.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 Datensätze ein\n"
+" 18335302+0 Datensätze aus\n"
+" 9387674624 Bytes (9,4 GB) kopiert, 34,6279 Sekunden, 271 MB/s\n"
+"\n"
+"Optionen sind:\n"
+"\n"
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+"%<PRIuMAX>+%<PRIuMAX> Datensätze ein\n"
+"%<PRIuMAX>+%<PRIuMAX> Datensätze aus\n"
+
+#: src/dd.c:553
+#, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "ein abgeschnittener Datensatz\n"
+msgstr[1] "%<PRIuMAX> abgeschnittene Datensätze\n"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] "ein Byte kopiert"
+msgstr[1] "%<PRIuMAX> Bytes (%s) kopiert"
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr "unendlich B"
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ", %g s, %s/s\n"
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "Schließen der Eingabedatei %s"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "Schließen der Ausgabedatei %s"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "Schreiben in %s"
+
+#: src/dd.c:886
+#, c-format
+msgid "unrecognized operand %s"
+msgstr "nicht erkannter Operand %s"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "ungültige Konvertierung: %s"
+
+#: src/dd.c:900
+#, c-format
+msgid "invalid input flag: %s"
+msgstr "ungültiges Eingabeflag: %s"
+
+#: src/dd.c:903
+#, c-format
+msgid "invalid output flag: %s"
+msgstr "ungültiges Ausgabeflag: %s"
+
+#: src/dd.c:906
+#, c-format
+msgid "invalid status flag: %s"
+msgstr "ungültiges Statusflag%s"
+
+#: src/dd.c:942
+#, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "nicht erkannter Operand %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "ungültige Zahl %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr "{ascii,ebcdic,ibm} sind in keiner Weise kombinierbar"
+
+#: src/dd.c:973
+#, c-format
+msgid "cannot combine block and unblock"
+msgstr "block und unblock sind nicht kombinierbar"
+
+#: src/dd.c:975
+#, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "lcase und ucase sind nicht kombinierbar"
+
+#: src/dd.c:977
+#, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "excl und nocreat sind nicht kombinierbar"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"Warnung: Umgehe lseek-Kernelbug für Datei (%s)\n"
+" des Typs mt_type=0x%0lx - siehe <sys/mtio.h> für die Liste der Typen"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, c-format
+msgid "%s: cannot seek"
+msgstr "%s: kann nicht zu Position springen"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr "Offset-Overflow beim Lesen der Datei %s"
+
+#: src/dd.c:1229
+#, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "Warnung: ungültiger Datei-Offset nach fehlgeschlagenem Lesen"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr "kann nun einmal nicht um Kernel-Fehler herumarbeiten"
+
+#: src/dd.c:1376
+#, c-format
+msgid "setting flags for %s"
+msgstr "setze Flags für %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr "fdatasync für %s fehlgeschlagen"
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr "fsync für %s fehlgeschlagen"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "öffne %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+"Offset zu groß: kann nicht auf eine Länge von seek=%<PRIuMAX> (%lu-Byte-) "
+"blocks abschneiden"
+
+#: src/dd.c:1730
+#, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "schneide bei %<PRIuMAX> Bytes in Ausgabedatei %s ab"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "Dateisystem Typ "
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "Dateisystem "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " INodes IBenut. IFrei IBen%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Größe Benut Verf Ben%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Größe Benut Verf Ben%%"
+
+#: src/df.c:165
+#, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %s-Blöcke Benutzt Verfügbar Kapazit."
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " %4s-Blöcke Benutzt Verfügbar Ben%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Eingehängt auf\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "Das aktuelle Verzeichnis ist nicht erreichbar"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "Kann nicht in Verzeichnis %s wechseln"
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "Das aktuelle Verzeichnis (jetzt %s) ist nicht erreichbar"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"Anzeige von Informationen über die Dateisysteme, auf dem sich jede\n"
+"DATEI befindet, oder alle Dateisysteme als Standardvorgabe.\n"
+"\n"
+
+#: src/df.c:749
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all unechte Dateisysteme mit einschließen\n"
+" -B, --block-size=GRÖßE GRÖßE große Blöcke verwenden\n"
+" -h, --human-readable Größen in menschenlesbarem Format (z. B. 1K 234M "
+"2G)\n"
+" -H, --si genauso, aber mit 1000 statt 1024 als Teiler\n"
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes INode-Information statt der Block-Benutzung\n"
+" auflisten\n"
+" -k wie „--block-size=1K“\n"
+" -l, --local Liste auf lokale Dateisysteme begrenzen\n"
+" --no-sync nicht „sync“ vor Erlangen der "
+"Benutzungsinformation\n"
+" aufrufen (Standardvorgabe)\n"
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability POSIX-Ausgabeformat verwenden\n"
+" --sync „sync“ vor Erlangen der Benutzungsinformation\n"
+" aufrufen\n"
+" -t, --type=TYP Liste auf Dateisysteme des Typs TYP begrenzen\n"
+" -T, --print-type Dateisystemtyp ausgeben.\n"
+" -x, --exclude-type=TYP Liste auf Dateisysteme nicht vom Typ TYP "
+"begrenzen.\n"
+" -v (ignoriert)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"GRÖßE kann eine der folgenden Abkürzungen sein (oder eine Zahl, die "
+"optional\n"
+"von einer der Abkürzungen gefolgt wird):\n"
+"kB 1000, K 1024, MB 1000×1000, M 1024×1024 und so weiter für G, T, P, E, Z, "
+"Y.\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr ""
+"Warnung: „--kilobytes“ wird in einer kommenden Version aufgegeben werden;\n"
+"bitte verwenden Sie stattdessen „-k“."
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "Dateisystemtyp %s ist sowohl ausgewählt als auch ausgeschlossen"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Warnung: "
+
+#: src/df.c:943
+#, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%sLesen der Tabelle eingehängter Dateisysteme nicht möglich"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr "keine Dateisysteme bearbeitet"
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Aufruf: %s [OPTION]... [DATEI]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Ausgabe-Befehl zum Setzen der Umgebungsvariable LS_COLORS.\n"
+"\n"
+"Bestimmen Sie das Ausgabeformat:\n"
+" -b, --sh, --bourne-shell Bourne-Shell-Code, um LS_COLORS zu setzen\n"
+" -c, --csh, --c-shell C-Shell-Code, um LS_COLORS zu setzen\n"
+" -p, --print-database Standardeinstellungen ausgeben\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"Wenn DATEI angegeben ist, wird die Datei gelesen, um festzustellen, welche\n"
+"Farben für welche Dateitypen und Erweiterungen verwendet werden sollen.\n"
+"Sonst wird eine vorkompilierte Datenbank verwendet. Für Einzelheiten rufen\n"
+"Sie „dircolors --print-database“ auf.\n"
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s: %lu: ungültige Zeile, zweites Token fehlt"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu: unbekanntes Schlüsselwort %s"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<intern>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"Die Optionen zur Ausgabe der internen Datenbank von „dircolors“ und zur "
+"Auswahl\n"
+"einer Shell-Syntax schließen sich gegenseitig aus"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr "Dateioperanden können nicht mit --print-database kombiniert werden"
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "Keine SHELL Umgebungsvariable, und keine Shell-Typ Option angegeben"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Aufruf: %s NAME\n"
+" oder: %s OPTION\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"NAME ohne die letzte /Komponente ausgeben; enthält der NAME keinen /, wird "
+"„.“\n"
+"(= aktuelles Verzeichnis) ausgegeben.\n"
+"\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+"\n"
+"Beispiele:\n"
+" %s /usr/bin/sort Ausgabe: „/usr/bin“.\n"
+" %s stdio.h Ausgabe: „.“.\n"
+
+#: src/du.c:279 src/wc.c:108
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Aufruf: %s [OPTION]... [DATEI]...\n"
+" oder: %s [OPTION]... --files0-from=DL\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"Summierung der Plattennutzung jeder DATEI, rekursiv für Verzeichnisse\n"
+"\n"
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+" -a, --all Zählung für jede Datei ausgeben, nicht nur für\n"
+" Verzeichnisse\n"
+" --apparent-size die sichtbare Größe ausgeben statt "
+"Platzverbrauchs;\n"
+" diese ist meist kleiner, kann aber auch größer\n"
+" sein durch Löcher in („sparse“-)Dateien, "
+"interne\n"
+" Fragmentierung, indirekte Blöcke und ähnliches\n"
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+" -B, --block-size=GRÖßE GRÖßE große Blöcke verwenden\n"
+" -b, --bytes äquivalent zu „--apparent-size --block-size=1“\n"
+" -c, --total Gesamtsumme erzeugen\n"
+" -D, --dereference-args Dateien dereferenzieren, wenn es sich um\n"
+" symbolische Verknüpfungen handelt\n"
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+" --files0-from=D zusammengefasste Größe der Dateien aus der Datei "
+"DL\n"
+" ausgeben (null-terminierte Dateinamen)\n"
+" -H wie --si, aber mit Warnung; wird bald äquivalent "
+"zu\n"
+" --dereference-args (-D) sein\n"
+" -h, --human-readable Größen in menschenlesbarem Format (z.B. 1K 234M "
+"2G)\n"
+" ausgeben\n"
+" --si wie „-h“, aber mit 1000 statt 1024 als Teiler\n"
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+" -k Wie „--block-size=1K“\n"
+" -l, --count-links Größe mehrfach zählen, wenn durch harte\n"
+" Verknüpfungen verbunden\n"
+" -m Wie „--block-size=1M“\n"
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference alle symbolischen Verknüpfungen dereferenzieren\n"
+" -P, --no-dereference keinen symb. Verknüpfungen folgen "
+"(Voreinstellung)\n"
+" -0, --null jede Ausgabezeile mit 0 beenden anstelle des\n"
+" Zeilenendezeichens\n"
+" -S, --separate-dirs Größe von Unterverzeichnissen nicht\n"
+" mitzählen\n"
+" -s, --summarize nur Summe für jedes Argument anzeigen\n"
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system Verzeichnis auf anderen Dateisystemen "
+"überspringen\n"
+" -X DATEI, --exclude-from=DATEI Dateien ausschließen, die auf eines der \n"
+" Muster in DATEI passen\n"
+" --exclude=MUSTER Dateien, die auf MUSTER passen, ausschließen\n"
+" --max-depth=N Summe für ein Verzeichnis ausgeben (oder einer\n"
+" Datei, mit „--all“) nur, wenn es N oder "
+"weniger \n"
+" Ebenen unterhalb des Kommandozeilenargumentes "
+"ist.\n"
+" „--max-depth=0“ ist dasselbe wie „--"
+"summarize“.\n"
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+" --time Zeit der letzten Änderung irgendeiner Datei im\n"
+" Verzeichnis oder einem seiner "
+"Unterverzeichnisse\n"
+" anzeigen\n"
+" --time=WORT Zeit als WORT anstelle der Änderungszeit "
+"anzeigen:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STIL Zeit in bestimmten Stil anzeigen:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT wird wie bei „date“ interpretiert\n"
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "insgesamt"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+"WARNUNG: Benutzen Sie --si, nicht -H; die Bedeutung von -H wird sich bald\n"
+"ändern und dann das gleiche bedeuten wie --dereference-args (-D)."
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "Ungültige maximale Tiefe %s"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr ""
+"Warnung: „--megabytes“ wird in einer kommenden Version aufgegeben werden;\n"
+"bitte verwenden Sie stattdessen „-m“."
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr ""
+"Zusammenfassung und Anzeige aller Einträge ist nicht gleichzeitig möglich"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "Warnung: Zusammenfassen ist das gleiche wie --max-depth=0"
+
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "Warnung: Zusammenfassen widerspricht --max-depth=%lu"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr "Dateioperanden können nicht mit --files0-from kombiniert werden."
+
+#: src/du.c:960 src/wc.c:662
+#, c-format
+msgid "cannot read file names from %s"
+msgstr "Kann Dateinamen nicht aus %s lesen."
+
+#: src/du.c:1000 src/du.c:1003
+msgid "invalid zero-length file name"
+msgstr "ungültiger Dateiname der Länge 0"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Aufruf: %s [OPTION]... [ZEICHENKETTE]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+"Die ZEICHENKETTEn auf die Standardausgabe ausgeben.\n"
+"\n"
+" -n den abschließenden Zeilenvorschub unterdrücken\n"
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+" -e Interpretation von Rückschrägstrich-Sequenzen anschalten "
+"(Voreinst.)\n"
+" -E Interpretation von Rückschrägstrich-Sequenzen unterdrücken\n"
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"Wenn -e aktiv ist, werden die folgenden Sequenzen erkannt und umgesetzt:\n"
+"\n"
+" \\0NNN Zeichen mit dem ASCII-Code NNN (oktal)\n"
+" \\\\ Rückschrägstrich\n"
+" \\a Alarm (BEL)\n"
+" \\b Zeichen rückwärts löschen (Backspace)\n"
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c Zeilenvorschub am Ende unterdrücken\n"
+" \\f Seitenvorschub\n"
+" \\n Zeilenvorschub\n"
+" \\r Wagenrücklauf (Carriage Return)\n"
+" \\t horizontaler Tabulatorstopp\n"
+" \\v vertikaler Tabulatorstopp\n"
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Aufruf: %s [OPTION]... [-] [NAME=WERT]... [BEFEHL [ARG]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Jeden NAMEn in der Umgebung auf WERT setzen und BEFEHL ausführen.\n"
+"\n"
+" -i, --ignore-environment mit leerer Umgebung beginnen\n"
+" -u, --unset=NAME Variable aus der Umbegung entfernen\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"Ein einzelnes „-“ steht für -i. Wenn kein BEFEHL angegeben ist, wird die\n"
+"resultierende Umgebung ausgegeben.\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Tabulatoren in jeder DATEI in Leerzeichen wandeln, auf Standardausgabe\n"
+"schreiben. Wurde keine DATEI angegeben, oder ist DATEI „-“, die\n"
+"Standardeingabe lesen.\n"
+"\n"
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial Tabulatoren nicht nach Nicht-Freiraumzeichen (non\n"
+" blanks) wandeln\n"
+" -t, --tabs=ZAHL Tabulator alle ZAHL Zeichen annehmen, nicht 8\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+" -t, --tabs=LISTE durch Komma getrennte LISTE von Tabulatorpositionen\n"
+" annehmen\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr "Tabulatorstopp ist zu groß %s"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "Tabulatorgröße enthält (ein) ungültige(s) Zeichen: %s"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "Tabulatorgröße muss ungleich 0 sein"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "Tabulatorgrößen müssen aufsteigend sein"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, c-format
+msgid "input line is too long"
+msgstr "Eingabezeile zu lang"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Aufruf: %s AUSDRUCK\n"
+" oder: %s OPTION\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"\n"
+"Den Wert des AUSDRUCKs auf Standardausgabe ausgeben. Im Folgenden bedeutet\n"
+"eine Leerzeile eine aufsteigende Präzedenz. AUSDRUCK kann sein:\n"
+"\n"
+" ARG1 | ARG2 ARG1, wenn es weder null noch 0 ist, sonst ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1, wenn kein Argument null oder 0 ist, sonst 0\n"
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"\n"
+" ARG1 < ARG2 ARG1 ist kleiner als ARG2\n"
+" ARG1 <= ARG2 ARG1 ist kleiner oder gleich ARG2\n"
+" ARG1 = ARG2 ARG1 ist gleich ARG2\n"
+" ARG1 != ARG2 ARG1 ist ungleich ARG2\n"
+" ARG1 >= ARG2 ARG1 ist größer oder gleich ARG2\n"
+" ARG1 > ARG2 ARG1 ist größer ARG2\n"
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+"\n"
+" ARG1 + ARG2 arithmetische Summe von ARG1 und ARG2\n"
+" ARG1 - ARG2 arithmetische Differenz von ARG1 und ARG2\n"
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+"\n"
+" ARG1 × ARG2 arithmetisches Produkt von ARG1 und ARG2\n"
+" ARG1 / ARG2 arithmetischer Quotient von ARG1 geteilt durch ARG2\n"
+" ARG1 % ARG2 arithmetischer Rest von ARG1 geteilt durch ARG2\n"
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"\n"
+" ZKETTE : REGEXP verankerte Mustererkennung von REGEXP in ZKETTE\n"
+"\n"
+" match ZKETTE REGEXP dasselbe wie ZEICHENKETTE : REGEXP\n"
+" substr ZKETTE POS LENGTH Teilzeichenkette von ZKETTE, POS beginnt mit 1\n"
+" index ZKETTE ZEICHEN Index in ZKETTE, wo eines der ZEICHEN auftritt,\n"
+" sonst 0\n"
+" length ZEICHENKETTE Länge der ZEICHENKETTE\n"
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+" + TOKEN TOKEN als Zeichenkette interpretieren, auch wenn\n"
+" es ein Schlüsselwort wie „match“ oder ein\n"
+" Operator wie „/“ ist\n"
+"\n"
+" ( AUSDRUCK ) Wert des AUSDRUCKs\n"
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"Bedenken Sie, dass viele Operatoren für Benutzung unter einer Shell "
+"maskiert\n"
+"werden müssen (mit Rückschrägstrich oder Anführungszeichen). Vergleiche "
+"sind\n"
+"arithmetisch, wenn beide Argumente Zahlen sind, sonst lexikografisch.\n"
+"Mustererkennungen geben die Zeichenkette zwischen \\( und \\) zurück oder "
+"nichts;\n"
+"wenn \\( und \\) nicht benutzt werden, wird die Länge der Zeichenkette oder "
+"0\n"
+"zurückgegeben.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+"\n"
+"Der Exit-Status ist 0, wenn der AUSDRUCK weder null noch 0 ist, 1, wenn\n"
+"AUSDRUCK null oder 0 ist, 2, wenn der AUSDRUCK syntaktisch ungültig ist, "
+"und\n"
+"3, wenn ein Fehler auftrat\n"
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "Syntaxfehler"
+
+#: src/expr.c:468 src/ptx.c:292
+#, c-format
+msgid "error in regular expression matcher"
+msgstr "Fehler bei Suche mit regulären Ausdrücken"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "Argument, das keine Zahl ist"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "Teilung durch Null"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Aufruf: %s [ZAHL...]\n"
+" oder: %s OPTION\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"Die Primfaktoren jeder ZAHL ausgeben.\n"
+"\n"
+
+#: src/factor.c:85
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+"Die Primfaktoren aller angegebenen ganzen ZAHLen ausgeben. Wurden keine\n"
+"Argumente in der Befehlszeile gegeben, werden diese von Standardeingabe "
+"gelesen.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s ist zu groß"
+
+#: src/factor.c:158
+#, c-format
+msgid "%s is not a valid positive integer"
+msgstr "%s ist keine gültige positive ganze Zahl"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Aufruf: %s [-ZIFFERN] [OPTION]... [DATEI]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"Jeden Absatz in DATEI(en) formatieren, auf Standardausgabe schreiben.\n"
+"Wurde keine DATEI angegeben, oder ist DATEI „-“, Standardeingabe lesen.\n"
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin Einrückung der ersten beiden Zeilen erhalten\n"
+" -p, --prefix=ZKETTE nur Zeilen mit ZKETTE als Präfix neu "
+"formatiern,\n"
+" dabei ZKETTE jeder neuen Zeile voranstellen\n"
+" -s, --split-only lange Zeilen umbrechen, aber nicht auffüllen\n"
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph erste Zeile anders als die zweite einrücken\n"
+" -u, --uniform-spacing ein Leerzeichen zwischen Wörtern, zwei nach "
+"Sätzen\n"
+" -w, --width=BREITE maximale Zeilenbreite (Vorgabe: 75 Spalten)\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+"ungültige Option -- %c; -BREITE wird nur erkannt, wenn es die erste\n"
+"Option ist; benutzen Sie stattdessen -W N"
+
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr "ungültige Zeilenbreite: %s"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"Eingabezeilen jeder DATEI umbrechen (Vorgabe: Standardeingabe),\n"
+"das Ergebnis auf Standardausgabe ausgeben.\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes Bytes anstatt Spalten zählen\n"
+" -s, --spaces Umbruch bei Leerzeichen\n"
+" -w, --width=BREITE BREITE Spalten anstatt 80 benutzen\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, c-format
+msgid "invalid number of columns: %s"
+msgstr "Ungültige Anzahl Spalten: %s"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Die ersten 10 Zeilen jeder DATEI auf Standardausgabe ausgeben.\n"
+"Mit mehr als einer DATEI, vorab den Dateinamen ausgeben.\n"
+"Ohne DATEI oder DATEI ist -, Standardeingabe lesen.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+" -c, --bytes=[-]N die ersten N Bytes jeder Datei ausgeben;\n"
+" mit führendem „-“, alle außer den letzten\n"
+" N Bytes jeder Datei\n"
+" -n, --lines=[-]N die ersten N Zeilen ausgeben statt der ersten "
+"10;\n"
+" mit führendem „-“, alle außer den letzten\n"
+" N Zeilen jeder Datei\n"
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent nie Dateinamen vorab ausgeben\n"
+" -v, --verbose immer Dateinamen vorab ausgeben\n"
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"N kann ein Vervielfältigungssuffix haben: b für 512, k für 1024,\n"
+"m für 1024×1024.\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "Fehler beim Lesen von %s"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "Fehler beim Schreiben von %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr "%s: Datei zu stark geschrumpft"
+
+#: src/head.c:230 src/head.c:1046
+#, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s: Anzahl Bytes ist zu groß"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: es ist nicht möglich, zum ursprünglichen Stelle zu springen"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: es ist nicht möglich, zum Offset %s zu springen"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "es ist nicht möglich, den Datei-Zeiger für %s neu zu positionieren"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s ist so groß, dass es nicht dargestellt werden kann"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "Anzahl Zeilen"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "Anzahl Bytes"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "ungültige Anzahl von Zeilen"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "ungültige Anzahl von Bytes"
+
+#: src/head.c:976 src/head.c:1034
+#, c-format
+msgid "invalid trailing option -- %c"
+msgstr "ungültige folgende Option -- %c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Aufruf: %s\n"
+" oder: %s OPTION\n"
+"Die hexadezimale numerische Kennung für den aktuellen Rechner ausgeben.\n"
+"\n"
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Aufruf: %s [NAME]\n"
+" oder: %s OPTION\n"
+"Den Rechnernamen dieses aktuellen Rechners ausgeben oder setzen.\n"
+"\n"
+
+#: src/hostname.c:103
+#, c-format
+msgid "cannot set name to %s"
+msgstr "kann Namen nicht auf %s setzen"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+"Rechnername kann nicht gesetzt werden; diesem System fehlt diese Möglichkeit."
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "es ist nicht möglich, den Rechnername zu ermitteln"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Aufruf: %s [OPTION]... [BENUTZERNAME]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Informationen zu BENUTZER oder für den aktuellen Benutzer ausgeben.\n"
+"\n"
+" -a ignoriert, nur aus Kompatibilitätsgründen\n"
+" -g, --group nur Gruppen-ID ausgeben\n"
+" -G, --groups nur erweiterte Gruppenliste ausgeben\n"
+" -n, --name Namen statt Nummer ausgeben, für -ugG\n"
+" -r, --real die reale ID anstelle der effektiven ausgeben, für -ugG\n"
+" -u, --user nur die Benutzer-ID ausgeben\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"Ohne Angabe einer OPTION, wird eine brauchbare Menge an Informationen\n"
+"ausgegeben.\n"
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "Es ist nicht möglich, nur Benutzer und nur Gruppe auszugeben"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr ""
+"Im Vorgabe-Format ist es nicht möglich, nur Namen oder echte IDs auszugeben"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Einen solchen Benutzer gibt es nicht"
+
+#: src/id.c:205
+#, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "Es ist kein Name zur Nutzer-ID %lu zu finden"
+
+#: src/id.c:229
+#, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "Es ist kein Name zur Gruppen-ID %lu zu finden"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "Es kann keine erweiterte Gruppenliste ermittelt werden"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " Gruppen="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr ""
+"die Option strip darf nicht bei Installation von Verzeichnissen benutzt "
+"werden"
+
+#: src/install.c:321
+#, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr ""
+"Zielvereichnis darf nicht bei Installation von Verzeichnissen benutzt werden"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "Ungültiger Modus %s"
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "kann Eigentümer von %s nicht ändern"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "Setzen der Zeitstempel für %s nicht möglich"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "Systemruf fork fehlgeschlagen"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "strip kann nicht ausgeführt werden"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "Warte auf %s [-d]"
+
+#: src/install.c:572
+#, fuzzy, c-format
+msgid "strip process terminated abnormally"
+msgstr "%s [-d] beendete sich auf ungute Weise"
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "Ungültiger Anwender %s"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "Verzeichnis %s angelegt"
+
+#: src/install.c:651
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Aufruf: %s [OPTION]... [-T] QUELLE ZIEL\n"
+" oder: %s [OPTION]... QUELLE... VERZEICHNIS\n"
+" oder: %s [OPTION]... -t=VERZEICHNIS QUELLE...\n"
+" oder: %s [OPTION]... -d=VERZEICHNIS...\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"In den drei ersten Formaten wird QUELLE nach ZIEL kopiert, oder mehrere\n"
+"QUELLEN in VERZEICHNIS, während die Zugriffsrechte und Besitzer und Gruppe\n"
+"der Dateien gesetzt werden. Im vierten Format werden alle Teile der/des\n"
+"angegebenen Verzeichnis(se) erzeugt.\n"
+"\n"
+
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup[=KONTROLLE] eine Sicherung existierender Zieldateien "
+"erzeugen\n"
+" -b wie --backup, akzeptiert aber kein Argument\n"
+" -c (ignoriert)\n"
+" -d, --directory alle Argumente als Verzeichnisnamen behandeln;\n"
+" alle Bestandteile der angegebenen "
+"Verzeichnisse\n"
+" erzeugen\n"
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D alle führenden Elemente von ZIEL erzeugen "
+"außer \n"
+" dem letzten, dann QUELLE nach ZIEL kopieren\n"
+" -g, --group=GRUPPE Gruppenbesitz setzen, statt der Gruppe des\n"
+" momentanen Prozesses\n"
+" -m, --mode=MODUS Modus der Zugriffsrechte setzen (wie in chmod),\n"
+" statt rwxr-xr-x\n"
+" -o, --owner=EIGENTÜMER Besitzers setzen (nur für den Superuser)\n"
+
+#: src/install.c:681
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps Einsetzen der Zugriffs-/Änderungszeiten der\n"
+" QUELL-Dateien auf entsprechende ZIEL-Dateien\n"
+" -s, --strip Symboltabellen bereinigen\n"
+" -S, --suffix=SUFFIX normale Anhänge für Sicherungen überschreiben.\n"
+" -t, --target-directory=VERZ alle QUELL-Argumente in VERZ kopieren\n"
+" -T, --no-target-directory ZIEL als normale Datei behandeln\n"
+" -v, --verbose den Namen jedes Verzeichnisses ausgeben, "
+"während\n"
+" es erzeugt wird\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"Der Anhang für Sicherheitskopien ist ~, außer wenn er --suffix oder\n"
+"SIMPLE_BACKUP_SUFFIX gesetzt wurde. Die Versionskontrolle kann mit\n"
+"--backup oder VERSION_CONTROL gesetzt werden. Mögliche Werte sind:\n"
+"\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"Für jedes Eingabezeilenpaar mit identischen Verschmelzungsfeldern eine "
+"Zeile\n"
+"auf Standardausgabe schreiben. Das voreingestellte Verschmelzungsfeld ist "
+"das\n"
+"erste durch Leerzeichen/Tabulator begrenzte Feld. Wenn DATEI1 oder DATEI2\n"
+"(nicht beide) „-“ ist, Standardeingabe lesen.\n"
+"\n"
+" -a DATEINR nicht-passende Zeilen aus der Datei DATEINR ausgeben, "
+"wobei\n"
+" DATEINR 1 oder 2 ist, entsprechend DATEI1 oder "
+"DATEI2\n"
+" -e LEER fehlende Eingabefelder durch LEER ersetzen\n"
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case Unterschiede in Groß/Kleinschreibung ignorieren, wenn\n"
+" Felder verglichen werden\n"
+" -j FELD äquivalent zu „-1 FELD -2 FELD“\n"
+" -o FORMAT FORMAT benutzen, wenn Ausgabezeilen erstellt werden\n"
+" -t ZEICHEN ZEICHEN als Trennzeichen für Ein- und Ausgabefelder\n"
+" benutzen\n"
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v DATEINR wie -a DATEINR, aber verschmolzene Ausgabezeilen\n"
+" unterdrücken\n"
+" -1 FELD mit diesem FELD von DATEI1 unterdrücken\n"
+" -2 FELD mit diesem FELD von DATEI2 unterdrücken\n"
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"Außer wenn -t ZEICHEN angegeben wurde, trennen führende Leerzeichen Felder "
+"und\n"
+"sie werden ignoriert; anderenfalls werden Felder durch ZEICHEN getrennt. "
+"Jedes\n"
+"FELD ist eine Feldnummer, beginnend mit 1. FORMAT sind eine oder mehrere "
+"durch\n"
+"Komma oder Leerzeichen getrennte Spezifikationen, wobei jede „DATEINR.FELD“\n"
+"oder „0“ ist. Das voreingestellte FORMAT gibt das Verschmelzungsfeld aus, "
+"die\n"
+"restlichen Felder von DATEI1, die restlichen Felder von DATEI2, alle "
+"getrennt\n"
+"mit ZEICHEN.\n"
+"\n"
+"Wichtig: DATEI1 und DATEI2 müssen nach dem Verschmelzungsfeld sortiert "
+"sein.\n"
+"Benutzen Sie zum Beispiel „sort -k 1b,1“, wenn „join“ keine Optionen hat.\n"
+
+#: src/join.c:617 src/join.c:812
+#, c-format
+msgid "invalid field number: %s"
+msgstr "Ungültige Feldnummer: %s"
+
+#: src/join.c:638 src/join.c:647
+#, c-format
+msgid "invalid field specifier: %s"
+msgstr "Ungültiger Feldbezeichner: %s"
+
+#: src/join.c:654
+#, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "Ungültige Feldnummer in Feldbezeichner: %s"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr "inkompatible Join-Felder: %lu, %lu"
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr "einander widersprechende Leerfeld-Ersetzungszeichenketten"
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr "leerer Tabulator"
+
+#: src/join.c:870 src/sort.c:3031
+#, c-format
+msgid "multi-character tab %s"
+msgstr "Multi-Zeichen-Tabulator %s"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr "inkompatible Tabulatoren"
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "Alle beide Dateien können nicht Standardeingabe sein"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"Aufruf: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" oder: %s -l [SIGNAL]...\n"
+" oder: %s -t [SIGNAL]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+"Signale an Prozesse senden oder Signale auflisten.\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+" -s, --signal=SIGNAL, -SIGNAL Name oder Nummer des zu sendenden Signals\n"
+" -l, --list Namen der Signale auflisten oder die Namen "
+"der\n"
+" Signale von oder zu Nummern umwandeln\n"
+" -t, --table Liste mit Informationen zu den Signalen\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+"\n"
+"SIGNAL kann ein Name für ein Signal wie „HUP“ sein oder eine Signalnummer "
+"wie\n"
+"„1“ oder der Exit-Status eines Prozesses der von einem Signal beendet "
+"wurde.\n"
+"PID ist eine Ganzzahl; wenn negativ, dann identifiziert PID eine Gruppe von\n"
+"Prozessen.\n"
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: ungültiges Signal"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: ungültige Prozess-ID"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "ungültige Option -- %c"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: mehrere Signale angegeben"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "mehrfach die Optionen -l oder -t angegeben"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "es ist nicht möglich, Signale mit -l oder -t zu kombinieren"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr "keine Prozess-ID angegeben"
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Aufruf: %s DATEI1 DATEI2\n"
+" oder: %s OPTION\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+"Die Funktion link aufrufen, um eine Verknüpfung DATEI2 zu DATEI1 "
+"herzustellen.\n"
+"\n"
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "Erzeugen von Verknüpfung %s zu %s nicht möglich"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+"%s: Warnung: Erstellen einer harten Verknüpfung auf eine symbolische\n"
+" Verknüpfung ist nicht portabel"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: harte Verknüpfung für Verzeichnisse nicht erlaubt"
+
+# %s: kann kein Verzeichnis überschreiben
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: Überschreiben des Verzeichnisses nicht möglich"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: %s ersetzen? "
+
+#: src/ln.c:295
+#, c-format
+msgid "creating symbolic link %s"
+msgstr "Erzeuge symbolische Verknüpfung %s"
+
+#: src/ln.c:296
+#, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "Erzeuge symbolische Verknüpfung %s → %s"
+
+#: src/ln.c:298
+#, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "Erzeuge harte Verknüpfung zu %.0s%s"
+
+#: src/ln.c:301
+#, c-format
+msgid "creating hard link %s"
+msgstr "Erzeuge harte Verknüpfung %s"
+
+#: src/ln.c:302
+#, c-format
+msgid "creating hard link %s => %s"
+msgstr "Erzeuge harte Verknüpfung %s ⇒ %s"
+
+#: src/ln.c:324
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Aufruf: %s [OPTION]... [-T] ZIEL LINK_NAME (1. Form)\n"
+" oder: %s [OPTION]... ZIEL (2. Form)\n"
+" oder: %s [OPTION]... ZIEL... VERZ (3. Form)\n"
+" oder: %s [OPTION]... -t VERZ ZIEL... (4. Form)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"In der 1. Form: Eine Verknüpfung namens LINK_NAME auf ZIEL erstellen\n"
+"In der 2. Form: Eine Verknüpfung auf ZIEL im aktuellen Verzeichnis "
+"erstellen\n"
+"In der 3. und 4. Form: Verknüpfungen zu jedem ZIEL in VERZ erstellen\n"
+"Als Standardvorgabe werde harte Verknüpfungen erstellt, für symbolische\n"
+"Verknüpfungen ist die Option --symbolic anzugeben.\n"
+"Beim Erzeugen von harten Verknüpfungen muss jedes ZIEL existieren.\n"
+"\n"
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup=[KONTROLLE] Sicherungen für vorhandene Zieldateien "
+"erzeugen.\n"
+" -b Wie --backup, akzeptiert aber kein Argument.\n"
+" -d, -F, --directory dem Super-User den Versuch erlauben, harte\n"
+" Verknüpfungen für Verzeichnisse anzulegen\n"
+" (Bem.: Schlägt vermutlich dennoch fehl "
+"wegen\n"
+" Systembeschränkungen, auch für Super-"
+"User.)\n"
+" -f, --force Vorhandene Ziele entfernen.\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference Ziel, das eine symbolische Verknüpfung auf "
+"ein\n"
+" Verzeichnis ist, wie normale Datei "
+"behandeln\n"
+" -i, --interactive vor Entfernen vorhandener Ziele nachfragen\n"
+" -s, --symbolic symbolische statt harter Verknüpfung "
+"erzeugen\n"
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" -S, --suffix=SUFFIX normale Anhänge für Sicherungen "
+"überschreiben\n"
+" -t, --target-directory=VERZ VERZeichnis angeben, in dem die "
+"Verknüpfungen\n"
+" erstellt werden sollen\n"
+" -T, --no-target-directory LINK_NAME als Namen normaler Datei behandeln\n"
+" -v, --verbose jeden Dateinamen vor dem Verknüpfen ausgeben\n"
+
+#: src/ln.c:484
+#, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "--target-directory und --no-target-directory sind nicht kombinierbar"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Aufruf: %s [OPTION]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"Den Namen des aktuellen Benutzers ausgeben.\n"
+"\n"
+
+#: src/logname.c:89
+#, c-format
+msgid "no login name"
+msgstr "kein Loginname"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%e. %b %Y "
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%e. %b %H:%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "Ungültiger Wert der Umgebungsvariable QUOTING_STYLE wird ignoriert: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "Ungültige Breite in Umgebungsvariable COLUMNS wird ignoriert: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr ""
+"Ungültige Tabulator-Größe in Umgebungsvariable TABSIZE wird ignoriert: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "ungültige Zeilenbreite: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "ungültige Tabulatorgröße: %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "Ungültiges Zeitformat %s"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "Präfix nicht erkannt: %s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "Wert für Umgebungsvariable LS_COLORS ist syntaktisch fehlerhaft."
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "Öffnen von Verzeichnis %s nicht möglich"
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "kann Gerät und INode von %s nicht bestimmen"
+
+#: src/ls.c:2353
+#, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "%s: zeige schon angezeigtes Verzeichnis nicht an"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "lese Verzeichnis %s"
+
+#: src/ls.c:2410
+#, c-format
+msgid "closing directory %s"
+msgstr "Schließen von Verzeichnis %s"
+
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "Kann Dateinamen %s und %s nicht vergleichen."
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"Auflistung von Informationen der DATEIen (Standardvorgabe ist das momentane\n"
+"Verzeichnis). Alphabetisches Sortieren der Einträge, falls weder -cftuvSUX\n"
+"noch --sort angegeben.\n"
+"\n"
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all Einträge, die mit . beginnen, nicht verstecken\n"
+" -A, --almost-all implizierte . und .. nicht anzeigen\n"
+" --author mit -l, den Urheber jeder Datei ausgeben\n"
+" -b, --escape nicht-druckbare Zeichen oktale ausgeben\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=GRÖßE GRÖßE große Blöcke verwenden\n"
+" -B, --ignore-backups Einträge, die mit ~ enden, nicht ausgeben\n"
+" -c mit -lt: Sortieren nach und Anzeige von ctime \n"
+" (Zeit der letzten Veränderung der Datei-"
+"Status-\n"
+" informationen); mit -l: ctime anzeigen und "
+"nach\n"
+" Namen sortieren\n"
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C Einträge mehrspaltig ausgeben\n"
+" --color[=WANN] Kontrolle, wann Farbe zum Unterscheiden der "
+"Datei-\n"
+" typen eingesetzt wird; WANN kann "
+"„never“ (nie),\n"
+" „always“ (immer) oder „auto“ sein\n"
+" -d, --directory Verzeichnis-Einträge statt der Inhalte "
+"anzeigen,\n"
+" symbolische Verknüpfungen nicht verfolgen\n"
+" -D, --dired Ausgabe für den „dired“-Modus im Emacs "
+"formatieren\n"
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f nicht sortieren, -aU an- und -ls --color "
+"abschalten\n"
+" -F, --classify ein Zeichen (aus */=>@|) zur Typisierung "
+"anhängen\n"
+" --file-type genauso, aber kein „*“ anhängen\n"
+" --format=WORT across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time wie -l --time-style=full-iso\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr " -g wie -l, aber Eigentümer nicht auflisten\n"
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+" --group-directories-first\n"
+" Verzeichnisse vor Dateien anordnen\n"
+
+#: src/ls.c:4322
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -G, --no-group in Langform Gruppennamen nicht auflisten\n"
+" -h, --human-readable in Langform Größenangaben in menschenlesbarem\n"
+" Format ausgeben (z. B. 1K 234M 2G)\n"
+" --si genauso, aber mit 1000 statt 1024 als Teiler\n"
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+" -H, --dereference-command-line symbolischen Verknüpfungen, die auf der\n"
+" Kommandozeile aufgeführt sind, folgen\n"
+" --dereference-command-line-symlink-to-dir\n"
+" symbolischen Verknüpfungen auf der "
+"Kommandozeile,\n"
+" die auf Verzeichnisse zeigen, folgen\n"
+" --hide=MUSTER implizite Einträge, auf die Shell-MUSTER "
+"passt,\n"
+" nicht auflisten (überschrieben durch -a oder -"
+"A)\n"
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=WORT Indikator des Stils WORT an Namen der "
+"Einträge\n"
+" anhängen: „none“ (Standardvorgabe), „slash“ (-"
+"p)\n"
+" „file-type“ (--file-type), „classify“ (-F)\n"
+" -i, --inode mit -l, Inode-Nummer ausgeben\n"
+" -I, --ignore=MUSTER implizierte Einträge, auf die Shell-MUSTER\n"
+" passt, nicht auflisten\n"
+" -k wie „--block-size=1K“\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l lange Listenformat verwenden\n"
+" -L, --dereference bei symbolischen Verknüpfungen die "
+"Eigenschaften\n"
+" der jeweiligen Zieldatei anzeigen\n"
+" -m so viele Einträge wie möglich, durch Kommata\n"
+" getrennt, in eine Zeile packen\n"
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid wie -l, aber numerische UIDs und GIDs anzeigen\n"
+" -N, --literal rohe Eintragsnamen anzeigen (z. B. Kontrollâ€\n"
+" zeichen nicht besonders behandeln)\n"
+" -o wie -l, aber ohne Gruppen-Informationen\n"
+" -p, --indicator-style=slash an Verzeichnisse ein „/“ anhängen\n"
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars „?“ statt nicht-druckbarer Zeichen ausgeben\n"
+" --show-control-chars nicht-druckbare Zeichen anzeigen, wie sie sind\n"
+" (Standardvorgabe, außer wenn das Programm "
+"„ls“ \n"
+" ist und die Ausgabe auf ein Terminal geht)\n"
+" -Q, --quote-name Eintrags-Namen in doppelte Anführungszeichen.\n"
+" --quoting-style=WORT Anführungszeichen-Stil WORT benutzen:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse umgekehrte Reihenfolge beim Sortieren\n"
+" -R, --recursive Unterverzeichnissen rekursiv ausgeben\n"
+" -s, --size die Größe jeder Datei in Blöcken ausgeben\n"
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S nach Dateigröße sortieren\n"
+" --sort=WORT nach WORT anstatt nach Name sortieren: none -U\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORT mit -l, Zeit als WORT statt der Änderungszeit:\n"
+" atime -u, access -u, use -u, ctime -c, status "
+"-c;\n"
+" die angegebene Zeit als Sortierkriterium\n"
+" bei --sort=time verwenden\n"
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=STIL mit -l, Zeiten mittels Stil STIL anzeigen:\n"
+" full-iso, long-iso, iso, locale, +FORMAT\n"
+" FORMAT wie bei „date“; hat FORMAT die Form\n"
+" FORMAT1<newline>FORMAT2, wird FORMAT1 für "
+"nicht\n"
+" kürzlich geänderte Dateien verwendet und "
+"FORMAT2\n"
+" für kürzlich geänderte; beginnt STIL mit "
+"„posix-“,\n"
+" ist STIL nur außerhalb der POSIX-Locale gültig\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+" -t nach Änderungszeit sortieren\n"
+" -T, --tabsize=SPALTEN Tabstops auf alle SPALTEN Zeichen setzen statt "
+"8\n"
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u mit -lt: Sortieren nach und Anzeige von "
+"Zugriffs-\n"
+" zeit; mit -l: Anzeige von Zugriffszeit und\n"
+" nach Namen sortieren; sonst: nach "
+"Zugriffszeit\n"
+" -U nicht sortieren; Einträge in Reihenfolge des\n"
+" Verzeichnisses auflisten\n"
+" -v nach Version sortieren\n"
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -w, --width=SPALTEN gegebene Bildschirmbreite statt des momentanen\n"
+" Wertes annehmen\n"
+" -x Einträge in Zeilen statt in Spalten auflisten\n"
+" -X alphabetisch nach der Erweiterung sortieren\n"
+" -1 eine Datei pro Zeile auflisten\n"
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"Standardmäßig werden keine Farben zum Unterscheiden der Dateitypen "
+"verwandt. \n"
+"Das ist das äquivalent zur Verwendung von --color=none. Verwendung der\n"
+"--color-Option ohne das optionale WANN-Argument ist äquivalent zur "
+"Verwendung\n"
+"von --color=always. Mit --color=auto werden Farbcodes ausgegeben, wenn die\n"
+"Standardausgabe mit einem Terminal (tty) verbunden ist. Die "
+"Umgebungsvariable\n"
+"LS_COLORS kann die Farben beeinflussen und kann einfach mit dem Befehl\n"
+"„dircolors“ gesetzt werden.\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+"\n"
+"Exit-Status ist 0, wenn alles OK ist, 1 bei kleineren Problemen und\n"
+"2 bei richtigem Ärger.\n"
+
+#: src/md5sum.c:150
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Aufruf: %s [OPTION] [DATEI]...\n"
+"%s-Prüfsummen (%d Bits) ausgeben oder überprüfen.\n"
+"Ohne DATEI oder wenn DATEI „-“ ist, Standardeingabe lesen.\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+" -b, --binary im Binärmodus lesen (Voreinstellung außer beim "
+"Lesen\n"
+" aus an Konsole gebundener Standardeingabe)\n"
+
+#: src/md5sum.c:164
+msgid " -b, --binary read in binary mode\n"
+msgstr " -b, --binary im Binärmodus lesen\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+" -c, --check %s-Prüfsummen aus DATEIen lesen und überprüfen\n"
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+"-t, --text im Textmodus lesen (Voreinstellung beim Lesen\n"
+" aus an Konsole gebundener Standardeingabe)\n"
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr " -t, --text im Textmodus lesen (Voreinstellung)\n"
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"\n"
+"Die folgenden beiden Optionen sind nur beim Überprüfen sinnvoll:\n"
+" --status nichts ausgeben, der Statuscode zeigt Erfolg an\n"
+" -w, --warn bei ungeeignet formatierten Prüfsummenzeilen warnen\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"Die Summen werden berechnet wie in %s beschrieben. Beim Überprüfen\n"
+"sollte die Eingabe eine frühere Ausgabe dieses Programms sein. Die normale\n"
+"Arbeitsweise ist es, eine Zeile mit Prüfsumme, einem Zeichen, das den Typ\n"
+"anzeigt („*“ für binär, „ “ für Text), und dem Namen jeder Datei "
+"auszugeben.\n"
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: zu viele Prüfsummenzeilen"
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %<PRIuMAX>: nicht korrekt formatierte %s-Prüfsummenzeile"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: FEHLSCHLAG bei open oder read\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "FEHLSCHLAG"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "OK"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: Lesefehler"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: keine korrekt formatierte %s-Prüfsummenzeile gefunden"
+
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "WARNUNG: die eine aufgeführte Datei konnte nicht gelesen werden"
+msgstr[1] ""
+"WARNUNG: %<PRIuMAX> von %<PRIuMAX> aufgeführten Dateien konnten nicht "
+"gelesen werden"
+
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "Warnung: die berechnete Prüfsumme passte NICHT"
+msgstr[1] ""
+"Warnung: %<PRIuMAX> von %<PRIuMAX> berechneten Prüfsumme passten NICHT"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"Die Optionen --binary und --text sind bei der Kontrolle von Prüfsummen "
+"nutzlos"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "Die Option --status ist nur bei der Kontrolle von Prüfsummen sinnvoll"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr ""
+"Die Option --warn ist nur nur bei der Kontrolle von Prüfsummen sinnvoll"
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Aufruf: %s [OPTION] VERZEICHNIS...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"Erzeugen der/des Verzeichnisse(s), wenn sie noch nicht existieren.\n"
+"\n"
+
+#: src/mkdir.c:67
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+" -m, --mode=MODUS Zugriffsrechte setzen (wie chmod), nicht a=rwx − umask\n"
+" -p, --parents kein Fehler, wenn vorhanden; übergeordnete\n"
+" Verzeichnissen erzeugen, wenn notwendig\n"
+" -v, --verbose für jedes angelegte Verzeichnis eine Meldung ausgeben\n"
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "Verzeichnis %s angelegt"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Aufruf: %s [OPTION] NAME...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"Benannte Pipes (FIFOs) mit den angegebenen NAMEn erzeugen.\n"
+"\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+" -m, --mode=MODUS Zugriffsrechte auf MODUS setzen, nicht a=rw − umask\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "ungültiger Zugriffsmodus"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr "Der Modus darf nur Dateizugriffsrechte angeben."
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Aufruf: %s [OPTION]... NAME TYP [MAJOR MINOR]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"Spezial-Datei NAME vom angegebenen TYP erzeugen.\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+"\n"
+"Sowohl MAJOR als auch MINOR müssen angegeben werden, wenn der TYP b, c oder "
+"u\n"
+"ist, und müssen weggelassen werden für TYP p. Beginnen MAJOR oder MINOR mit "
+"0x\n"
+"oder 0X, wird die Zahl hexadezimal interpretiert; anderenfalls, wenn sie mit "
+"0\n"
+"beginnen, oktal; anderenfalls dezimal. TYP kann sein:\n"
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+" b eine blockorientierte (gepufferte) Spezial-Datei anlegen\n"
+" c, u eine zeichenorienterte (ungepufferte) Spezial-Datei anlegen\n"
+" p eine FIFO anlegen\n"
+
+#: src/mknod.c:146
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"Beim Erzeugen von Spezialdateien müssen Major- und Minor-Gerätenummern "
+"angegeben werden"
+
+#: src/mknod.c:156
+msgid "Fifos do not have major and minor device numbers."
+msgstr "Fifos habe keine Major- und Minor-Gerätenummern."
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "Blockorientierte Spezialdateien werden nicht unterstützt"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "Zeichenorientierte Spezialdateien werden nicht unterstützt"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "Ungültige Major-Gerätenummer %s"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "Ungültige Minor-Gerätenummer %s"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "Ungültiges Gerät %s %s"
+
+#: src/mknod.c:216
+#, c-format
+msgid "invalid device type %s"
+msgstr "Ungültiger Gerätetyp %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Umbenennen von QUELLE in ZIEL, oder QUELLE(en) in VERZEICHNIS verschieben\n"
+"\n"
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup[=KONTROLLE] vor Entfernen Sicherung anlegen\n"
+" -b wie --backup, akzeptiert aber keine "
+"Argumente\n"
+" -f, --force vor Ãœberschreiben nicht nachfragen\n"
+" -i, --interactive vor Ãœberschreiben nachfragen\n"
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --strip-trailing-slashes Schrägstriche vom Ende jedes QUELLE-"
+"Arguments\n"
+" entfernen\n"
+" -S, --suffix=SUFFIX die normale Sicherungs-Erweiterung "
+"überschreiben\n"
+
+#: src/mv.c:308
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --target-directory=VERZ alle Quellen in Verzeichnis VERZ verschieben\n"
+" -T, --no-target-directory ZIEL als normale Datei behandeln\n"
+" -u, --update nur ältere oder brandneue Dateien "
+"verschieben\n"
+" -v, --verbose Erklärung über Abläufe ausgeben\n"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Aufruf: %s [OPTION] [BEFEHL [ARGUMENT]...]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+"BEFEHL mit festgelegter Priorität ausführen, was Zeitzuteilung beeinflusst.\n"
+"Ohne BEFEHL, die aktuelle Priorität ausgeben. Die Priorität reicht dabei "
+"von\n"
+"%d (vorteilhafteste Zeitzuteilung) bis %d (unvorteilhafteste "
+"Zeitzuteilung).\n"
+"\n"
+" -n, --adjustment=N Priorität N erhöhen (Voreinstellung 10)\n"
+
+#: src/nice.c:155
+#, c-format
+msgid "invalid adjustment %s"
+msgstr "ungültiges Argument %s"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "Mit einer Priorität muss ein Befehl angegeben werden"
+
+#: src/nice.c:171 src/nice.c:182
+#, c-format
+msgid "cannot get niceness"
+msgstr "kann aktuelle Priorität nicht ermitteln"
+
+#: src/nice.c:186
+#, c-format
+msgid "cannot set niceness"
+msgstr "kann Priorität nicht setzen"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Jede DATEI mit Zeilennummern nach Standardausgabe schreiben.\n"
+"Ohne DATEI oder wenn DATEI „-“ ist, Standardeingabe lesen.\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=STIL STIL zur Nummerierung benutzen\n"
+" -d, --section-delimiter=CC CC benutzen, um logische Seiten zu "
+"trennen\n"
+" -f, --footer-numbering=STIL STIL benutzen, um Fußzeilen zu "
+"nummerieren\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=STIL STIL benutzen, um Kopfzeilen zu "
+"nummerieren\n"
+" -i, --page-increment=ANZAHL Zeilennummerinkrement in jeder Zeile\n"
+" -l, --join-blank-lines=ANZAHL ANZAHL Leerzeilen zählen als eine\n"
+" -n, --number-format=FORMAT Zeilennummern gemäß FORMAT einfügen\n"
+" -p, --no-renumber logische Zeilennummer am Anfang von "
+"logischen\n"
+" Seiten nicht zurücksetzen\n"
+" -s, --number-separator=ZKETTE ZKETTE nach (möglicher) Zeilennummer "
+"einfügen\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=ANZAHL erste Zeilennummer auf jeder logischen "
+"Seite\n"
+" -w, --number-width=ANZAHL ANZAHL Spalten für Zeilennummern benutzen\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"Standardeinstellung ist -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC sind\n"
+"zwei Begrenzungszeichen, um logische Seiten zu trennen, ein fehlendes "
+"zweites\n"
+"Zeichen impliziert „:“. Geben Sie \\\\ für \\ ein. STIL ist einer aus:\n"
+
+#: src/nl.c:214
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a alle Zeilen nummerieren\n"
+" t nur nichtleere Zeilen nummerieren\n"
+" n keine Zeilen nummerieren\n"
+" pREGEXP nur Zeilen nummerieren, die die einfache REGEXP enthalten\n"
+"\n"
+"FORMAT ist eines der folgenden:\n"
+"\n"
+" ln linksbündig, keine führenden Nullen\n"
+" rn rechtsbündig, keine führenden Nullen\n"
+" rz rechtsbündig, führende Nullen\n"
+"\n"
+
+#: src/nl.c:281
+#, c-format
+msgid "line number overflow"
+msgstr "Ãœberlauf bei den Zeilennummern"
+
+#: src/nl.c:479
+#, c-format
+msgid "invalid header numbering style: %s"
+msgstr "ungültiger Stil für Kopfzeilennummerierung: %s"
+
+#: src/nl.c:487
+#, c-format
+msgid "invalid body numbering style: %s"
+msgstr "ungültiger Stil für Textkörpernummerierung: %s"
+
+#: src/nl.c:495
+#, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "ungültiger Stil für Fußzeilennummerierung: %s"
+
+#: src/nl.c:504
+#, c-format
+msgid "invalid starting line number: %s"
+msgstr "ungültiger anfängliche Zeilennummer: %s"
+
+#: src/nl.c:513
+#, c-format
+msgid "invalid line number increment: %s"
+msgstr "ungültiges Inkrement für Zeilennummer: %s"
+
+#: src/nl.c:525
+#, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "ungültige Anzahl von Leerzeilen: %s"
+
+#: src/nl.c:539
+#, c-format
+msgid "invalid line number field width: %s"
+msgstr "ungültige Breite des Feldes für die Zeilennummer: %s"
+
+#: src/nl.c:558
+#, c-format
+msgid "invalid line numbering format: %s"
+msgstr "ungültiges Zeilennummerformat: %s"
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Aufruf: %s BEFEHL [ARGUMENT]...\n"
+" oder: %s OPTION\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+"BEFEHL ausführen und dabei das Signal HUP ignorieren.\n"
+"\n"
+
+#: src/nohup.c:117
+#, c-format
+msgid "ignoring input"
+msgstr "ignoriere Eingabe"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr "konnte %s nicht öffnen"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "ignoriere Eingabe und hänge Ausgabe an %s an"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr "konnte die Kopie von stderr bei Exec nicht auf Schließen setzen"
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+"ignoriere Eingabe und leite Standardfehlerausgabe auf Standardausgabe um"
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr "konnte Standardfehlerausgabe nicht umleiten"
+
+#: src/od.c:307
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Aufruf: %s [OPTION]... [DATEI]...\n"
+" oder: %s [-abcdfilosx]... [DATEI] [[+]OFFSET[.][b]]\n"
+" oder: %s --traditional [OPTION]... [DATEI] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"Eine eindeutige Darstellung der DATEI, auf Standardausgabe ausgeben "
+"(Vorgabe:\n"
+"Oktalzahlen). Bei mehr als einem Argument DATEI, die Dateien in der\n"
+"angegebenen Folge verketten und die Eingabe zu bilden.\n"
+"Ohne DATEI oder wenn DATEI „-“ ist, Standardeingabe lesen.\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+"Erforderliche Argumente für lange Optionen sind für kurze auch notwendig.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=RADIX entscheiden, wie Dateioffsets ausgegeben "
+"werden\n"
+" -j, --skip-bytes=BYTES BYTES Eingabebytes am Anfang jeder Datei\n"
+" übergehen\n"
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=BYTES Ausgabe auf BYTES Eingabebytes pro Datei\n"
+" begrenzen\n"
+" -s, --strings[=BYTES] Ketten mit wenigstens BYTES alphanumerischen\n"
+" Zeichen ausgeben\n"
+" -t, --format=TYP Ausgabeformat(e) wählen\n"
+" -v, --output-duplicates nicht * benutzen, um Zeilenunterdrückung\n"
+" anzuzeigen\n"
+" -w, --width[=BYTES] Anzahl BYTES pro Ausgabezeile ausgeben\n"
+" --traditional Argumente in traditioneller Form akzeptieren\n"
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"Traditionell spezifizierte Formatangaben können gemischt werden; sie werden\n"
+"akkumuliert:\n"
+" -a dasselbe wie -t a, benannte Zeichen wählen, oberstes Bit ignorieren\n"
+" -b dasselbe wie -t o1, Oktalbytes wählen\n"
+" -c dasselbe wie -t c, ASCII-Zeichen oder Rückschrägstrich-Escapes "
+"wählen\n"
+" -d dasselbe wie -t u2, dezimale vorzeichenlose 2-Byte-Zahlen wählen\n"
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f dasselbe wie -t fF, Fließkommazahlen wählen\n"
+" -i dasselbe wie -t dI, dezimale Integer wählen\n"
+" -l dasselbe wie -t dL, dezimale Longs wählen\n"
+" -o dasselbe wie -t o2, oktale 2-Byte-Zahlen wählen\n"
+" -s dasselbe wie -t d2, dezimale 2-Byte-Zahlen wählen\n"
+" -x dasselbe wie -t x2, hexadezimale 2-Byte-Zahlen wählen\n"
+
+#: src/od.c:353
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"Wenn die erste und zweite Aufrufform beide zutreffen, wird das zweite "
+"Format\n"
+"angenommen, wenn der letzte Operand mit + oder (wenn es zwei Operanden "
+"gibt)\n"
+"einer Ziffer anfängt. Ein OFFSET-Operand bedeutet -j OFFSET. MARKE ist die\n"
+"Pseudoadresse des ersten auszugebenden Bytes; sie wird entsprechend erhöht,\n"
+"wenn die Ausgabe fortschreitet. Für OFFSET und MARKE bedeutet ein „0x“- "
+"oder\n"
+"„0X“-Präfix hexadezimal; Suffixe können „.“ für oktal und „b“ für "
+"Vielfaches\n"
+"von 512 sein.\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+"\n"
+"TYP setzt sich zusammen aus einer oder mehreren dieser Spezifikationen:\n"
+"\n"
+" a ein benanntes Zeichen, oberstes Bit ignorieren\n"
+" c ASCII-Zeichen oder Rückschrägstrich-Escape\n"
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[ANZAHL] dezimal mit Vorzeichen, ANZAHL Bytes pro Zahl\n"
+" f[ANZAHL] Fließkomma, ANZAHL Bytes pro Zahl\n"
+" o[ANZAHL] oktal, ANZAHL Bytes pro Zahl\n"
+" u[ANZAHL] dezimal ohne Vorzeichen, ANZAHL Bytes pro Zahl\n"
+" x[ANZAHL] hexadezimal, ANZAHL Bytes pro Zahl\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"ANZAHL ist eine Zahl. Wenn TYP einer von „d“, „o“, „u“, oder „x“ ist, kann\n"
+"ANZAHL auch „C“ für sizeof(char), „S“ für sizeof(short) , „I“ für sizeof"
+"(int)\n"
+"oder „L“ für sizeof(long) sein. Wenn TYP „f“ ist, kann ANZAHL auch „F“ für\n"
+"sizeof(float), „D“ für sizeof(double) oder „L“ für sizeof(long double) "
+"sein.\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"RADIX ist „d“ für dezimal, „o“ für oktal, „x“ für hexadezimal oder „n“ für\n"
+"nichts. BYTES ist hexadezimal mit 0x- oder 0X-Präfix, wird multipliziert "
+"mit\n"
+"512 für Suffix „b“, mit 1024 für „k“ und mit 1048576 für „m“. Wird ein "
+"Suffix\n"
+"„z“ zu einem belibigen Typ angehängt, werden am Ende jeder Zeile die "
+"druckbaren\n"
+"Zeichen ausgegeben. "
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"--string ohne Zahl impliziert „3“. --width ohne Zahl impliziert „32“.\n"
+"Standardmäßig benutzt od: -A o -t d2 -w16.\n"
+
+#: src/od.c:683 src/od.c:802
+#, c-format
+msgid "invalid type string %s"
+msgstr "Ungültige Typbezeichnung %s"
+
+#: src/od.c:693
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"Ungültige Typbezeichnung %s;\n"
+"dieses System hat keinen Typ für %lu-Byte große Ganzzahlen"
+
+#: src/od.c:812
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"Ungültige Typbezeichnung %s;\n"
+"dieses System hat keinen Typ für %lu-Byte große Gleitkommazahlen"
+
+#: src/od.c:871
+#, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "Ungültiges Zeichen „%c“ in Typenbezeichnung %s"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr ""
+"Es ist nicht möglich, hinter das Ende der kombinierten Eingabe vorzurücken"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+"Ungültiger Ausgabeadressradix „%c“; es muss ein Zeichen aus [doxn] sein"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "Argument übergehen "
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "Argument begrenzen"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "Minimale Zeichenkettenlänge"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "Breitenangabe"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "Bei der Ausgabe von Zeichenketten darf kein Typ angegeben werden"
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr "Der Kompatibilitätsmodus unterstützt höchstens eine Datei."
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr "skip-bytes + read-bytes ist zu groß"
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "Warnung: ungültige Breite %lu; %d wird benutzt"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: fmt=\"%s\" width=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "Standardeingabe ist geschlossen"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Zeilen auf Standardausgabe ausgeben, die aus sequenziell sich "
+"entsprechenden\n"
+"Zeilen jeder DATEI bestehen, getrennt durch Tabulatoren.\n"
+"Ohne DATEI oder wenn DATEI - ist, Standardeingabe lesen.\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=LISTE Zeichen aus LISTE anstelle von Tabulatoren "
+"benutzen\n"
+" -s, --serial Dateien nacheinander ausgeben anstelle parallel\n"
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Aufruf: %s [OPTION]... NAME...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+"Nicht portable Konstruktionen in NAME analysieren.\n"
+"\n"
+" -p für die meisten POSIX-Systeme überprüfen\n"
+" -P auf leere Namen und führendes „-“ prüfen\n"
+" --portability für alle POSIX-Systeme überprüfen (äquiv. zu -p -P)\n"
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr "führendes „-“ in einem Bestandteil des Dateinamens von %s"
+
+#: src/pathchk.c:206
+#, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "unportables Zeichen %s in Dateinamen %s"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr "leerer Dateiname"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr "%s: kann maximale Dateinamenlänge nicht ermitteln"
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr "Obergrenze %lu durch Länge %lu des Dateinamen %s überschritten"
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+"Obergrenze %lu durch Länge %lu des Dateinamensbestandteils %s überschritten"
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Loginname: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "Im richtigen Leben: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Verzeichnis: "
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Shell: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Projekt: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "Plan:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Login"
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr "Name"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr " TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Untätig"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Wann"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Wo "
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Aufruf: %s [OPTION]... [BENUTZER]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"\n"
+" -l langes Format für den angegebenen BENUTZER erzeugen\n"
+" -b ohne Home-Verzeichnis und Shell der Benutzer (bei langem\n"
+" Format)\n"
+" -h ohne Projekt-Datei der Benutzer (bei langem Format)\n"
+" -p ohne Plan-Datei der Benutzer (bei langem Format)\n"
+" -s kurzes Format erzeugen (dies ist die Vorgabe)\n"
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+" -f ohne Kopfzeile über den Spalten (bei kurzem Format)\n"
+" -w ohne Namen der Benutzer (bei kurzem Format)\n"
+" -i ohne volle Namen und entfernte Rechner der Benutzer (bei\n"
+" kurzem Format)\n"
+" -q ohne volle Namen, entfernte Rechner und Idle-Zeit der "
+"Benutzer\n"
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+"\n"
+"Ein abgespecktes „finger“-Programm zum Anzeigen von Benutzerinformationen.\n"
+"Als utmp-Datei wird %s genommen.\n"
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr ""
+"kein Benutzername angegeben; wenigstens einer muss angegeben werden, wenn "
+"die\n"
+"Option -l verwendet wird"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr "Seitenbereich"
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "--pages=ERSTE_SEITE[:LETZTE_SEITE]: fehlendes Argument"
+
+#: src/pr.c:916
+#, c-format
+msgid "Invalid page range %s"
+msgstr "Ungültiger Seitenbereich „%s“"
+
+#: src/pr.c:981
+#, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "„-l SEITEN_LÄNGE“ ungültige Angabe der Zeilenanzahl: %s"
+
+#: src/pr.c:1005
+#, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "„-N ZAHL“ ungültige Angabe der Startzeilennummer: %s"
+
+#: src/pr.c:1017
+#, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "„-o RAND“ ungültige Angabe des Zeilenoffsets: %s"
+
+#: src/pr.c:1058
+#, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "„-w SEITEN_BREITE“ ungültige Angabe der Zeichenanzahl: %s"
+
+#: src/pr.c:1072
+#, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "„-W SEITEN_BREITE“ ungültige Angabe der Zeichenanzahl: %s"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr ""
+"Es ist nicht möglich, die Anzahl der Spalten bei Parallel-Ausgabe "
+"festzulegen."
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr ""
+"Es ist nicht möglich, gleichzeitig bei Parallel- und Überkreuz-Ausgabe\n"
+"festzulegen."
+
+#: src/pr.c:1202
+#, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "„-%c“ Extrazeichen oder ungültige Zahl im Argument: %s"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "Seitenbreite zu schmal"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr "Anfangsseitennummer %<PRIuMAX> übersteigt Seitenzahl %<PRIuMAX>"
+
+#: src/pr.c:2406
+#, c-format
+msgid "Page number overflow"
+msgstr "Ãœberlauf bei den Seitennummern"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr "Seite %<PRIuMAX>"
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr "DATEI(en) in Seiten und Spalten unterteilen für eine Druckausgabe.\n"
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +ERSTE_SEITE[:LETZTE_SEITE], --pages=ERSTE_SEITE[:LETZTE_SEITE]\n"
+" Druck mit ERSTE_[LETZTE_]SEITE beginnen [beenden]\n"
+" -SPALTEN, --columns=SPALTEN\n"
+" SPALTEN-spaltige Ausgabe erzeugen und Spalten vertikal "
+"schreiben,\n"
+" es sei denn, -a wurde benutzt. Zahl der Zeilen in jeder "
+"Spalte\n"
+" ausbalancieren.\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across\n"
+" Spalten horizontal statt vertikal schreiben, wird zusammen\n"
+" mit -SPALTEN benutzt\n"
+" -c, --show-control\n"
+" Hut-Notation (^G) und oktale Rückschrägstrich-Notation "
+"benutzen\n"
+" -d, --double-space\n"
+" doppelter Zeilenvorschub in der Ausgabe\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=FORMAT\n"
+" FORMAT für die Datumsausgabe in der Kopfzeile benutzen\n"
+" -e[ZEICH[BREITE]], --expand-tabs[=ZEICH[BREITE]]\n"
+" Eingabe-ZEICHen (Tabulatoren) zu BREITE Leerzeichen (8) "
+"ersetzen\n"
+" -F, -f, --form-feed\n"
+" Seitenvorschübe statt Zeilenvorschübe benutzen, um Seiten zu\n"
+" trennen (duch einen 3-Zeilen-Seitenkopf bei -F oder einen\n"
+" 5-Zeilen-Seitenkopf und -fuß ohne -F)\n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h KOPF, --header=KOPF\n"
+" KOPF als zentrierten Seitenkopf anstelle des Dateinamens "
+"benutzen\n"
+" -h \"\" druckt eine leere Zeile, nicht -h\"\" benutzen.\n"
+" -i[ZEICH[BREITE]], --output-tabs[=ZEICH[BREITE]]\n"
+" Leerzeichen mit ZEICHen (Tabulatoren) auf BREITE (8) ersetzen\n"
+" -J, --join-lines\n"
+" zu vollen Zeilen zusammenziehen, gleichzeitig die durch -W\n"
+" veranlasste Zeilenbeschneidung abschalten, keine\n"
+" Spaltenausrichtung, --sep-string[=ZKETTE] setzt Trennzeichen\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l SEITENLÄNGE, --length=SEITENLÄNGE\n"
+" Seitenlänge auf SEITENLÄNGE (66) Zeilen setzen\n"
+" (Vorgabe: 56 Zeilen, und mit -F 63)\n"
+" -m, --merge alle Dateien parallel ausgeben, eine in jeder Spalte,\n"
+" Zeilen abschneiden, aber Zeilen voller Länge bei -J "
+"vereinigen\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[SEP[ZIFFERN]], --number-lines[=SEP[ZIFFERN]]\n"
+" Zeilen nummerieren, ZIFFERN (5) Ziffern benutzen,\n"
+" danach SEP (Tabulator),\n"
+" Vorgabe: Nummerierung beginnt mit der ersten Zeile der "
+"Eingabe\n"
+" -N ZAHL, --first-line-number=ZAHL\n"
+" Nummerierung mit ZAHL bei der ersten Zeile der ersten Seite\n"
+" beginnen, die ausgedruckt wird (siehe auch +ERSTE_SEITE)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o RAND, --indent=RAND\n"
+" Zeile um RAND (null) Leerzeichen einrücken (beeinflusst nicht\n"
+" -w oder -W), RAND wird zu SEITEN_BREITE addiert\n"
+" -r, --no-file-warnings\n"
+" Warnung unterdrücken, wenn eine Datei nicht geöffnet werden "
+"kann\n"
+
+# CHECKIT
+# space missing
+# 2001-11-23 20:32:53 CET -ke-
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[ZEICHEN],--separator[=ZEICHEN]\n"
+" Spalten durch einzelnes Zeichen trennen, Vorgabe für "
+"ZEICHEN\n"
+" ist das Tabulator-Zeichen ohne -w und „kein Zeichen“ mit -"
+"w\n"
+" -s[ZEICHEN] schaltet Zeilenabschneidung bei allen drei\n"
+" Spaltenoptionen (-SPALTE|-a -SPALTE|-m) ab, außer bei -w\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -SZKETTE, --sep-string[=ZKETTE]\n"
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" Spalten durch eine ZKETTE trennen,\n"
+" ohne -S: Vorgabetrennzeichen ist Tabulator mit -J und\n"
+" sonst Leerzeichen (dasselbe wie -S\" \"), hat keine\n"
+" Auswirkung auf Spaltenoptionen\n"
+" -t, --omit-header Kopf- und Fußzeilen unterdrücken\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" Kopf- und Fußzeilen unterdrücken, Seitenvorschubangaben "
+"der\n"
+" Eingabedateien ignorieren\n"
+" -v, --show-nonprinting\n"
+" oktale Rückschrägstrich-Notation benutzen\n"
+" -w SEITEN_BREITE, --width=SEITEN_BREITE\n"
+" Seitenbreite auf SEITEN_BREITE (72) Zeichen nur für "
+"Ausgabe\n"
+" mehrfacher Textspalten setzen, -s[Zeichen] schaltet (72) "
+"ab\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W SEITEN_BREITE, --page-width=SEITEN_BREITE\n"
+" Seitenbreite immer auf SEITEN_BREITE (72) Zeichen "
+"setzen,\n"
+" Zeilen abschneide, es sei denn -J ist gesetzt, kein\n"
+" Zusammenspiel mit -S oder -s\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"-T wird impliziert von -l nn, wenn nn <= 10 oder <= 3 mit -F. Ohne DATEI "
+"oder\n"
+"wenn DATEI „-“ ist, Standardeingabe lesen.\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Aufruf: %s [VARIABLE]...\n"
+" oder: %s OPTION\n"
+"Wenn keine Umgebungs-VARIABLE angegeben ist, alle Variablen ausgeben.\n"
+"\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+"Warnung: %s: Zeichen, die einer Zeichenkonstanten folgen, werden ignoriert"
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Aufruf: %s FORMAT [ARGUMENT]...\n"
+" oder: %s OPTION\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+"ARGUMENTe entsprechend des angegebenen FORMATs ausgeben.\n"
+"\n"
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"\n"
+"FORMAT bestimmt die Ausgabe wie bei printf aus C. Interpretiert werden:\n"
+"\n"
+" \\\" doppelte Anführungszeichen\n"
+" \\0NNN Zeichen mit dem oktalen Wert NNN (1 bis 3 Ziffern)\n"
+" \\\\ Rückschrägstrich\n"
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+" \\a Alarm (BEL)\n"
+" \\b Zeichen rückwärts löschen (Backspace)\n"
+" \\c keine weitere Ausgabe\n"
+" \\f Seitenvorschub\n"
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n Zeilenvorschub\n"
+" \\r Wagenrücklauf (Carriage Return)\n"
+" \\t horizontaler Tabulatorstopp\n"
+" \\v vertikaler Tabulatorstopp\n"
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+" \\xHH Byte mit hexadezimalem Wert HH (1 bis 2 Stellen)\n"
+"\n"
+" \\uHHHH Unicode-Zeichen (ISO/IEC 10646) mit Hex-Wert HHHH (4 Stellen)\n"
+" \\UHHHHHHHH Unicode-Zeichen mit hexadezimalem Wert HHHHHHHH (8 Stellen)\n"
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+" %% ein einzelnes %\n"
+" %b ARGUMENT als Zeichenkette mit interpretierter „\\“-Maskierung,\n"
+" außer dass Oktalfolgen die Form \\0 oder \\0NNN haben\n"
+"\n"
+"und alle C-Formatspezifikationen, die mit einem Zeichen aus diouxXfeEgGcs\n"
+"enden, wobei die ARGUMENTe zunächst in den richtigen Typ umgewandelt "
+"werden.\n"
+"Variable Breiten werden behandelt.\n"
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: erwartet eine Zahlwert"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: Wert nicht vollständig konvertiert"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "Hexadezimale Zahl fehlt in der Maskierung (Escape)"
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "ungültiger universaler Zeichenname \\%c%0*x"
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr "ungültige Feldbreite: %s"
+
+#: src/printf.c:585
+#, c-format
+msgid "invalid precision: %s"
+msgstr "ungültige Genauigkeit: %s"
+
+#: src/printf.c:612
+#, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%.*s: ungültige Umwandlungsangabe"
+
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "Warnung: überflüssige Argumente werden ignoriert, beginnend mit %s"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr "F. Pinard"
+
+#: src/ptx.c:422
+#, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (für regulären Ausdruck %s)"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Aufruf: %s [OPTION]... [EINGABE]... (ohne -G)\n"
+" oder: %s -G [OPTION]... [EINGABE [AUSGABE]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"Einen permutierten Index der Wörter der Eingabedateien einschließlich "
+"Kontext\n"
+"ausgeben.\n"
+"\n"
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference automatisch generierte Referenzen ausgeben\n"
+" -G, --traditional mehr wie „ptx“ von System V funktionieren\n"
+" -F, --flag-truncation=ZKETTE ZKETTE benutzen, um Abschneidungen "
+"anzuzeigen\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=ZKETTE Makroname, der statt „xx“ zu benutzen ist\n"
+" -O, --format=roff Ausgabe als roff-Anweisungen erzeugen\n"
+" -R, --right-side-refs Referenzen nach rechts setzen, in -w nicht\n"
+" gezählt\n"
+" -S, --sentence-regexp=REGEXP für Zeilen- oder Satzende\n"
+" -T, --format=tex Ausgabe als TeX-Anweisungen erzeugen\n"
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=REGEXP REGEXP benutzen, um jedes Schlüsselwort\n"
+" abzubilden\n"
+" -b, --break-file=DATEI Wortendezeichen in dieser Datei\n"
+" -f, --ignore-case zum Sortieren Klein- in Großschreibung "
+"wandeln\n"
+" -g, --gap-size=NUMBER Zwischenraumgröße zwischen Ausgabefeldern\n"
+" -i, --ignore-file=DATEI Liste zu ignorierender Wörter aus DATEI "
+"lesen\n"
+" -o, --only-file=DATEI Wortliste nur aus dieser DATEI lesen\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references erstes Feld jeder Zeile ist eine Referenz\n"
+" -t, --typeset-mode - nicht implementiert -\n"
+" -w, --width=ANZAHL Ausgabebreite innerhalb der Spalten, ohne "
+"die\n"
+" Referenzen\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"Ohne DATEI, oder falls DATEI „-“ ist, Standardeingabe lesen. Vorgabe: „-"
+"F /“.\n"
+
+#: src/ptx.c:2016
+#, c-format
+msgid "invalid gap width: %s"
+msgstr "ungültige Lückenbreite: %s"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr ""
+"Warnung: „--copyright“ wird in einer kommenden Version aufgegeben werden;\n"
+"bitte verwenden Sie stattdessen „--version“."
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+"Den vollständigen Dateinamen des aktuellen Verzeichnisses ausgeben.\n"
+"\n"
+
+#: src/pwd.c:160
+#, c-format
+msgid "failed to chdir to %s"
+msgstr "konnte nicht nach %s wechseln"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, c-format
+msgid "failed to stat %s"
+msgstr "konnte auf %s nicht zugreifen"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr "konnte in %s keine Verzeichniseintrag mit passendem Inode finden"
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "Argumente, die keine Optionen sind, werden ignoriert"
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Aufruf: %s [OPTION]... DATEI\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+"Wert einer symbolischen Verknüpfung auf der Standardausgabe ausgeben.\n"
+"\n"
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+" -f, --canonicalize kanonisieren, indem jeder symb. Verknüpfung in "
+"jeder\n"
+" Komponente des gegebenen Pfads rekursiv gefolgt "
+"wird;\n"
+" alle außer der letzten Komponente müssen "
+"existieren\n"
+" -e, --canonicalize-existing kanonisieren, indem jeder symb. Verknüpfung "
+"in jeder\n"
+" Komponente des gegebenen Pfads rekursiv gefolgt "
+"wird;\n"
+" alle Komponenten müssen existieren\n"
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+" -m, --canonicalize-missing kanonisieren, indem jeder symb. Verknüpfung "
+"in jeder\n"
+" Komponente des gegebenen Pfads rekursiv gefolgt "
+"wird;\n"
+" ohne Anforderung an Existenz der Komponenten\n"
+" -n, --no-newline keinen abschließenden Zeilenvorschub ausgeben\n"
+" -q, --quiet,\n"
+" -s, --silent Fehlermeldungen größtenteils unterdrücken\n"
+" -v, --verbose Fehlermeldungen ausgeben\n"
+
+#: src/remove.c:481 src/remove.c:525
+#, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "FATAL: konnte Verzeichnis %s nicht schließen"
+
+#: src/remove.c:494
+#, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "FATAL: kann .. nicht von %s aus öffnen"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+"FATAL: kann nicht sicherstellen, dass %s (zurückgekehrt via ..) sicher ist"
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "FATaL: Verzeichnis %s hat Gerät/Inode geändert"
+
+#: src/remove.c:631
+#, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "FATAL: kann Verzeichnis %s nicht betreten"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr "FATaL: gerade betretenes Verzeichnis %s hat Gerät/Inode geändert"
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"WARNUNG: Zirkuläre Verzeichnis-Struktur.\n"
+"Diese bedeutet beinahe mit Sicherheit ein beschädigtes Dateisystem.\n"
+"BENACHRICHTIGEN SIE IHREN SYSTEM-VERWALTER.\n"
+"Das folgende Verzeichnis ist Teil des Zyklus:\n"
+" %s\n"
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s: in schreibgeschütztes Verzeichnis %s absteigen? "
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s: in Verzeichnis %s absteigen? "
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: %s (schreibgeschützt) %s entfernen? "
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: %s %s entfernen? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "Verzeichnis wurde entfernt: %s\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, c-format
+msgid "failed to close directory %s"
+msgstr "konnte Verzeichnis %s nicht schließen"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr "überspringe %s, da es auf einem anderen Gerät ist"
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "Entfernen von Verzeichnis %s nicht möglich"
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "FATAL: kann nicht nach „..“ zurückkehren aus %s"
+
+#: src/remove.c:1504
+#, c-format
+msgid "cannot remove root directory %s"
+msgstr "Entfernen von Wurzelverzeichnis %s nicht möglich"
+
+#: src/remove.c:1544
+#, c-format
+msgid "cannot remove relative-named %s"
+msgstr "kann relativ benanntes %s nicht entfernen"
+
+#: src/remove.c:1558
+#, c-format
+msgid "cannot restore current working directory"
+msgstr "kann aktuelles Verzeichnis nicht wieder herstellen"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr "Versuchen Sie „%s ./%s“, um die Datei %s zu entfernen.\n"
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Aufruf: %s [OPTION]... DATEI...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+"Entfernen (unlink) der DATEI(en).\n"
+"\n"
+" -f, --force nicht vorhandene Dateien ignorieren, keine "
+"Nachfragen\n"
+" -i vor jeder Entfernung nachfragen\n"
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+" -I einmal nachfragen, wenn mehr als drei Dateien\n"
+" gelöscht werden sollen oder beim rekursiven\n"
+" Löschen; weniger aufdringlich als -i, gibt aber\n"
+" Schutz gegen die meisten Fehler.\n"
+" --interactive[=WANN] nachfragen WANN: „never“ (nie), „once“ (-I) "
+"oder\n"
+" „always“ (-i); ohne WANN: immer\n"
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+" --one-file-system beim rekursiven Entfernen einer "
+"Verzeichnishierarchie\n"
+" die Verzeichnisse überspringen, die sich auf "
+"einem\n"
+" anderen Gerät als der Parameter befinden\n"
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --no-preserve-root „/“ nicht besonders behandeln\n"
+" --preserve-root nicht rekursiv auf „/“ arbeiten (Voreinstellung)\n"
+" -r, -R, --recursive Inhalte von Verzeichnissen rekursiv entfernen\n"
+" -v, --verbose durchgeführte Tätigkeiten erklären\n"
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+"\n"
+"Per Voreinstellung entfernt rm keine Verzeichnisse. Bei Benutzung der "
+"Option\n"
+"--recursive (-r oder -R) wird jedes aufgeführte Verzeichnisse inklusive "
+"seiner\n"
+"Inhalte gelöscht.\n"
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"Um Dateien zu entfernen, deren Namen mit „-“ beginnen, z. B. „foo“, "
+"verwenden\n"
+"Sie eine der folgenden Anweisungen:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"Beachten Sie, dass, wenn Sie „rm“ benutzen, um eine Datei zu löschen, es\n"
+"üblicherweise möglich ist, ihren Inhalt wiederherzustellen. Wenn Sie mehr\n"
+"Sicherheit darüber wünschen, dass die Inhalte tatsächlich nicht\n"
+"wiederherstellbar sind, sollten Sie eher „shred“ benutzen.\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr "%s: Alle Argumente rekursiv entfernen? "
+
+#: src/rm.c:366
+#, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: alle Argumente entfernen? "
+
+# XLATE_REMARK: Check this out! is the %s replaced by the name of the directory?
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "Verzeichnis wird entfernt, %s"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Aufruf: %s [OPTION]... VERZEICHNIS...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"Die VERZEICHNIS(se) entfernen, wenn sie leer sind.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" Jeden Fehlschlag ignorieren, der nur daher rührt, dass\n"
+" ein Verzeichnis nicht leer ist.\n"
+
+#: src/rmdir.c:148
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents VERZEICHNIS und seine Vorfahren entfernen; damit ist\n"
+" „rmdir -p a/b/c“ ähnlich zu „rmdir a/b/c a/b a“\n"
+" -v, --verbose Diagnose für jedes bearbeitete Verzeichnis ausgeben\n"
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Aufruf: %s [OPTION]... LETZTER\n"
+" oder: %s [OPTION]... ERSTER LETZTER\n"
+" oder: %s [OPTION]... ERSTER PLUS LETZTER\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"Die Zahlen von ERSTER bis LETZTER ausgeben, in Schritten von PLUS.\n"
+"\n"
+" -f, --format=FORMAT Fließkomma-FORMAT im Stil von printf benutzen\n"
+" -s, --separator=ZKETTE ZKETTE benutzen, um Zahlen zu trennen (Vorgabe :"
+"\\n)\n"
+" -w, --equal-width gleiche Breite durch führende Nullen herstellen\n"
+
+#: src/seq.c:88
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"\n"
+"Wenn ERSTER oder PLUS weggelassen werden, wird 1 angenommen. Ein "
+"weggelassenes\n"
+"PLUS wird also als 1 interpretiert, selbst wenn LETZTER kleiner als ERSTER "
+"ist.\n"
+"ERSTER, PLUS und LETZTER werden als Fließkommazahlen interpretiert.\n"
+"PLUS ist normalerweise positiv, wenn ERSTER kleiner als LETZTER ist, und\n"
+"PLUS ist normalerweise negativ, wenn ERSTER größer als LETZTER ist.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+"FORMAT muss in der Lage sein, ein Argument vom Typ „double“ auszugeben;\n"
+"per Voreinstellung ist es %.PRÄZf wenn ERSTER, PLUS und LETZTER alle "
+"dezimale\n"
+"Fixkommazahlen sind mit einer maximalen Genauigkeit PRÄZ, ansonsten %g.\n"
+"Die Angabe der Zahlen auf der Kommandozeilen muss im englischen Format "
+"erfolgen,\n"
+"die Ausgabe hängt dagegen von der gewählten Locale ab (in diesem Fall wird "
+"also\n"
+"ein Dezimalpunkt in der Eingabe und ein Dezimalkomma in der Ausgabe "
+"benutzt.)\n"
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "ungültiges Fließkommaargument: %s"
+
+#: src/seq.c:342
+#, c-format
+msgid "invalid format string: %s"
+msgstr "ungültige Formatangabe: %s"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr ""
+"Formatzeichenkette darf nicht angegeben werden, wenn Zeichenketten\n"
+"gleicher Breite ausgegeben werden"
+
+#: src/setuidgid.c:51
+#, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Aufruf: %s NUTZERNAME BEFEHL [ARGUMENT]...\n"
+" oder: %s OPTION\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+"Jede zusätzliche Gruppe aufgeben, Nutzer- und Gruppen-ID des angegebenen\n"
+"Nutzers annehmen und BEFEHL mit angegebenen ARGUMENTen durchführen.\n"
+"Mit Status 111 beenden, wenn UID und GID nicht angenommen werden können.\n"
+"Ansonsten, mit Status von BEFEHL beenden.\n"
+"Dieses Programm ist nur nützlich, wenn es von Root (UID=0) gerufen wird.\n"
+"\n"
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr "unbekannte Nutzer-ID: %s"
+
+#: src/setuidgid.c:109
+#, c-format
+msgid "cannot set supplemental group"
+msgstr "kann keine erweiterte Gruppen setzen"
+
+#: src/setuidgid.c:114
+#, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "kann die Gruppen-ID nicht auf %lu setzen"
+
+#: src/setuidgid.c:118
+#, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "kann die Nutzer-ID nicht auf %lu setzen"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Aufruf: %s [OPTIONEN] DATEI [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"Mehrfaches Ãœberschreiben der angegebenen DATEI(en), um es schwerer zu "
+"machen,\n"
+"selbst mit teuren Hardware-Analysemitteln die Daten wieder herzustellen.\n"
+"\n"
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force Zugriffsrechte wechseln, um ein Schreiben zuzulassen,\n"
+" wenn nötig\n"
+" -n, --iteration=N N-fach überschreiben statt des Standardwertes (%d)\n"
+" --random-source=DATEI zufällige Bytes aus DATEI nehmen (/dev/"
+"urandom)\n"
+" -s, --size=N diese Anzahl Bytes zerhacken (Suffixe wie K, M, G "
+"zulässig)\n"
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove Datei nach dem Ãœberschreiben abschneiden und entfernen\n"
+" -v, --verbose Fortschritt anzeigen\n"
+" -x, --exact Dateigrößen nicht auf den nächsten vollen Block runden;\n"
+" dies ist für nicht-reguläre Dateien die Voreinstellung\n"
+" -z, --zero ein letzten Überschreiben mit Nullen hinzufügen, um\n"
+" Zerhacken zu verbergen.\n"
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"Wenn die DATEI - ist, die Standardausgabe zerhacken.\n"
+"\n"
+"DATEI(en) löschen, wenn --remove (-u) angegeben ist. Die Standardvorgabe\n"
+"ist es, die Dateien nicht zu löschen, da man oft auf Gerätedateien wie /dev/"
+"hda\n"
+"arbeitet, und diese Dateien nicht gelöscht werden sollten. Bei der "
+"Benutzung\n"
+"mit normalen Dateien verwenden die meisten Anwender die Option --remove.\n"
+"\n"
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"VORSICHT: Beachten Sie, dass „shred“ auf einer sehr wichtigen Annahme "
+"beruht:\n"
+"dass das Dateisystem Daten an derselben Stelle überschreibt. Das ist die "
+"alt-\n"
+"hergebrachte Vorgehensweise, doch viele moderne Betriebssystemdesigns "
+"erfüllen\n"
+"diese Annahme nicht. Die folgenden Systeme sind Beispiele von "
+"Dateisystemen,\n"
+"auf denen „shred“ keine Wirkung hat oder auf denen nicht für alle Datei-\n"
+"systemmodi eine Wirkung garantiert werden kann:\n"
+"\n"
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"* Log-strukturierte oder „journalled“ Dateisysteme, so wie die mit AIX und\n"
+"Solaris gelieferten (und JFS, ReiserFS, XFS, Ext3, usw.)\n"
+"\n"
+"* Dateisysteme, die redundante Daten schreiben und auch dann fortfahren, "
+"wenn\n"
+"einige Schreibvorgänge fehlschlagen, so wie RAID-basierte Dateisysteme\n"
+"\n"
+"* Dateisysteme, die Schnappschüsse anfertigen, so wie der NFS-Server\n"
+"von Network Appliance\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+"* Dateisysteme, die an temporären Orten zwischenspeichern, so wie Klienten\n"
+"unter NFS Version 3\n"
+"\n"
+"* komprimierte Dateisysteme\n"
+"\n"
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+"Im Fall von ext3 trifft die obige Bemerkung (und die eingeschränkte\n"
+"Verwendbarkeit von shred) nur zu, wenn der Modus data=journal\n"
+"gesetzt ist, der neben einem Journal für Metadaten auch eines für Daten\n"
+"schreibt. Sowohl im Modus data=ordered (Voreinstellung) und data=writeback\n"
+"funktioniert shred wie gewöhnlich. Die Journal-Optionen von ext3 können "
+"beim\n"
+"Einhängen gesetzt werden durch Anhängen von data=irgendwas für ein "
+"bestimmtes\n"
+"Dateisystem in der /etc/fstab, wie es in der Manpage zu mount erklärt ist.\n"
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+"Außerdem können Dateisystemsicherungen und entfernte Spiegel Kopien der "
+"Datei\n"
+"enthalten, die nicht entfernt werden können, und die es erlauben, eine\n"
+"zerhackte Datei wieder herzustellen.\n"
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr "%s: fdatasync fehlgeschlagen"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr "%s: fsync fehlgeschlagen"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s: Zurückspulen nicht möglich"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: Durchgang %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s: Fehler beim Schreiben an Verschiebung %s"
+
+#: src/shred.c:478
+#, c-format
+msgid "%s: lseek failed"
+msgstr "%s: lseek fehlgeschlagen"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s: Datei zu groß"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: Durchgang %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: Durchgang %lu/%lu (%s)...%s/%s %d%%"
+
+#: src/shred.c:776
+#, c-format
+msgid "%s: fstat failed"
+msgstr "%s: fstat fehlgeschlagen"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: ungültiger Dateityp"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: Datei hat negative Größe"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s: Fehler beim Abschneiden"
+
+#: src/shred.c:889
+#, c-format
+msgid "%s: fcntl failed"
+msgstr "%s: fcntl fehlgeschlagen"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s: kann einen Nur-Anfügen-Dateideskriptors nicht zerhacken"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: wird entfernt"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: in %s umbenannt"
+
+#: src/shred.c:1018
+#, c-format
+msgid "%s: failed to remove"
+msgstr "%s: konnte nicht entfernen"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: entfernt"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, c-format
+msgid "%s: failed to close"
+msgstr "%s: konnte nicht schließen"
+
+#: src/shred.c:1065
+#, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: konnte nicht zum Schreiben öffnen"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: ungültige Anzahl von Durchgängen"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, c-format
+msgid "multiple random sources specified"
+msgstr "mehrere Zufallsquellen angegeben"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: ungültige Dateigröße"
+
+#: src/shuf.c:51
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Aufruf: %s [OPTION]... [DATEI]\n"
+" oder: %s -e [OPTION]... [ARG]...\n"
+" oder: %s -i VON-BIS [OPTION]...\n"
+
+#: src/shuf.c:57
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"Eine zufällige Permutaion der Eingabezeilen in die Standardausgabe "
+"schreiben.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -e, --echo jedes ARG als Eingabezeile ansehen\n"
+" -i, --input-range=VON-BIS Zahlen von VON bis BIS als Eingabezeilen "
+"ansehen\n"
+" -n, --head-lines=ZEILEN höchstens ZEILEN Zeilen zeigen\n"
+" -o, --output=DATEI Ergebnis in DATEI schreiben statt in "
+"Standardausg.\n"
+" --random-source=DATEI zufällige Bytes aus DATEI nehmen (/dev/"
+"urandom)\n"
+" -z, --zero-terminated Zeilen mit Nullbyte statt Zeilenumbruch "
+"abschließen\n"
+
+#: src/shuf.c:287
+#, c-format
+msgid "multiple -i options specified"
+msgstr "mehrfach die Optionen -i angegeben"
+
+#: src/shuf.c:307
+#, c-format
+msgid "invalid input range %s"
+msgstr "ungültiger Eingabebereich: %s"
+
+#: src/shuf.c:320
+#, c-format
+msgid "invalid line count %s"
+msgstr "ungültige Zeilenanzahl: %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr "mehrere Ausgabedateien angegeben"
+
+#: src/shuf.c:353
+#, c-format
+msgid "cannot combine -e and -i options"
+msgstr "Optionen -e und -i können nicht kombiniert werden."
+
+#: src/shuf.c:362
+#, c-format
+msgid "extra operand %s\n"
+msgstr "zusätzlicher Operand %s\n"
+
+#: src/sleep.c:47
+#, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Aufruf: %s ANZAHL[SUFFIX]...\n"
+" oder: %s OPTION\n"
+"Für ANZAHL Sekunden pausieren. SUFFIX kann sein: „s“ für Sekunden "
+"(Vorgabe),\n"
+"„m“ für Minuten, „h“ für Stunden, „d“ für Tage. Im Gegensatz zu den "
+"meisten\n"
+"Implementierungen, die ANZAHL als eine ganze Zahl erfordern, kann ANZAHL "
+"hier\n"
+"eine beliebige Gleitkommazahl sein. Werden zwei oder mehr Argumente "
+"angegeben,\n"
+"wird für eine Zeit pausiert, die der Summe der Werte entspricht.\n"
+"\n"
+
+#: src/sleep.c:138
+#, c-format
+msgid "invalid time interval %s"
+msgstr "ungültiges Zeitintervall %s"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "Echtzeit-Uhr kann nicht gelesen werden"
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"Aneinanderfügung aller DATEI(en) sortiert nach der Standardausgabe "
+"schreiben.\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+"Sortieroptionen:\n"
+"\n"
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks führende Leerzeichen ignorieren\n"
+" -d, --dictionary-order nur Leer- und alphanumerische Zeichen "
+"beachten\n"
+" -f, --ignore-case Klein- als Großbuchstaben behandeln\n"
+
+#: src/sort.c:326
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort anhand des allgemeinen numerischen Wertes\n"
+" sortieren\n"
+" -i, --ignore-nonprinting nur druckbare Zeichen beachten\n"
+" -M, --month-sort Reihenfolge: (unbekannt) < „JAN“ < ... < "
+"„DEZ“\n"
+" -n, --numeric-sort anhand des numerischen Werts sortieren\n"
+" -R, --random-sort anhand eines zufälligen Hash der Schlüssel "
+"sortieren\n"
+" --random-source=DATEI zufällige Bytes aus DATEI nehmen (/dev/"
+"urandom)\n"
+" -r, --reverse das Ergebnis der Sortierung umkehren\n"
+"\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+"Andere Optionen:\n"
+"\n"
+" -c, --check, --check=diagnose-first prüfen, ob Eingabe sortiert ist;\n"
+" nicht sortieren\n"
+" -C, --check=quiet, --check=silent wie -c, aber erste schlechte\n"
+" Zeile nicht melden\n"
+" --compress-program=PROG temporäre Dateien mit PROG komprimieren;\n"
+" mit PROG -d wieder entpacken\n"
+" -k, --key=POS1[,POS2] Schlüssel geht von POS1 bis POS2 (beginnend mit "
+"1)\n"
+" -m, --merge schon sortierte Dateien zusammenführen; nicht\n"
+" sortieren\n"
+
+#: src/sort.c:346
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+" -o, --output=DATEI Ergebnis in DATEI schreiben statt "
+"Standardausgabe\n"
+" -s, --stable Sortierung stabilisieren (dabei "
+"Rückzugssortierung\n"
+" deaktivieren)\n"
+" -S, --buffer-size=GRÖßE GRÖßE für Hauptspeicherpuffer benutzen\n"
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=SEP SEP benutzen statt Ãœbergang von Nichtleerraum "
+"zu\n"
+" Leerraum\n"
+" -T, --temporary-directory=VERZ für temporäre Dateien VERZ statt $TMPDIR\n"
+" oder %s; kann mehrfach gegeben werden\n"
+" -u, --unique mit -c: auf strikte Odnung prüfen; ohne -c: nur\n"
+" das erste von mehreren Gleichen ausgeben\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -z, --zero-terminated Zeilen mit Nullbyte beenden, nicht mit\n"
+" Zeilenvorschub\n"
+
+#: src/sort.c:363
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"POS ist F[.Z][OPTS], wobei F eine Feldnummer und Z eine Zeichenposition im "
+"Feld\n"
+"ist; beide starten bei 1. Wenn weder -t noch -b angegeben sind, werden die\n"
+"Zeichen in einem Feld ausgehend vom Anfang des vorhergehenden Leerraums\n"
+"gezählt. OPTS setzt sich zusammen aus einer oder mehreren Ordnungsoptionen "
+"mit\n"
+"einem Buchstaben, die die globalen Ordnungsoptionen für diesen Schlüssel "
+"außer\n"
+"Kraft setzen. Wenn kein Schlüssel angegeben wurde, wird die ganze Zeile "
+"als\n"
+"Schlüssel benutzt.\n"
+"\n"
+"GRÖSSE kann einer der folgenden multiplikativen Suffixe sein:\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"% 1% des Speichers, b 1, k 1024 (Vorgabe), und so weiter für M, G, T, P, E, "
+"Z,\n"
+"Y.\n"
+"\n"
+"Ohne DATEI, oder wenn DATEI „-“ ist, Standardeingabe lesen.\n"
+"\n"
+"*** WARNUNG ***\n"
+"Die eingestellte Locale beeinflusst die Sortierreihenfolge.\n"
+"Setzen Sie LC_ALL=C, um die traditionelle Sortierreihenfolge zu aktivieren, "
+"bei\n"
+"der native Bytewerte verwendet werden.\n"
+
+#: src/sort.c:538
+#, c-format
+msgid "waiting for %s [-d]"
+msgstr "Warte auf %s [-d]"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr "%s [-d] beendete sich auf ungute Weise"
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "temporäre Datei konnte nicht angelegt werden"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "Öffnen fehlgeschlagen"
+
+#: src/sort.c:758
+msgid "fflush failed"
+msgstr "fflush fehlgeschlagen"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "Schließen fehlgeschlagen"
+
+#: src/sort.c:772
+#, c-format
+msgid "dup2 failed"
+msgstr "dup2 fehlgeschlagen"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr "konnte %s nicht ausführen"
+
+#: src/sort.c:880 src/sort.c:929
+msgid "couldn't create temporary file"
+msgstr "konnte temporäre Datei nicht anlegen"
+
+#: src/sort.c:903
+msgid "couldn't open temporary file"
+msgstr "konnte temporäre Datei nicht öffnen"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr "konnte %s -d nicht ausführen"
+
+#: src/sort.c:924
+#, c-format
+msgid "couldn't create process for %s -d"
+msgstr "konnte keinen Prozess für %s -d anlegen"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "Schreiben fehlgeschlagen"
+
+#: src/sort.c:975
+#, c-format
+msgid "warning: cannot remove: %s"
+msgstr "Warnung: kann %s nicht entfernen"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "Sortiergröße"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "stat fehlgeschlagen"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "Lesen fehlgeschlagen"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: ungeordnet: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "Standardfehler"
+
+#: src/sort.c:2562
+#, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: ungültige Feldangabe %s"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr "Optionen „-%s“ sind inkompatibel"
+
+#: src/sort.c:2637
+#, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: ungültige Zähler am Anfang von %s"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "ungültige Zahl hinter „-“"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "ungültige Zahl hinter „.“"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "verirrte Buchstaben in Feldspezifikation"
+
+#: src/sort.c:2934
+#, c-format
+msgid "multiple compress programs specified"
+msgstr "mehrere Komprimierungsprogramme angegeben"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "ungültige Zahl am Feldanfang"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "Feldnummer ist Null"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "Zeichenversatz ist Null"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "ungültige Zahl hinter „,“"
+
+#: src/sort.c:3142
+#, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "zusätzlicher Operand %s nicht erlaubt mit -%c"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Aufruf: %s [OPTION] [EINGABE [PRÄFIX]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"Stücke fester Größe der EINGABE auf PRÄFIXaa, PRÄFIXab, ... ausgeben; "
+"Vorgabe\n"
+"für die Größe ist 1000 Zeilen und für PRÄFIX „x“. Wenn keine EINGABE "
+"angegeben\n"
+"wurde oder die EINGABE „-“ ist, Standardeingabe lesen.\n"
+"\n"
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=N Suffixe mit Länge N verwenden (Vorgabe %d)\n"
+" -b, --bytes=GRÖSSE GRÖSSE Bytes in die Ausgabedatei ausgeben\n"
+" -C, --line-bytes=GRÖSSE höchstens GRÖSSE Bytes pro Zeile auf die Ausgabe\n"
+" schreiben\n"
+" -d, --numeric-suffixes numerische Suffixe statt alphabetischer benutzen\n"
+" -l, --lines=ANZAHL ANZAHL Zeilen in die Ausgabedatei ausgeben\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose Meldung auf Standardfehlerausgabe ausgeben, "
+"bevor\n"
+" jede Ausgabedatei geöffnet wird\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"GRÖSSE kann ein Vervielfältigungssuffix haben: „b“ für 512, „k“ für 1K, „m“ "
+"für\n"
+"1 Megabyte.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "Kein Suffix für Ausgabedateien mehr verfügbar"
+
+#: src/split.c:211
+#, c-format
+msgid "creating file %s\n"
+msgstr "Datei %s wird angelegt\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "Es ist nicht möglich, auf mehr als eine Art zu splitten"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: ungültige Suffixlänge"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: ungültige Anzahl von Bytes"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: ungültige Anzahl von Zeilen"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "Zeilenanzahloption -%s%c... ist zu groß"
+
+#: src/split.c:518
+#, c-format
+msgid "invalid number of lines: 0"
+msgstr "ungültige Anzahl von Zeilen: 0"
+
+#: src/stat.c:636
+#, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "Warnung: unbekannte Flucht-Sequenz „\\%c“"
+
+#: src/stat.c:680
+#, c-format
+msgid "%s: invalid directive"
+msgstr "%s: ungültige Anweisung"
+
+#: src/stat.c:726
+#, c-format
+msgid "warning: backslash at end of format"
+msgstr "Warnung: ungültiger Rückschrägstrich (\\) am Ende der Zeichenkette"
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr "kann Dateisysteminformation für %s nicht lesen"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Aufruf: %s [OPTION] DATEI...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+"Status einer Datei oder eines Dateisystems anzeigen.\n"
+"\n"
+" -L, --dereference Verknüpfungen folgen\n"
+" -f, --file-system Dateisystemstatus anstelle von Dateistatus anzeigen\n"
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+" -c --format=FORMAT das angegebene FORMAT anstelles der Voreinstellung\n"
+" benutzen; Zeilenvorschub nach jeder Benutzung\n"
+" --printf=FORMAT wie --format, aber Rückschrägstrich-Steuerzeichen "
+"auswerten,\n"
+" kein obligatorischer Zeilenvorschub; letzterer "
+"kann\n"
+" mittels \\n in FORMAT eingefügt werden\n"
+" -t, --terse die Information in knapper Form ausgeben\n"
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"\n"
+"Die gültigen Formatangaben für Dateien (ohne --file-system):\n"
+"\n"
+" %a Zugriffsrechte im Oktalformat\n"
+" %A Zugriffsrechte in menschenlesbarer Form\n"
+" %b Anzahl der beanspruchten Blöcke (siehe %B)\n"
+" %B die Größe in Bytes jedes mit „%b“ gemeldeten Blocks\n"
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+" %d Gerätenummer in Dezimal\n"
+" %D Gerätenummer in Hex\n"
+" %f roher Modus in Hex\n"
+" %F Dateityp\n"
+" %g Gruppen-ID des Eigners\n"
+" %G Gruppenname des Eigners\n"
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+" %i INode-Nummer\n"
+" %h Anzahl der harten Verknüpfungen\n"
+" %n Dateiname\n"
+" %N „Quoted File Name“ mit Dereferenzierung bei symbolischer Verknüpfung\n"
+" %o E/A-Blockgröße\n"
+" %s Gesamtgröße in Bytes\n"
+" %t Major-Gerätetyp in Hex\n"
+" %T Minor-Gerätetyp in Hex\n"
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+" %u Nutzer-ID des Eigners\n"
+" %U Nutzername des Eigners\n"
+" %x Zeit des letzten Zugriffs\n"
+" %X Zeit des letzten Zugriffs in Sekunden seit der Epoche\n"
+" %y Zeit der letzten Modifikation\n"
+" %Y Zeit der letzten Modifikation in Sekunden seit der Epoche\n"
+" %z Zeit der letzten Änderung\n"
+" %Z Zeit der letzten Änderung in Sekunden seit der Epoche\n"
+"\n"
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"Die gültigen Formatangaben für Dateisysteme:\n"
+"\n"
+" %a Freie Blöcke, die Nicht-Superusern zur Verfügung stehen\n"
+" %b Gesamt-Datenblöcke im Dateisystem\n"
+" %c Gesamt-Dateiknoten im Dateisystem\n"
+" %d Freie Dateiknoten im Dateisystem\n"
+" %f Freie Blöcke im Dateisystem\n"
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+" %i Dateisystem-ID in Hex\n"
+" %l Maximale Länge von Dateinamen\n"
+" %n Dateiname\n"
+" %s Optimale Transfer-Blockgröße\n"
+" %S grundlegende Blockgröße (für Blockzahlen)\n"
+" %t Typ in Hex\n"
+" %T Typ in menschenlesbarer Form\n"
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Aufruf: %s [-F GERÄT] [--file=GERÄT] [EINSTELLUNGEN]...\n"
+" oder: %s [-F GERÄT] [--file=GERÄT] [-a|--all]\n"
+" oder: %s [-F GERÄT] [--file=GERÄT] [-g|--save]\n"
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Charakteristika des Terminals ausgeben oder ändern.\n"
+"\n"
+" -a, --all alle Einstellungen in lesbarer Form ausgeben\n"
+" -g, --save alle Einstellungen lesbar für stty ausgeben\n"
+" -F, --file=GERÄT das angegebene GERÄT anstelle der Standardeingabe "
+"öffnen\n"
+" und benutzen\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+"\n"
+"Ein optionales „-“ vor EINSTELLUNGEN bedeutet Verneinung. Ein „*“ markiert\n"
+"nicht POSIX-konforme Einstellungen. Das Wirtssystem bestimmt, welche\n"
+"Einstellungen zur Verfügung stehen.\n"
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"\n"
+"Besondere Zeichen:\n"
+"* dsusp CHAR CHAR sendet ein Terminalstoppsignal, wenn Eingabe "
+"erforderlich\n"
+" eof CHAR CHAR sendet Ende-der-Datei (Eingabe beenden)\n"
+" eol CHAR CHAR beendet Zeile\n"
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+"* eol2 CHAR alternatives CHAR für Zeilenende\n"
+" erase CHAR CHAR löscht das zuletzt eingegebene Zeichen\n"
+" intr CHAR CHAR sendet Unterbrechungssignal (Interrupt)\n"
+" kill CHAR CHAR löscht aktuelle Zeile\n"
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+"* lnext CHAR CHAR nimmt das nächste Zeichen uninterpretiert auf\n"
+" quit CHAR CHAR sendet ein Quit-Signal\n"
+"* rprnt CHAR CHAR gibt die aktuelle Zeile neu aus\n"
+" start CHAR CHAR startet die Ausgabe erneut nach einem Stopp\n"
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+" stop CHAR CHAR stoppt die Ausgabe\n"
+" susp CHAR CHAR sendet ein Terminalstoppsignal\n"
+"* swtch CHAR CHAR wechselt zu einer anderen Shell-Ebene\n"
+"* werase CHAR CHAR löscht das zuletzt eingegebene Wort\n"
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"\n"
+"Spezielle Einstellungen:\n"
+" N Eingabe- und Ausgabegeschwindigkeit auf N Baud setzen\n"
+"* cols N an den Kernel melden, dass dieses Terminal N Spalten hat\n"
+"* columns N dasselbe wie cols N\n"
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+" ispeed N Eingabegeschwindigkeit auf N setzen\n"
+"* line N \"line discipline\" N benutzen\n"
+" min N mit -icanon, N Zeichen Minimum für ein vollständiges Lesen "
+"setzen\n"
+" ospeed N Ausgabegeschwindigkeit auf N setzen\n"
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+"* rows N an den Kernel melden, dass dieses Terminal N Zeilen hat\n"
+"* size die Anzahl Zeilen und Spalten ausgeben\n"
+" speed die Terminal-Geschwindigkeit ausgeben\n"
+" time N mit -icanon, die Lesewartezeit auf N Zehntelsekunden setzen\n"
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"\n"
+"Einstellungen für die Flusskontrolle:\n"
+" [-]clocal Modemkontrollsignale ignorieren\n"
+" [-]cread Empfang von Eingaben erlauben\n"
+"* [-]crtscts RTS/CTS-Handshaking erlauben\n"
+" csN Zeichengröße auf N Bits setzen, N in [5..8]\n"
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+" [-]cstopb zwei Stopp-Bits pro Zeichen benutzen (eins mit „-“)\n"
+" [-]hup ein Hangup-Signal senden, wenn der letzte Prozess das Tty\n"
+" schließt\n"
+" [-]hupcl dasselbe wie [-]hup\n"
+" [-]parenb Parity-Bit in der Ausgabe erzeugen und Parity-Bit in der\n"
+" Eingabe erwarten\n"
+" [-]parodd ungerade Parity setzen (auch mit „-“)\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"\n"
+"Einstellungen für die Eingabe:\n"
+" [-]brkint ein Break verursacht ein Unterbrechungssignal\n"
+" [-]icrnl Wagenrücklauf (CR) in Zeilenvorschub wandeln\n"
+" [-]ignbrk Breaks ignorieren\n"
+" [-]igncr Wagenrücklauf ignorieren\n"
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+" [-]ignpar Parity-Fehler ignorieren\n"
+"* [-]imaxbel piepen und vollen Eingabepuffer leeren;\n"
+" nicht bei Eingabe eines Zeichens\n"
+" [-]inlcr Zeilenvorschub in Wagenrücklauf (CR) wandeln\n"
+" [-]inpck Eingabeprüfung der Parity erlauben\n"
+" [-]istrip höchstes Bit (das 8.) der Eingabezeichen löschen\n"
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr "* [-]iutf8 Eingabezeichen als UTF-8 annehmen\n"
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+"* [-]iuclc Groß- in Kleinbuchstaben wandeln\n"
+"* [-]ixany jedes Zeichen startet Ausgabe neu, nicht nur das "
+"Startzeichen\n"
+" [-]ixoff das Senden von Start-/Stoppzeichen erlauben\n"
+" [-]ixon XON/XOFF-Flusskontrolle erlauben\n"
+" [-]parmrk Parity-Fehler markieren (mit einer 255-0-Zeichenfolge)\n"
+" [-]tandem dasselbe wie [-]ixoff\n"
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"\n"
+"Einstellungen für die Ausgabe:\n"
+"* bsN Verzögerungsstil für Backspace, N in [0..1]\n"
+"* crN Verzögerungsstil für Wagenrücklauf (CR), N in [0..3]\n"
+"* ffN Verzögerungsstil für Seitenvorschub, N in [0..1]\n"
+"* nlN verzögerungsstil für Zeilenvorschub, N in [0..1]\n"
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+"* [-]ocrnl Wagenrücklauf (CR) in Zeilenvorschub wandeln\n"
+"* [-]ofdel Löschzeichen zum Auffüllen anstelle von Nullzeichen "
+"benutzen\n"
+"* [-]ofill Füllzeichen anstelle von Zeitverzögerungen benutzen\n"
+"* [-]olcuc Klein- in Großbuchstaben wandeln\n"
+"* [-]onlcr Zeilenvorschub in Wagenrücklauf (CR) wandeln\n"
+"* [-]onlret Zeilenvorschub bedingt Wagenrücklauf (CR)\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+"* [-]onocr kein Wagenrücklauf (CR) in der ersten Spalte\n"
+" [-]opost Ausgabe nachbehandeln\n"
+"* tabN horizontale Tabulatorverzögerung, N in [0..3]\n"
+"* tabs dasselbe wie tab0\n"
+"* -tabs dasselbe wie tab3\n"
+"* vtN vertikale Tabulatorverzögerung, N in [0..1]\n"
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"\n"
+"Lokale Einstellungen:\n"
+" [-]crterase Löschzeichen als Backspace-Leerzeichen-Backspace ausgeben\n"
+"* crtkill Zeile mit echoprt- und echoe-Einstellungen löschen\n"
+"* -crtkill Zeile mit echoctl- und echok-Einstellungen löschen\n"
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+"* [-]ctlecho Sonderzeichen in Hutnotation ausgeben („^c“)\n"
+" [-]echo Eingabezeichen ausgeben\n"
+"* [-]echoctl dasselbe wie [-]ctlecho\n"
+" [-]echoe dasselbe wie [-]crterase\n"
+" [-]echok Zeilenvorschub nach Killzeichen ausgeben\n"
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+"* [-]echoke dasselbe wie [-]crtkill\n"
+" [-]echonl Zeilenvorschub ausgeben, auch wenn keine Zeichen ausgegeben\n"
+" werden\n"
+"* [-]echoprt gelöschte Zeichen rückwärts ausgeben, zwischen „\\“ und „/“\n"
+" [-]icanon erase-, kill-, werase- und rprnt-Sonderzeichen erlauben\n"
+" [-]iexten Sonderzeichen erlauben, die nicht POSIX-konform sind\n"
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+" [-]isig interrupt-, quit- und-suspend Sonderzeichen erlauben\n"
+" [-]noflsh Ausgabeentleerung nach interrupt- und quit-Sonderzeichen\n"
+" verhindern\n"
+"* [-]prterase dasselbe wie [-]echoprt\n"
+"* [-]tostop Hintergrundjobs stoppen, die auf das Terminal schreiben\n"
+"* [-]xcase mit icanon, Großbuchstaben mit „\\“ maskieren\n"
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+"\n"
+"Kombinierte Einstellungen:\n"
+"* [-]LCASE dasselbe wie [-]lcase\n"
+" cbreak dasselbe wie -icanon\n"
+" -cbreak dasselbe wie icanon\n"
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+" cooked dasselbe wie brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon-, und eof- und eol-Zeichen mit den Vorgabewerten\n"
+" -cooked dasselbe wie raw\n"
+" crt dasselbe wie echoe echoctl echoke\n"
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+" dec dasselbe wie echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+"* [-]decctlq dasselbe wie [-]ixany\n"
+" ek Erase- und Killzeichen auf Vorgabewert setzen\n"
+" evenp dasselbe wie parenb -parodd cs7\n"
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+" -evenp dasselbe wie -parenb cs8\n"
+"* [-]lcase dasselbe wie xcase iuclc olcuc\n"
+" litout dasselbe wie -parenb -istrip -opost cs8\n"
+" -litout dasselbe wie parenb istrip opost cs7\n"
+" nl dasselbe wie -icrnl -onlcr\n"
+" -nl dasselbe wie icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+" oddp dasselbe wie parenb parodd cs7\n"
+" -oddp dasselbe wie -parenb cs8\n"
+" [-]parity dasselbe wie [-]evenp\n"
+" pass8 dasselbe wie -parenb -istrip cs8\n"
+" -pass8 dasselbe wie parenb istrip cs7\n"
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+" raw dasselbe wie -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw dasselbe wie cooked\n"
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+" sane dasselbe wie cread -ignbrk brkint -inlcr -igncr icrnl -"
+"iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" Zeichen auf ihren Vorgabewert\n"
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"Die Tty-Leitung manipulieren, die mit der Standardeingabe verbunden ist. "
+"Ohne\n"
+"Argumente, die Baud-Rate, Line-Disziplin und Abweichungen von „stty sane“\n"
+"ausgeben. In den Einstellungen wird CHAR wörtlich genommen oder kodiert wie "
+"in\n"
+"^c, 0x37, 0177 oder 127; spezielle Werte ^- oder undef werden benutzt, um\n"
+"Sonderzeichen zu unterbinden.\n"
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr "nur ein Gerät darf angegeben werden"
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+"Die Optionen für ausführliche und stty-lesbare Ausgabe\n"
+"können nicht gleichzeitig benutzt werden"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "Wenn ein Ausgabestil angegeben ist, kann kein Modus gesetzt werden"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: Zurücksetzen auf nicht-blockierenden Modus ist nicht möglich"
+
+#: src/stty.c:885 src/stty.c:995
+#, c-format
+msgid "invalid argument %s"
+msgstr "ungültiges Argument %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, c-format
+msgid "missing argument to %s"
+msgstr "fehlendes Argument für %s"
+
+#: src/stty.c:976
+#, c-format
+msgid "invalid line discipline %s"
+msgstr "ungültige Line-Disziplin %s"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: es ist nicht möglich, alle angeforderten Operationen durchzuführen"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "new_mode: Modus\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: Keine Information zur Größe dieses Gerätes"
+
+#: src/stty.c:1888
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "ungültiges Ganzzahlargument %s"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Kennwort:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: es ist nicht möglich, /dev/tty zu öffnen"
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "es ist nicht möglich, die Gruppen zu setzen"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "es ist nicht möglich, die Gruppen-ID zu setzen"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "es ist nicht möglich, die Benutzer-ID zu setzen"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Aufruf: %s [OPTION]... [-] [BENUTZER [ARG]...]\n"
+
+#: src/su.c:386
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Die effektive Benutzer- und Gruppen-ID in die des BENUTZERs ändern.\n"
+"\n"
+" -, -l, --login die Shell zur Loginshell machen\n"
+" -c, --commmand=BEFEHL einen einzelnen BEFEHL an die Shell "
+"weitergeben\n"
+" -f, --fast -f an die Shell weitergeben (für csh oder "
+"tcsh)\n"
+" -m, --preserve-environment Umgebungsvariablen nicht neu setzen\n"
+" -p dasselbe wie -m\n"
+" -s, --shell=SHELL SHELL benutzen, falls /etc/shells es erlaubt\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+"\n"
+"Ein schlichtes „-“ steht für -l. Falls kein BENUTZER angegeben ist, „root“\n"
+"annehmen.\n"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "Benutzer %s existiert nicht"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "ungültiges Kennwort"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "eingeschränkte Shell %s benutzen"
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "Warnung: es ist nicht möglich, in das Verzeichnis %s zu wechseln"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Prüfsumme und Blockanzahl für jede DATEI ausgeben.\n"
+"\n"
+" -r BSD-Summenalgorithmus benutzen, 1K Blöcke verwenden "
+"(Vorgabe)\n"
+" -s, --sysv System-V-Summenalgorithmus benutzen, 512-Byte-Blöcke\n"
+" verwenden\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+"Das Schreibens geänderter Blöcke auf die Platte erzwingen,\n"
+"den Super-Block aktualisieren.\n"
+"\n"
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "ignoriere alle Argumente"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+"\n"
+"BEMERKUNG: Ihre Shell hat möglicherweise eine eigene Version von %s,\n"
+"welche normalerweise die hier beschriebene Version ersetzt. Bitte greifen "
+"Sie\n"
+"auf die Dokumentation der Shell zurück, um die dort unterstützten Optionen\n"
+"in Erfahrung zu bringen.\n"
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help diese Hilfe anzeigen und beenden\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version Versionsinformation anzeigen und beenden\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Jede DATEI nach Standardausgabe schreiben, die letzte Zeile zuerst.\n"
+"Wurde keine DATEI angegeben oder ist DATEI „-“, Standardeingabe lesen.\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before Trennzeichen vorher statt hinterher einfügen\n"
+" -r, --regex das Trennzeichen als regulären Ausdruck\n"
+" interpretieren\n"
+" -s, --separator=ZKETTE ZKETTE als Trenzeichen statt Zeilenumbruch "
+"benutzen\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, c-format
+msgid "%s: seek failed"
+msgstr "%s: Seek fehlgeschlagen"
+
+#: src/tac.c:265
+#, c-format
+msgid "record too large"
+msgstr "Datensatz zu groß"
+
+#: src/tac.c:459
+#, c-format
+msgid "cannot create temporary file %s"
+msgstr "temporäre Datei %s konnte nicht angelegt werden"
+
+#: src/tac.c:466
+#, c-format
+msgid "cannot open %s for writing"
+msgstr "%s kann nicht zum Schreiben geöffnet werden"
+
+#: src/tac.c:487 src/tac.c:494
+#, c-format
+msgid "%s: write error"
+msgstr "%s: Schreibfehler"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "Trennzeichen darf nicht leer sein"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Die letzten %d Zeilen jeder DATEI auf Standardausgabe ausgeben. Wurden\n"
+"mehrere DATEIen angegeben, wird für jede zunächst der Dateinamen ausgeben.\n"
+"Ohne DATEI, oder wenn DATEI „-“ ist, von der Standardeingabe lesen.\n"
+"\n"
+
+#: src/tail.c:229
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry weiterhin versuchen, eine Datei zu öffnen, auch "
+"wenn\n"
+" sie beim Start nicht verfügbar ist oder später\n"
+" nicht mehr verfügbar wird; nützlich, wenn mit "
+"Namen\n"
+" verfolgt wird, also mit --follow=Name\n"
+" -c, --bytes=N die letzten N Bytes ausgeben; alternativ +N "
+"benutzen,\n"
+" um Bytes beginnend mit dem Nten jeder Datei "
+"auszugeben\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={name|descriptor}]\n"
+" angefügte Daten ausgeben, während die Datei "
+"wächst;\n"
+" „-f“, „--follow“ und „--follow=descriptor“ "
+"sind\n"
+" äquivalent\n"
+" -F gleichbedeutend mit „--follow=name --retry“\n"
+
+#: src/tail.c:244
+#, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=N die letzten N Zeilen ausgeben, statt der letzen %"
+"d;\n"
+" oder +N um Zeilen beginnend mit der Nten "
+"auszugeben\n"
+" --max-unchanged-stats=N\n"
+" mit --follow=name die DATEI erneut öffnen, wenn "
+"sie\n"
+" nach N Iterationen (Vorgabe: %d) unverändert "
+"ist,\n"
+" um zu sehen, ob sie gelöscht oder umbenannt "
+"wurde\n"
+" (das ist normalerweise der Fall bei rotierten\n"
+" Logdateien)\n"
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID mit -f: Programm beenden, wenn PID beendet wird\n"
+" -q, --quiet, --silent nie Kopfzeilen mit Dateinamen ausgeben\n"
+" -s, --sleep-interval=S mit -f: Pause von S (oder 1) Sek. zwischen "
+"Versuchen\n"
+" -v, --verbose immer Kopfzeilen mit Dateinamen ausgeben\n"
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"Wenn das erste Zeichen von N (der Anzahl der Bytes oder Zeilen) ein „+“ "
+"ist,\n"
+"die Ausgabe mit dem Nten Byte bzw. der Nten Zeile vom Anfang jeder Datei\n"
+"beginnen, anderenfalls die letzten N Bytes bzw. Zeilen ausgeben. N kann "
+"einen\n"
+"Vervielfachungssuffix haben: b 512, k 1024, m 1024×1024.\n"
+"\n"
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"Mit --follow (-f) verfolgt tail den Datei-Deskriptor. Dies bedeutet, dass "
+"auch\n"
+"im Falle einer Umbenennung tail das Ende verfolgen wird. "
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"Dieses Verhalten ist nicht erwünscht, wenn man wirklich den derzeitigen "
+"Namen\n"
+"der Datei verfolgen will und nicht den Datei-Deskriptor (z. B. bei Rotation "
+"der\n"
+"Protokoll-Dateien, Logs). Benutzen Sie in diesem Fall --follow=name. Dies\n"
+"bewirkt, dass tail die Datei immer wieder schließt und öffnet, um zu sehen, "
+"ob\n"
+"die Datei gelöscht und von einem anderen Programm neu angelegt wurde.\n"
+"\n"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "%s wird geschlossen (df=%d)"
+
+#: src/tail.c:411
+#, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: es ist nicht möglich, zum relativen Offset %s zu springen"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr ""
+"%s: es ist nicht möglich, vom Ende her zum relativen Offset %s zu springen"
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr "auf %s kann nicht mehr zugegriffen werden"
+
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr "%s wurde ersetzt durch eine ungeeigneten Datei; kein weiterer Versuch"
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr "auf „%s“ kann jetzt zugegriffen werden"
+
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "%s ist aufgetaucht; folge Ende der neuen Datei"
+
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "%s wurde ersetzt; folge Ende der neuen Datei"
+
+#: src/tail.c:1025
+#, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: Ändern desf nicht-blockierenden Modus ist nicht möglich"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: Datei abgeschnitten"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "Keine Dateien mehr übrig"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+"%s: es ist nicht möglich, bis zum Ende dieses Dateityps vorgehen;\n"
+" kein weiterer Versuch für diesen Namen"
+
+#: src/tail.c:1439
+#, c-format
+msgid "number in %s is too large"
+msgstr "Zahl in %s ist zu groß"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr ""
+"%s: ungültige maximale Anzahl von ungeänderten „stats“ zwischen Öffnungen"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: ungültige PID"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: ungültige Anzahl von Sekunden"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr "Option in ungültigen Kontext benutzt – %c"
+
+#: src/tail.c:1566
+#, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr ""
+"Warnung: --retry ist hauptsächlich sinnvoll, wenn dieser Option ein Name "
+"folgt"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr "Warnung: PID ignoriert; --pid=PID ist nur sinnvoll, wenn es folgt"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "Warnung: --pid=PID wird auf diesem System nicht unterstützt"
+
+#: src/tail.c:1667
+#, c-format
+msgid "cannot follow %s by name"
+msgstr "kann %s nicht nach Namen verfolgen"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr "Warnung: die Standardausgabe stetig zu verfolgen ist nicht wirksam"
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Die Standardeingabe in jede angegebene DATEI und auf die Standardausgabe\n"
+"kopieren.\n"
+"\n"
+" -a, --append an existierende DATEIen anhängen, nichts\n"
+" überschreiben\n"
+" -i, --ignore-interrupts Unterbrechnungssignale (Interrupts) ignorieren\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Wenn DATEI „-“ ist, wieder in Standardausgabe kopieren.\n"
+
+#: src/test.c:125
+#, c-format
+msgid "missing argument after %s"
+msgstr "fehlendes Argument hinter „%s“"
+
+#: src/test.c:161
+#, c-format
+msgid "invalid integer %s"
+msgstr "ungültige Zahl %s"
+
+#: src/test.c:242
+msgid "')' expected"
+msgstr "„)“ erwartet"
+
+#: src/test.c:245
+#, c-format
+msgid "')' expected, found %s"
+msgstr "„)“ erwartet, %s gefunden"
+
+#: src/test.c:261 src/test.c:606
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: Operator mit einem Argument erwartet"
+
+#: src/test.c:330
+msgid "-nt does not accept -l"
+msgstr "-nt erlaubt kein -l"
+
+#: src/test.c:343
+msgid "-ef does not accept -l"
+msgstr "-ef erlaubt kein -l"
+
+#: src/test.c:359
+msgid "-ot does not accept -l"
+msgstr "-ot erlaubt kein -l"
+
+#: src/test.c:368
+msgid "unknown binary operator"
+msgstr "unbekannter binärer Operator"
+
+#: src/test.c:634
+#, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: binärer Operator erwartet"
+
+#: src/test.c:694
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Aufruf: test AUSDRUCK\n"
+" oder: test\n"
+" oder: [ AUSDRUCK ]\n"
+" oder: [ ]\n"
+" oder: [ OPTION\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"Programm mit Status gemäß AUSDRUCK beenden.\n"
+"\n"
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"\n"
+"Ein weggelassener AUSDRUCK ergibt falsch. Ansonsten ist\n"
+"AUSDRUCK wahr oder falsch und setzt den Exit-Status. Er kann sein:\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+"\n"
+" ( AUSDRUCK ) AUSDRUCK ist wahr\n"
+" ! AUSDRUCK AUSDRUCK ist falsch\n"
+" AUSDRUCK1 -a AUSDRUCK2 sowohl AUSDRUCK1 als auch AUSDRUCK2 ist wahr\n"
+" AUSDRUCK1 -o AUSDRUCK2 AUSDRUCK1 oder AUSDRUCK2 ist wahr\n"
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"\n"
+" -n ZKETTE die Länge von ZKETTE ist ungleich Null\n"
+" ZKETTE äquivalent zu -n ZKETTE\n"
+" -z ZKETTE die Länge von ZKETTE ist Null\n"
+" ZKETTE1 = ZKETTE2 die ZKETTEn sind gleich\n"
+" ZKETTE1 != ZKETTE2 die ZKETTEn sind nicht gleich\n"
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" GANZZAHL1 -eq GANZZAHL2 GANZZAHL1 ist gleich GANZZAHL2\n"
+" GANZZAHL1 -ge GANZZAHL2 GANZZAHL1 ist größer als oder gleich GANZZAHL2\n"
+" GANZZAHL1 -gt GANZZAHL2 GANZZAHL1 ist größer als GANZZAHL2\n"
+" GANZZAHL1 -le GANZZAHL2 GANZZAHL1 ist kleiner als oder gleich GANZZAHL2\n"
+" GANZZAHL1 -lt GANZZAHL2 GANZZAHL1 ist kleiner als GANZZAHL2\n"
+" GANZZAHL1 -ne GANZZAHL2 GANZZAHL1 ist nicht gleich GANZZAHL2\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+"\n"
+" DATEI1 -ef DATEI2 DATEI1 und DATEI2 haben dieselbe Device- und Inode-"
+"Nummer\n"
+" DATEI1 -nt DATEI2 DATEI1 ist neuer (Änderungsdatum) als DATEI2\n"
+" DATEI1 -ot DATEI2 DATEI1 ist älter als DATEI2\n"
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+"\n"
+" -b DATEI DATEI existiert und ist ein „block special“\n"
+" -c DATEI DATEI existiert und ist ein „character special“\n"
+" -d DATEI DATEI existiert und ist ein Verzeichnis\n"
+" -e DATEI DATEI existiert\n"
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+" -f DATEI DATEI existiert und ist eine reguläre Datei\n"
+" -g DATEI DATEI existiert und ist set-group-ID\n"
+" -G DATEI DATEI existiert wird von der effektiven Gruppen-ID besessen\n"
+" -h DATEI DATEI existiert und ist ein symbolischer Link (dasselbe wie -"
+"L)\n"
+" -k DATEI DATEI existiert und hat das Sticky-Bit gesetzt\n"
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+" -L DATEI DATEI existiert und ist ein symbolischer Link (wie -h)\n"
+" -O DATEI DATEI existiert und wird von der effektiver Benutzer-ID "
+"besessen\n"
+" -p DATEI DATEI existiert und ist Pipe mit Namen\n"
+" -r DATEI DATEI existiert und ist lesbar\n"
+" -s DATEI DATEI existiert und ist größer als Null\n"
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+" -S DATEI DATEI existiert und ist ein Socket\n"
+" -t FD DATEI-Deskriptor FD ist auf ein Terminal geöffnet\n"
+" -u DATEI DATEI existiert und das Set-User-ID-Bit der DATEI ist "
+"gesetzt\n"
+" -w DATEI DATEI existiert und ist schreibbar\n"
+" -x DATEI DATEI existiert und ist ausführbar\n"
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"Außer -h und -L dereferenzieren alle DATEI-Tests symbolische Verknüpfungen.\n"
+"Bedenken Sie, dass runde Klammern für Shells maskiert werden müssen (z. B. "
+"mit\n"
+"einem Rückschrägstrich).\n"
+"GANZZAHL kann auch -l ZKETTE sein, was die Länge der ZKETTE ist.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr "test und/oder ["
+
+#: src/test.c:831
+msgid "missing `]'"
+msgstr "„]“ fehlt"
+
+#: src/test.c:846
+#, c-format
+msgid "extra argument %s"
+msgstr "zusätzliches Argument %s"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "Ungültiges Datumsformat %s"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "Erzeugen von %s"
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr "kann %s nicht berühren"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "Setzen der Zeiten für %s"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+"Die Zugriffs- und Modifikationszeiten jeder DATEI auf die\n"
+"momentane Zeit aktualisieren.\n"
+"\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a Nur die Zugriffszeit ändern.\n"
+" -c, --no-create Keine Dateien erzeugen.\n"
+" -d, --date=DATUM DATUM lesen und statt der momentanen Zeit "
+"verwenden.\n"
+" -f (ignoriert)\n"
+" -m Nur Modifikationszeit ändern.\n"
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --reference=DATEI Die Zeiten dieser Datei anstatt der momentanen "
+"Zeit\n"
+" verwenden.\n"
+" -t MARKE [[HH]JJ]MMTTSSmm[.ss] statt momentaner Zeit "
+"verwenden.\n"
+" --time=WORT Die Zeit, die von WORT angegeben wird, setzen:\n"
+" access, atime oder use: wie -a; mtime, modify: "
+"wie -m\n"
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"Beachten Sie, dass -d und -t verschiedene Zeit-Datum-Formate akzeptieren.\n"
+"\n"
+"Wenn DATEI - ist, wird auf die Standardausgabe zugegriffen.\n"
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "Angabe von mehr als einer Zeitquelle nicht möglich"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+"Warnung: „touch %s“ ist überholt; benutzen Sie „touch -t %04ld%02d%02d%02d%"
+"02d.%02d“"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Aufruf: %s [OPTION]... MENGE1 [MENGE2]\n"
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Zeichen von Standardeingabe wandeln, verdichten und/oder löschen; auf\n"
+"Standardausgabe schreiben.\n"
+"\n"
+" -c, -C, --complement erstes Komplement MENGE1\n"
+" -d, --delete Zeichen der MENGE1 löschen, nicht wandeln\n"
+" -s, --squeeze-repeats jede Eingabefolge eines wiederholten Zeichens, "
+"das\n"
+" in MENGE1 enthalten ist, durch ein einzelnes\n"
+" Vorkommens dieses Zeichens ersetzen\n"
+" -t, --truncate-set1 zuerst MENGE1 auf die Länge von MENGE2 "
+"abschneiden\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"MENGEn werden angegeben als Zeichenketten. Die meisten Zeichen stehen für "
+"sich\n"
+"selbst. Interpretierte Folgen sind:\n"
+"\n"
+" \\NNN Zeichen mit Oktalwert NNN (1 bis 3 oktale Ziffern)\n"
+" \\\\ Rückschrägstrich (\\)\n"
+" \\a hörbarer Ton (Piep)\n"
+" \\b Zeichen zurück\n"
+" \\f Seitenvorschub\n"
+" \\n Zeilenvorschub\n"
+" \\r Wagenrücklauf\n"
+" \\t horizontaler Tabulator\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v vertikaler Tabulator\n"
+" ZEICH1-ZEICH2 alle Zeichen von ZEICH1 bis ZEICH2 aufsteigend\n"
+" [ZEICH*] in MENGE2, Kopien von ZEICH bis zur Länge von MENGE1\n"
+" [ZEICH*ANZ] ANZ Kopien von ZEICHEN, ANZ ist oktal, wenn es mit 0 "
+"beginnt\n"
+" [:alnum:] alle Buchstaben und Ziffern\n"
+" [:alpha:] alle Buchstaben\n"
+" [:blank:] alle horizontalen Leerzeichen/Tabulatoren\n"
+" [:cntrl:] alle Kontrollzeichen\n"
+" [:digit:] alle Ziffern\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] alle druckbaren Zeichen, ohne Leerzeichen\n"
+" [:lower:] alle Kleinbuchstaben\n"
+" [:print:] alle druckbaren Zeichen, einschl. Leerzeichen\n"
+" [:punct:] alle Satzzeichen\n"
+" [:space:] alle horizontalen oder vertikalen Leerzeichen/Tabulatoren\n"
+" [:upper:] alle Großbuchstaben\n"
+" [:xdigit:] alle hexadezimalen Ziffern\n"
+" [=ZEICHEN=] alle Zeichen äquivalent zu ZEICHEN\n"
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"Wandlung wird durchgeführt, wenn nicht -d spezifiziert ist und sowohl "
+"MENGE1\n"
+"als auch MENGE2 angegeben sind. -t darf nur bei Wandlung benutzt werden.\n"
+"MENGE2 wird, wenn nötig, durch Wiederholung des letzten Zeichens auf die "
+"Länge\n"
+"von MENGE1 vergrößert. "
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"Zusätzliche Zeichen in MENGE2 werden ignoriert. Nur\n"
+"[:lower:] und [:upper:] werden mit Sicherheit in aufsteigender Reihenfolge\n"
+"expandiert. In MENGE2 dürfen sie zum Wandeln nur in Paaren benutzt werden, "
+"um\n"
+"eine Groß-/Kleinschreibung anzuzeigen. "
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"-s benutzt MENGE1, wenn nicht\n"
+"umgewandelt oder gelöscht wird; anderenfalls wird MENGE2 zum Verdichten "
+"benutzt\n"
+"und erscheint nach Wandlung und Löschung.\n"
+
+#: src/tr.c:519
+#, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"Warnung: die mehrdeutige Oktal-Escape \\%c%c%c wird als\n"
+"\t2-Byte-Folge \\0%c%c, %c interpretiert"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr ""
+"Die Endpunkte des Bereiches „%s-%s“ sind in umgekehrter Sortierreihenfolge"
+
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "Ungültige Wiederholungsangabe %s in [c*n]-Konstrukt"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "Fehlender Zeichenklassename „[::]“"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "Fehlendes Äquivalenzklassenzeichen „[==]“"
+
+#: src/tr.c:937
+#, c-format
+msgid "invalid character class %s"
+msgstr "Ungültige Zeichenklasse %s"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: Äquivalenzklassenoperand muss ein einzelnes Zeichen sein"
+
+#: src/tr.c:1275
+#, c-format
+msgid "too many characters in set"
+msgstr "zu viele Buchstaben in Menge"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "Die [c*]-Wiederholungsangabe darf nicht in Kette1 erscheinen"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "Nur eine [c*] Wiederholungsangabe darf in Kette2 auftreten"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "[=c=] Ausdrücke dürfen beim Wandeln nicht in Kette2 auftauchen"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "Wenn Menge1 nicht abgeschnitten wird, darf Kette2 nicht leer sein"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"Beim Wandeln mit \"complemented character classes\" muss\n"
+"Kette2 alle Zeichen im Bereich auf eines abbilden"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"Beim Wandeln dürfen in Kette2 nur die Zeichenklassen „upper“ und „lower“\n"
+"verwendet werden"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "Das [c*] Konstrukt darf in Kette2 nur bei Wandlungen auftauchen"
+
+#: src/tr.c:1731
+msgid "Two strings must be given when translating."
+msgstr "Beim Wandeln müssen zwei Zeichenketten angegeben werden."
+
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"Beim Löschen ohne Verdichten darf nur eine Zeichenkette angegeben werden."
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "fehlerhaft positioniertes [:upper:]- und/oder [:lower:]-Konstrukt"
+
+#: src/true.c:42
+#, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Aufruf: %s [ignorierete Kommandozeilenargumente]\n"
+" oder: %s OPTION\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr "Mit einem Status beenden, der Erfolg signalisiert."
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Aufruf: %s [OPTION] [DATEI]\n"
+"Vollkommen geordnete Liste in Ãœbereinstimmung mit der partiellen Ordnung in\n"
+"DATEI schreiben.\n"
+"Ohne DATEI, oder falls DATEI - ist, Standardeingabe lesen.\n"
+"\n"
+
+#: src/tsort.c:474
+#, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: Eingabe enthält eine ungerade Anzahl Token"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: Eingabe enthält eine Schleife:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Aufruf: %s [OPTION]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Den Dateinamen des Terminals ausgeben, das mit der Standardeingabe "
+"verbunden\n"
+"ist.\n"
+"\n"
+" -s, --silent, --quiet nichts ausgeben, nur Exit-Status setzen\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "kein Ausgabegerät"
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Bestimmte Systeminformationen ausgeben. Ohne OPTION dasselbe wie -s.\n"
+"\n"
+" -a, --all alle Informationen ausgeben, in der folgenden\n"
+" Reihenfolge (außer -p und -i wenn nicht "
+"bekannt):\n"
+" -s, --kernel-name Namen des Kernels ausgeben\n"
+" -n, --nodename Netzwerknamen der Maschine ausgeben\n"
+" -r, --kernel-release Release-Nummer des Kernels ausgeben\n"
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v, --kernel-version Version des Kernels ausgeben\n"
+" -m, --machine Maschinentyp (Hardware) ausgeben\n"
+" -p, --processor Typ des Prozessors ausgeben (oder „unknown“)\n"
+" -i, --hardware-platform Hardwareplattform ausgeben (oder „unknown“)\n"
+" -o, --operating-system Namen des Betriebssystems ausgeben\n"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "es ist nicht möglich, den Namen des Betriebssystems zu ermitteln"
+
+#: src/unexpand.c:125
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Alle Leerzeichen in jeder DATEI in Tabulatoren wandeln, auf Standardausgabe\n"
+"schreiben. Ohne DATEI, oder wenn DATEI „-“ ist, Standardeingabe lesen.\n"
+"\n"
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all alle Leerzeichen wandeln, statt nur der führenden\n"
+" --first-only nur führendene Leerzeichen konvertieren (überschreibt -"
+"a)\n"
+" -t, --tabs=N Tabulatoren alle ANZAHL Zeichen annehmen, statt 8\n"
+" -t, --tabs=LISTE kommagetrennte Liste von Tabulatorpositionen verwenden\n"
+" (-t und --tabs implizieren -a)\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr "Tabulatoren sind zu weit auseinander"
+
+#: src/unexpand.c:512
+#, c-format
+msgid "tab stop value is too large"
+msgstr "Tabulatorstopp ist zu groß"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Aufruf: %s [OPTION]... [EINGABE [AUSGABE]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"Alle hintereinanderstehenden identischen Zeilen von EINGABE (oder\n"
+"Standardeingabe) bis auf eine löschen, und auf AUSGABE (oder "
+"Standardausgabe)\n"
+"schreiben.\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count den Zeilen die Anzahl des Vorkommens voranstellen\n"
+" -d, --repeated nur die doppelten Zeilen ausgeben\n"
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated[=TRENN-METHODE] alle doppelten Zeilen ausgeben\n"
+" TRENN-METHODE={none(Vorgabe),prepend,separate)};\n"
+" das Abtrennen geschieht durch Leerzeilen\n"
+" -f, --skip-fields=N nicht die ersten N Felder vergleichen\n"
+" -i, --ignore-case Abweichung in Groß-/Kleinschreibung ignorieren\n"
+" -s, --skip-chars=N nicht die ersten N Zeichen vergleichen\n"
+" -u, --unique nur nur einmal vorkommende Zeilen ausgeben\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+" -w, --check-chars=N nicht mehr als N Zeichen pro Zeile vergleichen\n"
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"Ein Feld ist eine Folge von Leerzeichen/Tabs gefolgt von anderen Zeichen.\n"
+"Felder werden vor Zeichen übersprungen.\n"
+
+#: src/uniq.c:350
+#, c-format
+msgid "too many repeated lines"
+msgstr "zu viele wiederholte Zeilen"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "Ungültige Anzahl an zu überspringenden Feldern"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "Ungültige Anzahl an zu überspringenden Bytes"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "Ungültige Anzahl an zu vergleichenden Bytes"
+
+# CHECKIT
+# What's meant here? -d vs. -D?
+# 2001-08-11 16:40:37 CEST -ke-
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+"Alle doppelten Zeilen auszugeben und die Zählung zu wiederholen, ist nicht\n"
+"sinnvoll"
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Aufruf: %s DATEI\n"
+" oder: %s OPTION\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"Die Funktion unlink aufrufen, um angegebene DATEI zu löschen.\n"
+"\n"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "Entfernen (unlink) von %s nicht möglich"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "Es ist nicht möglich, die Startzeit des Rechners zu ermitteln."
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s an "
+
+# CHECKIT
+# /* FIXME: use strftime, not am, pm. Uli reports that
+# the german translation is meaningless. */
+#: src/uptime.c:135
+msgid "am"
+msgstr "am"
+
+# CHECKIT
+# /* FIXME: use strftime, not am, pm. Uli reports that
+# the german translation is meaningless. */
+#: src/uptime.c:135
+msgid "pm"
+msgstr "pm"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr " ??:???? an "
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr "???? Tage ??:??, "
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%ld Tag"
+msgstr[1] "%ld Tage"
+
+#: src/uptime.c:147
+#, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%lu Benutzer"
+msgstr[1] "%lu Benutzer"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", Durchschnittslast: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Aufruf: %s [OPTION]... [ DATEI ]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Die aktuelle Zeit, die Dauer, wielange das System läuft, die Anzahl der\n"
+"Benutzer und die durchschnittliche Anzahl der laufenden Jobs in den letzten "
+"1,\n"
+"5 und 15 Minuten ausgeben.\n"
+"Falls DATEI nicht angegeben ist, %s benutzen.\n"
+"%s als DATEI ist üblich.\n"
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Ausgeben, wer augenblicklich gemäß DATEI angemeldet ist.\n"
+"Wenn keine DATEI angegeben ist, %s benutzen.\n"
+"%s ist als DATEI üblich.\n"
+"\n"
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Zeilen-, Wort- und Byteanzahl für jede DATEI ausgeben und eine Zeile mit "
+"der\n"
+"Gesamtsumme, wenn mehr als eine DATEI angegeben wurde. Ohne DATEI, oder "
+"wenn\n"
+"DATEI - ist, Standardeingabe lesen.\n"
+"\n"
+" -c, --bytes Byteanzahl ausgeben\n"
+" -m, --chars Zeichenanzahl ausgeben\n"
+" -l, --lines Zeilenanzahl ausgeben\n"
+
+#: src/wc.c:121
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" --files0-from=D Eingabe aus den Dateien lesen, die mit NULL "
+"terminiert\n"
+" in der Datei D stehen\n"
+" -L, --max-line-length die Länge der längsten Zeile ausgeben\n"
+" -w, --words Wortanzahl ausgeben\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+"beim Lesen von Dateinamen aus stdin ist der Dateinmane %s nicht erlaubt"
+
+#: src/who.c:212
+msgid " old "
+msgstr " alt "
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "term="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "exit="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "Stellen der Uhr"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "Runlevel"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "last="
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"# Benutzer=%lu\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "NAME"
+
+# 8 chars are okay
+#: src/who.c:551
+msgid "LINE"
+msgstr "LEITUNG"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "ZEIT"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr "UNTÄTIG"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "KOMMENTAR"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "EXIT"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Aufruf: %s [OPTION]... [ DATEI | ARG1 ARG2 ]\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" -a, --all dasselbe wie -b -d --login -p -r -t -T -u\n"
+" -b, --boot Zeit des letzten Rechnerstarts („system boot“)\n"
+" -d, --dead tote Prozesse ausgeben\n"
+" -H, --heading Kopfzeile mit Spaltenbezeichnungen ausgeben\n"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr " -l, --login Login-Prozesse des Systems ausgeben\n"
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+" --lookup versuchen, den Rechnernamen mittels DNS zu "
+"kanonifizieren\n"
+" -m nur Rechnernamen und Benutzer, die die Standardeingabe\n"
+" verwenden\n"
+" -p, --process aktive Prozesse ausgeben, die von init aufgerufen "
+"wurden\n"
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+" -q, --count alle Loginnamen und Anzahl der angemeldeten Benutzer\n"
+" -r, --runlevel aktuellen Runlevel ausgeben\n"
+" -s, --short nur Namen, Leitung und Zeit ausgeben (Vorgabe)\n"
+" -t, --time das letztmalige Stellen der Systemuhr ausgeben\n"
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+" -T, -w, --mesg den Message-Status des Benutzers als +, - or ? "
+"hinzufügen\n"
+" -u, --users angemeldete Benutzer anzeigen\n"
+" --message dasselbe wie -T\n"
+" --writable dasselbe wie -T\n"
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"Wenn keine DATEI angegeben ist, „%s“ nehmen. „%s“ ist als\n"
+"DATEI üblich. Wenn ARG1 ARG2 angegeben sind, wird -m angenommen:\n"
+"gebräuchlich sind „bin ich“ oder „am i“.\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+"Warnung: -i wird in einem kommenden Release aufgegeben werden; bitte "
+"verwenden\n"
+"Sie stattdessen -u."
+
+#: src/whoami.c:51
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Den Benutzernamen ausgeben, der zu der aktuellen effektiven Benutzer-ID\n"
+"gehört. Dasselbe wie „id -un“.\n"
+"\n"
+
+#: src/whoami.c:95
+#, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: Es ist kein Name zur Nutzer-ID %lu zu finden\n"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Aufruf: %s [ZEICHENKETTE...]\n"
+" oder: %s OPTION\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"Eine Zeile mit allen angegebenen ZEICHENKETTEn oder „y“ wiederholt "
+"ausgeben.\n"
+"\n"
+
+#~ msgid "strip failed"
+#~ msgstr "strip fehlgeschlagen"
+
+#~ msgid "-R -h requires -P"
+#~ msgstr "-R -h erfordert -P"
+
+#~ msgid "value %s is so large that it is not representable"
+#~ msgstr "Wert %s ist so groß, dass er nicht dargestellt werden kann"
+
+#~ msgid "%s: count `%.*s' too large"
+#~ msgstr "%s: Anzahl „%.*s“ zu groß"
+
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr ""
+#~ "Symbolische Verknüpfungen werden von diesem System nicht unterstützt"
+
+#~ msgid "fifo files not supported"
+#~ msgstr "FIFO-Dateien werden nicht unterstützt"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "Weder „.“ noch „..“ kann gelöscht werden"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "kann Besitzer und/oder Gruppe von %s nicht ändern."
+
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "kann nicht in Verzeichnis %s wechseln"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "kann die Login-Gruppe einer numerischen UID nicht ermitteln"
+
+#~ msgid ""
+#~ " --no-preserve-root do not treat `/' specially (the default)\n"
+#~ " --preserve-root fail to operate recursively on `/'\n"
+#~ msgstr ""
+#~ " --no-preserve-root „/“ nicht besonders behandeln (Voreinstellung)\n"
+#~ " --preserve-root nicht rekursiv auf „/“ arbeiten\n"
+
+#~ msgid ""
+#~ " -e enable interpretation of backslash escapes\n"
+#~ " -E disable interpretation of backslash escapes (default)\n"
+#~ msgstr ""
+#~ " -e Interpretation von Rückschrägstrich-Sequenzen "
+#~ "anschalten\n"
+#~ " -E Interpretation von Rückschrägstrich-Sequenzen "
+#~ "unterdrücken (Voreinst.)\n"
+
+#~ msgid ""
+#~ "warning: unportable BRE: %s: using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr ""
+#~ "Warnung: nicht portable BRE: %s: „^“ als erstes Zeichen eines einfachen\n"
+#~ "regulären Ausdrucks ist nicht portabel; es wird ignoriert."
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "Unbekannte Option „-%c“"
+
+#~ msgid "cannot return to working directory"
+#~ msgstr "kann nicht zum Arbeitsverzeichnis zurückkehren"
+
+#~ msgid "cannot return to current directory"
+#~ msgstr "kann nicht zum aktuellen Verzeichnis zurückkehren"
+
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "Erzeugen der symbolischen Verknüpfung %s zu %s"
+
+#~ msgid "create hard link %s to %s"
+#~ msgstr "Erzeugen der harten Verknüpfung %s zu %s"
+
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "Setzen der Zugriffsrechte für Verzeichnis %s nicht möglich"
+
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "Setzen der Zugriffsrechte für FIFO %s nicht möglich"
+
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "Setzen der Zugriffsrechte für %s nicht möglich"
+
+#~ msgid ""
+#~ "This program is free software; you can redistribute it and/or modify\n"
+#~ "it under the terms of the GNU General Public License as published by\n"
+#~ "the Free Software Foundation; either version 2, or (at your option)\n"
+#~ "any later version.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Dieses Programm ist freie Software; Sie dürfen es weitergeben und/oder\n"
+#~ "verändern gemäß den Bestimmungen der GNU General Public License, "
+#~ "veröffentlicht\n"
+#~ "von der Free Software Foundation; entweder in Version 2, oder (nach "
+#~ "Wahl)\n"
+#~ "einer späteren Version.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "This program is distributed in the hope that it will be useful,\n"
+#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+#~ "GNU General Public License for more details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Dieses Programm wird verteilt in der Hoffnung, das es nützlich sein\n"
+#~ "wird, aber OHNE JEGLICHE GARANTIE; sogar ohne jegliche implizite\n"
+#~ "Garantie der VERKAUFBARKEIT oder der TAUGLICHKEIT FÃœR EINEN\n"
+#~ "BESTIMMTEN ZWECK. Siehe auch die GNU General Public License für\n"
+#~ "weitere Details.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
+#~ msgstr ""
+#~ "Sie sollten eine Kopie der GNU General Public License mit diesem "
+#~ "Programm\n"
+#~ "erhalten haben; falls nicht, schreiben Sie bitte an die\n"
+#~ "Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor\n"
+#~ "Boston, MA 02110-1301\n"
+#~ "USA\n"
+
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "kann nicht von Verzeichnis %s nach .. wechseln"
+
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "lstat von „.“ in %s nicht möglich"
+
+#~ msgid "cannot lstat %s"
+#~ msgstr "Aufruf von lstat für %s nicht möglich"
+
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "kann nicht aus Verzeichnis %s in %s wechseln"
+
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only; this works only if your "
+#~ "system\n"
+#~ " supports `unlink' for nonempty directories)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ msgstr ""
+#~ "Entfernen (unlink) der DATEI(en).\n"
+#~ "\n"
+#~ " -d, --directory DATEI entfernen, auch ein nicht-leeres "
+#~ "Verzeichnis\n"
+#~ " (nur für Super-User; geht nur, wenn das "
+#~ "System\n"
+#~ " „unlink“ für nicht-leere Verzeichnisse "
+#~ "unterstützt)\n"
+#~ " -f, --force nicht vorhandene Dateien ignorieren, keine "
+#~ "Nachfragen\n"
+#~ " -i, --interactive vor jeder Entfernung nachfragen\n"
+
+#~ msgid "Exit with a status code indicating failure."
+#~ msgstr "Mit einem Status beenden, der Misserfolg signalisiert."
+
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "Überschreiben des Verzeichnisses %s nicht möglich"
+
+#~ msgid ""
+#~ "Display file or file system status.\n"
+#~ "\n"
+#~ " -f, --file-system display file system status instead of file "
+#~ "status\n"
+#~ " -c --format=FORMAT use the specified FORMAT instead of the default\n"
+#~ " -L, --dereference follow links\n"
+#~ " -t, --terse print the information in terse form\n"
+#~ msgstr ""
+#~ "Datei- oder Dateisystem-Status anzeigen.\n"
+#~ "\n"
+#~ " -f, --filesystem Dateisystem-Status anstelle von Datei-Status "
+#~ "anzeigen\n"
+#~ " -c --format=FORMAT FORMAT anstelle des Standards benutzen\n"
+#~ " -L, --dereference Verknüpfungen folgen\n"
+#~ " -t, --terse Informationen in knapper Form ausgeben\n"
+
+#~ msgid "openat: unable to restore working directory"
+#~ msgstr ""
+#~ "openat: konnte nicht in ursprüngliches Arbeitsverzeichnis zurückkehren"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Dies ist freie Software; die Kopierbedingungen stehen in den Quelltexten. "
+#~ "Es\n"
+#~ "gibt keine Garantie; auch nicht für VERKAUFBARKEIT oder FÜR SPEZIELLE "
+#~ "ZWECKE.\n"
+
+#~ msgid "closing standard output"
+#~ msgstr "schließe Standardausgabe"
+
+#~ msgid ""
+#~ "\n"
+#~ "Each MODE is one or more of the letters ugoa, one of the symbols +-= and\n"
+#~ "one or more of the letters rwxXstugo.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Jeder MODUS ist einer oder mehrere der Buchstaben „ugoa“, eines der "
+#~ "Symbole\n"
+#~ "„+-=“ und einer oder mehrere der Buchstaben „rwxXstugo“.\n"
+
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "Warnung: --version-control (-V) ist überholt. Die Unterstützung hierfür\n"
+#~ "wird in einer zukünftigen Version entfernt werden. Verwenden Sie --backup="
+#~ "%s\n"
+#~ "statt dessen."
+
+#~ msgid ""
+#~ " %z RFC-2822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %Z time zone (e.g., EDT), or nothing if no time zone is determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr ""
+#~ " %z numerische Zeitzone (-0500) wie in RFC-2822 (Nicht-Standard-"
+#~ "Erweiterung)\n"
+#~ " %Z Zeitzone (z. B. CET), oder nichts, wenn die Zeitzone nicht "
+#~ "bestimmbar\n"
+#~ "\n"
+#~ "Die Vorgabe ist, numerische Felder mit Nullen aufzufüllen. GNU „date“ "
+#~ "erkennt\n"
+#~ "die folgenden Modifikatoren zwischen „%“ und der numerischen Anweisung.\n"
+#~ "\n"
+#~ " „-“ (Bindestrich/Minus) Feld nicht auffüllen\n"
+#~ " „_“ (Unterstrich) Feld mit Leerzeichen auffüllen\n"
+
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-2822 (-R) option"
+#~ msgstr ""
+#~ "eine Formatzeichenkette darf nicht angegeben werden, wenn die Option --"
+#~ "rfc-2822\n"
+#~ "(-R) verwendet wird"
+
+#~ msgid "undefined"
+#~ msgstr "undefiniert"
+
+#~ msgid "cannot get time of day"
+#~ msgstr "die Zeit des Tages kann nicht ermittelt werden"
+
+#~ msgid "truncated records"
+#~ msgstr "abgeschnittene Datensätze"
+
+#~ msgid "file offset out of range"
+#~ msgstr "Datei-Offset außerhalb des zulässigen Bereichs"
+
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "die Option „-LIST“ ist überholt; bitte verwenden Sie „-t LIST“"
+
+#~ msgid "`%s' is too large"
+#~ msgstr "„%s“ ist zu groß"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Aufruf: %s [ignorierte Kommandozeilen-Argumente]\n"
+#~ " oder: %s OPTION\n"
+#~ "Mit einem Status-Code beenden, der einen Fehler signalisiert.\n"
+#~ "\n"
+#~ "Diese Optionen dürfen nicht abgekürzt werden.\n"
+#~ "\n"
+
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "die Option „%s“ ist überholt; bitte verwenden Sie „%s“"
+
+#~ msgid "%s: number of bytes is large"
+#~ msgstr "%s: Anzahl Bytes ist groß"
+
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "die Option „-%s“ ist überholt; bitte verwenden Sie „-%c %.*s%.*s%s“"
+
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "Erhalt des Zeitstempels für %s nicht möglich"
+
+#~ msgid "invalid field number: `%s'"
+#~ msgstr "Ungültige Feldnummer: „%s“"
+
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "Ungültige Feldnummer für Datei1: „%s“"
+
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "Ungültige Feldnummer für Datei2: „%s“"
+
+#~ msgid ""
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -b, --binary Dateien im Binärmodus lesen (Vorgabe unter DOS/"
+#~ "Windows)\n"
+#~ " -c, --check %s-Summen gegen angegebene Liste gegenprüfen\n"
+#~ " -t, --text Dateien im Textmodus lesen (Vorgabe)\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid "Only one operand may be specified when using --check."
+#~ msgstr "Bei Verwendung von --check ist nur ein Argument zulässig"
+
+#~ msgid "cannot get priority"
+#~ msgstr "Priorität ist nicht feststellbar"
+
+#~ msgid "cannot set priority"
+#~ msgstr "Priorität kann nicht gesetzt werden"
+
+#~ msgid "failed to redirect standard output"
+#~ msgstr "konnte Standardausgabe nicht umleiten"
+
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr ""
+#~ "Nicht portable Konstruktionen in NAME analysieren.\n"
+#~ "\n"
+#~ " -p, --portability für alle POSIX-Systeme überprüfen, nicht nur "
+#~ "dieses\n"
+
+#, fuzzy
+#~ msgid "column count too large"
+#~ msgstr "%s: Anzahl „%.*s“ zu groß"
+
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "--columns=SPALTE: ungültige Angabe der Spaltenanzahl: „%s“"
+
+#~ msgid "`-%s' option is obsolete; use `-l %s'"
+#~ msgstr "die Option „-%s“ ist überholt; bitte verwenden Sie „-l %s“"
+
+#~ msgid "Warning: `-l' is deprecated; use `-L' instead"
+#~ msgstr ""
+#~ "Warnung: „-l“ wird in einer kommenden Version aufgegeben werden;\n"
+#~ "bitte verwenden Sie stattdessen „-L“"
+
+#~ msgid "invalid argument `%s'"
+#~ msgstr "ungültiges Argument „%s“"
+
+#~ msgid "stdin: read error"
+#~ msgstr "Standardeingabe: Lesefehler"
+
+#~ msgid "`%s' option is obsolete; use `%s-%c %<PRIuMAX>'"
+#~ msgstr "die Option „%s“ ist überholt; verwenden Sie „%s-%c %<PRIuMAX>“"
+
+#~ msgid "%s: integer expression expected\n"
+#~ msgstr "%s: ganzzahliger Ausdruck erwartet\n"
+
+#~ msgid "before -lt"
+#~ msgstr "vor -lt"
+
+#~ msgid "after -lt"
+#~ msgstr "nach -lt"
+
+#~ msgid "before -le"
+#~ msgstr "vor -le"
+
+#~ msgid "after -le"
+#~ msgstr "nach -le"
+
+#~ msgid "before -gt"
+#~ msgstr "vor -gt"
+
+#~ msgid "after -gt"
+#~ msgstr "nach -gt"
+
+#~ msgid "before -ge"
+#~ msgstr "vor -ge"
+
+#~ msgid "after -ge"
+#~ msgstr "nach -ge"
+
+#~ msgid "before -ne"
+#~ msgstr "vor -ne"
+
+#~ msgid "after -ne"
+#~ msgstr "nach -ne"
+
+#~ msgid "before -eq"
+#~ msgstr "vor -eq"
+
+#~ msgid "after -eq"
+#~ msgstr "nach -eq"
+
+#~ msgid "after -t"
+#~ msgstr "nach -t"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Aufruf: %s [ignorierte Kommandzeilen-Argument]\n"
+#~ " oder: %s OPTION\n"
+#~ "Mit einem Status-Code beenden, der erfolgreiche Ausführung signalisiert.\n"
+#~ "\n"
+#~ "Diese Optionen dürfen nicht abgekürzt werden.\n"
+#~ "\n"
+
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr ""
+#~ "die Option „-LIST“ ist überholt; bitte verwenden Sie „--first-only -t "
+#~ "LIST“"
+
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "die Option „-%lu“ ist überholt; bitte verwenden Sie „-f %lu“"
+
+#~ msgid ""
+#~ " -i, --idle add idle time as HOURS:MINUTES, . or old\n"
+#~ " (deprecated, use -u)\n"
+#~ " -l, --login print system login processes\n"
+#~ msgstr ""
+#~ " -i, --idle die Untätigkeitszeit des Benutzers als STUNDEN:"
+#~ "MINUTEN, „.“\n"
+#~ " oder „old“ hinzufügen (von dieser Option wird "
+#~ "abgeraten,\n"
+#~ " bitte -u verwenden!)\n"
+#~ " -l, --login Login-Prozesse des Systems ausgeben\n"
+
+#~ msgid "%s: cannot find username for UID %lu\n"
+#~ msgstr ""
+#~ "%s: es ist nicht möglich, einen Benutzernamen zu UID %lu zu bestimmen\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "zu wenige Argumente"
+
+#~ msgid "cannot change to null group"
+#~ msgstr "Leerer Gruppenname; die Gruppe nicht geändert werden."
+
+#~ msgid "group number"
+#~ msgstr "Gruppennummer"
+
+#~ msgid "invalid group number %s"
+#~ msgstr "ungültige Gruppennummer %s"
+
+#~ msgid "invalid mode string: %s"
+#~ msgstr "Ungültige Modus-Zeichenkette: %s"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "Aufruf: %s [OPTION]... EIGENTÃœMER[:[GRUPPE]] DATEI...\n"
+#~ " oder: %s [OPTION]... :[GRUPPE] DATEI...\n"
+#~ " oder: %s [OPTION]... --reference=RDATEI DATEI...\n"
+
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "Aufruf: %s [OPTION]... LINKE_DATEI RECHTE_DATEI\n"
+
+#~ msgid "%s: specified destination directory does not exist"
+#~ msgstr "%s: angegebenes Zielverzeichnis existiert nicht"
+
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "%s: angegebenes Ziel ist kein Verzeichnis"
+
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr ""
+#~ "Kopieren mehrerer Dateien, aber der letzte Parameter %s ist kein "
+#~ "Verzeichnis"
+
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "Zuviele Argumente, die keine Optionen sind: %s%s"
+
+#~ msgid ""
+#~ "\tonly one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}"
+#~ msgstr ""
+#~ "\tnur je eins aus {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr ""
+#~ "Kein DATEI Argument darf zusammen mit der Option zur Ausgabe der "
+#~ "internen\n"
+#~ "Datenbank von „dircolors“ angegeben werden."
+
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ msgstr ""
+#~ "ZEICHENKETTE(n) auf Standardausgabe ausgeben.\n"
+#~ "\n"
+#~ " -n keinen Zeilenvorschub am Ende der Zeile ausgeben\n"
+#~ " -e Interpretation mit Rückschrägstrich maskierter Zeichen "
+#~ "aktivieren; vgl.\n"
+#~ " die Liste unten\n"
+#~ " -E Interpolation dieser Sequenzen in ZEICHENKETTE(n) "
+#~ "verhindern\n"
+
+#~ msgid "invalid width option: %s"
+#~ msgstr "ungültige Option für Zeilenbreite: %s"
+
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr ""
+#~ "Installation mehrerer Dateien, aber letzter Parameter, %s, ist kein "
+#~ "Verzeichnis"
+
+#~ msgid "%s is a directory"
+#~ msgstr "%s ist ein Verzeichnis"
+
+#~ msgid "too many non-option arguments"
+#~ msgstr "Zuviele Argumente, die keine Optionen sind"
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "Zuwenige Argumente, die keine Optionen sind"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: Datei existiert"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "Aufruf: %s [OPTION]... ZIEL [VERKNÃœPFUNGSNAME]\n"
+#~ " oder: %s [OPTION]... ZIEL... VERZEICHNIS\n"
+#~ " oder: %s [OPTION]... --target-directory=VERZEICHNIS ZIEL...\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr ""
+#~ "Beim Erzeugen mehrerer Verknüpfungen muss das letzte Argument ein "
+#~ "Verzeichnis sein"
+
+#~ msgid "User name too long"
+#~ msgstr "Nutzername zu lang"
+
+#~ msgid "file"
+#~ msgstr "Datei"
+
+#~ msgid "files"
+#~ msgstr "Dateien"
+
+#~ msgid "checksum"
+#~ msgstr "Prüfsumme"
+
+#~ msgid "checksums"
+#~ msgstr "Prüfsummen"
+
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "Die Optionen --string und --check schließen sich gegenseitig aus"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "Bei Verwendung von --string dürfen keine Dateien angegeben werden"
+
+#~ msgid "wrong number of arguments"
+#~ msgstr "falsche Anzahl an Argumenten"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr ""
+#~ "Major- und Minor-Nummer dürfen bei einer FIFO-Datei nicht angegeben werden"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr ""
+#~ "Beim Verschieben mehrerer Dateien muss das letzte Argument ein "
+#~ "Verzeichnis sein."
+
+#~ msgid "invalid option `%s'"
+#~ msgstr "ungültige Option „%s“"
+
+#~ msgid "invalid priority `%s'"
+#~ msgstr "ungültige Priorität „%s“"
+
+#~ msgid "old-style offset"
+#~ msgstr "Offset der alten Art"
+
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "Ungültiger zweiter Operand im Kompatibilitätsmodus „%s“"
+
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr ""
+#~ "Im Kompatibilitätsmodus müssen die letzten beiden Argumente Offsets sein"
+
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "Pfad „%s“ enthält nicht portables Zeichen „%c“"
+
+#~ msgid "`%s' is not a directory"
+#~ msgstr "„%s“ ist kein Verzeichnis"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "Verzeichnis „%s“ ist nicht lesbar"
+
+#~ msgid "name `%s' has length %ld; exceeds limit of %ld"
+#~ msgstr ""
+#~ "Name „%s“ hat eine Länge von %ld; das überschreitet den Höchstwert von %ld"
+
+#~ msgid "path `%s' has length %lu; exceeds limit of %ld"
+#~ msgstr ""
+#~ "Pfad „%s“ hat eine Länge von %lu; überschreitet den Höchstwert von %ld"
+
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "--pages: ungültige Angabe einer Seitenfolge: „%s“"
+
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "--pages: ungültige Angabe der Startseite: „%s“"
+
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "--pages: ungültige Angabe der Endseite: „%s“"
+
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr "--pages: Angabe der Startseite ist größer als Endseite"
+
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%e. %b. %Y, %H:%M"
+
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr "Startseitenangabe ist größer als Gesamtseitenzahl: „%d“"
+
+#~ msgid "Page %d"
+#~ msgstr "Seite %d"
+
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "Aufruf: %s Format [Argument...]\n"
+
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "%c: ungültiges Suffix-Zeichen in überholter Option"
+
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "Zu viele Argumente.\n"
+#~ "Wenn überholte Optionssyntax (%s) von „tail“ benutzt wird,\n"
+#~ "darf nicht mehr als ein Dateiargument angegeben werden. Stattdessen "
+#~ "sollte\n"
+#~ "-n oder -c benutzt werden."
+
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "Warnung: Es ist nicht portabel, zwei oder mehr Dateiargumente mit der\n"
+#~ "überholten Optionssyntax (%s) zu benutzen. Stattdessen sollte die\n"
+#~ "entsprechende Option -n oder -c benutzt werden."
+
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr "%s: ungültige Anzahl von aufeinanderfolgenden Größenänderungen"
+
+#~ msgid "argument expected\n"
+#~ msgstr "Argument erwartet\n"
+
+#~ msgid "too many arguments\n"
+#~ msgstr "zuviele Argumente\n"
+
+#~ msgid "file arguments missing"
+#~ msgstr "Dateiargumente fehlen"
+
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "Ungültige Benutzung des Backslashs „\\%c“"
+
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr ""
+#~ "Beim Löschen mit Verdichten müssen zwei Zeichenketten angegeben werden"
+
+#~ msgid "at least one string must be given when squeezing repeats"
+#~ msgstr ""
+#~ "Beim Löschen von Wiederholungen muss mindestens\n"
+#~ "eine Zeichenkette angegeben werden"
+
+#~ msgid ""
+#~ "invalid identity mapping; when translating, any [:lower:] or [:upper:]\n"
+#~ "construct in string1 must be aligned with a corresponding construct\n"
+#~ "([:upper:] or [:lower:], respectively) in string2"
+#~ msgstr ""
+#~ "ungültige Identitätsabbildung; bei Wandlungen muss jedes [:lower:]- oder\n"
+#~ "[:upper:]-Konstrukt in Kette1 mit dem entsprechenden [:lower:]- oder\n"
+#~ "[:upper:]-Konstrukt in Kette2 in Ãœbereinstimmung gebracht werden"
+
+#~ msgid "only one argument may be specified"
+#~ msgstr "Nur ein Argument ist zulässig."
+
+#~ msgid "tab size contains an invalid character"
+#~ msgstr "Tabulatorgröße enthält ein ungültiges Zeichen"
+
+#~ msgid "*** invalid date/time ***"
+#~ msgstr "*** ungültiges Datum/Zeit ***"
+
+#~ msgid "%s: `+' or `-' expected after delimeter"
+#~ msgstr "%s: „+“ oder „-“ nach Trenner erwartet"
+
+#~ msgid "cannot change to parent of directory %s"
+#~ msgstr "Kann nicht in das übergeordnete Verzeichnis von %s wechseln"
+
+#~ msgid ""
+#~ "when the starting value is larger than the limit,\n"
+#~ "the increment must be negative"
+#~ msgstr ""
+#~ "wenn der Startwert größer als die Obergrenze ist, muss\n"
+#~ "das Inkrement negativ sein"
+
+#~ msgid ""
+#~ "when the starting value is smaller than the limit,\n"
+#~ "the increment must be positive"
+#~ msgstr ""
+#~ "wenn der Startwert kleiner als die Obergrenze ist, muss\n"
+#~ "das Inkrement positiv sein"
+
+#~ msgid ""
+#~ "Warning: the meaning of '-l' will change in a future release to conform "
+#~ "to POSIX"
+#~ msgstr ""
+#~ "Warnung: die Bedeutung von „-l“ wird in einem kommenden Release in "
+#~ "Hinblick auf\n"
+#~ "Konformität mit POSIX geändert werden"
+
+#~ msgid "unable to restore permissions of %s"
+#~ msgstr "Wiederherstellen der Zugriffsrechte von %s nicht möglich"
+
+#~ msgid ""
+#~ "\n"
+#~ "In -wNUMBER, the letter `w' may be omitted.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Bei -wZAHL darf das „w“ weggelassen werden.\n"
+
+#~ msgid ""
+#~ " -c, --bytes=SIZE print first SIZE bytes\n"
+#~ " -n, --lines=NUMBER print first NUMBER lines instead of first 10\n"
+#~ msgstr ""
+#~ " -c, --bytes=GRÖSSE erste GRÖSSE Bytes ausgeben\n"
+#~ " -n, --lines=ANZAHL erste ANZAHL Zeilen statt 10 ausgeben\n"
+
+#~ msgid "invalid number"
+#~ msgstr "Ungültige Anzahl"
+
+#~ msgid "%s is larger than the maximum file size on this system"
+#~ msgstr "%s ist größer als die maximale Dateigröße auf diesem System"
+
+#~ msgid "program error"
+#~ msgstr "Programmfehler"
+
+#~ msgid "stack overflow"
+#~ msgstr "Stacküberlauf"
+
+#~ msgid "warning: unable to use large stack"
+#~ msgstr "Warnung: kann großen Stack nicht verwenden"
+
+#~ msgid " Type"
+#~ msgstr " Typ "
+
+#~ msgid "\\%c: invalid escape"
+#~ msgstr "\\%c: ungültige Maskierung (Escape)"
+
+#~ msgid "missing file arguments"
+#~ msgstr "Fehlende Dateiargumente"
+
+#~ msgid ""
+#~ "\n"
+#~ "Instead of -t NUMBER or -t LIST, -NUMBER or -LIST may be used.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Anstelle von -t ZAHL oder -t LISTE darf auch -ZAHL oder -LISTE verwendet\n"
+#~ "werden.\n"
+
+#~ msgid ""
+#~ "specified number of bytes `%s' is larger than the maximum\n"
+#~ "representable value of type `long'"
+#~ msgstr ""
+#~ "Angebene Anzahl Bytes „%s“ ist größer als der maximale darstellbare\n"
+#~ "Wert des Typs „long“"
+
+#~ msgid "cannot get processor type"
+#~ msgstr "es ist nicht möglich, den Prozessortyp festzustellen"
+
+# 8 chars are okay
+#~ msgid "USER"
+#~ msgstr "BENUTZER"
+
+#~ msgid "LOGIN-TIME "
+#~ msgstr "LOGIN-ZEIT "
+
+#~ msgid "FROM\n"
+#~ msgstr "VON\n"
+
+#~ msgid "cannot chmod %s"
+#~ msgstr "kann Eigenschaften von %s nicht ändern"
+
+#~ msgid "Try %s --help' for more information.\n"
+#~ msgstr "„%s --help“ gibt weitere Informationen.\n"
+
+#~ msgid "cannot lstat `.'"
+#~ msgstr "lstat von „.“ nicht möglich"
+
+#~ msgid "%s: remove directory %s? "
+#~ msgstr "%s: Verzeichnis %s entfernen? "
+
+#~ msgid "%s: directory %s is write protected; descend into it anyway? "
+#~ msgstr ""
+#~ "%s: Verzeichnis %s ist schreibgeschützt. Trotzdem hinein absteigen? "
+
+#~ msgid "removing all entries of directory %s\n"
+#~ msgstr "entfernen aller Einträge in Verzeichnis %s\n"
+
+#~ msgid "directory %s was replaced before being removed"
+#~ msgstr "Verzeichnis %s wurde vor dem Entfernen ersetzt"
+
+#~ msgid "cannot change back to directory %s via `..'"
+#~ msgstr "In Verzeichnis %s kann nicht über „..“ zurück gewechselt werden"
+
+#~ msgid "subdirectory of %s was moved while being removed"
+#~ msgstr "Unterverzeichnis von %s wurde während des Entfernens bewegt"
+
+#~ msgid "%s: remove directory %s%s? "
+#~ msgstr "%s: Verzeichnis %s entfernen%s? "
+
+#~ msgid " (might be nonempty)"
+#~ msgstr " (viell. nicht leer)"
+
+#~ msgid "removing the directory itself: %s\n"
+#~ msgstr "Entfernen des Verzeichnisses selbst: %s\n"
+
+#~ msgid "cannot remove current directory %s"
+#~ msgstr "Entfernen von momentanem Verzeichnis %s nicht möglich"
+
+#~ msgid "continue? "
+#~ msgstr "Fortfahren? "
diff --git a/po/el.gmo b/po/el.gmo
new file mode 100644
index 0000000..f71e7ff
--- /dev/null
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
new file mode 100644
index 0000000..f4b4132
--- /dev/null
+++ b/po/el.po
@@ -0,0 +1,13711 @@
+# Greek messages for GNU textutils
+# Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+# Simos Xenitellis <simos@hellug.gr>, 1999, 2000, 2001, 2002.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: textutils 2.1\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2002-08-11 11:25+0100\n"
+"Last-Translator: Simos Xenitellis <simos@hellug.gr>\n"
+"Language-Team: Greek <nls@tux.hellug.gr>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-7\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "áäõíáìßá áëëáãÞò éäéïêôçóßáò óôï %s"
+
+#
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, fuzzy, c-format
+msgid "setting permissions for %s"
+msgstr "áäõíáìßá áëëáãÞò éäéïêôçóßáò óôï %s"
+
+#
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "ìç Ýãêõñï üñéóìá %s ãéá %s"
+
+#
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "áóáöÝò üñéóìá %s ãéá %s"
+
+#
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "¸ãêõñá ïñßóìáôá åßíáé:"
+
+#
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "óöÜëìá åããñáöÞò"
+
+#
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "¶ãíùóôï óöÜëìá óõóôÞìáôïò"
+
+#
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, fuzzy, c-format
+msgid "cannot stat %s"
+msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "êáíïíéêü êåíü áñ÷åßï"
+
+#
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "êáíïíéêü áñ÷åßï"
+
+#
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "êáôÜëïãïò"
+
+#
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "åéäéêü áñ÷åßï ìðëïê"
+
+#
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "åéäéêü áñ÷åßï ÷áñáêôÞñùí"
+
+#
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "ößöï"
+
+#
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "óõìâïëéêüò óýíäåóìïò"
+
+#
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "õðïäï÷Ýáò"
+
+#
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "ïõñÜ ìçíõìÜôùí"
+
+#
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "óçìáöüñïò"
+
+#
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr ""
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr ""
+
+#
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "ðáñÜîåíï áñ÷åßï"
+
+#: lib/gai_strerror.c:44
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "áñ÷åßá fifo äåí õðïóôçñßæïíôáé"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "áñ÷åßá fifo äåí õðïóôçñßæïíôáé"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr ""
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "áñ÷åßá fifo äåí õðïóôçñßæïíôáé"
+
+#
+#: lib/gai_strerror.c:54
+#, fuzzy
+msgid "System error"
+msgstr "óöÜëìá åããñáöÞò"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#
+#: lib/gai_strerror.c:74
+#, fuzzy
+msgid "Unknown error"
+msgstr "¶ãíùóôï óöÜëìá óõóôÞìáôïò"
+
+#
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: ç åðéëïãÞ `%s' åßíáé áóáöÞò\n"
+
+#
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: ç åðéëïãÞ `--%s' äåí åðéôñÝðåé ïñßóìáôá\n"
+
+#
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: ç åðéëïãÞ `%c%s' äåí åðéôñÝðåé ïñßóìáôá\n"
+
+#
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: ç åðéëïãÞ `-%s' áðáéôåß Ýíá üñéóìá\n"
+
+#
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: ìç áíáãíùñßóéìç åðéëïãÞ `--%s'\n"
+
+#
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: ìç áíáãíùñßóéìç åðéëïãÞ `%c%s'\n"
+
+#
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: ìç áíáãíùñßóéìç åðéëïãÞ -- %c\n"
+
+#
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ìç Ýãêõñç åðéëïãÞ -- %c\n"
+
+#
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: ç åðéëïãÞ áðáéôåß Ýíá üñéóìá -- %c\n"
+
+#
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: ç åðéëïãÞ `-W %s' åßíáé áóáöÞò\n"
+
+#
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: ç åðéëïãÞ `-W %s' äåí åðéôñÝðåé ïñßóìáôá\n"
+
+#
+#: lib/human.c:477
+msgid "block size"
+msgstr "ìÝãåèïò ìðëïê"
+
+#
+#: lib/mkdir-p.c:197 src/install.c:522
+#, fuzzy, c-format
+msgid "cannot change permissions of %s"
+msgstr "áäõíáìßá áëëáãÞò éäéïêôçóßáò óôï %s"
+
+#
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, fuzzy, c-format
+msgid "cannot create directory %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "ç ìíÞìç åîáíôëÞèçêå"
+
+#
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "`"
+
+#
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "'"
+
+#
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "%s: óöÜëìá áíÜãíùóçò"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: ìç Ýãêõñç êáíïíéêÞ Ýêöñáóç: %s"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "ìç Ýãêõñç ôÜîç ÷áñáêôÞñùí `%s'"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr "Ç ìíÞìç åîáíôëÞèçêå"
+
+#
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: ìç Ýãêõñç êáíïíéêÞ Ýêöñáóç: %s"
+
+#
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "óöÜëìá óôçí áíåýñåóç ìÝóù êáíïíéêÞò Ýêöñáóçò"
+
+#
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "%s: ìç Ýãêõñç êáíïíéêÞ Ýêöñáóç: %s"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "óöÜëìá óôçí áíåýñåóç ìÝóù êáíïíéêÞò Ýêöñáóçò"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr ""
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr ""
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+
+#
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[yYíÍ]"
+
+#
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nNïÏ]"
+
+#
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr ""
+
+#
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr ""
+
+#
+#: lib/unicodeio.c:160
+#, fuzzy
+msgid "character out of range"
+msgstr "%s: áñéèìüò ãñáììÞò Ýîù áðü ôá üñéá"
+
+#
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr ""
+
+#
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr ""
+
+#
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "ìç Ýãêõñïò ÷ñÞóôçò"
+
+#
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "ìç Ýãêõñç ïìÜäá"
+
+#
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "ìç Ýãêõñïò ÷ñÞóôçò"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+
+#
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "ÃñáììÝíï áðü ôïí/ôçí %s.\n"
+
+#
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid "Written by %s and %s.\n"
+msgstr "ÃñáììÝíï áðü ôïí/ôçí %s.\n"
+
+#
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, fuzzy, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "ÃñáììÝíï áðü ôïí/ôçí %s.\n"
+
+#
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr "ÃñáììÝíï áðü ôïí/ôçí %s.\n"
+
+#
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr "ÃñáììÝíï áðü ôïí/ôçí %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#
+#: lib/xfts.c:58
+#, fuzzy, c-format
+msgid "invalid argument: %s"
+msgstr "ìç Ýãêõñï üñéóìá %s ãéá %s"
+
+#
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr ""
+
+#
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "ÈÝóôå LC_ALL='C' ãéá íá ðáñáêÜìøåôå ôï ðñüâëçìá."
+
+#
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr ""
+
+#
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "Ý÷åé ðáñáëçöèåß ç ëßóôá ìå ôá ðåäßá"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "ìç Ýãêõñç ôÜîç ÷áñáêôÞñùí `%s'"
+
+#
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "ôï %s åßíáé ðïëý ìåãÜëï"
+
+#
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "ÄïêéìÜóôå `%s --help' ãéá ðåñéóóüôåñç âïÞèåéá.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+"ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+"\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"ÁíáöÝñáôå óöÜëìáôá óôï <%s>.\n"
+
+#
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "óöÜëìá áíÜãíùóçò"
+
+#
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "ìç Ýãêõñïò áñéèìüò"
+
+#
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "ìç Ýãêõñï åßäïò áëöáñéèìçôéêïý `%s'"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr ""
+
+#
+#: src/base64.c:316 src/cat.c:785
+#, fuzzy, c-format
+msgid "closing standard input"
+msgstr "êáíïíéêÞ åßóïäïò"
+
+#
+#: src/basename.c:54
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#: src/basename.c:59
+#, fuzzy
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Ôõðþíåé ôï ÏÍÏÌÁ ÷ùñßò íá áêïëïõèåßôáé áðï óõóôáôéêÜ êáôáëüãïõ.\n"
+"Åáí ðñïóäéïñßæåôáé, áöáéñåß ôï ÅÐÉÈÇÌÁ ðïõ áêïëïõèåß.\n"
+"\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, fuzzy, c-format
+msgid "missing operand"
+msgstr "%s: áíáìåíüôáí áêÝñáéïò ìåôÜ ôï `%c'"
+
+#
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ] [ÁÑ×ÅÉÏ]...\n"
+
+#
+#: src/cat.c:99
+#, fuzzy
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"ÓõíÝíùóç ÁÑ×ÅÉÏÕ(ÙÍ) Þ êáíïíéêÞò åéóüäïõ óå êáíïíéêÞ Ýîïäï.\n"
+"\n"
+" -A, --show-all éóïäýíáìï ìå -vET\n"
+" -b, --number-nonblank áñßèìçóç ìç-êåíþí ãñáììþí ôçò åîüäïõ\n"
+" -e éóïäýíáìï ìå -vE\n"
+" -E, --show-ends åìöÜíéóç ôïõ $ óôï ôÝëïò êÜèå ãñáììÞò\n"
+" -n, --number áñßèìçóç üëùí ôùí ãñáììþí åîüäïõ\n"
+" -s, --squeeze-blank ðïôÝ ðåñéóóüôåñï áðü ìéá ìïíÞ êåíÞ ãñáììÞ\n"
+" -t éóïäýíáìï ìå -vT\n"
+" -T, --show-tabs åìöÜíéóç ÷áñáêôÞñá TAB óáí ^I\n"
+" -u (áãíïåßôå)\n"
+" -v, --show-nonprinting ÷ñÞóç ^ êáé Ì- êùäéêïãñáöÞ, åêôüò ãéá LFD êáé "
+"TAB\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+"\n"
+"×ùñßò ÁÑ×ÅÉÏ Þ üôáí ôï áñ÷åßï åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ åßóïäï.\n"
+
+#
+#: src/cat.c:109
+#, fuzzy
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+"ÓõíÝíùóç ÁÑ×ÅÉÏÕ(ÙÍ) Þ êáíïíéêÞò åéóüäïõ óå êáíïíéêÞ Ýîïäï.\n"
+"\n"
+" -A, --show-all éóïäýíáìï ìå -vET\n"
+" -b, --number-nonblank áñßèìçóç ìç-êåíþí ãñáììþí ôçò åîüäïõ\n"
+" -e éóïäýíáìï ìå -vE\n"
+" -E, --show-ends åìöÜíéóç ôïõ $ óôï ôÝëïò êÜèå ãñáììÞò\n"
+" -n, --number áñßèìçóç üëùí ôùí ãñáììþí åîüäïõ\n"
+" -s, --squeeze-blank ðïôÝ ðåñéóóüôåñï áðü ìéá ìïíÞ êåíÞ ãñáììÞ\n"
+" -t éóïäýíáìï ìå -vT\n"
+" -T, --show-tabs åìöÜíéóç ÷áñáêôÞñá TAB óáí ^I\n"
+" -u (áãíïåßôå)\n"
+" -v, --show-nonprinting ÷ñÞóç ^ êáé Ì- êùäéêïãñáöÞ, åêôüò ãéá LFD êáé "
+"TAB\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+"\n"
+"×ùñßò ÁÑ×ÅÉÏ Þ üôáí ôï áñ÷åßï åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ åßóïäï.\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+#
+#: src/cat.c:333
+#, fuzzy, c-format
+msgid "cannot do ioctl on %s"
+msgstr "áäõíáìßá åêôÝëåóçò ioctl óôï `%s'"
+
+#
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "êáíïíéêÞ Ýîïäïò"
+
+#
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: ôï áñ÷åßï åéóüäïõ åßíáé ôï áñ÷åßï åîüäïõ"
+
+#
+#: src/chgrp.c:95 src/install.c:611
+#, fuzzy, c-format
+msgid "invalid group %s"
+msgstr "ìç Ýãêõñç ïìÜäá"
+
+#
+#: src/chgrp.c:112
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÁÑ×ÅÉÏ]...\n"
+" Þ: %s --traditional [ÁÑ×ÅÉÏ] [[+]ÈÅÓÇ [[+]×ÁÑÁÊÔÇÑÉÓÔÉÊÏ]]\n"
+
+#: src/chgrp.c:117
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr ""
+
+#
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, fuzzy, c-format
+msgid "missing operand after %s"
+msgstr "%s: áíáìåíüôáí áêÝñáéïò ìåôÜ ôï `%c'"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, fuzzy, c-format
+msgid "failed to get attributes of %s"
+msgstr "äéáôÞñçóç ùñþí óôï %s"
+
+#: src/chmod.c:128
+#, fuzzy, c-format
+msgid "getting new attributes of %s"
+msgstr "äéáôÞñçóç ùñþí óôï %s"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "ïýôå ï óõìâïëéêüò óýíäåóìïò %s ïýôå ôï áíáöåñüìåíï áñ÷åßï áëëÜ÷ôçêáí\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "ôá äéêáéþìáôá ôïõ %s ôñïðïðïéÞèçêáí óå %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "áðïôõ÷ßá áëëáãÞò ôùí äéêáéùìÜôùí ôïõ %s óå %04lo (%s)\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "ôá äéêáéþìáôá ôïõ %s äéáôçñïýíôáé ùò Ý÷ïõí, äçëáäÞ %04lo (%s)\n"
+
+#
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, fuzzy, c-format
+msgid "cannot access %s"
+msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr ""
+
+#
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, fuzzy, c-format
+msgid "cannot read directory %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/chmod.c:251
+#, fuzzy, c-format
+msgid "changing permissions of %s"
+msgstr "áäõíáìßá áëëáãÞò éäéïêôçóßáò óôï %s"
+
+#
+#: src/chmod.c:286
+#, fuzzy, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "áäõíáìßá áëëáãÞò éäéïêôçóßáò óôï %s"
+
+#
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, fuzzy, c-format
+msgid "fts_read failed"
+msgstr "áðïôõ÷ßá áíÜãíùóçò"
+
+#: src/chmod.c:345
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"×ñÞóç: %s [ÅÐÉËÏÃÇ]... ÔÅËÅÕÔÁÉÏÓ\n"
+" Þ: %s [ÅÐÉËÏÃÇ]... ÐÑÙÔÏÓ ÔÅËÅÕÔÁÉÏÓ\n"
+" Þ: %s [ÅÐÉËÏÃÇ]... ÐÑÙÔÏÓ ÁÕÎÇÓÇ ÔÅËÅÕÔÁÉÏÓ\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chmod.c:360
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+"ÁëëáãÞ ôùí äéêáéùìÜôùí êÜèå ÁÑ×ÅÉÏÕ óå ÄÉÊÁÉÙÌÁ.\n"
+"\n"
+" -c, --changes üðùò ôï \"--verbose\" áëëÜ åìöÜíéóç ìçíýìáôïò ìüíï "
+"üôáí ãßíåôáé áëëáãÞ\n"
+" -f, --silent, --quiet áðïöõãÞ åìöÜíéóçò ôùí ðåñéóóüôåñùí ìçíõìÜôùí "
+"óöÜëìáôïò\n"
+" -v, --verbose åìöÜíéóç äéáãíùóôéêþí ìçíõìÜôùí ãéá êÜèå áñ÷åßï "
+"ðïõ åðåîåñãÜæåôå\n"
+" --reference=ÁÑ×ÅÉÏÁÍÁÖÏÑÁÓ ÷ñÞóç ôùí äéêáéùìÜôùí ôïõ ÁÑ×ÅÉÏÁÍÁÖÏÑÁÓ\n"
+" áíôß ôéò ôéìÞò ôïõ ÄÉÊÁÉÙÌÁ\n"
+" -R, --recursive áëëáãÝò óôá áñ÷åßá êáé óôïõò êáôáëüãïõò "
+"áíáäñïìéêÜ\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+"\n"
+"ÊÜèå ÄÉÊÁÉÙÌÁ åßíáé Ýíá Þ ðåñéóóüôåñá áðü ôá ãñÜììáôá ugoa, Ýíá áðü ôá\n"
+"óýìâïëá +-= êáé Ýíá Þ ðåñéóóüôåñá áðü ôá ãñÜììáôá rwxXstugo.\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr ""
+
+#
+#: src/chmod.c:510
+#, fuzzy, c-format
+msgid "invalid mode: %s"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#: src/chown-core.c:147
+#, fuzzy, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "áðïôõ÷ßá áëëáãÞò ôïõ éäéïêôÞôç áðü %s óå "
+
+#: src/chown-core.c:148
+#, fuzzy, c-format
+msgid "changed group of %s to %s\n"
+msgstr "áðïôõ÷ßá áëëáãÞò ôçò ïìÜäáò áðü %s óå %s\n"
+
+#: src/chown-core.c:149
+#, fuzzy, c-format
+msgid "no change to ownership of %s\n"
+msgstr "äéáôÞñçóç éäéïêôÞôç ãéá ôï %s"
+
+#
+#: src/chown-core.c:152
+#, fuzzy, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "áäõíáìßá áëëáãÞò éäéïêôçóßáò óôï %s"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "áðïôõ÷ßá áëëáãÞò ôçò ïìÜäáò áðü %s óå %s\n"
+
+#
+#: src/chown-core.c:154
+#, fuzzy, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "áäõíáìßá áëëáãÞò éäéïêôçóßáò óôï %s"
+
+#: src/chown-core.c:157
+#, fuzzy, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "ï éäéïêôÞôçò ôïõ %s ðáñÝìåéíå ùò "
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "ç ïìÜäá ôïõ %s Ý÷åé ðáñáìåßíåé óå %s\n"
+
+#: src/chown-core.c:159
+#, fuzzy, c-format
+msgid "ownership of %s retained\n"
+msgstr "ï éäéïêôÞôçò ôïõ %s ðáñÝìåéíå ùò "
+
+#
+#: src/chown-core.c:344
+#, fuzzy, c-format
+msgid "cannot dereference %s"
+msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#: src/chown-core.c:432
+#, fuzzy, c-format
+msgid "changing ownership of %s"
+msgstr "äéáôÞñçóç éäéïêôÞôç ãéá ôï %s"
+
+#
+#: src/chown-core.c:433
+#, fuzzy, c-format
+msgid "changing group of %s"
+msgstr "äåí åßíáé äõíáôü íá ðáñáëçöèåß ÷ñÞóôçò êáé ïìÜäá"
+
+#
+#: src/chown.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÁÑ×ÅÉÏ]...\n"
+" Þ: %s --traditional [ÁÑ×ÅÉÏ] [[+]ÈÅÓÇ [[+]×ÁÑÁÊÔÇÑÉÓÔÉÊÏ]]\n"
+
+#: src/chown.c:98
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#
+#: src/chroot.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+
+#
+#: src/chroot.c:89
+#, fuzzy, c-format
+msgid "cannot change root directory to %s"
+msgstr "áäýíáôç ç áëëáãÞ óôï êáôÜëïãï %s"
+
+#
+#: src/chroot.c:92
+#, fuzzy, c-format
+msgid "cannot chdir to root directory"
+msgstr "áäýíáôç ç áëëáãÞ óôï êáôÜëïãï %s"
+
+#
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, fuzzy, c-format
+msgid "cannot run command %s"
+msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#
+#: src/cksum.c:217
+#, fuzzy, c-format
+msgid "%s: file too long"
+msgstr "ôï áñ÷åßï ìçäåíßóôçêå"
+
+#
+#: src/cksum.c:265
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+
+#
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... ÁÑ×ÅÉÏ1 ÁÑ×ÅÉÏ2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr ""
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+
+#
+#: src/comm.c:86
+#, fuzzy
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"Óýãêñéóç ôáîéíïìçìÝíùí áñ÷åßùí ÁÑÉÓÔÅѼ_ÁÑ×ÅºÏ êáé ÄÅÎɼ_ÁÑןÏ, áíÜ "
+"ãñáììÞ.\n"
+"\n"
+" -1 áðüêñõøç ìïíáäéêþí ãñáììþí óôï áñéóôåñü áñ÷åßï\n"
+" -2 áðüêñõøç ìïíáäéêþí ãñáììþí óôï äåîéü áñ÷åßï\n"
+" -3 áðüêñõøç ìïíáäéêþí ãñáììþí êáé óôá äýï áñ÷åßá\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, fuzzy, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "äéáôÞñçóç éäéïêôÞôç ãéá ôï %s"
+
+#: src/copy.c:222
+#, fuzzy, c-format
+msgid "failed to lookup file %s"
+msgstr "äéáôÞñçóç ùñþí óôï %s"
+
+#: src/copy.c:227
+#, fuzzy, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "äéáôÞñçóç éäéïêôÞôç ãéá ôï %s"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, fuzzy, c-format
+msgid "cannot open %s for reading"
+msgstr "áäõíáìßá ìåôáöïñÜò ôïõ `%s' óôï `%s'"
+
+#
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, fuzzy, c-format
+msgid "cannot fstat %s"
+msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr ""
+
+#
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, fuzzy, c-format
+msgid "cannot remove %s"
+msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, fuzzy, c-format
+msgid "removed %s\n"
+msgstr "äéáãñáöÞ êáôáëüãïõ %s\n"
+
+#
+#: src/copy.c:329
+#, fuzzy, c-format
+msgid "cannot create regular file %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, fuzzy, c-format
+msgid "reading %s"
+msgstr "óöÜëìá áíÜãíùóçò %s"
+
+#
+#: src/copy.c:467 src/head.c:428
+#, fuzzy, c-format
+msgid "cannot lseek %s"
+msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, fuzzy, c-format
+msgid "writing %s"
+msgstr "óöÜëìá åããñáöÞò %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "äéáôÞñçóç ùñþí óôï %s"
+
+#
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, fuzzy, c-format
+msgid "closing %s"
+msgstr "êëåßóéìï ôïõ %s (fd=%d)"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: áíôéãñáöÞ ðÜíù óôï `%s', ðáñÜêáìøç äéêáéùìÜôùí %04lo; "
+
+#
+#: src/copy.c:812
+#, fuzzy, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: óöÜëìá åããñáöÞò"
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (áíôßãñáöï áóöáëåßáò: %s)"
+
+#
+#: src/copy.c:1048
+#, fuzzy, c-format
+msgid "omitting directory %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr ""
+
+#: src/copy.c:1093 src/ln.c:209
+#, fuzzy, c-format
+msgid "%s and %s are the same file"
+msgstr "ôá `%s' êáé `%s' åßíáé ôï ßäéï áñ÷åßï"
+
+#
+#: src/copy.c:1149
+#, fuzzy, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "áäýíáôç ç áëëáãÞ óôï êáôÜëïãï %s"
+
+#: src/copy.c:1167
+#, fuzzy, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "%s: äå ìðïñåß íá ãñáöôåß ìç-êáôÜëïãïò ðÜíù óå êáôÜëïãï"
+
+#
+#: src/copy.c:1185
+#, fuzzy, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/copy.c:1223
+#, fuzzy, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "áäýíáôç ç áëëáãÞ óôï êáôÜëïãï %s"
+
+#: src/copy.c:1253
+#, fuzzy, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr ""
+"ç äçìéïõñãßá áíôéãñÜöïõ áóöáëåßáò ôïõ `%s' èá êáôÝóôñåöå ôç ðçãÞ· ôï `%s' äå "
+"ìåôáêéíåßôáé"
+
+#: src/copy.c:1254
+#, fuzzy, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr ""
+"óôç äçìéïõñãßá áíôéãñÜöïõ áóöáëåßáò ôïõ `%s' èá êáôÝóôñåöå ôç ðçãÞ· ôï `%s' "
+"äåí áíôéãñÜöåôáé"
+
+#
+#: src/copy.c:1273 src/ln.c:239
+#, fuzzy, c-format
+msgid "cannot backup %s"
+msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#
+#: src/copy.c:1372
+#, fuzzy, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/copy.c:1389
+#, fuzzy, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "áäýíáôç ç áëëáãÞ óôï êáôÜëïãï %s"
+
+#
+#: src/copy.c:1414
+#, fuzzy, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/copy.c:1459
+#, fuzzy, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "áäýíáôç ç áëëáãÞ óôï êáôÜëïãï %s"
+
+#
+#: src/copy.c:1502
+#, fuzzy, c-format
+msgid "cannot move %s to %s"
+msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+
+#: src/copy.c:1553
+#, fuzzy, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "%s: áäõíáìßá áíôéãñáöÞò êõêëßêïý óõìâïëéêïý óõíäÝóìïõ"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr ""
+"%s: äõíáôüôçôá äçìéïõñãßáò ó÷åôéêþí óõìâïëéêþí óõíäÝóìùí ìüíï óôï ôñÝ÷ïí "
+"êáôÜëïãï"
+
+#
+#: src/copy.c:1661
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/copy.c:1686
+#, fuzzy, c-format
+msgid "cannot create link %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/copy.c:1713 src/mkfifo.c:124
+#, fuzzy, c-format
+msgid "cannot create fifo %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/copy.c:1722
+#, fuzzy, c-format
+msgid "cannot create special file %s"
+msgstr "åéäéêü áñ÷åßï ÷áñáêôÞñùí"
+
+#
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, fuzzy, c-format
+msgid "cannot read symbolic link %s"
+msgstr "óõìâïëéêüò óýíäåóìïò"
+
+#
+#: src/copy.c:1759
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#: src/copy.c:1790
+#, fuzzy, c-format
+msgid "%s has unknown file type"
+msgstr "%s: Üãíùóôï åßäïò áñ÷åßïõ"
+
+#
+#: src/copy.c:1910 src/ln.c:308
+#, fuzzy, c-format
+msgid "cannot un-backup %s"
+msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+# src/copy.c:924
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (÷ñÞóç áíôéãñÜöïõ áóöáëåßáò)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"×ñÞóç: %s [ÅÐÉËÏÃÇ]... ÔÅËÅÕÔÁÉÏÓ\n"
+" Þ: %s [ÅÐÉËÏÃÇ]... ÐÑÙÔÏÓ ÔÅËÅÕÔÁÉÏÓ\n"
+" Þ: %s [ÅÐÉËÏÃÇ]... ÐÑÙÔÏÓ ÁÕÎÇÓÇ ÔÅËÅÕÔÁÉÏÓ\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+"ÁíôéãñáöÞ ôçò ÐÇÃÇò óôï ÐÑÏÏÑÉÓÌÏÓ Þ ðïëëáðëÝò ÐÇÃÇ(ÅÓ) óôï ÊÁÔÁËÏÃÏ.\n"
+"\n"
+" -a, --archive ôï ßäéï ìå -dpR\n"
+" --backup=[ÅËÅÃ×ÏÓ] äçìéïõñãßá áíôéãñÜöïõ áóöáëåßáò ãéá êÜèå "
+"áñ÷åßï\n"
+" ðñïïñéóìïý\n"
+" -b üðùò ôï --backup áëëÜ äåí áðáéôåß ðáñÜìåôñï\n"
+" -d, --no-dereference äéáôÞñçóç óõìâïëéêþí óõíäÝóìùí\n"
+" -f, --force äéáãñáöÞ õðáñ÷üíôùí ðñïïñéóìþí, ÷ùñßò\n"
+" åðéâåâáßùóç äéáãñáöÞò\n"
+" -i, --interactive áðáßôçóç äéáâåâáßùóçò äéáãñáöÞò ðñéí ôç\n"
+" äéáãñáöÞ ëüãù åðéêÜëõøçò\n"
+" -l, --link äçìéïõñãßá óõíäÝóìùí áíôß áíôéãñÜöùí\n"
+" -p, --preserve äéáôÞñçóç ÷áñáêôçñéóôéêþí ôùí áñ÷åßùí, áí\n"
+" åßíáé äõíáôüí\n"
+" -P, --parents ðñïóèÞêç äéáäñïìÞò ôçò ðçãÞò óôï ÊÁÔÁËÏÃÏÓ\n"
+" -r áíôéãñáöÞ áíáäñïìéêÜ, ôïõò ìç-êáôáëüãïõò óáí\n"
+" áñ÷åßá\n"
+" ÐÑÏÅÉÄÏÐÏÉÇÓÇ: êÜíôå ÷ñÞóç ôïõ -R üôáí\n"
+" ðñüêåéôå íá áíôéãñÜøåôå åéäéêÜ áñ÷åßá üðùò\n"
+" FIFO Þ ôï /dev/zero\n"
+" --sparse=WHEN Ýëåã÷ïò ôçò äçìéïõñãßáò áñáéþí (sparse)\n"
+" áñ÷åßùí\n"
+" -R, --recursive áíôéãñáöÞ êáôáëüãùí áíáäñïìéêÜ\n"
+" --strip-trailing-slashes áðïìÜêñõíóç ïôéäÞðïôå êÜèåôùí ðïõ Ýðïíôáé "
+"áðü\n"
+" êÜèå üñéóìá ÐÇÃÇÓ\n"
+" -s, --symbolic-link äçìéïõñãßá óõìâïëéêþí óõíäÝóìùí áíôß\n"
+" áíôéãñÜöùí\n"
+" -S, --suffix=ÊÁÔÁËÇÎÇ ðáñÜêáìøç ôçò óõíçèéóìÝíçò êáôÜëçîçò ôùí\n"
+" áíôéãñÜöùí áóöáëåßáò\n"
+" --target-directory=ÊÁÔÁËÏÃÏÓ ìåôáêßíçóå üëá ôá ïñßóìáôá ãéá ÐÇÃÇ óôï\n"
+" ÊÁÔÁËÏÃÏÓ\n"
+" -u, --update áíôéãñáöÞ ìüíï üôáí ôï áñ÷åßï ÐÇÃÇ åßíáé\n"
+" íåþôåñï áðü ôï áñ÷åßï ÐÑÏÏÑÉÓÌÏÓ Þ üôáí\n"
+" ôï áñ÷åßï ðñïïñéóìüò äåí õðÜñ÷åé\n"
+" -v, --verbose åîÞãçóç ôïõ ôß ãßíåôáé\n"
+" -x, --one-file-system ðáñáìïíÞ óôï ôñÝ÷ïí óýóôçìá áñ÷åßùí\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+"\n"
+"¸î ïñéóìïý, ôá áñáßá (sparse) áñ÷åßá ÐÇÃÇÓ áíáãùñßæïíôáé ìå Ýíá ü÷é ôüóï\n"
+"êáëü åõñåóôéêü áëãüñéèìï êáé ôï áíôßóôïé÷ï áñ÷åßï ÐÑÏÏÑÉÓÌÏÕ ãßíåôáé áñáéü\n"
+"åðßóçò. ÁõôÞ åßíáé ç óõìðåñéöïñÜ ôçò åðéëïãÞò --sparse=auto. ÅðéëÝîôå\n"
+"--sparse=always ãéá ôç äçìéïõñãßá áñáéþí áñ÷åßùí ÐÑÏÏÑÉÓÌÏÕ ïðüôå ôï áñ÷åßï\n"
+"ÐÇÃÇ ðåñéÝ÷åé áñêåôÜ ìåãÜëåò óåéñÝò áðü ìçäåíéêÜ bytes.\n"
+"Ìå --sparse=never áðïãïñåýåôå ôç äçìéïõñãßá áñáéþí áñ÷åßùí.\n"
+"\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+
+#: src/cp.c:216
+#, fuzzy
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+"Ìåôïíïìáóßá ôçò ÐÇÃÇÓ óå ÐÑÏÏÑÉÓÌÏ Þ ìåôáêßíçóç ÐÇÃÇÓ(ÙÍ) óôï ÊÁÔÁËÏÃÏ.\n"
+"\n"
+" --backup=[ÅËÅÃ×ÏÓ] äçìéïõñãßá áíôéãñÜöïõ áóöáëåßáò ãéá êÜèå "
+"áñ÷åßï\n"
+" ðñïïñéóìïý\n"
+" -b üðùò ôï --backup áëëÜ äåí áðáéôåß ðáñÜìåôñï\n"
+" -f, --force äéáãñáöÞ õðáñ÷üíôùí êáôáëüãùí, ÷ùñßò\n"
+" åðéâåâáßùóç\n"
+" -i, --interactive åðéâåâáßùóç ðñéí ôç äéáãñáöÞ\n"
+" --strip-trailing-slashes áöáßñåóç ÷áñáêôÞñùí êáèÝôùí óôï ôÝëïò\n"
+" ãñáììÞò áðü êÜèå ÐÇÃÇ\n"
+" -S, --suffix=ÊÁÔÁËÇÎÇ ðáñÜêáìøç ôçò óõíÞèçò êáôÜëçîçò áíôéãñÜöùí\n"
+" áóöáëåßáò\n"
+" --target-directory=ÊÁÔÁËÏÃÏÓ ìåôáêßíçóç üëùí ôùí ïñéóìÜôùí ÐÇÃÇÓ\n"
+" óôïí ÊÁÔÁËÏÃÏ\n"
+" -u, --update ìåôáöïñÜ ìüíï ôùí ðáëáéüôåñùí Þ åîïëïêëÞñïõ\n"
+" íÝùí áñ÷åßùí\n"
+" -v, --verbose åîÞãçóç ôïõ ôé óõìâáßíåé\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+"\n"
+
+#: src/cp.c:225
+#, fuzzy
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"ÁíôéãñáöÞ ôçò ÐÇÃÇò óôï ÐÑÏÏÑÉÓÌÏÓ Þ ðïëëáðëÝò ÐÇÃÇ(ÅÓ) óôï ÊÁÔÁËÏÃÏ.\n"
+"\n"
+" -a, --archive ôï ßäéï ìå -dpR\n"
+" --backup=[ÅËÅÃ×ÏÓ] äçìéïõñãßá áíôéãñÜöïõ áóöáëåßáò ãéá êÜèå "
+"áñ÷åßï\n"
+" ðñïïñéóìïý\n"
+" -b üðùò ôï --backup áëëÜ äåí áðáéôåß ðáñÜìåôñï\n"
+" -d, --no-dereference äéáôÞñçóç óõìâïëéêþí óõíäÝóìùí\n"
+" -f, --force äéáãñáöÞ õðáñ÷üíôùí ðñïïñéóìþí, ÷ùñßò\n"
+" åðéâåâáßùóç äéáãñáöÞò\n"
+" -i, --interactive áðáßôçóç äéáâåâáßùóçò äéáãñáöÞò ðñéí ôç\n"
+" äéáãñáöÞ ëüãù åðéêÜëõøçò\n"
+" -l, --link äçìéïõñãßá óõíäÝóìùí áíôß áíôéãñÜöùí\n"
+" -p, --preserve äéáôÞñçóç ÷áñáêôçñéóôéêþí ôùí áñ÷åßùí, áí\n"
+" åßíáé äõíáôüí\n"
+" -P, --parents ðñïóèÞêç äéáäñïìÞò ôçò ðçãÞò óôï ÊÁÔÁËÏÃÏÓ\n"
+" -r áíôéãñáöÞ áíáäñïìéêÜ, ôïõò ìç-êáôáëüãïõò óáí\n"
+" áñ÷åßá\n"
+" ÐÑÏÅÉÄÏÐÏÉÇÓÇ: êÜíôå ÷ñÞóç ôïõ -R üôáí\n"
+" ðñüêåéôå íá áíôéãñÜøåôå åéäéêÜ áñ÷åßá üðùò\n"
+" FIFO Þ ôï /dev/zero\n"
+" --sparse=WHEN Ýëåã÷ïò ôçò äçìéïõñãßáò áñáéþí (sparse)\n"
+" áñ÷åßùí\n"
+" -R, --recursive áíôéãñáöÞ êáôáëüãùí áíáäñïìéêÜ\n"
+" --strip-trailing-slashes áðïìÜêñõíóç ïôéäÞðïôå êÜèåôùí ðïõ Ýðïíôáé "
+"áðü\n"
+" êÜèå üñéóìá ÐÇÃÇÓ\n"
+" -s, --symbolic-link äçìéïõñãßá óõìâïëéêþí óõíäÝóìùí áíôß\n"
+" áíôéãñÜöùí\n"
+" -S, --suffix=ÊÁÔÁËÇÎÇ ðáñÜêáìøç ôçò óõíçèéóìÝíçò êáôÜëçîçò ôùí\n"
+" áíôéãñÜöùí áóöáëåßáò\n"
+" --target-directory=ÊÁÔÁËÏÃÏÓ ìåôáêßíçóå üëá ôá ïñßóìáôá ãéá ÐÇÃÇ óôï\n"
+" ÊÁÔÁËÏÃÏÓ\n"
+" -u, --update áíôéãñáöÞ ìüíï üôáí ôï áñ÷åßï ÐÇÃÇ åßíáé\n"
+" íåþôåñï áðü ôï áñ÷åßï ÐÑÏÏÑÉÓÌÏÓ Þ üôáí\n"
+" ôï áñ÷åßï ðñïïñéóìüò äåí õðÜñ÷åé\n"
+" -v, --verbose åîÞãçóç ôïõ ôß ãßíåôáé\n"
+" -x, --one-file-system ðáñáìïíÞ óôï ôñÝ÷ïí óýóôçìá áñ÷åßùí\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+"\n"
+"¸î ïñéóìïý, ôá áñáßá (sparse) áñ÷åßá ÐÇÃÇÓ áíáãùñßæïíôáé ìå Ýíá ü÷é ôüóï\n"
+"êáëü åõñåóôéêü áëãüñéèìï êáé ôï áíôßóôïé÷ï áñ÷åßï ÐÑÏÏÑÉÓÌÏÕ ãßíåôáé áñáéü\n"
+"åðßóçò. ÁõôÞ åßíáé ç óõìðåñéöïñÜ ôçò åðéëïãÞò --sparse=auto. ÅðéëÝîôå\n"
+"--sparse=always ãéá ôç äçìéïõñãßá áñáéþí áñ÷åßùí ÐÑÏÏÑÉÓÌÏÕ ïðüôå ôï áñ÷åßï\n"
+"ÐÇÃÇ ðåñéÝ÷åé áñêåôÜ ìåãÜëåò óåéñÝò áðü ìçäåíéêÜ bytes.\n"
+"Ìå --sparse=never áðïãïñåýåôå ôç äçìéïõñãßá áñáéþí áñ÷åßùí.\n"
+"\n"
+
+#: src/cp.c:234
+#, fuzzy
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Ç êáôÜëçîç ôùí áíôéãñÜöùí áóöáëåßáò åßíáé ôï `~', åêôüò áí ôåèåß ìå ôï\n"
+"--suffix Þ ôï SIMPLE_BACKUP_SUFFIX.\n"
+"Ï Ýëåã÷ïò Ýêäïóçò ìðïñåß íá ôåèåß ìå ôçí åðéëïãÞ --backup Þ ìÝóù ôçò\n"
+"ìåôáâëçôÞò ðåñéâÜëëïíôïò VERSION_CONTROL. Ïé äõíáôÝò ôéìÝò åßíáé:\n"
+"\n"
+" none,off íá ìç äçìéïõñãïýíôáé áíôßãñáäá áóöáëåßáò (áêüìá êáé\n"
+" áí äßíåôáé --backup)\n"
+" numbered, t äçìéïõñãßá áñéèìçìÝíùí áíôéãñÜöùí áóöáëåßáò\n"
+" existing, nil áñéèìçìÝíùí, áí õðÜñ÷ïõí áñéèìçìÝíá áíôßãñáöá, "
+"äéáöïñåôéêÜ\n"
+" áðëÜ áíôßãñáöá\n"
+" simple, never ðÜíôá äçìéïõñãßá áðëþí áíôéãñÜöùí\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+#, fuzzy
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+"Ç êáôÜëçîç ôùí áíôéãñÜöùí áóöáëåßáò åßíáé ôï `~', åêôüò áí ôåèåß ìå ôï\n"
+"--suffix Þ ôï SIMPLE_BACKUP_SUFFIX.\n"
+"Ï Ýëåã÷ïò Ýêäïóçò ìðïñåß íá ôåèåß ìå ôçí åðéëïãÞ --backup Þ ìÝóù ôçò\n"
+"ìåôáâëçôÞò ðåñéâÜëëïíôïò VERSION_CONTROL. Ïé äõíáôÝò ôéìÝò åßíáé:\n"
+"\n"
+" none,off íá ìç äçìéïõñãïýíôáé áíôßãñáäá áóöáëåßáò (áêüìá êáé\n"
+" áí äßíåôáé --backup)\n"
+" numbered, t äçìéïõñãßá áñéèìçìÝíùí áíôéãñÜöùí áóöáëåßáò\n"
+" existing, nil áñéèìçìÝíùí, áí õðÜñ÷ïõí áñéèìçìÝíá áíôßãñáöá, "
+"äéáöïñåôéêÜ\n"
+" áðëÜ áíôßãñáöá\n"
+" simple, never ðÜíôá äçìéïõñãßá áðëþí áíôéãñÜöùí\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Óáí åéäéêÞ ðåñßðôùóç, ç cp äçìéïõñãåß áíôßãñáöá ôçò ÐÇÃÇÓ üôáí ïé åðéëïãÝò\n"
+"êáé ôá ÐÇÃÇ êáé ÐÑÏÏÑÉÓÌÏÓ Ý÷ïõí ôï ßäéï üíïìá, ãéá Ýíá õðÜñ÷ïí, êáíïíéêü "
+"áñ÷åßï.\n"
+
+#: src/cp.c:314
+#, fuzzy, c-format
+msgid "failed to preserve times for %s"
+msgstr "äéáôÞñçóç ùñþí óôï %s"
+
+#
+#: src/cp.c:340
+#, fuzzy, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "áäõíáìßá áëëáãÞò éäéïêôçóßáò óôï %s"
+
+#
+#: src/cp.c:456
+#, fuzzy, c-format
+msgid "cannot make directory %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/cp.c:505 src/cp.c:524
+#, fuzzy, c-format
+msgid "%s exists but is not a directory"
+msgstr "ôï `%s' õðÜñ÷åé Þäç Üëëá äåí åßíáé êáôÜëïãïò"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, fuzzy, c-format
+msgid "accessing %s"
+msgstr "äéáãñáöÞ êáôáëüãïõ %s\n"
+
+#
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, fuzzy, c-format
+msgid "missing file operand"
+msgstr "ðñïóðÝñáóìá ïñßóìáôïò"
+
+#
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, fuzzy, c-format
+msgid "missing destination file operand after %s"
+msgstr "Ý÷åé ðáñáëçöèåß ç ëßóôá ìå ôá ðåäßá"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+
+#
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, fuzzy, c-format
+msgid "target %s is not a directory"
+msgstr "ôï `%s' õðÜñ÷åé Þäç Üëëá äåí åßíáé êáôÜëïãïò"
+
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr ""
+"üôáí äéáôçñïýíôáé ôá ìïíïðÜôéá, ôï ôåëåõôáßï üñéóìá ðñÝðåé íá åßíáé êáôÜëïãïò"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr ""
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, fuzzy, c-format
+msgid "multiple target directories specified"
+msgstr "\\%c: Ìç Ýãêõñç äéáöõãÞ."
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "áäõíáìßá äçìéïõñãßáò óèåíáñþí(hard) êáé óõìâïëéêþí óõíäÝóìùí"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "åßäïò áíôéãñÜöïõ áóöÜëåéáò"
+
+#
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "ç åßóïäïò åîáöáíßóôçêå"
+
+#
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: áñéèìüò ãñáììÞò Ýîù áðü ôá üñéá"
+
+#
+#: src/csplit.c:709
+#, fuzzy, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: `%s': áñéèìüò ãñáììÞò Ýîù áðü ôá üñéá"
+
+#
+#: src/csplit.c:712 src/csplit.c:761
+#, fuzzy, c-format
+msgid " on repetition %s\n"
+msgstr " óôçí åðáíÜëçøç %d\n"
+
+#
+#: src/csplit.c:755
+#, fuzzy, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: `%s': äåí âñÝèçêå ôáßñéáóìá"
+
+#
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "óöÜëìá óôçí áíåýñåóç ìÝóù êáíïíéêÞò Ýêöñáóçò"
+
+#
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "óöÜëìá åããñáöÞò ãéá ôï `%s'"
+
+#
+#: src/csplit.c:1060
+#, fuzzy, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: áíáìåíüôáí áêÝñáéïò ìåôÜ ôï `%c'"
+
+#
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: ôï `}' áðáéôåßôáé üôáí äçëþíïíôáé ïé åðáíáëÞøåéò"
+
+#
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: áðáéôåßôáé áêÝñáéïò ìåôáîý ôùí `{' êáé `}'"
+
+#
+#: src/csplit.c:1113
+#, fuzzy, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: ï ôåëåóôÞò ôåñìáôéóìïý `%c' Ý÷åé ðáñáëçöèåß"
+
+#
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: ìç Ýãêõñç êáíïíéêÞ Ýêöñáóç: %s"
+
+#
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: ìç Ýãêõñç ìïñöÞ"
+
+#
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: ï áñéèìüò ãñáììÞò ðñÝðåé íá åßíáé ìåãáëýôåñïò áðü ôï ìçäÝí"
+
+#
+#: src/csplit.c:1172
+#, fuzzy, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr ""
+"ï áñéèìüò ãñáììÞò `%s' åßíáé ìéêñüôåñïò áðü ôïí ðñïçãïýìåíï áñéèìü ãñáììÞò, %"
+"s"
+
+#
+#: src/csplit.c:1178
+#, fuzzy, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr ""
+"ðñïåéäïðïßçóç: ï áñéèìüò ãñáììÞò `%s' åßíáé ßäéïò ìå áõôüí ôçò ðñïçãïýìåíçò "
+"ãñáììÞò"
+
+#
+#: src/csplit.c:1231
+#, fuzzy, c-format
+msgid "invalid format width"
+msgstr "ìç Ýãêõñï üñéóìá %s ãéá %s"
+
+#
+#: src/csplit.c:1252
+#, fuzzy, c-format
+msgid "invalid format precision"
+msgstr "ìç Ýãêõñï åßäïò áëöáñéèìçôéêïý `%s'"
+
+#
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "Ý÷åé ðáñáëçöèåß ï äçëùôÞò ìåôáôñïðÞò óôçí êáôÜëçîç"
+
+#
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "ìç Ýãêõñïò äçëùôÞò ìåôáôñïðÞò óôçí êáôÜëçîç: %c"
+
+#
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "ìç Ýãêõñïò äçëùôÞò ìåôáôñïðÞò óôçí êáôÜëçîç: \\%.3o"
+
+#
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "ðÜñá ðïëëÝò äçëþóåéò ìåôáôñïðÞò óôçí êáôÜëçîç"
+
+#
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "Ý÷åé ðáñáëçöèåß ç äÞëùóç ìåôáôñïðÞò %% óôçí êáôÜëçîç"
+
+#
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: ìç Ýãêõñïò áñéèìüò"
+
+#
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... ÁÑ×ÅÉÏ ÌÏÑÖÇ...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/csplit.c:1486
+#, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+
+#
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+
+#
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+
+#
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+
+#
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÅÓ]... [ÁÑ×ÅÉÏ]...\n"
+
+#
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+
+#
+#: src/cut.c:199
+#, fuzzy
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+"Áíáäßðëùóç ãñáììþí åéóüäïõ óå êÜèå ÁÑ×ÅÉÏ (êáíïíéêÞ åßóïäïò åî ïñéóìïý),\n"
+"ãñÜöïíôáò óôçí êáíïíéêÞ Ýîïäï.\n"
+"\n"
+" -b, --bytes ìÝôñçóç bytes áíôß óôçëþí\n"
+" -s, --spaces áíáäßðëùóç óå äéáóôÞìáôá ìüíï\n"
+" -w, --width=ÐËÁÔÏÓ ÷ñÞóç ÐËÁÔÏÓ óôÞëåò áíôß ãéá 80\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+
+#
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "ìç Ýãêõñï byte Þ ëßóôá ðåäßùí"
+
+#
+#: src/cut.c:469
+#, fuzzy, c-format
+msgid "byte offset %s is too large"
+msgstr "ôï %s åßíáé ðïëý ìåãÜëï"
+
+#
+#: src/cut.c:472
+#, fuzzy, c-format
+msgid "field number %s is too large"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "ìüíï Ýíá åßäïò ëßóôáò ìðïñåß íá ïñéóôåß"
+
+#
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "ï äéá÷ùñéóôÞò ðñÝðåé íá åßíáé Ýíáò ìüíï ÷áñáêôÞñáò"
+
+#
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "ðñÝðåé íá ïñßóåôå ëßóôá áðü bytes, ÷áñáêôÞñåò Þ ðåäßá"
+
+#
+#: src/cut.c:831
+#, fuzzy
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "Ýíáò äéá÷ùñéóôÞò ìðïñåß íá ïñéóôåß ìüíï üôáí ëåéôïõñãïýìå ìå ðåäßá"
+
+#
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"ç áðüêñõøç ãñáììþí ðïõ äåí Ý÷ïõí äéá÷ùñéóôÝò Ý÷åé íüçìá\n"
+"\tìüíï üôáí ëåéôïõñãïýìå ìå ðåäßá"
+
+#
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "Ý÷åé ðáñáëçöèåß ç ëßóôá ìå ôá ðåäßá"
+
+#
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "Ý÷åé ðáñáëçöèåß ç ëßóôá ìå ôéò èÝóåéò"
+
+#: src/date.c:132
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"×ñÞóç: %s [ÅÐÉËÏÃÇ]... [+ÌÏÑÖÇ]\n"
+" Þ: %s [ÅÐÉËÏÃÇ] [ÌÌÇÇùùëë[[ÕÕ]××][.ää]]\n"
+
+#: src/date.c:137
+#, fuzzy
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"Åêôõðþíç ôçí çìåñïìçíßá óôç äïóìÝíç ìïñöÞ, Þ èÝôåé ôçí þñá ôïõ óõóôÞìáôïò.\n"
+"\n"
+" -d, --date=ÌÏÑÖÇ Åêôõðþíåé ôçí þñá ðïõ êáèïñßæåôáé áðï ôçí ÌÏÑÖÇ,\n"
+" åêôüò ôçò äåóìåõìÝíçò ëÝîçò `now'\n"
+" -f, --file=ÁÑ×ÅÉÏ Ïìïéá ìå ôçí --date ãéá êÜèå ãñáììç ôïõ áñ÷åßïõ\n"
+" ðïõ ðåñéÝ÷åé ôéò çìåñïìçíßåò\n"
+" -r, --reference=ÁÑ×ÅÉÏ Åêôõðþíåé ôçí ôåëåõôáßá çìåñïìçíßá ôñïðïðïßçóçò\n"
+" ôïõ áñ÷åßïõ\n"
+" -R, --rfc-822 Åêôõðþíåé ôçí çìåñïìçíßá óýìöùíá ìå ôï RFC-822\n"
+" -s, --set=ÌÏÑÖÇ ÈÝôåé ôçí çìåñïìçíßá ðïõ ðåñéãñÜöåôáé áðï ôçí\n"
+" ÌÏÑÖÇ\n"
+" -u, --utc, --universal Åêôõðþíåé Þ èÝôåé ôçí ðáãêüóìéá þñá(UTC)\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò ãéá ôçí Ýêäïóç êáé "
+"ôåñìáôßæåé\n"
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "êáíïíéêÞ åßóïäïò"
+
+#
+#: src/date.c:297 src/date.c:517
+#, fuzzy, c-format
+msgid "invalid date %s"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#: src/date.c:408 src/date.c:442
+#, fuzzy, c-format
+msgid "multiple output formats specified"
+msgstr "\\%c: Ìç Ýãêõñç äéáöõãÞ."
+
+#
+#: src/date.c:420
+#, fuzzy, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "ïé åðéëïãÝò --string êáé --check åßíáé áìïéâáßùò áðïêëåéüìåíåò"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr ""
+"Ïé åðéëïãÝò ãéá íá åêôõðùèåß êáé íá ïñéóôåß ç þñá äåí ìðïñïýí íá\n"
+"÷ñçóéìïðïéçèïýí ðáñÜëëçëá."
+
+#: src/date.c:448
+#, fuzzy, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"Ç ðáñÜìåôñïò `%s' äåí îåêéíÜ ìå ôï ðñüèåìá `+' üðùò èá Ýðñåðå.\n"
+"Ïôáí ÷ñçóéìïðïéÞôå ìéá åðéëïãÞ ãéá íá êáèïñßóåôå ôçí(ôéò) çìåñïìçíßá(åò), \n"
+"êÜèå ðáñÜìåôñïò ðïõ äåí åßíáé åðéëïãÞ ðñÝðåé íá åßíáé äéáìïñöùìÝíç Ýôóé\n"
+"þóôå íá îåêéíÜåé ìå ôï `+'."
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "Äåí ìðïñåß íá ôåèåß ç çìåñïìçíßá."
+
+#
+#: src/date.c:548 src/du.c:425
+#, fuzzy, c-format
+msgid "time %s is out of range"
+msgstr "%s: áñéèìüò ãñáììÞò Ýîù áðü ôá üñéá"
+
+#
+#: src/dd.c:404
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "ôï `%s' õðÜñ÷åé Þäç Üëëá äåí åßíáé êáôÜëïãïò"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "ìçäåíéóìÝíç åããñáöÞ êáé ãñÜøéìï ðÜíù óå áõôÞ (truncated)"
+msgstr[1] "ìçäåíéóìÝíç åããñáöÞ êáé ãñÜøéìï ðÜíù óå áõôÞ (truncated)"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr ""
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ""
+
+#
+#: src/dd.c:604
+#, fuzzy, c-format
+msgid "closing input file %s"
+msgstr "äçìéïõñãßá áñ÷åßïõ `%s'\n"
+
+#: src/dd.c:611
+#, fuzzy, c-format
+msgid "closing output file %s"
+msgstr "äéáãñáöÞ êáôáëüãïõ %s\n"
+
+#
+#: src/dd.c:791 src/dd.c:1455
+#, fuzzy, c-format
+msgid "writing to %s"
+msgstr "óöÜëìá åããñáöÞò %s"
+
+#
+#: src/dd.c:886
+#, fuzzy, c-format
+msgid "unrecognized operand %s"
+msgstr "áðáñÜäåêôç åðéëïãÞ `-%c'"
+
+#
+#: src/dd.c:897
+#, fuzzy, c-format
+msgid "invalid conversion: %s"
+msgstr "ìç Ýãêõñï åßäïò áëöáñéèìçôéêïý `%s'"
+
+#
+#: src/dd.c:900
+#, fuzzy, c-format
+msgid "invalid input flag: %s"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#
+#: src/dd.c:903
+#, fuzzy, c-format
+msgid "invalid output flag: %s"
+msgstr "ìç Ýãêõñç ïìÜäá"
+
+#
+#: src/dd.c:906
+#, fuzzy, c-format
+msgid "invalid status flag: %s"
+msgstr "ìç Ýãêõñï üñéóìá %s ãéá %s"
+
+#
+#: src/dd.c:942
+#, fuzzy, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "áðáñÜäåêôç åðéëïãÞ `-%c'"
+
+#
+#: src/dd.c:948
+#, fuzzy, c-format
+msgid "invalid number %s"
+msgstr "ìç Ýãêõñïò áñéèìüò"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#
+#: src/dd.c:973
+#, fuzzy, c-format
+msgid "cannot combine block and unblock"
+msgstr "äåí åßíáé äõíáôü íá ðáñáëçöèåß ÷ñÞóôçò êáé ïìÜäá"
+
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "äåí åßíáé äõíáôü íá äçìéïõñãçèåß ôï %s `%s' óôï `%s'"
+
+#
+#: src/dd.c:977
+#, fuzzy, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+
+#: src/dd.c:1180 src/dd.c:1237
+#, fuzzy, c-format
+msgid "%s: cannot seek"
+msgstr "%s: äå ìðïñåß íá äéáãñáöåß"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+#: src/dd.c:1229
+#, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr ""
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr ""
+
+#: src/dd.c:1376
+#, fuzzy, c-format
+msgid "setting flags for %s"
+msgstr "äéáôÞñçóç ùñþí óôï %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr ""
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr ""
+
+#
+#: src/dd.c:1670 src/dd.c:1699
+#, fuzzy, c-format
+msgid "opening %s"
+msgstr "óöÜëìá áíÜãíùóçò %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, fuzzy, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "äéáãñáöÞ êáôáëüãïõ %s\n"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr ""
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr ""
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr ""
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr ""
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr ""
+
+#: src/df.c:165
+#, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr ""
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr ""
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr ""
+
+#
+#: src/df.c:468
+#, fuzzy, c-format
+msgid "cannot get current directory"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, fuzzy, c-format
+msgid "cannot change to directory %s"
+msgstr "áäýíáôç ç áëëáãÞ óôï êáôÜëïãï %s"
+
+#
+#: src/df.c:498
+#, fuzzy, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+
+#: src/df.c:749
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr ""
+
+#: src/df.c:900
+#, fuzzy, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "ôï óýóôçìá áñ÷åßùí `%s' åßíáé êáé åðåëåãìÝíï êáé áðïêëåéþìåíï"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Ðñïåéäïðïßçóç:"
+
+#: src/df.c:943
+#, fuzzy, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%sáäõíáìßá áíÜãíùóçò ðßíáêá ðñïóáñôçìÝíùí óõóôÞìáôïò áñ÷åßùí"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#
+#: src/dircolors.c:102
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÅÓ]... [ÁÑ×ÅÉÏ]...\n"
+
+#: src/dircolors.c:103
+#, fuzzy
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"ÅìöÜíéóç åíôïëþí ãéá íá ôåèïýí óôç ìåôáâëçôÞ ðåñéâÜëëïíôïò LS_COLORS.\n"
+"\n"
+"ÅðéëïãÞ ìïñöÞò åîüäïõ:\n"
+" -b, --sh, --bourne-shell åìöÜíéóç êþäéêá Bourne shell ãéá íá ôåèåß óôçí "
+"LS_COLORS\n"
+" -c, --csh, --c-shell åìöÜíéóç êþäéêá C shell ãéá íá ôåèåß óôçí "
+"LS_COLORS\n"
+" -p, --print-database åìöÜíéóç åî ïñéóìïý ñýèìéóçò\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+"\n"
+"Áí ïñßæåôáé ÁÑ×ÅÉÏ, áíáãéãíþóêåôáé ãéá íá äéåõêñéíéóôåß ðïéá ÷ñþìáôá íá "
+"÷ñçóéìïðïéçèïýí ãéá \n"
+"êÜèå åßäïò áñ÷åßïõ êáé êáôÜëçîçò. ÄéáöïñåôéêÜ, ÷ñçóéìïðïéÞôáé ìéá Ýôïéìç "
+"âÜóç.\n"
+"Ãéá ëåðôïìÝñéåò ãéá ôç ìïñöÞ ôùí áñ÷åßùí áõôþí, ôñÝîôå `dircolors --print-"
+"database'.\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+
+#
+#: src/dircolors.c:291
+#, fuzzy, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s: ìç Ýãêõñïò áñéèìüò äåõôåñïëÝðôùí"
+
+#
+#: src/dircolors.c:363
+#, fuzzy, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s: ìç áíáãíùñßóéìç åðéëïãÞ `%c%s'\n"
+
+# src/dircolors.c:372
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<åóùôåñéêü>"
+
+#: src/dircolors.c:445
+#, fuzzy, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"Ïé åðéëïãÝò ãéá ðåñéôïëïãßá êáé 'stty-readable' ôõðïé åîüäïõ åßíáé\n"
+"áðïêëåéóôéêÜ áìïéâáßåò."
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "äåí õðÜñ÷åé ìåôáâëçôÞ ðåñéâÜëëïíôïò SHELL, êáé äåí äüèçêå åßäïò öëïéïý"
+
+#
+#: src/dirname.c:48
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#: src/dirname.c:53
+#, fuzzy
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"Åêôõðþíåé ôï ÏÍÏÌÁ áöáéñþíôáò ôï áêïëïõèïýìåíï /óôïé÷åßï. ÅÜí ôï üíïìá äåí\n"
+"ðåñéÝ÷åé `/' ôï óýìâïëï `.' äçëþíåé ôïí ôñÝ÷ùí êáôÜëïãï\n"
+"\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#
+#: src/du.c:279 src/wc.c:108
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÁÑ×ÅÉÏ]...\n"
+" Þ: %s --traditional [ÁÑ×ÅÉÏ] [[+]ÈÅÓÇ [[+]×ÁÑÁÊÔÇÑÉÓÔÉÊÏ]]\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "óýíïëï"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+
+#
+#: src/du.c:780
+#, fuzzy, c-format
+msgid "invalid maximum depth %s"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr ""
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr ""
+"äåí åßíáé äõíáôü íá äåé÷ôåß ðåñßëçøç êáé íá åìöáíéóôïýí üëåò ïé êáôá÷ùñßóåéò"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "ðñïåéäïðïßçóç: ç ðåñßëçøç åßíáé üìïéï ìå --max-depth=0"
+
+#: src/du.c:884
+#, fuzzy, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "ðñïåéäïðïßçóç: ç ðåñßëçøç Ýñ÷åôáé óå áíôßöáóç ìå ôï --max-depth=%d"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+#: src/du.c:960 src/wc.c:662
+#, fuzzy, c-format
+msgid "cannot read file names from %s"
+msgstr "äåí åßíáé äõíáôü íá äçìéïõñãçèåß ôï %s `%s' óôï `%s'"
+
+#
+#: src/du.c:1000 src/du.c:1003
+#, fuzzy
+msgid "invalid zero-length file name"
+msgstr "ìç Ýãêõñç ïìÜäá"
+
+#
+#: src/echo.c:64
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÅÓ]... [ÁÑ×ÅÉÏ]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#
+#: src/env.c:118
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÅÓ]... [ÁÑ×ÅÉÏ]...\n"
+
+#: src/env.c:121
+#, fuzzy
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Ôßèåôáé óå êÜèå ÌÅÔÁÂËÇÔÇ ôïõ ðåñéâÜëëïíôïò ç ÔÉÌÇ åêôåëåßôáé ç ÅÍÔÏËÇ.\n"
+"\n"
+" -i, --ignore-environment Åêêßíçóç ìå Üäåéï ðåñéâÜëëïí\n"
+" -u, --unset=VARIABLE Áöáéñåßôáé ç ÌÅÔÁÂËÇÔÇ áðï ôï ðåñéâáëëïí\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+"\n"
+"Åíá áðëü - õðïíïåßôáé -i. Åáí äåí õðÜñ÷åé ÅÍÔÏËÇ, åêôõðþíåôáé ôï\n"
+"ðåñéâáëëïí ðïõ äçìéïõñãÞèçêå.\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+
+#
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+
+#
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+
+#
+#: src/expand.c:180 src/unexpand.c:199
+#, fuzzy, c-format
+msgid "tab stop is too large %s"
+msgstr "ôï %s åßíáé ðïëý ìåãÜëï"
+
+#
+#: src/expand.c:188 src/unexpand.c:207
+#, fuzzy, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "ôï ìÝãåèïò óôçëïãíþìïíá ðåñéÝ÷åé ìç Ýãêõñï ÷áñáêôÞñá"
+
+#
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "ôï ìÝãåèïò óôçëïãíþìïíá äå ìðïñåß íá åßíáé 0"
+
+#
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "ôá ìåãÝèç ôïõ óôçëïãíþìïíá ðñÝðåé íá åßíáé êáôÜ áýîïõóá óåéñÜ"
+
+#
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, fuzzy, c-format
+msgid "input line is too long"
+msgstr "ôï áñ÷åßï ìçäåíßóôçêå"
+
+#
+#: src/expr.c:102
+#, fuzzy, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"ÐñïóÝ÷ôå ïôé ðïëëïß ôåëåóôÝò(operators) ÷ñåéÜæïíôáé ÷áñáêôÞñåò äéáöõãÞò Þ\n"
+"åéóáãùãéêÜ ãéá ôá êåëýöç (shells).\n"
+"Ïé óõãêñßóåéò åßíáé áñéèìçôéêÝò åÜí êáé ïé äõï ÐÁÑÁÌåôñïé åßíáé áñéèìïß,\n"
+"Þ áëëéþò ëåîéêïãñáöéêïß.\n"
+"Ôï ôáßñéáóìá ìå ðñüôõðï åðéóôñÝöåé ôçí áëõóßäá ðïõ âñÝèçêå ìåôáîý\n"
+"\\( êáé \\) Þ êåíü. Åáí \\( êáé \\) äåí ÷ñçóéìïðïéÞèçêáí, ôïôå åðéóôñÝöåé\n"
+"ôïí áñéèìü ôùí ÷áñáêôÞñùí ðïõ ôáßñéáîáí Þ 0.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#
+#: src/expr.c:175
+#, fuzzy, c-format
+msgid "syntax error"
+msgstr "êáíïíéêü óöÜëìá"
+
+#
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "óöÜëìá óôçí áíåýñåóç ìÝóù êáíïíéêÞò Ýêöñáóçò"
+
+#
+#: src/expr.c:653 src/expr.c:711
+#, fuzzy, c-format
+msgid "non-numeric argument"
+msgstr "üñéï ïñßóìáôïò"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr ""
+
+#
+#: src/factor.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+
+#: src/factor.c:85
+#, fuzzy
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"Åêôõðþíåé ôïõò ðñþôïõò ðáñÜãïíôåò êÜèå ÁÑÉÈÌÏÕ.\n"
+"\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+"\n"
+"Åêôõðþíåé ôïõò ðñþôïõò ðáñÜãïíôåò üëùí ôùí êáèïñéóìÝíùí áêÝñáéùí ÁÑÉÈÌÙÍ.\n"
+"ÅÜí äåí Ý÷ïõí äïèåß ðáñÜìåôñïé óôçí ãñáììÞ åíôïëþí, ôïôå åéóÜãïíôáé áðï ôçí\n"
+"ôõðéêÞ åßóïäï.\n"
+
+#
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "ôï %s åßíáé ðïëý ìåãÜëï"
+
+#: src/factor.c:158
+#, fuzzy, c-format
+msgid "%s is not a valid positive integer"
+msgstr "%s' äåí åßíáé éó÷ýùí èåôéêüò áêÝñáéïò."
+
+#
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "×ñÞóç: %s [-ØÇÖÉÁ] [ÅÐÉËÏÃÇ]... [ÁÑ×ÅÉÏ]...\n"
+
+#
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+
+#
+#: src/fmt.c:282
+#, fuzzy
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+"Ìïñöïðïßçóç îáíÜ êÜèå ðáñáãñÜöïõ óôï ÁÑ×ÅÉÏ(Á), ãñÜöïíôáò óôçí êáíïíéêÞ "
+"Ýîïäï.\n"
+"Áí êáíÝíá ÁÑ×ÅÉÏ äåí Ý÷åé ïñéóôåß Þ ôï ÁÑ×ÅÉÏ åßíáé ôï `-', áíÜãíùóç áðü "
+"êáíïíéêÞ åßóïäï.\n"
+"\n"
+"Õðï÷ñåùôéêÜ ïñßóìáôá óôéò ìáêñÝò åðéëïãÝò åßíáé õðï÷ñåùôéêÜ ãéá óýíôïìåò "
+"åðéëïãÝò åðßóçò.\n"
+" -c, --crown-margin äéáôÞñçóå ôçí åóï÷Þ ôùí äýï ðñþôùí ãñáììþí\n"
+" -p, --prefix=ÁËÖÁÑÉÈ óõíäýáóå ìüíï ãñáììÝò ìå ÁËÖÁÑÉÈÌçôéêü ùò "
+"ðñüèåìá\n"
+" -s, --split-only ÷þñéóå óôá äýï ôéò ìáêñÝò ãñáììÝò áëëÜ ÷ùñßò "
+"ãÝìéóìá îáíÜ\n"
+" -t, --tagged-paragraph ç åóï÷Þ ôçò ðñþôçò ãñáììÞò íá åßíáé äéáöïñåôéêÞ "
+"áðü ôç äåýôåñç\n"
+" -u, --uniform-spacing Ýíá äéÜóôçìá ìåôáîý ëÝîåùí, äýï ìåôÜ áðü "
+"ðñïôÜóåéò\n"
+" -w, --width=ÁÑÉÈÌÏÓ ìÝãéóôï ðëÜôïò ãñáììÞò (åî ïñéóìïý 75 óôÞëåò)\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+"\n"
+"Óôï -wÁÑÉÈÌÏÓ, ôï ãñÜììá `w' ìðïñåß íá ðáñáëçöèåß.\n"
+
+#
+#: src/fmt.c:289
+#, fuzzy
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+"Ìïñöïðïßçóç îáíÜ êÜèå ðáñáãñÜöïõ óôï ÁÑ×ÅÉÏ(Á), ãñÜöïíôáò óôçí êáíïíéêÞ "
+"Ýîïäï.\n"
+"Áí êáíÝíá ÁÑ×ÅÉÏ äåí Ý÷åé ïñéóôåß Þ ôï ÁÑ×ÅÉÏ åßíáé ôï `-', áíÜãíùóç áðü "
+"êáíïíéêÞ åßóïäï.\n"
+"\n"
+"Õðï÷ñåùôéêÜ ïñßóìáôá óôéò ìáêñÝò åðéëïãÝò åßíáé õðï÷ñåùôéêÜ ãéá óýíôïìåò "
+"åðéëïãÝò åðßóçò.\n"
+" -c, --crown-margin äéáôÞñçóå ôçí åóï÷Þ ôùí äýï ðñþôùí ãñáììþí\n"
+" -p, --prefix=ÁËÖÁÑÉÈ óõíäýáóå ìüíï ãñáììÝò ìå ÁËÖÁÑÉÈÌçôéêü ùò "
+"ðñüèåìá\n"
+" -s, --split-only ÷þñéóå óôá äýï ôéò ìáêñÝò ãñáììÝò áëëÜ ÷ùñßò "
+"ãÝìéóìá îáíÜ\n"
+" -t, --tagged-paragraph ç åóï÷Þ ôçò ðñþôçò ãñáììÞò íá åßíáé äéáöïñåôéêÞ "
+"áðü ôç äåýôåñç\n"
+" -u, --uniform-spacing Ýíá äéÜóôçìá ìåôáîý ëÝîåùí, äýï ìåôÜ áðü "
+"ðñïôÜóåéò\n"
+" -w, --width=ÁÑÉÈÌÏÓ ìÝãéóôï ðëÜôïò ãñáììÞò (åî ïñéóìïý 75 óôÞëåò)\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+"\n"
+"Óôï -wÁÑÉÈÌÏÓ, ôï ãñÜììá `w' ìðïñåß íá ðáñáëçöèåß.\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+
+#
+#: src/fmt.c:400
+#, fuzzy, c-format
+msgid "invalid width: %s"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+
+#
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+
+#
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "ìç Ýãêõñïò áñéèìüò áðü óôÞëåò: `%s'"
+
+#
+#: src/head.c:113
+#, fuzzy
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"ÅìöÜíéóç ôùí 10 ðñþôùí ãñáììþí áðü êÜèå ÁÑ×ÅÉÏ óôçí êáíïíéêÞ Ýîïäï.\n"
+"Ìå ðåñéóóüôåñá áðü Ýíá ÁÑ×ÅÉÏ, íá ðñïçãçèåß åðéóÝëéäï ìå ôï üíïìá ôïõ "
+"áñ÷åßïõ.\n"
+"×ùñßò ÁÑ×ÅÉÏ Þ üôáí ôï ÁÑ×ÅÉÏ åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ åßóïäï.\n"
+"\n"
+" -c, --bytes=ÌÅÃÅÈÏÓ åìöÜíéóç ôùí ðñþôùí ÌÅÃÅÈÏÓ bytes\n"
+" -n, --lines=ÁÑÉÈÌÏÓ åìöÜíéóç ôùí ðñþôùí ÁÑÉÈÌÏÓ ãñáììþí áíôß ôùí "
+"ðñþôùí 10\n"
+" -q, --quiet, --silent íá ìçí ôõðþíïíôáé åðéóÝëéäá ìå ôá ïíüìáôá "
+"áñ÷åßùí\n"
+" -v, --verbose íá ôõðþíïíôáé ðÜíôá åðéóÝëéäá ìå ôá ïíüìáôá "
+"áñ÷åßùí\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+"\n"
+"Ôï ÌÅÃÅÈÏÓ ìðïñåß íá Ý÷åé êáôÜëçîç ìå ðïëëáðëáóéáóôÞ: b ãéá 512, k ãéá 1K, m "
+"ãéá 1 Meg.\n"
+"Áí ÷ñçóéìïðïéåßôáé ôï -VALUE óáí ðñþôç ÅÐÉËÏÃÇ, áíÜãíùóå -c ÔÉÌÇ üôáí\n"
+"Ýíáò áðü ôïõò ðïëëáðëáóéáóôÝò bkm áêïëïõèåß óõíåíùìÝíïò, äéáöïñåôéêÜ "
+"áíÜãíùóå -n ÔÉÌÇ\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+
+#
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+
+#
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "óöÜëìá áíÜãíùóçò %s"
+
+#
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "óöÜëìá åããñáöÞò %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr ""
+
+#
+#: src/head.c:230 src/head.c:1046
+#, fuzzy, c-format
+msgid "%s: number of bytes is too large"
+msgstr "ìç Ýãêõñïò áñéèìüò áðü bytes ðñïò óýãêñéóç: `%s'"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr ""
+
+#
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, fuzzy, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "áäõíáìßá åêôÝëåóçò ioctl óôï `%s'"
+
+#
+#: src/head.c:793
+#, fuzzy, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: ôï %s åßíáé ôüóï ìåãÜëï ðïõ äå ìðïñåß íá áíáðáñáóôáèåß"
+
+#
+#: src/head.c:881
+msgid "number of lines"
+msgstr "áñéèìüò ãñáììþí"
+
+#
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "áñéèìüò áðü bytes"
+
+#
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "ìç Ýãêõñïò áñéèìüò áðü ãñáììÝò"
+
+#
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "ìç Ýãêõñïò áñéèìüò áðü bytes"
+
+#
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "%s: ìç Ýãêõñç åðéëïãÞ -- %c\n"
+
+#: src/hostid.c:48
+#, fuzzy, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Åêôõðþíåé ôï üíïìá ôïõ ôñÝ÷ïíôïò ÷ñÞóôç.\n"
+"\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+
+#: src/hostname.c:65
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"×ñÞóç: %s [ÏÍÏÌÁ]\n"
+" Þ: %s ÅÐÉËÏÃÇ\n"
+"Åêôõðþíåé ôï üíïìá(hostname) ôïõ óõóôÞìáôïò.\n"
+"\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+
+#
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "áäõíáìßá åêôÝëåóçò ioctl óôï `%s'"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+"Äåí ìðïñåß íá ôåèåß ôï üíïìá óõóôÞìáôïò. Ëåßðåé áõôÞ ç ëåéôïõñãßá áðï ôï\n"
+"óýóôçìá"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "Äåí ìðïñåß íá êáèïñéóôåß ôï üíïìá ôïõ óõóôÞìáôïò"
+
+#
+#: src/id.c:78
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... ÓÕÍÏËÏ1 [ÓÕÍÏËÏ2]\n"
+
+#: src/id.c:79
+#, fuzzy
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Åêôýðùíåé ðëçñïöïñßåò ðïõ áöïñïýí åíá ×ÑÇÓÔÇ, Þ ôïí ôñÝ÷ïíôá ÷ñÞóôç.\n"
+"\n"
+" -a Áãíïåßôáé, ãéá óõìâáôïôçôá ìå ðáëéüôåñåò åêäüóåéò\n"
+" -g, --group Åêôõðþíåé ìüíï ôéò ôáõôüôçôåò ïìÜäùí\n"
+" -G, --groups Åêôõðþíåé ìüíï ôéò óõìðëçñùìáôéêÝò ïìÜäåò\n"
+" -n, --name Åêôõðþíåé üíïìá áíôß ãéá áñéèìü, ãéá ôçí -ugG\n"
+" -r, --real Åêôõðþíåé ôçí ðñáãìáôéêÞ ôáõôüôçôá (real id) áíôß ôçò\n"
+" éó÷ýïõóáò ôáõôüôçôáò ÷ñÞóôç (effective id), ãéá ôçí -ugG\n"
+" -u, --user Åêôõðþíåé ìüíï ôçí ðñáãìáôéêÞ ôáõôüôçôá\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+"\n"
+"×ùñßò êáìéÜ ÅÐÉËÏÃÇ, åêôõðþíåé ìéá ÷ñÞóéìç óåéñÜ ðëçñïöïñéþí.\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+
+#
+#: src/id.c:152
+#, fuzzy, c-format
+msgid "cannot print only user and only group"
+msgstr "äåí åßíáé äõíáôü íá ðáñáëçöèåß ÷ñÞóôçò êáé ïìÜäá"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr ""
+"Äåí ìðïñåß íá åêôõðùèïýí ìüíï ïíüìáôá Þ ðñáãìáôéêÞ ôáõôüôçôá(read ID) óå\n"
+"ôõðéêÞ ìïñöÞ"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Äåí õðÜñ÷åé ôÝôïéïò ÷ñÞóôçò."
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "%s: äåí ìðïñåé íá âñåèåß üíïìá ÷ñÞóôç ãéá ôï 'UID' %u\n"
+
+#
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "äåí åßíáé äõíáôü íá ðáñáëçöèåß ÷ñÞóôçò êáé ïìÜäá"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "Äåí ìðïñåß íá ðáñèåß ï óõìðëçñùìáôéêüò êáôÜëïãïò ïìÜäùí."
+
+#: src/id.c:375
+msgid " groups="
+msgstr " ïìÜäåò="
+
+#: src/install.c:318
+#, fuzzy, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr ""
+"Ç áëõóßäá ìïñöÞò äåí ðñÝðåé íá êáèïñßæåôáé üôáí åêôõðþíïíôáé\n"
+"áëõóßäåò ìå ßóá ìÞêç."
+
+#: src/install.c:321
+#, fuzzy, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr ""
+"Ç áëõóßäá ìïñöÞò äåí ðñÝðåé íá êáèïñßæåôáé üôáí åêôõðþíïíôáé\n"
+"áëõóßäåò ìå ßóá ìÞêç."
+
+#
+#: src/install.c:369 src/mkdir.c:193
+#, fuzzy, c-format
+msgid "invalid mode %s"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#
+#: src/install.c:520
+#, fuzzy, c-format
+msgid "cannot change ownership of %s"
+msgstr "áäõíáìßá áëëáãÞò éäéïêôçóßáò óôï %s"
+
+#
+#: src/install.c:541
+#, fuzzy, c-format
+msgid "cannot set time stamps for %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/install.c:562
+#, fuzzy, c-format
+msgid "fork system call failed"
+msgstr "åéäéêü áñ÷åßï ìðëïê"
+
+#: src/install.c:566
+#, fuzzy, c-format
+msgid "cannot run strip"
+msgstr "Äåí åßíáé äõíáôüí íá åêôåëåóôåß ôï %s"
+
+#
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "óöÜëìá åããñáöÞò %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#
+#: src/install.c:593
+#, fuzzy, c-format
+msgid "invalid user %s"
+msgstr "ìç Ýãêõñïò ÷ñÞóôçò"
+
+#
+#: src/install.c:628
+#, fuzzy, c-format
+msgid "creating directory %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#: src/install.c:651
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"×ñÞóç: %s [ÅÐÉËÏÃÇ]... ÔÅËÅÕÔÁÉÏÓ\n"
+" Þ: %s [ÅÐÉËÏÃÇ]... ÐÑÙÔÏÓ ÔÅËÅÕÔÁÉÏÓ\n"
+" Þ: %s [ÅÐÉËÏÃÇ]... ÐÑÙÔÏÓ ÁÕÎÇÓÇ ÔÅËÅÕÔÁÉÏÓ\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+
+#: src/install.c:681
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+#, fuzzy
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Ç êáôÜëçîç ôùí áíôéãñÜöùí áóöáëåßáò åßíáé ôï `~', åêôüò áí ôåèåß ìå ôï\n"
+"--suffix Þ ôï SIMPLE_BACKUP_SUFFIX.\n"
+"Ï Ýëåã÷ïò Ýêäïóçò ìðïñåß íá ôåèåß ìå ôçí åðéëïãÞ --backup Þ ìÝóù ôçò\n"
+"ìåôáâëçôÞò ðåñéâÜëëïíôïò VERSION_CONTROL. Ïé äõíáôÝò ôéìÝò åßíáé:\n"
+"\n"
+" none,off íá ìç äçìéïõñãïýíôáé áíôßãñáäá áóöáëåßáò (áêüìá êáé\n"
+" áí äßíåôáé --backup)\n"
+" numbered, t äçìéïõñãßá áñéèìçìÝíùí áíôéãñÜöùí áóöáëåßáò\n"
+" existing, nil áñéèìçìÝíùí, áí õðÜñ÷ïõí áñéèìçìÝíá áíôßãñáöá, "
+"äéáöïñåôéêÜ\n"
+" áðëÜ áíôßãñáöá\n"
+" simple, never ðÜíôá äçìéïõñãßá áðëþí áíôéãñÜöùí\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+
+#
+#: src/join.c:153
+#, fuzzy
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+"Óýãêñéóç ôáîéíïìçìÝíùí áñ÷åßùí ÁÑÉÓÔÅѼ_ÁÑ×ÅºÏ êáé ÄÅÎɼ_ÁÑןÏ, áíÜ "
+"ãñáììÞ.\n"
+"\n"
+" -1 áðüêñõøç ìïíáäéêþí ãñáììþí óôï áñéóôåñü áñ÷åßï\n"
+" -2 áðüêñõøç ìïíáäéêþí ãñáììþí óôï äåîéü áñ÷åßï\n"
+" -3 áðüêñõøç ìïíáäéêþí ãñáììþí êáé óôá äýï áñ÷åßá\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+
+#
+#: src/join.c:617 src/join.c:812
+#, fuzzy, c-format
+msgid "invalid field number: %s"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "ìç Ýãêõñïò äçëùôÞò ðåäßïõ: `%s'"
+
+#
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "ìç Ýãêõñïò áñéèìüò áñ÷åßïõ óôç äÞëùóç ðåäßïõ: `%s'"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr ""
+
+#
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "ìç Ýãêõñç ôÜîç ÷áñáêôÞñùí `%s'"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr ""
+
+#
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "êáé ôá äýï áñ÷åßá äå ìðïñåß íá åßíáé ç êáíïíéêÞ åßóïäïò"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+
+#: src/kill.c:103
+#, fuzzy
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+"ÁíôéãñÜöåé ôçí ôõðéêÞ åßóïäï óå êÜèå ÁÑ×ÅÉÏ, êáé óôçí ôõðéêÞ Ýîïäï.\n"
+"\n"
+" -a, --append ÐñïóèÝôåé óôï ÁÑ×ÅÉÏ(á), ÷ùñßò íá ãñÜöåé\n"
+" ðÜíù áðï ôá õðÜñ÷ïíôá\n"
+" -i, --ignore-interrupts Áãíïåß óÞìáôá äéáêïðÞò\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+
+#
+#: src/kill.c:161
+#, fuzzy, c-format
+msgid "%s: invalid signal"
+msgstr "%s: ìç Ýãêõñïò ðåñéãñáöÝáò äéåñãáóßáò (PID)"
+
+#
+#: src/kill.c:266
+#, fuzzy, c-format
+msgid "%s: invalid process id"
+msgstr "%s: ìç Ýãêõñç ìïñöÞ"
+
+#
+#: src/kill.c:320
+#, fuzzy, c-format
+msgid "invalid option -- %c"
+msgstr "%s: ìç Ýãêõñç åðéëïãÞ -- %c\n"
+
+#: src/kill.c:329
+#, fuzzy, c-format
+msgid "%s: multiple signals specified"
+msgstr "\\%c: Ìç Ýãêõñç äéáöõãÞ."
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr ""
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr ""
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr ""
+
+#
+#: src/link.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+
+#
+#: src/link.c:95
+#, fuzzy, c-format
+msgid "cannot create link %s to %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+"%s: ðñïåéäïðïßçóç: ç äçìéïõñãßá óèåíáñïý óõíäÝóìïõ óå óõìâïëéêü,\n"
+"äåí åßíáé ìåôáöåñôÞ"
+
+#: src/ln.c:165
+#, fuzzy, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "Ôï `%s' äåí åßíáé êáôÜëïãïò."
+
+#
+#: src/ln.c:218
+#, fuzzy, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#: src/ln.c:223
+#, fuzzy, c-format
+msgid "%s: replace %s? "
+msgstr "%s: áíôéêáôÜóôáóç ôïõ `%s'; "
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "äçìéïõñãßá óõìâïëéêïý óõíäÝóìïõ `%s' óôï `%s'"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "äçìéïõñãßá óõìâïëéêïý óõíäÝóìïõ `%s' óôï `%s'"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "äçìéïõñãßá óèåíáñïý óõíäÝóìïõ `%s' óôï `%s'"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "äçìéïõñãßá óèåíáñïý óõíäÝóìïõ `%s' óôï `%s'"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "äçìéïõñãßá óèåíáñïý óõíäÝóìïõ `%s' óôï `%s'"
+
+#: src/ln.c:324
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"×ñÞóç: %s [ÅÐÉËÏÃÇ]... ÐÇÃÇ ÐÑÏÏÑÉÓÌÏÓ (1ç ìïñöÞ)\n"
+" Þ: %s [ÅÐÉËÏÃÇ]... ÐÇÃÇ... ÊÁÔÁËÏÃÏÓ (2ç ìïñöÞ)\n"
+" Þ: %s -d [ÅÐÉËÏÃÇ]... ÊÁÔÁËÏÃÏÓ... (3ç ìïñöÞ)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+
+#
+#: src/ln.c:484
+#, fuzzy, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "ôï `%s' õðÜñ÷åé Þäç Üëëá äåí åßíáé êáôÜëïãïò"
+
+#
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ] [ÁÑ×ÅÉÏ]...\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+
+#
+#: src/logname.c:89
+#, fuzzy, c-format
+msgid "no login name"
+msgstr "%s: ìç Ýãêõñïò áñéèìüò"
+
+#
+#: src/ls.c:684
+#, fuzzy
+msgid "%b %e %Y"
+msgstr "%b %e %H:%M %Y"
+
+#
+#: src/ls.c:692
+#, fuzzy
+msgid "%b %e %H:%M"
+msgstr "%b %e %H:%M %Y"
+
+#: src/ls.c:1453
+#, fuzzy, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "áãíïåßôáé ìç Ýãêõñï ðëÜôïò óôç ìåôáâëçôÞ ðåñéâÜëëïíôïò COLUMNS: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "áãíïåßôáé ìç Ýãêõñï ðëÜôïò óôç ìåôáâëçôÞ ðåñéâÜëëïíôïò COLUMNS: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr ""
+"áãíïåßôáé ìç Ýãêõñï ìÝãåèïò ïñéæüíôéïõ óôçëïèÝôç óôç ìåôáâëçôÞ ðåñéâÜëëïíôïò "
+"TABSIZE: %s"
+
+#
+#: src/ls.c:1630 src/ptx.c:2043
+#, fuzzy, c-format
+msgid "invalid line width: %s"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#
+#: src/ls.c:1704
+#, fuzzy, c-format
+msgid "invalid tab size: %s"
+msgstr "ìç Ýãêõñï åßäïò áëöáñéèìçôéêïý `%s'"
+
+#
+#: src/ls.c:1885
+#, fuzzy, c-format
+msgid "invalid time style format %s"
+msgstr "ìç Ýãêõñï üñéóìá %s ãéá %s"
+
+#
+#: src/ls.c:2229
+#, fuzzy, c-format
+msgid "unrecognized prefix: %s"
+msgstr "áðáñÜäåêôç åðéëïãÞ `-%c'"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr ""
+"ôéìÞ ðïõ äå ìðïñåß íá áíáãíùñéóôåß óôç ìåôáâëçôÞ ðåñéâÜëëïíôïò LS_COLORS"
+
+#
+#: src/ls.c:2329 src/pwd.c:155
+#, fuzzy, c-format
+msgid "cannot open directory %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/ls.c:2344
+#, fuzzy, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/ls.c:2400 src/pwd.c:223
+#, fuzzy, c-format
+msgid "reading directory %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/ls.c:2410
+#, fuzzy, c-format
+msgid "closing directory %s"
+msgstr "áäýíáôç ç áëëáãÞ óôï êáôÜëïãï %s"
+
+#: src/ls.c:2918
+#, fuzzy, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "äåí åßíáé äõíáôü íá äçìéïõñãçèåß ôï %s `%s' óôï `%s'"
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+
+#: src/ls.c:4360
+#, fuzzy
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -g (áãíïåßôáé)\n"
+" -G, --no-group íá ìçí åìöáíßæïíôáé ðëçñïöïñßåò ïìÜäáò\n"
+" -h, --human-readable åìöÜíéóç ìåãåèþí óå áíèñùðßíùò áíáãíþóéìç\n"
+" ìïñöÞ (ð.÷. 1Ê 234M 2G)\n"
+" -H, --si üðùò ðáñáðÜíù, áëëÜ ìå äõíÜìåéò ôïõ 1000 áíôß\n"
+" ôïõ 1024\n"
+" --indicator-style=ËÅÊÔÉÊÏ ðñïóèÞêç äåßêôç ËÅÊÔÉÊÏ óôéò êáôá÷ùñßóåéò\n"
+" ïíïìÜôùí:\n"
+" none (åî ïñéóìïý), classify (-F), file-type\n"
+" (-p)\n"
+" -i, --inode åìöÜíéóç äåßêôç êÜèå áñ÷åßïõ\n"
+" -I, --ignore=PATTERN íá ìçí åìöáíßæïíôáé áíáöåñüìåíåò êáôá÷ùñßóåéò \n"
+" ðïõ ôáéñßáæïõí óôï PATTERN ôïõ öëïéïý\n"
+" -k, --kilobytes üðùò --block-size=1024\n"
+" -l ÷ñÞóç ìáêñïóêåëïýò åßäïõò åìöÜíéóçò\n"
+" -L, --dereference åìöÜíéóç êáôá÷ùñßóåùí ðïõ äåß÷íïõí ïé\n"
+" óõìâïëéêïß óýíäåóìïé\n"
+" -m óõìðëÞñùóç ôïõ ðëÜôïõò ìå ëßóôá áðü\n"
+" êáôá÷ùñßóåéò äéá÷ùñéæüìåíùí ìå êüììá\n"
+" -n, --numeric-uid-gid åìöÜíéóç áñéèìçôéêþí UID êáé GID áíôß ãéá\n"
+" ïíüìáôá\n"
+" -N, --literal åìöÜíéóç áêáôÝñãáóôùí êáôá÷ùñßóåùí (ð.÷. íá "
+"ìçí\n"
+" ôõã÷Üíïõí\n"
+" åéäéêÞò åðåîåñãáóßáò ïé ÷áñáêôÞñåò åëÝã÷ïõ)\n"
+" -o ÷ñÞóç ìáêñïóêåëïýò åìöÜíéóçò ÷ùñßò ðëçñïöïñßåò\n"
+" ïìÜäáò\n"
+" -p, --file-type ðñïóèÞêç åíäåßîçò (Ýíá áðü /=@|) óôéò\n"
+" êáôá÷ùñßóåéò\n"
+" -q, --hide-control-chars åìöÜíéóç ôïõ ? áíôß ôùí ìç-åêôõðþóéìùí\n"
+" ÷áñáêôÞñùí\n"
+" --show-control-chars åìöÜíéóç ìç åêôõðþóéìùí ÷áñáêôÞñùí üðùò åßíáé\n"
+" (åî ïñéóìïý åêôüò áí ôï ðñüãñáììá åßíáé ôï\n"
+" ls êáé ç Ýîïäïò åßíáé ôï ôåñìáôéêü)\n"
+" -Q, --quote-name åìöÜíéóç êáôá÷ùñßóåùí ìÝóá óå äéðëÜ åéóáãùãéêÜ\n"
+" --quoting-style=ËÅÊÔÉÊÏ ÷ñÞóç ìïñöÞò ËÅÊÔÉÊÏ óôçí åìöÜíéóç ïíïìÜôùí\n"
+" êáôá÷ùñßóåùí:\n"
+" literal, shell, shell-always, c, escape\n"
+" -r, --reverse áíôßóôñïöç óåéñÜ óôçí ôáîéíüìçóç\n"
+" -R, --recursive åìöÜíéóç õðïêáôáëüãùí áíáäñïìéêÜ\n"
+" -s, --size åìöÜíéóç ìåãÝèïõò êÜèå áñ÷åßïõ, óå ìðëïê\n"
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#
+#: src/md5sum.c:150
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"×ñÞóç: %s [ÅÐÉËÏÃÇ] [ÁÑ×ÅÉÏ]\n"
+"ÅããñáöÞ ðëÞñïõò ôáîéíïìçìÝíçò ëßóôáò óå óõìöùíßá ìå ôç ìåñéêÞ ôáîéíüìçóç\n"
+"óôï ÁÑ×ÅÉÏ. ×ùñßò ÁÑ×ÅÉÏ, Þ üôáí ôï áñ÷åßï åßíáé ôï -, áíÜãíùóç áðü ôçí\n"
+"êáíïíéêÞ åßóïäï.\n"
+"\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+"\n"
+" -B, --binary ÷ñÞóç äõáäéêþí ãñáøéìÜôùí óôç óõóêåõÞ ôçò "
+"êïíóüëáò.\n"
+"\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+
+#
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+
+#
+#: src/md5sum.c:459
+#, fuzzy, c-format
+msgid "%s: too many checksum lines"
+msgstr ""
+"%s: äå âñÝèçêáí êáíïíéêÜ ìïñöïðïéçìÝíåò ãñáììÝò áèñïéóìÜôùí åëÝã÷ïõ MD5"
+
+#
+#: src/md5sum.c:481
+#, fuzzy, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %lu: åóöáëìÝíá ìïñöïðïéçìÝíç ãñáììÞ áèñïßóìáôïò åëÝã÷ïõ MD5"
+
+#
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: ÁÍÅÐÉÔÕ×ÅÓ Üíïéãìá Þ áíÜãíùóç\n"
+
+#
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "ÁÍÅÐÉÔÕ×ÅÓ"
+
+#
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "ÅÍÔÁÎÇ"
+
+#
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: óöÜëìá áíÜãíùóçò"
+
+#
+#: src/md5sum.c:553
+#, fuzzy, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr ""
+"%s: äå âñÝèçêáí êáíïíéêÜ ìïñöïðïéçìÝíåò ãñáììÝò áèñïéóìÜôùí åëÝã÷ïõ MD5"
+
+#
+#: src/md5sum.c:562
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] ""
+"ÐÑÏÅÉÄÏÐÏÉÇÓÇ: %d áðü %d áíáöåñüìåíá %s äåí Þôáí äõíáôü íá áíáãíùóôïýí"
+msgstr[1] ""
+"ÐÑÏÅÉÄÏÐÏÉÇÓÇ: %d áðü %d áíáöåñüìåíá %s äåí Þôáí äõíáôü íá áíáãíùóôïýí"
+
+#
+#: src/md5sum.c:574
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "ÐÑÏÅÉÄÏÐÏÉÇÓÇ: %d áðü %d õðïëüãéóáí óå %s ÄÅÍ ôáßñéáîáí"
+msgstr[1] "ÐÑÏÅÉÄÏÐÏÉÇÓÇ: %d áðü %d õðïëüãéóáí óå %s ÄÅÍ ôáßñéáîáí"
+
+#
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"ïé åðéëïãÝò --binary êáé --text äåí Ý÷ïõí óçìáóßá üôáí åðéâåâáéþíïíôáé "
+"áèñïßóìáôá åëÝã÷ïõ"
+
+#
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr ""
+"ç åðéëïãÞ --status Ý÷åé Ýííïéá ìüíï óôçí åðéâåâáßùóç áèñïéóìÜôùí åëÝã÷ïõ"
+
+#
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "ç åðéëïãÞ --warn Ý÷åé Ýííïéá ìüíï óôçí åðéâåâáßùóç áèñïéóìÜôùí åëÝã÷ïõ"
+
+#
+#: src/mkdir.c:59
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ] [ÁÑ×ÅÉÏ]...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+"Äçìéïõñãßá ÊÁÔÁËÏÃÏÕ(ÙÍ), áí äåí õðÜñ÷ïõí Þäç.\n"
+"\n"
+" -m, --mode=ÄÉÊÁÉÙÌÁÔÁ ïñéóìüò äéêáéùìÜôùí (üðùò óôç chmod), êáé ü÷é "
+"rwxrwxrwx - umask\n"
+" -p, --parents ÷ùñßò óöÜëìá üôáí ï êáôÜëïãïò õðÜñ÷åé, äçìéïõñãßá "
+"ãïíéêþí êáôáëüãùí\n"
+" üðïõ ÷ñåéÜæåôáé\n"
+" -v, --verbose åìöÜíéóç ìçíýìáôïò ãéá êÜèå êáôÜëïãï ðïõ äçìéïõñãåßôáé\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#: src/mkdir.c:168
+#, fuzzy, c-format
+msgid "created directory %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/mkfifo.c:54
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ] [ÁÑ×ÅÉÏ]...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+"Äçìéïõñãßá åðþíõìùí óùëçíþóåùí (FIFOs) ìå ôï äïèÝí ÏÍÏÌÁ(ÔÁ).\n"
+"\n"
+" -m, --mode=ÄÉÊÁÉÙÌÁ ïñéóìüò äéêáéùìÜôùí (üðùò óôç chmod), ü÷é a=rw - "
+"umask\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#: src/mkfifo.c:113 src/mknod.c:123
+#, fuzzy, c-format
+msgid "invalid mode"
+msgstr "ìç Ýãêõñïò áñéèìüò"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#
+#: src/mknod.c:55
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... ÓÕÍÏËÏ1 [ÓÕÍÏËÏ2]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+
+#: src/mknod.c:76
+#, fuzzy
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"Äçìéïõñãßá åéäéêïý áñ÷åßïõ ÏÍÏÌÁ ôïõ äïèÝíôïò ÅÉÄÏÕÓ.\n"
+"\n"
+" -m, --mode=ÄÉÊÁÉÙÌÁ ïñéóìüò äéêáéùìÜôùí (üðùò óôç chmod), ü÷é a=rw - "
+"umask\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+"\n"
+"MAJOR MINOR äåí åðéôñÝðïíôáé ãéá ÅÉÄÏÓ p, äéáöïñåôéêÜ åßíáé õðï÷ñåùôéêÜ.\n"
+"Ôï ÅÉÄÏÓ ìðïñåß íá åßíáé: \n"
+"\n"
+" b äçìéïõñãßá åéäéêïý ìðëïê (ìå åíôáìßåõóç) áñ÷åßïõ\n"
+" c, u äçìéïõñãßá åéäéêïý áñ÷åßïõ ÷áñáêôÞñùí (÷ùñßò åíôáìßåõóç)\n"
+" p äçìéïõñãßá áñ÷åßïõ FIFO\n"
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"üôáí äçìéïõñãïýíôáé åéäéêÜ áñ÷åßá ìðëïê, ïé major êáé minor\n"
+"áñéèìïß óõóêåõÞò ðñÝðåé íá ïñßæïíôáé"
+
+#
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "ìç Ýãêõñïò áñ÷éêüò áñéèìüò ãñáììÞò: `%s'"
+
+#
+#: src/mknod.c:167
+#, fuzzy, c-format
+msgid "block special files not supported"
+msgstr "åéäéêü áñ÷åßï ìðëïê"
+
+#
+#: src/mknod.c:176
+#, fuzzy, c-format
+msgid "character special files not supported"
+msgstr "åéäéêü áñ÷åßï ÷áñáêôÞñùí"
+
+#
+#: src/mknod.c:192
+#, fuzzy, c-format
+msgid "invalid major device number %s"
+msgstr "ìç Ýãêõñïò áñ÷éêüò áñéèìüò ãñáììÞò: `%s'"
+
+#
+#: src/mknod.c:197
+#, fuzzy, c-format
+msgid "invalid minor device number %s"
+msgstr "ìç Ýãêõñïò áñ÷éêüò áñéèìüò ãñáììÞò: `%s'"
+
+#
+#: src/mknod.c:202
+#, fuzzy, c-format
+msgid "invalid device %s %s"
+msgstr "ìç Ýãêõñï üñéóìá %s ãéá %s"
+
+#
+#: src/mknod.c:216
+#, fuzzy, c-format
+msgid "invalid device type %s"
+msgstr "ìç Ýãêõñï üñéóìá %s ãéá %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+
+#: src/mv.c:308
+#, fuzzy
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+"Ìåôïíïìáóßá ôçò ÐÇÃÇÓ óå ÐÑÏÏÑÉÓÌÏ Þ ìåôáêßíçóç ÐÇÃÇÓ(ÙÍ) óôï ÊÁÔÁËÏÃÏ.\n"
+"\n"
+" --backup=[ÅËÅÃ×ÏÓ] äçìéïõñãßá áíôéãñÜöïõ áóöáëåßáò ãéá êÜèå "
+"áñ÷åßï\n"
+" ðñïïñéóìïý\n"
+" -b üðùò ôï --backup áëëÜ äåí áðáéôåß ðáñÜìåôñï\n"
+" -f, --force äéáãñáöÞ õðáñ÷üíôùí êáôáëüãùí, ÷ùñßò\n"
+" åðéâåâáßùóç\n"
+" -i, --interactive åðéâåâáßùóç ðñéí ôç äéáãñáöÞ\n"
+" --strip-trailing-slashes áöáßñåóç ÷áñáêôÞñùí êáèÝôùí óôï ôÝëïò\n"
+" ãñáììÞò áðü êÜèå ÐÇÃÇ\n"
+" -S, --suffix=ÊÁÔÁËÇÎÇ ðáñÜêáìøç ôçò óõíÞèçò êáôÜëçîçò áíôéãñÜöùí\n"
+" áóöáëåßáò\n"
+" --target-directory=ÊÁÔÁËÏÃÏÓ ìåôáêßíçóç üëùí ôùí ïñéóìÜôùí ÐÇÃÇÓ\n"
+" óôïí ÊÁÔÁËÏÃÏ\n"
+" -u, --update ìåôáöïñÜ ìüíï ôùí ðáëáéüôåñùí Þ åîïëïêëÞñïõ\n"
+" íÝùí áñ÷åßùí\n"
+" -v, --verbose åîÞãçóç ôïõ ôé óõìâáßíåé\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+"\n"
+
+#
+#: src/nice.c:76
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ] [ÁÑ×ÅÉÏ]...\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+#
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "ìç Ýãêõñï üñéóìá %s ãéá %s"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "Ìéá åíôïëÞ ðñÝðåé íá äßíåôáé ìå ìéá ðñïóáñìïãÞ (ðñïôåñáéüôçôáò)."
+
+#
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "Äåí ìðïñåß íá ôåèåß ç çìåñïìçíßá."
+
+#
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#
+#: src/nl.c:189
+#, fuzzy
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+"ÅããñáöÞ êÜèå áñ÷åßïõ óôçí êáíïíéêÞ Ýîïäï, ôåëåõôáßá ãñáììÞ ðñþôá.\n"
+"×ùñßò ÁÑ×ÅÉÏ, Þ üôáí ôï áñ÷åßï åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ "
+"åßóïäï.\n"
+"\n"
+" -b, --before ôïðïèÝôçóç ôïõ äéá÷ùñéóôÞ ðñéí áíôß ãéá ìåôÜ\n"
+" -r, --regex ìåôÜöñáóç ôïõ äéá÷ùñéóôÞ ùò êáíïíéêÞ Ýêöñáóç\n"
+" -s, --separator=ÁËÖÁÑÉÈÌ ÷ñÞóç ÁËÖÁÑÉÈÌçôéêïý ùò äéá÷ùñéóôÞò áíôß ôïõ "
+"÷áñáêôÞñá íÝáò ãñáììÞò\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+
+#
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+
+#
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+
+#: src/nl.c:214
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+
+#
+#: src/nl.c:281
+#, fuzzy, c-format
+msgid "line number overflow"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#
+#: src/nl.c:479
+#, fuzzy, c-format
+msgid "invalid header numbering style: %s"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#
+#: src/nl.c:487
+#, fuzzy, c-format
+msgid "invalid body numbering style: %s"
+msgstr "ìç Ýãêõñïò áñéèìüò"
+
+#
+#: src/nl.c:495
+#, fuzzy, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "ìç Ýãêõñïò áñéèìüò áñ÷åßïõ óôç äÞëùóç ðåäßïõ: `%s'"
+
+#
+#: src/nl.c:504
+#, fuzzy, c-format
+msgid "invalid starting line number: %s"
+msgstr "ìç Ýãêõñïò áñ÷éêüò áñéèìüò ãñáììÞò: `%s'"
+
+#
+#: src/nl.c:513
+#, fuzzy, c-format
+msgid "invalid line number increment: %s"
+msgstr "ìç Ýãêõñç áýîçóç óôïí áñéèìü åíôïëÞò: `%s'"
+
+#
+#: src/nl.c:525
+#, fuzzy, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "ìç Ýãêõñïò áñéèìüò áðü êåíÝò ãñáììÝò: `%s'"
+
+#
+#: src/nl.c:539
+#, fuzzy, c-format
+msgid "invalid line number field width: %s"
+msgstr "ìç Ýãêõñïò ìÞêïò ðåäßïõ áñéèìïý ãñáììÞò: `%s'"
+
+#
+#: src/nl.c:558
+#, fuzzy, c-format
+msgid "invalid line numbering format: %s"
+msgstr "ìç Ýãêõñç áýîçóç óôïí áñéèìü åíôïëÞò: `%s'"
+
+#
+#: src/nohup.c:57
+#, fuzzy, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+
+#
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "ðÜñá ðïëëÜ ïñßóìáôá"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, fuzzy, c-format
+msgid "failed to open %s"
+msgstr "äéáôÞñçóç ùñþí óôï %s"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr ""
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr ""
+
+#
+#: src/od.c:307
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÁÑ×ÅÉÏ]...\n"
+" Þ: %s --traditional [ÁÑ×ÅÉÏ] [[+]ÈÅÓÇ [[+]×ÁÑÁÊÔÇÑÉÓÔÉÊÏ]]\n"
+
+#
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+
+#
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:353
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+
+#
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+
+#
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+
+#
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "ìç Ýãêõñï åßäïò áëöáñéèìçôéêïý `%s'"
+
+#
+#: src/od.c:693
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"ìç Ýãêõñï åßäïò áëöáñéèìçôéêïý `%s';\n"
+"áõôü ôï óýóôçìá äåí ðáñÝ÷åé ôïí åóùôåñéêü ôýðï äåäïìÝíùí %lu-byte"
+
+#
+#: src/od.c:812
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"ìç Ýãêõñï åßäïò áëöáñéèìçôéêïý `%s';\n"
+"áõôü ôï óýóôçìá äåí ðáñÝ÷åé ôïí åóùôåñéêü ôýðï äåäïìÝíùí êéíçôÞò "
+"õðïäéáóôïëÞò %lu-byte"
+
+#
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "ìç Ýãêõñïò ÷áñáêôÞñáò `%c' óôï ôýðï áëöáñéèìçôéêïý `%s'"
+
+#
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "áäõíáìßá ðñïóðÝñáóçò ìåôÜ ôï ôÝëïò ôçò óõíäõáóìÝíçò åéóüäïõ"
+
+#
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+
+#
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "ðñïóðÝñáóìá ïñßóìáôïò"
+
+#
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "üñéï ïñßóìáôïò"
+
+#
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "åëÜ÷éóôï ìÝãåèïò áëöáñéèìçôéêïý"
+
+#
+#: src/od.c:1747
+msgid "width specification"
+msgstr "äÞëùóç ðëÜôïõò"
+
+#
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "êáíÝíá åßäïò äå ìðïñåß íá äçëùèåß üôáí ôõðþíïíôáé áëöáñéèìçôéêÜ"
+
+#
+#: src/od.c:1844
+#, fuzzy
+msgid "Compatibility mode supports at most one file."
+msgstr "ç êáôÜóôáóç óõìâáôüôçôáò õðïóôçñßæåé ôï ðïëý ôñßá ïñßóìáôá"
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr ""
+
+#
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr ""
+
+#
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: fmt=\"%s\" ðëÜôïò=%d\n"
+
+#
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "ç êáíïíéêÞ åßóïäïò åßíáé êëåéóìÝíç"
+
+#
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+
+#
+#: src/pathchk.c:99
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÅÓ]... [ÁÑ×ÅÉÏ]...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "ìç Ýãêõñïò ÷áñáêôÞñáò `%c' óôï ôýðï áëöáñéèìçôéêïý `%s'"
+
+#
+#: src/pathchk.c:282
+#, fuzzy, c-format
+msgid "empty file name"
+msgstr "êáíïíéêü êåíü áñ÷åßï"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, fuzzy, c-format
+msgid "Login name: "
+msgstr "%s: Äåí õðÜñ÷åé üíïìá ÷ñÞóôç (login name).\n"
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr ""
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr ""
+
+#
+#: src/pinky.c:353
+#, fuzzy, c-format
+msgid "Directory: "
+msgstr "êáôÜëïãïò"
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr ""
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr ""
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr ""
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr ""
+
+#: src/pinky.c:423
+#, fuzzy
+msgid "Name"
+msgstr "ðì"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr ""
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr ""
+
+#: src/pinky.c:427
+msgid "When"
+msgstr ""
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr ""
+
+#
+#: src/pinky.c:510
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÅÓ]... [ÁÑ×ÅÉÏ]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+
+#
+#: src/pinky.c:612
+#, fuzzy, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr "äå ìðïñïýí íá äçëþíïíôáé áñ÷åßá üôáí ãßíåôáé ÷ñÞóç ôïõ --string"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr ""
+
+#
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "`--pages=ÐÑÙÔÇ_ÓÅËÉÄÁ[:ÔÅËÅÕÔÁÉÁ_ÓÅËÉÄÁ]' áðïõóßá ïñßóìáôïò"
+
+#
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "ìç Ýãêõñï åßäïò áëöáñéèìçôéêïý `%s'"
+
+#
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "`-l ÌÇÊÏÓ_ÓÅËÉÄÁÓ' ìç Ýãêõñïò áñéèìüò ãñáììþí: `%s'"
+
+#
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "`-N ÁÑÉÈÌÏÓ' ìç Ýãêõñïò áñéèìüò áñ÷éêÞò óåëßäáò: `%s'"
+
+#
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "`-o ÐÅÑÉÈÙÑÉÏ' ìç Ýãêõñç èÝóç ãñáììÞò: `%s'"
+
+#
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-w ÐËÁÔÏÓ_ÓÅËÉÄÁÓ' ìç Ýãêõñïò áñéèìüò ÷áñáêôÞñùí : `%s'"
+
+#
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-W ÐËÁÔÏÓ_ÓÅËÉÄÁÓ' ìç Ýãêõñïò áñéèìüò ÷áñáêôÞñùí : `%s'"
+
+#
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "Äåí åßíáé äõíáôü íá äçëùèåß áñéèìüò óôçëþí óôçí ðáñÜëëçëç åêôýðùóç."
+
+#
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "Äåí åßíáé äõíáôü íá äçëùèåß óåéñéáêÞ êáé ðáñÜëëçëç åêôýðùóç."
+
+#
+#: src/pr.c:1202
+#, fuzzy, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "`-%c' åðéðëÝïí ÷áñáêôÞñåò Þ ìç Ýãêõñïò áñéèìüò óôï üñéóìá: `%s'"
+
+#
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "ôï ðëÜôïò óåëßäáò åßíáé ðïëý óôåíü"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+#
+#: src/pr.c:2406
+#, fuzzy, c-format
+msgid "Page number overflow"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+
+#
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+
+#
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+
+#
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+
+#
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+
+#
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+
+#
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+
+#
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+
+#
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr ""
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+
+#
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+
+#
+#: src/pr.c:2862
+#, fuzzy
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+"Óýãêñéóç ôáîéíïìçìÝíùí áñ÷åßùí ÁÑÉÓÔÅѼ_ÁÑ×ÅºÏ êáé ÄÅÎɼ_ÁÑןÏ, áíÜ "
+"ãñáììÞ.\n"
+"\n"
+" -1 áðüêñõøç ìïíáäéêþí ãñáììþí óôï áñéóôåñü áñ÷åßï\n"
+" -2 áðüêñõøç ìïíáäéêþí ãñáììþí óôï äåîéü áñ÷åßï\n"
+" -3 áðüêñõøç ìïíáäéêþí ãñáììþí êáé óôá äýï áñ÷åßá\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/printenv.c:61
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"ÅÜí êáìéÜ ÌÅÔÁÂËÇÔÇ ôïõ ðåñéâÜëïíôïò äåí êáèïñéóôåß, ôéò åêôõðþíåé üëåò.\n"
+"\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+"ÐÑÏÓÏ×Ç: %s: ïé ÷áñáêôÞñåò ðïõ áêïëïõèïýóáí ôïí ÷áñáêôÞñá óôáèåñÜ áãíïÞèçêáí."
+
+#
+#: src/printf.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: áíáìåíüôáí áñéèìçôéêÞ ôéìÞ."
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: ç ôéìÞ äåí Ý÷åé ðëÞñùò ìåôáôñáðåß."
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "Ëåßðåé ï äåêáåîáäéêüò áñéèìüò óôïí ÷áñáêôÞñá äéáöõãÞò."
+
+#
+#: src/printf.c:289
+#, fuzzy, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "ìç Ýãêõñç ôÜîç ÷áñáêôÞñùí `%s'"
+
+#
+#: src/printf.c:550
+#, fuzzy, c-format
+msgid "invalid field width: %s"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#
+#: src/printf.c:585
+#, fuzzy, c-format
+msgid "invalid precision: %s"
+msgstr "ìç Ýãêõñï åßäïò áëöáñéèìçôéêïý `%s'"
+
+#
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "ìç Ýãêõñç äÞëùóç ðåäßïõ `%s'"
+
+#: src/printf.c:683
+#, fuzzy, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "ÐÑÏÓÏ×Ç: ïé õðåñâïëéêÝò ðáñÜìåôñïé áãíïÞèçêáí."
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr ""
+
+#
+#: src/ptx.c:422
+#, fuzzy, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (ãéá êáíïíéêÞ Ýêöñáóç `%s')"
+
+#
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ]... (÷ùñßò -G)\n"
+" Þ: %s -G [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+
+#
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+
+#
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+
+#
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+
+#
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+
+#
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr ""
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+
+#: src/pwd.c:160
+#, fuzzy, c-format
+msgid "failed to chdir to %s"
+msgstr "áðïôõ÷ßá áëëáãÞò ôçò ïìÜäáò áðü %s óå %s\n"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "äéáôÞñçóç ùñþí óôï %s"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#
+#: src/pwd.c:306
+#, fuzzy, c-format
+msgid "ignoring non-option arguments"
+msgstr "ðÜñá ðïëëÜ ïñßóìáôá ðïõ äåí Ý÷ïõí åðéëïãÝò"
+
+#
+#: src/readlink.c:67
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÅÓ]... [ÁÑ×ÅÉÏ]...\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+
+#
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "áäýíáôç ç áëëáãÞ óôï êáôÜëïãï %s"
+
+#
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr ""
+
+#
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, fuzzy, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"ÐÑÏÅÉÄÏÐÏÉÇÓÇ: ÊõêëéêÞ äïìÞ êáôáëüãïõ.\n"
+"Áõôü ó÷åäüí óßãïõñá óçìáßíåé üôé Ý÷åôå Ýíá êáôåóôñáììÝíï óýóôçìá áñ÷åßùí.\n"
+"ÃÍÙÓÔÏÐÏÉÇÓÔÅ ÔÏ ÓÔÏ ÄÉÁ×ÅÉÑÉÓÔÇ ÓÕÓÔÇÌÁÔÏÓ.\n"
+"Ïé ðáñáêÜôù äýï êáôÜëïãïé Ý÷ïõí ôçí ßäéá ôéìÞ i-êüìâïõ:\n"
+
+#
+#: src/remove.c:854
+#, fuzzy, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/remove.c:855
+#, fuzzy, c-format
+msgid "%s: descend into directory %s? "
+msgstr "áäýíáôç ç áëëáãÞ óôï êáôÜëïãï %s"
+
+#: src/remove.c:865
+#, fuzzy, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: äéáãñáöÞ ðñïóôáôåõìÝíïõ áðü åããñáöÞ êáôáëüãïõ `%s'; "
+
+#: src/remove.c:866
+#, fuzzy, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: äéáãñáöÞ ôïõ `%s'; "
+
+#
+#: src/remove.c:925 src/remove.c:1429
+#, fuzzy, c-format
+msgid "removed directory: %s\n"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "áäýíáôç ç áëëáãÞ óôï êáôÜëïãï %s"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#
+#: src/remove.c:1434 src/remove.c:1484
+#, fuzzy, c-format
+msgid "cannot remove directory %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/remove.c:1450
+#, fuzzy, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "áäýíáôç ç áëëáãÞ óôï êáôÜëïãï %s"
+
+#
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/remove.c:1558
+#, fuzzy, c-format
+msgid "cannot restore current working directory"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#
+#: src/rm.c:160 src/touch.c:233
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÅÓ]... [ÁÑ×ÅÉÏ]...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: äéáãñáöÞ ôïõ `%s'; "
+
+#
+#: src/rmdir.c:110 src/rmdir.c:208
+#, fuzzy, c-format
+msgid "removing directory, %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/rmdir.c:140
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÅÓ]... [ÁÑ×ÅÉÏ]...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+
+#: src/rmdir.c:148
+#, fuzzy
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+"ÄéáãñáöÞ ÊÁÔÁËÏÃÏÕ(ÙÍ), áí åßíáé Üäåéïò(ïé).\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" áãíüçóå êÜèå ìåìïíùìÝíç áðïôõ÷ßá üôáí ï êáôÜëïãïò\n"
+" äåí åßíáé Üäåéïò\n"
+" -p, --parents äéáãñáöÞ ÊÁÔÁËÏÃÙÍ, Ýðåéôá ðñïóðÜèåéá äéáãñáöÞò êÜèå\n"
+" êáôáëüãïõ ôçò äéáäñïìÞò. Ð.÷., `rmdir -p a/b/c' \n"
+" åßíáé ðáñüìïéï ìå `rmdir a/b/c a/b a'.\n"
+" -v, --verbose åìöÜíéóç äéáãíùóôéêïý ãéá êÜèå êáôÜëïãï ðïõ åðåîåñãÜæåôáé\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#: src/seq.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ]... (÷ùñßò -G)\n"
+" Þ: %s -G [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"Åêôõðþíåé ôïõò áñéèìïýò áðï ôïí ÐÑÙÔÏ ìÝ÷ñé ôïí ÔÅËÅÕÔÁÉÏ,\n"
+"áõîÜíïíôáò êáôá ÁÕÎÇÓÇ.\n"
+"\n"
+" -f, --format ÄÉÁÌÏÑÖÙÓÇ ÷ñçóéìïðïéåß ôç ÄÉÁÌÏÑÖÙÓÇ ôçò printf(3)\n"
+" (åî'ïñéóìïý: %%g)\n"
+" -s, --separator ÁËÕÓÉÄÁ\n"
+" ÷ñçóéìïðïéåß ôçí ÁËÕÓÉÄÁ ãéá íá ÷ùñßóåé ôïõò \n"
+" áñéèìïýò (åî'ïñéóìïý: \\n)\n"
+" -w, --equal-width åîéóþíåé ôï ìÞêïò ðñïóèÝôïíôáò ìçäåíéêÜ\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+"\n"
+"ÅÜí ÐÑÙÔÏÓ Þ ÁÕÎÇÓÇ ðáñáëåéöèïõí, èåùñïýíôáé 1 åî'ïñéóìïý.\n"
+"ÐÑÙÔÏÓ, ÁÕÎÇÓÇ, ÔÅËÅÕÔÁÉÏÓ åðåîåñãÜæïíôáé óáí ôéìÝò êéíçôÞò õðïäéáóôïëÞò.\n"
+"Ç ÁÕÎÇÓÇ ðñÝðåé íá åßíáé èåôéêÞ åáí ï\n"
+"ÐÑÙÔÏÓ åßíáé ìéêñüôåñïò áðï ôïí ÔÅËÅÕÔÁÉÏ êáé áñíçôéêüò óôçí Üëëç "
+"ðåñßðôùóç.\n"
+"Ïôáí äßíåôáé, ç ðáñÜìåôñïò ÄÉÁÌÏÑÖÙÓÇ ðñÝðåé íá ðåñéÝ÷åé áêñéâþò ìßá áðü\n"
+"ôéò äéáìïñöþóåéò ôçò printf ãéá êéíçôÞò õðïäéáóôïëÞò áñéèìü %%e, %%f, or %%"
+"g.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#
+#: src/seq.c:134
+#, fuzzy, c-format
+msgid "invalid floating point argument: %s"
+msgstr "ìç Ýãêõñïò áñ÷éêüò áñéèìüò ãñáììÞò: `%s'"
+
+#
+#: src/seq.c:342
+#, fuzzy, c-format
+msgid "invalid format string: %s"
+msgstr "ìç Ýãêõñï åßäïò áëöáñéèìçôéêïý `%s'"
+
+#
+#: src/seq.c:364
+#, fuzzy, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr "êáíÝíá åßäïò äå ìðïñåß íá äçëùèåß üôáí ôõðþíïíôáé áëöáñéèìçôéêÜ"
+
+#
+#: src/setuidgid.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr ""
+
+#: src/setuidgid.c:109
+#, fuzzy, c-format
+msgid "cannot set supplemental group"
+msgstr "Äåí ìðïñåß íá ðáñèåß ï óõìðëçñùìáôéêüò êáôÜëïãïò ïìÜäùí."
+
+#
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "äåí åßíáé äõíáôü íá ðáñáëçöèåß ÷ñÞóôçò êáé ïìÜäá"
+
+#
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "äåí åßíáé äõíáôü íá ðáñáëçöèåß ÷ñÞóôçò êáé ïìÜäá"
+
+#
+#: src/shred.c:165
+#, fuzzy, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ] [ÁÑ×ÅÉÏ]...\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr ""
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr ""
+
+#: src/shred.c:391
+#, fuzzy, c-format
+msgid "%s: cannot rewind"
+msgstr "Äåí åßíáé äõíáôüí íá åêôåëåóôåß ôï %s"
+
+# src/shred.c:1067
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: ðÝñáóìá %lu/%lu (%s)..."
+
+#
+#: src/shred.c:460
+#, fuzzy, c-format
+msgid "%s: error writing at offset %s"
+msgstr "óöÜëìá åããñáöÞò %s"
+
+#
+#: src/shred.c:478
+#, fuzzy, c-format
+msgid "%s: lseek failed"
+msgstr "óöÜëìá êëåéóßìáôïò áñ÷åßïõ"
+
+#
+#: src/shred.c:489
+#, fuzzy, c-format
+msgid "%s: file too large"
+msgstr "ôï áñ÷åßï ìçäåíßóôçêå"
+
+# src/shred.c:1154
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: ðÝñáóìá %lu/%lu (%s)...%s"
+
+# src/shred.c:1149
+#: src/shred.c:528
+#, fuzzy, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: ðÝñáóìá %lu/%lu (%s)...%s/%s"
+
+#
+#: src/shred.c:776
+#, fuzzy, c-format
+msgid "%s: fstat failed"
+msgstr "áðïôõ÷ßá åããñáöÞò"
+
+#
+#: src/shred.c:787
+#, fuzzy, c-format
+msgid "%s: invalid file type"
+msgstr "%s: ìç Ýãêõñïò áñéèìüò ãñáììþí"
+
+# src/shred.c:1424
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: ôï áñ÷åßï Ý÷åé áñíçôéêü ìÝãåèïò"
+
+#
+#: src/shred.c:873
+#, fuzzy, c-format
+msgid "%s: error truncating"
+msgstr "ôï áñ÷åßï ìçäåíßóôçêå"
+
+#
+#: src/shred.c:889
+#, fuzzy, c-format
+msgid "%s: fcntl failed"
+msgstr "áðïôõ÷ßá åããñáöÞò"
+
+# src/shred.c:1483
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s: áäõíáìßá äéÜëõóçò ìüíï-ðñïóèÞêç ðåñéãñáöÝá áñ÷åßïõ"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: äéáãñÜöåôáé"
+
+#
+#: src/shred.c:996
+#, fuzzy, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: óöÜëìá áíÜãíùóçò"
+
+#
+#: src/shred.c:1018
+#, fuzzy, c-format
+msgid "%s: failed to remove"
+msgstr "ôï áñ÷åßï ìçäåíßóôçêå"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: äéåãñÜöåé"
+
+#
+#: src/shred.c:1029 src/shred.c:1072
+#, fuzzy, c-format
+msgid "%s: failed to close"
+msgstr "ôï áñ÷åßï ìçäåíßóôçêå"
+
+#
+#: src/shred.c:1065
+#, fuzzy, c-format
+msgid "%s: failed to open for writing"
+msgstr "ôï áñ÷åßï ìçäåíßóôçêå"
+
+#
+#: src/shred.c:1130
+#, fuzzy, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: ìç Ýãêõñïò áñéèìüò äåõôåñïëÝðôùí"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "\\%c: Ìç Ýãêõñç äéáöõãÞ."
+
+#
+#: src/shred.c:1153
+#, fuzzy, c-format
+msgid "%s: invalid file size"
+msgstr "%s: ìç Ýãêõñïò áñéèìüò ãñáììþí"
+
+#
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ]... (÷ùñßò -G)\n"
+" Þ: %s -G [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#: src/shuf.c:57
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "\\%c: Ìç Ýãêõñç äéáöõãÞ."
+
+#
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "ìç Ýãêõñïò áñéèìüò"
+
+#
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, fuzzy, c-format
+msgid "multiple output files specified"
+msgstr "\\%c: Ìç Ýãêõñç äéáöõãÞ."
+
+#
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#: src/shuf.c:362
+#, c-format
+msgid "extra operand %s\n"
+msgstr ""
+
+#: src/sleep.c:47
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Ðáýóç ãéá Ýíáí ÁÑÉÈÌÏ äåõôåñïëÝðôùí.\n"
+"Ôï ÅÐÉÈÇÌÁ ìðïñåß íá åßíáé: s ãéá äåõôåñüëåðôá, m ãéá ëåðôÜ, h ãéá þñåò\n"
+"Þ d ãéá ìÝñåò.\n"
+"\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+
+#
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr ""
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+
+#: src/sort.c:326
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+
+#
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#
+#: src/sort.c:363
+#, fuzzy
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"ÈÅÓÇ åßíáé F[.C][OPTS], üðïõ F åßíáé ï áñéèìüò ðåäßïõ êáé C ç èÝóç ôïõ\n"
+"÷áñáêôÞñá óôï ðåäßï, êáé ôá äýï ìåôñçìÝíá áðü ôï Ýíá ìå -k Þ áðü ôï ìçäÝí\n"
+"ìå ôçí åêôüò ÷ñÞóçò ìïñöÞ. Ôï OPTS áðáñôßæåôáé áðü Ýíá Þ ðåñéóóüôåñá áðü\n"
+"ôá Mbdfinr· áõôü ïõóéáóôéêÜ áðåíåñãïðïéåß ôéò êáèïëéêÝò ñõèìßóåéò -Mbdfinr\n"
+"ãéá ôï êëåéäß áõôü. Áí äåí ïñßæåôáé êëåéäß, íá ãßíåé ÷ñÞóç ïëüêëçñçò ôçò\n"
+"ãñáììÞò ãéá êëåéäß. ×ùñßò ÁÑ×ÅÉÏ, Þ üôáí ôï ARXEIO åßíáé ôï -, áíÜãíùóç\n"
+"áðü ôçí êáíïíéêÞ åßóïäï.\n"
+
+#
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+
+#
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "óöÜëìá åããñáöÞò %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#
+#: src/sort.c:708
+#, fuzzy
+msgid "cannot create temporary file"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "áðïôõ÷ßá áíïßãìáôïò"
+
+#
+#: src/sort.c:758
+#, fuzzy
+msgid "fflush failed"
+msgstr "ïëïêëÞñùóç áñ÷åßïõ"
+
+#
+#: src/sort.c:763 src/sort.c:3171
+#, fuzzy
+msgid "close failed"
+msgstr "óöÜëìá êëåéóßìáôïò áñ÷åßïõ"
+
+#
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "áðïôõ÷ßá áíïßãìáôïò"
+
+#
+#: src/sort.c:871
+#, fuzzy, c-format
+msgid "couldn't execute %s"
+msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/sort.c:920
+#, fuzzy, c-format
+msgid "couldn't execute %s -d"
+msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/sort.c:938
+msgid "write failed"
+msgstr "áðïôõ÷ßá åããñáöÞò"
+
+#
+#: src/sort.c:975
+#, fuzzy, c-format
+msgid "warning: cannot remove: %s"
+msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#
+#: src/sort.c:1092
+#, fuzzy
+msgid "sort size"
+msgstr "ìÝãåèïò ìðëïê"
+
+#
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr ""
+
+#
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "áðïôõ÷ßá áíÜãíùóçò"
+
+#
+#: src/sort.c:1951
+#, fuzzy, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%d: ü÷é óå óåéñÜ: "
+
+#
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "êáíïíéêü óöÜëìá"
+
+#
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "ìç Ýãêõñç äÞëùóç ðåäßïõ `%s'"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "ìç Ýãêõñï üñéóìá %s ãéá `%s'"
+
+#
+#: src/sort.c:2887
+#, fuzzy
+msgid "invalid number after `-'"
+msgstr "ìç Ýãêõñïò áñéèìüò áðü bytes"
+
+#
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+#, fuzzy
+msgid "invalid number after `.'"
+msgstr "ìç Ýãêõñïò áñéèìüò áðü bytes"
+
+#
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr ""
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "\\%c: Ìç Ýãêõñç äéáöõãÞ."
+
+#
+#: src/sort.c:2943
+#, fuzzy
+msgid "invalid number at field start"
+msgstr "ìç Ýãêõñïò áñéèìüò áðü ãñáììÝò"
+
+#
+#: src/sort.c:2947 src/sort.c:2975
+#, fuzzy
+msgid "field number is zero"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr ""
+
+#
+#: src/sort.c:2971
+#, fuzzy
+msgid "invalid number after `,'"
+msgstr "ìç Ýãêõñïò áñéèìüò áðü bytes"
+
+#: src/sort.c:3142
+#, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr ""
+
+#
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ] [ÅÉÓÏÄÏÓ [ÐÑÏÈÅÌÁ]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#
+#: src/split.c:119
+#, fuzzy, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+"¸îïäïò ôìçìÜôùí óôáèåñïý ìåãÝèïõò áðü ôçí ÅÉÓÏÄÏ óå ÐÑÏÈÅÌÁaa, "
+"ÐÑÏÈÅÌÁab, ...; åî ïñéóìïý\n"
+"ÐÑÏÈÅÌÁ åßíáé ôï `x'. ×ùñßò ÅÉÓÏÄÏ, Þ üôáí ç ÅÉÓÏÄÏÓ åßíáé ôï -, áíÜãíùóç "
+"áðü ôçí êáíïíéêÞ åßóïäï.\n"
+"\n"
+" -b, --bytes=ÌÅÃÅÈÏÓ ôïðïèÝôçóç ÌÅÃÅÈÏÓ bytes óå êÜèå áñ÷åßï åîüäïõ\n"
+" -C, --line-bytes=ÌÅÃÅÈÏÓ ôïðïèÝôçóç ôï ðïëý ÌÅÃÅÈÏÓ bytes áðü ãñáììÝò óå "
+"êÜèå áñ÷åßï åîüäïõ\n"
+" -l, --lines=ÁÑÉÈÌÏÓ ôïðïèÝôçóç ÁÑÉÈÌÏÓ ãñáììþí óå êÜèå áñ÷åßïõ åîüäïõ\n"
+" -ÁÑÉÈÌÏÓ ßäéï ìå -l ÁÑÉÈÌÏÓ\n"
+" --verbose åêôýðùóç äéáãíùóôéêïý óôï êáíïíéêü óöÜëìá ìüëéò "
+"ðñéí\n"
+" áíïé÷ôåß êÜèå áñ÷åßï åîüäïõ\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+"\n"
+"ÌÅÃÅÈÏÓ ìðïñåß íá Ý÷åé ðñüèåìá ðïëëáðëáóéáóôÞ: b ãéá 512, k ãéá 1K, m ãéá 1 "
+"Meg.\n"
+
+#
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+
+#
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+
+#
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr ""
+
+#
+#: src/split.c:211
+#, fuzzy, c-format
+msgid "creating file %s\n"
+msgstr "äçìéïõñãßá áñ÷åßïõ `%s'\n"
+
+#
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "äåí åßíáé äõíáôü íá ãßíåé äéá÷ùñéóìüò óå ðåñéóóüôåñïõò áðü Ýíá ôñüðï"
+
+#
+#: src/split.c:420
+#, fuzzy, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: ìç Ýãêõñïò áñéèìüò ãñáììþí"
+
+#
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: ìç Ýãêõñïò áñéèìüò áðü bytes"
+
+#
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: ìç Ýãêõñïò áñéèìüò ãñáììþí"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr ""
+
+#
+#: src/split.c:518
+#, fuzzy, c-format
+msgid "invalid number of lines: 0"
+msgstr "ìç Ýãêõñïò áñéèìüò áðü ãñáììÝò"
+
+#
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s: ìç áíáãíùñßóéìç åðéëïãÞ `-%c'\n"
+
+#
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%s: ìç Ýãêõñç ìïñöÞ"
+
+#
+#: src/stat.c:726
+#, fuzzy, c-format
+msgid "warning: backslash at end of format"
+msgstr "ìç Ýãêõñç äéáöõãÞ ìå ðéóùêÜèåôï óôï ôÝëïò ôïõ áëöáñéèìçôéêïý"
+
+#
+#: src/stat.c:755
+#, fuzzy, c-format
+msgid "cannot read file system information for %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/stat.c:831
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ] [ÁÑ×ÅÉÏ]...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+
+#: src/stty.c:517
+#, fuzzy
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Åêôõðþíåé Þ áëëÜæåé ôá ÷áñáêôçñéóôéêÜ ôïõ ôåñìáôéêïý.\n"
+"\n"
+" -a, --all åêôõðþíåé üëá ôá ÷áñáêôçñéóôéêÜ óå áíáãíþóéìç ìïñöÞ\n"
+" -g, --save åêôõðþíåé üëá ôá ÷áñáêôçñéóôéêÜ óå ìïñöÞ áíáãíþóéìç áðï\n"
+" ôï `stty'\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+"\n"
+"Ðñïåñáéôéêü - ðñéí ôçí ÅÊËÏÃÇ óçìáßíåé Üñíçóç. Ôï * óçìáßíåé ìéá\n"
+"ÅÊËÏÃÇ ìç POSIX. Ôï óýóôçìá êáèïñßæåé ðïéÝò åðéëïãÝò åßíáé äéáèÝóéìåò.\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+
+#: src/stty.c:583
+#, fuzzy
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+"\n"
+"ÅðéëïãÝò åëÝã÷ïõ:\n"
+" [-]clocal Áðåíåñãïðïéåß ôá óÞìáôá åëÝ÷ãïõ ôïõ modem\n"
+" [-]cread ÅðéôñÝðåé ôçí ëÞøç ôùí åéóáãùìÝíùí\n"
+"* [-]crtscts Åíåñãïðïéåß ôçí RTS/CTS ÷åéñáøßá\n"
+" csN ÈÝôåé ôï ìÝãåèïò ôùí ÷áñáêôÞñùí óå N bits,\n"
+" N ìåôáîý [5..8]\n"
+" [-]cstopb ×ñçóéìïðïéåß 2 bits äéáêïðÞò áíá ÷áñáêôÞñá (Ýíá ìå `-')\n"
+" [-]hup Ìåôáäßäåé óÞìá êëåéóßìáôïò üôáí ç ôåëåõôáßá åöáñìïãÞ\n"
+" êëåßóåé ôï tty\n"
+" [-]hupcl Ïìïéï ìå ôï [-]hup\n"
+" [-]parenb Äçìéïõñãåß bit éóüôçìßáò óôçí Ýîïäï êáé ðåñéìÝíåé bit\n"
+" éóüôçìßáò óôçí åßóïäï\n"
+" [-]parodd ÈÝôåé ðåñéôÞ éóïôçìßá (áêüìá êáé ìå `-')\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:624
+#, fuzzy
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+"\n"
+"ÅðéëïãÝò åîüäïõ:\n"
+"* bsN Ôýðïò êáèõóôÝñçóçò ðéóùäéáóôÞìáôïò, N ìåôáîý [0..1]\n"
+"* crN Ôýðïò êáèõóôÝñçóçò åðéóôñïöÞò äñïìÝá, N ìåôáîý [0..3]\n"
+"* ffN Ôýðïò êáèõóôÝñçóçò áëëáãÞò óåëßäáò, N ìåôáîý [0..1]\n"
+"* nlN Ôýðïò êáèõóôÝñçóçò áëëáãÞò óåéñÜò, N ìåôáîý [0..1]\n"
+"* [-]ocrnl ÌåôáôñÝðåé ôçí `åðéóôñïöÞ äñïìÝá' óå `íÝá ãñáììÞ'\n"
+"* [-]ofdel ×ñçóéìïðïéåß ÷áñáêôÞñåò óâçóßìáôïò ãéá ãÝìéóìá áíôß\n"
+" ôùí êåíþí ÷áñáêôÞñùí\n"
+"* [-]ofill ×ñçóéìïðïéåß ÷áñáêôÞñåò ãåìßóìáôïò áíôß ÷ñïíïìÝôñçóçò ãéá\n"
+" ôéò êáèõóôåñÞóåéò\n"
+"* [-]olcuc ÌåôáôñÝðåé ôá ìéêñÜ óå êåöáëáßá\n"
+"* [-]onlcr ÌåôáôñÝðåé ôçí `íåá ãñáììÞ' óå `åðéóôñïöÞ äñïìÝá-íåá "
+"ãñáììÞ'\n"
+"* [-]onlret Ç `íåá ãñáììÞ' ðñïêáëåß `åðéóôñïöÞ äñïìÝá'\n"
+"* [-]onocr Äåí åêôõðþíåé `åðéóôñïöÞ äñïìÝá' óôçí ðñþôç óôÞëç\n"
+" [-]opost Åêôåëåß ìéá ðñï-åðåîåñãáóìÝíç Ýîïäï\n"
+"* tabN Ôýðïò êáèõóôÝñçóçò ôçò ïñéæüíôéáò ðéíáêïðïßçóçò, \n"
+" N ìåôáîý [0..3]\n"
+"* tabs Ïìïéï ìå tab0\n"
+"* -tabs Ïìïéï ìå tab3\n"
+"* vtN Ôýðïò êáèõóôÝñçóçò ôçò êÜèåôçò ðéíáêïðïßçóçò, N ìåôáîý "
+"[0..1]\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"×åéñßæåôáé ôçí 'tty' ãñáììÞ ðïõ óõíäÝåôáé ìå ôçí ôõðéêÞ åßóïäï. ×ùñßò\n"
+"ðáñáìÝôñïõò, åêôõðþíåé ôçí ôá÷ýôçôá, ôçí êáôÜóôáóç ôçò ãñáììÞò, êáé\n"
+"ôéò åöáñìïóìÝíåò ìåôáôñïðÝò áðü ôï 'stty sane'. Óôéò åðéëïãÝò, ï\n"
+"×ÁÑáêôÞñáò åêëáìâÜíåôáé êõñéïëåêôéêÜ, Þ êùäéêïðïéåßôáé ïðùò ^c, 0x37, 0177\n"
+"Þ 127. EéäéêÝò ôéìÝò üðùò ^- Þ ôï undef áðåíåñãïðïéïýóáí ôïõò åéäéêïýò\n"
+"÷áñáêôÞñåò.\n"
+
+#
+#: src/stty.c:789
+#, fuzzy, c-format
+msgid "only one device may be specified"
+msgstr "ìüíï Ýíá üñéóìá ìðïñåß íá äçëùèåß"
+
+#
+#: src/stty.c:819
+#, fuzzy, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr "ïé åðéëïãÝò --string êáé --check åßíáé áìïéâáßùò áðïêëåéüìåíåò"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr ""
+"Ïôáí êáèïñßæåôáé Ýíáò ôýðïò åîüäïõ, ïé êáôáóôÜóåéò ëåéôïõñãßáò (modes)\n"
+"äåí åßíáé äõíáôüí íá ïñéóôïýí"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr ""
+
+#
+#: src/stty.c:885 src/stty.c:995
+#, fuzzy, c-format
+msgid "invalid argument %s"
+msgstr "ìç Ýãêõñï üñéóìá %s ãéá %s"
+
+#
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, fuzzy, c-format
+msgid "missing argument to %s"
+msgstr "áóáöÝò üñéóìá %s ãéá %s"
+
+#
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#: src/stty.c:1046
+#, fuzzy, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr ""
+"ÔõðéêÞ åßóïäïò: áäýíáôïí íá ðñáãìáôïðïéÞèïõí üëåò ôéò æçôïýìåíåò\n"
+"ëåéôïõñãßåò"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "íåá_êáôÜóôáóç: êáôÜóôáóç ëåéôïõñãßáò\n"
+
+#: src/stty.c:1392
+#, fuzzy, c-format
+msgid "%s: no size information for this device"
+msgstr "Äåí õðÜñ÷ïõí ðëçñïöïñßåò ìåãÝèïõò ãé'áõôü ôï ðåñéöåñåéáêü"
+
+#
+#: src/stty.c:1888
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "ìç Ýãêõñç áýîçóç óôïí áñéèìü åíôïëÞò: `%s'"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Óõíèçìáôéêü:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass(): äåí åßíáé äõíáôüí íá áíïé÷ôåß ôï /dev/tty"
+
+#
+#: src/su.c:303
+#, fuzzy, c-format
+msgid "cannot set groups"
+msgstr "äåí åßíáé äõíáôü íá ðáñáëçöèåß ÷ñÞóôçò êáé ïìÜäá"
+
+#
+#: src/su.c:307
+#, fuzzy, c-format
+msgid "cannot set group id"
+msgstr "äåí åßíáé äõíáôü íá ðáñáëçöèåß ÷ñÞóôçò êáé ïìÜäá"
+
+#
+#: src/su.c:309
+#, fuzzy, c-format
+msgid "cannot set user id"
+msgstr "äåí åßíáé äõíáôü íá ðáñáëçöèåß ÷ñÞóôçò êáé ïìÜäá"
+
+#
+#: src/su.c:385
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÅÓ]... [ÁÑ×ÅÉÏ]...\n"
+
+#: src/su.c:386
+#, fuzzy
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"ÁëëÜæåé ôçí éó÷ýïõóá ôáõôüôçôá (effective id) ÷ñÞóôç êáé ïìÜäáò óå áõôÝò\n"
+"ôïõ ×ÑÇÓÔÇ.\n"
+"\n"
+" -, -l, --login ÌåôáôñÝðåé ôï êÝëõöïò (shell) óå êÝëõöïò "
+"åéóüäïõ\n"
+" -c, --commmand=ÅÍÔÏËÇ ÓôÝëíåé ôçí ÅÍÔÏËÇ óôï öëïéü ìå -c\n"
+" -f, --fast ÓôÝëíåé -f óôï öëïéü (ãéá csh Þ tcsh)\n"
+" -m, --preserve-environment Äåí îáíáèÝôåé ôéò ìåôáâëçôÝò ôïõ "
+"ðåñéâÜëëïíôïò\n"
+" -p Ïìïéï ìå -m\n"
+" -s, --shell=ÊÅËÕÖÏÓ Åêôåëåß ôï ÊÅËÕÖÏÓ åáí /etc/shells ôï "
+"åðéôñÝðåé\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+"\n"
+"Åáí áðëü - õðïíïåßôáé -l. ÅÜí ç ðáñÜìåôñïò ×ÑÇÓÔÇÓ äåí äßíåôáé,\n"
+"èåùñåßôáé ïôé åßíáé ï `root'.\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "ï ÷ñÞóôçò %s äåí õðÜñ÷åé"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "ëÜèïò óõíèçìáôéêü"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "÷ñçóéìïðïéåßôáé ôï ðåñéïñéóìÝíï êÝëõöïò (restricted shell) %s"
+
+#
+#: src/su.c:523
+#, fuzzy, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/sum.c:63
+#, fuzzy
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Åêôýðùóç áèñïéóìÜôùí åëÝã÷ïõ êáé ìåôñçôÝò ìðëïê ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+"\n"
+" -r õðåñíßêçóç ôïõ -s, ÷ñÞóç ôïõ BSD áëãïñßèìïõ áèñïßóìáôïò, "
+"÷ñÞóç ìðëïê 1Ê\n"
+" -s, --sysv ÷ñÞóç System V áëãïñßèìïõ áèñïßóìáôïò, ÷ñÞóç ìðëïê 512 "
+"bytes\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+"\n"
+"×ùñßò ÁÑ×ÅÉÏ, Þ üôáí ôï áñ÷åßï åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ "
+"åßóïäï.\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+
+#
+#: src/sync.c:74
+#, fuzzy, c-format
+msgid "ignoring all arguments"
+msgstr "ðÜñá ðïëëÜ ïñßóìáôá"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr ""
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+"\n"
+
+#
+#: src/system.h:419
+#, fuzzy
+msgid " --version output version information and exit\n"
+msgstr ""
+"ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+"\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#
+#: src/tac.c:145
+#, fuzzy
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+"ÅããñáöÞ êÜèå áñ÷åßïõ óôçí êáíïíéêÞ Ýîïäï, ôåëåõôáßá ãñáììÞ ðñþôá.\n"
+"×ùñßò ÁÑ×ÅÉÏ, Þ üôáí ôï áñ÷åßï åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ "
+"åßóïäï.\n"
+"\n"
+" -b, --before ôïðïèÝôçóç ôïõ äéá÷ùñéóôÞ ðñéí áíôß ãéá ìåôÜ\n"
+" -r, --regex ìåôÜöñáóç ôïõ äéá÷ùñéóôÞ ùò êáíïíéêÞ Ýêöñáóç\n"
+" -s, --separator=ÁËÖÁÑÉÈÌ ÷ñÞóç ÁËÖÁÑÉÈÌçôéêïý ùò äéá÷ùñéóôÞò áíôß ôïõ "
+"÷áñáêôÞñá íÝáò ãñáììÞò\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#: src/tac.c:236 src/tac.c:337
+#, fuzzy, c-format
+msgid "%s: seek failed"
+msgstr "óöÜëìá êëåéóßìáôïò áñ÷åßïõ"
+
+#
+#: src/tac.c:265
+#, fuzzy, c-format
+msgid "record too large"
+msgstr "ôï áñ÷åßï ìçäåíßóôçêå"
+
+#
+#: src/tac.c:459
+#, fuzzy, c-format
+msgid "cannot create temporary file %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#: src/tac.c:466
+#, fuzzy, c-format
+msgid "cannot open %s for writing"
+msgstr "áäõíáìßá ìåôáöïñÜò ôïõ `%s' óôï `%s'"
+
+#
+#: src/tac.c:487 src/tac.c:494
+#, fuzzy, c-format
+msgid "%s: write error"
+msgstr "óöÜëìá åããñáöÞò"
+
+#
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "ï äéá÷ùñéóôÞò äå ìðïñåß íá åßíáé êåíüò"
+
+#
+#: src/tail.c:220
+#, fuzzy, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"ÅìöÜíéóç ôùí 10 ðñþôùí ãñáììþí áðü êÜèå ÁÑ×ÅÉÏ óôçí êáíïíéêÞ Ýîïäï.\n"
+"Ìå ðåñéóóüôåñá áðü Ýíá ÁÑ×ÅÉÏ, íá ðñïçãçèåß åðéóÝëéäï ìå ôï üíïìá ôïõ "
+"áñ÷åßïõ.\n"
+"×ùñßò ÁÑ×ÅÉÏ Þ üôáí ôï ÁÑ×ÅÉÏ åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ åßóïäï.\n"
+"\n"
+" -c, --bytes=ÌÅÃÅÈÏÓ åìöÜíéóç ôùí ðñþôùí ÌÅÃÅÈÏÓ bytes\n"
+" -n, --lines=ÁÑÉÈÌÏÓ åìöÜíéóç ôùí ðñþôùí ÁÑÉÈÌÏÓ ãñáììþí áíôß ôùí "
+"ðñþôùí 10\n"
+" -q, --quiet, --silent íá ìçí ôõðþíïíôáé åðéóÝëéäá ìå ôá ïíüìáôá "
+"áñ÷åßùí\n"
+" -v, --verbose íá ôõðþíïíôáé ðÜíôá åðéóÝëéäá ìå ôá ïíüìáôá "
+"áñ÷åßùí\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+"\n"
+"Ôï ÌÅÃÅÈÏÓ ìðïñåß íá Ý÷åé êáôÜëçîç ìå ðïëëáðëáóéáóôÞ: b ãéá 512, k ãéá 1K, m "
+"ãéá 1 Meg.\n"
+"Áí ÷ñçóéìïðïéåßôáé ôï -VALUE óáí ðñþôç ÅÐÉËÏÃÇ, áíÜãíùóå -c ÔÉÌÇ üôáí\n"
+"Ýíáò áðü ôïõò ðïëëáðëáóéáóôÝò bkm áêïëïõèåß óõíåíùìÝíïò, äéáöïñåôéêÜ "
+"áíÜãíùóå -n ÔÉÌÇ\n"
+
+#: src/tail.c:229
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+
+#
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+
+#: src/tail.c:244
+#, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+
+#
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+
+#
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+
+#
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "êëåßóéìï ôïõ %s (fd=%d)"
+
+#
+#: src/tail.c:411
+#, fuzzy, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr ""
+
+#
+#: src/tail.c:867
+#, fuzzy, c-format
+msgid "%s has become inaccessible"
+msgstr "ôï `%s' åßíáé ìç-ðñïóðåëÜóéìï"
+
+#
+#: src/tail.c:884
+#, fuzzy, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+"%s: áäýíáôç ç áêïëïýèçóç ôïõ ôÝëïõò áõôïý ôïõ åßäïõò áñ÷åßïõ· ðáñÜêáìøç"
+
+#
+#: src/tail.c:905
+#, fuzzy, c-format
+msgid "%s has become accessible"
+msgstr "ôï `%s' Ý÷åé ãßíåé ðñïóðåëÜóéìï"
+
+#
+#: src/tail.c:913
+#, fuzzy, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "ôï `%s' åìöáíßóôçêå· áêïëïýèçóç ôÝëïõò íÝïõ áñ÷åßïõ"
+
+#
+#: src/tail.c:924
+#, fuzzy, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "ôï `%s' Ý÷åé áíôéêáôáóôáèåß· áêïëïýèçóç ôÝëïõò íÝïõ áñ÷åßïõ"
+
+#
+#: src/tail.c:1025
+#, fuzzy, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "äåí åßíáé äõíáôü íá ðáñáëçöèåß ÷ñÞóôçò êáé ïìÜäá"
+
+#
+#: src/tail.c:1066
+#, fuzzy, c-format
+msgid "%s: file truncated"
+msgstr "ôï áñ÷åßï ìçäåíßóôçêå"
+
+#
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "äåí õðïëåßðïíôáé áñ÷åßá"
+
+#
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+"%s: áäýíáôç ç áêïëïýèçóç ôïõ ôÝëïõò áõôïý ôïõ åßäïõò áñ÷åßïõ· ðáñÜêáìøç"
+
+#
+#: src/tail.c:1439
+#, fuzzy, c-format
+msgid "number in %s is too large"
+msgstr "ôï %s åßíáé ðïëý ìåãÜëï"
+
+#
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr ""
+"%s: ìç Ýãêõñïò ìÝãéóôïò áñéèìüò áðü ÷ùñßò ìåôáâïëÞ `stats' ìåôáîý áíïéãìÜôùí"
+
+#
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: ìç Ýãêõñïò ðåñéãñáöÝáò äéåñãáóßáò (PID)"
+
+#
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: ìç Ýãêõñïò áñéèìüò äåõôåñïëÝðôùí"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#
+#: src/tail.c:1566
+#, fuzzy, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr ""
+"ðñïåéäïðïßçóç: ôï --retry åßíáé ÷ñÞóéìï ìüíï ìå ðáñáêïëïýèçóç âÜóç ïíüìáôïò"
+
+#
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+"ðñïåéäïðïßçóç: ï ðåñéãñáöÝáò äéåñãáóßáò áãíïåßôå· ôï --pid=PID åßíáé ÷ñÞóéìï "
+"ìüíï óå ðáñáêïëïýèçóç"
+
+#
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "ðñïåéäïðïßçóç: ôï --pid=PID äåí õðïóôçñßæåôáé óå áõôü ôï óýóôçìá"
+
+#
+#: src/tail.c:1667
+#, fuzzy, c-format
+msgid "cannot follow %s by name"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+
+#: src/tee.c:63
+#, fuzzy
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"ÁíôéãñÜöåé ôçí ôõðéêÞ åßóïäï óå êÜèå ÁÑ×ÅÉÏ, êáé óôçí ôõðéêÞ Ýîïäï.\n"
+"\n"
+" -a, --append ÐñïóèÝôåé óôï ÁÑ×ÅÉÏ(á), ÷ùñßò íá ãñÜöåé\n"
+" ðÜíù áðï ôá õðÜñ÷ïíôá\n"
+" -i, --ignore-interrupts Áãíïåß óÞìáôá äéáêïðÞò\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+
+#
+#: src/test.c:125
+#, fuzzy, c-format
+msgid "missing argument after %s"
+msgstr "áóáöÝò üñéóìá %s ãéá %s"
+
+#
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "ìç Ýãêõñïò áñéèìüò"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "áíáìåíüôáí ')'\n"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "áíáìåíüôáí ')', áëëÜ âñÝèçêå %s\n"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: Áíáìåíüôáí ìïíáäéáßïò ÷åéñéóôÞò.\n"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "-nt äåí äÝ÷åôáé -l\n"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "-ef äåí äÝ÷åôáé -l\n"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "-nt äåí äÝ÷åôáé -l\n"
+
+#
+#: src/test.c:368
+#, fuzzy
+msgid "unknown binary operator"
+msgstr "¶ãíùóôï óöÜëìá óõóôÞìáôïò"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: Áíáìåíüôáí äõáäéêüò ÷åéñéóôÞò.\n"
+
+#
+#: src/test.c:694
+#, fuzzy
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+
+#
+#: src/test.c:707
+#, fuzzy
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+"\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+
+#: src/test.c:727
+#, fuzzy
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" ( ÅÊÖÑÁÓÇ ) Ç ÅÊÖÑÁÓÇ åßíáé áëçèéíÞ\n"
+" ! ÅÊÖÑÁÓÇ Ç ÅÊÖÑÁÓÇ åßíáé øåýôéêç\n"
+" ÅÊÖÑÁÓÇ1 -a ÅÊÖÑÁÓÇ2 Êáé ç ÅÊÖÑÁÓÇ1 êáé ç ÅÊÖÑÁÓÇ2\n"
+" åßíáé áëçèéíÝò\n"
+" ÅÊÖÑÁÓÇ1 -o ÅÊÖÑÁÓÇ2 Ïõôå ç ÅÊÖÑÁÓÇ1 ïýôå ÅÊÖÑÁÓÇ2 åßíáé áëçèéíÝò\n"
+"\n"
+" [-n] ÁËÕÓÉÄÁ Ôï ìÞêïò ôçò ÁËÕÓÉÄÁÓ äåí åßíáé ìçäÝí\n"
+" -z ÁËÕÓÉÄÁ Ôï ìÞêïò ôçò ÁËÕÓÉÄÁÓ åßíáé ìçäÝí\n"
+" ÁËÕÓÉÄÁ1 = ÁËÕÓÉÄÁ2 Ïé áëõóßäåò åßíáé ßóåò\n"
+" ÁËÕÓÉÄÁ1 != ÁËÕÓÉÄÁ2 Ïé áëõóßäåò äåí åßíáé ßóåò\n"
+"\n"
+" ÁÊÅÑÁÉÏÓ1 -eq ÁÊÅÑÁÉÏÓ2 Ï ÁÊÅÑÁÉÏÓ1 åßíáé ßóïò ìå ôïí ÁÊÅÑÁÉÏ2\n"
+" ÁÊÅÑÁÉÏÓ1 -ge ÁÊÅÑÁÉÏÓ2 Ï ÁÊÅÑÁÉÏÓ1 åßíáé ìåãáëýôåñïò Þ ßóïò ôïõ\n"
+" ÁÊÅÑÁÉÏY2\n"
+" ÁÊÅÑÁÉÏÓ1 -gt ÁÊÅÑÁÉÏÓ2 Ï ÁÊÅÑÁÉÏÓ1 åßíáé ìåãáëýôåñïò ôïõ ÁÊÅÑÁÉÏÕ2\n"
+" ÁÊÅÑÁÉÏÓ1 -le ÁÊÅÑÁÉÏÓ2 Ï ÁÊÅÑÁÉÏÓ1 åßíáé ìéêñüôåñïò Þ ßóïò ôïõ\n"
+" ÁÊÅÑÁÉÏÕ2\n"
+" ÁÊÅÑÁÉÏÓ1 -lt ÁÊÅÑÁÉÏÓ2 O ÁÊÅÑÁÉÏÓ1 åßíáé ìéêñüôåñïò ôïõ ÁÊÅÑÁÉÏÕ2\n"
+" ÁÊÅÑÁÉÏÓ1 -ne ÁÊÅÑÁÉÏÓ2 Ï ÁÊÅÑÁÉÏÓ1 äåí åßíáé ßóïò ìå ôïí ÁÊÅÑÁÉÏ2\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+
+# ___
+#: src/test.c:770
+#, fuzzy
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"ÐñïóÝ÷ôå ïôé ïé ðáñåíèÝóåéò ÷ñåéÜæïíôáé ôïõò ÷áñáêôÞñåò äéáöõãÞò \n"
+"(ð.÷. `\\') ãéá êåëýöç (shells).\n"
+"Åíáò ÁÊÅÑÁÉÏÓ ìðïñåß åðßóçò íá åßíáé -l ÁËÕÓÉÄÁ, ôï ïðïßï åêôéìÜôáé\n"
+"óôï ìÞêïò ôçò ÁËÕÓÉÄÁÓ.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "ôï `]' ëåßðåé\n"
+
+#
+#: src/test.c:846
+#, fuzzy, c-format
+msgid "extra argument %s"
+msgstr "ðÜñá ðïëëÜ ïñßóìáôá"
+
+#
+#: src/touch.c:112 src/touch.c:318
+#, fuzzy, c-format
+msgid "invalid date format %s"
+msgstr "ìç Ýãêõñï üñéóìá %s ãéá %s"
+
+#
+#: src/touch.c:154
+#, fuzzy, c-format
+msgid "creating %s"
+msgstr "äçìéïõñãßá áñ÷åßïõ `%s'\n"
+
+#
+#: src/touch.c:211
+#, fuzzy, c-format
+msgid "cannot touch %s"
+msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#: src/touch.c:217
+#, fuzzy, c-format
+msgid "setting times of %s"
+msgstr "äéáôÞñçóç ùñþí óôï %s"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+
+#
+#: src/touch.c:344
+#, fuzzy, c-format
+msgid "cannot specify times from more than one source"
+msgstr "äåí åßíáé äõíáôü íá ãßíåé äéá÷ùñéóìüò óå ðåñéóóüôåñïõò áðü Ýíá ôñüðï"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+
+#
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... ÓÕÍÏËÏ1 [ÓÕÍÏËÏ2]\n"
+
+#
+#: src/tr.c:294
+#, fuzzy
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"ÌåôÜöñáóç, óõìðýêíùóç êáé/ç äéáãñáöÞ ÷áñáêôÞñùí áðü ôçí êáíïíéêÞ åßóïäï,\n"
+"ãñÜöïíôáò óôç êáíïíéêÞ Ýîïäï.\n"
+"\n"
+" -c, --complement ÷ñÞóç ôïõ óõìðëçñþìáôïò ôïõ ÓÕÍÏËÏ1\n"
+" -d, --delete äéáãñáöÞ ÷áñáêôÞñùí áðü ôï ÓÕÍÏËÏ1, ü÷é ìåôÜöñáóç\n"
+" -s, --squeeze-repeats áíôéêáôÜóôáóç áêïëïõèßáò ÷áñáêôÞñùí ìå Ýíá\n"
+" -t, --truncate-set1 ðñþôá åëÜôôùóå ôï ÓÕÍÏËÏ1 óôï ìÝãåèïò ôïõ ÓÕÍÏËÏ2\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+
+#
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+
+#
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+
+#
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+
+#
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+
+#
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+
+#
+#: src/tr.c:519
+#, fuzzy, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"ðñïåéäïðïßçóç: ï áóáöÞò ïêôáäéêüò äéáöõãÞò \\%c%c%c ìåôáöñÜæåôáé\n"
+"ùò ôçí áêïëïõèßá äýï bytes \\0%c%c, `%c'"
+
+#
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "ôá Üêñç ôïõ äéáóôÞìáôïò `%s-%s' åßíáé óå áíôßóôñïöç óåéñÜ"
+
+#
+#: src/tr.c:838
+#, fuzzy, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "ìç Ýãêõñç ìÝôñçóç åðáíÜëçøçò `%s' óôç êáôáóêåõÞ [c*n]"
+
+#
+#: src/tr.c:919
+#, fuzzy, c-format
+msgid "missing character class name `[::]'"
+msgstr "ìç Ýãêõñç ôÜîç ÷áñáêôÞñùí `%s'"
+
+#
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr ""
+
+#
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "ìç Ýãêõñç ôÜîç ÷áñáêôÞñùí `%s'"
+
+#
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: ï ôåëåóôÞò éóïäõíáìßáò ôÜîçò ðñÝðåé íá åßíáé Ýíáò ìüíï ÷áñáêôÞñáò"
+
+#
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr "ðÜñá ðïëëÜ ïñßóìáôá"
+
+#
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "ç äïìÞ åðáíÜëçøçò [c*] äå ìðïñåß íá åìöáíßæåôáé óôï áëöáñéèìçôéêü1"
+
+#
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "ìüíï ìéá äïìÞ åðáíÜëçøçò [c*] ìðïñåß íá åìöáíéóôåß óôï áëöáñéèìçôéêü2"
+
+#
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr ""
+"åêöñÜóåéò [=c=] äåí ìðïñïýí íá åìöáíßæïíôáé óôï áëöáñéèìçôéêü 2 óôç ìåôÜöñáóç"
+
+#
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr ""
+"üôáí äåí áðïêüðôåôáé ôï óýíïëï1, ôï áëöáñéèìçôéêü 2 ðñÝðåé íá ìçí åßíáé êåíü"
+
+#
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"üôáí ãßíåôáé ìåôÜöñáóç ìå óõìðëÞñùìá ôÜîçò ÷áñáêôÞñùí,\n"
+"ôï áëöáñéèìçôéêü 2 ðñÝðåé íá áíôéóôïé÷ßæåé üëïõò ôïõò ÷áñáêôÞñåò óôçí "
+"ðåñéï÷Þ ìå Ýíá"
+
+#
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"óôç ìåôÜöñáóç, ïé ìüíåò êëÜóåéò ÷áñáêôÞñùí ðïõ ìðïñïýí íá åìöáíéóôïýí\n"
+"óôï áëöáñéèìçôéêü 2 åßíáé `upper' êáé `lower'"
+
+#
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "ç äïìÞ [c*] ìðïñåß íá åìöáíéóôåß óôï áëöáñéèìçôéêü2 ìüíï óôç ìåôÜöñáóç"
+
+#
+#: src/tr.c:1731
+#, fuzzy
+msgid "Two strings must be given when translating."
+msgstr "äýï áëöáñéèìçôéêÜ ðñÝðåé íá äßíïíôáé óôç ìåôÜöñáóç"
+
+#
+#: src/tr.c:1741
+#, fuzzy
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"ìüíï Ýíá áëöáñéèìçôéêü ìðïñåß íá äïèåß üôáí ãßíåôáé äéáãñáöÞ ÷ùñßò\n"
+"óõìðõêíþóåéò åðáíáëÞøåùí"
+
+#
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "êáêþò óôïé÷éóìÝíç äïìÞ [:upper:] êáé/Þ [:lower:]"
+
+#
+#: src/true.c:42
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#
+#: src/tsort.c:86
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"×ñÞóç: %s [ÅÐÉËÏÃÇ] [ÁÑ×ÅÉÏ]\n"
+"ÅããñáöÞ ðëÞñïõò ôáîéíïìçìÝíçò ëßóôáò óå óõìöùíßá ìå ôç ìåñéêÞ ôáîéíüìçóç\n"
+"óôï ÁÑ×ÅÉÏ. ×ùñßò ÁÑ×ÅÉÏ, Þ üôáí ôï áñ÷åßï åßíáé ôï -, áíÜãíùóç áðü ôçí\n"
+"êáíïíéêÞ åßóïäï.\n"
+"\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#: src/tsort.c:474
+#, fuzzy, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: ç åßóïäïò ðåñéÝ÷åé âñü÷ï:"
+
+#
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: ç åßóïäïò ðåñéÝ÷åé âñü÷ï:"
+
+#
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ] [ÁÑ×ÅÉÏ]...\n"
+
+#: src/tty.c:70
+#, fuzzy
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Åêôõðþíåé ôï üíïìá ôïõ ôåñìáôéêïý ðïõ åßíáé óõíäåäåìÝíï ìå ôçí ôõðéêÞ "
+"Ýîïäï.\n"
+"\n"
+" -s, --silent, --quiet Äåí åêôõðþíåé ôßðïôá, åðéóôñÝöåé ìüíï êáôÜóôáóç\n"
+" åîüäïõ\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "äåí åßíáé tty'"
+
+#: src/uname.c:118
+#, fuzzy
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Åêôõðþíåé óõãêåêñéìÝíåò ðëçñïöïñßåò óõóôÞìáôïò.\n"
+"×ùñßò ÅÐÉËÏÃÇ, üìïéï ìå -s.\n"
+"\n"
+" -a, --all Åêôõðþíåé üëåò ôéò ðëçñïöïñßåò\n"
+" -m, --machine Åêôõðþíåé ôïí ôýðï ôçò ìç÷áíÞò (hardware)\n"
+" -n, --nodename Åêôõðþíåé ôï üíïìá ôïõ äéêôõáêïý êüìâïõ ôïõ\n"
+" õðïëïãéóôÞ (network node hostname)\n"
+" -r, --release Åêôõðþíåé ôçí áíáèåþñçóç Ýêäïóçò ôïõ ëåéôïõñãéêïý\n"
+" óõóôÞìáôïò\n"
+" -s, --sysname Åêôõðþíåé ôï üíïìá ôïõ ëåéôïõñãéêïý óõóôÞìáôïò\n"
+" -p, --processor Åêôõðþíåé ôïí ôýðï ôïõ åðåîåñãáóôÞ\n"
+" -v Åêôõðþíåé ôçí Ýêäïóç ôïõ ëåéôïõñãéêïý óõóôÞìáôïò\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+
+#
+#: src/uname.c:236
+#, fuzzy, c-format
+msgid "cannot get system name"
+msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#: src/unexpand.c:125
+#, fuzzy
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"ÌåôáôñïðÞ äéáóôçìÜôùí óå êÜèå ÁÑ×ÅÉÏ óå óôçëïèÝôåò, ãñÜöïíôáò óôçí êáíïíéêÞ "
+"Ýîïäï.\n"
+"×ùñßò ÁÑ×ÅÉÏ, Þ üôáí ôï áñ÷åßï åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ "
+"åßóïäï.\n"
+"\n"
+" -a, --all ìåôáôñïðÞ üëùí ôùí ëåõêþí ÷áñáêôÞñùí, áíôß ìüíï ôùí "
+"áñ÷éêþí\n"
+" -t, --tabs=ÁÑÉÈÌÏÓ ïé óôçëïèÝôåò íá Ý÷ïõí áðüóôáóç ÁÑÉÈÌÏÓ áíôß 8\n"
+" -t, --tabs=ËÉÓÔÁ ÷ñÞóç ëßóôáò ÷ùñéóìÝíçò ìå êüììá ãéá ôç äÞëùóç ôçò "
+"èÝóçò ôùí óôçëïèåôþí\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+"\n"
+"Áíôß ãéá -t ÁÑÉÈÌÏÓ Þ -t ËÉÓÔÁ, -ÁÑÉÈÌÏÓ Þ -ËÉÓÔÁ ìðïñïýí íá "
+"÷ñçóéìïðïéçèïýí.\n"
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "ôï %s åßíáé ðïëý ìåãÜëï"
+
+#
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+
+#
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+
+#
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+
+#
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+
+#
+#: src/uniq.c:350
+#, fuzzy, c-format
+msgid "too many repeated lines"
+msgstr "ðÜñá ðïëëÜ ïñßóìáôá"
+
+#
+#: src/uniq.c:512
+#, fuzzy
+msgid "invalid number of fields to skip"
+msgstr "ìç Ýãêõñïò áñéèìüò ðåäßùí ðñïò ðñïóðÝñáóç: `%s'"
+
+#
+#: src/uniq.c:521
+#, fuzzy
+msgid "invalid number of bytes to skip"
+msgstr "ìç Ýãêõñïò áñéèìüò bytes ðñïò ðñïóðÝñáóç: `%s'"
+
+#
+#: src/uniq.c:530
+#, fuzzy
+msgid "invalid number of bytes to compare"
+msgstr "ìç Ýãêõñïò áñéèìüò áðü bytes ðñïò óýãêñéóç: `%s'"
+
+#
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+"åêôýðùóç üëùí ôùí äéðëþí ãñáììþí êáé ìåôñçôþí åðáíáëÞøåùí äåí Ý÷åé Ýííïéá"
+
+#
+#: src/unlink.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+
+#
+#: src/unlink.c:91
+#, fuzzy, c-format
+msgid "cannot unlink %s"
+msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "Äåí åßíáé äõíáôüí íá âñåèåß ç þñá åêêßíçóçò"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s up "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "ðì"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "ìì"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr ""
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr ""
+
+#: src/uptime.c:143
+#, fuzzy, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "ìÝñá"
+msgstr[1] "ìÝñá"
+
+#
+#: src/uptime.c:147
+#, fuzzy, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "ìç Ýãêõñïò ÷ñÞóôçò"
+msgstr[1] "ìç Ýãêõñïò ÷ñÞóôçò"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", ÌÝóïò üñïò öüñôïõ: %.2f"
+
+#
+#: src/uptime.c:197 src/users.c:108
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÅÓ]... [ÁÑ×ÅÉÏ]...\n"
+
+#: src/uptime.c:198
+#, fuzzy, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Åêôõðþíåé ôïí êáôÜëïãï ôùí åíåñãþí ÷ñçóôþí óýìöùíá ìå ôï ÁÑ×ÅÉÏ.\n"
+"Åáí ôï ÁÑ×ÅÉÏ äåí ðñïóäéïñßæåôáé, ÷ñçóéìïðïéåßôáé ôï %s.\n"
+"Ôï %s óáí ÁÑ×ÅÉÏ åßíáé êïéíü.\n"
+"\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+
+#: src/users.c:109
+#, fuzzy, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Åêôõðþíåé ôïí êáôÜëïãï ôùí åíåñãþí ÷ñçóôþí óýìöùíá ìå ôï ÁÑ×ÅÉÏ.\n"
+"Åáí ôï ÁÑ×ÅÉÏ äåí ðñïóäéïñßæåôáé, ÷ñçóéìïðïéåßôáé ôï %s.\n"
+"Ôï %s óáí ÁÑ×ÅÉÏ åßíáé êïéíü.\n"
+"\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+
+#
+#: src/wc.c:113
+#, fuzzy
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"ÅìöÜíéóç ìåôñçôþí ãñáììþí, ëÝîåùí êáé byte ãéá êÜèå ÁÑ×ÅÉÏ, êáé ìéá ãñáììÞ "
+"óõíüëùí\n"
+"áí ïñßæïíôáé ðåñéóóüôåñï áðü Ýíá ÁÑ×ÅÉÁ. ×ùñßò ÁÑ×ÅÉÏ, Þ üôáí ôï áñ÷åßï "
+"åßíáé ôï -,\n"
+"áíÜãíùóç áðü ôçí êáíïíéêÞ åßóïäï.\n"
+" -c, --bytes, --chars åìöÜíéóç ôïõ óõíüëïõ ôùí bytes\n"
+" -l, --lines åìöÜíéóç ôïõ óõíüëïõ ôùí ãñáììþí\n"
+" -L, --max-line-length åìöÜíéóç ôïõ ìÞêïõò ôçò ìåãáëýôåñçò ãñáììÞò\n"
+" -w, --words åìöÜíéóç ôïõ óõíüëïõ ôùí ëÝîåùí\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#: src/wc.c:121
+#, fuzzy
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+"ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+"\n"
+" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr "ðáëéÜ"
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr ""
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr ""
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr ""
+
+#: src/who.c:497
+msgid "clock change"
+msgstr ""
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr ""
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr ""
+
+#: src/who.c:545
+#, fuzzy, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"# ÷ñÞóôåò=%u\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr ""
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "ÃÑÁÌÌÇ"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr ""
+
+#
+#: src/who.c:551
+#, fuzzy
+msgid "IDLE"
+msgstr "ÁÍÅÐÉÔÕ×ÅÓ"
+
+#: src/who.c:552
+msgid "PID"
+msgstr ""
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr ""
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr ""
+
+#
+#: src/who.c:633
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... ÁÑ×ÅÉÏ1 ÁÑ×ÅÉÏ2\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+
+#: src/whoami.c:51
+#, fuzzy
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Åêôõðþíåé ôïí ÷ñÞóôç ðïõ óõíäÝåôáé ìå ôçí ôñÝ÷ïõóá éó÷ýïõóá ôáõôüôçôá\n"
+"(effective id) ÷ñçóôç. Ïìïéï ìå: id -un.\n"
+"\n"
+" --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+" --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+
+#: src/whoami.c:95
+#, fuzzy, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: äåí ìðïñåé íá âñåèåß üíïìá ÷ñÞóôç ãéá ôï 'UID' %u\n"
+
+#
+#: src/yes.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+
+#
+#, fuzzy
+#~ msgid "strip failed"
+#~ msgstr "áðïôõ÷ßá åããñáöÞò"
+
+#
+#~ msgid "program error"
+#~ msgstr "óöÜëìá ðñïãñÜììáôïò"
+
+#
+#~ msgid "stack overflow"
+#~ msgstr "õðåñ÷åßëéóç óôïßâáò"
+
+#
+#, fuzzy
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "äåí åßíáé äõíáôü íá ðáñáëçöèåß ÷ñÞóôçò êáé ïìÜäá"
+
+#
+#, fuzzy
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "áäýíáôç ç áëëáãÞ óôï êáôÜëïãï %s"
+
+#
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr ""
+#~ "áäýíáôç ç ëÞøç ôçò ïìÜäáò åéóáãùãÞò óôï óýóôçìá åíüò áñéèìçôéêïý UID"
+
+#
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Áõôü åßíáé åëåýèåñï ëïãéóìéêü· äåßôå ôï ðçãáßï êþäéêá ãéá êáíüíåò "
+#~ "áíôéãñáöÞò\n"
+#~ "ÄÅÍ õðÜñ÷åé åããýçóç· ïýôå áêüìá ãéá ×ÑÇÓÉÌÏÔÇÔÁ Þ ÊÁÔÁËËÇËÏÔÇÔÁ ÃÉÁ ÅÍÁ\n"
+#~ "ÓÕÃÊÅÊÑÉÌÅÍÏ ÓÊÏÐÏ.\n"
+
+#
+#~ msgid "too few arguments"
+#~ msgstr "ðïëý ëßãá ïñßóìáôá"
+
+#
+#, fuzzy
+#~ msgid "closing standard output"
+#~ msgstr "êáíïíéêÞ Ýîïäïò"
+
+#~ msgid "group number"
+#~ msgstr "áñéèìüò ïìÜäáò"
+
+#
+#, fuzzy
+#~ msgid "invalid group number %s"
+#~ msgstr "ìç Ýãêõñïò áñéèìüò"
+
+#
+#, fuzzy
+#~ msgid "invalid mode string: %s"
+#~ msgstr "ìç Ýãêõñï åßäïò áëöáñéèìçôéêïý `%s'"
+
+#
+#, fuzzy
+#~ msgid "unable to restore permissions of %s"
+#~ msgstr "áäõíáìßá áëëáãÞò éäéïêôçóßáò óôï %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "×ñÞóç: %s [ÅÐÉËÏÃÇ]... ÔÅËÅÕÔÁÉÏÓ\n"
+#~ " Þ: %s [ÅÐÉËÏÃÇ]... ÐÑÙÔÏÓ ÔÅËÅÕÔÁÉÏÓ\n"
+#~ " Þ: %s [ÅÐÉËÏÃÇ]... ÐÑÙÔÏÓ ÁÕÎÇÓÇ ÔÅËÅÕÔÁÉÏÓ\n"
+
+#
+#~ msgid "Richard Stallman and David MacKenzie"
+#~ msgstr "Ñßôóáñíô ÓôÜëìáí êáé ÍôÝéâéíô ÌáêÝíæç"
+
+#
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... ÁÑÉÓÔÅѼ_ÁÑ×ÅºÏ ÄÅÎɼ_ÁÑןÏ\n"
+
+#
+#, fuzzy
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#, fuzzy
+#~ msgid "missing file arguments"
+#~ msgstr "ðïëý ëßãá ïñßóìáôá"
+
+#
+#, fuzzy
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "ôï `%s' õðÜñ÷åé Þäç Üëëá äåí åßíáé êáôÜëïãïò"
+
+#, fuzzy
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr ""
+#~ "áíôéãñáöÞ ðïëëáðëþí áñ÷åßùí, áëëÜ ôï ôåëåõôáßï üñéóìá (%s) äåí åßíáé "
+#~ "êáôÜëïãïò"
+
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "ðñïåéäïðïßçóç: ôï --version-control (-V) äå ÷ñçóéìïðïéåßôáé ðëÝïí·\n"
+#~ "ç õðïóôÞñçîç ãéá áõôü èá ðÜøåé óå êÜðïéá ìåëëïíôéêÞ Ýêäïóç. ÊÜíôå\n"
+#~ "÷ñÞóç ôïõ --backup=%s óôç èÝóç ôïõ."
+
+#
+#, fuzzy
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "ðñïåéäïðïßçóç: ôï --pid=PID äåí õðïóôçñßæåôáé óå áõôü ôï óýóôçìá"
+
+#
+#~ msgid "Stuart Kemp and David MacKenzie"
+#~ msgstr "Óôéïýáñô ÊÝìð êáé ÍôÝéâéíô ÌáêÝíæç"
+
+#
+#~ msgid "%s: `+' or `-' expected after delimeter"
+#~ msgstr "%s: áíáìåíüôáí `+' Þ `-' ìåôÜ ôï äéá÷ùñéóôÞ"
+
+#
+#, fuzzy
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "ðÜñá ðïëëÜ ïñßóìáôá ðïõ äåí Ý÷ïõí åðéëïãÝò"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-822 (-R) option"
+#~ msgstr "äå ìðïñïýí íá äçëþíïíôáé áñ÷åßá üôáí ãßíåôáé ÷ñÞóç ôïõ --string"
+
+#~ msgid "undefined"
+#~ msgstr "ÌÞ ïñéóìÝíï"
+
+#
+#, fuzzy
+#~ msgid "cannot get time of day"
+#~ msgstr ""
+#~ "äåí åßíáé äõíáôü íá ãßíåé äéá÷ùñéóìüò óå ðåñéóóüôåñïõò áðü Ýíá ôñüðï"
+
+#
+#, fuzzy
+#~ msgid "Paul Rubin, David MacKenzie, and Stuart Kemp"
+#~ msgstr "Ðùë Ñïýìðéí êáé ÍôÝéâéíô ÌáêÝíæç"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "%s+%s åããñáöÝò ìÝóá\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "%s+%s åããñáöÝò Ýîù\n"
+
+#~ msgid "truncated records"
+#~ msgstr "ìçäåíéóìÝíåò åããñáöÝò êáé ãñÜøéìï ðÜíù óå áõôÝò (truncated)"
+
+#~ msgid ""
+#~ "only one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, "
+#~ "{unblock,sync}"
+#~ msgstr ""
+#~ "ìüíï Ýíá conv óôï {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, "
+#~ "{unblock,sync}"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr ""
+#~ "äå ìðïñïýí íá ÷ñçóéìïðïéçèïýí ïñßóìáôá ÁÑ×ÅÉÏÕ ìå ôçí åðéëïãÞ\n"
+#~ "åìöÜíéóçò ôçò åóùôåñéêÞò âÜóçò ôçò dircolor"
+
+#
+#, fuzzy
+#~ msgid "Richard Mlynarik and David MacKenzie"
+#~ msgstr "Ñßôóáñíô ÓôÜëìáí êáé ÍôÝéâéíô ÌáêÝíæç"
+
+#~ msgid ""
+#~ "warning: unportable BRE: `%s': using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr ""
+#~ "ÐÑÏÓÏ×Ç: Ôï BRE äåí åßíáé óõìâáôü ìå äéÜöïñá óõóôÞìáôá: `%s':\n"
+#~ "ç ÷ñçóéìïðïßçóç `^' ãéá ôïí ðñþôï ÷áñáêôÞñá ìéáò åêöñáóçò äåí åßíáé\n"
+#~ "óõìâáôÞ; Áãíïåßôáé."
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "×ñÞóç: %s [ÏÍÏÌÁ]\n"
+#~ " Þ: %s ÅÐÉËÏÃÇ\n"
+#~ "Åêôõðþíåé ôï üíïìá(hostname) ôïõ óõóôÞìáôïò.\n"
+#~ "\n"
+#~ " --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+#~ " --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+
+#
+#, fuzzy
+#~ msgid "invalid width option: `%s'"
+#~ msgstr "ìç Ýãêõñï åßäïò áëöáñéèìçôéêïý `%s'"
+
+#
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "áðáñÜäåêôç åðéëïãÞ `-%c'"
+
+#
+#, fuzzy
+#~ msgid "Arnold Robbins and David MacKenzie"
+#~ msgstr "Ðùë Ñïýìðéí êáé ÍôÝéâéíô ÌáêÝíæç"
+
+#, fuzzy
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr ""
+#~ "åãêáôÜóôáóç ðïëëáðëþí áñ÷åßùí, áëëÜ ôï ôåëåõôáßï üñéóìá (%s) äåí åßíáé "
+#~ "êáôÜëïãïò"
+
+#
+#, fuzzy
+#~ msgid "%s is a directory"
+#~ msgstr "ôï `%s' õðÜñ÷åé Þäç Üëëá äåí åßíáé êáôÜëïãïò"
+
+#
+#, fuzzy
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ ãéá ôï áñ÷åßï 1: `%s'"
+
+#
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ ãéá ôï áñ÷åßï 2: `%s'"
+
+#
+#~ msgid "too many non-option arguments"
+#~ msgstr "ðÜñá ðïëëÜ ïñßóìáôá ðïõ äåí Ý÷ïõí åðéëïãÝò"
+
+#
+#~ msgid "too few non-option arguments"
+#~ msgstr "ðÜñá ðïëëÜ ïñßóìáôá ðïõ äåí Ý÷ïõí åðéëïãÝò"
+
+#
+#, fuzzy
+#~ msgid "Mike Parker and David MacKenzie"
+#~ msgstr "Óêïô ÌðÜñôñáì êáé ÍôÝéâéíô ÌáêÝíæç"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: Ôï áñ÷åßï õðÜñ÷åé Þäç"
+
+#
+#, fuzzy
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "óõìâïëéêüò óýíäåóìïò"
+
+#, fuzzy
+#~ msgid "create hard link %s to %s"
+#~ msgstr "äçìéïõñãßá óèåíáñïý óõíäÝóìïõ `%s' óôï `%s'"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "×ñÞóç: %s [ÅÐÉËÏÃÇ]... ÔÅËÅÕÔÁÉÏÓ\n"
+#~ " Þ: %s [ÅÐÉËÏÃÇ]... ÐÑÙÔÏÓ ÔÅËÅÕÔÁÉÏÓ\n"
+#~ " Þ: %s [ÅÐÉËÏÃÇ]... ÐÑÙÔÏÓ ÁÕÎÇÓÇ ÔÅËÅÕÔÁÉÏÓ\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr ""
+#~ "üôáí äçìéïõñãÞôå ðïëëáðëïýò óõíäÝóìïõò, ôï ôåëåõôáßï üñéóìá ðñÝðåé íá "
+#~ "åßíáé êáôÜëïãïò"
+
+#
+#~ msgid "file"
+#~ msgstr "áñ÷åßï"
+
+#
+#~ msgid "files"
+#~ msgstr "áñ÷åßá"
+
+#
+#~ msgid "checksum"
+#~ msgstr "Üèñïéóìá åëÝã÷ïõ"
+
+#
+#~ msgid "checksums"
+#~ msgstr "áèñïßóìáôá åëÝã÷ïõ"
+
+#
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "ïé åðéëïãÝò --string êáé --check åßíáé áìïéâáßùò áðïêëåéüìåíåò"
+
+#
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "äå ìðïñïýí íá äçëþíïíôáé áñ÷åßá üôáí ãßíåôáé ÷ñÞóç ôïõ --string"
+
+#
+#~ msgid "only one argument may be specified when using --check"
+#~ msgstr "ìüíï Ýíá üñéóìá ìðïñåß íá äçëþíåôáé üôáí ãßíåôáé ÷ñÞóç ôïõ --check"
+
+#
+#, fuzzy
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "áäõíáìßá áëëáãÞò éäéïêôçóßáò óôï %s"
+
+#
+#, fuzzy
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "áäõíáìßá áëëáãÞò éäéïêôçóßáò óôï %s"
+
+#
+#, fuzzy
+#~ msgid "wrong number of arguments"
+#~ msgstr "ðïëý ëßãá ïñßóìáôá"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr ""
+#~ "major êáé minor áñéèìïß óõóêåõÞò äåí ðñÝðåé íá ïñßæïíôáé óôá áñ÷åßá fifo"
+
+#
+#, fuzzy
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "áäõíáìßá áëëáãÞò éäéïêôçóßáò óôï %s"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr ""
+#~ "üôáí ìåôáêéíïýíôáé ðïëëáðëÜ áñ÷åßá, ôï ôåëåõôáßï üñéóìá ðñÝðåé íá åßíáé "
+#~ "êáôÜëïãïò"
+
+#, fuzzy
+#~ msgid ""
+#~ "Run COMMAND with an adjusted scheduling priority.\n"
+#~ "With no COMMAND, print the current scheduling priority. ADJUST is 10\n"
+#~ "by default. Range goes from -20 (highest priority) to 19 (lowest).\n"
+#~ "\n"
+#~ " -n, --adjustment=ADJUST increment priority by ADJUST first\n"
+#~ msgstr ""
+#~ "Åêôåëåß ôçí ÅÍÔÏËÇ ìå ìéá ðñïóáñìïãÞ ôçò ðñïôåñáéüôçôáò.\n"
+#~ "×ùñßò êáìéÜ ÅÍÔÏËÇ, åêôõðþíåé ôçí ôñÝ÷ïõóá ðñïãñáììáôéóìÝíç "
+#~ "ðñïôåñáéüôçôá.\n"
+#~ "Åî'ïñéóìïý Þ ðñïóáñìïãÞ åßíáé 10. Ôï ðåäßï êõìáßíåôáé áðï -20 "
+#~ "(õøçëüôåñç \n"
+#~ "ðñïôåñáéüôçôá) ìÝ÷ñé 19 (ç ÷áìçëüôåñç).\n"
+#~ "\n"
+#~ " -ÌÅÔÁÂÏËÇ áõîÜíåé ôçí ðñïôåñáéüôçôá óýìöùíá ìå ôç "
+#~ "ÌÅÔÁÂÏËÇ -n, --adjustment=AJUST üìïéï ôïõ -ÌÅÔÁÂÏËÇ\n"
+#~ " --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+#~ " --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+
+#
+#, fuzzy
+#~ msgid "invalid option `%s'"
+#~ msgstr "ìç Ýãêõñï åßäïò áëöáñéèìçôéêïý `%s'"
+
+#
+#, fuzzy
+#~ msgid "invalid priority `%s'"
+#~ msgstr "ìç Ýãêõñïò áñéèìüò ðåäßïõ: `%s'"
+
+#
+#, fuzzy
+#~ msgid "cannot get priority"
+#~ msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#, fuzzy
+#~ msgid "cannot set priority"
+#~ msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#~ msgid "Scott Bartram and David MacKenzie"
+#~ msgstr "Óêïô ÌðÜñôñáì êáé ÍôÝéâéíô ÌáêÝíæç"
+
+#
+#~ msgid "old-style offset"
+#~ msgstr "ðáëáéïý åßäïõò èÝóç"
+
+#
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "ìç Ýãêõñïò äåýôåñïò ôåëåóôÞò óå êáôÜóôáóç óõìâáôüôçôáò `%s'"
+
+#
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr ""
+#~ "óå êáôÜóôáóç óõìâáôüôçôáò, ôá ôåëåõôáßá äýï ïñßóìáôá ðñÝðåé íá åßíáé "
+#~ "èÝóåéò"
+
+#, fuzzy
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr ""
+#~ "Äéáãíþóôçêáí ìÞ óõìâáôÝò ìå Üëëá óõóôÞìáôá óõíôÜîåéò óôï ÏÍÏÌÁ.\n"
+#~ "\n"
+#~ " -p, --portability ÅëÝã÷åé ãéá üëá ôá óõóôÞìáôá POSIX, ü÷é ìüíï ãéá\n"
+#~ " ôï ôñÝ÷ïí.\n"
+#~ " --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+#~ " --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+
+#
+#, fuzzy
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "ôï ìÝãåèïò óôçëïãíþìïíá ðåñéÝ÷åé ìç Ýãêõñï ÷áñáêôÞñá"
+
+#
+#, fuzzy
+#~ msgid "`%s' is not a directory"
+#~ msgstr "ôï `%s' õðÜñ÷åé Þäç Üëëá äåí åßíáé êáôÜëïãïò"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "Ï êáôÜëïãïò `%s' äåí åßíáé ðñïóéôüò."
+
+#, fuzzy
+#~ msgid "name `%s' has length %ld; exceeds limit of %ld"
+#~ msgstr "Ôï üíïìá `%s' Ý÷åé ìÞêïò %d. ÎåðåñíÜ ôï %d ðïõ åßíáé ôï üñéï."
+
+#, fuzzy
+#~ msgid "path `%s' has length %d; exceeds limit of %ld"
+#~ msgstr "Ç äéáäñïìÞ `%s' Ý÷åé ìÞêïò %d. ÎåðåñíÜ ôï %d ðïõ åßíáé ôï üñéï."
+
+#
+#~ msgid "Pete TerMaat and Roland Huebner"
+#~ msgstr "Ðéô ÔåñÌÜô êáé Ñüëáíô ×Ýìðíåñ"
+
+#
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "`--pages' ìç Ýãêõñï üñéï áðü áñéèìïýò óåëßäùí: `%s'"
+
+#
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "`--pages' ìç Ýãêõñïò áñéèìüò áñ÷éêÞò óåëßäáò: `%s'"
+
+#
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "`--pages' ìç Ýãêõñïò áñéèìüò ôåëéêÞò óåëßäáò: `%s'"
+
+#
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr ""
+#~ "`--pages' ï áñéèìüò áñ÷éêÞò óåëßäáò åßíáé ìåãáëýôåñïò áðü ôçò ôåëéêÞò "
+#~ "óåëßäáò"
+
+#
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "`--columns=ÓÔÇËÇ' ìç Ýãêõñïò áñéèìüò óôçëþí: `%s'"
+
+#
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%b %e %H:%M %Y"
+
+#
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr ""
+#~ "ï áñ÷éêüò áñéèìüò óåëßäáò åßíáé ìåãáëýôåñïò áðü ôï óõíïëéêü áñéèìü "
+#~ "óåëßäùí: `%d'"
+
+#
+#~ msgid "Page %d"
+#~ msgstr "Óåëßäá %d"
+
+#
+#, fuzzy
+#~ msgid "\\%c: invalid escape"
+#~ msgstr "%s: ìç Ýãêõñç ìïñöÞ"
+
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "×ñÞóç: %s ÌÏÑÖÇ [ÐÁÑÁÌÅÔÑÏÉ...]\n"
+
+#
+#, fuzzy
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "áäýíáôç ç áëëáãÞ óôï êáôÜëïãï %s"
+
+#, fuzzy
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "Äåí åßíáé äõíáôüí íá åêôåëåóôåß ôï %s"
+
+#
+#, fuzzy
+#~ msgid "cannot lstat %s"
+#~ msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#
+#, fuzzy
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "áäýíáôç ç áëëáãÞ óôï êáôÜëïãï %s"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "äåí åßíáé äõíáôü íá äéáãñáöïýí ôá `.' Þ `..'"
+
+#, fuzzy
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ " -r, -R, --recursive remove the contents of directories recursively\n"
+#~ " -v, --verbose explain what is being done\n"
+#~ msgstr ""
+#~ "ÄéáãñáöÞ (unlink) ÁÑ×ÅÉÏÕ(ÙÍ).\n"
+#~ "\n"
+#~ " -d, --directory äéáãñáöÞ êáôáëüãïõ, áêüìá êáé áí äåí åßíáé Üäåéïò "
+#~ "(ìüíï\n"
+#~ " õðåñ÷ñÞóôçò)\n"
+#~ " -f, --force áãíüçóå áñ÷åßá ðïõ äåí õðÜñ÷ïõí, ÷ùñßò "
+#~ "åðéâåâáßùóç\n"
+#~ " -i, --interactive åðéâåâáßùóç ðñéí êÜèå äéáãñáöÞ prompt\n"
+#~ " -r, -R, --recursive äéáãñáãÞ ôùí ðåñéå÷ïìÝíùí ôùí êáôáëüãùí "
+#~ "áíáäñïìéêÜ\n"
+#~ " -v, --verbose åîÞãçóç ôïõ ôé óõìâáßíåé\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "Ãéá ôç äéáãñáöÞ åíüò áñ÷åßïõ ðïõ ôï üíïìá ôïõ îåêéíÜ ìå `-', ãéá "
+#~ "ðáñÜäåéãìá\n"
+#~ "`-foo', êÜíôå ÷ñÞóç ìéáò áðü ôéò ðáñáêÜôù åíôïëÝò:\n"
+#~ " %s -- -foo\n"
+#~ " %s ./-foo\n"
+
+#~ msgid ""
+#~ "when the starting value is larger than the limit,\n"
+#~ "the increment must be negative"
+#~ msgstr ""
+#~ "Ïôáí ç áñ÷éêÞ ôéìÞ åßíáé ìåãáëýôåñç ôïõ üñéïõ,\n"
+#~ "ç áýîçóç ðñÝðåé íá åßíáé áñíçôéêÞ."
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "when the starting value is smaller than the limit,\n"
+#~ "the increment must be positive"
+#~ msgstr ""
+#~ "ôï üñéóìá Ýíáñîçò ðåäßïõ áñéèìïý óôçí åðéëïãÞ `-k' ðñÝðåé íá åßíáé èåôéêüò"
+
+#
+#~ msgid "stdin: read error"
+#~ msgstr "stdin: óöÜëìá áíÜãíùóçò"
+
+#
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "%c: ìç Ýãêõñïò ÷áñáêôÞñáò êáôÜëçîçò óå åêôüò ÷ñÞóçò åðéëïãÞ"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "Ðñïåéäïðïßçóç: äåí åßíáé ìåôáöÝñóéìï íá ãßíåôå ÷ñÞóç äýï Þ ðåñéóóüôåñï "
+#~ "ïñéóìÜôùí\n"
+#~ "ãéá áñ÷åßá ìå ôï åêôüò ÷ñÞóçò óõíôáêôéêü (%s). ÊÜíôå ÷ñÞóç ôïõ éóïäýíáìïõ "
+#~ "-n Þ -c\n"
+#~ "óôç ðåñßðôùóç áõôÞ."
+
+#
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "Ðñïåéäïðïßçóç: äåí åßíáé ìåôáöÝñóéìï íá ãßíåôå ÷ñÞóç äýï Þ ðåñéóóüôåñï "
+#~ "ïñéóìÜôùí\n"
+#~ "ãéá áñ÷åßá ìå ôï åêôüò ÷ñÞóçò óõíôáêôéêü (%s). ÊÜíôå ÷ñÞóç ôïõ éóïäýíáìïõ "
+#~ "-n Þ -c\n"
+#~ "óôç ðåñßðôùóç áõôÞ."
+
+#
+#, fuzzy
+#~ msgid "%s: is so large that it is not representable"
+#~ msgstr "%s: ôï %s åßíáé ôüóï ìåãÜëï ðïõ äå ìðïñåß íá áíáðáñáóôáèåß"
+
+#
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr "%s: ìç Ýãêõñïò ìÝãéóôïò áñéèìüò áðü äéáäï÷éêÝò áëëáãÝò ìåãÝèïõò"
+
+#
+#, fuzzy
+#~ msgid "Mike Parker, Richard M. Stallman, and David MacKenzie"
+#~ msgstr "Ñßôóáñíô ÓôÜëìáí êáé ÍôÝéâéíô ÌáêÝíæç"
+
+#~ msgid "argument expected\n"
+#~ msgstr "Áíáìåíüôáí ðáñÜìåôñïò.\n"
+
+#~ msgid "integer expression expected %s\n"
+#~ msgstr "Áíáìåíüôáí áêÝñáéá Ýêöñáóç %s\n"
+
+#~ msgid "before -lt"
+#~ msgstr "ðñéí -lt"
+
+#~ msgid "after -lt"
+#~ msgstr "ìåôÜ -lt"
+
+#~ msgid "before -le"
+#~ msgstr "ðñéí -le"
+
+#~ msgid "after -le"
+#~ msgstr "ìåôÜ -le"
+
+#~ msgid "before -gt"
+#~ msgstr "ðñéí -gt"
+
+#~ msgid "after -gt"
+#~ msgstr "ìåôÜ -gt"
+
+#~ msgid "before -ge"
+#~ msgstr "ðñéí -ge"
+
+#~ msgid "after -ge"
+#~ msgstr "ìåôÜ -ge"
+
+#~ msgid "before -ne"
+#~ msgstr "ðñéí -ne"
+
+#~ msgid "after -ne"
+#~ msgstr "ìåôÜ -ne"
+
+#~ msgid "before -eq"
+#~ msgstr "ðñéí -eq"
+
+#~ msgid "after -eq"
+#~ msgstr "ìåôÜ -eq"
+
+#, fuzzy
+#~ msgid "after -t"
+#~ msgstr "ìåôÜ -lt"
+
+#
+#, fuzzy
+#~ msgid "too many arguments\n"
+#~ msgstr "ðÜñá ðïëëÜ ïñßóìáôá"
+
+#
+#, fuzzy
+#~ msgid "file arguments missing"
+#~ msgstr "ðïëý ëßãá ïñßóìáôá"
+
+#
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "ìç Ýãêõñç äéáöõãÞ ìå ðéóùêÜèåôï `\\%c'`"
+
+#
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr ""
+#~ "äýï áëöáñéèìçôéêÜ ðñÝðåé íá äßíïíôáé üôáí ãßíïíôáé äéáãñáöÞ êáé\n"
+#~ "óõìðõêíþóåéò åðáíáëÞøåùí"
+
+#
+#~ msgid "at least one string must be given when squeezing repeats"
+#~ msgstr ""
+#~ "ôïõëÜ÷éóôïí Ýíá áëöáñéèìçôéêü ðñÝðåé íá äßíåôáé üôáí óõìðõêíþíïíôáé\n"
+#~ "åðáíáëÞøåéò"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "×ñÞóç: %s [ÏÍÏÌÁ]\n"
+#~ " Þ: %s ÅÐÉËÏÃÇ\n"
+#~ "Åêôõðþíåé ôï üíïìá(hostname) ôïõ óõóôÞìáôïò.\n"
+#~ "\n"
+#~ " --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+#~ " --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+
+#
+#~ msgid "only one argument may be specified"
+#~ msgstr "ìüíï Ýíá üñéóìá ìðïñåß íá äçëùèåß"
+
+#
+#, fuzzy
+#~ msgid "Joseph Arceneaux and David MacKenzie"
+#~ msgstr "Óêïô ÌðÜñôñáì êáé ÍôÝéâéíô ÌáêÝíæç"
+
+#
+#~ msgid "Paul Rubin and David MacKenzie"
+#~ msgstr "Ðùë Ñïýìðéí êáé ÍôÝéâéíô ÌáêÝíæç"
+
+#~ msgid "%s: cannot find username for UID %u\n"
+#~ msgstr "%s: äåí ìðïñåé íá âñåèåß üíïìá ÷ñÞóôç ãéá ôï 'UID' %u\n"
+
+#
+#, fuzzy
+#~ msgid "Try %s --help' for more information.\n"
+#~ msgstr "ÄïêéìÜóôå `%s --help' ãéá ðåñéóóüôåñç âïÞèåéá.\n"
+
+#, fuzzy
+#~ msgid "cannot lstat `.'"
+#~ msgstr "Äåí ìðïñåß íá ôåèåß ç çìåñïìçíßá."
+
+#
+#, fuzzy
+#~ msgid "%s: remove directory %s? "
+#~ msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#, fuzzy
+#~ msgid "%s: directory %s is write protected; descend into it anyway? "
+#~ msgstr ""
+#~ "%s: ï êáôÜëïãïò `%s' ðñïóôáôåýåôáé áðü åããñáöÞ· äéÜó÷õóç óå áõôü "
+#~ "ðáñïëáõôÜ; "
+
+#~ msgid "removing all entries of directory %s\n"
+#~ msgstr "äéáãñáöÞ üëùí ôùí åããñáöþí ôïõ êáôáëüãïõ %s\n"
+
+#~ msgid "continue? "
+#~ msgstr "óõíÝ÷åéá; "
+
+#
+#, fuzzy
+#~ msgid "cannot change back to directory %s via `..'"
+#~ msgstr "áäýíáôç ç áëëáãÞ óôï êáôÜëïãï %s"
+
+#
+#, fuzzy
+#~ msgid "%s: remove directory %s%s? "
+#~ msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#~ msgid " (might be nonempty)"
+#~ msgstr " (ìðïñåß íá ìçí åßíáé Üäåéï)"
+
+#, fuzzy
+#~ msgid "removing the directory itself: %s\n"
+#~ msgstr "ÐÑÏÓÏ×Ç: äåí åßíáé äõíáôüí íá áëëá÷ôåß ï êáôÜëïãïò óå %s"
+
+#
+#, fuzzy
+#~ msgid "cannot fork"
+#~ msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "ERROR: the source file %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after opening it), the numbers\n"
+#~ "are %lu/%lu. That means that while this program was running,\n"
+#~ "the file was replaced with another one. Skipping this file."
+#~ msgstr ""
+#~ "ÓÖÁËÌÁ: ï êáôÜëïãïò `%s' åß÷å áñ÷éêÜ áñéèìïýò óõóêåõÞò/é-êüìâïõ\n"
+#~ "%lu/%lu, áëëÜ ôþñá (ìåôÜ áðü Ýíá chdir óå áõôüí), ïé áñéèìïß ãéá ôï `.'\n"
+#~ "åßíáé %lu/%lu. Áõôü óçìáßíåé üôé êáôÜ ôçí åêôÝëåóç ôçò rm, o êáôÜëïãïò\n"
+#~ "áíôéêáôáóôÜèçêå ìå åßôå Ýíá Üëëï êáôÜëïãï Þ ìå Ýíá óýíäåóìï óå Üëëï "
+#~ "êáôÜëïãï."
+
+#, fuzzy
+#~ msgid ""
+#~ "ERROR: the directory %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after a chdir into it), the numbers for `.'\n"
+#~ "are %lu/%lu. That means that while rm was running, the directory\n"
+#~ "was replaced with either another directory or a link to another directory."
+#~ msgstr ""
+#~ "ÓÖÁËÌÁ: ï êáôÜëïãïò `%s' åß÷å áñ÷éêÜ áñéèìïýò óõóêåõÞò/é-êüìâïõ\n"
+#~ "%lu/%lu, áëëÜ ôþñá (ìåôÜ áðü Ýíá chdir óå áõôüí), ïé áñéèìïß ãéá ôï `.'\n"
+#~ "åßíáé %lu/%lu. Áõôü óçìáßíåé üôé êáôÜ ôçí åêôÝëåóç ôçò rm, o êáôÜëïãïò\n"
+#~ "áíôéêáôáóôÜèçêå ìå åßôå Ýíá Üëëï êáôÜëïãï Þ ìå Ýíá óýíäåóìï óå Üëëï "
+#~ "êáôÜëïãï."
+
+#, fuzzy
+#~ msgid ""
+#~ "ERROR: the directory %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after changing into at least one subdirectory\n"
+#~ "and changing back via `..'), the numbers for `.' are %lu/%lu.\n"
+#~ "That means that while rm was running, a partially-removed subdirectory\n"
+#~ "was moved to a different position in the file system hierarchy."
+#~ msgstr ""
+#~ "ÓÖÁËÌÁ: ï êáôÜëïãïò `%s' åß÷å áñ÷éêÜ áñéèìïýò óõóêåõÞò/é-êüìâïõ\n"
+#~ "%lu/%lu, áëëÜ ôþñá (ìåôÜ áðü Ýíá chdir óå áõôüí), ïé áñéèìïß ãéá ôï `.'\n"
+#~ "åßíáé %lu/%lu. Áõôü óçìáßíåé üôé êáôÜ ôçí åêôÝëåóç ôçò rm, o êáôÜëïãïò\n"
+#~ "áíôéêáôáóôÜèçêå ìå åßôå Ýíá Üëëï êáôÜëïãï Þ ìå Ýíá óýíäåóìï óå Üëëï "
+#~ "êáôÜëïãï."
+
+#, fuzzy
+#~ msgid " or: %s [-acm] MMDDhhmm[YY] FILE... (obsolete)\n"
+#~ msgstr " ç : %s [-acm] MMDDhhmm[YY] ÁÑ×ÅÉÏ... (äåí åßíáé óå ÷ñÞóç)\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#~ msgid ""
+#~ "Change the group membership of each FILE to GROUP.\n"
+#~ "\n"
+#~ " -c, --changes like verbose but report only when a change is "
+#~ "made\n"
+#~ " --dereference affect the referent of each symbolic link, "
+#~ "rather\n"
+#~ " than the symbolic link itself\n"
+#~ " -h, --no-dereference affect symbolic links instead of any referenced "
+#~ "file\n"
+#~ " (available only on systems that can change the\n"
+#~ " ownership of a symlink)\n"
+#~ " -f, --silent, --quiet suppress most error messages\n"
+#~ " --reference=RFILE use RFILE's group rather than the specified\n"
+#~ " GROUP value\n"
+#~ " -R, --recursive operate on files and directories recursively\n"
+#~ " -v, --verbose output a diagnostic for every file processed\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÁëëáãÞ ôçò óõììåôï÷Þò óå ïìÜäá êÜèå áñ÷åßïõ ÁÑ×ÅÉÏ óôçí ÏÌÁÄÁ.\n"
+#~ "\n"
+#~ " -c, --changes üðùò ôï \"--verbose\" áëëÜ åìöÜíéóç ìçíýìáôïò "
+#~ "ìüíï\n"
+#~ " üôáí ãßíåôáé áëëáãÞ\n"
+#~ " --dereference áëëáãÞ óôï áíáöåñüìåíï áñ÷åßï êÜèå óõìâïëéêïý\n"
+#~ " óõíäÝóìïõ áíôß óôïí ßäéï ôïí óýíäåóìï\n"
+#~ " -h, --no-dereference ôñïðïðïßçóç ìüíï ôùí óõìâïëéêþí óõíäÝóìùí áíôß "
+#~ "óôá\n"
+#~ " áíáöåñüìåíá áñ÷åßá (äéáèÝóéìï ìüíï óôá "
+#~ "óõóôÞìáôá\n"
+#~ " ðïõ åðéôñÝðïõí ôçí áëëáãÞ éäéïêôÞôç óå "
+#~ "óõìâïëéêü\n"
+#~ " óýíäåóìï)\n"
+#~ " -f, --silent, --quiet áðïöõãÞ åìöÜíéóçò ôùí ðåñéóóüôåñùí ìçíõìÜôùí\n"
+#~ " óöÜëìáôïò\n"
+#~ " --reference=ÁÑ×ÅÉÏÁÍÁÖÏÑÁÓ ÷ñÞóç ôçò ïìÜäáò ôïõ ÁÑ×ÅÉÏÁÍÁÖÏÑÁÓ\n"
+#~ " áíôß ôéò ôéìÞò ÏÌÁÄÁ\n"
+#~ " -R, --recursive áíáäñïìéêÝò áëëáãÝò óôá áñ÷åßá êáé óôïõò\n"
+#~ " êáôáëüãïõò\n"
+#~ " -v, --verbose åìöÜíéóç äéáãíùóôéêþí ìçíõìÜôùí ãéá êÜèå "
+#~ "áñ÷åßï\n"
+#~ " ðïõ åðåîåñãÜæåôáé\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+#~ "\n"
+#~ " -c, --changes like verbose but report only when a change is "
+#~ "made\n"
+#~ " --dereference affect the referent of each symbolic link, "
+#~ "rather\n"
+#~ " than the symbolic link itself\n"
+#~ " -h, --no-dereference affect symbolic links instead of any referenced "
+#~ "file\n"
+#~ " (available only on systems that can change the\n"
+#~ " ownership of a symlink)\n"
+#~ " --from=CURRENT_OWNER:CURRENT_GROUP\n"
+#~ " change the owner and/or group of each file only "
+#~ "if\n"
+#~ " its current owner and/or group match those "
+#~ "specified\n"
+#~ " here. Either may be omitted, in which case a "
+#~ "match\n"
+#~ " is not required for the omitted attribute.\n"
+#~ " -f, --silent, --quiet suppress most error messages\n"
+#~ " --reference=RFILE use RFILE's owner and group rather than\n"
+#~ " the specified OWNER:GROUP values\n"
+#~ " -R, --recursive operate on files and directories recursively\n"
+#~ " -v, --verbose output a diagnostic for every file processed\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "ÁëëáãÞ ôïõ éäéïêôÞôç êáé/Þ ôçò ïìÜäá ãéá êÜèå áñ÷åßï, óå ÉÄÉÏÊÔÇÔÇ êáé/ç "
+#~ "ÏÌÁÄÁ.\n"
+#~ "\n"
+#~ " -c, --changes üðùò ôï \"--verbose\" áëëÜ åìöÜíéóç ìçíýìáôïò "
+#~ "ìüíï\n"
+#~ " üôáí ãßíåôáé áëëáãÞ\n"
+#~ " --dereference áëëáãÞ óôï áíáöåñüìåíï áñ÷åßï êÜèå óõìâïëéêïý\n"
+#~ " óõíäÝóìïõ áíôß óôïí ßäéï ôï óýíäåóìï\n"
+#~ " -h, --no-dereference ôñïðïðïßçóç ìüíï ôùí óõìâïëéêþí óõíäÝóìùí áíôß "
+#~ "óôá\n"
+#~ " áíáöåñüìåíá áñ÷åßá (äéáèÝóéìï ìüíï óôá "
+#~ "óõóôÞìáôá\n"
+#~ " ðïõ åðéôñÝðïõí ôçí áëëáãÞ éäéïêôÞôç óå "
+#~ "óõìâïëéêü\n"
+#~ " óýíäåóìï)\n"
+#~ " --from=ÔÑÅ×ÙÍ_ÉÄÉÏÊÔÇÔÇÓ:ÔÑÅ×ÏÕÓÁ_ÏÌÁÄÁ\n"
+#~ " áëëáãÞ ôïõ éäéïêôÞôç êáé/Þ ôçò ïìÜäáò êÜèå "
+#~ "áñ÷åßïõ ìüíï\n"
+#~ " áí ï ôñÝ÷ùí éäéïêôÞôçò êáé/Þ ïìÜäá ôáéñéÜæïõí ìå "
+#~ "ôéò\n"
+#~ " ôéìÝò åäþ. ¸íá áðü ôá äýï ìðïñåß íá ðáñáëçöèåß, "
+#~ "ïðüôå\n"
+#~ " äåí áðáéôåßôáé ôáßñéáóìá óôï ðáñáëåéðüìåíç "
+#~ "éäéüôçôá.\n"
+#~ " -f, --silent, --quiet áðïöõãÞ åìöÜíéóçò ôùí ðåñéóóüôåñùí ìçíõìÜôùí\n"
+#~ " óöÜëìáôïò\n"
+#~ " --reference=ÁÑ×ÅÉÏÁÍÁÖÏÑÁÓ ÷ñÞóç ôïõ éäéïêôÞôç êáé ôçò ïìÜäáò\n"
+#~ " ôïõ ÁÑ×ÅÉÏÁÍÁÖÏÑÁÓ áíôß ôùí ôéìþí ÉÄÉÏÊÔÇÔÇÓ:"
+#~ "ÏÌÁÄÁ\n"
+#~ " -R, --recursive áëëáãÝò óôá áñ÷åßá êáé óôïõò êáôáëüãïõò "
+#~ "áíáäñïìéêÜ\n"
+#~ " -v, --verbose åìöÜíéóç äéáãíùóôéêþí ìçíõìÜôùí ãéá êÜèå "
+#~ "áñ÷åßï\n"
+#~ " ðïõ åðåîåñãÜæåôáé\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "Ï éäéïêôÞôçò äåí áëëÜæåé áí Ý÷åé ðáñáëçöèåß. Ç ïìÜäá äåí áëëÜæåé áí Ý÷åé\n"
+#~ "ðáñáëçöèåß, ôñïðïðïéåßôáé óôç âáóéêÞ ïìÜäá ÷ñÞóôç áí ôïðïèåôçèåß ï\n"
+#~ "÷áñáêôÞñáò 'Üíù-êÜôù ôåëßá'. Ï ÉÄÉÏÊÔÇÔÇÓ êáé ç ÏÌÁÄÁ ìðïñïýí íá Ý÷ïõí\n"
+#~ "åßôå áñéèìçôéêÞ åßôå óõìâïëéêÞ ôéìÞ.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -l, --link link files instead of copying\n"
+#~ " -L, --dereference always follow symbolic links\n"
+#~ " -p same as --preserve=mode,ownership,"
+#~ "timestamps\n"
+#~ " --preserve[=ATTR_LIST] preserve the specified attributes "
+#~ "(default:\n"
+#~ " mode,ownership,timestamps), if possible\n"
+#~ " additional attributes: links, all\n"
+#~ " --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+#~ " --parents append source path to DIRECTORY\n"
+#~ " -P same as `--no-dereference'\n"
+#~ " -r copy recursively, non-directories as "
+#~ "files\n"
+#~ " WARNING: use -R instead when you might "
+#~ "copy\n"
+#~ " special files like FIFOs or /dev/zero\n"
+#~ " --remove-destination remove each existing destination file "
+#~ "before\n"
+#~ " attempting to open it (contrast with --"
+#~ "force)\n"
+#~ msgstr ""
+#~ "ÁíôéãñáöÞ ôçò ÐÇÃÇò óôï ÐÑÏÏÑÉÓÌÏÓ Þ ðïëëáðëÝò ÐÇÃÇ(ÅÓ) óôï ÊÁÔÁËÏÃÏ.\n"
+#~ "\n"
+#~ " -a, --archive ôï ßäéï ìå -dpR\n"
+#~ " --backup=[ÅËÅÃ×ÏÓ] äçìéïõñãßá áíôéãñÜöïõ áóöáëåßáò ãéá êÜèå "
+#~ "áñ÷åßï\n"
+#~ " ðñïïñéóìïý\n"
+#~ " -b üðùò ôï --backup áëëÜ äåí áðáéôåß "
+#~ "ðáñÜìåôñï\n"
+#~ " -d, --no-dereference äéáôÞñçóç óõìâïëéêþí óõíäÝóìùí\n"
+#~ " -f, --force äéáãñáöÞ õðáñ÷üíôùí ðñïïñéóìþí, ÷ùñßò\n"
+#~ " åðéâåâáßùóç äéáãñáöÞò\n"
+#~ " -i, --interactive áðáßôçóç äéáâåâáßùóçò äéáãñáöÞò ðñéí ôç\n"
+#~ " äéáãñáöÞ ëüãù åðéêÜëõøçò\n"
+#~ " -l, --link äçìéïõñãßá óõíäÝóìùí áíôß áíôéãñÜöùí\n"
+#~ " -p, --preserve äéáôÞñçóç ÷áñáêôçñéóôéêþí ôùí áñ÷åßùí, áí\n"
+#~ " åßíáé äõíáôüí\n"
+#~ " -P, --parents ðñïóèÞêç äéáäñïìÞò ôçò ðçãÞò óôï "
+#~ "ÊÁÔÁËÏÃÏÓ\n"
+#~ " -r áíôéãñáöÞ áíáäñïìéêÜ, ôïõò ìç-êáôáëüãïõò "
+#~ "óáí\n"
+#~ " áñ÷åßá\n"
+#~ " ÐÑÏÅÉÄÏÐÏÉÇÓÇ: êÜíôå ÷ñÞóç ôïõ -R üôáí\n"
+#~ " ðñüêåéôå íá áíôéãñÜøåôå åéäéêÜ áñ÷åßá "
+#~ "üðùò\n"
+#~ " FIFO Þ ôï /dev/zero\n"
+#~ " --sparse=WHEN Ýëåã÷ïò ôçò äçìéïõñãßáò áñáéþí (sparse)\n"
+#~ " áñ÷åßùí\n"
+#~ " -R, --recursive áíôéãñáöÞ êáôáëüãùí áíáäñïìéêÜ\n"
+#~ " --strip-trailing-slashes áðïìÜêñõíóç ïôéäÞðïôå êÜèåôùí ðïõ Ýðïíôáé "
+#~ "áðü\n"
+#~ " êÜèå üñéóìá ÐÇÃÇÓ\n"
+#~ " -s, --symbolic-link äçìéïõñãßá óõìâïëéêþí óõíäÝóìùí áíôß\n"
+#~ " áíôéãñÜöùí\n"
+#~ " -S, --suffix=ÊÁÔÁËÇÎÇ ðáñÜêáìøç ôçò óõíçèéóìÝíçò êáôÜëçîçò ôùí\n"
+#~ " áíôéãñÜöùí áóöáëåßáò\n"
+#~ " --target-directory=ÊÁÔÁËÏÃÏÓ ìåôáêßíçóå üëá ôá ïñßóìáôá ãéá ÐÇÃÇ "
+#~ "óôï\n"
+#~ " ÊÁÔÁËÏÃÏÓ\n"
+#~ " -u, --update áíôéãñáöÞ ìüíï üôáí ôï áñ÷åßï ÐÇÃÇ åßíáé\n"
+#~ " íåþôåñï áðü ôï áñ÷åßï ÐÑÏÏÑÉÓÌÏÓ Þ üôáí\n"
+#~ " ôï áñ÷åßï ðñïïñéóìüò äåí õðÜñ÷åé\n"
+#~ " -v, --verbose åîÞãçóç ôïõ ôß ãßíåôáé\n"
+#~ " -x, --one-file-system ðáñáìïíÞ óôï ôñÝ÷ïí óýóôçìá áñ÷åßùí\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "¸î ïñéóìïý, ôá áñáßá (sparse) áñ÷åßá ÐÇÃÇÓ áíáãùñßæïíôáé ìå Ýíá ü÷é ôüóï\n"
+#~ "êáëü åõñåóôéêü áëãüñéèìï êáé ôï áíôßóôïé÷ï áñ÷åßï ÐÑÏÏÑÉÓÌÏÕ ãßíåôáé "
+#~ "áñáéü\n"
+#~ "åðßóçò. ÁõôÞ åßíáé ç óõìðåñéöïñÜ ôçò åðéëïãÞò --sparse=auto. ÅðéëÝîôå\n"
+#~ "--sparse=always ãéá ôç äçìéïõñãßá áñáéþí áñ÷åßùí ÐÑÏÏÑÉÓÌÏÕ ïðüôå ôï "
+#~ "áñ÷åßï\n"
+#~ "ÐÇÃÇ ðåñéÝ÷åé áñêåôÜ ìåãÜëåò óåéñÝò áðü ìçäåíéêÜ bytes.\n"
+#~ "Ìå --sparse=never áðïãïñåýåôå ôç äçìéïõñãßá áñáéþí áñ÷åßùí.\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Copy a file, converting and formatting according to the options.\n"
+#~ "\n"
+#~ " bs=BYTES force ibs=BYTES and obs=BYTES\n"
+#~ " cbs=BYTES convert BYTES bytes at a time\n"
+#~ " conv=KEYWORDS convert the file as per the comma separated keyword "
+#~ "list\n"
+#~ " count=BLOCKS copy only BLOCKS input blocks\n"
+#~ " ibs=BYTES read BYTES bytes at a time\n"
+#~ " if=FILE read from FILE instead of stdin\n"
+#~ " obs=BYTES write BYTES bytes at a time\n"
+#~ " of=FILE write to FILE instead of stdout\n"
+#~ " seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+#~ " skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "BLOCKS and BYTES may be followed by the following multiplicative "
+#~ "suffixes:\n"
+#~ "xM M, c 1, w 2, b 512, kD 1000, k 1024, MD 1,000,000, M 1,048,576,\n"
+#~ "GD 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.\n"
+#~ "Each KEYWORD may be:\n"
+#~ "\n"
+#~ " ascii from EBCDIC to ASCII\n"
+#~ " ebcdic from ASCII to EBCDIC\n"
+#~ " ibm from ASCII to alternated EBCDIC\n"
+#~ " block pad newline-terminated records with spaces to cbs-size\n"
+#~ " unblock replace trailing spaces in cbs-size records with newline\n"
+#~ " lcase change upper case to lower case\n"
+#~ " notrunc do not truncate the output file\n"
+#~ " ucase change lower case to upper case\n"
+#~ " swab swap every pair of input bytes\n"
+#~ " noerror continue after read errors\n"
+#~ " sync pad every input block with NULs to ibs-size; when used\n"
+#~ " with block or unblock, pad with spaces rather than NULs\n"
+#~ msgstr ""
+#~ "ÁíôéãñáöÞ áñ÷åßïõ, ìåôáôñïðÞ êáé ìïñöïðïßçóç âÜóç ôùí åðéëïãþí.\n"
+#~ "\n"
+#~ " bs=BYTES åðéâïëÞ ibs=BYTES êáé obs=BYTES\n"
+#~ " cbs=BYTES ìåôáôñïðÞ BYTES bytes ôç öïñÜ\n"
+#~ " conv=ËÅÊÔÉÊÁ ìåôáôñïðÞ óýìöùíá ìå ôç äéá÷ùñéæüìåíç ìå êüììá "
+#~ "ëßóôáëåêôéêþí\n"
+#~ " count=ÌÐËÏÊ áíôéãñáöÞ ìüíï BLOCKS ìðëïê åéóüäïõ\n"
+#~ " ibs=BYTES áíÜãíùóç BYTES bytes ôç öïñÜ\n"
+#~ " if=ÁÑ×ÅÉÏ áíÜãíùóç áðü ÁÑ×ÅÉÏ áíôß áðü ôç êáíïíéêÞ åßóïäï\n"
+#~ " obs=BYTES åããñáöÞ BYTES bytes ôç öïñÜ\n"
+#~ " of=ÁÑ×ÅÉÏ åããñáöÞ óôï ÁÑ×ÅÉÏ áíôß óôç êáíïíéêÞ Ýîïäï, ÷ùñßò "
+#~ "åðéêÜëõøç\n"
+#~ " seek=ÌÐËÏÊ ðáñÜëçøç ôùí ÌÐËÏÊ ìðëïê ìåãÝèïõò obs óôçí áñ÷Þ ôçò "
+#~ "åîüäïõ\n"
+#~ " skip=ÌÐËÏÊ ðáñÜëçøç ôùí ÌÐËÏÊ ìðëïê ìåãÝèïõò ibs óôçí áñ÷Þ ôçò "
+#~ "åéóüäïõ\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "ôï BYTES ìðïñåß íá öÝñåé ôéò åðüìåíåò ðïëëáðëáóéáóôéêÝò êáôáëÞîåéò:\n"
+#~ "xM M, c 1, w 2, b 512, kD 1000, k 1024, MD 1,000,000, M 1,048,576,\n"
+#~ "GD 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.\n"
+#~ "ÊÜèå ËÅÊÔÉÊÏ ìðïñåß íá åßíáé:\n"
+#~ "\n"
+#~ " ascii áðü EBCDIC óå ASCII\n"
+#~ " ebcdic áðü ASCII óå EBCDIC\n"
+#~ " ibm áðü ASCII óå åííáëáêôéêü EBCDIC\n"
+#~ " block óõìðëÞñùóç ôùí åããñáöþí ðïõ ôåñìáôßæïíôáé ìå ôï ÷áñáêôÞñá"
+#~ "\t áëëáãÞò ãñáììÞò ìå ôï ÷áñáêôÞñá äéáóôÞìáôïò ãéá "
+#~ "ó÷çìáôéóìü ìåãÝèïõò cbs\n"
+#~ " unblock áíôéêáôÜóôáóç ôåëéêþí äéáóôçìÜôùí óôéò åããñáöÝò cbs ìå "
+#~ "÷áñáêôÞñá áëëáãÞò ãñáììÞò\n"
+#~ " lcase áëëáãÞ êåöáëáßùí óå ðåæÜ\n"
+#~ " notrunc áðïöõãÞ äçìéïõñãßáò áñ÷åßïõ åîüäïõ üôáí õðÜñ÷åé áñ÷åßï\n"
+#~ "\t ìå ôï ßäéï üíïìá\n"
+#~ " ucase áëëáãÞ ðåæþí óå êåöáëáßá\n"
+#~ " swab áíôéêáôÜóôáóç ìåôáîý ôïõò êÜèå æåõãáñéïý áðü bytes åéóüäïõ\n"
+#~ " noerror óõíÝ÷éóç áêüìá êáé ìå óöÜëìáôá áíÜãíùóçò\n"
+#~ " sync óõìðëÞñùóç êÜèå ìðëïê åéóüäïõ ìå NUL ãéá íá ó÷çìáôéóôåß "
+#~ "ìÝãåèïò ibs\n"
+
+#~ msgid ""
+#~ "Show information about the filesystem on which each FILE resides,\n"
+#~ "or all filesystems by default.\n"
+#~ "\n"
+#~ " -a, --all include filesystems having 0 blocks\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -i, --inodes list inode information instead of block usage\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l, --local limit listing to local filesystems\n"
+#~ " -m, --megabytes like --block-size=1048576\n"
+#~ " --no-sync do not invoke sync before getting usage info "
+#~ "(default)\n"
+#~ " -P, --portability use the POSIX output format\n"
+#~ " --sync invoke sync before getting usage info\n"
+#~ " -t, --type=TYPE limit listing to filesystems of type TYPE\n"
+#~ " -T, --print-type print filesystem type\n"
+#~ " -x, --exclude-type=TYPE limit listing to filesystems not of type "
+#~ "TYPE\n"
+#~ " -v (ignored)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç ðëçñïöïñéþí ãéá ôï óýóôçìá áñ÷åßùí óôï ïðïßï êÜèå ÁÑ×ÅÉÏ "
+#~ "âñßóêåôáé\n"
+#~ "Þ üëùí ôùí óõóôçìÜôùí áñ÷åßùí åî ïñéóìïý.\n"
+#~ "\n"
+#~ " -a, --all óõìðåñßëçøç óõóôçìÜôùí áñ÷åßùí ìå 0 ìðëïê\n"
+#~ " --block-size=ÌÅÃÅÈÏÓ ÷ñÞóç ÌÅÃÅÈÏÓ-byte ìðëïê\n"
+#~ " -h, --human-readable åìöÜíéóç ìåãåèþí óå áíèñùðßíùò áíáãíþóéìç ìïñöÞ "
+#~ "(ð.÷. 1Ê 234Ì 2G)\n"
+#~ " -H, --si üðùò ðáñáðÜíù, áëëÜ ìå äõíÜìåéò ôïõ 1000 áíôß ôïõ "
+#~ "1024\n"
+#~ " -i, --inodes åìöÜíéóç ðëçñïöïñéþí êüìâùí-ä áíôß ÷ñÞóçò ôùí "
+#~ "ìðëïê\n"
+#~ " -k, --kilobytes üðùò --block-size=1024\n"
+#~ " -m, --megabytes üðùò like --block-size=1048576\n"
+#~ " --no-sync íá ìç êëçèåß ç sync ðñéí ðáñèïýí ðëçñïöïñßåò "
+#~ "÷ñÞóçò(åî ïñéóìïý)\n"
+#~ " -P, --portability ÷ñÞóç ôçò ìïñöÞò åîüäïõ POSIX\n"
+#~ " --sync êëÞóç ôçò sync ðñéí ôç ëÞøç ðëçñïöïñéþí ÷ñÞóçò\n"
+#~ " -t, --type=ÅÉÄÏÓ ðåñéïñéóìüò åìöÜíéóçò óôá óõóôÞìáôá áñ÷åßùí ôïõ "
+#~ "åßäïõò ÅÉÄÏÓ\n"
+#~ " -T, --print-type åìöÜíéóç ôï åßäïò ôïõ óõóôÞìáôïò áñ÷åßùí\n"
+#~ " -x, --exclude-type=ÅÉÄÏÓ ðåñéïñéóìüò åìöÜíéóçò óõóôÞìáôïò áñ÷åßùí óå "
+#~ "ü÷é åßäïò ÅÉÄÏÓ\n"
+#~ " -v (áãíïåßôáé)\n"
+#~ " --help åìöÜíéóç áõôÞò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#~ msgid ""
+#~ "Summarize disk usage of each FILE, recursively for directories.\n"
+#~ "\n"
+#~ " -a, --all write counts for all files, not just directories\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -b, --bytes print size in bytes\n"
+#~ " -c, --total produce a grand total\n"
+#~ " -D, --dereference-args dereference PATHs when symbolic link\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l, --count-links count sizes many times if hard linked\n"
+#~ " -L, --dereference dereference all symbolic links\n"
+#~ " -m, --megabytes like --block-size=1048576\n"
+#~ " -S, --separate-dirs do not include size of subdirectories\n"
+#~ " -s, --summarize display only a total for each argument\n"
+#~ " -x, --one-file-system skip directories on different filesystems\n"
+#~ " -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+#~ "FILE.\n"
+#~ " --exclude=PAT Exclude files that match PAT.\n"
+#~ " --max-depth=N print the total for a directory (or file, with --"
+#~ "all)\n"
+#~ " only if it is N or fewer levels below the "
+#~ "command\n"
+#~ " line argument; --max-depth=0 is the same as\n"
+#~ " --summarize\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÐåñéëçðôéêÞ åìöÜíéóç ÷ñÞóçò äßóêïõ ãéá êÜèå ÁÑ×ÅÉÏ, áíáäñïìéêÜ ãéá "
+#~ "êáôáëüãïõò.\n"
+#~ "\n"
+#~ " -a, --all åìöÜíéóç ôéìþí ãéá üëá ôá áñ÷åßá, ü÷é ìüíï ãéá\n"
+#~ " êáôáëüãïõò\n"
+#~ " --block-size=ÌÅÃÅÈÏÓ ÷ñÞóç ÌÅÃÅÈÏÓ-byte ìðëïê\n"
+#~ " -b, --bytes åìöÜíéóç ìåãåèþí óå byte\n"
+#~ " -c, --total åìöÜíéóç ôåëéêïý ìåãÝèïõò\n"
+#~ " -D, --dereference-args áíáäßðëùóç ÌÏÍÏÐÁÔÉÙÍ üôáí õðÜñ÷åé óõìâïëéêüò\n"
+#~ " óýíäåóìïò\n"
+#~ " -h, --human-readable åìöÜíéóç ìåãåèþí óå åýêïëç êáé áíáãíþóéìç ìïñöÞ\n"
+#~ " (ð.÷. 1K 234M 2G)\n"
+#~ " -H, --si üðùò ðáñáðÜíù, áëëÜ ìå äõíÜìåéò ôïõ 1000 áíôß ôïõ "
+#~ "1024\n"
+#~ " -k, --kilobytes üðùò --block-size=1024\n"
+#~ " -l, --count-links ìÝôñçìá ìåãåèþí ðïëëÝò öïñÝò áí åßíáé óèåíáñÜ\n"
+#~ " óõíäåäåìÝíá(hard linked)\n"
+#~ " -L, --dereference áíáäßðëùóç üëùí ôùí óõìâïëéêþí óõíäÝóìùí\n"
+#~ " -m, --megabytes üðùò --block-size=1048576\n"
+#~ " -S, --separate-dirs ÷ùñßò íá óõìðåñéëáìâÜíåôáé ôï ìÝãåèïò ôùí "
+#~ "õðïêáôáëüãùí\n"
+#~ " -s, --summarize åìöÜíéóç ìüíï óõíüëïõ ãéá êÜèå üñéóìá\n"
+#~ " -x, --one-file-system ðáñÜëçøç êáôáëüãùí óå äéáöïñåôéêÜ óõóôÞìáôá "
+#~ "áñ÷åßùí\n"
+#~ " -X ÁÑ×ÅÉÏ, --exclude-from=ÁÑ×ÅÉÏ ÐáñÜëçøç áñ÷åßùí ìå ìïñöÞ ðïõ\n"
+#~ " ôáéñéÜæåé ìÝóá óôï ÁÑ×ÅÉÏ\n"
+#~ " --exclude=ÌÏÑÖÇ ÐáñÜëçøç áñ÷åßùí ôçò ìïñöÞò ÌÏÑÖÇ.\n"
+#~ " --max-depth=N åìöÜíéóç ôïõ óõíïëéêïý åíüò êáôáëüãïõ (Þ "
+#~ "áñ÷åßïõ,\n"
+#~ " ìå --all)\n"
+#~ " ìüíï áí åßíáé N Þ ëéãüôåñá åðßðåäá êÜôù áðü ôï\n"
+#~ " üñéóìá ôçò ãñáììÞò åíôïëþí· --max-depth=0 "
+#~ "åßíáé\n"
+#~ " ßäéï ìå --summarize\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#~ msgid ""
+#~ "In the first two formats, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+#~ "the existing DIRECTORY, while setting permission modes and owner/group.\n"
+#~ "In the third format, create all components of the given DIRECTORY(ies).\n"
+#~ "\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination file\n"
+#~ " -b like --backup but does not accept an argument\n"
+#~ " -c (ignored)\n"
+#~ " -d, --directory treat all arguments as directory names; create all\n"
+#~ " components of the specified directories\n"
+#~ " -D create all leading components of DEST except the "
+#~ "last,\n"
+#~ " then copy SOURCE to DEST; useful in the 1st "
+#~ "format\n"
+#~ " -g, --group=GROUP set group ownership, instead of process' current "
+#~ "group\n"
+#~ " -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-"
+#~ "xr-x\n"
+#~ " -o, --owner=OWNER set ownership (super-user only)\n"
+#~ " -p, --preserve-timestamps apply access/modification times of SOURCE "
+#~ "files\n"
+#~ " to corresponding destination files\n"
+#~ " -s, --strip strip symbol tables, only for 1st and 2nd formats\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " -v, --verbose print the name of each directory as it is created\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Óôéò ðñþôåò äýï ìïñöÝò, áíôéãñÜöåé ôç ÐÇÃÇ óôï ÐÑÏÏÑÉÓÌÏ Þ ðïëëáðëÝò "
+#~ "ÐÇÃÅÓ\n"
+#~ "(ÐÇÃÇ) óôïí õðÜñ÷ïí ÊÁÔÁËÏÃÏ, åíþ ôßèåíôáé äéêáéþìáôá áñ÷åßïõ êáé\n"
+#~ "éäéïêôÞôçò/ïìÜäá. Óôç ôñßôç ìïñöÞ, äçìéïõñãßá üëùí ôùí óõóôáôéêþí ôïõ "
+#~ "äïèÝíôïò\n"
+#~ "ÊÁÔÁËÏÃÏÕ(ÙÍ).\n"
+#~ "\n"
+#~ " --backup=[ÅËÅÃ×ÏÓ] äçìéïõñãßá áíôéãñÜöïõ áóöáëåßáò ãéá êÜèå áñ÷åßï\n"
+#~ " ðñïïñéóìïý\n"
+#~ " -b üðùò ôï --backup áëëÜ äåí áðáéôåß ðáñÜìåôñï\n"
+#~ " -c (áãíïåßôáé)\n"
+#~ " -d, --directory ìåôá÷åßñçóç üëùí ôùí ïñéóìÜôùí ùò ïíüìáôá "
+#~ "êáôáëüãùí·\n"
+#~ " äçìéïõñãßá üëùí ôùí óõóôáôéêþí ôùí äïèÝíôùí "
+#~ "êáôáëüãùí\n"
+#~ " -D äçìéïõñãßá üëùí ôùí ðñïðïñåõüìåíùí óõóôáôéêþí ôïõ\n"
+#~ " ÐÑÏÏÑÉÓÌÏÕ åêôüò ôïõ ôåëåõôáßïõ, êáé áíôÝãñáøå ôç "
+#~ "ÐÇÃÇ\n"
+#~ " óôï ÐÑÏÏÑÉÓÌÏ· ÷ñÞóéìï óôçí ðñþôç ìïñöÞ\n"
+#~ " -g, --group=ÏÌÁÄÁ ïñéóìüò éäéïêôçóßáò ïìÜäáò, áíôß ôçò ôñÝ÷ïõóáò ôçò\n"
+#~ " äéåñãáóßáò\n"
+#~ " -m, --mode=ÄÉÊÁÉÙÌÁÔÁ ïñéóìüò äéêáéùìÜôùí (üðùò ìå chmod), áíôß ôïõ\n"
+#~ " rwxr-xr-x\n"
+#~ " -o, --owner=ÉÄÉÏÊÔÇÔÇÓ ïñéóìüò éäéïêôÞôç (ìüíï õðåñ÷ñÞóôçò)\n"
+#~ " -p, --preserve-timestamps äéáôÞñçóç ôùí çìåñïìçíéþí ðñüóâáóçò/"
+#~ "ôñïðïðïßçóçò\n"
+#~ " ôùí áñ÷åßùí ÐÇÃÇÓ\n"
+#~ " -s, --strip áðáëïéöÞ ðéíÜêùí óõìâüëùí, ìüíï ãéá 1ç êáé 2ç "
+#~ "ìïñöÞ\n"
+#~ " -S, --suffix=ÊÁÔÁËÇÎÇ ðáñÜêáìøç ôçò óõíçèéóìÝíçò êáôÜëçîçò áñ÷åßùí "
+#~ "áóöáëåßáò\n"
+#~ " -v, --verbose åìöÜíéóç ôïõ ïíüìáôïò êÜèå êáôáëüãïõ êáèþò "
+#~ "äçìéïõñãåßôáé\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Create a link to the specified TARGET with optional LINK_NAME.\n"
+#~ "If LINK_NAME is omitted, a link with the same basename as the TARGET is\n"
+#~ "created in the current directory. When using the second form with more\n"
+#~ "than one TARGET, the last argument must be a directory; create links\n"
+#~ "in DIRECTORY to each TARGET. Create hard links by default, symbolic\n"
+#~ "links with --symbolic. When creating hard links, each TARGET must "
+#~ "exist.\n"
+#~ "\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination "
+#~ "file\n"
+#~ " -b like --backup but does not accept an "
+#~ "argument\n"
+#~ " -d, -F, --directory hard link directories (super-user only)\n"
+#~ " -f, --force remove existing destination files\n"
+#~ " -n, --no-dereference treat destination that is a symlink to a\n"
+#~ " directory as if it were a normal file\n"
+#~ " -i, --interactive prompt whether to remove destinations\n"
+#~ " -s, --symbolic make symbolic links instead of hard links\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " --target-directory=DIRECTORY specify the DIRECTORY in which to "
+#~ "create\n"
+#~ " the links\n"
+#~ " -v, --verbose print name of each file before linking\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Äçìéïõñãßá óõíäÝóìïõ óôïí áíáöåñüìåíï ÐÑÏÏÑÉÓÌÏ ìå ðñïáéñåôéêü\n"
+#~ "ÏÍÏÌÁ_ÓÕÍÄÅÓÌÏÕ. Áí ôï ÏÍÏÌÁ_ÓÕÍÄÅÓÌÏÕ Ý÷åé ðáñáëçöèåß, íá äçìéïõñãçèåß\n"
+#~ "óýíäåóìïò ìå ôçí ßäéá âÜóç ïíüìáôïò üðùò ï ðñïïñéóìüò, óôï ôñÝ÷ïí "
+#~ "êáôÜëïãï.\n"
+#~ "¼ôáí ãßíåôå ÷ñÞóç ôçò äåýôåñçò ìïñöÞò ìå ðåñéóóüôåñïõò áðü Ýíáí "
+#~ "ÐÑÏÏÑÉÓÌÏÕÓ,\n"
+#~ "ôï ôåëåõôáßï üñéóìá ðñÝðåé íá åßíáé êáôÜëïãïò· äçìéïõñãßá óõíäÝóìùí óôï\n"
+#~ "ÊÁÔÁËÏÃÏ ãéá êÜèå ÐÑÏÏÑÉÓÌÏ. Äçìéïõñãßá óèåíáñþí óõíäÝóìùí åî ïñéóìïý,\n"
+#~ "óõìâïëéêþí óõíäÝóìùí ìå --symbolic.\n"
+#~ "¼ôáí äçìéïõñãïýíôáé óèåíáñïß óýíäåóìïé, êÜèå ÐÑÏÏÑÉÓÌÏÓ ðñÝðåé íá "
+#~ "ðñïûðÜñ÷åé.\n"
+#~ "\n"
+#~ " --backup=[ÅËÅÃ×ÏÓ] äçìéïõñãßá áíôéãñÜöïõ áóöáëåßáò ãéá êÜèå "
+#~ "áñ÷åßï\n"
+#~ " ðñïïñéóìïý\n"
+#~ " -b üðùò ôï --backup áëëÜ äåí áðáéôåß "
+#~ "ðáñÜìåôñï\n"
+#~ " -d, -F, --directory óèåíáñïß óýíäåóìïé óå êáôáëüãïõò (ìüíï\n"
+#~ " õðåñ÷ñÞóôçò)\n"
+#~ " -f, --force äéáãñáöÞ õðáñ÷üíôùí áñ÷åßùí ðñïïñéóìïý\n"
+#~ " -n, --no-dereference ìåôá÷åßñçóç ðñïïñéóìþí ðïõ åßíáé óýíäåóìïò "
+#~ "óå\n"
+#~ " êáôÜëïãï óá íá Þôáí êáíïíéêü áñ÷åßï\n"
+#~ " -i, --interactive åðéâåâáßùóç ãéá äéáãñáöÞ ðñïïñéóìþí\n"
+#~ " -s, --symbolic äçìéïõñãßá óõìâïëéêþí óõíäÝóìùí áíôß "
+#~ "óèåíáñþí\n"
+#~ " -S, --suffix=ÊÁÔÁËÇÎÇ ðáñÜêáìøç ôçò óõíçèçóìÝíçò êáôÜëçîçò "
+#~ "áñ÷åßùí\n"
+#~ " áóöáëåßáò\n"
+#~ " --target-directory=ÊÁÔÁËÏÃÏÓ ïñéóìüò ÊÁÔÁËÏÃÏÕ óôïí ïðïßï èá\n"
+#~ " äçìéïõñãçèïýí óýíäåóìïé\n"
+#~ " -v, --verbose åìöÜíéóç ïíüìáôïò êÜèå áñ÷åßïõ ðñéí ôç "
+#~ "óýíäåóç\n"
+#~ " -V, --version-control=ËÅÎÇ ðáñÜêáìøç ôïõ óõíçèçóìÝíïõ åëÝã÷ïõ "
+#~ "Ýêäïóçò\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "List information about the FILEs (the current directory by default).\n"
+#~ "Sort entries alphabetically if none of -cftuSUX nor --sort.\n"
+#~ "\n"
+#~ " -a, --all do not hide entries starting with .\n"
+#~ " -A, --almost-all do not list implied . and ..\n"
+#~ " -b, --escape print octal escapes for nongraphic "
+#~ "characters\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -B, --ignore-backups do not list implied entries ending with ~\n"
+#~ " -c with -lt: sort by, and show, ctime (time of "
+#~ "last\n"
+#~ " modification of file status information)\n"
+#~ " with -l: show ctime and sort by name\n"
+#~ " otherwise: sort by ctime\n"
+#~ " -C list entries by columns\n"
+#~ " --color[=WHEN] control whether color is used to distinguish "
+#~ "file\n"
+#~ " types. WHEN may be `never', `always', or "
+#~ "`auto'\n"
+#~ " -d, --directory list directory entries instead of contents\n"
+#~ " -D, --dired generate output designed for Emacs' dired "
+#~ "mode\n"
+#~ " -f do not sort, enable -aU, disable -lst\n"
+#~ " -F, --classify append indicator (one of */=@|) to entries\n"
+#~ " --format=WORD across -x, commas -m, horizontal -x, long -"
+#~ "l,\n"
+#~ " single-column -1, verbose -l, vertical -C\n"
+#~ " --full-time like -l --time-style=full-iso\n"
+#~ msgstr ""
+#~ "ÐáñÜèåóç ðëçñïöïñéþí ãéá ôá ÁÑ×ÅÉÁ (åî ïñéóìïý ï ôñÝ÷ïí êáôÜëïãïò).\n"
+#~ "Ôáîéíüìçóç êáôá÷ùñßóåùí áëöáâçôéêÜ, áí êáíÝíá áðü ôá -cftuSUX Þ --sort "
+#~ "äåí\n"
+#~ "Ý÷åé ïñéóôåß.\n"
+#~ "\n"
+#~ " -a, --all íá ìçí áðïêñýðôïíôáé ïé êáôá÷ùñßóåéò ðïõ\n"
+#~ " áñ÷ßæïõí ìå .\n"
+#~ " -A, --almost-all íá ìçí åìöáíßæïíôáé ôá . êáé .. ðïõ\n"
+#~ " åîõðáêïýïíôáé\n"
+#~ " -b, --escape åìöÜíéóç ïêôáäéêþí áñéèìþí äéáöõãÞò ãéá ìç\n"
+#~ " åìöáíéæüìåíïõò ÷áñáêôÞñåò\n"
+#~ " --block-size=ÌÅÃÅÈÏÓ ÷ñÞóç ÌÅÃÅÈÏÓ-byte ìðëïê\n"
+#~ " -B, --ignore-backups íá ìçí åìöáíßæïíôáé êáôá÷ùñßóåéò ðïõ "
+#~ "êáôáëÞãïõí\n"
+#~ " óå ~\n"
+#~ " -c ìå -lt: ôáîéíüìçóç áíÜëïãá, êáé åìöÜíéóç,\n"
+#~ " ôçò þñáò ôåëåõôáßáò ôñïðïðïßçóçò ôùí "
+#~ "ðëçñï-\n"
+#~ " öïñéþí êáôÜóôáóçò ôïõ áñ÷åßïõ (ctime),\n"
+#~ " ìå -l: åìöÜíéóç ôïõ ctime êáé ôáîéíüìçóç\n"
+#~ " âÜóç ïíüìáôïò,\n"
+#~ " äéáöïñåôéêÜ, ôáîéíüìçóç âÜóç ctime\n"
+#~ " -C åìöÜíéóç êáôá÷ùñßóåùí óå óôÞëåò\n"
+#~ " --color[=ÐÏÔÅ] Ýëåã÷ïò ðüôå ôï ÷ñþìá ÷ñçóéìïðïéåßôáé ãéá "
+#~ "íá\n"
+#~ " äéá÷ùñßóåé ôá åßäç áñ÷åßùí\n"
+#~ " Ôï ÐÏÔÅ ìðïñåß íá åßíáé `never', `always' "
+#~ "Þ\n"
+#~ " `auto'\n"
+#~ " -d, --directory åìöÜíéóç êáôá÷ùñßóåùí êáôáëüãïõ áíôß\n"
+#~ " ðåñéå÷ïìÝíùí\n"
+#~ " -D, --dired ôï áðïôÝëåóìá íá åßíáé ôçò ìïñöÞò ôçò\n"
+#~ " êáôÜóôáóçò dired ôïõ Emacs\n"
+#~ " -f íá ìç ôáîéíïìïýíôáé, åíåñãïðïßçóç ìå -aU,\n"
+#~ " áðåíåñãïðïßçóç ìå -lst\n"
+#~ " -F, --classify ðñïóèÞêç ÷áñáêôÞñá êáôçãïñïðïßçóçò óôéò\n"
+#~ " êáôá÷þñéóåéò\n"
+#~ " (Ýíá áðü ôá */=@|)\n"
+#~ " --format=ËÅÊÔÉÊÏ êáôÜ ìÞêïò across -x, êüììáôá commas -m,\n"
+#~ " ïñéæüíôéá horizontal -x, ìáêñïóêåëÞ long -"
+#~ "l,\n"
+#~ " ìßá óôÞëç single-column -1, ðåñéöñáóôéêÜ\n"
+#~ " verbose -l, êÜèåôá vertical -C\n"
+#~ " --full-time åìöÜíéóç ðëÞñçò þñáò êáé ðëÞñçò çìåñïìçíßáò\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -g like -l, but do not list owner\n"
+#~ " -G, --no-group inhibit display of group information\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " --si likewise, but use powers of 1000 not 1024\n"
+#~ " -H, --dereference-command-line follow symbolic links on the command "
+#~ "line\n"
+#~ " --indicator-style=WORD append indicator with style WORD to entry "
+#~ "names:\n"
+#~ " none (default), classify (-F), file-type (-"
+#~ "p)\n"
+#~ " -i, --inode print index number of each file\n"
+#~ " -I, --ignore=PATTERN do not list implied entries matching shell "
+#~ "PATTERN\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l use a long listing format\n"
+#~ " -L, --dereference when showing file information for a "
+#~ "symbolic\n"
+#~ " link, show information for the file the "
+#~ "link\n"
+#~ " references rather than for the link "
+#~ "itself\n"
+#~ " -m fill width with a comma separated list of "
+#~ "entries\n"
+#~ msgstr ""
+#~ " -g (áãíïåßôáé)\n"
+#~ " -G, --no-group íá ìçí åìöáíßæïíôáé ðëçñïöïñßåò ïìÜäáò\n"
+#~ " -h, --human-readable åìöÜíéóç ìåãåèþí óå áíèñùðßíùò áíáãíþóéìç\n"
+#~ " ìïñöÞ (ð.÷. 1Ê 234M 2G)\n"
+#~ " -H, --si üðùò ðáñáðÜíù, áëëÜ ìå äõíÜìåéò ôïõ 1000 "
+#~ "áíôß\n"
+#~ " ôïõ 1024\n"
+#~ " --indicator-style=ËÅÊÔÉÊÏ ðñïóèÞêç äåßêôç ËÅÊÔÉÊÏ óôéò "
+#~ "êáôá÷ùñßóåéò\n"
+#~ " ïíïìÜôùí:\n"
+#~ " none (åî ïñéóìïý), classify (-F), file-"
+#~ "type\n"
+#~ " (-p)\n"
+#~ " -i, --inode åìöÜíéóç äåßêôç êÜèå áñ÷åßïõ\n"
+#~ " -I, --ignore=PATTERN íá ìçí åìöáíßæïíôáé áíáöåñüìåíåò "
+#~ "êáôá÷ùñßóåéò \n"
+#~ " ðïõ ôáéñßáæïõí óôï PATTERN ôïõ öëïéïý\n"
+#~ " -k, --kilobytes üðùò --block-size=1024\n"
+#~ " -l ÷ñÞóç ìáêñïóêåëïýò åßäïõò åìöÜíéóçò\n"
+#~ " -L, --dereference åìöÜíéóç êáôá÷ùñßóåùí ðïõ äåß÷íïõí ïé\n"
+#~ " óõìâïëéêïß óýíäåóìïé\n"
+#~ " -m óõìðëÞñùóç ôïõ ðëÜôïõò ìå ëßóôá áðü\n"
+#~ " êáôá÷ùñßóåéò äéá÷ùñéæüìåíùí ìå êüììá\n"
+#~ " -n, --numeric-uid-gid åìöÜíéóç áñéèìçôéêþí UID êáé GID áíôß ãéá\n"
+#~ " ïíüìáôá\n"
+#~ " -N, --literal åìöÜíéóç áêáôÝñãáóôùí êáôá÷ùñßóåùí (ð.÷. íá "
+#~ "ìçí\n"
+#~ " ôõã÷Üíïõí\n"
+#~ " åéäéêÞò åðåîåñãáóßáò ïé ÷áñáêôÞñåò "
+#~ "åëÝã÷ïõ)\n"
+#~ " -o ÷ñÞóç ìáêñïóêåëïýò åìöÜíéóçò ÷ùñßò "
+#~ "ðëçñïöïñßåò\n"
+#~ " ïìÜäáò\n"
+#~ " -p, --file-type ðñïóèÞêç åíäåßîçò (Ýíá áðü /=@|) óôéò\n"
+#~ " êáôá÷ùñßóåéò\n"
+#~ " -q, --hide-control-chars åìöÜíéóç ôïõ ? áíôß ôùí ìç-åêôõðþóéìùí\n"
+#~ " ÷áñáêôÞñùí\n"
+#~ " --show-control-chars åìöÜíéóç ìç åêôõðþóéìùí ÷áñáêôÞñùí üðùò "
+#~ "åßíáé\n"
+#~ " (åî ïñéóìïý åêôüò áí ôï ðñüãñáììá åßíáé "
+#~ "ôï\n"
+#~ " ls êáé ç Ýîïäïò åßíáé ôï ôåñìáôéêü)\n"
+#~ " -Q, --quote-name åìöÜíéóç êáôá÷ùñßóåùí ìÝóá óå äéðëÜ "
+#~ "åéóáãùãéêÜ\n"
+#~ " --quoting-style=ËÅÊÔÉÊÏ ÷ñÞóç ìïñöÞò ËÅÊÔÉÊÏ óôçí åìöÜíéóç "
+#~ "ïíïìÜôùí\n"
+#~ " êáôá÷ùñßóåùí:\n"
+#~ " literal, shell, shell-always, c, escape\n"
+#~ " -r, --reverse áíôßóôñïöç óåéñÜ óôçí ôáîéíüìçóç\n"
+#~ " -R, --recursive åìöÜíéóç õðïêáôáëüãùí áíáäñïìéêÜ\n"
+#~ " -s, --size åìöÜíéóç ìåãÝèïõò êÜèå áñ÷åßïõ, óå ìðëïê\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -S sort by file size\n"
+#~ " --sort=WORD extension -X, none -U, size -S, time -t,\n"
+#~ " version -v\n"
+#~ " status -c, time -t, atime -u, access -u, use "
+#~ "-u\n"
+#~ " --time=WORD show time as WORD instead of modification "
+#~ "time:\n"
+#~ " atime, access, use, ctime or status; use\n"
+#~ " specified time as sort key if --sort=time\n"
+#~ " --time-style=WORD show times using style WORD:\n"
+#~ " full-iso, iso, locale, posix-iso\n"
+#~ " -t sort by modification time\n"
+#~ " -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+#~ " -u with -lt: sort by, and show, access time\n"
+#~ " with -l: show access time and sort by "
+#~ "name\n"
+#~ " otherwise: sort by access time\n"
+#~ " -U do not sort; list entries in directory "
+#~ "order\n"
+#~ " -v sort by version\n"
+#~ " -w, --width=COLS assume screen width instead of current "
+#~ "value\n"
+#~ " -x list entries by lines instead of by columns\n"
+#~ " -X sort alphabetically by entry extension\n"
+#~ " -1 list one file per line\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "By default, color is not used to distinguish types of files. That is\n"
+#~ "equivalent to using --color=none. Using the --color option without the\n"
+#~ "optional WHEN argument is equivalent to using --color=always. With\n"
+#~ "--color=auto, color codes are output only if standard output is "
+#~ "connected\n"
+#~ "to a terminal (tty).\n"
+#~ msgstr ""
+#~ " -S ôáîéíüìçóç âÜóç ôïõ ìåãÝèïõò áñ÷åßïõ\n"
+#~ " --sort=ËÅÊÔÉÊÏ êáôÜëçîç -X, ôßðïôá -U, ìÝãåèïò -S, þñá -t\n"
+#~ " Ýêäïóç -v,\n"
+#~ " êáôÜóôáóç -c, þñá -t, þñá ðñüóâáóçò -u\n"
+#~ " --time=ËÅÊÔÉÊÏ åìöÜíéóç þñáò óáí ËÅÊÔÉÊÏ áíôß ôçò þñáò\n"
+#~ " ôñïðïðïßçóçò:\n"
+#~ " atime, access, use, ctime Þ status· ÷ñÞóç\n"
+#~ " êëåéäéïý ôáîéíüìçóçò ôçí äïóìÝíç þñá áí\n"
+#~ " --sort=time\n"
+#~ " -t ôáîéíüìçóç âÜóç þñáò ôñïðïðïßçóçò\n"
+#~ " -T, --tabsize=ÓÔÇËÅÓ èåþñçóå ôïõò ïñéæüíôéïõò óôçëïèÝôåò "
+#~ "ìåãÝèïõò\n"
+#~ " ÓÔÇËÅÓ áíôß ãéá 8\n"
+#~ " -u ôáîéíüìçóç âÜóç ÷ñüíïõ ôåëåõôáßáò "
+#~ "ðñüóâáóçò·\n"
+#~ " ìå -l: åìöÜíéóç ôïõ atime\n"
+#~ " -U ÷ùñßò ôáîéíüìçóç· åìöÜíéóç êáôá÷ùñÞóåùí óå\n"
+#~ " öõóéêÞ óåéñÜ\n"
+#~ " -v ôáîéíüìçóç âÜóç Ýêäïóçò\n"
+#~ " -w, --width=ÓÔÇËÅÓ èåþñçóå ðëÜôïò ïèüíçò ÓÔÇËÅÓ áíôß ôñå÷ïýóçò\n"
+#~ " ôéìÞò\n"
+#~ " -x åìöÜíéóçò êáôá÷ùñßóåùí áíÜ ãñáììÝò áíôß ãéá "
+#~ "óôÞëåò\n"
+#~ " -X áëöáâçôéêÞ ôáîéíüìçóç âÜóç êáôÜëçîçò\n"
+#~ " -1 åìöÜíéóç åíüò áñ÷åßïõ áíÜ ãñáììÞ\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "Åî ïñéóìïý, ôï ÷ñþìá äå ÷ñçóéìïðïéåßôáé óôï äéá÷ùñéóìü ôùí áñ÷åßùí "
+#~ "áíÜëïãá ìå ôï åßäïò. ÄçëÜäç, åßíáé óáí íá åßíáé --color=none. Ìå ôçí "
+#~ "åðéëïãÞ\n"
+#~ "--color ÷ùñßò ôï ðñïáéñåôéêü üñéóìá WHEN åßíáé óõíþíõìï ìå\n"
+#~ "--color=always. Ìå --color=auto, ïé ÷ñùìáôéêÝò ðëçñïöïñßåò åìöáíßæïíôáé\n"
+#~ "üôáí ç êáíïíéêÞ Ýîïäïò óõíäÝåôáé ìå ôåñìáôéêü (tty).\n"
+
+# src/shred.c:463
+#, fuzzy
+#~ msgid ""
+#~ "Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+#~ "for even very expensive hardware probing to recover the data.\n"
+#~ "\n"
+#~ " -f, --force change permissions to allow writing if necessary\n"
+#~ " -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+#~ " -s, --size=N shred this many bytes (suffixes like k, M, G accepted)\n"
+#~ " -u, --remove truncate and remove file after overwriting\n"
+#~ " -v, --verbose show progress\n"
+#~ " -x, --exact do not round file sizes up to the next full block\n"
+#~ " -z, --zero add a final overwrite with zeros to hide shredding\n"
+#~ " - shred standard output\n"
+#~ " --help display this help and exit\n"
+#~ " --version print version information and exit\n"
+#~ "\n"
+#~ "Delete FILE(s) if --remove (-u) is specified. The default is not to "
+#~ "remove\n"
+#~ "the files because it is common to operate on device files like /dev/hda,\n"
+#~ "and those files usually should not be removed. When operating on "
+#~ "regular\n"
+#~ "files, most people use the --remove option.\n"
+#~ "\n"
+#~ "CAUTION: Note that shred relies on a very important assumption:\n"
+#~ "that the filesystem overwrites data in place. This is the traditional\n"
+#~ "way to do things, but many modern filesystem designs do not satisfy this\n"
+#~ "assumption. The following are examples of filesystems on which shred is\n"
+#~ "not effective:\n"
+#~ "\n"
+#~ "* log-structured or journaled filesystems, such as those supplied with\n"
+#~ " AIX and Solaris (and JFS, ReiserFS, XFS, etc.)\n"
+#~ "\n"
+#~ "* filesystems that write redundant data and carry on even if some writes\n"
+#~ " fail, such as RAID-based filesystems\n"
+#~ "\n"
+#~ "* filesystems that make snapshots, such as Network Appliance's NFS "
+#~ "server\n"
+#~ "\n"
+#~ "* filesystems that cache in temporary locations, such as NFS\n"
+#~ " version 3 clients\n"
+#~ "\n"
+#~ "* compressed filesystems\n"
+#~ "\n"
+#~ "In addition, file system backups and remote mirrors may contain copies\n"
+#~ "of the file that cannot be removed, and that will allow a shredded file\n"
+#~ "to be recovered later.\n"
+#~ msgstr ""
+#~ "ÄéáãñáöÞ áñ÷åßïõ ìå áóöÜëåéá, ðñþôá ãñÜöïíôáò ðÜíù ôïõ ãéá íá ÷áèåß\n"
+#~ "ôï ðåñéå÷üìåíü ôïõ.\n"
+#~ " -f, --force áëëáãÞ äéêáéùìÜôùí ãéá íá åðéôñáðåß ç åããñáöÞ, áí "
+#~ "áðáéôåßôáé\n"
+#~ " -n, --iterations=N ÅããñáöÞ áðü åðÜíù Í öïñÝò áíôß ôïõ êáíïíéêïý (%d)\n"
+#~ " -s, --size=N äéÜëõóç Í bytes (êáôáëÞîåéò üðùò k, M, G åßíáé äåêôÝò)\n"
+#~ " -u, --remove ìçäÝíéóå êáé äéÝãñáøå ôï áñ÷åßï ìåôÜ ôï ãñÜøéìï áðü "
+#~ "ðÜíù\n"
+#~ " -v, --verbose åìöÜíéóç ðñïüäïõ\n"
+#~ " -x, --exact íá ìç óôïããõëïðïéïýíôáé ôá ìåãÝèç áñ÷åßùí ìÝ÷ñé ôï "
+#~ "åðüìåíï ðëÞñåò ìðëüê\n"
+#~ " -z, --zero ðñïóèÞêç åíüò ôåëéêïý ãñáøßìáôïò áðü ðÜíù ìå ìçäåíéêÜ "
+#~ "ãéá íá áðïêñõöôåß ç äéÜëõóç\n"
+#~ " - äéÜëõóç ôçò êáíïíéêÞò åîüäïõ\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "FIXME maybe add more discussion here?"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Force changed blocks to disk, update the super block.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#~ msgid ""
+#~ "Update the access and modification times of each FILE to the current "
+#~ "time.\n"
+#~ "\n"
+#~ " -a change only the access time\n"
+#~ " -c, --no-create do not create any files\n"
+#~ " -d, --date=STRING parse STRING and use it instead of current time\n"
+#~ " -f (ignored)\n"
+#~ " -m change only the modification time\n"
+#~ " -r, --reference=FILE use this file's times instead of current time\n"
+#~ " -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current "
+#~ "time\n"
+#~ " --time=WORD set time given by WORD: access atime use (same "
+#~ "as -a)\n"
+#~ " modify mtime (same as -m)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Note that the three time-date formats recognized for the -d and -t "
+#~ "options\n"
+#~ "and for the obsolescent argument are all different.\n"
+#~ msgstr ""
+#~ "ÅíçìÝñùóç ôùí çìåñïìçíéþí êáé ùñþí ðñüóâáóçò êáé ôñïðïðïßçóçò ãéá êÜèå "
+#~ "ÁÑ×ÅÉÏ óôç ôñÝ÷ïõóá çìåñïìçíßá êáé þñá.\n"
+#~ "\n"
+#~ " -a áëëáãÞ ìüíï ôçò çìåñïìçíßáò ðñüóâáóçò\n"
+#~ " -c ÷ùñßò äçìéïõñãßá áñ÷åßùí\n"
+#~ " -d, --date=ÁËÖÁÑÉÈÌÇÔÉÊÏ åðåîåñãáóßá ôïõ ÁËÖÁÑÉÈÌÇÔÉÊÏÕ êáé ÷ñÞóç\n"
+#~ " ôïõ áíôß ôéò ôñÝ÷ïõóáò çìåñïìçíßáò\n"
+#~ " -f (áãíïåßôáé)\n"
+#~ " -m áëëáãÞ ìüíï ôçò çìåñïìçíßáò ôñïðïðïßçóçò\n"
+#~ " -r, --reference=ÁÑ×ÅÉÏ ÷ñÞóç ôùí çìåñïìçíéþí ôïõ áñ÷åßïõ ôïýôïõ áíôß\n"
+#~ " ôçò ôñÝ÷ïõóáò çìåñïìçíßáò\n"
+#~ " -t ÇÌÅÑÏÌÇÍÉÁ ÷ñÞóç MMDDhhmm[[CC]YY][.ss] áíôß ôñÝ÷ïõóáò\n"
+#~ " çìåñïìçíßáò/þñáò\n"
+#~ " --time=ËÅÊÔÉÊÏ ïñéóìüò çìåñïìçíßáò äïèåßóáò áðü ôï ËÅÊÔÉÊÏ:\n"
+#~ " access atime use (üðùò ôï -a)\n"
+#~ " modify mtime (ßäéï ìå -m)\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "ËÜâåôå õð üøéí üôé ïé ôñåéò ìïñöÝò þñá/çìåñïìçíßáò ðïõ\n"
+#~ "áíáãíùñßæïíôáé ãéá ôéò åðéëïãÝò -d êáé -t êáèþò êáé ôçí åðéëïãÞ ðïõ\n"
+#~ "áãíïåßôáé, åßíáé üëåò äéáöïñåôéêÝò.\n"
+
+#
+#, fuzzy
+#~ msgid "Copyright (C) 2001 Free Software Foundation, Inc."
+#~ msgstr "ÐíåõìáôéêÜ Äéêáéþìáôá (C) 1999 Free Software Foundation, Inc."
+
+#~ msgid ""
+#~ "when creating character special files, major and minor device\n"
+#~ "numbers must be specified"
+#~ msgstr ""
+#~ "üôáí äçìéïõñãïýíôáé åéäéêÜ áñ÷åßá ÷áñáêôÞñùí, ïé major êáé minor\n"
+#~ "áñéèìïß óõóêåõÞò ðñÝðåé íá ïñßæïíôáé"
+
+#~ msgid "group of %s changed to %s\n"
+#~ msgstr "ç ïìÜäá ôïõ %s Üëëáîå óå %s\n"
+
+#, fuzzy
+#~ msgid "ownership of %s changed to "
+#~ msgstr "ï éäéïêôÞôçò ôïõ %s Üëëáîå óå "
+
+#, fuzzy
+#~ msgid "you are not a member of group %s"
+#~ msgstr "äåí åßóôå ìÝëïò ôçò ïìÜäáò `%s'"
+
+#
+#, fuzzy
+#~ msgid "cannot make fifo %s"
+#~ msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#
+#, fuzzy
+#~ msgid "cannot change permissions for %s"
+#~ msgstr "áäõíáìßá áëëáãÞò éäéïêôçóßáò óôï %s"
+
+#
+#, fuzzy
+#~ msgid "cannot remove old link to %s"
+#~ msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#~ msgid "virtual memory exhausted"
+#~ msgstr "ç éäåáôÞ ìíÞìç åîáíôëÞèçêå"
+
+#
+#, fuzzy
+#~ msgid "cannot create directory `%s'"
+#~ msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#, fuzzy
+#~ msgid "cannot remove `%s'"
+#~ msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#
+#, fuzzy
+#~ msgid "specified target, `%s' is not a directory"
+#~ msgstr "ôï `%s' õðÜñ÷åé Þäç Üëëá äåí åßíáé êáôÜëïãïò"
+
+#~ msgid "`%s' and `%s' are the same file"
+#~ msgstr "ôá `%s' êáé `%s' åßíáé ôï ßäéï áñ÷åßï"
+
+#
+#, fuzzy
+#~ msgid "cannot backup `%s'"
+#~ msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#
+#, fuzzy
+#~ msgid "cannot un-backup `%s'"
+#~ msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#
+#~ msgid "cannot chmod %s"
+#~ msgstr "áäýíáôç ç áëëáãÞ äéêáéùìÜôùí óôï %s"
+
+#
+#, fuzzy
+#~ msgid "`%s' exists but is not a directory"
+#~ msgstr "ôï `%s' õðÜñ÷åé Þäç Üëëá äåí åßíáé êáôÜëïãïò"
+
+# src/cp.c:758 src/ln.c:454 src/mv.c:432
+#~ msgid "--version-control"
+#~ msgstr "--version-control"
+
+#~ msgid "create %s %s to %s"
+#~ msgstr "äçìéïõñãßá %s %s óôï %s"
+
+#~ msgid "hard link"
+#~ msgstr "óèåíáñüò óýíäåóìïò"
+
+#~ msgid "link"
+#~ msgstr "óýíäåóìïò"
+
+#
+#, fuzzy
+#~ msgid "current directory"
+#~ msgstr "êáôÜëïãïò"
+
+#
+#, fuzzy
+#~ msgid "starting directory"
+#~ msgstr "êáôÜëïãïò"
+
+# src/copy.c:549
+#~ msgid "%s -> %s (backup)\n"
+#~ msgstr "%s -> %s (áíôßãñáöï áóöáëåßáò)\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ msgstr ""
+#~ "×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ]... (÷ùñßò -G)\n"
+#~ " Þ: %s -G [ÅÐÉËÏÃÇ]... [ÅÉÓÏÄÏÓ [ÅÎÏÄÏÓ]]\n"
+
+#
+#, fuzzy
+#~ msgid "Usage: %s [OPTION]... EXISTING_DIR NEW_DIR\n"
+#~ msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... ÓÕÍÏËÏ1 [ÓÕÍÏËÏ2]\n"
+
+#, fuzzy
+#~ msgid "cannot rename `.' or `..'"
+#~ msgstr "Äåí ìðïñåß íá êáèïñéóôåß ôï üíïìá ôïõ óõóôÞìáôïò"
+
+#~ msgid "sparse type"
+#~ msgstr "áñáéü åßäïò"
+
+#
+#, fuzzy
+#~ msgid "%s is closed"
+#~ msgstr "ç êáíïíéêÞ åßóïäïò åßíáé êëåéóìÝíç"
+
+#~ msgid "time type"
+#~ msgstr "åßäïò þñáò"
+
+#~ msgid "format type"
+#~ msgstr "åßäïò ìïñöÞò"
+
+#~ msgid "colorization criterion"
+#~ msgstr "êñéôÞñéï ÷ñùìáôéóìïý"
+
+#~ msgid "indicator style"
+#~ msgstr "ìïñöÞ êáôçãïñïðïéçôÞ"
+
+#~ msgid "quoting style"
+#~ msgstr "ìïñöÞ ðáñÜèåóçò"
+
+#~ msgid "time selector"
+#~ msgstr "åðéëïãÝáò ÷ñüíïõ"
+
+#~ msgid ""
+#~ "the option for counting 1MB blocks may not be used\n"
+#~ "with the portable output format"
+#~ msgstr ""
+#~ "ç åðéëïãÞ ìÝôñçóçò ôùí 1M ìðëïê äå ìðïñåß íá ÷ñçóéìïðïéçèåß\n"
+#~ "ìå ôç óõìâáôÞ ìïñöÞ åîüäïõ"
+
+#, fuzzy
+#~ msgid "removing non-directory %s\n"
+#~ msgstr "ÐÑÏÓÏ×Ç: äåí åßíáé äõíáôüí íá áëëá÷ôåß ï êáôÜëïãïò óå %s"
+
+#
+#, fuzzy
+#~ msgid "remove directory `%s'%s? "
+#~ msgstr "áäýíáôç ç äçìéïõñãßá êáôáëüãïõ `%s'"
+
+#
+#, fuzzy
+#~ msgid "Usage: %s [OPTION]... GROUP FILE...\n"
+#~ msgstr "×ñÞóç: %s [ÅÐÉËÏÃÅÓ]... [ÁÑ×ÅÉÏ]...\n"
+
+#~ msgid "cannot move `%s' across filesystems: Not a regular file"
+#~ msgstr ""
+#~ "áäõíáìßá ìåôáêßíçóçò ôïõ `%s' ìåôáîý óõóôçìÜôùí áñ÷åßùí: Äåí åßíáé "
+#~ "êáíïíéêü áñ÷åßï"
+
+#~ msgid "%s: replace `%s', overriding mode %04o? "
+#~ msgstr "%s: áíôéêáôÜóôáóç ôïõ `%s', ðáñÜêáìøç äéêáéùìÜôùí %04o; "
+
+#~ msgid "%s: remove %s`%s', overriding mode %04o? "
+#~ msgstr "%s: äéáãñáöÞ ôïõ %s`%s', ðáñáêÜðôùíôáò ôá äéêáéþìáôá %04o; "
+
+#~ msgid "%s: descend directory `%s', overriding mode %04o? "
+#~ msgstr ""
+#~ "%s: äéáãñáöÞ êáé ôïõ êáôáëüãïõ `%s', ðáñáêÜìðôùíôáò ôá äéêáéþìáôá %04o; "
+
+#~ msgid "%s: remove directory `%s' (might be nonempty)? "
+#~ msgstr "%s: äéáãñáöÞ êáôáëüãïõ `%s' (ìðïñåß íá ìçí åßíáé Üäåéï); "
+
+#~ msgid "days"
+#~ msgstr "ìÝñåò"
+
+#~ msgid "users"
+#~ msgstr "÷ñÞóôåò"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Run COMMAND with root directory set to NEWROOT.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "FORMAT controls the output. The only valid option for the second form\n"
+#~ "specifies Coordinated Universal Time. Interpreted sequences are:\n"
+#~ "\n"
+#~ " %%%% a literal %%\n"
+#~ " %%a locale's abbreviated weekday name (Sun..Sat)\n"
+#~ " %%A locale's full weekday name, variable length (Sunday..Saturday)\n"
+#~ " %%b locale's abbreviated month name (Jan..Dec)\n"
+#~ " %%B locale's full month name, variable length (January..December)\n"
+#~ " %%c locale's date and time (Sat Nov 04 12:02:33 EST 1989)\n"
+#~ " %%C century (year divided by 100 and truncated to an integer) [00-"
+#~ "99]\n"
+#~ " %%d day of month (01..31)\n"
+#~ " %%D date (mm/dd/yy)\n"
+#~ " %%e day of month, blank padded ( 1..31)\n"
+#~ " %%h same as %%b\n"
+#~ " %%H hour (00..23)\n"
+#~ " %%I hour (01..12)\n"
+#~ " %%j day of year (001..366)\n"
+#~ " %%k hour ( 0..23)\n"
+#~ " %%l hour ( 1..12)\n"
+#~ " %%m month (01..12)\n"
+#~ " %%M minute (00..59)\n"
+#~ " %%n a newline\n"
+#~ " %%p locale's AM or PM\n"
+#~ " %%r time, 12-hour (hh:mm:ss [AP]M)\n"
+#~ " %%s seconds since `00:00:00 1970-01-01 UTC' (a GNU extension)\n"
+#~ " %%S second (00..60)\n"
+#~ " %%t a horizontal tab\n"
+#~ " %%T time, 24-hour (hh:mm:ss)\n"
+#~ " %%u day of week (1..7); 1 represents Monday\n"
+#~ " %%U week number of year with Sunday as first day of week (00..53)\n"
+#~ " %%V week number of year with Monday as first day of week (01..53)\n"
+#~ " %%w day of week (0..6); 0 represents Sunday\n"
+#~ " %%W week number of year with Monday as first day of week (00..53)\n"
+#~ " %%x locale's date representation (mm/dd/yy)\n"
+#~ " %%X locale's time representation (%%H:%%M:%%S)\n"
+#~ " %%y last two digits of year (00..99)\n"
+#~ " %%Y year (1970...)\n"
+#~ " %%z RFC-822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %%Z time zone (e.g., EDT), or nothing if no time zone is "
+#~ "determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ç ÌÏÑÖÇ åëÝã÷åé ôçí åêôýðùóç. Ç ìüíç éó÷ýïõóá åðéëïãÞ ãéá ôçí äåõôåñç "
+#~ "öüñìá\n"
+#~ "êáèïñßæåé ôçí ðáãêüóìéá þñá(UTC). Ïé óåéñÝò ðïõ åñìçíåýïíôáé åéíáé:\n"
+#~ "\n"
+#~ " %%%% Ï ÷áñáêôÞñáò %%\n"
+#~ " %%a Ôá ôïðéêÜ ïíüìáôá ôùí çìåñþí ôçò åâäïìÜäáò (Êõñ..Óáâ)\n"
+#~ " %%A Ôá ïëüêëçñá ôïðéêÜ ïíüìáôá ôùí çìåñþí ôçò åâäïìÜäáò\n"
+#~ " ìå ìåôáâëçôü ìÞêïò (ÊõñéáêÞ..Óáââáôï)\n"
+#~ " %%b Ôá ôïðéêÜ ïíüìáôá ôùí ìçíþí (Éáí..Äåê)\n"
+#~ " %%B Ôá ïëüêëçñá ôïðéêÜ ïíüìáôá ôùí ìçíþí ìåôáâëçôïý ìÞêïõò\n"
+#~ " (ÉáíïõÜñéïò..ÄåêÝìâñéïò)\n"
+#~ " %%c Ç ôïðéêÞ çìåñïìçíßá êáé þñá (Óáâ 04 Íïå 12:02:33 EÅT 1989)\n"
+#~ " %%d Ç ìÝñá ôïõ ìÞíá (01..31)\n"
+#~ " %%D Çìåñïìçíßá (ìì/çç/÷÷)\n"
+#~ " %%d Ç ìÝñá ôïõ ìÞíá, ìå Ýíá êåíü ( 1..31)\n"
+#~ " %%h Ïìïßùò ìå %%b\n"
+#~ " %%H Ùñá (00..23)\n"
+#~ " %%I Ùñá (01..12)\n"
+#~ " %%j Ç ìÝñá ôïõ ÷ñüíïõ áñéèìçôéêÜ (001..366)\n"
+#~ " %%k Ùñá ( 0..23)\n"
+#~ " %%l Ùñá ( 1..12)\n"
+#~ " %%m ÌÞíáò (01..12)\n"
+#~ " %%M Ëåðôü (00..59)\n"
+#~ " %%n Ìéá íÝá ãñáììÞ\n"
+#~ " %%p Ôïðéêü ÌÌ Þ ÐÌ\n"
+#~ " %%r Ùñá, 12-ùñá (ùù:ëë:ää [ÌÐ]M)\n"
+#~ " %%s Äåõôåñüëåðôá áðü 00:00:00, Éáí 1, 1970 (ìéá åðÝêôáóç ôçò GNU)\n"
+#~ " %%S Äåõôåñüëåðôá (00..61)\n"
+#~ " %%t Ïñéæüíôéá êáôÜôáîç óå ðßíáêá (tab)\n"
+#~ " %%T Ùñá, 24-ùñá (ùù:ëë:ää)\n"
+#~ " %%U Ï áñéèìüò ôçò åâäïìÜäáò ôïõ ÷ñüíïõ ìå ôçí ÊõñéáêÞ íá åßíáé\n"
+#~ " ç ðñþôç ìÝñá ôçò åâäïìÜäáò (00..53)\n"
+#~ " %%V Ï áñéèìüò ôçò åâäïìÜäáò ôïõ ÷ñüíïõ ìå ôçí ÄåõôÝñá íá åßíáé\n"
+#~ " ç ðñþôç ìÝñá ôçò åâäïìÜäáò (01..52)\n"
+#~ " %%w ÌÝñá ôçò åâäïìÜäáò (0..6); Ôï 0 ðáñéóôÜ ôçí ÊõñéáêÞ\n"
+#~ " %%W Ï áñéèìüò ôçò åâäïìÜäáò ôïõ ÷ñüíïõ ìå ôçí ÄåõôÝñá íá åßíáé ç "
+#~ "ðñþôç\n"
+#~ " ìÝñá ôçò åâäïìÜäáò (00..53)\n"
+#~ " %%x ÔïðéêÞ áíáðáñÜóôáóç ôçò çìåñïìçíßáò (ÌÌ/ÇÇ/××)\n"
+#~ " %%X ÔïðéêÞ áíáðáñÜóôáóç ôçò þñáò (%%Ù:%%Ë:%%Ä)\n"
+#~ " %%y Ôá äýï ôåëåõôáßá øçößá ôçò ÷ñïíéÜò (00..99)\n"
+#~ " %%Y ×ñüíïò (1970...)\n"
+#~ " %%z Ç æþíç þñáò óå ìïñöÞ áñéèìçôéêÞ óýìöùíá ìå ôï RFC-822 (-0500)\n"
+#~ " (ìéá ìç ôõðéêÞ åðÝêôáóç)\n"
+#~ " %%Z Æþíç þñáò (ð.÷. EDT), Þ ôßðïôá åáí äåí Ý÷åé êáèïñéóôåß æþíç þñáò\n"
+#~ "\n"
+#~ "Åî'ïñéóìïý, ôá áñéèìçôéêÜ óôïé÷åßá ôçò çìåñïìçíßáò óõìðëçñþíïíôáé ìå "
+#~ "ìçäåíéêÜ.\n"
+#~ "Ôï GNU date áíáãíùñßæåé ôïõò ðáñáêÜôù ìåôáôñïðåßò ìåôáîý `%%' êáé\n"
+#~ "áñéèìçôéêÞò êáôåõèõíôÞñéáò ãñáììÞò.\n"
+#~ " `-' (ðáýëá) Íá ìçí óõìðëçñþèåß ôï ðåäßï\n"
+#~ " `_' (õðïãñÜììéóç) Íá óõìðëçñùèåß ôï ðåäßï ìå êåíÜ\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ " --help display this help and exit (should be alone)\n"
+#~ " --version output version information and exit (should be alone)\n"
+#~ "\n"
+#~ "Without -E, the following sequences are recognized and interpolated:\n"
+#~ "\n"
+#~ " \\NNN the character whose ASCII code is NNN (octal)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a alert (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c suppress trailing newline\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r carriage return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ msgstr ""
+#~ "Åêôõðþíåé ôçí ÁËÕÓÉÄÁ óôçí ôõðéêÞ Ýîïäï.\n"
+#~ "\n"
+#~ " -n Íá ìçí åêôõðùèåß íåá ãñáììÞ óôï ôÝëïò\n"
+#~ " -e (äåí ÷ñçóéìïðïéåßôáé)\n"
+#~ " -E Áðåíåñãïðïéåß ôçí ðáñåìâïëÞ ìåñéêþí äéáäï÷þí óôçí \n"
+#~ " ÁËÕÓÉÄÁ\n"
+#~ " --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+#~ " --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+#~ "\n"
+#~ "×ùñßò ôçí -E, ïé äéáäï÷Ýò ðïõ áêïëïõèïýí áíáãíùñßæïíôáé êáé "
+#~ "ðáñáìâÜëïíôáé:\n"
+#~ "\n"
+#~ " \\NNN Ï ÷áñáêôÞñáò ðïõ ï ASCII êùäéêüò ôïõ åßíáé NNN (óôï ïêôáäéêü)\n"
+#~ " \\\\ Ï ÷áñáêôÞñáò `\\'\n"
+#~ " \\a Ç÷ïò áöýðíéóçò\n"
+#~ " \\b ÐéóùäéÜóôçìá\n"
+#~ " \\c Ðáýåé ôçí íåá óåéñÜ óôï ôÝëïò\n"
+#~ " \\f ÁëëáãÞ óåëßäáò\n"
+#~ " \\n ÍÝá óåéñÜ\n"
+#~ " \\r ÅðéóôñïöÞ ôïõ äñïìÝá\n"
+#~ " \\t Ïñéæüíôéá êáôÜôáîç óå ðßíáêá (tab)\n"
+#~ " \\v ÊÜèåôç êáôáîç óå ðßíáêá\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print the value of EXPRESSION to standard output. A blank line below\n"
+#~ "separates increasing precedence groups. EXPRESSION may be:\n"
+#~ "\n"
+#~ " ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+#~ "\n"
+#~ " ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+#~ "\n"
+#~ " ARG1 < ARG2 ARG1 is less than ARG2\n"
+#~ " ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+#~ " ARG1 = ARG2 ARG1 is equal to ARG2\n"
+#~ " ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+#~ " ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+#~ " ARG1 > ARG2 ARG1 is greater than ARG2\n"
+#~ "\n"
+#~ " ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+#~ " ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+#~ "\n"
+#~ " ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+#~ " ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+#~ " ARG1 %% ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+#~ "\n"
+#~ " STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+#~ "\n"
+#~ " match STRING REGEXP same as STRING : REGEXP\n"
+#~ " substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+#~ " index STRING CHARS index in STRING where any CHARS is found, or "
+#~ "0\n"
+#~ " length STRING length of STRING\n"
+#~ " + TOKEN interpret TOKEN as a string, even if it is "
+#~ "a\n"
+#~ " keyword like `match' or an operator like "
+#~ "`/'\n"
+#~ "\n"
+#~ " ( EXPRESSION ) value of EXPRESSION\n"
+#~ msgstr ""
+#~ "Åêôõðþíåé ôçí ôéìÞ ôçò ÅÊÖÑÁÓÇ óôçí ôõðéêÞ Ýîïäï. Ìéá êåíÞ ãñáììÞ,\n"
+#~ " ðéï êÜôù, ÷ùñßæåé óå ïìÜäåò ìå áýîïõóá ðñïôåñáéüôçôá.\n"
+#~ "Ç ÅÊÖÑÁÓÇ ìðïñåß íá åßíáé:\n"
+#~ "\n"
+#~ " ÐÁÑÁÌ1 | ÐÁÑÁÌ2 ÐÁÑÁÌ1 áí äåí åßíáé êåíÞ Þ 0, áëëéþò ÐÁÑÁÌ2\n"
+#~ "\n"
+#~ " ÐÁÑÁÌ1 & ÐÁÑÁÌ2 ÐÁÑÁÌ1 åáí êáìéÜ áðü ôéò ðáñáìÝôñïõò äåí åéíáé "
+#~ "êåíÞ\n"
+#~ " Þ ìçäÝí, áëëéþò 0\n"
+#~ "\n"
+#~ " ÐÁÑÁÌ1 < ÐÁÑÁÌ2 ÐÁÑÁÌ1 åßíáé ìéêñüôåñç ôçò ÐÁÑÁÌ2\n"
+#~ " ÐÁÑÁÌ1 <= ÐÁÑÁÌ2 ÐÁÑÁÌ1 åßíáé ìéêñüôåñç Þ ßóç ôçò ÐÁÑÁÌ2\n"
+#~ " ÐÁÑÁÌ1 = ÐÁÑÁÌ2 ÐÁÑÁÌ1 åßíáé ßóç ìå ÐÁÑÁÌ2\n"
+#~ " ÐÁÑÁÌ1 != ÐÁÑÁÌ2 ÐÁÑÁÌ1 äåí åßíáé ßóç ìå ôçí ÐÁÑÁÌ2\n"
+#~ " ÐÁÑÁÌ1 >= ÐÁÑÁÌ2 ÐÁÑÁÌ1 åßíáé ìåãáëýôåñç Þ ßóç ôçò ÐÁÑÁÌ2\n"
+#~ " ÐÁÑÁÌ1 > ÐÁÑÁÌ2 ÐÁÑÁÌ1 åßíáé ìåãáëýôåñç ôçò ÐÁÑÁÌ2\n"
+#~ "\n"
+#~ " ÐÁÑÁÌ1 + ÐÁÑÁÌ2 Ôï áñéèìçôéêü Üèñïéóìá ôùí ÐÁÑÁÌ1 êáé ÐÁÑÁÌ2\n"
+#~ " ÐÁÑÁÌ1 - ÐÁÑÁÌ2 Ç áñéèìçôéêÞ äéáöïñÜ ôçò ÐÁÑÁÌ1 ìå ôçí ÐÁÑÁÌ2\n"
+#~ "\n"
+#~ " ÐÁÑÁÌ1 * ÐÁÑÁÌ2 Ôï áñéèìçôéêü ãéíüìåíï ôùí ÐÁÑÁÌ1 êáé ÐÁÑÁÌ2\n"
+#~ " ÐÁÑÁÌ1 / ÐÁÑÁÌ2 Ôï áñéèìçôéêü ðçëßêï ôçò ÐÁÑÁÌ1 äéá ôçò ÐÁÑÁÌ2\n"
+#~ " ÐÁÑÁÌ1 %% ÐÁÑÁÌ2 Ôï õðüëïéðï ôçò ÐÁÑÁÌ1 äéá ôçí ÐÁÑÁÌ2\n"
+#~ "\n"
+#~ " ÁËÕÓÉÄÁ : ÊÁÍ_ÅÊÖ\n"
+#~ " Ôáßñéáóìá ôçò ÊÁÍ_ÅÊÖ ìåóá óôçí ÁËÕÓÉÄÁ\n"
+#~ "\n"
+#~ " match ÁËÕÓÉÄÁ ÊÁÍ_ÅÊÖ\n"
+#~ " Oìïéï ìå ÁËÕÓÉÄÁ : ÊÁÍ_ÅÊÖ\n"
+#~ " substr ÁËÕÓÉÄÁ ÈÅÓÇ ÌÇÊÏÓ\n"
+#~ " Aöáéñåß áðï ôçí ÁËÕÓÉÄÁ, áñ÷ßæïíôáò áðï ôçí ÈÅÓÇ\n"
+#~ " (ìåôñþíôáò áðï ôï 1) \n"
+#~ " index ÁËÕÓÉÄÁ ÔéìÞ ôçò èÝóçò ôïõ ×ÁÑÁÊÔÇÑÁ åÜí âñåèåß óôçí\n"
+#~ " ÁËÕÓÉÄÁ, áëëéþò 0\n"
+#~ " length ÁËÕÓÉÄÁ ÌÞêïò ôçò ÁËÕÓÉÄÁÓ\n"
+#~ "\n"
+#~ " ( EÊÖÑÁÓÇ ) ÔéìÞ ôçò ÅÊÖÑÁÓÇÓ\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print ARGUMENT(s) according to FORMAT.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+#~ "\n"
+#~ " \\\" double quote\n"
+#~ " \\0NNN character with octal value NNN (0 to 3 digits)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a alert (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c produce no further output\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r carriage return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ " \\xNNN byte with hexadecimal value NNN (1 to 3 digits)\n"
+#~ "\n"
+#~ " \\uNNNN character with hexadecimal value NNNN (4 digits)\n"
+#~ " \\UNNNNNNNN character with hexadecimal value NNNNNNNN (8 digits)\n"
+#~ " %%%% a single %%\n"
+#~ " %%b ARGUMENT as a string with `\\' escapes interpreted\n"
+#~ "\n"
+#~ "and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+#~ "ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+#~ msgstr ""
+#~ "Åêôõðþíåé ôéò ÐÁÑÁÌÅÔÑÏÕÓ óýìöùíá ìç ôçí ÌÏÑÖÇ.\n"
+#~ "\n"
+#~ " --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+#~ " --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+#~ "\n"
+#~ "Ç ÌÏÑÖÇ åëÝã÷åé ôçí Ýîïäï üðùò ç óõíÜñôçóç printf() óôçí C.\n"
+#~ "Ïé óåéñÝò ðïõ åñìçíåýïíôáé åéíáé:\n"
+#~ "\n"
+#~ " \\\" ÅéóáãùãéêÜ\n"
+#~ " \\0NNN Ï ÷áñáêôÞñáò ìå ïêôáäéêÞ ôéìÞ NNN (0 ìÝ÷ñé 3 øçößá)\n"
+#~ " \\\\ Ï ÷áñáêôÞñáò `\\'\n"
+#~ " \\a Ç÷ïò áöýðíéóçò\n"
+#~ " \\b ÐéóùäéÜóôçìá\n"
+#~ " \\c ÓôáìáôÜåé ôçí åêôõðþóç\n"
+#~ " \\f ÁëëáãÞ óåëßäáò\n"
+#~ " \\n ÁëëáãÞ ãñáììÞò\n"
+#~ " \\r ÅðéóôñïöÞ äñïìÝá\n"
+#~ " \\t Ïñéæüíôéá êáôÜôáîç óå ðßíáêá (tab)\n"
+#~ " \\v ÊÜèåôç êáôÜôáîç óå ðßíáêá\n"
+#~ " \\xNNN Ï ÷áñáêôÞñáò ìå äåêáåîáäéêÞ ôéìÞ NNN (1 ìÝ÷ñé 3 øçößá)\n"
+#~ "\n"
+#~ " %%%% Ï ÷áñáêôÞñáò `%%'\n"
+#~ " %%b Ïé ÐÁÑÁÌÅÔÑÏÉ óáí áëõóßäá ìå ôïõò ÷áñáêôÞñåò äéáöõãÞò `\\'\n"
+#~ " åñìçíåõìÝíïõò\n"
+#~ "\n"
+#~ "åðßóçò üëá ôá ÷áñáêôçñéóôéêÜ ôçò ìïñöÞò óôç C, ðïõ ëÞãïõí\n"
+#~ "óå Ýíá áðï ôá diouxXfeEgGcs, ìå ôçí ÐÁÑÁÌÅÔÑÏ íá Ý÷åé ìåôáôñáðåß\n"
+#~ "óôïí óùóôü ôýðï.\n"
+#~ "Ïé ìåôáâëçôÝò ìåôáâëçôïý ìÞêïò õðïóôçñßæïíôáé.\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Print the full filename of the current working directory.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Special characters:\n"
+#~ " * dsusp CHAR CHAR will send a terminal stop signal once input "
+#~ "flushed\n"
+#~ " eof CHAR CHAR will send an end of file (terminate the input)\n"
+#~ " eol CHAR CHAR will end the line\n"
+#~ " * eol2 CHAR alternate CHAR for ending the line\n"
+#~ " erase CHAR CHAR will erase the last character typed\n"
+#~ " intr CHAR CHAR will send an interrupt signal\n"
+#~ " kill CHAR CHAR will erase the current line\n"
+#~ " * lnext CHAR CHAR will enter the next character quoted\n"
+#~ " quit CHAR CHAR will send a quit signal\n"
+#~ " * rprnt CHAR CHAR will redraw the current line\n"
+#~ " start CHAR CHAR will restart the output after stopping it\n"
+#~ " stop CHAR CHAR will stop the output\n"
+#~ " susp CHAR CHAR will send a terminal stop signal\n"
+#~ " * swtch CHAR CHAR will switch to a different shell layer\n"
+#~ " * werase CHAR CHAR will erase the last word typed\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Åéäéêïß ÷áñáêôÞñåò:\n"
+#~ "* dsusp ×ÁÑ Ï ×ÁÑ èá ìåôáäþóåé óÞìá áíáóôïëÞò ôåñìáôéêïý áìÝóùò "
+#~ "ìüëéò\n"
+#~ " ç åßóïäïò áäåéÜóåé\n"
+#~ " eof ×ÁÑ Ï ×ÁÑ èá ìåôáäþóåé Ýíá ôåëïò áñ÷åßïõ (ôÝëïò åéóüäïõ)\n"
+#~ " eol ×ÁÑ Ï ×ÁÑ èá ìåôáäþóåé Ýíá ôåëïò ãñáììÞò\n"
+#~ "* eol2 ×ÁÑ Åíáëáêôéêüò ×ÁÑ ãéá ôÝëïò ãñáììÞò\n"
+#~ " erase ×ÁÑ Ï ×ÁÑ èá óâÞóåé ôïí ôåëåõôáßï ÷áñáêôÞñá ðïõ "
+#~ "ðëçêôñïëïãÞèçêå\n"
+#~ " intr ×ÁÑ Ï ×ÁÑ èá ìåôáäþóåé óÞìá äéáêïðÞò\n"
+#~ " kill ×ÁÑ Ï ×ÁÑ èá óâÞóåé ôçí ôñÝ÷ïõóá ãñáììÞ\n"
+#~ "* lnext ×ÁÑ Ï ×ÁÑ èá åéóÜãåé ôïí åðüìåíï ÷áñáêôÞñá óå åéóáãùãéêÜ\n"
+#~ " quit ×ÁÑ Ï ×ÁÑ èá ìåôáäüóåé óÞìá ôÝëïõò\n"
+#~ "* rprnt ×ÁÑ Ï ×ÁÑ èá îáíáæùãñáößóåé ôçí ôñÝ÷ïõóá ãñáììÞ\n"
+#~ " start ×ÁÑ Ï ×ÁÑ èá îáíáñ÷ßóåé ôçí Ýîïäï ìåôÜ ôï óôáìáôçìÜ ôçò\n"
+#~ " stop ×ÁÑ Ï ×ÁÑ èá óôáìáôÞóåé ôçí Ýîïäï\n"
+#~ " susp ×ÁÑ Ï ×ÁÑ èá ìåôáäþóåé óÞìá áíáóôïëÞò ôåñìáôéêïý\n"
+#~ "* swtch ×ÁÑ Ï ×ÁÑ èá åðéôñÝøåé ôçí ìåôáöïñÜ óå äéáöïñåôéêÞ óôñþóç "
+#~ "êåëýöïõò\n"
+#~ " (shell layer)\n"
+#~ "* werase ×ÁÑ Ï ×ÁÑ èá óâÞóåé ôçí ôåëåõôáßá ëÝîç ðïõ ðëçêôñïëïãÞèçêå\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Special settings:\n"
+#~ " N set the input and output speeds to N bauds\n"
+#~ " * cols N tell the kernel that the terminal has N columns\n"
+#~ " * columns N same as cols N\n"
+#~ " ispeed N set the input speed to N\n"
+#~ " * line N use line discipline N\n"
+#~ " min N with -icanon, set N characters minimum for a completed "
+#~ "read\n"
+#~ " ospeed N set the output speed to N\n"
+#~ " * rows N tell the kernel that the terminal has N rows\n"
+#~ " * size print the number of rows and columns according to the "
+#~ "kernel\n"
+#~ " speed print the terminal speed\n"
+#~ " time N with -icanon, set read timeout of N tenths of a second\n"
+#~ msgstr ""
+#~ "\n"
+#~ "ÅéäéêÝò åêëïãÝò:\n"
+#~ " N ÈÝôåé ôçí ôá÷ýôçôá åßóïäïõ êáé Ýîïäïõ óå Í baud\n"
+#~ "* cols N Ðëçñïöïñåß ôïí ðõñÞíá ïôé ôï ôåñìáôéêü Ý÷åé N óôÞëåò\n"
+#~ "* columns N Ïìïéï ìå ôï cols N\n"
+#~ " ispeed N ÈÝôåé ôçí ôá÷ýôçôá åéóüäïõ óå N\n"
+#~ "* line N ×ñçóéìïðïéåß ôçí óõìðåñéöïñÜ ãñáììÞò N\n"
+#~ " min N Ìáæß ìå -icanon, èÝôåé óå N ôïí áñéèìü ÷áñáêôÞñùí\n"
+#~ " áðáñáßôçôùí ãéá ìéá ðëÞñç áíÜãíùóç\n"
+#~ " ospeed N ÈÝôåé ôçí ôá÷ýôçôá åîüäïõ óå N\n"
+#~ "* rows N Ðëçñïöïñåß ôïí ðõñÞíá üôé ôï ôåñìáôéêü Ý÷åé N óåéñÝò\n"
+#~ "* size Åêôõðþíåé ôïí áñéèìü ãñáììþí êáé óôåéëþí\n"
+#~ " óýìöùíá ìå ôïí ðõñÞíá\n"
+#~ " speed Åêôõðþíåé ôçí ôá÷ýôçôá ôïõ ôåñìáôéêïý\n"
+#~ " time N Ìáæß ìå -icanon, èÝôåé ôï ÷ñïíüìåôñï ôÝñìáôéóìïý ôçò\n"
+#~ " áíåíåñãÞò áíÜãíùóçò óå N äÝêáôá äåõôåñïëÝðôïõ\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Input settings:\n"
+#~ " [-]brkint breaks cause an interrupt signal\n"
+#~ " [-]icrnl translate carriage return to newline\n"
+#~ " [-]ignbrk ignore break characters\n"
+#~ " [-]igncr ignore carriage return\n"
+#~ " [-]ignpar ignore characters with parity errors\n"
+#~ " * [-]imaxbel beep and do not flush a full input buffer on a "
+#~ "character\n"
+#~ " [-]inlcr translate newline to carriage return\n"
+#~ " [-]inpck enable input parity checking\n"
+#~ " [-]istrip clear high (8th) bit of input characters\n"
+#~ " * [-]iuclc translate uppercase characters to lowercase\n"
+#~ " * [-]ixany let any character restart output, not only start "
+#~ "character\n"
+#~ " [-]ixoff enable sending of start/stop characters\n"
+#~ " [-]ixon enable XON/XOFF flow control\n"
+#~ " [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+#~ " [-]tandem same as [-]ixoff\n"
+#~ msgstr ""
+#~ "\n"
+#~ "ÅðéëïãÝò åéóüäïõ:\n"
+#~ " [-]brkint Ôï 'break' ðñïêáëåß Ýíá óÞìá äéáêïðÞò\n"
+#~ " [-]icrnl ÌåôáôñÝðåé ôçí `åðáíáöïñÜ äñïìÝá' óå `íÝá ãñáììÞ'\n"
+#~ " [-]ignbrk Áãíïåß ôïõò ÷áñáêôÞñåò äéáêïðÞò (break)\n"
+#~ " [-]igncr Áãíïåß ôçí åðáíáöïñÜ äñïìÝá\n"
+#~ " [-]ignpar Áãíïåß ôïõò ÷áñáêôÞñåò ìå ëÜèç éóïôçìßáò\n"
+#~ "* [-]imaxbel Åíåñãïðïéåß ôïí Þ÷ï êáé äåí áäåéÜæåé Ýíá ãåìÜôï buffer\n"
+#~ " åéóüäïõ ìå ôçí Üöéîç åíüò ÷áñáêôÞñá\n"
+#~ " [-]inlcr ÌåôáôñÝðåé ôçí `íåá ãñáììç' óå `åðáíáöïñÜ äñïìÝá'\n"
+#~ " [-]inpck Åíåñãïðïéåß ôçí åðáëÞèåõóç éóïôçìßáò åéóüäïõ\n"
+#~ " [-]istrip Áöáéñåß ôï õøçëü bit (8ï) ôùí ÷áñáêôÞñùí åéóüäïõ\n"
+#~ "* [-]iuclc ÌåôáôñÝðåé ôá êåöáëáßá óå ìéêñÜ\n"
+#~ "* [-]ixany ÁöÞíåé êÜèå ÷áñáêôÞñá íá îáíáñ÷ßóåé ôçí Ýîïäï, ü÷é ìïíï "
+#~ "ôïí\n"
+#~ " ÷áñáêôÞñá åêêßíçóçò\n"
+#~ " [-]ixoff Åíåñãïðïéåß ôçí áðïóôïëÞ ÷áñáêôÞñùí áñ÷Þ/ôÝëïò\n"
+#~ " [-]ixon Åíåñãïðïéåß ôïí XON/XOFF Ýëåã÷ïò ñïÞò\n"
+#~ " [-]parmrk Äåß÷íåé ôá ëÜèç éóüôçìßáò (ìå ìéá óåéñÜ ÷áñáêôÞñùí 255-"
+#~ "0)\n"
+#~ " [-]tandem Ïìïéï ìå [-]ixoff\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Local settings:\n"
+#~ " [-]crterase echo erase characters as backspace-space-backspace\n"
+#~ " * crtkill kill all line by obeying the echoprt and echoe settings\n"
+#~ " * -crtkill kill all line by obeying the echoctl and echok settings\n"
+#~ " * [-]ctlecho echo control characters in hat notation (`^c')\n"
+#~ " [-]echo echo input characters\n"
+#~ " * [-]echoctl same as [-]ctlecho\n"
+#~ " [-]echoe same as [-]crterase\n"
+#~ " [-]echok echo a newline after a kill character\n"
+#~ " * [-]echoke same as [-]crtkill\n"
+#~ " [-]echonl echo newline even if not echoing other characters\n"
+#~ " * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+#~ " [-]icanon enable erase, kill, werase, and rprnt special "
+#~ "characters\n"
+#~ " [-]iexten enable non-POSIX special characters\n"
+#~ " [-]isig enable interrupt, quit, and suspend special characters\n"
+#~ " [-]noflsh disable flushing after interrupt and quit special "
+#~ "characters\n"
+#~ " * [-]prterase same as [-]echoprt\n"
+#~ " * [-]tostop stop background jobs that try to write to the terminal\n"
+#~ " * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+#~ msgstr ""
+#~ "\n"
+#~ "ÔïðéêÝò åðéëïãÝò:\n"
+#~ " [-]crterase ÐñïóèÝôåé ç÷þ óôïí ÷áñáêôÞñá óâçóßìáôïò óýìöùíá ìå ôçí "
+#~ "óåéñÜ\n"
+#~ " ðéóùäéÜóôçìá-äéÜóôçìá-ðéóùäéÜóôçìá\n"
+#~ "* crtkill Óêïôþíåé üëç ôçí ãñáììÞ õðáêïýïíôáò óôéò åðéëïãÝò\n"
+#~ " 'echoprt' êáé 'echoe'\n"
+#~ "* -crtkill Óêïôþíåé üëç ôçí ãñáììÞ õðáêïýïíôáò óôéò åðéëïãÝò\n"
+#~ " 'echoctl' êáé 'echok'\n"
+#~ "* [-]ctlecho ÐñïóèÝôåé ç÷þ óôïõò ÷áñáêôÞñåò åëÝã÷ïõ óôç óçìåéïãñáößá\n"
+#~ " êáðÝëï (`^c')\n"
+#~ " [-]echo ÐñïóèÝôåé ç÷þ óôïõò åéóáãþìåíïõò ÷áñáêôÞñåò\n"
+#~ "* [-]echoctl Ïìïéï ìå [-]ctlecho\n"
+#~ " [-]echoe Ïìïéï ìå [-]crterase\n"
+#~ " [-]echok ÐñïóèÝôåé `íåá ãñáììÞ' ìåôÜ áðï Ýíá `kill' ÷áñáêôÞñá * [-]"
+#~ "echoke Ïìïéï [-]crtkill\n"
+#~ " [-]echonl ÐñïóèÝôåé ç÷þ óôç `íÝá ãñáììÞ' áêüìç êáé áí äåí "
+#~ "óõìâáßíåé\n"
+#~ " ãéá ôïõò Üëëïõò ÷áñáêôÞñåò\n"
+#~ "* [-]echoprt ÐñïóèÝôåé ç÷þ óôïõò óâçóìÝíïõò ÷áñáêôÞñåò ðñïò ôá "
+#~ "ðßóù ìåôáîý `\\' êáé '/'\n"
+#~ " [-]icanon Åíåñãïðïéåß ôïõò åéäéêïýò ÷áñáêôÞñåò\n"
+#~ " 'erase', 'kill', 'werase', êáé 'rprnt'\n"
+#~ " [-]iexten Åíåñãïðïéåß ôïõò ìç-POSIX åéäéêïýò ÷áñáêôÞñåò\n"
+#~ " [-]isig Åíåñãïðïéåß ôïõò åéäéêïýò ÷áñáêôÞñåò\n"
+#~ " 'interrupt', 'quit', êáé 'suspend'\n"
+#~ " [-]noflsh Áðåíåñãïðïéåß ôï Üäåéáóìá ìåôÜ ôïõò åéäéêïýò ÷áñáêôÞñåò\n"
+#~ " 'interrupt' êáé 'quit'\n"
+#~ "* [-]prterase Ïìïéï ìå [-]echoprt\n"
+#~ "* [-]tostop ÓôáìáôÜ ôéò äïõëåéÝò óôï ðáñáóêÞíéï ðïõ ðñïóðáèïýí íá\n"
+#~ " ãñÜøïõí óôï ôåñìáôéêü\n"
+#~ "* [-]xcase Ìáæé ìå ôï 'icanon', äéáöåýãåé ìå `\\'\n"
+#~ " ãéá ôá êåöáëáßá\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Combination settings:\n"
+#~ " * [-]LCASE same as [-]lcase\n"
+#~ " cbreak same as -icanon\n"
+#~ " -cbreak same as icanon\n"
+#~ " cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+#~ " icanon, eof and eol characters to their default values\n"
+#~ " -cooked same as raw\n"
+#~ " crt same as echoe echoctl echoke\n"
+#~ " dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+#~ " kill ^u\n"
+#~ " * [-]decctlq same as [-]ixany\n"
+#~ " ek erase and kill characters to their default values\n"
+#~ " evenp same as parenb -parodd cs7\n"
+#~ " -evenp same as -parenb cs8\n"
+#~ " * [-]lcase same as xcase iuclc olcuc\n"
+#~ " litout same as -parenb -istrip -opost cs8\n"
+#~ " -litout same as parenb istrip opost cs7\n"
+#~ " nl same as -icrnl -onlcr\n"
+#~ " -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+#~ " oddp same as parenb parodd cs7\n"
+#~ " -oddp same as -parenb cs8\n"
+#~ " [-]parity same as [-]evenp\n"
+#~ " pass8 same as -parenb -istrip cs8\n"
+#~ " -pass8 same as parenb istrip cs7\n"
+#~ " raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+#~ " -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+#~ " -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+#~ " -raw same as cooked\n"
+#~ " sane same as cread -ignbrk brkint -inlcr -igncr icrnl\n"
+#~ " -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+#~ " -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+#~ " isig icanon iexten echo echoe echok -echonl -noflsh\n"
+#~ " -xcase -tostop -echoprt echoctl echoke, all special\n"
+#~ " characters to their default values.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "ÓõíäõáóôéêÝò åðéëïãÝò:\n"
+#~ "* [-]LCASE Ïìïéï ìå [-]lcase\n"
+#~ " cbreak Ïìïéï ìå -icanon\n"
+#~ " -cbreak Ïìïéï ìå icanon\n"
+#~ " cooked Ïìïéï ìå brkint ignpar istrip icrnl ixon opost isig\n"
+#~ " icanon, eof êáé eol óôéò åî'ïñéóìïý ôéìÝò ôïõò\n"
+#~ " -cooked Ïìïéï ìå raw\n"
+#~ " crt Ïìïéï ìå echoe echoctl echoke\n"
+#~ " dec Ïìïéï ìå echoe echoctl echoke -ixany intr ^c erase 0177\n"
+#~ " kill ^u\n"
+#~ "* [-]decctlq Ïìïéï ìå [-]ixany\n"
+#~ " ek `erase' êáé `kill' ÷áñáêôÞñåò óôéò åî'ïñéóìïý ôéìÝò ôïõò\n"
+#~ " evenp Ïìïéï ìå parenb -parodd cs7\n"
+#~ " -evenp Ïìïéï ìå -parenb cs8\n"
+#~ "* [-]lcase Ïìïéï ìå xcase iuclc olcuc\n"
+#~ " litout Ïìïéï ìå -parenb -istrip -opost cs8\n"
+#~ " -litout Ïìïéï ìå parenb istrip opost cs7\n"
+#~ " nl Ïìïéï ìå -icrnl -onlcr\n"
+#~ " -nl Ïìïéï ìå icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+#~ " oddp Ïìïéï ìå parenb parodd cs7\n"
+#~ " -oddp Ïìïéï ìå -parenb cs8\n"
+#~ " [-]parity Ïìïéï ìå [-]evenp\n"
+#~ " pass8 Ïìïéï ìå -parenb -istrip cs8\n"
+#~ " -pass8 Ïìïéï ìå parenb istrip cs7\n"
+#~ " raw Ïìïéï ìå -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+#~ " -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+#~ " -imaxbel -opost -isig -icanon -xcase min 1 öïñÜ 0\n"
+#~ " -raw Ïìïéï ìå cooked\n"
+#~ " sane Ïìïéï ìå cread -ignbrk brkint -inlcr -igncr icrnl\n"
+#~ " -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+#~ " -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+#~ " isig icanon iexten echo echoe echok -echonl -noflsh\n"
+#~ " -xcase -tostop -echoprt echoctl echoke, êáé üëïõò ôïõò\n"
+#~ " åéäéêïýò ÷áñáêôÞñåò ìå ôéò åî'ïñéóìïý ôéìÝò ôïõò.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode "
+#~ "numbers\n"
+#~ " FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+#~ " FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+#~ "\n"
+#~ " -b FILE FILE exists and is block special\n"
+#~ " -c FILE FILE exists and is character special\n"
+#~ " -d FILE FILE exists and is a directory\n"
+#~ " -e FILE FILE exists\n"
+#~ " -f FILE FILE exists and is a regular file\n"
+#~ " -g FILE FILE exists and is set-group-ID\n"
+#~ " -h FILE FILE exists and is a symbolic link (same as -L)\n"
+#~ " -G FILE FILE exists and is owned by the effective group ID\n"
+#~ " -k FILE FILE exists and has its sticky bit set\n"
+#~ " -L FILE FILE exists and is a symbolic link (same as -h)\n"
+#~ " -O FILE FILE exists and is owned by the effective user ID\n"
+#~ " -p FILE FILE exists and is a named pipe\n"
+#~ " -r FILE FILE exists and is readable\n"
+#~ " -s FILE FILE exists and has a size greater than zero\n"
+#~ " -S FILE FILE exists and is a socket\n"
+#~ " -t [FD] file descriptor FD (stdout by default) is opened on a "
+#~ "terminal\n"
+#~ " -u FILE FILE exists and its set-user-ID bit is set\n"
+#~ " -w FILE FILE exists and is writable\n"
+#~ " -x FILE FILE exists and is executable\n"
+#~ msgstr ""
+#~ "\n"
+#~ " ÁÑ×ÅÉÏ1 -ef ÁÑ×ÅÉÏ2 ÁÑ×ÅÉÏ1 êáé ÁÑ×ÅÉÏ2 Ý÷ïõí ôï ßäéï íïýìåñï\n"
+#~ " óõóêåõÞò êáé inode\n"
+#~ " ÁÑ×ÅÉÏ1 -nt ÁÑ×ÅÉÏ2 ÁÑ×ÅÉÏ1 åßíáé ðéï ðñüóöáôï (çìåñïìçíßá "
+#~ "ìåôáôñïðÞò)\n"
+#~ " áðï ôï ÁÑ×ÅÉÏ2\n"
+#~ " ÁÑ×ÅÉÏ1 -ot ÁÑ×ÅÉÏ2 ÁÑ×ÅÉÏ1 åßíáé ðéï ðáëéü áðï ôï ÁÑ×ÅÉÏ2\n"
+#~ "\n"
+#~ " -b ÁÑ×ÅÉÏ ÁÑ×ÅÉÏ õðÜñ÷åé êáé åßíáé áñ÷åßï ôýðïõ block\n"
+#~ " -c ÁÑ×ÅÉÏ ÁÑ×ÅÉÏ õðÜñ÷åé êáé åßíáé åéäéêïý ôýðïõ ÷áñáêôÞñùí\n"
+#~ " -d ÁÑ×ÅÉÏ ÁÑ×ÅÉÏ õðÜñ÷åé êáé åßíáé êáôÜëïãïò\n"
+#~ " -e ÁÑ×ÅÉÏ ÁÑ×ÅÉÏ õðÜñ÷åé\n"
+#~ " -f ÁÑ×ÅÉÏ ÁÑ×ÅÉÏ õðÜñ÷åé êáé åßíáé êáíïíéêïý ôýðïõ\n"
+#~ " -g ÁÑ×ÅÉÏ ÁÑ×ÅÉÏ õðÜñ÷åé êáé ôï bit 'set-group-ID' Ý÷åé ôåèåß\n"
+#~ " -G ÁÑ×ÅÉÏ ÁÑ×ÅÉÏ õðÜñ÷åé êáé áíÞêåé óôçí éó÷ýïõóá ôáõôüôçôá\n"
+#~ " (effective id) ïìÜäáò\n"
+#~ " -k ÁÑ×ÅÉÏ ÁÑ×ÅÉÏ õðÜñ÷åé êáé ôï bit 'sticky' Ý÷åé ôåèåß\n"
+#~ " -L ÁÑ×ÅÉÏ ÁÑ×ÅÉÏ õðÜñ÷åé êáé åßíáé óõìâïëéêÞ óýíäåóç (symbolic "
+#~ "link)\n"
+#~ " -O ÁÑ×ÅÉÏ ÁÑ×ÅÉÏ õðÜñ÷åé êáé áíÞêåé óôçí éó÷ýïõóá ôáõôüôçôá ÷ñÞóôç\n"
+#~ " -p ÁÑ×ÅÉÏ ÁÑ×ÅÉÏ õðÜñ÷åé êáé åßíáé áñ÷åßï ôýðïõ named pipe\n"
+#~ " -r ÁÑ×ÅÉÏ ÁÑ×ÅÉÏ õðÜñ÷åé êáé åßíáé áíáãíþóéìï\n"
+#~ " -s ÁÑ×ÅÉÏ ÁÑ×ÅÉÏ õðÜñ÷åé êáé Ý÷åé ìÝãåèïò èåôéêü\n"
+#~ " -S ÁÑ×ÅÉÏ ÁÑ×ÅÉÏ õðÜñ÷åé êáé åßíáé ôïõ ôýðïõ socket\n"
+#~ " -t [ÐÁ] Ï ðåñéãñáöçôçò áñ÷åßïõ (FD) (ôõðéêÞ Ýîïäïò åî'ïñéóìïý)\n"
+#~ " åßíáé áíïé÷ôüò óå Ýíá ôåñìáôéêü\n"
+#~ " -u ÁÑ×ÅÉÏ ÁÑ×ÅÉÏ õðÜñ÷åé êáé ôï bit 'set-user-ID' Ý÷åé ôåèåß\n"
+#~ " -w ÁÑ×ÅÉÏ ÁÑ×ÅÉÏ õðÜñ÷åé êáé åßíáé åããñÜøéìï\n"
+#~ " -x ÁÑ×ÅÉÏ ÁÑ×ÅÉÏ õðÜñ÷åé êáé åßíáé åêôåëÝóéìï\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " -a, --all same as -b -d --login -p -r -t -T -u\n"
+#~ " -b, --boot time of last system boot\n"
+#~ " -d, --dead print dead processes\n"
+#~ " -H, --heading print line of column headings\n"
+#~ " -i, --idle add idle time as HOURS:MINUTES, . or old\n"
+#~ " (deprecated, use -u)\n"
+#~ " --login print system login processes\n"
+#~ " (equivalent to SUS -l)\n"
+#~ " -l, --lookup attempt to canonicalize hostnames via DNS\n"
+#~ " (-l is deprecated, use --lookup)\n"
+#~ " -m only hostname and user associated with stdin\n"
+#~ " -p, --process print active processes spawned by init\n"
+#~ " -q, --count all login names and number of users logged on\n"
+#~ " -r, --runlevel print current runlevel\n"
+#~ " -s, --short print only name, line, and time (default)\n"
+#~ " -t, --time print last system clock change\n"
+#~ " -T, -w, --mesg add user's message status as +, - or ?\n"
+#~ " -u, --users lists users logged in\n"
+#~ " --message same as -T\n"
+#~ " --writable same as -T\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "If FILE is not specified, use %s. %s as FILE is common.\n"
+#~ "If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -H, --heading Åêôõðþíåé ãñáììÞ ìå ôéò åðéêåöáëßäåò ôùí óôçëþí\n"
+#~ " -i, -u, --idle ÐñïóèÝôåé ôïí ÷ñüíï ðïõ ï ÷ñÞóôçò åßíáé áäñáíÞò\n"
+#~ " óôç ìïñöÞ ÙÑÅÓ:ËÅÐÔÁ, . Þ 'ðáëéÜ'\n"
+#~ " -m Ìüíï ôï üíïìá ôïõ óõóôÞìáôïò (hostname) êáé\n"
+#~ " ôïí ÷ñÞóôç ðïõ óõíäÝåôáé ìå ôçí ôõðéêÞ åßóïäï\n"
+#~ " -q, --count Åêôõðþíåé üëåò ôéò åíåñãÝò óõíäÝóåéò êáé ôïí áñéèìü "
+#~ "ôùí\n"
+#~ " ÷ñçóôþí ðïõ âñßóêïíôáé óôï óýóôçìá\n"
+#~ " -s (áãíïåßôáé)\n"
+#~ " -T, -w, --mesg Åêôõðþíåé ôçí êáôÜóôáóç ìçíõìÜôùí ôïõ ÷ñÞóôç ìå +, - "
+#~ "Þ ?\n"
+#~ " --message Ïìïéï ìå -T\n"
+#~ " --writable Ïìïéï ìå -T\n"
+#~ " --help Åêôõðþíåé áõôÞ ôçí âïÞèåéá êáé ôåñìáôßæåé\n"
+#~ " --version Åêôõðþíåé ðëçñïöïñßåò Ýêäïóçò êáé ôåñìáôßæåé\n"
+#~ "\n"
+#~ "Åáí ÁÑ×ÅÉÏ äåí êáèïñßæåôáé, ÷ñçóéìïðïéåßôáé ôï %s.\n"
+#~ "Ôï %s óáí ÁÑ×ÅÉÏ åßíáé êïéíü. ÅÜí ÐÁÑÁÌ1 êáé ÐÁÑÁÌ2 äïèïýí,\n"
+#~ "ôï -m åííïåßôáé: `am i' Þ `mom likes' åßíáé óõíçèéóìÝíá.\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Repeatedly output a line with all specified STRING(s), or `y'.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#~ msgid "cannot get processor type"
+#~ msgstr "Äåí åßíáé äõíáôüí íá âñåèåß ï ôýðïò ôïõ åðåîåñãáóôÞ."
+
+#~ msgid "USER"
+#~ msgstr "×ÑÇÓÔÇÓ"
+
+#~ msgid "MESG "
+#~ msgstr "ÌÇÍÌ "
+
+#~ msgid "LOGIN-TIME "
+#~ msgstr "ÙÑÁ-ÅÉÓÏÄÏÕ "
+
+#~ msgid "FROM\n"
+#~ msgstr "ÁÐÏ\n"
+
+#~ msgid "<undef>"
+#~ msgstr "<Ìç ïñéóìÝíï>"
+
+#, fuzzy
+#~ msgid "Usage: %s [-v]\n"
+#~ msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]\n"
+
+#
+#, fuzzy
+#~ msgid "Usage: %s [OPTION]... [VARIABLE]...\n"
+#~ msgstr "×ñÞóç: %s [ÅÐÉËÏÃÅÓ]... [ÁÑ×ÅÉÏ]...\n"
+
+#
+#, fuzzy
+#~ msgid "Usage: %s [OPTION]... NUMBER[SUFFIX]\n"
+#~ msgstr "×ñÞóç: %s [ÅÐÉËÏÃÅÓ]... [ÁÑ×ÅÉÏ]...\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "(obsolete) If -VALUE is used as first OPTION, same as -c VALUE when one "
+#~ "of\n"
+#~ "multipliers bkm follows concatenated, else same as -n VALUE.\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç ôùí 10 ðñþôùí ãñáììþí áðü êÜèå ÁÑ×ÅÉÏ óôçí êáíïíéêÞ Ýîïäï.\n"
+#~ "Ìå ðåñéóóüôåñá áðü Ýíá ÁÑ×ÅÉÏ, íá ðñïçãçèåß åðéóÝëéäï ìå ôï üíïìá ôïõ "
+#~ "áñ÷åßïõ.\n"
+#~ "×ùñßò ÁÑ×ÅÉÏ Þ üôáí ôï ÁÑ×ÅÉÏ åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ "
+#~ "åßóïäï.\n"
+#~ "\n"
+#~ " -c, --bytes=ÌÅÃÅÈÏÓ åìöÜíéóç ôùí ðñþôùí ÌÅÃÅÈÏÓ bytes\n"
+#~ " -n, --lines=ÁÑÉÈÌÏÓ åìöÜíéóç ôùí ðñþôùí ÁÑÉÈÌÏÓ ãñáììþí áíôß ôùí "
+#~ "ðñþôùí 10\n"
+#~ " -q, --quiet, --silent íá ìçí ôõðþíïíôáé åðéóÝëéäá ìå ôá ïíüìáôá "
+#~ "áñ÷åßùí\n"
+#~ " -v, --verbose íá ôõðþíïíôáé ðÜíôá åðéóÝëéäá ìå ôá ïíüìáôá "
+#~ "áñ÷åßùí\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "Ôï ÌÅÃÅÈÏÓ ìðïñåß íá Ý÷åé êáôÜëçîç ìå ðïëëáðëáóéáóôÞ: b ãéá 512, k ãéá "
+#~ "1K, m ãéá 1 Meg.\n"
+#~ "Áí ÷ñçóéìïðïéåßôáé ôï -VALUE óáí ðñþôç ÅÐÉËÏÃÇ, áíÜãíùóå -c ÔÉÌÇ üôáí\n"
+#~ "Ýíáò áðü ôïõò ðïëëáðëáóéáóôÝò bkm áêïëïõèåß óõíåíùìÝíïò, äéáöïñåôéêÜ "
+#~ "áíÜãíùóå -n ÔÉÌÇ\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " +POS1 [-POS2] start a key at POS1, end it before POS2 "
+#~ "(origin 0)\n"
+#~ " Warning: this option is obsolete\n"
+#~ msgstr ""
+#~ "Óýãêñéóç ôáîéíïìçìÝíùí áñ÷åßùí ÁÑÉÓÔÅѼ_ÁÑ×ÅºÏ êáé ÄÅÎɼ_ÁÑןÏ, áíÜ "
+#~ "ãñáììÞ.\n"
+#~ "\n"
+#~ " -1 áðüêñõøç ìïíáäéêþí ãñáììþí óôï áñéóôåñü áñ÷åßï\n"
+#~ " -2 áðüêñõøç ìïíáäéêþí ãñáììþí óôï äåîéü áñ÷åßï\n"
+#~ " -3 áðüêñõøç ìïíáäéêþí ãñáììþí êáé óôá äýï áñ÷åßá\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç Üèñïéóìá åëÝã÷ïõ CRC êáé áñéèìü bytes ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Convert tabs in each FILE to spaces, writing to standard output.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -i, --initial do not convert TABs after non whitespace\n"
+#~ " -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+#~ msgstr ""
+#~ "ÌåôáôñïðÞ óôçëïãíùìüíùí óå êÜèå ÁÑ×ÅÉÏ óå äéáóôÞìáôá, ìå åããñáöÞ óôçí "
+#~ "êáíïíéêÞ Ýîïäï.\n"
+#~ "×ùñßò ÁÑ×ÅÉÏ Þ üôáí ôï ÁÑ×ÅÉÏ åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ "
+#~ "åßóïäï.\n"
+#~ "\n"
+#~ " -i, --initial íá ìç ìåôáôñáðïýí ôá TAB ìåôÜ áðü ìç-ëåõêïýò "
+#~ "÷áñáêôÞñåò\n"
+#~ " -t, --tabs=ÁÑÉÈÌ ïé óôçëïãíþìïíåò íá Ý÷ïõí ìÝãåèïò ÁÑÉÈÌüò "
+#~ "÷áñáêôÞñåò, ü÷é 8\n"
+#~ " -t, --tabs=ËÉÓÔÁ ÷ñÞóç ëßóôáò äéá÷ùñéóìÝíçò ìå êüììáôá ãéá ïñéóìü "
+#~ "èÝóåùí óôçëïãíùìüíùí\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "Áíôß ãéá -t ÁÑÉÈÌÏÓ Þ -t ËÉÓÔÁ, -ÁÑÉÈÌÏÓ Þ -ËÉÓÔÁ ìðïñïýí íá "
+#~ "÷ñçóéìïðïéçèïýí.\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Instead of -t NUMBER or -t LIST, -NUMBER or -LIST may be used.\n"
+#~ msgstr ""
+#~ "ÌåôáôñïðÞ óôçëïãíùìüíùí óå êÜèå ÁÑ×ÅÉÏ óå äéáóôÞìáôá, ìå åããñáöÞ óôçí "
+#~ "êáíïíéêÞ Ýîïäï.\n"
+#~ "×ùñßò ÁÑ×ÅÉÏ Þ üôáí ôï ÁÑ×ÅÉÏ åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ "
+#~ "åßóïäï.\n"
+#~ "\n"
+#~ " -i, --initial íá ìç ìåôáôñáðïýí ôá TAB ìåôÜ áðü ìç-ëåõêïýò "
+#~ "÷áñáêôÞñåò\n"
+#~ " -t, --tabs=ÁÑÉÈÌ ïé óôçëïãíþìïíåò íá Ý÷ïõí ìÝãåèïò ÁÑÉÈÌüò "
+#~ "÷áñáêôÞñåò, ü÷é 8\n"
+#~ " -t, --tabs=ËÉÓÔÁ ÷ñÞóç ëßóôáò äéá÷ùñéóìÝíçò ìå êüììáôá ãéá ïñéóìü "
+#~ "èÝóåùí óôçëïãíùìüíùí\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "Áíôß ãéá -t ÁÑÉÈÌÏÓ Þ -t ËÉÓÔÁ, -ÁÑÉÈÌÏÓ Þ -ËÉÓÔÁ ìðïñïýí íá "
+#~ "÷ñçóéìïðïéçèïýí.\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Wrap input lines in each FILE (standard input by default), writing to\n"
+#~ "standard output.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --bytes count bytes rather than columns\n"
+#~ " -s, --spaces break at spaces\n"
+#~ " -w, --width=WIDTH use WIDTH columns instead of 80\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Áíáäßðëùóç ãñáììþí åéóüäïõ óå êÜèå ÁÑ×ÅÉÏ (êáíïíéêÞ åßóïäïò åî ïñéóìïý),\n"
+#~ "ãñÜöïíôáò óôçí êáíïíéêÞ Ýîïäï.\n"
+#~ "\n"
+#~ " -b, --bytes ìÝôñçóç bytes áíôß óôçëþí\n"
+#~ " -s, --spaces áíáäßðëùóç óå äéáóôÞìáôá ìüíï\n"
+#~ " -w, --width=ÐËÁÔÏÓ ÷ñÞóç ÐËÁÔÏÓ óôÞëåò áíôß ãéá 80\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Write lines consisting of the sequentially corresponding lines from\n"
+#~ "each FILE, separated by TABs, to standard output.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+#~ " -s, --serial paste one file at a time instead of in "
+#~ "parallel\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç ãñáììþí ðïõ áðáñôßæïíôáé áðü ôéò óåéñéáêÜ áíôßóôïé÷åò ãñáììÝò "
+#~ "áðü\n"
+#~ "êÜèå ÁÑ×ÅÉÏ, ÷ùñéóìÝíåò ìå TABs, óôçí êáíïíéêÞ Ýîïäï.\n"
+#~ "×ùñßò ÁÑ×ÅÉÏ, Þ üôáí ôï áñ÷åßï åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ "
+#~ "åßóïäï.\n"
+#~ "\n"
+#~ " -d, --delimiters=ËÉÓÔÁ åðáíá÷ñçóéìïðïßçóç ÷áñáêôÞñùí áðü ôç ËÉÓÔÁ áíôß "
+#~ "ãéá TABs\n"
+#~ " -s, --serial åðéêüëëçóç åíüò áñ÷åßïõ ôç öïñÜ áíôß ðáñÜëëçëá\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " -NUMBER same as -l NUMBER\n"
+#~ " --verbose print a diagnostic to standard error just\n"
+#~ " before each output file is opened\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+#~ msgstr ""
+#~ "¸îïäïò ôìçìÜôùí óôáèåñïý ìåãÝèïõò áðü ôçí ÅÉÓÏÄÏ óå ÐÑÏÈÅÌÁaa, "
+#~ "ÐÑÏÈÅÌÁab, ...; åî ïñéóìïý\n"
+#~ "ÐÑÏÈÅÌÁ åßíáé ôï `x'. ×ùñßò ÅÉÓÏÄÏ, Þ üôáí ç ÅÉÓÏÄÏÓ åßíáé ôï -, "
+#~ "áíÜãíùóç áðü ôçí êáíïíéêÞ åßóïäï.\n"
+#~ "\n"
+#~ " -b, --bytes=ÌÅÃÅÈÏÓ ôïðïèÝôçóç ÌÅÃÅÈÏÓ bytes óå êÜèå áñ÷åßï åîüäïõ\n"
+#~ " -C, --line-bytes=ÌÅÃÅÈÏÓ ôïðïèÝôçóç ôï ðïëý ÌÅÃÅÈÏÓ bytes áðü ãñáììÝò "
+#~ "óå êÜèå áñ÷åßï åîüäïõ\n"
+#~ " -l, --lines=ÁÑÉÈÌÏÓ ôïðïèÝôçóç ÁÑÉÈÌÏÓ ãñáììþí óå êÜèå áñ÷åßïõ "
+#~ "åîüäïõ\n"
+#~ " -ÁÑÉÈÌÏÓ ßäéï ìå -l ÁÑÉÈÌÏÓ\n"
+#~ " --verbose åêôýðùóç äéáãíùóôéêïý óôï êáíïíéêü óöÜëìá ìüëéò "
+#~ "ðñéí\n"
+#~ " áíïé÷ôåß êÜèå áñ÷åßï åîüäïõ\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "ÌÅÃÅÈÏÓ ìðïñåß íá Ý÷åé ðñüèåìá ðïëëáðëáóéáóôÞ: b ãéá 512, k ãéá 1K, m ãéá "
+#~ "1 Meg.\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Write each FILE to standard output, last line first.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --before attach the separator before instead of after\n"
+#~ msgstr ""
+#~ "ÅããñáöÞ êÜèå áñ÷åßïõ óôçí êáíïíéêÞ Ýîïäï, ôåëåõôáßá ãñáììÞ ðñþôá.\n"
+#~ "×ùñßò ÁÑ×ÅÉÏ, Þ üôáí ôï áñ÷åßï åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ "
+#~ "åßóïäï.\n"
+#~ "\n"
+#~ " -b, --before ôïðïèÝôçóç ôïõ äéá÷ùñéóôÞ ðñéí áíôß ãéá ìåôÜ\n"
+#~ " -r, --regex ìåôÜöñáóç ôïõ äéá÷ùñéóôÞ ùò êáíïíéêÞ Ýêöñáóç\n"
+#~ " -s, --separator=ÁËÖÁÑÉÈÌ ÷ñÞóç ÁËÖÁÑÉÈÌçôéêïý ùò äéá÷ùñéóôÞò áíôß ôïõ "
+#~ "÷áñáêôÞñá íÝáò ãñáììÞò\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Print the last %d lines of each FILE to standard output.\n"
+#~ "With more than one FILE, precede each with a header giving the file "
+#~ "name.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " --retry keep trying to open a file even if it is\n"
+#~ " inaccessible when tail starts or if it "
+#~ "becomes\n"
+#~ " inaccessible later -- useful only with -f\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç ôùí 10 ðñþôùí ãñáììþí áðü êÜèå ÁÑ×ÅÉÏ óôçí êáíïíéêÞ Ýîïäï.\n"
+#~ "Ìå ðåñéóóüôåñá áðü Ýíá ÁÑ×ÅÉÏ, íá ðñïçãçèåß åðéóÝëéäï ìå ôï üíïìá ôïõ "
+#~ "áñ÷åßïõ.\n"
+#~ "×ùñßò ÁÑ×ÅÉÏ Þ üôáí ôï ÁÑ×ÅÉÏ åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ "
+#~ "åßóïäï.\n"
+#~ "\n"
+#~ " -c, --bytes=ÌÅÃÅÈÏÓ åìöÜíéóç ôùí ðñþôùí ÌÅÃÅÈÏÓ bytes\n"
+#~ " -n, --lines=ÁÑÉÈÌÏÓ åìöÜíéóç ôùí ðñþôùí ÁÑÉÈÌÏÓ ãñáììþí áíôß ôùí "
+#~ "ðñþôùí 10\n"
+#~ " -q, --quiet, --silent íá ìçí ôõðþíïíôáé åðéóÝëéäá ìå ôá ïíüìáôá "
+#~ "áñ÷åßùí\n"
+#~ " -v, --verbose íá ôõðþíïíôáé ðÜíôá åðéóÝëéäá ìå ôá ïíüìáôá "
+#~ "áñ÷åßùí\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "Ôï ÌÅÃÅÈÏÓ ìðïñåß íá Ý÷åé êáôÜëçîç ìå ðïëëáðëáóéáóôÞ: b ãéá 512, k ãéá "
+#~ "1K, m ãéá 1 Meg.\n"
+#~ "Áí ÷ñçóéìïðïéåßôáé ôï -VALUE óáí ðñþôç ÅÐÉËÏÃÇ, áíÜãíùóå -c ÔÉÌÇ üôáí\n"
+#~ "Ýíáò áðü ôïõò ðïëëáðëáóéáóôÝò bkm áêïëïõèåß óõíåíùìÝíïò, äéáöïñåôéêÜ "
+#~ "áíÜãíùóå -n ÔÉÌÇ\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " -t, --tabs=NUMBER have tabs NUMBER characters apart instead of 8\n"
+#~ " -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Instead of -t NUMBER or -t LIST, -NUMBER or -LIST may be used.\n"
+#~ msgstr ""
+#~ "ÌåôáôñïðÞ óôçëïãíùìüíùí óå êÜèå ÁÑ×ÅÉÏ óå äéáóôÞìáôá, ìå åããñáöÞ óôçí "
+#~ "êáíïíéêÞ Ýîïäï.\n"
+#~ "×ùñßò ÁÑ×ÅÉÏ Þ üôáí ôï ÁÑ×ÅÉÏ åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ "
+#~ "åßóïäï.\n"
+#~ "\n"
+#~ " -i, --initial íá ìç ìåôáôñáðïýí ôá TAB ìåôÜ áðü ìç-ëåõêïýò "
+#~ "÷áñáêôÞñåò\n"
+#~ " -t, --tabs=ÁÑÉÈÌ ïé óôçëïãíþìïíåò íá Ý÷ïõí ìÝãåèïò ÁÑÉÈÌüò "
+#~ "÷áñáêôÞñåò, ü÷é 8\n"
+#~ " -t, --tabs=ËÉÓÔÁ ÷ñÞóç ëßóôáò äéá÷ùñéóìÝíçò ìå êüììáôá ãéá ïñéóìü "
+#~ "èÝóåùí óôçëïãíùìüíùí\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "Áíôß ãéá -t ÁÑÉÈÌÏÓ Þ -t ËÉÓÔÁ, -ÁÑÉÈÌÏÓ Þ -ËÉÓÔÁ ìðïñïýí íá "
+#~ "÷ñçóéìïðïéçèïýí.\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Output pieces of FILE separated by PATTERN(s) to files `xx01', "
+#~ "`xx02', ...,\n"
+#~ "and output byte counts of each piece to standard output.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --suffix-format=FORMAT use sprintf FORMAT instead of %%d\n"
+#~ " -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+#~ " -k, --keep-files do not remove output files on errors\n"
+#~ " -n, --digits=DIGITS use specified number of digits instead of 2\n"
+#~ " -s, --quiet, --silent do not print counts of output file sizes\n"
+#~ " -z, --elide-empty-files remove empty output files\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Read standard input if FILE is -. Each PATTERN may be:\n"
+#~ "\n"
+#~ " INTEGER copy up to but not including specified line number\n"
+#~ " /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+#~ " %%REGEXP%%[OFFSET] skip to, but not including a matching line\n"
+#~ " {INTEGER} repeat the previous pattern specified number of "
+#~ "times\n"
+#~ " {*} repeat the previous pattern as many times as "
+#~ "possible\n"
+#~ "\n"
+#~ "A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+#~ msgstr ""
+#~ "ÐáñÞãáãå ôìÞìáôá áðü ôï ÁÑ×ÅÉÏ äéá÷ùñéóìÝíá áðü ÌÏÑÖÇ(ÅÓ) óå áñ÷åßá "
+#~ "`xx01', `xx02', ...,\n"
+#~ "êáé åìöÜíéóå ôïõò áñéèìïýò ôùí byte êÜèå ôìÞìáôïò óôçí êáíïíéêÞ Ýîïäï.\n"
+#~ "\n"
+#~ " -b, --suffix-format=ÌÏÑÖÇ ÷ñÞóç ìïñöÞò áëÜ sprintf áíôß ôïõ %%d\n"
+#~ " -f, --prefix=ÊÁÔÁËÇÎÇ ÷ñÞóç ÊÁÔÁËÇÎÇò áíôß ôïõ `xx'\n"
+#~ " -k, --keep-files íá ìç äéáãñáöïýí ôá áñ÷åßá åîüäïõ óå "
+#~ "ðåñßðôùóç óöáëìÜôùí\n"
+#~ " -n, --digits=ØÇÖÉÁ ÷ñÞóç ØÇÖÉÁ áñéèìü øçößùí áíôß 2\n"
+#~ " -s, --quiet, --silent íá ìçí åìöáíéóôïýí ïé ìåôñÞóåéò ôùí ìåãåèþí "
+#~ "ôùí áñ÷åßùí\n"
+#~ " -z, --elide-empty-files äéáãñáöÞ ôùí êåíþí áñ÷åßùí\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "ÁíÜãíùóç áðü êáíïíéêÞ åßóïäï åÜí ÁÑ×ÅÉÏ åßíáé ôï -. ÊÜèå ÌÏÑÖÇ ìðïñåß íá "
+#~ "åßíáé:\n"
+#~ "\n"
+#~ " ÁÊÅÑÁÉÏÓ áíôéãñáöÞ ìÝ÷ñé, áëëÜ ÷ùñßò óõìðåñßëçøç, áñéèìü "
+#~ "ãñáììÞò\n"
+#~ " /ÊÁÍÅÊÖ/[ÈÅÓÇ] áíôéãñáöÞ ìÝ÷ñé, áëëÜ ÷ùñßò óõìðåñßëçøç, ìéáò "
+#~ "ãñáììÞò ðïõ ôáéñéÜæåé\n"
+#~ " %%ÊÁÍÅÊÖ%%[ÈÅÓÇ] ðáñÝêáìøå óå, áëëÜ ÷ùñßò óõìðåñßëçøç ãñáììÞò ðïõ "
+#~ "ôáéñéÜæåé\n"
+#~ " {ÁÊÅÑÁÉÏÓ} åðáíÜëçøç ôçò ðñïçãïýìåíçò ìïñöÞò ÁÊÅÑÁÉÏÓ öïñÝò\n"
+#~ " {*} åðáíÜëçøç ôçò ðñïçãïýìåíçò ìïñöÞò üóïí ôï äõíáôü "
+#~ "ðåñéóóüôåñåò öïñÝò\n"
+#~ "\n"
+#~ "Ç ÈÅÓÇ ãñáììÞò åßíáé Ýíá õðï÷ñåùôéêü `+' Þ `-' áêïëïõèïýìåíï áðü Ýíá "
+#~ "èåôéêü áêÝñáéï.\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Print selected parts of lines from each FILE to standard output.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --bytes=LIST output only these bytes\n"
+#~ " -c, --characters=LIST output only these characters\n"
+#~ " -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+#~ " -f, --fields=LIST output only these fields; also print any line\n"
+#~ " that contains no delimiter character, unless\n"
+#~ " the -s option is specified\n"
+#~ " -n (ignored)\n"
+#~ " -s, --only-delimited do not print lines not containing delimiters\n"
+#~ " --output-delimiter=STRING use STRING as the output delimiter\n"
+#~ " the default is to use the input delimiter\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+#~ "range, or many ranges separated by commas. Each range is one of:\n"
+#~ "\n"
+#~ " N N'th byte, character or field, counted from 1\n"
+#~ " N- from N'th byte, character or field, to end of line\n"
+#~ " N-M from N'th to M'th (included) byte, character or field\n"
+#~ " -M from first to M'th (included) byte, character or field\n"
+#~ "\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç åðéëåãìÝíùí ôìçìÜôùí áðü ãñáììÝò áðü êÜèå ÁÑ×ÅÉÏ óôçí êáíïíéêÞ "
+#~ "Ýîïäï.\n"
+#~ "\n"
+#~ " -b, --bytes=ËÉÓÔÁ åìöÜíéóç ìüíï áõôþí ôùí bytes\n"
+#~ " -c, --characters=ËÉÓÔÁ åìöÜíéóç ìüíï áõôþí ôùí ÷áñáêôÞñùí\n"
+#~ " -d, --delimiter=ÄÉÁ×ÙÑ ÷ñÞóç ÄÉÁ×ÙÑéóôÞ áíôß TAB ãéá äéá÷ùñéóôÞ "
+#~ "ðåäßïõ\n"
+#~ " -f, --fields=ËÉÓÔÁ åìöÜíéóç ìüíï áõôþí ôùí ðåäßùí\n"
+#~ " -n (áãíïåßôå)\n"
+#~ " -s, --only-delimited íá ìçí åìöáíéóôïýí ãñáììÝò ðïõ äåí ðåñéÝ÷ïõí "
+#~ "äéá÷ùñéóôÝò\n"
+#~ " --output-delimiter=ÁËÖÁÑÉÈ ÷ñÞóç ÁËÖÁÑÉÈÌÇÔÉÊÏÕ ãéá äéá÷ùñéóôÞ "
+#~ "åîüäïõ\n"
+#~ " ôï åî ïñéóìïý åßíáé ç ÷ñÞóç ôïõ äéá÷ùñéóôÞ "
+#~ "åéóüäïõ\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "×ñÞóç åíüò êáé ìüíïõ áðü ôá -b, -c Þ -f. ÊÜèå ËÉÓÔÁ áðáñôßæåôáé áðü Ýíá "
+#~ "äéÜóôçìá\n"
+#~ "Þ ðïëëÜ äéáóôÞìáôá äéá÷ùñéóìÝíá ìå êüììáôá. ÊÜèå äéÜóôçìá åßíáé Ýíá "
+#~ "áðü:\n"
+#~ "\n"
+#~ " N N-ïóôü byte, ÷áñáêôÞñá Þ ðåäßï, ìåôñçìÝíï áðü ôï 1\n"
+#~ " N- áðü ôï N-ïóôü byte, ÷áñáêôÞñá Þ ðåäßï, ìÝ÷ñé ôÝëïò ãñáììÞò\n"
+#~ " N-M áðü Í-ïóôü ìÝ÷ñé Ì-ïóôü (óõìðåñéëáìâáíïìÝíùí) byte, ÷áñáêôÞñá Þ "
+#~ "ðåäßï\n"
+#~ " -M áðü ðñþôï Ýùò Ì-ïóôü (óõìðåñéëáìâáíïìÝíùí) byte, ÷áñáêôÞñá Þ "
+#~ "ðåäßï\n"
+#~ "\n"
+#~ "×ùñßò ÁÑ×ÅÉÏ Þ üôáí áñ÷åßï åßíáé ôï -, áíÜãíùóç áðü êáíïíéêÞ åßóïäï.\n"
+
+#
+#~ msgid ""
+#~ "For each pair of input lines with identical join fields, write a line to\n"
+#~ "standard output. The default join field is the first, delimited\n"
+#~ "by whitespace. When FILE1 or FILE2 (not both) is -, read standard "
+#~ "input.\n"
+#~ "\n"
+#~ " -a SIDE print unpairable lines coming from file SIDE\n"
+#~ " -e EMPTY replace missing input fields with EMPTY\n"
+#~ " -i, --ignore-case ignore differences in case when comparing fields\n"
+#~ " -j FIELD (obsolescent) equivalent to `-1 FIELD -2 FIELD'\n"
+#~ " -j1 FIELD (obsolescent) equivalent to `-1 FIELD'\n"
+#~ " -j2 FIELD (obsolescent) equivalent to `-2 FIELD'\n"
+#~ " -o FORMAT obey FORMAT while constructing output line\n"
+#~ " -t CHAR use CHAR as input and output field separator\n"
+#~ " -v SIDE like -a SIDE, but suppress joined output lines\n"
+#~ " -1 FIELD join on this FIELD of file 1\n"
+#~ " -2 FIELD join on this FIELD of file 2\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+#~ "else fields are separated by CHAR. Any FIELD is a field number counted\n"
+#~ "from 1. FORMAT is one or more comma or blank separated specifications,\n"
+#~ "each being `SIDE.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+#~ "the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+#~ "separated by CHAR.\n"
+#~ msgstr ""
+#~ "Ãéá êÜèå æåýãïò áðü ãñáììÝò åéóüäïõ ìå üìïéá ðåäßá óõíÝíùóçò, åìöÜíéóç "
+#~ "ìéáò\n"
+#~ "ãñáììÞò óôçí êáíïíéêÞ Ýîïäï. Ôï åî ïñéóìïý ðåäßï óõíÝíùóçò åßíáé ôï "
+#~ "ðñþôï,\n"
+#~ "äéá÷ùñéóìÝíï ìå ëåõêü ÷áñáêôÞñá. ¼ôáí ôï ÁÑ×ÅÉÏ1 Þ ÁÑ×ÅÉÏ2 (ü÷é êáé ôá "
+#~ "äýï)\n"
+#~ "åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ åßóïäï.\n"
+#~ "\n"
+#~ " -a ÌÅÑÏÓ åìöÜíéóç áôáßñéáóôùí ãñáììþí, ðñïåñ÷üìåíåò áðü ôï "
+#~ "áñ÷åßï ÌÅÑÏÓ\n"
+#~ " -e ÊÅÍÏ áíôéêáôÜóôáóç åëëéðþí ðåäßùí åéóüäïõ ìå ÊÅÍÏ\n"
+#~ " -i, --ignore-case áãíüçóç äéáöïñþí ìåôáîý ðåæþí/êåöáëáßùí üôáí "
+#~ "óõãêñßíïíôáé ðåäßá\n"
+#~ " -j ÐÅÄÉÏ (äåí åßíáé óå ÷ñÞóç) éóïäýíáìå ìå `-1 FIELD -2 "
+#~ "FIELD'\n"
+#~ " -j1 ÐÅÄÉÏ (äåí åßíáé óå ÷ñÞóç) éóïäýíáìï ìå `-1 FIELD'\n"
+#~ " -j2 ÐÅÄÉÏ (äåí åßíáé óå ÷ñÞóç) éóïäýíáìï ìå `-2 FIELD'\n"
+#~ " -o ÌÏÑÖÇ ÷ñÞóç ôïõ ÌÏÑÖÇ óôçí êáôáóêåõÞ ôçò ãñáììÞò åîüäïõ\n"
+#~ " -t ×ÁÑÁÊÔ ÷ñÞóç ×ÁÑÁÊÔÞñá ãéá äéá÷ùñéóôÞ ðåäßïõ ãéá åßóïäï êáé "
+#~ "Ýîïäï\n"
+#~ " -v ÌÅÑÏÓ üðùò -a ÌÅÑÏÓ, áëëÜ ìå áðüêñõøç ôùí óõíåíùìÝíùí "
+#~ "ãñáììþí åîüäïõ\n"
+#~ " -1 ÐÅÄÉÏ óõíÝíùóç óå áõôü ôï ÐÅÄÉÏ ôïõ áñ÷åßïõ 1\n"
+#~ " -2 ÐÅÄÉÏ óõíÝíùóç óå áõôü ôï ðåäßï ôïõ áñ÷åßïõ 2\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "Åêôüò áí äßíåôáé -t ×ÁÑÁÊÔÞñáò, ôá ðñïðïñåõüìåíá êåíÜ äéá÷ùñßæïõí ôá "
+#~ "ðåäßá\n"
+#~ "êáé áãíïïýíôáé, äéáöïñåôéêÜ ôá ðåäßá ÷ùñßæïíôáé áðü ôï ×ÁÑÁÊÔÞñá.\n"
+#~ "ÏðïéïäÞðïôå ÐÅÄÉÏ åßíáé Ýíáò áñéèìüò ðåäßïõ ìåôñïýìåíïò áðü ôï 1.\n"
+#~ "Ç ÌÏÑÖÇ åßíáé ìéá Þ ðåñéóóüôåñåò äçëþóåéò äéá÷ùñéóìÝíåò ìå êüììá Þ êåíü,\n"
+#~ "ìå ôï êáèÝíá íá åßíáé `ÌÅÑÏÓ.ÐÅÄÉÏ' Þ `0'. Ç åî ïñéóìïý ÌÏÑÖÇ åìöáíßæåé\n"
+#~ "ôï ðåäßï óõíÝíùóçò, ôá õðüëïéðá ðåäßá áðü ôï ÁÑ×ÅÉÏ1, ôá õðüëïéðá ðåäßá\n"
+#~ "áðü ôï ÁÑ×ÅÉÏ2, üëá äéá÷ùñéóìÝíá áðü ôï ×ÁÑÁÊÔÞñá.\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION] [FILE]...\n"
+#~ " or: %s [OPTION] --check [FILE]\n"
+#~ "Print or check %s (%d-bit) checksums.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ "The following two options are useful only when verifying checksums:\n"
+#~ " --status don't output anything, status code shows "
+#~ "success\n"
+#~ " -w, --warn warn about improperly formated checksum lines\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "The sums are computed as described in %s. When checking, the input\n"
+#~ "should be a former output of this program. The default mode is to print\n"
+#~ "a line with checksum, a character indicating type (`*' for binary, ` ' "
+#~ "for\n"
+#~ "text), and name for each FILE.\n"
+#~ msgstr ""
+#~ "×ñÞóçe: %s [ÅÐÉËÏÃÇ] [ÁÑ×ÅÉÏ]...\n"
+#~ " Þ: %s [ÅÐÉËÏÃÇ] --check [ÁÑ×ÅÉÏ]\n"
+#~ "ÅìöÜíéóç Þ Ýëåã÷ïò áèñïéóìÜôùí åëÝã÷ïõ MD5.\n"
+#~ "×ùñßò ÁÑ×ÅÉÏ, Þ üôáí ôï áñ÷åßï åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ "
+#~ "åßóïäï.\n"
+#~ "\n"
+#~ " -b, --binary áíÜãíùóç áñ÷åßùí óå äõáäéêÞ êáôÜóôáóç (åî "
+#~ "ïñéóìïý ãéá DOS/Windows)\n"
+#~ " -c, --check Ýëåã÷ïò áèñïéóìÜôùí MD5 óå ó÷Ýóç ìå äïóìÝíç "
+#~ "ëßóôá\n"
+#~ " -t, --text áíÜãíùóç áñ÷åßùí óå êáôÜóôáóç êåéìÝíïõ (åî "
+#~ "ïñéóìïý)\n"
+#~ "\n"
+#~ "Ïé åðüìåíåò äýï åðéëïãÝò åßíáé ÷ñÞóéìåò ìüíï óôçí åðéâåâáßùóç áèñïéóìÜôùí "
+#~ "åëÝã÷ïõ:\n"
+#~ " --status íá ìçí åìöáíéóôåß ôßðïôá, ï êþäéêáò êáôÜóôáóçò "
+#~ "äçëþíåé ôçí åðéôõ÷ßá\n"
+#~ " -w, --warn ðñïåéäïðïßçóå ãéá áíôéêáíïíéêÜ ìïñöïðïéçìÝíåò "
+#~ "ãñáììÝò ìå áèñïßóìáôá åëÝã÷ïõ MD5\n"
+#~ "\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "Ôá áèñïßóìáôá õðïëïãßæïíôáé üðùò ðåñéãñÜöåôáé óôï RFC 1321. Óôïí Ýëåã÷ï, "
+#~ "ç åßóïäïò\n"
+#~ "èá ðñÝðåé íá åßíáé ìéá ðñïçãïýìåíç Ýîïäïò áõôïý ôïõ ðñïãñÜììáôïò. Ç åî "
+#~ "ïñéóìïý êáôÜóôáóç\n"
+#~ "åßíáé íá åêôõðþíåôáé ìéá ãñáììÞ ìå ôï Üèñïéóìá åëÝã÷ïõ, Ýíá ÷áñáêôÞñá "
+#~ "Ýíäåéîçò ôýðïõ\n"
+#~ "(`*' ãéá äõáäéêü, ` ' ãéá êåßìåíï), êáé ôï üíïìá ãéá êÜèå ÁÑ×ÅÉÏ.\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Write each FILE to standard output, with line numbers added.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+#~ " -d, --section-delimiter=CC use CC for separating logical pages\n"
+#~ " -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+#~ " -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+#~ " -i, --page-increment=NUMBER line number increment at each line\n"
+#~ " -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+#~ "one\n"
+#~ " -n, --number-format=FORMAT insert line numbers according to "
+#~ "FORMAT\n"
+#~ " -p, --no-renumber do not reset line numbers at logical "
+#~ "pages\n"
+#~ " -s, --number-separator=STRING add STRING after (possible) line "
+#~ "number\n"
+#~ " -v, --first-page=NUMBER first line number on each logical page\n"
+#~ " -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+#~ "two delimiter characters for separating logical pages, a missing\n"
+#~ "second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+#~ "\n"
+#~ " a number all lines\n"
+#~ " t number only nonempty lines\n"
+#~ " n number no lines\n"
+#~ " pREGEXP number only lines that contain a match for REGEXP\n"
+#~ "\n"
+#~ "FORMAT is one of:\n"
+#~ "\n"
+#~ " ln left justified, no leading zeros\n"
+#~ " rn right justified, no leading zeros\n"
+#~ " rz right justified, leading zeros\n"
+#~ "\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç êÜèå ÁÑ×ÅÉÏÕ óôçí êáíïíéêÞ Ýîïäï, ìå ðñüóèåóç áñéèìþí ãñáììÞò.\n"
+#~ "×ùñßò ÁÑ×ÅÉÏ, Þ üôáí ôï áñ÷åßï åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ "
+#~ "åßóïäï.\n"
+#~ "\n"
+#~ " -b, --body-numbering=ÓÔÕË ÷ñÞóç ÓÔÕË óôçí áñßèìçóç ôùí ãñáììþí "
+#~ "ôïõ\n"
+#~ " êõñßïõ ìÝñïõò\n"
+#~ " -d, --section-delimiter=CC ÷ñÞóç ôïõ CC óôï ÷ùñéóìü ëïãéêþí "
+#~ "óåëßäùí\n"
+#~ " -f, --footer-numbering=ÓÔÕË ÷ñÞóç ÓÔÕË óôçí áñßèìçóç ôùí ãñáììþí "
+#~ "ôïõ\n"
+#~ " õðïóÝëéäïõ\n"
+#~ " -h, --header-numbering=ÓÔÕË ÷ñÞóç ÓÔÕË óôçí áñßèìçóç ôùí ãñáììþí "
+#~ "ôïõ\n"
+#~ " åðéóÝëéäïõ\n"
+#~ " -i, --page-increment=ÁÑÉÈÌÏÓ áýîçóç áñéèìïý ãñáììÞò óå êÜèå ãñáììÞ\n"
+#~ " -l, --join-blank-lines=ÁÑÉÈÌÏÓ ïìÜäá áðü ÁÑÉÈÌÏÓ êåíþí ãñáììþí ðïõ\n"
+#~ " ìåôñïýíôáé ùò ìßá\n"
+#~ " -n, --number-format=ÌÏÑÖÇ åéóáãùãÞ áñßèìçóç ãñáììþí óýìöùíá ìå "
+#~ "ÌÏÑÖÇ\n"
+#~ " -p, --no-renumber íá ìç ìçäåíßæåôáé ç áñßèìçóç ãñáììþí "
+#~ "óôéò\n"
+#~ " ëïãéêÝò óåëßäåò\n"
+#~ " -s, --number-separator=ÁËÖÁÑÉÈÌ ðñüóèåóç ÁËÖÁÑÉÈÌçôéêïý ìåôÜ áðü "
+#~ "(ðéèáíü)\n"
+#~ " áñéèìü ãñáììÞò\n"
+#~ " -v, --first-page=ÁÑÉÈÌÏÓ ðñþôïò áñéèìüò ãñáììÞò óå êÜèå ëïãéêÞ "
+#~ "óåëßäá\n"
+#~ " -w, --number-width=ÁÑÉÈÌÏÓ ÷ñÞóç ÁÑÉÈÌÏÓ áðü óôÞëåò ãéá áñéèìïýò "
+#~ "ãñáììÞò\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé "
+#~ "Ýîïäïò\n"
+#~ "\n"
+#~ "Åî ïñéóìïý, åßíáé -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC åßíáé\n"
+#~ "äýï ÷áñáêôÞñåò äéá÷ùñéóìïý ãéá ôï ÷ùñéóìü ôùí ëïãéêþí óåëßäùí, ç áðïõóßá\n"
+#~ "äåýôåñïõ ÷áñáêôÞñá õðïäçëþíåé :. ÃñÜøôå \\\\ ãéá \\. Ôï ÓÔÕË åßíáé Ýíá "
+#~ "áðü:\n"
+#~ "\n"
+#~ " a áñéèìüò ãñáììþí\n"
+#~ " t áñßèìçóç ìüíï ìç êåíþí ãñáììþí\n"
+#~ " n íá ìçí áñéèìçèïýí ïé ãñáììÝò\n"
+#~ " pÊÁÍÅÊÖ íá áñéèìçèïýí ìüíï ãñáììÝò ðïõ ðåñéÝ÷ïõí ôáßñéáóìá ãéá ôçí\n"
+#~ " ÊÁÍïíéêÞ ¸ÊÖñáóç\n"
+#~ "\n"
+#~ "ÌÏÑÖÇ åßíáé Ýíá áðü:\n"
+#~ "\n"
+#~ " ln óôïß÷éóç óôá áñéóôåñÜ, ÷ùñßò ðñïðïñåõüìåíá ìçäåíéêÜ\n"
+#~ " rn óôïß÷éóç óôá äåîéÜ, ÷ùñßò ðñïðïñåõüìåíá ìçäåíéêÜ\n"
+#~ " rz óôïß÷éóç óôá äåîéÜ, ÷ùñßò ðñïðïñåõüìåíá ìçäåíéêÜ\n"
+#~ "\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Write an unambiguous representation, octal bytes by default,\n"
+#~ "of FILE to standard output. With more than one FILE argument,\n"
+#~ "concatenate them in the listed order to form the input.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -A, --address-radix=RADIX decide how file offsets are printed\n"
+#~ " -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+#~ " -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+#~ " -s, --strings[=BYTES] output strings of at least BYTES graphic "
+#~ "chars\n"
+#~ " -t, --format=TYPE select output format or formats\n"
+#~ " -v, --output-duplicates do not use * to mark line suppression\n"
+#~ " -w, --width[=BYTES] output BYTES bytes per output line\n"
+#~ " --traditional accept arguments in pre-POSIX form\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Pre-POSIX format specifications may be intermixed, they accumulate:\n"
+#~ " -a same as -t a, select named characters\n"
+#~ " -b same as -t oC, select octal bytes\n"
+#~ " -c same as -t c, select ASCII characters or backslash escapes\n"
+#~ " -d same as -t u2, select unsigned decimal shorts\n"
+#~ " -f same as -t fF, select floats\n"
+#~ " -h same as -t x2, select hexadecimal shorts\n"
+#~ " -i same as -t d2, select decimal shorts\n"
+#~ " -l same as -t d4, select decimal longs\n"
+#~ " -o same as -t o2, select octal shorts\n"
+#~ " -x same as -t x2, select hexadecimal shorts\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç ìéáò ÷ùñßò áóÜöåéåò áíáðáñÜóôáóç, ìå ïêôáäéêÜ bytes åî ïñéóìïý,\n"
+#~ "ôïõ ÁÑ×ÅÉÏ óôç êáíïíéêÞ Ýîïäï. ×ùñßò ÁÑ×ÅÉÏ, Þ üôáí ôï áñ÷åßï åßíáé ôï "
+#~ "-,\n"
+#~ "áíÜãíùóç áðü ôçí êáíïíéêÞ åßóïäï.\n"
+#~ "\n"
+#~ " -A, --address-radix=RADIX åðéëïãÞ ôïõ ðþò åêôõðþíïíôáé ïé èÝóåéò "
+#~ "áñ÷åßïõ\n"
+#~ " -j, --skip-bytes=BYTES ðñïóðÝñáóìá ôùí ðñþôùí BYTES bytes åéóüäïõ "
+#~ "áðü\n"
+#~ " êÜèå áñ÷åßï\n"
+#~ " -N, --read-bytes=BYTES ðåñéïñéóìüò ôçò åìöÜíéóçò óôá ðñþôá BYTES\n"
+#~ " byte åéóüäïõ ãéá êÜèå áñ÷åßï\n"
+#~ " -s, --strings[=BYTES] åìöÜíéóç áëöáñéèìçôéêþí ìå ôïõëÜ÷éóôïí "
+#~ "BYTES\n"
+#~ " ãñáöéêïýò ÷áñáêôÞñåò\n"
+#~ " -t, --format=ÅÉÄÏÓ åðéëïãÞ ìïñöÞò åîüäïõ Þ ìïñöÝò\n"
+#~ " -v, --output-duplicates íá ìç ÷ñçóéìïðïéçèåß * íá ãéá õðïäçëþóåé\n"
+#~ " áðüññéøç ãñáììÞò\n"
+#~ " -w, --width[=BYTES] åìöÜíéóç BYTES bytes ãéá êÜèå ãñáììÞ "
+#~ "åîüäïõ\n"
+#~ " --traditional áðïäï÷Þ ïñéóìÜôùí óå ðñï-POSIX ìïñöÞ\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "ïé ðñï-POSIX äçëþóåéò ìïñöþí ìðïñïýí íá áíáìéãíýïíôáé, äñïõí ðñïóèåôéêÜ:\n"
+#~ " -a ßäéï ìå -t a, åðéëïãÞ äïèÝíôùí ÷áñáêôÞñùí\n"
+#~ " -b ßäéï ìå -t oC, åðéëïãÞ ïêôáäéêþí bytes\n"
+#~ " -c ßäéï ìå -t c, åðéëïãÞ ÷áñáêôÞñùí ASCII Þ äéáöõãÝò ìå ðéóùêÜèåôï\n"
+#~ " -d ßäéï ìå -t u2, åðéëïãÞ ìç-ðñïóçìáóìÝíùí äåêáäéêþí ìéêñþí áêÝñáéùí\n"
+#~ " -f ßäéï ìå -t fF, åðéëïãÞ áñéèìþí êéíçôÞò õðïäéáóôïëÞò\n"
+#~ " -h ßäéï ìå -t x2, åðéëïãÞ äåêáåîáäéêþí ìéêñþí áêåñáßùí\n"
+#~ " -i ßäéï ìå -t d2, åðéëïãÞ äåêáäéêþí ìéêñþí áêåñáßùí\n"
+#~ " -l ßäéï ìå -t d4, åðéëïãÞ äåêáäéêþí áêåñáßùí\n"
+#~ " -o ßäéï ìå -t o2, åðéëïãÞ ïêôáäéêþí ìéêñþí áêåñáßùí\n"
+#~ " -x ßäéï ìå -t x2, åðéëïãÞ äåêáåîáäéêþí ìéêñþí áêåñáßùí\n"
+
+#
+#~ msgid ""
+#~ "\n"
+#~ "For older syntax (second call format), OFFSET means -j OFFSET. LABEL\n"
+#~ "is the pseudo-address at first byte printed, incremented when dump is\n"
+#~ "progressing. For OFFSET and LABEL, a 0x or 0X prefix indicates\n"
+#~ "hexadecimal, suffixes maybe . for octal and b multiply by 512.\n"
+#~ "\n"
+#~ "TYPE is made up of one or more of these specifications:\n"
+#~ "\n"
+#~ " a named character\n"
+#~ " c ASCII character or backslash escape\n"
+#~ " d[SIZE] signed decimal, SIZE bytes per integer\n"
+#~ " f[SIZE] floating point, SIZE bytes per integer\n"
+#~ " o[SIZE] octal, SIZE bytes per integer\n"
+#~ " u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+#~ " x[SIZE] hexadecimal, SIZE bytes per integer\n"
+#~ "\n"
+#~ "SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+#~ "sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+#~ "sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+#~ "for sizeof(double) or L for sizeof(long double).\n"
+#~ "\n"
+#~ "RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+#~ "BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+#~ "with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix "
+#~ "to\n"
+#~ "any type adds a display of printable characters to the end of each line\n"
+#~ "of output. -s without a number implies 3. -w without a number implies "
+#~ "32.\n"
+#~ "By default, od uses -A o -t d2 -w 16.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ãéá ôçí ðáëáéüôåñç óýíôáîç (äåýôåñç ìïñöÞ êëÞóçò), ç ÈÅÓÇ åßíáé -j ÈÅÓÇ.\n"
+#~ "Ôï ×ÁÑÁÊÔÇÑÉÓÔÉÊÏ åßíáé ç øåõäï-äéåýèõíóç óôï ðñþôï byte ðïõ ôõðþíåôáé,\n"
+#~ "áõîáíüìåíï êáèþò ç Ýîïäïò ðñïïäåýåé. Ãéá ÈÅÓÇ êáé ×ÁÑÁÊÔÇÑÉÓÔÉÊÏ, ôï\n"
+#~ "ðñüèåìá 0x Þ 0X äçëþíåé äåêáåîáäéêü, ïé êáôáëÞîåéò ßóùò. Ãéá ïêôáäéêÜ "
+#~ "êáé\n"
+#~ "b ðïëëáðëáóéÜóôå ìå 512.\n"
+#~ "\n"
+#~ "Ôï ÅÉÄÏÓ áðáñôßæåôáé áðü ìéá Þ ðåñéóóüôåñåò áðü ôéò ðáñáêÜôù äçëþóåéò:\n"
+#~ "\n"
+#~ " a äïèÝí ÷áñáêôÞñáò\n"
+#~ " c ÷áñáêôÞñáò ASCII Þ äéáöõãÞ ìå ðéóùêÜèåôï\n"
+#~ " d[ÌÅÃÅÈÏÓ] ðñïóçìáóìÝíïò äåêáäéêüò, ÌÅÃÅÈÏÓ bytes áíÜ áêÝñáéï\n"
+#~ " f[ÌÅÃÅÈÏÓ] êéíçôÞò õðïäéáóôïëÞò, ÌÅÃÅÈÏÓ bytes áíÜ áêÝñáéï\n"
+#~ " o[ÌÅÃÅÈÏÓ] ïêôáäéêüò, ÌÅÃÅÈÏÓ bytes áíÜ áêÝñáéï\n"
+#~ " u[ÌÅÃÅÈÏÓ] ÷ùñßò ðñüóçìï äåêáäéêüò, ÌÅÃÅÈÏÓ bytes áíÜ áêÝñáéï\n"
+#~ " x[ÌÅÃÅÈÏÓ] äåêáåîáäéêü, ÌÅÃÅÈÏÓ bytes áíÜ áêÝñáéï\n"
+#~ "\n"
+#~ "Ôï ÌÅÃÅÈÏÓ åßíáé Ýíáò áñéèìüò. Ãéá ôï ÅÉÄÏÓ, ôï ÌÅÃÅÈÏÓ ìðïñåß íá åßíáé "
+#~ "C\n"
+#~ "ãéá sizeof(char), S ãéá sizeof(short), I ãéá sizeof(int) Þ L ãéá\n"
+#~ "sizeof(long). Áí ôï ÅÉÄÏÓ åßíáé f, ôï ÌÅÃÅÈÏÓ ìðïñåß åðßóçò íá åßíáé F\n"
+#~ "ãéá sizeof(float), D ãéá sizeof(double) Þ L ãéá sizeof(long double).\n"
+#~ "\n"
+#~ "Ç ÂÁÓÇ åßíáé d ãéá äåêáäéêü, o ãéá ïêôáäéêü, x ãéá äåêáåîáäéêü Þ n ãéá "
+#~ "ôßðïôá.\n"
+#~ "Ôï BYTES åßíáé äåêáåîáäéêü áí Ý÷åé ðñüèåìá 0x Þ 0X, ðïëëáðëáóéÜæåôáé ìå "
+#~ "512\n"
+#~ "áí Ý÷åé êáôÜëçîç b, ìå 1024 áí Ý÷åé k êáé ìå 1048576 áí Ý÷åé m. "
+#~ "ÐñïóèÝôïíôáò\n"
+#~ "ôçí êáôÜëçîç z óå êÜèå åßäïò, ðñïóèÝôåé ôçí åìöÜíéóç ôùí åêôõðþóéìùí\n"
+#~ "÷áñáêôÞñùí óôï ôÝëïò êÜèå ãñáììÞò ôçò åîüäïõ. Ôï -s ÷ùñßò áñéèìü "
+#~ "õðïäçëþíåé\n"
+#~ "3. Ôï -w ÷ùñßò áñéèìü õðïäçëþíåé 32.\n"
+#~ "Åî ïñéóìïý, ç od ÷ñçóéìïðïéåß -A o -t d2 -w 16.\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Paginate or columnate FILE(s) for printing.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+#~ " begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+#~ " -COLUMN, --columns=COLUMN\n"
+#~ " produce COLUMN-column output and print columns down,\n"
+#~ " unless -a is used. Balance number of lines in the\n"
+#~ " columns on each page.\n"
+#~ " -a, --across print columns across rather than down, used together\n"
+#~ " with -COLUMN\n"
+#~ " -c, --show-control-chars\n"
+#~ " use hat notation (^G) and octal backslash notation\n"
+#~ " -d, --double-space\n"
+#~ " double space the output\n"
+#~ " -D, --date-format=FORMAT\n"
+#~ " use FORMAT for the header date\n"
+#~ " -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+#~ " expand input CHARs (TABs) to tab WIDTH (8)\n"
+#~ " -F, -f, --form-feed\n"
+#~ " use form feeds instead of newlines to separate pages\n"
+#~ " (by a 3-line page header with -F or a 5-line header\n"
+#~ " and trailer without -F)\n"
+#~ msgstr ""
+#~ "Óåëéäïðïßçóç Þ óôçëïðïßçóç ÁÑ×ÅÉÏÕ(ÙÍ) ãéá åêôýðùóç.\n"
+#~ "\n"
+#~ " +ÐÑÙÔÇ_ÓÅËÉÄÁ[:ÔÅËÅÕÔÁÉÁ_ÓÅËÉÄÁ], --pages=ÐÑÙÔÇ_ÓÅËÉÄÁ[:"
+#~ "ÔÅËÅÕÔÁÉÁ_ÓÅËÉÄÁ]\n"
+#~ " Ýíáñîç [äéáêïðÞ] åêôýðùóçò ìå óåëßäá\n"
+#~ " ÐÑÙÔÇ_[ÔÅËÅÕÔÁÉÁ_]ÓÅËÉÄÁ\n"
+#~ " -ÓÔÇËÇ, --columns=ÓÔÇËÇ\n"
+#~ " ðáñáãùãÞ åîüäïõ ìå ÓÔÇËÇ-óôÞëåò êáé åêôýðùóç óôçëþí\n"
+#~ " ðñïò ôá êÜôù, åêôüò áí ÷ñçóéìïðïéåßôáé ôï -a.\n"
+#~ " Éóïññüðçóç ôïõ áñéèìïý ãñáììþí óôéò óôÞëåò êÜèå\n"
+#~ " óåëßäáò.\n"
+#~ " -a, --across åìöÜíéóç óôçëþí êáôÜ ìÞêïò áíôß ðñïò ôá êÜôù, óå "
+#~ "÷ñÞóç\n"
+#~ " ìå -ÓÔÇËÇ\n"
+#~ " -c, --show-control-chars\n"
+#~ " ÷ñÞóç áíáðáñÜóôáóçò ìå êáðÝëï (^G) êáé ïêôáäéêÞò\n"
+#~ " áíáðáñÜóôáóçò ìå ðéóùêÜèåôï\n"
+#~ " -d, --double-space\n"
+#~ " äéðëÜ äéáóôÞìáôá óôçí Ýîïäï\n"
+#~ " -e[×ÁÑÁÊÔ[ÐËÁÔÏÓ]], --expand-tabs[=×ÁÑÁÊÔ[ÐËÁÔÏÓ]]\n"
+#~ " áíÜðôõîç ×ÁÑÁÊÔÞñùí åéóüäïõ (TABs) óå óôçëïèÝôç ìå\n"
+#~ " ðëÜôïò ÐËÁÔÏÓ(8)\n"
+#~ " -F, -f, --form-feed\n"
+#~ " ÷ñÞóç ÷áñáêôÞñùí áëëáãÞò óåëßäáò áíôß ÷áñáêôÞñùí "
+#~ "íÝáò\n"
+#~ " ãñáììÞò ãéá ÷ùñéóìü óåëßäùí\n"
+#~ " (-F ãéá åðéóÝëéäï 3 ãñáììþí Þ åðéóÝëéäï 5 ãñáììþí\n"
+#~ " êáé áêüëïõèï ÷ùñßò -F)\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ " -h HEADER, --header=HEADER\n"
+#~ " use a centered HEADER instead of filename in page "
+#~ "header,\n"
+#~ " -h \"\" prints a blank line, don't use -h\"\"\n"
+#~ " -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+#~ " replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+#~ " -J, --join-lines merge full lines, turns off -W line truncation, no "
+#~ "column\n"
+#~ " alignment, -S[STRING] sets separators\n"
+#~ " -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+#~ " set the page length to PAGE_LENGTH (66) lines\n"
+#~ " (default number of lines of text 56, and with -F 63)\n"
+#~ " -m, --merge print all files in parallel, one in each column,\n"
+#~ " truncate lines, but join lines of full length with -"
+#~ "J\n"
+#~ " -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+#~ " number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+#~ " default counting starts with 1st line of input file\n"
+#~ " -N NUMBER, --first-line-number=NUMBER\n"
+#~ " start counting with NUMBER at 1st line of first\n"
+#~ " page printed (see +FIRST_PAGE)\n"
+#~ " -o MARGIN, --indent=MARGIN\n"
+#~ " offset each line with MARGIN (zero) spaces, do not\n"
+#~ " affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+#~ " -r, --no-file-warnings\n"
+#~ " omit warning when a file cannot be opened\n"
+#~ msgstr ""
+#~ " -h ÅÐÉÓÅËÉÄÏ, --header=ÅÐÉÓÅËÉÄÏ\n"
+#~ " ÷ñÞóç êåíôñáñéóìÝíïõ ÅÐÉÓÅËÉÄÏÕ áíôß ôïõ ïíüìáôïò\n"
+#~ " áñ÷åßïõ óôï åðéóÝëéäï,\n"
+#~ " ìå ìáêñÜ åðéóÝëéäá ìðïñåß íá ãßíåé áðïêïðÞ áðü ôá "
+#~ "áñéóôåñÜ,\n"
+#~ " -h \"\" ôõðþíåé ìéá êåíÞ ãñáììÞ, ìçí êÜíåôå ÷ñÞóç ôïõ "
+#~ "-h\"\"\n"
+#~ " -i[×ÁÑÁÊÔ[ÐËÁÔÏÓ]], --output-tabs[=×ÁÑÁÊÔ[ÐËÁÔÏÓ]]\n"
+#~ " áíôéêáôÜóôáóç äéáóôçìÜôùí ìå ×ÁÑÁÊÔÞñá(TABs) óå "
+#~ "ìÞêïò\n"
+#~ " óôçëïèÝôç ÐËÁÔÏÓ(8)\n"
+#~ " -J, --join-lines óõíÝíùóç ãåìÜôùí ãñáììþí, áðåíåñãïðïéåß ìçäåíéóìü\n"
+#~ " ãñáììÞò ôïõ -W, ÷ùñßò\n"
+#~ " óôïß÷éóç óôÞëçò, -S[ÁËÖÁÑÉÈÌ] èÝôåé äéá÷ùñéóôÝò\n"
+#~ " -l ÌÇÊÏÓ_ÓÅËÉÄÁÓ, --length=ÌÇÊÏÓ_ÓÅËÉÄÁÓ\n"
+#~ " èÝôåé ôï ìÞêïò óåëßäáò óå ÌÇÊÏÓ_ÓÅËÉÄÁÓ (66) ãñáììÝò\n"
+#~ " (åî ïñéóìïý áñéèìüò ãñáììþí êåéìÝíïõ åßíáé 56, êáé "
+#~ "ìå\n"
+#~ " -F 63)\n"
+#~ " -m, --merge åêôýðùóç üëùí ôùí áñ÷åßùí ðáñÜëëçëá, Ýíá óå êÜèå "
+#~ "óôÞëç,\n"
+#~ " ìçäåíéóìüò ãñáììþí Üëëá óõíÝíùóç ãñáììþí ðëÞñïõò "
+#~ "ìÞêïõò\n"
+#~ " ìå -J\n"
+#~ " -n[ÄÉÁ×[ØÇÖÉÁ]], --number-lines[=ÄÉÁ×[ØÇÖÉÁ]]\n"
+#~ " áñßèìçóç ãñáììþí, ÷ñÞóç ØÇÖÉÁ (5) øçößá, ìåôÜ ÄÉÁ× "
+#~ "(TAB),\n"
+#~ " åî ïñéóìïý ìÝôñçóç îåêéíÜ ìå ôç ðñþôç ãñáììÞ ôïõ\n"
+#~ " áñ÷åßïõ åéóüäïõ\n"
+#~ " -N ÁÑÉÈÌÏÓ, --first-line-number=ÁÑÉÈÌÏÓ\n"
+#~ " Ýíáñîç ìÝôñçóçò ìå ÁÑÉÈÌÏÓ óôç ðñþôç ãñáììÞ ôçò "
+#~ "ðñþôçò\n"
+#~ " óåëßäáò\n"
+#~ " ðïõ åêôõðþíåôáé(äåßôå +ÐÑÙÔÇ_ÓÅËÉÄÁ)\n"
+#~ " -o ÐÅÑÉÈÙÑÉÏ, --indent=ÐÅÑÉÈÙÑÉÏ\n"
+#~ " ðáñÝìâáëå êÜèå ãñáììÞ ìå ÐÅÑÉÈÙÑÉÏ (ìçäÝí) "
+#~ "äéáóôÞìáôá,\n"
+#~ " íá ìçí åðçñåáóôïýí ôá -w Þ -W, ôï ÐÅÑÉÈÙÑÉÏ èá "
+#~ "ðñïóôåèåß\n"
+#~ " óôï ÐËÁÔÏÓ_ÓÅËÉÄÁÓ\n"
+#~ " -r, --no-file-warnings\n"
+#~ " ðáñÜëçøç ðñïåéäïðïßçóçò üôáí ôï áñ÷åßï äåí ìðïñåß íá\n"
+#~ " áíïé÷ôåß\n"
+
+#
+#~ msgid ""
+#~ " -s[CHAR],--separator[=CHAR]\n"
+#~ " separate columns by a single character, default for "
+#~ "CHAR\n"
+#~ " is the <TAB> character without -w and 'no char' with -"
+#~ "w\n"
+#~ " -s[CHAR] turns off line truncation of all 3 column\n"
+#~ " options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+#~ " -S[STRING], --sep-string[=STRING]\n"
+#~ " separate columns by an optional STRING, don't use\n"
+#~ " -S \"STRING\", -S only: No separator used (same as -S"
+#~ "\"\"),\n"
+#~ " without -S: Default separator <TAB> with -J and "
+#~ "<space>\n"
+#~ " otherwise (same as -S\" \"), no effect on column "
+#~ "options\n"
+#~ " -t, --omit-header omit page headers and trailers\n"
+#~ " -T, --omit-pagination\n"
+#~ " omit page headers and trailers, eliminate any "
+#~ "pagination\n"
+#~ " by form feeds set in input files\n"
+#~ " -v, --show-nonprinting\n"
+#~ " use octal backslash notation\n"
+#~ " -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+#~ " set page width to PAGE_WIDTH (72) characters for\n"
+#~ " multiple text-column output only, -s[char] turns off "
+#~ "(72)\n"
+#~ " -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+#~ " set page width to PAGE_WIDTH (72) characters always,\n"
+#~ " truncate lines, except -J option is set, no "
+#~ "interference\n"
+#~ " with -S or -s\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+#~ "FILE is -, read standard input.\n"
+#~ msgstr ""
+#~ " -s[×ÁÑÁÊÔ],--separator[=×ÁÑÁÊÔ]\n"
+#~ " äéá÷ùñéóìüò óôçëþí ìå Ýíá ÷áñáêôÞñá, åî ïñéóìïý ôéìÞ\n"
+#~ " ãéá ×ÁÑÁÊÔ\n"
+#~ " åßíáé ôï <TAB> ÷ùñßò -w êáé 'ü÷é ÷áñáêô' ìå -w\n"
+#~ " -s[×ÁÑÁÊÔ] áðåíåñãïðïéåß ôï ìçäåíéóìü ãñáììÞò áðü "
+#~ "üëåò\n"
+#~ " (3) ôçò åðéëïãÝò\n"
+#~ " óôÞëçò (-ÓÔÇËÇ|-a -ÓÔÇËÇ|-m) åêôüò áí Ý÷åé ôåèåß ôï -"
+#~ "w\n"
+#~ " -S[ÁËÖÁÑÉÈÌ], --sep-string[=ÁËÖÁÑÉÈÌ]\n"
+#~ " äéá÷ùñéóìüò óôçëþí áðü Ýíá ðñïáéñåôéêü ÁËÖÁÑÉÈÌ, íá "
+#~ "ìçí\n"
+#~ " êÜíåôå ÷ñÞóç ôïõ -S \"ÁËÖÁÑÉÈÌ\",\n"
+#~ " ìüíï -S : Äåí ÷ñçóéìïðïéåßôáé äéá÷ùñéóôÞò (ßäéï ìå\n"
+#~ " -S\"\"),\n"
+#~ " ÷ùñßò -S: Åî ïñéóìïý äéá÷ùñéóôÞò <TAB> ìå -J êáé\n"
+#~ " <äéÜóôçìá> äéáöïñåôéêÜ (ßäéï ìå -S\" \"), ÷ùñßò\n"
+#~ " åðßäñáóç óå åðéëïãÝò ãéá óôÞëåò\n"
+#~ " -t, --omit-header ðáñÜëçøç åðéóÝëéäùí êáé áêïëïýèùí\n"
+#~ " -T, --omit-pagination\n"
+#~ " ðáñÜëçøç åðéóÝëéäùí êáé áêïëïýèùí, åëá÷éóôïðïßçóç "
+#~ "êÜèå\n"
+#~ " óåëéäïðïßçóçò áðü `form feeds' ðïõ Ý÷ïõí ôõ÷üí "
+#~ "ôåèåß\n"
+#~ " óôá áñ÷åßá åéóüäïõ\n"
+#~ " -v, --show-nonprinting\n"
+#~ " ÷ñÞóç ïêôáäéêÞò êùäéêïãñáöÞò ìå ðéóùêÜèåôï\n"
+#~ " -w ÐËÁÔÏÓ_ÓÅËÉÄÁÓ, --width=ÐËÁÔÏÓ_ÓÅËÉÄÁÓ\n"
+#~ " ïñéóìüò ðëÜôïõò óåëßäáò óå ÐËÁÔÏÓ_ÓÅËÉÄÁÓ (72)\n"
+#~ " ÷áñáêôÞñåò ãéá\n"
+#~ " ðïëëáðëÞ Ýîïäï óôçëþí ìå êåßìåíï ìüíï, -s[÷áñáêô]\n"
+#~ " áðåíåñãïðïéåß (72)\n"
+#~ " -W ÐËÁÔÏÓ_ÓÅËÉÄÁÓ, --page-width=ÐËÁÔÏÓ_ÓÅËÉÄÁÓ\n"
+#~ " ïñéóìüò ðëÜôïõò óåëßäáò óå ÐËÁÔÏÓ_ÓÅËÉÄÁÓ (72)\n"
+#~ " ÷áñáêôÞñåò ðÜíôá,\n"
+#~ " ìçäåíéóìüò ãñáììþí, åêôüò áí Ý÷åé ôåèåß -J, êáìßá\n"
+#~ " ðáñåìâïëÞ\n"
+#~ " ìå -S Þ -s\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "Ôï -T åííïåßôå áðü ôï -l nn üðïõ nn <= 10 Þ <= 3 ìå -F. ×ùñßò ÁÑ×ÅÉÏ, Þ\n"
+#~ "üôáí ôï áñ÷åßï åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ åßóïäï.\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Output a permuted index, including context, of the words in the input "
+#~ "files.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -A, --auto-reference output automatically generated "
+#~ "references\n"
+#~ " -C, --copyright display Copyright and copying "
+#~ "conditions\n"
+#~ " -G, --traditional behave more like System V `ptx'\n"
+#~ " -F, --flag-truncation=STRING use STRING for flagging line "
+#~ "truncations\n"
+#~ " -M, --macro-name=STRING macro name to use instead of `xx'\n"
+#~ " -O, --format=roff generate output as roff directives\n"
+#~ " -R, --right-side-refs put references at right, not counted in -"
+#~ "w\n"
+#~ " -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+#~ " -T, --format=tex generate output as TeX directives\n"
+#~ " -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+#~ " -b, --break-file=FILE word break characters in this FILE\n"
+#~ " -f, --ignore-case fold lower case to upper case for "
+#~ "sorting\n"
+#~ " -g, --gap-size=NUMBER gap size in columns between output "
+#~ "fields\n"
+#~ " -i, --ignore-file=FILE read ignore word list from FILE\n"
+#~ " -o, --only-file=FILE read only word list from this FILE\n"
+#~ " -r, --references first field of each line is a reference\n"
+#~ " -t, --typeset-mode - not implemented -\n"
+#~ " -w, --width=NUMBER output width in columns, reference "
+#~ "excluded\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+#~ msgstr ""
+#~ "Õðï÷ñåùôéêÜ ïñßóìáôá ãéá ìáêñÝò åðéëïãÝò åßíáé õðï÷ñåùôéêÜ ãéá óýíôïìåò\n"
+#~ "åðéëïãÝò åðßóçò.\n"
+#~ "\n"
+#~ " -A, --auto-reference åìöÜíéóç áõôüìáôá ðáñáãüìåíåò áíáöïñÝò\n"
+#~ " -C, --copyright åìöÜíéóç Copyright êáé êáíüíåò "
+#~ "áíôéãñáöÞò\n"
+#~ " -G, --traditional óõìðåñéöïñÜ ðåñéóóüôåñï üìïéá ìå ôïõ "
+#~ "System\n"
+#~ " V ôçí `ptx'\n"
+#~ " -F, --flag-truncation=ÁËÖÁÑÉÈÌ ÷ñÞóç ÁËÖÁÑÉÈÌ ãéá õðïäÞëùóç "
+#~ "ìçäåíéóìïý\n"
+#~ " ãñáììþí\n"
+#~ " -M, --macro-name=ÁËÖÁÑÉÈÌ üíïìá ìáêñïåíôïëÞò ðñïò ÷ñÞóç áíôß ôïõ "
+#~ "`xx'\n"
+#~ " -O, --format=roff äçìéïõñãßá åîüäïõ ùò åíôïëÝò roff\n"
+#~ " -R, --right-side-refs ôïðïèÝôçóç áíáöïñþí óôá äåîéÜ, ÷ùñßò íá\n"
+#~ " ìåôñþíôáé óôï -w\n"
+#~ " -S, --sentence-regexp=ÊÁÍÅÊÖ ãéá ôï ôÝëïò ãñáììþí Þ ôï ôÝëïò ôùí "
+#~ "ðñïôÜóåùí\n"
+#~ " -T, --format=tex äçìéïõñãßá åîüäïõ ùò åíôïëÝò TeX\n"
+#~ " -W, --word-regexp=ÊÁÍÅÊÖ ÷ñÞóç ÊÁÍïíéêÞò ÅÊÖñáóçò óôï ôáßñéáóìá "
+#~ "êÜèå\n"
+#~ " ëÝîçò-êëåéäß\n"
+#~ " -b, --break-file=ÁÑ×ÅÉÏ ç ëÝîç óðÜåé ôïõò ÷áñáêôÞñåò óå áõôü ôï\n"
+#~ " ÁÑ×ÅÉÏ\n"
+#~ " -f, --ignore-case áíáäßðëùóç ðåæþí óå êåöáëáßá ãéá ôçí\n"
+#~ " ôáîéíüìçóç\n"
+#~ " -g, --gap-size=ÁÑÉÈÌÏÓ ìÝãåèïò äéÜêåíïõ óôéò óôÞëåò ìåôáîý "
+#~ "ðåäßùí\n"
+#~ " åîüäïõ\n"
+#~ " -i, --ignore-file=ÁÑ×ÅÉÏ áíÜãíùóç ëßóôá ëÝîåùí ðñïò áãíüçóç áðü "
+#~ "ÁÑ×ÅÉÏ\n"
+#~ " -o, --only-file=ÁÑ×ÅÉÏ áíÜãíùóç ìüíï ëßóôá ëÝîåùí áðü áõôü ôï "
+#~ "ÁÑ×ÅÉÏ\n"
+#~ " -r, --references ðñþôï ðåäßá êÜèå ãñáììÞò åßíáé ìéá "
+#~ "áíáöïñÜ\n"
+#~ " -t, --typeset-mode - äåí Ý÷åé õëïðïéçèåß -\n"
+#~ " -w, --width=ÁÑÉÈÌÏÓ ðëÜôïò åîüäïõ óå óôÞëåò, ìå åîáßñåóç "
+#~ "ôùí\n"
+#~ " áíáöïñþí\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "×ùñßò ÁÑ×ÅÉÏ, Þ üôáí ôï áñ÷åßï åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ "
+#~ "åßóïäï.\n"
+#~ "Åßíáé `-F /' åî ïñéóìïý.\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Other options:\n"
+#~ "\n"
+#~ " -c, --check check whether input is sorted; do not sort\n"
+#~ " -k, --key=POS1[,POS2] start a key at POS1, end it at POS 2 (origin "
+#~ "1)\n"
+#~ " -m, --merge merge already sorted files; do not sort\n"
+#~ " -o, --output=FILE write result to FILE instead of standard "
+#~ "output\n"
+#~ " -s, --stable stabilize sort by disabling last-resort "
+#~ "comparison\n"
+#~ " -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+#~ " -t, --field-separator=SEP use SEP instead of non- to whitespace "
+#~ "transition\n"
+#~ " -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+#~ "s\n"
+#~ " multiple options specify multiple "
+#~ "directories\n"
+#~ " -u, --unique with -c: check for strict ordering\n"
+#~ " otherwise: output only the first of an "
+#~ "equal run\n"
+#~ " -z, --zero-terminated end lines with 0 byte, not newline\n"
+#~ " +POS1 [-POS2] start a key at POS1, end it before POS2 "
+#~ "(origin 0)\n"
+#~ " Warning: this option is obsolescent\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç ôáîéíïìçìÝíçò óõíÝíùóçò üëùí ôùí ÁÑ×ÅÉÏ(ÙÍ) óôçí êáíïíéêÞ "
+#~ "Ýîïäï.\n"
+#~ "\n"
+#~ " +ÈÅÓÇ1 [-ÈÅÓÇ2] áñ÷Þ êëåéäéïý óôç ÈÅÓÇ1, ôåñìáôéóìüò *ðñéí* ôç "
+#~ "ÈÅÓÇ2\n"
+#~ " (åêôüò ÷ñÞóçò)\n"
+#~ " áñéèìïß ðåäßùí êáé èÝóåéò ÷áñáêôÞñùí áñéèìïýíôáé\n"
+#~ " áñ÷ßæïíôáò áðü ôï ìçäÝí (óå áíôßèåóç ìå ôçí "
+#~ "åðéëïãÞ -k)\n"
+#~ " -b áãíüçóç ðñïðïñåõüìåíùí êåíþí óå ðåäßá ôáîéíüìçóçò Þ "
+#~ "êëåéäéÜ\n"
+#~ " -c Ýëåã÷ïò áí ôá äïèÝíôá áñ÷åßá åßíáé Þäç ôáîéíïìçìÝíá, "
+#~ "íá\n"
+#~ " ìçí ôáîéíïìçèïýí\n"
+#~ " -d íá èåùñçèïýí ìüíï ïé ÷áñáêôÞñåò [a-zA-Z0-9 ] óôá "
+#~ "êëåéäéÜ\n"
+#~ " -f áíáäßðëùóç ðåæþí ÷áñáêôÞñùí óå êåöáëáßá óôá êëåéäéÜ\n"
+#~ " -g óýãêñéóç óýìöùíá ìå ôç ãåíéêÞ áñéèìçôéêÞ ôéìÞ, èåþñçóå "
+#~ "-b\n"
+#~ " -i èåþñçóå ìüíï ôïõò ÷áñáêôÞñåò [\\040-\\0176] óôá "
+#~ "êëåéäéÜ\n"
+#~ " -k ÈÅÓÇ1[,ÈÅÓÇ2] Ýíáñîç êëåéäéïý óôç èÝóç ÈÅÓÇ1, ôåñìáôéóôüò *óôç* "
+#~ "ÈÅÓÇ2\n"
+#~ " áñéèìïß ðåäßùí êáé èÝóåéò ÷áñáêôÞñùí áñéèìïýíôáé\n"
+#~ " áñ÷ßæïíôáò áðü ôï Ýíá (óå áíôßèåóç ìå ôç âáóéóìÝíç "
+#~ "óôï\n"
+#~ " ìçäÝí ìïñöÞ +ÈÅÓÇ)\n"
+#~ " -m óõíÝíùóç ìüíï ôáîéíïìçìÝíùí áñ÷åßùí, íá ìç ãßíåé "
+#~ "ôáîéíüìçóç\n"
+#~ " -M óýãêñéóç (Üãíùóôï) < `ÉÁÍ' < ... < `ÄÅÊ', èåþñçóå -b\n"
+#~ " -n óýãêñéóç óýìöùíá ìå ôç áëöáñéèìçôéêÞ áñéèìçôéêÞ ôéìÞ, "
+#~ "èåþñçóå -b\n"
+#~ " -o ARXEIO åããñáöÞ áðïôåëÝóìáôïò óôï ÁÑ×ÅÉÏ áíôß óôçí êáíïíéêÞ "
+#~ "Ýîïäï\n"
+#~ " -r áíôéóôñïöÞ ôùí áðïôåëåóìÜôùí ôùí óõãêñßóåùí\n"
+#~ " -s óôáèåñïðïßçóç ôçò ôáîéíüìçóçò ìå áðåíåñãïðïßçóç ôç\n"
+#~ " óýãêñéóçò ôåëåõôáßáò åëðßäáò\n"
+#~ " -t ÄÉÁ× ÷ñÞóç ÄÉÁ×ùñéóôÞ áíôß ôçò ìåôÜóôáóçò áðü ìç-êåíü óå\n"
+#~ " ëåõêü ÷áñáêôÞñá\n"
+#~ " -T ÊÁÔÁËÏÃÏÓ ÷ñÞóç ÊÁÔÁËÏÃÏÓ ãéá ðñïóùñéíÜ áñ÷åßá, ü÷é ôï $TMPDIR Þ "
+#~ "%s\n"
+#~ " -u ìå -c, Ýëåã÷ïò ãéá áõóôçñÞ ôïðïèÝôçóç óå óåéñÜ\n"
+#~ " ìå -m, ìüíï Ýîïäïò ôïõ ðñþôïõ áðü ìéá ßóç áêïëïõèßá\n"
+#~ " -z ôåñìáôéóìüò ãñáììþí ìå 0 byte, ü÷é ìå íÝá ãñáììÞ, ãéá\n"
+#~ " ôç find -print0\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Print the last %d lines of each FILE to standard output.\n"
+#~ "With more than one FILE, precede each with a header giving the file "
+#~ "name.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " --retry keep trying to open a file even if it is\n"
+#~ " inaccessible when tail starts or if it "
+#~ "becomes\n"
+#~ " inaccessible later -- useful only with -f\n"
+#~ " -c, --bytes=N output the last N bytes\n"
+#~ " -f, --follow[={name|descriptor}]\n"
+#~ " output appended data as the file grows;\n"
+#~ " -f, --follow, and --follow=descriptor are\n"
+#~ " equivalent\n"
+#~ " -F same as --follow=name --retry\n"
+#~ " -n, --lines=N output the last N lines, instead of the last %"
+#~ "d\n"
+#~ " --max-unchanged-stats=N\n"
+#~ " with --follow=name, reopen a FILE which has "
+#~ "not\n"
+#~ " changed size after N (default %d) iterations\n"
+#~ " to see if it has been unlinked or renamed\n"
+#~ " (this is the usual case of rotated log files)\n"
+#~ " --pid=PID with -f, terminate after process ID, PID dies\n"
+#~ " -q, --quiet, --silent never output headers giving file names\n"
+#~ " -s, --sleep-interval=S with -f, each iteration lasts approximately S\n"
+#~ " (default 1) seconds\n"
+#~ " -v, --verbose always output headers giving file names\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Åêôýðùóç ôùí ôåëåõôáßùí %d ãñáììþí êÜèå ÁÑ×ÅÉÏÕ óôçí êáíïíéêÞ Ýîïäï.\n"
+#~ "Ìå ðåñéóóüôåñï áðü Ýíá ÁÑ×ÅÉÁ, íá ôõðùèåß ðñþôá êåöáëßäá ìå ôï üíïìá ôïõ\n"
+#~ "áñ÷åßïõ.\n"
+#~ "×ùñßò ÁÑ×ÅÉÏ, Þ üôáí ôï ÁÑ×ÅÉÏ åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ "
+#~ "åßóïäï.\n"
+#~ "\n"
+#~ " --retry óõíÝ÷éóç ðñïóðÜèåéáò áíïßãìáôïò áñ÷åßïõ áêüìá "
+#~ "êáé\n"
+#~ " áí áõôü äåí åßíáé ðñïóðåëÜóéìï üôáí ç tail \n"
+#~ " åêêéíåßôáé Þ áí ãßíåôáé ìç-ðñïóðåëÜóéìï "
+#~ "ìåôÜ\n"
+#~ " ÷ñÞóéìï ìüíï ìå ôçí ðáñÜìåôñï -f\n"
+#~ " -c, --bytes=N åìöÜíéóç ôùí ôåëåõôáßùí N bytes\n"
+#~ " -f, --follow[={name|descriptor}] åìöÜíéóç ðñïóôéèÝìåíùí äåäïìÝíùí "
+#~ "üðùò\n"
+#~ " áõîÜíåôáé ôï áñ÷åßï· ôá -f, --follow êáé\n"
+#~ " --follow=descriptor åßíáé éóïäýíáìá\n"
+#~ " -n, --lines=N åìöÜíéóç ôùí ôåëåõôáßùí Í ãñáììþí, áíôß ôùí\n"
+#~ " ôåëåõôáßùí %d\n"
+#~ " --max-unchanged-stats=N äåßôå ôçí ôåêìçñßùóç ôïõ texinfo\n"
+#~ " (åî ïñéóìïý åßíáé %d)\n"
+#~ " --max-consecutive-size-changes=N äåßôå ôçí ôåêìçñßùóç ôïõ texinfo\n"
+#~ " (åî ïñéóìïý åßíáé %d)\n"
+#~ " --pid=PID ìå -f, ôåñìáôéóìüò üôáí ç äéåñãáóßá ìå\n"
+#~ " ôáõôüôçôá åñãáóßáò PID ðåèÜíåé\n"
+#~ " -q, --quiet, --silent íá ìçí åêôõðþíïíôáé êåöáëßäåò ìå ôá ïíüìáôá "
+#~ "ôùí\n"
+#~ " áñ÷åßùí\n"
+#~ " -s, --sleep-interval=S ìå -f, ðáýóç ãéá S äåõôåñüëåðôá ìåôáîý "
+#~ "åðáíáëÞøåùí\n"
+#~ " -v, --verbose ðÜíôá íá ôõðþíïíôáé êåöáëßäåò ìå ïíüìáôá "
+#~ "áñ÷åßùí\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "Áí ï ðñþôïò ÷áñáêôÞñáò ôïõ Í (áñéèìüò byte Þ ãñáììþí) åßíáé `+',\n"
+#~ "ôýðùóå áñ÷ßæïíôáò ìå ôï Í-ïóôü áíôéêåßìåíï áðü ôçí áñ÷Þ ôïõ êÜèå "
+#~ "áñ÷åßïõ,\n"
+#~ "äéáöïñåôéêÜ, ôýðùóå ôá ôåëåõôáßá Í áíôéêåßìåíá ôïõ áñ÷åßïõ. Ôï Í ìðïñåß\n"
+#~ "íá Ý÷åé ðïëëáðëáóéáóôéêü ðñüèåìá:\n"
+#~ "b ãéá 512, k ãéá 1024, m ãéá 1048576 (1 Meg). Ìéá ðñþôç ÅÐÉËÏÃÇ ìå -"
+#~ "ÔÉÌÇ\n"
+#~ "Þ +ÔÉÌÇ èåùñåßôáé ãéá -n ÔÉÌÇ Þ -n +ÔÉÌÇ åêôüò áí ç ÔÉÌÇ Ý÷åé Ýíá áðü "
+#~ "ôéò\n"
+#~ "ðïëëáðëáóéáóôéêÝò êáôáëÞîåéò [bkm], óôçí ïðïßá ðåñßðôùóç ãßíåôáé ÷ñÞóç "
+#~ "ùò\n"
+#~ "-c ÔÉÌÇ Þ -c +TIMH.\n"
+#~ "\n"
+#~ "Ìå --follow (-f), ç tail åî ïñéóìïý ðáñáêïëïõèåß ôïí ðåñéãñáöÝá áñ÷åßïõ,\n"
+#~ "ðïõ óçìáßíåé üôé áêüìá êáé áí ôï áñ÷åßï ìåôïíïìáóèåß, ç tail èá "
+#~ "óõíå÷ßóåé\n"
+#~ "íá ôï ðáñáêïëïõèåß. ÁõôÞ ç åî ïñéóìïý óõìðåñéöïñÜ äåí åßíáé åðéèõìçôÞ "
+#~ "üôáí\n"
+#~ "èÝëåôå íá ðáñáêïëïõèÞóåôå ôï ðñáãìáôéêü üíïìá ôïõ áñ÷åßïõ êáé ü÷é ôïí "
+#~ "ðåñé-\n"
+#~ "ãñáöÝá áñ÷åßïõ (ð.÷. ðåñéóôñïöÞ áñ÷åßïõ êáôáãñáöþí). ÊÜíôå ÷ñÞóç ôïõ\n"
+#~ "--follow=name óôçí ðåñßðôùóç áõôÞ. Áõôü ðñïêáëåß ôçí tail íá "
+#~ "ðáñáêïëïõèåß\n"
+#~ "ôï áñ÷åßï ìå ôï óõãêåêñéìÝíï üíïìá áíïßãïíôáò ôï ðåñéïäéêÜ ãéá íá äåé áí\n"
+#~ "Ý÷åé äéáãñáöåß êáé åðáíáäçìéïõñãçèåß áðü êÜðïéï Üëëï ðñüãñáììá.\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "SETs are specified as strings of characters. Most represent themselves.\n"
+#~ "Interpreted sequences are:\n"
+#~ "\n"
+#~ " \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a audible BEL\n"
+#~ " \\b backspace\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ " CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+#~ " [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+#~ " [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+#~ " [:alnum:] all letters and digits\n"
+#~ " [:alpha:] all letters\n"
+#~ " [:blank:] all horizontal whitespace\n"
+#~ " [:cntrl:] all control characters\n"
+#~ " [:digit:] all digits\n"
+#~ " [:graph:] all printable characters, not including space\n"
+#~ " [:lower:] all lower case letters\n"
+#~ " [:print:] all printable characters, including space\n"
+#~ " [:punct:] all punctuation characters\n"
+#~ " [:space:] all horizontal or vertical whitespace\n"
+#~ " [:upper:] all upper case letters\n"
+#~ " [:xdigit:] all hexadecimal digits\n"
+#~ " [=CHAR=] all characters which are equivalent to CHAR\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ôá ÓÕÍÏËÁ ïñßæïíôáé ùò áëöáñéèìçôéêÜ. Ôá ðåñéóóüôåñá áíôéðñïóùðåýïõí ôïí "
+#~ "åáõôü ôïõò.\n"
+#~ "Ïé ìåôáöñáóìÝíåò áêïëïõèßåò åßíáé:\n"
+#~ "\n"
+#~ " \\NNN ÷áñáêôÞñáò ìå ïêôáäéêÞ ôéìÞ NNN (1 ìå 3 ïêôáäéêÜ "
+#~ "øçößá)\n"
+#~ " \\\\ ðéóùêÜèåôïò\n"
+#~ " \\a ç÷çôéêü êïõäïýíé\n"
+#~ " \\b `backspace'\n"
+#~ " \\f `form feed'\n"
+#~ " \\n `new line'\n"
+#~ " \\r `return'\n"
+#~ " \\t ïñéæüíôéïò óôçëïèÝôçò\n"
+#~ " \\v êÜèåôïò óôçëïèÝôçò\n"
+#~ " ×ÁÑÁÊÔ1-×ÁÑÁÊÔ2 üëïé ïé ÷áñáêôÞñåò áðü ×ÁÑÁÊÔ1 ìÝ÷ñé ×ÁÑÁÊÔ2 óå "
+#~ "áýîïõóá óåéñÜ\n"
+#~ " [×ÁÑÁÊÔ1-×ÁÑÁÊÔ2] üðùò ×ÁÑÁÊÔ1-×ÁÑÁÊÔ2, áí êáé ôá äýï ÓÕÍÏËÏ1, "
+#~ "ÓÕÍÏËÏ2 ôï êÜíïõí ÷ñÞóç\n"
+#~ " [×ÁÑÁÊÔ*] óôï ÓÕÍÏËÏ2, áíôéãñÜöåé ôï ×ÁÑÁÊÔÞñá ìÝ÷ñé ôï ìÞêïò "
+#~ "ôïõ ÓÕÍÏËÏ1\n"
+#~ " [×ÁÑÁÊÔ*ÅÐÁÍÁË] ÅÐÁÍÁËçøç áíôßãñáöá ôïõ ×ÁÑÁÊÔÞñá, ÅÐÁÍÁË åßíáé "
+#~ "ïêôáäéêü áí áñ÷ßæåé áðü 0\n"
+#~ " [:alnum:] üëïé ïé ÷áñáêôÞñåò êáé ôá øçößá\n"
+#~ " [:alpha:] üëïé ïé ÷áñáêôÞñåò\n"
+#~ " [:blank:] üëïé ïé ïñéæüíôéïé ëåõêïß ÷áñáêôÞñåò\n"
+#~ " [:cntrl:] üëïé ïé ÷áñáêôÞñåò åëÝã÷ïõ\n"
+#~ " [:digit:] üëá ôá øçößá\n"
+#~ " [:graph:] üëïé ïé åêôõðþóéìïé ÷áñáêôÞñåò, ÷ùñßò ôï äéÜóôçìá\n"
+#~ " [:lower:] üëá ôá ðåæÜ ãñÜììáôá\n"
+#~ " [:print:] üëïé ïé åêôõðþóéìïé ÷áñáêôÞñåò, ìáæß ìå ôï äéÜóôçìá\n"
+#~ " [:punct:] üëá ïé ÷áñáêôÞñåò ôïíéóìïý\n"
+#~ " [:space:] üëïé ïé ïñéæüíôéïé Þ êÜèåôïé ëåõêïß ÷áñáêôÞñåò\n"
+#~ " [:upper:] üëïé ïé êåöáëáßïé ÷áñáêôÞñåò\n"
+#~ " [:xdigit:] üëá ôá äåêáåîáäéêÜ øçößá\n"
+#~ " [=×ÁÑÁÊÔ=] üëïé ïé ÷áñáêôÞñåò ðïõ åßíáé éóïäýíáìïé ìå ôï ×ÁÑÁÊÔ\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Discard all but one of successive identical lines from INPUT (or\n"
+#~ "standard input), writing to OUTPUT (or standard output).\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -c, --count prefix lines by the number of occurrences\n"
+#~ " -d, --repeated only print duplicate lines\n"
+#~ " -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+#~ " delimit-method={none(default),prepend,separate)}\n"
+#~ " Delimiting is done with blank lines.\n"
+#~ " -f, --skip-fields=N avoid comparing the first N fields\n"
+#~ " -i, --ignore-case ignore differences in case when comparing\n"
+#~ " -s, --skip-chars=N avoid comparing the first N characters\n"
+#~ " -u, --unique only print unique lines\n"
+#~ " -w, --check-chars=N compare no more than N characters in lines\n"
+#~ " -N same as -f N\n"
+#~ " +N same as -s N (obsolescent; will be withdrawn)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "A field is a run of whitespace, then non-whitespace characters.\n"
+#~ "Fields are skipped before chars.\n"
+#~ msgstr ""
+#~ "ÁðïâïëÞ üëåò åêôüò áðü ôéò óõíå÷üìåíåò üìïéåò ãñáììÝò áðü ôçí ÅÉÓÏÄÏ\n"
+#~ "(Þ êáíïíéêÞ åßóïäï), ãñÜöïíôáò óôçí Ýîïäï (Þ êáíïíéêÞ Ýîïäï).\n"
+#~ "\n"
+#~ " -c, --count áñéèìüò ôùí åìöáíßóåùí óôçí áñ÷Þ ôùí ãñáììþí\n"
+#~ " -d, --repeated åìöÜíéóç ìüíï äéðëþí ãñáììþí\n"
+#~ " -D, --all-repeated åìöÜíéóç üëùí ôùí äéðëþí ãñáììþí\n"
+#~ " -f, --skip-fields=N áðïöõãÞ óýãêñéóçò ôùí ðñþôùí N ðåäßùí\n"
+#~ " -i, --ignore-case áãíüçóç äéáöïñþí ìåôáîý ðåæþí/êåöáëáßùí óôéò "
+#~ "óõãêñßóåéò\n"
+#~ " -s, --skip-chars=N áãíüçóç óýãêñéóçò ôùí ðñþôùí Í ÷áñáêôÞñùí\n"
+#~ " -u, --unique åìöÜíéóç ìüíï ôùí ìïíáäéêþí ãñáììþí\n"
+#~ " -w, --check-chars=N óýãêñéóç ü÷é ðáñáðÜíù áðü Í ÷áñáêôÞñåò óôç "
+#~ "ãñáììÞ\n"
+#~ " -N ßäéï ìå -f N\n"
+#~ " +N ßäéï ìå -s N\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "Ðåäßï åßíáé ìéá óåéñÜ áðü ëåõêïýò ÷áñáêôÞñåò, êáé ìåôÜ ìç-ëåõêïß "
+#~ "÷áñáêôÞñåò.\n"
+#~ "Ôá ðåäßá ðñïóðåñíþíôáé ðñéí ôïõò ÷áñáêôÞñåò.\n"
+
+#
+#~ msgid ""
+#~ "when using the old-style +POS and -POS key specifiers,\n"
+#~ "the +POS specifier must come first"
+#~ msgstr ""
+#~ "¼ôáí ãßíåôå ÷ñÞóç ðáëéïý-óôõë äçëùôþí +ÈÅÓÇ êáé -ÈÅÓÇ,\n"
+#~ "ï äçëùôÞò +ÈÅÓÇ ðñÝðåé íá Ýñ÷åôáé ðñþôïò"
+
+#
+#~ msgid "option `-k' requires an argument"
+#~ msgstr "ç åðéëïãÞ `-k' áðáéôåß Ýíá üñéóìá"
+
+#
+#~ msgid "starting field spec has `.' but lacks following character offset"
+#~ msgstr ""
+#~ "ç äÞëùóç Ýíáñîçò ðåäßïõ Ý÷åé `.' áëëÜ ôçò ëåßðåé ç èÝóç åðüìåíïõ ÷áñáêôÞñá"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "starting field character offset argument to the `-k' option must be "
+#~ "positive"
+#~ msgstr ""
+#~ "ôï üñéóìá Ýíáñîçò ðåäßïõ áñéèìïý óôçí åðéëïãÞ `-k'\n"
+#~ "ðñÝðåé íá åßíáé èåôéêüò"
+
+#
+#~ msgid "field specification has `,' but lacks following field spec"
+#~ msgstr "ç äÞëùóç ðåäßïõ Ý÷åé `,' áëëÜ ôçò ëåßðåé ç äÞëùóç åðüìåíïõ ðåäßïõ"
+
+#
+#~ msgid "ending field number argument to the `-k' option must be positive"
+#~ msgstr ""
+#~ "ôï üñéóìá ôÝñìáôïò ðåäßïõ áñéèìïý óôçí åðéëïãÞ `-k' ðñÝðåé íá åßíáé "
+#~ "èåôéêüò"
+
+#
+#~ msgid "ending field spec has `.' but lacks following character offset"
+#~ msgstr ""
+#~ "ç äÞëùóç ôÝñìáôïò ðåäßïõ Ý÷åé `.' áëëÜ ôçò ëåßðåé ç èÝóç åðüìåíïõ "
+#~ "÷áñáêôÞñá"
+
+#
+#~ msgid "option `-o' requires an argument"
+#~ msgstr "ç åðéëïãÞ `-o' áðáéôåß Ýíá üñéóìá"
+
+#
+#, fuzzy
+#~ msgid "option `-S' requires an argument"
+#~ msgstr "ç åðéëïãÞ `-k' áðáéôåß Ýíá üñéóìá"
+
+#
+#~ msgid "option `-t' requires an argument"
+#~ msgstr "ç åðéëïãÞ `-t' áðáéôåß Ýíá üñéóìá"
+
+#
+#~ msgid "option `-T' requires an argument"
+#~ msgstr "ç åðéëïãÞ `-T' áðáéôåß Ýíá üñéóìá"
+
+#
+#~ msgid "%s%*s%s%*sPage"
+#~ msgstr "%s%*s%s%*sÓåëßäá"
+
+#
+#~ msgid ""
+#~ "specified number of bytes `%s' is larger than the maximum\n"
+#~ "representable value of type `long'"
+#~ msgstr ""
+#~ "ï äçëùìÝíïò áñéèìüò bytes `%s' åßíáé ìåãáëýôåñïò áðü ôï ìÝãéóôï\n"
+#~ "ðïõ ìðïñåß íá áíáðáñáóôáèåß áðü ôï ôýðï äåäïìÝíùí `long'"
+
+#
+#~ msgid "could not find loop"
+#~ msgstr "áäõíáìßá åýñåóçò âñü÷ïõ"
+
+#
+#~ msgid "%s: cannot follow end of non-regular file"
+#~ msgstr "%s: áäõíáìßá áêïëïýèçóçò ôÝëïõò ìç-êáíïíéêïý áñ÷åßïõ"
+
+#
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <textutils-bugs@gnu.org>."
+#~ msgstr ""
+#~ "\n"
+#~ "ÁíáöÝñáôå óöÜëìáôá óôï <bug-textutils@gnu.org>."
+
+#
+#~ msgid "`%s' has reappeared"
+#~ msgstr "ôï `%s' åìöáíßóôçêå îáíÜ"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Convert tabs in each FILE to spaces, writing to standard output.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ " -i, --initial do not convert TABs after non whitespace\n"
+#~ " -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+#~ " -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Instead of -t NUMBER or -t LIST, -NUMBER or -LIST may be used.\n"
+#~ msgstr ""
+#~ "ÌåôáôñïðÞ äéáóôçìÜôùí óå êÜèå ÁÑ×ÅÉÏ óå óôçëïèÝôåò, ãñÜöïíôáò óôçí "
+#~ "êáíïíéêÞ Ýîïäï.\n"
+#~ "×ùñßò ÁÑ×ÅÉÏ, Þ üôáí ôï áñ÷åßï åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ "
+#~ "åßóïäï.\n"
+#~ "\n"
+#~ " -a, --all ìåôáôñïðÞ üëùí ôùí ëåõêþí ÷áñáêôÞñùí, áíôß ìüíï ôùí "
+#~ "áñ÷éêþí\n"
+#~ " -t, --tabs=ÁÑÉÈÌÏÓ ïé óôçëïèÝôåò íá Ý÷ïõí áðüóôáóç ÁÑÉÈÌÏÓ áíôß 8\n"
+#~ " -t, --tabs=ËÉÓÔÁ ÷ñÞóç ëßóôáò ÷ùñéóìÝíçò ìå êüììá ãéá ôç äÞëùóç ôçò "
+#~ "èÝóçò ôùí óôçëïèåôþí\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "Áíôß ãéá -t ÁÑÉÈÌÏÓ Þ -t ËÉÓÔÁ, -ÁÑÉÈÌÏÓ Þ -ËÉÓÔÁ ìðïñïýí íá "
+#~ "÷ñçóéìïðïéçèïýí.\n"
+
+#
+#~ msgid ""
+#~ "Reformat each paragraph in the FILE(s), writing to standard output.\n"
+#~ "If no FILE or if FILE is `-', read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -c, --crown-margin preserve indentation of first two lines\n"
+#~ " -p, --prefix=STRING combine only lines having STRING as prefix\n"
+#~ " -s, --split-only split long lines, but do not refill\n"
+#~ " -t, --tagged-paragraph indentation of first line different from "
+#~ "second\n"
+#~ " -u, --uniform-spacing one space between words, two after sentences\n"
+#~ " -w, --width=NUMBER maximum line width (default of 75 columns)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "In -wNUMBER, the letter `w' may be omitted.\n"
+#~ msgstr ""
+#~ "Ìïñöïðïßçóç îáíÜ êÜèå ðáñáãñÜöïõ óôï ÁÑ×ÅÉÏ(Á), ãñÜöïíôáò óôçí êáíïíéêÞ "
+#~ "Ýîïäï.\n"
+#~ "Áí êáíÝíá ÁÑ×ÅÉÏ äåí Ý÷åé ïñéóôåß Þ ôï ÁÑ×ÅÉÏ åßíáé ôï `-', áíÜãíùóç áðü "
+#~ "êáíïíéêÞ åßóïäï.\n"
+#~ "\n"
+#~ "Õðï÷ñåùôéêÜ ïñßóìáôá óôéò ìáêñÝò åðéëïãÝò åßíáé õðï÷ñåùôéêÜ ãéá óýíôïìåò "
+#~ "åðéëïãÝò åðßóåéò.\n"
+#~ " -c, --crown-margin äéáôÞñçóå ôçí åóï÷Þ ôùí äýï ðñþôùí ãñáììþí\n"
+#~ " -p, --prefix=ÁËÖÁÑÉÈ óõíäýáóå ìüíï ãñáììÝò ìå ÁËÖÁÑÉÈÌçôéêü ùò "
+#~ "ðñüèåìá\n"
+#~ " -s, --split-only ÷þñéóå óôá äýï ôéò ìáêñÝò ãñáììÝò áëëÜ ÷ùñßò "
+#~ "ãÝìéóìá îáíÜ\n"
+#~ " -t, --tagged-paragraph ç åóï÷Þ ôçò ðñþôçò ãñáììÞò íá åßíáé "
+#~ "äéáöïñåôéêÞ áðü ôç äåýôåñç\n"
+#~ " -u, --uniform-spacing Ýíá äéÜóôçìá ìåôáîý ëÝîåùí, äýï ìåôÜ áðü "
+#~ "ðñïôÜóåéò\n"
+#~ " -w, --width=ÁÑÉÈÌÏÓ ìÝãéóôï ðëÜôïò ãñáììÞò (åî ïñéóìïý 75 "
+#~ "óôÞëåò)\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "Óôï -wÁÑÉÈÌÏÓ, ôï ãñÜììá `w' ìðïñåß íá ðáñáëçöèåß.\n"
+
+#
+#~ msgid ""
+#~ "Print first 10 lines of each FILE to standard output.\n"
+#~ "With more than one FILE, precede each with a header giving the file "
+#~ "name.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ " -c, --bytes=SIZE print first SIZE bytes\n"
+#~ " -n, --lines=NUMBER print first NUMBER lines instead of first 10\n"
+#~ " -q, --quiet, --silent never print headers giving file names\n"
+#~ " -v, --verbose always print headers giving file names\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+#~ "If -VALUE is used as first OPTION, read -c VALUE when one of\n"
+#~ "multipliers bkm follows concatenated, else read -n VALUE.\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç ôùí 10 ðñþôùí ãñáììþí áðü êÜèå ÁÑ×ÅÉÏ óôçí êáíïíéêÞ Ýîïäï.\n"
+#~ "Ìå ðåñéóóüôåñá áðü Ýíá ÁÑ×ÅÉÏ, íá ðñïçãçèåß åðéóÝëéäï ìå ôï üíïìá ôïõ "
+#~ "áñ÷åßïõ.\n"
+#~ "×ùñßò ÁÑ×ÅÉÏ Þ üôáí ôï ÁÑ×ÅÉÏ åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ "
+#~ "åßóïäï.\n"
+#~ "\n"
+#~ " -c, --bytes=ÌÅÃÅÈÏÓ åìöÜíéóç ôùí ðñþôùí ÌÅÃÅÈÏÓ bytes\n"
+#~ " -n, --lines=ÁÑÉÈÌÏÓ åìöÜíéóç ôùí ðñþôùí ÁÑÉÈÌÏÓ ãñáììþí áíôß ôùí "
+#~ "ðñþôùí 10\n"
+#~ " -q, --quiet, --silent íá ìçí ôõðþíïíôáé åðéóÝëéäá ìå ôá ïíüìáôá "
+#~ "áñ÷åßùí\n"
+#~ " -v, --verbose íá ôõðþíïíôáé ðÜíôá åðéóÝëéäá ìå ôá ïíüìáôá "
+#~ "áñ÷åßùí\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "Ôï ÌÅÃÅÈÏÓ ìðïñåß íá Ý÷åé êáôÜëçîç ìå ðïëëáðëáóéáóôÞ: b ãéá 512, k ãéá "
+#~ "1K, m ãéá 1 Meg.\n"
+#~ "Áí ÷ñçóéìïðïéåßôáé ôï -VALUE óáí ðñþôç ÅÐÉËÏÃÇ, áíÜãíùóå -c ÔÉÌÇ üôáí\n"
+#~ "Ýíáò áðü ôïõò ðïëëáðëáóéáóôÝò bkm áêïëïõèåß óõíåíùìÝíïò, äéáöïñåôéêÜ "
+#~ "áíÜãíùóå -n ÔÉÌÇ\n"
+
+#
+#~ msgid ""
+#~ "This program is free software; you can redistribute it and/or modify\n"
+#~ "it under the terms of the GNU General Public License as published by\n"
+#~ "the Free Software Foundation; either version 2, or (at your option)\n"
+#~ "any later version.\n"
+#~ "\n"
+#~ "This program is distributed in the hope that it will be useful,\n"
+#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+#~ "GNU General Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+#~ msgstr ""
+#~ "Áõôü ôï ðñüãñáììá åßíáé åëåýèåñï ëïãéóìéêü· ìðïñåßôå íá ôï \n"
+#~ "åðáíáäéáíåßìåôå êáé/Þ íá ôï ôñïðïðïéÞóåôå õðü ôïõò üñïõò ôçò \n"
+#~ "ÃåíéêÞò Äçìüóéáò ¢äåéáò ×ñÞóåùò Ëïãéóìéêïý GNU (GNU General Public\n"
+#~ "Licence) üðùò áõôÞ äçìïóéåýôçêå áðü ôï ºäñõìá Åëåýèåñïõ Ëïãéóìéêïý\n"
+#~ "(Free Software Foundation), åßôå óôçí Ýêäïóç 2, Þ (êáôÜ åðéëïãÞ óáò)\n"
+#~ "ïðïéáäÞðïôå ìåôáãåíÝóôåñç Ýêäïóç.\n"
+#~ "\n"
+#~ "Áõôü ôï ðñüãñáììá äéáíÝìåôáé ìå ôçí åëðßäá üôé èá öáíåß ÷ñÞóéìï,\n"
+#~ "áëëÜ ×ÙÑÉÓ ÊÁÌÉÁ ÅÃÃÕÇÓÇ, ÷ùñßò êáí ôçí åããýçóç ×ÑÇÓÉÌÏÔÇÔÁÓ ÃÉÁ \n"
+#~ "ÓÕÃÊÅÊÑÉÌÅÍÏ ÓÊÏÐÏ. Ðáñáêáëþ áíáôñÝîôå óôç ÃåíéêÞ Äçìüóéá ¢äåéá \n"
+#~ "×ñÞóçò Ëïãéóìéêïý GNU ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò.\n"
+#~ "\n"
+#~ "Èá ðñÝðåé íá Ý÷åôå ëÜâåé Ýíá áíôßôõðï ôçò Üäåéáò áõôÞò ìáæß ìå\n"
+#~ "áõôü ôï ðñüãñáììá. ÅÜí ü÷é, ãñÜøôå óôï ºäñõìá Åëåýèåñïõ Ëïãéóìéêïý\n"
+#~ "(Free Software Foundation) óôç äéåýèõíóç Free Software Foundation,\n"
+#~ "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+
+#
+#~ msgid ""
+#~ "Write sorted concatenation of all FILE(s) to standard output.\n"
+#~ "\n"
+#~ " +POS1 [-POS2] start a key at POS1, end it *before* POS2 "
+#~ "(obsolescent)\n"
+#~ "\t\t field numbers and character offsets are numbered\n"
+#~ " starting with zero (contrast with the -k option)\n"
+#~ " -b ignore leading blanks in sort fields or keys\n"
+#~ " -c check if given files already sorted, do not sort\n"
+#~ " -d consider only [a-zA-Z0-9 ] characters in keys\n"
+#~ " -f fold lower case to upper case characters in keys\n"
+#~ " -g compare according to general numerical value, imply -"
+#~ "b\n"
+#~ " -i consider only [\\040-\\0176] characters in keys\n"
+#~ " -k POS1[,POS2] start a key at POS1, end it *at* POS2\n"
+#~ "\t\t field numbers and character offsets are numbered\n"
+#~ " starting with one (contrast with zero-based +POS "
+#~ "form)\n"
+#~ " -m merge already sorted files, do not sort\n"
+#~ " -M compare (unknown) < `JAN' < ... < `DEC', imply -b\n"
+#~ " -n compare according to string numerical value, imply -b\n"
+#~ " -o FILE write result on FILE instead of standard output\n"
+#~ " -r reverse the result of comparisons\n"
+#~ " -s stabilize sort by disabling last resort comparison\n"
+#~ " -t SEP use SEParator instead of non- to whitespace "
+#~ "transition\n"
+#~ " -T DIRECTORY use DIRECTORY for temporary files, not $TMPDIR or %s\n"
+#~ " -u with -c, check for strict ordering;\n"
+#~ " with -m, only output the first of an equal sequence\n"
+#~ " -z end lines with 0 byte, not newline, for find -print0\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "ÅìöÜíéóç ôáîéíïìçìÝíçò óõíÝíùóçò üëùí ôùí ÁÑ×ÅÉÏ(ÙÍ) óôçí êáíïíéêÞ "
+#~ "Ýîïäï.\n"
+#~ "\n"
+#~ " +ÈÅÓÇ1 [-ÈÅÓÇ2] áñ÷Þ êëåéäéïý óôç ÈÅÓÇ1, ôåñìáôéóìüò *ðñéí* ôç "
+#~ "ÈÅÓÇ2\n"
+#~ " (åêôüò ÷ñÞóçò)\n"
+#~ " áñéèìïß ðåäßùí êáé èÝóåéò ÷áñáêôÞñùí áñéèìïýíôáé\n"
+#~ " áñ÷ßæïíôáò áðü ôï ìçäÝí (óå áíôßèåóç ìå ôçí "
+#~ "åðéëïãÞ -k)\n"
+#~ " -b áãíüçóç ðñïðïñåõüìåíùí êåíþí óå ðåäßá ôáîéíüìçóçò Þ "
+#~ "êëåéäéÜ\n"
+#~ " -c Ýëåã÷ïò áí ôá äïèÝíôá áñ÷åßá åßíáé Þäç ôáîéíïìçìÝíá, "
+#~ "íá\n"
+#~ " ìçí ôáîéíïìçèïýí\n"
+#~ " -d íá èåùñçèïýí ìüíï ïé ÷áñáêôÞñåò [a-zA-Z0-9 ] óôá "
+#~ "êëåéäéÜ\n"
+#~ " -f áíáäßðëùóç ðåæþí ÷áñáêôÞñùí óå êåöáëáßá óôá êëåéäéÜ\n"
+#~ " -g óýãêñéóç óýìöùíá ìå ôç ãåíéêÞ áñéèìçôéêÞ ôéìÞ, èåþñçóå "
+#~ "-b\n"
+#~ " -i èåþñçóå ìüíï ôïõò ÷áñáêôÞñåò [\\040-\\0176] óôá "
+#~ "êëåéäéÜ\n"
+#~ " -k ÈÅÓÇ1[,ÈÅÓÇ2] Ýíáñîç êëåéäïý óôç èÝóç ÈÅÓÇ1, ôåñìáôéóôüò *óôç* "
+#~ "ÈÅÓÇ2\n"
+#~ " áñéèìïß ðåäßùí êáé èÝóåéò ÷áñáêôÞñùí áñéèìïýíôáé\n"
+#~ " áñ÷ßæïíôáò áðü ôï Ýíá (óå áíôßèåóç ìå ôç âáóéóìÝíç "
+#~ "óôï\n"
+#~ " ìçäÝí ìïñöÞ +ÈÅÓÇ)\n"
+#~ " -m óõíÝíùóç ìüíï ôáîéíïìçìÝíùí áñ÷åßùí, íá ìç ãßíåé "
+#~ "ôáîéíüìçóç\n"
+#~ " -M óýãêñéóç (Üãíùóôï) < `ÉÁÍ' < ... < `ÄÅÊ', èåþñçóå -b\n"
+#~ " -n óýãêñéóç óýìöùíá ìå ôç áëöáñéèìçôéêÞ áñéèìçôéêÞ ôéìÞ, "
+#~ "èåþñçóå -b\n"
+#~ " -o ARXEIO åããñáöÞ áðïôåëÝóìáôïò óôï ÁÑ×ÅÉÏ áíôß óôçí êáíïíéêÞ "
+#~ "Ýîïäï\n"
+#~ " -r áíôéóôñïöÞ ôùí áðïôåëåóìÜôùí ôùí óõãêñßóåùí\n"
+#~ " -s óôáèåñïðïßçóç ôçò ôáîéíüìçóçò ìå áðåíåñãïðïßçóç ôç\n"
+#~ " óýãêñéóçò ôåëåõôáßáò åëðßäáò\n"
+#~ " -t ÄÉÁ× ÷ñÞóç ÄÉÁ×ùñéóôÞ áíôß ôçò ìåôÜóôáóçò áðü ìç-êåíü óå\n"
+#~ " ëåõêü ÷áñáêôÞñá\n"
+#~ " -T ÊÁÔÁËÏÃÏÓ ÷ñÞóç ÊÁÔÁËÏÃÏÓ ãéá ðñïóùñéíÜ áñ÷åßá, ü÷é ôï $TMPDIR Þ "
+#~ "%s\n"
+#~ " -u ìå -c, Ýëåã÷ïò ãéá áõóôçñÞ ôïðïèÝôçóç óå óåéñÜ\n"
+#~ " ìå -m, ìüíï Ýîïäïò ôïõ ðñþôïõ áðü ìéá ßóç áêïëïõèßá\n"
+#~ " -z ôåñìáôéóìüò ãñáììþí ìå 0 byte, ü÷é ìå íÝá ãñáììÞ, ãéá\n"
+#~ " ôç find -print0\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+
+#
+# xxx Check punctation
+# 2001-12-02 11:12:55 CET -ke-
+#~ msgid ""
+#~ "\n"
+#~ "Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+#~ "-t may be used only when translating. SET2 is extended to length of\n"
+#~ "SET1 by repeating its last character as necessary. Excess characters\n"
+#~ "of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+#~ "expand in ascending order; used in SET2 while translating, they may\n"
+#~ "only be used in pairs to specify case conversion. -s uses SET1 if not\n"
+#~ "translating nor deleting; else squeezing uses SET2 and occurs after\n"
+#~ "translation or deletion.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "ÌåôÜöñáóç óõìâáßíåé üôáí äå äßíåôáé ôï -d êáé åìöáíßæïíôáé êáé ôá äýï\n"
+#~ "ÓÕÍÏËÏ1 êáé ÓÕÍÏËÏ2. Ôï -t ìðïñåß íá ÷ñçóéìïðïéçèåß ìüíï óôç ìåôÜöñáóç\n"
+#~ "Ôï ÓÕÍÏËÏ2 áíáðôýóóåôáé óôï ìÞêïò ôïõ ÓÕÍÏËÏ1 ìå åðáíÜëçøç ôïõ "
+#~ "ôåëåõôáßïõ\n"
+#~ "÷áñáêôÞñá, üðùò ÷ñåéÜæåôáé. ÊáôÜ õðÝñâáóç ÷áñáêôÞñåò ôïõ ÓÕÍÏËÏ2 "
+#~ "áãíïïýíôáé\n"
+#~ "Ìüíï ôá [:lower:] êáé [:upper:] åããõüíôáé ôçí áíÜðôõîç óå áýîïõóá óåéñÜ·\n"
+#~ "üôáí ÷ñçóéìïðïéïýíôáé óôï ÓÕÍÏËÏ2 óôç ìåôÜöñáóç, ìðïñïýí íá "
+#~ "÷ñçóéìïðïéçèïýí\n"
+#~ "ìüíï óå æåýãç ãéá íá ïñßóïõí ìåôáôñïðÞ ìåôáîý ðåæþí/êåöáëáßùí. Ôï -s\n"
+#~ "êÜíåé ÷ñÞóç ôïõ ÓÕÍÏËÏ1 áí äå ìåôáöñÜæåé Þ äéáãñÜöåé· äéáöïñåôéêÜ "
+#~ "óõìðõêíþíåé\n"
+#~ "êÜíùíôáò ÷ñÞóç ôïõ ÓÕÍÏËÏ2 êáé óõìâáßíåé ìåôÜ áðü ìåôÜöñáóç Þ äéáãñáöÞ\n"
+
+#
+#, fuzzy
+#~ msgid ""
+#~ "Convert spaces in each FILE to tabs, writing to standard output.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ " -a, --all convert all whitespace, instead of initial "
+#~ "whitespace\n"
+#~ " -t, --tabs=NUMBER have tabs NUMBER characters apart instead of 8\n"
+#~ " -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Instead of -t NUMBER or -t LIST, -NUMBER or -LIST may be used.\n"
+#~ msgstr ""
+#~ "ÌåôáôñïðÞ äéáóôçìÜôùí óå êÜèå ÁÑ×ÅÉÏ óå óôçëïèÝôåò, ãñÜöïíôáò óôçí "
+#~ "êáíïíéêÞ Ýîïäï.\n"
+#~ "×ùñßò ÁÑ×ÅÉÏ, Þ üôáí ôï áñ÷åßï åßíáé ôï -, áíÜãíùóç áðü ôçí êáíïíéêÞ "
+#~ "åßóïäï.\n"
+#~ "\n"
+#~ " -a, --all ìåôáôñïðÞ üëùí ôùí ëåõêþí ÷áñáêôÞñùí, áíôß ìüíï ôùí "
+#~ "áñ÷éêþí\n"
+#~ " -t, --tabs=ÁÑÉÈÌÏÓ ïé óôçëïèÝôåò íá Ý÷ïõí áðüóôáóç ÁÑÉÈÌÏÓ áíôß 8\n"
+#~ " -t, --tabs=ËÉÓÔÁ ÷ñÞóç ëßóôáò ÷ùñéóìÝíçò ìå êüììá ãéá ôç äÞëùóç ôçò "
+#~ "èÝóçò ôùí óôçëïèåôþí\n"
+#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+#~ "\n"
+#~ "Áíôß ãéá -t ÁÑÉÈÌÏÓ Þ -t ËÉÓÔÁ, -ÁÑÉÈÌÏÓ Þ -ËÉÓÔÁ ìðïñïýí íá "
+#~ "÷ñçóéìïðïéçèïýí.\n"
diff --git a/po/en@boldquot.header b/po/en@boldquot.header
new file mode 100644
index 0000000..fedb6a0
--- /dev/null
+++ b/po/en@boldquot.header
@@ -0,0 +1,25 @@
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
+# This catalog furthermore displays the text between the quotation marks in
+# bold face, assuming the VT100/XTerm escape sequences.
+#
diff --git a/po/en@quot.header b/po/en@quot.header
new file mode 100644
index 0000000..a9647fc
--- /dev/null
+++ b/po/en@quot.header
@@ -0,0 +1,22 @@
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
diff --git a/po/es.gmo b/po/es.gmo
new file mode 100644
index 0000000..edd8b58
--- /dev/null
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
new file mode 100644
index 0000000..ba33cbc
--- /dev/null
+++ b/po/es.po
@@ -0,0 +1,12218 @@
+# Mensajes en español para GNU coreutils.
+# Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+# Santiago Vila Doncel <sanvila@unex.es>, 2002, 2003, 2004.
+#
+# La primera versión de esta traducción se hizo combinando las traducciones
+# existentes de fileutils, textutils y sh-utils, en las cuales también
+# colaboraron Enrique Melero Gómez y Cristian Othón Martínez Vera.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU coreutils 5.2.1\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2004-11-05 01:11+0100\n"
+"Last-Translator: Santiago Vila Doncel <sanvila@unex.es>\n"
+"Language-Team: Spanish <es@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, c-format
+msgid "preserving permissions for %s"
+msgstr "se conservan los permisos de %s"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "estableciendo los permisos de %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "argumento %s inválido para %s"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argumento %s ambiguo para %s"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Los argumentos válidos son:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "error de escritura"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Error del sistema desconocido"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "no se puede efectuar `stat' sobre %s"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "fichero regular vacío"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "fichero regular"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "directorio"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "fichero especial de bloques"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "fichero especial de caracteres"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "`fifo'"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "enlace simbólico"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "`socket'"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "cola de mensajes"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "semáforo"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "objeto de memoria compartida"
+
+#: lib/file-type.c:69
+#, fuzzy
+msgid "typed memory object"
+msgstr "objeto de memoria compartida"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "fichero extraño"
+
+# Pues fifo file es precisamente lo mismo que un named pipe, mira
+# por donde :) , así que ya sabes, a tomar una determinación em
+#
+# Por regla general suelo respetar el original todo lo que puedo.
+# Si en inglés existe "fifo file" y "named pipe" y son sinónimos, no veo nada
+# malo en que en español exista "fichero `fifo'" y
+# "tubería con nombre (named pipe)", como sinónimos. sv
+#
+#: lib/gai_strerror.c:44
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "los ficheros `fifo' no están soportados"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+# Pues fifo file es precisamente lo mismo que un named pipe, mira
+# por donde :) , así que ya sabes, a tomar una determinación em
+#
+# Por regla general suelo respetar el original todo lo que puedo.
+# Si en inglés existe "fifo file" y "named pipe" y son sinónimos, no veo nada
+# malo en que en español exista "fichero `fifo'" y
+# "tubería con nombre (named pipe)", como sinónimos. sv
+#
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "los ficheros `fifo' no están soportados"
+
+# FIXME: Decirle al autor que lo ponga como en fork.
+#: lib/gai_strerror.c:49
+#, fuzzy
+msgid "Memory allocation failure"
+msgstr "falló la llamada al sistema `malloc'"
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+# Pues fifo file es precisamente lo mismo que un named pipe, mira
+# por donde :) , así que ya sabes, a tomar una determinación em
+#
+# Por regla general suelo respetar el original todo lo que puedo.
+# Si en inglés existe "fifo file" y "named pipe" y son sinónimos, no veo nada
+# malo en que en español exista "fichero `fifo'" y
+# "tubería con nombre (named pipe)", como sinónimos. sv
+#
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "los ficheros `fifo' no están soportados"
+
+#: lib/gai_strerror.c:54
+#, fuzzy
+msgid "System error"
+msgstr "error de escritura"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+#, fuzzy
+msgid "Unknown error"
+msgstr "Error del sistema desconocido"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: la opción `%s' es ambigua\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: la opción `--%s' no admite ningún argumento\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: la opción `%c%s' no admite ningún argumento\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: la opción `%s' requiere un argumento\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: opción no reconocida `--%s'\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: opción no reconocida `%c%s'\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: opción ilegal -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: opción inválida -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: la opción requiere un argumento -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: la opción `-W %s' es ambigua\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: la opción `-W %s' no admite ningún argumento\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "tamaño del bloque"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "no se pueden cambiar los permisos de %s"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "no se puede crear el directorio %s"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "memoria agotada"
+
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr "no se puede volver al directorio de trabajo inicial"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "no se puede volver al directorio de trabajo inicial"
+
+# Vamos a probar con el símbolo de cita tradicional en español,
+# a ver qué tal queda la cosa.
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "«"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "»"
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "%s: seek falló"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: la expresión regular no es válida: %s"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "clase de carácter inválido `%s'"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "memoria agotada"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: la expresión regular no es válida: %s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "error en la búsqueda de la expresión regular"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "%s: la expresión regular no es válida: %s"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "error en la búsqueda de la expresión regular"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr "es peligroso operar recursivamente sobre %s"
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr "es peligroso operar recursivamente sobre %s (igual que %s)"
+
+# Traducción libérrima, pero creo que se entiende.
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr "utilice --no-preserve-root para saltarse esta medida de seguridad"
+
+# Esto es para responder "sí" cuando nos pregunte.
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[sS]"
+
+# Y esto es para responder "no" cuando nos pregunte.
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "la función iconv no es utilizable"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "la función iconv no está disponible"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "carácter fuera de rango"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "no se puede convertir U+%04X al conjunto de caracteres local"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "no se puede convertir U+%04X al conjunto de caracteres local: %s"
+
+# Me niego a considerar "inválido" como palabra "políticamente incorrecta".
+# Si algún "impedido físico" lee este mensaje y se molesta por ello, entonces
+# es que además de impedido físico es tonto, pues todo el mundo sabe que,
+# *en el contexto informático*, inválido e ilegal significan
+# "no permitido por la causa que sea".
+# Luego, que unas veces sea inválido y otras ilegal, son matices que el
+# original tiene y creo necesario respetar en la traducción.
+#
+# [ Tomás Bautista sugiere "inexistente", y también para grupo ]
+#
+# FIXME:
+# Eso sí, un día tendré que preguntar a los de GNU en qué se diferencia
+# "invalid" de "not allowed" de "not recognized" y todo eso... sv
+#
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "usuario inválido"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "grupo inválido"
+
+# Me niego a considerar "inválido" como palabra "políticamente incorrecta".
+# Si algún "impedido físico" lee este mensaje y se molesta por ello, entonces
+# es que además de impedido físico es tonto, pues todo el mundo sabe que,
+# *en el contexto informático*, inválido e ilegal significan
+# "no permitido por la causa que sea".
+# Luego, que unas veces sea inválido y otras ilegal, son matices que el
+# original tiene y creo necesario respetar en la traducción.
+#
+# [ Tomás Bautista sugiere "inexistente", y también para grupo ]
+#
+# FIXME:
+# Eso sí, un día tendré que preguntar a los de GNU en qué se diferencia
+# "invalid" de "not allowed" de "not recognized" y todo eso... sv
+#
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "usuario inválido"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+#, fuzzy
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"Este programa es software libre; puede ser redistribuido y/o\n"
+"modificado bajo los términos de la Licencia Pública General de\n"
+"GNU tal y como se publica por la Free Software Foundation; bien\n"
+"en su versión 2, o (a su elección) cualquier versión posterior.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Escrito por %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Escrito por %s y %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Escrito por %s, %s, y %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"y %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, y %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, y %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s, y %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"y %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, y %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Escrito por %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, y otros.\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "argumento inválido: %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "la comparación de cadenas falló"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Establezca LC_ALL='C' para solucionar este problema de forma temporal."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "Las cadenas comparadas eran %s y %s."
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "la comparación de cadenas falló"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "fecha inválida `%s'"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "clase de carácter inválido `%s'"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s es demasiado grande"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Pruebe `%s --help' para más información.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr " --version informa de la versión y finaliza\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Sin FICHERO, o cuando FICHERO es -, lee la entrada estándar.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+# Véase la excelente película "A bug's life".
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Comunicar bichos a <%s>.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "error de lectura"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "número inválido"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "tamaño del `tab' inválido: %s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, fuzzy, c-format
+msgid "extra operand %s"
+msgstr "operando extra `%s'"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "cierre de la entrada estándar"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Modo de empleo: %s NOMBRE [SUFIJO]\n"
+" o bien: %s OPCIÓN\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Muestra NOMBRE eliminando cualquier componente de directorio que lo "
+"preceda.\n"
+"Si se especifica, también elimina un SUFIJO final.\n"
+"\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, fuzzy, c-format
+msgid "missing operand"
+msgstr "falta un operando después de `%s'"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Modo de empleo: %s [OPCIÓN] [FICHERO]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"Concatena FICHERO(s), o la entrada estándar, en la salida estándar.\n"
+"\n"
+" -A, --show-all lo mismo que -vET\n"
+" -b, --number-nonblank numera las líneas que no están vacías\n"
+" -e lo mismo que -vE\n"
+" -E, --show-ends muestra un $ al final de cada línea\n"
+" -n, --number numera todas las líneas\n"
+" -s, --squeeze-blank nunca muestra más de una línea vacía,\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t equivalente a -vT\n"
+" -T, --show-tabs muestra los caracteres de tabulación como ^I\n"
+" -u (sin efecto)\n"
+" -v, --show-nonprinting utiliza la notación ^ y M-, salvo para LFD y TAB\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+# Al igual que en fileutils donde también se hace mención a alguna llamada
+# del sistema, creo que se debería traducir por algo así como:
+# "No se puede realizar la llamada de sistema "ioctl" sobre..."
+# creo que es más "self-explanatory"
+# Sí, tienes razón em+
+# FIXME: Comunicar al autor. sv
+#: src/cat.c:333
+#, fuzzy, c-format
+msgid "cannot do ioctl on %s"
+msgstr "no se puede ejecutar la función `ioctl' sobre `%s'"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "salida estándar"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: los ficheros de entrada y salida son el mismo"
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "grupo inválido %s"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Modo de empleo: %s [OPCIÓN]... GRUPO FICHERO...\n"
+" o bien: %s [OPCIÓN]... --reference=FICHERO-R FICHERO...\n"
+
+#: src/chgrp.c:117
+#, fuzzy
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Cambia el grupo de cada FICHERO a GRUPO.\n"
+"\n"
+" -c, --changes como `verbose' pero informa sólo de los cambios\n"
+" --dereference afecta al referente de cada enlace simbólico, en "
+"lugar\n"
+" de al propio enlace simbólico\n"
+
+# ¿? ¿Existe el verbo "referenciar"? ¿Habría que poner referir?
+#
+# Sí, que yo sepa ... :) (yo me referencio, tu te referencias ... :). ipg
+#
+# Muy bueno :-) Ahora sí que lo veo claro. Ya lo he cambiado en todas
+# partes, excepto en algunos sitios donde busco una alternativa mejor. sv
+#
+# Yo creo que referido != referenciado, y este último es el que debería de
+# ponerse según lo que pienso... uac
+#
+# Pues Iñaky me convenció de que referenciado era un "palabro" (palabra
+# que no existe, inventada). ¿Estás seguro de que existe?
+# (Esto me recuerda el palabro "influenciar", a mucha gente se le olvida
+# que se dice *influir*). sv
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference afecta a cada enlace simbólico en lugar de a los\n"
+" ficheros referidos (solamente es útil en sistemas\n"
+" que pueden cambiar el propietario de un enlace\n"
+" simbólico)\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root no trata `/' de forma especial (predeterminado)\n"
+" --preserve-root no opera recursivamente sobre `/'\n"
+
+# He traducido "diagnostic" por "mensaje". ¿Alguna idea mejor?
+# `diagnóstico' ... ¿no? ipg
+#
+# Rotundamente no. En español esa palabra solamente se usa en el
+# ámbito médico. "a nivel de hospitales" :-) sv
+#
+# pero en este caso, queda mejor (a mi parecer) `mensaje' ipg
+#
+# Menos mal :-) sv
+#
+# Y a mí que no me gusta `mensaje'... pero no encuentro alternativa. Quizá
+# `muestra lo realizado para/con/sobre cada fichero' tb
+#
+# Aunque prefiero mensaje, dejaré aquí tu sugerencia.
+# (Creo que es la mejor que me han hecho al respecto). sv
+#
+# sugiero que se especificara qué tipo de mensaje se muestra ya que un
+# "diagnostic" no es un mensaje cualquiera... uac
+#
+# Bueno, en este caso, por el contexto creo que no hace falta ser más
+# explícito, si dice "muestra un mensaje" y la opción se llama "verbose",
+# está claro que no es un mensaje de correo electrónico. sv
+#: src/chgrp.c:134
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet suprime la mayoría de los mensajes de error\n"
+" --reference=FICH_R utiliza el grupo de FICH_R en lugar de especificar\n"
+" un valor para GRUPO\n"
+" -R, --recursive opera sobre ficheros y directorios recursivamente\n"
+" -v, --verbose muestra un mensaje por cada fichero procesado\n"
+"\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+"Las siguientes opciones modifican cómo se atraviesa una jerarquía cuando\n"
+"se especifica también la opción -R. Si se especifica más de una, solamente\n"
+"tiene efecto la última.\n"
+"\n"
+" -H si un argumento de la línea de órdenes es un "
+"enlace\n"
+" simbólico a un directorio, lo atraviesa\n"
+" -L atraviesa cualquier enlace simólico a un "
+"directorio\n"
+" que se encuentre\n"
+" -P no atraviesa ningún enlace simbólico "
+"(predeterminado)\n"
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr ""
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, fuzzy, c-format
+msgid "missing operand after %s"
+msgstr "falta un operando después de `%s'"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "fallo al obtener los permisos de %s"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "obteniendo nuevos permisos de %s"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "ni el enlace simbólico %s ni su referente ha cambiado\n"
+
+# ¿Y "el modo de... se cambió a..."? tb
+# Eso me da la impresión de que no es chmod quien los ha cambiado.
+# quiero decir, que así parece que "se cambió solo".
+# (aunque sea meramente un matiz). sv
+#
+# A mí también me parece más adecuado "se cambió a", aunque me gusta más
+# "se ha cambiado a" o "ha cambiado a"... uac
+#
+# Pensaré esto sincronizadamente con los otros. sv
+#
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "el modo de %s cambia a %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "fallo al cambiar el modo de %s a %04lo (%s)\n"
+
+# al igual que con chgrp y por coherencia me parece más adecuado:
+# "ha permanecido"... uac
+#
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "el modo de %s permanece como %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "no se puede acceder a %s"
+
+# FIXME: Me lo explique.
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "no se puede leer el directorio %s"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "cambiando los permisos de %s"
+
+#: src/chmod.c:286
+#, fuzzy, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "estableciendo los permisos de %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr "fts_read falló"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Modo de empleo: %s [OPCIÓN]... MODO[,MODO]... FICHERO...\n"
+" o bien: %s [OPCIÓN]... MODO-OCTAL FICHERO...\n"
+" o bien: %s [OPCIÓN]... --reference=FICHERO-R FICHERO...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+"Cambia el modo de cada FICHERO a MODO.\n"
+"\n"
+" -c, --changes como `verbose' pero sólo informa de los cambios\n"
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root no trata `/' de forma especial (predeterminado)\n"
+" --preserve-root no opera recursivamente sobre `/'\n"
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+" -f, --silent, --quiet suprime la mayoría de los mensajes de error\n"
+" -v, --verbose muestra un mensaje por cada fichero procesado\n"
+" --reference=FICH_R utiliza el modo de FICH_R en lugar del valor MODO\n"
+" -R, --recursive cambia ficheros y directorios recursivamente\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr ""
+
+#: src/chmod.c:510
+#, fuzzy, c-format
+msgid "invalid mode: %s"
+msgstr "modo inválido %s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "cambiado el propietario de %s a %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "cambiado el grupo de %s a %s\n"
+
+#: src/chown-core.c:149
+#, fuzzy, c-format
+msgid "no change to ownership of %s\n"
+msgstr "no se puede cambiar el propietario de %s"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "fallo al cambiar el propietario de %s a %s\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "fallo al cambiar el grupo de %s a %s\n"
+
+#: src/chown-core.c:154
+#, fuzzy, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "fallo al cambiar el propietario de %s a %s\n"
+
+# No sé si sería mejor "se mantiene como propietario de %s a " tb
+# No está mal. Lo pensaré. sv
+#
+# al igual que con el msgid anterior esta propuesta me parece mejor... uac
+# ¿Alguien más? :-) sv
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "el propietario de %s permanece como %s\n"
+
+# por la misma razón que en el msgid anterior, creo que debería ser algo así
+# como "ha permanecido" o algo similar... uac
+# Siguiendo con lo anterior, en este caso me parece que queda mucho más feo
+# en pasado que en presente (razón para dejarlos los dos en presente).
+# De todas formas, tendré que pensarlo un poco más despacio. sv
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "el grupo de %s permanece como %s\n"
+
+# No sé si sería mejor "se mantiene como propietario de %s a " tb
+# No está mal. Lo pensaré. sv
+#
+# al igual que con el msgid anterior esta propuesta me parece mejor... uac
+# ¿Alguien más? :-) sv
+#: src/chown-core.c:159
+#, fuzzy, c-format
+msgid "ownership of %s retained\n"
+msgstr "el propietario de %s permanece como %s\n"
+
+#: src/chown-core.c:344
+#, fuzzy, c-format
+msgid "cannot dereference %s"
+msgstr "no se puede ejecutar %s"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "cambiando el propietario de %s"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "cambiando el grupo de %s"
+
+#: src/chown.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Modo de empleo: %s [OPCIÓN]... GRUPO FICHERO...\n"
+" o bien: %s [OPCIÓN]... --reference=FICHERO-R FICHERO...\n"
+
+# La línea del "verbose", "da detalles de lo que va haciendo" es
+# realmente sosa, ¿alguna sugerencia que la mejore?
+# (¿o quizá no hay mucho que mejorar?)
+#
+# Opera verbosamente (ya sé que es pero ... pero es lo que se
+# me ocurrió a mí) :) ipg
+#
+# Con sinceridad, "verbosamente" me parece un "palabro". sv
+#
+# ¿Y "muestra en detalle los cambios" ? em
+#
+# Eso tiene el problema siguiente: "Lo que va haciendo" puede ser
+# cambiar unas cosas sí y otras no. No son sólo los cambios. sv
+#
+# ¿más sugerencias? sv+
+# "muestra mensajes sólo cuando hay algún cambio" tb
+# Vale. Aceptado. Es casi igual pero un poquito mejor. sv
+#
+#: src/chown.c:98
+#, fuzzy
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Cambia el propietario y/o grupo de cada FICHERO a PROPIETARIO y/o GRUPO.\n"
+"Con --reference, cambia el propietario y el grupo de cada FICHERO a los\n"
+"que tenga FICHERO-R\n"
+"\n"
+" -c, --changes como verbose pero informa solamente cuando se "
+"efectúa\n"
+" un cambio\n"
+" --dereference afecta al referente al que apunta cada enlace\n"
+" simbólico, en vez de al propio enlace simbólico\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=PROPIETARIO_ACTUAL:GRUPO_ACTUAL\n"
+" cambia el propietario y/o el grupo de cada fichero\n"
+" solamente si su propietario y/o grupo actual "
+"coinciden\n"
+" con los especificados aquí. Se puede omitir "
+"cualquiera\n"
+" de los dos, en cuyo caso no se requiere "
+"coincidencia\n"
+" para el atributo omitido.\n"
+
+#: src/chown.c:122
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet suprime la mayoría de los mensajes de error\n"
+" --reference=FICH_R utiliza el propietario y el grupo de FICH_R en "
+"lugar\n"
+" de especificar valores PROPIETARIO:GRUPO\n"
+" -R, --recursive opera sobre ficheros y directorios recursivamente\n"
+" -v, --verbose muestra un mensaje por cada fichero procesado\n"
+
+#: src/chown.c:144
+#, fuzzy
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"El propietario no cambia si se omite. El grupo no cambia si se omite, pero\n"
+"cambia al grupo de login implícitamente con `:'. PROPIETARIO y GRUPO pueden "
+"ser\n"
+"numéricos o simbólicos.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Modo de empleo: %s NUEVO_RAÍZ [ORDEN...]\n"
+" o bien: %s OPCIÓN\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr "Ejecuta ORDEN siendo NUEVO_RAÍZ el directorio raíz.\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"Si no se especifica ninguna orden, ejecuta ``${SHELL} -i''\n"
+"(por omisión: /bin/sh).\n"
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "no se puede cambiar el directorio raíz a %s"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "no se puede cambiar al directorio raíz"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "no se puede ejecutar la orden %s"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: fichero demasiado largo"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Modo de empleo: %s [FICHERO]...\n"
+" o bien: %s [OPCIÓN]\n"
+
+# ¿¿?? ¿¿Porqué has reformateado para que tengan la misma longitud? ipg
+# Me parece que queda más bonito, después de instalar el .po y ver
+# un par de mensajes tal y como aparecían creí necesario formatearlo
+# un poco. Todavía no hay una regla de formateo oficial para GNU, pero
+# es de esperar que dentro de poco la haya. em+
+#
+# A mí, la verdad, se me hace harto difícil leer con más de un espacio
+# entre medias ... *lo odio* ;). ipg
+#
+# A ver qué os parece la siguiente regla, nunca la había escrito, pero no
+# me la acabo de inventar, creo que es la regla implícita que he estado
+# usando desde el principio:
+#
+# Regla de formateo: Ninguna línea excederá de 80 columnas. Cuando haya un
+# especificador de formato (tal y como %s) se debe tener en cuenta que
+# resultará sustituido por una palabra cuya longitud habrá que estimar.
+#
+# Hay algunas que pueden ser más largas aposta, porque sean reformateadas
+# a pelo. Además, en muchos casos será casi imposible hacer una estimación.
+# ipg
+#
+# En los textos que explican para qué sirve cada opción, se respetará en la
+# medida de lo posible la distancia de tabulación del original. Solamente está
+# justificado cambiar dicha distancia cuando haya dificultad en respetar
+# el límite de 80 columnas.
+#
+# Ok. ipg
+#
+# De acuerdo con la regla, *no* está justificado disminuir la distancia
+# en la siguiente cadena, así que la dejo como el original. sv
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"Muestra la suma de comprobación CRC y el número de bytes de cada FICHERO.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Modo de empleo: %s [OPCIÓN]... FICHERO1 FICHERO2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr "Compara los ficheros ordenados FICHERO1 y FICHERO2 línea por línea.\n"
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+"\n"
+"Sin ninguna opción, produce un resultado en tres columnas. La columna\n"
+"uno contiene las líneas únicas al FICHERO1, la columna dos contiene\n"
+"las líneas únicas al FICHERO2, y la columna tres contiene las líneas\n"
+"comunes a ambos ficheros.\n"
+
+# ¿¿cómo se puede explicar esto mejor??
+# A mí me parece que está bien ... :-? ipg
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"\n"
+" -1 suprime las líneas que sólo están en FICHERO1\n"
+" -2 suprime las líneas que sólo están en FICHERO2\n"
+" -3 suprime las líneas que aparecen en los dos\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "fallo al conservar el propietario de %s"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr "fallo al buscar el fichero %s"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "fallo al conservar el autor de %s"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "no se puede abrir %s para lectura"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "no se puede efectuar `fstat' sobre %s"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "saltando el fichero %s, ya que fue reemplazado mientras se copiaba"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "no se puede borrar %s"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "%s borrado\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "no se puede crear el fichero regular %s"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "leyendo %s"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "no se puede efectuar `lseek' sobre %s"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "escribiendo %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "se conserva las fechas de %s"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "cerrando %s"
+
+# SIoNO
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: ¿sobreescribir %s, sustituyendo el modo %04lo? (s/n) "
+
+# SIoNO
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: ¿sobreescribir %s? (s/n) "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (respaldo: %s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "se omite el directorio %s"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "atención: se ha especificado el fichero origen %s más de una vez"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s y %s son el mismo fichero"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "no se puede sobreescribir el no directorio %s con el directorio %s"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "no se sobreescribirá el fichero %s recién creado con %s"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "no se puede sobreescribir el directorio %s con un no directorio"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "no se puede sobreescribir un directorio con un no directorio: %s -> %s"
+
+# Nota: Este backing up *no* es un gerundio.
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "respaldar %s destruiría el original; %s no se mueve"
+
+# Nota: Este backing up *tampoco* es un gerundio.
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "respaldar %s destruiría el original; %s no se copia"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "no se puede respaldar %s"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "no se puede copiar un directorio, %s, dentro de sí mismo, %s"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "no se crea el enlace duro %s al directorio %s"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "crea el enlace duro %s a %s"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "no se puede mover %s a un directorio de sí mismo, %s"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "no se puede mover %s a %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+"falló el movimiento entre distintos dispositivos: de %s a %s;\n"
+"no se puede borrar el objetivo"
+
+# Nota: Pongo "el" y no "un" porque no todos los enlaces simbólicos
+# cíclicos son imposibles de copiar, por ejemplo:
+# ln -s bb bb
+# mkdir aa
+# cp -d bb aa
+# ls -l aa
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "no se puede copiar el enlace simbólico cíclico %s"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr ""
+"%s: solamente se pueden crear enlaces simbólicos relativos\n"
+"en el directorio actual"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "no se puede crear el enlace simbólico %s a %s"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "no se puede crear el enlace %s"
+
+# Dudo mucho que exista traducción de `fifo', pero si a alguien se le ocurre
+# alguna, por favor, que me diga en qué libro aparece y cuánta gente lo usa
+# (el término, no el libro).
+#
+# FIFO es un acrónimo (First-In, First-Out) ... Primero-que-Entra,
+# Primero-que-Sale (PEPS) ... no queda muy bien ¿no? :) ipg
+#
+# Lo sé, lo sé, pero no está el horno para bollos de inventarse
+# acrónimos en español que nadie usaría (*ni siquiera nosotros*). sv
+#
+# Lo que sí te digo es que es 'la' fifo. Y ya puestos, yo usaría, en todo
+# caso, 'pila fifo' em
+#
+# Es que no es "el fifo" ni "la fifo" sino "el [fichero] fifo"
+# Es un tipo especial de fichero.
+# Para que te quedes tranquilo, añado la palabra "fichero". sv+
+#
+# Ya... y `fifo' no es un fichero, sino una `cola'. tb
+#
+# Creo que se refiere a un "named pipe", de los que se crean con mkfifo.
+# Y es un fichero sólo en tanto que está en un determinado directorio,
+# como los dispositivos en /dev.
+# ¿Debo entender que propones eliminar fichero?
+# (¿y poner además "la cola"?). sv
+#
+# No exactamente. Quiero decir que `fifo' es una cola ---lo decía por toda
+# la discusión anterior---, pero como esta cola está construida sobre un
+# fichero, pues... Y me temo que "fichero para `fifo'" sería ya demasiado.
+# Más vale que lo dejes como está. tb
+#
+# Por una vez, y sin que sirva de precedente, Santiago, me pongo de
+# tu lado :) Déjalo como está :D ipg
+#
+# Gracias a los dos. sv
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "no se puede crear el fichero `fifo' %s"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "no se puede crear el fichero especial %s"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "no se puede leer el enlace simbólico %s"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "no se puede crear el enlace simbólico %s"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s tiene un tipo de fichero desconocido"
+
+# Nota: Asegurarse de que significa eso.
+# Probablemente quiera decir que "no se puede recuperar `%s'" de la copia
+# de seguridad. tb
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "no se puede restaurar %s"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (restauración)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Modo de empleo: %s [OPCIÓN]... ORIGEN DESTINO\n"
+" o bien: %s [OPCIÓN]... ORIGEN... DIRECTORIO\n"
+" o bien: %s [OPCIÓN]... --target-directory=DIRECTORIO ORIGEN...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Copia ORIGEN a DESTINO, o varios ORIGEN(es) a DIRECTORIO.\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Los argumentos obligatorios para las opciones largas son también "
+"obligatorios\n"
+"para las opciones cortas.\n"
+
+#: src/cp.c:170
+#, fuzzy
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive lo mismo que -dpR\n"
+" --backup[=CONTROL] crea una copia de seguridad de cada fichero "
+"de\n"
+" destino que exista\n"
+" -b como --backup pero no acepta ningún "
+"argumento\n"
+" --copy-contents copia el contenido de los ficheros "
+"especiales\n"
+" cuando opera recursivamente\n"
+" -d lo mismo que --no-dereference --"
+"preserve=link\n"
+
+#: src/cp.c:177
+#, fuzzy
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" --no-dereference no sigue los enlaces simbólicos\n"
+" -f, --force borra los destinos que ya existan, sin "
+"preguntar\n"
+" -i, --interactive pide confirmación antes de sobreescribir\n"
+" -H sigue los enlaces simbólicos de la línea\n"
+" de órdenes\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+#, fuzzy
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -l, --link enlaza ficheros en lugar de copiarlos\n"
+" -L, --dereference sigue siempre los enlaces simbólicos\n"
+" -p igual que --preserve=mode,ownership,"
+"timestamps\n"
+" --preserve[=LISTA_ATTR] conserva si puede los atributos "
+"especificados,\n"
+" (por omisión: mode,ownership,timestamps)\n"
+" atributos adicionales: links, all\n"
+
+#: src/cp.c:196
+#, fuzzy
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=LISTA_ATTR no conserva los atributos especificados\n"
+" --parents añade el directorio de origen a DIRECTORIO\n"
+" -P lo mismo que `--no-dereference'\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive copia recursivamente, los no directorios "
+"como\n"
+" ficheros\n"
+" --remove-destination borra cada fichero de destino que exista "
+"antes\n"
+" de intentar abrirlo (compárese con --"
+"force).\n"
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --reply={yes,no,query} especifica cómo tratar la pregunta acerca "
+"de\n"
+" un fichero de destino que ya exista\n"
+" --sparse=CUÁNDO controla la creación de ficheros dispersos\n"
+" --strip-trailing-slashes elimina todas las barras finales de cada\n"
+" argumento ORIGEN\n"
+
+#: src/cp.c:210
+#, fuzzy
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link crea enlaces simbólicos en lugar de "
+"copiarlos\n"
+" -S, --suffix=SUFIJO reemplaza el sufijo de respaldo habitual\n"
+" --target-directory=DIRECTORIO mueve todos los argumentos ORIGEN al\n"
+" directorio DIRECTORIO\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update copia solamente cuando el fichero ORIGEN es\n"
+" más moderno que el fichero de destino,\n"
+" o cuando falta el fichero de destino\n"
+" -v, --verbose da detalles sobre lo que se va haciendo\n"
+" -x, --one-file-system permanece en este sistema de ficheros\n"
+
+# ¿"crude" es simple o sencillo?
+#
+# `a lo bruto' o `simple'.
+# Yo prefiero `simple'. ipg
+# - - - - - - - - - - - - - - - - -
+# Nota sobre la traducción de "backup":
+# "backup" es sustantivo y verbo, y tiene dos posibles traducciones.
+#
+# La "verborreica":
+# "backup" -> copia de seguridad
+# "to backup" -> crear una copia de seguridad
+#
+# La "corta":
+# "backup" -> respaldo
+# "to backup" -> respaldar
+# (esta traducción aparece en algún programa de Hewlett Packard).
+#
+# Dado que la "verborreica" queda muy larga (sobre todo cuando es un verbo),
+# he decidido usar unas veces una y otras veces la otra, según el caso.
+#
+# Nota: Los ficheros `sparse' son una especie de
+# ficheros con "huecos" (trozos con muchos ceros seguidos).
+# Parece ser que hay un sistema que se encarga de acordarse
+# en dónde están los huecos para no tener que almacenar tantos bytes. sv+
+#
+# "same as" -> "igual que". "Lo mismo que" no termina de convencerme. tb
+# es que en inglés también hay "equal to". sv
+# Ya. Pero la cuestión no es cómo se dice en inglés, sino cómo se expresa
+# la misma idea en español normalmente. tb
+# Bueno, yo le digo "lo mismo que"... sv
+#
+# -x: tampoco me gusta cómo se explica, aunque en el manual sí que lo deja
+# bien claro... yo lo pondría algo parecido a:
+#
+# "no lee [sobre] más de un sistema de ficheros" o
+# más parecido al manual: "evita subdirectorios en otros sistemas de ficheros"
+# uac
+#
+# La traducción me parece correcta y fiel.
+# Si de verdad te parece que está mal explicado, se lo digo al autor. sv
+#
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"Por omisión, los ficheros ORIGEN `sparse' se detectan mediante una simple\n"
+"heurística y los correspondientes ficheros DESTINO se crean también "
+"`sparse'.\n"
+"Este es el comportamiento con --sparse=auto. Al especificar --sparse=always "
+"se\n"
+"crea un fichero DESTINO `sparse' cuando el fichero ORIGEN contiene una "
+"sucesión\n"
+"de bytes cero suficientemente larga.\n"
+"Utilice --sparse=never para inhibir la creación de ficheros `sparse'.\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"El sufijo de respaldo es `~', a menos que se establezca con --suffix o con\n"
+"SIMPLE_BACKUP_SUFFIX. El método de control de versión se puede seleccionar\n"
+"con la opción --backup o a través de la variable de entorno "
+"VERSION_CONTROL.\n"
+"Estos son los valores:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off nunca realiza copias de seguridad (incluso si se da la\n"
+" opción --backup)\n"
+" numbered, t crea copias de seguridad numeradas\n"
+" existing, nil numeradas si existen copias de seguridad numeradas,\n"
+" simples en caso contrario\n"
+" simple, never siempre crea copias de seguridad simples\n"
+
+# Revisar esto un poco. Especialmente la última línea.
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Como caso especial, cp crea una copia de seguridad de ORIGEN cuando se "
+"utilizan\n"
+"las opciones `force' y `backup', y ORIGEN y DESTINO tienen el mismo nombre "
+"para\n"
+"un nombre de fichero regular existente.\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "fallo al conservar la fecha de %s"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "fallo al conservar los permisos de %s"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "no se puede crear el directorio %s"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s existe pero no es un directorio"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "accediendo a %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, fuzzy, c-format
+msgid "missing file operand"
+msgstr "falta un fichero como argumento"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, fuzzy, c-format
+msgid "missing destination file operand after %s"
+msgstr "falta el fichero de destino"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+
+# FIXME: Falta una coma en el original. sv
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, fuzzy, c-format
+msgid "target %s is not a directory"
+msgstr "el objetivo especificado, %s, no es un directorio"
+
+# Nota: Mejor no traducir "path" y "directory" de la misma forma dentro
+# de la misma frase.
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "cuando se conservan rutas de acceso, el destino debe ser un directorio"
+
+#: src/cp.c:967 src/mv.c:384
+#, fuzzy, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr "la opción --allow-missing está obsoleta; use --retry en su lugar"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, fuzzy, c-format
+msgid "multiple target directories specified"
+msgstr "se han especificado varias ficheros de salida"
+
+# ¿? HARD ¿duro o fuerte?
+#
+# Yo lo dejaría en duro ... (queda más heavy :) ipg
+#
+# Me inclino por fuerte. em
+#
+# ¿bibliografía?
+# (¿en qué libros os basáis?) sv+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "no se puede crear un enlace que sea duro y simbólico al mismo tiempo"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "tipo de respaldo"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "la entrada dejó de existir"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: número de línea fuera de rango"
+
+#: src/csplit.c:709
+#, fuzzy, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: `%s': número de línea fuera de rango"
+
+# ???
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr " repetido %s\n"
+
+#: src/csplit.c:755
+#, fuzzy, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: `%s': ocurrencia no encontrada"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "error en la búsqueda de la expresión regular"
+
+# %s debe de ser un fichero, ¿no? si es así a mí me parece "más natural":
+# "en %s" e incluso quizás "sobre %s"... o quizás no... ahí queda eso
+# Lo cambio em+
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "error al escribir `%s'"
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: se esperaba un número entero después del delimitador"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: se requiere un `}' después del número de repeticiones"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: entre `{' y `}' debe especificarse un número entero"
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: falta el delimitador de cierre `%c'"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: la expresión regular no es válida: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: plantilla inválida"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: el número de línea debe ser mayor que cero"
+
+#: src/csplit.c:1172
+#, fuzzy, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "el número de línea `%s' es menor que el número de línea anterior, %s"
+
+#: src/csplit.c:1178
+#, fuzzy, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "atención: el número de línea `%s' es el mismo que el anterior"
+
+#: src/csplit.c:1231
+#, c-format
+msgid "invalid format width"
+msgstr "formato de ancho inválido"
+
+#: src/csplit.c:1252
+#, c-format
+msgid "invalid format precision"
+msgstr "formato de precisión inválido"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "falta el especificador de conversión en el sufijo"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "el especificador de conversión indicado en el sufijo no es válido: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr ""
+"el especificador de conversión indicado en el sufijo no es válido: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "demasiados especificadores de conversión %% en el sufijo"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "falta el especificador de conversión %% en el sufijo"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: número inválido"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Modo de empleo: %s [OPCIÓN]... FICHERO PLANTILLA...\n"
+
+#: src/csplit.c:1478
+#, fuzzy
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"Escribe los trozos de FICHERO que estén separados por PLANTILLA(s) en "
+"ficheros\n"
+"`xx01', `xx02' y muestra el tamaño de cada trozo en la salida estándar.\n"
+"\n"
+
+#: src/csplit.c:1486
+#, fuzzy, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=FORMATO usa sprintf con FORMATO en vez de %02d\n"
+" -f, --prefix=PREFIJO usa PREFIJO en vez de `xx'\n"
+" -k, --keep-files no borra los ficheros de salida si hay "
+"errores\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=DÍGITOS usa el número especificado de DÍGITOS\n"
+" en vez de 2\n"
+" -s, --quiet, --silent no muestra el tamaño de los ficheros creados\n"
+" -z, --elide-empty-files borra los ficheros de salida vacíos\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"Lee la entrada estándar si FICHERO es `-'. Cada PLANTILLA puede ser:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" NÚMERO_LÍNEA copia a partir de este número de línea excluida ella\n"
+" /EXPREG/[DESPLAZ] copia sin incluir las líneas que coincidan con EXPREG\n"
+" %%EXPREG%%[DESPLAZ] comienza a partir de la línea que coincida con "
+"EXPREG\n"
+" {NÚMERO ENTERO} repite la plantilla especificada un número de veces\n"
+" {*} repite la plantilla especificada todas las veces "
+"posibles\n"
+"\n"
+"Un DESPLAZamiento de línea es un número entero precedido de `+' o de `-'.\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Modo de empleo: %s [OPCIÓN]... [FICHERO]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"Extrae las partes seleccionadas de cada FICHERO en la salida estándar:\n"
+"\n"
+
+#: src/cut.c:199
+#, fuzzy
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=LISTA muestra solamente estos bytes\n"
+" -c, --characters=LISTA muestra solamente estos caracteres\n"
+" -d, --delimiter=DELIM usa DELIM en vez de caracteres de tabulación\n"
+" para delimitar los campos\n"
+
+#: src/cut.c:204
+#, fuzzy
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=LISTA muestra solamente estos campos; también muestra\n"
+" cualquier línea que no tenga un carácter\n"
+" delimitador, a menos que se especifique la\n"
+" opción -s\n"
+" -n (no tiene efecto)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited no muestra las líneas que no contienen\n"
+" delimitadores\n"
+" --output-delimiter=CADENA utiliza CADENA como el delimitador del\n"
+" resultado. Por omisión se utiliza el\n"
+" delimitador de la entrada\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+# Pregunta: ¿por qué se ha eliminado lo de "N-ésimo byte..."? ¿Por espacio?
+# Respuesta: en la posicion N = enésimo em+
+#: src/cut.c:227
+#, fuzzy
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Utilice una y sólo una de las opciones -b, -c ó -f. Cada LISTA se compone\n"
+"de uno o de más rangos separados por comas. Los rangos pueden ser:\n"
+"\n"
+" N El byte, carácter o campo en la posición N contado desde 1\n"
+" N- A partir del byte, carácter o campo en la posición N, hasta el "
+"final\n"
+" de la línea\n"
+" N-M Desde el byte, carácter o campo que ocupa la posición N hasta el de\n"
+" la posición M\n"
+" -M desde el primero hasta el byte, carácter o campo de la posición M\n"
+"\n"
+"Lee la entrada estándar si no se especifica FICHERO o es `-'.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "la lista de bytes o campos no es válida"
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr "el desplazamiento de bytes %s es demasiado grande"
+
+#: src/cut.c:472
+#, c-format
+msgid "field number %s is too large"
+msgstr "el número de campo %s es demasiado grande"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "solamente se puede especificar un tipo de lista"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "el delimitador debe ser un sólo carácter"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "se debe indicar una lista de bytes, caracteres o campos"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr ""
+"sólo se puede especificar un delimitador de entrada cuando se procesan campos"
+
+# FIXME: Comunicar al autor lo de los tabs. sv+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"suprimir las líneas no delimitadas solamente tiene sentido\n"
+"cuando se procesan campos"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "falta la lista de campos"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "falta la lista de posiciones"
+
+# Pongo AA en vez de YY. sv
+# Pongo SS de siglo en vez de CC. sv
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Modo de empleo: %s [OPCIÓN]... [+FORMATO]\n"
+" o bien: %s [-u|--utc|--universal] [MMDDhhmm[[SS]AA][.ss]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+
+#: src/date.c:143
+#, fuzzy
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+" -r, --reference=FICHERO muestra la fecha de última modificación de "
+"FICHERO\n"
+" -R, --rfc-2822 muestra la cadena de fecha que cumple con RFC-"
+"2822\n"
+" -s, --set=CADENA establece la hora descrita por CADENA\n"
+" -u, --utc, --universal muestra o establece el Tiempo Universal "
+"Coordinado\n"
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+#, fuzzy
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"\n"
+"FORMATO controla la salida. La única opción válida para la segunda forma\n"
+"especifica Tiempo Universal Coordinado. Las secuencias interpretadas son:\n"
+"\n"
+" %% un % literal\n"
+" %a el nombre local abreviado de la semana (Dom..Sáb)\n"
+
+#: src/date.c:167
+#, fuzzy
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A el nombre local completo de la semana, de longitud variable\n"
+" (Domingo..Sábado)\n"
+" %b el nombre local abreviado del mes (Ene..Dic)\n"
+" %B el nombre local completo del mes, de longitud variable\n"
+" (Enero..Diciembre)\n"
+" %c la fecha y hora local (Sab Nov 04 12:02:33 EST 1989)\n"
+
+#: src/date.c:173
+#, fuzzy
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C siglo (año dividido por 100 y truncado a entero) [00-99]\n"
+" %d el día del mes (01..31)\n"
+" %D la fecha (mm/dd/aa)\n"
+" %e el día del mes, completado con espacios ( 1..31)\n"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h igual que %b\n"
+" %H la hora (00..23)\n"
+" %I la hora (01..12)\n"
+" %j el día del año (001..366)\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k la hora ( 0..23)\n"
+" %l la hora ( 1..12)\n"
+" %m el mes (01..12)\n"
+" %M los minutos (00..59)\n"
+
+#: src/date.c:196
+#, fuzzy
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+" %n un carácter de nueva línea\n"
+" %N nanosegundos (000000000..999999999)\n"
+" %p AM o PM local en mayúsculas (blanco en muchos locales)\n"
+" %P am o pm local en minúsculas (blanco en muchos locales)\n"
+" %r la hora, en formato de 12 horas (hh:mm:ss [AP]M)\n"
+" %R la hora, en formato de 24 horas (hh:mm:ss [AP]M)\n"
+" %s los segundos desde `00:00:00 1970-01-01 UTC' (una extensión de GNU)\n"
+
+#: src/date.c:205
+#, fuzzy
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+" %S los segundos (00..60); el 60 es necesario para los segundos "
+"intercalares\n"
+" %t un tabulador horizontal\n"
+" %T la hora, en formato de 24 horas (hh:mm:ss)\n"
+" %u día de la semana (1..7); 1 representa lunes\n"
+
+# ¿Es realmente correcta la W? Casi coincide con %V
+#: src/date.c:211
+#, fuzzy
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U el número de la semana del año con Domingo como primer día de la\n"
+" semana (00..53)\n"
+" %V el número de la semana del año con Lunes como primer día de la\n"
+" semana (01..53)\n"
+" %w el día de la semana (0..6); 0 representa Domingo\n"
+" %W el número de la semana en el año con lunes como primer día de\n"
+" la semana (00..53)\n"
+
+#: src/date.c:217
+#, fuzzy
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x la representación local de la fecha (dd/mm/aa)\n"
+" %X la representación local de la hora (%H:%M:%S)\n"
+" %y los últimos dos dígitos del año (00..99)\n"
+" %Y el año (1970...)\n"
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "entrada estándar"
+
+#: src/date.c:297 src/date.c:517
+#, fuzzy, c-format
+msgid "invalid date %s"
+msgstr "fecha inválida `%s'"
+
+#: src/date.c:408 src/date.c:442
+#, fuzzy, c-format
+msgid "multiple output formats specified"
+msgstr "se han especificado varias ficheros de salida"
+
+# Cualquier cosa menos poner "fechas a imprimir".
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "las opciones para especificar la fecha son mutuamente excluyentes"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr ""
+"las opciones para mostrar y establecer la hora no se pueden utilizar a la vez"
+
+#: src/date.c:448
+#, fuzzy, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"el argumento `%s' carece del signo `+' inicial;\n"
+"cuando se utiliza una opción para especificar fecha(s), cualquier argumento\n"
+"que no sea una opción debe ser una cadena de formato que comience con `+'."
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "no se puede establecer la fecha"
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "la fecha %s está fuera de rango"
+
+#: src/dd.c:404
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Modo de empleo: %s [CADENA]...\n"
+" o bien: %s OPCIÓN\n"
+
+#: src/dd.c:409
+#, fuzzy
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"Copia un fichero, convirtiendo y dándole formato de acuerdo con las "
+"opciones.\n"
+"\n"
+" bs=BYTES establece ibs=BYTES y obs=BYTES\n"
+" cbs=BYTES convierte BYTES bytes cada vez\n"
+" conv=PALABRAS convierte el fichero según la lista de palabras clave\n"
+" separadas por comas\n"
+" count=BLOQUES copia solamente BLOQUES bloques de entrada\n"
+" ibs=BYTES lee BYTES bytes cada vez\n"
+
+#: src/dd.c:418
+#, fuzzy
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=FICHERO lee del FICHERO en lugar de la entrada estándar (stdin)\n"
+" obs=BYTES escribe BYTES bytes cada vez\n"
+" of=FICHERO escribe en FICHERO en lugar de la salida estándar\n"
+" seek=BLOQUES se salta BLOQUES bloques de tamaño obs al comienzo del\n"
+" resultado\n"
+" skip=BLOQUES se salta BLOQUES bloques de tamaño ibs al comienzo de la\n"
+" entrada\n"
+
+#: src/dd.c:428
+#, fuzzy
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"BLOQUES y BYTES pueden estar seguidos por los siguientes sufijos\n"
+"multiplicativos:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, y así sucesivamente para T, P, E, Z, "
+"Y.\n"
+"Cada PALABRA puede ser:\n"
+"\n"
+
+#: src/dd.c:437
+#, fuzzy
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii de EBCDIC a ASCII\n"
+" ebcdic de ASCII a EBCDIC\n"
+" ibm de ASCII a EBCDIC alternado\n"
+" block rellena los registros terminados en nueva línea con espacios "
+"hasta\n"
+" el tamaño de cbs\n"
+" unblock sustituye los espacios que sobran en los registros de tamaño "
+"cbs\n"
+" con un carácter de nueva línea\n"
+" lcase cambia las mayúsculas a minúsculas\n"
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "%s: el directorio objetivo especificado no es un directorio"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+"\n"
+"Tenga en cuenta que enviar la señal SIGUSR1 a un proceso `dd' en marcha\n"
+"hace que muestre en la salida de error estándar el número de registros\n"
+"leídos y escritos hasta el momento, y luego continúa con la copia.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -USR1 $pid; sleep 1; kill $pid\n"
+" 10899206+0 registros leídos\n"
+" 10899206+0 registros escritos\n"
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "registro truncado"
+msgstr[1] "registro truncado"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr ""
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ""
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "cerrando el fichero de entrada %s"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "cerrando el fichero de salida %s"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "escribiendo en %s"
+
+#: src/dd.c:886
+#, fuzzy, c-format
+msgid "unrecognized operand %s"
+msgstr "opción no reconocida %s"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "conversión inválida: %s"
+
+#: src/dd.c:900
+#, fuzzy, c-format
+msgid "invalid input flag: %s"
+msgstr "ancho inválido: %s"
+
+#: src/dd.c:903
+#, fuzzy, c-format
+msgid "invalid output flag: %s"
+msgstr "nombre de grupo inválido %s"
+
+#: src/dd.c:906
+#, fuzzy, c-format
+msgid "invalid status flag: %s"
+msgstr "formato de fecha inválido %s"
+
+#: src/dd.c:942
+#, fuzzy, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "opción no reconocida %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "número inválido %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#: src/dd.c:973
+#, fuzzy, c-format
+msgid "cannot combine block and unblock"
+msgstr "no se puede omitir tanto el usuario como el grupo"
+
+# Lo mismo de antes.
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "no se pueden comparar los nombres de fichero %s y %s"
+
+#: src/dd.c:977
+#, fuzzy, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "no se puede combinar la señal con -l o -t"
+
+# Se admiten sugerencias.
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"atención: solucionando provisionalmente un bicho del núcleo\n"
+"relacionado con lseek para el fichero (%s) de mt_type=0x%0lx;\n"
+"consulte la lista de tipos en <sys/mtio.h>"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, fuzzy, c-format
+msgid "%s: cannot seek"
+msgstr "%s: no se puede borrar"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "atención: ancho %lu inválido; se usará %d en su lugar"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr ""
+
+#: src/dd.c:1376
+#, fuzzy, c-format
+msgid "setting flags for %s"
+msgstr "estableciendo la fecha de %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr ""
+
+#: src/dd.c:1623
+#, fuzzy, c-format
+msgid "fsync failed for %s"
+msgstr "No se puede abrir %s"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "abriendo %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, fuzzy, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "avanzando %s bytes pasados en el fichero de salida %s"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "S.ficheros Tipo"
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "S.ficheros "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " Nodos-i NUsados NLibres NUso%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Tamaño Usado Disp Uso%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Tamaño Usado Disp Uso%%"
+
+# Nota: %-4s es para que justifique a la izquierda.
+# El espacio inicial es necesario para que la palabra Bloques no aparezca
+# pegada a la palabra Tipo cuando se usa df -T.
+#: src/df.c:165
+#, fuzzy, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " Bloques de %-4s Usado Dispon Ocupado"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " Bloques de %-4s Usado Dispon Uso%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Montado en\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "no se puede obtener el directorio actual"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "no se puede cambiar al directorio %s"
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "no se puede efectuar `stat' sobre el directorio actual (ahora %s)"
+
+#: src/df.c:741
+#, fuzzy
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"Muestra información sobre el sistema de ficheros en el que reside cada "
+"FICHERO,\n"
+"o por omisión sobre todos los sistemas de ficheros.\n"
+"\n"
+
+#: src/df.c:749
+#, fuzzy
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all incluye los sistemas de ficheros con 0 bloques\n"
+" -B, --block-size=TAM utiliza bloques de TAM bytes\n"
+" -h, --human-readable imprime los tamaños en formato legible (p.e. 1K 234M "
+"2G)\n"
+" -H, --si análogo, pero utiliza potencias de 1000 y no de 1024\n"
+
+#: src/df.c:755
+#, fuzzy
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes muestra la información de nodos-i en lugar del uso\n"
+" de bloques\n"
+" -k como --block-size=1K\n"
+" -l, --local limita el listado a los sistemas de ficheros "
+"locales\n"
+" --no-sync no llama a sync antes de obtener el modo de empleo\n"
+" (por defecto)\n"
+
+#: src/df.c:761
+#, fuzzy
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability utiliza el formato POSIX para el resultado\n"
+" --sync llama a sync antes de obtener el modo de empleo\n"
+" -t, --type=TIPO restringe el listado a sistemas de ficheros de tipo "
+"TIPO\n"
+" -T, --print-type muestra el tipo del sistema de ficheros\n"
+" -x, --exclude-type=TIPO restringe el listado a los sistemas de ficheros "
+"que\n"
+" no son del tipo TIPO\n"
+" -v (no tiene efecto)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"TAMAÑO puede ser (o puede ser un entero seguido opcionalmente por) uno\n"
+"de los siguientes: kB 1000, K 1024, MB 1000*1000, M 1024*1024, y así\n"
+"en adelante para G, T, P, E, Z, Y.\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, fuzzy, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr "la opción --allow-missing está obsoleta; use --retry en su lugar"
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "el sistema de ficheros %s está simultánemente seleccionado y excluido"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Atención: "
+
+#: src/df.c:943
+#, fuzzy, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%sno se puede leer la tabla de sistemas de ficheros montados"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Modo de empleo: %s [OPCIÓN]... [FICHERO]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Produce órdenes para establecer la variable de entorno LS_COLORS.\n"
+"\n"
+"Para determinar el formato del resultado:\n"
+" -b, --sh, --bourne-shell produce código en Bourne shell para\n"
+" establecer LS_COLORS\n"
+" -c, --csh, --c-shell produce código en C-shell para\n"
+" establecer LS_COLORS\n"
+" -p, --print-database muestra los valores por defecto\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"Si se especifica FICHERO, se lee para determinar qué colores usar para "
+"cuáles\n"
+"tipos de ficheros y extensiones. En caso contrario, se utiliza una base de\n"
+"datos precompilada. Para más información acerca del formato de estos "
+"ficheros,\n"
+"ejecute `dircolors --print-database'.\n"
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s:%lu: línea inválida; falta el segundo elemento"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu: palabra clave no reconocida %s"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<interno>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"las opciones para mostrar la base de datos interna de dircolors y\n"
+"para seleccionar una sintaxis para el shell son mutuamente excluyentes"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr ""
+"no hay variable de entorno SHELL, y no se ha especificado la opción\n"
+"del tipo de shell"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Modo de empleo: %s NOMBRE\n"
+" o bien: %s OPCIÓN\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"Muestra NOMBRE con sus /componentes finales eliminados; si NOMBRE no tiene\n"
+"/'s, el resultado es `.' (representando el directorio actual).\n"
+"\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#: src/du.c:279 src/wc.c:108
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Modo de empleo: %s [OPCIÓN]... GRUPO FICHERO...\n"
+" o bien: %s [OPCIÓN]... --reference=FICHERO-R FICHERO...\n"
+
+# La palabra "desreferencia" es horrenda. Dudo incluso de que exista.
+# ¿Sugerencias?
+# "Deja de referenciar", "Elimina referencia/s a" (Sólo es sugerencia) tb
+# La consevaremos, a ver si junto varias. sv
+#
+# ¿Por qué no algo tan simple y comprensible como "no hace referencia a"? uac
+#
+# Lo pensaré despacito. sv
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"Muestra un resumen del uso de disco para cada FICHERO, recursivamente para\n"
+"directorios.\n"
+"\n"
+
+#: src/du.c:290
+#, fuzzy
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+" -a, --all muestra resultados para todos los ficheros, no sólo\n"
+" para los directorios\n"
+" --apparent-size muestra los tamaños aparentes, en lugar del uso de\n"
+" disco; el tamaño aparente es normalmente más "
+"pequeño,\n"
+" puede ser más grande debido a agujeros en "
+"ficheros\n"
+" dispersos, fragmentación interna, etc.\n"
+" -B, --block-size=TAM utiliza bloques de TAM bytes\n"
+" -b, --bytes equivalente a `--apparent-size --block-size=1'\n"
+" -c, --total produce un \"total\"\n"
+" -D, --dereference-args desreferencia los FICHEROs que son enlaces "
+"simbólicos\n"
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+# prefiero enlaces duros a fuertes em
+#
+# En esto no os ponéis de acuerdo.
+# Creo que lo acabaremos preguntando en "spanglish". sv+
+#: src/du.c:303
+#, fuzzy
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+" -H como --si, pero además da un aviso; dentro de poco\n"
+" cambiará para ser equivalente a --dereference-args (-"
+"D)\n"
+" -h, --human-readable muestra los tamaños de forma legible\n"
+" (p.ej., 1K 234M 2G)\n"
+" --si como -h, pero utiliza potencias de 1000 y no de "
+"1024\n"
+" -k como --block-size=1K\n"
+" -l, --count-links cuenta los tamaños varias veces si hay enlaces "
+"fuertes\n"
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference desreferencia todos los enlaces simbólicos\n"
+" -P, --no-dereference no sigue ningún enlace simbólico (predeterminado)\n"
+" -0, --null termina cada línea por un byte 0 en vez de nueva "
+"línea\n"
+" -S, --separate-dirs no incluye el tamaño de los subdirectorios\n"
+" -s, --summarize muestra solamente un total para cada argumento\n"
+
+#: src/du.c:323
+#, fuzzy
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system se salta los directorios de otros sistemas de "
+"ficheros\n"
+" -X FICH, --exclude-from=FICH Excluye los ficheros que coinciden con\n"
+" cualquier patrón en FICH.\n"
+" --exclude=PATRÓN Excluye los ficheros que coinciden con PATRÓN.\n"
+" --max-depth=N muestra el total para un directorio (o fichero,\n"
+" con --all) solamente si está N o menos niveles por\n"
+" debajo del argumento de la línea de órdenes;\n"
+" --max-depth=0 es lo mismo que --summarize\n"
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "total"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+"ATENCIÓN: Utilice --si, no -H; el significado de la opción -H cambiará\n"
+"pronto y será el mismo que el de --dereference-args (-D)"
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "profundidad máxima inválida %s"
+
+#: src/du.c:789
+#, fuzzy, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr "la opción --allow-missing está obsoleta; use --retry en su lugar"
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "no se puede al mismo tiempo resumir y mostrar todas las entradas"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "atención: resumir es lo mismo que usar --max-depth=0"
+
+#: src/du.c:884
+#, fuzzy, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "atención: resumir entra en conflicto con --max-depth=%d"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+# Lo mismo de antes.
+#: src/du.c:960 src/wc.c:662
+#, fuzzy, c-format
+msgid "cannot read file names from %s"
+msgstr "no se pueden comparar los nombres de fichero %s y %s"
+
+#: src/du.c:1000 src/du.c:1003
+#, fuzzy
+msgid "invalid zero-length file name"
+msgstr "nombre de grupo inválido %s"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Modo de empleo: %s [OPCIÓN]... [CADENA]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+# alerta (BEL) -> pitido audible (BEL) em+
+# Vale que no es alerta, pero yo creo que debería ser campana. sv+
+#
+#: src/echo.c:80
+#, fuzzy
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"Sin -E, las siguientes secuencias son reconocidas e intercaladas:\n"
+"\n"
+" \\NNN el carácter cuyo código es NNN (octal)\n"
+" \\\\ barra invertida\n"
+" \\a campana (BEL)\n"
+" \\b retroceso\n"
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c suprime los caracteres de nueva línea finales\n"
+" \\f avance de página (form feed)\n"
+" \\n nueva línea\n"
+" \\r retorno de carro\n"
+" \\t tabulador horizontal\n"
+" \\v tabulador vertical\n"
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr ""
+"Modo de empleo: %s [OPCIÓN]... [-] [NOMBRE=VALOR]... [ORDEN [ARGUMENTO]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Asigna a cada NOMBRE el VALOR en el entorno y ejecuta ORDEN.\n"
+"\n"
+" -i, --ignore-environment comienza con un entorno vacío\n"
+" -u, --unset=NOMBRE borra la variable del entorno\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"Un simple - implica -i. Si no hay ORDEN, muestra el entorno resultante.\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Convierte las tabulaciones de cada FICHERO en espacios, escribiendo el\n"
+"resultado en la salida estándar. Si no se especifica FICHERO o FICHERO\n"
+"es `-', lee la entrada estándar.\n"
+"\n"
+
+#: src/expand.c:123
+#, fuzzy
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial sólo convierte las tabulaciones iniciales de cada "
+"línea\n"
+" -t, --tabs=NÚMERO usa N espacios en cada tabulación, en vez de 8\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+" -t, --tabs=LISTA usa la LISTA de posiciones separadas por comas para\n"
+" definir las posiciones de tabulación\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr "la parada de tabulación es demasiado grande %s"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "el tamaño de tabulación contiene uno o varios caracteres inválidos: %s"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "el tamaño de tabulación no puede ser 0"
+
+# ??? Mejor que el original, lo estoy dejando :-)
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "las posiciones de tabulación deben ir en orden creciente"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, fuzzy, c-format
+msgid "input line is too long"
+msgstr "Nombre de grupo demasiado largo"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Modo de empleo: %s EXPRESIÓN\n"
+" o bien: %s OPCIÓN\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"\n"
+"Muestra el valor de la EXPRESIÓN en la salida estándar. Una línea en blanco\n"
+"debajo separa los grupos de prioridad creciente. La EXPRESIÓN puede ser:\n"
+"\n"
+" ARG1 | ARG2 ARG1 si no es nulo ni 0, de otra manera ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 si ningún argumento es nulo o 0, de otra manera 0\n"
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"\n"
+" ARG1 < ARG2 ARG1 es menor que ARG2\n"
+" ARG1 <= ARG2 ARG1 es menor o igual que ARG2\n"
+" ARG1 = ARG2 ARG1 es igual a ARG2\n"
+" ARG1 != ARG2 ARG1 es distinto de ARG2\n"
+" ARG1 >= ARG2 ARG1 es mayor o igual que ARG2\n"
+" ARG1 > ARG2 ARG1 es mayor que ARG2\n"
+"\n"
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+"\n"
+" ARG1 + ARG2 suma aritmética de ARG1 y ARG2\n"
+" ARG1 - ARG2 diferencia aritmética de ARG1 y ARG2\n"
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+"\n"
+" ARG1 * ARG2 producto aritmético de ARG1 y ARG2\n"
+" ARG1 / ARG2 cociente aritmético de ARG1 dividido entre ARG2\n"
+" ARG1 % ARG2 residuo aritmético de ARG1 dividido entre ARG2\n"
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"\n"
+" CADENA : EXPREG búsqueda de expresiones regulares REGEXP en CADENA\n"
+"\n"
+" match CADENA EXPREG igual que CADENA : EXPREG\n"
+" substr CADENA POS LONG subcadena de CADENA, POS se cuenta partiendo de "
+"1\n"
+" index CADENA CARacteres índice en CADENA donde cualquier CARácter es\n"
+" encontrado, ó 0\n"
+" length CADENA longitud de CADENA\n"
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+" + TOKEN interpreta TOKEN como una cadena, incluso si "
+"es\n"
+" una palabra clave como `match' o un operador\n"
+" como `/'\n"
+"\n"
+" ( EXPRESIÓN ) valor de EXPRESIÓN\n"
+
+# Aquí no estoy muy conforme con quoted -> colocado entre comillas
+# ¿Acaso no sería mejor comentado? cfuga
+# Bueno, realmente sería "citado". Comentado se aplica más bien a estas
+# líneas que tienen un "#" al principio.
+# me parece mejor lo que hay ahora que comentado. sv
+# Sugerencia: emparejada -> que coincide con. cfuga
+# Por mí, bien. Se trata de "string matching", es decir que una cadena
+# coincide (en el sentido de que "encaja") con una determinada expresión
+# regular. Lo de match-emparejada lo solemos usar para llaves o comillas
+# que deben estar por parejas (una al principio y otra al final). sv
+#
+# ¿¿Escapados?? = colocados entre secuencias de escape.
+# No sería exacto, porque así das a entender que debe haber una secuencia
+# de escape antes y otra después.
+#
+# ¿No habría que poner "shell" entre comillas: `shell', ya que no lo
+# traducimos por "concha" (para los argentinos y otros: xoxo) ni
+# "caparazón" o "envoltorio"? (Conste que he visto estas palabras en
+# libros) Ya que es una palabra inglesa con traducción española, si
+# bien algo inconveniente quizá. gerardo
+# Es un neologismo. Creo que en español lo mejor es llamarle también shell.
+# No conozco ninguna traducción que haya prosperado.
+# Piensa en que tampoco ponemos entre comillas hardware ni software. sv
+# Es distinto. Las traducciones de hardware ("cacharrería") y
+# software ("logical") son demasiado forzadas. No hay traducción
+# aceptable. De "shell" sí hay, aunque la verdad es que a mí no me
+# gustan tampoco. En fin, tú mandas. Aquí me rindo. gerardo
+# Gracias. Si se te ocurre alguna ingeniosa traducción de shell, que nos
+# guste a los dos, *y que estés dispuesta a usarla en tu lenguaje cotidiano*
+# me avisas. No creo que suceda. sv
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"Advierta que muchos operadores necesitan ser escritos con secuencias de "
+"escape\n"
+"o encerrados entre comillas para los shells.\n"
+"Las comparaciones son aritméticas si ambos ARGs son números, de otra manera\n"
+"son lexicográficas.\n"
+"Las coincidencias de expresiones regulares devuelven la cadena emparejada\n"
+"entre \\( y \\) o nulo; si no se utilizan \\( y \\), devuelven el número de\n"
+"caracteres coincidentes ó 0.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "error de sintaxis"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "error en la búsqueda de la expresión regular"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "argumento no numérico"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "división por cero"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Modo de empleo: %s [NÚMERO]...\n"
+" o bien: %s OPCIÓN\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"Muestra los factores de cada NÚMERO.\n"
+"\n"
+
+#: src/factor.c:85
+#, fuzzy
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+" Muestra los factores primos de cada NÚMERO entero especificado. Si\n"
+" no se especifican argumentos en la línea de órdenes, se leen de la\n"
+" entrada estándar.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s es demasiado grande"
+
+#: src/factor.c:158
+#, fuzzy, c-format
+msgid "%s is not a valid positive integer"
+msgstr "`%s' no es un entero positivo válido"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Modo de empleo: %s [-DÍGITOS] [OPCIÓN]... [FICHERO]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"Reformatea cada párrafo de FICHERO(s), escribiendo en la salida estándar.\n"
+"Si no se especifica FICHERO o FICHERO es `-', lee la entrada estándar.\n"
+"\n"
+
+#: src/fmt.c:282
+#, fuzzy
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin mantiene la sangría en las dos primeras líneas\n"
+" -p, --prefix=CADENA junta sólo las líneas que comiencen con CADENA\n"
+" -s, --split-only divide las líneas largas de manera que quepan\n"
+" en el ancho especificado, pero no junta líneas\n"
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph establece la sangría de la primera línea "
+"diferente\n"
+" de la segunda línea\n"
+" -u, --uniform-spacing pone un espacio entre palabras, dos entre "
+"frases\n"
+" -w, --width=ANCHO establece el ancho de línea máximo (por "
+"defecto,\n"
+" 75 columnas)\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+"opción inválida -- %c; -ANCHO solamente se reconoce cuando es la primera\n"
+"opción; utilice -w N en su lugar"
+
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr "ancho inválido: %s"
+
+# Sugerencia: "Ajusta ... de cada FICHERO, o de la entrada ..." sv
+# A mí me gusta como está. ipg
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"Ajusta el ancho de las líneas en cada FICHERO (por omisión la entrada\n"
+"estándar), y escribe el resultado en la salida estándar\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes cuenta bytes en vez de columnas\n"
+" -s, --spaces corta la línea por los espacios\n"
+" -w, --width=ANCHO utiliza ANCHO columnas en vez de 80\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "el número de columnas no es válido `%s'"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Muestra las primeras 10 líneas de cada FICHERO en la salida estándar.\n"
+"Si se especifican varios FICHERO(s), se muestra el nombre de cada uno.\n"
+"Si no se especifica FICHERO o FICHERO es `-', lee la entrada estándar.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+" -c, --bytes=[-]N muestra los primeros N bytes de cada fichero;\n"
+" con el `-' inicial, muestra todos menos los\n"
+" últimos N bytes de cada fichero\n"
+" -n, --lines=[-]M muestra las primeras N líneas en lugar de las\n"
+" primeras 10; con el `-' inicial, muestra todas\n"
+" menos las últimas N líneas de cada fichero\n"
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent no muestra las cabeceras con el nombre del "
+"fichero\n"
+" -v, --verbose muestra siempre las cabeceras con el nombre del\n"
+" fichero\n"
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"N puede tener un sufijo multiplicador: b 512, k 1024, m 1024*1024.\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "error al leer %s"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "error al escribir en %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr "%s: el fichero ha encogido demasiado"
+
+#: src/head.c:230 src/head.c:1046
+#, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s: el número de bytes es demasiado grande"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: no se puede efectuar `lseek' hasta la posición original"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: no se puede desplazar a la posición %s"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "no se puede reposicionar el puntero a fichero para %s"
+
+# Eso de "representable" no me suena muy bien, ¿podrías explicar a qué se
+# refiere?, incluso me parecen dos mensajes distintos...
+#
+# Pues un número, es un concepto abstracto, y su representación son
+# cosas como 1, 2 3i em+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s es tan grande que no es representable"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "número de líneas"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "número de bytes"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "el número de líneas no es válido"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "el número de bytes no es válido"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "opción inválida -- %c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Modo de empleo: %s\n"
+" o bien: %s OPCIÓN\n"
+"Muestra el identificador numérico (en hexadecimal) del `host' actual.\n"
+"\n"
+
+# Host = huésped (vale, vale, no me peguéi má, me retracto, ab
+# renuncio: gerardo :-)
+#
+# Pues no te lo vas a creer, pero en el libro de Infovía de Telefónica
+# ponen anfitrión y se quedan tan anchos.
+# Esto no lo tengo claro del todo todavía. sv
+#
+# ¿Y por qué no? "Huésped" en español se refiere tanto al hospedador
+# como al hospedado. En nuestro caso "host" es el ordenador u/o/y
+# cacharro informático que hospeda en su seno un servicio, programa o
+# lo que sea. El anfitrión, para distinguir. Como he dicho otras
+# veces, "los angloparlantes dicen _anfitrión_ o _huésped_ en su
+# idioma. ¿Por qué nosotros no en el nuestro?"
+# gerardo
+#
+# ¿Porque siempre dudamos entre anfitrión o huésped?
+# (Como el asno de Buridán)
+# ¿O tal vez porque nadie se ha atrevido jamás?
+# A mí me da miedo ser el primero. sv
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Modo de empleo: %s [NOMBRE]\n"
+" o bien: %s OPCIÓN\n"
+"Muestra o establece el nombre del `host' del sistema actual.\n"
+"\n"
+
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "no se puede establecer el nombre del `host' en `%s'"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+"no se puede cambiar el nombre de `host'; este sistema carece de esa capacidad"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "no se puede determinar el nombre del `host'"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Modo de empleo: %s [OPCIÓN]... [USUARIO]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Muestra información del USUARIO, o del usuario actual.\n"
+" -a sin efecto, para compatibilidad con otras versiones\n"
+" -g, --group muestra sólo el ID de grupo\n"
+" -G, --groups muestra sólo los grupos suplementarios\n"
+" -n, --name muestra un nombre en lugar de un número, para -ugG\n"
+" -r, --real muestra el ID real en lugar del ID efectivo, para -ugG\n"
+" -u, --user muestra sólo el ID del usuario\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"Sin ninguna OPCIÓN, muestra un conjunto útil de información sobre la "
+"identidad.\n"
+
+# No se puedeN imprimir ... en plural, que son varias cosas las que no
+# se pueden imprimir. gerardo
+# Precisamente, lo que dice el mensaje es que es una sola cosa
+# la que se imprime, sin quedar claro cuál de las dos (usuario o grupo)
+# es esa única cosa. sv
+# En cualquier caso, el "no se puede" se refiere a un *hecho*:
+# "imprimir solamente el usuario y solamente el grupo" sv
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "no se puede imprimir solamente el usuario y solamente el grupo"
+
+# Cambio un poco este mensaje. Si el anterior habla en singular, prefiero
+# que este también lo haga. Después de todo la orden id solamente
+# acepta un usuario.
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr ""
+"no se puede imprimir solamente el nombre o el ID real en el formato\n"
+"predeterminado"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: No existe ese usuario"
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "no se puede encontrar el nombre para el usuario con ID %u"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "no se puede encontrar el nombre para el grupo con ID %u"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "no se puede obtener la lista de grupos suplementarios"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " grupos="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr "la opción strip no se puede usar cuando se instala un directorio"
+
+#: src/install.c:321
+#, fuzzy, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "la opción strip no se puede usar cuando se instala un directorio"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "modo inválido %s"
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "no se puede cambiar el propietario de %s"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "no se puede establecer la fecha de %s"
+
+# Esta generó en su día una gran discusión, pues el original no era tan
+# explicativo. Finalmente, el autor (Jim Meyering) accedió amablemente a
+# cambiar el msgid original a como está ahora.
+# (Antes decía simplemente "cannot fork").
+# Gracias a este cambio, tanto el original como la traducción son claros
+# y precisos, pero sin llegar a ser verborreicos.
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "falló la llamada al sistema `fork'"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "no se puede ejecutar strip"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "escribiendo en %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "usuario inválido %s"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "creando el directorio %s"
+
+#: src/install.c:651
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Modo de empleo: %s [OPCIÓN]... ORIGEN DESTINO\n"
+" o bien: %s [OPCIÓN]... ORIGEN... DIRECTORIO\n"
+" o bien: %s [OPCIÓN]... --target-directory=DIRECTORIO ORIGEN...\n"
+
+#: src/install.c:658
+#, fuzzy
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"En las dos primeras formas, copia ORIGEN a DESTINO o varios ORIGEN(es) al\n"
+"DIRECTORIO existente, mientras se establecen los permisos y el\n"
+"propietario/grupo. En la tercera forma, crea todos los componentes\n"
+"del/de los DIRECTORIO(s) dado(s).\n"
+"\n"
+
+#: src/install.c:667
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup[=CONTROL] crea una copia de seguridad de cada fichero de\n"
+" destino que exista\n"
+" -b como --backup pero no acepta ningún argumento\n"
+" -c (sin efecto)\n"
+" -d, --directory trata todos los argumentos como nombres de "
+"directorios\n"
+" crea todos los componentes de los directorios\n"
+" especificados\n"
+
+# FIXME: El "create all" está un poco descolocado.
+#
+# "given DIRECTORY" -> "DIRECTORIO que se indica" o "indicado" tb
+# Bueno, dejaré la sugerencia. Me gusta más "dado" porque es más corto
+# y si no tendría que usar otra línea más. sv
+#
+# Estoy con tb, creo que "indicado" explica mejor... uac
+# Lo pensaré. ¿Alguien más? sv
+#: src/install.c:674
+#, fuzzy
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D crea todos los componentes iniciales de DESTINO\n"
+" excepto el último, y entonces copia ORIGEN a "
+"DESTINO\n"
+" útil en la 1ª forma\n"
+" -g, --group=GRUPO establece la propiedad de grupo, en lugar del "
+"grupo\n"
+" actual del proceso\n"
+" -m, --mode=MODO establece los permisos (como en chmod), en lugar\n"
+" de rwxr-xr-x\n"
+" -o, --owner=PROPIETARIO establece la propiedad (sólo superusuario)\n"
+
+#: src/install.c:681
+#, fuzzy
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps aplica las fechas de acceso/modificación de los\n"
+" ficheros ORIGEN a los ficheros de destino\n"
+" correspondientes\n"
+" -s, --strip elimina las tablas de símbolos, sólo para las\n"
+" formas 1ª y 2ª\n"
+" -v, --verbose muestra el nombre de cada directorio conforme se\n"
+" van creando\n"
+" -S, --suffix=SUFIJO reemplaza el sufijo de respaldo habitual\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"El sufijo de respaldo es `~', a menos que se establezca con --suffix o con\n"
+"SIMPLE_BACKUP_SUFFIX. El método de control de versión se puede seleccionar\n"
+"con la opción --backup o a través de la variable de entorno "
+"VERSION_CONTROL.\n"
+"Estos son los valores:\n"
+"\n"
+
+# Sugerencia: no los dos a la vez -> pero no ambos. sv
+# ¿Pero no ambos a la vez? em
+# Eso es repetir el "both". sv
+# En lugar de `no los dos a la vez' ¿`nunca los dos a la vez'? ipg
+# Eso está mucho mejor em
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"Muestra una línea en la salida estándar por cada par de líneas que "
+"contengan\n"
+"campos idénticos. El campo a comparar por defecto es el primero, delimitado\n"
+"por un espacio en blanco. Si FICHERO1 o FICHERO2 es `-' (nunca dos a la "
+"vez),\n"
+"lee la entrada estándar.\n"
+"\n"
+" -a NUMFICH muestra una línea por cada línea no emparejable del\n"
+" fichero NUMFICH, donde NUMFICH es 1 o 2, "
+"correspondiendo\n"
+" a FICHERO1 o FICHERO2\n"
+" -e VACÍO reemplaza los campos inexistentes por VACÍO\n"
+
+#: src/join.c:147
+#, fuzzy
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case no atiende a las diferencias entre mayúsculas y "
+"minúsculas\n"
+" -j CAMPO equivalente a '-1 CAMPO -2 CAMPO'\n"
+" -o FORMATO utiliza FORMATO para mostrar las líneas de salida\n"
+" -t CARÁCTER Usa CARÁCTER como delimitador de campos, en la entrada y "
+"en\n"
+" la salida\n"
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v NUMFICH Como -a NUMFICH, pero no muestra las líneas emparejadas\n"
+" -1 CAMPO usa este campo del fichero 1\n"
+" -2 CAMPO usa este campo del fichero 2\n"
+
+# Creo que "si no, los campos se separan con CARÁCTER" es redundante,
+# por supuesto al igual que en la versión english.
+#: src/join.c:160
+#, fuzzy
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"A menos que se especifique -t CARÁCTER, los espacios en blanco separan "
+"campos\n"
+"y son pasados por alto, si no, los campos se separan con CARÁCTER. CAMPO es "
+"el\n"
+"número de campo contado a partir de 1. FORMATO es una lista de elementos de "
+"la\n"
+"forma `NUMFICH.CAMPO' ó `0', separada por comas o por espacios en blanco. "
+"El\n"
+"FORMATO por defecto muestra el campo que empareja, los restantes campos de\n"
+"FICHERO1 y los de FICHERO2, todos separados por CARÁCTER.\n"
+"\n"
+"Importante: FICHERO1 y FICHERO2 deben estar ordenados en los campos de "
+"unión\n"
+
+#: src/join.c:617 src/join.c:812
+#, c-format
+msgid "invalid field number: %s"
+msgstr "número de campo inválido: %s"
+
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "la especificación del campo no es válida: `%s'"
+
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "número de fichero inválido en la especificación del campo: `%s'"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr "tabulación vacía"
+
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "tab multicarácter `%s'"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr "tabulaciones incompatibles"
+
+# Me refiero a que si sabe la causa exacta del error, ¿por qué ofrece
+# el error de sistema: "No such device"?
+# ¿¿Acaso hay sistemas con stdin1 y stdin2?? :-)
+#
+# Eso es lo de menos :) em+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "los dos ficheros no pueden ser a la vez la entrada estándar"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"Modo de empleo: %s [-s SEÑAL | -SEÑAL ] PID...\n"
+" o bien: %s -l [SEÑAL]...\n"
+" o bien: %s -t [SEÑAL]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+"Envía señales a los procesos, o lista señales.\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+" -s, --signal=SEÑAL, -SEÑAL \n"
+" especifica el nombre o ek número de la señal que se "
+"enviará\n"
+" -l, --list lista los nombres de las señales, o convierte nombres "
+"de\n"
+" señales en números o viceversa\n"
+" -t, --table muestra una tabla de información sobre señales\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+"\n"
+"SEÑAL puede ser un nombre de señal como `HUP', o un número de señal como "
+"`1',\n"
+"o un estado de salida de un proceso terminado por una señal.\n"
+"PID es un entero; si es negativo identifica al grupo de un proceso.\n"
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: señal inválida"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: identificador de proceso inválido"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "opción inválida -- %c"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: se han especificado varias señales"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "se han especificado varias opciones -l o -t"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "no se puede combinar la señal con -l o -t"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr "no se ha especificado ningún ID de proceso"
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Modo de empleo: %s FICHERO1 FICHERO2\n"
+" o bien: %s OPCIÓN\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+"Llama a la función link para crear un enlace llamado FICHERO2 a un FICHERO1\n"
+"que ya exista.\n"
+"\n"
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "no se puede crear el enlace duro %s a %s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+"%s: atención: crear un enlace duro a un enlace simbólico\n"
+"no es transportable"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: no se permiten enlaces fuertes para directorios"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: no se puede sobreescribir un directorio"
+
+# SIoNO
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: ¿reemplazar %s? (s/n) "
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "creando el enlace simbólico %s a %s"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "creando el enlace simbólico %s a %s"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "creando el enlace duro %s a %s"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "creando el enlace duro %s a %s"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "creando el enlace duro %s a %s"
+
+# Aprovecho que en iso-8859-1 existen 1º y 1ª ...
+#: src/ln.c:324
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Modo de empleo: %s [OPCIÓN]... ORIGEN DESTINO (1ª forma)\n"
+" o bien: %s [OPCIÓN]... ORIGEN... DIRECTORIO (2ª forma)\n"
+" o bien: %s -d [OPCIÓN]... DIRECTORIO... (3ª forma)\n"
+
+# ... y de lo de poner la coletilla "y finaliza" en
+# las opciones --version y --help :) ipg
+# Si convences a Enrique de que la coletilla se puede quitar, te apoyo. sv
+#: src/ln.c:331
+#, fuzzy
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"Crea un enlace al OBJETIVO especificado con el NOMBRE_DEL_ENLACE opcional.\n"
+"Si se omite NOMBRE_DEL_ENLACE, se crea un enlace en el directorio actual\n"
+"con el mismo nombre base que el OBJETIVO. Cuando se utiliza la segunda "
+"forma\n"
+"con más de un OBJETIVO, el último argumento debe ser un directorio; crea\n"
+"enlaces en DIRECTORIO para cada OBJETIVO. Por omisión, se crean enlaces "
+"duros.\n"
+"Con --symbolic se crean enlaces simbólicos. Cuando se crean enlaces duros,\n"
+"todos los OBJETIVOs deben existir.\n"
+"\n"
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup[=CONTROL] crea una copia de seguridad de cada fichero "
+"de\n"
+" destino que ya exista\n"
+" -b como --backup pero no acepta ningún argumento\n"
+" -d, -F, --directory permite al superusuario intentar crear un "
+"enlace\n"
+" duro entre directorios (note: puede que "
+"falle\n"
+" por restricciones del sistema, incluso para\n"
+" el superusuario)\n"
+" -f, --force borra los ficheros destino que ya existan\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference trata un destino que sea un enlace simbólico "
+"a\n"
+" un directorio como si fuera un fichero normal\n"
+" -i, --interactive pregunta si se borran los destinos\n"
+" -s, --symbolic crea enlaces simbólicos en vez de enlaces "
+"duros\n"
+
+#: src/ln.c:356
+#, fuzzy
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" -S, --suffix=SUFIJO reemplaza el sufijo de respaldo habitual\n"
+" --target-directory=DIRECTORIO especifica el DIRECTORIO en el que se\n"
+" crearán los enlaces\n"
+" -v, --verbose imprime el nombre de cada fichero antes\n"
+" de crear el enlace\n"
+
+#: src/ln.c:484
+#, fuzzy, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "%s: el directorio objetivo especificado no es un directorio"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Modo de empleo: %s [OPCIÓN]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"Muestra el nombre del usuario actual.\n"
+"\n"
+
+# login name = nombre de usuario ?
+# login = [registro de] entrada ? "login" viene de "to log"
+# (registrar) y de "in"; es el procedimiento que usan en edificios
+# importantes con guardia de seguridad cuando uno para entrar tiene que
+# identificarse, firmar, acreditarse, y te dan una tarjetita para la
+# solapa. Todo ello trasladado al mundo informático, donde uno se
+# acredita con el nombre de usuario y la clave. Pero bueno, si creéis
+# que es mejor dejar la palabra en inglés, me callo. gerardo
+# No me parece mal del todo. Lo pensaré. sv
+#: src/logname.c:89
+#, c-format
+msgid "no login name"
+msgstr "no hay ningún nombre de `login'"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%b %e %Y"
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%b %e %H:%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr ""
+"se descarta el valor inválido de la variable de entorno QUOTING_STYLE: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "se descarta el ancho inválido de la variable de entorno COLUMNS: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr ""
+"se descarta el tamaño de `tab' inválido de la variable de entorno TABSIZE: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "ancho de línea inválido: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "tamaño del `tab' inválido: %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "formato de estilo de fecha inválido %s"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "prefijo no reconocido: %s"
+
+# Según el Collins, to parse = analizar (en un contexto gramático, como es el
+# caso).
+# "valor para la variable de entorno LS_COLORS no analizable"
+# --> y dos letras menos...
+#
+# sinceramente, no creo que después de LS_COLORS, /bin/ls se vaya a leer el
+# Quijote...
+#
+# Es que sí es perfectamente analizable. Lo que pasa es que el resultado
+# del análisis es que no entiende lo que quiere decir, por eso
+# es ininteligible... (Si de verdad no fuera analizable, no daría
+# error, sino que produciría un "core dump" o algo así). sv
+#
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "valor ininteligible para la variable de entorno LS_COLORS"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "no se puede abrir el directorio %s"
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "no se puede determinar el dispositivo y el nodo-i de %s"
+
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "no se muestra el directorio ya mostrado: %s"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "leyendo el directorio %s"
+
+#: src/ls.c:2410
+#, c-format
+msgid "closing directory %s"
+msgstr "cerrando el directorio %s"
+
+# Lo mismo de antes.
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "no se pueden comparar los nombres de fichero %s y %s"
+
+# Yo dejaría verbose en verbosamente. ipg
+#
+# Eso es un "palabro". sv
+#
+# He cambiado la última línea ( muestra la fecha completa y la hora completa )
+# además ahora cabe en 80 cols em
+#
+# Vale, pues ahora me entra una duda (que antes no salió a relucir)
+# ¿"la fecha y la hora completa" o "la fecha y la hora completas"?
+# De momento he puesto lo segundo. sv+
+#
+# Si dices la primera puede llegar a entender que la hora es la única
+# completa... mientras que la segunda no. uac
+#
+# (Efectivamente. sv)
+#
+# Creo que correctas son las dos
+# pero para lo que aquí se quiere decir le toca la segunda... ¿no? uac
+#
+# Eso es lo que me parece. Gracias. sv
+#: src/ls.c:4277
+#, fuzzy
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"Muestra información acerca de los FICHEROs (del directorio actual por "
+"defecto).\n"
+"Ordena las entradas alfabéticamente si no se especifica ninguna de las\n"
+"opciones -cftuSUX ni --sort.\n"
+"\n"
+
+#: src/ls.c:4285
+#, fuzzy
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all no oculta las entradas que comienzan con .\n"
+" -A, --almost-all no muestra las entradas . y .. implícitas\n"
+" --author imprime el autor de cada fichero\n"
+" -b, --escape imprime escapes octales para los caracteres no\n"
+" gráficos\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=TAMAÑO utiliza bloques de TAMAÑO bytes\n"
+" -B, --ignore-backups no muestra la entradas que terminan con ~\n"
+" -c con -lt: ordena por ctime y muestra ctime "
+"(fecha\n"
+" de última modificación del fichero)\n"
+" con -l: muestra ctime y ordena por nombre\n"
+" en cualquier otro caso: ordena por ctime\n"
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C muestra las entradas por columnas\n"
+" --color[=CUÁNDO] especifica si se usará color para distinguir "
+"los\n"
+" tipos de ficheros. CUÁNDO puede ser `never',\n"
+" `always' o `auto'\n"
+" -d, --directory muestra las entradas de los directorios en "
+"lugar\n"
+" de sus contenidos, y no sigue los enlaces\n"
+" simbólicos\n"
+" -D, --dired genera el resultado para el modo `dired' de "
+"Emacs\n"
+
+#: src/ls.c:4307
+#, fuzzy
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f no ordena, utiliza -aU, no utiliza -lst\n"
+" -F, --classify añade un indicador (uno de */=@|) a las "
+"entradas\n"
+" --format=PALABRA across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time como -l --time-style=full-iso\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+#, fuzzy
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all incluye los sistemas de ficheros con 0 bloques\n"
+" -B, --block-size=TAM utiliza bloques de TAM bytes\n"
+" -h, --human-readable imprime los tamaños en formato legible (p.e. 1K 234M "
+"2G)\n"
+" -H, --si análogo, pero utiliza potencias de 1000 y no de 1024\n"
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+
+#: src/ls.c:4337
+#, fuzzy
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=PALABRA añade un indicador con estilo PALABRA a "
+"los\n"
+" nombres de las entradas: none "
+"(predeterminado),\n"
+" classify (-F), file-type (-p)\n"
+" -i, --inode muestra el número de nodo-i de cada fichero\n"
+" -I, --ignore=PATRÓN no lista las entradas que coincidan (encajen)\n"
+" con PATRÓN de shell\n"
+" -k como --block-size=1K\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l utiliza un formato de listado largo\n"
+" -L, --dereference al mostrar la información de un fichero para "
+"un\n"
+" enlace simbólico, muestra la información del\n"
+" fichero al que apunta el enlace en lugar de "
+"la\n"
+" del propio enlace\n"
+" -m rellena el ancho con una lista de entradas\n"
+" separadas por comas\n"
+
+#: src/ls.c:4352
+#, fuzzy
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid como -l, pero muestra los UIDs y GIDs "
+"numéricos\n"
+" -N, --literal muestra los nombres literalmente (no trata p."
+"ej.\n"
+" los caracteres de control de forma especial)\n"
+" -o como -l, pero no muestra el grupo\n"
+" -p --file-type añade un indicador (uno de /=@|) a las "
+"entradas\n"
+
+# La opción "-r, --reverse" literalmente hubiera sido
+# "invierte el orden al ordenar", pero eso sería muy "reflunflante".
+#
+# "utiliza el formato de listado largo sin el grupo"-->
+# "...sin el campo grupo", no sé por qué te sabe mal ser más explícito
+# cuando no se alarga mucho el mensaje. Como tú mismo dices... uac
+#
+# Lo dejo así por estética. Una palabra más me obligaría a usar
+# una línea más, y quedaría más feo. Si digo "sin el grupo", queda
+# claro que el grupo no sale. sv
+#
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars imprime ? en lugar de los caracteres no "
+"gráficos\n"
+" --show-control-chars muestra los caracteres no gráficos tal y como\n"
+" son (predeterminado a menos que el programa "
+"sea\n"
+" `ls' y la salida sea un terminal)\n"
+" -Q, --quote-name encierra los nombres de las entradas entre\n"
+" comillas\n"
+" --quoting-style=PALABRA utiliza el estilo de cita PALABRA para los\n"
+" nombres de las entradas:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+
+#: src/ls.c:4368
+#, fuzzy
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse invierte el orden, en su caso\n"
+" -R, --recursive muestra los subdirectorios recursivamente\n"
+" -s, --size muestra el tamaño de cada fichero, en bloques\n"
+
+# Nota: ctime, extension, none, etc. son posibles "WORD"s,
+# por lo tanto, *no* deben traducirse, o de lo contrario el programa
+# no las reconocería.
+#: src/ls.c:4373
+#, fuzzy
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S ordena los ficheros por tamaño\n"
+" --sort=PALABRA extension -X, none -U, size -S, time -t, "
+"version -v\n"
+" status -c, time -t, atime -u, access -u, use -"
+"u\n"
+" --time=PALABRA muestra la fecha según PALABRA, en lugar de la\n"
+" fecha de modificación:\n"
+" atime, access, use, ctime ó status; utiliza\n"
+" la fecha especificada como clave de "
+"ordenación\n"
+" si --sort=time\n"
+
+#: src/ls.c:4382
+#, fuzzy
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=ESTILO muestra la fecha utilizando el estilo ESTILO:\n"
+" full-iso, long-iso, iso, locale, +FORMATO\n"
+" FORMATO se interpreta como en `date'; si "
+"FORMATO\n"
+" es FORMATO1<nuevalínea>FORMATO2, FORMATO1 se\n"
+" aplica a los ficheros no recientes y FORMATO2\n"
+" a los ficheros recientes; si ESTILO está "
+"precedido\n"
+" por `posix-', ESTILO surte efecto solamente "
+"fuera\n"
+" del local POSIX\n"
+" -t ordena por la fecha de modificación\n"
+" -T, --tabsize=COLS establece los topes de tabulación a cada COLS\n"
+" en lugar de 8\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u con -lt: ordena por atime y muestra atime "
+"(fecha\n"
+" de último acceso al fichero)\n"
+" con -l: muestra atime y ordena por nombre\n"
+" en cualquier otro caso: ordena por atime\n"
+" -U no ordena; muestra las entradas en el orden "
+"del\n"
+" directorio\n"
+" -v ordena por versión\n"
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -w, --width=COLS establece el ancho de la pantalla en lugar del\n"
+" valor actual\n"
+" -x muestra las entradas por líneas en vez de por\n"
+" columnas\n"
+" -X ordena alfabéticamente por la extensión de la\n"
+" entrada\n"
+" -1 muestra un fichero por cada línea\n"
+
+#: src/ls.c:4414
+#, fuzzy
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"Por defecto, no se emplea color para distinguir los tipos de ficheros. Esto\n"
+"equivale a usar --color=none. Usar la opción --color sin el argumento "
+"opcional\n"
+"CUÁNDO equivale a usar --color=always. Con --color=auto, sólo se muestran\n"
+"los códigos de color si la salida estándar está conectada a un terminal "
+"(tty).\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#: src/md5sum.c:150
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Modo de empleo: %s [OPCIÓN] [FICHERO]...\n"
+" o bien: %s [OPCIÓN] --check [FICHERO]\n"
+"\n"
+"Muestra o comprueba sumas de comprobación %s (de %d bits).\n"
+"Si no se especifica FICHERO o FICHERO es `-', lee la entrada estándar.\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+"\n"
+" -B, --binary usa escrituras binarias al dispositivo de "
+"consola.\n"
+"\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+# Creo que no es fiel decir:
+# "no muestra nada, el valor de retorno indica el estado\n"
+# y que sería mejor decir algo así como:
+# "...el resultado [del chequeo | comprobación]..."
+#: src/md5sum.c:178
+#, fuzzy
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"Las siguientes dos opciones son útiles al verificar sumas de comprobación:\n"
+" --status no muestra nada, el valor de retorno indica el\n"
+" resultado\n"
+" -w, --warn avisa de las líneas de comprobación de sumas\n"
+" que no están correctamente formateadas\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"Las sumas se calculan tal y como se describe en %s. Al comprobar, la\n"
+"entrada debe ser un resultado anterior de llamar a este programa. Por "
+"defecto\n"
+"se muestra una línea con la suma de comprobación, un carácter indicando el "
+"tipo\n"
+"de fichero (`*' para binario, ` ' para texto), y el nombre de cada FICHERO.\n"
+
+# Me pregunto y no me contesto: ¿Qué podrá ser el segundo %s?
+#: src/md5sum.c:459
+#, fuzzy, c-format
+msgid "%s: too many checksum lines"
+msgstr ""
+"%s: no se encontraron líneas de suma de comprobación %s con formato correcto"
+
+# ¡¡Jau!! Yo venir en son de paz y aceptar propuesta de rostro pálido :).
+# ¿Tu fumar pipa de la paz? Yo tener maría de la buena X'D (ya quisiera...) ipg
+#
+# ¡¡Jau²!! Yo hacer otra propuesta, mía propuesta no ser formateada
+# propuesta, yo tener pánico a verborreicos como este...
+# "...de comprobación MD5 con formato erróneo."
+#
+# ipg: ¿y crece por allí? ¡con el frío que hace! }:-)
+#: src/md5sum.c:481
+#, fuzzy, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %lu: línea de suma de comprobación %s con formato erróneo"
+
+# Sí, ( no hace falta leerse los coding standards para saberlo, aunque ahí lo
+# puedes encontrar también ) %s es el nombre del programa. em
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: FALLO al abrir o leer\n"
+
+# Puestos a simplificar, a lo mejor podrías poner simplemente
+# "coincide" o "no coincide". Cualquiera que use el programa sabe
+# perfectamente qué es lo que coincide y lo que no. sv+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "La suma no coincide"
+
+# Yo estoy en contra de utilizar el Ok, por otra parte ahí va mi propuesta
+# que se parece mucho a la de Santiago:
+# Correcto/incorrecto, o sea no se refieren al resultado de la suma sino
+# a la comprobación.... es simple y corto... como el mensaje original....
+#
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "La suma coincide"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: error de lectura"
+
+# Me pregunto y no me contesto: ¿Qué podrá ser el segundo %s?
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr ""
+"%s: no se encontraron líneas de suma de comprobación %s con formato correcto"
+
+#: src/md5sum.c:562
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "ATENCIÓN: no se pudieron leer %d de %d %s listados"
+msgstr[1] "ATENCIÓN: no se pudieron leer %d de %d %s listados"
+
+#: src/md5sum.c:574
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "ATENCIÓN: %d de las %d %s calculada(s) NO coincidieron"
+msgstr[1] "ATENCIÓN: %d de las %d %s calculada(s) NO coincidieron"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"las opciones --binary y --text no tienen sentido cuando se verifican sumas\n"
+"de comprobación"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr ""
+"la opción --status sólo tiene sentido cuando se verifican sumas de "
+"comprobación"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr ""
+"la opción --warn sólo tiene sentido cuando se verifican sumas de comprobación"
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Modo de empleo: %s [OPCIÓN] DIRECTORIO...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"Crea los DIRECTORIO(s), si no existen ya.\n"
+"\n"
+
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+"Crea el/los DIRECTORIO(s), si no existen ya.\n"
+"\n"
+" -m, --mode=MODE establece los permisos (como en chmod), en lugar\n"
+" de rwxrwxrwx - umask\n"
+" -p, --parents no hay error si existen, crea los directorios padres en\n"
+" caso necesario\n"
+" -v, --verbose muestra un mensaje por cada directorio creado\n"
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "se ha creado el directorio %s"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Modo de empleo: %s [OPCIÓN] NOMBRE...\n"
+
+# ¿"pipe" es lo mismo que "named pipe"?.
+# ¿Algún experto en Unix que me lo sepa decir?
+#
+# Yo mismo me lo contesto después de hacer el siguiente experimento:
+#
+# mkfifo furufú
+# ls > furufú
+# (se queda esperando).
+# Si ahora hacemos (en otra sesión) cat < furufú, ¡sorpresa!
+# Sale el resultado del ls, y se "desbloquea" la otra sesión.
+#
+# Esto es una "named pipe". Aparece un fichero cuyo primer atributo
+# es la letra p. Además, con DIRCOLORS sale de color rojito, y con la opción
+# -F de ls sale una barrita vertical al final |.
+#
+# ¿Cómo se llama en español? Y si nadie le ha puesto nombre, ¿cómo
+# debería llamarse? ¿tubería nombrada? ¿tubería con nombre?
+# Me inclino por lo segundo, de momento.
+#
+# Tiiiiio ... ¡¡es como querer traducir socket!! ipg
+#
+# [ ¿y qué hay de malo en ello? ] sv
+#
+# Me horroriza. Espero que uses el convenio de poner el original entre
+# comillas. Tubería nombrada tampoco me gusta, pero no se me ocurre
+# nada em
+# *Ya* está FIFO entre paréntesis. No hay posibilidad de confusión. sv+
+#
+# Sólo para que lo tengáis en cuenta:
+# DNS= Domain Named Service --> Servicio de Dominios Nombrado.
+# --> Servicio Nombrado de Dominios.
+# Tanto monta, monta tanto...
+# Nunca lo he visto como lo ponéis aquí. uac
+#
+# Supongo que te refieres al "named" del "named pipe".
+# Habrá que pensarlo bastante, me temo. sv
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"Crea tuberías con nombre (FIFOs) con los NOMBREs dados.\n"
+"\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+" -m, --mode=MODO establece los permisos (como en chmod), en lugar\n"
+" de a=rw - umask\n"
+
+# Utilizo "inválido" en lugar de "no válido", porque la palabra existe,
+# y no usarla es empobrecer el idioma.
+#
+# Si a alguien le parece más natural "no válido", deberíamos discutir
+# esto al mismo tiempo que la "retroreferencia" de Iñaky.
+#
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "modo inválido"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+# Nota: El que no sepa que major y minor es principal y secundario
+# es que no sabe inglés. Esto viene hasta en el Collins de bolsillo.
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Modo de empleo: %s [OPCIÓN]... NOMBRE TIPO [PRINCIPAL SECUNDARIO]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"Crea el fichero especial NOMBRE del TIPO dado.\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+"\n"
+"Deben especificarse tanto PRINCIPAL como SECUNDARIO cuando el TIPO es b, c ó "
+"u,\n"
+"y debe omitirse cuando el TIPO es p. Si PRINCIPAL o SECUNDARIO comienzan con "
+"0x\n"
+"o 0X, se interpreta como hexadecimal; en caso contrario, si comienza con 0,\n"
+"como octal, en caso contrario, como decimal. TIPO puede ser:\n"
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+" b crea un fichero especial de bloques (buffered)\n"
+" c, u crea un fichero especial de caracteres (unbuffered)\n"
+" p crea un `FIFO'\n"
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"cuando se crean ficheros especiales, se deben especificar los\n"
+"números de dispositivo principal y secundario"
+
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "número secundario de dispositivo inválido %s"
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "los ficheros especiales de bloques no están soportados"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "los ficheros especiales de caracteres no están soportados"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "número principal de dispositivo inválido %s"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "número secundario de dispositivo inválido %s"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "dispositivo inválido %s %s"
+
+#: src/mknod.c:216
+#, c-format
+msgid "invalid device type %s"
+msgstr "tipo de dispositivo inválido %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Renombra ORIGEN a DESTINO, o mueve ORIGEN(es) a DIRECTORIO.\n"
+"\n"
+
+#: src/mv.c:297
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup[=CONTROL] crea una copia de seguridad antes de borrar\n"
+" -b como --backup pero no acepta ningún "
+"argumento\n"
+" -f, --force no pregunta nunca antes de sobreescribir\n"
+" (equivalente a --reply=yes)\n"
+" -i, --interactive pide confirmación antes de sobreescribir\n"
+" (equivalente a --reply=query)\n"
+
+#: src/mv.c:303
+#, fuzzy
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --reply={yes,no,query} especifica cómo tratar la pregunta acerca "
+"de\n"
+" un fichero de destino que ya exista\n"
+" --strip-trailing-slashes elimina todas las barras finales de cada\n"
+" argumento ORIGEN\n"
+" -S, --suffix=SUFIJO reemplaza el sufijo de respaldo habitual\n"
+
+#: src/mv.c:308
+#, fuzzy
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --target-directory=DIRECTORIO mueve todos los argumentos ORIGEN al\n"
+" directorio DIRECTORIO\n"
+" -u, --update mueve solamente cuando el fichero "
+"ORIGEN\n"
+" es más moderno que el fichero de "
+"destino,\n"
+" o cuando falta el fichero de destino\n"
+" -v, --verbose da detalles de lo que va haciendo\n"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Modo de empleo: %s [OPCIÓN] [ORDEN [ARG]...]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "argumento inválido: %s"
+
+# Me parece mejor: "Con un ajuste debe darse una orden"
+# Lo consideraré. Esta frase es realmente fea. sv
+# Vale, lo cambio, pero añado una coma.
+# (Antes decía: debe darse una orden con un ajuste).
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "con un ajuste, debe darse una orden"
+
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "no se puede obtener el nombre del sistema"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "no se puede establecer la fecha"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Escribe cada FICHERO en la salida estándar, con las líneas numeradas.\n"
+"Si no se especifica FICHERO o FICHERO es `-', lee la entrada estándar.\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=ESTILO usa ESTILO para la numeración de las líneas\n"
+" -d, --section-delimiter=CC usa CC para separar páginas\n"
+" -f, --footer-numbering=ESTILO usa ESTILO para numerar las líneas finales\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=ESTILO usa ESTILO para numerar las líneas de "
+"cabecera\n"
+" -i, --page-increment=NÚMERO incrementa en NÚMERO el número de línea en\n"
+" cada línea\n"
+" -l, --join-blank-lines=NÚMERO un grupo de NÚMERO líneas vacías se cuentan\n"
+" como una sola\n"
+" -n, --number-format=FORMATO inserta los números de línea con FORMATO\n"
+" -p, --no-renumber no reinicializa el número de líneas para "
+"cada\n"
+" página\n"
+" -s, --number-separator=CADENA añade CADENA despúes del número de línea\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=NÚMERO primer número de línea para cada página\n"
+" -w, --number-width=ANCHO usa ANCHO columnas para los números de "
+"línea\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"Por omisión es `-v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn'. `CC' son dos\n"
+"caracteres delimitadores para separar páginas; si sólo se especifica uno\n"
+"de ellos, el otro se supone:`.'\n"
+"Utilícese \\\\ para obtener \\. ESTILO puede ser uno de lo siguientes:\n"
+
+#: src/nl.c:214
+#, fuzzy
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a numera todas las líneas\n"
+" t numera sólo las líneas no vacías\n"
+" n no numera ninguna línea\n"
+" pEXPREG numera sólo las líneas que coinciden con la expresión regular "
+"REGEXP\n"
+"\n"
+"FORMATO es uno de los siguientes:\n"
+"\n"
+" ln justificación a la izquierda, sin ceros a la izquierda\n"
+" rn justificación a la derecha, sin ceros a la izquierda\n"
+" rz justificación a la derecha, con ceros a la izquierda\n"
+"\n"
+
+#: src/nl.c:281
+#, fuzzy, c-format
+msgid "line number overflow"
+msgstr "el número de campo es cero"
+
+#: src/nl.c:479
+#, c-format
+msgid "invalid header numbering style: %s"
+msgstr "estilo de numeración de cabecera inválido: %s"
+
+#: src/nl.c:487
+#, c-format
+msgid "invalid body numbering style: %s"
+msgstr "estilo de numeración de cuerpo inválido: %s"
+
+#: src/nl.c:495
+#, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "estilo de numeración de pie inválido: %s"
+
+#: src/nl.c:504
+#, c-format
+msgid "invalid starting line number: %s"
+msgstr "número de comienzo de línea inválido: %s"
+
+#: src/nl.c:513
+#, c-format
+msgid "invalid line number increment: %s"
+msgstr "incremento de línea inválido: %s"
+
+#: src/nl.c:525
+#, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "número de líneas vacías inválido: %s"
+
+#: src/nl.c:539
+#, c-format
+msgid "invalid line number field width: %s"
+msgstr "ancho para el número de línea inválido: %s"
+
+#: src/nl.c:558
+#, c-format
+msgid "invalid line numbering format: %s"
+msgstr "formato de numeración de líneas inválido: %s"
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Modo de empleo: %s ORDEN [ARGUMENTO]...\n"
+" o bien: %s OPCIÓN\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+"Ejecuta ORDEN, descartando las señales de colgar.\n"
+"\n"
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "no se tendrá en cuenta ningún argumento"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr "No se puede abrir %s"
+
+#: src/nohup.c:161
+#, fuzzy, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "se añade la salida a %s"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr "fallo al establecer que la copia de stderr se cierre al hacer `exec'"
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr "fallo al redireccionar la salida de error estándar"
+
+#: src/od.c:307
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Modo de empleo: %s [OPCIÓN]... [FICHERO]...\n"
+" o bien: %s --traditional [FICHERO] [[+]DESPLAZAMIENTO [[+]ETIQUETA]\n"
+
+# Creo que si pones `-' en vez de -, deberías consultarlo primero con
+# el autor. Además, no lo has cambiado en todas partes. sv+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"Escribe una representación inequívoca, por defecto en base ocho, de FICHERO\n"
+"en la salida estándar. Si no se especifica FICHERO o FICHERO es `-', lee la\n"
+"entrada estándar.\n"
+"\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+"Todos los argumentos para las opciones largas son obligatorios para las\n"
+"opciones cortas.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=BASE indica cómo se han de mostrar las posiciones\n"
+" del fichero\n"
+" -j, --skip-bytes=BYTES descarta los primeros BYTES bytes de cada "
+"fichero\n"
+
+#: src/od.c:327
+#, fuzzy
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=BYTES restringe la salida a BYTES bytes por fichero\n"
+" -s, --strings[=BYTES] muestra cadenas de caracteres de al menos "
+"BYTES\n"
+" caracteres gráficos\n"
+" -t, --format=TIPO selecciona el formato o formatos de salida\n"
+" -v, --output-duplicates no usa * para indicar líneas repetidas\n"
+" -w, --width[=BYTES] muestra BYTES bytes por línea de salida\n"
+" --traditional acepta los argumentos en formato tradicional\n"
+
+#: src/od.c:337
+#, fuzzy
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"Las especificaciones de formato tradicionales pueden estar mezcladas y\n"
+"se acumulan:\n"
+" -a lo mismo que -t a, selecciona los caracteres nombrados\n"
+" -b lo mismo que -t oC, selecciona bytes en base octal\n"
+" -c lo mismo que -t c, selecciona caracteres ASCII o secuencias de "
+"escape\n"
+" -d lo mismo que -t u2, selecciona decimales cortos sin signo\n"
+
+#: src/od.c:345
+#, fuzzy
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f lo mismo que -t fF, selecciona números en coma flotante\n"
+" -h lo mismo que -t x2, selecciona hexadecimales cortos\n"
+" -i lo mismo que -t d2, selecciona decimales cortos\n"
+" -l lo mismo que -t d4, selecciona decimales largos\n"
+" -o lo mismo que -t o2, selecciona octales cortos\n"
+" -x lo mismo que -t x2, selecciona hexadecimales cortos\n"
+
+#: src/od.c:353
+#, fuzzy
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"En la sintaxis antigua, DESPLAZAMIENTO significa -j DESPLAZAMIENTO. "
+"ETIQUETA\n"
+"es la pseudodirección del primer byte mostrado, que se incrementa a la vez\n"
+"que se va procesando el volcado. Para DESPLAZAMIENTO y ETIQUETA, el prefijo\n"
+"0x ó 0X indica hexadecimal, los sufijos pueden ser `.' para octal y `b' "
+"para\n"
+"bloques de 512 bytes.\n"
+"\n"
+"TIPO se construye con una o más de las siguientes especificaciones:\n"
+"\n"
+" a un determinado carácter\n"
+" c carácter ASCII o secuencia de escape (\\999)\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[TAMAÑO] decimal con signo, TAMAÑO bytes por cada entero\n"
+" f[TAMAÑO] coma flotante, TAMAÑO bytes por cada entero\n"
+" o[TAMAÑO] octal, TAMAÑO bytes por cada entero\n"
+" u[TAMAÑO] decimal sin signo, TAMAÑO bytes por cada entero\n"
+" x[TAMAÑO] hexadecimal, TAMAÑO bytes por cada entero\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"TAMAÑO es un número. Para los TIPOs d, o, u ó x, TAMAÑO puede ser también:\n"
+"C para `sizeof(char)', S para `sizeof(short)', I para `sizeof(int)' ó L "
+"para\n"
+"`sizeof(long)'. Si TIPO es f, TAMAÑO puede ser también F para `sizeof"
+"(float)',\n"
+" D para `sizeof(double)' ó L para `sizeof(long double)'.\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"BASE es d para decimal, o para octal, x para hexadecimal o n para ninguna.\n"
+"BYTES es hexadecimal con 0x ó 0X como prefijo, se multiplica por 512 si el\n"
+"sufijo es b, por 1024 si es k y por 1048576 si es m. Si se añade el sufijo\n"
+"z a cualquier tipo, se añade un visor de caracteres imprimibles al final de\n"
+"cada línea del resultado. "
+
+#: src/od.c:391
+#, fuzzy
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"--string sin ningún número implica 3. --width sin ningún número implica 32.\n"
+"Por omisión, od usa `-A o -t d2 -w 16'.\n"
+
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "tipo de cadena inválido `%s'"
+
+#: src/od.c:693
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"tipo de cadena inválido `%s';\n"
+"este sistema no posee el tipo de entero de %lu bytes"
+
+#: src/od.c:812
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"tipo de cadena inválido `%s';\n"
+"este sistema no dispone de un tipo de coma flotante de %lu bytes"
+
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "carácter inválido `%c' en la cadena de tipo `%s'"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr ""
+"no se puede saltar a un punto que está más allá de la entrada combinada"
+
+# `set' -> [set] ... no deberíamos cambiar la terminología original, so pena
+# de hacernos la picha un lío ... (opino, vamos :) ipg
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+"la base de la dirección de salida no es válida `%c'; debe ser uno de [doxn]"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "pasando por alto este argumento"
+
+# ¿Tiene sentido? ¿No sería `argumento límite'? (no tengo las fuentes,
+# sorry O:) ipg
+# No lo sé, yo tengo las fuentes, pero a primera vista no concluyo em+
+#
+# a ver si te acuerdas la próxima vez y "pegas" el trocito de código donde esté,
+# así podremos discutir sobre ello....
+# FIXME: Asegurarse de que significa eso. sv+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "limitando este argumento"
+
+# ¿longitud mínima de cadena? Es que si no, me suena a spanglish :) ipg
+# ok em+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "longitud mínima de cadena"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "especificación de ancho"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "no se puede especificar tipo cuando se vuelcan cadenas"
+
+#: src/od.c:1844
+#, fuzzy
+msgid "Compatibility mode supports at most one file."
+msgstr "el modo de compatibilidad admite como mucho tres argumentos"
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr "skip-bytes + read-bytes es demasiado grande"
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "atención: ancho %lu inválido; se usará %d en su lugar"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: fmt=\"%s\" ancho=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "la entrada estándar está cerrada"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Escribe secuencialmente en la salida estándar cada línea de los FICHEROs\n"
+"especificados, separadas por tabuladores.\n"
+"Si no se especifica FICHERO o FICHERO es `-', lee la entrada estándar.\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, delimiters=LISTA usa los caracteres indicados en LISTA en lugar de\n"
+" tabuladores\n"
+" -s, --serial usa un fichero cada vez, en lugar de hacerlo en\n"
+" paralelo\n"
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Modo de empleo: %s [OPCIÓN]... [NOMBRE]...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "carácter %s inválido en la cadena de modo %s"
+
+#: src/pathchk.c:282
+#, fuzzy, c-format
+msgid "empty file name"
+msgstr "fichero regular vacío"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Nombre de usuario: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "En la vida real: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Directorio: "
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Shell: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Proyecto: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "Plan:\n"
+
+# FIXME: Sin el contexto es difícil.
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Login"
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr "Nombre"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr " TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Inactivo"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Cuándo"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Dónde"
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Modo de empleo: %s [OPCIÓN]... [USUARIO]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"\n"
+" -l usa el formato ancho para el resultado\n"
+" -b omite el directorio inicial y shell del usuario en "
+"formato\n"
+" ancho\n"
+" -h omite el fichero project del usuario en formato largo\n"
+" -p omite el fichero plan del usuario en formato largo\n"
+" -s usa el formato corto (este es el predeterminado)\n"
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+" -f omite la línea de cabeceras de columnas en formato corto\n"
+" -w omite el nombre completo del usuario en formato corto\n"
+" -i omite el nombre completo del usuario y el `host' remoto\n"
+" en formato corto\n"
+" -q omite el nombre completo del usuario, el `host' remoto\n"
+" y el tiempo inactivo en formato corto\n"
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+"\n"
+"Un programa `finger' sencillo; muestra información del usuario.\n"
+"El fichero utmp será %s.\n"
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr ""
+"no se ha especificado ningún nombre de usuario, hay que especificar al\n"
+"menos uno cuando se usa -l"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr ""
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "`--pages=PRIMERA_PÁGINA[:ÚLTIMA_PÁGINA]' falta un argumento"
+
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "tipo de cadena inválido `%s'"
+
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "`-l LONGITUD_PÁGINA' el número de líneas no es válido: `%s'"
+
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "`-N NÚMERO' número de comienzo de línea inválido: `%s'"
+
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "`-o MARGEN' el desplazamiento de línea no es válido: `%s'"
+
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-w ANCHO_PÁGINA' número inválido de caracteres: `%s'"
+
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-W ANCHO_PÁGINA' número de caracteres inválido: `%s'"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr ""
+"No se puede especificar un número de columnas cuando se escribe en paralelo."
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr ""
+"No se puede especificar a la vez impresión en paralelo y transversalmente."
+
+#: src/pr.c:1202
+#, fuzzy, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "`-%c' sobran caracteres, o número inválido en el argumento: `%s'"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "ancho de página demasiado estrecho"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2406
+#, fuzzy, c-format
+msgid "Page number overflow"
+msgstr "el número de campo es cero"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+"Pagina o encolumna FICHERO(s) para su impresión.\n"
+"\n"
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +PRIMERA_PAGINA[:ÚLTIMA_PAGINA], --pages=PRIMERA_PAGINA[:ÚLTIMA_PAGINA]\n"
+" comienza [termina] a imprimir por PRIMERA_[ÚLTIMA_]"
+"PÁGINA\n"
+" -COLUMNAS, --columns=COLUMNAS\n"
+" muestra una salida en COLUMNAS columnas e imprime las\n"
+" columnas, a menos que se especifique -a. Equilibra el\n"
+" número de líneas de cada columna en cada página.\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across crea las columnas transversalmente en lugar de en "
+"paralelo,\n"
+" se utiliza junto con -COLUMNAS\n"
+" -c, --show-control-chars\n"
+" muestra los caracteres de control con notación\n"
+" gorro (^G) o secuencias de escape octales\n"
+" -d, --double-space\n"
+" salida con espaciado doble\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=FORMATO\n"
+" utiliza FORMATO para la fecha de la cabecera\n"
+" -e[CARÁCTER[ANCHO]], --expand-tabs[CARÁCTER[ANCHO]]\n"
+" sustituye el carácter de tabulación (o el CARÁCTER) por\n"
+" ANCHO (8) espacios\n"
+" -F, -f, --form-feed\n"
+" utiliza saltos de página en lugar de caracteres de "
+"nueva\n"
+" línea para separar páginas (con una cabecera de página "
+"de 3\n"
+" líneas con -f o una cabecera y una cola de 5 líneas sin -"
+"F)\n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h CABECERA, --header=CABECERA\n"
+" utiliza una CABECERA centrada en lugar del nombre del\n"
+" fichero en la cabecera de la página, -h \"\" muestra\n"
+" una línea en blanco. No usar -h\"\"\n"
+" -i[CARÁCTER[ANCHO]], --output-tabs[CARÁCTER[ANCHO]]\n"
+" reemplaza los espacios con tabulaciones (o con "
+"CARÁCTER)\n"
+" de ancho ANCHO (8)\n"
+" -J, --join-lines mezcla líneas completas, desactiva el truncamiento de\n"
+" líneas -W, no alinea las columnas, --sep-string"
+"[=CADENA]\n"
+" establece los separadores\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l LONG_PÁGINA, --length=LONG_PÁGINA\n"
+" establece la longitud de la página en el número "
+"indicado\n"
+" por defecto 66, o 56 si se especifica -f 63\n"
+" -m, --merge muestra todos los ficheros en paralelo, uno en cada "
+"columna,\n"
+" trunca líneas, pero une líneas de longitud completa con -"
+"J\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[SEP[DÍGITOS]], --number-lines[=SEP[DÍGITOS]]\n"
+" numera las líneas, utiliza DÍGITOS (5) dígitos, luego "
+"SEP\n"
+" (TAB), la cuenta predeterminada comienza con la primera\n"
+" línea del fichero de entrada\n"
+" -N NÚMERO, --first-line-number=NÚMERO\n"
+" comienza a contar con NÚMERO en la primera línea de la\n"
+" primera página impresa (véase +PRIMERA_PÁGINA)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o MARGEN, --indent=MARGEN\n"
+" desplaza cada línea con MARGEN (cero) espacios, no "
+"afecta\n"
+" a -w ni a -W, MARGEN será añadido a ANCHO_PÁGINA\n"
+" -r, --no-file-warnings\n"
+" omite el aviso cuando no se puede abrir un fichero\n"
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[CAR], --separator[=CAR]\n"
+" separa las columnas mediante un solo carácter, el valor\n"
+" predeterminado de CAR es el carácter de <TAB> sin -w y\n"
+" 'ningún carácter' con -w. La opción -s[CAR] desactiva "
+"el\n"
+" truncamiento de líneas de las 3 opciones de columnas\n"
+" (-COLUMN|-a -COLUMN|-m) excepto si se usa -w.\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -SCADENA, --sep-string[=CADENA]\n"
+
+#: src/pr.c:2846
+#, fuzzy
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" separa las columnas mediante CADENA,\n"
+" sin -S: El separador predeterminado es <TAB> con -J\n"
+" y <espacio> en caso contrario (lo mismo que -S\" \"), \n"
+" no hay ningún efecto en las opciones de columnas\n"
+" -t, --omit-header no muestra cabeceras ni colas\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" no muestra cabeceras ni colas, descarta cualquier\n"
+" formato de página establecido con saltos de página en\n"
+" los ficheros de entrada\n"
+" -v, --show-nonprinting\n"
+" usa la notación octal de barra invertida\n"
+" -w ANCHO_PÁGINA, --width=ANCHO_PÁGINA\n"
+" establece el ancho de página en ANCHO_PÁGINA caracteres\n"
+" (por omisión, 72) solamente para salida de texto en "
+"varias\n"
+" columnas, -s[car] lo desactiva (72)\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W ANCHO_PÁGINA, --page-width=ANCHO_PÁGINA\n"
+" establece el ancho de página siempre en ANCHO_PÁGINA\n"
+" caracteres (por omisión 72), trunca las líneas, excepto "
+"si\n"
+" se usa la opción -J, no interfiere con las opciones -S o "
+"-s\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"-l nn implica -T cuando nn <= 10 ( ó <= 3 con -F). Si no se especifica "
+"ningún\n"
+"FICHERO, o cuando FICHERO es -, lee la entrada estándar.\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Modo de empleo: %s [VARIABLE]...\n"
+" o bien: %s OPCIÓN\n"
+"Si no se especifica ninguna VARIABLE de entorno, las muestra todas.\n"
+"\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+"atención: %s: los caracteres que siguen a la constante de caracteres\n"
+"no se han tenido en cuenta"
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Modo de empleo: %s FORMATO [ARGUMENTO]...\n"
+" o bien: %s OPCIÓN\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+"Muestra ARGUMENTO(s) de acuerdo a FORMATO.\n"
+"\n"
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"\n"
+"FORMATO controla la salida como la función printf de C. Las secuencias\n"
+"interpretadas son:\n"
+"\n"
+" \\\" dobles comillas\n"
+" \\NNN el carácter con valor octal NNN (1 a 3 dígitos)\n"
+" \\\\ barra invertida\n"
+
+# alerta (BEL) ? mejor, pitido audible (BEL) em+
+# campana. sv+
+# ¿Manejada? . ¿Qué te parece 'Se considera el ancho variable' em
+# A ver si te gusta lo que he puesto. sv+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+" \\a campana (BEL)\n"
+" \\b carácter de retroceso (backspace)\n"
+" \\c no produce más salida\n"
+" \\f avance de página (form feed)\n"
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n nueva línea\n"
+" \\r retorno de carro\n"
+" \\t tabulador horizontal\n"
+" \\v tabulador vertical\n"
+
+#: src/printf.c:124
+#, fuzzy
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+" \\xNN el byte con valor hexadecimal NN (de 1 a 2 dígitos)\n"
+"\n"
+" \\uNNNN el carácter con valor hexadecimal NNNN (4 dígitos)\n"
+" \\UNNNNNNNN el carácter con valor hexadecimal NNNNNNNN (8 dígitos)\n"
+
+#: src/printf.c:129
+#, fuzzy
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+" %% un sólo %\n"
+" %b ARGUMENTO como una cadena con secuencias de escape `\\' "
+"interpretadas,\n"
+" excepto que los escapes octales son de la forma \\0 o \\0NNN\n"
+"\n"
+"\n"
+"En todas las especificaciones de formato en C que terminan con un miembro\n"
+"de diouxXfeEgGcs, los ARGUMENTOs se convierten al tipo adecuado primero.\n"
+"Se admiten anchuras variables.\n"
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: se esperaba un valor numérico"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: valor no completamente convertido"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "falta un número hexadecimal en la secuencia de escape"
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "el nombre de carácter universal \\%c%0*x es inválido"
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr "ancho de campo inválido: %s"
+
+#: src/printf.c:585
+#, c-format
+msgid "invalid precision: %s"
+msgstr "precisión inválida: %s"
+
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%s: especificación de campo inválida `%s'"
+
+#: src/printf.c:683
+#, fuzzy, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "atención: se descartan los argumentos que sobran, comenzando por `%s'"
+
+# FIXME: Un comentario del autor para el traductor no estaría de más.
+# Me imagino que este nombre es una excepción porque "ç" no existe en ASCII.
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr "François Pinard"
+
+#: src/ptx.c:422
+#, fuzzy, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (para la expresión regular `%s')"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Modo de empleo: %s [OPCIÓN]... [ENTRADA]... (sin -G)\n"
+" o bien: %s -G [OPCIÓN]... [ENTRADA [SALIDA]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"Muestra un índice permutado, incluyendo contexto, de las palabras\n"
+"de los ficheros de entrada.\n"
+
+# Usaría 'se comporta' en vez de 'comportarse' em+
+# Sentence = frase em
+# Ok a los dos :) ipg
+# 'genera salida' lo cambiaría por 'genera' o 'muestra' em+
+# Pongo `genera el resultado con' ipg
+# Por último, 'da información' me resulta antipático, me inclino
+# por 'informa' em+
+# Ya, esa se me pasó ... yastá :) ipg
+# Perdón, pero lo de 'leer de' no me gusta , prefiero 'leer' a secas em+
+# ok ipg
+#
+# Sugerencia: usa -> utiliza. sv
+# Hmmm ... prefiero `usa', es más corto e igual de explicativo. Tampoco
+# es en exceso coloquial como para no parecer medianamente serio ;) ipg
+#
+# ¡Pero en mkid me aceptaste la sugerencia! ¿Por qué aquí no? :-) sv
+# No sabría decirte ... por el contexto, quizá ... ipg
+#
+# Bien, pues razóname por qué un contexto es más apropiado para usa
+# y el otro es más apropiado para utiliza. sv
+#
+# ¡Psche! ... es cuestión muy psicológica. Si te fijas, a mí me parece
+# un contexto de PM (Persona Mayor, malpensao ;) para ello, y a tí
+# no. Creo que no hay por qué darle muchas vueltas ...
+#
+# Sugerencia (en -F) marcar las líneas -> señalar las líneas. sv
+# Prefiero marcar, para mi señala se refiere más a una acción activa,
+# `señalar' algún objeto, apuntar a él, no ser un objeto pasivo que
+# hace que te fijes en el objeto, que es lo que será la cadena. ipg
+#
+# He cambiado un poco lo de "Los argumentos obligatorios...". sv
+# aunque todavía no es igual que el que tenía yo...
+# Vale gracias :) me gusta más. Dile a Enrique que los revise en
+# textutils. ipg
+#
+# Sugerencia: directivas TeX -> instrucciones TeX. sv
+# Aquí prefiero ser fiel al original, ya que hay una traducción
+# exacta e unívoca de una a otro (¡¡la función buena persona!! ;). ipg
+# ... salvo que "directiva" me recuerda cantidad a las
+# "directivas de la Unión Europea" sv
+# A las que ni Cristo hace puto caso :) ipg
+#
+# Propongo: "Considera las minúsculas como mayúsculas para ordenar". sv
+#
+# Ahí estás considerando que convierte todo a mayúsculas ... ipg
+#
+# En absoluto: Estamos diciendo que las *considera como*, no que las
+# convierta, y sólo *para ordenar*. Léelo bien, hombre. sv
+# ¿qué tal `No distingue entre mayúsculas y minúsculas al ordenar'?
+# (la pongo por ahora en espera de críticas ;) ipg
+#
+# No está mal, pero lo que yo proponía da más detalles sobre lo que
+# hace internamente. Por ejemplo, ¿cómo sabes en qué lugar quedan los códigos
+# que hay entre los de las mayúsculas y las minúsculas si solamente dices
+# que "considera iguales las mayúsculas y las minúsculas"? sv
+#
+# Perdona Santiago, pero eso yo lo veo innecesario. Al usuario le da
+# *igual* (o al menos le debería) cómo funcione internamente el hecho
+# de considerar iguales las mayúsculas y las minúsculas, y el cómo se
+# ordene, además de que dependerá del LOCALE, es casi irrelevante, porque
+# creo (y digo creo) que las funciones de ordenación (strcoll && friends)
+# siempre usan una secuencia de ordenación definida. En mi sistema
+# usan la de ascii, pero porque yo no tengo definida la secuencia de
+# ordenación para el castellano. Resumiendo: creo que la razón de
+# `la posición de los códigos que hay entre mayúsculas y minúsculas'
+# no es siempre aplicable.
+# Uso mi frase, ¿ok? :) ipg
+#
+# Bueno, no es tan importante, pero me intriga por qué el autor
+# quiso indicar eso dando más información de la que tú das
+# en la traducción. sv
+# Emoción, intriga, dolor de barriga :) ipg
+#: src/ptx.c:1894
+#, fuzzy
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference muestra automáticamente las referencias\n"
+" generadas\n"
+" -C, --copyright muestra el Copyright y las condiciones\n"
+" de copia\n"
+" -G, --traditional se comporta como el `ptx' de System V\n"
+" -F, --flag-truncation=CADENA usa CADENA para marcar las líneas "
+"truncadas\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=CADENA usa CADENA como nombre de macro en lugar\n"
+" de `xx'\n"
+" -O, --format=roff genera el resultado con directivas roff\n"
+" -R, --right-side-refs pone las referencias a la derecha,\n"
+" sin contarlas en -w\n"
+" -S, --sentence-regexp=EXPR-REG para finales de línea o frase\n"
+" -T, --format=tex genera salida como directivas TeX\n"
+
+# ¿Alquien sabe qué coño es gap? No lo he encontrado en el diccionario .. ipg
+# Pues gap suele ser una especie de desplazamiento o desajuste,
+# lo traduciría aquí como separación em+
+# Gracias. ipg
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=EXPR-REG usa EXPR-REG para encontrar las palabras "
+"clave\n"
+" -b, --break-file=ARCHIVO toma de ARCHIVO los caracteres que definen\n"
+" las palabras\n"
+" -f, --ignore-case no distingue entre mayúsculas y minúsculas\n"
+" al ordenar\n"
+" -g, --gap-size=NÚMERO separación en columnas entre campos de "
+"salida\n"
+" -i, --ignore-file=ARCHIVO lee la lista de palabras a pasar por\n"
+" alto de ARCHIVO\n"
+" -o, --only-file=ARCHIVO lee la lista de palabras a mantener de\n"
+" ARCHIVO\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references el primer campo de la línea es una "
+"referencia\n"
+" -t, --typeset-mode - no implementado -\n"
+" -w, --width=NÚMERO anchura de la salida en columnas,\n"
+" excluyendo referencias\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"Si no se especifica ARCHIVO o ARCHIVO es `-', lee de la entrada estándar.\n"
+"Se toma `-F /' por defecto.\n"
+
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "ancho inválido: %s"
+
+#: src/ptx.c:2089
+#, fuzzy, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr "la opción --allow-missing está obsoleta; use --retry en su lugar"
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+"Muestra el nombre de fichero completo del directorio de trabajo actual.\n"
+"\n"
+
+#: src/pwd.c:160
+#, fuzzy, c-format
+msgid "failed to chdir to %s"
+msgstr "No se puede abrir %s"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "No se puede abrir %s"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "los argumentos que no son opciones no serán tenidos en cuenta"
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Modo de empleo: %s [OPCIÓN]... FICHERO\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+"Muestra el valor de un enlace simbólico en la salida estándar.\n"
+"\n"
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+#, fuzzy
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+" -f, --canonicalize canonicaliza siguiendo cada enlace simbólico\n"
+" de cada componente del camino dado recursivamente\n"
+" -n, --no-newline no muestra la nueva línea final\n"
+" -q, --quiet,\n"
+" -s, --silent suprime la mayoría de los mensajes de error\n"
+" -v, --verbose informa de los errores\n"
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "cerrando el directorio %s"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "no se puede abrir el directorio %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+# FIXME: ¿Por qué el original no dice inode, si es que es eso lo que quiere
+# decir?
+#: src/remove.c:510
+#, fuzzy, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "%s ha cambiado dev/nodo-i"
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "no se puede crear el directorio %s"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+# "Esto quiere decir que seguramente el sistema..." tb
+# Eso sería "This means that almost certainly you have..." sv
+# Me gusta más tal y como está ahora. sv
+# Creo que tienes razón. Esta es un poco difícil. Es que parece que quiere
+# indicar que "esto muy probablemente indique que" o "con casi total
+# seguridad esto se debe a que tiene un sistema de ficheros corrupto".
+# Pero... tb
+# Lo pensaré. sv
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"ATENCIÓN: Estructura de directorios circular.\n"
+"Esto quiere decir seguramente que el sistema de ficheros está corrupto.\n"
+"COMUNÍQUELO AL ADMINISTRADOR DEL SISTEMA.\n"
+"El siguiente directorio es parte del ciclo:\n"
+" %s\n"
+
+# SIoNO
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s: ¿descender al directorio protegido contra escritura %s? (s/n) "
+
+# SIoNO
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s: ¿descender al directorio %s? (s/n) "
+
+# SIoNO
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: ¿borrar el %s %s protegido contra escritura? (s/n) "
+
+# Convendría saber qué son los `%s'. Ver el código fuente.
+# El segundo es el nombre del fichero que se va a borrar, pero
+# ¿y el primero?
+#
+# SIoNO
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: ¿borrar el %s %s? (s/n) "
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "directorio borrado: %s\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "cerrando el directorio %s"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "no se puede borrar el directorio %s"
+
+#: src/remove.c:1450
+#, fuzzy, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "no se puede cambiar a `..' desde el directorio %s"
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "no se puede borrar el directorio %s"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "no se puede borrar el directorio %s"
+
+#: src/remove.c:1558
+#, fuzzy, c-format
+msgid "cannot restore current working directory"
+msgstr "no se puede obtener el directorio actual"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Modo de empleo: %s [OPCIÓN]... FICHERO...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --no-preserve-root no trata `/' de forma especial (predeterminado)\\n"
+"\"\n"
+" --preserve-root no opera recursivamente sobre `/'\\n\"\n"
+" -r, -R, --recursive borra los contenidos de los directorios "
+"recursivamente\n"
+" -v, --verbose explica lo que va haciendo\n"
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"Para borrar un fichero cuyo nombre comience con un `-', por ejemplo `-fu',\n"
+"utilice una de las siguientes órdenes:\n"
+" %s -- -fu\n"
+"\n"
+" %s ./-fu\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"Tenga en cuenta que si utiliza rm para borrar un fichero, normalmente es\n"
+"posible recuperar el contenido de ese fichero. Si quiere mayor seguridad\n"
+"de que el contenido es realmente irrecuperable, considere utilizar shred.\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+# Convendría saber qué son los `%s'. Ver el código fuente.
+# El segundo es el nombre del fichero que se va a borrar, pero
+# ¿y el primero?
+#
+# SIoNO
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: ¿borrar el %s %s? (s/n) "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "borrando el directorio, %s"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Modo de empleo: %s [OPCIÓN]... DIRECTORIO...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"Borra el/los DIRECTORIO(s), si están vacíos.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" no tiene en cuenta los fallos que se producen únicamente\n"
+" porque un directorio no está vacío\n"
+
+#: src/rmdir.c:148
+#, fuzzy
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents borra DIRECTORIO, y luego intenta borrar cada componente\n"
+" de directorio de ese camino. P. ej. `rmdir -p a/b/c' es\n"
+" similar a `rmdir a/b/c a/b a'.\n"
+" -v, --verbose muestra un mensaje por cada directorio procesado\n"
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Modo de empleo: %s [OPCIÓN]... ÚLTIMO\n"
+" o bien: %s [OPCIÓN]... PRIMERO ÚLTIMO\n"
+" o bien: %s [OPCIÓN]... PRIMERO INCREMENTO ÚLTIMO\n"
+
+#: src/seq.c:79
+#, fuzzy
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"Muestra los números desde PRIMERO hasta ÚLTIMO, en incrementos de "
+"INCREMENTO.\n"
+"\n"
+" -f, --format=FORMATO utiliza un FORMATO de estilo printf(3)\n"
+" (por omisión: %g)\n"
+" -s, --separador=CADENA utiliza CADENA para separar los números\n"
+" (por omisión: \\n)\n"
+" -w, --equal-width iguala el ancho rellenando con ceros\n"
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"\n"
+"Si se omiten PRIMERO o INCREMENTO, el valor predeterminado es 1. Es decir,\n"
+"un INCREMENTO omitido tiene un valor predeterminado de 1 incluso cuando "
+"ÚLTIMO\n"
+"es más pequeño que PRIMERO. PRIMERO, INCREMENTO y ÚLTIMO se interpretan "
+"como\n"
+"valores de coma flotante. INCREMENTO es normalmente positivo si PRIMERO es\n"
+"menor que ÚLTIMO, y es normalmente negativo si PRIMERO es mayor que ÚLTIMO.\n"
+"Cuando se da el argumento FORMATO, debe contener exactamente uno de\n"
+"los formatos estilo printf para coma flotante %e, %f, o %g\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "argumento de coma flotante inválido: %s"
+
+#: src/seq.c:342
+#, fuzzy, c-format
+msgid "invalid format string: %s"
+msgstr "cadena de formato inválida: `%s'"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr ""
+"la cadena de formato no debe especificarse cuando se muestran\n"
+"cadenas de la misma anchura"
+
+#: src/setuidgid.c:51
+#, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Modo de empleo: %s USUARIO ORDEN [ARGUMENTO]...\n"
+" o bien: %s OPCIÓN\n"
+
+#: src/setuidgid.c:57
+#, fuzzy
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+"Abandona cualquier grupo suplementario, asume el ID de usuario y el ID\n"
+"de grupo del USUARIO especificado, y ejecuta ORDEN con cualesquiera\n"
+"ARGUMENTOs especificados. Termina con estado 111 si es incapaz de asumir\n"
+"los UID y GID necesarios. En caso contrario, termina con el estado de "
+"salida\n"
+"de ORDEN. Este programa solamente es útil cuando lo ejecuta root (UID=0).\n"
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr "ID de usuario desconocido: %s"
+
+#: src/setuidgid.c:109
+#, c-format
+msgid "cannot set supplemental group"
+msgstr "no se puede establecer el grupo suplementario"
+
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "no se puede establecer el ID del grupo a %ld"
+
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "no se puede establecer el ID del usuario a %ld"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Modo de empleo: %s [OPCIONES] FICHERO [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"Sobreescribe los FICHERO(s) especificados repetidamente, para hacer más "
+"difícil\n"
+"la recuperación de los datos incluso utilizando hardware muy costoso.\n"
+"\n"
+
+#: src/shred.c:174
+#, fuzzy, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force cambia los permisos para permitir la escritura si es "
+"necesario\n"
+" -n, --iterations=N sobreescribe N veces en vez de lo predeterminado (%d)\n"
+" -s, --size=N efectúa el `shred' sobre este número de bytes\n"
+" (se permiten los sufijos K, M y G)\n"
+
+#: src/shred.c:180
+#, fuzzy
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove trunca y borra el fichero después de sobreescribirlo\n"
+" -v, --verbose muestra el progreso\n"
+" -x, --exact no redondea hacia arriba los tamaños de los ficheros hasta "
+"el\n"
+" siguiente bloque completo; este es el comportamiento\n"
+" predeterminado para los ficheros no regulares\n"
+" -z, --zero añade una sobreescritura final con ceros para ocultar la\n"
+" acción de esta orden\n"
+" - efectúa shred en la salida estándar\n"
+
+#: src/shred.c:189
+#, fuzzy
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"Borra los FICHERO(s) si se especifica --remove (-u). La acción "
+"predeterminada\n"
+"es no borrar los ficheros porque es habitual operar sobre ficheros de\n"
+"dispositivo como /dev/hda, y dichos ficheros normalmente no se deben "
+"borrar.\n"
+"Cuando se opera sobre ficheros regulares, la mayor parte de la gente utiliza "
+"la\n"
+"opción --remove.\n"
+"\n"
+
+#: src/shred.c:199
+#, fuzzy
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"PRECAUCIÓN: Tenga en cuenta que shred se basa en una importante suposición:\n"
+"que el sistema de ficheros sobreescribe los datos en el mismo sitio. Esta "
+"es\n"
+"la forma tradicional de hacer las cosas, pero muchos diseños modernos de\n"
+"sistemas de ficheros no satisfacen esta suposición. Los siguientes son "
+"ejemplos\n"
+"de sistemas de ficheros en los que shred no es efectivo:\n"
+"\n"
+
+#: src/shred.c:207
+#, fuzzy
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"* sistemas de ficheros con estructura de registro o con versiones, como\n"
+" los que suministran AIX y Solaris (y JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* sistemas de ficheros que escriben datos redundantes y siguen adelante\n"
+" incluso si algunas escrituras fallan, tales como los sistemas de ficheros\n"
+" basados en RAID\n"
+"\n"
+"* sistemas de ficheros que hacen `snapshots', tales como el servidor NFS de\n"
+" Network Appliance\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+#, fuzzy
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+"* sistemas de ficheros que hacen caché en sitios temporales, tales como\n"
+" los clientes de NFS versión 3\n"
+"\n"
+"* sistemas de ficheros comprimidos\n"
+"\n"
+"Además, respaldos del sistema de ficheros y espejos remotos pueden contener\n"
+"copias del fichero que no se pueden borrar, y eso permite recuperar después "
+"un\n"
+"fichero al que se le haya hecho shred.\n"
+
+#: src/shred.c:303
+#, fuzzy, c-format
+msgid "%s: fdatasync failed"
+msgstr "%s: seek falló"
+
+#: src/shred.c:314
+#, fuzzy, c-format
+msgid "%s: fsync failed"
+msgstr "%s: seek falló"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s: no se puede rebobinar"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: paso %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s: error al escribir en el desplazamiento %s"
+
+#: src/shred.c:478
+#, fuzzy, c-format
+msgid "%s: lseek failed"
+msgstr "%s: seek falló"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s: fichero demasiado grande"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: paso %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: paso %lu/%lu (%s)...%s/%s %d%%"
+
+#: src/shred.c:776
+#, fuzzy, c-format
+msgid "%s: fstat failed"
+msgstr "fallo en `stat'"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: tipo de fichero inválido"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: el fichero tiene un tamaño negativo"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s: error al truncar"
+
+#: src/shred.c:889
+#, fuzzy, c-format
+msgid "%s: fcntl failed"
+msgstr "%s: seek falló"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s: no se puede efectuar shred un descriptor de fichero de sólo añadir"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: borrando"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: renombrado a %s"
+
+#: src/shred.c:1018
+#, fuzzy, c-format
+msgid "%s: failed to remove"
+msgstr "%s: fichero demasiado grande"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: borrado"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, fuzzy, c-format
+msgid "%s: failed to close"
+msgstr "%s: fichero demasiado largo"
+
+#: src/shred.c:1065
+#, fuzzy, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: fichero demasiado largo"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: número inválido de pasos"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "se han especificado varias ficheros de salida"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: tamaño de fichero inválido"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Modo de empleo: %s [OPCIÓN]... ÚLTIMO\n"
+" o bien: %s [OPCIÓN]... PRIMERO ÚLTIMO\n"
+" o bien: %s [OPCIÓN]... PRIMERO INCREMENTO ÚLTIMO\n"
+
+#: src/shuf.c:57
+#, fuzzy
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"Extrae las partes seleccionadas de cada FICHERO en la salida estándar:\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "se han especificado varias opciones -l o -t"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "número inválido %s"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "ancho de línea inválido: %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr "se han especificado varias ficheros de salida"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "no se puede combinar la señal con -l o -t"
+
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr "operando extra `%s'"
+
+#: src/sleep.c:47
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Modo de empleo: %s NÚMERO[SUFIJO]...\n"
+" o bien: %s OPCIÓN\n"
+"Hace una pausa de NÚMERO segundos. El SUFIJO puede ser `s' para segundos\n"
+"(predeterminado), `m' para minutos, `h' para horas o `d' para días.\n"
+"Al contrario de la mayoría de las implementaciones que exigen que NÚMERO "
+"sea\n"
+"un entero, aquí NÚMERO puede ser un número de coma flotante arbitrario.\n"
+"\n"
+
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "intervalo de tiempo inválido `%s'"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "no se puede leer el reloj de tiempo real"
+
+#: src/sort.c:310
+#, fuzzy
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"Muestra la concatenación ordenada de todos los FICHERO(s) en la salida\n"
+"estándar.\n"
+"\n"
+"Opciones de ordenación:\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+#, fuzzy
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks descarta los espacios en blanco al principio\n"
+" -d, --dictionary-order considera sólo los caracteres alfanuméricos\n"
+" y los espacios\n"
+" -f, --ignore-case convierte las minúsculas en mayúsculas\n"
+
+#: src/sort.c:326
+#, fuzzy
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort compara de acuerdo con el valor numérico\n"
+" -i, --ignore-nonprinting considera sólo los caracteres imprimibles\n"
+" -M, --month-sort compara (desconocido) < 'JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compara de acuerdo con el valor numérico de\n"
+" la cadena\n"
+" -r, --reverse invierte el resultado de las comparaciones\n"
+"\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+# Sugerencia para la -c:
+# comprueba si los ficheros ya están ordenados, pero no los ordena.
+# Si lo que buscas es algo corto, sugiero cambiar "y no ordena"
+# por "pero no ordena", o bien "sin ordenar[los]". sv+
+#: src/sort.c:346
+#, fuzzy
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+"Otras opciones:\n"
+"\n"
+" -c, --check comprueba si la entrada están ordenada; no ordena\n"
+" -k, --key=POS1[,POS2] comienza una clave en POS1 y la termina en POS2\n"
+" (origen 1)\n"
+" -m, --merge mezcla ficheros que ya están ordenados, no ordena\n"
+" -o, --output=FICHERO escribe el resultado en FICHERO, en lugar de la\n"
+" salida estándar\n"
+" -s, --stable estabiliza la ordenación desactivando la\n"
+" comparación de último recurso\n"
+" -S, --buffer-size=TAMAÑO utiliza TAMAÑO para el búfer de memoria "
+"principal\n"
+
+#: src/sort.c:351
+#, fuzzy, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=SEP usa SEP en lugar de la transición de un\n"
+" no espacio a un espacio\n"
+" -T, --temporary-directory=DIR usa DIR para los ficheros temporales,\n"
+" no $TMPDIR ni %s; varias opciones\n"
+" especifican varios directorios\n"
+" -u, --unique con -c, comprueba estrictamente el orden;\n"
+" sin -c; muestra solamente la primera de\n"
+" una tanda igual\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -z, --zero-terminated termina las líneas con el byte 0, no con nueva "
+"línea\n"
+
+#: src/sort.c:363
+#, fuzzy
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"POS es F[.C][OPCIONES], donde F es el número de campo y C la posición del\n"
+"carácter en el campo. OPCIONES se compone de una o más de las opciones de\n"
+"ordenación de una letra, lo cual deshabilita las opciones de ordenación\n"
+"global para esa clave. Si no se da ninguna clave, usa la línea entera\n"
+"como clave.\n"
+"\n"
+"TAMAÑO puede estar seguido por lo siguientes sufijos multiplicativos:\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"% 1% de memoria, b 1, K 1024 (predeterminado), etc con M, G, T, P, E, Z, Y.\n"
+"\n"
+"Si no se especifica ningún FICHERO o FICHERO es `-', lee la entrada\n"
+"estándar.\n"
+"\n"
+"*** ATENCIÓN ***\n"
+"El locale especificado en el entorno afecta a la forma de ordenación.\n"
+"Establezca LC_ALL=C para obtener la forma de ordenación tradicional que\n"
+"utiliza los valores de los bytes originales.\n"
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "escribiendo en %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "no se puede crear un fichero temporal"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "fallo al abrir"
+
+#: src/sort.c:758
+#, fuzzy
+msgid "fflush failed"
+msgstr "actualizando el fichero"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "error al cerrar"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "fallo al abrir"
+
+#: src/sort.c:871
+#, fuzzy, c-format
+msgid "couldn't execute %s"
+msgstr "no se puede ejecutar %s"
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "no se puede crear un fichero temporal"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "no se puede crear un fichero temporal"
+
+#: src/sort.c:920
+#, fuzzy, c-format
+msgid "couldn't execute %s -d"
+msgstr "no se puede ejecutar %s"
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "no se puede crear el directorio %s"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "error al escribir"
+
+#: src/sort.c:975
+#, fuzzy, c-format
+msgid "warning: cannot remove: %s"
+msgstr "no se puede borrar %s"
+
+# ¿Es esto correcto? ¿Qué significa?
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "tamaño de la ordenación"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "fallo en `stat'"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "fallo al leer"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: fuera de secuencia: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "salida de error estándar"
+
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: especificación de campo inválida `%s'"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: contador inválido al comienzo de `%s'"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "número inválido después de`-'"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "número inválido después de `.'"
+
+# No estoy muy seguro. Comprobar.
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "carácter extraño en el especificador de campo"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "se han especificado varias opciones -l o -t"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "número inválido al comienzo del campo"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "el número de campo es cero"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "el desplazamiento de caracteres es cero"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "número inválido después de `,'"
+
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "el operando extra `%s' no está permitido con -c"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Modo de empleo: %s [OPCIÓN] [FICHERO [PREFIJO]]\n"
+
+#: src/split.c:110
+#, fuzzy
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"Corta FICHERO en trozos de tamaño fijo y los vuelca en PREFIJOaa, "
+"PREFIJOab...\n"
+"El prefijo por defecto es `x'. Si no se especifica FICHERO, o fichero es "
+"`-',\n"
+"lee la entrada estándar.\n"
+"\n"
+
+# FIXME: ¿Ahora dos espacios es el estándar para mensajes de continuación?
+# (before each output file...)
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=N utiliza sufijos de longitud N (por omisión %d)\n"
+" -b, --bytes=TAMAÑO escribe TAMAÑO bytes en cada fichero de salida\n"
+" -C, --line-bytes=BYTES escribe un máximo de BYTES bytes sin cortar "
+"líneas\n"
+" -d, --numeric-suffixes utiliza sufijos numéricos en vez de alfabéticos\n"
+" -l, --lines=NÚMERO pone NÚMERO de líneas en cada fichero de salida\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose muestra un diagnóstico en la salida de error\n"
+" estándar antes de que cada fichero sea abierto\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"TAMAÑO puede tener un factor indicado con el sufijo: b para 512, k para 1K,\n"
+"m para 1Meg\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "Se han agotado los sufijos para los ficheros de salida"
+
+#: src/split.c:211
+#, fuzzy, c-format
+msgid "creating file %s\n"
+msgstr "creando fichero `%s'\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "no se puede trocear de varias formas distintas"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: longitud del sufijo inválida"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: número de bytes inválido"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: número de líneas inválido"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "opción de contador de líneas -%s%c... demasiado grande"
+
+#: src/split.c:518
+#, c-format
+msgid "invalid number of lines: 0"
+msgstr "número de líneas inválido: 0"
+
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s: opción no reconocida `%c%s'\n"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%%%c: directiva inválida"
+
+#: src/stat.c:726
+#, fuzzy, c-format
+msgid "warning: backslash at end of format"
+msgstr "secuencia de escape inválida al final de la cadena"
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr "no se puede leer la información del sistema de ficheros para %s"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Modo de empleo: %s [OPCIÓN] FICHERO...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+#, fuzzy
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"\n"
+"Formatos válidos para ficheros (sin --filesystem)\n"
+"\n"
+" %A Derechos de acceso en forma legible\n"
+" %a Derechos de acceso en octal\n"
+" %B El tamaño en bytes de cada bloque indicado por `%b'\n"
+" %b Número de bloques asignados (véase %B)\n"
+
+#: src/stat.c:857
+#, fuzzy
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+" %D Número de dispositivo en hexadecimal\n"
+" %d Número de dispositivo en decimal\n"
+" %F Tipo de fichero\n"
+" %f Modo en hexadecimal\n"
+" %G Nombre de grupo del propietario\n"
+" %g ID del grupo del propietario\n"
+
+#: src/stat.c:865
+#, fuzzy
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+" %h Número de enlaces duros\n"
+" %i Número de nodo-i\n"
+" %N Nombre de fichero entrecomillado desreferenciado si era un enlace\n"
+" simbólico\n"
+" %n Nombre del fichero\n"
+" %o tamaño del bloque de E/S\n"
+" %s Tamaño total, en bytes\n"
+" %T Tipo de dispositivo secundario en hexadecimal\n"
+" %t Tipo de dispositivo principal en hexadecimal\n"
+
+#: src/stat.c:875
+#, fuzzy
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+" %U Nombre de usuario del propietario\n"
+" %u ID de usuario del propietario\n"
+" %X Fecha de último acceso como segundos desde la Época\n"
+" %x Fecha de último acceso\n"
+" %Y Fecha de última modificación como segundos desde la Época\n"
+" %y Fecha de última modificación\n"
+" %Z Fecha de último cambio como segundos desde la Época\n"
+" %z Fecha de último cambio\n"
+"\n"
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"Formatos válidos para sistemas de ficheros:\n"
+"\n"
+" %a Bloques libres disponibles para el no superusuario\n"
+" %b Total de bloques de datos en el sistema de ficheros\n"
+" %c Total de nodos de ficheros en el sistema de ficheros\n"
+" %d Nodos de ficheros libres en el sistema de ficheros\n"
+" %f Bloques libres en el sistema de ficheros\n"
+
+#: src/stat.c:896
+#, fuzzy
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+" %i id del sistema de ficheros en hexadecimal\n"
+" %l Longitud máxima de los nombres de ficheros\n"
+" %n Nombre del fichero\n"
+" %s Tamaño de bloque de transferencia óptima\n"
+" %T Tipo de forma legible\n"
+" %t Tipo en hexadecimal\n"
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Modo de empleo: %s [-F DISPOSITIVO] [--file=DISPOSITIVO] [OPCIONES]...\n"
+" o bien: %s [-F DISPOSITIVO] [--file=DISPOSITIVO] [-a|--all]\n"
+" o bien: %s [-F DISPOSITIVO] [--file=DISPOSITIVO] [-g|--save]\n"
+
+# Eso de los "humanos" en español suena un poco raro. ¿no? sv
+# Por acuerdo, usamos 'el' terminal em+
+# Añado comillas en '-' em+
+# FIXME. Comunicar primero al autor. sv+
+# Sistema subyacente ?? , mejor dejar 'sistema' a secas em+
+# Depende, ¿qué ocurre con los compiladores cruzados?
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Muestra o establece las características de la terminal\n"
+"\n"
+" -a, --all muestra todos los valores actuales en forma legible para\n"
+" humanos\n"
+" -g, --save muestra todos los valores actuales en forma legible para\n"
+" ttys\n"
+" -F, --file=DISP abre y utiliza el DISPositivo especificado en lugar de la\n"
+" entrada estándar\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+"\n"
+"Un - opcional antes de VALOR indica negación. Un * marca valores no POSIX.\n"
+"El sistema subyacente define qué valores están disponibles.\n"
+
+# Contexto del shell ? , ¿qué es eso? em+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"\n"
+"Caracteres especiales:\n"
+" * dsusp CAR el CARácter enviará una señal de alto a la terminal una "
+"vez\n"
+" que se haya limpiado la entrada\n"
+" eof CAR el CARácter enviará un fin de línea (termina la entrada)\n"
+" eol CAR el CARácter terminará la línea\n"
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+" * eol2 CAR CARácter alternativo para terminar la línea\n"
+" erase CAR el CARácter borrará el último carácter tecleado\n"
+" intr CAR el CARácter enviará una señal de interrupción\n"
+" kill CAR el CARácter borrará la línea actual\n"
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+" * lnext CAR el CARácter introducirá el siguiente carácter comentado\n"
+" quit CAR el CARácter enviará una señal de salida\n"
+" * rprnt CAR el CARácter redibujará la línea actual\n"
+" start CAR el CARácter reiniciará la salida después de haberla "
+"detenido\n"
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+" stop CAR el CARácter detendrá la salida\n"
+" susp CAR el CARácter enviará una señal de alto a la terminal\n"
+" * swtch CAR el CARácter establecerá un contexto diferente de shell\n"
+" * werase CAR el CARácter borrará la última palabra tecleada\n"
+
+# FIXME: Falta un espacio ¿?
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"\n"
+"Valores especiales:\n"
+" N establece la velocidad de entrada y salida a N baudios\n"
+" * cols N dice al núcleo que la terminal tiene N columnas\n"
+" * columns N igual que cols N\n"
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+" ispeed N establece la velocidad de entrada a N\n"
+" * line N utiliza la disciplina de línea N\n"
+" min N con -icanon, establece a N caracteres como mínimo para una\n"
+" lectura completada\n"
+" ospeed N establece la velocidad de salida a N\n"
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+" * rows N dice al núcleo que la terminal tiene N líneas\n"
+" * size muestra el número de líneas y columnas de acuerdo con el "
+"núcleo\n"
+" speed muestra la velocidad de la terminal\n"
+" time N con -icanon, establece el tiempo fuera de lectura en N\n"
+" décimas de segundo\n"
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"\n"
+"Valores de control:\n"
+" [-]clocal desactiva las señales de control del módem\n"
+" [-]cread permite que se reciba entrada\n"
+" * [-]crtscts permite negociación RTS/CTS\n"
+" csN establece el tamaño del carácter en N bits, N en [5..8]\n"
+
+# ## en -cread -> permite que se reciba entrada
+# ## vale.
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+" [-]cstopb utiliza dos bits de paro por carácter (uno con `-')\n"
+" [-]hup manda una señal de colgar cuando el último proceso cierra\n"
+" la tty\n"
+" [-]hupcl igual que [-]hup\n"
+" [-]parenb genera un bit de paridad en la salida y espera un bit de\n"
+" paridad en la entrada\n"
+" [-]parodd establece paridad impar (incluso con `-')\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"\n"
+"Valores de entrada:\n"
+" [-]brkint `breaks' causan una señal de interrupción\n"
+" [-]icrnl traduce el retorno de carro a nueva línea\n"
+" [-]ignbrk descarta los caracteres de `break'\n"
+" [-]igncr descarta los retornos de carro\n"
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+" [-]ignpar descarta los caracteres con error de paridad\n"
+" * [-]imaxbel emite un pitido y no limpia un búfer de entrada lleno con "
+"un\n"
+" carácter\n"
+" [-]inlcr traduce nueva línea a retorno de carro\n"
+" [-]inpck permite la revisión de paridad de entrada\n"
+" [-]istrip borra el bit alto (8º) de los caracteres de entrada\n"
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+" * [-]iuclc traduce de caracteres en mayúscula a minúscula\n"
+" * [-]ixany deja que cualquier carácter reinicie la entrada, no sólo\n"
+" el carácter de inicio\n"
+" [-]ixoff permite el envío de caracteres de inicio/alto\n"
+" [-]ixon permite el control de flujo XON/XOFF\n"
+" [-]parmrk marca errores de paridad (con la secuencia de caracteres "
+"255-0)\n"
+" [-]tandem igual que [-]ixoff\n"
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"\n"
+"Valores de salida:\n"
+" * bsN estilo de retardo de retroceso, N en [0..1]\n"
+" * crN estilo de retardo de retorno de carro, N en [0..3]\n"
+" * ffN estilo de retardo de salto de página, N en [0..1]\n"
+" * nlN estilo de retardo de nueva línea, N in [0..1]\n"
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+" * [-]ocrnl traduce retorno de carro a nueva línea\n"
+" * [-]ofdel utiliza caracteres de borrado para relleno en lugar de\n"
+" caracteres nulos\n"
+" * [-]ofill utiliza caracteres de relleno en lugar de tiempo para "
+"retardos\n"
+" * [-]olcuc traduce caracteres en minúscula a mayúscula\n"
+" * [-]onlcr traduce nueva línea a retorno de carro-nueva línea\n"
+" * [-]onlret nueva línea realiza un retorno de carro\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+" * [-]onocr no muestra retornos de carro en la primera columna\n"
+" [-]opost postprocesa salida\n"
+" * tabN estilo de retardo de tabulador horizontal, N en [0..3]\n"
+" * tabs igual que tab0\n"
+" * -tabs igual que tab3\n"
+" * vtN estilo de retardo de tabulador vertical, N en [0..1]\n"
+
+# lo del carácter de matar es un poco fuerte, ¿no? sv
+# echo = muestra, mejor que repite, aquí, creo. gerardo
+# perdería parte del significado. sv
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"\n"
+"Valores locales:\n"
+" [-]crterase repite los caracteres de borrado como\n"
+" retroceso-espacio-retroceso\n"
+" * crtkill mata toda la línea obedeciendo los valores echoprt y echoe\n"
+" * -crtkill mata toda la línea obedeciendo los valores echoctl y echok\n"
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+" * [-]ctlecho repite los caracteres de control en notación gorro (`^c')\n"
+" [-]echo repite los caracteres de entrada\n"
+" * [-]echoctl igual que [-]ctlecho\n"
+" [-]echoe igual que [-]crterase\n"
+" [-]echok repite una nueva línea después de un carácter de matar\n"
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+" * [-]echoke igual que [-]crtkill\n"
+" [-]echonl repite nueva línea aún si no está repitiendo otros "
+"caracteres\n"
+" * [-]echoprt repite los caracteres borrados en orden inverso, entre\n"
+" `\\' y '/'\n"
+" [-]icanon permite los caracteres especiales erase, kill, werase,\n"
+" y rprnt\n"
+" [-]iexten permite caracteres especiales no-POSIX\n"
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+" [-]isig permite los caracteres especiales interrupt, quit, y "
+"suspend\n"
+" [-]noflsh no permite limpieza después de los caracteres especiales\n"
+" interrupt y quit\n"
+" * [-]prterase igual que [-]echoprt\n"
+" * [-]tostop detiene trabajos en `background' que tratan de escribir a\n"
+" la terminal\n"
+" * [-]xcase con icanon, escapa con `\\' para caracteres en mayúscula\n"
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+"\n"
+"Valores de combinación:\n"
+" * [-]LCASE igual que [-]lcase\n"
+" cbreak igual que -icanon\n"
+" -cbreak igual que icanon\n"
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+" cooked igual que caracteres brkint ignpar istrip icrnl ixon\n"
+" opost isig icanon, eof y eol a sus valores por omisión\n"
+" -cooked igual que raw\n"
+" crt igual que echoe echoctl echoke\n"
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+" dec igual que echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq igual que [-]ixany\n"
+" ek caracteres erase y kill a sus valores por omisión\n"
+" evenp igual que parenb -parodd cs7\n"
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+" -evenp igual que -parenb cs8\n"
+" * [-]lcase igual que xcase iuclc olcuc\n"
+" litout igual que -parenb -istrip -opost cs8\n"
+" -litout igual que parenb istrip opost cs7\n"
+" nl igual que -icrnl -onlcr\n"
+" -nl igual que icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+" oddp igual que parenb parodd cs7\n"
+" -oddp igual que -parenb cs8\n"
+" [-]parity igual que [-]evenp\n"
+" pass8 igual que -parenb -istrip cs8\n"
+" -pass8 igual que parenb istrip cs7\n"
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+" raw igual que -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw igual que cooked\n"
+
+#: src/stty.c:709
+#, fuzzy
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+" sane igual que cread -ignbrk brkint -inlcr -igncr icrnl\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, y todos los\n"
+" caracteres especiales a sus valores por omisión.\n"
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"Maneja la línea tty conectada a la entrada estándar. Sin argumentos,\n"
+"muestra la tasa de baudios, la disciplina de línea, y desviaciones con\n"
+"respecto de `stty sane'. En valores, el CARácter es tomado literalmente,\n"
+"o codificado como en ^c, 0x37, 0177 ó 127; los valores especiales ^- o\n"
+"undef son utilizados para no permitir caracteres especiales.\n"
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr "sólo se puede especificar un dispositivo"
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+"las opciones para estilos de salida explícitos y legibles para terminal son\n"
+"mutuamente excluyentes"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr ""
+"cuando se especifica un estilo de salida, no se pueden establecer los modos"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: no se pudo reiniciar el modo `non-blocking'"
+
+#: src/stty.c:885 src/stty.c:995
+#, fuzzy, c-format
+msgid "invalid argument %s"
+msgstr "argumento inválido: %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, fuzzy, c-format
+msgid "missing argument to %s"
+msgstr "falta el argumento de `%s'"
+
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "ancho de línea inválido: %s"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: no se pudieron realizar todas las operaciones solicitadas"
+
+# Me temo que new_mode no se puede traducir. sv
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "new_mode: modo\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: no hay información sobre tamaño para este dispositivo"
+
+#: src/stty.c:1888
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "argumento entero inválido `%s'"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Contraseña:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: no se puede abrir /dev/tty"
+
+# Aquí habla de "groups", en plural. No se pueden establecer los
+# grupos. gerardo
+# Cierto, eso es literalmente, pero: ¿"su" puede cambiar a varios grupos
+# o a uno cada vez? sv
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "no se puede establecer el grupo"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "no se puede establecer el id del grupo"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "no se puede establecer el id del usuario"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Modo de empleo: %s [OPCIÓN]... [-] [USUARIO [ARG]...]\n"
+
+# login shell no lo traduciría em+
+# Caparazón de entrada. Bueno, vale, `shell' de entrada. gerardo
+# Si acaso shell de inicio. Pero sólo si acaso. sv
+#: src/su.c:386
+#, fuzzy
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Cambia el identificador efectivo de usuario y de grupo al del USUARIO.\n"
+"\n"
+" -, -l, --login hace al shell un shell de `login'\n"
+" -c, --command=ORDEN pasa una sola ORDEN al shell con -c\n"
+" -f, --fast pasa -f al shell (para csh o tcsh)\n"
+" -m, --preserve-environment no borra las variables de entorno\n"
+" -p igual que -m\n"
+" -s, --shell=SHELL ejecuta SHELL si /etc/shells lo permite\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+"\n"
+"Un simple - implica -l. Si no se da el USUARIO, se supone root.\n"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "el usuario %s no existe"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "contraseña incorrecta"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "usando el shell restringido %s"
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "atención: no se puede cambiar al directorio %s"
+
+# usa bloques -> con bloques ... así no se repite tanto :) ipg
+# Creo que está bien así em+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Muestra la suma de comprobación y el número de bloques para cada FICHERO.\n"
+"\n"
+" -r incompatible con -s, usa el algoritmo de BSD, con bloques de "
+"1K\n"
+" -s, --sysv usa el algoritmo de System V, con bloques de 512 bytes\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+"Guarda los bloques cambiados en el disco, actualiza el superbloque.\n"
+"\n"
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "no se tendrá en cuenta ningún argumento"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+# ¿Qué tal poner --help y --version como los puse yo en diff y find?
+# --help Muestra esta ayuda.,
+# -v --version Da información sobre la versión del programa.
+# Lo digo por aquello que hablamos que el `y finaliza' sobra, ya
+# que es el comportamiento que se define. ipg
+#
+# Vale, si convences a Enrique... sv
+#
+# Apúntame a la propuesta. tb
+#
+# Pues entonces ya somos tres. Habría que hablarlo seriamente... sv
+#
+# Aunque ya lo hemos puesto así en todos sitios ... casi podríamos
+# dejarlo (daño no hace, eso sí es verdad) ipg
+#
+# Lo dejaremos para otra ocasión. Ya os avisaré. sv
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help muestra esta ayuda y finaliza\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version informa de la versión y finaliza\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Escribe cada FICHERO en la salida estándar comenzando por la última línea\n"
+"Si no se especifica FICHERO o FICHERO es `-', lee la entrada estándar.\n"
+"\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before añade el separador antes de cada línea, en lugar\n"
+" de añadirlo después\n"
+" -r, --regex interpreta el separador como una expresión "
+"regular\n"
+" -s, --separator=CADENA usa CADENA como separador, en lugar de un salto "
+"de\n"
+" línea\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, c-format
+msgid "%s: seek failed"
+msgstr "%s: seek falló"
+
+#: src/tac.c:265
+#, fuzzy, c-format
+msgid "record too large"
+msgstr "%s: fichero demasiado grande"
+
+#: src/tac.c:459
+#, fuzzy, c-format
+msgid "cannot create temporary file %s"
+msgstr "no se puede crear un fichero temporal"
+
+#: src/tac.c:466
+#, fuzzy, c-format
+msgid "cannot open %s for writing"
+msgstr "no se puede abrir %s para lectura"
+
+#: src/tac.c:487 src/tac.c:494
+#, fuzzy, c-format
+msgid "%s: write error"
+msgstr "error de escritura"
+
+# "la cadena" ¿de dónde sale eso? sv
+# Bueno, siempre he traducido array por cadena, cuando
+# he tenido que hacerlo. Lo siento
+# ¿Qué pongo? ¿secuencia de caracteres nula? em+
+# ¿Y "el separador no puede ser vacío"? sv
+# La única cosa que es vacía de la que he oido hablar es el famoso
+# conjunto ese. Las demás cosas o están vacías o no están, pero
+# no 'son' vacías em
+# Yo pondría `el separador no puede ser nulo'. No es muy ortodoxo,
+# pero no queda mal. ipg
+# Por mí de acuerdo, lo cambio em
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "el separador no puede ser nulo"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Muestra las últimas %d líneas de cada FICHERO en la salida estándar.\n"
+"Con más de un FICHERO, precede a cada grupo de líneas con una cabecera.\n"
+"Si no se especifica FICHERO o FICHERO es `-', lee la entrada estándar.\n"
+"\n"
+
+#: src/tail.c:229
+#, fuzzy
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry sigue intentando abrir un fichero incluso si es\n"
+" inaccesible cuando tail comienza o si se "
+"vuelve\n"
+" inaccesible más tarde -- útil solamente con -f\n"
+" -c, --bytes=N muestra los últimos N bytes\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={name|descriptor}] muestra a medida que el fichero crece;\n"
+" -f, --follow, y --follow=descriptor son\n"
+" equivalentes\n"
+" -F lo mismo que --follow=name --retry\n"
+
+#: src/tail.c:244
+#, fuzzy, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines muestra las últimas N líneas en lugar de %d\n"
+" --max-unchanged-stats=N\n"
+" con --follow=name, reabre un FICHERO que no ha\n"
+" cambiado de tamaño después de N (por omisión %d)\n"
+" iteraciones, para ver si ha sido borrado o\n"
+" renombrado (este es el caso usual para ficheros\n"
+" de registro que rotan)\n"
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID con -f, termina después de que el ID del "
+"proceso,\n"
+" PID, muere\n"
+" -q, --quiet, --silent no presenta cabeceras para cada fichero\n"
+" -s, --sleep-interval=S con -f, espera aproximadamente S segundos entre\n"
+" iteraciones (por omisión 1.0)\n"
+" -v, --verbose presenta siempre las cabeceras para cada fichero\n"
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"Si el primer carácter de N (el número de bytes o líneas) es un `+',\n"
+"comienza a mostrar en el elemento N-ésimo contando desde el principio\n"
+"de cada fichero, en otro caso, muestra los últimos N elementos del\n"
+"fichero. N puede tener diferentes sufijos que indican un factor:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"Con --follow (-f), tail de forma predeterminada seguirá el descriptor del\n"
+"fichero, lo que significa que si se renombra un fichero al que se le hace "
+"tail\n"
+"tail continuará siguiendo su final. "
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"Este comportamiento predeterminado no es\n"
+"deseable cuando lo que de verdad quiere seguir es el nombre real del "
+"fichero,\n"
+"no el descriptor del fichero (p.ej: rotación de ficheros de registro). "
+"Utilice\n"
+"--follow=nombre en tal caso. Esto hace que tail siga el fichero mencionado\n"
+"reabriéndolo periódicamente para ver si ha sido borrado o recreado por "
+"algún\n"
+"otro programa.\n"
+
+# df=descriptor de fichero, por supuesto... sv
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "cerrando %s (df=%d)"
+
+#: src/tail.c:411
+#, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: no se puede desplazar a la posición relativa %s"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s: no se puede desplazar a la posición relativa al final %s"
+
+#: src/tail.c:867
+#, fuzzy, c-format
+msgid "%s has become inaccessible"
+msgstr "`%s' se ha vuelto inaccesible"
+
+#: src/tail.c:884
+#, fuzzy, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+"`%s' ha sido reemplazado por un fichero al que no se le puede hacer tail;\n"
+"abandono con este nombre"
+
+#: src/tail.c:905
+#, fuzzy, c-format
+msgid "%s has become accessible"
+msgstr "`%s' se ha vuelto accesible"
+
+#: src/tail.c:913
+#, fuzzy, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "`%s' ha aparecido; siguiendo el final del nuevo fichero"
+
+#: src/tail.c:924
+#, fuzzy, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "`%s' ha sido reemplazado; siguiendo el final del nuevo fichero"
+
+#: src/tail.c:1025
+#, fuzzy, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: no se pudo reiniciar el modo `non-blocking'"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: fichero truncado"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "no queda ningún fichero"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+"%s: no se puede seguir el final de este tipo de fichero; abandono\n"
+"con este nombre"
+
+#: src/tail.c:1439
+#, fuzzy, c-format
+msgid "number in %s is too large"
+msgstr "el número de campo %s es demasiado grande"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr "%s: número máximo de stats entre aperturas inválido"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: PID inválido"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: número de segundos inválido"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, fuzzy, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "atención: --retry solamente es útil cuando se sigue por nombre"
+
+# FIXME: "when following"? when following by what? sv
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr "atención: PID descartado; --pid=PID solamente es útil cuando se sigue"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "atención: no se admite --pid=PID en este sistema"
+
+#: src/tail.c:1667
+#, c-format
+msgid "cannot follow %s by name"
+msgstr "no se puede seguir %s por el nombre"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr "atención: seguir la entrada estándar indefinidamente no es efectivo"
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Copia la entrada estándar a cada FICHERO, y también a salida estándar.\n"
+"\n"
+" -a, --append añade a los FICHEROs dados, no los sobreescribe\n"
+" -i, --ignore-interrupts no hace caso a las señales de interrupción\n"
+
+#: src/tee.c:71
+#, fuzzy
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Sin FICHERO, o cuando FICHERO es -, lee la entrada estándar.\n"
+
+#: src/test.c:125
+#, fuzzy, c-format
+msgid "missing argument after %s"
+msgstr "falta el argumento de `%s'"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "número inválido %s"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "se esperaba ')'\n"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "se esperaba ')', se encontró %s\n"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: se esperaba un operador unario\n"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "-nt no acepta -l\n"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "-ef no acepta -l\n"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "-ot no acepta -l\n"
+
+#: src/test.c:368
+#, fuzzy
+msgid "unknown binary operator"
+msgstr "operador binario desconocido\n"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: se esperaba un operador binario\n"
+
+#: src/test.c:694
+#, fuzzy
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Modo de empleo: test EXPRESIÓN\n"
+" o bien: [ EXPRESIÓN ]\n"
+" o bien: [ OPCIÓN\n"
+"Termina con el estado determinado por EXPRESIÓN.\n"
+"\n"
+
+#: src/test.c:701
+#, fuzzy
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"Modo de empleo: test EXPRESIÓN\n"
+" o bien: [ EXPRESIÓN ]\n"
+" o bien: [ OPCIÓN\n"
+"Termina con el estado determinado por EXPRESIÓN.\n"
+"\n"
+
+#: src/test.c:707
+#, fuzzy
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"\n"
+"La EXPRESIÓN es verdadera o falsa y determina el estado de salida. Es una "
+"de:\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+"\n"
+" ( EXPRESIÓN ) la EXPRESIÓN es verdadera\n"
+" ! EXPRESIÓN la EXPRESIÓN es falsa\n"
+" EXPRESIÓN1 -a EXPRESIÓN2 la EXPRESIÓN1 y la EXPRESIÓN2 son verdaderas\n"
+" EXPRESIÓN1 -o EXPRESIÓN2 la EXPRESIÓN1 o la EXPRESIÓN2 es verdadera\n"
+
+#: src/test.c:719
+#, fuzzy
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"\n"
+" [-n] CADENA la longitud de la CADENA es distinta de cero\n"
+" -z CADENA la longitud de la CADENA es igual a cero\n"
+" CADENA1 = CADENA2 las cadenas son iguales\n"
+" CADENA1 != CADENA2 las cadenas no son iguales\n"
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" ENTERO1 -eq ENTERO2 el ENTERO1 es igual a ENTERO2\n"
+" ENTERO1 -ge ENTERO2 el ENTERO1 es mayor o igual que ENTERO2\n"
+" ENTERO1 -gt ENTERO2 el ENTERO1 es mayor que ENTERO2\n"
+" ENTERO1 -le ENTERO2 el ENTERO1 es menor o igual que ENTERO2\n"
+" ENTERO1 -lt ENTERO2 el ENTERO1 es menor que ENTERO2\n"
+" ENTERO1 -ne ENTERO2 el ENTERO1 no es igual a ENTERO2\n"
+
+# named pipe -> no lo traduciría em+
+# Yo sí, pero pongo named pipe entre paréntesis. sv+
+# mayor a -> mayor 'que' em+
+# nodo-i -> nodo-í (con acento, porque es de índice) gerardo
+# No, es el i que se pone por ejemplo en $a_i$ (para que me entiendas :-)
+# ¿Tú crees? Yo diría que "inode numbers" es "números de
+# nodo-índice", o "número-í". gerardo
+#
+# Además en el Kernighan y Ritchie viene nodo-i.
+# Bueno... y "ligar", y "header", y... (malditas traducciones)
+#
+# La letra "i" se utiliza muchísimo como índice (soy matemático).
+# Pero jamás la he visto acentuada por ese motivo yendo sola.
+#
+# bit sticky -> bit pegajoso (sugerencia: gerardo)
+# Esto es demasiado fuerte... sv
+#
+# Ouh yeahh!! ¿Y por qué no? Es un juego de palabras entre "S(ave) T(ext)
+# I(mage)"-cky y la palabra "pegajoso", pues el código se queda
+# "pegado" en la memoria. (O se quedaba, hoy día esto no vale para
+# nada.) Iron Maiden
+#
+# ¡Al fin, alguien me lo explica! No está nada mal.
+# Entonces ¿se podría decir el "bit STI"?
+# Ya sabes que cuando uno intenta traducir un juego de palabras, lo que
+# suele suceder es que se lo carga (o bien traduce solamente el juego
+# de palabras perdiendo su verdadero significado).
+#
+# En cambio sí traducís el bit SUID/SGID
+# por-una-cosa-muy-larga. Sugiero dejar las siglas SUID o SGID. gerardo
+# ¿Quieres decir que propones traducir "set-group-ID" por "SGID"?
+# Esto me parecería una buena solución.
+#
+# socket = enchufe. gerardo
+# Este también es un poco fuerte. ¿Conoces a alguien (además de a tí mismo)
+# que utilice este término y se quede tan ancho?
+# ¿Por qué enchufe y no (por ejemplo) conector? sv
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+"\n"
+" FICHERO1 -ef FICHERO2 el FICHERO1 y FICHERO2 tienen los mismos números "
+"de\n"
+" dispositivo y de nodo-i\n"
+" FICHERO1 -nt FICHERO2 el FICHERO1 es más moderno (fecha de "
+"modificación)\n"
+" que FICHERO2\n"
+" FICHERO1 -ot FICHERO2 el FICHERO1 es más antiguo que FICHERO2\n"
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+"\n"
+" -b FICHERO el FICHERO existe y es un fichero especial de bloques\n"
+" -c FICHERO el FICHERO existe y es un fichero especial de caracteres\n"
+" -d FICHERO el FICHERO existe y es un directorio\n"
+" -e FICHERO el FICHERO existe\n"
+
+#: src/test.c:749
+#, fuzzy
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+" -f FICHERO el FICHERO existe y es un fichero regular\n"
+" -g FICHERO el FICHERO existe y tiene cambio-de-ID-de-grupo\n"
+" -G FICHERO el FICHERO existe y su propietario es el ID efectivo de grupo\n"
+" -k FICHERO el FICHERO existe y tiene activo su bit `sticky'\n"
+
+#: src/test.c:756
+#, fuzzy
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+" -L FICHERO el FICHERO existe y es un enlace simbólico\n"
+" -O FICHERO el FICHERO existe y su propietario es el ID efectivo de "
+"usuario\n"
+" -p FICHERO el FICHERO existe y es una tubería nombrada (named pipe)\n"
+" -r FICHERO el FICHERO existe y puede leerse\n"
+" -s FICHERO el FICHERO existe y tiene un tamaño mayor a cero\n"
+
+#: src/test.c:763
+#, fuzzy
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+" -S FICHERO el FICHERO existe y es un `socket'\n"
+" -t [DA] el descriptor de fichero DA (salida estándar por omisión)\n"
+" está abierto en una terminal\n"
+" -u FICHERO el FICHERO existe y su bit de cambio-de-ID-de-usuario está "
+"activo\n"
+" -w FICHERO el FICHERO existe y puede escribirse\n"
+" -x FICHERO el FICHERO existe y puede ejecutarse\n"
+
+# No me acaba de gustar el "Advierta". Se admiten sugerencias.
+#: src/test.c:770
+#, fuzzy
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"Advierta que los paréntesis deben ser precedidos por caracteres de escape\n"
+"(p.e. barras invertidas) para los shells.\n"
+"ENTERO también puede ser -l CADENA, que evalúa la longitud de la CADENA.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "falta un `]'\n"
+
+#: src/test.c:846
+#, fuzzy, c-format
+msgid "extra argument %s"
+msgstr "argumento inválido: %s"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "formato de fecha inválido %s"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "creando %s"
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr "no se puede efectuar `touch' sobre %s"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "estableciendo la fecha de %s"
+
+# En este texto de ayuda, para no estar repitiendo siempre "fecha/hora", he
+# decidido llamar simplemente "fecha" a la "combinación de la fecha y la hora".
+# (o sea, "time stamp" -> fecha)
+# Por el contexto, no creo que haya confusión.
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+"Actualiza la fecha de acceso y modificación de cada FICHERO a la\n"
+"fecha actual.\n"
+"\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a cambia solamente la fecha de acceso\n"
+" -c, --no-create no crea ningún fichero\n"
+" -d, --date=CADENA examina y utiliza CADENA en lugar de la fecha "
+"actual\n"
+" -f (no tiene efecto)\n"
+" -m cambia solamente la fecha de modificación\n"
+
+#: src/touch.c:248
+#, fuzzy
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --reference=FICHERO utiliza la fecha de este FICHERO en lugar de la "
+"fecha\n"
+" actual\n"
+" -t FECHA utiliza [[SS]AA]MMDDhhmm[.ss] en lugar de la "
+"fecha\n"
+" actual\n"
+" --time=PALABRA establece la fecha dada por PALABRA:\n"
+" access atime use (lo mismo que -a)\n"
+" modify mtime (lo mismo que -m)\n"
+
+#: src/touch.c:257
+#, fuzzy
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"Tenga en cuenta que las opciones -d y -t aceptan formatos de\n"
+"hora-fecha distintos.\n"
+
+# (em) Nota: Este mensaje sale, por ejemplo, al escribir
+# "touch logo -r . -t 10101010".
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "no se puede especificar la fecha de dos formas distintas"
+
+#: src/touch.c:389
+#, fuzzy, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+"atención `touch %s' está obsoleto, use `touch -t %04d%02d%02d%02d%02d.%02d'"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Modo de empleo: %s [OPCIÓN]... CONJUNTO1 [CONJUNTO2]\n"
+
+#: src/tr.c:294
+#, fuzzy
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Traduce, comprime y/o borra caracteres de la entrada estándar, escribiendo\n"
+"el resultado en la salida estándar.\n"
+"\n"
+" -c, --complement opera sobre el complemento (sobre cada carácter\n"
+" que no coincida)\n"
+" -d, --delete borra caracteres de CONJUNTO1, no traduce\n"
+" -s, --squeeze-repeats remplaza cada sucesión de entrada de un carácter\n"
+" repetido listado en CONJUNTO1 por una sola\n"
+" aparición de dicho carácter\n"
+" -t, --truncate-set1 trunca CONJUNTO1 a la longitud de CONJUNTO2\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"Los CONJUNTOs se especifican como cadenas de caracteres. La mayoría se\n"
+"representan a sí mismos.\n"
+"Las secuencias válidas son las siguientes:\n"
+"\n"
+" \\NNN carácter con valor octal NNN (de uno a tres dígitos)\n"
+" \\\\ barra invertida\n"
+" \\a pitido audible (BEL)\n"
+" \\b espacio hacia atrás\n"
+" \\f salto de página\n"
+" \\n salto de línea\n"
+" \\r retorno de carro\n"
+" \\t tabulación horizontal\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v tabulación vertical\n"
+" CAR1-CAR2 todos los caracteres comprendidos entre CAR1 y CAR2 "
+"contados\n"
+" en orden ascendente\n"
+" [CAR*] en CONJUNTO2, copias de CAR hasta que se alcance la "
+"longitud\n"
+" de CONJUNTO1\n"
+" [CAR*REPITE] copia REPITE veces CAR; REPITE es octal si comienza con 0\n"
+" [:alnum:] todas las letras y dígitos\n"
+" [:alpha:] todas las letras\n"
+" [:blank:] todos los espacios en blanco horizontales\n"
+" [:cntrl:] todos los caracteres de control\n"
+" [:digit:] todos los dígitos\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] todos los caracteres imprimibles, sin incluir el espacio\n"
+" [:lower:] todas las letras minúsculas\n"
+" [:print:] todos los caracteres imprimibles, incluyendo el espacio\n"
+" [:punct:] todos los caracteres de puntuación\n"
+" [:space:] todos los espacios en blanco horizontales y verticales\n"
+" [:upper:] todas las letras mayúsculas\n"
+" [:xdigit:] todos los números hexadecimales\n"
+" [=CAR=] todos los caracteres que son igual que CAR\n"
+
+# squeezing -> la compresión; lo has usado tú antes :) ipg
+# se me pasó em+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"Se produce la traducción si no se especifican CONJUNTO1 y CONJUNTO2, "
+"siempre\n"
+"y cuando no aparezca la opción -d. -t se puede usar sólo al traducir.\n"
+"CONJUNTO2 se expande a la longitud de CONJUNTO1, repitiendo su último\n"
+"carácter tantas veces como sea necesario. "
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"Los caracteres que sobran en\n"
+"CONJUNTO2 no se tienen en cuenta. Solamente se garantiza que [:lower:]\n"
+"y [:upper:] sean expandidos en orden ascendente; si se usa en\n"
+"CONJUNTO2 al traducir, sólo se pueden usar en parejas, para\n"
+"especificar conversión a mayúsculas. "
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"-s usa CONJUNTO1 si no se está\n"
+"traduciendo ni borrando; si no, la compresión usa CONJUNTO2 después de\n"
+"la traducción o el borrado.\n"
+
+# Me alegro de que te hayas comido el \t. Creo que lo mismo se puede hacer
+# en otro msgstr que hay mucho más atrás. sv
+#: src/tr.c:519
+#, fuzzy, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"atención: la secuencia de escape octal ambigua \\%c%c%c\n"
+"se interpreta como la secuencia de 2 bytes \\0%c%c, `%c'"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "los extremos del rango en `%s-%s' están en orden inverso"
+
+# También necesito aquí ayuda em
+# Yo creo que queda bien. ipg
+#: src/tr.c:838
+#, fuzzy, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "número de repeticiones `%s' inválido en la especificación [c*n]"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "falta el nombre de la clase de caracteres `[::]'"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "falta el carácter de clase de equivalencia `[==]'"
+
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "clase de carácter inválido `%s'"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: el operador de equivalencia de clase debe ser un sólo carácter"
+
+# No estoy muy seguro. Comprobar.
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr "carácter extraño en el especificador de campo"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "el operador de repetición [c*] no puede aparecer en cadena1"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "en cadena2 sólo puede aparecer un operador de repetición [c*]"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "las expresiones [=c=] no pueden aparecer en cadena2 al traducir"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "si no se está truncando conjunto1, cadena2 debe ser no vacía"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"cuando se traducen con clases de caracteres complementarias (que no "
+"coinciden),\n"
+"cadena2 debe hacer corresponder todos los caracteres del dominio a uno solo"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"cuando se traduce, las únicas clases de caracteres que pueden aparecer en\n"
+"cadena2 son 'upper' y 'lower'"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "las expresiones [c*] sólo pueden aparecer en cadena2 al traducir"
+
+#: src/tr.c:1731
+#, fuzzy
+msgid "Two strings must be given when translating."
+msgstr "se deben proporcionar dos cadenas al traducir"
+
+#: src/tr.c:1741
+#, fuzzy
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"cuando se borra sin comprimir repeticiones sólo se puede especificar una "
+"cadena"
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "las construcciones [:upper:] y/o [:lower:] están desalinedas"
+
+#: src/true.c:42
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Modo de empleo: %s NOMBRE\n"
+" o bien: %s OPCIÓN\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Modo de empleo: %s [OPCIÓN] [FICHERO]\n"
+"Escribe una lista completamente ordenada consistente con el orden parcial "
+"en\n"
+"FICHERO. Sin ningún FICHERO, o cuando FICHERO es -, lee la entrada "
+"estándar.\n"
+"\n"
+
+#: src/tsort.c:474
+#, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: la entrada contiene un número impar de elementos"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: la entrada contiene un bucle:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Modo de empleo: %s [OPCIÓN]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Muestra el nombre de fichero de la terminal conectada a la salida estándar.\n"
+"\n"
+" -s, --silent, --quiet no muestra nada, sólo devuelve un valor de salida\n"
+
+# "No es una terminal", ¿no se entendería mejor? gerardo
+# Depende. La terminal se refiere a la terminal física, mientras que
+# tty se refiere al dispositivo "lógico". Es como cuando envías
+# el resultado a una tubería o a un tty. ¿Qué opinas? sv
+#
+# Bueno, fale. Pero ¿es "un tty" o "una tty"? gerardo
+#
+# Depende: ¿Sabes como averiguar si una tortuga es macho o hembra?
+# Se le hacen cosquillas en la barriga, si se pone contento es
+# macho, y si se pone contenta es hembra :-)
+# En este caso yo diría que es así: "no es un [dispositivo] tty" sv
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "no es un `tty'"
+
+# Nota: En Linux, uname -r da como resultado la versión del `kernel'
+# mientras que uname -v de como resultado la fecha de compilación.
+# (una especie de sub-versión).
+#
+# Por sugerencia de Gerardo, pongo distribución para uname -r.
+#
+# Aquí parece que hay algo de confusión entre -v que da la versión del
+# S.O. y --version, que da la versión del POGRAMA uname. ¿No
+# deberíamos especificarlo un poco? Por ejemplo:
+# --version Informa sobre la versión de este programa y finaliza.
+# Finalizo: gerardo
+# Piensa, piensa... Resumiendo:
+# --version informa de la versión de este programa y acaba\n
+#
+# No creo que sea necesario, las opciones --help y --version van siempre
+# al final y son obligatorias de acuerdo con las
+# "normas de programación de GNU" (GNU coding standards).
+# Por cierto, ¿te parece apropiada esta traducción de los "coding standards"?
+# (La verdad es que nunca se me había ocurrido traducirlo hasta ahora mismo).
+#
+# Aunque es cierto que --release da lo que nosotros llamaríamos
+# "versión" (p. ej.: 2.0.0) y -v da la sub-versión (con guión,
+# efectivamente :-). Lo mismo observo en Digital UNIX. gerardo
+#
+# ¿Podrías decirme lo que observas en Digital UNIX exactamente?
+#: src/uname.c:118
+#, fuzzy
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Muestra cierta información del sistema. Sin ninguna OPCIÓN, igual que -s.\n"
+"\n"
+" -a, --all muestra toda la información\n"
+" -s, --sysname muestra el nombre del sistema operativo\n"
+" -n, --nodename muestra el nombre de `host' del nodo de red de la "
+"máquina\n"
+" -r, --release muestra la distribución del sistema operativo\n"
+
+#: src/uname.c:127
+#, fuzzy
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v muestra la versión del sistema operativo\n"
+" -m, --machine muestra el tipo de máquina (hardware)\n"
+" -p, --processor muestra el tipo de procesador\n"
+" -i, --hardware-platfrom muestra la plataforma de hardware\n"
+" -o, --operating-system muestra el sistema operativo\n"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "no se puede obtener el nombre del sistema"
+
+#: src/unexpand.c:125
+#, fuzzy
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Convierte los espacios de cada FICHERO en tabulaciones, escribiendo el\n"
+"resultado en la salida estándar. Si no se especifica FICHERO o FICHERO\n"
+"es `-', lee la entrada estándar.\n"
+"\n"
+
+#: src/unexpand.c:133
+#, fuzzy
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all convierte todos los espacios en blanco, no solo los\n"
+" iniciales\n"
+" --first-only convierte solamente los espacios en blanco iniciales\n"
+" (deshabilita -a)\n"
+" -t, --tabs=N usa N espacios en cada tabulación, en vez de 8 (activa -"
+"a)\n"
+" -t, --tabs=LISTA usa la LISTA de posiciones separadas por comas para\n"
+" definir las posiciones de tabulación (activa -a)\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "la parada de tabulación es demasiado grande %s"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Modo de empleo: %s [OPCIÓN]... [ENTRADA [SALIDA]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"Descarta todas las líneas sucesivas idénticas, menos una. de ENTRADA (o\n"
+"entrada estándar), escribiendo en SALIDA (o en la salida estándar).\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count precede a las líneas con el número de ocurrencias\n"
+" -d, --repeated muestra sólo las líneas duplicadas\n"
+
+#: src/uniq.c:151
+#, fuzzy
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated[=método] muestra todas las líneas duplicadas\n"
+" método={none(predeterminado),prepend,separate}\n"
+" La delimitación se hace con líneas en blanco.\n"
+" -f, --skip-fields=N pasa por alto la comparación de los primeros N "
+"campos\n"
+" -i, --ignore-case pasa por alto las diferencias entra mayúsculas y\n"
+" minúsculas\n"
+" -s, --skip-chars=N pasa por alto la comparación de los primeros N "
+"caracteres\n"
+" -u, --unique muestra sólo las líneas que son únicas\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+" -w, --check-chars=N sólo compara los primeros N caracteres de la línea\n"
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"Un campo es cada conjunto de caracteres separados por espacios.\n"
+"Se pasan por alto los campos y después los caracteres.\n"
+
+#: src/uniq.c:350
+#, fuzzy, c-format
+msgid "too many repeated lines"
+msgstr "demasiados argumentos"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "el número de campos que se deben saltar es inválido"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "el número de bytes que se deben saltar es inválido"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "el número de bytes que hay que comparar es inválido"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+"mostrar todas las líneas duplicadas y los contadores de repetición\n"
+"no tiene sentido"
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Modo de empleo: %s FICHERO\n"
+" o bien: %s OPCIÓN\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"Llama a la función unlink para borrar el FICHERO especificado.\n"
+"\n"
+
+# Otra posibilidad sería "no se puede borrar el enlace `%s'".
+# Mirarlo con calma. sv
+#
+# recordatorio: un fichero es _siempre_ un nodo-i que es enlazado por
+# entrada/s en directorios, cuando se desenlaza el último enlace que une una
+# entrada de directorio con el fichero, entonces y sólo entonces se borra
+# físicamente.... uac
+#
+# Lo sé, lo sé.
+# En este caso habría que investigar las causas por las que no se puede
+# deshacer el tal enlace. Habrá que buscar al menos un ejemplo en el que
+# aparezca este mensaje. sv
+#
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "no se puede deshacer el enlace %s"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "no se puede obtener la fecha de arranque"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s funcionando "
+
+# Por indicación de Gerardo Aburruzaga, lo pongo con mayúsculas.
+#: src/uptime.c:135
+msgid "am"
+msgstr "AM"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "PM"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr " ??:???? arriba "
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr ""
+
+#: src/uptime.c:143
+#, fuzzy, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%d día"
+msgstr[1] "%d días"
+
+#: src/uptime.c:147
+#, fuzzy, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%d usuario"
+msgstr[1] "%d usuarios"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", carga promedio: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Modo de empleo: %s [OPCIÓN]... [FICHERO]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Muestra la fecha/hora actual, el lapso de tiempo que el sistema lleva "
+"arriba,\n"
+"el número de usuarios en el sistema, y el número medio de trabajos\n"
+"en la cola de ejecución en los últimos 1, 5 y 15 minutos.\n"
+"Si no se especifica ningún FICHERO, se utiliza %s. Habitualmente,\n"
+"FICHERO es %s\n"
+"\n"
+
+# Nota: El primer %s era /etc/utmp y el segundo /etc/wtmp.
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Muestra quién esta actualmente conectado de acuerdo con FICHERO.\n"
+"Si no se especifica ningún FICHERO, se utiliza %s. Habitualmente,\n"
+"FICHERO es %s\n"
+"\n"
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Muestra el número de nuevas líneas, palabras y bytes para cada FICHERO, y "
+"una\n"
+"línea con el total si se especifica más de un FICHERO. Si no se especifica\n"
+"ningún FICHERO, o si FICHERO es -, lee la entrada estándar.\n"
+" -c, --bytes muestra el número de bytes\n"
+" -m, --chars muestra el número de caracteres\n"
+" -l, --lines muestra el número de líneas\n"
+
+#: src/wc.c:121
+#, fuzzy
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" -L, --max-line-length muestra la longitud de la línea más larga\n"
+" -w, --words muestra el número de palabras\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr " antiguo "
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "term="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "salida="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "cambio de reloj"
+
+# Se admiten sugerencias
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "`run-level'"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "último="
+
+#: src/who.c:545
+#, fuzzy, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"Nº de usuarios=%u\n"
+
+# Estas palabrejas en mayúsculas son para la CABECERA de who. Yo que
+# tú lo probaba, porque me temo que va a salir fatal, tendría que
+# tener la traducción la misma longitud que el original. Habría que
+# abreviar, aunque quizá acabemos de forma que no se entenderá
+# nada. gerardo
+#
+# Si sale mal, nos quejaremos amargamente al autor.
+# Quien mantiene esto actualmente (Jim Meyering) me ha hecho caso
+# otras veces (si miras el ChangeLog de fileutils podrás comprobarlo)
+# y es bastante comprensivo.
+#: src/who.c:551
+msgid "NAME"
+msgstr "NOMBRE"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "LÍNEA"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "TIEMPO"
+
+# Va a haber problemas por la longitud de la cadena...
+# INACTIVO es más corto. VAGO mas aún (ouaahhh -bostezo-) gerardo
+# Me gusta la idea, pero ¿es INACTIVO o INACTIVA? sv
+# Como USUARIO, que también puede ser USUARIA. Si quieres ponerlo
+# "políticamente c." (c.= correcto? carajote?): INACTIV@ gerardo :-)
+# Odio la correción política. Lo dejaré en género "neutro", o sea
+# en masculino (ya que en español, coinciden, que es lo que a muchos
+# les cuesta digerir).
+# De todas formas, ¿INACTIVO no es [TIEMPO] INACTIVO? sv
+#: src/who.c:551
+msgid "IDLE"
+msgstr "INACTIVO"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "COMENTARIO"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "SALIDA"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Modo de empleo: %s [OPCIÓN]... [ FICHERO | ARG1 ARG2 ]\n"
+
+# Nota: El primer %s era /etc/utmp y el segundo /etc/wtmp.
+# Hay una ó con tilde que no debiera, pues no va entre cifras. gerardo
+# Va entre cosas que no son letras. sv
+#
+# Que yo sepa, la RAE dice que la conjunción "o" debe llevar tilde
+# cuando va entre guarismos, para que no se confunda con un cero. Si
+# no hay ambigüedad puede omitirse, aunque se recomienda ponerlo.
+# No tiene que ir entre "cosas que no son letras", sino entre cifras
+# numéricas. Según la RAE. Cuando yo estudié Lingüística/Literatura,
+# hace ya unos pocos años :-( gerardo
+#
+# Ya, pero me temo que la RAE no contemplaba (cuando dijo eso)
+# otra cosa que no sean cifras o letras ¿o sí? sv
+#
+# ¿Al haber un signo menos a su izquierda no tiene la "o" posibilidad de ser
+# confundida con un cero? sv
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" -a, --all lo mismo que -b -d --login -p -r -t -T -u\n"
+" -b, --boot tiempo del último inicio del sistema\n"
+" -d, --dead muestra los procesos muertos\n"
+" -H, --heading muestra la línea de encabezados de columnas\n"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+" --lookup intenta canonicalizar los nombres de `host' a través del "
+"DNS\n"
+" -m sólo el nombre del `host' y de usuario asociado con\n"
+" la entrada estándar\n"
+" -p, --process muestra los procesos activos lanzados por init\n"
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+" -q, --count todos los nombres de entrada y número de usuarios\n"
+" conectados\n"
+" -r, --runlevel muestra el `runlevel' actual\n"
+" -s, --short muestra sólo el nombre, línea y tiempo (predeterminado)\n"
+" -t, --time muestra el último cambio en el reloj del sistema\n"
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+" -T, -w, --mesg añade el estado de mensajes del usuario como\n"
+" +, - ó ?\n"
+" -u, --users muestra los usuarios conectados\n"
+" --message igual que -T\n"
+" --writable igual que -T\n"
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"Si no se especifica ningún FICHERO, se utiliza %s. Habitualmente,\n"
+"FICHERO es %s. Si se dan ARG1 y ARG2, se supone -m: habitualmente\n"
+"`am i' o `mom likes'.\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+"Atención: -i será eliminado en versiones futuras; utilice -u en su lugar"
+
+#: src/whoami.c:51
+#, fuzzy
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Muestra el nombre de usuario asociado con el identificador efectivo de\n"
+"usuario actual. Equivalente a id -un.\n"
+"\n"
+
+#: src/whoami.c:95
+#, fuzzy, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "no se puede encontrar el nombre para el usuario con ID %u"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Modo de empleo: %s [CADENA]...\n"
+" o bien: %s OPCIÓN\n"
+
+# Se aceptan sugerencias para `repetidamente'. cfuga
+# (pues a mí no me disgusta). sv
+# Es curioso que el 'y' esté compilado en "yes". En mi Digital UNIX,
+# también internacionalizado y traducido, "yes" produce repetidamente
+# "sí" para LANG=es_ES.ISO8859-1. Concretamente LC_MESSAGES. gerardo
+# Curioso, ¿no romperá ningun `script'? sv
+# Para lo poco que se usa "yes"... (me pasé dos años sin saber para
+# qué c~%&# servía, y aún ahora creo que no sirve para nada). gerardo
+#
+# Sirve para hacer prácticas con la redirección de la salida... ( > )
+#
+# Creo que es mejor dejarlo así. Con el programa "hello" pasa lo mismo:
+# escribes "hello" y te responde "hola", lo cual no es lógico :-)
+# Si no hay oportunidad de escribir "sí", para que salga una tira de
+# eses, mejor olvidarse. sv
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"Muestra repetidamente una línea con todas las CADENA(s) especificadas, o "
+"`y'.\n"
+"\n"
+
+#~ msgid "strip failed"
+#~ msgstr "strip falló"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "no se puede cambiar el propietario y/o el grupo de %s"
+
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "no se puede cambiar al directorio %s"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "no se puede obtener el grupo de login de un UID numérico"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Esto es software libre; vea el código fuente para las condiciones de "
+#~ "copia.\n"
+#~ "No hay NINGUNA garantía; ni siquiera de COMERCIABILIDAD o IDONEIDAD PARA "
+#~ "UN\n"
+#~ "FIN DETERMINADO.\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "número de argumentos insuficiente"
+
+#~ msgid "closing standard output"
+#~ msgstr "cierre de la salida estándar"
+
+# Nota: se refiere al grupo número 0.
+# La convención nulo=cero también existe en español, al menos en el
+# lenguaje matemático. Por eso he preferido respetar el matiz.
+#~ msgid "cannot change to null group"
+#~ msgstr "no se puede cambiar al grupo nulo"
+
+#~ msgid "group number"
+#~ msgstr "número de grupo"
+
+#~ msgid "invalid group number %s"
+#~ msgstr "número de grupo inválido %s"
+
+#~ msgid ""
+#~ " --no-preserve-root do not treat `/' specially (the default)\n"
+#~ " --preserve-root fail to operate recursively on `/'\n"
+#~ msgstr ""
+#~ " --no-preserve-root no trata `/' de forma especial (predeterminado)"
+#~ "<\n"
+#~ " --preserve-root no opera recursivamente sobre `/'\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Each MODE is one or more of the letters ugoa, one of the symbols +-= and\n"
+#~ "one or more of the letters rwxXstugo.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Cada MODO es una o más de las letras ugoa, uno de los símbolos +-= y\n"
+#~ "una o más de las letras rwxXstugo.\n"
+
+#~ msgid "invalid mode string: %s"
+#~ msgstr "cadena de modo inválida %s"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "Modo de empleo: %s [OPCIÓN]... PROPIETARIO[:[GRUPO]] FICHERO...\n"
+#~ " o bien: %s [OPCIÓN]... :[GRUPO] FICHERO...\n"
+#~ " o bien: %s [OPCIÓN]... --reference=FICHERO-R FICHERO...\n"
+
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "no se puede sobreescribir el directorio %s"
+
+#~ msgid "%s: specified destination directory does not exist"
+#~ msgstr "%s: el directorio objetivo especificado no existe"
+
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "%s: el objetivo especificado no es un directorio"
+
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr ""
+#~ "se copian varios ficheros, pero el último argumento %s\n"
+#~ "no es un directorio"
+
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "atención: --version-control (-V) está obsoleta; su soporte será "
+#~ "eliminado\n"
+#~ "en alguna versión posterior. Utilice --backup=%s en su lugar."
+
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "este sistema no admite enlaces simbólicos"
+
+# UTC = Tiempo Universal Coordinado, antiguo GMT (Greenwich Mean Time,
+# Hora Media de Greenwich). gerardo
+#~ msgid ""
+#~ "Display the current time in the given FORMAT, or set the system date.\n"
+#~ "\n"
+#~ " -d, --date=STRING display time described by STRING, not `now'\n"
+#~ " -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+#~ " -ITIMESPEC, --iso-8601[=TIMESPEC] output date/time in ISO 8601 "
+#~ "format.\n"
+#~ " TIMESPEC=`date' for date only,\n"
+#~ " `hours', `minutes', or `seconds' for date "
+#~ "and\n"
+#~ " time to the indicated precision.\n"
+#~ " --iso-8601 without TIMESPEC defaults to "
+#~ "`date'.\n"
+#~ msgstr ""
+#~ "Muestra la hora actual en el FORMATO dado, o establece la fecha del "
+#~ "sistema.\n"
+#~ "\n"
+#~ " -d, --date=CADENA muestra la hora descrita por CADENA, no "
+#~ "`now'\n"
+#~ " -f, --file=FICHERO_FECHA igual que --date por cada línea de "
+#~ "FICHERO_FECHA\n"
+#~ " -IE_TIEMPO, --iso-8601[=E_TIEMPO] muestra una cadena de fecha/hora "
+#~ "según la norma\n"
+#~ " ISO-8601. E_TIEMPO=`fecha' (o nada) para la "
+#~ "fecha\n"
+#~ " solamente, `horas', `minutos', o `segundos'\n"
+#~ " para la fecha y la hora con la precisión "
+#~ "indicada\n"
+#~ " --iso-8601 sin E_TIEMPO significa usar "
+#~ "`date'\n"
+
+#~ msgid ""
+#~ " %F same as %Y-%m-%d\n"
+#~ " %g the 2-digit year corresponding to the %V week number\n"
+#~ " %G the 4-digit year corresponding to the %V week number\n"
+#~ msgstr ""
+#~ " %F lo mismo que %Y-%m-%d\n"
+#~ " %g el año de 2 dígitos que corresponde a la semana %V\n"
+#~ " %G el año de 4 dígitos que corresponde a la semana %V\n"
+
+#~ msgid ""
+#~ " %z RFC-2822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %Z time zone (e.g., EDT), or nothing if no time zone is determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr ""
+#~ " %z la zona horaria numérica estilo RFC-2822 (-0500)\n"
+#~ " (una extensión no estándar)\n"
+#~ " %Z la zona horaria (p.e., EDT), o nada si no es determinable la\n"
+#~ " zona horaria\n"
+#~ "\n"
+#~ "Por omisión, date rellena los campos numéricos con ceros. GNU date\n"
+#~ "reconoce los siguientes modificadores entre `%%' y una directiva "
+#~ "numérica.\n"
+#~ "\n"
+#~ " `-' (guión) no rellena el campo\n"
+#~ " `_' (subrayado) rellena el campo con espacios\n"
+
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "demasiados argumentos que no son opciones: %s%s"
+
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-2822 (-R) option"
+#~ msgstr ""
+#~ "no se puede especificar una cadena de formato cuando se usa\n"
+#~ "la opción --rfc-2822 (-R)"
+
+# Nota: Se refiere con toda probabilidad a una fecha o a una hora.
+#~ msgid "undefined"
+#~ msgstr "no definida"
+
+#~ msgid "cannot get time of day"
+#~ msgstr "no se puede obtener la hora del día"
+
+#~ msgid ""
+#~ " notrunc do not truncate the output file\n"
+#~ " ucase change lower case to upper case\n"
+#~ " swab swap every pair of input bytes\n"
+#~ " noerror continue after read errors\n"
+#~ " sync pad every input block with NULs to ibs-size; when used\n"
+#~ " with block or unblock, pad with spaces rather than NULs\n"
+#~ msgstr ""
+#~ " notrunc no trunca el fichero de salida\n"
+#~ " ucase cambia las minúsculas a mayúsculas\n"
+#~ " swab intercambia cada pareja de bytes de entrada\n"
+#~ " noerror continúa después de los errores de lectura\n"
+#~ " sync rellena cada bloque de entrada con NULs hasta el tamaño de "
+#~ "ibs;\n"
+#~ " cuando se utiliza con block o unblock, rellena con "
+#~ "espacios\n"
+#~ " en lugar de con NULos\n"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "%s+%s registros leídos\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "%s+%s registros escritos\n"
+
+#~ msgid "truncated records"
+#~ msgstr "registros truncados"
+
+# Nota: El `conv' es el mismo que aparece más adelante como
+# "conv=KEYWORD", por lo tanto *no* se debe traducir.
+#~ msgid ""
+#~ "\tonly one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}"
+#~ msgstr ""
+#~ " sólo una `conv' en {ascii,ebcdic,ibm}, {lcase,ucase}, {block,"
+#~ "unblock},\n"
+#~ "{unblock,sync}"
+
+# No me acaba de sonar bien lo de fuera de rango.
+# Se admiten sugerencias. sv
+#~ msgid "file offset out of range"
+#~ msgstr "desplazamiento de fichero fuera de rango"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr ""
+#~ "no se pueden usar argumentos de tipo FICHERO con la opción para mostrar\n"
+#~ "la base de datos interna de dircolors"
+
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ msgstr ""
+#~ "Repite la(s) CADENA(s) por la salida estándar.\n"
+#~ "\n"
+#~ " -n no muestra el carácter final de nueva línea\n"
+#~ " -e activa la interpretación de caracteres escapados con "
+#~ "una\n"
+#~ " barra invertida que se listan más abajo\n"
+#~ " -E desactiva la interpretación de esas secuencias en "
+#~ "CADENAs\n"
+
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "la opción `-LISTA' está obsoleta; utilice `-t LISTA'"
+
+# Portable = transportable (sugerencia: gerardo)
+# Me gusta más "portable". sv
+#
+# A mí no, pero como el traductor eres tú... :-( ¿Tú dices por
+# ejemplo: "voy a portar un mueble de una habitación a otra"? "¡Hay
+# que ver lo de la huelga de portes y camioneros...!" "Este televisor
+# es muy grande para ser de 14'', es incómodo de portar"... etc...
+# gerardo
+#
+# No te niego que son buenos tus ejemplos. Pero dime:
+# ¿De verdad dirías que DJGPP es un "transporte" de GNU CC a MS-DOS?
+# (Erosión, transporte y sedimentación).
+#
+# Al final me convenciste. Ahora estoy intrigado:
+# ¿Aparecerá en algún sitio más? sv
+#~ msgid ""
+#~ "warning: unportable BRE: `%s': using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr ""
+#~ "atención: ERB no transportable: `%s': utilizar `^' como el primer "
+#~ "carácter\n"
+#~ "de la expresión regular básica no es transportable; no se tendrá en cuenta"
+
+#~ msgid "`%s' is too large"
+#~ msgstr "`%s' es demasiado grande"
+
+# FIXME: There options ... abbreviated: <- ¿no faltan los dos puntos? sv
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Modo de empleo: %s [argumentos que no se tienen en cuenta]\n"
+#~ " o bien: %s OPCIÓN\n"
+#~ "Sale con un código de estado que indica fallo.\n"
+#~ "\n"
+#~ "Estos nombres de opciones no se pueden abreviar:\n"
+#~ "\n"
+
+#~ msgid "invalid width option: %s"
+#~ msgstr "opción de ancho inválida: %s"
+
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "la opción `%s' está obsoleta; utilice `%s'"
+
+# FIXME: just "large" or "too large"?
+#~ msgid "%s: number of bytes is large"
+#~ msgstr "%s: el número de bytes es demasiado grande"
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "opción no reconocida '-%c'"
+
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "la opción `-%s' está obsoleta; utilice `-%c %.*s%.*s%s'"
+
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr ""
+#~ "se instalan varios ficheros, pero el último argumento %s\n"
+#~ "no es un directorio"
+
+#~ msgid "%s is a directory"
+#~ msgstr "%s es un directorio"
+
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "no se puede obtener la fecha de %s"
+
+#~ msgid "value %s is so large that it is not representable"
+#~ msgstr "el valor %s es tan grande que no es representable"
+
+# No sé en qué caso se muestra este mensaje pero creo que es _muy_ ambiguo...
+# creo que la solución que se adopta en el siguiente mensaje sería más
+# apropiada...
+#
+# Ahora sí lo has arreglado...
+# Decía "número de argumentos insuficiente".
+# Pongo "demasiados argumentos".
+# Con esto ya están "igualados" este y el siguiente. sv
+#
+# El único problema ahora es que te comes lo de "non-option", ese matiz
+# se pierde en la traducción. sv+
+#~ msgid "too many non-option arguments"
+#~ msgstr "demasiados argumentos"
+
+#~ msgid "invalid field number: `%s'"
+#~ msgstr "número de campo inválido: `%s'"
+
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "número de campo inválido para el fichero 1: `%s'"
+
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "número de campo inválido para el fichero 2: `%s'"
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "número de argumentos insuficiente"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: El fichero existe"
+
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "crea el enlace simbólico %s a %s"
+
+#~ msgid "create hard link %s to %s"
+#~ msgstr "crea el enlace duro %s a %s"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "Modo de empleo: %s [OPCIÓN]... OBJETIVO [NOMBRE_DEL_ENLACE]\n"
+#~ " o bien: %s [OPCIÓN]... OBJETIVO... DIRECTORIO\n"
+#~ " o bien: %s [OPCIÓN]... --target-directory=DIRECTORIO OBJETIVO...\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr ""
+#~ "cuando se crean varios enlaces, el último argumento debe ser un directorio"
+
+#~ msgid "User name too long"
+#~ msgstr "Nombre de usuario demasiado largo"
+
+#~ msgid ""
+#~ " -g like -l, but do not list owner\n"
+#~ " -G, --no-group inhibit display of group information\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " --si likewise, but use powers of 1000 not 1024\n"
+#~ " -H, --dereference-command-line\n"
+#~ " follow symbolic links listed on the command "
+#~ "line\n"
+#~ " --dereference-command-line-symlink-to-dir\n"
+#~ " follow each command line symbolic link\n"
+#~ " that points to a directory\n"
+#~ msgstr ""
+#~ " -g como -l, pero no muestra el propietario\n"
+#~ " -G, --no-group no muestra la información del grupo\n"
+#~ " -h, --human-readable muestra los tamaños de forma legible\n"
+#~ " (p.e. 1K 234M 2G)\n"
+#~ " --si análogo, pero utilizando potencias de 1000,\n"
+#~ " no de 1024\n"
+#~ " -H, --dereference-command-line\n"
+#~ " sigue los enlaces simbólicos en la línea de\n"
+#~ " órdenes\n"
+#~ " --dereference-command-line-symlink-to-dir\n"
+#~ " sigue cada enlace simbólico en la línea de\n"
+#~ " órdenes que apunte a un directorio\n"
+
+#~ msgid ""
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -b, --binary lee los ficheros en modo binario (por omisión "
+#~ "en\n"
+#~ " DOS/Windows)\n"
+#~ " -c, --check comprueba las sumas %s con la lista dada\n"
+#~ " -t, --text lee los ficheros en modo de texto (por defecto)\n"
+#~ "\n"
+
+#~ msgid "file"
+#~ msgstr "fichero"
+
+#~ msgid "files"
+#~ msgstr "ficheros"
+
+#~ msgid "checksum"
+#~ msgstr "suma de comprobación"
+
+#~ msgid "checksums"
+#~ msgstr "sumas de comprobación"
+
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "las opciones --string y --check son mutuamente excluyentes"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "no se puede especificar FICHERO cuando se usa --string"
+
+#~ msgid "only one argument may be specified when using --check"
+#~ msgstr "cuando se utiliza --check sólo se puede especificar un argumento"
+
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "no se pueden establecer los permisos del directorio %s"
+
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "no se pueden establecer los permisos del fichero `fifo' %s"
+
+#~ msgid "wrong number of arguments"
+#~ msgstr "número incorrecto de argumentos"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr ""
+#~ "los números de dispositivo principal y secundario no se pueden "
+#~ "especificar\n"
+#~ "para ficheros `fifo'"
+
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "no se pueden establecer los permisos de %s"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr ""
+#~ "al mover varios ficheros, el último argumento debe ser un directorio"
+
+# scheduling priority -> prioridad de ejecución
+# ¿Hay algo mejor? cfuga
+# prioridad de planificación. Aunque quizá "ejecución", si no tan
+# ajustado y exacto, se entienda mejor. gerardo
+# Vale. Me quedo con ejecución, pero dejo aquí la otra posibilidad. sv
+#~ msgid ""
+#~ "Run COMMAND with an adjusted scheduling priority.\n"
+#~ "With no COMMAND, print the current scheduling priority. ADJUST is 10\n"
+#~ "by default. Range goes from -20 (highest priority) to 19 (lowest).\n"
+#~ "\n"
+#~ " -n, --adjustment=ADJUST increment priority by ADJUST first\n"
+#~ msgstr ""
+#~ "Ejecuta ORDEN con una prioridad de ejecución ajustada.\n"
+#~ "Si no hay ORDEN, muestra la prioridad de ejecución actual. AJUSTE es 10\n"
+#~ "por omisión. El rango abarca desde -20 (mayor prioridad) hasta 19 "
+#~ "(menor).\n"
+#~ "\n"
+#~ " -n, --adjustment=AJUSTE incrementa la prioridad primero por AJUSTE\n"
+
+#~ msgid "invalid option `%s'"
+#~ msgstr "opción inválida `%s'"
+
+#~ msgid "invalid priority `%s'"
+#~ msgstr "prioridad inválida `%s'"
+
+#~ msgid "cannot get priority"
+#~ msgstr "no se puede obtener la prioridad"
+
+#~ msgid "cannot set priority"
+#~ msgstr "no se puede establecer la prioridad"
+
+#~ msgid "failed to redirect standard output"
+#~ msgstr "fallo al redireccionar la salida estándar"
+
+#~ msgid "old-style offset"
+#~ msgstr "desplazamiento al estilo antiguo"
+
+# aunque con "operando no válido" se pueda llegar a la misma conclusión,
+# creo que lo que propongo es mucho más claro...
+# Creo que está bien así y de la otra forma, a mí me suena igual em+
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "segundo operando inválido en el modo de compatibilidad `%s'"
+
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr ""
+#~ "en el modo de compatibilidad, los dos últimos argumentos deben ser\n"
+#~ "desplazamientos"
+
+# Sugerencia: "no sólo este"-> "no sólo éste" gerardo
+# ¿Estás seguro? sv
+# ¡¡SÍ!! Observa: "todos los sistemas... no sólo este sistema"
+# "todos los sistemas... no sólo éste."
+# En el primer caso, "este" es adjetivo, y en el 2º, adverbio.
+# La RAE dice que la tilde es optativa si no hay ambigüedad posible.
+# Yo creo que es mejor ponerla siempre.
+#
+# Yo prefiero no ponerla si no hay ambigüedad... sv
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr ""
+#~ "Diagnostica construcciones no portables en NOMBRE\n"
+#~ "\n"
+#~ " -p, --portability comprueba para todos los sistemas POSIX, no sólo "
+#~ "este\n"
+
+# Aquí también pongo transportable.
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "la ruta de acceso `%s' contiene el carácter no transportable `%c'"
+
+#~ msgid "`%s' is not a directory"
+#~ msgstr "`%s' no es un directorio"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "el directorio `%s' es inaccesible"
+
+#~ msgid "name `%s' has length %ld; exceeds limit of %ld"
+#~ msgstr "el nombre `%s' tiene longitud %ld; excede el límite de %ld"
+
+#~ msgid "path `%s' has length %lu; exceeds limit of %ld"
+#~ msgstr "la ruta de acceso `%s' tiene longitud %lu; excede el límite de %ld"
+
+# FIXME: El original es horrible.
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "`--pages' rango de número de páginas inválido: `%s'"
+
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "`--pages' número de página de comienzo inválido: `%s'"
+
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "`--pages' número de página final inválido: `%s'"
+
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr ""
+#~ "`--pages' el número de página de comienzo es mayor que el número de "
+#~ "página final"
+
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "`--columns=COLUMNAS' número de columnas inválido: `%s'"
+
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%b %e %H:%M %Y"
+
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr ""
+#~ "el número de página de comienzo es mayor que el número total de páginas: `"
+#~ "%d'"
+
+# ¿Y cómo se asegura uno de esto?, pregunto. sv
+#~ msgid "Page %d"
+#~ msgstr "Página %d"
+
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "Modo de empleo: %s formato [argumento...]\n"
+
+#~ msgid ""
+#~ "This program is distributed in the hope that it will be useful,\n"
+#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+#~ "GNU General Public License for more details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Este programa se distribuye con la esperanza de que sea útil,\n"
+#~ "pero SIN NINGUNA GARANTÍA; ni siquiera la garantía implícita de\n"
+#~ "COMERCIABILIDAD o IDONEIDAD PARA UN FIN DETERMINADO. Véase la\n"
+#~ "Licencia Pública General de GNU para más detalles.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+#~ msgstr ""
+#~ "Usted debería haber recibido una copia de la Licencia Pública\n"
+#~ "General de GNU junto con este programa; en caso contrario, escriba\n"
+#~ "a la Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
+#~ "Boston, MA 02111-1307, EE.UU.\n"
+
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "no se puede cambiar de %s a .."
+
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "no se puede efectuar `lstat' sobre `.' en %s"
+
+#~ msgid "cannot lstat %s"
+#~ msgstr "no se puede efectuar `lstat' sobre %s"
+
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "no se puede cambiar del directorio %s al %s"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "no se puede borrar `.' o `..'"
+
+# prompt es "preguntar" o "pedir confirmación".
+# No me gusta nada cómo me ha quedado el verbose. Se admiten sugerencias.
+#
+# ¿Por qué no utilizar la forma que has utilizado anteriormente en este caso?
+# "da detalles...", creo que explicar no pega ni con cola...
+#
+# ¿Y en inglés sí te pega? sv
+#
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only; this works only if your "
+#~ "system\n"
+#~ " supports `unlink' for nonempty directories)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ msgstr ""
+#~ "Borra (desenlaza) el/los FICHERO(s).\n"
+#~ "\n"
+#~ " -d, --directory desenlaza FICHERO, incluso si es un directorio no "
+#~ "vacío\n"
+#~ " (solamente superusuario; esto solamente "
+#~ "funciona\n"
+#~ " si el sistema admite `unlink' para directorios\n"
+#~ " no vacíos).\n"
+#~ " -f, --force descarta los ficheros que no existan, sin "
+#~ "preguntar\n"
+#~ " -i, --interactive pide confirmación antes de borrar\n"
+
+#~ msgid "%s: count `%.*s' too large"
+#~ msgstr "%s: contador `%.*s' demasiado grande"
+
+#~ msgid "`-%s' option is obsolete; use `-l %s'"
+#~ msgstr "la opción `-%s' está obsoleta; utilice `-l %s'"
+
+#~ msgid ""
+#~ "Display file or filesystem status.\n"
+#~ "\n"
+#~ " -f, --filesystem display filesystem status instead of file status\n"
+#~ " -c --format=FORMAT use the specified FORMAT instead of the default\n"
+#~ " -L, --dereference follow links\n"
+#~ " -t, --terse print the information in terse form\n"
+#~ msgstr ""
+#~ "Muestra el estado del fichero o del sistema de ficheros.\n"
+#~ "\n"
+#~ " -f, --filesystem muestra el estado del sistema de ficheros en "
+#~ "lugar del\n"
+#~ " estado del fichero\n"
+#~ " -c --format=FORMATO utiliza el FORMATO especificado en lugar del\n"
+#~ " predeterminado\n"
+#~ " -L, --dereference sigue los enlaces\n"
+#~ " -t, --terse muestra la información de manera escueta\n"
+
+#~ msgid "Warning: `-l' is deprecated; use `-L' instead"
+#~ msgstr "atención: `-l' está obsoleto; utilice `-L' en su lugar"
+
+#~ msgid "invalid argument `%s'"
+#~ msgstr "argumento inválido `%s'"
+
+#~ msgid "stdin: read error"
+#~ msgstr "stdin: error de lectura"
+
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "%c: el sufijo es inválido en una opción obsoleta"
+
+# FIXME: Es muy raro que después de ; se use mayúscula.
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "demasiados argumentos; Cuando se utiliza la opción de sintaxis obsoleta "
+#~ "de\n"
+#~ "tail (%s) no puede haber más de un fichero como argumento. Utilice la "
+#~ "opción\n"
+#~ "equivalente -n ó -c en su lugar."
+
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "Atención: no es transportable usar dos o más ficheros como argumentos con "
+#~ "la\n"
+#~ "opción de sintaxis obsoleta (%s). Utilice la opción equivalente -n ó -c\n"
+#~ "en su lugar."
+
+#~ msgid "`%s' option is obsolete; use `%s-%c %.*s'"
+#~ msgstr "la opción `%s' está obsoleta; utilice `%s-%c %.*s'"
+
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr "%s: número máximo de cambios de tamaño consecutivos inválido"
+
+#~ msgid "argument expected\n"
+#~ msgstr "se esperaba un argumento\n"
+
+#~ msgid "%s: integer expression expected\n"
+#~ msgstr "%s: se esperaba una expresión entera\n"
+
+#~ msgid "before -lt"
+#~ msgstr "antes de -lt"
+
+#~ msgid "after -lt"
+#~ msgstr "después de -lt"
+
+#~ msgid "before -le"
+#~ msgstr "antes de -le"
+
+#~ msgid "after -le"
+#~ msgstr "después de -le"
+
+#~ msgid "before -gt"
+#~ msgstr "antes de -gt"
+
+#~ msgid "after -gt"
+#~ msgstr "después de -gt"
+
+#~ msgid "before -ge"
+#~ msgstr "antes de -ge"
+
+#~ msgid "after -ge"
+#~ msgstr "después de -ge"
+
+#~ msgid "before -ne"
+#~ msgstr "antes de -ne"
+
+#~ msgid "after -ne"
+#~ msgstr "después de -ne"
+
+#~ msgid "before -eq"
+#~ msgstr "antes de -eq"
+
+#~ msgid "after -eq"
+#~ msgstr "después de -eq"
+
+#~ msgid "after -t"
+#~ msgstr "después de -t"
+
+#~ msgid "too many arguments\n"
+#~ msgstr "demasiados argumentos\n"
+
+# Esto salió parecido en wdiff y hubo que pensarlo bastante...
+#
+# A mí me parece más que correcto, otra opción, aunque a mí no me gustan más:
+# "faltan ficheros como argumentos" -> no claro
+# "faltan argumentos de tipo fichero/FICHERO" uac
+#
+# Creo que exactamente esas dos posibilidades aparecen
+# en wdiff como "finalistas" :-) sv
+#
+#~ msgid "file arguments missing"
+#~ msgstr "faltan argumentos (ficheros)"
+
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "secuencia de escape inválida `\\%c'"
+
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr ""
+#~ "cuando se borra y se comprimen repeticiones se deben proporcionar dos "
+#~ "cadenas"
+
+#~ msgid "at least one string must be given when squeezing repeats"
+#~ msgstr ""
+#~ "cuando se comprimen repeticiones se debe especificar al menos una cadena"
+
+#~ msgid ""
+#~ "invalid identity mapping; when translating, any [:lower:] or [:upper:]\n"
+#~ "construct in string1 must be aligned with a corresponding construct\n"
+#~ "([:upper:] or [:lower:], respectively) in string2"
+#~ msgstr ""
+#~ "correspondencia inválida; cuando se traduce, cualquier construcción [:"
+#~ "lower] o\n"
+#~ "[:upper:] en la cadena1 debe de estar alineada con la correpondiente\n"
+#~ "construcción ([:upper:] o [:lower:], respectivamente) en cadena2"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Modo de empleo: %s [argumentos que no se tienen en cuenta]\n"
+#~ " o bien: %s OPCIÓN\n"
+#~ "Sale con un código de estado que indica éxito.\n"
+#~ "\n"
+#~ "Los nombres de estas opciones no se pueden abreviar:\n"
+#~ "\n"
+
+#~ msgid "only one argument may be specified"
+#~ msgstr "sólo se puede especificar un argumento"
+
+#~ msgid "tab size contains an invalid character"
+#~ msgstr "el tamaño de tabulación contiene un carácter inválido"
+
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr "la opción `-LISTA' está obsoleta; utilice `--first-only -t LISTA'"
+
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "la opción `-%lu' está obsoleta; utilice `-f %lu'"
+
+#~ msgid ""
+#~ " -i, --idle add idle time as HOURS:MINUTES, . or old\n"
+#~ " (deprecated, use -u)\n"
+#~ " -l, --login print system login processes\n"
+#~ msgstr ""
+#~ " -i, --idle añade el tiempo inactivo del usuario como\n"
+#~ " HORAS:MINUTOS, . o antiguo (obsoleto, use -u)\n"
+#~ " -l, --login muestra procesos de entrada en el sistema\n"
+#~ " (equivalente al -l de SUS)\n"
+
+#~ msgid "%s: cannot find username for UID %u\n"
+#~ msgstr "%s: no se puede encontrar el nombre de usuario para el UID %u\n"
+
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "Modo de empleo: %s [OPCIÓN]... FICHERO1 FICHERO2\n"
+
+#~ msgid "*** invalid date/time ***"
+#~ msgstr "*** fecha/hora inválida ***"
+
+#~ msgid "%s: `+' or `-' expected after delimeter"
+#~ msgstr "%s: se esperaba un `+' ó un `-' después del delimitador"
+
+#~ msgid "cannot change to parent of directory %s"
+#~ msgstr "no se puede cambiar al directorio padre de %s"
+
+#~ msgid ""
+#~ "when the starting value is larger than the limit,\n"
+#~ "the increment must be negative"
+#~ msgstr ""
+#~ "cuando el valor inicial es mayor que el límite,\n"
+#~ "el incremento debe ser negativo"
+
+#~ msgid ""
+#~ "when the starting value is smaller than the limit,\n"
+#~ "the increment must be positive"
+#~ msgstr ""
+#~ "cuando el valor inicial es menor que el límite,\n"
+#~ "el incremento debe ser positivo"
+
+#~ msgid ""
+#~ "Warning: the meaning of '-l' will change in a future release to conform "
+#~ "to POSIX"
+#~ msgstr ""
+#~ "Atención: el significado de `-l' cambiará en una versión futura para\n"
+#~ "estar de acuerdo con POSIX"
+
+#~ msgid "unable to restore permissions of %s"
+#~ msgstr "no se pueden restablecer los permisos de %s"
+
+#~ msgid ""
+#~ "\n"
+#~ "In -wNUMBER, the letter `w' may be omitted.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "En `-wNÚMERO' se puede omitir la letra `w'.\n"
+
+#~ msgid ""
+#~ " -c, --bytes=SIZE print first SIZE bytes\n"
+#~ " -n, --lines=NUMBER print first NUMBER lines instead of first 10\n"
+#~ msgstr ""
+#~ " -c, --bytes=TAMAÑO muestra los primeros TAMAÑO bytes\n"
+#~ " -n, --lines=N muestra las N primeras líneas en vez de 10\n"
+
+#~ msgid "%s is larger than the maximum file size on this system"
+#~ msgstr "%s es más grande que el tamaño máximo de fichero para este sistema"
+
+#~ msgid "program error"
+#~ msgstr "error del programa"
+
+#~ msgid "stack overflow"
+#~ msgstr "desbordamiento de pila"
+
+#~ msgid "\\%c: invalid escape"
+#~ msgstr "\\%c: secuencia de escape inválida"
+
+#~ msgid "warning: unable to use large stack"
+#~ msgstr "atención: no se puede usar una pila grande"
+
+#~ msgid "missing file arguments"
+#~ msgstr "faltan argumentos (ficheros)"
+
+#~ msgid "cannot lstat `.'"
+#~ msgstr "no se puede efectuar `lstat' sobre `.'"
+
+# SIoNO
+#~ msgid "%s: remove directory %s? "
+#~ msgstr "%s: ¿borrar el directorio %s? (s/n) "
+
+# SIoNO
+#~ msgid "%s: directory %s is write protected; descend into it anyway? "
+#~ msgstr ""
+#~ "%s: el directorio %s está protegido contra escritura;\n"
+#~ "¿descender en él, a pesar de todo? (s/n) "
+
+#~ msgid "removing all entries of directory %s\n"
+#~ msgstr "borrando todas las entradas del directorio %s\n"
+
+#~ msgid "directory %s was replaced before being removed"
+#~ msgstr "el directorio %s ha sido reemplazado antes de ser borrado"
+
+#~ msgid "cannot change back to directory %s via `..'"
+#~ msgstr "no se puede volver al directorio %s a través de `..'"
+
+#~ msgid "subdirectory of %s was moved while being removed"
+#~ msgstr "un subdirectorio de %s fue movido mientras era borrado"
+
+# SIoNO
+#~ msgid "%s: remove directory %s%s? "
+#~ msgstr "%s: ¿borrar el directorio %s%s? (s/n) "
+
+#~ msgid " (might be nonempty)"
+#~ msgstr " (podría no estar vacío)"
+
+#~ msgid "removing the directory itself: %s\n"
+#~ msgstr "se borró el propio directorio: %s\n"
+
+#~ msgid "cannot remove current directory %s"
+#~ msgstr "no se puede borrar el directorio actual %s"
+
+# SIoNO
+#~ msgid "continue? "
+#~ msgstr "¿seguir? (s/n) "
+
+#~ msgid ""
+#~ "ERROR: the source file %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after opening it), the numbers\n"
+#~ "are %lu/%lu. That means that while this program was running,\n"
+#~ "the file was replaced with another one. Skipping this file."
+#~ msgstr ""
+#~ "ERROR: el fichero origen %s inicialmente tenía números de dispositivo/"
+#~ "nodo-i\n"
+#~ "%lu/%lu, pero ahora (después de abrirlo), los números son %lu/%lu.\n"
+#~ "Esto quiere decir que mientras este programa estaba funcionando, el "
+#~ "fichero\n"
+#~ "ha sido reemplazado por otro. Nos saltamos este fichero."
+
+# FIXME: ¿Por qué no "fork system call failed", como antes?
+#~ msgid "cannot fork"
+#~ msgstr "falló la llamada al sistema `fork'"
+
+#~ msgid ""
+#~ "ERROR: the directory %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after a chdir into it), the numbers for `.'\n"
+#~ "are %lu/%lu. That means that while rm was running, the directory\n"
+#~ "was replaced with either another directory or a link to another directory."
+#~ msgstr ""
+#~ "ERROR: el directorio %s inicialmente tenía números de dispositivo/nodo-i\n"
+#~ "%lu/%lu, pero ahora (después de un chdir dentro de él), los números para "
+#~ "`.'\n"
+#~ "son %lu/%lu. Esto quiere decir que mientras rm estaba funcionando,\n"
+#~ "el directorio ha sido reemplazado por otro directorio o por un enlace a "
+#~ "otro\n"
+#~ "directorio."
+
+# Esta traducción me ha sorprendido verla, creo que "changed" debería
+# traducirse como "ha cambiado". Además cuando estos mensajes "de
+# diagnóstico" aparecen, la operación ya se ha realizado... uac
+#
+# Si solamente fuera por el modo verbal empleado en el original,
+# estaría de acuerdo contigo.
+# Sin duda esto es un mensaje de "diagnóstico" o "verbose", y como tal
+# debe tratarse.
+# La cosa está en si esos mensajes deben decirnos "lo que va ocurriendo"
+# o "lo que ha ocurrido". En este mensaje concreto (no en general), me
+# parece más apropiado que el programa nos diga "lo que va ocurriendo"
+# y por eso utilizo el modo presente.
+# Tal vez tengo la impresión de que al original le falta un "is":
+# "group of %s is changed to %s". sv
+#~ msgid "group of %s changed to %s\n"
+#~ msgstr "el grupo de %s cambia a %s\n"
+
+# Normas de la casa:
+# "El programa hablará al usuario de usted y no de tú". sv
+#~ msgid "you are not a member of group `%s'"
+#~ msgstr "usted no es miembro del grupo `%s'"
+
+#~ msgid "%s: invalid group number"
+#~ msgstr "%s: número de grupo inválido"
+
+# Ya sé que no te gustará: "%s se cedió a "
+# o "el propietario de %s es ahora " tb
+# El segundo me gusta mucho más que el primero, pero a pesar de todo, prefiero
+# usar el verbo cambiar, decir "es ahora" no da a entender tan claramente
+# que se produce un cambio. sv
+#
+# A mí me gusta también "el propietario de %s es ahora", ¿por qué traducciones
+# tan literales, si se pueden poner de una forma corta y más clara? uac
+#
+# En este caso, "es ahora" es menos claro que "cambia a"
+# De la primera forma, te dice cómo queda pero te quedas con la duda
+# de si antes estaba también así o no.
+# Con "cambia a" te dice cómo queda y además sabes que antes estaba de otra
+# forma distinta. sv
+#~ msgid "owner of %s changed to "
+#~ msgstr "el propietario de %s cambia a "
+
+#~ msgid "cannot change permissions for %s"
+#~ msgstr "no se pueden cambiar los permisos de %s"
+
+#~ msgid "`%s' and `%s' are the same file"
+#~ msgstr "`%s' y `%s' son el mismo fichero"
+
+#~ msgid "cannot backup `%s'"
+#~ msgstr "no se puede respaldar `%s'"
+
+#~ msgid "cannot remove `%s'"
+#~ msgstr "no se puede borrar `%s'"
+
+# Nota: Asegurarse de que significa eso.
+# Probablemente quiera decir que "no se puede recuperar `%s'" de la copia
+# de seguridad. tb
+#~ msgid "cannot un-backup `%s'"
+#~ msgstr "no se puede restaurar `%s'"
+
+#~ msgid "invalid mode `%s'"
+#~ msgstr "modo inválido `%s'"
+
+#~ msgid "cannot create directory `%s'"
+#~ msgstr "no se puede crear el directorio `%s'"
+
+#~ msgid "cannot make fifo `%s'"
+#~ msgstr "No se puede crear el `fifo' `%s'"
+
+# El primer %s es "hardlink" o "symlink".
+# Mantengo el "de" y toco madera.
+#~ msgid "create %s %s to %s"
+#~ msgstr "crea %s de %s a %s"
+
+# ¿? Duro o fuerte, según se mire.
+# FIXME (pendiente).
+#~ msgid "hard link"
+#~ msgstr "enlace duro"
+
+#~ msgid "link"
+#~ msgstr "enlace"
+
+#~ msgid "starting directory"
+#~ msgstr "directorio de comienzo"
+
+#~ msgid "%s -> %s (backup)\n"
+#~ msgstr "%s -> %s (copia de seguridad)\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ msgstr ""
+#~ "Modo de empleo: %s [OPCIÓN]... OBJETIVO [NOMBRE_DEL_ENLACE]\n"
+#~ " o bien: %s [OPCIÓN]... OBJETIVO... DIRECTORIO\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... SOURCE DEST\n"
+#~ " or: %s [OPTION]... SOURCE... DIRECTORY\n"
+#~ msgstr ""
+#~ "Modo de empleo: %s [OPCIÓN]... ORIGEN DESTINO\n"
+#~ " o bien: %s [OPCIÓN]... ORIGEN... DIRECTORIO\n"
+
+#~ msgid "--no-dereference (-h) is not supported on this system"
+#~ msgstr "--no-dereference (-h) no está disponible en este sistema"
+
+#~ msgid "Usage: %s [OPTION]... EXISTING_DIR NEW_DIR\n"
+#~ msgstr "Modo de empleo: %s [OPCIÓN]... DIR_EXISTENTE NUEVO_DIR\n"
+
+#~ msgid "cannot rename `.' or `..'"
+#~ msgstr "no se puede renombrar `.' o `..'"
+
+# ¿ancestro?
+#
+# Sip :) Es la traducción. ipg
+#
+# Supongo que será un directorio que abarca a uno dado em+
+# No sé como te las apaqanas aquí, pero lo de ancestro no lo dejes, porfa
+#
+# ¿Sugerencias? sv+
+# ¿Qué es un ancestro? ¿Un predecesor? tb
+# Ni idea. sv
+#
+# ancestro es un familiar ascendiente en el árbol genealógico (recordad que
+# normalmente los árboles se dibujan de arriba hacia abajo) uac
+#
+# Si te digo la verdad, nunca me ha hecho gracia eso de que los árboles
+# crezcan hacia abajo... sv
+#
+# Aunque ancestro creo que no estará mal, antecesor estará igual de bien y
+# mucho más claro, ¿o no? uac
+#
+# Si no os han aclarado las ideas mis explicaciones, recordad cuando
+# utilizáis el NOTESCAPES para ftpear y veis: "upper directory"= ".." uac
+#
+# Bueno, esto sería el "directorio superior", lo cual indica que en
+# Netscape Communications Inc., los árboles también crecen al revés... :-) sv
+#
+# Bueno, vale. De momento lo cambio. Antes decía ancestro.
+#~ msgid "`%s' is an ancestor of `%s'"
+#~ msgstr "`%s' es un antecesor de `%s'"
+
+#~ msgid "%s is closed"
+#~ msgstr "%s está cerrado"
+
+#~ msgid "out of memory"
+#~ msgstr "memoria agotada"
+
+#~ msgid "%s: pass %lu/%lu (%s)...%lu/%lu K"
+#~ msgstr "%s: paso %lu/%lu (%s)...%lu/%lu K"
+
+#~ msgid "%s: pass %lu/%lu (%s)...%lu K"
+#~ msgstr "%s: paso %lu/%lu (%s)...%lu K"
+
+#~ msgid "%s: not a regular file; use -D to enable operations on devices"
+#~ msgstr ""
+#~ "%s: no es un fichero regular; utilice -D para activar las operaciones\n"
+#~ "sobre dispositivos"
+
+#~ msgid "unable to allocate storage for %lu passes"
+#~ msgstr "no se puede asignar espacio de almacenamiento para %lu pasos"
+
+#~ msgid "%s: cannot shred read-only file descriptor"
+#~ msgstr ""
+#~ "%s: no se puede ejecutar shred sobre un descriptor de fichero de sólo "
+#~ "lectura"
+
+#~ msgid "%s: can't wipe stdout and print verbose messages to it"
+#~ msgstr ""
+#~ "%s: no se puede cepillar la salida estándar e imprimir mensajes "
+#~ "explicativos"
+
+#~ msgid "Can't fstat file `%s'"
+#~ msgstr "No se puede ejecutar fstat sobre el fichero `%s'"
+
+# Un fichero `sparse' es un fichero que contiene muchos ceros seguidos, y
+# que en algunos casos, el sistema operativo trata de forma especial.
+# ¿tiene traducción?
+#
+# Creo que finalmente me decidiré por traducirlo como "disperso".
+# (creo que Federico Rivas ya lo ha hecho así en tar).
+# Tal vez añadiendo el sparse al final, para que todo el mundo se entere. sv
+# O sea: tipo disperso (sparse).
+# De momento lo dejo en `sparse'.
+# FIXME.
+#~ msgid "sparse type"
+#~ msgstr "tipo `sparse'"
+
+# FIXME
+# Esto sería "tipo de ordenación",
+# pero como forma parte de un mensaje más largo que *no*
+# está todavía internacionalizado, para evitar que, por ejemplo
+# "ls --sort=ñ" dé como resultado "invalid tipo de ordenación `ñ'"
+# lo dejo de momento en inglés, para no mezclar.
+#~ msgid "sort type"
+#~ msgstr "sort type"
+
+# FIXME
+# Esto sería "tipo de fecha",
+# pero como forma parte de un mensaje más largo que *no*
+# está todavía internacionalizado, para evitar que, por ejemplo,
+# "ls --time=ñ" dé como resultado "invalid tipo de fecha `ñ'"
+# lo dejo de momento en inglés, para no mezclar.
+#~ msgid "time type"
+#~ msgstr "time type"
+
+# FIXME
+# Esto sería "tipo de formato",
+# pero como forma parte de un mensaje más largo que *no*
+# está todavía internacionalizado, para evitar que, por ejemplo,
+# "ls --format=ñ" dé como resultado "invalid tipo de formato `ñ'"
+# lo dejo de momento en inglés, para no mezclar.
+#~ msgid "format type"
+#~ msgstr "format type"
+
+# Del diccionario de María Moliner:
+# Colorear: Colorar. Teñir. Dar [Dar un] color a cierta cosa.
+# Coloración: Acción de colorear.
+#~ msgid "colorization criterion"
+#~ msgstr "criterio de coloración"
+
+# De este no estoy muy seguro.
+#~ msgid "indicator style"
+#~ msgstr "estilo de indicación"
+
+# De este tampoco...
+#~ msgid "quoting style"
+#~ msgstr "estilo de cita"
+
+# FIXME
+# o igual es hora, o tiempo, vaya usted a saber. Mirarlo bien.
+#~ msgid "time selector"
+#~ msgstr "selector de fecha"
+
+#~ msgid ""
+#~ "the option for counting 1MB blocks may not be used\n"
+#~ "with the portable output format"
+#~ msgstr ""
+#~ "la opción para contar bloques de 1MB no se puede usar\n"
+#~ "con el formato de salida portable"
+
+# ¿adaptive es adaptable?
+# ¿eh?
+#
+# Yo lo he mirado en el Collins y no está, por otra parte adaptable= adaptable
+# (inglis= castellano)... uac
+#
+# Una cosa creo que está clara, se refiere a las opciones para especificar
+# diferentes unidades de capacidad... y _creo_ que si pensamos en este sentido
+# la traducción no es muy coherente... al menos en castellano... uac
+#
+# Yo lo cambiaría a algo como:
+# "la opción para imprimir con unidades específicas no se puede usar..." uac
+#
+# Este tengo que pensarlo despacio. sv
+#~ msgid ""
+#~ "the option for printing with adaptive units may not be used\n"
+#~ "with the portable output format"
+#~ msgstr ""
+#~ "la opción para imprimir con unidades adaptables no se puede usar\n"
+#~ "con el formato de salida portable"
+
+#~ msgid "removing non-directory %s\n"
+#~ msgstr "se borró el no directorio %s\n"
+
+# ¿Tal vez la interrogación de apertura va justo después de la coma? ipg
+#
+# Excelente pregunta. Esto parece el referéndum de la OTAN:
+# Creo que el programa nos pregunta si queremos reemplazar un fichero
+# por otro, para que contestemos que sí o que no.
+# Al mismo tiempo, nos advierte de que, de llevarse a cabo el reemplazo
+# de un fichero por otro, también el modo resultaría sustituído.
+#
+# Si esto es así, ¿dónde habría que poner la interrogación?
+# O incluso: ¿Está bien el original?
+#
+# Creo que tal y como está, está bien. sv
+# SIoNO
+#
+#~ msgid "%s: replace `%s', overriding mode %04o? "
+#~ msgstr "%s: ¿reemplazar `%s', sustituyendo el modo %04o? (s/n) "
+
+# Yo no traduciría "regular file" literalmente... a mi entender en el Collins
+# salen acepciones mucho mejores, como:
+# fichero normal
+# fichero corriente
+# y esta que me la invento yo: fichero genérico. uac
+#
+# ¿Y una expresión regular? sv
+#
+# Aunque a decir verdad, eso de "normal" no me parece mal del todo,
+# habrá que pensarlo seriamente. sv
+# FIXME.
+#~ msgid "cannot move `%s' across filesystems: Not a regular file"
+#~ msgstr ""
+#~ "no se puede mover `%s' de un sistema de ficheros a otro:\n"
+#~ "No es un fichero regular"
+
+#~ msgid "Usage: %s [OPTION]... GROUP FILE...\n"
+#~ msgstr "Modo de empleo: %s [OPCIÓN]... GRUPO FICHERO...\n"
+
+# Este overriding no es como el de "mv".
+# ¿Tal vez el original no tiene sentido?
+# (lo digo porque para borrar, el modo que importa es el del directorio,
+# donde está lo que se va a borrar)
+#
+# overriding es pasar por alto em
+#
+# En general no, solamente en este caso.
+# ¿Quieres decir que sugieres poner
+# "..., pasando por alto el modo %04o"? sv+
+#
+#~ msgid "%s: remove %s`%s', overriding mode %04o? "
+#~ msgstr "%s: ¿borrar %s`%s', sustituyendo el modo %04o? (s/n) "
+
+# Este tendré que estudiarlo más.
+# De momento lo dejo así.
+# SIoNO
+#~ msgid "%s: descend directory `%s', overriding mode %04o? "
+#~ msgstr ""
+#~ "%s: ¿descender al directorio `%s', sustituyendo el modo %04o? (s/n) "
+
+# SIoNO
+#~ msgid "%s: remove directory `%s' (might be nonempty)? "
+#~ msgstr "%s: ¿borrar el directorio `%s'? (podría no estar vacío) (s/n) "
+
+# [ Antes decía "...el punto de montaje para %s" ]
+# No me gusta punto "de montaje". ¿Sugerencias?
+#
+# Como se monta en un directorio, se podría decir `directorio de montaje'
+# De todas maneras, punto de montaje no queda tan mal ... :) ipg
+#
+# Esta es dura, nunca se me ocurrió pensar que habría que traducirlo
+# un día. ... ¿Qué tal ... "lugar para montar" o "directorio en
+# el que montar"? em
+#
+# Algo mejor. Pero no estoy seguro. Tengo que pensarlo. sv
+#
+# "No se puede encontrar el sitio para montar %s" Sólo es una
+# sugerencia más. tb
+#
+# La conservaremos.
+# ¿Más candidatos? sv
+#
+# ¿`punto de montaje de %s'? ipg
+#
+# Bien, este es uno de esos casos en los que uno decide salirse
+# por la tangente. Espero que os guste así.
+# Razones: El "punto" de montaje es siempre un directorio (¿o no?).
+# Llamarle "punto" es emplear un lenguaje algo oscuro.
+# Si alguien sabe de algún caso en el que el punto de montaje no sea
+# un directorio, por favor que lo diga. sv
+#~ msgid "cannot find mount point for %s"
+#~ msgstr "no se puede encontrar el directorio para montar %s"
+
+#~ msgid "cannot get processor type"
+#~ msgstr "no se puede obtener el tipo de procesador"
+
+#~ msgid "USER"
+#~ msgstr "USUARIO"
+
+# ¿Qué es eso de MESG? Si se refiere a si la tty acepta mensajes
+# (orden mesg), ¿no habría que traducir MENS " o algo así? Porque
+# "mensaje" en español no tiene ninguna G.erardo
+# Ni idea. Investigarlo. sv
+# Lo investigo por ti: un "who --help; who -H -T" te dará la
+# pista. Estoy en lo correcto. Cámbialo. gerardo
+# Efectivamente, who -H -T es muy esclarecedor.
+# Pero no me acaba de convencer. Ese MESG no es necesariamente MENSAJES.
+# Yo lo veo como una variable llamada MESG que puede tener dos valores
+# distintos, "y" y "n", y que se cambia con la orden mesg.
+# ¿Opiniones?
+#~ msgid "MESG "
+#~ msgstr "MESG "
+
+#~ msgid "LOGIN-TIME "
+#~ msgstr "HORA DE CONEXIÓN "
+
+#~ msgid "FROM\n"
+#~ msgstr "DESDE\n"
+
+# ¿Por qué no traducís "virtual"? gerardo
+# Porque creo que el original está mal...
+# Hoy en día todo es virtual...
+# Me recuerda los viejos tiempos en los que había memoria convencional,
+# extendida, expandida, superior...
+#
+# ¿Viejos tiempos? Hay muchíiisima gente con el maldito M$-DOG aún, y
+# las BIOS siguen diciendo lo de "640 k" de memoria convencional,
+# aunque tengas 64 MB.
+#
+# Me estás dando la razón. ¿Es que no pretendemos alejarnos de todo eso?
+# (Tengo entendido que Linux pasa de la BIOS todo lo que puede). sv
+#
+# Francamente, prefiero pensar en que un programa intenta un malloc(),
+# y si no lo consigue, entonces es que se ha agotado la memoria, así
+# sin más. ¿qué opinas? sv
+#
+# Bueno, no es que esté mal, pero cuando el autor pone "virtual", se
+# podría dejar, y tampoco estaría mal. Sí, no me recuerdes lo del
+# ASCII :-) gerardo
+# ¡Es verdad! :-)
+# De todas formas esto habría que preguntárselo al gran jefe de GNU (RMS).
+#~ msgid "virtual memory exhausted"
+#~ msgstr "memoria agotada"
+
+#~ msgid "<undef>"
+#~ msgstr "<no definido>"
+
+#~ msgid ""
+#~ "\n"
+#~ "Instead of -t NUMBER or -t LIST, -NUMBER or -LIST may be used.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "En vez de `-t N' ó `-t LISTA' puede usarse -N ó -LISTA.\n"
+
+# ¿Qué tal dejar bien claro que "...en vez de 10 por defecto." aunque no
+# ^^^^^^^^^^^
+# esté en la versión english?
+#
+#~ msgid ""
+#~ "\n"
+#~ "SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+#~ "If -VALUE is used as first OPTION, read -c VALUE when one of\n"
+#~ "multipliers bkm follows concatenated, else read -n VALUE.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "TAMAÑO puede tener un sufijo: `b' para 512, `k' para 1K, `m' para 1 "
+#~ "Megabyte.\n"
+#~ "Se se utiliza -VALOR como primera OPCIÓN, se entiende como -c VALOR si "
+#~ "va\n"
+#~ "seguido por uno de los multiplicadores `b', `k' ó `m', si no, se "
+#~ "entiende\n"
+#~ "como -n VALOR.\n"
+
+#~ msgid ""
+#~ " +POS1 [-POS2] start a key at POS1, end it before POS2 "
+#~ "(origin 0)\n"
+#~ " Warning: this option is obsolete\n"
+#~ msgstr ""
+#~ " +POS1 [-POS2] comienza una clave en POS1 y la termina antes\n"
+#~ " de POS2. Atención: esta opción está obsoleta\n"
+
+#~ msgid ""
+#~ "A first OPTION of -VALUE\n"
+#~ "is treated like -n VALUE unless VALUE has one of the [bkm] suffix\n"
+#~ "multipliers, in which case it is treated like -c VALUE.\n"
+#~ msgstr ""
+#~ "Si la primera\n"
+#~ "OPCIÓN es -VALOR se trata como si fuese -n VALOR, a menos que VALOR "
+#~ "tenga\n"
+#~ "uno de los sufijos mencionados (bkm), en cuyo caso se trata como -c "
+#~ "VALOR.\n"
+
+#~ msgid ""
+#~ "A first option of +VALUE is treated like -+VALUE, but this usage is "
+#~ "obsolete\n"
+#~ "and support for it will be withdrawn.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Si la primera opción es +VALOR se trata como -+VALOR, pero este uso\n"
+#~ "está obsoleto, y su soporte desaparecerá.\n"
+
+#~ msgid ""
+#~ "specified number of bytes `%s' is larger than the maximum\n"
+#~ "representable value of type `long'"
+#~ msgstr ""
+#~ "el número especificado de bytes `%s' es más grande que el valor máximo\n"
+#~ "representable de tipo `long'"
+
+#~ msgid ""
+#~ "when using the old-style +POS and -POS key specifiers,\n"
+#~ "the +POS specifier must come first"
+#~ msgstr ""
+#~ "cuando se utiliza el estilo de parámetros antiguo con +POS y -POS,\n"
+#~ "el primero de ellos debe ser +POS"
+
+#~ msgid ""
+#~ "the starting field number argument to the `-k' option must be positive"
+#~ msgstr ""
+#~ "el número que especifica el primer campo en la opción `-k' debe\n"
+#~ "ser positivo"
+
+#~ msgid "starting field spec has `.' but lacks following character offset"
+#~ msgstr ""
+#~ "la especificación del campo de comienzo tiene `.' pero carece de número "
+#~ "de\n"
+#~ "desplazamiento de caracteres"
+
+#~ msgid ""
+#~ "starting field character offset argument to the `-k' option\n"
+#~ "must be positive"
+#~ msgstr ""
+#~ "el argumento de desplazamiento del campo de comienzo para la opción `-k'\n"
+#~ "debe ser positivo."
+
+#~ msgid "field specification has `,' but lacks following field spec"
+#~ msgstr ""
+#~ "la especificación de campo tiene `,' pero no constan a continuación las\n"
+#~ "especificaciones del campo"
+
+#~ msgid "ending field number argument to the `-k' option must be positive"
+#~ msgstr "el número de campo final para la opción `-k' debe ser positivo"
+
+# Ídem. ipg
+#~ msgid "ending field spec has `.' but lacks following character offset"
+#~ msgstr ""
+#~ "la especificación del campo de final tiene `.' pero no le sigue un\n"
+#~ "desplazamiento de caracteres"
+
+#~ msgid "%s: cannot follow end of non-regular file"
+#~ msgstr "%s: no se puede localizar el final de un fichero no regular"
+
+#~ msgid "could not find loop"
+#~ msgstr "no se puede encontrar un bucle"
+
+#~ msgid "`%s' has reappeared"
+#~ msgstr "`%s' ha reaparecido"
+
+#~ msgid "`-w PAGE_WIDTH' invalid column number: `%s'"
+#~ msgstr "`-w ANCHO_PÁGINA' el número de columna no es válido: `%s'"
+
+#~ msgid "%s: extra characters in the argument to the `-%c' option: `%s'\n"
+#~ msgstr "%s: sobran caracteres en el argumento de la opción `-%c' : `%s'\n"
diff --git a/po/et.gmo b/po/et.gmo
new file mode 100644
index 0000000..525a6ff
--- /dev/null
+++ b/po/et.gmo
Binary files differ
diff --git a/po/et.po b/po/et.po
new file mode 100644
index 0000000..1215694
--- /dev/null
+++ b/po/et.po
@@ -0,0 +1,9626 @@
+# Estonian translations for coreutils
+# Copyright (C) 2000 Free Software Foundation, Inc.
+# Toomas Soome <Toomas.Soome@microlink.ee>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 6.5\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2006-11-23 12:07+0200\n"
+"Last-Translator: Toomas Soome <Toomas.Soome@microlink.ee>\n"
+"Language-Team: Estonian <et@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-15\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, c-format
+msgid "preserving permissions for %s"
+msgstr "säilitan %s õigused"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "sean %s õigusi"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "vigane argument %s võtmel `%s'"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "segane argument %s võtmele `%s'"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Lubatud argumendid on:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "viga kirjutamisel"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Tundmatu süsteemne viga"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "stat %s ei õnnestu"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "tavaline tühi fail"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "tavaline fail"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "Kataloog"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "blokkseadme fail"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "sümbolseadme fail"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "fifo"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "nimeviide"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "sokkel"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "teadete järjekord"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "semafor"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "jagatud mälu objekt"
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr "tüübitud mälu objekt"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "veider fail"
+
+#: lib/gai_strerror.c:44
+msgid "Address family for hostname not supported"
+msgstr "Aadressiperekonda või hostinime ei toetata"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr "Ajutine tõrge nime lahendamisel"
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr "Vigane ai_flags väärtus"
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr "nime lahendamisl tekkis taastumatu tõrge"
+
+#: lib/gai_strerror.c:48
+msgid "ai_family not supported"
+msgstr "ai_family ei toetata"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr "Tõrge mälu haaramisel"
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr "Hosti nimega ei ole aadresse seostatud"
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr "Nimi või teenus on tundmatu"
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr "ai_socktype ei toeta teenuse nime"
+
+#: lib/gai_strerror.c:53
+msgid "ai_socktype not supported"
+msgstr "ai_socktype ei toetata"
+
+#: lib/gai_strerror.c:54
+msgid "System error"
+msgstr "Süsteemne viga"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr "Päringu töötlemine käib"
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr "Päring katkestati"
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr "Päringut ei katkestatud"
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr "Kõik päringud täidetud"
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr "Katkestatud signaaliga"
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr "Parameetersõne ei ole korrektselt kodeeritud"
+
+#: lib/gai_strerror.c:74
+msgid "Unknown error"
+msgstr "Tundmatu viga"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: võti `%s' on segane\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: võti `--%s' ei luba kasutada argumenti\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: võti `%c%s' ei luba kasutada argumenti\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: võti `%s' nõuab argumenti\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: tundmatu võti `--%s'\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: tundmatu võti `%c%s'\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: lubamatu võti -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: vigane võti -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: võti nõuab argumenti -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: võti `-W %s' on segane\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: võti `-W %s' ei luba kasutada argumenti\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "bloki suurus"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "ei õnnestu muuta %s õigusi"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "kataloogi `%s' ei õnnestu luua"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "mälu on otsas"
+
+#: lib/openat-die.c:34
+#, c-format
+msgid "unable to record current working directory"
+msgstr "ei õnnestu registreerida jooksvat töökataloogi"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "esialgsesse töökataloogi ei õnnestu tagasi minna"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "'"
+
+#: lib/randread.c:125
+#, c-format
+msgid "%s: end of file"
+msgstr "%s: faili lõpp"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr "Õnnestumine"
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr "Ei leitud"
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr "Vigane regulaaravaldis"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr "Vigane järjestamise sümbol"
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr "Vigane sümbolite klassi nimi"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr "Lõpetav langkriips"
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr "Vigane tagasiviide"
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr "Puudub [ või [^"
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr "Puudub ( või \\("
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr "Puudub \\{"
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr "Vigane \\{\\} kontekst"
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr "Vigane vahemiku lõpp"
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr "Mälu on otsas"
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr "Vigane eelnev regulaaravaldis"
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr "Enneaegne regulaaravaldise lõpp"
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr "Regulaaravaldis on liiga suur"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr "Puudub ) või \\)"
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr "Eelmist regulaaravaldist pole"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr "%s rekursiivselt töötlemine on ohtlik"
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr "%s (sama kui %s) rekursiivselt töötlemine on ohtlik"
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr "selle ettevaatusabinõu blokeerimiseks kasutage --no-preserve-root"
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[jJ]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[eE]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "iconv funktsioon ei ole kasutatav"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "iconv funktsioon puudub"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "sümbol on piirkonnast väljas"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "U+%04X ei saa lokaalsesse kooditabelisse teisendada"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "U+%04X ei saa lokaalsesse kooditabelisse teisendada: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "vigane kasutaja"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "vigane grupp"
+
+#: lib/userspec.c:109
+msgid "invalid spec"
+msgstr "vigane seade"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr "©"
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Käesolev programm on vaba tarkvara. Te võite seda edasi levitada ja/või "
+"muuta\n"
+"vastavalt GNU Üldise Avaliku Litsentsi <http://www.gnu.org/licenses/gpl."
+"html>\n"
+"tingimustele.\n"
+"Seadustega lubatud piirides GARANTII PUUDUB.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Kirjutanud %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Kirjutanud %s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Kirjutanud %s, %s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Kirjutanud %s, %s, %s\n"
+"ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Kirjutanud %s, %s, %s,\n"
+"%s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Kirjutanud %s, %s, %s,\n"
+"%s, %s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Kirjutanud %s, %s, %s,\n"
+"%s, %s, %s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Kirjutanud %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Kirjutanud %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Kirjutanud %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s ja teised.\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "vigane argument: %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "sõnede võrdlus ebaõnnestus"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Probleemi lahendamiseks seadke LC_ALL=C."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "Võrreldi sõnesid %s ja %s."
+
+#: lib/xmemxfrm.c:55
+#, c-format
+msgid "string transformation failed"
+msgstr "sõnede teisendamine ebaõnnestus"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr "Teisendamata sõne oli %s."
+
+#: lib/xstrtol.h:62
+#, c-format
+msgid "invalid %s `%s'"
+msgstr "vigane %s `%s'"
+
+#: lib/xstrtol.h:69
+#, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "%s järgi on vigane sümbol `%s' sees"
+
+#: lib/xstrtol.h:74
+#, c-format
+msgid "%s `%s' too large"
+msgstr "%s `%s' on liiga suur"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Lisainfo saamiseks proovige `%s --help'.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+"Kasutamine: %s [VÕTI] [FAIL]...\n"
+"Base64 kodeeri faile või standardsisenit väljastades standardväljundisse.\n"
+"\n"
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+" -w, --wrap=VEERG Murra kodeeritud read antud veerust (vaikimisi 76).\n"
+" 0 blokeerib ridade murdmise.\n"
+"\n"
+" -d, --decode Dekodeeri andmed.\n"
+" -i, --ignore-garbage Dekodeerimisel ignoreeri tähestiku väliseid "
+"sümboleid.\n"
+"\n"
+
+#: src/base64.c:77
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+" --help Väljasta abiinfo ja lõpeta töö.\n"
+" --version Väljasta versiooniinfo ja lõpeta töö.\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Kui FAIL puudub või on -, loe standardsisendit.\n"
+
+#: src/base64.c:83
+#, fuzzy
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+"\n"
+"Andmed kodeeritakse vastavalt RFC 3548 kirjeldatud base64 tähestikule.\n"
+"Dekodeerimine eeldab sobivat sisendit, --ignore-garbage üritab taastuda\n"
+"tähestikuvälistest sümbolitest (nagu reavahetused) andmevoos.\n"
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Vigadest teatage palun aadressil <%s>.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "viga lugemisel"
+
+#: src/base64.c:234
+#, c-format
+msgid "invalid input"
+msgstr "vigane sisend"
+
+#: src/base64.c:271
+#, c-format
+msgid "invalid wrap size: %s"
+msgstr "vigane murdmise veerg: %s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr "liigne operand %s"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "sulen standardsisendi"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kasutamine: %s NIMI [SUFIKS]\n"
+" või: %s VÕTI\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Väljasta NIMI ilma eelnevate kataloogideta.\n"
+"Kui määratud, eelmalda ka sufiks.\n"
+"\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+"\n"
+"Näited:\n"
+" %s /usr/bin/sort Väljasta \"sort\".\n"
+" %s include/stdio.h .h Väljasta \"stdio\".\n"
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, c-format
+msgid "missing operand"
+msgstr "puudub operand"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Kasutamine: %s [VÕTI]... [FAIL]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"Liida FAILID või standardsisend standardväljundisse.\n"
+"\n"
+" -A, --show-all sama, kui -vET\n"
+" -b, --number-nonblank mittetühjade väljundridade arv\n"
+" -e sama, kui -vE\n"
+" -E, --show-ends näita iga rea lõpus $\n"
+" -n, --number kõikide väljundridade arv\n"
+" -s, --squeeze-blank korraga ei väljasta üle ühe tühja rea\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t sama, kui -vT\n"
+" -T, --show-tabs esita TAB süboleid kui ^I\n"
+" -u (ignoreeritakse)\n"
+" -v, --show-nonprinting kasuta ^ ja M- notatsiooni, v.a LFD ja TAB "
+"korral\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+"\n"
+"Näited:\n"
+" %s f - g Väljasta f'i sisu, siis standardsisend, siis g sisu.\n"
+" %s Kopeeri standardsisend standardväljundisse.\n"
+
+#: src/cat.c:333
+#, c-format
+msgid "cannot do ioctl on %s"
+msgstr "%s peal ioctl ei õnnestu"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "standardväljund"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: sisendfail on väljundfail"
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "vigane grupp %s"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Kasutamine: %s [VÕTI]... GRUPP FAIL\n"
+" või: %s [VÕTI]... --reference=VFAIL FAIL...\n"
+
+#: src/chgrp.c:117
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Muuda iga antud FAILi grupikuuluvust.\n"
+"Võtmega --reference seatakse iga antud faili grupp viidatud faili järgi.\n"
+"\n"
+" -c, --changes teavita ainult muutustest\n"
+" --dereference muuda nimeviite poolt viidatatvat, mitte viidet\n"
+" (seda tehakse vaikimisi)\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference muuda viidatava asemel nimeviidet\n"
+" (kasutatav süsteemides, kus saab muuta nimeviite\n"
+" omanikku)\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root ära käsitle `/' eriliselt (vaikimisi)\n"
+" --preserve-root ära töötle `/' rekursiivselt\n"
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet vaiki enamus veateadetest\n"
+" --reference=VFAIL kasuta esitatud grupi asemel VFAIL gruppi\n"
+" -R, --recursive töötle faile ja katalooge rekursiivselt\n"
+" -v, --verbose väljasta infot iga töödeldava faili kohta\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+"Järgnevad võtmed muudavad hierarhia läbimist juhul, kui on kasutatus võtit -"
+"R.\n"
+"Kui kasutatakse enam, kui üht võtit, kehtib viimane.\n"
+"\n"
+" -H kui argument on nimeviide kataloogile, lahenda see\n"
+" -L lahenda kõik ette tulevad nimiviidad kataloogidele\n"
+" -P ära lahenda nimeviiteid (vaikimisi)\n"
+"\n"
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+"\n"
+"Näited:\n"
+" %s staff /u Sea /u grupi \"staff\" omaks.\n"
+" %s -hR staff /u Sea /u ja selle sisu grupi \"staff\" omaks.\n"
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr "-R --dereference nõuab kas -H või -L"
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, c-format
+msgid "missing operand after %s"
+msgstr "%s järel puudub operand"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "%s atribuutide lugemine ebaõnnestus"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "loen %s uusi atribuute"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "nii nimeviide %s kui ka viidatav fail jäeti muutmata\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "%s õigused on nüüd %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "ei õnnestu %s õiguste muutmine olekusse %04lo (%s)\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "%s õigused jäeti %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "%s ei saa kasutada"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "kataloogi %s ei õnnestu lugeda"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "muudan %s õigusi"
+
+#: src/chmod.c:286
+#, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "%s: uued õigused on %s, mitte %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr "fts_read ebaõnnestus"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Kasutamine: %s [VÕTI]... MOOD[,MOOD]... FAIL\n"
+" või: %s [VÕTI]... KAHEKSAND-MOOD FAIL...\n"
+" või: %s [VÕTI]... --reference=VFAIL FAIL...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+"Sea iga FAILI moodiks MOOD.\n"
+"\n"
+" -c, --changes nagu verbaalselt, aga teata ainult muudatustest\n"
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root ära käsitle `/' eriliselt (vaikimisi)\n"
+" --preserve-root ära töötle `/' rekursiivselt\n"
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+" -f, --silent, --quiet vaiki enamus vigadest\n"
+" -v, --verbose väljasta infot iga töödeldava faili kohta\n"
+" --reference=VFAIL kasuta esitatud õiguste asemel VFAIL õiguseid\n"
+" -R, --recursive töötle faile ja katalooge rekursiivselt\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+"\n"
+"Iga MOOD on kujul `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr "moodi ja --reference võtmeid ei saa kombineerida"
+
+#: src/chmod.c:510
+#, c-format
+msgid "invalid mode: %s"
+msgstr "vigane mood: %s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "muutsin %s omanikuks %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "muutsin %s omanikgrupiks %s\n"
+
+#: src/chown-core.c:149
+#, c-format
+msgid "no change to ownership of %s\n"
+msgstr "ei õnnestu muuta %s omanikku\n"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "ei õnnestu seada %s omanikuks %s\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "%s grupi muutmine grupiks %s ebaõnnestus\n"
+
+#: src/chown-core.c:154
+#, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "ei õnnestu muuta %s omanikku\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "%s omanik säilitati kui %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "%s grupp säilitati kui %s\n"
+
+#: src/chown-core.c:159
+#, c-format
+msgid "ownership of %s retained\n"
+msgstr "%s omanik säilitati\n"
+
+#: src/chown-core.c:344
+#, c-format
+msgid "cannot dereference %s"
+msgstr "%s ei saa lahendada"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "muudan %s omanikku"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "muudan %s gruppi"
+
+#: src/chown.c:93
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Kasutamine: %s [VÕTI]... [OMANIK][:[GRUPP]] FAIL...\n"
+" või: %s [VÕTI]... --reference=VFAIL FAIL...\n"
+
+#: src/chown.c:98
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Muuda iga antud faili omanikku ja/või gruppi.\n"
+"Võtmega --reference seatakse iga antud faili omanik \n"
+"ja grupp viidatud faili järgi.\n"
+"\n"
+" -c, --changes teavita ainult muutustest\n"
+" --dereference muuda nimeviite poolt viidatatvat, mitte viidet\n"
+" (seda tehakse vaikimisi)\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=PRAEGUNE_OMANIK:PRAEGUNE_GRUPP\n"
+" muuda iga antuf faili omanikku ja/või gruppi "
+"ainult\n"
+" juhul, kui kehtiv omanik ja/või grupp on samad\n"
+" siin esitatutega. Emb-kumb võib olla ära jäetud,\n"
+" sellisel juhul ei nõuta puuduva attribuudi "
+"sobivust.\n"
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet vaiki enamus veateadetest\n"
+" --reference=VFAIL kasuta esitatud OMANIK:GRUPP asemel VFAIL\n"
+" omanikku ja gruppi\n"
+" -R, --recursive töötle faile ja katalooge rekursiivselt\n"
+" -v, --verbose väljasta infot iga töödeldava faili kohta\n"
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"Omanikku ei muudeta, kui ei ole määratud. Gruppi ei muudeta, kui ei ole\n"
+"määratud, kui muudetakse primaarseks grupiks, kui kasutatakse sümbolit `:'.\n"
+"Omanik ja grupp võivad olla antud nii numbrina kui ka nimena.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+"\n"
+"Näited:\n"
+" %s root /u Sea /u omanikuks \"root\".\n"
+" %s root:staff /u Sama, kui eelmine aga sea ka grupp.\n"
+" %s -hR root /u Sea /u ja selle sisu omanikuks \"root\".\n"
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kasutamine: %s UUSJUUR [KÄSK...]\n"
+" või: %s VÕTI\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"Käivita KÄSK kasutades juurkataloogina kataloogi UUSJUUR.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"Kui käsklust ei antud, käivita ``${SHELL} -i'' (vaikimisi: /bin/sh).\n"
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "%s ei õnnestu juurkataloogiks seada"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "ei saa minna juurkataloogi"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "käsklust %s ei saa käivitada"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: fail on liiga suur"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Kasutamine: %s [FAIL]...\n"
+" või: %s [VÕTI]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"Väljasta iga FAILI kohta CRC kontrollsumma ja baitide arv.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Kasutamine: %s [VÕTI]... FAIL1 FAIL2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr "Võrdle järjestatud faile FAIL1 ja FAIL2 rida haaval.\n"
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+"\n"
+"Võtmeteta väljastatakse kolm veergu. Esimeses veerus on faili FAIL1\n"
+"unikaalsed read, teises veerus on faili FAIL2 unikaalsed read ja\n"
+"kolmandas veerus on nende kahe faili ühised read.\n"
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"\n"
+" -1 jäta vahele read, mis on ainult failis FAIL1\n"
+" -2 jäta vahele read, mis on ainult failis FAIL2\n"
+" -3 jäta vahele read, mis on mõlemas failis\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "%s omanikku ei õnnestu säilitada"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr "ei õnnestu leida faili %s"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "%s autorit ei õnnestu säilitada"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "ei õnnestu avada %s lugemiseks"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "fstat %s ei õnnestu"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "jätan %s vahele, kuna see asendati kopeerimise ajal"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "%s ei saa kustutada"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "%s eemaldatud\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "ei õnnestu luua tavalist faili %s"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "loen %s"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "lseek %s ei õnnestu"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "kirjutan %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "jätan %s ajad muutmata"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "sulgen %s"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: kirjutan %s üle, kirjutan üle ka õigused %04lo? "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: kirjutan %s üle? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (varukoopia: %s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "jätan kataloogi %s vahele"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "hoiatus: lähtefail %s on esitatur enam kui korra"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s ja %s on üks ja sama fail"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "ei saa üle kirjutada mitte-katataloogi %s kataloogiga %s"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "ei kirjuta üle just loodud faili %s failiga %s"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "kataloogi %s ei saa üle kirjutada mitte kataloogiga"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "kataloogi ei saa tõsta mitte-kataloogi: %s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "%s varundamine hävitaks allika; %s ei teisaldatud"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "%s varundamine hävitaks allika; %s ei kopeeritud"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "ei õnnestu luua %s varukoopiat"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "kataloogi %s ei saa iseendasse, %s, kopeerida"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "ei loo viidet %s kataloogile %s"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "ei õnnestu luua viidet %s -> %s"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "%s ei saa tõsta iseenda alamkataloogi %s"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "ei õnnestu tõsta %s -> %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+"seadmete-vaheline teisaldamine ebaõnnestus: %s -> %s; allikat ei saa "
+"kustutada"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "tsüklilist nimeviita %s ei õnnestu kopeerida"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr "%s: suhtelisi nimeviiteid saab luua ainult jooksvas kataloogis"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "ei õnnestu luua nimeviidet %s -> %s"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "ei õnnestu luua viidet %s"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "ei õnnestu luua fifot %s"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "ei õnnestu luua seadmefaili %s"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "ei õnnestu lugeda nimeviidet %s"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "ei õnnestu luua nimeviidet %s"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s on tundmatut tüüpi fail"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "%s ei saa taastada"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (taastamine)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Kasutamine: %s [VÕTI]... [-T] ALG SIHT\n"
+" või: %s [VÕTI]... ALG... KATALOOG\n"
+" või: %s [VÕTI]... -t KATALOOG ALG...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Kopeeri allikas sihtpunkti või kataloogi või mitu allikat kataloogi.\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Kohustuslikud argumendid pikkadele võtmetele on kohustuslikud ka "
+"lühikestele.\n"
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive sama kui -dpR\n"
+" --backup[=KONTROLL] loo igast olemasolevast sihtfailist "
+"varukoopia\n"
+" -b nagu --backup aga ei kasuta argumenti\n"
+" --copy-contents rekursiivses moodis kopeeri spets failide "
+"sisu\n"
+" -d sama kui --no-dereference --preserve=link\n"
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" -f, --force kui olemasolevat sihtfaili ei saa avada,\n"
+" eemalda see ja proovi uuesti\n"
+" -i, --interactive küsi enne ülekirjutamist\n"
+" -H järgi käsureal antud nimeviiteid\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+" -l, --link kopeerimise asemel loo viited\n"
+" -L, --dereference järgi alati nimeviited\n"
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr " -P, --no-dereference nimeviiteid ei järgi kunagi\n"
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -p sama kui --preserve=mode,ownership,"
+"timestamps\n"
+" --preserve[=ATR_LOEND] säilita, kui võimalik, antud atribuudid\n"
+" (vaikimisi: mode,ownership,timestamps)\n"
+" täiendavad atribuudid: links, all\n"
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=ATR_LOEND ära säilita antud atribuute\n"
+" --parents lisa allika tee kataloogi ette\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive kopeeri kataloogid rekursiivselt\n"
+" --remove-destination eemalda iga sihtfail enne selle avamist\n"
+" (vastupidiselt võtmele --force)\n"
+
+#: src/cp.c:205
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --sparse=MILLAL aukudega failide loomise tingimused\n"
+" --strip-trailing-slashes eemalda igalt käsureal antud nimelt\n"
+" lõpus olevad kaldkriipsud\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link loo kopeerimise asemel nimeviited\n"
+" -S, --suffix=SUFIKS määra varukoopia järelliide\n"
+" -t, --target-directory=KATALOOG tõsta kõik antud allikad kataloogi\n"
+" -T, --no-target-directory käsitle sihti failina\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update kopeeri ainult, kui allikas on uuem, kui\n"
+" sihtfail või kui sihtfail puudub\n"
+" -v, --verbose selgita, mis toimub\n"
+" -x, --one-file-system püsi selles failisüsteemis\n"
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"Vaikimisi üritatakse tuvastada aukudega faile robustse heuristilise\n"
+"meetodiga ning vastav sihtfail luuakse samuti aukudega. Sellise käitumise\n"
+"määrab võti --sparse=auto. Kasutage --sparse=always, et luua aukudega\n"
+"sihtfail alati, kui lähefail sisaldab piisavalt pika järjendi null baite.\n"
+"--sparse=never blokeerib aukudega failide loomise.\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Varukoopia sufiks on `~', kui seda ei ole muudetud võtmega --suffix või\n"
+"keskkonnamuutujaga SIMPLE_BACKUP_SUFFIX. Versioonikontrolli meetodit saab\n"
+"valida võtmega --backup või keskonnamuutujaga VERSION_CONTROL. Võimalikud\n"
+"väärtused on järgnevad:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off varukoopiaid ei looda (isegi kui kasutati võtit --backup)\n"
+" numbered, t loo nummerdatud varukoopiad\n"
+" existing, nil nummerdatud, kui neid on, muidu lihtne\n"
+" simple, never loo alati lihtsaid varukoopiaid\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Erijuhuna loob cp varukoopia ka kopeeritavast, kui on kasutatud võtmeid\n"
+"force ja backup ning ALLIKAS ja SIHT on sama nimi olemasoleval tavalisel\n"
+"failil.\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "%s aegu ei õnnestu säilitada"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "%s õigusi ei õnnestu säilitada"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "kataloogi %s ei õnnestu luua"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "`%s' on olemas, aga ei ole kataloog"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "kasutan %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, c-format
+msgid "missing file operand"
+msgstr "argumentides puudub failinimi"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, c-format
+msgid "missing destination file operand after %s"
+msgstr "%s järel puudub sihtfail"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+"--target-directory (-t) ja --no-target-directory (-T) ei saa koos kasutada"
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, c-format
+msgid "target %s is not a directory"
+msgstr "antud siht, %s, ei ole kataloog"
+
+#: src/cp.c:697
+#, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "võtme --parents kasutamisel peab sihtkoht olema kataloog"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr "võti --reply on aegunud; kasutage selle asemel -i või -f"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, c-format
+msgid "multiple target directories specified"
+msgstr "määrati mitu sihtkataloogi"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "ei õnnestu luua ei tavalist ega nimeviita"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "varukoopia tüüp"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "sisend kadus"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: rea number on piirkonnast väljas"
+
+#: src/csplit.c:709
+#, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: %s: rea number on piirkonnast väljas"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr " %s kordamisel\n"
+
+#: src/csplit.c:755
+#, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: %s: sobivat ei leitud"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "viga regulaaravaldisega otsingul"
+
+#: src/csplit.c:984
+#, c-format
+msgid "write error for %s"
+msgstr "viga %s kirjutamisel"
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: eraldaja järel oodati täisarvu"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: korduste arvuga peab kasutama `}'"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: `{' ja `}' vahel peab olema täisarv"
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: puudub sulgev eraldaja `%c'"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: vigane regulaaravaldis: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: vigane muster"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: rea number peab olema suurem kui null"
+
+#: src/csplit.c:1172
+#, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "rea number %s on väiksem, kui eelneva rea number, %s"
+
+#: src/csplit.c:1178
+#, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "hoiatus: rea number %s on sama, kui eelneva rea number"
+
+#: src/csplit.c:1231
+#, c-format
+msgid "invalid format width"
+msgstr "vigane vormingu laius"
+
+#: src/csplit.c:1252
+#, c-format
+msgid "invalid format precision"
+msgstr "vigane vormingu täpsus"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "sufiksis puudub teisenduse määrang"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "vigane teisenduse määraja sufiksis: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "vigane teisenduse määraja sufiksis: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "sufiksis on liiga palju %% teisenduse määranguid"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "sufiksis puudub %% teisenduse määrang"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: vigane number"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Kasutamine: %s [VÕTI]... FAIL MUSTER...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"Väljasta MUSTRI põhjal tükeldatud FAILi tükid failidesse `xx01', "
+"`xx02', ...\n"
+"ja väljasta standardväljundisse iga osa suurus baitides.\n"
+"\n"
+
+#: src/csplit.c:1486
+#, fuzzy, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=VORMING kasuta %02d asemel sprintf VORMINGUT\n"
+" -f, --prefix=PREFIKS kasuta `xx' asemel PREFIKS\n"
+" -k, --keep-files vigade korral jäta väljundfailid kustutamata\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=NUMBREID kasuta 2 asemel antud arvu numbreid\n"
+" -s, --quiet, --silent ära väljasta väljundfailide mahte\n"
+" -z, --elide-empty-files kustuta tühjad väljundfailid\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"Kui FAIL on -, loe standardsisendit. Iga MUSTER võib olla:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" TÄISARV kopeeri kuni, aga mitte kaasa arvatud, antud "
+"reanumbrini\n"
+" /REGAV/[NIHE] kopeeri kuni, aga mitte kaasa arvatud, sobiva reani\n"
+" %REGAV%[NIHE] jäta vahele kuni, aga mitte kaasa arvatud, sobiva "
+"reani\n"
+" {TÄISARV} korda eelmist mustrit antud arv kordi\n"
+" {*} korda eelmist mustrit niipalju kui võimalik\n"
+"\n"
+"Rea NIHE peab olema kujul `+' või`-', millele järgneb positiivne täisarv.\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Kasutamine: %s [VÕTI]... [FAIL]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"Väljasta igast FAIList valitud osad standardväljundisse.\n"
+"\n"
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=LOEND väljasta ainult need baidid\n"
+" -c, --characters=LOEND väljasta ainult need sümbolid\n"
+" -d, --delimiter=ERALD määra TAB asemel väljade eraldaja\n"
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=LOEND väljasta ainult need väljad; väljasta samuti\n"
+" kõik read, mis ei sisalda eraldavat sümbolit,\n"
+" välja arvatu juhul, kui kasutati võtit -s\n"
+" -n (ignoreerin)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+" --complement täienda valitud baitide, sümbolite või väljade "
+"hulka.\n"
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited ära väljasta eraldajata ridu\n"
+" --output-delimiter=SÕNE kasuta väljundis eraldajana SÕNE\n"
+" vaikimisi kasutatakse sisendi eraldajat\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+#, fuzzy
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Kasutage ühte ja ainult ühte võtit järgnevaist -b, -c või -f. Iga LOEND\n"
+"koosneb vahemikust või komadega eraldatud vahemikest. Valitud sisend\n"
+"kirjutatakse täpselt üks kord lugemise järjekorras.\n"
+"Iga vahemik on üks järgnevaist:\n"
+"\n"
+" N N-is bait, sümbol või väli, loendamist alustatakse ühest\n"
+" N- N-indast baidist, sümbolist või väljast rea lõpuni\n"
+" N-M alates N kuni M (kaasa arvatud) baiti, sümbolit või välja\n"
+" -M esimesest kuni M-nda (kaasa arvatud) baidi, sümboli või väljani\n"
+"\n"
+"Kui FAIL puudub või on -, loeb standardsisendit.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "vigane baitide või väljade loend"
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr "baidi nihe %s on liiga suur"
+
+#: src/cut.c:472
+#, c-format
+msgid "field number %s is too large"
+msgstr "välja number %s on liiga suur"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "lubatud on ainult sama tüüpi loend"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "eraldaja peab olema üks sümbol"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "peate määrama baitide, sümbolite või väljade loendi"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "sisendi eraldajat saab määrata ainult juhul kui töötatakse väljadega"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"eraldamata ridade blokeerimine omab mõtet ainult\n"
+"\tväljadega töötamise puhul"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "puudub väljade loend"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "puudub asukohtade loend"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Kasutamine: %s [VÕTI]... [+FORMAAT]\n"
+" või: %s [-u|--utc|--universal] [KKPPttmm[[SS]AA][.ss]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"Näita jooksvat aega vastavalt antud formaadile või sea süsteemi aeg.\n"
+"\n"
+" -d, --date=SÕNE näita SÕNEga kirjeldatud aega, mitte praegust\n"
+" -f, --file=KPFAIL nagu --date, aga ajad loe igalt KPFAIL realt\n"
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+#, fuzzy
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+" -r, --reference=FAIL näita FAILi viimast muutmise aega\n"
+" -R, --rfc-2822 väljasta RFC-2822 ühilduv kuupäeva sõne\n"
+" --rfc-3339=MÄÄRANG väljasta RFC-3339 ühilduv kuupäeva sõne.\n"
+" MÄÄRANG võib olla `date', `seconds' või `ns'.\n"
+" -s, --set=SÕNE sea SÕNEga määratud aeg\n"
+" -u, --utc, --universal esita või sea koordineeritud universaalaeg\n"
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"\n"
+"FORMAAT kontrollib väljundit. Ainus lubatud võti teise vormiga määrab\n"
+"koordineeritud universaalaja. Interpreteeritavad järjendid on:\n"
+"\n"
+" %% sümbol %\n"
+" %a lokaadi lühendatud nädalapäeva nimi (näiteks P)\n"
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A lokaadi nädalapäeva nimi, muutuv pikkus (nt. pühapäev)\n"
+" %b lokaadi lühendatud kuu nimi (nt. jaan)\n"
+" %B lokaadi kuu nimi (nt. jaanuar)\n"
+" %c lokaadi kuupäev ja aeg (nt. teisipäev, 25. juuni 2002. 12:11:55 "
+"EEST)\n"
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C sajand; nagu %Y, aga viimased kaks numbrit on ära jäetud (nt. 21)\n"
+" %d päev kuus (nt. 01)\n"
+" %D kuupäev, sama kui %m/%d/%y\n"
+" %e päev kuus, täiendatud tühikuga; sama kui %_d\n"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+" %F kuupäev; sama kui %Y-%m-%d\n"
+" %g aasta 2-numbriga, mis vastab ISO nädala numbrile (vaata %G)\n"
+" %G aasta, mis vastab ISO nädala numbrile (vaata %V); kasutatav koos %V\n"
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h sama kui %b\n"
+" %H tund (00..23)\n"
+" %I tund (01..12)\n"
+" %j päev aastas (001..366)\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k tund ( 0..23)\n"
+" %l tund ( 1..12)\n"
+" %m kuu (01..12)\n"
+" %M minut (00..59)\n"
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+" %n reavahetus\n"
+" %N nanosekundeid (000000000..999999999)\n"
+" %p lokaadi suurtähtedega AM või PM tähis (paljudes lokaatides tühi)\n"
+" %P nagu %p, aga väiketähtedega\n"
+" %r aeg, 12-tunni esitus (tt:mm:ss [AP]M)\n"
+" %R aeg, 24-tunni esitus (tt:mm)\n"
+" %s sekundeid alates `00:00:00 1970-01-01 UTC' (GNU laiendus)\n"
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+" %S sekund (00..60)\n"
+" %t tabulaator\n"
+" %T aeg, sama kui %H:%M:%S\n"
+" %u nädalapäev (1..7); 1 esitab esmaspäeva\n"
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U nädala number aastas, pühapäev nädala esimene päev (00..53)\n"
+" %V ISO nädala number, esmaspäev on nädala esimene päev (01..53)\n"
+" %w päev nädalas (0..6); 0 esitab pühapäeva\n"
+" %W nädala number aastas, esmaspäev nädala esimene (00..53)\n"
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x lokaadi kuupäeva esitus (nt. kk.pp.aa)\n"
+" %X lokaadi aja esitus (nt. 23:13:48)\n"
+" %y aasta kaks viimast numbrit (00..99)\n"
+" %Y aasta\n"
+
+#: src/date.c:223
+#, fuzzy
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+" %z +ttmm numbriline ajatsoon (nt., -0400)\n"
+" %:z +tt:mm numbriline ajatsoon (nt., -04:00)\n"
+" %::z +tt:mm:ss numbriline ajatsoon (nt., -04:00:00)\n"
+" %:::z numbriline ajatsoon koos : vastava täpsuseni (nt., -04, +05:30)\n"
+" %Z ajatsooni tähis tähtedega (nt., EET)\n"
+"\n"
+"Vaikimisi täidab date numbriväljad nullidega.\n"
+"`%' järel võib kasutada järgnevaid lippe:\n"
+"\n"
+" - (miinus) ära täida välju\n"
+" _ (alakriips) täida tühikutega\n"
+" 0 (null) täida nullidega\n"
+" ^ kui võimalik, kasuta suurtähti\n"
+" # kui võimalik, kasuta vastupidi tähesuurust\n"
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+"\n"
+"Peale lippe võib kasutada välja laiuse määramiseks veel numbrit;\n"
+"seejärel täiendajat, mis võib olla kas\n"
+"E et kasutada lokaadi alternatiivesitust või\n"
+"O et kasutada lokaadi alternatiivset numbrilist esitust\n"
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "standardsisend"
+
+#: src/date.c:297 src/date.c:517
+#, c-format
+msgid "invalid date %s"
+msgstr "vigane kuupäev %s"
+
+#: src/date.c:408 src/date.c:442
+#, c-format
+msgid "multiple output formats specified"
+msgstr "määrati mitu väljundvormingut"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "väljastatava ajaformaadi võtmed on üksteist välistavad"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr "aja seadmise ja väljastamise võtmeid ei saa koos kasutada"
+
+#: src/date.c:448
+#, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"argumendil %s puudub ees `+';\n"
+"Kui soovite väljastada aega, peavad argumendid, mis ei ole võtmed,\n"
+"olema formaati määravad sõned, mis algavad sümboliga `+'."
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "kuupäeva ja kellaaega ei õnnestu seada"
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "aeg %s on piirkonnast väljas"
+
+#: src/dd.c:404
+#, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kasutamine: %s [OPERAND]...\n"
+" või: %s VÕTI\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"Kopeeri fail, teisendades ja vormindades seda vastavalt võtmetele.\n"
+"\n"
+" bs=BAITE sea ibs=BAITE ja obs=BAITE\n"
+" cbs=BAITE teisenda BAITE baiti korraga\n"
+" conv=VÕTMESÕNAD teisenda fail vastavalt komadega eraldatud võtmetele\n"
+" count=PLOKKE kopeeri ainult PLOKKE sisendplokki\n"
+" ibs=BAITE loe BAITI baiti korraga\n"
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=FAIL loe standardsisendi asemel faili\n"
+" iflag=LIPUD loe vastavalt komadega eraldatud võtmetele\n"
+" obs=BAITI kirjuta BAITI baiti korraga\n"
+" of=FAIL kirjuta standardväljundi asemel faili\n"
+" oflag=LIPUD kirjuta vastavalt komadega eraldatud võtmetele\n"
+" seek=PLOKKI jäta PLOKKI obs mahus plokke väljundisse kirjutamata\n"
+" skip=PLOKKI jäta PLOKKI ibs mahus plokke sisendist lugemata\n"
+" status=noxfer blokeeri ülekande statistika\n"
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"PLOKID ja BAIDID võivad kasutada ka järgnevaid kordavaid sufikseid:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024 ja nii edasi sümbolitele T, P, E, Z, Y.\n"
+"\n"
+"Iga VÕTMESÕNA võib olla:\n"
+"\n"
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii tabelist EBCDIC tabelisse ASCII\n"
+" ebcdic tabelist ASCII tabelisse EBCDIC\n"
+" ibm tabelist ASCII alternatiivsesse EBCDIC tabelisse\n"
+" block täienda reavahetusega lõpetatud kirjed tühikutega cbs-mahtu\n"
+" unblock asenda cbs-mahus blokkides lõpetavad tühikud reavahetusega\n"
+" lcase asenda suurtähed väiketähtedega\n"
+
+#: src/dd.c:445
+#, fuzzy
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+" nocreat ära loo väljundfaili\n"
+" excl katkesta, kui väljundfail on juba olemas\n"
+" notrunc ära lühenda väljundfaili\n"
+" ucase asenda väiketähed suurtähtedega\n"
+" swab vaheta iga sisenbaidi paar\n"
+" noerror jätka ka peale lugemisvigu\n"
+" sync täienda iga sisendplokk nullidega ibs-mahtu; kui kasutatakse\n"
+" block või unblock, täienda tühikutega\n"
+" fdatasync enne lõpetamist kindlusta andmete faili kirjutamine\n"
+" fsync nagu eelmine, aga kirjuta ka metainfo\n"
+
+#: src/dd.c:452
+#, fuzzy
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+" nocreat ära loo väljundfaili\n"
+" excl katkesta, kui väljundfail on juba olemas\n"
+" notrunc ära lühenda väljundfaili\n"
+" ucase asenda väiketähed suurtähtedega\n"
+" swab vaheta iga sisenbaidi paar\n"
+" noerror jätka ka peale lugemisvigu\n"
+" sync täienda iga sisendplokk nullidega ibs-mahtu; kui kasutatakse\n"
+" block või unblock, täienda tühikutega\n"
+" fdatasync enne lõpetamist kindlusta andmete faili kirjutamine\n"
+" fsync nagu eelmine, aga kirjuta ka metainfo\n"
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+"\n"
+"Iga lipp võib olla:\n"
+"\n"
+" append lisamise mood (omab mõtet ainult väljundil; soovitame "
+"conv=notrunc)\n"
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr " direct kasuta andmete käsitlemisel puhverdamata S/V\n"
+
+#: src/dd.c:468
+msgid " directory fail unless a directory\n"
+msgstr " directory katkesta kui ei ole kataloog\n"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr " dsync kasuta andmete käsitlemisel sünkroonmoodi S/V\n"
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr " sync sama, aga ka metainfo korral\n"
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr " nonblock kasuta mitteblokeeruvat S/V\n"
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr " noatime ära uuenda kasutamise aega\n"
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr " noctty ei seosta kontrollivat terminali\n"
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr " nofollow ei järgi nimeviiteid\n"
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr " nolinks katkesta, kui on viiteid\n"
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr " binary kasuta andmete käsitlemisel binaarmoodi\n"
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr " text kasuta andmete käsitlemisel tekstimoodi\n"
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+"\n"
+"Kui saadate töötavale `dd' protsessile signaali %s,\n"
+"kirjutab dd standard veavoogu seni loetud ja kirjutatud kirjete arvud\n"
+"ja jätkab kopeerimist.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 kirjet loetud\n"
+" 18335302+0 kirjet kirjutatud\n"
+" 9387674624 baiti (9.4 GB) kopeeritud, 34.6279 sekundit, 271 MB/s\n"
+"\n"
+"Võtmed on:\n"
+"\n"
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+"%<PRIuMAX>+%<PRIuMAX> kirjet sisse\n"
+"%<PRIuMAX>+%<PRIuMAX> kirjet välja\n"
+
+#: src/dd.c:553
+#, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "%<PRIuMAX> lühendatud kirje\n"
+msgstr[1] "%<PRIuMAX> lühendatud kirjet\n"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] "%<PRIuMAX> bait (%s) kopeeritud"
+msgstr[1] "%<PRIuMAX> baiti (%s) kopeeritud"
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr "Lõpmatu B"
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ", %g s, %s/s\n"
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "sulgen sisendfaili %s"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "sulgen väljundfaili %s"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "kirjutan faili %s"
+
+#: src/dd.c:886
+#, c-format
+msgid "unrecognized operand %s"
+msgstr "tundmatu operand %s"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "vigane teisendus: %s"
+
+#: src/dd.c:900
+#, c-format
+msgid "invalid input flag: %s"
+msgstr "vigane sisendi lipp: %s"
+
+#: src/dd.c:903
+#, c-format
+msgid "invalid output flag: %s"
+msgstr "vigane väljundi lipp: %s"
+
+#: src/dd.c:906
+#, c-format
+msgid "invalid status flag: %s"
+msgstr "vigane oleku lipp: %s"
+
+#: src/dd.c:942
+#, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "tundmatu operand %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "vigane number %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr "hulgast {ascii,ebcdic,ibm} ei saa ühtegi paari kasutada"
+
+#: src/dd.c:973
+#, c-format
+msgid "cannot combine block and unblock"
+msgstr "block ja unblock ei saa koos kasutada"
+
+#: src/dd.c:975
+#, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "lcase ja ucase ei saa koos kasutada"
+
+#: src/dd.c:977
+#, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "excl ja nocreat ei saa koos kasutada"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"hoiatus: kasutan lseek funktsiooni tuuma vea tõttu alternatiivset meetodit,\n"
+"fail (%s) mt_type=0x%0lx -- tüüpide nimekirja leiate <sys/mtio.h>"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, c-format
+msgid "%s: cannot seek"
+msgstr "%s: seek ebaõnnestus"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr "failiviida ületäitumine %s lugemisel"
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "hoiatus: peale lugemisviga ei pruugi failiviit olla õige"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr "ei õnnestu tuuma veast mööda minna"
+
+#: src/dd.c:1376
+#, c-format
+msgid "setting flags for %s"
+msgstr "sean %s lipud"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr "fdatasync %s ebaõnnestus"
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr "fsync %s ebaõnnestus"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "avan %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+"indeks on liiga suur: ei õnnestu lühendada pikkuseni seek=%<PRIuMAX> (%lu-"
+"baiti) blokki"
+
+#: src/dd.c:1730
+#, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "lühendan %<PRIuMAX> baiti väljundfailis %s"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "Failisüsteem Tüüp"
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "Failisüsteem "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " I-kirjeid IKasut IVaba IKas%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Maht Kasut Vaba Kas%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Maht Kasut Vaba Kas%%"
+
+#: src/df.c:165
+#, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %s-plokki Kasut Vaba Maht"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr "%4s-blokke Kasut Vaba Kas%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Haagitud\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "ei õnnestu leida jooksvat kataloogi"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "ei õnnestu minna kataloogi %s"
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "ei õnnestu lugeda jooksva kataloogi atribuute (nüüd %s)"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"Esita informatsioon failisüsteemidest, milles iga antud fail asub.\n"
+"Vaikimisi esita infot igast haagitud failisüsteemist.\n"
+"\n"
+
+#: src/df.c:749
+#, fuzzy
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all väljasta kõik failisüsteemid\n"
+" -B --block-size=MAHT kasuta määratud ploki suurust\n"
+" -h, --human-readable väljasta suurused inimesele loetavalt (n. 1K 234M "
+"2G)\n"
+" -H, --si sama, kui kasuta 1000 kordseid, mitte 1024\n"
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes väljasta plokkide asemel i-kirjete info\n"
+" -k sama kui --block-size=1K\n"
+" -l, --local näita ainult lokaalseid failisüsteeme\n"
+" --no-sync enne info lugemist ära kasuta synci (vikimisi)\n"
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability kasuta POSIX väljundi vormingut\n"
+" --sync enne info lugemist käivita sync\n"
+" -t, --type=TÜÜP väljasta info antud tüüpi failisüsteemidest\n"
+" -T, --print-type väljasta failisüsteemi tüüp\n"
+" -x, --exclude-type=TÜÜP ära väljasta infot antud tüüpi failisüsteemidest\n"
+" -v (ignoreeritakse)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"MAHT võib olla (või võib olla number, millele võib järgneda) üks "
+"järgnevaist:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024 ja nii edasi tähtedega\n"
+"G, T, P, E, Z, Y.\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr "võti --kilobytes on aegunud; kasutage selle asemel -k"
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "failisüsteemi tüüp %s on nii valitute kui ka väljaarvatute nimekirjas"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Hoiatus: "
+
+#: src/df.c:943
+#, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%s ei õnnestu lugeda haagitud failisüsteemide tabelit"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr "ühtegi failisüsteemi ei töödeldud"
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Kasutamine: %s [VÕTI]... [FAIL]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"LS_COLORS keskkonnamuutujat seadvad väljundkäsud.\n"
+"\n"
+"Määra väljundi vorming:\n"
+" -b, --sh, --bourne-shell väljasta LS_COLORS seadmiseks Bourne shell "
+"kood\n"
+" -c, --csh, --c-shell väljasta LS_COLORS seadmiseks C shell kood\n"
+" -p, --print-database väljasta vaikeväärtused\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"Kui on antud FAIL, loe sealt failitüüpide ja laienditega kasutatavad\n"
+"värvid. Muidu kasuta vaikimisi andmebaasi. Infot failide vormingu kohta\n"
+"saate käsuga `dircolors --print-database'.\n"
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s:%lu: vigane rida; teine märgis puudub"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu: tundmatu võtmesõna %s"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<sisemine>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"võtmed dircolor sisemise andmebaasi väljastamiseks ja shelli süntaksi\n"
+"valimiseks on üksteist välistavad"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr "Faili operande ei saa võtmega --print-database (-p) kasutada."
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "puudub keskkonnamuutuja SHELL, samuti ei ole määratud shelli tüüpi"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kasutamine: %s NIMI\n"
+" või: %s VÕTI\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"Trüki NIMI, millest on viimane komponent eemaldatud; kui nimes ei ole\n"
+"sümboleid `/', väljasta `.' (mis tähistab jooksvat kataloogi).\n"
+"\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+"\n"
+"Näited:\n"
+" %s /usr/bin/sort Väljasta \"/usr/bin\".\n"
+" %s stdio.h Väljasta \".\".\n"
+
+#: src/du.c:279 src/wc.c:108
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Kasutamine: %s [VÕTI]... [FAIL]...\n"
+" või: %s [VÕTI]... --files0-from=F\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"Summeeri iga faili kettakasutus, kataloogid rekursiivselt.\n"
+"\n"
+
+#: src/du.c:290
+#, fuzzy
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+" -a, --all väljasta loendurid kõikidele failidele\n"
+" --apparent-size väljasta ketta kasutamise asemel nähtav suurus; "
+"kuigi\n"
+" nähtav suurus on tavaliselt väiksem, võib see olla\n"
+" tegelikkuses ka suurem tänu aukudega failidele, "
+"sise-\n"
+" misele fragmenteerumisele, kaudsetele blokkidele "
+"jms\n"
+" -B, --block-size=MAHT kasuta määratud ploki suurust\n"
+" -b, --bytes väljasta maht baitides\n"
+" -c, --total väljasta kogumaht\n"
+" -D, --dereference-args kasuta nimeviidete korral viidatavaid\n"
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+#, fuzzy
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+" --files0-from=F summeeri failist F loetud failide kettakasutus\n"
+" failinimed failis F on eraldatud sümboliga NUL\n"
+" -H nagu --si, aga nÄitab ka hoiatust; varsti muutub "
+"samaks\n"
+" kui võti --dereference-args (-D)\n"
+" -h, --human-readable väljasta suurused inimesele loetavalt (n. 1K 234M "
+"2G)\n"
+" --si sama, kasuta 1000 kordseid, mitte 1024 "
+"(mittesoovitav)\n"
+" -k, --kilobytes sama, kui --block-size=1K\n"
+" -l, --count-links loenda viiteid eraldi failidena\n"
+" -m sama, kui --block-size=1M\n"
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference kasuta nimeviidete korral viidatavaid\n"
+" -P, --no-dereference ära järgne nimeviidetele (vaikimisi)\n"
+" -O, --null lõpeta iga rida reavahetuse asemel baidiga 0\n"
+" -S, --separate-dirs ära arvesta kataloogide suurusi\n"
+" -s, --summarize väljasta iga argumendi kohta summa\n"
+
+#: src/du.c:323
+#, fuzzy
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system jäta vahele kataloogid teistest failisüsteemidest\n"
+" -X FILE, --exclude-from=FAIL ära loenda failist loetud mustritega faile\n"
+" --exclude=MUSTER Ära loenda mustrile vastavaid faile\n"
+" --max-depth=N väljasta kataloogi summa (võtmega --all faili)\n"
+" ainult juhul, kui see on N või vähem taset "
+"sügavamal,\n"
+" kui käsurea argument; --max-depth=0 on sama, kui\n"
+" --summarize\n"
+
+#: src/du.c:332
+#, fuzzy
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+" --time näita kõikide failide muutmise aega\n"
+" --time=SÕNA muutmise aja asemel näita üht järgnevaist:\n"
+" atime, access, use, ctime või status\n"
+" --time-style=STIIL esita aeg kasutades järgnevat stiili\n"
+" full-iso, long-iso, iso, +VORMING\n"
+" VORMING o sama mis `date' käsu korral\n"
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "kokku"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+"HOIATUS: kasutage --si mitte -H; -H võtme tähendus muutub varsti samaks,\n"
+"kui --dereference-args (-D)"
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "vigane maksimaalne sügavus %s"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr "võti --megabytes on aegunud; kasutage selle asemel -m"
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "korraga ei saa summeerida ja näidata kõiki"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "hoiatus: summeerimine on sama, kui kasutada --max-depth=0"
+
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "hoiatus: summeerimine on konfliktne võtmega --max-depth=%lu"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr "Faili operande ei saa võtmega --files0-from koos kasutada."
+
+#: src/du.c:960 src/wc.c:662
+#, c-format
+msgid "cannot read file names from %s"
+msgstr "failist %s ei õnnestu failide nimesid lugeda"
+
+#: src/du.c:1000 src/du.c:1003
+msgid "invalid zero-length file name"
+msgstr "vigane null-pikkusega faili nimi"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Kasutamine: %s [VÕTI]... [SÕNE]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+"Väljasta SÕNE standardväljundisse.\n"
+"\n"
+" -n ei väljasta lõpetavat reavahetust\n"
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+" -e luba langkriipsude paojada interpreteerimine (vaikimisi)\n"
+" -E keela langkriipsude paojada interpreteerimine\n"
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"-e võtmega tuntakse ja interpreteeritakse järgnevaid järjendeid:\n"
+"\n"
+" \\NNN sümbol ASCII koodiga NNN (kaheksandsüsteemis)\n"
+" \\\\ langkriips\n"
+" \\a tähelepanu (BEL)\n"
+" \\b samm tagasi\n"
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c blokeeri lõpetav reavahetus\n"
+" \\f lehevahetus\n"
+" \\n uus rida\n"
+" \\r rea algusesse\n"
+" \\t horisontaalne tabulaator\n"
+" \\v vertikaalne tabulaator\n"
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Kasutamine: %s [VÕTI]... [-] [NIMI=VÄÄRTUS]... [KÄSK [ARGUMENT]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Sea iga keskkonnamuutuja NIMI väärtus ja käivita KÄSK.\n"
+"\n"
+" -i, --ignore-environment alusta tühja keskkonnaga\n"
+" -u, --unset=NIMI eemalda muutuja keskkonnast\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"Ainult - rakendab võtme -i. Kui käsku ei ole antud, väljasta keskkond.\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Teisenda igas FAILIS tabulaatorid tühikuteks, väljasta standardväljundisse.\n"
+"Kui FAIL puudub või on -, loeb standardsisendit.\n"
+"\n"
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial ära teisenda TABe peale mittetühje sümboleid\n"
+" -t, --tabs=NUMBER kasuta vaikimisi 8 asemel tabulaatoris NUMBER "
+"sümbolit\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+" -t, --tabs=LOEND kasuta komadega eraldatud loendit tab "
+"positsioonidest\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr "tabulaatori peatus on liiga suur %s"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "tabulaatori suurus sisaldab vigast sümbolit: %s"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "tabulaatori suurus ei saa olla 0"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "tabulaatori suurused peavad olema kasvavad"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, c-format
+msgid "input line is too long"
+msgstr "sisendi rida on liiga pikk"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kasutamine: %s AVALDIS\n"
+" või: %s VÕTI\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"\n"
+"Trüki AVALDISe väärtus standardväljundisse. Tühi rida loendis allpool\n"
+"eraldab kasvava prioriteediga gruppe. AVALDIS võib olla:\n"
+"\n"
+" ARG1 | ARG2 ARG1 kui see pole null ega 0, muidu ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 kui kumbki argument ei ole null või 0, muidu 0\n"
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"\n"
+" ARG1 < ARG2 ARG1 on väiksem, kui ARG2\n"
+" ARG1 <= ARG2 ARG1 on väiksem või võrdne, kui ARG2\n"
+" ARG1 = ARG2 ARG1 ja ARG2 on võrdsed\n"
+" ARG1 != ARG2 ARG1 ja ARG2 ei ole võrdsed\n"
+" ARG1 >= ARG2 ARG1 on suurem või võrdne, kui ARG2\n"
+" ARG1 > ARG2 ARG1 on suurem, kui ARG2\n"
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+"\n"
+" ARG1 + ARG2 ARG1 ja ARG2 aritmeetiline summa\n"
+" ARG1 - ARG2 ARG1 ja ARG2 aritmeetiline vahe\n"
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+"\n"
+" ARG1 * ARG2 ARG1 ja ARG2 aritmeetiline korrutis\n"
+" ARG1 / ARG2 ARG1 jagatud ARG2 täisosa\n"
+" ARG1 % ARG2 ARG1 jagatud ARG2 jääk\n"
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"\n"
+" SÕNE : REGEXP mustri REGEXP otsing SÕNEst\n"
+"\n"
+" match SÕNE REGEXP sama, kui SÕNE : REGEXP\n"
+" substr SÕNE POS LENGTH SÕNE alamsõne, POS algab väärtuselt 1\n"
+" index SÕNE SÜMBOLID SÕNE indeks, kust leiti SÜMBOLID, või 0\n"
+" length SÕNE SÕNE pikkus\n"
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+" + MÄRK interpreteeri MÄRKi sõnena, isegi kui see on\n"
+" võtmesõna, nagu `match' või operaator, nagu `/'\n"
+"\n"
+" ( AVALDIS ) AVALDISe väärtus\n"
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"Pange tähele, et paljud operaatorid vajavad käsuinterpretaatori eest\n"
+"kaitset kvootimise või langkriipsuga kaitsmise näol. Võrdlused on\n"
+"aritmeetilised, kui mõlemas argumendid on numbrid, muidu "
+"leksikograafilised.\n"
+"Mustri otsing tagastab teksti, mis leiti \\( ja \\) vahel või null; kui\n"
+"\\( ja \\) ei kasutata, tagastatakse leitud sümbolite arv või 0.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+"\n"
+"Lõpetamise kood on 0 kui AVALDIS pole ei null ega 0, 1 kui AVALDIS on null\n"
+"või 0, 2 kui AVALDIS on süntaktiliselt vigane ja 3 kui tekkis viga.\n"
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "süntaksi viga"
+
+#: src/expr.c:468 src/ptx.c:292
+#, c-format
+msgid "error in regular expression matcher"
+msgstr "viga regulaaravaldisega otsingul"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "mitte-numbriline argument"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "nulliga jagamine"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kasutamine: %s [NUMBER]...\n"
+" või: %s VÕTI\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"Väljasta kõikide antud täisarvude algarvulised tegurid.\n"
+"\n"
+
+#: src/factor.c:85
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+"Väljasta iga NUMBRI algarvulised tegurid. Kui käsureal argumente pole,\n"
+"loetakse need standardsisendist.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s on liiga suur"
+
+#: src/factor.c:158
+#, c-format
+msgid "%s is not a valid positive integer"
+msgstr "%s ei ole korrektne positiivne täisarv"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Kasutamine: %s [-NUMBRID] [VÕTI]... [FAIL]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"Vormista ümber iga lõik FAILides, kirjuta tulemus standardväljundisse.\n"
+"Kui FAIL puudub või on `-', loe standardsisendit.\n"
+"\n"
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin säilita esimese kahe rea taane\n"
+" -p, --prefix=SÕNE kombineeri ainult ühise prefiksiga read,\n"
+" prefiks säilitatakse\n"
+" -s, --split-only tükelda pikad read, aga ära täida\n"
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph esimese rea taane on teise rea omast erinev\n"
+" -u, --uniform-spacing üks tühik sõnade vahel, kaks lausete vahel\n"
+" -w, --width=NUMBER maksimaalne rea pikkus (vaikimisi 75 veergu)\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+"vigane võti -- %c; -NUMBRID tuntakse ainult juhul, kui see on esimene võti;\n"
+"kasutage parem -w N"
+
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr "vigane laius: %s"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"Murra iga FAILI (vaikimisi standardsisend) rida, väljasta "
+"standardväljundisse.\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes loe veergude asemel baite\n"
+" -s, --spaces poolita tühikute kohal\n"
+" -w, --width=LAIUS kasuta 80 asemel use LAIUS sümbolit\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, c-format
+msgid "invalid number of columns: %s"
+msgstr "vigane veergude arv: %s"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Väljasta igast FAIList esimesed 10 rida standardväljundisse.\n"
+"Enam, kui ühe faili korral lisa ka päis faili nimega.\n"
+"Kui FAIL puudub või on -, loe standardsisendit.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+" -c, --bytes=[-]N Väljasta igast failist esimesed N baiti;\n"
+" kui ees on `-', väljasta igast failist kõik,\n"
+" välja arvatud viimased N baiti\n"
+" -n, --lines=[-]N väljasta esimese 10 rea asemel esimesed N rida;\n"
+" kui ees on `-', väljasta igast ailist kõik,\n"
+" välja arvatud viimased N rida\n"
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent ära väljasta päiseid failide nimega\n"
+" -v, --verbose väljasta alati ka päis faili nimega\n"
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"N võib omada kordavat sufiksit: b on 512, k on 1024, m on 1024*1024.\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "viga %s lugemisel"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "viga %s kirjutamisel"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr "%s: fail on liiga palju lühenenud"
+
+#: src/head.c:230 src/head.c:1046
+#, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s: baitide arv on liiga suur"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: ei õnnestu liikuda (lseek) algsele positsioonile"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: ei õnnestu liikuda nihkele %s"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "ei õnnestu muuta %s failiviita"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s on nii suur, et seda ei saa esitada"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "ridu"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "baite"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "vigane ridade arv"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "vigane baitide arv"
+
+#: src/head.c:976 src/head.c:1034
+#, c-format
+msgid "invalid trailing option -- %c"
+msgstr "vigane võti lõpus -- %c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Kasutamine: %s\n"
+" või: %s VÕTI\n"
+"Väljasta antud arvuti (kuueteistkümnend) numbriline identifikaator.\n"
+"\n"
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Kasutamine: %s [NIMI]\n"
+" või: %s VÕTI\n"
+"Esita või sea antud süsteemi nimi.\n"
+"\n"
+
+#: src/hostname.c:103
+#, c-format
+msgid "cannot set name to %s"
+msgstr "ei õnnestu seada nimeks %s"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr "nime ei õnnestu seada; süsteemil pole sellist funktsionaalsust"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "ei õnnestu tuvastada süsteemi nime"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Kasutamine: %s [VÕTI]... [KASUTAJANIMI]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Väljasta informatsiooni KASUTAJA või käsu kasutaja kohta.\n"
+"\n"
+" -a ignoreeri, võti on ühilduvuseks vanemate versioonidega\n"
+" -g, --group väljasta ainult grupi ID\n"
+" -G, --groups väljasta ainult lisagupid\n"
+" -n, --name väljasta numbri asemel nimi, võtmetele -ugG\n"
+" -r, --real väljasta efektiivse ID asemel reaalne ID, võtmetega -ugG\n"
+" -u, --user väljasta ainult kasutaja ID\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"Kui võtmeid pole antud, väljasta komplekt kasutatavat informatsiooni.\n"
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "ainult kasutajat ja ainult gruppi ei saa trükkida"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr ""
+"vaikimisi formaati kasutades ei saa väljastada ainult nimesid või reaalset ID"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Sellista kasutajat pole"
+
+#: src/id.c:205
+#, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "ei leia UID %lu vastavat kasutajanime"
+
+#: src/id.c:229
+#, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "ei leia GID %lu vastavat gruppi"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "ei õnnestu lugeda lisagruppide nimekirja"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " grupid="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr "kataloogi installeerimisel ei saa kasutada võtit strip"
+
+#: src/install.c:321
+#, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "kataloogi installeerimisel ei saa sihtkataloogi määrata"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "vigane mood %s"
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "ei õnnestu muuta %s omanikku"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "ei õnnestu seada %s ajatempleid"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "süsteemifunktsioon fork ebaõnnestus"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "strip käsku ei saa käivitada"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "kirjutan faili %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "vigane kasutaja %s"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "loon kataloogi %s"
+
+#: src/install.c:651
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Kasutamine: %s [VÕTI]... [-T] ALG SIHT\n"
+" või: %s [VÕTI]... ALG... KATALOOG\n"
+" või: %s [VÕTI]... -t KATALOOG ALG...\n"
+" või: %s [VÕTI]... -d KATALOOG...\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"Esimesed kolm varianti kopeerivad allika sihtkohta või allikad\n"
+"olemasolevasse kataloogi seades õigused ja omaniku/grupi.\n"
+"Neljas variant loob antud kataloogi(d).\n"
+"\n"
+
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup[=KONTROLL] loo igast olemasolevast sihtfailist varukoopia\n"
+" -b nagu --backup, aga ei võta argumenti\n"
+" -c (ignoreeritakse)\n"
+" -d, --directory käsitle kõiki argumente kataloogidena; loo kõik\n"
+" antud kataloogide komponendid\n"
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D loo kõik SIHTKOHAD välja arvatud viimane, seejärel\n"
+" kopeeri allikas sihiks\n"
+" -g, --group=GRUPP sea protsessi grupi asemel määratud grupp\n"
+" -m, --mode=MOOD sea rwxr-xr-x õiguste asemel antud õigused\n"
+" -o, --owner=OMANIK sea omanik (ainult super-kasutaja)\n"
+
+#: src/install.c:681
+#, fuzzy
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps sea algfailide kasutamise/muutmise ajad \n"
+" vastavatele sihtfailidele\n"
+" -s, --strip puhasta sümboltabelid, ainult esimesel kahel kujul\n"
+" -S, --suffix=SUFIKS määra uus varukoopia järelliide\n"
+" -T, --no-target-directory käsitle SIHT tavalise failina\n"
+" -v, --verbose väljasta iga loodava kataloogi nimi\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"Varukoopia sufiks on `~', kui seda ei ole muudetud võtmega --suffix või\n"
+"keskkonnamuutujaga SIMPLE_BACKUP_SUFFIX. Versioonikontrolli meetodit saab\n"
+"valida võtmega --backup või keskonnamuutujaga VERSION_CONTROL. Võimalikud\n"
+"väärtused on järgnevad:\n"
+"\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"Iga identsete ühendatavate väljadega sisendrea paari korral väljastab rea \n"
+"standardväljundisse. Vaikimisi ühendatav väli on esimene, väljad "
+"eraldatakse\n"
+"tühemikuga. Kui FAIL1 või FAIL2 (aga mitte mõlemad) on -, loe standard-\n"
+"sisendit.\n"
+"\n"
+" -a FAILINUM väljasta paariliseta read failist FAILINUM\n"
+" -e TÜHI asenda puuduvad sisendväljad sõnaga TÜHI\n"
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case kasuta tõstutundetut väljade võrdlemist\n"
+" -j VÄLI sama, kui `-1 VÄLI -2 VÄLI'\n"
+" -o VORMING väljundrea koostamise VORMING\n"
+" -t SÜMBOL kasuta SÜMBOLit sisend- ja väljundväljade eraldajana\n"
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v FAILINUM sama, kui -a FAILINUM, aga ei väljasta vastavaid ridu\n"
+" -1 VÄLI ühenda see VÄLI failist 1\n"
+" -2 VÄLI ühenda see VÄLI failist 2\n"
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"Kui võtit -t SÜMBOL ei kasutata, ignoreeritakse väljade ees olevaid "
+"tühikuid,\n"
+"muidu kasutatakse väljade eraldajana võtmega -t määratud sümbolit. Välja\n"
+"tähistatakse välja numbriga, loendamist alustatakse ühest. Vorming on üks\n"
+"või enam komade või tühikutega eraldatud määranguid kujul `FAILINUM.VÄLI' "
+"või\n"
+"`0'. Vaikimisi vorming väljastab ühendatud väljad, siis ülejäänud väljad\n"
+"failist FAIL1, siis ülejäänud väljad failist FAIL2. Väljad eraldatakse\n"
+"SÜMBOLiga.\n"
+
+#: src/join.c:617 src/join.c:812
+#, c-format
+msgid "invalid field number: %s"
+msgstr "vigane välja number: %s"
+
+#: src/join.c:638 src/join.c:647
+#, c-format
+msgid "invalid field specifier: %s"
+msgstr "vigane välja määrang: %s"
+
+#: src/join.c:654
+#, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "vigane faili number välja määrangus: %s"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr "ühildamatud väljad %lu, %lu"
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr "konfliktsed tühja-välja asendamise sõned"
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr "tühi tabulaator"
+
+#: src/join.c:870 src/sort.c:3031
+#, c-format
+msgid "multi-character tab %s"
+msgstr "mitme-sümboliline tabulaator %s"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr "mitteühilduvad tabulaatorid"
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "mõlemad failid ei saa olla standardsisendid"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"Kasutamine: %s [-s SIGNAAL | -SIGNAAL] PID...\n"
+" või: %s -l [SIGNAAL]...\n"
+" või: %s -t [SIGNAAL]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+"Saada protsessidele signaale või esita signaalide nimekiri.\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+" -s, --signal SIGNAAL, -SIGNAAL\n"
+" Saadetava signaali nimi või number.\n"
+" -l, --list Esita signaalide nimed või tõlgi nimeks/numbriks.\n"
+" -t, --table Väljasta tabel infoga signaalidest.\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+"\n"
+"SIGNAAL võib olla signaali nimi, nagu `HUP', või signaali number, nagu `1',\n"
+"või signaaliga katkestatud programmi lõpetamise kood.\n"
+"PID on täisarv, negatiivne tähendab protsessi gruppi.\n"
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: vigane signaal"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: vigane protsessi id"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "vigane võti -- %c"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: anti mitu signaali"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "kasutati mitud -l või -t võtit"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "signaali ei saa kombineerida võtmetega -l või -t"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr "puudub protsessi ID"
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kasutamine: %s FAIL1 FAIL2\n"
+" või: %s VÕTI\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+"Kasutan viite FAIL2 loomiseks failile FAIL1 funktsiooni link.\n"
+"\n"
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "ei õnnestu luua viidet %s -> %s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr "%s: hoiatus: nimeviitele viite tegemine ei ole portaabel"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: kataloogidele ei saa luua viiteid"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: kataloogi ei saa üle kirjutada"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: asendan %s? "
+
+#: src/ln.c:295
+#, c-format
+msgid "creating symbolic link %s"
+msgstr "loon nimeviidet %s"
+
+#: src/ln.c:296
+#, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "loon nimeviidet %s -> %s"
+
+#: src/ln.c:298
+#, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "loon viidet %.0s%s"
+
+#: src/ln.c:301
+#, c-format
+msgid "creating hard link %s"
+msgstr "loon viidet %s"
+
+#: src/ln.c:302
+#, c-format
+msgid "creating hard link %s => %s"
+msgstr "loon viidet %s => %s"
+
+#: src/ln.c:324
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Kasuta: %s [VÕTI]... [-T] ALLIKAS VIITE_NIMI (1. vorm)\n"
+" või: %s [VÕTI]... SIHT (2. vorm)\n"
+" või: %s [VÕTI]... SIHT... KATALOOG (3. vorm)\n"
+" või: %s [VÕTI]... -t KATALOOG SIHT... (4. vorm)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"Esimesel kujul loo viide antud nimele.\n"
+"Teisel kujul loo viide jooksvasse kataloogi.\n"
+"Kolmandal ja neljandal kujul luuakse viited kõikidele kataloogi "
+"elementidele.\n"
+"Vaikimisi luuakse viited, nimeviidete loomiseks on võti --symbolic.\n"
+"Viidete loomisel peavad viidatavad failid olemas olema.\n"
+"\n"
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup[=KONTROLL] loo igast olemasolevast sihtfailist "
+"varukoopia\n"
+" -b nagu --backup, aga ei võta argumenti\n"
+" -d, -F, --directory lubab superkasutajal luua viidet kataloogile\n"
+" (märkus: tõenäoliselt ebaõnnestub, kuna "
+"reeglina\n"
+" süsteemid ei luba kataloogidele viiteid "
+"luua)\n"
+" -f, --force eemalda olemasolevad sihtfailid\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference kui sihtfail on nimeviide kataloogile,\n"
+" käsitle seda kui tavalist faili\n"
+" -i, --interactive küsi enne sihtfaili eemaldamist\n"
+" -s, --symbolic loo viidete asemel nimeviited\n"
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" -S, --suffix=SUFIKS määra varukoopia järelliide\n"
+" -t, --target-directory=KATALOOG määra kataloog, milles luuakse viited\n"
+" -T, --no-target-directory käsitle viite nime tavalise failina\n"
+" -v, --verbose väljasta faili nimi enne viite loomist\n"
+
+#: src/ln.c:484
+#, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "-target-directory ja --no-target-directory ei saa koos kasutada"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Kasutamine: %s [VÕTI]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"Väljasta jooksva kasutaja nimi.\n"
+"\n"
+
+#: src/logname.c:89
+#, c-format
+msgid "no login name"
+msgstr "kasutajanime pole"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%e. %b %Y"
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%e. %b %H:%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "eiran vigast keskkonnamuutuja QUOTING_STYLE väärtust: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "eiran vigast laiuse kirjeldust keskkonnamuutujas COLUMNS: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr "eiran vigast tabulaatori kirjeldust keskkonnamuutujas TABSIZE: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "vigane rea laius: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "vigane tabulaatori suurus: %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "vigane ajamäärang %s"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "tundmatu prefiks: %s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "arusaamatu väärtus keskkonnamuutuja LS_COLORS jaoks"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "kataloogi %s ei saa avada"
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "ei õnnestu tuvastada %s seadet ja i-kirje numbrit"
+
+#: src/ls.c:2353
+#, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "%s: ei näita juba näidatud kataloogi"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "loen kataloogi %s"
+
+#: src/ls.c:2410
+#, c-format
+msgid "closing directory %s"
+msgstr "sulen kataloogi %s"
+
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "failide %s ja %s nimesid ei õnnestu võrrelda"
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"Esita infot failidest (vaikimisi jooksvas kataloogis).\n"
+"Kui ei ole kasutatud võtmeid -cftuvSUX või --sort, järjesta väljund\n"
+"tähestikuliselt\n"
+"\n"
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all ära peida kirjed, mis algavad sümboliga .\n"
+" -A, --almost-all ära näita nimesid . ja ..\n"
+" --author võtmega -l, väljasta iga faili autor\n"
+" -b, --escape väljasta mitte-esitatavad sümbolid\n"
+" kaheksandkoodidega\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=SUURUS määra plokkide suurus baitides\n"
+" -B, --ignore-backups ära näita nimesid, mille lõpus on ~\n"
+" -c võtmega -lt: järjesta ja näita ctime (faili\n"
+" oleku viimase muutmise aeg)\n"
+" võtmega -l: näita ctime ja järjesta nime "
+"järgi\n"
+" muidu: järjesta ctime järgi\n"
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C esita väljund veergudena\n"
+" --color[=MILLAL] määra, millal kasutada failitüüpide "
+"eristamiseks\n"
+" värve.\n"
+" MILLAL võib olla `never', `always' või `auto'\n"
+" -d, --directory näita kataloogide sisu asemel neid endid\n"
+" -D, --dired vorminda väljund Emacs dired moodile\n"
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f ära järjesta, kasuta -aU, blokeeri -ls --color\n"
+" -F, --classify lisa tähis (üks järgnevaist */=>@|) nimedele\n"
+" --file-type sama, aga ei lisa `*'\n"
+" --format=SÕNA across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time nagu -l --time-style=full-iso\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr " -g nagu -l, aga ei näita omanikku\n"
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+" --group-directories-first\n"
+" grupeeri kataloogid enne faile\n"
+
+#: src/ls.c:4322
+#, fuzzy
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all väljasta kõik failisüsteemid\n"
+" -B --block-size=MAHT kasuta määratud ploki suurust\n"
+" -h, --human-readable väljasta suurused inimesele loetavalt (n. 1K 234M "
+"2G)\n"
+" -H, --si sama, kui kasuta 1000 kordseid, mitte 1024\n"
+
+#: src/ls.c:4328
+#, fuzzy
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+" -G, --no-group nagu -l, aga ei väljasta gruppi\n"
+" -h, --human-readable väljasta mahud inimesele loetavalt (n. 1K 234M "
+"2G)\n"
+" --si sarnane, aga kasuta 1000 kordseid, mitte 1024\n"
+" -H, --dereference-command-line kui käsureal on nimeviited näita "
+"viidatavaid\n"
+" --dereference-command-line-symlink-to-dir\n"
+" järgne igale käsureal olevale nimeviitele, kui "
+"see\n"
+" viitab kataloogile\n"
+" --hide=MUSTER ära näita mustrile vastavaid elemente (-a või -"
+"A\n"
+" tühistab)\n"
+
+#: src/ls.c:4337
+#, fuzzy
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=SÕNA lisa nimedele indikaator, vastavalt antud\n"
+" stiilile: none (vaikimisi), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode väljasta iga faili i-kirje number\n"
+" -I, --ignore=MUSTER ära näita shelli mustrile vastavaid nimesid\n"
+" -k nagu --block-size=1K\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l väljasta info pikas vormingus\n"
+" -L, --dereference väljastades infot nimeviite kohta, näita viite\n"
+" asemel infot viidatavast failist\n"
+" -m väljasta nimed komadega eraldatult\n"
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid nagu -l, aga väljasta numbrilised UID ja GID\n"
+" -N, --literal väljasta nimed nagu on (ära käsitle n. "
+"kontroll\n"
+" sümboleid eriliselt)\n"
+" -o nagu -l, aga ära väljasta grupi infot\n"
+" -p, --indicator-style=slash lisa kataloogide nimedele lõppu /\n"
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars väljasta ? mitte-esitatava sümboli asemel\n"
+" --show-control-chars näita mitte-esitatavat sümbolit, nagu on\n"
+" (vaikimisi, kui programm on `ls' ja väljund\n"
+" ei ole terminal)\n"
+" -Q, --quote-name väljasta nimed jutumärkide vahel\n"
+" --quoting-style=SÕNA kasuta nimede kvootimisel stiili:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse kasuta pööratud järjestamist\n"
+" -R, --recursive esita alamkataloogid rekursiivselt\n"
+" -s, --size väljasta iga faili suurus plokkides\n"
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S järjesta faili suuruse järgi\n"
+" --sort=SÕNA kasuta järjestamisel nime asemel sõna: none -"
+"U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=SÕNA võtmega -l, näita muutmise aja asemel:\n"
+" atime -u, access -u, use -u, ctime -c\n"
+" või status -c; kasuta antud aega järjestamise "
+"võtmena,\n"
+" kui kasutati --sort=time\n"
+
+#: src/ls.c:4382
+#, fuzzy
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=SÕNA võtmega -l, näita aegu kasutades stiili SÕNA:\n"
+" full-iso, long-iso, iso, locale, +VORMING\n"
+" VORMINGut käsitletakse kui `date'; kui VORMING\n"
+" on VORMING1<reavahetus>VORMING2, rakendub\n"
+" VORMING1 vanematele failidele ja VORMING2\n"
+" uuematele. Kui SÕNE omab eesliidet `posix-',\n"
+" kasutatakse SONA ainult mitte-POSIX lokaadi\n"
+" muutmise aegade järjestamisel\n"
+" -t kasuta järjestamisel muutmise aega\n"
+" -T, --tabsize=VEERGE sea tabulaatori pikkus (vaikimisi 8 veergu)\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u võtmega -lt: järjesta ja näita kasutamise aega\n"
+" võtmega -l: näita kasutamise aega ja "
+"järjesta\n"
+" nime järgi\n"
+" muidu: järjesta kasutamise aja järgi\n"
+" -U ära järjesta; väljasta kirjed nagu on "
+"kataloogis\n"
+" -v järjesta versiooni järgi\n"
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -w, --width=VEERGE määra ekraani laius\n"
+" -x väljasta nimed ridadesse, mitte veergusesse\n"
+" -X järjesta tähestikuliselt laiendite järgi\n"
+" -1 väljasta üks nimi rea kohta\n"
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"Vaikimisi ei kasutata failitüüpide eristamiseks värve. See on sama, kui\n"
+"kasutada võtit --color=none. Kasutades võtit --color ilma täiendava \n"
+"argumendita on sama, kui kasutada --color=always. Võtmega --color=auto\n"
+"väljastatakse värvikoodid ainult juhul, kui standardväljund läheb\n"
+"terminalile (tty). Keskkonnamuutuja LS_COLORS mõjutab värvivalikut ja seda\n"
+"saab lihtsasti seada kasutades dircolors käsku.\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+"\n"
+"Lõpetamise koodid on 0 vigadeta, 1 vähetähtsad probleemid, 2 tõsine tõrge.\n"
+
+#: src/md5sum.c:150
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Kasutamine: %s [VÕTI] [FAIL]...\n"
+"Väljasta või kontrolli %s (%d-bitti) kontrollsummasid.\n"
+"Kui FAIL puudub või on -, loe standardsisendit.\n"
+"\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+" -b, --binary loe binaarmoodis (vaikimisi, kui ei loeta tty "
+"stdin)\n"
+
+#: src/md5sum.c:164
+msgid " -b, --binary read in binary mode\n"
+msgstr " -b, --binary loe binaarmoodis\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr " -c, --check loe %s summad failidest ja kontrolli\n"
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+" -t, --text loe tekstimoodis (vaikimisi, kui kasutatakse "
+"terminali)\n"
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr " -t, --text loe tekstimoodis (vaikimisi)\n"
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"\n"
+"Järgmised võtmed on kasulikud ainult kontrollsummade kontrollimisel:\n"
+" --status ära väljasta midagi, tulemust näitab lõpetamise "
+"kood\n"
+" -w, --warn hoiata vigaselt vormindatud kontrollsummadest\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"Summad arvutatakse vastavalt %s kirjeldusele. Summade kontrollimisel\n"
+"tuleb kasutada selle programmi väljundit. Vaikimisi mood on väljastada\n"
+"rida kontrollsummaga, seejärel sümbol, mis märgib faili tüüpi (`*' kahend-\n"
+"ja ` ' tekstifaili korral) ja seejärel faili nimi.\n"
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: liiga palju kontrollsumma ridu"
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %<PRIuMAX>: vigaselt vormindatud %s kontrollsumma rida"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: avamine või lugemine ebaõnnestus\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "EBAÕNNESTUS"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "OK"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: viga lugemisel"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: korrektselt vormindatud %s kontrollsumma ridu pole"
+
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "HOIATUS: %<PRIuMAX> (%<PRIuMAX>) näidatud faili ei saanud lugeda"
+msgstr[1] "HOIATUS: %<PRIuMAX> (%<PRIuMAX>) näidatud faili ei saanud lugeda"
+
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] ""
+"HOIATUS: %<PRIuMAX> (%<PRIuMAX>) arvutatud kontrollsumma EI klappinud"
+msgstr[1] ""
+"HOIATUS: %<PRIuMAX> (%<PRIuMAX>) arvutatud kontrollsumma EI klappinud"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr "võtmed --binary ja --text ei oma kontrollsummade kontrollimisel mõtet"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "võtit --status on mõtet kasutada ainult kontrollsummade kontrollimisel"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "võtit --warn on mõtet kasutada ainult kontrollsummade kontrollimisel"
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Kasutamine: %s [VÕTI] KATALOOG...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"Loo KATALOOGid, kui neid juba pole.\n"
+"\n"
+
+#: src/mkdir.c:67
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+" -m, --mode=MOOD seab õigused (nagu chmod), mitte a=rwx - umask\n"
+" -p, --parents loob vajadusel ülemised kataloogid, kui need on olemas,\n"
+" siis veateadet ei väljasta\n"
+" -v, --verbose teavitab igast loodud kataloogist\n"
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "kataloog %s on loodud"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Kasutamine: %s [VÕTI]... NIMI...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"Loo antud NIMega torud (FIFOd).\n"
+"\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr " -m, --mode=MOOD sea õigused, mitte a=rw - umask\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "vigane mood"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr "mood peab määrama ainult failiõigused"
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Kasutamine: %s [VÕTI]... NIMI TÜÜP [PÕHI ALAM]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"Loo antud NIMEga ja TÜÜPi seadmefail.\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+"\n"
+"Kui TÜÜP on b, c või u, peavad olema antud nii KLASS kui ESINDAJA ja neid "
+"ei\n"
+"tohi kasutada, kui TÜÜP on p. Kui KLASS või ESINDAJA algab 0x või 0X,\n"
+"käsitletakse seda kuueteistkümnendarvuna. Kui See algab numbriga 0,\n"
+"käsitletakse seda kaheksandarvuna, muidu kümnendarvuna. TÜÜP võib olla:\n"
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+" b loo plokkseade (puhverdatud)\n"
+" c, u loo sümbolseade (puhverdamata)\n"
+" p loo FIFO\n"
+
+#: src/mknod.c:146
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"Seadmefailide loomisel peab olema määratud nii klassi, kui esindaja number."
+
+#: src/mknod.c:156
+msgid "Fifos do not have major and minor device numbers."
+msgstr "Fifodel puuduvad seadme klassi ja esindaja numbrid."
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "blokkseadme faile ei toetata"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "sümbolseadme faile ei toetata"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "vigane seadme põhinumber %s"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "vigane seadme alamnumber %s"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "vigane seade %s %s"
+
+#: src/mknod.c:216
+#, c-format
+msgid "invalid device type %s"
+msgstr "vigane seadme tüüp %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Nimeta fail ümber või tõsta argumendid antud kataloogi.\n"
+"\n"
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup[=KONTROLL] loo igast olemasolevast sihtfailist "
+"varukoopia\n"
+" -b nagu --backup aga ei kasuta argumenti\n"
+" -f, --force ära küsi enne ülekirjutamist\n"
+" -i, --interactive küsi enne ülekirjutamist\n"
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --strip-trailing-slashes eemalda igalt käsureal antud nimelt\n"
+" lõpus olevad kaldkriipsud\n"
+" -S, --suffix=SUFIKS määra varukoopia järelliide\n"
+
+#: src/mv.c:308
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" -t, --target-directory=KATALOOG tõsta kõik antud allikad kataloogi\n"
+" -T, --no-target-directory käsitle sihtkohta tavalise failina\n"
+" -u, --update tõsta ainult kui allikas on uuem, kui "
+"sihtfail\n"
+" või kui sihtfail puudub\n"
+" -v, --verbose selgita mida tehakse\n"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Kasutamine: %s [VÕTI] [KÄSK [ARGUMENT]...]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+"Käivita KÄSK muudetud prioriteediga.\n"
+"Kui käsku ei antud, väljasta kehtiv prioriteet.\n"
+"Sammude vahemik on %d (kõrgeim prioriteet) kuni %d (madalaim prioriteet).\n"
+"\n"
+" -n, --adjustment=N suurenda prioriteeti (vaikimisi 10 võrra)\n"
+
+#: src/nice.c:155
+#, c-format
+msgid "invalid adjustment %s"
+msgstr "vigane muudatus %s"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "koos parandusega peab olema antud käsk"
+
+#: src/nice.c:171 src/nice.c:182
+#, c-format
+msgid "cannot get niceness"
+msgstr "prioriteeti ei õnnestu lugeda"
+
+#: src/nice.c:186
+#, c-format
+msgid "cannot set niceness"
+msgstr "prioriteeti ei õnnestu seada"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Väljasta iga FAIL standardväljundisse lisades reanumbrid.\n"
+"Kui FAIL puudub või on -, loe standardsisendit.\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=STIIL kasuta ridade nummerdamisel STIILI\n"
+" -d, --section-delimiter=SE kasuta loogiliste lehtede eraldamiseks SE\n"
+" -f, --footer-numbering=STIIL kasuta jaluste nummerdamisel STIILI\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=STIIL kasuta päiste nummerdamisel STIILI\n"
+" -i, --page-increment=NUMBER rea numbri suurendamise samm\n"
+" -l, --join-blank-lines=NUMBER grupeeri NUMBER tühja rida üheks reaks\n"
+" -n, --number-format=VORMING lisa rea numbrid vastavalt VORMINGule\n"
+" -p, --no-renumber jätka reanumbreid järgmisel lehel\n"
+" -s, --number-separator=SÕNE lisa SÕNE peale (võimalikku) reanumbrit\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=NUMBER esimene rea number igal loogilisel lehel\n"
+" -w, --number-width=NUMBER kasuta reanumbritele NUMBER veergu\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"Vaikimisi kasutatakse -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. SE on\n"
+"kaks eraldussümbolit loogiliste lehekülgede eraldamiseks, puuduva teise\n"
+"sümboli asemel kasutatakse :. \\ esitamiseks kirjutage \\\\.\n"
+"STIIL on üks järgnevaist:\n"
+
+#: src/nl.c:214
+#, fuzzy
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a nummerda kõik read\n"
+" t nummerda ainult mittetühjad read\n"
+" n ära nummerda ridu\n"
+" pREGAV nummerda ainult read, mis sobivad antud regulaaravaldisega\n"
+"\n"
+"VORMING on üks järgnevaist:\n"
+"\n"
+" ln vasakule joondatud, nulle ees pole\n"
+" rn paremale joondatud, nulle ees pole\n"
+" rz paremale joondatud, eest täidetud nulludega\n"
+"\n"
+
+#: src/nl.c:281
+#, c-format
+msgid "line number overflow"
+msgstr "rea numbri ületäitumine"
+
+#: src/nl.c:479
+#, c-format
+msgid "invalid header numbering style: %s"
+msgstr "vigane päise nummerdamise stiil: %s"
+
+#: src/nl.c:487
+#, c-format
+msgid "invalid body numbering style: %s"
+msgstr "vigane keha nummerdamise stiil: %s"
+
+#: src/nl.c:495
+#, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "vigane jaluse nummerdamise stiil: %s"
+
+#: src/nl.c:504
+#, c-format
+msgid "invalid starting line number: %s"
+msgstr "vigane alustamise rea number: %s"
+
+#: src/nl.c:513
+#, c-format
+msgid "invalid line number increment: %s"
+msgstr "vigane rea numbri samm: %s"
+
+#: src/nl.c:525
+#, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "vigane tühjade ridade arv: %s"
+
+#: src/nl.c:539
+#, c-format
+msgid "invalid line number field width: %s"
+msgstr "vigane rea numbri välja laius: %s"
+
+#: src/nl.c:558
+#, c-format
+msgid "invalid line numbering format: %s"
+msgstr "vigane rea numbri vorming: %s"
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kasutamine: %s KÄSKLUS [ARGUMENT]...\n"
+" või: %s VÕTI\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+"Käivita KÄSKLUS, ignoreeri hangup signaale.\n"
+"\n"
+
+#: src/nohup.c:117
+#, c-format
+msgid "ignoring input"
+msgstr "ignoreerin sisendit"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr "%s avamine ebaõnnestus"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "ignoreerin sisendit ja lisan väljundi faili %s"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr "stderr koopiale ei õnnestu seada omadust 'close on exec'"
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr "ignoreerin sisendit ja suunan stderr standardväljundisse"
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr "standard veavoo ümbersuunamine ebaõnnestus"
+
+#: src/od.c:307
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Kasutamine: %s [VÕTI]... [FAIL]...\n"
+" või: %s [-abcdfilosx]... [FAIL] [[+]INDEKS[.][b]]\\n\"\n"
+" või: %s --traditional [VÕTI]... [FAIL] [[+]INDEKS[.][b] [+]MÄRGEND[.]"
+"[b]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"Väljasta faili üheselt mõistetav esitus (vaikimisi kaheksandbaidid)\n"
+"standardväljundisse. Enam, kui ühe faili korral väljastatakse nende\n"
+"sisud järjest vastavalt esitatud järjekorrale.\n"
+"Kui FAIL puudub või on -, loe standardsisendit.\n"
+"\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+"Kohustuslikud argumendid pikkadele võtmetele on kohustuslikud ka "
+"lühikestele.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=RAADIKS kuidas väljastada faili positsioonid\n"
+" -j, --skip-bytes=BAIDID jäta esimesed BAIDID baiti vahele\n"
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=BAITE väljasta ainult antud arv baite\n"
+" -S, --strings[=BAITE] väljasta vähemalt BAITE pikkusega sõned\n"
+" -t, --format=TÜÜP määra väljundvorming või vormingud\n"
+" -v, --output-duplicates ära kasuta korduvate ridade märkimiseks *\n"
+" -w, --width[=BAITE] väljasta BAITE baiti rea kohta\n"
+" --traditional kasuta traditsioonilisel kujul argumente\n"
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"Traditsioonilisi vormingu määranguid võib koos kasutada; need on:\n"
+" -a sama, kui -t a, vali nimedega sümbolid, ülemist bitti "
+"ignoreeritakse\n"
+" -b sama, kui -t o1, vali kaheksandbaidid\n"
+" -c sama, kui -t c, vali ASCII sümbolid või langkriipsuga paojada\n"
+" -d sama, kui -t u2, vali märgita 2-baidised kümnendarvud\n"
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f sama, kui -t fF, vali ujukomaarvud\n"
+" -i sama, kui -t dI, vali kümnendarvud\n"
+" -l sama, kui -t dL, vali pikad kümnendarvud\n"
+" -o sama, kui -t o2, vali 2-baidised kaheksandarvud\n"
+" -s sama, kui -t d2, vali 2-baidised kümnendarvud\n"
+" -x sama, kui -t x2, vali 2-baidised kuueteistkümnendarvud\n"
+
+#: src/od.c:353
+#, fuzzy
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"Kui on määratud nii esimene kui teine vorming, eeldatakse teist kui viimane\n"
+"operand algab sümboliga + või (kui on 2 operandi) numbriga.\n"
+"Operand INDEKS tähendab -j INDEKS. MÄRGEND on esimese väljastatava baidi\n"
+"pseudoaadress, mida suurendatakse töö käigus.\n"
+"Indeksi ja märgendi puhul tähistab 0x või 0X kuueteistkümnendesitust,\n"
+"sufiks võib olla . kaheksandesituse korral ja b tähistab 512 kordseid.\n"
+"\n"
+"TÜÜP on üks või enam järgnevaid:\n"
+"\n"
+" a sümbolid nimedega, ülemist bitti ignoreeritakse\n"
+" c ASCII sümbol või langkriipsuga paojada\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[SUURUS] märgiga kümnendarv, SUURUS baiti\n"
+" f[SUURUS] ujukoma arv, SUURUS baiti\n"
+" o[SUURUS] kaheksandarv, SUURUS baiti\n"
+" u[SUURUS] märgita kümnendarv, SUURUS baiti\n"
+" x[SUURUS] kuueteiskümnendarv, SUURUS baiti\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"SUURUS on number. TÜÜPIDE doux korral võib SUURUS olla ka C, tähistamaks\n"
+"sizeof(char), S tähistamaks sizeof(short), I tähistamaks sizeof(int) või\n"
+"L tähistamaks sizeof(long). Kui TÜÜP on f võib SUURUS olla ka F tähistamaks\n"
+"sizeof(float), D tähistamaks sizeof(double) või L tähistamaks\n"
+"sizeof(long double).\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"RAADIKS on d kümnendarvu puhul, o kaheksandarvu puhul, x "
+"kuueteistkümnendarvu\n"
+"puhul või n et mitte väljastada.\n"
+"BAITE on kuueteistkümnendnumber 0x või 0X prefiksiga, võib olla 512 kordne\n"
+"sufiksi b korral, 1024 kordne k korral ja 1048576 kordne m korral. Sufiksi\n"
+"z lisamine suvalisele tüübile lisab iga väljundrea lõppu vaate prinditavate\n"
+"sümbolitega. "
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"Numbrita --string korral kasutatakse väärtust 3. Numbrita --width korral\n"
+"kasutatakse väärtust 32. Vaikimisi kasutab od -A o -t d2 -w16.\n"
+
+#: src/od.c:683 src/od.c:802
+#, c-format
+msgid "invalid type string %s"
+msgstr "vigane tüübisõne %s"
+
+#: src/od.c:693
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"vigane tüübisõne %s;\n"
+"see süsteem ei realiseeri %lu-baidist sisetüüpi"
+
+#: src/od.c:812
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"vigane tüübisõne %s;\n"
+"see süsteem ei realiseeri %lu-baidist ujukoma tüüpi"
+
+#: src/od.c:871
+#, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "vigane sümbol %c tüübisõnes %s"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "kombineeritud sisendi lõpust kaugemale liikuda ei saa"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+"vigane väljundi aadressi raadiks `%c'; see peab olema üks sümbolitest [doxn]"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "vahelejätmise argument"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "piirangu argument"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "minimaalne sõne pikkus"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "laiuse määrang"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "tüüpi ei saa määrata, kui trükitakse sõnesid"
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr "Ühilduvuse mood toetab ülimalt ühte faili."
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr "skip-bytes + read-bytes on liiga suur"
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "hoiatus: vigane laius %lu; kasutan selle asemel %d"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: formaat=\"%s\" laius=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "standardsisend suleti"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Kirjuta read, mis koosnevad tabulaatoriga eraldatud igast failist kokku\n"
+"liidetud vastavatest ridadest, standardväljundisse.\n"
+"Kui FAIL puudub või on -, loe standardsisendit.\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=LOEND kasuta TAB asemel sümboleid LOENDist\n"
+" -s, --serial väljasta üks fail korraga, mitte paralleelselt\n"
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Kasutamine: %s [VÕTI]... NIMI...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+"Diagnoosi NIME mitteporditavaid konstruktsioone.\n"
+"\n"
+" -p testi enamus POSIX süsteeme\n"
+" -P testi tühje nimesid ja alustavat \"-\"\n"
+" --portability testi kõiki POSIX süsteeme (sama, kuid -p -P)\n"
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr "alustav `-' faili nime %s komponendis"
+
+#: src/pathchk.c:206
+#, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "mitteporditav sümbol %s faili nimes %s"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr "tühi failinimi"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr "%s: ei õnnestu tuvastada maksimaalset failinime pikkust"
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr "piirang %lu on ületatud, failinime pikkus %lu, fail %s"
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr "piirang %lu on ületatud, failinime komponendi pikkus %lu, komponent %s"
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Kasutajanimi: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "Reaalne nimi: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Kataloog: "
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Käsuinterpretaator: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Projekt: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "Plaan:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Kasutaja"
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr "Nimi"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr " TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Eemal"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Millal"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Kust"
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Kasutamine: %s [VÕTI]... [KASUTAJA]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"\n"
+" -l väljasta antud kasutajate kohta kogu info\n"
+" -b ära esita kogu infos kasutaja kodukataloogi ja shelli\n"
+" -h ära esita kogu infos kasutaja projekti faili\n"
+" -p ära esita kogu infos kasutaja plaani faili\n"
+" -s väljasta lühiinfo, seda kasutatakse vaikimisi\n"
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+" -f ära väljasta lühiinfo väljade päiseid\n"
+" -w ära väljasta lühiinfos kasutaja täisnime\n"
+" -i ära väljasta lühiinfos kasutaja täisnime ja masinat\n"
+" -q ära väljasta lühiinfos kasutaja täisnime, masinat ja\n"
+" eemalolekut\n"
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+"\n"
+"Kerge `finger' programm; väljastab kasutaja kohta infot.\n"
+"Kasutatakse utmp faili %s.\n"
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr ""
+"kasutajanimi puudub; -l kasutamisel peab olema vähemalt üks kasutajanimi"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr "lehekülgede vahemik"
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "`--pages=ESIMENE[:VIIMANE]' puudub argument"
+
+#: src/pr.c:916
+#, c-format
+msgid "Invalid page range %s"
+msgstr "Vigane lehekülgede vahemik %s"
+
+#: src/pr.c:981
+#, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "`-l LEHE_PIKKUS' vigane ridade arv: %s"
+
+#: src/pr.c:1005
+#, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "`-N NUMBER' vigane alustamise rea number: %s"
+
+#: src/pr.c:1017
+#, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "`-o ÄÄR' vigane rea nihe: %s"
+
+#: src/pr.c:1058
+#, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-w LEHE_LAIUS' vigane arv sümboleid: %s"
+
+#: src/pr.c:1072
+#, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-W LEHE_LAIUS' vigane arv sümboleid: %s"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "Paralleelselt väljastamisel ei saa veergude arvu määrata."
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "Ei saa trükkida korraga järjestikku ja paralleelselt."
+
+#: src/pr.c:1202
+#, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "`-%c' liigsed sümbolid või vigane number argumendis: %s"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "leht on liiga kitsas"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr "alguslege number %<PRIuMAX> ületab lehekülgede arvu %<PRIuMAX>"
+
+#: src/pr.c:2406
+#, c-format
+msgid "Page number overflow"
+msgstr "Lehekülje numbri ületäitumine"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr "Lehekülg %<PRIuMAX>"
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr "Küljenda FAILid trükkimiseks lehekülgedeks või veergudeks.\n"
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +ESIMENE_LEHT[:VIIMANE], --pages=ESIMENE_LEHT[:VIIMANE]\n"
+" alusta [lõpeta] trükkimine lehelt ESIMENE_LEHT\n"
+" -VEERGE, --columns=N\n"
+" väljasta N veergu ja väljasta veerud ülalt alla,\n"
+" välja arvatud juhul, kui kasutatakse võtit -a.\n"
+" Ühtlusta ridade arv veergudes igal lehel.\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across väljasta veerud risti üle leha, mitte ülalt alla,\n"
+" kasutatakse koos võtmega -VEERGE\n"
+" -c, --show-control-chars\n"
+" kasuta katus (^G) ja kaheksand langkriips notatsiooni\n"
+" -d, --double-space\n"
+" topeltreavahe väljundis\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=VORMING\n"
+" määra päise kuupäeva VORMING\n"
+" -e[SÜMB[LAIUS]], --expand-tabs[=SÜMB[LAIUS]]\n"
+" laienda sisendi sümbolid (TAB) tabulaatori laiuseni (8)\n"
+" -F, -f, --form-feed\n"
+" kasuta lehekülgede eraldamisel reavahetuste asemel\n"
+" lehevahetuse sümboleid (3-realine lehe päis võtmega -F\n"
+" või 5-realine päis ja jalus võtmata -F)\n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h PÄIS, --header=PÄIS\n"
+" kasuta lehe päises faili nime asemel PÄIS,\n"
+" -h \"\" väljastab tühja rea, ärge kasutage -h\"\"\n"
+" -i[SÜMB[LAIUS]], --output-tabs[=SÜMB[LAIUS]]\n"
+" asenda tühikud sümboliga (TAB) tabulatsiooni laiusega "
+"(8)\n"
+" -J, --join-lines mesti täisread, lülitab välja -W rea lühendamise, "
+"veerge\n"
+" ei joondata, --sep-string[=SÕNE] määrab eraldaja\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l LEHE_PIKKUS, --length=LEHE_PIKKUS\n"
+" sea lehe pikkuseks LEHE_PIKKUS (66) rida (vaikimisi\n"
+" on teksti ridu 56, võtmega -F 63)\n"
+" -m, --merge väljasta kõik failid paralleelselt, üks veeru kohta,\n"
+" lühenda read, ridade kogupikkuses ühendamiseks\n"
+" kasutage -J\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[ERALD[NUM]], --number-lines[=ERALD[NUM]]\n"
+" nummerda read, kasuta NUM (5) numbrit, seejärel ERALD\n"
+" (TAB), vaikimisi alustatakse loendamist sisendfaili\n"
+" esimesest reast\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" alusta loendamist ühe asemel antud numbrist esimese\n"
+" trükitava lehe esimesel real (vaata ka +ESIMENE_LEHT)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o SERV, --indent=SERV\n"
+" nihuta iga rida SERV (null) tühikut, ei mõjuta võtmeid\n"
+" -w või -W, SERV lisatakse LEHE_LAIUSele\n"
+" -r, --no-file-warnings\n"
+" ära hoiata, kui faili ei saa avada\n"
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[SÜMBOL],--separator[=SÜMBOL]\n"
+" erlda veerud antud sümboliga, võtmeta -w kasutatakse\n"
+" vaikimisi sümbolit <TAB> ja 'sümbol puudub' võtmega -w.\n"
+" -s[SÜMBOL] lülitab välja ridade lühendamise kõigi kolme\n"
+" veergudega seotud võtmete puhul (-VEERG|-a -VEERG|-m),\n"
+" välja arvatud juhul, kui kasutatakse võtit -w\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -SSÕNE, --sep-string[=SÕNE]\n"
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" eralda veerud SÕNEga,\n"
+" võtmeta -S: -J ja <tühik> korral on vaikimisi eraldaja "
+"<TAB>\n"
+" muidu (sama, kui -S\" \"), ei kasutata veergudega\n"
+" seotud võtmetega\n"
+" -t, --omit-header blokeeri lehe päised ja sabad\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" keela päised ja jalused, eemalda sisendfailidest kõik\n"
+" lehevahetused\n"
+" -v, --show-nonprinting\n"
+" kasuta langkriipsuga kaheksandkoodide notatsiooni\n"
+" -w LEHE_LAIUS, --width=LEHE_LAIUS\n"
+" sea lehe laius LEHE_LAIUS (72) sümbolit mitme "
+"tekstiveeru\n"
+" väljundis, -s[sümbol] lülitab välja (72)\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W LEHE_LAIUS, --page-width=LEHE_LAIUS\n"
+" määra lehe laiuseks LEHE_LAIUS (72) sümbolit, lühenda\n"
+" ridu, välja arvatud juhul, kui on seatud võti -J, ei\n"
+" sega võtmeid -S või -s\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"-T kasutatakse võtmega -l nn kui nn <= 10 või <= 3 võtmega -F. Kui FAIL\n"
+"puudub või on -, loe standardsisendit.\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Kasutamine: %s [MUUTUJA]...\n"
+" või: %s VÕTI\n"
+"Kui keskkonnamuutujat MUUTUJA ei ole antud, väljasta nad kõik.\n"
+"\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr "hoiatus: %s: ignoreerin sümbolkonstandile järgnevaid sümboleid"
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kasutamine: %s FORMAAT [ARGUMENT]...\n"
+" või: %s VÕTI\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+"Väljasta ARGUMENT kasutades antud FORMAATI.\n"
+"\n"
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"\n"
+"FORMAAT kontrollib väljundit nagu C printf. Interpreteeritavad järjendid "
+"on:\n"
+"\n"
+" \\\" jutumärk\n"
+" \\NNN sümbol kaheksandkoodiga NNN (1 kuni 3 numbrit)\n"
+" \\\\ langkriips\n"
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+" \\a tähelepanu (BEL)\n"
+" \\b samm tagasi\n"
+" \\c ära väljasta enam midagi\n"
+" \\f lehevahetus\n"
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n uus rida\n"
+" \\r rea algusesse\n"
+" \\t horisontaalne tabulaator\n"
+" \\v vertikaalne tabulaator\n"
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+" \\xHH bait kuueteistkümnendväärtusega HH (1 kuni 2 numbrit)\n"
+" \\uHHHH Unikoodi (ISO/IEC 10646) sümbol kuueteistkümnendväärtusega HHHH\n"
+" (4 numbrit)\n"
+" \\UHHHHHHHH Unikoodi sümbol kuueteistkümnendväärtusega HHHHHHHH (8 "
+"numbrit)\n"
+
+#: src/printf.c:129
+#, fuzzy
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+" %% sümbol %\n"
+" %b ARGUMENT sõnena, mille `\\' järjendeid interpreteeritakse,\n"
+" kaheksand järjendid on kujul \\0 või \\0NNN\n"
+"\n"
+"ja samuti kõik C formaadi määrangud, mis lõppevad ühega sümboleist\n"
+"diouxXfeEgGcs, ja ARGUMENdid teisendatuna esmalt õigesse tüüpi.\n"
+"Käsitletakse ka muutuvaid pikkuseid.\n"
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: ootasin numbrilist väärtust"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: väärtust ei teisendatud täielikult"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "paojadas puudub kuueteistkümnend number"
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "vigane universaal sümboli nimi \\%c%0*x"
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr "vigane välja laius: %s"
+
+#: src/printf.c:585
+#, c-format
+msgid "invalid precision: %s"
+msgstr "vigane täpsus: %s"
+
+#: src/printf.c:612
+#, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%.*s: vigane teisenduse määrang"
+
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "hoiatus: ignoreerin liigseid argumente, alustan argumendist %s"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr "F. Pinard"
+
+#: src/ptx.c:422
+#, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (regulaaravaldisele %s)"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Kasutamine: %s [VÕTI]... [SISEND]... (ilma -G)\n"
+" või: %s [VÕTI]... [SISEND [VÄLJUND]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"Väljasta sisendfailide sõnade kontekstregister.\n"
+"\n"
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference väljasta automaatselt loodud viited\n"
+" -G, --traditional käitu kui System V `ptx'\n"
+" -F, --flag-truncation=SÕNE kasuta ridade lühendamise märkimiseks SÕNE\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=SÕNE kasuta `xx' asemel makro nime\n"
+" -O, --format=roff loo väljund roff käskudena\n"
+" -R, --right-side-refs paiguta viited paremale, ei loendata "
+"võtmega -w\n"
+" -S, --sentence-regexp=REGAV realõpud või lausete lõpud\n"
+" -T, --format=tex loo väljund TeX käskudena\n"
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=REGAV kasuta võtmesõnade leidmiseks REGAV\n"
+" -b, --break-file=FAIL sõnu eraldavad sümbolid on selles failis\n"
+" -f, --ignore-case järjesta tõstutundetult\n"
+" -g, --gap-size=NUMBER veergude vahe suurus väljundis\n"
+" -i, --ignore-file=FAIL loe ignoreeritavate sõnade nimekiri\n"
+" -o, --only-file=FAIL ainult lugemiseks olevate sõnade fail\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references esimene väli igal real on viide\n"
+" -t, --typeset-mode - ei ole realiseeritud -\n"
+" -w, --width=NUMBER väljasta veergudena, viideteta\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"Kui FAIL puudub või on -, loe standardsisendit. `-F /' on vaikimisi.\n"
+
+#: src/ptx.c:2016
+#, c-format
+msgid "invalid gap width: %s"
+msgstr "vigane tühemiku laius: %s"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr "võti --copyright on aegunud; kasutage selle asemel --version"
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+"Väljasta jooksva töökataloogi täielik nimi.\n"
+"\n"
+
+#: src/pwd.c:160
+#, c-format
+msgid "failed to chdir to %s"
+msgstr "chdir %s ebaõnnestus"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, c-format
+msgid "failed to stat %s"
+msgstr "stat %s ebaõnnestus"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr "ei leia %s kataloogi kirjet, mille i-kirje sobiks"
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "ignoreerin argumente, mis ei ole võtmed"
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Kasutamine: %s [VÕTI]... FAIL\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+"Väljasta nimeviite väärtus standardväljundisse.\n"
+"\n"
+
+#: src/readlink.c:70
+#, fuzzy
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+" -f, --canonicalize õgvenda järgides iga nimeviidet igas nime\n"
+" komponendis rekursiivselt;\n"
+" kõik osad, peale viimase peavad olemas "
+"olema\n"
+" -e, --canonicalize-existing õgvenda järgides iga nimeviidet igas nime\n"
+" komponendis rekursiivselt,\n"
+" kõik osad peavad olemas olema\n"
+" -m, --canonicalize-missing õgvenda järgides iga nimeviidet igas nime\n"
+" komponendis rekursiivselt,\n"
+" osad ei pea olemas olema\n"
+" -n, --no-newline ei väljasta lõpetavaid reavahetusi\n"
+" -q, --quiet,\n"
+" -s, --silent blokeeri enamus veateateid\n"
+" -v, --verbose raporteeri vigadest\n"
+
+#: src/readlink.c:78
+#, fuzzy
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+" -f, --canonicalize õgvenda järgides iga nimeviidet igas nime\n"
+" komponendis rekursiivselt;\n"
+" kõik osad, peale viimase peavad olemas "
+"olema\n"
+" -e, --canonicalize-existing õgvenda järgides iga nimeviidet igas nime\n"
+" komponendis rekursiivselt,\n"
+" kõik osad peavad olemas olema\n"
+" -m, --canonicalize-missing õgvenda järgides iga nimeviidet igas nime\n"
+" komponendis rekursiivselt,\n"
+" osad ei pea olemas olema\n"
+" -n, --no-newline ei väljasta lõpetavaid reavahetusi\n"
+" -q, --quiet,\n"
+" -s, --silent blokeeri enamus veateateid\n"
+" -v, --verbose raporteeri vigadest\n"
+
+#: src/remove.c:481 src/remove.c:525
+#, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "FATAALNE: kataloogi %s sulgemine ebaõnnestus"
+
+#: src/remove.c:494
+#, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "FATAALNE: kataloogist %s ei saa .. avada"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr "FATAALNE: ei ole kindel et %s (tulin tagasi .. kaudu) on turvaline"
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "FATAALNE: kataloogi %s seade/inum muutus"
+
+#: src/remove.c:631
+#, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "FATAALNE: kataloogi %s ei õnnestu siseneda"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr "FATAALNE: kataloogi %s seade/inum muutus"
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"HOIATUS: Tsükliline kataloogide struktuur.\n"
+"See tähendab peaaegu alati, et failisüsteem on viga saanud.\n"
+"TEAVITA OMA SÜSTEEMIADMINISTRAATORIT.\n"
+"Järgnev kataloog on tsükli osa:\n"
+" %s\n"
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s: laskun kirjutamise kaitsega kataloogi %s? "
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s: laskun kataloogi %s? "
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: eemaldan kirjutuskaitsega %s %s? "
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: eemaldan %s %s? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "kustutatud kataloog: %s\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, c-format
+msgid "failed to close directory %s"
+msgstr "kataloogi %s ei õnnestunud sulgeda"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr "jätan %s vahele, kuna asub teisel seadmel"
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "kataloogi %s ei õnnestu kustutada"
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "FATAALNE: ei saa tagasi .. kataloogist %s"
+
+#: src/remove.c:1504
+#, c-format
+msgid "cannot remove root directory %s"
+msgstr "juurkataloogi %s ei õnnestu kustutada"
+
+#: src/remove.c:1544
+#, c-format
+msgid "cannot remove relative-named %s"
+msgstr "suhtelise nimega kataloogi %s ei õnnestu kustutada"
+
+#: src/remove.c:1558
+#, c-format
+msgid "cannot restore current working directory"
+msgstr "ei õnnestu taastada jooksvat kataloogi"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr "Üritan `%s ./%s' et kustutada faili %s.\n"
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Kasutamine: %s [VÕTI]... [FAIL]...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+"Eemalda (viide) FAIL(id).\n"
+"\n"
+" -f, --force ignoreeri puuduvaid faile, ära küsi\n"
+" -i küsi enne iga eemaldamist\n"
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+" -I küsi korra enne enam kui kolme faili eemaldamist "
+"või\n"
+" kui eemaldatakse rekursiivselt. Vähem pealetükkiv "
+"kui -i,\n"
+" aga pakub siiski kaitset enamus vigade vastu\n"
+" --interactive[=MILLAL] küsi vastavalt määrangule: never, once (-I) "
+"või\n"
+" always (-i). Kui MILLAL puudub, küsi alati\n"
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+" --one-file-system kustutades kataloogipuud, kustuta ainult samal\n"
+" seadmel olevaid faile\n"
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --no-preserve-root ära käsitle `/' eriliselt\n"
+" --preserve-root ära töötle `/' rekursiivselt (vaikimisi)\n"
+" -r, -R, --recursive eemalda kataloogide sisu rekursiivselt\n"
+" -v, --verbose selgita mis on teoksil\n"
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+"\n"
+"Vaikimisi ei kustuta rm katalooge. Kataloogide ja nende sisu kustutamiseks\n"
+"kasutage võtit --recursive (-r või -R).\n"
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"Et eemaldada faili, mille nimi algab sümboliga `-', näiteks `-foo',\n"
+"kasutage üht järgnevaist käskudest:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"Kui te kasutate faili kustutamiseks käsku rm, võib tihti olla võimalik\n"
+"siiski faili sisu taastada. Kui teil on vaja suuremat kindlust, et faili\n"
+"sisu ei saa taastada, proovige käsku shred.\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr "%s: eemaldada kõik argumendid rekursiivselt? "
+
+#: src/rm.c:366
+#, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: eemaldan kõik argumendid? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "kustutan kataloogi, %s"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Kasutamine: %s [VÕTI]... KATALOOG...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"Eemalda tühjad kataloogid.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignoreeri vigu mis on tingitud sellest, et kataloog\n"
+" pole tühi\n"
+
+#: src/rmdir.c:148
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents eemaldab KATALOOGI ja selle eellased. Näiteks \n"
+" `rmdir -p a/b/c' on sarnane käsule `rmdir a/b/c a/b a'.\n"
+" -v, --verbose väljastab diagnostika iga töödeldud kataloogi kohta\n"
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Kasutamine: %s [VÕTI]... VIIMANE\n"
+" või: %s [VÕTI]... ESIMENE VIIMANE\n"
+" või: %s [VÕTI]... ESIMENE SAMM VIIMANE\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"Väljasta numbrid esimesest viimaseni, vajadusel kasutades etteantud sammu.\n"
+"\n"
+" -f, --format FORMAAT kasuta printf stiilis ujukoma formaati\n"
+" -s, --separator=SÕNE kasuta numbrite eraldamiseks SÕNE (vaikimisi: "
+"\\n)\n"
+" -w, --equal-width kasuta võrdse laiusega välju, täida nullidega\n"
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"\n"
+"Kui ESIMENE või SAMM puudub, kasutatakse väärtust 1. Puuduva SAMMU asemel\n"
+"kasutatakse väärtust 1 isegi kui VIIMANE on väiksem, kui ESIMENE.\n"
+"ESIMENE, SAMM, VIIMANE interpreteeritakse, kui murdarve.\n"
+"SAMM on tavaliselt positiivne, kui ESIMENE on VIIMASEST väiksem ja\n"
+"negatiivne, kui VIIMANE on ESIMESEST väiksem. FORMAAT peab olema esitatud\n"
+"tüübiga `double'. Kui ESIMENE, SAMM ja VIIMANE on fikseeritud punktiga\n"
+"kümnendnumbrid maksimum täpsusega PREC kasutatakse formaadina %.PRECf, muidu "
+"%g.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "vigane murdarv: %s"
+
+#: src/seq.c:342
+#, c-format
+msgid "invalid format string: %s"
+msgstr "vigane formaadisõne: %s"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr "kui trükitakse võrdse pikkusega sõnesid, ei saa formaadisõnet kasutada"
+
+#: src/setuidgid.c:51
+#, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kasutamine: %s KASUTAJA KÄSKLUS [ARGUMENT]...\n"
+" või: %s VÕTI\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+"Eemalda täiendavad grupiõigused, võta antud KASUTAJA ID ja tema grupi ID\n"
+"ja käivita KÄSKLUS koos määratud argumentidega. Kui kasutaja ja grupi ID\n"
+"ei ole võimalik seada, lõpeta koodiga 111, muidu lõpeta sama koodiga,\n"
+"millega lõpetab KÄSKLUS.\n"
+"See programm on kasulik ainult juhul, kui käivitajaks on root (UID=0).\n"
+"\n"
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr "tundmatu kasutaja-ID: %s"
+
+#: src/setuidgid.c:109
+#, c-format
+msgid "cannot set supplemental group"
+msgstr "ei õnnestu seada lisagruppide nimekirja"
+
+#: src/setuidgid.c:114
+#, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "ei õnnestu seada grupi ID %lu"
+
+#: src/setuidgid.c:118
+#, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "ei õnnestu seada kasutaja ID %lu"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Kasutamine: %s [VÕTI]... FAIL [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"Kirjuta antud failid korduvalt üle, et muuta raskemaks andmete taastamine\n"
+"isegi väga kalli riistvara abil.\n"
+"\n"
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force vajadusel lisa kirjutamisõigus\n"
+" -n, --iterations=N kirjuta üle vaikimisi (%d) korra asemel N korda\n"
+" --random-source=FAIL loe juhuarvud failist (vaikimisi /dev/urandom)\n"
+" -s, --size=N töötle N baiti (lubatud on kasutada ka sufiksit K, M, G)\n"
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove lühenda ja eemalda fail peale ülekirjutamisi\n"
+" -v, --verbose näita töö käiku\n"
+" -x, --exact ära ümarda failisuurusi üles täisplokini;\n"
+" see on mitte-tavafailide puhul vaikimisi käitumine\n"
+" -z, --zero varja töötlemist, kirjutades viimase tegevusena nulle\n"
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"Kui FAIL on -, töötle standardväljundit.\n"
+"\n"
+"Kustuta failid, kui kasutati võtit --remove (-u). Vaikimisi faile ei\n"
+"kustutata, kuna enamasti töötatakse seadmefailidega, näiteks /dev/hda,\n"
+"ja enamasti ei soovita nende eemaldamist. Tavaliste failidega töötamisel\n"
+"kasutab enamus inimesi võtit --remove.\n"
+"\n"
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"HOIATUS: shred omab oma tööks tähtsat eeldust: failisüsteem kirjutab\n"
+"andmeid üle. See on traditsiooniline lähenemine, aga paljud süsteemid\n"
+"tänapäeval ei toeta seda eeldust. Näiteks järgnevatel failisüsteemidel\n"
+"ei ole shred efektiivne või ei ole efektiivne kõikides moodides:\n"
+"\n"
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"* logi-struktuuriga või \"journaled\" failisüsteemid, näiteks nagu pakuvad\n"
+" AIX ja Solaris (ja JFS, ReiserFS, XFS, Ext3 jne.)\n"
+"\n"
+"* failisüsteemid, mis kirjutavad taastatavaid andmeid, näiteks RAID\n"
+" tehnoloogial põhinevad failisüsteemid\n"
+"\n"
+"* failisüsteemid, mis teevad andmetest väljavõtteid (snapshots), näiteks\n"
+" Network Appliance NFS server\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+#, fuzzy
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+"* failisüsteemid, mis kasutavad ajutisi puhvreid, nagu NFSv3 kliendid\n"
+"\n"
+"* tihendavad failisüsteemid\n"
+"\n"
+"Ext3 failisüsteemi korral kehtib ülaltoodu (ja seega on shred piiratud\n"
+"efektiivsusega) juhul, kui kasutatakse moodi data=journal, mis logib\n"
+"lisaks metainfole ka faili sisu. Nii data=ordered (vaikimisi), kui ka\n"
+"data=writeback moodis töötab shred nagu harilikult.\n"
+"Ext3 þhurnaali moode saab muuta, kasutades data=midagi parameetrit\n"
+"failisüsteemi haakimisel /etc/fstab failis, täpsemat infot saab mount\n"
+"käsu manualist (man mount).\n"
+"\n"
+"Lisaks, failisüsteemide varukoopiad ja kaugkoopiad võivad sisaldada\n"
+"faili koopiaid, mida ei saa eemaldada ja see kõik võib võimaldada siiski\n"
+"seda faili hiljem taastada.\n"
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr "%s: fdatasync ebaõnnestus"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr "%s: fsync ebaõnnestus"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s: ei saa ümber kerida"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: läbimine %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s: viga kirjutamisel aadressile %s"
+
+#: src/shred.c:478
+#, c-format
+msgid "%s: lseek failed"
+msgstr "%s: lseek ebaõnnestus"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s: fail on liiga suur"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: läbimine %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: läbimine %lu/%lu (%s)...%s/%s %d%%"
+
+#: src/shred.c:776
+#, c-format
+msgid "%s: fstat failed"
+msgstr "%s: fstat ebaõnnestus"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: vigane failitüüp"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: fail on negatiivse suurusega"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s: viga lühendamisel"
+
+#: src/shred.c:889
+#, c-format
+msgid "%s: fcntl failed"
+msgstr "%s: fcntl ebaõnnestus"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s: ei õnnestu töödelda ainult lisamiseks mõeldud faili"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: eemaldan"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: uus nimi %s"
+
+#: src/shred.c:1018
+#, c-format
+msgid "%s: failed to remove"
+msgstr "%s: kustutamine ebaõnnestus"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: eemaldatud"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, c-format
+msgid "%s: failed to close"
+msgstr "%s: sulgemine ebaõnnestus"
+
+#: src/shred.c:1065
+#, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: faili ei saa kirjutamiseks avada"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: vigane läbimiste arv"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, c-format
+msgid "multiple random sources specified"
+msgstr "määrati mitu juhuarvude allikat"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: vigane faili suurus"
+
+#: src/shuf.c:51
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Kasutamine: %s [VÕTI]... [FAIL]\n"
+" või: %s -e [VÕTI]... [ARG]...\n"
+" või: %s -i ALG-LÕPP [VÕTI]...\n"
+
+#: src/shuf.c:57
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"Kirjuta sisendfailide read juhuslikus permutatsioonis standardväljundisse.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -e, --echo käsitle iga ARG kui sisendi rida\n"
+" -i, --input-range=ALG-LÕPP käsitle iga numbrit vahemikust sisendreana\n"
+" -n, --head-lines=RIDU väljasta maksimaalselt RIDU rida\n"
+" -o, --output=FAIL kirjuta tulemu standardväljundi asemel faili\n"
+" --random-source=FAIL loe juhuslikud baidid FAIList (vaikimisi /dev/"
+"urandom)\n"
+" -z, --zero-terminated ridade lõppu bait 0, mitte reavahetus\n"
+
+#: src/shuf.c:287
+#, c-format
+msgid "multiple -i options specified"
+msgstr "kasutati mitut -i võtit"
+
+#: src/shuf.c:307
+#, c-format
+msgid "invalid input range %s"
+msgstr "vigane sisendi vahemik: %s"
+
+#: src/shuf.c:320
+#, c-format
+msgid "invalid line count %s"
+msgstr "vigane ridade arv: %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr "määrati mitu väljundfaili"
+
+#: src/shuf.c:353
+#, c-format
+msgid "cannot combine -e and -i options"
+msgstr "-e ja -i võtmeid ei saa kombineerida"
+
+#: src/shuf.c:362
+#, c-format
+msgid "extra operand %s\n"
+msgstr "liigne operand %s\n"
+
+#: src/sleep.c:47
+#, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Kasutamine: %s NUMBER[SUFIKS]...\n"
+" või: %s VÕTI\n"
+"Paus pikkusega NUMBER sekundit. SUFIKS võib olla `s', tähistamaks sekundeid\n"
+"(vaikimisi), `m' minuteid, `h' tunde või `d' päevi. Erinevalt enamusest\n"
+"realisatsioonidest võib NUMBER olla ka murdarv. Kui on antud kaks või enam "
+"argumenti,\n"
+"on pausi pikkus kõikide argumentide summa.\n"
+"\n"
+
+#: src/sleep.c:138
+#, c-format
+msgid "invalid time interval %s"
+msgstr "vigane ajaintervall %s"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "ei õnnestu lugeda reaalaja kella"
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"Kirjuta järjestatud FAILide ühend standardväljundisse.\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+"Võtmed järjestamiseks:\n"
+"\n"
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks ignoreeri ees olevaid tühimikke\n"
+" -d, --dictionary-order kasuta ainult tühemikke ja tähti ning "
+"numbreid\n"
+" -f, --ignore-case tööta tõstutundetult\n"
+
+#: src/sort.c:326
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort võrdle vastavaid üldisi numbrilisi väärtusi\n"
+" -i, --ignore-nonprinting kasuta ainult trükitavaid sümboleid\n"
+" -M, --month-sort võrdle (tundmatu) < `JAAN' < ... < `DETS'\n"
+" -n, --numeric-sort võrdle vastavaid sõnede numbrilisi väärtusi\n"
+" -R, --random-sort järjesta juhuslike arvude paisktabeli järgi\n"
+" --random-source=FAIL loe juhuarvud failist (vaikimisi /dev/"
+"urandom)\n"
+" -r, --reverse pööra võrdluste tulemus\n"
+"\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+#, fuzzy
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+"Teised võtmed:\n"
+"\n"
+" -c, --check kontrolli kas sisend on järjestatud; ei "
+"järjesta\n"
+" -k, --key=POS1[,POS2] võti algab kohal POS1, lõppeb POS2 (algselt 1)\n"
+" -m, --merge mesti juba järjestatud failid; ei järjesta\n"
+" -o, --output=FAIL kirjuta tulemus standardväljundi asemel FAILi\n"
+" -s, --stable stabiliseeri sort blokeerides last-resort "
+"võrdlus\n"
+" -S, --buffer-size=MAHT määra mälupuhvri suurus\n"
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=ERA määra tühemiku asemele uus väljade eraldaja\n"
+" -T, --temporary-directory=KAT kasuta ajutiste failide jaoks $TMPDIR või %"
+"s\n"
+" asemel KAT. Korduv kasutamine määrab mitu\n"
+" kataloogi.\n"
+" -u, --unique võtmega -c: kontrolli ranget järjestatust\n"
+" muidu: väljasta võrdsetest ainult üks\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr " -z, --zero-terminated lõpeta read reavahetuse asemel baidiga 0\n"
+
+#: src/sort.c:363
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"POS on V[.S][VÕTMED], kus V on välja number ja S on sümboli positsioon\n"
+"väljal, mõlemad algavad positsioonilt 1. Kui võtmeid -t ega -b ei kasutata,\n"
+"loetakse sümboleid tekstile eelneva tühemiku algusest. VÕTMED on üks või\n"
+"enam ühe tähelisi järjestamise võtmeid, mis määravad antud võtme jaoks "
+"ümber\n"
+"globaalselt seatud järjestamise reegleid. Kui võtit ei ole antud, "
+"kasutatakse\n"
+"võtmena tervet rida.\n"
+"\n"
+"MAHT järel võib kasutada järgnevaid kordavaid sufikseid:\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"% 1% mälust, b 1, K 1024 (vaikimisi), jne tähtedega M, G, T, P, E, Z, Y.\n"
+"\n"
+"Kui FAIL puudub või on -, loe standardsisendit.\n"
+"\n"
+"*** HOIATUS ***\n"
+"Keskkonna poolt määratud lokaat mõjutab järjestamist. Traditsioonilise,\n"
+"baitide väärtusel põhineva järjestuse saamiseks seadke LC_ALL=C. \n"
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "kirjutan faili %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "ajutist faili ei õnnestu luua"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "open ebaõnnestus"
+
+#: src/sort.c:758
+msgid "fflush failed"
+msgstr "fflush ebaõnnestus"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "close ebaõnnestus"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "open ebaõnnestus"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr ""
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "ajutist faili ei õnnestu luua"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "ajutist faili ei õnnestu luua"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr ""
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "kataloogi `%s' ei õnnestu luua"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "kirjutamine ebaõnnestus"
+
+#: src/sort.c:975
+#, c-format
+msgid "warning: cannot remove: %s"
+msgstr "hoiatus: ei saa kustutada: %s"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "järjestamise suurus"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "stat ebaõnnestus"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "lugemine ebaõnnestus"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: korratu: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "standard veavoog"
+
+#: src/sort.c:2562
+#, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: vigane välja määrang %s"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr "võtmed `-%s' ei sobi kokku"
+
+#: src/sort.c:2637
+#, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: vigane loendur %s alguses"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "vigane kuupäev peale `-'"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "vigane number peale `.'"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "juhuslik sümbol välja määrangus"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "määrati mitu väljundvormingut"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "vigane number välja alguses"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "välja number on null"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "sümboli nihe on null"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "vigane number peale `,'"
+
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "võtmega -c ei lubata täiendavat operandi %s"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Kasutamine: %s [VÕTI]... [SISEND [PREFIKS]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"Väljasta antud suurusega tükid sisendist failidesse PREFIKSaa,\n"
+"PREFIKSab, ...; vaikimisi kirjutatakse 1000 rida ja vaikimisi prefiks on "
+"`x'.\n"
+"Kui sisend puudub või on -, loe standardsisendit.\n"
+"\n"
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=N kasuta sufikseid pikkusega N (vaikimisi %d)\n"
+" -b, --bytes=MAHT pane väljundi ritta MAHT baiti\n"
+" -C, --line-bytes=MAHT väljasta faili ülimalt MAHT baidiseid ridu\n"
+" -d, --numeric-suffixes kasuta tähtedega sufiksite asemel numbrilisi\n"
+" -l, --lines=NUMBER väljasta väljundfaili NUMBER rida\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose väljasta enne iga faili avamist standard veavoogu\n"
+" diagnostilist infot\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"SUURUS võib omada kordavat sufiksit: b on 512, k on 1K, m on 1 Meg.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "Väljundfailide sufiksid said otsa"
+
+#: src/split.c:211
+#, c-format
+msgid "creating file %s\n"
+msgstr "loon faili %s\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "ei saa tükeldada enam kui ühel viisil"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: vigane sufiksi pikkus"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: vigane baitide arv"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: vigane ridade arv"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "ridade arvu võti -%s%c... on liiga suur"
+
+#: src/split.c:518
+#, c-format
+msgid "invalid number of lines: 0"
+msgstr "vigane ridade arv: 0"
+
+#: src/stat.c:636
+#, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "hoiatus: tundmatu jada `\\%c'"
+
+#: src/stat.c:680
+#, c-format
+msgid "%s: invalid directive"
+msgstr "%s: vigane direktiiv"
+
+#: src/stat.c:726
+#, c-format
+msgid "warning: backslash at end of format"
+msgstr "hoiatus: langkriips vormingu lõpus"
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr "ei õnnestu lugeda %s failisüsteemi informatsiooni"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Kasutamine: %s [VÕTI]... FAIL...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+"Esita faili või failisüsteemi olek.\n"
+"\n"
+" -L, --dereference järgi viiteid\n"
+" -f, --filesystem esita faili oleku asemel failisüsteemi olek\n"
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+" -c --format=VORMING määra uus vorming; peale iga VORMING kasutamist\n"
+" väljastatakse reavahetus\n"
+" --printf=VORMING nagu --format, aga töötleb ka langkriipsu "
+"paojadasid,\n"
+" ja ei väljasta automaatselt reavahetusi.\n"
+" Kui soovite reavahetust, kasutage \\n.\n"
+" -t, --terse esita info lakooniliselt\n"
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"\n"
+"Lubatud vormingu järjendid failidele (ei kasuta --file-system):\n"
+"\n"
+" %a - Õigused kaheksandesituses\n"
+" %A - Õigused inimesele loetaval kujul\n"
+" %b - Kasutatud blokkide arv (vaata %B)\n"
+" %B - Iga `%b' poolt antud bloki maht baitides\n"
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+" %d Seadme number kümnendsüsteemis\n"
+" %D Seadme number kuueteistkümnendsüsteemis\n"
+" %f Mood kuueteistkümnendsüsteemis\n"
+" %F Faili tüüp\n"
+" %g Omaniku grupi ID\n"
+" %G Omaniku grupi nimi\n"
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+" %h - Viidete arv\n"
+" %i - Ikirje number\n"
+" %n - Faili nimi\n"
+" %N - Jutumärkides faili nimi, nimeviite korral viidatav nimi\n"
+" %o - S/V bloki suurus\n"
+" %s - Kogumaht, baitides\n"
+" %t - Seadme kuueteistkümnendsüsteemis põhinumber\n"
+" %T - Seadme kuueteistkümnendsüsteemis alamnumber\n"
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+" %u - Omaniku kasutaja ID\n"
+" %U - Omaniku kasutaja nimi\n"
+" %x - Viimane kasutamine\n"
+" %X - Viimane kasutamine sekundites alates epohhist\n"
+" %y - Viimane täiendamine\n"
+" %Y - Viimane täiendamine sekundites alates epohhist\n"
+" %z - Viimane muutmine\n"
+" %Z - Viimane muutmine sekundites alates epohhist\n"
+"\n"
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"Lubatud vormingu järjendid failisüsteemidele:\n"
+"\n"
+" %a - Vabu blokke mittepriviligeeritud kasutajatele\n"
+" %b - Andmeblokke kokku failisüsteemis\n"
+" %c - Failikirjeid kokku failisüsteemis\n"
+" %d - Vabu failikirjeid failisüsteemis\n"
+" %f - Vabu blokke failisüsteemis\n"
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+" %i - Failisüsteemi kuueteistkümnend id\n"
+" %l - Failinimede maksimaalne pikkus\n"
+" %n - Faili nimi\n"
+" %s - Optimaalne ülekande bloki suurus\n"
+" %S - Bloki suurus (blokkide arvu jaoks)\n"
+" %t - Tüüp kuueteistkümnend esituses\n"
+" %T - Inimesele loetaval kujul tüüp\n"
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Kasutamine: %s [-F SEADE] [--file=SEADE] [OMADUS]...\n"
+" või: %s [-F SEADE] [--file=SEADE] [-a|--all]\n"
+" või: %s [-F SEADE] [--file=SEADE] [-g|--save]\n"
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Väljasta või muuda terminali seadeid.\n"
+"\n"
+" -a, --all väljasta kõik kehtivad seaded inimesele loetavalt\n"
+" -g, --save väljasta kõik kehtivad seaded stty programmile "
+"loetavalt\n"
+" -F, --file=SEADE ava ja kasuta standardsisendi asemel antud seadet\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+"\n"
+"Võimalik - enne seadet tähistab eitust. Sümbol * märgib POSIX standardile\n"
+"mittevastavat seadet. Seadete kasutatavuse määrab kasutatav\n"
+"operatsioonisüsteem.\n"
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"\n"
+"Spetsiaalsümbolid:\\n\"\n"
+" * dsusp SÜMBOL SÜMBOL saadab terminali peatamise signaali, kui sisend on "
+"loetud\n"
+" eof SÜMBOL SÜMBOL saadab faili lõpu teate (lõpetab sisendi)\n"
+" eol SÜMBOL SÜMBOL lõpetab rea\n"
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+" * eol2 SÜMBOL alternatiivne SÜMBOL rea lõpetamiseks\n"
+" erase SÜMBOL SÜMBOL kustutab viimati kirjutatud sümboli\n"
+" intr SÜMBOL SÜMBOL saadab katkestamise signaali\n"
+" kill SÜMBOL SÜMBOL kustutab jooksva rea\n"
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+" * lnext SÜMBOL SÜMBOL sisestab järgmise sümboli kvoodituna\n"
+" quit SÜMBOL SÜMBOL saadab väljumise signaali\n"
+" * rprnt SÜMBOL SÜMBOL joonistab jooksva rea uuesti\n"
+" start SÜMBOL SÜMBOL käivitab väljundi peale peatamist\n"
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+" stop SÜMBOL SÜMBOL peatab väljundi\n"
+" susp SÜMBOL SÜMBOL saadab terminali peatamise signaali\n"
+" * swtch SÜMBOL SÜMBOL vahetab käsuinterpretaatori taset\n"
+" * werase SÜMBOL SÜMBOL kustutab viimati kirjutatud sõna\n"
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"\n"
+"Spetsiaalseaded:\n"
+" N sea sisendi ja väljundi kiiruseks N boodi\n"
+" * cols N teata tuumale, et terminalil on N veergu\n"
+" * columns N sama, kui cols N\n"
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+" ispeed N sea sisendi kiiruseks N\n"
+" * line N kasuta liiniseadeid N\n"
+" min N -icanon omadusega, sea lugemise lõpetamiseks min, N "
+"sümbolit\n"
+" ospeed N sea väljundi kiiruseks N\n"
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+" * rows N teata tuumale, et terminalil on N rida\n"
+" * size väljasta terminali veerud ja read, vastavalt tuuma infole\n"
+" speed väljasta terminali kiirus\n"
+" time N -icanon omadusega, sea lugemise taimout N sekundi "
+"kümnendikku\n"
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"\n"
+"Kontrollseaded:\n"
+" [-]clocal blokeeri modemi kontrolli signaalid\n"
+" [-]cread luba sisendit\n"
+"* [-]crtscts luba RTS/CTS vookontroll\n"
+" csN sea sümboli suuruseks N bitti, N vahemikust [5..8]\n"
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+" [-]cstopb kasuta sümboli kohta kaht stop bitti (üks `-' korral)\n"
+" [-]hup saada hangup signaal, kui viimane protsess suleb tty\n"
+" [-]hupcl sama, kui [-]hup\n"
+" [-]parenb genereeri väljundis paarsusbitt ja eelda paarsust sisendis\n"
+" [-]parodd sea paaritu paarsus (paaris `-' korral)\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"\n"
+"Sisendiseaded:\n"
+" [-]brkint break põhjustab katkestuse signaali\n"
+" [-]icrnl tõlgi rea algusse sümbol reavahetuseks\n"
+" [-]ignbrk ignoreeri break sümbolit\n"
+" [-]igncr ignoreeri rea algusse sümbolit\n"
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+" [-]ignpar ignoreeri paarsusveaga sümboleid\n"
+" * [-]imaxbel piiksu ja ära tühjenda täis sisendpuhvrit\n"
+" [-]inlcr tõlgi reavahetus rea algusse sümboliks\n"
+" [-]inpck luba sisendi paarsuse kontroll\n"
+" [-]istrip eemalda sisendsümbolitelt ülemine (8-s) bitt\n"
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+" * [-]iutf8 eelda et sisendsümbolid kasutavad UTF-8 kooditabelit\n"
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+" * [-]iuclc tõlgi suurtähed väiketähtedeks\n"
+" * [-]ixany luba väljundit alustada igal, mitte ainult start sümbolil\n"
+" [-]ixoff luba start/stop sümbolite edastus\n"
+" [-]ixon luba XON/XOFF vookontroll\n"
+" [-]parmrk märgi paarsusvead (kasutatakse 255-0-sümbol järjendis)\n"
+" [-]tandem sama, kui [-]ixoff\n"
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"\n"
+"Väljundi seaded:\n"
+" * bsN samm tagasi viivitus, N vahemikust [0..1]\n"
+" * crN rea algusse viivitus, N vahemikust [0..3]\n"
+" * ffN lehevahetuse viivitus, N vahemikust [0..1]\n"
+" * nlN reavahetuse viivitus, N vahemikust [0..1]\n"
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+" * [-]ocrnl tõlgi rea algusse sümbol reavahetuseks\n"
+" * [-]ofdel kasuta täitesümbolitena null asemel kustutamise sümbolit\n"
+" * [-]ofill kasuta viivitustel ootamise asemel täitesümboleid\n"
+" * [-]olcuc tõlgi väiketähed suurtähtedeks\n"
+" * [-]onlcr tõlgi reavahetus paariks rea algusse-reavahetus\n"
+" * [-]onlret reavahetus käitub, nagu rea algusse sümbol\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+" * [-]onocr ära väljasta esimesel veerul rea algusse sümbolit\n"
+" [-]opost väljundi järeltöötlus\n"
+" * tabN horisontaalse tabulaatori viivitus, N vahemikust [0..3]\n"
+" * tabs sama, kui tab0\n"
+" * -tabs sama, kui tab3\n"
+" * vtN vertikaalse tabulaatori viivitus, N vahemikust [0..1]\n"
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"\n"
+"Lokaalsed seaded:\n"
+" [-]crterase korda kustutamise sümbolit kui samm tagasi-tühik-samm "
+"tagasi\n"
+" * crtkill surma terve rida vastavalt echoprt ja echoe seadetele\n"
+" * -crtkill surma terve rida vastavalt echoctl ja echok seadetele\n"
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+" * [-]ctlecho korda kontrollsümboleid katus notatsioonis (`^c')\n"
+" [-]echo korda sisendi sümboleid\n"
+" * [-]echoctl sama, kui [-]ctlecho\n"
+" [-]echoe sama, kui [-]crterase\n"
+" [-]echok väljasta kill sümboli järel reavahetus\n"
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+" * [-]echoke sama, kui [-]crtkill\n"
+" [-]echonl korda reavahetust isegi, kui teisi sümboleid ei korrata\n"
+" * [-]echoprt korda kustutatud sümboleid esitades neid `\\\\' ja '/' "
+"vahel\n"
+" [-]icanon luba spetsiaalsümbolid erase, kill, werase ja rprnt\n"
+" [-]iexten luba POSIX mittevastavad spetsiaalsümbolid\n"
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+" [-]isig luba spetsiaalsümbolid interrupt, quit ja suspend\n"
+" [-]noflsh keela tühjendamine peale katkestamise ja väljumise "
+"sümboleid\n"
+" * [-]prterase sama, kui [-]echoprt\n"
+" * [-]tostop peata taustatööd, mis üritavad terminalile kirjutada\n"
+" * [-]xcase icanon omadusega, kasuta suurtähtede ees `\\\\'\n"
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+"\n"
+"Kombineeritud seaded:\n"
+" * [-]LCASE sama, kui [-]lcase\n"
+" cbreak sama, kui -icanon\n"
+" -cbreak sama, kui icanon\n"
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+" cooked sama, kui brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof ja eol sümbolid seatakse vaikimisi väärtustele\n"
+" -cooked sama, kui raw\n"
+" crt sama, kui echoe echoctl echoke\n"
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+" dec sama, kui echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq sama, kui [-]ixany\n"
+" ek erase ja kill sümbolid seatakse vaikimisi väärtustele\n"
+" evenp sama, kui parenb -parodd cs7\n"
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+" -evenp sama, kui -parenb cs8\n"
+" * [-]lcase sama, kui xcase iuclc olcuc\n"
+" litout sama, kui -parenb -istrip -opost cs8\n"
+" -litout sama, kui parenb istrip opost cs7\n"
+" nl sama, kui -icrnl -onlcr\n"
+" -nl sama, kui icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+" oddp sama, kui parenb parodd cs7\n"
+" -oddp sama, kui -parenb cs8\n"
+" [-]parity sama, kui [-]evenp\n"
+" pass8 sama, kui -parenb -istrip cs8\n"
+" -pass8 sama, kui parenb istrip cs7\n"
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+" raw sama, kui -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw sama, kui cooked\n"
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+" sane sama, kui cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, kõik\n"
+" spetsiaalsümbolid seatakse vaikimisi väärtustele\n"
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"Käsitle terminali, mis on ühendatud standardsisendiga. Kui argumente\n"
+"ei antud, väljasta terminali kiirus, liini seaded ja erinevused seadest\n"
+"`stty sane'. Terminali seadete muutmisel käsitletakse SÜMBOLit kas\n"
+"literalina või kui ^c, 0x37, 0177 või 127; spetsiaalväärtuseid ^- või\n"
+"undef kasutatakse vastava sümboli blokeerimiseks.\n"
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr "lubatud on ainult üks seade"
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+"inimesele loetava ja programmile loetava väljundi seaded on üksteist "
+"välistavad"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "kui määrate väljundi moodi, siis ei saa seadme moodi seada"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: ei õnnestu eemaldada mitte-blokeeruvat moodi"
+
+#: src/stty.c:885 src/stty.c:995
+#, c-format
+msgid "invalid argument %s"
+msgstr "vigane argument %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, c-format
+msgid "missing argument to %s"
+msgstr "%s nõuab argumenti"
+
+#: src/stty.c:976
+#, c-format
+msgid "invalid line discipline %s"
+msgstr "vigane liini määrang %s"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: kõiki nõutud operatsioone ei õnnestunud sooritada"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "new_mode: mood\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: sellel seadmel puudub info suuruse kohta"
+
+#: src/stty.c:1888
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "vigane numbriline argument %s"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Parool:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: ei õnnestu avada /dev/tty"
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "ei õnnestu seada gruppe"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "ei õnnestu seada grupi id"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "ei õnnestu seada kasutaja id"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Kasutamine: %s [VÕTI]... [-] [KASUTAJA [ARGUMENT]...]\n"
+
+#: src/su.c:386
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Muuda kasutaja efektiine kasutaja id ja grupi id.\n"
+"\n"
+" -, -l, --login meldi kasutajana\n"
+" -c, --commmand=KÄSK edasta KÄSK shellile võtmega -c\n"
+" -f, --fast edasta shellile võti -f (csh või tcsh)\n"
+" -m, --preserve-environment säilita keskkonnamuutujaid\n"
+" -p sama, kui -m\n"
+" -s, --shell=PROGRAMM käivita PROGRAMM, kui /etc/shells seda lubab\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+"\n"
+"Ainult - rakendab võtme -l. Kui KASUTAJA ei antud, kasuta nime root.\n"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "kasutajat %s ei ole"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "vale parool"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "kasutan piiratud käsuinterpretaatorit %s"
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "hoiatus: ei saa minna kataloogi %s"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Väljasta iga faili kohta kontrollsumma ja blokkide arv.\n"
+"\n"
+" -r kasuta BSD sum algoritmi, kasuta 1K blokke\n"
+" -s, --sysv kasuta System V sum algoritmi, kasuta 512 baidiseid "
+"blokke\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+"Salvesta muutused kettale, uuenda superplokki.\n"
+"\n"
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "ignoreerin kõiki argumente"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+"\n"
+"MÄRKUS: teie käsuinterpretaator võib omada oma versiooni %s, millist "
+"tavaliselt\n"
+"eelistatakse siinkirjeldatule. Täpsemat infot ja kasutusjuhendi leiate\n"
+"oma käsuinterpretaatori dokumentatsioonist.\n"
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help väljasta see abiinfo ja lõpeta töö\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version väljasta versiooniinfo ja lõpeta töö\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Kirjuta iga FAIL standardväljundisse, viimane rida esimesena.\n"
+"Kui FAIL puudub või on -, loe standardsisendit.\n"
+"\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before kasuta eraldajat enne, mitte pärast\n"
+" -r, --regex interpreteeri eraldajat regulaaravaldisena\n"
+" -s, --separator=SÕNE kasuta reavahetuse asemel eraldajana SÕNE\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, c-format
+msgid "%s: seek failed"
+msgstr "%s: seek ebaõnnestus"
+
+#: src/tac.c:265
+#, c-format
+msgid "record too large"
+msgstr "kirje on liiga suur"
+
+#: src/tac.c:459
+#, c-format
+msgid "cannot create temporary file %s"
+msgstr "ajutist faili %s ei õnnestu luua"
+
+#: src/tac.c:466
+#, c-format
+msgid "cannot open %s for writing"
+msgstr "%s ei õnnestu kirjutamiseks avada"
+
+#: src/tac.c:487 src/tac.c:494
+#, c-format
+msgid "%s: write error"
+msgstr "%s: viga kirjutamisel"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "eraldaja ei või olla tühi"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Väljasta viimased %d rida igast FAILIST standardväljundisse.\n"
+"Enam, kui ühe FAILI korral, lisa iga faili ette päis faili nimega.\n"
+"Kui FAIL puudub või on -, loe standardsisendit.\n"
+"\n"
+
+#: src/tail.c:229
+#, fuzzy
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry jätka faili avamise üritamist isegi kui faili\n"
+" ei saa tail käivitamisel kasutada või kui ta\n"
+" muutub mittekasutatavaks hiljem -- kasulik nime\n"
+" jälgimisel, näiteks võtmega --follof=nimi\n"
+" -c, --bytes=N väljasta viimased N baiti\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={nimi|pide}]\n"
+" väljasta faili kasvamisel lisanduvad andmed;\n"
+" -f, --follow ja --follow=pide on samaväärsed\n"
+" -F sama, kui --follow=nimi --retry\n"
+
+#: src/tail.c:244
+#, fuzzy, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=N väljasta vaikimisi %d viimase rea asemel N rida\n"
+" --max-unchanged-stats=N\n"
+" võtmega --follow=nimi, ava FAIL, mis ei ole N\n"
+" iteratsiooni (vaikimisi %d) järel muutunud, "
+"uuesti\n"
+" tegemaks kindlaks et seda faili ei ole "
+"kustutatud\n"
+" või ümber nimetatud (nagu seda võib juhtuda\n"
+" logifailidega) \n"
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID võtmega -f, lõpeta töö, kui protsess PID lõpetab\n"
+" -q, --quiet, --silent ära väljasta päiseid faili nimega\n"
+" -s, --sleep-interval=S võtmega -f, maga jälgimiste vahel umbes S "
+"sekundit\n"
+" (vaikimisi 1.0)\n"
+" -v, --verbose väljasta alati päised faili nimega\n"
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"Kui N esimene sümbol (baitide või ridade arv) on `+', väljasta alustades\n"
+"faili algusest Ninda elemendiga, muidu väljasta failist viimased N "
+"elementi. \n"
+"N võib omada kordavat sufiksit:\n"
+"b on 512, k on 1024, m on 1024*1024.\n"
+"\n"
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"Võtmega --follow (-f), jälgib tail vaikimisi faili pidet. See tähendab, et\n"
+"tail saab jätkata faili jälgimist isegi juhul, kui fail nimetatakse ümber.\n"
+"Selline "
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"käitumine ei ole kasulik, kui teil on vaja faili jälgida nime järgi,\n"
+"mitte failipideme (n. logide roteerumisel). Sellisel juhul kasutage võtit\n"
+"--follow=nimi. Siis jälgib tail faili nime põhjal, avades seda "
+"perioodiliselt\n"
+"uuesti, et testida et faili pole vahepeal mõne programmi poolt ümber "
+"nimetatud\n"
+"ja uuesti loodud.\n"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "sulen %s (fd=%d)"
+
+#: src/tail.c:411
+#, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: ei õnnestu liikuda suhtelisele nihkele %s"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s: ei õnnestu liikuda lõpu-suhtelisele nihkele %s"
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr "%s pole enam kasutatav"
+
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr "%s asendati mitte-jälgitava failiga; ei jälgi seda enam"
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr "%s on jälle kasutatav"
+
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "%s tekkis; järgin uue faili lõppu"
+
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "%s asendati; järgin uue faili lõppu"
+
+#: src/tail.c:1025
+#, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: ei õnnestu muuta mitte-blokeeruvat moodi"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: fail on lühendatud"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "rohkem faile pole"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr "%s: seda tüüpi faili lõppu ei saa järgida; annan alla"
+
+#: src/tail.c:1439
+#, c-format
+msgid "number in %s is too large"
+msgstr "%s number on liiga suur"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr "%s: vigane maksimum arv mittemuutunud atribuute avamiste vahel"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: vigane PID"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: vigane arv sekundeid"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr "võtit kasutati vales kontekstis -- %c"
+
+#: src/tail.c:1566
+#, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "hoiatus: --retry on kasutatav ainult failide jälgimisel nime põhjal"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+"hoiatus: PID ignoreeritakse; --pid=PID on kasulik ainult failide jälgimisel"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "hoiatus: --pid=PID ei ole selles süsteemis toetatud"
+
+#: src/tail.c:1667
+#, c-format
+msgid "cannot follow %s by name"
+msgstr "ei õnnestu %s nime järgi leida"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr "hoiatus: standardsisendi lõpmatu jälgimine ei toimi"
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Kopeeri standardsisend igasse FAILi, samuti standardväljundisse.\n"
+"\n"
+" -a, --append lisa antud FAILidesse, ära kirjuta üle\n"
+" -i, --ignore-interrupts ignoreeri katkestusi\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Kui FAIL on -, kopeeri uuesti standardväljundisse.\n"
+
+#: src/test.c:125
+#, c-format
+msgid "missing argument after %s"
+msgstr "%s nõuab argumenti"
+
+#: src/test.c:161
+#, c-format
+msgid "invalid integer %s"
+msgstr "vigane täisarv %s"
+
+#: src/test.c:242
+msgid "')' expected"
+msgstr "')' puudub"
+
+#: src/test.c:245
+#, c-format
+msgid "')' expected, found %s"
+msgstr "')' puudub, leidsin %s"
+
+#: src/test.c:261 src/test.c:606
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: oodati unaarset operaatorit"
+
+#: src/test.c:330
+msgid "-nt does not accept -l"
+msgstr "-nt ei luba -l"
+
+#: src/test.c:343
+msgid "-ef does not accept -l"
+msgstr "-ef ei luba -l"
+
+#: src/test.c:359
+msgid "-ot does not accept -l"
+msgstr "-ot ei luba -l"
+
+#: src/test.c:368
+msgid "unknown binary operator"
+msgstr "tundmatu binaarne operaator"
+
+#: src/test.c:634
+#, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: oodati binaarset operaatorit"
+
+#: src/test.c:694
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Kasutamine: test AVALDIS\n"
+" või: test\n"
+" või: [ AVALDIS ]\n"
+" või: [ ]\n"
+" või: [ VÕTI\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"Lõpeta olekuga, mille määrab AVALDIS.\n"
+"\n"
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"\n"
+"Puuduva AVALDIS korral kasutatakse väärtust väär. Muidu, \n"
+"AVALDIS on kas tõene või väär ja seab lõpetamise oleku.\n"
+"Avaldis on üks järgnevaist:\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+"\n"
+" ( AVALDIS ) AVALDIS on tõene\n"
+" ! AVALDIS AVALDIS on väär\n"
+" AVALDIS1 -a AVALDIS2 nii AVALDIS1, kui ka AVALDIS2 on tõesed\n"
+" AVALDIS1 -o AVALDIS2 kas AVALDIS1 või AVALDIS2 on tõene\n"
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"\n"
+" -n SÕNE SÕNE pikkus on nullist erinev\n"
+" SÕNE sama kui -n SÕNE\n"
+" -z SÕNE SÕNE pikkus on null\n"
+" SÕNE1 = SÕNE2 sõned on võrdsed\n"
+" SÕNE1 != SÕNE2 sõned ei ole võrdsed\n"
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" NUMBER1 -eq NUMBER2 NUMBER1 ja NUMBER2 on võrdsed\n"
+" NUMBER1 -ge NUMBER2 NUMBER1 on suurem või võrdne, kui NUMBER2\n"
+" NUMBER1 -gt NUMBER2 NUMBER1 on suurem, kui NUMBER2\n"
+" NUMBER1 -le NUMBER2 NUMBER1 on väiksem või võrdne, kui NUMBER2\n"
+" NUMBER1 -lt NUMBER2 NUMBER1 on väiksem, KUI NUMBER2\n"
+" NUMBER1 -ne NUMBER2 NUMBER1 ja NUMBER2 ei ole võrdsed\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+"\n"
+" FAIL1 -ef FAIL2 FAIL1 ja FAIL2 omavad samu seadme ja ikirje numbreid\n"
+" FAIL1 -nt FAIL2 FAIL1 on uuem (muutmise aeg), kui FAIL2\n"
+" FAIL1 -ot FAIL2 FAIL1 on vanem, kui FAIL2\n"
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+"\n"
+" -b FAIL FAIL on olemas ja on blokkseade\n"
+" -c FAIL FAIL on olemas ja on sümbolseade\n"
+" -d FAIL FAIL on olemas ja on kataloog\n"
+" -e FAIL FAIL on olemas\n"
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+" -f FAIL FAIL on olemas ja on tavaline fail\n"
+" -g FAIL FAIL on olemas ja omab sea-grupi-ID õigust\n"
+" -G FAIL FAIL on olemas grupp on efektiivne grupi ID\n"
+" -h FAIL FAIL on olemas ja on nimeviide (sama, kui -L)\n"
+" -k FAIL FAIL on olemas ja omab kleepimisõigust\n"
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+" -L FAIL FAIL on olemas ja on nimeviit (sama, kui -h)\n"
+" -O FAIL FAIL on olemas ja omanik on efektiivne kasutaja ID\n"
+" -p FAIL FAIL on olemas ja on nimega toru\n"
+" -r FAIL FAIL on olemas ja on loetav\n"
+" -s FAIL FAIL on olemas ja tema suurus on suurem kui null\n"
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+" -S FAIL FAIL on olemas ja on pesa\n"
+" -t FP terminalil on avatud failipide FP\n"
+" -u FAIL FAIL on olemas ja omab sea-kasutaja-ID õigust\n"
+" -w FAIL FAIL on olemas ja on kirjutatav\n"
+" -x FAIL FAIL on olemas ja on käivitatav (või otsitav)\n"
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"Välja arvatud -h ja -L korral, kõik failidega seotud operatsioonid "
+"lahendavad\n"
+"nimeviiteid. Pange tähele, et sulud vajavad käsuinterpretaatori eest "
+"kaitset\n"
+"kvootimise või langkriipsuga kaitsmise näol. NUMBER võib olla ka -l SÕNE,\n"
+"mis tähistab siis SÕNE pikkust.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr "test ja/või ["
+
+#: src/test.c:831
+msgid "missing `]'"
+msgstr "puudub `]'"
+
+#: src/test.c:846
+#, c-format
+msgid "extra argument %s"
+msgstr "liigne argument: %s"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "vigane kuupäeva vorming %s"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "loon %s"
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr "%s ei õnnestu kasutada"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "sean faili %s aegu"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+"Sea iga faili kasutamise ja muutmise aeg.\n"
+"\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a muuda ainult kasutamise (access) aeg\n"
+" -c, --no-create ära loo faile\n"
+" -d, --date=SÕNE analüüsi SÕNE ja kasuta seda jooksva aja asemel\n"
+" -f (ignoreeritakse)\n"
+" -m muuda ainult muutmise (modification) aega\n"
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --reference=FAIL kasuta jooksva aja asemel selle faili aegu\n"
+" -t TEMPEL kasuta jooksva aja asemel [[SS]AA]KKPPttmm[.ss]\n"
+" --time=SÕNA sea antud aeg, SÕNA võib olla: \n"
+" access, atime või use (sama kui -a)\n"
+" modify või mtime (sama kui -m)\n"
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"Pange tähele, et võtmed -d ja -t kasutavad erinevaid aja vorminguid.\n"
+"\n"
+"Kui FAIL on -, kasuta standardväljundit.\n"
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "ei õnnestu kirjeldada aegu rohkem kui ühest allikast"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+"hoiatus: `touch %s' on aegunud; kasutage `touch -t %04ld%02d%02d%02d%02d.%"
+"02d'"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Kasutamine: %s [VÕTI]... HULK1 [HULK2]...\n"
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Tõlgi, tihenda ja/või kustuta sümboleid standardsisendist väljastades \n"
+"standardväljundisse.\n"
+"\n"
+" -c, -C, --complement esmalt täienda HULK1\n"
+" -d, --delete kustuta sümbolid HULK1, ei tõlgi\n"
+" -s, --squeeze-repeats asenda iga korduv sümbol sisendi järjendis, mis "
+"on\n"
+" märgitud HULK1 selle sümboli ühekordse esitusega\n"
+" -t, --truncate-set1 esmalt lühenda HULK1 HULK2 pikkuseks\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"HULGAD esitatakse sümbolite jadana. Enamus esitab iseennast.\n"
+"Interpreteeritavad järjendid on:\n"
+"\n"
+" \\NNN sümbol kaheksandväärtusega NNN (1 kuni 3 "
+"kaheksandnumbrit)\n"
+" \\\\ langkriips\n"
+" \\a kuuldav piiks\n"
+" \\b samm tagasi\n"
+" \\f lehevahetus\n"
+" \\n uus rida\n"
+" \\r reavahetus\n"
+" \\t horisontaalne tabulaator\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v vertikaalne tabulaator\n"
+" SÜMB1-SÜMB2 kõik sümbolid alates SÜMB1 kuni SÜMB2 kasvavas "
+"järjekorras\n"
+" [SÜMB*] HULGAS2, kopeerib sümbolit kuni HULK1 pikkuseni\n"
+" [SÜMB*KORD] korda sümbolit, KORD on kaheksandnumber, kui algab "
+"nulliga\n"
+" [:alnum:] kõik tähed ja numbrid\n"
+" [:alpha:] kõik tähed\n"
+" [:blank:] kõik horisontaal tühemikud\n"
+" [:cntrl:] kõik kontrollsümbolid\n"
+" [:digit:] kõik numbrid\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] kõik trükitavad sümbolid, aga mitte tühik\n"
+" [:lower:] kõik väiketähed\n"
+" [:print:] kõik trükitavad sümbolid, ka tühik\n"
+" [:punct:] kõik punktuatsiooni sümbolid\n"
+" [:space:] kõik horisontaal või vertikaal tühemikud\n"
+" [:upper:] kõik suurtähed\n"
+" [:xdigit:] kõik kuueteistkümnend numbrid\n"
+" [=SÜMBOL=] all sümbolid, mis on ekvivalentsed sümboliga SÜMBOL\n"
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"Tõlgitakse juhul, kui võtit -d ei kasutata ja HULK1 ja HULK2 on määratud.\n"
+"-t saab kasutada ainult tõlkimisel. HULK2 laiendatakse HULK1 pikkuseni\n"
+"korrates vajadusel viimast sümbolit. "
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"Liigsed sümbolid hulgast 2 ignoreeritakse.\n"
+"Ainult [:lower:] ja [:upper:] puhul on tagatud laiendamine kasvavalt;\n"
+"kui kasutatakse tõlkimisel hulgas 2, võib neid suur- ja väiketähtedeks\n"
+"tteisendamisek kasutada ainult paaris. "
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"Kui ei tõlgita ega kustutata\n"
+"kasutab -s HULK1; muidu kasutatakse tihendamiseks HULK2 ja tihendamine\n"
+"toimub peale tõlkimist või kustutamist.\n"
+
+#: src/tr.c:519
+#, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"hoiatus: segast kaheksand paojada \\%c%c%c interpreteeritakse\n"
+"\t2-baidise järjendina \\0%c%c, %c"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "vahemiku otsad `%s-%s' on tagurpidi järjestuses"
+
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "vigane korduste arv %s [c*n] konstruktsioonis"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "puudub sümbolite klassi nimi `[::]'"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "puudub ekvivalentsiklassi sümbol `[==]'"
+
+#: src/tr.c:937
+#, c-format
+msgid "invalid character class %s"
+msgstr "vigane sümbolite klass %s"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: ekvivalentsiklassi operand peab olema yks sümbol"
+
+#: src/tr.c:1275
+#, c-format
+msgid "too many characters in set"
+msgstr "hulgas on liiga palju sümboleid"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "kordamise konstruktsiooni [c*] ei saa kasutada sõnes1"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "sõnes2 saab kasutada ainult ühte kordamise konstruktsiooni [c*]"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "tõlkimisel ei saa sõnes2 [=c=] avaldisi kasutada"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "kui hulka1 ei lühendata, peab sõne2 olema mittetühi"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"kui tõlkida kasutades täiendatud sümbolklasse,\n"
+"peab sõne2 seostama kõik doomeni sümbolid ühe sümboliga"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"tõlkimisel saab sõne2 sees kasutada sümbolklassidena ainult klasse\n"
+"`upper' ja `lower'"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "[c*] konstruktsioon võib olla sõne2 sees ainult tõlkimisel"
+
+#: src/tr.c:1731
+msgid "Two strings must be given when translating."
+msgstr "Tõlkimisel tuleb näidata kaks sõne."
+
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"Kui kordusi kustutatakse tühjendamiseta, peab olema antud ainult üks sõne."
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "joondamata [:upper:] ja/või [:lower:] konstruktsioonid"
+
+#: src/true.c:42
+#, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kasutamine: %s NIMI [ignoreeritavad argumendid]\n"
+" või: %s VÕTI\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr "Lõpeta koodiga, mis tähistab õnnestumist."
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Kasutamine: %s [VÕTI] [FAIL]\n"
+"Väljasta FAIL totaalses järjestuses kooskõlas elementide osalise "
+"järjestusega.\n"
+"Kui FAIL puudub või on -, loe standardsisendit.\n"
+"\n"
+
+#: src/tsort.c:474
+#, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: sisend sisaldab juhusliku arvu märke"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: sisend sisaldab tsüklit:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Kasutamine: %s [VÕTI]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Väljasta standardsisendiga ühendatud terminali nimi.\n"
+"\n"
+" -s, --silent, --quiet ära väljasta midagi, tagasta ainult lõpetamise "
+"olek\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "pole terminal"
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Väljasta informatsiooni süsteemist. Kui võtmeid ei ole antud, kasutab -s.\n"
+"\n"
+" -a, --all kogu info järgnevas järjestuses, välja arvatud\n"
+" -p ja -i, kui on tundmatud:\n"
+" -s, --kernel-name väljasta tuuma nimi\n"
+" -n, --nodename väljasta masina võrgunimi\n"
+" -r, --release väljasta tuuma väljalase\n"
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v, --kernel-version väljasta tuuma versioon\n"
+" -m, --machine väljasta masina (riistvara) tüüp\n"
+" -p, --processor väljasta arvuti protsessori tüüp või \"unknown\"\n"
+" -i, --hardware-platform väljasta riistvara platvorm või \"unknown\"\n"
+" -o, --operating-system väljasta operatsioonisüsteemi nimi\n"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "ei õnnestu leida süsteemi nime"
+
+#: src/unexpand.c:125
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Teisenda igas FAILis tühikud tabulaatoriteks, väljasta standardväljundisse.\n"
+"Kui FAIL puudub, või on -, loe standardsisendit.\n"
+"\n"
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all teisenda kõik tühemikud, mitte ainult esimene\n"
+" --first-only teisenda ainult eesmised tühemikud (blokeerib -a)\n"
+" -t, --tabs=NUMBER tabulaatori laius 8 asemel NUMBER sümbolit (lubab -a)\n"
+" -t, --tabs=LOEND komadega eraldatud tabulaatori positsioonid (lubab -"
+"a)\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr "tabulaatorid on liiga kaugel"
+
+#: src/unexpand.c:512
+#, c-format
+msgid "tab stop value is too large"
+msgstr "tabulaatori peatus on liiga suur"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Kasutamine: %s [VÕTI]... [SISEND [VÄLJUND]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"Jäta SISENDIST (või standardsisendist) kordused väljastamata, väljasta\n"
+"VÄLJUNDISSE (või standardväljundisse).\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count lisa rea algusse esinemise number\n"
+" -d, --repeated väljasta ainult dubleeritud read\n"
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated[=eraldaja-meetod] väljasta kõik duplikaat read\n"
+" eraldaja-meetod={none(vaikimisi),prepend,separate}\n"
+" Eraldatatakse tühjade ridadega.\n"
+" -f, --skip-fields=N ära võrdle esimest N välja\n"
+" -i, --ignore-case võrdle tõstutundetult\n"
+" -s, --skip-chars=N ära võrdle esimest N sümbolit\n"
+" -u, --unique väljasta ainult dubleerimata read\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr " -w, --check-chars=N ära võrdle real enam kui N sümbolit\n"
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"Väli on komplekt tühimikke, millele järgnevad mittetühimik sümbolid.\n"
+"Väljad jäetakse vahele enne sümboleid.\n"
+
+#: src/uniq.c:350
+#, c-format
+msgid "too many repeated lines"
+msgstr "liiga palju korduvaid ridu"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "vigane vahelejäetavate väljade arv"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "vigane vahelejäetavate baitide arv"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "vigane võrreldavate baitide arv"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr "kõikide duplikaat ridade ja korduste arvu ei saa korraga väljastada"
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kasutamine: %s FAIL\n"
+" või: %s VÕTI\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"Kasutan antud FAILI kustutamiseks unlink funktsiooni.\n"
+"\n"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "%s ei saa kustutada"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "ei õnnestu lugeda alglaadimise aega"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s püsti "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "am"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "pm"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr " ??:???? püsti "
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr "???? päeva ??:??, "
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%ld päev"
+msgstr[1] "%ld päeva"
+
+#: src/uptime.c:147
+#, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%lu kasutaja"
+msgstr[1] "%lu kasutajat"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", tööjärjekorra koormus: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Kasutamine: %s [VÕTI]... [ FAIL ]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Väljasta praegune aeg, süsteemi töötamise aeg, kasutajate arv süsteemis,\n"
+"ja tööjärjekorra koormus viimase 1, 5 ja 15 minuti vältel.\n"
+"Kui FAILi ei ole määratud, kasuta %s. Tavaliselt kasutatakse %s.\n"
+"\n"
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Väljasta kasutajad, kes on parasjagu arvutisse meldinud.\n"
+"Kui FAILi ei ole määratud, kasuta %s. Tavaliselt kasutatakse %s.\n"
+"\n"
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Väljasta iga FAILi baitide, sõnade ja ridade arv ning kui faile oli antud\n"
+"enam kui üks, siis ka kõikide summa. Kui fail puudub või on -, loe\n"
+"standardsisendit.\n"
+" -c, --bytes väljasta baitide arv\n"
+" -m, --chars väljasta sümbolite arv\n"
+" -l, --lines väljasta ridade arv\n"
+
+#: src/wc.c:121
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" --files0-from=F loe sisend failidest, mille NUL-sümboliga "
+"lõpetatud\n"
+" nimed on failis F\n"
+" -L, --max-line-length väljasta pikima rea pikkus\n"
+" -w, --words väljasta sõnade arv\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+"kui failide nimesid loetakse standardsisendist, pole failide nimed %s lubatud"
+
+#: src/who.c:212
+msgid " old "
+msgstr " vana "
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "term="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "exit="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "kell muutus"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "töö-olek"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "viimane="
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"kasutajaid=%lu\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "NIMI"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "TERMINAL"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "AEG"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr "EEMAL"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "KOMMENTAAR"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "LÕPETAMINE"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Kasutamine: %s [VÕTI]... [ FAIL | ARG1 ARG2 ]\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" -a, --all sama, kui -b -d --login -p -r -t -T -u\n"
+" -b, --boot viimase alglaadimise aeg\n"
+" -d, --dead esita surnud protsessid\n"
+" -H, --heading esita veergude päised\n"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr " -l, --login väljasta süsteemi meldimise protsessid\n"
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+" --lookup ürita lahendada masinate nimesid DNS abil\n"
+" -m ainult standardsisendiga seotud masin ja kasutaja\n"
+" -p, --process väljasta init poolt loodud aktiivsed protsessid\n"
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+" -q, --count kõik kasutajanimed ja süsteemi meldinud kasutajate arv\n"
+" -r, --runlevel väljasta jooksev töö-tase\n"
+" -s, --short väljasta ainult nimi, tyerminal ja aeg (vaikimisi)\n"
+" -t, --time väljasta viimane süsteemi kella muutus\n"
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+" -T, -w, --mesg lisa kasutaja teadete olek kujul +, - või ?\n"
+" -u, --users väljasta süsteemi meldinud kasutajad\n"
+" --message sama, kui -T\n"
+" --writable sama, kui -T\n"
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"Kui FAILi ei antud, kasuta %s. %s on sel puhul tavaline.\n"
+"Kui antakse ARG1 ARG2, eeldatakse võtit -m: tavaline on `am i' või\n"
+"`mom likes'.\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr "Hoiatus: -i eemaldatakse tulevikus; kasutage selle asemel -u"
+
+#: src/whoami.c:51
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Väljasta efektiivsele kasutajaidentifikaatorile vastav kasutajanimi.\n"
+"Sama, kui id -un.\n"
+"\n"
+
+#: src/whoami.c:95
+#, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: ei leia UID %lu vastavat kasutajanime\n"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kasutamine: %s [SÕNE]...\n"
+" või: %s VÕTI\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"Väljasta korduvalt rida antud sõnedega või `y'.\n"
+"\n"
+
+#~ msgid "strip failed"
+#~ msgstr "strip ebaõnnestus"
+
+#~ msgid "-R -h requires -P"
+#~ msgstr "-R -h nõuab -P"
+
+#~ msgid "value %s is so large that it is not representable"
+#~ msgstr "väärtus %s on nii suur, et seda ei saa esitada"
+
+#~ msgid "%s: count `%.*s' too large"
+#~ msgstr "%s: loendur `%.*s' on liiga suur"
diff --git a/po/eu.gmo b/po/eu.gmo
new file mode 100644
index 0000000..7bc0b40
--- /dev/null
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
new file mode 100644
index 0000000..e5f6f63
--- /dev/null
+++ b/po/eu.po
@@ -0,0 +1,9851 @@
+# translation of coreutils-5.2.1.po to Euskara
+# Basque translation of 5.2.1.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# This file is distributed under the same license as the Coreutils-5.2.1 package.
+# Mikel Olasagasti <hey_neken@mundurat.net>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils-5.2.1\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2005-01-04 20:27+0100\n"
+"Last-Translator: Mikel Olasagasti <hey_neken@mundurat.net>\n"
+"Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "baimenak errepikatu arte"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, fuzzy, c-format
+msgid "setting permissions for %s"
+msgstr "baimenak errepikatu arte"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "%s baliogabeko argumentua da %s-(r)entzat"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "%s argumentu anbiguoa da %s-(r)entzat"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Baliozko argumentuak hauek dira:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "idazketa errorea"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Sistema-errore ezezaguna"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr ""
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "fitxategi erregular hutsa"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "Espresio erregularra"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "direktorioa"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr ""
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr ""
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "fifo"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "esteka sinbolikoa"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "socket-a"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "Bidali ilara"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "semaforoa"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "memoria partekatuaren objektua"
+
+#: lib/file-type.c:69
+#, fuzzy
+msgid "typed memory object"
+msgstr "memoria partekatuaren objektua"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "fitxategi arraroa"
+
+#: lib/gai_strerror.c:44
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "fifo fitxategiek ez dute euskarririk"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "fifo fitxategiek ez dute euskarririk"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr ""
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "fifo fitxategiek ez dute euskarririk"
+
+#: lib/gai_strerror.c:54
+#, fuzzy
+msgid "System error"
+msgstr "idazketa errorea"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+#, fuzzy
+msgid "Unknown error"
+msgstr "Sistema-errore ezezaguna"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: '%s' aukera anbiguoa da\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: '--%s' aukerak ez du argumenturik onartzen\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: '%c%s' aukerak ez du argumenturik onartzen\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: '%s' aukerak argumentu bat behar du\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: '--%s' aukera ezezaguna\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: '%c%s' aukera ezezaguna\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: -- %c aukera ilegala\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: -- %c aukera baliogabea\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: aukerak --%c argumentu bat behar du\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: '-W %s' aukera anbiguoa da\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: '-W.%s' aukerak ez du argumenturik onartzen\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "bloke tamainua"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "ezin da %s-(r)en baimenak aldatu"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "ezin da %s direktorioa sortu"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "memoria agortuta"
+
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr "Inprimatu Fitxategi-izena - e e"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "'"
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "%s: fitxategi moeta baliogabea"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "baliogabea"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "baliogabea"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "memoria agortuta"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "baliogabea"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "in bilatu"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "baliogabea"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "in bilatu"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr ""
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr "arriskutsua da errekurtsiboki erabiltzea %s-n (%s-(r)en berdina"
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr "erabili --no-preserve-root segurtasun neurri hau ekiditeko"
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[bB]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[eE]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr ""
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr ""
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "karakterea barrutitik kanpora"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr ""
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr ""
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "baliogabeko erabiltzailea"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "baliogabeko taldea"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "baliogabeko erabiltzailea"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+#, fuzzy
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"programa da eta edo - Orokorra Publikoa Lizentzia bider Libre Softwarea edo "
+"e e"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "%s-k idatzia.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "%s-k eta %s-k idatzia.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "%s, %s eta %s-k idatzia.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"%s, %s, %s,\n"
+"eta %s-k idatzia.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"%s, %s, %s,\n"
+"%s eta %s-k idatzia.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"%s, %s, %s,\n"
+"%s, %s eta %s-k idatzia.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"%s, %s, %s,\n"
+"%s, %s, %s, eta %s-k idatzia.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"%s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"eta %s-k idatzia.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"%s, %s, %s,\n"
+"%s, %s, %s, %s,%s, eta %s-k idatzia.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"%s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s,·eta beste batzuk idatzia.\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "baliogabeko argumentua: %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "kate konparaketak huts egin du"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Ezarri LC_ALL='C' arazo hau une batez konpontzeko"
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "Alderatutako bi kateak %s eta %s izan dira."
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "kate konparaketak huts egin du"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "baliogabea"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "baliogabea"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s luzeegia da"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Saiatu `%s --help' erabiltzen informazio gehiagorako.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr " --version bertsioari buruzko informazioa atera eta irten\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+#, fuzzy
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr "ez FITXATEGIA edo FITXATEGIA da e"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Programa-erroreen berri emateko idatzi hona: <%s>.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "irakurketa errorea"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "baliogabeko erabiltzailea"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "baliogabea tamaina"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, fuzzy, c-format
+msgid "extra operand %s"
+msgstr "`%s' eragigai extra"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "sarrera estandarra itxitzen"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Erabilera: %s IZENA [ATZIZKIA]\n"
+" edo: %s AUKERA\n"
+
+#: src/basename.c:59
+#, fuzzy
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr "Inprimatu IZENA honekin edozein a e e"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, c-format
+msgid "missing operand"
+msgstr ""
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Erabilera: %s [AUKERA] [FITXATEGIA]...\n"
+
+#: src/cat.c:99
+#, fuzzy
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"FITXATEGIA edo e\n"
+" A\n"
+" lerroz behin\n"
+"\n"
+" E -\n"
+" e lerroz behin\n"
+" e"
+
+#: src/cat.c:109
+#, fuzzy
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+"\n"
+" jn.\n"
+" enoratua\n"
+" erabili eta M errepikatu arte eta e"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+#: src/cat.c:333
+#, fuzzy, c-format
+msgid "cannot do ioctl on %s"
+msgstr "aktibatuta"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "irteera estandarra"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: sarrera fitxategia irteera fitxategia da"
+
+#: src/chgrp.c:95 src/install.c:611
+#, fuzzy, c-format
+msgid "invalid group %s"
+msgstr "baliogabea taldea"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Erabilera: %s [AUKERA]... TALDE FITXATEGIA...\n"
+" edo: %s [AUKERA]... -- reference=R-FITXATEGIA FITXATEGIA...\n"
+
+#: src/chgrp.c:117
+#, fuzzy
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Aldatu taldea - FITXATEGIA taldea - FITXATEGIA - e\n"
+" a da\n"
+" - lotura\n"
+" lotura bere gainera e"
+
+#: src/chgrp.c:125 src/chown.c:106
+#, fuzzy
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+"h ez lotura horren ordez - edozein\n"
+" aktibatuta\n"
+" - a e"
+
+#: src/chgrp.c:130 src/chown.c:118
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+"ez lehenetsia\n"
+" aktibatuta e"
+
+#: src/chgrp.c:134
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+"\n"
+" erabili taldea\n"
+" balioa\n"
+" G aktibatuta eta\n"
+" a errepikatu arte e e"
+
+#: src/chgrp.c:142 src/chown.c:130
+#, fuzzy
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+"a da G da Baldintzak da bat ere ez e\n"
+" T a da a lotura\n"
+" a\n"
+" lotura a\n"
+"\n"
+" edozein lehenetsia e e"
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr ""
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, fuzzy, c-format
+msgid "missing operand after %s"
+msgstr "baimenak errepikatu arte"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, fuzzy, c-format
+msgid "failed to get attributes of %s"
+msgstr "-"
+
+#: src/chmod.c:128
+#, fuzzy, c-format
+msgid "getting new attributes of %s"
+msgstr "berria -"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, fuzzy, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "lotura e"
+
+#: src/chmod.c:160
+#, fuzzy, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "modua - e"
+
+#: src/chmod.c:163
+#, fuzzy, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "modua - e"
+
+#: src/chmod.c:166
+#, fuzzy, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "modua - e"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "ezin da %s-ra sartu"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr ""
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "%s-ren baimenak aldatzen"
+
+#: src/chmod.c:286
+#, fuzzy, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "baimenak errepikatu arte"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr ""
+
+#: src/chmod.c:345
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"FITXATEGIA\n"
+" edo FITXATEGIA\n"
+" edo FITXATEGIA e"
+
+#: src/chmod.c:351
+#, fuzzy
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+"Aldatu modua - FITXATEGIA e\n"
+" a da e"
+
+#: src/chmod.c:356
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+"ez lehenetsia\n"
+" aktibatuta e"
+
+#: src/chmod.c:360
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+"\n"
+" a errepikatu arte\n"
+" erabili modua horren ordez -\n"
+" G eta e"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr ""
+
+#: src/chmod.c:510
+#, fuzzy, c-format
+msgid "invalid mode: %s"
+msgstr "baliogabea modua"
+
+#: src/chown-core.c:147
+#, fuzzy, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "- e"
+
+#: src/chown-core.c:148
+#, fuzzy, c-format
+msgid "changed group of %s to %s\n"
+msgstr "taldea - e"
+
+#: src/chown-core.c:149
+#, fuzzy, c-format
+msgid "no change to ownership of %s\n"
+msgstr "ezin da aldatu %s-(r)en jabegoa"
+
+#: src/chown-core.c:152
+#, fuzzy, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "- e"
+
+#: src/chown-core.c:153
+#, fuzzy, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "taldea - e"
+
+#: src/chown-core.c:154
+#, fuzzy, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "- e"
+
+#: src/chown-core.c:157
+#, fuzzy, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "- e"
+
+#: src/chown-core.c:158
+#, fuzzy, c-format
+msgid "group of %s retained as %s\n"
+msgstr "taldea - e"
+
+#: src/chown-core.c:159
+#, fuzzy, c-format
+msgid "ownership of %s retained\n"
+msgstr "- e"
+
+#: src/chown-core.c:344
+#, fuzzy, c-format
+msgid "cannot dereference %s"
+msgstr "ezin da %s kendu"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "%s-ren jabetza aldatzen"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "%s-ren taldea aldatzen"
+
+#: src/chown.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Erabilera: %s [AUKERA]... TALDE FITXATEGIA...\n"
+" edo: %s [AUKERA]... -- reference=R-FITXATEGIA FITXATEGIA...\n"
+
+#: src/chown.c:98
+#, fuzzy
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Aldatu jabea eta edo taldea - FITXATEGIA JABEA eta edo jabea eta taldea - "
+"FITXATEGIA - e\n"
+" a da\n"
+" - lotura\n"
+" lotura bere gainera e"
+
+#: src/chown.c:111
+#, fuzzy
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+"JABEA\n"
+" jabea eta edo taldea -\n"
+" jabea eta edo taldea\n"
+" maiatzak in a\n"
+" da errepikatu arte e"
+
+#: src/chown.c:122
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+"\n"
+" erabili jabea eta taldea\n"
+" JABEA\n"
+" G aktibatuta eta\n"
+" a errepikatu arte e e"
+
+#: src/chown.c:144
+#, fuzzy
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr "da Taldea da taldea bider a JABEA eta maiatzak e"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"KOMANDOA\n"
+" edo e"
+
+#: src/chroot.c:50
+#, fuzzy
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr "Exekutatu KOMANDOA honekin e e"
+
+#: src/chroot.c:56
+#, fuzzy
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr "ez da lehenetsia e"
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr ""
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr ""
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "ezin da %s komandoa exekutatu"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s fitxategia luzeegia da"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Erabilera: %s [FITXATEGIA]...\n"
+" edo: %s [AUKERA]\n"
+
+#: src/cksum.c:270
+#, fuzzy
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr "Inprimatu eta - FITXATEGIA e e"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Erabilera: %s [AUKERA]... 1FITXATEGIA 2FITXATEGIA\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr ""
+"Ordenatutako 1FITXATEGIA eta 2FITXATEGIA alderatzen ditu lerroz lerro.\n"
+
+#: src/comm.c:80
+#, fuzzy
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+"ez hirukoa Zutabea hau daukana esklusiboa bikoa hau daukana lerroz behin "
+"esklusiboa hirukoa hau daukana lerroz behin e"
+
+#: src/comm.c:86
+#, fuzzy
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"\n"
+" lerroz behin esklusiboa\n"
+" lerroz behin esklusiboa\n"
+" lerroz behin in e"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, fuzzy, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "errepikatu arte"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr ""
+
+#: src/copy.c:227
+#, fuzzy, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "errepikatu arte"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, fuzzy, c-format
+msgid "cannot open %s for reading"
+msgstr "errepikatu arte"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr ""
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr ""
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "ezin da %s kendu"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, fuzzy, c-format
+msgid "removed %s\n"
+msgstr "e"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr ""
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "%s irakurtzen"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr ""
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "%s idazten"
+
+#: src/copy.c:523 src/copy.c:1823
+#, fuzzy, c-format
+msgid "preserving times for %s"
+msgstr "errepikatu arte"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "%s itxitzen"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "modua "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: %s gainidatzi?"
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr ""
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr ""
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr ""
+
+#: src/copy.c:1093 src/ln.c:209
+#, fuzzy, c-format
+msgid "%s and %s are the same file"
+msgstr "eta"
+
+#: src/copy.c:1149
+#, fuzzy, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "honekin"
+
+#: src/copy.c:1167
+#, fuzzy, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "honekin"
+
+#: src/copy.c:1185
+#, fuzzy, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "honekin"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr ""
+
+#: src/copy.c:1253
+#, fuzzy, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "gora"
+
+#: src/copy.c:1254
+#, fuzzy, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "gora"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr ""
+
+#: src/copy.c:1372
+#, fuzzy, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "kopiatu a bere gainera"
+
+#: src/copy.c:1389
+#, fuzzy, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "lotura"
+
+#: src/copy.c:1414
+#, fuzzy, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "lotura"
+
+#: src/copy.c:1459
+#, fuzzy, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "a - bere gainera"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "ezin izan da %s %s-(r)a mugitu"
+
+#: src/copy.c:1514
+#, fuzzy, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr "gailua"
+
+#: src/copy.c:1553
+#, fuzzy, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "kopiatu lotura"
+
+#: src/copy.c:1654
+#, fuzzy, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr "erlatiboa in"
+
+#: src/copy.c:1661
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "lotura"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "ezin da %s esteka sortu"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr ""
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr ""
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, fuzzy, c-format
+msgid "cannot read symbolic link %s"
+msgstr "lotura"
+
+#: src/copy.c:1759
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s"
+msgstr "lotura"
+
+#: src/copy.c:1790
+#, fuzzy, c-format
+msgid "%s has unknown file type"
+msgstr "ezezaguna mota"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr ""
+
+#: src/copy.c:1914
+#, fuzzy, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "e"
+
+#: src/cp.c:157 src/mv.c:284
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"ITURBURUA\n"
+" edo ITURBURUA DIREKTORIOA\n"
+" edo DIREKTORIOA ITURBURUA e"
+
+#: src/cp.c:163
+#, fuzzy
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr "Kopiatu ITURBURUA edo ITURBURUA DIREKTORIOA e e"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Beharrezkoak diren argumentuak aukera luzeetan, beharrezkoak dira aukera "
+"txikietan ere.\n"
+
+#: src/cp.c:170
+#, fuzzy
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+"a\n"
+" a -\n"
+"\n"
+" kopiatu kopiatu -\n"
+" ez lotura e"
+
+#: src/cp.c:177
+#, fuzzy
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+"ez\n"
+" behartu\n"
+" eta\n"
+" lehenago\n"
+" T e"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+#, fuzzy
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+"lotura lotura horren ordez -\n"
+"\n"
+" modua\n"
+" lehenetsia\n"
+" modua\n"
+" e"
+
+#: src/cp.c:196
+#, fuzzy
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+"ez\n"
+" bide-izena DIREKTORIOA\n"
+" ez e"
+
+#: src/cp.c:200
+#, fuzzy
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+"G kopiatu\n"
+" lehenago\n"
+" honekin behartu e"
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+"bai ez\n"
+"\n"
+" -\n"
+" edozein ITURBURUA\n"
+" e"
+
+#: src/cp.c:210
+#, fuzzy
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+"lotura horren ordez -\n"
+" S\n"
+" DIREKTORIOA ITURBURUA DIREKTORIOA e"
+
+#: src/cp.c:216
+#, fuzzy
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+"kopiatu ITURBURUA da\n"
+" edo\n"
+" da\n"
+" da eginda\n"
+" x aktibatuta uneko e"
+
+#: src/cp.c:225
+#, fuzzy
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"lehenetsia ITURBURUA bider a eta da da bider auto a ITURBURUA hau daukana a "
+"- - e e"
+
+#: src/cp.c:234
+#, fuzzy
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr "da honekin edo maiatzak edo BERTSIOA e e"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+#, fuzzy
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+"bat ere ez desaktibatuta da\n"
+"\n"
+" sinplea\n"
+" sinplea sinplea e"
+
+#: src/cp.c:246
+#, fuzzy
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr "a a - ITURBURUA behartu eta eta ITURBURUA eta errepikatu arte e"
+
+#: src/cp.c:314
+#, fuzzy, c-format
+msgid "failed to preserve times for %s"
+msgstr "errepikatu arte"
+
+#: src/cp.c:340
+#, fuzzy, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "baimenak errepikatu arte"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "ezin da %s direktorioa egin"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s badago baina ez da direktorio bat"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "%s-(r)a sartzen"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, fuzzy, c-format
+msgid "missing file operand"
+msgstr "zerrenda -"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, fuzzy, c-format
+msgid "missing destination file operand after %s"
+msgstr "errepikatu arte"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, fuzzy, c-format
+msgid "target %s is not a directory"
+msgstr "da a"
+
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "a"
+
+#: src/cp.c:967 src/mv.c:384
+#, fuzzy, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr "da erabili horren ordez"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, fuzzy, c-format
+msgid "multiple target directories specified"
+msgstr "irteera fitxategi anitz espezifikatu dira"
+
+#: src/cp.c:1030
+#, fuzzy, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "eta"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+#, fuzzy
+msgid "backup type"
+msgstr "mota"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr ""
+
+#: src/csplit.c:669 src/csplit.c:680
+#, fuzzy, c-format
+msgid "%s: line number out of range"
+msgstr "-"
+
+#: src/csplit.c:709
+#, fuzzy, c-format
+msgid "%s: %s: line number out of range"
+msgstr "-"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, fuzzy, c-format
+msgid " on repetition %s\n"
+msgstr "aktibatuta e"
+
+#: src/csplit.c:755
+#, c-format
+msgid "%s: %s: match not found"
+msgstr ""
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, fuzzy, c-format
+msgid "error in regular expression search"
+msgstr "in bilatu"
+
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "idazketa errorea `%s'-rentzat"
+
+#: src/csplit.c:1060
+#, fuzzy, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "geroago"
+
+#: src/csplit.c:1076
+#, fuzzy, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "da in"
+
+#: src/csplit.c:1086
+#, fuzzy, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "eta"
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr ""
+
+#: src/csplit.c:1130
+#, fuzzy, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "baliogabea"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: baliogabeko eredua"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr ""
+
+#: src/csplit.c:1172
+#, fuzzy, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "da"
+
+#: src/csplit.c:1178
+#, fuzzy, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "da"
+
+#: src/csplit.c:1231
+#, fuzzy, c-format
+msgid "invalid format width"
+msgstr "baliogabea zabalera"
+
+#: src/csplit.c:1252
+#, fuzzy, c-format
+msgid "invalid format precision"
+msgstr "baliogabea"
+
+#: src/csplit.c:1273
+#, fuzzy, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "in"
+
+#: src/csplit.c:1279
+#, fuzzy, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "baliogabea in"
+
+#: src/csplit.c:1282
+#, fuzzy, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "baliogabea in"
+
+#: src/csplit.c:1305
+#, fuzzy, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "in"
+
+#: src/csplit.c:1320
+#, fuzzy, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "in"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: baliogabeko zenbakia"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Erabilera: %s [AUKERA]... FITXATEGI EREDUA...\n"
+
+#: src/csplit.c:1478
+#, fuzzy
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr "Irteera - FITXATEGIA bider - e e"
+
+#: src/csplit.c:1486
+#, fuzzy, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+"erabili horren ordez -\n"
+" AURRIZKIA erabili AURRIZKIA horren ordez -\n"
+" aktibatuta e"
+
+#: src/csplit.c:1491
+#, fuzzy
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+"e erabili - horren ordez -\n"
+" -\n"
+" hutsik hutsik e"
+
+#: src/csplit.c:1498
+#, fuzzy
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr "FITXATEGIA da maiatzak e"
+
+#: src/csplit.c:1502
+#, fuzzy
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" kopiatu gora\n"
+" kopiatu gora a\n"
+" a\n"
+" -\n"
+" e da a edo bider a e"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Erabilera: %s [AUKERA]... [FITXATEGIA]...\n"
+
+#: src/cut.c:192
+#, fuzzy
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr "Inprimatu - lerroz behin FITXATEGIA e e"
+
+#: src/cut.c:199
+#, fuzzy
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+"\n"
+"\n"
+" erabili horren ordez - errepikatu arte e"
+
+#: src/cut.c:204
+#, fuzzy
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+"edozein\n"
+" hau daukana ez\n"
+" da\n"
+" e enoratua e"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+#, fuzzy
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+"lerroz behin\n"
+" KATEA erabili KATEA\n"
+" lehenetsia da erabili e"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+#, fuzzy
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"eta - edo da gora - edo bider da - e\n"
+" I I edo\n"
+" I I edo -\n"
+" I M I M edo\n"
+" M lehen M edo e ez FITXATEGIA edo FITXATEGIA da e"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+#, fuzzy
+msgid "invalid byte or field list"
+msgstr "baliogabea edo zerrenda"
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr "%s byte offset-a luzeegia da"
+
+#: src/cut.c:472
+#, fuzzy, c-format
+msgid "field number %s is too large"
+msgstr "da"
+
+#: src/cut.c:776 src/cut.c:784
+#, fuzzy
+msgid "only one type of list may be specified"
+msgstr "mota - zerrenda maiatzak"
+
+#: src/cut.c:793
+#, fuzzy
+msgid "the delimiter must be a single character"
+msgstr "a"
+
+#: src/cut.c:828
+#, fuzzy
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "a zerrenda - edo"
+
+#: src/cut.c:831
+#, fuzzy
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "maiatzak aktibatuta"
+
+#: src/cut.c:835
+#, fuzzy
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr "lerroz behin e aktibatuta"
+
+#: src/cut.c:851
+#, fuzzy
+msgid "missing list of fields"
+msgstr "zerrenda -"
+
+#: src/cut.c:853
+#, fuzzy
+msgid "missing list of positions"
+msgstr "zerrenda -"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Erabilera: %s [AUKERA]... [+FORMATUA]\n"
+" edo: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+
+#: src/date.c:143
+#, fuzzy
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+"FITXATEGIA azken - FITXATEGIA\n"
+" G\n"
+" KATEA bider KATEA\n"
+" edo Unibertsala Ordua e"
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+#, fuzzy
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"errepikatu arte segundo Unibertsala Ordua e\n"
+" a\n"
+" a Ig. Lr. e"
+
+#: src/date.c:167
+#, fuzzy
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+"A Igandea Larunbata\n"
+" hilabetea\n"
+" B hilabetea urtarrila abendua\n"
+" eta Lr. e"
+
+#: src/date.c:173
+#, fuzzy
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+"C urtea bider eta\n"
+" eguna - hilabetea\n"
+" mm dd\n"
+" eguna - hilabetea e"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+#, fuzzy
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+"h\n"
+" T ordu\n"
+" jn. ordu\n"
+" eguna - urtea e"
+
+#: src/date.c:190
+#, fuzzy
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+"ordu\n"
+" ordu\n"
+" m hilabetea\n"
+" M minutu e"
+
+#: src/date.c:196
+#, fuzzy
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+"e a\n"
+" I\n"
+" edo in\n"
+" am edo pm in\n"
+" ordu mm M\n"
+" G ordu mm\n"
+" segundo UTC a e"
+
+#: src/date.c:205
+#, fuzzy
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+"S segundo da a segundo\n"
+" a\n"
+" ordu mm\n"
+" eguna - astea Astelehena e"
+
+#: src/date.c:211
+#, fuzzy
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+"astea - urtea honekin Igandea lehen eguna - astea\n"
+" B astea - urtea honekin Astelehena lehen eguna - astea\n"
+" eguna - astea Igandea\n"
+" M astea - urtea honekin Astelehena lehen eguna - astea e"
+
+#: src/date.c:217
+#, fuzzy
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+"x mm dd\n"
+" X T M S\n"
+" b azken bikoa - urtea\n"
+" Y urtea e"
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "sarrera estandarra"
+
+#: src/date.c:297 src/date.c:517
+#, fuzzy, c-format
+msgid "invalid date %s"
+msgstr "baliogabea"
+
+#: src/date.c:408 src/date.c:442
+#, fuzzy, c-format
+msgid "multiple output formats specified"
+msgstr "irteera fitxategi anitz espezifikatu dira"
+
+#: src/date.c:420
+#, fuzzy, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "errepikatu arte"
+
+#: src/date.c:427
+#, fuzzy, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr "eta maiatzak"
+
+#: src/date.c:448
+#, fuzzy, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr "a edozein a honekin."
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "ezin da data ezarri"
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "%s ordua barrutitik kanpora dago"
+
+#: src/dd.c:404
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Erabilera: %s [KATEA]...\n"
+" or: %s AUKERA\n"
+
+#: src/dd.c:409
+#, fuzzy
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"Kopiatu a eta e\n"
+" behartu eta\n"
+" a\n"
+" zerrenda\n"
+" kopiatu\n"
+" a e"
+
+#: src/dd.c:418
+#, fuzzy
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+"FITXATEGIA FITXATEGIA horren ordez -\n"
+" a\n"
+" - FITXATEGIA FITXATEGIA horren ordez -\n"
+" hasi -\n"
+" hasi - e"
+
+#: src/dd.c:428
+#, fuzzy
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"eta maiatzak bider M MB M B eta aktibatuta errepikatu arte E Y maiatzak e e"
+
+#: src/dd.c:437
+#, fuzzy
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+"ASCII\n"
+" ASCII\n"
+" ASCII\n"
+" honekin tamaina\n"
+" in tamaina honekin\n"
+" e"
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "da a"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+"a SIGUSR1 a martxan dd - eta e\n"
+" dd -\n"
+"\n"
+" in\n"
+" e"
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr ""
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ""
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "%s sarrera fitxategia itxitzen"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "%s irteera fitxategia itxitzen"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "%s-ra idazten"
+
+#: src/dd.c:886
+#, fuzzy, c-format
+msgid "unrecognized operand %s"
+msgstr "%s: '--%s' aukera ezezaguna\n"
+
+#: src/dd.c:897
+#, fuzzy, c-format
+msgid "invalid conversion: %s"
+msgstr "baliogabea"
+
+#: src/dd.c:900
+#, fuzzy, c-format
+msgid "invalid input flag: %s"
+msgstr "baliogabea zabalera"
+
+#: src/dd.c:903
+#, fuzzy, c-format
+msgid "invalid output flag: %s"
+msgstr "baliogabea taldea"
+
+#: src/dd.c:906
+#, fuzzy, c-format
+msgid "invalid status flag: %s"
+msgstr "baliogabea"
+
+#: src/dd.c:942
+#, fuzzy, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "%s: '%c%s' aukera ezezaguna\n"
+
+#: src/dd.c:948
+#, fuzzy, c-format
+msgid "invalid number %s"
+msgstr "baliogabea"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#: src/dd.c:973
+#, fuzzy, c-format
+msgid "cannot combine block and unblock"
+msgstr "ezin dira biak, erabiltzailea eta taldea, alde batera utzi"
+
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "eta"
+
+#: src/dd.c:977
+#, fuzzy, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "honekin edo"
+
+#: src/dd.c:1123
+#, fuzzy, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"errepikatu arte\n"
+" - mota<sys/mtio.h> errepikatu arte zerrenda -"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, fuzzy, c-format
+msgid "%s: cannot seek"
+msgstr "%s: ezin da kendu"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "baliogabea zabalera horren ordez"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr ""
+
+#: src/dd.c:1376
+#, fuzzy, c-format
+msgid "setting flags for %s"
+msgstr "-"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr ""
+
+#: src/dd.c:1623
+#, fuzzy, c-format
+msgid "fsync failed for %s"
+msgstr "huts egin da %s irekitzen"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "%s irekitzen"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr ""
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "Fitx-sist. Moeta"
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "Fitxategi-sistema"
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " Inodoak IErabil ILibre IErab%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Tamai Erab Libre Era%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Tamai Erab Libre Era%%"
+
+#: src/df.c:165
+#, fuzzy, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %4s-bloke Erab Eskuragar Edukiera"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " %4s-bloke Erabil. Eskurag. Erab%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Non muntatua\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "ezin da uneko direktorioa lortu"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "ezin da %s direktoriora aldatu"
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "ezin da 'stat' egin uneko direktorioan (unekoa %s)"
+
+#: src/df.c:741
+#, fuzzy
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"FITXATEGI bakoitza dagoen fitxategi-sistemari buruzko informazioa erakutsi, "
+"edo\n"
+"lehenetsitako moduan fitxategi-sistema guztiena.\n"
+"\n"
+
+#: src/df.c:749
+#, fuzzy
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all 0 bloke dizuten fitxategi-sistemak ere erakutsi\n"
+" -B, --block-size=TAMAINUA erabili TAMAINUA-byte-eko blokeak\n"
+" -h, --human-readable gizaki-irakurgai formatuan eman tamainuak (adib., 1K "
+"234M 2G)\n"
+" -H, --si analogoa, but 1000 erabiliz potentzia bezala 1024 "
+"beharrean\n"
+
+#: src/df.c:755
+#, fuzzy
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes erakutsi inodoen erabilera blokeenaren beharrean\n"
+" -k honen berdina --block-size=1K\n"
+" -l, --local Mugatu zerrendaketa fitxategi-sistema lokaletara\n"
+" --no-sync ez deitu sync-i erabilera datuak lortu aurretik "
+"(lehenetsia)\n"
+
+#: src/df.c:761
+#, fuzzy
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability erabili POSIX irteera formatua\n"
+" --sync deitu sync-i erabilera datuak jaso aurretik\n"
+" -t, --type=MOETA mugatu fitxategi-sistema zerrendaketa MOTA "
+"moetakoetara\n"
+" -T, --print-type inprimatu fitxategi-sistema moeta\n"
+" -x, --exclude-type=MOETA mugatu fitxategi-sistema zerrendaketa MOETA "
+"moetakoa ez direnera\n"
+" -v (ignoratua)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"TAMAINUA hauetako bat izan daiteke (edo zenbaki oso bat aukeran honako batez "
+"jarraitua):\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, edo berdina hauekin G, T, P, E, "
+"Z, Y.\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, fuzzy, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr "da erabili horren ordez"
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "%s fitxategi-sistema moeta aukeratuta eta eskludituta"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Abisua:"
+
+#: src/df.c:943
+#, fuzzy, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%sezin da irakurri muntaturiko fitxategi-sistemen taula"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Erabilera: %s [AUKERA]... [FITXATEGIA]\n"
+
+#: src/dircolors.c:103
+#, fuzzy
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Irteera e -\n"
+"\n"
+" C\n"
+" e"
+
+#: src/dircolors.c:113
+#, fuzzy
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr "FITXATEGIA da koloreak erabili errepikatu arte eta a da aktibatuta - e"
+
+#: src/dircolors.c:291
+#, fuzzy, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "baliogabea segundo"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr ""
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<barneko>"
+
+#: src/dircolors.c:445
+#, fuzzy, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr "eta a"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+
+#: src/dircolors.c:478
+#, fuzzy, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "ez eta ez mota"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Erabilera: %s IZENA\n"
+" edo: %s AUKERA\n"
+
+#: src/dirname.c:53
+#, fuzzy
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr "Inprimatu IZENA honekin osagaia IZENA hau daukana ez e e"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#: src/du.c:279 src/wc.c:108
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Erabilera: %s [AUKERA]... TALDE FITXATEGIA...\n"
+" edo: %s [AUKERA]... -- reference=R-FITXATEGIA FITXATEGIA...\n"
+
+#: src/du.c:283
+#, fuzzy
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr "- FITXATEGIA errepikatu arte e e"
+
+#: src/du.c:290
+#, fuzzy
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+"a errepikatu arte\n"
+" tamaina\n"
+" tamaina da maiatzak\n"
+" in\n"
+" eta\n"
+" B tamaina TAMAINA erabili TAMAINA\n"
+" tamaina tamaina\n"
+" a\n"
+" e"
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+#, fuzzy
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+"T a\n"
+"\n"
+" h in\n"
+" h erabili -\n"
+" tamaina\n"
+" e"
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+#, fuzzy
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+"\n"
+" ez edozein uneko da lehenetsia\n"
+" honekin\n"
+" S tamaina -\n"
+" a errepikatu arte e"
+
+#: src/du.c:323
+#, fuzzy
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+"x aktibatuta\n"
+" X FITXATEGIA FITXATEGIA edozein in FITXATEGIA\n"
+"\n"
+" I errepikatu arte a edo honekin\n"
+" da I edo\n"
+" da\n"
+" e"
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "guztira"
+
+#: src/du.c:752
+#, fuzzy, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr "ABISUA erabili T - T -"
+
+#: src/du.c:780
+#, fuzzy, c-format
+msgid "invalid maximum depth %s"
+msgstr "baliogabea gehienezkoa"
+
+#: src/du.c:789
+#, fuzzy, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr "da erabili horren ordez"
+
+#: src/du.c:871
+#, fuzzy, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "eta"
+
+#: src/du.c:878
+#, fuzzy, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "da 0"
+
+#: src/du.c:884
+#, fuzzy, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "honekin"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+#: src/du.c:960 src/wc.c:662
+#, fuzzy, c-format
+msgid "cannot read file names from %s"
+msgstr "eta"
+
+#: src/du.c:1000 src/du.c:1003
+#, fuzzy
+msgid "invalid zero-length file name"
+msgstr "baliogabea taldea"
+
+#: src/echo.c:64
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "KATEA e"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+#: src/echo.c:80
+#, fuzzy
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"E eta e\n"
+" ASCII da\n"
+"\n"
+" a abisua\n"
+" e"
+
+#: src/echo.c:89
+#, fuzzy
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+"\n"
+"\n"
+"\n"
+" berria\n"
+"\n"
+"\n"
+" e"
+
+#: src/env.c:118
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "IZENA KOMANDOA e"
+
+#: src/env.c:121
+#, fuzzy
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"IZENA in eta KOMANDOA e\n"
+" ez ikusi egin hasi honekin hutsik\n"
+" IZENA e"
+
+#: src/env.c:129
+#, fuzzy
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr "Baldintzak ez KOMANDOA e"
+
+#: src/expand.c:115
+#, fuzzy
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr "Bihurtu in FITXATEGIA ez FITXATEGIA edo FITXATEGIA da e e"
+
+#: src/expand.c:123
+#, fuzzy
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+"geroago\n"
+" KOPURUA KOPURUA e"
+
+#: src/expand.c:127
+#, fuzzy
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr "erabili zerrenda - e"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, fuzzy, c-format
+msgid "tab stop is too large %s"
+msgstr "gelditu da"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, fuzzy, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "tamaina hau daukana baliogabea"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, fuzzy, c-format
+msgid "tab size cannot be 0"
+msgstr "tamaina 0"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr ""
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, fuzzy, c-format
+msgid "input line is too long"
+msgstr "Taldearen izena luzeegia"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Erabilera: %s ADIERAZPENA\n"
+" edo: %s AUKERA\n"
+
+#: src/expr.c:110
+#, fuzzy
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"balioa - ADIERAZPENA A ADIERAZPENA maiatzak e\n"
+" da e\n"
+" da edo e"
+
+#: src/expr.c:119
+#, fuzzy
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"\n"
+" da\n"
+" da edo\n"
+" da\n"
+" da\n"
+" da edo\n"
+" da e"
+
+#: src/expr.c:128
+#, fuzzy
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+"\n"
+" batuketa - eta\n"
+" - eta e"
+
+#: src/expr.c:133
+#, fuzzy, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+"\n"
+" produktua - eta\n"
+" - bider\n"
+" - bider e"
+
+#: src/expr.c:139
+#, fuzzy
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"\n"
+" KATEA - in KATEA e\n"
+" KATEA KATEA\n"
+" KATEA - KATEA\n"
+" KATEA in KATEA edozein da edo\n"
+" KATEA - KATEA e"
+
+#: src/expr.c:148
+#, fuzzy
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+"a da a\n"
+" edo e\n"
+" ADIERAZPENA balioa - ADIERAZPENA e"
+
+#: src/expr.c:154
+#, fuzzy
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr "edo errepikatu arte eta edo e eta - edo e"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "sintasi errorea"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "in bilatu"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr ""
+
+#: src/expr.c:665
+#, fuzzy, c-format
+msgid "division by zero"
+msgstr "bider"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Erabilera: %s [ZENBAKIA]...\n"
+" edo: %s AUKERA\n"
+
+#: src/factor.c:79
+#, fuzzy
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr "Inprimatu - KOPURUA e e"
+
+#: src/factor.c:85
+#, fuzzy
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+" Inprimatu - Baldintzak ez\n"
+" aktibatuta e"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s luzeegia da"
+
+#: src/factor.c:158
+#, fuzzy, c-format
+msgid "%s is not a valid positive integer"
+msgstr "da a"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Erabilera: %s [-DIGITOAK] [AUKERA]... [FITXATEGIA]...\n"
+
+#: src/fmt.c:274
+#, fuzzy
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr "paragrafoa in FITXATEGIA ez FITXATEGIA edo FITXATEGIA da e e"
+
+#: src/fmt.c:282
+#, fuzzy
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+"albo - lehen bikoa lerroz behin\n"
+" KATEA lerroz behin KATEA\n"
+" lerroz behin e"
+
+#: src/fmt.c:289
+#, fuzzy
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+"paragrafoa - lehen segundo\n"
+" bikoa geroago\n"
+" zabalera gehienezkoa zabalera lehenetsia - zutabetan e"
+
+#: src/fmt.c:358
+#, fuzzy, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr "baliogabea da da lehen erabili I horren ordez"
+
+#: src/fmt.c:400
+#, fuzzy, c-format
+msgid "invalid width: %s"
+msgstr "baliogabea zabalera"
+
+#: src/fold.c:74
+#, fuzzy
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr "Itzulbiratu lerroz behin in FITXATEGIA bider lehenetsia e e"
+
+#: src/fold.c:82
+#, fuzzy
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+"zutabetan\n"
+"\n"
+" zabalera erabili zutabetan horren ordez - e"
+
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "baliogabea - zutabetan"
+
+#: src/head.c:113
+#, fuzzy
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Inprimatu lehen lerroz behin - FITXATEGIA FITXATEGIA honekin a goiburua ez "
+"FITXATEGIA edo FITXATEGIA da e e"
+
+#: src/head.c:122
+#, fuzzy
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+"I lehen I -\n"
+" honekin azken\n"
+" I -\n"
+" e lerroz behin I lehen I lerroz behin horren ordez - lehen\n"
+" honekin azken\n"
+" I lerroz behin - e"
+
+#: src/head.c:130
+#, fuzzy
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+"\n"
+" e"
+
+#: src/head.c:136
+#, fuzzy
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr "eE maiatzak a m e"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "errorea %s irakurtzen"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "errorea %s idazten"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr ""
+
+#: src/head.c:230 src/head.c:1046
+#, fuzzy, c-format
+msgid "%s: number of bytes is too large"
+msgstr "- da"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr ""
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr ""
+
+#: src/head.c:793
+#, fuzzy, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "errepikatu arte"
+
+#: src/head.c:880
+#, fuzzy, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "da da"
+
+#: src/head.c:881
+#, fuzzy
+msgid "number of lines"
+msgstr "- lerroz behin"
+
+#: src/head.c:881
+#, fuzzy
+msgid "number of bytes"
+msgstr "-"
+
+#: src/head.c:888 src/tail.c:1483
+#, fuzzy
+msgid "invalid number of lines"
+msgstr "baliogabea - lerroz behin"
+
+#: src/head.c:889 src/tail.c:1484
+#, fuzzy
+msgid "invalid number of bytes"
+msgstr "baliogabea -"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "baliogabea"
+
+#: src/hostid.c:48
+#, fuzzy, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"\n"
+" edo in errepikatu arte e e"
+
+#: src/hostname.c:65
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"IZENA\n"
+" edo edo - e e"
+
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "ezin izan da ostalari-izen bezala `%s' ezarri"
+
+#: src/hostname.c:106
+#, fuzzy, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr "uneko"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "ezin izan da ostalari-izena zehaztu"
+
+#: src/id.c:78
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "e"
+
+#: src/id.c:79
+#, fuzzy
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Inprimatu errepikatu arte edo e\n"
+" a ez ikusi egin errepikatu arte honekin bestelakoa\n"
+" taldea taldea IDa\n"
+" B taldea\n"
+" e a horren ordez - a errepikatu arte\n"
+" IDa horren ordez - IDa honekin\n"
+" IDa e"
+
+#: src/id.c:91
+#, fuzzy
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr "edozein - e"
+
+#: src/id.c:152
+#, fuzzy, c-format
+msgid "cannot print only user and only group"
+msgstr "eta taldea"
+
+#: src/id.c:156
+#, fuzzy, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr "edo in lehenetsia"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Ez dago alako erabiltzailerik"
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "errepikatu arte IDa"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "errepikatu arte taldea IDa"
+
+#: src/id.c:271
+#, fuzzy, c-format
+msgid "cannot get supplemental group list"
+msgstr "taldea zerrenda"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " taldeak="
+
+#: src/install.c:318
+#, fuzzy, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr "maiatzak a"
+
+#: src/install.c:321
+#, fuzzy, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "maiatzak a"
+
+#: src/install.c:369 src/mkdir.c:193
+#, fuzzy, c-format
+msgid "invalid mode %s"
+msgstr "baliogabea modua"
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "ezin da aldatu %s-(r)en jabegoa"
+
+#: src/install.c:541
+#, fuzzy, c-format
+msgid "cannot set time stamps for %s"
+msgstr "errepikatu arte"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr ""
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr ""
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "%s-ra idazten"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, fuzzy, c-format
+msgid "invalid user %s"
+msgstr "baliogabea"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "%s direktorioa sortzen"
+
+#: src/install.c:651
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"ITURBURUA\n"
+" edo ITURBURUA DIREKTORIOA\n"
+" edo DIREKTORIOA ITURBURUA e"
+
+#: src/install.c:658
+#, fuzzy
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"Handiagotu lehen bikoa kopiatu ITURBURUA edo ITURBURUA DIREKTORIOA eta jabea "
+"taldea hirugarren - DIREKTORIOA e e"
+
+#: src/install.c:667
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+"a -\n"
+"\n"
+" enoratua\n"
+"\n"
+" - e"
+
+#: src/install.c:674
+#, fuzzy
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+"- azken\n"
+" kopiatu ITURBURUA in 1.\n"
+" taldea taldea horren ordez - taldea\n"
+" m modua modua in horren ordez - x\n"
+" jabea JABEA e"
+
+#: src/install.c:681
+#, fuzzy
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+"- ITURBURUA\n"
+"\n"
+" errepikatu arte 1. eta 2.\n"
+" S\n"
+" - da e"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+#, fuzzy
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr "da honekin edo maiatzak edo BERTSIOA e e"
+
+#: src/join.c:138
+#, fuzzy
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"- lerroz behin honekin a lehenetsia da lehen Noiz edo da e\n"
+" a lerroz behin\n"
+" da edo edo\n"
+" honekin e"
+
+#: src/join.c:147
+#, fuzzy
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+"ez ikusi egin ez ikusi egin in\n"
+"\n"
+"\n"
+" erabili eta bereizlea e"
+
+#: src/join.c:153
+#, fuzzy
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+"a lerroz behin\n"
+" aktibatuta uneko -\n"
+" aktibatuta uneko - e"
+
+#: src/join.c:160
+#, fuzzy
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"da eta enoratua bider da a da edo edo edo Lehenetsia bider e eta aktibatuta e"
+
+#: src/join.c:617 src/join.c:812
+#, fuzzy, c-format
+msgid "invalid field number: %s"
+msgstr "baliogabea"
+
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "baliogabea"
+
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "baliogabea in"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr "tabulazioa hutsa"
+
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "baliogabea"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr ""
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr ""
+
+#: src/kill.c:90
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"PID\n"
+" edo\n"
+" edo e"
+
+#: src/kill.c:96
+#, fuzzy
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr "Bidali edo zerrenda e e"
+
+#: src/kill.c:103
+#, fuzzy
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+"\n"
+" edo -\n"
+" zerrenda zerrenda edo\n"
+" taula a taula - e"
+
+#: src/kill.c:111
+#, fuzzy
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr "maiatzak a edo a - a bider a da a taldea e"
+
+#: src/kill.c:161
+#, fuzzy, c-format
+msgid "%s: invalid signal"
+msgstr "baliogabea"
+
+#: src/kill.c:266
+#, fuzzy, c-format
+msgid "%s: invalid process id"
+msgstr "baliogabea"
+
+#: src/kill.c:320
+#, fuzzy, c-format
+msgid "invalid option -- %c"
+msgstr "baliogabea"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr ""
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "-l edo -t aukera anitz espezifikatu dira"
+
+#: src/kill.c:360
+#, fuzzy, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "honekin edo"
+
+#: src/kill.c:366
+#, fuzzy, c-format
+msgid "no process ID specified"
+msgstr "ez IDa"
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Erabilera: %s 1FITXATEGIA 2FITXATEGIA\n"
+" edo: %s AUKERA\n"
+
+#: src/link.c:53
+#, fuzzy
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr "Deitu lotura a lotura e e"
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "ezin da %s esteka sortu %s-(r)a"
+
+#: src/ln.c:155
+#, fuzzy, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr "a lotura a lotura da"
+
+#: src/ln.c:165
+#, fuzzy, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "lotura errepikatu arte"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr ""
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr ""
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "%s-tik %s-ra esteka sinbolikoa sortzen"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "%s-tik %s-ra esteka sinbolikoa sortzen"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "%s-tik %s-ra esteka gogorra sortzen"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "%s-tik %s-ra esteka gogorra sortzen"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "%s-tik %s-ra esteka gogorra sortzen"
+
+#: src/ln.c:324
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"ITURBURUA 1.\n"
+" edo ITURBURUA DIREKTORIOA 2.\n"
+" edo DIREKTORIOA 3. e"
+
+#: src/ln.c:331
+#, fuzzy
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"Sortu a lotura honekin IZENA IZENA da a lotura honekin da in Noiz segundo "
+"honekin azken a DIREKTORIOA Sortu bider lehenetsia honekin Noiz e e"
+
+#: src/ln.c:342
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+"a -\n"
+"\n"
+" lotura\n"
+" oharra\n"
+" errepikatu arte\n"
+" behartu e"
+
+#: src/ln.c:350
+#, fuzzy
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+"e ez da a a\n"
+" a\n"
+"\n"
+" horren ordez - e"
+
+#: src/ln.c:356
+#, fuzzy
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+"S\n"
+" DIREKTORIOA DIREKTORIOA in\n"
+"\n"
+" - lehenago e"
+
+#: src/ln.c:484
+#, fuzzy, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "da a"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Erabilera: %s [AUKERA]\n"
+
+#: src/logname.c:45
+#, fuzzy
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr "Inprimatu - e e"
+
+#: src/logname.c:89
+#, fuzzy, c-format
+msgid "no login name"
+msgstr "ez"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%Y %b %e"
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%b %e %H:%M"
+
+#: src/ls.c:1453
+#, fuzzy, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "baliogabea balioa - ESTILOA"
+
+#: src/ls.c:1480
+#, fuzzy, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "baliogabea zabalera in"
+
+#: src/ls.c:1510
+#, fuzzy, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr "baliogabea tamaina in"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, fuzzy, c-format
+msgid "invalid line width: %s"
+msgstr "baliogabea zabalera"
+
+#: src/ls.c:1704
+#, fuzzy, c-format
+msgid "invalid tab size: %s"
+msgstr "baliogabea tamaina"
+
+#: src/ls.c:1885
+#, fuzzy, c-format
+msgid "invalid time style format %s"
+msgstr "baliogabea"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr ""
+
+#: src/ls.c:2252
+#, fuzzy, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "balioa errepikatu arte"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "ezin da %s direktorioa ireki"
+
+#: src/ls.c:2344
+#, fuzzy, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "gailua eta -"
+
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "lotura errepikatu arte"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "%s direktorioa irakurtzen"
+
+#: src/ls.c:2410
+#, fuzzy, c-format
+msgid "closing directory %s"
+msgstr "%s direktorioa sortzen"
+
+#: src/ls.c:2918
+#, fuzzy, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "eta"
+
+#: src/ls.c:4277
+#, fuzzy
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr "Zerrenda bider lehenetsia bat ere ez - e e"
+
+#: src/ls.c:4285
+#, fuzzy
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+"a honekin\n"
+" A zerrenda eta\n"
+" egilea egilea -\n"
+" errepikatu arte e"
+
+#: src/ls.c:4291
+#, fuzzy
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+"tamaina TAMAINA erabili TAMAINA\n"
+" B ez ikusi egin zerrenda honekin\n"
+" honekin bider eta - azken\n"
+" -\n"
+" honekin eta bider\n"
+" bider e"
+
+#: src/ls.c:4299
+#, fuzzy
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+"C zerrenda bider zutabetan\n"
+" kolorea kolorea da\n"
+" maiatzak edo auto\n"
+" zerrenda horren ordez -\n"
+" eta\n"
+" errepikatu arte Emacs modua e"
+
+#: src/ls.c:4307
+#, fuzzy
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+"gaitu desgaitu\n"
+" -\n"
+" x m x\n"
+" C\n"
+" e"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+#, fuzzy
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all 0 bloke dizuten fitxategi-sistemak ere erakutsi\n"
+" -B, --block-size=TAMAINUA erabili TAMAINUA-byte-eko blokeak\n"
+" -h, --human-readable gizaki-irakurgai formatuan eman tamainuak (adib., 1K "
+"234M 2G)\n"
+" -H, --si analogoa, but 1000 erabiliz potentzia bezala 1024 "
+"beharrean\n"
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+
+#: src/ls.c:4337
+#, fuzzy
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+"honekin\n"
+" bat ere ez lehenetsia mota\n"
+" -\n"
+" jn. ez ikusi egin zerrenda\n"
+" tamaina e"
+
+#: src/ls.c:4345
+#, fuzzy
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+"erabili a\n"
+" errepikatu arte a\n"
+" lotura errepikatu arte lotura\n"
+" errepikatu arte lotura bere gainera\n"
+" m zabalera honekin a zerrenda - e"
+
+#: src/ls.c:4352
+#, fuzzy
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+"e zerrenda eta\n"
+" I\n"
+"\n"
+" zerrenda taldea\n"
+" mota - e"
+
+#: src/ls.c:4360
+#, fuzzy
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+"horren ordez -\n"
+" da lehenetsia\n"
+" programa da eta da a terminala\n"
+" in bikoitza\n"
+" erabili errepikatu arte\n"
+" e"
+
+#: src/ls.c:4368
+#, fuzzy
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+"\n"
+" G zerrenda\n"
+" tamaina tamaina - in e"
+
+#: src/ls.c:4373
+#, fuzzy
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+"S bider tamaina\n"
+" X bat ere ez tamaina S\n"
+"\n"
+" erabili\n"
+" horren ordez -\n"
+" erabili edo erabili\n"
+" e"
+
+#: src/ls.c:4382
+#, fuzzy
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+"ESTILOA ESTILOA\n"
+"\n"
+" da da\n"
+"<newline>\n"
+" eta\n"
+" ESTILOA da honekin ESTILOA\n"
+"\n"
+" bider\n"
+" horren ordez - e"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+#, fuzzy
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+"honekin bider eta\n"
+" honekin eta bider\n"
+" bider\n"
+" zerrenda in\n"
+" bider e"
+
+#: src/ls.c:4402
+#, fuzzy
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+"zabalera zabalera horren ordez - balioa\n"
+" x zerrenda bider lerroz behin horren ordez - bider zutabetan\n"
+" X bider\n"
+" zerrenda e"
+
+#: src/ls.c:4414
+#, fuzzy
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"lehenetsia kolorea da - da kolorea bat ere ez kolorea da kolorea e kolorea "
+"auto kolorea da a terminala e"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#: src/md5sum.c:150
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"FITXATEGIA\n"
+" edo FITXATEGIA edo ez FITXATEGIA edo FITXATEGIA da e"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+"\n"
+" B erabili gailua e e"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+#, fuzzy
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"bikoa\n"
+"\n"
+" lerroz behin e e"
+
+#: src/md5sum.c:187
+#, fuzzy, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"in Noiz a - uneko programa lehenetsia modua da honekin a mota errepikatu "
+"arte errepikatu arte eta errepikatu arte FITXATEGIA e"
+
+#: src/md5sum.c:459
+#, fuzzy, c-format
+msgid "%s: too many checksum lines"
+msgstr "ez lerroz behin"
+
+#: src/md5sum.c:481
+#, fuzzy, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "ez lerroz behin"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: HUTS egin du irekitzeak edo irakurtzeak\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "HUTS EGIN DA"
+
+#: src/md5sum.c:528
+#, fuzzy
+msgid "OK"
+msgstr "Ados"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: irakurketa errorea"
+
+#: src/md5sum.c:553
+#, fuzzy, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "ez lerroz behin"
+
+#: src/md5sum.c:562
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "ABISUA -"
+msgstr[1] "ABISUA -"
+
+#: src/md5sum.c:574
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "ABISUA -"
+msgstr[1] "ABISUA -"
+
+#: src/md5sum.c:640
+#, fuzzy, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr "eta testua"
+
+#: src/md5sum.c:648
+#, fuzzy, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "da"
+
+#: src/md5sum.c:655
+#, fuzzy, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "da"
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Erabilera: %s [AUKERA] DIREKTORIOA...\n"
+
+#: src/mkdir.c:60
+#, fuzzy
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr "Sortu DIREKTORIOA e e"
+
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+"m modua modua in\n"
+" ez\n"
+" a errepikatu arte e"
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "%s direktorioa sortua"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Erabilera: %s [AUKERA] IZENA...\n"
+
+#: src/mkfifo.c:55
+#, fuzzy
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr "Sortu honekin e e"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr "m modua modua in a e"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, fuzzy, c-format
+msgid "invalid mode"
+msgstr "baliogabea modua"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "IZENA MOTA e"
+
+#: src/mknod.c:57
+#, fuzzy
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr "Sortu IZENA - MOTA e e"
+
+#: src/mknod.c:69
+#, fuzzy
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+"eta MOTA da edo eta MOTA da Baldintzak edo honekin edo da honekin MOTA "
+"maiatzak e"
+
+#: src/mknod.c:76
+#, fuzzy
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+" a\n"
+" a\n"
+" a e"
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr "eta gailua"
+
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "baliogabea gailua"
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr ""
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr ""
+
+#: src/mknod.c:192
+#, fuzzy, c-format
+msgid "invalid major device number %s"
+msgstr "baliogabea gailua"
+
+#: src/mknod.c:197
+#, fuzzy, c-format
+msgid "invalid minor device number %s"
+msgstr "baliogabea gailua"
+
+#: src/mknod.c:202
+#, fuzzy, c-format
+msgid "invalid device %s %s"
+msgstr "baliogabea gailua"
+
+#: src/mknod.c:216
+#, fuzzy, c-format
+msgid "invalid device type %s"
+msgstr "baliogabea gailua mota"
+
+#: src/mv.c:290
+#, fuzzy
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr "Izena aldatu ITURBURUA edo ITURBURUA DIREKTORIOA e e"
+
+#: src/mv.c:297
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+"a -\n"
+"\n"
+" behartu lehenago\n"
+" bai\n"
+" lehenago\n"
+" e"
+
+#: src/mv.c:303
+#, fuzzy
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+"bai ez\n"
+"\n"
+" edozein ITURBURUA\n"
+"\n"
+" S e"
+
+#: src/mv.c:308
+#, fuzzy
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+"DIREKTORIOA ITURBURUA DIREKTORIOA\n"
+" ITURBURUA da\n"
+" edo\n"
+" da\n"
+" da eginda e"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Erabilera: %s [AUKERA] [KOMANDOA [ARGUMENTUA]...]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "baliogabeko argumentua: %s"
+
+#: src/nice.c:164
+#, fuzzy, c-format
+msgid "a command must be given with an adjustment"
+msgstr "a honekin"
+
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "ezin da sistemaren izena lortu"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "ezin da data ezarri"
+
+#: src/nl.c:181
+#, fuzzy
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr "Idatzi FITXATEGIA honekin ez FITXATEGIA edo FITXATEGIA da e e"
+
+#: src/nl.c:189
+#, fuzzy
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+"ESTILOA erabili ESTILOA errepikatu arte lerroz behin\n"
+" CC erabili CC errepikatu arte\n"
+" orri-oina ESTILOA erabili ESTILOA errepikatu arte orri-oina lerroz behin e"
+
+#: src/nl.c:194
+#, fuzzy
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+"h goiburua ESTILOA erabili ESTILOA errepikatu arte goiburua lerroz behin\n"
+" KOPURUA\n"
+" lerroz behin KOPURUA taldea - KOPURUA hutsik lerroz behin\n"
+" e\n"
+" ez berrezarri\n"
+" bereizlea KATEA KATEA geroago e"
+
+#: src/nl.c:202
+#, fuzzy
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+"lehen KOPURUA lehen aktibatuta\n"
+" zabalera KOPURUA erabili KOPURUA zutabetan errepikatu arte e"
+
+#: src/nl.c:208
+#, fuzzy
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr "lehenetsia CC errepikatu arte a Mota errepikatu arte ESTILOA da - e"
+
+#: src/nl.c:214
+#, fuzzy
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a lerroz behin\n"
+" lerroz behin\n"
+" e ez lerroz behin\n"
+" lerroz behin a errepikatu arte e da - e\n"
+" left ez\n"
+" right ez\n"
+" right e e"
+
+#: src/nl.c:281
+#, fuzzy, c-format
+msgid "line number overflow"
+msgstr "da"
+
+#: src/nl.c:479
+#, fuzzy, c-format
+msgid "invalid header numbering style: %s"
+msgstr "baliogabea goiburua"
+
+#: src/nl.c:487
+#, fuzzy, c-format
+msgid "invalid body numbering style: %s"
+msgstr "baliogabea"
+
+#: src/nl.c:495
+#, fuzzy, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "baliogabea orri-oina"
+
+#: src/nl.c:504
+#, fuzzy, c-format
+msgid "invalid starting line number: %s"
+msgstr "baliogabea"
+
+#: src/nl.c:513
+#, fuzzy, c-format
+msgid "invalid line number increment: %s"
+msgstr "baliogabea"
+
+#: src/nl.c:525
+#, fuzzy, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "baliogabea - lerroz behin"
+
+#: src/nl.c:539
+#, fuzzy, c-format
+msgid "invalid line number field width: %s"
+msgstr "baliogabea zabalera"
+
+#: src/nl.c:558
+#, fuzzy, c-format
+msgid "invalid line numbering format: %s"
+msgstr "baliogabea"
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Erabilera: %s KOMANDOA [ARGUMENTUA]...\n"
+" edo: %s AUKERA\n"
+
+#: src/nohup.c:63
+#, fuzzy
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr "Exekutatu KOMANDOA e e"
+
+#: src/nohup.c:117
+#, c-format
+msgid "ignoring input"
+msgstr ""
+
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr "huts egin da %s irekitzen"
+
+#: src/nohup.c:161
+#, fuzzy, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "irteera %s-ri eransten"
+
+#: src/nohup.c:179
+#, fuzzy, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr "kopiatu - aktibatuta"
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr ""
+
+#: src/od.c:307
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"FITXATEGIA\n"
+" edo FITXATEGIA e"
+
+#: src/od.c:313
+#, fuzzy
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"bider lehenetsia FITXATEGIA FITXATEGIA in ez FITXATEGIA edo FITXATEGIA da e e"
+
+#: src/od.c:320
+#, fuzzy
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr "Denak errepikatu arte e"
+
+#: src/od.c:323
+#, fuzzy
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+"A\n"
+" lehen e"
+
+#: src/od.c:327
+#, fuzzy
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+"I\n"
+" -\n"
+" MOTA edo\n"
+" erabili\n"
+" zabalera\n"
+" in e"
+
+#: src/od.c:337
+#, fuzzy
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"maiatzak\n"
+" a a\n"
+"\n"
+" ASCII edo\n"
+" e"
+
+#: src/od.c:345
+#, fuzzy
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+"\n"
+" h\n"
+"\n"
+"\n"
+"\n"
+" x e"
+
+#: src/od.c:353
+#, fuzzy
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"segundo lehen da eta a edo maiatzak errepikatu arte eta errepikatu arte "
+"bider e da gora - edo - e\n"
+" a\n"
+" ASCII edo e"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+#, fuzzy
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+"TAMAINA TAMAINA\n"
+" TAMAINA puntu TAMAINA\n"
+" TAMAINA TAMAINA\n"
+" TAMAINA TAMAINA\n"
+" x TAMAINA TAMAINA e"
+
+#: src/od.c:376
+#, fuzzy
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"da a MOTA in TAMAINA maiatzak C errepikatu arte S errepikatu arte jn. "
+"errepikatu arte edo errepikatu arte Baldintzak MOTA da TAMAINA maiatzak "
+"errepikatu arte bikoitza edo errepikatu arte bikoitza e"
+
+#: src/od.c:383
+#, fuzzy
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"da errepikatu arte errepikatu arte x errepikatu arte edo e errepikatu arte "
+"bat ere ez da honekin edo da bider bider honekin eta bider honekin m a mota "
+"a - - "
+
+#: src/od.c:391
+#, fuzzy
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr "a zabalera a lehenetsia A e"
+
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "baliogabea mota"
+
+#: src/od.c:693
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr "baliogabea mota a mota"
+
+#: src/od.c:812
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr "baliogabea mota a puntu mota"
+
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "baliogabea in mota"
+
+#: src/od.c:1096
+#, fuzzy, c-format
+msgid "cannot skip past end of combined input"
+msgstr "-"
+
+#: src/od.c:1644
+#, fuzzy, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr "baliogabea"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr ""
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr ""
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "gutxieneko kate luzeera"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "zabalera espezifikazioa"
+
+#: src/od.c:1769
+#, fuzzy, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "ez mota maiatzak"
+
+#: src/od.c:1844
+#, fuzzy
+msgid "Compatibility mode supports at most one file."
+msgstr "modua hirukoa"
+
+#: src/od.c:1865
+#, fuzzy, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr "da"
+
+#: src/od.c:1908
+#, fuzzy, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "baliogabea zabalera horren ordez"
+
+#: src/od.c:1924
+#, fuzzy, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "zabalera e"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "sarrera estandarra itxita dago"
+
+#: src/paste.c:421
+#, fuzzy
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Idatzi lerroz behin - lerroz behin FITXATEGIA bider ez FITXATEGIA edo "
+"FITXATEGIA da e e"
+
+#: src/paste.c:430
+#, fuzzy
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+"horren ordez -\n"
+" seriekoa itsatsi a horren ordez - in e"
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Erabilera: %s [AUKERA]... IZENA...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "baliogabea in modua"
+
+#: src/pathchk.c:282
+#, fuzzy, c-format
+msgid "empty file name"
+msgstr "fitxategi erregular hutsa"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, fuzzy, c-format
+msgid "Login name: "
+msgstr "Saio-hasiera "
+
+#: src/pinky.c:330
+#, fuzzy, c-format
+msgid "In real life: "
+msgstr "Handiagotu "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Direktorioa:"
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Shell-a:"
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Proiektua: "
+
+#: src/pinky.c:402
+#, fuzzy, c-format
+msgid "Plan:\n"
+msgstr "e"
+
+#: src/pinky.c:421
+#, fuzzy
+msgid "Login"
+msgstr "Saio-hasiera"
+
+#: src/pinky.c:423
+#, fuzzy
+msgid "Name"
+msgstr "Izena"
+
+#: src/pinky.c:424
+#, fuzzy
+msgid " TTY"
+msgstr "Teletipoa"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "alfer-denbora"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Noiz"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Non"
+
+#: src/pinky.c:510
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "e"
+
+#: src/pinky.c:511
+#, fuzzy
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"\n"
+" errepikatu arte\n"
+" eta in\n"
+" h in\n"
+" in\n"
+" uneko da lehenetsia e"
+
+#: src/pinky.c:519
+#, fuzzy
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+"- goiburuak in\n"
+" in\n"
+" eta urrunekoa in\n"
+" urrunekoa eta\n"
+" in e"
+
+#: src/pinky.c:528
+#, fuzzy, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr "programa e"
+
+#: src/pinky.c:612
+#, fuzzy, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr "ez"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr ""
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr ""
+
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "baliogabea mota"
+
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "baliogabea - lerroz behin"
+
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "I KOPURUA baliogabea"
+
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "baliogabea"
+
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "baliogabea -"
+
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "M baliogabea -"
+
+#: src/pr.c:1102
+#, fuzzy, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "- zutabetan in."
+
+#: src/pr.c:1106
+#, fuzzy, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "eta in."
+
+#: src/pr.c:1202
+#, fuzzy, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "edo baliogabea in"
+
+#: src/pr.c:1312
+#, fuzzy, c-format
+msgid "page width too narrow"
+msgstr "zabalera"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2406
+#, fuzzy, c-format
+msgid "Page number overflow"
+msgstr "da"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+#, fuzzy
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr "edo FITXATEGIA errepikatu arte e e"
+
+#: src/pr.c:2779
+#, fuzzy
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+"\n"
+" gelditu honekin\n"
+" zutabetan\n"
+" zutabetan eta zutabetan behera\n"
+" a da - lerroz behin in\n"
+" zutabetan aktibatuta e"
+
+#: src/pr.c:2787
+#, fuzzy
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+"a zutabetan behera\n"
+" honekin\n"
+"\n"
+" erabili B eta\n"
+" bikoitza\n"
+" bikoitza e"
+
+#: src/pr.c:2795
+#, fuzzy
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+"\n"
+" erabili errepikatu arte goiburua\n"
+"\n"
+"\n"
+"\n"
+" erabili horren ordez -\n"
+" bider a goiburua honekin edo a goiburua\n"
+" eta e"
+
+#: src/pr.c:2805
+#, fuzzy
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+"h goiburua\n"
+" erabili a horren ordez - Fitxategi-izena in goiburua\n"
+" h a erabili h\n"
+"\n"
+" honekin\n"
+" lerroz behin lerroz behin desaktibatuta M ez\n"
+" KATEA e"
+
+#: src/pr.c:2814
+#, fuzzy
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+"\n"
+" lerroz behin\n"
+" lehenetsia - lerroz behin - testua eta honekin\n"
+" m in in\n"
+" lerroz behin lerroz behin - honekin e"
+
+#: src/pr.c:2821
+#, fuzzy
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+"e lerroz behin\n"
+" lerroz behin erabili\n"
+" lehenetsia honekin 1. -\n"
+" I KOPURUA lehen KOPURUA\n"
+" hasi honekin KOPURUA 1. - lehen\n"
+" e"
+
+#: src/pr.c:2829
+#, fuzzy
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+"\n"
+" honekin\n"
+" edo M\n"
+" ez\n"
+" a e"
+
+#: src/pr.c:2836
+#, fuzzy
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+"bereizlea\n"
+" zutabetan bider a lehenetsia errepikatu arte\n"
+" da<TAB> eta ez honekin\n"
+" desaktibatuta -\n"
+" a m da e"
+
+#: src/pr.c:2843
+#, fuzzy
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr "KATEA e"
+
+#: src/pr.c:2846
+#, fuzzy
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+"zutabetan bider KATEA\n"
+" S Lehenetsia bereizlea<TAB> honekin eta<space>\n"
+" S ez aktibatuta\n"
+" goiburua eta e"
+
+#: src/pr.c:2852
+#, fuzzy
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+"\n"
+" eta edozein\n"
+" bider in\n"
+"\n"
+" erabili\n"
+" zabalera\n"
+" zabalera errepikatu arte\n"
+" testua desaktibatuta e"
+
+#: src/pr.c:2862
+#, fuzzy
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+"M zabalera\n"
+" zabalera\n"
+" lerroz behin da ez\n"
+" honekin S edo e"
+
+#: src/pr.c:2870
+#, fuzzy
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr "e bider edo honekin ez FITXATEGIA edo da e"
+
+#: src/printenv.c:61
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"\n"
+" edo ez e e"
+
+#: src/printf.c:80
+#, fuzzy, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr "enoratua"
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Erabilera: %s FORMATUA [ARGUMENTUA]...\n"
+" edo: %s AUKERA\n"
+
+#: src/printf.c:98
+#, fuzzy
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr "Inprimatu e e"
+
+#: src/printf.c:104
+#, fuzzy
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"in C e\n"
+" bikoitza\n"
+" honekin balioa\n"
+" e"
+
+#: src/printf.c:112
+#, fuzzy
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+"a abisua\n"
+"\n"
+" ez\n"
+" e"
+
+#: src/printf.c:118
+#, fuzzy
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+"\n"
+" berria\n"
+"\n"
+"\n"
+" e"
+
+#: src/printf.c:124
+#, fuzzy
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+"honekin balioa e\n"
+" honekin balioa\n"
+" honekin balioa e"
+
+#: src/printf.c:129
+#, fuzzy
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+"a\n"
+" a honekin\n"
+" - edo e C honekin - honekin mota lehen Aldakorra e"
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: zenbaki balioa espero zen"
+
+#: src/printf.c:156
+#, fuzzy, c-format
+msgid "%s: value not completely converted"
+msgstr "balioa"
+
+#: src/printf.c:250 src/printf.c:277
+#, fuzzy, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "in"
+
+#: src/printf.c:289
+#, fuzzy, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "baliogabea x"
+
+#: src/printf.c:550
+#, fuzzy, c-format
+msgid "invalid field width: %s"
+msgstr "baliogabea zabalera"
+
+#: src/printf.c:585
+#, fuzzy, c-format
+msgid "invalid precision: %s"
+msgstr "baliogabea"
+
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "baliogabea"
+
+#: src/printf.c:683
+#, fuzzy, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "honekin"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr "F. Pinard"
+
+#: src/ptx.c:422
+#, fuzzy, c-format
+msgid "%s (for regexp %s)"
+msgstr "errepikatu arte"
+
+#: src/ptx.c:1883
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"B\n"
+" edo B e"
+
+#: src/ptx.c:1887
+#, fuzzy
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr "Irteera a - in e e"
+
+#: src/ptx.c:1894
+#, fuzzy
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+"A auto\n"
+" C copyright-a Copyright eta\n"
+" B Sistema B\n"
+" KATEA erabili KATEA errepikatu arte e"
+
+#: src/ptx.c:1899
+#, fuzzy
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+"M KATEA erabili horren ordez -\n"
+"\n"
+" G right right in\n"
+" S errepikatu arte - lerroz behin edo -\n"
+" e"
+
+#: src/ptx.c:1906
+#, fuzzy
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+"M erabili\n"
+" FITXATEGIA in uneko FITXATEGIA\n"
+" ez ikusi egin errepikatu arte\n"
+" tamaina KOPURUA tamaina in zutabetan\n"
+" ez ikusi egin FITXATEGIA ez ikusi egin zerrenda FITXATEGIA\n"
+" FITXATEGIA zerrenda uneko FITXATEGIA e"
+
+#: src/ptx.c:1914
+#, fuzzy
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+"lehen - da a\n"
+" modua\n"
+" zabalera KOPURUA zabalera in zutabetan e"
+
+#: src/ptx.c:1921
+#, fuzzy
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr "ez FITXATEGIA edo FITXATEGIA da Estandarra Sarrera bider lehenetsia e"
+
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "baliogabea zabalera"
+
+#: src/ptx.c:2089
+#, fuzzy, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr "da erabili horren ordez"
+
+#: src/pwd.c:55
+#, fuzzy
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr "Inprimatu Fitxategi-izena - e e"
+
+#: src/pwd.c:160
+#, fuzzy, c-format
+msgid "failed to chdir to %s"
+msgstr "huts egin da %s irekitzen"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "huts egin da %s irekitzen"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr ""
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Erabilera: %s [AUKERA]... FITXATEGIA\n"
+
+#: src/readlink.c:68
+#, fuzzy
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr "Bistaratu balioa - a lotura aktibatuta e e"
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+#, fuzzy
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+"bider in\n"
+" osagaia - bide-izena\n"
+" e ez\n"
+"\n"
+"\n"
+" e"
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "ezin da %s direktorioa ireki"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "ezin da %s direktorioa ireki"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "ezin da %s direktorioa sortu"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, fuzzy, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"ABISUA a da -\n"
+" e"
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr ""
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr ""
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr ""
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr ""
+
+#: src/remove.c:925 src/remove.c:1429
+#, fuzzy, c-format
+msgid "removed directory: %s\n"
+msgstr "e"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "ezin da %s direktorioa ireki"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr ""
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr ""
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "ezin da %s direktorioa sortu"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "ezin da %s kendu"
+
+#: src/remove.c:1558
+#, fuzzy, c-format
+msgid "cannot restore current working directory"
+msgstr "ezin da uneko direktorioa lortu"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Erabilera: %s [AUKERA]... FITXATEGIA...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+"ez lehenetsia\n"
+" aktibatuta\n"
+" G -\n"
+" da eginda e"
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, fuzzy, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"a honekin a errepikatu arte foo -\n"
+" foo e\n"
+" foo e"
+
+#: src/rm.c:201
+#, fuzzy
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr "erabili a da - Baldintzak e"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, c-format
+msgid "%s: remove all arguments? "
+msgstr ""
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "direktorioa kentzen, %s"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Erabilera: %s [AUKERA]... DIREKTORIOA...\n"
+
+#: src/rmdir.c:141
+#, fuzzy
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"Kendu DIREKTORIOA hutsik e\n"
+" ez ikusi egin aktibatuta hutsik\n"
+" ez ikusi egin da a\n"
+" da hutsik e"
+
+#: src/rmdir.c:148
+#, fuzzy
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+"DIREKTORIOA\n"
+" osagaia - bide-izena E a da\n"
+" a a a\n"
+" a errepikatu arte e"
+
+#: src/seq.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"\n"
+" edo\n"
+" edo e"
+
+#: src/seq.c:79
+#, fuzzy
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"Inprimatu in - e\n"
+" erabili puntu lehenetsia\n"
+" bereizlea KATEA erabili KATEA lehenetsia e\n"
+" zabalera zabalera bider honekin e"
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr "edo da da da eta puntu da da eta da da - puntu e"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, fuzzy, c-format
+msgid "invalid floating point argument: %s"
+msgstr "baliogabea puntu"
+
+#: src/seq.c:342
+#, fuzzy, c-format
+msgid "invalid format string: %s"
+msgstr "baliogabea"
+
+#: src/seq.c:364
+#, fuzzy, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr "maiatzak zabalera"
+
+#: src/setuidgid.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"KOMANDOA\n"
+" edo e"
+
+#: src/setuidgid.c:57
+#, fuzzy
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+"edozein IDa eta taldea IDa - eta KOMANDOA honekin edozein honekin UID eta "
+"GID honekin - KOMANDOA programa da bider UID e e"
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr "erabiltzile-ID ezezaguna: %s"
+
+#: src/setuidgid.c:109
+#, fuzzy, c-format
+msgid "cannot set supplemental group"
+msgstr "taldea"
+
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "taldea IDa"
+
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "IDa"
+
+#: src/shred.c:165
+#, fuzzy, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "AUKERAK FITXATEGIA e"
+
+#: src/shred.c:166
+#, fuzzy
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr "Gainidatzi FITXATEGIA in e e"
+
+#: src/shred.c:174
+#, fuzzy, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+"behartu baimenak\n"
+" e I Gainidatzi I horren ordez - lehenetsia\n"
+" tamaina I uneko M B e"
+
+#: src/shred.c:180
+#, fuzzy
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+"eta geroago\n"
+"\n"
+" x gora hurrengo\n"
+" uneko da lehenetsia errepikatu arte\n"
+" a honekin\n"
+" e"
+
+#: src/shred.c:189
+#, fuzzy
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"FITXATEGIA da lehenetsia da da aktibatuta gailua Noiz aktibatuta erabili e e"
+
+#: src/shred.c:199
+#, fuzzy
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr "Oharra aktibatuta a garrantzitsua in da uneko - aktibatuta da e e"
+
+#: src/shred.c:207
+#, fuzzy
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"edo honekin\n"
+" eta Solaris eta e e eta aktibatuta\n"
+" e e Sarea zerbitzaria e e"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+#, fuzzy
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+"in\n"
+" e e e eta urrunekoa maiatzak eta a e"
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr ""
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr ""
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr ""
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr ""
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr ""
+
+#: src/shred.c:478
+#, fuzzy, c-format
+msgid "%s: lseek failed"
+msgstr "itxierak huts egin du"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr ""
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr ""
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr ""
+
+#: src/shred.c:776
+#, c-format
+msgid "%s: fstat failed"
+msgstr ""
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: fitxategi moeta baliogabea"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: fitxategiak luzeera negatiboa dauka"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr ""
+
+#: src/shred.c:889
+#, fuzzy, c-format
+msgid "%s: fcntl failed"
+msgstr "itxierak huts egin du"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr ""
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: kentzen"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr ""
+
+#: src/shred.c:1018
+#, fuzzy, c-format
+msgid "%s: failed to remove"
+msgstr "%s fitxategia luzeegia da"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: kenduta"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, fuzzy, c-format
+msgid "%s: failed to close"
+msgstr "%s fitxategia luzeegia da"
+
+#: src/shred.c:1065
+#, fuzzy, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s fitxategia luzeegia da"
+
+#: src/shred.c:1130
+#, fuzzy, c-format
+msgid "%s: invalid number of passes"
+msgstr "baliogabea -"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "irteera fitxategi anitz espezifikatu dira"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s; fitxategi tamaina baliogabea"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"\n"
+" edo\n"
+" edo e"
+
+#: src/shuf.c:57
+#, fuzzy
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr "Inprimatu - lerroz behin FITXATEGIA e e"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "-l edo -t aukera anitz espezifikatu dira"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "baliogabea"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "baliogabea zabalera"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr "irteera fitxategi anitz espezifikatu dira"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "honekin edo"
+
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr "`%s' eragigai extra"
+
+#: src/sleep.c:47
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"KOPURUA\n"
+" edo errepikatu arte KOPURUA segundo maiatzak errepikatu arte segundo "
+"lehenetsia e m errepikatu arte minutu h errepikatu arte ordu edo errepikatu "
+"arte egun eskatu KOPURUA KOPURUA maiatzak e e"
+
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "baliogabea"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr ""
+
+#: src/sort.c:310
+#, fuzzy
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr "Idatzi - FITXATEGIA e e e"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+#, fuzzy
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+"ez ikusi egin ez ikusi egin\n"
+" eta\n"
+" ez ikusi egin e"
+
+#: src/sort.c:326
+#, fuzzy
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+"orokorra orokorra balioa\n"
+" ez ikusi egin\n"
+" M hilabetea ezezaguna\n"
+" e balioa\n"
+" - e e"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+#, fuzzy
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+"Bestelakoak e\n"
+" da\n"
+" hasi a\n"
+" m\n"
+" FITXATEGIA FITXATEGIA horren ordez -\n"
+" bider azken\n"
+" S tamaina TAMAINA erabili TAMAINA errepikatu arte e"
+
+#: src/sort.c:351
+#, fuzzy, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+"bereizlea erabili horren ordez -\n"
+" erabili errepikatu arte edo\n"
+"\n"
+" esklusiboa honekin errepikatu arte\n"
+" lehen - e"
+
+#: src/sort.c:358
+#, fuzzy
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr "lerroz behin honekin e"
+
+#: src/sort.c:363
+#, fuzzy
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"da C da eta C da edo errepikatu arte Baldintzak ez da erabili e maiatzak "
+"bider e"
+
+#: src/sort.c:373
+#, fuzzy
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"- lehenetsia eta aktibatuta errepikatu arte M B E Y e ez FITXATEGIA edo "
+"FITXATEGIA da e e ABISUA bider DENAK C e"
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "%s-ra idazten"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr ""
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "irekitzeak huts egin du"
+
+#: src/sort.c:758
+#, fuzzy
+msgid "fflush failed"
+msgstr "itxierak huts egin du"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "itxierak huts egin du"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "irekitzeak huts egin du"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr ""
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "ezin izan da abio ordua lortu"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "ezin izan da abio ordua lortu"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr ""
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "ezin da %s direktorioa sortu"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "idazketak huts egin du"
+
+#: src/sort.c:975
+#, fuzzy, c-format
+msgid "warning: cannot remove: %s"
+msgstr "ezin da %s kendu"
+
+#: src/sort.c:1092
+#, fuzzy
+msgid "sort size"
+msgstr "tamaina"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr ""
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "irakurtzeak huts egin du"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr ""
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "errore estandarra"
+
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "baliogabea"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "baliogabea hasi -"
+
+#: src/sort.c:2887
+#, fuzzy
+msgid "invalid number after `-'"
+msgstr "baliogabea geroago"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+#, fuzzy
+msgid "invalid number after `.'"
+msgstr "baliogabea geroago"
+
+#: src/sort.c:2893 src/sort.c:2988
+#, fuzzy
+msgid "stray character in field spec"
+msgstr "in"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "-l edo -t aukera anitz espezifikatu dira"
+
+#: src/sort.c:2943
+#, fuzzy
+msgid "invalid number at field start"
+msgstr "baliogabea hasi"
+
+#: src/sort.c:2947 src/sort.c:2975
+#, fuzzy
+msgid "field number is zero"
+msgstr "da"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "offset karakterea zero da"
+
+#: src/sort.c:2971
+#, fuzzy
+msgid "invalid number after `,'"
+msgstr "baliogabea geroago"
+
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "-c-rekin baimendu gabeko `%s' eragigai extra"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Erabilera: %s [AUKERA] [SARRERA [AURRIZKIA]]\n"
+
+#: src/split.c:110
+#, fuzzy
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr "Irteera finkoa tamaina - lehenetsia da x ez edo da e e"
+
+#: src/split.c:119
+#, fuzzy, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+"a I erabili - I lehenetsia\n"
+" TAMAINA TAMAINA\n"
+" C TAMAINA TAMAINA - lerroz behin\n"
+" erabili horren ordez -\n"
+" lerroz behin KOPURUA KOPURUA lerroz behin e"
+
+#: src/split.c:126
+#, fuzzy
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+"a\n"
+" lehenago da e"
+
+#: src/split.c:132
+#, fuzzy
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr "maiatzak a errepikatu arte errepikatu arte m errepikatu arte e"
+
+#: src/split.c:193
+#, fuzzy, c-format
+msgid "Output file suffixes exhausted"
+msgstr "Irteera"
+
+#: src/split.c:211
+#, fuzzy, c-format
+msgid "creating file %s\n"
+msgstr "`%s' fitxategia sortzen\n"
+
+#: src/split.c:370
+#, fuzzy, c-format
+msgid "cannot split in more than one way"
+msgstr "in"
+
+#: src/split.c:420
+#, fuzzy, c-format
+msgid "%s: invalid suffix length"
+msgstr "baliogabea"
+
+#: src/split.c:434 src/split.c:458
+#, fuzzy, c-format
+msgid "%s: invalid number of bytes"
+msgstr "baliogabea -"
+
+#: src/split.c:446
+#, fuzzy, c-format
+msgid "%s: invalid number of lines"
+msgstr "baliogabea - lerroz behin"
+
+#: src/split.c:487
+#, fuzzy, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "da"
+
+#: src/split.c:518
+#, fuzzy, c-format
+msgid "invalid number of lines: 0"
+msgstr "baliogabea - lerroz behin 0"
+
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s: '%c%s' aukera ezezaguna\n"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%%%c. direktiba baliogabea"
+
+#: src/stat.c:726
+#, fuzzy, c-format
+msgid "warning: backslash at end of format"
+msgstr "baliogabea -"
+
+#: src/stat.c:755
+#, fuzzy, c-format
+msgid "cannot read file system information for %s"
+msgstr "errepikatu arte"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Erabilera: %s [AUKERA] FITXATEGIA...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+#, fuzzy
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"errepikatu arte e\n"
+" A in\n"
+" a in\n"
+" B tamaina in - bider\n"
+" Zenbakia - B e"
+
+#: src/stat.c:857
+#, fuzzy
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+"Gailua in\n"
+" Gailua in\n"
+" Fitxategia mota\n"
+" Formaturik gabe modua in\n"
+" B Taldea - jabea\n"
+" Taldea IDa - jabea e"
+
+#: src/stat.c:865
+#, fuzzy
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+"h Zenbakia -\n"
+"\n"
+" I Aipamen gisa Fitxategia honekin lotura\n"
+" e Fitxategia\n"
+" tamaina\n"
+" Guztira tamaina in\n"
+" gailua mota in\n"
+" gailua mota in e"
+
+#: src/stat.c:875
+#, fuzzy
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+"Erabiltzailea - jabea\n"
+" Erabiltzailea IDa - jabea\n"
+" X Ordua - azken segundo\n"
+" x Ordua - azken\n"
+" Y Ordua - azken segundo\n"
+" b Ordua - azken\n"
+" Ordua - azken segundo\n"
+" Ordua - azken e e"
+
+#: src/stat.c:887
+#, fuzzy
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"errepikatu arte e\n"
+" a Libre\n"
+" Guztira in\n"
+" Guztira in\n"
+" Libre in\n"
+" Libre in e"
+
+#: src/stat.c:896
+#, fuzzy
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+"Fitxategia Sistema in\n"
+" -\n"
+" e Fitxategia\n"
+" tamaina\n"
+" Mota in\n"
+" Mota in e"
+
+#: src/stty.c:511
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"GAILUA GAILUA\n"
+" edo GAILUA GAILUA a\n"
+" edo GAILUA GAILUA e"
+
+#: src/stty.c:517
+#, fuzzy
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Inprimatu edo terminala e\n"
+" a in\n"
+" in a\n"
+" GAILUA eta erabili GAILUA horren ordez - e"
+
+#: src/stty.c:526
+#, fuzzy
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr "lehenago e"
+
+#: src/stty.c:531
+#, fuzzy
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"\n"
+" a terminala gelditu\n"
+" -\n"
+" e"
+
+#: src/stty.c:538
+#, fuzzy
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+"errepikatu arte\n"
+" azken\n"
+"\n"
+" e"
+
+#: src/stty.c:544
+#, fuzzy
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+"hurrengo\n"
+" a\n"
+"\n"
+" hasi geroago e"
+
+#: src/stty.c:550
+#, fuzzy
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+"gelditu gelditu\n"
+" a terminala gelditu\n"
+" a\n"
+" azken e"
+
+#: src/stty.c:556
+#, fuzzy
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"\n"
+" I eta I\n"
+" I terminala I zutabetan\n"
+" zutabetan I I e"
+
+#: src/stty.c:563
+#, fuzzy
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+"I I\n"
+" I erabili I\n"
+" min I honekin I gutxienekoa errepikatu arte a\n"
+" I I e"
+
+#: src/stty.c:569
+#, fuzzy
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+"errenkadatan I terminala I errenkadatan\n"
+" tamaina - errenkadatan eta zutabetan\n"
+" terminala\n"
+" I honekin - I - a segundo e"
+
+#: src/stty.c:575
+#, fuzzy
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"\n"
+" desgaitu modem\n"
+" jasota\n"
+" gaitu\n"
+" tamaina I I in e"
+
+#: src/stty.c:583
+#, fuzzy
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+"erabili bikoa gelditu honekin\n"
+" a azken\n"
+"\n"
+" in eta in\n"
+" honekin e"
+
+#: src/stty.c:590
+#, fuzzy
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"\n"
+"\n"
+"\n"
+" ez ikusi egin\n"
+" ez ikusi egin e"
+
+#: src/stty.c:598
+#, fuzzy
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+"ez ikusi egin honekin\n"
+" eta a aktibatuta a\n"
+"\n"
+" gaitu\n"
+" garbitu handia 8. - e"
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+#, fuzzy
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+"\n"
+" edozein hasi\n"
+" gaitu - hasi gelditu\n"
+" gaitu\n"
+" honekin a\n"
+" e"
+
+#: src/stty.c:616
+#, fuzzy
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"\n"
+" I in\n"
+" I in\n"
+" I in\n"
+" I in e"
+
+#: src/stty.c:624
+#, fuzzy
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+"\n"
+" erabili errepikatu arte horren ordez -\n"
+" erabili horren ordez - errepikatu arte\n"
+"\n"
+"\n"
+" a e"
+
+#: src/stty.c:632
+#, fuzzy
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+"hau ematen du in lehen\n"
+"\n"
+" I in\n"
+"\n"
+"\n"
+" I in e"
+
+#: src/stty.c:640
+#, fuzzy
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"\n"
+"\n"
+" bider eta\n"
+" bider eta e"
+
+#: src/stty.c:647
+#, fuzzy
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+"in\n"
+"\n"
+"\n"
+"\n"
+" a geroago a e"
+
+#: src/stty.c:654
+#, fuzzy
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+"\n"
+" bestelakoa\n"
+" gorantz eta\n"
+" gaitu eta\n"
+" gaitu e"
+
+#: src/stty.c:661
+#, fuzzy
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+"gaitu eta\n"
+" desgaitu geroago eta\n"
+"\n"
+" gelditu atzeko planoa terminala\n"
+" honekin honekin errepikatu arte e"
+
+#: src/stty.c:668
+#, fuzzy
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+"\n"
+"\n"
+"\n"
+" e"
+
+#: src/stty.c:675
+#, fuzzy
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+"\n"
+" eta lehenetsia\n"
+"\n"
+" e"
+
+#: src/stty.c:681
+#, fuzzy
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+"\n"
+"\n"
+"\n"
+" eta lehenetsia\n"
+" e"
+
+#: src/stty.c:688
+#, fuzzy
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+" e"
+
+#: src/stty.c:696
+#, fuzzy
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+"\n"
+"\n"
+"\n"
+"\n"
+" e"
+
+#: src/stty.c:703
+#, fuzzy
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+"\n"
+"\n"
+" min\n"
+" e"
+
+#: src/stty.c:709
+#, fuzzy
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+"\n"
+"\n"
+"\n"
+"\n"
+"\n"
+" lehenetsia e"
+
+#: src/stty.c:717
+#, fuzzy
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr "eta Handiagotu da edo in edo edo desgaitu e"
+
+#: src/stty.c:789
+#, fuzzy, c-format
+msgid "only one device may be specified"
+msgstr "gailua maiatzak"
+
+#: src/stty.c:819
+#, fuzzy, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr "errepikatu arte eta"
+
+#: src/stty.c:825
+#, fuzzy, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "maiatzak"
+
+#: src/stty.c:840
+#, fuzzy, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "berrezarri modua"
+
+#: src/stty.c:885 src/stty.c:995
+#, fuzzy, c-format
+msgid "invalid argument %s"
+msgstr "baliogabeko argumentua: %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, fuzzy, c-format
+msgid "missing argument to %s"
+msgstr "%s argumentu anbiguoa da %s-(r)entzat"
+
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "baliogabea zabalera"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr ""
+
+#: src/stty.c:1051
+#, fuzzy, c-format
+msgid "new_mode: mode\n"
+msgstr "berria modua modua e"
+
+#: src/stty.c:1392
+#, fuzzy, c-format
+msgid "%s: no size information for this device"
+msgstr "ez tamaina errepikatu arte uneko gailua"
+
+#: src/stty.c:1888
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "baliogabea"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Pasahitza:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr ""
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "ezin dira taldeak ezarri"
+
+#: src/su.c:307
+#, fuzzy, c-format
+msgid "cannot set group id"
+msgstr "taldea"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "ezin da erabiltzailearen id-a ezarri"
+
+#: src/su.c:385
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "e"
+
+#: src/su.c:386
+#, fuzzy
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Aldatu eta taldea - e\n"
+" a\n"
+" KOMANDOA a KOMANDOA honekin\n"
+" errepikatu arte edo\n"
+" m berrezarri\n"
+" m\n"
+" e"
+
+#: src/su.c:398
+#, fuzzy
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr "Baldintzak e"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "%s erabiltzaileak ez du existitzen"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "pasahitza ez da zuzena"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr ""
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr ""
+
+#: src/sum.c:63
+#, fuzzy
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Inprimatu eta errepikatu arte FITXATEGIA e\n"
+" erabili batuketa erabili\n"
+" erabili Sistema B batuketa erabili e"
+
+#: src/sync.c:46
+#, fuzzy
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr "Behartu e e"
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr ""
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help mezu hau erakutsi eta irten\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version bertsioari buruzko informazioa atera eta irten\n"
+
+#: src/tac.c:137
+#, fuzzy
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr "Idatzi FITXATEGIA azken lehen ez FITXATEGIA edo FITXATEGIA da e e"
+
+#: src/tac.c:145
+#, fuzzy
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+"lehenago bereizlea lehenago horren ordez - geroago\n"
+" bereizlea a\n"
+" bereizlea KATEA erabili KATEA bereizlea horren ordez - e"
+
+#: src/tac.c:236 src/tac.c:337
+#, c-format
+msgid "%s: seek failed"
+msgstr ""
+
+#: src/tac.c:265
+#, fuzzy, c-format
+msgid "record too large"
+msgstr "%s luzeegia da"
+
+#: src/tac.c:459
+#, fuzzy, c-format
+msgid "cannot create temporary file %s"
+msgstr "ezin da %s direktorioa sortu"
+
+#: src/tac.c:466
+#, fuzzy, c-format
+msgid "cannot open %s for writing"
+msgstr "errepikatu arte"
+
+#: src/tac.c:487 src/tac.c:494
+#, fuzzy, c-format
+msgid "%s: write error"
+msgstr "idazketa errorea"
+
+#: src/tac.c:601
+#, fuzzy, c-format
+msgid "separator cannot be empty"
+msgstr "bereizlea hutsik"
+
+#: src/tail.c:220
+#, fuzzy, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Inprimatu azken lerroz behin - FITXATEGIA FITXATEGIA honekin a goiburua ez "
+"FITXATEGIA edo FITXATEGIA da e e"
+
+#: src/tail.c:229
+#, fuzzy
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+"a da\n"
+" edo\n"
+" honekin\n"
+" I azken I e"
+
+#: src/tail.c:237
+#, fuzzy
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+"\n"
+"\n"
+" eta\n"
+"\n"
+" e"
+
+#: src/tail.c:244
+#, fuzzy, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+"e lerroz behin I azken I lerroz behin horren ordez - azken\n"
+" I\n"
+" honekin a FITXATEGIA\n"
+" tamaina geroago I lehenetsia\n"
+" edo\n"
+" uneko da - e"
+
+#: src/tail.c:256
+#, fuzzy
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+"PID honekin geroago IDa PID\n"
+"\n"
+" S honekin errepikatu arte S segundo\n"
+" lehenetsia\n"
+" e"
+
+#: src/tail.c:265
+#, fuzzy
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"lehen - I - edo lerroz behin da a honekin hasi - azken I in I maiatzak a m e "
+"e"
+
+#: src/tail.c:273
+#, fuzzy
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr "a da "
+
+#: src/tail.c:278
+#, fuzzy
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr "lehenetsia da - Erabili in bider eta bider bestelakoa programa e"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "%s itxitzen (fd=%d)"
+
+#: src/tail.c:411
+#, fuzzy, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "erlatiboa"
+
+#: src/tail.c:415
+#, fuzzy, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "erlatiboa"
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr ""
+
+#: src/tail.c:884
+#, fuzzy, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr "honekin gora aktibatuta uneko"
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr ""
+
+#: src/tail.c:913
+#, fuzzy, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "- berria"
+
+#: src/tail.c:924
+#, fuzzy, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "- berria"
+
+#: src/tail.c:1025
+#, fuzzy, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "berrezarri modua"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr ""
+
+#: src/tail.c:1090
+#, fuzzy, c-format
+msgid "no files remaining"
+msgstr "ez"
+
+#: src/tail.c:1323
+#, fuzzy, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr "- uneko mota - gora aktibatuta uneko"
+
+#: src/tail.c:1439
+#, fuzzy, c-format
+msgid "number in %s is too large"
+msgstr "da"
+
+#: src/tail.c:1511
+#, fuzzy, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr "baliogabea gehienezkoa -"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: baliogabeko PIDa"
+
+#: src/tail.c:1542
+#, fuzzy, c-format
+msgid "%s: invalid number of seconds"
+msgstr "baliogabea - segundo"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, fuzzy, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "da bider"
+
+#: src/tail.c:1570
+#, fuzzy, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr "PID enoratua PID da"
+
+#: src/tail.c:1573
+#, fuzzy, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "PID da aktibatuta uneko"
+
+#: src/tail.c:1667
+#, fuzzy, c-format
+msgid "cannot follow %s by name"
+msgstr "bider"
+
+#: src/tail.c:1673
+#, fuzzy, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr "da"
+
+#: src/tee.c:63
+#, fuzzy
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Kopiatu FITXATEGIA eta e\n"
+" a\n"
+" ez ikusi egin ez ikusi egin e"
+
+#: src/tee.c:71
+#, fuzzy
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr "ez FITXATEGIA edo FITXATEGIA da e"
+
+#: src/test.c:125
+#, fuzzy, c-format
+msgid "missing argument after %s"
+msgstr "%s argumentu anbiguoa da %s-(r)entzat"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "baliogabea"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "')' espero zen\n"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "')' espero zen, eta %s aurkitu da\n"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "e"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "e"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "-ef-k ez du -l onartzen\n"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "e"
+
+#: src/test.c:368
+#, fuzzy
+msgid "unknown binary operator"
+msgstr "operatzaile binario ezezaguna\n"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "e"
+
+#: src/test.c:694
+#, fuzzy
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"ADIERAZPENA\n"
+" edo ADIERAZPENA\n"
+" edo honekin bider ADIERAZPENA e e"
+
+#: src/test.c:701
+#, fuzzy
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"ADIERAZPENA\n"
+" edo ADIERAZPENA\n"
+" edo honekin bider ADIERAZPENA e e"
+
+#: src/test.c:707
+#, fuzzy
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr "da edo eta da - e"
+
+#: src/test.c:712
+#, fuzzy
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+"\n"
+" ADIERAZPENA ADIERAZPENA da\n"
+" ADIERAZPENA ADIERAZPENA da\n"
+" a eta\n"
+" edo da e"
+
+#: src/test.c:719
+#, fuzzy
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"\n"
+" e KATEA - KATEA da\n"
+" KATEA - KATEA da\n"
+"\n"
+" e"
+
+#: src/test.c:727
+#, fuzzy
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" da\n"
+" da edo\n"
+" da\n"
+" da edo\n"
+" da\n"
+" da e"
+
+#: src/test.c:736
+#, fuzzy
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+"\n"
+" eta gailua eta\n"
+" da\n"
+" da e"
+
+#: src/test.c:742
+#, fuzzy
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+"\n"
+" FITXATEGIA FITXATEGIA badago eta da\n"
+" FITXATEGIA FITXATEGIA badago eta da\n"
+" FITXATEGIA FITXATEGIA badago eta da a\n"
+" FITXATEGIA FITXATEGIA badago e"
+
+#: src/test.c:749
+#, fuzzy
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+"FITXATEGIA FITXATEGIA badago eta da a\n"
+" FITXATEGIA FITXATEGIA badago eta da taldea IDa\n"
+" h FITXATEGIA FITXATEGIA badago eta da a lotura\n"
+" B FITXATEGIA FITXATEGIA badago eta da bider taldea IDa\n"
+" FITXATEGIA FITXATEGIA badago eta e"
+
+#: src/test.c:756
+#, fuzzy
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+"FITXATEGIA FITXATEGIA badago eta da a lotura h\n"
+" FITXATEGIA FITXATEGIA badago eta da bider IDa\n"
+" FITXATEGIA FITXATEGIA badago eta da a\n"
+" FITXATEGIA FITXATEGIA badago eta da\n"
+" FITXATEGIA FITXATEGIA badago eta a tamaina e"
+
+#: src/test.c:763
+#, fuzzy
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+"S FITXATEGIA FITXATEGIA badago eta da a\n"
+" FD FD bider lehenetsia da aktibatuta a terminala\n"
+" FITXATEGIA FITXATEGIA badago eta IDa da\n"
+" FITXATEGIA FITXATEGIA badago eta da\n"
+" x FITXATEGIA FITXATEGIA badago eta da e"
+
+#: src/test.c:770
+#, fuzzy
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr "bider errepikatu arte maiatzak KATEA - KATEA e"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "`]' falta da\n"
+
+#: src/test.c:846
+#, fuzzy, c-format
+msgid "extra argument %s"
+msgstr "baliogabeko argumentua: %s"
+
+#: src/touch.c:112 src/touch.c:318
+#, fuzzy, c-format
+msgid "invalid date format %s"
+msgstr "baliogabea"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "%s sortzen"
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr ""
+
+#: src/touch.c:217
+#, fuzzy, c-format
+msgid "setting times of %s"
+msgstr "-"
+
+#: src/touch.c:234
+#, fuzzy
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr "Eguneratu eta - FITXATEGIA e e"
+
+#: src/touch.c:241
+#, fuzzy
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+"a\n"
+" ez edozein\n"
+" KATEA KATEA eta erabili horren ordez -\n"
+" enoratua\n"
+" m e"
+
+#: src/touch.c:248
+#, fuzzy
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+"FITXATEGIA erabili uneko horren ordez -\n"
+" erabili CC horren ordez -\n"
+" bider erabili a\n"
+" m e"
+
+#: src/touch.c:257
+#, fuzzy
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr "eta e"
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr ""
+
+#: src/touch.c:389
+#, fuzzy, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr "da erabili"
+
+#: src/tr.c:290
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "e"
+
+#: src/tr.c:294
+#, fuzzy
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"eta edo e\n"
+" lehen\n"
+" in\n"
+" - a\n"
+" da in honekin a\n"
+" -\n"
+" lehen - e"
+
+#: src/tr.c:307
+#, fuzzy
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"- e\n"
+" honekin balioa\n"
+"\n"
+" a\n"
+"\n"
+"\n"
+"\n"
+" berria\n"
+"\n"
+" e"
+
+#: src/tr.c:321
+#, fuzzy
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+"\n"
+" in\n"
+" in - data hau arte: -\n"
+" - honekin\n"
+" eta\n"
+" alfa\n"
+"\n"
+"\n"
+" e"
+
+#: src/tr.c:332
+#, fuzzy
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+"\n"
+"\n"
+"\n"
+"\n"
+" edo\n"
+"\n"
+"\n"
+" e"
+
+#: src/tr.c:342
+#, fuzzy
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr "da eta eta e maiatzak da - bider azken "
+
+#: src/tr.c:348
+#, fuzzy
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr "enoratua eta in in maiatzak in "
+
+#: src/tr.c:354
+#, fuzzy
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr "eta geroago edo e"
+
+#: src/tr.c:519
+#, fuzzy, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr "da e"
+
+#: src/tr.c:682
+#, fuzzy, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "- in"
+
+#: src/tr.c:838
+#, fuzzy, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "baliogabea in e"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr ""
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr ""
+
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "baliogabea"
+
+#: src/tr.c:956
+#, fuzzy, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "a"
+
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr "in"
+
+#: src/tr.c:1423
+#, fuzzy, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "maiatzak in"
+
+#: src/tr.c:1433
+#, fuzzy, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "maiatzak in"
+
+#: src/tr.c:1441
+#, fuzzy, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "maiatzak in"
+
+#: src/tr.c:1454
+#, fuzzy, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "hutsik"
+
+#: src/tr.c:1463
+#, fuzzy, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr "honekin in"
+
+#: src/tr.c:1470
+#, fuzzy, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr "maiatzak in eta"
+
+#: src/tr.c:1479
+#, fuzzy, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "maiatzak in"
+
+#: src/tr.c:1731
+#, fuzzy
+msgid "Two strings must be given when translating."
+msgstr "bikoa"
+
+#: src/tr.c:1741
+#, fuzzy
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr "maiatzak"
+
+#: src/tr.c:1844
+#, fuzzy, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "eta edo"
+
+#: src/true.c:42
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Erabilera: %s IZENA\n"
+" edo: %s AUKERA\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"FITXATEGIA zerrenda honekin in FITXATEGIA ez FITXATEGIA edo FITXATEGIA da e e"
+
+#: src/tsort.c:474
+#, fuzzy, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "hau daukana -"
+
+#: src/tsort.c:515
+#, fuzzy, c-format
+msgid "%s: input contains a loop:"
+msgstr "hau daukana a:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Erabilera: %s [AUKERA]...\n"
+
+#: src/tty.c:70
+#, fuzzy
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Inprimatu - terminala e\n"
+" ezer ere ez e"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "ez da tty bat"
+
+#: src/uname.c:118
+#, fuzzy
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Inprimatu ez e\n"
+" a in\n"
+"\n"
+" e\n"
+" e"
+
+#: src/uname.c:127
+#, fuzzy
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+"\n"
+" m\n"
+" mota\n"
+"\n"
+" e"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "ezin da sistemaren izena lortu"
+
+#: src/unexpand.c:125
+#, fuzzy
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr "Bihurtu in FITXATEGIA ez FITXATEGIA edo FITXATEGIA da e e"
+
+#: src/unexpand.c:133
+#, fuzzy
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+"a horren ordez -\n"
+" lehen - a\n"
+" I I horren ordez - a\n"
+" erabili - a e"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "gelditu da"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Erabilera: %s [AUKERA]... [SARRERA [IRTEERA]]\n"
+
+#: src/uniq.c:139
+#, fuzzy
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr "Utzi - lerroz behin edo edo e e"
+
+#: src/uniq.c:147
+#, fuzzy
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+"lerroz behin bider - aldiz\n"
+" lerroz behin e"
+
+#: src/uniq.c:151
+#, fuzzy
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+"lerroz behin\n"
+" bat ere ez lehenetsia\n"
+" da eginda honekin lerroz behin\n"
+" I lehen I\n"
+" ez ikusi egin ez ikusi egin in\n"
+" I lehen I\n"
+" esklusiboa esklusiboa lerroz behin e"
+
+#: src/uniq.c:160
+#, fuzzy
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr "I ez I in lerroz behin e"
+
+#: src/uniq.c:165
+#, fuzzy
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr "da a - lehenago e"
+
+#: src/uniq.c:350
+#, fuzzy, c-format
+msgid "too many repeated lines"
+msgstr "argumentu gehiegi"
+
+#: src/uniq.c:512
+#, fuzzy
+msgid "invalid number of fields to skip"
+msgstr "baliogabea -"
+
+#: src/uniq.c:521
+#, fuzzy
+msgid "invalid number of bytes to skip"
+msgstr "baliogabea -"
+
+#: src/uniq.c:530
+#, fuzzy
+msgid "invalid number of bytes to compare"
+msgstr "baliogabea -"
+
+#: src/uniq.c:545
+#, fuzzy, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr "lerroz behin eta da"
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Erabilera: %s FITXATEGIA\n"
+" edo: %s AUKERA\n"
+
+#: src/unlink.c:53
+#, fuzzy
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr "Deitu FITXATEGIA e e"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "ezin da %s esteka kendu"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "ezin izan da abio ordua lortu"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d: %02d%s piztuta "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "am"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "pm"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr " ??:???? piztuta "
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr ""
+
+#: src/uptime.c:143
+#, fuzzy, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%d egun"
+msgstr[1] "%d egun"
+
+#: src/uptime.c:147
+#, fuzzy, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%d erabiltzaile"
+msgstr[1] "%d erabiltzaile"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", karga batez bestekoa: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Erabilera: %s [AUKERA]... [ FITXATEGIA]\n"
+
+#: src/uptime.c:198
+#, fuzzy, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Inprimatu - gora - aktibatuta eta batez bestekoa - azken eta minutu "
+"FITXATEGIA da erabili FITXATEGIA da e e"
+
+#: src/users.c:109
+#, fuzzy, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr "Irteera da in FITXATEGIA FITXATEGIA da erabili FITXATEGIA da e e"
+
+#: src/wc.c:113
+#, fuzzy
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Inprimatu eta errepikatu arte FITXATEGIA eta a FITXATEGIA da ez FITXATEGIA "
+"edo FITXATEGIA da\n"
+"\n"
+" m\n"
+" lerroz behin e"
+
+#: src/wc.c:121
+#, fuzzy
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+"-\n"
+" e"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr " zaharra "
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "terminala="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "irten="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "ordu aldaketa"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "abio-maila"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "azkena="
+
+#: src/who.c:545
+#, fuzzy, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"Erabiltzaile kopurua=%u\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "IZENA"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "LERROA"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "ORDUA"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr "Alfer-denbora"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "AZALPENA"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "IRTEN"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Erabilera: %s [AUKERA]... [FITXATEGIA | ARG1 ARG2 ]\n"
+
+#: src/who.c:634
+#, fuzzy
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" a\n"
+" - azken\n"
+"\n"
+" T - goiburuak e"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+#, fuzzy
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+"DNS\n"
+" m eta honekin\n"
+" bider e"
+
+#: src/who.c:649
+#, fuzzy
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+"eta - aktibatuta\n"
+"\n"
+" eta lehenetsia\n"
+" azken e"
+
+#: src/who.c:655
+#, fuzzy
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+"edo\n"
+" zerrenda in\n"
+"\n"
+" e"
+
+#: src/who.c:663
+#, fuzzy, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr "FITXATEGIA da erabili FITXATEGIA da m am edo e"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+"Abisua: -i ezabatua izango da etorkizuneko bertsiotan; erabili -u honen "
+"ordez"
+
+#: src/whoami.c:51
+#, fuzzy
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr "Inprimatu honekin e e"
+
+#: src/whoami.c:95
+#, fuzzy, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "errepikatu arte IDa"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Erabilera: %s [KATEA]...\n"
+" or: %s AUKERA\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"Errepikatu lerro berri batean espezifikatutako KATEA(k), edo `y'.\n"
+"\n"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "ezin da %s-(r)en jabetza eta/edo taldea aldatu"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "ezin da UID zenbaki baten saio taldea lortu"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Hau software librea da; ikusi iturburua kopien kondizioak jakiteko. EZ "
+#~ "dago inolako bermerik;\n"
+#~ "ez HELBURU ZEHATZ BATERAKO ez SALTZEKO.\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "argumentu gutxiegi"
+
+#~ msgid "closing standard output"
+#~ msgstr "irteera estandarra itxitzen"
+
+#, fuzzy
+#~ msgid "cannot change to null group"
+#~ msgstr "taldea"
+
+#~ msgid "group number"
+#~ msgstr "talde zenbakia"
+
+#, fuzzy
+#~ msgid "invalid group number %s"
+#~ msgstr "baliogabea taldea"
+
+#, fuzzy
+#~ msgid ""
+#~ " --no-preserve-root do not treat `/' specially (the default)\n"
+#~ " --preserve-root fail to operate recursively on `/'\n"
+#~ msgstr ""
+#~ "ez lehenetsia\n"
+#~ " aktibatuta e"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Each MODE is one or more of the letters ugoa, one of the symbols +-= and\n"
+#~ "one or more of the letters rwxXstugo.\n"
+#~ msgstr "da edo - - eta bat ere ez edo - e"
+
+#, fuzzy
+#~ msgid "invalid mode string: %s"
+#~ msgstr "baliogabea modua"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "JABEA FITXATEGIA\n"
+#~ " edo FITXATEGIA\n"
+#~ " edo FITXATEGIA e"
+
+#, fuzzy
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "da a"
+
+#, fuzzy
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr "azken da a"
+
+#, fuzzy
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr "B da errepikatu arte in Erabili horren ordez."
+
+#, fuzzy
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "aktibatuta uneko"
+
+#, fuzzy
+#~ msgid ""
+#~ "Display the current time in the given FORMAT, or set the system date.\n"
+#~ "\n"
+#~ " -d, --date=STRING display time described by STRING, not `now'\n"
+#~ " -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+#~ " -ITIMESPEC, --iso-8601[=TIMESPEC] output date/time in ISO 8601 "
+#~ "format.\n"
+#~ " TIMESPEC=`date' for date only,\n"
+#~ " `hours', `minutes', or `seconds' for date "
+#~ "and\n"
+#~ " time to the indicated precision.\n"
+#~ " --iso-8601 without TIMESPEC defaults to "
+#~ "`date'.\n"
+#~ msgstr ""
+#~ "Bistaratu in edo e\n"
+#~ " KATEA bider KATEA orain\n"
+#~ " errepikatu arte -\n"
+#~ " in\n"
+#~ " errepikatu arte\n"
+#~ " ordu minutu edo segundo errepikatu arte eta\n"
+#~ "\n"
+#~ " e"
+
+#, fuzzy
+#~ msgid ""
+#~ " %F same as %Y-%m-%d\n"
+#~ " %g the 2-digit year corresponding to the %V week number\n"
+#~ " %G the 4-digit year corresponding to the %V week number\n"
+#~ msgstr ""
+#~ "Y m\n"
+#~ " urtea B astea\n"
+#~ " B urtea B astea e"
+
+#, fuzzy
+#~ msgid ""
+#~ " %z RFC-2822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %Z time zone (e.g., EDT), or nothing if no time zone is determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr ""
+#~ "a\n"
+#~ " edo ezer ere ez ez da e lehenetsia honekin eta a e\n"
+#~ "\n"
+#~ " honekin e"
+
+#, fuzzy
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-2822 (-R) option"
+#~ msgstr "a maiatzak G"
+
+#~ msgid "undefined"
+#~ msgstr "definitu gabea"
+
+#, fuzzy
+#~ msgid "cannot get time of day"
+#~ msgstr "- eguna"
+
+#, fuzzy
+#~ msgid ""
+#~ " notrunc do not truncate the output file\n"
+#~ " ucase change lower case to upper case\n"
+#~ " swab swap every pair of input bytes\n"
+#~ " noerror continue after read errors\n"
+#~ " sync pad every input block with NULs to ibs-size; when used\n"
+#~ " with block or unblock, pad with spaces rather than NULs\n"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ " -\n"
+#~ " geroago\n"
+#~ " honekin tamaina\n"
+#~ " honekin edo honekin e"
+
+#, fuzzy
+#~ msgid "%s+%s records in\n"
+#~ msgstr "in e"
+
+#, fuzzy
+#~ msgid "%s+%s records out\n"
+#~ msgstr "e"
+
+#, fuzzy
+#~ msgid ""
+#~ "\tonly one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}"
+#~ msgstr "in"
+
+#, fuzzy
+#~ msgid "file offset out of range"
+#~ msgstr "-"
+
+#, fuzzy
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr "ez FITXATEGIA maiatzak honekin"
+
+#, fuzzy
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ msgstr ""
+#~ "Oihartzuna KATEA e\n"
+#~ " e\n"
+#~ " gaitu -\n"
+#~ "\n"
+#~ " E desgaitu - in e"
+
+#, fuzzy
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "da erabili"
+
+#, fuzzy
+#~ msgid ""
+#~ "warning: unportable BRE: `%s': using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr "lehen da da enoratua"
+
+#~ msgid "`%s' is too large"
+#~ msgstr "`%s' luzeegia da"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "enoratua\n"
+#~ " edo honekin a e maiatzak e e"
+
+#, fuzzy
+#~ msgid "invalid width option: %s"
+#~ msgstr "baliogabea zabalera"
+
+#, fuzzy
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "da erabili"
+
+#, fuzzy
+#~ msgid "%s: number of bytes is large"
+#~ msgstr "- da"
+
+#, fuzzy
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "da erabili"
+
+#, fuzzy
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr "azken da a"
+
+#~ msgid "%s is a directory"
+#~ msgstr "%s direktorio bat da"
+
+#, fuzzy
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "errepikatu arte"
+
+#, fuzzy
+#~ msgid "value %s is so large that it is not representable"
+#~ msgstr "balioa da da"
+
+#, fuzzy
+#~ msgid "invalid field number: `%s'"
+#~ msgstr "baliogabea"
+
+#, fuzzy
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "baliogabea errepikatu arte"
+
+#, fuzzy
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "baliogabea errepikatu arte"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: Fitxategia badago"
+
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "sortu esteka sinbolikoa %s-tik %s-ra"
+
+#~ msgid "create hard link %s to %s"
+#~ msgstr "sortu esteka sendoa %s-tik %s-ra"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "IZENA\n"
+#~ " edo DIREKTORIOA\n"
+#~ " edo DIREKTORIOA e"
+
+#, fuzzy
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr "azken a"
+
+#~ msgid "User name too long"
+#~ msgstr "Erabiltzaile izena luzeegia da"
+
+#, fuzzy
+#~ msgid ""
+#~ " -g like -l, but do not list owner\n"
+#~ " -G, --no-group inhibit display of group information\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " --si likewise, but use powers of 1000 not 1024\n"
+#~ " -H, --dereference-command-line\n"
+#~ " follow symbolic links listed on the command "
+#~ "line\n"
+#~ " --dereference-command-line-symlink-to-dir\n"
+#~ " follow each command line symbolic link\n"
+#~ " that points to a directory\n"
+#~ msgstr ""
+#~ "zerrenda jabea\n"
+#~ " B ez taldea - taldea\n"
+#~ " h in\n"
+#~ " erabili -\n"
+#~ " T\n"
+#~ " aktibatuta\n"
+#~ "\n"
+#~ " lotura\n"
+#~ " puntu a e"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ " in modua lehenetsia aktibatuta Leihoak\n"
+#~ " zerrenda\n"
+#~ " testua in testua modua lehenetsia e e"
+
+#~ msgid "file"
+#~ msgstr "fitxategia"
+
+#~ msgid "files"
+#~ msgstr "fitxategiak"
+
+#~ msgid "checksum"
+#~ msgstr "egiaztapeneko batura"
+
+#~ msgid "checksums"
+#~ msgstr "egiaztapeneko baturak"
+
+#, fuzzy
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "eta"
+
+#, fuzzy
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "ez maiatzak"
+
+#, fuzzy
+#~ msgid "only one argument may be specified when using --check"
+#~ msgstr "maiatzak"
+
+#, fuzzy
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "baimenak -"
+
+#, fuzzy
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "baimenak -"
+
+#, fuzzy
+#~ msgid "wrong number of arguments"
+#~ msgstr "-"
+
+#, fuzzy
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr "eta gailua maiatzak errepikatu arte"
+
+#, fuzzy
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "baimenak -"
+
+#, fuzzy
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr "azken a"
+
+#, fuzzy
+#~ msgid ""
+#~ "Run COMMAND with an adjusted scheduling priority.\n"
+#~ "With no COMMAND, print the current scheduling priority. ADJUST is 10\n"
+#~ "by default. Range goes from -20 (highest priority) to 19 (lowest).\n"
+#~ "\n"
+#~ " -n, --adjustment=ADJUST increment priority by ADJUST first\n"
+#~ msgstr ""
+#~ "Exekutatu KOMANDOA honekin ez KOMANDOA da lehenetsia e\n"
+#~ " e bider lehen e"
+
+#, fuzzy
+#~ msgid "invalid option `%s'"
+#~ msgstr "baliogabea"
+
+#, fuzzy
+#~ msgid "invalid priority `%s'"
+#~ msgstr "baliogabea"
+
+#~ msgid "cannot get priority"
+#~ msgstr "ezin da prioritatea lortu"
+
+#~ msgid "cannot set priority"
+#~ msgstr "ezin da prioritatea ezerri"
+
+#, fuzzy
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "baliogabea segundo in modua"
+
+#, fuzzy
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr "in modua azken bikoa"
+
+#, fuzzy
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr ""
+#~ "in IZENA e\n"
+#~ " errepikatu arte uneko e"
+
+#, fuzzy
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "bide-izena hau daukana"
+
+#~ msgid "`%s' is not a directory"
+#~ msgstr "`%s' ez da direktorio bat"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "`%s' direktorioa bilaezina da"
+
+#, fuzzy
+#~ msgid "name `%s' has length %ld; exceeds limit of %ld"
+#~ msgstr "-"
+
+#, fuzzy
+#~ msgid "path `%s' has length %lu; exceeds limit of %ld"
+#~ msgstr "bide-izena -"
+
+#, fuzzy
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "baliogabea -"
+
+#, fuzzy
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "baliogabea"
+
+#, fuzzy
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "baliogabea"
+
+#, fuzzy
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr "da"
+
+#, fuzzy
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "zutabetan baliogabea - zutabetan"
+
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%Y %b %e %H:%M"
+
+#, fuzzy
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr "-"
+
+#~ msgid "Page %d"
+#~ msgstr "%d orrialdea"
+
+#, fuzzy
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "e"
+
+#, fuzzy
+#~ msgid ""
+#~ "This program is distributed in the hope that it will be useful,\n"
+#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+#~ "GNU General Public License for more details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "programa da in - edo A Orokorra Publikoa Lizentzia errepikatu arte e e"
+
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+#~ msgstr ""
+#~ "\"GNU General Public License\"-ren kopia bat jaso behar izango\n"
+#~ "zenuke programarekin batera. Horrela ez bada izan hurrengo helbidera\n"
+#~ "idatzi:\n"
+#~ "Free Software Foundation, Inc., 59 Temple Place, Suite 330,\n"
+#~ "Boston, MA 02111-1307 USA\n"
+
+#, fuzzy
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "in"
+
+#, fuzzy
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "edo"
+
+#, fuzzy
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only; this works only if your "
+#~ "system\n"
+#~ " supports `unlink' for nonempty directories)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ msgstr ""
+#~ "Kendu FITXATEGIA e\n"
+#~ " FITXATEGIA da a hutsik\n"
+#~ " uneko\n"
+#~ " errepikatu arte\n"
+#~ " behartu ez ikusi egin\n"
+#~ " lehenago edozein e"
+
+#, fuzzy
+#~ msgid "`-%s' option is obsolete; use `-l %s'"
+#~ msgstr "da erabili"
+
+#, fuzzy
+#~ msgid ""
+#~ "Display file or filesystem status.\n"
+#~ "\n"
+#~ " -f, --filesystem display filesystem status instead of file status\n"
+#~ " -c --format=FORMAT use the specified FORMAT instead of the default\n"
+#~ " -L, --dereference follow links\n"
+#~ " -t, --terse print the information in terse form\n"
+#~ msgstr ""
+#~ "Bistaratu edo e\n"
+#~ " horren ordez -\n"
+#~ " erabili horren ordez - lehenetsia\n"
+#~ "\n"
+#~ " in e"
+
+#, fuzzy
+#~ msgid "Warning: `-l' is deprecated; use `-L' instead"
+#~ msgstr "Abisua da erabili horren ordez"
+
+#, fuzzy
+#~ msgid "invalid argument `%s'"
+#~ msgstr "baliogabea"
+
+#~ msgid "stdin: read error"
+#~ msgstr "stdin: irakurketa errorea"
+
+#, fuzzy
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "baliogabea in"
+
+#, fuzzy
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr "Noiz maiatzak ez Erabili e edo horren ordez."
+
+#, fuzzy
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr "Abisua da erabili bikoa edo honekin Erabili e edo horren ordez."
+
+#, fuzzy
+#~ msgid "`%s' option is obsolete; use `%s-%c %.*s'"
+#~ msgstr "da erabili"
+
+#, fuzzy
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr "baliogabea gehienezkoa - tamaina"
+
+#~ msgid "argument expected\n"
+#~ msgstr "argumentu bat espero da\n"
+
+#, fuzzy
+#~ msgid "%s: integer expression expected\n"
+#~ msgstr "e"
+
+#~ msgid "before -lt"
+#~ msgstr "-lt baino lehen"
+
+#~ msgid "after -lt"
+#~ msgstr "-lt-ren ondoren"
+
+#~ msgid "before -le"
+#~ msgstr "-le baino lehen"
+
+#~ msgid "after -le"
+#~ msgstr "-le-ren ondoren"
+
+#~ msgid "before -gt"
+#~ msgstr "-gt baino lehen"
+
+#~ msgid "after -gt"
+#~ msgstr "-gt-ren ondoren"
+
+#~ msgid "before -ge"
+#~ msgstr "-ge baino lehen"
+
+#~ msgid "after -ge"
+#~ msgstr "-ge-ren ondoren"
+
+#~ msgid "before -ne"
+#~ msgstr "-ne baino lehen"
+
+#~ msgid "after -ne"
+#~ msgstr "-ne-ren ondoren"
+
+#~ msgid "before -eq"
+#~ msgstr "-eq baino lehen"
+
+#~ msgid "after -eq"
+#~ msgstr "-eq-ren ondoren"
+
+#~ msgid "after -t"
+#~ msgstr "-t-ren ondoren"
+
+#, fuzzy
+#~ msgid "too many arguments\n"
+#~ msgstr "e"
+
+#, fuzzy
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "baliogabea"
+
+#, fuzzy
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr "bikoa eta"
+
+#, fuzzy
+#~ msgid ""
+#~ "invalid identity mapping; when translating, any [:lower:] or [:upper:]\n"
+#~ "construct in string1 must be aligned with a corresponding construct\n"
+#~ "([:upper:] or [:lower:], respectively) in string2"
+#~ msgstr "baliogabea edozein edo in honekin a e edo in"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "enoratua\n"
+#~ " edo honekin a e maiatzak e e"
+
+#, fuzzy
+#~ msgid "only one argument may be specified"
+#~ msgstr "maiatzak"
+
+#, fuzzy
+#~ msgid "tab size contains an invalid character"
+#~ msgstr "tamaina hau daukana baliogabea"
+
+#, fuzzy
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr "da erabili lehen"
+
+#, fuzzy
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "da erabili"
+
+#, fuzzy
+#~ msgid ""
+#~ " -i, --idle add idle time as HOURS:MINUTES, . or old\n"
+#~ " (deprecated, use -u)\n"
+#~ " -l, --login print system login processes\n"
+#~ msgstr ""
+#~ "edo\n"
+#~ " erabili\n"
+#~ " e"
+
+#, fuzzy
+#~ msgid "%s: cannot find username for UID %u\n"
+#~ msgstr "errepikatu arte UID e"
diff --git a/po/fi.gmo b/po/fi.gmo
new file mode 100644
index 0000000..67a61da
--- /dev/null
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
new file mode 100644
index 0000000..9ef704a
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,10633 @@
+# Finnish messages for coreutils.
+# Copyright © 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+# This file is distributed under the same license as the coreutils package.
+# Lauri Nurmi <lanurmi@iki.fi>, 2003, 2004, 2006.
+# Matti Koskimies <matti@apulanta.fi>, 2002.
+#
+# SANOJA:
+# hostname -> ei ainakaan isäntänimi, kiitos.
+# override -> kumoaminen on huono
+# mount point -> liitoskohta, vaatii kanava.
+#
+# ownership -> omistajuus vai omistaja?
+#
+# päätös:
+# separator = erotin
+# delimiter = rajoitin
+#
+# user ID = ...
+# group ID = ...
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 6.1\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2006-09-11 19:20+0300\n"
+"Last-Translator: Lauri Nurmi <lanurmi@iki.fi>\n"
+"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural= ( n!=1) ;\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, c-format
+msgid "preserving permissions for %s"
+msgstr "säilytettäessä tiedoston %s oikeuksia"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "asetettaessa tiedoston %s oikeuksia"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "virheellinen argumentti %s %s:lle"
+
+# Vähän huono käyttää taivutuspäätettä, mutta jälkimmäinen %s voinee
+# viitata moneenkin asiaan.
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "moniselitteinen argumentti %s %s:lle"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Kelvolliset argumentit:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "kirjoitusvirhe"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Tuntematon järjestelmävirhe"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "tiedoston %s tilaa ei voi lukea"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "tavallinen tyhjä tiedosto"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "tavallinen tiedosto"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "hakemisto"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "lohkoerikoistiedosto"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "merkkierikoistiedosto"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "putkitiedosto"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "symbolinen linkki"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "pistoke"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "viestijono"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "semafori"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "jaettu muistiobjekti"
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr "tyypitetty muistiobjekti"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "outo tiedosto"
+
+#: lib/gai_strerror.c:44
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "fifo-tiedostot eivät ole tuettuja"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr "Väliaikainen häiriö nimenselvityksessä"
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr "Korjautumaton häiriö nimenselvityksessä"
+
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "fifo-tiedostot eivät ole tuettuja"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr "Muistinvarausvirhe"
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr "Nimi tai palvelu on tuntematon"
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "fifo-tiedostot eivät ole tuettuja"
+
+#: lib/gai_strerror.c:54
+msgid "System error"
+msgstr "Järjestelmävirhe"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+msgid "Unknown error"
+msgstr "Tuntematon virhe"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: valitsin â€%s†ei ole yksiselitteinen\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: valitsin â€--%s†ei salli argumenttia\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: valitsin â€%c%s†ei salli argumenttia\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: valitsin â€%s†vaatii argumentin\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: tunnistamaton valitsin â€--%sâ€\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: tunnistamaton valitsin â€%c%sâ€\n"
+
+# Pitäisikö --:n olla oikea Unicode-ajatusviiva (m-viiva)?
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: virheellinen valitsin -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: epäkelpo valitsin -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: valitsin vaatii argumentin -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: valitsin â€-W %s†ei ole yksiselitteinen\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: valitsin â€-W %s†ei salli argumenttia\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "lohkokoko"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "kohteen %s oikeuksien muuttaminen ei onnistu"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "hakemiston %s luominen ei onnistu"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "muisti loppu"
+
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr "alkuperäiseen työhakemistoon palaaminen epäonnistui"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "alkuperäiseen työhakemistoon palaaminen epäonnistui"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "â€"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "â€"
+
+#: lib/randread.c:125
+#, c-format
+msgid "%s: end of file"
+msgstr "%s: tiedoston loppu"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: virheellinen säännöllinen lauseke: %s"
+
+#: lib/regcomp.c:140
+#, fuzzy
+msgid "Invalid collation character"
+msgstr "virheellinen merkkiluokka %s"
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "virheellinen merkkiluokka %s"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+#, fuzzy
+msgid "Invalid back reference"
+msgstr "Virheellinen sivuväli %s"
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+#, fuzzy
+msgid "Invalid range end"
+msgstr "Virheellinen sivuväli %s"
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "muisti loppu"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: virheellinen säännöllinen lauseke: %s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "virhe säännöllisen lausekkeen haussa"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "virhe säännöllisen lausekkeen haussa"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "virhe säännöllisen lausekkeen haussa"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr "on vaarallista toimia rekursiivisesti hakemistossa %s"
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr "on vaarallista toimia rekursiivisesti hakemistossa %s (sama kuin %s)"
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr "käytä valitsinta --no-preserve-root tämän varmistuksen ohittamiseksi"
+
+# Kaikkihan muistavat kääntää nämä ja vastaavat juuri näin. Ei pelkkä kK.
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[kKyY]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[eEnN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "iconv-funktio ei ole käyttökelpoinen"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "iconv-funktio ei ole saatavilla"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "merkki sallitun välin ulkopuolella"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "merkin U+%04X muunnos paikalliseen merkistöön ei onnistu"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "merkin U+%04X muunnos paikalliseen merkistöön ei onnistu: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "virheellinen käyttäjä"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "virheellinen ryhmä"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "virheellinen käyttäjä"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr "©"
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Kirjoittanut %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Kirjoittaneet %s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Kirjoittaneet %s, %s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Kirjoittaneet %s, %s,\n"
+"%s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Kirjoittaneet %s, %s,\n"
+"%s, %s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Kirjoittaneet %s, %s,\n"
+"%s, %s, %s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Kirjoittaneet %s, %s,\n"
+"%s, %s, %s,\n"
+"%s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Kirjoittaneet %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Kirjoittaneet %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s ja %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Kirjoittaneet %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, %s ja muut.\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "virheellinen argumentti: %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "merkkijonovertailu epäonnistui"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Aseta LC_ALL='C' ongelman kiertämiseksi."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "Vertaillut merkkijonot olivat %s ja %s."
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "merkkijonovertailu epäonnistui"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "virheellinen käyttäjä %s"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "virheellinen merkkiluokka %s"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s on liian suuri"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Lisätietoja saa komennolla â€%s --helpâ€.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+"Käyttö: %s [VALITSIN] [TIEDOSTO]\n"
+"Base64-koodaa tai pura TIEDOSTO tai vakiosyöte vakiotulosteeseen.\n"
+"\n"
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+" --help Näytä tämä ohje ja poistu.\n"
+" --version Tulosta versiotiedot ja poistu.\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Jos TIEDOSTOa ei ole annettu, tai se on â€-â€, luetaan vakiosyötettä.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Lähetä raportit ohjelmistovioista (englanniksi) osoitteeseen\n"
+"<%s>.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "lukuvirhe"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "virheellinen leveys: %s"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "virheellinen sarkainkoko: %s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr "ylimääräinen operandi %s"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "suljetaan vakiosyöte"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Käyttö: %s NIMI [PÄÄTE]\n"
+" tai: %s VALITSIN\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Tulostetaan NIMI ilman edeltävää hakemistorakennetta.\n"
+"Poistetaan myös lopusta mahdollinen PÄÄTE.\n"
+"\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, c-format
+msgid "missing operand"
+msgstr "operandi puuttuu"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Käyttö: %s [VALITSIN] [TIEDOSTO]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"Ketjuta TIEDOSTO(t) tai vakiosyöte vakiotulosteeseen.\n"
+"\n"
+" -A, --show-all sama kuin -vET\n"
+" -b, --number-nonblank numeroi ei-tyhjät tulosterivit\n"
+" -e sama kuin -vE\n"
+" -E, --show-ends näytä â€$â€-merkki jokaisen rivin lopussa\n"
+" -n, --number numeroi kaikki tulosterivit\n"
+" -s, --squeeze-blank älä tulosta useita peräkkäisiä tyhjiä rivejä\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t sama kuin -vT\n"
+" -T, --show-tabs näytä sarkaimet merkinnällä ^I\n"
+" -u (ei huomioida)\n"
+" -v, --show-nonprinting käytä merkintöjä ^ ja M- muille kuin "
+"rivinvaihdolle\n"
+" ja sarkaimelle\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+"\n"
+"Esimerkkejä:\n"
+" %s f - g Tulosta f:n sisältö, sitten vakiosyöte, sitten g:n sisältö.\n"
+" %s Kopioi vakiosyötteestä vakiotulosteeseen.\n"
+
+#: src/cat.c:333
+#, c-format
+msgid "cannot do ioctl on %s"
+msgstr "tiedostolle %s ei voi käyttää ioctl:ää"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "vakiotuloste"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: syötetiedosto on tulostiedosto"
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "virheellinen ryhmä %s"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Käyttö: %s [VALITSIN]... RYHMÄ TIEDOSTO...\n"
+" tai: %s [VALITSIN]... --reference=VTIED TIEDOSTO...\n"
+
+#: src/chgrp.c:117
+#, fuzzy
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Muuta kunkin TIEDOSTOn ryhmäksi RYHMÄ.\n"
+"Jos valitsin --reference on annettu, vaihda kunkin TIEDOSTOn omistajaksi\n"
+"ja ryhmäksi samat kuin VTIEDostolla.\n"
+"\n"
+" -c, --changes kuten monisanaisuus, mutta ilmoitetaan vain tehdyt\n"
+" muutokset\n"
+" --dereference muuta symbolisen linkin kohdetta, ei linkkiä\n"
+" itseään (tämä on oletus)\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference muuta kutakin symbolista linkkiä, ei minkään "
+"linkin\n"
+" kohdetta (käytettävissä vain järjestelmissä, "
+"joissa\n"
+" symlinkin omistajuutta voi muuttaa)\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root älä kohtele juurta (â€/â€) erityisesti (oletus)\n"
+" --preserve-root estä rekursiivinen toiminta juuressa (â€/â€)\n"
+
+# Onko rekursiivisuudelle suomenkielisempää sanaa?
+#: src/chgrp.c:134
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet vaienna useimmat virheilmoitukset\n"
+" --reference=VTIED käytä VTIEDoston ryhmää annetun RYHMÄ-arvon sijaan\n"
+" -R, --recursive käsittele tiedostot ja hakemistot rekursiivisesti\n"
+" -v, --verbose näytä ilmoitus jokaisesta käsitellystä tiedostosta\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+"Seuraavat valitsimet määräävät, miten hakemistorakennetta käydään läpi, jos\n"
+"valitsin -R on annettu. Jos useampi kuin yksi seuraavista on annettu, vain\n"
+"viimeinen on voimassa.\n"
+"\n"
+" -H jos komentoriviargumentti on symbolinen linkki\n"
+" hakemistoon, seuraa sitä\n"
+" -L seuraa jokaista hakemistoon osoittavaa symbolista\n"
+" linkkiä\n"
+" -P älä seuraa symbolisia linkkejä (oletus)\n"
+"\n"
+
+#: src/chgrp.c:156
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+"\n"
+"Esimerkkejä:\n"
+" %s hlokunta /u Vaihda /u:n ryhmäksi â€hlokuntaâ€.\n"
+" %s -hR hlokunta /u Vaihda /u:n ja alitiedostojen ryhmäksi â€hlokuntaâ€.\n"
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr "-R --dereference vaatii joko -H:n tai -L:n"
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, c-format
+msgid "missing operand after %s"
+msgstr "%s:n jälkeen puuttuu operandi"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "tiedoston %s ominaisuuksien hakeminen ei onnistu"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "haetaan tiedoston %s uudet ominaisuudet"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "symbolista linkkiä %s tai sen viittaamaa tiedostoa ei muutettu\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "tiedoston %s oikeuksiksi asetettu %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "tiedoston %s oikeuksien muuttaminen arvoon %04lo (%s) epäonnistui\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "tiedoston %s oikeuksina säilytettiin %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "tiedostoa %s ei voi käsitellä"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "hakemistoa %s ei voi lukea"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "muutettaessa tiedoston %s oikeuksia"
+
+#: src/chmod.c:286
+#, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "%s: uudet oikeudet ovat %s, ei %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr "fts_read epäonnistui"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Käyttö: %s [VALITSIN]... OIKEUDET[,OIKEUDET]... TIEDOSTO...\n"
+" tai: %s [VALITSIN]... OKTAALI-OIKEUDET TIEDOSTO...\n"
+" tai: %s [VALITSIN]... --reference=VTIED TIEDOSTO...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+"Vaihda kunkin TIEDOSTOn oikeuksiksi OIKEUDET.\n"
+"\n"
+" -c, --changes kuten monisanaisuus, mutta ilmoita vain tehdyt\n"
+" muutokset\n"
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root älä kohtele juurta (â€/â€) erityisesti (oletus)\n"
+" --preserve-root estä rekursiivinen toiminta juuressa (â€/â€)\n"
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+" -f, --silent, --quiet vaienna useimmat virheilmoitukset\n"
+" -v, --verbose näytä ilmoitus jokaisesta käsitellystä "
+"tiedostosta\n"
+" --reference=VTIED käytä VTIEDoston ryhmää annetun RYHMÄ-arvon "
+"sijaan\n"
+" -R, --recursive toimi rekursiivisesti\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr ""
+
+#: src/chmod.c:510
+#, c-format
+msgid "invalid mode: %s"
+msgstr "virheelliset oikeudet: %s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "tiedoston %s omistajaksi vaihdettiin %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "tiedoston %s ryhmäksi vaihdettiin %s\n"
+
+#: src/chown-core.c:149
+#, c-format
+msgid "no change to ownership of %s\n"
+msgstr "tiedoston %s omistajuus ei muuttunut\n"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "tiedoston %s omistajan vaihtaminen arvoon %s epäonnistui\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "tiedoston %s ryhmän vaihtaminen arvoon %s epäonnistui\n"
+
+#: src/chown-core.c:154
+#, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "tiedoston %s omistajuuden muuttaminen epäonnistui\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "tiedoston %s omistajana säilytettiin %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "tiedoston %s ryhmänä säilytettiin %s\n"
+
+#: src/chown-core.c:159
+#, c-format
+msgid "ownership of %s retained\n"
+msgstr "tiedoston %s omistajuus säilytettiin ennallaan\n"
+
+#: src/chown-core.c:344
+#, fuzzy, c-format
+msgid "cannot dereference %s"
+msgstr "tiedostoa %s ei voi poistaa"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "vaihdetaan tiedoston %s omistajuus"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "vaihdetaan tiedoston %s ryhmää"
+
+#: src/chown.c:93
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Käyttö: %s [VALITSIN]... [OMISTAJA][:[RYHMÄ]] TIEDOSTO...\n"
+" tai: %s [VALITSIN]... --reference=VTIED TIEDOSTO...\n"
+
+#: src/chown.c:98
+#, fuzzy
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Vaihda kunkin TIEDOSTOn omistajaksi ja/tai ryhmäksi OMISTAJA ja/tai RYHMÄ.\n"
+"Jos valitsin --reference on annettu, vaihda kunkin TIEDOSTOn omistajaksi\n"
+"ja ryhmäksi samat kuin VTIEDostolla.\n"
+"\n"
+" -c, --changes kuin monisanaisuus, mutta ilmoita vain tehdyt\n"
+" muutokset\n"
+" --dereference muuta symbolisen linkin kohdetta, ei linkkiä\n"
+" itseään\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=NYKYINEN_OMISTAJA:NYKYINEN_RYHMÄ\n"
+" vaihda kunkin tiedoston omistajaa ja/tai ryhmää "
+"vain\n"
+" jos sen nykyinen omistaja ja/tai ryhmä täsmää\n"
+" tässä annettuihin. Jompikumpi voidaan jättää\n"
+" pois, jolloin pois jätetyn ominaisuuden ei "
+"tarvitse\n"
+" täsmätä.\n"
+
+#: src/chown.c:122
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet vaienna useimmat virheilmoitukset\n"
+" --reference=VTIED käytä VTIEDoston omistajaa ja ryhmää annettujen\n"
+" OMISTAJA:RYHMÄ-arvojen sijaan\n"
+" -R, --recursive käsittele tiedostot ja hakemistot rekursiivisesti\n"
+" -v, --verbose näytä ilmoitus jokaisesta käsitellystä tiedostosta\n"
+"\n"
+
+# Maksakaa huomiota tähän, voi olla vähän epäselkeä.
+#: src/chown.c:144
+#, fuzzy
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"Jos omistaja puuttuu, sitä ei muuteta. Jos ryhmä puuttuu, sitä muutetaan\n"
+"(kirjautumisryhmäksi) vain, jos erotin â€:†on annettu. OMISTAJA ja RYHMÄ\n"
+"voivat olla joko numeerisia tai symbolisia.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Käyttö: %s UUSIJUURI [KOMENTO...]\n"
+" tai: %s VALITSIN\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"Aja KOMENTO siten, että UUSIJUURI on asetettuna juurihakemistoksi.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"Jos komentoa ei anneta, ajetaan â€${SHELL} -i†(oletus: /bin/sh).\n"
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "hakemiston %s asettaminen juurihakemistoksi ei onnistu"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "juurihakemistoon siirtyminen ei onnistu"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "komentoa %s ei voi ajaa"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: liian pitkä tiedosto"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Käyttö: %s [TIEDOSTO]...\n"
+" tai: %s [VALITSIN]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"Tulosta jokaisen TIEDOSTOn CRC-tarkistussumma ja tavumäärä.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Käyttö: %s [VALITSIN]... TIEDOSTO1 TIEDOSTO2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr "Vertaa lajiteltuja tiedostoja TIEDOSTO1 ja TIEDOSTO2 rivi riviltä.\n"
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+"\n"
+"Ilman valitsimia tuotetaan kolmen sarakkeen tuloste. Sarake yksi sisältää\n"
+"ainoastaan TIEDOSTO1:ssä esiintyvät rivit, sarake kaksi ainoastaan\n"
+"TIEDOSTO2:ssa esiintyvät rivit, ja sarake kolme molemmissa esiintyvät "
+"rivit.\n"
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"\n"
+" -1 älä tulosta ainoastaan TIEDOSTO1:ssä esiintyviä rivejä\n"
+" -2 älä tulosta ainoastaan TIEDOSTO2:ssä esiintyviä rivejä\n"
+" -3 älä tulosta rivejä, jotka esiintyvät molemmissa "
+"tiedostoissa\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "tiedoston %s omistajuuden säilytys ei onnistu"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr "tiedostoa %s ei löytynyt"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "tiedoston %s tekijän tietojen säilytys ei onnistunut"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "tiedostoa %s ei voi avata lukemista varten"
+
+# On sitten ihan turha tehdä suomennoksissa mitään eroa statin, fstatin, ym.
+# välille, käyttäjää ei kiinnosta.
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "tiedoston %s tilan lukeminen ei onnistu"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "ohitetaan tiedosto %s, sillä se korvattiin kopioinnin aikana"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "tiedostoa %s ei voi poistaa"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "poistettiin tiedosto %s\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "tavallisen tiedoston %s luominen ei onnistu"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "luettaessa tiedostoa %s"
+
+# Onko seek nyt sitten siirtymistä, selaamista, vaiko muuta.
+# Saa ehdottaa myös vastavaa substantiivia.
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "siirtyminen tiedostossa %s ei onnistu"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "kirjoitetaan tiedostoa %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "säilytettäessä tiedoston %s aikoja"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "suljetaan tiedostoa %s"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: korvataanko tiedosto %s, ohittaen oikeudet %04lo? "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: korvataanko tiedosto %s? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (varmuuskopio: %s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "ohitetaan hakemisto %s"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "varoitus: lähdetiedosto %s annettu useammin kuin kerran"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s ja %s ovat sama tiedosto"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "ei-hakemistoa %s ei voi korvata hakemistolla %s"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "ei korvata juuri luotua tiedostoa %s tiedostolla %s"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "hakemistoa %s ei voi korvata ei-hakemistolla"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "hakemistoa ei voi siirtää ei-hakemistoon: %s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr ""
+"tiedoston %s varmuuskopiointi tuhoaisi lähteen; tiedostoa %s ei siirretty"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr ""
+"tiedoston %s varmuuskopiointi tuhoaisi lähteen; tiedostoa %s ei kopioitu"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "tiedostoa %s ei voi varmuuskopioida"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "hakemistoa, %s, ei voi kopioida itseensä, %s"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "ei luoda kovaa linkkiä %s hakemistoon %s"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "kovan linkin %s luominen tiedostoon %s ei onnistu"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "hakemistoa %s ei voi siirtää omaan alihakemistoonsa, %s"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "tiedostoa %s ei voi siirtää kohteeseen %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+"laitteiden välinen siirto epäonnistui: %s -> %s; kohdetta ei voi poistaa"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "kiertävää symbolista linkkiä %s ei voi kopioida"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr ""
+"%s: suhteellisia symbolisia linkkejä voi tehdä vain nykyisessä hakemistossa"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "kohteeseen %2$s ei voi luoda symbolista linkkiä %1$s"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "linkkiä %s ei voi luoda"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "nimettyä putkea %s ei voi luoda"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "erikoistiedostoa %s ei voi luoda"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "symbolista linkkiä %s ei voi lukea"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "symbolisen linkin %s luominen ei onnistu"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "tiedostolla %s on tuntematon tiedostotyyppi"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "tiedoston %s varmuuskopion palautus ei onnistu"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (varmuuskopion palautus)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Käyttö: %s [VALITSIN]... [-T] LÄHDE KOHDE\n"
+" tai: %s [VALITSIN]... LÄHDE... HAKEMISTO\n"
+" tai: %s [VALITSIN]... -t HAKEMISTO LÄHDE...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Kopioi LÄHDE KOHTEeseen, tai useita LÄHTEitä HAKEMISTOon.\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Pitkien valitsinten pakolliset argumentit ovat pakollisia myös lyhyille.\n"
+
+#: src/cp.c:170
+#, fuzzy
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive sama kuin -dpR\n"
+" --backup[=MENETELMÄ] varmuuskopioi jokainen olemassaoleva\n"
+" kohdetiedosto\n"
+" --copy-contents kopioi erikoistiedostojen sisältö rekursiota\n"
+" käytettäessä\n"
+" -d sama kuin --no-dereference --preserve=linkki\n"
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" -f, --force jos olemassaolevaa kohdetiedostoa ei voi\n"
+" avata, poista se ja yritä uudelleen\n"
+" -i, --interactive kysy ennen korvaamista\n"
+" -H seuraa komentorivillä annettuja symbolisia\n"
+" linkkejä\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+" -P, --no-dereference älä koskaan seuraa symbolisia linkkejä\n"
+
+#: src/cp.c:190
+#, fuzzy
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -l, --link linkitä tiedostot kopioinnin sijaan\n"
+" -L, --dereference seuraa aina symbolisia linkkejä\n"
+" -p sama kuin --preserve=mode,ownership,"
+"timestamps\n"
+" --preserve=[OMIN.LUETT] säilytä annetut ominaisuudet (oletus:\n"
+" mode,ownership,timestamps), jos "
+"mahdollista,\n"
+" lisäominaisuudet: links, all\n"
+
+#: src/cp.c:196
+#, fuzzy
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=OMIN.LUETT älä säilytä annettuja ominaisuuksia\n"
+" --parents lisää lähdepolku HAKEMISTOon\n"
+" -P sama kuin â€--no-dereferenceâ€\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive kopioi hakemistot rekursiivisesti\n"
+" --remove-destination poista kukin olemassaoleva kohdetiedosto\n"
+" ennen avausyritystä (vertaa\n"
+" valitsimeen --force)\n"
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --reply={yes,no,query} määrittele miten kysely olemassaolevasta\n"
+" kohdetiedostosta käsitellään\n"
+" --sparse=MILLOIN ohjaa hajanaisten tiedostojen luontia\n"
+" --strip-trailing-slashes poista /-merkit kunkin LÄHDE-argumentin\n"
+" perästä\n"
+
+# parempi suomennos overridelle kuin "kumoa"?
+#: src/cp.c:210
+#, fuzzy
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link tee symbolisia linkkejä kopioinnin sijaan\n"
+" -S, --suffix=JÄLKILIITE syrjäytä tavanomainen varmuuskopion "
+"jälkiliite\n"
+" --target-directory=HAK siirrä kaikki LÄHDE-argumentit HAKemistoon\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update kopioi vain jos LÄHDEtiedosto on uudempi "
+"kuin\n"
+" kohde, tai jos kohdetiedosto puuttuu\n"
+" -v, --verbose selitä mitä tapahtuu\n"
+" -x, --one-file-system pysy tässä tiedostojärjestelmässä\n"
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"Hajanaiset LÄHDEtiedostot tunnistetaan oletuksena karkealla heuristiikalla,\n"
+"ja vastaavasta KOHDEtiedostosta tehdään myös hajanainen. Tämän "
+"käyttäytymisen\n"
+"valitsee --sparse=auto. Antamalla valitsin --sparse=always luodaan "
+"hajanainen\n"
+"KOHDEtiedosto aina, kun LÄHDE sisältää riittävän pitkän sarjan 0-tavuja.\n"
+"Valitsin --sparse=never estää hajanaisten tiedostojen luomisen.\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Varmuuskopion jälkiliite on â€~â€, ellei muuta ole asetettu valitsimella\n"
+"--suffix tai ympäristömuuttujalla SIMPLE_BACKUP_SUFFIX.\n"
+"Versionhallintamenetelmän voi valita käyttäen valitsinta --backup tai\n"
+"ympäristömuuttujaa VERSION_CONTROL. Arvot ovat seuraavat:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off älä varmuuskopioi koskaan (vaikka --backup olisi annettu)\n"
+" numbered, t tee numeroituja varmuuskopioita\n"
+" existing, nil numeroituja jos sellaisia on jo olemassa, muuten "
+"yksinkertaisia\n"
+" simple, never tee aina yksinkertaisia varmuuskopiota\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Erikoistapaus: cp tekee varmuuskopion LÄHTEestä, jos force- ja backup-\n"
+"valitsimet on annettu, ja LÄHDE ja KOHDE ovat sama nimi olemassaolevalle\n"
+"tavalliselle tiedostolle.\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "tiedoston %s aikojen säilyttäminen ei onnistu"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "tiedoston %s oikeuksien säilyttäminen ei onnistu"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "hakemiston %s luominen ei onnistu"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s on olemassa, mutta ei ole hakemisto"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "käytetään tiedostoa %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, c-format
+msgid "missing file operand"
+msgstr "puuttuva tiedosto-operandi"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, fuzzy, c-format
+msgid "missing destination file operand after %s"
+msgstr "puuttuva kohdetiedosto"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+"Valitsimia --target-directory (-t) ja --no-target-directory (-T) ei voi "
+"yhdistää"
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, c-format
+msgid "target %s is not a directory"
+msgstr "kohde %s ei ole hakemisto"
+
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "polkuja säilytettäessä kohteen on oltava hakemisto"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr ""
+"valitsin --reply ei ole suositeltava; käytä valitsinta -i tai -f sen sijaan"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, fuzzy, c-format
+msgid "multiple target directories specified"
+msgstr "useita tulostiedostoja annettu"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "linkit eivät voi olla sekä kovia että symbolisia"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "varmuuskopiotyyppi"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "syöte katosi"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: rivinumero sallitun välin ulkopuolella"
+
+#: src/csplit.c:709
+#, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: %s: rivinumero sallitun välin ulkopuolella"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr " kierroksella %s\n"
+
+#: src/csplit.c:755
+#, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: %s: täsmäävyyttä ei löydy"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "virhe säännöllisen lausekkeen haussa"
+
+#: src/csplit.c:984
+#, c-format
+msgid "write error for %s"
+msgstr "virhe kirjoitettaessa tiedostoa %s"
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: rajoittimen jälkeen odotetaan kokonaislukua"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: toistomäärässä tarvitaan merkki â€}â€"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: merkkien â€{†ja â€}†väliin tarvitaan kokonaisluku"
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: sulkeva rajoitin â€%c†puuttuu"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: virheellinen säännöllinen lauseke: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: virheellinen hahmo"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: rivinumeron on oltava suurempi kuin nolla"
+
+#: src/csplit.c:1172
+#, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "rivinumero %s on pienempi kuin edeltävä rivinumero %s"
+
+#: src/csplit.c:1178
+#, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "varoitus: rivinumero %s on sama kuin edeltävä rivinumero"
+
+#: src/csplit.c:1231
+#, c-format
+msgid "invalid format width"
+msgstr "virheellinen muodon leveys"
+
+#: src/csplit.c:1252
+#, c-format
+msgid "invalid format precision"
+msgstr "virheellinen muodon tarkkuus"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "puuttuva muunnostarkennin jälkiliitteessä"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "virheellinen muunnostarkennin jälkiliitteessä: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "virheellinen muunnostarkennin jälkiliitteessä: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "liian monta %%-muunnosmääritystä jälkiliitteessä"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "puuttuva %%-muunnosmääritys jälkiliitteessä"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: virheellinen luku"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Käyttö: %s [VALITSIN]... TIEDOSTO HAHMO...\n"
+
+#: src/csplit.c:1478
+#, fuzzy
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"Tulosta TIEDOSTOn osia HAHMO(i)lla erotettuina tiedostoihin â€xx01â€,\n"
+"â€xx02â€, ..., ja tulosta kunkin osan tavumäärä vakiotulosteeseen.\n"
+"\n"
+
+#: src/csplit.c:1486
+#, fuzzy, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=MUOTO käytä sprintf-MUOTOa %02d:n sijaan\n"
+" -f, --prefix=ETULIITE käytä ETULIITEttä â€xxâ€:n sijaan\n"
+" -k, --keep-files älä poista tulostiedostoja virhetilanteessa\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=MÄÄRÄ käytä annettua numeromäärää 2:n sijaan\n"
+" -s, --quiet, --silent älä tulosta tulostiedostojen kokoja\n"
+" -z, --elide-empty-files poista tyhjät tulostiedostot\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"Lue vakiosyötettä jos TIEDOSTO on -. Kukin HAHMO voi olla:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" KOKONAISLUKU kopioi annettuun riviin asti (mutta ei kyseistä riviä)\n"
+" /SÄÄNNLAUS/[SIIRT] kopioi täsmäävään riviin asti (mutta ei kyseistä "
+"riviä)\n"
+" %SÄÄNNLAUS%[SIIRT] siirry täsmäävälle riville\n"
+" {KOKONAISLUKU} toista edellistä hahmoa annettu määrä kertoja\n"
+" {*} toista edellistä hahmoa mahdollisimman monta kertaa\n"
+"\n"
+"RiviSIIRTymä on positiivinen kokonaisluku, jonka edessä on joko â€+†tai "
+"â€-â€.\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Käyttö: %s [VALITSIN]... [TIEDOSTO]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"Tulosta kunkin TIEDOSTOn valitut osat vakiotulosteeseen.\n"
+"\n"
+
+#: src/cut.c:199
+#, fuzzy
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=LUETTELO tulosta vain nämä tavut\n"
+" -c, --characters=LUETTELO tulosta vain nämä merkit\n"
+" -d, --delimiter=RAJOIT käytä RAJOITinta kenttien rajana sarkaimen sijaan\n"
+
+#: src/cut.c:204
+#, fuzzy
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=LUETTELO tulosta vain nämä kentät; tulosta myös rajoitinta\n"
+" sisältämättömät rivit ellei valitsinta -s ole\n"
+" annettu\n"
+" -n (ei huomioida)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited älä tulosta rajoitinta sisältämättömiä rivejä\n"
+" --output-delimiter=MERKKIJ käytä MERKKIJonoa tulosteen rajoittimena\n"
+" oletus on käyttää syötteen rajoitinta\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+#, fuzzy
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Käytä tasan yhtä valitsimista -b, -c tai -f. Jokainen LUETTELO koostuu "
+"yhdestä\n"
+"välistä tai useasta pilkuin erotetusta välistä. Väli on yksi seuraavista:\n"
+"\n"
+" N N:s tavu, merkki tai kenttä, numerointi alkaa 1:stä\n"
+" N- N:nnestä tavusta, merkistä tai kentästä rivin loppuun\n"
+" N-M N:nnestä tavusta, merkistä tai kentästä M:nteen (M ja N "
+"mukaanlukien)\n"
+" -M ensimmäisestä tavusta, merkistä tai kentästä M:nteen (M "
+"mukaanlukien)\n"
+"\n"
+"Jos TIEDOSTOa ei ole annettu, tai se on â€-â€, luetaan vakiosyötettä.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "virheellinen tavu- tai kenttälista"
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr "tavusiirtymä %s on liian suuri"
+
+#: src/cut.c:472
+#, c-format
+msgid "field number %s is too large"
+msgstr "kenttänumero %s on liian suuri"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "voidaan antaa vain yhden tyyppinen luettelo"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "rajoittimen on oltava yksittäinen merkki"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "on annettava luettelo tavuista, merkeistä tai kentistä"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "syöterajoitin voidaan antaa vain käsiteltäessä kenttiä"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"ei-rajoitettujen rivien vaiennus on mahdollista\n"
+"\tvain käsiteltäessä kenttiä"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "kenttälista puuttuu"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "sijaintilista puuttuu"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Käyttö: %s [VALITSIN]... [+MUOTOILU]\n"
+" tai: %s [-u|--utc|--universal] [KKPPttmm[[CC]VV][.ss]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+#, fuzzy
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+" -r, --reference=TIEDOSTO näytä TIEDOSTOn viimeisin muokkausaika\n"
+" -R, --rfc-822 näytä RFC-822-yhteensopiva päiväysmerkkijono\n"
+" -s, --set=MERKKIJONO aseta MERKKIJONOn määräämä aika\n"
+" -u, --utc, --universal näytä tai aseta UTC-aika\n"
+
+#: src/date.c:159
+#, fuzzy
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"\n"
+"MUOTOILU säätelee tulostetta. Jälkimmäisen muodon ainoa sallittu valitsin\n"
+"määrittelee UTC-ajan. Tulkittavat ohjausmerkkijonot ovat:\n"
+"\n"
+" %% %-merkki\n"
+" %a maa-asetuksen lyhyt viikonpäivän nimi (ma-su)\n"
+
+# Olisiko tähän hyvä liittää huomautus, että %b ei sovi suomen kieleen?
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A maa-asetuksen pitkä viikonpäivän nimi (esim. sunnuntai)\n"
+" %b maa-asetuksen lyhennetty kuukauden nimi (esim. tammi )\n"
+" %B maa-asetuksen pitkä kuukauden nimi (esim. tammikuu)\n"
+" %c maa-asetuksen päivämäärä ja aika (esim. la 3. maaliskuuta 2005 "
+"23:05:25)\n"
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C vuosisata; kuten %Y, mutta poistettu kaksi viimeistä numeroa (esim. "
+"21)\n"
+" %d kuukauden päivä (esim. 01)\n"
+" %D päivämäärä; sama kuin %m/%d/%y\n"
+" %e kuukauden päivä, välilyöntitäyttö; sama kuin %_d\n"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h sama kuin %b\n"
+" %H tunti (00-23)\n"
+" %I tunti (01-12)\n"
+" %j vuoden päivä (001-366)\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k tunti ( 0-23)\n"
+" %l tunti ( 1-12)\n"
+" %m kuukausi (01-12)\n"
+" %M minuutti (00-59)\n"
+
+#: src/date.c:196
+#, fuzzy
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+" %n rivinvaihto\n"
+" %N nanosekunnit (000000000-999999999)\n"
+" %p maa-asetuksen AM/PM merkintä isoilla kirjaimilla (usein tyhjä)\n"
+" %P maa-asetuksen AM/PM merkintä pikkukirjaimilla (usein tyhjä)\n"
+" %r aika, 12-tuntinen (tt:mm:ss [AP]M)\n"
+" %R aika, 24-tuntinen (tt:mm)\n"
+" %s sekuntimäärä ajanhetkestä â€00:00:00 1970-01-01 UTC†(GNU-laajennos)\n"
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+" %S sekunti (00–60)\n"
+" %t vaakasarkain\n"
+" %T aika; sama kuin %H:%M:%S\n"
+" %u viikonpäivä (1–7); 1 on maanantai\n"
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U viikon numero, sunnuntai viikon ensimmäinen päivä (00–53)\n"
+" %V viikon numero (ISO), maanantai viikon ensimmäinen päivä (01–53)\n"
+" %w viikonpäivä (0–6); 0 on sunnuntai\n"
+" %W viikon numero, maanantai viikon ensimmäinen päivä (00–53)\n"
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x maa-asetuksen päivämääräesitys (esim. 31.12.1999)\n"
+" %X maa-asetuksen aikaesitys (esim. 23:13:48)\n"
+" %y vuosiluvun kaksi viimeistä numeroa (00­–99)\n"
+" %Y vuosiluku (1970–)\n"
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "vakiosyöte"
+
+#: src/date.c:297 src/date.c:517
+#, c-format
+msgid "invalid date %s"
+msgstr "virheellinen päiväys %s"
+
+#: src/date.c:408 src/date.c:442
+#, c-format
+msgid "multiple output formats specified"
+msgstr "useita tulostusmuotoja annettu"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "päiväyksen tulostusta määräävät valitsimet ovat toisensa poissulkevia"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr "ajan tulostus- ja asetusvalitsimia ei saa käyttää yhtäaikaa"
+
+#: src/date.c:448
+#, fuzzy, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"argumentilta â€%s†puuttuu edeltävä â€+â€;\n"
+"Käytettäessä valitsinta päiväyksen määräämiseen täytyy valitsinten,\n"
+"jotka eivät ole argumentteja, olla â€+â€-alkuisia muotoilumerkkijonoja."
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "ajan asetus ei onnistu"
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "aika %s on sallitun välin ulkopuolella"
+
+#: src/dd.c:404
+#, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Käyttö: %s [OPERANDI]...\n"
+" tai: %s VALITSIN\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"Kopioi tiedosto, muuntaen ja muotoillen operandien mukaisesti.\n"
+"\n"
+" bs=TAVUT pakota arvot ibs=TAVUT ja obs=TAVUT\n"
+" cbs=TAVUT muunna TAVUT-arvon verran tavuja kerralla\n"
+" conv=AVAINSANAT muunna tiedosto pilkuilla erotetun avainsanaluettelon "
+"mukaan\n"
+" count=LOHKOT kopioi vain LOHKOT-arvon verran lohkoja\n"
+" ibs=TAVUT lue TAVUT-arvon verran tavuja kerralla\n"
+
+#: src/dd.c:418
+#, fuzzy
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=TIEDOSTO lue TIEDOSTOsta vakiosyötteen sijaan\n"
+" obs=TAVUT kirjoita TAVUT-arvon verran tavuja kerralla\n"
+" of=TIEDOSTO kirjoita TIEDOSTOon vakiotulosteen sijaan\n"
+" seek=LOHKOT ohita tulosteen alussa LOHKOT verran obs-kokoisia lohkoja\n"
+" skip=LOHKOT ohita syötteen alusta LOHKOT verran ibs-kokoisia lohkoja\n"
+
+#: src/dd.c:428
+#, fuzzy
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"LOHKOT- ja TAVUT-arvoihin voidaan liittää perään seuraavat kertoimet:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000², M 1024²,\n"
+"GB 1000³, G 1024³, ja niin edelleen kirjaimilla T, P, E, Z, Y.\n"
+"\n"
+"Kukin AVAINSANA voi olla:\n"
+"\n"
+
+#: src/dd.c:437
+#, fuzzy
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii EBCDIC -> ASCII\n"
+" ebcdic ASCII -> EBCDIC\n"
+" ibm ASCII -> muutettu EBCDIC\n"
+" block tasaa rivinvaihtoon päättyvät tietueet välilyönneillä cbs-"
+"kokoon\n"
+" unblock korvaa välilyönnit cbs-kokoisten tietuiden lopusta "
+"rivinvaihdolla\n"
+" lcase muuta isot kirjaimet pieniksi\n"
+
+#: src/dd.c:445
+#, fuzzy
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+" notrunc älä typistä tulostiedostoa\n"
+" ucase muuta pienet kirjaimet isoiksi\n"
+" swab vaihda keskenään jokainen syötetavupari\n"
+" noerror jatka lukuvirheistä huolimatta\n"
+" sync tasaa jokainen syötelohko NUL-merkeillä ibs-kokoon; "
+"käytettäessä\n"
+" avainsanaa block tai unblock, tasataan välilyönneillä\n"
+
+#: src/dd.c:452
+#, fuzzy
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+" notrunc älä typistä tulostiedostoa\n"
+" ucase muuta pienet kirjaimet isoiksi\n"
+" swab vaihda keskenään jokainen syötetavupari\n"
+" noerror jatka lukuvirheistä huolimatta\n"
+" sync tasaa jokainen syötelohko NUL-merkeillä ibs-kokoon; "
+"käytettäessä\n"
+" avainsanaa block tai unblock, tasataan välilyönneillä\n"
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "kohdehakemisto ei ole sallittu asennettaessa hakemistoa"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+"\n"
+"Huomaa, että SIGUSR1-signaalin saadessaan ajossa oleva â€ddâ€-ohjelma\n"
+"tulostaa vakiovirhetulosteeseen toistaiseksi luettujen ja kirjoitettujen\n"
+"tietueiden määrän ja jatkaa sitten kopiointia.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -USR1 $pid; sleep 1; kill $pid\n"
+" 10899206+0 tietuetta sisään\n"
+" 10899206+0 tietuetta ulos\n"
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+"%<PRIuMAX>+%<PRIuMAX> tietuetta sisään\n"
+"%<PRIuMAX>+%<PRIuMAX> tietuetta ulos\n"
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "typistetty tietue\n"
+msgstr[1] "%<PRIuMAX> typistettyä tietuetta\n"
+
+#: src/dd.c:565
+#, fuzzy, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] "1 tavu (1 B) kopioitu"
+msgstr[1] "%<PRIuMAX> tavua (%s) kopioitu"
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr ""
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, fuzzy, c-format
+msgid ", %g s, %s/s\n"
+msgstr " %g sekunnissa, %s/s\n"
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "suljetaan syötetiedosto %s"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "suljetaan tulostiedosto %s"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "kirjoitetaan tiedostoon %s"
+
+#: src/dd.c:886
+#, c-format
+msgid "unrecognized operand %s"
+msgstr "tunnistamaton operandi %s"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "virheellinen muunnos: %s"
+
+#: src/dd.c:900
+#, fuzzy, c-format
+msgid "invalid input flag: %s"
+msgstr "virheellinen leveys: %s"
+
+#: src/dd.c:903
+#, fuzzy, c-format
+msgid "invalid output flag: %s"
+msgstr "virheellinen ryhmänimi %s"
+
+#: src/dd.c:906
+#, fuzzy, c-format
+msgid "invalid status flag: %s"
+msgstr "virheellinen päiväyksen muoto %s"
+
+#: src/dd.c:942
+#, fuzzy, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "tunnistamaton valitsin %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "virheellinen määrä %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#: src/dd.c:973
+#, fuzzy, c-format
+msgid "cannot combine block and unblock"
+msgstr "sekä käyttäjää että ryhmää ei voi jättää antamatta"
+
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "tiedostonimiä %s ja %s ei voi vertailla"
+
+#: src/dd.c:977
+#, fuzzy, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "signaalin yhdistäminen valitsimen -l tai -t kanssa ei onnistu"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"varoitus: ohitetaan ytimen lseek-ohjelmistovika tiedostolle (%s)\n"
+" mt_type=0x%0lx -- katso tyyppien luettelo tiedostosta <sys/mtio.h>"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, fuzzy, c-format
+msgid "%s: cannot seek"
+msgstr "%s: ei voi poistaa"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "varoitus: lähdetiedosto %s annettu useammin kuin kerran"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr ""
+
+#: src/dd.c:1376
+#, fuzzy, c-format
+msgid "setting flags for %s"
+msgstr "asetetaan tiedoston %s ajat"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr ""
+
+#: src/dd.c:1623
+#, fuzzy, c-format
+msgid "fsync failed for %s"
+msgstr "tiedoston %s avaaminen epäonnistui"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "avataan %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, fuzzy, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "edetään %s tavun yli tulostiedostossa %s"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "Tied.järj. Tyyppi "
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "Tiedostojärjestelmä"
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " I-solmut IKäyt IJälj IKäy%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Koko Käyt Vapaa Käy%%"
+
+# "Käy%" on epäselvä, mutta tilaa ei ole sarakkeessa yhtään enempää.
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Koko Käyt Vapaa Käy%%"
+
+# Vaikka "Käytetty" vaikuttaa väärältä suomennokselta Capacitylle,
+# juuri samaa se nähtävästi tarkoittaa. Vertaa "df":n ja "df -P":n tulostetta.
+#: src/df.c:165
+#, fuzzy, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr "%4s-lohkot Käytetty Vapaana Käytetty"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr "%4s-lohkot Käytetty Vapaana Käy%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Liitospiste\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "työhakemistoa ei löydy"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "hakemistoon %s ei voi siirtyä"
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "nykyisen hakemiston (%s) tilaa ei voi lukea"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"Näytä tietoja tiedostojärjestelmästä, jolla kukin TIEDOSTO sijaitsee,\n"
+"tai oletuksena kaikista tiedostojärjestelmistä.\n"
+"\n"
+
+#: src/df.c:749
+#, fuzzy
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all sisällytä myös 0 lohkon kokoiset "
+"tiedostojärjestelmät\n"
+" -B, --block-size=KOKO käytä KOKO-tavuisia lohkoja\n"
+" -h, --human-readable näytä koot helppolukuisessa muodossa (esim. 1K 234M "
+"2G)\n"
+" -H, --si sama kuin edellä, mutta monikerta on 1000, ei 1024\n"
+
+#: src/df.c:755
+#, fuzzy
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes näytä i-solmutiedot lohkotietojen sijaan\n"
+" -k kuten --block-size=1K\n"
+" -l, --local rajoita listaus paikallisiin tiedostojärjestelmiin\n"
+" --no-sync älä käynnistä synciä ennen käyttöohjeen saamista "
+"(oletus)\n"
+
+# mitä tämä "usage info" oikein tarkoittaa tässä yhteydessä?
+# muutenkin tässä on vähän säätämistä.
+#: src/df.c:761
+#, fuzzy
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability käytä POSIX-tulostemuotoa\n"
+" --sync käynnistä sync ennen käyttöohjeen saamista\n"
+" -t, --type=TYYPPI rajoita tiedostojärjestelmien listaus "
+"tietynTYYPPIsiin\n"
+" -T, --print-type tulosta tiedostojärjestelmän tyyppi\n"
+" -x, --exclude-type=TYYPPI rajoita tiedostojärjestelmien listaus "
+"muunTYYPPIsiin\n"
+" -v (ei huomioida)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"KOKO voi olla (tai voi olla kokonaisluku, jota seuraa) yksi seuraavista:\n"
+"kB 1000, K 1024, MB 1000², M 1024², sekä samoin G, T, P, E, Z, Y.\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr ""
+"valitsin --kilobytes ei ole suositeltava; käytä valitsinta -k sen sijaan"
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "tiedostojärjestelmätyyppi %s on sekä valittu että jätetty pois"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Varoitus: "
+
+#: src/df.c:943
+#, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%sliitettyjen tiedostojärjestelmien taulua ei voi lukea"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Käyttö: %s [VALITSIN]... [TIEDOSTO]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Tulosta komennot LS_COLORS-ympäristömuuttujan asettamiseksi.\n"
+"\n"
+"Tulosteen muodon valinta:\n"
+" -b, --sh, --bourne-shell tulosta Bourne shell -tyyppistä koodia\n"
+" -c, --csh, --c-shell tulosta C shell -tyyppistä koodia\n"
+" -p, --print-database tulosta oletukset\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"Jos TIEDOSTO on annettu, sitä lukemalla selvitetään, mitä värejä käytetään\n"
+"millekin tiedostotyypille ja -tunnisteelle. Muussa tapauksessa käytetään\n"
+"esikäsiteltyä tietokantaa. Näiden tiedostojen muodosta saa tietoa\n"
+"suorittamalla komennon â€dircolors --print-databaseâ€.\n"
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s:%lu: virheellinen rivi; toinen symboli puuttuu"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu: tunnistamaton avainsana %s"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<sisäinen>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"valitsimet dircolors:in sisäiseen tietokannan tulostamiseksi\n"
+"ja kuorisyntaksin valitsemiseksi ovat toisensa poissulkevat"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "SHELL-ympäristömuuttujaa ei ole, eikä annettu kuoren tyyppivalitsinta"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Käyttö: %s NIMI\n"
+" tai: %s VALITSIN\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"Tulosta NIMI loppuosa karsittuna viimeisestä /-merkistä alkaen; jos NIMI\n"
+"ei sisällä /-merkkejä, tulostetaan â€.†(tarkoittaen nykyistä hakemistoa).\n"
+"\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+"\n"
+"Esimerkkejä:\n"
+" %s /usr/bin/sort Tuloste: â€/usr/binâ€.\n"
+" %s stdio.h Tuloste: â€.â€.\n"
+
+#: src/du.c:279 src/wc.c:108
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Käyttö: %s [VALITSIN]... [TIEDOSTO]...\n"
+" tai: %s [VALITSIN]... --files0-from=T\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"Tee yhteenveto kunkin TIEDOSTOn levytilan käytöstä, hakemistoille\n"
+"rekursiivisesti.\n"
+"\n"
+
+#: src/du.c:290
+#, fuzzy
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+" -a, --all näytä määrät kaikille tiedostoille, ei vain\n"
+" hakemistoille\n"
+" --apparent-size näytä nimelliset koot levytilan käytön sijaan; "
+"vaikka\n"
+" nimelliskoko on yleensä pienempi, se voi olla "
+"myös\n"
+" suurempi johtuen (â€hajanaistenâ€) tiedostojen\n"
+" rei'istä, sisäisestä pirstoutumisesta, "
+"epäsuorista\n"
+" lohkoista, ym.\n"
+" -B, --block-size=KOKO käytä KOKO-tavuisia lohkoja\n"
+" -b, --bytes sama kuin â€--apparent-size --block-size=1â€\n"
+" -c, --total näytä myös kokonaismäärä\n"
+" -D, --dereference-args jos TIEDOSTO(t) ovat symbolisia linkkejä, laske\n"
+" mukaan linkkien kohteiden koot\n"
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+#, fuzzy
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+" -H kuten --si, mutta antaa myös varoituksen; toiminta\n"
+" muuttuu pian samaksi kuin --dereference-args (-D)\n"
+" -h, --human-readable näytä koot helppolukuisessa muodossa (esim. 1K 234M "
+"2G)\n"
+" -H, --si sama, mutta monikerta on 1000, ei 1024 (ei "
+"suositeltava)\n"
+" -k sama kuin --block-size=1K\n"
+" -l, --count-links laske kovien linkkien koot monta kertaa\n"
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference seuraa kaikkia symbolisia linkkejä\n"
+" -P, --no-dereference älä seuraa mitään symbolisia linkkejä (tämä on "
+"oletus)\n"
+" -0, --null päätä jokainen tulosterivi 0-tavuun, ei "
+"rivinvaihtoon\n"
+" -S, --separate-dirs älä laske mukaan alihakemistojen kokoa\n"
+" -s, --summarize näytä vain kokonaismäärä jokaiselle argumentille\n"
+
+#: src/du.c:323
+#, fuzzy
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system ohita muilla tiedostojärjestelmillä sijaitsevat\n"
+" hakemistot\n"
+" -X TIED, --exclude-from=TIED Jätä laskematta tiedostot, jotka täsmäävät\n"
+" vähintään yhteen TIEDostossa olevaan hahmoon.\n"
+" --exclude=HAHMO jätä laskematta tiedostot, jotka täsmäävät HAHMOon.\n"
+" --max-depth=N näytä kokonaismäärä hakemistolle (tai valitsimen --"
+"all\n"
+" kanssa tiedostolle) vain, jos se on korkeintaan N\n"
+" tasoa argumenttina annetun alla; --max-depth=0 on\n"
+" sama kuin --summarize\n"
+
+#: src/du.c:332
+#, fuzzy
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+" -S lajittele tiedoston koon mukaan\n"
+" --sort=SANA extension -X, none -U, size -S, time -t,\n"
+" version -v, status -c, time -t, atime -u,\n"
+" access -u, use -u\n"
+" --time=SANA kun -l annettu, näytä muutosajan sijaan SANAn\n"
+" mukainen aika: atime, access, use, ctime tai\n"
+" status; annettua aikaa käytetään lajitteluun,\n"
+" jos --sort=time\n"
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "yhteensä"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+"VAROITUS: käytä valitsinta --si, ei -H; valitsimen -H merkitys muuttuu\n"
+"pian samaksi kuin --dereference-args (-D)"
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "virheellinen enimmäissyvyys %s"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr ""
+"valitsin --megabytes ei ole suositeltava; käytä valitsinta -m sen sijaan"
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "yhteenvetoa ja kaikkia merkintöjä ei voi näyttää samaan aikaan"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "varoitus: yhteenvedon teko on sama asia kuin --max-depth=0"
+
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr ""
+"varoitus: yhteenvedon teko on ristiriidassa valitsimen --max-depth=%lu kanssa"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+#: src/du.c:960 src/wc.c:662
+#, fuzzy, c-format
+msgid "cannot read file names from %s"
+msgstr "tiedostonimiä %s ja %s ei voi vertailla"
+
+#: src/du.c:1000 src/du.c:1003
+msgid "invalid zero-length file name"
+msgstr "virheellinen tyhjä tiedostonimi"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Käyttö: %s [VALITSIN]... [MERKKIJONO]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+"Kaiuta MERKKIJONO(t) vakiotulosteeseen.\n"
+"\n"
+" -n älä lisää rivinvaihtoa loppuun\n"
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"Seuraavat ohjausmerkit tunnistetaan, jos valitsin -e on annettu:\n"
+"\n"
+" \\0NNN merkki, jonka ASCII-koodi on NNN (oktaaliluku)\n"
+" \\\\ kenoviiva\n"
+" \\a hälytysmerkki (BEL)\n"
+" \\b askelpalautin\n"
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c ei rivinvaihtoa loppuun\n"
+" \\f sivunvaihto\n"
+" \\n rivinvaihto\n"
+" \\r vaununpalautus\n"
+" \\t vaakasarkain\n"
+" \\v pystysarkain\n"
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr ""
+"Käyttö: %s [VALITSIN]... [-] [NIMI=ARVO]... [KOMENTO [ARGUMENTTI]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Aseta kullekin ympäristömuuttujalle NIMI vastaava ARVO ja aja KOMENTO.\n"
+"\n"
+" -i, --ignore-environment aloita tyhjällä ympäristöllä\n"
+" -u, --unset=NIMI poista muuttuja ympäristöstä\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"Pelkkä â€-†tekee saman kuin -i. Ilman KOMENTOa tulostetaan seurauksena\n"
+"saatava ympäristö.\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Muunna kunkin TIEDOSTOn sisältämät sarkaimet välilyönneiksi, kirjoittaen\n"
+"vakiotulosteeseen. Jos TIEDOSTOa ei ole annettu, tai se on â€-â€, luetaan\n"
+"vakiosyötettä.\n"
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial älä muunna ei-tyhjeen jälkeisiä sarkaimia\n"
+" -t, --tabs=KOKO aseta sarkaimen kooksi KOKO, ei 8\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+" -t, --tabs=LUETTELO käytä pilkuilla erotettua luetteloa sarkainten "
+"kohdista\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr "sarkainasetin %s on liian suuri"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "sarkainkoko sisältää virheellisen merkin(/merkkejä): %s"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "sarkaimen koko ei voi olla 0"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "sarkainkokojen on oltava nousevia"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, fuzzy, c-format
+msgid "input line is too long"
+msgstr "Ryhmänimi on liian pitkä"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Käyttö: %s LAUSEKE\n"
+" tai: %s VALITSIN\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"\n"
+"Tulosta LAUSEKKEen arvo vakiotulosteeseen. Tyhjä rivi alla erottaa\n"
+"kasvavat laskujärjestysryhmät. LAUSEKE voi olla:\n"
+"\n"
+" ARG1 | ARG2 ARG1 jos se ei ole tyhjä eikä 0, muutoin ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 jos kumpikaan ei ole tyhjä eikä 0, muutoin 0\n"
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"\n"
+" ARG1 < ARG2 ARG1 on pienempi kuin ARG2\n"
+" ARG1 <= ARG2 ARG1 on pienempi tai yhtäsuuri kuin ARG2\n"
+" ARG1 = ARG2 ARG1 on yhtäsuuri kuin ARG2\n"
+" ARG1 != ARG2 ARG1 on erisuuri kuin ARG2\n"
+" ARG1 >= ARG2 ARG1 on suurempi tai yhtäsuuri kuin ARG2\n"
+" ARG1 > ARG2 ARG1 on suurempi kuin ARG2\n"
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+"\n"
+" ARG1 + ARG2 ARG1:n ja ARG2:n aritmeettinen summa\n"
+" ARG1 - ARG2 ARG1:n ja ARG2:n aritmeettinen erotus\n"
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+"\n"
+" ARG1 * ARG2 aritmeettinen tulo ARG1 kerrottuna ARG2:lla\n"
+" ARG1 / ARG2 aritmeettinen osamäärä ARG1 jaettuna ARG2:lla\n"
+" ARG1 % ARG2 aritmeettinen jakojäännös ARG1 jaettuna ARG2:lla\n"
+
+# köh, säle?
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"\n"
+" MERKKIJONO : SÄÄNNLAUS ankkuroitu SÄÄNNLAUSeen mallihaku MERKKIJONOsta\n"
+"\n"
+" match MERKKIJONO SÄÄNNLAUS sama kuin MERKKIJONO : SÄÄNNLAUS\n"
+" substr MERKKIJONO SIJA PITUUS MERKKIJONOn osajono, SIJA 1:stä alkaen\n"
+" index MERKKIJONO MERKIT MERKKIJONOn kohta missä jokin MERKEISTÄ on "
+"tai 0\n"
+" length MERKKIJONO MERKKIJONOn pituus\n"
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+" + JONO tulkitse JONO kuten merkkijono, vaikka se "
+"olisi\n"
+" avainsana kuten â€match†tai operaattori kuten "
+"â€/â€\n"
+"\n"
+" ( LAUSEKE ) LAUSEKKEen arvo\n"
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"Huomaa, että monet operaattorit täytyy suojata kuorilta.\n"
+"Vertailut ovat numeerisille argumenteille aritmeettisia, muille \n"
+"sanakirjamaisia.\n"
+"Mallihaut palauttavat merkkien \\( ja \\) väliin täsmäävän merkkijonon tai\n"
+"tyhjän. Merkkien \\( ja \\) puuttuessa palautuu täsmäävien merkkien määrä "
+"tai 0.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "syntaksivirhe"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "virhe säännöllisen lausekkeen haussa"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "ei-numeerinen argumentti"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "nollalla jako"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Käyttö: %s [LUKU]...\n"
+" tai: %s VALITSIN\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"Näytä kunkin LUVUN alkutekijät.\n"
+"\n"
+
+#: src/factor.c:85
+#, fuzzy
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+" Tulosta kokonaisLUKUjen tekijät. Jos argumentteja ei ole annettu,\n"
+" luvut luetaan vakiosyötteestä.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s on liian suuri"
+
+#: src/factor.c:158
+#, c-format
+msgid "%s is not a valid positive integer"
+msgstr "%s ei ole kelvollinen positiivinen kokonaisluku"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Käyttö: %s [-NUMEROT] [VALITSIN]... [TIEDOSTO]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"Muotoile kukin TIEDOSTO(je)n sisältämä kappale, kirjoittaen "
+"vakiotulosteeseen.\n"
+"Jos TIEDOSTOa ei anneta tai se on â€-â€, luetaan vakiosyötettä.\n"
+"\n"
+
+#: src/fmt.c:282
+#, fuzzy
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin säilytä kahden ensimmäisen rivin sisennys\n"
+" -p, --prefix=MJONO yhdistä vain rivit, jotka alkavat MJONOlla\n"
+" -s, --split-only rivitä pitkät rivit, mutta älä täytä rivejä\n"
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph ensimmäisen rivin sisennyksen ero toiseen\n"
+" -u, --uniform-spacing yksi väli sanojen, kaksi lauseiden jälkeen\n"
+" (suomen kielessä käytetään YHTÄ väliä "
+"lauseiden\n"
+" jälkeen)\n"
+" -w, --width=LEVEYS enimmäisrivileveys (oletus on 75 saraketta)\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+"virheellinen valitsin -- %c; -LEVEYS tunnistetaan vain, kun se on "
+"ensimmäinen\n"
+"valitsin; käytä -w N sen sijaan"
+
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr "virheellinen leveys: %s"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"Rivitä kustakin TIEDOSTOsta (oletuksena vakiosyöte) luetut syöterivit\n"
+"kirjoittaen vakiotulosteeseen.\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes laske tavuja, ei sarakkeita\n"
+" -s, --spaces katkaise välien kohdalta\n"
+" -w, --width=LEVEYS käytä sarakeleveytenä LEVEYttä oletusarvon 80 sijaan\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, c-format
+msgid "invalid number of columns: %s"
+msgstr "virheellinen sarakemäärä: %s"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Tulosta kunkin TIEDOSTOn 10 ensimmäistä riviä vakiotulosteeseen.\n"
+"Jos TIEDOSTOja on useampi kuin yksi, jokaista ennen näytetään tiedostonimi.\n"
+"Jos TIEDOSTOa ei ole annettu, tai se on â€-â€, luetaan vakiosyötettä.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+" -c, --bytes=[-]N tulosta ensimmäiset N tavua jokaisesta "
+"tiedostosta;\n"
+" jos edeltävä merkki â€-†on annettu, tulosta\n"
+" koko tiedosto lukuunottamatta N:ää viimeistä "
+"tavua\n"
+" -n, --lines=[-]N tulosta ensimmäiset N riviä ensimmäisen 10 "
+"sijaan;\n"
+" jos edeltävä merkki â€-†on annettu, tulosta\n"
+" koko tiedosto lukuunottamatta N:ää viimeistä "
+"riviä\n"
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent älä koskaan tulosta tiedostonimen sisältäviä "
+"otsakkeita\n"
+" -v, --verbose tulosta aina tiedostonimen sisältävät otsakkeet\n"
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"N:n perään voi liittää kertoimen: b 512, k 1024, m 1024².\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "virhe luettaessa tiedostoa %s"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "virhe kirjoitettaessa tiedostoa %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr "%s: tiedosto on kutistunut liikaa"
+
+#: src/head.c:230 src/head.c:1046
+#, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s: tavumäärä on liian suuri"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: siirtyminen takaisin alkuperäiseen siirtymään ei onnistu"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: siirtyminen kohtaan %s ei onnistu"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "tiedosto-osoitinta ei voi siirtää tiedostossa %s"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s on liian suuri esitettäväksi"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "rivimäärä"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "tavumäärä"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "virheellinen rivimäärä"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "virheellinen tavumäärä"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "virheellinen valitsin -- %c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Käyttö: %s\n"
+" tai: %s VALITSIN\n"
+"Tulostetaan koneen numeerinen tunniste (heksadesimaalisena).\n"
+"\n"
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Käyttö: %s [NIMI]\n"
+" tai: %s VALITSIN\n"
+"Tulosta tai aseta järjestelmän isäntänimi.\n"
+"\n"
+
+#: src/hostname.c:103
+#, c-format
+msgid "cannot set name to %s"
+msgstr "konenimen %s asettaminen järjestelmälle ei onnistu"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+"isäntänimen asetus ei onnistu; tässä järjestelmässä ei ole tätä toimintoa"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "järjestelmän isäntänimen määritys ei onnistu"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Käyttö: %s [VALITSIN]... [KÄYTTÄJÄTUNNUS]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Tulosta KÄYTTÄJÄTUNNUksen tai nykyisen käyttäjän tiedot.\n"
+"\n"
+" -a ei huomioida, mukana yhteensopivuussyistä\n"
+" -g, --group tulosta vain vallitseva ryhmä-ID\n"
+" -G, --groups tulosta kaikkien ryhmien ID:t\n"
+" -n, --name tulosta nimi numeron sijaan -ugG -valitsimilla\n"
+" -r, --real tulosta todellinen ID vallitsevan sijaan -ugG -"
+"valitsimilla\n"
+" -u, --user tulosta vain vallitseva käyttäjä-ID\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"Ilman VALITSIMIA tulostetaan jokin sovelias kokoelma tunnistettua tietoa.\n"
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "pelkän tunnuksen ja pelkän ryhmän tulostus ei onnistu"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr ""
+"pelkkien nimien tai todellisten ID:iden tulostus oletusmuodossa ei onnistu"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Käyttäjää ei ole"
+
+#: src/id.c:205
+#, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "käyttäjä-ID:tä %lu vastaavaa nimeä ei löydy"
+
+#: src/id.c:229
+#, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "ryhmä-ID:tä %lu vastaavaa nimeä ei löydy"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "lisäryhmälistan haku ei onnistu"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " ryhmät="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr "strip-valitsinta ei voi käyttää asennettaessa hakemistoa"
+
+#: src/install.c:321
+#, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "kohdehakemisto ei ole sallittu asennettaessa hakemistoa"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "virheelliset oikeudet %s"
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "tiedoston %s omistajuuden muuttaminen ei onnistu"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "tiedoston %s aikaleimojen asettaminen ei onnistu"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "järjestelmäkutsu fork epäonnistui"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "ohjelmaa strip ei voi ajaa"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "kirjoitetaan tiedostoon %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "virheellinen käyttäjä %s"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "luodaan hakemisto %s"
+
+#: src/install.c:651
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Käyttö: %s [VALITSIN]... [-T] LÄHDE KOHDE\n"
+" tai: %s [VALITSIN]... LÄHDE... HAKEMISTO\n"
+" tai: %s [VALITSIN]... -t HAKEMISTO LÄHDE...\n"
+" tai: %s [VALITSIN]... -d HAKEMISTO...\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"Kolme ensimmäistä muotoa: kopioi LÄHDE KOHTEeseen, tai useita LÄHTEitä\n"
+"olemassaolevaan HAKEMISTOon, asettaen samalla oikeudet ja omistaja/ryhmä.\n"
+"Neljäs muoto: luo annettujen HAKEMISTOjen kaikki (puuttuvat) ylähakemistot.\n"
+"\n"
+
+#: src/install.c:667
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup[=MENETELMÄ] varmuuskopioi jokainen olemassaoleva\n"
+" kohdetiedosto\n"
+" -b kuten --backup, mutta ei hyväksy argumenttia\n"
+" -c (ei huomioida)\n"
+" -d, --directory kohtele kaikkia argumentteja hakemistoniminä; luo\n"
+" kaikki annetut hakemistot alihakemistoineen\n"
+
+#: src/install.c:674
+#, fuzzy
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D luo kaikki KOHTEen (puuttuvat) ylähakemistot "
+"viimeistä\n"
+" lukuunottamatta, kopioi sitten LÄHDE KOHTEeseen;\n"
+" hyödyllinen 1. muodossa\n"
+" -g, --group=RYHMÄ aseta ryhmä, älä käytä prosessin nykyistä ryhmää\n"
+" -m, --mode=OIKEUDET aseta oikeudet (kuten chmod:issa), ei rwxr-xr-x\n"
+" -o, --owner=OMISTAJA aseta omistajuus (vain pääkäyttäjä)\n"
+
+#: src/install.c:681
+#, fuzzy
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps käytä LÄHDEtiedostojen käyttö/muutosaikoja\n"
+" vastaaviin kohdetiedostoihin\n"
+" -s, --strip riisu symbolitaulut, vain 1. ja 2. muodolle\n"
+" -S, --suffix=JÄLKILIITE kumoa tavanomainen varmuuskopion jälkiliite\n"
+" -v, --verbose tulosta kunkin hakemiston nimi luotaessa\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"Varmuuskopion jälkiliite on â€~â€, ellei sitä ole asetettu valitsimella\n"
+"--suffix tai muuttujalla SIMPLE_BACKUP_SUFFIX. Versionhallintamenetelmän\n"
+"voi valita --backup-valitsimella tai muuttujalla VERSION_CONTROL. Arvot\n"
+"ovat seuraavat:\n"
+"\n"
+
+# *** *** *** ***
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"Jos syöteriviparin liitossarakkeet ovat identtisiä, tulosta rivi\n"
+"vakiotulosteeseen. Oletusliitossarake on ensimmäinen sarake, erotettuna\n"
+"tyhjeellä.\n"
+"Kun joko TIEDOSTO1 tai TIEDOSTO2 on -, luetaan vakiosyötettä.\n"
+"\n"
+" -a TIEDNUM tulosta TIEDNUMerosta tulevat paritta jäävät rivit, "
+"missä\n"
+" TIEDNUM on 1 tai 2 (TIEDOSTO1 tai TIEDOSTO2)\n"
+" -e TYHJÄ korvaa puuttuvat syötekentät TYHJÄllä\n"
+
+#: src/join.c:147
+#, fuzzy
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case älä huomioi kirjainkokoa sarakkeita verrattaessa\n"
+" -j SARAKE sama kuin â€-1 SARAKE -2 SARAKEâ€\n"
+" -o MUOTO noudata MUOTOa tulosteriviä muodostettaessa\n"
+" -t MERKKI käytä MERKKIä syöte- ja tulostesarakkeiden erottimena\n"
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v TIEDNUM kuten -a TIEDNUM, mutta jätä yhdistetyt rivit "
+"tulostamatta\n"
+" -1 SARAKE yhdistä tämä tiedoston 1 SARAKE\n"
+" -2 SARAKE yhdistä tämä tiedoston 2 SARAKE\n"
+
+#: src/join.c:160
+#, fuzzy
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"Ellei ole annettu -t MERKKI, alussa olevat tyhjeet erottavat sarakkeita, ja\n"
+"ne jätetään huomiotta. Muutoin sarakkeita erottaa MERKKI. Jokainen SARAKE\n"
+"on 1:stä lähtien laskettu sarakenumero. MUODOssa on yksi tai useampi "
+"pilkuilla\n"
+"tai tyhjeillä erotettu määritys, joista jokainen on â€TIEDNUM.SARAKE†tai "
+"â€0â€.\n"
+"OletusMUOTO tulostaa liitossarakkeen, jäljellä olevat sarakkeet TIEDOSTO1:"
+"stä\n"
+"ja jäljellä olevat sarakkeet TIEDOSTO2:sta, kaikki MERKIllä erotettuina.\n"
+"\n"
+"Tärkeää: TIEDOSTO1:n ja TIEDOSTO2:n on oltava lajiteltu liitossarakkeen\n"
+"mukaan.\n"
+
+#: src/join.c:617 src/join.c:812
+#, c-format
+msgid "invalid field number: %s"
+msgstr "virheellinen sarakenumero: %s"
+
+#: src/join.c:638 src/join.c:647
+#, c-format
+msgid "invalid field specifier: %s"
+msgstr "virheellinen saraketarkennin: %s"
+
+#: src/join.c:654
+#, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "virheellinen tiedostonumero sarakemäärityksessä: %s"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr "epäyhteensopivat liitossarakkeet %lu, %lu"
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+# Tarkoitetaanko tässä sarkainta?
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr "tyhjä sarkain"
+
+#: src/join.c:870 src/sort.c:3031
+#, c-format
+msgid "multi-character tab %s"
+msgstr "monimerkkinen sarkain %s"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr "epäyhteensopivat sarkaimet"
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "vakiosyötettä ei voi käyttää molempina tiedostoina"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"Käyttö: %s [-s SIGNAALI | -SIGNAALI] PID...\n"
+" tai: %s -l [SIGNAALI]...\n"
+" tai: %s -t [SIGNAALI]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+"Välitä signaaleja prosesseille tai luettele signaalit.\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+" -s, --signal=SIGNAALI, -SIGNAALI\n"
+" anna välitettävän signaalin nimi tai numero\n"
+" -l, --list luettele signaalien nimet tai muunna niitä numeroiksi/"
+"niistä numeroita\n"
+" -t, --table tulosta tietoja signaaleista taulukkomuodossa\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+"\n"
+"SIGNAALI voi olla signaalin nimi kuten â€HUPâ€, tai signaalin numero "
+"kutenâ€1â€,\n"
+"tai signaalilla keskeytetyn prosessin poistumistila. PID on kokonaisluku;\n"
+"negatiivisena se yksilöi prosessiryhmän.\n"
+"\n"
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: virheellinen signaali"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: virheellinen prosessi-ID"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "virheellinen valitsin -- %c"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: useita signaaleja annettu"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "useita -l tai -t -valitsimia annettu"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "signaalin yhdistäminen valitsimen -l tai -t kanssa ei onnistu"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr "prosessi-ID:tä ei ole annettu"
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Käyttö: %s TIED1 TIED2\n"
+" tai: %s VALITSIN\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+"Kutsu linkitysfunktiota linkin TIED2 luomiseksi olemassaolevaan TIED1:een.\n"
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "linkkiä %s kohteeseen %s ei voi luoda"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+"%s: varoitus: kovan linkin tekeminen symboliseen linkkiin ei ole siirrettävää"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: kova linkki ei ole sallittu hakemistolle"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: hakemistoa ei voi korvata"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: korvataanko tiedosto %s? "
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "luodaan symbolinen linkki %s kohteeseen %s"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "luodaan symbolinen linkki %s kohteeseen %s"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "luodaan kova linkki %s kohteeseen %s"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "luodaan kova linkki %s kohteeseen %s"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "luodaan kova linkki %s kohteeseen %s"
+
+#: src/ln.c:324
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Käyttö: %s [VALITSIN]... LÄHDE KOHDE (1. muoto)\n"
+" tai: %s [VALITSIN]... LÄHDE... HAKEMISTO (2. muoto)\n"
+" tai: %s -d [VALITSIN]... HAKEMISTO... (3. muoto)\n"
+
+#: src/ln.c:331
+#, fuzzy
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"Luo linkki annettuun KOHTEeseen.\n"
+"Jos LINKIN_NIMEÄ ei ole annettu, luodaan nykyiseen hakemistoon linkki, "
+"jolla\n"
+"on sama tiedostonimi kuin KOHTEella. Käytettäessä toista muotoa useamman "
+"kuin\n"
+"yhden KOHTEen kanssa, viimeisen argumentin on oltava hakemisto; luo "
+"HAKEMISTOon\n"
+"linkit kuhunkin KOHTEeseen. Oletuksena luodaan kovia linkkejä, symbolisia\n"
+"valitsimen --symbolic kanssa. Jokaisen KOHTEen on oltava olemassa luotaessa\n"
+"kovia linkkejä.\n"
+"\n"
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup[=MENETELMÄ] varmuuskopioi jokainen olemassaoleva\n"
+" kohdetiedosto\n"
+" -b kuten --backup, mutta ei hyväksy parametria\n"
+" -d, -F, --directory salli pääkäyttäjän yrittää hakemistojen\n"
+" kovalinkitystä (huom: todennäköisesti\n"
+" epäonnistuu järjestelmän rajoitusten vuoksi\n"
+" myös pääkäyttäjältä)\n"
+" -f, --force poista olemassaolevat kohdetiedostot\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference kohtele hakemistoon osoittavia symlinkkejä\n"
+" kuin tavallisia tiedostoja\n"
+" -i, --interactive kysy ennen kohteiden poistamista\n"
+" -s, --symbolic tee symbolisia linkkejä kovien linkkien "
+"sijaan\n"
+
+#: src/ln.c:356
+#, fuzzy
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" -S, --suffix=JÄLKILIITE kumoa tavanomainen varmuuskopion jälkiliite\n"
+" --target-directory=HAKEMISTO määrittele HAKEMISTOn, jonka alle "
+"linkit\n"
+" luodaan\n"
+" -v, --verbose tulosta kunkin tiedoston nimi ennen "
+"linkitystä\n"
+
+#: src/ln.c:484
+#, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "Valitsimia --target-directory ja --no-target-directory ei voi yhdistää"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Käyttö: %s [VALITSIN]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"Tulosta nykyisen käyttäjän nimi.\n"
+"\n"
+
+#: src/logname.c:89
+#, c-format
+msgid "no login name"
+msgstr "ei sisäänkirjautumistunnusta"
+
+#: src/ls.c:684
+#, fuzzy
+msgid "%b %e %Y"
+msgstr "%e. %b %Y"
+
+#: src/ls.c:692
+#, fuzzy
+msgid "%b %e %H:%M"
+msgstr "%e. %b %H:%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "ei huomioida virheellistä arvoa ympäristömuuttujassa QUOTING_STYLE: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "ei huomioida virheellistä leveyttä ympäristömuuttujassa COLUMNS: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr ""
+"ei huomioida virheellistä sarkainkokoa ympäristömuuttujassa TABSIZE: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "virheellinen rivileveys: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "virheellinen sarkainkoko: %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "virheellinen ajan muoto %s"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "tunnistamaton etuliite: %s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "jäsentymätön arvo LS_COLORS-ympäristömuuttujalle"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "hakemiston %s avaaminen ei onnistu"
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "hakemiston %s laitetta ja i-solmua ei voida määrittää"
+
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "ei luetella jo lueteltua hakemistoa: %s"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "luetaan hakemistoa %s"
+
+#: src/ls.c:2410
+#, fuzzy, c-format
+msgid "closing directory %s"
+msgstr "ohitetaan hakemisto %s"
+
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "tiedostonimiä %s ja %s ei voi vertailla"
+
+#: src/ls.c:4277
+#, fuzzy
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"Luettele TIEDOSTOjen tiedot (oletuksena nykyinen hakemisto).\n"
+"Lajittele merkinnät aakkosjärjestykseen ellei mitään valitsimista -cftuSUX\n"
+"tai --sort ole annettu.\n"
+"\n"
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all älä piilota merkintöjä, joiden alussa on .\n"
+" -A, --almost-all älä luettele hakemistoja . ja ..\n"
+" --author kun -l annettu, tulosta kunkin tiedoston "
+"tekijä\n"
+" -b, --escape tulosta oktaaliset suojaukset ei-graafisille\n"
+" merkeille\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=KOKO käytä KOKO-tavuisia lohkoja\n"
+" -B, --ignore-backups älä luettele merkintöjä, joiden lopussa on ~\n"
+" -c valitsinten -lt kanssa: käytä lajitteluun ja\n"
+" näytä ctime (tiedoston tilatietojen\n"
+" viimeisimmän muutoksen ajankohta)\n"
+" valitsimen -l kanssa: näytä ctime ja "
+"lajittele\n"
+" nimen mukaan\n"
+" muuten: lajittele ctimen mukaan\n"
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C luettele merkinnät sarakkeissa\n"
+" --color[=MILLOIN] määrää, käytetäänkö väriä erottamaan tiedosto-\n"
+" tyyppejä. MILLOIN voi olla â€neverâ€, â€alwaysâ€\n"
+" tai â€autoâ€.\n"
+" -d, --directory luettele hakemistomerkinnät, ei niiden "
+"sisältöä,\n"
+" äläkä seuraa symbolisia linkkejä\n"
+" -D, --dired tuota tuloste Emacsin dired-muodossa\n"
+
+#: src/ls.c:4307
+#, fuzzy
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f älä lajittele, käytä -aU, poista käytöstä -lst\n"
+" -F, --classify lisää merkintöihin tunnistin\n"
+" (yksi merkeistä */=@|)\n"
+" --format=SANA across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time kuten -l --time-style=full-iso\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+#, fuzzy
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all sisällytä myös 0 lohkon kokoiset "
+"tiedostojärjestelmät\n"
+" -B, --block-size=KOKO käytä KOKO-tavuisia lohkoja\n"
+" -h, --human-readable näytä koot helppolukuisessa muodossa (esim. 1K 234M "
+"2G)\n"
+" -H, --si sama kuin edellä, mutta monikerta on 1000, ei 1024\n"
+
+#: src/ls.c:4328
+#, fuzzy
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+" -g kuten -l, mutta ei näytä omistajaa\n"
+" -G, --no-group kuten -l, mutta ei näytä ryhmää\n"
+" -h, --human-readable kun -l annettu, näytä koot helppolukuisessa\n"
+" muodossa (esim. 1K 234M 2G)\n"
+" --si sama kuin edellä, mutta kantalukuna 1000, ei "
+"1024\n"
+" -H, --dereference-command-line\n"
+" seuraa komentorivillä annettuja symbolisia\n"
+" linkkejä\n"
+" --dereference-command-line-symlink-to-dir\n"
+" seuraa kutakin hakemistoon viittaavaa\n"
+" komentorivillä annettua symbolista linkkiä\n"
+" --hide=HAHMO älä luettele HAHMOon täsmääviä merkintöjä\n"
+" (-a ja -A kumoavat tämän valitsimen)\n"
+
+#: src/ls.c:4337
+#, fuzzy
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=SANA lisää SANAn mukainen ilmaisin merkintöjen "
+"nimiin:\n"
+" none (oletus), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode kun -l annettu, tulosta kunkin tiedoston\n"
+" i-solmun numero\n"
+" -I, --ignore=HAHMO älä luettele HAHMOon täsmääviä merkintöjä\n"
+" -k sama kuin --block-size=1K\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l käytä pitkää luettelumuotoa\n"
+" -L, --dereference näytettäessä symbolisen linkin tietoja,\n"
+" näytä linkin kohteen tiedot, ei linkin\n"
+" itsensä tietoja\n"
+" -m näytä tiedostonimet pilkuilla erotettuna\n"
+" luettelona\n"
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid kuten -l, mutta luettele käyttäjä- ja ryhmä-ID:"
+"t\n"
+" numeerisina\n"
+" -N, --literal tulosta raa'at merkintänimet (älä käsittele\n"
+" esim. ohjausmerkkejä)\n"
+" -o kuten -l, mutta älä näytä ryhmätietoja\n"
+" -p, --indicator-style=slash\n"
+" lisää hakemistoihin ilmaisin â€/â€\n"
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars tulosta �†ei-graafisten merkkien sijaan\n"
+" --show-control-chars näytä ei-graafiset merkit sellaisinaan (on\n"
+" oletus, ellei ohjelma ole â€ls†ja\n"
+" tulostelaitteena pääte)\n"
+" -Q, --quote-name sijoita tiedostonimet lainausmerkkeihin\n"
+" --quoting-style=SANA käytä lainaustapaa SANA tiedostonimille:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+
+#: src/ls.c:4368
+#, fuzzy
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse käännä lajittelun järjestys\n"
+" -R, --recursive luettele alihakemistot rekursiivisesti\n"
+" -s, --size kun -l annettu, tulosta kunkin tiedoston\n"
+" koko lohkoina\n"
+
+#: src/ls.c:4373
+#, fuzzy
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S lajittele tiedoston koon mukaan\n"
+" --sort=SANA extension -X, none -U, size -S, time -t,\n"
+" version -v, status -c, time -t, atime -u,\n"
+" access -u, use -u\n"
+" --time=SANA kun -l annettu, näytä muutosajan sijaan SANAn\n"
+" mukainen aika: atime, access, use, ctime tai\n"
+" status; annettua aikaa käytetään lajitteluun,\n"
+" jos --sort=time\n"
+
+#: src/ls.c:4382
+#, fuzzy
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=TYYLI kun -l annettu, näytä ajat käyttäen TYYLIä:\n"
+" full-iso, long-iso, iso, locale, +MUOTO.\n"
+" MUOTO on sama kuin â€dateâ€-komennolle;\n"
+" jos MUOTO on MUOTO1<rivinvaihto>MUOTO2,\n"
+" MUOTO1:tä sovelletaan vanhoihin tiedostoihin,\n"
+" MUOTO2:ta uusiin; jos TYYLIn edessä on "
+"â€posix-â€,\n"
+" TYYLIä käytetään vain maa-asetuston ollessa "
+"muu\n"
+" kuin POSIX\n"
+" -t lajittele muutosajan mukaan\n"
+" -T, --tabsize=LEVEYS aseta sarkainkooksi LEVEYS, ei 8\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u valitsinten -lt kanssa: käytä lajitteluun ja\n"
+" näytä käyttöaika\n"
+" valitsimen -l kanssa: näytä käyttöaika ja\n"
+" lajittele nimen mukaan\n"
+" muuten: lajittele käyttöajan mukaan\n"
+" -U älä lajittele; luettele merkinnät\n"
+" hakemistojärjestyksessä\n"
+" -v lajittele version mukaan\n"
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -w, --width=LEVEYS oleta ruudun leveydeksi LEVEYS\n"
+" -x luettele merkinnät riveittäin, ei "
+"sarakkeittain\n"
+" -X aakkosta merkinnän päätteen mukaan\n"
+" -1 luettele vain yksi tiedosto yhdellä rivillä\n"
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"Värejä ei oletuksena käytetä erottamaan tiedostojen tyyppejä. Tämä on sama\n"
+"kuin --color=none. Valitsimen --color käyttäminen ilman valinnaista\n"
+"MILLOIN-argumenttia on sama kuin --color=always. Valitsimen --color=auto "
+"kanssa\n"
+"värikoodit tulostetaan vain, jos vakiotuloste on kytketty päätteeseen "
+"(tty).\n"
+"Väreihin voi vaikuttaa LS_COLORS-ympäristömuuttujalla, jonka voi asettaa\n"
+"helposti dircolors-komennolla.\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+"\n"
+"Paluuarvo on normaalisti 0, pienissä ongelmissa 1 ja suurissa\n"
+"ongelmissa 2.\n"
+
+#: src/md5sum.c:150
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Käyttö: %1$s [VALITSIN] [TIEDOSTO]...\n"
+"Tulosta tai tarkista (%3$d-bittisiä) %2$s-tarkistussummia.\n"
+"Jos TIEDOSTOa ei ole annettu, tai se on â€-â€, luetaan vakiosyötettä.\n"
+"\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+"\n"
+" -B, --binary kirjoita binäärimuodossa konsolilaitteelle.\n"
+"\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"\n"
+"Seuraavat kaksi valitsinta ovat käytettävissä vain tarkastettaessa summia:\n"
+" --status älä tulosta mitään, paluuarvo kertoo onnistumisen\n"
+" -w, --warn varoita väärin muotoilluista summariveistä\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"Summien laskutapa on kuvattu dokumentissa %s. Tarkistettaessa syötteen\n"
+"tulisi olla tämän ohjelman aikaisempaa tulostetta. Oletustilassa tulostuu\n"
+"rivi, jolla on tarkistussumma, tyyppiä ilmaiseva merkki (â€*†= binääri,\n"
+"††= teksti), ja TIEDoston nimi. \n"
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: liian monta tarkistussummariviä"
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %<PRIuMAX>: väärin muotoiltu %s-tarkistussummarivi"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: avaaminen tai luku EPÄONNISTUI\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "EI TÄSMÄÄ"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "OK"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: lukuvirhe"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: kelvollisesti muotoiltuja %s-tarkistussummarivejä ei löytynyt"
+
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "VAROITUS: %<PRIuMAX> tiedosto %<PRIuMAX> luetellusta jäi lukematta"
+msgstr[1] "VAROITUS: %<PRIuMAX> tiedostoa %<PRIuMAX> luetellusta jäi lukematta"
+
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] ""
+"VAROITUS: %<PRIuMAX> tarkistussumma %<PRIuMAX> lasketusta EI TÄSMÄNNYT"
+msgstr[1] ""
+"VAROITUS: %<PRIuMAX> tarkistussummaa %<PRIuMAX> lasketusta EI TÄSMÄNNYT"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"valitsimet --binary ja --text ovat merkityksettömiä tarkastettaessa "
+"tarkistussummia"
+
+# onko verify tarkastamista, todentamista vai varmentamista?
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr ""
+"valitsin --status on merkityksellinen vain tarkastettaessa tarkistussummia"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr ""
+"valitsin --warn on merkityksellinen vain tarkastettaessa tarkistussummia"
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Käyttö: %s [VALITSIN] HAKEMISTO...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"Luo HAKEMISTO(t), elleivät ne ole jo olemassa.\n"
+"\n"
+
+# Ensimmäinen kohta on aika hämärä alkutekstissä.
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+" -m, --mode=OIK aseta oikeudet (kuten chmodilla)\n"
+" -p, --parents ei virhettä jos jo olemassa, luo tarvittavat "
+"ylähakemistot\n"
+" -v, --verbose näytä viesti kutakin hakemistoa luodessa\n"
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "luotiin hakemisto %s"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Käyttö: %s [VALITSIN] NIMI...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr "Luo nimettyjä putkia (FIFOja) annetuilla NIMIllä.\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+" -m, --mode=OIK aseta oikeudet (kuten chmodilla), ei a=rw vaan umask\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "virheelliset oikeudet"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Käyttö: %s [VALITSIN]... NIMI TYYPPI [MAJOR MINOR]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"Luo TYYPIn mukainen erikoistiedosto NIMI.\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+"\n"
+"Sekä MAJOR- että MINOR-arvo on annettava, jos TYYPPI on b, c tai u, ja ne\n"
+"on jätettävä antamatta, jos tyyppi on p. Jos MAJOR tai MINOR alkaa "
+"merkeillä\n"
+"0x tai 0X, se tulkitaan heksadesimaaliluvuksi; jos numerolla 0, "
+"oktaaliluvuksi;\n"
+"muussa tapauksessa kymmenkantaiseksi luvuksi. TYYPPI voi olla:\n"
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+" b luo lohkoerikoistiedosto (puskuroitu)\n"
+" c, u luo merkkierikoistiedosto (puskuroimaton)\n"
+" p luo FIFO-putki\n"
+
+#: src/mknod.c:146
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"Major- ja minor-laitearvot on annettava luotaessa\n"
+"erikoistiedostoja"
+
+#: src/mknod.c:156
+msgid "Fifos do not have major and minor device numbers."
+msgstr "FIFO-putkilla ei ole major- ja minor-laitearvoja."
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "lohkoerikoistiedostot eivät ole tuettuja"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "merkkierikoistiedostot eivät ole tuettuja"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "virheellinen laitteen major-arvo %s"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "virheellinen laitteen minor-arvo %s"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "virheellinen laite %s %s"
+
+#: src/mknod.c:216
+#, c-format
+msgid "invalid device type %s"
+msgstr "virheellinen laitetyyppi %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Uudelleennimeä LÄHDE -> KOHDE, tai siirrä LÄHDE(teet) HAKEMISTOon.\n"
+"\n"
+
+#: src/mv.c:297
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup[=OHJAUS] varmuuskopioi jokainen olemassaoleva\n"
+" kohdetiedosto\n"
+" -b kuten --backup, mutta ei hyväksy argumenttia\n"
+" -f, --force älä kysy ennen ylikirjoitusta\n"
+" (vastaava kuin --reply=yes)\n"
+" -i, --interactive kysy ennen ylikirjoitusta\n"
+" (vastaava kuin --reply=query)\n"
+
+#: src/mv.c:303
+#, fuzzy
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --strip-trailing-slashes poista /-merkit jokaisen LÄHDEargumentin\n"
+" perästä\n"
+" -S, --suffix=JÄLKILIITE käytä annettua JÄLKILIITEttä "
+"varmuuskopioiden\n"
+" nimissä\n"
+
+#: src/mv.c:308
+#, fuzzy
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --target-directory=HAKEMISTO siirrä kaikki LÄHDEargumentit\n"
+" kohdeHAKEMISTOon\n"
+" -u, --update siirrä vain, jos LÄHDEtiedosto on uudempi\n"
+" kuin kohdetiedosto, tai kohdetiedosto "
+"puuttuu\n"
+" -v, --verbose selitä, mitä tapahtuu\n"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Käyttö: %s [VALITSIN] [KOMENTO [ARG]...]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "virheellinen argumentti: %s"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "kun säätöarvo on annettu, on komento pakollinen"
+
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "järjestelmän nimen haku ei onnistu"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "ajan asetus ei onnistu"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Kirjoita kukin TIEDOSTO vakiotulosteeseen rivinumerointi lisäten.\n"
+"Jos TIEDOSTOa ei ole annettu, tai se on â€-â€, luetaan vakiosyötettä.\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=TYYLI käytä TYYLIä rungon rivien numerointiin\n"
+" -d, --section-delimiter=MM käytä MM:ää loogisten sivujen "
+"erottamiseen\n"
+" -f, --footer-numbering=TYYLI käytä TYYLIä alatunnisterivien "
+"numerointiin\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=TYYLI käytä TYYLIä otsakerivien numerointiin\n"
+" -i, --page-increment=LISÄYS rivinumeron lisäys kullakin rivillä\n"
+" -l, --join-blank-lines=MÄÄRÄ MÄÄRÄ tyhjää riviä lasketaan yhdeksi\n"
+" -n, --number-format=MUOTO lisää rivinumerot annetussa MUODOssa\n"
+" -p, --no-renumber älä aloita sivunumerointia alusta "
+"loogisilla\n"
+" sivuilla\n"
+" -s, --number-separator=MJONO lisää MJONO (mahdollisen) rivinumeron "
+"perään\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=NUMERO ensimmäinen rivinumero jokaisella "
+"loogisella sivulla\n"
+" -w, --number-width=MÄÄRÄ käytä MÄÄRÄ saraketta rivinumeroille\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"Oletuksena valitaan -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. MM ovat kaksi\n"
+"rajoitinmerkkiä, jotka erottavat kaksi loogista sivua; toisen merkin\n"
+"puuttuminen tulkitaan kuin :. Kenoviiva \\ saadaan aikaan kirjoittamalla \\"
+"\\.\n"
+"TYYLI on yksi seuraavista:\n"
+
+#: src/nl.c:214
+#, fuzzy
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a numeroi kaikki rivit\n"
+" t numeroi vain rivit, jotka eivät ole tyhjiä\n"
+" n älä numeroi mitään rivejä\n"
+" pSÄÄNNLAUS numeroi vain rivit, jotka täsmäävät SÄÄNNLAUSekkeeseen\n"
+"\n"
+"MUOTO on yksi seuraavista:\n"
+"\n"
+" ln tasattu vasemmalle, ei etunollia\n"
+" rn tasattu oikealle, ei etunollia\n"
+" rz tasattu oikealle, etunollat\n"
+"\n"
+
+#: src/nl.c:281
+#, c-format
+msgid "line number overflow"
+msgstr "rivinumeroinnin ylivuoto"
+
+#: src/nl.c:479
+#, c-format
+msgid "invalid header numbering style: %s"
+msgstr "virheellinen otsakkeen numerointityyli: %s"
+
+#: src/nl.c:487
+#, c-format
+msgid "invalid body numbering style: %s"
+msgstr "virheellinen rungon numerointityyli: %s"
+
+#: src/nl.c:495
+#, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "virheellinen alatunnisteen numerointityyli: %s"
+
+#: src/nl.c:504
+#, c-format
+msgid "invalid starting line number: %s"
+msgstr "virheellinen aloitusrivin numero: %s"
+
+#: src/nl.c:513
+#, c-format
+msgid "invalid line number increment: %s"
+msgstr "virheellinen rivinumeron lisäys: %s"
+
+#: src/nl.c:525
+#, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "virheellinen tyhjien rivien määrä: %s"
+
+#: src/nl.c:539
+#, c-format
+msgid "invalid line number field width: %s"
+msgstr "virheellinen rivinumerokentän leveys: %s"
+
+#: src/nl.c:558
+#, c-format
+msgid "invalid line numbering format: %s"
+msgstr "virheellinen rivinumerointimuoto: %s"
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Käyttö: %s KOMENTO [ARGUMENTTI]...\n"
+" tai: %s VALITSIN\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+"Aja KOMENTO jättäen linjankatkaisusignaalit huomiotta.\n"
+"\n"
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "jätetään kaikki argumentit huomiotta"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr "tiedoston %s avaaminen epäonnistui"
+
+#: src/nohup.c:161
+#, fuzzy, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "kirjoitetaan tuloste tiedoston %s loppuun"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+"vakiovirhetulosteen kopion asettaminen sulkeutumaan käynnistettäessä "
+"epäonnistui"
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr "vakiovirhetulosteen uudelleenohjaus epäonnistui"
+
+#: src/od.c:307
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Käyttö: %s [VALITSIN]... [TIEDOSTO]...\n"
+" tai: %s [-abcdfilosx]... [TIEDOSTO] [[+]SIIRTYMÄ[.][b]]\n"
+" tai: %s --traditional [VALITSIN]... [TIEDOSTO] [[+]SIIRTYMÄ[.][b]\n"
+" [+][NIMIÖ][.][b]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"Kirjoita yksiselitteinen esitys TIEDOSTOsta vakiotulosteeseen,\n"
+"oletuksena oktaalitavuina. Jos TIEDOSTO-argumentteja annetaan useampi,\n"
+"niistä luetut syötteet yhdistetään samassa järjestyksessä.\n"
+"Jos TIEDOSTOa ei ole annettu, tai se on â€-â€, luetaan vakiosyötettä.\n"
+"\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+"Pitkien valitsinten pakolliset argumentit ovat pakollisia myös lyhyille.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=KANTA päätä miten tiedostosiirtymät tulostetaan\n"
+" -j, --skip-bytes=MÄÄRÄ ohita aluksi MÄÄRÄ syötetavua\n"
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=MÄÄRÄ rajoita vedos MÄÄRÄän syötetavuja\n"
+" -S, --strings[=MÄÄRÄ] tulosta vähintään MÄÄRÄn verran tulostuvia\n"
+" merkkejä sisältävät merkkijonot\n"
+" -t, --format=TYYPPI valitse tulostemuoto tai -muodot\n"
+" -v, --output-duplicates älä käytä *-merkkiä rivien vaientamisen\n"
+" merkitsemiseen\n"
+" -w, --width[=MÄÄRÄ] tulosta MÄÄRÄ tavua kullekin tulosteriville\n"
+" --traditional hyväksy argumentteja perinteisessä muodossa\n"
+
+#: src/od.c:337
+#, fuzzy
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"Perinteisiä muotomäärittelyjä voi yhdistää; ne kertyvät:\n"
+" -a sama kuin -t a, valitse nimetyt merkit\n"
+" -b sama kuin -t oC, valitse oktaalitavut\n"
+" -c sama kuin -t c, valitse ASCII-merkit tai kenoviivasuojaukset\n"
+" -d sama kuin -t u2, valitse etumerkittömät 10-kantaiset lyhyet kok."
+"luvut\n"
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f sama kuin -t fF, valitse liukuluvut\n"
+" -i sama kuin -t dI, valitse 10-kantaiset kokonaisluvut\n"
+" -l sama kuin -t dL, valitse 10-kantaiset pitkät kokonaisluvut\n"
+" -o sama kuin -t o2, valitse 8-kantaiset 2:n tavun yksiköt\n"
+" -s sama kuin -t d2, valitse 10-kantaiset 2:n tavun yksiköt\n"
+" -x sama kuin -t x2, valitse 16-kantaiset 2:n tavun yksiköt\n"
+
+#: src/od.c:353
+#, fuzzy
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"Vanhassa syntaksissa (toinen kutsumuoto), SIIRTYMÄ merkitsee -j SIIRTYMÄ.\n"
+"NIMIÖ on ensimmäisen tulostetun tavun pseudo-osoite, joka suurenee "
+"vedostuksen\n"
+"edistyessä. Etuliite 0x tai 0X merkitsee SIIRTYMÄssä ja NIMIÖssä\n"
+"heksadesimaaliesitystä. Jälkiliitteet voivat olla . oktaaliesitykselle, ja\n"
+"b 512:lla kertomiselle.\n"
+"\n"
+"TYYPPI koostuu yhdestä tai useammasta seuraavista määrityksistä:\n"
+"\n"
+" a nimetty merkki\n"
+" c ASCII-merkki tai kenoviivasuojaus\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[KOKO] etumerkillinen kymmenkantainen luku, KOKO tavua/kokonaisluku\n"
+" f[KOKO] liukuluku, KOKO tavua/kokonaisluku\n"
+" o[KOKO] kahdeksankantainen luku, KOKO tavua/kokonaisluku\n"
+" u[KOKO] etumerkitön kymmenkantainen luku, KOKO tavua/kokonaisluku\n"
+" x[KOKO] kuusitoistakantainen luku, KOKO tavua/kokonaisluku\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"KOKO on luku. Jos tyyppi on d, o, u tai x, KOKO voi olla myös C:\n"
+"sizeof(char, S: sizeof(short), I: sizeof(int) tai L: sizeof(long).\n"
+"Jos TYYPPI on f, KOKO voi myös olla F: sizeof(float), D: sizeof(double)\n"
+"tai L: sizeof(long double).\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"KANTA on d desimaaliesitykselle, o oktaaliselle, x heksadesimaaliselle tai\n"
+"n tyhjälle. TAVUT on heksadesimaalinen etuliitteen 0x tai 0X kanssa, se\n"
+"kerrotaan 512:lla b-jälkiliitteen kanssa, 1024:llä k:n, ja 1048576:lla m:n\n"
+"kanssa. Jälkiliitteen z lisääminen mihin tahansa tyyppiin lisää jokaisen\n"
+"tulosterivin loppuun näkymän tulostuvista merkeistä. "
+
+#: src/od.c:391
+#, fuzzy
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"--string ilman lukuarvoa on 3. --width ilman lukuarvoa on 32.\n"
+"Oletuksena od käyttää -A o -t d2 -w 16.\n"
+
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "virheellinen muotoilumerkkijono %s"
+
+#: src/od.c:693
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"virheellinen muotoilumerkkijono \"%s\";\n"
+"järjestelmä ei tarjoa %lu-tavuista perustyyppiä"
+
+#: src/od.c:812
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"virheellinen muotoilumerkkijono \"%s\";\n"
+"järjestelmä ei tarjoa %lu-tavuista liukulukutyyppiä"
+
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "virheellinen merkki â€%c†muotoilumerkkijonossa â€%sâ€"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "yhdistetyn syötteen lopun yli ei voi ohittaa"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+"virheellinen tulosteosoitteen kanta â€%câ€; sen on oltava yksi merkeistä [doxn]"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "ohitusargumentti"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "rajoitusargumentti"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "merkkijonon vähimmäispituus"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "leveysmääritys"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "tyyppiä ei voi antaa merkkijonoja vedostettaessa"
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr "Yhteensopivuustila tukee vain yhtä tiedostoa."
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr "ohitettavat-tavut + luettavat-tavut on liian suuri"
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "varoitus: virheellinen leveys %lu; käytetään arvoa %d"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: muoto=\"%s\" leveys=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "vakiosyöte on suljettu"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Kirjoita peräkkäisiä vastaavia rivejä kustakin TIEDOSTOsta "
+"vakiotulosteeseen,\n"
+"sarkaimilla erotettuna. Jos TIEDOSTOa ei ole annettu, tai se on â€-â€, "
+"luetaan\n"
+"vakiosyötettä.\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=LUETTELO käytä uudelleen LUETTELOn merkkejä sarkainten\n"
+" sijaan\n"
+" -s, --serial liitä yksi tiedosto kerrallaan rinnakkaisuuden\n"
+" sijaan\n"
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Käyttö: %s [VALITSIN]... NIMI...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "virheellinen merkki %s oikeusmerkkijonossa %s"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr "tyhjä tiedostonimi"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr "%s: tiedostonimen enimmäispituuden selvittäminen epäonnistui"
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Tunnus: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "Tosielämässä: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Hakemisto: "
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Kuori: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Projekti: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "Suunnitelma:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Tunnus"
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr "Nimi"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr " TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Jouten"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Milloin"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Missä"
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Käyttö: %s [VALITSIN]... [TUNNUS]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"\n"
+" -l tuota pitkän mallin tuloste annetuille TUNNUKSILLE\n"
+" -b älä näytä kotihakemistoa ja kuorta pitkässä mallissa\n"
+" -h älä näytä project-tiedostoa pitkässä mallissa\n"
+" -p älä näytä plan-tiedostoa pitkässä mallissa\n"
+" -s lyhyen mallin tuloste, tämä on oletus\n"
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+" -f älä näytä otsakeriviä lyhyessä mallissa\n"
+" -w älä näytä käyttäjän koko nimeä lyhyessä mallissa\n"
+" -i älä näytä käyttäjän koko nimeä ja etäkonetta lyhyessä\n"
+" mallissa\n"
+" -q älä näytä käyttäjän koko nimeä, etäkonetta ja "
+"joutenoloaikaa\n"
+" lyhyessä mallissa\n"
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+"\n"
+"Kevyt â€fingerâ€-ohjelma; tulostaa käyttäjätietoja.\n"
+"utmp-tiedostona %s.\n"
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr ""
+"käyttäjänimeä ei annettu; valitsin -l vaatii vähintään yhden käyttäjänimen"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr "sivuväli"
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr ""
+"puuttuva argumentti valitsimelle â€--pages=ENSIMMÄINEN_SIVU[:VIIMEINEN_SIVU]â€"
+
+#: src/pr.c:916
+#, c-format
+msgid "Invalid page range %s"
+msgstr "Virheellinen sivuväli %s"
+
+#: src/pr.c:981
+#, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "virheellinen rivimäärä valitsimelle â€-n SIVUN_PITUUSâ€: %s"
+
+#: src/pr.c:1005
+#, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "virheellinen aloitusrivinumero valitsimelle â€-N LUKUâ€: %s"
+
+#: src/pr.c:1017
+#, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "virheellinen rivisiirtymä valitsimelle â€-o MARGINAALIâ€: %s"
+
+#: src/pr.c:1058
+#, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "virheellinen merkkimäärä valitsimelle â€-w SIVUN_LEVEYSâ€: %s"
+
+#: src/pr.c:1072
+#, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "virheellinen merkkimäärä valitsimelle â€-W SIVUN_LEVEYSâ€: %s"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "Palstojen määrää ei voi antaa tulostettaessa rinnakkain."
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr ""
+"Sekä tulostusta palstoittaen vaakasuunnassa että rinnakkaista tulostusta ei\n"
+"voi käyttää samaan aikaan."
+
+#: src/pr.c:1202
+#, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr ""
+"ylimääräisiä merkkejä tai virheellinen määrä argumentissa valitsimelle â€-%"
+"câ€: %s"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "sivun leveys on liian pieni"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+"aloitussivunumero %<PRIuMAX> on suurempi kuin sivujen kokonaismäärä %"
+"<PRIuMAX>"
+
+#: src/pr.c:2406
+#, c-format
+msgid "Page number overflow"
+msgstr "Sivunumeroinnin ylivuoto"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr "Sivu %<PRIuMAX>"
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr "Numeroi sivut tai palstoita TIEDOSTO(t) tulostusta varten.\n"
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +ENSIMMÄINEN_SIVU[:VIIMEINEN_SIVU], --pages=ENSIMMÄINEN_SIVU[:"
+"VIIMEINEN_SIVU\n"
+" aloita [lopeta] tulostus sivulta/lle ENSIMMÄINEN_"
+"[VIIMEINEN_]SIVU\n"
+" -PALSTA, --columns=PALSTA\n"
+" tulosta PALSTA palstaa, tulosta alas ellei valitsinta -"
+"a\n"
+" ole annettu. Tasapainota kunkin sivun palstojen\n"
+" rivimäärä.\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across tulosta rivit palstoitettuna vaaka-, ei pystysuunnassa,\n"
+" käytetään yhdessä valitsimen -PALSTA kanssa\n"
+" -c, --show-control-chars\n"
+" käytä hattumerkintää (^G) ja oktaalista "
+"kenoviivamerkintää\n"
+" -d, --double-space\n"
+" tulosta käyttäen kaksinkertaista riviväliä\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=MUOTO\n"
+" käytä MUOTOa otsakkeen päiväyksessä\n"
+" -e[MERKKI[LEVEYS]], --expand-tabs[=MERKKI[LEVEYS]]\n"
+" laajenna syöteMERKIT (sarkaimet) sarkainLEVEYTeen (8)\n"
+" -F, -f, --form-feed\n"
+" käytä arkinsyöttöä rivinvaihtojen sijaan sivujen\n"
+" erottamiseen (3-rivisellä sivuotsakkeella valitsimen -F\n"
+" kanssa, tai 5-rivisellä ja otsakkeella ja lopukkeella\n"
+" ilman valitsinta -F)\n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h OTSAKE, --header=OTSAKE\n"
+" käytä keskitettyä OTSAKEtta sivun otsakkeena "
+"tiedostonimen\n"
+" sijaan,\n"
+" -h \"\" tulostaa tyhjän rivin, älä käytä -h\"\"\n"
+" -i[MERKKI[LEVEYS]], --output-tabs[=MERKKI[LEVEYS]]\n"
+" korvaa välit MERKEILLÄ (sarkaimilla) sarkainLEVEYTeen "
+"(8)\n"
+" -J, --join-lines lomita täydet rivit, poistaa käytöstä valitsimen -W\n"
+" rivitypistyksen, ei saraketasausta, --sep-string"
+"[=MJONO]\n"
+" asettaa erottimet\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l SIVUN_PITUUS, --length=SIVUN_PITUUS\n"
+" aseta sivun pituudeksi SIVUN_PITUUS (66) riviä\n"
+" (tekstirivien oletusmäärä on 56, valitsimen -F kanssa "
+"63)\n"
+" -m, --merge tulosta kaikki tiedostot rinnakkain, yksi kullakin\n"
+" palstalla, typistä rivit, mutta yhdistä täysipituiset "
+"rivit\n"
+" valitsimella -J\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[EROTIN[MÄÄRÄ]], --number-lines[=EROTIN[MÄÄRÄ]]\n"
+" numeroi rivit, käytä MÄÄRÄ (5) numeroa, sitten EROTINta\n"
+" (sarkain), oletuslaskeminen alkaa syötetiedoston 1. "
+"riviltä\n"
+" -N LUKU, --first-line-number=LUKU\n"
+" aloita laskeminen LUVUlla ensimmäisen tulostetun sivun\n"
+" 1. riviltä (katso +ENSIMMÄINEN_SIVU)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o MARGINAALI, --indent=MARGINAALI\n"
+" tulosta jokaisen rivin alkuun MARGINAALI (nolla) väliä,\n"
+" ei vaikuta valitsimiin -w tai -W, MARGINAALI lisätään\n"
+" arvoon SIVUN_LEVEYS\n"
+" -r, --no-file-warnings\n"
+" älä varoita, jos tiedostoa ei voida avata\n"
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[MERKKI],--separator[=MERKKI]\n"
+" erota sarakkeet merkillä, oletusMERKKI on sarkain ilman\n"
+" valitsinta -w, ja â€ei merkkiä†valitsimen -w kanssa\n"
+" -s[MERKKI] poistaa käytöstä rivien katkaisun kaikkien\n"
+" kolmen sarakevalitsimen osalta (-SARAKE|-a -SARAKE|-m),\n"
+" paitsi jos -w on annettu\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -SMJONO, --sep-string[=MJONO]\n"
+
+#: src/pr.c:2846
+#, fuzzy
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" erota sarakkeet MJONOlla,\n"
+" ilman valitsinta -S: Oletuserotin <SARKAIN> -J:n kanssa\n"
+" ja <väli>\n"
+" muulloin (sama kuin -S\" \") ei vaikutusta\n"
+" sarakevalitsimiin\n"
+" -t, --omit-header jätä pois sivun otsakkeet ja lopukkeet\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" jätä pois sivun otsakkeet ja lopukkeet, poista\n"
+" syötetiedostoissa mahdollisesti olevien arkinsyöttöjen\n"
+" aiheuttama sivutus\n"
+" -v, --show-nonprinting\n"
+" käytä oktaalista kenoviivamerkintä\n"
+" -w SIVUN_LEVEYS, --width=SIVUN_LEVEYS\n"
+" aseta monipalstaisessa tulosteessa sivun leveydeksi\n"
+" SIVUN_LEVEYS (72) merkkiä, -s[merkki] ottaa pois\n"
+" käytöstä (72)\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W SIVUN_LEVEYS, --page-width=SIVUN_LEVEYS\n"
+" aseta sivun leveydeksi aina SIVUN_LEVEYS (72) merkkiä,\n"
+" katkaise rivit, paitsi jos valitsin -J on käytössä, ei\n"
+" vaikutusta valitsimen -S tai -s kanssa\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Valitsin -l nn sisältää valitsimen -T, jos nn <= 10 tai <= 3, jos -F "
+"käytössä.\n"
+"Jos TIEDOSTOa ei ole annettu, tai se on â€-â€, luetaan vakiosyötettä.\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Käyttö: %s [MUUTTUJA]...\n"
+" tai: %s VALITSIN\n"
+"Ilman ympäristöMUUTTUJAa tulostetaan ne kaikki.\n"
+"\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr "varoitus: %s: merkkivakiota seuraavat merkit on jätetty huomiotta"
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Käyttö: %s MUOTOILU [ARGUMENTTI]...\n"
+" tai: %s VALITSIN\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+"Tulosta ARGUMENTTI(t) MUOTOILUn mukaisesti.\n"
+"\n"
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"\n"
+"MUOTOILU säätelee tulostetta kuten C:n printf. Tulkittavat sarjat ovat:\n"
+"\n"
+" \\\" lainausmerkit\n"
+" \\0NNN merkki, jonka oktaaliarvo on NNN (1 - 3 numeroa)\n"
+" \\\\ kenoviiva\n"
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+" \\a varoitus (BEL)\n"
+" \\b askelpalautin\n"
+" \\c tulosteen lopetus tähän\n"
+" \\f sivunvaihto\n"
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n rivinvaihto\n"
+" \\r vaununpalautus\n"
+" \\t vaakasarkain\n"
+" \\v pystysarkain\n"
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+" \\xHH tavu, jonka heksadesimaaliarvo on HH (1-2 numeroa)\n"
+" \\uHHHH Unicode-merkki (ISO/IEC 10646), jonka heksa-arvo on HHHH (4 "
+"numeroa)\n"
+" \\UHHHHHHHH Unicode-merkki, jonka heksadesimaaliarvo on HHHHHHHH (8 "
+"numeroa)\n"
+
+#: src/printf.c:129
+#, fuzzy
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+" %% yksittäinen %-merkki\n"
+" %b ARGUMENTTI mekkijonona, â€\\â€-merkityt suojaukset tulkittuina,\n"
+" paitsi oktaalisuojaukset ovat muotoa \\0 tai \\0NNN\n"
+"\n"
+"sekä kaikki merkkeihin diouxXfeEgGcs päättyvät C-kielen "
+"muotoilumääritykset,\n"
+"ARGUMENTIT muunnettuna oikean tyyppisiksi. Muuttuvat leveydet huomioidaan.\n"
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: odotettiin numeerista arvoa"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: arvoa ei muunnettu kokonaisuudessaan"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "puuttuva heksadesimaaliluku ohjauskoodissa"
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "virheellinen universaali merkin nimi \\%c%0*x"
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr "virheellinen kenttäleveys: %s"
+
+#: src/printf.c:585
+#, c-format
+msgid "invalid precision: %s"
+msgstr "virheellinen tarkkuus: %s"
+
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%s: virheellinen kenttämääritys \"%s\""
+
+#: src/printf.c:683
+#, fuzzy, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "varoitus: ylimääräiset argumentit jätetty huomiotta alkaen %s:sta"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr "François Pinard"
+
+#: src/ptx.c:422
+#, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (säännölliselle lausekkeelle %s)"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Käyttö: %s [VALITSIN]... [SYÖTE]... (ilman valitsinta -G)\n"
+" tai: %s -G [VALITSIN]... [SYÖTE [TULOSTE]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"Tulosta kontekstin sisältävä, permutoitu luettelo syötetiedostojen "
+"sanoista.\n"
+"\n"
+
+#: src/ptx.c:1894
+#, fuzzy
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference tulosta automaattisesti luodut viitteet\n"
+" -C, --copyright näytä tekijänoikeustiedot ja "
+"kopiointiehdot\n"
+" -G, --traditional käyttäydy enemmän kuten System V:n â€ptxâ€\n"
+" -F, --flag-truncation=MJONO käytä MJONOa rivinkatkaisujen "
+"merkitsemiseen\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=MJONO â€xxâ€:n sijaan käytettävä makronimi\n"
+" -O, --format=roff tuota tuloste roff-käskyinä\n"
+" -R, --right-side-refs sijoita viitteet oikealle, ei lasketa -w:"
+"llä\n"
+" -S, --sentence-regexp=SÄÄNN rivien tai lauseiden lopuille\n"
+" -T, --format=tex tuota tuloste TeX-käskyinä\n"
+
+# Osa on aika hämäriä.
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=SÄÄNNLAUS käytä SÄÄNNLAUSetta kunkin avainsanan\n"
+" täsmäämiseen\n"
+" -b, --break-file=TIEDOSTO sanankatkaisumerkit tässä TIEDOSTOssa\n"
+" -f, --ignore-case älä huomioi kirjainkokoa\n"
+" -g, --gap-size=MÄÄRÄ tuloskenttien välin koko sarakkeina\n"
+" -i, --ignore-file=TIEDOSTO lue huomioimatta jätettävät sanat "
+"TIEDOSTOsta\n"
+" -o, --only-file=TIEDOSTO lue ainoiden sanojen luettelo tästä "
+"TIEDOSTOsta\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references kunkin rivin ensimmäinen kenttä on viite\n"
+" -t, --typeset-mode - ei ole toteutettu -\n"
+" -w, --width=MÄÄRÄ tulosteleveys sarakkeina, viite "
+"poistettuna\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"Jos TIEDOSTOA ei ole annettu, tai se on â€-â€, luetaan vakiosyötettä.\n"
+"Oletus on â€-F /â€.\n"
+
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "virheellinen leveys: %s"
+
+#: src/ptx.c:2089
+#, fuzzy, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr ""
+"valitsin --reply ei ole suositeltava; käytä valitsinta -i tai -f sen sijaan"
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+"Tulosta työhakemiston täydellinen nimi.\n"
+"\n"
+
+#: src/pwd.c:160
+#, c-format
+msgid "failed to chdir to %s"
+msgstr "siirtyminen hakemistoon %s epäonnistui"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "tiedoston %s avaaminen epäonnistui"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "jätetään huomiotta argumentit, jotka eivät ole valitsimia"
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Käyttö: %s [VALITSIN]... TIEDOSTO\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+"Näytä symbolisen linkin arvo vakiotulosteessa.\n"
+"\n"
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+#, fuzzy
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+" -f, --canonicalize muunna symlinkki vakiomuotoon seuraamalla annetun\n"
+" polun jokaista symlinkkiä rekursiivisesti\n"
+" -n, --no-newline älä tulosta rivinvaihtoa loppuun\n"
+" -q, --quiet, --silent vaienna useimmat virheilmoitukset\n"
+" -v, --verbose näytä virheilmoitukset\n"
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "siirtyminen hakemistoon %s epäonnistui"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "hakemiston %s avaaminen ei onnistu"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, fuzzy, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "tiedosto %s vaihtoi laitetta/i-solmua"
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "hakemiston %s luominen ei onnistu"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"VAROITUS: Kehämäinen hakemistorakenne.\n"
+"Tämä merkitsee lähes varmasti, että tiedostojärjestelmä on turmeltunut.\n"
+"ILMOITA ASIASTA YLLÄPITÄJÄLLE.\n"
+"Seuraava hakemisto on osa kehää:\n"
+" %s\n"
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s: edetäänkö kirjoitussuojattuun hakemistoon %s? "
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s: edetäänkö hakemistoon %s? "
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: poistetaanko kirjoitussuojattu %s %s? "
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: poistetaanko %s %s? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "poistettiin hakemisto: %s\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "siirtyminen hakemistoon %s epäonnistui"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "hakemiston %s poistaminen ei onnistu"
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr ""
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "hakemiston %s poistaminen ei onnistu"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "hakemiston %s poistaminen ei onnistu"
+
+#: src/remove.c:1558
+#, fuzzy, c-format
+msgid "cannot restore current working directory"
+msgstr "työhakemistoa ei löydy"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr "Komento â€%s ./%s†poistaa tiedoston %s.\n"
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Käyttö: %s [VALITSIN]... TIEDOSTO...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --no-preserve-root älä kohtele juurta (â€/â€) erityisesti (oletus)\n"
+" --preserve-root estä rekursiivinen toiminta juuressa (â€/â€)\n"
+" -r, -R, --recursive poista hakemistojen sisältö rekursiivisesti\n"
+" -v, --verbose selitä, mitä tapahtuu\n"
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"Tiedoston, jonka nimi alkaa merkillä â€-â€, esim. â€-fooâ€,\n"
+"voi poistaa seuraavilla komennoilla:\n"
+" %s -- -foo\n"
+" tai\n"
+" %s ./-foo\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"Huomaa, että rm:llä poistetun tiedoston sisältö on usein mahdollista\n"
+"palauttaa. Jos palauttaminen halutaan estää, on suositeltavaa käyttää\n"
+"shred-komentoa.\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: poistetaanko %s %s? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "poistetaan hakemisto %s"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Käyttö: %s [VALITSIN]... HAKEMISTO...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"Poista tyhjät HAKEMISTO(t).\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" jätä huomioimatta kaikki virheet, jotka johtuvat vain\n"
+" siitä, että hakemisto ei ole tyhjä\n"
+
+#: src/rmdir.c:148
+#, fuzzy
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents poista HAKEMISTO ja sen ylähakemistot.\n"
+" Esim. â€rmdir -p a/b/c†on sama kuin â€rmdir a/b/c a/b "
+"aâ€.\n"
+" -v, --verbose näytä ilmoitus jokaisesta käsitellystä hakemistosta\n"
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Käyttö: %s [VALITSIN]... LOPPU\n"
+" tai: %s [VALITSIN]... ALKU LOPPU\n"
+" tai: %s [VALITSIN]... ALKU LISÄYS LOPPU\n"
+
+#: src/seq.c:79
+#, fuzzy
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"Tulosta luvut luvusta ALKU lukuun LOPPU, LISÄYS-arvon välein.\n"
+"\n"
+" -f, --format=MUOTO käytä printf-tyylistä muotoilua MUOTO (oletus: %"
+"g)\n"
+" -s, --separator=MJONO käytä MJONOa erottelemaan lukuja (oletus: \\n)\n"
+" -w, --equal-width tasoita leveydet lisäämällä nollia lukujen eteen\n"
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"\n"
+"Jos ALKU tai LISÄYS jätetään antamatta, käytetään niille oletusarvoa 1.\n"
+"Antamatta jätetty LISÄYKsen oletusarvo on siis 1, vaikka LOPPU olisi "
+"pienempi\n"
+"kuin ALKU. ALKU, LISÄYS JA LOPPU tulkitaan liukuluvuiksi. LISÄYS on yleensä\n"
+"positiivinen, jos ALKU on pienempi kuin LOPPU, ja\n"
+"LISÄYS on yleensä negatiivinen, jos ALKU on suurempi kuin LOPPU.\n"
+"Jos MUOTO annetaan, sen on sisällettävä tasan yksi\n"
+"printf-tyylisistä liukulukuesityksistä %e, %f, %g\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "virheellinen liukulukuargumentti: %s"
+
+#: src/seq.c:342
+#, c-format
+msgid "invalid format string: %s"
+msgstr "muotoilumerkkijono ei kelpaa: %s"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr "muotoilua ei voi määritellä kun tulostetaan tasalevyisiä lukuja"
+
+#: src/setuidgid.c:51
+#, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Käyttö: %s KÄYTTÄJÄNIMI KOMENTO [ARGUMENTTI]...\n"
+" tai: %s VALITSIN\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+"Poista käytöstä mahdolliset lisäryhmät, aseta käyttäjä- ja ryhmä-ID\n"
+"annetun KÄYTTÄJÄNIMEn perusteella, ja suorita KOMENTO annetuilla\n"
+"ARGUMENTeilla. Poistu paluuarvolla 111, jos käyttäjä- ja ryhmä-ID:n\n"
+"asetus ei onnistu. Muussa tapauksessa poistutaan KOMENNOn paluuarvolla.\n"
+"Tämä ohjelma on käyttökelpoinen vain pääkäyttäjän (käyttäjä-ID 0)\n"
+"suorittamana.\n"
+"\n"
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr "tuntematon käyttäjä-ID: %s"
+
+#: src/setuidgid.c:109
+#, c-format
+msgid "cannot set supplemental group"
+msgstr "lisäryhmän asetus ei onnistu"
+
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "ryhmä-ID:n asetus arvoon %ld ei onnistu"
+
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "käyttäjä-ID:n asetus arvoon %ld ei onnistu"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Käyttö: %s [VALITSIMET] TIEDOSTO [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"Ylikirjoita annetut TIEDOSTO(t) toistuvasti, jotta sisällön\n"
+"palauttaminen olisi vaikeampaa jopa hyvin kalliilla laitteilla.\n"
+"\n"
+
+#: src/shred.c:174
+#, fuzzy, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force muuta tarvittaessa oikeuksia kirjoittamisen sallimiseksi\n"
+" -n, --iterations=N Ylikirjoita N kertaa oletusmäärän (%d) sijaan\n"
+" -s, --size=N silppua näin monta tavua (jälkiliitteet kuten K, M,\n"
+" G hyväksytään)\n"
+
+#: src/shred.c:180
+#, fuzzy
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove typistä ja poista tiedosto ylikirjoituksen jälkeen\n"
+" -v, --verbose näytä edistyminen\n"
+" -x, --exact älä pyöristä tiedostokokoja seuraavaan täyteen lohkoon;\n"
+" tämä on oletus ei-tavallisille tiedostoille\n"
+" -z, --zero ylikirjoita lopuksi nollia silppuamisen kätkemiseksi\n"
+" - silppua vakiotuloste\n"
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"Jos TIEDOSTO on â€-â€, silputaan vakiosyötteeseen.\n"
+"\n"
+"Jos valitsin --remove (-u) on annettu, TIEDOSTO(t) poistetaan. Tiedostoja "
+"ei\n"
+"poisteta oletuksena, koska usein käsitellään laitetiedostoja, kuten\n"
+"/dev/hda, joita ei ole tarkoitus poistaa. Valitsinta --remove käytetään\n"
+"yleensä käsiteltäessä tavallisia tiedostoja.\n"
+"\n"
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"VAROITUS: Huomaa, että shred-työkalun toiminta perustuu erittäin tärkeään\n"
+"oletukseen:\n"
+"oletetaan, että tiedostojärjestelmä ylikirjoittaa dataa paikallaan. Tämä\n"
+"on perinteinen tapa, mutta monet nykyaikaiset tiedostojärjestelmät eivät\n"
+"vastaa tätä oletusta. Seuraavassa on esimerkkejä tiedostojärjestelmistä,\n"
+"joilla shred ei ole tehokas, tai ei ole tehokas kaikissa "
+"tiedostojärjestelmän\n"
+"tiloissa:\n"
+"\n"
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"* kirjanpidon sisältävät tiedostojärjestelmät, esim. AIXin ja Solariksen\n"
+" tiedostojärjestelmät (ja JFS, ReiserFS, XFS, Ext3, jne.)\n"
+"\n"
+"* tiedostojärjestelmät, jotka kirjoittavat ylimääräistä dataa ja jatkavat\n"
+" joidenkin kirjoitustoimintojen epäonnistumisesta huolimatta, esim.\n"
+" RAIDilla olevat tiedostojärjestelmät\n"
+"\n"
+"* tiedostojärjestelmät, jotka tekevät tilannevedoksia, esim. Network\n"
+" Appliancen NFS-palvelin\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+#, fuzzy
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+"* tiedostojärjestelmät, jotka tallentavat levyvälimuistinsa tilapäisiin\n"
+" paikkoihin, esim. NFS-version 3 asiakkaat\n"
+"\n"
+"* tiivistetyt tiedostojärjestelmät\n"
+"\n"
+"Lisäksi tiedostojärjestelmän varmuuskopiot ja etäpeilaukset voivat sisältää\n"
+"tiedostosta kopioita, joita ei voida poistaa, ja jotka mahdollistavat\n"
+"silputun tiedoston palauttamisen myöhemmin.\n"
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr "%s: fdatasync epäonnistui"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr "%s: fsync epäonnistui"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s: taaksepäin siirtyminen ei onnistu"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: ylikirjoituskerta %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s: virhe kirjoitettaessa siirtymässä %s"
+
+#: src/shred.c:478
+#, c-format
+msgid "%s: lseek failed"
+msgstr "%s: lseek epäonnistui"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s: tiedosto on liian suuri"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: ylikirjoituskerta %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: ylikirjoituskerta %lu/%lu (%s)...%s/%s %d%%"
+
+#: src/shred.c:776
+#, c-format
+msgid "%s: fstat failed"
+msgstr "%s: fstat epäonnistui"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: virheellinen tiedostotyyppi"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: tiedoston koko on negatiivinen"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s: virhe typistettäessä"
+
+#: src/shred.c:889
+#, c-format
+msgid "%s: fcntl failed"
+msgstr "%s: fcntl epäonnistui"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s: vain lisäykseen soveltuvaa tiedostokahvaa ei voi silputa"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: poistetaan"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: nimettiin uudelleen nimelle %s"
+
+#: src/shred.c:1018
+#, c-format
+msgid "%s: failed to remove"
+msgstr "%s: poisto epäonnistui"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: poistettu"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, c-format
+msgid "%s: failed to close"
+msgstr "%s: sulkeminen epäonnistui"
+
+#: src/shred.c:1065
+#, fuzzy, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: liian pitkä tiedosto"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: virheellinen ylikirjoituskertojen määrä"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "useita tulostusmuotoja annettu"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: virheellinen tiedostokoko"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Käyttö: %s [VALITSIN]... LOPPU\n"
+" tai: %s [VALITSIN]... ALKU LOPPU\n"
+" tai: %s [VALITSIN]... ALKU LISÄYS LOPPU\n"
+
+#: src/shuf.c:57
+#, fuzzy
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"Kirjoita kaikkien TIEDOSTO(jen) yhdistelmä lajiteltuna vakiotulosteeseen.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "useita -l tai -t -valitsimia annettu"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "virheellinen leveys: %s"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "virheellinen rivileveys: %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr "useita tulostiedostoja annettu"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "signaalin yhdistäminen valitsimen -l tai -t kanssa ei onnistu"
+
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr "ylimääräinen operandi %s"
+
+#: src/sleep.c:47
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Käyttö: %s KESTO[PÄÄTE]...\n"
+" tai: %s VALITSIN\n"
+"Pysähdy odottamaan KESTO sekunnin ajaksi. PÄÄTE voi olla â€s†(sekuntia,\n"
+"oletus), â€m†(minuuttia), â€h†(tuntia) tai â€d†(päivää). Toisin kuin\n"
+"useimmissa toteutuksissa, voi KESTO olla kokonaisluvun lisäksi myös\n"
+"mielivaltainen liukuluku.\n"
+"\n"
+
+#: src/sleep.c:138
+#, c-format
+msgid "invalid time interval %s"
+msgstr "ajanjakso ei kelpaa: %s"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "tosiaikaisen kellon luku ei onnistu"
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"Kirjoita kaikkien TIEDOSTO(jen) yhdistelmä lajiteltuna vakiotulosteeseen.\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+"Lajitteluvalitsimet:\n"
+"\n"
+
+#: src/sort.c:321
+#, fuzzy
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks älä huomioi edeltäviä tyhjeitä\n"
+" -d, --dictionary-order lajittele vain tyhjeiden ja alfanumeeristen "
+"merkkien mukaan\n"
+" -f, --ignore-case älä huomioi kirjainkokoa\n"
+
+#: src/sort.c:326
+#, fuzzy
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort vertaa yleisen numeerisen arvon mukaan (myös "
+"eksponenttimuoto)\n"
+" -i, --ignore-nonprinting huomioi vain tulostuvat merkit\n"
+" -M, --month-sort vertaa (tuntematon) < â€JAN†< ... < â€DECâ€\n"
+" -n, --numeric-sort vertaa merkkijonon numeerisen arvon mukaan\n"
+" -r, --reverse käännä lajittelujärjestys\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+#, fuzzy
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+"Muut valitsimet:\n"
+"\n"
+" -c, --check tarkista onko syöte lajiteltu; älä lajittele\n"
+" -k, --key=SIJ1[,SIJ2] aloita avain kohdasta SIJ1, päätä kohtaan SIJ2 "
+"(alkukohta 1)\n"
+" -m, --merge lomita jo lajitellut tiedostot; älä lajittele\n"
+" -o, --output=TIEDOSTO kirjoita tuloste TIEDOSTOon vakiotulosteen "
+"sijaan\n"
+" -s, --stable vakauta lajittelu poistamalla käytöstä "
+"â€viimeinen oljenkorsiâ€-vertailu\n"
+" -S, --buffer-size=KOKO käytä KOKOa muistipuskurille\n"
+
+#: src/sort.c:351
+#, fuzzy, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=EROTIN käytä kenttäerottimena EROTINta, ei "
+"siirtymää\n"
+" ei-tyhjeestä tyhjeeseen\n"
+" -T, --temporary-directory=HAK käytä HAKemistoa väliaikaistiedostoille, "
+"ei\n"
+" $TMPDIR tai %s; useampi valitsin määrittelee\n"
+" monta hakemistoa\n"
+" -u, --unique jos -c on annettu: tarkista tarkka järjestys\n"
+" ilman -c:tä: tulosta vain ensimmäinen\n"
+" yhtäläisten joukosta\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr " -z, --zero-terminated päätä rivit 0-tavuun, ei rivinvaihtoon\n"
+
+#: src/sort.c:363
+#, fuzzy
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"SIJ on F[.C][VALITSIMET], missä F on kentän numero ja C merkin sijainti\n"
+"kentässä. VALITSIMET on yksi tai useampi yksikirjaiminen lajitteluvalitsin,\n"
+"jotka kumoavat kyseisen avaimen yleiset lajitteluvalitsimet. Jos avainta\n"
+"ei ole annettu, käytetään koko riviä avaimena.\n"
+"\n"
+"KOKOon voi liittää kertoimen:\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"% 1% muistista, b 1, K 1024 (oletus), sekä M, G, T, P, E, Z, Y.\n"
+"Jos TIEDostoa ei ole annettu, tai se on â€-â€, luetaan vakiosyötettä.\n"
+"\n"
+"*** VAROITUS ***\n"
+"Ympäristön määrittelemä käytössä oleva maa-asetusto vaikuttaa\n"
+"lajittelujärjestykseen. Asettamalla LC_ALL=C otetaan käyttöön\n"
+"perinteinen lajittelujärjestys, joka käyttää tavujen arvoja.\n"
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "kirjoitetaan tiedostoon %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "väliaikaistiedoston luominen ei onnistu"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "avaaminen epäonnistui"
+
+#: src/sort.c:758
+msgid "fflush failed"
+msgstr "puskurin tyhjennys epäonnistui"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "sulkeminen epäonnistui"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "avaaminen epäonnistui"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr ""
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "väliaikaistiedoston luominen ei onnistu"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "väliaikaistiedoston luominen ei onnistu"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr ""
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "hakemiston %s luominen ei onnistu"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "kirjoitus epäonnistui"
+
+#: src/sort.c:975
+#, c-format
+msgid "warning: cannot remove: %s"
+msgstr "varoitus: ei voida poistaa: %s"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "lajittelun koko"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "tiedoston tilan lukeminen epäonnistui"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "lukeminen epäonnistui"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: epäjärjestys: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "vakiovirhe"
+
+#: src/sort.c:2562
+#, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: virheellinen kenttämääritys %s"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: virheellinen määrä merkkijonon %s alussa"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "virheellinen lukuarvo merkin â€-†jälkeen"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "virheellinen lukuarvo merkin â€.†jälkeen"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "outo merkki kenttämäärityksessä"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "useita tulostusmuotoja annettu"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "virheellinen lukuarvo kentän alussa"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "kentän numero on nolla"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "merkin siirtymä on nolla"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "virheellinen lukuarvo merkin â€,†jälkeen"
+
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "ylimääräinen operandi %s ei ole sallittu valitsimen -c kanssa"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Käyttö: %s [VALITSIN] [SYÖTE [ETULIITE]]\n"
+
+#: src/split.c:110
+#, fuzzy
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"Tulosta kiinteän kokoisia paloja SYÖTTEESTÄ tiedostoihin ETULIITEaa,\n"
+"ETULIITEab, ...; oletusETULIITE on â€xâ€. Jos SYÖTEttä ei ole annettu tai\n"
+"se on â€-â€, luetaan vakiosyötettä.\n"
+"\n"
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=N käytä N merkin pituisia jälkiliitteitä (oletus %"
+"d)\n"
+" -b, --bytes=KOKO kirjoita KOKO tavua yhteen tulostiedostoon\n"
+" -C, --line-bytes=KOKO kirjoita KOKO tavua rivejä yhteen tulostiedostoon\n"
+" -d, --numeric-suffixes käytä numeerisia jälkiliitteitä kirjaimien sijaan\n"
+" -l, --lines=MÄÄRÄ kirjoita MÄÄRÄ riviä yhteen tulostiedostoon\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose tulosta ilmoitus vakiovirhetulosteeseen juuri\n"
+" ennen kunkin tulostiedoston avaamista\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"KOKOon voi liittää perään kertoimen: b on 512, k on 1k, m on 1 Mega.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "Tulostiedostojen jälkiliitteet käytetty loppuun"
+
+#: src/split.c:211
+#, c-format
+msgid "creating file %s\n"
+msgstr "luodaan tiedostoa %s\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "voidaan jakaa vain yhdellä tavalla"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: virheellinen jälkiliitteen pituus"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: virheellinen tavumäärä"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: virheellinen rivimäärä"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "rivimäärävalitsin -%s%c... on liian suuri"
+
+#: src/split.c:518
+#, c-format
+msgid "invalid number of lines: 0"
+msgstr "virheellinen rivimäärä: 0"
+
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s: tunnistamaton valitsin â€%c%sâ€\n"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%%%c: säännös ei kelpaa"
+
+#: src/stat.c:726
+#, fuzzy, c-format
+msgid "warning: backslash at end of format"
+msgstr "virheellinen kenoviivasuojaus merkkijonon lopussa"
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr "tiedostojärjestelmän tietojen lukeminen tiedostolle %s ei onnistu"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Käyttö: %s [VALITSIN] TIEDOSTO...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+#, fuzzy
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"\n"
+"Kelvolliset muotoilut tiedostoille (ilman valitsinta --filesystem):\n"
+"\n"
+" %A Oikeudet helppolukuisessa muodossa\n"
+" %a Oikeudet oktaalimuodossa\n"
+" %B Kunkin \"%b\":n ilmoittaman lohkon koko tavuina\n"
+" %b Varattujen lohkojen määrä (katso myös %B)\n"
+
+#: src/stat.c:857
+#, fuzzy
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+" %D Laitenumero heksadesimaalimuodossa\n"
+" %d Laitenumero desimaalimuodossa\n"
+" %F Tiedoston tyyppi\n"
+" %f Raaka tila heksadesimaalimuodossa\n"
+" %G Omistajan ryhmän nimi\n"
+" %g Omistajan ryhmä-ID\n"
+
+#: src/stat.c:865
+#, fuzzy
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+" %h Kovien linkkien määrä\n"
+" %i I-solmunumero\n"
+" %N Tiedostonimi lainausmerkeissä, linkin seuraaminen jos symbolinen "
+"linkki\n"
+" %n Tiedostonimi\n"
+" %o IO-lohkokoko\n"
+" %s Tiedoston koko tavuina\n"
+" %T Minor-laitetyyppi heksadesimaalimuodossa\n"
+" %t Major-laitetyyppi heksadesimaalimuodossa\n"
+
+#: src/stat.c:875
+#, fuzzy
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+" %U Omistajan käyttäjänimi\n"
+" %u Omistajan käyttäjä-ID\n"
+" %X Viimeisen käytön ajankohta sekunteina vuoden 1970 alusta\n"
+" %x Viimeisen käytön ajankohta\n"
+" %Y Viimeisen sisällönmuutoksen ajankohta sekunteina vuoden 1970 alusta\n"
+" %y Viimeisen sisällönmuutoksen ajankohta\n"
+" %Z Viimeisen ominaisuusmuutoksen ajankohta sekunteina vuoden 1970 "
+"alusta\n"
+" %z Viimeisen ominaisuusmuutoksen ajankohta\n"
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"Kelvolliset muotoilut tiedostojärjestelmille:\n"
+"\n"
+" %a Muille kuin pääkäyttäjälle vapaana olevien lohkojen määrä\n"
+" %b Tiedostojärjestelmän datalohkojen yhteismäärä\n"
+" %c Tiedostojärjestelmän tiedostosolmujen yhteismäärä\n"
+" %d Tiedostojärjestelmän vapaiden tiedostosolmujen määrä\n"
+" %f Tiedostojärjestelmän vapaiden lohkojen määrä\n"
+
+#: src/stat.c:896
+#, fuzzy
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+" %i Tiedostojärjestelmän ID heksadesimaalilukuna\n"
+" %l Tiedostonimien maksimipituus\n"
+" %n Tiedostonimi\n"
+" %s Optimaalinen siirtolohkon koko\n"
+" %T Tyyppi helppolukuisessa muodossa\n"
+" %t Tyyppi heksadesimaalilukuna\n"
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Käyttö: %s [-F LAITE] [--file=LAITE] [ASETUS]...\n"
+" tai: %s [-F LAITE] [--file=LAITE] [-a|--all]\n"
+" tai: %s [-F LAITE] [--file=LAITE] [-g|--save]\n"
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Näytä tai muuta päätteen ominaisuuksia.\n"
+"\n"
+" -a, --all näytä voimassa olevat asetukset luettavassa muodossa\n"
+" -g, --save näytä voimassa olevat asetukset stty-luettavassa "
+"muodossa\n"
+" -F, --file=LAITE avaa ja ota käyttöön määrätty LAITE vakiosyötteen "
+"sijaan\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+"\n"
+"Valinnainen â€-†ennen ASETUSta tarkoittaa vastakohtaa. Ei-POSIX-asetukset\n"
+"on merkitty *:lla. Käytettävissä olevat asetukset riippuvat alustasta.\n"
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"\n"
+"Erikoismerkit:\n"
+" * dsusp MERKKI MERKKI lähettää terminaalin pysäytyssignaalin\n"
+" eof MERKKI MERKKI lähettää tiedostonlopetuksen (syöte päättyy)\n"
+" eol MERKKI MERKKI päättää rivin\n"
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+" * eol2 MERKKI vaihtoehtoinen MERKKI rivin päättämiseen\n"
+" erase MERKKI MERKKI pyyhkii viimeisimmän kirjoitetun merkin\n"
+" intr MERKKI MERKKI lähettää keskeytyssignaalin\n"
+" kill MERKKI MERKKI pyyhkii käsillä olevan rivin\n"
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+" * lnext MERKKI MERKKI syöttää seuraavan merkin lainattuna\n"
+" quit MERKKI MERKKI lähettää lopetussignaalin\n"
+" * rprnt MERKKI MERKKI uudistaa käsillä olevan rivin\n"
+" start MERKKI MERKKI käynnistää tulosteen uudelleen pysäytettyään sen\n"
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+" stop MERKKI MERKKI pysäyttää tulosteen\n"
+" susp MERKKI MERKKI lähettää pysäytyssignaalin\n"
+" * swtch MERKKI MERKKI vaihtaa toiselle kuoren tasolle\n"
+" * werase MERKKI MERKKI pyyhkii viimeisimmän kirjoitetun sanan\n"
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"\n"
+"Erityisasetukset:\n"
+" N aseta syöte- ja tulostenopeuksiksi N baudia\n"
+" * cols N kerro ytimelle, että päätteen leveys on N merkkiä\n"
+" * columns N kuten cols N\n"
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+" ispeed N aseta syötenopeudeksi N\n"
+" * line N käytä rivikuria N\n"
+" min N kun myös -icanon, aseta valmiin luvun merkkiminimiksi N\n"
+" ospeed N aseta tulostenopeudeksi N\n"
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+" * rows N kerro ytimelle, että päätteellä on N riviä\n"
+" * size näytä ytimeltä saadut rivi- ja sarakemäärät\n"
+" speed näytä päätteen nopeus\n"
+" time N kun myös -icanon, aseta luvun aikarajaksi N "
+"kymmenesosasekuntia\n"
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"\n"
+"Ohjausasetukset:\n"
+" [-]clocal poista modeemin ohjaussignaalit käytöstä\n"
+" [-]cread salli syötteen vastaanotto\n"
+" * [-]crtscts ota RTS/CTS-kättely käyttöön\n"
+" csN aseta merkkikooksi N bittiä, N välillä [5..8]\n"
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+" [-]cstopb käytä kahta pysäytysbittiä per merkki (â€-â€:lla yksi)\n"
+" [-]hup lähetä sulkusignaali kun viimeinen prosessi sulkee tty:n\n"
+" [-]hupcl kuten [-]hup\n"
+" [-]parenb luo pariteettibitti tulosteeseen ja oleta pariteettibitti "
+"syötteessä\n"
+" [-]parodd aseta pariton pariteetti (myös â€-â€:lla)\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"\n"
+"Syöteasetukset:\n"
+" [-]brkint katkokset aiheuttavat keskeytyssignaalin\n"
+" [-]icrnl muunna vaununpalautus rivinvaihdoksi\n"
+" [-]ignbrk jätä katkosmerkit huomiotta\n"
+" [-]igncr jätä vaununpalautus huomiotta\n"
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+" [-]ignpar jätä pariteettivirheelliset merkit huomiotta\n"
+" * [-]imaxbel piippaa ja älä tyhjennä täyttä syötepuskuria merkille\n"
+" [-]inlcr muunna rivinvaihto vaununpalautukseksi\n"
+" [-]inpck ota syötteen pariteettitarkistus käyttöön\n"
+" [-]istrip poista ylin (8:s) bitti syötteen merkeistä\n"
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr " * [-]iutf8 oleta syötemerkit UTF-8-koodatuiksi\n"
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+" * [-]iuclc muunna isot kirjaimet pieniksi\n"
+" * [-]ixany anna minkä tahansa merkin uudelleenkäynnistää tulosteen\n"
+" [-]ixoff ota start/stop -merkkien lähetys käyttöön\n"
+" [-]ixon ota XON/XOFF-vuonohjaus käyttöön\n"
+" [-]parmrk merkitse pariteettivirheet (255-0-merkkisarjalla)\n"
+" [-]tandem kuten [-]ixoff\n"
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"\n"
+"Tulosteasetukset:\n"
+" * bsN askelpalauttimen viivetyyli, N välillä [0..1]\n"
+" * crN vaununpalautuksen viivetyyli, N välillä [0..3]\n"
+" * ffN arkinsyötön viivetyyli, N välillä [0..1]\n"
+" * nlN rivinvaihdon viivetyyli, N välillä [0..1]\n"
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+" * [-]ocrnl muunna vaununpalautus rivinvaihdoksi\n"
+" * [-]ofdel käytä poistomerkkejä täyttöön tyhjien merkkien sijaan\n"
+" * [-]ofill käytä täyttömerkkejä ajastuksen sijaan viivästyksille\n"
+" * [-]olcuc muunna pienet kirjaimet isoiksi\n"
+" * [-]onlcr muunna rivinvaihto vaununpalautus-rivinvaihdoksi\n"
+" * [-]onlret rivinvaihto suorittaa vaununpalautuksen\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+" * [-]onocr ei tulosteta vaununpalautuksia ensimmäiseen sarakkeeseen\n"
+" [-]opost jälkikäsittele tuloste\n"
+" * tabN vaakasarkaimen viivetyyli, N välillä [0..3]\n"
+" * tabs sama kuin tab0\n"
+" * -tabs sama kuin tab3\n"
+" * vtN pystysarkaimen viivetyyli, N välillä [0..1]\n"
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"\n"
+"Paikalliset asetukset:\n"
+" [-]crterase toista erase-merkit näin: askelpalautin-välilyönti-"
+"askelpalautin\n"
+" * crtkill hävitä koko rivi totellen echoprt- ja echoe-asetuksia\n"
+" * -crtkill hävitä koko rivi totellen echoctl- ja echok-asetuksia\n"
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+" * [-]ctlecho toista kontrollimerkit hattumuodossa (`^c')\n"
+" [-]echo toista syötetyt merkit\n"
+" * [-]echoctl sama kuin [-]ctlecho\n"
+" [-]echoe sama kuin [-]crterase\n"
+" [-]echok toista rivinvaihto hävitysmerkin jälkeen\n"
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+" * [-]echoke sama kuin [-]crtkill\n"
+" [-]echonl toista rivinvaihto vaikka muita merkkejä ei toistettaisi\n"
+" * [-]echoprt toista pyyhityt merkit takaperin, â€\\†ja â€/†-merkkien "
+"välissä\n"
+" [-]icanon ota erase, kill, werase, ja rprnt -erikoismerkit käyttöön\n"
+" [-]iexten ota ei-POSIX-erikoismerkit käyttöön\n"
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+" [-]isig ota interrupt-, quit- ja suspend-erikoismerkit käyttöön\n"
+" [-]noflsh poista käytöstä interrupt- ja quit-erikoismerkkien "
+"jälkeinen puskurintyhjennys\n"
+" * [-]prterase sama kuin [-]echoprt\n"
+" * [-]tostop pysäytä tausta-ajot, jotka yrittävät kirjoittaa päätteelle\n"
+" * [-]xcase kun myös icanon, piilota isot kirjaimet â€\\†-merkillä\n"
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+"\n"
+"Yhdistelyasetukset:\n"
+" * [-]LCASE sama kuin [-]lcase\n"
+" cbreak sama kuin -icanon\n"
+" -cbreak sama kuin icanon\n"
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+" cooked sama kuin brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof ja eol -merkit oletusarvoihinsa\n"
+" -cooked sama kuin raw\n"
+" crt sama kuin echoe echoctl echoke\n"
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+" dec sama kuin echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq sama kuin [-]ixany\n"
+" ek erase ja kill -merkit oletusarvoihinsa\n"
+" evenp sama kuin parenb -parodd cs7\n"
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+" -evenp sama kuin -parenb cs8\n"
+" * [-]lcase sama kuin xcase iuclc olcuc\n"
+" litout sama kuin -parenb -istrip -opost cs8\n"
+" -litout sama kuin parenb istrip opost cs7\n"
+" nl sama kuin -icrnl -onlcr\n"
+" -nl sama kuin icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+" oddp sama kuin parenb parodd cs7\n"
+" -oddp sama kuin -parenb cs8\n"
+" [-]parity sama kuin [-]evenp\n"
+" pass8 sama kuin -parenb -istrip cs8\n"
+" -pass8 sama kuin parenb istrip cs7\n"
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+" raw sama kuin -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw sama kuin cooked\n"
+
+#: src/stty.c:709
+#, fuzzy
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+" sane sama kuin cread -ignbrk brkint -inlcr -igncr icrnl\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, kaikki\n"
+" erikoismerkit oletusarvoihinsa.\n"
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"Käsittele vakiosyötteeseen liitettyä tty:tä. Ilman argumentteja\n"
+"tulostaa nopeuden baudeina, rivikurin ja poikkeamat stty sane'istä.\n"
+"Asetuksissa MERKKI otetaan sellaisenaan tai koodattuna kuten ^c,\n"
+"0x37, 0177 tai 127; erikoisarvoja â€^-†ja â€undef†käytetään kun halutaan\n"
+"erikoismerkit pois käytöstä.\n"
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr "vain yhden laitteen voi määritellä"
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+"valitsimet verbose ja stty-readable -tulostetyyleille\n"
+"ovat toisensa poissulkevat"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "tiloja ei voi asettaa, kun tulostetyyli on määriteltynä"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: ei-estävän tilan uudelleenasetus ei onnistunut"
+
+#: src/stty.c:885 src/stty.c:995
+#, c-format
+msgid "invalid argument %s"
+msgstr "virheellinen argumentti %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, c-format
+msgid "missing argument to %s"
+msgstr "%s vaatii argumentin"
+
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "virheellinen rivileveys: %s"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: kaikkia pyydettyjä toimenpiteitä ei voida suorittaa"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "new_mode: tila\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: ei kokotietoja tälle laitteelle"
+
+#: src/stty.c:1888
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "kokonaislukuargumentti %s ei kelpaa"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Salasana:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: laitteen /dev/tty avaaminen ei onnistu"
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "ryhmien asetus ei onnistu"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "ryhmän id:n asetus ei onnistu"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "tunnuksen id:n asetus ei onnistu"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Käyttö: %s [VALITSIN]... [-] [TUNNUS [ARG]...]\n"
+
+#: src/su.c:386
+#, fuzzy
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Vaihda vallitsevaksi käyttäjä- ja ryhmä-ID:ksi TUNNUSta vastaavat.\n"
+"\n"
+" -, -l, --login tee kuoresta kirjautumiskuori\n"
+" -c, --commmand=KOMENTO välitä KOMENTO kuorelle valitsimella -c\n"
+" -f, --fast välitä valitsin -f kuorelle (csh:lle tai tcsh:"
+"lle)\n"
+" -m, --preserve-environment älä uudelleenaseta ympäristömuuttujia\n"
+" -p sama kuin -m\n"
+" -s, --shell=KUORI aja KUORI, jos /etc/shells sallii sen\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+"\n"
+"Pelkkä - tekee saman kuin -l. Jos TUNNUSta ei ole annettu, sen oletetaan\n"
+"olevan root.\n"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "tunnusta %s ei ole olemassa"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "väärä salasana"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "käytetään rajoitettua kuorta %s"
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "varoitus: ei voida siirtyä hakemistoon %s"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Näytä kunkin TIEDOSTOn tarkistussumma ja lohkomäärä.\n"
+"\n"
+" -r kumoa -s, käytä BSD-summa-algoritmia ja 1k-lohkoja\n"
+" -s, --sysv käytä System V -summa-algoritmia ja 512-tavuisia lohkoja\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+"Pakota muuttuneet lohkot levylle, päivitä superlohko.\n"
+"\n"
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "jätetään kaikki argumentit huomiotta"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+"\n"
+"HUOM: käytössä oleva kuori saattaa sisältää oman %s-versionsa,\n"
+"joka yleensä korvaa korvaa tässä kuvatun version. Kuoren tukemista\n"
+"ominaisuuksista saa lisää tietoa kuoren dokumentaatiosta.\n"
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help näytä tämä ohje ja poistu\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version tulosta versiotiedot ja poistu\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Tulosta kukin TIEDOSTO vakiotulosteeseen, viimeinen rivi ensimmäisenä.\n"
+"Jos TIEDOSTOa ei ole annettu, tai se on â€-â€, luetaan vakiosyötettä.\n"
+"\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before liitä erotin tekstin eteen, ei perään\n"
+" -r, --regex tulkitse erotin säännöllisenä lausekkeena\n"
+" -s, --separator=MERKKIJ käytä MERKKIJonoa erottimena rivinvaihdon sijaan\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, c-format
+msgid "%s: seek failed"
+msgstr "%s: siirtyminen epäonnistui"
+
+#: src/tac.c:265
+#, fuzzy, c-format
+msgid "record too large"
+msgstr "%s: tiedosto on liian suuri"
+
+#: src/tac.c:459
+#, c-format
+msgid "cannot create temporary file %s"
+msgstr "väliaikaistiedoston %s luominen ei onnistu"
+
+#: src/tac.c:466
+#, c-format
+msgid "cannot open %s for writing"
+msgstr "tiedostoa %s ei voi avata kirjoitusta varten"
+
+#: src/tac.c:487 src/tac.c:494
+#, c-format
+msgid "%s: write error"
+msgstr "%s: kirjoitusvirhe"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "erotin ei voi olla tyhjä"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Tulosta kunkin TIEDOSTOn %d viimeistä riviä vakiotulosteeseen.\n"
+"Jos TIEDOSTOja on useampi kuin yksi, jokaista ennen näytetään tiedostonimi.\n"
+"Jos TIEDOSTOa ei ole annettu, tai se on â€-â€, luetaan vakiosyötettä.\n"
+"\n"
+
+#: src/tail.c:229
+#, fuzzy
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry jatka tiedoston avausyrityksiä vaikka tiedosto\n"
+" ei ole käytettävissä aluksi tai myöhemmässä\n"
+" vaiheessa -- toimii vain valitsimen -f kanssa\n"
+" -c, --bytes=N tulosta viimeiset N tavua\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={name|descriptor}]\n"
+" tulosta lisätty tieto tiedoston kasvaessa;\n"
+" -f, --follow ja --follow=descriptor ovat sama "
+"asia\n"
+" -F sama kuin --follow=name --retry\n"
+
+#: src/tail.c:244
+#, fuzzy, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=N tulosta viimeiset N riviä viimeisten %d sijaan\n"
+" --max-unchanged-stats=N\n"
+" käytettäessä valitsinta --follow=name, avaa\n"
+" uudelleen TIEDOSTO, jonka koko ei ole muuttunut\n"
+" N (oletus %d) tarkistuskerran aikana, jotta\n"
+" nähdään onko se nimetty uudelleen tai linkitys\n"
+" poistettu (tämä on yleistä syrjäytettyjen\n"
+" lokitiedostojen kanssa)\n"
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID valitsimen -f kanssa, lopeta prosessin PID\n"
+" kuollessa\n"
+" -q, --quiet, --silent älä koskaan tulosta tiedostonimen sisältäviä\n"
+" otsakkeita\n"
+" -s, --sleep-interval=S valitsimen -f kanssa, nuku noin S sekuntia\n"
+" (oletus 1,0) toistojen välissä.\n"
+" -v, --verbose tulosta aina tiedostonimen sisältävät otsakkeet\n"
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"Jos N:n (tavu- tai rivimäärän) ensimmäinen merkki on â€+â€, tulosta alkaen\n"
+"kunkin tiedoston N:nnestä tavusta tai rivistä. Muussa tapauksessa tulosta\n"
+"kunkin tiedoston viimeiset N tavua tai riviä. N:n perään voi lisätä "
+"kertoimen:\n"
+"b 512, k 1024, m 1024².\n"
+"\n"
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"Valitsimen --follow (-f) kanssa tail seuraa oletuksena tiedostokahvaa, mikä\n"
+"tarkoittaa, että vaikka seurattava tiedosto nimetään uudelleen, tail jatkaa\n"
+"sen seuraamista. "
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"Tämä oletuskäyttäytyminen ei ole toivottavaa, jos halutaan todella seurata\n"
+"tietyn nimistä tiedostoa, ei kahvaa (esim. lokeja syrjäytettäessä). Siinä\n"
+"tapauksessa on käytettävä valitsinta --follow=name. Tällöin tail avaa\n"
+"seurattavan nimisen tiedoston uudelleen säännöllisesti tarkistaakseen,\n"
+"onko jokin toinen ohjelma poistanut ja luonut sen uudelleen.\n"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "suljetaan %s (fd=%d)"
+
+#: src/tail.c:411
+#, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: siirtyminen suhteelliseen siirtymään %s ei onnistu"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s: siirtyminen siirtymään %s suhteessa loppuun ei onnistu"
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr "%s ei ole enää käytettävissä"
+
+# Joo, untailable on vähän hankala sana.
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+"%s on korvattu seuraamiskelvottamalla tiedostolla; luovutaan tämän tiedoston "
+"seuraamisesta"
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr "%s on nyt käytettävissä"
+
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "%s on ilmaantunut; seurataan uuden tiedoston loppua"
+
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "%s on korvattu; seurataan uuden tiedoston loppua"
+
+#: src/tail.c:1025
+#, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: ei-estävän tilan muuttaminen ei onnistu"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: tiedosto typistynyt"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "tiedostoja ei ole jäljellä"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+"%s: tämän tyyppisen tiedoston loppua ei voi seurata; luovutaan tämän "
+"tiedoston seuraamisesta"
+
+#: src/tail.c:1439
+#, fuzzy, c-format
+msgid "number in %s is too large"
+msgstr "kenttänumero %s on liian suuri"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr ""
+"%s: virheellinen avausten välinen muuttumattomien tilan lukemisten "
+"enimmäismäärä"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: virheellinen PID"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: virheellinen sekuntimäärä"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, fuzzy, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "varoitus: --retry toimii vain seurattaessa nimen perusteella"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+"warning: ei huomioida PID:tä; --pid=PID on käyttökelpoinen vain seurattaessa"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "varoitus: --pid=PID ei ole tuettu tässä järjestelmässä"
+
+#: src/tail.c:1667
+#, c-format
+msgid "cannot follow %s by name"
+msgstr "tiedostoa %s ei voi seurata nimen perusteella"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr "varoitus: vakiosyötteen seuraaminen ikuisesti on tehotonta"
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Kopioi vakiosyöte jokaiseen TIEDOSTOon sekä vakiotulosteeseen.\n"
+"\n"
+" -a, --append lisää TIEDOSTOjen perään, älä korvaa\n"
+" -i, --ignore-interrupts jätä keskeytyssignaalit huomiotta\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Jos TIEDOSTO on -, kopioidaan vakiotulosteeseen.\n"
+
+#: src/test.c:125
+#, c-format
+msgid "missing argument after %s"
+msgstr "%s vaatii argumentin"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "virheellinen kokonaisluku %s\n"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "â€)†oli odotus\n"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "â€)†oli odotus, saatiin %s\n"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: odotettiin unaarista operaattoria\n"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "-nt ei hyväksy -l -lauseketta\n"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "-ef ei hyväksy -l -lauseketta\n"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "-ot ei hyväksy -l -lauseketta\n"
+
+#: src/test.c:368
+#, fuzzy
+msgid "unknown binary operator"
+msgstr "tuntematon binäärioperaattori\n"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: odotettiin binäärista operaattoria\n"
+
+#: src/test.c:694
+#, fuzzy
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Käyttö: test LAUSEKE\n"
+" tai: [ LAUSEKE ]\n"
+" tai: [ VALITSIN\n"
+"Poistu LAUSEKKEen määräämällä poistumiskoodilla.\n"
+"\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"Poistu tilakoodilla, jonka LAUSEKE määrittelee.\n"
+"\n"
+
+#: src/test.c:707
+#, fuzzy
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"\n"
+"LAUSEKE on tosi tai epätosi ja asettaa tilakoodin. Se on jokin seuraavista:\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+"\n"
+" ( LAUSEKE ) LAUSEKE on tosi\n"
+" ! LAUSEKE LAUSEKE on epätosi\n"
+" LAUSEKE1 -a LAUSEKE2 sekä LAUSEKE1 että LAUSEKE2 ovat tosia\n"
+" LAUSEKE1 -o LAUSEKE2 joko LAUSEKE1 tai LAUSEKE2 on tosi\n"
+
+#: src/test.c:719
+#, fuzzy
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"\n"
+" [-n] MERKKIJONO MERKKIJONOn pituus on nollasta poikkeava\n"
+" -z MERKKIJONO MERKKIJONOn pituus on nolla\n"
+" MERKKIJONO1 = MERKKIJONO2 merkkijonot ovat yhteneväiset\n"
+" MERKKIJONO1 != MERKKIJONO2 merkkijonot eivät ole yhteneväiset\n"
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" KOK.LUKU1 -eq KOK.LUKU2 KOK.LUKU1 on yhtäsuuri kuin KOK.LUKU2\n"
+" KOK.LUKU1 -ge KOK.LUKU2 KOK.LUKU1 on suurempi tai yhtäsuuri kuin KOK."
+"LUKU2\n"
+" KOK.LUKU1 -gt KOK.LUKU2 KOK.LUKU1 on suurempi kuin KOK.LUKU2\n"
+" KOK.LUKU1 -le KOK.LUKU2 KOK.LUKU1 on pienempi tai yhtäsuuri kuin KOK."
+"LUKU2\n"
+" KOK.LUKU1 -lt KOK.LUKU2 KOK.LUKU1 on pienempi kuin KOK.LUKU2\n"
+" KOK.LUKU1 -ne KOK.LUKU2 KOK.LUKU1 on erisuuri kuin KOK.LUKU2\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+"\n"
+" TIEDOSTO1 -ef TIEDOSTO2 tiedostoilla on sama laite ja sama inode-numero\n"
+" TIEDOSTO1 -nt TIEDOSTO2 TIEDOSTO1 on uudempi (muokkauspäiväys) kuin "
+"TIEDOSTO2\n"
+" TIEDOSTO1 -ot TIEDOSTO2 TIEDOSTO1 on vanhempi kuin TIEDOSTO2\n"
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+"\n"
+" -b TIEDOSTO TIEDOSTO on olemassa ja on lohkolaitetiedosto\n"
+" -c TIEDOSTO TIEDOSTO on olemassa ja on merkkilaitetiedosto\n"
+" -d TIEDOSTO TIEDOSTO on olemassa ja on hakemisto\n"
+" -e TIEDOSTO TIEDOSTO on olemassa\n"
+
+#: src/test.c:749
+#, fuzzy
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+" -f TIEDOSTO TIEDOSTO on olemassa ja on tavallinen tiedosto\n"
+" -g TIEDOSTO TIEDOSTO on olemassa ja sen set-group-ID -bitti on päällä\n"
+" -h TIEDOSTO TIEDOSTO on olemassa ja on symbolinen linkki (sama kuin -"
+"L)\n"
+" -G TIEDOSTO TIEDOSTO on olemassa ja voimassaolevan ryhmän "
+"omistuksessa\n"
+" -k TIEDOSTO TIEDOSTO on olemassa ja sen â€sticky bit†on päällä\n"
+
+#: src/test.c:756
+#, fuzzy
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+" -L TIEDOSTO TIEDOSTO on olemassa ja on symbolinen linkki (sama kuin -"
+"h)\n"
+" -O TIEDOSTO TIEDOSTO on olemassa ja voimassaolevan käyttäjän "
+"omistuksessa\n"
+" -p TIEDOSTO TIEDOSTO on olemassa ja on nimetty putki\n"
+" -r TIEDOSTO TIEDOSTO on olemassa ja luettavissa\n"
+" -s TIEDOSTO TIEDOSTO on olemassa ja kooltaan suurempi kuin nolla\n"
+
+#: src/test.c:763
+#, fuzzy
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+" -S TIEDOSTO TIEDOSTO on olemassa ja on a socket\n"
+" -t [TK] tiedostokahva TK (oletuksena stdout) on auki ja "
+"päätelaite\n"
+" -u TIEDOSTO TIEDOSTO on olemassa ja sen set-user-ID -bitti on päällä\n"
+" -w TIEDOSTO TIEDOSTO on olemassa ja kirjoitettavissa\n"
+" -x TIEDOSTO TIEDOSTO on olemassa ja ajettavissa\n"
+
+#: src/test.c:770
+#, fuzzy
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"Huomaa, että sulut täytyy suojata kuorilta (esim. kenoviivoilla).\n"
+"KOKONAISLUKU voi olla myös -l MERKKIJONO, joka laventuu MERKKIJONOn "
+"pituudeksi.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "puuttuva â€]â€\n"
+
+#: src/test.c:846
+#, c-format
+msgid "extra argument %s"
+msgstr "ylimääräinen argumentti %s"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "virheellinen päiväyksen muoto %s"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "luodaan %s"
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr "tiedostoa %s ei voi koskettaa"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "asetetaan tiedoston %s ajat"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+"Päivitä jokaisen TIEDoston käyttö- ja muutosajat nykyiseen aikaan.\n"
+"\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a muuta vain käyttöaikaa\n"
+" -c, --no-create älä luo tiedostoja\n"
+" -d, --date=MERKKIJ jäsennä MERKKIJono ja käytä sitä nykyisen ajan "
+"sijaan\n"
+" -f (ei huomioida)\n"
+" -m muuta vain muutosaikaa\n"
+
+#: src/touch.c:248
+#, fuzzy
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --reference=TIED käytä tämän TIEDoston aikoja nykyisen ajan sijaan\n"
+" -t LEIMA käytä aikaa [[CC]VV]KKPPttmm[.ss] nykyisen ajan "
+"sijaan\n"
+" --time=SANA aseta aika SANAn mukaan: käyttöaika atime use (sama "
+"kuin -a)\n"
+" muuta aikaa mtime (sama kuin -m)\n"
+
+#: src/touch.c:257
+#, fuzzy
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"Huomaa, että valitsimien -d ja -t hyväksymät aika-päiväysmuodot ovat\n"
+"erilaisia.\n"
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "aika voidaan määrittää vain yhdestä lähteestä"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+"varoitus: â€touch %s†on vanhentunut; käytä â€touch -t %04ld%02d%02d%02d%02d.%"
+"02dâ€"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Käyttö: %s [VALITSIN]... JOUKKO1 [JOUKKO2]...\n"
+
+#: src/tr.c:294
+#, fuzzy
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Vaihda, purista, ja/tai poista merkkejä vakiosyötteestä, kirjoittaen\n"
+"vakiotulosteeseen.\n"
+"\n"
+" -c, --complement komplementoi ensin JOUKKO1\n"
+" -d, --delete poista JOUKKO1:ssä esiintyvät merkit, älä vaihda\n"
+" -s, --squeeze-repeats korvaa kukin JOUKKO1:ssä luetellun merkin "
+"toistuva\n"
+" syötesarja yhdellä kappaleella kyseistä merkkiä\n"
+" -t, --truncate-set1 typistä JOUKKO1 JOUKKO2:n pituuteen\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"JOUKOTt ovat merkkijonoja. Useimmat merkit edustavat itseään.\n"
+"Tulkittavat sarjat ovat:\n"
+"\n"
+" \\NNN merkki, jonka oktaaliarvo on NNN (1–3 oktaalinumeroa)\n"
+" \\\\ kenoviiva\n"
+" \\a merkkiääni (BEL)\n"
+" \\b askelpalautin\n"
+" \\f paperinsyöttö\n"
+" \\n rivinvaihto\n"
+" \\r palautus\n"
+" \\t vaakasarkain\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v pystysarkain\n"
+" MERK1-MERK2 kaikki merkit MERK1:stä MERK2:een nousevassa "
+"järjestyksessä\n"
+" [MERK*] JOUKKO2:ssa, MERKin kopioita JOUKKO1:n pituuteen asti\n"
+" [MERK*TOISTO] TOISTO kopiota MERKistä, TOISTO 8-järjestelmässä jos "
+"alussa 0\n"
+" [:alnum:] kaikki kirjaimet ja numerot\n"
+" [:alpha:] kaikki kirjaimet\n"
+" [:blank:] kaikki vaakasuuntaiset tyhjeet\n"
+" [:cntrl:] kaikki ohjausmerkit\n"
+" [:digit:] kaikki numerot\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] kaikki tulostuvat merkit, poislukien välilyönti\n"
+" [:lower:] kaikki pienet kirjaimet\n"
+" [:print:] kaikki tulostuvat merkit, mukaanlukien välilyönti\n"
+" [:punct:] kaikki välimerkit\n"
+" [:space:] kaikki vaaka- tai pystysuuntaiset tyhjeet\n"
+" [:upper:] kaikki isot kirjaimet\n"
+" [:xdigit] kaikki 16-järjestelmän numerot\n"
+" [=MERK=] kaikki merkit, jotka ovat yhtäläisiä MERKin kanssa\n"
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"Vaihtaminen tehdään, jos valitsinta -d ei ole annettu, ja sekä JOUKKO1 että\n"
+"JOUKKO2 on annettu. Valitsin -t voidaan antaa vain vaihdettaessa. JOUKKO2\n"
+"laajennetaan tarvittaessa JOUKKO1:n pituuteen toistamalla sen viimeistä\n"
+"kirjainta. "
+
+# *** *** ** *** * ** * *
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"JOUKKO2:n mahdolliset ylimääräiset merkit jätetään huomiotta.\n"
+"Vain rakenteet [:lower:] ja [:upper:] laajenevat aina nousevassa\n"
+"järjestyksessä. Kun em. rakenteita käytetään JOUKKO2:ssa vaihdettaessa,\n"
+"niiden on oltava pareittain määrittelemässä kirjainkoon muutosta.\n"
+"Ellei "
+
+# edellinen lause jatkuu tähän, ärsyttävää.
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"vaihdeta tai poisteta, valitsin -s käyttää JOUKKO1:ä;\n"
+"muussa tapauksessa puristaminen käyttää JOUKKO2:a, ja ilmenee vaihtamisen\n"
+"tai poistamisen jälkeen.\n"
+
+#: src/tr.c:519
+#, fuzzy, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"varoitus: moniselitteinen oktaalisuojaus \\%c%c%c tulkitaan\n"
+"\t2-tavuiseksi sarjaksi \\0%c%c, \"%c\""
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "välin â€%s-%s†päätepisteet ovat käännetyssä järjestyksessä"
+
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "virheellinen toistomäärä %s [c*n]-rakenteessa"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "puuttuva merkkiluokan nimi â€[::]â€"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "puuttuva yhtäläisyysluokan merkki â€[==]â€"
+
+#: src/tr.c:937
+#, c-format
+msgid "invalid character class %s"
+msgstr "virheellinen merkkiluokka %s"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: yhtäläisyysluokan operandin on oltava yksittäinen merkki"
+
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr "outo merkki kenttämäärityksessä"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "toistorakenne [c*] ei saa esiintyä merkkijono1:ssä"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "toistorakenne [c*] saa esiintyä vain kerran merkkijono2:ssa"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "[=c=]-lausekkeita ei saa esiintyä merkkijono2:ssa vaihdettaessa"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "ellei typistetä joukko1:tä, merkkijono2 ei saa olla tyhjä"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"merkkijono2:n on kuvattava kaikki määrittelyjoukon merkit yhdeksi\n"
+"vaihdettaessa käyttäen täydennettyjä merkkiluokkia"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"ainoat merkkiluokat, jotka vaihdettaessa saavat esiintyä merkkijono2:ssa,\n"
+"ovat â€upper†ja â€lowerâ€"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "rakenne [c*] saa esiintyä merkkijono2:ssa vain muunnettaessa"
+
+#: src/tr.c:1731
+#, fuzzy
+msgid "Two strings must be given when translating."
+msgstr "vaihdettaessa on annettava kaksi merkkijonoa"
+
+#: src/tr.c:1741
+#, fuzzy
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr "poistettaessa toistoja puristamatta voidaan antaa vain yksi merkkijono"
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "väärin aseteltu [:upper:]- ja/tai [:lower:]-rakenne"
+
+#: src/true.c:42
+#, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Käyttö: %s [huomiotta jätettävät komentoriviargumentit]\n"
+" tai: %s VALITSIN\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Käyttö: %s [VALITSIN] [TIEDOSTO]\n"
+"Kirjoita täysin järjestetty luettelo, joka on yhtäpitävä TIEDOSTOssa olevan\n"
+"osittaisen järjestyksen kanssa. Jos TIEDOSTOa ei anneta tai se on â€-â€, "
+"luetaan\n"
+"vakiosyötettä.\n"
+"\n"
+
+#: src/tsort.c:474
+#, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: syöte sisältää parittoman määrän symboleja"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: syöte sisältää silmukan:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Käyttö: %s [VALITSIN]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Tulosta vakiosyötteeseen kytketyn päätteen tiedostonimi.\n"
+"\n"
+" -s, --silent, --quiet ei tulostetta, pelkkä poistumisen tilakoodin "
+"palautus\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "ei ole tty"
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Tulosta tiettyjä järjestelmätietoja. Komento ilman VALITSINta on sama\n"
+"kuin -s.\n"
+"\n"
+" -a, --all tulosta kaikki tiedot seuraavassa järjestyksessä\n"
+" (paitsi -p ja -i, jos tuntemattomia):\n"
+" -s, --kernel-name tulosta ytimen nimi\n"
+" -n, --nodename tulosta koneen nimi verkossa\n"
+" -r, --kernel-release tulosta ytimen versionumero\n"
+
+#: src/uname.c:127
+#, fuzzy
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v, --kernel-version tulosta ytimen versiotiedot\n"
+" -m, --machine tulosta laitteiston tyyppi\n"
+" -p, --processor tulosta prosessorin tyyppi tai â€tuntematonâ€\n"
+" -i, --hardware-platform tulosta laitteistoalusta tai â€tuntematonâ€\n"
+" -o, --operating-system tulosta käyttöjärjestelmä\n"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "järjestelmän nimen haku ei onnistu"
+
+#: src/unexpand.c:125
+#, fuzzy
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Muunna kunkin TIEDOSTOn sisältämät välilyönnit sarkaimiksi, kirjoittaen\n"
+"vakiotulosteeseen. Jos TIEDOSTOa ei anneta tai se on â€-â€, luetaan "
+"vakiosyötettä.\n"
+"\n"
+
+#: src/unexpand.c:133
+#, fuzzy
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all muunna kaikki tyhjeet, ei vain rivien alussa olevia\n"
+" --first-only muunna vain rivien alussa olevat tyhjeet (kumoaa\n"
+" valitsimen -a)\n"
+" -t, --tabs=N aseta sarkainkooksi N, ei 8 (ottaa käyttöön valitsimen -"
+"a)\n"
+" -t, --tabs=LUETT käytä pilkuilla erotettua sarkainkohtien LUETTeloa "
+"(ottaa \n"
+" käyttöön valitsimen -a)\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "sarkainasetin %s on liian suuri"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Käyttö: %s [VALITSIN]... [SYÖTE [TULOSTE]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"Tulosta (vakio)SYÖTTEestä luetut peräkkäin esiintyvät identtiset rivit\n"
+"vain kerran, kirjoittaen (vakio)TULOSTEeseen.\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count liitä rivin eteen sen esiintymiskertojen määrä\n"
+" -d, --repeated tulosta vain useaan kertaan esiintyvät rivit\n"
+
+#: src/uniq.c:151
+#, fuzzy
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated[=erotustapa] tulosta kaikki vähintään kahteen kertaan\n"
+" esiintyvät rivit\n"
+" erotustapa={none(oletus),prepend,separate}\n"
+" Erotus tehdään tyhjillä riveillä.\n"
+" -f, --skip-fields=N älä vertaa N:ää ensimmäistä kenttää\n"
+" -i, --ignore-case älä huomioi kirjainkokoa vertaillessa\n"
+" -s, --skip-chars=N älä vertaa N:ää ensimmäistä merkkiä\n"
+" -u, --unique tulosta vain ainutkertaiset rivit\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr " -w, --check-chars=N vertaa vain rivien N:ää ensimmäistä merkkiä\n"
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"Kenttä on joukko tyhjeitä, joita seuraa joukko ei-tyhjeitä.\n"
+"Kentät ohitetaan ennen merkkejä.\n"
+
+#: src/uniq.c:350
+#, fuzzy, c-format
+msgid "too many repeated lines"
+msgstr "liian monta argumenttia"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "virheellinen ohitettavien kenttien määrä"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "virheellinen ohitettavien tavujen määrä"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "virheellinen verrattavien tavujen määrä"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+"kaikkien vähintään kahteen kertaan esiintyvien rivien ja esiintymiskertojen "
+"määrän tulostaminen on merkityksetöntä"
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Käyttö: %s TIEDOSTO\n"
+" tai: %s VALITSIN\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"Kutsu unlink-funktiota annetun TIEDOSTOn poistamiseksi.\n"
+"\n"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "tiedoston %s linkitystä ei voi poistaa"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "käynnistysajan haku ei onnistu"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s käynnissä "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "am"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "pm"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr " ??:???? käynnissä "
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr "???? vrk ??:??, "
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%ld vrk"
+msgstr[1] "%ld vrk"
+
+#: src/uptime.c:147
+#, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%lu käyttäjä"
+msgstr[1] "%lu käyttäjää"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", keskimääräinen kuorma: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Käyttö: %s [VALITSIN]... [ TIEDOSTO ]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Näytä kellonaika, järjestelmän päälläoloaika, järjestelmään\n"
+"kirjautuneiden käyttäjien määrä sekä ajojonon töiden keskimääräinen\n"
+"lukumäärä viimeisten 1, 5 ja 15 minuutin ajalta.\n"
+"Jos TIEDOSTOa ei ole annettu, käytä %s. %s TIEDOSTOna on yleinen.\n"
+"\n"
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Näytä kirjautuneet käyttäjät TIEDOSTOn mukaan.\n"
+"Oletustiedosto on %s. %s on yleinen TIEDOSTOna.\n"
+"\n"
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Näytä kunkin TIEDOSTOn rivi-, sana- ja tavumäärät, sekä\n"
+"kokonaismäärät jos TIEDOSTOja on useampi kuin yksi. Jos TIEDOSTOa ei ole\n"
+"annettu, tai se on â€-â€, luetaan vakiosyötettä.\n"
+" -c, --bytes näytä tavumäärät\n"
+" -m, --chars näytä merkkimäärät\n"
+" -l, --lines näytä rivimäärät\n"
+
+#: src/wc.c:121
+#, fuzzy
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" -L, --max-line-length näytä pisimmän rivin pituus\n"
+" -w, --words näytä sanamäärät\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr "kauan"
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "sulj="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "pois="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "kellon siirto"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "käyttötaso"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "edell="
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"# käyttäjiä=%lu\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "NIMI"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "YHTEYS"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "AIKA"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr "JOUTEN"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "KOMMENTTI"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "POIS"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Käyttö: %s [VALITSIN]... [ TIEDOSTO | ARG1 ARG2 ]\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" -a, --all sama kuin -b -d --login -p -r -t -T -u\n"
+" -b, --boot viimeisimmän käynnistyksen aika\n"
+" -d, --dead näytä kuolleet prosessit\n"
+" -H, --heading näytä otsikkorivi\n"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+" --lookup yritä selvittää palvelinnimet DNS:n avulla\n"
+" -m vain koneen nimi ja vakiosyötteeseen liittyvä tunnus\n"
+" -p, --process näytä aktiiviset prosessit, jotka init on käynnistänyt\n"
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+" -q, --count tunnukset ja kirjautuneena olevien käyttäjien määrä\n"
+" -r, --runlevel näytä voimassa oleva käyttötaso\n"
+" -s, --short näytä vain nimi, yhteys ja aika (oletus)\n"
+" -t, --time näytä viimeisin järjestelmäkellon muutosaika\n"
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+" -T, -w, --mesg näytä myös tunnuksen viestitila merkeillä +, - tai ?\n"
+" -u, --users luettele kirjautuneet käyttäjät\n"
+" --message sama kuin -T\n"
+" --writable sama kuin -T\n"
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"%s on oletusTIEDOSTO. %s TIEDOSTOna on yleinen.\n"
+"Jos ARG1 ja ARG2 annetaan, -m on oletetaan: â€am i†tai â€mom likes†ovat\n"
+"tavallisia.\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+"Varoitus: valitsin -i poistetaan tulevassa julkaisussa; käytä valitsinta\n"
+"-u sen sijaan"
+
+#: src/whoami.c:51
+#, fuzzy
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Tulosta voimassaolevaa käyttäjä-id:tä vastaava käyttäjänimi.\n"
+"Sama kuin id -un.\n"
+"\n"
+
+#: src/whoami.c:95
+#, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: käyttäjä-ID:tä %lu vastaavaa nimeä ei löydy\n"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Käyttö: %s [MERKKIJONO]...\n"
+" tai: %s VALITSIN\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"Tulosta toistuvasti riviä, jolla on kaikki annetut MERKKIJONO(t) tai â€yâ€.\n"
+"\n"
+
+#~ msgid "strip failed"
+#~ msgstr "strip epäonnistui"
+
+#~ msgid "-R -h requires -P"
+#~ msgstr "-R -h vaatii -P:n"
+
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "tämä järjestelmä ei tue symbolisia linkkejä"
+
+#~ msgid "value %s is so large that it is not representable"
+#~ msgstr "arvo %s on liian suuri esitettäväksi"
+
+#~ msgid "fifo files not supported"
+#~ msgstr "fifo-tiedostot eivät ole tuettuja"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "hakemistoa â€.†tai â€..†ei voi poistaa"
+
+#~ msgid "%s: count `%.*s' too large"
+#~ msgstr "%s: lukumäärä â€%.*s†on liian suuri"
+
+# Muita sanamahdollisuuksia kuin "kohde"?
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "kohteen %s omistajaa ja/tai ryhmää ei voi muuttaa"
+
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "siirtyminen hakemistoon %s ei onnistu"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "numeerisen UID:n kirjautumisryhmää ei löydy"
+
+#~ msgid ""
+#~ " --no-preserve-root do not treat `/' specially (the default)\n"
+#~ " --preserve-root fail to operate recursively on `/'\n"
+#~ msgstr ""
+#~ " --no-preserve-root älä kohtele juurta (â€/â€) erityisesti (oletus)\n"
+#~ " --preserve-root estä rekursiivinen toiminta juuressa (â€/â€)\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "warning: unportable BRE: %s: using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr ""
+#~ "varoitus: epäsiirrettävä säännöllinen lauseke: `%s': â€^â€-merkin käyttö \n"
+#~ "yksinkertaisen säännöllisen lausekkeen alussa ei ole siirrettävää;\n"
+#~ "se jätetään huomiotta"
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "tunnistamaton valitsin â€-%câ€"
+
+#~ msgid "cannot return to working directory"
+#~ msgstr "työhakemistoon palaaminen epäonnistui"
+
+#~ msgid "cannot return to current directory"
+#~ msgstr "työhakemistoon palaaminen ei onnistu"
+
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "luo symbolinen linkki %s kohteeseen %s"
+
+#~ msgid "create hard link %s to %s"
+#~ msgstr "luo symbolinen linkki %s kohteeseen %s"
+
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "hakemiston %s oikeuksien asettaminen ei onnistu"
+
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "fifon %s oikeuksien asettaminen ei onnistu"
+
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "tiedoston %s oikeuksien asettaminen ei onnistu"
+
+#~ msgid ""
+#~ "This program is free software; you can redistribute it and/or modify\n"
+#~ "it under the terms of the GNU General Public License as published by\n"
+#~ "the Free Software Foundation; either version 2, or (at your option)\n"
+#~ "any later version.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Tämä ohjelma on vapaaohjelmisto; voitte levittää edelleen ja/tai\n"
+#~ "muuttaa sitä Free Software Foundationin julkaiseman GNU General Public\n"
+#~ "License'in ehtojen mukaisesti; joko version 2, tai (valintanne mukaan)\n"
+#~ "minkä tahansa myöhemmän version.\n"
+
+#~ msgid ""
+#~ "This program is distributed in the hope that it will be useful,\n"
+#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+#~ "GNU General Public License for more details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Tätä ohjelmaa levitetään siinä toivossa, että se olisi hyödyllinen,\n"
+#~ "mutta TAKUUTA EI OLE; ei edes KAUPALLISESTI HYVÄKSYTTÄVÄSTÄ LAADUSTA\n"
+#~ "tai SOPIVUUDESTA TIETTYYN TARKOITUKSEEN. Katsokaa lisätietoja GNU\n"
+#~ "General Public License'istä.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
+#~ msgstr ""
+#~ "Olette saaneet kopion GNU General Public License'istä tämän\n"
+#~ "ohjelman mukana. Ellette saaneet, kirjoittakaa Free Software Foundation,\n"
+#~ "Inc.:ille osoitteeseen 51 Franklin Street, Fifth Floor,\n"
+#~ "Boston, MA 02110-1301, USA.\n"
+
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "siirtyminen â€..â€-hakemistoon hakemistosta %s ei onnistu"
+
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "hakemiston â€.†tilan lukeminen ei onnistu hakemistossa %s"
+
+#~ msgid "cannot lstat %s"
+#~ msgstr "tiedoston %s tilan lukeminen ei onnistu"
+
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "siirtyminen hakemistosta %s hakemistoon %s ei onnistu"
+
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only; this works only if your "
+#~ "system\n"
+#~ " supports `unlink' for nonempty directories)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ msgstr ""
+#~ "Poista (irrota linkitys) TIEDOSTO(t).\n"
+#~ "\n"
+#~ " -d, --directory irrota TIEDOSTOn linkitys, vaikka se olisi ei-"
+#~ "tyhjä\n"
+#~ " hakemisto (vain pääkäyttäjä; toimii vain jos\n"
+#~ " järjestelmä tukee â€unlinkâ€-toimintoa\n"
+#~ " ei-tyhjille hakemistoille)\n"
+#~ " -f, --force älä huomioi puuttuvia tiedostoja, älä kysy "
+#~ "mitään\n"
+#~ " -i, --interactive kysy ennen jokaista poistoa\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT matchWARNING: "
+#~ "%<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+#~ msgstr "VAROITUS: %1$d %3$s %2$d tarkistetusta EI täsmännyt"
+
+# Tämä tulee varmasti vastaan monessa ohjelmassa, voisi sopia
+# jonkun tietyn suomennoksen sille, ja käyttää sitä sitten aina.
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Tämä on vapaa ohjelmisto; katsokaa kopiointiehdot lähdekoodista. Takuuta "
+#~ "EI OLE;\n"
+#~ "ei edes KAUPALLISESTI HYVÄKSYTTÄVÄSTÄ LAADUSTA tai SOPIVUUDESTA TIETTYYN\n"
+#~ "TARKOITUKSEEN.\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "liian vähän argumentteja"
+
+#~ msgid "closing standard output"
+#~ msgstr "suljetaan vakiotuloste"
+
+#~ msgid "cannot change to null group"
+#~ msgstr "ryhmän nimi ei voi olla tyhjä"
+
+#~ msgid "group number"
+#~ msgstr "ryhmänumero"
+
+#~ msgid "invalid group number %s"
+#~ msgstr "virheellinen ryhmänumero %s"
+
+#~ msgid ""
+#~ "\n"
+#~ "Each MODE is one or more of the letters ugoa, one of the symbols +-= and\n"
+#~ "one or more of the letters rwxXstugo.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Kukin OIKEUDET-argumentti koostuu yhdestä tai useammasta kirjaimista "
+#~ "ugoa,\n"
+#~ "yhdestä symboleista +-= ja yhdestä tai useammasta kirjaimista rwxXstugo.\n"
+
+#~ msgid "invalid mode string: %s"
+#~ msgstr "virheellinen oikeusmerkkijono: %s"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "Käyttö: %s [VALITSIN]... OMISTAJA[:[RYHMÄ]] TIEDOSTO...\n"
+#~ " tai: %s [VALITSIN]... :RYHMÄ TIEDOSTO...\n"
+#~ " tai: %s [VALITSIN]... --reference=RTIED TIEDOSTO...\n"
+
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "hakemistoa %s ei voi korvata"
+
+#~ msgid "%s: specified destination directory does not exist"
+#~ msgstr "%s: annettu kohdehakemisto ei ole olemassa"
+
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "%s: annettu kohde ei ole hakemisto"
+
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr ""
+#~ "kopioidaan useita tiedostoja, mutta viimeinen argumentti %s ei ole "
+#~ "hakemisto"
+
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "varoitus: --version-control (-V) on vanhentunut; sen tuki poistetaan\n"
+#~ "jossakin tulevassa julkaisussa. Käytä sen sijaan --backup=%s."
+
+#~ msgid ""
+#~ "Display the current time in the given FORMAT, or set the system date.\n"
+#~ "\n"
+#~ " -d, --date=STRING display time described by STRING, not `now'\n"
+#~ " -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+#~ " -ITIMESPEC, --iso-8601[=TIMESPEC] output date/time in ISO 8601 "
+#~ "format.\n"
+#~ " TIMESPEC=`date' for date only,\n"
+#~ " `hours', `minutes', or `seconds' for date "
+#~ "and\n"
+#~ " time to the indicated precision.\n"
+#~ " --iso-8601 without TIMESPEC defaults to "
+#~ "`date'.\n"
+#~ msgstr ""
+#~ "Näytä tämänhetkinen aika annetulla MUOTOILUlla, tai aseta järjestelmän "
+#~ "aika.\n"
+#~ "\n"
+#~ " -d, --date=MERKKIJONO näytä MERKKIJONOn määräämä aika \"now\":n "
+#~ "sijaan\n"
+#~ " -f, --file=PVMTIEDOSTO kuten --date kerran kullekin PVMTIEDOSTOn "
+#~ "riville\n"
+#~ " -ITIMESPEC, --iso-8601[=AIKAMÄÄRE] näytä päivämäärä/aika ISO 8601 -"
+#~ "muodossa.\n"
+#~ " AIKAMÄÄRE=\"date\" pelkälle päivämäärälle,\n"
+#~ " \"hours\", \"minutes\", tai \"seconds\" "
+#~ "päivämäärälle ja\n"
+#~ " ajalle mainitulla tarkkuudella.\n"
+#~ " --iso-8601 ilman AIKAMÄÄREttä olettaa \"date"
+#~ "\":n.\n"
+
+#~ msgid ""
+#~ " %F same as %Y-%m-%d\n"
+#~ " %g the 2-digit year corresponding to the %V week number\n"
+#~ " %G the 4-digit year corresponding to the %V week number\n"
+#~ msgstr ""
+#~ " %F sama kuin %Y-%m-%d\n"
+#~ " %g kaksinumeroinen vuosiluku, joka vastaa %V-viikkonumeroa\n"
+#~ " %G nelinumeroinen vuosiluku, joka vastaa %V-viikkonumeroa\n"
+
+#~ msgid ""
+#~ " %z RFC-2822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %Z time zone (e.g., EDT), or nothing if no time zone is determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr ""
+#~ " %z RFC-822-tyylinen numeerinen aikavyöhyke (-0500) (epästandardi "
+#~ "laajennos)\n"
+#~ " %Z aikavyöhyke (esim. EET), tai tyhjä, jos aikavyöhykettä ei voida "
+#~ "määrittää\n"
+#~ "\n"
+#~ "Oletuksena date täyttää numeeriset kentät etunollilla. GNU date "
+#~ "tunnistaa\n"
+#~ "seuraavat määreet \"%\"-merkin ja numeerisen ohjaimen välillä.\n"
+#~ "\n"
+#~ " \"-\" (yhdysviiva) älä täytä kenttää\n"
+#~ " \"_\" (alaviiva) täytä kenttä välilyönneillä\n"
+
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "liikaa argumentteja, jotka eivät ole valitsimia: %s%s"
+
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-2822 (-R) option"
+#~ msgstr ""
+#~ "muotoilumerkkijonoa ei saa käyttää yhdessä valitsimen --rfc-822 (-R) "
+#~ "kanssa"
+
+#~ msgid "undefined"
+#~ msgstr "määrittelemätön"
+
+#~ msgid "cannot get time of day"
+#~ msgstr "ajan haku ei onnistu"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "%s+%s tietuetta sisään\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "%s+%s tietuetta ulos\n"
+
+#~ msgid "truncated records"
+#~ msgstr "typistettyä tietuetta"
+
+#~ msgid ""
+#~ "\tonly one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}"
+#~ msgstr ""
+#~ "\tvain yksi conv joukoista {ascii,ebcdic,ibm}, {lcase,ucase}, {block,"
+#~ "unblock},\n"
+#~ "{unblock,sync}"
+
+#~ msgid "file offset out of range"
+#~ msgstr "tiedostosiirtymä on sallitun välin ulkopuolella"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr ""
+#~ "dircolors:in tietokannan tulostavan valitsimen kanssa ei voi\n"
+#~ "käyttää TIEDOSTO-argumenttia"
+
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ msgstr ""
+#~ "Kaiuta MERKKIJONO(t) vakiotulosteeseen.\n"
+#~ "\n"
+#~ " -n älä lisää rivinvaihtoa loppuun\n"
+#~ " -e ota käyttöön alla lueteltujen kenoviivallisten\n"
+#~ " ohjausmerkkien tulkinta\n"
+#~ " -E poista käytöstä kyseisten merkkien tulkinta "
+#~ "MERKKIJONOista\n"
+
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "valitsin \"-LIST\" on vanhentunut; käytä \"-t LIST\""
+
+#~ msgid "`%s' is too large"
+#~ msgstr "\"%s\" on liian suuri"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Käyttö: %s [huomiotta jätettävät komentoriviargumentit]\n"
+#~ " tai: %s VALITSIN\n"
+#~ "Poistutaan virheestä kertovalla tilakoodilla.\n"
+#~ "\n"
+#~ "Näitä valitsinten nimiä ei voi käyttää lyhennettyinä.\n"
+#~ "\n"
+
+#~ msgid "invalid width option: %s"
+#~ msgstr "virheellinen leveysvalitsin: %s"
+
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "valitsin \"%s\" on vanhentunut; käytä \"%s\""
+
+#~ msgid "%s: number of bytes is large"
+#~ msgstr "%s: tavumäärä on suuri"
+
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "valitsin \"-%s\" on vanhentunut; käytä \"-%c %.*s%.*s%s\""
+
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr ""
+#~ "asennetaan useita tiedostoja, mutta viimeinen argumentti %s ei ole "
+#~ "hakemisto"
+
+#~ msgid "%s is a directory"
+#~ msgstr "%s on hakemisto"
+
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "tiedoston %s aikaleimojen hakeminen ei onnistu"
+
+#~ msgid "too many non-option arguments"
+#~ msgstr "liikaa argumentteja, jotka eivät ole valitsimia"
+
+#~ msgid "invalid field number: `%s'"
+#~ msgstr "virheellinen sarakenumero: \"%s\""
+
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "virheellinen sarakenumero tiedostolle 1: \"%s\""
+
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "virheellinen sarakenumero tiedostolle 2: \"%s\""
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "liian vähän argumentteja, jotka eivät ole valitsimia"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: Tiedosto on olemassa"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "Käyttö: %s [VALITSIN]... KOHDE [LINKIN_NIMI]\n"
+#~ " tai: %s [VALITSIN]... KOHDE... HAKEMISTO\n"
+#~ " tai: %s [VALITSIN]... --target-directory=HAKEMISTO KOHDE...\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr "useita linkkejä luotaessa viimeisen argumentin on oltava hakemisto"
+
+#~ msgid "User name too long"
+#~ msgstr "Käyttäjänimi on liian pitkä"
+
+#~ msgid ""
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -b, --binary lue tiedostot binäärimuodossa (oletus DOSissa/"
+#~ "Windowsissa)\n"
+#~ " -c, --check vertaa %s-summia annettuun luetteloon\n"
+#~ " -t, --text lue tiedostot tekstimuodossa (oletus)\n"
+
+#~ msgid "file"
+#~ msgstr "tiedosto"
+
+#~ msgid "files"
+#~ msgstr "tiedostoa"
+
+#~ msgid "checksum"
+#~ msgstr "tarkistussumma"
+
+#~ msgid "checksums"
+#~ msgstr "tarkistussummaa"
+
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "valitsimet --string ja --check ovat toisensa poissulkevia"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "tiedostoja ei voi antaa käytettäessä valitsinta --string"
+
+#~ msgid "only one argument may be specified when using --check"
+#~ msgstr "käytettäessä valitsinta --check voi antaa vain yhden argumentin"
+
+#~ msgid "wrong number of arguments"
+#~ msgstr "väärä määrä argumentteja"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr "fifo-tiedostoille ei voi antaa major- ja minor-laitearvoja"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr ""
+#~ "viimeisen argumentin on oltava hakemisto siirrettäessä useita tiedostoja"
+
+#~ msgid ""
+#~ "Run COMMAND with an adjusted scheduling priority.\n"
+#~ "With no COMMAND, print the current scheduling priority. ADJUST is 10\n"
+#~ "by default. Range goes from -20 (highest priority) to 19 (lowest).\n"
+#~ "\n"
+#~ " -n, --adjustment=ADJUST increment priority by ADJUST first\n"
+#~ msgstr ""
+#~ "Aja KOMENTO säädetyllä vuorotusprioriteetilla.\n"
+#~ "Ilman KOMENTOa, näytä voimassaoleva prioriteetti. SÄÄTÖ on oletuksena "
+#~ "10.\n"
+#~ "Sen arvoalue on -20:stä (korkein prioriteetti) 19:ään (matalin).\n"
+#~ "\n"
+#~ " -n, --adjustment=SÄÄTÖ lisää prioriteettiin SÄÄTÖ\n"
+
+#~ msgid "invalid option `%s'"
+#~ msgstr "valitsin \"%s\" ei kelpaa"
+
+#~ msgid "invalid priority `%s'"
+#~ msgstr "prioriteetti \"%s\" ei kelpaa"
+
+#~ msgid "cannot get priority"
+#~ msgstr "prioriteetin haku ei onnistu"
+
+#~ msgid "cannot set priority"
+#~ msgstr "prioriteetin asetus ei onnistu"
+
+#~ msgid "failed to redirect standard output"
+#~ msgstr "vakiotulosteen uudelleenohjaus epäonnistui"
+
+#~ msgid "old-style offset"
+#~ msgstr "vanhantyylinen siirtymä"
+
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "virheellinen toinen operandi \"%s\" yhteensopivuustilassa"
+
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr ""
+#~ "kahden viimeisen argumentin on yhteensopivuustilassa oltava siirtymiä"
+
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr ""
+#~ "Määritä siirrettäväksi kelpaamattomia rakenteita NIMESSÄ.\n"
+#~ "\n"
+#~ " -p, --portability tarkista muillekin POSIX-järjestelmille kuin vain "
+#~ "tälle\n"
+
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "polku \"%s\" sisältää siirrettäväksi kelpaamattoman merkin \"%c\""
+
+#~ msgid "`%s' is not a directory"
+#~ msgstr "\"%s\" ei ole hakemisto"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "haku ei onnistu hakemistosta \"%s\""
+
+#~ msgid "name `%s' has length %ld; exceeds limit of %ld"
+#~ msgstr "nimen \"%s\" pituus %ld ylittää raja-arvon %ld"
+
+#~ msgid "path `%s' has length %lu; exceeds limit of %ld"
+#~ msgstr "polun \"%s\" pituus %lu ylittää raja-arvon %ld"
+
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "virheellinen sivunumeroväli valitsimelle \"--pages\": \"%s\""
+
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "virheellinen aloitussivu valitsimelle \"--pages\": \"%s\""
+
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "virheellinen lopetussivu valitsimelle \"--pages\": \"%s\""
+
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr ""
+#~ "aloitussivun numero on suurempi kuin lopetussivun numero valitsimelle \"--"
+#~ "pages\""
+
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "virheellinen palstamäärä valitsimelle \"--columns=PALSTA\": \"%s\""
+
+# tätä ei käytetä mihinkään, tyhmää
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%e. %Bta %Y %H:%M"
+
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr "aloitussivunumero on suurempi kuin sivujen kokonaismäärä: \"%d\""
+
+#~ msgid "Page %d"
+#~ msgstr "Sivu %d"
+
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "Käyttö: %s muotoilu [argumentti...]\n"
+
+#~ msgid "`-%s' option is obsolete; use `-l %s'"
+#~ msgstr "valitsin \"-%s\" on vanhentunut; käytä \"-l %s\""
+
+#~ msgid ""
+#~ "Display file or filesystem status.\n"
+#~ "\n"
+#~ " -f, --filesystem display filesystem status instead of file status\n"
+#~ " -c --format=FORMAT use the specified FORMAT instead of the default\n"
+#~ " -L, --dereference follow links\n"
+#~ " -t, --terse print the information in terse form\n"
+#~ msgstr ""
+#~ "Näytä tiedoston tai tiedostojärjestelmän tila.\n"
+#~ "\n"
+#~ " -f, --filesystem näytä tiedostojärjestelmän tila tiedoston tilan "
+#~ "sijaan\n"
+#~ " -c --format=MUOTO käytä annettua MUOTOa oletusmuodon sijaan\n"
+#~ " -L, --dereference seuraa linkkejä\n"
+#~ " -t, --terse tulosta tiedot lyhyessä muodossa\n"
+
+#~ msgid "Warning: `-l' is deprecated; use `-L' instead"
+#~ msgstr ""
+#~ "Varoitus: valitsin \"-l\" ei ole suositeltava; käytä valitsinta \"-L\" "
+#~ "sen sijaan"
+
+#~ msgid "invalid argument `%s'"
+#~ msgstr "argumentti \"%s\" ei kelpaa"
+
+#~ msgid "stdin: read error"
+#~ msgstr "vakiosyöte: lukuvirhe"
+
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "%c: virheellinen jälkiliitemerkki käytöstä poistuvassa valitsimessa"
+
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "liian monta argumenttia; Käytettäessä tail:in käytöstä poistuvaa\n"
+#~ "valitsinsyntaksia (%s), tiedostoargumentteja saa olla vain yksi. Käytä\n"
+#~ "vastaavaa valitsinta -n tai -c sen sijaan."
+
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "Varoitus: ei ole siirrettävää käyttää kahta tai useampaa "
+#~ "tiedostoargumenttia\n"
+#~ "tail:in käytöstä poistuvan valitsinsyntaksin (%s) kanssa. Käytä "
+#~ "vastaavaa\n"
+#~ "valitsinta -n tai -c sen sijaan."
+
+#~ msgid "`%s' option is obsolete; use `%s-%c %.*s'"
+#~ msgstr "valitsin \"%s\" on vanhentunut; käytä \"%s-%c %.*s\""
+
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr "%s: virheellinen maksimimäärä peräkkäisiä koonmuutoksia"
+
+#~ msgid "argument expected\n"
+#~ msgstr "odotettiin argumenttia\n"
+
+#~ msgid "%s: integer expression expected\n"
+#~ msgstr "%s: odotettiin kokonaislukulauseketta\n"
+
+#~ msgid "before -lt"
+#~ msgstr "ennen operaattoria -lt"
+
+#~ msgid "after -lt"
+#~ msgstr "operaattorin -lt jälkeen"
+
+#~ msgid "before -le"
+#~ msgstr "ennen operaattoria -le"
+
+#~ msgid "after -le"
+#~ msgstr "operaattorin -le jälkeen"
+
+#~ msgid "before -gt"
+#~ msgstr "ennen operaattoria -gt"
+
+#~ msgid "after -gt"
+#~ msgstr "operaattorin -gt jälkeen"
+
+#~ msgid "before -ge"
+#~ msgstr "ennen operaattoria -ge"
+
+#~ msgid "after -ge"
+#~ msgstr "operaattorin -ge jälkeen"
+
+#~ msgid "before -ne"
+#~ msgstr "ennen operaattoria -ne"
+
+#~ msgid "after -ne"
+#~ msgstr "operaattorin -ne jälkeen"
+
+#~ msgid "before -eq"
+#~ msgstr "ennen operaattoria -eq"
+
+#~ msgid "after -eq"
+#~ msgstr "operaattorin -eq jälkeen"
+
+#~ msgid "after -t"
+#~ msgstr "operaattorin -t jälkeen"
+
+#~ msgid "too many arguments\n"
+#~ msgstr "liian monta argumenttia\n"
+
+#~ msgid "file arguments missing"
+#~ msgstr "tiedostoargumentit puuttuvat"
+
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "virheellinen kenoviivasuojaus \"\\%c\""
+
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr ""
+#~ "poistettaessa ja puristettaessa toistoja on annettava kaksi merkkijonoa"
+
+#~ msgid "at least one string must be given when squeezing repeats"
+#~ msgstr "puristettaessa toistoja on annettava vähintään yksi merkkijono"
+
+#~ msgid ""
+#~ "invalid identity mapping; when translating, any [:lower:] or [:upper:]\n"
+#~ "construct in string1 must be aligned with a corresponding construct\n"
+#~ "([:upper:] or [:lower:], respectively) in string2"
+#~ msgstr ""
+#~ "virheellinen kirjainkoon muutos; vaihdettaessa jokaisella merkkijono1:n\n"
+#~ "[:lower:]- tai [:upper:]-rakenteella on oltava vastinrakenne\n"
+#~ "([:upper:]-rakenteen vastine [:lower:], tai päinvastoin) merkkijono2:ssa"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Käyttö: %s [huomiotta jätettävät komentoriviargumentit]\n"
+#~ " tai: %s VALITSIN\n"
+#~ "Poistu onnistumisesta kertovalla tilakoodilla.\n"
+#~ "\n"
+#~ "Näitä valitsinnimiä ei voi käyttää lyhennettyinä.\n"
+#~ "\n"
+
+#~ msgid "only one argument may be specified"
+#~ msgstr "voidaan antaa vain yksi argumentti"
+
+#~ msgid "tab size contains an invalid character"
+#~ msgstr "sarkainkoko sisältää virheellisen merkin"
+
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr "valitsin \"-LIST\" on vanhentunut; käytä \"--first-only -t LIST\""
+
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "valitsin \"-%lu\" on vanhentunut; käytä \"-f %lu\""
+
+#~ msgid ""
+#~ " -i, --idle add idle time as HOURS:MINUTES, . or old\n"
+#~ " (deprecated, use -u)\n"
+#~ " -l, --login print system login processes\n"
+#~ msgstr ""
+#~ " -i, --idle näytä myös joutenoloaika muodossa TUNNIT:MINUUTIT, .\n"
+#~ " tai kauan (ei suositeltava, käytä valitsinta -u)\n"
+#~ " -l, --login näytä järjestelmän sisäänkirjausprosessit\n"
+
+#~ msgid "%s: cannot find username for UID %u\n"
+#~ msgstr "%s: UID:lle %u ei löydy käyttäjänimeä\n"
+
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "Käyttö: %s [VALITSIN]... VASEN_TIEDOSTO OIKEA_TIEDOSTO\n"
+
+#~ msgid "*** invalid date/time ***"
+#~ msgstr "*** virheellinen päiväys/aika ***"
+
+#~ msgid "Torbjorn Granlund and Richard M. Stallman"
+#~ msgstr "Torbjörn Granlund ja Richard M. Stallman"
+
+#~ msgid "Richard Stallman and David MacKenzie"
+#~ msgstr "Richard Stallman ja David MacKenzie"
+
+#~ msgid "Torbjorn Granlund, David MacKenzie, and Jim Meyering"
+#~ msgstr "Torbjörn Granlund, David MacKenzie ja Jim Meyering"
+
+#~ msgid "Stuart Kemp and David MacKenzie"
+#~ msgstr "Stuart Kemp ja David MacKenzie"
+
+#~ msgid "%s: `+' or `-' expected after delimeter"
+#~ msgstr "%s: rajoittimen jälkeen odotetaan merkkiä \"+\" tai \"-\""
+
+#~ msgid "David Ihnat, David MacKenzie, and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie ja Jim Meyering"
+
+#~ msgid "Paul Rubin, David MacKenzie, and Stuart Kemp"
+#~ msgstr "Paul Rubin, David MacKenzie ja Stuart Kemp"
+
+#~ msgid "Torbjorn Granlund, David MacKenzie, and Paul Eggert"
+#~ msgstr "Torbjörn Granlund, David MacKenzie ja Paul Eggert"
+
+#~ msgid "David MacKenzie and Jim Meyering"
+#~ msgstr "David MacKenzie ja Jim Meyering"
+
+#~ msgid "Torbjorn Granlund, David MacKenzie, Paul Eggert, and Jim Meyering"
+#~ msgstr "Torbjörn Granlund, David MacKenzie, Paul Eggert ja Jim Meyering"
+
+#~ msgid "cannot change to parent of directory %s"
+#~ msgstr "hakemiston %s ylähakemistoon ei voi siirtyä"
+
+#~ msgid "Richard Mlynarik and David MacKenzie"
+#~ msgstr "Richard Mlynarik ja David MacKenzie"
+
+#~ msgid "Arnold Robbins and David MacKenzie"
+#~ msgstr "Arnold Robbins ja David MacKenzie"
+
+#~ msgid "Mike Parker and David MacKenzie"
+#~ msgstr "Mike Parker ja David MacKenzie"
+
+#~ msgid "Ulrich Drepper and Scott Miller"
+#~ msgstr "Ulrich Drepper ja Scott Miller"
+
+#~ msgid "Mike Parker, David MacKenzie, and Jim Meyering"
+#~ msgstr "Mike Parker, David MacKenzie ja Jim Meyering"
+
+#~ msgid "Scott Bartram and David MacKenzie"
+#~ msgstr "Scott Bartram ja David MacKenzie"
+
+#~ msgid "David M. Ihnat and David MacKenzie"
+#~ msgstr "David M. Ihnat ja David MacKenzie"
+
+#~ msgid "Joseph Arceneaux, David MacKenzie, and Kaveh Ghazi"
+#~ msgstr "Joseph Arceneaux, David MacKenzie ja Kaveh Ghazi"
+
+#~ msgid "Pete TerMaat and Roland Huebner"
+#~ msgstr "Pete TerMaat ja Roland Hübner"
+
+#~ msgid "David MacKenzie and Richard Mlynarik"
+#~ msgstr "David MacKenzie ja Richard Mlynarik"
+
+#~ msgid "Paul Rubin, David MacKenzie, Richard Stallman, and Jim Meyering"
+#~ msgstr "Paul Rubin, David MacKenzie, Richard Stallman ja Jim Meyering"
+
+#~ msgid "Jim Meyering and Paul Eggert"
+#~ msgstr "Jim Meyering ja Paul Eggert"
+
+#~ msgid "Mike Haertel and Paul Eggert"
+#~ msgstr "Mike Haertel ja Paul Eggert"
+
+#~ msgid "Kayvan Aghaiepour and David MacKenzie"
+#~ msgstr "Kayvan Aghaiepour ja David MacKenzie"
+
+#~ msgid "Jay Lepreau and David MacKenzie"
+#~ msgstr "Jay Lepreau ja David MacKenzie"
+
+#~ msgid "Paul Rubin, David MacKenzie, Ian Lance Taylor, and Jim Meyering"
+#~ msgstr "Paul Rubin, David MacKenzie, Ian Lance Taylor ja Jim Meyering"
+
+#~ msgid "Mike Parker, Richard M. Stallman, and David MacKenzie"
+#~ msgstr "Mike Parker, Richard M. Stallman ja David MacKenzie"
+
+#~ msgid "Kevin Braunsdorf and Matthew Bradburn"
+#~ msgstr "Kevin Braunsdorf ja Matthew Bradburn"
+
+#~ msgid ""
+#~ "Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie, and Randy Smith"
+#~ msgstr ""
+#~ "Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie ja Randy Smith"
+
+#~ msgid "Joseph Arceneaux and David MacKenzie"
+#~ msgstr "Joseph Arceneaux ja David MacKenzie"
+
+#~ msgid "Paul Rubin and David MacKenzie"
+#~ msgstr "Paul Rubin ja David MacKenzie"
+
+#~ msgid "Joseph Arceneaux, David MacKenzie, and Michael Stone"
+#~ msgstr "Joseph Arceneaux, David MacKenzie ja Michael Stone"
+
+#~ msgid ""
+#~ "when the starting value is larger than the limit,\n"
+#~ "the increment must be negative"
+#~ msgstr ""
+#~ "kun alkuarvo loppuarvoa suurempi, täytyy lisäyksen olla\n"
+#~ "negatiivinen"
+
+#~ msgid ""
+#~ "when the starting value is smaller than the limit,\n"
+#~ "the increment must be positive"
+#~ msgstr ""
+#~ "kun alkuarvo loppuarvoa pienempi, täytyy lisäyksen olla\n"
+#~ "positiivinen"
+
+#~ msgid ""
+#~ "Warning: the meaning of '-l' will change in a future release to conform "
+#~ "to POSIX"
+#~ msgstr ""
+#~ "Varoitus: valitsimen \"-l\" toiminta muuttuu tulevassa julkaisussa POSIX-"
+#~ "yhteensopivaksi"
+
+#~ msgid "unable to restore permissions of %s"
+#~ msgstr "tiedoston %s oikeuksien palauttaminen ei onnistu"
+
+#~ msgid ""
+#~ "\n"
+#~ "In -wNUMBER, the letter `w' may be omitted.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Kirjain \"w\" voidaan jättää pois valitsimessa -wMÄÄRÄ.\n"
+
+#~ msgid ""
+#~ " -c, --bytes=SIZE print first SIZE bytes\n"
+#~ " -n, --lines=NUMBER print first NUMBER lines instead of first 10\n"
+#~ msgstr ""
+#~ " -c, --bytes=KOKO näytä ensimmäiset KOKO tavua\n"
+#~ " -n, --lines=MÄÄRÄ näytä ensimmäiset MÄÄRÄ riviä, oletuksen 10 "
+#~ "sijaan\n"
+
+#~ msgid "invalid number"
+#~ msgstr "virheellinen lukuarvo"
+
+#~ msgid "%s is larger than the maximum file size on this system"
+#~ msgstr "%s on suurempi kuin tämän järjestelmän maksimitiedostokoko"
+
+#~ msgid "\\%c: invalid escape"
+#~ msgstr "\\%c: ohjausmerkki ei kelpaa"
+
+#~ msgid "program error"
+#~ msgstr "ohjelmavirhe"
+
+#~ msgid "stack overflow"
+#~ msgstr "pinon ylivuoto"
diff --git a/po/fr.gmo b/po/fr.gmo
new file mode 100644
index 0000000..0130ada
--- /dev/null
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
new file mode 100644
index 0000000..fb206c8
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,14733 @@
+# Messages français pour GNU concernant coreutils.
+# Copyright © 2004 Free Software Foundation, Inc.
+# Michel Robitaille <robitail@IRO.UMontreal.CA>, traducteur depuis/since 1996.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU coreutils 5.97\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2006-07-10 08:00-0500\n"
+"Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
+"Language-Team: French <traduc@traduc.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "Ne peut changer les permissions de %s"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "initialisation des permissions de %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "argument %s invalide pour %s"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argument %s ambigu pour %s"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Arguments valides sont:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "Erreur d'écriture."
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Erreur système inconnue"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "ne peut évaluer %s"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "fichier régulier vide"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "fichier régulier"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "répertoire"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "fichier spécial de bloc"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "fichier spécial de caractères"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "PEPS (FIFO)"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "lien symbolique"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "socket"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "queue de messages"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "sémaphore"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "objet de mémoire partagée"
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr "objet mémoire typée"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "fichier bizarre"
+
+#: lib/gai_strerror.c:44
+msgid "Address family for hostname not supported"
+msgstr "La famille d'adresses pour le nom de l'hôte n'est pas supporté."
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr "Échec temporaire dans la résolution de nom"
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr "Valeur erronée pour ai_flags"
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr "Échec non récupérable dans la résolution de nom"
+
+#: lib/gai_strerror.c:48
+msgid "ai_family not supported"
+msgstr "ai_family non supporté"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr "Échec d'allocation mémoire"
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr "Aucune adresse associé avec le nom de l'hôte"
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr "Nom ou service inconnu"
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr "Servname n'est pas supporté avec ai_socktype"
+
+#: lib/gai_strerror.c:53
+msgid "ai_socktype not supported"
+msgstr "ai_socktype n'est pas supporté."
+
+#: lib/gai_strerror.c:54
+msgid "System error"
+msgstr "Erreur système"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr "Requête de traitement en cours"
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr "Requête annulée"
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr "Requête non annulée"
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr "Toutes les requêtes ont été traitées"
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr "Interrompu par un signal"
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr "Paramètre de chaîne n'est pas correctement encodé"
+
+#: lib/gai_strerror.c:74
+msgid "Unknown error"
+msgstr "Erreur inconnue"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: l'option « %s » est ambiguë\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: l'option « --%s » ne requiert pas un argument.\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: l'option « %c%s » ne requiert pas un argument.\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: l'option « %s » requiert un argument.\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: option non reconnue « --%s »\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: option non reconnue « %c%s »\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: option illégale --%c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: option invalide --%c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: l'option requiert un argument --%c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: l'option « -W %s » est ambiguë\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: l'option « -W %s » ne permet pas un argument.\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "taille de bloc"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "Ne peut changer les permissions de %s"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "ne peut créer le répertoire %s"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "Mémoire épuisée"
+
+#: lib/openat-die.c:34
+#, c-format
+msgid "unable to record current working directory"
+msgstr "incapable d'enregistrer le répertoire de travail courant"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "échec de retour au répertoire initial de travail"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "'"
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "%s: échec de repérage (seek)"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: expression régulière invalide: %s"
+
+#: lib/regcomp.c:140
+#, fuzzy
+msgid "Invalid collation character"
+msgstr "caractère de classe invalide %s"
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "caractère de classe invalide %s"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+#, fuzzy
+msgid "Invalid back reference"
+msgstr "bornes de pages invalides %s"
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+#, fuzzy
+msgid "Invalid range end"
+msgstr "bornes de pages invalides %s"
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr "Mémoire épuisée"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: expression régulière invalide: %s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "Erreur dans l'expression régulière recherchée."
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "erreur dans l'expression régulière recherchée."
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "Erreur dans l'expression régulière recherchée."
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr "il est dangereux d'opérer récursivement sur %s"
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr "il est dangereux d'opérer récursivement sur %s (identique à %s)"
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr "utiliser --no-preserve-root pour écraser cette mesure de sûreté"
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[yY]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "fonction iconv n'est pas utilisable"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "fonction iconv n'est pas disponible"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "caractère hors limites"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "ne peut convertir U+%04X à un jeu local de caractères"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "ne peut convertir U+%04X au jeu local de caractères: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "usager invalide"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "groupe invalide"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "usager invalide"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr "©"
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Ce programme est un logiciel libre. Vous pouvez en redistribuer des copies\n"
+"selon les termes de la License Publique Générale de GNU, \n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"AUCUNE GARANTIE n'est fournie tel que permis selon la loi.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Écrit par %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Écrit par %s et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Écrit par %s, %s et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Écrit par %s, %s, %s,\n"
+"et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Écrit par %s, %s, %s,\n"
+"%s et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Écrit par %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Écrit par %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Écrit par %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Écrit par %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s et %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Écrit par %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s et d'autres.\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "argument invalide: %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "échec de comparaison de chaîne"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Définir LC_ALL=« C » pour contourner le problème."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "Les chaînes comparées étaient %s et %s."
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "échec de comparaison de chaîne"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "usager invalide %s"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "caractère de classe invalide %s"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s est trop grand"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Pour en savoir davantage, faites: « %s --help ».\n"
+
+#: src/base64.c:65
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+"Usage: %s [OPTION] [FICHIER]...\n"
+"Afficher ou vérifier les sommes de contrôle %s (%d-bits).\n"
+"Sans FICHIER, ou quand FICHIER est -, lire de l'entrée standard.\n"
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+"Afficher la somme de contrôle CRC et le décompte d'octets de chaque "
+"FICHIER.\n"
+"\n"
+" --help afficher l'aide-mémoire\n"
+" --version afficher le nom et la version du logiciel\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Sans FICHIER, ou quand le FICHIER est -, lire de l'entrée standard.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Rapporter toutes anomalies à <%s>.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "Erreur de lecture."
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "fanion d'entrée invalide: %s"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "taille de tabulation invalide: %s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr "opérande surnuméraire %s"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "fermeture de l'entrée standard"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Usage: %s NOM [SUFFIXE]...\n"
+" ou: %s [OPTION]\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Afficher le NOM sans être précédé des composants des noms de répertoires\n"
+"Si spécifié enlever aussi le SUFFIXE.\n"
+"\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+"\n"
+"Exemples:\n"
+" %s /usr/bin/sort sortie \"sort\".\n"
+" %s include/stdio.h .h sortie \"stdio\".\n"
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, c-format
+msgid "missing operand"
+msgstr "opérande manquante"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Usage: %s [OPTION] [FICHIER]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"Concaténer le(s) FICHIER(s), ou de l'ENTRÉE standard, vers la sortie "
+"standard.\n"
+"\n"
+" -A, --show-all équivalent à -vET\n"
+" -b, --number-nonblank numéroter que les lignes non vides\n"
+" -e équivalent à -vE\n"
+" -E, --show-ends afficher $ à la fin de chaque ligne\n"
+" -n, --number numéroter toutes les lignes\n"
+" -s, --squeeze-blank afficher jamais plus qu'une seule ligne vide\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t équivalent à -vT\n"
+" -T, --show-tabs afficher les caractères TAB comme ^I\n"
+" -u (ignoré)\n"
+" -v, --show-nonprinting utiliser la notation ^ et M- ,\n"
+" excepté pour LFD et TAB\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+"\n"
+"Exemples:\n"
+" %s f - g sortie du contenu de f, ensuite sur l'entrée standard, ensuite "
+"le contenu de g.\n"
+" %s copier l'entrée standard var la sortie standard.\n"
+
+#: src/cat.c:333
+#, c-format
+msgid "cannot do ioctl on %s"
+msgstr "ne peut exécuter ioctl sur %s"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "sortie standard"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: le fichier à l'entrée est le même qu'à la sortie."
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "groupe invalide %s"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Usage: %s [OPTION]... GROUPE FICHIER...\n"
+" ou: %s [OPTION]... --reference=FICHIER-R FICHIER...\n"
+
+#: src/chgrp.c:117
+#, fuzzy
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Changer le groupe d'appartenance de chaque FICHIER au GROUPE.\n"
+"Avec l'option --reference, modifier le groupe de chaque fichier pour celui "
+"de FICHIER-R.\n"
+"\n"
+" -c, --changes utiliser le mode bavard mais rapporter "
+"seulement\n"
+" les modifications lorsqu'elles surviennent\n"
+" --dereference affecter le référent de chaque lien symbolique,\n"
+" plutôt que le lien symbolique lui-même\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference modifier les liens symboliques au lieu des\n"
+" fichiers référencés (utile seulement\n"
+" sur les systèmes permettant de changer le "
+"propriétaire\n"
+" d'un lien symbolique)\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root ne pas traiter `/' de manière spéciale (par "
+"défaut)\n"
+" --preserve-root bloquer le traitement récursif sur `/'\n"
+
+#: src/chgrp.c:134
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet supprimer la plupart des messages d'erreur\n"
+" --reference=FICHIER utiliser le groupe de référence du FICHIER\n"
+" au lieu d'une valeur de groupe\n"
+" -R, --recursive modifier récursivement fichiers et répertoires\n"
+" -v, --verbose produire un diagnostic pour chaque fichier "
+"traité\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+"Les options suivantes modifient comment la hiérarchie est traversée lors "
+"que\n"
+"l'option -R est aussi spécifié. Si plus d'une option est spécifiée, seule "
+"la dernière\n"
+"prend effet.\n"
+"\n"
+" -H si l'argument de la ligne de commande est un lien "
+"symbolique\n"
+" vers un répertoire alors le parcourir\n"
+" -L parcourir chaque lien symbolique menant à un "
+"répertoire\n"
+" rencontré\n"
+" -P ne pas parcourir aucun lien symbolique (par "
+"défaut)\n"
+"\n"
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+"\n"
+"Exemples:\n"
+" %s staff /u changer le groupe de /u vers \"staff\".\n"
+" %s -hR staff /u changer le groupe de /u et des sous-fichiers vers \"staff"
+"\".\n"
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr "-R --dereference requiert soit -H ou -L"
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, c-format
+msgid "missing operand after %s"
+msgstr "opérande manquante après %s"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "échec d'obtention des attributs de %s"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "obtention des nouveaux attributs de %s"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "Ni le lien symbolique %s ni la référence n'ont changé.\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "Le mode d'accès de %s a été modifié à %04lo (%s).\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "Échec du changement de mode de %s à %04lo (%s).\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "Le mode d'accès de %s qui a été conservé est: %04lo (%s).\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "ne peut accéder %s"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "ne peut lire le répertoire %s"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "modification des permissions de %s"
+
+#: src/chmod.c:286
+#, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "%s: les nouvelles permissions sont %s, et non pas %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr "Échec de fts_read"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Usage: %s [OPTION]... MODE[,MODE]... FICHIER...\n"
+" ou: %s [OPTION]... MODE-OCTAL FICHIER\n"
+" ou: %s [OPTION]... --reference=FICHIER-R FICHIER\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+"Changer le mode de chaque fichier selon le MODE choisi.\n"
+"\n"
+" -c, --changes identique à verbose mais rapporte seulement les "
+"changements lorsqu'ils ont lieu\n"
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root ne pas traiter `/' de manière spéciale (par "
+"défaut)\n"
+" --preserve-root bloquer le traitement récursif sur `/'\n"
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+" -f, --silent, --quiet supprimer la plupart des messages d'erreur\n"
+" -v, --verbose produire un diagnostic pour chaque fichier traité\n"
+" --reference=FICHIER utiliser les modes d'accès du FICHIER de "
+"référence\n"
+" au lieu de valeurs\n"
+" -R, --recursive modifier récursivement fichiers et répertoires\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+"\n"
+"Chaque MODE a la forme `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr "ne peut combiner les options mode et --reference"
+
+#: src/chmod.c:510
+#, c-format
+msgid "invalid mode: %s"
+msgstr "mode invalide: %s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "Changement de propriétaire de %s vers %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "Changement de groupe de %s vers %s\n"
+
+#: src/chown-core.c:149
+#, c-format
+msgid "no change to ownership of %s\n"
+msgstr "ne peut changer l'appartenance de %s\n"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "échec de changement de propriétaire de %s vers %s\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "Échec de changement de groupe de %s vers %s\n"
+
+#: src/chown-core.c:154
+#, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "échec de changement de propriétaire de %s\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "L'appartenance de %s qui a été retenue est %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "Le groupe d'appartenance de %s qui a été retenu est %s.\n"
+
+#: src/chown-core.c:159
+#, c-format
+msgid "ownership of %s retained\n"
+msgstr "l'appartenance de %s a été retenue\n"
+
+#: src/chown-core.c:344
+#, c-format
+msgid "cannot dereference %s"
+msgstr "ne peut effectuer une déférence sur %s"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "changement de propriétaire pour %s"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "modification du groupe de %s"
+
+#: src/chown.c:93
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Usage: %s [OPTION]... [PROPRIÉTAIRE][:GROUPE] FICHIER...\n"
+" ou: %s [OPTION]... --reference=FICHIER-R FICHIER...\n"
+
+#: src/chown.c:98
+#, fuzzy
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Changer le propriétaire et/ou le groupe de chaque FICHIER au PROPRIÉTAIRE et/"
+"ou GROUPE.\n"
+"Avec l'option --reference modifier le propriétaire et le groupe de chaque "
+"fichier à celui du FICHIER-R.\n"
+"\n"
+" -c, --changes utiliser le mode bavard mais rapporter "
+"seulement\n"
+" les modifications lorsqu'elles surviennent\n"
+" --dereference affecter le référent de chaque lien symbolique,\n"
+" plutôt que le lien symbolique lui-même\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=PROPRIÉTAIRE_COURANT:GROUPE_COURANT\n"
+" changer le propriétaire et/ou le groupe de "
+"chaque fichier\n"
+" seulement s'il y a concordance avec le "
+"propriétaire\n"
+" et/ou groupe courant spécifié. Les deux peuvent "
+"être\n"
+" omis, auquel cas la concordance n'est pas "
+"requise pour\n"
+" l'argument non spécifié.\n"
+
+#: src/chown.c:122
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet supprimer la plupart des messages d'erreur\n"
+" --reference=FICHIER utiliser l'appartenance du propriétaire et du\n"
+" groupe du FICHIER de référence au lieu\n"
+" de valeurs explicites PROPRIÉTAIRE:GROUPE\n"
+" -R, --recursive modifier récursivement fichiers et répertoires\n"
+" -v, --verbose indiquer ce qui a été fait\n"
+"\n"
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"Le propriétaire n'est pas modifié si manquant. Le groupe n'est pas modifié "
+"si manquant,\n"
+"mais modifié au groupe de login implicite si « : » en suivant le "
+"PROPRIÉTAIRE symbolique.\n"
+"Le PROPRIÉTAIRE et le GROUPE peuvent être numérique ou symbolique.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+"\n"
+"Exemples:\n"
+" %s root /u changer le propriétaire de /u vers \"root\".\n"
+" %s root:staff /u idem mais aussi changer son groupe à \"staff\".\n"
+" %s -hR root /u changer le propriétaire de /u et des sous fichiers vers "
+"\"root\".\n"
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Usage: %s RACINE [COMMANDE...\n"
+" ou: %s OPTION\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"Exécuter la COMMANDE avec le répertoire root initialisé à NOUVEAU-ROOT.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"Si aucune commande n'est fournie, exécuter ``${SHELL} -i'' (par défaut: /bin/"
+"sh).\n"
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "ne peut changer le répertoire racine vers %s"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "ne peut aller vers le répertoire root"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "ne peut exécuter la commande %s"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: fichier trop long"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Usage: %s [FICHIER]...\n"
+" ou: %s [OPTION]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"Afficher la somme de contrôle CRC et le décompte d'octets de chaque "
+"FICHIER.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Usage: %s [OPTION]... FICHIER1 FICHIER2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr "Comparer les fichiers triés GAUCHE et DROITE ligne par ligne.\n"
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+"\n"
+"Sans option, la sortie se fait sur 3 colonnes. La première colonne "
+"contient\n"
+"les lignes uniques au FICHIER1, la seconde contient les lignes uniques au "
+"FICHIER2,\n"
+"et la troisième contient les lignes communes aux deux fichiers.\n"
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"\n"
+" -1 supprimer les lignes uniques du fichier de gauche\n"
+" -2 supprimer les lignes uniques du fichier de droite\n"
+" -3 supprimer les lignes uniques des 2 fichiers\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "échec de préservation du propriétaire pour %s"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr "échec de repérage du fichier `%s'"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "échec de préservation du propriétaire pour %s"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "Ne peut ouvrir %s en lecture"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "ne peut évaluer par fstat() %s"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "escamotage du fichier %s, parce qu<il a /t/ remplac/ durant la copie"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "ne peut enlever %s"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "détruit %s\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "ne peut créer le fichier régulier %s"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "lecture de %s"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "ne peut repérer par lseek() %s"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "écriture de %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "préservation des dates pour %s"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "fermeture de %s"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: écraser %s, en outrepassant le mode %04lo? "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: écraser %s?"
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (archiver: %s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "omission du répertoire %s"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "AVERTISSEMENT: fichier source %s spécifié plus d'une fois"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s et %s identifient le même fichier."
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "ne peut écraser le non-répertoire %s par le répertoire %s"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "n'écrasera pas %s qui vient d'être créé par %s"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "ne peut écraser le répertoire %s par un non-répertoire"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "ne peut déplacer le répertoire dans un non-répertoire: %s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "L'archivage de %s pourrait détruire la source: %s n'a pas été déplacé."
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr ""
+"L'archivage de %s pourrait détruire le fichier SOURCE:\n"
+"%s n'a pas été copié."
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "ne peut archiver %s"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "ne peut copier un répertoire %s dans lui-même %s"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "ne peut créer un lien direct %s vers le répertoire %s"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "ne peut créer un lien direct %s vers %s"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "ne peut déplacer %s vers un sous-répertoire de lui-même %s"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "ne peut déplacer %s vers %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+"échec de déplacement inter-périphérique: %s vers %s; incapable de détruire "
+"la cible"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "ne peut copier des liens symboliques cycliques %s."
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr ""
+"%s: peut créer des liens symboliques relatifs\n"
+"seulement que dans le répertoire courant."
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "ne peut créer un lien symbolique %s vers %s"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "ne peut créer le lien %s"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "ne peut créer le fifo %s"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "ne peut créer le fichier spécial %s"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "ne peut lire le lien symbolique %s"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "ne peut créer le lien symbolique %s"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s possède un type de fichier inconnu."
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "ne peut désarchiver %s"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (désarchivage)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Usage: %s [OPTION]... [-T] SOURCE CIBLE\n"
+" ou: %s [OPTION]... SOURCE... RÉPERTOIRE\n"
+" ou: %s [OPTION]... --target-directory=RÉPERTOIRE SOURCE...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Copier la SOURCE vers la DESTINATION, ou de multiples SOURCES vers un "
+"RÉPERTOIRE.\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Les arguments obligatoires pour les options de formes longues le sont aussi\n"
+"pour les options de formes courtes.\n"
+
+#: src/cp.c:170
+#, fuzzy
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive identique à -dpR\n"
+" --backup[=CONTRÔLE] archiver chaque fichier de destination\n"
+" -b identique à --backup mais sans argument\n"
+" --copy-contents copier le contenu des fichier spéciaux en "
+"mode récursif\n"
+" -d identique à --no-dereference --preserve=link\n"
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" -f, --force si un fichier de destination existe et \n"
+" ne peut être ouvert alors le détruire et\n"
+" essayer à nouveau\n"
+" -i, --interactive demander confirmation avant d'écraser\n"
+" -H suivre les liens symboliques de la ligne de "
+"commande\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+" -l, --link lier les fichiers au lieu de les copier\n"
+" -L, --dereference toujours suivre les liens symboliques\n"
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+" -P, --no-dereference ne jamais suivre les liens symboliques\n"
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -p identique à --preserve=mode,ownership,"
+"timestamps\n"
+" --preserve[=ATTR_LIST] préserver les attributts spécifiques (par "
+"défaut:\n"
+" mode,ownership,timestamps), et si "
+"posssible\n"
+" les attributs additionels: links, all\n"
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=LISTE_ATTR ne pas préserver les attributs spécifiques\n"
+" --parents accoler le chemin source au répertoire\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive copier récursivement les répertoires\n"
+" --remove-destination enlever chaque fichier de destination "
+"existant\n"
+" avant de l'ouvrir (par contraste avec --"
+"force)\n"
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --sparse=DATE contrôler la DATE de création des fichiers\n"
+" dispersés\n"
+" --strip-trailing-slashes enlever les « / » en suffixe de chacun\n"
+" des arguments SOURCE\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link créer des liens symboliques au lieu de copier\n"
+" -S, --suffix=SUFFIXE écraser le suffixe usuel d'archivage\n"
+" par le SUFFIXE\n"
+" --target-directory=RÉPERTOIRE\n"
+" déplacer tous les fichiers SOURCE en arguments\n"
+" vers le RÉPERTOIRE\n"
+" -T, --no-target-directory traiter la CIBLE comme un fichier normal\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update déplacer seulement les vieux ou\n"
+" les tout nouveaux fichiers\n"
+" -v, --verbose expliquer ce qui a été fait\n"
+" -x, --one-file-system demeurer sur ce système de fichiers\n"
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"Par défaut, les fichiers SOURCES dispersés sont détectés par le biais\n"
+"d'une heuristique grossière et le fichier CIBLE correspondant est aussi\n"
+"construit de façon dispersé. Il s'agit d'un comportement sélectionné\n"
+"par l'option --sparse=auto. Spécifiez --sparse=always pour créer un "
+"fichier\n"
+"CIBLE dispersé lorsque le fichier SOURCE contient de longues séquences de\n"
+"d'octets de valeur zéro.\n"
+"Utilisez --sparse=never pour inhiber la création de fichiers dispersés.\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Le suffixe d'archive est « ~ », initialisé autrement avec --suffix ou\n"
+"SIMPLE_BACKUP_SUFFIX. La méthode du contrôle de version peut être "
+"sélectionné\n"
+"par l'option --backup ou par VERSION_CONTROL par le bias des variables\n"
+"d'environnement selon les valeurs suivantes:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off ne jamais archiver (même si --backup est utilisé)\n"
+" numbered, t faire des archives numérotées\n"
+" existing, nil numéroter si des archives numérotées existent déjà,\n"
+" ne pas numéroter autrement\n"
+" simple, never toujours faire des archives de type simple\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Un cas spécial où « cp » archive la SOURCE lorsque les options « force » et\n"
+"« backup » sont utilisées et que la SOURCE et la DESTINATION portent le\n"
+"même nom qu'un fichier régulier existant.\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "échec de préservation des dates pour %s"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "échec de préservation des permissions de %s"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "ne peut créer le répertoire %s"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s existe mais n'est pas un répertoire"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "accès de %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, c-format
+msgid "missing file operand"
+msgstr "opérande fichier manquant"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, c-format
+msgid "missing destination file operand after %s"
+msgstr "opérande du fichier cible manquant après %s"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr "Ne peut combiner --target-directory (-t) et --no-target-directory (-T)"
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, c-format
+msgid "target %s is not a directory"
+msgstr "la cible %s n'est pas un répertoire"
+
+#: src/cp.c:697
+#, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "avec --parents, la destination doit être un répertoire"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr "l'option --reply est désuète; utiliser -i ou -f à la place"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, c-format
+msgid "multiple target directories specified"
+msgstr "options multiples répertoires cibles spécifiées"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "Ne peut créer à la fois un lien symbolique et direct."
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "type d'archive"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "L'entrée est disparue."
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: numéro de ligne est hors limite"
+
+#: src/csplit.c:709
+#, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: %s: numéro de ligne est hors limite"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr " par répétition %s\n"
+
+#: src/csplit.c:755
+#, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: %s: pas de concordance"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "Erreur dans l'expression régulière recherchée."
+
+#: src/csplit.c:984
+#, c-format
+msgid "write error for %s"
+msgstr "erreur d'écriture sur %s"
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: entier attendu après le délimiteur"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: « } » est requis pour un compteur de répétition."
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: entier requis entre « { » et « } »"
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: délimiteur de fermeture « %c » manquant"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: expression régulière invalide: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: patron invalide."
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: le numéro de ligne doit être plus grand que zéro."
+
+#: src/csplit.c:1172
+#, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr ""
+"le numéro de ligne %s est plus petit que le numéro précédent de ligne %s"
+
+#: src/csplit.c:1178
+#, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr ""
+"AVERTISSEMENT: le numéro de ligne %s est le même que le précédent numéro de "
+"ligne"
+
+#: src/csplit.c:1231
+#, c-format
+msgid "invalid format width"
+msgstr "largeur de format invalide"
+
+#: src/csplit.c:1252
+#, c-format
+msgid "invalid format precision"
+msgstr "précision de format invalide"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "Symbole de conversion manquant dans le suffixe."
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "Le symbole de conversion %c est invalide dans le suffixe."
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "Le symbole de conversion \\%.3o est invalide dans le suffixe."
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "Trop de spécifications %% de conversion dans le suffixe."
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "La spéfication de conversion %% est manquante dans le suffixe."
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: nombre invalide."
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Usage: %s [OPTION]... FICHIER MODÈLE...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"Produire des morceaux du FICHIER séparés par MODÈLE(s) vers les fichiers\n"
+"« xx01 », « xx02 », ... et le nombre d'octets de chaque morceau sur la "
+"sortie standard.\n"
+"\n"
+
+#: src/csplit.c:1486
+#, fuzzy, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=FORMAT utiliser sprintf FORMAT au lieu de %02d\n"
+" -f, --prefix=PRÉFIXE utiliser le PRÉFIXE au lieu de « xx »\n"
+" -k, --keep-files ne pas détruire les fichiers \n"
+" lorsqu'il y a erreur\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=NOMBRE utiliser NOMBRE de chiffres au lieu de 2\n"
+" -s, --quiet, --silent ne pas afficher la taille des fichiers\n"
+" de sortie\n"
+" -z, --elide-empty-files détruire les fichiers de sortie vides\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"Lire de l'entrée standard si le FICHIER est -. Chaque MODÈLE peut être:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" ENTIER copier jusqu'à mais sans inclure le nombre spécifiée\n"
+" de lignes\n"
+" /REGEXP/[SAUT] copier jusqu'à la détection d'une ligne identique\n"
+" mais sans l'inclure\n"
+" %%REGEXP%%[SAUT] escamoter jusqu'à, mais sans inclure une\n"
+" ligne identique\n"
+" {ENTIER} répéter le patron précédent un nombre de fois\n"
+" {*} répéter le patron précédent le plus souvent possible\n"
+"\n"
+"Une ligne de SAUT a besoin d'un « + » ou « - » suivi d'un entier positif.\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Usage: %s [OPTION]... [FICHIER]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"Afficher des parties de lignes de chaque FICHIER vers la sortie standard.\n"
+"\n"
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=LISTE sélectionner seulement ces octets\n"
+" -c, --characters=LISTE sélectionner seulement ces caractères\n"
+" -d, --delimiter=DÉLIM utiliser le DÉLIMiteur au lieu d'une tabulation\n"
+" comme délimiteur de champs\n"
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=LISTE sélectionner seulement ces champs; afficher aussi\n"
+" toutes les lignes qui ne contiennent pas de "
+"caractère délimiteur,\n"
+" à moins que l'option -s soit spécifiée\n"
+" -n (ignoré)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+" --complement compléter le jeu des octets sélectionnés, "
+"caractères\n"
+" ou champs.\n"
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited ne pas afficher les lignes ne\n"
+" contenant pas de délimiteurs\n"
+" --output-delimiter=CHAÎNE\n"
+" utiliser la CHAÎNE comme délimiteur de sortie\n"
+" par défaut le délimiteur de l'entrée est utilisée\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+#, fuzzy
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Utiliser une et une seule des options -b, -c ou -f. Chaque LISTE se compose "
+"d'un\n"
+"intervalle ou de plusieurs intervalles séparés par des virgules. Chaque "
+"intervalle\n"
+"se compose de:\n"
+"\n"
+" N Nième octet, caractère ou champ, compté à partir de 1\n"
+" N- du Nième octet, caractère ou champ jusqu'à la fin de la ligne\n"
+" N-M du Nième au Mième octets (inclus), caractère ou champ\n"
+" -M du premier au Mième octets (inclus), caractère ou champ\n"
+"\n"
+"Sans FICHIER, ou quand le FICHIER est -, lire de l'entrée standard.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "Octet ou champ de liste invalide."
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr "décalage d'octet %s est trop grand"
+
+#: src/cut.c:472
+#, c-format
+msgid "field number %s is too large"
+msgstr "numéro de champ %s est trop grand"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "Un seul type de liste peut être spécifié."
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "Le délimiteur doit être un caractère simple."
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "Une liste d'octets, de caractères, ou de champs doit être spécifiée."
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr ""
+"un délimiteur peut être spécifié seulement lorsqu'opérant sur des champs"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"La suppression des lignes non-délimitées est permise\n"
+"\tseulement lorsqu'opérant sur des champs."
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "Liste des champs manquante."
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "Liste des positions manquante."
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" ou: %s [-u|--utc|--universal] [MMJJhhmm[[CC]AA][.ss]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"Afficher la date courante selon le FORMAT spécifié ou\n"
+"initialiser la date du système.\n"
+"\n"
+" -d, --date=CHAÎNE afficher la date selon la description donnée par "
+"la CHAÎNE,\n"
+" excluant le mot réservé « now »\n"
+" -f, --file=FICHIER identique à --date pour chaque ligne du\n"
+" FICHIER de dates\n"
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+#, fuzzy
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+" -r, --reference=FICHIER utiliser la date de modification du FICHIER\n"
+" comme date de référence\n"
+" -R, --rfc-2822 afficher la date selon le format respectant\n"
+" les spécifications du RFC-822\n"
+" --rfc-3339=TIMESPEC afficher la date et l'heure selon le format "
+"respetant\n"
+" les spécifications du RFC-3339 où\n"
+" TIMESPEC=`date', `seconds', ou `ns' pour\n"
+" la date et l'heure selon la précision voulue\n"
+" -s, --set=CHAÎNE initialiser la date selon la CHAÎNE fournie\n"
+" -u, --utc, --universal afficher ou initialiser selon le système de\n"
+" temps universel (T.U.)\n"
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"\n"
+"FORMAT contrôlant l'affichage. La seule option valide pour la la seconde "
+"forme\n"
+"s'applique au système de temps Universel UCT. Les séquences interprétées "
+"sont:\n"
+"\n"
+" %% le caractère %\n"
+" %a les noms abrégés localisés des jours de la semaine (i.e. dim..sam)\n"
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A les noms complets localisés des jours de la semaine (dimanche.."
+"samedi)\n"
+" %b les noms abrégés localisés des mois (jan..déc)\n"
+" %B les noms complets localisés des mois (janvier..décembre)\n"
+" %c la date et l'heure localisées (i.e. Jeu mar 3 23:05:25 2005)\n"
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C le siècle comme %Y sans les 2 derniers chiffres (i.e. 21)\n"
+" %d le jour du mois (i.e. 01..31)\n"
+" %D la date (%m/%d/%y)\n"
+" %e le jour du mois précédé d'un blanc identique à %_d\n"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+" %F la date complète, identique à %Y-%m-%d\n"
+" %g les 2 derniers chiffres de l'année correspondant au numéro de semaine "
+"ISO (voir %G)\n"
+" %G l'année correspondant au numéro de semaine ISO (voir %V); normalement "
+"utile seulement avec %V\n"
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h identique à %b\n"
+" %H heure (00..23)\n"
+" %I heure (01..12)\n"
+" %j jour numérique de l'année (001..366)\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k heure ( 0..23)\n"
+" %l heure ( 1..12)\n"
+" %m mois (01..12)\n"
+" %M minute (00..59)\n"
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+" %n un saut de ligne\n"
+" %N nanosecondes (000000000..999999999)\n"
+" %p indicateur localisé AM ou PM en majuscules (blanc si inconnu)\n"
+" %P identique à %p mais en minuscules\n"
+" %r heure locale en format 12-heure (i.e. 11:11:01 PM)\n"
+" %R heure en format 24-heure identique à %H:%M\n"
+" %s secondes depuis 1970-01-01 00:00:00 UTC\n"
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+" %S les secondes (00..60)\n"
+" %t une tabulation horizontale\n"
+" %T l'heure, identique à %H:%M:%S\n"
+" %u le jour de la semaine (1..7); 1 représente le lundi\n"
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U le numéro de la semaine dans l'année débutant par le dimanche\n"
+" comme premier jour de la semaine (00..53)\n"
+" %V le numéro de la semaine ISO dans l'année débutant par le lundi\n"
+" comme premier jour de la semaine (01..53)\n"
+" %w le jour de la semaine (0..6); 0 représente le dimanche\n"
+" %W le numéro de la semaine dans l'année débutant par le lundi\n"
+" comme premier jour de la semaine (00..53)\n"
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x représentation localisée de la date (i.e. 12/31/99)\n"
+" %X représentation localisée de l'heure (i.e. 23:13:48)\n"
+" %y les deux derniers chiffres de l'année (00..99)\n"
+" %Y l'année\n"
+
+#: src/date.c:223
+#, fuzzy
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+" %z fuseau horaire numérique +hhmm (i.e. -0400)\n"
+" %:z fuseau horaire numérique +hh:mm (i.e. -04:00)\n"
+" %::z fuseau horaire numérique +hh:mm:ss (i.e. -04:00:00)\n"
+" %:::z fuseau horaire numérique selon la précision nécessaire (i.e. -04, "
+"+05:30)\n"
+" %Z abréviation alphabétique des fuseaux horaires (i.e. EDT)\n"
+"\n"
+"Par défaut les champs de date numériques sont remplis par des zéros.\n"
+"Les paramètres des options suivantes peuvent suivre `%':\n"
+"\n"
+" - (tiret) ne pas remplir le champ\n"
+" _ (souligné) remplir par des espaces\n"
+" 0 (zéro) remplir par des zéros\n"
+" ^ utiliser les majuscules si possible\n"
+" # utiliser la casse complémentaire si possible\n"
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+"\n"
+"Un largeur champ optionel suit un fanion à l'aide d'un nombre décimal;\n"
+"suivi du modificateur optionel lequel peut prendre la valeur\n"
+"E pour utiliser une représentation de locale si disponible, ou\n"
+"O pour utiliser une représentation de symboles numériques de locale si "
+"disponible.\n"
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "entrée standard"
+
+#: src/date.c:297 src/date.c:517
+#, c-format
+msgid "invalid date %s"
+msgstr "date invalide %s"
+
+#: src/date.c:408 src/date.c:442
+#, c-format
+msgid "multiple output formats specified"
+msgstr "multiples formats de fichiers de sortie spécifiés"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr ""
+"les options pour spécifier les dates pour l'impression sont mutuellement "
+"exclusives"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr ""
+"Les options pour afficher et initialiser la date ne peuvent être\n"
+"utilisées ensembles."
+
+#: src/date.c:448
+#, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"l'argument %s n'est pas précédé du préfixe « + »;\n"
+"lors de l'utilisation d'une option pour spécifier la date,\n"
+"chaque argument qui n'est pas une option reconnue doit être\n"
+"une chaîne dont le format débute par « + »."
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "ne peut initialiser la date."
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "date %s est hors limites"
+
+#: src/dd.c:404
+#, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Usage: %s [OPÉRANDE]...\n"
+" ou: %s OPTION\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"Copier un fichier en le convertissant et le formatant selon les opérandes.\n"
+"\n"
+" bs=N forcer ibs=N octets et obs=N octets\n"
+" cbs=N convertir N octets à la fois\n"
+" conv=LISTE convertir le fichier selon la LISTE de symboles\n"
+" séparés par une virgule\n"
+" count=N copier seulement N blocs à partir de l'entrée\n"
+" ibs=N lire N octets à la fois\n"
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=FICHIER lire à partir du FICHIER au lieu de l'entrée standard\n"
+" iflag=FANIONS lire à l'aide de LISTE de symboles séparés par des "
+"virgules\n"
+" obs=N écrire N octets à la fois\n"
+" of=FICHIER écrire dans le FICHIER au lieu de la sortie standard\n"
+" oflag=FANIONS écrire à l'aide de LISTE de symboles séparés par des "
+"virgules\n"
+" seek=N escamoter N blocs de taille « obs » du fichier de sortie\n"
+" skip=N escamoter N blocs de taille « ibs » du fichier d'entrée\n"
+" status=noxfer supprimer les statistiques de transfert\n"
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"BLOCS et BYTES peuvent être suivis d'un des suffixes multiplicatifs "
+"suivant:,\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024 et ainsi de suite pour T, P, E, Z, Y.\n"
+"\n"
+"Chaque mot CLÉ peut être:\n"
+"\n"
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii de l'EBCDIC vers l'ASCII\n"
+" ebcdic de l'ASCII vers l'EBCDIC\n"
+" ibm de l'ASCII vers l'EBCDIC en utilisant une table différente\n"
+" block remplir les enregistrements terminés par un saut de ligne\n"
+" par des blancs jusqu'à l'obtention de la taille « cbs »\n"
+" unblock remplacer les blancs de la fin des enregistrements\n"
+" de taille « cbs » par des sauts de ligne\n"
+" lcase changer les majuscules en minuscules\n"
+
+#: src/dd.c:445
+#, fuzzy
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+" nocreat ne pas créer de ficheir de sortie\n"
+" excl échouer si le fichier de sortie existe déjà\n"
+" notrunc ne pas tronquer le fichier de sortie\n"
+" ucase changer les minuscules en majuscules\n"
+" swab interchanger chaque paire d'octets\n"
+" noerror continuer même après des erreurs de lecture\n"
+" sync remplir chaque bloc lu par des nuls jusqu'à concurrence\n"
+" de la taille « ibs »\n"
+" fsync identique mais écrit les métadonnées\n"
+
+#: src/dd.c:452
+#, fuzzy
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+" nocreat ne pas créer de ficheir de sortie\n"
+" excl échouer si le fichier de sortie existe déjà\n"
+" notrunc ne pas tronquer le fichier de sortie\n"
+" ucase changer les minuscules en majuscules\n"
+" swab interchanger chaque paire d'octets\n"
+" noerror continuer même après des erreurs de lecture\n"
+" sync remplir chaque bloc lu par des nuls jusqu'à concurrence\n"
+" de la taille « ibs »\n"
+" fsync identique mais écrit les métadonnées\n"
+
+#: src/dd.c:459
+#, fuzzy
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+"\n"
+"Chaque symbole de FANIONE peut être:\n"
+"\n"
+" append mode d'accolage (n'a de sens que pour la sortie)\n"
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr " direct utiliser les E/S directes pour les données\n"
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr " direct utiliser les E/S directes pour les données\n"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr " dsync utiliser une E/S synchronisé pour les données\n"
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr " sync identique mais aussi pour les métadonnées\n"
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr " nonblock utiliser une E/S non bloquante\n"
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+" noctty ne pas assigner de terminal contrôleur à partir du fichier\n"
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr " nofollow ne pas suivre les liens symboliques\n"
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr " binaire utiliser les E/S binaires pour les données\n"
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr " text utiliser les E/S textuelles pour les données\n"
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+"\n"
+"Expédier le signal %s vers le processus `dd' actif provoque\n"
+"l'écriture des statistiques sur la sortie d'erreur standard\n"
+"suivi de la poursuite de la copie.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 enregistrements lus\n"
+" 18335302+0 enregistrements écrits\n"
+" 9387674624 octets (9.4 Go) copiés, 34.6279 secondes, 271 Mo/s\n"
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+"%<PRIuMAX>+%<PRIuMAX> enregistrements lus\n"
+"%<PRIuMAX>+%<PRIuMAX> enregistrements écrits\n"
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "1 enregistrement tronqué\n"
+msgstr[1] "%<PRIuMAX> enregistrements tronqués\n"
+
+#: src/dd.c:565
+#, fuzzy, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] "1 octet (1B) copié"
+msgstr[1] "%<PRIuMAX> octets (%s) copiés"
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr "Infinité B"
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, fuzzy, c-format
+msgid ", %g s, %s/s\n"
+msgstr ", %g seconde, %s/s\n"
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "fermeture du fichier d'entrée %s"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "fermeture du fichier de sortie %s"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "écriture vers %s"
+
+#: src/dd.c:886
+#, c-format
+msgid "unrecognized operand %s"
+msgstr "opérande non reconnue %s"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "conversion invalide: %s"
+
+#: src/dd.c:900
+#, c-format
+msgid "invalid input flag: %s"
+msgstr "fanion d'entrée invalide: %s"
+
+#: src/dd.c:903
+#, c-format
+msgid "invalid output flag: %s"
+msgstr "fanion de sortie invalide %s"
+
+#: src/dd.c:906
+#, c-format
+msgid "invalid status flag: %s"
+msgstr "fanion d'état invalide %s"
+
+#: src/dd.c:942
+#, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "opérande non reconnue %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "nombre invalide %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr "ne peut combiner n'importe quel des deux de: ascii, ebcdic, ibm"
+
+#: src/dd.c:973
+#, c-format
+msgid "cannot combine block and unblock"
+msgstr "ne peut combiner les options block t unblock"
+
+#: src/dd.c:975
+#, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "ne peut combiner les options lcase et ucase"
+
+#: src/dd.c:977
+#, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "ne peut combiner les options excl et nocreat"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"AVERTISSEMENT: arrangement pour contourner bug de lseek dans le kernel \n"
+"pour le fichier (%s)\n"
+"de type mt_type=0x%0lx -- voir <sys/mtio.h> pour la liste des types"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, c-format
+msgid "%s: cannot seek"
+msgstr "%s: ne peut retrouver"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr "débordement du décalage lors de la lecture du fichier %s"
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr ""
+"AVERTISSEMENT: d/calage de fichier en mauvais état suite à un échec de "
+"lecture"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr "ne peut après tout contrer une anomalie du kernel"
+
+#: src/dd.c:1376
+#, c-format
+msgid "setting flags for %s"
+msgstr "initialisation des fanions pour %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr "fdatasync a échoué pour %s"
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr "fsync a échoue pour %s"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "ouverture de %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+"décalage trop grand: ne peut tronquer à la longueur de la recherche=%"
+"<PRIuMAX> (%lu-byte) blocs"
+
+#: src/dd.c:1730
+#, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "troncation à %<PRIuMAX> octets dans le fichier de sortie %s"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "Sys. de fich. Type "
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "Sys. de fich. "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " Inodes IUtil. ILib. %%IUti."
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Tail. Occ. Disp. %%Occ."
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Tail. Occ. Disp. %%Occ."
+
+#: src/df.c:165
+#, fuzzy, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %4s-blocs Occupé Disponible Capacité"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " %4s-blocs Occupé Disponible Capacité"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Monté sur\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "ne peut obtenir le répertoire courant"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "ne peut aller vers le répertoire %s"
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "ne peut obtenir par stat() le répertoire courant (maintenant %s)"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"Afficher les informations à propos du système de fichiers sur lequel\n"
+"réside chaque FICHIER ou de tous les systèmes de fichiers par défaut.\n"
+"\n"
+
+#: src/df.c:749
+#, fuzzy
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all inclure le système bidon de fichiers\n"
+" -B, --block-size=TAILLE utiliser la TAILLE en octets de blocs\n"
+" -h, --human-readable afficher les tailles dans un format lisible par\n"
+" un humain (i.e. 1K 234M 2G)\n"
+" -H, --si identique mais utilise un multiple de 1000\n"
+" et non de 1024\n"
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes lister les informations des « inodes »\n"
+" plutôt que sur l'utilisation des blocs\n"
+" -k identique à --block-size=1K\n"
+" -l, --local limiter le listing au système local de fichiers\n"
+" --no-sync ne pas effectuer une synchronisation avant\n"
+" d'obtenir les informations d'utilisation\n"
+" des disques (par défaut)\n"
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability utiliser le format de sortie POSIX\n"
+" --sync demander une synchronisation avant d'obtenir les\n"
+" informations d'utilisation des disques\n"
+" (par défaut)\n"
+" -t, --type=TYPE limiter l'affichage au TYPE de système de\n"
+" fichiers\n"
+" -T, --print-type afficher le type du système de fichiers\n"
+" -x, --exclude-type=TYPE limiter l'affichage en excluant le TYPE\n"
+" de système de fichiers\n"
+" -v (ignorée)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"TAILLE peut être (ou peut être un entier optionnellement suivi par) un de "
+"ceux qui suivent:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024 et ainsi de suite pour G, T, P, "
+"E, Z, Y.\n"
+"\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr "l'option --kilobytes est désuète; utiliser -k à la place"
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "Le système de fichiers %s est à la fois sélectionné et exclu."
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "AVERTISSEMENT: "
+
+#: src/df.c:943
+#, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%sne peut lire la table du système de fichiers monté"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Usage: %s [OPTION]... [FICHIER]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Commande d'affichage pour initialiser la variable d'environnement LS_COLOR.\n"
+"\n"
+"Déterminer le format de sortie:\n"
+" -b, --sh, --bourne-shell code de sortie pour un Bourne shell\n"
+" initialiser la variable LS_COLORS\n"
+" -c, --csh, --c-shell code de sortie pour un C shell pour\n"
+" initialiser la variable LS_COLORS\n"
+" -p, --print-data-base utiliser les valeurs par défaut de sortie\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"Si le FICHIER est fourni, le lire pour déterminer les couleurs à utiliser\n"
+"pour les types de fichiers et les extensions. Autrement, utiliser la base de "
+"données\n"
+"précompilés. Pour le détail du format de ces fichiers, exécuter «dircolors --"
+"print-database'.\n"
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s:%lu: ligne invalide; second jeton manquant"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu: mot clé non reconnu %s"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<interne>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"les options pour la base de données interne de sortie de dircolors et\n"
+"la sélection de la syntaxe du shell sont mutuellement exclusives"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+"Les opérandes fichier ne peutvent être combinés avec --print-database (-p)."
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "Aucune variable de shell et aucune option de mode spécifiée."
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Usage: %s NOM\n"
+" ou: %s OPTION\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"Afficher le NOM du répertoire en enlevant ses composantes de fin;\n"
+"si le NOM ne contient pas de « / »\n"
+"le symbole « . » indique le répertoire courant.\n"
+"\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+"\n"
+"Exemples:\n"
+" %s /usr/bin/sort sortie \"/usr/bin\".\n"
+" %s stdio.h sortie \".\".\n"
+
+#: src/du.c:279 src/wc.c:108
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Usage: %s [OPTION]... [FICHIER]...\n"
+" ou: %s [OPTION]... --reference=FICHIER-R FICHIER...\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"Produire un sommaire de l'utilisation de l'espace disque de chaque FICHIER,\n"
+"et récursivement dans tous les répertoires.\n"
+
+#: src/du.c:290
+#, fuzzy
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+" -a, --all afficher le décompte pour tous les fichiers,\n"
+" pas seulement pour les répertoires\n"
+" --apparent-size afficher les tailles apparentes, au lieu de "
+"l'usage du disque; \n"
+" même si la taille apparente est habituellement "
+"plus petite, elle peut être\n"
+" plus grande en raison de trous dans (`sparse') "
+"les fichiers, \n"
+" de la fragmentation, de blocs indirects ou autre "
+"raisons similaires\n"
+" -B, --block-size=TAILLE utiliser la TAILLE en octets des blocs\n"
+" -b, --bytes afficher la taille en octets\n"
+" -c, --total produire le grand total\n"
+" -D, --dereference-args ne pas tenir compte des CHEMINS lorsqu'il y a\n"
+" des liens symboliques\n"
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+#, fuzzy
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+" --files0-from=FICHIER\n"
+" résumer l'usage du disque des noms fichier "
+"terminés par des NULS\n"
+" spécifiés dans le FICHIER\n"
+" -H, identique à --si, mais lance un avertissement; "
+"sera bientôt\n"
+" modifié afin d'être équivalent à --dereference-"
+"args (-D)\n"
+" -h, --human-readable afficher les tailles dans un format lisible par\n"
+" un humain (i.e. 1K 234M 2G)\n"
+" --si identique à -h mais utilise un multiple de 1000\n"
+" au lieu de 1024 (usage déprécié)\n"
+" -k, identique à --block-size=1K\n"
+" -l, --count-links dénombrer les tailles aussi souvent qu'il y a\n"
+" de liens directs\n"
+" -m identique à --block-size=1M\n"
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference ne pas tenir compte de tous les liens\n"
+" symboliques\n"
+" -P, --no-dereference ne pas suivre les liens symboliques (par défaut)\n"
+" -0, --null terminer chaque ligne de sortie par un octet de "
+"valeur zéro plutôt que changement de ligne\n"
+" -S, --separate-dirs ne pas inclure la taille des sous-répertoires\n"
+" -s, --summarize afficher seulement un total pour chaque type\n"
+" d'argument\n"
+
+#: src/du.c:323
+#, fuzzy
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system escamoter les répertoires de différents\n"
+" systèmes de fichiers\n"
+" -X FICHIER, \n"
+" --exclude-from=FICHIER\n"
+" exclure les fichiers qui concordent avec\n"
+" le nom du FICHIER\n"
+" --exclude=MODÈLE exclure les fichier qui concordent avec\n"
+" le MODÈLE\n"
+" --max-depth=N afficher le total pour un répertoire\n"
+" (ou un fichier, avec l'option --all) seulement\n"
+" si N ou un nombre inférieur dans les arguments\n"
+" de la ligne de commande;\n"
+" --max-depth=0 est identique à --summurize\n"
+
+#: src/du.c:332
+#, fuzzy
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+" --time afficher le temps de la dernière modification de "
+"n'importe\n"
+" quel fichier du répertoire ou de ses sous-"
+"répertoire\n"
+" --time=MOT afficher le temps comme un MOT au lieu du temps de "
+"modification:\n"
+" atime, access, use, ctime ou status\n"
+" --time-style=STYLE afficher le temp en utilisatn le STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT est interprété comme `date'\n"
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "total"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+"AVERTISSEMENT: utiliser --si, pas -H; la signification de l'option -H\n"
+"sera bientôt identique à celle de --dereference-args (-D)"
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "profondeur maximum invalide %s"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr "l'option --megabytes est désuète; utiliser -m à la place"
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "Ne peut afficher à la fois un résumé et toutes les entrées."
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr ""
+"AVERTISSEMENT: le résumé est identique si l'option --max-dept=0 est utilisée"
+
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr ""
+"AVERTISSEMENT: conflit avec l'option d'établissement de sommaire avec --max-"
+"depth=%lu"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr "Les opérandes fichier ne peuvent être combinés avec --files0-from."
+
+#: src/du.c:960 src/wc.c:662
+#, c-format
+msgid "cannot read file names from %s"
+msgstr "ne peut lire les noms de fichiers à partir de %s"
+
+#: src/du.c:1000 src/du.c:1003
+msgid "invalid zero-length file name"
+msgstr "taille invalide de longueur zéro de nom de fichier"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Usage: %s [OPTION]... [CHAÎNE]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+"Faire l'écho des CHAINES sur la sortie standard.\n"
+"\n"
+" -n ne pas produire sur la sortie la nouvelle ligne de queue\n"
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+" -e autoriser l'interprétation des échappements de barre "
+"oblique inverse (par défaut)\n"
+" -E désactiver l'interprétation des échappements de barre "
+"oblique inverse\n"
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"Avec l'option -E, les séquences suivantes sont reconnues:\n"
+"\n"
+" \\ONNN le caractère dont le code ASCII est NNN (en octal)\n"
+" \\\\ barre oblique inverse\n"
+" \\a bip sonore d'alerte\n"
+" \\b retour arrière\n"
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c supprimer le saut de ligne de fin\n"
+" \\f saut de page\n"
+" \\n saut de ligne\n"
+" \\r retour de chariot\n"
+" \\t tabulation horizontale\n"
+" \\v tabulation verticale\n"
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Usage: %s [OPTION]... [-] [NOM=VALEUR]... [COMMANDE] [ARG]...\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Initialiser chaque VARIABLE à la VALEUR dans l'environnement\n"
+"et exécuter la COMMANDE.\n"
+"\n"
+" -i, --ignore-environment débuter avec un environnement vide\n"
+" -u, --unset=VARIABLE retirer la VARIABLE de l'environment\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"Un simple - implique -i. Si aucune COMMANDE n'est fournie,\n"
+"afficher les variables d'environnement.\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Convertir les tabulations de chaque FICHIER par des blancs d'espacement,\n"
+"en écrivant sur la sortie standard.\n"
+"Sans FICHIER, ou quand le FICHIER est -, lire de l'entrée standard.\n"
+"\n"
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial ne pas convertir les tabulations après des non-blancs\n"
+" -t, --tabs=N utiliser N caractères de tabulations à part et non 8\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+" -t, --tabs=LISTE utiliser la LISTE explicite de positions de "
+"tabulation\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr "L'arrêt de tabulation %s est trop grand."
+
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "La taille de la tabulation contient des caractères invalides: %s."
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "La taille de la tabulation ne peut être 0."
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "Les tailles de tabulation doivent être croissantes."
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, c-format
+msgid "input line is too long"
+msgstr "ligne d'entrée est trop longue"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Usage: %s EXPRESSION\n"
+" ou: %s OPTION\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"\n"
+"Afficher la valeur de l'EXPRESSION sur la sortie standard. Une ligne "
+"blanche\n"
+"sépare la précédence croissante des groupes. L'EXPRESSION peut être:\n"
+"\n"
+" ARG1 | ARG2 ARG1 s'il est nul ou 0, autrement ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 si aucun des arguments est nul ou 0, autrement "
+"0\n"
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"\n"
+" ARG1 < ARG2 ARG1 si plus petit que ARG2\n"
+" ARG1 <= ARG2 ARG1 si plus petit ou égal à ARG2\n"
+" ARG1 = ARG2 ARG1 si égal à ARG2\n"
+" ARG1 != ARG2 ARG1 n'est pas égal à ARG2\n"
+" ARG1 >= ARG2 ARG1 si plus grand ou égal à ARG2\n"
+" ARG1 > ARG2 ARG1 si plus grand que ARG2\n"
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+"\n"
+" ARG1 + ARG2 somme arithmétique de ARG1 et ARG2\n"
+" ARG1 - ARG2 différence arithmétique de ARG1 et ARG2\n"
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+"\n"
+" ARG1 * ARG2 produit arithmétique de ARG1 et ARG2\n"
+" ARG1 / ARG2 quotient arithmétique de ARG1 divisé par ARG2\n"
+" ARG1 % ARG2 reste arithmétique ARG1 divisé par ARG2\n"
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"\n"
+" CHAÎNE: EXPREG patron d'ancrage de concordance de l'EXPREG dans la "
+"CHAÎNE\n"
+"\n"
+" match CHAÎNE EXPREG identique à CHAÎNE: EXPREG\n"
+" substr CHAÎNE POS LONG sous-chaîne de CHAÎNE débutant à la POSition\n"
+" (comptée à partir de 1) et ayant une LONGueur\n"
+" index CHAÎNE CAR valeur de la position du CARactère retrouvé\n"
+" dans la CHAÎNE, sinon 0\n"
+" length CHAÎNE longueur de la CHAÎNE\n"
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+" + JETON interpréter le JETON comme une chaîne, même si "
+"c'est\n"
+" un mot clé comme « match » ou un opérateur comme "
+"« / »\n"
+"\n"
+" ( EXPRESSION ) valeur de l'EXPRESSION\n"
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"Portez attention au fait que plusieurs opérateurs peuvent être escamotés\n"
+"ou commentés par certains shells.\n"
+"Les comparaisons sont arithmétiques si les deux ARGuments sont des nombres,\n"
+"autrement elles sont lexicographiques.\n"
+"Les concordances de patrons retournent la chaîne retrouvée si elle est\n"
+"encapsulée entre \\( et \\) ou nul; si \\( et \\) ne sont pas utilisés,\n"
+"le nombre de caractères qui concordent est retourné sinon 0.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+"\n"
+"L'état de fin d'exécution est 0 si l'EXPRESSION est soit nulle ou 0, 1 si "
+"l'EXPRESSION est nulle\n"
+"ou 0, 2 si l'EXPRESSION est syntaxiquement invalide et 3 si une erreur est "
+"survenue.\n"
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "erreur de syntaxe"
+
+#: src/expr.c:468 src/ptx.c:292
+#, c-format
+msgid "error in regular expression matcher"
+msgstr "erreur dans l'expression régulière recherchée."
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "argument non numérique"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "division par zéro"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Usage: %s [NOMBRE]...\n"
+" ou: %s OPTION\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"Afficher les facteurs premiers de chaque NOMBRE.\n"
+"\n"
+
+#: src/factor.c:85
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+"Afficher les facteurs premiers de tous les NOMBRES entiers spécifiés.\n"
+"Si aucun argument n'est fourni, les nombres sont lus de l'entrée standard.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s est trop grand"
+
+#: src/factor.c:158
+#, c-format
+msgid "%s is not a valid positive integer"
+msgstr "%s n'est pas un entier positif valide."
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Usage: %s [-CHIFFRES] [OPTION]... [FICHIER]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"Reformater chaque paragraphe de FICHIER(s), en écrivant sur la\n"
+"sortie standard.\n"
+"Si aucun FICHIER ou si FICHIER est « - », lire de l'entrée standard.\n"
+"\n"
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin préserver l'indentation des 2 premières lignes\n"
+" -p, --prefix=CHAÎNE reformater seulement les lignes débutant par "
+"CHAÎNE\n"
+" en réattanchant le préfixe aux lignes "
+"reformatées\n"
+" -s, --split-only briser les longues lignes mais sans les remplir\n"
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph indenter différemment la 1ère ligne de la 2ème\n"
+" -u, --uniform-spacing séparer d'un blanc les mots,\n"
+" puis de deux après chaque phrase\n"
+" -w, --width=N utiliser une largeur de N colonnes pour une\n"
+" pour une ligne (par défaut 75 colonnes)\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+"option invalide -- %c; -WIDTH est reconnue seulement lorsque c'est la "
+"première\n"
+"option; utiliser -w N à la place"
+
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr "Largeur invalide: %s"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"Limiter la longueur de chaque ligne de chaque FICHIER (entrée standard par\n"
+"défaut) et forcer le bouclage sur la ligne suivante en écrivant sur la "
+"sortie standard.\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes compter les octets au lieu des colonnes\n"
+" -s, --spaces briser la ligne sur des blancs\n"
+" -w, --width=N utiliser N colonnes au lieu de 80\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, c-format
+msgid "invalid number of columns: %s"
+msgstr "nombre invalide de colonnes: %s"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Afficher les 10 premières lignes de chaque FICHIER sur la sortie standard.\n"
+"Avec plus d'un FICHIER, précéder chacun d'une en-tête donnant le nom du "
+"fichier.\n"
+"Sans FICHIER, ou quand FICHIER est -, lire de l'entrée standard.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+" -c, --bytes=[-]N afficher les premiers N octets de chaque "
+"fichier;\n"
+" lorsque précédé du préfixe `-', afficher tous "
+"les octets\n"
+" sauf les derniers N octets de chaque fichier\n"
+" -n, --lines=[-]N afficher les N premières lignes au lieu des 10 "
+"premières;\n"
+" lorsque précédé du préfixe `-', afficher toutes "
+"les lignes\n"
+" sauf les N dernières lignes de chaque fichier\n"
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent ne pas afficher les en-têtes avec les\n"
+" noms de fichiers\n"
+" -v, --verbose toujours afficher les en-têtes avec les\n"
+" noms de fichiers\n"
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"N peut être suivie d'un suffixe multiplicatif:\n"
+"b pour 512, k pour 1024, m pour 1024*1024.\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "Erreur lors de la lecture %s"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "Erreur lors de l'écriture %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr "%s: fichier a trop été réduit"
+
+#: src/head.c:230 src/head.c:1046
+#, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s: nombre d'octets est trop grand"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: ne peut repérer via lseek() par rapport à la position originale"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: ne peut repérer selon le déplacement %s"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "ne peut repositionner le pointeur de fichier pour %s"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s est tellement grande qu'elle n'est pas représentable."
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "Nombre de lignes"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "Nombre d'octets"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "nombre invalide de lignes."
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "nombre d'octets invalide."
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "option invalide --%c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Usage: %s\n"
+" ou: %s OPTION\n"
+"Afficher l'identificateur numérique (en hexadécimal) de l'hôte courant.\n"
+"\n"
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Usage: %s [NOM]\n"
+" ou: %s OPTION\n"
+"Afficher le nom du poste (hostname) du système courant.\n"
+"\n"
+
+#: src/hostname.c:103
+#, c-format
+msgid "cannot set name to %s"
+msgstr "ne peut initialiser le nom à %s"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+"Ne peut nommer le poste (hostname); le système ne supporte pas cette fonction"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "Ne peut déterminer le nom du poste (hostname)"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Usage: %s [OPTION]... [NOM-D'USAGER]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Afficher les informations concernant un USAGER, ou de l'usager courant.\n"
+"\n"
+" -a ignorée, par compatibilité avec les autres version\n"
+" -g, --group afficher les IDentificateurs de groupes\n"
+" -G, --groups afficher seulement les groupes supplémentaires\n"
+" -n, --name afficher le nom au lieu du nombre, avec -ugG\n"
+" -r, --real afficher l'IDentificateur réel au lieu de\n"
+" l'effectif, avec -ugG\n"
+" -u, --user afficher seulement l'IDentificateur de l'usager\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"Sans aucune OPTION, afficher les informations utiles d'identification.\n"
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "ne peut imprimer seulement l'usager et seulement le groupe"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr ""
+"Ne peut afficher seulement les noms ou les IDentificateurs réels\n"
+"dans le format par défaut."
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: usager inexistant."
+
+#: src/id.c:205
+#, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "ne peut trouver le nom de l'usager ID %lu"
+
+#: src/id.c:229
+#, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "ne peut trouver le nom de l'identificateur de groupe %lu"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "Ne peut trouver la liste de groupes supplémentaires."
+
+#: src/id.c:375
+msgid " groups="
+msgstr " groupes="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr ""
+"les options de strip peuvent ne pas être utilisées lors de l'installation "
+"d'un répertoire"
+
+#: src/install.c:321
+#, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr ""
+"le répertoire cible n'est pas permis lors de l'installation d'un répertoire"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "mode invalide %s"
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "Ne peut changer l'appartenance de %s"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "ne peut initialiser les estampilles de date-heure pour %s"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "échec de l'appel système fork()"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "ne peut exécuter strip"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "écriture vers %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "usager invalide %s"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "création du répertoire %s"
+
+#: src/install.c:651
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Usage: %s [OPTION]... [-T] SOURCE CIBLE\n"
+" ou: %s [OPTION]... SOURCE... RÉPERTOIRE\n"
+" ou: %s [OPTION]... -t RÉPERTOIRE SOURCE...\n"
+" ou: %s [OPTION]... -d RÉPERTOIRE...\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"Dans les trois premiers formats, copier la SOURCE vers la DESTINATION ou "
+"des\n"
+"fichiers de plusieurs SOURCE(S) vers un RÉPERTOIRE existant, tout en "
+"initialisant\n"
+"les modes de protection et l'appartenance propriétaire/groupe. Dans le\n"
+"4e format, créer tous les composants des RÉPERTOIRES spécifiés.\n"
+"\n"
+
+#: src/install.c:667
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup[=CONTRÔLE] archiver chaque fichier de destination\n"
+" -b identique à --backup mais sans argument\n"
+" -c (ignoré)\n"
+" -d, --directory traiter tous les arguments comme des noms\n"
+" de répertoires; créer toutes les composants\n"
+" des répertoires spécifiés\n"
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D créer tous les composants de tête de la\n"
+" DESTINATION excepté le dernier\n"
+" ensuite copier la SOURCE vers la DESTINATION\n"
+" -g, --group=GROUPE attribuer l'appartenance au GROUPE,\n"
+" plutôt que le groupe du processus courant\n"
+" -m, --mode=MODE initialiser les permissions d'accès au MODE\n"
+" (comme par chmod), au lieu de rwxrr-xr-x\n"
+" -o, --owner=PROPRIÉTAIRE attribuer l'appartenance au PROPRIÉTAIRE\n"
+" (par le super-usager seulement)\n"
+
+#: src/install.c:681
+#, fuzzy
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps conserver les dates d'accès/ modification\n"
+" des fichiers SOURCES aux fichiers de la "
+"DESTINATION\n"
+" -s, --strip enlever les tables de symboles,\n"
+" -S, --suffix=SUFFIXE écraser le SUFFIXE usuel d'archivage\n"
+" -t, --target-directory=RÉPERTOIRE\n"
+" copier tous les arguments de la SOURCE dans le "
+"RÉPERTOIRE\n"
+" -T, --no-target-directory traiter la DESTINATION comme un fichier normal\n"
+" -v, --verbose afficher le nom de chaque répertoire créé\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"Le suffixe d'archive est « ~ », initialisé autrement avec --suffix ou\n"
+"SIMPLE_BACKUP_SUFFIX. La méthode du contrôle de version peut être "
+"sélectionné\n"
+"par l'option --backup ou par VERSION_CONTROL par le bias des variables\n"
+"d'environnement selon les valeurs suivantes:\n"
+"\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"Pour chaque paire de lignes en entrée ayant des champs de fusion "
+"identiques,\n"
+"afficher une ligne sur la sortie standard.\n"
+"Le champ de fusion par défaut est le premier, délimité par un blanc.\n"
+"Si FICHIER1 ou FICHIER2 (pas les 2) est -, lire de l'entrée standard.\n"
+"\n"
+" -a COTÉ afficher les lignes non repérables venant du \n"
+" fichier COTÉ\n"
+" -e VIDE remplacer les champs d'entrée manquants par VIDE\n"
+
+#: src/join.c:147
+#, fuzzy
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case ignorer la casse des caractères lors de la\n"
+" comparaison des champs\n"
+" -j CHAMP équivalente à « -1 CHAMP -2 CHAMP »\n"
+" -o FORMAT respecter le FORMAT lors de la construction\n"
+" de sortie\n"
+" -t CAR utiliser CAR comme délimiteur de champs à l'entrée\n"
+" et à la sortie\n"
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v NOFICHIER comme -a NOFICHIERÉ, mais supprimer les lignes jointes "
+"sur la sortie\n"
+" de sortie fusionnées\n"
+" -1 CHAMP fusionner sur le champs CHAMP du fichier 1\n"
+" -2 CHAMP fusionner sur le champs CHAMP du fichier 2\n"
+
+#: src/join.c:160
+#, fuzzy
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"À moins que -t CAR ne soit fourni, les blancs de tête séparant\n"
+"les champs sont ignorés sinon les champs sont séparés par CAR.\n"
+"Chaque CHAMP est un champ compté numériquement à partir de 1.\n"
+"FORMAT est une spécification contenant un ou plusieurs virgules ou blancs\n"
+"chacun étant « NOFICHIER.CHAMP » ou « 0 ». Par défaut FORMAT affiche des\n"
+"champs fusionnés, les champs restants de FICHIER1 ou FICHIER2 sont tous "
+"séparés par CAR.\n"
+"\n"
+
+#: src/join.c:617 src/join.c:812
+#, c-format
+msgid "invalid field number: %s"
+msgstr "numéro de champ invalide: %s"
+
+#: src/join.c:638 src/join.c:647
+#, c-format
+msgid "invalid field specifier: %s"
+msgstr "spécificateur de champ invalide: %s"
+
+#: src/join.c:654
+#, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "numéro de fichier invalide le champ spécifié: %s"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr "jonction incompatible des champs %lu, %lu"
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr "chaînes de remplacement de champ vide conflictuelles"
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr "tabulation vide"
+
+#: src/join.c:870 src/sort.c:3031
+#, c-format
+msgid "multi-character tab %s"
+msgstr "tab multi-caractères %s"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr "tabulations incompatibles"
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "Les deux fichiers ne peuvent pas être à l'entrée standard."
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" ou: %s -l [SIGNAL]...\n"
+" ou: %s -t [SIGNAL]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+"Transmettre les signaux aux processus ou donner la liste des signaux.\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" utiliser le nom ou le numéro du signal à transmettre.\n"
+" -l, --list donner la liste des noms de signaux.\n"
+" -t, --table afficher la table des informations relatives aux "
+"signaux.\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+"\n"
+"SIGNAL peut être un nom comme « HUP » ou un numéro de signal commme « 1 »\n"
+"ou un état de fin d'exécution d'un processus terminé par un signal.\n"
+"PID est un entier; si négatif il identifie un groupe de processus.\n"
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: signal invalide"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: identificateur de processus invalide"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "option invalide --%c"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: signaux multiples spécifiés"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "options multiples -l ou -t spécifiées"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "ne peut combiner le signal avec -l ou -t"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr "aucun ID de processus spécifié"
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Usage: %s FICHIER FICHIER2\n"
+" ou: %s OPTION\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+"Appeler la fonction link() pour créer un lien nommé FICHIER2 sur le FICHIER1 "
+"existant.\n"
+"\n"
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "Ne peut créer le lien %s vers %s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+"%s: AVERTISSEMENT: créer un lien direct vers un lien symbolique n'est pas "
+"portable"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: lien direct n,est pas permis pour un répertoire"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: ne peut écraser le répertoire"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: remplacer %s? "
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "création d'un lien symbolique %s vers %s"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "création d'un lien symbolique %s vers %s"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "création d'un lien direct %s vers %s"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "création d'un lien direct %s vers %s"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "création d'un lien direct %s vers %s"
+
+#: src/ln.c:324
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Usage: %s [OPTION]... [-T] SOURCE NOM_DU_LIEN (1er format)\n"
+" ou: %s [OPTION]... CIBLE (2e format)\n"
+" ou: %s [OPTION]... CIBLE... RÉPERTOIRE (3e format)\n"
+" ou: %s [OPTION]... -t RÉPERTOIRE CIBLE... (4e format)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"Dans le 1er format, créer un lien vers la CIBLE avec le NOM_DU_LIEN\n"
+"Dans le 2e format, créer un lien vers la CIBLE dans le répertoire courant.\n"
+"Dans le 3e et 4e format, créer des liens vers chaque CIBLE dans le "
+"RÉPERTOIRE.\n"
+"Créer des liens directs (hard link) par défaut, les liens symboliques avec --"
+"symbolic.\n"
+"Lors de la création de liens directs, chaque CIBLE doit exister.n\n"
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup[=CONTRÔLE] archiver chaque fichier existant de "
+"destination\n"
+" -b identique à --backup mais n'accepte pas "
+"d'argument\n"
+" -d, -F, --directory permettre au super usager de créer des liens "
+"directs (hard)\n"
+" sur des répertoires (note: va probablement "
+"échouer en\n"
+" raisons de restrictions système même pour le "
+"super usager)\n"
+" -f, --force détruire les destinations,\n"
+" sans demander confirmation\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference avec --force, détruire la destination qui\n"
+" est un lien symbolique vers un répertoire \n"
+" -i, --interactive demander confirmation avant de détruire\n"
+" les destinations\n"
+" -s, --symbolic créer un lien symbolique au lieu d'un\n"
+" lien direct\n"
+
+#: src/ln.c:356
+#, fuzzy
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" -S, --suffix=SUFFIXE écraser le suffixe d'archivage par le SUFFIXE\n"
+" --target-directory=RÉPERTOIRE\n"
+" utliser le RÉPERTOIRE dans lequel les liens "
+"seront créés\n"
+" -T, --no-target-directory traiter le NOM_DU_LIEN comme un fichier normal\n"
+" -v, --verbose afficher le nom de chaque fichier avant de "
+"créer un lien\n"
+
+#: src/ln.c:484
+#, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "Ne peut combiner --target-directory et --no-target-directory"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Usage: %s [OPTION]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"Afficher le nom de l'usager courant.\n"
+"\n"
+
+#: src/logname.c:89
+#, c-format
+msgid "no login name"
+msgstr "pas de nom d'usager (login name)"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%b %e %Y"
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%b %e %H:%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr ""
+"valeur invalide ignorée de la variable d'environnement QUOTING_STYLE: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr ""
+"La taille des colonnes est ignorée:\n"
+"la variable d'environnement COLUMNS %s est invalide."
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr ""
+"La taille de tabulation est ignorée:\n"
+"la variable d'environnement TABSIZE %s est invalide."
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "largeur de ligne invalide: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "taille de tabulation invalide: %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "format de style de temps invalide %s"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "préfixe non reconnu: %s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr ""
+"la valeur de la variable d'environnement LS_COLORS ne peut être analysée "
+"syntaxiquement"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "ne peut ouvrir le répertoire %s"
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "ne peut déterminer le périphérique et l'inode de %s"
+
+#: src/ls.c:2353
+#, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "%s: ne peut lister un répertoire déjà listé"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "lecture du répertoire %s"
+
+#: src/ls.c:2410
+#, c-format
+msgid "closing directory %s"
+msgstr "fermeture du répertoire %s"
+
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "ne peut comparer les noms de fichier %s et %s"
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"Afficher les informations à propos des FICHIERS (du répertoire\n"
+"courant par défaut). Trier les entrées alphabétiquement si aucune\n"
+"des options -cftuvSUX ni --sort n'est utilisée.\n"
+"\n"
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all ne pas ignorer les entrées débutant par .\n"
+" -A, --almost-all ne pas inclure dans la liste . et ..\n"
+" --author avec -l, afficher l'auteur de chaque fichier\n"
+" -b, --escape afficher en octal les caractères non-"
+"graphiques\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=TAILLE utiliser la TAILLE de blocs\n"
+" -B, --ignore-backups ne pas inclure dans la liste,\n"
+" les entrées se terminant par ~\n"
+" -c lister les fichiers triés selon leur date de\n"
+" modification; \n"
+" avec -lt: trier par la date de modification\n"
+" et afficher la date de modification (ctime)\n"
+" avec -l: trier par nom et afficher avec\n"
+" avec la date de modification (ctime)\n"
+" autrement: trier par la date de modification "
+"(ctime)\n"
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C afficher en colonnes\n"
+" --color[=PARAM] afficher avec une couleur pour distinguer les "
+"types de fichiers\n"
+" de fichiers, selon un des PARAMètres\n"
+" suivants: `never', `always', ou `auto'\n"
+" -d, --directory lister les noms de répertoires plutôt\n"
+" que leur contenu et ne pas déférencer les liens "
+"symboliques\n"
+" -D, --dired générer une sortie adaptée pour le mode\n"
+" « dired » de Emacs\n"
+
+#: src/ls.c:4307
+#, fuzzy
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f ne pas trier, autoriser -aU, interdire -lst\n"
+" -F, --classify ajouter un caractère (parmi */=@|) pour chaque "
+"entrée\n"
+" --file-type identique mais sans ajout du suffixe `*'\n"
+" --format=MODE afficher selon le MODE suivant: -x croisé,\n"
+" -m avec virgules, -x horizontal, -l long,\n"
+" -1 en colonne simple, -l en mode bavard,\n"
+" -C vertical\n"
+" --full-time identique à -l --time-style=full-iso\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+#, fuzzy
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all inclure le système bidon de fichiers\n"
+" -B, --block-size=TAILLE utiliser la TAILLE en octets de blocs\n"
+" -h, --human-readable afficher les tailles dans un format lisible par\n"
+" un humain (i.e. 1K 234M 2G)\n"
+" -H, --si identique mais utilise un multiple de 1000\n"
+" et non de 1024\n"
+
+#: src/ls.c:4328
+#, fuzzy
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+" -g identique à -l mais n'affiche pas le "
+"propriétaire\n"
+" -G, --no-group identique à -l mais n'affiche pas le groupe\n"
+" -h, --human-readable avec -l affiche les tailles dans un format "
+"lisible par\n"
+" un humain (i.e. 1K 234M 2G)\n"
+" --si identique à -h mais en utilisant un multiple\n"
+" 1000 et non pas de 1024\n"
+" -H, --dereference-command-line\n"
+" suivre les liens symboliques de la ligne de "
+"commande\n"
+" --dereference-command-line-symlink-to-dir\n"
+" suivre chaque lien symbolique de la ligne de "
+"commande\n"
+" qui pointe vers un répertoire\n"
+" --hide=MODÈLE ne pas lister les entrées implicites concordant "
+"avec le MODÈLE du shell\n"
+" (écrasé par -a ou -A)\n"
+
+#: src/ls.c:4337
+#, fuzzy
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=MOT ajouter en suffixe l'indicateur selon le MOT\n"
+" none (par défaut), barre oblique (-p)\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode avec -l, afficher le numéro d'index de chaque "
+"fichier\n"
+" -I, --ignore=MODÈLE ne pas inclure dans la liste les entrées\n"
+" concordant avec le MODÈLE de shell\n"
+" -k identique à --block-size=1K\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l utiliser le format long d'affichage\n"
+" -L, --dereference afficher les entrées pointées par des\n"
+" liens symboliques, monter l'information pointée "
+"par le lien\n"
+" -m remplir la largeur par une liste d'entrées\n"
+" séparée par des virgules\n"
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid identique à -l mais en listant les valeurs "
+"numériques\n"
+" des UID et GID\n"
+" -N, --literal afficher les noms bruts (ne pas traiter les "
+"caractères\n"
+" de contrôle spécialement)\n"
+" -o identique à -l mais sans lister l'information "
+"de groupe\n"
+" -p, --indicator-style=slash\n"
+" accoler l'indicateur / aux répertoires\n"
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars afficher ? au lieu de caractères\n"
+" non-graphiques\n"
+" --show-control-chars afficher les caractères non graphiques\n"
+" tel quel (par défaut)\n"
+" -Q, --quote-name encapsuler chaque nom d'entrée entre\n"
+" guillemets\n"
+" --quoting-style=MOT utiliser le style d'encapsultation selon le MOT "
+"clé\n"
+" suivant: literal, shell, shell-always, c, "
+"escape\n"
+
+#: src/ls.c:4368
+#, fuzzy
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse afficher en ordre inverse lors du tri\n"
+" -R, --recursive afficher les sous-répertoires récursivement\n"
+" -s, --size avec -l, afficher la taille de chaque fichier "
+"en blocs\n"
+
+#: src/ls.c:4373
+#, fuzzy
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S trier selon la taille des fichiers\n"
+" --sort=MODE trier selon le MODE suivant:\n"
+" extension -X, aucun -U, taille -S, date -t,\n"
+" version -v, état -c, date -t, date d'accès -"
+"u,\n"
+" access -u, usage -u\n"
+" --time=MODE avec -l, afficher la date selon le MODE au lieu "
+"de\n"
+" la date de modification:\n"
+" atime, access, use, ctime ou status\n"
+" tel que spécifié dans la clé de trie --"
+"sort=date\n"
+
+#: src/ls.c:4382
+#, fuzzy
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=STYLE avec -l, afficher les dates selon le STYLE "
+"désiré:\n"
+" full-iso, long-iso, iso, locale, +FORMAT\n"
+" FORMAT est interprété comme « date »; si "
+"FORMAT est\n"
+" FORMAT1<retour de chariot>FORMAT2, FORMAT1 "
+"s'applique aux\n"
+" fichiers non récents et FORMAT2 aux fichiers "
+"récents;\n"
+" si le STYLE est préfixé par « posix- », "
+"STYLE prend effet\n"
+" seulement en dehors de la locale POSIX\n"
+" -t trier selon la date de modification:\n"
+" -T, --tabsize=TAILLE utiliser la tabulation selon la TAILLE\n"
+" pour chaque colonne au lieu de 8\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u avec -lt: trier selon la date du dernier "
+"accès;\n"
+" avec -l: afficher la date d'accès et trier par "
+"nom\n"
+" -U ne pas trier: afficher selon l'ordre\n"
+" original des entrées d'un répertoire\n"
+" -v trier par version\n"
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -w, --width=COLS fixer la largeur de l'écran au lieu de la "
+"valeur courante\n"
+" -x lister les entrées par ligne au lieu de par "
+"colonne\n"
+" -X trier alphabétiquement par extension d'entrée\n"
+" -1 lister un fichier par ligne\n"
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"Par défaut, la couleur n'est pas utilisée pour distinguer les différents "
+"types\n"
+"de fichiers. Cela est équivalent à l'utilisation de l'option --"
+"color=none. \n"
+"L'utilisation de l'option --color sans l'argument WHEN est équivalent à\n"
+"l'utilisation de --colors=always. Avec l'option --color=auto, les codes de\n"
+"couleur sont transmis vers la sortie standard si celle-ci est reliée à un \n"
+"terminal (tty). La variable d'environnement LS_COLORS peut influer sur les "
+"couleurs\n"
+"et peut être initialisé facilement par la commande dircolors.\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+"\n"
+"État de fin d'exécution est 0 si OK, 1 si un problème mineur est survenu, 2 "
+"si un trouble sérieux est survenu.\n"
+
+#: src/md5sum.c:150
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Usage: %s [OPTION] [FICHIER]...\n"
+"Afficher ou vérifier les sommes de contrôle %s (%d-bits).\n"
+"Sans FICHIER, ou quand FICHIER est -, lire de l'entrée standard.\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+" -b, --binary lire en mode binaire (par défaut à moins de lire à "
+"partir de tty stdin)\n"
+
+#: src/md5sum.c:164
+msgid " -b, --binary read in binary mode\n"
+msgstr " -b, --binary écrire en binaire sur la console.\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+" -c, --check lire les sommes %s à partir des FICHIER et les "
+"vérifier\n"
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+" -t, --text lire en mode texte (par défaut la lecture est "
+"faite de tty stdin)\n"
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr " -t, --text lire en mode texte (par défaut)\n"
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"\n"
+"Les deux options suivantes sont utiles seulement lors de la vérification\n"
+"des sommes de contrôle:\n"
+" --status ne rien afficher, sauf le constat indiquant le "
+"succès\n"
+" -w, --warn avertir à propos des lignes de contrôle mal "
+"formatées\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"Les sommes sont calculées selon la description de %s. Lors de la "
+"vérification,\n"
+"l'entrée devrait être formellement une sortie de ce programme. Le mode par "
+"défaut\n"
+"est d'afficher la ligne avec la somme de contrôle, un caractère indiquant\n"
+"le type (« * » pour binaire, « » pour texte) et un nom pour chaque FICHIER.\n"
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: trop de lignes de somme de contrôle"
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %<PRIuMAX>: ligne de somme de contrôle %s mal formatée"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: ÉCHEC d'ouverture ou de lecture.\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "ÉCHEC"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "OK"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: erreur de lecture."
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: aucune ligne de somme de contrôle %s repérée."
+
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] ""
+"AVERTISSEMENT: %<PRIuMAX> de %<PRIuMAX> fichier listé n'a pu être lu."
+msgstr[1] ""
+"AVERTISSEMENT: %<PRIuMAX> de %<PRIuMAX> fichiers listés n'ont pu être lus."
+
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] ""
+"AVERTISSEMENT: %<PRIuMAX> de %<PRIuMAX> somme de contrôle ne concorde pas."
+msgstr[1] ""
+"AVERTISSEMENT: %<PRIuMAX> de %<PRIuMAX> sommes de contrôle ne concordent pas."
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"Les options --binary et --text sont sans effet lors de la\n"
+"la vérification des sommes de contrôle."
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr ""
+"L'option --status n'a de sens que si la vérification des sommes\n"
+"de contrôle est demandée."
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr ""
+"L'option --warn n'a de sens que si la vérification des sommes\n"
+"de contrôle est demandée."
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Usage: %s [OPTION] RÉPERTOIRE...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"Créer le(s) RÉPERTOIRE(s) si il(s) n'existe(nt) pas.\n"
+"\n"
+
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+" -m, --mode=MODE utiliser le MODE des permissions d'accès\n"
+" (comme avec chmod),\n"
+" et non pas le mode rwxrwxrwx - umask\n"
+" -p, --parents si l'exécution est sans erreur parce qu'existant:\n"
+" créer des répertoires parents si nécessaire\n"
+" -v, --verbose afficher le nom de chaque répertoire créé\n"
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "création du répertoire %s"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Usage: %s [OPTION] NOM...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr "Créer un relais nommé (named pipe FIFO) qui portera le NOM.\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+" -m, --mode=MODE utiliser le MODE d'accès (comme avec « chmod »),\n"
+" mais non pas selon a=rw - umask\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "mode invalide"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Usage: %s [OPTION]... NOM TYPE [MAJEUR MINEUR]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"Créer le fichier spécial avec le NOM et le TYPE donné.\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+"\n"
+"Les deux MAJEUR et MINEUR doivent être spécifiés quand le TYPE est b, c ou "
+"u\n"
+"et ils doivent être omis lorsque le TYPE est p. Si MAJEUR et MINEUR avec 0x "
+"ou 0X,\n"
+"est fourni, ils sont interprétés en hexadécimal; autrement, s'ils débutent "
+"pas 0, ils\n"
+"le sont en octal autrement en décimal. Le TYPE peut être:\n"
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+" b créer un fichier spécial de type blocage (avec tampon)\n"
+" c, u créer un fichier spécial de type caractère (sans tampon) \n"
+" p créer un relais de type « fifo »\n"
+
+#: src/mknod.c:146
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"Les fichiers spéciaux requièrent les numéros majeur et mineur de "
+"périphériques."
+
+#: src/mknod.c:156
+msgid "Fifos do not have major and minor device numbers."
+msgstr "Les FIFOS n'ont pas de numéros mineur et majeur de périphérique."
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "fichier spécial de bloc n'est pas supporté"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "fichier spécial de caractères n'est pas supporté"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "numéro majeur de périphérique invalide %s"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "numéro mineur de périphérique invalide %s"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "périphérique invalide %s %s"
+
+#: src/mknod.c:216
+#, c-format
+msgid "invalid device type %s"
+msgstr "type de périphérique invalide %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Renommer la SOURCE à la DESTINATION ou déplacer la SOURCE vers la "
+"DESTINATION.\n"
+"\n"
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup[=CONTRÔLE] archiver chaque fichier existant de "
+"destination\n"
+" -b identique à --backup mais n'accepte pas "
+"d'argument\n"
+" -f, --force ne pas demander de confirmation avant "
+"d'écraser\n"
+" -i, --interactive demander confirmation avant d'écraser\n"
+
+#: src/mv.c:303
+#, fuzzy
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --strip-trailing-slashes enlever les « / » en suffixe de chacun\n"
+" des arguments SOURCE\n"
+" -S, --suffix=SUFFIXE écraser le suffixe d'archivage\n"
+" usuel en utilisant SUFFIXE\n"
+
+#: src/mv.c:308
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" -t, --target-directory=RÉPERTOIRE\n"
+" déplacer tous les arguments SOURCE vers\n"
+" le RÉPERTORIE\n"
+" -T, --no-target-directory traiter la CIBLE comme un fichier normal\n"
+" -u, --update déplacer seulement lorsque les fichiers "
+"SOURCE sont\n"
+" plus récents que les fichiers de la cible "
+"ou lorsque\n"
+" les fichiers de la cible sont manquants\n"
+" -v, --verbose expliquer ce qui a été fait\n"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Usage: %s [OPTION] [COMMANDE] [ARG]...\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+"Exécuter la COMMANDE avec un niveau de priorité ajusté.\n"
+"Sans aucune COMMANDE, afficher le niveau courant de priorité. L'étendue des "
+"niveaux va de\n"
+"%d (priorité la plus favorable d'ordonnancement) à %d (la moins favorable).\n"
+"\n"
+" -n, --adjustment=N ajouter la valeur entière N à la valeur de la priorité "
+"(par défaut 10)\n"
+
+#: src/nice.c:155
+#, c-format
+msgid "invalid adjustment %s"
+msgstr "ajustement invalide %s"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "Une commande doit être soumise avec un ajustement."
+
+#: src/nice.c:171 src/nice.c:182
+#, c-format
+msgid "cannot get niceness"
+msgstr "ne peut obtenir le niveau de priorité"
+
+#: src/nice.c:186
+#, c-format
+msgid "cannot set niceness"
+msgstr "ne peut initialiser le niveau de priorité"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Afficher chaque FICHIER sur la sortie standard, avec numéros de ligne.\n"
+"Sans FICHIER, ou FICHIER est -, lire de l'entrée standard.\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=STYLE utiliser STYLE pour numéroter les lignes\n"
+" -d, --section-delimiter=CC utiliser CC pour séparer les pages\n"
+" logiques\n"
+" -f, --footer-numbering=STYLE utiliser STYLE pour numéroter les lignes\n"
+" de bas de page\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=STYLE utiliser STYLE pour numéroter les lignes\n"
+" d'en-tête\n"
+" -i, --page-increment=N incrémenter de N de lignes à chaque ligne\n"
+" -l, --join-blank-lines=N regrouper N de lignes vides\n"
+" en une seule ligne\n"
+" -n, --number-format=FORMAT insérer un numéro de ligne selon FORMAT\n"
+" -p, --no-renumber ne pas réinitialiser le nombre de lignes\n"
+" aux pages logiques\n"
+" -s, --number-separator=CHAÎNE ajouter la CHAÎNE après (si possible)\n"
+" le numéro de ligne\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=NUMÉRO utiliser comme premier NUMÉRO de ligne\n"
+" sur chaque page logique\n"
+" -w, --number-width=N utiliser le NOMBRE de colonnes pour\n"
+" numéroter les lignes\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"Par défaut, -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn sont sélectionnées.\n"
+"CC se compose de deux caractères délimiteurs pour séparer les pages "
+"logiques\n"
+"un deuxième caractère manquant implique que:\n"
+"taper \\\\ pour \\. STYLE est une des options parmi:\n"
+"\n"
+
+#: src/nl.c:214
+#, fuzzy
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a numéroter toutes les lignes\n"
+" t numéroter seulement les lignes non vides\n"
+" n numéroter n lignes\n"
+" pBRE numéroter seulement les lignes ayant une concordance à "
+"l'expression\n"
+" régulière de base BRE\n"
+"\n"
+"FORMAT doit être choisi parmi:\n"
+"\n"
+" ln justifié à gauche, sans zéro de préfixe\n"
+" rn justifié à droite, sans zéro de préfixe\n"
+" rz justifié à droite, avec zéros de préfixe\n"
+"\n"
+
+#: src/nl.c:281
+#, c-format
+msgid "line number overflow"
+msgstr "débordement du numéro de ligne"
+
+#: src/nl.c:479
+#, c-format
+msgid "invalid header numbering style: %s"
+msgstr "style de numérotation d'en-tête invalide: %s"
+
+#: src/nl.c:487
+#, c-format
+msgid "invalid body numbering style: %s"
+msgstr "style de numérotation de corps invalide: %s"
+
+#: src/nl.c:495
+#, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "style de numérotation de pied de page invalide: %s"
+
+#: src/nl.c:504
+#, c-format
+msgid "invalid starting line number: %s"
+msgstr "numéro de ligne de départ invalide: %s"
+
+#: src/nl.c:513
+#, c-format
+msgid "invalid line number increment: %s"
+msgstr "incrément du nombre de ligne invalide: %s"
+
+#: src/nl.c:525
+#, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "nombre de lignes blanches invalide: %s"
+
+#: src/nl.c:539
+#, c-format
+msgid "invalid line number field width: %s"
+msgstr "largeur du champ de la numérotation de ligne invalide: %s"
+
+#: src/nl.c:558
+#, c-format
+msgid "invalid line numbering format: %s"
+msgstr "format de numérotation de ligne invalide: %s"
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" ou: %s OPTION\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+"Éxécuter la COMMANDe en ignorant les signaux hangup.\n"
+"\n"
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "tous les arguments sont ignorés"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr "échec d'ouverture de %s"
+
+#: src/nohup.c:161
+#, fuzzy, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "ajout à la sortie de %s"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr "échec de copie sur stderr lors de l'exécution de la fermeture "
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr "échec de redirection vers l'erreur standard"
+
+#: src/od.c:307
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Usage: %s [OPTION]... [FICHIER]...\n"
+" ou: %s [-abcdfilosx]... [FICHIER] [[+]DÉCALAGE[.][b]]\n"
+" ou: %s --traditional [OPTION]... [FICHIER] [[+]DÉCALAGE[.][b] [+]"
+"[ÉTIQUETTE][.][b]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"Afficher le contenu du FICHIER selon une représentation non ambiguë\n"
+"par un affichage des octets en octal par défaut sur la sortie standard.\n"
+"Sans FICHIER, ou quand FICHIER est -, lire de l'entrée standard.\n"
+"\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+"Tous les arguments obligatoires pour les options de formes longues\n"
+"le sont aussi pour les options de formes courtes.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=BASE afficher les octets selon un adressage\n"
+" relatif dans la BASE sélectionnée\n"
+" -j, --skip-bytes=N escamoter les N premiers octets de chaque\n"
+" fichier\n"
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=N limiter la vidange à N octets lus à l'entrée\n"
+" -s, --strings[=N] afficher les chaînes d'au moins N caractères "
+"graphiques\n"
+" -t, --format=TYPE sélectionner les formats de sortie\n"
+" -v, --output-duplicates ne pas utiliser * pour marquer la\n"
+" suppression de ligne\n"
+" -w, --width[=N] afficher N octets par ligne de sortie\n"
+" --traditional accepter les arguments selon la forme "
+"traditionnelle\n"
+
+#: src/od.c:337
+#, fuzzy
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"Les spécifications de format traditionnel peuvent être entremêlées;\n"
+"ils s'accumulent:\n"
+" -a identique à -t a, sélectionner les caractères nommés\n"
+" -b identique à -t o1, sélectionner les octets en octal\n"
+" -c identique à -t c, sélectionner les caractères ASCII ou\n"
+" les barres obliques inverses\n"
+" -d identique à -t u2, sélectionner les décimales non signées sur 2 "
+"octets\n"
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f identique à -t fF, identifier en nombre flottant\n"
+" -i identique à -t dI, identifier en entier décimal\n"
+" -l identique à -t dL, identifier en décimal long\n"
+" -o identique à -t o2, identifier en octal les unités de 2 octets\n"
+" -s identique à -t d2, identifier en décimal les unités de 2 octets\n"
+" -x identique à -t x2, identifier en hexadécimal les unités de 2 "
+"octets\n"
+
+#: src/od.c:353
+#, fuzzy
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"Si les formats du 1er et du second appel sont utilisés, le 2e format est "
+"assumé\n"
+"si la dernière opérande débute par + ou (si il y a 2 opérande) un chiffre.\n"
+"Une opérande de décalage décalage signifie -j SAUT. L'ÉTIQUETTE est une "
+"pseudo adresse\n"
+"du premier octet affiché est incrémentée lorsque la vidange s'effectue.\n"
+"Pour le DÉCALAGE et l'ÉTIQUETTE, un préfixe 0x ou 0X indique un format en "
+"hexadécimal,\n"
+"les suffixes peuvent être . pour l'octal et b pour un multiple de 512 "
+"octets.\n"
+"\n"
+"Le TYPE est composé d'une ou plusieurs des spécifications suivantes:\n"
+"\n"
+" a caractère nommé\n"
+" c caractère ASCII ou échappement de barre oblique inverse\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[N] décimal signé, N octets par entier\n"
+" f[N] point flottant, N octets par entier\n"
+" o[N] octal, N octets par entier\n"
+" u[N] décimal non signé N octets par entier\n"
+" x[N] hexadécimal, N octets par entier\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"N est un nombre. Le TYPE est soit d, o, u ou x, N peut être aussi C pour\n"
+"sizeof(char), S pour sizeof(short), I pour sizeof(int) ou L pour\n"
+"sizeof(long). Si le TYPE est f, N peut aussi être F pour sizeof(float),\n"
+"D pour sizeof(double) ou L pour sizeof(long double).\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"BASE est d pour décimal, o pour octal, x pour hexadécimal ou n pour aucun.\n"
+"OCTETS est de type hexadécimal si préfixé par 0x ou 0X, et est un\n"
+"multiple de 512 avec le suffixe b, de 1024 avec k et de 1048576 avec m.\n"
+"L'ajout du suffixe « z » à chacun de ces types affiche des caractères\n"
+"imprimables à la fin de chaque ligne sur la sortie."
+
+#: src/od.c:391
+#, fuzzy
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"--string sans être suivi d'un nombre implique 3. --width sans \n"
+"nombre implique 32. Par défaut, od utilise -A o -t d2 -w 16.\n"
+
+#: src/od.c:683 src/od.c:802
+#, c-format
+msgid "invalid type string %s"
+msgstr "type de chaîne %s invalide"
+
+#: src/od.c:693
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"type de chaîne %s invalide;\n"
+"ce système ne permet pas le type entier %lu-byte"
+
+#: src/od.c:812
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"type de chaîne invalide %s;\n"
+"ce système ne supporte pas le type en point flottant %lu-byte"
+
+#: src/od.c:871
+#, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "caractère « %c » est invalide dans le type de chaîne %s"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "Ne peut aller au delà de la fin combinée des fichiers."
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+"La base numérique de sortie est invalide « %c »:\n"
+"une seule des options doit être sélectionnée parmi les choix [doxn]."
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "Argument escamoté."
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "Argument limite."
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "Longueur minimum de la chaîne."
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "Spécification de la largeur."
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "Aucun type ne peut être spécifié lors de l'affichage brut des chaînes."
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr "Mode de compatibilité supporte au plus un fichier."
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr "octets escamotés + le nombre d'octets lus est trop grand"
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "AVERTISSEMENT: largeur invalide %lu; utilise %d à la place."
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: fmt=« %s » largeur=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "L'entrée standard est fermée."
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Coller séquentiellement les lignes correspondantes de chaque\n"
+"FICHIER, séparé par des tabulations, vers la sortie standard.\n"
+"Sans FICHIER, ou quand FICHIER est -, lire de l'entrée standard.\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=LISTE utiliser les caractères de la LISTE au lieu\n"
+" de tabulations\n"
+" -s, --serial copier un fichier à la fois au lieu de\n"
+" le faire en parallèle\n"
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Usage: %s [OPTION]... NOM...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+"Diagnostique un construit non portable selon le NOM.\n"
+"\n"
+" -p vérifier pour la plupart des système POSIX\n"
+" -P vérifier pour les noms vides et les \"-\" de tête\n"
+" --portability vérifier pour tous les systèmes POSIX (équivalent à -p "
+"-P)\n"
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr "`-' de tête dans un composante du nom de fichier %s"
+
+#: src/pathchk.c:206
+#, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "caractère non portable %s dans le nom du fichier %s"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr "nom de fichier vide"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr "%s: incapable de déterminer la longueur maximale d'un nom de fichier"
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr "la limite %lu est dépassée par la longueur %lu du nom de fichier %s"
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+"la limite %lu est dépassée par la longueur %lu du composant du nom de "
+"fichier %s"
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Nom du compte: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "En réalité: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Répertoire"
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Shell: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Projet: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "Plan:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Login"
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr "Nom"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr " TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Inactivité"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Quand"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Où"
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Usage: %s [OPTION]... [USAGER]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"\n"
+" -l afficher en format long\n"
+" -b omettre le répertoire d'attache de l'usager\n"
+" et son shell en format long\n"
+" -h omettre le fichier de projet de l'usager en\n"
+" format long\n"
+" -p omettre le fichier de plan de l'usager en\n"
+" format long\n"
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+" -f omettre la ligne de l'en-tête des colonnes\n"
+" en format court\n"
+" -w omettre le nom complet de l'usager en format court\n"
+" -i omettre le nom complet de l'usager et le nom de l'hôte\n"
+" en format court\n"
+" -q omettre le nom complet de l'usager, le nom de l'hôte\n"
+" et le temps d'inactivité en format court\n"
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+"\n"
+"Une version allégée du programme « finger »; afficher les informations "
+"relatives à un usager.\n"
+"Le fichier utmp sera %s.\n"
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr ""
+"aucun nom d'usager spécifié; au moins doit être spécifié lorsque -l est "
+"utilisée"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr "bornes de page"
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "« --pages=PREMIÈRE_PAGE[:DERNIÈRE_PAGE] » argument manquant"
+
+#: src/pr.c:916
+#, c-format
+msgid "Invalid page range %s"
+msgstr "bornes de pages invalides %s"
+
+#: src/pr.c:981
+#, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "« -l PAGE_LENGTH » nombre invalide de lignes: %s"
+
+#: src/pr.c:1005
+#, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "« -N NUMBER » nombre de début de ligne invalide: %s"
+
+#: src/pr.c:1017
+#, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "« -o MARGIN » saut de ligne invalide: %s"
+
+#: src/pr.c:1058
+#, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "« -w PAGE_WIDTH » nombre invalide de caractères: %s"
+
+#: src/pr.c:1072
+#, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "« -W PAGE_WIDTH » nombre invalide de caractères: %s"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "Ne peut spécifier le nombre de colonnes lorsqu'imprimant en parallèle."
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "Ne peut faire un affichage à la fois croisée et en parallèle."
+
+#: src/pr.c:1202
+#, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "« -%c': caractères superflus ou nombre invalide dans l'argument: %s"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "La largeur de page est trop petite."
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+"numéro %<PRIuMAX> de page de départ dépasse le compteur de page %<PRIuMAX>"
+
+#: src/pr.c:2406
+#, c-format
+msgid "Page number overflow"
+msgstr "débordement du nombre de pages"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr "Page %<PRIuMAX>"
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+"Paginer ou mettre en colonne les FICHIERS pour impression.\n"
+"\n"
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +PREMIÈRE_PAGE[:DERNIÈRE_PAGE], \n"
+" --pages=PREMIÈRE_PAGE[:DERNIÈRE_PAGE]\n"
+" débuter [stopper] l'impression à la PREMIÈRE_PAGE\n"
+" ou à la DERNIÈRE_PAGE\n"
+" -COLUMN\n"
+" --columns=COLONNES\n"
+" produire une sortie en COLONNES et imprimer les\n"
+" les colonnes vers le bas à moins que -a ne soit\n"
+" utilisé. Équilibrer le nombre de lignes de chaque\n"
+" colonne sur chaque page.\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across imprimer les colonnes horizontalement au lieu de\n"
+" verticalement, utilisé ensemble avec -COLUMN\n"
+" -c, --show-control-chars\n"
+" utiliser une notation par chapeau (^G) et octale\n"
+" avec barre oblique inverse\n"
+" -d, --double-space\n"
+" produire une sortie avec double espacement\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=FORMAT\n"
+" utiliser le FORMAT pour l'en-tête de la date\n"
+" -e[CAR[LARGEUR]], --expand-tabs[=CAR[LARGEUR]]\n"
+" faire l'expansion des CARactères (ou de tabulation)\n"
+" selon la LARGEUR de tabulation (par défaut 8)\n"
+" -F, -f,\n"
+" --form-feed\n"
+" utiliser des sauts de page au lieu des sauts de \n"
+" lignes pour séparer les pages (3 lignes par en-tête\n"
+" avec -f ou 5 lignes par en-tête et bas de page sans -"
+"f) \n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h EN-TÊTE, --header=EN-TÊTE\n"
+" centrer l'EN-TÊTE au lieu du nom de fichier dans\n"
+" l'en-tête de la page, \n"
+" -h \"\" imprime une ligne blanche.\n"
+" ne pas utiliser: -h\"\"\n"
+" -i[CAR[LARGEUR]], --output-tabs[=CAR[LARGEUR]]\n"
+" remplacer les blancs par des CARactères (ou\n"
+" de tabulation) selon la LARGEUR de tabulation (8 par "
+"défaut)\n"
+" -J, --join-lines\n"
+" faire la fusion des lignes pleines, inhiber la \n"
+" troncation des lignes -W, sans alignement des\n"
+" colonnes -s-sep-string[=CHAÎNE] initialise les "
+"séparateurs\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l LONGUEUR_DE_PAGE, --length LONGUEUR_DE_PAGE\n"
+" utiliser LONGUEUR_DE_PAGE au lieu de 66 lignes\n"
+" (par défaut de lignes est de 56 pour un texte,\n"
+" avec -f de 63)\n"
+" -m, --merge imprimer tous les fichiers en parallèle un par\n"
+" colonne, tronque les lignes, mais joint les\n"
+" lignes de pleine longueur avec -j\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n, --number-lines[=SÉP[CHIFFRES]]\n"
+" numéroter les lignes, par des CHIFFRES (5), suivi de\n"
+" SÉParateurs (TAB) par défaut le compteur débute\n"
+" avec la première ligne du fichier d'entrée\n"
+" -N, --first-line-number=VALEUR\n"
+" débuter le compteur avec la VALEUR avec la 1ère "
+"ligne\n"
+" de la 1ère page imprimée (voir +PREMIÈRE_PAGE)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o, --indent=MARGE\n"
+" débuter l'impression de chaque ligne après une\n"
+" MARGE d'espacement (n'affecte pas -w)\n"
+" -r, --no-file-warnings\n"
+" inhiber les avertissements lorsqu'un fichier\n"
+" ne peut être ouvert\n"
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[CAR], --separator[=CHAÎNE]\n"
+" séparer les colonnes à l'aide d'un simple CARactère\n"
+" par défaut le caractère de TABulation sans -w et 'no "
+"char»\n"
+" avec -w et -s[CAR] inhibe la troncation de ligne des "
+"3 colonnes\n"
+" options de 3 colonnes (-COLUMN|-a - COLUMN|-m) sauf "
+"si -w est utilisé\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -SSTRING, --sep-string[=CHAÎNE]\n"
+
+#: src/pr.c:2846
+#, fuzzy
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" séparer les colonnes à l'aide d'une CHAÎNE\n"
+" sans -S: le séparateur par défaut est <TAB> avec -J "
+"et <ESPACE>\n"
+" autrement (identique as -S« »), sans effet sur les "
+"options\n"
+" des colonnes\n"
+" -t, --omit-header\n"
+" inhiber l'en-tête et le bas de page\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" inhiber l'en-tête et le bas de page, éliminer\n"
+" les agencements de page par saut de page indiqués\n"
+" dans les fichiers d'entrée\n"
+" -v, --show-nonprinting\n"
+" utiliser la notation octale avec barre oblique\n"
+" inverse\n"
+" -w LARGEUR_DE_PAGE,\n"
+" --width=LARGEUR_DE_PAGE\n"
+" utiliser LARGEUR_DE_PAGE au lieu de 72 colonnes\\n\"\n"
+" tronquer les lignes (voir aussi l'option -j)\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W LARGEUR_DE_PAGE,\n"
+" --page-width=LARGEUR_DE_PAGE\n"
+" toujours utiliser une LARGEUR_DE_PAGE de 72 "
+"caractères,\n"
+" tronquer les lignes, sauf lorsque l'option -J est "
+"utilisée\n"
+" sans interférence avec -S ou -s\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"L'option -T est implicite lorsque -l N est utilisée et avec -f quand nn <= "
+"10\n"
+"ou <= 3. Sans FICHIER, ou quand FICHIER est -, lire de l'entrée standard.\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Usage: %s [VARIABLE]...\n"
+" ou: %s OPTION\n"
+"Si aucune VARIABLE d'environnement n'est spécifiée, les afficher toutes.\n"
+"\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+"AVERTISSEMENT: %s: caractère(s) suivant le caractère de constante ignoré(s)"
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" ou: %s OPTION\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+"Afficher les ARGUMENTS selon le FORMAT.\n"
+"\n"
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"\n"
+"Le FORMAT contrôle la sortie comme la fonction printf() en C.\n"
+"Les séquences interprétées sont:\n"
+"\n"
+" \\\" guillemets\n"
+" \\0NNN caractère ayant la valeur octale NNN (1 à 3 chiffres)\n"
+" \\\\ barre oblique inverse\n"
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+" \\a bip sonore d'alerte\n"
+" \\b retour arrière\n"
+" \\c ne pas afficher d'autres informations sur la sortie\n"
+" \\f saut de page\n"
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n saut de ligne\n"
+" \\r retour de chariot\n"
+" \\t tabulation horizontale\n"
+" \\v tabulation verticale\n"
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+" \\xHH caractère ayant la valeur hexadécimale HH (1 à 2 chiffres)\n"
+"\n"
+" \\uHHHH caractère Unicode (ISO/IEC 10646) ayant la valeur "
+"hexadécimale HHHH (4 chiffres)\n"
+" \\UHHHHHHHH caractère Unicode ayant la valeur hexadécimal HHHHHHHH (8 "
+"chiffres)\n"
+
+#: src/printf.c:129
+#, fuzzy
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+" %% le caractère simple %\n"
+" %b PARAMÈTRES comme une chaîne avec « \\ » d'échappement interprétés\n"
+"\n"
+"ainsi que toutes les spécifications de format en C se terminant par une des\n"
+"options suivantes diouxXfeEgGcs, avec un ARGUMENT\n"
+"converti au premier type approprié.\n"
+"Les largeurs variables de champ sont supportées.\n"
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: valeur numérique attendue."
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: valeur pas complètement convertie."
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "Nombre hexadécimal manquant dans l'échappement."
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "nom de caractère universel invalide \\%c%0*x"
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr "largeur de champ invalide: %s"
+
+#: src/printf.c:585
+#, c-format
+msgid "invalid precision: %s"
+msgstr "précision invalide: %s"
+
+#: src/printf.c:612
+#, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%.*s: spécification invalide de conversion"
+
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "AVERTISSEMENT: arguments superflus ignorés, débutant avec %s"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr "F. Pinard"
+
+#: src/ptx.c:422
+#, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (pour regexp %s)"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Usage: %s [OPTION]... [ENTRÉE]... (sans l'option -G)\n"
+" ou: %s -G [OPTION]... [ÉNTRÉE [SORTIE]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"Produire un index permuté, incluant le contexte des mots des fichiers "
+"d'entrée.\n"
+"\n"
+
+#: src/ptx.c:1894
+#, fuzzy
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference générer des références automatiquement\n"
+" -C, --copyright afficher les Droits d'auteur et les "
+"conditions\n"
+" de recopie\n"
+" -G, --traditional faire fonctionner « ptx » comme en System "
+"V\n"
+" -F, --flag-truncation=CHAÎNE utiliser la CHAÎNE pour indiquer la "
+"troncation\n"
+" des lignes\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=CHAÎNE nom de la macro à utiliser au lieu de « xx "
+"»\n"
+" -O, --format=roff générer la sortie comme des directives "
+"roff\n"
+" -R, --right-side-refs placer les références à droite, sans "
+"décompte -w\n"
+" -S, --sentence-regexp=REGEXP pour la fin des lignes ou des phrases\n"
+" -T, --format=tex générer la sortie comme des directives TeX\n"
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=REGEXP utiliser REGEXP pour établir la concordance "
+"avec chaque mot\n"
+" -b, --break-file=FICHIER utiliser les coupures de mots de ce "
+"FICHIER\n"
+" -f, --ignore-case ramener les minuscules en majuscules pour "
+"le trie\n"
+" -g, --gap-size=N espacer de N blancs les colonnes entre les "
+"champs\n"
+" -i, --ignore-file=FICHIER lire la liste des mots à ignorer de ce "
+"FICHIER\n"
+" -o, --only-file=FICHIER lire la liste des mots uniquement de ce "
+"FICHIER\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references donner la référence du 1er champ de chaque "
+"ligne\n"
+" -t, --typeset-mode - option non implanté -\n"
+" -w, --width=N largeur des colonnes, références exclues\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"Sans FICHIER, ou quand le FICHIER est -, lire de l'entrée standard. -F par "
+"défaut.\n"
+
+#: src/ptx.c:2016
+#, c-format
+msgid "invalid gap width: %s"
+msgstr "largeur de saut invalide: %s"
+
+#: src/ptx.c:2089
+#, fuzzy, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr "l'option --reply est désuète; utiliser -i ou -f à la place"
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+"Afficher le nom complet du fichier du répertoire courant.\n"
+"\n"
+
+#: src/pwd.c:160
+#, c-format
+msgid "failed to chdir to %s"
+msgstr "échec de chdir vers %s"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, c-format
+msgid "failed to stat %s"
+msgstr "échec d'évaluation par stat() de %s"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+"ne peut repérer l'entrée du répertoire dans %s concordant avec le inode"
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "rejet des arguments qui ne sont pas des options reconnues"
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Usage: %s [OPTION]... FICHIER\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+"Afficher la valeur d'un lien symbolique sur la sortie standard.\n"
+"\n"
+
+#: src/readlink.c:70
+#, fuzzy
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+" -f, --canonicalize canoniser en suivant chaque lien symbolique "
+"de\n"
+" chaque composant récursivement selon un "
+"chemin spécifié\n"
+" mais où le dernier composant doit exister\n"
+" -e, --canonicalize-existing canoniser en suivant tous les liens "
+"symboliques\n"
+" de chaque composant récursivement selon un "
+"chemin spécifié\n"
+" où tous les composants doivent exister\n"
+" -m, --canonicalize-missing canoniser en suivant tous les liens "
+"symboliques\n"
+" de chaque composant récursivement selon un "
+"chemin spécifié\n"
+" sans que tous les composants existent\n"
+" -n, --no-newline ne pas produire sur la sortie la nouvelle "
+"ligne\n"
+" -q, --quiet,\n"
+" -s, --silent supprimer la plupart des messages d'erreur\n"
+" -v, --verbose afficher les messages d'erreur\n"
+
+#: src/readlink.c:78
+#, fuzzy
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+" -f, --canonicalize canoniser en suivant chaque lien symbolique dans "
+"chacun\n"
+" des composants d'un chemin donné récursivement\n"
+" -n, --no-newline ne pas afficher de retour de chariot en suffixe\n"
+" -q, --quiet, \n"
+" -s, --silent supprimer la pluplart des messages d'erreur\n"
+" -v, --verbose rapporter les message d'erreur\n"
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "échec de chdir vers %s"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "ne peut ouvrir le répertoire %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, fuzzy, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "%s modifié par dev/ino"
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "ne peut créer le répertoire %s"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"AVERTISSEMENT: structure de répertoire circulaire.\n"
+"Cela signifie très certainement que votre système de fichiers est corrompu.\n"
+"AVISER VOTRE ADMINISTRATEUR SYSTÈME.\n"
+"Le répertoire suivant fait parti du cycle:\n"
+" %s\n"
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s: descendre dans un répertoire protégé en écriture %s?"
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s: descendre dans le répertoire %s?"
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: détruire un fichier protégé en écriture %s %s? "
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: détruire %s %s? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "détruire le répertoire: %s\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "échec de chdir vers %s"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "ne peut détruire le répertoire %s"
+
+#: src/remove.c:1450
+#, fuzzy, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "ne peut aller vers `..' à partir du répertoire %s"
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "ne peut détruire le répertoire %s"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "ne peut détruire le répertoire %s"
+
+#: src/remove.c:1558
+#, c-format
+msgid "cannot restore current working directory"
+msgstr "ne peut restaurer le répertoire courant de travail"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr "Essayer `%s ./%s' pour enlever le fichier %s.\n"
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Usage: %s [OPTION]... FICHIER...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --no-preserve-root ne pas traiter `/' de manière spéciale (par "
+"défaut)\n"
+" --preserve-root bloquer le traitement récursif sur `/'\n"
+" -r, -R, --recursive enlever le contenu des répertoires récursivement\n"
+" -v, --verbose expliquer ce qui vient d'être fait\n"
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+"\n"
+"Par défaut, rm n'enlève pas les répertoires. Utilisez l'option --recursive "
+"(-r ou -R)\n"
+"pour enlever les répertoires, ainsi que tout leur contenu.\n"
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"Pour enlever un fichier dont le nom début par « - », par exemple « -foo »,\n"
+"utiliser une de ces commandes:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"Noter que si vous utilisez « rm » pour détruire un fichier, il est "
+"habituellement possible\n"
+"de récupérer le contenu de ce fichier. Si vous désirez plus d'assurance à "
+"l'effet\n"
+"de ne pas pouvoir récupérer le contenu, considérez shred.\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: détruire %s %s? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "destruction du répertoire %s"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Usage: %s [OPTION]... RÉPERTOIRE...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"Enlever les RÉPERTOIRES, s'ils sont vides.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignorer les échecs qui sont causées uniquement\n"
+" en raison d'un répertoire qui n'est pas vide\n"
+
+#: src/rmdir.c:148
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents enlever le RÉPERTOIRE et ses parent (ie. `rmdir -p a/b/c' "
+"is\n"
+" identique à `rmdir a/b/c a/b a'.)\n"
+" -v, --verbose afficher un diagnostic pour chaque répertoire traité\n"
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Usage: %s [OPTION]... DERNIER\n"
+" ou: %s [OPTION]... PERMIER DERNIER\n"
+" ou: %s [OPTION]... PREMIER INCRÉMENT DERNIER\n"
+
+#: src/seq.c:79
+#, fuzzy
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"Afficher les nombres du PREMIER jusqu'au DERNIER,\n"
+"selon le PAS d'incrémentation.\n"
+"\n"
+" -f, --format FORMAT utiliser le style de FORMAT de printf(3)\n"
+" (par défaut: %g)\n"
+" -s, --separator CHAÎNE utiliser la CHAÎNE pour séparer les nombres\n"
+" (par défaut: \\n)\n"
+" -w, --equal-width équilibrer les largeurs en remplissant\n"
+" par des zéros de tête\n"
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"\n"
+"Si PREMIER ou PAS est omis, il prend la valeur 1 par défaut.\n"
+"La valeur PAS par défaut est 1 même lorsque DERNIER est plus petit que "
+"PREMIER.\n"
+"PREMIER, PAS et DERNIER sont valeurs interprétés en notation flottante.\n"
+"PAS est habituelement positif si PREMIER est plus petit que DERNIER et\n"
+"PAS est habituelement négatif si PREMIER est plus grand que DERNIER.\n"
+"Lorsque fourni, l'argument de FORMAT doit contenir exactement un format\n"
+"de style printf en notation flottante %e, %f, or %g.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "arguement en virgule flottante invalide: %s"
+
+#: src/seq.c:342
+#, c-format
+msgid "invalid format string: %s"
+msgstr "format de chaîne invalide: %s"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr ""
+"format de chaîne ne peut pas être spécifié quand l'impression est égal à la "
+"largeur des chaînes"
+
+#: src/setuidgid.c:51
+#, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Usage: %s NOM_D_USAGER COMMANDE [ARGUMENT]...\n"
+" ou: %s OPTION\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+"Délester tous groupes supplémentaires, assumer le user-ID et le group-ID de\n"
+"l'usager spécifique au NOM_DE_L'USAGER et exécuter la COMMANDE avec les "
+"ARGUMENTS spécifiés.\n"
+"Quitter avec le statut 111 si incapable d'assumer les UID et GID requis.\n"
+"Autrement quitter avec le statut d'exécution de la COMMANDE.\n"
+"Ce programme est utile lorsqu'exécuté par l'usager root (UID usager "
+"identique à zéro).\n"
+"\n"
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr "user-ID inconnu: %s"
+
+#: src/setuidgid.c:109
+#, c-format
+msgid "cannot set supplemental group"
+msgstr "ne peut fixer le groupe supplémentaire"
+
+#: src/setuidgid.c:114
+#, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "ne peut fixer le group-ID à %lu"
+
+#: src/setuidgid.c:118
+#, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "ne peut fixer le user-ID à %lu"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Usage: %s [OPTIONS] FICHIER [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"Écraser un fichier de façon répétitive, afin de rendre difficile\n"
+"toute récupération des données par du matériel même coûteux.\n"
+"\n"
+
+#: src/shred.c:174
+#, fuzzy, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force modifier les permissions pour permettre\n"
+" l'écriture si nécessaire\n"
+" -n, --iterations=N écraser N fois au lieu du nombre par défaut (%d)\n"
+" -s, --size=N déchiqueter N octets (les suffixes k, M, G sont "
+"acceptés)\n"
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove tronquer et détruire le fichier après l'avoir écraser\n"
+" -v, --verbose afficher un indicateur de progrès\n"
+" -x, --exact ne pas arrondir la taille des fichiers\n"
+" jusqu'au prochain bloc complet;\n"
+" comportement par défaut pour les fichiers non "
+"réguliers\n"
+" -z, --zero ajouter une réécriture finale avec des zéros\n"
+" pour camoufler le déchiquetage du fichier\n"
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"Si le FICHIER est -, déchiqueter à partir de l'entrée standard.\n"
+"\n"
+"Détruire le FICHIER si --remove (-u) est spécifié. Le défaut est de ne pas "
+"détruire\n"
+"les fichiers parce qu'il est commun d'opérer sur le fichier du périphérique "
+"comme /dev/hda,\n"
+"et habituellement ces fichiers ne sont pas détruits. Sur des fichier "
+"réguliers,\n"
+"la plupart des gens utilise l'option --remove.\n"
+"\n"
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"ATTENTION: noter que shred s'appuie sur l'importante supposition que \n"
+"le système de fichiers écrasera les données en place. Cela est la manière\n"
+"traditionnelle de faire les choses, mais plusieurs systèmes modernes\n"
+"de fichiers ne se satisfont pas de cette supposition. Les exemples suivants "
+"de systèmes\n"
+"de fichiers sont ceux où le déchiquetage n'est pas effectif dans tous les "
+"modes de systèmes de fichiers:\n"
+"\n"
+
+#: src/shred.c:207
+#, fuzzy
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"* systèmes de fichiers à journalisation ou à structure de journalisation \n"
+" comme ceux fournis avec AIX et Solaris (et JFS, ReiserFS, XFS, Ext3, "
+"etc.)\n"
+"\n"
+"* systèmes de fichiers avec écriture redondante et soutenant les écritures\n"
+" même lorsqu'il y a erreur d'écriture comme sur les systèmes de fichiers "
+"RAID\n"
+"\n"
+"* systèmes de fichiers qui prennent des instantanés, comme\n"
+" le serveur NFS de Network Appliance\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+#, fuzzy
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+"* systèmes de fichier qui ont une cache dans une localisation temporaire tel "
+"que\n"
+" la version 3 du client de NFS\n"
+"\n"
+"* systèmes de fichier compressés\n"
+"\n"
+"Dans le cas du système de fichier ext3, la déclaration ci-avant s'applique\n"
+"(et shred a une efficacité limitée) seulement en mode data=journal,\n"
+"juste aux métadonnées du fichier de journal . Dans les autres modes\n"
+"data=ordered (par défaut) et data=writeback, shred travaille comme "
+"d'habitude.\n"
+"Les modes de journalisation Ext3 peuvent être changé en ajoutant l'option "
+"data=something\n"
+"au options de montage pour un système de fichiers particuliers dans le "
+"fichier /etc/fstab,\n"
+"tal que documenté dans la man page de mount (man mount).\n"
+"\n"
+"En plus, l'archivage des système de fichiers et les miroirs à distance "
+"peuvent contenir des copies\n"
+"des fichiers qui ne peuvent être enlevés et qui permettron à un fichier "
+"mutilé d'être\n"
+"récupérés plus tard.\n"
+
+#: src/shred.c:234
+#, fuzzy
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+"* systèmes de fichiers qui utilisent une cache des localisations "
+"temporaires,\n"
+" comme le client NFS version 3\n"
+"\n"
+"* systèmes de fichiers compressés\n"
+"\n"
+"Il faut ajouter que l'archivage des systèmes de fichiers et systèmes miroirs "
+"distants peuvent\n"
+"contenir des copies de fichiers qui n'ont pas été détruits et qui "
+"permettraient qu'un\n"
+"fichier déchiqueté soit récupéré ultérieurement.\n"
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr "%s: échec de fdatasync"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr "%s: échec de fsync"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s: ne peut rembobiner"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: pass %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s: erreur d'écriture au décalage %s"
+
+#: src/shred.c:478
+#, c-format
+msgid "%s: lseek failed"
+msgstr "%s: échec de lseek"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s: fichier trop gros"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: passes %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: passes %lu/%lu (%s)...%s/%s %d%%"
+
+#: src/shred.c:776
+#, c-format
+msgid "%s: fstat failed"
+msgstr "%s: échec de fstat"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: type de fichier invalide"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: le fichier a une taille négative."
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s: erreur de troncation"
+
+#: src/shred.c:889
+#, c-format
+msgid "%s: fcntl failed"
+msgstr "%s: échec de fcntl"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s: ne peut déchiqueter "
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "destruction de « %s »"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: renommé à %s"
+
+#: src/shred.c:1018
+#, c-format
+msgid "%s: failed to remove"
+msgstr "%s: échec à enlever"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: détruit"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, c-format
+msgid "%s: failed to close"
+msgstr "%s: échec de fermeture"
+
+#: src/shred.c:1065
+#, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: échec d'ouverture en écriture"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: nombre de passes invalide"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "multiples formats de fichiers de sortie spécifiés"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: longueur de fichier invalide"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Usage: %s [OPTION]... DERNIER\n"
+" ou: %s [OPTION]... PERMIER DERNIER\n"
+" ou: %s [OPTION]... PREMIER INCRÉMENT DERNIER\n"
+
+#: src/shuf.c:57
+#, fuzzy
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"Afficher la concaténation triée de tous les FICHIERS sur la sortie "
+"standard.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "options multiples -l ou -t spécifiées"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "fanion d'entrée invalide: %s"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "largeur de ligne invalide: %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr "options multiples fichiers de sortie spécifiées"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "ne peut combiner les options mode et --reference"
+
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr "opérande surnuméraire %s"
+
+#: src/sleep.c:47
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Usage: %s NOMBRE[SUFFIXE]...\n"
+" ou: %s OPTION\n"
+"Effectuer une pause de NOMBRE de secondes. Le SUFFIXE peut être « s » pour "
+"des\n"
+"secondes (par défaut), « m » pour des minutes, « h » pour des heures ou « d "
+"»\n"
+"pour des jours. Contrairement à la plupart des implantations qui requierent "
+"un\n"
+"nombre entier, ici le NOMBRE peut être un nombre arbitraire en virgule "
+"flottante.\n"
+"\n"
+
+#: src/sleep.c:138
+#, c-format
+msgid "invalid time interval %s"
+msgstr "intervalle de temps invalide %s"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "ne peut lire l'horloge en temps réel"
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"Afficher la concaténation triée de tous les FICHIERS sur la sortie "
+"standard.\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+"Options de tri:\n"
+"\n"
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks ignorer les blancs de tête\n"
+" -d, --dictionary-order considérer seulement les blancs et les "
+"caractères alphanumériques\n"
+" -f, --ignore-case suivre les caractères minuscules et "
+"majuscules\n"
+
+#: src/sort.c:326
+#, fuzzy
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort comparer selon la valeur numérique des "
+"caractères\n"
+" -i, --ignore-nonprinting considérer seulement les caractères "
+"imprimables\n"
+" -M, --month-sort comparer (inconnu) < « JAN » < ... < « DÉC »\n"
+" -n, --numeric-sort comparer selon la valeur numérique de la "
+"chaîne\n"
+" -r, --reverse afficher dans l'ordre inverse le résultat\n"
+"\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+#, fuzzy
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+"Autres options:\n"
+"\n"
+" -c, --check vérifier si l'entrée est triée; ne pas trier\n"
+" -k, --key=POS1[,POS2] débuter avec la clé à la POS1, terminer à POS2 "
+"(origine 1)\n"
+" -m, --merge faire la fusion des fichiers déjà triés; ne pas "
+"trier\n"
+" -o, --output=FICHIER écrire le résultat dans le FICHIER au lieu de la "
+"sortie standard\n"
+" -s, --stable stabiliser le tri en inhibant la comparaison de "
+"dernier recours\n"
+" -S, --buffer-size=TAILLE utiliser la TAILLE pour le tampon mémoire "
+"principal\n"
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=SEP utiliser le SÉParateur au lieu de non-blanc "
+"pour les transitions d'espace\n"
+" -T, --temporary-directory=RÉP utiliser le RÉPertoire pour les fichiers "
+"temporaires, non pas $TMPDIR ou %s\n"
+" avec options multiples pour spécifier de "
+"multiples répertoires\n"
+" -u, --unique avec -c: vérifier l'ordonnancement strict\n"
+" sans -c: afficher les premiers d'une passe "
+"équivalente\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -z, --zero-terminated terminer les lignes avec l'octet 0, \n"
+" et non pas par un retour de chariot\n"
+
+#: src/sort.c:363
+#, fuzzy
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"POS est F[.C][OPTS], où F est le numéro du champ et C le caractère de la\n"
+"position dans le champ. OPTS se compose d'une ou plusieurs lettres "
+"simples,\n"
+"laquelle écrase l'ordonnancement global pour cette clé.\n"
+"Si aucune clé n'est donnée, la ligne entière est utilisée comme clé.\n"
+"\n"
+"TAILLE peut être suivi d'un des suffixe multiplicatif suivant:\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"% 1% de mémoire, b 1, k 1024 (par défaut), et ainsi de suite pour M, G, T, "
+"P, E, Z, Y.\n"
+"\n"
+"Sans FICHIER, ou quand FICHIER est -, lire de l'entrée standard.\n"
+"\n"
+"*** AVERTISSEMENT ***\n"
+"La localisation utilisée dans l'environnement affecte l'ordre du tri.\n"
+"Utiliser LC_ALL=C pour obtenir un tri selon un ordre traditionnel qui "
+"utilise la valeur\n"
+"native des octets.\n"
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "écriture vers %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "Ne peut créer de fichier temporaire"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "Échec d'ouverture"
+
+#: src/sort.c:758
+msgid "fflush failed"
+msgstr "échec de fflush"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "Échec de fermeture"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "Échec d'ouverture"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr ""
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "Ne peut créer de fichier temporaire"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "Ne peut créer de fichier temporaire"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr ""
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "ne peut créer le répertoire %s"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "Echec d'écriture."
+
+#: src/sort.c:975
+#, c-format
+msgid "warning: cannot remove: %s"
+msgstr "AVERTISSEMENT: ne peut enlever: %s"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "taille du tri"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "Échec de stat()"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "Échec de lecture"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: désordre: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "erreur standard"
+
+#: src/sort.c:2562
+#, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: spécification invalide du champ %s"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: compteur invalide au départ de %s"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "nombre invalide après « - »"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "nombre invalide après « . »"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "caractère égaré dans le champ de spécification"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "multiples formats de fichiers de sortie spécifiés"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "nombre invalide dans le champ de départ"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "numéro de champ est zéro"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "adresse relative du caractère est zéro"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "nombre invalide après « , »"
+
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "opérande surnuméraire « %s » non permise avec -c"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Usage: %s [OPTION] [ENTRÉE [PRÉFIXE]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"Afficher sur la sortie des morceaux de l'ENTRÉE de taille fixe selon\n"
+"PRÉFIXEaa, PRÉFIXEab, ...; par défaut la taille est de 1000 lignes et\n"
+"le préfixe par défaut est « x ».\n"
+"Sans ENTRÉE ou quand l'ENTRÉE est -, la lecture se fait sur l'entrée "
+"standard.\n"
+"\n"
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=N utiliser les suffixes de longueur N (par défaut %"
+"d)\n"
+" -b, --bytes=N écrire N octets par fichier de sortie\n"
+" -C, --line-bytes=N écrire au plus N octets par ligne\n"
+" par fichier de sortie\n"
+" -d, --numeric-suffixes utiliser des suffixess numériques au lieu "
+"d'alphabétiques\n"
+" -l, --lines=N écrire N lignes par fichier de sortie\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose afficher un diagnostic sur la sortie standard "
+"d'erreur\n"
+" juste avant l'ouverture du fichier de sortie\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"La TAILLE peut être suivie d'un suffixe multiplicateur:\n"
+"b pour 512, k pour 1K, m pour 1 Meg.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "Produire les suffixes des fichiers épuisés"
+
+#: src/split.c:211
+#, c-format
+msgid "creating file %s\n"
+msgstr "création du fichier %s\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "Ne peut segmenter plus d'une façon."
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: longueur de suffixe invalide"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: nombre d'octets invalide."
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: nombre de lignes invalide."
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "l'option compteur de ligne -%s%c est trop grande"
+
+#: src/split.c:518
+#, c-format
+msgid "invalid number of lines: 0"
+msgstr "nombre invalide de lignes: 0"
+
+#: src/stat.c:636
+#, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "AVERTISSEMENT: séquence d'échappement non reconnue `\\%c'"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%s%s: directive invalide"
+
+#: src/stat.c:726
+#, c-format
+msgid "warning: backslash at end of format"
+msgstr "AVERTISSEMENT: barre oblique inverse invalide à la fin du format"
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr "ne peut lire les informations du système de fichier pour %s"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Usage: %s [OPTION] FICHIER...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+"Afficher l'état d'un fichier ou d'un système de fichiers.\n"
+"\n"
+" -L, --dereference suivre les liens\n"
+" -f, --file-system afficher l'état du système de fichiers au lieu de "
+"l'état du fichier\n"
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+" -c --format=FORMAT utiliser le FORMAT spécifié au lieu de celui par "
+"défaut;\n"
+" afficher un saut de ligne après l'utilisation du "
+"FORMAT\n"
+" --printf=FORMAT identique à --format mais interprète les séquences "
+"d'échappements,\n"
+" et ne fait pas l'affichage d'un saut de ligne.\n"
+" Si vous désiréz un saut de ligne, inclure \\n dans "
+"le FORMAT.\n"
+" -t, --terse afficher l'information dans un format "
+"compréhensible\n"
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"\n"
+"Le format valide pour les séquences des fichiers (sans --file-system):\n"
+"\n"
+" %a afficher les droits d'accès en octal\n"
+" %A afficher les droits d'accès en format lisible pour un humain\n"
+" %b nombre de blocs alloués (voir %B)\n"
+" %B la taille en octets de chaque bloc rapporté par `%b'\n"
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+" %d numéro de périphérique en décimal\n"
+" %D numéro de périphéque en hexadécimal\n"
+" %f mode brut en hexadécimal\n"
+" %F type de fichier\n"
+" %g identificateur de groupe du propriétaire\n"
+" %G nom de groupe du propriétaire\n"
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+" %h - nombre de liens directs (hard)\n"
+" %i - numéro d'inode\n"
+" %n - nom de fichier\n"
+" %N - nom de fichier en citation avec référence si avec lien symbolique\n"
+" %o - taille de bloc d'entrée/sortie\n"
+" %s - taille totale, en octets\n"
+" %t - type majeur de périphérique en hexadécimal\n"
+" %T - type mineur de périphérique en hexadécimal\n"
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+" %u - identificateur du propriétaire\n"
+" %U - nom de l'usager du propriétaire\n"
+" %x - date du dernier accès\n"
+" %X - date du dernier accès en seconded depuis l'Époque\n"
+" %y - date de la dernière modification\n"
+" %Y - date de la dernière modification en secondes depuis l'Époque\n"
+" %z - date du dernier changement\n"
+" %Z - date du dernier changement en secondes depuis l'Époque\n"
+"\n"
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"Séquences valides de format pour les systèmes de fichiers:\n"
+"\n"
+" %a blocs lilbres disponibles pour un non super-usager\n"
+" %b total du blocs de données dans le systèmes de fichiers\n"
+" %c total de noeuds de fichiers dans le système de fichiers\n"
+" %d noeuds de fichiers libres dans le système de fichiers\n"
+" %f blocs libres dans le système de fichiers\n"
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+" %i identificateur du sytème de fichiers en hexadécimal\n"
+" %l longueur maximum des noms de fichiers\n"
+" %n nom de fichier\n"
+" %s taille optimale de bloc de transfert\n"
+" %S taille fondamentale de bloc (pour le décompte de blocs)\n"
+" %t afficher en hexadécimal\n"
+" %T afficher en format lisible pour un humain\n"
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Usage: %s [-F PÉRIPHÉRIQUE] [--file=PÉRIPHÉRIQUE] [SÉLECTION]...\n"
+" ou: %s [-F PÉRIPHÉRIQUE] [--file=PÉRIPHÉRIQUE] [-a|--all]\n"
+" ou: %s [-F PÉRIPHÉRIQUE] [--file=PÉRIPHÉRIQUE] [-g|--save]\n"
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Afficher ou modifier les caractéristiques du terminal.\n"
+"\n"
+" -a, --all afficher toutes les caractéristiques courantes dans\n"
+" un format humainement lisible\n"
+" -g, --save afficher toutes les caractéristiques dans un format\n"
+" lisible par « stty »\n"
+" -F, --file=PÉRIPHÉRIQUE\n"
+" utiliser le périphérique spécifié au lieu de stdin\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+"\n"
+"Un « - » optionnel avant SÉLECTION indique une négation. Un * indique une\n"
+"SÉLECTION non-POSIX. Le système détermine les options applicables.\n"
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"\n"
+"Caractères spéciaux:\n"
+"* dsusp CAR CAR émettra un signal d'arrêt de terminal une\n"
+" fois le tampon d'entrée vidé\n"
+" eof CAR CAR transmettra une fin de fichier\n"
+" (pour stopper l'ingestion à l'entrée)\n"
+" eol CAR CAR terminera la ligne\n"
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+"* eol2 CAR CAR servira de caractère alternatif de fin de ligne\n"
+" erase CAR CAR servira de touche d'effacement sur le dernier\n"
+" caractère entrée\n"
+" intr CAR CAR transmettra un signal d'interruption\n"
+" kill CAR CAR effacera la ligne courante\n"
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+"* lnext CAR CAR entrera le prochain caractère entre guillemets\n"
+" quit CAR CAR transmettra un signal de fin\n"
+"* rprnt CAR CAR servira à ré-afficher la dernière ligne\n"
+" start CAR CAR permettra la poursuite de l'affichage de\n"
+" sortie après avoir été stoppé\n"
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+" stop CAR CAR stoppera l'affichage de sortie\n"
+" susp CAR CAR transmettra un signal d'arrêt de terminal\n"
+"* swtch CAR CAR permettra de passer à une couche différente de shell\n"
+"* werase CAR CAR effacera le dernier mot tapé\n"
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"\n"
+"Configurations spéciales:\n"
+" N initialiser les vitesses d'entrée et de sortie à N bauds\n"
+"* cols N indiquer au kernel que le terminal a N colonnes\n"
+"* columns N identique à cols N\n"
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+" ispeed N initialiser la vitesse d'entrée à N\n"
+"* line N utiliser le conditionnement propre de la ligne N\n"
+" min N avec -icanon, initialiser à N le nombre de caractères\n"
+" nécessaires pour obtenir une lecture complète\n"
+" ospeed N initialiser la vitesse de sortie à N\n"
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+"* rows N indiquer au kernel que le terminal a N lignes\n"
+"* size afficher le nombre de lignes et de colonnes\n"
+" selon les paramètres du kernel\n"
+" speed afficher la vitesse du terminal\n"
+" time N avec -icanon, initialiser le délai\n"
+" d'inactivité de lecture à N dizièmes de seconde\n"
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"\n"
+"Configurations de contrôle:\n"
+" [-]clocal inhiber les signaux de contrôle du modem\n"
+" [-]cread autoriser la réception sur l'entrée\n"
+"* [-]crtscts autoriser RTS/CTS handshaking\n"
+" csN initialiser la taille des caractères à N bits,\n"
+" N variant entre [5..8]\n"
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+" [-]cstopb utiliser 2 bits d'arrêt par caractère (un avec « - »)\n"
+" [-]hup transmettre un signal de raccrochement quand le\n"
+" dernier processus ferme le lien tty\n"
+" [-]hupcl identique à [-]hup\n"
+" [-]parenb génèrer le bit de parité pour la sortie et\n"
+" traiter l'entrée avec un bit de parité implicite\n"
+" [-]parodd utiliser une parité impaire (paire avec « - »)\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"\n"
+"Configurations d'entrée:\n"
+" [-]brkint le « break » provoque un signal d'interruption\n"
+" [-]icrnl traduire le retour de chariot en saut de ligne\n"
+" [-]ignbrk ignorer le caractère break\n"
+" [-]igncr ignorer le retour de chariot\n"
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+" [-]ignpar ignorer les caractères ayant des erreurs de parité\n"
+"* [-]imaxbel indiquer par un bip sonore et ne pas vider le tampon\n"
+" d'entrée lors de l'arrivée d'un caractère\n"
+" [-]inlcr traduire le saut de ligne en retour de chariot\n"
+" [-]inpck autoriser la vérification de la parité à l'entrée\n"
+" [-]istrip mettre à zéro le bit du haut (8e) d'un caractère de "
+"l'entrée\n"
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+" * [-]iutf8 assumer que les caractères d'entrées sont encodés en UTF-8\n"
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+"* [-]iuclc traduire les majuscles en minuscules\n"
+"* [-]ixany permettre à n'importe quel caractère de relancer "
+"l'affichage\n"
+" sur la sortie, pas uniquement le caractère de redémarrage\n"
+" [-]ixoff autoriser l'envoie d'un caractère d'arrêt/départ\n"
+" [-]ixon autoriser le contrôle de flux XON/XOFF\n"
+" [-]parmrk indiquer les erreur de parité par une séquence\n"
+" de caractères (255-0)\n"
+" [-]tandem identique à [-]ixoff\n"
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"\n"
+"Configurations de sortie:\n"
+"* bsN style du délai de retour arrière, N parmi [0..1]\n"
+"* crN style du délai du retour de chariot, N parmi [0..3]\n"
+"* ffN style du délai du saut de page, N parmi [0..1]\n"
+"* nlN style du délai du saut de ligne, N parmi [0..1]\n"
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+"* [-]ocrnl traduire un retour de chariot par un saut de ligne\n"
+"* [-]ofdel utiliser des caractères d'effacement comme caractère\n"
+" de remplissage au lieu de caractères nuls\n"
+"* [-]ofill utiliser le remplissage de caractères au lieu du délai\n"
+" par minuterie\n"
+"* [-]olcuc traduire les minuscules en majuscules\n"
+"* [-]onlcr traduire le saut de ligne en retour de chariot-saut de "
+"ligne\n"
+"* [-]onlret le saut de ligne provoque un retour de chariot\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+"* [-]onocr ne pas afficher un retour de chariot en première colonne\n"
+" [-]opost exécuter un post-traitement de sortie\n"
+"* tabN style du délai de tabulation horizontale, N parmi [0..3]\n"
+"* tabs identique à tab0\n"
+"* -tabs identique à tab3\n"
+"* vtN style du délai de tabulation verticale, N parmi [0..1]\n"
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"\n"
+"Configurations locales:\n"
+" [-]crterase faire l'écho du caractère « erase » selon la séquence\n"
+" retour arrière-espace-retour arrière\n"
+"* crtkill annuler les ligne respectant la configuration\n"
+" « echoprt » et « echoe »\n"
+"* -crtkill annuler les lignes respectant la configuration\n"
+" « echoctl » et « echok »\n"
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+"* [-]ctlecho faire l'écho des caractères de contrôle par une notation\n"
+" en chapeau (« ^c »)\n"
+" [-]echo faire l'écho des caractères à l'entrée\n"
+"* [-]echoctl identique à [-]ctlecho\n"
+" [-]echoe identique à [-]crterase\n"
+" [-]echok faire l'écho d'un saut de ligne après un caractère "
+"d'annulation\n"
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+"* [-]echoke identique à [-]crtkill\n"
+" [-]echonl faire l'écho d'un saut de ligne même s'il n'y pas\n"
+" d'écho des autres caractères\n"
+"* [-]echoprt faire l'écho des caractères d'effacement par retour "
+"arrière,\n"
+" entre « \\ » et « / »\n"
+" [-]icanon autoriser les caractères spéciaux\n"
+" « erase », « kill », « werase », et « rprnt »\n"
+" [-]iexten autoriser les caractères spéciaux non-POSIX\n"
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+" [-]isig autoriser les caractères spéciaux\n"
+" « interrupt », « quit », et « suspend »\n"
+" [-]noflsh inhiber la vidange après réception des caractères\n"
+" « interrupt » et « quit »\n"
+"* [-]prterase identique à [-]echoprt\n"
+"* [-]tostop stopper les tâches d'arrière plan qui essaient d'écrire\n"
+" sur le terminal\n"
+"* [-]xcase avec « icanon », faire l'échappement avec « \\ »\n"
+" pour les majuscules\n"
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+"\n"
+"Configuration par combinaison:\n"
+"* [-]LCASE identique à [-]lcase\n"
+" cbreak identique à -icanon\n"
+" -cbreak identique à icanon\n"
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+" cooked identique à brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof et eol selon leur valeur par défaut\n"
+" -cooked identique à raw\n"
+" crt identique à echoe echoctl echoke\n"
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+" dec identique à echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+"* [-]decctlq identique à [-]ixany\n"
+" ek réinitialiser les caractères erase et kill à leur valeur\n"
+" par défaut\n"
+" evenp identique à parenb -parodd cs7\n"
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+" -evenp identique à -parenb cs8\n"
+"* [-]lcase identique à xcase iuclc olcuc\n"
+" litout identique à -parenb -istrip -opost cs8\n"
+" -litout identique à parenb istrip opost cs7\n"
+" nl identique à -icrnl -onlcr\n"
+" -nl identique à icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+" oddp identique à parenb parodd cs7\n"
+" -oddp identique à -parenb cs8\n"
+" [-]parity identique à [-]evenp\n"
+" pass8 identique à -parenb -istrip cs8\n"
+" -pass8 identique à parenb istrip cs7\n"
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+" raw identique à -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 fois 0\n"
+" -raw identique à cooked\n"
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+" sane identique à cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, tous les "
+"caractères\n"
+" spéciaux avec leur valeur par défaut.\n"
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"Prendre en charge la ligne « tty » reliée à l'entrée standard. Sans "
+"argument,\n"
+"afficher la vitesse, le conditionnement de ligne et les modifications "
+"appliquées\n"
+"par 'stty sane'. Dans les configurations,\n"
+"CARactère est pris littéralement, ou codé comme ^c, 0x37, 0177 ou 127;\n"
+"les valeurs spéciales comme ^- ou indéfinies sont utilisées pour inhiber\n"
+"les caractères spéciaux.\n"
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr "un seul périphérique peut être spécifié"
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+"les options pour le mode bavard et les styles de sortie de stty-readable\n"
+"sont mutuellement exclusives"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr ""
+"Lors de la spécification d'un style de sortie, \n"
+"les mode peuvent ne pas être initialisés."
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: n'a pu réinitialiser en mode non par bloc"
+
+#: src/stty.c:885 src/stty.c:995
+#, c-format
+msgid "invalid argument %s"
+msgstr "argument invalide %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, c-format
+msgid "missing argument to %s"
+msgstr "argument manquant pour %s"
+
+#: src/stty.c:976
+#, c-format
+msgid "invalid line discipline %s"
+msgstr "discipline de ligne invalide %s"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: incapable d'exécuter toutes les opérations demandées."
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "new_mode: mode\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: aucune information sur la taille pour ce périphérique."
+
+#: src/stty.c:1888
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "argument numérique invalide %s"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Mot de passe:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass(): ne peut ouvrir /dev/tty"
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "ne peut initialiser les groupes"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "ne peut initialiser l'identificateur de groupe"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "ne peut initialiser l'identificateur de l'usager"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Usage: %s [OPTION]... [-] [USAGER [ARG]...]\n"
+
+#: src/su.c:386
+#, fuzzy
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Modifier les identificateurs effectifs de l'usager et de groupe comme\n"
+"étant ceux de l'USAGER.\n"
+"\n"
+" -, -l, --login utiliser ce shell comme étant celui de\n"
+" la session de travail\n"
+" -c, --commmand=COMMANDE passer la COMMANDE au shell avec -c\n"
+" -f, --fast passer -f au shell (valable pour csh ou "
+"tcsh)\n"
+" -m, --preserve-environment ne pas réinitialiser les variables\n"
+" d'environnement\n"
+" -p identique à -m\n"
+" -s, --shell=SHELL lancer le SHELL si /etc/shells le permet\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+"\n"
+"Un tiret - implique -l. Si l'argument USAGER n'est pas fourni,\n"
+"l'usager « root » est utilisé.\n"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "L'usager %s n'existe pas."
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "Mot de passe incorrect."
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "Utilisation du shell %s restreint."
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "AVERTISSEMENT: ne peut changer de répertoire vers %s"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Imprimer la somme de contrôle et le nombre de blocs pour chaque FICHIER.\n"
+"\n"
+" -r annuler -s et utiliser l'algorithme de sommation BSD\n"
+" avec des blocs de 1K octets\n"
+" -s, --sysv utiliser l'algorithme de sommation du Système V\n"
+" avec des blocs de 512 octets\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+"Forcer l'écriture des blocs modifiés sur disque et\n"
+"la mise à jour du super bloc.\n"
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "tous les arguments sont ignorés"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+"\n"
+"NOTE: votre shell peut avoir sa propre version de %s, lequel habituellement "
+"remplace\n"
+"la version décrite ici. SVP référer à la documentation de votre shell\n"
+"pour les détail concernant les options supportées.\n"
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help afficher l'aide-mémoire\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version afficher le nom et la version du logiciel\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Écrire chaque FICHIER sur la sortie standard, la dernière ligne en premier.\n"
+"Sans FICHIER, ou quand FICHIER est -, lire de l'entrée standard.\n"
+"\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before placer le séparateur avant plutôt qu'après\n"
+" -r, --regex interpréter le séparateur comme une expression\n"
+" régulière\n"
+" -s, --separator=CHAÎNE utiliser la CHAÎNE comme séparateur au lieu\n"
+" du saut de ligne\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, c-format
+msgid "%s: seek failed"
+msgstr "%s: échec de repérage (seek)"
+
+#: src/tac.c:265
+#, c-format
+msgid "record too large"
+msgstr "enregistrement trop grand"
+
+#: src/tac.c:459
+#, c-format
+msgid "cannot create temporary file %s"
+msgstr "ne peut créer le fichier temporaire %s"
+
+#: src/tac.c:466
+#, c-format
+msgid "cannot open %s for writing"
+msgstr "ne peut ouvrir %s en écriture"
+
+#: src/tac.c:487 src/tac.c:494
+#, c-format
+msgid "%s: write error"
+msgstr "%s: erreur d'écriture."
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "Le séparateur ne peut être vide."
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Afficher les %d dernières lignes de chaque FICHIER sur la sortie standard.\n"
+"Avec plus d'un fichier FICHIER, précéder chacun d'une en-tête donnant le "
+"nom.\n"
+"Sans FICHIER, ou quand FICHIER est -, lire de l'entrée standard.\n"
+"\n"
+
+# src/tail.c:250
+#: src/tail.c:229
+#, fuzzy
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry continuer de tenter d'ouvrir le fichier même "
+"s'il\n"
+" est inaccessible lorsque tail démarre ou s'il "
+"devient\n"
+" inaccessible plus tard;\n"
+" utile seulement lors de la poursuite par nom\n"
+" -c, --bytes=N afficher les N derniers octets\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={nom|descripteur}]\n"
+" afficher les dernières données ajoutées tant\n"
+" que le fichier s'accroît; -f, --follow, et\n"
+" --follow=descripteur sont équivalents\n"
+" -F identique à --follow=nom --retry\n"
+
+#: src/tail.c:244
+#, fuzzy, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=N afficher les N dernièreslignes, au lieu des %d\n"
+" --max-unchanged-stats=N\n"
+" avec l'option --follow=nom, le FICHIER qui n'a "
+"pas\n"
+" changé de taille après N itérations (par défaut %"
+"d)\n"
+" afin de vérifier s'il a été détruit ou s'il a "
+"changé\n"
+" de nom (c'est le cas habituellement des fichiers\n"
+" de journalisation dont on fait la rotation)\n"
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID avec -f, terminer après le processus ID, PID est "
+"arrêté\n"
+" -q, --quiet, --silent ne jamais afficher l'en-tête avec\n"
+" les noms de fichiers\n"
+" -s, --sleep-interval=S avec -f, attendre S secondes (1.0 par défaut)\n"
+" entre les itérations\n"
+" -v, --verbose toujours afficher les en-têtes des noms de "
+"fichier\n"
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"Si le premier caractère de N (le nombre d'octets ou de lignes) est un « + "
+"»,\n"
+"afficher à partir du Nième items depuis le début de chaque fichier,\n"
+"autrement, afficher les derniers N items du fichier.\n"
+"N peut avoir un suffixe multiplicateur:\n"
+"b pour 512, k pour 1024, m pour 1024*1024.\n"
+
+# src/tail.c:290
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"Avec l'option --follow (-f), tail utilise par défaut le descripteur de "
+"fichier\n"
+"qui permet de suivre l'évolution du fichier ciblé même s'il change de nom.\n"
+"Tail continuera de suivre l'évolution du fichier jusqu'à la fin. "
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"Ce comportement par défaut n'est pas désirable lorsqu'on désire suivre "
+"l'évolution\n"
+"d'un fichier à l'aide de son nom et non pas par le descripteur de fichier (i."
+"e. cas\n"
+"lors de la rotation des journaux). Utiliser --follow=nom dans ce cas.\n"
+"À ce moment, tail suivra l'évolution du fichier en l'ouvrant périodiquement\n"
+"afin de vérifier s'il a été détruit ou recréé par un autre programme.\n"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "fermeture %s (fd=%d)"
+
+#: src/tail.c:411
+#, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: ne peut repérer selon le déplacement relatif %s"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s: ne peut repérer la fin selon le déplacement relatif %s"
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr "%s est devenu inaccessible"
+
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+"%s a été remplacé par un fichier dont on ne peut déterminer la taille; "
+"abandon sur ce nom."
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr "%s est devenu accessible"
+
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "%s est apparu; à la fin d'un nouveau fichier"
+
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "%s a été remplacé; à la fin d'un nouveau fichier"
+
+#: src/tail.c:1025
+#, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: n'a pu changer en mode non bloquant"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: fichier tronqué"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "aucun fichier restant"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+"%s: ne peut déterminer la fin de ce type de fichier; abandon sur ce nom"
+
+#: src/tail.c:1439
+#, c-format
+msgid "number in %s is too large"
+msgstr "numéro dans %s est trop grand"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr ""
+"%s: nombre maximum invalide de changements d'états entre les ouvertures"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: PID invalide."
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: nombre de secondes invalide."
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, fuzzy, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "AVERTISSEMENT: --retry est utile seulement si suivi par un nom"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+"AVERTISSEMENT: PID ignoré; --pid=PID est utile seulement lorsqu'il suit"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "AVERTISSEMENT: --pid=PID n'est pas supporté sur ce système"
+
+#: src/tail.c:1667
+#, c-format
+msgid "cannot follow %s by name"
+msgstr "ne peut suivre %s par le nom"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr "AVERTISSEMENT: suivre l'entrée standard indéfiniment est inefficace"
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Copier de l'entrée standard vers chaque FICHIER, \n"
+"et également vers la sortie standard.\n"
+"\n"
+" -a, --append accoler la sortie au(x) FICHIER(s),\n"
+" sans les écraser\n"
+" -i, --ignore-interrupts ignorer les signaux d'interruption\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Si le FICHIER est -, copier à nouveau sur la sortie standard.\n"
+
+#: src/test.c:125
+#, c-format
+msgid "missing argument after %s"
+msgstr "argument manquant après %s"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "nombre invalide %s\n"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "« ) » attendu\n"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "attendait « ) », mais a trouvé %s\n"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: opérateur unaire attendu.\n"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "-nt ne permet pas -l\n"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "-ef ne permet pas -l\n"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "-ot ne permet pas -l\n"
+
+#: src/test.c:368
+#, fuzzy
+msgid "unknown binary operator"
+msgstr "opérateur binaire inconnu\n"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: opérateur binaire attendu.\n"
+
+#: src/test.c:694
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Usage: test EXPRESSION\n"
+" ou: test\n"
+" ou: [ EXPRESSION ]\n"
+" ou: [ ]\n"
+" ou: %s OPTION ]\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"Terminer l'exécution avec l'état déterminé par l'EXPRESSION.\n"
+"\n"
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"\n"
+"Une EXPRESSION omise est par défaut fausse. Autrement,\n"
+"l'EXPRESSION est vraie ou fausse et initialise l'état de fin d'exécution.\n"
+"selon une des options:\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+"\n"
+" ( EXPRESSION ) EXPRESSION est vraie\n"
+" ! EXPRESSION EXPRESSION est fausse\n"
+" EXPRESSION1 -a EXPRESSION2 si les deux EXPRESSION1 et EXPRESSION2\n"
+" sont vraies\n"
+" EXPRESSION1 -o EXPRESSION2 si l'une ou l'autre des expressions:\n"
+" EXPRESSION1 ou EXPRESSION2 est vraie\n"
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"\n"
+" -n CHAÎNE si la longueur de la CHAÎNE n'est pas nulle\n"
+" CHAÎNE équivalenet à -n CHAÎNE\n"
+" -z CHAÎNE si la longueur de la CHAÎNE est nulle\n"
+" CHAÎNE1 = CHAÎNE2 si les chaînes sont identiques\n"
+" CHAÎNE1 != CHAÎNE2 si les chaînes sont différentes\n"
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" ENTIER1 -eq ENTIER2 si ENTIER1 est égal à ENTIER2\n"
+" ENTIER1 -ge ENTIER2 si ENTIER1 est plus grand ou égal à ENTIER2\n"
+" ENTIER1 -gt ENTIER2 si ENTIER1 est plus grand que ENTIER2\n"
+" ENTIER1 -le ENTIER2 si ENTIER1 est plus petit ou égal à ENTIER2\n"
+" ENTIER1 -lt ENTIER2 si ENTIER1 est plus petit que ENTIER2\n"
+" ENTIER1 -ne ENTIER2 si ENTIER1 n'est pas égal à ENTIER2\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+"\n"
+" FICHIER1 -ef FICHIER2 FICHIER1 et FICHIER2 ont les mêmes numéros\n"
+" de périphérique et d'inode\n"
+" FICHIER1 -nt FICHIER2 FICHIER1 est plus récent (date de modification)\n"
+" que FICHIER2\n"
+" FICHIER1 -ot FICHIER2 FICHIER1 est plus vieux que FICHIER2\n"
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+"\n"
+" -b FICHIER FICHIER existe et est de type à blocage spécial\n"
+" -c FICHIER FICHIER existe et est de type caractère spécial\n"
+" -d FICHIER FICHIER existe et est un répertoire\n"
+" -e FICHIER FICHIER existe\n"
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+" -f FICHIER FICHIER existe et est de type régulier\n"
+" -g FICHIER FICHIER existe et le bit « set-group-ID », est initialisé\n"
+" -G FICHIER FICHIER existe et appartient au groupe effectif ID\n"
+" -h FICHIER FICHIER existe et est un lien symbolique (identique à -L)\n"
+" -k FICHIER FICHIER existe et le bit « sticky » est initialisé\n"
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+" -L FICHIER FICHIER existe et est un lien symbolique (identique à -h)\n"
+" -O FICHIER FICHIER existe et appartient à l'usager effectif ID\n"
+" -p FICHIER FICHIER existe et est un relais nommé (named pipe)\n"
+" -r FICHIER FICHIER existe et les permissions en lecture sont données\n"
+" -s FICHIER FICHIER existe et a une taille plus grande que zéro\n"
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+" -S FICHIER FICHIER existe et est de type « socket »\n"
+" -t DF descripteur de fichier DF est ouvert sur le terminal\n"
+" -u FICHIER FICHIER existe et le bit « set-user-ID », est initialisé\n"
+" -w FICHIER FICHIER existe et les permissions en écriture sont données\n"
+" -x FICHIER FICHIER existe et exécutable\n"
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"Excepté pour -h et -L, tous les tests relatifs aux fichiers dé-reéférence "
+"les liens symboliques.\n"
+"Portez attention au fait que les parenthèses doivent être précédées par des\n"
+"barres obliques inverses (pour éviter l'échappement vers un shell).\n"
+"Un ENTIER peut être évalué par la notation -l CHAÎNE laquelle\n"
+"évalue alors la longueur de la chaîne.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr "test et/ou ["
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "« ] » manquant\n"
+
+#: src/test.c:846
+#, c-format
+msgid "extra argument %s"
+msgstr "argument surnuméraire %s"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "format de date invalide %s"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "création de %s"
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr "ne peut faire un touch sur %s"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "initialisation des dates de %s"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+"Mettre à jour les dates d'accès et de modification de chaque FICHIER\n"
+"selon la date courante.\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a modifier seulement la date d'accès\n"
+" -c, --no-create ne créer aucun fichier\n"
+" -d, --date=CHAÎNE analyser la CHAÎNE et l'utiliser au lieu\n"
+" de la date courante\n"
+" -f (ignorée)\n"
+" -m modifier seulement la date de modification\n"
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --file=FICHIER utiliser la date du FICHIER comme référence\n"
+" au lieu de la date courante\n"
+" -t DATE utiliser la DATE selon le format:\n"
+" [[CC]AA]MMJJhhmm[.ss]\n"
+" comme tampon date-heure au lieu de la date courante\n"
+" --time=CODE modifier le temps selon que:\n"
+" CODE est « access » ou « atime » équivalent à -a\n"
+" CODE est « modify » ou « mtime » équivalent à -m\n"
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"Noter que les options -d et -t acceptent différents formats de date et "
+"d'heure.\n"
+"\n"
+"Si le fichier est -, touch s'exécute sur la sortie standard.\n"
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "ne peut spécifier les dates pour plus d'une source"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+"AVERTISSEMENT: `touch %s' est obsolète; utiliser `touch -t %04ld%02d%02d%02d%"
+"02d.%02d'"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Usage: %s [OPTION]... ENSEMBLE1 [ENSEMBLE2]\n"
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Traduire, compresser et/ou éliminer des caractères de l'entrée standard,\n"
+"par écriture sur la sortie standard.\n"
+"\n"
+" -c, -C, --complement complémenter à un l'ENSEMBLE1 \n"
+" -d, --delete éliminer les caractères de l'ENSEMBLE1\n"
+" et ne pas traduire\n"
+" -s, --squeeze-repeats remplacer chaque séquence d'entrée de caractères "
+"répétés\n"
+" qui apparaît dans l'ENSEMBLE1 par une seule "
+"occurence\n"
+" de ce caractère\n"
+" -t, --truncate-set1 tronquer d'abord l'ENSEMBLE1 à la longueur\n"
+" de l'ENSEMBLE2\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"Les ENSEMBLES sont spécifiés comme des chaînes de caractères.\n"
+"La plupart se représente eux-mêmes.\n"
+"Les séquences d'interprétation sont:\n"
+"\n"
+" \\NNN caractère ayant la valeur octale NNN (1 à 3 chiffres "
+"octaux)\n"
+" \\\\ barre oblique inverse\n"
+" \\a cloche sonore \n"
+" \\b caractère d'effacement\n"
+" \\f saut de page \n"
+" \\n saut de ligne \n"
+" \\r retour\n"
+" \\t saut horizontal\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v saut vertical \n"
+" CAR1-CAR2 tous les caractères de CAR1 à CAR2 en ordre croissant\n"
+" [CAR*] dans ENS2, copie de CAR jusqu'à longueur de ENS1\n"
+" [CAR*RÉP] RÉPéter copies de CAR, RÉPéter en octal si débute par 0\n"
+" [:alnum:] toutes les lettres et les chiffres\n"
+" [:alpha:] toutes les lettres\n"
+" [:blank:] tous les blancs horizontaux\n"
+" [:cntrl:] tous les caractères de contrôle\n"
+" [:digit:] tous les chiffres\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] tous les caractères imprimables, sans inclure les blancs\n"
+" [:lower:] tous les lettres minuscules\n"
+" [:print:] tous les caractères imprimables, incluant les blancs\n"
+" [:punct:] tous les caractères de ponctuation\n"
+" [:space:] tous les sauts verticaux ou horizontaux\n"
+" [:upper:] toutes les lettres majuscules\n"
+" [:xdigit:] tous les chiffres hexadécimaux\n"
+" [=CAR=] tous les caractères équivalents à CAR\n"
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"La traduction survient si -d n'est pas fourni et si les deux ensembles\n"
+"ENSEMBLE1 et ENSEMBLE2 sont fournis en argument.\n"
+"L'option -t peut être utilisée seulement lors de la traduction. "
+"L'ENSEMBLE2\n"
+"est dilaté selon la taille de l'ENSEMBLE1 par répétition des derniers\n"
+"caractères si nécessaire."
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"Les caractères en excès de l'ENSEMBLE2 sont ignorés.\n"
+"Seuls [:lower:] et [:upper:] sont garants d'une expansion en ordre\n"
+"en ordre croissant; utilisé dans l'ENSEMBLE2 lors de la traduction, ils "
+"peuvent\n"
+"seulement être utilisés par paire pour spécifier une conversion de la casse."
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"L'option -s s'emploie avec l'ENSEMBLE1 sinon il n'y a pas de traduction ou\n"
+"d'élimination autrement la compression utilise l'ENSEMBLE2 et se produit "
+"après\n"
+"la traduction ou l'élimination.\n"
+
+#: src/tr.c:519
+#, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"AVERTISSEMENT: l'échappement octal ambigü \\%c%c%c a été\n"
+" interprété comme une séquence de 2-octets \\0%c%c, %c"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr ""
+"bornes d'intervalle de « %s-%s » sont en ordre inverse de séquence\n"
+"de comparaison."
+
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "compte de répétions %s invalide dans le construit [c*n]"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "caractères de nom de classe « [::] » manquants"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "caractères d'équivalence de classe « [==] » manquants"
+
+#: src/tr.c:937
+#, c-format
+msgid "invalid character class %s"
+msgstr "caractère de classe invalide %s"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: opérande d'équivalence de classe doit être un caractère simple"
+
+#: src/tr.c:1275
+#, c-format
+msgid "too many characters in set"
+msgstr "trop de caractères dans le jeu"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "le construit [c*] de répétition ne peut apparaître dans la chaîne1"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "un seul construit de répétition [c*] peut apparaître dans chaîne2"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr ""
+"les expressions [=c=] ne peuvent apparaître dans chaîne2 lors de traductions"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "lorsque que l'ensemble1 n'est pas tronqué, chaîne2 ne peut être vide"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"lors de traduction avec des caractères complémentées de classes,\n"
+"la chaîne2 doit ramener tous les caractères du domaine à un seul"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"lors de traductions la seule classe de caractères pouvant apparaître\n"
+"dans chaîne2 est « upper » ou « lower »"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr ""
+"le construit [c*] peut apparaître dans chaîne2 seulement lors d'une\n"
+"traduction"
+
+#: src/tr.c:1731
+msgid "Two strings must be given when translating."
+msgstr "Deux chaînes doivent être fournies lors de la traduction."
+
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"Seulement une chaîne peut être fournie lors d'une destruction sans\n"
+"réduction des répétitions"
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "construit [:upper:] et/ou [:lower:] mal aligné"
+
+#: src/true.c:42
+#, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Usage: %s [arguments de la ligne de commande ignorés]\n"
+" ou: %s OPTION\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr "Fin d'exécution avec le code de statut indiquant le succès"
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Usage: %s [OPTION] [FICHIER]\n"
+"Afficher une liste totalement ordonnée consistante avec l'ordenancement\n"
+"partiel donné dans le FICHIER.\n"
+"Sans FICHIER, ou quand le FICHIER est -, lire de l'entrée standard.\n"
+"\n"
+
+#: src/tsort.c:474
+#, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: l'entrée contient un nombre impair de jetons"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: l'entrée contient une boucle:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Usage: %s [OPTION]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Afficher le nom de fichier du terminal relié à l'entrée standard.\n"
+"\n"
+" -s, --silent, --quiet ne rien afficher, retourner seulement un\n"
+" statut de fin d'exécution\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "n'est pas un « tty »"
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Afficher certaines informations identifiant le système.\n"
+"Sans OPTION, identique à -s.\n"
+"\n"
+" -a, --all afficher toutes les informations\n"
+" omettre si -p et -i sont inconnus:\n"
+" -s, --kernel-name afficher le nom du kernel\n"
+" -n, --nodename afficher le nom du noeud réseau du poste "
+"(hostname)\n"
+" -r, --release afficher la révision de la version du\n"
+" système d'exploitation\n"
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v, --kernel-version afficher la version du kernel\n"
+" -m, --machine afficher le nom du système d'exploitation\n"
+" -p, --processor afficher le type de processeur ou \"unknown\" (i."
+"e \"inconnu\")\n"
+" -i, --hardware-platform afficher les infos matérielles de la plate-forme "
+"ou \"unknown\" (i.e \"inconnu\")\n"
+" -o, --operating-system afficher les infos du système d'exploitation\n"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "ne peut obtenir le nom de système"
+
+#: src/unexpand.c:125
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Convertir les blancs d'espacement de chaque FICHIER par des tabulations\n"
+"lors de l'écriture sur la sortie standard.\n"
+"Sans FICHIER ou quand le FICHIER est -, lire de l'entrée standard.\n"
+
+#: src/unexpand.c:133
+#, fuzzy
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all convertir tous les espaces blancs\n"
+" au lieu des blancs d'espacement initiaux\n"
+" --first-only convertir seulement les séquences de tête d'espaces "
+"blancs (écrase -a)\n"
+" -t, --tabs=N utiliser N caractères de tabulations au lieu de 8 "
+"(active -a)\n"
+" -t, --tabs=LISTE utiliser la LISTE explicite de positions (active -a)\n"
+" de tabulation séparées par des virgules\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr "les tabulations sont trop éloignées"
+
+#: src/unexpand.c:512
+#, c-format
+msgid "tab stop value is too large"
+msgstr "la valeur de l'arrêt de tabulation est trop grand."
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Usage: %s [OPTION]... [ENTRÉE [SORTIE]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"Exclure toutes les lignes successives identiques sauf une du FICHIER\n"
+"(ou de l'entrée standard), lors de l'écriture dans un FICHIER\n"
+"(ou vers la sortie standard).\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count préfixer les lignes par le nombre d'occurences\n"
+" -d, --repeated afficher seulement les lignes ayant des duplicatats\n"
+
+#: src/uniq.c:151
+#, fuzzy
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated afficher toutes les lignes qui ont des duplicatats\n"
+" delimit-method={none(default),prepend,separate}\n"
+" La délimitation est faite avec des lignes blanches.\n"
+" -f, --skip-fields=N éviter de comparer les N premiers champs\n"
+" -i, --ignore-case ignorer les différences de la casse\n"
+" -s, --skip-chars=N éviter de comparer les N premiers caractères\n"
+" -u, --unique afficher seulement les lignes uniques\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+" -w, --check-chars=N ne pas comparer plus de N caractères des lignes\n"
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"Un champ est une suite de blancs, suivi de caractères non-blancs.\n"
+"Les champs sont escamotés avant les caractères.\n"
+
+#: src/uniq.c:350
+#, c-format
+msgid "too many repeated lines"
+msgstr "trop de lignes répétées"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "nombre invalide de champs à escamoter"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "nombre invalide d'octets à escamoter"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "nombre invalide d'octets à comparer"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+"afficher toutes les lignes dupliquées et le décompte de répétition\n"
+"est inutile"
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Usage: %s FICHIER...\n"
+" ou: %s OPTION\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"Appeler la fonction unlink() pour enlever le fichier spécifié.\n"
+"\n"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "ne peut enlever le lien %s"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "n'a pu obtenir la date du réamorçage"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s up "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "am"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "pm"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr " ??:???? monter"
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr "???? jours ??:??, "
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%ld jour"
+msgstr[1] "%ld jours"
+
+#: src/uptime.c:147
+#, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%lu usager"
+msgstr[1] "%lu usagers"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", charge moyenne: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Usage: %s [OPTION]... [FICHIER]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Afficher la date courante, la durée de temps depuis lequel le système\n"
+"a été amorcé, le nombre d'usagers sur le système, et le nombre moyen\n"
+"de tâches dans la file d'exécution depuis les dernières 1, 5 et 15 minutes.\n"
+"Si FICHIER n'est pas utilisé, utiliser %s. %s comme FICHIER est d'usager "
+"courant.\n"
+"\n"
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Afficher la liste des usagers actifs selon la liste contenue dans\n"
+"le FICHIER. Si le FICHIER n'est pas spécifié, utiliser %s.\n"
+"L'utilisation de %s comme FICHIER est d'usage courant.\n"
+"\n"
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Afficher le décompte d'octets, de mots et de nouvelles lignes pour chaque "
+"FICHIER et\n"
+"le nombre total de ligne si plus d'un FICHIER est spécifié.\n"
+"Sans FICHIER, ou quand FICHIER est -, lire de l'entrée standard.\n"
+" -c, --bytes afficher le nombre d'octets\n"
+" -m, --chars afficher le nombre de caractères\n"
+" -l, --lines afficher le nombre de nouvelles lignes\n"
+
+#: src/wc.c:121
+#, fuzzy
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" -L, --max-line-length afficher la longueur de la ligne la plus longue\n"
+" -w, --words afficher le nombre de mots\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr "vieux"
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "term="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "sortie="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "changement d'horloge"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "niveau d'exécution"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "dernier="
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"# usager=%lu\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "NOM"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "LIGNE"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "HEURE"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr "OSIF"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "COMMENTAIRE"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "EXIT"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Usage: %s [OPTION]... [ FICHIER | ARG1 ARG2]\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" -a, --all afficher toutes les informations\n"
+" -b, --boot afficher l'heure du dernier amorçage\n"
+" -d, --dead afficher la liste des processus morts\n"
+" -H, --heading afficher les lignes d'en-tête\n"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr " -l, --login afficher le processus de login du système\n"
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+" --lookup utiliser la forme canonique des noms des hôtes\n"
+" via le DNS (-l est déprécié, utiliser --lookup)\n"
+" -m seulement du poste (hostname) et\n"
+" de l'usager associé à « stdin »\n"
+" -p, --process afficher la liste des processus lancés par init\n"
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+" -q, --count afficher tous les comptes actifs et le nombre d'usagers\n"
+" présents sur le système\n"
+" -r, --runlevel afficher le niveau d'exécution courant\n"
+" -s, --short afficher seulement le nom, la ligne et l'heure (par "
+"défaut)\n"
+" -t, --time afficher l'heure du dernier changement d'heure de "
+"l'horloge\n"
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+" -T, -w, --mesg ajouter le statut du message usager avec +, - ou ?\n"
+" -u, --users afficher la liste des usagers actifs\n"
+" --message identique à -T\n"
+" --writeable identique à -T\n"
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"Si FICHIER n'est pas spécifié, utilise %s. %s comme FICHIER\n"
+"est d'usage courant. Si PARAM1 et PARAM2 sont fournis, -m est assumé:\n"
+"« am i » ou « mom likes » sont d'usage courant.\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+"AVERTISSEMENT: -i sera retiré dans une prochaine version; utiliser -u à la "
+"place"
+
+#: src/whoami.c:51
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Afficher le nom de l'usager associé à l'identificateur effectif\n"
+"courant de l'usager. Identique à: id -un.\n"
+"\n"
+
+#: src/whoami.c:95
+#, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: ne peut trouver le nom de l'usager ID %lu\n"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Usage: %s [CHAÎNE]...\n"
+" ou: %s OPTION\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"Afficher à répétition une ligne de caractères telle que spécifiée\n"
+"par CHAÎNE ou par « y ».\n"
+
+#~ msgid "strip failed"
+#~ msgstr "échec de strip"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "ne peut modifier le propriétraire et/ou le groupe de %s"
+
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "ne peut aller vers le répertoire %s"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr ""
+#~ "ne peut obtenir le groupe d'établissement de session à partir du UID "
+#~ "numérique"
+
+#~ msgid ""
+#~ " --no-preserve-root do not treat `/' specially (the default)\n"
+#~ " --preserve-root fail to operate recursively on `/'\n"
+#~ msgstr ""
+#~ " --no-preserve-root ne pas traiter `/' de manière spéciale (par "
+#~ "défaut)\n"
+#~ " --preserve-root ne pas opérer récursivement sur `/'\n"
+
+#~ msgid "-R -h requires -P"
+#~ msgstr "-R -h requiert -P"
+
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "les liens symboliques ne sont supportés sur ce système"
+
+#~ msgid ""
+#~ " -e enable interpretation of backslash escapes\n"
+#~ " -E disable interpretation of backslash escapes (default)\n"
+#~ msgstr ""
+#~ " -e autoriser l'interprétation des échappements de barre "
+#~ "oblique inverse\n"
+#~ " -E désactiver l'interprétation des échappements de barre "
+#~ "oblique inverse (par défaut)\n"
+
+#~ msgid ""
+#~ "warning: unportable BRE: %s: using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr ""
+#~ "AVERTISSEMENT: BRE non portable: %s: l'utilisation de « ^ » comme "
+#~ "premier\n"
+#~ "caractère d'une expression régulière de base n'est pas portable; cela a "
+#~ "été ignoré."
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "L'option « -%c » n'est pas reconnue."
+
+#~ msgid "cannot return to working directory"
+#~ msgstr "ne peut retourner le répertoire courant de travail"
+
+#~ msgid "cannot return to current directory"
+#~ msgstr "ne peut retourner le répertoire courant"
+
+#~ msgid "value %s is so large that it is not representable"
+#~ msgstr "la valeur %s est tellement grande qu'elle n'est pas représentable"
+
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "création du lien symbolique %s vers %s"
+
+#~ msgid "create hard link %s to %s"
+#~ msgstr "création d'un lien direct %s vers %s"
+
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "ne peut initialiser les permissions du répertoire %s"
+
+#~ msgid "fifo files not supported"
+#~ msgstr "Les fichiers de type « fifo » n'est pas supporté."
+
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "ne peut initialiser les permissions du fifo %s"
+
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "ne peut initialiser les permissions de %s"
+
+#~ msgid ""
+#~ "This program is free software; you can redistribute it and/or modify\n"
+#~ "it under the terms of the GNU General Public License as published by\n"
+#~ "the Free Software Foundation; either version 2, or (at your option)\n"
+#~ "any later version.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Ce programme est un logiciel libre; vous pouvez le redistribuer ou le\n"
+#~ "modifier selon les termes de la License Publique Générale de GNU, "
+#~ "publiée\n"
+#~ "par la Free Software Foundation (soit la version 2 ou soit, à votre\n"
+#~ "discrétion, toute version ultérieure).\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "This program is distributed in the hope that it will be useful,\n"
+#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+#~ "GNU General Public License for more details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Ce programme est distribué dans l'espoir qu'il soit utile,\n"
+#~ "mais AUCUNE garantie n'est donnée tant pour des raisons COMMERCIALES que\n"
+#~ "pour RÉPONDRE À UN BESOIN PARTICULIER. Consulter la licence\n"
+#~ "GNU General Public License pour plus de détails.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
+#~ msgstr ""
+#~ "Vous devriez avoir reçu une copie de la Licence Publique Générale de GNU\n"
+#~ "avec ce programme; sinon, écrire à la Free Software Foundation, Inc.,\n"
+#~ "51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
+
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "ne peut aller du répertoire %s vers .."
+
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "ne peut évaluer par lstat() « . » dans %s"
+
+#~ msgid "cannot lstat %s"
+#~ msgstr "ne peut évaluer par lstat() %s"
+
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "ne peut aller du le répertoire %s vers %s"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "ne peut enlever « . » or « .. »"
+
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only; this works only if your "
+#~ "system\n"
+#~ " supports `unlink' for nonempty directories)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ msgstr ""
+#~ "Enlever (unlink) les FICHIER(s).\n"
+#~ "\n"
+#~ " -d, --directory enlever le FICHIER même s'il n'est pas vide\n"
+#~ " (usager root seulement; cela fonctionne seulement "
+#~ "si votre\n"
+#~ " système supporte `unlink` pour les répertoires "
+#~ "qui ne sont pas vides)\n"
+#~ " -f, --force ignorer les fichiers inexistants,\n"
+#~ " ne pas demander de confirmation\n"
+#~ " -i, --interactive demander une confirmation avant chaque "
+#~ "destruction\n"
+
+#~ msgid "%s: count `%.*s' too large"
+#~ msgstr "%s: décompte « %.*s » trop grand"
+
+#~ msgid "Exit with a status code indicating failure."
+#~ msgstr "Fin d'exécution avec le code de statut indiquant l'échec"
+
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "ne peut écraser le répertoire %s"
+
+# src/stat.c:300 MRO
+#~ msgid ""
+#~ "Display file or file system status.\n"
+#~ "\n"
+#~ " -f, --file-system display file system status instead of file "
+#~ "status\n"
+#~ " -c --format=FORMAT use the specified FORMAT instead of the default\n"
+#~ " -L, --dereference follow links\n"
+#~ " -t, --terse print the information in terse form\n"
+#~ msgstr ""
+#~ "Afficher l'état des fichiers ou du système de fichiers.\n"
+#~ "\n"
+#~ " -f, --file-system afficher l'état du système de fichiers\n"
+#~ " au lieu de l'état des fichiers\n"
+#~ " -c --format=FORMAT utiliser le FORMAT spécifié au lieu du "
+#~ "défaut\n"
+#~ " -L, --deference suivre les liens\n"
+#~ " -t, --terse afficher l'information en format terse\n"
+
+#~ msgid "openat: unable to restore working directory"
+#~ msgstr "openat: incapable de restaurer le répertoire de travail"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Ce logiciel est libre; voir les sources pour les conditions de\n"
+#~ "reproduction. AUCUNE garantie n'est donnée; tant pour des raisons\n"
+#~ "COMMERCIALES que pour RÉPONDRE À UN BESOIN PARTICULIER.\n"
+
+#~ msgid "closing standard output"
+#~ msgstr "fermeture de la sortie standard"
+
+#~ msgid ""
+#~ "\n"
+#~ "Each MODE is one or more of the letters ugoa, one of the symbols +-= and\n"
+#~ "one or more of the letters rwxXstugo.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Chaque MODE se compose d'un ou plusieurs lettres de ugoa, un des symbols "
+#~ "+-= et\n"
+#~ "d'une ou plusieurs lettres rwxXstugo.\n"
+
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "AVERTISSEMENT: --version-control (-V) est obsolète; son soutien\n"
+#~ "sera retiré dans une prochaine version. Utiliser --backup=%s à la place."
+
+#~ msgid ""
+#~ " %z RFC-2822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %Z time zone (e.g., EDT), or nothing if no time zone is determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr ""
+#~ " %z fuseau horaire en format numérique selon le RFC-2822 (-0500)\n"
+#~ " (une extension non-standard)\n"
+#~ " %Z fuseau horaire (i.e. EDT) ou nul si aucun fuseau horaire\n"
+#~ " ne peut être déterminé\n"
+#~ "\n"
+#~ "Par défaut, les champs numériques de date sont complétés par des zéros.\n"
+#~ "« GNU date » reconnaît les modificateurs suivants entre « % » et une "
+#~ "directive numérique.\n"
+#~ "\n"
+#~ " « - » (tiret) ne pas compléter le champ\n"
+#~ " « _ » (souligné) compléter le champ par des blancs\n"
+
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-2822 (-R) option"
+#~ msgstr ""
+#~ "une chaîne de format ne peut être spécifié lorsque l'option --rfc-2822 (-"
+#~ "R) est utilisée"
+
+#~ msgid "undefined"
+#~ msgstr "Indéfini"
+
+#~ msgid "cannot get time of day"
+#~ msgstr "ne peut obtenir la date du jour"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "%s+%s enregistrements lus.\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "%s+%s enregistrements écrits.\n"
+
+#~ msgid "truncated records"
+#~ msgstr "enregistrements tronqués"
+
+#~ msgid "file offset out of range"
+#~ msgstr "décalage dans le fichier est hors limites"
+
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "option « -LIST » est obsolète; utiliser « -t LIST »"
+
+#~ msgid "`%s' is too large"
+#~ msgstr "« %s » est trop grand"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Usage: %s [arguments ignorés de la ligne de commande]\n"
+#~ " ou: %s OPTION\n"
+#~ "Terminer avec un statut indiquant l'échec.\n"
+#~ "\n"
+#~ "Ces options ne peuvent pas être abrégées.\n"
+#~ "\n"
+
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "option « %s » est obsolète; utiliser « %s »"
+
+#~ msgid "%s: number of bytes is large"
+#~ msgstr "%s: nombre d'octets est grand"
+
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "option « -%s » est obsolète; utiliser « -%c %.*s%.*s%s »"
+
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "ne peut obtenir les estampilles de date-heure pour %s"
+
+#~ msgid "invalid field number: `%s'"
+#~ msgstr "Le numéro de champ « %s » est invalide."
+
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "Le numéro de champ « %s » est invalide pour le fichier 1."
+
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "Le numéro de champ « %s » est invalide pour le fichier 2."
+
+#~ msgid ""
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -b, --binary lire les fichiers en mode binaire \n"
+#~ " (par défaut sous DOS/WIndows)\n"
+#~ " -c, --check vérifier les sommes %s par rapport à la liste\n"
+#~ " -t, --text lire les fichiers en mode texte (par défaut)\n"
+#~ "\n"
+
+#~ msgid "Only one operand may be specified when using --check."
+#~ msgstr "Seulement une opérande peut être spécifié avec --check."
+
+#~ msgid "cannot get priority"
+#~ msgstr "ne peut obtenir la priorité"
+
+#~ msgid "cannot set priority"
+#~ msgstr "ne peut initialiser la priorité"
+
+#~ msgid "failed to redirect standard output"
+#~ msgstr "échec de redirection sur la sortie standard"
+
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr ""
+#~ "Diagnostiquer les construits non portables du NOM.\n"
+#~ "\n"
+#~ " -p, --portability vérifier pour tous les systèmes POSIX,\n"
+#~ " non seulement pour le système courant\n"
+
+#~ msgid "column count too large"
+#~ msgstr "%compteur de colonne trop grand"
+
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "« --columns=N » nombre invalide de colonnes: « %s »"
+
+#~ msgid "`-%s' option is obsolete; use `-l %s'"
+#~ msgstr "option « -%s » est obsolète; utiliser « -l %s »"
+
+#~ msgid "Warning: `-l' is deprecated; use `-L' instead"
+#~ msgstr "AVERTISSEMENT: `-l' est obsolète; utiliser `-L' à la place"
+
+#~ msgid "invalid argument `%s'"
+#~ msgstr "argument invalide « %s »"
+
+#~ msgid "stdin: read error"
+#~ msgstr "stdin: erreur de lecture."
+
+#~ msgid "`%s' option is obsolete; use `%s-%c %<PRIuMAX>'"
+#~ msgstr "l'option « %s » est obsolète; utiliser « %s-%c %<PRIuMAX> »"
+
+#~ msgid "%s: integer expression expected\n"
+#~ msgstr "%s: expression de valeur entière attendue\n"
+
+#~ msgid "before -lt"
+#~ msgstr "avant -lt"
+
+#~ msgid "after -lt"
+#~ msgstr "après -lt"
+
+#~ msgid "before -le"
+#~ msgstr "avant -le"
+
+#~ msgid "after -le"
+#~ msgstr "après -le"
+
+#~ msgid "before -gt"
+#~ msgstr "avant -gt"
+
+#~ msgid "after -gt"
+#~ msgstr "après -gt"
+
+#~ msgid "before -ge"
+#~ msgstr "avant -ge"
+
+#~ msgid "after -ge"
+#~ msgstr "après -ge"
+
+#~ msgid "before -ne"
+#~ msgstr "avant -ne"
+
+#~ msgid "after -ne"
+#~ msgstr "après -ne"
+
+#~ msgid "before -eq"
+#~ msgstr "avant -eq"
+
+#~ msgid "after -eq"
+#~ msgstr "après -eq"
+
+#~ msgid "after -t"
+#~ msgstr "après -t"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Usage: %s [arguments ignorés de la ligne de commande]\n"
+#~ " ou: %s OPTION\n"
+#~ "Terminer avec un statut indiquant l'échec.\n"
+#~ "\n"
+#~ "Ces options ne peuvent pas être abrégées.\n"
+#~ "\n"
+
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr "option « -LIST » est obsolète; utiliser « --first-only -t LIST »"
+
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "option « -%lu » est obsolète; utiliser « -f %lu »"
+
+#~ msgid ""
+#~ " -i, --idle add idle time as HOURS:MINUTES, . or old\n"
+#~ " (deprecated, use -u)\n"
+#~ " -l, --login print system login processes\n"
+#~ msgstr ""
+#~ " -i, -u, --idle ajouter le temps d'inactivité de l'usager en\n"
+#~ " selon le format HEURE:MINUTES, . ou « old »\n"
+#~ " -l, --login afficher la liste des processus système de login\n"
+#~ " (équivalent à SUS -l)\n"
+
+#~ msgid "%s: cannot find username for UID %lu\n"
+#~ msgstr "%s: ne peut trouver le nom de l'usager ayant le UID %lu\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "Trop peu de arguments."
+
+#~ msgid "cannot change to null group"
+#~ msgstr "ne peut modifier pour le groupe nul"
+
+#~ msgid "group number"
+#~ msgstr "numéro de groupe"
+
+#~ msgid "invalid group number %s"
+#~ msgstr "numéro de groupe invalide %s"
+
+#~ msgid "invalid mode string: %s"
+#~ msgstr "chaîne de mode invalide: %s"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "Usage: %s [OPTION]... PROPRIÉTAIRE[:[GROUPE]] FICHIER...\n"
+#~ " ou: %s [OPTION]... :GROUPE FICHIER...\n"
+#~ " ou: %s [OPTION]... --reference=FICHIER-R FICHIER\n"
+
+#~ msgid "%s: specified destination directory does not exist"
+#~ msgstr "%s: répertoire cible spécifié n'exite pas"
+
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "%s: cible spécifiée mais n'est pas un répertoire"
+
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr ""
+#~ "Lors de la copie de plusieurs fichiers:\n"
+#~ "le dernier argument %s n'est pas un répertoire."
+
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "trop d'arguments sont des options non reconnues: %s%s"
+
+#~ msgid ""
+#~ "\tonly one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}"
+#~ msgstr ""
+#~ "Un seul type de conversion est autorisé parmi {ascii,ebcdic,ibm},\n"
+#~ "{lcase,ucase}, {block,unblock}"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr ""
+#~ "Aucun argument de FICHIER ne peut être utilisé avec l'option\n"
+#~ "pour afficher la base de données interne « dircolors »."
+
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ msgstr ""
+#~ "Faire l'écho de CHAÎNE(S) vers la sortie standard.\n"
+#~ "\n"
+#~ " -n ne pas afficher le saut de ligne de fin\n"
+#~ " -e (inutilisée)\n"
+#~ " -E inhiber l'interpolation de certaines séquences de la "
+#~ "CHAÎNE\n"
+
+#~ msgid "invalid width option: %s"
+#~ msgstr "L'option largeur est invalide: %s"
+
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr ""
+#~ "durant l'installation de plusieurs fichiers,\n"
+#~ "le dernier argument %s n'est pas un répertoire."
+
+#~ msgid "%s is a directory"
+#~ msgstr "%s est un répertoire"
+
+#~ msgid "too many non-option arguments"
+#~ msgstr "Trop de arguments sont des options non reconnues."
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "Trop peu de arguments sont des options non reconnues."
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: fichier existant."
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "Usage: %s [OPTION]... CIBLE [NOM-DU-LIEN]\n"
+#~ " ou: %s [OPTION]... CIBLE... RÉPERTOIRE\n"
+#~ " ou: %s [OPTION]... --target-directory=RÉPERTOIRE CIBLE...\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr ""
+#~ "Lors de la création de liens: le dernier argument doit être un répertoire."
+
+#~ msgid "User name too long"
+#~ msgstr "nom d'usager trop long"
+
+#~ msgid "file"
+#~ msgstr "fichier"
+
+#~ msgid "files"
+#~ msgstr "fichiers"
+
+#~ msgid "checksum"
+#~ msgstr "checksum"
+
+#~ msgid "checksums"
+#~ msgstr "checksums"
+
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "les options --string et --check sont mutuellement exclusives"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "Aucun fichier ne peut être spécifié lorsque --string est utilisée."
+
+#~ msgid "wrong number of arguments"
+#~ msgstr "nombre erroné d'arguments"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr ""
+#~ "Les numéros majeur et mineur de périphérique ne peuvent être\n"
+#~ "spécifiés pour des fichiers de type « fifo »"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr ""
+#~ "Lors du déplacement de fichiers, le dernier argument doit être un "
+#~ "répertoire."
+
+#~ msgid "invalid option `%s'"
+#~ msgstr "option invalide « %s »"
+
+#~ msgid "invalid priority `%s'"
+#~ msgstr "priorité invalide « %s »"
+
+#~ msgid "old-style offset"
+#~ msgstr "Vieux style de décalage."
+
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "La deuxième opérande « %s » est invalide en mode compatible."
+
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr ""
+#~ "En mode compatible, les 2 derniers arguments doivent être des adresses "
+#~ "relatives."
+
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "chemin « %s » contient un caractère non portable « %c »"
+
+#~ msgid "`%s' is not a directory"
+#~ msgstr "« %s » n'est pas un répertoire"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "Le répertoire « %s » n'est pas accessible."
+
+#~ msgid "name `%s' has length %ld; exceeds limit of %ld"
+#~ msgstr "Le nom « %s » a une longueur de %ld; excédant la limite %ld"
+
+#~ msgid "path `%s' has length %lu; exceeds limit of %ld"
+#~ msgstr "Le chemin « %s » a une longueur de %lu; excédant la limite %ld"
+
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "« --pages » intervalle des pages invalide: « %s »"
+
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "« --pages » numéro de page de départ invalide: « %s »"
+
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "« --pages » numéro de page finale invalide: « %s »"
+
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr ""
+#~ "« --pages » numéro de page de départ est plus grand que le no. de page "
+#~ "finale"
+
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%b %e %H:%M %Y"
+
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr ""
+#~ "Le numéro de page de départ est plus grand que le nombre total de pages: "
+#~ "« %d »"
+
+#~ msgid "Page %d"
+#~ msgstr "Page %d"
+
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "Usage: %s format [argument...]\n"
+
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "%c: caractère invalide en suffixe dans une option désuète."
+
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "Trop de arguments; lors de l'utilisation d'une syntaxe désuète (%s) de "
+#~ "tail\n"
+#~ "Il ne peut y avoir plus d'un fichier en argument. Utiliser l'option -n ou "
+#~ "-b\n"
+#~ "équivalente à la place."
+
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "AVERTISSEMENT: l'utilisation de 2 ou plusieurs fichiers en argument\n"
+#~ "avec une syntaxe désuète des options (%s) de tail n'est pas portable.\n"
+#~ "Utiliser les options équivalentes -n ou -c à la place."
+
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr "%s: nombre maximum invalide de changements consécutifs de taille"
+
+#~ msgid "argument expected\n"
+#~ msgstr "argument attendu\n"
+
+#~ msgid "too many arguments\n"
+#~ msgstr "trop d'arguments\n"
+
+#~ msgid "file arguments missing"
+#~ msgstr "arguments fichier manquants"
+
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "Échappement barre oblique inverse invalide « \\%c »"
+
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr ""
+#~ "deux chaînes doivent être fournies lorsqu'il y a destruction\n"
+#~ "et réduction des répétitions"
+
+#~ msgid "at least one string must be given when squeezing repeats"
+#~ msgstr ""
+#~ "au moins une chaîne doit être fournie lors de réduction des répétitions"
+
+#~ msgid ""
+#~ "invalid identity mapping; when translating, any [:lower:] or [:upper:]\n"
+#~ "construct in string1 must be aligned with a corresponding construct\n"
+#~ "([:upper:] or [:lower:], respectively) in string2"
+#~ msgstr ""
+#~ "correspondance d'identité invalide: lors de la traduction de contruits\n"
+#~ "[:lower:] ou [:upper:], le construit dans la chaîne1 doit être aligné\n"
+#~ "avec le construit correspondant ([:upper:] ou [:lower:] respectivement)\n"
+#~ "dans la chaîne2"
+
+#~ msgid "only one argument may be specified"
+#~ msgstr "Un seul argument peut être spécifié."
+
+#~ msgid "tab size contains an invalid character"
+#~ msgstr "La taille de la tabulation contient un caractère invalide."
+
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "Usage: %s [OPTION]... FICHIER_GAUCHE FICHIER_DROIT\n"
+
+#~ msgid "*** invalid date/time ***"
+#~ msgstr "*** date/heure invalide ***"
+
+#~ msgid "Torbjorn Granlund and Richard M. Stallman"
+#~ msgstr "Torbjorn Granlund et Richard M. Stallman"
+
+#~ msgid "Richard Stallman and David MacKenzie"
+#~ msgstr "Richard Stallman et David MacKenzie"
+
+#~ msgid "Torbjorn Granlund, David MacKenzie, and Jim Meyering"
+#~ msgstr "Torbjorn Granlund, David MacKenzie et Jim Meyering"
+
+#~ msgid "Stuart Kemp and David MacKenzie"
+#~ msgstr "Stuart Kemp et David MacKenzie"
+
+#~ msgid "%s: `+' or `-' expected after delimeter"
+#~ msgstr "%s: « + » ou « - » attendu après le délimiteur."
+
+#~ msgid "David Ihnat, David MacKenzie, and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie et Jim Meyering"
+
+#~ msgid "Paul Rubin, David MacKenzie, and Stuart Kemp"
+#~ msgstr "Paul Rubin, David MacKenzie et Stuart Kemp"
+
+#~ msgid "Torbjorn Granlund, David MacKenzie, and Paul Eggert"
+#~ msgstr "Torbjorn Granlund, David MacKenzie et Paul Eggert"
+
+#~ msgid "David MacKenzie and Jim Meyering"
+#~ msgstr "David MacKenzie et Jim Meyering"
+
+#~ msgid "Torbjorn Granlund, David MacKenzie, Paul Eggert, and Jim Meyering"
+#~ msgstr "Torbjorn Granlund, David MacKenzie, Paul Eggert et Jim Meyering"
+
+#~ msgid "cannot change to parent of directory %s"
+#~ msgstr "ne peut aller vers le répertoire parent de %s"
+
+#~ msgid "Richard Mlynarik and David MacKenzie"
+#~ msgstr "Richard Mlynarik et David MacKenzie"
+
+#~ msgid "Arnold Robbins and David MacKenzie"
+#~ msgstr "Arnold Robbins et David MacKenzie"
+
+#~ msgid "Mike Parker and David MacKenzie"
+#~ msgstr "Mike Parker et David MacKenzie"
+
+#~ msgid "Ulrich Drepper and Scott Miller"
+#~ msgstr "Ulrich Drepper et Scott Miller"
+
+#~ msgid "Mike Parker, David MacKenzie, and Jim Meyering"
+#~ msgstr "Mike Parker, David MacKenzie et Jim Meyering"
+
+#~ msgid "Scott Bartram and David MacKenzie"
+#~ msgstr "Scott Bartram et David MacKenzie"
+
+#~ msgid "David M. Ihnat and David MacKenzie"
+#~ msgstr "David M. Ihnat et David MacKenzie"
+
+#~ msgid "Joseph Arceneaux, David MacKenzie, and Kaveh Ghazi"
+#~ msgstr "Joseph Arceneaux, David MacKenzie et Kaveh Ghazi"
+
+#~ msgid "Pete TerMaat and Roland Huebner"
+#~ msgstr "Pete TerMaat et Roland Huebner"
+
+#~ msgid "David MacKenzie and Richard Mlynarik"
+#~ msgstr "David MacKenzie et Richard Mlynarik"
+
+#~ msgid "Paul Rubin, David MacKenzie, Richard Stallman, and Jim Meyering"
+#~ msgstr "Paul Rubin, David MacKenzie, Richard Stallman et Jim Meyering"
+
+#~ msgid "Jim Meyering and Paul Eggert"
+#~ msgstr "Jim Meyering et Paul Eggert"
+
+#~ msgid "Mike Haertel and Paul Eggert"
+#~ msgstr "Mike Haertel et Paul Eggert"
+
+#~ msgid "Kayvan Aghaiepour and David MacKenzie"
+#~ msgstr "Kayvan Aghaiepour et David MacKenzie"
+
+#~ msgid "Jay Lepreau and David MacKenzie"
+#~ msgstr "Jay Lepreau et David MacKenzie"
+
+#~ msgid "Paul Rubin, David MacKenzie, Ian Lance Taylor, and Jim Meyering"
+#~ msgstr "Paul Rubin, David MacKenzie, Ian Lance Taylor et Jim Meyering"
+
+#~ msgid "Mike Parker, Richard M. Stallman, and David MacKenzie"
+#~ msgstr "Mike Parker, Richard Stallman et David MacKenzie"
+
+#~ msgid "Kevin Braunsdorf and Matthew Bradburn"
+#~ msgstr "Kevin Braunsdorf et Matthew Bradburn"
+
+#~ msgid ""
+#~ "Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie, and Randy Smith"
+#~ msgstr ""
+#~ "Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie et Randy Smith"
+
+#~ msgid "Joseph Arceneaux and David MacKenzie"
+#~ msgstr "Joseph Arceneaux et David MacKenzie"
+
+#~ msgid "Paul Rubin and David MacKenzie"
+#~ msgstr "Paul Rubin et David MacKenzie"
+
+#~ msgid "Joseph Arceneaux, David MacKenzie, and Michael Stone"
+#~ msgstr "Joseph Arceneaux, David MacKenzie et Michael Stone"
+
+#~ msgid ""
+#~ "when the starting value is larger than the limit,\n"
+#~ "the increment must be negative"
+#~ msgstr ""
+#~ "lorsque la valeur de départ est plus grande que la limite,\n"
+#~ "l'incrément doit être négatif."
+
+#~ msgid ""
+#~ "when the starting value is smaller than the limit,\n"
+#~ "the increment must be positive"
+#~ msgstr ""
+#~ "quand la valeur de départ est plus petite que la limite,\n"
+#~ "l'incrément doit être positif"
+
+#~ msgid ""
+#~ "Warning: the meaning of '-l' will change in a future release to conform "
+#~ "to POSIX"
+#~ msgstr ""
+#~ "AVERTISSEMENT: le sens de « -l » sera modifié dans une prochaine version "
+#~ "pour se conformer à POSIX"
+
+#~ msgid "FIXME: ksb and mjb"
+#~ msgstr "CORRIGEZ-MOI: ksb et mjb"
+
+#~ msgid "unable to restore permissions of %s"
+#~ msgstr "incapable de restaurer es permissions de %s"
+
+#~ msgid ""
+#~ "\n"
+#~ "In -wNUMBER, the letter `w' may be omitted.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Pour -wNOMBRE, l'option « w » peut être omise.\n"
+
+#~ msgid ""
+#~ " -c, --bytes=SIZE print first SIZE bytes\n"
+#~ " -n, --lines=NUMBER print first NUMBER lines instead of first 10\n"
+#~ msgstr ""
+#~ " -c, --bytes=N afficher les N premiers octets\n"
+#~ " -n, --lines=N afficher les N premières lignes au lieu de 10\n"
+
+#~ msgid "\\%c: invalid escape"
+#~ msgstr "\\%c: échappement invalide"
+
+#~ msgid "invalid number"
+#~ msgstr "Nombre invalide."
+
+#~ msgid "%s is larger than the maximum file size on this system"
+#~ msgstr "%s est plus grand que la taille maximale possible sur ce système"
+
+#~ msgid "program error"
+#~ msgstr "erreur du programme"
+
+#~ msgid "stack overflow"
+#~ msgstr "débordement de la pile"
+
+#~ msgid "warning: unable to use large stack"
+#~ msgstr "AVERTISSEMENT: incapable d'utiliser une grande pile"
+
+#~ msgid " Type"
+#~ msgstr " Type"
+
+#~ msgid "missing file arguments"
+#~ msgstr "arguments de fichier manquants"
+
+#, fuzzy
+#~ msgid "Try %s --help' for more information.\n"
+#~ msgstr "Pour en savoir davantage, faites: « %s --help ».\n"
+
+#, fuzzy
+#~ msgid "cannot lstat `.'"
+#~ msgstr "ne peut initialiser la date."
+
+#, fuzzy
+#~ msgid "%s: remove directory %s? "
+#~ msgstr "Ne peut créer le répertoire %s"
+
+#~ msgid "%s: directory %s is write protected; descend into it anyway? "
+#~ msgstr "%s: répertoire %s protégé en écriture; le parcourir quand même?"
+
+#~ msgid "removing all entries of directory %s\n"
+#~ msgstr "destruction de toutes les entrées du répertoire %s\n"
+
+#~ msgid "directory %s was replaced before being removed"
+#~ msgstr "r/pertoire %s a été remplacé avant d'être enlevé"
+
+#, fuzzy
+#~ msgid "cannot change back to directory %s via `..'"
+#~ msgstr "ne peut aller vers le répertoire %s"
+
+#~ msgid "subdirectory of %s was moved while being removed"
+#~ msgstr "sous-répertoire de %s a été déplacé pendant son déplacement"
+
+#, fuzzy
+#~ msgid "%s: remove directory %s%s? "
+#~ msgstr "Ne peut créer le répertoire %s"
+
+#~ msgid " (might be nonempty)"
+#~ msgstr " (peut ne pas être vide)"
+
+#, fuzzy
+#~ msgid "removing the directory itself: %s\n"
+#~ msgstr "AVERTISSEMENT: ne peut changer pour le répertoire %s"
+
+#, fuzzy
+#~ msgid "cannot remove current directory %s"
+#~ msgstr "Ne peut créer le répertoire %s"
+
+#~ msgid "continue? "
+#~ msgstr "poursuivre? "
+
+#~ msgid ""
+#~ "ERROR: the source file %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after opening it), the numbers\n"
+#~ "are %lu/%lu. That means that while this program was running,\n"
+#~ "the file was replaced with another one. Skipping this file."
+#~ msgstr ""
+#~ "ERREUR: le fichier source %s avait initialement un numéro de périphérique/"
+#~ "inode\n"
+#~ "%lu/%lu, mais à présent (après l'avoir ouvert), les numéros\n"
+#~ "pour «.» sont %lu/%lu. Cela signifie que durant l'exécution du programme, "
+#~ "le\n"
+#~ "fichier a été remplacé soit par un autre. Fichier escamoté."
+
+#, fuzzy
+#~ msgid "cannot fork"
+#~ msgstr "Ne peut changer la protection de %s"
+
+#~ msgid ""
+#~ "ERROR: the directory %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after a chdir into it), the numbers for `.'\n"
+#~ "are %lu/%lu. That means that while rm was running, the directory\n"
+#~ "was replaced with either another directory or a link to another directory."
+#~ msgstr ""
+#~ "ERREUR: le répertoire %s avait initialement un numéro de périphérique/"
+#~ "inode\n"
+#~ "%lu/%lu, mais à présent (après s'être positionné dedans par chdir), les "
+#~ "numéros\n"
+#~ "pour «.» sont %lu/%lu. Cela signifie que durant l'exécution de «rm», le\n"
+#~ "répertoire a été remplacé soit par un autre répertoire ou un lien\n"
+#~ "sur un autre répertoire."
+
+#~ msgid ""
+#~ " --sparse=WHEN control creation of sparse files\n"
+#~ " -R, --recursive copy directories recursively\n"
+#~ " --reply={yes,no,query} specify how to handle the prompt about an\n"
+#~ " existing destination file\n"
+#~ " --strip-trailing-slashes remove any trailing slashes from each "
+#~ "SOURCE\n"
+#~ " argument\n"
+#~ msgstr ""
+#~ " --sparse=DATE contrôler la DATE de création des "
+#~ "fichiers\n"
+#~ " dispersés\n"
+#~ " --reply={yes,no,query} spécifier comment traiter les requêtes à "
+#~ "propos\n"
+#~ " d'un fichier de destination existant\n"
+#~ " --strip-trailing-slashes enlever les '/' en suffixe de chacun\n"
+#~ " des arguments SOURCE\n"
+
+#~ msgid " or: %s [-acm] MMDDhhmm[YY] FILE... (obsolescent)\n"
+#~ msgstr " ou : %s [-acm] MMJJhhmm[AA] FICHIER... (désuet)\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Note that the three time-date formats recognized for the -d and -t "
+#~ "options\n"
+#~ "and for the obsolescent argument are all different.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Noter que les 3 formats du tampon date-heure sont reconnus pour les\n"
+#~ "options -d et -t et les arguments désuets sont tous différents.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ " -v, --verbose toujours afficher l'en-tête avec\n"
+#~ " les noms de fichiers\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ " -v, --verbose toujours afficher l'en-tête avec\n"
+#~ " les noms de fichiers\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ " -v, --verbose toujours afficher l'en-tête avec\n"
+#~ " les noms de fichiers\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ " -v, --verbose toujours afficher l'en-tête avec\n"
+#~ " les noms de fichiers\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Afficher la somme de contrôle CRC et le décompte d'octets de chaque "
+#~ "FICHIER.\n"
+#~ "\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Afficher la somme de contrôle CRC et le décompte d'octets de chaque "
+#~ "FICHIER.\n"
+#~ "\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ " -v, --verbose toujours afficher l'en-tête avec\n"
+#~ " les noms de fichiers\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Afficher la somme de contrôle CRC et le décompte d'octets de chaque "
+#~ "FICHIER.\n"
+#~ "\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ " -v, --verbose toujours afficher l'en-tête avec\n"
+#~ " les noms de fichiers\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#~ msgid ""
+#~ "Change the group membership of each FILE to GROUP.\n"
+#~ "\n"
+#~ " -c, --changes like verbose but report only when a change is "
+#~ "made\n"
+#~ " --dereference affect the referent of each symbolic link, "
+#~ "rather\n"
+#~ " than the symbolic link itself\n"
+#~ " -h, --no-dereference affect symbolic links instead of any referenced "
+#~ "file\n"
+#~ " (available only on systems that can change the\n"
+#~ " ownership of a symlink)\n"
+#~ " -f, --silent, --quiet suppress most error messages\n"
+#~ " --reference=RFILE use RFILE's group rather than the specified\n"
+#~ " GROUP value\n"
+#~ " -R, --recursive operate on files and directories recursively\n"
+#~ " -v, --verbose output a diagnostic for every file processed\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Changer le groupe d'appartenance de chaque FICHIER au GROUPE.\n"
+#~ "\n"
+#~ " -c, --changes utiliser le mode bavard mais rapporter "
+#~ "seulement\n"
+#~ " les modifications lorsqu'elles surviennent\n"
+#~ " --dereference affecter le référent de chaque lien "
+#~ "symbolique,\n"
+#~ " plutôt que le lien symbolique lui-même\n"
+#~ " -h, --no-dereference modifier les liens symboliques au lieu des\n"
+#~ " fichiers référencés (disponible seulement\n"
+#~ " sur les systèmes offrant l'appel système "
+#~ "lchown)\n"
+#~ " -f, --silent, --quiet supprimer la plupart des messages d'erreur\n"
+#~ " --reference=FICHIER utiliser le groupe de référence du FICHIER\n"
+#~ " au lieu d'une valeur de groupe\n"
+#~ " -R, --recursive modifier récursivement fichiers et "
+#~ "répertoires\n"
+#~ " -v, --verbose produire un diagnostic pour chaque fichier "
+#~ "traité\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#~ msgid ""
+#~ "Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+#~ "\n"
+#~ " -c, --changes like verbose but report only when a change is "
+#~ "made\n"
+#~ " --dereference affect the referent of each symbolic link, "
+#~ "rather\n"
+#~ " than the symbolic link itself\n"
+#~ " -h, --no-dereference affect symbolic links instead of any referenced "
+#~ "file\n"
+#~ " (available only on systems that can change the\n"
+#~ " ownership of a symlink)\n"
+#~ " --from=CURRENT_OWNER:CURRENT_GROUP\n"
+#~ " change the owner and/or group of each file only "
+#~ "if\n"
+#~ " its current owner and/or group match those "
+#~ "specified\n"
+#~ " here. Either may be omitted, in which case a "
+#~ "match\n"
+#~ " is not required for the omitted attribute.\n"
+#~ " -f, --silent, --quiet suppress most error messages\n"
+#~ " --reference=RFILE use RFILE's owner and group rather than\n"
+#~ " the specified OWNER:GROUP values\n"
+#~ " -R, --recursive operate on files and directories recursively\n"
+#~ " -v, --verbose output a diagnostic for every file processed\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Changer le propriétaire et/ou le groupe de chaque FICHIER.\n"
+#~ "\n"
+#~ " -c, --changes utiliser le mode bavard mais rapporter "
+#~ "seulement\n"
+#~ " les modifications lorsqu'elles surviennent\n"
+#~ " --dereference affecter le référent de chaque lien "
+#~ "symbolique,\n"
+#~ " plutôt que le lien symbolique lui-même\n"
+#~ " -h, --no-dereference modifier les liens symboliques au lieu des\n"
+#~ " fichiers référencés (disponible seulement\n"
+#~ " sur les systèmes offrant l'appel système "
+#~ "lchown)\n"
+#~ " --from=PROPRIÉTAIRE_COURANT:GROUPE_COURANT\n"
+#~ " changer le propriétaire et/ou le groupe de "
+#~ "chaque fichier\n"
+#~ " seulement s'il y a concordance avec le "
+#~ "propriétaire\n"
+#~ " et/ou groupe courant spécifié. Les deux "
+#~ "peuvent être\n"
+#~ " omis, auquel cas la concordance n'est pas "
+#~ "requise pour\n"
+#~ " l'argument non spécifié.\n"
+#~ " -f, --silent, --quiet supprimer la plupart des messages d'erreur\n"
+#~ " --reference=FICHIER utiliser l'appartenance du propriétaire et "
+#~ "du\n"
+#~ " groupe du FICHIER de référence au lieu\n"
+#~ " de valeurs explicites PROPRIÉTAIRE:GROUPE\n"
+#~ " -R, --recursive modifier récursivement fichiers et "
+#~ "répertoires\n"
+#~ " -v, --verbose indiquer ce qui a été fait\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+
+#~ msgid ""
+#~ " -l, --link link files instead of copying\n"
+#~ " -L, --dereference always follow symbolic links\n"
+#~ " -p same as --preserve=mode,ownership,"
+#~ "timestamps\n"
+#~ " --preserve[=ATTR_LIST] preserve the specified attributes "
+#~ "(default:\n"
+#~ " mode,ownership,timestamps), if possible\n"
+#~ " additional attributes: links, all\n"
+#~ " --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+#~ " --parents append source path to DIRECTORY\n"
+#~ " -P same as `--no-dereference'\n"
+#~ " -r copy recursively, non-directories as "
+#~ "files\n"
+#~ " WARNING: use -R instead when you might "
+#~ "copy\n"
+#~ " special files like FIFOs or /dev/zero\n"
+#~ " --remove-destination remove each existing destination file "
+#~ "before\n"
+#~ " attempting to open it (contrast with --"
+#~ "force)\n"
+#~ msgstr ""
+#~ " -l, --link établir des liens sur les fichiers au lieu \n"
+#~ " de copier\n"
+#~ " -L, --dereference toujours suivre les liens symboliques\n"
+#~ " -p, identique à --preserve=mode,ownership,"
+#~ "timestamps\n"
+#~ " --preserve[=ATTRIBUTS] préserver les attributs (par défaut:\n"
+#~ " mode, propriété, )\n"
+#~ " si possible et les attributs additionnels: "
+#~ "links,all\n"
+#~ " --no-preserve[=ATTRIBUTS]\n"
+#~ " ne pas préserver les attributs spécifiés\n"
+#~ " --parents accoller le chemin du répertoire source au "
+#~ "RÉPERTOIRE\n"
+#~ " -P identique à `--no-deference'\n"
+#~ " -r copier récursivement , les non-répertoires\n"
+#~ " comme des fichiers\n"
+#~ " ATTENTION: l'utilisation de -R à la place "
+#~ "peut copier\n"
+#~ " les fichiers spéciaux comme FIFO ou /dev/"
+#~ "zero\n"
+#~ " --remove-destination enlever chaque fichier de destination "
+#~ "existant\n"
+#~ " avant de l'ouvrir (par contraste avec --"
+#~ "force)\n"
+
+#~ msgid ""
+#~ " --sparse=WHEN control creation of sparse files\n"
+#~ " -R, --recursive copy directories recursively\n"
+#~ " --reply={yes,no,query} specify how to handle the prompt about an\n"
+#~ " existing destination file\n"
+#~ " --strip-trailing-slashes remove any trailing slashes from each "
+#~ "SOURCE\n"
+#~ " argument\n"
+#~ " -s, --symbolic-link make symbolic links instead of copying\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " --target-directory=DIRECTORY move all SOURCE arguments into "
+#~ "DIRECTORY\n"
+#~ " -u, --update copy only when the SOURCE file is newer\n"
+#~ " than the destination file or when the\n"
+#~ " destination file is missing\n"
+#~ msgstr ""
+#~ " --sparse=DATE contrôler la DATE de création des fichiers\n"
+#~ " dispersés\n"
+#~ " -R, --recursive copier récursivement les répertoires\n"
+#~ " --reply={yes,no,query} spécifier comment traiter les requêtes à "
+#~ "propos\n"
+#~ " d'un fichier de destination existant\n"
+#~ " --strip-trailing-slashes\n"
+#~ " enlever les '/' en suffixe de chacun\n"
+#~ " des arguments SOURCE\n"
+#~ " -s, --symbolic-link créer des liens symboliques au lieu de "
+#~ "copier\n"
+#~ " -S, --suffix=SUFFIXE écraser le suffixe usuel d'archivage\n"
+#~ " par le SUFFIXE\n"
+#~ " --target-directory=RÉPERTOIRE\n"
+#~ " déplacer tous les fichiers SOURCE en "
+#~ "arguments\n"
+#~ " vers le RÉPERTOIRE\n"
+#~ " -u, --update copier seulement lorsque le fichier SOURCE "
+#~ "est\n"
+#~ " plus récent que le fichier de DESTINATION "
+#~ "ou\n"
+#~ " lorsque le fichier de DESTINATION n'existe "
+#~ "pas\n"
+
+#~ msgid ""
+#~ "Copy a file, converting and formatting according to the options.\n"
+#~ "\n"
+#~ " bs=BYTES force ibs=BYTES and obs=BYTES\n"
+#~ " cbs=BYTES convert BYTES bytes at a time\n"
+#~ " conv=KEYWORDS convert the file as per the comma separated keyword "
+#~ "list\n"
+#~ " count=BLOCKS copy only BLOCKS input blocks\n"
+#~ " ibs=BYTES read BYTES bytes at a time\n"
+#~ " if=FILE read from FILE instead of stdin\n"
+#~ " obs=BYTES write BYTES bytes at a time\n"
+#~ " of=FILE write to FILE instead of stdout\n"
+#~ " seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+#~ " skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "BLOCKS and BYTES may be followed by the following multiplicative "
+#~ "suffixes:\n"
+#~ "xM M, c 1, w 2, b 512, kD 1000, k 1024, MD 1,000,000, M 1,048,576,\n"
+#~ "GD 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.\n"
+#~ "Each KEYWORD may be:\n"
+#~ "\n"
+#~ " ascii from EBCDIC to ASCII\n"
+#~ " ebcdic from ASCII to EBCDIC\n"
+#~ " ibm from ASCII to alternated EBCDIC\n"
+#~ " block pad newline-terminated records with spaces to cbs-size\n"
+#~ " unblock replace trailing spaces in cbs-size records with newline\n"
+#~ " lcase change upper case to lower case\n"
+#~ " notrunc do not truncate the output file\n"
+#~ " ucase change lower case to upper case\n"
+#~ " swab swap every pair of input bytes\n"
+#~ " noerror continue after read errors\n"
+#~ " sync pad every input block with NULs to ibs-size; when used\n"
+#~ " with block or unblock, pad with spaces rather than NULs\n"
+#~ msgstr ""
+#~ "Copier un fichier, en le convertissant et le formatant selon les "
+#~ "options:\n"
+#~ "\n"
+#~ " bs=N forcer ibs=N octets et obs=N octets\n"
+#~ " cbs=N convertir N octets à la fois\n"
+#~ " conv=CLÉS convertir le fichier selon les mots CLÉS d'une liste\n"
+#~ " séparés par une virgule\n"
+#~ " count=N copier seulement N blocs à partir de l'entrée\n"
+#~ " ibs=N lire N octets à la fois\n"
+#~ " if=FICHIER lire à partir du FICHIER au lieu de l'entrée standard\n"
+#~ " obs=N écrire N octets à la fois\n"
+#~ " of=FICHIER écrire dans le FICHIER au lieu de la sortie standard\n"
+#~ " seek=N escamoter N blocs de taille 'obs' du fichier de sortie\n"
+#~ " skip=N escamoter N blocs de taille 'ibs' du fichier d'entrée\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "N peut être suivi d'un suffixe multiplicatif suivant:,\n"
+#~ "xM M, c 1, w 2, b 512, kD 1000, k 1024, MD 1,000,000, M 1,048,576,\n"
+#~ "GD 1,000,000,000, G 1,073,741,824, et ainsi de suite pour T, P, E, Z, Y.\n"
+#~ "Chaque mot CLÉ peut être:\n"
+#~ "\n"
+#~ " ascii de l'EBCDIC vers l'ASCII\n"
+#~ " ebcdic de l'ASCII vers l'EBCDIC\n"
+#~ " ibm de l'ASCII vers l'EBCDIC en utilisant une table différente\n"
+#~ " block remplir les enregistrements terminés par un saut de ligne\n"
+#~ " par des blancs jusqu'à l'obtention de la taille 'cbs'\n"
+#~ " unblock remplacer les blancs de la fin des enregistrements\n"
+#~ " de taille 'cbs' par des sauts de ligne\n"
+#~ " lcase changer les majuscules en minuscules\n"
+#~ " notrunc ne pas tronquer le fichier de sortie\n"
+#~ " ucase changer les minuscules en majuscules\n"
+#~ " swab interchanger chaque paire d'octets\n"
+#~ " noerror continuer même après des erreurs de lecture\n"
+#~ " sync remplir chaque bloc lu par des nuls jusqu'à concurrence\n"
+#~ " de la taille 'ibs'\n"
+
+#~ msgid ""
+#~ "Show information about the filesystem on which each FILE resides,\n"
+#~ "or all filesystems by default.\n"
+#~ "\n"
+#~ " -a, --all include filesystems having 0 blocks\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -i, --inodes list inode information instead of block usage\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l, --local limit listing to local filesystems\n"
+#~ " -m, --megabytes like --block-size=1048576\n"
+#~ " --no-sync do not invoke sync before getting usage info "
+#~ "(default)\n"
+#~ " -P, --portability use the POSIX output format\n"
+#~ " --sync invoke sync before getting usage info\n"
+#~ " -t, --type=TYPE limit listing to filesystems of type TYPE\n"
+#~ " -T, --print-type print filesystem type\n"
+#~ " -x, --exclude-type=TYPE limit listing to filesystems not of type "
+#~ "TYPE\n"
+#~ " -v (ignored)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Afficher les informations à propos du système de fichiers sur lequel\n"
+#~ "réside chaque FICHIER ou de tous les systèmes de fichier par défaut.\n"
+#~ "\n"
+#~ " -a, --all inclure les systèmes de fichiers ayant 0 bloc\n"
+#~ " --block-size=TAILLE utiliser la TAILLE de blocs\n"
+#~ " -h, --human-readable afficher les tailles dans un format lisible "
+#~ "par\n"
+#~ " un humain (i.e. 1K 234M 2G)\n"
+#~ " -H, --si idem mais utiliser un multiple de 1000\n"
+#~ " au lieu de 1024\n"
+#~ " -i, --inodes lister les informations sur les 'inodes'\n"
+#~ " plutôt que sur l'utilisation des blocs\n"
+#~ " -k, --kilobytes utiliser des blocs de 1024 octets, et non pas\n"
+#~ " de 512 octets malgré l'option POSIXLY_CORRECT\n"
+#~ " -m, --megabytes utiliser des blocs de 1024K-octets, et non pas\n"
+#~ " de 512 octets malgré l'option POSIXLY_CORRECT\n"
+#~ " --no-sync ne pas effectuer une synchronisation avant\n"
+#~ " d'obtenir les informations d'utilisation\n"
+#~ " des disques (par défaut)\n"
+#~ " -P, --portability utiliser le format de sortie POSIX\n"
+#~ " --sync demander une synchronisation avant d'obtenir "
+#~ "les\n"
+#~ " informations d'utilisation des disques\n"
+#~ " (par défaut)\n"
+#~ " -t, --type=TYPE limiter l'affichage au TYPE de système de\n"
+#~ " fichiers\n"
+#~ " -T, --print-type afficher le type du système de fichiers\n"
+#~ " -x, --exclude-type=TYPE limiter l'affichage en excluant le TYPE\n"
+#~ " de système de fichiers\n"
+#~ " -v (ignorée)\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#~ msgid ""
+#~ "Summarize disk usage of each FILE, recursively for directories.\n"
+#~ "\n"
+#~ " -a, --all write counts for all files, not just directories\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -b, --bytes print size in bytes\n"
+#~ " -c, --total produce a grand total\n"
+#~ " -D, --dereference-args dereference PATHs when symbolic link\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l, --count-links count sizes many times if hard linked\n"
+#~ " -L, --dereference dereference all symbolic links\n"
+#~ " -m, --megabytes like --block-size=1048576\n"
+#~ " -S, --separate-dirs do not include size of subdirectories\n"
+#~ " -s, --summarize display only a total for each argument\n"
+#~ " -x, --one-file-system skip directories on different filesystems\n"
+#~ " -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+#~ "FILE.\n"
+#~ " --exclude=PAT Exclude files that match PAT.\n"
+#~ " --max-depth=N print the total for a directory (or file, with --"
+#~ "all)\n"
+#~ " only if it is N or fewer levels below the "
+#~ "command\n"
+#~ " line argument; --max-depth=0 is the same as\n"
+#~ " --summarize\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Produire un sommaire de l'utilisation de l'espace disque de chaque "
+#~ "FICHIER,\n"
+#~ "et récursivement dans les répertoires.\n"
+#~ "\n"
+#~ " -a, --all afficher le décompte pour tous les fichiers,\n"
+#~ " pas seulement pour les répertoires\n"
+#~ " --block-size=TAILLE utiliser la TAILLE de blocs\n"
+#~ " -b, --bytes afficher la taille en octets\n"
+#~ " -c, --total produire le grand total\n"
+#~ " -D, --dereference-args ne pas tenir compte des CHEMINS lorsqu'il y a\n"
+#~ " des liens symboliques\n"
+#~ " -h, --human-readable afficher les tailles dans un format lisible "
+#~ "par\n"
+#~ " un humain (i.e. 1K 234M 2G)\n"
+#~ " -H, --si idem mais utiliser un multiple de 1000\n"
+#~ " au lieu de 1024\n"
+#~ " -k, --kilobytes utiliser des blocs de 1024 octets, et non pas\n"
+#~ " de 512 octets malgré l'option POSIXLY_CORRECT\n"
+#~ " -l, --count-links dénombrer les tailles aussi souvent qu'il y a\n"
+#~ " de liens directs\n"
+#~ " -L, --dereference ne pas tenir compte de tous les liens\n"
+#~ " symboliques\n"
+#~ " -m, --megabytes utiliser des blocs de 1024K-octets, et non "
+#~ "pas\n"
+#~ " de 512 octets malgré l'option POSIXLY_CORRECT\n"
+#~ " -S, --separate-dirs ne pas inclure la taille des sous-répertoires\n"
+#~ " -s, --summarize afficher seulement un total pour chaque type\n"
+#~ " d'argument\n"
+#~ " -x, --one-file-system escamoter les répertoires de différents\n"
+#~ " -X FICHIER, \n"
+#~ " --exclude-from=FICHIER\n"
+#~ " exclure les fichiers qui concordent avec\n"
+#~ " le nom du FICHIER\n"
+#~ " --exclude=EXPRES exclure les fichier qui concordent avec\n"
+#~ " l'expression\n"
+#~ " --max-depth=N afficher le total pour un répertoire (ou un\n"
+#~ " fichier, avec l'option --all) seulement\n"
+#~ " si N a moins de niveau dans la ligne de "
+#~ "commande;\n"
+#~ " --max-depth=0 est identique à --summurize\n"
+#~ " systèmes de fichiers\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#~ msgid ""
+#~ "In the first two formats, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+#~ "the existing DIRECTORY, while setting permission modes and owner/group.\n"
+#~ "In the third format, create all components of the given DIRECTORY(ies).\n"
+#~ "\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination file\n"
+#~ " -b like --backup but does not accept an argument\n"
+#~ " -c (ignored)\n"
+#~ " -d, --directory treat all arguments as directory names; create all\n"
+#~ " components of the specified directories\n"
+#~ " -D create all leading components of DEST except the "
+#~ "last,\n"
+#~ " then copy SOURCE to DEST; useful in the 1st "
+#~ "format\n"
+#~ " -g, --group=GROUP set group ownership, instead of process' current "
+#~ "group\n"
+#~ " -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-"
+#~ "xr-x\n"
+#~ " -o, --owner=OWNER set ownership (super-user only)\n"
+#~ " -p, --preserve-timestamps apply access/modification times of SOURCE "
+#~ "files\n"
+#~ " to corresponding destination files\n"
+#~ " -s, --strip strip symbol tables, only for 1st and 2nd formats\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " -v, --verbose print the name of each directory as it is created\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Dans les deux premiers formats, copier la SOURCE vers la DESTINATION ou "
+#~ "des\n"
+#~ "fichiers de plusieurs SOURCE(S) vers un RÉPERTOIRE existant, tout en "
+#~ "initialisant\n"
+#~ "les bits de protection et l'appartenance propriétaire/groupe. Dans le\n"
+#~ "3e format, créer tous les composants des RÉPERTOIRES spécifiés.\n"
+#~ "\n"
+#~ " --backup[=CONTRÔLE] archiver chaque fichier de destination\n"
+#~ " -b identique à --backup mais sans argument\n"
+#~ " -c (ignorée)\n"
+#~ " -d, --directory créer les répertoires de tête,\n"
+#~ " obligatoire dans le dans le 3e format\n"
+#~ " -D créer tous les composants de tête de la\n"
+#~ " DESTINATION excepté le dernier\n"
+#~ " ensuite copier la SOURCE vers la DESTINATION\n"
+#~ " (pratique lorsque le 1er format est utlisé)\n"
+#~ " -g, --group=GROUPE attribuer l'appartenance au GROUPE,\n"
+#~ " plutôt qu'au groupe courant du processus\n"
+#~ " -m, --mode=MODE initialiser les permissions d'accès au MODE\n"
+#~ " (comme par chmod), au lieu de rw-r--r--\n"
+#~ " -o, --owner=PROPRIÉTAIRE attribuer l'appartenance au PROPRIÉTAIRE\n"
+#~ " (mode super-user seulement)\n"
+#~ " -p, --preserve-timestamps conserver les dates d'accès et de "
+#~ "modification\n"
+#~ " des fichiers SOURCES aux fichiers de la "
+#~ "DESTINATION\n"
+#~ " -s, --strip enlever les tables de symboles,\n"
+#~ " valable pour les 1er et 2e formats seulement\n"
+#~ " -S, --suffix=SUFFIXE écraser le SUFFIXE usuel d'archivage\n"
+#~ " -v, --verbose afficher le nom de chaque répertoire créé\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Create a link to the specified TARGET with optional LINK_NAME.\n"
+#~ "If LINK_NAME is omitted, a link with the same basename as the TARGET is\n"
+#~ "created in the current directory. When using the second form with more\n"
+#~ "than one TARGET, the last argument must be a directory; create links\n"
+#~ "in DIRECTORY to each TARGET. Create hard links by default, symbolic\n"
+#~ "links with --symbolic. When creating hard links, each TARGET must "
+#~ "exist.\n"
+#~ "\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination "
+#~ "file\n"
+#~ " -b like --backup but does not accept an "
+#~ "argument\n"
+#~ " -d, -F, --directory hard link directories (super-user only)\n"
+#~ " -f, --force remove existing destination files\n"
+#~ " -n, --no-dereference treat destination that is a symlink to a\n"
+#~ " directory as if it were a normal file\n"
+#~ " -i, --interactive prompt whether to remove destinations\n"
+#~ " -s, --symbolic make symbolic links instead of hard links\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " --target-directory=DIRECTORY specify the DIRECTORY in which to "
+#~ "create\n"
+#~ " the links\n"
+#~ " -v, --verbose print name of each file before linking\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Créer un lien vers la CIBLE spécifiée avec optionnellement un "
+#~ "NOM_DE_LIEN.\n"
+#~ "S'il y le NOM_DE_LIEN est omis, un lien ayant la même base comme CIBLE "
+#~ "est\n"
+#~ "créé dans le répertoire courant. Lors de l'utilisation de la seconde "
+#~ "forme\n"
+#~ "avec plus d'une CIBLE, le dernier argument doit être un répertoire;\n"
+#~ "créer des liens dans le RÉPERTOIRE pour chaque CIBLE. Créer des liens "
+#~ "directs\n"
+#~ "par défaut et des liens symboliques avec l'option --symbolic. Lors de "
+#~ "la\n"
+#~ "création de liens directs, chaque CIBLE doit exister.\n"
+#~ "\n"
+#~ " --backup[=CONTRÔLE] archiver chaque fichier de destination\n"
+#~ " -b identique à --backup mais sans argument\n"
+#~ " -d, -F, --directory créer un lien direct à un répertoire\n"
+#~ " (super-user seulement)\n"
+#~ " -f, --force détruire les destinations existantes,\n"
+#~ " sans demander confirmation\n"
+#~ " -n, --no-dereference avec --force, détruire la destination qui\n"
+#~ " est un lien symbolique vers un répertoire \n"
+#~ " -i, --interactive demander confirmation avant de détruire\n"
+#~ " les destinations\n"
+#~ " -s, --symbolic créer un lien symbolique au lieu d'un\n"
+#~ " lien direct\n"
+#~ " -S, --suffix=SUFFIXE écraser le suffixe d'archivage par le "
+#~ "SUFFIXE\n"
+#~ " --target-directory=RÉPERTOIRE\n"
+#~ " déplacer tous les fichiers SOURCE en "
+#~ "arguments\n"
+#~ " vers le RÉPERTOIRE\n"
+#~ " -v, --verbose afficher le nom de chaque fichier avant de "
+#~ "créer un lien\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "List information about the FILEs (the current directory by default).\n"
+#~ "Sort entries alphabetically if none of -cftuSUX nor --sort.\n"
+#~ "\n"
+#~ " -a, --all do not hide entries starting with .\n"
+#~ " -A, --almost-all do not list implied . and ..\n"
+#~ " -b, --escape print octal escapes for nongraphic "
+#~ "characters\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -B, --ignore-backups do not list implied entries ending with ~\n"
+#~ " -c with -lt: sort by, and show, ctime (time of "
+#~ "last\n"
+#~ " modification of file status information)\n"
+#~ " with -l: show ctime and sort by name\n"
+#~ " otherwise: sort by ctime\n"
+#~ " -C list entries by columns\n"
+#~ " --color[=WHEN] control whether color is used to distinguish "
+#~ "file\n"
+#~ " types. WHEN may be `never', `always', or "
+#~ "`auto'\n"
+#~ " -d, --directory list directory entries instead of contents\n"
+#~ " -D, --dired generate output designed for Emacs' dired "
+#~ "mode\n"
+#~ " -f do not sort, enable -aU, disable -lst\n"
+#~ " -F, --classify append indicator (one of */=@|) to entries\n"
+#~ " --format=WORD across -x, commas -m, horizontal -x, long -"
+#~ "l,\n"
+#~ " single-column -1, verbose -l, vertical -C\n"
+#~ " --full-time like -l --time-style=full-iso\n"
+#~ msgstr ""
+#~ "Afficher les informations au sujet des FICHIERS (du répertoire\n"
+#~ "courant par défaut). Trier les entrées alphabétiquement si aucune\n"
+#~ "des options -cftuSUX ou --sort n'est utilisée.\n"
+#~ "\n"
+#~ " -a, --all afficher les noms cachés débutant par .\n"
+#~ " -A, --almost-all ne pas inclure dans la liste . et ..\n"
+#~ " -b, --escape afficher en octal les caractères\n"
+#~ " non-graphiques\n"
+#~ " en utilisant des séquences d'échappement\n"
+#~ " --block-size=TAILLE utiliser la TAILLE de blocs\n"
+#~ " -B, --ignore-backups ne pas inclure dans la liste,\n"
+#~ " les entrées se terminant par ~\n"
+#~ " -c lister les fichiers triés selon leur date "
+#~ "de\n"
+#~ " modification; \n"
+#~ " avec -lt: trier par la deate de "
+#~ "modification\n"
+#~ " et afficher la date de "
+#~ "modification (ctime)\n"
+#~ " avec -l: trier par nom et afficher avec\n"
+#~ " avec la date de modification "
+#~ "(ctime)\n"
+#~ " autrement: trier par la date de modification "
+#~ "(ctime)\n"
+#~ " -C afficher en colonnes\n"
+#~ " --color[=PARAM] afficher les fichiers avec une couleur "
+#~ "selon\n"
+#~ " leur type à l'aide d'un des PARAMètres\n"
+#~ " suivants: never, always ou auto\n"
+#~ " -d, --directory lister les noms de répertoires plutôt\n"
+#~ " que leur contenu\n"
+#~ " -D, --dired générer une sortie adaptée pour le mode\n"
+#~ " 'dired' de Emacs\n"
+#~ " -f ne pas trier, autoriser -aU, interdire -lst\n"
+#~ " -F, --classify ajouter un caractère (parmi */=@|) pour "
+#~ "chaque entrée\n"
+#~ " --format=MODE afficher selon le MODE suivant: -x croisé,\n"
+#~ " -m avec virgules, -x horizontal, -l long,\n"
+#~ " -1 en colonne simple, -l en mode bavard,\n"
+#~ " -C vertical\n"
+#~ " --full-time identique à -l --time-style=full-iso\n"
+
+#~ msgid ""
+#~ " -g like -l, but do not list owner\n"
+#~ " -G, --no-group inhibit display of group information\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " --si likewise, but use powers of 1000 not 1024\n"
+#~ " -H, --dereference-command-line follow symbolic links on the command "
+#~ "line\n"
+#~ " --indicator-style=WORD append indicator with style WORD to entry "
+#~ "names:\n"
+#~ " none (default), classify (-F), file-type (-"
+#~ "p)\n"
+#~ " -i, --inode print index number of each file\n"
+#~ " -I, --ignore=PATTERN do not list implied entries matching shell "
+#~ "PATTERN\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l use a long listing format\n"
+#~ " -L, --dereference when showing file information for a "
+#~ "symbolic\n"
+#~ " link, show information for the file the "
+#~ "link\n"
+#~ " references rather than for the link "
+#~ "itself\n"
+#~ " -m fill width with a comma separated list of "
+#~ "entries\n"
+#~ msgstr ""
+#~ " -g (ignorée)\n"
+#~ " -G, --no-group inhiber l'affichage des informations de "
+#~ "groupe\n"
+#~ " -h, --human-readable afficher les tailles dans un format lisible "
+#~ "par\n"
+#~ " --si un humain (i.e. 1K 234M 2G) en utilisant un "
+#~ "multiple\n"
+#~ " 1000 et non pas de 1024\n"
+#~ " -H, --dereference-command-line\n"
+#~ " suivre les liens symboliques de la ligne de "
+#~ "commande\n"
+#~ " --indicator-style=CODE ajouter en suffixe l'indicateur selon le "
+#~ "CODE:\n"
+#~ " none (par défaut), classify (-F), file-type "
+#~ "(-p)\n"
+#~ " -i, --inode afficher le numéro d'index de chaque "
+#~ "fichier\n"
+#~ " -I, --ignore=PATRON ne pas inclure dans la liste les entrées\n"
+#~ " concordant avec le PATRON de shell\n"
+#~ " -k, --kilobytes identique à --block-size=1024\n"
+#~ " -l utiliser le format long d'affichage\n"
+#~ " -L, --dereference afficher les entrées pointées par des\n"
+#~ " liens symboliques, monter l'information "
+#~ "pointée par le lien\n"
+#~ " -m remplir la largeur par une liste d'entrées\n"
+#~ " séparée par des virgules\n"
+
+#~ msgid ""
+#~ " -S sort by file size\n"
+#~ " --sort=WORD extension -X, none -U, size -S, time -t,\n"
+#~ " version -v\n"
+#~ " status -c, time -t, atime -u, access -u, use "
+#~ "-u\n"
+#~ " --time=WORD show time as WORD instead of modification "
+#~ "time:\n"
+#~ " atime, access, use, ctime or status; use\n"
+#~ " specified time as sort key if --sort=time\n"
+#~ " --time-style=WORD show times using style WORD:\n"
+#~ " full-iso, iso, locale, posix-iso\n"
+#~ " -t sort by modification time\n"
+#~ " -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+#~ " -u with -lt: sort by, and show, access time\n"
+#~ " with -l: show access time and sort by "
+#~ "name\n"
+#~ " otherwise: sort by access time\n"
+#~ " -U do not sort; list entries in directory "
+#~ "order\n"
+#~ " -v sort by version\n"
+#~ " -w, --width=COLS assume screen width instead of current "
+#~ "value\n"
+#~ " -x list entries by lines instead of by columns\n"
+#~ " -X sort alphabetically by entry extension\n"
+#~ " -1 list one file per line\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "By default, color is not used to distinguish types of files. That is\n"
+#~ "equivalent to using --color=none. Using the --color option without the\n"
+#~ "optional WHEN argument is equivalent to using --color=always. With\n"
+#~ "--color=auto, color codes are output only if standard output is "
+#~ "connected\n"
+#~ "to a terminal (tty).\n"
+#~ msgstr ""
+#~ " -S trier selon la taille des fichiers\n"
+#~ " --sort=CODE trier selon le CODE suivant: -c pour ctime,\n"
+#~ " -X pour extension, -U pour aucun,\n"
+#~ " -S pour la taille, -t pour la date\n"
+#~ " -v pour la version, -c pour le statut, \n"
+#~ " -u pour la date d'accès, -u pour l'accès\n"
+#~ " --time=CODE afficher les temps d'accès en mots au lieu "
+#~ "de\n"
+#~ " date de modification:\n"
+#~ " atime, access, use, ctime ou status\n"
+#~ " --time-style=CODE afficher les dates selon le CODE:\n"
+#~ " full-iso, iso, locale, posix-iso\n"
+#~ " -t trier par la date de modification; avec -l:\n"
+#~ " afficher 'mtime'\n"
+#~ " -T, --tabsize=TAILLE utiliser la tabulation de la TAILLE\n"
+#~ " pour chaque colonne au lieu de 8\n"
+#~ " -u trier selon la date du dernier accès; avec -"
+#~ "l:\n"
+#~ " afficher 'atime'\n"
+#~ " -U ne pas trier: afficher selon l'ordre\n"
+#~ " original des entrées d'un répertoire\n"
+#~ " -v trier par version\n"
+#~ " -w, --width=LARGEUR utiliser la LARGEUR d'écran au lieu\n"
+#~ " des valeurs courantes\n"
+#~ " -x afficher les entrées par lignes plutôt que\n"
+#~ " par colonnes\n"
+#~ " -X trier alphabétiquement par extension des\n"
+#~ " entrées\n"
+#~ " -1 afficher un fichier par ligne\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "Par défaut, la couleur n'est pas utilisée pour distinguer les différents "
+#~ "types\n"
+#~ "de fichiers. Cela est équivalent à l'utilisation de l'option --"
+#~ "color=none. \n"
+#~ "L'utilisation de l'option --color sans l'argument WHEN est équivalent à\n"
+#~ "l'utilisation de --colors=always. Avec l'option --color=auto, les codes "
+#~ "de\n"
+#~ "couleur sont transmis vers la sortie standard si celle-ci est reliée à "
+#~ "un \n"
+#~ "terminal (tty).\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Create named pipes (FIFOs) with the given NAMEs.\n"
+#~ "\n"
+#~ " -m, --mode=MODE set permission mode (as in chmod), not a=rw - umask\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ " -v, --verbose toujours afficher l'en-tête avec\n"
+#~ " les noms de fichiers\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#~ msgid ""
+#~ "Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+#~ "for even very expensive hardware probing to recover the data.\n"
+#~ "\n"
+#~ " -f, --force change permissions to allow writing if necessary\n"
+#~ " -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+#~ " -s, --size=N shred this many bytes (suffixes like k, M, G accepted)\n"
+#~ " -u, --remove truncate and remove file after overwriting\n"
+#~ " -v, --verbose show progress\n"
+#~ " -x, --exact do not round file sizes up to the next full block\n"
+#~ " -z, --zero add a final overwrite with zeros to hide shredding\n"
+#~ " - shred standard output\n"
+#~ " --help display this help and exit\n"
+#~ " --version print version information and exit\n"
+#~ "\n"
+#~ "Delete FILE(s) if --remove (-u) is specified. The default is not to "
+#~ "remove\n"
+#~ "the files because it is common to operate on device files like /dev/hda,\n"
+#~ "and those files usually should not be removed. When operating on "
+#~ "regular\n"
+#~ "files, most people use the --remove option.\n"
+#~ "\n"
+#~ "CAUTION: Note that shred relies on a very important assumption:\n"
+#~ "that the filesystem overwrites data in place. This is the traditional\n"
+#~ "way to do things, but many modern filesystem designs do not satisfy this\n"
+#~ "assumption. The following are examples of filesystems on which shred is\n"
+#~ "not effective:\n"
+#~ "\n"
+#~ "* log-structured or journaled filesystems, such as those supplied with\n"
+#~ " AIX and Solaris (and JFS, ReiserFS, XFS, etc.)\n"
+#~ "\n"
+#~ "* filesystems that write redundant data and carry on even if some writes\n"
+#~ " fail, such as RAID-based filesystems\n"
+#~ "\n"
+#~ "* filesystems that make snapshots, such as Network Appliance's NFS "
+#~ "server\n"
+#~ "\n"
+#~ "* filesystems that cache in temporary locations, such as NFS\n"
+#~ " version 3 clients\n"
+#~ "\n"
+#~ "* compressed filesystems\n"
+#~ "\n"
+#~ "In addition, file system backups and remote mirrors may contain copies\n"
+#~ "of the file that cannot be removed, and that will allow a shredded file\n"
+#~ "to be recovered later.\n"
+#~ msgstr ""
+#~ "Écraser un fichier de façon répétitive, afin de rendre difficile\n"
+#~ "toute récupération des données par du matériel même coûteux.\n"
+#~ "\n"
+#~ " -f, --force modifier les permissions pour permettre\n"
+#~ " l'écriture si nécessaire\n"
+#~ " -n, --iterations=N écraser N fois au lieu du nombre par défaut %d\n"
+#~ " -s, --size=N déchiqueter N octets (les suffixes k, M, G sont "
+#~ "acceptés)\n"
+#~ " -u, --remove tronquer et détruire le fichier après l'avoir "
+#~ "écraser\n"
+#~ " -v, --verbose afficher un indicateur de progrès\n"
+#~ " -x, --exact ne pas arrondir la taille des fichiers\n"
+#~ " jusqu'au prochain bloc complet\n"
+#~ " -z, --zero ajouter une écriture finale avec des zéros\n"
+#~ " pour camoufler le déchiquetage du fichier\n"
+#~ " - déchiqueter l'entrée standard \n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "Détruire le FICHIER si --remove (-u) est spécifié. Le défaut est de ne "
+#~ "pas détruire\n"
+#~ "les fichiers parce qu'il est commun d'opérer sur le fichier du "
+#~ "périphérique comme /dev/hda,\n"
+#~ "et habituellement ces fichiers ne sont pas détruits. Sur des fichier "
+#~ "réguliers,\n"
+#~ "la plupart des gens utilise l'option --remove.\n"
+#~ "\n"
+#~ "ATTENTION: noter que le déchiquetage s'appuie sur l'hypothèse que \n"
+#~ "le système de fichiers écrasera les données en place. Cela est la "
+#~ "manière\n"
+#~ "traditionnelle de faire les choses, mais plusieurs design modernes de "
+#~ "systèmes\n"
+#~ "de fichiers ne se satisfont pas de cette hypothèse. Les exemples suivants "
+#~ "de systèmes\n"
+#~ "de fichiers sont ceux où le déchiquetage n'est pas effectif:\n"
+#~ "\n"
+#~ "* systèmes de fichiers à journalisation, comme ceux fournis avec\n"
+#~ " AIX et Solaris (et JFS, ReiserFS, XFS, etc.)\n"
+#~ "\n"
+#~ "* systèmes de fichiers avec écriture redondante et soutienne les "
+#~ "écritures\n"
+#~ " même lorsqu'il y a erreur d'écriture\n"
+#~ " comme les systèmes de fichiers RAID\n"
+#~ "\n"
+#~ "* systèmes de fichiers qui prennent des instantanés, comme\n"
+#~ " le serveur NFS de Network Appliance\n"
+#~ "\n"
+#~ "* systèmes de fichiers qui utilisent des caches temporaires,\n"
+#~ " comme NFS la version 3 clientète\n"
+#~ "\n"
+#~ "* systèmes de fichiers compressés\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Force changed blocks to disk, update the super block.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Afficher la somme de contrôle CRC et le décompte d'octets de chaque "
+#~ "FICHIER.\n"
+#~ "\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#~ msgid ""
+#~ "Update the access and modification times of each FILE to the current "
+#~ "time.\n"
+#~ "\n"
+#~ " -a change only the access time\n"
+#~ " -c, --no-create do not create any files\n"
+#~ " -d, --date=STRING parse STRING and use it instead of current time\n"
+#~ " -f (ignored)\n"
+#~ " -m change only the modification time\n"
+#~ " -r, --reference=FILE use this file's times instead of current time\n"
+#~ " -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current "
+#~ "time\n"
+#~ " --time=WORD set time given by WORD: access atime use (same "
+#~ "as -a)\n"
+#~ " modify mtime (same as -m)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Note that the three time-date formats recognized for the -d and -t "
+#~ "options\n"
+#~ "and for the obsolescent argument are all different.\n"
+#~ msgstr ""
+#~ "Mettre à jour les dates d'accès et de modification de chaque FICHIER\n"
+#~ "selon la date courante.\n"
+#~ "\n"
+#~ " -a modifier seulement la date d'accès\n"
+#~ " -c, --no-create ne créer aucun fichier\n"
+#~ " -d, --date=CHAÎNE analyser la CHAÎNE et l'utiliser au lieu\n"
+#~ " de la date courante\n"
+#~ " -f (ignorée)\n"
+#~ " -m modifier seulement la date de modification\n"
+#~ " -r, --file=FICHIER utiliser la date du FICHIER comme référence\n"
+#~ " au lieu de la date courante\n"
+#~ " -t DATE utiliser la DATE selon le format:\n"
+#~ " [[CC]AA]MMJJhhmm[.ss]\n"
+#~ " comme tampon date-heure au lieu de la date "
+#~ "courante\n"
+#~ " --time=CODE -a pour 'atime', -m pour 'mtime', -m pour "
+#~ "modifié,\n"
+#~ " -a pour utilisé\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "Noter que les 3 formats du tampon date-heure sont reconnus pour les\n"
+#~ "options -d et -t et les arguments désuets sont tous différents.\n"
+
+#~ msgid "Copyright (C) 2001 Free Software Foundation, Inc."
+#~ msgstr "Copyright © 2001 Free Software Foundation, Inc."
+
+#~ msgid ""
+#~ "Warning: the meaning of `-P' will change in the future to conform to "
+#~ "POSIX.\n"
+#~ "Use `--parents' for the old meaning, and `--no-dereference' for the new "
+#~ "one."
+#~ msgstr ""
+#~ "AVERTISSEMENT: le sens de `-P' changera pour se conformer à POSIX.\n"
+#~ "Utiliser `--parents' pour le vieux sens et `--no-dereference' pour le "
+#~ "nouveau."
+
+#, fuzzy
+#~ msgid "%a %b %d %H:%M:%S %Y"
+#~ msgstr "%b %e %H:%M %Y"
+
+#~ msgid ""
+#~ "when creating character special files, major and minor device\n"
+#~ "numbers must be specified"
+#~ msgstr ""
+#~ "Lors de la création d'un fichier de type caractère spécial, les numéros\n"
+#~ "majeur et mineur de périphériques doivent être spécifiées."
+
+#~ msgid "virtual memory exhausted"
+#~ msgstr "Mémoire virtuelle épuisée"
+
+#~ msgid "group of %s changed to %s\n"
+#~ msgstr "Le groupe d'appartenance de %s a été attribué à %s.\n"
+
+#~ msgid "you are not a member of group `%s'"
+#~ msgstr "Vous n'êtes pas membre du groupe `%s'."
+
+#~ msgid "owner of %s changed to "
+#~ msgstr "L'appartenance de %s a été attribué à "
+
+#, fuzzy
+#~ msgid "cannot remove old link to `%s'"
+#~ msgstr "Ne peut exécuter « ioctl » sur « %s »"
+
+#, fuzzy
+#~ msgid "cannot make fifo `%s'"
+#~ msgstr "Ne peut exécuter « ioctl » sur « %s »"
+
+#~ msgid ""
+#~ "Delete a file securely, first overwriting it to hide its contents.\n"
+#~ "\n"
+#~ " -f, --force change permissions to allow writing if necessary\n"
+#~ " -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+#~ " -s, --size=N shred this many bytes (suffixes like k, M, G accepted)\n"
+#~ " -u, --remove truncate and remove file after overwriting\n"
+#~ " -v, --verbose show progress\n"
+#~ " -x, --exact do not round file sizes up to the next full block\n"
+#~ " -z, --zero add a final overwrite with zeros to hide shredding\n"
+#~ " - shred standard output\n"
+#~ " --help display this help and exit\n"
+#~ " --version print version information and exit\n"
+#~ "\n"
+#~ "FIXME maybe add more discussion here?"
+#~ msgstr ""
+#~ "Détruire un fichier de façon sécuritaire, en l'écrasant pour cacher son "
+#~ "contenu.\n"
+#~ "\n"
+#~ " -f, --force modifier les permissions pour permettre\n"
+#~ " l'écriture si nécessaire\n"
+#~ " -n, --iterations=N écraser N fois au lieu du nombre par défaut %d\n"
+#~ " -s, --size=N déchiqueter N octets (les suffixes k, M, G sont "
+#~ "acceptés)\n"
+#~ " -u, --remove tronquer et détruire le fichier après l'avoir "
+#~ "écraser\n"
+#~ " -v, --verbose afficher un indicateur de progrès\n"
+#~ " -x, --exact ne pas arrondir la taille des fichiers\n"
+#~ " jusqu'au prochain bloc complet\n"
+#~ " -z, --zero ajouter une écriture finale avec des zéros\n"
+#~ " pour camoufler le déchiquetage du fichier\n"
+#~ " - déchiqueter l'entrée standard \n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "FIXME d'autres détails doivent être fournis par le mainteneur?"
+
+#~ msgid "--version-control"
+#~ msgstr "--version-control"
+
+#~ msgid "create %s %s to %s"
+#~ msgstr "Création de %s %s vers %s"
+
+#~ msgid "hard link"
+#~ msgstr "lien direct"
+
+#~ msgid "link"
+#~ msgstr "lien"
+
+#, fuzzy
+#~ msgid "current directory"
+#~ msgstr "répertoire"
+
+#, fuzzy
+#~ msgid "starting directory"
+#~ msgstr "répertoire"
+
+#~ msgid "%s -> %s (backup)\n"
+#~ msgstr "%s -> %s (archivage)\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ msgstr ""
+#~ "Usage: %s [OPTION]... [ENTRÉE]... (sans l'option -G)\n"
+#~ " ou: %s -G [OPTION]... [ÉNTRÉE [SORTIE]]\n"
+
+#, fuzzy
+#~ msgid "Usage: %s [OPTION]... EXISTING_DIR NEW_DIR\n"
+#~ msgstr "Usage: %s [OPTION]... ENSEMBLE1 [ENSEMBLE2]\n"
+
+#, fuzzy
+#~ msgid "cannot rename `.' or `..'"
+#~ msgstr "Ne peut fixer le nom du poste (hostname) à « %s »"
+
+#, fuzzy
+#~ msgid "%s is closed"
+#~ msgstr "L'entrée standard est fermée."
+
+#, fuzzy
+#~ msgid "Error seeking `%s'"
+#~ msgstr "Erreur lors de la lecture %s"
+
+#~ msgid "(Did you remember to open stdin read/write with \"<>file\"?)\n"
+#~ msgstr ""
+#~ "Rappelez-vous d'ouvrir l'entrée standard comme suit: \"<>FICHIER\"\n"
+
+#~ msgid "%s: pass %lu/%lu (%s)...%lu/%lu K"
+#~ msgstr "%s: pass %lu/%lu (%s)...%lu/%lu K"
+
+#, fuzzy
+#~ msgid "Error syncing `%s'"
+#~ msgstr "Erreur lors de la lecture %s"
+
+#, fuzzy
+#~ msgid "Can't fstat file `%s'"
+#~ msgstr "Création du fichier « %s »\n"
+
+#~ msgid "`%s' is not a regular file: use -d to enable operations on devices"
+#~ msgstr ""
+#~ "`%s' n'est pas un fichier régulier: \n"
+#~ "utiliser -d pour permettre les opérations sur périphériques"
+
+#~ msgid "unable to allocate storage for %lu passes"
+#~ msgstr "incapable d'allouer de l'espace de stockage pour %lu passes"
+
+#, fuzzy
+#~ msgid "%s: deleting"
+#~ msgstr "%s: fichier trop long"
+
+#, fuzzy
+#~ msgid "%s: deleted"
+#~ msgstr "%s: fichier tronqué"
+
+#~ msgid "sparse type"
+#~ msgstr "Type dispersé."
+
+#~ msgid "time type"
+#~ msgstr "Type de date"
+
+#~ msgid "format type"
+#~ msgstr "Type de format"
+
+#~ msgid "colorization criterion"
+#~ msgstr "Critère de coloration"
+
+#~ msgid "indicator style"
+#~ msgstr "indicateur de style"
+
+#~ msgid "quoting style"
+#~ msgstr "indicateur de style de guillemets"
+
+#~ msgid "time selector"
+#~ msgstr "Sélecteur de date."
+
+#~ msgid ""
+#~ "the option for counting 1MB blocks may not be used\n"
+#~ "with the portable output format"
+#~ msgstr ""
+#~ "L'option pour compter les blocs de 1Mo ne peut être\n"
+#~ "utilisée avec l'option de format de sortie portable."
+
+#, fuzzy
+#~ msgid "removing non-directory %s\n"
+#~ msgstr "AVERTISSEMENT: ne peut changer pour le répertoire %s"
+
+#, fuzzy
+#~ msgid "remove directory `%s'%s? "
+#~ msgstr "Ne peut créer le répertoire %s"
+
+#~ msgid "%s: replace `%s', overriding mode %04o? "
+#~ msgstr "%s: remplacer`%s', en outrepassant le mode %04o? "
+
+#, fuzzy
+#~ msgid "Usage: %s [OPTION]... GROUP FILE...\n"
+#~ msgstr "Usage: %s [OPTION]... [FICHIER]...\n"
+
+#~ msgid "cannot move `%s' across filesystems: Not a regular file"
+#~ msgstr ""
+#~ "`%s' ne peut être déplacé à travers des sytèmes de fichiers:\n"
+#~ "parce qu'il n'est pas un fichier de type régulier."
+
+#~ msgid "%s: remove %s`%s', overriding mode %04o? "
+#~ msgstr "%s: détruire %s`%s', en outrepassant le mode %04o? "
+
+#~ msgid "%s: descend directory `%s', overriding mode %04o? "
+#~ msgstr "%s: aller dans le répertoire `%s', en outrepassant le mode %04o? "
+
+#~ msgid "%s: remove directory `%s' (might be nonempty)? "
+#~ msgstr "%s: détruire le répertoire «%s» (peut ne pas être vide)? "
+
+#~ msgid "days"
+#~ msgstr "jours"
+
+#~ msgid "users"
+#~ msgstr "usager"
+
+#, fuzzy
+#~ msgid ""
+#~ "Run COMMAND with root directory set to NEWROOT.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+#~ msgstr ""
+#~ "Afficher la somme de contrôle CRC et le décompte d'octets de chaque "
+#~ "FICHIER.\n"
+#~ "\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "FORMAT controls the output. The only valid option for the second form\n"
+#~ "specifies Coordinated Universal Time. Interpreted sequences are:\n"
+#~ "\n"
+#~ " %%%% a literal %%\n"
+#~ " %%a locale's abbreviated weekday name (Sun..Sat)\n"
+#~ " %%A locale's full weekday name, variable length (Sunday..Saturday)\n"
+#~ " %%b locale's abbreviated month name (Jan..Dec)\n"
+#~ " %%B locale's full month name, variable length (January..December)\n"
+#~ " %%c locale's date and time (Sat Nov 04 12:02:33 EST 1989)\n"
+#~ " %%d day of month (01..31)\n"
+#~ " %%D date (mm/dd/yy)\n"
+#~ " %%e day of month, blank padded ( 1..31)\n"
+#~ " %%h same as %%b\n"
+#~ " %%H hour (00..23)\n"
+#~ " %%I hour (01..12)\n"
+#~ " %%j day of year (001..366)\n"
+#~ " %%k hour ( 0..23)\n"
+#~ " %%l hour ( 1..12)\n"
+#~ " %%m month (01..12)\n"
+#~ " %%M minute (00..59)\n"
+#~ " %%n a newline\n"
+#~ " %%p locale's AM or PM\n"
+#~ " %%r time, 12-hour (hh:mm:ss [AP]M)\n"
+#~ " %%s seconds since `00:00:00 1970-01-01 UTC' (a GNU extension)\n"
+#~ " %%S second (00..60)\n"
+#~ " %%t a horizontal tab\n"
+#~ " %%T time, 24-hour (hh:mm:ss)\n"
+#~ " %%U week number of year with Sunday as first day of week (00..53)\n"
+#~ " %%V week number of year with Monday as first day of week (01..53)\n"
+#~ " %%w day of week (0..6); 0 represents Sunday\n"
+#~ " %%W week number of year with Monday as first day of week (00..53)\n"
+#~ " %%x locale's date representation (mm/dd/yy)\n"
+#~ " %%X locale's time representation (%%H:%%M:%%S)\n"
+#~ " %%y last two digits of year (00..99)\n"
+#~ " %%Y year (1970...)\n"
+#~ " %%z RFC-822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %%Z time zone (e.g., EDT), or nothing if no time zone is "
+#~ "determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr ""
+#~ "\n"
+#~ "FORMAT contrôle l'affichage. Seule l'option valide de la seconde forme\n"
+#~ "s'applique au système de temps UCT. Les séquences interprétées sont:\n"
+#~ "\n"
+#~ " %%%% le caractère %%\n"
+#~ " %%a les noms abrégés localisés des jours de la semaine (Dim..Sam)\n"
+#~ " %%A les noms complets localisés des jours de la semaine\n"
+#~ " de longueurs variables (Dimanche..Samedi)\n"
+#~ " %%b les noms abrégés localisés des mois (Jan..Déc)\n"
+#~ " %%B les noms complets localisés des mois de longueurs variables\n"
+#~ " (Janvier..Décembre)\n"
+#~ " %%c la date et l'heure localisées (Sam 04 Nov 12:02:33 EDT 1989)\n"
+#~ " %%d jour du mois (01..31)\n"
+#~ " %%D date (mm/jj/aa)\n"
+#~ " %%e jour du mois, précédé d'un blanc ( 1..31)\n"
+#~ " %%h identique à %%b\n"
+#~ " %%H heure (00..23)\n"
+#~ " %%I heure (01..12)\n"
+#~ " %%j jour numérique de l'année (001..366)\n"
+#~ " %%k heure ( 0..23)\n"
+#~ " %%l heure ( 1..12)\n"
+#~ " %%m mois (01..12)\n"
+#~ " %%M minute (00..59)\n"
+#~ " %%n un saut de ligne\n"
+#~ " %%p localisé AM ou PM\n"
+#~ " %%r heure, 12-heure (hh:mm:ss [AP]M)\n"
+#~ " %%s secondes depuis 00:00:00, Jan 1, 1970 (une extension de GNU)\n"
+#~ " %%S secondes (00..61)\n"
+#~ " %%t un saut horizontal de tabulation\n"
+#~ " %%T heure, 24-heure (hh:mm:ss)\n"
+#~ " %%U numéro de la semaine dans l'année débutant par Dimanche\n"
+#~ " comme premier jour de la semaine (00..53)\n"
+#~ " %%V numéro de la semaine dans l'année débutant par Lundi\n"
+#~ " comme premier jour de la semaine (01..52)\n"
+#~ " %%w jour de la semaine (0..6); 0 représente Dimanche\n"
+#~ " %%W numéro de la semaine dans l'année débutant par Lundi\n"
+#~ " comme premier jour de la semaine (00..53)\n"
+#~ " %%x représentation localisée de la date (mm/jj/aa)\n"
+#~ " %%X représentation localisée de l'heure (%%H:%%M:%%S)\n"
+#~ " %%y les deux derniers chiffres de l'année (00..99)\n"
+#~ " %%Y année (1970...)\n"
+#~ " %%z fuseau horaire en format numérique selon le RFC-822 (-0500)\n"
+#~ " (une extension non-standard)\n"
+#~ " %%Z fuseau horaire (i.e. EDT), nul si aucun fuseau horaire\n"
+#~ " ne peut être déterminé\n"
+#~ "\n"
+#~ "Par défaut, les champs numériques de date sont complétés par des zéros.\n"
+#~ "GNU reconnaît les modificateurs suivants entre « %% » et une directive "
+#~ "numérique.\n"
+#~ "\n"
+#~ " « - » (tiret) ne pas compléter le champ\n"
+#~ " « _ » (souligné) compléter le champ par des blancs\n"
+
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ " --help display this help and exit (should be alone)\n"
+#~ " --version output version information and exit (should be alone)\n"
+#~ "\n"
+#~ "Without -E, the following sequences are recognized and interpolated:\n"
+#~ "\n"
+#~ " \\NNN the character whose ASCII code is NNN (octal)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a alert (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c suppress trailing newline\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r carriage return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ msgstr ""
+#~ "Faire l'écho de CHAÎNE(S) vers la sortie standard.\n"
+#~ "\n"
+#~ " -n ne pas afficher le saut de ligne de fin\n"
+#~ " -e (inutilisée)\n"
+#~ " -E inhiber l'interpolation de certaines séquences de la "
+#~ "CHAÎNE\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "Sans -E, les séquences suivantes sont reconnues et interpolées:\n"
+#~ "\n"
+#~ " \\NNN le caractère dont le code ASCII est NNN (en octal)\n"
+#~ " \\\\ barre oblique inverse\n"
+#~ " \\a bip sonore d'alerte\n"
+#~ " \\b retour arrière\n"
+#~ " \\c supprimer le saut de ligne de fin\n"
+#~ " \\f saut de page\n"
+#~ " \\n saut de ligne\n"
+#~ " \\r retour de chariot\n"
+#~ " \\t tabulation horizontale\n"
+#~ " \\v tabulation verticale\n"
+
+#~ msgid ""
+#~ "Print the value of EXPRESSION to standard output. A blank line below\n"
+#~ "separates increasing precedence groups. EXPRESSION may be:\n"
+#~ "\n"
+#~ " ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+#~ "\n"
+#~ " ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+#~ "\n"
+#~ " ARG1 < ARG2 ARG1 is less than ARG2\n"
+#~ " ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+#~ " ARG1 = ARG2 ARG1 is equal to ARG2\n"
+#~ " ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+#~ " ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+#~ " ARG1 > ARG2 ARG1 is greater than ARG2\n"
+#~ "\n"
+#~ " ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+#~ " ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+#~ "\n"
+#~ " ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+#~ " ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+#~ " ARG1 %% ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+#~ "\n"
+#~ " STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+#~ "\n"
+#~ " match STRING REGEXP same as STRING : REGEXP\n"
+#~ " substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+#~ " index STRING CHARS index in STRING where any CHARS is found, or "
+#~ "0\n"
+#~ " length STRING length of STRING\n"
+#~ " quote TOKEN interpret TOKEN as a string, even if it is "
+#~ "a\n"
+#~ " keyword like `match' or an operator like "
+#~ "`/'\n"
+#~ "\n"
+#~ " ( EXPRESSION ) value of EXPRESSION\n"
+#~ msgstr ""
+#~ "Afficher la valeur de l'EXPRESSION vers la sortie standard. Une ligne "
+#~ "blanche\n"
+#~ "sépare la précédence croissante des groupes d'expressions.\n"
+#~ "L'EXPRESSION peut être:\n"
+#~ "\n"
+#~ " PARAM1 | PARAM2 PARAM1 s'il est nul ou 0, autrement PARAM2\n"
+#~ "\n"
+#~ " PARAM1 & PARAM2 PARAM1 si aucun des paramètres est nul ou 0,\n"
+#~ " autrement 0\n"
+#~ "\n"
+#~ " PARAM1 < PARAM2 PARAM1 si plus petit que PARAM2\n"
+#~ " PARAM1 <= PARAM2 PARAM1 si plus petit ou égal à PARAM2\n"
+#~ " PARAM1 = PARAM2 PARAM1 si égal à PARAM2\n"
+#~ " PARAM1 != PARAM2 PARAM1 si inégal à PARAM2\n"
+#~ " PARAM1 >= PARAM2 PARAM1 si plus grand ou égal à PARAM2\n"
+#~ " PARAM1 > PARAM2 PARAM1 si plus grand que PARAM2\n"
+#~ "\n"
+#~ " PARAM1 + PARAM2 somme arithmétique de PARAM1 et PARAM2\n"
+#~ " PARAM1 - PARAM2 différence arithmétique de PARAM1 et PARAM2\n"
+#~ "\n"
+#~ " PARAM1 * PARAM2 produit arithmétique de PARAM1 et PARAM2\n"
+#~ " PARAM1 / PARAM2 quotient arithmétique de PARAM1 divisé par "
+#~ "PARAM2\n"
+#~ " PARAM1 %% PARAM2 reste arithmétique PARAM1 divisé par PARAM2\n"
+#~ "\n"
+#~ " CHAÎNE: EXPREG patron d'ancrage de concordance de l'EXPREG dans la "
+#~ "CHAÎNE\n"
+#~ "\n"
+#~ " match CHAÎNE EXPREG identique à CHAÎNE: EXPREG\n"
+#~ " substr CHAÎNE POS LONG sous-chaîne de CHAÎNE débutant à la POSition\n"
+#~ " (comptée à partir de 1) et ayant une LONGueur\n"
+#~ " index CHAÎNE CAR valeur de la position du CARactère retrouvé\n"
+#~ " dans la CHAÎNE, sinon 0\n"
+#~ " length CHAÎNE longueur de la CHAÎNE\n"
+#~ " quote JETON interpréter le JETON comme une chaîne, même si "
+#~ "c'est\n"
+#~ " un mot clé comme « match » ou un opérateur "
+#~ "comme « / »\n"
+#~ "\n"
+#~ " ( EXPRESSION ) valeur de l'EXPRESSION\n"
+
+#~ msgid ""
+#~ "\n"
+#~ " -l do long format output\n"
+#~ " -b omit the user's home directory and shell in long "
+#~ "format\n"
+#~ " -h omit the user's project file in long format\n"
+#~ " -p omit the user's plan file in long format\n"
+#~ " -s do short format output, this is the default\n"
+#~ " -f omit the line of column headings in short format\n"
+#~ " -w omit the user's full name in short format\n"
+#~ " -i omit the user's full name and remote host in short "
+#~ "format\n"
+#~ " -q omit the user's full name, remote host and idle time\n"
+#~ " in short format\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "A lightweight `finger' program; print user information.\n"
+#~ "The utmp file will be %s.\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -l afficher en format long\n"
+#~ " -b omettre le répertoire d'attache de l'usager\n"
+#~ " et son shell en format long\n"
+#~ " -h omettre le fichier de projet de l'usager en\n"
+#~ " format long\n"
+#~ " -p omettre le fichier de plan de l'usager en\n"
+#~ " format long\n"
+#~ " -s afficher en format court (par défaut)\n"
+#~ " -f omettre la ligne de l'en-tête des colonnes\n"
+#~ " en format court\n"
+#~ " -w omettre le nom complet de l'usager en format court\n"
+#~ " -i omettre le nom complet de l'usager et le nom de l'hôte\n"
+#~ " en format court\n"
+#~ " -q omettre le nom complet de l'usager, le nom de l'hôte\n"
+#~ " et le temps d'inactivité en format court\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "Une version allégée du programme « finger »; afficher les informations "
+#~ "d'un usager.\n"
+#~ "Le fichier utmp sera %s.\n"
+
+#~ msgid ""
+#~ "Print ARGUMENT(s) according to FORMAT.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+#~ "\n"
+#~ " \\\" double quote\n"
+#~ " \\0NNN character with octal value NNN (0 to 3 digits)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a alert (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c produce no further output\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r carriage return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ " \\xNNN byte with hexadecimal value NNN (1 to 3 digits)\n"
+#~ "\n"
+#~ " \\uNNNN character with hexadecimal value NNNN (4 digits)\n"
+#~ " \\UNNNNNNNN character with hexadecimal value NNNNNNNN (8 digits)\n"
+#~ " %%%% a single %%\n"
+#~ " %%b ARGUMENT as a string with `\\' escapes interpreted\n"
+#~ "\n"
+#~ "and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+#~ "ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+#~ msgstr ""
+#~ "Afficher PARAMÈTRE(s) selon le FORMAT.\n"
+#~ "\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "Le FORMAT contrôle la sortie comme la fonction printf() en C.\n"
+#~ "Les séquences interprétées sont:\n"
+#~ "\n"
+#~ " \\\" guillemets\n"
+#~ " \\0NNN caractère ayant la valeur octale NNN (0 à 3 chiffres)\n"
+#~ " \\\\ barre oblique inverse\n"
+#~ " \\a bip sonore d'alerte\n"
+#~ " \\b retour arrière\n"
+#~ " \\c ne pas afficher d'autres informations sur la sortie\n"
+#~ " \\f saut de page\n"
+#~ " \\n saut de ligne\n"
+#~ " \\r retour de chariot\n"
+#~ " \\t tabulation horizontale\n"
+#~ " \\v tabulation verticale\n"
+#~ " \\xNNN caractère ayant la valeur hexadécimale NNN (1 à 3 chiffres)\n"
+#~ " \\UNNNNNNNN caractère ayant la valeur hexadécimal NNNNNNNN (8 "
+#~ "chiffres)\n"
+#~ " %%%% le caractère %%\n"
+#~ " %%b PARAMÈTRES comme une chaîne avec « \\ » d'échappement "
+#~ "interprétés\n"
+#~ "\n"
+#~ "ainsi que toutes les spécifications de format en C se terminant par une "
+#~ "des\n"
+#~ "options suivantes diouxXfeEgGcs, avec un PARAMÈTRE\n"
+#~ "converti au premier type approprié.\n"
+#~ "Les largeurs variables de champ sont supportées.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print the full filename of the current working directory.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Afficher la somme de contrôle CRC et le décompte d'octets de chaque "
+#~ "FICHIER.\n"
+#~ "\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Special characters:\n"
+#~ "* dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+#~ " eof CHAR CHAR will send an end of file (terminate the input)\n"
+#~ " eol CHAR CHAR will end the line\n"
+#~ "* eol2 CHAR alternate CHAR for ending the line\n"
+#~ " erase CHAR CHAR will erase the last character typed\n"
+#~ " intr CHAR CHAR will send an interrupt signal\n"
+#~ " kill CHAR CHAR will erase the current line\n"
+#~ "* lnext CHAR CHAR will enter the next character quoted\n"
+#~ " quit CHAR CHAR will send a quit signal\n"
+#~ "* rprnt CHAR CHAR will redraw the current line\n"
+#~ " start CHAR CHAR will restart the output after stopping it\n"
+#~ " stop CHAR CHAR will stop the output\n"
+#~ " susp CHAR CHAR will send a terminal stop signal\n"
+#~ "* swtch CHAR CHAR will switch to a different shell layer\n"
+#~ "* werase CHAR CHAR will erase the last word typed\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Caractères spéciaux:\n"
+#~ "* dsusp CAR CAR émettra un signal d'arrêt de terminal une\n"
+#~ " fois le tampon d'entrée vidé\n"
+#~ " eof CAR CAR transmettra une fin de fichier\n"
+#~ " (pour stopper l'ingestion à l'entrée)\n"
+#~ " eol CAR CAR terminera la ligne\n"
+#~ "* eol2 CAR CAR servira de caractère alternatif de fin de ligne\n"
+#~ " erase CAR CAR servira de touche d'effacement sur le dernier\n"
+#~ " caractère entrée\n"
+#~ " intr CAR CAR transmettra un signal d'interruption\n"
+#~ " kill CAR CAR effacera la ligne courante\n"
+#~ "* lnext CAR CAR entrera le prochain caractère entre guillemets\n"
+#~ " quit CAR CAR transmettra un signal de fin\n"
+#~ "* rprnt CAR CAR servira à ré-afficher la dernière ligne\n"
+#~ " start CAR CAR permettra la poursuite de l'affichage de\n"
+#~ " sortie après avoir été stoppé\n"
+#~ " stop CAR CAR stoppera l'affichage de sortie\n"
+#~ " susp CAR CAR transmettra un signal d'arrêt de terminal\n"
+#~ "* swtch CAR CAR permettra de passer à une couche différente de shell\n"
+#~ "* werase CAR CAR effacera le dernier mot tapé\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Special settings:\n"
+#~ " N set the input and output speeds to N bauds\n"
+#~ "* cols N tell the kernel that the terminal has N columns\n"
+#~ "* columns N same as cols N\n"
+#~ " ispeed N set the input speed to N\n"
+#~ "* line N use line discipline N\n"
+#~ " min N with -icanon, set N characters minimum for a completed "
+#~ "read\n"
+#~ " ospeed N set the output speed to N\n"
+#~ "* rows N tell the kernel that the terminal has N rows\n"
+#~ "* size print the number of rows and columns according to the "
+#~ "kernel\n"
+#~ " speed print the terminal speed\n"
+#~ " time N with -icanon, set read timeout of N tenths of a second\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Configurations spéciales:\n"
+#~ " N initialiser les vitesses d'entrée et de sortie à N bauds\n"
+#~ "* cols N indiquer au kernel que le terminal a N colonnes\n"
+#~ "* columns N identique à cols N\n"
+#~ " ispeed N initialiser la vitesse d'entrée à N\n"
+#~ "* line N utiliser le conditionnement propre de la ligne N\n"
+#~ " min N avec -icanon, initialiser à N le nombre de caractères\n"
+#~ " nécessaires pour obtenir une lecture complète\n"
+#~ " ospeed N initialiser la vitesse de sortie à N\n"
+#~ "* rows N indiquer au kernel que le terminal a N lignes\n"
+#~ "* size afficher le nombre de lignes et de colonnes\n"
+#~ " selon les paramètres du kernel\n"
+#~ " speed afficher la vitesse du terminal\n"
+#~ " time N avec -icanon, initialiser le délai\n"
+#~ " d'inactivité de lecture à N dizièmes de seconde\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Input settings:\n"
+#~ " [-]brkint breaks cause an interrupt signal\n"
+#~ " [-]icrnl translate carriage return to newline\n"
+#~ " [-]ignbrk ignore break characters\n"
+#~ " [-]igncr ignore carriage return\n"
+#~ " [-]ignpar ignore characters with parity errors\n"
+#~ "* [-]imaxbel beep and do not flush a full input buffer on a character\n"
+#~ " [-]inlcr translate newline to carriage return\n"
+#~ " [-]inpck enable input parity checking\n"
+#~ " [-]istrip clear high (8th) bit of input characters\n"
+#~ "* [-]iuclc translate uppercase characters to lowercase\n"
+#~ "* [-]ixany let any character restart output, not only start "
+#~ "character\n"
+#~ " [-]ixoff enable sending of start/stop characters\n"
+#~ " [-]ixon enable XON/XOFF flow control\n"
+#~ " [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+#~ " [-]tandem same as [-]ixoff\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Configurations d'entrée:\n"
+#~ " [-]brkint le « break » provoque un signal d'interruption\n"
+#~ " [-]icrnl traduire le retour de chariot en saut de ligne\n"
+#~ " [-]ignbrk ignorer le caractère break\n"
+#~ " [-]igncr ignorer le retour de chariot\n"
+#~ " [-]ignpar ignorer les caractères ayant des erreurs de parité\n"
+#~ "* [-]imaxbel indiquer par un bip sonore et ne pas vider le tampon\n"
+#~ " d'entrée lors de l'arrivée d'un caractère\n"
+#~ " [-]inlcr traduire le saut de ligne en retour de chariot\n"
+#~ " [-]inpck autoriser la vérification de la parité à l'entrée\n"
+#~ " [-]istrip mettre à zéro le bit du haut (8e) d'un caractère de "
+#~ "l'entrée\n"
+#~ "* [-]iuclc traduire les majuscles en minuscules\n"
+#~ "* [-]ixany permettre à n'importe quel caractère de relancer "
+#~ "l'affichage\n"
+#~ " sur la sortie, pas uniquement le caractère de "
+#~ "redémarrage\n"
+#~ " [-]ixoff autoriser l'envoie d'un caractère d'arrêt/départ\n"
+#~ " [-]ixon autoriser le contrôle de flux XON/XOFF\n"
+#~ " [-]parmrk indiquer les erreur de parité par une séquence\n"
+#~ " de caractères (255-0)\n"
+#~ " [-]tandem identique à [-]ixoff\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Local settings:\n"
+#~ " [-]crterase echo erase characters as backspace-space-backspace\n"
+#~ "* crtkill kill all line by obeying the echoprt and echoe settings\n"
+#~ "* -crtkill kill all line by obeying the echoctl and echok settings\n"
+#~ "* [-]ctlecho echo control characters in hat notation (`^c')\n"
+#~ " [-]echo echo input characters\n"
+#~ "* [-]echoctl same as [-]ctlecho\n"
+#~ " [-]echoe same as [-]crterase\n"
+#~ " [-]echok echo a newline after a kill character\n"
+#~ "* [-]echoke same as [-]crtkill\n"
+#~ " [-]echonl echo newline even if not echoing other characters\n"
+#~ "* [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+#~ " [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+#~ " [-]iexten enable non-POSIX special characters\n"
+#~ " [-]isig enable interrupt, quit, and suspend special characters\n"
+#~ " [-]noflsh disable flushing after interrupt and quit special "
+#~ "characters\n"
+#~ "* [-]prterase same as [-]echoprt\n"
+#~ "* [-]tostop stop background jobs that try to write to the terminal\n"
+#~ "* [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Configurations locales:\n"
+#~ " [-]crterase faire l'écho du caractère « erase » selon la séquence\n"
+#~ " retour arrière-espace-retour arrière\n"
+#~ "* crtkill annuler les ligne respectant la configuration\n"
+#~ " « echoprt » et « echoe »\n"
+#~ "* -crtkill annuler les lignes respectant la configuration\n"
+#~ " « echoctl » et « echok »\n"
+#~ "* [-]ctlecho faire l'écho des caractères de contrôle par une notation\n"
+#~ " en chapeau (« ^c »)\n"
+#~ " [-]echo faire l'écho des caractères à l'entrée\n"
+#~ "* [-]echoctl identique à [-]ctlecho\n"
+#~ " [-]echoe identique à [-]crterase\n"
+#~ " [-]echok faire l'écho d'un saut de ligne après un caractère "
+#~ "d'annulation\n"
+#~ "* [-]echoke identique à [-]crtkill\n"
+#~ " [-]echonl faire l'écho d'un saut de ligne même s'il n'y pas\n"
+#~ " d'écho des autres caractères\n"
+#~ "* [-]echoprt faire l'écho des caractères d'effacement par retour "
+#~ "arrière,\n"
+#~ " entre « \\ » et « / »\n"
+#~ " [-]icanon autoriser les caractères spéciaux\n"
+#~ " « erase », « kill », « werase », et « rprnt »\n"
+#~ " [-]iexten autoriser les caractères spéciaux non-POSIX\n"
+#~ " [-]isig autoriser les caractères spéciaux\n"
+#~ " « interrupt », « quit », et « suspend »\n"
+#~ " [-]noflsh inhiber la vidange après réception des caractères\n"
+#~ " « interrupt » et « quit »\n"
+#~ "* [-]prterase identique à [-]echoprt\n"
+#~ "* [-]tostop stopper les tâches d'arrière plan qui essaient d'écrire\n"
+#~ " sur le terminal\n"
+#~ "* [-]xcase avec « icanon », faire l'échappement avec « \\ »\n"
+#~ " pour les majuscules\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Combination settings:\n"
+#~ "* [-]LCASE same as [-]lcase\n"
+#~ " cbreak same as -icanon\n"
+#~ " -cbreak same as icanon\n"
+#~ " cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+#~ " icanon, eof and eol characters to their default values\n"
+#~ " -cooked same as raw\n"
+#~ " crt same as echoe echoctl echoke\n"
+#~ " dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+#~ " kill ^u\n"
+#~ "* [-]decctlq same as [-]ixany\n"
+#~ " ek erase and kill characters to their default values\n"
+#~ " evenp same as parenb -parodd cs7\n"
+#~ " -evenp same as -parenb cs8\n"
+#~ "* [-]lcase same as xcase iuclc olcuc\n"
+#~ " litout same as -parenb -istrip -opost cs8\n"
+#~ " -litout same as parenb istrip opost cs7\n"
+#~ " nl same as -icrnl -onlcr\n"
+#~ " -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+#~ " oddp same as parenb parodd cs7\n"
+#~ " -oddp same as -parenb cs8\n"
+#~ " [-]parity same as [-]evenp\n"
+#~ " pass8 same as -parenb -istrip cs8\n"
+#~ " -pass8 same as parenb istrip cs7\n"
+#~ " raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+#~ " -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+#~ " -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+#~ " -raw same as cooked\n"
+#~ " sane same as cread -ignbrk brkint -inlcr -igncr icrnl\n"
+#~ " -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+#~ " -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+#~ " isig icanon iexten echo echoe echok -echonl -noflsh\n"
+#~ " -xcase -tostop -echoprt echoctl echoke, all special\n"
+#~ " characters to their default values.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Configuration par combinaison:\n"
+#~ "* [-]LCASE identique à [-]lcase\n"
+#~ " cbreak identique à -icanon\n"
+#~ " -cbreak identique à icanon\n"
+#~ " cooked identique à brkint ignpar istrip icrnl ixon opost isig\n"
+#~ " icanon, eof et eol selon leur valeur par défaut\n"
+#~ " -cooked identique à raw\n"
+#~ " crt identique à echoe echoctl echoke\n"
+#~ " dec identique à echoe echoctl echoke -ixany intr ^c erase "
+#~ "0177\n"
+#~ " kill ^u\n"
+#~ "* [-]decctlq identique à [-]ixany\n"
+#~ " ek réinitialiser les caractères erase et kill à leur valeur\n"
+#~ " par défaut\n"
+#~ " evenp identique à parenb -parodd cs7\n"
+#~ " -evenp identique à -parenb cs8\n"
+#~ "* [-]lcase identique à xcase iuclc olcuc\n"
+#~ " litout identique à -parenb -istrip -opost cs8\n"
+#~ " -litout identique à parenb istrip opost cs7\n"
+#~ " nl identique à -icrnl -onlcr\n"
+#~ " -nl identique à icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+#~ " oddp identique à parenb parodd cs7\n"
+#~ " -oddp identique à -parenb cs8\n"
+#~ " [-]parity identique à [-]evenp\n"
+#~ " pass8 identique à -parenb -istrip cs8\n"
+#~ " -pass8 identique à parenb istrip cs7\n"
+#~ " raw identique à -ignbrk -brkint -ignpar -parmrk -inpck -"
+#~ "istrip\n"
+#~ " -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+#~ " -imaxbel -opost -isig -icanon -xcase min 1 fois 0\n"
+#~ " -raw identique à cooked\n"
+#~ " sane identique à cread -ignbrk brkint -inlcr -igncr icrnl\n"
+#~ " -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+#~ " -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+#~ " isig icanon iexten echo echoe echok -echonl -noflsh\n"
+#~ " -xcase -tostop -echoprt echoctl echoke, et tous les "
+#~ "caractères\n"
+#~ " spéciaux à leur valeur par défaut.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Exit with the status determined by EXPRESSION.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "EXPRESSION is true or false and sets exit status. It is one of:\n"
+#~ msgstr ""
+#~ "Afficher la somme de contrôle CRC et le décompte d'octets de chaque "
+#~ "FICHIER.\n"
+#~ "\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#~ msgid ""
+#~ "\n"
+#~ " FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode "
+#~ "numbers\n"
+#~ " FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+#~ " FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+#~ "\n"
+#~ " -b FILE FILE exists and is block special\n"
+#~ " -c FILE FILE exists and is character special\n"
+#~ " -d FILE FILE exists and is a directory\n"
+#~ " -e FILE FILE exists\n"
+#~ " -f FILE FILE exists and is a regular file\n"
+#~ " -g FILE FILE exists and is set-group-ID\n"
+#~ " -G FILE FILE exists and is owned by the effective group ID\n"
+#~ " -k FILE FILE exists and has its sticky bit set\n"
+#~ " -L FILE FILE exists and is a symbolic link\n"
+#~ " -O FILE FILE exists and is owned by the effective user ID\n"
+#~ " -p FILE FILE exists and is a named pipe\n"
+#~ " -r FILE FILE exists and is readable\n"
+#~ " -s FILE FILE exists and has a size greater than zero\n"
+#~ " -S FILE FILE exists and is a socket\n"
+#~ " -t [FD] file descriptor FD (stdout by default) is opened on a "
+#~ "terminal\n"
+#~ " -u FILE FILE exists and its set-user-ID bit is set\n"
+#~ " -w FILE FILE exists and is writable\n"
+#~ " -x FILE FILE exists and is executable\n"
+#~ msgstr ""
+#~ "\n"
+#~ " FICHIER1 -ef FICHIER2 FICHIER1 et FICHIER2 ont les mêmes numéros\n"
+#~ " de périphérique et d'inode\n"
+#~ " FICHIER1 -nt FICHIER2 FICHIER1 est plus récent (date de "
+#~ "modification)\n"
+#~ " que FICHIER2\n"
+#~ " FICHIER1 -ot FICHIER2 FICHIER1 est plus vieux que FICHIER2\n"
+#~ "\n"
+#~ " -b FICHIER FICHIER existe et est de type à blocage spécial\n"
+#~ " -c FICHIER FICHIER existe et est de type caractère spécial\n"
+#~ " -d FICHIER FICHIER existe et est un répertoire\n"
+#~ " -e FICHIER FICHIER existe\n"
+#~ " -f FICHIER FICHIER existe et est de type régulier\n"
+#~ " -g FICHIER FICHIER existe et le bit « set-group-ID », est "
+#~ "initialisé\n"
+#~ " -G FICHIER FICHIER existe et appartient au groupe effectif ID\n"
+#~ " -k FICHIER FICHIER existe et le bit « sticky » est initialisé\n"
+#~ " -L FICHIER FICHIER existe et est un lien symbolique\n"
+#~ " -O FICHIER FICHIER existe et appartient à l'usager effectif ID\n"
+#~ " -p FICHIER FICHIER existe et est un relais nommé (named pipe)\n"
+#~ " -r FICHIER FICHIER existe et est lisible\n"
+#~ " -s FICHIER FICHIER existe et a une taille non nulle\n"
+#~ " -S FICHIER FICHIER existe et est de type « socket »\n"
+#~ " -t [DF] descripteur de fichier DF (sortie standard par défaut)\n"
+#~ " est ouvert sur le terminal\n"
+#~ " -u FICHIER FICHIER existe et le bit « set-user-ID », est "
+#~ "initialisé\n"
+#~ " -w FICHIER FICHIER existe et l'écriture y est permise\n"
+#~ " -x FICHIER FICHIER existe et exécutable\n"
+
+#~ msgid ""
+#~ "Print certain system information. With no OPTION, same as -s.\n"
+#~ "\n"
+#~ " -a, --all print all information\n"
+#~ " -m, --machine print the machine (hardware) type\n"
+#~ " -n, --nodename print the machine's network node hostname\n"
+#~ " -r, --release print the operating system release\n"
+#~ " -s, --sysname print the operating system name\n"
+#~ " -p, --processor print the host processor type\n"
+#~ " -v print the operating system version\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Afficher certaines informations identifiant le système.\n"
+#~ "Sans OPTION, identique à -s.\n"
+#~ "\n"
+#~ " -a, --all afficher toutes les informations\n"
+#~ " -m, --machine afficher le type de configuration matérielle\n"
+#~ " -n, --nodename afficher le nom du noeud réseau du poste (hostname)\n"
+#~ " -r, --release afficher la révision de la version du\n"
+#~ " système d'exploitation\n"
+#~ " -s, --sysname afficher le nom du système d'exploitation\n"
+#~ " -p, --processor afficher le type de processeur\n"
+#~ " -v afficher la version du système d'exploitation\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#~ msgid "cannot get processor type"
+#~ msgstr "Ne peut trouver le type de processeur."
+
+#~ msgid "USER"
+#~ msgstr "USAGER"
+
+#~ msgid "MESG "
+#~ msgstr "MESG "
+
+#~ msgid "LOGIN-TIME "
+#~ msgstr "SESSION "
+
+#~ msgid "FROM\n"
+#~ msgstr "DE\n"
+
+#~ msgid ""
+#~ "\n"
+#~ " -H, --heading print line of column headings\n"
+#~ " -i, -u, --idle add user idle time as HOURS:MINUTES, . or old\n"
+#~ " -l, --lookup attempt to canonicalize hostnames via DNS\n"
+#~ " -m only hostname and user associated with stdin\n"
+#~ " -q, --count all login names and number of users logged on\n"
+#~ " -s (ignored)\n"
+#~ " -T, -w, --mesg add user's message status as +, - or ?\n"
+#~ " --message same as -T\n"
+#~ " --writable same as -T\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "If FILE is not specified, use %s. %s as FILE is common.\n"
+#~ "If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -H, --heading afficher les en-têtes de colonnes\n"
+#~ " -i, -u, --idle ajouter le temps d'inactivité de l'usager en\n"
+#~ " selon le format HEURE:MINUTES, . ou « old »\n"
+#~ " -l, --lookup utiliser la forme canonique des noms des hôtes\n"
+#~ " via le DNS\n"
+#~ " -m seulement du poste (hostname) et\n"
+#~ " de l'usager associé à « stdin »\n"
+#~ " -q, --count afficher tous les comptes actifs et le nombre "
+#~ "d'usagers\n"
+#~ " présents sur le système\n"
+#~ " -s (ignorée)\n"
+#~ " -T, -w, --mesg ajouter le statut du message usager avec +, - ou ?\n"
+#~ " --message identique à -T\n"
+#~ " --writeable identique à -T\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "Si FICHIER n'est pas spécifié, utiliser %s. %s comme FICHIER\n"
+#~ "est d'usage courant. Si PARAM1 et PARAM2 sont fournis, -m est assumé:\n"
+#~ "« am i » ou « mom likes » sont d'usage courant.\n"
+
+#~ msgid "<undef>"
+#~ msgstr "<indéfini>"
+
+#~ msgid "Usage: %s [-v]\n"
+#~ msgstr "Usage: %s [-v]\n"
+
+#, fuzzy
+#~ msgid "Usage: %s [OPTION]... [VARIABLE]...\n"
+#~ msgstr "Usage: %s [OPTION]... [FICHIER]...\n"
+
+#, fuzzy
+#~ msgid "Usage: %s [OPTION]... NUMBER[SUFFIX]\n"
+#~ msgstr "Usage: %s [OPTION]... [FICHIER]...\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Instead of -t NUMBER or -t LIST, -NUMBER or -LIST may be used.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Au lieu de -t NOMBRE ou -t LISTE, -NOMBRE ou -LISTE peuvent être "
+#~ "utilisés.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+#~ "If -VALUE is used as first OPTION, read -c VALUE when one of\n"
+#~ "multipliers bkm follows concatenated, else read -n VALUE.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "N peut être suivi d'un suffixe multiplicateur:\n"
+#~ "b pour 512, k pour 1K, m pour 1 Meg.\n"
+#~ "Si -VALEUR est utilisé comme première OPTION, lire -c VALEUR lorsqu'un "
+#~ "des\n"
+#~ "multiples bkm suivent concaténée(s), sinon lire -n VALEUR.\n"
+
+#~ msgid ""
+#~ " +POS1 [-POS2] start a key at POS1, end it before POS2 "
+#~ "(origin 0)\n"
+#~ " Warning: this option is obsolete\n"
+#~ msgstr ""
+#~ " +POS1 [-POS2] débuter avec la clé de position POS1, et "
+#~ "terminer\n"
+#~ " avant POS2 (origine à 0)\n"
+#~ " AVERTISSEMENT: cette option est obsolète\n"
+
+#~ msgid ""
+#~ " -b, --bytes=SIZE put SIZE bytes per output file\n"
+#~ " -C, --line-bytes=SIZE put at most SIZE bytes of lines per output "
+#~ "file\n"
+#~ " -l, --lines=NUMBER put NUMBER lines per output file\n"
+#~ " -NUMBER same as -l NUMBER\n"
+#~ " --verbose print a diagnostic to standard error just\n"
+#~ " before each output file is opened\n"
+#~ msgstr ""
+#~ " -b, --bytes=N écrire N octets par fichier de sortie\n"
+#~ " -C, --line-bytes=N écrire au plus N octets par ligne\n"
+#~ " par fichier de sortie\n"
+#~ " -l, --lines=N écrire N lignes par fichier de sortie\n"
+#~ " -NOMBRE identique à -l NOMBRE\n"
+#~ " --verbose produire un diagnostic sur stderr\n"
+
+#~ msgid ""
+#~ "A first OPTION of -VALUE\n"
+#~ "is treated like -n VALUE unless VALUE has one of the [bkm] suffix\n"
+#~ "multipliers, in which case it is treated like -c VALUE.\n"
+#~ msgstr ""
+#~ "Une première OPTION de -VALEUR\n"
+#~ "est traitée comme -n VALEUR à moins que VALEUR soit suivie d'un suffixe\n"
+#~ "multiplicatif [bkm], laquelle dans ce cas est traitée comme -c VALEUR.\n"
+
+#~ msgid ""
+#~ "A first option of +VALUE is treated like -+VALUE, but this usage is "
+#~ "obsolete\n"
+#~ "and support for it will be withdrawn.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Une première option de +VALEUR est traitée comme -+VALEUR, mais cet usage "
+#~ "obsolète\n"
+#~ "et son support sera abandonné.\n"
+#~ "\n"
+
+#~ msgid " +N same as -s N (obsolete; will be withdrawn)\n"
+#~ msgstr ""
+#~ " +N identique à -s N (obsolète; sera abandonné)\n"
+
+#~ msgid "\n"
+#~ msgstr "\n"
+
+#~ msgid ""
+#~ "sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+#~ "for sizeof(double) or L for sizeof(long double).\n"
+#~ "\n"
+#~ "RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+#~ "BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+#~ msgstr ""
+#~ "sizeof(long). Si le TYPE est f, N peut aussi être F pour sizeof(float), "
+#~ "D\n"
+#~ "pour sizeof(double) ou L pour sizeof(long double).\n"
+#~ "\n"
+#~ "BASE est d pour décimal, o pour octal, x pour hexadécimal ou n pour "
+#~ "aucun.\n"
+#~ "OCTETS est de type hexadécimal si préfixé par 0x ou 0X, et est un "
+#~ "multiple de 512\n"
+
+#~ msgid ""
+#~ "with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix "
+#~ "to\n"
+#~ "any type adds a display of printable characters to the end of each line\n"
+#~ "of output. -s without a number implies 3. -w without a number implies "
+#~ "32.\n"
+#~ "By default, od uses -A o -t d2 -w 16.\n"
+#~ msgstr ""
+#~ "avec le suffixe b, de 1024 avec k et de 1048576 avec m. L'ajout du "
+#~ "suffixe z à\n"
+#~ "n'imporete quel type ajoute l'affichage de caractères imprimables à la "
+#~ "fin de chaque ligne\n"
+#~ "de sortie. -s non suivi d un nombre implique 3, 32 pour -w.\n"
+#~ "Par défaut, od utilise -A o -t d2 -w 16.\n"
+
+#~ msgid ""
+#~ "Convert tabs in each FILE to spaces, writing to standard output.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -i, --initial do not convert TABs after non whitespace\n"
+#~ " -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+#~ msgstr ""
+#~ "Convertir les tabulations de chaque FICHIER par des blancs d'espacement,\n"
+#~ "en écrivant sur la sortie standard.\n"
+#~ "Sans FICHIER, ou quand le FICHIER est -, lire de l'entrée standard.\n"
+#~ "\n"
+#~ "Les arguments obligatoires pour les options de formes longues le sont "
+#~ "aussi\n"
+#~ "pour les options de formes courtes.\n"
+#~ " -i, --initial ne pas convertir les tabulations après des non "
+#~ "blancs\n"
+#~ " -t, --tabs=N utiliser N caractères de tabulations, et non 8\n"
+
+#~ msgid ""
+#~ " -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Instead of -t NUMBER or -t LIST, -NUMBER or -LIST may be used.\n"
+#~ msgstr ""
+#~ " -t, --tabs=LISTE utiliser la LISTE explicite de positions\n"
+#~ " de tabulation\n"
+#~ " séparées par des virgules\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "Au lieu de -t NOMBRE ou -t LISTE, -NOMBRE ou -LISTE peuvent être "
+#~ "utilisés.\n"
+#~ "Sans FICHIER, ou quand le FICHIER est -, lire de l'entrée standard.\n"
+
+#~ msgid ""
+#~ "Wrap input lines in each FILE (standard input by default), writing to\n"
+#~ "standard output.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --bytes count bytes rather than columns\n"
+#~ " -s, --spaces break at spaces\n"
+#~ " -w, --width=WIDTH use WIDTH columns instead of 80\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Limiter la longueur de chaque ligne de chaque FICHIER (entrée standard "
+#~ "par\n"
+#~ "défaut) et forcer le bouclage en écrivant sur la sortie standard.\n"
+#~ "\n"
+#~ "Les arguments obligatoires pour les options de formes longues le sont "
+#~ "aussi\n"
+#~ "pour les options de formes courtes.\n"
+#~ " -b, --bytes compter les octets au lieu des colonnes\n"
+#~ " -s, --spaces briser la ligne sur des blancs\n"
+#~ " -w, --width=N utiliser N colonnes au lieu de 80\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#~ msgid ""
+#~ " -v, --first-page=NUMBER first line number on each logical page\n"
+#~ " -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+#~ "two delimiter characters for separating logical pages, a missing\n"
+#~ "second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+#~ msgstr ""
+#~ " -v, --first-page=NUMÉRO utiliser comme premier NUMÉRO de ligne\n"
+#~ " sur chaque page logique\n"
+#~ " -w, --number-width=N utiliser le NOMBRE de colonnes pour\n"
+#~ " numéroter les lignes\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du "
+#~ "logiciel\n"
+#~ "\n"
+#~ "Par défaut, -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn sont sélectionnées.\n"
+#~ "CC se compose de deux caractères délimiteurs pour séparer les pages "
+#~ "logiques\n"
+#~ "un deuxième caractère manquant implique que:\n"
+#~ "taper \\\\ pour \\. STYLE est une des options parmi:\n"
+
+#~ msgid ""
+#~ "Write lines consisting of the sequentially corresponding lines from\n"
+#~ "each FILE, separated by TABs, to standard output.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+#~ " -s, --serial paste one file at a time instead of in "
+#~ "parallel\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Coller séquentiellement les lignes correspondantes de chaque\n"
+#~ "FICHIER, séparé par des tabulations, vers la sortie standard.\n"
+#~ "Sans FICHIER, ou quand FICHIER est -, lire de l'entrée standard.\n"
+#~ "\n"
+#~ "Les arguments obligatoires pour les options de formes longues le sont "
+#~ "aussi\n"
+#~ "pour les options de formes courtes.\n"
+#~ " -d, --delimiters=LISTE utiliser les caractères de la LISTE au lieu\n"
+#~ " de tabulations\n"
+#~ " -s, --serial copier un fichier à la fois au lieu de\n"
+#~ " le faire en parallèle\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+
+#~ msgid ""
+#~ " -NUMBER same as -l NUMBER\n"
+#~ " --verbose print a diagnostic to standard error just\n"
+#~ " before each output file is opened\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+#~ msgstr ""
+#~ " -NOMBRE identique à -l NOMBRE\n"
+#~ " --verbose produire un diagnostic sur stderr\n"
+#~ " avant que chaque fichier de sortie ne soit "
+#~ "ouvert \n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "La TAILLE peut être suivie d'un suffixe multiplicateur:\n"
+#~ "b pour 512, k pour 1K, m pour 1 Meg.\n"
+
+#~ msgid ""
+#~ "Write each FILE to standard output, last line first.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --before attach the separator before instead of after\n"
+#~ msgstr ""
+#~ "Écrire chaque FICHIER sur la sortie standard, la dernière ligne en "
+#~ "premier.\n"
+#~ "Sans FICHIER, ou quand FICHIER est -, lire de l'entrée standard.\n"
+#~ "\n"
+#~ "Les arguments obligatoires pour les options de formes longues le sont "
+#~ "aussi\n"
+#~ "pour les options de formes courtes.\n"
+#~ " -b, --before placer le séparateur avant plutôt qu'après\n"
+
+#~ msgid ""
+#~ "Print the last %d lines of each FILE to standard output.\n"
+#~ "With more than one FILE, precede each with a header giving the file "
+#~ "name.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " --retry keep trying to open a file even if it is\n"
+#~ " inaccessible when tail starts or if it "
+#~ "becomes\n"
+#~ " inaccessible later -- useful only with -f\n"
+#~ msgstr ""
+#~ "Imprimer les dernières %d lignes de chaque FICHIER sur la sortie "
+#~ "standard.\n"
+#~ "Avec plus d'un FICHIER, précéder chacun par une en-tête contenant le nom "
+#~ "du\n"
+#~ "fichier. Sans FICHIER, ou quand FICHIER est -, lire de l'entrée "
+#~ "standard.\n"
+#~ "\n"
+#~ "Les arguments obligatoires pour les options de formes longues le sont "
+#~ "aussi\n"
+#~ "pour les options de formes courtes.\n"
+#~ "\n"
+#~ " --retry continuer de tenter d'ouvrir le fichier même "
+#~ "s'il\n"
+#~ " est inaccessible lorsque tail démarre ou s'il "
+#~ "devient\n"
+#~ " inaccessible plus tard -- utile seulement avec "
+#~ "-f\n"
+
+#~ msgid ""
+#~ "Convert spaces in each FILE to tabs, writing to standard output.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -a, --all convert all whitespace, instead of initial "
+#~ "whitespace\n"
+#~ msgstr ""
+#~ "Convertir les blancs d'espacement de chaque FICHIER par des tabulations,\n"
+#~ "lors de l'écriture sur la sortie standard.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Les arguments obligatoires pour les options de formes longues le sont "
+#~ "aussi\n"
+#~ "pour les options de formes courtes.\n"
+#~ " -a, --all convertir tous les espaces blancs,\n"
+#~ " au lieu du blanc d'espacement initial\n"
+
+#~ msgid ""
+#~ " -t, --tabs=NUMBER have tabs NUMBER characters apart instead of 8\n"
+#~ " -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Instead of -t NUMBER or -t LIST, -NUMBER or -LIST may be used.\n"
+#~ msgstr ""
+#~ " -t, --tabs=N utiliser N caractères de tabulation au lieu de 8\n"
+#~ " -t, --tabs=LISTE utiliser la LISTE séparée de virgules comme "
+#~ "positions\n"
+#~ " explicite des tabulations\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "Au lieu de -t NOMBRE ou -t LISTE, -NOMBRE ou -LISTE peuvent être "
+#~ "utilisés.\n"
+
+#~ msgid ""
+#~ "Discard all but one of successive identical lines from INPUT (or\n"
+#~ "standard input), writing to OUTPUT (or standard output).\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -c, --count prefix lines by the number of occurrences\n"
+#~ " -d, --repeated only print duplicate lines\n"
+#~ msgstr ""
+#~ "Exclure toutes les lignes successives identiques sauf une du FICHIER\n"
+#~ "(ou de l'entrée standard), lors de l'écriture dans un FICHIER\n"
+#~ "(ou vers la sortie standard).\n"
+#~ "\n"
+#~ "Les arguments obligatoires pour les options de formes longues le sont "
+#~ "aussi\n"
+#~ "pour les options de formes courtes.\n"
+#~ " -c, --count préfixer les lignes par le nombre d'occurences\n"
+#~ " -d, --repeated afficher seulement les lignes ayant des "
+#~ "duplicatats\n"
+
+#~ msgid ""
+#~ "Output pieces of FILE separated by PATTERN(s) to files `xx01', "
+#~ "`xx02', ...,\n"
+#~ "and output byte counts of each piece to standard output.\n"
+#~ "\n"
+#~ " -b, --suffix-format=FORMAT use sprintf FORMAT instead of %%d\n"
+#~ " -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+#~ " -k, --keep-files do not remove output files on errors\n"
+#~ " -n, --digits=DIGITS use specified number of digits instead of 2\n"
+#~ " -s, --quiet, --silent do not print counts of output file sizes\n"
+#~ " -z, --elide-empty-files remove empty output files\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Read standard input if FILE is -. Each PATTERN may be:\n"
+#~ "\n"
+#~ " INTEGER copy up to but not including specified line number\n"
+#~ " /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+#~ " %%REGEXP%%[OFFSET] skip to, but not including a matching line\n"
+#~ " {INTEGER} repeat the previous pattern specified number of "
+#~ "times\n"
+#~ " {*} repeat the previous pattern as many times as "
+#~ "possible\n"
+#~ "\n"
+#~ "A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+#~ msgstr ""
+#~ "Afficher les segments d'un FICHIER séparées par PATRON(s) vers\n"
+#~ "les fichiers `xx01', `xx02', ..., ainsi que le nombre\n"
+#~ "d'octets de chaque segment vers la sortie standard.\n"
+#~ "\n"
+#~ " -b, --suffix-format=FORMAT utiliser sprintf FORMAT au lieu de %%d\n"
+#~ " -f, --prefix=PRÉFIXE utiliser le PRÉFIXE au lieu de `xx'\n"
+#~ " -k, --keep-files ne pas détruire les fichiers \n"
+#~ " lorsqu'il y erreur\n"
+#~ " -n, --digits=NOMBRE utiliser NOMBRE de chiffres au lieu de 2\n"
+#~ " -s, --quiet, --silent ne pas afficher la taille des fichiers\n"
+#~ " de sortie\n"
+#~ " -z, --elide-empty-files détruire les fichiers de sortie vides\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "Lire de l'entrée standard si le FICHIER est -. Chaque PATRON peut être:\n"
+#~ "\n"
+#~ " ENTIER copier jusqu'à mais sans inclure le nombre "
+#~ "spécifiée\n"
+#~ " de lignes\n"
+#~ " /REGEXP/[SAUT] copier jusqu'à la détection d'une ligne identique\n"
+#~ " mais sans l'inclure\n"
+#~ " %%REGEXP%%[SAUT] escamoter jusqu'à, mais sans inclure une\n"
+#~ " ligne identique\n"
+#~ " {ENTIER} répéter le patron précédent un nombre de fois\n"
+#~ " {*} répéter le patron précédent le plus souvent "
+#~ "possible\n"
+#~ "\n"
+#~ "Une ligne de SAUT a besoin d'un `+' ou `-' suivi d'un entier positif.\n"
+
+#~ msgid ""
+#~ "Print selected parts of lines from each FILE to standard output.\n"
+#~ "\n"
+#~ " -b, --bytes=LIST output only these bytes\n"
+#~ " -c, --characters=LIST output only these characters\n"
+#~ " -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+#~ " -f, --fields=LIST output only these fields; also print any line\n"
+#~ " that contains no delimiter character, unless\n"
+#~ " the -s option is specified\n"
+#~ " -n (ignored)\n"
+#~ " -s, --only-delimited do not print lines not containing delimiters\n"
+#~ " --output-delimiter=STRING use STRING as the output delimiter\n"
+#~ " the default is to use the input delimiter\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+#~ "range, or many ranges separated by commas. Each range is one of:\n"
+#~ "\n"
+#~ " N N'th byte, character or field, counted from 1\n"
+#~ " N- from N'th byte, character or field, to end of line\n"
+#~ " N-M from N'th to M'th (included) byte, character or field\n"
+#~ " -M from first to M'th (included) byte, character or field\n"
+#~ "\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ msgstr ""
+#~ "Afficher des parties de lignes de chaque FICHIER vers la sortie "
+#~ "standard.\n"
+#~ "\n"
+#~ " -b, --bytes=LISTE afficher seulement la LISTE des octets\n"
+#~ " -c, --characters=LISTE afficher seulement la LISTE des caractères\n"
+#~ " -d, --delimiter=DÉLIM utiliser le DÉLIMiteur au lieu d'une "
+#~ "tabulation\n"
+#~ " comme délimiteur de champs\n"
+#~ " -f, --fields=LISTE afficher seulement la LISTE des champs\n"
+#~ " -n (ignoré)\n"
+#~ " -s, --only-delimited ne pas afficher les lignes ne\n"
+#~ " contenant pas de délimiteurs\n"
+#~ " --output-delimiter=CHAÎNE\n"
+#~ " utiliser la CHAÎNE comme délimiteur de sortie\n"
+#~ " par défaut le délimiteur de l'entrée est "
+#~ "utilisée\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "Utiliser une seule des options -b, -c ou -f. Chaque LISTE se compose "
+#~ "d'une\n"
+#~ "intervalle, ou de plusieurs séparées par des virgules. Chaque "
+#~ "intervalle\n"
+#~ "se compose de:\n"
+#~ "\n"
+#~ " N Nième octet, caractère ou champ, compté à partir de 1\n"
+#~ " N- du Nième octet, caractère ou champ, jusqu'à la fin de la ligne\n"
+#~ " N-M du Nième au Mième (inclus) octet, caractère ou champ\n"
+#~ " -M du premier au Mième (inclus) octet, caractère ou champ\n"
+#~ "\n"
+#~ "Sans FICHIER, ou quand le FICHIER est -, lire de l'entrée standard.\n"
+
+#~ msgid ""
+#~ "For each pair of input lines with identical join fields, write a line to\n"
+#~ "standard output. The default join field is the first, delimited\n"
+#~ "by whitespace. When FILE1 or FILE2 (not both) is -, read standard "
+#~ "input.\n"
+#~ "\n"
+#~ " -a SIDE print unpairable lines coming from file SIDE\n"
+#~ " -e EMPTY replace missing input fields with EMPTY\n"
+#~ " -i, --ignore-case ignore differences in case when comparing fields\n"
+#~ " -j FIELD (obsolescent) equivalent to `-1 FIELD -2 FIELD'\n"
+#~ " -j1 FIELD (obsolescent) equivalent to `-1 FIELD'\n"
+#~ " -j2 FIELD (obsolescent) equivalent to `-2 FIELD'\n"
+#~ " -o FORMAT obey FORMAT while constructing output line\n"
+#~ " -t CHAR use CHAR as input and output field separator\n"
+#~ " -v SIDE like -a SIDE, but suppress joined output lines\n"
+#~ " -1 FIELD join on this FIELD of file 1\n"
+#~ " -2 FIELD join on this FIELD of file 2\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+#~ "else fields are separated by CHAR. Any FIELD is a field number counted\n"
+#~ "from 1. FORMAT is one or more comma or blank separated specifications,\n"
+#~ "each being `SIDE.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+#~ "the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+#~ "separated by CHAR.\n"
+#~ msgstr ""
+#~ "Pour chaque paire de lignes en entrée ayant un champ de fusion "
+#~ "identique,\n"
+#~ "écrire une ligne sur la sortie standard.\n"
+#~ "Le champ de fusion est le premier, délimité par un blanc.\n"
+#~ "Si FICHIER1 ou FICHIER2 (pas les 2) est -, lire de l'entrée standard.\n"
+#~ "\n"
+#~ " -a COTÉ afficher les lignes non repérables venant du \n"
+#~ " fichier COTÉ\n"
+#~ " -e VIDE remplacer les champs d'entrée manquants par VIDE\n"
+#~ " -i, --ignore-case ignorer la casse des caractères lors de la\n"
+#~ " comparaison des champs\n"
+#~ " -j CHAMP option désuète équivalente à `-1 CHAMP -2 CHAMP'\n"
+#~ " -j1 CHAMP option désuète équivalente à `-1 CHAMP'\n"
+#~ " -j2 CHAMP option désuète équivalente à `-2 CHAMP'\n"
+#~ " -o FORMAT respecter le FORMAT lors de la construction\n"
+#~ " de sortie\n"
+#~ " -t CAR utiliser CAR comme délimiteur de champs à l'entrée\n"
+#~ " et à la sortie\n"
+#~ " -v COTÉ comme -a COTÉ, mais supprimer les lignes\n"
+#~ " de sortie fusionnées\n"
+#~ " -1 CHAMP fusionner sur le champs CHAMP du fichier 1\n"
+#~ " -2 CHAMP fusionner sur le champs CHAMP du fichier 2\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "À moins que -t CAR ne soit donné, les blancs de tête séparant\n"
+#~ "les champs sont ignorés sinon les champs sont séparés par CAR.\n"
+#~ "Chaque CHAMP est un champ compté numériquement à partir de 1.\n"
+#~ "FORMAT est une spécification contenant une ou plusieurs virgules ou "
+#~ "blancs\n"
+#~ "chacune étant `COTÉ.CHAMP' ou `0'. Par défaut FORMAT affiche des\n"
+#~ "champs fusionnés,\n"
+#~ "les champs restants de FICHIER1 ou FICHIER2 sont tous séparés par CAR.\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION] [FILE]...\n"
+#~ " or: %s [OPTION] --check [FILE]\n"
+#~ "Print or check %s (%d-bit) checksums.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ "The following two options are useful only when verifying checksums:\n"
+#~ " --status don't output anything, status code shows "
+#~ "success\n"
+#~ " -w, --warn warn about improperly formated checksum lines\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "The sums are computed as described in %s. When checking, the input\n"
+#~ "should be a former output of this program. The default mode is to print\n"
+#~ "a line with checksum, a character indicating type (`*' for binary, ` ' "
+#~ "for\n"
+#~ "text), and name for each FILE.\n"
+#~ msgstr ""
+#~ "Usage: %s [OPTION] [FICHIER]...\n"
+#~ " ou: %s [OPTION] --check [FICHIER]\n"
+#~ "Afficher ou vérifier les sommes de contrôle %s (%d-bits).\n"
+#~ "Sans FICHIER, ou quand FICHIER est -, lire de l'entrée standard.\n"
+#~ "\n"
+#~ " -b, --binary lire les fichiers en mode binaire \n"
+#~ " (par défaut sous DOS/WIndows)\n"
+#~ " -c, --check vérifier les sommes %s par rapport à la liste\n"
+#~ " -t, --text lire les fichiers en mode texte (par défaut)\n"
+#~ "\n"
+#~ "Les deux options suivantes sont utiles seulement lors de la vérification\n"
+#~ "des sommes de contrôle:\n"
+#~ " --status ne rien afficher, sauf le constat\n"
+#~ " de fin d'exécution\n"
+#~ " -w, --warn avertir si les lignes de contrôle MD5\n"
+#~ " sont mal formatées\n"
+#~ "\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "Les sommes sont calculées selon la description de %s. Lors de la "
+#~ "vérification,\n"
+#~ "l'entrée devrait être formellement une sortie de ce programme. Le mode "
+#~ "par défaut\n"
+#~ "est d'afficher la ligne avec la somme de contrôle, un caractère "
+#~ "indiquant\n"
+#~ "le type (`*' pour binaire, ` ' pour texte) et un nom pour chaque "
+#~ "FICHIER.\n"
+
+#~ msgid ""
+#~ "Write each FILE to standard output, with line numbers added.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ " -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+#~ " -d, --section-delimiter=CC use CC for separating logical pages\n"
+#~ " -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+#~ " -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+#~ " -i, --page-increment=NUMBER line number increment at each line\n"
+#~ " -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+#~ "one\n"
+#~ " -n, --number-format=FORMAT insert line numbers according to "
+#~ "FORMAT\n"
+#~ " -p, --no-renumber do not reset line numbers at logical "
+#~ "pages\n"
+#~ " -s, --number-separator=STRING add STRING after (possible) line "
+#~ "number\n"
+#~ " -v, --first-page=NUMBER first line number on each logical page\n"
+#~ " -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+#~ "two delimiter characters for separating logical pages, a missing\n"
+#~ "second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+#~ "\n"
+#~ " a number all lines\n"
+#~ " t number only nonempty lines\n"
+#~ " n number no lines\n"
+#~ " pREGEXP number only lines that contain a match for REGEXP\n"
+#~ "\n"
+#~ "FORMAT is one of:\n"
+#~ "\n"
+#~ " ln left justified, no leading zeros\n"
+#~ " rn right justified, no leading zeros\n"
+#~ " rz right justified, leading zeros\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Afficher chaque FICHIER sur la sortie standard, avec numéros de ligne.\n"
+#~ "Sans FICHIER, ou FICHIER est -, lire de l'entrée standard.\n"
+#~ "\n"
+#~ " -b, --body-numbering=STYLE utiliser STYLE pour numéroter les "
+#~ "lignes\n"
+#~ " -d, --section-delimiter=CC utiliser CC pour séparer les pages\n"
+#~ " logiques\n"
+#~ " -f, --footer-numbering=STYLE utiliser STYLE pour numéroter les "
+#~ "lignes\n"
+#~ " de bas de page\n"
+#~ " -h, --header-numbering=STYLE utiliser STYLE pour numéroter les "
+#~ "lignes\n"
+#~ " d'en-tête\n"
+#~ " -i, --page-increment=N incrémenter de N de lignes à chaque "
+#~ "ligne\n"
+#~ " -l, --join-blank-lines=N regrouper N de lignes vides\n"
+#~ " en une seule ligne\n"
+#~ " -n, --number-format=FORMAT insérer un numéro de ligne selon "
+#~ "FORMAT\n"
+#~ " -p, --no-renumber ne pas réinitialiser le nombre de "
+#~ "lignes\n"
+#~ " aux pages logiques\n"
+#~ " -s, --number-separator=CHAÎNE ajouter la CHAÎNE après (si possible)\n"
+#~ " le numéro de ligne\n"
+#~ " -v, --first-page=NUMÉRO utiliser comme premier NUMÉRO de ligne\n"
+#~ " sur chaque page logique\n"
+#~ " -w, --number-width=N utiliser le NOMBRE de colonnes pour\n"
+#~ " numéroter les lignes\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du "
+#~ "logiciel\n"
+#~ "\n"
+#~ "Par défaut, -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn sont sélectionnées.\n"
+#~ "CC se compose de deux caractères délimiteurs pour séparer les pages "
+#~ "logiques\n"
+#~ "un deuxième caractère manquant implique que:\n"
+#~ "taper \\\\ pour \\. STYLE est une des options parmi:\n"
+#~ "\n"
+#~ " a numéroter toutes les lignes\n"
+#~ " t numéroter seulement les lignes non vides\n"
+#~ " n numéroter n lignes\n"
+#~ " pEXPREG numéroter seulement les lignes ayant une concordance à "
+#~ "EXPREG\n"
+#~ "\n"
+#~ "FORMAT doit être choisi parmi:\n"
+#~ "\n"
+#~ " ln justifié à gauche, sans zéro de préfixe\n"
+#~ " rn justifié à droite, sans zéro de préfixe\n"
+#~ " rz justifié à droite, avec zéros de préfixe\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Write an unambiguous representation, octal bytes by default, of FILE\n"
+#~ "to standard output. With no FILE, or when FILE is -, read standard "
+#~ "input.\n"
+#~ "\n"
+#~ " -A, --address-radix=RADIX decide how file offsets are printed\n"
+#~ " -j, --skip-bytes=BYTES skip BYTES input bytes first on each file\n"
+#~ " -N, --read-bytes=BYTES limit dump to BYTES input bytes per file\n"
+#~ " -s, --strings[=BYTES] output strings of at least BYTES graphic "
+#~ "chars\n"
+#~ " -t, --format=TYPE select output format or formats\n"
+#~ " -v, --output-duplicates do not use * to mark line suppression\n"
+#~ " -w, --width[=BYTES] output BYTES bytes per output line\n"
+#~ " --traditional accept arguments in pre-POSIX form\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Pre-POSIX format specifications may be intermixed, they accumulate:\n"
+#~ " -a same as -t a, select named characters\n"
+#~ " -b same as -t oC, select octal bytes\n"
+#~ " -c same as -t c, select ASCII characters or backslash escapes\n"
+#~ " -d same as -t u2, select unsigned decimal shorts\n"
+#~ " -f same as -t fF, select floats\n"
+#~ " -h same as -t x2, select hexadecimal shorts\n"
+#~ " -i same as -t d2, select decimal shorts\n"
+#~ " -l same as -t d4, select decimal longs\n"
+#~ " -o same as -t o2, select octal shorts\n"
+#~ " -x same as -t x2, select hexadecimal shorts\n"
+#~ msgstr ""
+#~ "Afficher le contenu du FICHIER selon une représentation non ambiguë\n"
+#~ "par un affichage des octets en octal par défaut sur la sortie standard.\n"
+#~ "Sans FICHIER, ou quand FICHIER est -, lire de l'entrée standard.\n"
+#~ "\n"
+#~ " -A, --address-radix=BASE afficher les octets selon un adressage\n"
+#~ " relatif dans la BASE sélectionnée\n"
+#~ " -j, --skip-bytes=N escamoter les N premiers octets de chaque\n"
+#~ " fichier\n"
+#~ " -N, --read-bytes=N limiter à N le nombre d'octets lus par\n"
+#~ " fichier\n"
+#~ " -s, --strings[=N] afficher la chaîne d'au moins N caractères\n"
+#~ " graphiques\n"
+#~ " -t, --format=TYPE sélectionner les formats de sortie\n"
+#~ " -v, --output-duplicates ne pas utiliser * pour marquer la\n"
+#~ " suppression de ligne\n"
+#~ " -w, --width[=N] afficher N octets par ligne de sortie\n"
+#~ " --traditional accepter les arguments de la forme pré-"
+#~ "POSIX\n"
+#~ " --help afficher l'aide-mémore et quitter\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "Les spécifications de format pré-POSIX peuvent être entremêlées,\n"
+#~ "ils sont alors cumulées:\n"
+#~ " -a identique à -t a, identifier les caractères\n"
+#~ " -b identique à -t oC, identifier les octets en octal\n"
+#~ " -c identique à -t c, identifier les caractères ASCII ou\n"
+#~ " la barre oblique inverse\n"
+#~ " -d identique à -t u2, identifier en entier court non signé\n"
+#~ " -f identique à -t fF, identifier en nombre flottant\n"
+#~ " -h identique à -t x2, identifier en hexadécimal court\n"
+#~ " -i identique à -t d2, identifier en décimal court\n"
+#~ " -l identique à -t d4, identifier en décimal long\n"
+#~ " -o identique à -t o2, identifier en octal court\n"
+#~ " -x identique à -t x2, identifier en hexadécimal court\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "For older syntax (second call format), OFFSET means -j OFFSET. LABEL\n"
+#~ "is the pseudo-address at first byte printed, incremented when dump is\n"
+#~ "progressing. For OFFSET and LABEL, a 0x or 0X prefix indicates\n"
+#~ "hexadecimal, suffixes maybe . for octal and b multiply by 512.\n"
+#~ "\n"
+#~ "TYPE is made up of one or more of these specifications:\n"
+#~ "\n"
+#~ " a named character\n"
+#~ " c ASCII character or backslash escape\n"
+#~ " d[SIZE] signed decimal, SIZE bytes per integer\n"
+#~ " f[SIZE] floating point, SIZE bytes per integer\n"
+#~ " o[SIZE] octal, SIZE bytes per integer\n"
+#~ " u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+#~ " x[SIZE] hexadecimal, SIZE bytes per integer\n"
+#~ "\n"
+#~ "SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+#~ "sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+#~ "sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+#~ "for sizeof(double) or L for sizeof(long double).\n"
+#~ "\n"
+#~ "RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+#~ "BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+#~ "with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix "
+#~ "to\n"
+#~ "any type adds a display of printable characters to the end of each line\n"
+#~ "of output. -s without a number implies 3. -w without a number implies "
+#~ "32.\n"
+#~ "By default, od uses -A o -t d2 -w 16.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Pour respecter une vieille syntaxe (deuxième format d'appel), SAUT\n"
+#~ "signifie -j SAUT. ÉTIQUETTE est une pseudo adresse du premier octet "
+#~ "imprimé\n"
+#~ "incrémentée lorsque la vidange s'effectue. Pour le SAUT et l'ÉTIQUETTE, "
+#~ "un\n"
+#~ "préfixe 0x ou 0X indique un format hexadécimal, les suffixes peuvent\n"
+#~ "être . pour l'octal et b pour un multiple de 512 octets.\n"
+#~ "\n"
+#~ "Le TYPE est composé d'une ou plusieurs spécifications suivantes:\n"
+#~ "\n"
+#~ " a identification des caractères\n"
+#~ " c caractère ASCII ou barre oblique inverse\n"
+#~ " d[N] décimal signé, N octets par entier\n"
+#~ " f[N] point flottant, N octets par entier\n"
+#~ " o[N] octal, N octets par entier\n"
+#~ " u[N] décimal non signé N octets par entier\n"
+#~ " x[N] hexadécimal, N octets par entier\n"
+#~ "\n"
+#~ "N est un nombre. Le TYPE est soit d, o, u ou x, N peut être aussi C "
+#~ "pour\n"
+#~ "sizeof(char), S pour sizeof(short), I pour sizeof(int) ou L pour\n"
+#~ "sizeof(long). Si le TYPE est f, N peut aussi être F pour sizeof(float), "
+#~ "D\n"
+#~ "pour sizeof(double) ou L pour sizeof(long double).\n"
+#~ "\n"
+#~ "BASE est d pour décimal, o pour octal, x pour hexadécimal ou n pour "
+#~ "aucun.\n"
+#~ "OCTETS est de type hexadécimal si préfixé par 0x ou 0X, et est un "
+#~ "multiple de\n"
+#~ "512 avec le suffixe b, de 1024 avec k et de 1048576 avec m.\n"
+#~ "-s non suivi d un nombre implique 3, 32 pour -w.\n"
+#~ "Par défaut, od utilise -A o -t d2 -w 16.\n"
+
+#~ msgid ""
+#~ "Paginate or columnate FILE(s) for printing.\n"
+#~ "\n"
+#~ " +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+#~ " begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+#~ " -COLUMN, --columns=COLUMN\n"
+#~ " produce COLUMN-column output and print columns down,\n"
+#~ " unless -a is used. Balance number of lines in the\n"
+#~ " columns on each page.\n"
+#~ " -a, --across print columns across rather than down, used together\n"
+#~ " with -COLUMN\n"
+#~ " -c, --show-control-chars\n"
+#~ " use hat notation (^G) and octal backslash notation\n"
+#~ " -d, --double-space\n"
+#~ " double space the output\n"
+#~ " -D, --date-format=FORMAT\n"
+#~ " use FORMAT for the header date\n"
+#~ " -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+#~ " expand input CHARs (TABs) to tab WIDTH (8)\n"
+#~ " -F, -f, --form-feed\n"
+#~ " use form feeds instead of newlines to separate pages\n"
+#~ " (by a 3-line page header with -F or a 5-line header\n"
+#~ " and trailer without -F)\n"
+#~ msgstr ""
+#~ "Paginer ou mettre en colonne les FICHIERS pour impression.\n"
+#~ "\n"
+#~ " +PREMIÈRE_PAGE[:DERNIÈRE_PAGE], \n"
+#~ " --pages=PREMIÈRE_PAGE[:DERNIÈRE_PAGE]\n"
+#~ " débuter [stopper] l'impression à la PREMIÈRE_PAGE\n"
+#~ " ou à la DERNIÈRE_PAGE\n"
+#~ " -COLUMN\n"
+#~ " --columns=COLUMN\n"
+#~ " produire une sortie en COLONNES et imprimer les\n"
+#~ " les colonnes vers le bas à moins que -a ne soit\n"
+#~ " utilisé. Équilibrer le nombre de lignes de "
+#~ "chaque\n"
+#~ " colonne sur chaque page.\n"
+#~ " -a, --across imprimer les colonnes horizontalement au lieu de\n"
+#~ " verticalement, utilisé ensemble avec -COLUMN\n"
+#~ " -c, --show-control-chars\n"
+#~ " utiliser une notation par chapeau (^G) et octale\n"
+#~ " avec barre oblique inverse\n"
+#~ " -d, --double-space\n"
+#~ " produire une sortie avec double espacement\n"
+#~ " -e[CAR[LARGEUR]], --expand-tabs[=CAR[LARGEUR]]\n"
+#~ " faire l'expansion des CARactères (ou de "
+#~ "tabulation)\n"
+#~ " selon la LARGEUR de tabulation (par défaut 8)\n"
+#~ " -F, -f,\n"
+#~ " --form-feed\n"
+#~ " utiliser des sauts de page au lieu des sauts de \n"
+#~ " lignes pour séparer les pages (3 lignes par en-"
+#~ "tête\n"
+#~ " avec -f ou 5 lignes par en-tête et bas de page "
+#~ "sans -f) \n"
+
+#~ msgid ""
+#~ " -h HEADER, --header=HEADER\n"
+#~ " use a centered HEADER instead of filename in page "
+#~ "header,\n"
+#~ " -h \"\" prints a blank line, don't use -h\"\"\n"
+#~ " -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+#~ " replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+#~ " -J, --join-lines merge full lines, turns off -W line truncation, no "
+#~ "column\n"
+#~ " alignment, -S[STRING] sets separators\n"
+#~ " -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+#~ " set the page length to PAGE_LENGTH (66) lines\n"
+#~ " (default number of lines of text 56, and with -F 63)\n"
+#~ " -m, --merge print all files in parallel, one in each column,\n"
+#~ " truncate lines, but join lines of full length with -"
+#~ "J\n"
+#~ " -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+#~ " number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+#~ " default counting starts with 1st line of input file\n"
+#~ " -N NUMBER, --first-line-number=NUMBER\n"
+#~ " start counting with NUMBER at 1st line of first\n"
+#~ " page printed (see +FIRST_PAGE)\n"
+#~ " -o MARGIN, --indent=MARGIN\n"
+#~ " offset each line with MARGIN (zero) spaces, do not\n"
+#~ " affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+#~ " -r, --no-file-warnings\n"
+#~ " omit warning when a file cannot be opened\n"
+#~ msgstr ""
+#~ " -h EN-TÊTE, --header=EN-TÊTE\n"
+#~ " centrer l'EN-TÊTE au lieu du nom de fichier dans\n"
+#~ " l'en-tête de la page, avec de longues en-têtes\n"
+#~ " une troncation du côté gauche peut survenir\n"
+#~ " -h \\\"\\\" imprime une ligne blanche.\n"
+#~ " Ne pas utiliser: -h\\\"\\\"\\n\"\n"
+#~ " -i, --output-tabs[=CAR[LARGEUR]]\n"
+#~ " remplacer les blancs par des CARactères (ou\n"
+#~ " de tabulation) selon la LARGEUR de tabulation (8)\n"
+#~ " -J, --join-lines\n"
+#~ " faire la fusion des lignes pleines, inhiber la \n"
+#~ " troncation des lignes -w, sans alignement des\n"
+#~ " colonnes -s[CHAÎNE] initialise les séparateurs\n"
+#~ " -l LONGUEUR_DE_PAGE, --length LONGUEUR_DE_PAGE\n"
+#~ " utiliser LONGUEUR_DE_PAGE au lieu de 66 lignes\n"
+#~ " (par défaut de lignes est de 56 pour un texte,\n"
+#~ " avec -f de 63)\n"
+#~ " -m, --merge imprimer tous les fichiers en parallèle un par\n"
+#~ " colonne, tronque les lignes, mais joint les\n"
+#~ " lignes de pleine longueur avec -j\n"
+#~ " -n, --number-lines[=SÉP[CHIFFRES]]\n"
+#~ " numéroter les lignes, par des CHIFFRES (5), suivi "
+#~ "de\n"
+#~ " SÉParateurs (TAB) par défaut le compteur débute\n"
+#~ " avec la première ligne du fichier d'entrée\n"
+#~ " -N, --first-line-number=VALEUR\n"
+#~ " débuter le compteur avec la VALEUR avec la 1ère "
+#~ "ligne\n"
+#~ " de la 1ère page imprimée (voir +PREMIÈRE_PAGE)\n"
+#~ " -o, --indent=MARGE\n"
+#~ " débuter l'impression de chaque ligne après une\n"
+#~ " MARGE d'espacement (n'affecte pas -w)\n"
+#~ " -r, --no-file-warnings\n"
+#~ " inhiber les avertissements lorsqu'un fichier\n"
+#~ " ne peut être ouvert\n"
+
+#~ msgid ""
+#~ " -s[CHAR],--separator[=CHAR]\n"
+#~ " separate columns by a single character, default for "
+#~ "CHAR\n"
+#~ " is the <TAB> character without -w and 'no char' with -"
+#~ "w\n"
+#~ " -s[CHAR] turns off line truncation of all 3 column\n"
+#~ " options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+#~ " -S[STRING], --sep-string[=STRING]\n"
+#~ " separate columns by an optional STRING, don't use\n"
+#~ " -S \"STRING\", -S only: No separator used (same as -S"
+#~ "\"\"),\n"
+#~ " without -S: Default separator <TAB> with -J and "
+#~ "<space>\n"
+#~ " otherwise (same as -S\" \"), no effect on column "
+#~ "options\n"
+#~ " -t, --omit-header omit page headers and trailers\n"
+#~ " -T, --omit-pagination\n"
+#~ " omit page headers and trailers, eliminate any "
+#~ "pagination\n"
+#~ " by form feeds set in input files\n"
+#~ " -v, --show-nonprinting\n"
+#~ " use octal backslash notation\n"
+#~ " -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+#~ " set page width to PAGE_WIDTH (72) characters for\n"
+#~ " multiple text-column output only, -s[char] turns off "
+#~ "(72)\n"
+#~ " -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+#~ " set page width to PAGE_WIDTH (72) characters always,\n"
+#~ " truncate lines, except -J option is set, no "
+#~ "interference\n"
+#~ " with -S or -s\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+#~ "FILE is -, read standard input.\n"
+#~ msgstr ""
+#~ " -s, --separator[=CHAÎNE]\n"
+#~ " séparer les colonnes à l'aide d'une CHAÎNE "
+#~ "optionnelle\n"
+#~ " optionnelle, ne pas utiliser -s \\\"CHAÎNE\\\"\n"
+#~ " sans -s utilise le séparateur (par défaut un "
+#~ "blanc)\n"
+#~ " identique à -s\\\" \\\"; -s seulement: aucun \n"
+#~ " séparateur n'est utilisé, identique à -s\\\"\\\"\n"
+#~ " -S[CHAÎNE],\n"
+#~ " --sep-string[=CHAÎNE]\n"
+#~ " séparer les colonnes à l'aide d'une chaîne "
+#~ "optionnelle\n"
+#~ " ne pas utiliser -S \"CHAÎNE\", -S seulement: "
+#~ "SANS \n"
+#~ " utiliser de séparateur (identique à -S\"\"),\n"
+#~ " sans -S: séparateur par défaut <TAB> avec -J et "
+#~ "<space>\n"
+#~ " autrement (identique as -S\" \"), sans effet sur "
+#~ "les options\n"
+#~ " des colonnes\n"
+#~ " -t, --omit-header\n"
+#~ " inhiber l'en-tête et le bas de page\n"
+#~ " -T, --omit-pagination\n"
+#~ " inhiber l'en-tête et le bas de page, éliminer\n"
+#~ " les agencements de page par saut de page indiqués\n"
+#~ " dans les fichiers d'entrée\n"
+#~ " -v, --show-nonprinting\n"
+#~ " utiliser la notation octale avec barre oblique\n"
+#~ " inverse\n"
+#~ " -w LARGEUR_DE_PAGE,\n"
+#~ " --width=LARGEUR_DE_PAGE\n"
+#~ " utiliser LARGEUR_DE_PAGE au lieu de 72 colonnes\\n"
+#~ "\"\n"
+#~ " tronquer les lignes (voir aussi l'option -j)\n"
+#~ " -W LARGEUR_DE_PAGE,\n"
+#~ " --page-width=LARGEUR_DE_PAGE\n"
+#~ " toujours utiliser une LARGEUR_DE_PAGE de 72 "
+#~ "caractères,\n"
+#~ " tronquer les lignes, sauf lorsque l'option -J est "
+#~ "utilisée\n"
+#~ " sans interférence avec -S ou -s\n"
+#~ " --help afficher l'aide-mémore et quitter\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "L'option -T est implicite lorsque -l N est utilisée et avec -f quand nn "
+#~ "<= 10\n"
+#~ "ou <= 3. Sans FICHIER, ou quand FICHIER est -, lire de l'entrée "
+#~ "standard.\n"
+
+#~ msgid ""
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ "\n"
+#~ " -A, --auto-reference output automatically generated "
+#~ "references\n"
+#~ " -C, --copyright display Copyright and copying "
+#~ "conditions\n"
+#~ " -G, --traditional behave more like System V `ptx'\n"
+#~ " -F, --flag-truncation=STRING use STRING for flagging line "
+#~ "truncations\n"
+#~ " -M, --macro-name=STRING macro name to use instead of `xx'\n"
+#~ " -O, --format=roff generate output as roff directives\n"
+#~ " -R, --right-side-refs put references at right, not counted in -"
+#~ "w\n"
+#~ " -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+#~ " -T, --format=tex generate output as TeX directives\n"
+#~ " -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+#~ " -b, --break-file=FILE word break characters in this FILE\n"
+#~ " -f, --ignore-case fold lower case to upper case for "
+#~ "sorting\n"
+#~ " -g, --gap-size=NUMBER gap size in columns between output "
+#~ "fields\n"
+#~ " -i, --ignore-file=FILE read ignore word list from FILE\n"
+#~ " -o, --only-file=FILE read only word list from this FILE\n"
+#~ " -r, --references first field of each line is a reference\n"
+#~ " -t, --typeset-mode - not implemented -\n"
+#~ " -w, --width=NUMBER output width in columns, reference "
+#~ "excluded\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+#~ msgstr ""
+#~ "Les arguments obligatoires pour les options de formes longues le sont "
+#~ "aussi\n"
+#~ "pour les options de formes courtes.\n"
+#~ "\n"
+#~ " -A, --auto-reference générer des références automatiquement\n"
+#~ " -C, --copyright afficher les Droits d'auteur et les "
+#~ "conditions\n"
+#~ " de recopie\n"
+#~ " -G, --traditional faire fonctionner `ptx' comme en System "
+#~ "V\n"
+#~ " -F, --flag-truncation=CHAÎNE utiliser la CHAÎNE pour indiquer la "
+#~ "troncation\n"
+#~ " des lignes\n"
+#~ " -M, --macro-name=CHAÎNE nom de la macro à utiliser au lieu de "
+#~ "`xx'\n"
+#~ " -O, --format=roff générer la sortie comme des directives "
+#~ "roff\n"
+#~ " -R, --right-side-refs placer les références à droite, sans "
+#~ "décompte -w\n"
+#~ " -S, --sentence-regexp=REGEXP pour la fin des lignes ou des phrases\n"
+#~ " -T, --format=tex générer la sortie comme des directives "
+#~ "TeX\n"
+#~ " -W, --word-regexp=REGEXP utiliser REGEXP pour établir la "
+#~ "concordance avec chaque mot\n"
+#~ " -b, --break-file=FICHIER utiliser les coupures de mots de ce "
+#~ "FICHIER\n"
+#~ " -f, --ignore-case ramener les minuscules en majuscules "
+#~ "pour le trie\n"
+#~ " -g, --gap-size=N espacer de N blancs les colonnes entre "
+#~ "les champs\n"
+#~ " -i, --ignore-file=FICHIER lire la liste des mots à ignorer de ce "
+#~ "FICHIER\n"
+#~ " -o, --only-file=FICHIER lire la liste des mots uniquement de ce "
+#~ "FICHIER\n"
+#~ " -r, --references donner la référence du 1er champ de "
+#~ "chaque ligne\n"
+#~ " -t, --typeset-mode - option non implanté -\n"
+#~ " -w, --width=N largeur des colonnes, références "
+#~ "exclues\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du "
+#~ "logiciel\n"
+#~ "\n"
+#~ "Sans FICHIER, ou quand le FICHIER est -, lire de l'entrée standard. -F "
+#~ "par défaut.\n"
+
+#~ msgid ""
+#~ "Other options:\n"
+#~ "\n"
+#~ " -c, --check check whether input is sorted; do not sort\n"
+#~ " -k, --key=POS1[,POS2] start a key at POS1, end it at POS 2 (origin "
+#~ "1)\n"
+#~ " -m, --merge merge already sorted files; do not sort\n"
+#~ " -o, --output=FILE write result to FILE instead of standard "
+#~ "output\n"
+#~ " -s, --stable stabilize sort by disabling last-resort "
+#~ "comparison\n"
+#~ " -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+#~ " -t, --field-separator=SEP use SEP instead of non- to whitespace "
+#~ "transition\n"
+#~ " -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+#~ "s\n"
+#~ " multiple options specify multiple "
+#~ "directories\n"
+#~ " -u, --unique with -c: check for strict ordering\n"
+#~ " otherwise: output only the first of an "
+#~ "equal run\n"
+#~ " -z, --zero-terminated end lines with 0 byte, not newline\n"
+#~ " +POS1 [-POS2] start a key at POS1, end it before POS2 "
+#~ "(origin 0)\n"
+#~ " Warning: this option is obsolescent\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Autres options:\n"
+#~ "\n"
+#~ " -c, --check vérifier si l'entrée est triée; ne pas trier\n"
+#~ " -k, --key=POS1[,POS2] débuter avec la clé à la POS1, terminer à POS "
+#~ "2 (origine 1)\n"
+#~ " -m, --merge faire la fusion des fichiers déjà triés; ne "
+#~ "pas trier\n"
+#~ " -o, --output=FICHIER écrire le résultat au FICHIER au lieu de la "
+#~ "sortie standard\n"
+#~ " -s, --stable stabiliser le tri en inhibant la comparaison "
+#~ "de dernier recours\n"
+#~ " -S, --buffer-size=TAILLE utiliser la TAILLE pour le tampon mémoire "
+#~ "principal\n"
+#~ " -t, --field-separator=SEP utiliser le SÉParateur au lieu de non- par "
+#~ "les transitions d'espace blancs\n"
+#~ " -T, --temporary-directory=RÉP utiliser le RÉP pour les fichiers "
+#~ "temporaires, pas $TMPDIR ou %s\n"
+#~ " options multiples pour spécifier de multiples "
+#~ "répertoires\n"
+#~ " -u, --unique avec -c: vérifier l'ordonnancement strict\n"
+#~ " autrement: afficher les premiers d'une passe "
+#~ "équivalente\n"
+#~ " -z, --zero-terminated terminer les lignes avec l'octet 0, pas par "
+#~ "le retour de chariot\n"
+#~ " +POS1 [-POS2] débuter avec la clé à POS1, terminer avant "
+#~ "POS2 (origin 0)\n"
+#~ " AVERTISSEMENT: cette option est désuète\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Print the last %d lines of each FILE to standard output.\n"
+#~ "With more than one FILE, precede each with a header giving the file "
+#~ "name.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ " --retry keep trying to open a file even if it is\n"
+#~ " inaccessible when tail starts or if it "
+#~ "becomes\n"
+#~ " inaccessible later -- useful only with -f\n"
+#~ " -c, --bytes=N output the last N bytes\n"
+#~ " -f, --follow[={name|descriptor}] output appended data as the file "
+#~ "grows;\n"
+#~ " -f, --follow, and --follow=descriptor are\n"
+#~ " equivalent\n"
+#~ " -n, --lines=N output the last N lines, instead of the last %"
+#~ "d\n"
+#~ " --max-unchanged-stats=N\n"
+#~ " with --follow=name, reopen a FILE which has "
+#~ "not\n"
+#~ " changed size after N (default %d) "
+#~ "iterations\n"
+#~ " to see if it has been unlinked or renamed\n"
+#~ " (this is the usual case of rotated log "
+#~ "files)\n"
+#~ " --pid=PID with -f, terminate after process ID, PID dies\n"
+#~ " -q, --quiet, --silent never output headers giving file names\n"
+#~ " -s, --sleep-interval=S with -f, each iteration lasts approximately S\n"
+#~ " (default 1) seconds\n"
+#~ " -v, --verbose always output headers giving file names\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Imprimer les dernières %d lignes de chaque FICHIER sur la sortie "
+#~ "standard.\n"
+#~ "Avec plus d'un FICHIER, précéder chacun par une en-tête contenant le nom "
+#~ "du\n"
+#~ "fichier. Sans FICHIER, ou quand FICHIER est -, lire de l'entrée "
+#~ "standard.\n"
+#~ "\n"
+#~ " --retry continuer de tenter d'ouvrir le fichier même "
+#~ "s'il\n"
+#~ " est inaccessible lorsque tail démarre ou s'il "
+#~ "devient\n"
+#~ " inaccessible plus tard -- utile seulement avec "
+#~ "-f\n"
+#~ " -c, --bytes=N afficher les N derniers octets \n"
+#~ " -f, --follow[={nom|descripteur}]\n"
+#~ " afficher les dernières données ajoutées tant\n"
+#~ " que le fichier s'accroît; -f, --follow, et\n"
+#~ " --follow=descripteur sont équivalents\n"
+#~ " -n, --lines=N afficher les dernières N lignes, au lieu des %"
+#~ "d\n"
+#~ " --max-unchanged-stats=N\n"
+#~ " voir la documentation de texinfo\n"
+#~ " (le défaut est %d)\n"
+#~ " --pid=PID avec -f, terminer après le processus ID, PID "
+#~ "est arrêté\n"
+#~ " -q, --quiet, --silent ne jamais afficher l'en-tête avec\n"
+#~ " les noms de fichiers\n"
+#~ " -s, --sleep-interval=S avec -f, attendre S secondes entre les "
+#~ "itérations\n"
+#~ " -v, --verbose toujours afficher l'en-tête avec\n"
+#~ " les noms de fichiers\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "Si le premier caractère de N (le nombre d octets ou lignes) est un `+',\n"
+#~ "afficher à partir du Nième item depuis le début de chaque fichier,\n"
+#~ "autrement, afficher les derniers N items dans le fichier.\n"
+#~ "N peut comporter un suffixe de multiple:\n"
+#~ "b pour 512, k pour 1024, m pour 1048576 (1 Meg). Une première OPTION "
+#~ "avec\n"
+#~ "-VALEUR ou +VALEUR est traitée comme -n VALEUR ou -n + VALEUR\n"
+#~ "à moins que VALEUR ait un suffixe multiplicateur [bkm],\n"
+#~ "dans ce cas il est traité comme -c VALEUR ou -c +VALEUR.\n"
+#~ "Option à décrire par le mainteneur: option non décrite en original.\n"
+#~ "\n"
+#~ "Avec l'option --follow (-f), tail utilise par défaut le descripteur de "
+#~ "fichier\n"
+#~ "qui permet de suivre l'évolution du fichier ciblé. Ce comportement n'est "
+#~ "pas\n"
+#~ "désirable lorsqu'on désire suivre l'évolution d'un fichier à l'aide de "
+#~ "son\n"
+#~ "nom (lors de la rotation des journaux). Utiliser --follow=nom dans ce "
+#~ "cas.\n"
+#~ "Cela forcera tail à suivre l'évolution du fichier en l'ouvrant "
+#~ "périodiquement\n"
+#~ "afin de vérifier s'il a été détruit ou recréé par un autre programme.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "If the first character of N (the number of bytes or lines) is a `+',\n"
+#~ "print beginning with the Nth item from the start of each file, "
+#~ "otherwise,\n"
+#~ "print the last N items in the file. N may have a multiplier suffix:\n"
+#~ "b for 512, k for 1024, m for 1048576 (1 Meg). A first OPTION of -VALUE\n"
+#~ "or +VALUE is treated like -n VALUE or -n +VALUE unless VALUE has one of\n"
+#~ "the [bkm] suffix multipliers, in which case it is treated like -c VALUE\n"
+#~ "or -c +VALUE. Warning: a first option of +VALUE is obsolescent, and "
+#~ "support\n"
+#~ "for it will be withdrawn.\n"
+#~ "\n"
+#~ "With --follow (-f), tail defaults to following the file descriptor, "
+#~ "which\n"
+#~ "means that even if a tail'ed file is renamed, tail will continue to "
+#~ "track\n"
+#~ "its end. This default behavior is not desirable when you really want to\n"
+#~ "track the actual name of the file, not the file descriptor (e.g., log\n"
+#~ "rotation). Use --follow=name in that case. That causes tail to track "
+#~ "the\n"
+#~ "named file by reopening it periodically to see if it has been removed "
+#~ "and\n"
+#~ "recreated by some other program.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Si le premier caractère de N (le nombre d'octets ou de lignes) est `+',\n"
+#~ "afficher le Nième item depuis le début de chaque fichier, autrement,\n"
+#~ "afficher les derniers N items du fichier. N peut avoir un suffixe "
+#~ "multiplicateur:\n"
+#~ "b pour 512, k pour 1024, m pour 1048576 (1 Meg). Une 1è OPTION ayant -"
+#~ "VALEUR\n"
+#~ "ou +VALEUR est traitée comme -n VALEUR ou -n +VALEUR à moins que VALEUR "
+#~ "ait un des\n"
+#~ "suffixes multiplicateurs suivants [bkm], dans ce cas il est traité comme -"
+#~ "c VALEUR\n"
+#~ "ou -c +VALEUR. AVERTISSEMENT: une 1ère option ayant la forme +VALEUR est "
+#~ "désuète,\n"
+#~ "dont le support ne sera plus disponible.\n"
+#~ "\n"
+#~ "Avec --follow (-f), suivre par défaut le descripteur de fichier, lequel\n"
+#~ "signifie que même si le fichier est renommé alors qu'il est suivi à "
+#~ "l'aide d'un `tail'\n"
+#~ "le suivi sera poursuivi. Ce comportement par défaut n'est pas "
+#~ "souhaitable\n"
+#~ "lorsqu'on désire suivre un fichier à l'aide de son nom, pas le "
+#~ "descripteur de fichier\n"
+#~ "(i.e., rotation de journal). Utiliser --follow=nom dans ce cas. Cela "
+#~ "amène `tail'\n"
+#~ "à suivre le fichier en le réouvrant de façon périodique afin de voir s'il "
+#~ "a été\n"
+#~ "renommé ou détruit par un autre programme.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "SETs are specified as strings of characters. Most represent themselves.\n"
+#~ "Interpreted sequences are:\n"
+#~ "\n"
+#~ " \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a audible BEL\n"
+#~ " \\b backspace\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ " CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+#~ " [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+#~ " [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+#~ " [:alnum:] all letters and digits\n"
+#~ " [:alpha:] all letters\n"
+#~ " [:blank:] all horizontal whitespace\n"
+#~ " [:cntrl:] all control characters\n"
+#~ " [:digit:] all digits\n"
+#~ " [:graph:] all printable characters, not including space\n"
+#~ " [:lower:] all lower case letters\n"
+#~ " [:print:] all printable characters, including space\n"
+#~ " [:punct:] all punctuation characters\n"
+#~ " [:space:] all horizontal or vertical whitespace\n"
+#~ " [:upper:] all upper case letters\n"
+#~ " [:xdigit:] all hexadecimal digits\n"
+#~ " [=CHAR=] all characters which are equivalent to CHAR\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Les ENSEMBLES sont spécifiés comme des chaînes de caractères.\n"
+#~ "La plupart se représente eux-mêmes.\n"
+#~ "Les séquences d'interprétation sont:\n"
+#~ "\n"
+#~ " \\NNN caractère ayant la valeur octale NNN (1 à 3 chiffres "
+#~ "octaux)\n"
+#~ " \\\\ barre oblique inverse\n"
+#~ " \\a cloche sonore \n"
+#~ " \\b caractère d'effacement\n"
+#~ " \\f saut de page \n"
+#~ " \\n saut de ligne \n"
+#~ " \\r retour\n"
+#~ " \\t saut horizontal\n"
+#~ " \\v saut vertical \n"
+#~ " CAR1-CAR2 tous les caractères de CAR1 à CAR2 en ordre croissant\n"
+#~ " [CAR*] dans ENS2, copie de CAR jusqu'à longueur de ENS1\n"
+#~ " [CAR*RÉP] RÉPéter copies de CAR, RÉPéter en octal si débute par "
+#~ "0\n"
+#~ " [:alnum:] toutes les lettres et les chiffres\n"
+#~ " [:alpha:] toutes les lettres\n"
+#~ " [:blank:] tous les blancs horizontaux\n"
+#~ " [:cntrl:] tous les caractères de contrôle\n"
+#~ " [:digit:] tous les chiffres\n"
+#~ " [:graph:] tous les caractères imprimables, sans inclure les "
+#~ "blancs\n"
+#~ " [:lower:] tous les lettres minuscules\n"
+#~ " [:print:] tous les caractères imprimables, incluant les blancs\n"
+#~ " [:punct:] tous les caractères de ponctuation\n"
+#~ " [:space:] tous les sauts verticaux ou horizontaux\n"
+#~ " [:upper:] toutes les lettres majuscules\n"
+#~ " [:xdigit:] tous les chiffres hexadécimaux\n"
+#~ " [=CAR=] tous les caractères équivalents à CAR\n"
+
+#~ msgid ""
+#~ "Discard all but one of successive identical lines from INPUT (or\n"
+#~ "standard input), writing to OUTPUT (or standard output).\n"
+#~ "\n"
+#~ " -c, --count prefix lines by the number of occurrences\n"
+#~ " -d, --repeated only print duplicate lines\n"
+#~ " -D, --all-repeated print all duplicate lines\n"
+#~ " -f, --skip-fields=N avoid comparing the first N fields\n"
+#~ " -i, --ignore-case ignore differences in case when comparing\n"
+#~ " -s, --skip-chars=N avoid comparing the first N characters\n"
+#~ " -u, --unique only print unique lines\n"
+#~ " -w, --check-chars=N compare no more than N characters in lines\n"
+#~ " -N same as -f N\n"
+#~ " +N same as -s N (obsolescent; will be withdrawn)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "A field is a run of whitespace, then non-whitespace characters.\n"
+#~ "Fields are skipped before chars.\n"
+#~ msgstr ""
+#~ "Exclure toutes les lignes successives identiques sauf une du FICHIER\n"
+#~ "(ou de l'entrée standard), lors de l'écriture dans un FICHIER\n"
+#~ "(ou vers la sortie standard).\n"
+#~ "\n"
+#~ " -c, --count préfixer les lignes par le nombre d'occurences\n"
+#~ " -d, --repeated afficher seulement les lignes ayant des "
+#~ "duplicatats\n"
+#~ " -D, --all-repeated afficher toutes les lignes qui ont des "
+#~ "duplicatats\n"
+#~ " -f, --skip-fields=N éviter de comparer les N premiers champs\n"
+#~ " -i, --ignore-case ignorer les différences de la casse\n"
+#~ " -s, --skip-chars=N éviter de comparer les N premiers caractères\n"
+#~ " -u, --unique afficher seulement les lignes uniques\n"
+#~ " -w, --check-chars=N ne pas comparer plus de N caractères des lignes\n"
+#~ " -N identique à -f N\n"
+#~ " +N identique à -s N\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "Un champ est une suite de blancs, suivi de caractères non-blancs.\n"
+#~ "Les champs sont escamotés avant les caractères.\n"
+
+#~ msgid ""
+#~ "specified number of bytes `%s' is larger than the maximum\n"
+#~ "representable value of type `long'"
+#~ msgstr ""
+#~ "Le nombre d'octets spécifiés `%s' est plus grand que la valeur\n"
+#~ "maximale représentable du type `long'"
+
+#~ msgid "%s%*s%s%*sPage"
+#~ msgstr "%s%*s%s%*sPage"
+
+#~ msgid ""
+#~ "Write sorted concatenation of all FILE(s) to standard output.\n"
+#~ "\n"
+#~ " +POS1 [-POS2] start a key at POS1, end it *before* POS2 "
+#~ "(obsolescent)\n"
+#~ "\t\t field numbers and character offsets are numbered\n"
+#~ " starting with zero (contrast with the -k option)\n"
+#~ " -b ignore leading blanks in sort fields or keys\n"
+#~ " -c check if given files already sorted, do not sort\n"
+#~ " -d consider only [a-zA-Z0-9 ] characters in keys\n"
+#~ " -f fold lower case to upper case characters in keys\n"
+#~ " -g compare according to general numerical value, imply -"
+#~ "b\n"
+#~ " -i consider only [\\040-\\0176] characters in keys\n"
+#~ " -k POS1[,POS2] start a key at POS1, end it *at* POS2\n"
+#~ "\t\t field numbers and character offsets are numbered\n"
+#~ " starting with one (contrast with zero-based +POS "
+#~ "form)\n"
+#~ " -m merge already sorted files, do not sort\n"
+#~ " -M compare (unknown) < `JAN' < ... < `DEC', imply -b\n"
+#~ " -n compare according to string numerical value, imply -b\n"
+#~ " -o FILE write result on FILE instead of standard output\n"
+#~ " -r reverse the result of comparisons\n"
+#~ " -s stabilize sort by disabling last resort comparison\n"
+#~ " -t SEP use SEParator instead of non- to whitespace "
+#~ "transition\n"
+#~ " -T DIRECTORY use DIRECTORY for temporary files, not $TMPDIR or %s\n"
+#~ " -u with -c, check for strict ordering;\n"
+#~ " with -m, only output the first of an equal sequence\n"
+#~ " -z end lines with 0 byte, not newline, for find -print0\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Écrire la concaténation triée de tous les FICHIERS sur la sortie "
+#~ "standard.\n"
+#~ "\n"
+#~ " +POS1 [-POS2] débuter avec la clé de position POS1, et terminer\n"
+#~ " *à* POS2 (forme désuète), les numéros de champs \n"
+#~ " et la position relative des caractères sont numérotés\n"
+#~ " -b ignorer les blancs de tête dans les champs\n"
+#~ " ou les clés triés\n"
+#~ " -c vérifier si un fichier soumis a déjà été trié,\n"
+#~ " si oui ne pas trier\n"
+#~ " -d considérer seulement les caractères [a-zA-Z0-9 ]\n"
+#~ " comme clés\n"
+#~ " -f considérer les minuscules comme des majuscules\n"
+#~ " comme clés\n"
+#~ " -g comparer selon la valeur numérique générale, implique -"
+#~ "b\n"
+#~ " -i considérer seulement les caractères [\\040-\\0176]\n"
+#~ " comme clés\n"
+#~ " -k POS1[,POS2] identique à +POS1 [-POS2], mais toutes les positions\n"
+#~ " comptées à partir de 1, les numéros de champs \n"
+#~ " et la position relative des caractères sont numérotés\n"
+#~ " -m fusionner les fichiers triés, ne pas trier \n"
+#~ " -M comparer selon (inconnu) < `JAN' < ... < `DÉC',\n"
+#~ " implique -b\n"
+#~ " -n comparer selon la valeur numérique de la chaîne,\n"
+#~ " implique -b\n"
+#~ " -o FICHIER produire le résultat dans le FICHIER au lieu de la\n"
+#~ " sortie standard\n"
+#~ " -r inverser le résultat des comparaisons\n"
+#~ " -s stabiliser le trie en inhibant la dernière "
+#~ "comparaison\n"
+#~ " -t SÉP utiliser le SÉParateur au lieu de la transition\n"
+#~ " non blanc\n"
+#~ " à blanc\n"
+#~ " -T RÉPERTOIRE utiliser le RÉPERTOIRE temporaire, non pas $TMPDIR\n"
+#~ " ou %s\n"
+#~ " -u avec -c, vérifier l'ordonnancement strict\n"
+#~ " avec -m, afficher seulement la première séquence\n"
+#~ " identique\n"
+#~ " -z terminer les lignes avec un octet de valeur 0,\n"
+#~ " pour la commande find find -print0\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+
+#~ msgid ""
+#~ "when using the old-style +POS and -POS key specifiers,\n"
+#~ "the +POS specifier must come first"
+#~ msgstr ""
+#~ "lorsque les options +POS et -POS de la vieille syntaxe\n"
+#~ "sont utilisées, l'option +POS doit être spécifiée en premier"
+
+#~ msgid "option `-k' requires an argument"
+#~ msgstr "L'option `-k' requiert un argument."
+
+#~ msgid "starting field spec has `.' but lacks following character offset"
+#~ msgstr ""
+#~ "La spécification du champ de départ contient `.' mais n'est pas suivi\n"
+#~ "de caractères de saut."
+
+#~ msgid ""
+#~ "starting field character offset argument to the `-k' option\n"
+#~ "must be positive"
+#~ msgstr ""
+#~ "Le caractère du champ de départ du argument de saut de l'option `-k'\n"
+#~ "doit être positif."
+
+#~ msgid "field specification has `,' but lacks following field spec"
+#~ msgstr ""
+#~ "La spécification du champ contient `,'\n"
+#~ "mais n'est pas suivi de champs de spécification."
+
+#~ msgid "ending field number argument to the `-k' option must be positive"
+#~ msgstr ""
+#~ "Le numéro du champ de terminaison de l'option `-k' doit être positif."
+
+#~ msgid "ending field spec has `.' but lacks following character offset"
+#~ msgstr ""
+#~ "La spécification du champ de terminaison contient `.' mais n'est pas "
+#~ "suivi\n"
+#~ "de caractères de saut."
+
+#~ msgid "option `-o' requires an argument"
+#~ msgstr "L'option `-o' requiert un argument."
+
+#~ msgid "option `-t' requires an argument"
+#~ msgstr "L'option `-t' requiert un argument."
+
+#~ msgid "option `-T' requires an argument"
+#~ msgstr "L'option `-T' requiert un argument."
+
+#~ msgid "could not find loop"
+#~ msgstr "ne peut trouver une boucle"
+
+#~ msgid "%s: cannot follow end of non-regular file"
+#~ msgstr "%s: ne peut suivre jusqu'à la fin d'un fichier non régulier."
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <textutils-bugs@gnu.org>."
+#~ msgstr ""
+#~ "\n"
+#~ "Rapporter toutes anomalies à <textutils-bug@gnu.org>."
+
+#~ msgid "`-w PAGE_WIDTH' invalid column number: `%s'"
+#~ msgstr "`-w PAGE_WIDTH' contient un nombre de colonnes invalide: `%s'."
+
+#~ msgid "`%s' has reappeared"
+#~ msgstr "`%s' est réapparu"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to textutils-bugs@gnu.org"
+#~ msgstr ""
+#~ "\n"
+#~ "Rapporter toutes anomalies à textutils-bug@gnu.org."
+
+#~ msgid "%s: `%s' is so large that it is not representable"
+#~ msgstr "%s, `%s' est trop grande qu'elle n'est pas représentable."
+
+#~ msgid "`+' requires a numeric argument"
+#~ msgstr "`+' requiert un argument numérique."
+
+#~ msgid "%s: extra characters in the argument to the `-%c' option: `%s'\n"
+#~ msgstr ""
+#~ "%s: caractères superflus dans les arguments de l'option `-%c': `%s'\n"
+
+#~ msgid ""
+#~ "Paginate or columnate FILE(s) for printing.\n"
+#~ "\n"
+#~ " +PAGE begin printing with page PAGE\n"
+#~ " -COLUMN produce COLUMN-column output and print columns down\n"
+#~ " -a print columns across rather than down\n"
+#~ " -b balance columns on the last page\n"
+#~ " -c use hat notation (^G) and octal backslash notation\n"
+#~ " -d double space the output\n"
+#~ " -e[CHAR[WIDTH]] expand input CHARs (TABs) to tab WIDTH (8)\n"
+#~ " -f, -F simulate formfeed with newlines on output\n"
+#~ " -h HEADER use HEADER instead of filename in page headers\n"
+#~ " -i[CHAR[WIDTH]] replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+#~ " -l PAGE_LENGTH set the page length to PAGE_LENGTH (66) lines\n"
+#~ " -m print all files in parallel, one in each column\n"
+#~ " -n[SEP[DIGITS]] number lines, use DIGITS (5) digits, then SEP (TAB)\n"
+#~ " -o MARGIN offset each line with MARGIN spaces (do not affect -"
+#~ "w)\n"
+#~ " -r inhibit warning when a file cannot be opened\n"
+#~ " -s[SEP] separate columns by character SEP (TAB)\n"
+#~ " -t inhibit 5-line page headers and trailers\n"
+#~ " -v use octal backslash notation\n"
+#~ " -w PAGE_WIDTH set page width to PAGE_WIDTH (72) columns\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "-t implied by -l N when N < 10. Without -s, columns are separated by\n"
+#~ "spaces. With no FILE, or when FILE is -, read standard input.\n"
+#~ msgstr ""
+#~ "Paginer ou mettre en colonne des FICHIERS pour impression.\n"
+#~ "\n"
+#~ " +N débuter l'impression à la page N\n"
+#~ " -COLONNE produire un format de N colonnes et imprimer\n"
+#~ " -F, -f simuler les sauts de pages avec des sauts de "
+#~ "lignes\n"
+#~ " -a imprimer les colonnes en mode croisé plutôt que\n"
+#~ " vers le bas\n"
+#~ " -b équilibrer les colonnes sur la dernière page\n"
+#~ " -c utiliser une notation par chapeau (^G) et octale\n"
+#~ " avec barre oblique inverse\n"
+#~ " -d faire une sortie avec double espacement\n"
+#~ " -e[CAR[LARGEUR]] dilater les CARactères (ou tabulation) selon la\n"
+#~ " LARGEUR de tabulation (par défaut 8)\n"
+#~ " -h EN_TÊTE afficher l'EN_TÊTE au lieu du nom de fichier\n"
+#~ " -i[CAR[LARGEUR]] remplacer les blancs par des CARactères (ou\n"
+#~ " tabulation) selon la LARGEUR de tabulation (8)\n"
+#~ " -l LONGUEUR_DE_PAGE utiliser LONGUEUR_DE_PAGE au lieu de 66 "
+#~ "lignes (par défaut)\n"
+#~ " -m imprimer tous les fichiers en parallèle\n"
+#~ " un par colonne\n"
+#~ " -n[SÉP[CHIFFRES]] numéroter les lignes, par des CHIFFRES (5), suivi "
+#~ "de\n"
+#~ " SÉParateurs (TAB)\n"
+#~ " -o MARGE effectuer le saut de chaque ligne selon la "
+#~ "MARGE d'espace (n'affecte pas -w)\n"
+#~ " -r inhiber les avertissements lorsqu'un fichier\n"
+#~ " ne peut être ouvert\n"
+#~ " -s[SÉP] séparer les colonnes par le SÉParateur (ou TAB)\n"
+#~ " -t inhiber les 5 lignes d'en-tête et de bas de page \n"
+#~ " -v utiliser la notation octale avec barre oblique\n"
+#~ " inverse\n"
+#~ " -w LARGEUR_DE_PAGE utiliser LARGEUR_DE_PAGE au lieu de 72 colonnes\n"
+#~ " (défaut)\n"
+#~ " --help afficher l'aide-mémoire\n"
+#~ " --version afficher le nom et la version du logiciel\n"
+#~ "\n"
+#~ "L'option -t est implicite lorsque -l N est utilisé et quand N < 10.\n"
+#~ "Sans -s, les colonnes sont séparées par des blancs.\n"
+#~ "Sans FICHIER, ou quand FICHIER est -, lire de l'entrée standard.\n"
diff --git a/po/ga.gmo b/po/ga.gmo
new file mode 100644
index 0000000..04a530d
--- /dev/null
+++ b/po/ga.gmo
Binary files differ
diff --git a/po/ga.po b/po/ga.po
new file mode 100644
index 0000000..a7ed20a
--- /dev/null
+++ b/po/ga.po
@@ -0,0 +1,10446 @@
+# Irish translations for coreutils.
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This file is distributed under the same license as the coreutils package.
+# Kevin Patrick Scannell <kscanne@gmail.com>, 2004, 2006, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 6.8\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2007-02-28 12:24-0600\n"
+"Last-Translator: Kevin Scannell <kscanne@gmail.com>\n"
+"Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :"
+"(n>6 && n<11) ? 3 : 4;\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, c-format
+msgid "preserving permissions for %s"
+msgstr "ceadanna ar %s á gcaomhnú"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "ceadanna ar %s á socrú"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "argóint neamhbhailí %s chun %s"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argóint dhébhríoch %s chun %s"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Na hargóintí bailí:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "earráid sa scríobh"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Earráid chórais anaithnid"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "ní féidir %s a `stat'"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "gnáthchomhad folamh"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "gnáthchomhad"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "comhadlann"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "comhad speisialta den chineál `bloc'"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "comhad speisialta den chineál `carachtar'"
+
+# `TITA' ?! -KPS
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "fifo"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "nasc siombalach"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "soicéad"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "ciú teachtaireachta"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "séamafór"
+
+# FARF --KPS
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "comhad comhchuimhne"
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr "comhad cuimhne le cineál"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "comhad aisteach"
+
+#: lib/gai_strerror.c:44
+msgid "Address family for hostname not supported"
+msgstr "Aicme sheolta d'óstainm gan tacaíocht"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr "Teip shealadach ar réiteach na n-ainmneacha"
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr "Luach neamhbhailí do 'ai_flags'"
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr "Teip dhocheartaithe ar réiteach na n-ainmneacha"
+
+#: lib/gai_strerror.c:48
+msgid "ai_family not supported"
+msgstr "ní thacaítear le 'ai_family'"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr "Theip ar dháil chuimhne"
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr "Níl seoladh ar bith ceangailte leis an óstainm"
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr "Ainm nó seirbhís anaithnid"
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr "Ní thacaítear le hainm freastalaithe do 'ai_socktype'"
+
+#: lib/gai_strerror.c:53
+msgid "ai_socktype not supported"
+msgstr "ní thacaítear le 'ai_socktype'"
+
+#: lib/gai_strerror.c:54
+msgid "System error"
+msgstr "Earráid chórais"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr "Tá an maolán argóinte róbheag"
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr "Iarratas próiseála ar siúl"
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr "Cealaíodh an t-iarratas"
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr "Níor cealaíodh an t-iarratas"
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr "Cuireadh gach iarratas i gcrích"
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr "Idirbhriste ag comhartha"
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr "Níl an teaghrán paraiméadair ionchódaithe i gceart"
+
+#: lib/gai_strerror.c:74
+msgid "Unknown error"
+msgstr "Earráid anaithnid"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: Tá an rogha `%s' débhríoch\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha `--%s'\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha `%c%s'\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: tá argóint de dhíth i ndiaidh na rogha `%s'\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: rogha anaithnid `--%s'\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: rogha anaithnid `%c%s'\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: rogha neamhcheadaithe -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: rogha neamhbhailí -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: tá argóint de dhíth i ndiaidh na rogha -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: Tá an rogha `-W %s' débhríoch\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha `-W %s'\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "méid bloc"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "ní féidir na ceadanna de %s a athrú"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "ní féidir comhadlann %s a chruthú"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "cuimhne ídithe"
+
+#: lib/openat-die.c:34
+#, c-format
+msgid "unable to record current working directory"
+msgstr "ní féidir an chomhadlann oibre a thaifead"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "níl aon fháil ar an chéad chomhadlann oibre"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "'"
+
+#: lib/randread.c:125
+#, c-format
+msgid "%s: end of file"
+msgstr "%s: comhadchríoch"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr "D'éirigh leis"
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr "Níl a leithéid ann"
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr "Slonn ionadaíochta neamhbhailí"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr "Carachtar neamhbhailí comhordaithe"
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr "Ainm neamhbhailí ar aicme charachtar"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr "Cúlslais chun deiridh"
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr "Cúltagairt neamhbhailí"
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr "[ nó [^ corr"
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr "( nó \\( corr"
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr "\\{ corr"
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr "Ábhar neamhbhailí idir \\{ agus \\}"
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr "Tá deireadh an raoin neamhbhailí"
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr "Cuimhne ídithe"
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr "Slonn ionadaíochta neamhbhailí roimhe seo"
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr "Deireadh an tsloinn gan choinne"
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr "Slonn ionadaíochta rómhor"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ") nó \\) corr"
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr "Ní raibh slonn ionadaíochta roimhe seo"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr "tá sé contúirteach oibriú go hathchúrsach ar %s"
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr "tá sé contúirteach oibriú go hathchúrsach ar %s (is ionann agus %s é)"
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr "bain úsáid as --no-preserve-root chun na cosanta seo a shárú"
+
+# allow yes, but also 'i' as in 'is sea' or 's' for 'sea' -- KPS
+# neither of these letters is near the 'N' on standard keyboard...
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[yYiIsS]"
+
+# fortunately, 'n' for 'no' or 'ní hea' - KPS
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "ní féidir an fheidhm iconv a úsáid"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "níl an fheidhm iconv ar fáil"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "carachtar as raon"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "ní féidir U+%04X a thiontú chuig an fhoireann carachtar logánta"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "ní féidir U+%04X a thiontú chuig an fhoireann carachtar logánta: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "úsáideoir neamhbhailí"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "grúpa neamhbhailí"
+
+#: lib/userspec.c:109
+msgid "invalid spec"
+msgstr "sonraíocht neamhbhailí"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr "©"
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Is saorbhogearra é seo. Is féidir leat cóipeanna a scaipeadh de réir na\n"
+"gcoinníollacha den GNU General Public License\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"Níl baránta AR BITH ann, an oiread atá ceadaithe de réir dlí.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Le %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Le %s agus %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Le %s, %s, agus %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Le %s, %s, %s,\n"
+"agus %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Le %s, %s, %s,\n"
+"%s, agus %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Le %s, %s, %s,\n"
+"%s, %s, agus %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Le %s, %s, %s,\n"
+"%s, %s, %s, agus %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Le %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"agus %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Le %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, agus %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Le %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, agus daoine eile nach iad.\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "argóint neamhbhailí: %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "theip ar chomparáid idir teaghráin"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Cuir LC_ALL='C' ionas gur féidir an fhadhb seo a sheachaint."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "Rinneadh comparáid idir na teaghráin %s agus %s."
+
+#: lib/xmemxfrm.c:55
+#, c-format
+msgid "string transformation failed"
+msgstr "theip ar thiontú teaghráin"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr "Ba é %s an teaghrán gan trasfhoirmiú."
+
+#: lib/xstrtol.h:62
+#, c-format
+msgid "invalid %s `%s'"
+msgstr "%s neamhbhailí `%s'"
+
+#: lib/xstrtol.h:69
+#, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "carachtar neamhbhailí tar éis %s i `%s'"
+
+#: lib/xstrtol.h:74
+#, c-format
+msgid "%s `%s' too large"
+msgstr "%s `%s' rómhór"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Bain triail as `%s --help' chun tuilleadh eolais a fháil.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+"Úsáid: %s [ROGHA] [COMHAD]\n"
+"Ionchódaigh nó díchódaigh COMHAD, nó an t-ionchur caighdeánach,\n"
+"le bunuimhir 64, go dtí an t-aschur caighdeánach.\n"
+"\n"
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+" -w, --wrap=COLÚIN Timfhill línte ionchódaithe tar éis COLÚIN "
+"charachtar\n"
+" (réamhshocrú=76).\n"
+" Úsáid 0 chun timfhilleadh a dhíchumasú.\n"
+"\n"
+" -d, --decode Díchódaigh sonraí.\n"
+" -i, --ignore-garbage Déan neamhshuim ar charachtair neamhaibítreacha le\n"
+" linn díchódaithe.\n"
+"\n"
+
+#: src/base64.c:77
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+" --help Taispeáin an chabhair seo agus scoir.\n"
+" --version Taispeáin eolas faoin leagan agus scoir.\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Mura bhfuil COMHAD ann, nó más '-' é, léigh ón ionchur caighdeánach.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+"\n"
+"Ionchódaítear na sonraí mar a thuairiscítear d'aibítir base64 i RFC 3548.\n"
+"Le linn díchódaithe, is féidir línte nua a bheith san ionchur in éineacht "
+"leis\n"
+"na bearta den aibítir fhoirmiúil base64. Úsáid --ignore-garbage chun\n"
+"iarracht a dhéanamh teacht slán ó charachtair neamhaibítreacha eile sa\n"
+"sruth ionchódaithe.\n"
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Seol tuairiscí fabhtanna chuig <%s>.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "earráid sa léamh"
+
+#: src/base64.c:234
+#, c-format
+msgid "invalid input"
+msgstr "ionchur neamhbhailí"
+
+#: src/base64.c:271
+#, c-format
+msgid "invalid wrap size: %s"
+msgstr "méid neamhbhailí timfhillte: %s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr "oibreann breise %s"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "ionchur caighdeánach á dhúnadh"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Úsáid: %s AINM [IARMHÍR]\n"
+" nó: %s ROGHA\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Taispeáin an tAINM agus bain amach ainmneacha comhadlainne ar tosach.\n"
+"Má tá IARMHÍR ann, bain é amach fosta.\n"
+"\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+"\n"
+"Mar shampla:\n"
+" %s /usr/bin/sort Aschur: \"sort\".\n"
+" %s include/stdio.h .h Aschur: \"stdio\".\n"
+
+# plural above under cp.c -KPS
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, c-format
+msgid "missing operand"
+msgstr "oibreann ar iarraidh"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Úsáid: %s [ROGHA] [COMHAD]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"Comhcheangail COMHA(I)D, nó ionchur caighdeánach, le haschur caighdeánach.\n"
+"\n"
+" -A, --show-all ar comhbhrí le -vET\n"
+" -b, --number-nonblack uimhrigh línte aschurtha nach folamh\n"
+" -e ar comhbhrí le -vE\n"
+" -E, --show-ends taispeáin an $ foirceanta do gach líne\n"
+" -n, --number uimhrigh gach líne aschuir\n"
+" -s, --squeeze-blank laghdaigh línte folmha iomadúla go ceann amháin\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t ar comhbhrí le -vT\n"
+" -T, --show-tabs taispeáin táib mar ^I\n"
+" -u (gan feidhm)\n"
+" -v, --show-nonprinting taispeáin rialúcháin le ^, M-; ní LFD agus TAB\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+"\n"
+"Mar shampla:\n"
+" %s f - g Taispeáin f, ansin ionchur caighdeánach, agus g ina dhiaidh "
+"sin.\n"
+" %s Cóipeáil ionchur caighdeánach go haschur caighdeánach.\n"
+
+#: src/cat.c:333
+#, c-format
+msgid "cannot do ioctl on %s"
+msgstr "ní féidir ioctl a dhéanamh ar %s"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "aschur caighdeánach"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: is ionann iad an t-inchomhad agus an t-aschomhad"
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "grúpa neamhbhailí %s"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Úsáid: %s [ROGHA]... GRÚPA COMHAD...\n"
+" nó: %s [ROGHA]... --reference=TCOMHAD COMHAD...\n"
+
+#: src/chgrp.c:117
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Athraigh an grúpa de gach COMHAD go GRÚPA.\n"
+"Le --reference, athraigh an grúpa de gach COMHAD go dtí an grúpa de "
+"TCOMHAD.\n"
+"\n"
+" -c, --changes cosúil le `verbose' ach ná tabhair tuairisc ach\n"
+" nuair a athraítear rud éigin\n"
+" --dereference téigh i bhfeidhm ar an tagraí de gach nasc\n"
+" siombalach (réamhshocrú) in ionad an naisc\n"
+" shiombalaigh féin\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference téigh i bhfeidhm ar an nasc siombalach in ionad\n"
+" comhad tagartha ar bith (le fáil más féidir le do\n"
+" chóras an t-úinéir de nasc siombalach a athrú)\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root ná caith le `/' go speisialta (réamhshocrú)\n"
+" --preserve-root ná hoibrigh ar `/' go hathchúrsach\n"
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet múch formhór na n-earráidí\n"
+" --reference=TCOMHAD bain úsáid as an ghrúpa atá ag TCOMHAD\n"
+" agus ná sonraigh luach GRÚPA\n"
+" -R, --recursive oibrigh ar chomhaid/chomhadlanna go hathchúrsach\n"
+" -v, --verbose taispeáin diagnóisic do gach comhad próiseáilte\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+"Athraíonn na roghanna seo a leanas an chaoi a siúltar trí chomhadlanna "
+"nuair\n"
+"a roghnaítear -R. Má tá níos mó ná rogha amháin sonraithe, ní úsáidfear "
+"ach\n"
+"an ceann deireanach.\n"
+"\n"
+" -H má tá nasc siombalach go comhadlann tugtha mar\n"
+" argóint ar an líne ordaithe, lean é\n"
+" -L lean gach uile nasc siombalach le comhadlann\n"
+" -P ná lean aon nasc siombalach (réamhshocrú)\n"
+"\n"
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+"\n"
+"Mar shampla:\n"
+" %s foireann /u Athraigh grúpa de /u go \"foireann\".\n"
+" %s -hR foireann /u Athraigh grúpa de /u agus a fhochomhaid go \"foireann"
+"\".\n"
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr "tá gá le ceann de -H nó -L leis na roghanna -R --dereference"
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, c-format
+msgid "missing operand after %s"
+msgstr "oibreann ar iarraidh i ndiaidh %s"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "níorbh fhéidir na saintréithe de %s a rochtain"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "saintréithe nua de %s á bhfáil"
+
+# tagraí is my coinage, analogue of tagróir=referer --KPS
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "níor athraíodh nasc siombalach %s ná a thagraí\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "rinneadh athrú ar mhód %s go %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "níorbh fhéidir an mód de %s a athrú go %04lo (%s)\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "coimeádadh an mód de %s mar %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "ní féidir %s a rochtain"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "ní féidir comhadlann %s a léamh"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "ceadanna %s á n-athrú"
+
+#: src/chmod.c:286
+#, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "%s: is %s na ceadanna nua, ní %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr "theip ar fts_read"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Úsáid: %s [ROGHA]... MÓD[,MÓD]... COMHAD...\n"
+" nó: %s [ROGHA]... MÓD-OCHTACH COMHAD...\n"
+" nó: %s [ROGHA]... --reference=TCOMHAD COMHAD...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+"Athraigh an mód de gach COMHAD go dtí MÓD.\n"
+"\n"
+" -c, --changes cosúil le `verbose' ach ná tabhair tuairisc ach ar "
+"athruithe\n"
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root ná tabhair cóir speisialta do `/' (réamhshocrú)\n"
+" --preserve-root ná caith le `/' go hathchúrsach\n"
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+" -f, --silent, --quiet múch formhór na n-earráidí\n"
+" -v, --verbose taispeáin diagnóisic do gach comhad\n"
+" --reference=COMHAD bain úsáid as an ghrúpa atá ag COMHAD\n"
+" -R, --recursive athraigh comhaid agus comhadlanna go hathchúrsach\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+"\n"
+"Tá gach MÓD den fhoirm `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr "ní féidir rogha mhóid a chumasc leis an rogha --reference"
+
+#: src/chmod.c:510
+#, c-format
+msgid "invalid mode: %s"
+msgstr "mód neamhbhailí: %s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "tá athrach úinéireachta ar %s go dtí %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "tá athrach grúpa ar %s go dtí %s\n"
+
+#: src/chown-core.c:149
+#, c-format
+msgid "no change to ownership of %s\n"
+msgstr "níor athraíodh an t-úinéir de %s\n"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "theip ar athrú úinéireachta de %s go %s\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "theip ar athrú grúpa de %s go %s\n"
+
+#: src/chown-core.c:154
+#, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "theip ar athrú úinéireachta de %s\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "tá an t-úinéir de %s fós %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "Tá an grúpa de %s fós %s\n"
+
+#: src/chown-core.c:159
+#, c-format
+msgid "ownership of %s retained\n"
+msgstr "tá an t-úinéir de %s gan athrú\n"
+
+#: src/chown-core.c:344
+#, c-format
+msgid "cannot dereference %s"
+msgstr "ní féidir %s a dhí-thagairt"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "úinéireacht ar %s á hathrú"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "grúpa de %s á athrú"
+
+#: src/chown.c:93
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Úsáid: %s [ROGHA]... [ÚINÉIR][:[GRÚPA]] COMHAD...\n"
+" nó: %s [ROGHA]... --reference=TCOMHAD COMHAD...\n"
+
+#: src/chown.c:98
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Athraigh an t-úinéir agus/nó an grúpa de gach COMHAD go ÚINÉIR agus/nó "
+"GRÚPA.\n"
+"Le --reference, athraigh an t-úinéir agus an grúpa de gach COMHAD go dtí an\n"
+"t-úinéir agus an grúpa de TCOMHAD.\n"
+"\n"
+" -c, --changes cosúil le `verbose' ach ná tabhair tuairisc ach "
+"nuair\n"
+" a athraítear rud éigin\n"
+" --dereference téigh i bhfeidhm ar an tagraí de gach nasc\n"
+" siombalach (réamhshocrú) in ionad an naisc\n"
+" shiombalaigh féin\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=ÚINÉIR_FAOI_LÁTHAIR:GRÚPA_FAOI_LÁTHAIR\n"
+" athraigh an t-úinéir agus/nó an grúpa de gach "
+"comhad\n"
+" ach amháin más mar a chéile a úinéir agus/nó grúpa\n"
+" agus na cinn atá ceaptha anseo. Is féidir "
+"ceachtar\n"
+" acu a fhágáil ar lár, agus sa chás sin, ní gá\n"
+" don tréith ar iarraidh a aontú\n"
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet múch formhór na n-earráidí\n"
+" --reference=TCOMHAD bain úsáid as an úinéir/ngrúpa atá ag TCOMHAD\n"
+" agus ná sonraigh luach ÚINÉIR:GRÚPA\n"
+" -R, --recursive oibrigh ar chomhaid/chomhadlanna go hathchúrsach\n"
+" -v, --verbose taispeáin diagnóisic do gach comhad próiseáilte\n"
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"Coinnigh úinéir gan athrú má tá sé ar iarraidh. An grúpa ar an nós céanna,\n"
+"ach athraigh é go dtí an grúpa logála isteach má tá grúpa intuigthe le `:' "
+"ann\n"
+"in éineacht le húinéir siombalach.\n"
+"Is féidir ÚINÉIR nó GRÚPA a bheith uimhriúil chomh maith le siombalach.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+"\n"
+"Mar shampla:\n"
+" %s root /u Athraigh an t-úinéir de /u go \"root\".\n"
+" %s root:foireann /u Mar an gcéanna, ach athraigh a ghrúpa go \"foireann\" "
+"freisin.\n"
+" %s -hR root /u Athraigh an t-úinéir de /u agus a fochomhaid go \"root"
+"\".\n"
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Úsáid: %s FRÉAMHNUA [ORDÚ...]\n"
+" nó: %s ROGHA\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"Rith ORDÚ leis an fhréamhchomhadlann mar FRÉAMHNUA.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"Mura bhfuil ORDÚ ann, rith ``${SHELL} -i'' (réamhshocrú: /bin/sh).\n"
+
+# in FARF --KPS
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "ní féidir an fhréamhchomhadlann a athrú go %s"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "ní féidir chdir a dhéanamh go dtí an fhréamhchomhadlann"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "ní féidir ordú %s a rith"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: comhad rófhada"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Úsáid: %s [COMHAD]...\n"
+" nó: %s [ROGHA]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"Taispeáin suim sheiceála CRC agus líon bearta di gach COMHAD.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Úsáid: %s [ROGHA]... COMHAD1 COMHAD2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr ""
+"Déan comparáid idir na comhaid shórtáilte COMHAD1 agus COMHAD2, líne ar "
+"líne.\n"
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+"\n"
+"Mura bhfuil aon rogha ann, taispeáin an t-aschur i trí cholún. Sa chéad\n"
+"cholún, línte atá i gCOMHAD1 ach nach COMHAD2; sa dara cholún, línte atá\n"
+"i gCOMHAD2 ach nach COMHAD2, agus comhlínte sa tríú colún.\n"
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"\n"
+" -1 ceil línte atá i gCOMHAD1 ach nach i gCOMHAD2\n"
+" -2 ceil línte atá i gCOMHAD2 ach nach i gCOMHAD1\n"
+" -3 ceil línte atá sna comhaid araon\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "níorbh fhéidir an úinéireacht de %s a chaomhnú"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr "theip ar luchtú an chomhaid %s"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "níorbh fhéidir an t-údar de %s a chaomhnú"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "ní féidir %s a oscailt chun léamh"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "ní féidir %s a `fstat'"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "ag gabháil thar an chomhad %s; bhí sé curtha as áit agus á chóipeáil"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "ní féidir %s a scriosadh"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "%s scriosta\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "ní féidir gnáthchomhad %s a chruthú"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "%s á léamh"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "ní féidir %s a `lseek'"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "%s á scríobh"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "amanna á gcaomhnú le haghaidh %s"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "%s á dhúnadh"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: forscríobh %s agus sáraigh mód %04lo? "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: forscríobh %s? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (cúltaca: %s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "comhadlann %s á fágáil ar lár"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "rabhadh: comhad foinse %s tugtha níos mó ná uair amháin"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "is iad %s agus %s an comhad céanna"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr ""
+"ní féidir forscríobh a dhéanamh ar %s (ní comhadlann é) le %s (comhadlann)"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "diúltaíodh forscríobh ar an chomhad nua %s le %s"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "ní féidir forscríobh a dhéanamh ar %s (comhadlann) le gnáthchomhad"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "ní féidir comhadlann a aistriú go dtí gnáthchomhad: %s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "léirscriosfadh cúltaca de %s an comhad foinse; níor aistríodh %s"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "léirscriosfadh cúltaca de %s an comhad foinse; níor cóipeáladh %s"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "ní féidir cúltaca a dhéanamh ar %s"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr ""
+"ní féidir an chomhadlann %s a chóipeáil isteach sa chomhadlann féin, %s"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "ní chruthófar nasc crua %s go dtí comhadlann %s"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "ní féidir nasc crua %s a chruthú go dtí %s"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr ""
+"ní féidir an chomhadlann %s a aistriú go dtí fochomhadlann dá chuid féin, %s"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "ní féidir %s a aistriú go %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+"aistriú idir gléasanna teipthe: %s go %s; ní féidir an sprioc a scriosadh"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "ní féidir nasc siombalach ciorclach %s a chóipeáil"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr ""
+"%s: ní foláir naisc shiombalacha coibhneasta a dhéanamh sa chomhadlann oibre"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "ní féidir nasc siombalach a dhéanamh ó %s go %s"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "ní féidir an nasc %s a chruthú"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "ní féidir an `fifo' %s a chruthú"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "ní féidir comhad speisialta %s a chruthú"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "ní féidir nasc siombalach %s a léamh"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "ní féidir an nasc siombalach %s a chruthú"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "tá %s de chineál anaithnid"
+
+# bad coinage --KPS
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "ní féidir dí-chúltaca a dhéanamh ar %s"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (dí-chúltaca)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Úsáid: %s [ROGHA]... [-T] FOINSE SPRIOC\n"
+" nó: %s [ROGHA]... FOINSE... COMHADLANN\n"
+" nó: %s [ROGHA]... -t COMHADLANN FOINSE...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Cóipeáil FOINSE go SPRIOC, nó FOINSE/Í go COMHADLANN.\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Is riachtanach le rogha ghearr aon argóint atá riachtanach leis an rogha "
+"fhada.\n"
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive is ionann é seo agus `-dpPR'\n"
+" --backup[=RIALÚ] déan cúltaca de gach sprioc-chomhad atá ann\n"
+" -b cosúil le `--backup' ach gan argóint\n"
+" --copy-contents cóipeáil inneachar de chomhaid speisialta\n"
+" más athchúrsach é\n"
+" -d == `--no-dereference --preserve=link'\n"
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" -f, --force mura féidir sprioc-chomhad a oscailt, scrios\n"
+" é agus bain triail as arís\n"
+" -i, --interactive fiafraigh roimh fhorscríobh\n"
+" -H lean naisc shiombalacha ar líne na n-"
+"orduithe\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+" -l, --link nasc comhaid in ionad iad a chóipeáil\n"
+" -L, --dereference lean naisc shiombalacha i gcónaí\n"
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr " -P, --no-dereference ná lean naisc shiombalacha riamh\n"
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -p = `--preserve=mode,ownership,timestamps'\n"
+" --preserve[=TRÉITHE] caomhnaigh na tréithe ceaptha (réamhshocrú:\n"
+" mode,ownership,timestamps), más féidir\n"
+" tréithe eile: links, all\n"
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=TRÉITHE ná caomhnaigh na tréithe ceaptha\n"
+" --parents úsáid ainm lán an chomhaid faoi CHOMHADLANN\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive cóipeáil comhadlanna go hathchúrsach\n"
+" --remove-destination scrios gach sprioc-chomhad atá ann roimh\n"
+" oscailt (i gcodarsnacht le `--force')\n"
+
+#: src/cp.c:205
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --sparse=CATHAIN rialaigh cruthú na gcomhad tanaí\n"
+" --strip-trailing-slashes scrios slaiseanna chun deiridh ó gach "
+"argóint\n"
+" FOINSE\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link nasc comhaid in ionad iad a chóipeáil\n"
+" -S, --suffix=IARMHÍR sáraigh an iarmhír chúltaca réamhshocraithe\n"
+" -t, --target-directory=COMHADLANN cóipeáil gach FOINSE go dtí COMHADLANN\n"
+" -T, --no-target-directory caith le SPRIOC mar ghnáthchomhad\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update ná cóipeáil ach amháin nuair atá FOINSE\n"
+" níos úire ná an sprioc-chomhad, nó nuair "
+"atá\n"
+" an sprioc-chomhad ar iarraidh\n"
+" -v, --verbose mínigh na rudaí atá ag tarlú\n"
+" -x, --one-file-system fan ar an chóras chomhaid seo\n"
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"Mar réamhshocrú, aimsítear comhaid FOINSE tanaí trí mhodh iúraisticiúil\n"
+"garbh agus beidh an comhad SPRIOC tanaí chomh maith. Is í seo an mód atá\n"
+"roghnaithe ag `--sparse=auto'. Roghnaigh `--sparse=always' chun comhad "
+"SPRIOC\n"
+"tanaí a chruthú i gcónaí nuair atá sraith nialasach fhada go leor i "
+"bhFOINSE.\n"
+"Bain úsáid as `--sparse=never' chun an cruthú de chomhaid thanaí a chosc.\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Is é `~' an iarmhír chúltaca, mura dtugtar é le --suffix nó "
+"SIMPLE_BACKUP_SUFFIX.\n"
+"Is féidir an modh de rialú foinsí a roghnú le `--backup', nó leis an athróg\n"
+"thimpeallachta VERSION_CONTROL. Seo duit na luachanna bailí:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off ná déan cúltacaí choíche (fiú má tá --backup ceaptha)\n"
+" numbered, t déan cúltacaí agus uimhreacha orthu\n"
+" existing, nil numbered má tá uimhreacha orthu anois, simple mura bhfuil\n"
+" simple, never déan cúltacaí simplí i gcónaí\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Mar chás speisialta, déanann `cp' cúltaca de FOINSE nuair a thugtar na\n"
+"roghanna --force agus --backup, agus is ionann iad na hainmneacha FOINSE "
+"agus\n"
+"SPRIOC ar ghnáthchomhad atá ann.\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "níorbh fhéidir amanna a chaomhnú ar %s"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "níorbh fhéidir ceadanna a chaomhnú ar %s"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "ní féidir an chomhadlann %s a chruthú"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "Tá %s ann cheana, ach ní comhadlann é"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "%s á rochtain"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, c-format
+msgid "missing file operand"
+msgstr "oibreann comhaid ar iarraidh"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, c-format
+msgid "missing destination file operand after %s"
+msgstr "oibreann sprioc-chomhaid ar iarraidh i ndiaidh %s"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+"Ní féidir --target-directory (-t) agus --no-target-directory (-T) a úsáid "
+"lena chéile"
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, c-format
+msgid "target %s is not a directory"
+msgstr "ní comhadlann é an sprioc-chomhad %s"
+
+#: src/cp.c:697
+#, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "le --parents, caithfidh an sprioc-chomhad a bheith ina chomhadlann"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr "tá an rogha --reply dulta i léig; bain úsáid as -i nó -f ina háit"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, c-format
+msgid "multiple target directories specified"
+msgstr "sonraíodh sprioc-chomhadlanna iomadúla"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "ní féidir nasc crua agus nasc siombalach araon a dhéanamh"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "cineál cúltaca"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "ionchur imithe"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: líne-uimhir as raon"
+
+#: src/csplit.c:709
+#, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: %s: líne-uimhir as raon"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr " le linn timthriall %s\n"
+
+#: src/csplit.c:755
+#, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: %s: níl a leithéid ann"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "earráid le linn cuardaigh ar shlonn ionadaíochta"
+
+#: src/csplit.c:984
+#, c-format
+msgid "write error for %s"
+msgstr "earráid sa scríobh le haghaidh %s"
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: bhíothas ag súil le slánuimhir i ndiaidh teormharcóra"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: tá gá le `}' i líon na hathráite"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: tá gá le slánuimhir idir `{' agus `}'"
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: teormharcóir foirceanta `%c' ar iarraidh"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: slonn ionadaíochta neamhbhailí: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: patrún neamhbhailí"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: ní foláir líne-uimhir dheimhneach"
+
+#: src/csplit.c:1172
+#, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "líne-uimhir %s níos lú ná an líne-uimhir roimpi, %s"
+
+#: src/csplit.c:1178
+#, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "rabhadh: is ionann líne-uimhir %s agus an líne-uimhir roimpi"
+
+# similar string for time format in ls.c -KPS
+#: src/csplit.c:1231
+#, c-format
+msgid "invalid format width"
+msgstr "leithead neamhbhailí na formáide"
+
+#: src/csplit.c:1252
+#, c-format
+msgid "invalid format precision"
+msgstr "beachtas neamhbhailí na formáide"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "tá sonraitheoir tiontaithe ar iarraidh in iarmhír"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "sonraitheoir tiontaithe neamhbhailí in iarmhír: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "sonraitheoir tiontaithe neamhbhailí in iarmhír: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "an iomarca sonraitheoirí tiontaithe %% in iarmhír"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "sonraitheoir tiontaithe %% ar iarraidh in iarmhír"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: uimhir neamhbhailí"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Úsáid: %s [ROGHA]... COMHAD PATRÚN...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"Scríobh píosaí de CHOMHAD, scartha le PATRÚ(I)N, i gcomhaid `xx00',"
+"`xx01',...\n"
+"agus taispeáin líon na mbeart i ngach píosa ar an aschur caighdeánach.\n"
+"\n"
+
+#: src/csplit.c:1486
+#, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=FORMÁID bain úsáid as FORMÁID sprintf in ionad %02d\n"
+" -f, --prefix=RÉIMÍR bain úsáid as RÉIMÍR in ionad `xx'\n"
+" -k, --keep-files ná scrios aschomhaid tar éis earráidí\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=DIGITÍ bain úsáid as DIGITÍ digit, in ionad 2\n"
+" -s, --quiet, --silent ná taispeáin líonta na mbeart in aschomhaid\n"
+" -z, --elide-empty-files scrios aschomhaid fholmha\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"Má tá an COMHAD `-', léigh ón ionchur caighdeánach. Is féidir PATRÚN a "
+"bheith:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" SLÁNUIMHIR cóipeáil go dtí an líne-uimhir cheaptha (ach amháin é "
+"féin)\n"
+" /SLONN/[FRITHÁIREAMH] cóipeáil go dtí líne chomhoiriúnach (ach amháin é "
+"féin)\n"
+" %SLONN%[FRITHÁIREAMH] bog go dtí líne chomhoiriúnach\n"
+" {SLÁNUIMHIR} aithris an patrún is déanaí SLÁNUIMHIR uaire\n"
+" {*} aithris an patrún is déanaí is mó is féidir\n"
+"\n"
+"FRITHÁIREAMH = `+' nó `-' (riachtanach) agus ansin slánuimhir dheimhneach.\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Úsáid: %s [ROGHA]... [COMHAD]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"Taispeáin codanna tofa de na línte as gach COMHAD ar aschur caighdeánach.\n"
+"\n"
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=LIOSTA ná taispeáin ach na bearta seo\n"
+" -c, --characters=LIOSTA ná taispeáin ach na carachtair seo\n"
+" -d, --delimiter=TEORAN úsáid TEORAN in ionad TAB mar theormharcóir "
+"réimse\n"
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=LIOSTA ná taispeáin ach na réimsí seo; sa bhreis, "
+"taispeáin\n"
+" gach líne gan aon teormharcóir, mura bhfuil an\n"
+" rogha -s tugtha\n"
+" -n (gan feidhm)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+" --complement inbhéartaigh na bearta, carachtair, nó réimsí\n"
+" roghnaithe.\n"
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited ná taispeáin ach na línte le teormharcóirí\n"
+" --output-delimiter=TEAGHRÁN úsáid TEAGHRÁN mar theormharcóir aschuir\n"
+" agus an teormharcóir ionchurtha mar réamhshocrú\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+"\n"
+"Úsáid ceann, agus gan ach ceann de -b, -c, nó -f. Is raon é gach LIOSTA,\n"
+"nó roinnt raonta scartha le camóga. Scríobhann an t-ionchur roghnaithe\n"
+"san ord á léadh, agus ní scríobhtar é ach uair amháin.\n"
+
+#: src/cut.c:227
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"Is éard atá i ngach raon ná ceann de:\n"
+"\n"
+" N N-ú beart, carachtar, nó réimse, uimhrithe ó 1\n"
+" N- ón N-ú beart, carachtar, nó réimse go dtí deireadh na líne\n"
+" N-M ón N-ú go dtí M-ú beart, carachtar, nó réimse (araon san áireamh)\n"
+" -M ón aonú go dtí M-ú beart, carachtar, nó réimse (araon san áireamh)\n"
+"\n"
+"Mura bhfuil COMHAD ann, nó más '-' é, léigh ón ionchur caighdeánach.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "liosta bearta nó réimsí neamhbhailí"
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr "tá an fritháireamh birt %s rómhór"
+
+#: src/cut.c:472
+#, c-format
+msgid "field number %s is too large"
+msgstr "tá an uimhir réimse %s rómhór"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "ní cheadaítear liostaí iomadúla"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "is gá an teormharcóir a bheith ina charachtar aonarach"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "ní foláir duit liosta bearta, carachtair, nó réimsí a cheapadh"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr ""
+"ní cheadaítear teormharcóir a thabhairt ach nuair atáthar ag oibriú le réimsí"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"ní cheiltear línte gan teormharcóirí ach nuair\n"
+"\tatáthar ag oibriú le réimsí"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "liosta réimsí ar iarraidh"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "liosta ionad ar iarraidh"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Úsáid: %s [ROGHA]... [+FORMÁID]\n"
+" nó: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"Taispeáin an t-am anois i gcruth FORMÁID, nó socraigh dáta an chórais.\n"
+"\n"
+" -d, --date=TEAGHRÁN taispeáin am tugtha i dTEAGHRÁN, ní `now'\n"
+" -f, --file=COMHADDÁTA mar --date uair amháin sa líne de CHOMHADDÁTA\n"
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+" -r, --reference=COMHAD taispeáin am an athraithe is déanaí do COMHAD\n"
+" -R, --rfc-2822 taispeáin dáta agus am de réir RFC 2822\n"
+" Mar shampla: Mon, 07 Aug 2006 12:34:56 -0600\n"
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+" --rfc-3339=AMCHÓD taispeáin dáta/am de réir RFC 3339.\n"
+" AMCHÓD=`date', `seconds', nó `ns' do dháta\n"
+" agus am leis an mbeachtas sonraithe.\n"
+" Scartar comhpháirteanna dáta/ama le spás "
+"aonair:\n"
+" 2006-08-07 12:34:56-06:00\n"
+" -s, --set=TEAGHRÁN socraigh an t-am de réir an TEAGHRÁIN\n"
+" -u, --utc, --universal taispeáin nó socraigh UTC\n"
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"\n"
+"Rialaíonn FORMÁID an t-aschur. Sa dara foirm, níl aon rogha bhailí\n"
+"ach an ceann a shocraíonn UTC. Teaghráin léirmhínithe:\n"
+"\n"
+" %% '%' litriúil\n"
+" %a lá den tseachtain de réir an logchaighdeáin, giorraithe\n"
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A lá den tseachtain ina iomlán (m.sh., \"Dé Domhnaigh\")\n"
+" %b an mhí ghiorraithe (m.sh. \"Ean\")\n"
+" %B an mhí ina hiomláine (m.sh. \"Eanáir\")\n"
+" %c an dáta agus an t-am (m.sh., Aoine 30 MFómh 2005 14:23:52 UTC)\n"
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C an aois; cosúil le %Y ach gan an dá dhigit deiridh (m.sh., 21)\n"
+" %d lá den mhí (m.sh., 01)\n"
+" %D dáta; ar comhbhrí le %m/%d/%y\n"
+" %e lá den mhí, stuáilte le spásanna; ar comhbhrí le %_d\n"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+" %F an dáta iomlán; ar comhbhrí le %Y-%m-%d\n"
+" %g bliain uimhir na seachtaine ISO: an dá dhigit deiridh (féach ar %G)\n"
+" %G bliain uimhir na seachtaine ISO (féach ar %V); de ghnáth úsáidtear é "
+"seo le %V amháin\n"
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h ar comhbhrí le %b\n"
+" %H uair (00..23)\n"
+" %I uair (01..12)\n"
+" %j lá den bhliain (001..366)\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k uair ( 0..23)\n"
+" %l uair ( 1..12)\n"
+" %m mí (01..12)\n"
+" %M nóiméad (00..59)\n"
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+" %n líne nua\n"
+" %N nanashoicindí (000000000..999999999)\n"
+" %p AM nó PM de réir an logchaighdeáin; (folamh más anaithnid é)\n"
+" %P cosúil le %p, ach le litreacha beaga\n"
+" %r an t-am, dhá uair déag (m.sh., 11:11:04 PM)\n"
+" %R an t-am, ceithre huaire fichead; ar comhbhrí le %H:%M\n"
+" %s soicindí ó `00:00:00 1970-01-01 UTC'\n"
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+" %S soicind (00..60)\n"
+" %t táb cothrománach\n"
+" %T an t-am; ar comhbhrí le %H:%M:%S\n"
+" %u lá den tseachtain (1..7); 1 = Dé Luain\n"
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U uimhir na seachtaine sa bhliain, le Domhnach mar an chéad lá "
+"(00..53)\n"
+" %V uimhir na seachtaine ISO, le Luan mar an chéad lá (01..53)\n"
+" %w lá na seachtaine (0..6); 0=Dé Domhnaigh\n"
+" %W uimhir na seachtaine sa bhliain, le Luan mar an chéad lá (00.53)\n"
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x léiriú den dáta de réir an logchaighdeáin (m.sh., 30.09.05)\n"
+" %X léiriú den am de réir an logchaighdeáin (m.sh., 14:34:58)\n"
+" %y dhá dhigit deiridh den bhliain (00..99)\n"
+" %Y an bhliain\n"
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+" %z +uunn crios ama uimhriúil (m.sh., -0400)\n"
+" %:z +uu:nn crios ama uimhriúil (m.sh., -04:00)\n"
+" %::z +uu:nn:ss crios ama uimhriúil (m.sh., -04:00:00)\n"
+" %:::z crios ama uimhriúil le : go dtí an beachtas riachtanach\n"
+" (m.sh., -04, +05:30)\n"
+" %Z giorrúchán aibítreach ar an chrios ama (m.sh., EDT)\n"
+"\n"
+"De réir réamhshocraithe, stuálann `date' réimsí uimhriúla le nialais.\n"
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+"Is féidir na bratacha roghnacha seo a leanas a chur i ndiaidh `%':\n"
+"\n"
+" - (fleiscín) ná stuáil an réimse\n"
+" _ (fostríoc) stuáil le spásanna\n"
+" 0 (nialas) stuáil le nialais\n"
+" ^ úsáid an cás uachtair más féidir\n"
+" # úsáid an cás codarsnach más féidir\n"
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+"\n"
+"Tá leithead roghnach an réimse i ndiaidh na mbratach, mar uimhir "
+"dheachúlach;\n"
+"ansin mionathraitheoir roghnach atá ceann de:\n"
+"E, chun léirithe malartacha an logchaighdeán a úsáid, más féidir, nó\n"
+"O, chun siombalacha malartacha uimhriúla an logchaighdeán a úsáid, más "
+"féidir.\n"
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "ionchur caighdeánach"
+
+#: src/date.c:297 src/date.c:517
+#, c-format
+msgid "invalid date %s"
+msgstr "dáta neamhbhailí %s"
+
+#: src/date.c:408 src/date.c:442
+#, c-format
+msgid "multiple output formats specified"
+msgstr "sonraíodh formáidí iomadúla aschurtha"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "is comheisiatach iad na roghanna chun dátaí a cheapadh le priontáil"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr ""
+"ní cheadaítear na roghanna chun an t-am a thaispeáint agus shocrú le chéile"
+
+#: src/date.c:448
+#, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"tá `+' de dhíth ag tosach na hargóinte %s;\n"
+"Má tá tú ag baint úsáid as rogha chun dáta(í) a shocrú,\n"
+"ní foláir do gach rogha eile a bheith ina teaghrán formáide le `+' ar tosach."
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "ní féidir an dáta a shocrú"
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "is as raon an t-am %s"
+
+#: src/dd.c:404
+#, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Úsáid: %s [OIBREANN]...\n"
+" nó: %s ROGHA\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"Cóipeáil comhad, ag tiontú agus ag formáidiú dar leis na hoibrinn.\n"
+"\n"
+" bs=BEARTA fórsáil ibs=BEARTA agus obs=BEARTA\n"
+" cbs=BEARTA tiontaigh BEARTA beart sa turas\n"
+" conv=EOCHAIR tiontaigh de réir an liosta siombailí (scartha le camóga)\n"
+" count=BLOIC cóipeáil BLOIC bloc ionchurtha amháin\n"
+" ibs=BEARTA léigh BEARTA beart sa turas\n"
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=COMHAD léigh ó CHOMHAD in ionad ionchur caighdeánach\n"
+" iflag=BRATACH léigh de réir an liosta siombailí, scartha le camóga\n"
+" obs=BEARTA scríobh BEARTA beart sa turas\n"
+" of=COMHAD scríobh chuig COMHAD in ionad aschur caighdeánach\n"
+" oflag=BRATACH scríobh de réir an liosta siombailí, scartha le camóga\n"
+" seek=BLOIC gabh thar BLOIC bloc (den mhéid obs) ar tosach an aschuir\n"
+" skip=BLOIC gabh thar BLOIC bloc (den mhéid ibs) ar tosach an "
+"ionchuir\n"
+" status=noxfer ná taispeáin staitistic faoin aistriú\n"
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"Is féidir na hiarmhíreanna a leanas a chur i ndiaidh BLOIC nó BEARTA:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, srl. le T, P, E, Z, Y.\n"
+"\n"
+"Is féidir EOCHAIRFHOCAL a bheith:\n"
+"\n"
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii ó EBCDIC go ASCII\n"
+" ebcdic ó ASCII go EBCDIC\n"
+" ibm ó ASCII go EBCDIC malartach\n"
+" block stuáil le spásanna go cbs-size gach taifead atá scortha le líne "
+"nua\n"
+" unblock cuir línte nua in ionad spásanna ag deireadh de thaifid de cbs-"
+"size\n"
+" lcase athraigh na ceannlitreacha go dtí litreacha beaga\n"
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+" nocreat ná cruthaigh an t-aschomhad\n"
+" excl teip má tá an t-aschomhad ann cheana\n"
+" notrunc ná déan teascadh ar an aschomhad\n"
+" ucase athraigh litreacha beaga go ceannlitreacha\n"
+" swab babhtáil gach cúpla beart san ionchur\n"
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+" noerror lean ar aghaidh tar éis earráidí sa léamh\n"
+" sync stuáil gach bloc ionchurtha le carachtair NUL go dtí ibs-size;\n"
+" nuair atá `block' nó `unblock' in úsáid, stuáil le spásanna\n"
+" in ionad carachtair NUL\n"
+" fdatasync scríobh ar an aschomhad go fisiceach roimh chríochnú\n"
+" fsync mar an gcéanna, ach scríobh meiteashonraí freisin\n"
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+"\n"
+"Is féidir le gach BRATACH a bheith:\n"
+"\n"
+" append mód iarcheangail (ná húsáid ach le haschur; moltar "
+"conv=notrunc)\n"
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr " direct úsáid I/A díreach le haghaidh sonraí\n"
+
+#: src/dd.c:468
+msgid " directory fail unless a directory\n"
+msgstr " directory teip mura comhadlann é\n"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr " dsync úsáid I/A sioncrónaithe le haghaidh sonraí\n"
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr " sync mar an gcéanna, ach le haghaidh meiteashonraí fosta\n"
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr " nonblock úsáid I/A gan bhacainní\n"
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr " noatime ná nuashonraigh an t-am rochtana\n"
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr " noctty ná ceap an teirminéal rialaithe ó chomhad\n"
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr " nofollow ná lean naisc shiombalacha\n"
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr " nolinks teip má tá naisc iomadúla ann\n"
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr " binary úsáid I/A dénártha le haghaidh sonraí\n"
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr " text úsáid I/A téacs le haghaidh sonraí\n"
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+"\n"
+"Má sheoltar comhartha %s chuig próiseas `dd' beo, scríobhfaidh sé "
+"staitistic\n"
+"I/A chuig earráid chaighdeánach, agus ansin atosóidh sé an chóipeáil.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 taifead isteach\n"
+" 18335302+0 taifead amach\n"
+" 9387674624 beart (9.4 GB) cóipeáilte, 34.6279 soicind, 271 MB/s\n"
+"\n"
+"Roghanna:\n"
+"\n"
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+"%<PRIuMAX>+%<PRIuMAX> taifead isteach\n"
+"%<PRIuMAX>+%<PRIuMAX> taifead amach\n"
+
+#: src/dd.c:553
+#, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "%<PRIuMAX> taifead teasctha\n"
+msgstr[1] "%<PRIuMAX> thaifead teasctha\n"
+msgstr[2] "%<PRIuMAX> thaifead teasctha\n"
+msgstr[3] "%<PRIuMAX> dtaifead teasctha\n"
+msgstr[4] "%<PRIuMAX> taifead teasctha\n"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] "cóipeáladh %<PRIuMAX> bheart (%s)"
+msgstr[1] "cóipeáladh %<PRIuMAX> bheart (%s)"
+msgstr[2] "cóipeáladh %<PRIuMAX> bheart (%s)"
+msgstr[3] "cóipeáladh %<PRIuMAX> mbeart (%s)"
+msgstr[4] "cóipeáladh %<PRIuMAX> beart (%s)"
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr "Éigríoch B"
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ", %g shoicind, %s/s\n"
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "inchomhad %s á dhúnadh"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "aschomhad %s á dhúnadh"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "á scríobh i %s"
+
+#: src/dd.c:886
+#, c-format
+msgid "unrecognized operand %s"
+msgstr "oibreann anaithnid %s"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "tiontú neamhbhailí: %s"
+
+#: src/dd.c:900
+#, c-format
+msgid "invalid input flag: %s"
+msgstr "bratach neamhbhailí ionchurtha: %s"
+
+#: src/dd.c:903
+#, c-format
+msgid "invalid output flag: %s"
+msgstr "bratach neamhbhailí aschurtha: %s"
+
+#: src/dd.c:906
+#, c-format
+msgid "invalid status flag: %s"
+msgstr "bratach neamhbhailí stádais: %s"
+
+#: src/dd.c:942
+#, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "oibreann anaithnid %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "uimhir neamhbhailí %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr "ní féidir aon dá cheann de {ascii,ebcdic,ibm} a úsáid lena chéile"
+
+#: src/dd.c:973
+#, c-format
+msgid "cannot combine block and unblock"
+msgstr "ní féidir `block' agus `unblock' a úsáid lena chéile"
+
+#: src/dd.c:975
+#, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "ní féidir `lcase' agus `ucase' a úsáid lena chéile"
+
+#: src/dd.c:977
+#, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "ní féidir `excl' agus `nocreat' a úsáid lena chéile"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"rabhadh: ag seachaint fabht eithne `lseek' don chomhad (%s)\n"
+" de mt_type=0x%0lx -- féach ar <sys/mtio.h> le haghaidh liosta cineálacha"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, c-format
+msgid "%s: cannot seek"
+msgstr "%s: ní féidir seek a dhéanamh"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr "fritháireamh thar maoil agus comhad %s á léamh"
+
+#: src/dd.c:1229
+#, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "rabhadh: fritháireamh neamhbhailí i ndiaidh léamh teipthe"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr "tar éis an tsaoil, ní féidir fabht san eithne a sheachaint"
+
+#: src/dd.c:1376
+#, c-format
+msgid "setting flags for %s"
+msgstr "bratacha á socraithe le haghaidh %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr "theip ar fdatasync i gcomhair %s"
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr "theip ar fsync i gcomhair %s"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "%s á oscailt"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+"fritháireamh rómhór: ní féidir teascadh go fad %<PRIuMAX> (%lu beart) bloc"
+
+#: src/dd.c:1730
+#, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "á theascadh ag %<PRIuMAX> beart san aschomhad %s"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "Córas comhaid Cineál"
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "Córas comhaid "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " Inóid Iídithe Isaor IÚsáid%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Méid ÍditheArFáilÚsáid%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Méid ÍditheArFáilÚsáid%%"
+
+#: src/df.c:165
+#, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %s-bloc Ídithe Ar Fáil Iomlán"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " %4s-bloc Ídithe Ar Fáil Úsáid"
+
+# my coinage - cuir suas = mount in this sense --KPS
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Curtha suas ar\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "níl an chomhadlann reatha ar fáil"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "ní féidir an chomhadlann oibre a athrú go %s"
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "níl an chomhadlann oibre ar fáil (%s anois)"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"Taispeáin eolas faoin chóras comhaid ar a bhfuil gach COMHAD,\n"
+"nó faoi gach córas comhaid mar réamhshocrú.\n"
+"\n"
+
+#: src/df.c:749
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all cuir córais chaocha chomhaid san áireamh\n"
+" -B, --block-size=MÉID úsáid bloic den mhéid MÉID beart\n"
+" -h, --human-readable taispeáin méideanna i gcruth inléite (m.sh., 1K 2G "
+"srl)\n"
+" -H, --si mar an gcéanna, ach le 1K=1000, nach 1024\n"
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes taispeáin eolas inode in ionad úsáid na mbloc\n"
+" -k ar comhbhrí le `--block-size=1K'\n"
+" -l, --local ná taispeáin ach córais chomhaid logánta\n"
+" --no-sync ná sync roimh eolas úsáide a fháil (réamhshocrú)\n"
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability taispeáin torthaí i gcruth POSIX\n"
+" --sync sync roimh eolas úsáide a fháil\n"
+" -t, --type=CINEÁL ná taispeáin ach córais chomhaid den chineál CINEÁL\n"
+" -T, --print-type taispeáin an cineál chóras comhaid\n"
+" -x, --exclude-type=CINEÁL ná taispeáin córais chomhaid den chineál CINEÁL\n"
+" -v (gan feidhm)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"Is féidir MÉID a bheith ceann acu seo a leanas (le, go roghnach, slánuimhir\n"
+"ar tosach): kB 1000, K 1024, MB 1,000,000, M 1,048,576, srl. do G,T,P,E,Z,"
+"Y.\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr "tá an rogha --kilobytes dulta i léig; bain úsáid as -k ina háit"
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "Tá an cineál %s roghnaithe agus fágtha as"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Rabhadh: "
+
+#: src/df.c:943
+#, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "ní féidir le %s an tábla de chórais chomhad feistithe a léamh"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr "níor próiseáladh aon chórais chomhaid"
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Úsáid: %s [ROGHA]... [COMHAD]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Taispeáin orduithe chun na hathróige thimpeallachta LS_COLORS a shocrú.\n"
+"\n"
+"Roghnaigh an fhormáid aschurtha:\n"
+" -b, --sh, --bourne-shell taispeáin cód Bourne chun LS_COLORS a shocrú\n"
+" -c, --csh, --c-shell taispeáin cód C-shell chun LS_COLORS a shocrú\n"
+" -p, --print-database taispeáin réamhshocruithe\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"Má tá COMHAD tugtha, léigh uaidh na dathanna a úsáid le gach cineál "
+"comhaid.\n"
+"Mura bhfuil, bainfear úsáid as bunachar sonraí réamhthiomsaithe.\n"
+"Úsáid `dircolors --print-database' chun an cruth de na comhaid seo a "
+"fheiceáil\n"
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s:%lu: líne neamhbhailí; dara teaghrán ar iarraidh"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu: lorgfhocal anaithnid %s"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<inmheánach>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"is comheisiatach iad na roghanna chun an bunachar sonraí dircolors a aschur\n"
+"agus na roghanna chun comhréire blaoisce a roghnú"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+"Ní féidir oibrinn chomhaid a úsáid in éineacht leis an rogha --print-"
+"database (-p)."
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr ""
+"níl an athróg thimpeallachta SHELL ar fáil, agus ní thugtar rogha den "
+"chineál blaoisce"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Úsáid: %s AINM\n"
+" nó: %s ROGHA\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"Taispeáin AINM lena /bhall deiridh bainte amach; mura bhfuil slais in AINM,\n"
+"priontáil `.' (an chomhadlann oibre).\n"
+"\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+"\n"
+"Mar shampla:\n"
+" %s /usr/bin/sort Aschur \"/usr/bin\".\n"
+" %s stdio.h Aschur \".\".\n"
+
+#: src/du.c:279 src/wc.c:108
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Úsáid: %s [ROGHA]... [COMHAD]...\n"
+" nó: %s [ROGHA]... --files0-from=C\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"Coimrigh úsáid diosca do gach COMHAD, go hathchúrsach do chomhadlanna.\n"
+"\n"
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+" -a, --all taispeáin gach comhad, nach comhadlanna amháin\n"
+" --apparent-size taispeáin méideanna dealraitheacha, in ionad úsáid\n"
+" dhiosca; is níos lú an mhéid dealraitheach go "
+"minic,\n"
+" ach is féidir a bheith níos mó mar thoradh ar "
+"phoill\n"
+" i gcomhaid (`tanaí), bloghadh inmheánach, bloic\n"
+" indíreacha agus a leithéidí\n"
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+" -B, --block-size=MÉID bain úsáid as bloic den mhéid MÉID\n"
+" -b, --bytes ar comhbhrí le `--apparent-size --block-size=1'\n"
+" -c, --total taispeáin suim iomlán\n"
+" -D, --dereference-args dí-thagair COMHAID atá ina nasc siombalach\n"
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+" --files0-from=C achoimrigh spás diosca úsáidte ag na comhaid atá\n"
+" ainmnithe i gcomhad C, foirceanta le NULanna\n"
+" -H cosúil le --si, ach taispeánann sé rabhadh; beidh "
+"sé\n"
+" ar comhbhrí le --dereference-args (-D) go luath\n"
+" -h, --human-readable taispeáin méideanna i gcruth inléite (m.sh, 1K 234M "
+"2G)\n"
+" --si cosúil le -h, ach le 1K=1000 in ionad 1024\n"
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+" -k ar comhbhrí le `--block-size=1K'\n"
+" -l, --count-links cuir méid san áireamh gach uair más nasc crua é\n"
+" -m ar comhbhrí le `--block-size=1M'\n"
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference dí-thagair gach nasc siombalach\n"
+" -P, --no-dereference ná lean aon nasc siombalach (réamhshocrú)\n"
+" -0, --null Foirceann gach líne aschurtha le 0 in ionad líne "
+"nua\n"
+" -S, --separate-dirs ná cuir comhadlanna san áireamh\n"
+" -s, --summarize ná taispeáin ach an tsuim iomlán\n"
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system fan ar an chóras chomhaid seo\n"
+" -X COMHAD, --exclude-from=COMHAD Ná cuir comhaid san áireamh atá\n"
+" comhoiriúnach le haon phatrún i "
+"gCOMHAD.\n"
+" --exclude=PATRÚN Ná cuir comhaid atá comhoiriúnach le PATRÚN san "
+"áireamh\n"
+" --max-depth=N taispeáin iomlán do chomhadlann (nó comhad, le --"
+"all)\n"
+" nuair atá sé N leibhéal, ar a mhéad, faoin "
+"argóint\n"
+" ar líne na n-orduithe; is ionann --max-depth=0 "
+"agus\n"
+" --summarize\n"
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+" --time taispeáin am an mhionathraithe is déanaí d'aon "
+"chomhad\n"
+" sa chomhadlann, nó ina fochomhadlanna\n"
+" --time=FOCAL taispeáin an t-am mar FOCAL in ionad an ama "
+"mionathraithe:\n"
+" atime, access, use, ctime nó status\n"
+" --time-style=STÍL taispeáin an t-am de réir na STÍLE sonraithe:\n"
+" full-iso, long-iso, iso, +FORMÁID\n"
+" Parsáiltear FORMÁID cosúil le `date'\n"
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "iomlán"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+"FAINIC: bain úsáid as --si in ionad -H; athrófar an rogha -H a bheith ar\n"
+"comhbhrí leis an rogha --dereference-args (-D)"
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "doimhneacht uasta neamhbhailí %s"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr "tá an rogha --megabytes dulta i léig; bain úsáid as -m ina háit"
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "ní féidir coimriú a dhéanamh agus gach iontráil a thaispeáint"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "rabhadh: is ionann iad coimriú agus --max-depth=0"
+
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "rabhadh: tagann an coimriú agus --max-depth=%lu salach ar a chéile"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr "Ní féidir oibrinn chomhaid a úsáid in éineacht le --files0-from."
+
+#: src/du.c:960 src/wc.c:662
+#, c-format
+msgid "cannot read file names from %s"
+msgstr "ní féidir ainmneacha comhaid a léamh ó %s"
+
+#: src/du.c:1000 src/du.c:1003
+msgid "invalid zero-length file name"
+msgstr "ainm neamhbhailí comhaid: folamh"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Úsáid: %s [ROGHA]... [TEAGHRÁN]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+"Déan macalla ar an/na TEAGHRÁ(I)N chuig an aschur caighdeánach.\n"
+"\n"
+" -n ná scríobh an líne nua fhoirceanta\n"
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+" -e úsáid carachtair éalúcháin le cúlslaiseanna (réamhshocrú)\n"
+" -E ná húsáid na carachtair éalúcháin\n"
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"Má tá an rogha -e in éifeacht, aithnítear na carachtair éalúcháin a leanas:\n"
+"\n"
+" \\0NNN an carachtar leis an gcód ASCII NNN (ochtnártha)\n"
+" \\\\ cúlslais\n"
+" \\a rabhadh (BEL)\n"
+" \\b cúlspás\n"
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c lig an líne nua fhoirceanta ar lár\n"
+" \\f foirmfhotha\n"
+" \\n líne nua\n"
+" \\r aisfhilleadh\n"
+" \\t táb cothrománach\n"
+" \\v táb ingearach\n"
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Úsáid: %s [ROGHA]... [-] [AINM=LUACH]... [ORDÚ [ARG]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Sann an LUACH go gach AINM sa timpeallacht agus rith ORDÚ.\n"
+"\n"
+" -i, --ignore-environment tosaigh le timpeallacht fholamh\n"
+" -u, --unset=AINM scrios an athróg AINM as an timpeallacht\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"Ciallaíonn `-' lom an rogha `-i'. Mura bhfuil ORDÚ ann, taispeáin an "
+"timpeallacht.\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Tiontaigh na táib i ngach COMHAD go spásanna agus scríobh chuig aschur "
+"caighdeánach.\n"
+"Mura bhfuil COMHAD ann, nó más '-' é, léigh ón ionchur caighdeánach.\n"
+"\n"
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial ná tiontaigh TÁB i ndiaidh carachtair nach spás bán\n"
+" -t, --tabs=UIMHIR cuir táib UIMHIR carachtar ó chéile in ionad 8\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+" -t, --tabs=LIOSTA úsáid LIOSTA táib faoi leith, scartha le camóga\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr "is rómhór an tábstop %s"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "tá carachta(i)r neamhbhailí sa mhéid táib: %s"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "ní féidir méid táib nialasach"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "caithfidh na méideanna táib a bheith ardaitheach"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, c-format
+msgid "input line is too long"
+msgstr "tá an líne ionchurtha rófhada"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Úsáid: %s SLONN\n"
+" nó: %s ROGHA\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"\n"
+"Cuir an luach de SLONN chuig aschur caighdeánach. Dealaíonn líne fholamh\n"
+"thíos grúpaí tosaíochta. Is féidir SLONN a bheith:\n"
+"\n"
+" ARG1 | ARG2 ARG1 mura bhfuil sé nialasach, ARG2 má tá\n"
+"\n"
+" ARG1 & ARG2 0 má tá ceachtar nialasach, ARG1 mura bhfuil\n"
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"\n"
+" ARG1 < ARG2 Tá ARG1 níos lú ná ARG2\n"
+" ARG1 <= ARG2 Tá ARG1 níos lú ná, nó is ionann agus, ARG2\n"
+" ARG1 = ARG2 is ionann iad ARG1 agus ARG2\n"
+" ARG1 != ARG2 ní ionann ARG1 agus ARG2\n"
+" ARG1 >= ARG2 Tá ARG1 níos mó ná, nó is ionann agus, ARG2\n"
+" ARG1 > ARG2 Tá ARG1 níos mó ná ARG2\n"
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+"\n"
+" ARG1 + ARG2 suim uimhríochtúil de ARG1 agus ARG2\n"
+" ARG1 - ARG2 difríocht uimhríochtúil idir ARG1 agus ARG2\n"
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+"\n"
+" ARG1 * ARG2 iolrach uimhríochtúil de ARG1 agus ARG2\n"
+" ARG1 / ARG2 líon uimhríochtúil de ARG1 roinnte le ARG2\n"
+" ARG1 % ARG2 fuílleach agus ARG1 á roinnt le ARG2\n"
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"\n"
+" TEAGHRÁN : SLONN comhoiriúnaigh an patrún SLONN i dTEAGHRÁN\n"
+"\n"
+" match TEAGHRÁN SLONN ar comhbhrí le `TEAGHRÁN : SLONN\n"
+" substr TEAGHRÁN ÁIT FAD fotheaghrán de TEAGHRÁN, tosaíonn ÁIT ag 1\n"
+" index TEAGHRÁN CAR áit i dTEAGHRÁN atá aon charachtar i CAR, nó 0\n"
+" length TEAGHRÁN fad an TEAGHRÁIN\n"
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+" + SIOMBAIL caith le SIOMBAIL mar theaghrán, fiú más\n"
+" lorgfhocal é, mar `match', nó oibreoir mar "
+"`/'\n"
+"\n"
+" ( SLONN ) luach de SLONN\n"
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"Ní foláir duit cuid mhór oibreoirí a chur idir comharthaí athfhriotal chun\n"
+"iad a chosaint ón bhlaosc. Déan comparáid uimhríochtúil más uimhreacha "
+"ARG1\n"
+"agus ARG2; i ngach cás eile, déan comparáid fhoclóireachta. Ais-seolann "
+"patrúin\n"
+"chomhoiriúnacha an teaghrán atá idir \\( agus \\), nó nialas; mura bhfuil\n"
+"\\( agus \\) ann, ais-seolann siad líon na gcarachtar a bhí "
+"comhoiriúnaithe.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+"\n"
+"Stádas scortha = 0 mura bhfuil SLONN nialasach, 1 má tá,\n"
+"2 más slonn neamhbhailí é, agus 3 má tharlaíonn earráid.\n"
+
+# in FARF --KPS
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "earráid chomhréire"
+
+#: src/expr.c:468 src/ptx.c:292
+#, c-format
+msgid "error in regular expression matcher"
+msgstr "earráid le linn cuardaigh ar shlonn ionadaíochta"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "argóint neamhuimhriúil"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "roinnt le nialas"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Úsáid: %s [UIMHIR]...\n"
+" nó: %s ROGHA\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"Taispeáin na fachtóirí príomha de gach UIMHIR.\n"
+"\n"
+
+#: src/factor.c:85
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+"Taispeáin na fachtóirí príomha de gach UIMHIR sonraithe. Mura bhfuil\n"
+"argóintí ann, léigh iad ón ionchur caighdeánach.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "tá %s rómhór"
+
+#: src/factor.c:158
+#, c-format
+msgid "%s is not a valid positive integer"
+msgstr "Ní slánuimhir dheimhneach bhailí é %s"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Úsáid: %s [-DIGITÍ] [ROGHA]... [COMHAD]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"Athdhéan an fhormáid de gach paragraf s(n)a COMHA(I)D, agus scríobh\n"
+"an toradh chuig aschur caighdeánach. Mura bhfuil COMHAD ann, nó más '-' é,\n"
+"léigh ón ionchur caighdeánach.\n"
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin coinnigh eangú den chéad dá líne\n"
+" -p, --prefix=TEAGHRÁN ná ceangail ach línte le réimír TEAGHRÁN, agus\n"
+" athcheangail an réimír le línte "
+"athfhormáidithe\n"
+" -s, --split-only deighil línte fada, ach ná hathlíon\n"
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph déan eangú an chéad líne leis an dara cheann\n"
+" -u, --uniform-spacing spás aonarach idir focail, dhá i ndiaidh "
+"abairtí\n"
+" -w, --width=UIMHIR uasmhéid leithid líne (réamhshocrú 75 colún)\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+"rogha neamhbhailí -- %c; ní ghlactar le -LEITHEAD ach nuair atá sé an chéad\n"
+"rogha; úsáid -w N ina háit"
+
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr "leithead neamhbhailí: %s"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"Timfhill línte ionchurtha i ngach COMHAD (ionchur caighdeánach mar "
+"réamhshocrú)\n"
+"agus scríobh chuig an aschur caighdeánach.\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes uimhrigh bearta seachas colúin\n"
+" -s, --spaces bris ag spásanna\n"
+" -w, --width=LEITHEAD úsáid LEITHEAD colún in ionad 80\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, c-format
+msgid "invalid number of columns: %s"
+msgstr "líon neamhbhailí na gcolún: %s"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Taispeáin an chéad deich líne i ngach COMHAD chuig aschur caighdeánach.\n"
+"Má tá níos mó ná COMHAD amháin, taispeáin ceanntásc leis an ainm comhaid\n"
+"roimh gach COMHAD. Mura bhfuil COMHAD ann, nó más '-' é, léigh ón ionchur\n"
+"caighdeánach.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+" -c, --bytes=[-]N taispeáin an chéad N beart de gach comhad;\n"
+" leis an `-' tosaigh, taispeáin gach rud ach an\n"
+" N beart is déanaí ó gach comhad\n"
+" -n, --lines=[-]N taispeáin an chéad N líne in ionad an chéad 10;\n"
+" leis an `-' tosaigh, taispeáin gach rud ach an\n"
+" N líne is déanaí ó gach comhad\n"
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent ná taispeáin ceanntásc leis an ainm comhaid\n"
+" -v, --verbose taispeáin an ceanntásc leis an ainm comhaid\n"
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"Is féidir iarmhír a chur le MÉID: b=512, k=1K, m=1 Meig.\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "earráid agus %s á léamh"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "earráid agus %s á scríobh"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr "%s: is róchraptha an comhad"
+
+#: src/head.c:230 src/head.c:1046
+#, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s: is rómhór líon na mbeart"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr ""
+"%s: ní féidir `lseek' a dhéanamh ar ais go dtí an láthair thionscantach"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: ní féidir bogadh go fritháireamh %s"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "ní féidir an pointeoir comhaid a athshocrú do %s"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: tá %s chomh mór nach inléirithe é"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "líon na línte"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "líon na mbeart"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "líon na línte neamhbhailí"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "líon neamhbhailí na mbeart"
+
+#: src/head.c:976 src/head.c:1034
+#, c-format
+msgid "invalid trailing option -- %c"
+msgstr "rogha neamhbhailí chun deiridh -- %c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Úsáid: %s\n"
+" nó: %s ROGHA\n"
+"Taispeáin an t-aitheantóir uimhriúil (heicsidheachúlach) don óstríomhaire.\n"
+"\n"
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Úsáid: %s [AINM]\n"
+" nó: %s ROGHA\n"
+"Taispeáin nó socraigh óstainm an chórais reatha.\n"
+"\n"
+
+#: src/hostname.c:103
+#, c-format
+msgid "cannot set name to %s"
+msgstr "ní féidir an t-ainm a shocrú mar %s"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr "ní féidir leis an chóras seo a óstainm a shocrú"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "ní féidir an t-óstainm a aimsiú"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Úsáid: %s [ROGHA]... [ÚSÁIDEOIR]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Taispeáin eolas faoi ÚSÁIDEOIR, nó an t-úsáideoir reatha.\n"
+"\n"
+" -a déan neamhshuim (le haghaidh comhoiriúnacht siar)\n"
+" -g, --group ná taispeáin ach an ID grúpa i bhfeidhm\n"
+" -G, --groups taispeáin gach ID grúpa\n"
+" -n, --name taispeáin ainm in ionad uimhir, le -ugG\n"
+" -r, --real taispeáin an fíor-ID in ionad an ID i bhfeidhm, le -ugG\n"
+" -u, --user ná taispeáin ach an ID úsáideora i bhfeidhm\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"Mura bhfuil ROGHA ann, taispeáin roinnt bheag eolais thairbhigh.\n"
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "ní féidir an t-úsáideoir amháin agus an grúpa amháin a thaispeáint"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr ""
+"ní féidir ach ainmneacha nó fíor-IDanna a thaispeáint san fhormáid "
+"réamhshocraithe"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Níl a leithéid d'úsáideoir ann"
+
+#: src/id.c:205
+#, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "níl aon fháil ar ainm don aitheantas úsáideora %lu"
+
+#: src/id.c:229
+#, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "níl aon fháil ar ainm don aitheantas grúpa %lu"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "níl aon fháil ar liosta na ngrúpaí forlíontach"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " grúpaí="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr "ní cheadaítear an rogha --strip agus comhadlann á suiteáil"
+
+#: src/install.c:321
+#, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "ní cheadaítear sprioc-chomhadlann agus comhadlann á suiteáil"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "mód neamhbhailí %s"
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "ní féidir an t-úinéir de %s a athrú"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "ní féidir an stampa ama a shocrú do %s"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "theip ar ghlao córais fork()"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "ní féidir struipeáil a dhéanamh"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "ag feitheamh le %s [-d]"
+
+#: src/install.c:572
+#, fuzzy, c-format
+msgid "strip process terminated abnormally"
+msgstr "Chríochnaigh %s [-d] gan an chúis a mhíniú"
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "úsáideoir neamhbhailí %s"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "comhadlann %s á cruthú"
+
+#: src/install.c:651
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Úsáid: %s [ROGHA]... [-T] FOINSE SPRIOC\n"
+" nó: %s [ROGHA]... FOINSE... COMHADLANN\n"
+" nó: %s [ROGHA]... -t COMHADLANN FOINSE...\n"
+" nó: %s [ROGHA]... -d COMHADLANN...\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"Sa chéad trí leagan, cóipeáil FOINSE go SPRIOC nó FOINSE/Í go COMHADLANN "
+"atá\n"
+"ann cheana, agus socraigh ceadanna, úinéir, agus grúpa.\n"
+"Sa cheathrú leagan, cruthaigh gach ball den chomhadlann(a) atá tugtha.\n"
+"\n"
+
+# backup stuff same as cp. -KPS
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup[=RIALÚ] déan cúltaca de gach sprioc-chomhad atá ann\n"
+" -b cosúil le `--backup' ach gan argóint\n"
+" -c (gan feidhm)\n"
+" -d, --directory is comhadlann gach argóint; cruthaigh gach ball de na\n"
+" comhadlanna sonraithe\n"
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D cruthaigh gach ball de SPRIOC seachas an deireadh,\n"
+" agus ansin cóipeáil FOINSE go SPRIOC\n"
+" -g, --group=GRÚPA socraigh grúpa in ionad an ghrúpa den phróiseas "
+"reatha\n"
+" -m, --mode=MÓD socraigh na ceadanna (mar le chmod), in ionad `rwxr-xr-"
+"x\n"
+" -o, --owner=ÚINÉIR socraigh an t-úinéir (forúsáideoir amháin)\n"
+
+#: src/install.c:681
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps caomhnaigh amanna rochtana/mionathraithe de "
+"na\n"
+" FOINSÍ leis na sprioc-chomhaid faoi seach\n"
+" -s, --strip struipeáil siombailí\n"
+" -S, --suffix=IARMHÍR sáraigh an iarmhír réamhshocraithe cúltaca\n"
+" -t, --target-directory=CMDLANN cóipeáil gach FOINSE go dtí an CMDLANN\n"
+" -T, --no-target-directory caith le SPRIOC mar ghnáthchomhad\n"
+" -v, --verbose taispeáin gach comhadlann agus á cruthú\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"Is é `~' an iarmhír chúltaca, mura dtugtar é le --suffix nó "
+"SIMPLE_BACKUP_SUFFIX.\n"
+"Is féidir an modh de rialú foinsí a roghnú le `--backup', nó leis an athróg\n"
+"thimpeallachta VERSION_CONTROL. Seo duit na luachanna bailí:\n"
+"\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"Scríobh líne chuig aschur caighdeánach do gach péire de línte ionchurtha le\n"
+"réimsí ceangal comhoiriúnacha. Is an chéad réimse an ceann "
+"réamhshocraithe,\n"
+"cuimsithe le spás bán. Más `-' COMHAD1 nó COMHAD2 (nach iad araon), léigh "
+"ón\n"
+"ionchur caighdeánach.\n"
+" -a TAOBH taispeáin línte gan phéire as an gcomhad TAOBH\n"
+" -e FOLAMH cuir FOLAMH in ionad réimsí ionchurtha ar iarraidh\n"
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case ná bí cásíogair agus réimsí á gcur i gcomparáid\n"
+" -j RÉIMSE ar comhbhrí le `-1 RÉIMSE -2 RÉIMSE'\n"
+" -o FORMÁID tóg an líne aschurtha de réir FORMÁID\n"
+" -t CAR úsáid CAR mar theormharcóir idir réimsí ionchur/aschur\n"
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v TAOBH cosúil le `-a TAOBH', ach múch línte nasctha aschurtha\n"
+" -1 RÉIMSE nasc ag an RÉIMSE seo i gcomhad 1\n"
+" -2 RÉIMSE nasc ag an RÉIMSE seo i gcomhad 2\n"
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"Má tá `-t CAR' ceaptha, scar réimsí le CAR; mura bhfuil sé ceaptha, scar\n"
+"réimsí le spásanna tosaigh. Is uimhir RÉIMSE, uimhrithe ó 1. Is éard\n"
+"atá i bhFORMÁID: sonraitheoir i gcruth `TAOBH.RÉIMSE' nó `0', nó roinnt\n"
+"sonraitheoirí mar seo, scartha le camóga nó spásanna. Taispeánann an\n"
+"FHORMÁID réamhshocraithe an réimse ceangail, na réimsí fuílligh as COMHAD1,\n"
+"agus na réimsí fuílligh as COMHAD2, scartha le CAR.\n"
+"\n"
+"Tábhachtach: ní foláir COMHAD1 agus COMHAD2 a shórtáil de réir na\n"
+"réimsí ceangail.\n"
+"Mar shampla, úsáid `sort -k 1b,1' mura bhfuil roghanna ag `join'.\n"
+
+#: src/join.c:617 src/join.c:812
+#, c-format
+msgid "invalid field number: %s"
+msgstr "uimhir neamhbhailí réimse: %s"
+
+#: src/join.c:638 src/join.c:647
+#, c-format
+msgid "invalid field specifier: %s"
+msgstr "sonraitheoir neamhbhailí réimse: %s"
+
+#: src/join.c:654
+#, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "uimhir neamhbhailí chomhaid i sonraitheoir réimse: %s"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr "réimsí neamh-chomhoiriúnacha ceangail %lu, %lu"
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr "teaghrán ionaid le haghaidh réimsí folmha i gcoinbhleacht"
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr "táb folamh"
+
+#: src/join.c:870 src/sort.c:3031
+#, c-format
+msgid "multi-character tab %s"
+msgstr "táb ilcharachtair %s"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr "táib éaguibhreannacha"
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "ní féidir na comhaid araon a bheith an t-ionchur caighdeánach"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"Úsáid: %s [-s COMHARTHA | -SIGNAL] PID...\n"
+" nó: %s -l [COMHARTHA]...\n"
+" nó: %s -t [COMHARTHA]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+"Cuir comharthaí chuig próisis, nó taispeáin comharthaí.\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+" -s, --signal=COMHARTHA, -COMHARTHA\n"
+" tabhair an t-ainm nó an uimhir den chomhartha le seoladh\n"
+" -l, --list taispeáin ainmneacha na gcomharthaí, nó tiontaigh\n"
+" ainmneacha go/ó uimhreacha\n"
+" -t, --table taispeáin tábla le heolas faoi chomharthaí\n"
+
+# stádas scortha in FARF --KPS
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+"\n"
+"Is féidir COMHARTHA a bheith ainm, mar `HUP', nó uimhir mar `1',\n"
+"nó stádas scortha de phróiseas a bhí scortha le comhartha.\n"
+"Is slánuimhir PID; más diúltach é, ciallaíonn sé grúpa próisis.\n"
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: comhartha neamhbhailí"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: ID próisis neamhbhailí"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "rogha neamhbhailí -- %c"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: Tugadh comharthaí iomadúla"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "roghanna -l nó -t iomadúla"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "ní féidir comhartha a chumasc le -l nó -t"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr "níor tugadh ID próisis ar bith"
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Úsáid: %s COMHAD1 COMHAD2\n"
+" nó: %s ROGHA\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+"Glaoigh ar an fheidhm link() chun COMHAD2 a nascadh le COMHAD1.\n"
+"\n"
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "ní féidir nasc a chruthú ó %s chuig %s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr "%s: rabhadh: ní iniompartha nasc crua go nasc siombalach"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: ní cheadaítear nasc crua le comhadlann"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: ní féidir forscríobh a dhéanamh ar chomhadlann"
+
+# FARF has 'athchuir' in computing contexts, though it sounds funny --KPS
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: athchuir %s? "
+
+#: src/ln.c:295
+#, c-format
+msgid "creating symbolic link %s"
+msgstr "nasc siombalach %s á chruthú"
+
+#: src/ln.c:296
+#, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "nasc siombalach %s le %s á chruthú"
+
+#: src/ln.c:298
+#, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "nasc crua le %.0s%s á chruthú"
+
+#: src/ln.c:301
+#, c-format
+msgid "creating hard link %s"
+msgstr "nasc crua %s á chruthú"
+
+#: src/ln.c:302
+#, c-format
+msgid "creating hard link %s => %s"
+msgstr "nasc crua %s le %s á chruthú"
+
+#: src/ln.c:324
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Úsáid: %s [ROGHA]... [-T] SPRIOC AINM_NAISC (an chéad leagan)\n"
+" nó: %s [ROGHA]... SPRIOC (an dara leagan)\n"
+" nó: %s [ROGHA]... SPRIOC... COMHADLANN (an tríú leagan)\n"
+" nó: %s [ROGHA]... -t COMHADLANN SPRIOC... (an cheathrú leagan)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"Sa chéad fhoirm, cruthaigh nasc le SPRIOC, darb ainm AINM_NAISC.\n"
+"Sa dara foirm, cruthaigh nasc le SPRIOC sa chomhadlann reatha.\n"
+"Sa 3ú agus 4ú foirm, cruthaigh nasc le gach SPRIOC i gCOMHADLANN.\n"
+"Is naisc chrua an réamhshocrú, agus naisc shiombalacha le --symbolic.\n"
+"Ní foláir gach SPRIOC a bheith ann agus naisc chrua á gcruthú.\n"
+"\n"
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup[=RIALÚ] déan cúltaca de gach sprioc-chomhad atá ann\n"
+" -b cosúil le `--backup' ach gan argóint\n"
+" -d, -F, --directory ceadaigh don fhorúsáideoir nasc crua do\n"
+" chomhadlanna a dhéanamh (ach is dóiche go\n"
+" dteipfear de bharr srianta córais, go fiú\n"
+" don fhorúsáideoir)\n"
+" -f, --force scrios sprioc-chomhad má tá sé ann cheana\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference ná lean naisc shiombalacha\n"
+" -i, --interactive fiafraigh roimh sprioc-chomhaid a scriosadh\n"
+" -s, --symbolic naisc shiombalacha in ionad nasc crua\n"
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" -S, --suffix=IARMHÍR sáraigh an iarmhír réamhshocraithe cúltaca\n"
+" -t, --target-directory=COMHADLANN socraigh an CHOMHADLANN ina "
+"gcruthaítear\n"
+" na naisc\n"
+" -T, --no-target-directory caith le AINM_NAISC mar ghnáthchomhad\n"
+" -v, --verbose taispeáin an t-ainm de gach comhad nasctha\n"
+
+#: src/ln.c:484
+#, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr ""
+"Ní féidir --target-directory a úsáid in éineacht le --no-target-directory"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Úsáid: %s [ROGHA]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"Taispeáin an t-ainm den úsáideoir reatha.\n"
+"\n"
+
+#: src/logname.c:89
+#, c-format
+msgid "no login name"
+msgstr "níl aon ainm logáilte isteach ann"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%b %e %Y"
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%b %e %H:%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr ""
+"tá an athróg thimpeallachta QUOTING_STYLE neamhbhailí: %s; ag ligean thar"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "tá an athróg thimpeallachta COLUMNS neamhbhailí: %s; ag ligean thar"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr "tá an athróg thimpeallachta TABSIZE neamhbhailí: %s; ag ligean thar"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "leithead líne neamhbhailí: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "méid neamhbhailí táib: %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "formáid neamhbhailí ar an am: %s"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "réimír anaithnid: %s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "tá an athróg thimpeallachta LS_COLORS neamhbhailí"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "ní féidir an chomhadlann %s a oscailt"
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "ní féidir an gléas agus inode de %s a dhéanamh amach"
+
+#: src/ls.c:2353
+#, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "%s: ní liostófar comhadlann atá liostaithe cheana"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "comhadlann %s á léamh"
+
+#: src/ls.c:2410
+#, c-format
+msgid "closing directory %s"
+msgstr "comhadlann %s á dúnadh"
+
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr ""
+"ní féidir na hainmneacha comhaid %s agus %s a chur i gcomparáid le chéile"
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"Taispeáin eolas faoin COMHA(I)D (sa chomhadlann reatha mar réamhshocrú).\n"
+"Sórtáil san ord aibítre mura bhfuil --sort ná aon cheann de -cftuvSUX ann.\n"
+"\n"
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all ná folaigh iontrálacha le . ar tosach\n"
+" -A, --almost-all ná taispeáin . agus .. intuigthe\n"
+" --author le -l, taispeáin an t-údar de gach comhad\n"
+" -b, --escape ochtnártha in ionad carachtair neamhghrafacha\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=MÉID úsáid bloic den mhéid MÉID beart\n"
+" -B, --ignore-backups ná taispeáin iontrálacha le ~ ag deireadh\n"
+" -c le -lt: sórtáil de réir, agus taispeáin ctime\n"
+" le -l: taispeáin ctime agus sórtáil de réir "
+"ainm\n"
+" i ngach cás eile: sórtáil de réir ctime\n"
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C taispeáin iontrálacha de réir colúin\n"
+" --color[=CATHAIN] rialú an úsáid de dhathanna chun comhaid a "
+"dhealú\n"
+" CATHAIN = `never', `always', nó `auto'\n"
+" -d, --directory taispeáin comhadlanna in ionad a n-ábhar\n"
+" -D, --dired gin aschur chun an mhóid dired i Emacs\n"
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f ná sórtáil, úsáid -aU, ná húsáid -ls --color\n"
+" -F, --classify cuir ceann de */=>@| leis na hiontrálacha\n"
+" --file-type mar an gcéanna, ach ná hiarcheangail `*'\n"
+" --format=FOCAL across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time ar comhbhrí le `-l --time-style=full-iso\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+" -g cosúil le -l, ach ná taispeáin úinéir an "
+"liosta\n"
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+" --group-directories-first\n"
+" grúpáil comhadlanna roimh chomhaid\n"
+
+#: src/ls.c:4322
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -G, --no-group i liosta fada, ná taispeáin ainm an ghrúpa\n"
+" -h, --human-readable le -l, taispeáin méideanna i bhformáid inléite\n"
+" (m.sh., 1K 234M 2G srl.)\n"
+" --si mar an gcéanna, ach le 1K=1000, ní 1024\n"
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+" -H, --dereference-command-line\n"
+" lean naisc shiombalacha ó líne na n-orduithe\n"
+" --dereference-command-line-symlink-to-dir\n"
+" lean gach nasc siombalach ar líne na n-"
+"orduithe\n"
+" atá nasctha le comhadlann\n"
+" --hide=PATRÚN ná taispeáin iontrálacha atá comhoiriúnach "
+"leis\n"
+" an PATRÚN blaoisce (sáraithe ag -a nó -A)\n"
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=FOCAL cuir táscaire den chineál FOCAL le "
+"hiontrálacha:\n"
+" none (réamhshocrú), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode taispeáin treoiruimhir de gach comhad\n"
+" -I, --ignore=PATRÚN ná taispeáin iontrálacha intuigthe atá\n"
+" comhoiriúnach le PATRÚN\n"
+" -k ar comhbhrí le `--block-size=1K'\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l bain úsáid as an mhód fhoclach\n"
+" -L, --dereference nuair atá nasc siombalach ann, taispeáin an\n"
+" t-eolas faoin tagraí seachas an nasc féin\n"
+" -m taispeáin iontrálacha scartha le camóga\n"
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid cosúil le -l, ach taispeáin UID/GID uimhriúla\n"
+" -N, --literal taispeáin ainmneacha amha (ná caith le "
+"carachtair\n"
+" éalúcháin go speisialta)\n"
+" -o cosúil le `-l', ach gan eolas faoin ghrúpa\n"
+" -p, --indicator-style=slash\n"
+" cuir táscaire / le comhadlanna\n"
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars taispeáin ? in ionad carachtair neamhghrafacha\n"
+" --show-control-chars taispeáin carachtair neamhghrafacha "
+"(réamhshocrú\n"
+" mura `ls' an clár agus aschur chuig "
+"teirminéal)\n"
+" -Q, --quote-name cuir ainmneacha idir comharthaí athfhriotail\n"
+" --quoting-style=FOCAL bain úsáid as an stíl FOCAL do na hainmneacha:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse Cuir in ord droim ar ais le linn sórtála\n"
+" -R, --recursive taispeáin comhadlanna go hathchúrsach\n"
+" -s, --size taispeáin an mhéid de gach comhad (bloic)\n"
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S sórtáil de réir méid an chomhaid\n"
+" --sort=FOCAL sórtáil de réir FOCAL in ionad an ainm: none -"
+"U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=FOCAL le -l, taispeáin an t-am mar FOCAL in ionad\n"
+" am mionathraithe: atime -u, access -u, use -"
+"u,\n"
+" ctime -c, nó status -c; úsáid an t-am "
+"sonraithe\n"
+" mar eochair shórtála más --sort=time\n"
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=STÍL le -l, taispeáin amanna de réir na stíle STÍL:\n"
+" full-iso, long-iso, iso, locale, +FORMÁID.\n"
+" Léirmhínigh FORMÁID mar `date'; más é\n"
+" FORMÁID1<líne nua>FORMÁID2, úsáid FORMÁID1 le\n"
+" seanchomhaid agus FORMÁID2 le comhaid nua;\n"
+" má tá réimír `posix-' ar STÍL, bain úsáid as\n"
+" mura bhfuil an logchaighdeán POSIX socraithe\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+" -t sórtáil de réir am mionathraithe\n"
+" -T, --tabsize=COLÚIN cuir táb ar gach COLÚIN colún (réamhshocrú=8)\n"
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u le -lt: sórtáil le, agus taispeáin am rochtana\n"
+" le -l: taispeáin am rochtana, sórtáil le "
+"hainm\n"
+" i ngach cás eile: sórtáil de réir am "
+"rochtana\n"
+" -U ná sórtáil; taispeáin in ord na comhadlainne\n"
+" -v sórtáil de réir leagan\n"
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -w, --width=COLÚIN socraigh leithead den scáileán\n"
+" -x taispeáin ar línte in ionad colúin\n"
+" -X sórtáil de réir iarmhíre an chomhaid,\n"
+" san ord aibítre\n"
+" -1 taispeáin aon chomhad sa líne\n"
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"Ní bhaintear úsáid as dathanna chun comhaid a dhealú, mar réamhshocrú.\n"
+"Tá sé sin ar comhbhrí le `--color=none'. Má tá `--color' tugtha gan an\n"
+"argóint CATHAIN, tá sé sin ar comhbhrí le `--color=always'. Le `--"
+"color=auto',\n"
+"baintear úsáid as dathanna nuair atá aschur caighdeánach nasctha le\n"
+"teirminéal (tty). Téann an athróg thimpeallachta LS_COLORS i bhfeidhm ar\n"
+"na dathanna, agus is féidir é a shocrú gan stró leis an ordú dircolors.\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+"\n"
+"Stádas scortha = 0 (OK), 1 (deacrachtaí beaga), 2 (deacrachtaí troma).\n"
+
+#: src/md5sum.c:150
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Úsáid: %s [ROGHA] [COMHAD]...\n"
+"Taispeáin nó seiceáil suimeanna sheiceála %s (%d giotán).\n"
+"Mura bhfuil COMHAD ann, nó más '-' é, léigh ón ionchur caighdeánach.\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+" -b, --binary léigh sa mhód dénártha (réamhshocrú mura bhfuil sé "
+"ó stdin)\n"
+
+#: src/md5sum.c:164
+msgid " -b, --binary read in binary mode\n"
+msgstr " -b, --binary léigh sa mhód dénártha\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+" -c, --check léigh %s suim ó na COMHAID agus seiceáil iad\n"
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+" -t, --text léigh sa mhód téacs (réamhshocrú mura bhfuil sé ó "
+"stdin)\n"
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr " -t, --text léigh sa mhód téacs (réamhshocrú)\n"
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"\n"
+"Ní úsáidtear an dá rogha a leanas ach nuair atáthar ag fíorú\n"
+"suimeanna seiceála:\n"
+" --status ná taispeáin dada, comharthaítear bua le cód "
+"scortha\n"
+" -w, --warn tabhair rabhadh má tá línte míchumtha ann\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"Ríomhtar na suimeanna mar atá mínithe i %s. Má táthar ag seiceáil, is gá\n"
+"an t-ionchur a bheith ina aschur den ríomhchlár seo. Sa mhód "
+"réamhshocraithe,\n"
+"taispeáin líne le suim sheiceála, carachtar a chomharthaíonn an cineál\n"
+"(`*'=dénártha, ` '=téacs), agus an t-ainm gach COMHAD.\n"
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: an iomarca línte shuim sheiceála"
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %<PRIuMAX>: líne mhíchumtha le suim sheiceála %s"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: Theip ar oscailt nó ar léamh\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "TEIPTHE"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "OK"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: earráid sa léamh"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: níl aon líne dhea-chumtha ar fáil le suim sheiceála %s"
+
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "RABHADH: ní féidir %<PRIuMAX> as %<PRIuMAX> comhaid a léamh"
+msgstr[1] "RABHADH: ní féidir %<PRIuMAX> as %<PRIuMAX> comhaid a léamh"
+msgstr[2] "RABHADH: ní féidir %<PRIuMAX> as %<PRIuMAX> comhaid a léamh"
+msgstr[3] "RABHADH: ní féidir %<PRIuMAX> as %<PRIuMAX> comhaid a léamh"
+msgstr[4] "RABHADH: ní féidir %<PRIuMAX> as %<PRIuMAX> comhaid a léamh"
+
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "RABHADH: ní ceart %<PRIuMAX> as %<PRIuMAX> shuim ríofa seiceála"
+msgstr[1] "RABHADH: ní ceart %<PRIuMAX> as %<PRIuMAX> shuim ríofa seiceála"
+msgstr[2] "RABHADH: ní ceart %<PRIuMAX> as %<PRIuMAX> shuim ríofa seiceála"
+msgstr[3] "RABHADH: ní ceart %<PRIuMAX> as %<PRIuMAX> suim ríofa seiceála"
+msgstr[4] "RABHADH: ní ceart %<PRIuMAX> as %<PRIuMAX> suim ríofa seiceála"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"tá na roghanna --binary agus --text gan bhrí agus suimeanna seiceála á "
+"bhfíorú"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr ""
+"tá an rogha --status gan bhrí ach amháin nuair atáthar ag fíorú suimeanna "
+"seiceála"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr ""
+"tá an rogha --warn gan bhrí ach amháin nuair atáthar ag fíorú suimeanna "
+"seiceála"
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Úsáid: %s [ROGHA] COMHADLANN...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"Cruthaigh an chomhadlann/na comhadlanna, mura bhfuil siad ann cheana féin.\n"
+"\n"
+
+#: src/mkdir.c:67
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+" -m, --mode=MÓD socraigh mód an chomhaid (mar le chmod), ní a=rwx - "
+"umask\n"
+" -p, --parents gan earráid má tá sé ann cheana, déan tuismitheoirí más "
+"gá\n"
+" -v, --verbose priontáil teachtaireacht do gach comhadlann a "
+"chruthaítear\n"
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "cruthaíodh comhadlann %s"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Úsáid: %s [ROGHA] AINM...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"Cruthaigh píopaí ainmnithe (FIFO) leis na hAINMneacha tugtha.\n"
+"\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+" -m, --mode=MÓD socraigh ceadanna (mar le chmod), ní a=rw - umask\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "mód neamhbhailí"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr "caithfidh an mód na giotáin cheada amháin a shonrú"
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Úsáid: %s [ROGHA]... AINM CINEÁL [PRÍOMH MION]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"Cruthaigh an comhad speisialta AINM den chineál ceaptha CINEÁL.\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+"\n"
+"ní foláir PRÍOMH agus MION araon a thabhairt má tá an CINEÁL b, c, nó u, "
+"agus\n"
+"ní cheadaítear iad ar chor ar bith le CINEÁL p. Má tá 0x nó 0X ag ceann\n"
+"PRÍOMH nó MION, caith leis mar heicsidheachúlach; le 0 aonraic, mar "
+"ochtnártha;\n"
+"agus i ngach cás eile, mar deachúlach. CINEÁLacha bailí:\n"
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+" b cruthaigh comhad speisialta den chineál `bloc' (maolánaithe)\n"
+" c, u cruthaigh comhad speisialta den chineál `carachtar' (gan mhaolán)\n"
+" p cruthaigh FIFO\n"
+
+#: src/mknod.c:146
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"Ní mór príomhuimhir ghléis agus mionuimhir ghléis a cheapadh le haghaidh na "
+"gcomhad speisialta"
+
+#: src/mknod.c:156
+msgid "Fifos do not have major and minor device numbers."
+msgstr "Níl príomhuimhir ná mionuimhir ghléis ag comhaid fifo."
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "Níl comhaid speisialta den chineál `bloc' ar fáil"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "Níl comhaid speisialta den chineál `carachtar' ar fáil"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "is neamhbhailí an phríomhuimhir ghléis %s"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "is neamhbhailí an mhionuimhir ghléis %s"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "gléas neamhbhailí %s %s"
+
+#: src/mknod.c:216
+#, c-format
+msgid "invalid device type %s"
+msgstr "gléas neamhbhailí %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Athraigh ainm de FOINSE go SPRIOC, nó aistrigh FOINSE/Í go COMHADLANN.\n"
+"\n"
+
+# same stuff under cp, install, etc. --KPS
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup[=RIALÚ] déan cúltaca de gach sprioc-chomhad atá ann\n"
+" -b cosúil le `--backup' ach gan argóint\n"
+" -f, --force ná fiafraigh roimh fhorscríobh\n"
+" -i, --interactive fiafraigh roimh fhorscríobh\n"
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --strip-trailing-slashes scrios slaiseanna ag deireadh gach argóint\n"
+" FOINSE\n"
+" -S, --suffix=IARMHÍR sáraigh an gnáth-iarmhír cúltaca\n"
+
+#: src/mv.c:308
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --target-directory=COMHADLANN aistrigh gach FOINSE isteach i "
+"gCOMHADLANN\n"
+" -T, --no-target-directory caith le SPRIOC mar ghnáthchomhad\n"
+" -u, --update ná haistrigh ach amháin nuair atá FOINSE\n"
+" níos úire ná an sprioc-chomhad, nó nuair "
+"atá\n"
+" an sprioc-chomhad ar iarraidh\n"
+" -v, --verbose mínigh na rudaí atá ag tarlú\n"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Úsáid: %s [ROGHA] [ORDÚ [ARG]...]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+"Rith ORDÚ le tosaíocht coigeartaithe chun sceidealadh na bpróiseas a athrú.\n"
+"Gan ORDÚ, taispeáin an tosaíocht reatha. Is féidir luachanna idir %d\n"
+"(is mó tosaíocht) agus %d (is lú tosaíocht) a roghnú.\n"
+"\n"
+" -n, --adjustment=N cuir an tslánuimhir N leis an tosaíocht "
+"(réamhshocrú=10)\n"
+
+#: src/nice.c:155
+#, c-format
+msgid "invalid adjustment %s"
+msgstr "coigeartú neamhbhailí %s"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "ní foláir ordú a thabhairt le coigeartú"
+
+#: src/nice.c:171 src/nice.c:182
+#, c-format
+msgid "cannot get niceness"
+msgstr "níl an tosaíocht ar fáil"
+
+#: src/nice.c:186
+#, c-format
+msgid "cannot set niceness"
+msgstr "ní féidir an tosaíocht a shocrú"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Scríobh gach COMHAD chuig aschur caighdeánach, le líne-uimhreacha sa "
+"bhreis.\n"
+"Mura bhfuil COMHAD ann, nó más '-' é, léigh ón ionchur caighdeánach.\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=STÍL uimhrigh línte an choirp de réir STÍL\n"
+" -d, --section-delimiter=CAR Idirscar leathanaigh loighciúla le CAR\n"
+" -f, --footer-numbering=STÍL uimhrigh línte an bhuntáisc de réir STÍL\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=STÍL uimhrigh línte an cheanntáisc de réir STÍL\n"
+" -i, --page-increment=UIMHIR incrimint líne-uimhir ag gach líne\n"
+" -l, --join-blank-lines=UIMHIR cruinnigh UIMHIR líne folamh le chéile\n"
+" -n, --number-format=FORMÁID ionsáigh líne-uimhreacha de réir FORMÁIDE\n"
+" -p, --no-renumber ná hatosaigh líne-uimhreacha ag leathanaigh "
+"nua\n"
+" -s, --number-separator=TEAGHRÁN cuir TEAGHRÁN isteach i ndiaidh\n"
+" líne-uimhir (fhéideartha)\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=UIMHIR an chéad líne-uimhir ar gach leathanach\n"
+" -w, --number-width=UIMHIR bain úsáid as UIMHIR colún do líne-"
+"uimhreacha\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"Mar réamhshocrú, roghnaítear -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn.\n"
+"Is dhá charachtar teormharcóra CC chun leathanaigh loighciúla a scaradh.\n"
+"Má tá an dara carachtar ar iarraidh, glactar le :. Iontráil \\\\ do \\.\n"
+"Tá STÍL ar cheann de na roghanna a leanas:\n"
+
+#: src/nl.c:214
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a uimhrigh gach líne\n"
+" t ná huimhrigh ach línte nach folamh\n"
+" n ná huimhrigh ar chor ar bith\n"
+" pSLONN ná huimhrigh ach na línte atá comhoiriúnach le SLONN bunúsach\n"
+"\n"
+"Tá FORMÁID ar cheann de na roghanna a leanas:\n"
+"\n"
+" ln comhfhadaithe ar clé agus gan nialais ar tosach\n"
+" rn comhfhadaithe ar dheis agus gan nialais ar tosach\n"
+" rz comhfhadaithe ar dheis, le nialais ar tosach\n"
+"\n"
+
+#: src/nl.c:281
+#, c-format
+msgid "line number overflow"
+msgstr "líne-uimhir thar maoil"
+
+#: src/nl.c:479
+#, c-format
+msgid "invalid header numbering style: %s"
+msgstr "stíl uimhrithe neamhbhailí do cheanntásca: %s"
+
+#: src/nl.c:487
+#, c-format
+msgid "invalid body numbering style: %s"
+msgstr "stíl uimhrithe neamhbhailí don chorp: %s"
+
+#: src/nl.c:495
+#, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "stíl uimhrithe neamhbhailí do bhuntáisc: %s"
+
+#: src/nl.c:504
+#, c-format
+msgid "invalid starting line number: %s"
+msgstr "líne-uimhir imeachta neamhbhailí: %s"
+
+#: src/nl.c:513
+#, c-format
+msgid "invalid line number increment: %s"
+msgstr "incrimint líne-uimhreach neamhbhailí: %s"
+
+#: src/nl.c:525
+#, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "líon na línte folmha neamhbhailí: %s"
+
+#: src/nl.c:539
+#, c-format
+msgid "invalid line number field width: %s"
+msgstr "réimseleithead líne-uimhreach neamhbhailí: %s"
+
+#: src/nl.c:558
+#, c-format
+msgid "invalid line numbering format: %s"
+msgstr "formáid líne-uimhreach neamhbhailí: %s"
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Úsáid: %s ORDÚ [ARGÓINT]...\n"
+" nó: %s ROGHA\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+"Rith ORDÚ agus lig comharthaí HUP thar.\n"
+"\n"
+
+#: src/nohup.c:117
+#, c-format
+msgid "ignoring input"
+msgstr "ag déanamh neamhshuim ar ionchur"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr "Ní féidir %s a oscailt"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr ""
+"ag déanamh neamhshuim ar an ionchur agus an t-aschur á iarcheangal le %s"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr "níorbh fhéidir an chóip de stderr a dhúnadh i ndiaidh exec"
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr "ag déanamh neamhshuim ar an ionchur, agus stderr á athdhíriú go stdout"
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr "níorbh fhéidir earráid chaighdeánach a athsheoladh"
+
+#: src/od.c:307
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Úsáid: %s [ROGHA]... [COMHAD]...\n"
+" nó: %s [-abcdfilosx]... [COMHAD] [[+]FRITHÁIREAMH[.][b]]\n"
+" nó: %s --traditional [ROGHA]... [COMHAD] [[+]FRITHÁIREAMH[.][b] [+]"
+"[LIPÉAD][.][b]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"Scríobh léiriú gan athbhrí, bearta ochtnártha mar réamhshocrú,\n"
+"de CHOMHAD chuig an aschur caighdeánach. Má tá níos mó ná argóint CHOMHAD\n"
+"amháin ann, comhcheangail iad in ord leis an ionchur a chruthú.\n"
+"Mura bhfuil COMHAD ann, nó más '-' é, léigh ón ionchur caighdeánach.\n"
+"\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+"Is riachtanach le rogha ghearr aon argóint atá riachtanach leis an rogha "
+"fhada.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=BUNUIMHIR formáid de fhritháireamh comhaid\n"
+" -j, --skip-bytes=BEARTA gabh thar BEARTA beart ionchurtha ar dtús\n"
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=BEARTA teorannaigh dumpa le BEARTA beart ionchurtha\n"
+" -s, --strings[=BEARTA] teaghráin aschurtha le BEARTA carachtar\n"
+" grafach ar a laghad\n"
+" -t, --format=CINEÁL roghnaigh formáid(í) aschurtha\n"
+" -v, --output-duplicates ná húsáid * chun ceilt líne a chomharthú\n"
+" -w, --width[=BEARTA] BEARTA beart ar líne aschuir\n"
+" --traditional glac le hargóintí san fhoirm thraidisiúnta\n"
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"Is féidir roghanna formáide traidisiúnta a bheith measctha lena chéile,\n"
+"agus cnuasaíonn siad:\n"
+" -a ar comhbhrí le `-t a', roghnaigh carachtair ainmnithe, agus déan\n"
+" neamhshuim ar an ngiotán is airde\n"
+" -b ar comhbhrí le `-t o1', roghnaigh bearta ochtnártha\n"
+" -c ar comhbhrí le `-t c', roghnaigh ASCII nó éalúcháin le cúlslaiseanna\n"
+" -d ar comhbhrí le `-t u2', roghnaigh aonaid dheachúlacha gan sín, 2 "
+"bheart\n"
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f ar comhbhrí le `-t fF', roghnaigh uimhreacha shnámhphointe\n"
+" -i ar comhbhrí le `-t dI', roghnaigh slánuimhreacha deachúlacha\n"
+" -l ar comhbhrí le `-t dL', roghnaigh `long'anna deachúlacha\n"
+" -o ar comhbhrí le `-t o2', roghnaigh aonaid ochtnártha, 2 bheart\n"
+" -s ar comhbhrí le `-t d2', roghnaigh aonaid dheachúlacha, 2 bheart\n"
+" -x ar comhbhrí le `-t x2', roghnaigh aonaid heicsidheachúlacha, 2 "
+"bheart\n"
+
+#: src/od.c:353
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"Má tá an chéad fhormáid agus an dara formáid araon i bhfeidhm, glac leis\n"
+"an dara ceann nuair a thosaíonn an t-oibreann deiridh le + nó (má tá dhá\n"
+"oibreann ann) digit. Is ionann an t-oibreann FRITHÁIREAMH agus -j "
+"FRITHÁIREAMH.\n"
+"Is LIPÉAD an seoladh bréige ag an chéad bheart priontáilte, incrimintithe "
+"le\n"
+"linn na dumpála. Le haghaidh FRITHÁIREAMH agus LIPÉAD, comharthaíonn "
+"réimír\n"
+"0x nó 0X heicsidheachúlach; úsáid iarmhír `.' don ochtnártha agus `b' mar "
+"512.\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+"\n"
+"Is éard atá i gCINEÁL: sonrú amháin ar a laghad de na cinn a leanas:\n"
+"\n"
+" a carachtar ainmnithe, déan neamhshuim ar an ngiotán is airde\n"
+" c carachtar ASCII nó carachtar éalúcháin le cúlslais\n"
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[MÉID] slánuimhir dheachúlach le sín, MÉID beart ar cheann\n"
+" f[MÉID] uimhir shnámhphointe, MÉID beart ar an gceann\n"
+" o[MÉID] ochtnártha, MÉID beart ar an gceann\n"
+" u[MÉID] slánuimhir dheachúlach gan sín, MÉID beart ar an gceann\n"
+" x[MÉID] heicsidheachúlach, MÉID beart ar an gceann\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"Is uimhir í MÉID. Má tá CINEÁL as d,o,u,x, is féidir MÉID a bheith\n"
+"`C'=sizeof(char), `S'=sizeof(short), `I'=sizeof(int), nó `L'=sizeof(long).\n"
+"Más ionann CINEÁL agus f, is féidir MÉID a bheith `F'=sizeof(float),\n"
+"`D'=sizeof(double), nó `L'=sizeof(long double).\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"BUNUIMHIR: d=deachúlach, o=ochtnártha, x=heicsidheachúlach, nó n=neamhní.\n"
+"Comharthaíonn réimír 0x nó 0X go bhfuil BEARTA heicsidheachúlach; iolraigh\n"
+"le 512 má tá iarmhír `b' ann, le 1024 le `k' agus 1048576 le `m'. Má tá\n"
+"iarmhír `z' ann le cineál ar bith, cuir taispeáint de charachtair\n"
+"inphriontáilte ag an deireadh de gach líne aschuir. "
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"Glactar le 3 mura bhfuil uimhir i ndiaidh --string, agus glactar le 32\n"
+"i ndiaidh --width mar an gcéanna. De réir réamhshocraithe, úsáideann od\n"
+"roghanna -A o -t d2 -w16.\n"
+
+#: src/od.c:683 src/od.c:802
+#, c-format
+msgid "invalid type string %s"
+msgstr "teaghrán neamhbhailí cineáil %s"
+
+#: src/od.c:693
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"teaghrán neamhbhailí cineáil %s;\n"
+"níl slánuimhreacha le %lu beart le fáil ar an gcóras seo"
+
+#: src/od.c:812
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"teaghrán neamhbhailí cineáil %s;\n"
+"níl uimhreacha shnámhphointe le %lu beart le fáil ar an gcóras seo"
+
+#: src/od.c:871
+#, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "carachtar neamhbhailí `%c' i dteaghrán cineáil %s"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "ní féidir a ghabháil thar dheireadh an ionchuir iomlán"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr "bunuimhir neamhbhailí `%c' do sheoltaí aschuir; roghnaigh as [doxn]"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "gabh thar argóint"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "teorannaigh argóint"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "fad íosta do theaghráin"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "sainiú leithid"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "ní cheadaítear sonrú cineáil agus teaghráin á ndumpáil"
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr "Aon chomhad amháin ar a mhéad sa mhód comhoiriúnachta."
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr "is rómhór skip-bytes + read-bytes"
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "rabhadh: leithead neamhbhailí %lu; bainfear úsáid as %d ina ionad"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: fmd=\"%s\" leithead=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "tá an t-ionchur caighdeánach dúnta"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Scríobh, chuig an aschur caighdeánach, línte comhoiriúnacha go seicheamhach\n"
+"as gach COMHAD, scartha le TÁIB.\n"
+"Mura bhfuil COMHAD ann, nó más '-' é, léigh ón ionchur caighdeánach.\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=LIOSTA athúsáid carachtair as LIOSTA in ionad TÁIB\n"
+" -s, --serial greamaigh i ndiaidh a chéile, nach go "
+"comhuaineach\n"
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Úsáid: %s [ROGHA]... AINM...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+"Aimsigh struchtúir dho-iompartha in AINM.\n"
+"\n"
+" -p seiceáil ar fhormhór na gcóras POSIX\n"
+" -P cuardaigh ar ainmneacha folmha agus \"-\" tosaigh\n"
+" --portability seiceáil ar gach córas POSIX (ar comhbhrí le -p -P)\n"
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr "tá `-' tosaigh i gcomhpháirt d'ainm comhaid %s"
+
+#: src/pathchk.c:206
+#, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "carachtar neamhiompartha %s in ainm comhaid %s"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr "comhadainm folamh"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr "%s: ní féidir an t-uasfhad d'ainmneacha comhaid a dhéanamh amach"
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr "sáraíodh an t-uasfhad %lu: fad %lu den ainm comhad %s"
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr "sáraíodh an t-uasfhad %lu: fad %lu den chomhpháirt ainm comhaid %s"
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Ainm logála isteach: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "I réaltacht: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Comhadlann: "
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Blaosc: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Tionscadal: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "Plean:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Logáil Isteach"
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr "Ainm"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr " TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Díomhaoin"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Cathain"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Cén Áit"
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Úsáid: %s [ROGHA]... [ÚSÁIDEOIR]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"\n"
+" -l taispeáin eolas faoin ÚSÁIDEOIR i bhformáid fhada "
+"aschurtha\n"
+" -b ná taispeáin comhadlann bhaile agus blaosc i bhformáid "
+"fhada\n"
+" -h ná taispeáin an comhad tionscadail i bhformáid fhada\n"
+" -p ná taispeáin an comhad plean i bhformáid fhada\n"
+" -s formáid achomair (réamhshocrú)\n"
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+" -f ná taispeáin teidil na gcolún i bhformáid achomair\n"
+" -w ná taispeáin an t-ainm iomlán i bhformáid achomair\n"
+" -i ná taispeáin an t-ainm iomlán nó cianósta i bhformáid "
+"achomair\n"
+" -q ná taispeáin ainm iomlán, cianósta, nó am díomhaoin\n"
+" i bhformáid achomair\n"
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+"\n"
+"Feidhmchlár beag cosúil le `finger'; taispeáin eolas faoi úsáideoir.\n"
+"Beidh %s an comhad utmp.\n"
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr "is gá ainm úsáideora amháin a thabhairt ar a laghad le -l"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr "raon leathanach"
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "`--pages=AONÚ[:DEIREADH]' argóint ar iarraidh"
+
+#: src/pr.c:916
+#, c-format
+msgid "Invalid page range %s"
+msgstr "Raon neamhbhailí leathanach %s"
+
+#: src/pr.c:981
+#, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "`-l FAD' líon neamhbhailí na línte: %s"
+
+#: src/pr.c:1005
+#, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "`-N UIMHIR' líne-uimhir neamhbhailí tosaigh: %s"
+
+#: src/pr.c:1017
+#, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "`-o CIUMHAIS' fritháireamh neamhbhailí líne: %s"
+
+#: src/pr.c:1058
+#, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-w LEITHEAD' líon neamhbhailí carachtar: %s"
+
+#: src/pr.c:1072
+#, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-W LEITHEAD' líon neamhbhailí carachtar: %s"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr ""
+"Ní cheadaítear líon na gcolún a shocrú le linn priontála go comhuaineach."
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "Ní cheadaítear priontáil trasna agus go comhuaineach araon."
+
+#: src/pr.c:1202
+#, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "`-%c' carachtair breise, nó uimhir neamhbhailí san argóint: %s"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "leathanach róchúng"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+"tá an uimhir leathanach tosaigh %<PRIuMAX> níos mó ná líon na leathanach %"
+"<PRIuMAX>"
+
+#: src/pr.c:2406
+#, c-format
+msgid "Page number overflow"
+msgstr "Uimhir leathanaigh thar maoil"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr "Leathanach %<PRIuMAX>"
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+"Uimhrigh leathanaigh nó colúin de CHOMHA(I)D le haghaidh priontála.\n"
+"\n"
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +AONÚ[:DEIREADH], --pages=AONÚ[:DEIREADH]\n"
+" tosaigh [stop] priontáil ag leathanach AONÚ [DEIREADH]\n"
+" -COLÚN, --columns=COLÚN\n"
+" aschur le COLÚN colúin agus priontáil anuas,\n"
+" mura bhfuil -a tugtha. Cothromaigh líon na línte sna\n"
+" colúin ar gach leathanach.\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across taispeáin colúin trasna an scáileáin seachas anuas\n"
+" úsáid le -COLÚN\n"
+" -c, --show-control-chars\n"
+" carachtair rialúcháin mar ^G nó le cúlslais ochtnártha\n"
+" -d, --double-space\n"
+" spásáil dhúbailte\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=FORMÁID\n"
+" taispeáin an dáta cheanntáisc de réir na FORMÁIDE\n"
+" -e[CAR[LEITHEAD]], --expand-tabs[=CAR[LEITHEAD]]\n"
+" tiontaigh CAR (TÁIB) go táb LEITHEAD (8)\n"
+" -F, -f, --form-feed\n"
+" scar leathanaigh le foirmfhothaí in ionad línte nua\n"
+" (le -F, úsáid ceanntásc leathanaigh de trí líne, nó,\n"
+" gan -F, de cúig líne agus le buntásc)\n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h CEANNTÁSC, --header=CEANNTÁSC\n"
+" úsáid CEANNTÁSC láraithe in ionad ainm comhad i "
+"gceanntásc\n"
+" -h \"\" do líne bhán, ná húsáid -h\"\"\n"
+" -i[CAR[LEITHEAD]], --output-tabs[=CAR[LEITHEAD]]\n"
+" cuir CAR in ionad spásanna go dtí LEITHEAD táib (8)\n"
+" -J, --join-lines cónaisc línte iomlána, stop teascadh línte -W, ná "
+"hailínigh\n"
+" colúin, socraigh deighilteoirí le --sep-string"
+"[=TEAGHRÁN]\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l FAD_LEATHANAIGH, --length=FAD_LEATHANAIGH\n"
+" socraigh fad an leathanaigh go FAD_LEATHANAIGH (66) "
+"líne\n"
+" (línte téacs réamhshocraithe = 56, agus le -F 63)\n"
+" -m, --merge taispeáin na comhaid go comhuaineach, ceann sa cholún,\n"
+" teasc línte, ach cónaisc línte iomlána le -J\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[BEARNA[DIGITÍ]], --number-lines[=BEARNA[DIGITÍ]]\n"
+" uimhrigh línte, úsáid DIGITÍ (5) digit, ansin BEARNA "
+"(TAB),\n"
+" uimhriú ón chéad líne ionchurtha, mar réamhshocrú\n"
+" -N UIMHIR, --first-line-number=UIMHIR\n"
+" crom ar áireamh le hUIMHIR ag an chéad líne den chéad\n"
+" leathanach priontáilte (féach ar +AONÚ)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o CIUMHAIS, --indent=CIUMHAIS\n"
+" déan fritháireamh de CIUMHAIS (0) spás ar gach líne, "
+"ná modhnaigh -w nó -W, cuirfidh CIUMHAIS le LEITHEAD\n"
+" -r, --no-file-warnings\n"
+" ná taispeáin rabhadh mura féidir comhad a oscailt\n"
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[CAR],--separator[=CAR]\n"
+" dealaigh colúin le carachtar aonarach; mar réamhshocrú,\n"
+" CAR=<TAB> gan -w agus CAR=`no char' le -w\n"
+" stopann -s[CAR] teascadh línte de na trí rogha\n"
+" (-COLÚN|-a -COLÚN|-m) ach is lasta an rogha -w\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -STEAGHRÁN, --sep-string[=TEAGHRÁN]\n"
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" dealaigh colúin le TEAGHRÁN,\n"
+" gan -S: is é <TÁB> an deighilteoir réamhshocraithe le -J\n"
+" agus is é <spás> i ngach cás eile (ar comhbhrí le -S\" "
+"\");\n"
+" níl aon éifeacht ar roghanna colúin\n"
+" -t, --omit-header fág na ceanntásca agus na buntásca leathanaigh ar lár\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" fág ceanntásca/buntásca ar lár, ná huimhrigh "
+"leathanaigh le foirmfhothaí leabaithe in inchomhaid\n"
+" -v, --show-nonprinting\n"
+" bain úsáid as cúlslaiseanna don ochtnártha\n"
+" -w LEITHEAD, --width=LEITHEAD\n"
+" leithead an leathanaigh = LEITHEAD (72) carachtar\n"
+" d'aschur ilcholúnach, stopann -s[car] é seo (72)\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W LEITHEAD, --page-width=LEITHEAD\n"
+" leithead an leathanaigh = LEITHEAD carachtar i gcónaí,\n"
+" teasc línte, ach is lasta an rogha -J, níl aon chur "
+"isteach\n"
+" ar na roghanna -S nó -s\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"leanann -T as -l nn nuair atá nn <= 10 (nó nn <= 3 le -F). Mura bhfuil "
+"COMHAD\n"
+"ann, nó más '-' é, léigh ón ionchur caighdeánach.\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Úsáid: %s [ATHRÓG]...\n"
+" nó: %s ROGHA\n"
+"Mura bhfuil ATHRÓG thimpeallachta ann, taispeáin gach ceann acu.\n"
+"\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+"rabhadh: %s: ag déanamh neamhshuim ar charachtair i ndiaidh tairiseach "
+"carachtair"
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Úsáid: %s FORMÁID [ARGÓINT]...\n"
+" nó: %s ROGHA\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+"Taispeáin ARGÓINT(Í) de réir FORMÁID.\n"
+"\n"
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"\n"
+"Rialaíonn FORMÁID an t-aschur mar a dhéanann C printf. Cóid bailí:\n"
+"\n"
+" \\\" comhartha athfhriotal\n"
+" \\0NNN carachtar leis an luach ochtnártha NNN (0..3 digit)\n"
+" \\\\ cúlslais\n"
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+" \\a rabhadh (BEL)\n"
+" \\b cúlspás\n"
+" \\c stop an t-aschur\n"
+" \\f foirmfhotha\n"
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n líne nua\n"
+" \\r athfhilleadh\n"
+" \\t táb cothrománach\n"
+" \\v táb ingearach\n"
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+" \\xNN beart le luach heicsidheachúlach NN (1 nó 2 dhigit)\n"
+" \\uNNNN carachtar Unicode (ISO/IEC 10646) le luach heics NNNN (4 dhigit)\n"
+" \\UNNNNNNNN carachtar Unicode le luach heics NNNNNNNN (8 ndigit)\n"
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+" %% '%' aonair\n"
+" %b ARGÓINT mar theaghrán le carachtair éalúcháin `\\' léirithe,\n"
+" cé go bhfuil éalúcháin ochtnártha i bhfoirm \\0 nó \\0NNN\n"
+"\n"
+"agus tá ceann de [diouxXfeEgGcs] ag deireadh gach sonraíochta formáide C,\n"
+"agus ARGÓINTí churtha ina gceart ar dtús. Glactar le leithid luaineacha.\n"
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: bhíothas ag súil le luach uimhriúil"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: níl an luach tiontaithe ar fad"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "uimhir heicsidheachúlach ar iarraidh sa chód éalúcháin"
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "tá an t-ainm carachtair uilíoch \\%c%0*x neamhbhailí"
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr "leithead líne neamhbhailí: %s"
+
+#: src/printf.c:585
+#, c-format
+msgid "invalid precision: %s"
+msgstr "beachtas neamhbhailí: %s"
+
+#: src/printf.c:612
+#, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%.*s: tiontú neamhbhailí"
+
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "rabhadh: ag déanamh neamhshuim ar argóintí breise, ó %s amach"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr "F. Pinard"
+
+#: src/ptx.c:422
+#, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (ar regexp %s)"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Úsáid: %s [ROGHA]... [IONCHUR]... (gan -G)\n"
+" nó: %s -G [ROGHA]... [IONCHUR [ASCHUR]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"Cuir as innéacs iomalartaithe, le comhthéacs, de na focail sna hinchomhaid.\n"
+"\n"
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference cruthaigh tagairtí go huathoibríoch\n"
+" -G, --traditional oibrigh ar nós `ptx' System V\n"
+" -F, --flag-truncation=TGHRÁN úsáid TGHRÁN chun línte teasctha a léiriú\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=STRING úsáid an macra STRING in ionad `xx'\n"
+" -O, --format=roff táirg an t-aschur i riocht treoracha `roff'\n"
+" -R, --right-side-refs cuir tagairtí ar dheis; ní chuirtear seo i -"
+"w\n"
+" -S, --sentence-regexp=REGEXP foircinn línte ní foircinn abairtí\n"
+" -T, --format=tex táirg an t-aschur i riocht treoracha `TeX'\n"
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=REGEXP úsáid REGEXP chun treoirfhocail a thógáil\n"
+" -b, --break-file=COMHAD tá carachtair le briseadh focail i gCOMHAD\n"
+" -f, --ignore-case sórtáil litreacha beaga le ceannlitreacha\n"
+" -g, --gap-size=UIMHIR bearna idir colúin san aschur\n"
+" -i, --ignore-file=COMHAD tá focail le ligean tharat i gCOMHAD\n"
+" -o, --only-file=COMHAD tá liosta treoirfhocal i gCOMHAD\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references is tagairt é an chéad réimse ar gach líne\n"
+" -t, --typeset-mode - neamhchríochnaithe -\n"
+" -w, --width=UIMHIR leithead an aschuir, gan tagairt\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"Mura bhfuil COMHAD ann, nó más '-' é,\n"
+"léigh ón ionchur caighdeánach. `-F /' mar réamhshocrú.\n"
+
+#: src/ptx.c:2016
+#, c-format
+msgid "invalid gap width: %s"
+msgstr "leithead neamhbhailí bearna: %s"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr "tá an rogha --copyright dulta i léig; bain úsáid as --version ina háit"
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+"Taispeáin an t-ainm iomlán den chomhadlann oibre.\n"
+"\n"
+
+#: src/pwd.c:160
+#, c-format
+msgid "failed to chdir to %s"
+msgstr "theip ar chdir go dtí an chomhadlann %s"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, c-format
+msgid "failed to stat %s"
+msgstr "theip ar stat %s"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr "níorbh fhéidir iontráil chomhadlainne i %s le i-nód comhoiriúnach"
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "ag déanamh neamhshuim ar argóintí nach roghanna iad"
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Úsáid: %s [ROGHA]... COMHAD\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+"Taispeáin luach de nasc siombalach ar aschur caighdeánach.\n"
+"\n"
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+" -f, --canonicalize caighdeánaigh trí leanúint gach nasc "
+"siombalach\n"
+" i ngach ball den chonair, go hathchúrsach;\n"
+" ní mór gach comhpháirt (seachas an ceann\n"
+" deiridh) a bheith ann\n"
+" -e, --canonicalize-existing caighdeánaigh trí leanúint gach nasc "
+"siombalach\n"
+" i ngach ball den chonair, go hathchúrsach;\n"
+" ní mór gach comhpháirt a bheith ann\n"
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+" -m, --canonicalize-missing caighdeánaigh trí leanúint gach nasc "
+"siombalach\n"
+" i ngach ball den chonair, go hathchúrsach;\n"
+" ceadaítear comhpháirteanna ar iarraidh\n"
+" -n, --no-newline ná scríobh an líne nua fhoirceanta\n"
+" -q, --quiet,\n"
+" -s, --silent múch formhór na n-earráidí\n"
+" -v, --verbose taispeáin earráidí\n"
+
+#: src/remove.c:481 src/remove.c:525
+#, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "MARFACH: theip ar chomhadlann %s a dhúnadh"
+
+#: src/remove.c:494
+#, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "MARFACH: ní féidir `..' a oscailt ó %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+"MARFACH: ní féidir deimhniú go bhfuil %s (áit a bhfilleadh uirthi trí ..) "
+"slán"
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "MARFACH: d'athraigh comhadlann %s dev/ino"
+
+#: src/remove.c:631
+#, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "MARFACH: ní féidir dul isteach i gcomhadlann %s"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+"MARFACH: d'athraigh dev/ino na comhadlainne a bhfuil tú tar éis dul inti (%s)"
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"RABHADH: struchtúr comhadlainne ciorclach.\n"
+"Is cinnte, mar an gcéanna, go bhfuil córas comhaid truaillithe agatsa.\n"
+"CUIR AN FHADHB SEO IN IÚL DO RIARTHÓIR DO CHÓRAIS.\n"
+"Tá an chomhadlann a leanas cuid den struchtúr ciorclach:\n"
+" %s\n"
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s: téigh síos isteach i gcomhadlann scríobh-bhactha %s? "
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s: téigh síos isteach i gcomhadlann %s? "
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: scrios %s scríobh-bhactha %s? "
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: scrios %s %s? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "scriosadh comhadlann %s\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, c-format
+msgid "failed to close directory %s"
+msgstr "theip ar dhúnadh comhadlann %s"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr "ag gabháil thar %s, de bhrí go bhfuil sé ar ghléas difriúil"
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "ní féidir comhadlann %s a scriosadh"
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "MARFACH: ní féidir dul ar ais go .. ó %s"
+
+#: src/remove.c:1504
+#, c-format
+msgid "cannot remove root directory %s"
+msgstr "ní féidir fréamhchomhadlann %s a scriosadh"
+
+#: src/remove.c:1544
+#, c-format
+msgid "cannot remove relative-named %s"
+msgstr "ní féidir gaol darbh ainm %s a bhaint"
+
+#: src/remove.c:1558
+#, c-format
+msgid "cannot restore current working directory"
+msgstr "ní féidir an chomhadlann reatha a athchóiriú"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr "Bain triail as `%s ./%s' chun an comhad %s a bhaint.\n"
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Úsáid: %s [ROGHA]... COMHAD...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+"Bain (dínasc) an COMHAD/na COMHAID.\n"
+"\n"
+" -f, --force déan neamhshuim ar chomhaid nach bhfuil ann, agus\n"
+" ná tabhair leid riamh\n"
+" -i tabhair leid sula mbainfear aon rud\n"
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+" -I tabhair leid uair amháin sula mbainfear níos mó ná\n"
+" trí chomhad, nó nuair a bhainfear go hathchúrsach.\n"
+" Níl sé seo chomh sáiteach le -i, cé go ndéanann sé\n"
+" cosaint shásúil ar an chuid is mó de bhotúin\n"
+" --interactive[=CATHAIN] tabhair leid de réir CATHAIN: never, once (-"
+"I), nó\n"
+" always (-i). Gan CATHAIN, tabhair leid i gcónaí\n"
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+" --one-file-system nuair atá comhadlanna á mbaint go hathchúrsach,\n"
+" ná bain comhadlanna atá ar chóras comhad nach\n"
+" ionann leis an gceann a sonraíodh in argóint ar\n"
+" líne na n-orduithe\n"
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --no-preserve-root ná tabhair cóir speisialta do `/'\n"
+" --preserve-root ná bain `/' (réamhshocrú)\n"
+" -r, -R, --recursive bain comhadlanna agus a n-inneachar go hathchúrsach\n"
+" -v, --verbose mínigh na rudaí atá ag tarlú\n"
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+"\n"
+"De réir réamhshocraithe, ní bhaineann rm comhadlanna. Úsáid an rogha\n"
+"--recursive (-r nó -R) chun na comhadlanna uile a bhaint freisin, in "
+"éineacht\n"
+"le gach rud atá isteach iontu.\n"
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"Le scrios a dhéanamh ar chomhad le hainm le `-' ar tosach (m.sh. `-foo')\n"
+"bain triail as ceann de na horduithe a leanas:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"Tabhair faoi deara gur féidir na hábhair a fháil ar ais ó chomhad a bhí\n"
+"scriosta le `rm'. Más mian leat na hábhair a scriosadh níos cinnte,\n"
+"bain úsáid as `shred'.\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr "%s: bain gach argóint go hathchúrsach? "
+
+#: src/rm.c:366
+#, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: bain gach argóint? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "comhadlann %s á baint"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Úsáid: %s [ROGHA]... COMHADLANN...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"Scrios an CHOMHADLANN/na COMHADLANNA, má tá sí/siad folamh.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ná tuairiscigh cliseadh mar gheall ar chomhadlanna nach\n"
+" folamh\n"
+
+#: src/rmdir.c:148
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents scrios COMHADLANN, agus ansin a thuismitheoirí\n"
+" mar shampla, tá `rmdir -p a/b/c' ar comhbhrí le\n"
+" `rmdir a/b/c a/b a'.\n"
+" -v, --verbose taispeáin diagnóisic do gach comhadlann phróiseáilte\n"
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Úsáid: %s [ROGHA]... DEIREADH\n"
+" nó: %s [ROGHA]... AONÚ DEIREADH\n"
+" nó: %s [ROGHA]... AONÚ INCRIMINT DEIREADH\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"Taispeáin uimhreacha ón AONÚ go dtí an DEIREADH, i gcéimeanna INCRIMINT.\n"
+"\n"
+" -f, --format=FORMÁID FORMÁID shnámhphointe cosúil le printf\n"
+" -s, --separator=TEAGHRÁN dealaigh uimhreacha le TEAGHRÁN (réamhshocrú: "
+"\\n)\n"
+" -w, --equal-width cothromaigh leithead le nialais tosaigh\n"
+
+#: src/seq.c:88
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"\n"
+"Mura bhfuil AONÚ nó INCRIMINT tugtha, tá siad réamhshocraithe go 1. Is "
+"ionann\n"
+"sin agus a rá go réamhshocraítear INCRIMINT go 1, fiú amháin má tá DEIREADH\n"
+"níos lú ná AONÚ. Caitear le AONÚ, INCRIMINT, agus DEIREADH mar luachanna\n"
+"snámhphointe. Tá INCRIMINT deimhneach de ghnáth má tá AONÚ níos lú ná\n"
+"DEIREADH, agus tá INCRIMINT diúltach de ghnáth má tá AONÚ níos mó ná "
+"DEIREADH.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+"Ní mór do FORMÁID a bheith oiriúnach chun argóint amháin den chineál "
+"`double'\n"
+"a phriontáil; is é %.BCHTf an luach réamhshocraithe más uimhreacha\n"
+"deachúlacha pointe fosaithe iad AONÚ, INCRIMINT, agus DEIREADH le\n"
+"huasbheachtas BCHT, agus is é %g i ngach cás eile.\n"
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "argóint neamhbhailí shnámhphointe: %s"
+
+#: src/seq.c:342
+#, c-format
+msgid "invalid format string: %s"
+msgstr "teaghrán neamhbhailí formáide: %s"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr ""
+"ní cheadaítear teaghrán formáide agus teaghráin ar comhfhad á dtaispeáint"
+
+#: src/setuidgid.c:51
+#, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Úsáid: %s ÚSÁIDEOIR ORDÚ [ARGÓINT]...\n"
+" nó: %s ROGHA\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+"Tréig aon ghrúpa forlíontach, glac leis an ID úsáideora/grúpa den ÚSÁIDEOIR\n"
+"tugtha, agus rith ORDÚ le ARGÓINTí, má tá ann.\n"
+"Scoir le stádas scortha 111 mura bhfuiltear in ann an UID/GID a ghlacadh.\n"
+"I ngach cás eile, scoir leis an stádas scortha den ORDÚ.\n"
+"Ní úsáideach an clár seo mura bhfuil sé rite ag an fhorúsáideoir (UID=0).\n"
+"\n"
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr "ID úsáideora anaithnid: %s"
+
+#: src/setuidgid.c:109
+#, c-format
+msgid "cannot set supplemental group"
+msgstr "ní féidir an grúpa forlíontach a shocrú"
+
+#: src/setuidgid.c:114
+#, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "ní féidir ID grúpa a shocrú mar %lu"
+
+#: src/setuidgid.c:118
+#, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "ní féidir ID úsáideora a shocrú mar %lu"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Úsáid: %s [ROGHANNA] COMHAD [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"Forscríobh an COMHA(I)D arís agus arís eile chun go bhfuil sé níos\n"
+"deacra na sonraí a fháil ar ais, fiú le crua-earraí an-chostasacha.\n"
+"\n"
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force más gá, athraigh ceadanna chun scríobh a cheadú\n"
+" -n, --iterations=N Forscríobh N uaire in ionad an réamhshocraithe (%d)\n"
+" --random-source=COMHAD faigh bearta randamacha as COMHAD "
+"(réamhshocrú: /dev/urandom)\n"
+" -s, --size=N léirscrios N beart (glactar le hiarmhíreanna mar K, M, G)\n"
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove teasc agus scrios comhad i ndiaidh forscríobh\n"
+" -v, --verbose taispeáin eolas faoin dul chun cinn\n"
+" -x, --exact ná slánaigh méideanna comhaid suas;\n"
+" is réamhshocraithe é seo le haghaidh comhad neamhghnách\n"
+" -z, --zero forscríobh deireanach le nialais, folaigh an léirscrios\n"
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"Más '-' é COMHAD, léirscrios an t-aschur caighdeánach.\n"
+"\n"
+"Scrios COMHA(I)D má tá --remove (-u) ceaptha. De réir an réamhshocraithe, "
+"ná\n"
+"scrios na comhaid de bhrí go mbaintear le comhaid ghléis mar /dev/hda\n"
+"go coitianta, agus ní ceart na comhaid seo a scriosadh. Baintear úsáid as\n"
+"an rogha --remove go hiondúil le gnáthchomhaid.\n"
+"\n"
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"FAINIC: Braitheann `shred' ar ghlacadh tromchúiseach:\n"
+"go ndéanann an córas comhaid forscríobh ar shonraí ina n-ionad.\n"
+"Is é sin an sean-nós, ach níl an glacadh seo bailí ar mhórán córais\n"
+"nua-aimseartha. Níl `shred' cumasach, nó níl ráthaíocht ar bith go mbeidh\n"
+"sé cumasach i ngach mód ar na córais a leanas:\n"
+"\n"
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"* córais chomhaid atá bunaithe ar log nó dialann, mar shampla le\n"
+" AIX agus Solaris (agus JFS, ReiserFS, XFS, Ext3, srl.)\n"
+"\n"
+"* córais chomhaid a scríobh sonraí iomarcacha agus a leanann fiú má "
+"theipeann\n"
+" cuid den scríobh, mar shampla chórais bunaithe ar RAID\n"
+"\n"
+"* córais a dhéanann `grianghraif', mar shampla an freastalaí NFS atá ag "
+"Network Appliances\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+"* córais chomhad a chuireann sonraí i dtaisce i suímh shealadacha,\n"
+"mar shampla cliaint NFS leagan 3\n"
+"\n"
+"* córais chomhad comhbhrúite\n"
+"\n"
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+"Má tá córas comhad ext3 agat, tá an séanadh thuasluaite i bhfeidhm\n"
+"(.i. is neamhéifeachtach é `shred') sa mhód data=journal amháin - \n"
+"seo é an mód a scríobhann sonraí comhaid mar aon le meiteashonraí.\n"
+"Sna móid data=ordered (réamhshocrú) agus data=writeback, oibríonn `shred'\n"
+"mar is gnách. Is féidir na móid iriseáin Ext3 a athrú trí chur na rogha\n"
+"data=something leis na roghanna feistithe sa chomhad /etc/fstab do\n"
+"chórais chomhad áirithe, mar a thuairiscítear sa leathanach lámhleabhair\n"
+"mount (`man mount').\n"
+"\n"
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+"Is féidir freisin go bhfuil cóipeanna den chomhad i gcúltacaí an chórais\n"
+"comhad nó ar shuímh scáthánaithe, agus ní féidir na cóipeanna seo a bhaint.\n"
+"Dá bharr seo, b'fhéidir comhad léirscriosta a fháil ar ais amach anseo.\n"
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr "%s: theip ar fdatasync"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr "%s: theip ar fsync"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s: ní féidir atochras"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: timthriall %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s: earráid le linn scríobh ag fritháireamh %s"
+
+#: src/shred.c:478
+#, c-format
+msgid "%s: lseek failed"
+msgstr "%s: theip ar lseek"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s: tá an comhad rómhór"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: timthriall %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: timthriall %lu/%lu (%s)...%s/%s %d%%"
+
+#: src/shred.c:776
+#, c-format
+msgid "%s: fstat failed"
+msgstr "%s: theip ar fstat"
+
+# in FARF -KPS
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: cineál comhaid neamhbhailí"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: comhad de mhéid diúltach"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s: earráid le linn teasctha"
+
+#: src/shred.c:889
+#, c-format
+msgid "%s: fcntl failed"
+msgstr "%s: theip ar fcntl"
+
+# file descriptor in FARF -KPS
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s: ní féidir tuarascálaí comhaid sínte amháin a léirscriosadh"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: á scriosadh"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: ainm nua %s"
+
+#: src/shred.c:1018
+#, c-format
+msgid "%s: failed to remove"
+msgstr "%s: theip ar bhaint"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: scriosta"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, c-format
+msgid "%s: failed to close"
+msgstr "%s: theip ar dhúnadh"
+
+#: src/shred.c:1065
+#, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: theip ar oscailt chun é a scríobh"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: líon na dtimthriallta neamhbhailí"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, c-format
+msgid "multiple random sources specified"
+msgstr "sonraíodh foinsí iomadúla randamacha"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: méid comhaid neamhbhailí"
+
+#: src/shuf.c:51
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Úsáid: %s [ROGHA]... [COMHAD]\n"
+" nó: %s -e [ROGHA]... [ARG]...\n"
+" nó: %s -i ÍSEAL-ARD [ROGHA]...\n"
+
+#: src/shuf.c:57
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"Scríobh iomalartú randamach de na línte ionchurtha go dtí an t-aschur\n"
+"caighdeánach.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -e, --echo caith le gach ARG mar líne ionchurtha\n"
+" -i, --input-range=LO-HI caith le huimhreacha idir LO agus HI mar línte "
+"ionchurtha\n"
+" -n, --head-lines=UIMHIR aschuir UIMHIR líne ar a mhéad\n"
+" -o, --output=COMHAD scríobh torthaí i gCOMHAD in ionad stdout\n"
+" --random-source=COMHAD faigh bearta randamacha as COMHAD\n"
+" (réamhshocrú /dev/urandom)\n"
+" -z, --zero-terminated cuir beart nialasach ag deireadh na línte,\n"
+" in ionad líne nua\n"
+
+#: src/shuf.c:287
+#, c-format
+msgid "multiple -i options specified"
+msgstr "sonraíodh roghanna -i iomadúla"
+
+#: src/shuf.c:307
+#, c-format
+msgid "invalid input range %s"
+msgstr "raon neamhbhailí ionchurtha: %s"
+
+#: src/shuf.c:320
+#, c-format
+msgid "invalid line count %s"
+msgstr "líon neamhbhailí línte %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr "aschomhaid iomadúla"
+
+#: src/shuf.c:353
+#, c-format
+msgid "cannot combine -e and -i options"
+msgstr "ní féidir roghanna -e agus -i a chumasc"
+
+#: src/shuf.c:362
+#, c-format
+msgid "extra operand %s\n"
+msgstr "oibreann breise %s\n"
+
+#: src/sleep.c:47
+#, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Úsáid: %s UIMHIR[IARMHÍR]...\n"
+" nó: %s ROGHA\n"
+"Déan moill de UIMHIR soicind. Is féidir `s' a úsáid mar IARMHÍR\n"
+"(soicindí - an réamhshocrú), `m'=nóiméid, `h'=uaire, agus `d'=laethanta.\n"
+"Cé go dteastaíonn an chuid is mó de chórais UIMHIR a bheith ina slánuimhir,\n"
+"is féidir aon uimhir shnámhphointe a úsáid anseo le haghaidh UIMHIR.\n"
+"Má tá níos mó ná argóint amháin ann, suimigh na hargóintí agus déan moill\n"
+"den luach iomlán.\n"
+"\n"
+
+#: src/sleep.c:138
+#, c-format
+msgid "invalid time interval %s"
+msgstr "tréimhse neamhbhailí %s"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "ní féidir an clog fhíor-ama a léamh"
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"Scríobh gach COMHAD, comhchaitéinithe agus sórtáilte, go haschur "
+"caighdeánach.\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+"Roghanna sórtála:\n"
+"\n"
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks déan neamhshuim ar spásanna tosaigh\n"
+" -d, --dictionary-order ná húsáid ach spásanna agus carachtair alfa-"
+"uimhriúla\n"
+" -f, --ignore-case measc litreacha beaga is ceannlitreacha le "
+"chéile\n"
+
+#: src/sort.c:326
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort sórtáil de réir luach uimhriúil ginearálta\n"
+" -i, --ignore-nonprinting ná caith ach le carachtair ghrafacha\n"
+" -M, --month-sort sórtáil (anaithnid) < `EAN' < ... < `NOL'\n"
+" -n, --numeric-sort sórtáil de réir luach uimhriúil na dteaghrán\n"
+" -R, --random-sort sórtáil de réir hais randamach de na "
+"heochracha\n"
+" --random-source=COMHAD faigh bearta randamacha as COMHAD "
+"(réamhshocrú:\n"
+" /dev/urandom)\n"
+" -r, --reverse sórtáil bun os cionn\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+"Roghanna eile:\n"
+"\n"
+" -c, --check, --check=diagnose-first ná sórtáil; deimhnigh an bhfuil an\n"
+" an t-ionchur sórtáilte\n"
+" -C, --check=quiet, --check=silent cosúil le -c, ach ná déan tuairisc ar\n"
+" an chéad drochlíne\n"
+" -k, --key=ÁIT1[,ÁIT2] tosaigh eochair ag ÁIT1, deireadh ag ÁIT2 "
+"(tús=1)\n"
+" -m, --merge cumaisc comhaid atá sórtáilte cheana; ná "
+"sórtáil\n"
+
+#: src/sort.c:346
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+" -o, --output=COMHAD scríobh na torthaí i gCOMHAD in ionad aschur "
+"caighdeánach\n"
+" -s, --stable caighdeánaigh an t-ord trí dhíchumasú na\n"
+" sórtála den rogha dheireanach\n"
+" -S, --buffer-size=MÉID maolán príomhchuimhne = MÉID\n"
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=CAR úsáid CAR in ionad athrú ó neamh- go spás bán\n"
+" -T, --temporary-directory=COMHADLANN cuir comhaid shealadacha i "
+"gCOMHADLANN\n"
+" in ionad $TMPDIR nó %s; comharthaíonn gach "
+"rogha\n"
+" comhadlann ar leith\n"
+" -u, --unique le -c, deimhnigh sórtáil gan dúblaigh;\n"
+" gan -c, ná taispeáin ach línte uathúla\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr " -z, --zero-terminated úsáid NUL foirceanta in ionad líne nua\n"
+
+#: src/sort.c:363
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"ÁIT = R[.C][ROGHANNA], le R = uimhir an réimse agus C = ionad an "
+"charachtair\n"
+"sa réimse; áirigh ó 1 i ngach cás. Mura bhfuil rogha -t ná rogha -b i "
+"bhfeidhm,\n"
+"uimhrigh na carachtair i réimse ó thús an spáis báin roimhe. Is éard atá i\n"
+"ROGHANNA ná liosta de roghanna sórtála, gach ceann ina charachtar singil, a\n"
+"sháraíonn roghanna comhchoiteanna sórtála don eochair sin. Gan eochair, "
+"úsáid\n"
+"an líne iomlán mar an eochair.\n"
+"\n"
+"Is féidir na hiarmhíreanna seo a leanas a chur i ndiaidh MÉID:\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"% 1% den chuimhne, b 1, K 1024 (réamhshocrú), srl. le M, G, T, P, E, Z, Y.\n"
+"\n"
+"Mura bhfuil COMHAD ann, nó más '-' é, léigh ón ionchur caighdeánach.\n"
+"\n"
+"*** RABHADH ***\n"
+"Athraíonn an logchaighdeán na torthaí a ghineann `sort'.\n"
+"Cuir LC_ALL=C chun sórtáil de réir an oird traidisiúnta\n"
+"(.i. de réir luachanna dúchasacha de na bearta.\n"
+
+#: src/sort.c:538
+#, c-format
+msgid "waiting for %s [-d]"
+msgstr "ag feitheamh le %s [-d]"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr "Chríochnaigh %s [-d] gan an chúis a mhíniú"
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "ní féidir comhad sealadach a chruthú"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "theip ar oscailt"
+
+#: src/sort.c:758
+msgid "fflush failed"
+msgstr "theip ar fflush"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "theip ar dhúnadh"
+
+#: src/sort.c:772
+#, c-format
+msgid "dup2 failed"
+msgstr "theip ar dup2"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr "níorbh fhéidir %s a rith"
+
+#: src/sort.c:880 src/sort.c:929
+msgid "couldn't create temporary file"
+msgstr "níorbh fhéidir comhad sealadach a chruthú"
+
+#: src/sort.c:903
+msgid "couldn't open temporary file"
+msgstr "níorbh fhéidir comhad sealadach a oscailt"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr "níorbh fhéidir %s -d a rith"
+
+#: src/sort.c:924
+#, c-format
+msgid "couldn't create process for %s -d"
+msgstr "níorbh fhéidir próiseas a chruthú le haghaidh %s -d"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "theip ar scríobh"
+
+#: src/sort.c:975
+#, c-format
+msgid "warning: cannot remove: %s"
+msgstr "rabhadh: ní féidir %s a scriosadh"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "méid na sórtála"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "stat() teipthe"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "theip ar léamh"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: mí-eagar: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "earráid chaighdeánach"
+
+#: src/sort.c:2562
+#, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: sonraíocht neamhbhailí réimse %s"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr "níl na roghanna `-%s' comhoiriúnach"
+
+#: src/sort.c:2637
+#, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: áireamh neamhbhailí ag tús %s"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "uimhir neamhbhailí i ndiaidh `-'"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "uimhir neamhbhailí i ndiaidh `.'"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "carachtar ar seachrán i sonrú réimse"
+
+#: src/sort.c:2934
+#, c-format
+msgid "multiple compress programs specified"
+msgstr "sonraíodh cláir iomadúla chomhbhrúite"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "uimhir neamhbhailí ag tús réimse"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "is nialas an uimhir réimse"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "is nialas an fritháireamh carachtair"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "uimhir neamhbhailí i ndiaidh `,'"
+
+#: src/sort.c:3142
+#, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "ní cheadaítear oibreann breise %s le -%c"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Úsáid: %s [ROGHA] [IONCHUR [RÉIMÍR]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"Scríobh píosaí de mhéid sheasta ó IONCHUR chuig RÉIMÍRaa, RÉIMÍRab, ...;\n"
+"Méid réamhshocraithe = 1000 líne, agus an RÉIMÍR réamhshocraithe = `x'.\n"
+"Mura bhfuil IONCHUR ann, nó más `-' é, léigh ón ionchur caighdeánach.\n"
+"\n"
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=N fad na hiarmhíreanna = N (réamhshocrú %d)\n"
+" -b, --bytes=MÉID cuir MÉID beart do gach aschomhad\n"
+" -C, --line-bytes=MÉID cuir MÉID beart línte ar a mhéad do gach "
+"aschomhad\n"
+" -d, --numeric-suffixes úsáid iarmhíreanna uimhriúla in ionad aibítreacha\n"
+" -l, --lines=UIMHIR cuir UIMHIR líne do gach aschomhad\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose scríobh diagnóisic go hearráid chaighdeánach\n"
+" go díreach roimh atá gach aschomhad oscailte\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"Is féidir iarmhír a chur le MÉID: b=512, k=1K, m=1 Meig.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "Iarmhíreanna don aschomhad ídithe"
+
+#: src/split.c:211
+#, c-format
+msgid "creating file %s\n"
+msgstr "comhad %s á chruthú\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "ní féidir scoilt a dhéanamh de réir níos mó ná dóigh amháin"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: fad iarmhíre neamhbhailí"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: líon neamhbhailí na mbeart"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: líon na línte neamhbhailí"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "is rómhór an rogha -%s%c... don áireamh línte"
+
+#: src/split.c:518
+#, c-format
+msgid "invalid number of lines: 0"
+msgstr "líon na línte neamhbhailí: 0"
+
+#: src/stat.c:636
+#, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "rabhadh: éalúchán anaithnid `\\%c'"
+
+#: src/stat.c:680
+#, c-format
+msgid "%s: invalid directive"
+msgstr "%s: treoir neamhbhailí"
+
+#: src/stat.c:726
+#, c-format
+msgid "warning: backslash at end of format"
+msgstr "rabhadh: cúlslais ag deireadh na formáide"
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr "ní féidir an t-eolas faoin chóras comhaid a léamh do %s"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Úsáid: %s [ROGHA] COMHAD...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+"Taispeáin stádas de chomhad nó de chóras comhaid.\n"
+"\n"
+" -L, --dereference lean naisc\n"
+" -f, --file-system taispeáin stádas de chóras in ionad comhaid\n"
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+" -c --format=FORMÁID úsáid FORMÁID in ionad an réamhshocraithe;\n"
+" scríobh líne nua tar éis gach úsáid de FORMÁID\n"
+" --printf=FORMÁID cosúil le --format, ach léirmhínigh éalúcháin le\n"
+" cúlslaiseanna, agus ná scríobh an líne nua.\n"
+" Má tá línte nua uait, cuir \\n i bhFORMÁID.\n"
+" -t, --terse taispeáin an t-eolas i bhfoirm ghonta\n"
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"\n"
+"Cóid bhailí fhormáide do chomhaid (gan --file-system):\n"
+"\n"
+" %a cearta rochtana, ochtnártha\n"
+" %A cearta rochtana i bhformáid inléite\n"
+" %b líon na mbloc dáilte (féach ar %B)\n"
+" %B an mhéid, i mbearta, de gach bloc tugtha ag %b\n"
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+" %d Uimhir ghléis, deachúil\n"
+" %D Uimhir ghléis, heicsidheachúlach\n"
+" %f mód amh, heicsidheachúlach\n"
+" %F Cineál comhaid\n"
+" %g Aitheantas ghrúpa den úinéir\n"
+" %G Ainm grúpa den úinéir\n"
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+" %h Líon na nasc crua\n"
+" %i Uimhir inode\n"
+" %n Ainm comhaid\n"
+" %N Ainm comhaid in athfhriotal, dí-thagartha más nasc siombalach é\n"
+" %o Méid bhloic I/A\n"
+" %s Méid iomlán, bearta\n"
+" %t Cineál gléis príomha, heicsidheachúlach\n"
+" %T Cineál gléis mion, heicsidheachúlach\n"
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+" %u Aitheantas an úinéara\n"
+" %U Ainm an úinéara\n"
+" %x Am den rochtain is déanaí\n"
+" %X Am den rochtain is déanaí, soicindí ón tSainré\n"
+" %y Am den mhionathrú is déanaí\n"
+" %Y Am den mhionathrú is déanaí, soicindí ón tSainré\n"
+" %z Am den athrú is déanaí\n"
+" %Z Am den athrú is déanaí, soicindí ón tSainré\n"
+"\n"
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"Cóid bhailí formáide do chórais chomhaid:\n"
+"\n"
+" %a Bloic ar fáil do ghnáthúsáideoir\n"
+" %b Bloic sa chóras comhaid, go hiomlán\n"
+" %c Nóid sa chóras comhaid, go hiomlán\n"
+" %d Nóid atá saor\n"
+" %f Bloic ar fáil\n"
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+" %i ID an chórais comhad, heicsidheachúlach\n"
+" %l Uasfhad d'ainmneacha comhaid\n"
+" %n Ainm comhaid\n"
+" %s Méid bloic (le haghaidh aistrithe níos tapa)\n"
+" %S Bunmhéid bloc (le haghaidh áirithe na mbloc)\n"
+" %t Cineál, heicsidheachúlach\n"
+" %T Cineál i bhformáid inléite\n"
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Úsáid: %s [-F GLÉAS] [--file=GLÉAS] [LUACH]...\n"
+" nó: %s [-F GLÉAS] [--file=GLÉAS] [-a|--all]\n"
+" nó: %s [-F GLÉAS] [--file=GLÉAS] [-g|--save]\n"
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Taispeáin nó athraigh na hairíonna den teirminéal.\n"
+"\n"
+" -a, --all taispeáin na hairíonna go léir i gcruth inléite\n"
+" -g, --save taispeáin na hairíonna go léir i gcruth stty-inléite\n"
+" -F, --file=GLÉAS oscail agus bain úsáid as an GLÉAS in ionad stdin\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+"\n"
+"Cuir `-' roghnach roimh LUACH chun diúltú a dhéanamh. Comharthaítear\n"
+"roghanna neamh-POSIX le `*'. Socraíonn an córas féin na roghanna atá ar "
+"fáil.\n"
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"\n"
+"Carachtair speisialta:\n"
+" * dsusp CAR Seolfaidh CAR comhartha chun an teirminéal a stopadh\n"
+" nuair a bheidh an t-ionchur sruthlaithe\n"
+" eof CAR Seolfaidh CAR comhadchríoch (críochnaigh ionchur)\n"
+" eol CAR Críochnóidh CAR an líne\n"
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+" * eol2 CAR CAR eile chun an líne a chríochnú\n"
+" erase CAR léirscriosfaidh CAR an carachtar is déanaí\n"
+" intr CAR seolfaidh CAR comhartha idirbhriste\n"
+" kill CAR léirscriosfaidh CAR an líne reatha\n"
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+" * lnext CAR iontrálfaidh CAR an chéad charachtar luaite eile\n"
+" quit CAR seolfaidh CAR comhartha scortha\n"
+" * rprnt CAR priontálfaidh CAR an líne reatha arís\n"
+" start CAR atosóidh CAR an t-aschur i ndiaidh á stopadh\n"
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+" stop CAR stopfaidh CAR an t-aschur\n"
+" susp CAR seolfaidh CAR comhartha chun an teirminéal a stopadh\n"
+" * swtch CAR athróidh CAR chuig sraith bhlaoisce eile\n"
+" * werase CAR léirscriosfaidh CAR an focal is déanaí\n"
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"\n"
+"Roghanna speisialta:\n"
+" N socraigh an luas ionchurtha/aschurtha a bheith N bád\n"
+" * cols N cuir in iúl go bhfuil N colún ag an teirminéal\n"
+" * columns N ar comhbhrí le `cols N'\n"
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+" ispeed N socraigh an luas ionchurtha a bheith N bád\n"
+" * line N socraigh disciplín líne N\n"
+" min N le -icanon, N=íosmhéid de charachtair in aon léamh\n"
+" ospeed N socraigh an luas aschurtha a bheith N bád\n"
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+" * rows N cuir in iúl go bhfuil N líne ag an teirminéal\n"
+" * size taispeáin líon na línte agus na gcolún de réir na heithne\n"
+" speed taispeáin luas an teirminéil\n"
+" time N le -icanon, socraigh seal fanachta, N deachú soicind\n"
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"\n"
+"Roghanna rialaithe:\n"
+" [-]clocal stop comharthaí a rialaíonn an móideim\n"
+" [-]cread cumasaigh ionchur\n"
+" * [-]crtscts cuir croitheadh láimhe RTS/CTS ar siúl\n"
+" csN socraigh an mhéid carachtair, N giotán, N=5,6,7, nó 8\n"
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+" [-]cstopb dhá ghiotán stoptha an charachtair (1 le `-')\n"
+" [-]hup seol comhartha HUP nuair a dhúnann an tty\n"
+" [-]hupcl ar comhbhrí le [-]hup\n"
+" [-]parenb gin giotán paireachta san aschur agus iarr é san ionchur\n"
+" [-]parodd socraigh paireacht chorr (cothrom le `-')\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"\n"
+"Roghanna ionchurtha:\n"
+" [-]brkint seol comhartha idirbhriste i ndiaidh briseadh\n"
+" [-]icrnl tiontaigh aisfhilleadh go líne nua\n"
+" [-]ignbrk déan neamhshuim ar charachtair bhriste\n"
+" [-]igncr déan neamhshuim ar aisfhilleadh\n"
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+" [-]ignpar déan neamhshuim ar charachtair le hearráidí phaireachta\n"
+" * [-]imaxbel bíp agus ná sruthlaigh maolán lán ionchurtha\n"
+" [-]inlcr tiontaigh líne nua go haisfhilleadh\n"
+" [-]inpck cuir seiceáil phaireachta den ionchur ar siúl\n"
+" [-]istrip glan an t-ochtú giotán de gach carachtar ionchurtha\n"
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr " * [-]iutf8 glac le carachtair san ionchódú UTF-8\n"
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+" * [-]iuclc tiontaigh ceannlitreacha go litreacha beaga\n"
+" * [-]ixany ceadaigh atosú le haon charachtar\n"
+" [-]ixoff cumasaigh seoladh de charachtair thosaigh/stoptha\n"
+" [-]ixon cumasaigh rialú sreafa XON/XOFF\n"
+" [-]parmrk comharthaigh earráidí phaireachta (le cód 255-0-carachtar)\n"
+" [-]tandem ar comhbhrí le [-]ixoff\n"
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"\n"
+"Roghanna aschuir:\n"
+" * bsN mód moille do chúlspásanna, N=0 nó 1\n"
+" * crN mód moille d'aisfhilleadh, N=0,1,2, nó 3\n"
+" * ffN mód moille d'fhoirmfhotha, N=0 nó 1\n"
+" * nlN mód moille do línte nua, N=0 nó 1\n"
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+" * [-]ocrnl tiontaigh aisfhilleadh go líne nua\n"
+" * [-]ofdel stuáil le scrioscharachtair in ionad carachtair nialasacha\n"
+" * [-]ofill stuáil le carachtair in ionad am-áireamh i gcás moille\n"
+" * [-]olcuc tiontaigh litreacha beaga go ceannlitreacha\n"
+" * [-]onlcr tiontaigh líne nua go haisfhilleadh+líne nua\n"
+" * [-]onlret déan líne nua aisfhilleadh\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+" * [-]onocr ná taispeáin aisfhilleadh sa chéad cholún\n"
+" [-]opost iarphróiseáil an t-aschur\n"
+" * tabN mód moille do tháib chothrománacha, N=0,1,2, nó 3\n"
+" * tabs ar comhbhrí le tab0\n"
+" * -tabs ar comhbhrí le tab3\n"
+" * vtN mód moille do tháib ingearacha, N=0 nó 1\n"
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"\n"
+"Roghanna logánta:\n"
+" [-]crterase déan macalla de charachtair léirscriosta mar\n"
+" cúlspás+spás+cúlspás\n"
+" * crtkill scrios gach líne trí ghéilleadh do na roghanna echoprt/"
+"echoe\n"
+" * -crtkill scrios gach líne trí ghéilleadh do na roghanna echoctl/"
+"echok\n"
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+" * [-]ctlecho déan macalla de charachtair rialúcháin mar `^c', srl.\n"
+" [-]echo déan macalla de gach carachtar ionchurtha\n"
+" * [-]echoctl ar comhbhrí le [-]ctlecho\n"
+" [-]echoe ar comhbhrí le [-]crterase\n"
+" [-]echok déan macalla de líne nua i ndiaidh carachtair maraithe\n"
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+" * [-]echoke ar comhbhrí le [-]crtkill\n"
+" [-]echonl déan macalla de líne nua, fiú mura carachtair eile\n"
+" * [-]echoprt déan macalla de charachtair léirscriosta ar gcúl,\n"
+" idir `\\' agus `/'\n"
+" [-]icanon cumasaigh carachtair speisialta erase,kill,werase,agus "
+"rprnt\n"
+" [-]iexten cumasaigh carachtair speisialta neamh-POSIX\n"
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+" [-]isig cumasaigh interrupt, quit, agus cuir carachtair\n"
+" speisialta ar fionraí\n"
+" [-]noflsh stop sruthlú i ndiaidh carachtair speisialta interrupt/"
+"quit\n"
+" * [-]prterase ar comhbhrí le [-]echoprt\n"
+" * [-]tostop stop tascanna sa chúlra atá scríobh chuig an teirminéal\n"
+" * [-]xcase le icanon, éalúchán le `\\' do charachtair ceannlitreacha\n"
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+"\n"
+"Roghanna measctha:\n"
+" * [-]LCASE ar comhbhrí le [-]lcase\n"
+" cbreak ar comhbhrí le -icanon\n"
+" -cbreak ar comhbhrí le icanon\n"
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+" cooked ar comhbhrí le brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof agus eol ag glacadh a luachanna "
+"réamhshocraithe\n"
+" -cooked ar comhbhrí le `raw'\n"
+" crt ar comhbhrí le echoe echoctl echoke\n"
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+" dec ar comhbhrí le echoe echoctl echoke -ixany intr ^c erase\n"
+" 0177 kill ^u\n"
+" * [-]decctlq ar comhbhrí le [-]ixany\n"
+" ek glac carachtair scriosta/maraithe a luachanna "
+"réamhshocraithe\n"
+" evenp ar comhbhrí le parenb -parodd cs7\n"
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+" -evenp ar comhbhrí le -parenb cs8\n"
+" * [-]lcase ar comhbhrí le xcase iuclc olcuc\n"
+" litout ar comhbhrí le -parenb -istrip -opost cs8\n"
+" -litout ar comhbhrí le parenb istrip opost cs7\n"
+" nl ar comhbhrí le -icrnl -onlcr\n"
+" -nl ar comhbhrí le icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+" oddp ar comhbhrí le parenb parodd cs7\n"
+" -oddp ar comhbhrí le -parenb cs8\n"
+" [-]parity ar comhbhrí le [-]evenp\n"
+" pass8 ar comhbhrí le -parenb -istrip cs8\n"
+" -pass8 ar comhbhrí le parenb istrip cs7\n"
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+" raw ar comhbhrí le -ignbrk -brkint -ignpar -parmrk -inpck -"
+"istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw ar comhbhrí le `cooked'\n"
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+" sane ar comhbhrí le cread -ignbrk brkint -inlcr -igncr icrnl\n"
+" -iutf8 -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl "
+"onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke,\n"
+" agus glacann carachtair speisialta a luach "
+"réamhshocraithe.\n"
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"Láimhseáil an líne tty atá nasctha leis an ionchur caighdeánach. Gan\n"
+"argóintí, taispeáin ráta bád, disciplín líne, agus claonadh ó stty sane.\n"
+"I roghanna, glactar CAR go litriúil, nó ionchódaithe m.sh. ^c, 0x37, 0177 "
+"nó\n"
+"127; úsáid luachanna ^- nó undef chun carachtair speisialta a stopadh.\n"
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr "ní cheadaítear ach gléas amháin a bheith ceaptha"
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+"is comheisiatach iad na roghanna d'aschur foclach agus\n"
+"d'aschur stty-inléite"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "ní cheadaítear móid a shocrú agus an fhormáid aschurtha a cheapadh"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: ní féidir mód gan bacainní a athshocrú"
+
+#: src/stty.c:885 src/stty.c:995
+#, c-format
+msgid "invalid argument %s"
+msgstr "argóint neamhbhailí %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, c-format
+msgid "missing argument to %s"
+msgstr "tá argóint de dhíth i ndiaidh na rogha %s"
+
+#: src/stty.c:976
+#, c-format
+msgid "invalid line discipline %s"
+msgstr "disciplín neamhbhailí líne %s"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: níorbh fhéidir gach tasc iarrtha a dhéanamh"
+
+# French did this too -KPS
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "new_mode: mode\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: níl aon eolas ar fáil faoin mhéid den ghléas seo"
+
+#: src/stty.c:1888
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "argóint neamhbhailí shlánuimhreach %s"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Focal faire:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: ní féidir /dev/tty a oscailt"
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "ní féidir grúpaí a shocrú"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "ní féidir ID grúpa a shocrú"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "ní féidir ID úsáideora a shocrú"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Úsáid: %s [ROGHA]... [-] [ÚSÁIDEOIR [ARG]...]\n"
+
+#: src/su.c:386
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Athraigh an ID úsáideora/grúpa i bhfeidhm go dtí na cinn atá ag ÚSÁIDEOIR.\n"
+"\n"
+" -, -l, --login bain úsáid as blaosc logála isteach\n"
+" -c, --commmand=ORDÚ seachaid ORDÚ chuig an bhlaosc le -c\n"
+" -f, --fast seachaid -f chuig an bhlaosc (csh nó tcsh)\n"
+" -m, --preserve-environment ná hathshocraigh athróga thimpeallachta\n"
+" -p ar comhbhrí le -m\n"
+" -s, --shell=BLAOSC rith BLAOSC má cheadaíonn /etc/shells é\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+"\n"
+"Úsáidtear -l go huathoibríoch nuair a shonraítear `-' lom.\n"
+"Mura bhfuil ÚSÁIDEOIR ann, glactar le root.\n"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "níl a leithéid d'úsáideoir %s"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "focal faire mícheart"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "ag baint úsáid as blaosc shrianta %s"
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "rabhadh: ní féidir an chomhadlann oibre a athrú go %s"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Taispeáin suim sheiceála agus líon na mbloc in aghaidh gach COMHAD.\n"
+"\n"
+" -r stop -s, úsáid algartam BSD agus bloic 1K\n"
+" -s, --sysv úsáid algartam System V agus bloic 512 beart\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+"Scríobh bloic athraithe chuig an diosca, nuashonraigh an t-osbhloc.\n"
+"\n"
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "ag déanamh neamhshuim ar gach argóint"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+"\n"
+"NÓTA: is féidir go bhfuil leagan eile de %s ag do bhlaosc féin, agus\n"
+"go hiondúil sháródh sé an leagan a ndéantar cur síos air anseo. Féach ar\n"
+"dhoiciméadú do bhlaoisce chun tuilleadh eolais a fháil faoi na roghanna\n"
+"a dtacaíonn sé leo.\n"
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help taispeáin an chabhair seo agus scoir\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version taispeáin eolas faoin leagan agus scoir\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Scríobh gach COMHAD chuig aschur caighdeánach, bun os cionn.\n"
+"Mura bhfuil COMHAD ann, nó más '-' é, léigh ón ionchur caighdeánach.\n"
+"\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before ceangail an deighilteoir roimh in ionad i "
+"ndiaidh\n"
+" -r, --regex caith leis an deighilteoir mar shlonn "
+"ionadaíochta\n"
+" -s, --separator=TEAGHRÁN úsáid TEAGHRÁN mar dheighilteoir in ionad líne "
+"nua\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, c-format
+msgid "%s: seek failed"
+msgstr "%s: níorbh fhéidir `seek' a dhéanamh"
+
+#: src/tac.c:265
+#, c-format
+msgid "record too large"
+msgstr "tá an taifead rómhór"
+
+#: src/tac.c:459
+#, c-format
+msgid "cannot create temporary file %s"
+msgstr "ní féidir comhad sealadach %s a chruthú"
+
+#: src/tac.c:466
+#, c-format
+msgid "cannot open %s for writing"
+msgstr "ní féidir %s a oscailt chun scríobh air"
+
+#: src/tac.c:487 src/tac.c:494
+#, c-format
+msgid "%s: write error"
+msgstr "%s: earráid sa scríobh"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "ní cheadaítear deighilteoir folamh"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Scríobh an %d líne ag an deireadh de gach COMHAD chuig aschur caighdeánach.\n"
+"Má tá níos mó ná COMHAD amháin ann, cuir ceanntásc lena ainm comhaid roimh "
+"gach.\n"
+"Mura bhfuil COMHAD ann, nó más '-' é, léigh ón ionchur caighdeánach.\n"
+"\n"
+
+#: src/tail.c:229
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry lean ar aghaidh déanamh iarracht comhad a "
+"oscailt\n"
+" fiú más dorochtana é nuair a thosaíonn `tail' nó\n"
+" má éiríonn sé dorochtana ina dhiaidh sin; "
+"áisiúil\n"
+" nuair atá tú ag leanúint de réir an ainm, .i. le\n"
+" --follow=name\n"
+" -c, --bytes=N taispeáin an N beart deireanach; nó, úsáid +N "
+"chun\n"
+" bearta a aschur ón Nú beart de gach comhad\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={name|descriptor}]\n"
+" scríobh sonraí ceangailte de réir mar fásann an "
+"comhad;\n"
+" tá -f, --follow, agus --follow=descriptor ar "
+"comhbhrí\n"
+" -F ar comhbhrí le --follow=name --retry\n"
+
+#: src/tail.c:244
+#, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=N scríobh an N líne is déanaí, in ionad an %d líne\n"
+" is déanaí; nó bain úsáid as +N chun línte a\n"
+" scríobh ón Nú\n"
+" --max-unchanged-stats=N\n"
+" le --follow=name, athoscail COMHAD nach n-"
+"athraíonn\n"
+" a mhéid i ndiaidh N (réamhshocrú=%d) timthriall\n"
+" féachaint an raibh sé dínasctha nó athainmnithe\n"
+" (mar shampla do logchomhaid uainíochta go minic)\n"
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID le -f, stop tar éis bháis an phróisis\n"
+" -q, --quiet, --silent ná taispeáin ceanntásca le hainmneacha comhaid\n"
+" -s, --sleep-interval=N le -f, maireann gach timthriall timpeall is N\n"
+" (réamhshocrú 1) soicind\n"
+" -v, --verbose taispeáin ceanntásca le hainmneacha comhaid i "
+"gcónaí\n"
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"Más `+' an chéad charachtar de N (líon na mbeart nó línte),\n"
+"tosaigh ag scríobh ag an Nú beart/líne ón tosach de gach comhad, i ngach "
+"cás\n"
+"eile, scríobh an N beart/líne is déanaí sa chomhad. Is féidir iarmhír a "
+"chur\n"
+"le N: b=512, k=1024, m=1048576 (1 Meig).\n"
+"\n"
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"Le --follow (-f), úsáidfidh tail an tuarascálaí comhaid seo a leanas, agus\n"
+"dá bhrí sin, fiú má athainmnítear an comhad idir lámha, leanfaidh tail\n"
+"ag próiseáil a chríoch. "
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"Níl an t-oibriú seo inmhianaithe más mian leat an fíor-ainm comhaid a lorg,\n"
+"in ionad an tuarascálaí comhaid (m.sh. le huainíocht logchomhaid). Bain\n"
+"úsáid as `--follow=name' sa chás sin. Leis an rogha seo, leanfadh `tail' "
+"an\n"
+"comhad tugtha trína athoscailt anois agus arís, féachaint ar scrios agus\n"
+"ar athchruthaigh clár eile é.\n"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "%s (fd=%d) á dhúnadh"
+
+#: src/tail.c:411
+#, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: ní féidir bogadh go fritháireamh coibhneasta %s"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s: ní féidir bogadh go fritháireamh coibhneasta ón chríoch %s"
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr "tá %s dorochtana anois"
+
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr "cuireadh comhad nach féidir a `tail' in áit %s; á thréigean"
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr "tá %s insroichte anois"
+
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "tá %s ann anois; críoch an chomhaid nua á leanúint"
+
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "tá comhad nua in áit %s anois; críoch an chomhaid nua á leanúint"
+
+#: src/tail.c:1025
+#, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: ní féidir mód gan bacainní a athshocrú"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: comhad teasctha"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "níl aon chomhad fágtha"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+"%s: ní féidir an chríoch a lorg do chomhad den chineál seo; ag tréigean"
+
+#: src/tail.c:1439
+#, c-format
+msgid "number in %s is too large"
+msgstr "tá an uimhir i %s rómhór"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr "%s: is neamhbhailí é an líon uasta `stat'anna gan athrú idir oscailtí"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: PID neamhbhailí"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: líon na soicindí neamhbhailí"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr "úsáideadh an rogha i gcomhthéacs neamhbhailí -- %c"
+
+#: src/tail.c:1566
+#, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "rabhadh: níl --retry áisiúil ach amháin nuair a leantar de réir ainm"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+"rabhadh: rinneadh neamhshuim ar PID; níl --pid=PID tairbheach\n"
+"mura bhfuiltear ag leanúint"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "rabhadh: níl --pid=PID ar fáil ar an gcóras seo"
+
+#: src/tail.c:1667
+#, c-format
+msgid "cannot follow %s by name"
+msgstr "ní féidir %s a leanúint de réir a ainm"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+"rabhadh: níl maith ar bith i lorg ionchur caighdeánach gan teorainn ama"
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Cóipeáil ionchur caighdeánach chuig gach COMHAD, agus chuig aschur\n"
+"caighdeánach fosta.\n"
+"\n"
+" -a, --append iarcheangail leis na COMHA(I)D, ná forscríobh\n"
+" -i, --ignore-interrupts déan neamhshuim ar chomharthaí idirbhriste\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Más '-' é an COMHAD, cóipeáil arís go dtí an t-aschur caighdeánach.\n"
+
+#: src/test.c:125
+#, c-format
+msgid "missing argument after %s"
+msgstr "argóint ar iarraidh i ndiaidh %s"
+
+#: src/test.c:161
+#, c-format
+msgid "invalid integer %s"
+msgstr "slánuimhir neamhbhailí %s"
+
+#: src/test.c:242
+msgid "')' expected"
+msgstr "bhíothas ag súil le ')'"
+
+#: src/test.c:245
+#, c-format
+msgid "')' expected, found %s"
+msgstr "bhíothas ag súil le ')', fuarthas %s"
+
+#: src/test.c:261 src/test.c:606
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: bhíothas ag súil le hoibreoir aonártha"
+
+#: src/test.c:330
+msgid "-nt does not accept -l"
+msgstr "ní ghlacann -nt le -l"
+
+#: src/test.c:343
+msgid "-ef does not accept -l"
+msgstr "ní ghlacann -ef le -l"
+
+#: src/test.c:359
+msgid "-ot does not accept -l"
+msgstr "ní ghlacann -ot le -l"
+
+#: src/test.c:368
+msgid "unknown binary operator"
+msgstr "oibreoir dénártha anaithnid"
+
+#: src/test.c:634
+#, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: bhíothas ag súil le hoibreoir dénártha"
+
+#: src/test.c:694
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Úsáid: test SLONN\n"
+" nó: test\n"
+" nó: [ SLONN ]\n"
+" nó: [ ]\n"
+" nó: [ ROGHA\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"Scoir leis an stádas scortha tugtha ag SLONN.\n"
+"\n"
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"\n"
+"Mura bhfuil SLONN ann, is bréagach an luach réamhshocraithe. I ngach cás "
+"eile,\n"
+"is fíor nó bréagach SLONN agus socraíonn sé an stádas scortha. Tá sé ceann\n"
+"de na luachanna seo a leanas:\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+"\n"
+" ( SLONN ) tá SLONN fíor\n"
+" ! SLONN tá SLONN bréagach\n"
+" SLONN1 -a SLONN2 tá SLONN1 agus SLONN2 fíor\n"
+" SLONN1 -o SLONN2 tá SLONN1 nó SLONN2 fíor\n"
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"\n"
+" -n TEAGHRÁN níl TEAGHRÁN folamh\n"
+" TEAGHRÁN ar comhbhrí le -n TEAGHRÁN\n"
+" -z TEAGHRÁN tá TEAGHRÁN folamh\n"
+" TEAGHRÁN1 = TEAGHRÁN2 is ionann iad\n"
+" TEAGHRÁN1 != TEAGHRÁN2 ní ionann iad\n"
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" UIMHIR1 -eq UIMHIR2 is ionann iad\n"
+" UIMHIR1 -ge UIMHIR2 tá UIMHIR1 níos mó, nó is ionann agus, UIMHIR2\n"
+" UIMHIR1 -gt UIMHIR2 tá UIMHIR1 níos mó ná UIMHIR2\n"
+" UIMHIR1 -le UIMHIR2 tá UIMHIR1 níos lú, nó is ionann agus, UIMHIR2\n"
+" UIMHIR1 -lt UIMHIR2 tá UIMHIR1 níos lú ná UIMHIR2\n"
+" UIMHIR1 -ne UIMHIR2 ní ionann iad\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+"\n"
+" COMHAD1 -ef COMHAD2 tá uimhreacha ghléis agus inode céanna acu\n"
+" COMHAD1 -ef COMHAD2 tá COMHAD1 níos úire (mionathrú) ná COMHAD2\n"
+" COMHAD1 -ot COMHAD2 tá COMHAD2 níos úire ná COMHAD1\n"
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+"\n"
+" -b COMHAD tá COMHAD ann agus is comhad speisialta den chineál `bloc' é\n"
+" -c COMHAD tá COMHAD ann agus is comhad speisialta den chineál "
+"`carachtar' é\n"
+" -d COMHAD tá COMHAD ann agus is comhadlann é\n"
+" -e COMHAD tá COMHAD ann\n"
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+" -f COMHAD tá COMHAD ann agus is gnáthchomhad é\n"
+" -g COMHAD tá COMHAD ann agus is set-group-ID é\n"
+" -G COMHAD tá COMHAD ann agus is leis an ID grúpa i bhfeidhm é\n"
+" -h COMHAD tá COMHAD ann agus is nasc siombalach é (is ionann agus -L)\n"
+" -k COMHAD tá COMHAD ann agus tá sé a ghiotán greamaitheach lasta\n"
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+" -L COMHAD tá COMHAD ann agus is nasc siombalach é (is ionann agus -h)\n"
+" -O COMHAD tá COMHAD ann agus is leis an ID úsáideora i bhfeidhm\n"
+" -p COMHAD tá COMHAD ann agus is píopa ainmnithe é\n"
+" -r COMHAD tá COMHAD ann agus tá sé inléite\n"
+" -s COMHAD tá COMHAD ann agus níl sé folamh\n"
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+" -S COMHAD tá COMHAD ann agus is soicéad é\n"
+" -t FD tuarascálaí comhaid FD oscailte ar theirminéal\n"
+" -u COMHAD tá COMHAD ann agus a ghiotán set-user-ID lasta\n"
+" -w COMHAD tá COMHAD ann agus is inscríofa é\n"
+" -x COMHAD tá COMHAD ann agus is féidir é a rith nó a chuardach\n"
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"Seachas -h agus -L, dí-thagróidh tástálacha COMHAID gach nasc siombalach.\n"
+"Ní foláir duit `(' agus `)' a chosaint ón bhlaosc le, m.sh., cúlslaiseanna.\n"
+"Is féidir le hUIMHIR a bheith -l TEAGHRÁN, fad an teaghráin.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr "test agus/nó ["
+
+#: src/test.c:831
+msgid "missing `]'"
+msgstr "`]' ar iarraidh"
+
+#: src/test.c:846
+#, c-format
+msgid "extra argument %s"
+msgstr "argóint bhreise %s"
+
+# similar string for time format in ls.c -KPS
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "formáid neamhbhailí ar an dáta: %s"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "%s á chruthú"
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr "ní féidir %s a `touch'"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "amanna de %s á socrú"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+"Nuashonraigh na hamanna rochtana/mionathraithe do gach COMHAD chuig an am "
+"anois.\n"
+"\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a ná hathraigh ach an t-am rochtana\n"
+" -c, --no-create ná cruthaigh aon chomhad\n"
+" -d, --date=TEAGHRÁN parsáil TEAGHRÁN agus úsáid in ionad an ama anois\n"
+" -f (gan feidhm)\n"
+" -m ná hathraigh ach an t-am mionathraithe\n"
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --reference=COMHAD úsáid na hamanna ar an chomhad seo, ní an t-am "
+"anois\n"
+" -t STAMPA úsáid [[CC]YY]MMDDhhmm[.ss] in ionad an ama anois\n"
+" --time=FOCAL socraigh an t-am le FOCAL:\n"
+" FOCAL = access, atime, nó use: ar comhbhrí le -a\n"
+" FOCAL = modify nó mtime: ar comhbhrí le -m\n"
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"Tabhair faoi deara go bhfuil formáidí difriúla am-dáta\n"
+"ag na roghanna -d agus -t.\n"
+"\n"
+"Más `-' é an COMHAD, déan `touch' ar aschur caighdeánach.\n"
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "ní féidir amanna a shocrú ó fhoinsí iomadúla"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+"rabhadh: Tá `touch %s' i léig; bain úsáid as `touch -t %04ld%02d%02d%02d%02d."
+"%02d'"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Úsáid: %s [ROGHA]... TACAR1 [TACAR2]\n"
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Aistrigh, fáisc, agus/nó scrios carachtair as an ionchur caighdeánach,\n"
+"ag scríobh chuig an aschur caighdeánach.\n"
+"\n"
+" -c, -C, --complement comhlánaigh TACAR1 ar dtús\n"
+" -d, --delete scrios carachtair ó TACAR1, ná haistrigh\n"
+" -s, --squeeze-repeats cuir carachtar singil in ionad seicheamh leantach\n"
+" d'aon charachtar ó TACAR1\n"
+" -t, --truncate-set1 teasc TACAR1 go dtí an fad de TACAR2\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"Sonraíonn TACAR mar theaghrán carachtar. Ciallaíonn carachtar é féin de "
+"ghnáth.\n"
+"Cóid léirmhínithe:\n"
+"\n"
+" \\NNN carachtar le luach ochtnártha NNN (1,2, nó 3 digit)\n"
+" \\\\ cúlslais\n"
+" \\a BEL inchloiste\n"
+" \\b cúlspás\n"
+" \\f foirmfhotha\n"
+" \\n líne nua\n"
+" \\r aisfhilleadh\n"
+" \\t táb cothrománach\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v táb ingearach\n"
+" CAR1-CAR2 gach carachtar idir CAR1 agus CAR2, in ord\n"
+" [CAR*] i dTACAR2, cóipeanna CAR go dtí fad TACAR1\n"
+" [CAR*UIMHIR] UIMHIR cóip de CAR, ochtnártha má thosaíonn sé le 0\n"
+" [:alnum:] litreacha agus digití\n"
+" [:alpha:] litreacha\n"
+" [:blank:] spás bán cothrománach\n"
+" [:cntrl:] carachtair rialúcháin\n"
+" [:digit:] digití\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] carachtair ghrafacha, ach amháin spás\n"
+" [:lower:] litreacha beaga\n"
+" [:print:] carachtair ghrafacha, spás san áireamh\n"
+" [:punct:] comharthaí poncaíochta\n"
+" [:space:] spás bán, cothrománach nó ingearach\n"
+" [:upper:] ceannlitreacha\n"
+" [:xdigit:] digití heicsidheachúlacha\n"
+" [=CAR=] carachtair ar comhbhrí le CAR\n"
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"Aistrigh má tá TACAR1 agus TACAR2 araon ann agus mura bhfuil -d tugtha.\n"
+"Ní cheadaítear -t ach nuair atáthar ag aistriú. Fadófar TACAR2 go dtí fad\n"
+"TACAR1 trí athrá dá charachtar deireanach, a mhéad is gá"
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"Déanfar neamhshuim ar\n"
+"charachtair bhreise ó TACAR2. Níl aon aicme charachtair ach [:lower:] agus\n"
+"[:upper:] a leathnaíonn in ord ardaitheach go cinnte; ní cheadaítear iad a\n"
+"úsáid ach don tiontú cáis. "
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"Úsáideann an rogha -s TACAR1 mura bhfuiltear\n"
+"ag aistriú ná ag scriosadh; úsáidtear TACAR2 le linn fáiscthe, déanta\n"
+"tar éis aistriú nó scriosadh.\n"
+
+#: src/tr.c:519
+#, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"rabhadh: léirmhíneofar an t-éalúchán débhríoch ochtnártha \\%c%c%c mar\n"
+"\tan seicheamh dhá bheart: \\0%c%c, %c"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "tá na teorainneacha i `%s-%s' as ord"
+
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "líon neamhbhailí na hathráite %s i gcomhstruchtúr [c*n]"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "tá ainm na haicme charachtair `[::]' ar iarraidh"
+
+# equivalence in FE94 (though not equivalence class)
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "carachtar ar iarraidh in aicme choibhéise `[==]'"
+
+#: src/tr.c:937
+#, c-format
+msgid "invalid character class %s"
+msgstr "aicme neamhbhailí charachtair %s"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: ní foláir carachtar aonarach mar oibreann d'aicme coibhéise"
+
+#: src/tr.c:1275
+#, c-format
+msgid "too many characters in set"
+msgstr "an iomarca carachtar sa tacar"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "ní cheadaítear an comhstruchtúr [c*] i teaghrán1"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "ní cheadaítear ach comhstruchtúr [c*] amháin i teaghrán2"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "ní cheadaítear sloinn [=c=] i dteaghrán2 le linn aistrithe"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr ""
+"mura bhfuiltear ag teascadh tacar1, ní féidir teaghrán2 a bheith folamh"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"ní foláir do theaghrán2 na carachtair ar fad a mhapáil go carachtar singil\n"
+"le linn aistrithe le haicme charachtair comhlánaithe"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"ní cheadaítear aon aicme charachtair ach `upper' nó `lower' i dteaghrán2\n"
+"le linn aistrithe"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "ní cheadaítear [c*] i dteaghrán2 ach nuair atáthar ag aistriú"
+
+#: src/tr.c:1731
+msgid "Two strings must be given when translating."
+msgstr "Ní foláir dhá theaghrán le linn aistrithe."
+
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr "Ní foláir teaghrán aonarach a thabhairt le linn scriosta gan fáscadh."
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "comhstruchtúr [:upper:] agus/nó [:lower:] mí-ailínithe"
+
+#: src/true.c:42
+#, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Úsáid: %s [argóintí gan úsáid]\n"
+" nó: %s ROGHA\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr "Scoir le cód scortha a chomharthaíonn bua."
+
+# partial and total ordering not in FE94; ordúil for ordered
+# seems not to have the force of a past participle
+# coined "páirtord" by analogy
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Úsáid: %s [ROGHA] [COMHAD]\n"
+"Scríobh liosta sórtáilte go hiomlán is comhchuí leis an pháirtord i "
+"gCOMHAD.\n"
+"Mura bhfuil COMHAD ann, nó más '-' é, léigh ón ionchur caighdeánach.\n"
+"\n"
+
+#: src/tsort.c:474
+#, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: is corr líon na dteaghrán san ionchur"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: tá lúb san ionchur:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Úsáid: %s [ROGHA]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Taispeáin ainm an teirminéil atá nasctha le hionchur caighdeánach.\n"
+"\n"
+" -s, --silent, --quiet ná taispeáin aon ní; aischuir stádas scortha\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "ní tty é"
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Taispeáin eolas áirithe faoin gcóras. Gan ROGHA, is ionann é agus `-s'.\n"
+"\n"
+" -a, --all taispeáin gach faisnéis, san ord seo a leanas,\n"
+" ach fág -p agus -i ar lár más anaithnid:\n"
+" -s, --kernel-name taispeáin ainm na heithne\n"
+" -n, --nodename taispeáin óstainm an nóid lín\n"
+" -r, --kernel-release taispeáin leagan na heithne\n"
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v, --kernel-version taispeáin leagan na heithne\n"
+" -m, --machine taispeáin ainm na gcrua-earraí\n"
+" -p, --processor taispeáin cineál an phróiseálaí, nó \"unknown\"\n"
+" -i, --hardware-platform taispeáin ardán na gcrua-earraí nó \"unknown\"\n"
+" -o, --operating-system taispeáin an córas oibrithe\n"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "níl aon fháil ar an ainm córais"
+
+#: src/unexpand.c:125
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Tiontaigh spásanna i ngach COMHAD go táib, scríobh ar an aschur "
+"caighdeánach.\n"
+"Mura bhfuil COMHAD ann, nó más '-' é, léigh ón ionchur caighdeánach.\n"
+"\n"
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all tiontaigh an spás bán ar fad, in ionad an spáis "
+"tosaigh\n"
+" --first-only ná tiontaigh ach an spás bán tosaigh (sáraíonn -a)\n"
+" -t, --tabs=N táib N carachtar óna chéile in ionad 8 (cumasaigh -a)\n"
+" -t, --tabs=LIOSTA liosta de tháib, scartha le camóga (cumasaigh -a)\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr "táib rófhada ó chéile"
+
+#: src/unexpand.c:512
+#, c-format
+msgid "tab stop value is too large"
+msgstr "is rómhór an luach tábstoip"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Úsáid: %s [ROGHA]... [IONCHUR [ASCHUR]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"Caith i gcártaí gach líne ach amháin de sheicheamh athráite ón IONCHUR (nó\n"
+"ionchur caighdeánach); scríobh chuig ASCHUR (nó aschur caighdeánach).\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count taispeáin líon na dtarluithe ar tosach gach líne -"
+"d, --repeated ná taispeáin ach línte dúblacha\n"
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated[=modh] taispeáin gach líne dhúblach\n"
+" modh={none(réamhshocrú),prepend,separate}\n"
+" úsáidtear línte folmha mar theormharcóirí.\n"
+" -f, --skip-fields=N ná déan comparáid ar an chéad N réimse\n"
+" -i, --ignore-case déan neamhshuim ar chás i gcomparáidí\n"
+" -s, --skip-chars=N ná déan comparáid ar an chéad N carachtar\n"
+" -u, --unique ná taispeáin ach línte uathúla\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr " -w, --check-chars=N déan comparáid ar N carachtar ar a mhéad\n"
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"Is éard atá i réimse: stráice spás bán agus ansin carachtair nach spás bán.\n"
+"Gabhtar thar réimsí roimh charachtair.\n"
+
+#: src/uniq.c:350
+#, c-format
+msgid "too many repeated lines"
+msgstr "an iomarca línte dúblacha"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "is neamhbhailí líon na réimsí le ligean thar"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "is neamhbhailí líon na mbeart le ligean thar"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "is neamhbhailí líon na mbeart a chur i gcomparáid"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr "Is gan chiall línte dúblacha AGUS líon na hathráite a thaispeáint"
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Úsáid: %s COMHAD\n"
+" nó: %s ROGHA\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"Bain úsáid as an fheidhm unlink() chun an COMHAD a scriosadh.\n"
+"\n"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "ní féidir %s a dhínasc"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "níl aon fháil ar am an tosaithe is déanaí"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s beo "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "am"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "pm"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr " ??:???? beo "
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr "???? lá ??:??, "
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%ld lá"
+msgstr[1] "%ld lá"
+msgstr[2] "%ld lá"
+msgstr[3] "%ld lá"
+msgstr[4] "%ld lá"
+
+#: src/uptime.c:147
+#, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%lu úsáideoir"
+msgstr[1] "%lu úsáideoir"
+msgstr[2] "%lu úsáideoir"
+msgstr[3] "%lu n-úsáideoir"
+msgstr[4] "%lu úsáideoir"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", meánlód: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Úsáid: %s [ROGHA]... [ COMHAD ]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Taispeáin an t-am anois, an tréimhse atá an córas ar siúl,\n"
+"líon na n-úsáideoirí, agus líon na dtascanna sa chiú, ar mheán, le linn\n"
+"na 1, 5, agus 15 nóiméad is déanaí.\n"
+"Mura bhfuil COMHAD tugtha, úsáid %s. Feictear %s mar CHOMHAD go minic.\n"
+"\n"
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Taispeáin úsáideoirí atá logáilte isteach faoi láthair, dar le COMHAD.\n"
+"Gan CHOMHAD, úsáid %s. Feictear %s mar CHOMHAD go minic.\n"
+"\n"
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Taispeáin líon na mbeart, na bhfocal, agus na línte nua do gach COMHAD, "
+"agus\n"
+"línte go hiomlán má tá níos mó ná comhad amháin ann. Mura bhfuil aon "
+"CHOMHAD\n"
+"ann, nó más `-' é, léigh ón ionchur caighdeánach.\n"
+" -c, --bytes taispeáin líon na mbeart\n"
+" -m, --chars taispeáin líon na gcarachtar\n"
+" -l, --lines taispeáin líon na línte nua\n"
+
+#: src/wc.c:121
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" --files0-from=C léigh na comhaid a shonraítear i gcomhad C le\n"
+" hainmneacha atá críochnaithe ag carachtair "
+"nialasacha\n"
+" -L, --max-line-length taispeáin fad na líne is faide\n"
+" -w, --words taispeáin líonta na bhfocal\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+"ní cheadaítear comhad darbh ainm %s agus ainmneacha comhaid á léamh ó stdin"
+
+#: src/who.c:212
+msgid " old "
+msgstr " sean "
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "teirm="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "stádas="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "athrú an chloig"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "leibhéal feidhmithe"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "déanach="
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"# úsáideoirí=%lu\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "AINM"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "LÍNE"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "AM "
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr "DÍOMHAOIN"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "NÓTA"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "SCOIR"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Úsáid: %s [ROGHA]... [ COMHAD | ARG1 ARG2 ]]\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" -a, --all ar comhbhrí le `-b -d --login -p -r -t -T -u'\n"
+" -b, --boot am an atosaithe is déanaí\n"
+" -d, --dead taispeáin próisis mharbha\n"
+" -H, --heading taispeáin teidil na gcolún\n"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr " -l, --login taispeáin próisis logála isteach an chórais\n"
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+" -l, --lookup féach le caighdeánú na hóstainmneacha le DNS\n"
+" -m níl ach óstainm agus úsáideoir nasctha le stdin\n"
+" -p, --process taispeáin próisis a chuir init ar bun\n"
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+" -q, --count taispeáin gach ainm logála isteach agus\n"
+" líon na n-úsáideoirí faoi láthair\n"
+" -r, --runlevel taispeáin an leibhéal feidhmithe faoi láthair\n"
+" -s, --short ná taispeáin ach ainm, líne, agus am (réamhshocrú)\n"
+" -t, --time taispeáin athrú an chloig is déanaí\n"
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+" -T, -w, --mesg taispeáin stádas teachtaireachta mar +, -, nó ?\n"
+" -u, --users taispeáin úsáideoirí atá logáilte isteach faoi láthair\n"
+" --message ar comhbhrí le -T\n"
+" --writable ar comhbhrí le -T\n"
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"Mura bhfuil COMHAD tugtha, úsáid %s. Feictear %s mar CHOMHAD go minic.\n"
+"Má tá ARG1 agus ARG2 ann, glactar le -m: is gnách `am i' nó `mom likes'.\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+"rabhadh: tá --i dulta i léig agus beidh sé scriosta\n"
+"i leagan éigin amach anseo. Bain úsáid as `-u' ina háit"
+
+#: src/whoami.c:51
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Taispeáin an t-ainm úsáideora nasctha leis an aitheantas atá i bhfeidhm\n"
+"faoi láthair. Ar comhbhrí le `id -un'.\n"
+"\n"
+
+#: src/whoami.c:95
+#, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: níl aon fháil ar ainm don aitheantas úsáideora %lu\n"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Úsáid: %s [TEAGHRÁN]...\n"
+" nó: %s ROGHA\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"Priontáil líne arís agus arís le gach TEAGHRÁN ceaptha, nó `y'.\n"
+"\n"
+
+#~ msgid "strip failed"
+#~ msgstr "teipthe ar an struipeáil"
+
+#~ msgid "-R -h requires -P"
+#~ msgstr "tá gá le -P leis na roghanna -R -h"
+
+#~ msgid "value %s is so large that it is not representable"
+#~ msgstr "tá %s chomh mór nach inléirithe é"
+
+#~ msgid "%s: count `%.*s' too large"
+#~ msgstr "%s: áireamh `%.*s' rómhór"
+
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "níl naisc shiombalacha ar fáil ar an gcóras seo"
+
+#~ msgid "fifo files not supported"
+#~ msgstr "níl comhaid FIFO ar fáil"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "ní féidir na comhadlanna `.' nó `..' a scriosadh"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "ní féidir an t-úinéir agus/nó an grúpa de %s a athrú"
+
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "ní féidir chdir a dhéanamh go dtí an chomhadlann %s"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "níl aon fháil ar an ghrúpa don UID uimhriúil seo"
+
+#~ msgid ""
+#~ " --no-preserve-root do not treat `/' specially (the default)\n"
+#~ " --preserve-root fail to operate recursively on `/'\n"
+#~ msgstr ""
+#~ " --no-preserve-root ná tabhair cóir speisialta do `/' (réamhshocrú)\n"
+#~ " --preserve-root ná caith le `/' go hathchúrsach\n"
+
+#~ msgid ""
+#~ " -e enable interpretation of backslash escapes\n"
+#~ " -E disable interpretation of backslash escapes (default)\n"
+#~ msgstr ""
+#~ " -e bain úsáid as na carachtair éalúcháin le cúlslaiseanna\n"
+#~ " -E ná bain úsáid as na carachtair éalúcháin (réamhshocrú)\n"
+
+#~ msgid ""
+#~ "warning: unportable BRE: %s: using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr ""
+#~ "rabhadh: bunshlonn ionadaíochta do-iompartha: %s: ní iniompartha é `^'\n"
+#~ "mar an chéad charachtar den slonn ionadaíochta; ag déanamh neamhshuim air"
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "rogha anaithnid `-%c'"
+
+#~ msgid "cannot return to working directory"
+#~ msgstr "ní féidir dul ar ais go dtí an chomhadlann oibre"
+
+#~ msgid "cannot return to current directory"
+#~ msgstr "ní féidir dul ar ais go dtí an chomhadlann reatha"
+
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "cruthaigh nasc siombalach %s go %s"
+
+#~ msgid "create hard link %s to %s"
+#~ msgstr "cruthaigh nasc crua %s go %s"
+
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "ní féidir na ceadanna den chomhadlann %s a shocrú"
+
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "ní féidir na ceadanna den FIFO %s a shocrú"
+
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "ní féidir na ceadanna de %s a shocrú"
+
+#~ msgid ""
+#~ "This program is free software; you can redistribute it and/or modify\n"
+#~ "it under the terms of the GNU General Public License as published by\n"
+#~ "the Free Software Foundation; either version 2, or (at your option)\n"
+#~ "any later version.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Is saorbhogearra an ríomhchlár seo; is féidir leat é a scaipeadh agus/nó\n"
+#~ "a athrú de réir na gcoinníollacha den GNU General Public License mar atá\n"
+#~ "foilsithe ag an Free Software Foundation; faoi leagan 2 den cheadúnas,\n"
+#~ "nó (más mian leat) aon leagan níos déanaí.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "This program is distributed in the hope that it will be useful,\n"
+#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+#~ "GNU General Public License for more details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Scaiptear an ríomhchlár seo le súil go mbeidh sé áisiúil,\n"
+#~ "ach GAN AON BARÁNTA; go fiú gan an barántas intuigthe\n"
+#~ "d'INDÍOLTACHT nó FEILIÚNACHT D'FHEIDHM AR LEITH. Féach ar an\n"
+#~ "GNU General Public License chun níos mó sonraí a fháil.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
+#~ msgstr ""
+#~ "Ba chóir go mbeifeá tar éis cóip den GNU General Public License a fháil\n"
+#~ "in éineacht leis an ríomhchlár seo; mura bhfuair, scríobh chuig an\n"
+#~ "Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n"
+#~ "Boston, MA 02110-1301, USA.\n"
+
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "ní féidir an chomhadlann oibre a athrú ó %s go dtí .."
+
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "ní féidir `.' a `lstat' i %s"
+
+#~ msgid "cannot lstat %s"
+#~ msgstr "ní féidir %s a `lstat'"
+
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "ní féidir an chomhadlann oibre a athrú ó %s go %s"
+
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only; this works only if your "
+#~ "system\n"
+#~ " supports `unlink' for nonempty directories)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ msgstr ""
+#~ "Scrios (dínasc) an COMHA(I)D.\n"
+#~ "\n"
+#~ " -d, --directory dínasc COMHAD, fiú más comhadlann le hábhair é\n"
+#~ " (forúsáideoir; teipfidh an rogha seo mura bhfuil "
+#~ "do\n"
+#~ " chóras in ann comhadlanna le hábhair a "
+#~ "dhínascadh)\n"
+#~ " -f, --force ná fiafraigh, déan neamhshuim ar chomhaid ar "
+#~ "iarraidh\n"
+#~ " -i, --interactive fiafraigh roimh scriosadh\n"
+
+#~ msgid "Exit with a status code indicating failure."
+#~ msgstr "Scoir le cód scortha a chomharthaíonn teip."
+
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "ní féidir an chomhadlann %s a fhorscríobh"
+
+#~ msgid ""
+#~ "Display file or file system status.\n"
+#~ "\n"
+#~ " -f, --file-system display file system status instead of file "
+#~ "status\n"
+#~ " -c --format=FORMAT use the specified FORMAT instead of the default\n"
+#~ " -L, --dereference follow links\n"
+#~ " -t, --terse print the information in terse form\n"
+#~ msgstr ""
+#~ "Taispeáin stádas de chomhad nó de chóras comhaid.\n"
+#~ "\n"
+#~ " -f, --file-system taispeáin stádas de chóras in ionad comhaid\n"
+#~ " -c --format=FORMÁID bain úsáid as an FHORMÁID ceaptha\n"
+#~ " -L, --dereference lean naisc\n"
+#~ " -t, --terse taispeáin an t-eolas go gonta\n"
+
+#~ msgid "Warning: `-l' is deprecated; use `-L' instead"
+#~ msgstr "Rabhadh: tá --l dulta i léig; bain úsáid as `-L' ina háit"
+
+#~ msgid "the --allow-missing option is deprecated; use --retry instead"
+#~ msgstr ""
+#~ "tá an rogha --allow-missing dulta i léig; bain úsáid as --retry ina háit"
+
+#~ msgid ""
+#~ " -i, --idle add idle time as HOURS:MINUTES, . or old\n"
+#~ " (deprecated, use -u)\n"
+#~ " -l, --login print system login processes\n"
+#~ msgstr ""
+#~ " -i, --idle taispeáin am díomhaoin mar UAIRE:NÓIMÉID, . nó old\n"
+#~ " (i léig, bain úsáid as -u)\n"
+#~ " --login taispeáin próisis logála isteach don chóras\n"
+
+#~ msgid "openat: unable to restore working directory"
+#~ msgstr "openat: ní féidir an chomhadlann oibre a athchóiriú"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Is saorbhogearra an ríomhchlár seo; féach ar an bhunchód le haghaidh\n"
+#~ "coinníollacha cóipeála. Níl baránta ar bith ann; go fiú níl baránta ann\n"
+#~ "d'INDÍOLTACHT nó FEILIÚNACHT D'FHEIDHM AR LEITH.\n"
+
+#~ msgid "closing standard output"
+#~ msgstr "aschur caighdeánach á dhúnadh"
+
+#~ msgid ""
+#~ "\n"
+#~ "Each MODE is one or more of the letters ugoa, one of the symbols +-= and\n"
+#~ "one or more of the letters rwxXstugo.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Is éard atá i ngach MÓD: litir amháin as `ugoa' ar a laghad, ceann de na\n"
+#~ "siombailí `+-=' agus litir amháin as `rwxXstugo' ar a laghad.\n"
+
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "rabhadh: tá --version-control (-V) dulta i léig agus beidh sé scriosta\n"
+#~ "i leagan éigin amach anseo. Bain úsáid as `--backup=%s' ina háit."
+
+#~ msgid ""
+#~ " %z RFC-2822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %Z time zone (e.g., EDT), or nothing if no time zone is determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr ""
+#~ " %z crios ama uimhriúil de réir RFC-822 (-0500) (neamhchaighdeánach)\n"
+#~ " %Z crios ama (m.sh., EDT), nó neamhní mura bhfuil crios ama ar fáil\n"
+#~ "\n"
+#~ "Mar réamhshocrú, stuáil réimsí uimhriúla le nialais. Aithníonn\n"
+#~ "GNU date na mionathraitheoirí idir `%' agus treoir uimhriúil:\n"
+#~ "\n"
+#~ " `-' (fleiscín) ná stuáil an réimse\n"
+#~ " `_' (folíne) stuáil an réimse le spásanna\n"
+
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-2822 (-R) option"
+#~ msgstr ""
+#~ "ní cheadaítear teaghrán formáide a cheapadh leis an rogha --rfc-822 (-R)"
+
+#~ msgid "undefined"
+#~ msgstr "gan sainmhíniú"
+
+#~ msgid "cannot get time of day"
+#~ msgstr "níl aon fháil ar an am lae"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "%s+%s taifead isteach\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "%s+%s taifead amach\n"
+
+#~ msgid "truncated records"
+#~ msgstr "taifid teasctha"
+
+#~ msgid "file offset out of range"
+#~ msgstr "fritháireamh comhaid as raon"
+
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "tá an rogha `-LIOSTA' i léig; bain úsáid as `-t LIOSTA'"
+
+#~ msgid "`%s' is too large"
+#~ msgstr "tá `%s' rómhór"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Úsáid: %s [déan neamhshuim ar argóintí]\n"
+#~ " nó: %s ROGHA\n"
+#~ "Scoir le cód stádais a chomharthaíonn teip.\n"
+#~ "\n"
+#~ "Ní cheadaítear na roghanna seo a ghiorrú.\n"
+#~ "\n"
+
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "tá an rogha `%s' i léig; bain úsáid as `%s'"
+
+#~ msgid "%s: number of bytes is large"
+#~ msgstr "%s: is mór líon na mbeart"
+
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "tá an rogha `-%s' i léig; bain úsáid as `-%c %.*s%.*s%s'"
+
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "níl stampa ama ar fáil do %s"
+
+#~ msgid "invalid field number: `%s'"
+#~ msgstr "uimhir réimse neamhbhailí: `%s'"
+
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "uimhir réimse neamhbhailí do chomhad 1: `%s'"
+
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "uimhir réimse neamhbhailí do chomhad 2: `%s'"
+
+#~ msgid ""
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -b, --binary léigh comhaid sa mhód dénártha (réamhshocrú ar "
+#~ "DOS)\n"
+#~ " -c, --check seiceáil suimeanna %s in aghaidh liosta tugtha\n"
+#~ " -t, --text léigh comhaid sa mhód téacs (réamhshocrú)\n"
+#~ "\n"
+
+#~ msgid "Only one operand may be specified when using --check."
+#~ msgstr "Ní cheadaítear ach oibreann amháin leis an rogha --check."
+
+#~ msgid "cannot get priority"
+#~ msgstr "níl an tosaíocht ar fáil"
+
+#~ msgid "cannot set priority"
+#~ msgstr "ní féidir an tosaíocht a shocrú"
+
+#~ msgid "failed to redirect standard output"
+#~ msgstr "níorbh fhéidir aschur caighdeánach a athsheoladh"
+
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr ""
+#~ "Tar ar struchtúir do-iompartha in AINM.\n"
+#~ "\n"
+#~ " -p, --portability seiceáil do gach córas POSIX, ní an ceann seo "
+#~ "amháin\n"
+
+#~ msgid "column count too large"
+#~ msgstr "líon rómhór na gcolún"
+
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "`--columns=COLÚN' líon neamhbhailí na gcolún: `%s'"
+
+#~ msgid "`-%s' option is obsolete; use `-l %s'"
+#~ msgstr "tá an rogha `-%s' i léig; bain úsáid as `-l %s'"
+
+#~ msgid "invalid argument `%s'"
+#~ msgstr "argóint neamhbhailí `%s'"
+
+#~ msgid "stdin: read error"
+#~ msgstr "stdin: earráid sa léamh"
+
+#~ msgid "`%s' option is obsolete; use `%s-%c %<PRIuMAX>'"
+#~ msgstr "tá an rogha `%s' i léig; úsáid `%s-%c %<PRIuMAX>'"
+
+#~ msgid "%s: integer expression expected\n"
+#~ msgstr "%s: bhíothas ag súil le slonn slánuimhreach\n"
+
+#~ msgid "before -lt"
+#~ msgstr "roimh -lt"
+
+#~ msgid "after -lt"
+#~ msgstr "i ndiaidh -lt"
+
+#~ msgid "before -le"
+#~ msgstr "roimh -le"
+
+#~ msgid "after -le"
+#~ msgstr "i ndiaidh -le"
+
+#~ msgid "before -gt"
+#~ msgstr "roimh -gt"
+
+#~ msgid "after -gt"
+#~ msgstr "i ndiaidh -gt"
+
+#~ msgid "before -ge"
+#~ msgstr "roimh -ge"
+
+#~ msgid "after -ge"
+#~ msgstr "i ndiaidh -ge"
+
+#~ msgid "before -ne"
+#~ msgstr "roimh -ne"
+
+#~ msgid "after -ne"
+#~ msgstr "i ndiaidh -ne"
+
+#~ msgid "before -eq"
+#~ msgstr "roimh -eq"
+
+#~ msgid "after -eq"
+#~ msgstr "i ndiaidh -eq"
+
+#~ msgid "after -t"
+#~ msgstr "i ndiaidh -t"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Úsáid: %s [déan neamhshuim ar argóintí]\n"
+#~ " nó: %s ROGHA\n"
+#~ "Scoir le cód stádais a chomharthaíonn bua.\n"
+#~ "\n"
+#~ "Ní cheadaítear na roghanna a ghiorrú.\n"
+#~ "\n"
+
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr "tá an rogha `-LIST' i léig; bain úsáid as `--first-only -t LIST'"
+
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "tá an rogha `-%lu' i léig; bain úsáid as `-f %lu'"
+
+#~ msgid "%s: cannot find username for UID %lu\n"
+#~ msgstr "%s: níl aon fháil ar ainm úsáideora don UID %lu\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "níl go leor argóintí ann"
+
+#~ msgid "cannot change to null group"
+#~ msgstr "ní féidir athrach a dhéanamh go dtí grúpa nialasach"
+
+#~ msgid "group number"
+#~ msgstr "uimhir ghrúpa"
+
+#~ msgid "invalid group number %s"
+#~ msgstr "uimhir ghrúpa neamhbhailí %s"
+
+#~ msgid "invalid mode string: %s"
+#~ msgstr "teaghrán neamhbhailí móid: %s"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "Úsáid: %s [ROGHA]... ÚINÉIR[:[GRÚPA]] COMHAD...\n"
+#~ " nó: %s [ROGHA]... :GRÚPA COMHAD...\n"
+#~ " nó: %s [ROGHA]... --reference=TCOMHAD COMHAD...\n"
+
+#~ msgid "%s: specified destination directory does not exist"
+#~ msgstr "%s: níl a leithéid de sprioc-chomhadlann ann"
+
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "%s: ní comhadlann an sprioc-chomhad ceaptha"
+
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr ""
+#~ "ní comhadlann an argóint deiridh %s agus ag cóipeáil comhaid iomadúla"
+
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "an iomarca argóintí nach roghanna iad: %s%s"
+
+#~ msgid ""
+#~ "\tonly one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}"
+#~ msgstr ""
+#~ "\tní cheadaítear ach conv amháin ó: {ascii,ebcdic,ibm}, {lcase,ucase}, "
+#~ "{block,unblock}, {unblock,sync}"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr ""
+#~ "ní cheadaítear argóintí COMHAD leis an rogha chun an bunachar sonraí\n"
+#~ "dircolors a aschur"
+
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ msgstr ""
+#~ "Déan macalla an/na TEAGHRÁ(I)N chuig an aschur caighdeánach.\n"
+#~ "\n"
+#~ " -n ná taispeáin an líne nua fhoirceanta\n"
+#~ " -e bain úsáid as na carachtair éalúcháin le cúlslaiseanna\n"
+#~ " a leanas\n"
+#~ " -E ná bain úsáid as na carachtair sin i dTEAGHRÁN\n"
+
+#~ msgid "invalid width option: %s"
+#~ msgstr "rogha leithid neamhbhailí: %s"
+
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr ""
+#~ "comhaid iomadúla á suiteáil, ach ní comhadlann í an argóint deiridh, %s"
+
+#~ msgid "%s is a directory"
+#~ msgstr "is comhadlann %s"
+
+#~ msgid "too many non-option arguments"
+#~ msgstr "an iomarca argóintí nach roghanna"
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "níl go leor argóintí nach roghanna"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: Tá an comhad ann cheana"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "Úsáid: %s [ROGHA]... SPRIOC [NASC]\n"
+#~ " nó: %s [ROGHA]... SPRIOC... COMHADLANN\n"
+#~ " nó: %s [ROGHA]... --target-directory=COMHADLANN SPRIOC...\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr ""
+#~ "ní foláir an argóint deiridh a bheith ina chomhadlann agus ag cruthú naisc"
+
+#~ msgid "User name too long"
+#~ msgstr "Ainm úsáideora rófhada"
+
+#~ msgid "file"
+#~ msgstr "comhad"
+
+#~ msgid "files"
+#~ msgstr "comhaid"
+
+#~ msgid "checksum"
+#~ msgstr "suim sheiceála"
+
+#~ msgid "checksums"
+#~ msgstr "suimeanna sheiceála"
+
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "is comheisiatach iad na roghanna --string agus --check"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "ní cheadaítear comhaid agus ag baint úsáid as an rogha --string"
+
+#~ msgid "wrong number of arguments"
+#~ msgstr "tá líon na n-argóintí mícheart"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr "ní cheadaítear uimhreacha gléis do chomhaid fifo"
+
+# Compare ln.c, making multiple links -KPS
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr ""
+#~ "ní foláir an argóint deiridh a bheith ina chomhadlann agus ag aistriú "
+#~ "comhaid"
+
+#~ msgid "invalid option `%s'"
+#~ msgstr "rogha neamhbhailí `%s'"
+
+#~ msgid "invalid priority `%s'"
+#~ msgstr "tosaíocht neamhbhailí `%s'"
+
+#~ msgid "old-style offset"
+#~ msgstr "fritháireamh ar an sean-nós"
+
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "tá an dara hoibreann neamhbhailí sa mhód comhoiriúnachta `%s'"
+
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr ""
+#~ "caithfidh an dá argóint deiridh a bheith fritháireamh sa mhód "
+#~ "comhoiriúnachta"
+
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "tá carachtar do-iompartha sa chonair `%s' (`%c')"
+
+#~ msgid "`%s' is not a directory"
+#~ msgstr "Ní comhadlann `%s'"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "Ní féidir an comhad `%s' a chuardach"
+
+#~ msgid "name `%s' has length %ld; exceeds limit of %ld"
+#~ msgstr "tá fad an ainm `%s' = %ld; uasmhéid=%ld"
+
+#~ msgid "path `%s' has length %lu; exceeds limit of %ld"
+#~ msgstr "tá fad na conaire `%s' = %lu; uasmhéid = %ld"
+
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "`--pages': raon leathanach neamhbhailí: `%s'"
+
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "`--pages' leathanach tosaigh neamhbhailí: `%s'"
+
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "`--pages' leathanach deiridh neamhbhailí: `%s'"
+
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr "`--pages' leathanach tosaigh níos mó ná leathanach deiridh"
+
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%b %e %H:%M %Y"
+
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr "leathanach tosaigh níos mó ná an t-iomlán: `%d'"
+
+#~ msgid "Page %d"
+#~ msgstr "Leathanach %d"
+
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "Úsáid: %s formáid [argóint...]\n"
+
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "%c: carachtar iarmhíre neamhbhailí le rogha i léig"
+
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "an iomarca argóint; ní cheadaítear ach argóint chomhaid amháin agus ag "
+#~ "úsáid\n"
+#~ "an chomhréir i léig (%s) atá ag tail. Bain úsáid as -n nó -c ina háit "
+#~ "sin."
+
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "Rabhadh: ní iniompartha ach argóint chomhaid amháin a úsáid leis\n"
+#~ "an chomhréir i léig (%s) atá ag tail. Bain úsáid as -n nó -c ina háit "
+#~ "sin."
+
+#~ msgid "argument expected\n"
+#~ msgstr "bhíothas ag súil le hargóint\n"
+
+#~ msgid "too many arguments\n"
+#~ msgstr "an iomarca argóintí\n"
+
+#~ msgid "file arguments missing"
+#~ msgstr "ainmneacha comhaid ar iarraidh"
+
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "éalúchán neamhbhailí `\\%c'"
+
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr ""
+#~ "ní foláir dhá theaghrán a thabhairt agus scriosadh agus fáisceadh araon"
+
+#~ msgid "at least one string must be given when squeezing repeats"
+#~ msgstr "ní foláir aon teaghrán a thabhairt ar a laghad le linn fáiscthe"
+
+#~ msgid ""
+#~ "invalid identity mapping; when translating, any [:lower:] or [:upper:]\n"
+#~ "construct in string1 must be aligned with a corresponding construct\n"
+#~ "([:upper:] or [:lower:], respectively) in string2"
+#~ msgstr ""
+#~ "mapáil neamhbhailí; ní foláir chomhstruchtúir [:lower:] nó [:upper:]\n"
+#~ "i dteaghrán1 a ailíniú le comhstruchtúr freagrach ([:upper:] nó [:"
+#~ "lower:],\n"
+#~ "faoi seach) i dteaghrán2, agus ag aistriú."
+
+#~ msgid "only one argument may be specified"
+#~ msgstr "ní féidir níos mó ná argóint amháin a shonrú"
+
+#~ msgid "tab size contains an invalid character"
+#~ msgstr "tá carachtar neamhbhailí sa mhéid táib"
+
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "Úsáid: %s [ROGHA]... COMHAD_AR_CLE COMHAD_AR_DHEIS\n"
+
+#~ msgid "*** invalid date/time ***"
+#~ msgstr "*** dáta/am neamhbhailí ***"
diff --git a/po/gl.gmo b/po/gl.gmo
new file mode 100644
index 0000000..63ead5f
--- /dev/null
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
new file mode 100644
index 0000000..47475f1
--- /dev/null
+++ b/po/gl.po
@@ -0,0 +1,12856 @@
+# Galician translation of the GNU textutils.
+# Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+# Jacobo Tarrio <jtarrio@trasno.net>, 2000, 2001, 2002.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: textutils 2.0.22\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2002-07-23 03:07+0200\n"
+"Last-Translator: Jacobo Tarrio <jtarrio@trasno.net>\n"
+"Language-Team: Galician <gpul-traduccion@ceu.fi.udc.es>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "non se pode cambia-los permisos de %s"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, fuzzy, c-format
+msgid "setting permissions for %s"
+msgstr "non se pode cambia-los permisos de %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "argumento incorrecto %s para %s"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argumento %s ambiguo para %s"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Os parámetros correctos son:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "erro de escritura"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Erro do sistema descoñecido"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, fuzzy, c-format
+msgid "cannot stat %s"
+msgstr "non se poden cambia-los permisos de `%s'"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "ficheiro normal baleiro"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "ficheiro normal"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "directorio"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "ficheiro especial de bloque"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "ficheiro especial de carácter"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "fifo"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "ligazón simbólica"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "socket"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "cola de mensaxes"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "semáforo"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "obxecto de memoria compartida"
+
+#: lib/file-type.c:69
+#, fuzzy
+msgid "typed memory object"
+msgstr "obxecto de memoria compartida"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "ficheiro estraño"
+
+#: lib/gai_strerror.c:44
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "os ficheiros \"fifo\" non están soportados"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "os ficheiros \"fifo\" non están soportados"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr ""
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "os ficheiros \"fifo\" non están soportados"
+
+#: lib/gai_strerror.c:54
+#, fuzzy
+msgid "System error"
+msgstr "erro de escritura"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+#, fuzzy
+msgid "Unknown error"
+msgstr "Erro do sistema descoñecido"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: a opción \"%s\" é ambigua\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: a opción \"--%s\" non permite un argumento\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: a opción \"%c%s\" precisa dun argumento\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: a opción \"%s\" precisa dun argumento\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: opción descoñecida \"--%s\"\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: opción descoñecida \"%c%s\"\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: opción incorrecta -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: opción incorrecta -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: a opción precisa dun argumento -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: a opción \"-W %s\" é ambigua\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: a opción \"-W %s\" non permite un argumento\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "tamaño de bloque"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "non se pode cambia-los permisos de %s"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "memoria esgotada"
+
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr "non se pode crea-lo directorio %s"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "\""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "\""
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "%s: erro de lectura"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: expresión regular incorrecta: %s"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "clase de caracteres \"%s\" incorrecta"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr "Memoria esgotada"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: expresión regular incorrecta: %s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "erro ao buscar por expresións regulares"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "%s: expresión regular incorrecta: %s"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "erro ao buscar por expresións regulares"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr ""
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr ""
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[sSyY]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "a función iconv non é utilizable"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "a función iconv non está dispoñible"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "carácter fóra de rango"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "non se pode converter U+%04X ao xogo de caracteres local"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "non se pode converter U+%04X ao xogo de caracteres local: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "usuario incorrecto"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "grupo incorrecto"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "usuario incorrecto"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+#, fuzzy
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"Este programa é software libre; pode redistribuílo e/ou modificalo baixo\n"
+"os termos da Licencia Pública Xeral de GNU tal como a publicou a Free\n"
+"Software Foundation; xa ben a versión 2 ou (á súa elección) calquera\n"
+"versión posterior.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Escrito por %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Escrito por %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, fuzzy, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Escrito por %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr "Escrito por %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr "Escrito por %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xfts.c:58
+#, fuzzy, c-format
+msgid "invalid argument: %s"
+msgstr "argumento incorrecto %s para %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "a comparación de cadeas fallou"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Estabreza LC_ALL='C' para palia-lo problema"
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "As cadeas que se compararon foron %s e %s"
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "a comparación de cadeas fallou"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "anchura non válida: \"%s\""
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "clase de caracteres \"%s\" incorrecta"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s é grande de máis"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Escriba \"%s --help\" para máis información.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+"Visualiza-la conta de comprobación CRC e o número de bytes de cada "
+"FICHEIRO.\n"
+"\n"
+" --help amosar esta axuda e saír\n"
+" --version amosar información sobre a versión e saír\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Sen FICHEIRO, ou cando o FICHEIRO é -, lese da entrada estándar.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Informe dos erros no programa a <%s>.\n"
+"Informe dos erros na traducción a <proxecto@trasno.net>.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "erro de lectura"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "número incorrecto"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "cadea de tipo incorrecta \"%s\""
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, fuzzy, c-format
+msgid "extra operand %s"
+msgstr "operando \"%s\" extra"
+
+#: src/base64.c:316 src/cat.c:785
+#, fuzzy, c-format
+msgid "closing standard input"
+msgstr "entrada estándar"
+
+#: src/basename.c:54
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [FICHEIRO]...\n"
+" ou: %s [OPCIÓN]\n"
+
+#: src/basename.c:59
+#, fuzzy
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Imprimir NOME quitando tódolos compoñentes de directorios.\n"
+"Se se indica, quitar tamén o SUFIXO final.\n"
+"\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, fuzzy, c-format
+msgid "missing operand"
+msgstr "%s: esperábase un enteiro tras \"%c\""
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Uso: %s [OPCIÓN] [FICHEIRO]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"Concatenar FICHEIRO(s), ou a entrada estándar, na saída estándar.\n"
+"\n"
+" -A, --show-all equivalente a -vET\n"
+" -b, --number-nonblank numera-las liñas de saída non baleiras\n"
+" -e equivalente a -vE\n"
+" -E, --show-ends amosar $ ao final de cada liña\n"
+" -n, --number numerar tódalas liñas de saída\n"
+" -s, --squeeze-blank nunca máis dunha soa liña en branco\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t equivalente a -vT\n"
+" -T, --show-tabs amosa-los caracteres TAB coma ^I\n"
+" -u (ignorado)\n"
+" -v, --show-nonprinting usar notación de ^ e M-, excepto en LFD e TAB\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+#: src/cat.c:333
+#, fuzzy, c-format
+msgid "cannot do ioctl on %s"
+msgstr "non se poden facer operacións de ioctl en \"%s\""
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "saída estándar"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: o ficheiro de entrada é o mesmo que o de saída"
+
+#: src/chgrp.c:95 src/install.c:611
+#, fuzzy, c-format
+msgid "invalid group %s"
+msgstr "grupo incorrecto"
+
+#: src/chgrp.c:112
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Uso: %s [OPCIÓN]... [FICHEIRO]...\n"
+" ou: %s --traditional [FICHEIRO] [[+]DESPRAZAMENTO [[+]ETIQUETA]]\n"
+
+#: src/chgrp.c:117
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr ""
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, fuzzy, c-format
+msgid "missing operand after %s"
+msgstr "%s: esperábase un enteiro tras \"%c\""
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, fuzzy, c-format
+msgid "failed to get attributes of %s"
+msgstr "obtendo os atributos de %s"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "obtendo os novos atributos de %s"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "non se mudou a ligazón simbólica %s nin o ficheiro referido\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "o modo de %s mudou a %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "non foi posible muda-lo modo de %s a %04lo (%s)\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "o modo de %s mantense como %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, fuzzy, c-format
+msgid "cannot access %s"
+msgstr "non se poden cambia-los permisos de `%s'"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, fuzzy, c-format
+msgid "cannot read directory %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/chmod.c:251
+#, fuzzy, c-format
+msgid "changing permissions of %s"
+msgstr "non se pode cambia-los permisos de %s"
+
+#: src/chmod.c:286
+#, fuzzy, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "non se pode cambia-los permisos de %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, fuzzy, c-format
+msgid "fts_read failed"
+msgstr "erro de lectura"
+
+#: src/chmod.c:345
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Uso: %s [OPCIÓN]... ÚLTIMO\n"
+" ou: %s [OPCIÓN]... PRIMEIRO ÚLTIMO\n"
+" ou: %s [OPCIÓN]... PRIMEIRO INCREMENTO ÚLTIMO\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chmod.c:360
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+"Muda o modo de cada FICHEIRO a MODO.\n"
+"\n"
+" -c, --changes coma `verbose' mais informando só dos cambios\n"
+" -f, --silent, --quiet suprimi-la maioría das mensaxes de erro\n"
+" -v, --verbose amosar unha mensaxe por cada ficheiro procesado\n"
+" --reference=FICH-R usa-lo modo de FICH-R en vez do valor MODO\n"
+" -R, --recursive mudar ficheiros e directorios recursivamente\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+"\n"
+"Cada MODO é unha ou máis das letras ugoa, un dos símbolos +-= e unha ou "
+"máis\n"
+"das letras rwxXstugo.\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr ""
+
+#: src/chmod.c:510
+#, fuzzy, c-format
+msgid "invalid mode: %s"
+msgstr "anchura non válida: \"%s\""
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "mudouse o dono de %s a %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "mudouse o grupo de %s a %s\n"
+
+#: src/chown-core.c:149
+#, fuzzy, c-format
+msgid "no change to ownership of %s\n"
+msgstr "mudando o dono de %s"
+
+#: src/chown-core.c:152
+#, fuzzy, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "non se pode cambia-los permisos de %s"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "non foi posible mudar o grupo de %s a %s\n"
+
+#: src/chown-core.c:154
+#, fuzzy, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "non se pode cambia-los permisos de %s"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "mantense o dono de %s como %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "mantense o grupo de %s como %s\n"
+
+#: src/chown-core.c:159
+#, fuzzy, c-format
+msgid "ownership of %s retained\n"
+msgstr "mantense o dono de %s como %s\n"
+
+#: src/chown-core.c:344
+#, fuzzy, c-format
+msgid "cannot dereference %s"
+msgstr "non se poden cambia-los permisos de `%s'"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "mudando o dono de %s"
+
+#: src/chown-core.c:433
+#, fuzzy, c-format
+msgid "changing group of %s"
+msgstr "non se pode cambia-lo propietario e/ou grupo de %s"
+
+#: src/chown.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Uso: %s [OPCIÓN]... [FICHEIRO]...\n"
+" ou: %s --traditional [FICHEIRO] [[+]DESPRAZAMENTO [[+]ETIQUETA]]\n"
+
+#: src/chown.c:98
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chown.c:144
+#, fuzzy
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"O dono non se altera se non existe. O grupo non se altera se non existe,\n"
+"mais cámbiase ao grupo de login se está implícito con `:'. O DONO e o "
+"GRUPO\n"
+"poden ser numéricos ou simbólicos.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [FICHEIRO]...\n"
+" ou: %s [OPCIÓN]\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+
+#: src/chroot.c:89
+#, fuzzy, c-format
+msgid "cannot change root directory to %s"
+msgstr "non se pode cambiar ao directorio %s"
+
+#: src/chroot.c:92
+#, fuzzy, c-format
+msgid "cannot chdir to root directory"
+msgstr "non se pode cambiar ao directorio %s"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, fuzzy, c-format
+msgid "cannot run command %s"
+msgstr "non se poden cambia-los permisos de `%s'"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: ficheiro longo de máis"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Uso: %s [FICHEIRO]...\n"
+" ou: %s [OPCIÓN]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"Amosa-la suma de comprobación CRC e o número de bytes de cada FICHEIRO.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Uso: %s [OPCIÓN]... FICHEIRO1 FICHEIRO2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr ""
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+
+#: src/comm.c:86
+#, fuzzy
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"Compara os ficheiros ordeados FICHEIRO_ESQUERDO e FICHEIRO_DEREITO liña a "
+"liña.\n"
+"\n"
+" -1 elimina-las liñas que só aparezan no ficheiro esquerdo\n"
+" -2 elimina-las liñas que só aparezan no ficheiro dereito\n"
+" -3 elimina-las liñas que só aparezan nalgún dos ficheiros\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, fuzzy, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "mantense o dono de %s"
+
+#: src/copy.c:222
+#, fuzzy, c-format
+msgid "failed to lookup file %s"
+msgstr "mantense a data de %s"
+
+#: src/copy.c:227
+#, fuzzy, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "mantense o dono de %s"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "non se pode abrir %s para lectura"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, fuzzy, c-format
+msgid "cannot fstat %s"
+msgstr "non se poden cambia-los permisos de `%s'"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr ""
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, fuzzy, c-format
+msgid "cannot remove %s"
+msgstr "non se poden cambia-los permisos de `%s'"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, fuzzy, c-format
+msgid "removed %s\n"
+msgstr "borrando %s\n"
+
+#: src/copy.c:329
+#, fuzzy, c-format
+msgid "cannot create regular file %s"
+msgstr "non se pode crea-lo ficheiro temporal"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, fuzzy, c-format
+msgid "reading %s"
+msgstr "erro lendo %s"
+
+#: src/copy.c:467 src/head.c:428
+#, fuzzy, c-format
+msgid "cannot lseek %s"
+msgstr "non se poden cambia-los permisos de `%s'"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, fuzzy, c-format
+msgid "writing %s"
+msgstr "erro escribindo %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "mantense a data de %s"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, fuzzy, c-format
+msgid "closing %s"
+msgstr "pechando %s (fd=%d)"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: ¿sobrescribir %s, ignorando o modo %04lo? "
+
+#: src/copy.c:812
+#, fuzzy, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: erro de escritura"
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (copia de seguridade: %s)"
+
+#: src/copy.c:1048
+#, fuzzy, c-format
+msgid "omitting directory %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr ""
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s e %s son o mesmo ficheiro"
+
+#: src/copy.c:1149
+#, fuzzy, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "non se pode cambiar ao directorio %s"
+
+#: src/copy.c:1167
+#, fuzzy, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "non se pode sobrescribir o non-directorio %s co directorio %s"
+
+#: src/copy.c:1185
+#, fuzzy, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/copy.c:1223
+#, fuzzy, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "non se pode cambiar ao directorio %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "facer copia de seguridade de %s destruiría a orixe; %s non movido"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "facer copia de seguridade de %s destruiría a orixe; %s non copiado"
+
+#: src/copy.c:1273 src/ln.c:239
+#, fuzzy, c-format
+msgid "cannot backup %s"
+msgstr "non se poden cambia-los permisos de `%s'"
+
+#: src/copy.c:1372
+#, fuzzy, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/copy.c:1389
+#, fuzzy, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "non se pode cambiar ao directorio %s"
+
+#: src/copy.c:1414
+#, fuzzy, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/copy.c:1459
+#, fuzzy, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "non se pode cambiar ao directorio %s"
+
+#: src/copy.c:1502
+#, fuzzy, c-format
+msgid "cannot move %s to %s"
+msgstr "non se poden cambia-los permisos de `%s'"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "non se pode copia-la ligazón simbólica cíclica %s"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr ""
+"%s: só se poden facer ligazóns simbólicas relativas no directorio actual"
+
+#: src/copy.c:1661
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/copy.c:1686
+#, fuzzy, c-format
+msgid "cannot create link %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, fuzzy, c-format
+msgid "cannot create fifo %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/copy.c:1722
+#, fuzzy, c-format
+msgid "cannot create special file %s"
+msgstr "ficheiro especial de carácter"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, fuzzy, c-format
+msgid "cannot read symbolic link %s"
+msgstr "ligazón simbólica"
+
+#: src/copy.c:1759
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s é un tipo de ficheiro descoñecido"
+
+#: src/copy.c:1910 src/ln.c:308
+#, fuzzy, c-format
+msgid "cannot un-backup %s"
+msgstr "non se poden cambia-los permisos de `%s'"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (restaurado da copia de seguridade)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Uso: %s [OPCIÓN]... ÚLTIMO\n"
+" ou: %s [OPCIÓN]... PRIMEIRO ÚLTIMO\n"
+" ou: %s [OPCIÓN]... PRIMEIRO INCREMENTO ÚLTIMO\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Os argumentos obrigatorios nas opcións longas tamén o son nas opcións "
+"curtas.\n"
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --sparse=CANDO controla-la creación de ficheiros con ocos\n"
+" -R, --recursive copia-los directorios recursivamente\n"
+" --strip-trailing-slashes quita-la barra final dos argumentos de ORIXE\n"
+" -s, --symbolic-link facer ligazóns simbólicas en vez de copiar\n"
+" -S, --suffix=SUFIXO substituí-lo sufixo habitual da copia de\n"
+" seguridade\n"
+" --target-directory=DIRECTORIO mover tódolos argumentos ORIXE ao\n"
+" DIRECTORIO\n"
+" -u, --update copiar só se o ficheiro ORIXE é máis novo\n"
+" que o ficheiro de destino, ou se este\n"
+" non existe\n"
+" -v, --verbose explica-lo que está a se facer\n"
+" -x, --one-file-system manterse neste sistema de ficheiros\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+"\n"
+"Por omisión, os ficheiros ORIXE con ocos son detectados por unha heurística\n"
+"ruda e o ficheiro DESTINO correspondente créase tamén con ocos. Este é\n"
+"o comportamento escollido por --sparse=auto. Indique --sparse=always para\n"
+"crear un ficheiro DESTINO con ocos se o ficheiro ORIXE contén unha\n"
+"sucesión de bytes cero longa de abondo. Utilice --sparse=never para\n"
+"inhibi-la creación de ficheiros con ocos.\n"
+"\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+
+#: src/cp.c:216
+#, fuzzy
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+"Renomea ORIXE a DESTINO, ou mover ORIXE(s) a DIRECTORIO.\n"
+"\n"
+" --backup[=CONTROL] facer unha copia de seguridade de cada "
+"ficheiro\n"
+" destino\n"
+" -b como --backup mais sen aceptar argumentos\n"
+" -f, --force non preguntar antes de sobrescribir\n"
+" -i, --interactive preguntar antes de sobrescribir\n"
+" --strip-trailing-slashes elimina-las barras finais de tódolos\n"
+" argumentos ORIXE\n"
+" -S, --suffix=SUFIXO substituí-lo sufixo habitual de copia de\n"
+" seguridade\n"
+" --target-directory=DIRECTORIO mover tódolos argumentos ORIXE ao\n"
+" DIRECTORIO\n"
+" -u, --update mover só os non-directorios máis antigos ou\n"
+" os recentes\n"
+" -v, --verbose explica-lo que está a se facer\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/cp.c:225
+#, fuzzy
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+" --sparse=CANDO controla-la creación de ficheiros con ocos\n"
+" -R, --recursive copia-los directorios recursivamente\n"
+" --strip-trailing-slashes quita-la barra final dos argumentos de ORIXE\n"
+" -s, --symbolic-link facer ligazóns simbólicas en vez de copiar\n"
+" -S, --suffix=SUFIXO substituí-lo sufixo habitual da copia de\n"
+" seguridade\n"
+" --target-directory=DIRECTORIO mover tódolos argumentos ORIXE ao\n"
+" DIRECTORIO\n"
+" -u, --update copiar só se o ficheiro ORIXE é máis novo\n"
+" que o ficheiro de destino, ou se este\n"
+" non existe\n"
+" -v, --verbose explica-lo que está a se facer\n"
+" -x, --one-file-system manterse neste sistema de ficheiros\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+"\n"
+"Por omisión, os ficheiros ORIXE con ocos son detectados por unha heurística\n"
+"ruda e o ficheiro DESTINO correspondente créase tamén con ocos. Este é\n"
+"o comportamento escollido por --sparse=auto. Indique --sparse=always para\n"
+"crear un ficheiro DESTINO con ocos se o ficheiro ORIXE contén unha\n"
+"sucesión de bytes cero longa de abondo. Utilice --sparse=never para\n"
+"inhibi-la creación de ficheiros con ocos.\n"
+"\n"
+
+#: src/cp.c:234
+#, fuzzy
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"O sufixo de copia de seguridade é `~', a menos que se estableza con --"
+"suffix\n"
+"ou con SIMPLE_BACKUP_SUFFIX. O método do control de versión pode ser\n"
+"establecido coa opción --backup ou coa variable de ambiente "
+"VERSION_CONTROL.\n"
+"Os valores poden ser:\n"
+"\n"
+" none, off non facer nunca copias de seguridade (mesmo con --backup)\n"
+" numbered, t facer copias de seguridade numeradas\n"
+" existing, nil copias numeradas se xa existen numeradas, se non simples\n"
+" simple, never facer sempre copias de seguridade simples\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+#, fuzzy
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+"O sufixo de copia de seguridade é `~', a menos que se estableza con --"
+"suffix\n"
+"ou con SIMPLE_BACKUP_SUFFIX. O método do control de versión pode ser\n"
+"establecido coa opción --backup ou coa variable de ambiente "
+"VERSION_CONTROL.\n"
+"Os valores poden ser:\n"
+"\n"
+" none, off non facer nunca copias de seguridade (mesmo con --backup)\n"
+" numbered, t facer copias de seguridade numeradas\n"
+" existing, nil copias numeradas se xa existen numeradas, se non simples\n"
+" simple, never facer sempre copias de seguridade simples\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Como caso especial, o cp fai unha copia de seguridad da ORIXE cando se usan\n"
+"as opcións `force' e `backup', e ORIXE e DESTINO teñen o mesmo nome que un\n"
+"ficheiro regular xa existente.\n"
+
+#: src/cp.c:314
+#, fuzzy, c-format
+msgid "failed to preserve times for %s"
+msgstr "mantense a data de %s"
+
+#: src/cp.c:340
+#, fuzzy, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "non se pode cambia-los permisos de %s"
+
+#: src/cp.c:456
+#, fuzzy, c-format
+msgid "cannot make directory %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s existe pero non é un directorio"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "accediendo a %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, fuzzy, c-format
+msgid "missing file operand"
+msgstr "argumento de salto"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, fuzzy, c-format
+msgid "missing destination file operand after %s"
+msgstr "lista de campos non atopada"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, fuzzy, c-format
+msgid "target %s is not a directory"
+msgstr "%s existe pero non é un directorio"
+
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "ao manter os camiños de acceso, o destino ten que ser un directorio"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr ""
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, fuzzy, c-format
+msgid "multiple target directories specified"
+msgstr "\\%c: secuencia de escape non válida"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "non se poden facer ligazóns duras e simbólicas ao mesmo tempo"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "tipo de copia de seguridade"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "a entrada desapareceu"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: número de liña inexistente"
+
+#: src/csplit.c:709
+#, fuzzy, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: \"%s\": número de liña fóra do seu rango"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, fuzzy, c-format
+msgid " on repetition %s\n"
+msgstr " na repetición %d\n"
+
+#: src/csplit.c:755
+#, fuzzy, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: \"%s\": non se atopou nada que coincidira"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "erro ao buscar por expresións regulares"
+
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "erro de escritura en \"%s\""
+
+#: src/csplit.c:1060
+#, fuzzy, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: esperábase un enteiro tras \"%c\""
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: fai falla un \"}\" no número de repeticións"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: fai falla un enteiro entre \"{\" e \"}\""
+
+#: src/csplit.c:1113
+#, fuzzy, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: delimitador de peche \"%c\" non atopado"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: expresión regular incorrecta: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: patrón incorrecto"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: o número de liña debe ser maior que cero"
+
+#: src/csplit.c:1172
+#, fuzzy, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "o número de liña \"%s\" é menor que o número de liña anterior, %s"
+
+#: src/csplit.c:1178
+#, fuzzy, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "aviso: o número de liña \"%s\" é o mesmo que o número de liña anterior"
+
+#: src/csplit.c:1231
+#, fuzzy, c-format
+msgid "invalid format width"
+msgstr "argumento incorrecto %s para %s"
+
+#: src/csplit.c:1252
+#, fuzzy, c-format
+msgid "invalid format precision"
+msgstr "cadea de tipo incorrecta \"%s\""
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "especificador de conversión non atopado no sufixo"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "especificador de conversión do sufixo incorrecto: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "especificador de conversión do sufixo incorrecto: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "demasiadas especificacións de conversión %% no sufixo"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "especificación de conversión %% non atopada no sufixo"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: número incorrecto"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Uso: %s [OPCIÓN]... FICHEIRO PATRÓN...\n"
+
+#: src/csplit.c:1478
+#, fuzzy
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"Gravar anacos do FICHEIRO separadas polos PATRÓNs nos ficheiros \"xx01\",\n"
+"\"xx02\", ..., e amosa-lo número de bytes de cada anaco na saída estándar.\n"
+"\n"
+
+#: src/csplit.c:1486
+#, fuzzy, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=FORMATO emprega-lo FORMATO de sprintf no canto de %d\n"
+" -f, --prefix=PREFIXO emprega-lo PREFIXO no canto de \"xx\"\n"
+" -k, --keep-files non elimina-los ficheiros de saída se hai "
+"erros\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=CIFRAS usa-lo número de cifras indicado no canto de "
+"2\n"
+" -s, --quite, --silent non amosa-los tamaños dos ficheiros de saída\n"
+" -z, --elide-empty-files elimina-los ficheiros de saída baleiros\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"Lese da entrada estándar se o FICHEIRO é -. Cada PATRÓN pode ser:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" ENTEIRO copiar ata o número de liña indicado, sen incluílo\n"
+" /EXPREG/[DESPRAZ] copiar ata a liña que coincide, sen incluíla\n"
+" %EXPREG%[DESPRAZ] saltar ata a liña que coincide, sen incluíla\n"
+" {ENTEIRO} repeti-lo patrón anterior o número de veces indicado\n"
+" {*} repeti-lo patrón anterior tantas veces como se poida\n"
+"\n"
+"Un DESPRAZamento de liña é un signo \"+\" ou \"-\" seguido por un enteiro "
+"positivo.\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Uso: %s [OPCIÓN]... [FICHEIRO]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"Amosar partes seleccionadas das liñas de cada FICHEIRO na saída estándar.\n"
+"\n"
+
+#: src/cut.c:199
+#, fuzzy
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=LISTA amosar só estes bytes\n"
+" -c, --characters=LISTA amosar só estes caracteres\n"
+" -d, --delimiter=DELIM emprega-lo DELIMitador no canto da tabulación\n"
+
+#: src/cut.c:204
+#, fuzzy
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=LISTA amosar só estes campos; tamén amosa calquera liña\n"
+" que non conteña o carácter delimitador, agás se\n"
+" se indica a opción -s\n"
+" -n (ignórase)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited non amosa-las liñas que non conteñan "
+"delimitadores\n"
+" --output-delimiter=CADEA emprega-la CADEA coma delimitador de saída\n"
+" por defecto emprégase o delimitador de entrada\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+#, fuzzy
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Empregue un e só un de -b, -c ou -f. Cada LISTA componse dun rango ou "
+"varios\n"
+"rangos separados por comas. Cada rango é un de:\n"
+"\n"
+" N N-ésimo byte, carácter ou campo, contado dende 1\n"
+" N- do N-ésimo byte, carácter ou campo, ata a fin da liña\n"
+" N-M do N-ésimo ao M-ésimo (inclusive) byte, carácter ou campo\n"
+" -M do primeiro ao M-ésimo (inclusive) byte, carácter ou campo\n"
+"\n"
+"Sen un FICHEIRO, ou cando o FICHEIRO é -, lese da entrada estándar.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "lista de bytes ou campos non correcta"
+
+#: src/cut.c:469
+#, fuzzy, c-format
+msgid "byte offset %s is too large"
+msgstr "%s é grande de máis"
+
+#: src/cut.c:472
+#, fuzzy, c-format
+msgid "field number %s is too large"
+msgstr "o número do campo é cero"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "só se pode indicar un tipo de lista"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "o delimitador debe ser un só carácter"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "debe especificarse unha lista de bytes, caracteres ou campos"
+
+#: src/cut.c:831
+#, fuzzy
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "só se pode especificar un delimitador cando se traballa con campos"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"elimina-las liñas sen delimitadores ten sentido\n"
+"\tsó cando se traballa con campos"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "lista de campos non atopada"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "lista de posicións non atopada"
+
+#: src/date.c:132
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Uso: %s [OPCIÓN]... [+FORMATO]\n"
+" ou: %s [OPCIÓN] [MMDDhhmm[[SS]AA][.ss]]\n"
+
+#: src/date.c:137
+#, fuzzy
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"Amosa-la data actual no FORMATO indicado, ou establece-la data do sistema.\n"
+"\n"
+" -d, --date=CADEA amosa-la data descrita por CADEA, non `agora'\n"
+" -f, --file=FICH_DATA coma --date, unha vez para cada liña en "
+"FICH_DATA\n"
+" -I, --iso-8601[=ESPDATA] escribir unha cadea de data/hora seguindo o\n"
+" estándar ISO-8601. ESPDATA=`date' (ou sen "
+"nada)\n"
+" para que só o sexa a data, `hours', `minutes' "
+"ou\n"
+" `seconds' para a data e a hora coa precisión\n"
+" indicada.\n"
+" -r, --reference=FICH amosa-la última data de modificación de FICH\n"
+" -R, --rfc-822 amosar unha cadea coa data seguindo o RFC-822\n"
+" -s, --set=CADEA establece-la data descrita por CADEA\n"
+" -u, --utc, --universal escribir ou establece-la Hora Universal "
+"Coordinada\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "entrada estándar"
+
+#: src/date.c:297 src/date.c:517
+#, fuzzy, c-format
+msgid "invalid date %s"
+msgstr "anchura non válida: \"%s\""
+
+#: src/date.c:408 src/date.c:442
+#, fuzzy, c-format
+msgid "multiple output formats specified"
+msgstr "\\%c: secuencia de escape non válida"
+
+#: src/date.c:420
+#, fuzzy, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "as opcións --string e --check son mutuamente exclusivas"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr "as opcións para imprimir e establece-la data non se poden usar xuntas"
+
+#: src/date.c:448
+#, fuzzy, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"o argumento `%s' non ten un `+' ó comezo;\n"
+"Cando se usa unha opción para especificar datas, tódolos\n"
+"argumentos que non son opcións teñen que ser unha cadea\n"
+"de formato comezando con `+'."
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "non se pode establece-la data"
+
+#: src/date.c:548 src/du.c:425
+#, fuzzy, c-format
+msgid "time %s is out of range"
+msgstr "%s: número de liña inexistente"
+
+#: src/dd.c:404
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [FICHEIRO]...\n"
+" ou: %s [OPCIÓN]\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "%s existe pero non é un directorio"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "rexistro truncado"
+msgstr[1] "rexistro truncado"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr ""
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ""
+
+#: src/dd.c:604
+#, fuzzy, c-format
+msgid "closing input file %s"
+msgstr "creando ficheiro \"%s\"\n"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "pechando o ficheiro de saída %s"
+
+#: src/dd.c:791 src/dd.c:1455
+#, fuzzy, c-format
+msgid "writing to %s"
+msgstr "erro escribindo %s"
+
+#: src/dd.c:886
+#, fuzzy, c-format
+msgid "unrecognized operand %s"
+msgstr "opción descoñecida \"-%c\""
+
+#: src/dd.c:897
+#, fuzzy, c-format
+msgid "invalid conversion: %s"
+msgstr "opción de anchura non válida: \"%s\""
+
+#: src/dd.c:900
+#, fuzzy, c-format
+msgid "invalid input flag: %s"
+msgstr "anchura non válida: \"%s\""
+
+#: src/dd.c:903
+#, fuzzy, c-format
+msgid "invalid output flag: %s"
+msgstr "grupo incorrecto"
+
+#: src/dd.c:906
+#, fuzzy, c-format
+msgid "invalid status flag: %s"
+msgstr "argumento incorrecto %s para %s"
+
+#: src/dd.c:942
+#, fuzzy, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "opción descoñecida \"-%c\""
+
+#: src/dd.c:948
+#, fuzzy, c-format
+msgid "invalid number %s"
+msgstr "número incorrecto"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#: src/dd.c:973
+#, fuzzy, c-format
+msgid "cannot combine block and unblock"
+msgstr "non se poden omiti-lo usuario e o grupo"
+
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "As cadeas que se compararon foron %s e %s"
+
+#: src/dd.c:977
+#, fuzzy, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "non se pode move-lo punteiro do ficheiro de %s"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+
+#: src/dd.c:1180 src/dd.c:1237
+#, fuzzy, c-format
+msgid "%s: cannot seek"
+msgstr "%s: non se pode borrar"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "aviso: ancho %lu incorrecto; usando %d na súa vez"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr ""
+
+#: src/dd.c:1376
+#, fuzzy, c-format
+msgid "setting flags for %s"
+msgstr "establecendo a data de %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr ""
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr ""
+
+#: src/dd.c:1670 src/dd.c:1699
+#, fuzzy, c-format
+msgid "opening %s"
+msgstr "erro lendo %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, fuzzy, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "avanzando os pasados %s bytes no ficheiro de saída %s"
+
+#: src/df.c:151
+#, fuzzy
+msgid "Filesystem Type"
+msgstr "Sist. Fich "
+
+#: src/df.c:153
+#, fuzzy
+msgid "Filesystem "
+msgstr "Sist. Fich "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " Inodos IUsados ILibres IUso%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Tamaño Usado Disp Uso%%"
+
+#: src/df.c:162
+#, fuzzy, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Tamaño Usado Disp Uso%%"
+
+#: src/df.c:165
+#, fuzzy, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr "bloques-%4d Usado Dispoñib Capacid"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr "bloques-%4s Usado Dispoñib Uso%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Montado en\n"
+
+#: src/df.c:468
+#, fuzzy, c-format
+msgid "cannot get current directory"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, fuzzy, c-format
+msgid "cannot change to directory %s"
+msgstr "non se pode cambiar ao directorio %s"
+
+#: src/df.c:498
+#, fuzzy, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+
+#: src/df.c:749
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr ""
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "o sistema de ficheiros tipo %s foi escollido e exluído ao mesmo tempo"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Aviso: "
+
+#: src/df.c:943
+#, fuzzy, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%snon se pode le-la táboa cos sistemas de ficheiros montados"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Uso: %s [OPCIÓN]... [FICHEIRO]...\n"
+
+#: src/dircolors.c:103
+#, fuzzy
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Escribe os comandos para establece-la variable de ambiente LS_COLORS.\n"
+"\n"
+"Para axusta-lo formato de saída:\n"
+" -b, --sh, --bourne-shell amosa-lo código para establecer LS_COLORS\n"
+" para Bourne shell\n"
+" -c, --csh, --c-shell amosa-lo código para establecer LS_COLORS\n"
+" para C-shell\n"
+" -p, --print-database amosa-los códigos predeterminados\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+"\n"
+"Se se indica FICHEIRO, lese para determinar que cores usar para cada tipo\n"
+"de ficheiros e extensións. Se non, úsase unha base de datos precompilada.\n"
+"Para máis detalles do formato destes ficheiros, execute `dircolors\n"
+"--print-database'.\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+
+#: src/dircolors.c:291
+#, fuzzy, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s: número de segundos incorrecto"
+
+#: src/dircolors.c:363
+#, fuzzy, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s: opción descoñecida \"%c%s\"\n"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<interno>"
+
+#: src/dircolors.c:445
+#, fuzzy, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"as opcións de estilos de saída lexible para humanos e para o\n"
+"stty son mutuamente exluintes"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr ""
+"non existe a variable de ambiente SHELL, e non se indicou ningunha opción\n"
+"de tipo de shell"
+
+#: src/dirname.c:48
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [FICHEIRO]...\n"
+" ou: %s [OPCIÓN]\n"
+
+#: src/dirname.c:53
+#, fuzzy
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"Amosar NOME co seu /compoñente final quitado; se NOME non contén ningún /,\n"
+"escribirase `.' (o directorio actual).\n"
+"\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#: src/du.c:279 src/wc.c:108
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Uso: %s [OPCIÓN]... [FICHEIRO]...\n"
+" ou: %s --traditional [FICHEIRO] [[+]DESPRAZAMENTO [[+]ETIQUETA]]\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "total"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+
+#: src/du.c:780
+#, fuzzy, c-format
+msgid "invalid maximum depth %s"
+msgstr "anchura non válida: \"%s\""
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr ""
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "non se pode resumir e amosar tódalas entradas ao mesmo tempo"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "aviso: resumir é o mesmo que usar --max-depth=0"
+
+#: src/du.c:884
+#, fuzzy, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "aviso: resumir vai en conflicto con --max-depth=%d"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+#: src/du.c:960 src/wc.c:662
+#, fuzzy, c-format
+msgid "cannot read file names from %s"
+msgstr "As cadeas que se compararon foron %s e %s"
+
+#: src/du.c:1000 src/du.c:1003
+#, fuzzy
+msgid "invalid zero-length file name"
+msgstr "grupo incorrecto"
+
+#: src/echo.c:64
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Uso: %s [OPCIÓN]... [FICHEIRO]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/env.c:118
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Uso: %s [OPCIÓN]... [FICHEIRO]...\n"
+
+#: src/env.c:121
+#, fuzzy
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Establecer cada NOME a VALOR no ambiente e executar COMANDO.\n"
+"\n"
+" -i, --ignore-environment comezar cun ambiente baleiro\n"
+" -u, --unset=NOME quita-la variable do ambiente\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Converti-las tabulacións de cada FICHEIRO a espacios, gravando na saída\n"
+"estándar. Sen un FICHEIRO, ou se o FICHEIRO é -, lese da entrada estándar.\n"
+"\n"
+
+#: src/expand.c:123
+#, fuzzy
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial non converti-las tabulacións despois de algo distinto\n"
+" a un espacio en branco\n"
+" -t, --tabs=NÚMERO face-las tabulacións de NÚMERO espacios, non 8\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+" -t, --tabs=LISTA empregar unha lista separada por comas de "
+"posicións\n"
+" de tabulación\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, fuzzy, c-format
+msgid "tab stop is too large %s"
+msgstr "%s é grande de máis"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, fuzzy, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "o tamaño da tabulación contén un carácter incorrecto"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "o tamaño da tabulación non pode ser 0"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "os tamaños das tabulacións deben ser crecentes"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, fuzzy, c-format
+msgid "input line is too long"
+msgstr "%s: ficheiro longo de máis"
+
+#: src/expr.c:102
+#, fuzzy, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [FICHEIRO]...\n"
+" ou: %s [OPCIÓN]\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"Teña en conta que moitos dos operadores necesitan caracteres de escape ou\n"
+"comiñas para as shells.\n"
+"As comparacións son aritméticas se ambos ARGs son números, doutro xeito "
+"serán\n"
+"lexicográficas.\n"
+"Os encaixes dos patróns devolven a cadea entre \\( e \\), ou nada; se non\n"
+"se usan \\( e \\), devólvese o número de caracteres coincidintes ou 0.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#: src/expr.c:175
+#, fuzzy, c-format
+msgid "syntax error"
+msgstr "erro estándar"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "erro ao buscar por expresións regulares"
+
+#: src/expr.c:653 src/expr.c:711
+#, fuzzy, c-format
+msgid "non-numeric argument"
+msgstr "argumento de límite"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr ""
+
+#: src/factor.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [FICHEIRO]...\n"
+" ou: %s [OPCIÓN]\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+
+#: src/factor.c:85
+#, fuzzy
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"Escribir factores de cada NÚMERO; sen argumentos lese da entrada estándar.\n"
+"\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+"\n"
+" Amosa-los factores primos de tódolos NÚMEROs enteiros indicados. Se non "
+"se\n"
+" indicaron argumentos na liña de comandos, lense da entrada estándar.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s é grande de máis"
+
+#: src/factor.c:158
+#, fuzzy, c-format
+msgid "%s is not a valid positive integer"
+msgstr "`%s' non é un enteiro positivo válido"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Uso: %s [-DIXITOS] [OPCIÓN]... [FICHEIRO]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"Reformatar cada parágrafo nos FICHEIROs, escribindo na saída estándar.\n"
+"Se non se indica un FICHEIRO ou se é \"-\", lese da entrada estándar.\n"
+"\n"
+
+#: src/fmt.c:282
+#, fuzzy
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin preserva-lo sangrado das dúas primeiras liñas\n"
+" -p, --prefix=CADEA combinar só as liñas coa CADEA coma prefixo\n"
+" -s, --splitonly parti-las liñas longas, pero non encher\n"
+
+#: src/fmt.c:289
+#, fuzzy
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph sangría da primeira liña diferente da da "
+"segunda\n"
+" -u, --uniform-spacing un espacio entre palabras, dous tralas frases\n"
+" -w, --width=NÚMERO ancho de liña máximo (75 columnas por defecto)\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+
+#: src/fmt.c:400
+#, fuzzy, c-format
+msgid "invalid width: %s"
+msgstr "anchura non válida: \"%s\""
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"Parti-las liñas de entrada de cada FICHEIRO (entrada estándar por defecto),\n"
+"gravando na saída estándar.\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes contar bytes no canto de columnas\n"
+" -s, --spaces partir nos espacios\n"
+" -w, --width=ANCHO empregar ANCHO columnas no canto de 80\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "número de columnas incorrecto: \"%s\""
+
+#: src/head.c:113
+#, fuzzy
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Amosa-las primeiras 10 liñas de cada FICHEIRO na saída estándar.\n"
+"Con máis dun FICHEIRO, preceder cada un cunha cabeceira que dá o nome do\n"
+"ficheiro. Sen un FICHEIRO, ou cando este é -, lese da entrada estándar.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent non amosa-las cabeceiras cos nomes dos ficheiros\n"
+" -v, --verbose amosar sempre as cabeceiras cos nomes dos "
+"ficheiros\n"
+
+#: src/head.c:136
+#, fuzzy
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"TAMAÑO pode ter un sufixo multiplicativo: b para 512, k para 1K, m para 1 "
+"mega.\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "erro lendo %s"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "erro escribindo %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr ""
+
+#: src/head.c:230 src/head.c:1046
+#, fuzzy, c-format
+msgid "%s: number of bytes is too large"
+msgstr "número de bytes a comparar non válido"
+
+#: src/head.c:443
+#, fuzzy, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: non se pode desprazar á posición relativa %s%s"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, fuzzy, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: non se pode desprazar á posición %s%s"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "non se pode move-lo punteiro do ficheiro de %s"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s é tan grande que non é representable"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "número de liñas"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "número de bytes"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "número de liñas incorrecto"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "número de bytes incorrecto"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "%s: opción incorrecta -- %c\n"
+
+#: src/hostid.c:48
+#, fuzzy, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Uso: %s\n"
+" ou: %s OPCIÓN\n"
+"Escribi-lo identificador numérico (en hexadecimal) da máquina actual.\n"
+"\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/hostname.c:65
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Uso: %s [NOME]\n"
+" ou: %s OPCIÓN\n"
+"Amosar ou establece-lo nome da máquina deste sistema.\n"
+"\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "non se poden facer operacións de ioctl en \"%s\""
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+"non se pode establece-lo nome de máquina; o sistema non ten esa capacidade"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "non se pode determina-lo nome da máquina"
+
+#: src/id.c:78
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Uso: %s [OPCIÓN]... CONXUNTO1 [CONXUNTO2]\n"
+
+#: src/id.c:79
+#, fuzzy
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Amosa-la información de NOME_USUARIO, ou do usuario actual.\n"
+"\n"
+" -a ignorada, para compatibilidade con outras versións\n"
+" -g, --group amosar só o ID de grupo\n"
+" -G, --groups amosar só os grupos suplementarios\n"
+" -n, --name amosa-lo nome en vez do número, para as opcións -ugG\n"
+" -r, --real amosa-lo ID real en vez do efectivo, para as opcións -ugG\n"
+" -u, --user amosar só o ID de usuario\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión\n"
+"\n"
+"Sen ningunha OPCIÓN, escríbese un conxunto útil de información de\n"
+"identificación.\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+
+#: src/id.c:152
+#, fuzzy, c-format
+msgid "cannot print only user and only group"
+msgstr "non se poden omiti-lo usuario e o grupo"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr ""
+"non se pode escribir só o nome ou o identificador real no formato por defecto"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Non hai tal usuario"
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "%s: non se pode atopa-lo nome de usuario do UID %u\n"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "non se pode cambia-lo propietario e/ou grupo de %s"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "non se pode obte-la lista de grupos suplementarios"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " grupos="
+
+#: src/install.c:318
+#, fuzzy, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr ""
+"a cadea de formato non se pode especificar ó escribir cadeas da mesma anchura"
+
+#: src/install.c:321
+#, fuzzy, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr ""
+"a cadea de formato non se pode especificar ó escribir cadeas da mesma anchura"
+
+#: src/install.c:369 src/mkdir.c:193
+#, fuzzy, c-format
+msgid "invalid mode %s"
+msgstr "anchura non válida: \"%s\""
+
+#: src/install.c:520
+#, fuzzy, c-format
+msgid "cannot change ownership of %s"
+msgstr "non se pode cambia-los permisos de %s"
+
+#: src/install.c:541
+#, fuzzy, c-format
+msgid "cannot set time stamps for %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/install.c:562
+#, fuzzy, c-format
+msgid "fork system call failed"
+msgstr "ficheiro especial de bloque"
+
+#: src/install.c:566
+#, fuzzy, c-format
+msgid "cannot run strip"
+msgstr "non se pode executar %s"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "erro escribindo %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, fuzzy, c-format
+msgid "invalid user %s"
+msgstr "usuario incorrecto"
+
+#: src/install.c:628
+#, fuzzy, c-format
+msgid "creating directory %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/install.c:651
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Uso: %s [OPCIÓN]... ÚLTIMO\n"
+" ou: %s [OPCIÓN]... PRIMEIRO ÚLTIMO\n"
+" ou: %s [OPCIÓN]... PRIMEIRO INCREMENTO ÚLTIMO\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+
+#: src/install.c:681
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+#, fuzzy
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"O sufixo de copia de seguridade é `~', a menos que se estableza con --"
+"suffix\n"
+"ou con SIMPLE_BACKUP_SUFFIX. O método do control de versión pode ser\n"
+"establecido coa opción --backup ou coa variable de ambiente "
+"VERSION_CONTROL.\n"
+"Os valores poden ser:\n"
+"\n"
+" none, off non facer nunca copias de seguridade (mesmo con --backup)\n"
+" numbered, t facer copias de seguridade numeradas\n"
+" existing, nil copias numeradas se xa existen numeradas, se non simples\n"
+" simple, never facer sempre copias de seguridade simples\n"
+
+#: src/join.c:138
+#, fuzzy
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"Para cada parella de liñas de entrada con campos de join idénticos, amosar\n"
+"unha liña na saída estándar. O campo de join por defecto é o primeiro,\n"
+"delimitado con espacios en branco. Cando FICH1 ou FICH2 (non os dous) é -,\n"
+"lese da entrada estándar.\n"
+"\n"
+" -a LADO amosa-las liñas sen parella que proceden do ficheiro "
+"LADO\n"
+" -e BALEIRO substituí-los campos de entrada baleiros con BALEIRO\n"
+
+#: src/join.c:147
+#, fuzzy
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case ignora-las maiúsculas/minúsculas ao compara-los campos\n"
+" -j CAMPO (obsoleto) equivalente a \"-1 CAMPO -2 CAMPO\"\n"
+" -j1 CAMPO (obsoleto) equivalente a \"-1 CAMPO\"\n"
+" -j2 CAMPO (obsoleto) equivalente a \"-2 CAMPO\"\n"
+" -o FORMATO aplica-lo FORMATO ao construí-la liña de saída\n"
+" -t CAR emprega-lo CARácter coma separador de campos de entrada\n"
+" e saída\n"
+
+#: src/join.c:153
+#, fuzzy
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v LADO coma -a LADO, pero suprimindo as liñas de saída "
+"correctas\n"
+" -1 CAMPO face-lo join neste CAMPO do ficheiro 1\n"
+" -2 CAMPO face-lo join neste CAMPO do ficheiro 2\n"
+
+#: src/join.c:160
+#, fuzzy
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"A menos que se indique -t CAR, os espacios en branco ao principio da liña\n"
+"separan campos e ignóranse; senón os campos sepáranse con CAR. Cada CAMPO é\n"
+"un número de campo que se conta dende 1. FORMATO é unha ou máis "
+"especificacións\n"
+"separadas por comas, cada unha do tipo \"LADO.CAMPO\" ou \"0\". O FORMATO "
+"por\n"
+"defecto amosa o campo de join, os campos restantes de FICHEIRO1 e os campos\n"
+"restantes de FICHEIRO2, todos separados por CAR.\n"
+
+#: src/join.c:617 src/join.c:812
+#, fuzzy, c-format
+msgid "invalid field number: %s"
+msgstr "número de campo incorrecto: \"%s\""
+
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "especificador de campo incorrecto: \"%s\""
+
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "número de ficheiro incorrecto na especificación de campos: \"%s\""
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr ""
+
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "tabulación multi-carácter \"%s\""
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr ""
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "os dous ficheiros non poden ser entrada estándar"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+
+#: src/kill.c:103
+#, fuzzy
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+"Copiar a entrada estándar a cada ficheiro, e tamén á saída estándar.\n"
+"\n"
+" -a, --append engadir ós FICHEIROs indicados, non "
+"sobrescribir\n"
+" -i, --ignore-interrupts ignora-los sinais de interrupción\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+
+#: src/kill.c:161
+#, fuzzy, c-format
+msgid "%s: invalid signal"
+msgstr "%s: PID incorrecto"
+
+#: src/kill.c:266
+#, fuzzy, c-format
+msgid "%s: invalid process id"
+msgstr "%s: patrón incorrecto"
+
+#: src/kill.c:320
+#, fuzzy, c-format
+msgid "invalid option -- %c"
+msgstr "%s: opción incorrecta -- %c\n"
+
+#: src/kill.c:329
+#, fuzzy, c-format
+msgid "%s: multiple signals specified"
+msgstr "\\%c: secuencia de escape non válida"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr ""
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr ""
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr ""
+
+#: src/link.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [FICHEIRO]...\n"
+" ou: %s [OPCIÓN]\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+
+#: src/link.c:95
+#, fuzzy, c-format
+msgid "cannot create link %s to %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+"%s: aviso: facer unha ligazón dura dunha ligazón simbólica non é portable"
+
+#: src/ln.c:165
+#, fuzzy, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "`%s' non é un directorio"
+
+#: src/ln.c:218
+#, fuzzy, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: ¿substituír %s?"
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "a crear a ligazón simbólica de %s a %s"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "a crear a ligazón simbólica de %s a %s"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "a crear a ligazón dura de %s a %s"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "a crear a ligazón dura de %s a %s"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "a crear a ligazón dura de %s a %s"
+
+#: src/ln.c:324
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Uso: %s [OPCIÓN]... ORIXE DESTINO (primeira forma)\n"
+" ou: %s [OPCIÓN]... ORIXE... DIRECTORIO (segunda forma)\n"
+" ou: %s -d [OPCIÓN]... DIRECTORIO (terceira forma)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+
+#: src/ln.c:484
+#, fuzzy, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "%s existe pero non é un directorio"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Uso: %s [OPCIÓN] [FICHEIRO]...\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+
+#: src/logname.c:89
+#, fuzzy, c-format
+msgid "no login name"
+msgstr "%s: número incorrecto"
+
+#: src/ls.c:684
+#, fuzzy
+msgid "%b %e %Y"
+msgstr "%e %b %Y %H:%M"
+
+#: src/ls.c:692
+#, fuzzy
+msgid "%b %e %H:%M"
+msgstr "%e %b %Y %H:%M"
+
+#: src/ls.c:1453
+#, fuzzy, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr ""
+"ignorando o tamaño de tabulador non válido na variable de ambiente TABSIZE: %"
+"s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "ignorando o ancho non válido na variable de ambiente COLUMNS: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr ""
+"ignorando o tamaño de tabulador non válido na variable de ambiente TABSIZE: %"
+"s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, fuzzy, c-format
+msgid "invalid line width: %s"
+msgstr "anchura non válida: \"%s\""
+
+#: src/ls.c:1704
+#, fuzzy, c-format
+msgid "invalid tab size: %s"
+msgstr "cadea de tipo incorrecta \"%s\""
+
+#: src/ls.c:1885
+#, fuzzy, c-format
+msgid "invalid time style format %s"
+msgstr "argumento incorrecto %s para %s"
+
+#: src/ls.c:2229
+#, fuzzy, c-format
+msgid "unrecognized prefix: %s"
+msgstr "opción descoñecida \"-%c\""
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "a variable de ambiente LS_COLORS ten un valor ilexible"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, fuzzy, c-format
+msgid "cannot open directory %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/ls.c:2344
+#, fuzzy, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "non se pode move-lo punteiro do ficheiro de %s"
+
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, fuzzy, c-format
+msgid "reading directory %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/ls.c:2410
+#, fuzzy, c-format
+msgid "closing directory %s"
+msgstr "non se pode cambiar ao directorio %s"
+
+#: src/ls.c:2918
+#, fuzzy, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "As cadeas que se compararon foron %s e %s"
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+
+#: src/ls.c:4360
+#, fuzzy
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -g (ignorada)\n"
+" -G, --no-group non amosa-la información do grupo\n"
+" -h, --human-readable escribi-los tamaños nun formato lexible para\n"
+" humanos (p.ex. 1K 234M 2G)\n"
+" --si o mesmo, mais usando potencias de 1000, non "
+"1024\n"
+" -H igual que `--si' por agora; cambiará para "
+"seguir\n"
+" a norma POSIX\n"
+" --indicator-style=PALABRA engadir un indicador de estilo PALABRA aos\n"
+" nomes das entradas: none [ningún] "
+"(defecto),\n"
+" classify [clasificar] (-F), file-type\n"
+" [tipo de ficheiro] (-p)\n"
+" -i, --inode escribi-lo número de índice de cada ficheiro\n"
+" -I, --ignore=PATRÓN non amosa-las entradas que encaixen co PATRÓN\n"
+" de shell\n"
+" -k, --kilobytes coma --block-size=1024\n"
+" -l usar un formato longo de listaxe\n"
+" -L, --dereference amosa-las entradas apuntadas polas ligazóns\n"
+" simbólicas\n"
+" -m encher ao ancho cunha lista de entradas "
+"separadas\n"
+" por coma\n"
+" -n, --numeric-uid-gid amosar UIDs e GIDs numéricos en vez dos nomes\n"
+" -N, --literal amosa-los nomes reais (non tratar p.ex. os\n"
+" caracteres de control como especiais)\n"
+" -o usar un formato de listado longo sen a "
+"información\n"
+" do grupo\n"
+" -p, --file-type engadir un indicador ás entradas (un de /=@|)\n"
+" -q, --hide-control-chars escribir ? en vez dos caracteres non gráficos\n"
+" --show-control-chars amosa-los caracteres non gráficos tal como son\n"
+" (predeterminado a menos que o programa sexa\n"
+" `ls' e a saída sexa un terminal)\n"
+" -Q, --quote-name arrodea-los nomes entre comiñas\n"
+" --quoting-style=PALABRA utiliza-lo estilo de cita PALABRA para os "
+"nomes\n"
+" das entradas:\n"
+" literal, shell, shell-always, c, escape\n"
+" -r, --reverse inverte-la orde ao face-la ordenación\n"
+" -R, --recursive amosa-los subdirectorios recursivamente\n"
+" -s, --size escribi-lo tamaño de cada ficheiro, en bloques\n"
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+
+#: src/ls.c:4402
+#, fuzzy
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -f, --fields=LISTA amosar só estes campos; tamén amosa calquera liña\n"
+" que non conteña o carácter delimitador, agás se\n"
+" se indica a opción -s\n"
+" -n (ignórase)\n"
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#: src/md5sum.c:150
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Emprego: %s [OPCIÓN] [FICHEIRO]...\n"
+" ou: %s [OPCIÓN] --check [FICHEIRO]\n"
+"Amosar ou comprobar sumas de comprobación %s (de %d bits).\n"
+"Sen un FICHEIRO, ou cando o FICHEIRO é -, lese da entrada estándar.\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+"\n"
+" -B, --binary usar escrituras binarias á consola.\n"
+"\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+#, fuzzy
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"As seguintes dúas opcións son útiles só ao comproba-las sumas:\n"
+" --status non amosar nada; o código de estado indica o "
+"éxito\n"
+" -w, --warn abisar das liñas mal formatadas\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"As sumas calcúlanse tal como se describe en %s. Ao comprobar, a entrada\n"
+"debería ser unha saída anterior deste programa. O modo por defecto é amosar\n"
+"unha liña con suma de comprobación, un carácter que indica tipo (\"*\" para\n"
+"binario, \" \" para texto) e o nome de cada FICHEIRO.\n"
+
+#: src/md5sum.c:459
+#, fuzzy, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: non se atoparon liñas de suma de comprobación %s ben formatadas"
+
+#: src/md5sum.c:481
+#, fuzzy, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %lu: liña de suma de comprobación %s mal formatada"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: apertura ou lectura FALLIDA\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "FALLA"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "OK"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: erro de lectura"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: non se atoparon liñas de suma de comprobación %s ben formatadas"
+
+#: src/md5sum.c:562
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "AVISO: non se puido ler %d de %d %s listados"
+msgstr[1] "AVISO: non se puido ler %d de %d %s listados"
+
+#: src/md5sum.c:574
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "AVISO: NON coincidiron %d de %d %s calculadas"
+msgstr[1] "AVISO: NON coincidiron %d de %d %s calculadas"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"as opcións --binary e --text non teñen sentido cando se comproban sumas"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "a opción --status ten sentido só cando se verifican sumas"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "a opción --warn ten sentido só cando se verifican sumas"
+
+#: src/mkdir.c:59
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Uso: %s [OPCIÓN] [FICHEIRO]...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+"Crea o(s) DIRECTORIO(s), se aínda non existen.\n"
+"\n"
+" -m, --mode=MODO establece-los permisos a MODO (coma en chmod), en vez\n"
+" de rwxrwxrwx - umask\n"
+" -p, --parents suprimi-los erros se xa existe, crea-los directorios\n"
+" pais se for necesario\n"
+" -v, --verbose escribir unha mensaxe por cada directorio creado\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/mkdir.c:168
+#, fuzzy, c-format
+msgid "created directory %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/mkfifo.c:54
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Uso: %s [OPCIÓN] [FICHEIRO]...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+"Crea tuberías nomeadas (FIFOs) cos NOMEs indicados.\n"
+"\n"
+" -m, --mode=MODO establece-los permisos a MODO (coma en chmod), en vez\n"
+" de a=rw - umask\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, fuzzy, c-format
+msgid "invalid mode"
+msgstr "número incorrecto"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Uso: %s [OPCIÓN]... CONXUNTO1 [CONXUNTO2]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+
+#: src/mknod.c:76
+#, fuzzy
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"Crea o ficheiro especial NOME do TIPO indicado.\n"
+"\n"
+" -m, --mode=MODO establece-los permisos a MODO (coma en chmod), en vez\n"
+" de a=rw - umask\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+"\n"
+"MAJOR e MINOR están prohibidos para o TIPO p, obrigatorios noutros casos.\n"
+"O TIPO pode ser:\n"
+"\n"
+" b crea un ficheiro especial de bloques (buffered)\n"
+" c, u crea un ficheiro especial de caracteres (unbuffered)\n"
+" p crea unha FIFO\n"
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"ao crear ficheiros especiais de bloque, débense indicar os números\n"
+"de dispositivo `major' e `minor'"
+
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "número de liña inicial incorrecto: \"%s\""
+
+#: src/mknod.c:167
+#, fuzzy, c-format
+msgid "block special files not supported"
+msgstr "ficheiro especial de bloque"
+
+#: src/mknod.c:176
+#, fuzzy, c-format
+msgid "character special files not supported"
+msgstr "ficheiro especial de carácter"
+
+#: src/mknod.c:192
+#, fuzzy, c-format
+msgid "invalid major device number %s"
+msgstr "número de liña inicial incorrecto: \"%s\""
+
+#: src/mknod.c:197
+#, fuzzy, c-format
+msgid "invalid minor device number %s"
+msgstr "número de liña inicial incorrecto: \"%s\""
+
+#: src/mknod.c:202
+#, fuzzy, c-format
+msgid "invalid device %s %s"
+msgstr "argumento incorrecto %s para %s"
+
+#: src/mknod.c:216
+#, fuzzy, c-format
+msgid "invalid device type %s"
+msgstr "argumento incorrecto %s para %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+
+#: src/mv.c:308
+#, fuzzy
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+"Renomea ORIXE a DESTINO, ou mover ORIXE(s) a DIRECTORIO.\n"
+"\n"
+" --backup[=CONTROL] facer unha copia de seguridade de cada "
+"ficheiro\n"
+" destino\n"
+" -b como --backup mais sen aceptar argumentos\n"
+" -f, --force non preguntar antes de sobrescribir\n"
+" -i, --interactive preguntar antes de sobrescribir\n"
+" --strip-trailing-slashes elimina-las barras finais de tódolos\n"
+" argumentos ORIXE\n"
+" -S, --suffix=SUFIXO substituí-lo sufixo habitual de copia de\n"
+" seguridade\n"
+" --target-directory=DIRECTORIO mover tódolos argumentos ORIXE ao\n"
+" DIRECTORIO\n"
+" -u, --update mover só os non-directorios máis antigos ou\n"
+" os recentes\n"
+" -v, --verbose explica-lo que está a se facer\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/nice.c:76
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Uso: %s [OPCIÓN] [FICHEIRO]...\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "argumento incorrecto %s para %s"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "ten que se dar un comando co axuste"
+
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "non se pode crea-lo ficheiro temporal"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "non se pode establece-la data"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Amosar cada FICHEIRO na saída estándar, engadindo os números de liña.\n"
+"Sen un FICHEIRO, ou cando este é -, lese da entrada estánda.\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=ESTILO usa-lo ESTILO para numera-las liñas do "
+"corpo\n"
+" -d, --section-delimiter=CC empregar CC para separa-las páxinas "
+"lóxicas\n"
+" -f, --footer-numbering=ESTILO usa-lo ESTILO para numera-las liñas do pé\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=ESTILO emprega-lo ESTILO para numera-las liñas\n"
+" da cabeceira\n"
+" -i, --page-increment=NÚMERO incremento do número de liña en cada liña\n"
+" -l, --join-blank-lines=NÚMERO contar cada grupo de NÚMERO liñas "
+"baleiras\n"
+" coma unha soa liña\n"
+" -n, --number-format=FORMATO inseri-los números de liña seguindo o "
+"FORMATO\n"
+" -p, --no-renumber non reinicia-los números de liña con cada\n"
+" páxina lóxica\n"
+" -s, --number-separator=CADEA engadi-la CADEA tras cada número de liña\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=NÚMERO primeiro número de liña nas páxinas "
+"lóxicas\n"
+" -w, --number-width=NÚMERO empregar NÚMERO columnas nos números de "
+"liña\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"Por defecto selecciona -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC son\n"
+"dous caracteres delimitadores para separar páxinas lóxicas; use non se\n"
+"indica o segundo carácter suponse :. Escriba \\\\ para obter \\.\n"
+"ESTILO pode ser:\n"
+
+#: src/nl.c:214
+#, fuzzy
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a numerar tódalas liñas\n"
+" t numerar só as liñas que non estean baleiras\n"
+" n non numerar ningunha liña\n"
+" pEXPREG numera-las liñas que encaixen na expresión regular EXPREG\n"
+"\n"
+"FORMATO pode ser:\n"
+"\n"
+" ln xustificado á esquerda, sen ceros á esquerda\n"
+" rn xustificado á dereita, sen ceros á esquerda\n"
+" rz xustificado á dereita, con ceros á esquerda\n"
+"\n"
+
+#: src/nl.c:281
+#, fuzzy, c-format
+msgid "line number overflow"
+msgstr "o número do campo é cero"
+
+#: src/nl.c:479
+#, fuzzy, c-format
+msgid "invalid header numbering style: %s"
+msgstr "número de campo incorrecto: \"%s\""
+
+#: src/nl.c:487
+#, fuzzy, c-format
+msgid "invalid body numbering style: %s"
+msgstr "número incorrecto"
+
+#: src/nl.c:495
+#, fuzzy, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "número de ficheiro incorrecto na especificación de campos: \"%s\""
+
+#: src/nl.c:504
+#, fuzzy, c-format
+msgid "invalid starting line number: %s"
+msgstr "número de liña inicial incorrecto: \"%s\""
+
+#: src/nl.c:513
+#, fuzzy, c-format
+msgid "invalid line number increment: %s"
+msgstr "incremento de números de liña incorrecto: \"%s\""
+
+#: src/nl.c:525
+#, fuzzy, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "número de liñas en blanco incorrecto: \"%s\""
+
+#: src/nl.c:539
+#, fuzzy, c-format
+msgid "invalid line number field width: %s"
+msgstr "ancho do campo do número de liña incorrecto: \"%s\""
+
+#: src/nl.c:558
+#, fuzzy, c-format
+msgid "invalid line numbering format: %s"
+msgstr "incremento de números de liña incorrecto: \"%s\""
+
+#: src/nohup.c:57
+#, fuzzy, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [FICHEIRO]...\n"
+" ou: %s [OPCIÓN]\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "demasiados argumentos"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, fuzzy, c-format
+msgid "failed to open %s"
+msgstr "mantense a data de %s"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr ""
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr ""
+
+#: src/od.c:307
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Uso: %s [OPCIÓN]... [FICHEIRO]...\n"
+" ou: %s --traditional [FICHEIRO] [[+]DESPRAZAMENTO [[+]ETIQUETA]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"Escribir na saída estándar unha representación non ambigua, con\n"
+"bytes octais por defecto, do FICHEIRO. Con máis dun argumento de\n"
+"FICHEIRO, concatenalos na orde listada para forma-la entrada. Sen\n"
+"un FICHEIRO, ou se este é -, lese da entrada estándar.\n"
+"\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+"Tódolos argumentos para as opcións longas son obrigatorios nas opcións "
+"curtas.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=BASE indicar como se amosan os desprazamentos\n"
+" -j, --skip-bytes=BYTES omiti-los primeiros BYTES bytes de entrada\n"
+
+#: src/od.c:327
+#, fuzzy
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=BYTES limita-lo envorado a BYTES bytes de entrada\n"
+" -s, --strings[=BYTES] usar cadeas de alomenos BYTES caracteres "
+"gráficos\n"
+" -t, --format=TIPO escolle-lo formato ou formatos de saída\n"
+" -v, --output-duplicatoes non empregar * para indica-las liñas borradas\n"
+" -w, --width[=BYTES] amosar BYTES bytes por liña de saída\n"
+" --traditional acepta-los argumentos en formato tradicional\n"
+
+#: src/od.c:337
+#, fuzzy
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"As especificacións de formtao tradicionais pódense mesturar; acumúlanse:\n"
+" -a igual que -t a, escoller caracteres nomeados\n"
+" -b igual que -t oC, escoller bytes octais\n"
+" -c igual que -t c, escoller caracteres ASCII ou escapados\n"
+" -d igual que -t u2, escoller números curtos decimais sen signo\n"
+
+#: src/od.c:345
+#, fuzzy
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f igual que -t fF, escoller números en punto flotante\n"
+" -h igual que -t x2, escoller números curtos hexadecimais\n"
+" -i igual que -t d2, escoller números curtos decimais\n"
+" -l igual que -t d4, escoller números longos decimais\n"
+" -o igual que -t o2, escoller números curtos octais\n"
+" -x igual que -t x2, escoller números curtos hexadecimais\n"
+
+#: src/od.c:353
+#, fuzzy
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"Para a sintaxe antiga (segundo formato de chamada), DESPRAZAMENTO significa\n"
+"-j DESPRAZAMENTO. ETIQUETA é o pseudo-enderezo do primeiro byte imprimido,\n"
+"que se incrementa segundo o envorcado progresa. Para o DESPRAZAMENTO e a\n"
+"ETIQUETA, un prefixo 0x ou 0X indica hexadecimal; os sufixos poden ser .\n"
+"para octal e b para multiplicar por 512.\n"
+"\n"
+"TIPO componse de unha ou máis destas especificacións:\n"
+"\n"
+" a carácter con nome\n"
+" c carácter ASCII ou escapado\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[TAMAÑO] decimal con signo, TAMAÑO bytes por enteiro\n"
+" f[TAMAÑO] punto flotante, TAMAÑO bytes por enteiro\n"
+" o[TAMAÑO] octal, TAMAÑO bytes por enteiro\n"
+" u[TAMAÑO] decimal sen signo, TAMAÑO bytes por enteiro\n"
+" x[TAMAÑO] hexadecimal, TAMAÑO bytes por enteiro\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"TAMAÑO é un número. Para cada TIPO de doux, TAMAÑO tamén pode ser C\n"
+"para sizeof(char), S para sizeof(short), I para sizeof(int) ou L para\n"
+"sizeof(long). Se TIPO é f, TAMAÑO tamén pode ser F para sizeof(float),\n"
+"D para sizeof(double) ou L para sizeof(long double).\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"BASE é d para decimal, o para octal, x para hexadecimao ou n para ningunha.\n"
+"BYTES é hexadecimal cun prefixo 0x ou 0X; multiplícase por 512 cun sufixo\n"
+"b, por 1024 con k e por 1048576 con m. Ao engadir un sufixo z a calquera\n"
+"tipo engádese unha mostra de caracteres imprimibles á final de cada liña\n"
+"de saída. "
+
+#: src/od.c:391
+#, fuzzy
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"--string sen un número implica 3. --width sen un número implica 32.\n"
+"Por defecto, od emprega -A o -t d2 -w 16.\n"
+
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "cadea de tipo incorrecta \"%s\""
+
+#: src/od.c:693
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"cadea de tipo incorrecta \"%s\";\n"
+"este sistema non proporciona un tipo integral de %lu bytes"
+
+#: src/od.c:812
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"cadea de tipo incorrecta \"%s\";\n"
+"este sistema non proporciona un tipo de punto flotante de %lu bytes"
+
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "carácter \"%c\" incorrecto na cadea de tipo \"%s\""
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "non se pode saltar máis aló do final da entrada combinada"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+"base de direccións de saída \"%c\" incorrecta; debe ser un carácter de [doxn]"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "argumento de salto"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "argumento de límite"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "lonxitude mínima da cadea"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "especificación do ancho"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "non se pode especificar un tipo ao volcar cadeas"
+
+#: src/od.c:1844
+#, fuzzy
+msgid "Compatibility mode supports at most one file."
+msgstr "o modo de compatibilidade soporta 3 argumentos como moito"
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr ""
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "aviso: ancho %lu incorrecto; usando %d na súa vez"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: fmt=\"%s\" ancho=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "a entrada estándar está pechada"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Escribi-las liñas que consisten nas liñas correspondentes secuenciamente de\n"
+"cada FICHEIRO, separadas por tabulacións, na saída estándar.\n"
+"Sen un FICHEIRO, ou cando o FICHEIRO é -, lese da entrada estándar.\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=LISTA utilizar carácters da LISTA no canto de "
+"tabulacións\n"
+" -s, --serial pegar un ficheiro de cada vez no canto de en "
+"paralelo\n"
+
+#: src/pathchk.c:99
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Uso: %s [OPCIÓN]... [FICHEIRO]...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "carácter \"%c\" incorrecto na cadea de tipo \"%s\""
+
+#: src/pathchk.c:282
+#, fuzzy, c-format
+msgid "empty file name"
+msgstr "ficheiro normal baleiro"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Nome de usuario: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "Na vida real: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, fuzzy, c-format
+msgid "Directory: "
+msgstr "directorio"
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Shell: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Proxecto: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "Plan:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Login"
+
+#: src/pinky.c:423
+#, fuzzy
+msgid "Name"
+msgstr " Nome"
+
+#: src/pinky.c:424
+#, fuzzy
+msgid " TTY"
+msgstr "TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Inactivo"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Cando"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Onde"
+
+#: src/pinky.c:510
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Uso: %s [OPCIÓN]... [FICHEIRO]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+
+#: src/pinky.c:612
+#, fuzzy, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr "non se pode especificar ficheiros cando se usa --string"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr ""
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "\"--pages=PRIMEIRA_PÁXINA[:ÚLTIMA_PÁXINA]\" falta un argumento"
+
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "cadea de tipo incorrecta \"%s\""
+
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "\"-l LONXITUDE\" número de liñas incorrecto: \"%s\""
+
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "\"-N NÚMERO\" número de liña inicial incorrecto: \"%s\""
+
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "\"-o MARXE\" desprazamento de liña incorrecto: \"%s\""
+
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "\"-w ANCHO_PAXINA\" número de caracteres incorrecto: \"%s\""
+
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "\"-W ANCHO_PAXINA\" número de caracteres incorrecto: \"%s\""
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "Non se pode especifica-lo número de columnas ao imprimir en paralelo."
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "Non se pode especifica-la impresión a través e en paralelo á vez."
+
+#: src/pr.c:1202
+#, fuzzy, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "\"-%c\" caracteres extra ou número non válido no argumento: \"%s\""
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "páxina demasiado estreita"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2406
+#, fuzzy, c-format
+msgid "Page number overflow"
+msgstr "o número do campo é cero"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+"Paxinar ou encolumna-lo(s) FICHEIRO(s) para imprimir.\n"
+"\n"
+
+#: src/pr.c:2779
+#, fuzzy
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +PRIMEIRA[:DERRADEIRA], --pages=PRIMEIRA[:DERRADEIRA]\n"
+" comezar [parar] a impresión na páxina PRIMEIRA "
+"[DERRADEIRA]\n"
+" -COLUMNA, --columns=COLUMNA\n"
+" producir unha saída en varias COLUMNAS, e imprimi-las\n"
+" columnas, agás se se emprega -a. Balancea-lo número de\n"
+" liñas nas columnas de cada páxina.\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across separar en filas horizontais no canto de en columnas\n"
+" verticais; emprégase con -COLUMNA\n"
+" -c, --show-control-chars\n"
+" emprega-la notación do circunflexo (^G) e da barra "
+"octal\n"
+" -d, --double-space\n"
+" amosa-la saída a doble espacio\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=FORMATO\n"
+" emprega-lo FORMATO para a data da cabeceira\n"
+" -e[CAR[ANCHO]], --expand-tabs[=CAR[ANCHO]]\n"
+" expandi-los CARacteres de entrada (tabulacións) ao\n"
+" ANCHO de tabulación (8)\n"
+" -F, -f, --form-feed\n"
+" empregar saltos de páxina no canto de saltos de liña "
+"para\n"
+" separa-las páxinas (cunha cabeceira de páxina de tres\n"
+" liñas con -F ou unha cabeceira e pé de 5 liñas sen -"
+"F)\n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h CABECEIRA, --header=CABECEIRA\n"
+" empregar unha CABECEIRA centrada no canto do nome do\n"
+" ficheiro na cabeceira da páxina. -h \"\" amosa unha "
+"liña\n"
+" e branco; non empregue -h\"\"\n"
+" -i[CAR[ANCHO]], -output-tabs[=CAR[ANCHO]]\n"
+" cambia-los CARacteres (tabulacións) por espacios ata o\n"
+" ANCHO das tabulacións (8)\n"
+" -J, --join-lines mesturar liñas completas; desactiva o truncamento de "
+"liñas\n"
+" de -W, sen aliñamento de columnas, --sep-string[=CADEA\n"
+" estabrece os separadores\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l LONXITUDE, --length=LONXITUDE\n"
+" estabrece-la lonxitude das páxinas a LONXITUDE (66) "
+"liñas\n"
+" (o número de liñas de texto por defecto é 56, e con -F "
+"63)\n"
+" -m, --merge amosar tódolos ficheiros en paralelo, un en cada "
+"columna,\n"
+" trunca-las liñas, pero uni-las liñas de lonxitude\n"
+" completa con -J\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[SEP[CIFRAS]], --number-lines[=SEP[CIFRAS]]\n"
+" numera-las liñas, empregando CIFRAS (5) cifras, e "
+"despois\n"
+" un SEParador (tabulación); a conta comeza por defecto "
+"na\n"
+" primeira liña do ficheiro de entrada\n"
+" -N NÚMERO, --first-line-number=NÚMERO\n"
+" comezar a contar no NÚMERO na primeira liña da primeira\n"
+" páxina imprimida (vexa +PRIMEIRA)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o MARXE, --indent=MARXE\n"
+" desprazar cada liña con MARXE (cero) espacios; non ten\n"
+" efecto sobre -w ou -W, MARXE hase engadir a ANCHO\n"
+" -r, --no-file-warnings\n"
+" omiti-lo aviso cando non se pode abrir un ficheiro\n"
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[CAR], --separator[=CAR]\n"
+" separa-las columnas cun só carácter; o valor por "
+"defecto\n"
+" de CAR é a tabulación sen -w e \"ningún\" con -w\n"
+" -s[CAR] desactiva o truncamento das liñas en tódalas\n"
+" opcións de tres columnas (-COLUMNA|-a -COLUMNA|-m) agás\n"
+" se -w está estabrecido\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -SCADEA, --sep-string[=CADEA]\n"
+
+#: src/pr.c:2846
+#, fuzzy
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" separa-las columnas coa CADEA,\n"
+" sen -S: Separador por defecto (tabulación) con -J e\n"
+" <espacio> noutro caso (igual que -S\" \"), sen efecto "
+"nas\n"
+" opcións de columnas\n"
+" -t, --omit-header omiti-las cabeceiras e pés de páxina\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" omiti-las cabeceiras e pés de páxina, e elimina-las\n"
+" paxinacións estabrecidas mediante saltos de páxina nos\n"
+" ficheiros de entrada\n"
+" -v, --show-nonprinting\n"
+" emprega-la notación de barra octal\n"
+" -w, ANCHO, --width=ANCHO\n"
+" estabrece-lo ancho da páxina a ANCHO (72) caracteres só\n"
+" para o formato de saída de varias solumnas de texto,\n"
+" -s[car] desactívao (72)\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W ANCHO, --page-width=ANCHO\n"
+" estabrecer sempre o ancho da páxina a ANCHO (72)\n"
+" caracteres, trunca-las liñas, agás cando a opción -J "
+"estea\n"
+" estabrecida; non interfire con -S ou -s\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"-T vai incluído en -l nn cando nn <= 10 ou <= 3 con -F. Sen un FICHEIRO, ou\n"
+"cando o FICHEIRO é -, lese da entrada estándar.\n"
+
+#: src/printenv.c:61
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Uso: %s [VARIABLE]...\n"
+" ou: %s OPCIÓN\n"
+"Se non se indica ningunha VARIABLE de ambiente, escribir todas elas.\n"
+"\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+"aviso: %s: os caracteres que seguen á constante de carácter foron ignorados"
+
+#: src/printf.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [FICHEIRO]...\n"
+" ou: %s [OPCIÓN]\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: agardábase un valor numérico"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: valor non convertido por completo"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "falta un número hexadecimal na secuencia de escape"
+
+#: src/printf.c:289
+#, fuzzy, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "clase de caracteres \"%s\" incorrecta"
+
+#: src/printf.c:550
+#, fuzzy, c-format
+msgid "invalid field width: %s"
+msgstr "anchura non válida: \"%s\""
+
+#: src/printf.c:585
+#, fuzzy, c-format
+msgid "invalid precision: %s"
+msgstr "opción de anchura non válida: \"%s\""
+
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%s: especificación de campo incorrecta \"%s\""
+
+#: src/printf.c:683
+#, fuzzy, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "aviso: os argumentos de máis foron ignorados"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr ""
+
+#: src/ptx.c:422
+#, fuzzy, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (para a expresión regular \"%s\")"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Uso: %s [OPCIÓN]... [ENTRADA]... (sen -G)\n"
+" ou: %s -G [OPCIÓN] [ENTRADA [SAÍDA]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"Amosar un índice permutado, incluíndo o contexto, das palabras dos ficheiros "
+"de entrada.\n"
+"\n"
+
+#: src/ptx.c:1894
+#, fuzzy
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference amosa-las referencias xeradas "
+"automaticamente\n"
+" -C, --copyright amosa-lo Copyright e as condicións de copia\n"
+" -G, --traditional funcionar coma o \"ptx\" de System V\n"
+" -F, --flag-truncation=CADEA emprega-la CADEA para marca-las liñas "
+"truncadas\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=CADEA nome de macro a empregar no canto de \"xx"
+"\"\n"
+" -O, --format=roff xera-la saída coma directivas roff\n"
+" -R, --right-side-refs pór referencias á dereita, sen contalas en -"
+"w\n"
+" -S, --sentence-regexp=EXPREG para a fin de liña ou fin de oración\n"
+" -T, --format=tex xera-la saída coma directivas TeX\n"
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=EXPREG emprega-la EXPREG para compara-las claves\n"
+" -b, --break-file=FICHEIRO caracteres que parten palabras neste "
+"FICHEIRO\n"
+" -f, --ignore-case converte-las minúsculas a maiúsculas\n"
+" para ordear\n"
+" -g, --gap-size=NÚMERO tamaño do oco entre campos de saída\n"
+" -i, --ignore-file=FICHEIRO le-la lista de palabras ignoradas do "
+"FICHEIRO\n"
+" -o, --only-file=FICHEIRO le-la lista de palabras únicas do FICHEIRO\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references o primeiro campo de cada liña é unha\n"
+" referencia\n"
+" -t, --typeset-mode - sen implementar -\n"
+" -w, --width=NÚMERO ancho da saída, excluíndo referencias\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"Sen un FICHEIRO, ou se o FICHEIRO é -, lese da entrada estándar.\n"
+"\"-F /\" por defecto.\n"
+
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "anchura non válida: \"%s\""
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr ""
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+
+#: src/pwd.c:160
+#, fuzzy, c-format
+msgid "failed to chdir to %s"
+msgstr "non foi posible mudar o grupo de %s a %s\n"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "obtendo os atributos de %s"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, fuzzy, c-format
+msgid "ignoring non-option arguments"
+msgstr "demasiados argumentos"
+
+#: src/readlink.c:67
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Uso: %s [OPCIÓN]... [FICHEIRO]...\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "non se pode cambiar ao directorio %s"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, fuzzy, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"AVISO: Estructura circular de directorios.\n"
+"Con probabilidad isto quere dicir que o sistema de ficheiros está "
+"corrompido.\n"
+"INFÓRMEO AO SEU ADMINISTRADOR DE SISTEMA\n"
+"Os dous seguintes directorios teñen o mesmo número de inodo:\n"
+
+#: src/remove.c:854
+#, fuzzy, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/remove.c:855
+#, fuzzy, c-format
+msgid "%s: descend into directory %s? "
+msgstr "non se pode cambiar ao directorio %s"
+
+#: src/remove.c:865
+#, fuzzy, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: ¿borra-lo ficheiro protexido contra escritura %s? "
+
+#: src/remove.c:866
+#, fuzzy, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: ¿borrar %s? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, fuzzy, c-format
+msgid "removed directory: %s\n"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "non se pode cambiar ao directorio %s"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, fuzzy, c-format
+msgid "cannot remove directory %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/remove.c:1450
+#, fuzzy, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "non se pode cambiar ao directorio %s"
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/remove.c:1558
+#, fuzzy, c-format
+msgid "cannot restore current working directory"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#: src/rm.c:160 src/touch.c:233
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Uso: %s [OPCIÓN]... [FICHEIRO]...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: ¿borrar %s? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, fuzzy, c-format
+msgid "removing directory, %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/rmdir.c:140
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Uso: %s [OPCIÓN]... [FICHEIRO]...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+
+#: src/rmdir.c:148
+#, fuzzy
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+"Borra o(s) DIRECTORIO(s), se están baleiros.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignora-los erros producidos soamente porque o directorio\n"
+" non está baleiro\n"
+" -p, --parents borra-lo directorio, e entón tentar borrar tódolos\n"
+" directorios compoñentes do seu camiño. P.ex,\n"
+" `rmdir -p a/b/c' é similar a `rmdir a/b/c a/b a'\n"
+" -v, --verbose amosar unha mensaxe por cada directorio procesado\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información e saír\n"
+
+#: src/seq.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Uso: %s [OPCIÓN]... [ENTRADA]... (sen -G)\n"
+" ou: %s -G [OPCIÓN] [ENTRADA [SAÍDA]]\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"Escribi-los números dende PRIMEIRO a ÚLTIMO, en incrementos de INCREMENTO.\n"
+"\n"
+" -f, --format FORMATO usar un FORMATO de estilo printf(3) (defecto: %%"
+"g)\n"
+" -s, --separator CADEA usar CADEA para separa-los números (defecto: "
+"\\n)\n"
+" -w, --equal-width iguala-la anchura recheando con ceros ó comezo\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+"\n"
+"Se non se indican PRIMEIRO ou INCREMENTO, por defecto son 1.\n"
+"PRIMEIRO, INCREMENTO e ÚLTIMO interprétanse coma valores de coma frotante.\n"
+"INCREMENTO ten que ser positivo se PRIMEIRO é máis pequeno que ÚLTIMO, e\n"
+"negativo doutro xeito. Se se indica, o argumento de FORMATO ten que conter\n"
+"só un dos formatos de coma frotante de estilo printf %%e, %%f, %%g.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, fuzzy, c-format
+msgid "invalid floating point argument: %s"
+msgstr "número de liña inicial incorrecto: \"%s\""
+
+#: src/seq.c:342
+#, fuzzy, c-format
+msgid "invalid format string: %s"
+msgstr "cadea de tipo incorrecta \"%s\""
+
+#: src/seq.c:364
+#, fuzzy, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr "non se pode especificar un tipo ao volcar cadeas"
+
+#: src/setuidgid.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [FICHEIRO]...\n"
+" ou: %s [OPCIÓN]\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr ""
+
+#: src/setuidgid.c:109
+#, fuzzy, c-format
+msgid "cannot set supplemental group"
+msgstr "non se pode obte-la lista de grupos suplementarios"
+
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "non se poden omiti-lo usuario e o grupo"
+
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "non se poden omiti-lo usuario e o grupo"
+
+#: src/shred.c:165
+#, fuzzy, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Uso: %s [OPCIÓN] [FICHEIRO]...\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+
+#: src/shred.c:303
+#, fuzzy, c-format
+msgid "%s: fdatasync failed"
+msgstr "a obtención de datos do ficheiro fallou"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr ""
+
+#: src/shred.c:391
+#, fuzzy, c-format
+msgid "%s: cannot rewind"
+msgstr "non se pode executar %s"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: pasada %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, fuzzy, c-format
+msgid "%s: error writing at offset %s"
+msgstr "erro escribindo %s"
+
+#: src/shred.c:478
+#, fuzzy, c-format
+msgid "%s: lseek failed"
+msgstr "o peche fallou"
+
+#: src/shred.c:489
+#, fuzzy, c-format
+msgid "%s: file too large"
+msgstr "%s: ficheiro longo de máis"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: pasada %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, fuzzy, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: pasada %lu/%lu (%s)...%s/%s"
+
+#: src/shred.c:776
+#, fuzzy, c-format
+msgid "%s: fstat failed"
+msgstr "a obtención de datos do ficheiro fallou"
+
+#: src/shred.c:787
+#, fuzzy, c-format
+msgid "%s: invalid file type"
+msgstr "%s: lonxitude do sufixo non válida"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: o ficheiro ten un tamaño negativo"
+
+#: src/shred.c:873
+#, fuzzy, c-format
+msgid "%s: error truncating"
+msgstr "%s: ficheiro truncado"
+
+#: src/shred.c:889
+#, fuzzy, c-format
+msgid "%s: fcntl failed"
+msgstr "a obtención de datos do ficheiro fallou"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr ""
+"%s: non se pode facer un borrado seguro dun descriptor de ficheiro\n"
+"de tipo só-engadir"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: borrando"
+
+#: src/shred.c:996
+#, fuzzy, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: erro de lectura"
+
+#: src/shred.c:1018
+#, fuzzy, c-format
+msgid "%s: failed to remove"
+msgstr "%s: ficheiro longo de máis"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: borrado"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, fuzzy, c-format
+msgid "%s: failed to close"
+msgstr "%s: ficheiro longo de máis"
+
+#: src/shred.c:1065
+#, fuzzy, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: ficheiro longo de máis"
+
+#: src/shred.c:1130
+#, fuzzy, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: número de segundos incorrecto"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "\\%c: secuencia de escape non válida"
+
+#: src/shred.c:1153
+#, fuzzy, c-format
+msgid "%s: invalid file size"
+msgstr "%s: lonxitude do sufixo non válida"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Uso: %s [OPCIÓN]... [ENTRADA]... (sen -G)\n"
+" ou: %s -G [OPCIÓN] [ENTRADA [SAÍDA]]\n"
+
+#: src/shuf.c:57
+#, fuzzy
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"Amosar partes seleccionadas das liñas de cada FICHEIRO na saída estándar.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "\\%c: secuencia de escape non válida"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "número incorrecto"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "anchura non válida: \"%s\""
+
+#: src/shuf.c:327 src/sort.c:2998
+#, fuzzy, c-format
+msgid "multiple output files specified"
+msgstr "\\%c: secuencia de escape non válida"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "non se pode move-lo punteiro do ficheiro de %s"
+
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr "operando \"%s\" extra"
+
+#: src/sleep.c:47
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Uso: %s NÚMERO[SUFIXO]...\n"
+" ou: %s OPCIÓN\n"
+"Facer unha pausa de NÚMERO segundos. SUFIXO pode ser `s' para segundos, "
+"`m'\n"
+"para minutos, `h' para horas ou `d' para días. Ó contrario que a maioría "
+"das\n"
+"implementacións, que requiren que NÚMERO sexa un enteiro, aquí NÚMERO pode "
+"ser\n"
+"calquera número de coma frotante.\n"
+"\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "número de campo incorrecto: \"%s\""
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "non se pode le-lo reloxo coa hora real"
+
+#: src/sort.c:310
+#, fuzzy
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"Escribi-la concatenación ordeada de tódolos FICHEIRO(s) na saída estándar.\n"
+"\n"
+"Opcións de ordeamento:\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+#, fuzzy
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks ignora-los espacios en branco iniciais\n"
+" -d, --dictionary-order considerar só espacios e caracteres "
+"alfanuméricos\n"
+" -f, --ignore-case ignora-las maiúsculas e minúsculas\n"
+
+#: src/sort.c:326
+#, fuzzy
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort comparar de acordo ao valor numérico xeral\n"
+" -i, --ignore-nonprinting considerar só os caracteres imprimibles\n"
+" -M, --month-sort comparar (descoñecido) < \"XAN\" < ... < \"DEC"
+"\"\n"
+" -n, --numeric-sort comarar de acordo ao valor numérico da cadea\n"
+" -r, --reverse inverti-lo resultado das comparacións\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+#, fuzzy
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+"Outras opcións:\n"
+"\n"
+" -c, --check comprobar se a entrada está ordeada e non "
+"ordear\n"
+" -k, --key=POS1[,POS2] comezo da clave en POS1 e remate en POS2\n"
+" -m, --merge mesturar ficheiros xa ordeados e non ordear\n"
+" -o, --output=FICHEIRO grava-lo resultado no FICHEIRO\n"
+" -s, --stable estabiliza-la ordeación eliminando a "
+"comparación\n"
+" de derradeiro recurso\n"
+" -S, --buffer-size=TAMAÑO empregar un buffer de memoria deste TAMAÑO\n"
+
+#: src/sort.c:351
+#, fuzzy, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=SEP emprega-lo SEParador no canto de espacios en "
+"branco\n"
+" -T, --temporary-directory=DIR emprega-lo DIRectorio para ficheiros "
+"temporais,\n"
+" non $TMPDIR ou %s\n"
+" -u, --unique con -c: comprobar se a ordeación é estricta\n"
+" noutro caso: amosar só o primeiro dun grupo\n"
+" de elementos iguais\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -z, --zero-terminated remata-las liñas cun byte 0, non un\n"
+" salto de liña\n"
+
+#: src/sort.c:363
+#, fuzzy
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"POS é F[.C][OPCS], onde F é o número do campo e C a posición do carácter\n"
+"no campo. OPCS está composto de unha ou varias opcións de ordenación dunha\n"
+"soa letra, que desactivan as opcións globais desa clave. Se non se dá unha\n"
+"clave, úsase toda a liña coma a clave.\n"
+"\n"
+"TAMAÑO pode estar seguido polos seguintes sufixos multiplicativos:\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"% 1% de memoria, b 1, K 1024 (por defecto), e así para M, G, T, P, E, Z e "
+"Y.\n"
+"\n"
+"Sen un FICHEIRO ou cando o FICHEIRO é -, lese da entrada estándar.\n"
+"\n"
+"*** AVISO ***\n"
+"O locale especificado nas variables de ambiente afecta á orde.\n"
+"Estabreza LC_ALL=C para obte-la orde tradicional que emprega\n"
+"valores de byte nativos.\n"
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "erro escribindo %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "non se pode crea-lo ficheiro temporal"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "a apertura fallou"
+
+#: src/sort.c:758
+#, fuzzy
+msgid "fflush failed"
+msgstr "volcando o ficheiro"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "o peche fallou"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "a apertura fallou"
+
+#: src/sort.c:871
+#, fuzzy, c-format
+msgid "couldn't execute %s"
+msgstr "non se poden cambia-los permisos de `%s'"
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "non se pode crea-lo ficheiro temporal"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "non se pode crea-lo ficheiro temporal"
+
+#: src/sort.c:920
+#, fuzzy, c-format
+msgid "couldn't execute %s -d"
+msgstr "non se poden cambia-los permisos de `%s'"
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "erro de escritura"
+
+#: src/sort.c:975
+#, fuzzy, c-format
+msgid "warning: cannot remove: %s"
+msgstr "non se poden cambia-los permisos de `%s'"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "tamaño de ordeación"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "a obtención de datos do ficheiro fallou"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "erro de lectura"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: desorde: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "erro estándar"
+
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: especificación de campo incorrecta \"%s\""
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: conta non válida ao principio de \"%s\""
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "número non válido despois de \"-\""
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "número non válido despois de \".\""
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "carácter de sobras na especificación do campo"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "\\%c: secuencia de escape non válida"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "número non válido ao comezo do campo"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "o número do campo é cero"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "o desprazamento do carácter é cero"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "número non válido despois de \",\""
+
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "operando \"%s\" extra non admitido despois de -c"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Uso: %s [OPCIÓN] [ENTRADA [PREFIXO]]\n"
+
+#: src/split.c:110
+#, fuzzy
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"Gravar anacos de ENTRADA de tamaño fixo en PREFIXOaa, PREFIXOab, ...; o "
+"PREFIXO\n"
+"por defecto é \"x\". Sen ENTRADA, ou se a ENTRADA é -, lese da entrada "
+"estándar.\n"
+"\n"
+
+#: src/split.c:119
+#, fuzzy, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=N empregar sufixos de lonxitude N (%d por defecto)\n"
+" -b, --byte=TAMAÑO pór TAMAÑO bytes en cada ficheiro de saída\n"
+" -C, --line-bytes=TAMAÑO pór como moito TAMAÑO bytes de liñas por ficheiro\n"
+" de saída\n"
+" -l, --lines=NÚMERO pór NÚMERO liñas por ficheiro de saída\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose amosar un diagnóstico no erro estándar antes de\n"
+" abrir cada ficheiro de saída\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"TAMAÑO pode ter un sufixo multiplicativo: b para 512, k para 1K, m para 1 "
+"mega.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "Esgotáronse os sufixos de ficheiros de saída"
+
+#: src/split.c:211
+#, fuzzy, c-format
+msgid "creating file %s\n"
+msgstr "creando ficheiro \"%s\"\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "non se pode partir en máis dun xeito"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: lonxitude do sufixo non válida"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: número de bytes incorrecto"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: número de liñas incorrecto"
+
+#: src/split.c:487
+#, fuzzy, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "%s: conta \"%.*s\" grande de máis"
+
+#: src/split.c:518
+#, fuzzy, c-format
+msgid "invalid number of lines: 0"
+msgstr "número de liñas incorrecto"
+
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s: opción descoñecida `-%c'\n"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%s: patrón incorrecto"
+
+#: src/stat.c:726
+#, fuzzy, c-format
+msgid "warning: backslash at end of format"
+msgstr "secuencia de escape incorrecta na fin da cadea"
+
+#: src/stat.c:755
+#, fuzzy, c-format
+msgid "cannot read file system information for %s"
+msgstr "non se pode move-lo punteiro do ficheiro de %s"
+
+#: src/stat.c:831
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Uso: %s [OPCIÓN] [FICHEIRO]...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Uso: %s [-F DISPOSITIVO] [--file=DISPOSITIVO] [PARÁMETRO]...\n"
+" ou: %s [-F DISPOSITIVO] [--file=DISPOSITIVO] [-a|--all]\n"
+" ou: %s [-F DISPOSITIVO] [--file=DISPOSITIVO] [-g|--save]\n"
+
+#: src/stty.c:517
+#, fuzzy
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Escribir ou cambia-las características do terminal.\n"
+"\n"
+" -a, --all escribir tódolos parámetros actuais dun xeito lexible\n"
+" para humanos\n"
+" -g, --save escribir tódolos parámetros actuais dun xeito lexible\n"
+" para o stty\n"
+" -F, --file=DISPOSITIVO abrir e usa-lo DISPOSITIVO indicado en vez da\n"
+" entrada estándar\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+"\n"
+"Un - opcional diante de PARÁMETRO indica negación. Un * marca os "
+"parámetros\n"
+"non POSIX. O sistema presente define os parámetros que están dispoñibles.\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+
+#: src/stty.c:583
+#, fuzzy
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+"\n"
+"Parámetros de control:\n"
+" [-]clocal desactiva-los sinais de control do módem\n"
+" [-]cread permitir que se reciba entrada\n"
+"* [-]crtscts activar negociación RTS/CTS\n"
+" csN establece-lo tamaño do carácter a N bits, con N entre "
+"[5..8]\n"
+" [-]cstopb usar dous bits de parada por carácter (un con `-')\n"
+" [-]hup enviar un sinal de colgar cando o último proceso pecha o "
+"tty\n"
+" [-]hupcl o mesmo que [-]hup\n"
+" [-]parenb xerar un bit de paridade na saída e agardar un bit de "
+"paridade\n"
+" na entrada\n"
+" [-]parodd establecer paridade impar (mesmo con `-')\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:624
+#, fuzzy
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+"\n"
+"Parámetros da saída:\n"
+"* bsN estilo de retardo do carácter de borrado, N entre [0..1]\n"
+"* crN estilo de retardo do retorno de carro, N entre [0..3]\n"
+"* ffN estilo de retardo do salto de páxina, N entre [0..1]\n"
+"* nlN estilo de retardo do carácter de nova liña, N entre [0..1]\n"
+"* [-]ocrnl converter retornos de carro en nova liña\n"
+"* [-]ofdel usar caracteres de borrado para rechear, en vez de "
+"caracteres\n"
+" nulos\n"
+"* [-]ofill usar caracteres de recheo en vez de tempos de retardo\n"
+"* [-]olcuc converter caracteres minúsculos a maiúsculos\n"
+"* [-]onlcr converter unha nova liña a retorno de carro + nova liña\n"
+"* [-]onlret o carácter de nova liña fai un retorno de carro\n"
+"* [-]onocr non escribi-los retornos de carro na primeira columna\n"
+" [-]opost pos-procesar a saída\n"
+"* tabN estilo de retardo da tabulación horizontal, N entre [0..3]\n"
+"* tabs o mesmo que tab0\n"
+"* -tabs o mesmo que tab3\n"
+"* vtN estilo de retardo da tabulación vertical, N entre [0..1]\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"Manexar a liña tty conectada á entrada estándar. Sen argumentos,\n"
+"escribi-la tasa de baudios, a disciplina da liña, e as desviacións respecto\n"
+"a stty sane. Nos parámetros, CARAC tómase literalmente, ou codificado\n"
+"coma en ^c, 0x37, 0177 ou 127; os valores especiais ^- ou undef úsanse para\n"
+"desactiva-los caracteres especiais.\n"
+
+#: src/stty.c:789
+#, fuzzy, c-format
+msgid "only one device may be specified"
+msgstr "só se pode especificar un argumento"
+
+#: src/stty.c:819
+#, fuzzy, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr "as opcións --string e --check son mutuamente exclusivas"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "cando se indica un estilo de saída, non se poden establecer modos"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: non se pode restablece-lo modo de non bloqueo"
+
+#: src/stty.c:885 src/stty.c:995
+#, fuzzy, c-format
+msgid "invalid argument %s"
+msgstr "argumento incorrecto %s para %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, fuzzy, c-format
+msgid "missing argument to %s"
+msgstr "argumento %s ambiguo para %s"
+
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "anchura non válida: \"%s\""
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: non se poden facer tódalas operacións pedidas"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "new_mode: modo\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: non hai información de tamaño para este dispositivo"
+
+#: src/stty.c:1888
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "incremento de números de liña incorrecto: \"%s\""
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Contrasinal:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: non se pode abrir /dev/tty"
+
+#: src/su.c:303
+#, fuzzy, c-format
+msgid "cannot set groups"
+msgstr "non se poden omiti-lo usuario e o grupo"
+
+#: src/su.c:307
+#, fuzzy, c-format
+msgid "cannot set group id"
+msgstr "non se poden omiti-lo usuario e o grupo"
+
+#: src/su.c:309
+#, fuzzy, c-format
+msgid "cannot set user id"
+msgstr "non se poden omiti-lo usuario e o grupo"
+
+#: src/su.c:385
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Uso: %s [OPCIÓN]... [FICHEIRO]...\n"
+
+#: src/su.c:386
+#, fuzzy
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Cambia-lo identificador efectivo de usuario e grupo ós de USUARIO.\n"
+"\n"
+" -, -l, --login facer que a shell sexa de login\n"
+" -c, --command=COMANDO enviar un só COMANDO á shell con -c\n"
+" -f, --fast enviar a opción -f á shell (para csh ou "
+"tcsh)\n"
+" -m, --preserve-environment non esquece-las variables de ambiente\n"
+" -p o mesmo que -m\n"
+" -s, --shell=SHELL executar SHELL se /etc/shells o permite\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "o usuario %s non existe"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "contrasinal incorrecto"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "usando shell restrinxida %s"
+
+#: src/su.c:523
+#, fuzzy, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "non se pode crea-lo directorio %s"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Imprimi-la suma de comprobación e o número de bloques de cada FICHEIRO.\n"
+"\n"
+" -r non usar -s, usa-lo algoritmo de suma de BSD e bloques de "
+"1k\n"
+" -s, --sysv usa-lo algoritmo de suma System V, usar bloques de 512 "
+"bytes\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+
+#: src/sync.c:74
+#, fuzzy, c-format
+msgid "ignoring all arguments"
+msgstr "demasiados argumentos"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help amosar esta axuda e saír\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version amosar información da versión e saír\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Amosar cada FICHEIRO na saída estándar, coa derradeira liña de primeira.\n"
+"Sen un FICHEIRO, ou cando o FICHEIRO é -, lese da entrada estándar.\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before incluí-lo separador antes e non despois\n"
+" -r, --regex interpreta-lo separador como unha expresión "
+"regular\n"
+" -s, --separator=CADEA usa-la CADEA coma separador na vez de salto de "
+"liña\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, fuzzy, c-format
+msgid "%s: seek failed"
+msgstr "o peche fallou"
+
+#: src/tac.c:265
+#, fuzzy, c-format
+msgid "record too large"
+msgstr "%s: ficheiro longo de máis"
+
+#: src/tac.c:459
+#, fuzzy, c-format
+msgid "cannot create temporary file %s"
+msgstr "non se pode crea-lo ficheiro temporal"
+
+#: src/tac.c:466
+#, fuzzy, c-format
+msgid "cannot open %s for writing"
+msgstr "non se pode abrir %s para lectura"
+
+#: src/tac.c:487 src/tac.c:494
+#, fuzzy, c-format
+msgid "%s: write error"
+msgstr "erro de escritura"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "o separador non pode estar baleiro"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Amosa-las derradeiras %d liñas de cada FICHEIRO na saída estándar.\n"
+"Con máis dun FICHEIRO, antecédese cada un cunha cabeceira que dá o nome do\n"
+"ficheiro. Sen un FICHEIRO, ou cando o FICHEIRO é -, lese da entrada "
+"estándar.\n"
+"\n"
+
+#: src/tail.c:229
+#, fuzzy
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry seguir tentando abrir un ficheiro incluso se é\n"
+" inaccesible cando tail comeza ou se se volve\n"
+" inaccesible despois -- útil só con -f\n"
+" -c, --bytes=N amosa-los derradeiros N bytes\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={name|descriptor}]\n"
+" amosa-los datos engadidos segundo o ficheiro "
+"medre;\n"
+" -f, --follow e --follow=descriptor son "
+"equivalentes\n"
+" -F igual que --follow=name --retry\n"
+
+#: src/tail.c:244
+#, fuzzy, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=N amosa-las derradeiras N liñas, no canto de %d\n"
+" --max-unchanged-stats=N\n"
+" con --follow-name, reabrir un FICHEIRO que non\n"
+" cambiou o tamaño despois de N (%d por defecto)\n"
+" iteracións para ver se se borrou ou renomeou\n"
+" (é o caso normal de ficheiros de rexistro "
+"rotados)\n"
+
+#: src/tail.c:256
+#, fuzzy
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID con -f, rematar trala morte do proceso co PID\n"
+" -q, --quiet, --silent non amosa-las cabeceiras cos nomes de ficheiro\n"
+" -s, --sleep-interval=S con -f, cada iteración dura S (1) segundos\n"
+" -v, --verbose amosar sempre as cabeceiras cos nomes de "
+"ficheiro\n"
+
+#: src/tail.c:265
+#, fuzzy
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"Se o primeiro carácter de N (o número de bytes ou liñas) é un \"+\", "
+"comézase\n"
+"a amosar no N-ésimo elemento dende o principio de cada ficheiro; noutro "
+"caso,\n"
+"amos-los N derradeiros elementos do ficheiro. N pode ter un sufixo\n"
+"multiplicativo: b para 512, k para 1024, m para 1048576 (1 Mega).\n"
+"\n"
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"Con --follow (-f), tail segue por defecto o descriptor de ficheiro, o que\n"
+"significa que incluso se se renomea un ficheiro ao que se lle fai tail, "
+"tail\n"
+"ha continuar seguindo a súa fin. "
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"Este comportamento por defecto non é desexable cando quere\n"
+"segui-lo nome do ficheiro, non o descriptor do ficheiro (por exemplo,\n"
+"rotación de rexistros). Empregue --follow=name neste caso. Isto fai que "
+"tail\n"
+"siga o ficheiro nomeado reabríndoo periodicamente para ver se outro "
+"programa\n"
+"o eliminou e volveu crear.\n"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "pechando %s (fd=%d)"
+
+#: src/tail.c:411
+#, fuzzy, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: non se pode desprazar á posición relativa %s%s"
+
+#: src/tail.c:415
+#, fuzzy, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s: non se pode desprazar á posición relativa á final %s%s"
+
+#: src/tail.c:867
+#, fuzzy, c-format
+msgid "%s has become inaccessible"
+msgstr "\"%s\" volveuse inaccesible"
+
+#: src/tail.c:884
+#, fuzzy, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+"\"%s\" foi remprazado cun ficheiro do que non se pode amosa-la fin; "
+"abandonando este ficheiro"
+
+#: src/tail.c:905
+#, fuzzy, c-format
+msgid "%s has become accessible"
+msgstr "\"%s\" volveuse accesible"
+
+#: src/tail.c:913
+#, fuzzy, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "\"%s\" apareceu; buscando a fin do novo ficheiro"
+
+#: src/tail.c:924
+#, fuzzy, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "\"%s\" foi remprazado; buscando a fin do ficheiro novo"
+
+#: src/tail.c:1025
+#, fuzzy, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: non se pode restablece-lo modo de non bloqueo"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: ficheiro truncado"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "non quedan ficheiros"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+"%s: non se pode segui-la fin deste tipo de ficheiro; abandoando este nome"
+
+#: src/tail.c:1439
+#, fuzzy, c-format
+msgid "number in %s is too large"
+msgstr "%s é grande de máis"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr "%s: número máximo de datos non cambiados entre aperturas incorrecto"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: PID incorrecto"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: número de segundos incorrecto"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, fuzzy, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "aviso: --retry é útil só cando vai seguido por name"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr "aviso: PID ignorado; --pid=PID é útil só cando segue"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "aviso: --pid=PID non é soportado neste sistema"
+
+#: src/tail.c:1667
+#, fuzzy, c-format
+msgid "cannot follow %s by name"
+msgstr "non se pode crea-lo ficheiro temporal"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+
+#: src/tee.c:63
+#, fuzzy
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Copiar a entrada estándar a cada ficheiro, e tamén á saída estándar.\n"
+"\n"
+" -a, --append engadir ós FICHEIROs indicados, non "
+"sobrescribir\n"
+" -i, --ignore-interrupts ignora-los sinais de interrupción\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/tee.c:71
+#, fuzzy
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Sen FICHEIRO, ou cando o FICHEIRO é -, lese da entrada estándar.\n"
+
+#: src/test.c:125
+#, fuzzy, c-format
+msgid "missing argument after %s"
+msgstr "argumento %s ambiguo para %s"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "número incorrecto"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "agardábase ')'\n"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "agardábase ')', atopouse %s\n"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: agardábase un operador unario\n"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "-nt non acepta -l\n"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "-ef non acepta -l\n"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "-nt non acepta -l\n"
+
+#: src/test.c:368
+#, fuzzy
+msgid "unknown binary operator"
+msgstr "Erro do sistema descoñecido"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: agardábase un operador binario\n"
+
+#: src/test.c:694
+#, fuzzy
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Uso: %s [FICHEIRO]...\n"
+" ou: %s [OPCIÓN]\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+
+#: src/test.c:707
+#, fuzzy
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"Visualiza-la conta de comprobación CRC e o número de bytes de cada "
+"FICHEIRO.\n"
+"\n"
+" --help amosar esta axuda e saír\n"
+" --version amosar información sobre a versión e saír\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+
+#: src/test.c:727
+#, fuzzy
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" ( EXPRESIÓN ) a EXPRESIÓN é certa\n"
+" ! EXPRESIÓN a EXPRESIÓN é falsa\n"
+" EXPRESIÓN1 -a EXPRESIÓN2 a EXPRESIÓN1 e a EXPRESIÓN2 son certas\n"
+" EXPRESIÓN1 -o EXPRESIÓN2 a EXPRESIÓN1 ou a EXPRESIÓN2 é certa\n"
+"\n"
+" [-n] CADEA a lonxitude da CADEA é distinta de cero\n"
+" -z CADEA a lonxitude da CADEA é cero\n"
+" CADEA1 = CADEA2 as cadeas son iguais\n"
+" CADEA1 != CADEA2 as cadeas non son iguais\n"
+"\n"
+" ENTEIRO1 -eq ENTEIRO2 ENTEIRO1 é igual a ENTEIRO2\n"
+" ENTEIRO1 -ge ENTEIRO2 ENTEIRO1 é maior ou igual que ENTEIRO2\n"
+" ENTEIRO1 -gt ENTEIRO2 ENTEIRO1 é maior que ENTEIRO2\n"
+" ENTEIRO1 -le ENTEIRO2 ENTEIRO1 é menor ou igual que ENTEIRO2\n"
+" ENTEIRO1 -lt ENTEIRO2 ENTEIRO1 é menor que ENTEIRO2\n"
+" ENTEIRO1 -ne ENTEIRO2 ENTEIRO1 é distinto que ENTEIRO2\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+
+#: src/test.c:770
+#, fuzzy
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"Teña en conta que as parénteses teñen que levar códigos de escape (p.ex con\n"
+"barras invertidas) para as shells.\n"
+"ENTEIRO pode ser tamén -l CADEA, que se evalúa coma a lonxitude de CADEA.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "falta un `]'\n"
+
+#: src/test.c:846
+#, fuzzy, c-format
+msgid "extra argument %s"
+msgstr "demasiados argumentos"
+
+#: src/touch.c:112 src/touch.c:318
+#, fuzzy, c-format
+msgid "invalid date format %s"
+msgstr "argumento incorrecto %s para %s"
+
+#: src/touch.c:154
+#, fuzzy, c-format
+msgid "creating %s"
+msgstr "creando ficheiro \"%s\"\n"
+
+#: src/touch.c:211
+#, fuzzy, c-format
+msgid "cannot touch %s"
+msgstr "non se poden cambia-los permisos de `%s'"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "establecendo a data de %s"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+
+#: src/touch.c:344
+#, fuzzy, c-format
+msgid "cannot specify times from more than one source"
+msgstr "non se pode partir en máis dun xeito"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Uso: %s [OPCIÓN]... CONXUNTO1 [CONXUNTO2]\n"
+
+#: src/tr.c:294
+#, fuzzy
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Traducir, comprimir, e/ou borrar caracteres da entrada estándar,\n"
+"escribindo na saída estándar.\n"
+"\n"
+" -c, --complement complementar antes o CONXUNTO1\n"
+" -d, --delete borra-los caracteres do CONXUNTO1, non traducilos\n"
+" -s, --squeeze-repeats cambiar cada secuencia de caracteres repetidos\n"
+" listados no CONXUNTO1 por unha soa aparición\n"
+" dese carácter\n"
+" -t, --truncate-set1 truncar antes o CONXUNTO1 á lonxitude do "
+"CONXUNTO2\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"Os CONXuntos especifícanse coma cadeas de caracteres. A maioría "
+"represéntanse\n"
+"a si mesmos. As secuencias interpretadas son:\n"
+"\n"
+" \\NNN carácter co valor octal NNN (1 a 3 díxitos octais)\n"
+" \\\\ barra invertida\n"
+" \\a campá audible\n"
+" \\b retroceso dun carácter\n"
+" \\f salto de páxina\n"
+" \\n salto de liña\n"
+" \\r retorno de carro\n"
+" \\t tabulación horizontal\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v tabulación vertical\n"
+" CAR1-CAR2 tódolos caracteres entre CAR1 e CAR2 en orde ascendente\n"
+" [CAR*] en CONX2, copias do CARácter ata a lonxitude de CONX1\n"
+" [CAR*REPET] REPETir copias do CARácter, REPET é octal se comeza por 0\n"
+" [:alnum:] tódalas letras e díxitos\n"
+" [:alpha:] tódalas letras\n"
+" [:blank:] tódolos espacios en branco horizontais\n"
+" [:cntrl:] tódolos caracteres de control\n"
+" [:digit:] tódolos díxitos\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] tódolos caracteres imprimibles, sen incluí-los espacios\n"
+" [:lower:] tódalas letras minúsculas\n"
+" [:print:] tódolos caracteres imprimibles, incluíndo os espacios\n"
+" [:punct:] tódolos caracteres de puntuación\n"
+" [:space:] tódolos espacios en branco horizontais e verticais\n"
+" [:upper:] tódalas letras maiúsculas\n"
+" [:xdigit:] tódolos díxitos hexadecimais\n"
+" [=CAR=] tódolos caracteres equivalentes a CAR\n"
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"A traducción ocorre se non se dá -d e CONX1 e CONX2 aparecen. -t pódese\n"
+"empregar só ao traducir. CONX2 esténdese ata a lonxitude de CONX1 repetindo\n"
+"o seu derradeiro carácter tanto como sexa necesario. "
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"Os caracteres sobrantes\n"
+"de CONX1 ignóranse. Só se garante que [:lower:] e [:upper:] se expanden en\n"
+"orde ascendente; empregado en CONX2 ao traducir, só se poden empregar en\n"
+"parellas para especifica-la conversión de maiúsculas a minúsculas e\n"
+"viceversa. "
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+" -s emprega CONX1 se non está traducindo ou borrando; noutro caso\n"
+"ao encoller emprégase CONX2 e ocorre trala traducción ou borrado.\n"
+
+#: src/tr.c:519
+#, fuzzy, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"aviso: a secuencia de escape octal ambigua \\%c%c%c é\n"
+"\tinterpretada coma a secuencia de 2 bytes \\0%c%c, \"%c\""
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "os estremos do rango \"%s-%s\" están en orde inversa"
+
+#: src/tr.c:838
+#, fuzzy, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "número de repeticións \"%s\" incorrecto na construcción [c*n]"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "falta o nome da clase de caracteres \"[::]\""
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "falta o carácter da clase de equivalencias \"[==]\""
+
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "clase de caracteres \"%s\" incorrecta"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: o operando de clases de equivalencia debe ser un só carácter"
+
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr "carácter de sobras na especificación do campo"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "a construcción de repetición [c*] non pode aparecer na cadea1"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "só pode aparecer una construcción de repetición [c*] na cadea2"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "as expresións [=c=] non poden aparecer na cadea2 ao traducir"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "cando non se trunca o conxunto1, a cadea2 non debe estar baleira"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"cando se traduce con clases de caracteres complementarias,\n"
+"a cadea2 debe facer corresponder tódolos caracteres do dominio nun só"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"cando se traduce, as únicas clases de caracteres que poden aparecer\n"
+"na cadea2 son \"upper\" e \"lower\""
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "a construcción [c*] pode aparecer na cadea2 só cando se traduce"
+
+#: src/tr.c:1731
+#, fuzzy
+msgid "Two strings must be given when translating."
+msgstr "deben proporcionarse dúas cadeas para traducir"
+
+#: src/tr.c:1741
+#, fuzzy
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"debe proporcionarse só unha cadea para borrar sen comprimir repeticións"
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "construcción [:upper:] e/ou [:lower:] mal aliñada"
+
+#: src/true.c:42
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [FICHEIRO]...\n"
+" ou: %s [OPCIÓN]\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Uso: %s [OPCIÓN] [FICHEIRO]\n"
+"Escribir unha lista totalmente ordeada consistente coa ordeación parcial\n"
+"do FICHEIRO. Se non se indica un FICHEIRO, ou cando o FICHEIRO é -, lese\n"
+"da entrada estándar.\n"
+
+#: src/tsort.c:474
+#, fuzzy, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: a entrada contén un lazo:"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: a entrada contén un lazo:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Uso: %s [OPCIÓN] [FICHEIRO]...\n"
+
+#: src/tty.c:70
+#, fuzzy
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Escribi-lo nome de ficheiro do terminal conectado á entrada estándar.\n"
+"\n"
+" -s, --silent, --quiet non escribir nada, só devolver un código de saída\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "non é unha tty"
+
+#: src/uname.c:118
+#, fuzzy
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Escribir información do sistema. Sen ningunha OPCIÓN, suponse -s.\n"
+"\n"
+" -a, --all amosar toda a información\n"
+" -m, --machine amosa-lo tipo de máquina (hardware)\n"
+" -n, --nodename amosa-lo nome da máquina de nó de rede\n"
+" -r, --release amosa-la distribución do sistema operativo\n"
+" -s, --sysname amosa-lo nome do sistema operativo\n"
+" -p, --processor amosa-lo tipo de procesador da máquina\n"
+" -v amosa-la versión do sistema operativo\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+
+#: src/uname.c:236
+#, fuzzy, c-format
+msgid "cannot get system name"
+msgstr "non se pode crea-lo ficheiro temporal"
+
+#: src/unexpand.c:125
+#, fuzzy
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Converte-los espacios de cada FICHEIRO a tabulacións, gravando na saída\n"
+"estándar. Sen un FICHEIRO ou cando o FICHEIRO é -, lese da entrada "
+"estándar.\n"
+"\n"
+
+#: src/unexpand.c:133
+#, fuzzy
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all converter tódolos espacios, no canto de só os "
+"iniciais\n"
+" -t, --tabs=NÚMERO tabulacións de NÚMERO caracteres no canto de 8\n"
+" -t, --tabs=LISTA empregar unha lista de posicións separadas por comas\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "%s é grande de máis"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Uso: %s [OPCIÓN]... [ENTRADA [SAÍDA]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"Descartar tódalas liñas idénticas da ENTRADA (ou entrada estándar) agás "
+"unha,\n"
+"gravando na SAÍDA (ou saída estándar).\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count preceder cada liña co número de aparicións\n"
+" -d, --repeated amosar só as liñas duplicadas\n"
+
+#: src/uniq.c:151
+#, fuzzy
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated[=método] amosar tódalas liñas duplicadas\n"
+" método={none(por defecto),prepend,separate}\n"
+" (ningún, anteceder, separar)\n"
+" A delimitación faise con liñas en branco.\n"
+" -f, --skip-fields=N evitar compara-los primeiros N campos\n"
+" -i, --ignore-case ignora-las diferencias entre maiúsculas-minúsculas\n"
+" ao comparar\n"
+" -s, --skip­chars=N evitar compara-los primeiros N caracteres\n"
+" -u, --unique amosar só as liñas únicas\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+" -w, --check-chars=N non comparar máis de N caracteres en cada liña\n"
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"Un campo é un grupo de espacios seguidos de varios caracteres.\n"
+"Os campos omítense antes dos caracteres.\n"
+
+#: src/uniq.c:350
+#, fuzzy, c-format
+msgid "too many repeated lines"
+msgstr "demasiados argumentos"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "número de campos a omitir non válido"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "número de bytes a omitir non válido"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "número de bytes a comparar non válido"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+"amosar tódalas liñas duplicadas e a conta de repeticións non ten sentido"
+
+#: src/unlink.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [FICHEIRO]...\n"
+" ou: %s [OPCIÓN]\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+
+#: src/unlink.c:91
+#, fuzzy, c-format
+msgid "cannot unlink %s"
+msgstr "non se poden cambia-los permisos de `%s'"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "non se pode obte-la data de inicio"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s funcionando "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "am"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "pm"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr ""
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr ""
+
+#: src/uptime.c:143
+#, fuzzy, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "día"
+msgstr[1] "día"
+
+#: src/uptime.c:147
+#, fuzzy, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "usuario incorrecto"
+msgstr[1] "usuario incorrecto"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", carga media: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Uso: %s [OPCIÓN]... [FICHEIRO]...\n"
+
+#: src/uptime.c:198
+#, fuzzy, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Escribi-la hora actual, o tempo que leva o sistema funcionando, o\n"
+"número de usuarios no sistema, e o número medio de procesos na fila\n"
+"de execución nos últimos 1, 5 e 15 minutos.\n"
+"Se non se indica FICHEIRO, usarase %s. O normal como FICHEIRO\n"
+"é %s\n"
+"\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/users.c:109
+#, fuzzy, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Escribir quen está conectado actualmente segundo FICHEIRO.\n"
+"Se non se indica FICHEIRO, usarase %s. O normal como FICHEIRO\n"
+"é %s\n"
+"\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/wc.c:113
+#, fuzzy
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Escribi-lo número de bytes, palabras e liñas de cada FICHEIRO, e unha liña\n"
+"cos totais se se indica máis dun FICHEIRO. Se non se indica un FICHEIRO, "
+"ou\n"
+"se o FICHEIRO é -, lese da entrada estándar.\n"
+" -c, --bytes escribi-lo número de bytes\n"
+" -m, --chars escribi-lo número de caracteres\n"
+" -l, --lines escribi-lo número de saltos de liña\n"
+
+#: src/wc.c:121
+#, fuzzy
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" -L, --max-line-length escribi-la lonxitude da liña máis longa\n"
+" -w, --words escribi-lo número de palabras\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr " antigo "
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr ""
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr ""
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr ""
+
+#: src/who.c:497
+msgid "clock change"
+msgstr ""
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr ""
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr ""
+
+#: src/who.c:545
+#, fuzzy, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"número de usuarios=%u\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr ""
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "LIÑA"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr ""
+
+#: src/who.c:551
+#, fuzzy
+msgid "IDLE"
+msgstr "FALLA"
+
+#: src/who.c:552
+msgid "PID"
+msgstr ""
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr ""
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr ""
+
+#: src/who.c:633
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Uso: %s [OPCIÓN]... FICHEIRO1 FICHEIRO2\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+
+#: src/whoami.c:51
+#, fuzzy
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Escribi-lo nome de usuario asociado ó identificador efectivo de usuario "
+"actual\n"
+"O mesmo que id -un.\n"
+"\n"
+" --help amosar esta axuda e saír\n"
+" --version amosa-la información da versión e saír\n"
+
+#: src/whoami.c:95
+#, fuzzy, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: non se pode atopa-lo nome de usuario do UID %u\n"
+
+#: src/yes.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [FICHEIRO]...\n"
+" ou: %s [OPCIÓN]\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+
+#, fuzzy
+#~ msgid "strip failed"
+#~ msgstr "a obtención de datos do ficheiro fallou"
+
+#~ msgid "program error"
+#~ msgstr "erro do programa"
+
+#~ msgid "stack overflow"
+#~ msgstr "desbordamento da pila"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "non se pode cambia-lo propietario e/ou grupo de %s"
+
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "non se pode cambiar ao directorio %s"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "non se pode obte-lo grupo de login dun UID numérico"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Isto é software libre; vexa o código fonte polas condicións de copia. NON "
+#~ "hai\n"
+#~ "garantía; nin sequera de COMERCIABILIDADE ou APTITUDE PARA UN FIN "
+#~ "DETERMINADO.\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "número de argumentos insuficiente"
+
+#~ msgid "Torbjorn Granlund and Richard M. Stallman"
+#~ msgstr "Torbjorn Grandlund e Richard M. Stallman"
+
+#, fuzzy
+#~ msgid "closing standard output"
+#~ msgstr "saída estándar"
+
+#, fuzzy
+#~ msgid "cannot change to null group"
+#~ msgstr "non se pode cambia-lo propietario e/ou grupo de %s"
+
+#~ msgid "group number"
+#~ msgstr "número de grupo"
+
+#, fuzzy
+#~ msgid "invalid group number %s"
+#~ msgstr "número incorrecto"
+
+#, fuzzy
+#~ msgid "invalid mode string: %s"
+#~ msgstr "cadea de tipo incorrecta \"%s\""
+
+#, fuzzy
+#~ msgid "unable to restore permissions of %s"
+#~ msgstr "non se pode cambia-los permisos de %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "Uso: %s [OPCIÓN]... ÚLTIMO\n"
+#~ " ou: %s [OPCIÓN]... PRIMEIRO ÚLTIMO\n"
+#~ " ou: %s [OPCIÓN]... PRIMEIRO INCREMENTO ÚLTIMO\n"
+
+#~ msgid "Richard Stallman and David MacKenzie"
+#~ msgstr "Richard Stallman e David MacKenzie"
+
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "Uso: %s [OPCIÓN]... FICHEIRO_ESQUERDO FICHEIRO_DEREITO\n"
+
+#, fuzzy
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "non se pode crea-lo directorio %s"
+
+#, fuzzy
+#~ msgid "Torbjorn Granlund, David MacKenzie, and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie e Jim Meyering"
+
+#, fuzzy
+#~ msgid "missing file arguments"
+#~ msgstr "número de argumentos insuficiente"
+
+#, fuzzy
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "%s existe pero non é un directorio"
+
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr ""
+#~ "a copiar varios ficheiros, mais o derradeiro argumento %s non é un "
+#~ "directorio"
+
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "aviso: --version-control (-V) está obsoleta; quitarase o soporte\n"
+#~ "nunha versión futuro. Use --backup=%s no seu lugar."
+
+#, fuzzy
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "aviso: --pid=PID non é soportado neste sistema"
+
+#~ msgid "Stuart Kemp and David MacKenzie"
+#~ msgstr "Stuart Kemp e David MacKenzie"
+
+#~ msgid "%s: `+' or `-' expected after delimeter"
+#~ msgstr "%s: esperábase un \"+\" ou un \"-\" tralo delimitador"
+
+#~ msgid "David Ihnat, David MacKenzie, and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie e Jim Meyering"
+
+#, fuzzy
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "demasiados argumentos"
+
+#, fuzzy
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-822 (-R) option"
+#~ msgstr "non se pode especificar ficheiros cando se usa --string"
+
+#~ msgid "undefined"
+#~ msgstr "non definido"
+
+#, fuzzy
+#~ msgid "cannot get time of day"
+#~ msgstr "non se pode partir en máis dun xeito"
+
+#, fuzzy
+#~ msgid "Paul Rubin, David MacKenzie, and Stuart Kemp"
+#~ msgstr "Paul Rubin e David MacKenzie"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "%s+%s rexistros lidos\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "%s+%s rexistros escritos\n"
+
+#~ msgid "truncated records"
+#~ msgstr "rexistros truncados"
+
+#~ msgid ""
+#~ "only one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, "
+#~ "{unblock,sync}"
+#~ msgstr ""
+#~ "só unha conversión de {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, "
+#~ "{unblock,sync}"
+
+#~ msgid " Type"
+#~ msgstr " Tipo"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr ""
+#~ "non se poden usar argumentos de tipo FICHEIRO coa opción para amosa-la\n"
+#~ "base de datos interna de dircolors"
+
+#, fuzzy
+#~ msgid "David MacKenzie and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie e Jim Meyering"
+
+#, fuzzy
+#~ msgid "Richard Mlynarik and David MacKenzie"
+#~ msgstr "Richard Stallman e David MacKenzie"
+
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "a opción \"-LIST\" é obsoleta; empregue \"-t LISTA\""
+
+#~ msgid ""
+#~ "warning: unportable BRE: `%s': using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr ""
+#~ "aviso: ERB non portable: `%s': usar `^' coma o primeiro carácter\n"
+#~ "cunha expresión regular básica non é portable; ignorarase"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Uso: %s [opcións de liña de comandos ignoradas]\n"
+#~ " ou: %s OPCIÓN\n"
+#~ "Saír cun código de estado indicando fallo.\n"
+#~ "\n"
+#~ "Estes nomes de opcións non se poden abreviar.\n"
+#~ "\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosa-la información da versión e saír\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "In -wNUMBER, the letter `w' may be omitted.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "En -wNÚMERO, a letra \"w\" pódese omitir.\n"
+
+#~ msgid "invalid width option: `%s'"
+#~ msgstr "opción de anchura non válida: \"%s\""
+
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "a opción \"%s\" é obsoleta; empregue \"%s\""
+
+#~ msgid ""
+#~ " -c, --bytes=SIZE print first SIZE bytes\n"
+#~ " -n, --lines=NUMBER print first NUMBER lines instead of first 10\n"
+#~ msgstr ""
+#~ " -c, --bytes=TAMAÑO amosa-los primeiros TAMAÑO bytes\n"
+#~ " -n, --lines=NÚMERO amosa-las primerias NÚMERO liñas no canto de "
+#~ "10\n"
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "opción descoñecida \"-%c\""
+
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "a opción \"-%s\" é obsoleta; empregue \"-%c %.*s%.*s%s\""
+
+#, fuzzy
+#~ msgid "Arnold Robbins and David MacKenzie"
+#~ msgstr "Paul Rubin e David MacKenzie"
+
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr ""
+#~ "a instalar varios ficheiros, mais o derradeiro argumento %s non é un "
+#~ "directorio"
+
+#, fuzzy
+#~ msgid "%s is a directory"
+#~ msgstr "%s existe pero non é un directorio"
+
+#, fuzzy
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "non se pode move-lo punteiro do ficheiro de %s"
+
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "número de campo incorrecto para o ficheiro 1: \"%s\""
+
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "número de campo incorrecto para o ficheiro 2: \"%s\""
+
+#~ msgid "too many non-option arguments"
+#~ msgstr "demasiados argumentos"
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "insuficientes argumentos"
+
+#, fuzzy
+#~ msgid "Mike Parker and David MacKenzie"
+#~ msgstr "Scott Bartram e David MacKenzie"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: O ficheiro xa existe"
+
+#, fuzzy
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "ligazón simbólica"
+
+#~ msgid "create hard link %s to %s"
+#~ msgstr "crear ligazón dura %s a %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "Uso: %s [OPCIÓN]... ÚLTIMO\n"
+#~ " ou: %s [OPCIÓN]... PRIMEIRO ÚLTIMO\n"
+#~ " ou: %s [OPCIÓN]... PRIMEIRO INCREMENTO ÚLTIMO\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr ""
+#~ "ao facer varias ligazóns, o último argumento ten que ser un directorio"
+
+#~ msgid "Ulrich Drepper and Scott Miller"
+#~ msgstr "Ulrich Drepper e Scott Miller"
+
+#~ msgid ""
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -b, --binary le-los ficheiros en modo binario\n"
+#~ " (por defecto en DOS/Windows)\n"
+#~ " -c, --check comproba-las sumas %s contra a lista dada\n"
+#~ " -t, --text le-los ficheiros en modo texto (por defecto)\n"
+#~ "\n"
+
+#~ msgid "file"
+#~ msgstr "ficheiro"
+
+#~ msgid "files"
+#~ msgstr "ficheiros"
+
+#~ msgid "checksum"
+#~ msgstr "sumas"
+
+#~ msgid "checksums"
+#~ msgstr "sumas"
+
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "as opcións --string e --check son mutuamente exclusivas"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "non se pode especificar ficheiros cando se usa --string"
+
+#~ msgid "only one argument may be specified when using --check"
+#~ msgstr "só se pode especificar un argumento cando se usa --check"
+
+#, fuzzy
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "non se pode cambia-los permisos de %s"
+
+#, fuzzy
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "non se pode cambia-los permisos de %s"
+
+#, fuzzy
+#~ msgid "wrong number of arguments"
+#~ msgstr "número de argumentos insuficiente"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr ""
+#~ "os números de dispositivo `major' e `minor' non se poden indicar para "
+#~ "fifos"
+
+#, fuzzy
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "non se pode cambia-los permisos de %s"
+
+#, fuzzy
+#~ msgid "Mike Parker, David MacKenzie, and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie e Jim Meyering"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr ""
+#~ "ao mover varios ficheiros, o último argumento debe ser un directorio"
+
+#, fuzzy
+#~ msgid ""
+#~ "Run COMMAND with an adjusted scheduling priority.\n"
+#~ "With no COMMAND, print the current scheduling priority. ADJUST is 10\n"
+#~ "by default. Range goes from -20 (highest priority) to 19 (lowest).\n"
+#~ "\n"
+#~ " -n, --adjustment=ADJUST increment priority by ADJUST first\n"
+#~ msgstr ""
+#~ "Executar COMANDO cunha prioridade de execución axustada.\n"
+#~ "Sen COMANDO, escribi-la prioridade de execución actual. AXUSTE é 10\n"
+#~ "por defecto. O rango vai dende -20 (máxima prioridade) a 19 (mínima).\n"
+#~ "\n"
+#~ " -AXUSTE incrementar primeiro a prioridade por AXUSTE\n"
+#~ " -n, --adjustment=AXUSTE o mesmo que -AXUSTE\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosa-la información da versión e saír\n"
+
+#, fuzzy
+#~ msgid "invalid option `%s'"
+#~ msgstr "opción de anchura non válida: \"%s\""
+
+#, fuzzy
+#~ msgid "invalid priority `%s'"
+#~ msgstr "anchura non válida: \"%s\""
+
+#, fuzzy
+#~ msgid "cannot get priority"
+#~ msgstr "non se pode crea-lo directorio %s"
+
+#, fuzzy
+#~ msgid "cannot set priority"
+#~ msgstr "non se pode crea-lo directorio %s"
+
+#~ msgid "Scott Bartram and David MacKenzie"
+#~ msgstr "Scott Bartram e David MacKenzie"
+
+#~ msgid "old-style offset"
+#~ msgstr "desprazamento ao estilo antigo"
+
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "segundo operando no modo de compatibilidade \"%s\" incorrecto"
+
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr ""
+#~ "no modo de compatibilidade, os últimos 2 argumentos deben ser "
+#~ "desprazamentos"
+
+#~ msgid "David M. Ihnat and David MacKenzie"
+#~ msgstr "David M. Ihnat e David MacKenzi"
+
+#, fuzzy
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr ""
+#~ "Diagnosticar construccións non portables en NOME.\n"
+#~ "\n"
+#~ " -p, --portability comprobar para tódolos sistemas POSIX, non só este\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosa-la información da versión e saír\n"
+
+#, fuzzy
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "o tamaño da tabulación contén un carácter incorrecto"
+
+#, fuzzy
+#~ msgid "`%s' is not a directory"
+#~ msgstr "%s existe pero non é un directorio"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "o directorio `%s' é inaccesible"
+
+#, fuzzy
+#~ msgid "name `%s' has length %ld; exceeds limit of %ld"
+#~ msgstr "o nome `%s' ten unha lonxitude de %d; excede o límite de %d"
+
+#, fuzzy
+#~ msgid "path `%s' has length %d; exceeds limit of %ld"
+#~ msgstr "a rota `%s' ten unha lonxitude de %d; excede o límite de %d"
+
+#~ msgid "Pete TerMaat and Roland Huebner"
+#~ msgstr "Pete TerMaat e Roland Huebner"
+
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "\"--pages\" rango de números de páxina incorrecto: \"%s\""
+
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "\"--pages\" número de páxina inicial incorrecto: \"%s\""
+
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "\"--pages\" número de páxina final incorrecto: \"%s\""
+
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr ""
+#~ "\"--pages\" o número de páxina inicial é maior có número de páxina final"
+
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "\"--columns=COLUMNA\" número de columnas incorrecto: \"%s\""
+
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%e %b %Y %H:%M"
+
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr ""
+#~ "o número de páxina inicial é maior có número total de páxinas: \"%d\""
+
+#~ msgid "Page %d"
+#~ msgstr "Páxina %d"
+
+#, fuzzy
+#~ msgid "David MacKenzie and Richard Mlynarik"
+#~ msgstr "David Ihnat, David MacKenzie e Jim Meyering"
+
+#, fuzzy
+#~ msgid "\\%c: invalid escape"
+#~ msgstr "%s: patrón incorrecto"
+
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "Uso: %s formato [argumento...]\n"
+
+#~ msgid ""
+#~ "This program is distributed in the hope that it will be useful,\n"
+#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+#~ "GNU General Public License for more details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Este programa distribúese coa intención de que sexa útil, pero\n"
+#~ "sen NINGUNHA GARANTÍA; nin sequera a garantía implícita de\n"
+#~ "COMERCIABILIDADE ou VALIDEZA PARA UN FIN PARTICULAR. Vexa a Licencia\n"
+#~ "Pública Xeral de GNU para máis detalles.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+#~ msgstr ""
+#~ "Debería ter recibido unha copia da Licencia Pública Xeral con este\n"
+#~ "programa; se non, escriba á Free Software Foundation, Inc.,\n"
+#~ "59 Temple Place - Suite 330, Boston, MA 02111-1307, EE.UU.\n"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "non se pode cambiar ao directorio %s"
+
+#, fuzzy
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "non se pode executar %s"
+
+#, fuzzy
+#~ msgid "cannot lstat %s"
+#~ msgstr "non se poden cambia-los permisos de `%s'"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "non se pode cambiar ao directorio %s"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "non se pode borrar `.' nin `..'"
+
+#, fuzzy
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ " -r, -R, --recursive remove the contents of directories recursively\n"
+#~ " -v, --verbose explain what is being done\n"
+#~ msgstr ""
+#~ "Borra (desliga) o(s) FICHEIRO(s).\n"
+#~ "\n"
+#~ " -d, --directory desligar directorio, aínda que non estea baleiro\n"
+#~ " (só super usuario)\n"
+#~ " -f, --force ignora-los ficheiros que non existan, non "
+#~ "preguntar\n"
+#~ " -i, --interactive preguntar antes de borrar\n"
+#~ " -r, -R, --recursive borra-los contidos dos directorios "
+#~ "recursivamente\n"
+#~ " -v, --verbose explica-lo que está a se facer\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosa-la información da versión e saír\n"
+#~ "\n"
+#~ "Para borrar un ficheiro que empeza con `-', por exemplo `-foo',\n"
+#~ "use un destes comandos:\n"
+#~ " %s -- -foo\n"
+#~ "\n"
+#~ " %s ./-foo\n"
+#~ "\n"
+#~ "Advirta que se utiliza rm para borrar un ficheiro, normalmente é posible\n"
+#~ "recupera-los contidos dese ficheiro. Se quere ter máis seguridade de "
+#~ "que\n"
+#~ "o contido é realmente irrecuperable, considere utilizar o shred.\n"
+
+#~ msgid ""
+#~ "when the starting value is larger than the limit,\n"
+#~ "the increment must be negative"
+#~ msgstr ""
+#~ "cando o valor de comezo e máis grande que o límite,\n"
+#~ "o incremento ten que ser negativo"
+
+#, fuzzy
+#~ msgid ""
+#~ "when the starting value is smaller than the limit,\n"
+#~ "the increment must be positive"
+#~ msgstr ""
+#~ "o argumento número do campo inicial da opción `-k' debe ser positivo"
+
+#, fuzzy
+#~ msgid "Jim Meyering and Paul Eggert"
+#~ msgstr "Mike Haertel e Paul Eggert"
+
+#~ msgid "Mike Haertel and Paul Eggert"
+#~ msgstr "Mike Haertel e Paul Eggert"
+
+#~ msgid "`-%d' option is obsolete; use `-l %d'"
+#~ msgstr "a opción \"-%d\" é obsoleta; empregue \"-l %d\""
+
+#~ msgid "Kayvan Aghaiepour and David MacKenzie"
+#~ msgstr "Kayvan Aghaiepour e David MacKenzie"
+
+#~ msgid "Jay Lepreau and David MacKenzie"
+#~ msgstr "Jay Lepreau e David MacKenzie"
+
+#~ msgid "stdin: read error"
+#~ msgstr "stdin: erro de lectura"
+
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "%c: carácter sufixo incorrecto nunha opción obsoleta"
+
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "demasiados argumentos; cando se usa a sintaxe obsoleta de tail (%s) non "
+#~ "pode\n"
+#~ "haber máis dun argumento de ficheiro. Empregue as opcións equivalentes -n "
+#~ "ou\n"
+#~ "-c na súa vez."
+
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "Aviso: non é portable o uso de dous ou máis argumentos de ficheiro coa\n"
+#~ "sintaxe obsoleta de tail (%s). Empregue as opcións equivalentes -n ou -c\n"
+#~ "na súa vez."
+
+#~ msgid "`%s' option is obsolete; use `%s-%c %.*s'"
+#~ msgstr "a opción \"%s\" é obsoleta; empregue \"%s-%c %.*s\""
+
+#~ msgid "%s: is so large that it is not representable"
+#~ msgstr "%s: é tan grande que non é representable"
+
+#~ msgid "%s is larger than the maximum file size on this system"
+#~ msgstr "%s é maior có tamaño máximo dos ficheiros neste sistema"
+
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr "%s: número máximo de cambios de tamaño consecutivos incorrecto"
+
+#, fuzzy
+#~ msgid "Mike Parker, Richard M. Stallman, and David MacKenzie"
+#~ msgstr "Richard Stallman e David MacKenzie"
+
+#~ msgid "argument expected\n"
+#~ msgstr "agardábase un argumento\n"
+
+#~ msgid "integer expression expected %s\n"
+#~ msgstr "agardábase unha expresión enteira %s\n"
+
+#~ msgid "before -lt"
+#~ msgstr "antes de -lt"
+
+#~ msgid "after -lt"
+#~ msgstr "despois de -lt"
+
+#~ msgid "before -le"
+#~ msgstr "antes de -le"
+
+#~ msgid "after -le"
+#~ msgstr "despois de -le"
+
+#~ msgid "before -gt"
+#~ msgstr "antes de -gt"
+
+#~ msgid "after -gt"
+#~ msgstr "despois de -gt"
+
+#~ msgid "before -ge"
+#~ msgstr "antes de -ge"
+
+#~ msgid "after -ge"
+#~ msgstr "despois de -ge"
+
+#~ msgid "before -ne"
+#~ msgstr "antes de -ne"
+
+#~ msgid "after -ne"
+#~ msgstr "despois de -ne"
+
+#~ msgid "before -eq"
+#~ msgstr "antes de -eq"
+
+#~ msgid "after -eq"
+#~ msgstr "despois de -eq"
+
+#~ msgid "after -t"
+#~ msgstr "despois de -t"
+
+#, fuzzy
+#~ msgid "too many arguments\n"
+#~ msgstr "demasiados argumentos"
+
+#, fuzzy
+#~ msgid "file arguments missing"
+#~ msgstr "número de argumentos insuficiente"
+
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "secuencia de escape \"\\%c\" incorrecta"
+
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr ""
+#~ "deben proporcionarse dúas cadeas para borrar e comprimir repeticións"
+
+#~ msgid "at least one string must be given when squeezing repeats"
+#~ msgstr "debe proporcionarse alomenos unha cadea para comprimir repeticións"
+
+#~ msgid ""
+#~ "invalid identity mapping; when translating, any [:lower:] or [:upper:]\n"
+#~ "construct in string1 must be aligned with a corresponding construct\n"
+#~ "([:upper:] or [:lower:], respectively) in string2"
+#~ msgstr ""
+#~ "correspondencia de identidades incorrecta; ao traducir, toda "
+#~ "construcción\n"
+#~ "[:lower:] ou [:upper:] da cadea1 debe aliñarse cunha construcción que\n"
+#~ "corresponda ([:upper:] ou [:lower:], respectivamente) na cadea2"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Uso: %s [opcións de liña de comandos ignoradas]\n"
+#~ " ou: %s OPCIÓN\n"
+#~ "Saír cun código de estado indicando éxito.\n"
+#~ "\n"
+#~ "Estes nomes de opcións non se poden abreviar.\n"
+#~ "\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosa-la información da versión e saír\n"
+
+#~ msgid "only one argument may be specified"
+#~ msgstr "só se pode especificar un argumento"
+
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr "a opción \"-LISTA\" é obsoleta; empregue \"--first-only -t LISTA\""
+
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "a opción \"-%lu\" é obsoleta; empregue \"-f %lu\""
+
+#, fuzzy
+#~ msgid "Joseph Arceneaux and David MacKenzie"
+#~ msgstr "Jay Lepreau e David MacKenzie"
+
+#~ msgid "Paul Rubin and David MacKenzie"
+#~ msgstr "Paul Rubin e David MacKenzie"
+
+#~ msgid "%s: cannot find username for UID %u\n"
+#~ msgstr "%s: non se pode atopa-lo nome de usuario do UID %u\n"
+
+#, fuzzy
+#~ msgid "Try %s --help' for more information.\n"
+#~ msgstr "Escriba \"%s --help\" para máis información.\n"
+
+#, fuzzy
+#~ msgid "cannot lstat `.'"
+#~ msgstr "non se pode establece-la data"
+
+#, fuzzy
+#~ msgid "%s: remove directory %s? "
+#~ msgstr "non se pode crea-lo directorio %s"
+
+#~ msgid "%s: directory %s is write protected; descend into it anyway? "
+#~ msgstr ""
+#~ "%s: o directorio %s está protexido contra escritura; ¿entrar nel de\n"
+#~ "calquera xeito? "
+
+#~ msgid "removing all entries of directory %s\n"
+#~ msgstr "borrando tódalas entradas do directorio %s\n"
+
+#~ msgid "continue? "
+#~ msgstr "¿continuar? "
+
+#, fuzzy
+#~ msgid "cannot change back to directory %s via `..'"
+#~ msgstr "non se pode cambiar ao directorio %s"
+
+#, fuzzy
+#~ msgid "%s: remove directory %s%s? "
+#~ msgstr "non se pode crea-lo directorio %s"
+
+#~ msgid " (might be nonempty)"
+#~ msgstr " (podería non estar baleiro)"
+
+#, fuzzy
+#~ msgid "removing the directory itself: %s\n"
+#~ msgstr "aviso: non se pode cambiar ó directorio %s"
+
+#, fuzzy
+#~ msgid "cannot fork"
+#~ msgstr "non se poden cambia-los permisos de `%s'"
+
+#, fuzzy
+#~ msgid ""
+#~ "ERROR: the source file %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after opening it), the numbers\n"
+#~ "are %lu/%lu. That means that while this program was running,\n"
+#~ "the file was replaced with another one. Skipping this file."
+#~ msgstr ""
+#~ "ERRO: o directorio %s tiña inicialmente os números %lu/%lu de\n"
+#~ "dispositivo/inodo, pero agora (tras acceder a el), os números de `.'\n"
+#~ "son %lu/%lu. Isto significa que mentres rm estaba a se executar,\n"
+#~ "o directorio foi substituído por outro directorio ou por unha ligazón\n"
+#~ "a outro directorio."
+
+#~ msgid ""
+#~ "ERROR: the directory %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after a chdir into it), the numbers for `.'\n"
+#~ "are %lu/%lu. That means that while rm was running, the directory\n"
+#~ "was replaced with either another directory or a link to another directory."
+#~ msgstr ""
+#~ "ERRO: o directorio %s tiña inicialmente os números %lu/%lu de\n"
+#~ "dispositivo/inodo, pero agora (tras acceder a el), os números de `.'\n"
+#~ "son %lu/%lu. Isto significa que mentres rm estaba a se executar,\n"
+#~ "o directorio foi substituído por outro directorio ou por unha ligazón\n"
+#~ "a outro directorio."
+
+#, fuzzy
+#~ msgid ""
+#~ "ERROR: the directory %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after changing into at least one subdirectory\n"
+#~ "and changing back via `..'), the numbers for `.' are %lu/%lu.\n"
+#~ "That means that while rm was running, a partially-removed subdirectory\n"
+#~ "was moved to a different position in the file system hierarchy."
+#~ msgstr ""
+#~ "ERRO: o directorio %s tiña inicialmente os números %lu/%lu de\n"
+#~ "dispositivo/inodo, pero agora (tras acceder a el), os números de `.'\n"
+#~ "son %lu/%lu. Isto significa que mentres rm estaba a se executar,\n"
+#~ "o directorio foi substituído por outro directorio ou por unha ligazón\n"
+#~ "a outro directorio."
+
+#, fuzzy
+#~ msgid " or: %s [-acm] MMDDhhmm[YY] FILE... (obsolete)\n"
+#~ msgstr " ou: %s [-acm] MMDDhhmm[AA] FICHEIRO... (obsoleto)\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Visualiza-la conta de comprobación CRC e o número de bytes de cada "
+#~ "FICHEIRO.\n"
+#~ "\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Visualiza-la conta de comprobación CRC e o número de bytes de cada "
+#~ "FICHEIRO.\n"
+#~ "\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Visualiza-la conta de comprobación CRC e o número de bytes de cada "
+#~ "FICHEIRO.\n"
+#~ "\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Visualiza-la conta de comprobación CRC e o número de bytes de cada "
+#~ "FICHEIRO.\n"
+#~ "\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Visualiza-la conta de comprobación CRC e o número de bytes de cada "
+#~ "FICHEIRO.\n"
+#~ "\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Visualiza-la conta de comprobación CRC e o número de bytes de cada "
+#~ "FICHEIRO.\n"
+#~ "\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Visualiza-la conta de comprobación CRC e o número de bytes de cada "
+#~ "FICHEIRO.\n"
+#~ "\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Visualiza-la conta de comprobación CRC e o número de bytes de cada "
+#~ "FICHEIRO.\n"
+#~ "\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Visualiza-la conta de comprobación CRC e o número de bytes de cada "
+#~ "FICHEIRO.\n"
+#~ "\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Visualiza-la conta de comprobación CRC e o número de bytes de cada "
+#~ "FICHEIRO.\n"
+#~ "\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+
+#~ msgid ""
+#~ "Change the group membership of each FILE to GROUP.\n"
+#~ "\n"
+#~ " -c, --changes like verbose but report only when a change is "
+#~ "made\n"
+#~ " --dereference affect the referent of each symbolic link, "
+#~ "rather\n"
+#~ " than the symbolic link itself\n"
+#~ " -h, --no-dereference affect symbolic links instead of any referenced "
+#~ "file\n"
+#~ " (available only on systems that can change the\n"
+#~ " ownership of a symlink)\n"
+#~ " -f, --silent, --quiet suppress most error messages\n"
+#~ " --reference=RFILE use RFILE's group rather than the specified\n"
+#~ " GROUP value\n"
+#~ " -R, --recursive operate on files and directories recursively\n"
+#~ " -v, --verbose output a diagnostic for every file processed\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Muda a pertenza de grupo de cada FICHEIRO a GRUPO.\n"
+#~ "\n"
+#~ " -c, --changes coma `verbose' mais informando só dos cambios\n"
+#~ " --dereference afectar ao ficheiro ao que se refire a ligazón\n"
+#~ " simbólica, en vez da propia ligazón simbólica\n"
+#~ " -h, --no-dereference afectar ás ligazóns simbólicas en vez dos "
+#~ "ficheiros\n"
+#~ " referidos (só dispoñible en sistemas que poidan\n"
+#~ " muda-lo dono dunha ligazón simbólica)\n"
+#~ " -f, --silent, --quiet suprimi-la maioría das mensaxes de erro\n"
+#~ " --reference=FICH-R usa-lo grupo de FICH-R en vez do valor indicado\n"
+#~ " de GRUPO\n"
+#~ " -R, --recursive operar en ficheiros e directorios "
+#~ "recursivamente\n"
+#~ " -v, --verbose amosar unha mensaxe por cada ficheiro procesado\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosa-la información da versión e saír\n"
+
+#~ msgid ""
+#~ "Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+#~ "\n"
+#~ " -c, --changes like verbose but report only when a change is "
+#~ "made\n"
+#~ " --dereference affect the referent of each symbolic link, "
+#~ "rather\n"
+#~ " than the symbolic link itself\n"
+#~ " -h, --no-dereference affect symbolic links instead of any referenced "
+#~ "file\n"
+#~ " (available only on systems that can change the\n"
+#~ " ownership of a symlink)\n"
+#~ " --from=CURRENT_OWNER:CURRENT_GROUP\n"
+#~ " change the owner and/or group of each file only "
+#~ "if\n"
+#~ " its current owner and/or group match those "
+#~ "specified\n"
+#~ " here. Either may be omitted, in which case a "
+#~ "match\n"
+#~ " is not required for the omitted attribute.\n"
+#~ " -f, --silent, --quiet suppress most error messages\n"
+#~ " --reference=RFILE use RFILE's owner and group rather than\n"
+#~ " the specified OWNER:GROUP values\n"
+#~ " -R, --recursive operate on files and directories recursively\n"
+#~ " -v, --verbose output a diagnostic for every file processed\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Muda o dono e/ou grupo de cada FICHEIRO a DONO e/ou GRUPO.\n"
+#~ "\n"
+#~ " -c, --changes coma --verbose pero só cando hai algún cambio\n"
+#~ " --dereference afectar ao ficheiro ao que se refire a ligazón\n"
+#~ " simbólica, en vez da propia ligazón simbólica\n"
+#~ " -h, --no-dereference afectar ás ligazóns simbólicas en vez dos "
+#~ "ficheiros\n"
+#~ " referidos (só dispoñible en sistemas que poden\n"
+#~ " muda-lo dono dunha ligazón simbólica)\n"
+#~ " --from=DONO_ACTUAL:GRUPO_ACTUAL\n"
+#~ " muda-lo dono e/ou o grupo de cada ficheiro só "
+#~ "se\n"
+#~ " o seu dono e/ou grupo actual coincide co "
+#~ "indicado\n"
+#~ " aquí. Pode indicarse só un deles, nese caso "
+#~ "non\n"
+#~ " se requirirá a coincidencia co atributo "
+#~ "omitido.\n"
+#~ " -f, --silent, --quiet suprimi-la maioría das mensaxes de erro\n"
+#~ " --reference=FICH-R usa-lo dono e o grupo de FICH-R en vez dos "
+#~ "valores\n"
+#~ " DONO:GRUPO indicados\n"
+#~ " -R, --recursive cambiar ficheiros e directorios recursivamente\n"
+#~ " -v, --verbose amosar unha mensaxe por cada ficheiro procesado\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosa-la información da versión e saír\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -l, --link link files instead of copying\n"
+#~ " -L, --dereference always follow symbolic links\n"
+#~ " -p same as --preserve=mode,ownership,"
+#~ "timestamps\n"
+#~ " --preserve[=ATTR_LIST] preserve the specified attributes "
+#~ "(default:\n"
+#~ " mode,ownership,timestamps), if possible\n"
+#~ " additional attributes: links, all\n"
+#~ " --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+#~ " --parents append source path to DIRECTORY\n"
+#~ " -P same as `--no-dereference'\n"
+#~ " -r copy recursively, non-directories as "
+#~ "files\n"
+#~ " WARNING: use -R instead when you might "
+#~ "copy\n"
+#~ " special files like FIFOs or /dev/zero\n"
+#~ " --remove-destination remove each existing destination file "
+#~ "before\n"
+#~ " attempting to open it (contrast with --"
+#~ "force)\n"
+#~ msgstr ""
+#~ "Copia ORIXE a DESTINO, ou múltiples ORIXE(s) a un DIRECTORIO.\n"
+#~ "\n"
+#~ " -a, --archive igual a -dpR\n"
+#~ " --backup[=CONTROL] facer unha copia de seguridade de cada "
+#~ "ficheiro\n"
+#~ " destino\n"
+#~ " -b como --backup mais sen aceptar argumentos\n"
+#~ " -d, --no-dereference non seguir as ligazóns simbólicas\n"
+#~ " -f, --force se non se pode abrir un ficheiro destino,\n"
+#~ " borralo e tentar de novo\n"
+#~ " -i, --interactive preguntar antes de sobrescribir\n"
+#~ " -H segui-las ligazóns simbólicas de liña de\n"
+#~ " comandos\n"
+#~ " -l, --link facer ligazóns en vez de copiar\n"
+#~ " -L, --dereference seguir as ligazóns simbólicas\n"
+#~ " -p, --preserve mante-los atributos dos ficheiros se é "
+#~ "posible\n"
+#~ " --parents engadi-lo camiño da orixe ao DIRECTORIO\n"
+#~ " -P o mesmo que `--parents' por agora; logo "
+#~ "será\n"
+#~ " `--no-dereference' para seguir POSIX\n"
+#~ " -r copiar recursivamente, os non-directorios "
+#~ "coma\n"
+#~ " ficheiros. AVISO: empregue -R se "
+#~ "quere\n"
+#~ " copiar ficheiros especiais coma FIFOs "
+#~ "ou\n"
+#~ " /dev/zero\n"
+#~ " --remove-destination eliminar os ficheiros de destino antes de\n"
+#~ " tentar abrilos (contraste con --force)\n"
+
+#~ msgid ""
+#~ "Copy a file, converting and formatting according to the options.\n"
+#~ "\n"
+#~ " bs=BYTES force ibs=BYTES and obs=BYTES\n"
+#~ " cbs=BYTES convert BYTES bytes at a time\n"
+#~ " conv=KEYWORDS convert the file as per the comma separated keyword "
+#~ "list\n"
+#~ " count=BLOCKS copy only BLOCKS input blocks\n"
+#~ " ibs=BYTES read BYTES bytes at a time\n"
+#~ " if=FILE read from FILE instead of stdin\n"
+#~ " obs=BYTES write BYTES bytes at a time\n"
+#~ " of=FILE write to FILE instead of stdout\n"
+#~ " seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+#~ " skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "BLOCKS and BYTES may be followed by the following multiplicative "
+#~ "suffixes:\n"
+#~ "xM M, c 1, w 2, b 512, kD 1000, k 1024, MD 1,000,000, M 1,048,576,\n"
+#~ "GD 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.\n"
+#~ "Each KEYWORD may be:\n"
+#~ "\n"
+#~ " ascii from EBCDIC to ASCII\n"
+#~ " ebcdic from ASCII to EBCDIC\n"
+#~ " ibm from ASCII to alternated EBCDIC\n"
+#~ " block pad newline-terminated records with spaces to cbs-size\n"
+#~ " unblock replace trailing spaces in cbs-size records with newline\n"
+#~ " lcase change upper case to lower case\n"
+#~ " notrunc do not truncate the output file\n"
+#~ " ucase change lower case to upper case\n"
+#~ " swab swap every pair of input bytes\n"
+#~ " noerror continue after read errors\n"
+#~ " sync pad every input block with NULs to ibs-size; when used\n"
+#~ " with block or unblock, pad with spaces rather than NULs\n"
+#~ msgstr ""
+#~ "Copia un ficheiro, converténdoo e formatándoo segundo as opcións.\n"
+#~ "\n"
+#~ " bs=BYTES forzar ibs=BYTES e obs=BYTES\n"
+#~ " cbs=BYTES converter BYTES bytes de cada vez\n"
+#~ " conv=PALABRAS converte-lo ficheiro segundo a lista de palabras "
+#~ "separadas\n"
+#~ " por coma.\n"
+#~ " count=BLOQUES copiar só BLOQUES bloques de entrada\n"
+#~ " ibs=BYTES ler BYTES bytes de cada vez\n"
+#~ " if=FICHEIRO ler do FICHEIRO en vez da entrada estándar\n"
+#~ " obs=BYTES escribir BYTES bytes de cada vez\n"
+#~ " of=FILE escribir no FICHEIRO en vez da saída estándar\n"
+#~ " seek=BLOQUES saltar na saída os primeiros BLOQUES de tamaño obs\n"
+#~ " skip=BLOQUES saltar na entrada os primeiros BLOQUES de tamaño ibs\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosa-la información da versión e saír\n"
+#~ "\n"
+#~ "BLOQUES e BYTES poden te-los seguintes sufixos multiplicativos:\n"
+#~ "xM M, c 1, w 2, b 512, kD 1000, k 1024, MD 1.000.000, M 1.048.576,\n"
+#~ "GD 1.000.000.000, G 1.073.741.824, e do mesmo xeito para T, P, E, Z, Y.\n"
+#~ "Cada PALABRA pode ser:\n"
+#~ "\n"
+#~ " ascii de EBCDIC a ASCII\n"
+#~ " ebcdic de ASCII a EBCDIC\n"
+#~ " ibm de ASCII a EBCDIC alternado\n"
+#~ " block completar rexistros rematados en nova liña con espacios ata "
+#~ "o\n"
+#~ " tamaño cbs\n"
+#~ " unblock substituí-los espacios finais dos rexistros de tamaño cbs "
+#~ "por\n"
+#~ " unha fin de liña\n"
+#~ " lcase cambia-las letras maiúsculas a minúsculas\n"
+#~ " notrunc non trunca-lo ficheiro de saída\n"
+#~ " ucase cambia-las letras minúsculas a maiúsculas\n"
+#~ " swab trocar cada par de bytes da entrada\n"
+#~ " noerror continuar se hai erros de lectura\n"
+#~ " sync completar cada bloque de entrada con NULs ata o tamaño ibs; "
+#~ "ao\n"
+#~ " usalo con block e unblock, completar con espacios en vez de "
+#~ "NULs\n"
+
+#~ msgid ""
+#~ "Show information about the filesystem on which each FILE resides,\n"
+#~ "or all filesystems by default.\n"
+#~ "\n"
+#~ " -a, --all include filesystems having 0 blocks\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -i, --inodes list inode information instead of block usage\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l, --local limit listing to local filesystems\n"
+#~ " -m, --megabytes like --block-size=1048576\n"
+#~ " --no-sync do not invoke sync before getting usage info "
+#~ "(default)\n"
+#~ " -P, --portability use the POSIX output format\n"
+#~ " --sync invoke sync before getting usage info\n"
+#~ " -t, --type=TYPE limit listing to filesystems of type TYPE\n"
+#~ " -T, --print-type print filesystem type\n"
+#~ " -x, --exclude-type=TYPE limit listing to filesystems not of type "
+#~ "TYPE\n"
+#~ " -v (ignored)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Amosa información acerca do sistema de ficheiros no que reside cada "
+#~ "FICHEIRO,\n"
+#~ "ou tódolos sistemas de ficheiros por omisión.\n"
+#~ "\n"
+#~ " -a, --all incluí-los sistemas de ficheiros con 0 bloques\n"
+#~ " --block-size=TAM utilizar bloques de TAM bytes\n"
+#~ " -h, --human-readable escribi-los tamaños nun formato lexible para "
+#~ "persoas\n"
+#~ " (p.ex. 1K 234M 2G)\n"
+#~ " -H, --si o mesmo, mais usando potencias de 1000, non de "
+#~ "1024\n"
+#~ " -i, --inodes amosa-la información de inodos en vez dos "
+#~ "bloques\n"
+#~ " utilizados\n"
+#~ " -k, --kilobytes coma --block-size=1024\n"
+#~ " -l, --local limita-la lista aos sistemas de ficheiros locais\n"
+#~ " -m, --megabytes coma --block-size=1048576\n"
+#~ " --no-sync non chamar a sync antes de obte-la información "
+#~ "de\n"
+#~ " uso (opción por defecto)\n"
+#~ " -P, --portability usa-lo formato POSIX de saída\n"
+#~ " --sync chamar a sync antes de obte-la información de "
+#~ "uso\n"
+#~ " -t, --type=TIPO limita-la lista aos sistemas de ficheiros do tipo "
+#~ "TIPO\n"
+#~ " -T, --print-type escribi-lo tipo de sistema de ficheiros\n"
+#~ " -x, --exclude-type=TIPO limita-la lista aos sistemas de ficheiros que "
+#~ "non\n"
+#~ " sexan do tipo TIPO\n"
+#~ " -v (ignorada)\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosa-la información da versión e saír\n"
+
+#~ msgid ""
+#~ "Summarize disk usage of each FILE, recursively for directories.\n"
+#~ "\n"
+#~ " -a, --all write counts for all files, not just directories\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -b, --bytes print size in bytes\n"
+#~ " -c, --total produce a grand total\n"
+#~ " -D, --dereference-args dereference PATHs when symbolic link\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l, --count-links count sizes many times if hard linked\n"
+#~ " -L, --dereference dereference all symbolic links\n"
+#~ " -m, --megabytes like --block-size=1048576\n"
+#~ " -S, --separate-dirs do not include size of subdirectories\n"
+#~ " -s, --summarize display only a total for each argument\n"
+#~ " -x, --one-file-system skip directories on different filesystems\n"
+#~ " -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+#~ "FILE.\n"
+#~ " --exclude=PAT Exclude files that match PAT.\n"
+#~ " --max-depth=N print the total for a directory (or file, with --"
+#~ "all)\n"
+#~ " only if it is N or fewer levels below the "
+#~ "command\n"
+#~ " line argument; --max-depth=0 is the same as\n"
+#~ " --summarize\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Amosa un resume da utilización do disco de cada FICHEIRO, recursivamente "
+#~ "para\n"
+#~ "directorios.\n"
+#~ "\n"
+#~ " -a, --all escribi-la conta para tódolos ficheiros, non só "
+#~ "os\n"
+#~ " directorios\n"
+#~ " -b, --bytes escribi-lo tamaño en bytes\n"
+#~ " -c, --total producir un total\n"
+#~ " -D, --dereference-args segui-los camiños a través de ligazóns "
+#~ "simbólicas\n"
+#~ " -h, --human-readable escribi-los tamaños nun formato lexible para "
+#~ "persoas\n"
+#~ " (p.ex., 1K 234M 2G)\n"
+#~ " -H, --si o mesmo, mais usando potencias de 1000, non de "
+#~ "1024\n"
+#~ " -k, --kilobytes coma --block-size=1024\n"
+#~ " -l, --count-links conta-los tamaños múltiples veces se hai ligazóns "
+#~ "duras\n"
+#~ " -L, --dereference seguir tódalas ligazóns simbólicas\n"
+#~ " -m, --megabytes coma --block-size=1048576\n"
+#~ " -S, --separate-dirs non incluí-lo tamaño dos subdirectorios\n"
+#~ " -s, --summarize amosar só o total para cada argumento\n"
+#~ " -x, --one-file-system omiti-los directorios en sistemas de ficheiros\n"
+#~ " distintos\n"
+#~ " -X FICH, --exclude-from=FICH excluí-los ficheiros que coincidan con "
+#~ "algún\n"
+#~ " patrón contido en FICH.\n"
+#~ " --exclude=PATRÓN excluí-los ficheiros que coincidan co PATRÓN\n"
+#~ " --max-depth=N escribi-lo total para un directorio (ou ficheiro, "
+#~ "con\n"
+#~ " --all), só se está N ou menos niveis debaixo "
+#~ "do\n"
+#~ " argumento da liña de comandos; --max-depth=0 é "
+#~ "o\n"
+#~ " mesmo que --summarize\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosa-la información da versión e saír\n"
+
+#~ msgid ""
+#~ "In the first two formats, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+#~ "the existing DIRECTORY, while setting permission modes and owner/group.\n"
+#~ "In the third format, create all components of the given DIRECTORY(ies).\n"
+#~ "\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination file\n"
+#~ " -b like --backup but does not accept an argument\n"
+#~ " -c (ignored)\n"
+#~ " -d, --directory treat all arguments as directory names; create all\n"
+#~ " components of the specified directories\n"
+#~ " -D create all leading components of DEST except the "
+#~ "last,\n"
+#~ " then copy SOURCE to DEST; useful in the 1st "
+#~ "format\n"
+#~ " -g, --group=GROUP set group ownership, instead of process' current "
+#~ "group\n"
+#~ " -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-"
+#~ "xr-x\n"
+#~ " -o, --owner=OWNER set ownership (super-user only)\n"
+#~ " -p, --preserve-timestamps apply access/modification times of SOURCE "
+#~ "files\n"
+#~ " to corresponding destination files\n"
+#~ " -s, --strip strip symbol tables, only for 1st and 2nd formats\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " -v, --verbose print the name of each directory as it is created\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Nas dúas primeiras formas, copia a ORIXE en DESTINO ou varias ORIXE(s) "
+#~ "ao\n"
+#~ "DIRECTORIO existente, axustando os permisos e o dono/grupo.\n"
+#~ "Na terceira forma, crea tódolos compoñentes do(s) DIRECTORIO(s) "
+#~ "indicados.\n"
+#~ "\n"
+#~ " --backup[=CONTROL] facer unha copia de seguridade de cada "
+#~ "ficheiro\n"
+#~ " destino\n"
+#~ " -b como --backup mais sen aceptar argumentos\n"
+#~ " -c (ignorada)\n"
+#~ " -d, --directory tratar tódolos argumentos como directorios; crear "
+#~ "tódolos\n"
+#~ " compoñentes dos directorios indicados\n"
+#~ " -D crear tódolos compoñentes iniciais de DESTINO agás "
+#~ "o\n"
+#~ " derradeiro, entón copiar ORIXE a DESTINO; útil na\n"
+#~ " primeira forma\n"
+#~ " -g, --group=GRUPO establece-los permisos de grupo, en vez do grupo "
+#~ "do\n"
+#~ " proceso\n"
+#~ " -m, --mode=MODO establece-los permisos (coma en chmod), en vez de\n"
+#~ " rwxr-xr-x\n"
+#~ " -o, --owner=OWNER establece-lo dono (só super-usuario)\n"
+#~ " -p, --preserve-timestamps mante-las datas de acceso/modificación dos\n"
+#~ " ficheiros ORIXE nos correspondentes de "
+#~ "destino\n"
+#~ " -s, --strip elimina-las táboas de símbolos, só para a primeira "
+#~ "e\n"
+#~ " segunda forma\n"
+#~ " -S, --suffix=SUFIXO subsituí-lo sufixo habitual da copia de seguridade\n"
+#~ " -v, --verbose escribi-lo nome de cada directorio ao crealo\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosa-la versión da información e saír\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Create a link to the specified TARGET with optional LINK_NAME.\n"
+#~ "If LINK_NAME is omitted, a link with the same basename as the TARGET is\n"
+#~ "created in the current directory. When using the second form with more\n"
+#~ "than one TARGET, the last argument must be a directory; create links\n"
+#~ "in DIRECTORY to each TARGET. Create hard links by default, symbolic\n"
+#~ "links with --symbolic. When creating hard links, each TARGET must "
+#~ "exist.\n"
+#~ "\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination "
+#~ "file\n"
+#~ " -b like --backup but does not accept an "
+#~ "argument\n"
+#~ " -d, -F, --directory hard link directories (super-user only)\n"
+#~ " -f, --force remove existing destination files\n"
+#~ " -n, --no-dereference treat destination that is a symlink to a\n"
+#~ " directory as if it were a normal file\n"
+#~ " -i, --interactive prompt whether to remove destinations\n"
+#~ " -s, --symbolic make symbolic links instead of hard links\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " --target-directory=DIRECTORY specify the DIRECTORY in which to "
+#~ "create\n"
+#~ " the links\n"
+#~ " -v, --verbose print name of each file before linking\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Crea unha ligazón ao OBXECTIVO indicado cun NOME_DA_LIGAZÓN opcional.\n"
+#~ "Se se omite o NOME_DA_LIGAZÓN, crearase unha ligazón co mesmo nome base "
+#~ "que\n"
+#~ "o OBXECTIVO no directorio actual. Cando se usa a segunda forma con máis "
+#~ "dun\n"
+#~ "OBXECTIVO, o último argumento ten que ser un directorio; crea ligazóns "
+#~ "no\n"
+#~ "DIRECTORIO para cada OBXECTIVO. Crea ligazóns duras por defecto, "
+#~ "ligazóns\n"
+#~ "simbólicas con --symbolic. Cando se crean ligazóns duras, cada "
+#~ "OBXECTIVO\n"
+#~ "debe existir.\n"
+#~ "\n"
+#~ " --backup[=CONTROL] facer unha copia de seguridade de cada "
+#~ "ficheiro\n"
+#~ " destino\n"
+#~ " -b como --backup mais sen aceptar argumentos\n"
+#~ " -d, -F, --directory facer ligazón dura de directorios (só "
+#~ "super\n"
+#~ " usuario)\n"
+#~ " -f, --force borra-los ficheiros destino que xa existan\n"
+#~ " -n, --no-dereference trata-los destinos que sexan ligazóns "
+#~ "simbólicas\n"
+#~ " a un directorio coma se fosen ficheiros "
+#~ "normais\n"
+#~ " -i, --interactive preguntar se os destinos se borran\n"
+#~ " -s, --symbolic facer ligazóns simbólicas en vez de duras\n"
+#~ " -S, --suffix=SUFIXO substituí-lo sufixo habitual da copia de\n"
+#~ " seguridade\n"
+#~ " --target-directory=DIRECTORIO indica-lo DIRECTORIO onde se crean "
+#~ "as\n"
+#~ " ligazóns\n"
+#~ " -v, --verbose escribi-lo nome de cada ficheiro antes de\n"
+#~ " face-la ligazón\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosa-la información da versión e saír\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "List information about the FILEs (the current directory by default).\n"
+#~ "Sort entries alphabetically if none of -cftuSUX nor --sort.\n"
+#~ "\n"
+#~ " -a, --all do not hide entries starting with .\n"
+#~ " -A, --almost-all do not list implied . and ..\n"
+#~ " -b, --escape print octal escapes for nongraphic "
+#~ "characters\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -B, --ignore-backups do not list implied entries ending with ~\n"
+#~ " -c with -lt: sort by, and show, ctime (time of "
+#~ "last\n"
+#~ " modification of file status information)\n"
+#~ " with -l: show ctime and sort by name\n"
+#~ " otherwise: sort by ctime\n"
+#~ " -C list entries by columns\n"
+#~ " --color[=WHEN] control whether color is used to distinguish "
+#~ "file\n"
+#~ " types. WHEN may be `never', `always', or "
+#~ "`auto'\n"
+#~ " -d, --directory list directory entries instead of contents\n"
+#~ " -D, --dired generate output designed for Emacs' dired "
+#~ "mode\n"
+#~ " -f do not sort, enable -aU, disable -lst\n"
+#~ " -F, --classify append indicator (one of */=@|) to entries\n"
+#~ " --format=WORD across -x, commas -m, horizontal -x, long -"
+#~ "l,\n"
+#~ " single-column -1, verbose -l, vertical -C\n"
+#~ " --full-time like -l --time-style=full-iso\n"
+#~ msgstr ""
+#~ "Amosa información dos FICHEIROs (por omisión no directorio actual).\n"
+#~ "Ordena as entradas alfabeticamente se non se indica ningunha das opcións\n"
+#~ "-cftuSUX nin --sort.\n"
+#~ "\n"
+#~ " -a, --all non oculta-las entradas que empezan con .\n"
+#~ " -A, --almost-all non amosa-las entradas . e .. implícitas\n"
+#~ " -b, --escape escribir caracteres de escape en octal para\n"
+#~ " os caracteres non gráficos\n"
+#~ " --block-size=TAMAÑO usar bloques de TAMAÑO bytes\n"
+#~ " -B, --ignore-backups non lista-las entradas que rematan con ~\n"
+#~ " -c con -lt: amosar e ordenar por ctime (data "
+#~ "da\n"
+#~ " última modificación da información do "
+#~ "estado\n"
+#~ " de ficheiro)\n"
+#~ " con -l: amosar ctime e ordenar polo nome\n"
+#~ " doutro xeito: ordenar por ctime\n"
+#~ " -C amosa-las entradas en columnas\n"
+#~ " --color[=CANDO] controla-lo emprego da cor para distingui-"
+#~ "los\n"
+#~ " tipos de ficheiros. CANDO pode ser "
+#~ "`never'\n"
+#~ " (nunca), `always' (sempre) ou "
+#~ "`auto' (auto)\n"
+#~ " -d, --directory amosa-las entradas de directorio en vez dos\n"
+#~ " seus contidos\n"
+#~ " -D, --dired xera-la saída para o modo `dired' de Emacs\n"
+#~ " -f non ordenar, actívase -aU, desactívase -lst\n"
+#~ " -F, --classify engadir un indicador ás entradas (un de */"
+#~ "=@|)\n"
+#~ " --format=PALABRA accross -x [cruzar], commas -m [comas],\n"
+#~ " horizontal -x, long -l [longo], single-"
+#~ "column\n"
+#~ " -1 [unha columna], verbose -l "
+#~ "[explicativo],\n"
+#~ " vertical -C\n"
+#~ " --full-time amosa-la data e a hora completas\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -g like -l, but do not list owner\n"
+#~ " -G, --no-group inhibit display of group information\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " --si likewise, but use powers of 1000 not 1024\n"
+#~ " -H, --dereference-command-line follow symbolic links on the command "
+#~ "line\n"
+#~ " --indicator-style=WORD append indicator with style WORD to entry "
+#~ "names:\n"
+#~ " none (default), classify (-F), file-type (-"
+#~ "p)\n"
+#~ " -i, --inode print index number of each file\n"
+#~ " -I, --ignore=PATTERN do not list implied entries matching shell "
+#~ "PATTERN\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l use a long listing format\n"
+#~ " -L, --dereference when showing file information for a "
+#~ "symbolic\n"
+#~ " link, show information for the file the "
+#~ "link\n"
+#~ " references rather than for the link "
+#~ "itself\n"
+#~ " -m fill width with a comma separated list of "
+#~ "entries\n"
+#~ msgstr ""
+#~ " -g (ignorada)\n"
+#~ " -G, --no-group non amosa-la información do grupo\n"
+#~ " -h, --human-readable escribi-los tamaños nun formato lexible "
+#~ "para\n"
+#~ " humanos (p.ex. 1K 234M 2G)\n"
+#~ " --si o mesmo, mais usando potencias de 1000, non "
+#~ "1024\n"
+#~ " -H igual que `--si' por agora; cambiará para "
+#~ "seguir\n"
+#~ " a norma POSIX\n"
+#~ " --indicator-style=PALABRA engadir un indicador de estilo PALABRA "
+#~ "aos\n"
+#~ " nomes das entradas: none [ningún] "
+#~ "(defecto),\n"
+#~ " classify [clasificar] (-F), file-type\n"
+#~ " [tipo de ficheiro] (-p)\n"
+#~ " -i, --inode escribi-lo número de índice de cada "
+#~ "ficheiro\n"
+#~ " -I, --ignore=PATRÓN non amosa-las entradas que encaixen co "
+#~ "PATRÓN\n"
+#~ " de shell\n"
+#~ " -k, --kilobytes coma --block-size=1024\n"
+#~ " -l usar un formato longo de listaxe\n"
+#~ " -L, --dereference amosa-las entradas apuntadas polas ligazóns\n"
+#~ " simbólicas\n"
+#~ " -m encher ao ancho cunha lista de entradas "
+#~ "separadas\n"
+#~ " por coma\n"
+#~ " -n, --numeric-uid-gid amosar UIDs e GIDs numéricos en vez dos "
+#~ "nomes\n"
+#~ " -N, --literal amosa-los nomes reais (non tratar p.ex. os\n"
+#~ " caracteres de control como especiais)\n"
+#~ " -o usar un formato de listado longo sen a "
+#~ "información\n"
+#~ " do grupo\n"
+#~ " -p, --file-type engadir un indicador ás entradas (un de /"
+#~ "=@|)\n"
+#~ " -q, --hide-control-chars escribir ? en vez dos caracteres non "
+#~ "gráficos\n"
+#~ " --show-control-chars amosa-los caracteres non gráficos tal como "
+#~ "son\n"
+#~ " (predeterminado a menos que o programa "
+#~ "sexa\n"
+#~ " `ls' e a saída sexa un terminal)\n"
+#~ " -Q, --quote-name arrodea-los nomes entre comiñas\n"
+#~ " --quoting-style=PALABRA utiliza-lo estilo de cita PALABRA para os "
+#~ "nomes\n"
+#~ " das entradas:\n"
+#~ " literal, shell, shell-always, c, escape\n"
+#~ " -r, --reverse inverte-la orde ao face-la ordenación\n"
+#~ " -R, --recursive amosa-los subdirectorios recursivamente\n"
+#~ " -s, --size escribi-lo tamaño de cada ficheiro, en "
+#~ "bloques\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -S sort by file size\n"
+#~ " --sort=WORD extension -X, none -U, size -S, time -t,\n"
+#~ " version -v\n"
+#~ " status -c, time -t, atime -u, access -u, use "
+#~ "-u\n"
+#~ " --time=WORD show time as WORD instead of modification "
+#~ "time:\n"
+#~ " atime, access, use, ctime or status; use\n"
+#~ " specified time as sort key if --sort=time\n"
+#~ " --time-style=WORD show times using style WORD:\n"
+#~ " full-iso, iso, locale, posix-iso\n"
+#~ " -t sort by modification time\n"
+#~ " -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+#~ " -u with -lt: sort by, and show, access time\n"
+#~ " with -l: show access time and sort by "
+#~ "name\n"
+#~ " otherwise: sort by access time\n"
+#~ " -U do not sort; list entries in directory "
+#~ "order\n"
+#~ " -v sort by version\n"
+#~ " -w, --width=COLS assume screen width instead of current "
+#~ "value\n"
+#~ " -x list entries by lines instead of by columns\n"
+#~ " -X sort alphabetically by entry extension\n"
+#~ " -1 list one file per line\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "By default, color is not used to distinguish types of files. That is\n"
+#~ "equivalent to using --color=none. Using the --color option without the\n"
+#~ "optional WHEN argument is equivalent to using --color=always. With\n"
+#~ "--color=auto, color codes are output only if standard output is "
+#~ "connected\n"
+#~ "to a terminal (tty).\n"
+#~ msgstr ""
+#~ " -S ordenar polo tamaño dos ficheiros\n"
+#~ " --sort=PALABRA extension [extensión] -X, none [ningunha] -"
+#~ "U,\n"
+#~ " size [tamaño] -S, time [data] -t, version\n"
+#~ " [version] -v, status [estado] -c, atime "
+#~ "[data\n"
+#~ " de acceso] -u, access [acceso] -u, use "
+#~ "[use] -u\n"
+#~ " --time=PALABRA amosa-la data segundo PALABRA, en vez da "
+#~ "data\n"
+#~ " de modificación: atime, access, use, "
+#~ "ctime, ou\n"
+#~ " status; usa-la data especificada para "
+#~ "ordenar\n"
+#~ " se --sort=time\n"
+#~ " -t ordenar pola data de modificación\n"
+#~ " -T, --tabsize=COLS establece-los tabuladores cada COLS, en vez "
+#~ "de 8\n"
+#~ " -u con -lt: amosar e ordenar pola data de "
+#~ "acceso\n"
+#~ " con -l: amosa-la data de acceso e ordenar "
+#~ "polo\n"
+#~ " nome\n"
+#~ " doutro xeito: ordear pola data de acceso\n"
+#~ " -U non ordenar; amosa-las entradas na orde do\n"
+#~ " directorio\n"
+#~ " -v ordenar por versión\n"
+#~ " -w, --width=COLS establece-la anchura da pantalla en vez do\n"
+#~ " valor actual\n"
+#~ " -x amosa-las entradas en liñas, en vez de "
+#~ "columnas\n"
+#~ " -X ordenar alfabéticamente pola extensión da\n"
+#~ " entrada\n"
+#~ " -1 amosar un ficheiro por liña\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosa-la información da versión e saír\n"
+#~ "\n"
+#~ "Por defecto, non se usan cores para distingui-los tipos de ficheiros. É\n"
+#~ "equivalente a usar --color=none. Usa-la opción --color sen o argumento\n"
+#~ "opcional CANDO é equivalente a usar --color=always. Con --color=auto, "
+#~ "os\n"
+#~ "códigos de cor escríbense só se a saída está conectada a un terminal "
+#~ "(tty).\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+#~ "for even very expensive hardware probing to recover the data.\n"
+#~ "\n"
+#~ " -f, --force change permissions to allow writing if necessary\n"
+#~ " -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+#~ " -s, --size=N shred this many bytes (suffixes like k, M, G accepted)\n"
+#~ " -u, --remove truncate and remove file after overwriting\n"
+#~ " -v, --verbose show progress\n"
+#~ " -x, --exact do not round file sizes up to the next full block\n"
+#~ " -z, --zero add a final overwrite with zeros to hide shredding\n"
+#~ " - shred standard output\n"
+#~ " --help display this help and exit\n"
+#~ " --version print version information and exit\n"
+#~ "\n"
+#~ "Delete FILE(s) if --remove (-u) is specified. The default is not to "
+#~ "remove\n"
+#~ "the files because it is common to operate on device files like /dev/hda,\n"
+#~ "and those files usually should not be removed. When operating on "
+#~ "regular\n"
+#~ "files, most people use the --remove option.\n"
+#~ "\n"
+#~ "CAUTION: Note that shred relies on a very important assumption:\n"
+#~ "that the filesystem overwrites data in place. This is the traditional\n"
+#~ "way to do things, but many modern filesystem designs do not satisfy this\n"
+#~ "assumption. The following are examples of filesystems on which shred is\n"
+#~ "not effective:\n"
+#~ "\n"
+#~ "* log-structured or journaled filesystems, such as those supplied with\n"
+#~ " AIX and Solaris (and JFS, ReiserFS, XFS, etc.)\n"
+#~ "\n"
+#~ "* filesystems that write redundant data and carry on even if some writes\n"
+#~ " fail, such as RAID-based filesystems\n"
+#~ "\n"
+#~ "* filesystems that make snapshots, such as Network Appliance's NFS "
+#~ "server\n"
+#~ "\n"
+#~ "* filesystems that cache in temporary locations, such as NFS\n"
+#~ " version 3 clients\n"
+#~ "\n"
+#~ "* compressed filesystems\n"
+#~ "\n"
+#~ "In addition, file system backups and remote mirrors may contain copies\n"
+#~ "of the file that cannot be removed, and that will allow a shredded file\n"
+#~ "to be recovered later.\n"
+#~ msgstr ""
+#~ "Sobrescribe repetidamente o(s) FICHEIRO(s) indicados, para facer que "
+#~ "sexa\n"
+#~ "máis difícil recuperar os datos, mesmo en hardware complexo.\n"
+#~ "\n"
+#~ " -f, --force alterar os permisos para poder escribir se for "
+#~ "necesario\n"
+#~ " -n, --iterations=N Sobrescribir N veces en vez do predeterminado (%d)\n"
+#~ " -s, --size=N destruír este número de bytes (acéptanse sufixos coma k, "
+#~ "M, G)\n"
+#~ " -u, --remove truncar e eliminar o ficheiro tras sobrescribilo\n"
+#~ " -v, --verbose amosar a evolución\n"
+#~ " -x, --exact non axustar o tamaño dos ficheiros ata un bloque "
+#~ "completo\n"
+#~ " -z, --zero sobrescribir con ceros ao rematar para agochar a "
+#~ "destrucción\n"
+#~ " - saída estándar do shred\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosa-la información da versión e saír\n"
+#~ "\n"
+#~ "Os ficheiros bórranse ao indicarse --remove (-u). Por omisión non se "
+#~ "eliminan\n"
+#~ "porque o habitual é actuar en ficheiros de dispositivo como /dev/hda, e\n"
+#~ "normalmente estes non deben ser borrados. No caso dos ficheiros "
+#~ "regulares,\n"
+#~ "a maioría da xente usa a opción --remove.\n"
+#~ "\n"
+#~ "PRECAUCIÓN: Advirta que o shred se basea en asumir algo moi importante:\n"
+#~ "que os sistemas de ficheiros sobrescriben os datos. Isto é o xeito "
+#~ "tradicional\n"
+#~ "de facelo, pero moitos sistemas de ficheiros modernos están deseñados "
+#~ "para\n"
+#~ "non satisfacer isto. Estes son exemplos de sistemas de ficheiros cos que "
+#~ "o\n"
+#~ "shred non é efectivo:\n"
+#~ "\n"
+#~ "* sistemas 'journaled' ou estructurados con log, como os fornecidos con "
+#~ "AIX\n"
+#~ " e Solaris (e JFS, ReiserFS, XFS, etc.)\n"
+#~ "\n"
+#~ "* sistemas que escriben datos redundantes e continúan mesmo se algunha\n"
+#~ " escritura falla, como os sistemas de ficheiros baseados en RAID\n"
+#~ "\n"
+#~ "* sistemas que fan capturas periódicas, como o servidor NFS de Network\n"
+#~ " Appliance\n"
+#~ "\n"
+#~ "* sistemas que fan caché en localizacións temporais, como os clientes de\n"
+#~ " NFS versión 3\n"
+#~ "\n"
+#~ "* sistemas de ficheiros comprimidos\n"
+
+#~ msgid ""
+#~ "Update the access and modification times of each FILE to the current "
+#~ "time.\n"
+#~ "\n"
+#~ " -a change only the access time\n"
+#~ " -c, --no-create do not create any files\n"
+#~ " -d, --date=STRING parse STRING and use it instead of current time\n"
+#~ " -f (ignored)\n"
+#~ " -m change only the modification time\n"
+#~ " -r, --reference=FILE use this file's times instead of current time\n"
+#~ " -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current "
+#~ "time\n"
+#~ " --time=WORD set time given by WORD: access atime use (same "
+#~ "as -a)\n"
+#~ " modify mtime (same as -m)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Note that the three time-date formats recognized for the -d and -t "
+#~ "options\n"
+#~ "and for the obsolescent argument are all different.\n"
+#~ msgstr ""
+#~ "Actualiza a data de acceso e modificación de cada FICHEIRO á data "
+#~ "actual.\n"
+#~ "\n"
+#~ " -a cambiar só a data de acceso\n"
+#~ " -c, --no-create non crear ningún ficheiro\n"
+#~ " -d, --date=CADEA analizar CADEA e usala en vez da data actual\n"
+#~ " -f (ignorada)\n"
+#~ " -m cambiar só a data de modificación\n"
+#~ " -r, --reference=FICH usa-las datas deste ficheiro en vez da data "
+#~ "actual\n"
+#~ " -t DATA usar [[SS]AA]MMDDhhmm[.ss] en vez da data "
+#~ "actual\n"
+#~ " --time=PALABRA establece-lo tempo indicado por PALABRA:\n"
+#~ " [acceso] -a, atime [data de acceso] -a,\n"
+#~ " mtime [data de modificación] -m, modify\n"
+#~ " [modificación] -m, use [uso] -a\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosa-la información da versión e saír\n"
+#~ "\n"
+#~ "Advirta de que os tres formatos de hora/data recoñecidos polas opcións -"
+#~ "d\n"
+#~ "e -t, e polo argumento obsoleto, son todos diferentes.\n"
+
+#~ msgid ""
+#~ "Warning: the meaning of `-P' will change in the future to conform to "
+#~ "POSIX.\n"
+#~ "Use `--parents' for the old meaning, and `--no-dereference' for the new "
+#~ "one."
+#~ msgstr ""
+#~ "Aviso: o significado de `-P' mudará no futuro para seguir a norma POSIX.\n"
+#~ "Use `--parents' para o significado antigo, e `--no-dereference' para o "
+#~ "novo."
+
+#, fuzzy
+#~ msgid "Copyright (C) 2001 Free Software Foundation, Inc."
+#~ msgstr "Copyright (C) 1999 Free Software Foundation, Inc."
+
+#, fuzzy
+#~ msgid "%a %b %d %H:%M:%S %Y"
+#~ msgstr "%e %b %Y %H:%M"
+
+#~ msgid ""
+#~ "when creating character special files, major and minor device\n"
+#~ "numbers must be specified"
+#~ msgstr ""
+#~ "ao crear ficheiros especiais de carácter, débense indicar os números\n"
+#~ "de dispositivo `major' e `minor'"
+
+#~ msgid "days"
+#~ msgstr "días"
+
+#~ msgid "users"
+#~ msgstr "usuarios"
+
+#, fuzzy
+#~ msgid "%s: only one signal specififier allowed"
+#~ msgstr "só se pode especificar un argumento"
+
+#, fuzzy
+#~ msgid ""
+#~ "Run COMMAND with root directory set to NEWROOT.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+#~ msgstr ""
+#~ "Visualiza-la conta de comprobación CRC e o número de bytes de cada "
+#~ "FICHEIRO.\n"
+#~ "\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "FORMAT controls the output. The only valid option for the second form\n"
+#~ "specifies Coordinated Universal Time. Interpreted sequences are:\n"
+#~ "\n"
+#~ " %%%% a literal %%\n"
+#~ " %%a locale's abbreviated weekday name (Sun..Sat)\n"
+#~ " %%A locale's full weekday name, variable length (Sunday..Saturday)\n"
+#~ " %%b locale's abbreviated month name (Jan..Dec)\n"
+#~ " %%B locale's full month name, variable length (January..December)\n"
+#~ " %%c locale's date and time (Sat Nov 04 12:02:33 EST 1989)\n"
+#~ " %%C century (year divided by 100 and truncated to an integer) [00-"
+#~ "99]\n"
+#~ " %%d day of month (01..31)\n"
+#~ " %%D date (mm/dd/yy)\n"
+#~ " %%e day of month, blank padded ( 1..31)\n"
+#~ " %%h same as %%b\n"
+#~ " %%H hour (00..23)\n"
+#~ " %%I hour (01..12)\n"
+#~ " %%j day of year (001..366)\n"
+#~ " %%k hour ( 0..23)\n"
+#~ " %%l hour ( 1..12)\n"
+#~ " %%m month (01..12)\n"
+#~ " %%M minute (00..59)\n"
+#~ " %%n a newline\n"
+#~ " %%p locale's AM or PM\n"
+#~ " %%r time, 12-hour (hh:mm:ss [AP]M)\n"
+#~ " %%s seconds since `00:00:00 1970-01-01 UTC' (a GNU extension)\n"
+#~ " %%S second (00..60)\n"
+#~ " %%t a horizontal tab\n"
+#~ " %%T time, 24-hour (hh:mm:ss)\n"
+#~ " %%u day of week (1..7); 1 represents Monday\n"
+#~ " %%U week number of year with Sunday as first day of week (00..53)\n"
+#~ " %%V week number of year with Monday as first day of week (01..53)\n"
+#~ " %%w day of week (0..6); 0 represents Sunday\n"
+#~ " %%W week number of year with Monday as first day of week (00..53)\n"
+#~ " %%x locale's date representation (mm/dd/yy)\n"
+#~ " %%X locale's time representation (%%H:%%M:%%S)\n"
+#~ " %%y last two digits of year (00..99)\n"
+#~ " %%Y year (1970...)\n"
+#~ " %%z RFC-822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %%Z time zone (e.g., EDT), or nothing if no time zone is "
+#~ "determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr ""
+#~ "\n"
+#~ "FORMATO controla a saída. A única opción válida para a segunda forma\n"
+#~ "indica a Hora Universal Coordinada. As secuencias interpretadas son:\n"
+#~ "\n"
+#~ " %%%% un %% literal\n"
+#~ " %%a o nome de semana abreviado localizado (Dom..Sáb)\n"
+#~ " %%A o nome de semana completo localizado, lonx. variable (Domingo.."
+#~ "Sábado)\n"
+#~ " %%b o nome de mes abreviado localizado (Xan..Dec)\n"
+#~ " %%B o nome de mes completo localizado, lonx. variable (Xaneiro.."
+#~ "Decembro)\n"
+#~ " %%c data e hora localizadas (Sáb Nov 04 12:02:33 EST 1989)\n"
+#~ " %%d día de mes (01..31)\n"
+#~ " %%D data (mm/dd/aa)\n"
+#~ " %%e día de mes, recheado con espacios en blanco ( 1..31)\n"
+#~ " %%h o mesmo que %%b\n"
+#~ " %%H hora (00..23)\n"
+#~ " %%I hora (01..12)\n"
+#~ " %%j día do ano (001..336)\n"
+#~ " %%k hora ( 0..23)\n"
+#~ " %%l hora ( 1..12)\n"
+#~ " %%m mes (01..12)\n"
+#~ " %%M minuto (00..59)\n"
+#~ " %%n un carácter de nova liña\n"
+#~ " %%p AM ou PM localizados\n"
+#~ " %%r hora, en formato de 12 horas (hh:mm:ss [AP]M)\n"
+#~ " %%s segundos dende as 00:00:00 do 1 de xaneiro de 1970 (extensión "
+#~ "GNU)\n"
+#~ " %%S segundo (00..60)\n"
+#~ " %%t un tabulador horizontal\n"
+#~ " %%T hora, en formato de 24 horas (hh:mm:ss)\n"
+#~ " %%U número de semana do ano, co domingo de primeiro día da semana "
+#~ "(00..53)\n"
+#~ " %%V número de semana do ano, co luns de primeiro día da semana "
+#~ "(01..53)\n"
+#~ " %%w día da semana (0..6); 0 é o domingo\n"
+#~ " %%W número de semana do ano, co luns de primeiro día da semana "
+#~ "(00..53)\n"
+#~ " %%x representación da data localizada (dd/mm/aa)\n"
+#~ " %%X representación da hora localizada (%%H:%%M:%%S)\n"
+#~ " %%y últimos dous díxitos do ano (00..99)\n"
+#~ " %%Y ano (1970..)\n"
+#~ " %%z zona horaria numérica estilo RFC-822 (+0100) (extensión non "
+#~ "estándar)\n"
+#~ " %%Z zona horaria (p.ex, CET), ou nada se non se pode determina-la "
+#~ "zona\n"
+#~ "\n"
+#~ "Por defecto, date rechea os campos numéricos con ceros. O date de GNU\n"
+#~ "recoñece os seguintes modificadores entre `%%' e unha directiva "
+#~ "numérica.\n"
+#~ "\n"
+#~ " `-' (guión) non rechea-lo campo\n"
+#~ " `_' (subliñado) rechea-lo campo con espacios\n"
+
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ " --help display this help and exit (should be alone)\n"
+#~ " --version output version information and exit (should be alone)\n"
+#~ "\n"
+#~ "Without -E, the following sequences are recognized and interpolated:\n"
+#~ "\n"
+#~ " \\NNN the character whose ASCII code is NNN (octal)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a alert (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c suppress trailing newline\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r carriage return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ msgstr ""
+#~ "Escribi-la(s) CADEA(s) á saída estándar.\n"
+#~ "\n"
+#~ " -n non escribi-lo carácter de nova liña ó final\n"
+#~ " -e activa-la interpretación de caracteres de escape "
+#~ "mediante\n"
+#~ " barra invertida, listados abaixo\n"
+#~ " -E desactiva-la interpretación desas secuencias nas "
+#~ "CADEAs\n"
+#~ " --help amosar esta axuda e saír (ten que estar soa)\n"
+#~ " --version amosa-la información da versión e saír (ten que estar "
+#~ "soa)\n"
+#~ "\n"
+#~ "Sen -E, as seguintes secuencias son recoñecidas e inseridas:\n"
+#~ "\n"
+#~ " \\NNN o carácter co código ASCII NNN (en octal)\n"
+#~ " \\\\ barra invertida\n"
+#~ " \\a campá (BEL)\n"
+#~ " \\b borrado do carácter anterior\n"
+#~ " \\c suprime o carácter de nova liña final\n"
+#~ " \\f salto de páxina\n"
+#~ " \\n nova liña\n"
+#~ " \\r retorno de carro\n"
+#~ " \\t tabulación horizontal\n"
+#~ " \\v tabulación vertical\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print the value of EXPRESSION to standard output. A blank line below\n"
+#~ "separates increasing precedence groups. EXPRESSION may be:\n"
+#~ "\n"
+#~ " ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+#~ "\n"
+#~ " ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+#~ "\n"
+#~ " ARG1 < ARG2 ARG1 is less than ARG2\n"
+#~ " ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+#~ " ARG1 = ARG2 ARG1 is equal to ARG2\n"
+#~ " ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+#~ " ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+#~ " ARG1 > ARG2 ARG1 is greater than ARG2\n"
+#~ "\n"
+#~ " ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+#~ " ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+#~ "\n"
+#~ " ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+#~ " ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+#~ " ARG1 %% ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+#~ "\n"
+#~ " STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+#~ "\n"
+#~ " match STRING REGEXP same as STRING : REGEXP\n"
+#~ " substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+#~ " index STRING CHARS index in STRING where any CHARS is found, or "
+#~ "0\n"
+#~ " length STRING length of STRING\n"
+#~ " + TOKEN interpret TOKEN as a string, even if it is "
+#~ "a\n"
+#~ " keyword like `match' or an operator like "
+#~ "`/'\n"
+#~ "\n"
+#~ " ( EXPRESSION ) value of EXPRESSION\n"
+#~ msgstr ""
+#~ "Escribi-lo valor de EXPRESIÓN á saída estándar. As liñas en branco "
+#~ "separan\n"
+#~ "os grupos de prioridade crecente. EXPRESIÓN pode ser:\n"
+#~ "\n"
+#~ " ARG1 | ARG2 ARG1 se non é nulo nin 0, doutro xeito ARG2\n"
+#~ "\n"
+#~ " ARG1 & ARG2 ARG1 se ningún argumento é nulo ou cero, doutro xeito "
+#~ "0\n"
+#~ "\n"
+#~ " ARG1 < ARG2 ARG1 é menor que ARG2\n"
+#~ " ARG1 <= ARG2 ARG1 é menor ou igual que ARG2\n"
+#~ " ARG1 = ARG2 ARG1 é igual que ARG2\n"
+#~ " ARG1 != ARG2 ARG1 é distinto que ARG2\n"
+#~ " ARG1 >= ARG2 ARG1 é maior ou igual que ARG2\n"
+#~ " ARG1 > ARG2 ARG1 é maior que ARG2\n"
+#~ "\n"
+#~ " ARG1 + ARG2 suma aritmética de ARG1 e ARG2\n"
+#~ " ARG1 - ARG2 resta aritmética de ARG1 e ARG2\n"
+#~ "\n"
+#~ " ARG1 * ARG2 producto aritmético de ARG1 e ARG2\n"
+#~ " ARG1 / ARG2 cociente aritmético de ARG1 dividido entre ARG2\n"
+#~ " ARG1 %% ARG2 resto aritmético de ARG1 dividido entre ARG2\n"
+#~ "\n"
+#~ " CADEA : REGEXP encaixe da expresión regular REGEXP en CADEA\n"
+#~ "\n"
+#~ " match CADEA REGEXP o mesmo que CADEA : REGEXP\n"
+#~ " substr CADEA POS LONXIT subcadea de CADEA, contando a POS dende 1\n"
+#~ " index CADEA CARACTERES índice da CADEA onde se atopa calquera dos\n"
+#~ " CARACTERES, senón 0\n"
+#~ " length CADEA lonxitude da CADEA\n"
+#~ " quote PALABRA interpreta PALABRA como unha cadea, mesmo se\n"
+#~ " é unha palabra reservada coma `match' ou "
+#~ "un\n"
+#~ " un operador coma `/'\n"
+#~ "\n"
+#~ " ( EXPRESIÓN ) valor de EXPRESIÓN\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " -l produce long format output for the specified USERs\n"
+#~ " -b omit the user's home directory and shell in long "
+#~ "format\n"
+#~ " -h omit the user's project file in long format\n"
+#~ " -p omit the user's plan file in long format\n"
+#~ " -s do short format output, this is the default\n"
+#~ " -f omit the line of column headings in short format\n"
+#~ " -w omit the user's full name in short format\n"
+#~ " -i omit the user's full name and remote host in short "
+#~ "format\n"
+#~ " -q omit the user's full name, remote host and idle time\n"
+#~ " in short format\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "A lightweight `finger' program; print user information.\n"
+#~ "The utmp file will be %s.\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -l escribir a saída cun formato longo\n"
+#~ " -b omiti-lo directorio do usuario e a shell no formato "
+#~ "longo\n"
+#~ " -h omiti-lo ficheiro de proxecto do usuario no formato "
+#~ "longo\n"
+#~ " -p omiti-lo ficheiro plan do usuario no formato longo\n"
+#~ " -s escribir a saída cun formato curto (por defecto)\n"
+#~ " -f omiti-la liña de cabeceiras no formato curto\n"
+#~ " -w omiti-lo nome completo do usuario no formato curto\n"
+#~ " -i omiti-lo nome completo do usuario e a máquina remota "
+#~ "no\n"
+#~ " formato curto\n"
+#~ " -q omiti-lo nome completo do usuario, a máquina remota e "
+#~ "o\n"
+#~ " tempo de inactividade no formato curto\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosa-la información da versión e saír\n"
+#~ "\n"
+#~ "Un programa `finger' lixeiro; escribe a información de usuario\n"
+#~ "O ficheiro utmp será %s.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print ARGUMENT(s) according to FORMAT.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+#~ "\n"
+#~ " \\\" double quote\n"
+#~ " \\0NNN character with octal value NNN (0 to 3 digits)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a alert (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c produce no further output\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r carriage return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ " \\xNNN byte with hexadecimal value NNN (1 to 3 digits)\n"
+#~ "\n"
+#~ " \\uNNNN character with hexadecimal value NNNN (4 digits)\n"
+#~ " \\UNNNNNNNN character with hexadecimal value NNNNNNNN (8 digits)\n"
+#~ " %%%% a single %%\n"
+#~ " %%b ARGUMENT as a string with `\\' escapes interpreted\n"
+#~ "\n"
+#~ "and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+#~ "ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+#~ msgstr ""
+#~ "Escribi-lo(s) ARGUMENTO(s) seguindo o FORMATO.\n"
+#~ "\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosa-la información da versión e saír\n"
+#~ "\n"
+#~ "FORMATO controla a saída, como en printf de C. As secuencias "
+#~ "interpretadas\n"
+#~ "son:\n"
+#~ "\n"
+#~ " \\\" comiñas\n"
+#~ " \\0NNN carácter co valor octal NNN (0 a 3 díxitos)\n"
+#~ " \\\\ barra invertida\n"
+#~ " \\a campá audible (BEL)\n"
+#~ " \\b borrar carácter anterior\n"
+#~ " \\c non escribir nada máis\n"
+#~ " \\f salto de páxina\n"
+#~ " \\n nova liña\n"
+#~ " \\r retorno de carro\n"
+#~ " \\t tabulación horizontal\n"
+#~ " \\v tabulación vertical\n"
+#~ " \\xNNN carácter co valor hexadecimal NNN (1 a 3 díxitos)\n"
+#~ "\n"
+#~ " %%%% un carácter %%\n"
+#~ " %%b ARGUMENTO é unha cadea con caracteres de escape `\\' "
+#~ "interpretados\n"
+#~ "\n"
+#~ "e tódalas especificacións de formato de C rematando cunha das letras\n"
+#~ "diouxXfeEgGcs, convertendo os ARGUMENTOs ó tipo correcto primeiro. "
+#~ "Manéxanse\n"
+#~ "as anchuras das variables.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print the full filename of the current working directory.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Visualiza-la conta de comprobación CRC e o número de bytes de cada "
+#~ "FICHEIRO.\n"
+#~ "\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Special characters:\n"
+#~ " * dsusp CHAR CHAR will send a terminal stop signal once input "
+#~ "flushed\n"
+#~ " eof CHAR CHAR will send an end of file (terminate the input)\n"
+#~ " eol CHAR CHAR will end the line\n"
+#~ " * eol2 CHAR alternate CHAR for ending the line\n"
+#~ " erase CHAR CHAR will erase the last character typed\n"
+#~ " intr CHAR CHAR will send an interrupt signal\n"
+#~ " kill CHAR CHAR will erase the current line\n"
+#~ " * lnext CHAR CHAR will enter the next character quoted\n"
+#~ " quit CHAR CHAR will send a quit signal\n"
+#~ " * rprnt CHAR CHAR will redraw the current line\n"
+#~ " start CHAR CHAR will restart the output after stopping it\n"
+#~ " stop CHAR CHAR will stop the output\n"
+#~ " susp CHAR CHAR will send a terminal stop signal\n"
+#~ " * swtch CHAR CHAR will switch to a different shell layer\n"
+#~ " * werase CHAR CHAR will erase the last word typed\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Caracteres especiais:\n"
+#~ "* dsusp CARAC CARAC enviará un sinal de para-lo terminal unha vez que "
+#~ "a\n"
+#~ " entrada sexa limpada\n"
+#~ " eof CARAC CARAC enviará un final de ficheiro (remata-la entrada)\n"
+#~ " eol CARAC CARAC enviará un final de liña\n"
+#~ "* eol2 CARAC CARAC alternativo para rematar unha liña\n"
+#~ " erase CARAC CARAC borrará o último carácter escrito\n"
+#~ " intr CARAC CARAC enviará un sinal de interrupción\n"
+#~ " kill CARAC CARAC borrará a liña actual\n"
+#~ "* lnext CARAC CARAC introducirá o seguinte carácter tal como é\n"
+#~ " quit CARAC CARAC enviará un sinal de saída\n"
+#~ "* rprnt CARAC CARAC redebuxará a liña actual\n"
+#~ " start CARAC CARAC reiniciará a saída despois de parala\n"
+#~ " stop CARAC CARAC parará a saída\n"
+#~ " susp CARAC CARAC enviará un sinal de parada do terminal\n"
+#~ "* swtch CARAC CARAC trocará a unha capa de shell distinta\n"
+#~ "* werase CARAC CARAC borrará a última palabra escrita\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Special settings:\n"
+#~ " N set the input and output speeds to N bauds\n"
+#~ " * cols N tell the kernel that the terminal has N columns\n"
+#~ " * columns N same as cols N\n"
+#~ " ispeed N set the input speed to N\n"
+#~ " * line N use line discipline N\n"
+#~ " min N with -icanon, set N characters minimum for a completed "
+#~ "read\n"
+#~ " ospeed N set the output speed to N\n"
+#~ " * rows N tell the kernel that the terminal has N rows\n"
+#~ " * size print the number of rows and columns according to the "
+#~ "kernel\n"
+#~ " speed print the terminal speed\n"
+#~ " time N with -icanon, set read timeout of N tenths of a second\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Parámetros especiais:\n"
+#~ " N establece-las velocidades de entrada e de saída a N "
+#~ "baudios\n"
+#~ "* cols N dicirlle ó núcleo que o terminal ten N columnas\n"
+#~ "* columns N o mesmo que cols N\n"
+#~ " ispeed N establece-la velocidade de entrada a N\n"
+#~ "* line N usa-la disciplina de liña N\n"
+#~ " min N con -icanon, establecer a N o número de caracteres mínimo "
+#~ "para\n"
+#~ " unha lectura completa\n"
+#~ " ospeed N establece-la velocidade de saída a N\n"
+#~ "* rows N dicirlle ó núcleo que o terminal ten N ringleiras\n"
+#~ "* size escribi-lo número de ringleiras e columnas segundo o "
+#~ "núcleo\n"
+#~ " speed escribi-la velocidade do terminal\n"
+#~ " time N con -icanon, establece-lo tempo de expiración de lectura, "
+#~ "en\n"
+#~ " N décimas de segundo\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Input settings:\n"
+#~ " [-]brkint breaks cause an interrupt signal\n"
+#~ " [-]icrnl translate carriage return to newline\n"
+#~ " [-]ignbrk ignore break characters\n"
+#~ " [-]igncr ignore carriage return\n"
+#~ " [-]ignpar ignore characters with parity errors\n"
+#~ " * [-]imaxbel beep and do not flush a full input buffer on a "
+#~ "character\n"
+#~ " [-]inlcr translate newline to carriage return\n"
+#~ " [-]inpck enable input parity checking\n"
+#~ " [-]istrip clear high (8th) bit of input characters\n"
+#~ " * [-]iuclc translate uppercase characters to lowercase\n"
+#~ " * [-]ixany let any character restart output, not only start "
+#~ "character\n"
+#~ " [-]ixoff enable sending of start/stop characters\n"
+#~ " [-]ixon enable XON/XOFF flow control\n"
+#~ " [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+#~ " [-]tandem same as [-]ixoff\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Parámetros da entrada:\n"
+#~ " [-]brkint o carácter `break' provoca un sinal de interrupción\n"
+#~ " [-]icrnl converter un retorno de carro a unha nova liña\n"
+#~ " [-]ignbrk ignora-los caracteres `break'\n"
+#~ " [-]igncr ignora-los retornos de carro\n"
+#~ " [-]ignpar ignora-los caracteres con erro de paridade\n"
+#~ "* [-]imaxbel se o buffer de entrada está cheo e chega un carácter, "
+#~ "non\n"
+#~ " limpalo e emitir un pitido\n"
+#~ " [-]inlcr converter unha nova liña a un retorno de carro\n"
+#~ " [-]inpck activa-la comprobación da paridade da entrada\n"
+#~ " [-]istrip limpa-lo bit alto (oitavo) dos caracteres de entrada\n"
+#~ "* [-]iuclc converte-los caracteres maiúsculos a minúsculos\n"
+#~ "* [-]ixany permitir que calquera carácter reinicie a saída, non só\n"
+#~ " o carácter de comezo\n"
+#~ " [-]ixoff activa-lo envío de caracteres de comezo/parada\n"
+#~ " [-]ixon activa-lo control de fluxo XON/XOFF\n"
+#~ " [-]parmrk marcar erros de paridade (cunha secuencia 255-0-"
+#~ "carácter)\n"
+#~ " [-]tandem o mesmo que [-]ixoff\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Local settings:\n"
+#~ " [-]crterase echo erase characters as backspace-space-backspace\n"
+#~ " * crtkill kill all line by obeying the echoprt and echoe settings\n"
+#~ " * -crtkill kill all line by obeying the echoctl and echok settings\n"
+#~ " * [-]ctlecho echo control characters in hat notation (`^c')\n"
+#~ " [-]echo echo input characters\n"
+#~ " * [-]echoctl same as [-]ctlecho\n"
+#~ " [-]echoe same as [-]crterase\n"
+#~ " [-]echok echo a newline after a kill character\n"
+#~ " * [-]echoke same as [-]crtkill\n"
+#~ " [-]echonl echo newline even if not echoing other characters\n"
+#~ " * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+#~ " [-]icanon enable erase, kill, werase, and rprnt special "
+#~ "characters\n"
+#~ " [-]iexten enable non-POSIX special characters\n"
+#~ " [-]isig enable interrupt, quit, and suspend special characters\n"
+#~ " [-]noflsh disable flushing after interrupt and quit special "
+#~ "characters\n"
+#~ " * [-]prterase same as [-]echoprt\n"
+#~ " * [-]tostop stop background jobs that try to write to the terminal\n"
+#~ " * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Parámetros locais:\n"
+#~ " [-]crterase escribi-los caracteres de suprimir coma borrar-espacio-"
+#~ "borrar\n"
+#~ "* crtkill eliminar toda a liña obedecendo ós parámetros echoprt e "
+#~ "echoe\n"
+#~ "* -crtkill elimitar toda a liña obedecendo ós parámetros echoctl e "
+#~ "echok\n"
+#~ "* [-]ctlecho escribi-los caracteres de control cunha notación en "
+#~ "sombreiro\n"
+#~ " (`^c')\n"
+#~ " [-]echo escribi-los caracteres da entrada\n"
+#~ "* [-]echoctl o mesmo que [-]ctlecho\n"
+#~ " [-]echoe o mesmo que [-]crterase\n"
+#~ " [-]echok escribir unha nova liña despois dun carácter de matar\n"
+#~ "* [-]echoke o mesmo que [-]crtkill\n"
+#~ " [-]echonl escribir unha nova liña mesmo se non se están a escribir\n"
+#~ " outros caracteres\n"
+#~ "* [-]echoprt escribi-los caracteres borrados para atrás, entre `\\' e "
+#~ "'/'\n"
+#~ " [-]icanon permiti-los caracteres especiais erase, kill, werase e "
+#~ "rprnt\n"
+#~ " [-]iexten permiti-los caracteres especiais non-POSIX\n"
+#~ " [-]isig permiti-los caracteres especiais interrupt, quit e "
+#~ "suspend\n"
+#~ " [-]noflsh non limpa-lo buffer despois dos caracteres especiais "
+#~ "interrupt\n"
+#~ " e quit\n"
+#~ "* [-]prterase o mesmo que [-]echoprt\n"
+#~ "* [-]tostop para-los traballos en background que tenten escribir ó "
+#~ "terminal\n"
+#~ "* [-]xcase con icanon, marca-los caracteres maiúsculos con `\\'\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Combination settings:\n"
+#~ " * [-]LCASE same as [-]lcase\n"
+#~ " cbreak same as -icanon\n"
+#~ " -cbreak same as icanon\n"
+#~ " cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+#~ " icanon, eof and eol characters to their default values\n"
+#~ " -cooked same as raw\n"
+#~ " crt same as echoe echoctl echoke\n"
+#~ " dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+#~ " kill ^u\n"
+#~ " * [-]decctlq same as [-]ixany\n"
+#~ " ek erase and kill characters to their default values\n"
+#~ " evenp same as parenb -parodd cs7\n"
+#~ " -evenp same as -parenb cs8\n"
+#~ " * [-]lcase same as xcase iuclc olcuc\n"
+#~ " litout same as -parenb -istrip -opost cs8\n"
+#~ " -litout same as parenb istrip opost cs7\n"
+#~ " nl same as -icrnl -onlcr\n"
+#~ " -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+#~ " oddp same as parenb parodd cs7\n"
+#~ " -oddp same as -parenb cs8\n"
+#~ " [-]parity same as [-]evenp\n"
+#~ " pass8 same as -parenb -istrip cs8\n"
+#~ " -pass8 same as parenb istrip cs7\n"
+#~ " raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+#~ " -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+#~ " -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+#~ " -raw same as cooked\n"
+#~ " sane same as cread -ignbrk brkint -inlcr -igncr icrnl\n"
+#~ " -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+#~ " -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+#~ " isig icanon iexten echo echoe echok -echonl -noflsh\n"
+#~ " -xcase -tostop -echoprt echoctl echoke, all special\n"
+#~ " characters to their default values.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Parámetros de combinacións:\n"
+#~ "* [-]LCASE o mesmo que [-]lcase\n"
+#~ " cbreak o mesmo que -icanon\n"
+#~ " -cbreak o mesmo que icanon\n"
+#~ " cooked o mesmo que brkint ignpar istrip icrnl ixon opost isig\n"
+#~ " icanon, caracteres eof e eol ós seus valores por defecto\n"
+#~ " -cooked o mesmo que raw\n"
+#~ " crt o mesmo que echoe echoctl echoke\n"
+#~ " dec o mesmo que echoe echoctl echoke -ixany intr ^c erase "
+#~ "0177\n"
+#~ " kill ^u\n"
+#~ "* [-]decctlq o mesmo que [-]ixany\n"
+#~ " ek caracteres erase e kill ós seus valores por defecto\n"
+#~ " evenp o mesmo que parenb -parodd cs7\n"
+#~ " -evenp o mesmo que -parenb cs8\n"
+#~ "* [-]lcase o mesmo que xcase iuclc olcuc\n"
+#~ " litout o mesmo que -parenb -istrip -opost cs8\n"
+#~ " -litout o mesmo que parenb istrip opost cs7\n"
+#~ " nl o mesmo que -icrnl -onlcr\n"
+#~ " -nl o mesmo que icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+#~ " oddp o mesmo que parenb parodd cs7\n"
+#~ " -oddp o mesmo que -parenb cs8\n"
+#~ " [-]parity o mesmo que [-]evenp\n"
+#~ " pass8 o mesmo que -parenb -istrip cs8\n"
+#~ " -pass8 o mesmo que parenb istrip cs7\n"
+#~ " raw o mesmo que -ignbrk -brkint -ignpar -parmrk -inpck\n"
+#~ " -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+#~ " -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+#~ " -raw o mesmo que cooked\n"
+#~ " sane o mesmo que cread -ignbrk brkint -inlcr -igncr icrnl\n"
+#~ " -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+#~ " -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+#~ " isig icanon iexten echo echoe echok -echonl -noflsh\n"
+#~ " -xcase -tostop -echoprt echoctl echoke, e tódolos\n"
+#~ " caracteres especiais ós seus valores por defecto.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode "
+#~ "numbers\n"
+#~ " FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+#~ " FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+#~ "\n"
+#~ " -b FILE FILE exists and is block special\n"
+#~ " -c FILE FILE exists and is character special\n"
+#~ " -d FILE FILE exists and is a directory\n"
+#~ " -e FILE FILE exists\n"
+#~ " -f FILE FILE exists and is a regular file\n"
+#~ " -g FILE FILE exists and is set-group-ID\n"
+#~ " -h FILE FILE exists and is a symbolic link (same as -L)\n"
+#~ " -G FILE FILE exists and is owned by the effective group ID\n"
+#~ " -k FILE FILE exists and has its sticky bit set\n"
+#~ " -L FILE FILE exists and is a symbolic link (same as -h)\n"
+#~ " -O FILE FILE exists and is owned by the effective user ID\n"
+#~ " -p FILE FILE exists and is a named pipe\n"
+#~ " -r FILE FILE exists and is readable\n"
+#~ " -s FILE FILE exists and has a size greater than zero\n"
+#~ " -S FILE FILE exists and is a socket\n"
+#~ " -t [FD] file descriptor FD (stdout by default) is opened on a "
+#~ "terminal\n"
+#~ " -u FILE FILE exists and its set-user-ID bit is set\n"
+#~ " -w FILE FILE exists and is writable\n"
+#~ " -x FILE FILE exists and is executable\n"
+#~ msgstr ""
+#~ "\n"
+#~ " FICHEIRO1 -ef FICHEIRO2 o FICHEIRO1 e o FICHEIRO2 teñen os mesmos "
+#~ "números\n"
+#~ " de dispositivo e de inodo\n"
+#~ " FICHEIRO1 -nt FICHEIRO2 o FICHEIRO1 é máis novo (data de "
+#~ "modificación)\n"
+#~ " que o FICHEIRO2\n"
+#~ " FICHEIRO1 -ot FICHEIRO2 o FICHEIRO1 é máis antigo que o FICHEIRO2\n"
+#~ "\n"
+#~ " -b FICHEIRO o FICHEIRO existe e é especial de bloque\n"
+#~ " -c FICHEIRO o FICHEIRO existe e é especial de carácter\n"
+#~ " -d FICHEIRO o FICHEIRO existe e é un directorio\n"
+#~ " -e FICHEIRO o FICHEIRO existe\n"
+#~ " -f FICHEIRO o FICHEIRO existe e é un ficheiro normal\n"
+#~ " -g FICHEIRO o FICHEIRO existe e ten o bit de establecer ID de grupo\n"
+#~ " -G FICHEIRO o FICHEIRO existe e o seu dono é o ID efectivo de grupo\n"
+#~ " -k FICHEIRO o FICHEIRO existe e ten o bit pegañento (sticky)\n"
+#~ " -L FICHEIRO o FICHEIRO existe e é unha ligazón simbólica\n"
+#~ " -O FICHEIRO o FICHEIRO existe e o seu dono é o ID efectivo de "
+#~ "usuario\n"
+#~ " -p FICHEIRO o FICHEIRO existe e é unha canalización nomeada (named "
+#~ "pipe)\n"
+#~ " -r FICHEIRO o FICHEIRO existe e é lexible\n"
+#~ " -s FICHEIRO o FICHEIRO existe e ten un tamaño maior que cero\n"
+#~ " -S FICHEIRO o FICHEIRO existe e é un socket\n"
+#~ " -t [DF] o descritor de FICHEIRO DF (saída estándar por defecto) "
+#~ "está\n"
+#~ " aberto nun terminal\n"
+#~ " -u FICHEIRO o FICHEIRO existe e ten o bit de establecer ID de "
+#~ "usuario\n"
+#~ " -w FICHEIRO o FICHEIRO existe e pódese escribir\n"
+#~ " -x FICHEIRO o FICHEIRO existe e é executable\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " -a, --all same as -b -d --login -p -r -t -T -u\n"
+#~ " -b, --boot time of last system boot\n"
+#~ " -d, --dead print dead processes\n"
+#~ " -H, --heading print line of column headings\n"
+#~ " -i, --idle add idle time as HOURS:MINUTES, . or old\n"
+#~ " (deprecated, use -u)\n"
+#~ " --login print system login processes\n"
+#~ " (equivalent to SUS -l)\n"
+#~ " -l, --lookup attempt to canonicalize hostnames via DNS\n"
+#~ " (-l is deprecated, use --lookup)\n"
+#~ " -m only hostname and user associated with stdin\n"
+#~ " -p, --process print active processes spawned by init\n"
+#~ " -q, --count all login names and number of users logged on\n"
+#~ " -r, --runlevel print current runlevel\n"
+#~ " -s, --short print only name, line, and time (default)\n"
+#~ " -t, --time print last system clock change\n"
+#~ " -T, -w, --mesg add user's message status as +, - or ?\n"
+#~ " -u, --users lists users logged in\n"
+#~ " --message same as -T\n"
+#~ " --writable same as -T\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "If FILE is not specified, use %s. %s as FILE is common.\n"
+#~ "If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -H, --heading escribir unha liña coas cabeceiras das columnas\n"
+#~ " -i, -u, --idle engadir o tempo de inactividade do usuario na forma\n"
+#~ " HORAS:MINUTOS, . ou antigo\n"
+#~ " -l, --lookup tentar canoniza-los nomes de máquinas a través de "
+#~ "DNS\n"
+#~ " -m só o nome da máquina e o usuario asociado coa "
+#~ "entrada\n"
+#~ " estándar\n"
+#~ " -q, --count tódolos nomes de entrada e número de usuarios "
+#~ "conectados\n"
+#~ " -s (ignorada)\n"
+#~ " -T, -w, --mesg engadi-lo estado de mensaxes do usuario como +, - "
+#~ "ou ?\n"
+#~ " --message o mesmo que -T\n"
+#~ " --writable o mesmo que -T\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosa-la información da versión e saír\n"
+#~ "\n"
+#~ "Se non se indica FICHEIRO, usarase %s. O normal como FICHEIRO\n"
+#~ "é %s.\n"
+#~ "Se se indican ARG1 e ARG2, asumirase -m: usualmente son `am i' ou `mom "
+#~ "likes'.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Repeatedly output a line with all specified STRING(s), or `y'.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Visualiza-la conta de comprobación CRC e o número de bytes de cada "
+#~ "FICHEIRO.\n"
+#~ "\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+
+#~ msgid "cannot get processor type"
+#~ msgstr "non se pode obte-lo tipo de procesador"
+
+#~ msgid "USER"
+#~ msgstr "USUARIO"
+
+#~ msgid "MESG "
+#~ msgstr "MENS "
+
+#~ msgid "LOGIN-TIME "
+#~ msgstr "HORA DE LOGIN"
+
+#~ msgid "FROM\n"
+#~ msgstr "DENDE\n"
+
+#~ msgid "virtual memory exhausted"
+#~ msgstr "memoria virtual esgotada"
+
+#~ msgid "<undef>"
+#~ msgstr "<sen definir>"
+
+#~ msgid ""
+#~ "Output pieces of FILE separated by PATTERN(s) to files `xx01', "
+#~ "`xx02', ...,\n"
+#~ "and output byte counts of each piece to standard output.\n"
+#~ "\n"
+#~ " -b, --suffix-format=FORMAT use sprintf FORMAT instead of %%d\n"
+#~ " -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+#~ " -k, --keep-files do not remove output files on errors\n"
+#~ " -n, --digits=DIGITS use specified number of digits instead of 2\n"
+#~ " -s, --quiet, --silent do not print counts of output file sizes\n"
+#~ " -z, --elide-empty-files remove empty output files\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Read standard input if FILE is -. Each PATTERN may be:\n"
+#~ "\n"
+#~ " INTEGER copy up to but not including specified line number\n"
+#~ " /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+#~ " %%REGEXP%%[OFFSET] skip to, but not including a matching line\n"
+#~ " {INTEGER} repeat the previous pattern specified number of "
+#~ "times\n"
+#~ " {*} repeat the previous pattern as many times as "
+#~ "possible\n"
+#~ "\n"
+#~ "A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+#~ msgstr ""
+#~ "Extraer anacos de FICHEIRO separados por PATRÓN(s) aos ficheiros `xx01',\n"
+#~ "`xx02', ..., e escribi-lo tamaño de cada anaco na saída estándar.\n"
+#~ "\n"
+#~ " -b, --suffix-format=FORMATO usa-lo FORMATO de sprintf na vez de %%d\n"
+#~ " -f, --prefix=PREFIXO usa-lo PREFIXO na vez de `xx'\n"
+#~ " -k, --keep-files non borra-los ficheiros de saida se hai "
+#~ "erros\n"
+#~ " -n, --digits=DIXITOS usa-lo número de díxitos indicado na vez de "
+#~ "2\n"
+#~ " -s, --quiet, --silent non visualiza-lo tamaño dos ficheiros de "
+#~ "saida\n"
+#~ " -z, --elide-empty-files borra-los ficheiros de saída baleiros\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+#~ "\n"
+#~ "Le-la entrada estándar se o FICHEIRO é -. Cada PATRÓN pode ser:\n"
+#~ "\n"
+#~ " ENTEIRO copiar ata, non incluíndoo, o número de liña "
+#~ "indicado\n"
+#~ " /REGEXP/[DESPRAZ] copiar ata, non incluíndoa, unha liña que coincida\n"
+#~ " %%REGEXP/[DESPRAZ] saltar ata, non incluíndoa, unha liña que coincida\n"
+#~ " {ENTEIRO} repeti-lo último patrón o número de veces que se "
+#~ "indica\n"
+#~ " {*} repeti-lo último patrón tantas veces como se poida\n"
+#~ "\n"
+#~ "Un DESPRAZamento de liña é un `+' ou `-' seguido dun enteiro positivo.\n"
+
+#~ msgid ""
+#~ "Print selected parts of lines from each FILE to standard output.\n"
+#~ "\n"
+#~ " -b, --bytes=LIST output only these bytes\n"
+#~ " -c, --characters=LIST output only these characters\n"
+#~ " -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+#~ " -f, --fields=LIST output only these fields\n"
+#~ " -n (ignored)\n"
+#~ " -s, --only-delimited do not print lines not containing delimiters\n"
+#~ " --output-delimiter=STRING use STRING as the output delimiter\n"
+#~ " the default is to use the input delimiter\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+#~ "range, or many ranges separated by commas. Each range is one of:\n"
+#~ "\n"
+#~ " N N'th byte, character or field, counted from 1\n"
+#~ " N- from N'th byte, character or field, to end of line\n"
+#~ " N-M from N'th to M'th (included) byte, character or field\n"
+#~ " -M from first to M'th (included) byte, character or field\n"
+#~ "\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ msgstr ""
+#~ "Imprimir partes seleccionadas de liñas de cada FICHEIRO na saída "
+#~ "estándar.\n"
+#~ "\n"
+#~ " -b, --bytes=LISTA amosar só eses bytes\n"
+#~ " -c, --characters=LISTA amosar só eses caracteres\n"
+#~ " -d, --delimiter=DELIM usar DELIM en vez de TAB como delimitador de "
+#~ "campo\n"
+#~ " -f, --fields=LISTA amosar só eses campos\n"
+#~ " -n (ignorado)\n"
+#~ " -s, --only-delimited non amosar liñas que non conteñan "
+#~ "delimitadores\n"
+#~ " --output-delimiter=CADEA usar CADEA coma delimitador de saída\n"
+#~ " por defecto emprégase o delimitador de "
+#~ "entrada\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+#~ "\n"
+#~ "Use unha, e só unha das opcións -b, -c ou -f. Cada LISTA componse dun\n"
+#~ "rango, ou varios rangos separados por comas. Cada rango é un de:\n"
+#~ "\n"
+#~ " N N-ésimo byte, carácter ou campo, contado a partir de 1\n"
+#~ " N- do N-ésimo byte, carácter ou campo, á fin da liña\n"
+#~ " N-M do N-ésimo ao M-ésimo (inclusive) byte, carácter ou campo\n"
+#~ " -M do primeiro ao M-ésimo (inclusive) byte, carácter ou campo\n"
+#~ "\n"
+#~ "Sen un FICHEIRO, ou cando o FICHEIRO é -, lese da entrada estándar.\n"
+
+#~ msgid ""
+#~ "Convert tabs in each FILE to spaces, writing to standard output.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ " -i, --initial do not convert TABs after non whitespace\n"
+#~ " -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+#~ " -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Instead of -t NUMBER or -t LIST, -NUMBER or -LIST may be used.\n"
+#~ msgstr ""
+#~ "Converte-las tabulacións en cada FICHEIRO en espacios, escribindo na "
+#~ "saída\n"
+#~ "estándar. Sen un FICHEIRO, ou cando o FICHEIRO é -, le-la entrada "
+#~ "estándar.\n"
+#~ "\n"
+#~ " -i, --initial converter só as tabulacións do principio da liña\n"
+#~ " -t, --tabs=NÚMERO usar tabulacións de NÚMERO caracteres, e non 8\n"
+#~ " -t, --tabs=LISTA usar unha lista de posicións separadas por comas\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+#~ "\n"
+#~ "Na vez de -t NÚMERO ou -t LISTA, pódense usar -NÚMERO ou -LISTA.\n"
+
+#~ msgid ""
+#~ "Reformat each paragraph in the FILE(s), writing to standard output.\n"
+#~ "If no FILE or if FILE is `-', read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -c, --crown-margin preserve indentation of first two lines\n"
+#~ " -p, --prefix=STRING combine only lines having STRING as prefix\n"
+#~ " -s, --split-only split long lines, but do not refill\n"
+#~ " -t, --tagged-paragraph indentation of first line different from "
+#~ "second\n"
+#~ " -u, --uniform-spacing one space between words, two after sentences\n"
+#~ " -w, --width=NUMBER maximum line width (default of 75 columns)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "In -wNUMBER, the letter `w' may be omitted.\n"
+#~ msgstr ""
+#~ "Reformatar cada parágrafo no(s) FICHEIRO(s), escribindo na saída "
+#~ "estándar.\n"
+#~ "Se non se indica un FICHEIRO, ou se o FICHEIRO é `-', ler na entrada "
+#~ "estándar.\n"
+#~ "\n"
+#~ "Os argumentos obligatorios nas opcións longas sono tamén nas curtas.\n"
+#~ " -c, --crown-margin conserva-la sangría das primeiras dúas liñas.\n"
+#~ " -p, --prefix=CADEA combinar só as liñas que teñan a CADEA de "
+#~ "prefixo\n"
+#~ " -s, --split-only parti-las liñas longas, pero non reencher\n"
+#~ " -t, --tagged-paragraph a sangría da primeira liña é distinta da da "
+#~ "segunda\n"
+#~ " -u, --uniform-spacing un espacio entre palabras, e dous entre "
+#~ "oracións\n"
+#~ " -w, --width=NÚMERO ancho máximo da liña (75 columnas se non se "
+#~ "indica)\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+#~ "\n"
+#~ "En -wNÚMERO, a letra `w' pode ser omitida.\n"
+
+#~ msgid ""
+#~ "Wrap input lines in each FILE (standard input by default), writing to\n"
+#~ "standard output.\n"
+#~ "\n"
+#~ " -b, --bytes count bytes rather than columns\n"
+#~ " -s, --spaces break at spaces\n"
+#~ " -w, --width=WIDTH use WIDTH columns instead of 80\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Parti-las liñas de entrada de cada FICHEIRO (a entrada estándar se non "
+#~ "se\n"
+#~ "indican), escribindo na saída estándar.\n"
+#~ "\n"
+#~ " -b, --bytes contar bytes na vez de columnas\n"
+#~ " -s, --spaces parti-las liñas nos espacios en branco\n"
+#~ " -w, --width=ANCHO usar ANCHO columnas na vez de 80\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+
+#~ msgid ""
+#~ "Print first 10 lines of each FILE to standard output.\n"
+#~ "With more than one FILE, precede each with a header giving the file "
+#~ "name.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ " -c, --bytes=SIZE print first SIZE bytes\n"
+#~ " -n, --lines=NUMBER print first NUMBER lines instead of first 10\n"
+#~ " -q, --quiet, --silent never print headers giving file names\n"
+#~ " -v, --verbose always print headers giving file names\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+#~ "If -VALUE is used as first OPTION, read -c VALUE when one of\n"
+#~ "multipliers bkm follows concatenated, else read -n VALUE.\n"
+#~ msgstr ""
+#~ "Visualiza-las primeiras 10 liñas de cada FICHEIRO na saída estándar.\n"
+#~ "Con máis dun FICHEIRO, precede cada un cunha cabeceira que indica o seu "
+#~ "nome.\n"
+#~ "Se non se indica un FICHEIRO ou cando o FICHEIRO é -, ler da entrada "
+#~ "estándar.\n"
+#~ "\n"
+#~ " -c, --bytes=TAMAÑO visualiza-los primeiros TAMAÑO bytes\n"
+#~ " -n, --lines=NÚMERO visualiza-las primeiras NÚMERO liñas na vez de "
+#~ "10\n"
+#~ " -q, --quiet, --silent non visualiza-las cabeceiras cos nomes de "
+#~ "ficheiro\n"
+#~ " -v, --verbose visualiza-las cabeceiras sempre\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+#~ "\n"
+#~ "TAMAÑO pode ter un sufixo multiplicador: b para 512, k para 1K, m para "
+#~ "1M.\n"
+#~ "Se se usa -VALOR como primeira OPCIÓN, ler -c VALOR cando un dos\n"
+#~ "multiplicadores bkm segue inmediatamente ó VALOR; noutro caso ler -n "
+#~ "VALOR.\n"
+
+#~ msgid ""
+#~ "For each pair of input lines with identical join fields, write a line to\n"
+#~ "standard output. The default join field is the first, delimited\n"
+#~ "by whitespace. When FILE1 or FILE2 (not both) is -, read standard "
+#~ "input.\n"
+#~ "\n"
+#~ " -a SIDE print unpairable lines coming from file SIDE\n"
+#~ " -e EMPTY replace missing input fields with EMPTY\n"
+#~ " -i, --ignore-case ignore differences in case when comparing fields\n"
+#~ " -j FIELD (obsolescent) equivalent to `-1 FIELD -2 FIELD'\n"
+#~ " -j1 FIELD (obsolescent) equivalent to `-1 FIELD'\n"
+#~ " -j2 FIELD (obsolescent) equivalent to `-2 FIELD'\n"
+#~ " -o FORMAT obey FORMAT while constructing output line\n"
+#~ " -t CHAR use CHAR as input and output field separator\n"
+#~ " -v SIDE like -a SIDE, but suppress joined output lines\n"
+#~ " -1 FIELD join on this FIELD of file 1\n"
+#~ " -2 FIELD join on this FIELD of file 2\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+#~ "else fields are separated by CHAR. Any FIELD is a field number counted\n"
+#~ "from 1. FORMAT is one or more comma or blank separated specifications,\n"
+#~ "each being `SIDE.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+#~ "the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+#~ "separated by CHAR.\n"
+#~ msgstr ""
+#~ "Para cada parella de liñas de entrada con campos de join idénticos, "
+#~ "escribir\n"
+#~ "unha liña na saída estándar. O campo de join é o primeiro, delimitado "
+#~ "por\n"
+#~ "espacios en branco, se non se indica outro. Cando o FICHEIRO1 ou o "
+#~ "FICHEIRO2\n"
+#~ "(non ámbolos dous á vez) é -, lese da entrada estándar.\n"
+#~ "\n"
+#~ " -a LADO visualiza-las liñas non emparellables do ficheiro "
+#~ "LADO\n"
+#~ " -e BALEIRO cambia-los campos de entrada non atopados por "
+#~ "BALEIRO\n"
+#~ " -i, --ignore-case ignora-las maiúsculas/minúsculas ao compara-los "
+#~ "campos\n"
+#~ " -j CAMPO (obsoleto) equivalente a `-1 CAMPO -2 CAMPO'\n"
+#~ " -j1 CAMPO (obsoleto) equivalente a `-1 CAMPO'\n"
+#~ " -j2 CAMPO (obsoleto) equivalente a `-2 CAMPO'\n"
+#~ " -o FORMATO aplica-lo FORMATO ao construi-la liña resultante\n"
+#~ " -t CARÁCTER usa-lo CARÁCTER como separador de campos\n"
+#~ " -v LADO coma -a LADO, pero eliminando as liñas de saída\n"
+#~ " -1 CAMPO unir po-lo CAMPO indicado do ficheiro 1\n"
+#~ " -2 CAMPO unir po-lo CAMPO indicado do ficheiro 2\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+#~ "\n"
+#~ "A menos que se indique -t CARÁCTER, os espacios en branco iniciais "
+#~ "separan\n"
+#~ "campos e son ignorados; do outro xeito, os campos son separados por "
+#~ "CARÁCTER.\n"
+#~ "Un CAMPO é un número de campo contando a partir de 1. FORMATO é unha ou "
+#~ "máis\n"
+#~ "especificacións separadas por comas ou espacios en branco, cada unha da "
+#~ "forma\n"
+#~ "`LADO.CAMPO' ou `0'. O FORMATO que se aplica se non se indica ningún\n"
+#~ "visualiza o campo de join, os campos restantes de FICHEIRO1 e os campos\n"
+#~ "restantes de FICHEIRO2, todo separado por CHAR.\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION] [FILE]...\n"
+#~ " or: %s [OPTION] --check [FILE]\n"
+#~ "Print or check MD5 checksums.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check MD5 sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ "The following two options are useful only when verifying checksums:\n"
+#~ " --status don't output anything, status code shows "
+#~ "success\n"
+#~ " -w, --warn warn about improperly formated MD5 checksum "
+#~ "lines\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "The sums are computed as described in RFC 1321. When checking, the "
+#~ "input\n"
+#~ "should be a former output of this program. The default mode is to print\n"
+#~ "a line with checksum, a character indicating type (`*' for binary, ` ' "
+#~ "for\n"
+#~ "text), and name for each FILE.\n"
+#~ msgstr ""
+#~ "Uso: %s [OPCIÓN] [FICHEIRO]...\n"
+#~ " ou: %s [OPCIÓN] --check [FICHEIRO]\n"
+#~ "Visualizar ou comproba-las sumas de comprobación MD5.\n"
+#~ "Se non se indica un FICHEIRO, ou se o FICHEIRO é -, lese da entrada "
+#~ "estándar.\n"
+#~ "\n"
+#~ " -b, --binary le-los ficheiros en modo binario (por defecto "
+#~ "en DOS/Windows)\n"
+#~ " -c, --check comproba-las sumas MD5 contra a lista dada\n"
+#~ " -t, --text le-los ficheiros en modo texto (por defecto)\n"
+#~ "\n"
+#~ "As seguintes dúas opcións son útiles só cando se comproban as sumas:\n"
+#~ " --status non visualizar, o código de estado informa do "
+#~ "éxito\n"
+#~ " -w, --warn avisar de liñas de suma MD5 mal formatadas\n"
+#~ "\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+#~ "\n"
+#~ "As sumas calcúlanse como se describe no RFC 1321. Cando se comproban, a\n"
+#~ "entrada debería ser unha saída anterior deste programa. O modo por "
+#~ "defecto\n"
+#~ "é visualizar unha liña con suma de comprobación, un carácter que indica "
+#~ "o\n"
+#~ "tipo (`*' para binario, ` ' para texto), e o nome de cada FICHEIRO.\n"
+
+#~ msgid ""
+#~ "Write each FILE to standard output, with line numbers added.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ " -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+#~ " -d, --section-delimiter=CC use CC for separating logical pages\n"
+#~ " -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+#~ " -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+#~ " -i, --page-increment=NUMBER line number increment at each line\n"
+#~ " -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+#~ "one\n"
+#~ " -n, --number-format=FORMAT insert line numbers according to "
+#~ "FORMAT\n"
+#~ " -p, --no-renumber do not reset line numbers at logical "
+#~ "pages\n"
+#~ " -s, --number-separator=STRING add STRING after (possible) line "
+#~ "number\n"
+#~ " -v, --first-page=NUMBER first line number on each logical page\n"
+#~ " -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+#~ "two delimiter characters for separating logical pages, a missing\n"
+#~ "second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+#~ "\n"
+#~ " a number all lines\n"
+#~ " t number only nonempty lines\n"
+#~ " n number no lines\n"
+#~ " pREGEXP number only lines that contain a match for REGEXP\n"
+#~ "\n"
+#~ "FORMAT is one of:\n"
+#~ "\n"
+#~ " ln left justified, no leading zeros\n"
+#~ " rn right justified, no leading zeros\n"
+#~ " rz right justified, leading zeros\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Escribir cada FICHEIRO na saída estándar, con números de liña engadidos.\n"
+#~ "Se non se indica un FICHEIRO, ou se o FICHEIRO é -, ler da entrada "
+#~ "estándar.\n"
+#~ "\n"
+#~ " -b, --body-numbering=ESTILO usa-lo ESTILO para numera-las liñas do "
+#~ "corpo\n"
+#~ " -d, --section-delimiter=CC usar CC para separa-las páxinas "
+#~ "lóxicas\n"
+#~ " -f, --footer-numbering=ESTILO usa-lo ESTILO para numera-las liñas do "
+#~ "pé\n"
+#~ " -h, --header-numbering=ESTILO usa-lo ESTILO para numera-las liñas da\n"
+#~ " cabeceira\n"
+#~ " -i, --page-increment=NÚMERO incremento do número de liña\n"
+#~ " -l, --join-blank-lines=NÚMERO cada grupo de NÚMERO liñas baleiras "
+#~ "cóntase\n"
+#~ " como unha soa\n"
+#~ " -n, --number-format=FORMATO inserta-los números de liña polo "
+#~ "FORMATO\n"
+#~ " -p, --no-renumber non reinicia-los números de liña coa "
+#~ "páxina\n"
+#~ " -s, --number-separator=CADEA engadi-la CADEA tras cada número de "
+#~ "liña\n"
+#~ " -v, --first-page=NÚMERO primeiro número de liña de cada páxina\n"
+#~ " -w, --number-width=NÚMERO usar NÚMERO columnas para os números de "
+#~ "liña\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e "
+#~ "saír\n"
+#~ "\n"
+#~ "Se non se indica, selecciónase -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn.\n"
+#~ "CC son dous caracteres delimitadores para separar páxinas lóxicas; se "
+#~ "non\n"
+#~ "hai segundo carácter suponse :. Teclee \\\\ para obter \\. O ESTILO é "
+#~ "un de:\n"
+#~ "\n"
+#~ " a numerar tódalas liñas\n"
+#~ " t numerar só as liñas non baleiras\n"
+#~ " n non numera-las liñas\n"
+#~ " pREGEXP numerar só as liñas que coinciden con REGEXP\n"
+#~ "\n"
+#~ "O FORMATO é un de:\n"
+#~ "\n"
+#~ " ln xustificar á esquerda, sen ceros iniciais\n"
+#~ " rn xustificar á dereita, sen ceros iniciais\n"
+#~ " rz xustificar á dereita, con ceros iniciais\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Write an unambiguous representation, octal bytes by default, of FILE\n"
+#~ "to standard output. With no FILE, or when FILE is -, read standard "
+#~ "input.\n"
+#~ "\n"
+#~ " -A, --address-radix=RADIX decide how file offsets are printed\n"
+#~ " -j, --skip-bytes=BYTES skip BYTES input bytes first on each file\n"
+#~ " -N, --read-bytes=BYTES limit dump to BYTES input bytes per file\n"
+#~ " -s, --strings[=BYTES] output strings of at least BYTES graphic "
+#~ "chars\n"
+#~ " -t, --format=TYPE select output format or formats\n"
+#~ " -v, --output-duplicates do not use * to mark line suppression\n"
+#~ " -w, --width[=BYTES] output BYTES bytes per output line\n"
+#~ " --traditional accept arguments in pre-POSIX form\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Pre-POSIX format specifications may be intermixed, they accumulate:\n"
+#~ " -a same as -t a, select named characters\n"
+#~ " -b same as -t oC, select octal bytes\n"
+#~ " -c same as -t c, select ASCII characters or backslash escapes\n"
+#~ " -d same as -t u2, select unsigned decimal shorts\n"
+#~ " -f same as -t fF, select floats\n"
+#~ " -h same as -t x2, select hexadecimal shorts\n"
+#~ " -i same as -t d2, select decimal shorts\n"
+#~ " -l same as -t d4, select decimal longs\n"
+#~ " -o same as -t o2, select octal shorts\n"
+#~ " -x same as -t x2, select hexadecimal shorts\n"
+#~ msgstr ""
+#~ "Escribir unha representación non ambigua, con bytes octais se non se "
+#~ "indica,\n"
+#~ "do FICHEIRO na saída estándar. Sen un FICHEIRO, ou se o FICHEIRO é -, "
+#~ "ler da\n"
+#~ "entrada estándar.\n"
+#~ "\n"
+#~ " -A, --address-radix=BASE decidir cómo se visualizan os "
+#~ "desprazamentos\n"
+#~ " -j, --skip-bytes=BYTES saltarse BYTES bytes de entrada en cada "
+#~ "ficheiro\n"
+#~ " -N, --read-bytes=BYTES limita-lo volcado a BYTES bytes por "
+#~ "ficheiro\n"
+#~ " -s, --strings[=BYTES] visualizar cadeas de alomenos BYTES "
+#~ "caracteres\n"
+#~ " gráficos\n"
+#~ " -t, --format=TIPO selecciona-lo formato ou formatos de saída\n"
+#~ " -v, --output-duplicates non usar * para marca-la eliminación de "
+#~ "liñas\n"
+#~ " -w, --width[=BYTES] visualizar BYTES bytes por liña de saída\n"
+#~ " --traditional aceptar argumentos en formato pre-POSIX\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+#~ "\n"
+#~ "Pódense mestura-las especificacións de formato pre-POSIX, e son "
+#~ "acumulativas:\n"
+#~ " -a igual que -t a, selecciona-los caracteres nomeados\n"
+#~ " -b igual que -t oC, seleccionar bytes octais\n"
+#~ " -c igual que -t c, seleccionar caracteres ASCII ou secuencias de "
+#~ "escape\n"
+#~ " -d igual que -t u2, seleccionar enteiros curtos decimais sen signo\n"
+#~ " -f igual que -t fF, seleccionar números en coma flotante\n"
+#~ " -h igual que -t x2, seleccionar enteiros curtos hexadecimais\n"
+#~ " -i igual que -t d2, seleccionar enteiros curtos decimais\n"
+#~ " -l igual que -t d4, seleccionar enteiros longos decimais\n"
+#~ " -o igual que -t o2, seleccionar enteiros curtos octais\n"
+#~ " -x igual que -t x2, seleccionar enteiros curtos hexadecimais\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "For older syntax (second call format), OFFSET means -j OFFSET. LABEL\n"
+#~ "is the pseudo-address at first byte printed, incremented when dump is\n"
+#~ "progressing. For OFFSET and LABEL, a 0x or 0X prefix indicates\n"
+#~ "hexadecimal, suffixes maybe . for octal and b multiply by 512.\n"
+#~ "\n"
+#~ "TYPE is made up of one or more of these specifications:\n"
+#~ "\n"
+#~ " a named character\n"
+#~ " c ASCII character or backslash escape\n"
+#~ " d[SIZE] signed decimal, SIZE bytes per integer\n"
+#~ " f[SIZE] floating point, SIZE bytes per integer\n"
+#~ " o[SIZE] octal, SIZE bytes per integer\n"
+#~ " u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+#~ " x[SIZE] hexadecimal, SIZE bytes per integer\n"
+#~ "\n"
+#~ "SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+#~ "sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+#~ "sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+#~ "for sizeof(double) or L for sizeof(long double).\n"
+#~ "\n"
+#~ "RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+#~ "BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+#~ "with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix "
+#~ "to\n"
+#~ "any type adds a display of printable characters to the end of each line\n"
+#~ "of output. -s without a number implies 3. -w without a number implies "
+#~ "32.\n"
+#~ "By default, od uses -A o -t d2 -w 16.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Para a sintaxe antiga (segundo formato de chamada), DESPRAZAMENTO quere "
+#~ "dicir\n"
+#~ "-j DESPRAZAMENTO. ETIQUETA é a pseudo-dirección do primeiro byte "
+#~ "visualizado,\n"
+#~ "que se incrementa durante o volcado. Para DESPRAZAMENTO e ETIQUETA, un\n"
+#~ "prefixo 0x ou 0X indica hexadecimal; os sufixos poden ser . para octal e\n"
+#~ "b para multiplicar por 512.\n"
+#~ "\n"
+#~ "TIPO componse dunha ou máis destas especificacións:\n"
+#~ "\n"
+#~ " a carácter nomeado\n"
+#~ " c carácter ASCII ou secuencia de escape\n"
+#~ " d[TAMAÑO] decimal con signo, TAMAÑO bytes por enteiro\n"
+#~ " f[TAMAÑO] punto flotante, TAMAÑO bytes por enteiro\n"
+#~ " o[TAMAÑO] octal, TAMAÑO bytes por enteiro\n"
+#~ " u[TAMAÑO] decimal sen signo, TAMAÑO bytes por enteiro\n"
+#~ " x[TAMAÑO] hexadecimal, TAMAÑO bytes por enteiro\n"
+#~ "\n"
+#~ "TAMAÑO é un número. Para o TIPO en doux, TAMAÑO pode tamén ser C para\n"
+#~ "sizeof(char), S para sizeof(short), I para sizeof(int) ou L para\n"
+#~ "sizeof(long). Se TIPO é f, TAMAÑO tamén pode ser F para sizeof(float), D\n"
+#~ "para sizeof(double) ou L para sizeof(long double).\n"
+#~ "\n"
+#~ "BASE é d para decimal, o para octal, x para hexadecimal ou n para "
+#~ "ningunha.\n"
+#~ "BYTES é hexadecimal se leva un prefixo 0x ou 0X, multiplícase por 512 se\n"
+#~ "leva un sufixo b, por 1024 cun k e por 1048576 cun m. Engadir un sufixo "
+#~ "z\n"
+#~ "a calqueira tipo engade unha mostra de caracteres imprimibles á fin de "
+#~ "cada\n"
+#~ "liña de saída. -s sen un número implica 3. -w sen un número implica "
+#~ "32.\n"
+#~ "Se non se indica nada, od usa -A o -t d2 -w 16.\n"
+
+#~ msgid ""
+#~ "specified number of bytes `%s' is larger than the maximum\n"
+#~ "representable value of type `long'"
+#~ msgstr ""
+#~ "o número de bytes indicado `%s' é maior có valor máximo\n"
+#~ "representable de tipo `long'"
+
+#~ msgid ""
+#~ "Write lines consisting of the sequentially corresponding lines from\n"
+#~ "each FILE, separated by TABs, to standard output.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ " -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+#~ " -s, --serial paste one file at a time instead of in "
+#~ "parallel\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Escribir liñas consistentes nas liñas que corresponden secuencialmente "
+#~ "en\n"
+#~ "cada FICHEIRO, separadas por tabulacións, na saída estándar.\n"
+#~ "Se non se indica un FICHEIRO, ou se o FICHEIRO é -, lese da entrada "
+#~ "estándar.\n"
+#~ "\n"
+#~ " -d, --delimiters=LISTA usa-los caracteres da LISTA na vez de "
+#~ "tabulacións\n"
+#~ " -s, --serial pegar un ficheiro de cada vez na vez de en "
+#~ "paralelo\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+
+#~ msgid "%s%*s%s%*sPage"
+#~ msgstr "%s%*s%s%*sPáxina"
+
+#~ msgid ""
+#~ "Paginate or columnate FILE(s) for printing.\n"
+#~ "\n"
+#~ " +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+#~ " begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+#~ " -COLUMN, --columns=COLUMN\n"
+#~ " produce COLUMN-column output and print columns down,\n"
+#~ " unless -a is used. Balance number of lines in the\n"
+#~ " columns on each page.\n"
+#~ " -a, --across print columns across rather than down, used together\n"
+#~ " with -COLUMN\n"
+#~ " -c, --show-control-chars\n"
+#~ " use hat notation (^G) and octal backslash notation\n"
+#~ " -d, --double-space\n"
+#~ " double space the output\n"
+#~ " -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+#~ " expand input CHARs (TABs) to tab WIDTH (8)\n"
+#~ " -F, -f, --form-feed\n"
+#~ " use form feeds instead of newlines to separate pages\n"
+#~ " (by a 3-line page header with -F or a 5-line header\n"
+#~ " and trailer without -F)\n"
+#~ msgstr ""
+#~ "Paxinar ou encolumna-lo(s) FICHEIRO(s) para imprimir.\n"
+#~ "\n"
+#~ " +PRIMEIRA_PÁXINA[:ÚLTIMA_PÁXINA]\n"
+#~ " comezar [deter] a impresión coa PRIMEIRA_[ÚLTIMA_]"
+#~ "PÁXINA\n"
+#~ " -COLUMNAS, --columnas=COLUMNAS\n"
+#~ " producir unha saida de COLUMNAS columnas e imprimir "
+#~ "por\n"
+#~ " columnas, agás se se usa a opción -a. Iguala-lo "
+#~ "número\n"
+#~ " de liñas nas columnas de cada páxina.\n"
+#~ " -a, --across imprimi-las columnas a través e non cara a abaixo, "
+#~ "úsase\n"
+#~ " á vez que -COLUMNAS\n"
+#~ " -c, --show-control-chars\n"
+#~ " usa-las notacións de circunflexo (^G) e barra octal\n"
+#~ " -d, --double-space\n"
+#~ " producir a saída a dobre espacio\n"
+#~ " -e[CAR[ANCHO]], --expand-tabs[=CAR[ANCHO]]\n"
+#~ " expandi-los CARacteres de entrada (TABs) ao ANCHO "
+#~ "(8)\n"
+#~ " -F, -f, --form-feed\n"
+#~ " usar saltos de páxina na vez de saltos de liña para\n"
+#~ " separar páxinas (por unha cabeceira de páxina de 3 "
+#~ "liñas\n"
+#~ " con -f ou unha cabeceira e un pé de 5 liñas sen -f)\n"
+
+#~ msgid ""
+#~ " -h HEADER, --header=HEADER\n"
+#~ " use a centered HEADER instead of filename in page "
+#~ "header,\n"
+#~ " with long headers left-hand-side truncation may "
+#~ "occur,\n"
+#~ " -h \"\" prints a blank line, don't use -h\"\"\n"
+#~ " -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+#~ " replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+#~ " -J, --join-lines merge full lines, turns off -W line truncation, no "
+#~ "column\n"
+#~ " alignment, -S[STRING] sets separators\n"
+#~ " -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+#~ " set the page length to PAGE_LENGTH (66) lines\n"
+#~ " (default number of lines of text 56, and with -F 63)\n"
+#~ " -m, --merge print all files in parallel, one in each column,\n"
+#~ " truncate lines, but join lines of full length with -"
+#~ "J\n"
+#~ " -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+#~ " number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+#~ " default counting starts with 1st line of input file\n"
+#~ " -N NUMBER, --first-line-number=NUMBER\n"
+#~ " start counting with NUMBER at 1st line of first\n"
+#~ " page printed (see +FIRST_PAGE)\n"
+#~ " -o MARGIN, --indent=MARGIN\n"
+#~ " offset each line with MARGIN (zero) spaces, do not\n"
+#~ " affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+#~ " -r, --no-file-warnings\n"
+#~ " omit warning when a file cannot be opened\n"
+#~ msgstr ""
+#~ " -h CABECEIRA, --header=CABECEIRA\n"
+#~ " usar unha CABECEIRA centrada na vez do nome do "
+#~ "ficheiro.\n"
+#~ " Con cabeceiras longas, pode haber truncamento á "
+#~ "esquerda\n"
+#~ " -h \"\" imprime unha liña en branco. Non use -h\"\"\n"
+#~ " -i[CAR[ANCHO]], --output-tabs[=CAR[ANCHO]]\n"
+#~ " cambia-los espacios por CARacteres (TABs) de ANCHO "
+#~ "(8)\n"
+#~ " -J, --join-lines mesturar liñas completas, desactiva -W, sen "
+#~ "aliñamento\n"
+#~ " de columnas, -S[CADEA] pon separadores\n"
+#~ " -l LONXITUDE, --length=LONXITUDE\n"
+#~ " establece-la lonxitude da páxina a LONXITUDE (66) "
+#~ "liñas\n"
+#~ " (se non se indica nada, 56 liñas, e con -F 63)\n"
+#~ " -m, --merge imprimir tódolos ficheiros en paralelo, un en cada\n"
+#~ " columna, trunca-las liñas, pero uni-las liñas de\n"
+#~ " lonxitude completa con -J\n"
+#~ " -n[SEP[CIFRAS]], --number-lines[=SEP[CIFRAS]]\n"
+#~ " numera-las liñas, empregar CIFRAS (5) cifras, e logo "
+#~ "o\n"
+#~ " SEParador (TAB), a conta comeza por defecto coa "
+#~ "primeira\n"
+#~ " liña do ficheiro de entrada\n"
+#~ " -N NÚMERO, --first-line-number=NÚMERO\n"
+#~ " comezar a contar polo NÚMERO na primeira liña da "
+#~ "primeira\n"
+#~ " páxina imprimida (vexa +PRIMEIRA_PÁXINA)\n"
+#~ " -o MARXE, --indent=MARXE\n"
+#~ " desprazar cada liña MARXE (cero) espacios, non "
+#~ "afectar\n"
+#~ " a -w ou -W, a MARXE engádese ao ANCHO_PAXINA\n"
+#~ " -r, --no-file-warnings\n"
+#~ " omiti-los avisos cando non se pode abrir un ficheiro\n"
+
+#~ msgid ""
+#~ " -s[CHAR],--separator[=CHAR]\n"
+#~ " separate columns by a single character, default for "
+#~ "CHAR\n"
+#~ " is the <TAB> character without -w and 'no char' with -"
+#~ "w\n"
+#~ " -s[CHAR] turns off line truncation of all 3 column\n"
+#~ " options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+#~ " -S[STRING], --sep-string[=STRING]\n"
+#~ " separate columns by an optional STRING, don't use\n"
+#~ " -S \"STRING\", -S only: No separator used (same as -S"
+#~ "\"\"),\n"
+#~ " without -S: Default separator <TAB> with -J and "
+#~ "<space>\n"
+#~ " otherwise (same as -S\" \"), no effect on column "
+#~ "options\n"
+#~ " -t, --omit-header omit page headers and trailers\n"
+#~ " -T, --omit-pagination\n"
+#~ " omit page headers and trailers, eliminate any "
+#~ "pagination\n"
+#~ " by form feeds set in input files\n"
+#~ " -v, --show-nonprinting\n"
+#~ " use octal backslash notation\n"
+#~ " -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+#~ " set page width to PAGE_WIDTH (72) characters for\n"
+#~ " multiple text-column output only, -s[char] turns off "
+#~ "(72)\n"
+#~ " -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+#~ " set page width to PAGE_WIDTH (72) characters always,\n"
+#~ " truncate lines, except -J option is set, no "
+#~ "interference\n"
+#~ " with -S or -s\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+#~ "FILE is -, read standard input.\n"
+#~ msgstr ""
+#~ " -s[CAR], --separator[=CAR]\n"
+#~ " separa-las columnas cun só CARácter, o CARácter por\n"
+#~ " defecto é o carácter <TAB> sen -w, e ningún con -w\n"
+#~ " -s[CAR] desactiva o truncamento das tres opcións de\n"
+#~ " columnas (-COLUMNAS|-a -COLUMNAS|-m) agás se se "
+#~ "indica -w\n"
+#~ " -S[CADEA], --sep-string[=CADEA]\n"
+#~ " separa-las columnas cunha CADEA opcional, non "
+#~ "empregue\n"
+#~ " -S \"CADEA\", -S só: Non se emprega separador (igual "
+#~ "ca\n"
+#~ " -S\"\"), sen -S: Separador por defecto <TAB> con -J "
+#~ "e\n"
+#~ " <espacio>, noutro caso (igual que -S\" \"), sen "
+#~ "efecto nas\n"
+#~ " opcións de columnas\n"
+#~ " -t, --omit-header omiti-las cabeceiras e pés de páxina\n"
+#~ " -T, --omit-pagination\n"
+#~ " omiti-las cabeceiras e pés de páxina, eliminar toda "
+#~ "a\n"
+#~ " paxinación con saltos de liña dos ficheiros de "
+#~ "entrada\n"
+#~ " -v, --show-nonprinting\n"
+#~ " usa-la notación octal de barra invertida\n"
+#~ " -w ANCHO_PÁXINA, --width=ANCHO_PÁXINA\n"
+#~ " poñe-lo ancho de páxina a ANCHO_PÁXINA (72) "
+#~ "caracteres\n"
+#~ " só para a saida de varias columnas de texto, -s[car]\n"
+#~ " desactívao (72)\n"
+#~ " -W ANCHO_PÁXINA, --page-width=ANCHO_PÁXINA\n"
+#~ " establece-lo ancho da páxina a ANCHO_PÁXINA (72)\n"
+#~ " caracteres e trunca-las liñas, agás cando se indica "
+#~ "a\n"
+#~ " opción -J, sen interferencias con -S ou -s\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+#~ "\n"
+#~ "-T é implicado por -l nn cando nn <= 10 ou <= 3 con -F. Se non se indica "
+#~ "un\n"
+#~ "FICHEIRO, ou cando o FICHEIRO é -, ler da entrada estándar.\n"
+
+#~ msgid ""
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ "\n"
+#~ " -A, --auto-reference output automatically generated "
+#~ "references\n"
+#~ " -C, --copyright display Copyright and copying "
+#~ "conditions\n"
+#~ " -G, --traditional behave more like System V `ptx'\n"
+#~ " -F, --flag-truncation=STRING use STRING for flagging line "
+#~ "truncations\n"
+#~ " -M, --macro-name=STRING macro name to use instead of `xx'\n"
+#~ " -O, --format=roff generate output as roff directives\n"
+#~ " -R, --right-side-refs put references at right, not counted in -"
+#~ "w\n"
+#~ " -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+#~ " -T, --format=tex generate output as TeX directives\n"
+#~ " -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+#~ " -b, --break-file=FILE word break characters in this FILE\n"
+#~ " -f, --ignore-case fold lower case to upper case for "
+#~ "sorting\n"
+#~ " -g, --gap-size=NUMBER gap size in columns between output "
+#~ "fields\n"
+#~ " -i, --ignore-file=FILE read ignore word list from FILE\n"
+#~ " -o, --only-file=FILE read only word list from this FILE\n"
+#~ " -r, --references first field of each line is a reference\n"
+#~ " -t, --typeset-mode - not implemented -\n"
+#~ " -w, --width=NUMBER output width in columns, reference "
+#~ "excluded\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+#~ msgstr ""
+#~ "Os argumentos que son obrigatorios nas opcións longas son obrigatorios "
+#~ "nas\n"
+#~ "curtas tamén.\n"
+#~ "\n"
+#~ " -A, --auto-reference amosa-las referencias xeradas "
+#~ "automaticamente\n"
+#~ " -C, --copyright amosa-lo Copyright e as condicións de "
+#~ "copia\n"
+#~ " -G, --traditional parecerse máis ao `ptx' de System V\n"
+#~ " -F, --flag-truncation=CADEA usa-la CADEA para marca-las liñas "
+#~ "truncadas\n"
+#~ " -M, --macro-name=CADEA nome de macro que empregar na vez de "
+#~ "`xx'\n"
+#~ " -O, --format=roff xera-la saída coma directivas de roff\n"
+#~ " -R, --right-side-refs poñe-las referencias á dereita, non "
+#~ "contadas\n"
+#~ " en -w\n"
+#~ " -S, --sentence-regexp=REGEXP para a fin das liñas ou das oracións\n"
+#~ " -T, --format=tex xera-la saída coma directivas de TeX\n"
+#~ " -W, --word-regexp=REGEXP usar REGEXP para busca-las claves\n"
+#~ " -b, --break-file=FICHEIRO caracteres que parten palabras neste "
+#~ "FICHEIRO\n"
+#~ " -f, --ignore-case converte-las minúsculas a maiúsculas "
+#~ "para\n"
+#~ " ordear\n"
+#~ " -g, --gap-size=NÚMERO tamaño do oco entre campos da saída\n"
+#~ " -i, --ignore-file=FICHEIRO ler toda a lista de palabras de "
+#~ "FICHEIRO\n"
+#~ " -o, --only-file=FICHEIRO le-la lista de palabras só do FICHEIRO\n"
+#~ " -r, --references o primeiro campo de cada liña é unha\n"
+#~ " referencia\n"
+#~ " -t, --typeset-mode - non implementado -\n"
+#~ " -w, --width=NÚMERO ancho da saída, excluindo a referencia\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosa-la información sobre a versión e "
+#~ "saír\n"
+#~ "\n"
+#~ "Se non se indica un FICHEIRO ou se o FICHEIRO é -, lese da entrada "
+#~ "estándar.\n"
+#~ "A opción `-F /' inclúese se non se indica outra cousa.\n"
+
+#~ msgid ""
+#~ "This program is free software; you can redistribute it and/or modify\n"
+#~ "it under the terms of the GNU General Public License as published by\n"
+#~ "the Free Software Foundation; either version 2, or (at your option)\n"
+#~ "any later version.\n"
+#~ "\n"
+#~ "This program is distributed in the hope that it will be useful,\n"
+#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+#~ "GNU General Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+#~ msgstr ""
+#~ "Este programa é software libre; pode redistribuílo e/ou modificalo\n"
+#~ "baixo os termos da Licencia Pública Xeral de GNU tal como foi publicada\n"
+#~ "pola Free Software Foundation; xa a versión 2, ou (á súa elección)\n"
+#~ "calqueira versión posterior.\n"
+#~ "\n"
+#~ "Este programa é distribuído coa esperanza de que sexa útil, pero\n"
+#~ "SEN NINGUNHA GARANTÍA; nin sequera a garantía implícita de "
+#~ "COMERCIABILIDADE\n"
+#~ "ou APTITUDE PARA UN FIN EN PARTICULAR. Vexa a Licencia Pública Xeral de\n"
+#~ "GNU para ter máis detalles.\n"
+#~ "\n"
+#~ "Debería ter recibido unha copia da Licencia Pública Xeral de GNU con\n"
+#~ "este programa; se non é o caso, escriba á Free Software Foundation, "
+#~ "Inc.,\n"
+#~ "59 Temple Place - Suite 330, Boston, MA 02111-1307, EE.UU.\n"
+
+#~ msgid ""
+#~ "Write sorted concatenation of all FILE(s) to standard output.\n"
+#~ "\n"
+#~ " +POS1 [-POS2] start a key at POS1, end it *before* POS2 "
+#~ "(obsolescent)\n"
+#~ "\t\t field numbers and character offsets are numbered\n"
+#~ " starting with zero (contrast with the -k option)\n"
+#~ " -b ignore leading blanks in sort fields or keys\n"
+#~ " -c check if given files already sorted, do not sort\n"
+#~ " -d consider only [a-zA-Z0-9 ] characters in keys\n"
+#~ " -f fold lower case to upper case characters in keys\n"
+#~ " -g compare according to general numerical value, imply -"
+#~ "b\n"
+#~ " -i consider only [\\040-\\0176] characters in keys\n"
+#~ " -k POS1[,POS2] start a key at POS1, end it *at* POS2\n"
+#~ "\t\t field numbers and character offsets are numbered\n"
+#~ " starting with one (contrast with zero-based +POS "
+#~ "form)\n"
+#~ " -m merge already sorted files, do not sort\n"
+#~ " -M compare (unknown) < `JAN' < ... < `DEC', imply -b\n"
+#~ " -n compare according to string numerical value, imply -b\n"
+#~ " -o FILE write result on FILE instead of standard output\n"
+#~ " -r reverse the result of comparisons\n"
+#~ " -s stabilize sort by disabling last resort comparison\n"
+#~ " -t SEP use SEParator instead of non- to whitespace "
+#~ "transition\n"
+#~ " -T DIRECTORY use DIRECTORY for temporary files, not $TMPDIR or %s\n"
+#~ " -u with -c, check for strict ordering;\n"
+#~ " with -m, only output the first of an equal sequence\n"
+#~ " -z end lines with 0 byte, not newline, for find -print0\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Escribir una concatenación ordeada de tódolos FICHEIRO(s) na saída "
+#~ "estándar.\n"
+#~ "\n"
+#~ " +POS1 [-POS2] comezar unha clave en POS1, e acabala *antes* de POS2\n"
+#~ " (obsoleta). Os números de campo e os desprazamentos\n"
+#~ " numéranse comezando por 0 (non coma a opción -k\n"
+#~ " -b ignora-los espacios en branco iniciais nos campos e "
+#~ "claves\n"
+#~ " de ordeación\n"
+#~ " -c comprobar se os ficheiros xa están ordeados, non "
+#~ "ordear\n"
+#~ " -d considerar só os caracteres [a-zA-Z0-9 ] nas claves\n"
+#~ " -f converter minúsculas a maiúsculas nas claves\n"
+#~ " -g comparar segundo o valor numérico xeral, implica -b\n"
+#~ " -i considerar só os caracteres [\\040-\\0176] nas claves\n"
+#~ " -k POS1[,POS2] comezar unha clave en POS1, e acabala *en* POS2\n"
+#~ " os números de campo e os desprazamentos numéranse "
+#~ "comezando\n"
+#~ " por 1 (non coma a forma +POS, que comeza en 0)\n"
+#~ " -m mesturar ficheiros xa ordeados, non ordear\n"
+#~ " -M comparar (descoñecido) < 'JAN' < ... < 'DEC', implica -"
+#~ "b\n"
+#~ " -n comparar polo valor numérico de cadea, implica -b\n"
+#~ " -o FICHEIRO escribi-lo resultado no FICHEIRO na vez da saída "
+#~ "estándar\n"
+#~ " -r inverti-lo resultado das comparacións\n"
+#~ " -s estabiliza-la ordeación desactivando a comparación de\n"
+#~ " derradeiro recurso\n"
+#~ " -t SEP usa-lo SEParador na vez de espacios en branco\n"
+#~ " -T DIRECTORIO usa-lo DIRECTORIO para ficheiros temporais, non "
+#~ "$TMPDIR\n"
+#~ " ou %s\n"
+#~ " -u con -c, controla-la ordenación estricta;\n"
+#~ " con -m, visualizar só a primeira dun grupo de iguais\n"
+#~ " -z acabada-las liñas cun byte 0, non cun salto de liña, "
+#~ "para\n"
+#~ " find -print0\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "when using the old-style +POS and -POS key specifiers,\n"
+#~ "the +POS specifier must come first"
+#~ msgstr ""
+#~ "cando se usan os especificadores de clave ao antigo estilo +POS e -POS,\n"
+#~ "o especificador +POS debe ir primeiro"
+
+#~ msgid "option `-k' requires an argument"
+#~ msgstr "a opción `-k' precisa dun argumento"
+
+#~ msgid "starting field spec has `.' but lacks following character offset"
+#~ msgstr ""
+#~ "a especificación do campo inicial ten un `.' pero non o segue\n"
+#~ "o desprazamento"
+
+#~ msgid ""
+#~ "starting field character offset argument to the `-k' option\n"
+#~ "must be positive"
+#~ msgstr ""
+#~ "o argumento desprazamento do campo inicial da opción `-k'\n"
+#~ "debe ser positivo"
+
+#~ msgid "field specification has `,' but lacks following field spec"
+#~ msgstr ""
+#~ "a especificación do campo ten un `,' pero non o segue a\n"
+#~ "especificación do seguinte campo"
+
+#~ msgid "ending field number argument to the `-k' option must be positive"
+#~ msgstr "o argumento número de campo final da opción `-k' debe ser positivo"
+
+#~ msgid "ending field spec has `.' but lacks following character offset"
+#~ msgstr ""
+#~ "a especificación do campo final ten `.' pero non segue\n"
+#~ "o desprazamento"
+
+#~ msgid "option `-o' requires an argument"
+#~ msgstr "a opción `-o' precisa dun argumento"
+
+#~ msgid "option `-t' requires an argument"
+#~ msgstr "a opción `-t' precisa dun argumento"
+
+#~ msgid "option `-T' requires an argument"
+#~ msgstr "a opción `-T' precisa dun argumento"
+
+#~ msgid ""
+#~ "Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+#~ "PREFIX is `x'. With no INPUT, or when INPUT is -, read standard input.\n"
+#~ "\n"
+#~ " -b, --bytes=SIZE put SIZE bytes per output file\n"
+#~ " -C, --line-bytes=SIZE put at most SIZE bytes of lines per output "
+#~ "file\n"
+#~ " -l, --lines=NUMBER put NUMBER lines per output file\n"
+#~ " -NUMBER same as -l NUMBER\n"
+#~ " --verbose print a diagnostic to standard error just\n"
+#~ " before each output file is opened\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+#~ msgstr ""
+#~ "Escribir anacos de tamaño fixo do ficheiro de ENTRADA nos ficheiros "
+#~ "PREFIXOaa,\n"
+#~ "PREFIXOab, ...; se non se indica o prefixo, este é `x'. Sen un ficheiro "
+#~ "de\n"
+#~ "ENTRADA, ou se a ENTRADA é -, lese da entrada estándar.\n"
+#~ "\n"
+#~ " -b, --bytes=TAMAÑO poñer TAMAÑO bytes por ficheiro de saída\n"
+#~ " -C, --line-bytes=TAMAÑO poñer como máximo TAMAÑO bytes de liñas por "
+#~ "ficheiro\n"
+#~ " de saída\n"
+#~ " -l, --lines=NÚMERO poner NÚMERO liñas por ficheiro de saída\n"
+#~ " -NÚMERO igual que -l NÚMERO\n"
+#~ " --verbose visualizar un diagnóstico no error estándar "
+#~ "xusto\n"
+#~ " antes de abrir cada ficheiro de saída\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+#~ "\n"
+#~ "O TAMAÑO pode ter un sufixo multiplicador: b para 512, k para 1K, m para "
+#~ "1Meg.\n"
+
+#~ msgid ""
+#~ "Print the last %d lines of each FILE to standard output.\n"
+#~ "With more than one FILE, precede each with a header giving the file "
+#~ "name.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ " --retry keep trying to open a file even if it is\n"
+#~ " inaccessible when tail starts or if it "
+#~ "becomes\n"
+#~ " inaccessible later -- useful only with -f\n"
+#~ " -c, --bytes=N output the last N bytes\n"
+#~ " -f, --follow[={name|descriptor}] output appended data as the file "
+#~ "grows;\n"
+#~ " -f, --follow, and --follow=descriptor are\n"
+#~ " equivalent\n"
+#~ " -n, --lines=N output the last N lines, instead of the last %"
+#~ "d\n"
+#~ " --max-unchanged-stats=N see the texinfo documentation\n"
+#~ " (the default is %d)\n"
+#~ " --max-consecutive-size-changes=N see the texinfo documentation\n"
+#~ " (the default is %d)\n"
+#~ " --pid=PID with -f, terminate after process ID, PID dies\n"
+#~ " -q, --quiet, --silent never output headers giving file names\n"
+#~ " -s, --sleep-interval=S with -f, sleep S seconds between iterations\n"
+#~ " -v, --verbose always output headers giving file names\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "If the first character of N (the number of bytes or lines) is a `+',\n"
+#~ "print beginning with the Nth item from the start of each file, "
+#~ "otherwise,\n"
+#~ "print the last N items in the file. N may have a multiplier suffix:\n"
+#~ "b for 512, k for 1024, m for 1048576 (1 Meg). A first OPTION of -VALUE\n"
+#~ "or +VALUE is treated like -n VALUE or -n +VALUE unless VALUE has one of\n"
+#~ "the [bkm] suffix multipliers, in which case it is treated like -c VALUE\n"
+#~ "or -c +VALUE.\n"
+#~ "\n"
+#~ "With --follow (-f), tail defaults to following the file descriptor, "
+#~ "which\n"
+#~ "means that even if a tail'ed file is renamed, tail will continue to "
+#~ "track\n"
+#~ "its end. This default behavior is not desirable when you really want to\n"
+#~ "track the actual name of the file, not the file descriptor (e.g., log\n"
+#~ "rotation). Use --follow=name in that case. That causes tail to track "
+#~ "the\n"
+#~ "named file by reopening it periodically to see if it has been removed "
+#~ "and\n"
+#~ "recreated by some other program.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Escribi-las derradeiras %d liñas de cada FICHEIRO na saída estándar.\n"
+#~ "Con máis dun FICHEIRO, precédese cada un cunha cabeceira que indica o "
+#~ "nome.\n"
+#~ "Se non se indica un FICHEIRO, ou se o FICHEIRO é -, lese da entrada "
+#~ "estándar.\n"
+#~ "\n"
+#~ " --retry seguir tentando abrir un ficheiro incluso se "
+#~ "é\n"
+#~ " inaccesible cando tail comeza ou se se "
+#~ "volve\n"
+#~ " inaccesible despois -- útil só con -f\n"
+#~ " -c, --bytes=N escribi-los derradeiros N bytes\n"
+#~ " -f, --follow[={name|descriptor}] escribi-los datos engadidos cando o\n"
+#~ " ficheiro medra. -f, --follow, e\n"
+#~ " --follow=descriptor son equivalentes\n"
+#~ " -n, --lines=N escribi-las derradeiras N liñas, na vez das %"
+#~ "d\n"
+#~ " --max-unchanged-stats=N vexa a documentación de texinfo\n"
+#~ " (por defecto é %d)\n"
+#~ " --max-consecutive-size-changes=N vexa a documentación de texinfo\n"
+#~ " (por defecto é %d)\n"
+#~ " --pid=PID con -f, rematar despois de que proceso "
+#~ "indicado\n"
+#~ " morra\n"
+#~ " -q, --quiet, --silent non escribi-las cabeceiras que indican os "
+#~ "nomes\n"
+#~ " -s, --sleep-interval=S con -f, durmir S segundos entre iteracións\n"
+#~ " -v, --verbose escribir sempre as cabeceiras que indican os "
+#~ "nomes\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+#~ "\n"
+#~ "Se o primeiro carácter de N (o número de bytes ou liñas) é un `+',\n"
+#~ "escríbese comezando polo N-ésimo elemento dende o principio de cada "
+#~ "ficheiro,\n"
+#~ "e nos demáis casos escríbense os derradeiros N elementos do ficheiro. N "
+#~ "pode\n"
+#~ "ter un sufixo multiplicativo: b para 512, k para 1024, m para 1048576 (1\n"
+#~ "Mega). Unha primeira OPCIÓN de -VALOR ou +VALOR é tratada coma -n VALOR "
+#~ "ou\n"
+#~ "-n +VALOR agás se VALOR ten un dos sufixos multiplicadores [bkm], entón\n"
+#~ "trátase coma -c VALOR ou -c +VALOR.\n"
+#~ "\n"
+#~ "Con --follow (-f), tail segue, por defecto, o descriptor do ficheiro, o "
+#~ "que\n"
+#~ "significa que incluso se un ficheiro ao que se fai tail se lle cambia o "
+#~ "nome,\n"
+#~ "tail segue amosando a súa fin. Este comportamento por defecto non é "
+#~ "desexable\n"
+#~ "cando quere amosa-lo ficheiro con ese nome, non o seu descriptor (por "
+#~ "exemplo,\n"
+#~ "rotación de ficheiros de rexistro). Use --follow=name nese caso. Isto fai "
+#~ "que\n"
+#~ "tail busque o ficheiro con ese nome reabríndoo periodicamente para ver "
+#~ "se\n"
+#~ "foi eliminado e recreado por outro programa.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "SETs are specified as strings of characters. Most represent themselves.\n"
+#~ "Interpreted sequences are:\n"
+#~ "\n"
+#~ " \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a audible BEL\n"
+#~ " \\b backspace\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ " CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+#~ " [CHAR1-CHAR2] same as CHAR1-CHAR2, if both SET1 and SET2 use this\n"
+#~ " [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+#~ " [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+#~ " [:alnum:] all letters and digits\n"
+#~ " [:alpha:] all letters\n"
+#~ " [:blank:] all horizontal whitespace\n"
+#~ " [:cntrl:] all control characters\n"
+#~ " [:digit:] all digits\n"
+#~ " [:graph:] all printable characters, not including space\n"
+#~ " [:lower:] all lower case letters\n"
+#~ " [:print:] all printable characters, including space\n"
+#~ " [:punct:] all punctuation characters\n"
+#~ " [:space:] all horizontal or vertical whitespace\n"
+#~ " [:upper:] all upper case letters\n"
+#~ " [:xdigit:] all hexadecimal digits\n"
+#~ " [=CHAR=] all characters which are equivalent to CHAR\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Os CONXUNTOs especifícanse como cadeas de caracteres. A maioría "
+#~ "represéntanse\n"
+#~ "a sí mesmos. As secuencias interpretadas son:\n"
+#~ "\n"
+#~ " \\NNN o carácter co valor octal NNN (de 1 a 3 díxitos "
+#~ "octais)\n"
+#~ " \\\\ barra invertida\n"
+#~ " \\a campá audible (BEL)\n"
+#~ " \\b borrar carácter anterior\n"
+#~ " \\f salto de páxina\n"
+#~ " \\n salto de liña\n"
+#~ " \\r retorno de carro\n"
+#~ " \\t tabulación horizontal\n"
+#~ " \\v tabulación vertical\n"
+#~ " CAR1-CAR2 tódolos caracteres de CAR1 a CAR2 en orde crecente\n"
+#~ " [CAR1-CAR2] igual que CAR1-CAR2, se CONXUNTO1 e CONXUNTO2 o usan á "
+#~ "vez\n"
+#~ " [CAR*] en CONXUNTO2, copias de CAR ata a lonxitude do "
+#~ "CONXUNTO1\n"
+#~ " [CAR*REPET] REPETir copias de CAR, REPETir un octal se comeza por "
+#~ "0\n"
+#~ " [:alnum:] tódalas letras e díxitos\n"
+#~ " [:alpha:] tódalas letras\n"
+#~ " [:blank:] tódolos espacios en branco horizontais\n"
+#~ " [:cntrl:] tódolos caracteres de control\n"
+#~ " [:digit:] tódolos díxitos\n"
+#~ " [:graph:] tódolos caracteres imprimibles, sen conta-lo espacio\n"
+#~ " [:lower:] tódalas letras minúsculas\n"
+#~ " [:print:] tódolos caracteres imprimibles, contando o espacio\n"
+#~ " [:punct:] tódolos caracteres de puntuación\n"
+#~ " [:space:] tódolos espacios en branco horizontais e verticais\n"
+#~ " [:upper:] tódalas letras maiúsculas\n"
+#~ " [:xdigit:] tódolos díxitos hexadecimais\n"
+#~ " [=CAR=] tódolos caracteres equivalentes a CAR\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+#~ "-t may be used only when translating. SET2 is extended to length of\n"
+#~ "SET1 by repeating its last character as necessary. Excess characters\n"
+#~ "of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+#~ "expand in ascending order; used in SET2 while translating, they may\n"
+#~ "only be used in pairs to specify case conversion. -s uses SET1 if not\n"
+#~ "translating nor deleting; else squeezing uses SET2 and occurs after\n"
+#~ "translation or deletion.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "A traducción faise se non se indica -d e ámbolos dous CONXUNTO1 e "
+#~ "CONXUNTO2\n"
+#~ "aparecen. Pode usarse -t só cando se traduce. CONXUNTO2 esténdese ata "
+#~ "a\n"
+#~ "lonxitude do CONXUNTO1 repetindo o seu derradeiro carácter tantas veces "
+#~ "como\n"
+#~ "sexa necesario. Os caracteres excesivos do CONXUNTO2 ignóranse. Só se\n"
+#~ "garantiza que [:lower:] e [:upper:] serán expandidos en orde crecente; "
+#~ "usados\n"
+#~ "no CONXUNTO2 na traducción, poden ser usados só en parellas para indica-"
+#~ "la\n"
+#~ "conversión de maiúsculas a minúsculas e viceversa. -s usa o CONXUNTO1 se "
+#~ "non\n"
+#~ "se está a traducir ou borrar; noutro caso a compresión usa o CONXUNTO2 e\n"
+#~ "sucede trala traducción ou borrado.\n"
+
+#~ msgid ""
+#~ "Convert spaces in each FILE to tabs, writing to standard output.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ " -a, --all convert all whitespace, instead of initial "
+#~ "whitespace\n"
+#~ " -t, --tabs=NUMBER have tabs NUMBER characters apart instead of 8\n"
+#~ " -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Instead of -t NUMBER or -t LIST, -NUMBER or -LIST may be used.\n"
+#~ msgstr ""
+#~ "Converte-los espacios de cada FICHEIRO a tabulacións, escribindo na "
+#~ "saída\n"
+#~ "estándar. Se non se indica un FICHEIRO, ou se o FICHEIRO é -, lese da "
+#~ "entrada\n"
+#~ "estándar.\n"
+#~ "\n"
+#~ " -a, --all converte-los espacios en branco, non só os "
+#~ "iniciais\n"
+#~ " -t, --tabs=NÚMERO que as tabulacións sexan de NÚMERO caracteres e non "
+#~ "8\n"
+#~ " -t, --tabs=LISTA usar unha lista de posicións separadas por comas\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+#~ "\n"
+#~ "Na vez de -t NÚMERO ou -t LISTA, pode empregarse -NÚMERO ou -LISTA.\n"
+
+#~ msgid ""
+#~ "Discard all but one of successive identical lines from INPUT (or\n"
+#~ "standard input), writing to OUTPUT (or standard output).\n"
+#~ "\n"
+#~ " -c, --count prefix lines by the number of occurrences\n"
+#~ " -d, --repeated only print duplicate lines\n"
+#~ " -D, --all-repeated print all duplicate lines\n"
+#~ " -f, --skip-fields=N avoid comparing the first N fields\n"
+#~ " -i, --ignore-case ignore differences in case when comparing\n"
+#~ " -s, --skip-chars=N avoid comparing the first N characters\n"
+#~ " -u, --unique only print unique lines\n"
+#~ " -w, --check-chars=N compare no more than N characters in lines\n"
+#~ " -N same as -f N\n"
+#~ " +N same as -s N\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "A field is a run of whitespace, then non-whitespace characters.\n"
+#~ "Fields are skipped before chars.\n"
+#~ msgstr ""
+#~ "Desbotar tódalas as liñas idénticas sucesivas, agás unha, da ENTRADA (ou\n"
+#~ "entrada estándar), escribindo na SAÍDA (ou saída estándar).\n"
+#~ "\n"
+#~ " -c, --count precede-las liñas polo número de repeticións\n"
+#~ " -d, --repeated escribir só as liñas duplicadas\n"
+#~ " -D, --all-repeated escribir tódalas liñas duplicadas\n"
+#~ " -f, --skip-fields=N evita-la comparación dos primeiros N campos\n"
+#~ " -i, --ignore-case ignora-las maiúsculas e minúsculas na "
+#~ "comparación\n"
+#~ " -s, --skip-chars=N evita-la comparación dos primeiros N caracteres\n"
+#~ " -u, --unique escribir só as liñas que non estén duplicadas\n"
+#~ " -w, --check-chars=N non comparar máis de N caracteres nas liñas\n"
+#~ " -N igual que -f N\n"
+#~ " +N igual que -s N\n"
+#~ " --help amosar esta axuda e saír\n"
+#~ " --version amosar información sobre a versión e saír\n"
+#~ "\n"
+#~ "Un campo é un conxunto de caracteres distintos de espacios en branco.\n"
+#~ "Sáltanse os campos e logo os caracteres.\n"
+
+#~ msgid "could not find loop"
+#~ msgstr "non se puido atopa-lo lazo"
diff --git a/po/hu.gmo b/po/hu.gmo
new file mode 100644
index 0000000..5ac704e
--- /dev/null
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
new file mode 100644
index 0000000..4033c0f
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,10045 @@
+# Hungarian translation of GNU coreutils
+# Copyright (C) 2002, 2005, 2006, 2007 Free Software Foundation, Inc.
+# This file is distributed under the same license as the coreutils package.
+# Translated using gnu.twm
+# Emese Kovács <emese@instantweb.hu>, 2002.
+# Gabor Kelemen <kelemeng@gnome.hu>, 2005, 2006, 2007.
+# The correct value of Language-Team is translation-team-hu@lists.sourceforge.net -kg
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 6.8\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2007-02-27 16:36+0100\n"
+"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
+"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.2\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, c-format
+msgid "preserving permissions for %s"
+msgstr "%s jogosultságainak megtartása"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "%s jogosultságainak beállítása"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "a(z) \"%s\" argumentum érvénytelen a következőhöz: %s"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "a(z) \"%s\" argumentum nem egyértelmű a következőhöz: \"%s\""
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Az érvényes argumentumok a következők:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "íráshiba"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Ismeretlen rendszerhiba"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "stat %s sikertelen"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "szabályos üres fájl"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "szabályos fájl"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "könyvtár"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "speciális blokkfájl"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "speciális karakterfájl"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "fifo"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "szimbolikus link"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "foglalat"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "üzenetsor"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "szemafor"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "megosztott memóriaobjektum"
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr "típusos memóriaobjektum"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "szokatlan fájl"
+
+#: lib/gai_strerror.c:44
+msgid "Address family for hostname not supported"
+msgstr "A címcsalád a gépnévhez nem támogatott"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr "Ãtmeneti névfeloldási hiba"
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr "Az ai_flags értéke hibás"
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr "Helyreállíthatatlan névfeloldási hiba"
+
+#: lib/gai_strerror.c:48
+msgid "ai_family not supported"
+msgstr "az ai_family nem támogatott"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr "Memóriafoglalási hiba"
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr "Nincs cím társítva a gépnévhez"
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr "A név vagy a szolgáltatás nem ismert"
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr "A Servname nem támogatott az ai_socktype-hoz"
+
+#: lib/gai_strerror.c:53
+msgid "ai_socktype not supported"
+msgstr "az ai_socktype nem támogatott"
+
+#: lib/gai_strerror.c:54
+msgid "System error"
+msgstr "Rendszerhiba"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr "A paraméterpuffer túl kicsi"
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr "Kérés feldolgozása folyamatban"
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr "Kérés megszakítva"
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr "A kérés nem lett megszakítva"
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr "Minden kérés kész"
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr "Egy szignál megszakította"
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr "A Paraméter-karakterlánc kódolása nem megfelelő"
+
+#: lib/gai_strerror.c:74
+msgid "Unknown error"
+msgstr "Ismeretlen hiba"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: a(z) \"%s\" kapcsoló nem egyértelmű\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: a(z) \"--%s\" kapcsoló nem enged meg argumentumot\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: a(z) \"%c%s\" kapcsoló nem enged meg argumentumot\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: a(z) \"%s\" kapcsolóhoz argumentum szükséges\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: a(z) \"--%s\" kapcsoló ismeretlen\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: a(z) \"%c%s\" kapcsoló ismeretlen\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: illegális kapcsoló -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: érvénytelen kapcsoló -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: a kapcsoló egy argumentumot igényel -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: a \"-W %s\" kapcsoló nem egyértelmű\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: a \"-W %s\" kapcsoló nem enged meg argumentumot\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "blokkméret"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "nem lehet %s jogosultságait megváltoztatni"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "nem lehet a következő könyvtárat létrehozni: %s"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "elfogyott a memória"
+
+#: lib/openat-die.c:34
+#, c-format
+msgid "unable to record current working directory"
+msgstr "az aktuális munkakönyvtár feljegyzése meghiúsult"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "a visszatérés meghiúsult a kiinduló munkakönyvtárba"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "\""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "\""
+
+#: lib/randread.c:125
+#, c-format
+msgid "%s: end of file"
+msgstr "%s: fájl vége"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr "Sikerült"
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr "Nincs találat"
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr "Érvénytelen szabályos kifejezés"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr "Érvénytelen leválogatási karakter"
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr "érvénytelen karakterosztálynév"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr "Záró visszaper"
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr "Érvénytelen visszahivatkozás"
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr "Pár nélküli [ vagy [^"
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr "Pár nélküli ( vagy \\("
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr "Pár nélküli \\{"
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr "A \\{\\} tartalma érvénytelen"
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr "Érvénytelen tartományvég"
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr "Elfogyott a memória"
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr "Érvénytelen megelőző szabályos kifejezés"
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr "A szabályos kifejezés túl korán véget ért"
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr "A szabályos kifejezés túl nagy"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr "Pár nélküli ) vagy \\)"
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr "Nincs megelőző szabályos kifejezés"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr "veszélyes rekurzívan dolgozni a következőn: %s"
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr "veszélyes rekurzívan dolgozni a következőn: %s (ugyanaz, mint %s)"
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+"a --no-preserve-root kapcsoló használatával ez a hibamentes mód "
+"felülbírálható"
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[iIyY]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "az iconv függvény nem használható"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "az iconv függvény nem érhető el"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "tartományon kívüli karakter"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "nem lehet helyi karakterkészletbe átalakítani a következőt: U+%04X"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "nem lehet a(z) U+%04X-t helyi karakterkészletbe átalakítani: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "érvénytelen felhasználó"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "érvénytelen csoport"
+
+#: lib/userspec.c:109
+msgid "invalid spec"
+msgstr "érvénytelen meghatározás"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr "(C)"
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Ez a program szabad szoftver: terjesztheti és/vagy módosíthatja a Free\n"
+"Software Foundation által kiadott GNU General Public License-ben\n"
+"<http://www.gnu.org/licenses/gpl.html> foglaltak alapján.\n"
+"NINCS GARANCIA, a jog által megengedett mértékig.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Ãrta %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Ãrta %s és %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Ãrta %s, %s, és %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Ãrta %s, %s, %s,\n"
+"és %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Ãrta %s, %s, %s,\n"
+"%s, és %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Ãrta %s, %s, %s,\n"
+"%s, %s, és %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Ãrta %s, %s, %s,\n"
+"%s, %s, %s, és %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Ãrta %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"és %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Ãrta %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, és %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Ãrta %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, és mások.\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "érvénytelen argumentum: %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "karakterlánc-összehasonlítás sikertelen"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Ãllítsd be az LC_ALL='C' -t a probléma megkerüléséhez."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "Az összehasonlított karakterláncok: %s és %s."
+
+#: lib/xmemxfrm.c:55
+#, c-format
+msgid "string transformation failed"
+msgstr "a karakterlánc-átalakítás sikertelen"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr "Az átalakítatlan karakterlánc: %s."
+
+#: lib/xstrtol.h:62
+#, c-format
+msgid "invalid %s `%s'"
+msgstr "érvénytelen %s: \"%s\""
+
+#: lib/xstrtol.h:69
+#, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "érvénytelen karakter a(z) %s után a következőben: %s"
+
+#: lib/xstrtol.h:74
+#, c-format
+msgid "%s `%s' too large"
+msgstr "%s \"%s\" túl nagy"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Próbáld a \"%s --help\"-et.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+"Használat: %s [KAPCSOLÓ] [FÃJL]\n"
+"A FÃJL vagy a szabványos bemenet Base64 kódolása vagy visszafejtése, a\n"
+"szabványos kimenetre.\n"
+"\n"
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+" -w, --wrap=OSZLOP Kódolt sorok tördelése OSZLOP karakter után\n"
+" (alapértelmezett: 76).\n"
+" A 0 használatával letiltható a sortörés.\n"
+"\n"
+" -d, --decode Adatok visszafejtése.\n"
+" -i, --ignore-garbage Visszafejtéskor csak az ábécé karaktereit veszi\n"
+" figyelembe.\n"
+"\n"
+
+#: src/base64.c:77
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+" --help Ezen súgó kisírása és kilépés.\n"
+" --version Verzióinformációk megjelenítése és kilépés.\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Ha a FÃJL nincs megadva, vagy -, akkor a szabványos bemenetet olvassa.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+"\n"
+"Az adatok kódolása a base64 ábécé által az RFC 3548-ban leírt módon "
+"történik.\n"
+"A visszafejtés a szabványnak megfelelő bemenetet követel meg "
+"alapértelmezésben,\n"
+"az --ignore-garbage kapcsoló használatával megkísérelhető a helyreállítás "
+"az\n"
+"ábécében nem szereplő karakterekből.\n"
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"A programhibákat a(z) <%s> címen jelentheted.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "olvasási hiba"
+
+#: src/base64.c:234
+#, c-format
+msgid "invalid input"
+msgstr "érvénytelen bemenet"
+
+#: src/base64.c:271
+#, c-format
+msgid "invalid wrap size: %s"
+msgstr "érvénytelen sortörésméret: %s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr "extra operandus: \"%s\""
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "a szabványos bemenet lezárása"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Használat: %s NÉV [UTÓTAG]\n"
+" vagy: %s KAPCSOLÓ\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Kinyomtatja a NEVET a kezdő könyvtárösszetevő eltávolítása után.\n"
+"Ha meg van adva, a záró UTÓTAGOT is eltávolítja.\n"
+"\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+"\n"
+"Példák::\n"
+" %s /usr/bin/sort A kimenet: \"sort\".\n"
+" %s include/stdio.h .h A kimenet: \"stdio\".\n"
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, c-format
+msgid "missing operand"
+msgstr "hiányzó operandus"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Használat: %s [KAPCSOLÓ]... FÃJL...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"Összefűzi a FÃJL(oka)T, vagy a szabványos bemenetet a szabványos "
+"kimenettel.\n"
+"\n"
+" -A, --show-all azonos a -vET-vel\n"
+" -b, --number-nonblank a nem üres kimeneti sorok megszámozása\n"
+" -e azonos a -vE-vel\n"
+" -E, --show-ends egy $ jelet jelenít meg minden egyes sor végén\n"
+" -n, --number megszámoz minden kimeneti sort\n"
+" -s, --squeeze-blank egyetlen üres sornál nem jelenít meg többet\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t azonos a -vT-vel\n"
+" -T, --show-tabs a TAB karaktereket ^I formában jeleníti meg\n"
+" -u (figyelmen kívül marad)\n"
+" -v, --show-nonprinting a ^ és M- jelölés használata az LFD és TAB\n"
+" kivételével\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+"\n"
+"Példák:\n"
+" %s f - g Előbb f, majd a szabványos bemenet, majd g tartalmának kiírása.\n"
+" %s A szabványos bemenet másolása a szabványos kimenetre.\n"
+
+#: src/cat.c:333
+#, c-format
+msgid "cannot do ioctl on %s"
+msgstr "nem végezhető ioctl a következőn: %s"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "szabványos kimenet"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: a bemeneti fájl a kimeneti fájl"
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "érvénytelen csoport: %s"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Használat: %s [KAPCSOLÓ]... CSOPORT FÃJL...\n"
+" vagy: %s [KAPCSOLÓ]... --reference=REFERENCIAFÃJL FÃJL...\n"
+
+#: src/chgrp.c:117
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Megváltoztatja mindegyik FÃJL csoportját a CSOPORTRA.\n"
+"A --reference használatával minden egyes FÃJL csoportját a REFERENCIAFÃJL\n"
+"csoportjára változtatja.\n"
+"\n"
+" -c, --changes mint a bőbeszédű mód, de csak a végrehajtott\n"
+" változásokat jelzi\n"
+" --dereference nem a szimbolikus link csoportját változtatja "
+"meg,\n"
+" hanem a fájlét, amire az mutat (ez az\n"
+" alapértelmezett)\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference nem a fájl, hanem a rá mutató szimbolikus link\n"
+" csoportját állítja át (csak azokon a "
+"rendszereken\n"
+" működik, ahol a szimlink csoportja állítható)\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root a \"/\"-t ne kezelje speciálisan "
+"(alapértelmezett)\n"
+" --preserve-root a rekurzív működés visszautasítása a \"/\" "
+"könyvtáron\n"
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet megszünteti a legtöbb hibaüzenetet\n"
+" --reference=RFÃJL a megadott RFÃJL csoportját használja a CSOPORT\n"
+" értéke helyett\n"
+" -R, --recursive rekurzívan működik a fájlokon és könyvtárakon\n"
+" -v, --verbose minden feldolgozott fájl után diagnosztikai\n"
+" üzenetet ír ki\n"
+"\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+"Az alábbi kapcsolók a hierarchia bejárását módosítják, ha a -R kapcsoló\n"
+"is meg van adva. Ha egynél több van megadva, akkor csak a legutolsó\n"
+"fejti ki hatását.\n"
+"\n"
+" -H ha egy parancssori argumentum szimbolikus link\n"
+" egy könyvtárra, akkor bejárja\n"
+" -L minden könyvtárra mutató szimbolikus link bejárása\n"
+" -P ne járjon be egyetlen szimbolikus linket sem\n"
+" (alapértelmezett)\n"
+"\n"
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+"\n"
+"Példák:\n"
+" %s staff /u A /u csoportjának módosítása \"staff\"-ra.\n"
+" %s -hR staff /u A /u és az alatta található fájlok csoportjának "
+"módosítása\n"
+" \"staff\"-ra.\n"
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr "A -R --dereference igényli a -H vagy -L egyikét"
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, c-format
+msgid "missing operand after %s"
+msgstr "a(z) \"%s\" operandusa hiányzik"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "%s attribútumainak beolvasása sikertelen"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "%s új attribútumainak beolvasása"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr ""
+"a szimbolikus link (%s) és az általa hivatkozott fájl egyaránt változatlan\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "%s jogosultságai megváltoztatva a következőre: %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr ""
+"%s jogosultságainak megváltoztatása sikertelen a következőre: %04lo (%s)\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "%s jogosultsága a következő maradt: %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "%s nem érhető el"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "a következő könyvtár nem olvasható: %s"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "%s jogosultságainak megváltoztatása"
+
+#: src/chmod.c:286
+#, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "%s: az új jogosultságok: %s, nem pedig %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr "az fts_read sikertelen"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Használat: %s [KAPCSOLÓ]... MÓD[,MÓD]... FÃJL...\n"
+" vagy: %s [KAPCSOLÓ]... OKTÃLIS-MÓD FÃJL...\n"
+" vagy: %s [KAPCSOLÓ]... --reference=REFERENCIAFÃJL FÃJL...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+"Megváltoztatja minden egyes FÃJL jogosultságait a MÓDRA.\n"
+"\n"
+" -c, --changes mint a verbose, de csak a változásokat jelzi\n"
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root a \"/\"-t ne kezelje speciálisan "
+"(alapértelmezett)\n"
+" --preserve-root a rekurzív működés visszautasítása a \"/\" "
+"könyvtáron\n"
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+" -f, --silent, --quiet megszünteti a legtöbb hibaüzenetet\n"
+" -v, --verbose minden feldolgozott fájl után üzenetet ír ki\n"
+" --reference=RFÃJL az RFÃJL MÓDJÃT állítja be a MÓD értékek "
+"helyett\n"
+" -R, --recursive rekurzívan módosítja a fájlokat és könyvtárakat\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+"\n"
+"Minden egyes MÓD a következő formátumú: `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr "a mód és a --reference kapcsolók nem kombinálhatók"
+
+#: src/chmod.c:510
+#, c-format
+msgid "invalid mode: %s"
+msgstr "érvénytelen mód: %s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "%s tulajdonosa megváltoztatva a következőre: %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "%s csoportja megváltoztatva a következőre: %s\n"
+
+#: src/chown-core.c:149
+#, c-format
+msgid "no change to ownership of %s\n"
+msgstr "%s tulajdonosa nem változott meg\n"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "%s tulajdonosának megváltoztatása sikertelen a következőre: %s\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "%s csoportjának megváltoztatása sikertelen a következőre: %s\n"
+
+#: src/chown-core.c:154
+#, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "%s tulajdonosának megváltoztatása meghiúsult\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "%s tulajdonosa maradt %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "%s csoportja maradt %s\n"
+
+#: src/chown-core.c:159
+#, c-format
+msgid "ownership of %s retained\n"
+msgstr "%s tulajdonosa megtartva\n"
+
+#: src/chown-core.c:344
+#, c-format
+msgid "cannot dereference %s"
+msgstr "%s nem követhető"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "%s tulajdonosának megváltoztatása"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "%s csoportjának megváltoztatása"
+
+#: src/chown.c:93
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Használat: %s [KAPCSOLÓ]... [TULAJDONOS] [:[CSOPORT] FÃJL...\n"
+" vagy: %s [KAPCSOLÓ]... --reference=REFERENCIAFÃJL FÃJL...\n"
+
+#: src/chown.c:98
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Megváltoztatja mindegyik FÃJL tulajdonosát és/vagy csoportját a "
+"TULAJDONOSRA\n"
+"és/vagy a CSOPORTRA. A --reference használata esetén mindegyik FÃJL\n"
+"tulajdonosát és csoportját a REFERENCIAFÃJLÉRA változtatja.\n"
+"\n"
+" -c, --changes mint a verbose, de csak a változásokat jelzi\n"
+" --dereference nem a szimbolikus link csoportját változtatja "
+"meg,\n"
+" hanem a fájlét, amire az mutat\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=JELENLEGI_TULAJ:JELENLEGI_CSOPORT\n"
+" csak akkor változtatja meg a fájl tulajdonosát "
+"és/\n"
+" vagy csoportját, ha a jelenlegi beállítások\n"
+" megegyeznek a megadottakkal. A két attribútum\n"
+" közül bármelyik elhagyható.\n"
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet megszünteti a legtöbb hibaüzenetet\n"
+" --reference=RFÃJL a megadott RFÃJL csoportját és tulajdonosát\n"
+" állítja be a TULAJ:CSOPORT értéke helyett\n"
+" -R, --recursive rekurzívan módosítja a fájlokat és könyvtárakat\n"
+" -v, --verbose minden feldolgozott fájl után diagnosztikai\n"
+" üzenetet ír ki\n"
+"\n"
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"A tulajdonos változatlan marad, ha nincs megadva. A csoport változatlan\n"
+"marad, ha nincs megadva, de megváltozik a bejelentkezési csoportra, a \":\"-"
+"ot\n"
+"követő TULAJDONOS nevének megadásakor. A TULAJDONOST és a CSOPORTOT meg\n"
+"lehet adni számmal vagy névvel.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+"\n"
+"Példák:\n"
+" %s root /u A /u tulajdonosának megváltoztatása \"root\"-ra.\n"
+" %s root:staff /u Hasonló, de a csoportot megváltoztatja \"staff\"-ra.\n"
+" %s -hR root /u A /u és az alatta található fájlok tulajdonosának\n"
+" módosítása \"root\"-ra.\n"
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Használat: %s ÚJGYÖKÉR [PARANCS...]\n"
+" vagy: %s KAPCSOLÓ\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"A PARANCS futtatása a gyökérkönyvtár ÚJGYÖKÉRRE állításával.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"Ha nincs parancs megadva, a ``${SHELL} -i'' (alapértelmezés: /bin/sh) indul "
+"el.\n"
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "a gyökérkönyvtár nem váltható át a következőre: %s"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "nem lehet a gyökérkönyvtárba lépni"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "a(z) %s parancs nem futtatható"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: a fájl túl nagy"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Használat: %s [FÃJL]...\n"
+" vagy: %s [KAPCSOLÓ]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"Minden egyes FÃJL CRC ellenÅ‘rzőösszegének és bájtjai számának kiírása.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Használat: %s [KAPCSOLÓ]... FÃJL1 FÃJL2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr "A rendezett FÃJL1 és FÃJL2 összehasonlítása sorról sorra.\n"
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+"\n"
+"Kapcsolók nélkül három oszlopból álló kimenetet állít elő. Az első oszlop \n"
+"tartalmazza a FÃJL1-ben egyedi sorokat, a második a FÃJL2-ben egyedi "
+"sorokat,\n"
+"a harmadik oszlop pedig a mindkét fájlban közös sorokat.\n"
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"\n"
+" -1 a FÃJL1-ben egyedi sorok elnyomása a kimenetben\n"
+" -2 a FÃJL2-ben egyedi sorok elnyomása a kimenetben\n"
+" -3 a mindkét fájlban szereplő sorok elnyomása a kimenetben\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "%s tulajdonosának megtartása meghiúsult"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr "%s fájl kikeresése meghiúsult"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "%s szerzőjének megtartása meghiúsult"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "%s nem nyitható meg olvasásra"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "fstat %s sikertelen"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "%s fájl kihagyása, mivel kicserélték másolás közben"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "%s nem törölhető"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "%s törölve\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "%s reguláris fájl nem hozható létre"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "%s olvasása"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "lseek %s sikertelen"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "%s írása"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "%s összes idejének megtartása"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "%s lezárása"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: %s felülírása %04lo mód figyelmen kívül hagyásával? "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: felülírod %s-t? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (biztonsági mentés: %s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "%s könyvtár kihagyása"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "figyelmeztetés: %s forrásfájl többször is meg van adva"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s és %s ugyanaz a fájl"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "%s nem könyvtár; nem írható felül %s könyvtárral"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "az éppen létrehozott %s-t nem fogom felülírni ezzel: %s"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "%s könyvtárat nem írható felül nem könyvtárral"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "a könyvtárat nem lehet nem könyvtárba áthelyezni: %s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr ""
+"%s biztonsági mentése megsemmisítené a forrást; %s nem került áthelyezésre"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr ""
+"%s biztonsági mentése megsemmisítené a forrást; %s nem került másolásra"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "%s biztonsági mentése sikertelen"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "%s könyvtárat nem lehet saját magába (%s) másolni"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "%2$s könyvtárra mutató %1$s hard link nem lesz létrehozva"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "%s hard link nem hozható létre a következőre: %s"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "%s-t nem lehet egy saját alkönyvtárába (%s) áthelyezni"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "%s-t nem lehet ide áthelyezni: %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+"eszközközi áthelyezés sikertelen:\n"
+"%s --> %s; cél törlése sikertelen"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "%s körkörös szimbolikus link nem másolható"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr ""
+"%s: relatív szimbolikus linkeket csak az aktuális könyvtárban lehet "
+"létrehozni"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "%s szimbolikus link nem hozható létre a következőre: %s"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "%s link nem hozható létre"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "%s fifo nem hozható létre"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "%s speciális fájl nem hozható létre"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "%s szimbolikus link nem olvasható"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "%s szimbolikus link nem hozható létre"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s fájltípusa ismeretlen"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "%s biztonsági mentése nem állítható vissza"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (biztonsági mentés visszaállítása)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Használat: %s [KAPCSOLÓ]... [-T] FORRÃS CÉL\n"
+" vagy: %s [KAPCSOLÓ]... FORRÃS... KÖNYVTÃR\n"
+" vagy: %s [KAPCSOLÓ]... -t KÖNYVTÃR FORRÃS...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"A FORRÃST a CÉLRA, vagy több FORRÃST a KÖNYVTÃRBA másol.\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Ha egy hosszú kapcsolóhoz kötelező argumentumot megadni, akkor ez a \n"
+"megfelelő rövid kapcsolónál is kötelező.\n"
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive ugyanaz, mint a -dpPR\n"
+" --backup[=CONTROL] minden létező célfájlról mentést készít\n"
+" -b mint a --backup, de nem fogad el "
+"argumentumot\n"
+" --copy-contents rekurzió esetén speciális fájlok tartalmát "
+"is\n"
+" másolja\n"
+" -d mint a --no-dereference --preserve=link\n"
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" -f, --force ha egy létező célfájlt nem lehet megnyitni,\n"
+" akkor törli azt, majd újrapróbálja\n"
+" -i, --interactive felülírás előtt kérdez\n"
+" -H parancssori szimbolikus linkek követése\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+" -l, --link fájlok linkelése másolás helyett\n"
+" -L, --dereference mindig kövesse a szimbolikus linkeket\n"
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+" -P, --no-dereference soha ne kövesse a szimbolikus linkeket\n"
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -p mint a --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LISTA] megadott attribútumok megtartása (alap:\n"
+" mode,ownership,timestamps), ha lehet\n"
+" további attribútumokat is: links, all\n"
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=ATTR_LISTA nem őrzi meg a megadott attribútumokat\n"
+" --parents teljes forrásfájlnév használata a KÖNYVTÃR "
+"alatt\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive könyvtárak rekurzív másolása\n"
+" --remove-destination törli a célfájl, még mielőtt megpróbálná\n"
+" megnyitni (ellentétben a --force "
+"kapcsolóval)\n"
+
+#: src/cp.c:205
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --sparse=EKKOR ritka fájlok létrehozásának szabályozása\n"
+" --strip-trailing-slashes eltávolítja a befejező per jeleket minden\n"
+" FORRÃS argumentumról\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link szimbolikus link létrehozása másolás helyett\n"
+" -S, --suffix=KITERJESZTÉS a biztonsági másolat szokásos "
+"kiterjesztésének\n"
+" felülbírálása\n"
+" -t, --target-directory=KÖNYVTÃR minden FORRÃS argumentum másolása a\n"
+" megadott KÖNYVTÃRBA\n"
+" -T, --no-target-directory a CÉL kezelése normál fájlként\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update csak akkor másol, ha a CÉL fájl régebbi mint "
+"a\n"
+" FORRÃS, vagy ha a CÉL nem létezik\n"
+" -v, --verbose elmagyarázza, mi történik\n"
+" -x, --one-file-system az adott fájlrendszeren marad\n"
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"Alapértelmezésben a program kitalálja, hogy a FORRÃS fájl ritka-e vagy nem.\n"
+"Amennyiben igen, a megfelelő CÉL fájl is ritka lesz. Ez a --sparse=auto\n"
+"kapcsolónak megfelelő viselkedés. Megadhatod a --sparse=always kapcsolót\n"
+"ekkor a CÉL fájl ritka lesz, amennyiben a FORRÃS megfelelÅ‘ mennyiségű null\n"
+"bájtot tartalmaz.\n"
+"A --sparse=never kapcsolóval letilthatod a ritka fájlok létrehozását.\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"A biztonsági másolat kiterjesztése \"~\", hacsak nincs megadva a --suffix "
+"vagy\n"
+"a SIMPLE_BACKUP_SUFFIX használatával. A verziókövetés módját megválaszthatod "
+"a\n"
+"--backup kapcsolóval vagy a VERSION_CONTROL környezeti változó "
+"segítségével.\n"
+"Az érvényes értékek a következők:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off nem készít mentést (még a --backup megadása esetén sem)\n"
+" numbered, t számozott mentést készít\n"
+" existing, nil számozott, ha már létezik számozott változat, egyébként\n"
+" egyszerű\n"
+" simple, never mindig egyszerű biztonsági mentés\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Kivételt képez, amikor a cp biztonsági mentést készít a FORRÃSRÓL és a "
+"force\n"
+"és backup kapcsolók egyaránt meg vannak adva, továbbá a FORRÃS és a CÉL "
+"ugyanaz a szabályos fájl.\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "%s időinek megtartása meghiúsult"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "%s jogosultságainak megtartása sikertelen"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "%s könyvtár nem hozható létre"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s létezik, de nem könyvtár"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "%s elérése"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, c-format
+msgid "missing file operand"
+msgstr "hiányzó fájloperandus"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, c-format
+msgid "missing destination file operand after %s"
+msgstr "hiányzik a célfájl-operandus a következő után: %s"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+"A --target-directory (-t) és a --no-target-directory (-T)\n"
+"nem kombinálhatók"
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, c-format
+msgid "target %s is not a directory"
+msgstr "a megadott cél (%s) nem könyvtár"
+
+#: src/cp.c:697
+#, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "a --parents használatakor a cél könyvtár kell legyen"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr "a --reply kapcsoló elavult, használd helyette a -i vagy a -f kapcsolót"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, c-format
+msgid "multiple target directories specified"
+msgstr "több kimeneti célkönyvtár van megadva"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "nem lehet egyszerre hard linket és szimbolikus linket létrehozni"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "biztonsági mentés típusa"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "a bemenet eltűnt"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: a sorszám kívül esik a tartományon"
+
+#: src/csplit.c:709
+#, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: %s: a sorszám kívül esik a tartományon"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr " a(z) %s ismétlésben\n"
+
+#: src/csplit.c:755
+#, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: %s: a találat nem található"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "hiba a szabályos kifejezés keresésében"
+
+#: src/csplit.c:984
+#, c-format
+msgid "write error for %s"
+msgstr "írási hiba a következőhöz: %s"
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s a program egész értéket várt az elhatároló után"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: egy \"}\" szükséges az ismétlésszámban"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: egy egész érték szükséges a \"{\" és \"}\" között"
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: a záró \"%c\" elhatároló hiányzik"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: érvénytelen szabályos kifejezés: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: érvénytelen minta"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: a sorszámnak nagyobbnak kell lennie, mint 0"
+
+#: src/csplit.c:1172
+#, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "a(z) %s sorszám kisebb, mint a megelőző sorszám (%s)"
+
+#: src/csplit.c:1178
+#, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "figyelmeztetés: a(z) %s sorszám azonos a megelőző sorszámmal"
+
+#: src/csplit.c:1231
+#, c-format
+msgid "invalid format width"
+msgstr "érvénytelen formátumú szélesség"
+
+#: src/csplit.c:1252
+#, c-format
+msgid "invalid format precision"
+msgstr "érvénytelen formátumú pontosság"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "az utótagból hiányzik az átalakítás meghatározása"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "az utótagból hiányzik az átalakítás meghatározása: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "az utótagból hiányzik az átalakítás meghatározása: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "túl sok %% átalakítási meghatározás van az utótagban"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "az utótagból hiányzik a %% átalakítási meghatározás"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "érvénytelen szám: %s"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Használat: %s [KAPCSOLÓ]... FÃJL MINTA...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"A FÃJL MINTÃK által elválasztott darabjait az\"xx00\", \"xx01\", ..., "
+"fájlokba\n"
+"írja, valamint az egyes darabok bájtjai számát a szabványos kimenetre írja.\n"
+"\n"
+
+#: src/csplit.c:1486
+#, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=FORMÃTUM az sprintf FORMÃTUM használata a(z) %02d "
+"helyett\n"
+" -f, --prefix=ELÅTAG az ELÅTAG használata az \"xx\" helyett\n"
+" -k, --keep-files ne törölje kimeneti fájlokat hiba esetén\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=SZÃMJEGYEK a megadott számú számjegy használata a 2 "
+"helyett.\n"
+" -s, --quiet, --silent ne írja ki a kimeneti fájlok méretének "
+"összegét\n"
+" -z, --elide-empty-files üres kimeneti fájlok eltávolítása\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"Ha a FÃJL a -, akkor a szabványos bemenetet olvassa. A MINTA lehet:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" EGÉSZ másolás a megadott sorszámig, annak beleértése nélkül\n"
+" /REGEXP/[ELTOLÃS] másolás egy illeszkedÅ‘ sorig, annak beleértése nélkül \n"
+" %REGEXP%[ELTOLÃS] kihagyás egy illeszkedÅ‘ sorig, annak beleértése nélkül\n"
+" {EGÉSZ} az előző minta ismétlése a megadott számú alkalommal\n"
+" {*} az előző minta ismétlése ahányszor csak lehetséges\n"
+"\n"
+"A sor ELTOLÃS egy kötelezÅ‘ \"+\" vagy \"-\", amelyet egy pozitív egész "
+"követ.\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Használat: %s [KAPCSOLÓ]... [FÃJL]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"Minden egyes FÃJL kiválasztott részeinek kiírása a szabványos kimenetre.\n"
+"\n"
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=LISTA csak ezen bájtok kiválasztása\n"
+" -c, --characters=LISTA csak ezen karakterek kiválasztása\n"
+" -d, --delimiter=ELHAT az ELHAT használata a TAB helyett "
+"mezőelválasztóként\n"
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=LISTA csak ezen mezők kiválasztása; valamint bármely "
+"sor\n"
+" kiírása, amely nem tartalmaz "
+"elhatárolókaraktert,\n"
+" kivéve ha a -s kapcsoló meg van adva\n"
+" -n (figyelmen kívül marad)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+" --complement a kijelölt bájtok, karakterek vagy mezők "
+"halmazának\n"
+" kiegészítése.\n"
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited ne írja ki az elhatárolókat nem tartalmazó "
+"sorokat\n"
+" --output-delimiter=KARAKTERLÃNC a KARAKTERLÃNC használata a kimenet\n"
+" elhatárolójaként, az alapértelmezés a bemenet\n"
+" elhatárolójának használata\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+"\n"
+"A -b, -c vagy -f közül csak egyet használj. Minden egyes LISTA legalább\n"
+"egy, vesszőkkel elválasztott tartományból áll. A kiválasztott bemenet a\n"
+"beolvasás sorrendjében és pontosan egyszer kerül kiírásra.\n"
+
+#: src/cut.c:227
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"Minden egyes tartomány az alábbiak egyike:\n"
+"\n"
+" N N. bájt, karakter vagy mező, 1-től számítva\n"
+" N- az N. bájttól, karaktertől vagy mezőtől, a sor végéig\n"
+" N-M az N. bájttól, karaktertől vagy mezőtől, az M.-ig (azt is "
+"beleértve)\n"
+" -M az első bájttól, karaktertől vagy mezőtől az M.-ig (azt is "
+"beleértve)\n"
+"\n"
+"Ha a FÃJL nincs megadva vagy -, akkor a szabványos bemenetet olvassa.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "érvénytelen bájt- vagy mezőlista"
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr "a(z) %s bájteltolás túl nagy"
+
+#: src/cut.c:472
+#, c-format
+msgid "field number %s is too large"
+msgstr "a(z) %s mezőszám túl nagy"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "csak egy listatípus adható meg"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "az elhatárolónak egyetlen karakternek kell lennie"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "bájtok, karakterek vagy mezők listáját kell megadnod"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "bemeneti elhatároló csak mezőkön való működés esetén adható meg"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"el nem határolt sorok elnyomásának csak mezőkön \n"
+"\tvaló működés esetén van értelme"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "a mezőlista hiányzik"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "a pozíciólista hiányzik"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Használat: %s [KAPCSOLÓ]... [+FORMÃTUM]\n"
+" vagy: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"Az aktuális idÅ‘ megjelenítése a megadott FORMÃTUMBAN, vagy a rendszerdátum\n"
+"beállítása.\n"
+"\n"
+" -d, --date=KARAKTERLÃNC a KARAKTERLÃNC által leírt dátum megjelenítése\n"
+" az aktuális helyett\n"
+" -f, --file=DÃTUMFÃJL ugyanaz, mint a --date egyszer a DÃTUMFÃJL "
+"minden\n"
+" egyes sorára\n"
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+" -r, --reference=FÃJL a FÃJL utolsó módosítása dátumának "
+"megjelenítése\n"
+" -R, --rfc-2822 Időpont kiírása RFC 2822 formátumban.\n"
+" Például: Mon, 07 Aug 2006 12:34:56 -0600\n"
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+" --rfc-3339=IDÅMEGHAT dátum kiírása RFC 3339 formátumban.\n"
+" Az IDÅMEGHAT=\"date\", \"seconds\", vagy \"ns"
+"\"\n"
+" a jelzett pontosságú dátumhoz és időhöz.\n"
+" A dátum- és időösszetevőket egyetlen szóköz\n"
+" választja el: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=KARAKTERLÃNC a KARAKTERLÃNC által leírt idÅ‘ beállítása\n"
+" -u, --utc, --universal a Koordinált világidő kiírása vagy\n"
+" beállítása\n"
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"\n"
+"A FORMÃTUM vezérli a kimenetet. A második alak egyetlen érvényes\n"
+"kapcsolója a Koordinált világidőt adja meg. Az értelmezett sorozatok:\n"
+"\n"
+" %% egy % jel\n"
+" %a a területi beállítások rövidített napneve (például: v)\n"
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A a területi beállítások teljes napneve, (például: vasárnap)\n"
+" %b a területi beállítások rövidített hónapneve (például: Jan)\n"
+" %B a területi beállítások teljes hónapneve, (például: Január)\n"
+" %c a területi beállítások dátuma és ideje (2005. dec. 25., vasárnap,\n"
+" 15.48.38 CET)\n"
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C század; hasonló a %Y-hoz, kivéve az utolsó két számjegy kihagyását\n"
+" (például: 21)\n"
+" %d a hónap napja (például: 01)\n"
+" %D dátum; ugyanaz, mint %m/%d/%y\n"
+" %e a hónap napja, szóközökkel feltöltve; ugyanaz, mint a %_d\n"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+" %F teljes dátum; ugyanaz, mint a %Y-%m-%d\n"
+" %g az ISO hétszám évének utolsó két számjegye (lásd %G)\n"
+" %G az ISO hétszám éve (lásd %V); csak %V-vel hasznos\n"
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h ugyanaz, mint %b\n"
+" %H óra (00..23)\n"
+" %I óra (01..12)\n"
+" %j az év napja (001..366)\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k óra ( 0..23)\n"
+" %l óra ( 1..12)\n"
+" %m hónap (01..12)\n"
+" %M perc (00..59)\n"
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+" %n egy újsor\n"
+" %N nanomásodpercek (000000000..999999999)\n"
+" %p a területi beállítások nagybetűs AM vagy PM jelzője; üres ha "
+"ismeretlen\n"
+" %P mint a %p, de kisbetűkkel\n"
+" %r a területi beállítások szerinti idő, 12 órás (például: 00.55.52)\n"
+" %R 24 órás óra és perc, ugyanaz mint a %H:%M\n"
+" %s a \"00:00:00 1970-01-01 UTC\" óta eltelt másodpercek száma\n"
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+" %S másodperc (00..60)\n"
+" %t egy tab\n"
+" %T idő, ugyanaz , mint a %H:%M:%S\n"
+" %u a hét napja (1..7); az 1 a Hétfőt jelenti\n"
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U az év hetének száma, a hét első napja Vasárnap (00..53)\n"
+" %V az év hetének száma (ISO), a hét első napja Hétfő (01..53)\n"
+" %w a hét napja (0..6); a 0 Vasárnapot jelenti\n"
+" %W az év hetének száma, a hét első napja Hétfő (00..53)\n"
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x a területi beállítások dátumábrázolása (például 2006-01-12)\n"
+" %X a területi beállítások időábrázolása (például 01.02.32)\n"
+" %y az év utolsó két számjegye (00..99)\n"
+" %Y év\n"
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+" %z +óópp numerikus időzóna (például: -0400)\n"
+" %:z +óó:pp numerikus időzóna (például: -04:00)\n"
+" %::z +óó:pp:ss numerikus időzóna (például: -04:00:00)\n"
+" %:::z numerikus időzóna a :-tal a szükséges pontossághoz\n"
+" (például: -04, +05:30)\n"
+" %Z betűkből álló időzóna-rövidítés (például: CET)\n"
+"\n"
+"Alapértelmezésben a date a numerikus mezőket nullákkal tölti ki.\n"
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+"Az alábbi elhagyható jelölők követhetik a \"%\" jelet:\n"
+"\n"
+" - (kötőjel) ne töltse ki a mezőt\n"
+" _ (aláhúzás) kitöltés szóközökkel\n"
+" 0 (nulla) kitöltés nullákkal\n"
+" ^ nagybetűk használata, ha lehetséges\n"
+" # ellentétes (nagy<->kis) betűk használata, ha lehetséges\n"
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+"\n"
+"Ezután minden jelölő egy decimális, elhagyható mezőszélességgel jön, majd\n"
+"egy szintén elhagyható módosító, amely vagy az E, a területi beállítások\n"
+"alternatív ábrázolásának használatához, vagy O a területi beállítások\n"
+"alternatív numerikus szimbólumainak használatához, ha ezek elérhetők.\n"
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "szabványos bemenet"
+
+#: src/date.c:297 src/date.c:517
+#, c-format
+msgid "invalid date %s"
+msgstr "érvénytelen dátum: %s"
+
+#: src/date.c:408 src/date.c:442
+#, c-format
+msgid "multiple output formats specified"
+msgstr "több kimeneti formátum van megadva"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr ""
+"a dátumok megadására a kiíratáshoz használt kapcsolók egymást kölcsönösen "
+"kizárják"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr ""
+"az idő kiíratására és beállítására használt kapcsolók nem használhatók együtt"
+
+#: src/date.c:448
+#, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"a(z) %s argumentumból hiányzik egy kezdő \"+\";\n"
+"Ha egy kapcsolóval dátumot adsz meg, akkor minden nem kapcsoló\n"
+"argumentum egy \"+\" jellel kezdődő formátum-karakterlánc kell legyen."
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "nem állítható be a dátum"
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "a(z)%s időpont kívül esik a tartományon"
+
+#: src/dd.c:404
+#, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Használat: %s [OPERANDUS]...\n"
+" vagy: %s KAPCSOLÓ\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"Fájl másolása, az operandusoknak megfelelő átalakítással és formázással.\n"
+"\n"
+" bs=BÃJT ibs=BÃJT és obs=BÃJT kényszerítése\n"
+" cbs=BÃJT BÃJT bájtot alakít át alkalmanként\n"
+" conv=KULCSSZÓ a vesszővel elválasztott szimbólumlistának megfelelően\n"
+" alakítja át a fájlt\n"
+" count=BLOKK csak BLOKK bemeneti blokkot másol\n"
+" ibs=BÃJT egyszerre BÃJT bájtot olvas be\n"
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=FÃJL a FÃJLBÓL olvas a szabványos bemenet helyett\n"
+" iflag=JELÖLÅK a vesszÅ‘vel elválasztott szimbólumlistának megfelelÅ‘en "
+"olvas\n"
+" obs=BÃJT egyszerre BÃJT bájtot ír ki\n"
+" of=FÃJL a FÃJLBA ír a szabványos kimenet helyett\n"
+" oflag=JELÖLÅK a vesszÅ‘vel elválasztott szimbólumlistának megfelelÅ‘en ír\n"
+" seek=BLOKK ennyi obs-méretű blokkot hagy ki a kimenet elején\n"
+" skip=BLOKK ennyi ibs-méretű blokkot hagy ki a bemenet elején\n"
+" status=noxfer átviteli statisztika elnyomása\n"
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"A BLOKKHOZ és a BÃJTHOZ a következÅ‘ szorzó-utótagokat adhatod meg:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, és ugyanígy T, P, E, Z, Y.\n"
+"\n"
+"KULCSSZÓ szimbólumok az alábbiak lehetnek:\n"
+"\n"
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii EBCDIC-ből ASCII-ba\n"
+" ebcdic ASCII-ból EBCDIC-be\n"
+" ibm ASCII-ból módosított EBCDIC-be\n"
+" block az újsorra végződő rekordokat cbs méretűre tölti ki szóközökkel\n"
+" unblock a sorvégi szóközöket cbs méretű rekordokban soremelésre cseréli\n"
+" lcase nagybetűről kisbetűre cserél\n"
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+" nocreat ne hozza létre a kimeneti fájlt\n"
+" excl a működés visszautasítása, ha kimeneti fájl már létezik\n"
+" notrunc nem csonkolja a kimeneti fájlt\n"
+" ucase kisbetűről nagybetűre cserél\n"
+" swab minden bemeneti bájtpár sorrendjét megcseréli\n"
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+" noerror folytatás olvasási hibák után\n"
+" sync minden bemeneti blokkot NULL bájtokkal ibs méretűre egészít ki;\n"
+" ha a \"block\" vagy \"unblock\" is szerepel a listában,\n"
+" akkor a feltöltéshez NULL helyett szóközt használ\n"
+" fdatasync a kimeneti fájladatok kiírása fizikailag a befejezés előtt\n"
+" fsync hasonló az előzőhöz, de a metaadatokat is kiírja\n"
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+"\n"
+"A JELÖLÅK az alábbiak lehetnek:\n"
+"\n"
+" append hozzáfűzési mód (csak kimenet esetén van értelme; javasolt a\n"
+" conv=notrunc)\n"
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr " direct közvetlen I/O használata az adatokhoz\n"
+
+#: src/dd.c:468
+msgid " directory fail unless a directory\n"
+msgstr " directory működés csak könyvtárakon\n"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr " dsync szinkronizált I/O használata az adatokhoz\n"
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr " sync hasonló az előzőhöz, de a metaadatok esetén is érvényes\n"
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr " nonblock nem blokkoló I/O használata\n"
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr " noatime ne frissítse a hozzáférési időt\n"
+
+# fixme
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr " noctty ne rendelje hozzá a vezérlő terminált fájlból\n"
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr " nofollow ne kövesse a szimbolikus linkeket\n"
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr " nolinks többszörös linkek esetén a működés visszautasítása\n"
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr " binary bináris I/O használata az adatokhoz\n"
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr " text szöveges I/O használata az adatokhoz\n"
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+"\n"
+"Egy %s szignál küldésével egy futó \"dd\" folyamatnak kiírathatja az\n"
+"addig beolvasott és kiírt rekordok számát a szabványos hibakimenetre,\n"
+"majd folytathatja a másolást.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 beolvasott rekord\n"
+" 18335302+0 kiírt rekord\n"
+" 9387674624 bájt (9.4 GB) másolva, 34.6279 másodperc, 271 MB/mp\n"
+"\n"
+"A kapcsolók:\n"
+"\n"
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+"%<PRIuMAX>+%<PRIuMAX> beolvasott rekord\n"
+"%<PRIuMAX>+%<PRIuMAX> kiírt rekord\n"
+
+#: src/dd.c:553
+#, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "%<PRIuMAX> levágott rekord\n"
+msgstr[1] "%<PRIuMAX> levágott rekord\n"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] "%<PRIuMAX> bájt (%s) másolva"
+msgstr[1] "%<PRIuMAX> bájt (%s) másolva"
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr "Végtelen B"
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ", %g mp, %s/mp\n"
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "%s bemeneti fájl lezárása"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "%s kimeneti fájl lezárása"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "írás a következőbe: %s"
+
+#: src/dd.c:886
+#, c-format
+msgid "unrecognized operand %s"
+msgstr "ismeretlen operandus: %s"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "érvénytelen átalakítás: %s"
+
+#: src/dd.c:900
+#, c-format
+msgid "invalid input flag: %s"
+msgstr "érvénytelen bemeneti jelölő: %s"
+
+#: src/dd.c:903
+#, c-format
+msgid "invalid output flag: %s"
+msgstr "érvénytelen kimeneti jelölő: %s"
+
+#: src/dd.c:906
+#, c-format
+msgid "invalid status flag: %s"
+msgstr "érvénytelen állapotjelölő: %s"
+
+#: src/dd.c:942
+#, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "ismeretlen operandus: %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "érvénytelen szám: %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr "az {ascii,ebcdic,ibm} közül csak egy adható meg egyszerre"
+
+#: src/dd.c:973
+#, c-format
+msgid "cannot combine block and unblock"
+msgstr "a block és az unblock nem adható meg egyszerre"
+
+#: src/dd.c:975
+#, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "az lcase és az ucase nem adható meg egyszerre"
+
+#: src/dd.c:977
+#, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "az excl és a nocreat nem adható meg egyszerre"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"figyelmeztetés: lseek kernel hiba kivédése a következő fájlnál:\n"
+"%s (mt_type=0x%0lx)\n"
+"A <sys/mtio.h> fájlban megtalálod a típusok listáját"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, c-format
+msgid "%s: cannot seek"
+msgstr "%s: nem lehet pozicionálni"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr "eltolástúlcsordulás a(z) %s fájl olvasása közben"
+
+#: src/dd.c:1229
+#, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "figyelmeztetés: érvénytelen fájleltolás a meghiúsult olvasás után"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr "a kernelhiba nem kerülhető meg"
+
+#: src/dd.c:1376
+#, c-format
+msgid "setting flags for %s"
+msgstr "%s jelölőinek beállítása"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr "az fdatasync meghiúsult a következőhöz: %s"
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr "az fsync meghiúsult a következőhöz: %s"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "%s megnyitása"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+"Az eltolás túl nagy: nem lehet seek=%<PRIuMAX> (%lu bájt) blokk\n"
+"hosszára csonkítani"
+
+#: src/dd.c:1730
+#, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "csonkítás a(z) %<PRIuMAX>. bájtnál a következő kimeneti fájlban: %s"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "Fájlrendszer Típus"
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "Fájlrendszer "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr "Inode-ok IFogl. ISzab. IFo.%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Méret Fogl. Szab. Fo.%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Méret Fogl. Szab. Fo.%%"
+
+#: src/df.c:165
+#, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %s-blokk Fogl. Szabad Kapacitás"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr "%4s-blokk Foglalt Szabad Fo.%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Csatl. pont\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "aktuális könyvtár beolvasása sikertelen"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "nem lehet a következő könyvtárba lépni: %s"
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "nem lehet az aktuális könyvtárat elérni (most %s)"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"Arról a fájlrendszerrÅ‘l jelenít meg adatokat, ahol a megadott FÃJLOK\n"
+"találhatók, vagy alapértelmezésben minden fájlrendszerről.\n"
+"\n"
+
+#: src/df.c:749
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all üres fájlrendszereket is listázza\n"
+" -B, --block-size=MÉRET MÉRET bájtos blokkok használata\n"
+" -h, --human-readable ember által olvasható formátum (például 1K 234M "
+"2G)\n"
+" -H, --si ugyanaz mint előbb, de 1000-es szorzó 1024-es "
+"helyett\n"
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes inode információk blokkhasználat helyett\n"
+" -k ugyanaz, mint a --block-size=1K\n"
+" -l, --local csak a helyi fájlrendszereket írja ki\n"
+" --no-sync nem adja ki a sync parancsot a használati "
+"információk\n"
+" beolvasása előtt (alapértelmezett)\n"
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability POSIX kompatibilis kimenet\n"
+" --sync kiadja a sync parancsot a használati információk\n"
+" beolvasása előtt\n"
+" -t, --type=TÃPUS csak az adott TÃPUSÚ fájlrendszereket írja ki\n"
+" -T, --print-type fájlrendszertípusok kiírása\n"
+" -x, --exclude-type=TÃPUS a megadott TÃPUSÚ fájlrendszereket nem listázza "
+"ki\n"
+" -v (figyelmen kívül marad)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"A MÉRET lehet (egy egész, amelyet választhatóan követ) a következők egyike:\n"
+"kB 1000, K 1024, MB 1,000,000, M 1,048,576 és ugyanígy G, T, P, E, Z, Y.\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr "a --kilobytes kapcsoló elavult, használd a -k kapcsolót helyette"
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr ""
+"%s típusú fájlrendszer ki is van jelölve, de figyelmen kívül is van hagyva"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Figyelmeztetés: "
+
+#: src/df.c:943
+#, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "a csatlakoztatott fájlrendszerek tábláját %s nem tudja olvasni"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr "nem került feldolgozásra fájlrendszer"
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Használat: %s [KAPCSOLÓ]... [FÃJL]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Kiírja a megfelelő shell parancsot az LS_COLOR környezeti \n"
+"változó beállításához.\n"
+"\n"
+"Kimeneti formátum megállapítása\n"
+" -b, --sh, --bourne-shell Bourne shell kód az LS_COLORS beállításához\n"
+" -c, --csh, --c-shell C shell kód az LS_COLORS beállításához\n"
+" -p, --print-data-base alapértelmezés kiírása\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"Ha a FÃJL meg van adva, akkor beolvassa azt és megállapítja, hogy melyik\n"
+"fájltípushoz milyen színt használjon. Ha nincs, akkor a program az\n"
+"alapértelmezett adatbázist használja. Ha többet akarsz tudni a fájl\n"
+"formátumáról, akkor futtasd a \"dircolors --print-database\"-t.\n"
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s:%lu: érvénytelen sor; a második token hiányzik"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu: a(z) %s kulcsszó ismeretlen"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<belső>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"a dircolors belső adatbázisának kilistázása és a shell szintaxis\n"
+"kiíratása két egymást kölcsönösen kizáró kapcsoló"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+"a fájloperandusok nem használhatók együtt a --print-database (-p) "
+"kapcsolóval."
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "nincs SHELL változó beállítva és nem adtad meg a shell típusát"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Használat: %s NÉV\n"
+" vagy: %s KAPCSOLÓ\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"Kiírja a NEVET az utolsó / összetevőjének eltávolítása után; ha a NÉV nem\n"
+"tartalmaz \"/\" jeleket, akkor egy \".\" lesz a kimenet (ami az aktuális\n"
+"könyvtárat jelenti).\n"
+"\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+"\n"
+"Példák:\n"
+" %s /usr/bin/sort A \"/usr/bin\" kiírása.\n"
+" %s stdio.h A \".\" kiírása.\n"
+
+#: src/du.c:279 src/wc.c:108
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Használat: %s [KAPCSOLÓ]... FÃJL...\n"
+" vagy: %s [KAPCSOLÓ]... --files0-from=F\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"Összefoglalja minden FÃJL lemezhasználatát, könyvtárakra rekurzívan.\n"
+"\n"
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+" -a, --all minden fájl adatait kiírja, nem csak a könyvtárakat\n"
+" --apparent-size a tényleges méretet írja ki a lemezhasználat "
+"helyett,\n"
+" jóllehet a tényleges méret általában kisebb, "
+"nagyobb\n"
+" is lehet a lyukak miatt a (ritka) fájlokban, a "
+"belső\n"
+" töredezettség, indirekt blokkok és hasonlók miatt\n"
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+" -B --block-size=MÉRET MÉRET bájtos blokkokat használ\n"
+" -b, --bytes ugyanaz, mint a \"--apparent-size --block-size=1\"\n"
+" -c, --total összesítést ír ki\n"
+" -D, --dereference-args szimbolikus linkek esetén a fájlokat számolja\n"
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+" --files0-from=F az F fájlban megadott, NULL végű fájlnevek\n"
+" lemezhasználatának összegzése\n"
+" -H mint a --si, de kiad egy figyelmeztetést, jelentése\n"
+" hamarosan megváltozik és azonos lesz a\n"
+" --dereference-args (-D) jelentésével\n"
+" -h, --human-readable ember által olvasható formátum (például: 1K 234M "
+"2G)\n"
+" --si mint előbb, de 1000-es szorzó 1024-es helyett\n"
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+" -k mint a --block-size=1K\n"
+" -l, --count-links többször számolja a méretet, ha hard linkek vannak\n"
+" -m mint a --block-size=1M\n"
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference mindig követi a szimbolikus linkeket\n"
+" -P, --no-dereference ne kövesse a szimbolikus linkeket\n"
+" (ez az alapértelmezés)\n"
+" -0, --null minden egyes új sort a 0 bájttal fejez be újsor "
+"helyett\n"
+" -S, --separate-dirs alkönyvtárakat nem számolja bele\n"
+" -s, --summarize argumentumonként egy összeget mutat\n"
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system a más fájlrendszeren lévő könyvtárakat kihagyja\n"
+" -X FÃJL, --exclude-from=FÃJL\n"
+" a FÃJLBAN található mintákra illeszkedÅ‘ fájlokat "
+"kihagyja\n"
+" --exclude=MINTA a MINTÃRA illeszkedÅ‘ nevű fájlokat kihagyja\n"
+" --max-depth=N csak akkor írja ki az összesítést egy adott "
+"könyvtárra\n"
+" (vagy fájlra a --all esetén), ha az legfeljebb N\n"
+" szinttel van a parancssorban megadott könyvtár "
+"alatt.\n"
+" A --max-depth=0 ugyanaz, mint a --summarize\n"
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+" --time a könyvtár bármely fájljának vagy alkönyvtárának "
+"utolsó\n"
+" módosítása idejének kiírása\n"
+" --time=SZÓ az idő mutatása a SZÓNAK megfelelően, a módosítási "
+"idő\n"
+" helyett: atime, access, use, ctime vagy status\n"
+" --time-style=STÃLUS az idÅ‘ megjelenítése a STÃLUSNAK megfelelÅ‘en:\n"
+" full-iso, long-iso, iso, +FORMÃTUM. A FORMÃTUM "
+"a\n"
+" \"date\" parancsnál megadottakhoz hasonlóan "
+"kerül\n"
+" értelmezésre\n"
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "összesen"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+"FIGYELMEZTETÉS: használja az --si kapcsolót a -H helyett; a -H jelentése\n"
+"hamarosan megváltozik és azonos lesz a --dereference-args (-D) jelentésével"
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "érvénytelen maximális mélység: %s"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr "a --megabytes kapcsoló elavult, használd a - m kapcsolót helyette"
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr ""
+"nem lehet egyszerre összesítést kérni és minden bejegyzést megjeleníteni"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr ""
+"figyelmeztetés: az összesítés megegyezik a --max-depth=0 kapcsoló "
+"használatával"
+
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr ""
+"figyelmeztetés: az összesítés kérése ütközik a --max-depth=%lu kapcsolóval"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr "A fájloperandusok nem használhatók együtt a --files0-from kapcsolóval."
+
+#: src/du.c:960 src/wc.c:662
+#, c-format
+msgid "cannot read file names from %s"
+msgstr "nem olvashatók fájlnevek a következőből: %s"
+
+#: src/du.c:1000 src/du.c:1003
+msgid "invalid zero-length file name"
+msgstr "érvénytelen nulla hosszúságú fájlnév"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Használat: %s [KAPCSOLÓ]... [KARAKTERLÃNC]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+"A KARAKTERLÃNC(OK) kiírása a szabványos kimenetre.\n"
+"\n"
+" -n ne írja ki a befejező újsort\n"
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+" -e a visszaper escape-k értelmezésének bekapcsolása\n"
+" (alapértelmezett)\n"
+" -E a visszaper escape-k értelmezésének kikapcsolása\n"
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"A -e nélkül az alábbi sorozatok kerülnek felismerésre:\n"
+"\n"
+" \\NNN a karakter, amely ASCII kódja NNN (oktálisan)\n"
+" \\\\ visszaper\n"
+" \\a riadó (BEL)\n"
+" \\b karaktertörlés visszafelé\n"
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c záró újsor elnyomása\n"
+" \\f lapdobás\n"
+" \\n új sor\n"
+" \\r kocsivissza\n"
+" \\t vízszintes tab\n"
+" \\v függőleges tab\n"
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Használat: %s [KAPCSOLÓ]... [-] [NÉV=ÉRTÉK]... [PARANCS [ARG]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Minden egyes NÉVHEZ beállítja az ÉRTÉKET a környezetben és futtatja a "
+"PARANCSOT.\n"
+"\n"
+" -i, --ignore-environment indulás üres környezettel\n"
+" -u, --unset=NAME változó eltávolítása a környezetből\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"Egy egyszerű - maga után vonja a -i kapcsolót. Ha nincs PARANCS megadva, "
+"akkor\n"
+"kiírja az eredményül kapott környezetet.\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"A tabokat minden egyes FÃJLBAN szóközökké alakítja és kiírja a szabványos\n"
+"kimenetre. Ha a FÃJL nincs megadva, vagy -, akkor a szabványos bemenetet\n"
+"olvassa.\n"
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial ne alakítsa át a tabokat nem üreshely karakterek után\n"
+" -t, --tabs=SZÃM a tabok SZÃM karakter szélesek legyenek, ne pedig 8\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+" -t, --tabs=LISTA az explicit tab pozíciók vesszőkkel elválasztott\n"
+" listájának használata\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr "a tab méret túl nagy: %s"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "a tabméret érvénytelen karaktereket tartalmaz: %s"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "a tabméret nem lehet 0"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "a tabméreteknek növekedniük kell"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, c-format
+msgid "input line is too long"
+msgstr "a bemeneti sor túl hosszú"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Használat: %s KIFEJEZÉS\n"
+" vagy: %s KAPCSOLÓ\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"\n"
+"A KIFEJEZÉS értékének kiírása a szabványos kimenetre. Egy üres sor alább \n"
+"növekvő precedenciájú csoportokat választ el. A KIFEJEZÉS lehet:\n"
+"\n"
+" ARG1 | ARG2 ARG1, ha az nem null vagy 0, egyébként ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1, ha egyik argumentum sem null vagy 0, egyébként 0\n"
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"\n"
+" ARG1 < ARG2 ARG1 kisebb, mint ARG2\n"
+" ARG1 <= ARG2 ARG1 kisebb vagy egyenlő ARG2\n"
+" ARG1 = ARG2 ARG1 egyenlő ARG2\n"
+" ARG1 != ARG2 ARG1 nem egyenlő ARG2\n"
+" ARG1 >= ARG2 ARG1 nagyobb vagy egyenlő ARG2\n"
+" ARG1 > ARG2 ARG1 nagyobb mint ARG2\n"
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+"\n"
+" ARG1 + ARG2 ARG1 és ARG2 aritmetikai összege\n"
+" ARG1 - ARG2 ARG1 és ARG2 aritmetikai különbsége\n"
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+"\n"
+" ARG1 * ARG2 ARG1 és ARG2 aritmetikai szorzata\n"
+" ARG1 / ARG2 ARG1 és ARG2 aritmetikai hányadosa\n"
+" ARG1 % ARG2 ARG1 és ARG2 aritmetikai maradéka\n"
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"\n"
+" KARAKTERLÃNC : REGEXP a REGEXP horgonyzott mintaillesztése a "
+"KARAKTERLÃNCRA\n"
+"\n"
+" match KARAKTERLÃNC REGEXP ugyanaz, mint a KARAKTERLÃNC : REGEXP\n"
+" substr KARAKTERLÃNC POZ HOSSZ a KARAKTERLÃNC részkarakterlánca, a POZ 1-"
+"től\n"
+" számítva\n"
+" index KARAKTERLÃNC KARAKTEREK a KARAKTEREK elÅ‘fordulásának indexe a\n"
+" KARAKTERLÃNCBAN, vagy 0\n"
+" length KARAKTERLÃNC a KARAKTERLÃNC hossza\n"
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+" + JELSOR a JELSOR értelmezése karakterláncként, még ha "
+"az\n"
+" egy kulcsszó is, mint a \"match\", vagy "
+"operátor\n"
+" mint a \"/\"\n"
+"\n"
+" ( KIFEJEZÉS ) a KIFEJEZÉS értéke\n"
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"Ne feledd, hogy sok operátort escape-elni vagy idézőjelek közé kell tenni\n"
+"parancsértelmezőkhöz. Az összehasonlítások aritmetikaiak, ha mindkét ARG "
+"szám,\n"
+"különben lexikografikusak. A mintaillesztések az illeszkedő karakterláncot\n"
+"adják vissza a \\( és \\) között, vagy nullértéket; ha a \\( és \\) "
+"nincsenek\n"
+"használva, akkor az illeszkedő karakterek számát vagy 0-t adnak vissza.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+"\n"
+"A kilépési állapot 0, ha a KIFEJEZÉS nem null vagy 0 értékű, 1, ha a "
+"KIFEJEZÉS\n"
+"null vagy 0 értékű, 2, ha a KIFEJEZÉS szintaktikailag érvénytelen és 3, ha\n"
+"hiba történt.\n"
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "szintaktikai hiba"
+
+#: src/expr.c:468 src/ptx.c:292
+#, c-format
+msgid "error in regular expression matcher"
+msgstr "hiba a szabályos kifejezés illesztésében"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "nem numerikus argumentum"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "osztás nullával"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Használat: %s [SZÃM]...\n"
+" vagy: %s KAPCSOLÓ\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"Kiírja minden egyes SZÃM prímtényezÅ‘it.\n"
+"\n"
+
+#: src/factor.c:85
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+"Kiírja az összes megadott egész SZÃM prímtényezÅ‘it. Ha nincsenek "
+"argumentumok\n"
+"megadva a parancssorban, akkor a szabványos bemenetről kerülnek "
+"beolvasásra.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "a(z) %s túl nagy"
+
+#: src/factor.c:158
+#, c-format
+msgid "%s is not a valid positive integer"
+msgstr "%s nem egy érvényes pozitív egész"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Használat: %s [-SZÃMJEGYEK] [KAPCSOLÓ]... [FÃJL]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"A FÃJLOK minden egyes bekezdésének újraformázása és szabványos kimenetre "
+"írása.\n"
+"Ha a FÃJL nincs megadva, vagy -, akkor a szabványos bemenetet olvassa.\n"
+"\n"
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin az első két sor behúzásának megtartása\n"
+" -p, --prefix=KARAKTERLÃNC csak a KARAKTERLÃNC kezdetű sorok "
+"újraformázása,\n"
+" az előtag újraformázott sorokhoz való "
+"ismételt\n"
+" csatolásával\n"
+" -s, --split-only hosszú sorok szétvágása, de újratöltés nélkül\n"
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph az első sor behúzása különbözik a másodikétól\n"
+" -u, --uniform-spacing egy szóköz szavak között, kettő mondatok után\n"
+" -w, --width=SZÉLESSÉG maximum sorszélesség (alapértelmezés 75 oszlop)\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+"a(z) -- %c kapcsoló érvénytelen; a -WIDTH csak akkor ismerhető fel, ha az "
+"az \n"
+"első kapcsoló; használja helyette a -w N kapcsolót"
+
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr "érvénytelen szélesség: %s"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"Minden egyes FÃJL (alapértelmezésben a szabványos bemenet) bemeneti "
+"sorainak\n"
+"tördelése és szabványos kimenetre írása.\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes bájtok számolása az oszlopok helyett\n"
+" -s, --spaces tördelés szóközöknél\n"
+" -w, --width=SZÉLESSÉG SZÉLESSÉG darab oszlop használata 80 helyett\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, c-format
+msgid "invalid number of columns: %s"
+msgstr "érvénytelen oszlopszám: %s"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Minden egyes FÃJL elsÅ‘ 10 sorának kiírása a szabványos kimenetre.\n"
+"Több FÃJL esetén mindegyiket egy fejléc elÅ‘zi meg, amely megadja a fájl "
+"nevét.\n"
+"Ha a FÃJL nincs megadva, vagy -, akkor a szabványos bemenetet olvassa.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+" -c, --bytes=[-]N minden egyes fájl első N bájtjának kiírása;\n"
+" a kezdő \"-\" megadásakor minden egyes fájl "
+"utolsó\n"
+" N bájtja kivételével az összeset kiírja\n"
+" -n, --lines=[-]N az első N sor kiírása az első 10 helyett;\n"
+" a kezdő \"-\" megadásakor minden egyes fájl "
+"utolsó\n"
+" N sora kivételével az összeset kiírja\n"
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent soha ne írja ki a fájlneveket megadó fejléceket\n"
+" -v, --verbose mindig írja ki a fájlneveket megadó fejléceket\n"
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"Az N rendelkezhet egy szorzó utótaggal: b 512, k 1024, m 1024*1024.\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "hiba %s olvasása közben"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "hiba %s írása közben"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr "%s: a fájl túl sokat zsugorodott"
+
+#: src/head.c:230 src/head.c:1046
+#, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s: a bájtszám túl nagy"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: nem lehet lseek-elni az eredeti pozícióra"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: nem lehet a(z) %s eltolásra pozicionálni"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "nem lehet újrapozicionálni %s fájlmutatóját"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s olyan nagy, hogy nem ábrázolható"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "sorok száma"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "bájtok száma"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "érvénytelen sorszám"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "érvénytelen bájtszám"
+
+#: src/head.c:976 src/head.c:1034
+#, c-format
+msgid "invalid trailing option -- %c"
+msgstr "érvénytelen bevezető kapcsoló -- %c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Használat: %s\n"
+" vagy: %s KAPCSOLÓ\n"
+"Kiírja az aktuális gép numerikus (hexadecimális) azonosítóját.\n"
+"\n"
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Használat: %s [NÉV]\n"
+" vagy: %s KAPCSOLÓ\n"
+"Az aktuális rendszer gépnevének kiíratása vagy beállítása.\n"
+"\n"
+
+#: src/hostname.c:103
+#, c-format
+msgid "cannot set name to %s"
+msgstr "a név nem állítható be a következőre: %s"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+"a gépnév nem állítható be; ebből a rendszerből hiányzik ez a funkcionalitás"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "a gépnév nem határozható meg"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Használat: %s [KAPCSOLÓ]... [FELHASZNÃLÓNÉV]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Információk kiírása a FELHASZNÃLÓNÉVRÅL vagy az aktuális felhasználóról.\n"
+"\n"
+" -a figyelmen kívül marad, a más verziókkal való "
+"kompatibilitáshoz\n"
+" -g, --group csak a hatásos csoportazonosító kiírása\n"
+" -G, --groups az összes csoportazonosító kiírása\n"
+" -n, --name egy név kiírása egy szám helyett, az -ugG kapcsolókhoz\n"
+" -r, --real a valódi azonosító kiírása a hatásos helyett, az -ugG\n"
+" kapcsolókkal\n"
+" -u, --user csak a hatásos felhasználói azonosító kiírása\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"KAPCSOLÓK nélkül az azonosított információk egy hasznos halmazát írja ki.\n"
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "nem lehet egyszerre csak a felhasználót és csak a csoportot kiírni"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr ""
+"csak nevek vagy valódi azonosítók nem írhatók ki az alapértelmezett "
+"formátumban"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Nincs ilyen felhasználó"
+
+#: src/id.c:205
+#, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "nem található a név a(z) %lu felhasználói azonosítóhoz"
+
+#: src/id.c:229
+#, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "nem található a név a(z) %lu csoportazonosítóhoz"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "a kiegészítő csoportlista nem kérhető le"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " csoportok="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr "könyvtár telepítésénél nem használható a \"strip\" kapcsoló"
+
+#: src/install.c:321
+#, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "könyvtár telepítésénél nem engedélyezett a célkönyvtár"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "érvénytelen mód: %s"
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "%s tulajdonosa nem változtatható meg"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "%s időbélyegei nem állíthatók be"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "a fork() rendszerhívás sikertelen"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "a strip futtatása sikertelen"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "várakozás a következőre: %s [-d]"
+
+#: src/install.c:572
+#, fuzzy, c-format
+msgid "strip process terminated abnormally"
+msgstr "A(z) %s [-d] váratlanul befejeződött"
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "érvénytelen felhasználó: %s"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "%s könyvtár létrehozása"
+
+#: src/install.c:651
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Használat: %s [KAPCSOLÓ]... [-T] FORRÃS CÉL\n"
+" vagy: %s [KAPCSOLÓ]... FORRÃS... KÖNYVTÃR\n"
+" vagy: %s [KAPCSOLÓ]... -t KÖNYVTÃR FORRÃS...\n"
+" vagy: %s [KAPCSOLÓ]... -d KÖNYVTÃR...\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"Az elsÅ‘ két alaknál a FORRÃST a CÉLRA másolja, több FORRÃS esetén a létezÅ‘\n"
+"KÖNYVTÃRBA másolja a fájlokat. Másolás közben beállítja a fájlok\n"
+"jogosultságait és a tulajdonosát/csoportját.\n"
+"A negyedik alaknál létrehozza az adott KÖNYVTÃRAK minden elemét.\n"
+"\n"
+
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup[=CONTROL] minden létező célfájlról mentést készít\n"
+" -b mint a --backup, de nem fogad el argumentumot\n"
+" -c (figyelmen kívül marad)\n"
+" -d, --directory minden argumentum könyvtárnév; a megadott könyvtárak\n"
+" minden elemét létrehozza\n"
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D a CÉL minden elemét létrehozza, kivéve az utolsót,\n"
+" majd a FORRÃST CÉLRA másolja; elsÅ‘ alakkal hasznos\n"
+" -g, --group=CSOPORT a CSOPORTOT állítja be a folyamat csoportja helyett\n"
+" -m, --mode=MÓD a jogosultságot MÓDRA állítja (mint a chmodnál),\n"
+" rwxr-xr-x helyett\n"
+" -o, --owner=TULAJDONOS tulajdonos beállítása (csak root)\n"
+
+#: src/install.c:681
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps a FORRÃS elérési és módosítási idejét állítja\n"
+" be a megfelelő célfájlokon\n"
+" -s, --strip eltávolítja a szimbólum táblát, csak 1. és\n"
+" 2. alaknál érvényes\n"
+" -S, --suffix=KITERJESZTÉS a biztonsági másolat szokásos kiterjesztésének\n"
+" felülbírálása\n"
+" -t, --target-directory=KÖNYVTÃR az összes FORRÃS argumentum másolása a\n"
+" KÖNYVTÃRBA\n"
+" -T, --no-target-directory a CÉL kezelése normál fájlként\n"
+" -v, --verbose minden létrehozott könyvtár nevét kiírja\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"A biztonsági másolat kiterjesztése \"~\", hacsak nincs megadva a --suffix "
+"vagy\n"
+"a SIMPLE_BACKUP_SUFFIX használatával. A verziókövetés módját megválaszthatod "
+"a\n"
+"--backup kapcsolóval vagy a VERSION_CONTROL környezeti változó "
+"segítségével.\n"
+"Az érvényes értékek a következők:\n"
+"\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"Minden egyes azonos összekapcsolási mezővel rendelkező bementi sorpárhoz "
+"kiír\n"
+"egy sort a szabványos kimenetre. Az alapértelmezett összekapcsolási mező "
+"az \n"
+"elsÅ‘, üreshely karakterekkel elválasztva. Ha a FÃJL1 vagy FÃJL2 (nem "
+"mindkettő)\n"
+"a -, akkor a szabványos bemenetről olvas.\n"
+"\n"
+" -a FÃJLSZÃM a FÃJLSZÃM fájlból származó nem párosítható sorok "
+"kiírása\n"
+" ahol a FÃJLSZÃM 1 vagy 2, a FÃJL1-nek vagy a FÃJL2-"
+"nek\n"
+" megfelelően. \n"
+" -e ÜRES a hiányzó bemeneti mezők helyettesítése az ÜRESSEL\n"
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case kis- és nagybetűk közti különbség figyelmen kívül "
+"hagyása\n"
+" mezők összehasonlításakor\n"
+" -j MEZÅ azonos a következÅ‘vel: \"-1 MEZÅ -2 MEZÅ\"\n"
+" -o FORMÃTUM a FORMÃTUM alkalmazása a kimeneti sor előállításánál\n"
+" -t KARAKTER a KARAKTER használata a bementi és kimeneti mező\n"
+" elválasztójaként\n"
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v FÃJLSZÃM mint a -a FÃJLSZÃM, de elnyomja az összekapcsolt "
+"kimeneti\n"
+" sorokat\n"
+" -1 MEZŠösszekapcsolás az 1. fájl ezen MEZÅJE alapján\n"
+" -2 MEZŠösszekapcsolás a 2. fájl ezen MEZÅJE alapján\n"
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"Hacsak a -t KARAKTER nincs megadva, a kezdő üreshelyek választják el a "
+"mezőket\n"
+"és figyelmen kívül maradnak, különben a mezőket a KARAKTER választja el. A \n"
+"MEZÅK 1-tÅ‘l kezdve vannak sorszámozva. A FORMÃTUM egy vagy több vesszÅ‘vel "
+"vagy\n"
+"üreshellyel elválasztott specifikáció, mindegyik \"FÃJLSZÃM.MEZÅ\" vagy 0.\n"
+"Az alapértelmezett FORMÃTUM kiírja az összekapcsolási mezÅ‘t, a FÃJL1 "
+"maradék\n"
+"mezÅ‘it és a FÃJL2 maradék mezÅ‘it, mindet a KARAKTERREL elválasztva.\n"
+"\n"
+"Fontos: a FÃJL1-nek és a FÃJL2-nek az összekapcsolási mezÅ‘k szerint kell\n"
+"rendezve lennie.\n"
+"Ha például a join nem rendelkezik kapcsolókkal, akkor használhatja a\n"
+"\"sort -k 1b,1\" parancsot.\n"
+
+#: src/join.c:617 src/join.c:812
+#, c-format
+msgid "invalid field number: %s"
+msgstr "érvénytelen mezőszám: %s"
+
+#: src/join.c:638 src/join.c:647
+#, c-format
+msgid "invalid field specifier: %s"
+msgstr "érvénytelen mezőmeghatározás: %s"
+
+#: src/join.c:654
+#, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "érvénytelen mezőszám a mezőspecifikációban: %s"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr "inkompatibilis összekapcsolási mezők: %lu, %lu"
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr "ütköző üres-mező helyettesítési karakterlánc"
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr "üres tab"
+
+#: src/join.c:870 src/sort.c:3031
+#, c-format
+msgid "multi-character tab %s"
+msgstr "többkarakteres tab: %s"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr "nem kompatibilis tabok"
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "mindkét fájl nem lehet a szabványos bemenet"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"Használat: %s [-s SZIGNÃL | -SZIGNÃL] PID...\n"
+" vagy: %s -l [SZIGNÃL]...\n"
+" vagy: %s -t [SZIGNÃL]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+"Szignálok küldése folyamatoknak, vagy szignálok felsorolása\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+" -s, --signal=SZIGNÃL, -SZIGNÃL\n"
+" megadja az elküldendő szignál nevét vagy számát\n"
+" -l, --list szignálnevek felsorolása, vagy szignálnevek számokká és\n"
+" visszaalakítása\n"
+" -t, --table szignálinformációkat tartalmazó táblázat kiírása\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+"\n"
+"A SZIGNÃL egy szignálnév lehet, például \"HUP\", vagy egy szignálszám, "
+"például\n"
+"\"1\", vagy egy szignál által befejeztetett folyamat kilépési állapota.\n"
+"A PID egy egész, ha negatív, akkor egy folyamatcsoportot azonosít.\n"
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: érvénytelen szignál"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: érvénytelen folyamatazonosító"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "érvénytelen kapcsoló -- %c"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: több szignált adtál meg"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "több -l vagy -t kapcsolót adtál meg"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "a szignál nem kombinálható a -l vagy -t kapcsolóval"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr "nem adtál meg folyamatazonosítót"
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Használat: %s FÃJL1 FÃJL2\n"
+" vagy: %s KAPCSOLÓ\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+"A link függvény meghívása egy létezÅ‘ FÃJL1-re mutató FÃJL2 nevű link\n"
+"létrehozásához.\n"
+"\n"
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "%s link nem hozható létre a következőre: %s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+"%s: figyelmeztetés: a szimbolikus linkre mutató hard link\n"
+"létrehozása nem hordozható"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: könyvtárra mutató hard link nem engedélyezett"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: a könyvtár nem írható felül"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: %s cseréje? "
+
+#: src/ln.c:295
+#, c-format
+msgid "creating symbolic link %s"
+msgstr "%s szimbolikus link létrehozása"
+
+#: src/ln.c:296
+#, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "%s szimbolikus link létrehozása a következőre: %s"
+
+#: src/ln.c:298
+#, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "hard link létrehozása a következőre: %.0s%s"
+
+#: src/ln.c:301
+#, c-format
+msgid "creating hard link %s"
+msgstr "%s hard link létrehozása"
+
+#: src/ln.c:302
+#, c-format
+msgid "creating hard link %s => %s"
+msgstr "%s hard link létrehozása a következőre: %s"
+
+#: src/ln.c:324
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Használat: %s [KAPCSOLÓ]... [-T] CÉL LINK_NEVE (1. alak)\n"
+" vagy: %s [KAPCSOLÓ]... CÉL (2. alak)\n"
+" vagy: %s [KAPCSOLÓ]... CÉL... KÖNYVTÃR (3. alak)\n"
+" vagy: %s [KAPCSOLÓ]... -t KÖNYVTÃR... CÉL... (4. alak)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"Az 1. alakban használva linket hoz létre a megadott CÉLRA a LINK_NEVE "
+"néven.\n"
+"A 2. alakban használva a CÉLRA jön lére egy link az aktuális könyvtárban.\n"
+"A 3. és 4. alakban használva a KÖNYVTÃRBAN linkek jönnek létre minden egyes\n"
+"CÉLRA. Alapértelmezésben hard linkeket hoz létre, szimbolikus linkek a\n"
+"--symbolic kapcsolóval hozhatók létre. Hard linkek létrehozásakor\n"
+"minden CÉLNAK léteznie kell.\n"
+"\n"
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup[=CONTROL] minden létező célfájlról mentést készít\n"
+" -b mint a --backup, de nem fogad el argumentumot\n"
+" -d, -F, --directory könyvtárak hard linkelése (csak root)\n"
+" (megjegyzés: valószínűleg meg fog hiúsulni a\n"
+" rendszer korlátozásai miatt, még a rootnak "
+"is)\n"
+" -f, --force létező célfájlok törlése\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference ha a cél szimbolikus link egy könyvtárra, "
+"akkor\n"
+" kezelje normális fájlként\n"
+" -i, --interactive célfájlok törlésénél kérdez\n"
+" -s, --symbolic szimbolikus link létrehozása hard link helyett\n"
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" -S, --suffix=KITERJESZTÉS a biztonsági másolat szokásos kiterjesztésének\n"
+" felülbírálása\n"
+" -t --target-directory=KÖNYVTÃR a linkek létrehozására szolgáló KÖNYVTÃR\n"
+" megadása\n"
+" -T, --no-target-directory a LINK_NEVE fájl kezelése normál fájlként\n"
+" -v, --verbose linkelés előtt kiírja minden fájl nevét\n"
+
+#: src/ln.c:484
+#, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr ""
+"A --target-directory és a --no-target-directory nem használhatók együtt"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Használat: %s [KAPCSOLÓ]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"Az aktuális felhasználó nevének kiírása.\n"
+"\n"
+
+#: src/logname.c:89
+#, c-format
+msgid "no login name"
+msgstr "nincs bejelentkezési név"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%Y %b %e"
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%b %e %H.%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr ""
+"a QUOTING_STYLE környezeti változóban megadott érvénytelen érték\n"
+"figyelmen kívül hagyása: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr ""
+"a COLUMNS környezeti változóban megadott érvénytelen szélesség\n"
+"figyelmen kívül hagyása: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr ""
+"a TABSIZE környezeti változóban megadott érvénytelen tabulátorméret\n"
+"figyelmen kívül hagyása: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "érvénytelen sorhossz: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "érvénytelen tabulátorméret: %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "érvénytelen időformátum stílus: %s"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "ismeretlen előtag: %s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "az LS_COLORS környezeti változó értéke nem értelmezhető"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "nem lehet a következő könyvtárat megnyitni: %s"
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "%s eszközét és inode-ját nem lehet megállapítani"
+
+#: src/ls.c:2353
+#, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "%s: a már listázott könyvtár nem kerül listázásra"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "%s könyvtár olvasása"
+
+#: src/ls.c:2410
+#, c-format
+msgid "closing directory %s"
+msgstr "%s könyvtár bezárása"
+
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "%s és %s fájlnevek nem hasonlíthatók össze"
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"Információt ír ki a FÃJLOKRÓL, alapértelmezésben az aktuális könyvtárról.\n"
+"Ãbécé sorrendbe rendezi a bejegyzéseket, ha nincs megadva a -cftuvSUX\n"
+"vagy a --sort kapcsolók valamelyike.\n"
+"\n"
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all nem rejti el a .-al kezdődő bejegyzéseket\n"
+" -A, --almost-all nem listázza ki a . és .. bejegyzéseket\n"
+" --author kiírja minden egyes fájl szerzőjét\n"
+" -b, --escape oktális escape karaktereket jelenít meg\n"
+" a nem-grafikus karakterek helyett\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=MÉRET MÉRET bájtos blokkokat használ\n"
+" -B, --ignore-backups nem listázza ki a ~-ra végződő fájlokat\n"
+" -c \"-lt\"-vel: rendezés és kiírás ctime "
+"(fájlállapot-\n"
+" információk utolsó módosításának ideje) "
+"szerint\n"
+" \"-l\"-lel: kiírja a ctime-ot és név szerint "
+"rendez\n"
+" egyébként: ctime szerint rendez\n"
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C oszlopok szerint listáz\n"
+" --color[=EKKOR] beállítja, hogy mikor legyen színes a kimenet\n"
+" (fájltípusok szerint).\n"
+" Az EKKOR lehet \"always\", \"never\" vagy "
+"\"auto\"\n"
+" -d, --directory könyvtár listázása a könyvtár tartalma helyett\n"
+" és ne kövesse a szimbolikus linkeket\n"
+" -D, --dired az Emacs dired módja által használt kimenet\n"
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f nem rendez, bekapcsolja a \"-aU\" kapcsolókat,\n"
+" kikapcsolja a -ls --color kapcsolókat\n"
+" -F, --classify jelet fűz a bejegyzéshez (a */=>@ vagy | "
+"egyikét)\n"
+" --file-type hasonló az előzőhöz, kivéve a \"*\"-ot\n"
+" --format=SZÓ az érvényes értékek és a kapcsoló, amelynek\n"
+" megfelelnek: across: -x, commas: -m, "
+"horizontal:\n"
+" -x, long: -l, single-column: -1, verbose: -"
+"l,\n"
+" vertical: -C\n"
+" --full-time mint a -l --time-style=full-iso\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr " -g mint a -l, de tulajdonos kiírása nélkül\n"
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+" --group-directories-first\n"
+" könyvtárak csoportosítása a fájlok elé\n"
+
+#: src/ls.c:4322
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -G, --no-group hosszú felsorolásnál nem írja ki a csoportneveket\n"
+" -h, --human-readable ember által olvasható formátum (például 1K 234M "
+"2G)\n"
+" -H, --si ugyanaz mint előbb, de 1000-es szorzó 1024-es "
+"helyett\n"
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+" -H, --dereference-command-line parancssorban megadott szimbolikus linkek\n"
+" követése\n"
+" --dereference-command-line-symlink-to-dir\n"
+" minden egyes parancssori szimbolikus link "
+"követése\n"
+" amely egy könyvtárra mutat\n"
+" --hide=MINTA ne listázza a parancsértelmezÅ‘ MINTÃRA "
+"illeszkedő\n"
+" bejegyzéseket (a -a vagy -A felülbírálja)\n"
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=SZÓ a bejegyzésnevekhez jelet fűz a SZÓ alapján:\n"
+" none (alapértelmezett), slash (-p),\n"
+" file-type (--file-type) classify (-F)\n"
+" -i, --inode kiírja az egyes fájlok indexszámát\n"
+" -I, --ignore=MINTA nem írja ki a parancsértelmezÅ‘ MINTÃRA "
+"illeszkedő\n"
+" bejegyzéseket\n"
+" -k mint a --block-size=1K\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l hosszú formátum\n"
+" -L, --dereference szimbolikus linkek fájlinformációinak\n"
+" megjelenítésekor a szimbolikus linkek által\n"
+" mutatott fájlok adatait jeleníti meg a link\n"
+" adatai helyett\n"
+" -m a szélességet a bejegyzések vesszővel\n"
+" elválasztott listájával tölti ki\n"
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid mint a -l, de az felhasználó- és \n"
+" csoportazonosítókat számmal írja ki\n"
+" -N, --literal nyers bejegyzésnevek kiírása (nem kezeli\n"
+" megkülönböztetett módon például a\n"
+" vezérlőkaraktereket)\n"
+" -o mint a -l, de a csoportinformációk kiírása "
+"nélkül\n"
+" -p, --indicator-style=slash\n"
+" egy / jelet fűz a könyvtárakhoz\n"
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars ? kiírása a nem grafikus karakterek helyett\n"
+" --show-control-chars megjeleníti a nem grafikus karaktereket\n"
+" (alapértelmezett, kivéve ha a program az \"ls"
+"\"\n"
+" és a kimenet egy terminál)\n"
+" -Q, --quote-name minden bejegyzésnevet idézőjelbe tesz\n"
+" --quoting-style=SZÓ a SZÓ stílusnak megfelelően idézőjelez:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse fordított sorrendbe rendez\n"
+" -R, --recursive alkönyvtárak rekurzív listázása\n"
+" -s, --size kiírja az egyes fájlok méretét blokkban\n"
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S rendezés fájlméret alapján\n"
+" --sort=SZÓ rendezés a SZÓ szerint a név helyett, a SZÓ\n"
+" érvényes értékei és a kapcsoló, amelynek\n"
+" megfelelnek: extension -X, size -S,\n"
+" time -t, version -v\n"
+" --time=SZÓ a -l kapcsolóval együtt használva az időt a "
+"SZÓNAK\n"
+" megfelelően mutatja a módosítás ideje "
+"helyett:\n"
+" atime: -u, access: -u, use: -u, ctime: -c "
+"vagy\n"
+" status: -c; a megadott idő alapján rendez,\n"
+" ha a --sort=time kapcsoló meg van adva\n"
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=STÃLUS a -l kapcsolóval együtt használva az idÅ‘t a\n"
+" STÃLUSNAK megfelelÅ‘ formátumban mutatja:\n"
+" full-iso, long-iso, iso, locale, posix-iso,\n"
+" +FORMÃTUM. A FORMÃTUM értelmezése hasonló, "
+"mint\n"
+" a \"date\" esetén; ha a FORMÃTUM\n"
+" FORMÃTUM1<újsor>FORMÃTUM2 alakú, akkor a\n"
+" FORMÃTUM1 a régebbi, míg a FORMÃTUM2\n"
+" az újabb fájlokra vonatkozik; ha a STÃLUS a\n"
+" \"posix-\" előtaggal rendelkezik, akkor a "
+"STÃLUS\n"
+" csak a POSIX területi beállításokon kívül\n"
+" lép életbe.\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+" -t módosítás dátuma alapján rendez\n"
+" -T, --tabsize=OSZL tabulátor minden OSZL-nál, 8 helyett\n"
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u \"-lt\"-vel: hozzáférési idő alapján rendez és "
+"azt\n"
+" is mutatja\n"
+" \"-l\"-lel: név alapján rendez és a "
+"hozzáférési\n"
+" időt mutatja\n"
+" egyébként: hozzáférési idő alapján rendez\n"
+" -U nem rendez; a bejegyzéseket könyvtári "
+"sorrendben\n"
+" listázza\n"
+" -v verzió alapján rendez\n"
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -w, --width=OSZL feltételezi, hogy a képernyő OSZL széles\n"
+" -x a bejegyzéseket soronként, és nem oszloponként\n"
+" listázza\n"
+" -X ábécé sorba rendez, kiterjesztés szerint\n"
+" -1 soronként egy fájlnevet ír ki\n"
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"Az alapértelmezett kimenet nem színes. Ez megegyezik a --color=none \n"
+"beállítással. A --color kapcsoló használata az opcionális EKKOR argumentum\n"
+"nélkül megegyezik a --color=always viselkedésével. A --color=auto csak "
+"akkor\n"
+"jelenít meg színkódokat, ha a kimenet terminál (tty). Az LS_COLORS "
+"környezeti\n"
+"változó befolyásolhatja a színeket és könnyen beállítható a dircolors "
+"paranccsal.\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+"\n"
+"A kilépési állapot 0, ha nincs hiba, 1 kis problémák és 2 komoly baj "
+"esetén.\n"
+
+#: src/md5sum.c:150
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Használat: %s [KAPCSOLÓ] [FÃJL]...\n"
+"%s (%d bites) ellenőrzőösszegek kiírása vagy ellenőrzése.\n"
+"Ha a FÃJL nincs megadva, vagy -, akkor a szabványos bemenetet olvassa.\n"
+"\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+" -b, --binary olvasás bináris módban (alapértelmezett, ha nem\n"
+" terminál szabványos bemenetet olvas)\n"
+
+#: src/md5sum.c:164
+msgid " -b, --binary read in binary mode\n"
+msgstr " -B, --binary bináris módú olvasás\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+" -c, --check %s összegek olvasása a FÃJLOKBÓL és\n"
+" azok ellenőrzése\n"
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+" -t, --text olvasás szöveges módban (alapértelmezett, ha\n"
+" terminál szabványos bemenetet olvas)\n"
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr " -t, --text olvasás szöveges módban (alapértelmezett)\n"
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"\n"
+"Az alábbi két kapcsoló csak ellenőrzőösszegek ellenőrzésekor hasznos:\n"
+" --status ne írjon ki semmit, az állapotkód jelzi a sikert\n"
+" -w, --warn helytelenül formázott ellenőrzőösszeg-sorokra\n"
+" figyelmeztet\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"Az összegek a(z) %s által leírt módon kerülnek kiszámításra.\n"
+"Ellenőrzéskor a bemenetnek ezen program korábbi kimenetének kell lennie. Az\n"
+"alapértelmezett mód egy sornyi ellenőrzőösszeg, egy típust jelző karakter\n"
+"(\"*\" bináris, \" \" szöveges fájlokhoz) és egy név kiírása minden egyes "
+"FÃJLHOZ.\n"
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: túl sok ellenőrzőösszeg-sor"
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %<PRIuMAX>: nem megfelelően formázott %s ellenőrzőösszeg-sor"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: a megnyitás vagy olvasás meghiúsult\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "HIBÃS"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "RENDBEN"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: olvasási hiba"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: nem találhatók megfelelően formázott %s ellenőrzőösszeg sorok"
+
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "FIGYELMEZTETÉS: %<PRIuMAX>/%<PRIuMAX> felsorolt fájl nem olvasható"
+msgstr[1] "FIGYELMEZTETÉS: %<PRIuMAX>/%<PRIuMAX> felsorolt fájl nem olvasható"
+
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] ""
+"FIGYELMEZTETÉS: %<PRIuMAX>/%<PRIuMAX> számított ellenőrzőösszeg NEM egyezett"
+msgstr[1] ""
+"FIGYELMEZTETÉS: %<PRIuMAX>/%<PRIuMAX> számított ellenőrzőösszeg NEM egyezett"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"a --binary és --text kapcsolók értelmetlenek ellenőrzőösszegek ellenőrzésekor"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "a --status kapcsoló csak ellenőrzőösszegek ellenőrzésekor értelmes"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "a --warn kapcsoló csak ellenőrzőösszegek ellenőrzésekor értelmes"
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Használat: %s [KAPCSOLÓ] KÖNYVTÃR...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"KÖNYVTÃRAKAT hoz létre, ha még nem léteznek.\n"
+"\n"
+
+#: src/mkdir.c:67
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+" -m, --mode=MÓD fájlmód beállítása, (mint a chmod), nem a=rwx - umask\n"
+" -p, --parents könyvtárstruktúrát hoz létre. Nem ad hibát, ha már "
+"létezik\n"
+" -v, --verbose üzenetet ír ki minden egyes létrehozott könyvtárhoz\n"
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "%s könyvtár létrejött"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Használat: %s [KAPCSOLÓ] NÉV...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"NÉV nevű névvel rendelkező csővezetéket (FIFO-t) hoz létre.\n"
+"\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr " -m, --mode=MÓD fájljogosultságok beállítása, nem a=rw - umask\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "érvénytelen mód"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr "a mód csak fájljogosultságbiteket adhat meg"
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Használat: %s [KAPCSOLÓ]... NÉV TÃPUS [MAJOR MINOR]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"Az adott NEVÅ° és TÃPUSÚ speciális fájl létrehozása.\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+"\n"
+"Mind a MAJORT, mind a MINORT meg kell adni, ha a TÃPUS b, c vagy u és el "
+"kell\n"
+"Å‘ket hagyni, ha a TÃPUS p. Ha a MAJOR vagy MINOR kezdete 0x vagy 0X, akkor "
+"ez\n"
+"hexadecimálisan lesz értelmezve, egyébként ha 0-val, akkor oktálisan, "
+"egyébként\n"
+"decimálisan. A TÃPUS az alábbiak egyike lehet:\n"
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+" b speciális blokkfájl (pufferelt) létrehozása\n"
+" c, u speciális karakterfájl (nem-pufferelt) létrehozása\n"
+" p FIFO létrehozása\n"
+
+#: src/mknod.c:146
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"Speciális fájlok létrehozásakor meg kell adni major és minor\n"
+"eszközszámokat."
+
+#: src/mknod.c:156
+msgid "Fifos do not have major and minor device numbers."
+msgstr "A Fifo-k nem rendelkeznek major és minor eszközszámokkal."
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "a speciális blokkfájl nem támogatott"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "a speciális karakterfájl nem támogatott"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "érvénytelen major eszközszám: %s"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "érvénytelen minor eszközszám: %s"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "érvénytelen eszköz %s %s"
+
+#: src/mknod.c:216
+#, c-format
+msgid "invalid device type %s"
+msgstr "érvénytelen eszköztípus: %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"A FORRÃST átnevezi a CÉLRA vagy több FORRÃST egy CÉLKÖNYVTÃRBA helyez át.\n"
+"\n"
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup[=CONTROL] minden létező célfájlról biztonsági mentést\n"
+" készít\n"
+" -b mint a --backup, de nem fogad el "
+"argumentumot\n"
+" -f, --force nem kérdez felülírás előtt\n"
+" -i, --interactive felülírás előtt kérdez\n"
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --strip-trailing-slashes eltávolítja a befejező per jeleket minden\n"
+" FORRÃS argumentumról\n"
+" -S, --suffix=KITERJESZTÉS a biztonsági másolat szokásos "
+"kiterjesztésének\n"
+" felülbírálása\n"
+
+#: src/mv.c:308
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --target-directory=KÖNYVTÃR minden FORRÃS áthelyezése a megadott\n"
+" KÖNYVTÃRBA\n"
+" -T, --no-target-directory a CÉL kezelése normál fájlként\n"
+" -u, --update csak akkor helyezi át, ha a célfájl régebbi,\n"
+" mint a FORRÃS, vagy ha a célfájl nem "
+"létezik\n"
+" -v, --verbose elmagyarázza, mi történik\n"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Használat: %s [KAPCSOLÓ] [PARANCS [ARG]...]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+"A PARANCS futtatása módosított nice értékkel, amely a folyamatütemezést "
+"érinti.\n"
+"Ha a PARANCS nincs megadva, akkor az aktuális nice értéket írja ki. A nice\n"
+"értékek a(z) %d (leginkább előnyben részesített) értéktől %d-ig (legkevésbé\n"
+"előnyben részesített) terjednek.\n"
+"\n"
+" -n, --adjustment=N az N egész szám hozzáadása a nice értékhez\n"
+" (az alapértelmezett: 10)\n"
+
+#: src/nice.c:155
+#, c-format
+msgid "invalid adjustment %s"
+msgstr "érvénytelen módosítás: %s"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "meg kell adni egy parancsot a módosítással"
+
+#: src/nice.c:171 src/nice.c:182
+#, c-format
+msgid "cannot get niceness"
+msgstr "nem kérhető le a nice érték"
+
+#: src/nice.c:186
+#, c-format
+msgid "cannot set niceness"
+msgstr "nem állítható be a nice érték"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Minden egyes FÃJL kiírása a szabványos kimenetre, sorszámokkal ellátva.\n"
+"Ha a FÃJL nincs megadva, vagy -, akkor a szabványos bemenetet olvassa.\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=STÃLUS a STÃLUS használata a törzs sorainak\n"
+" számozásához\n"
+" -d, --section-delimiter=CC a CC használata a logikai oldalak\n"
+" elválasztásához\n"
+" -f, --footer-numbering=STÃLUS a STÃLUS használata a lábléc sorainak\n"
+" számozásához\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=STÃLUS a STÃLUS használata a fejléc sorainak\n"
+" számozásához\n"
+" -i, --page-increment=SZÃM a sorszám növekménye soronként\n"
+" -l, --join-blank-lines=SZÃM SZÃM darab üres sor számolása egynek\n"
+" -n, --number-format=FORMÃTUM sorszámok beszúrása a FORMÃTUMNAK "
+"megfelelően\n"
+" -p, --no-renumber ne állítsa vissza a sorszámokat logikai\n"
+" oldalaknál\n"
+" -s, --number-separator=KARAKTERLÃNC a KARAKTERLÃNC felvétele a "
+"(lehetséges)\n"
+" sorszámnál\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=SZÃM az elsÅ‘ sorszám minden logikai oldalon\n"
+" -w, --number-width=SZÃM SZÃM darab oszlop használata a "
+"sorszámokhoz\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"Az alapértelmezett kiválasztás a -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. A "
+"CC\n"
+"két, logikai oldalakat elválasztó karakter, ha a második karakter hiányzik,\n"
+"akkor : kerül felhasználásra. A \\\\ beírásával kapható a \\ jel. A STÃLUS\n"
+"az alábbiak egyike:\n"
+
+#: src/nl.c:214
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a az összes sor számozása\n"
+" t csak a nem üres sorok számozása\n"
+" n ne számozzon sorokat\n"
+" pBRE csak a BRE alapvető szabályos kifejezésre illeszkedést "
+"tartalmazó\n"
+" sorok számozása\n"
+"\n"
+"A FORMÃTUM az alábbiak egyike:\n"
+"\n"
+" ln balra igazított, nincsenek kezdő nullák\n"
+" rn jobbra igazított, nincsenek kezdő nullák\n"
+" rz jobbra igazított, kezdő nullákkal\n"
+"\n"
+
+#: src/nl.c:281
+#, c-format
+msgid "line number overflow"
+msgstr "sorszámtúlcsordulás"
+
+#: src/nl.c:479
+#, c-format
+msgid "invalid header numbering style: %s"
+msgstr "érvénytelen fejlécszámozási stílus: %s"
+
+#: src/nl.c:487
+#, c-format
+msgid "invalid body numbering style: %s"
+msgstr "érvénytelen törzsszámozási stílus: %s"
+
+#: src/nl.c:495
+#, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "érvénytelen láblécszámozási stílus: %s"
+
+#: src/nl.c:504
+#, c-format
+msgid "invalid starting line number: %s"
+msgstr "érvénytelen kezdősorszám: %s"
+
+#: src/nl.c:513
+#, c-format
+msgid "invalid line number increment: %s"
+msgstr "érvénytelen sorszámnövekmény: %s"
+
+#: src/nl.c:525
+#, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "érvénytelen üressorszám: %s"
+
+#: src/nl.c:539
+#, c-format
+msgid "invalid line number field width: %s"
+msgstr "érvénytelen sorszámmező szélesség: %s"
+
+#: src/nl.c:558
+#, c-format
+msgid "invalid line numbering format: %s"
+msgstr "érvénytelen sorszámozási formátum: %s"
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Használat: %s PARANCS [ARG]...\n"
+" vagy: %s KAPCSOLÓ\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+"A PARANCS futtatása a hangup szignálok figyelmen kívül\n"
+"hagyásával.\n"
+"\n"
+
+#: src/nohup.c:117
+#, c-format
+msgid "ignoring input"
+msgstr "bemenet figyelmen kívül hagyása"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr "%s megnyitása meghiúsult"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr ""
+"bemenet figyelmen kívül hagyása és kimenet hozzáfűzése a következőhöz: %s"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+"a szabványos hibakimenet másolatának beállítása meghiúsult \"bezárás\n"
+"végrehajtáskor\" módra"
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+"bemenet figyelmen kívül hagyása és a szabványos hibakimenet átirányítása\n"
+"a szabványos kimenetre"
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr "a szabványos hibakimenet átirányítása meghiúsult"
+
+#: src/od.c:307
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Használat: %s [KAPCSOLÓ]... [FÃJL]...\n"
+" vagy: %s [-abcdfilosx]... [FÃJL] [[+]ELTOLÃS[.][b]]\n"
+" vagy: %s --traditional [KAPCSOLÓ]... [FÃJL] [[+]ELTOLÃS[.][b]\n"
+" [+][CÃMKE][.][b]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"A FÃJL egy egyértelmű ábrázolásának kiírása, alapértelmezetten oktális\n"
+"bájtokkal, a szabványos kimenetre. Több FÃJL argumentumot összefűz a "
+"felsorolás\n"
+"sorrendjében a bemenet kialakítása érdekében.\n"
+"Ha a FÃJL nincs megadva, vagy -, akkor a szabványos bemenetet olvassa.\n"
+"\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+"Ha egy hosszú kapcsolóhoz kötelező argumentumot megadni, akkor ez a \n"
+"megfelelő rövid kapcsolónál is kötelező.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=ALAP a fájleltolások kiírási módjának eldöntése\n"
+" -j, --skip-bytes=BÃJT BÃJT darab bemeneti bájt kihagyása elÅ‘ször\n"
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=BÃJT a kiíratás korlátozása BÃJT darab bemeneti "
+"bájtra\n"
+" -S, --strings[=BÃJT] a legalább BÃJT darab grafikus karakterbÅ‘l "
+"álló\n"
+" karakterláncok kiírása\n"
+" -t, --format=TÃPUS a kimeneti formátum(ok) kiválasztása\n"
+" -v, --output-duplicates ne használja a * jelet a sorelnyomások "
+"jelölésére\n"
+" -w, --width[=BÃJT] BÃJT darab bájt kiírása kimeneti soronként\n"
+" --traditional argumentumok elfogadása a hagyományos "
+"formában\n"
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"A hagyományos formátummeghatározások keverhetők, az alábbiak lehetnek:\n"
+" -a ugyanaz, mint -t a, megnevezett karakterek kiválasztása, a magas\n"
+" sorrend bit figyelmen kívül hagyása\n"
+" -b ugyanaz, mint -t o1, oktális bájtok kiválasztása\n"
+" -c ugyanaz, mint -t c, ASCII karakterek vagy visszaper escape-ek\n"
+" kiválasztása\n"
+" -d ugyanaz, mint -t u2, előjel nélküli tízes alapú 2 bájtos egységek\n"
+" kiválasztása\n"
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f ugyanaz, mint -t fF, lebegőpontosak kiválasztása\n"
+" -i ugyanaz, mint -t dI, decimális egészek kiválasztása\n"
+" -l ugyanaz, mint -t dL, decimális hosszúak kiválasztása\n"
+" -o ugyanaz, mint -t o2, oktális 2 bájtos egységek kiválasztása\n"
+" -s ugyanaz, mint -t d2, tízes alapú 2 bájtos egységek kiválasztása\n"
+" -x ugyanaz, mint -t x2, hexadecimális 2 bájtos egységek kiválasztása\n"
+
+#: src/od.c:353
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"Az első és második hívási alak egyidejű alkalmazása esetén a második alak\n"
+"feltételezett, ha az utolsó operandus +-al vagy (2 operandus esetén) "
+"számmal\n"
+"kezdÅ‘dik. Az ELTOLÃS operandus a -j ELTOLÃS kapcsolót jelenti. A CÃMKE az "
+"első\n"
+"kiírandó bájt pszeudo-címe, amely a kiíratás előrehaladásával növekszik. Az\n"
+"ELTOLÃS és a CÃMKE esetén egy 0x vagy 0X elÅ‘tag hexadecimális ábrázolást "
+"jelez;\n"
+"az utótagok a . (oktális) és b (szorzás 512-vel) lehetnek.\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+"\n"
+"A TÃPUST az alábbi specifikációk közül néhány alkothatja:\n"
+"\n"
+" a megnevezett karakter, a magas sorrend bit figyelmen kívül "
+"hagyása\n"
+" c ASCII karakter vagy visszaper escape\n"
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[MÉRET] előjeles decimális, MÉRET bájt egészenként\n"
+" f[MÉRET] lebegőpontos, MÉRET bájt egészenként\n"
+" o[MÉRET] oktális, MÉRET bájt egészenként\n"
+" u[MÉRET] előjel nélküli decimális, MÉRET bájt egészenként\n"
+" x[MÉRET] hexadecimális, MÉRET bájt egészenként\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"A MÉRET egy szám. For TYPE in doux, a MÉRET lehet C a\n"
+"sizeof(char), S a sizeof(short), I a sizeof(int) vagy L a\n"
+"sizeof(long) értékekhez. Ha a TÃPUS f, akkor a MÉRET szintén lehet F a\n"
+"sizeof(float), D a sizeof(double) vagy L a sizeof(long double) értékéhez.\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"Az ALAP d, ha decimális, o ha oktális, x ha hexadecimális vagy n, ha nincs.\n"
+"A BÃJT hexadecimális a 0x vagy 0X elÅ‘taggal és szorzódik 512-vel a b, 1024-"
+"gyel\n"
+"a k és 1048576-tal az m utótag hatására. Egy z utótag hatására bármely "
+"típus\n"
+"esetén a nyomtatható karakterek megjelennek a kimeneti sorok végén.\n"
+" "
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"A --string egy szám nélkül 3-at jelent. A --width egy szám nélkül\n"
+"32-t. Alapértelmezésben az od a következőket használja: -A o -t d2 -w 16.\n"
+
+#: src/od.c:683 src/od.c:802
+#, c-format
+msgid "invalid type string %s"
+msgstr "érvénytelen típus-karakterlánc: %s"
+
+#: src/od.c:693
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"érvénytelen típus-karakterlánc: %s\n"
+"ez a rendszer nem biztosít %lu bájtos egész típust"
+
+#: src/od.c:812
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"érvénytelen típus-karakterlánc: %s\n"
+"ez a rendszer nem biztosít %lu bájtos lebegőpontos típust"
+
+#: src/od.c:871
+#, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "a(z) %c karakter érvénytelen a(z) %s típus-karakterláncban"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "nem lehet a kombinált bemenet elhagyott végére ugrani"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+"\"%c\" érvénytelen kimeneti cím alap; a [doxn] karakterek egyikének kell "
+"lennie"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "argumentum kihagyása"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "argumentumok korlátozása"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "minimális karakterlánchossz"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "szélességspecifikáció"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "nem adható meg típus karakterláncok kiíratásakor"
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr "A kompatibilitási mód legfeljebb egy fájlt támogat."
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr "a kihagyandó és beolvasandó bájtok összege túl nagy"
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr ""
+"figyelmeztetés: %lu szélesség érvénytelen, helyette %d kerül felhasználásra"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: fmt=\"%s\" szélesség=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "a szabványos bemenet le van zárva"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Az egyes FÃJLOK sorozatban megfelelÅ‘ soraiból álló sorok kiírása a\n"
+"szabványos kimenetre, tabokkal elválasztva.\n"
+"Ha a FÃJL nincs megadva, vagy -, akkor a szabványos bemenetet olvassa.\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=LISTA a LISTA karaktereinek újrafelhasználása tabok\n"
+" helyett\n"
+" -s, --serial egyszerre egy fájl beillesztése párhuzamos\n"
+" feldolgozás helyett\n"
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Használat: %s [KAPCSOLÓ] NÉV...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+"Hordozhatatlan szerkezetek felismerése a NÉVBEN.\n"
+"\n"
+" -p a legtöbb POSIX rendszer ellenőrzéses\n"
+" -P üres nevek és a kezdő \"-\" ellenőrzése\n"
+" --portability az összes POSIX rendszer ellenőrzése (azonos a -p -P-"
+"vel)\n"
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr "kezdő \"-\" jel a(z) %s fájlnév összetevőjében"
+
+#: src/pathchk.c:206
+#, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "nem hordozható karakter (%s) a(z) %s fájlnévben"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr "üres fájlnév"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr "%s: a maximális fájlnévhossz nem határozható meg"
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr "a(z) %1$lu korlát átlépve a(z) %3$s fájlnév %2$lu hossza által"
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+"a(z) %1$lu korlát átlépve a(z) %3$s fájlnévösszetevő %2$lu hossza által"
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Bejelentkezési név: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "Valójában: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Könyvtár: "
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Parancsértelmező: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Projekt: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "Terv:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Bejel."
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr "Név"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr " TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Ãœresj."
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Mikor"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Hol"
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Használat: %s [KAPCSOLÓ]... [FELHASZNÃLÓ]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"\n"
+" -l hosszú formátumú kimenet előállítása a megadott\n"
+" FELHASZNÃLÓKHOZ\n"
+" -b a felhasználó saját könyvtárának és parancsértelmezőjének\n"
+" kihagyása a hosszú formátumból\n"
+" -h a felhasználó projektfájljának kihagyása a hosszú\n"
+" formátumból\n"
+" -p a felhasználó tervfájljának kihagyása a hosszú "
+"formátumból\n"
+" -s rövid formátumú kimenet előállítása, ez az "
+"alapértelmezett\n"
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+" -f az oszlopfejlécek sorának kihagyása a rövid formátumban\n"
+" -w a felhasználó teljes nevének kihagyása a rövid "
+"formátumban\n"
+" -i a felhasználó teljes nevének és távoli kiszolgálójának\n"
+" kihagyása a rövid formátumban\n"
+" -q a felhasználó teljes nevének, távoli kiszolgálójának és\n"
+" üresjárati idejének kihagyása a rövid formátumban\n"
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+"\n"
+"Egy könnyűsúlyú \"finger\" program, felhasználói információkat ír ki.\n"
+"Az utmp fájl a következő lesz: %s.\n"
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr ""
+"nincs megadva felhasználói név; legalább egyet meg kell adni\n"
+"a -l használatakor"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr "oldaltartomány"
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "\"--pages=ELSÅ_OLDAL[:UTOLSÓ_OLDAL]\" hiányzó argumentum"
+
+#: src/pr.c:916
+#, c-format
+msgid "Invalid page range %s"
+msgstr "Érvénytelen oldaltartomány: %s"
+
+#: src/pr.c:981
+#, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "\"-l OLDALHOSSZ\" érvénytelen sorszám: %s"
+
+#: src/pr.c:1005
+#, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "\"-N SZÃM\" érvénytelen kezdÅ‘ sorszám: %s"
+
+#: src/pr.c:1017
+#, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "\"-o MARGÓ\" érvénytelen soreltolás: %s"
+
+#: src/pr.c:1058
+#, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "\"-w OLDAL_SZÉLESSÉG\" érvénytelen karakterszám: %s"
+
+#: src/pr.c:1072
+#, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "\"-W OLDAL_SZÉLESSÉG\" érvénytelen karakterszám: %s"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "Nem adható meg az oszlopok száma párhuzamos nyomtatás esetén."
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "Nem adható meg mind a vízszintes, mind a párhuzamos nyomtatás."
+
+#: src/pr.c:1202
+#, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr ""
+"\"-%c\" extra karakterek vagy érvénytelen szám a következő argumentumban:\n"
+"%s"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "az oldalszélesség túl keskeny"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr "a(z) %<PRIuMAX> kezdő oldalszám meghaladja a(z) %<PRIuMAX> oldalszámot"
+
+#: src/pr.c:2406
+#, c-format
+msgid "Page number overflow"
+msgstr "Oldalszám-túlcsordulás"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr "%<PRIuMAX>. oldal"
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+"A FÃJLOK oldalakra tördelése vagy oszlopokba rendezése\n"
+"nyomtatáshoz.\n"
+"\n"
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +ELSÅ_OLDAL[:UTOLSÓ_OLDAL], --pages=ELSÅ_OLDAL[:UTOLSÓ_OLDAL]\n"
+" a nyomtatás elkezdése [befejezése] az ELSÅ_[UTOLSÓ]"
+"_OLDALON\n"
+" -OSZLOP, --columns=OSZLOP\n"
+" OSZLOP darab oszlop előállítása és az oszlopok "
+"nyomtatása,\n"
+" lefelé, hacsak a -a nincs megadva. A sorok számának\n"
+" kiegyensúlyozása az oszlopokban minden egyes oldalon.\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across oszlopok kiírása vízszintesen és nem függőlegesen, a\n"
+" -OSZLOP kapcsolóval együtt használatos\n"
+" -c, --show-control-chars\n"
+" kalapos (^G) és oktális visszaper jelölés használata\n"
+" -d, --double-space\n"
+" a kimenet dupla kitöltése\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=FORMÃTUM\n"
+" a FORMÃTUM használata a fejléc dátumához\n"
+" -e[KAR[SZÉLESSÉG], --expand-tabs[=KAR[SZÉLESSÉG]]\n"
+" a bemeneti KARAKTEREK (TAB-ok) kiterjesztése a tab\n"
+" SZÉLESSÉGÉRE (8)\n"
+" -F, -f, --form-feed\n"
+" lapdobások használata újsorok helyett az oldalak\n"
+" elválasztására\n"
+" (egy 3 soros oldalfejléccel a -F vagy egy 5 soros\n"
+" fejléccel és bevezetővel az -F nélkül)\n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h FEJLÉC, --header=FEJLÉC\n"
+" egy középre igazított FEJLÉC használata a fájlnév "
+"helyett\n"
+" az oldalfejlécben, a -h \"\" egy üres sort nyomtat, ne\n"
+" használd a -h\"\" kapcsolót\n"
+" -i[KAR[SZÉLESSÉG], --output-tabs[=KAR[SZÉLESSÉG]]\n"
+" a szóközök cseréje KARAKTEREKRE (TAB-okra) a tab\n"
+" SZÉLESSÉGÉIG (8)\n"
+" -J, --join-lines teljes sorok összefésülése, kikapcsolja a -W "
+"sorcsonkítást,\n"
+" nincs oszlopigazítás, a --sep-string[=KARAKTERLÃNC]\n"
+" beállítja az elválasztókat\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l OLDALHOSSZ, --length=OLDALHOSSZ\n"
+" beállítja az oldalhosszúságot OLDALHOSSZ (66) sorra\n"
+" (a szövegsorok alapértelmezett száma 56, és a -F esetén "
+"63)\n"
+" -m, --merge az összes fájl párhuzamos nyomtatása, egyet minden\n"
+" oszlopba, a sorokat csonkítja, de a teljes hosszúságú\n"
+" sorokat a -J használatakor összekapcsolja\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[ELV[SZÃMJEGYEK]], --number-lines[=ELV[SZÃMJEGYEK]]\n"
+" sorok számozása, SZÃMJEGYEK (5) darab számjegy majd az\n"
+" ELVÃLASZTÓ (TAB) használatával, a számolás\n"
+" alapértelmezésben a bemeneti fájl első sorával "
+"kezdődik.\n"
+" -N NUMBER, --first-line-number=SZÃM\n"
+" a számolás kezdése a SZÃMMAL az elsÅ‘ kinyomtatott oldal\n"
+" elsÅ‘ sorában (lásd +ELSÅ_OLDAL)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o MARGÓ, --indent=MARGÓ\n"
+" minden egyes sor eltolása MARGÓ (nulla) szóközzel, "
+"nincs\n"
+" hatással a -w vagy -W kapcsolókra, a MARGÓ az\n"
+" OLDAL_SZÉLESSÉGHEZ lesz hozzáadva.\n"
+" -r, --no-file-warnings\n"
+" figyelmeztetés kihagyása, ha egy fájl nem nyitható meg\n"
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[KARAKTER],--separator[=KARAKTER]\n"
+" az oszlopok elválasztása egyetlen KARAKTERREL, az\n"
+" alapértelmezés a <TAB> karakter a -w nélkül és \"semmi"
+"\"\n"
+" a -w esetén. A -s[KARAKTER] kikapcsolja a sorcsonkítást\n"
+" mind a 3 oszlopkapcsolóhoz (-OSZLOP|-a -OSZLOP|-m), "
+"kivéve\n"
+" ha a -w be van állítva\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -SKARAKTERLÃNC, --sep-string[=KARAKTERLÃNC]\n"
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" az oszlopok elválasztása a KARAKTERLÃNCCAL,\n"
+" a -S nélkül: az alapértelmezett elválasztó a <TAB> a -J\n"
+" kapcsolóval és <szóköz> egyébként (ugyanaz, mint a -S\" "
+"\")\n"
+" nincs hatással az oszlopkapcsolókra\n"
+" -t, --omit-header oldalfejlécek és befejezők kihagyása\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" oldalfejlécek és befejezők kihagyása, a bemeneti "
+"fájlokban\n"
+" található lapdobások által beállított oldalakra "
+"tördelés\n"
+" megszüntetése\n"
+" -v, --show-nonprinting\n"
+" oktális visszaper jelölés használata\n"
+" -w OLDAL_SZÉLESSÉG, --width=OLDAL_SZÉLESSÉG\n"
+" az oldalszélesség beállítása OLDAL_SZÉLESSÉG (72)\n"
+" karakterre, csak több szöveges oszlopot tartalmazó\n"
+" kimenethez, az s[karakter] kikapcsolja (72)\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W OLDAL_SZÉLESSÉG, --page-width=OLDAL_SZÉLESSÉG\n"
+" az oldalszélesség beállítása OLDAL_SZÉLESSÉG (72)\n"
+" karakterre mindig, a sorok csonkítása, kivéve ha a -J\n"
+" kapcsoló be van állítva, nincs interferencia a -S vagy -"
+"s\n"
+" kapcsolókkal\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"A -T következik a -l nn kapcsolóból, ha nn <= 10 vagy <= 3 a -F esetén. Ha a "
+"FÃJL nincs megadva, vagy -, akkor a szabványos bemenetet olvassa.\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Használat: %s [VÃLTOZÓ]...\n"
+" vagy: %s KAPCSOLÓ\n"
+"Ha nincs megadva környezeti VÃLTOZÓ, akkor az összeset kiírja.\n"
+"\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+"figyelmeztetés: %s: a karakteres állandót követő karakterek \n"
+"figyelmen kívül maradtak"
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Használat: %s FORMÃTUM [ARGUMENTUM]...\n"
+" vagy: %s KAPCSOLÓ\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+"Az ARGUMENTUMOK kiírása a FORMÃTUMNAK megfelelÅ‘en.\n"
+"\n"
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"\n"
+"A FORMÃTUM vezérli a kimenetet, mint a C printf(). Az értelmezett "
+"sorozatok:\n"
+"\n"
+" \\\" dupla idézőjel\n"
+" \\NNN az NNN oktális értékű karakter (1-3 számjegy)\n"
+" \\\\ visszaper\n"
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+" \\a riadó (BEL)\n"
+" \\b visszaper\n"
+" \\c ne állítson elő további kimenetet\n"
+" \\f lapdobás\n"
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n újsor\n"
+" \\r kocsivissza\n"
+" \\t vízszintes tab\n"
+" \\v függőleges tab\n"
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+" \\xHH a HH hexadecimális értékű bájt (1 - 2 számjegy)\n"
+" \\uHHHH a HHHH hexadecimális értékű Unicode (ISO/IEC 10646) karakter\n"
+" (4 számjegy)\n"
+" \\UHHHHHHHH a HHHHHHHH hexadecimális értékű Unicode karakter (8 "
+"számjegy)\n"
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+" %% egy % jel\n"
+" %b az ARGUMENTUM a \"\\\" escape-jelölések értelmezésével,\n"
+" kivéve a \\0 vagy \\0NNN formátumú oktális escape-eket\n"
+"\n"
+"valamint minden, a diouxXfeEgGcs egyikére végződő C formátumspecifikáció\n"
+"az ARGUMENTUMOK megfelelő típusra alakítása után. A változó szélességeket\n"
+"kezeli a program.\n"
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: a várt érték numerikus"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: az érték átalakítása nem teljes"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "hiányzó hexadecimális érték az escape-ben"
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "érvénytelen univerzális karakternév: \\%c%0*x"
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr "érvénytelen mezőszélesség: %s"
+
+#: src/printf.c:585
+#, c-format
+msgid "invalid precision: %s"
+msgstr "érvénytelen pontosság: %s"
+
+#: src/printf.c:612
+#, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%.*s: érvénytelen konverziós specifikáció"
+
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr ""
+"figyelmeztetés: a többletargumentumok figyelmen kívül maradnak,\n"
+" a következőtől kezdve: %s"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr "F. Pinard"
+
+#: src/ptx.c:422
+#, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (a(z) %s regexphez)"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Használat: %s [KAPCSOLÓ]... [BEMENET]... (-G nélkül)\n"
+" vagy: %s -G [KAPCSOLÓ]... [BEMENET [KIMENET]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"A bemeneti fájlok szavai permutált indexének kiírása a kontextust is "
+"beleértve.\n"
+"\n"
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference automatikusan előállított hivatkozások "
+"kiírása\n"
+" -G, --traditional a System V \"ptx\"-hez hasonló viselkedés\n"
+" -F, --flag-truncation=KARAKTERLÃNC a KARAKTERLÃNC használata a\n"
+" sorcsonkítások jelölésére\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=KARAKTERLÃNC a használandó makrónév az \"xx\" helyett\n"
+" -O, --format=roff a kimenet előállítása roff irányelvekként\n"
+" -R, --right-side-refs hivatkozások jobb oldalra helyezése, a -w\n"
+" nem számolja őket\n"
+" -S, --sentence-regexp=REGEXP sorok vagy mondatok végéhez\n"
+" -T, --format=tex a kimenet előállítása TeX irányelvekként\n"
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=REGEXP a REGEXP használata minden egyes kulcsszó \n"
+" -b, --break-file=FÃJL szótörÅ‘ karakterek ebben a FÃJLBAN\n"
+" -f, --ignore-case kisbetűk nagybetűkké alakítása a "
+"rendezéshez\n"
+" -g, --gap-size=SZÃM rés mérete oszlopokban a kimeneti mezÅ‘k "
+"között\n"
+" -i, --ignore-file=FÃJL figyelmen kívül hagyandó szavak listájának\n"
+" olvasása a FÃJLBÓL\n"
+" -o, --only-file=FÃJL az egyedüli szólista olvasása ebbÅ‘l a "
+"FÃJLBÓL\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references minden egyes sor első mezője egy "
+"hivatkozás\n"
+" -t, --typeset-mode - nincs megvalósítva -\n"
+" -w, --width=SZÃM a kimenet szélessége oszlopokban, a \n"
+" hivatkozások kihagyásával\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"Ha a FÃJL nincs megadva, vagy -, akkor a szabványos bemenetet olvassa.\n"
+"A \"-F /\" az alapértelmezés.\n"
+
+#: src/ptx.c:2016
+#, c-format
+msgid "invalid gap width: %s"
+msgstr "érvénytelen résszélesség: %s"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr ""
+"a --copyright kapcsoló elavult, használd helyette a --version kapcsolót"
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+"Az aktuális munkakönyvtár teljes fájlnevének kiírása.\n"
+"\n"
+
+#: src/pwd.c:160
+#, c-format
+msgid "failed to chdir to %s"
+msgstr "a következő könyvtárba lépés meghiúsult: %s"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, c-format
+msgid "failed to stat %s"
+msgstr "%s elérése meghiúsult"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+"nem található megegyező i-node-dal rendelkező könyvtárbejegyzés a "
+"következőben:\n"
+"%s"
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "a nem kapcsoló argumentumok figyelmen kívül marad"
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Használat: %s [KAPCSOLÓ]... [FÃJL]\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+"Egy szimbolikus link értékének megjelenítése a szabványos kimeneten.\n"
+"\n"
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+" -f, --canonicalize egyszerűsítés minden szimlink rekurzív\n"
+" követésével az adott név minden "
+"összetevőjében,\n"
+" az utolsó kivételével minden összetevőnek\n"
+" léteznie kell\n"
+" -e, --canonicalize-existing egyszerűsítés minden szimlink rekurzív\n"
+" követésével az adott név minden "
+"összetevőjében,\n"
+" minden összetevőnek léteznie kell\n"
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+" -m, --canonicalize-missing egyszerűsítés minden szimlink rekurzív\n"
+" követésével az adott név minden "
+"összetevőjében,\n"
+" az összetevők létezésére tekintet nélkül\n"
+" -n, --no-newline ne írja ki a záró újsort\n"
+" -q, --quiet,\n"
+" -s, --silent megszünteti a legtöbb hibaüzenetet\n"
+" -v, --verbose hibaüzenetek kiírása\n"
+
+#: src/remove.c:481 src/remove.c:525
+#, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "VÉGZETES: a könyvtár lezárása meghiúsult: %s"
+
+#: src/remove.c:494
+#, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "VÉGZETES: nem lehet a .. könyvtárat megnyitni a következőből: %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+"VÉGZETES: nem biztosítható, hogy a szülőkönyvtáron keresztül visszaadott\n"
+"%s biztonságos"
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "VÉGZETES: %s könyvtár eszköze/inode-ja megváltozott"
+
+#: src/remove.c:631
+#, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "VÉGZETES: nem lehet a következő könyvtárba belépni: %s"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+"VÉGZETES: a(z) %s könyvtár eszköze/inode-ja a belépés után megváltozott"
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"FIGYELMEZTETÉS: körkörös könyvtárszerkezet.\n"
+"Ez majdnem biztosan azt jelenti, hogy a fájlrendszer sérült.\n"
+"ÉRTESÃTSD A RENDSZERGAZDÃT.\n"
+"A következő könyvtár része a körnek:\n"
+" %s\n"
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s: belépsz a(z) %s írásvédett könyvtárba? "
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s: belépsz a(z) %s könyvtárba? "
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%1$s: eltávolítod az írásvédett %3$s nevű, \"%2$s\" típusú elemet? "
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%1$s: eltávolítod a(z) %3$s nevű, \"%2$s\" típusú elemet? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "%s könyvtár törölve\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, c-format
+msgid "failed to close directory %s"
+msgstr "a következő könyvtár bezárása meghiúsult: %s"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr "%s kihagyása, mivel másik eszközön van"
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "nem törölhető a következő könyvtár: \"%s\""
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "VÉGZETES: nem lehet visszatérni a szülőkönyvtárba a következőből: %s"
+
+#: src/remove.c:1504
+#, c-format
+msgid "cannot remove root directory %s"
+msgstr "nem törölhető a gyökérkönyvtár (%s)"
+
+#: src/remove.c:1544
+#, c-format
+msgid "cannot remove relative-named %s"
+msgstr "nem törölhető a relatív elnevezésű %s"
+
+#: src/remove.c:1558
+#, c-format
+msgid "cannot restore current working directory"
+msgstr "az aktuális munkakönyvtár helyreállítása sikertelen"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr "Próbáld a(z) \"%s ./%s\" parancsot a(z) %s eltávolításához.\n"
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Használat: %s [KAPCSOLÓ]... FÃJL...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+"A FÃJLOK eltávolítása (unlink).\n"
+"\n"
+" -f, --force nem létező fájlok figyelmen kívül hagyása, nem "
+"kérdez\n"
+" -i kérdés minden eltávolítás előtt\n"
+
+# rc/rm.c:166
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+" -I egyszer kérdez háromnál több fájl eltávolításakor\n"
+" vagy rekurzív törlés esetén. Nem olyan zavaró, "
+"mint a\n"
+" -i, de a legtöbb hiba ellen véd\n"
+" --interactive[=MIKOR] a MIKOR-nak megfelelően kérdez: never (soha), "
+"once\n"
+" (egyszer, mint a -I), vagy always (mindig, "
+"mint\n"
+" a -i). A MIKOR megadása nélkül mindig kérdez\n"
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+" --one-file-system könyvtárszerkezet rekurzív törlésekor minden olyan\n"
+" könyvtár kihagyása, amely a megfelelő parancssori\n"
+" kapcsoló ban megadottól eltérő fájlrendszeren van\n"
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --no-preserve-root ne kezelje a \"/\" könyvtárat különlegesen\n"
+" (alapértelmezett)\n"
+" --preserve-root a rekurzív működés visszautasítása a \"/\" "
+"könyvtáron\n"
+" -r, -R, --recursive könyvtárak és tartalmuk rekurzív törlése\n"
+" -v, --verbose elmagyarázza, mi történik\n"
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+"\n"
+"Alapértelmezésben az rm nem töröl könyvtárakat. A --recursive (-r vagy -R)\n"
+"használatával minden egyes felsorolt könyvtár és azok tartalma is "
+"törölhető.\n"
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"Ha \"-\" jellel kezdődik a törlendő fájl, például \"-foo\", akkor\n"
+"használd a következő parancsok egyikét:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"Megjegyzés: az rm paranccsal törölt fájl tartalma általában "
+"visszaállítható.\n"
+"Végleges törléshez fontold meg a shred parancs használatát.\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr "%s: rekurzívan eltávolítod az összes argumentumot? "
+
+#: src/rm.c:366
+#, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: eltávolítod az összes argumentumot? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "%s könyvtár törlése"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Használat: %s [KAPCSOLÓ]... KÖNYVTÃR...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"Törli a KÖNYVTÃRAKAT, ha ezek üresek.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" törli a könyvtárat abban az esetben, ha a törlésnek "
+"egyetlen\n"
+" akadálya az, hogy a könyvtár nem üres\n"
+
+#: src/rmdir.c:148
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents törli a KÖNYVTÃRAT, majd megpróbálja törölni a\n"
+" szülőkönyvtárait. Például, az \"rmdir -p a/b/c\" ugyanaz, "
+"mint\n"
+" az \"rmdir a/b/c a/b a\".\n"
+" -v, --verbose minden feldolgozott könyvtár után diagnosztikai üzenetet "
+"ír ki\n"
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Használat: %s [KAPCSOLÓ]... UTOLSÓ\n"
+" vagy: %s [KAPCSOLÓ]... ELSŠUTOLSÓ\n"
+" vagy: %s [KAPCSOLÓ]... ELSŠNÖVEKMÉNY UTOLSÓ\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"Számok kiírása az ELSÅTÅL az UTOLSÓIG, NÖVEKMÉNY lépésenként.\n"
+"\n"
+" -f, --format=FORMÃTUM printf stílusú lebegÅ‘pontos FORMÃTUM használata\n"
+" -s, --separator=KARAKTERLÃNC a KARAKTERLÃNC használata a számok\n"
+" elválasztására (alapértelmezett: \\n)\n"
+" -w, --equal-width szélesség kiegyenlítése bevezető nullákkal való\n"
+" kitöltéssel.\n"
+
+#: src/seq.c:88
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"\n"
+"Ha az ELSŠvagy a NÖVEKMÉNY nincs megadva, akkor az alapértelmezés 1.\n"
+"Ez azt jelenti, hogy a kihagyott NÖVEKMÉNY akkor is 1 lesz "
+"alapértelmezésben,\n"
+"ha az UTOLSÓ kisebb, mint az ELSÅ. Az ELSÅ, NÖVEKMÉNY és UTOLSÓ "
+"lebegőpontos\n"
+"értékekként kerülnek értelmezésre. A NÖVEKMÉNY általában pozitív, ha az "
+"ELSÅ\n"
+"kisebb, mint az UTOLSÓ, és általában negatív, ha az ELSŠnagyobb, mint az \n"
+"UTOLSÓ.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+"A FORMÃTUM argumentumnak alkalmasnak kell lennie egy duplapontos típusú\n"
+"argumentum nyomtatására; az alapértelmezés a %.PONTOSSÃGf, ha az ELSÅ,\n"
+"NÖVEKMÉNY és UTOLSÓ fixpontos decimális számok pontossága legfeljebb "
+"PONTOSSÃG,\n"
+"ellenkező esetben %g\n"
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "érvénytelen lebegőpontos argumentum: %s"
+
+#: src/seq.c:342
+#, c-format
+msgid "invalid format string: %s"
+msgstr "érvénytelen formátum-karakterlánc: %s"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr ""
+"a formátum-karakterlánc nem használható egyenlő szélességű\n"
+"karakterláncok kiírásakor"
+
+#: src/setuidgid.c:51
+#, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Használat: %s FELHASZNÃLÓNÉV PARANCS [ARGUMENTUM]...\n"
+" vagy: %s KAPCSOLÓ\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+"Minden kiegészítÅ‘ csoport eldobása, a megadott FELHASZNÃLÓNÉV felhasználó- "
+"és\n"
+"csoportazonosítójának felvétele és a PARANCS futtatása az esetleg megadott\n"
+"ARGUMENTUMOKKAL. 111-es állapottal lép ki, ha a szükséges UID és GID nem\n"
+"vehető fel. Egyébként a PARANCS kilépési állapotával tér vissza.\n"
+"Ez a program csak akkor hasznos, ha a root (UID=0) futtatja.\n"
+"\n"
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr "ismeretlen felhasználói azonosító: %s"
+
+#: src/setuidgid.c:109
+#, c-format
+msgid "cannot set supplemental group"
+msgstr "a kiegészítő csoport nem állítható be"
+
+#: src/setuidgid.c:114
+#, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "a csoportazonosító nem állítható be a következőre: %lu"
+
+#: src/setuidgid.c:118
+#, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "a felhasználói azonosító nem állítható be a következőre: %lu"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Használat: %s [KAPCSOLÓK] FÃJL [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"A megadott FÃJLT többször egymás után felülírja, így még nagyon költséges\n"
+"hardver megoldásokkal sem lehet könnyen visszaállítani az adatokat.\n"
+"\n"
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force jogosultságok megváltoztatása, ha akadályozzák az írást\n"
+" -n, --iterations=N N-szer írja felül az alapértelmezett %d helyett\n"
+" --random-source=FÃJL véletlenszerű bájtok olvasása a FÃJLBÓL \n"
+" (alapértelmezett: /dev/urandom)\n"
+" -s, --size=N ennyi bájt megsemmisítése (a k, M, G utótagok "
+"megengedettek)\n"
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove fájl csonkítása és törlése felülírás után\n"
+" -v, --verbose folyamat előrehaladásának mutatása\n"
+" -x, --exact nem kerekíti fel a fájlméretet a következő teljes blokkra\n"
+" ez az alapértelmezés nem szabályos fájlok esetén\n"
+" -z, --zero a végén nullákkal írja felül a fájlt, így álcázva a\n"
+" megsemmisítést\n"
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"Ha a FÃJL a -, akkor a szabványos kimenetet semmisíti meg\n"
+"\n"
+"Csak akkor törli a FÃJLOKAT, ha megadod a --remove (-u) kapcsolót.\n"
+"Alapértelmezésben nem törli a fájlokat, mert gyakran használatos\n"
+"eszközfájlokon (például /dev/hda), és ezeket a fájlokat általában nem kell\n"
+"törölni. Ãltalános fájlokon általában használni szokták a --remove "
+"kapcsolót.\n"
+"\n"
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"VIGYÃZAT: A shred működése egy fontos feltételezésen alapul:\n"
+"azon, hogy a fájlrendszer azonnal felülírja az adatokat. Ez a hagyományos\n"
+"eljárás, de sok korszerű fájlrendszer eltér ettől. A következő \n"
+"fájlrendszereken nem, vagy nem minden fájlrendszermód esetén garantált a "
+"shred\n"
+"hatásossága:\n"
+"\n"
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"* naplózó fájlrendszerek, ilyen az AIX és a Solaris fájlrendszere (valamint\n"
+" a JFS, a ReiserFS, az XFS, az Ext3 stb.)\n"
+"\n"
+"* azon fájlrendszerek, amelyek redundánsan írják az adatokat és akkor is\n"
+" továbbhaladnak az írással, ha valamelyik írás sikertelen, ilyenek a\n"
+" RAID alapú fájlrendszerek.\n"
+"\n"
+"* pillanatfelvételeket alkalmazó fájlrendszerek, ilyen a Network Appliance\n"
+" NFS kiszolgálója\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+"* azon fájlrendszerek, amelyek gyorstárai átmeneti helyen találhatók,\n"
+" ilyen az NFS kliens 3-as verziója\n"
+"\n"
+"* tömörített fájlrendszerek\n"
+"\n"
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+"Az ext3 fájlrendszerek esetén csak data=journal módban érvényes a fenti\n"
+"figyelmeztetés (és így a shred csak korlátozott hatékonyságú), amely a\n"
+"fájladatokat is naplózza a metaadatokon kívül. Mind a data=ordered\n"
+"(alapértelmezett) és data=writeback módokban a shred a szokásos módon "
+"működik.\n"
+"Az Ext3 naplózási módjai megváltoztathatók a data=valami kapcsoló "
+"felvételével\n"
+"egy adott fájlrendszer csatlakoztatási kapcsolói közé az /etc/fstab "
+"fájlban,\n"
+"ahogyan az a mount kézikönyvoldalában dokumentálva van (man mount).\n"
+"\n"
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+"Ezen kívül a törölni kívánt fájlnak lehetnek példányai fájlrendszermentésben "
+"vagy\n"
+"egy távoli tükörkiszolgálón. Ezek alapján vissza lehet állítani a "
+"megsemmisített\n"
+"fájlt.\n"
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr "%s: az fdatasync meghiúsult"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr "%s: az fsync meghiúsult"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s: nem lehet visszacsévélni"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: %lu/%lu menet (%s)..."
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s: írási hiba a következő eltolásnál: %s"
+
+#: src/shred.c:478
+#, c-format
+msgid "%s: lseek failed"
+msgstr "%s: az lseek meghiúsult"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s: a fájl túl nagy"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: %lu/%lu menet (%s)...%s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: %lu/%lu menet (%s)...%s/%s %d%%"
+
+#: src/shred.c:776
+#, c-format
+msgid "%s: fstat failed"
+msgstr "%s: az elérés meghiúsult"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: érvénytelen fájltípus"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: a fájl métere negatív"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s: hiba a csonkításnál"
+
+#: src/shred.c:889
+#, c-format
+msgid "%s: fcntl failed"
+msgstr "%s: az fcntl meghiúsult"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr ""
+"%s: nem lehet a megsemmisíteni a csak hozzáfűzésre megnyitott fájlleírót"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: törlés alatt"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: átnevezve a következőre: %s"
+
+#: src/shred.c:1018
+#, c-format
+msgid "%s: failed to remove"
+msgstr "%s: az eltávolítás meghiúsult"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: törölve"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, c-format
+msgid "%s: failed to close"
+msgstr "%s: a bezárás meghiúsult"
+
+#: src/shred.c:1065
+#, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: az írásra megnyitás meghiúsult"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: érvénytelen menetszám"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, c-format
+msgid "multiple random sources specified"
+msgstr "több véletlen forrás van megadva"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: érvénytelen fájlméret"
+
+#: src/shuf.c:51
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Használat: %s [KAPCSOLÓ]... [FÃJL]\n"
+" vagy: %s -e [KAPCSOLÓ]... [ARG]...\n"
+" vagy: %s -i LO-HI [KAPCSOLÓ]...\n"
+
+#: src/shuf.c:57
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"A bemeneti sorok véletlen permutációjának kiírása a szabványos kimenetre.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -e, --echo minden egyes ARG bemeneti sorként való kezelése\n"
+" -i, --input-range=LO-HI a LO és HI közötti számok kezelése bemeneti "
+"sorként\n"
+" -n, --head-lines=SOR legfeljebb SOR darab sor kiírása\n"
+" -o, --output=FÃJL az eredmény kiírása a FÃJLBA a szabványos "
+"kimenet\n"
+" helyett\n"
+" --random-source=FÃJL véletlen bájtok olvasása a FÃJLBÓL\n"
+" (alapértelmezett: /dev/urandom)\n"
+" -z, --zero-terminated sorok lezárása a 0 bájttal az újsor helyett\n"
+
+#: src/shuf.c:287
+#, c-format
+msgid "multiple -i options specified"
+msgstr "több -i kapcsolót adtál meg"
+
+#: src/shuf.c:307
+#, c-format
+msgid "invalid input range %s"
+msgstr "érvénytelen bemeneti tartomány: %s"
+
+#: src/shuf.c:320
+#, c-format
+msgid "invalid line count %s"
+msgstr "érvénytelen sorszám: %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr "több kimeneti fájl van megadva"
+
+#: src/shuf.c:353
+#, c-format
+msgid "cannot combine -e and -i options"
+msgstr "a -e és -i kapcsolók nem kombinálhatók"
+
+#: src/shuf.c:362
+#, c-format
+msgid "extra operand %s\n"
+msgstr "extra operandus: %s\n"
+
+#: src/sleep.c:47
+#, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Használat: %s SZÃM[UTÓTAG]...\n"
+" vagy: %s KAPCSOLÓ\n"
+"Szünet SZÃM másodpercre. Az UTÓTAG lehet \"s\" a másodpercekhez,\n"
+"(alapértelmezett) \"m\" percekhez, \"h\" órákhoz vagy \"d\" napokhoz. A "
+"legtöbb\n"
+"megvalósítással ellentétben, amelyek megkövetelik a SZÃM egész voltát, itt "
+"a\n"
+"SZÃM egy tetszÅ‘leges lebegÅ‘pontos szám lehet. Két vagy több argumentum "
+"megadása esetén a szünet az értékeik összege által megadott időtartamig "
+"tart\n"
+"\n"
+
+#: src/sleep.c:138
+#, c-format
+msgid "invalid time interval %s"
+msgstr "érvénytelen időtartam: %s"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "a valósidejű óra nem olvasható"
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"Az összes FÃJL rendezett konkatenációjának kiírása a szabványos kimenetre.\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+"Rendezési lehetőségek:\n"
+"\n"
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks kezdő üreshelyek figyelmen kívül hagyása\n"
+" -d, --dictionary-order csak üres és alfanumerikus karakterek "
+"figyelembe\n"
+" vétele\n"
+" -f, --ignore-case kisbetűk nagybetűkké alakítása\n"
+
+#: src/sort.c:326
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort összehasonlítás az általános numerikus érték\n"
+" szerint\n"
+" -i, --ignore-nonprinting csak nyomtatható karakterek figyelembe vétele\n"
+" -M, --month-sort összehasonlítás: (ismeretlen) < \"JAN\" < ... "
+"<\n"
+" \"DEC\"\n"
+" -n, --numeric-sort összehasonlítás a karakterlánc numerikus "
+"értéke\n"
+" szerint\n"
+" -R, --random-sort rendezés a kulcsok véletlen hashe alapján\n"
+" --random-source=FÃJL véletlenszerű bájtok olvasása a FÃJLBÓL\n"
+" (alapértelmezett: /dev/urandom)\n"
+" -r, --reverse az összehasonlítások eredményének "
+"megfordítása\n"
+"\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+"Egyéb kapcsolók:\n"
+"\n"
+" -c, --check, --check=diagnose-first\n"
+" a bemenet rendezettségének ellenőrzése; ne "
+"rendezzen\n"
+" -C, --check=quiet, --check=silent mint a -c, de ne jelentse az első hibás "
+"sort\n"
+" --compress-program=PROG ideiglenes fájlok tömörítése a PROG,\n"
+" kibontása a PROG -d segítségével\n"
+" -k, --key=POZ1[,POZ2] egy kulcs kezdése POZ1-nél, befejezése POZ2-nél\n"
+" (kezdet: 1)\n"
+" -m, --merge a már rendezett fájlok összefésülése; ne "
+"rendezzen\n"
+
+#: src/sort.c:346
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+" -o, --output=FÃJL az eredmény írása a FÃJLBA a szabványos kimenet\n"
+" helyett\n"
+" -s, --stable a rendezés stabilizálása az utolsó "
+"újrarendezési\n"
+" összehasonlítás letiltásával\n"
+" -S, --buffer-size=MÉRET a MÉRET használata a fő memóriapufferhez\n"
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=ELV az ELV használata a nem üresről üresre áttérés\n"
+" helyett\n"
+" -T, --temporary-directory=KÖNYVTÃR \n"
+" a KÖNYVTÃR használata az átmeneti fájlokhoz a\n"
+" $TMPDIR vagy a(z) %s helyett;\n"
+" több kapcsolóval több könyvtár adható meg\n"
+" -u, --unique a -c esetén szigorú rendezés ellenőrzése, a\n"
+" -c nélkül csak az elsőt írja ki egy egyenlő\n"
+" menetből\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -z, --zero-terminated a sorok lezárása a 0 bájttal újsor helyett\n"
+
+#: src/sort.c:363
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"A POZ az F[.C][KAPCS] alakú, ahol az F a mező száma és a C a "
+"karakterpozíció\n"
+"a mezőben. Ha sem a -t, sem a -b kapcsoló nincs megadva, akkor a mező\n"
+"karakterei a megelőző üreshely karaktertől lesznek számolva. A KAPCS néhány\n"
+"egybetűs rendezési kapcsoló lehet, amelyek felülbírálják az adott kulcsra\n"
+"vonatkozó globális rendezési kapcsolókat. Ha nincs kulcs megadva, akkor a\n"
+"teljes sort használja kulcsként.\n"
+"\n"
+"A MÉRETET a következő többszöröző utótagok követhetik:\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"% 1% a memóriából, b 1, K 1024 (alapértelmezett), és ugyanígy M, G, T, P, E, "
+"Z, Y\n"
+"\n"
+"Ha a FÃJL nincs megadva, vagy -, akkor a szabványos bemenetet olvassa.\n"
+"\n"
+"*** FIGYELMEZTETÉS ***\n"
+"A környezet által megadott területi beállítások befolyásolják a rendezési\n"
+"sorrendet. Az LC_ALL=C beállításával megkapható a hagyományos rendezési\n"
+"sorrend, amely a natív bájtértékeket használja.\n"
+
+#: src/sort.c:538
+#, c-format
+msgid "waiting for %s [-d]"
+msgstr "várakozás a következőre: %s [-d]"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr "A(z) %s [-d] váratlanul befejeződött"
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "nem hozható létre ideiglenes fájl"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "a megnyitás meghiúsult"
+
+#: src/sort.c:758
+msgid "fflush failed"
+msgstr "az fflush meghiúsult"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "a lezárás meghiúsult"
+
+#: src/sort.c:772
+#, c-format
+msgid "dup2 failed"
+msgstr "a dup2 meghiúsult"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr "nem hajtható végre: %s"
+
+#: src/sort.c:880 src/sort.c:929
+msgid "couldn't create temporary file"
+msgstr "nem hozható létre ideiglenes fájl"
+
+#: src/sort.c:903
+msgid "couldn't open temporary file"
+msgstr "nem nyitható meg ideiglenes fájl"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr "nem hajtható végre: %s -d"
+
+#: src/sort.c:924
+#, c-format
+msgid "couldn't create process for %s -d"
+msgstr "nem hozható létre folymat a következőhöz: %s -d"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "az írás meghiúsult"
+
+#: src/sort.c:975
+#, c-format
+msgid "warning: cannot remove: %s"
+msgstr "figyelmeztetés: a(z) %s nem távolítható el"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "rendezési méret"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "az elérés meghiúsult"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "az olvasás meghiúsult"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: rendezetlenség: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "szabványos hibakimenet"
+
+#: src/sort.c:2562
+#, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: érvénytelen mezőspecifikáció: %s"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr "a következő kapcsolók inkompatibilisak: \"-%s\""
+
+#: src/sort.c:2637
+#, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: érvénytelen szám a(z) %s kezdetén"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "érvénytelen szám a \"-\" után"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "érvénytelen szám a \".\" után"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "véletlen karakter a mezőspecifikációban"
+
+#: src/sort.c:2934
+#, c-format
+msgid "multiple compress programs specified"
+msgstr "több tömörítőprogram van megadva"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "érvénytelen szám a mező kezdeténél"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "a mezőszám nulla"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "karaktereltolás nulla"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "érvénytelen szám a \",\" után"
+
+#: src/sort.c:3142
+#, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "a(z) %s extra operandus nem engedélyezett a -%c kapcsolóval"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Használat: %s [KAPCSOLÓ] [BEMENET [ELÅTAG]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"A BEMENET rögzített méretű darabjainak kiírása az ELÅTAGaa, ELÅTAGab, ...;\n"
+"fájlokba, az alapértelmezett méret az 1000, és az alapértelmezett ELÅTAG az\n"
+"\"x\". Ha a BEMENET nincs megadva, vagy -, akkor a szabványos bemenetet "
+"olvassa.\n"
+"\n"
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=N N hosszúságú utótagok használata (alapértelmezett: "
+"%d)\n"
+" -b, --bytes=MÉRET MÉRET darab bájt kimeneti fájlonként\n"
+" -C, --line-bytes=MÉRET legfeljebb MÉRET darab bájt hosszú sorok kimeneti\n"
+" fájlonként\n"
+" -d, --numeric-suffixes numerikus utótagok használata alfabetikusok "
+"helyett\n"
+" -l, --lines=SZÃM SZÃM darab sor kimeneti fájlonként\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose diagnosztikai üzenet kiírása a szabványos \n"
+" hibakimenetre minden egyes kimeneti fájl "
+"megnyitása\n"
+" előtt\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"A MÉRET rendelkezhet egy többszöröző utótaggal: b = 512, k = 1K, m = 1 "
+"Megabájt.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "A kimenetifájl-utótagok elfogytak"
+
+#: src/split.c:211
+#, c-format
+msgid "creating file %s\n"
+msgstr "%s fájl létrehozása\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "egynél több módon nem lehet darabolni"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: érvénytelen utótaghossz"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: érvénytelen bájtszám"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: érvénytelen sorszám"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "a -%s%c... sorszámolási kapcsoló túl nagy"
+
+#: src/split.c:518
+#, c-format
+msgid "invalid number of lines: 0"
+msgstr "érvénytelen sorszám: 0"
+
+#: src/stat.c:636
+#, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "figyelmeztetés: fel nem ismert védés `\\%c'"
+
+#: src/stat.c:680
+#, c-format
+msgid "%s: invalid directive"
+msgstr "%s: érvénytelen direktíva"
+
+#: src/stat.c:726
+#, c-format
+msgid "warning: backslash at end of format"
+msgstr "figyelmeztetés: visszafelé per a formátum végén"
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr "nem lehet fájlrendszer-információkat beolvasni a következőhöz: %s"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Használat: %s [KAPCSOLÓ] FÃJL...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+"Kijelzi a fájl vagy fájlrendszer állapotát.\n"
+"\n"
+" -L, --dereference kövesse a linkeket\n"
+" -f, --file-system a fájlrendszer állapotát jelzi ki a fájl állapota "
+"helyett\n"
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+" -c --format=FORMÃTUM a megadott FORMÃTUMot használja az alapértelmezett "
+"helyett;\n"
+" minden FORMÃTUM után új sor\n"
+" --printf=FORMÃTUM mint a --format, de értelmezi a visszafelé peres,\n"
+" védelmet és nem tesz kötelezően befejező új sort.\n"
+" Új sorhoz a FORMÃTUMban használd a \\n jelölést.\n"
+" -t, --terse rövid információ kiírása\n"
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"\n"
+"Az érvényes formátumsorozatok fájlokhoz: (a --file-system nélkül):\n"
+"\n"
+" %a Hozzáférési jogok oktálisan\n"
+" %A Hozzáférési jogok ember által olvasható formában\n"
+" %b A lefoglalt blokkok száma (lásd %B)\n"
+" %B A \"%b\" által jelentett egyes blokkok mérete bájtokban\n"
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+" %d Eszközszám decimálisan\n"
+" %D Eszközszám hexadecimálisan\n"
+" %f Nyers mód hexadecimálisan\n"
+" %F Fájltípus\n"
+" %g A tulajdonos csoportazonosítója\n"
+" %G A tulajdonos csoportneve\n"
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+" %h hard linkek száma\n"
+" %i Inode szám\n"
+" %n Fájlnév\n"
+" %N Idézőjelek közé tett fájlnév, követéssel, ha szimbolikus link\n"
+" %o IO blokkméret\n"
+" %s Teljes méret, bájtokban\n"
+" %t Major eszköztípus hexadecimálisan\n"
+" %T Minor eszköztípus hexadecimálisan\n"
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+" %u A tulajdonos felhasználói azonosítója\n"
+" %U A tulajdonos felhasználóneve\n"
+" %x Utolsó hozzáférés ideje\n"
+" %X Utolsó hozzáférés ideje az Epoch óta eltelt másodpercekként\n"
+" %y Utolsó módosítás ideje\n"
+" %Y Utolsó módosítás ideje az Epoch óta eltelt másodpercekként\n"
+" %z Utolsó változtatás ideje\n"
+" %Z Utolsó változtatás ideje az Epoch óta eltelt másodpercekként\n"
+"\n"
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"Az érvényes formátumsorozatok fájlrendszerekhez:\n"
+"\n"
+" %a A nem rendszergazda számára elérhető szabad blokkok\n"
+" %b Adatblokkok összesen a fájlrendszeren\n"
+" %c Fájlcsomópontok összesen a fájlrendszeren\n"
+" %d Szabad fájlcsomópontok a fájlrendszeren\n"
+" %f Szabad blokkok a fájlrendszeren\n"
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+" %i Fájlrendszer-azonosító hexadecimálisan\n"
+" %l Fájlnevek maximális hossza\n"
+" %n Fájlnév\n"
+" %s Blokkméret (gyorsabb átvitelekhez)\n"
+" %S Alapvető blokkméret (blokkszámokhoz)\n"
+" %t Típus hexadecimálisan\n"
+" %T Típus ember által olvasható formában\n"
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Használat: %s [-F ESZKÖZ] [--file=ESZKÖZ] [BEÃLLÃTÃS]...\n"
+" vagy: %s [-F ESZKÖZ] [--file=ESZKÖZ] [-a|--all]\n"
+" vagy: %s [-F ESZKÖZ] [--file=ESZKÖZ] [-g|--save]\n"
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"A terminál jellemzőinek kiírása vagy megváltoztatása.\n"
+"\n"
+" -a, --all az összes aktuális beállítás kiírása ember által "
+"olvasható\n"
+" formában.\n"
+" -g, --save az összes aktuális beállítás kiírása az stty által\n"
+" olvasható formában.\n"
+" -F, --file=ESZKÖZ a megadott ESZKÖZ használata a szabványos bemenet "
+"helyett\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+"\n"
+"A BEÃLLÃTÃSOK elÅ‘tti elhagyható - tagadást jelöl. A * nem POSIX "
+"beállításokat\n"
+"jelöl. Az alapul szolgáló rendszer határozza meg az elérhető beállításokat.\n"
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"\n"
+"Speciális karakterek:\n"
+" * dsusp KAR a KAR egy terminál leállítása szignált fog küldeni a "
+"bemenet\n"
+" kiürítésekor\n"
+" eof KAR a KAR egy fájl végét fog küldeni (a bemenet befejeztetése)\n"
+" eol KAR a KAR lezárja a sort\n"
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+" * eol2 KAR alternatív KAR a sor lezárására\n"
+" erase KAR a KAR törli az utoljára beírt karaktert\n"
+" intr KAR a KAR egy megszakítási szignált fog küldeni\n"
+" kill KAR a KAR törli az aktuális sort\n"
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+" * lnext KAR a KAR hatására a következő karakter idézőjelek között kerül\n"
+" bevitelre\n"
+" quit KAR a KAR egy kilépési szignált fog küldeni\n"
+" * rprnt KAR a KAR újrarajzolja az aktuális sort\n"
+" start KAR a KAR újraindítja a kimenetet annak leállítása után\n"
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+" stop KAR a KAR leállítja a kimenetet\n"
+" susp KAR a KAR egy terminál leállítása szignált küld\n"
+" * swtch KAR a KAR egy másik parancsértelmező-rétegre fog váltani\n"
+" * werase KAR a KAR törli az utoljára begépelt szót\n"
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"\n"
+"Speciális beállítások:\n"
+" N beállítja a bemeneti és kimeneti sebességeket N baudra\n"
+" * cols N közli a kernellel, hogy a terminál N oszloppal rendelkezik\n"
+" * columns N ugyanaz, mint a cols N\n"
+
+# fixme line discipline???
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+" ispeed N beállítja a bemeneti sebességet N-re\n"
+" * line N az N vonalmódszer használata\n"
+" min N az -icanon használatakor N karakteres minimumot állít be "
+"egy\n"
+" befejezett olvasáshoz\n"
+" ospeed N beállítja a kimeneti sebességet N-re\n"
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+" * rows N közli a kernellel, hogy a terminál N sorral rendelkezik\n"
+" * size kiírja a sorok és oszlopok számát a kernellel összhangban\n"
+" speed kiírja a terminál sebességét\n"
+" time N az -icanon használatakor beállítja az olvasási időtúllépést "
+"N\n"
+" tizedmásodpercre\n"
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"\n"
+"Vezérlőbeállítások:\n"
+" [-]clocal modem vezérlőszignálok letiltása\n"
+" [-]cread engedélyezi a bemenet fogadását\n"
+" * [-]crtscts engedélyezi az RTS/CTS kézfogást\n"
+" csN beállítja a karakterméretet N bitre, N értéke [5..8] lehet\n"
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+" [-]cstopb két stop bit használata karakterenként (egy, ha \"-\")\n"
+" [-]hup egy hangup szignál küldése amikor az utolsó folyamat "
+"lezárja\n"
+" a tty-t\n"
+" [-]hupcl ugyanaz, mint a [-]hup\n"
+" [-]parenb paritásbit előállítása a kimenetben és paritásbit\n"
+" feltételezése a bemenetben\n"
+" [-]parodd páratlan paritás beállítása (páros, ha \"-\")\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"\n"
+"Bemeneti beállítások:\n"
+" [-]brkint a sortörés megszakítás szignált okoz\n"
+" [-]icrnl a kocsivissza újsorrá fordítása\n"
+" [-]ignbrk sortörés karakterek figyelmen kívül hagyása\n"
+" [-]igncr kocsivissza figyelmen kívül hagyása\n"
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+" [-]ignpar paritáshibás karakterek figyelmen kívül hagyása\n"
+" * [-]imaxbel hangjelzés és ne ürítse a teli bemeneti puffert karakter\n"
+" érkezésekor\n"
+" [-]inlcr újsor fordítása kocsivissza karakterré\n"
+" [-]inpck bemeneti paritásellenőrzés engedélyezése\n"
+" [-]istrip bemeneti karakterek magas (8.) bitjének törlése\n"
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+" * [-]iutf8 a bemeneti karakterek UTF-8 kódolásának feltételezése\n"
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+" * [-]iuclc nagybetűs karakterek kisbetűssé alakítása\n"
+" * [-]ixany bármely karakter újrakezdheti a kimenetet, nem csak a "
+"start\n"
+" [-]ixoff start/stop karakterek küldésének engedélyezése\n"
+" [-]ixon XON/XOFF folyamvezérlés engedélyezése\n"
+" [-]parmrk paritáshibák jelölése (egy 255-0 karaktersorozattal)\n"
+" [-]tandem ugyanaz, mint a [-]ixoff\n"
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"\n"
+"Kimeneti beállítások:\n"
+" * bsN a backspace késleltetési stílus, N lehet [0..1]\n"
+" * crN a kocsivissza késleltetési stílus, N lehet [0..3]\n"
+" * ffN lapdobás késleltetési stílus, N lehet [0..1]\n"
+" * nlN újsor késleltetési stílus, N lehet [0..1]\n"
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+" * [-]ocrnl a kocsivissza újsorrá fordítása\n"
+" * [-]ofdel delete karakterek használata kitöltéshez null karakterek\n"
+" helyett\n"
+" * [-]ofill kitöltő karakterek használata időzítés helyett a\n"
+" késleltetésekhez\n"
+" * [-]olcuc kisbetűs karakterek nagybetűssé alakítása\n"
+" * [-]onlcr újsor karakterek kocsivissza-újsorrá alakítása\n"
+" * [-]onlret az újsor kocsivisszát hajt végre\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+" * [-]onocr ne írjon ki kocsivissza karaktereket az első oszlopba\n"
+" [-]opost kimenet utófeldolgozása\n"
+" * tabN vízszintes tab késleltetési stílus, N lehet [0..3]\n"
+" * tabs ugyanaz, mint a tab0\n"
+" * -tabs ugyanaz, mint a tab3\n"
+" * vtN függőleges tab késleltetési stílus, N lehet [0..1]\n"
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"\n"
+"Helyi beállítások:\n"
+" [-]crterase az erase karakterek visszaadása mint backspace-szóköz-"
+"backspace\n"
+" * crtkill az összes vonal kilövése az echoprt és echoe beállítások\n"
+" alkalmazásával\n"
+" * -crtkill az összes vonal kilövése az echoctl és echok beállítások\n"
+" alkalmazásával\n"
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+" * [-]ctlecho vezérlőkarakterek visszaadása kalapos jelöléssel (\"^c\")\n"
+" [-]echo bemeneti karakterek visszaadása\n"
+" * [-]echoctl ugyanaz, mint a [-]ctlecho\n"
+" [-]echoe ugyanaz, mint a [-]crterase\n"
+" [-]echok újsor visszaadása egy kill karakter után\n"
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+" * [-]echoke ugyanaz, mint a [-]crtkill\n"
+" [-]echonl újsor visszaadása akkor is, ha más karaktereket nem ad "
+"vissza\n"
+" * [-]echoprt törölt karakterek visszaadása visszafelé, \"\\\" és \"/\" "
+"között\n"
+" [-]icanon az erase, kill, werase és rprnt különleges karakterek\n"
+" bekapcsolása\n"
+" [-]iexten a nem POSIX különleges karakterek bekapcsolása\n"
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+" [-]isig a interrupt, quit és suspend különleges karakterek\n"
+" bekapcsolása\n"
+" [-]noflsh az ürítés kikapcsolása az interrupt és quit különleges\n"
+" karakterek után\n"
+" * [-]prterase ugyanaz, mint a [-]echoprt\n"
+" * [-]tostop azon háttérfolyamatok leállítása, amelyek a terminálra\n"
+" próbálnak írni\n"
+" * [-]xcase az icanon használatakor escape-elés a \"\\\" karakterekkel\n"
+" nagybetűs karakterekhez\n"
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+"\n"
+"Kombinációs beállítások:\n"
+" * [-]LCASE ugyanaz, mint a [-]lcase\n"
+" cbreak ugyanaz, mint a -icanon\n"
+" -cbreak ugyanaz, mint az icanon\n"
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+" cooked ugyanaz, mint a brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof és eol karakterek beállítása az "
+"alapértelmezett\n"
+" értékeikre\n"
+" -cooked ugyanaz, mint a raw\n"
+" crt ugyanaz, mint az echoe echoctl echoke\n"
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+" dec ugyanaz, mint az echoe echoctl echoke -ixany intr ^c erase "
+"0177\n"
+" kill ^u\n"
+" * [-]decctlq ugyanaz, mint a [-]ixany\n"
+" ek erase és kill karakterek beállítása az alapértelmezett\n"
+" értékeikre\n"
+" evenp ugyanaz, mint a parenb -parodd cs7\n"
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+" -evenp ugyanaz, mint a -parenb cs8\n"
+" * [-]lcase ugyanaz, mint az xcase iuclc olcuc\n"
+" litout ugyanaz, mint a -parenb -istrip -opost cs8\n"
+" -litout ugyanaz, mint a parenb istrip opost cs7\n"
+" nl ugyanaz, mint az -icrnl -onlcr\n"
+" -nl ugyanaz, mint az icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+" oddp ugyanaz, mint a parenb parodd cs7\n"
+" -oddp ugyanaz, mint a -parenb cs8\n"
+" [-]parity ugyanaz, mint a [-]evenp\n"
+" pass8 ugyanaz, mint a -parenb -istrip cs8\n"
+" -pass8 ugyanaz, mint a parenb istrip cs7\n"
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+" raw ugyanaz, mint az -ignbrk -brkint -ignpar -parmrk -inpck -"
+"istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw ugyanaz, mint a cooked\n"
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+" sane ugyanaz, mint a cread -ignbrk brkint -inlcr -igncr icrnl\n"
+" -iutf8 -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl "
+"onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, az összes "
+"különleges\n"
+" karakter beállítása az alapértelmezett értékeikre\n"
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"A szabványos bemenetre kötött tty vonalat kezeli. Argumentumok nélkül "
+"kiírja\n"
+"a baud sebességet, vonalmódszert és az eltéréseket az stty sane "
+"beállítástól. A\n"
+"beállításokban a KAR literálisan lesz értelmezve, vagy kódolva mint a ^c, "
+"0x37,\n"
+"0177 vagy 127; a ^- vagy undef különleges értékek a különleges karakterek\n"
+"letiltására használatosak.\n"
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr "csak egyetlen eszköz adható meg"
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+"a bőbeszédű és az stty-által olvasható kimeneti stílusok\n"
+"két egymást kölcsönösen kizáró kapcsoló"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "egy kimeneti stílus megadásakor nem állíthatók be módok"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: nem állítható vissza a nem blokkoló mód"
+
+#: src/stty.c:885 src/stty.c:995
+#, c-format
+msgid "invalid argument %s"
+msgstr "érvénytelen argumentum: %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, c-format
+msgid "missing argument to %s"
+msgstr "a(z) %s argumentuma hiányzik"
+
+#: src/stty.c:976
+#, c-format
+msgid "invalid line discipline %s"
+msgstr "érvénytelen vonalmódszer: %s"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: nem hajtható végre az össze kért művelet"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "új_mód: mód\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: nincsenek méretinformációk ehhez az eszközhöz"
+
+#: src/stty.c:1888
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "érvénytelen egész argumentum: %s"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Jelszó:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: a /dev/tty nem nyitható meg"
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "a csoportok nem állíthatók be"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "a csoportazonosító nem állítható be"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "a felhasználói azonosító nem állítható be"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Használat: %s [KAPCSOLÓ]... [-] [FELHASZNÃLÓ [ARGUMENTUM]...]\n"
+
+#: src/su.c:386
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"A hatásos felhasználói azonosító és csoportazonosító megváltoztatása a\n"
+"FELHASZNÃLÓÉRA.\n"
+"\n"
+" -, -l, --login a parancsértelmező legyen bejelentkezési\n"
+" parancsértelmező\n"
+" -c, --commmand=PARANCS egyetlen PARANCS átadása a "
+"parancsértelmezőnek\n"
+" -f, --fast a -f átadása a parancsértelmezőnek (csh vagy\n"
+" tcsh esetén)\n"
+" -m, --preserve-environment ne állítsa vissza a környezeti változókat\n"
+" -p ugyanaz, mint a -m\n"
+" -s, --shell=PARANCSÉRTELMEZŠa PARANCSÉRTELMEZŠfuttatása, ha az /etc/"
+"shells\n"
+" engedélyezi\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+"\n"
+"egy egyszerű - a -l kapcsolót jelenti. Ha a FELHASZNÃLÓ nincs megadva, akkor "
+"a\n"
+"root az alapértelmezés.\n"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "a(z) %s felhasználó nem létezik"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "helytelen jelszó"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "a(z) %s korlátozott parancsértelmező használata"
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "figyelmeztetés: nem lehet a következő könyvtárba lépni: %s"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Minden egyes FÃJLHOZ ellenÅ‘rzőösszeg és blokkszámok kiírása.\n"
+"\n"
+" -r a -s felülbírálása, a BSD sum algoritmus és 1K blokkok\n"
+" használata\n"
+" -s, --sysv a System V sum algoritmus és 512 bájtos blokkok "
+"használata\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+"A megváltozott blokkokat azonnal kiírja lemezre, frissíti a szuperblokkot\n"
+"\n"
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "minden argumentum figyelmen kívül marad"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+"\n"
+"MEGJEGYZÉS: a parancsértelmező rendelkezhet a(z) %s egy saját\n"
+"változatával, amely általában helyettesíti az itt leírt változatot. Az az "
+"által\n"
+"támogatott kapcsolókkal kapcsolatos részletekért fordulj a parancsértelmező\n"
+"dokumentációjához.\n"
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help ezen súgó megjelenítése és kilépés\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version verzióinformációk megjelenítése és kilépés\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Minden egyes FÃJL kiírása a szabványos kimenetre, az utolsó sorral kezdve.\n"
+"Ha a FÃJL nincs megadva, vagy -, akkor a szabványos bemenetet olvassa.\n"
+"\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before az elválasztó elé és nem utána kerül csatolásra\n"
+" -r, --regex az elválasztó értelmezése szabályos "
+"kifejezésként\n"
+" -s, --separator=KARAKTERLÃNC a KARAKTERLÃNC használata elválasztóként az\n"
+" újsor helyett\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, c-format
+msgid "%s: seek failed"
+msgstr "%s: a keresés meghiúsult"
+
+#: src/tac.c:265
+#, c-format
+msgid "record too large"
+msgstr "a rekord túl nagy"
+
+#: src/tac.c:459
+#, c-format
+msgid "cannot create temporary file %s"
+msgstr "nem hozható létre a következő ideiglenes fájl: %s"
+
+#: src/tac.c:466
+#, c-format
+msgid "cannot open %s for writing"
+msgstr "%s nem nyitható meg olvasásra"
+
+#: src/tac.c:487 src/tac.c:494
+#, c-format
+msgid "%s: write error"
+msgstr "%s: íráshiba"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "az elválasztó nem lehet üres"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Minden egyes FÃJL utolsó %d sorának kiírása a szabványos kimenetre.\n"
+"Több FÃJL esetén mindegyiket megelÅ‘zi egy fejléc, amely megadja a "
+"fájlnevet.\n"
+"Ha a FÃJL nincs megadva, vagy -, akkor a szabványos bemenetet olvassa.\n"
+
+#: src/tail.c:229
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry próbálja megnyitni a fájlt még akkor is, ha nem\n"
+" érhető el a tail indul vagy később válik\n"
+" elérhetetlenné; a név szerinti követésnél, azaz "
+"a\n"
+" --follow=name kapcsolóval együtt hasznos\n"
+" -c, --bytes=N az utolsó N bájt kiírása, ennek "
+"alternatívájaként\n"
+" a +N segítségével lehetséges a kiíratás az "
+"egyes\n"
+" fájlok N. bájtjától kezdve\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={name|descriptor}]\n"
+" a fájl növekedése során hozzáfűzött adatok "
+"kiírása;\n"
+" a -f, --follow és --follow=descriptor "
+"megegyeznek\n"
+" -F ugyanaz, mint a --follow=name --retry\n"
+
+#: src/tail.c:244
+#, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=N az utolsó N sor kiírása az utolsó %d helyett\n"
+" vagy a +N segítségével a sorok az N. bájttól\n"
+" kezdődően írathatók ki\n"
+" --max-unchanged-stats=N\n"
+" a --follow=name kapcsolóval újranyit egy FÃJLT,\n"
+" amely mérete nem változott N (alapértelmezett: %"
+"d)\n"
+" ismétlés után, annak kiderítése érdekében, hogy "
+"az\n"
+" törlésre vagy átnevezésre került-e (ez a "
+"megszokott\n"
+" eset forgatott naplófájlok esetén)\n"
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID a -f kapcsolóval, befejeződik, ha a PID\n"
+" folyamatazonosító megszűnik\n"
+" -q, --quiet, --silent ne írja ki a fájlneveket megadó fejléceket\n"
+" -s, --sleep-interval=S a -f kapcsolóval, aludjon körülbelül S "
+"másodpercig\n"
+" (alapértelmezett: 1.0) az ismétlések között\n"
+" -v, --verbose mindig írja ki a fájlneveket megadó fejléceket\n"
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"Ha az N (a bájtok vagy sorok száma) első karaktere egy + jel, akkor a "
+"kiírás\n"
+"az egyes fájlok N. elemével kezdődik, egyébként az utolsó N elemet írja ki. "
+"Az\n"
+"N rendelkezhet egy többszöröző utótaggal: b 512, k 1024, m 1024*1024.\n"
+"\n"
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"A --follow (-f) kapcsolóval a tail alapértelmezésben a fájlleírót követi, "
+"ez\n"
+"azt jelenti, hogy a tail a fájlt még annak átnevezése után is követi.\n"
+" "
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"Ez az alapértelmezett viselkedés nem fogadható el, ha valójában a fájlnevet\n"
+"és nem a fájlleírót akarod követni (például naplóforgatás esetén). Ebben az\n"
+"esetben használd a --follow=name kapcsolót. Ennek hatására a tail az adott\n"
+"nevű fájlt követi és időközönként megnyitja, így látható, ha törölve lett\n"
+"és egy másik program újra létrehozta.\n"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "%s lezárása (fd=%d)"
+
+#: src/tail.c:411
+#, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: nem lehet a(z) %s relatív eltolásra keresni"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s: nem lehet a(z) %s befejező relatív eltolásra keresni"
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr "%s elérhetetlenné vált"
+
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+"%s le lett cserélve egy követhetetlen fájlra;\n"
+"a program ezen a néven befejezi a próbálkozást"
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr "%s elérhetővé vált"
+
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "%s megjelent; a program az új fájl végét követi"
+
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "%s helyettesítésre került; a program az új fájl végét követi"
+
+#: src/tail.c:1025
+#, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: nem módosítható a nem blokkoló mód"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: a fájl csonkítva"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "nem maradtak fájlok"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+"%s: ezen fájltípus vége nem követhető;\n"
+"a program ezen a néven befejezi a próbálkozást"
+
+#: src/tail.c:1439
+#, c-format
+msgid "number in %s is too large"
+msgstr "a szám túl nagy a következőben: %s"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr ""
+"%s: a változatlan statok maximális száma érvénytelen a megnyitások között"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: érvénytelen PID"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: a másodpercek száma érvénytelen"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr "a kapcsoló érvénytelen kontextusban került felhasználásra: -- %c"
+
+#: src/tail.c:1566
+#, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr ""
+"figyelmeztetés: a --retry elsősorban név szerinti követés esetén hasznos"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+"figyelmeztetés: a PID figyelmen kívül marad; a --pid=PID csak követés\n"
+"esetén hasznos"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "figyelmeztetés: ez a rendszer nem támogatja a --pid=PID kapcsolót"
+
+#: src/tail.c:1667
+#, c-format
+msgid "cannot follow %s by name"
+msgstr "%s nem követhető név szerint"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr "figyelmeztetés: a szabványos bemenet korlátlan követése nem hatékony"
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"A szabványos bemenet másolása minden egyes FÃJLBA, valamint a\n"
+"szabványos kimenetre is.\n"
+"\n"
+" -a, --append hozzáfűzés a megadott FÃJLOKHOZ, felülírás "
+"helyett\n"
+" -i, --ignore-interrupts megszakítási szignálok figyelmen kívül hagyása.\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Ha a FÃJL nincs megadva, vagy -, akkor újra a szabványos bemenetre másol.\n"
+
+#: src/test.c:125
+#, c-format
+msgid "missing argument after %s"
+msgstr "a(z) %s utáni argumentum hiányzik"
+
+#: src/test.c:161
+#, c-format
+msgid "invalid integer %s"
+msgstr "érvénytelen egész: %s"
+
+#: src/test.c:242
+msgid "')' expected"
+msgstr "a program \")\" jelet várt"
+
+#: src/test.c:245
+#, c-format
+msgid "')' expected, found %s"
+msgstr "a program \")\" jelet várt, de a következőt találta: %s"
+
+#: src/test.c:261 src/test.c:606
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: a program egyoperandusú operátort várt"
+
+#: src/test.c:330
+msgid "-nt does not accept -l"
+msgstr "a -nt nem fogadja el a -l kapcsolót"
+
+#: src/test.c:343
+msgid "-ef does not accept -l"
+msgstr "a -ef nem fogadja el a -l kapcsolót"
+
+#: src/test.c:359
+msgid "-ot does not accept -l"
+msgstr "a -ot nem fogadja el a -l kapcsolót"
+
+#: src/test.c:368
+msgid "unknown binary operator"
+msgstr "ismeretlen bináris operátor"
+
+#: src/test.c:634
+#, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: a program bináris operátort várt"
+
+#: src/test.c:694
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Használat: test KIFEJEZÉS\n"
+" vagy: test\n"
+" vagy: [ KIFEJEZÉS ]\n"
+" vagy: [ ]\n"
+" vagy: [ KAPCSOLÓ\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"Kilépés a KIFEJEZÉS által meghatározott állapottal.\n"
+"\n"
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"\n"
+"Egy kihagyott KIFEJEZÉS alapértelmezett értéke hamis. Egyébként a KIFEJEZÉS\n"
+"igaz vagy hamis és beállítja a kilépési állapotot. A KIFEJEZÉS az alábbiak\n"
+"egyike:\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+"\n"
+" ( KIFEJEZÉS ) a KIFEJEZÉS igaz\n"
+" ! KIFEJEZÉS a KIFEJEZÉS hamis\n"
+" KIFEJEZÉS1 -a KIFEJEZÉS2 mind a KIFEJEZÉS1, mind a KIFEJEZÉS2 igaz\n"
+" KIFEJEZÉS1 -o KIFEJEZÉS2 vagy a KIFEJEZÉS1, vagy a KIFEJEZÉS2 igaz\n"
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"\n"
+" -n KARAKTERLÃNC a KARAKTERLÃNC hossza nem nulla\n"
+" KARAKTERLÃNC azonos a -n KARAKTERLÃNCCAL\n"
+" -z KARAKTERLÃNC a KARAKTERLÃNC hossza nulla\n"
+" KARAKTERLÃNC1 = KARAKTERLÃNC2 a karakterláncok azonosak\n"
+" KARAKTERLÃNC1 != KARAKTERLÃNC2 a karakterláncok nem azonosak\n"
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" EGÉSZ1 -eq EGÉSZ2 az EGÉSZ1 egyenlő az EGÉSZ2-vel\n"
+" EGÉSZ1 -ge EGÉSZ2 az EGÉSZ1 nagyobb vagy egyenlő, mint az EGÉSZ2\n"
+" EGÉSZ1 -gt EGÉSZ2 az EGÉSZ1 nagyobb, mint az EGÉSZ2\n"
+" EGÉSZ1 -le EGÉSZ2 az EGÉSZ1 kisebb vagy egyenlő, mint az EGÉSZ2\n"
+" EGÉSZ1 -lt EGÉSZ2 az EGÉSZ1 kisebb, mint az EGÉSZ2\n"
+" EGÉSZ1 -ne EGÉSZ2 az EGÉSZ1 nem egyenlő az EGÉSZ2-vel \n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+"\n"
+" FÃJL1 -ef FÃJL2 a FÃJL1 és a FÃJL2 azonos eszköz- és inode számokkal\n"
+" rendelkeznek\n"
+" FÃJL1 -nt FÃJL2 a FÃJL1 újabb (a módosítás dátuma szerint), mint a "
+"FÃJL2\n"
+" FÃJL1 -ot FÃJL2 a FÃJL1 régebbi, mint a FÃJL2\n"
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+"\n"
+" -b FÃJL a FÃJL létezik és speciális blokkfájl\n"
+" -c FÃJL a FÃJL létezik és speciális karakterfájl\n"
+" -d FÃJL a FÃJL létezik és könyvtár\n"
+" -e FÃJL a FÃJL létezik\n"
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+" -f FÃJL a FÃJL létezik és szabályos fájl\n"
+" -g FÃJL a FÃJL létezik és a setgid bit be van állítva\n"
+" -G FÃJL a FÃJL létezik és a hatásos csoportazonosító tulajdona\n"
+" -h FÃJL a FÃJL létezik és szimbolikus link (ugyanaz, mint a -L)\n"
+" -k FÃJL a FÃJL létezik és a ragadós bit be van állítva\n"
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+" -L FÃJL a FÃJL létezik és szimbolikus link (ugyanaz, mint a -h)\n"
+" -O FÃJL a FÃJL létezik és a hatásos felhasználói azonosító tulajdona\n"
+" -p FÃJL a FÃJL létezik és egy névvel rendelkező csÅ‘vezeték\n"
+" -r FÃJL a FÃJL létezik és olvasható\n"
+" -s FÃJL a FÃJL létezik és mérete nagyobb, mint nulla\n"
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+" -S FÃJL a FÃJL létezik és az egy foglalat\n"
+" -t [FD] az FD fájlleíró (alapértelmezésben a szabványos kimenet) meg "
+"van\n"
+" nyitva egy terminálon\n"
+" -u FÃJL a FÃJL létezik és a setuid bitje be van állítva\n"
+" -w FÃJL a FÃJL létezik és írható\n"
+" -x FÃJL a FÃJL létezik és végrehajtható (vagy kereshetÅ‘)\n"
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"A -h és -L kivételével az összes, a FÃJLLAL kapcsolatos teszt követi a\n"
+"szimbolikus hivatkozásokat. Ne feledje, hogy a zárójeleket escapelni kell\n"
+"(például visszaper jelekkel) a parancsértelmezők számára.\n"
+"Az EGÉSZ lehet -l KARAKTERLÃNC is, ez a KARAKTERLÃNC hosszát veszi fel "
+"értékül.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr "test és/vagy ["
+
+#: src/test.c:831
+msgid "missing `]'"
+msgstr "hiányzó \"]\""
+
+#: src/test.c:846
+#, c-format
+msgid "extra argument %s"
+msgstr "extra argumentum: %s"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "érvénytelen dátumformátum: %s"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "%s létrehozása"
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr "%s elérése sikertelen"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "%s idejének beállítása"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+"Frissíti mindegyik FÃJL elérési és módosítási idejét a jelenlegi idÅ‘re.\n"
+"\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a csak az elérési időt módosítja\n"
+" -c, --no-create nem hoz létre fájlt\n"
+" -d, --date=KARAKTERLÃNC a KARAKTERLÃNC feldolgozása és használata a\n"
+" jelenlegi idő helyett\n"
+" -f (figyelmen kívül marad)\n"
+" -m csak a módosítási időt módosítja\n"
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --reference=FÃJL a FÃJL dátumát használja a jelenlegi idÅ‘ helyett\n"
+" -t IDŠa [[CC]ÉÉ]HHNNóópp[.ss] formátumot használja a \n"
+" jelenlegi idő helyett\n"
+" --time=SZÓ a megadott időt módosítja. A SZÓ lehet:\n"
+" access atime use: ugyanaz, mint a -a\n"
+" modify mtime: ugyanaz, mint a -m\n"
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"Megjegyzés: a -d és -t kapcsolókhoz megadandó dátum- és időformátumok\n"
+"különböznek.\n"
+"\n"
+"Ha a FÃJL a -, akkor a szabványos kimenetre hajtódik végre.\n"
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "az idők nem adhatók meg több forrásból"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+"figyelmeztetés: a \"touch %s\" elavult; helyette használd a\n"
+"\"touch -t %04ld%02d%02d%02d%02d.%02d\" alakot."
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Használat: %s [KAPCSOLÓ]... HALMAZ1 [HALMAZ2]\n"
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Karakterek fordítása, összenyomása és/vagy törlése a szabványos bemenetről\n"
+"és kiírás a szabványos kimenetre.\n"
+"\n"
+" -c, -C, --complement a HALMAZ1 első komplemense\n"
+" -d, --delete a HALMAZ1 karaktereinek törlése, nincs fordítás\n"
+" -s, --squeeze-repeats a HALMAZ1-ben felsorolt karakterek ismétlődő\n"
+" bemeneti sorozatainak helyettesítése a karakter\n"
+" egyetlen előfordulásával\n"
+" -t, --truncate-set1 a HALMAZ1 csonkítása a HALMAZ2 hosszára\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"A HALMAZOK karakterláncokként vannak meghatározva. A legtöbb saját magát\n"
+"képviseli. Az értelmezett sorozatok:\n"
+"\n"
+" \\NNN az NNN oktális értékű karakter (1-3 számjegy)\n"
+" \\\\ visszaper\n"
+" \\a riadó (BEL)\n"
+" \\b visszaper\n"
+" \\f lapdobás\n"
+" \\n újsor\n"
+" \\r kocsivissza\n"
+" \\t vízszintes tab\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v függőleges tab\n"
+" KAR1-KAR2 az összes karakter KAR1 és KAR2 között növekvő sorrendben\n"
+" [KAR*] a HALMAZ2-ben, a KAR másolatai a HALMAZ1 hosszáig\n"
+" [KAR*ISMÉTLÉS] a KAR ISMÉTLÉS darab másolata, az ISMÉTLÉS oktális, ha 0-"
+"val\n"
+" kezdődik\n"
+" [:alnum:] az összes betű és számjegy\n"
+" [:alpha:] az összes betű\n"
+" [:blank:] az összes vízszintes üreshely\n"
+" [:cntrl:] az összes vezérlőkarakter\n"
+" [:digit:] az összes számjegy\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] az összes nyomtatható karakter, kivéve a szóközt\n"
+" [:lower:] az összes kisbetű\n"
+" [:print:] az összes nyomtatható karakter, beleértve a szóközt\n"
+" [:punct:] az összes központozó karakter\n"
+" [:space:] az összes vízszintes vagy függőleges üreshely\n"
+" [:upper:] az összes nagybetű\n"
+" [:xdigit:] az összes hexadecimális számjegy\n"
+" [=KAR=] az összes karakter, amely azonos a KAR karakterrel\n"
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"A fordítás akkor következik be, ha a -d nincs megadva és mind a HALMAZ1,\n"
+"mind a HALMAZ2 megjelenik. A -t csak fordításkor használható. A HALMAZ2\n"
+"kiterjesztésre kerül a HALMAZ1 hosszára az utolsó karakter szükség szerinti\n"
+"ismétlésével. "
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"A HALMAZ2 többletkarakterei figyelmen kívül maradnak. Csak\n"
+"a [:lower:] és [:upper:] kiterjesztése garantált növekvő sorrendben;\n"
+"a HALMAZ2-ben fordításkor csak párban alkalmazhatók a kis- és nagybetűsség\n"
+"átalakításának megadásához. "
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"A -s a HALMAZ1-et használja ha nincs fordítás\n"
+"vagy törlés, különben az összenyomás a HALMAZ2-t használja és a fordítás\n"
+"vagy törlés után megy végbe.\n"
+
+#: src/tr.c:519
+#, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"figyelmeztetés: a nem egyértelmű oktális \\%c%c%c sorozat\n"
+"\ta következőképpen lesz értelmezve: \\0%c%c, %c"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr ""
+"a(z) \"%s-%s\" tartományvégpontok fordított rendezési sorrendben vannak"
+
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "%s ismétlési szám érvénytelen a [c*n] szerkezetben"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "hiányzó karakterosztály-név: \"[::]\""
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "hiányzó egyenlőségosztály-karakter: \"[==]\""
+
+#: src/tr.c:937
+#, c-format
+msgid "invalid character class %s"
+msgstr "érvénytelen karakterosztály: %s"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: az egyenlőségosztály operandusnak egyetlen karakternek kell lennie"
+
+#: src/tr.c:1275
+#, c-format
+msgid "too many characters in set"
+msgstr "túl sok karakter a halmazban"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "a [c*] ismétlési szerkezet nem jelenhet meg az 1. karakterláncban"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "csak egy [c*] ismétlési szerkezet jelenhet meg a 2. karakterláncban"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "[=c=] kifejezések nem jelenhetnek meg a 2. karakterláncban fordításkor"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "a halmaz1 csonkításakor a 2. karakterlánc nem lehet üres"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"kiegészítő karakterosztályokkal való fordításkor a 2. karakterláncnak\n"
+"a tartomány összes karakterét egyre kell leképeznie"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"fordításkor a 2. karakterláncban csak az \"upper\" és a \"lower\"\n"
+"karakterosztályok jelenhetnek meg "
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "a [c*] szerkezet a 2. karakterláncban csak fordításkor jelenhet meg"
+
+#: src/tr.c:1731
+msgid "Two strings must be given when translating."
+msgstr "Fordításkor meg kell adni két karakterláncot."
+
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"Csak egy karakterlánc adható meg az ismétlések összenyomása nélküli "
+"törlésnél."
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "hibásan igazított [:upper:] és/vagy [:lower:] szerkezet"
+
+#: src/true.c:42
+#, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Használat: %s [figyelmen kívül hagyott parancssori argumentumok]\n"
+" vagy: %s KAPCSOLÓ\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr "Kilépés egy sikert jelző állapotkóddal."
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Használat: %s [KAPCSOLÓ] [FÃJL]\n"
+"Teljesen rendezett lista kiírása a FÃJLBAN található részleges rendezéssel\n"
+"összhangban. Ha a FÃJL nincs megadva, vagy -, akkor a szabványos bemenetet\n"
+"olvassa.\n"
+"\n"
+
+#: src/tsort.c:474
+#, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: a bemenet páratlan számú jelsort tartalmaz"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: bemenet hurkot tartalmaz:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Használat: %s [KAPCSOLÓ]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"A szabványos bemenetre kapcsolt terminál fájlnevének kiírása.\n"
+"\n"
+" -s, --silent, --quiet nem ír ki semmit, csak a kilépési állapotot adja\n"
+" vissza\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "nem tty"
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Bizonyos rendszerinformációkat ír ki. KAPCSOLÓ nélkül ugyanaz, mint a -s.\n"
+"\n"
+" -a, --all az össze információ kiírása a következő "
+"sorrendben:\n"
+" kivéve a -p és -i kihagyását, ha ismeretlenek:\n"
+" -s, --kernel-name a kernel nevének kiírása\n"
+" -n, --nodename a hálózati csomópont gépnevének kiírása\n"
+" -r, --kernel-release a kernel kiadásának kiírása\n"
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v, --kernel-version a kernel verziójának kiírása\n"
+" -m, --machine a gép hardvere nevének kiírása\n"
+" -p, --processor a processzor típusának vagy az \"unknown\" szó\n"
+" kiírása\n"
+" -i, --hardware-platform a hardverplatform vagy \"unknown\" az \"unknown\" "
+"szó\n"
+" kiírása\n"
+" -o, --operating-system az operációs rendszer kiírása\n"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "nem kérhető le a rendszer neve"
+
+#: src/unexpand.c:125
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Szóközök átalakítása minden egyes FÃJLBAN tabokká és kiírás a szabványos\n"
+"kimenetre. Ha a FÃJL nincs megadva, vagy -, akkor a szabványos bemenetet\n"
+"olvassa.\n"
+"\n"
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all az összes üreshely karakter átalakítása csak a kezdők\n"
+" helyett\n"
+" --first-only csak a kezdő üreshelykarakter-sorozatok átalakítása\n"
+" (felülbírálja a -a kapcsolót)\n"
+" -t, --tabs=N a tabok N karakter szélesek 8 helyett (bekapcsolja a -a\n"
+" kapcsolót)\n"
+" -t, --tabs=LISTA a tabpozíciók vesszÅ‘kkel elválasztott LISTÃJÃNAK "
+"használata\n"
+" (bekapcsolja a -a kapcsolót)\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr "a tabok túl messze vannak egymástól"
+
+#: src/unexpand.c:512
+#, c-format
+msgid "tab stop value is too large"
+msgstr "a tab méret túl nagy"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Használat: %s [KAPCSOLÓ]... [BEMENET [KIMENET]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"A BEMENETBÅL (vagy szabványos bemenetbÅ‘l) az egymást követÅ‘ azonos sorok\n"
+"eldobása egy kivételével és azok kiírása a KIMENETRE (vagy szabványos\n"
+"kimenetre).\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count a sorok elé az előfordulások számának kiírása\n"
+" -d, --repeated csak a kettőzött sorok kiírása\n"
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated[=elhatárolási-mód] az összes többszörözött sor kiírása\n"
+" elhatárolási-mód={none(alapért.),prepend,separate}\n"
+" Az elhatárolás üres sorokkal valósul meg.\n"
+" -f, --skip-fields=N az első N mező összehasonlításának elkerülése\n"
+" -i, --ignore-case a kis- és nagybetűk nem különböznek "
+"összehasonlításkor\n"
+" -s, --skip-chars=N az első N karakter összehasonlításának elkerülése\n"
+" -u, --unique csak az egyedi sorok kiírása\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+" -w, --check-chars=N a sorokban N-től ne hasonlítson össze több "
+"karaktert\n"
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"Egy mező üreshely karakterek sorozata, amit nem üreshely karakterek "
+"követnek.\n"
+"A mezők karakterek előtti része ki lesz hagyva.\n"
+
+#: src/uniq.c:350
+#, c-format
+msgid "too many repeated lines"
+msgstr "túl sok ismétlődő sor"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "a kihagyandó mezők száma érvénytelen"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "a kihagyandó bájtok száma érvénytelen"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "az összehasonlítandó bájtok száma érvénytelen"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr "az összes kettőzött sor és az ismétlődések kiírása értelmetlen"
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Használat: %s FÃJL\n"
+" vagy: %s KAPCSOLÓ\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"Az unlink függvény meghívása a megadott FÃJL törlése érdekében.\n"
+"\n"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "%s törlése sikertelen"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "a rendszerindítás ideje nem kérhető le"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d.%02d%s fut: "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "de"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "du"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr " ??.???? fut: "
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr "???? nap ??:??, "
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%ld nap"
+msgstr[1] "%ld nap"
+
+#: src/uptime.c:147
+#, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%lu felhasználó"
+msgstr[1] "%lu felhasználó"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", átlagos terh.: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Használat: %s [KAPCSOLÓ]... [ FÃJL ]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Az aktuális idő, a rendszer futásidejének, a rendszer felhasználói számának "
+"és a\n"
+"futási sorban található feladatok átlagos számának kiírása az elmúlt 1, 5 és "
+"15\n"
+"percre vonatkozóan. Ha a FÃJL nincs megadva, akkor a %s fájlt használja.\n"
+"A %s használata általános\n"
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Kiírja, hogy a FÃJL szerint ki van bejelentkezve.\n"
+"Ha a FÃJL nincs megadva, akkor a %s fájlt használja.\n"
+"A %s használata általános\n"
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Újsor, szó és bájtszámokat ír ki minden egyes FÃJLHOZ és a sorok számának\n"
+"összesítését, ha több FÃJL van megadva. Ha a FÃJL nincs megadva, vagy -, "
+"akkor a\n"
+"szabványos bemenetet olvassa.\n"
+" -c, --bytes a bájtszámok kiírása\n"
+" -m, --chars a karakterszámok kiírása\n"
+" -l, --lines az újsorszámok kiírása\n"
+
+#: src/wc.c:121
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" --files0-from=F bemenet olvasása az F fájlban megadott NULL végű "
+"nevek által\n"
+" \n"
+" -L, --max-line-length a leghosszabb sor hosszának kiírása\n"
+" -w, --words szószámok kiírása\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+"fájlnevek szabványos bemenetről való olvasásakor a(z) %s fájlnév nem "
+"engedélyezett"
+
+#: src/who.c:212
+msgid " old "
+msgstr " régi "
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "term="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "kilép="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "óraváltozás"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "futási szint"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "utolsó="
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"# felhasználók=%lu\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "NÉV"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "VONAL"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "IDÅ"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr "ÃœRES"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "MEGJEGYZÉS"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "KILÉP"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Használat: %s [KAPCSOLÓ]... [ FÃJL | ARG1 ARG2 ]\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" -a, --all ugyanaz, mint -b -d --login -p -r -t -T -u\n"
+" -b, --boot az utolsó rendszerindítás ideje\n"
+" -d, --dead döglött folyamatok kiírása\n"
+" -H, --heading oszlopfejléceket tartalmazó sor kiírása\n"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr " -l, --login kiírja a rendszer bejelentkezési folyamatait\n"
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+" --lookup kísérlet a gépnevek egyszerűsítésére a DNS "
+"használatával\n"
+" -m csak a szabványos bemenethez társított gépnév és "
+"felhasználó\n"
+" -p, --process az init által indított aktív folyamatok kiírása\n"
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+" -q, --count az összes bejelentkezési név és a bejelentkezett \n"
+" felhasználók számának kiírása\n"
+" -r, --runlevel a jelenlegi futási szint\n"
+" -s, --short csak a név, vonal és idő kiírása (alapértelmezett)\n"
+" -t, --time az utolsó rendszeróra-változás kiírása\n"
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+" -T, -w, --mesg a felhasználó üzenetállapotának hozzáadása mint +, - "
+"vagy ?\n"
+" -u, --users bejelentkezett felhasználók felsorolása\n"
+" --message ugyanaz, mint a -T\n"
+" --writable ugyanaz, mint a -T\n"
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"Ha a FÃJL nincs megadva, akkor a %s fájlt használja.\n"
+"A %s használata általános a FÃJLKÉNT. Az ARG1 ARG2 hatása azonos\n"
+" a -m kapcsolóval; funkciója csupán a \"who am i\" vagy a \"who mom likes\" "
+"és\n"
+"hasonló parancsok értelmes megválaszolása.\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+"Figyelmeztetés: a -i kapcsoló el lesz távolítva egy következő verzióban;\n"
+"Használd a -u kapcsolót helyette."
+
+#: src/whoami.c:51
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Az aktuális hatásos felhasználói azonosítóhoz társított felhasználónév "
+"kiírása.\n"
+"Ugyanaz, mint az id -un.\n"
+"\n"
+
+#: src/whoami.c:95
+#, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: nem található a név a(z) %lu felhasználói azonosítóhoz\n"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Használat: %s [KARAKTERLÃNC]...\n"
+" vagy: %s KAPCSOLÓ\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"Az összes megadott KARAKTERLÃNCOT vagy az \"y\"-t tartalmazó sor ismételt\n"
+"kiírása.\n"
+"\n"
+
+#~ msgid "strip failed"
+#~ msgstr "a strip sikertelen"
diff --git a/po/insert-header.sin b/po/insert-header.sin
new file mode 100644
index 0000000..b26de01
--- /dev/null
+++ b/po/insert-header.sin
@@ -0,0 +1,23 @@
+# Sed script that inserts the file called HEADER before the header entry.
+#
+# At each occurrence of a line starting with "msgid ", we execute the following
+# commands. At the first occurrence, insert the file. At the following
+# occurrences, do nothing. The distinction between the first and the following
+# occurrences is achieved by looking at the hold space.
+/^msgid /{
+x
+# Test if the hold space is empty.
+s/m/m/
+ta
+# Yes it was empty. First occurrence. Read the file.
+r HEADER
+# Output the file's contents by reading the next line. But don't lose the
+# current line while doing this.
+g
+N
+bb
+:a
+# The hold space was nonempty. Following occurrences. Do nothing.
+x
+:b
+}
diff --git a/po/it.gmo b/po/it.gmo
new file mode 100644
index 0000000..70e2902
--- /dev/null
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
new file mode 100644
index 0000000..b76ae39
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,9766 @@
+# Italian messages for GNU coreutils
+# Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+# Marco d'Itri <md@linux.it>, 1998, 1999.
+# Giovanni Bortolozzo <borto@dei.unipd.it>, 1998.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 4.5.1\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2002-07-24 18:12+0200\n"
+"Last-Translator: Marco d'Itri <md@linux.it>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "impostazione dei permessi di %s"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "impostazione dei permessi di %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "argomento %s non valido per %s"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argomento %s ambiguo per %s"
+
+#: lib/argmatch.c:154
+#, fuzzy, c-format
+msgid "Valid arguments are:"
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+"Gli argomenti validi sono:\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+"Sono caratteri validi:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "errore di scrittura"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Errore di sistema sconosciuto"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "impossibile fare stat di %s"
+
+#: lib/file-type.c:39
+#, fuzzy
+msgid "regular empty file"
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+"file regolare vuoto\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+"file normale vuoto"
+
+#: lib/file-type.c:39
+#, fuzzy
+msgid "regular file"
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+"file regolare\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+"file normale"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "directory"
+
+#: lib/file-type.c:45
+#, fuzzy
+msgid "block special file"
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+"file speciale a blocchi\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+"file speciali a blocchi"
+
+#: lib/file-type.c:48
+#, fuzzy
+msgid "character special file"
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+"file speciale a caratteri\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+"file speciali a caratteri"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "fifo"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "link simbolico"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "socket"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "coda di messaggi"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "semaforo"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "oggetto di memoria condivisa"
+
+#: lib/file-type.c:69
+#, fuzzy
+msgid "typed memory object"
+msgstr "oggetto di memoria condivisa"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "file strano"
+
+#: lib/gai_strerror.c:44
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "i file fifo non sono gestiti"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "i file fifo non sono gestiti"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr ""
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "i file fifo non sono gestiti"
+
+#: lib/gai_strerror.c:54
+#, fuzzy
+msgid "System error"
+msgstr "errore di scrittura"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+#, fuzzy
+msgid "Unknown error"
+msgstr "Errore di sistema sconosciuto"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: l'opzione `%s' è ambigua\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, fuzzy, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+"%s: opzione `--%s' non accetta argomenti\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+"%s: l'opzione `--%s' non accetta argomenti\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: l'opzione `%c%s' non accetta argomenti\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: l'opzione `%s' richiede un argomento\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: opzione `--%s' non riconosciuta\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: opzione `%c%s' non riconosciuta\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: opzione illecita -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: opzione non valida -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: l'opzione richiede un argomento -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: l'opzione `-W %s' è ambigua\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: l'opzione `-W %s' non accetta argomenti\n"
+
+#: lib/human.c:477
+#, fuzzy
+msgid "block size"
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+"dimensioni del blocco\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+"dimensioni dei blocchi"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "impossibile cambiare i permessi di %s"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "impossibile creare la directory %s"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "memoria esaurita"
+
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr ""
+"Stampa il nome file completo dell'attuale directory di lavoro.\n"
+"\n"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "'"
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "%s: rinominato in %s"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: process id non valido"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "data `%s' non valida"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "memoria esaurita"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: process id non valido"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "%s: process id non valido"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "%s: process id non valido"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "%s: process id non valido"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr ""
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr ""
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[sSyY]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "la funzione iconv non è utilizzabile"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "la funzione iconv non è disponibile"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "carattere fuori dall'intervallo"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "impossibile convertire U+%04X nel set di caratteri locale"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "impossibile convertire U+%04X nel set di caratteri locale: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "utente non valido"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "gruppo non valido"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "utente non valido"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Scritto da %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Scritto da %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, fuzzy, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Scritto da %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr "Scritto da %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr "Scritto da %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xfts.c:58
+#, fuzzy, c-format
+msgid "invalid argument: %s"
+msgstr "argomento `%s' non valido"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "confronto delle stringhe fallito"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Imposta LC_ALL='C' per aggirare il problema."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, fuzzy, c-format
+msgid "The strings compared were %s and %s."
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+"Le stringhe confrontate erano %s e %s.\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+"Le stringhe confrontate sono %s e %s."
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "confronto delle stringhe fallito"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "data `%s' non valida"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "data `%s' non valida"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s: file troppo grande"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Usare `%s --help' per ulteriori informazioni.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr " --version stampa le informazioni sulla versione ed esce\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+"\n"
+"Segnalare i bug a <%s>.\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+"\n"
+"Segnalate i bug a <%s>.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "errore di lettura"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "numero %s non valido"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "dimensioni di tabulazione non valide: %s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr ""
+
+#: src/base64.c:316 src/cat.c:785
+#, fuzzy, c-format
+msgid "closing standard input"
+msgstr "standard input"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s NOME [SUFFISSO]\n"
+" o: %s OPZIONE\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Stampa il NOME rimuovendo tutte le componenti di directory iniziali.\n"
+"Se specificato, rimuove anche il SUFFISSO finale.\n"
+"\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, fuzzy, c-format
+msgid "missing operand"
+msgstr "manca l'operando dopo `%s'"
+
+#: src/cat.c:95
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Uso: %s [OPZIONE] FILE...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+#: src/cat.c:333
+#, fuzzy, c-format
+msgid "cannot do ioctl on %s"
+msgstr "impossibile aprire la directory %s"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "standard output"
+
+#: src/cat.c:720
+#, fuzzy, c-format
+msgid "%s: input file is output file"
+msgstr "%s: dimensione del file non valida"
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "gruppo %s non valido"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Uso: %s [OPZIONE]... GRUPPO FILE...\n"
+" o: %s [OPZIONE]... --reference=RFILE FILE...\n"
+
+#: src/chgrp.c:117
+#, fuzzy
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Cambia l'appartenenza al gruppo di ogni FILE in GRUPPO.\n"
+"\n"
+" -c, --changes come verbose ma segnala solo i cambiamenti\n"
+" --dereference agisce sul file a cui si riferisce ogni link\n"
+" simbolico invece che sul link stesso\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+#, fuzzy
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference agisce sui link simbolici invece che sui file a "
+"cui\n"
+" si riferiscono (disponibile solo sui sistemi che\n"
+" possono cambiare il proprietario di un symlink)\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chgrp.c:134
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet sopprime la maggior parte dei messaggi di errore\n"
+" --reference=RFILE usa il gruppo di RFILE piuttosto che il GRUPPO\n"
+" -R, --recursive opera ricorsivamente su file e directory\n"
+" -v, --verbose mostra un diagnostico per ogni file elaborato\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr ""
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, fuzzy, c-format
+msgid "missing operand after %s"
+msgstr "manca l'operando dopo `%s'"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "impossibile leggere gli attributi di %s"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "lettura dei nuovi attributi di %s"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "né il link simbolico %s né il file di riferimento sono cambiati\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "il modo di %s è diventato %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "impossibile cambiare il modo di %s in %04lo (%s)\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "il modo di %s è rimasto %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "impossibile accedere a %s"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, fuzzy, c-format
+msgid "cannot read directory %s"
+msgstr "impossibile creare la directory %s"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "ripristino dei permessi di %s"
+
+#: src/chmod.c:286
+#, fuzzy, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "impostazione dei permessi di %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, fuzzy, c-format
+msgid "fts_read failed"
+msgstr "strip fallito"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Uso: %s [OPZIONE]... MODO[,MODO]... FILE...\n"
+" o: %s [OPZIONE]... MODO-OTTALE FILE...\n"
+" o: %s [OPZIONE]... --reference=RFILE FILE...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chmod.c:360
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+"Cambia in MODO i permessi di ogni file.\n"
+"\n"
+" -c, --changes come verbose ma segnala solo i cambiamenti\n"
+" -f, --silent, --quiet sopprime la maggior parte dei messaggi di errore\n"
+" -v, --verbose mostra un diagnostico per ogni file processato\n"
+" --reference=RFILE usa il modo di RFILE invece che i valori di MODO\n"
+" -R, --recursive cambia file e directory ricorsivamente\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr ""
+
+#: src/chmod.c:510
+#, fuzzy, c-format
+msgid "invalid mode: %s"
+msgstr "modo %s non valido"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "il proprietario di %s è stato cambiato in %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "il gruppo di %s è stato cambiato in %s\n"
+
+#: src/chown-core.c:149
+#, fuzzy, c-format
+msgid "no change to ownership of %s\n"
+msgstr "proprietario di %s è stato cambiato"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "impossibile cambiare il proprietario di %s in %s\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "impossibile cambiare il gruppo di %s in %s\n"
+
+#: src/chown-core.c:154
+#, fuzzy, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "impossibile cambiare il proprietario di %s in %s\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "il proprietario di %s è rimasto %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "il gruppo di %s è rimasto %s\n"
+
+#: src/chown-core.c:159
+#, fuzzy, c-format
+msgid "ownership of %s retained\n"
+msgstr "il proprietario di %s è rimasto %s\n"
+
+#: src/chown-core.c:344
+#, fuzzy, c-format
+msgid "cannot dereference %s"
+msgstr "impossibile rimuovere %s"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "proprietario di %s è stato cambiato"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "il gruppo di %s è stato cambiato"
+
+#: src/chown.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Uso: %s [OPZIONE]... GRUPPO FILE...\n"
+" o: %s [OPZIONE]... --reference=RFILE FILE...\n"
+
+#: src/chown.c:98
+#, fuzzy
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Cambia il proprietario e/o il gruppo di ogni FILE in PROPRIETARIO e/o "
+"GRUPPO.\n"
+"\n"
+" -c, --changes come verbose ma segnala solo le modifiche "
+"effettuate\n"
+" --dereference agisce sui file puntati dai link simbolici\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=ATTUALE_PROPRIETARIO:ATTUALE_GRUPPO\n"
+" cambia il proprietario e/o il gruppo di ogni file\n"
+" solo se il suo attuale proprietario e/o gruppo\n"
+" corrisponde a quello specificato qui. Ciascuno può\n"
+" essere omesso, e in questo caso non è richiesto "
+"che\n"
+" corrisponda.\n"
+
+#: src/chown.c:122
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet sopprime la maggior parte dei messaggi di errore\n"
+" --reference=RFILE usa il proprietario e gruppo di RFILE piuttosto "
+"che\n"
+" i valori PROPRIETARIO:GRUPPO specificati\n"
+" -R, --recursive opera ricorsivamente su file e directory\n"
+" -v, --verbose mostra un diagnostico per ogni file elaborato\n"
+
+#: src/chown.c:144
+#, fuzzy
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"Il proprietario resta immutato se mancante. Il gruppo resta immutato se\n"
+"mancante, ma cambiato al gruppo di login se reso implicito da `:'.\n"
+"PROPRIETARIO e GRUPPO possono essere sia numerici che simbolici.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [OPZIONE] NUOVAROOT [COMANDO...]\n"
+" o: %s OPZIONE\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"Esegue il COMANDO con la root directory impostata a NUOVAROOT.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"Se non è dato alcun comando, lancia ``${SHELL} -i'' (predefinita: /bin/sh).\n"
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "impossibile cambiare la root directory a %s"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "impossibile fare chdir alla root directory"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, fuzzy, c-format
+msgid "cannot run command %s"
+msgstr "impossibile scollegare %s"
+
+#: src/cksum.c:217
+#, fuzzy, c-format
+msgid "%s: file too long"
+msgstr "%s: file troppo grande"
+
+#: src/cksum.c:265
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Uso: %s FILE\n"
+" o: %s OPZIONE\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+
+#: src/comm.c:73 src/join.c:134
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Uso: %s [OPZIONE]... [ FILE ]\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr ""
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "impossibile preservare il proprietario di %s"
+
+#: src/copy.c:222
+#, fuzzy, c-format
+msgid "failed to lookup file %s"
+msgstr "impossibile preservare l'orario di %s"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "impossibile preservare l'autore di di %s"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "impossibile aprire %s per la lettura"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "impossibile fare fstat di %s"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "salto il file %s perché è stato rimpiazzato mentre veniva copiato"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "impossibile rimuovere %s"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "%s rimosso\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "impossibile creare il file normale %s"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "lettura di %s"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "impossibile fare lseek in %s"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "scrittura di %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "preservato l'orario di %s"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "chiusura di %s"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: sovrascrivo %s ignorando il modo %04lo? "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: sovrascrivo %s? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (backup: %s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "directory %s omessa"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "attenzione: il file di origine %s è stato specificato più di una volta"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s e %s sono lo stesso file"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "impossibile sovrascrivere la non-directory %s con la directory %s"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "il %1$s appena creato non sarà sovrascritto da %2$s"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "impossibile sovrascrivere la directory %s con una non-directory"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "impossibile spostare una directory in una non-directory: %s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "il backup di %s distruggerebbe l'origine; %s non spostato"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "il backup di %s distruggerebbe l'origine; %s non copiato"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "impossibile fare il backup di %s"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "impossibile copiare la directory %s dentro sè stessa, %s"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "impossibile creare l'hard link %s alla directory %s"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "impossibile creare l'hard link %s a %s"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "impossibile spostare %s in una subdirectory di sè stesso, %s"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "impossibile spostare %s in %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+"spostamento tra dispositivi fallito: %s in %s; impossibile rimuovere\n"
+"la destinazione"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "impossibile copiare il link simbolico ciclico %s"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr ""
+"%s: si possono fare link simbolici relativi solo nella directory corrente"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "impossibile creare il link simbolico %s a %s"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "impossibile creare il link %s"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "impossibile creare il fifo %s"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "impossibile creare il file speciale %s"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "impossibile leggere il link simbolico %s"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "impossibile creare il link simbolico %s"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s ha il tipo di file sconosciuto"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "impossibile annullare il backup di %s"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (annullamento backup)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Uso: %s [OPZIONE]... ORIGINE DESTINAZIONE\n"
+" o: %s [OPZIONE]... ORIGINE... DIRECTORY\n"
+" o: %s [OPZIONE]... --target-directory=DIRECTORY ORIGINE...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Copia SORGENTE su DESTINAZIONE, o SORGENTI multiple nella DIRECTORY.\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+#, fuzzy
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+"Gli argomenti obbligatori per le opzioni lunghe lo sono anche per quelle "
+"brevi.\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+"Gli argomenti obbligatori per le opzioni lunghe lo sono anche per quelle "
+"corte.\n"
+
+#: src/cp.c:170
+#, fuzzy
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive come -dpR\n"
+" --backup[=TIPO] fa il backup di ogni file di destinazione\n"
+" -b come --backup ma non accetta un argomento\n"
+" --copy-contents quando agisce ricorsivamente copia il "
+"contenuto\n"
+" dei file speciali\n"
+" -d come --no-dereference --preserve=link\n"
+
+#: src/cp.c:177
+#, fuzzy
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" --no-dereference non segue mai i link simbolici\n"
+" -f, --force se non è possibile aprire un file di\n"
+" destinazione esistente lo rimuove e "
+"riprova\n"
+" -i, --interactive chiede prima di sovrascrivere\n"
+" -H segue i link simbolici sulla riga di comando\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+#, fuzzy
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+
+#: src/cp.c:196
+#, fuzzy
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents append source path to DIRECTORY\n"
+" -P same as `--no-dereference'\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive copia le directory ricorsivamente\n"
+" --remove-destination rimuove ogni file di destinazione esistente\n"
+" prima di cercare di aprirlo (in contrasto\n"
+" a --force)\n"
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --reply={yes,no,query} specifica come gestire la domanda a "
+"proposito\n"
+" di un file di destinazione già esistente\n"
+" --sparse=WHEN controlla la creazione dei file sparsi\n"
+" --strip-trailing-slashes rimuove gli slash dalla fine di ogni "
+"ORIGINE\n"
+
+#: src/cp.c:210
+#, fuzzy
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link fa link simbolici invece di copiare\n"
+" -S, --suffix=SUFFISSO cambia il normale suffisso dei backup\n"
+" --target-directory=DIRECTORY sposta ogni ORIGINE nella DIRECTORY\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update sposta solo quando ORIGINE è più recente del\n"
+" file di destinazione o questo è mancante\n"
+" -v, --verbose spiega cosa sta facendo\n"
+" -x, --one-file-system rimane su questo file system\n"
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"Normalmente, i file di ORIGINE sparsi sono individuati da un'euristica\n"
+"approssimativa e sono resi sparsi anche i file di DESTINAZIONE "
+"corrispondenti.\n"
+"Questo è il comportamento selezionabile con --sparse=auto. Specificare\n"
+"--sparse=always per creare un file di DESTINAZIONE sparso ogni qualvolta il\n"
+"file di ORIGINE contiene una sequenza abbastanza lunga di byte zero.\n"
+"Usare --sparse=never per inibire la creazione dei file sparsi.\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Il suffisso dei backup è ~, a meno che sia impostato con --suffix oppure\n"
+"SIMPLE_BACKUP_SUFFIX. Il metodo di controllo di versione può essere scelto\n"
+"con l'opzione --backup o la variabile di ambiente VERSION_CONTROL. I valori\n"
+"sono:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off non fa mai backup (anche se è specificato --backup)\n"
+" numbered, t fa backup numerati\n"
+" existing, nil numerati se esistono backup numerati, altrimenti semplici\n"
+" simple, never fa sempre backup semplici\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Come caso particolare, cp fa un backup di ORIGINE quando sono usate le "
+"opzioni\n"
+"force e backup e ORIGINE e DEST sono lo stesso nome di un file normale già\n"
+"esistente.\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "impossibile preservare l'orario di %s"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "impossibile preservare i permessi di %s"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "impossibile creare la directory %s"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s esiste ma non è una directory"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "accedo a %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, fuzzy, c-format
+msgid "missing file operand"
+msgstr "manca il file argomento"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, fuzzy, c-format
+msgid "missing destination file operand after %s"
+msgstr "manca il file di destinazione"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, fuzzy, c-format
+msgid "target %s is not a directory"
+msgstr "l'obiettivo specificato, %s, non è una directory"
+
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "quando preserva i percorsi, la destinazione deve essere una directory"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr ""
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, fuzzy, c-format
+msgid "multiple target directories specified"
+msgstr "sono state specificate opzioni -l o -t multiple"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "impossibile fare contermporaneamente hard link e link simbolici"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "tipo di backup"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr ""
+
+#: src/csplit.c:669 src/csplit.c:680
+#, fuzzy, c-format
+msgid "%s: line number out of range"
+msgstr "%s: numero di passi non valido"
+
+#: src/csplit.c:709
+#, fuzzy, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: numero di passi non valido"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr ""
+
+#: src/csplit.c:755
+#, c-format
+msgid "%s: %s: match not found"
+msgstr ""
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr ""
+
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "errore di scrittura"
+
+#: src/csplit.c:1060
+#, fuzzy, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "manca l'operando dopo `%s'"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr ""
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr ""
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr ""
+
+#: src/csplit.c:1130
+#, fuzzy, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: process id non valido"
+
+#: src/csplit.c:1163
+#, fuzzy, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: segnale non valido"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr ""
+
+#: src/csplit.c:1172
+#, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr ""
+
+#: src/csplit.c:1178
+#, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr ""
+
+#: src/csplit.c:1231
+#, fuzzy, c-format
+msgid "invalid format width"
+msgstr "formato di orario %s non valido"
+
+#: src/csplit.c:1252
+#, fuzzy, c-format
+msgid "invalid format precision"
+msgstr "stringa di formato non valida: `%s'"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr ""
+
+#: src/csplit.c:1279
+#, fuzzy, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "conversione non valida: %s"
+
+#: src/csplit.c:1282
+#, fuzzy, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "conversione non valida: %s"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr ""
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr ""
+
+#: src/csplit.c:1364
+#, fuzzy, c-format
+msgid "%s: invalid number"
+msgstr "numero %s non valido"
+
+#: src/csplit.c:1474
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Uso: %s [OPZIONE]... FILE...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/csplit.c:1486
+#, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Uso: %s [OPZIONE]... [FILE]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+
+#: src/cut.c:204
+#, fuzzy
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -w, --width=COL lo schermo è largo COL invece del'attuale "
+"valore\n"
+" -x elenca le voci per righe invece che per "
+"colonne\n"
+"\"\" -X ordina alfabeticamente secondo le "
+"estensioni\n"
+" -1 elenca un file per riga\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+#, fuzzy
+msgid "invalid byte or field list"
+msgstr "formato di orario %s non valido"
+
+#: src/cut.c:469
+#, fuzzy, c-format
+msgid "byte offset %s is too large"
+msgstr "%s: file troppo grande"
+
+#: src/cut.c:472
+#, fuzzy, c-format
+msgid "field number %s is too large"
+msgstr "numero %s non valido"
+
+#: src/cut.c:776 src/cut.c:784
+#, fuzzy
+msgid "only one type of list may be specified"
+msgstr "può essere specificato un solo dispositivo"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr ""
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr ""
+
+#: src/cut.c:831
+#, fuzzy
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr ""
+"la stringa di formato non può essere specificata quando si stampano "
+"stringhe\n"
+"a ugual larghezza"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+
+#: src/cut.c:851
+#, fuzzy
+msgid "missing list of fields"
+msgstr "manca il file di destinazione"
+
+#: src/cut.c:853
+#, fuzzy
+msgid "missing list of positions"
+msgstr "manca il file di destinazione"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Uso: %s [OPZIONE]... [+FORMATO]\n"
+" o: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+
+#: src/date.c:143
+#, fuzzy
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+" -r, --reference=FILE visualizza l'orario dell'ultima modifica di "
+"FILE\n"
+" -R, --rfc-822 stampa una stringa di data conforme a RFC-822\n"
+" -s, --set=STRINGA imposta l'orario descritto da STRINGA\n"
+" -u, --utc, --universal stampa o imposta il Coordinated Universal Time\n"
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+#, fuzzy
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"\n"
+"FORMATO controlla l'output. Le sole opzioni valide per la seconda forma\n"
+"specificano il Coordinated Universal Time. Le sequenze interpretate sono:\n"
+"\n"
+" %% un %% letterale\n"
+" %a nome localizzato abbreviato del giorno della settimana (lun..dom)\n"
+
+#: src/date.c:167
+#, fuzzy
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A nome localizzato completo del giorno della settimana, lunghezza\n"
+" variabile (lunedì..domenica)\n"
+" %b nome localizzato abbreviato del mese (gen..dic)\n"
+" %B nome localizzato completo del mese, lunghezza var. (gennaio.."
+"dicembre)\n"
+" %c data e ora localizzate (sab nov 04 12:02:33 CET 1989)\n"
+
+#: src/date.c:173
+#, fuzzy
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C secolo (anno diviso per 100 e troncato a intero) [00-99]\n"
+" %d giorno del mese (01..31)\n"
+" %D data (mm/dd/yy)\n"
+" %e giorno del mese con spazi ( 1..31)\n"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h come %b\n"
+" %H ora (00..23)\n"
+" %I ora (01..12)\n"
+" %j giorno dell'anno (001..366)\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k ora ( 0..23)\n"
+" %l ora ( 1..12)\n"
+" %m mese (01..12)\n"
+" %M minuto (00..59)\n"
+
+#: src/date.c:196
+#, fuzzy
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+" %n un newline\n"
+" %N nanosecondi (000000000..999999999)\n"
+" %p indicatore AM o PM localizzato e maiuscolo (nullo in molti locali)\n"
+" %P indicatore am o pm localizzato e minuscolo (nullo in molti locali)\n"
+" %r orario, 12-ore (hh:mm:ss [AP]M)\n"
+" %R orario, 24-ore (hh:mm)\n"
+" %s secondi passati dalle `00:00:00 del 1 gen 1970' (estensione GNU)\n"
+
+#: src/date.c:205
+#, fuzzy
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+" %S secondi (00..60)\n"
+" %t un tab orizzontale\n"
+" %T orario, 24-ore (hh:mm:ss)\n"
+" %u giorno della settimana (1..7); 1 rappresenta lunedì\n"
+
+#: src/date.c:211
+#, fuzzy
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U numero della settimana dell'anno con domenica come primo giorno "
+"della\n"
+" settimana (00..53)\n"
+" %V numero della settimana dell'anno con lunedì come primo giorno della\n"
+" settimana (01..52)\n"
+" %w giorno della settimana (0..6); 0 rappresenta domenica\n"
+" %W numero della settimana dell'anno con lunedì come primo giorno della\n"
+" settimana (00..53)\n"
+
+#: src/date.c:217
+#, fuzzy
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x rappresentazione localizzata della data (gg/mm/aa)\n"
+" %X rappresentazione localizzata dell'ora (%H:%M:%S)\n"
+" %y ultime due cifre dell'anno (00..99)\n"
+" %Y anno (1970...)\n"
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "standard input"
+
+#: src/date.c:297 src/date.c:517
+#, fuzzy, c-format
+msgid "invalid date %s"
+msgstr "data `%s' non valida"
+
+#: src/date.c:408 src/date.c:442
+#, fuzzy, c-format
+msgid "multiple output formats specified"
+msgstr "sono state specificate opzioni -l o -t multiple"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr ""
+"le opzioni per specificare la stampa di date sono mutualmente esclusive"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr ""
+"le opzioni per stampare e impostare l'orario non possono essere usate insieme"
+
+#: src/date.c:448
+#, fuzzy, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"manca un `+' davanti all'argomento `%s';\n"
+"quando si usa un'opzione per specificare una o più date, qualsiasi "
+"argomento\n"
+"che non sia un'opzione deve essere una stringa di formato che inizia con `+'"
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "impossibile impostare la data"
+
+#: src/date.c:548 src/du.c:425
+#, fuzzy, c-format
+msgid "time %s is out of range"
+msgstr "offset del file fuori scala"
+
+#: src/dd.c:404
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [STRINGA]...\n"
+" o: %s OPZIONE\n"
+
+#: src/dd.c:409
+#, fuzzy
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"Copia un file, convertendolo e formattandolo secondo le opzioni.\n"
+"\n"
+" bs=BYTE forza ibs=BYTE e obs=BYTE\n"
+" cbs=BYTE converte BYTE byte per volta\n"
+" conv=PAROLE converte il file secondo la lista di PAROLE chiave "
+"separate\n"
+" da virgole\n"
+" count=BLOCCHI copia dall'input solo un certo numero di BLOCCHI\n"
+" ibs=BYTE legge BYTE byte per volta\n"
+
+#: src/dd.c:418
+#, fuzzy
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=FILE legge da FILE invece che da stdin\n"
+" obs=BYTE scrive BYTE byte per volta\n"
+" of=FILE scrive su FILE invece che su stdout\n"
+" seek=BLOCCHI salta un numero di BLOCCHI lunghi obs all'inizio "
+"dell'output\n"
+" skip=BLOCCHI salta un numero BLOCCHI lunghi ibs all'inizio dell'input\n"
+
+#: src/dd.c:428
+#, fuzzy
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"BLOCCHI e BYTE possono essere seguito da uno di questi suffissi "
+"moltiplicatori:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1,000,000, M 1,048,576,\n"
+"GB 1,000,000,000, G 1,073,741,824 e così via per T, P, E, Z e Y.\n"
+"Ogni PAROLA può essere:\n"
+"\n"
+
+#: src/dd.c:437
+#, fuzzy
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii da EBCDIC a ASCII\n"
+" ebcdic da ASCII a EBCDIC\n"
+" ibm da ASCII a EBCDIC alternativo\n"
+" block completa con spazi fino a cbs i record terminati da newline\n"
+" unblock sostituisce con newline gli spazi alla fine di un record lungo "
+"cbs\n"
+" lcase cambia le maiuscole in minuscole\n"
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "%s: la directory obiettivo specificata non è una directory"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "record troncato"
+msgstr[1] "record troncato"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr ""
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ""
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "chiusura del file di input %s"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "chiusura del file di output %s"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "scrittura di %s"
+
+#: src/dd.c:886
+#, fuzzy, c-format
+msgid "unrecognized operand %s"
+msgstr "opzione %s non riconosciuta"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "conversione non valida: %s"
+
+#: src/dd.c:900
+#, fuzzy, c-format
+msgid "invalid input flag: %s"
+msgstr "data `%s' non valida"
+
+#: src/dd.c:903
+#, fuzzy, c-format
+msgid "invalid output flag: %s"
+msgstr "nome di gruppo %s non valido"
+
+#: src/dd.c:906
+#, fuzzy, c-format
+msgid "invalid status flag: %s"
+msgstr "formato di orario %s non valido"
+
+#: src/dd.c:942
+#, fuzzy, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "opzione %s=%s non riconosciuta"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "numero %s non valido"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#: src/dd.c:973
+#, fuzzy, c-format
+msgid "cannot combine block and unblock"
+msgstr "impossibile omettere sia l'utente che il gruppo"
+
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "impossibile confrontare i nomi di file %s e %s"
+
+#: src/dd.c:977
+#, fuzzy, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "non è possibile combinare i segnali con -l o -t"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, fuzzy, c-format
+msgid "%s: cannot seek"
+msgstr "%s: impossibile rimuoverlo"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+#: src/dd.c:1229
+#, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr ""
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr ""
+
+#: src/dd.c:1376
+#, fuzzy, c-format
+msgid "setting flags for %s"
+msgstr "impostazione dell'orario di %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr ""
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr ""
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "apertura di %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, fuzzy, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "avanzamento di %s byte nel file di output %s"
+
+#: src/df.c:151
+#, fuzzy
+msgid "Filesystem Type"
+msgstr "Filesystem "
+
+#: src/df.c:153
+#, fuzzy
+msgid "Filesystem "
+msgstr "Filesystem "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " Inode IUsati ILib. IUso%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Dimens. Usati Disp. Uso%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Dimens. Usati Disp. Uso%%"
+
+#: src/df.c:165
+#, fuzzy, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr "blocchi di %d Usati Disponib. Capacità"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr "blocchi di %4s Usati Disponib. Uso%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Montato su\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "impossibile determinare la directory corrente"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "impossibile entrare nella directory %s"
+
+#: src/df.c:498
+#, fuzzy, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "impossibile determinare la directory corrente"
+
+#: src/df.c:741
+#, fuzzy
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"Mostra informazioni sul filesystem su cui risiede ogni FILE, oppure su "
+"tutti\n"
+"\"\"i filesystem se FILE non è specificato.\n"
+"\n"
+
+#: src/df.c:749
+#, fuzzy
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all include i filesystem lunghi 0 blocchi\n"
+" --block-size=DIM usa blocchi lunghi DIM\n"
+" -h, --human-readable stampa le dimensioni in formato leggibile (es: 1K, "
+"23M)\n"
+" -H, --si idem, ma usa multipli di 1000 invece che di 1024\n"
+
+#: src/df.c:755
+#, fuzzy
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes elenca informazioni sugli inode invece che sui "
+"blocchi\n"
+" -k come --block-size=1K\n"
+" -l, --local limita l'elenco ai file system locali\n"
+" --no-sync non fa sync prima di prendere le informazioni "
+"(predef.)\n"
+
+#: src/df.c:761
+#, fuzzy
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability usa il formato di output POSIX\n"
+" --sync fa sync prima di prendere le informazioni sull'uso\n"
+" -t, --type=TIPO limita l'elenco ai filesystem di tipo TIPO\n"
+" -T, --print-type stampa il tipo di filesystem\n"
+" -x, --exclude-type=TIPO limita l'elenco ai filesystem non di tipo TIPO\n"
+" -v (ignorato)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+#, fuzzy
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"DIM può essere o opzionalmente può essere seguito uno di questi:\n"
+"kB 1000, K 1024, MB 1,000,000, M 1,048,576, e così via per G, T, P, E, Z e "
+"Y.\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr ""
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "il tipo di file system %s è stato sia selezionato che escluso"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Attenzione: "
+
+#: src/df.c:943
+#, fuzzy, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%simpossibile leggere la tabella dei file system montati"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Uso: %s [OPZIONE]... [FILE]...\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Stampa i comandi per impostare la variabile di ambiente LS_COLORS\n"
+"\n"
+"Determina il formato dell'output:\n"
+" -b, --sh, --bourne-shell stampa istruzioni per la Bourne shell\n"
+" -c, --csh, --c-shell stampa istruzioni per la C shell\n"
+" -p, --print-database stampa le impostazioni predefinite\n"
+" --help mostra questo aiuto ed esce\n"
+" --version stampa le informazioni sulla versione ed esce\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"Se FILE è specificato viene letto per determinare quali colori usare per i\n"
+"diversi tipi di file ed estensioni. Altrimenti è usato un database\n"
+"precompilato. Per conoscere i dettagli sul formato di questi file eseguire\n"
+"`dircolors --print-database'.\n"
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s:%lu: riga non valida; manca il secondo token"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu: parola chiave non riconosciuta %s"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<interno>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"le opzioni per stampare il database interno di dircolors e per selezionare\n"
+"una sintassi di shell sono mutuamente esclusive"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr ""
+"manca la variabile di ambiente SHELL e non è stata usata l'opzione per\n"
+"selezionare il tipo della shell"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s NOME\n"
+" o: %s OPZIONE\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"Stampa NOME rimuovendo la /componente finale; se NOME non contiene un /,\n"
+"stampa `.' (intendendo la directory corrente).\n"
+"\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#: src/du.c:279 src/wc.c:108
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Uso: %s [OPZIONE]... GRUPPO FILE...\n"
+" o: %s [OPZIONE]... --reference=RFILE FILE...\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"Riassume l'uso del disco di ogni FILE, ricorsivamente per le directory.\n"
+"\n"
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+
+#: src/du.c:297
+#, fuzzy
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+" -a, --all stampa i numeri di tutti i file, non solo delle "
+"direct.\n"
+" -B, --block-size=DIM usa blocchi lunghi DIM\n"
+" -b, --bytes stampa le dimensioni in byte\n"
+" -c, --total genera un totale complessivo\n"
+" -D, --dereference-args dereferenzia i PERCORSI quando ci sono link "
+"simbolici\n"
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+#, fuzzy
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference dereferenzia tutti i link simbolici\n"
+" -S, --separate-dirs non include le dimensioni delle subdirectory\n"
+" -s, --summarize mostra solo un totale per ogni argomento\n"
+
+#: src/du.c:323
+#, fuzzy
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system salta le directory su file system diversi\n"
+" -X FILE, --exclude-from=FILE esclude i file che corrispondono a ogni "
+"modello\n"
+" nel FILE\n"
+" --exclude=MODELLO esclude i file che corrispondono al MODELLO\n"
+" --max-depth=N stampa il totale per una directory (o file, con --"
+"all)\n"
+" solo se è N o meno livelli sotto l'argomento della "
+"riga\n"
+" di comando; --max-depth=0 è lo stesso che --"
+"summarize\n"
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "totale"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "profondità massima %s non valida"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr ""
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "impossibile riassumere e contemporaneamente mostrare tutte le voci"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "attenzione: --summarize è lo stesso che usare --max-depth=0"
+
+#: src/du.c:884
+#, fuzzy, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "attenzione: --summarize è in conflitto con --max-depth=%d"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+#: src/du.c:960 src/wc.c:662
+#, fuzzy, c-format
+msgid "cannot read file names from %s"
+msgstr "impossibile confrontare i nomi di file %s e %s"
+
+#: src/du.c:1000 src/du.c:1003
+#, fuzzy
+msgid "invalid zero-length file name"
+msgstr "nome di gruppo %s non valido"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Uso: %s [OPZIONE]... [STRINGA]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+#: src/echo.c:80
+#, fuzzy
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"Senza -E le seguenti sequenze sono riconosciute ed interpolate:\n"
+"\n"
+" \\NNN il carattere il cui codice ASCII è NNN (ottale)\n"
+" \\\\ backslash\n"
+" \\a avviso (BEL)\n"
+" \\b backspace\n"
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c elimina il newline finale\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t tab orizzontale\n"
+" \\v tab verticale\n"
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Uso: %s [OPZIONE]... [-] [NOME=VALORE]... [COMANDO [ARG]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Imposta nell'ambiente ogni NOME a VALORE ed esegue il COMANDO.\n"
+"\n"
+" -i, --ignore-environment inizia con un ambiente vuoto\n"
+" -u, --unset=NOME rimuove la variabile dall'ambiente\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"Un semplice - implica -i. Se manca il COMANDO, stampa l'ambiente "
+"risultante.\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+
+#: src/expand.c:180 src/unexpand.c:199
+#, fuzzy, c-format
+msgid "tab stop is too large %s"
+msgstr "%s: file troppo grande"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, fuzzy, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "il percorso `%s' contiene il carattere non portabile `%c'"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr ""
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr ""
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, fuzzy, c-format
+msgid "input line is too long"
+msgstr "%s: file troppo grande"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s ESPRESSIONE\n"
+" o: %s OPZIONE\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"\n"
+"Stampa sullo standard output il valore dell'ESPRESSIONE. Qui sotto, una "
+"riga\n"
+"vuota separa gruppi di operatori con precedenza crescente.\n"
+"ESPRESSIONE può essere:\n"
+"\n"
+" ARG1 | ARG2 ARG1 se non è nullo o 0, altrimenti ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 se nessun argomento è nullo o 0, altrimenti 0\n"
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"\n"
+" ARG1 < ARG2 ARG1 è minore di ARG2\n"
+" ARG1 <= ARG2 ARG1 è minore o uguale di ARG2\n"
+" ARG1 = ARG2 ARG1 è uguale ad ARG2\n"
+" ARG1 != ARG2 ARG1 è diverso da ARG2\n"
+" ARG1 >= ARG2 ARG1 è maggiore o uguale di ARG2\n"
+" ARG1 > ARG2 ARG1 è maggiore di ARG2\n"
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+"\n"
+" ARG1 + ARG2 somma aritmetica di ARG1 e ARG2\n"
+" ARG1 - ARG2 differenza aritmetica di ARG1 e ARG2\n"
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+"\n"
+" ARG1 * ARG2 prodotto aritmetico di ARG1 e ARG2\n"
+" ARG1 / ARG2 quoziente aritmetico di ARG1 diviso ARG2\n"
+" ARG1 % ARG2 resto aritmetico di ARG1 diviso ARG2\n"
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"\n"
+" STRINGA : REGEXP ricerca ancorata del modello REGEXP nella STRINGA\n"
+"\n"
+" match STRINGA REGEXP come STRINGA : REGEXP\n"
+" substr STRINGA POS LUNG sottostringa della STRINGA, POS è contata da 1\n"
+" index STRINGA CAR posizione nella STRINGA di uno dei CAR, se\n"
+" trovato, o 0\n"
+" length STRINGA lunghezza della STRINGA\n"
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+" + TOKEN interpreta TOKEN come una stringa anche se è "
+"una\n"
+" parola chiave come `match' o un operatore come "
+"`/'\n"
+"\n"
+" ( ESPRESSIONE ) valore dell'ESPRESSIONE\n"
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"Si noti che molti operatori devono essere preceduti da `\\' (escaped) o\n"
+"protetti da apici a causa delle shell. I confronti sono aritmetici se\n"
+"entrambi gli ARG sono numeri, altrimenti sono lessicografici. I modelli\n"
+"restituiscono la stringa corrispondente tra \\( e \\) oppure nulla; se\n"
+"\\( e \\) non sono usati, restituiscono il numero di caratteri "
+"corrispondenti\n"
+"oppure 0.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "errore di sintassi"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "%s: process id non valido"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "argomenti non numerici"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "divisione per zero"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [NUMERO]...\n"
+" o: %s OPZIONE\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"Stampa i fattori primi di ogni NUMERO.\n"
+"\n"
+
+#: src/factor.c:85
+#, fuzzy
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+" Stampa i fattori primi di tutti i NUMERI interi specificati. Se non sono\n"
+" specificati argomenti sulla riga di comando li legge da standard input.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, fuzzy, c-format
+msgid "%s is too large"
+msgstr "%s: file troppo grande"
+
+#: src/factor.c:158
+#, fuzzy, c-format
+msgid "%s is not a valid positive integer"
+msgstr "`%s' non è un intero positivo valido"
+
+#: src/fmt.c:273
+#, fuzzy, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Uso: %s [OPZIONE]... [FILE]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+
+#: src/fmt.c:400
+#, fuzzy, c-format
+msgid "invalid width: %s"
+msgstr "data `%s' non valida"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "numero %s non valido"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, fuzzy, c-format
+msgid "error reading %s"
+msgstr "lettura di %s"
+
+#: src/head.c:154
+#, fuzzy, c-format
+msgid "error writing %s"
+msgstr "scrittura di %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr ""
+
+#: src/head.c:230 src/head.c:1046
+#, fuzzy, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s: numero di passi non valido"
+
+#: src/head.c:443
+#, fuzzy, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "impossibile creare il fifo %s"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, fuzzy, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "impossibile impostare l'hostname a `%s'"
+
+#: src/head.c:793
+#, fuzzy, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "impossibile ottenere l'orario di %s"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr ""
+
+#: src/head.c:881
+#, fuzzy
+msgid "number of lines"
+msgstr "numero di argomenti errato"
+
+#: src/head.c:881
+#, fuzzy
+msgid "number of bytes"
+msgstr "numero di argomenti errato"
+
+#: src/head.c:888 src/tail.c:1483
+#, fuzzy
+msgid "invalid number of lines"
+msgstr "numero %s non valido"
+
+#: src/head.c:889 src/tail.c:1484
+#, fuzzy
+msgid "invalid number of bytes"
+msgstr "numero %s non valido"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "opzione non valida -- %c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Uso: %s\n"
+" o: %s OPZIONE\n"
+"Stampa l'identificativo numerico (in esadecimale) dell'host corrente.\n"
+"\n"
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Uso: %s [NOME]\n"
+" o: %s OPZIONE\n"
+"Stampa l'hostname del sistema.\n"
+"\n"
+
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "impossibile impostare l'hostname a `%s'"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+"impossibile impostare l'hostname; questo sistema non ha questa funzionalità"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "impossibile determinare l'hostname"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Uso: %s [OPZIONE]... [NOMEUTENTE]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Stampa informazioni su NOMEUTENTE o sull'utente corrente.\n"
+"\n"
+" -a ignorato, per compatibilità con altre versioni\n"
+" -g, --group stampa solo l'ID del gruppo\n"
+" -G, --groups stampa solo i gruppi supplementari\n"
+" -n, --name stampa un nome invece di un numero, per -ugG\n"
+" -r, --real stampa l'ID reale invece dell'ID efficace, per -ugG\n"
+" -u, --user stampa solo l'ID dell'utente\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"Senza alcuna OPZIONE, stampa alcune utili informazioni identificative.\n"
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "impossibile stampare solo l'utente e solo il gruppo"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr ""
+"impossibile stampare solo i nomi o gli ID reali nel formato predefinito"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Questo utente non esiste"
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "impossibile trovare il nome dell'utente con ID %u"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "impossibile trovare il nome del gruppo con ID %u"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "impossibile ottenere la lista dei gruppi supplementari"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " gruppi="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr "l'opzione strip non può essere usata per installare una directory"
+
+#: src/install.c:321
+#, fuzzy, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "l'opzione strip non può essere usata per installare una directory"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "modo %s non valido"
+
+#: src/install.c:520
+#, fuzzy, c-format
+msgid "cannot change ownership of %s"
+msgstr "impossibile cambiare i permessi di %s"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "impossibile impostare l'orario di %s"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "la chiamata di sistema fork è fallita"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "impossibile eseguire strip"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "scrittura di %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "utente %s non valido"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "creazione della directory %s"
+
+#: src/install.c:651
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Uso: %s [OPZIONE]... ORIGINE DESTINAZIONE\n"
+" o: %s [OPZIONE]... ORIGINE... DIRECTORY\n"
+" o: %s [OPZIONE]... --target-directory=DIRECTORY ORIGINE...\n"
+
+#: src/install.c:658
+#, fuzzy
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"Nelle prime due forme copia ORIGINE in DEST o ORIGINE multipli nella "
+"DIRECTORY\n"
+"esistente, impostando contemporaneamente i permessi e il proprietario/"
+"gruppo.\n"
+"Nella terza forma crea tutti i componenti della/e DIRECTORY indicata/e.\n"
+"\n"
+
+#: src/install.c:667
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup=[CONTROL] fa un backup di ogni file di dest. esistente\n"
+" -b come --backup ma non accetta un argomento\n"
+" -c (ignorato)\n"
+" -d, --directory tratta tutti gli argomenti come nomi di directory; "
+"crea\n"
+" tutti i componenti delle directory specificate\n"
+
+#: src/install.c:674
+#, fuzzy
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D crea tutti i componenti di DEST tranne l'ultimo, poi\n"
+" copia ORIGINE in DEST; utile nel primo formato\n"
+" -g, --group=GRUPPO imposta il gruppo proprietario, invece dell'attuale\n"
+" gruppo del processo\n"
+" -m, --mode=PERMESSI imposta i PERMESSI (come in chmod) invece di rwxr-xr-"
+"x\n"
+"\"\" -o, --owner=PROPR imposta il proprietario (solo per il superuser)\n"
+
+#: src/install.c:681
+#, fuzzy
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps applica le date di accesso/modifica dei file\n"
+" di ORIGINE ai file di destinazione corrispondenti\n"
+" -s, --strip fa lo strip della tabella dei simboli, solo per la\n"
+" prima e la seconda forma\n"
+" -S, --suffix=SUFF cambia il normale suffisso dei backup\n"
+" -v, --verbose stampa il nome di ogni directory creata\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"Il suffisso dei backup è ~, a meno che sia impostato con --suffix oppure\n"
+"SIMPLE_BACKUP_SUFFIX. Il metodo di controllo di versione può essere scelto\n"
+"con l'opzione --backup o la variabile di ambiente VERSION_CONTROL. I valori\n"
+"sono:\n"
+"\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+
+#: src/join.c:617 src/join.c:812
+#, fuzzy, c-format
+msgid "invalid field number: %s"
+msgstr "numero %s non valido"
+
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "intervallo di tempo non valido: `%s'"
+
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "intervallo di tempo non valido: `%s'"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr ""
+
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "data `%s' non valida"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr ""
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr ""
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"Uso: %s [-s SEGNALE | -SEGNALE] PID...\n"
+" o: %s -l [SEGNALE]...\n"
+" o: %s -t [SEGNALE]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+"Manda segnali ai processi o elenca i segnali.\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+" -s, --signal SEGNALE, -SEGNALE Nome o numero del segnale da inviare.\n"
+" -l, --list Elenca i nomi dei segnali.\n"
+" -t, --table Stampa una tabella di informazioni sui\n"
+" segnali.\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+"\n"
+"SEGNALE può essere il nome di un segnale come `HUP', il numero di un "
+"segnale\n"
+"come `1' oppure lo status di uscita di un processo terminato da un segnale.\n"
+"PID è un intero; se è negativo indica un gruppo di processi.\n"
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: segnale non valido"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: process id non valido"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "opzione non valida -- %c"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: sono stati specificati segnali multipli"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "sono state specificate opzioni -l o -t multiple"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "non è possibile combinare i segnali con -l o -t"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr ""
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s FILE1 FILE2\n"
+" o: %s OPZIONE\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+"Chiama la funzione link per creare un link chiamato FILE2 a un FILE1 "
+"esistente.\n"
+"\n"
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "impossibile creare il link %s a %s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr "%s: attenzione: fare un hard link a un link simbolico non è portabile"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: non è possibile fare un hard link a una directory"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: impossibile sovrascrivere una directory"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: sostituire %s? "
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "creazione del link simbolico %s a %s"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "creazione del link simbolico %s a %s"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "creazione dell'hard link %s a %s"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "creazione dell'hard link %s a %s"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "creazione dell'hard link %s a %s"
+
+#: src/ln.c:324
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Uso: %s [OPZIONE]... ORIGINE DEST (primo formato)\n"
+" o: %s [OPZIONE]... ORIGINE... DIRECTORY (secondo formato)\n"
+" o: %s -d [OPZIONE]... DIRECTORY (terzo formato)\n"
+
+#: src/ln.c:331
+#, fuzzy
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"Crea un link all'OBIETTIVO specificato con il NOME_LINK opzionale. Se "
+"LINK_NAME\n"
+"è omesso, un link con lo stesso nome dell'OBIETTIVO è creato nella "
+"directory\n"
+"\"\"corrente. Quando si usa la seconda forma con più di un OBIETTIVO, "
+"l'ultimo\n"
+"argomento deve essere una DIRECTORY; crea nella DIRECTORY un link a ogni\n"
+"OBIETTIVO. Normalmente crea hard link, crea link simbolici con --symbolic.\n"
+"Quando crea hard link, ogni OBIETTIVO deve esistere.\n"
+"\n"
+
+#: src/ln.c:342
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup[=CONTROL] fa il backup di ogni file di destinazione "
+"esistente\n"
+" -b come --backup ma non accetta un argomento\n"
+" -d, -F, --directory crea hard link alle directory (solo super-"
+"user)\n"
+" -f, --force rimuove i file di destinazione esistenti\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference tratta ogni destinazione che è un link "
+"simbolico\n"
+" a una directory come se fosse un file "
+"normale\n"
+" -i, --interactive chiede se rimuovere le destinazioni\n"
+" -s, --symbolic crea link simbolici invece che hard link\n"
+
+#: src/ln.c:356
+#, fuzzy
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" --target-directory=DIRECTORY specifica la DIRECTORY in cui creare i "
+"link\n"
+" -S, --suffix=SUFFISSO cambia il normale suffisso dei backup\n"
+" -v, --verbose stampa il nome del file prima di fare il link\n"
+
+#: src/ln.c:484
+#, fuzzy, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "%s: la directory obiettivo specificata non è una directory"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Uso: %s [OPZIONE]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"Stampa il nome dell'utente corrente.\n"
+"\n"
+
+#: src/logname.c:89
+#, fuzzy, c-format
+msgid "no login name"
+msgstr "%s: non c'è un nome di login\n"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%e %b %Y"
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%e %b %H:%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr ""
+"ignoro il valore non valido della variabile di ambiente QUOTING_STYLE: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr ""
+"ignorata la larghezza non valida nella variabile di ambiente COLUMNS: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr ""
+"ignorata la larghezza di tabulazione non valida nella variabile di\n"
+"ambiente TABSIZE: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "larghezza delle righe non valida: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "dimensioni di tabulazione non valide: %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "formato dello stile di orario %s non valido"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "prefisso non riconosciuto: %s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "valore non interpretabile nella variabile di ambiente LS_COLORS"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "impossibile aprire la directory %s"
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "impossibile determinare il dispositivo e l'inode di %s"
+
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "non elenco la directory già elencata %s"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, fuzzy, c-format
+msgid "reading directory %s"
+msgstr "creazione della directory %s"
+
+#: src/ls.c:2410
+#, fuzzy, c-format
+msgid "closing directory %s"
+msgstr "creazione della directory %s"
+
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "impossibile confrontare i nomi di file %s e %s"
+
+#: src/ls.c:4277
+#, fuzzy
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"Elenca informazioni sui FILE (predefinito: la directory corrente).\n"
+"Ordina alfabeticamente le voci se non è usato uno di -cftuSUX oppure --"
+"sort.\n"
+"\"\"\n"
+
+#: src/ls.c:4285
+#, fuzzy
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all non nasconde le voci che iniziano con .\n"
+" -A, --almost-all non elenca le voci implicite . e ..\n"
+" --author stampa l'autore di ogni file\n"
+" -b, --escape stampa escape ottali per i caratteri non "
+"grafici\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=DIMENS usa blocchi lunghi DIMENS byte\n"
+" -B, --ignore-backups non elenca le voci implicite che terminano con "
+"~\n"
+" -c con -lt: mostra e ordina secondo il ctime "
+"(orario\n"
+" di modifica delle informazioni di stato del\n"
+" file); con -l: mostra il ctime e ordina "
+"secondo\n"
+" il nome; altrimenti: ordina secondo il ctime\n"
+
+#: src/ls.c:4299
+#, fuzzy
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C elenca le voci per colonne\n"
+" --color[=QUANDO] controlla QUANDO bisogna colorare i file "
+"secondo\n"
+" il tipo. Può essere `never', `always' o "
+"`auto'\n"
+" -d, --directory elenca le voci di directory invece del "
+"contenuto\n"
+" -D, --dired genera output adatto al modo dired di Emacs\n"
+
+#: src/ls.c:4307
+#, fuzzy
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f non ordina, abilita -aU, disabilita -lst\n"
+" -F, --classify accoda un indicatore alle voci (uno di */=@|)\n"
+" --format=TIPO across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time come -l --time-style=full-iso\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+#, fuzzy
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all include i filesystem lunghi 0 blocchi\n"
+" --block-size=DIM usa blocchi lunghi DIM\n"
+" -h, --human-readable stampa le dimensioni in formato leggibile (es: 1K, "
+"23M)\n"
+" -H, --si idem, ma usa multipli di 1000 invece che di 1024\n"
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+
+#: src/ls.c:4337
+#, fuzzy
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=TIPO accoda ai nomi l'indicatore con lo stile TIPO:\n"
+" none (predef), classify (-F), file-type (-p)\n"
+" -i, --inode stampa il numero d'indice di ogni file\n"
+" -I, --ignore=MODELLO non elenca le voci implicite che soddisfano il\n"
+" MODELLO della shell\n"
+" -k come --block-size=1K\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l usa un formato di elenco lungo\n"
+" -L, --dereference quando mostra le informazioni su un symlink,\n"
+" mostra le informazioni sul file a cui si\n"
+" riferisce invece che sul link stesso\n"
+" -m elenca le voci separandole con virgole\n"
+
+#: src/ls.c:4352
+#, fuzzy
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid elenca gli UID e GID numerici al posto dei "
+"nomi\n"
+" -N, --literal stampa i nomi grezzi (es: non tratta in modo\n"
+" speciale i caratteri di controllo)\n"
+" -o usa un formato di elenco lungo senza i gruppi\n"
+" -p, --file-type accoda un carattere secondo il tipo delle voci\n"
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars stampa ? al posto dei caratteri non grafici\n"
+" --show-control-chars mostra i caratteri non grafici come sono "
+"(predef.\n"
+" a meno che il programma sia `ls' e l'output un "
+"terminale)\n"
+" -Q, --quote-name racchiude tra doppi apici i nomi delle voci\n"
+" --quoting-style=TIPO usa lo stile TIPO con i nomi delle voci:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+
+#: src/ls.c:4368
+#, fuzzy
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse inverte il senso dell'ordinamento\n"
+" -R, --recursive elenca ricorsivamente le subdirectory\n"
+" -s, --size stampa le dimensioni in blocchi di ogni file\n"
+
+#: src/ls.c:4373
+#, fuzzy
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S ordina secondo le dimensioni del file\n"
+" --sort=TIPO extension -X, none -U, size -S, time -t, use -"
+"u,\n"
+" status -c, atime -u, access -u, version -v\n"
+" --time=TIPO usa il TIPO di orario invece che quello di\n"
+" modifica: atime, access, use, ctime o "
+"status;\n"
+"\"\" se --sort=time usa l'orario specificato "
+"come\n"
+" chiave di ordinamento\n"
+
+#: src/ls.c:4382
+#, fuzzy
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=STILE mostra gli orari usando lo STILE specificato:\n"
+" full-iso, long-iso, iso, locale, +FORMATO\n"
+" FORMATO è interpretato come da `date'; se è\n"
+" FORMATO1<newline>FORMATO2, FORMATO1 è "
+"applicato\n"
+" ai file non recenti e FORMATO2 a quelli "
+"recenti;\n"
+" se STILE ha il prefisso `posix-' avrà effetto\n"
+" solo fuori dal locale POSIX\n"
+" -t ordina secondo l'orario di modifica\n"
+" -T, --tabsize=COL i tab sono larghi COL colonne invece di 8\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u con -lt; mostra ed ordina secondo l'orario\n"
+" di accesso; con -l mostra l'orario di "
+"accesso\n"
+"\"\" ed ordina per nome; altrimenti: ordina "
+"secondo\n"
+" l'orario di accesso\n"
+" -U non ordina; elenca le voci nell'ordine della "
+"dir.\n"
+" -v ordina secondo la versione\n"
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -w, --width=COL lo schermo è largo COL invece del'attuale "
+"valore\n"
+" -x elenca le voci per righe invece che per "
+"colonne\n"
+"\"\" -X ordina alfabeticamente secondo le "
+"estensioni\n"
+" -1 elenca un file per riga\n"
+
+#: src/ls.c:4414
+#, fuzzy
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"L'impostazione predefinita è di non usare i colori differenziare i tipi di\n"
+"file. Questo è equivalente a usare --color=none. L'uso dell'opzione --"
+"color\n"
+"\"\"senza l'argomento opzionale QUANDO è equivalente a usare --"
+"color=always.\n"
+"Con --color=auto i codici dei colori sono stampati solo se standard output "
+"è\n"
+"\"\"collegato a un terminale (tty).\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#: src/md5sum.c:150
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr ""
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr ""
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr ""
+
+#: src/md5sum.c:528
+#, fuzzy
+msgid "FAILED"
+msgstr "INATTIVO"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr ""
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, fuzzy, c-format
+msgid "%s: read error"
+msgstr "errore di lettura"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr ""
+
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr ""
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr ""
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Uso: %s [OPZIONE]... DIRECTORY...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"Crea la/le DIRECTORY, se non esistono già.\n"
+"\n"
+
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+" -m, --mode=MODO imposta i permessi (come in chmod), non rwxrwxrwx - "
+"umask\n"
+" -p, --parents nessun errore se esiste, crea le dir. padre se "
+"necessario\n"
+" -v, --verbose stampa un messaggio per ogni directory creata\n"
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "directory %s creata"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Uso: %s [OPZIONE]... NOME...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"Crea pipe con nome (FIFO) con il NOME dato.\n"
+"\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+" -m, --mode=MODO imposta i permessi (come in chmod), non a=rw - umask\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "modo non valido"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Uso: %s [OPZIONE]... NOME TIPO [MAJOR MINOR]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"Crea il file speciale nome del TIPO dato.\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+
+#: src/mknod.c:76
+#, fuzzy
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+"MAJOR e MINOR sono vietati per il TIPO p, altrimenti sono obbligatori.\n"
+"Il TIPO può essere:\n"
+"\n"
+" b crea un file speciale a blocchi (bufferizzato)\n"
+" c, u crea un file speciale a caratteri (non bufferizzato)\n"
+" p crea un FIFO\n"
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"quando vengono creati file speciali, devono essere specificati i major e\n"
+"minor numbers del dispositivo"
+
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "minor number del dispositivo %s non valido"
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "i file speciali a blocchi non sono gestiti"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "i file speciali a caratteri non sono gestiti"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "major number del dispositivo %s non valido"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "minor number del dispositivo %s non valido"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "dispositivo %s %s non valido"
+
+#: src/mknod.c:216
+#, fuzzy, c-format
+msgid "invalid device type %s"
+msgstr "dispositivo %s %s non valido"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr "Rinomina ORIGINE in DEST o sposta ORIGINE nella DIRECTORY.\n"
+
+#: src/mv.c:297
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup=[CONTROL] fa un backup prima della rimozione\n"
+" -b come --backup ma non accetta un argomento\n"
+" -f, --force rimuove le destinazioni esistenti senza\n"
+" chiedere; equivale a --reply=yes\n"
+" -i, --interactive chiede prima di sovrascrivere;\n"
+" equivale a --reply=query\n"
+
+#: src/mv.c:303
+#, fuzzy
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --reply={yes,no,query} specifica come gestire la domanda a "
+"proposito\n"
+" di un file di destinazione già esistente\n"
+" --strip-trailing-slashes rimuove gli slash dalla fine di ogni "
+"ORIGINE\n"
+" -S, --suffix=SUFFISSO cambia il normale suffisso dei backup\n"
+
+#: src/mv.c:308
+#, fuzzy
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --target-directory=DIRECTORY sposta ogni ORIGINE nella DIRECTORY\n"
+" -u, --update sposta solo quando ORIGINE è più recente del\n"
+" file di destinazione o questo è mancante\n"
+" -v, --verbose spiega cosa sta facendo\n"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Uso: %s [OPZIONE] [[COMANDO [ARG]...]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "argomento `%s' non valido"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "un comando deve essere specificato con un aggiustamento"
+
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "impossibile determinare il nome del sistema"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "impossibile impostare la data"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+
+#: src/nl.c:214
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:281
+#, fuzzy, c-format
+msgid "line number overflow"
+msgstr "numero %s non valido"
+
+#: src/nl.c:479
+#, fuzzy, c-format
+msgid "invalid header numbering style: %s"
+msgstr "numero %s non valido"
+
+#: src/nl.c:487
+#, fuzzy, c-format
+msgid "invalid body numbering style: %s"
+msgstr "numero %s non valido"
+
+#: src/nl.c:495
+#, fuzzy, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "intervallo di tempo non valido: `%s'"
+
+#: src/nl.c:504
+#, fuzzy, c-format
+msgid "invalid starting line number: %s"
+msgstr "major number del dispositivo %s non valido"
+
+#: src/nl.c:513
+#, fuzzy, c-format
+msgid "invalid line number increment: %s"
+msgstr "argomento intero `%s' non valido"
+
+#: src/nl.c:525
+#, fuzzy, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "%s: numero di passi non valido"
+
+#: src/nl.c:539
+#, fuzzy, c-format
+msgid "invalid line number field width: %s"
+msgstr "larghezza delle righe non valida: %s"
+
+#: src/nl.c:558
+#, fuzzy, c-format
+msgid "invalid line numbering format: %s"
+msgstr "argomento intero `%s' non valido"
+
+#: src/nohup.c:57
+#, fuzzy, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s FORMATO [ARGOMENTO]...\n"
+" o: %s OPZIONE\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+"tutti gli argomenti sono stati ignorati\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+"tutti gli argomenti vengono ignorati"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, fuzzy, c-format
+msgid "failed to open %s"
+msgstr "impossibile preservare l'orario di %s"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr ""
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr ""
+
+#: src/od.c:307
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Uso: %s [OPZIONE]... GRUPPO FILE...\n"
+" o: %s [OPZIONE]... --reference=RFILE FILE...\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/od.c:320
+#, fuzzy
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+"Gli argomenti obbligatori per le opzioni lunghe lo sono anche per quelle "
+"brevi.\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+"Gli argomenti obbligatori per le opzioni lunghe lo sono anche per quelle "
+"corte.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:353
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "stringa di formato non valida: `%s'"
+
+#: src/od.c:693
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+
+#: src/od.c:812
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "carattere %s non valido nella stringa di modo %s"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr ""
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+
+#: src/od.c:1655
+#, fuzzy
+msgid "skip argument"
+msgstr "manca il file argomento"
+
+#: src/od.c:1664
+#, fuzzy
+msgid "limit argument"
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+"Gli argomenti validi sono:\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+"Sono caratteri validi:"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr ""
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr ""
+
+#: src/od.c:1769
+#, fuzzy, c-format
+msgid "no type may be specified when dumping strings"
+msgstr ""
+"la stringa di formato non può essere specificata quando si stampano "
+"stringhe\n"
+"a ugual larghezza"
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr ""
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr ""
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr ""
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr ""
+
+#: src/paste.c:202
+#, fuzzy, c-format
+msgid "standard input is closed"
+msgstr "standard input"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Uso: %s [OPZIONE]... NOME...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "carattere %s non valido nella stringa di modo %s"
+
+#: src/pathchk.c:282
+#, fuzzy, c-format
+msgid "empty file name"
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+"file regolare vuoto\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+"file normale vuoto"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Nome di login: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "Nella vita reale: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Directory: "
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Shell: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Project: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "Plan:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Login"
+
+#: src/pinky.c:423
+#, fuzzy
+msgid "Name"
+msgstr " Nome"
+
+#: src/pinky.c:424
+#, fuzzy
+msgid " TTY"
+msgstr "TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Inatt."
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Quando"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Dove"
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Uso: %s [OPZIONE]... [UTENTE]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"\n"
+" -l usa il formato di output lungo per gli UTENTI indicati\n"
+" -b omette l'home directory e la shell nel formato lungo\n"
+" -h omette il file project dell'utente nel formato lungo\n"
+" -p omette il file plan dell'utente nel formato lungo\n"
+" -s usa il formato breve, è l'opzione predefinita\n"
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+" -f omette l'intestazione delle colonne nel formato breve\n"
+" -w omette il nome completo dell'utente nel formato breve\n"
+" -i omette il nome completo e l'host remoto nel formato breve\n"
+" -q omette il nome completo, l'host remoto e il tempo di\n"
+" inattività nel formato breve\n"
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+"\n"
+"Una versione leggera di `finger'; stampa informazioni sugli utenti.\n"
+"Il file utmp sarà %s.\n"
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr ""
+"non è stato indicato il nome di un utente; quando si usa -l bisogna "
+"indicarne\n"
+"almeno uno"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr ""
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr ""
+
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "stringa di formato non valida: `%s'"
+
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "numero %s non valido"
+
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "minor number del dispositivo %s non valido"
+
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "larghezza delle righe non valida: %s"
+
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "larghezza delle righe non valida: %s"
+
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "larghezza delle righe non valida: %s"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr ""
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr ""
+
+#: src/pr.c:1202
+#, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr ""
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr ""
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2406
+#, fuzzy, c-format
+msgid "Page number overflow"
+msgstr "numero %s non valido"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr ""
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Uso: %s [VARIABILE]...\n"
+" o: %s OPZIONE\n"
+"Se non è specificata alcuna VARIABILE di ambiente le stampa tutte.\n"
+"\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+"attenzione: %s: i caratteri che seguono la costante carattere sono stati\n"
+"ignorati"
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s FORMATO [ARGOMENTO]...\n"
+" o: %s OPZIONE\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+"Stampa gli ARGOMENTI secondo il FORMATO.\n"
+"\n"
+
+#: src/printf.c:104
+#, fuzzy
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"\n"
+"FORMATO controlla l'output come in printf del C. Le sequenze interpretate\n"
+"sono:\n"
+"\n"
+" \\\" doppie virgolette\n"
+" \\0NNN carattere il cui valore ottale è NNN (da 0 a 3 cifre)\n"
+" \\\\ backslash\n"
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+" \\a avviso (BEL)\n"
+" \\b backspace\n"
+" \\c non produce ulteriore output\n"
+" \\f form feed\n"
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t tab orizzontale\n"
+" \\v tab verticale\n"
+
+#: src/printf.c:124
+#, fuzzy
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+" \\xNNN byte il cui valore esadecimale è NNN (da 1 a 3 cifre)\n"
+"\n"
+" \\uNNNN carattere il cui valore esadecimale è NNNM (4 cifre)\n"
+" \\UNNNNNNNN carattere il cui valore esadecimale è NNNMNNNM (8 cifre)\n"
+
+#: src/printf.c:129
+#, fuzzy
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+" %% un unico %\n"
+" %b ARGOMENTO è una stringa con le sequenze di escape `\\\\' "
+"interpretate\n"
+"\n"
+"e tutte le specifiche di formato C che finiscano con uno dei caratteri\n"
+"diouxXfeEgGcs, convertendo prima l'ARGOMENTO nel tipo appropriato.\n"
+"Sono gestite le dimensioni variabili.\n"
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: aspetta un valore numerico"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: valore non completamente convertito"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "manca il numero esadecimale nella sequenza di escape"
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "nome del set di caratteri universale \\\\%c%0*x non valido"
+
+#: src/printf.c:550
+#, fuzzy, c-format
+msgid "invalid field width: %s"
+msgstr "larghezza delle righe non valida: %s"
+
+#: src/printf.c:585
+#, fuzzy, c-format
+msgid "invalid precision: %s"
+msgstr "conversione non valida: %s"
+
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "opzione `%s' non valida"
+
+#: src/printf.c:683
+#, fuzzy, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr ""
+"attenzione: gli argomenti in eccesso sono stati ignorati, a partire da `%s'"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr ""
+
+#: src/ptx.c:422
+#, c-format
+msgid "%s (for regexp %s)"
+msgstr ""
+
+#: src/ptx.c:1883
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Uso: %s [OPZIONE]... ULTIMO\n"
+" o: %s [OPZIONE]... PRIMO ULTIMO\n"
+" o: %s [OPZIONE]... PRIMO INCREMENTO ULTIMO\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "data `%s' non valida"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr ""
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+"Stampa il nome file completo dell'attuale directory di lavoro.\n"
+"\n"
+
+#: src/pwd.c:160
+#, fuzzy, c-format
+msgid "failed to chdir to %s"
+msgstr "impossibile cambiare il gruppo di %s in %s\n"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "impossibile leggere gli attributi di %s"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "gli argomenti che non sono opzioni sono stati ignorati"
+
+#: src/readlink.c:67
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Uso: %s [OPZIONE]... [FILE]...\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "impossibile aprire la directory %s"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "impossibile aprire la directory %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, fuzzy, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "%s ha cambiato dispositivo/inode"
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "impossibile creare la directory %s"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"ATTENZIONE: struttura di directory circolare.\n"
+"Questo significa quasi sicuramente che il file system è danneggiato.\n"
+"INFORMA IL TUO AMMINISTRATORE DI SISTEMA.\n"
+"La seguente directory è parte del ciclo:\n"
+" %s\n"
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s: entrare nella directory protetta dalla scrittura %s? "
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s: entrare nella directory %s? "
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: rimuovere il %s protetto dalla scrittura %s? "
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: rimuovere %s %s? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "directory rimossa: %s\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "impossibile aprire la directory %s"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "impossibile rimuovere la directory %s"
+
+#: src/remove.c:1450
+#, fuzzy, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "impossibile entrare in `..' dalla directory %s"
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "impossibile rimuovere la directory %s"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "impossibile rimuovere la directory %s"
+
+#: src/remove.c:1558
+#, fuzzy, c-format
+msgid "cannot restore current working directory"
+msgstr "impossibile determinare la directory corrente"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Uso: %s [OPZIONE]... FILE...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"Per rimuovere un file il cui nome inizia con `-', per esempio `-foo',\n"
+"usare uno di questi comandi:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"Notare che se si usa rm per rimuovere un file, di solito è impossibile\n"
+"recuperarne il contenuto. Se si vogliono maggiori garanzie che il contenuto\n"
+"sia veramente irrecuperabile si valuti l'uso di shred.\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: rimuovere %s %s? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "rimuovere la directory `%s'? "
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Uso: %s [OPZIONE]... DIRECTORY...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"Rimuove le DIRECTORY, se vuote.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignora ogni errore causato dal solo fatto che la "
+"directory\n"
+" non è vuota\n"
+
+#: src/rmdir.c:148
+#, fuzzy
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents rimuove la DIRECTORY, poi prova a rimuovere ogni "
+"directory\n"
+" che compone il nome di questo percorso. Per esempio,\n"
+" `rmdir -p a/b/c' è simile a `rmdir a/b/c a/b a'.\n"
+" -v, --verbose mostra un diagnostico per ogni directory processata\n"
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Uso: %s [OPZIONE]... ULTIMO\n"
+" o: %s [OPZIONE]... PRIMO ULTIMO\n"
+" o: %s [OPZIONE]... PRIMO INCREMENTO ULTIMO\n"
+
+#: src/seq.c:79
+#, fuzzy
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"Stampa i numeri dal PRIMO all'ULTIMO con passo INCREMENTO.\n"
+"\n"
+" -f, --formato FORMATO usa lo stile di printf(3) per FORMATO (pred. %"
+"g)\n"
+" -s, --separator STRINGA usa STRINGA per separare i numeri (pred. \\n)\n"
+" -w, --equal-width uguaglia le larghezze aggiungendo zeri "
+"iniziali\n"
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"\n"
+"Se PRIMO o INCREMENTO sono omessi, il valore predefinito è 1.\n"
+"PRIMO, ULTIMO e INCREMENTO sono interpretati come valori in virgola mobile.\n"
+"INCREMENTO deve essere positivo se PRIMO è minore di ULTIMO, altrimenti\n"
+"negativo. Quando specificato, l'argomento FORMATO deve contenere uno e uno\n"
+"solo dei formati di output in virgola mobile in stile printf %e, %f o %g.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "argomento in virgola mobile non valido: %s"
+
+#: src/seq.c:342
+#, fuzzy, c-format
+msgid "invalid format string: %s"
+msgstr "stringa di formato non valida: `%s'"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr ""
+"la stringa di formato non può essere specificata quando si stampano "
+"stringhe\n"
+"a ugual larghezza"
+
+#: src/setuidgid.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s FORMATO [ARGOMENTO]...\n"
+" o: %s OPZIONE\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr ""
+
+#: src/setuidgid.c:109
+#, fuzzy, c-format
+msgid "cannot set supplemental group"
+msgstr "impossibile ottenere la lista dei gruppi supplementari"
+
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "impossibile impostare il group id"
+
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "impossibile impostare lo user id"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Uso: %s [OPZIONI] FILE [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"Sovrascrive ripetutamente i FILE specificati in modo da rendere più "
+"difficile\n"
+"recuperare i dati anche con indagini hardware molto costose.\n"
+"\n"
+
+#: src/shred.c:174
+#, fuzzy, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force se necessario cambia i permessi per permettere la "
+"scrittura\n"
+" -n, --iterations=N sovrascrive N volte invece che le %d predefinite\n"
+" -s, --size=N distrugge solo N byte (sono accettati suffissi come K, M e "
+"G)\n"
+
+#: src/shred.c:180
+#, fuzzy
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove tronca e rimuove il file dopo la sovrascrittura\n"
+" -v, --verbose indica il progresso\n"
+" -x, --exact non arrotonda le dimensioni dei file fino all'intero "
+"blocco\n"
+"\"\" -z, --zero aggiunge una sovrascrittura finale con zeri per "
+"nascondere\n"
+" la distruzione\n"
+" - distrugge lo standard input\n"
+
+#: src/shred.c:189
+#, fuzzy
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"Cancella i file solo se è specificato --remove (-u). È predefinito non "
+"farlo\n"
+"\"\"perché è normale operare su file di device come /dev/hda, che "
+"normalmente non\n"
+"devono essere rimossi. Quando si opera su file normali, la maggior parte "
+"delle\n"
+"persone usano l'opzione --remove.\n"
+"\n"
+
+#: src/shred.c:199
+#, fuzzy
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"ATTENZIONE: ricordare che shred si basa su una importante supposizione, "
+"cioè\n"
+"\"\"che il filesystem sovrascriva i dati dove stanno. Questo è il metodo\n"
+"tradizionale, ma molti filesystem progettati modernamente non soddisfano\n"
+"questa supposizione.\n"
+"Questi sono esempi di file system su cui shred non ha effetto:\n"
+"\n"
+
+#: src/shred.c:207
+#, fuzzy
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"* filesystem con logging o journaling come quelli forniti con AIX e Solaris\n"
+" (e JFS, ReiserFS, XFS, ext3, ecc...)\n"
+"\n"
+"* filesystem che scrivono dati ridondanti e continuano a scrivere anche se\n"
+" alcune scritture falliscono, come i file system basati su RAID\n"
+"\n"
+"* filesystem che fanno snapshot, come quello dei server NFS di Network\n"
+" Appliance\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+#, fuzzy
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+"* filesystem che hanno cache temporanee, come i client NFS 3\n"
+"\n"
+"* filesystem compressi\n"
+"Inoltre, i backup dei file system e i mirror remoti possono contenere copie\n"
+"dei file impossibili da rimuovere e che permetterebbero di recuperare un\n"
+"file distrutto.\n"
+
+#: src/shred.c:303
+#, fuzzy, c-format
+msgid "%s: fdatasync failed"
+msgstr "strip fallito"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr ""
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s: impossibile riavvolgere"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: passo %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s: errore di scrittura all'offset %s"
+
+#: src/shred.c:478
+#, fuzzy, c-format
+msgid "%s: lseek failed"
+msgstr "strip fallito"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s: file troppo grande"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: passo %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: passo %lu/%lu (%s)...%s/%s %d%%"
+
+#: src/shred.c:776
+#, fuzzy, c-format
+msgid "%s: fstat failed"
+msgstr "strip fallito"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: tipo di file non valido"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: il file ha dimensioni negative"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s: errore durante il troncamento"
+
+#: src/shred.c:889
+#, fuzzy, c-format
+msgid "%s: fcntl failed"
+msgstr "strip fallito"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s: impossibile distruggere un descrittore di file append only"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: rimozione"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: rinominato in %s"
+
+#: src/shred.c:1018
+#, fuzzy, c-format
+msgid "%s: failed to remove"
+msgstr "%s: file troppo grande"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: rimosso"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, fuzzy, c-format
+msgid "%s: failed to close"
+msgstr "%s: file troppo grande"
+
+#: src/shred.c:1065
+#, fuzzy, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: file troppo grande"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: numero di passi non valido"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "sono state specificate opzioni -l o -t multiple"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: dimensione del file non valida"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Uso: %s [OPZIONE]... ULTIMO\n"
+" o: %s [OPZIONE]... PRIMO ULTIMO\n"
+" o: %s [OPZIONE]... PRIMO INCREMENTO ULTIMO\n"
+
+#: src/shuf.c:57
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "sono state specificate opzioni -l o -t multiple"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "numero %s non valido"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "larghezza delle righe non valida: %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, fuzzy, c-format
+msgid "multiple output files specified"
+msgstr "sono state specificate opzioni -l o -t multiple"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "non è possibile combinare i segnali con -l o -t"
+
+#: src/shuf.c:362
+#, c-format
+msgid "extra operand %s\n"
+msgstr ""
+
+#: src/sleep.c:47
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Uso: %s NUMERO[SUFFISSO]...\n"
+" o: %s OPZIONE\n"
+"Fa una pausa di NUMERO secondi. SUFFISSO può essere `s' per secondi "
+"(predef.),\n"
+"`m' per minuti, `h' per ore o `d' per giorni. Diversamente dalla maggior "
+"parte\n"
+"delle altre implementazioni, che richiedono che NUMERO sia un intero, qui "
+"può\n"
+"essere un numero in virgola mobile arbitrario.\n"
+"\n"
+
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "intervallo di tempo non valido: `%s'"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "impossibile leggere l'orologio realtime"
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+
+#: src/sort.c:326
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/sort.c:363
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "scrittura di %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+#, fuzzy
+msgid "cannot create temporary file"
+msgstr "impossibile creare il file normale %s"
+
+#: src/sort.c:736 src/sort.c:3122
+#, fuzzy
+msgid "open failed"
+msgstr "strip fallito"
+
+#: src/sort.c:758
+#, fuzzy
+msgid "fflush failed"
+msgstr "strip fallito"
+
+#: src/sort.c:763 src/sort.c:3171
+#, fuzzy
+msgid "close failed"
+msgstr "strip fallito"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "strip fallito"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr ""
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "impossibile creare il file normale %s"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "impossibile creare il file normale %s"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr ""
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "impossibile creare la directory %s"
+
+#: src/sort.c:938
+#, fuzzy
+msgid "write failed"
+msgstr "strip fallito"
+
+#: src/sort.c:975
+#, fuzzy, c-format
+msgid "warning: cannot remove: %s"
+msgstr "impossibile rimuovere %s"
+
+#: src/sort.c:1092
+#, fuzzy
+msgid "sort size"
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+"dimensioni del blocco\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+"dimensioni dei blocchi"
+
+#: src/sort.c:1171
+#, fuzzy
+msgid "stat failed"
+msgstr "strip fallito"
+
+#: src/sort.c:1435
+#, fuzzy
+msgid "read failed"
+msgstr "strip fallito"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr ""
+
+#: src/sort.c:1955
+#, fuzzy
+msgid "standard error"
+msgstr "errore di sintassi"
+
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "opzione `%s' non valida"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "stringa di formato non valida: `%s'"
+
+#: src/sort.c:2887
+#, fuzzy
+msgid "invalid number after `-'"
+msgstr "numero %s non valido"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+#, fuzzy
+msgid "invalid number after `.'"
+msgstr "numero %s non valido"
+
+#: src/sort.c:2893 src/sort.c:2988
+#, fuzzy
+msgid "stray character in field spec"
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+"file speciale a caratteri\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+"file speciali a caratteri"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "sono state specificate opzioni -l o -t multiple"
+
+#: src/sort.c:2943
+#, fuzzy
+msgid "invalid number at field start"
+msgstr "numero %s non valido"
+
+#: src/sort.c:2947 src/sort.c:2975
+#, fuzzy
+msgid "field number is zero"
+msgstr "numero %s non valido"
+
+#: src/sort.c:2956
+#, fuzzy
+msgid "character offset is zero"
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+"file speciale a caratteri\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+"file speciali a caratteri"
+
+#: src/sort.c:2971
+#, fuzzy
+msgid "invalid number after `,'"
+msgstr "numero %s non valido"
+
+#: src/sort.c:3142
+#, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr ""
+
+#: src/split.c:106
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Uso: %s [OPZIONE]... [ FILE ]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr ""
+
+#: src/split.c:211
+#, fuzzy, c-format
+msgid "creating file %s\n"
+msgstr "creazione di %s"
+
+#: src/split.c:370
+#, fuzzy, c-format
+msgid "cannot split in more than one way"
+msgstr "impossibile specificare l'orario da più di una fonte"
+
+#: src/split.c:420
+#, fuzzy, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: tipo di file non valido"
+
+#: src/split.c:434 src/split.c:458
+#, fuzzy, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: numero di passi non valido"
+
+#: src/split.c:446
+#, fuzzy, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: numero di passi non valido"
+
+#: src/split.c:487
+#, fuzzy, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "%s: file troppo grande"
+
+#: src/split.c:518
+#, fuzzy, c-format
+msgid "invalid number of lines: 0"
+msgstr "numero %s non valido"
+
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s: opzione `%c%s' non riconosciuta\n"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%%%c: direttiva non valida"
+
+#: src/stat.c:726
+#, fuzzy, c-format
+msgid "warning: backslash at end of format"
+msgstr "carattere %s non valido nella stringa di modo %s"
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr "impossibile leggere le informazioni del file system per %s"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Uso: %s [OPZIONE] FILE...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+#, fuzzy
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"\n"
+"Sequenze di formato valide per i file (senza --filesystem):\n"
+"\n"
+" %A - Diritti di accesso in formato leggibile\n"
+" %a - Diritti di accesso in formato ottale\n"
+" %b - Numero di blocchi allocati\n"
+
+#: src/stat.c:857
+#, fuzzy
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+" %D - Numero del device in esadecimale\n"
+" %d - Numero del device in decimale\n"
+" %F - Tipo di file\n"
+" %f - Modo grezzo in esadecimale\n"
+" %G - Nome del gruppo del proprietario\n"
+" %g - ID del gruppo del proprietario\n"
+
+#: src/stat.c:865
+#, fuzzy
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+" %h - Numero di hard link\n"
+" %i - Numero di inode\n"
+" %N - Nome del file protetto e dereferenziato se è un link simbolico\n"
+" %n - Nome del file\n"
+" %o - Dimensioni dei blocchi di IO\n"
+" %s - Dimensioni totali, in byte\n"
+" %T - Minor number del device in esadecimale\n"
+" %t - Major number del device in esadecimale\n"
+
+#: src/stat.c:875
+#, fuzzy
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+" %U - User name del proprietario\n"
+" %u - User ID del proprietario\n"
+" %X - Orario dell'ultimo accesso in secondi dall'Epoca\n"
+" %x - Orario dell'ultimo accesso\n"
+" %Y - Orario dell'ultima modifica in secondi dall'Epoca\n"
+" %y - Orario dell'ultima modifica\n"
+" %Z - Orario dell'ultimo cambiamento in secondi dall'Epoca\n"
+" %z - Orario dell'ultimo cambiamento\n"
+"\n"
+
+#: src/stat.c:887
+#, fuzzy
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"Sequenze di formato valide per i filesystem:\n"
+"\n"
+" %a - Blocchi liberi disponibili ai non-superuser\n"
+" %b - Numero totale di blocchi di dati nel filesystem\n"
+" %c - Numero totale di inode nel file system\n"
+" %d - Numero di inode liberi nel file system\n"
+" %f - Numero di blocchi liberi file system\n"
+
+#: src/stat.c:896
+#, fuzzy
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+" %i - ID del File System in esadecimale\n"
+" %l - Lunghezza massima dei nomi dei file\n"
+" %n - Nome del file\n"
+" %s - Dimensione ottimale dei blocchi per il trasferimento\n"
+" %T - Tipo in formato leggibile\n"
+" %t - Tipo in esadecimale\n"
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Uso: %s [-F DEVICE] [--file=DEVICE] [IMPOSTAZIONE]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Stampa o modifica le caratteristiche del terminale.\n"
+"\n"
+" -a, --all stampa tutte le impostazioni correnti in un formato\n"
+" comprensibile\n"
+" -g, --save stampa tutte le impostazioni correnti in un formato\n"
+" leggibile da stty\n"
+" -F, --file=DEVICE apre e usa il device specificato invece di stdin\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+"\n"
+"Un - opzionale prima di un'IMPOSTAZIONE indica la negazione. Un * indica le\n"
+"impostazioni non POSIX. Il sistema sottostante definisce quali impostazioni\n"
+"sono disponibili.\n"
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"\n"
+"Caratteri speciali:\n"
+" * dsusp CAR CAR invierà un segnale di stop del terminale dopo il flush\n"
+" dell'input\n"
+" eof CAR CAR invierà un end of file (termina l'input)\n"
+" eol CAR CAR terminerà la riga\n"
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+" * eol2 CAR CAR alternativo per terminare la riga\n"
+" erase CAR CAR cancellerà l'ultimo carattere digitato\n"
+" intr CAR CAR invierà un signale di interrupt\n"
+" kill CAR CAR cancellerà la riga corrente\n"
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+" * lnext CAR CAR inserirà il CARattere successivo in modo letterale\n"
+" quit CAR CAR invierà un segnale di quit\n"
+" * rprnt CAR CAR ridisegnerà la riga corrente\n"
+" start CAR CAR farà ripartire l'input dopo averlo fermato\n"
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+" stop CAR CAR fermerà l'output\n"
+" susp CAR CAR invierà il segnale di stop del terminale\n"
+" * swtch CAR CAR passerà ad un diverso livello di shell\n"
+" * werase CAR CAR cancellerà l'ultima parola digitata\n"
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"\n"
+"Impostazioni speciali:\n"
+" N imposta a N baud le velocità di input e output\n"
+" * cols N dice al kernel che il terminale ha N colonne\n"
+" * columns N come cols N\n"
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+" ispeed N imposta a N la velocità di input\n"
+"* line N usa la disciplina di linea N\n"
+" min N con -icanon, imposta a N il mimimo dei caratteri per\n"
+" completare una lettura\n"
+" ospeed N imposta a N la velocità di output\n"
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+" * rows N dice al kernel che il terminale ha N righe\n"
+" * size stampa il numero di righe e colonne secondo il kernel\n"
+" speed stampa la velocità del terminale\n"
+" time N con -icanon, imposta a N decimi di secondo il timeout in "
+"lettura\n"
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"\n"
+"Impostazioni di controllo:\n"
+"\n"
+" [-]clocal disabilita i segnali di controllo del modem\n"
+" [-]cread permette la ricezione dell'input\n"
+" * [-]crtscts abilita l'handshaking RTS/CTS\n"
+" csN imposta a N bit la dimensione dei caratteri, N tra 5 e 8\n"
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+" [-]cstopb usa due bit di stop per carattere (uno con `-')\n"
+" [-]hup invia un signal di hangup quando l'ultimo processo chiude\n"
+" il tty\n"
+" [-]hupcl come [-]hup\n"
+" [-]parenb genera un bit di parità in output e aspetta un bit di "
+"parità\n"
+" in input\n"
+" [-]parodd imposta la parità dispari (pari con `-')\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"\n"
+"Impostazioni dell'input:\n"
+"\n"
+" [-]brkint i break causano un segnale di interrupt\n"
+" [-]icrnl converte carriage return in newline\n"
+" [-]ignbrk ignora i caratteri di break\n"
+" [-]igncr ignora carriage return\n"
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+" [-]ignpar ignora i caratteri con errori di parità\n"
+" * [-]imaxbel fa un beep e non fa il flush quando il buffer di input\n"
+" completo riceve un carattere\n"
+" [-]inlcr converte newline in carriage return\n"
+" [-]inpck abilita il controllo di parità sull'input\n"
+" [-]istrip azzera il bit più alto (l'ottavo) dei caratteri di input\n"
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+" * [-]iuclc converte i caratteri maiuscoli in minuscoli\n"
+" * [-]ixany permette a qualsiasi carattere di far ripartire l'output,\n"
+" non solo al carattere di start\n"
+" [-]ixoff abilita l'invio dei caratteri di start/stop\n"
+" [-]ixon abilita il controllo di flusso XON/XOFF\n"
+" [-]parmrk indica gli errori di parità (con una sequenza 255-0-"
+"carattere)\n"
+" [-]tandem come [-]ixoff\n"
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"\n"
+"Impostazioni dell'output:\n"
+" * bsN stile del ritardo di backspace, N in [0..1]\n"
+" * crN stile del ritardo di carriage return, N in [0..3]\n"
+" * ffN stile del ritardo di form feed, N in [0..1]\n"
+" * nlN stile del ritardo di newline, N in [0..1]\n"
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+" * [-]ocrnl converte carriage return in newline\n"
+" * [-]ofdel usa per il riempimento caratteri di delete invece di null\n"
+" * [-]ofill usa caratteri di riempimento (padding) invece di\n"
+" temporizzazioni per i ritardi\n"
+" * [-]olcuc converte i caratteri minuscoli in maiuscoli\n"
+" * [-]onlcr converte newline in carriage return-newline\n"
+" * [-]onlret newline esegue un carriage return\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+" * [-]onocr non stampa i carriage return nella prima colonna\n"
+" [-]opost postprocessa l'output\n"
+" * tabN stile del ritardo del tab orizzontale, N in [0..3]\n"
+" * tabs come tab0\n"
+" * -tabs come tab3\n"
+" * vtN stile del ritardo del tab verticale, N in [0..1]\n"
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"\n"
+"Impostazioni locali:\n"
+" [-]crterase fa l'echo dei caratteri di erase come\n"
+" backspace-spazio-backspace\n"
+" * crtkill cancella tutte le righe obbedendo alle impostazioni\n"
+" echoprt e echoe\n"
+" * -crtkill cancella tutte le righe obbedendo alle impostazioni\n"
+" echoctl e echok\n"
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+" * [-]ctlecho fa l'echo dei caratteri di controllo nella notazione `^c'\n"
+" [-]echo fa l'echo dei caratteri in input\n"
+" * [-]echoctl come [-]ctlecho\n"
+" [-]echoe come [-]crterase\n"
+" [-]echok fa l'echo di un newline dopo un carattere di kill\n"
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+" * [-]echoke come [-]crtkill\n"
+" [-]echonl fa l'echo di un newline anche se non fa l'echo degli altri\n"
+" caratteri\n"
+" * [-]echoprt fa l'echo al contrario dei caratteri cancellati, tra `\\' e "
+"'/'\n"
+" [-]icanon abilita i caratteri speciali erase, kill, werase, e rprnt\n"
+" [-]iexten abilita i caratteri speciali non POSIX\n"
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+" [-]isig abilita i caratteri speciali interrupt, quit, e suspend\n"
+" [-]noflsh disabilita il flushing dopo i caratteri speciali di\n"
+" interrupt e quit\n"
+" * [-]prterase come [-]echoprt\n"
+" * [-]tostop ferma i processi in background che provano a scrivere\n"
+" sul terminale\n"
+" * [-]xcase con icanon, fa l'escape con `\\' per i caratteri maiuscoli\n"
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+"\n"
+"Impostazioni combinazione:\n"
+" * [-]LCASE come [-]lcase\n"
+" cbreak come -icanon\n"
+" -cbreak come icanon\n"
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+" cooked come brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, i caratteri eof e eol ai loro valori predefiniti\n"
+" -cooked come raw\n"
+" crt come echoe echoctl echoke\n"
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+" dec come echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq come [-]ixany\n"
+" ek caratteri di erase e kill ai loro valori predefiniti\n"
+" evenp come parenb -parodd cs7\n"
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+" -evenp come -parenb cs8\n"
+" * [-]lcase come xcase iuclc olcuc\n"
+" litout come -parenb -istrip -opost cs8\n"
+" -litout come parenb istrip opost cs7\n"
+" nl come -icrnl -onlcr\n"
+" -nl come icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+" oddp come parenb parodd cs7\n"
+" -oddp come -parenb cs8\n"
+" [-]parity come [-]evenp\n"
+" pass8 come -parenb -istrip cs8\n"
+" -pass8 come parenb istrip cs7\n"
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+" raw come -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw come cooked\n"
+
+#: src/stty.c:709
+#, fuzzy
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+" sane come cread -ignbrk brkint -inlcr -igncr icrnl\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, tutti i caratteri\n"
+" speciali ai loro valori predefiniti\n"
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"Gestisce la linea tty connessa allo standard input. Senza argomenti stampa\n"
+"il baud rate, la disciplina di linea, e le differenze da stty sane. Nelle\n"
+"impostazioni, CAR è preso letteralmente o codificato come in ^c, 0x37, 0177\n"
+"o 127; i valori speciali ^- o undef sono usati per disabilitare i caratteri\n"
+"speciali.\n"
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr "può essere specificato un solo dispositivo"
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+"le opzioni per gli stili dell'output \"comprensibile\" e \"leggibile da\n"
+"stty\" sono mutuamente esclusive"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr ""
+"quando si specifica uno stile dell'output, non si possono impostare i modi"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: impossibile azzerare il modo non bloccante"
+
+#: src/stty.c:885 src/stty.c:995
+#, fuzzy, c-format
+msgid "invalid argument %s"
+msgstr "argomento `%s' non valido"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, fuzzy, c-format
+msgid "missing argument to %s"
+msgstr "manca l'argomento per `%s'"
+
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "larghezza delle righe non valida: %s"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: impossibile eseguire tutte le operazioni richieste"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "new_mode: modo\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: non ci sono informazioni sulle dimensioni di questo dispositivo"
+
+#: src/stty.c:1888
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "argomento intero `%s' non valido"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Password:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: impossibile aprire /dev/tty"
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "impossibile impostare i gruppi"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "impossibile impostare il group id"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "impossibile impostare lo user id"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Uso: %s [OPZIONE]... [-] [UTENTE [ARG]...]\n"
+
+#: src/su.c:386
+#, fuzzy
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Cambia lo user id e il group id efficaci a quelli dell'UTENTE.\n"
+"\n"
+" -, -l, --login rende la shell una shell di login\n"
+" -c, --commmand=COMANDO passa con -c un COMANDO singolo alla shell\n"
+" -f, --fast passa -f alla shell (per csh o tcsh)\n"
+" -m, --preserve-environment non reinizializza le variabili d'ambiente\n"
+" -p come -m\n"
+" -s, --shell=SHELL lancia SHELL se /etc/shells lo permette\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+"\n"
+"Un semplice - implica -l. Se non è specificato l'UTENTE, assume root.\n"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "l'utente %s non esiste"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "password sbagliata"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "uso la shell ristretta %s"
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "attenzione: impossibile cambiare la directory a %s"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+"Forza la scrittura su disco dei blocchi cambiati, aggiorna il super block.\n"
+"\n"
+
+#: src/sync.c:74
+#, fuzzy, c-format
+msgid "ignoring all arguments"
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+"tutti gli argomenti sono stati ignorati\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+"tutti gli argomenti vengono ignorati"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#: src/system.h:417
+#, fuzzy
+msgid " --help display this help and exit\n"
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+" --help mostra questo messaggio d'aiuto ed esce\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+" --help mostra questo aiuto ed esce\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version stampa le informazioni sulla versione ed esce\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+
+#: src/tac.c:236 src/tac.c:337
+#, fuzzy, c-format
+msgid "%s: seek failed"
+msgstr "strip fallito"
+
+#: src/tac.c:265
+#, fuzzy, c-format
+msgid "record too large"
+msgstr "%s: file troppo grande"
+
+#: src/tac.c:459
+#, fuzzy, c-format
+msgid "cannot create temporary file %s"
+msgstr "impossibile creare il file normale %s"
+
+#: src/tac.c:466
+#, fuzzy, c-format
+msgid "cannot open %s for writing"
+msgstr "impossibile aprire %s per la lettura"
+
+#: src/tac.c:487 src/tac.c:494
+#, fuzzy, c-format
+msgid "%s: write error"
+msgstr "errore di scrittura"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr ""
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tail.c:229
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+
+#: src/tail.c:244
+#, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+
+#: src/tail.c:336
+#, fuzzy, c-format
+msgid "closing %s (fd=%d)"
+msgstr "chiusura di %s"
+
+#: src/tail.c:411
+#, fuzzy, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "impossibile creare il fifo %s"
+
+#: src/tail.c:415
+#, fuzzy, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "impossibile creare il fifo %s"
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr ""
+
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr ""
+
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr ""
+
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr ""
+
+#: src/tail.c:1025
+#, fuzzy, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: impossibile azzerare il modo non bloccante"
+
+#: src/tail.c:1066
+#, fuzzy, c-format
+msgid "%s: file truncated"
+msgstr "%s: errore durante il troncamento"
+
+#: src/tail.c:1090
+#, fuzzy, c-format
+msgid "no files remaining"
+msgstr "argomenti dei file mancanti"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+
+#: src/tail.c:1439
+#, fuzzy, c-format
+msgid "number in %s is too large"
+msgstr "%s: file troppo grande"
+
+#: src/tail.c:1511
+#, fuzzy, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr "%s: numero di passi non valido"
+
+#: src/tail.c:1523
+#, fuzzy, c-format
+msgid "%s: invalid PID"
+msgstr "%s: segnale non valido"
+
+#: src/tail.c:1542
+#, fuzzy, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: numero di passi non valido"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr ""
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+
+#: src/tail.c:1573
+#, fuzzy, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "i link simbolici non sono gestibili da questo sistema"
+
+#: src/tail.c:1667
+#, fuzzy, c-format
+msgid "cannot follow %s by name"
+msgstr "impossibile determinare il nome del sistema"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Copia lo standard input a ogni FILE e allo standard output.\n"
+"\n"
+" -a, --append accoda ai FILE specificati, non sovrascrive\n"
+" -i, --ignore-interrupts ignora i segnali di interruzione\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+
+#: src/test.c:125
+#, fuzzy, c-format
+msgid "missing argument after %s"
+msgstr "manca l'argomento per `%s'"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "numero %s non valido"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "manca ')'\n"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "manca ')', trovato %s\n"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: manca un operatore unario\n"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "-nt non accetta -l\n"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "-ef non accetta -l\n"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "-ot non accetta -l\n"
+
+#: src/test.c:368
+msgid "unknown binary operator"
+msgstr "operatore binario sconosciuto"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: manca un operatore binario\n"
+
+#: src/test.c:694
+#, fuzzy
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Uso: %s ESPRESSIONE\n"
+" o: [ ESPRESSIONE ]\n"
+" o: %s OPZIONE\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"Esce con lo stato determinato dall'ESPRESSIONE.\n"
+"\n"
+
+#: src/test.c:707
+#, fuzzy
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"\n"
+"L'ESPRESSIONE è vera o falsa e imposta lo stato d'uscita. È una fra:\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+"\n"
+" ( ESPRESSIONE ) ESPRESSIONE è vera\n"
+" ! ESPRESSIONE ESPRESSIONE è falsa\n"
+" ESPRESSIONE1 -a ESPRESSIONE2 sia ESPRESSIONE1 che ESPRESSIONE2 sono vere\n"
+" ESPRESSIONE1 -o ESPRESSIONE2 o ESPRESSIONE1 o ESPRESSIONE2 è vera\n"
+
+#: src/test.c:719
+#, fuzzy
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"\n"
+" [-n] STRINGA la lunghezza di STRINGA non è zero\n"
+" -z STRINGA la lunghezza di STRINGA è zero\n"
+" STRINGA1 = STRINGA2 le stringhe sono uguali\n"
+" STRINGA1 != STRINGA2 le stringhe sono diverse\n"
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" INTERO1 -eq INTERO2 INTERO1 è uguale INTERO2\n"
+" INTERO1 -ge INTERO2 INTERO1 è maggiore o uguale a INTERO2\n"
+" INTERO1 -gt INTERO2 INTERO1 è maggiore di INTERO2\n"
+" INTERO1 -le INTERO2 INTERO1 è minore o uguale a INTERO2\n"
+" INTERO1 -lt INTERO2 INTERO1 è minore di INTERO2\n"
+" INTERO1 -ne INTERO2 INTERO1 non è uguale a INTERO2\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+"\n"
+" FILE1 -ef FILE2 FILE1 e FILE2 hanno gli stessi numeri di device e di "
+"inode\n"
+" FILE1 -nt FILE2 FILE1 è più nuovo (data di modifica) di FILE2\n"
+" FILE1 -ot FILE2 FILE1 è più vecchio FILE2\n"
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+"\n"
+" -b FILE FILE esiste ed è speciale a blocchi\n"
+" -c FILE FILE esiste ed è speciale a caratteri\n"
+" -d FILE FILE esiste ed è una directory\n"
+" -e FILE FILE esiste\n"
+
+#: src/test.c:749
+#, fuzzy
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+" -f FILE FILE esiste ed è un file regolare\n"
+" -g FILE FILE esiste ed è set-group-ID\n"
+" -h FILE FILE esiste ed è un link simbolico (come -L)\n"
+" -G FILE FILE esiste ed è posseduto dal group ID efficace\n"
+" -k FILE FILE esiste ed ha il suo sticky bit impostato \n"
+
+#: src/test.c:756
+#, fuzzy
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+" -L FILE FILE esiste ed è un link simbolico (come -h)\n"
+" -O FILE FILE esiste ed è posseduto dallo user ID efficace\n"
+" -p FILE FILE esiste ed è una pipe con nome\n"
+" -r FILE FILE esiste ed è leggibile\n"
+" -s FILE FILE esiste ed ha dimensione maggiore di zero\n"
+
+#: src/test.c:763
+#, fuzzy
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+" -S FILE FILE esiste ed è un socket\n"
+" -t [FD] il file descriptor FD (predef. stdout) è aperto su un "
+"terminale\n"
+" -u FILE FILE esiste ed ha il proprio bit set-user-ID impostato\n"
+" -w FILE FILE esiste ed è scrivibile\n"
+" -x FILE FILE esiste ed è eseguibile\n"
+
+#: src/test.c:770
+#, fuzzy
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"Si noti che le parentesi hanno bisogno di essere protette (p.es. con\n"
+"backslash) dalla shell.\n"
+"INTERO può anche essere -l STRINGA, che è valutato alla lunghezza di "
+"STRINGA.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "manca un `]'\n"
+
+#: src/test.c:846
+#, fuzzy, c-format
+msgid "extra argument %s"
+msgstr "troppi argomenti"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "formato di orario %s non valido"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "creazione di %s"
+
+#: src/touch.c:211
+#, fuzzy, c-format
+msgid "cannot touch %s"
+msgstr "impossibile fare stat di %s"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "impostazione dell'orario di %s"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+"Aggiorna gli orari di accesso e modifica di ogni FILE a quello attuale.\n"
+"\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a cambia solo l'orario di accesso\n"
+" -c, --no-create non crea alcun file\n"
+" -d, --date=STRINGA usa STRINGA invece che l'orario attuale\n"
+" -f (ignorato)\n"
+" -m cambia solo l'orario di modifica\n"
+
+#: src/touch.c:248
+#, fuzzy
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --reference=FILE usa l'orario di questo file invece di quello "
+"attuale\n"
+" -t ORARIO usa [[CC]YY]MMDDhhmm[.ss] invece che l'orario "
+"attuale\n"
+" --time=TIPO imposta l'orario TIPO: accesso, atime (come -a);\n"
+" mtime modifica (come -m)\n"
+
+#: src/touch.c:257
+#, fuzzy
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"Nota che le opzioni -d e -t accettano differenti formati di orario.\n"
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "impossibile specificare l'orario da più di una fonte"
+
+#: src/touch.c:389
+#, fuzzy, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+"attenzione: `touch %s' è obsoleto; usare `touch -t %04d%02d%02d%02d%02d.%02d'"
+
+#: src/tr.c:290
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Uso: %s [OPZIONE]... [FILE]...\n"
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+
+#: src/tr.c:519
+#, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr ""
+
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr ""
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr ""
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr ""
+
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "data `%s' non valida"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr ""
+
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr ""
+"#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+"file speciale a caratteri\n"
+"#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+"file speciali a caratteri"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr ""
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr ""
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr ""
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr ""
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr ""
+
+#: src/tr.c:1731
+msgid "Two strings must be given when translating."
+msgstr ""
+
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr ""
+
+#: src/true.c:42
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s NOME\n"
+" o: %s OPZIONE\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tsort.c:474
+#, fuzzy, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: numero di passi non valido"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr ""
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Uso: %s [OPZIONE]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Stampa il nome del file del terminale connesso allo standard input.\n"
+"\n"
+" -s, --silent, --quiet non stampa niente, restituisce solo uno stato\n"
+" d'uscita\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "non è un tty"
+
+#: src/uname.c:118
+#, fuzzy
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Stampa alcune informazioni sul sistema. Senza una OPZIONE è come fosse -s.\n"
+"\n"
+" -a, --all stampa tutte le informazioni, nel seguente "
+"ordine:\n"
+" -s, --kernel-name stampa il nome del kernel\n"
+" -n, --nodename stampa l'hostname del nodo di rete\n"
+" -r, --kernel-release stampa la release del kernel\n"
+
+#: src/uname.c:127
+#, fuzzy
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v, --kernel-version stampa la versione del kernel\n"
+" -m, --machine stampa il nome dell'hardware della macchina\n"
+" -p, --processor stampa il tipo di processore\n"
+" -i, --hardware-platform stampa la piattaforma hardware\n"
+" -o, --operating-system stampa il sistema operativo\n"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "impossibile determinare il nome del sistema"
+
+#: src/unexpand.c:125
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "%s: file troppo grande"
+
+#: src/uniq.c:135
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Uso: %s [OPZIONE]... [ FILE ]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+
+#: src/uniq.c:350
+#, fuzzy, c-format
+msgid "too many repeated lines"
+msgstr "troppi argomenti"
+
+#: src/uniq.c:512
+#, fuzzy
+msgid "invalid number of fields to skip"
+msgstr "%s: numero di passi non valido"
+
+#: src/uniq.c:521
+#, fuzzy
+msgid "invalid number of bytes to skip"
+msgstr "%s: numero di passi non valido"
+
+#: src/uniq.c:530
+#, fuzzy
+msgid "invalid number of bytes to compare"
+msgstr "%s: numero di passi non valido"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s FILE\n"
+" o: %s OPZIONE\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"Chiama la funzione unlink per rimuovere il FILE indicato.\n"
+"\n"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "impossibile scollegare %s"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "impossibile determinare l'ora di avvio"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " attivo da %2d:%02d%s "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "am"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "pm"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr ""
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr ""
+
+#: src/uptime.c:143
+#, fuzzy, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "giorni"
+msgstr[1] "giorno"
+
+#: src/uptime.c:147
+#, fuzzy, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "utenti"
+msgstr[1] "utente"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", load average: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Uso: %s [OPZIONE]... [ FILE ]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Stampa l'ora corrente, da quanto tempo il sistema è attivo, il numero di "
+"utenti\n"
+"sul sistema e il numero medio di processi nella coda di esecuzione negli "
+"ultimi\n"
+"1, 5 e 15 minuti. Se non è specificato il FILE usa %s.\n"
+"%s è comunemente usato come FILE.\n"
+"\n"
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Stampa chi è attualmente connesso basandosi su FILE.\n"
+"Se non è specificato il FILE, usa %s.\n"
+"%s è comunemente usato come FILE.\n"
+"\n"
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+
+#: src/wc.c:121
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr " fa "
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "term="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "exit="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "cambio orario"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "run-level"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "last="
+
+#: src/who.c:545
+#, fuzzy, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"# utenti=%u\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "NOME"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "LINEA"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "ORA"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr "INATTIVO"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "COMMENTO"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "USCITA"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Uso: %s [OPZIONE]... [ FILE | ARG1 ARG2 ]\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" -a, --all come -b -d --login -p -r -t -T -u\n"
+" -b, --boot orario dell'ultimo boot del sistema\n"
+" -d, --dead stampa i processi morti\n"
+" -H, --heading stampa la riga di intestazione delle colonne\n"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+#, fuzzy
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+" -l, --lookup cerca di canonicalizzare gli hostname con il DNS\n"
+" (-l è deprecato, usa --lookup)\n"
+" -m solo l'hostname e l'utente associato a stdin\n"
+" -p, --process stampa i processi attivi figli di init\n"
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+" -q, --count tutti i nomi di login e il numero di utenti connessi\n"
+" -r, --runlevel stampa il runlevel attuale\n"
+" -s, --short stampa solo il nome, la riga e l'orario (predefinita)\n"
+" -t, --time stampa l'ultima modifica dell'orologio di sistema\n"
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+" -T, -w, --mesg aggiunge lo stato dei messaggi dell'utente come +, - "
+"o ?\n"
+" -u, --users elenca gli utenti collegati\n"
+" --message come -T\n"
+" --writable come -T\n"
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"Se il FILE non è specificato, usa %s. È comune usare %s come FILE.\n"
+"Se sono dati ARG1 e ARG2, è assunto -m: `am i' o `mom likes' sono comuni.\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr "Attenzione: -i sarà rimosso in una versione futura; usa -u"
+
+#: src/whoami.c:51
+#, fuzzy
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Stampa il nome dell'utente associato all'attuale user id efficace.\n"
+"Uguale a id -un.\n"
+"\n"
+
+#: src/whoami.c:95
+#, fuzzy, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "impossibile trovare il nome dell'utente con ID %u"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [STRINGA]...\n"
+" o: %s OPZIONE\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"Stampa in continuazione una riga con tutte le STRINGA specificate oppure "
+"`y'.\n"
+"\n"
+
+#~ msgid "strip failed"
+#~ msgstr "strip fallito"
+
+#~ msgid "program error"
+#~ msgstr "errore del programma"
+
+#~ msgid "stack overflow"
+#~ msgstr "overflow dello stack"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "impossibile cambiare il proprietario e/o il gruppo di %s"
+
+#, fuzzy
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr ""
+#~ "#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+#~ "impossibile fare chdir alla directory %s\n"
+#~ "#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+#~ "impossibile entrare nella directory %s"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "impossibile ottenere il gruppo di login di un UID numerico"
+
+#, fuzzy
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "#-#-#-#-# trans-it.po (sh-utils 2.0.13) #-#-#-#-#\n"
+#~ "Questo è software libero; si veda il sorgente per le condizioni di "
+#~ "copiatura.\n"
+#~ "NON c'è alcuna garanzia; neppure di COMMERCIABILITÀ o IDONEITÀ AD UN\n"
+#~ "PARTICOLARE SCOPO, nei limiti permessi dalla legge.\n"
+#~ "#-#-#-#-# trans-it.po (fileutils 4.1.11) #-#-#-#-#\n"
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ "\n"
+#~ "Questo è software libero; si veda il sorgente per le condizioni di "
+#~ "copiatura.\n"
+#~ "NON c'è alcuna garanzia; neppure di COMMERCIABILITÀ o IDONEITÀ AD UN\n"
+#~ "PARTICOLARE SCOPO.\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "troppo pochi argomenti"
+
+#, fuzzy
+#~ msgid "closing standard output"
+#~ msgstr "standard output"
+
+#~ msgid "cannot change to null group"
+#~ msgstr "impossibile cambiarlo nel gruppo nullo"
+
+#~ msgid "group number"
+#~ msgstr "numero del gruppo"
+
+#~ msgid "invalid group number %s"
+#~ msgstr "numero del gruppo non valido %s"
+
+#~ msgid ""
+#~ "\n"
+#~ "Each MODE is one or more of the letters ugoa, one of the symbols +-= and\n"
+#~ "one or more of the letters rwxXstugo.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ogni MODO è una o più delle lettere ugoa, uno dei simboli +-= e una o "
+#~ "più\n"
+#~ "delle lettere rwxXstugo.\n"
+
+#~ msgid "invalid mode string: %s"
+#~ msgstr "stringa di modo %s non valida"
+
+#~ msgid "unable to restore permissions of %s"
+#~ msgstr "impossibile ripristinare i permessi di %s"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "Uso: %s [OPZIONE]... PROPRIETARIO[:[GRUPPO]] FILE...\n"
+#~ " o: %s [OPZIONE]... :GRUPPO FILE...\n"
+#~ " o: %s [OPZIONE]... --reference=RFILE FILE...\n"
+
+#~ msgid "Richard Stallman and David MacKenzie"
+#~ msgstr "Richard Stallman e David MacKenzie"
+
+#, fuzzy
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "Uso: %s [OPZIONE]... [ FILE ]\n"
+
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "impossibile sovrascrivere la directory %s"
+
+#~ msgid "Torbjorn Granlund, David MacKenzie, and Jim Meyering"
+#~ msgstr "Torbjorn Granlund, David MacKenzie, e Jim Meyering"
+
+#~ msgid "missing file arguments"
+#~ msgstr "mancano i file di argomento"
+
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "%s: l'obiettivo specificato non è una directory"
+
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr ""
+#~ "copia di file multipli, ma l'ultimo argomento %s non è una directory"
+
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "attenzione: --version-control (-V) è obsoleto; la gestione di questa "
+#~ "opzione\n"
+#~ "sarà rimossa in una versione futura. Usa --backup=%s al suo posto."
+
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "i link simbolici non sono gestibili da questo sistema"
+
+#, fuzzy
+#~ msgid "Stuart Kemp and David MacKenzie"
+#~ msgstr "Mike Parker e David MacKenzie"
+
+#, fuzzy
+#~ msgid "David Ihnat, David MacKenzie, and Jim Meyering"
+#~ msgstr "Mike Parker, David MacKenzie, e Jim Meyering"
+
+#~ msgid ""
+#~ "Display the current time in the given FORMAT, or set the system date.\n"
+#~ "\n"
+#~ " -d, --date=STRING display time described by STRING, not `now'\n"
+#~ " -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+#~ " -ITIMESPEC, --iso-8601[=TIMESPEC] output date/time in ISO 8601 "
+#~ "format.\n"
+#~ " TIMESPEC=`date' for date only,\n"
+#~ " `hours', `minutes', or `seconds' for date "
+#~ "and\n"
+#~ " time to the indicated precision.\n"
+#~ " --iso-8601 without TIMESPEC defaults to "
+#~ "`date'.\n"
+#~ msgstr ""
+#~ "Visualizza l'ora corrente nel FORMATO specificato, o imposta la data di\n"
+#~ "sistema.\n"
+#~ "\n"
+#~ " -d, --date=STRINGA visualizza l'ora descritta da STRINGA, non "
+#~ "`now'\n"
+#~ " -f, --file=DATEFILE come --date una volta per ogni riga di "
+#~ "DATAFILE\n"
+#~ " -ITIMESPEC, --iso-8601[=TIMESPEC] stampa una stringa di data/ora nel "
+#~ "formato\n"
+#~ " ISO-8601. TIMESPEC=`date' per la sola data,\n"
+#~ " `hours', `minutes', o `seconds' per la data "
+#~ "e\n"
+#~ " l'orario con la precisione indicata.\n"
+#~ " --iso-8601 senza TIMESPEC userà `date'.\n"
+
+#~ msgid ""
+#~ " %F same as %Y-%m-%d\n"
+#~ " %g the 2-digit year corresponding to the %V week number\n"
+#~ " %G the 4-digit year corresponding to the %V week number\n"
+#~ msgstr ""
+#~ " %F come %Y-%m-%d\n"
+#~ " %g l'anno di due cifre corrispondente al numero della settimana %V\n"
+#~ " %G l'anno di quattro cifre corrispondente al numero della settimana %"
+#~ "V\n"
+
+#~ msgid ""
+#~ " %z RFC-822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %Z time zone (e.g., EDT), or nothing if no time zone is determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr ""
+#~ " %z fuso orario numerico stile RFC-822 (-0500) (estensione non "
+#~ "standard)\n"
+#~ " %Z fuso orario (p.es., EDT), o niente se non è determinabile\n"
+#~ "\n"
+#~ "Come comportamento predefinito, date completa i campi numerici con zeri.\n"
+#~ "GNU date riconosce i seguenti modificatori tra `%' e una direttiva "
+#~ "numerica.\n"
+#~ "\n"
+#~ " `-' (trattino) non riempie il campo\n"
+#~ " `_' (underscore) riempie il campo con spazi\n"
+
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "troppi argomenti che non sono opzioni: %s%s"
+
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-822 (-R) option"
+#~ msgstr ""
+#~ "la stringa di formato non può essere specificata quando si usa l'opzione\n"
+#~ "--rfc-822 (-R)"
+
+#~ msgid "undefined"
+#~ msgstr "non definita"
+
+#~ msgid "cannot get time of day"
+#~ msgstr "impossibile ottenere l'ora"
+
+#~ msgid "Paul Rubin, David MacKenzie, and Stuart Kemp"
+#~ msgstr "Paul Rubin, David MacKenzie, e Stuart Kemp"
+
+#~ msgid ""
+#~ " notrunc do not truncate the output file\n"
+#~ " ucase change lower case to upper case\n"
+#~ " swab swap every pair of input bytes\n"
+#~ " noerror continue after read errors\n"
+#~ " sync pad every input block with NULs to ibs-size; when used\n"
+#~ " with block or unblock, pad with spaces rather than NULs\n"
+#~ msgstr ""
+#~ " notrunc non tronca il file di output\n"
+#~ " ucase cambia le minuscole in maiuscole\n"
+#~ " swab scambia ogni coppia di byte in input\n"
+#~ " noerror continua dopo gli errori di lettura\n"
+#~ " sync completa con NUL fino a cbs ogni blocco in input; quando è "
+#~ "usato\n"
+#~ "\"\" con block o unblock completa con spazi invece che con "
+#~ "NUL\n"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "entrati %s+%s record\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "usciti %s+%s record\n"
+
+#~ msgid "truncated records"
+#~ msgstr "record troncati"
+
+#~ msgid ""
+#~ "only one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, "
+#~ "{unblock,sync}"
+#~ msgstr ""
+#~ "una sola conversione tra {ascii,ebcdic,ibm}, {lcase,ucase}, {block,"
+#~ "unblock},\n"
+#~ "{unblock,sync}"
+
+#~ msgid " Type"
+#~ msgstr " Tipo"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr ""
+#~ "l'argomento FILE non può essere usato con l'opzione per stampare\n"
+#~ "il database interno di dircolors"
+
+#~ msgid "David MacKenzie and Jim Meyering"
+#~ msgstr "David MacKenzie and Jim Meyering"
+
+#~ msgid ""
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -k like --block-size=1K\n"
+#~ " -l, --count-links count sizes many times if hard linked\n"
+#~ msgstr ""
+#~ " -h, --human-readable stampa le dimensioni in formato leggibile (es: "
+#~ "1K, 23M)\n"
+#~ " -H, --si idem, ma usa multipli di 1000 invece che di 1024\n"
+#~ " -k come --block-size=1K\n"
+#~ " -l, --count-links conta le dimensioni più volte se ci sono hard "
+#~ "link\n"
+
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ msgstr ""
+#~ "Stampa la STRINGA sullo standard output.\n"
+#~ "\n"
+#~ " -n non stampa il newline finale\n"
+#~ " -e abilita l'interpretazione delle sequenze di caratteri\n"
+#~ " protette da backspace indicate sotto\n"
+#~ " -E disabilita l'interpolazione di queste sequenze in "
+#~ "STRINGA\n"
+
+#~ msgid "Richard Mlynarik and David MacKenzie"
+#~ msgstr "Richard Mlynarik and David MacKenzie"
+
+#~ msgid ""
+#~ "warning: unportable BRE: `%s': using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr ""
+#~ "attenzione: BRE non portabile: `%s': l'uso di `^' come primo carattere\n"
+#~ "di un'espressione regolare semplice non è portabile; è ignorato"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Uso: %s [argomenti della riga di comando ignorati]\n"
+#~ " o: %s OPZIONE\n"
+#~ "Esce con un codice di stato indicante l'insuccesso.\n"
+#~ "\n"
+#~ "I nomi di queste opzioni non possono essere abbreviati.\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid "invalid width option: `%s'"
+#~ msgstr "opzione `%s' non valida"
+
+#, fuzzy
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "opzione %s non riconosciuta"
+
+#~ msgid "Arnold Robbins and David MacKenzie"
+#~ msgstr "Arnold Robbins and David MacKenzie"
+
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr ""
+#~ "installazione di file multipli, ma l'ultimo argomento %s non è una "
+#~ "directory"
+
+#~ msgid "%s is a directory"
+#~ msgstr "%s è una directory"
+
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "impossibile ottenere l'orario di %s"
+
+#, fuzzy
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "intervallo di tempo non valido: `%s'"
+
+#, fuzzy
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "intervallo di tempo non valido: `%s'"
+
+#, fuzzy
+#~ msgid "too many non-option arguments"
+#~ msgstr "troppi argomenti che non sono opzioni: %s%s"
+
+#, fuzzy
+#~ msgid "too few non-option arguments"
+#~ msgstr "troppi argomenti che non sono opzioni: %s%s"
+
+#~ msgid "Mike Parker and David MacKenzie"
+#~ msgstr "Mike Parker e David MacKenzie"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: Il file esiste"
+
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "crea il link simbolico %s a %s"
+
+#~ msgid "create hard link %s to %s"
+#~ msgstr "crea un hard link %s a %s"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "Uso: %s [OPZIONE]... OBIETTIVO... [NOME_LINK]\n"
+#~ " o: %s [OPZIONE]... OBIETTIVO... DIRECTORY\n"
+#~ " o: %s [OPZIONE]... --target-directory=DIRECTORY OBIETTIVO...\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr ""
+#~ "quando si fanno link multipli l'ultimo argomento deve essere una directory"
+
+#~ msgid ""
+#~ " -g like -l, but do not list owner\n"
+#~ " -G, --no-group inhibit display of group information\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " --si likewise, but use powers of 1000 not 1024\n"
+#~ " -H, --dereference-command-line follow symbolic links on the command "
+#~ "line\n"
+#~ msgstr ""
+#~ " -g come -l, ma non elenca il proprietario\n"
+#~ " -G, --no-group inibisce la visualizzazione dei gruppi\n"
+#~ " -h, --human-readable stampa le dimensioni in formato leggibile (es: "
+#~ "1K, 2G)\n"
+#~ " --si idem, ma usa multipli di 1000 invece che di "
+#~ "1024\n"
+#~ " -H, --dereference-command-line segue i symlink sulla riga di comando\n"
+
+#, fuzzy
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr ""
+#~ "le opzioni per specificare la stampa di date sono mutualmente esclusive"
+
+#, fuzzy
+#~ msgid "no files may be specified when using --string"
+#~ msgstr ""
+#~ "non è stato indicato il nome di un utente; quando si usa -l bisogna "
+#~ "indicarne\n"
+#~ "almeno uno"
+
+#, fuzzy
+#~ msgid "only one argument may be specified when using --check"
+#~ msgstr "può essere specificato un solo dispositivo"
+
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "impossibile impostare i permessi della directory %s"
+
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "impossibile impostare i permessi del fifo %s"
+
+#~ msgid "wrong number of arguments"
+#~ msgstr "numero di argomenti errato"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr ""
+#~ "i major e minor numbers del dispositivo non possono essere specificati "
+#~ "per\n"
+#~ "i file FIFO"
+
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "impossibile impostare i permessi di %s"
+
+#~ msgid "Mike Parker, David MacKenzie, and Jim Meyering"
+#~ msgstr "Mike Parker, David MacKenzie, e Jim Meyering"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr ""
+#~ "quando vengono spostati più file l'ultimo argomento deve essere una "
+#~ "directory"
+
+#~ msgid ""
+#~ "Run COMMAND with an adjusted scheduling priority.\n"
+#~ "With no COMMAND, print the current scheduling priority. ADJUST is 10\n"
+#~ "by default. Range goes from -20 (highest priority) to 19 (lowest).\n"
+#~ "\n"
+#~ " -n, --adjustment=ADJUST increment priority by ADJUST first\n"
+#~ msgstr ""
+#~ "Esegue il COMANDO con una priorità di scheduling modificata.\n"
+#~ "Se manca il COMANDO stampa la priorità di scheduling corrente. Il valore\n"
+#~ "predefinito per AGGIUSTAMENTO è 10. Il campo varia tra -20 (priorità\n"
+#~ "massima) e 19 (minima).\n"
+#~ "\n"
+#~ " -n, --adjustment=AGGIUSTAMENTO come -AGGIUSTAMENTO\n"
+
+#~ msgid "invalid option `%s'"
+#~ msgstr "opzione `%s' non valida"
+
+#~ msgid "invalid priority `%s'"
+#~ msgstr "priorità `%s' non valida"
+
+#~ msgid "cannot get priority"
+#~ msgstr "impossibile determinare la priorità"
+
+#~ msgid "cannot set priority"
+#~ msgstr "impossibile impostare la priorità"
+
+#, fuzzy
+#~ msgid "Scott Bartram and David MacKenzie"
+#~ msgstr "Richard Stallman e David MacKenzie"
+
+#, fuzzy
+#~ msgid "David M. Ihnat and David MacKenzie"
+#~ msgstr "Richard Mlynarik and David MacKenzie"
+
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr ""
+#~ "Diagnostica costrutti non portabili nel NOME\n"
+#~ "\n"
+#~ " -p, --portability verifica per tutti i sistemi POSIX, non solo per "
+#~ "questo\n"
+
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "il percorso `%s' contiene il carattere non portabile `%c'"
+
+#~ msgid "`%s' is not a directory"
+#~ msgstr "`%s' non è una directory"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "la directory `%s' non è leggibile"
+
+#~ msgid "name `%s' has length %ld; exceeds limit of %ld"
+#~ msgstr "il nome `%s' è lungo %ld; supera il limite di %ld"
+
+#~ msgid "path `%s' has length %d; exceeds limit of %ld"
+#~ msgstr "il percorso `%s' è lungo %d; supera il limite di %ld"
+
+#~ msgid "Joseph Arceneaux, David MacKenzie, and Kaveh Ghazi"
+#~ msgstr "Joseph Arceneaux, David MacKenzie, and Kaveh Ghazi"
+
+#, fuzzy
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "numero del gruppo non valido %s"
+
+#, fuzzy
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "argomento in virgola mobile non valido: %s"
+
+#, fuzzy
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "argomento intero `%s' non valido"
+
+#, fuzzy
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%e %b %H:%M"
+
+#~ msgid "David MacKenzie and Richard Mlynarik"
+#~ msgstr "David MacKenzie and Richard Mlynarik"
+
+#~ msgid "\\%c: invalid escape"
+#~ msgstr "\\%c: sequenza di escape non valida"
+
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "Uso: %s formato [argomento...]\n"
+
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "impossibile fare chdir da %s a .."
+
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "impossibile fare lstat di `.' in %s"
+
+#~ msgid "cannot lstat %s"
+#~ msgstr "impossibile fare lstat di %s"
+
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "impossibile fare chdir da %s in %s"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "impossibile rimuovere `.' o `..'"
+
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ " -r, -R, --recursive remove the contents of directories recursively\n"
+#~ " -v, --verbose explain what is being done\n"
+#~ msgstr ""
+#~ "Rimuove (con unlink) il/i FILE.\n"
+#~ "\n"
+#~ " -d, --directory fa unlink della directory, anche se non è vuota\n"
+#~ " (solo per il super-user)\n"
+#~ " -f, --force ignora i file non esistenti, non chiede mai "
+#~ "conferma\n"
+#~ " -i, --interactive chiede conferma prima di ogni cancellazione\n"
+#~ " -r, -R, --recursive rimuove ricorsivamente il contenuto delle "
+#~ "directory\n"
+#~ " -v, --verbose spiega cosa sta facendo\n"
+
+#~ msgid ""
+#~ "when the starting value is larger than the limit,\n"
+#~ "the increment must be negative"
+#~ msgstr ""
+#~ "quando il valore d'inizio è maggiore del limite,\n"
+#~ "l'incremento dev'essere negativo"
+
+#~ msgid ""
+#~ "when the starting value is smaller than the limit,\n"
+#~ "the increment must be positive"
+#~ msgstr ""
+#~ "quando il valore d'inizio è minore del limite,\n"
+#~ "l'incremento dev'essere positivo"
+
+#~ msgid "Jim Meyering and Paul Eggert"
+#~ msgstr "Jim Meyering and Paul Eggert"
+
+#, fuzzy
+#~ msgid "Mike Haertel and Paul Eggert"
+#~ msgstr "Jim Meyering and Paul Eggert"
+
+#~ msgid ""
+#~ "Display file or filesystem status.\n"
+#~ "\n"
+#~ " -f, --filesystem display filesystem status instead of file status\n"
+#~ " -c --format=FORMAT use the specified FORMAT instead of the default\n"
+#~ " -L, --dereference follow links\n"
+#~ " -t, --terse print the information in terse form\n"
+#~ msgstr ""
+#~ "Mostra lo stato di un file o filesystem\n"
+#~ "\n"
+#~ " -f, --filesystem mostra lo stato del filesystem invece che del "
+#~ "file\n"
+#~ " -c --format=FORMATO usa il FORMATO indicato invece di quello "
+#~ "predefinito\n"
+#~ " -l, --link segue i link\n"
+#~ " -t, --terse stampa le informazioni in forma sintetica\n"
+
+#, fuzzy
+#~ msgid "Kayvan Aghaiepour and David MacKenzie"
+#~ msgstr "Mike Parker e David MacKenzie"
+
+#, fuzzy
+#~ msgid "Jay Lepreau and David MacKenzie"
+#~ msgstr "Joseph Arceneaux and David MacKenzie"
+
+#, fuzzy
+#~ msgid "stdin: read error"
+#~ msgstr "errore di lettura"
+
+#, fuzzy
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "carattere %s non valido nella stringa di modo %s"
+
+#, fuzzy
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr "%s: numero di passi non valido"
+
+#~ msgid "Mike Parker, Richard M. Stallman, and David MacKenzie"
+#~ msgstr "Mike Parker, Richard M. Stallman, and David MacKenzie"
+
+#~ msgid "argument expected\n"
+#~ msgstr "manca un'argomento\n"
+
+#~ msgid "integer expression expected %s\n"
+#~ msgstr "manca un'espressione intera %s\n"
+
+#~ msgid "before -lt"
+#~ msgstr "prima di -lt"
+
+#~ msgid "after -lt"
+#~ msgstr "dopo di -lt"
+
+#~ msgid "before -le"
+#~ msgstr "prima di -le"
+
+#~ msgid "after -le"
+#~ msgstr "dopo di -le"
+
+#~ msgid "before -gt"
+#~ msgstr "prima di -gt"
+
+#~ msgid "after -gt"
+#~ msgstr "dopo di -gt"
+
+#~ msgid "before -ge"
+#~ msgstr "prima di -ge"
+
+#~ msgid "after -ge"
+#~ msgstr "dopo di -ge"
+
+#~ msgid "before -ne"
+#~ msgstr "prima di -ne"
+
+#~ msgid "after -ne"
+#~ msgstr "dopo di -ne"
+
+#~ msgid "before -eq"
+#~ msgstr "prima di -eq"
+
+#~ msgid "after -eq"
+#~ msgstr "dopo di -eq"
+
+#~ msgid "after -t"
+#~ msgstr "dopo -t"
+
+#~ msgid "FIXME: ksb and mjb"
+#~ msgstr "FIXME: ksb and mjb"
+
+#~ msgid "too many arguments\n"
+#~ msgstr "troppi argomenti\n"
+
+#~ msgid "file arguments missing"
+#~ msgstr "argomenti dei file mancanti"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Uso: %s [argomenti della riga di comando ignorati]\n"
+#~ " o: %s OPZIONE\n"
+#~ "Esce con un codice di stato indicante il successo.\n"
+#~ "\n"
+#~ "I nomi di queste opzioni non possono essere abbreviati.\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid "only one argument may be specified"
+#~ msgstr "può essere specificato un solo dispositivo"
+
+#~ msgid "Joseph Arceneaux and David MacKenzie"
+#~ msgstr "Joseph Arceneaux and David MacKenzie"
+
+#, fuzzy
+#~ msgid "Paul Rubin and David MacKenzie"
+#~ msgstr "Arnold Robbins and David MacKenzie"
+
+#~ msgid "Joseph Arceneaux, David MacKenzie, and Michael Stone"
+#~ msgstr "Joseph Arceneaux, David MacKenzie, and Michael Stone"
+
+#~ msgid ""
+#~ " -i, --idle add idle time as HOURS:MINUTES, . or old\n"
+#~ " (deprecated, use -u)\n"
+#~ " --login print system login processes\n"
+#~ " (equivalent to SUS -l)\n"
+#~ msgstr ""
+#~ " -i, --idle aggiunge il tempo di inattività come ORE:MINUTI\n"
+#~ " (deprecato, usa -u)\n"
+#~ " --login stampa i processi di sistema per fare il login\n"
+#~ " (equivale a -l di SUS)\n"
+
+#~ msgid ""
+#~ "Warning: the meaning of '-l' will change in a future release to conform "
+#~ "to POSIX"
+#~ msgstr ""
+#~ "Attenzione: il significato di '-l' cambierà in una versione futura per\n"
+#~ "conformarsi a POSIX"
+
+#~ msgid "%s: cannot find username for UID %u\n"
+#~ msgstr "%s: impossibile trovare un nome di utente per l'UID %u\n"
diff --git a/po/ja.gmo b/po/ja.gmo
new file mode 100644
index 0000000..9fc240b
--- /dev/null
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
new file mode 100644
index 0000000..ec4bbec
--- /dev/null
+++ b/po/ja.po
@@ -0,0 +1,11467 @@
+# Translation of `textutils' messages to Japanese.
+# Copyright (C) 2000, 2002 Free Software Foundation, Inc.
+# Masahito Yamaga <yamaga@ipc.chiba-u.ac.jp>, 2002.
+# derived from the version by Yasuyuki Furukawa <yasu@on.cs.keio.ac.jp> 1998
+# Jun Nishii <jun@flatout.org> 1999
+# Daisuke Yamashita <yamad@mb.infoweb.ne.jp> 1999
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU textutils 2.0.22\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2002-07-27 22:54+0900\n"
+"Last-Translator: Masahito Yamaga <ma@yama-ga.com>\n"
+"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=EUC-JP\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "%s ¤Î°À­¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, fuzzy, c-format
+msgid "setting permissions for %s"
+msgstr "%s ¤Î°À­¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "`%2$s' ¤ËÂФ¹¤ë°ú¿ô %1$s ¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "`%2$s' ¤ËÂФ¹¤ë°ú¿ô %1$s ¤¬Û£Ëæ¤Ç¤¹"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Í­¸ú¤Ê°ú¿ô:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "½ñ¤­¹þ¤ß¥¨¥é¡¼"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "̤ÃΤΥ·¥¹¥Æ¥à¥¨¥é¡¼"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, fuzzy, c-format
+msgid "cannot stat %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "Ä̾ï¤Î¶õ¥Õ¥¡¥¤¥ë"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "Ä̾ï¥Õ¥¡¥¤¥ë"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "¥Ö¥í¥Ã¥¯¥¹¥Ú¥·¥ã¥ë¥Õ¥¡¥¤¥ë"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "¥­¥ã¥é¥¯¥¿¥¹¥Ú¥·¥ã¥ë¥Õ¥¡¥¤¥ë"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "fifo"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "¥½¥±¥Ã¥È"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "¥á¥Ã¥»¡¼¥¸¥­¥å¡¼"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "¥»¥Þ¥Õ¥©"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "¶¦Í­¥á¥â¥ê¥ª¥Ö¥¸¥§¥¯¥È"
+
+#: lib/file-type.c:69
+#, fuzzy
+msgid "typed memory object"
+msgstr "¶¦Í­¥á¥â¥ê¥ª¥Ö¥¸¥§¥¯¥È"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "ÉÔÌÀ¤Ê¥Õ¥¡¥¤¥ë"
+
+#: lib/gai_strerror.c:44
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "̾Á°¤Ä¤­¥Ñ¥¤¥×¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "̾Á°¤Ä¤­¥Ñ¥¤¥×¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr ""
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "̾Á°¤Ä¤­¥Ñ¥¤¥×¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
+
+#: lib/gai_strerror.c:54
+#, fuzzy
+msgid "System error"
+msgstr "½ñ¤­¹þ¤ß¥¨¥é¡¼"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+#, fuzzy
+msgid "Unknown error"
+msgstr "̤ÃΤΥ·¥¹¥Æ¥à¥¨¥é¡¼"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: ¥ª¥×¥·¥ç¥ó `%s' ¤ÏÛ£Ëæ¤Ç¤¹\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: ¥ª¥×¥·¥ç¥ó `--%s' ¤Ë°ú¿ô¤Ï¤¢¤ê¤Þ¤»¤ó\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: ¥ª¥×¥·¥ç¥ó `%c%s' ¤Ë°ú¿ô¤ÏɬÍפ¢¤ê¤Þ¤»¤ó\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: ¥ª¥×¥·¥ç¥ó `%s' ¤Ë¤Ï°ú¿ô¤¬É¬ÍפǤ¹\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: ¥ª¥×¥·¥ç¥ó `--%s' ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: ¥ª¥×¥·¥ç¥ó `%c%s' ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: ÉÔÀµ¤Ê¥ª¥×¥·¥ç¥ó -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ´Ö°ã¤Ã¤¿¥ª¥×¥·¥ç¥ó -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: ¥ª¥×¥·¥ç¥ó¤Ë¤Ï°ú¿ô¤¬É¬ÍפǤ¹ -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: ¥ª¥×¥·¥ç¥ó `-W %s' ¤ÏÛ£Ëæ¤Ç¤¹\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: ¥ª¥×¥·¥ç¥ó `-W %s' ¤Ë°ú¿ô¤Ï¤¢¤ê¤Þ¤»¤ó\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "¥Ö¥í¥Ã¥¯¥µ¥¤¥º"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "%s ¤Î°À­¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "¥á¥â¥ê¤ò»È¤¤²Ì¤¿¤·¤Þ¤·¤¿"
+
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr ""
+"¸½ºß¤Îºî¶È¥Ç¥£¥ì¥¯¥È¥ê¤Î¥Õ¥ë¥Ñ¥¹Ì¾¤òɽ¼¨.\n"
+"\n"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "'"
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "%s: Æɤ߹þ¤ß¥¨¥é¡¼"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: ̵¸ú¤ÊÀµµ¬É½¸½¤Ç¤¹: %s"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "`%s' ¤Ï̵¸ú¤Êʸ»ú¼ïÎà¤Ç¤¹"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "¥á¥â¥ê¤ò»È¤¤²Ì¤¿¤·¤Þ¤·¤¿"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: ̵¸ú¤ÊÀµµ¬É½¸½¤Ç¤¹: %s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "Àµµ¬É½¸½¤Ë¤è¤ë¸¡º÷Ãæ¤Î¥¨¥é¡¼"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "%s: ̵¸ú¤ÊÀµµ¬É½¸½¤Ç¤¹: %s"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "Àµµ¬É½¸½¤Ë¤è¤ë¸¡º÷Ãæ¤Î¥¨¥é¡¼"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr ""
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr ""
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[yY]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "iconv ´Ø¿ô¤¬»È¤¨¤Þ¤»¤ó"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "iconv ´Ø¿ô¤¬Í­¸ú¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "Èϰϳ°¤Îʸ»ú"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "U+%04X ¤ò¥í¡¼¥«¥ëʸ»ú¥»¥Ã¥È¤ËÊÑ´¹¤Ç¤­¤Þ¤»¤ó"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "U+%04X ¤ò¥í¡¼¥«¥ëʸ»ú¥»¥Ã¥È %s ¤ËÊÑ´¹¤Ç¤­¤Þ¤»¤ó"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "¥æ¡¼¥¶»ØÄ꤬ÉÔÀµ"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "¥°¥ë¡¼¥×»ØÄ꤬ÉÔÀµ"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "¥æ¡¼¥¶»ØÄ꤬ÉÔÀµ"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+#, fuzzy
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"[ÌõÃð] ½ÅÍפʤâ¤Î¤Ê¤Î¤Ç¥ª¥ê¥¸¥Ê¥ë¤â¤½¤Î¤Þ¤Þ»Ä¤·¤Æ¤¢¤ê¤Þ¤¹.\n"
+"\n"
+"ËÜ¥×¥í¥°¥é¥à¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹. ¤¢¤Ê¤¿¤Ï Free Software Foundation\n"
+"¤¬¸øɽ¤·¤¿ GNU °ìÈ̸øÍ­»ÈÍѵöÂú¤Î¥Ð¡¼¥¸¥ç¥ó 2 ¤â¤·¤¯¤Ï\n"
+"¤½¤ì°Ê¹ß¤Î¥Ð¡¼¥¸¥ç¥ó¤Î¤¦¤Á¤Î¤¤¤º¤ì¤«¤Î¥Ð¡¼¥¸¥ç¥ó (ÁªÂò) ¤ÇÄê¤á¤é¤ì¤¿\n"
+"¾ò¹à¤Î²¼¤ÇËÜ¥×¥í¥°¥é¥à¤òºÆÇÛÉÛ¤·¤¿¤êÊѹ¹¤·¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "ºî¼Ô %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid "Written by %s and %s.\n"
+msgstr "ºî¼Ô %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, fuzzy, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "ºî¼Ô %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr "ºî¼Ô %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr "ºî¼Ô %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xfts.c:58
+#, fuzzy, c-format
+msgid "invalid argument: %s"
+msgstr "`%2$s' ¤ËÂФ¹¤ë°ú¿ô %1$s ¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "ʸ»úÎó¤ÎÈæ³Ó¤Ë¼ºÇÔ"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "ÌäÂê¤ò²óÈò¤¹¤ë¤¿¤á¤Ë LC_ALL='C' ¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "Èæ³Ó¤·¤¿Ê¸»úÎó¤Ï %s ¤È %s ¤Ç¤¹."
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "ʸ»úÎó¤ÎÈæ³Ó¤Ë¼ºÇÔ"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "Éý `%s' ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "`%s' ¤Ï̵¸ú¤Êʸ»ú¼ïÎà¤Ç¤¹"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s ¤ÏŤ¹¤®¤Þ¤¹"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "¾Ü¤·¤¯¤Ï `%s --help' ¤ò¼Â¹Ô¤·¤Æ²¼¤µ¤¤.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"¥Õ¥¡¥¤¥ë¤Î»ØÄ꤬¤Ê¤«¤Ã¤¿¤ê, - ¤Ç¤¢¤Ã¤¿¾ì¹ç, ɸ½àÆþÎϤ«¤éÆɤ߹þ¤ß¤Þ¤¹.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"¥Ð¥°¤òȯ¸«¤·¤¿¤é <%s> °¸¤ËÊó¹ð¤·¤Æ²¼¤µ¤¤.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "Æɤ߹þ¤ß¥¨¥é¡¼"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "%s: ̵¸ú¤ÊÈÖ¹æɽµ­¤Ç¤¹"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "·¿»ØÄ꤬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹ `%s'"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, fuzzy, c-format
+msgid "extra operand %s"
+msgstr ";·×¤Ê±é»» `%s'"
+
+#: src/base64.c:316 src/cat.c:785
+#, fuzzy, c-format
+msgid "closing standard input"
+msgstr "ɸ½àÆþÎÏ"
+
+#: src/basename.c:54
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥Õ¥¡¥¤¥ë]...\n"
+"¤Þ¤¿¤Ï: %s [¥ª¥×¥·¥ç¥ó]\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"¥Ñ¥¹Ì¾¤«¤é¥Ç¥£¥ì¥¯¥È¥êÉôʬ¤ò¼è¤ê¤Î¤¾¤¤¤¿Ì¾Á°¤òɽ¼¨¤¹¤ë.\n"
+"»ØÄ꤬¤¢¤ì¤Ð, ËöÈø¤Î³ÈÄ¥»Ò¤â¼è¤ê½ü¤¯.\n"
+"\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, fuzzy, c-format
+msgid "missing operand"
+msgstr "%s: `%c' ¤Î¼¡¤Ë¤ÏÀ°¿ôÃͤò»ØÄꤷ¤Æ²¼¤µ¤¤"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó] [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"¥Õ¥¡¥¤¥ë¤â¤·¤¯¤Ïɸ½àÆþÎϤòϢ³Ū¤ËÆɤ߹þ¤ß, ɸ½à½ÐÎϤ˽ñ¤­½Ð¤·¤Þ¤¹.\n"
+"\n"
+" -A, --show-all -vET¤ÈƱ¤¸\n"
+" -b, --number-nonblank ¶õ¹Ô¤ò½ü¤¤¤Æ¹ÔÈÖ¹æ¤òÉÕ¤±²Ã¤¨¤ë\n"
+" -e -vE¤ÈƱ¤¸\n"
+" -E, --show-ends ¹Ô¤ÎºÇ¸å¤Ë`$'¤òÉÕ¤±²Ã¤¨¤ë\n"
+" -n, --number ¹ÔÈÖ¹æ¤òÉÕ¤±²Ã¤¨¤ë\n"
+" -s, --squeeze-blank Ϣ³¤·¤¿¶õ¹Ô¤ò°µ½Ì\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t -vT¤ÈƱ¤¸\n"
+" -T, --show-tabs TABʸ»ú¤ò`^I'¤Çɽ¼¨\n"
+" -u (̵»ë)\n"
+" -v, --show-nonprinting Èóɽ¼¨Ê¸»ú¤È`^'¤ä`^'¤òÉÕ¤±¤Æɽ¼¨ (LFD¤ÈTAB¤Ï½ü"
+"¤¯)\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+#: src/cat.c:333
+#, fuzzy, c-format
+msgid "cannot do ioctl on %s"
+msgstr "`%s' ¤Ç ioctl() ¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "ɸ½à½ÐÎÏ"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: ÆþÎÏ¥Õ¥¡¥¤¥ë¤¬½ÐÎÏ¥Õ¥¡¥¤¥ë¤¬Æ±¤¸¥Õ¥¡¥¤¥ë¤Ç¤¹"
+
+#: src/chgrp.c:95 src/install.c:611
+#, fuzzy, c-format
+msgid "invalid group %s"
+msgstr "¥°¥ë¡¼¥×»ØÄ꤬ÉÔÀµ"
+
+#: src/chgrp.c:112
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]...\n"
+" Ëô¤Ï: %s --traditional [¥Õ¥¡¥¤¥ë] [[+]¥ª¥Õ¥»¥Ã¥È [[+]¥é¥Ù¥ë]]\n"
+
+#: src/chgrp.c:117
+#, fuzzy
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"³Æ FILE ¤Î¥°¥ë¡¼¥×°À­¤ò GROUP ¤ËÊѹ¹¤·¤Þ¤¹¡£\n"
+"\n"
+" -c, --changes verbose ¤ÎÍͤÀ¤¬Êѹ¹¤¬¹Ô¤Ê¤ï¤ì¤¿»þ¤À¤±Êó¹ð¤¹¤ë\n"
+" --dereference ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤½¤Î¤â¤Î¤Ç¤Ï¤Ê¤¯¡¢\n"
+" ³Æ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯Àè¤Ë¸ú²Ì¤òÍ¿¤¨¤ë\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+#, fuzzy
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference ¥ê¥ó¥¯Àè¤Ç¤Ï¤Ê¤¯¡¢¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤½¤Î¤â¤Î¤Ë¸ú²Ì\n"
+" ¤òÍ¿¤¨¤ë (¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Î½êÍ­¸¢¤òÊѹ¹¤Ç¤­¤ë\n"
+" ¥·¥¹¥Æ¥à¤Ç¤Î¤ßÍøÍѲÄǽ)\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chgrp.c:134
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò¶ËÎϲ¡¤µ¤¨¤ë\n"
+" --reference=RFILE »ØÄꤷ¤¿ GROUP ÃͤǤϤʤ¯ RFILE ¤Î¥°¥ë¡¼¥×¤ò»È¤¦\n"
+" -R, --recursive ¥Õ¥¡¥¤¥ë¤ä¥Ç¥£¥ì¥¯¥È¥ê¤òºÆµ¢Åª¤ËÁàºî¤¹¤ë\n"
+" -v, --verbose ¥Õ¥¡¥¤¥ë¤¬½èÍý¤µ¤ì¤ëËè¤Ë¿ÇÃÇ¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤¹¤ë\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr ""
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, fuzzy, c-format
+msgid "missing operand after %s"
+msgstr "%s: `%c' ¤Î¼¡¤Ë¤ÏÀ°¿ôÃͤò»ØÄꤷ¤Æ²¼¤µ¤¤"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "%s ¤Î°À­¾ðÊó¤ò¼èÆÀ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "%s ¤Î¿·¤¿¤Ê°À­¾ðÊó¤ò¼èÆÀÃæ"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯ %s ¤â¤½¤Î»²¾ÈÀè¤âÊѹ¹¤µ¤ì¤Þ¤»¤ó¤Ç¤·¤¿\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "%s ¤Î¥â¡¼¥É¤ò %04lo (%s) ¤ËÊѹ¹¤·¤Þ¤·¤¿\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "%s ¤Î¥â¡¼¥É¤ò %04lo (%s) ¤ËÊѹ¹¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "%s ¤Î¥â¡¼¥É¤Ï %04lo (%s) ¤È¤·¤ÆÊÝᤵ¤ì¤Þ¤·¤¿\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, fuzzy, c-format
+msgid "cannot access %s"
+msgstr "%s ¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, fuzzy, c-format
+msgid "cannot read directory %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/chmod.c:251
+#, fuzzy, c-format
+msgid "changing permissions of %s"
+msgstr "%s ¤Î°À­¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+
+#: src/chmod.c:286
+#, fuzzy, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "%s ¤Î°À­¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, fuzzy, c-format
+msgid "fts_read failed"
+msgstr "Æɹþ¤ß¼ºÇÔ"
+
+#: src/chmod.c:345
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... LAST\n"
+"¤â¤·¤¯¤Ï: %s [¥ª¥×¥·¥ç¥ó]... FIRST LAST\n"
+"¤â¤·¤¯¤Ï: %s [¥ª¥×¥·¥ç¥ó]... FIRST INCREMENT LAST\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chmod.c:360
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+"¤½¤ì¤¾¤ì¤Î¥Õ¥¡¥¤¥ë¤ò»ØÄꤵ¤ì¤¿¥â¡¼¥É¤ËÊѹ¹¡£\n"
+"\n"
+" -c, --changes Êѹ¹¤ò¹Ô¤Ê¤Ã¤¿»þ¤Ë¤Î¤ß¡¢Êѹ¹¤Î·ë²Ì¤òÊó¹ð¤¹¤ë\n"
+" -f, --silent, --quiet ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò¶ËÎÏÍÞ¤¨¤ë\n"
+" -v, --verbose ¥Õ¥¡¥¤¥ë¤ò½èÍý¤¹¤ë¤¿¤Ó¤Ë¡¢¾ÜºÙ¤ÊÊó¹ð¤ò¹Ô¤Ê¤¦\n"
+" --reference=RFILE RFILE ¤Ë»ØÄꤷ¤¿¥Õ¥¡¥¤¥ë¤Î¥¢¥¯¥»¥¹¥â¡¼¥É¤òÍøÍѤ¹"
+"¤ë\n"
+" -R, --recursive ¥Õ¥¡¥¤¥ë¤ä¥Ç¥£¥ì¥¯¥È¥ê¤òºÆµ¢Åª¤ËÊѹ¹¤¹¤ë\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr ""
+
+#: src/chmod.c:510
+#, fuzzy, c-format
+msgid "invalid mode: %s"
+msgstr "Éý `%s' ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "%s ¤Î½êÍ­¼Ô¤ò %s ¤ËÊѹ¹¤·¤Þ¤·¤¿\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "%s ¤Î¥°¥ë¡¼¥×¤ò %s ¤ËÊѹ¹¤·¤Þ¤·¤¿\n"
+
+#: src/chown-core.c:149
+#, fuzzy, c-format
+msgid "no change to ownership of %s\n"
+msgstr "%s ¤Î½êÍ­¸¢¤òÊѹ¹Ãæ"
+
+#: src/chown-core.c:152
+#, fuzzy, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "%s ¤Î°À­¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "%s ¤Î¥°¥ë¡¼¥×¤ò %s ¤ËÊѹ¹¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿\n"
+
+#: src/chown-core.c:154
+#, fuzzy, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "%s ¤Î°À­¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "%s ¤Î½êÍ­¼Ô¤Ï %s ¤Î¤Þ¤ÞÊÝᤵ¤ì¤Þ¤·¤¿\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "%s ¤Î¥°¥ë¡¼¥×¤Ï %s ¤Î¤Þ¤ÞÊÝᤵ¤ì¤Þ¤·¤¿\n"
+
+#: src/chown-core.c:159
+#, fuzzy, c-format
+msgid "ownership of %s retained\n"
+msgstr "%s ¤Î½êÍ­¼Ô¤Ï %s ¤Î¤Þ¤ÞÊÝᤵ¤ì¤Þ¤·¤¿\n"
+
+#: src/chown-core.c:344
+#, fuzzy, c-format
+msgid "cannot dereference %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "%s ¤Î½êÍ­¸¢¤òÊѹ¹Ãæ"
+
+#: src/chown-core.c:433
+#, fuzzy, c-format
+msgid "changing group of %s"
+msgstr "%s ¤Î¥ª¡¼¥Ê¡¼¤È¥°¥ë¡¼¥×¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+
+#: src/chown.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]...\n"
+" Ëô¤Ï: %s --traditional [¥Õ¥¡¥¤¥ë] [[+]¥ª¥Õ¥»¥Ã¥È [[+]¥é¥Ù¥ë]]\n"
+
+#: src/chown.c:98
+#, fuzzy
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"³Æ¥Õ¥¡¥¤¥ë¤Î½êÍ­¼Ô¤ä¥°¥ë¡¼¥×¤ò OWNER ¤ä GROUP ¤ËÊѹ¹¤¹¤ë¡£\n"
+"\n"
+" -c, --changes verbose ƱÍͤÀ¤¬¡¢Êѹ¹¤¬À¸¤¸¤¿¤È¤­¤À¤±Êó¹ð¤¹¤ë\n"
+" --dereference ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤½¤Î¤â¤Î¤Ç¤Ï¤Ê¤¯¡¢\n"
+" ³Æ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯Àè¤Ë¸ú²Ì¤òÍ¿¤¨¤ë\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" ¤³¤³¤Ç»ØÄꤷ¤¿¸½ºß¤Î½êÍ­¼Ô¤ä¥°¥ë¡¼¥×¤È°ìÃפ·¤¿\n"
+" ¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ¤Î¤ß¡¢½êÍ­¼Ô¤ä¥°¥ë¡¼¥×¤òÊѹ¹¤¹¤ë¡£\n"
+" ¤¤¤º¤ì¤«°ìÊý¤Ï¾Êά¤Ç¤­¤ë¡£¤½¤Î¾ì¹ç¡¢¾Êά¤µ¤ì¤¿Êý¤Î\n"
+" °À­¤Ë¤Ä¤¤¤Æ¤Ï°ìÃפθ¡ºº¤ò¹Ô¤Ê¤ï¤Ê¤¤¡£\n"
+
+#: src/chown.c:122
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet Ëؤó¤É¤Î¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤òÍÞÀ©¤¹¤ë\n"
+" --reference=RFILE »ØÄꤵ¤ì¤¿ OWNER:GROUP ¤Ç¤Ï¤Ê¤¯¡¢RFILE ¤Î½êÍ­¼Ô¤È\n"
+" ¥°¥ë¡¼¥×¤ò»È¤¦\n"
+" -R, --recursive ¥Õ¥¡¥¤¥ë¤È¥Ç¥£¥ì¥¯¥È¥ê¤òºÆµ¢Åª¤ËÁàºî¤¹¤ë\n"
+" -v, --verbose ¥Õ¥¡¥¤¥ë¤¬½èÍý¤µ¤ì¤ëËè¤Ë¿ÇÃÇ¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ¹¤ë\n"
+
+#: src/chown.c:144
+#, fuzzy
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"½ê¼Ô¤Î»ØÄ̵꤬¤¤¾ì¹ç¤Ë¤ÏÊѹ¹¤µ¤ì¤Þ¤»¤ó¡£¥°¥ë¡¼¥×¤Î»ØÄ̵꤬¤¤¾ì¹ç¤Ë¤Ï\n"
+"Êѹ¹¤µ¤ì¤Þ¤»¤ó¤¬¡¢`:' ¤Ç¥°¥ë¡¼¥×¤ò°Å¼¨¤¹¤ë¤È¥í¥°¥¤¥ó¥°¥ë¡¼¥×¤ËÊѹ¹¤µ¤ì¤Þ"
+"¤¹¡£\n"
+"OWNER ¤È GROUP ¤Ï̾Á°¤Ç¤â¿ôÃͤǤ⹽¤¤¤Þ¤»¤ó\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥Õ¥¡¥¤¥ë]...\n"
+"¤Þ¤¿¤Ï: %s [¥ª¥×¥·¥ç¥ó]\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"¥ë¡¼¥È¥Ç¥£¥ì¥¯¥È¥ê¤ò NEWROOT ¤ËÀßÄꤷ¤Æ¥³¥Þ¥ó¥É¤ò¼Â¹Ô.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"¤â¤·¥³¥Þ¥ó¥É¤¬»ØÄꤵ¤ì¤Ê¤±¤ì¤Ð, ``${SHELL} -i'' ¤ò¼Â¹Ô (ɸ½à: /bin/sh).\n"
+
+#: src/chroot.c:89
+#, fuzzy, c-format
+msgid "cannot change root directory to %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ë°ÜÆ°¤Ç¤­¤Þ¤»¤ó"
+
+#: src/chroot.c:92
+#, fuzzy, c-format
+msgid "cannot chdir to root directory"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ë°ÜÆ°¤Ç¤­¤Þ¤»¤ó"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, fuzzy, c-format
+msgid "cannot run command %s"
+msgstr "`%s' ¤Ç ioctl() ¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: ¥Õ¥¡¥¤¥ë¤¬Ä¹¤¹¤®¤Þ¤¹"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥Õ¥¡¥¤¥ë]...\n"
+"¤Þ¤¿¤Ï: %s [¥ª¥×¥·¥ç¥ó]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"CRC ¥Á¥§¥Ã¥¯¥µ¥à¤È³Æ¡¹¤Î¥Õ¥¡¥¤¥ë¤Î¥Ð¥¤¥È¿ô¤òɽ¼¨.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... ¥Õ¥¡¥¤¥ë1 ¥Õ¥¡¥¤¥ë2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr ""
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+
+#: src/comm.c:86
+#, fuzzy
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"¤½¤ì¤¾¤ì¥½¡¼¥È¤µ¤ì¤¿ ¥Õ¥¡¥¤¥ëA ¤È ¥Õ¥¡¥¤¥ëB ¤È¤ò¹Ô¤´¤È¤ËÈæ³Ó¤·¤Þ¤¹.\n"
+"\n"
+" -1 ¥Õ¥¡¥¤¥ëA ¤À¤±¤Ë¤·¤«´Þ¤Þ¤ì¤Ê¤¤¹Ô¤Î½ÐÎϤòÍÞÀ©\n"
+" -2 ¥Õ¥¡¥¤¥ëB ¤À¤±¤Ë¤·¤«´Þ¤Þ¤ì¤Ê¤¤¹Ô¤Î½ÐÎϤòÍÞÀ©\n"
+" -3 ξÊý¤Î¥Õ¥¡¥¤¥ë¤Ë¶¦Ä̤˴ޤޤì¤Æ¤¤¤ë¹Ô¤Î½ÐÎϤòÍÞÀ©\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, fuzzy, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "%s ¤Î½êÍ­¼Ô¾ðÊó¤òÊݸÃæ"
+
+#: src/copy.c:222
+#, fuzzy, c-format
+msgid "failed to lookup file %s"
+msgstr "%s ¤Î¥¿¥¤¥à¥¹¥¿¥ó¥×¤òÊݸÃæ"
+
+#: src/copy.c:227
+#, fuzzy, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "%s ¤Î½êÍ­¼Ô¾ðÊó¤òÊݸÃæ"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "%s ¤ò Æɤ߹þ¤ßÍѤǥª¡¼¥×¥ó¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, fuzzy, c-format
+msgid "cannot fstat %s"
+msgstr "Æü»þ¤òÀßÄê¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr ""
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, fuzzy, c-format
+msgid "cannot remove %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, fuzzy, c-format
+msgid "removed %s\n"
+msgstr "%s ¤òºï½ü¤·¤Æ¤¤¤Þ¤¹\n"
+
+#: src/copy.c:329
+#, fuzzy, c-format
+msgid "cannot create regular file %s"
+msgstr "°ì»þ¥Õ¥¡¥¤¥ë¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, fuzzy, c-format
+msgid "reading %s"
+msgstr "%s ¤ÎÆɤ߹þ¤ß¥¨¥é¡¼"
+
+#: src/copy.c:467 src/head.c:428
+#, fuzzy, c-format
+msgid "cannot lseek %s"
+msgstr "%s: ¥ª¥Õ¥»¥Ã¥È %s%s ¤ò seek ¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, fuzzy, c-format
+msgid "writing %s"
+msgstr "%s ¤Î½ñ¤­¹þ¤ß¥¨¥é¡¼"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "%s ¤Î¥¿¥¤¥à¥¹¥¿¥ó¥×¤òÊݸÃæ"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, fuzzy, c-format
+msgid "closing %s"
+msgstr "%s ¤òÊĤ¸¤Æ¤¤¤Þ¤¹ (fd=%d)"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: %s ¤Î¥â¡¼¥É %04lo ¤ò̵»ë¤·¤Æ¾å½ñ¤­¤·¤Þ¤¹¤«¡© "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: %s ¤ò¾å½ñ¤­¤·¤Æ¤â¤è¤í¤·¤¤¤Ç¤¹¤«(yes/no)? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (¥Ð¥Ã¥¯¥¢¥Ã¥×: %s)"
+
+#: src/copy.c:1048
+#, fuzzy, c-format
+msgid "omitting directory %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "·Ù¹ð: ¥³¥Ô¡¼¸µ¥Õ¥¡¥¤¥ë %s ¤¬Ê£¿ô»ØÄꤵ¤ì¤Þ¤·¤¿"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s ¤È %s ¤ÏƱ¤¸¥Õ¥¡¥¤¥ë¤Ç¤¹"
+
+#: src/copy.c:1149
+#, fuzzy, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ë°ÜÆ°¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "¤¿¤Ã¤¿º£ºîÀ®¤·¤¿ %s ¤Ë¤Ï %s ¤Ç¾å½ñ¤­¤·¤Þ¤»¤ó"
+
+#: src/copy.c:1185
+#, fuzzy, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:1223
+#, fuzzy, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ë°ÜÆ°¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "%s ¤ò¥Ð¥Ã¥¯¥¢¥Ã¥×¤¹¤ë¤È¸µ¥Õ¥¡¥¤¥ë¤¬²õ¤ì¤Þ¤¹ -- %s ¤ò°ÜÆ°¤·¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr ""
+"%s ¤ò¥Ð¥Ã¥¯¥¢¥Ã¥×¤¹¤ë¤È¸µ¥Õ¥¡¥¤¥ë¤¬²õ¤ì¤Þ¤¹ -- %s ¤ò¥³¥Ô¡¼¤·¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: src/copy.c:1273 src/ln.c:239
+#, fuzzy, c-format
+msgid "cannot backup %s"
+msgstr "%s ¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:1372
+#, fuzzy, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:1389
+#, fuzzy, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ë°ÜÆ°¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:1414
+#, fuzzy, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:1459
+#, fuzzy, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ë°ÜÆ°¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:1502
+#, fuzzy, c-format
+msgid "cannot move %s to %s"
+msgstr "`%s' ¤Ç ioctl() ¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "½Û´Ä¤¹¤ë¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯ %s ¤Ï¥³¥Ô¡¼¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr "%s: ¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¾å¤Ç¤Î¤ßÁêÂÐ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤¬¤Ç¤­¤Þ¤¹"
+
+#: src/copy.c:1661
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:1686
+#, fuzzy, c-format
+msgid "cannot create link %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, fuzzy, c-format
+msgid "cannot create fifo %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:1722
+#, fuzzy, c-format
+msgid "cannot create special file %s"
+msgstr "¥­¥ã¥é¥¯¥¿¥¹¥Ú¥·¥ã¥ë¥Õ¥¡¥¤¥ë"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, fuzzy, c-format
+msgid "cannot read symbolic link %s"
+msgstr "¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯"
+
+#: src/copy.c:1759
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s ¤Î¥Õ¥¡¥¤¥ë¥¿¥¤¥×¤¬ÉÔÌÀ¤Ç¤¹"
+
+#: src/copy.c:1910 src/ln.c:308
+#, fuzzy, c-format
+msgid "cannot un-backup %s"
+msgstr "%s ¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (Éü¸µ)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... LAST\n"
+"¤â¤·¤¯¤Ï: %s [¥ª¥×¥·¥ç¥ó]... FIRST LAST\n"
+"¤â¤·¤¯¤Ï: %s [¥ª¥×¥·¥ç¥ó]... FIRST INCREMENT LAST\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"SOURCE ¤«¤é DEST ¤Ø¡¢°¿¤¤¤Ï FILE (Ê£¿ô²Ä)¤ò DIRECTORY ¤Ø¥³¥Ô¡¼¤¹¤ë¡£\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr "Ť¤¥ª¥×¥·¥ç¥ó¤Ëɬ¿Ü¤Î°ú¿ô¤Ïû¤¤¥ª¥×¥·¥ç¥ó¤Ë¤âɬ¿Ü¤Ç¤¹.\n"
+
+#: src/cp.c:170
+#, fuzzy
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive -dpR ¤ÈƱ¤¸\n"
+" --backup[=CONTROL] ´û¸¤Î¥³¥Ô¡¼Àè¥Õ¥¡¥¤¥ëËè¤Ë¥Ð¥Ã¥¯¥¢¥Ã¥×¤òºîÀ®\n"
+" -b ¤Û¤Ü --backup ƱÅù¤À¤¬¡¢°ú¿ô¤ò¼è¤é¤Ê¤¤\n"
+" -d --no-dereference --preserve=link ¤ÈƱ¤¸\n"
+
+#: src/cp.c:177
+#, fuzzy
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" --no-dereference ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤òé¤é¤»¤Ê¤¤\n"
+" -f, --force ´û¸¤Î¥³¥Ô¡¼Àè¥Õ¥¡¥¤¥ë¤¬³«¤±¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢\n"
+" ºï½ü¤·¤ÆºÆÅÙ»î¤ß¤ë\n"
+" -i, --interactive ¾å½ñ¤­¤¹¤ëÁ°¤Ë³Îǧ¤¹¤ë\n"
+" -H ¥³¥Þ¥ó¥É¥é¥¤¥ó¤Î¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤òé¤ë\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+#, fuzzy
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -l, --link ¥³¥Ô¡¼¤ÎÂå¤ê¤Ë¥Õ¥¡¥¤¥ë¤ò¥ê¥ó¥¯¤¹¤ë\n"
+" -L, --dereference ¾ï¤Ë¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤òé¤ë\n"
+" -p --preserve=mode,ownership,timestamps ¤ÈƱ¤¸\n"
+" --preserve[=ATTR_LIST] »ØÄꤵ¤ì¤¿Â°À­¤ò°Ý»ý¤¹¤ë (¥Ç¥Õ¥©¥ë¥È:\n"
+" mode,ownership,timestamps), ²Äǽ¤Ç¤¢¤ì¤Ð\n"
+" ÄɲäǤ­¤ë°À­: links, all\n"
+
+#: src/cp.c:196
+#, fuzzy
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=ATTR_LIST »ØÄꤵ¤ì¤¿Â°À­¤ò°Ý»ý¤·¤Ê¤¤\n"
+" --parents ¥³¥Ô¡¼¸µ DIRECTORY ¤Ø¤Î¥Ñ¥¹¤òÉÕ¤±Â­¤¹\n"
+" -P `--no-dereference' ¤ÈƱ¤¸\n"
+
+#: src/cp.c:200
+#, fuzzy
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -r ºÆµ¢Åª¤Ë¥³¥Ô¡¼¡£Èó¥Ç¥£¥ì¥¯¥È¥ê¤Ï¥Õ¥¡¥¤¥ë¤È¤¹"
+"¤ë\n"
+" ·Ù¹ð: FIFO ¤ä /dev/zero ¤ÎÍͤÊÆüì¥Õ¥¡¥¤¥ë\n"
+" ¤ò¥³¥Ô¡¼¤¹¤ë¤È¤­¤ÏÂå¤ï¤ê¤Ë -R ¤ò»È¤¤¤Þ¤·¤ç"
+"¤¦\n"
+" --remove-destination ¥³¥Ô¡¼Àè¥Õ¥¡¥¤¥ë¤ò open ¤·¤è¤¦¤È¤¹¤ëÁ°¤Ë´û¸"
+"¤Î\n"
+" ¥Õ¥¡¥¤¥ë¤òºï½ü¤¹¤ë (--force ¤ÈÂÐÈ椷¤Þ¤·¤ç"
+"¤¦)\n"
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --reply={yes,no,query} °ÜÆ°Àè¤Î´û¸¥Õ¥¡¥¤¥ë¤Ë´Ø¤¹¤ëÌ䤤¹ç¤ï¤»¤Î\n"
+" °·¤¤Êý¤ò»ØÄꤹ¤ë\n"
+" --strip-trailing-slashes ³Æ SOURCE °ú¿ô¤Î;ʬ¤ÊËöÈø¥¹¥é¥Ã¥·¥å¤ò¼è¤ê½ü"
+"¤¯\n"
+" -S, --suffix=SUFFIX Ä̾ï¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×ÀÜÈø¼­¤ò¾å½ñ¤­¤¹¤ë\n"
+
+#: src/cp.c:210
+#, fuzzy
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link ¥³¥Ô¡¼¤ÎÂå¤ï¤ê¤Ë¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤òºîÀ®¤¹¤ë\n"
+" -S, --suffix=SUFFIX Ä̾ï¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×ÀÜÈø¼­¤ò¸ò´¹¤¹¤ë\n"
+" --target-directory=DIRECTORY Á´¤Æ¤Î SOURCE °ú¿ô¤ò DIRECTORY ¤Ë°ÜÆ°¤¹"
+"¤ë\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update SOURCE ¥Õ¥¡¥¤¥ë¤¬¥³¥Ô¡¼Àè¥Õ¥¡¥¤¥ë¤è¤ê¿·¤·¤¤"
+"¤«\n"
+" ¸ºß¤·¤Ê¤¤»þ¤À¤±¥³¥Ô¡¼¤¹¤ë\n"
+" -v, --verbose ¼Â¹Ô¤µ¤ì¤¿¤³¤È¤òÀâÌÀ¤¹¤ë\n"
+" -x, --one-file-system ¤³¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤À¤±¤Ç¼Â¹Ô¤¹¤ë\n"
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"Æä˻ØÄ꤬¤Ê¤±¤ì¤Ð¡¢Á¤é¤Ê SOURCE ¥Õ¥¡¥¤¥ë¤Ïȯ¸«Åª¼êË¡¤Ç¸¡½Ð¤µ¤ì¡¢Âбþ¤¹¤ë\n"
+"DEST ¥Õ¥¡¥¤¥ë¤òÁ¤é¤Ê¥Õ¥¡¥¤¥ë¤È¤·¤ÆºîÀ®¤·¤Þ¤¹¡£¤³¤ì¤Ï `--sparse=auto'\n"
+"¥ª¥×¥·¥ç¥ó¤ò¤Ä¤±¤¿¤È¤­¤ÎÆ°ºî¤ÈƱ¤¸¤Ç¤¹¡£--sparse=always ¤ò»ØÄꤹ¤ë¤È¡¢\n"
+"SOURCE ¥Õ¥¡¥¤¥ë¤¬½½Ê¬Ä¹¤¤¥Ð¥¤¥ÈÎó¤ò´Þ¤ó¤Ç¤¤¤ë¤È¤­¤Ë¤Ï¡¢¾ï¤ËÁ¤é¤Ê¥Õ¥¡¥¤¥ë\n"
+"¤È¤·¤ÆºîÀ®¤·¤Þ¤¹¡£\n"
+"Á¤é¤Ê¥Õ¥¡¥¤¥ë¤òºî¤ê¤¿¤¯¤Ê¤±¤ì¤Ð¡¢--sparse=never ¤ò»È¤¤¤Þ¤·¤ç¤¦¡£\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"¥Ð¥Ã¥¯¥¢¥Ã¥×ÀÜÈø¼­¤Ï¡¢--suffix ¤ä SIMPLE_BACKUP_SUFFIX ¤¬ÀßÄꤵ¤ì¤Ê¤¤¤È `~' "
+"¤Ë\n"
+"¤Ê¤ê¤Þ¤¹¡£¥Ð¡¼¥¸¥ç¥ó´ÉÍýÊýË¡¤Ï --backup ¥ª¥×¥·¥ç¥ó¤ä VERSION_CONTROL ´Ä¶­ÊÑ"
+"¿ô\n"
+"¤òÄ̤¸¤ÆÁªÂò¤Ç¤­¤Þ¤¹¡£°Ê²¼¤¬¤½¤ÎºÝ¤ÎÃͤǤ¹:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off ¥Ð¥Ã¥¯¥¢¥Ã¥×¤òºî¤é¤Ê¤¤ (--backup ¤ò¤Ä¤±¤¿»þ¤Ç¤â)\n"
+" numbered, t ÈÖ¹æ¤Ä¤­¥Ð¥Ã¥¯¥¢¥Ã¥×¤òºîÀ®¤¹¤ë\n"
+" existing, nil ÈÖ¹æ¤Ä¤­¥Ð¥Ã¥¯¥¢¥Ã¥×¤¬¤¢¤ì¤ÐÈÖ¹æ¤Ä¤­¡¢\n"
+" ¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¢simple ¤Ç\n"
+" simple, never ¾ï¤Ë´Ê°×¥Ð¥Ã¥¯¥¢¥Ã¥×¤òºîÀ®\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"ÆÃÊ̤ʾì¹ç¤È¤·¤Æ¡¢cp ¤Ï -f ¤È -b ¥ª¥×¥·¥ç¥ó¤¬Í¿¤¨¤é¤ì¡¢SOURCE ¤È DEST ¤¬\n"
+"Ʊ°ì¥Õ¥¡¥¤¥ë¤Ç¤¢¤ë»þ¤Ï¡¢SOURCE ¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×¤òºîÀ®¤¹¤ë¡£\n"
+
+#: src/cp.c:314
+#, fuzzy, c-format
+msgid "failed to preserve times for %s"
+msgstr "%s ¤Î¥¿¥¤¥à¥¹¥¿¥ó¥×¤òÊݸÃæ"
+
+#: src/cp.c:340
+#, fuzzy, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "%s ¤Î°À­¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+
+#: src/cp.c:456
+#, fuzzy, c-format
+msgid "cannot make directory %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s ¤Ï¸ºß¤·¤Þ¤¹¤¬¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "%s ¤Ë¥¢¥¯¥»¥¹Ãæ"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, fuzzy, c-format
+msgid "missing file operand"
+msgstr "¥¹¥­¥Ã¥×¿ô»ØÄê¤Î°ú¿ô"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, fuzzy, c-format
+msgid "missing destination file operand after %s"
+msgstr "¥Õ¥£¡¼¥ë¥É¤Î¥ê¥¹¥È¤¬¤¢¤ê¤Þ¤»¤ó"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, fuzzy, c-format
+msgid "target %s is not a directory"
+msgstr "%s ¤Ï¸ºß¤·¤Þ¤¹¤¬¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
+
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "¥Ñ¥¹¤òÊݸ¤¹¤ë¾ì¹ç¡¢»ØÄêÀè¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr ""
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, fuzzy, c-format
+msgid "multiple target directories specified"
+msgstr "-l ¤Þ¤¿¤Ï -t ¥ª¥×¥·¥ç¥ó¤¬Ê£¿ô»ØÄꤵ¤ì¤Æ¤¤¤Þ¤¹"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "¥Ï¡¼¥É¥ê¥ó¥¯¤â¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤âºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "¥Ð¥Ã¥¯¥¢¥Ã¥×¥¿¥¤¥×"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "ÆþÎϤ¬Ìµ¤¯¤Ê¤ê¤Þ¤·¤¿"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: Èϰϳ°¤Î¹ÔÈÖ¹æ"
+
+#: src/csplit.c:709
+#, fuzzy, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: `%s': Èϰϳ°¤Î¹ÔÈÖ¹æ"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, fuzzy, c-format
+msgid " on repetition %s\n"
+msgstr ": ·«¤êÊÖ¤· %d ²óÌÜ\n"
+
+#: src/csplit.c:755
+#, fuzzy, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: `%s': °ìÃפ·¤Þ¤»¤ó"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "Àµµ¬É½¸½¤Ë¤è¤ë¸¡º÷Ãæ¤Î¥¨¥é¡¼"
+
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "`%s' ¤Ø¤Î½ñ¤­¹þ¤ß¥¨¥é¡¼"
+
+#: src/csplit.c:1060
+#, fuzzy, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: `%c' ¤Î¼¡¤Ë¤ÏÀ°¿ôÃͤò»ØÄꤷ¤Æ²¼¤µ¤¤"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: ·«¤êÊÖ¤·¥«¥¦¥ó¥È¤Ë¤Ï `}' ¤¬É¬ÍפǤ¹"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: `{' ¤È `}' ¤Î´Ö¤Ë¤ÏÀ°¿ôÃͤ¬É¬ÍפǤ¹"
+
+#: src/csplit.c:1113
+#, fuzzy, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: ½ªÃ¼¥Ç¥ê¥ß¥¿(`%c')¤¬·ç¤±¤Æ¤¤¤Þ¤¹"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: ̵¸ú¤ÊÀµµ¬É½¸½¤Ç¤¹: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: ̵¸ú¤Ê¥Ñ¥¿¡¼¥ó»ØÄê¤Ç¤¹"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: ¹ÔÈÖ¹æ¤Ï¥¼¥í¤è¤êÂ礭¤¤¿ô¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
+
+#: src/csplit.c:1172
+#, fuzzy, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "¹ÔÈÖ¹æ `%s' ¤¬ %s ¤è¤ê¤â½ç½ø¤¬Á°¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹"
+
+#: src/csplit.c:1178
+#, fuzzy, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "·Ù¹ð: ¹ÔÈÖ¹æ `%s' ¤¬Æ±¤¸¹ÔÈÖ¹æ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹"
+
+#: src/csplit.c:1231
+#, fuzzy, c-format
+msgid "invalid format width"
+msgstr "`%2$s' ¤ËÂФ¹¤ë°ú¿ô %1$s ¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
+
+#: src/csplit.c:1252
+#, fuzzy, c-format
+msgid "invalid format precision"
+msgstr "·¿»ØÄ꤬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹ `%s'"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "ËöÈø¤ÎÊÑ´¹½¤¾þ»Ò¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "ËöÈø¤ÎÊÑ´¹½¤¾þ»Ò¤¬Ìµ¸ú¤Ç¤¹: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "ËöÈø¤ÎÊÑ´¹½¤¾þ»Ò¤¬Ìµ¸ú¤Ç¤¹: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "ËöÈø¤Î %% ÊÑ´¹½¤¾þ»Ò¤¬Â¿¤¹¤®¤Þ¤¹"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "ËöÈø¤Î %% ÊÑ´¹½¤¾þ»Ò¤¬Ìµ¸ú¤Ç¤¹"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: ̵¸ú¤ÊÈÖ¹æ¤Ç¤¹"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... ¥Õ¥¡¥¤¥ë ¥Ñ¥¿¡¼¥ó...\n"
+
+#: src/csplit.c:1478
+#, fuzzy
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¥Ñ¥¿¡¼¥ó¤Ë¤è¤Ã¤Æʬ³ä¤·¤¿¥Õ¥¡¥¤¥ë `xx01', `xx02', ...,\n"
+"¤ò½ÐÎϤ·, ¤½¤ì¤é¤Îʬ³ä¤·¤¿¥Õ¥¡¥¤¥ë¤Î³Æ¡¹¤Î¥Ð¥¤¥È¿ô¤òɸ½à½ÐÎϤ˽ÐÎÏ.\n"
+
+#: src/csplit.c:1486
+#, fuzzy, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=FORMAT %d ¤ÎÂå¤ï¤ê¤Ë sprintf ¤Î FORMAT ¤ò»È¤¦\n"
+" -f, --prefix=PREFIX `xx' ¤ÎÂå¤ï¤ê¤Ë PREFIX ¤ò»È¤¦\n"
+" -k, --keep-files ¥¨¥é¡¼»þ¤Ë½ÐÎÏ¥Õ¥¡¥¤¥ë¤òºï½ü¤·¤Ê¤¤\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=DIGITS 2 ¤ÎÂå¤ï¤ê¤Ë»ØÄꤵ¤ì¤¿¿ô»ú¤ò»È¤¦\n"
+" -s, --quiet, --silent ½ÐÎÏ¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤òɽ¼¨¤·¤Ê¤¤\n"
+" -z, --elide-empty-files ¶õ¤Î½ÐÎÏ¥Õ¥¡¥¤¥ë¤òºï½ü\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"¥Õ¥¡¥¤¥ë¤¬ - ¤Ê¤é¤Ðɸ½àÆþÎϤòÆɤ߹þ¤ß¤Þ¤¹. ³Æ¡¹¤Î¥Ñ¥¿¡¼¥ó¤Ï:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" ¹Ô¿ô »ØÄê¹Ô¤ÎľÁ°¤Þ¤Ç(¤½¤Î¹Ô¤Ï´Þ¤Þ¤ì¤Ê¤¤)¤ò½ñ¤­¹þ¤à\n"
+" /Àµµ¬É½¸½/[¥ª¥Õ¥»¥Ã¥È] °ìÃפ¹¤ë¹Ô¤ÎľÁ°¤Þ¤Ç¤ò½ñ¤­¹þ¤à\n"
+" %%Àµµ¬É½¸½%%[¥ª¥Õ¥»¥Ã¥È] °ìÃפ¹¤ë¹Ô¤ÎľÁ°¤Þ¤Ç¤ò¥¹¥­¥Ã¥×\n"
+" {À°¿ôÃÍ} ľÁ°¤Î¥Ñ¥¿¡¼¥ó¤ò»ØÄꤷ¤¿¿ô¤À¤±·«¤êÊÖ¤¹\n"
+" {*} ľÁ°¤Î¥Ñ¥¿¡¼¥ó¤ò²Äǽ¤Ê¤À¤±·«¤êÊÖ¤¹\n"
+"\n"
+"¥ª¥Õ¥»¥Ã¥È¤Î»ØÄê¤Ë¤Ï `+' ¤Þ¤¿¤Ï `-' ¤ËÀµ¤ÎÀ°¿ôÃͤò³¤±¤Æ»ØÄꤷ¤Þ¤¹.\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"¥Õ¥¡¥¤¥ë¤Î³Æ¹Ô¤«¤éÁªÂò¤·¤¿Éôʬ¤À¤±¤òÀÚ¤ê½Ð¤·¤Æ, ɸ½à½ÐÎϤËɽ¼¨¤·¤Þ¤¹.\n"
+"\n"
+
+#: src/cut.c:199
+#, fuzzy
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=LIST LIST ¤Ë»ØÄꤷ¤¿¥Ð¥¤¥È°ÌÃÖ¤Îʸ»ú¤ò½ÐÎÏ\n"
+" -c, --characters=LIST LIST ¤Ë»ØÄꤷ¤¿Ê¸»ú°ÌÃÖ¤À¤±¤ò½ÐÎÏ\n"
+" -d, --delimiter=DELIM ¥Õ¥£¡¼¥ë¥É¤Î¶èÀÚ¤êʸ»ú¤ò TAB ¤ÎÂå¤ï¤ê¤Ë DELIM ¤Ë\n"
+
+#: src/cut.c:204
+#, fuzzy
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=LIST LIST ¤Ë»ØÄꤷ¤¿¥Õ¥£¡¼¥ë¥É¤À¤±¤ò½ÐÎÏ; -s ¥ª¥×¥·¥ç"
+"¥ó\n"
+" ¤¬»ØÄꤵ¤ì¤Ê¤±¤ì¤Ð, ¶èÀÚ¤êʸ»ú¤ò´Þ¤à¹Ô¤âɽ¼¨\n"
+" -n (̵»ë)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited ¶èÀÚ¤êʸ»ú¤ò´Þ¤Þ¤Ê¤¤¹Ô¤ò½ÐÎϤµ¤»¤Ê¤¤\n"
+" --output-delimiter=STRING ½ÐÎϤζèÀÚ¤êʸ»ú¤È¤·¤Æ STRING ¤ò»ÈÍÑ\n"
+" ¥Ç¥Õ¥©¥ë¥È¤Ç¤ÏÆþÎϤζèÀÚ¤êʸ»ú¤ò»ÈÍÑ\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+#, fuzzy
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"-b, -c, -f ¥ª¥×¥·¥ç¥ó¤ÎÆâ, ¾¯¤Ê¤¯¤È¤â°ì¤Ä¤Ï»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹. LIST \n"
+"¤Ë¤Ï°Ê²¼¤Î½ñ¼°¤Ë¤è¤êÀÚ¤ê½Ð¤·ÈϰϤò»ØÄꤷ¤Þ¤¹. ÈϰϤλØÄê¤ÎºÝ¤Ë¤Ï, ¥«¥ó¥Þ(,)\n"
+"¤ò»È¤Ã¤Æ, ÈϰϤòÍåÎ󤹤뤳¤È¤â¤Ç¤­¤Þ¤¹.\n"
+"\n"
+" N ¹ÔƬ¤ò 1 ¤È¤·¤Æ, N ÈÖÌܤΰÌÃ֤ˤ¢¤ë°ÌÃÖ, ʸ»ú¤Þ¤¿¤Ï¥Õ¥£¡¼¥ë¥É¤ò»ØÄê\n"
+" N- N ÈÖÌܤΰÌÃÖ, ʸ»ú¤Þ¤¿¤Ï¥Õ¥£¡¼¥ë¥É¤«¤é¹ÔËö¤Þ¤Ç¤ò»ØÄê\n"
+" N-M N ÈÖÌܤ«¤é M ÈÖÌÜ(¤³¤ì¤â´Þ¤á¤Æ)¤Þ¤Ç¤Î°ÌÃÖ, ʸ»ú¤Þ¤¿¤Ï¥Õ¥£¡¼¥ë¥É¤ò»Ø"
+"Äê\n"
+" -M ¹ÔƬ¤«¤é M ÈÖÌÜ(¤³¤ì¤â´Þ¤á¤Æ)¤Þ¤Ç¤Î°ÌÃÖ, ʸ»ú¤Þ¤¿¤Ï¥Õ¥£¡¼¥ë¥É¤ò»ØÄê\n"
+"\n"
+"¥Õ¥¡¥¤¥ë¤Î»ØÄ꤬¤Ê¤«¤Ã¤¿¤ê, `-'¤Ç¤¢¤Ã¤¿¾ì¹ç, ɸ½àÆþÎϤ«¤éÆɤ߹þ¤ß¤Þ¤¹.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "¥Ð¥¤¥È¿ô¤â¤·¤¯¤Ï¥Õ¥£¡¼¥ë¥É¤ÎÈÏ°Ï»ØÄ꤬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
+
+#: src/cut.c:469
+#, fuzzy, c-format
+msgid "byte offset %s is too large"
+msgstr "%s ¤ÏŤ¹¤®¤Þ¤¹"
+
+#: src/cut.c:472
+#, fuzzy, c-format
+msgid "field number %s is too large"
+msgstr "¥Õ¥£¡¼¥ë¥ÉÈֹ椬¥¼¥í¤Ç¤¹"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "ÀÚ¤ê½Ð¤·Êý¤È¤·¤Æ»ØÄê¤Ç¤­¤ë¤Î¤Ï 1 ¼ïÎà¤À¤±¤Ç¤¹"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "¶èÀÚ¤êʸ»ú¤Ë»ØÄê¤Ç¤­¤ë¤Î¤Ï 1 ʸ»ú¤À¤±¤Ç¤¹"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "¥Ð¥¤¥È, ʸ»ú, ¤â¤·¤¯¤Ï¥Õ¥£¡¼¥ë¥É¤Î¥ê¥¹¥È¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤"
+
+#: src/cut.c:831
+#, fuzzy
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "¥Õ¥£¡¼¥ë¥É¤ò»ØÄꤷ¤Æ¼Â¹Ô¤¹¤ë¾ì¹ç¤Ë¤Î¤ß, ¶èÀÚ¤êʸ»ú¤¬»ØÄê¤Ç¤­¤Þ¤¹"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"¶èÀÚ¤é¤ì¤Æ¤¤¤Ê¤¤¹Ô¤ÎÍÞÀ©¤¬Í­¸ú¤Ê¤Î¤Ï, \n"
+"\t¥Õ¥£¡¼¥ë¥É¤ò»ØÄꤷ¤Æ¼Â¹Ô¤¹¤ë¤È¤­¤À¤±¤Ç¤¹"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "¥Õ¥£¡¼¥ë¥É¤Î¥ê¥¹¥È¤¬¤¢¤ê¤Þ¤»¤ó"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "°ÌÃÖ»ØÄê¥ê¥¹¥È¤¬¤¢¤ê¤Þ¤»¤ó"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [+¥Õ¥©¡¼¥Þ¥Ã¥È]\n"
+"¤â¤·¤¯¤Ï: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+
+#: src/date.c:143
+#, fuzzy
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+" -r, --reference=FILE FILE ¤ÎºÇ½ª¹¹¿·»þ¹ï¤òɽ¼¨\n"
+" -R, --rfc-822 RFC-822 ¤Ë½àµò¤·¤¿ÆüÉÕʸ»úÎó¤ò½ÐÎϤ¹¤ë\n"
+" -s, --set=STRING »þ¹ï¤ò STRING ¤ËÀßÄꤹ¤ë\n"
+" -u, --utc, --universal UTC (¶¨ÄêÀ¤³¦»þ) ¤Ç¤Îɽ¼¨¤Þ¤¿¤ÏÀßÄê\n"
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+#, fuzzy
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"\n"
+"¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç½ÐÎϤòÀ©¸æ¤·¤Þ¤¹. 2ÈÖÌܤηÁ¼°¤ÇÍ­¸ú¤Ê¥ª¥×¥·¥ç¥ó¤Ï¶¨ÄêÀ¤³¦»þ\n"
+"(UTC) ¤ò»ØÄꤹ¤ë¤â¤Î¤À¤±¤Ç¤¹. ²ò¼á¤Ç¤­¤ë¥·¡¼¥±¥ó¥¹¤Ï°Ê²¼¤Î¤â¤Î¤Ç¤¹:\n"
+"\n"
+" %% ʸ»ú %\n"
+" %a ¥í¥±¡¼¥ëɽ¼¨¤Ë¤è¤ëÍËÆü̾¤Îû½Ì·Á (Sun¡ÁSat)\n"
+
+#: src/date.c:167
+#, fuzzy
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A ¥í¥±¡¼¥ëɽ¼¨¤Ë¤è¤ëÍËÆü̾¤ÎÈóû½Ì·Á (Sunday¡ÁSaturday)\n"
+" %b ¥í¥±¡¼¥ëɽ¼¨¤Ë¤è¤ë·î̾¤Îû½Ì·Á (Jan¡ÁDec)\n"
+" %B ¥í¥±¡¼¥ëɽ¼¨¤Ë¤è¤ë·î̾¤ÎÈóû½Ì·Á (January¡ÁDecember)\n"
+" %c ¥í¥±¡¼¥ëɽ¼¨¤Ë¤è¤ëÆüÉդȻþ¹ï (Sat Nov 04 12:02:33 EST 1989)\n"
+
+#: src/date.c:173
+#, fuzzy
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C À¤µª (À¾Îñ¤ò 100 ¤Ç³ä¤Ã¤ÆÀ°¿ô¤ËÀÚ¤êµÍ¤á¤¿¤â¤Î) [00-99]\n"
+" %d Æü (01¡Á31)\n"
+" %D ÆüÉÕ (mm/dd/yy)\n"
+" %e ¾å°Ì·å¤ò¥¹¥Ú¡¼¥¹¤ÇËä¤á¤¿Æü ( 1¡Á31)\n"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h %b ¤ÈƱ¤¸\n"
+" %H »þ (00¡Á23)\n"
+" %I »þ (01¡Á12)\n"
+" %j ǯÆüÉÕ (001¡Á366)\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k »þ ( 0¡Á23)\n"
+" %l »þ ( 1¡Á12)\n"
+" %m ·î (01¡Á12)\n"
+" %M ʬ (00¡Á59)\n"
+
+#: src/date.c:196
+#, fuzzy
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+" %n ²þ¹Ô\n"
+" %N ¥Ê¥ÎÉà (000000000¡Á999999999)\n"
+" %p ¥í¥±¡¼¥ëɽ¼¨¤Ë¤è¤ëÂçʸ»ú¤Î¸áÁ°(AM), ¸á¸å(PM) (¿¤¯¤Î¥í¥±¡¼¥ë¤Ç¤Ï¶õ)\n"
+" %P ¥í¥±¡¼¥ëɽ¼¨¤Ë¤è¤ë¾®Ê¸»ú¤Î¸áÁ°(am), ¸á¸å(pm) (¿¤¯¤Î¥í¥±¡¼¥ë¤Ç¤Ï¶õ)\n"
+" %r »þ¹ï, 12»þ´Öɽ¼¨ (hh:mm:ss [AP]M)\n"
+" %R »þ¹ï, 24»þ´Öɽ¼¨ (hh:mm)\n"
+" %s `00:00:00 1970-01-01 UTC' ¤«¤é¤Î·Ð²á»þ´Ö[ÉÃ] (GNU ÈdzÈÄ¥)\n"
+
+#: src/date.c:205
+#, fuzzy
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+" %S ÉÃ (00¡Á60)\n"
+" %t ¿åÊ¿¥¿¥Ö\n"
+" %T »þ¹ï, 24»þ´Öɽ¼¨ (hh:mm:ss)\n"
+" %u ÍËÆü (1¡Á7). 1 ¤Ï·îÍË\n"
+
+#: src/date.c:211
+#, fuzzy
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U ÆüÍˤò½µ»Ï¤á¤È¤·¤¿Ç¯´Ö¤Î½µÈÖ¹æ (00¡Á53)\n"
+" %V ·îÍˤò½µ»Ï¤á¤È¤·¤¿Ç¯´Ö¤Î½µÈÖ¹æ (01¡Á53)\n"
+" %w ÍËÆü (0¡Á6). 0 ¤ÏÆüÍË\n"
+" %W ·îÍˤò½µ»Ï¤á¤È¤·¤¿Ç¯´Ö¤Î½µÈÖ¹æ (00¡Á53)\n"
+
+#: src/date.c:217
+#, fuzzy
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x ¥í¥±¡¼¥ëɽ¼¨¤Ë¤è¤ëÆüÉÕ (mm/dd/yy)\n"
+" %X ¥í¥±¡¼¥ëɽ¼¨¤Ë¤è¤ë»þ¹ï (%H:%M:%S)\n"
+" %y ǯ¤Î²¼2·åɽ¼¨ (00¡Á99)\n"
+" %Y ǯ (1970¡Á)\n"
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "ɸ½àÆþÎÏ"
+
+#: src/date.c:297 src/date.c:517
+#, fuzzy, c-format
+msgid "invalid date %s"
+msgstr "Éý `%s' ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/date.c:408 src/date.c:442
+#, fuzzy, c-format
+msgid "multiple output formats specified"
+msgstr "-l ¤Þ¤¿¤Ï -t ¥ª¥×¥·¥ç¥ó¤¬Ê£¿ô»ØÄꤵ¤ì¤Æ¤¤¤Þ¤¹"
+
+#: src/date.c:420
+#, fuzzy, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "¥ª¥×¥·¥ç¥ó --string ¤È --check ¤ÏÇÓ¾Ū¤Ë»È¤ï¤ì¤Þ¤¹"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr "ɽ¼¨¥ª¥×¥·¥ç¥ó¤ÈÀßÄꥪ¥×¥·¥ç¥ó¤ÏƱ»þ¤Ë»ØÄê¤Ç¤­¤Þ¤»¤ó"
+
+#: src/date.c:448
+#, fuzzy, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"°ú¿ô `%s' ¤ÎÀèƬ¤Ë `+' ¤¬¤¢¤ê¤Þ¤»¤ó;\n"
+"Æü»þ¤ò»ØÄꤹ¤ë¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¤­¤Ï, ¥ª¥×¥·¥ç¥ó°Ê³°¤Î°ú¿ô¤Ï `+'\n"
+"¤Ç»Ï¤Þ¤ë¥Õ¥©¡¼¥Þ¥Ã¥Èʸ»úÎó¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "Æü»þ¤òÀßÄê¤Ç¤­¤Þ¤»¤ó"
+
+#: src/date.c:548 src/du.c:425
+#, fuzzy, c-format
+msgid "time %s is out of range"
+msgstr "%s: Èϰϳ°¤Î¹ÔÈÖ¹æ"
+
+#: src/dd.c:404
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥Õ¥¡¥¤¥ë]...\n"
+"¤Þ¤¿¤Ï: %s [¥ª¥×¥·¥ç¥ó]\n"
+
+#: src/dd.c:409
+#, fuzzy
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"¥ª¥×¥·¥ç¥ó»ØÄê¤Ë±þ¤¸¤¿ÊÑ´¹¡¦·Á¼°¤Ç¥Õ¥¡¥¤¥ë¤ò¥³¥Ô¡¼¤·¤Þ¤¹¡£\n"
+"\n"
+" bs=BYTES ibs=BYTES µÚ¤Ó obs=BYTES ¤Ë¶¯À©¤¹¤ë\n"
+" cbs=BYTES °ìÅÙ¤Ë BYTES ¥Ð¥¤¥Èʬ¤ÎÊÑ´¹¤ò¹Ô¤¦\n"
+" conv=KEYWORDS ¥«¥ó¥Þ¶èÀÚ¤ê¤Î KEYWORDS ¥ê¥¹¥ÈËè¤Ë¥Õ¥¡¥¤¥ë¤òÊÑ´¹¤¹¤ë\n"
+" count=BLOCKS ÆþÎÏ¥Õ¥¡¥¤¥ë¤Î BLOCKS ¤Îʬ¤À¤±¥³¥Ô¡¼¤¹¤ë\n"
+" ibs=BYTES °ìÅÙ¤Ë BYTES ¥Ð¥¤¥ÈʬÆɤ߹þ¤à\n"
+
+#: src/dd.c:418
+#, fuzzy
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=FILE ɸ½àÆþÎϤÎÂå¤ê¤Ë FILE ¤«¤éÆɤ߹þ¤à\n"
+" obs=BYTES °ìÅÙ¤Ë BYTES ¥Ð¥¤¥Èʬ½ñ¤­¹þ¤à\n"
+" of=FILE ɸ½à½ÐÎϤÎÂå¤ê¤Ë FILE ¤Ø½ñ¤­¹þ¤à\n"
+" seek=BLOCKS ¥µ¥¤¥º¤¬ obs ¤Î BLOCKS ʬ½ñ¹þ¤ß³«»Ï°ÌÃÖ¤ò¥¹¥­¥Ã¥×\n"
+" skip=BLOCKS ¥µ¥¤¥º¤¬ ibs ¤Î BLOCKS ʬÆɹþ¤ß³«»Ï°ÌÃÖ¤ò¥¹¥­¥Ã¥×\n"
+
+#: src/dd.c:428
+#, fuzzy
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"BLOCKS ¤ä BYTES ¤Ë¤Ï¡¢°Ê²¼¤Î¤è¤¦¤ÊÇÜ¿ô»ìÀÜÈø¼­¤ò»ØÄê¤Ç¤­¤Þ¤¹:\n"
+"xM M, c 1, w 2, b 512, kD 1000, k 1024, MD 1,000,000, M 1,048,576,\n"
+"GD 1,000,000,000, G 1,073,741,824, ¤½¤Î¾¤Ë T, P, E, Z, Y ¤Ê¤É¡£\n"
+"KEYWORD ¤Ë¤Ï°Ê²¼¤Î¤â¤Î¤ò»È¤¨¤Þ¤¹:\n"
+"\n"
+
+#: src/dd.c:437
+#, fuzzy
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii EBCDIC ¤«¤é ASCII ¤Ø\n"
+" ebcdic ASCII ¤«¤é EBCDIC ¤Ø\n"
+" ibm ASCII ¤«¤éIBM(alternated) EBCDIC ¤Ø\n"
+" block ²þ¹Ô¶èÀÚ¤ê¥ì¥³¡¼¥É¤ò cbs ¥µ¥¤¥º¤Î¶õÇò¤òËä¤á¤ë\n"
+" unblock ËöÈø¤Î¶õÇòÎó¤ò¤ò²þ¹Ô¤ÇÃÖ¤­´¹¤¨¤ë\n"
+" lcase ±ÑÂçʸ»ú¤ò±Ñ¾®Ê¸»ú¤ËÊÑ´¹¤¹¤ë\n"
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "%s ¤Ï¸ºß¤·¤Þ¤¹¤¬¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "ÀÚ¤êµÍ¤á¤é¤ì¤¿½ñ¤­¹þ¤ß"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] ""
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr ""
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ""
+
+#: src/dd.c:604
+#, fuzzy, c-format
+msgid "closing input file %s"
+msgstr "¥Õ¥¡¥¤¥ë `%s' ¤òºîÀ®\n"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "½ÐÎÏ¥Õ¥¡¥¤¥ë %s ¤ò¥¯¥í¡¼¥º"
+
+#: src/dd.c:791 src/dd.c:1455
+#, fuzzy, c-format
+msgid "writing to %s"
+msgstr "%s ¤Î½ñ¤­¹þ¤ß¥¨¥é¡¼"
+
+#: src/dd.c:886
+#, fuzzy, c-format
+msgid "unrecognized operand %s"
+msgstr "¥ª¥×¥·¥ç¥ó `-%c' ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó"
+
+#: src/dd.c:897
+#, fuzzy, c-format
+msgid "invalid conversion: %s"
+msgstr "Éý¤Î¥ª¥×¥·¥ç¥ó `%s' ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/dd.c:900
+#, fuzzy, c-format
+msgid "invalid input flag: %s"
+msgstr "Éý `%s' ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/dd.c:903
+#, fuzzy, c-format
+msgid "invalid output flag: %s"
+msgstr "¥°¥ë¡¼¥×»ØÄ꤬ÉÔÀµ"
+
+#: src/dd.c:906
+#, fuzzy, c-format
+msgid "invalid status flag: %s"
+msgstr "`%2$s' ¤ËÂФ¹¤ë°ú¿ô %1$s ¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
+
+#: src/dd.c:942
+#, fuzzy, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "¥ª¥×¥·¥ç¥ó `-%c' ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó"
+
+#: src/dd.c:948
+#, fuzzy, c-format
+msgid "invalid number %s"
+msgstr "%s: ̵¸ú¤ÊÈÖ¹æɽµ­¤Ç¤¹"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#: src/dd.c:973
+#, fuzzy, c-format
+msgid "cannot combine block and unblock"
+msgstr "¥æ¡¼¥¶¤È¥°¥ë¡¼¥×¤ÎξÊý¤ò¾Êά¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó"
+
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "Èæ³Ó¤·¤¿Ê¸»úÎó¤Ï %s ¤È %s ¤Ç¤¹."
+
+#: src/dd.c:977
+#, fuzzy, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "-l ¤Þ¤¿¤Ï -t ¤È¥·¥°¥Ê¥ë¤òÁȤ߹ç¤ï¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"·Ù¹ð: lseek ¤Î¥«¡¼¥Í¥ë¥Ð¥°¤ËÂн褷¤Þ¤¹¡£\n"
+" ¥Õ¥¡¥¤¥ë (%s) ¤Î mt_type=0x%0lx -- <sys/mtio.h> ¤Î¥¿¥¤¥×¥ê¥¹¥È¤ò¸«¤Æ²¼¤µ¤¤"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, fuzzy, c-format
+msgid "%s: cannot seek"
+msgstr "%s: ºï½ü¤Ç¤­¤Þ¤»¤ó"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "·Ù¹ð: Éý %lu ¤Ï̵¸ú¤ÊÃͤǤ¹. -- Âå¤ï¤ê¤Ë %d ¤ò»ÈÍѤ·¤Þ¤¹"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr ""
+
+#: src/dd.c:1376
+#, fuzzy, c-format
+msgid "setting flags for %s"
+msgstr "%s ¤Î¥¿¥¤¥à¥¹¥¿¥ó¥×¤òÀßÄêÃæ"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr ""
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr ""
+
+#: src/dd.c:1670 src/dd.c:1699
+#, fuzzy, c-format
+msgid "opening %s"
+msgstr "%s ¤ÎÆɤ߹þ¤ß¥¨¥é¡¼"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, fuzzy, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "½ÐÎÏ¥Õ¥¡¥¤¥ë %s ¤ÎľÁ° %s ¥Ð¥¤¥È¤ò¿Ê¤á¤Þ¤¹"
+
+#: src/df.c:151
+#, fuzzy
+msgid "Filesystem Type"
+msgstr "Filesystem "
+
+#: src/df.c:153
+#, fuzzy
+msgid "Filesystem "
+msgstr "Filesystem "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " I¥Î¡¼¥É I»ÈÍÑ I»Ä¤ê I»ÈÍÑ%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " ¥µ¥¤¥º »ÈÍÑ »Ä¤ê »ÈÍÑ%%"
+
+#: src/df.c:162
+#, fuzzy, c-format
+msgid " Size Used Avail Use%%"
+msgstr " ¥µ¥¤¥º »ÈÍÑ »Ä¤ê »ÈÍÑ%%"
+
+#: src/df.c:165
+#, fuzzy, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %4d-blocks Used Available Capacity"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " %4s-¥Ö¥í¥Ã¥¯ »ÈÍÑ »ÈÍÑ²Ä »ÈÍÑ%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " ¥Þ¥¦¥ó¥È°ÌÃÖ\n"
+
+#: src/df.c:468
+#, fuzzy, c-format
+msgid "cannot get current directory"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, fuzzy, c-format
+msgid "cannot change to directory %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ë°ÜÆ°¤Ç¤­¤Þ¤»¤ó"
+
+#: src/df.c:498
+#, fuzzy, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/df.c:741
+#, fuzzy
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"¥Õ¥¡¥¤¥ë¤¬Â°¤¹¤ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤òɽ¼¨¤¹¤ë¡£\n"
+"¤¢¤ë¤¤¤Ï¡¢¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Ê¤±¤ì¤ÐÁ´¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î»ÈÍÑÎ̤òɽ¼¨¤¹¤ë¡£\n"
+"\n"
+
+#: src/df.c:749
+#, fuzzy
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all 0 ¥Ö¥í¥Ã¥¯¤·¤«»ý¤¿¤Ê¤¤¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò´Þ¤á¤ë\n"
+" --block-size=SIZE SIZE ¥Ð¥¤¥È¤Î¥Ö¥í¥Ã¥¯¤Çɽ¼¨¤¹¤ë\n"
+" -h, --human-readable ¿Í´Ö¤¬Æɤߤ䤹¤¤·Á¼°¤Çɽ¼¨¤¹¤ë (Îã: 1K 234M 2G)\n"
+" -H, --si Ʊ¾å¡£Ã¢¤·Ã±°Ì¤Ï 1024 ¤Ç¤Ï¤Ê¤¯ 1000 ÇÜ\n"
+
+#: src/df.c:755
+#, fuzzy
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes ¥Ö¥í¥Ã¥¯»ÈÍѤÎÂå¤ê¤Ë I-¥Î¡¼¥É¾ðÊó¤òɽ¼¨¤¹¤ë\n"
+" -k, --kilobytes --block-size=1024 ¤ÈƱÍÍ\n"
+" -l, --local ¥í¡¼¥«¥ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤À¤±É½¼¨¤¹¤ë\n"
+" -m, --megabytes --block-size=1048576 ¤ÈƱÍÍ\n"
+" --no-sync »ÈÍѾðÊó¼èÆÀ¤ÎÁ°¤Ë sync(2) ¤òµ¯Æ°¤·¤Ê¤¤ (default)\n"
+
+#: src/df.c:761
+#, fuzzy
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability POSIX ½ÐÎÏ·Á¼°¤ò»ÈÍѤ¹¤ë\n"
+" --sync »ÈÍѾðÊó¼èÆÀ¤ÎÁ°¤Ë sync(2) ¤òµ¯Æ°¤¹¤ë\n"
+" -t, --type=TYPE TYPE ·¿¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¤ßɽ¼¨¤¹¤ë\n"
+" -T, --print-type ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¼ïÎà¤òɽ¼¨¤¹¤ë\n"
+" -x, --exclude-type=TYPE »ØÄꤷ¤¿¼ïÎà¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò½ü¤¤¤Æɽ¼¨¤¹¤ë\n"
+" -v (̵»ë¤µ¤ì¤ë)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr ""
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "%s ·Á¼°¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤¬ÁªÂò/ÈóÁªÂò¤ÎξÊý¤Ç»ØÄꤵ¤ì¤Þ¤·¤¿"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "·Ù¹ð: "
+
+#: src/df.c:943
+#, fuzzy, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%s¥Þ¥¦¥ó¥È¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥Æ¡¼¥Ö¥ë¤òÆɤá¤Þ¤»¤ó"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"´Ä¶­ÊÑ¿ô LS_COLORS ¤ÎÄêµÁ¤¹¤ë¤¿¤á¤Î¥³¥Þ¥ó¥É¤ò½ÐÎϤ·¤Þ¤¹¡£\n"
+"\n"
+"½ÐÎÏ¥Õ¥©¡¼¥Þ¥Ã¥È¤Î·èÄê:\n"
+" -b, --sh, --bourne-shell Bourne ¥·¥§¥ë·Á¼°¤Ç LS_COLORS ¤ò½ÐÎϤ¹¤ë\n"
+" -c, --csh, --c-shell C ¥·¥§¥ë·Á¼°¤Ç LS_COLORS ¤ò½ÐÎϤ¹¤ë\n"
+" -p, --print-database ¥Ç¥Õ¥©¥ë¥ÈÃͤòɸ½à½ÐÎϤËɽ¼¨¤¹¤ë\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤¿¤È¤­¤Ï¡¢¥Õ¥¡¥¤¥ë¥¿¥¤¥×¤ä³ÈÄ¥»ÒËè¤Ë¤É¤Î¿§¤ò»È¤¦¤«¤Ë¤Ä¤¤"
+"¤Æ¡¢\n"
+"¤½¤Î¥Õ¥¡¥¤¥ë¤òÆɤó¤Ç·èÄꤷ¤Þ¤¹¡£¤½¤ì°Ê³°¤Î»þ¤Ïͽ¤á¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥Ç¡¼¥¿\n"
+"¥Ù¡¼¥¹¤¬»È¤ï¤ì¤Þ¤¹¡£¤³¤¦¤¤¤Ã¤¿¥Õ¥¡¥¤¥ë¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¾ÜºÙ¤¬ÃΤꤿ¤±¤ì¤Ð¡¢\n"
+"`dircolors --print-database' ¤ò¼Â¹Ô¤·¤Æ¤¯¤À¤µ¤¤¡£\n"
+
+#: src/dircolors.c:291
+#, fuzzy, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s: ̵¸ú¤ÊÉÿô¤Ç¤¹"
+
+#: src/dircolors.c:363
+#, fuzzy, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s: ¥ª¥×¥·¥ç¥ó `%c%s' ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó\n"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<ÆâÉô>"
+
+#: src/dircolors.c:445
+#, fuzzy, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"¾éĹ¥ª¥×¥·¥ç¥ó¤È stty ¤ÎÆɤá¤ë·Á¼°¤Î½ÐÎϤò»ØÄꤹ¤ë¥ª¥×¥·¥ç¥ó¤Ï\n"
+"¤É¤Á¤é¤«°ìÊý¤·¤«Æ±»þ¤Ë»ØÄê¤Ç¤­¤Þ¤»¤ó"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr ""
+"´Ä¶­ÊÑ¿ô SHELL ¤¬ÄêµÁ¤µ¤ì¤Æ¤ª¤é¤º¡¢¥·¥§¥ë·¿¤Î¥ª¥×¥·¥ç¥ó¤âÍ¿¤¨¤é¤ì¤Æ¤¤¤Þ¤»¤ó"
+
+#: src/dirname.c:48
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥Õ¥¡¥¤¥ë]...\n"
+"¤Þ¤¿¤Ï: %s [¥ª¥×¥·¥ç¥ó]\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"¥Ñ¥¹Ì¾¤«¤é¥Ç¥£¥ì¥¯¥È¥ê̾¤òÀÚ¤ê½Ð¤¹. ¥Ñ¥¹Ì¾¤Ë¥Ç¥£¥ì¥¯¥È¥ê¤¬´Þ¤Þ¤ì¤Ê¤¤¾ì¹ç\n"
+"¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤È¸«¤Ê¤·¤Æ `.' ¤ò½ÐÎϤ¹¤ë.\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#: src/du.c:279 src/wc.c:108
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]...\n"
+" Ëô¤Ï: %s --traditional [¥Õ¥¡¥¤¥ë] [[+]¥ª¥Õ¥»¥Ã¥È [[+]¥é¥Ù¥ë]]\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"¥Õ¥¡¥¤¥ëËè¤Î¥Ç¥£¥¹¥¯»ÈÍÑÎ̤ò½¸·×¤¹¤ë¡£¥Ç¥£¥ì¥¯¥È¥ê¤ÏºÆµ¢Åª¤Ë½èÍý¤¹¤ë¡£\n"
+"\n"
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+
+#: src/du.c:297
+#, fuzzy
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+" -a, --all ¥Ç¥£¥ì¥¯¥È¥ê¤À¤±¤Ç¤Ê¤¯¡¢Á´¤Æ¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æɽ¼¨\n"
+" --block-size=SIZE SIZE ¥Ð¥¤¥È¤Î¥Ö¥í¥Ã¥¯¤Çɽ¼¨¤¹¤ë\n"
+" -b, --bytes ¥µ¥¤¥ºÃ±°Ì¤ò¥Ð¥¤¥È¤Çɸ¼¨¤¹¤ë\n"
+" -c, --total Áí¹ç·×¤ò½ÐÎϤ¹¤ë\n"
+" -D, --dereference-args ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Î¤È¤­¤Ï¡¢»²¾ÈÀè¤òé¤ë\n"
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+#, fuzzy
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference Á´¤Æ¤Î¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Î»²¾ÈÀè¤òé¤ë\n"
+" -m, --megabytes --block-size=1048576 ¤ÈƱÍÍ\n"
+" -S, --separate-dirs ¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤Î¥µ¥¤¥º¤ò´Þ¤á¤Ê¤¤\n"
+" -s, --summarize °ú¿ôËè¤ÎÁí¹ç·×¤·¤«É½¼¨¤·¤Ê¤¤\n"
+
+#: src/du.c:323
+#, fuzzy
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system °Û¤Ê¤ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï½¸·×¤·¤Ê¤¤\n"
+" -X FILE, --exclude-from=FILE »ØÄê¥Õ¥¡¥¤¥ëÃæ¤Î¥Ñ¥¿¡¼¥ó¤Ë°ìÃפ¹¤ë¥Õ¥¡¥¤¥ë"
+"¤Ï\n"
+" ½¸·×¤·¤Ê¤¤\n"
+" --exclude=PAT »ØÄꤷ¤¿¥Ñ¥¿¡¼¥ó¤Ë°ìÃפ¹¤ë¥Õ¥¡¥¤¥ë¤ò½¸·×¤·¤Ê¤¤\n"
+" --max-depth=N ¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¤è¤ê¡¢ºÇÂç N ³¬ÁØʬ²¼¤¬¤ë¤Þ¤Ç¤Î\n"
+" ¥Ç¥£¥ì¥¯¥È¥ê (--all ¤Î»ØÄê¤Ç¥Õ¥¡¥¤¥ë¤â) ¤ò½¸·×¤¹"
+"¤ë\n"
+" --max-depth=0 ¤Ê¤é --summarize ƱÅù¤È¤Ê¤ë\n"
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "¹ç·×"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+
+#: src/du.c:780
+#, fuzzy, c-format
+msgid "invalid maximum depth %s"
+msgstr "Éý `%s' ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr ""
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "¹ç·×¤ÈÁ´¥¨¥ó¥È¥ê¤Îɽ¼¨¤ÎξÊý¤ò¡¢°ìÅ٤˻ØÄꤹ¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "·Ù¹ð: Åý·×(-s)¤È -max-depth=0 ¤ÏƱ¤¸ÍÑË¡¤Ç¤¹"
+
+#: src/du.c:884
+#, fuzzy, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "·Ù¹ð: Åý·×(-s)¤È -max-depth=%d ¤Î»ØÄ꤬¶¥¹ç¤·¤Æ¤¤¤Þ¤¹"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+#: src/du.c:960 src/wc.c:662
+#, fuzzy, c-format
+msgid "cannot read file names from %s"
+msgstr "Èæ³Ó¤·¤¿Ê¸»úÎó¤Ï %s ¤È %s ¤Ç¤¹."
+
+#: src/du.c:1000 src/du.c:1003
+#, fuzzy
+msgid "invalid zero-length file name"
+msgstr "¥°¥ë¡¼¥×»ØÄ꤬ÉÔÀµ"
+
+#: src/echo.c:64
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+#: src/echo.c:80
+#, fuzzy
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"-E ¤¬Ìµ¤±¤ì¤Ð, °Ê²¼¤Î¥·¡¼¥±¥ó¥¹¤¬Ç§¼±¤µ¤ì½ñ¤­´¹¤¨¤é¤ì¤Þ¤¹:\n"
+"\n"
+" \\NNN ASCII ¥³¡¼¥É¤¬ NNN (8¿Ê) ¤Îʸ»ú\n"
+" \\\\ ¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å\n"
+" \\a ·Ù¹ð²» (¥Ù¥ë²»)\n"
+" \\b ¥Ð¥Ã¥¯¥¹¥Ú¡¼¥¹\n"
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c ºÇ¸å¤Î²þ¹Ô¤òÍÞÀ©\n"
+" \\f ÍÑ»æÁ÷¤ê\n"
+" \\n ²þ¹Ô (LF)\n"
+" \\r Éüµ¢ (CR)\n"
+" \\t ¿åÊ¿¥¿¥Ö\n"
+" \\v ¿âľ¥¿¥Ö\n"
+
+#: src/env.c:118
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"´Ä¶­ÊÑ¿ô¤ÎÃͤòÀßÄꤷ, ¤½¤Î´Ä¶­¤Ç¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë.\n"
+"\n"
+" -i, --ignore-environment ²¿¤â´Ä¶­ÊÑ¿ô¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾õÂ֤Ǽ¹Ô\n"
+" -u, --unset=NAME ´Ä¶­ÊÑ¿ô NAME ¤òºï½ü¤¹¤ë\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"- ¤À¤±¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï -i ¤ò»ØÄꤷ¤¿¤³¤È¤Ë¤Ê¤ê¤Þ¤¹. ¥³¥Þ¥ó¥É¤¬»ØÄꤵ¤ì¤Ê¤±¤ì"
+"¤Ð, ºÇ½ªÅª¤Ê´Ä¶­ÊÑ¿ô¤òɽ¼¨¤·¤Þ¤¹.\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"³Æ¡¹¤Î¥Õ¥¡¥¤¥ëÆâ¤Î¥¿¥Ö¤ò¥¹¥Ú¡¼¥¹¤ËÊÑ´¹¤·, ɸ½à½ÐÎϤ˽ñ¤­½Ð¤·¤Þ¤¹.\n"
+"¥Õ¥¡¥¤¥ë¤Î»ØÄ꤬¤Ê¤«¤Ã¤¿¤ê, `-'¤Ç¤¢¤Ã¤¿¾ì¹ç, ɸ½àÆþÎϤ«¤éÆɤ߹þ¤ß¤Þ¤¹.\n"
+"\n"
+
+#: src/expand.c:123
+#, fuzzy
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial Èó¶õÇòʸ»ú°Ê¹ß¤Î¥¿¥Ö¤òÊÑ´¹¤·¤Ê¤¤\n"
+" -t, --tabs=¿ô ¥¿¥ÖÉý¤òɸ½à¤Î8¤Ë¤«¤ï¤ê¤Ë»ØÄê\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr " -t, --tabs=¥ê¥¹¥È ¥³¥ó¥Þ(,)¤Ç¶èÀÚ¤é¤ì¤¿¥ê¥¹¥È¤Ë¥¿¥Ö¥¹¥È¥Ã¥×¤òÀßÄê\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, fuzzy, c-format
+msgid "tab stop is too large %s"
+msgstr "%s ¤ÏŤ¹¤®¤Þ¤¹"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, fuzzy, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "¥¿¥Ö¥µ¥¤¥º¤Î»ØÄê¤ËÉÔÀµ¤Êʸ»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "¥¿¥Ö¥µ¥¤¥º¤Ï0(¥¼¥í)¤Ë¤Ç¤­¤Þ¤»¤ó"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "¥¿¥Ö¥µ¥¤¥º¤Î»ØÄê¤Ï¾º½ç¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, fuzzy, c-format
+msgid "input line is too long"
+msgstr "%s: ¥Õ¥¡¥¤¥ë¤¬Ä¹¤¹¤®¤Þ¤¹"
+
+#: src/expr.c:102
+#, fuzzy, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥Õ¥¡¥¤¥ë]...\n"
+"¤Þ¤¿¤Ï: %s [¥ª¥×¥·¥ç¥ó]\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"\n"
+"¼°¤ÎÃͤòɸ½à½ÐÎϤËɽ¼¨. °Ê²¼¤Î°ìÍ÷¤Ç¤Ï, ¼°¤òɾ²Á¤¹¤ëºÝ¤ÎÍ¥Àè½ç°Ì¤´¤È¤Ë\n"
+"¶õ¹Ô¤Ç¶èʬ¤±¤·¤Æ¤¤¤Þ¤¹. ¼°¤È¤·¤Æ»È¤¨¤ë¤Î¤Ï:\n"
+"\n"
+" ARG1 | ARG2 ARG1 ¤¬¥Ì¥ë¤Ç¤â 0 ¤Ç¤â¤Ê¤±¤ì¤Ð ARG1 ¤òÊÖ¤·, \n"
+" ¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï ARG2 ¤òÊÖ¤¹\n"
+"\n"
+" ARG1 & ARG2 ARG1, ARG2 ¤È¤â¤Ë¥Ì¥ë¤Ç¤â 0 ¤Ç¤â¤Ê¤±¤ì¤Ð ARG1 ¤òÊÖ¤·,\n"
+" ¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï 0 ¤òÊÖ¤¹\n"
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"\n"
+" ARG1 < ARG2 ARG1 ¤¬ ARG2 ¤è¤ê¾®¤µ¤¤\n"
+" ARG1 <= ARG2 ARG1 ¤¬ ARG2 ¤è¤ê¾®¤µ¤¤¤«Åù¤·¤¤\n"
+" ARG1 = ARG2 ARG1 ¤¬ ARG2 ¤ÈÅù¤·¤¤\n"
+" ARG1 != ARG2 ARG1 ¤¬ ARG2 ¤ÈÅù¤·¤¯¤Ê¤¤\n"
+" ARG1 >= ARG2 ARG1 ¤¬ ARG2 ¤è¤êÂ礭¤¤¤«Åù¤·¤¤\n"
+" ARG1 > ARG2 ARG1 ¤¬ ARG2 ¤è¤êÂ礭¤¤\n"
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+"\n"
+" ARG1 + ARG2 ARG1 ¤È ARG2 ¤Î­¤·»»\n"
+" ARG1 - ARG2 ARG1 ¤È ARG2 ¤Î°ú¤­»»\n"
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+"\n"
+" ARG1 * ARG2 ARG1 ¤È ARG2 ¤Î³Ý¤±»»\n"
+" ARG1 / ARG2 ARG1 ¤Î ARG2 ¤Ë¤è¤ë³ä¤ê»»\n"
+" ARG1 % ARG2 ARG1 ¤Î ARG2 ¤Ë¤è¤ë³ä¤ê»»¤Î¤¢¤Þ¤ê\n"
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"\n"
+" STRING : REGEXP STRING ¤Ë¤ª¤±¤ëÀµµ¬É½¸½ REGEXP ¤Ë¤è¤ë¥Ñ¥¿¡¼¥ó¾È¹ç\n"
+"\n"
+" match STRING REGEXP STRING : REGEXP ¤ÈƱ¤¸\n"
+" substr STRING POS LENGTH STRING ¤ÎÉôʬʸ»úÎó¤òÊÖ¤¹, POS ¤Ï 1¤«¤é»Ï¤Þ¤ë\n"
+" index STRING CHARS STRING ¤«¤é CHARS ¤¬¸«¤Ä¤«¤Ã¤¿¾ì½ê¤òÊÖ¤¹.\n"
+" ¸«¤Ä¤«¤é¤Ê¤±¤ì¤Ð 0\n"
+" length STRING STRING ¤ÎŤµ\n"
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+" + TOKEN TOKEN ¤¬ `match' ¤Î¤è¤¦¤Ê¥­¡¼¥ï¡¼¥É¤ä `/' ¤Î\n"
+" ¤è¤¦¤Ê±é»»»Ò¤Ç¤¢¤Ã¤Æʸ»úÎó¤È¤·¤Æ²ò¼á.\n"
+"\n"
+" ( ¼° ) ¼°¤ÎÃÍ\n"
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"¿¤¯¤Î±é»»»Ò¤Ï¥·¥§¥ë¤ËÅϤ¹¤¿¤á¤Ë¥¨¥¹¥±¡¼¥×¤¹¤ë¤«°úÍÑÉä¤Ç°Ï¤àɬÍפ¬¤¢¤ê¤Þ¤¹.\n"
+"Èæ³Ó¤Ï ARG ¤¬¤¤¤º¤ì¤â¿ôÃͤǤ¢¤ì¤ÐÂ礭¤µ¤Ë¤è¤ê, ¤½¤ì°Ê³°¤Î¾ì¹ç¤Ë¤Ï¼­½ñ½ç¤Ë\n"
+"¤è¤ê¹Ô¤ï¤ì¤Þ¤¹. ¥Ñ¥¿¡¼¥ó¾È¹ç¤Ï, \\( ¤È \\) ¤Î´Ö, ¤â¤·¤¯¤Ï¥Ì¥ëʸ»ú¤Ë°ìÃפ·¤¿\n"
+"ʸ»úÎó¤òÊÖ¤·¤Þ¤¹. \\( ¤È \\) ¤ò»È¤ï¤Ê¤¤¾ì¹ç¤Ï°ìÃפ¹¤ëʸ»ú¿ô¤« 0 ¤òÊÖ¤·¤Þ¤¹.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#: src/expr.c:175
+#, fuzzy, c-format
+msgid "syntax error"
+msgstr "ɸ½à¥¨¥é¡¼"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "Àµµ¬É½¸½¤Ë¤è¤ë¸¡º÷Ãæ¤Î¥¨¥é¡¼"
+
+#: src/expr.c:653 src/expr.c:711
+#, fuzzy, c-format
+msgid "non-numeric argument"
+msgstr "ÆþÎϤÎÂ礭¤µÀ©¸Â¤Î°ú¿ô"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "¥¼¥í¤Ç¤Î³ä¤ê»»"
+
+#: src/factor.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥Õ¥¡¥¤¥ë]...\n"
+"¤Þ¤¿¤Ï: %s [¥ª¥×¥·¥ç¥ó]\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"³Æ¡¹¤Î¿ôÃͤÎÁÇ°ø¿ô¤òɽ¼¨.\n"
+"\n"
+
+#: src/factor.c:85
+#, fuzzy
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+" Í¿¤¨¤é¤ì¤¿Á´¤Æ¤Î¿ôÃÍ (À°¿ô) ¤ÎÁÇ°ø¿ô¤òɽ¼¨¤·¤Þ¤¹. ¤â¤·¿ôÃͤ¬°ú¿ô¤È¤·¤Æ\n"
+" ¥³¥Þ¥ó¥É¹Ô¤«¤é»ØÄꤵ¤ì¤Ê¤¤¾ì¹ç¤Ë¤Ï, ɸ½àÆþÎϤè¤êÆɤ߹þ¤Þ¤ì¤Þ¤¹.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s ¤ÏŤ¹¤®¤Þ¤¹"
+
+#: src/factor.c:158
+#, fuzzy, c-format
+msgid "%s is not a valid positive integer"
+msgstr "`%s' ¤ÏÍ­¸ú¤ÊÀµ¤ÎÀ°¿ô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "»ÈÍÑË¡: %s [-DIGITS] [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"¥Õ¥¡¥¤¥ëÆâ¤Î¤½¤ì¤¾¤ì¤ÎÃÊÍî¤òÀ°·Á¤·¤Ê¤ª¤·¤Æ, ɸ½à½ÐÎϤËɽ¼¨¤·¤Þ¤¹.\n"
+"¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤ä, ¥Õ¥¡¥¤¥ë̾¤¬ `-' ¤È»ØÄꤵ¤ì¤¿¾ì¹ç¤Ë¤Ï\n"
+"ɸ½àÆþÎϤ«¤éÆɤ߹þ¤ß¤Þ¤¹.\n"
+"\n"
+
+#: src/fmt.c:282
+#, fuzzy
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin ºÇ½é¤Î 2 ¹Ô¤Î¥¤¥ó¥Ç¥ó¥È¤òÊݸ\n"
+" -p, --prefix=STRING STRING ¤Ç»Ï¤Þ¤ë¹Ô¤À¤±¤ò·ë¹ç\n"
+" -s, --split-only Ť¤¹Ô¤Îʬ³ä¤À¤±¤ò¹Ô¤¦\n"
+
+#: src/fmt.c:289
+#, fuzzy
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph 1 ¹ÔÌÜ¤È 2 ¹ÔÌܤȤǥ¤¥ó¥Ç¥ó¥È¤¬°Û¤Ê¤ëÃÊÍî¤ò½èÍý\n"
+" -u, --uniform-spacing ñ¸ì¤Î´Ö¤Ë¤Ï 1¤Ä, ʸ¤Î´Ö¤Ë¤Ï 2 ¤Ä¤Î¶õÇò¤òÃÖ¤¯\n"
+" -w, --width=NUMBER ºÇÂç¹ÔÉý (ɸ½à 75ʸ»ú) ¤ò»ØÄê\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+
+#: src/fmt.c:400
+#, fuzzy, c-format
+msgid "invalid width: %s"
+msgstr "Éý `%s' ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"¥Õ¥¡¥¤¥ë¤Î³Æ¹Ô¤ÎÀÞ¤êÊÖ¤·¤ò¹Ô¤¤, ·ë²Ì¤òɸ½à½ÐÎϤ˽ñ¤­¹þ¤ß¤Þ¤¹.\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes ¥«¥é¥à¿ô¤Ç¤Ï¤Ê¤¯¥Ð¥¤¥È¿ô¤Ç¥«¥¦¥ó¥È\n"
+" -s, --spaces ¶õÇò¤Î°ÌÃÖ¤ÇÀÞ¤êÊÖ¤¹\n"
+" -w, --width=WIDTH 80 ¤ÎÂå¤ï¤ê¤Ë 1 ¹Ô¤ÎÉý¤ò»ØÄê\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "¹ÔÉý¤Î»ØÄ̵꤬¸ú¤Ç¤¹: `%s'"
+
+#: src/head.c:113
+#, fuzzy
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"¥Õ¥¡¥¤¥ë¤ÎÀèƬ¤«¤é 10 ¹Ôʬ¤òɸ½à½ÐÎϤËɽ¼¨¤·¤Þ¤¹.\n"
+"Ê£¿ô¤Î¥Õ¥¡¥¤¥ë¤ò½èÍý¤¹¤ëºÝ¤Ë¤Ï, ³Æ½ÐÎϤΤϤ¸¤á¤Ë¥Õ¥¡¥¤¥ë̾¤òɽ¼¨¤·¤Þ¤¹.\n"
+"¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤷ¤Ê¤¤¤«, ¥Õ¥¡¥¤¥ë̾¤Ë `-' ¤ò»ØÄꤷ¤¿¾ì¹ç¤Ë¤Ï, \n"
+"ɸ½àÆþÎϤòÆɤ߹þ¤ß¤Þ¤¹.\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent ¥Õ¥¡¥¤¥ë¤´¤È¤Î¥Ø¥Ã¥À¤Î½ÐÎϤò¹Ô¤ï¤Ê¤¤\n"
+" -v, --verbose ¥Õ¥¡¥¤¥ë¤´¤È¤Ë¥Ø¥Ã¥À¤ò½ÐÎÏ\n"
+
+#: src/head.c:136
+#, fuzzy
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"SIZE¤Ï¤¤¤¯¤Ä¤«¤Î¥µ¥Õ¥£¥Ã¥¯¥¹¤òÉÕ¤±¤é¤ì¤Þ¤¹: 512¥Ð¥¤¥È¤Ç¤Ï`b',1¥­¥í¤Ç¤Ï`k',\n"
+"1¥á¥¬¤Ç¤Ï`m'¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹.\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "%s ¤ÎÆɤ߹þ¤ß¥¨¥é¡¼"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "%s ¤Î½ñ¤­¹þ¤ß¥¨¥é¡¼"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr ""
+
+#: src/head.c:230 src/head.c:1046
+#, fuzzy, c-format
+msgid "%s: number of bytes is too large"
+msgstr "Èæ³Ó¤¹¤ë¥Ð¥¤¥È¿ô¤Î»ØÄ̵꤬¸ú¤Ç¤¹"
+
+#: src/head.c:443
+#, fuzzy, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: ÁêÂÐ¥ª¥Õ¥»¥Ã¥È %s%s ¤ò seek ¤Ç¤­¤Þ¤»¤ó"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, fuzzy, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: ¥ª¥Õ¥»¥Ã¥È %s%s ¤ò seek ¤Ç¤­¤Þ¤»¤ó"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "%s ¤ËÂФ¹¤ë¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿¤òºÆÇÛÃ֤Ǥ­¤Þ¤»¤ó"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s ¤ÏÂ礭¤¹¤®¤Æɽ¼¨¤Ç¤­¤Þ¤»¤ó"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "¹Ô¿ô"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "¥Ð¥¤¥È¿ô"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "¹Ô¿ô¤Î»ØÄ꤬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "¥Ð¥¤¥È¿ô¤Î»ØÄ꤬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "%s: ´Ö°ã¤Ã¤¿¥ª¥×¥·¥ç¥ó -- %c\n"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"»ÈÍÑË¡: %s\n"
+"¤â¤·¤¯¤Ï: %s ¥ª¥×¥·¥ç¥ó\n"
+"¸½ºß¤Î¥Û¥¹¥È¤ËÂФ¹¤ë¿ô»ú¤Ë¤è¤ë¼±ÊÌ»Ò (16¿Ê¿ô) ¤òɽ¼¨.\n"
+"\n"
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥Û¥¹¥È̾]\n"
+"¤â¤·¤¯¤Ï: %s ¥ª¥×¥·¥ç¥ó\n"
+"¸½ºß¤Î¥·¥¹¥Æ¥à¤Î¥Û¥¹¥È̾¤òɽ¼¨¤Þ¤¿¤ÏÀßÄê.\n"
+"\n"
+
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "`%s' ¤Ç ioctl() ¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr "¥Û¥¹¥È̾¤òÀßÄê¤Ç¤­¤Þ¤»¤ó; ¤³¤Î¥·¥¹¥Æ¥à¤Ïµ¡Ç½Åª¤ËÉÔ­¤·¤Æ¤¤¤Þ¤¹"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "¥Û¥¹¥È̾¤òÆÃÄê¤Ç¤­¤Þ¤»¤ó"
+
+#: src/id.c:78
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... SET1 [SET2]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"»ØÄꤵ¤ì¤¿¥æ¡¼¥¶Ì¾¤Î¥æ¡¼¥¶¤â¤·¤¯¤Ï¸½ºß¤Î¥æ¡¼¥¶¤Î¾ðÊó¤òɽ¼¨.\n"
+"\n"
+" -a ̵»ë, ¾¤Î¥Ð¡¼¥¸¥ç¥ó¤È¤Î¸ß´¹À­ÊÝ»ý¤Î¤¿¤á¤Î¥ª¥×¥·¥ç¥ó\n"
+" -g, --group ¼Â¸ú¥°¥ë¡¼¥× ID ¤Î¤ß¤òɽ¼¨\n"
+" -G, --groups °¤·¤Æ¤¤¤ë¥°¥ë¡¼¥×¤òÁ´¤Æɽ¼¨\n"
+" -n, --name -ugG ¤ËÂФ·¤Æ, ID ¤Î¿ô»ú¤ÎÂå¤ï¤ê¤Ë̾Á°¤òɽ¼¨\n"
+" -r, --real -ugG ¤ËÂФ·¤Æ, ¼Â¸ú ID ¤ÎÂå¤ï¤ê¤Ë¼Â ID ¤òɽ¼¨\n"
+" -u, --user ¼Â¸ú¥æ¡¼¥¶ ID ¤Î¤ß¤òɽ¼¨\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"¥ª¥×¥·¥ç¥ó¤¬Ìµ¤¤¾ì¹ç¤Ï¥æ¡¼¥¶¾ðÊó¤Î¤¦¤ÁÍ­ÍѤʤâ¤Î¤òɽ¼¨.\n"
+
+#: src/id.c:152
+#, fuzzy, c-format
+msgid "cannot print only user and only group"
+msgstr "¥æ¡¼¥¶¤È¥°¥ë¡¼¥×¤ÎξÊý¤ò¾Êά¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr "ɸ½à¤Î·Á¼°¤Ç¤Ï, ̾Á°¤Þ¤¿¤Ï ID ¤À¤±¤òɽ¼¨¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: ¤½¤Î¤è¤¦¤Ê¥æ¡¼¥¶¤Ï¸ºß¤·¤Þ¤»¤ó"
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "¥æ¡¼¥¶ ID %u ¤ËÂФ¹¤ë¥æ¡¼¥¶Ì¾¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "%s ¤Î¥ª¡¼¥Ê¡¼¤È¥°¥ë¡¼¥×¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "Äɲ䵤줿¥°¥ë¡¼¥×¥ê¥¹¥È¤¬ÆÀ¤é¤ì¤Þ¤»¤ó"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " ½ê°¥°¥ë¡¼¥×="
+
+#: src/install.c:318
+#, fuzzy, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr "¥Õ¥©¡¼¥Þ¥Ã¥Èʸ»úÎó¤ÏƱ¤¸Éý¤Îʸ»úÎó¤òɽ¼¨¤¹¤ëºÝ¤Ë¤Ï»ØÄê¤Ç¤­¤Þ¤»¤ó"
+
+#: src/install.c:321
+#, fuzzy, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "¥Õ¥©¡¼¥Þ¥Ã¥Èʸ»úÎó¤ÏƱ¤¸Éý¤Îʸ»úÎó¤òɽ¼¨¤¹¤ëºÝ¤Ë¤Ï»ØÄê¤Ç¤­¤Þ¤»¤ó"
+
+#: src/install.c:369 src/mkdir.c:193
+#, fuzzy, c-format
+msgid "invalid mode %s"
+msgstr "Éý `%s' ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/install.c:520
+#, fuzzy, c-format
+msgid "cannot change ownership of %s"
+msgstr "%s ¤Î°À­¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+
+#: src/install.c:541
+#, fuzzy, c-format
+msgid "cannot set time stamps for %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/install.c:562
+#, fuzzy, c-format
+msgid "fork system call failed"
+msgstr "¥Ö¥í¥Ã¥¯¥¹¥Ú¥·¥ã¥ë¥Õ¥¡¥¤¥ë"
+
+#: src/install.c:566
+#, fuzzy, c-format
+msgid "cannot run strip"
+msgstr "%s ¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "%s ¤Î½ñ¤­¹þ¤ß¥¨¥é¡¼"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, fuzzy, c-format
+msgid "invalid user %s"
+msgstr "¥æ¡¼¥¶»ØÄ꤬ÉÔÀµ"
+
+#: src/install.c:628
+#, fuzzy, c-format
+msgid "creating directory %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/install.c:651
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... LAST\n"
+"¤â¤·¤¯¤Ï: %s [¥ª¥×¥·¥ç¥ó]... FIRST LAST\n"
+"¤â¤·¤¯¤Ï: %s [¥ª¥×¥·¥ç¥ó]... FIRST INCREMENT LAST\n"
+
+#: src/install.c:658
+#, fuzzy
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"ºÇ½é¤ÎÆó¤Ä¤Î½ñ¼°¤Ç¤Ï¡¢SOURCE ¥Õ¥¡¥¤¥ë¤ò DEST ¤Ø¥³¥Ô¡¼¤¹¤ë¤«¡¢Ê£¿ô¤Î SOURCE\n"
+"¥Õ¥¡¥¤¥ë¤ò´û¸¥Ç¥£¥ì¥¯¥È¥ê¤Ø¥³¥Ô¡¼¤·¤Þ¤¹¡£Æ±»þ¤Ë¥¢¥¯¥»¥¹¸¢¡¢½êÍ­¼Ô¤ä¥°¥ë¡¼"
+"¥×\n"
+"¤âÀßÄꤷ¤Þ¤¹¡£»°¤ÄÌܤνñ¼°¤Ç¤Ï¡¢»ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥êÁ´ÂΤòºîÀ®¤·¤Þ¤¹¡£\n"
+"\n"
+
+#: src/install.c:667
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup[=CONTROL] ¥³¥Ô¡¼Àè¤Ë´û¸¥Õ¥¡¥¤¥ë¤¬¤¢¤ì¤Ð¥Ð¥Ã¥¯¥¢¥Ã¥×¤òºîÀ®¤¹"
+"¤ë\n"
+" -b °ú¿ô¤ò¼è¤é¤Ê¤¤¤³¤È°Ê³°¤Ï --backup ¤ÈƱ¤¸\n"
+" -c (̵»ë¤µ¤ì¤ë)\n"
+" -d, --directory Á´¤Æ¤Î°ú¿ô¤ò¥Ç¥£¥ì¥¯¥È¥ê̾¤È²ò¼á¤¹¤ë\n"
+" »ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê¤ò°ìÅ٤˺îÀ®¤¹¤ë\n"
+
+#: src/install.c:674
+#, fuzzy
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D DEST ¤ÎºÇ¸å¤ò½ü¤¯¥Õ¥¡¥¤¥ë¤ò¤Þ¤ºÁ´¤ÆºîÀ®¤·¡¢¤½¤Î¸å¤Ç\n"
+" SOURCE ¤ò DEST ¤Ë¥³¥Ô¡¼¤¹¤ë¡£°ìÈÖÌܤνñ¼°¤ÇÊØÍø\n"
+" -g, --group=GROUP ¥°¥ë¡¼¥×°À­¤òÀßÄꤹ¤ë(̵»ØÄê: ¥×¥í¥»¥¹¤Î¸½ºß¥°¥ë¡¼"
+"¥×)\n"
+" -m, --mode=MODE ¥¢¥¯¥»¥¹¥â¡¼¥É¤ò chmod ¤ÎÍͤËÀßÄꤹ¤ë(̵»ØÄê: rwxr-xr-"
+"x)\n"
+" -o, --owner=OWNER ½êÍ­¼Ô¤òÀßÄꤹ¤ë (¥¹¡¼¥Ñ¡¼¥æ¡¼¥¶¤Î¤ß)\n"
+
+#: src/install.c:681
+#, fuzzy
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps SOURCE ¥Õ¥¡¥¤¥ë¤Î¥¢¥¯¥»¥¹¸¢¡¦Êѹ¹»þ¹ï¤ò\n"
+" Âбþ¤¹¤ë¥³¥Ô¡¼Àè¥Õ¥¡¥¤¥ë¤ËŬÍѤ¹¤ë\n"
+" -s, --strip ¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë¤ò strip ¤¹¤ë¡£1, 2 ÈÖÌܤηÁ¼°¤Î¤ß\n"
+" -S, --suffix=SUFFIX Ä̾ï¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×ÀÜÈø¼­¤ò¾å½ñ¤­¤¹¤ë\n"
+" -v, --verbose ¥Ç¥£¥ì¥¯¥È¥ê¤¬ºîÀ®¤µ¤ì¤ëËè¤Ë¤½¤Î̾Á°¤òɽ¼¨¤¹¤ë\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"¥Ð¥Ã¥¯¥¢¥Ã¥×ÀÜÈø¼­¤Ï¡¢--suffix ¤ä SIMPLE_BACKUP_SUFFIX ¤¬ÀßÄꤵ¤ì¤Ê¤¤¤È `~' "
+"¤Ë\n"
+"¤Ê¤ê¤Þ¤¹¡£¥Ð¡¼¥¸¥ç¥ó´ÉÍýÊýË¡¤Ï --backup ¥ª¥×¥·¥ç¥ó¤ä VERSION_CONTROL ´Ä¶­ÊÑ"
+"¿ô\n"
+"¤òÄ̤¸¤ÆÁªÂò¤Ç¤­¤Þ¤¹¡£°Ê²¼¤¬¤½¤ÎºÝ¤ÎÃͤǤ¹:\n"
+"\n"
+
+#: src/join.c:138
+#, fuzzy
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"ÆþÎϤ·¤¿°ìÂФιԤΤ¦¤Á, »ØÄꤷ¤¿·ë¹ç¥Õ¥£¡¼¥ë¥É¤ÎÆâÍƤ¬°ìÃפ·¤Æ¤¤¤¿¾ì¹ç¤Ë¤Ï\n"
+"ɸ½à½ÐÎÏ¤Ë 1 ¹Ô¤À¤±¤ò½ñ¤­¹þ¤ß¤Þ¤¹. Æä˻ØÄ꤬¤Ê¤¤¾ì¹ç¤Ë¤Ï, ¶õÇò¤Ç¶èÀÚ¤é¤ì¤¿\n"
+"ºÇ½é¤Î¥Õ¥£¡¼¥ë¥É¤ò, ·ë¹ç¥Õ¥£¡¼¥ë¥É¤È¤·¤Æ½èÍý¤·¤Þ¤¹. ¥Õ¥¡¥¤¥ë1 ¤Þ¤¿¤Ï¥Õ¥¡¥¤¥ë"
+"2\n"
+"¤È¤·¤Æ `-' ¤¬Í¿¤¨¤é¤ì¤¿¾ì¹ç(ξÊý¤ÏÉÔ²Ä)¤Ë¤Ï, ɸ½àÆþÎϤ«¤éÆɤ߹þ¤ß¤Þ¤¹.\n"
+"\n"
+" -a SIDE SIDE ¤Ë»ØÄꤷ¤¿¥Õ¥¡¥¤¥ë¤«¤é¤Î¹Ô¤ÏÉÔ°ìÃפιԤâ½ÐÎÏ\n"
+" -e EMPTY ¶õ¤Î½ÐÎÏ¥Õ¥£¡¼¥ë¥É¤ò EMPTY ¤ÇÃÖ¤­´¹¤¨¤ë\n"
+
+#: src/join.c:147
+#, fuzzy
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case ¥Õ¥£¡¼¥ë¥ÉÈæ³Ó¤ÎºÝ¤ËÂçʸ»ú¡¦¾®Ê¸»ú¤Î°ã¤¤¤ò̵»ë\n"
+" -j FIELD (¸Å¤¤ÊýË¡) `-1 FIELD -2 FIELD' ¤ÈƱ¤¸\n"
+" -j1 FIELD (¸Å¤¤ÊýË¡) `-1 FIELD' ¤ÈƱ¤¸\n"
+" -j2 FIELD (¸Å¤¤ÊýË¡) `-2 FIELD' ¤ÈƱ¤¸\n"
+" -o FORMAT ½ÐÎϹԤò FORMAT ¤Î½ñ¼°¤Ë½¾¤Ã¤Æ¹½À®\n"
+" -t CHAR ½ÐÎÏ¡¦ÆþÎϤΥե£¡¼¥ë¥É¶èÀÚ¤êʸ»ú¤È¤·¤Æ CHAR ¤ò»ÈÍÑ\n"
+
+#: src/join.c:153
+#, fuzzy
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v SIDE `-a SIDE' ¤È»÷¤Æ¤¤¤ë¤¬½ÐÎϤò¾¯¤·ÍÞÀ©\n"
+" -1 FIELD ¥Õ¥¡¥¤¥ë1 ¤Î FIELD ¤Ë´ð¤Å¤¤¤Æ·ë¹ç\n"
+" -2 FIELD ¥Õ¥¡¥¤¥ë2 ¤Î FILED ¤Ë´ð¤Å¤¤¤Æ·ë¹ç\n"
+
+#: src/join.c:160
+#, fuzzy
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"-t CHAR ¤¬Í¿¤¨¤é¤ì¤Ê¤¤¾ì¹ç, ¶õÇòʸ»ú¤¬¥Õ¥£¡¼¥ë¥É¤òʬ³ä¤·, ¶õÇò¤½¤Î¤â¤Î¤Ï\n"
+"̵»ë¤µ¤ì¤Þ¤¹. Í¿¤¨¤é¤ì¤¿¾ì¹ç¤Ë¤Ï, ¥Õ¥£¡¼¥ë¥É¤Ïʸ»ú CHAR ¤Ë¤è¤Ã¤Æʬ³ä¤µ¤ì¤Þ"
+"¤¹.\n"
+"FIELD ¤ÎÉôʬ¤Ë¤Ï 1 ¤«¤é¿ô¤¨¤¿¥Õ¥£¡¼¥ë¥É¤Î°ÌÃÖ¤òÍ׵ᤷ¤Þ¤¹.\n"
+"FORMAT ¤ÎÉôʬ¤Ë¤Ï 1¤Ä°Ê¾å¤Î `SIDE.FIELD' ¤ä `0' ¤ò¥«¥ó¥Þ(,)¤ä¶õÇòʸ»ú\n"
+"¤Ç¶èÀڤäƻØÄꤷ¤Þ¤¹. FORMAT ¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï, FILE1 ¤Î»Ä¤µ¤ì¤¿\n"
+"¥Õ¥£¡¼¥ë¥É, FILE2 ¤Î»Ä¤µ¤ì¤¿¥Õ¥£¡¼¥ë¥É, ·ë¹ç¥Õ¥£¡¼¥ë¥É¤ò CHAR ¤Ç¶èÀڤäÆ\n"
+"½ÐÎϤ·¤Þ¤¹.\n"
+
+#: src/join.c:617 src/join.c:812
+#, fuzzy, c-format
+msgid "invalid field number: %s"
+msgstr "¥Õ¥£¡¼¥ë¥É¿ô¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹: `%s'"
+
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "¥Õ¥£¡¼¥ë¥É¤Î»ØÄ̵꤬¸ú¤Ç¤¹: `%s'"
+
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "¥Õ¥£¡¼¥ë¥É¤Î»ØÄê¤Ç¤Î¥Õ¥¡¥¤¥ëÈÖ¹æ¤Ï̵¸ú¤Ç¤¹: %s"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr ""
+
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "Ê£¿ôʸ»ú¤Î¥¿¥Ö `%s'"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr ""
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "ξÊý¤Î¥Õ¥¡¥¤¥ë¤òɸ½àÆþÎϤˤϤǤ­¤Þ¤»¤ó"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"»ÈÍÑË¡: %s [-s SIGNAL | -SIGNAL] PID...\n"
+"¤Þ¤¿¤Ï: %s -l [SIGNAL]...\n"
+"¤Þ¤¿¤Ï: %s -t [SIGNAL]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+"¥×¥í¥»¥¹¤Ë¥·¥°¥Ê¥ë¤òÁ÷¿®, ¤Þ¤¿¤Ï¥·¥°¥Ê¥ë¤ò°ìÍ÷ɽ¼¨.\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+" -s, --signal=SIGNAL, -SIGNAL Á÷¿®¤µ¤ì¤ë¥·¥°¥Ê¥ë¤Î̾Á°¤Þ¤¿¤ÏÈÖ¹æ\n"
+" -l, --list ¥·¥°¥Ê¥ë̾¤ª¤è¤ÓÈÖ¹æ¤Î°ìÍ÷\n"
+" -t, --table ¥·¥°¥Ê¥ë¾ðÊó¤Î°ìÍ÷ɽ¤òɽ¼¨\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+"\n"
+"SIGNAL ¤Ï `HUP' ¤Î¤è¤¦¤Ê¥·¥°¥Ê¥ë̾¤ä `1' ¤Î¤è¤¦¤Ê¥·¥°¥Ê¥ëÈÖ¹æ, ¤Þ¤¿¤Ï\n"
+"¥·¥°¥Ê¥ë¤Ë¤è¤Ã¤Æ½ªÎ»¤µ¤ì¤¿¥×¥í¥»¥¹¤Î½ªÎ»¾õÂ֤Ǥ¹.\n"
+"PID ¤ÏÀ°¿ô¤Ç¤¹. Éé¤Î¾ì¹ç¤Ï¥×¥í¥»¥¹¥°¥ë¡¼¥×¤ò¼¨¤·¤Þ¤¹.\n"
+
+#: src/kill.c:161
+#, fuzzy, c-format
+msgid "%s: invalid signal"
+msgstr "%s: ̵¸ú¤Ê¥×¥í¥»¥¹ÈÖ¹æ¤Ç¤¹"
+
+#: src/kill.c:266
+#, fuzzy, c-format
+msgid "%s: invalid process id"
+msgstr "%s: ̵¸ú¤Ê¥Ñ¥¿¡¼¥ó»ØÄê¤Ç¤¹"
+
+#: src/kill.c:320
+#, fuzzy, c-format
+msgid "invalid option -- %c"
+msgstr "%s: ´Ö°ã¤Ã¤¿¥ª¥×¥·¥ç¥ó -- %c\n"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: Ê£¿ô¤Î¥·¥°¥Ê¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤¹"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "-l ¤Þ¤¿¤Ï -t ¥ª¥×¥·¥ç¥ó¤¬Ê£¿ô»ØÄꤵ¤ì¤Æ¤¤¤Þ¤¹"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "-l ¤Þ¤¿¤Ï -t ¤È¥·¥°¥Ê¥ë¤òÁȤ߹ç¤ï¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr ""
+
+#: src/link.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥Õ¥¡¥¤¥ë]...\n"
+"¤Þ¤¿¤Ï: %s [¥ª¥×¥·¥ç¥ó]\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+
+#: src/link.c:95
+#, fuzzy, c-format
+msgid "cannot create link %s to %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+"%s: ·Ù¹ð: ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤ËÂФ¹¤ë¥Ï¡¼¥É¥ê¥ó¥¯¤ÎºîÀ®¤Ï²ÄÈÂÀ­¤¬¤¢¤ê¤Þ¤»¤ó"
+
+#: src/ln.c:165
+#, fuzzy, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "`%s' ¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
+
+#: src/ln.c:218
+#, fuzzy, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+# %s: ersetze `%s'?
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: %s ¤òÃÖ¤­´¹¤¨¤Þ¤¹¤«(yes/no)? "
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "%2$s ¤Ø¤Î¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯ %1$s ¤òºîÀ®¤·¤Þ¤¹"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "%2$s ¤Ø¤Î¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯ %1$s ¤òºîÀ®¤·¤Þ¤¹"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "%2$s ¤Ø¤Î¥Ï¡¼¥É¥ê¥ó¥¯ %1$s ¤òºîÀ®¤·¤Þ¤¹"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "%2$s ¤Ø¤Î¥Ï¡¼¥É¥ê¥ó¥¯ %1$s ¤òºîÀ®¤·¤Þ¤¹"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "%2$s ¤Ø¤Î¥Ï¡¼¥É¥ê¥ó¥¯ %1$s ¤òºîÀ®¤·¤Þ¤¹"
+
+#: src/ln.c:324
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]¡Å¡Å SOURCE DEST (1st¥Õ¥©¡¼¥Þ¥Ã¥È)\n"
+" Ëô¤Ï %s [¥ª¥×¥·¥ç¥ó]¡Å¡Å SOURCE... ¥Ç¥£¥ì¥¯¥È¥ê (2nd¥Õ¥©¡¼¥Þ¥Ã¥È)\n"
+" Ëô¤Ï %s -d [¥ª¥×¥·¥ç¥ó]¡Å¡Å ¥Ç¥£¥ì¥¯¥È¥ê... (3rd¥Õ¥©¡¼¥Þ¥Ã¥È)\n"
+
+#: src/ln.c:331
+#, fuzzy
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"TARGET ¤Ë»ØÄꤷ¤¿¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¡¢¥ª¥×¥·¥ç¥ó¤Î¥ê¥ó¥¯Ì¾¤Ç¥ê¥ó¥¯¤òºîÀ®¤·¤Þ"
+"¤¹¡£\n"
+"¥ê¥ó¥¯Ì¾¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¡¢TARGET ¤ÈƱ¤¸¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë̾¤Î¥ê¥ó¥¯¤ò¸½ºß¤Î\n"
+"¥Ç¥£¥ì¥¯¥È¥ê¤ËºîÀ®¤·¤Þ¤¹¡£Ê£¿ô¤Î TARGET ¤¬»ØÄꤵ¤ì¤ë¤è¤¦¤ÊÆóÈÖÌܤηÁ¼°¤ò\n"
+"»È¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢ºÇ¸å¤Î°ú¿ô¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£\n"
+"-- ¤³¤Î¾ì¹ç¡¢¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤Ë¤½¤ì¤¾¤ì¤Î TARGET ¥Õ¥¡¥¤¥ëËè¤Ë¥ê¥ó¥¯¤òºîÀ®\n"
+" ¤·¤Þ¤¹¡£\n"
+"Æä˻ØÄ꤬¤Ê¤±¤ì¤Ð¡¢¥Ï¡¼¥É¥ê¥ó¥¯¤òºîÀ®¤¹¤ë¤Î¤Ç¡¢¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤òºîÀ®¤¹"
+"¤ë\n"
+"¾ì¹ç¤Ë¤Ï¡¢--symbolic ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£¥Ï¡¼¥É¥ê¥ó¥¯¤òºîÀ®¤¹¤ë¾ì"
+"¹ç¡¢\n"
+"TARGET ¥Õ¥¡¥¤¥ë¤Ï¥ê¥ó¥¯ºîÀ®»þ¤Ë¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£\n"
+"\n"
+
+#: src/ln.c:342
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup[=CONTROL] ºîÀ®Àè¤Ë´û¸¥Õ¥¡¥¤¥ë¤¬¤¢¤ì¤Ð¥Ð¥Ã¥¯¥¢¥Ã¥×¤¹¤ë\n"
+" -b °ú¿ô¤ò¼è¤é¤Ê¤¤»ö°Ê³°¤Ï --backup ¤ÈƱÅù\n"
+" -d, -F, --directory ¥Ç¥£¥ì¥¯¥È¥ê¤Î¥Ï¡¼¥É¥ê¥ó¥¯¤òºîÀ®\n"
+" (¥¹¡¼¥Ñ¡¼¥æ¡¼¥¶¤Î¤ß)\n"
+" -f, --force ºîÀ®Àè¤Ë´û¸¥Õ¥¡¥¤¥ë¤¬¤¢¤ì¤Ðºï½ü¤¹¤ë\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference »ØÄꤷ¤¿¥Õ¥¡¥¤¥ë¤¬Ä̾ï¥Õ¥¡¥¤¥ë¤À¤Ã¤¿¤È¤·¤Æ"
+"¤â¡¢\n"
+" ¥Ç¥£¥ì¥¯¥È¥ê¤Ø¤Î¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤È¤ß¤Ê¤¹\n"
+" -i, --interactive ºîÀ®Àè¤òºï½ü¤¹¤ëÁ°¤Ë³Îǧ¤ò¤È¤ë\n"
+" -s, --symbolic ¥Ï¡¼¥É¥ê¥ó¥¯¤Ç¤Ê¤¯¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤òºîÀ®¤¹"
+"¤ë\n"
+
+#: src/ln.c:356
+#, fuzzy
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" -S, --suffix=SUFFIX Ä̾ï¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×ÀÜÈø¼­¤ò¾å½ñ¤­¤¹¤ë\n"
+" --target-directory=DIR ¥ê¥ó¥¯¤òºîÀ®¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò DIR ¤Ë»ØÄꤹ¤ë\n"
+" -v, --verbose ¥ê¥ó¥¯ºîÀ®Á°¤Ë¤½¤ì¤¾¤ì¥Õ¥¡¥¤¥ë̾¤òɽ¼¨¤¹¤ë\n"
+
+#: src/ln.c:484
+#, fuzzy, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "%s ¤Ï¸ºß¤·¤Þ¤¹¤¬¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó] [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"¸½ºß¤Î¥æ¡¼¥¶¤Î̾Á°¤òɽ¼¨.\n"
+"\n"
+
+#: src/logname.c:89
+#, fuzzy, c-format
+msgid "no login name"
+msgstr "%s: ̵¸ú¤ÊÈÖ¹æ¤Ç¤¹"
+
+#: src/ls.c:684
+#, fuzzy
+msgid "%b %e %Y"
+msgstr "%b %e %H:%M %Y"
+
+#: src/ls.c:692
+#, fuzzy
+msgid "%b %e %H:%M"
+msgstr "%b %e %H:%M %Y"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "´Ä¶­ÊÑ¿ô QUOTING_STYLE ¤ÎÃÍ(%s)¤¬ÉÔŬÀڤʤΤÇ̵»ë¤·¤Þ¤¹"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "´Ä¶­ÊÑ¿ô COLUMNS ¤ÎÃÍ(%s) ¤¬ÉÔŬÀڤʹÔÉý¤Ê¤Î¤Ç̵»ë¤·¤Þ¤¹"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr "´Ä¶­ÊÑ¿ô TABSIZE ¤ÎÃÍ(%s) ¤¬ÉÔŬÀڤʥ¿¥Ö¥µ¥¤¥º¤Ê¤Î¤Ç̵»ë¤·¤Þ¤¹"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, fuzzy, c-format
+msgid "invalid line width: %s"
+msgstr "Éý `%s' ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/ls.c:1704
+#, fuzzy, c-format
+msgid "invalid tab size: %s"
+msgstr "·¿»ØÄ꤬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹ `%s'"
+
+#: src/ls.c:1885
+#, fuzzy, c-format
+msgid "invalid time style format %s"
+msgstr "`%2$s' ¤ËÂФ¹¤ë°ú¿ô %1$s ¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
+
+#: src/ls.c:2229
+#, fuzzy, c-format
+msgid "unrecognized prefix: %s"
+msgstr "¥ª¥×¥·¥ç¥ó `-%c' ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "´Ä¶­ÊÑ¿ô LS_COLORS ¤ÎÃͤò²ò¼á¤Ç¤­¤Þ¤»¤ó"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, fuzzy, c-format
+msgid "cannot open directory %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/ls.c:2344
+#, fuzzy, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "%s ¤ËÂФ¹¤ë¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿¤òºÆÇÛÃ֤Ǥ­¤Þ¤»¤ó"
+
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, fuzzy, c-format
+msgid "reading directory %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/ls.c:2410
+#, fuzzy, c-format
+msgid "closing directory %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ë°ÜÆ°¤Ç¤­¤Þ¤»¤ó"
+
+#: src/ls.c:2918
+#, fuzzy, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "Èæ³Ó¤·¤¿Ê¸»úÎó¤Ï %s ¤È %s ¤Ç¤¹."
+
+#: src/ls.c:4277
+#, fuzzy
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤Î¾ðÊó¤ò¥ê¥¹¥È½ÐÎϤ¹¤ë(»ØÄê¤Ê¤±¤ì¤Ð¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê)¡£\n"
+"-cftuSUX ¤ä --sort ¤Î»ØÄ꤬¤Ê¤¯¤Æ¤â¡¢¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤ÇÀ°Î󤹤롣\n"
+"\n"
+
+#: src/ls.c:4285
+#, fuzzy
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all '.' ¤Ç»Ï¤Þ¤ë±£¤·¥Õ¥¡¥¤¥ë¤âɽ¼¨¤¹¤ë\n"
+" -A, --almost-all ±£¤·¥Õ¥¡¥¤¥ë¤òɽ¼¨¤¹¤ë¤¬¡¢°ÅÌۤΠ'.' ¤ä '..'\n"
+" ¤Ïɽ¼¨¤·¤Ê¤¤\n"
+" -b, --escape Èóɽ¼¨Ê¸»ú¤Ï 8 ¿Ê¿ô¥¨¥¹¥±¡¼¥×¤·¤Æɽ¼¨¤¹¤ë\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=SIZE ¥Ö¥í¥Ã¥¯¥µ¥¤¥º¤ò SIZE ¤È¤¹¤ë\n"
+" -B, --ignore-backups ËöÈø¤Ë '~' ¤¬¤Ä¤¯¥Õ¥¡¥¤¥ë¤ò¥ê¥¹¥Èɽ¼¨¤·¤Ê¤¤\n"
+" -c -lt ÉÕ¤­: ctime(ºÇ½ª¹¹¿·»þ¹ï) ¤Ç¥½¡¼¥È¤·¤Æɽ"
+"¼¨\n"
+" -l ÉÕ¤­: ctime ¤òɽ¼¨¤¹¤ë¡£Ì¾Á°¤Ç¥½¡¼¥È¤¹¤ë\n"
+" ¤½¤Î¾: ctime ¤Ç¥½¡¼¥È¤¹¤ë\n"
+
+#: src/ls.c:4299
+#, fuzzy
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C ¹àÌܤò¿âľÊý¸þ¤Ë¥ê¥¹¥È¤¹¤ë\n"
+" --color[=WHEN] ¥Õ¥¡¥¤¥ë¥¿¥¤¥×¤Ë±þ¤¸¤Æ¿§ÉÕ¤­É½¼¨¤¹¤ë¡£\n"
+" WHEN ¤Ë¤Ï `never', `always' Ëô¤Ï `auto' ¤ò»Ø"
+"Äê\n"
+" -d, --directory ¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¿È¤Ç¤Ï¤Ê¤¯¹àÌܼ«¿È¤òɽ¼¨\n"
+" -D, --dired Emacs ¤Î dired ¥â¡¼¥É¤ÎÍͤËɽ¼¨¤¹¤ë\n"
+
+#: src/ls.c:4307
+#, fuzzy
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f À°Î󤷤ʤ¤¡£-aU ¤¬Í­¸ú¡¢-lst ¤¬Ìµ¸ú¤Ë¤Ê¤ë\n"
+" -F, --classify ¹àÌܤ˥ե¡¥¤¥ëɸ¼± (*/=@| ¤ÎÆâ°ì¤Ä) ¤òÉÕ¤±Â­¤¹\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time -l --time-style=full-iso ¤ÈƱÍÍ\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+#, fuzzy
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all 0 ¥Ö¥í¥Ã¥¯¤·¤«»ý¤¿¤Ê¤¤¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò´Þ¤á¤ë\n"
+" --block-size=SIZE SIZE ¥Ð¥¤¥È¤Î¥Ö¥í¥Ã¥¯¤Çɽ¼¨¤¹¤ë\n"
+" -h, --human-readable ¿Í´Ö¤¬Æɤߤ䤹¤¤·Á¼°¤Çɽ¼¨¤¹¤ë (Îã: 1K 234M 2G)\n"
+" -H, --si Ʊ¾å¡£Ã¢¤·Ã±°Ì¤Ï 1024 ¤Ç¤Ï¤Ê¤¯ 1000 ÇÜ\n"
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+
+#: src/ls.c:4337
+#, fuzzy
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=WORD ¥Õ¥¡¥¤¥ëɸ¼±¤Î·Á¼°¤ò WORD ¤Ë¤·¤Æ¹àÌܤËÉÕ¤±Â­¤¹\n"
+" none (default), classify (-F), file-type (-"
+"p)\n"
+" -i, --inode ¥Õ¥¡¥¤¥ëËè¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹ÈÖ¹æ¤òɽ¼¨¤¹¤ë\n"
+" -I, --ignore=PATTERN PATTERN ¤Ë°ìÃפ¹¤ë¹àÌܤò¥ê¥¹¥Èɽ¼¨¤·¤Ê¤¤\n"
+" -k, --kilobytes --block-size=1024 ¤ÈƱÍÍ\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l ¾ÜºÙ¥ê¥¹¥È·Á¼°¤òɽ¼¨¤¹¤ë\n"
+" -L, --dereference ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Î¥Õ¥¡¥¤¥ë¾ðÊó¤òɽ¼¨¤¹¤ë¤È¤­"
+"¤Ï\n"
+" ¥ê¥ó¥¯¤½¤Î¤â¤Î¤Ç¤Ï¤Ê¤¯¥ê¥ó¥¯»²¾ÈÀè¤Î¥Õ¥¡¥¤¥ë\n"
+" ¾ðÊó¤òɽ¼¨¤¹¤ë\n"
+" -m ¹àÌܤΥꥹ¥È¤ò¥«¥ó¥Þ¤Ç¶èÀڤꡢ°ì¹Ô¤ËµÍ¤á¹þ¤à\n"
+
+#: src/ls.c:4352
+#, fuzzy
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid -l ¤ÈƱÍͤÀ¤¬¡¢UID ¤ä GID ¤Ï¿ôÃͤÇɽµ­¤¹¤ë\n"
+" -N, --literal ÁǤιàÌÜ̾¤òɽ¼¨¤¹¤ë\n"
+" (Î㤨¤Ð¡¢À©¸æʸ»úÅù¤òÆÃÊÌ°·¤¤¤·¤Ê¤¤)\n"
+" -o -l ¤ÈƱÍͤÀ¤¬¡¢¥°¥ë¡¼¥×¾ðÊó¤òɽ¼¨¤·¤Ê¤¤\n"
+" -p, --file-type ¹àÌܤ˥ե¡¥¤¥ëɸ¼± (/=@| ¤ÎÆâ°ì¤Ä) ¤òÉÕ¤±Â­¤¹\n"
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars ɽ¼¨ÉÔ²Äǽ¤Êʸ»ú¤ò ? ¤ËÃÖ¤­´¹¤¨¤ë\n"
+" --show-control-chars ɽ¼¨ÉÔ²Äǽ¤Êʸ»ú¤ò¤½¤Î¤Þ¤Þɽ¼¨ (¥×¥í¥°¥é¥à¤¬\n"
+" `ls' ¤Ç¤Ê¤«¤Ã¤¿¤ê½ÐÎϤ¬Ã¼Ëö¤Ç¤Ê¤¤¾ì¹ç¤Î½é´ü¾õ"
+"ÂÖ)\n"
+" -Q, --quote-name ¥Õ¥¡¥¤¥ë̾¤ò¥À¥Ö¥ë¥¯¥©¡¼¥È(\")¤Ç°Ï¤à\n"
+" --quoting-style=WORD ¹àÌÜ̾¤Î¥¯¥©¡¼¥È¤Ë WORD ʸ»ú¤ò»È¤¦:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+
+#: src/ls.c:4368
+#, fuzzy
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse ¥½¡¼¥È½ç¤òȿž¤µ¤»¤ë\n"
+" -R, --recursive ¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤òºÆµ¢Åª¤Ë¥ê¥¹¥È¤¹¤ë\n"
+" -s, --size ¥Ö¥í¥Ã¥¯Ã±°Ì¤Ç³Æ¥Õ¥¡¥¤¥ë¥µ¥¤¥º¤òɽ¼¨¤¹¤ë\n"
+
+#: src/ls.c:4373
+#, fuzzy
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S ¥Õ¥¡¥¤¥ë¥µ¥¤¥º¤Ç¥½¡¼¥È¤¹¤ë\n"
+" --sort=WORD extension -X, none -U, size -S, time -t,\n"
+" version -v\n"
+" status -c, time -t, atime -u, access -u, use -"
+"u\n"
+" --time=WORD ½¤Àµ»þ¹ï¤Ç¤Ï¤Ê¤¯ WORD ¤Î»þ¹ï¤ò»È¤¦\n"
+" atime, access, use, ctime Ëô¤Ï status\n"
+" »ØÄꤷ¤¿»þ¹ï¤Ï --sort=time ¤Î¥­¡¼¤È¤·¤Æ»È¤ï¤ì"
+"¤ë\n"
+
+#: src/ls.c:4382
+#, fuzzy
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=WORD WORD ·Á¼°¤ò»È¤Ã¤Æ»þ¹ï¤òɽ¼¨¤¹¤ë\n"
+" full-iso, iso, locale, posix-iso\n"
+" -t ½¤Àµ»þ¹ï¤Ç¥½¡¼¥È¤¹¤ë\n"
+" -T, --tabsize=COLS ¥¿¥ÖÉý¤ò 8 ¤Ç¤Ï¤Ê¤¯ COLS ¤È¤ß¤Ê¤¹\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u -lt ¤È»ÈÍÑ: ¥¢¥¯¥»¥¹»þ¹ï¤Ç¥½¡¼¥È¡¢É½¼¨¤¹¤ë\n"
+" -l ¤È»ÈÍÑ: ¥¢¥¯¥»¥¹»þ¹ï¤òɽ¼¨¡¢Ì¾Á°¤Ç¥½¡¼¥È\n"
+" ¤½¤Î¾: ¥¢¥¯¥»¥¹»þ¹ï¤Ç¥½¡¼¥È\n"
+" -U ¥½¡¼¥È¤·¤Ê¤¤ -- ¥Ç¥£¥ì¥¯¥È¥êÆâ¤Î½ç¤Ç¹àÌܤòɽ¼¨\n"
+" -v ¥Ð¡¼¥¸¥ç¥ó¤Ç¥½¡¼¥È\n"
+
+#: src/ls.c:4402
+#, fuzzy
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -f, --fields=LIST LIST ¤Ë»ØÄꤷ¤¿¥Õ¥£¡¼¥ë¥É¤À¤±¤ò½ÐÎÏ; -s ¥ª¥×¥·¥ç"
+"¥ó\n"
+" ¤¬»ØÄꤵ¤ì¤Ê¤±¤ì¤Ð, ¶èÀÚ¤êʸ»ú¤ò´Þ¤à¹Ô¤âɽ¼¨\n"
+" -n (̵»ë)\n"
+
+#: src/ls.c:4414
+#, fuzzy
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"Æä˻ØÄ꤬¤Ê¤±¤ì¤Ð color ¤Ï¥Õ¥¡¥¤¥ë·¿¤Ë¤è¤Ã¤Æ¶èÊ̤µ¤ì¤Þ¤»¤ó¡£¤³¤ì¤Ï\n"
+"--color=none ¤ò»È¤¦¤Î¤ÈƱ¤¸¤Ç¤¹¡£WHEN °ú¿ô¤ò»ØÄꤻ¤º¤Ë --color ¥ª¥×¥·¥ç¥ó¤ò\n"
+"»È¤¦¤È --color=always ¤ò»È¤¦¤Î¤ÈƱÅù¤Ç¤¹¡£--color=auto ¤ò»È¤¨¤Ð¡¢Àܳ¤µ¤ì¤¿\n"
+"üËö(tty)¤Îɸ½à½ÐÎϤˤΤߥ«¥é¡¼¥³¡¼¥É¤ò½ÐÎϤ·¤Þ¤¹¡£\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#: src/md5sum.c:150
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó] [¥Õ¥¡¥¤¥ë]...\n"
+" Ëô¤Ï: %s [¥ª¥×¥·¥ç¥ó] --check [¥Õ¥¡¥¤¥ë]\n"
+"%s (%d ¥Ó¥Ã¥È) ¥Á¥§¥Ã¥¯¥µ¥à¤Îɽ¼¨, ¤Þ¤¿¤Ï¾È¹ç.\n"
+"¥Õ¥¡¥¤¥ë¤Î»ØÄ꤬¤Ê¤«¤Ã¤¿¤ê, - ¤Ç¤¢¤Ã¤¿¾ì¹ç, ɸ½àÆþÎϤ«¤éÆɤ߹þ¤ß¤Þ¤¹.\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+"\n"
+" -B, --binary ¥³¥ó¥½¡¼¥ë¥Ç¥Ð¥¤¥¹¤Ë¥Ð¥¤¥Ê¥ê¤Ç½ÐÎÏ\n"
+"\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+#, fuzzy
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"°Ê²¼¤Î 2¤Ä¤Î¥ª¥×¥·¥ç¥ó¤Ï¥Á¥§¥Ã¥¯¥µ¥à¤Î³Îǧ¤ò¹Ô¤¦ºÝ¤Ë¤Î¤ßÍ­±×\n"
+" --status ²¿¤âɽ¼¨¤»¤º¤Ë¥¹¥Æ¡¼¥¿¥¹¥³¡¼¥É¤Ë¤è¤Ã¤Æ, À®¸ù¤«\n"
+" ¤É¤¦¤«¤ò¼¨¤¹\n"
+" -w, --warn ¥Á¥§¥Ã¥¯¥µ¥à¹Ô¤¬ÉÔŬÀڤʽñ¼°¤Î¾ì¹ç¤Ë·Ù¹ð\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"¥Á¥§¥Ã¥¯¥µ¥à¤Ï %s ¤Ëµ­¤µ¤ì¤Æ¤¤¤ëÄ̤ê¤Ë·×»»¤µ¤ì¤Þ¤¹. ¾È¹ç¤ÎºÝ¤ËÆþÎÏ\n"
+"¤¹¤ë¥Õ¥¡¥¤¥ë¤Ï, ¤³¤Î¥×¥í¥°¥é¥à¤Ë¤è¤Ã¤Æ½ÐÎϤµ¤ì¤¿·Á¼°¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó.\n"
+"Æä˥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¤Ç¼Â¹Ô¤·¤¿¾ì¹ç¤Ë¤Ï, ¤½¤ì¤¾¤ì¤Î¥Õ¥¡¥¤¥ëËè¤Ë\n"
+"¥Á¥§¥Ã¥¯¥µ¥à, ¥¿¥¤¥×¤Ë´Ø¤¹¤ë°õ(¥Ð¥¤¥Ê¥ê¤Ë¤Ï `*', ¥Æ¥­¥¹¥È¤Ë¤Ï ` '), \n"
+"µÚ¤Ó¥Õ¥¡¥¤¥ë̾¤òɽ¼¨¤·¤Þ¤¹.\n"
+
+#: src/md5sum.c:459
+#, fuzzy, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: %s ¥Á¥§¥Ã¥¯¥µ¥à¤È¤·¤ÆŬÀڤʽñ¼°¤Î¹Ô¤¬¤¢¤ê¤Þ¤»¤ó"
+
+#: src/md5sum.c:481
+#, fuzzy, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %lu: %s ¥Á¥§¥Ã¥¯¥µ¥à¤Î¹Ô¤È¤·¤ÆÉÔŬÀڤʽñ¼°¤Ç¤¹"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: ¥ª¡¼¥×¥ó¤Þ¤¿¤ÏÆɤ߹þ¤ß¤Ë¼ºÇÔ¤·¤Þ¤·¤¿\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "¼ºÇÔ"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "´°Î»"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: Æɤ߹þ¤ß¥¨¥é¡¼"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: %s ¥Á¥§¥Ã¥¯¥µ¥à¤È¤·¤ÆŬÀڤʽñ¼°¤Î¹Ô¤¬¤¢¤ê¤Þ¤»¤ó"
+
+#: src/md5sum.c:562
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "·Ù¹ð: %2$d ¤Î¤¦¤Á %1$d ¸Ä¤Î%3$s¤òÆɤá¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: src/md5sum.c:574
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "·Ù¹ð: %2$d ¤ÎÆâ %1$d ¤Î%3$s¤¬°ìÃפ·¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr "--binary ¤È --text ¥ª¥×¥·¥ç¥ó¤Ï¥Á¥§¥Ã¥¯¥µ¥à¤Î³Îǧ»þ¤Ë¤Ï̵°ÕÌ£¤Ç¤¹"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "--status ¥ª¥×¥·¥ç¥ó¤Ï¥Á¥§¥Ã¥¯¥µ¥à¤Î³Îǧ»þ¤Î¤ß°ÕÌ£¤ò»ý¤Á¤Þ¤¹"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "--warn ¥ª¥×¥·¥ç¥ó¤Ï¥Á¥§¥Ã¥¯¥µ¥à¤Î³Îǧ»þ¤Î¤ß°ÕÌ£¤ò»ý¤Á¤Þ¤¹"
+
+#: src/mkdir.c:59
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó] [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®¤¹¤ë¡£¤¿¤À¤·´û¤Ë¥Ç¥£¥ì¥¯¥È¥ê¤¬¤¢¤ì¤Ð²¿¤â¤·¤Ê¤¤¡£\n"
+"\n"
+
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+" -m, --mode=MODE rwxrwxrwx - umask ¤Ç¤Ê¤¯(chmod ¤Î¤è¤¦¤Ë)¥¢¥¯¥»¥¹¸¢¤òÀß"
+"Äê\n"
+" -p, --parents ´û¸¤Ç¤¢¤Ã¤Æ¤â¥¨¥é¡¼¤È¤»¤º¡¢É¬ÍפȤʤë¥Ç¥£¥ì¥¯¥È¥ê¤âºî"
+"À®\n"
+" -v, --verbose ¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®¤¹¤ëÅ٤˥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ¹¤ë\n"
+
+#: src/mkdir.c:168
+#, fuzzy, c-format
+msgid "created directory %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/mkfifo.c:54
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó] [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"Í¿¤¨¤é¤ì¤¿ `̾Á°' ¤Ç̾Á°ÉÕ¤­¥Ñ¥¤¥× (FIFO) ¤òºîÀ®¤¹¤ë¡£\n"
+"\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+" -m, --mode=MODE ¥¢¥¯¥»¥¹¸¢¤ò a=rw - umask ¤Ç¤Ï¤Ê¤¯(chmod ¤ÎÍͤË)»ØÄꤹ"
+"¤ë\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, fuzzy, c-format
+msgid "invalid mode"
+msgstr "%s: ̵¸ú¤ÊÈÖ¹æɽµ­¤Ç¤¹"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... SET1 [SET2]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"Í¿¤¨¤é¤ì¤¿ TYPE ¤Î¥¹¥Ú¥·¥ã¥ë¥Õ¥¡¥¤¥ë NAME ¤òºîÀ®¤¹¤ë¡£\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+
+#: src/mknod.c:76
+#, fuzzy
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+"MAJOR ¤È MINOR ¤Ï TYPE p ¤ËÂФ·¤Æ¤Ï¶Ø¤¸¤é¤Þ¤¹¡£¤½¤ì°Ê³°¤À¤Èɬ¿Ü¤Ç¤¹¡£\n"
+"TYPE¤Î»ØÄê¤Ï°Ê²¼¤ÎÄ̤ê:\n"
+"\n"
+" b ¥Ö¥í¥Ã¥¯·¿(¥Ð¥Ã¥Õ¥¡¥ê¥ó¥°¤µ¤ì¤ë)¥¹¥Ú¥·¥ã¥ë¥Õ¥¡¥¤¥ë¤ÎºîÀ®\n"
+" c, u ¥­¥ã¥é¥¯¥¿·¿(¥Ð¥Ã¥Õ¥¡¥ê¥ó¥°¤µ¤ì¤Ê¤¤)¥¹¥Ú¥·¥ã¥ë¥Õ¥¡¥¤¥ë¤ÎºîÀ®\n"
+" p ̾Á°¤Ä¤­¥Ñ¥¤¥×¤ÎºîÀ®\n"
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"¥¹¥Ú¥·¥ã¥ë¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë»þ¤Ï¡¢¥á¥¸¥ã¡¼µÚ¤Ó¥Þ¥¤¥Ê¡¼¥Ç¥Ð¥¤¥¹ÈÖ¹æ¤ò\n"
+"»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
+
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "³«»Ï¹ÔÈֹ椬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó: `%s'"
+
+#: src/mknod.c:167
+#, fuzzy, c-format
+msgid "block special files not supported"
+msgstr "¥Ö¥í¥Ã¥¯¥¹¥Ú¥·¥ã¥ë¥Õ¥¡¥¤¥ë"
+
+#: src/mknod.c:176
+#, fuzzy, c-format
+msgid "character special files not supported"
+msgstr "¥­¥ã¥é¥¯¥¿¥¹¥Ú¥·¥ã¥ë¥Õ¥¡¥¤¥ë"
+
+#: src/mknod.c:192
+#, fuzzy, c-format
+msgid "invalid major device number %s"
+msgstr "³«»Ï¹ÔÈֹ椬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó: `%s'"
+
+#: src/mknod.c:197
+#, fuzzy, c-format
+msgid "invalid minor device number %s"
+msgstr "³«»Ï¹ÔÈֹ椬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó: `%s'"
+
+#: src/mknod.c:202
+#, fuzzy, c-format
+msgid "invalid device %s %s"
+msgstr "`%2$s' ¤ËÂФ¹¤ë°ú¿ô %1$s ¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
+
+#: src/mknod.c:216
+#, fuzzy, c-format
+msgid "invalid device type %s"
+msgstr "`%2$s' ¤ËÂФ¹¤ë°ú¿ô %1$s ¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"¥Õ¥¡¥¤¥ë̾¤ÎÊѹ¹¡¢¤â¤·¤¯¤ÏÊ£¿ô¤Î¥Õ¥¡¥¤¥ë¤ò¥Ç¥£¥ì¥¯¥È¥ê¤Ø°ÜÆ°¤·¤Þ¤¹¡£\n"
+"\n"
+
+#: src/mv.c:297
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup[=CONTROL] ¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤¹¤ëºÝ¡¢¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¤È¤ë\n"
+" -b --backup ƱÍͤÀ¤¬¡¢°ú¿ô¤ò¼õ¤±ÉÕ¤±¤Ê¤¤\n"
+" -f, --force ¾å½ñ¤­¤ÎÁ°¤Ë³Îǧ¤ò¤È¤é¤Ê¤¤¡£--reply=yes ƱÅù\n"
+" -i, --interactive ¾å½ñ¤­¤ÎÁ°¤Ë³Îǧ¤ò¤È¤ë¡£--reply=query ƱÅù\n"
+
+#: src/mv.c:303
+#, fuzzy
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --reply={yes,no,query} °ÜÆ°Àè¤Î´û¸¥Õ¥¡¥¤¥ë¤Ë´Ø¤¹¤ëÌ䤤¹ç¤ï¤»¤Î\n"
+" °·¤¤Êý¤ò»ØÄꤹ¤ë\n"
+" --strip-trailing-slashes ³Æ SOURCE °ú¿ô¤Î;ʬ¤ÊËöÈø¥¹¥é¥Ã¥·¥å¤ò¼è¤ê½ü"
+"¤¯\n"
+" -S, --suffix=SUFFIX Ä̾ï¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×ÀÜÈø¼­¤ò¾å½ñ¤­¤¹¤ë\n"
+
+#: src/mv.c:308
+#, fuzzy
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --target-directory=DIR Á´ SOURCE °ú¿ô¤ò DIR ¥Ç¥£¥ì¥¯¥È¥ê¤Ë°ÜÆ°¤¹¤ë\n"
+" -u, --update SOURCE ¥Õ¥¡¥¤¥ë¤¬°ÜÆ°Àè¤Î¥Õ¥¡¥¤¥ë¤è¤ê¿·¤·¤¤"
+"¤«¡¢\n"
+" °ÜÆ°Àè¤ËƱ̾¥Õ¥¡¥¤¥ë¤¬Ìµ¤¤¤È¤­¤À¤±°ÜÆ°¤¹¤ë\n"
+" -v, --verbose ¼Â¹Ô¤µ¤ì¤¿¤³¤È¤òÀâÌÀ¤¹¤ë\n"
+
+#: src/nice.c:76
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó] [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "`%2$s' ¤ËÂФ¹¤ë°ú¿ô %1$s ¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "(°ú¿ô¤ò»ý¤Ä) ¥³¥Þ¥ó¥É¤òÍ¿¤¨¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó"
+
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "°ì»þ¥Õ¥¡¥¤¥ë¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "Æü»þ¤òÀßÄê¤Ç¤­¤Þ¤»¤ó"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"»ØÄꤷ¤¿¤½¤ì¤¾¤ì¤Î¥Õ¥¡¥¤¥ë¤Ë¹ÔÈÖ¹æ¤òÉÕ¤±Â­¤·¤Æ, ɸ½à½ÐÎϤ˽ñ¤­¹þ¤ß¤Þ¤¹.\n"
+"¥Õ¥¡¥¤¥ë¤Î»ØÄ̵꤬¤¤¤«, `-' ¤ò»ØÄꤷ¤¿¾ì¹ç¤Ë¤Ï, ɸ½àÆþÎϤòÆɤ߹þ¤ß¤Þ¤¹.\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=STYLE ËÜʸ¤Î¹ÔÈÖ¹æ¤ò STYLE ¤Î·Á¼°¤Ë\n"
+" -d, --section-delimiter=CC ÏÀÍý¥Ú¡¼¥¸¤Î¶èÀڤ국¹æ¤Ë CC ¤òÍøÍÑ\n"
+" -f, --footer-numbering=STYLE ¥Õ¥Ã¥¿¤Î¹ÔÈÖ¹æ¤ò STYLE ¤Î·Á¼°¤Ë\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=STYLE ¥Ø¥Ã¥À¤Î¹ÔÈÖ¹æ¤ò STYLE ¤Î·Á¼°¤Ë\n"
+" -i, --page-increment=NUMBER ¹ÔÈÖ¹æ¤ÎÁýʬ¤ò NUMBER ¤Ë\n"
+" -l, --join-blank-lines=NUMBER NUMBER ¸Ä°Ê²¼¤Î¶õ¹Ô¤òÅ»¤á¤Æ°ì¹Ô¤È\n"
+" ¸«¤Ê¤·¤Æ¥«¥¦¥ó¥È\n"
+" -n, --number-format=FORMAT ¹ÔÈÖ¹æ¤Î½ÐÎÏ·Á¼°¤ò FORMAT ¤Ë\n"
+" -p, --no-renumber ÏÀÍý¥Ú¡¼¥¸¤´¤È¤Ë¹ÔÈÖ¹æ¤Î¥«¥¦¥ó¥¿¤ò\n"
+" ¥ê¥»¥Ã¥È¤·¤Ê¤¤\n"
+" -s, --number-separator=STRING (²Äǽ¤Ê¾ì¹ç)¹ÔÈÖ¹æ¤Î¸å¤í¤Ë STRING\n"
+" ¤òÉÕ¤±Â­¤¹\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=NUMBER ³ÆÏÀÍý¥Ú¡¼¥¸¤ÎºÇ½é¤Î¹ÔÈÖ¹æ¤ò NUMBER ¤Ë\n"
+" -w, --number-width=NUMBER ¹ÔÈÖ¹æ¤ËÍøÍѤ¹¤ëʸ»úÉý¤ò NUMBER ¤Ë\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"¥ª¥×¥·¥ç¥ó¤Î»ØÄ̵꤬¤±¤ì¤Ð, ¥×¥í¥°¥é¥à¤Ï -v1 -i1 -l1 -sTAB -w6 -nrn, -hn,\n"
+"-bt, -fn ¤È¤·¤ÆÆ°ºî¤·¤Þ¤¹. CC ÃÍ¤Ï ÏÀÍý¥Ú¡¼¥¸¤Î¶èÀڤ국¹æ¤ò»ØÄꤹ¤ë¤¿¤á¤Î\n"
+"2 ¤Ä¤Îʸ»ú¤Ç¤¹. 2¤Ä¤á¤Îʸ»ú¤¬»ØÄꤵ¤ì¤Ê¤¤¾ì¹ç¤Ë¤Ï, °ÅÌÛ¤Ë : ¤¬»ØÄꤵ¤ì¤Þ¤¹.\n"
+"`\\\\' ¤ò »ØÄꤷ¤¿¤±¤ì¤Ð, `\\\\' ¤ò»È¤¦¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤.\n"
+"STYLE ¤Ï, °Ê²¼¤Î¤¦¤Á¤Î 1 ¤Ä¤ò»ØÄꤷ¤Þ¤¹.\n"
+
+#: src/nl.c:214
+#, fuzzy
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a ¤¹¤Ù¤Æ¤Î¹ÔÈÖ¹æ\n"
+" t ¶õ¹Ô°Ê³°¤Î¹ÔÈÖ¹æ\n"
+" n ¶õ¹Ô¤Î¹ÔÈÖ¹æ\n"
+" pREGEXP Àµµ¬É½¸½ REGEXP ¤È¤Î°ìÃפò´Þ¤à¹Ô¤À¤±¤Î¹ÔÈÖ¹æ\n"
+"\n"
+"FORMAT ¤Ë¤Ï, °Ê²¼¤«¤é°ì¤Ä»ØÄꤷ¤Þ¤¹:\n"
+"\n"
+" ln º¸Â·¤¨, ¥¼¥í¤òËä¤á¤Ê¤¤\n"
+" rn ±¦Â·¤¨, ¥¼¥í¤òËä¤á¤Ê¤¤\n"
+" rz ±¦Â·¤¨, ¥¼¥í¤òËä¤á¤ë\n"
+"\n"
+
+#: src/nl.c:281
+#, fuzzy, c-format
+msgid "line number overflow"
+msgstr "¥Õ¥£¡¼¥ë¥ÉÈֹ椬¥¼¥í¤Ç¤¹"
+
+#: src/nl.c:479
+#, fuzzy, c-format
+msgid "invalid header numbering style: %s"
+msgstr "¥Õ¥£¡¼¥ë¥É¿ô¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹: `%s'"
+
+#: src/nl.c:487
+#, fuzzy, c-format
+msgid "invalid body numbering style: %s"
+msgstr "%s: ̵¸ú¤ÊÈÖ¹æɽµ­¤Ç¤¹"
+
+#: src/nl.c:495
+#, fuzzy, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "¥Õ¥£¡¼¥ë¥É¤Î»ØÄê¤Ç¤Î¥Õ¥¡¥¤¥ëÈÖ¹æ¤Ï̵¸ú¤Ç¤¹: %s"
+
+#: src/nl.c:504
+#, fuzzy, c-format
+msgid "invalid starting line number: %s"
+msgstr "³«»Ï¹ÔÈֹ椬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó: `%s'"
+
+#: src/nl.c:513
+#, fuzzy, c-format
+msgid "invalid line number increment: %s"
+msgstr "¹ÔÈÖ¹æ¤ÎÁýʬ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó: `%s'"
+
+#: src/nl.c:525
+#, fuzzy, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "¶õ¹Ô¤Î¹ÔÈֹ椬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó: `%s'"
+
+#: src/nl.c:539
+#, fuzzy, c-format
+msgid "invalid line number field width: %s"
+msgstr "¥Õ¥£¡¼¥ë¥ÉÉý¤Î»ØÄê¹ÔÈֹ椬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó: `%s'"
+
+#: src/nl.c:558
+#, fuzzy, c-format
+msgid "invalid line numbering format: %s"
+msgstr "¹ÔÈÖ¹æ¤ÎÁýʬ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó: `%s'"
+
+#: src/nohup.c:57
+#, fuzzy, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥Õ¥¡¥¤¥ë]...\n"
+"¤Þ¤¿¤Ï: %s [¥ª¥×¥·¥ç¥ó]\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "°ú¿ô¤¬Â¿¤¹¤®¤Þ¤¹"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, fuzzy, c-format
+msgid "failed to open %s"
+msgstr "%s ¤Î¥¿¥¤¥à¥¹¥¿¥ó¥×¤òÊݸÃæ"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr ""
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr ""
+
+#: src/od.c:307
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]...\n"
+" Ëô¤Ï: %s --traditional [¥Õ¥¡¥¤¥ë] [[+]¥ª¥Õ¥»¥Ã¥È [[+]¥é¥Ù¥ë]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"¥Õ¥¡¥¤¥ë¤ÎÌÀ³Î¤Êɽ¸½¤òɸ½à½ÐÎϤ˽ñ¤­¹þ¤à. Æä˻ØÄ꤬¤Ê¤±¤ì¤Ð, 8 ¿Ê¿ô¤Ç\n"
+"ɽ¸½¤·¤Þ¤¹. ¥Õ¥¡¥¤¥ë»ØÄꤵ¤ì¤Ê¤¤, ¤¢¤ë¤¤¤Ï `-' ¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤Ë¤Ï, \n"
+"ɸ½àÆþÎϤòÆɤ߹þ¤ß¤Þ¤¹.\n"
+"\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr "Ť¤¥ª¥×¥·¥ç¥ó¤Ëɬ¿Ü¤Î°ú¿ô¤Ïû¤¤¥ª¥×¥·¥ç¥ó¤Ë¤âɬ¿Ü¤Ç¤¹.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=RADIX ¥Õ¥¡¥¤¥ë¥ª¥Õ¥»¥Ã¥È¤Îɽ¼¨·Á¼°¤ò»ØÄê\n"
+" -j, --skip-bytes=BYTES ¥Õ¥¡¥¤¥ë¤ÎÀèƬ¤è¤ê BYTES ʬ¥¹¥­¥Ã¥×\n"
+
+#: src/od.c:327
+#, fuzzy
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=BYTES ¥À¥ó¥×¤¹¤ë¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤ò BYTES ¤ËÀ©¸Â\n"
+" -s, --strings[=BYTES] ɽ¼¨²Äǽ¤Ê BYTES °Ê¾å¤ÎŤµ¤ò»ý¤Äʸ»úÎó¤ò½ÐÎÏ\n"
+" -t, --format=TYPE ½ÐÎÏ¥Õ¥©¡¼¥Þ¥Ã¥È¤ò»ØÄê\n"
+" -v, --output-duplicates `*' ¥Þ¡¼¥¯¤Ç½ÐÎϹԤò¾Êά¤¹¤ë¤Î¤ò»ß¤á¤µ¤»¤ë\n"
+" -w, --width[=BYTES] °ì¹Ô¤¢¤¿¤ê¤Î½ÐÎϥХ¤¥È¿ô¤ò»ØÄê\n"
+" --traditional °ú¿ô¤Î·Á¼°¤ò¸Å¤¤ POSIX ¤Î·Á¼°¤È¤·¤Æ²ò¼á\n"
+
+#: src/od.c:337
+#, fuzzy
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"ÀΤ«¤é¤Î½ñ¼°»ØÄê¤ò, º®¹ç¤µ¤»¤Æ¤â¹½¤¤¤Þ¤»¤ó.\n"
+"»ØÄꤷ¤¿½ç¤Ë¤½¤ì¤¾¤ì¤Î·Á¼°¤Çɽ¼¨¤µ¤ì¤Þ¤¹.\n"
+" -a ¥ª¥×¥·¥ç¥ó -t a ¤ÈƱ¤¸, ʸ»ú̾¤Î»ØÄê¤Ë\n"
+" -b ¥ª¥×¥·¥ç¥ó -t oC ¤ÈƱ¤¸, 8¿Ê¿ô¥Ð¥¤¥È¤Î»ØÄê¤Ë\n"
+" -c ¥ª¥×¥·¥ç¥ó -t c ¤ÈƱ¤¸, ASCIIʸ»ú¤«`\\'¥¨¥¹¥±¡¼¥×¤Î»ØÄê¤Ë\n"
+" -d ¥ª¥×¥·¥ç¥ó -t u2 ¤ÈƱ¤¸, Éä¹æ¤Ê¤·¥·¥ç¡¼¥È10¿Ê¿ô¤Î»ØÄê¤Ë\n"
+
+#: src/od.c:345
+#, fuzzy
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f ¥ª¥×¥·¥ç¥ó -t fF ¤ÈƱ¤¸, ÉâÆ°¾®¿ôÅÀ¤Î»ØÄê¤Ë\n"
+" -h ¥ª¥×¥·¥ç¥ó -t x2 ¤ÈƱ¤¸, ¥·¥ç¡¼¥È16¿Ê¿ô¤Î»ØÄê¤Ë\n"
+" -i ¥ª¥×¥·¥ç¥ó -t d2 ¤ÈƱ¤¸, ¥·¥ç¡¼¥È10¿Ê¿ô¤Î»ØÄê¤Ë\n"
+" -l ¥ª¥×¥·¥ç¥ó -t d4 ¤ÈƱ¤¸, ¥í¥ó¥°10¿Ê¿ô¤Î»ØÄê¤Ë\n"
+" -o ¥ª¥×¥·¥ç¥ó -t o2 ¤ÈƱ¤¸, ¥·¥ç¡¼¥È8¿Ê¿ô¤Î»ØÄê¤Ë\n"
+" -x ¥ª¥×¥·¥ç¥ó -t x2 ¤ÈƱ¤¸, ¥·¥ç¡¼¥È16¿Ê¿ô¤Î»ØÄê¤Ë\n"
+
+#: src/od.c:353
+#, fuzzy
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"¸Å¤¤¤Û¤¦¤Î½ñ¼°(·Á¼°)¤Ç `¥ª¥Õ¥»¥Ã¥È' ¤Ï -j OFFSET ¤ÈƱ¤¸°ÕÌ£¤È¤Ê¤ê¤Þ¤¹.\n"
+"`¥é¥Ù¥ë' ¤Ïɽ¼¨¤ò³«»Ï¤¹¤ë¥Ð¥¤¥È°ÌÃ֤ε¿»÷¥¢¥É¥ì¥¹¤Ç, ¥À¥ó¥×¤Î¿Ê¹Ô¤È¤È¤â¤Ë\n"
+"Ãͤ¬Áý²Ã¤·¤Þ¤¹. OFFSET ¤ä LABEL ¤ÎÃͤȤ·¤Æ, `.' ¥µ¥Õ¥£¥Ã¥¯¥¹¤Î¤è¤¦¤Ê\n"
+"Æ°ºî¤ò¤µ¤»¤ë°Ù¤Ë, ºÇ½é¤Ë 0x ¤ä 0X ¤ò¤Ä¤±¤¿¤ê, `b' ¤ò¤Ä¤±¤ë¤³¤È¤Ç, \n"
+"512 Çܤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹.\n"
+"\n"
+"-t,--type¥ª¥×¥·¥ç¥ó¤Ç¤Î·¿¤Î»ØÄê¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹:\n"
+"\n"
+" a ʸ»ú̾\n"
+" c ASCII ʸ»ú¤â¤·¤¯¤Ï, `\\'¥¨¥¹¥±¡¼¥×\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[¥µ¥¤¥º] Éä¹æÉÕ¤­10¿Ê¿ô 1 À°¿ô(integer)¤Î¥µ¥¤¥º»ØÄê\n"
+" f[¥µ¥¤¥º] ÉâÆ°¾®¿ôÅÀ 1 À°¿ô(integer)¤Î¥µ¥¤¥º»ØÄê\n"
+" o[¥µ¥¤¥º] 8¿Ê¿ô 1 À°¿ô(integer)¤Î¥µ¥¤¥º»ØÄê\n"
+" u[¥µ¥¤¥º] Éä¹æ¤Ê¤·10¿Ê¿ô 1 À°¿ô(integer)¤Î¥µ¥¤¥º»ØÄê\n"
+" x[¥µ¥¤¥º] 16¿Ê¿ô 1 À°¿ô(integer)¤Î¥µ¥¤¥º»ØÄê\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"¤³¤³¤Ç¤Î¥µ¥¤¥º¤Î»ØÄê¤Ï¿ô»ú¤Ç¤¹. ¥¿¥¤¥×¤¬ doux ¤Ë´Þ¤Þ¤ì¤ë¤Ê¤é, ¥µ¥¤¥º¤Ë\n"
+"¤Ï,C ¤Ï sizeof(char) ¤È¤·¤Æ, S ¤Ï sizeof(short) ¤È¤·¤Æ, I ¤Ï sizeof(int), \n"
+"¤Þ¤¿¤Ï L¤Ï sizeof(long) ¤â»ØÄê¤Ç¤­¤Þ¤¹. ¤Þ¤¿¥¿¥¤¥×¤¬ f ¤Ê¤é¤Ð, ¤µ¤é¤Ë\n"
+"F ¤Ï sizeof(float) ¤È¤·¤Æ, D ¤Ï sizeof(double) ¤È¤·¤Æ, ¤Þ¤¿¤Ï \n"
+"L ¤Ï sizeof(long double) ¤È¤·¤Æ»ØÄê¤Ç¤­¤Þ¤¹.\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"RADIX ¤Ë¤Ï, ¥ª¥Õ¥»¥Ã¥ÈÃͤδð¿ô¤È¤·¤Æ»ÈÍѤ¹¤ëÃͤò, 10 ¿Ê¿ô¤Ê¤é d ¤ò, 8 ¿Ê¿ô\n"
+"¤Ê¤é o ¤ò, 16 ¿Ê¿ô¤Ê¤é x ¤ò»ØÄꤷ, ɽ¼¨¤·¤¿¤¯¤Ê¤±¤ì¤Ð n ¤ò»ØÄꤷ¤Þ¤¹.\n"
+"BYTES ¤Ë¤Ï, 16 ¿Ê¿ô¤Ê¤é¤Ð, `0x'¤«`0X' ¤ò¿ôÃͤÎÁ°¤ËÉÕ¤±, 512 Çܤ¹¤ë¤Ë¤Ï b "
+"¤ò,\n"
+"1024 Çܤ¹¤ë¤Ë¤Ï k ¤ò, 1048576 Çܤ¹¤ë¤Ë¤Ï, m ¤òÉÕ¤±¤Þ¤¹. z ¤ò¸å¤í¤ËÉÕ¤±¤ë¤È\n"
+"¤É¤ó¤Ê·¿¤Ç¤â½ÐÎϤγƹԤθå¤í¤Ë°õ»ú²Äǽ¤Êʸ»ú¤òÉÕ¤±²Ã¤¨¤Þ¤¹. "
+
+#: src/od.c:391
+#, fuzzy
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"-s ¤Ë¿ôÃͤò»ØÄê\n"
+"¤·¤Ê¤¤¾ì¹ç¤Ë¤Ï, 3 ¤¬¥»¥Ã¥È¤µ¤ì¤Þ¤¹. -w ¤Ë¿ôÃͤò»ØÄꤷ¤Ê¤±¤ì¤Ð, 32 ¤ÈÀßÄê\n"
+"¤µ¤ì¤Þ¤¹.\n"
+"Æä˥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç¤Ë¤Ï, od ¥³¥Þ¥ó¥É¤Ï `-A o -t d2 -w 16'\n"
+"¤Î»ØÄê¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹.\n"
+
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "·¿»ØÄ꤬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹ `%s'"
+
+#: src/od.c:693
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"·¿»ØÄê`%s'¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹\n"
+" -- ¤³¤Î¥·¥¹¥Æ¥à¤Ç¤Ï %lu ¥Ð¥¤¥ÈÀ°¿ô·¿¤ò°·¤¨¤Þ¤»¤ó"
+
+#: src/od.c:812
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"·¿»ØÄê`%s'¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹\n"
+" -- ¤³¤Î¥·¥¹¥Æ¥à¤Ç¤Ï %lu ¥Ð¥¤¥ÈÉâÆ°¾®¿ôÅÀ·¿¤ò°·¤¨¤Þ¤»¤ó"
+
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "´Ö°ã¤Ã¤¿Ê¸»ú `%c' ¤¬·¿»ØÄê `%s' ¤ÎÃæ¤Ë¤¢¤ê¤Þ¤¹"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "ÆþÎϤνªÃ¼¤ò±Û¤¨¤ÆÆɤߤȤФ¹»ö¤Ï¤Ç¤­¤Þ¤»¤ó"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+"̵¸ú¤Ê½ÐÎÏ¥¢¥É¥ì¥¹¤Î´ð¿ô `%c' ¤¬»ØÄꤵ¤ì¤Þ¤·¤¿\n"
+" -- doxn ¤Î¤¤¤º¤ì¤«¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "¥¹¥­¥Ã¥×¿ô»ØÄê¤Î°ú¿ô"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "ÆþÎϤÎÂ礭¤µÀ©¸Â¤Î°ú¿ô"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "ʸ»úÎóĹ¤ÎºÇ¾®ÃÍ"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "Éý¤Î»ØÄê"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "ʸ»úÎó¥À¥ó¥×»þ¤Î·¿¤Ï»ØÄê¤Ç¤­¤Þ¤»¤ó"
+
+#: src/od.c:1844
+#, fuzzy
+msgid "Compatibility mode supports at most one file."
+msgstr "¸ß´¹¥â¡¼¥É¤Ç¤Ï, 3 ¤Ä°Ê¾å¤Î°ú¿ô¤ò¼õ¤±ÉÕ¤±¤Þ¤»¤ó"
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr ""
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "·Ù¹ð: Éý %lu ¤Ï̵¸ú¤ÊÃͤǤ¹. -- Âå¤ï¤ê¤Ë %d ¤ò»ÈÍѤ·¤Þ¤¹"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: ¥Õ¥©¡¼¥Þ¥Ã¥È=\"%s\" Éý=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "ɸ½àÆþÎϤ¬ÊĤ¸¤é¤ì¤Æ¤¤¤Þ¤¹"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"FILE ¤Î³Æ¹Ô¤«¤é, °ìÃפ¹¤ë¹Ô¤ò¥¿¥Öʸ»ú¤Ç¶èÀÚ¤ê, ½ç¤Ëɸ½à½ÐÎϤ˽ñ¤­¹þ¤ß¤Þ¤¹.\n"
+"FILE ¤¬»ØÄꤵ¤ì¤Ê¤¤, ¤¢¤ë¤¤¤Ï `-' ¤ò»ØÄꤷ¤¿¾ì¹ç¤Ë¤Ïɸ½àÆþÎϤòÆɤ߹þ¤ß¤Þ¤¹.\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=LIST ¥¿¥Öʸ»ú¤ÎÂå¤ï¤ê¤Ë, LIST ¤Îʸ»ú¤ò¶èÀÚ¤ê¤È¤·¤Æ»ÈÍÑ\n"
+" -s, --serial °ì¹ÔËè¤Ç¤Ï¤Ê¤¯, °ìÅÙ¤Ë 1 ¤Ä¤Î¥Õ¥¡¥¤¥ë¤òŽÉÕ¤±¤ë\n"
+
+#: src/pathchk.c:99
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "´Ö°ã¤Ã¤¿Ê¸»ú `%c' ¤¬·¿»ØÄê `%s' ¤ÎÃæ¤Ë¤¢¤ê¤Þ¤¹"
+
+#: src/pathchk.c:282
+#, fuzzy, c-format
+msgid "empty file name"
+msgstr "Ä̾ï¤Î¶õ¥Õ¥¡¥¤¥ë"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "¥í¥°¥¤¥ó̾: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "¼Â̾: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "(ÉÔÌÀ)\n"
+
+#: src/pinky.c:353
+#, fuzzy, c-format
+msgid "Directory: "
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê"
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "¥·¥§¥ë: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "¥×¥í¥¸¥§¥¯¥È: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "¥×¥é¥ó:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "¥í¥°¥¤¥ó"
+
+#: src/pinky.c:423
+#, fuzzy
+msgid "Name"
+msgstr " ̾Á°"
+
+#: src/pinky.c:424
+#, fuzzy
+msgid " TTY"
+msgstr " üËö"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "ÂÔµ¡"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "³«»Ï»þ¹ï"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "¥í¥°¥¤¥ó¸µ"
+
+#: src/pinky.c:510
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"\n"
+" -l »ØÄꤵ¤ì¤¿¥æ¡¼¥¶¤ËÂФ·¤ÆĹ·Á¼°¤Ç½ÐÎÏ\n"
+" -b Ĺ·Á¼°¤Ç¥æ¡¼¥¶¤Î¥Û¡¼¥à¥Ç¥£¥ì¥¯¥È¥ê¤È¥·¥§¥ë¤ò¾Êά\n"
+" -h Ĺ·Á¼°¤Ç¥æ¡¼¥¶¤Î¥×¥í¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò¾Êά\n"
+" -p Ĺ·Á¼°¤Ç¥æ¡¼¥¶¤Î¥×¥é¥ó¥Õ¥¡¥¤¥ë¤ò¾Êά\n"
+" -s û·Á¼°¤Ç½ÐÎÏ (ɸ½à)\n"
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+" -f û·Á¼°¤Ç¥Ø¥Ã¥À¹Ô¤ò¾Êά\n"
+" -w û·Á¼°¤Ç¥æ¡¼¥¶¤Î¥Õ¥ë¥Í¡¼¥à¤ò¾Êά¤¹¤ë\n"
+" -i û·Á¼°¤Ç¥æ¡¼¥¶¤Î¥Õ¥ë¥Í¡¼¥à¤È¥í¥°¥¤¥ó¸µ¤ò¾Êά\n"
+" -q û·Á¼°¤Ç¥æ¡¼¥¶¤Î¥Õ¥ë¥Í¡¼¥à, ¥í¥°¥¤¥ó¸µ¤ª¤è¤ÓÂÔµ¡»þ´Ö¤ò¾Ê"
+"ά\n"
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+"\n"
+"·Ú¤¤ `finger' ¥×¥í¥°¥é¥à; ¥æ¡¼¥¶¾ðÊó¤òɽ¼¨.\n"
+"utmp ¥Õ¥¡¥¤¥ë¤Ï %s.\n"
+
+#: src/pinky.c:612
+#, fuzzy, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr "--string ¥ª¥×¥·¥ç¥ó¤òÍøÍѤ¹¤ë¤È¤­¤Ï, ¥Õ¥¡¥¤¥ë¤ò»ØÄê¤Ç¤­¤Þ¤»¤ó"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr ""
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "`--pages=³«»Ï¥Ú¡¼¥¸[:½ªÎ»¥Ú¡¼¥¸]' »ØÄ꤬¤¢¤ê¤Þ¤»¤ó"
+
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "·¿»ØÄ꤬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹ `%s'"
+
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "`-l ¥Ú¡¼¥¸¤ÎŤµ' ̵¸ú¤Ê¹ÔÈÖ¹æ¤Ç¤¹: `%s'"
+
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "`-N ¹ÔÈÖ¹æ' ̵¸ú¤Ê³«»Ï¹ÔÈÖ¹æ: `%s'"
+
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "`-o ;Çò' ̵¸ú¤Ê¹Ô¥ª¥Õ¥»¥Ã¥È: `%s'"
+
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-w ¥Ú¡¼¥¸¤ÎÉý' ̵¸ú¤Êʸ»ú¿ô¤Ç¤¹: `%s'"
+
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-W ¥Ú¡¼¥¸¤ÎÉý' ̵¸ú¤Êʸ»ú¿ô¤Ç¤¹: `%s'"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "ÊÂÎó¤Ë°õºþ¤¹¤ë¤È¤­¤Ë¤Ï¥«¥é¥à¿ô¤ò»ØÄê¤Ç¤­¤Þ¤»¤ó."
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "ÃÊÁȤβ£Êý¸þ°õºþ(-a)¤ÈÊÂÎó°õºþ¤òƱ»þ»ØÄê¤Ç¤­¤Þ¤»¤ó."
+
+#: src/pr.c:1202
+#, fuzzy, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "`-%c' ;ʬ¤Êʸ»ú¤¬ÉÕ¤¤¤Æ¤¤¤ë¤«°ú¿ô¤Î¿ô»ú¤¬Ìµ¸ú¤Ç¤¹: `%s'"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "¥Ú¡¼¥¸Éý¤¬¶¹¤¹¤®¤Þ¤¹"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2406
+#, fuzzy, c-format
+msgid "Page number overflow"
+msgstr "¥Õ¥£¡¼¥ë¥ÉÈֹ椬¥¼¥í¤Ç¤¹"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+"°õ»ú¤Î¤¿¤á¤Ë, ¥Ú¡¼¥¸ÉÕ¤±¤äÃÊÁȤò¹Ô¤Ê¤¤¤Þ¤¹.\n"
+"\n"
+
+#: src/pr.c:2779
+#, fuzzy
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" FIRST_PAGE ¤«¤é°õ»ú¤ò³«»Ï¤· LAST_PAGE ¤Þ¤Ç¤ò°õ»ú\n"
+" LAST_PAGE ¤ò¾Êά¤·¤¿¾ì¹ç, ºÇ¸å¤Þ¤Ç°õ»ú\n"
+" -COLUMN, --columns=COLUMN\n"
+" COLUMN ÃʤÎÃÊÁȤòÀ¸À®¤·, Ãʤβ¼Êý¤Ë¸þ¤±¤Æ½ÐÎÏ\n"
+" ¥Ú¡¼¥¸Ëè¤Ë¥«¥é¥àÆâ¤Î¹Ô¿ô¤òÄ´À°\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across ³Æ¹Ô¤òÃÊÁȤβ£Êý¸þ¤Ø½ç¤Ë½ÐÎÏ\n"
+" -COLUMN ¥ª¥×¥·¥ç¥ó¤È¶¦¤Ë»ÈÍÑ\n"
+" -c, --show-control-chars\n"
+" ¥³¥ó¥È¥í¡¼¥ë¥­¥ã¥é¥¯¥¿¤Ë¥Ï¥Ã¥È¤ò¤Ä¤±(Îã ^G), ¤½¤Î¾¤Î\n"
+" °õ»úÉÔǽ¤Êʸ»ú¤Ë¤Ï¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤È 8 ¿Ê¿ô¤Çɽ¼¨\n"
+" -d, --double-space\n"
+" ¹Ô´Ö¤Ë¶õ¹Ô¤òÁÞÆþ\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=FORMAT\n"
+" ¥Ø¥Ã¥À¤ÎÆüÉդηÁ¼°¤È¤·¤Æ FORMAT ¤òÍѤ¤¤ë\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" ÆþÎϤµ¤ì¤¿ CHAR ¤òÉý WIDTH ¤Î¶õÇò¤Ë³È¤²¤ë\n"
+" CHAR, WIDTH ¤Î»ØÄ꤬¤Ê¤±¤ì¤Ð CHAR ¤Ï TAB, \n"
+" WIDTH ¤Ï 8 ¤ËÊѹ¹\n"
+" -F, -f, --form-feed\n"
+" ²þ¥Ú¡¼¥¸¤ÎºÝ¤Ë²þ¹Ô¤Ç¤Ï¤Ê¤¯, ²þ¥Ú¡¼¥¸¥³¡¼¥É¤ò»ÈÍÑ\n"
+" (-f ¤È¶¦¤Ë 3¹Ôʬ, -f ¤ò»ØÄꤷ¤Ê¤¤¾ì¹ç 5¹Ôʬ¤Î¥Ø¥Ã¥À¤ò½Ð"
+"ÎÏ)\n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h HEADER, --header=HEADER\n"
+" ¥Ú¡¼¥¸¥Ø¥Ã¥ÀÃæ±û¤Î¥Õ¥¡¥¤¥ë̾¤ÎÂå¤ï¤ê¤Ë HEADER ¤òÍøÍÑ\n"
+" Ť¤¥Ø¥Ã¥À¤Ç¤¢¤ì¤Ð, ʸ»úÎó¤Îº¸Â¦¤¬ÀÚ¤ê¼è¤é¤ì¤ë¤³¤È¤Ë¤Ê"
+"¤ë\n"
+" -h \"\" ¤È»ØÄꤹ¤ì¤Ð, ¥Ø¥Ã¥À¤Ï¶õ¤Î¹Ô¤È¤Ê¤ë\n"
+" -h\"\" ¤È¤¤¤¦»ØÄê¤ò¹Ô¤Ê¤Ã¤Æ¤Ï¤¤¤±¤Ê¤¤\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" ¶õÇò¤ò CHAR ¤ËÃÖ´¹¤·¤Æ WIDTH ¤ÎÉý¤Ë\n"
+" Æä˻ØÄ꤬¤Ê¤¤¾ì¹ç CHAR ¤Ï TAB ¤Ë WIDTH ¤Ï 8 ¤Ë\n"
+" -J, --join-lines ¹Ô¤ÎÁ´¤Æ¤ò·ë¹ç¤·, (-W ¤Î¹ÔÀÚ¤êÍî¤È¤·¤ò¹Ô¤Ê¤ï¤Ê¤¤)ÃÊÁȤÎ\n"
+" Ä´Àá¤ò¹Ô¤Ê¤ï¤Ê¤¤. -S[STRING] ¤Ç¶èÀÚ¤êʸ»ú¤òÀßÄê\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" ¥Ú¡¼¥¸¤ÎŤµ¤ò PAGE_LENGTH ¤ËÀßÄê. »ØÄꤵ¤ì¤Ê¤¤¾ì¹ç\n"
+" 66 ¹Ô. (¹Ô¿ô¤Ï 56 ¤È¤Ê¤ê, -f ¤ò¤Ä¤±¤¿¾ì¹ç¤Ê¤é 63 ¹Ô)\n"
+" -m, --merge ³Æ¥Õ¥¡¥¤¥ë¤ò°ìÃʤº¤Äʤ٤Æɽ¼¨. ¤Ï¤ß½Ð¤·¤¿¹Ô¤ÏÀÚ¤ê¼Î¤Æ\n"
+" ¤é¤ì¤ë¤¬, -J ¥ª¥×¥·¥ç¥ó¤Ë¤è¤Ã¤Æ¹Ô¤ÎÆâÍƤϷҤ²¤é¤ì¤ë\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" ¹ÔÈÖ¹æ¤òÉղ乤ë. ÈÖ¹æ¤Î·å¤Ï DIGIT ÈÖ¹æ¤È¹Ô¤È¤Î´Ö¤Îʸ»ú\n"
+" ¤È¤·¤Æ SEP ¤ò»ØÄê. »ØÄ꤬¤Ê¤¤¾ì¹ç DIGITS ¤Ï 5, SEP ¤Ï\n"
+" TAB ¤ËÀßÄê\n"
+" ¥Ç¥Õ¥©¥ë¥È¤Ç¤ÏÆþÎÏ¥Õ¥¡¥¤¥ë¤Î 1¹ÔÌܤ«¤é¥«¥¦¥ó¥È\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" ºÇ½é¤Î¥Ú¡¼¥¸¤Î 1 ¹ÔÌܤιÔÈÖ¹æ¤ò NUMBER ÈÖ¤«¤é³«»Ï\n"
+" (+FIRST_PAGE ¤ÎÀâÌÀ¤ò»²¾È)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o MARGIN, --indent=MARGIN\n"
+" ³Æ¹Ô¤Îº¸Í¾Çò¤ò MARGIN (¥¼¥í) ʸ»úʬ¤Î¶õÇò¤È¤¹¤ë\n"
+" -w ¤ä -W ¤Ë±Æ¶Á¤µ¤»¤Æ¤Ï¤Ê¤é¤Ê¤¤. MARGIN ¤Ï PAGE_WIDTH "
+"¤Ë\n"
+" ²Ã¤¨¤é¤ì¤ë\n"
+" -r, --no-file-warnings\n"
+" ¥Õ¥¡¥¤¥ë¤¬³«¤±¤Ê¤«¤Ã¤¿¾ì¹ç¤Î·Ù¹ð¤ò¾Êά¤¹¤ë\n"
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[CHAR],--separator[=CHAR]\n"
+" ʸ»ú CHAR ¤òÃʤÎʬ³ä¤Ë»ÈÍÑ\n"
+" CHAR ¤Î¥Ç¥Õ¥©¥ë¥È¤Ï -w ¤¬¤Ê¤±¤ì¤Ð <TAB>,\n"
+" -w ¥ª¥×¥·¥ç¥ó¤¬¤¢¤ì¤Ð¶õʸ»ú\n"
+" -s[CHAR] ¤Ï -w ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð\n"
+" Ãʤ˴ؤ¹¤ë 3¤Ä¤Î¥ª¥×¥·¥ç¥ó (-COLUMN|-a -COLUMN|-m) ¤¹¤Ù"
+"¤Æ\n"
+" ¤Ë¤è¤ë¹Ô¤ÎÀÚ¤êµÍ¤á¤ò̵¸ú¤Ë\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -SSTRING, --sep-string[=STRING]\n"
+
+#: src/pr.c:2846
+#, fuzzy
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" Ǥ°Õ¤Î STRING ¤òÃʤÎʬ³ä¤Ë»ÈÍÑ\n"
+" -S \"STRING\" ¤È¤·¤Æ»È¤Ã¤Æ¤Ï¤Ê¤é¤Ê¤¤\n"
+" -S ¤Î¤ß: ʬ³äʸ»ú¤ò»ÈÍѤ·¤Ê¤¤ (-S\"\" ¤ÈƱ¤¸)\n"
+" -S ¤Ê¤·: -J ¤¬¤¢¤ë¤Ê¤é <TAB> ¤½¤ì°Ê³°¤Ï <space> ¤ò\n"
+" »È¤¦ (-S\" \" ¤ÈƱ¤¸). Ãʤ˴ؤ¹¤ë¥ª¥×¥·¥ç¥ó¤Ë¤Ï±Æ¶Á¤·¤Ê"
+"¤¤\n"
+" -t, --omit-header ¥Ø¥Ã¥À¤äËÜʸ¤Î;Çò¤ò¾Êά\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" ¥Ø¥Ã¥À¤äËÜʸ¤Î;Çò¤ò¾Êά¤·, ÆþÎÏ¥Õ¥¡¥¤¥ëÃæ¤Î²þ¥Ú¡¼¥¸¤ò̵"
+"ȑ\n"
+" -v, --show-nonprinting\n"
+" ¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å(\\) + 8 ¿Ê¿ô¤Ë¤è¤ëµ­½Ò¤ò»ÈÍÑ\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" Ê£¿ô¤ÎÍó¤Î½ÐÎϤËÂФ·¤Æ¤Î¤ß¥Ú¡¼¥¸Éý¤ò PAGE_WIDTH (72)\n"
+" ʸ»ú¤ËÀßÄꤷ, -s[char] ¤ò̵¸ú¤Ë (72)\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" ¥Ú¡¼¥¸Éý¤ò PAGE_WIDTH (72) ʸ»ú¤ËÀßÄꤷ, ¤Ï¤ß½Ð¤¿¹Ô¤Ï\n"
+" ÀÚ¤ê¼Î¤Æ. ¤¿¤À¤· -J ¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë\n"
+" ¸Â¤ë. -S ¤ä -s ¤Ë¤Ï²¿¤â±Æ¶Á¤·¤Ê¤¤\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"-T ¤Ï -l nn ¤òÍѤ¤, nn <= 3 ¤Î»ØÄê(-f ¥ª¥×¥·¥ç¥ó¤¢¤ê), ¤â¤·¤¯¤Ï\n"
+"nn <= 10 (-f ¥ª¥×¥·¥ç¥ó¤Ê¤·)¤È»ØÄꤹ¤ë¤Î¤ÈƱ¤¸°ÕÌ£¤Ë¤Ê¤ê¤Þ¤¹.\n"
+"¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Ê¤¤, ¤¢¤ë¤¤¤Ï¥Õ¥¡¥¤¥ë¤È¤·¤Æ `-' ¤¬»ØÄꤵ¤ì¤¿¾ì¹ç, \n"
+"ɸ½àÆþÎϤòÆɤ߹þ¤ß¤Þ¤¹.\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"»ÈÍÑË¡: %s [´Ä¶­ÊÑ¿ô]...\n"
+"¤â¤·¤¯¤Ï: %s ¥ª¥×¥·¥ç¥ó\n"
+"´Ä¶­ÊÑ¿ô¤¬»ØÄꤵ¤ì¤Ê¤¤¾ì¹ç¤ÏÁ´¤Æ¤Î´Ä¶­ÊÑ¿ô¤òɽ¼¨.\n"
+"\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr "·Ù¹ð: %s: ʸ»úÄê¿ô¤Î¸å¤Îʸ»ú¤¬Ìµ»ë¤µ¤ì¤Þ¤·¤¿"
+
+#: src/printf.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥Õ¥¡¥¤¥ë]...\n"
+"¤Þ¤¿¤Ï: %s [¥ª¥×¥·¥ç¥ó]\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+"¥Ç¡¼¥¿¤ò¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë¤·¤¿¤¬¤Ã¤Æɽ¼¨.\n"
+"\n"
+
+#: src/printf.c:104
+#, fuzzy
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"\n"
+"¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï C ¸À¸ì¤Î printf ¤Î¤è¤¦¤Ë½ÐÎϤòÀ©¸æ. ²ò¼á¤Ç¤­¤ë¤Î¤Ï:\n"
+"\n"
+" \\\" ¥À¥Ö¥ë¥¯¥©¡¼¥Æ¡¼¥·¥ç¥ó\n"
+" \\0NNN 8¿Ê¿ô NNN (0 ¤«¤é 3 ·å¤Î¿ô»ú) ¤Îʸ»ú\n"
+" \\\\ ¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å\n"
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+" \\a ·Ù¹ð²» (¥Ù¥ë²»)\n"
+" \\b ¥Ð¥Ã¥¯¥¹¥Ú¡¼¥¹\n"
+" \\c ¤³¤ì°Ê¹ß¤Î½ÐÎϤòÍÞÀ©\n"
+" \\f ÍÑ»æÁ÷¤ê\n"
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n ²þ¹Ô (LF)\n"
+" \\r Éüµ¢ (CR)\n"
+" \\t ¿åÊ¿¥¿¥Ö\n"
+" \\v ¿âľ¥¿¥Ö\n"
+
+#: src/printf.c:124
+#, fuzzy
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+" \\xNNN 16¿Ê¿ô NNN (1 ¤«¤é 3·å¤Î¿ô»ú) ¤Î¥Ð¥¤¥È\n"
+"\n"
+" \\uNNNN 16¿Ê¿ô NNNN (4·å¤Î¿ô»ú) ¤Îʸ»ú\n"
+" \\UNNNNNNNN 16¿Ê¿ô NNNNNNNN (8·å¤Î¿ô»ú) ¤Îʸ»ú\n"
+
+#: src/printf.c:129
+#, fuzzy
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+" %% 1¤Ä¤Î %\n"
+" %b °ú¿ô¤¬ `\\' ¥¨¥¹¥±¡¼¥×¤ò´Þ¤ó¤Àʸ»úÎó¤È¤·¤Æ²ò¼á\n"
+"\n"
+"¹¹¤Ë diouxXfeEgGcs ¤Î¤¦¤Á¤Î 1¤Ä¤Ç½ª¤ï¤ë C ¸À¸ì¤Î·Á¼°»ØÄê»Ò¤¬Á´¤Æ²ò¼á¤µ¤ì,\n"
+"°ú¿ô¤ÏºÇ½é¤ËŬÀڤʷ¿¤ËÊÑ´¹¤µ¤ì¤Þ¤¹. ÊÑ¿ô¤ÎÉý¤ÏÀ©¸æ¤Ç¤­¤Þ¤¹.\n"
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: ¿ôÃͤˤè¤ë»ØÄê¤ò¤·¤Æ²¼¤µ¤¤"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: Ãͤϴ°Á´¤Ë¤ÏÊÑ´¹¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "¥¨¥¹¥±¡¼¥×Ãæ¤Ë16¿Ê¿ô¤Î¿ôÃͤ¬¤¢¤ê¤Þ¤»¤ó"
+
+#: src/printf.c:289
+#, fuzzy, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "`%s' ¤Ï̵¸ú¤Êʸ»ú¼ïÎà¤Ç¤¹"
+
+#: src/printf.c:550
+#, fuzzy, c-format
+msgid "invalid field width: %s"
+msgstr "Éý `%s' ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/printf.c:585
+#, fuzzy, c-format
+msgid "invalid precision: %s"
+msgstr "Éý¤Î¥ª¥×¥·¥ç¥ó `%s' ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%s: ¥Õ¥£¡¼¥ë¥É¤Î»ØÄê `%s' ¤¬Ìµ¸ú¤Ç¤¹"
+
+#: src/printf.c:683
+#, fuzzy, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "·Ù¹ð: `%s' ¤Ç»Ï¤Þ¤ë;·×¤Ê°ú¿ô¤Ï̵»ë¤µ¤ì¤Þ¤¹"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr ""
+
+#: src/ptx.c:422
+#, fuzzy, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (Àµµ¬É½¸½ `%s')"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [ÆþÎϸµ]... (-G ¤Ê¤·)\n"
+" Ëô¤Ï: %s -G [¥ª¥×¥·¥ç¥ó]... [ÆþÎϸµ [½ÐÎÏÀè]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"ÆþÎÏ¥Õ¥¡¥¤¥ë¤Ë´Þ¤Þ¤ì¤ëñ¸ì¤Îº÷°ú¤òʤÙÂؤ¨, Á°¸å¤ò´Þ¤á¤Æ½ÐÎÏ.\n"
+"\n"
+
+#: src/ptx.c:1894
+#, fuzzy
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference ¼«Æ°À¸À®¤·¤¿»²¾Èʸ¤ò½ÐÎÏ\n"
+" -C, --copyright Ãøºî¸¢¤È¥³¥Ô¡¼¤Ë´Ø¤¹¤ë¾ò·ï¤òɽ¼¨\n"
+" -G, --traditional System V ¤Î `ptx' ¤Ë¤è¤ê¶á¤¤Æ°ºî\n"
+" -F, --flag-truncation=STRING ¹Ô¤ÎÀÚ¤êµÍ¤á¤ÎÌÜ°õ¤Ë STRING ¤ò»ÈÍÑ\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=STRING `xx' ¤ÎÂå¤ï¤ê¤Ë»È¤¦¥Þ¥¯¥í̾¤ò»ØÄê\n"
+" -O, --format=roff roff Ì¿Îá¤Ç½ÐÎϤòÀ¸À®\n"
+" -R, --right-side-refs »²¾Èʸ¤ò±¦¤Ë. ¤¿¤À¤· -w ¤Î´ªÄê¤Ë¤ÏÆþ¤é¤Ê¤¤\n"
+" -S, --sentence-regexp=REGEXP ¹ÔËö¤Þ¤¿¤ÏʸËö¤òɽ¸½¤¹¤ëÀµµ¬É½¸½¤ò»ØÄê\n"
+" -T, --format=tex TeX Ì¿Îá¤Ç½ÐÎϤòÀ¸À®\n"
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=REGEXP ¥­¡¼¥ï¡¼¥É¤ËÂФ·¤Æ REGEXP ¤Ç°ìÃפòÄ´¤Ù¤ë\n"
+" -b, --break-file=FILE ¤³¤Î FILE Ã椫¤éñ¸ì¤òʬ³ä¤¹¤ëʸ»ú¤ò¼èÆÀ\n"
+" -f, --ignore-case ¾®Ê¸»ú¤òÂçʸ»ú¤ËÊѤ¨¤ÆʤÓÂؤ¨\n"
+" -g, --gap-size=NUMBER ½ÐÎϤΥե£¡¼¥ë¥É´Ö¤ÎÎóÃæ¤Î·ä´Ö¤ÎÂ礭¤µ\n"
+" -i, --ignore-file=FILE FILE ¤«¤é̵»ë¤¹¤ëñ¸ì°ìÍ÷¤òÆɤ߹þ¤à\n"
+" -o, --only-file=FILE ¤³¤Î FILE ¤«¤éñ¸ì°ìÍ÷¤Î¤ß¤òÆɤ߹þ¤à\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references ³Æ¹Ô¤ÎÂè1¥Õ¥£¡¼¥ë¥É¤ò»²¾Èʸ¤È¸«¤Ê¤¹\n"
+" -t, --typeset-mode - ̤¼ÂÁõ -\n"
+" -w, --width=NUMBER Îó¤Î½ÐÎÏÉý¤ò»ØÄê. »²¾Èʸ¤ò½ü¤¤¤Æ¿ô¤¨¤ë\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"FILE ¤¬»ØÄꤵ¤ì¤Ê¤¤, ¤â¤·¤¯¤Ï FILE ¤¬ - ¤Î¾ì¹ç, ɸ½àÆþÎϤ¬Æɤ߹þ¤Þ¤ì¤Þ¤¹.\n"
+
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "Éý `%s' ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr ""
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+"¸½ºß¤Îºî¶È¥Ç¥£¥ì¥¯¥È¥ê¤Î¥Õ¥ë¥Ñ¥¹Ì¾¤òɽ¼¨.\n"
+"\n"
+
+#: src/pwd.c:160
+#, fuzzy, c-format
+msgid "failed to chdir to %s"
+msgstr "%s ¤Î¥°¥ë¡¼¥×¤ò %s ¤ËÊѹ¹¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿\n"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "%s ¤Î°À­¾ðÊó¤ò¼èÆÀ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, fuzzy, c-format
+msgid "ignoring non-option arguments"
+msgstr "È󥪥ץ·¥ç¥ó°ú¿ô¤Î¿ô¤¬Â¿¤¹¤®¤Þ¤¹"
+
+#: src/readlink.c:67
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ë°ÜÆ°¤Ç¤­¤Þ¤»¤ó"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, fuzzy, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"·Ù¹ð: ¥Ç¥£¥ì¥¯¥È¥ê¹½Â¤¤¬½Û´Ä¤·¤Æ¤¤¤Þ¤¹\n"
+"¤³¤ì¤Ï, ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ËÉÔÀµ¤òƯ¤¤¤Æ¤ë¤Î¤È¤Û¤È¤ó¤ÉƱ¤¸¹Ô°Ù¤Ç¤¹\n"
+"### ¤¢¤Ê¤¿¤Î¥·¥¹¥Æ¥à´ÉÍý¼Ô¤ËÄÌÃΤ·¤Æ²¼¤µ¤¤ ###\n"
+"°Ê²¼¤Î 2 ¤Ä¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î i ¥Î¡¼¥ÉÈֹ椬Ʊ¤¸¤Ç¤¹:\n"
+
+#: src/remove.c:854
+#, fuzzy, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/remove.c:855
+#, fuzzy, c-format
+msgid "%s: descend into directory %s? "
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ë°ÜÆ°¤Ç¤­¤Þ¤»¤ó"
+
+#: src/remove.c:865
+#, fuzzy, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: ½ñ¤­¹þ¤ßÊݸ¤ì¤¿¥Õ¥¡¥¤¥ë %s ¤òºï½ü¤·¤Þ¤¹¤«(yes/no)? "
+
+#: src/remove.c:866
+#, fuzzy, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: %s ¤òºï½ü¤·¤Þ¤¹¤«(yes/no)? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, fuzzy, c-format
+msgid "removed directory: %s\n"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ë°ÜÆ°¤Ç¤­¤Þ¤»¤ó"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, fuzzy, c-format
+msgid "cannot remove directory %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/remove.c:1450
+#, fuzzy, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ë°ÜÆ°¤Ç¤­¤Þ¤»¤ó"
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/remove.c:1558
+#, fuzzy, c-format
+msgid "cannot restore current working directory"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#: src/rm.c:160 src/touch.c:233
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"`-' ¤Ç»Ï¤Þ¤ë̾Á°¤Î¥Õ¥¡¥¤¥ë¤òºï½ü¤¹¤ë¤Ë¤Ï¡¢Î㤨¤Ð `-foo' ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤Ê¤é\n"
+"¤³¤¦¤¤¤¦¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤·¤ç¤¦\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"¥Õ¥¡¥¤¥ë¤Îºï½ü¤Ë rm ¤ò»È¤Ã¤¿¾ì¹ç¡¢Ä̾ï¤Ï¤½¤Î¥Õ¥¡¥¤¥ëÆâÍƤòÉü¸µ¤Ç¤­¤Æ¤·¤Þ"
+"¤¦¡¢\n"
+"¤È¤¤¤¦¤³¤È¤Ë¤Ïα°Õ¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£¤â¤·¤½¤ÎÆâÍƤòËÜÅö¤ËÉü¸µÉÔ²Äǽ¤Ë¤¹¤ë\n"
+"ÊݾڤòÆÀ¤¿¤±¤ì¤Ð¡¢shred ¤ÎÍøÍѤò¹Í¤¨¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: %s ¤òºï½ü¤·¤Þ¤¹¤«(yes/no)? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, fuzzy, c-format
+msgid "removing directory, %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/rmdir.c:140
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"¥Ç¥£¥ì¥¯¥È¥ê¤òºï½ü¤¹¤ë¡£¤¿¤À¤·Ãæ¿È¤¬¶õ¤Ç¤¢¤ë¤È¤­¤Î¤ß¡£\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¿È¤¬¶õ¤Ç¤Ê¤«¤Ã¤¿¾ì¹ç¤Î¥¨¥é¡¼¤òñ¤Ë̵»ë¤¹"
+"¤ë\n"
+
+#: src/rmdir.c:148
+#, fuzzy
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents ¥Ç¥£¥ì¥¯¥È¥ê¤òºï½ü¤·¡¢»ØÄê¥Ñ¥¹Ì¾¤Î¹½À®¥Ç¥£¥ì¥¯¥È¥ê¤Îºï½ü"
+"¤ò\n"
+" »î¤ß¤ë¡£Î㤨¤Ð `rmdir -p a/b/c' ¤Ï `rmdir a/b/c a/b a' "
+"¤È\n"
+" ƱÅù¤È¤Ê¤ë\n"
+" -v, --verbose ¥Ç¥£¥ì¥¯¥È¥êËè¤Ë¡¢½èÍýÆâÍƤξܺ٤òɽ¼¨¤¹¤ë\n"
+
+#: src/seq.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [ÆþÎϸµ]... (-G ¤Ê¤·)\n"
+" Ëô¤Ï: %s -G [¥ª¥×¥·¥ç¥ó]... [ÆþÎϸµ [½ÐÎÏÀè]]\n"
+
+#: src/seq.c:79
+#, fuzzy
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"FIRST ¤«¤é LAST ¤Þ¤Ç¤Î¿ô»ú¤ò INCREMENT ¤Î´Ö³Ö¤Çɽ¼¨.\n"
+"\n"
+" -f, --format=FORMAT printf ·Á¼°¤ÎÉâÆ°¾®¿ôÅÀ¤Î FORMAT (ɸ½à: %g) ¤ò»È"
+"ÍÑ\n"
+" -s, --separator=STRING ¿ô»ú¤Î¶èÀÚ¤ê¤Ë STRING ¤ò»ÈÍÑ (ɸ½à: \\n)\n"
+" -w, --equal-width ɽ¼¨Éý (·å) ¤ò·¤¨¤ë¤¿¤á¤Ë¤ËÀèƬ¤ò¥¼¥í¤ÇËä¤á¤ë\n"
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"\n"
+"FIRST ¤« INCREMENT ¤ò¾Êά¤·¤¿¾ì¹ç, ɸ½à¤Ç 1 ¤¬ÀßÄꤵ¤ì¤Þ¤¹.\n"
+"FIRST, INCREMENT ¤ä LAST ¤ÏÉâÆ°¾®¿ôÅÀ¤ÎÃͤȤ·¤Æ²ò¼á¤µ¤ì¤Þ¤¹.\n"
+"FIRST ¤¬ LAST ¤è¤ê¾®¤µ¤¤»þ INCREMENT ¤ÏÀµ¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó. ¤Þ¤¿,\n"
+"¤½¤ÎÈ¿ÂФξì¹ç¤ÏÉé¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó.\n"
+"FORMAT ¤ò»ØÄꤹ¤ë¾ì¹ç, printf ·Á¼°, ¤Ä¤Þ¤êÉâÆ°¾®¿ôÅÀ¤Î½ÐÎÏ·Á¼° %e, %f, %g\n"
+"¤Î¤¦¤Áɬ¤º 1¤Ä¤ò´Þ¤Þ¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, fuzzy, c-format
+msgid "invalid floating point argument: %s"
+msgstr "³«»Ï¹ÔÈֹ椬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó: `%s'"
+
+#: src/seq.c:342
+#, fuzzy, c-format
+msgid "invalid format string: %s"
+msgstr "·¿»ØÄ꤬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹ `%s'"
+
+#: src/seq.c:364
+#, fuzzy, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr "ʸ»úÎó¥À¥ó¥×»þ¤Î·¿¤Ï»ØÄê¤Ç¤­¤Þ¤»¤ó"
+
+#: src/setuidgid.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥Õ¥¡¥¤¥ë]...\n"
+"¤Þ¤¿¤Ï: %s [¥ª¥×¥·¥ç¥ó]\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr ""
+
+#: src/setuidgid.c:109
+#, fuzzy, c-format
+msgid "cannot set supplemental group"
+msgstr "Äɲ䵤줿¥°¥ë¡¼¥×¥ê¥¹¥È¤¬ÆÀ¤é¤ì¤Þ¤»¤ó"
+
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "¥æ¡¼¥¶¤È¥°¥ë¡¼¥×¤ÎξÊý¤ò¾Êά¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó"
+
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "¥æ¡¼¥¶¤È¥°¥ë¡¼¥×¤ÎξÊý¤ò¾Êά¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó"
+
+#: src/shred.c:165
+#, fuzzy, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó] [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¾å½ñ¤­¤ò·«¤êÊÖ¤·¡¢Èó¾ï¤Ë¹â²Á¤Êµ¡³£¤Ç¤µ¤¨¤â\n"
+"¥Ç¡¼¥¿Éü¸µ¤Î°Ù¤ÎÄ´ºº¤ò¹Ô¤¦»ö¤¬Èó¾ï¤Ëº¤Æñ¤È¤Ê¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£\n"
+"\n"
+
+#: src/shred.c:174
+#, fuzzy, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force ɬÍפ˱þ¤¸¤Æ¸¢¸Â¤ò½ñ¹þ¤ß²Äǽ¤ËÊѹ¹¤¹¤ë\n"
+" -n, --iterations=N ¥Ç¥Õ¥©¥ë¥È²ó¿ô(%d)¤ÎÂå¤ê¤Ë N ²ó¾å½ñ¤­¤¹¤ë\n"
+" -s, --size=N ¤³¤Î¥Ð¥¤¥È¿ô¤ÇÀ£ÃǤ¹¤ë (k, M, G ¤ÎÍͤÊÀÜÈø¼­¤â»È¤¨¤Þ¤¹)\n"
+
+#: src/shred.c:180
+#, fuzzy
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove ¾å½ñ¤­¤·¤¿¸åÀÚ¤ê¼è¤ê¤·¤Æºï½ü¤¹¤ë\n"
+" -v, --verbose ¿ÊĽ¾õ¶·¤òɽ¼¨¤¹¤ë\n"
+" -x, --exact ¥Õ¥¡¥¤¥ë¥Ö¥í¥Ã¥¯¤Î¥µ¥¤¥º¤Ë¥Õ¥¡¥¤¥ë¥µ¥¤¥º¤òÀÚ¤ê¾å¤²¤Ê¤¤\n"
+" -z, --zero shred ¤ò±£¤¹¤¿¤á¤Ë¡¢ºÇ¸å¤Ë°ìÅÙ¥¼¥í¤Ç¤Î¾å½ñ¤­¤ò¹Ô¤¦\n"
+" - ɸ½à½ÐÎϤòÀ£ÃǤ¹¤ë\n"
+
+#: src/shred.c:189
+#, fuzzy
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"--remove (-u) ¤¬»ØÄꤵ¤ì¤¿¤È¤­¤Ë FILE ¤òºï½ü¤·¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¥Õ¥¡¥¤¥ë¤ò\n"
+"ºï½ü¤·¤Ê¤¤¤Î¤Ï¡¢/dev/hda ¤ÎÍͤʥǥХ¤¥¹¥Õ¥¡¥¤¥ë¤Ç¤¢¤Ã¤Æ¤â¶¦Ä̤ÎÁàºî¤Ç¤¢¤ê¡¢\n"
+"¤³¤¦¤¤¤Ã¤¿¥Õ¥¡¥¤¥ë¤ÏÄ̾ïºï½ü¤µ¤ì¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¤¤«¤é¤Ç¤¹¡£Ä̾ï¥Õ¥¡¥¤¥ë¤ò\n"
+"Áàºî¤¹¤ë»þ¤ÏËؤó¤É¤Î¿Í¤¬ --remove ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£\n"
+"\n"
+
+#: src/shred.c:199
+#, fuzzy
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"CAUTION: shred ¤ÏÈó¾ï¤Ë½ÅÂç¤Ê²áÄø¤Ë´ð¤Å¤¤¤Æ¤¤¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£\n"
+"¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤¬¥Ç¡¼¥¿¤Î¾ì½ê¤Ë¾å½ñ¤­¤¹¤ë¤È¤¤¤¦¤³¤È¡£¤³¤ì¤ÏÅÁÅýŪ¤Ê\n"
+"ÊýË¡¤Ç¤¹¤¬¡¢¶áǯ¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ç¤Ï¤³¤Î²¾Äê¤òËþ¤¿¤µ¤Ê¤¤»ö¤â¿¤¤¤Ç¤¹¡£\n"
+"shred ¤ò»È¤¦°ÕÌ£¤¬¤Ê¤¤¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£\n"
+"\n"
+
+#: src/shred.c:207
+#, fuzzy
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"* AIX ¤ä Solaris ¤¬Ä󶡤·¤Æ¤¤¤ëÍͤʡ¢¥í¥°¹½Â¤¤ä¥¸¥ã¡¼¥Ê¥ê¥ó¥°¥Õ¥¡¥¤¥ë\n"
+" ¥·¥¹¥Æ¥à (µÚ¤Ó JFS, ReiserFS, XFS Åù)\n"
+"\n"
+"* RAID ¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ÎÍͤʡ¢¾éĹ¤Ê¥Ç¡¼¥¿¤ò½ñ¹þ¤ó¤Ç¤ª¤ê¡¢½ñ¤­¹þ¤ß¤¬\n"
+" ¼ºÇÔ¤·¤Æ¤âÊݸ¤µ¤ì¤ë¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à\n"
+"\n"
+"* Network Appliance ¤Î NFS ¥µ¡¼¥Ð¤ÎÍͤˡ¢¥¹¥Ê¥Ã¥×¥·¥ç¥Ã¥È¤òºî¤ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ"
+"¥à\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+#, fuzzy
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+"* NFS ¥Ð¡¼¥¸¥ç¥ó 3 ¥¯¥é¥¤¥¢¥ó¥È¤ÎÍͤˡ¢°ì»þŪ¤Ê¾ì½ê¤Ë¥­¥ã¥Ã¥·¥å¤ò¹Ô¤¦ÍͤÊ\n"
+" ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à\n"
+"\n"
+"* °µ½Ì¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à\n"
+"\n"
+"¤µ¤é¤Ë¡¢¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×¤ä¥ê¥â¡¼¥È¤Î¥ß¥é¡¼¤¬¥Õ¥¡¥¤¥ë¤Î¥³¥Ô¡¼"
+"¤ò\n"
+"´Þ¤ó¤Ç¤¤¤ë¤«¤âÃΤì¤Þ¤»¤ó¤¬¡¢¤³¤¦¤¤¤Ã¤¿¥Õ¥¡¥¤¥ë¤Ïºï½ü¤Ç¤­¤Þ¤»¤ó¤·¡¢À£ÃǤµ¤ì"
+"¤¿\n"
+"¥Õ¥¡¥¤¥ë¤ò¸å¤ÇÉü¸µ¤¹¤ë¤³¤È¤Ï¤ºî¤â¤Ê¤¤»ö¤Ç¤·¤ç¤¦¡£\n"
+
+#: src/shred.c:303
+#, fuzzy, c-format
+msgid "%s: fdatasync failed"
+msgstr "¾õÂÖ¸¡ÃμºÇÔ"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr ""
+
+#: src/shred.c:391
+#, fuzzy, c-format
+msgid "%s: cannot rewind"
+msgstr "%s ¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: ·Ð²á %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, fuzzy, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s ¤Î½ñ¤­¹þ¤ß¥¨¥é¡¼"
+
+#: src/shred.c:478
+#, fuzzy, c-format
+msgid "%s: lseek failed"
+msgstr "¥¯¥í¡¼¥º¼ºÇÔ"
+
+#: src/shred.c:489
+#, fuzzy, c-format
+msgid "%s: file too large"
+msgstr "%s: ¥Õ¥¡¥¤¥ë¤¬Ä¹¤¹¤®¤Þ¤¹"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: ·Ð²á %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, fuzzy, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: ·Ð²á %lu/%lu (%s)...%s/%s"
+
+#: src/shred.c:776
+#, fuzzy, c-format
+msgid "%s: fstat failed"
+msgstr "¾õÂÖ¸¡ÃμºÇÔ"
+
+#: src/shred.c:787
+#, fuzzy, c-format
+msgid "%s: invalid file type"
+msgstr "%s: ÀÜÈø¼­¤ÎŤµ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: ¥Õ¥¡¥¤¥ë¤¬Éé¤ÎÂ礭¤µ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹"
+
+#: src/shred.c:873
+#, fuzzy, c-format
+msgid "%s: error truncating"
+msgstr "%s: ¥Õ¥¡¥¤¥ë¤¬ÀÚ¤êµÍ¤á¤é¤ì¤Þ¤·¤¿"
+
+#: src/shred.c:889
+#, fuzzy, c-format
+msgid "%s: fcntl failed"
+msgstr "¾õÂÖ¸¡ÃμºÇÔ"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s: ÄɲÃÍÑ¥Õ¥¡¥¤¥ëµ­½Ò»Ò¤Ë¤Ï shred ¤Ç¤­¤Þ¤»¤ó"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: ºï½ü¤·¤Þ¤¹"
+
+#: src/shred.c:996
+#, fuzzy, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: Æɤ߹þ¤ß¥¨¥é¡¼"
+
+#: src/shred.c:1018
+#, fuzzy, c-format
+msgid "%s: failed to remove"
+msgstr "%s: ¥Õ¥¡¥¤¥ë¤¬Ä¹¤¹¤®¤Þ¤¹"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: ºï½ü¤·¤Þ¤·¤¿"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, fuzzy, c-format
+msgid "%s: failed to close"
+msgstr "%s: ¥Õ¥¡¥¤¥ë¤¬Ä¹¤¹¤®¤Þ¤¹"
+
+#: src/shred.c:1065
+#, fuzzy, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: ¥Õ¥¡¥¤¥ë¤¬Ä¹¤¹¤®¤Þ¤¹"
+
+#: src/shred.c:1130
+#, fuzzy, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: ̵¸ú¤ÊÉÿô¤Ç¤¹"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "-l ¤Þ¤¿¤Ï -t ¥ª¥×¥·¥ç¥ó¤¬Ê£¿ô»ØÄꤵ¤ì¤Æ¤¤¤Þ¤¹"
+
+#: src/shred.c:1153
+#, fuzzy, c-format
+msgid "%s: invalid file size"
+msgstr "%s: ÀÜÈø¼­¤ÎŤµ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [ÆþÎϸµ]... (-G ¤Ê¤·)\n"
+" Ëô¤Ï: %s -G [¥ª¥×¥·¥ç¥ó]... [ÆþÎϸµ [½ÐÎÏÀè]]\n"
+
+#: src/shuf.c:57
+#, fuzzy
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"¥Õ¥¡¥¤¥ë¤Î³Æ¹Ô¤«¤éÁªÂò¤·¤¿Éôʬ¤À¤±¤òÀÚ¤ê½Ð¤·¤Æ, ɸ½à½ÐÎϤËɽ¼¨¤·¤Þ¤¹.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "-l ¤Þ¤¿¤Ï -t ¥ª¥×¥·¥ç¥ó¤¬Ê£¿ô»ØÄꤵ¤ì¤Æ¤¤¤Þ¤¹"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "%s: ̵¸ú¤ÊÈÖ¹æɽµ­¤Ç¤¹"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "Éý `%s' ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, fuzzy, c-format
+msgid "multiple output files specified"
+msgstr "-l ¤Þ¤¿¤Ï -t ¥ª¥×¥·¥ç¥ó¤¬Ê£¿ô»ØÄꤵ¤ì¤Æ¤¤¤Þ¤¹"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "-l ¤Þ¤¿¤Ï -t ¤È¥·¥°¥Ê¥ë¤òÁȤ߹ç¤ï¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó"
+
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr ";·×¤Ê±é»» `%s'"
+
+#: src/sleep.c:47
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"»ÈÍÑË¡: %s ¿ô»ú[ÀÜÈø¼­]...\n"
+"¤â¤·¤¯¤Ï: %s ¥ª¥×¥·¥ç¥ó\n"
+"¿ô»ú¤Ç»ØÄꤵ¤ì¤¿»þ´Ö (ÉÃ) ¤À¤±°ì»þÄä»ß¤·¤Þ¤¹. ÀÜÈø¼­¤¬ `s' ¤Ê¤éÉà (ɸ½à),\n"
+"`m' ¤Ê¤éʬ, `h' ¤Ê¤é»þ, `d' ¤Ê¤é¤ÐÆü¤¬Ã±°Ì¤Ë¤Ê¤ê¤Þ¤¹. ¾¤Î¿¤¯¤Î¼ÂÁõ¤È°Û¤Ê"
+"¤ê,\n"
+"»ØÄꤹ¤ë¿ô»ú¤ÏÀ°¿ô¤À¤±¤Ç¤Ê¤¯, ¾®¿ô¤Ç¤â¹½¤¤¤Þ¤»¤ó.\n"
+"\n"
+
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "¥Õ¥£¡¼¥ë¥É¿ô¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹: `%s'"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "¼Â»þ´Ö¤Î»þ·×¤òÆɤ߼è¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó"
+
+#: src/sort.c:310
+#, fuzzy
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"¥Õ¥¡¥¤¥ë¤ÎÆâÍƤò¥½¡¼¥È¤·¤Æɸ½à½ÐÎϤ˽ñ¤­¹þ¤ß¤Þ¤¹. ÆþÎÏ¥Õ¥¡¥¤¥ë¤¬Ê£¿ô¤Î¾ì¹ç,\n"
+"Ï¢·ë¤·¤Æ½ÐÎϤ·¤Þ¤¹.\n"
+"\n"
+"ʤÓÂؤ¨¥ª¥×¥·¥ç¥ó:\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+#, fuzzy
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks ¥½¡¼¥ÈÂоݤÎÁ°¤Ë¤¢¤ë¶õÇò¤ò̵»ë\n"
+" -d, --dictionary-order ±Ñ¿ô»ú¤È¶õÇòʸ»ú¤Î¤ß¤òÂоݤˤ·¤ÆʤÓÂؤ¨\n"
+" -f, --ignore-case Âçʸ»ú¡¦¾®Ê¸»ú¤òƱ°ì»ë¤·¤ÆʤÓÂؤ¨\n"
+
+#: src/sort.c:326
+#, fuzzy
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort °ìÈÌŪ¤Ê¿ôÃͤÎÂç¾®¤Ë¤è¤Ã¤ÆÈæ³Ó\n"
+" -i, --ignore-nonprinting ɽ¼¨²Äǽʸ»ú¤Î¤ß¤òÈæ³Ó¤·¤Æ¡¡Ê¤ÓÂؤ¨\n"
+" -M, --month-sort ·î̾¤Ç¥½¡¼¥È¤ò¹Ô¤¦. ·î̾°Ê³°¤Ï JAN ¤è¤ê¾®¤µ¤¤\n"
+" -n, --numeric-sort ʸ»úÎó¤ò¿ôÃͤÎÂç¾®¤Ë¤è¤Ã¤ÆÈæ³Ó\n"
+" -r, --reverse Èæ³Ó·ë²Ì¤òȿž\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+#, fuzzy
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+"¤½¤Î¾¤Î¥ª¥×¥·¥ç¥ó:\n"
+" -c, --check ʤÓÂؤ¨¤º¤Ë, ÆþÎÏ¥Õ¥¡¥¤¥ë¤¬Ê¤ÓÂؤ¨¤é¤ì¤Æ¤¤¤ë"
+"¤«\n"
+" Èݤ«¤òÄ´¤Ù¤ë\n"
+" -k, --key=POS1[,POS2] ¥½¡¼¥È¥­¡¼¤ò POS1 ¤«¤é POS2 ¤Þ¤Ç¤Ë (¸¶ÅÀ 1)\n"
+" -m, --merge ʤÓÂؤ¨¤º¤Ë¥½¡¼¥ÈºÑ¤ß¤Î¥Õ¥¡¥¤¥ë¤Î¥Þ¡¼¥¸¤Î¤ß¹Ô"
+"¤¦\n"
+" -s, --stable Á°¤ÎÈæ³Ó·ë²Ì¤ËÍê¤é¤Ê¤¤°ÂÄêŪ¤ÊʤÓÂؤ¨\n"
+" -S, --buffer-size=SIZE ¥á¥¤¥ó¥á¥â¥ê¥Ð¥Ã¥Õ¥¡¤ÎÂ礭¤µ¤È¤·¤Æ SIZE ¤ò»È¤¦\n"
+
+#: src/sort.c:351
+#, fuzzy, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=SEP ¶èÀÚ¤êʸ»ú¤ò¶õÇòʸ»úÎó¤ÎÂå¤ï¤ê¤Ë SEP ¤ËÊѹ¹\n"
+" -T, --temporary-directory=DIR °ì»þ¥Õ¥¡¥¤¥ë¤È¤·¤Æ $TMPDIR ¤ä %s ¤ÎÂå¤ï¤ê"
+"¤Ë\n"
+" DIR ¤ò»ÈÍÑ. Ê£¿ô¤Î¥Ç¥£¥ì¥¯¥È¥ê¤òÊ£¿ô¤Î¥ª¥×¥·¥ç"
+"¥ó\n"
+" ¤Ç»ØÄê²Ä\n"
+" -u, --unique -c ¥ª¥×¥·¥ç¥ó¤È¤È¤â¤ËÍøÍѤ¹¤ì¤Ð¸·Ì©¤ËʤÓÂؤ¨,\n"
+" ¤½¤¦¤Ç¤Ê¤±¤ì¤ÐÅù¤·¤¤¹Ô¤Î¤¦¤ÁºÇ½é¤Î¤â¤Î¤À¤±¤òɽ"
+"¼¨\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr " -z, --zero-terminated ʸ»úÎó¤ÎºÇ¸å¤Ë²þ¹Ô¤Ç¤Ê¤¯¥Ì¥ëʸ»ú¤òÉÕ²Ã\n"
+
+#: src/sort.c:363
+#, fuzzy
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"POS ¤Î½ñ¼°¤Ï F[.C][OPTS] ¤Ç¤¢¤ê, F ¤Ë¤Ï¥Õ¥£¡¼¥ë¥ÉÈÖ¹æ, C ¤Ë¤Ï¥Õ¥£¡¼¥ë¥ÉÆâ¤Î\n"
+"ʸ»ú¤Î°ÌÃÖ¤ò»ØÄꤷ¤Þ¤¹. OPTS ¤Ë¤Ï¡ÖʤÓÂؤ¨¥ª¥×¥·¥ç¥ó¡×¤ÎÃæ¤Î 1¤Ä°Ê¾å¤Îʸ»ú"
+"¤¬\n"
+"»ØÄꤵ¤ì, ¤½¤Î¥­¡¼¤ËÂФ·¤ÆÁ´ÂΤΡÖʤÓÂؤ¨¥ª¥×¥·¥ç¥ó¡×¤è¤ê¤âÍ¥À褵¤ì¤Þ¤¹.\n"
+"¥­¡¼¤¬»ØÄꤵ¤ì¤Ê¤±¤ì¤Ð, ¥­¡¼¤È¤·¤Æ¹ÔÁ´ÂΤ¬»È¤ï¤ì¤Þ¤¹.\n"
+"\n"
+"SIZE ¤Î¸å¤Ë¤Ï¼¡¤ÎÊ£¿ô»ØÄê²Äǽ¤ÊÀÜÈø¼­¤ò»ØÄꤷ¤Þ¤¹.\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"¥á¥â¥ê¤Î % 1%, b ¤Ï 1, K ¤Ï 1024 (ɸ½à) ¤Î¤è¤¦¤Ë M, G, T, P, E, Z, T.\n"
+"\n"
+"*** ·Ù¹ð ***\n"
+"´Ä¶­ÊÑ¿ô¤Ë¤è¤Ã¤Æ»ØÄꤵ¤ì¤¿¥í¥«¡¼¥ë¤ÇʤÓÂؤ¨¤Î½çÈÖ¤¬ÊѤï¤ê¤Þ¤¹.\n"
+"ËÜÍè¤Î¥Ð¥¤¥Èñ°Ì¤Î¿ôÃͤÇÀΤʤ¬¤é¤ÎʤÓÂؤ¨½ç¤Ë¤·¤¿¤¤¤Ê¤é¤Ð LC_ALL=C ¤ò»ØÄê.\n"
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "%s ¤Î½ñ¤­¹þ¤ß¥¨¥é¡¼"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "°ì»þ¥Õ¥¡¥¤¥ë¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "¥ª¡¼¥×¥ó¼ºÇÔ"
+
+#: src/sort.c:758
+#, fuzzy
+msgid "fflush failed"
+msgstr "¥¯¥í¡¼¥º¼ºÇÔ"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "¥¯¥í¡¼¥º¼ºÇÔ"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "¥ª¡¼¥×¥ó¼ºÇÔ"
+
+#: src/sort.c:871
+#, fuzzy, c-format
+msgid "couldn't execute %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "°ì»þ¥Õ¥¡¥¤¥ë¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "°ì»þ¥Õ¥¡¥¤¥ë¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/sort.c:920
+#, fuzzy, c-format
+msgid "couldn't execute %s -d"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "½ñ¤­¹þ¤ß¼ºÇÔ"
+
+#: src/sort.c:975
+#, fuzzy, c-format
+msgid "warning: cannot remove: %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "¥½¡¼¥È¥µ¥¤¥º"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "¾õÂÖ¸¡ÃμºÇÔ"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "Æɹþ¤ß¼ºÇÔ"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: ½ç½ø¤¬ÉÔµ¬Â§: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "ɸ½à¥¨¥é¡¼"
+
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: ¥Õ¥£¡¼¥ë¥É¤Î»ØÄê `%s' ¤¬Ìµ¸ú¤Ç¤¹"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: `%s' ¤Î³«»ÏÅÀ¤Ç¤Î¥«¥¦¥ó¥È¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "`-' ¤Î¸å¤Î¿ô»ú¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "`.' ¤Î¸å¤Î¿ô»ú¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "¥Õ¥£¡¼¥ë¥É»ØÄê¤Ë»È¤¨¤Ê¤¤Ê¸»ú¤¬¤¢¤ê¤Þ¤¹"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "-l ¤Þ¤¿¤Ï -t ¥ª¥×¥·¥ç¥ó¤¬Ê£¿ô»ØÄꤵ¤ì¤Æ¤¤¤Þ¤¹"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "¥Õ¥£¡¼¥ë¥É¤Î³«»ÏÅÀ¤Î¿ô»ú¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "¥Õ¥£¡¼¥ë¥ÉÈֹ椬¥¼¥í¤Ç¤¹"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "ʸ»ú¤Î¥ª¥Õ¥»¥Ã¥È¤¬¥¼¥í¤Ç¤¹"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "`,' ¤Î¸å¤Î¿ô»ú¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "Äɲñ黻 `%s' ¤Ï -c ¤È°ì½ï¤Ë¤Ï»È¤¨¤Þ¤»¤ó"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó] [INPUT [PREFIX]]\n"
+
+#: src/split.c:110
+#, fuzzy
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"INPUT ¤ò PREFIXaa, PREFIXab, ... ¤È¤¤¤¦¸ÇÄꥵ¥¤¥º¤Î¥Õ¥¡¥¤¥ë¤Ëʬ³ä. ɸ½à¤Ç\n"
+"PREFIX ¤Ï `x'. INPUT ¤¬»ØÄꤵ¤ì¤Ê¤¤¤«, INPUT ¤¬ - ¤Î¾ì¹ç¤Ïɸ½àÆþÎϤ¬Æɤޤì"
+"¤ë.\n"
+
+#: src/split.c:119
+#, fuzzy, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=N Ťµ N ¤ÎÀÜÈø¼­¤Î»È¤¦ (ɸ½à %d)\n"
+" -b, --bytes=SIZE 1 ½ÐÎÏ¥Õ¥¡¥¤¥ë¤ò SIZE ¥Ð¥¤¥È¤Ë\n"
+" -C, --line-bytes=SIZE 1 ½ÐÎÏ¥Õ¥¡¥¤¥ë¤òºÇÂç SIZE ¥Ð¥¤¥È¹Ô¤Ë\n"
+" -l, --lines=NUMBER 1 ½ÐÎÏ¥Õ¥¡¥¤¥ë¤ò NUMBER ¹Ô¤Ë\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose ³Æ¡¹¤Î½ÐÎÏ¥Õ¥¡¥¤¥ë¤ò³«¤¯Ä¾Á°¤Ë, ɸ½à¥¨¥é¡¼½ÐÎϤË\n"
+" ¿ÇÃÇ¥á¥Ã¥»¡¼¥¸¤òɽ¼¨\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"SIZE¤Ï¤¤¤¯¤Ä¤«¤Î¥µ¥Õ¥£¥Ã¥¯¥¹¤òÉÕ¤±¤é¤ì¤Þ¤¹: 512¥Ð¥¤¥È¤Ç¤Ï`b',1¥­¥í¤Ç¤Ï`k',\n"
+"1¥á¥¬¤Ç¤Ï`m'¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "½ÐÎÏ¥Õ¥¡¥¤¥ë¤ÎÀÜÈø¼­¤ò»È¤¤²Ì¤¿¤·¤Þ¤·¤¿"
+
+#: src/split.c:211
+#, fuzzy, c-format
+msgid "creating file %s\n"
+msgstr "¥Õ¥¡¥¤¥ë `%s' ¤òºîÀ®\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "Ê£¿ô¤Îʬ³äÊýË¡¤Ï»ØÄê¤Ç¤­¤Þ¤»¤ó"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: ÀÜÈø¼­¤ÎŤµ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: ̵¸ú¤Ê¥Ð¥¤¥È¿ôɽµ­¤Ç¤¹"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: ̵¸ú¤Ê¹Ô¿ôɽµ­¤Ç¤¹"
+
+#: src/split.c:487
+#, fuzzy, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "%s: ¥«¥¦¥ó¥È `%.*s' ¤¬Â礭²á¤®¤Þ¤¹"
+
+#: src/split.c:518
+#, fuzzy, c-format
+msgid "invalid number of lines: 0"
+msgstr "¹Ô¿ô¤Î»ØÄ꤬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s: ¥ª¥×¥·¥ç¥ó `%c%s' ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó\n"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%s: ̵¸ú¤Ê¥Ñ¥¿¡¼¥ó»ØÄê¤Ç¤¹"
+
+#: src/stat.c:726
+#, fuzzy, c-format
+msgid "warning: backslash at end of format"
+msgstr "ʸ»úÎó¤Î½ªÃ¼¤Ç¤Î¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¥¨¥¹¥±¡¼¥×¤¬Ìµ¸ú"
+
+#: src/stat.c:755
+#, fuzzy, c-format
+msgid "cannot read file system information for %s"
+msgstr "%s ¤ËÂФ¹¤ë¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿¤òºÆÇÛÃ֤Ǥ­¤Þ¤»¤ó"
+
+#: src/stat.c:831
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó] [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"»ÈÍÑË¡: %s [-F ¥Ç¥Ð¥¤¥¹] [--file=¥Ç¥Ð¥¤¥¹] [ÀßÄê]...\n"
+"¤â¤·¤¯¤Ï: %s [-F ¥Ç¥Ð¥¤¥¹] [--file=¥Ç¥Ð¥¤¥¹] [-a|--all]\n"
+"¤â¤·¤¯¤Ï: %s [-F ¥Ç¥Ð¥¤¥¹] [--file=¥Ç¥Ð¥¤¥¹] [-g|--save]\n"
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"¥¿¡¼¥ß¥Ê¥ë°À­¤Îɽ¼¨, Êѹ¹.\n"
+"\n"
+" -a, --all ¸½ºß¤Î¤¹¤Ù¤Æ¤ÎÀßÄê¤ò¿Í´Ö¤ËÆɤá¤ë·Á¼°¤Ç½ÐÎÏ\n"
+" -g, --save ¸½ºß¤Î¤¹¤Ù¤Æ¤ÎÀßÄê¤òÊ̤Πstty ¤¬Æɤá¤ë·Á¼°¤Ç½ÐÎÏ\n"
+" -F, --file=¥Ç¥Ð¥¤¥¹ ɸ½àÆþÎϤÎÂå¤ï¤ê¤Ë»ØÄꤵ¤ì¤¿¥Ç¥Ð¥¤¥¹¤ò»ÈÍÑ\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+"\n"
+"¡ÖÀßÄê¡×¤ÎÁ°¤Ë - ¤òÉÕ¤±¤ë¤È, ÈÝÄê¤òɽ¤ï¤·¤Þ¤¹. °Ê²¼¤Î * (¥¢¥¹¥¿¥ê¥¹¥¯) µ­¹æ\n"
+"¤ÏÈó POSIX ÀßÄê¤Ç¤¢¤ë¤³¤È¤ò¼¨¤·¤Æ¤¤¤Þ¤¹. »È¤Ã¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ë¤è¤Ã¤Æ,\n"
+"¤É¤ÎÀßÄ꤬ͭ¸ú¤Ê¤Î¤«¤¬·è¤Þ¤ê¤Þ¤¹.\n"
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"\n"
+"Æüìʸ»ú:\n"
+" * dsusp CHAR CHAR ¤ÏÆþÎϤ¬Æɤ߹þ¤Þ¤ì¤ë¤È, üËöÄä»ß¥·¥°¥Ê¥ë¤òÁ÷¿®\n"
+" eof CHAR CHAR ¤Ï¥Õ¥¡¥¤¥ë½ªÃ¼¤òÁ÷¿® (ÆþÎϤνªÎ»)\n"
+" eol CHAR CHAR ¤Ï¹ÔËö\n"
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+" * eol2 CHAR ¹ÔËö¤ò¼¨¤¹Ê̤ΠCHAR\n"
+" erase CHAR CHAR ¤ÏºÇ¸å¤Ë¥¿¥¤¥×¤µ¤ì¤¿Ê¸»ú¤òºï½ü\n"
+" intr CHAR CHAR ¤Ï³ä¤ê¹þ¤ß¥·¥°¥Ê¥ë¤òÁ÷¿®\n"
+" kill CHAR CHAR ¤Ï¸½ºß¤Î¹Ô¤òºï½ü\n"
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+" * lnext CHAR CHAR ¤Ï°úÍѤµ¤ì¤¿¼¡¤Îʸ»ú¤òÆþÎÏ\n"
+" quit CHAR CHAR ¤Ï½ªÎ»¥·¥°¥Ê¥ë¤òÁ÷¿®\n"
+" * rprnt CHAR CHAR ¤Ï¸½ºß¤Î¹Ô¤òºÆɽ¼¨\n"
+" start CHAR CHAR ¤ÏÄä»ß¤·¤¿½ÐÎϤòºÆ³«\n"
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+" stop CHAR CHAR ½ÐÎϤòÄä»ß\n"
+" susp CHAR CHAR ¤ÏüËöÄä»ß¥·¥°¥Ê¥ë¤òÁ÷¿®\n"
+" * swtch CHAR CHAR ¤ÏÊ̤Υ·¥§¥ëÁؤËÀÚ¤êÂؤ¨\n"
+" * werase CHAR CHAR ¤ÏºÇ¸å¤Ë¥¿¥¤¥×¤µ¤ì¤¿Ã±¸ì¤òºï½ü\n"
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"\n"
+"ÆüìÀßÄê:\n"
+" N Æþ½ÐÎϤήÅÙ¤ò N ¥Ü¡¼¤ËÀßÄê\n"
+" * cols N ¥¿¡¼¥ß¥Ê¥ë¤¬ N ·å¤Ç¤¢¤ë¤³¤È¤ò¥«¡¼¥Í¥ë¤ËÄÌÃÎ\n"
+" * columns N cols N ¤ÈƱ¤¸\n"
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+" ispeed N ÆþÎÏ®ÅÙ¤ò N ¤ËÀßÄê\n"
+" * line N ²óÀþÀ©¸æµ¬Â§ N ¤ò»ÈÍÑ\n"
+" min N -icanon ¤È¶¦¤Ë»È¤¤, ´°Á´¤ÊÆɹþ¤ß¤ËÂФ·¤ÆºÇÄã N ʸ»ú¤òÀßÄê\n"
+" ospeed N ½ÐÎÏ®ÅÙ¤ò N ¤ËÀßÄê\n"
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+" * rows N ¥¿¡¼¥à¤Ê¤ë¤¬ N ¹Ô¤Ç¤¢¤ë¤³¤È¤ò¥«¡¼¥Í¥ë¤ËÄÌÃÎ\n"
+" * size ¥«¡¼¥Í¥ë¤ËÂбþ¤·¤¿¹Ô¿ô¤È·å¿ô¤òɽ¼¨\n"
+" speed üËö®ÅÙ¤òɽ¼¨\n"
+" time N -icanon ¤È¶¦¤Ë»È¤¤, Æɹþ¤ß¤Î¥¿¥¤¥à¥¢¥¦¥È¤ò 10 ʬ¤Î N ÉäËÀß"
+"Äê\n"
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"\n"
+"À©¸æÀßÄê:\n"
+" [-]clocal ¥â¥Ç¥àÀ©¸æ¿®¹æ¤ò̵¸ú¤Ë\n"
+" [-]cread ¼õ¤±¼è¤ëÆþÎϤòµö²Ä\n"
+" * [-]crtscts RTS/CTS ¥Ï¥ó¥É¥·¥§¥¤¥¯¤òÍ­¸ú¤Ë\n"
+" csN ʸ»ú¤ÎÂ礭¤µ¤ò N ¥Ó¥Ã¥È¤ËÀßÄê, N ¤ÎÈÏ°Ï¤Ï [5..8]\n"
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+" [-]cstopb 1ʸ»ú¤¢¤¿¤ê 2¥¹¥È¥Ã¥×¥Ó¥Ã¥È¤ò»ÈÍÑ (1 ¤Î¾ì¹ç¤Ï `-' ¤òÉÕ¤±"
+"¤ë)\n"
+" [-]hup ºÇ¸å¤Î¥×¥í¥»¥¹¤¬ tty ¤òÊĤ¸¤¿¤é¥Ï¥ó¥°¥¢¥Ã¥×¥·¥°¥Ê¥ë¤òÁ÷¤ë\n"
+" [-]hupcl [-]hup ¤ÈƱ¤¸\n"
+" [-]parenb ¥Ñ¥ê¥Æ¥£¥Ó¥Ã¥È¤ò½ÐÎϤ·, ÆþÎϤ˥ѥê¥Æ¥£¥Ó¥Ã¥È¤¬¤¢¤ë¤È¤¹¤ë\n"
+" [-]parodd ´ñ¥Ñ¥ê¥Æ¥£¤òÀßÄê (¶ö¤Ï `-')\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"\n"
+"ÆþÎÏÀßÄê:\n"
+" [-]brkint ¥Ö¥ì¥¤¥¯¤Ç³ä¤ê¹þ¤ß¥·¥°¥Ê¥ë¤òȯÀ¸\n"
+" [-]icrnl Éüµ¢ (CR) ¤ò²þ¹Ô (LF) ¤ËËÝÌõ\n"
+" [-]ignbrk ¥Ö¥ì¥¤¥¯Ê¸»ú¤ò̵»ë\n"
+" [-]igncr Éüµ¢ (CR) ¤ò̵»ë\n"
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+" [-]ignpar ¥Ñ¥ê¥Æ¥£¥¨¥é¡¼¤Î¤¢¤ëʸ»ú¤ò̵»ë\n"
+" * [-]imaxbel ȯ¿®²»¤òÌĤ餷, ʸ»ú¤ËÁ´ÆþÎϥХåե¡¤òÅǤ­½Ð¤µ¤Ê¤¤\n"
+" [-]inlcr ²þ¹Ô (LF) ¤òÉüµ¢ (CR) ¤ËËÝÌõ\n"
+" [-]inpck ÆþÎϥѥê¥Æ¥£¤Î¥Á¥§¥Ã¥¯¤ò²Äǽ¤Ë\n"
+" [-]istrip ÆþÎÏʸ»ú¤ÎºÇ¾å°Ì (Âè8) ¥Ó¥Ã¥È¤òÍî¤È¤¹\n"
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+" * [-]iuclc Âçʸ»ú¤ò¾®Ê¸»ú¤ËËÝÌõ\n"
+" * [-]ixany ³«»Ïʸ»ú¤À¤±¤Ç¤Ê¤¯, Ǥ°Õ¤Îʸ»ú¤Ç½ÐÎϤòºÆ³«\n"
+" [-]ixoff ³«»Ï¤ª¤è¤ÓÄä»ßʸ»ú¤ÎÁ÷¿®¤ò²Äǽ¤Ë\n"
+" [-]ixon XON/XOFF ¥Õ¥í¡¼À©¸æ¤ò²Äǽ¤Ë\n"
+" [-]parmrk ¥Ñ¥ê¥Æ¥£¡¼¥¨¥é¡¼¤ò¥Þ¡¼¥¯ (255-0 ʸ»ú¤Î¥·¡¼¥±¥ó¥¹¤Ç)\n"
+" [-]tandem [-]ixoff ¤ÈƱ¤¸\n"
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"\n"
+"½ÐÎÏÀßÄê:\n"
+" * bsN ¥Ð¥Ã¥¯¥¹¥Ú¡¼¥¹¤ÎÃٱ䥹¥¿¥¤¥ë. N ¤ÎÈÏ°Ï¤Ï [0..1]\n"
+" * crN Éüµ¢ (CR) Ãٱ䥹¥¿¥¤¥ë. N ¤ÎÈÏ°Ï¤Ï [0..3]\n"
+" * ffN ÍÑ»æÁ÷¤êÃٱ䥹¥¿¥¤¥ë. N ¤ÎÈÏ°Ï¤Ï [0..1]\n"
+" * nlN ²þ¹Ô (LF) Ãٱ䥹¥¿¥¤¥ë. N ¤ÎÈÏ°Ï¤Ï [0..1]\n"
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+" * [-]ocrnl Éüµ¢ (CR) ¤ò²þ¹Ô (LF) ¤ËËÝÌõ\n"
+" * [-]ofdel ¥Ì¥ëʸ»ú¤ÎÂå¤ï¤ê¤ËËä¤á¤ëʸ»ú¤È¤·¤Æºï½üʸ»ú¤ò»ÈÍÑ\n"
+" * [-]ofill ÃÙ±ä¤Î¥¿¥¤¥ß¥ó¥°¤ÎÂå¤ï¤ê¤ËËä¤á¤ëʸ»ú¤ò»ÈÍÑ\n"
+" * [-]olcuc ¾®Ê¸»ú¤òÂçʸ»ú¤ËËÝÌõ\n"
+" * [-]onlcr ²þ¹Ô (LF) ¤òÉüµ¢²þ¹Ô (CR-LF) ¤ËËÝÌõ\n"
+" * [-]onlret ²þ¹Ô (LF) ¤¬Éüµ¢ (CR) ¤È¤·¤Æ¿¶Éñ¤¦\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+" * [-]onocr 1·åÌܤÎÉüµ¢ (CR) ¤òɽ¼¨¤·¤Ê¤¤\n"
+" [-]opost ¥×¥í¥»¥¹¸å½ÐÎÏ\n"
+" * tabN ¿åÊ¿¥¿¥ÖÃٱ䥹¥¿¥¤¥ë. N ¤ÎÈÏ°Ï¤Ï [0..3]\n"
+" * tabs tab0 ¤ÈƱ¤¸\n"
+" * -tabs tab3 ¤ÈƱ¤¸\n"
+" * vtN ¿âľ¥¿¥ÖÃٱ䥹¥¿¥¤¥ë. N ¤ÎÈÏ°Ï¤Ï [0..1]\n"
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"\n"
+"¥í¡¼¥«¥ëÀßÄê:\n"
+" [-]crterase backspace-space-backspace ¤È¤·¤Æºï½üʸ»ú¤ò¥¨¥³¡¼\n"
+" * crtkill echoprt ¤È echoe ¤ÎÀßÄê¤Ë¤·¤¿¤¬¤Ã¤ÆÁ´¤Æ¤Î¹Ô¤òºï½ü\n"
+" * -crtkill echoctl ¤È echok ¤ÎÀßÄê¤Ë¤·¤¿¤¬¤Ã¤ÆÁ´¤Æ¤Î¹Ô¤òºï½ü\n"
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+" * [-]ctlecho ¥Ï¥Ã¥Èµ­¹æ (`^c') ¤ÇÀ©¸æʸ»ú¤ò¥¨¥³¡¼\n"
+" [-]echo ÆþÎÏʸ»ú¤ò¥¨¥³¡¼\n"
+" * [-]echoctl [-]ctlecho ¤ÈƱ¤¸\n"
+" [-]echoe [-]crterase ¤ÈƱ¤¸\n"
+" [-]echok ºï½üʸ»ú¤Î¸å¤Ç²þ¹Ô¤ò¥¨¥³¡¼\n"
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+" * [-]echoke [-]crtkill ¤ÈƱ¤¸\n"
+" [-]echonl ¾¤Îʸ»ú¤ò¥¨¥³¡¼¤·¤Ê¤¯¤Æ¤â²þ¹Ô¤ò¥¨¥³¡¼\n"
+" * [-]echoprt `\\' ¤È '/' ¤Î´Ö¤Ç, ºï½ü¤µ¤ì¤¿Ê¸»ú¤òµÕ½ç¤Ë¥¨¥³¡¼\n"
+" [-]icanon erase, kill, werase ¤ª¤è¤Ó rprnt Æüìʸ»ú¤ò»ÈÍѲÄǽ¤Ë\n"
+" [-]iexten Èó POSIX Æüìʸ»ú¤ò»ÈÍѲÄǽ¤Ë\n"
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+" [-]isig ³ä¤ê¹þ¤ß (interrupt), ½ªÎ» (quit) ¤ª¤è¤ÓÃæÃÇ (suspend)\n"
+" Æüìʸ»ú¤ò»ÈÍѲÄǽ¤Ë\n"
+" [-]noflsh ³ä¤ê¹þ¤ß (interrupt) ¤È½ªÎ» (quit) Æüìʸ»ú¤Î¸å¤Î½ÐÎϤò̵¸ú"
+"¤Ë\n"
+" * [-]prterase [-]echoprt ¤ÈƱ¤¸\n"
+" * [-]tostop üËö¤Ë½ñ¤­¹þ¤â¤¦¤È¤¹¤ë¥Ð¥Ã¥¯¥°¥é¥¦¥ó¥É¥¸¥ç¥Ö¤òÄä»ß\n"
+" * [-]xcase icanon ¤È¶¦¤Ë»È¤¤, Âçʸ»ú¤ËÂФ·¤Æ `\\' ¤Ç¥¨¥¹¥±¡¼¥×\n"
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+"\n"
+"Áȹ礻ÀßÄê:\n"
+" * [-]LCASE [-]lcase ¤ÈƱ¤¸\n"
+" cbreak -icanon ¤ÈƱ¤¸\n"
+" -cbreak icanon ¤ÈƱ¤¸\n"
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+" cooked brkint ignpar istrip icrnl ixon opost isig ¤ÈƱ¤¸\n"
+" icanon, eof ¤ª¤è¤Ó eol ʸ»ú¤Ïɸ½à¤ÎÃÍ\n"
+" -cooked raw ¤ÈƱ¤¸\n"
+" crt echoe echoctl echoke ¤ÈƱ¤¸\n"
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+" dec echoe echoctl echoke -ixany intr ^c erase 0177 kill ^u ¤ÈƱ"
+"¤¸\n"
+" * [-]decctlq [-]ixany ¤ÈƱ¤¸\n"
+" ek erase ¤È kill ʸ»ú¤òɸ½à¤ÎÃͤË\n"
+" evenp parenb -parodd cs7 ¤ÈƱ¤¸\n"
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+" -evenp -parenb cs8 ¤ÈƱ¤¸\n"
+" * [-]lcase xcase iuclc olcuc ¤ÈƱ¤¸\n"
+" litout -parenb -istrip -opost cs8 ¤ÈƱ¤¸\n"
+" -litout parenb istrip opost cs7 ¤ÈƱ¤¸\n"
+" nl -icrnl -onlcr ¤ÈƱ¤¸\n"
+" -nl icrnl -inlcr -igncr onlcr -ocrnl -onlret ¤ÈƱ¤¸\n"
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+" oddp parenb parodd cs7 ¤ÈƱ¤¸\n"
+" -oddp -parenb cs8 ¤ÈƱ¤¸\n"
+" [-]parity [-]evenp ¤ÈƱ¤¸\n"
+" pass8 -parenb -istrip cs8 ¤ÈƱ¤¸\n"
+" -pass8 parenb istrip cs7 ¤ÈƱ¤¸\n"
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+" raw -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0 ¤ÈƱ¤¸\n"
+" -raw cooked ¤ÈƱ¤¸\n"
+
+#: src/stty.c:709
+#, fuzzy
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+" sane cread -ignbrk brkint -inlcr -igncr icrnl\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke ¤ÈƱ¤¸,\n"
+" Á´¤Æ¤ÎÆüìʸ»ú¤Ïɸ½à¤ÎÃÍ.\n"
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"ɸ½àÆþÎϤȤĤʤ¬¤Ã¤¿Ã¼Ëö¤òÀ©¸æ¤·¤Þ¤¹. °ú¿ô¤¬¤Ê¤±¤ì¤Ð,\n"
+"¥Ü¡¼¥ì¡¼¥È, ²óÀþÀ©¸æµ¬Â§¤ª¤è¤Ó stty sane ¤«¤é¤Î¤º¤ì¤òɽ¼¨¤·¤Þ¤¹.\n"
+"ÀßÄê¤ÎºÝ¤Ë¤Ï, CHAR ¤Ïʸ»úÄ̤ê¤Ë°·¤ï¤ì¤ë¤«, ^c, 0x37, 0177 ¤Þ¤¿¤Ï 127 ¤Î¤è¤¦"
+"¤Ë\n"
+"¥³¡¼¥É²½¤µ¤ì¤Þ¤¹. ÆÃÊ̤ÊÃÍ ^- ¤Þ¤¿¤Ï undef ¤ÏÆüìʸ»ú¤ò̵¸ú¤Ë¤¹¤ë¤Î¤Ë\n"
+"»È¤ï¤ì¤Þ¤¹.\n"
+
+#: src/stty.c:789
+#, fuzzy, c-format
+msgid "only one device may be specified"
+msgstr "°ú¿ô¤ò°ì¤Ä¤À¤±»ØÄê¤Ç¤­¤Þ¤¹"
+
+#: src/stty.c:819
+#, fuzzy, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr "¥ª¥×¥·¥ç¥ó --string ¤È --check ¤ÏÇÓ¾Ū¤Ë»È¤ï¤ì¤Þ¤¹"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "½ÐÎÏ·Á¼°¤ò»ØÄꤷ¤¿¾ì¹ç, ¥â¡¼¥É¤òÀßÄꤷ¤Æ¤Ï¤¤¤±¤Þ¤»¤ó"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: Èó¥Ö¥í¥Ã¥­¥ó¥°¥â¡¼¥É¤òºÆÀßÄê¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: src/stty.c:885 src/stty.c:995
+#, fuzzy, c-format
+msgid "invalid argument %s"
+msgstr "`%2$s' ¤ËÂФ¹¤ë°ú¿ô %1$s ¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, fuzzy, c-format
+msgid "missing argument to %s"
+msgstr "`%2$s' ¤ËÂФ¹¤ë°ú¿ô %1$s ¤¬Û£Ëæ¤Ç¤¹"
+
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "Éý `%s' ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: Í׵ᤵ¤ì¤¿½èÍý¤ÎÁ´¤Æ¤ò¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "new_mode: ¥â¡¼¥É\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: ¤³¤Î¥Ç¥Ð¥¤¥¹¤Î¥µ¥¤¥º¾ðÊ󤬤¢¤ê¤Þ¤»¤ó"
+
+#: src/stty.c:1888
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "¹ÔÈÖ¹æ¤ÎÁýʬ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó: `%s'"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "¥Ñ¥¹¥ï¡¼¥É:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: /dev/tty ¤ò³«¤±¤Þ¤»¤ó"
+
+#: src/su.c:303
+#, fuzzy, c-format
+msgid "cannot set groups"
+msgstr "¥æ¡¼¥¶¤È¥°¥ë¡¼¥×¤ÎξÊý¤ò¾Êά¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó"
+
+#: src/su.c:307
+#, fuzzy, c-format
+msgid "cannot set group id"
+msgstr "¥æ¡¼¥¶¤È¥°¥ë¡¼¥×¤ÎξÊý¤ò¾Êά¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó"
+
+#: src/su.c:309
+#, fuzzy, c-format
+msgid "cannot set user id"
+msgstr "¥æ¡¼¥¶¤È¥°¥ë¡¼¥×¤ÎξÊý¤ò¾Êά¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó"
+
+#: src/su.c:385
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/su.c:386
+#, fuzzy
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"¼Â¸ú¥æ¡¼¥¶ ID ¤ª¤è¤Ó¥°¥ë¡¼¥× ID ¤ò USER ¤Î¤â¤Î¤ËÊѹ¹.\n"
+"\n"
+" -, -l, --login ¥·¥§¥ë¤ò¥í¥°¥¤¥ó¥·¥§¥ë¤Ë\n"
+" -c, --commmand=COMMAND ñ°ì¤Î COMMAND ¤ò -c ÉÕ¤­¤Î¥·¥§¥ë¤ËÅϤ¹\n"
+" -f, --fast -f ¤ò¥·¥§¥ë¤ËÅϤ¹ (csh ¤Þ¤¿¤Ï tcsh ÍÑ)\n"
+" -m, --preserve-environment ´Ä¶­ÊÑ¿ô¤òºÆÀßÄꤷ¤Ê¤¤\n"
+" -p -m ¤ÈƱ¤¸\n"
+" -s, --shell=SHELL /etc/shells ¤¬µö¤»¤Ð SHELL ¤ò¼Â¹Ô\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+"\n"
+"- ¤À¤±¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï -l ¤ò»ØÄꤷ¤¿¤³¤È¤Ë¤Ê¤ê¤Þ¤¹. USER ¤¬»ØÄꤵ¤ì¤Ê¤±¤ì¤Ð, "
+"root ¤¬»ØÄꤵ¤ì¤¿¤³¤È¤Ë¤Ê¤ê¤Þ¤¹.\n"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "%s ¤È¤¤¤¦¥æ¡¼¥¶¤Ï¸ºß¤·¤Þ¤»¤ó"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "¥Ñ¥¹¥ï¡¼¥É¤¬°ã¤¤¤Þ¤¹"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "À©¸ÂÉÕ¤­¥·¥§¥ë %s ¤ò»È¤¤¤Þ¤¹"
+
+#: src/su.c:523
+#, fuzzy, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"³Æ FILE ¤Î¥Á¥§¥Ã¥¯¥µ¥à¤È¥Ö¥í¥Ã¥¯¿ô¤òɽ¼¨¤·¤Þ¤¹.\n"
+"\n"
+" -r -s ¥ª¥×¥·¥ç¥ó¤ò̵¸ú¤Ë¤·¤Æ BSD ·Á¼°¤Î¥Á¥§¥Ã¥¯¥µ¥à\n"
+" ¥¢¥ë¥´¥ê¥º¥à¤òÍøÍѤ·, ¥Ö¥í¥Ã¥¯¤Îñ°Ì¤ò 1K ¥Ð¥¤¥È¤Ë\n"
+" -s, --sysv System V ·Á¼°¤Î¥Á¥§¥Ã¥¯¥µ¥à¥¢¥ë¥´¥ê¥º¥à¤òÍøÍѤ·, \n"
+" ¥Ö¥í¥Ã¥¯¤Îñ°Ì¤ò 512 ¥Ð¥¤¥È¤Ë\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+"¶¯À©Åª¤Ë¥Ç¥£¥¹¥¯¤òÊѹ¹¤µ¤ì¤¿¥Ö¥í¥Ã¥¯¤ËÊѹ¹¤·¡¢¥¹¡¼¥Ñ¡¼¥Ö¥í¥Ã¥¯¤ò¹¹¿·¤¹¤ë¡£\n"
+"\n"
+
+#: src/sync.c:74
+#, fuzzy, c-format
+msgid "ignoring all arguments"
+msgstr "°ú¿ô¤¬Â¿¤¹¤®¤Þ¤¹"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help ¤³¤Î»È¤¤Êý¤òɽ¼¨¤·¤Æ½ªÎ»\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"¥Õ¥¡¥¤¥ëËè¤Ë¹Ô¤òµÕ½ç¤Ë¤·¤Æɸ½à½ÐÎϤ˽ñ¤­¹þ¤ß¤Þ¤¹\n"
+"FILE ¤¬»ØÄꤵ¤ì¤Ê¤¤¤« FILE ¤È¤·¤Æ - ¤¬»ØÄꤵ¤ì¤¿¾ì¹ç, ɸ½àÆþÎϤòÆɤ߹þ¤ß¤Þ"
+"¤¹\n"
+"\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before ¶èÀÚ¤êʸ»úÎó¤ò¥ì¥³¡¼¥É¤ÎÁ°¤Ç¤Ï¤Ê¤¯¸å¤í¤Ë\n"
+" -r, --regex ¶èÀÚ¤êʸ»úÎó¤òÀµµ¬É½¸½¤È¤·¤Æ²ò¼á\n"
+" -s, --separator=STRING ²þ¹Ôʸ»ú¤ÎÂå¤ï¤ê¤Ë STRING ¤ò¶èÀÚ¤êʸ»úÎó¤Ë\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, fuzzy, c-format
+msgid "%s: seek failed"
+msgstr "¥¯¥í¡¼¥º¼ºÇÔ"
+
+#: src/tac.c:265
+#, fuzzy, c-format
+msgid "record too large"
+msgstr "%s: ¥Õ¥¡¥¤¥ë¤¬Ä¹¤¹¤®¤Þ¤¹"
+
+#: src/tac.c:459
+#, fuzzy, c-format
+msgid "cannot create temporary file %s"
+msgstr "°ì»þ¥Õ¥¡¥¤¥ë¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/tac.c:466
+#, fuzzy, c-format
+msgid "cannot open %s for writing"
+msgstr "%s ¤ò Æɤ߹þ¤ßÍѤǥª¡¼¥×¥ó¤Ç¤­¤Þ¤»¤ó"
+
+#: src/tac.c:487 src/tac.c:494
+#, fuzzy, c-format
+msgid "%s: write error"
+msgstr "½ñ¤­¹þ¤ß¥¨¥é¡¼"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "¶èÀÚ¤êʸ»ú¤¬¶õ¤Ç¤¢¤Ã¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"³Æ¡¹¤Î FILE ¤ÎºÇ¸å¤Î %d ¹Ô¤òɸ½à½ÐÎϤ˽ñ¤­½Ð¤·¤Þ¤¹.\n"
+"Ê£¿ô¤Î FILE ¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤Ï, ¥Õ¥¡¥¤¥ë̾¤¬¥Ø¥Ã¥À¾ðÊó¤È¤·¤Æ½ÐÎϤµ¤ì¤Þ¤¹.\n"
+"FILE ¤¬»ØÄꤵ¤ì¤Ê¤¤¤«, FILE ¤¬ - ¤Î¾ì¹ç¤Ï, ɸ½àÆþÎϤ¬Æɤޤì¤Þ¤¹.\n"
+
+#: src/tail.c:229
+#, fuzzy
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry ¼Â¹Ô»þ¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤Ê¤¤, ¤Þ¤¿¤Ï¼Â¹Ô¸å¤Ë¥¢¥¯¥»¥¹\n"
+" ¤Ç¤­¤Ê¤¯¤Ê¤Ã¤¿¤È¤·¤Æ¤â¥Õ¥¡¥¤¥ë¤ò³«¤­Â³¤±¤è¤¦¤È¤¹"
+"¤ë\n"
+" -f ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿¤È¤­¤Î¤ßÍ­¸ú\n"
+" -c, --bytes=N ºÇ¸å¤Î N ¥Ð¥¤¥È¤ò½ÐÎÏ\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={name|descriptor}]\n"
+" ¥Õ¥¡¥¤¥ë¤¬Â礭¤¯¤Ê¤ë¤¿¤Ó¤ËÄɲ䵤줿¥Ç¡¼¥¿¤ò½ÐÎÏ\n"
+" -f, --follow ¤ª¤è¤Ó --follow=descriptor ¤ÏƱ¤¸\n"
+" -F --follow=name --retry ¤ÈƱ¤¸\n"
+
+#: src/tail.c:244
+#, fuzzy, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=N ºÇ¸å¤Î %d ¹Ô¤Ç¤Ï¤Ê¤¯ N ¹Ô¤ò½ÐÎÏ\n"
+" --max-unchanged-stats=N\n"
+" --follow=name ¤È¤È¤â¤Ë»È¤¤, ÆþÎÏ¥Õ¥¡¥¤¥ë¤¬ºï½ü\n"
+" ¤µ¤ì¤Æ¤¤¤¿¤ê̾Á°¤¬Êѹ¹¤µ¤ì¤Æ¤¤¤Ê¤¤¤«¤É¤¦¤«¤Î³Îǧ"
+"¤ò\n"
+" N (ɸ½à %d) ²ó·«¤êÊÖ¤·¤¿¸å¤ËÂ礭¤µ¤¬ÊѤï¤Ã¤Æ¤¤¤Ê"
+"¤¤\n"
+" ¥Õ¥¡¥¤¥ë¤òºÆÅÙ³«¤¯ (¤³¤ì¤Ï rotate ¤µ¤ì¤¿¥í¥°\n"
+" ¥Õ¥¡¥¤¥ë¤Ê¤É¤ËÍ­¸ú¤Ç¤¢¤ë)\n"
+
+#: src/tail.c:256
+#, fuzzy
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID -f ¤È¤È¤â¤Ë»È¤¤, ¥×¥í¥»¥¹ ID ¤¬ PID ¤Î¥×¥í¥»¥¹¤¬\n"
+" ½ªÎ»¤·¤¿¸å¤Ë½ªÎ»\n"
+" -q, --quiet, --silent ¥Õ¥¡¥¤¥ë̾¤ò¼¨¤¹¥Ø¥Ã¥À¤ò½ÐÎϤ·¤Ê¤¤\n"
+" -s, --sleep-interval=S -f ¤È¤È¤â¤Ë»È¤¤, ·«¤êÊÖ¤·½èÍý¤Î´Ö³Ö¤òÌó S (ɸ½à "
+"1)\n"
+" ÉäËÀßÄê\n"
+" -v, --verbose ¾ï¤Ë¥Õ¥¡¥¤¥ë̾¤ò¼¨¤¹¥Ø¥Ã¥À¤ò½ÐÎÏ\n"
+
+#: src/tail.c:265
+#, fuzzy
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"¤â¤· N (¥Ð¥¤¥È¿ô¤Þ¤¿¤Ï¹Ô¿ô) ¤ÎºÇ½é¤Îʸ»ú¤¬ `+' ¤Ê¤é¤Ð, ³Æ¥Õ¥¡¥¤¥ë¤ÎºÇ½é¤«¤é\n"
+"N ÈÖÌܤιàÌܤ«¤éɽ¼¨¤·, ¤½¤¦¤Ç¤Ê¤±¤ì¤Ð, ¥Õ¥¡¥¤¥ë¤ÎºÇ¸å¤Î N ¹àÌܤòɽ¼¨¤·¤Þ"
+"¤¹.\n"
+"N ¤Ë¤ÏÊ£¿ô¤ÎÀÜÈø¼­ (ñ°Ì) ¤¬»ØÄê²Ä: 512 ¤Ç b, 1024 ¤Ç k, 1048576 (1¥á¥¬) ¤Ç "
+"m.\n"
+"\n"
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"--follow (-f) ¤ò»ØÄꤹ¤ë¤È, tail ¤Ïɸ½à¤Ç¥Õ¥¡¥¤¥ëµ­½Ò»Ò¤òÄÉÈø¤·¤Þ¤¹. ¤Ä¤Þ¤ê\n"
+"tail ¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Î̾Á°¤¬Êѹ¹¤µ¤ì¤Æ¤â, tail ¤Ï¤½¤Î½ªÃ¼¤òÄɤ¤¤«¤±Â³¤±¤Þ¤¹. "
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"¤³¤Îɸ½à¤ÎÆ°ºî¤Ï, ¥Õ¥¡¥¤¥ëµ­½Ò»Ò¤Ç¤Ï¤Ê¤¯, ¤½¤Î¥Õ¥¡¥¤¥ë¤Î¼ÂÂÖ¤òÄɤ¤¤«¤±¤¿¤¤¾ì"
+"¹ç\n"
+"¤Ë¤Ï¹¥¤Þ¤·¤¯¤¢¤ê¤Þ¤»¤ó (Î㤨¤Ð¥í¥°¤Î rotate ¤Ê¤É). ¤³¤Î¾ì¹ç¤Ï --follow=name "
+"¤ò\n"
+"¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤. ¤³¤ì¤Ë¤è¤ê tail ¥³¥Þ¥ó¥É¤Ï, ²¿¤«Â¾¤Î¥×¥í¥°¥é¥à¤Ë¤è¤Ã¤Æ\n"
+"¥Õ¥¡¥¤¥ë¤¬ºï½ü¤µ¤ì¤¿¤êºÆºîÀ®¤µ¤ì¤¿¤«¤É¤¦¤«¤òÄ´¤Ù¤ÆÄê´üŪ¤Ë¥Õ¥¡¥¤¥ë¤ò³«¤­Ä¾"
+"¤¹\n"
+"¤³¤È¤Ç, ¤½¤Î̾Á°¤Î¥Õ¥¡¥¤¥ë¤òÄɤ¤¤«¤±¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹.\n"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "%s ¤òÊĤ¸¤Æ¤¤¤Þ¤¹ (fd=%d)"
+
+#: src/tail.c:411
+#, fuzzy, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: ÁêÂÐ¥ª¥Õ¥»¥Ã¥È %s%s ¤ò seek ¤Ç¤­¤Þ¤»¤ó"
+
+#: src/tail.c:415
+#, fuzzy, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s: ½ªÎ»ÅÀ¤«¤é¤ÎÁêÂÐ¥ª¥Õ¥»¥Ã¥È %s%s ¤ò seek ¤Ç¤­¤Þ¤»¤ó"
+
+#: src/tail.c:867
+#, fuzzy, c-format
+msgid "%s has become inaccessible"
+msgstr "`%s' ¤Ï¥¢¥¯¥»¥¹ÉÔǽ¤Ë¤Ê¤ê¤Þ¤·¤¿"
+
+#: src/tail.c:884
+#, fuzzy, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+"`%s' ¤ÏËöÈø¤òÊ᪤Ǥ­¤Ê¤¤¥Õ¥¡¥¤¥ë¤ÇÃÖ¤­´¹¤¨¤é¤ì¤¿¤Î¤Ç, ¤³¤Î¥Õ¥¡¥¤¥ë̾¤Ë¤Ä¤¤¤Æ"
+"¤Ï½èÍý¤ò½ªÎ»"
+
+#: src/tail.c:905
+#, fuzzy, c-format
+msgid "%s has become accessible"
+msgstr "`%s' ¤Ï¥¢¥¯¥»¥¹²Äǽ¤Ë¤Ê¤ê¤Þ¤·¤¿"
+
+#: src/tail.c:913
+#, fuzzy, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "`%s' ¤¬¸½¤ì¤Þ¤·¤¿. ¿·¤·¤¤¥Õ¥¡¥¤¥ë¤Î¥Õ¥¡¥¤¥ëËöÈø¤òÊ᪤·¤Þ¤¹"
+
+#: src/tail.c:924
+#, fuzzy, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "`%s' ¤ÏÃÖ¤­´¹¤¨¤é¤ì¤Þ¤·¤¿. ¿·¤·¤¤¥Õ¥¡¥¤¥ë¤Î¥Õ¥¡¥¤¥ëËöÈø¤òÊ᪤·¤Þ¤¹"
+
+#: src/tail.c:1025
+#, fuzzy, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: Èó¥Ö¥í¥Ã¥­¥ó¥°¥â¡¼¥É¤òºÆÀßÄê¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: ¥Õ¥¡¥¤¥ë¤¬ÀÚ¤êµÍ¤á¤é¤ì¤Þ¤·¤¿"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "²¿¤â¥Õ¥¡¥¤¥ë¤Ï»Ä¤Ã¤Æ¤¤¤Þ¤»¤ó"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+"%s: ¤³¤Î¥¿¥¤¥×¤Î¥Õ¥¡¥¤¥ë¤Î½ªÃ¼¤òÊ᪤Ǥ­¤Ê¤¤¤Î¤Ç, ¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ¤Ï½èÍý"
+"¤ò½ªÎ»¤·¤Þ¤¹"
+
+#: src/tail.c:1439
+#, fuzzy, c-format
+msgid "number in %s is too large"
+msgstr "%s ¤ÏŤ¹¤®¤Þ¤¹"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr "%s: ̵ÊѲ½¤Î¾õÂ֤κÇÂç¿ô¤¬Ìµ¸ú¤Ç¤¹"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: ̵¸ú¤Ê¥×¥í¥»¥¹ÈÖ¹æ¤Ç¤¹"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: ̵¸ú¤ÊÉÿô¤Ç¤¹"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, fuzzy, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "·Ù¹ð: --retry ¤Ï¥Õ¥¡¥¤¥ë̾¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¤È¤­¤À¤±°ÕÌ£¤¬¤¢¤ê¤Þ¤¹"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+"·Ù¹ð: PID ¤Ï̵»ë¤µ¤ì¤Þ¤¹. --pid=PID ¤Ï --follow (-f) ¤ò»ØÄꤷ¤Æ¤¤¤ë¾ì¹ç¤Î¤ß°Õ"
+"Ì£¤¬¤¢¤ê¤Þ¤¹"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "·Ù¹ð: --pid=PID ¤Ï¤³¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
+
+#: src/tail.c:1667
+#, fuzzy, c-format
+msgid "cannot follow %s by name"
+msgstr "°ì»þ¥Õ¥¡¥¤¥ë¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"ɸ½àÆþÎϤò³Æ¡¹¤Î¥Õ¥¡¥¤¥ë¤Ë¥³¥Ô¡¼¤·, ɸ½à½ÐÎϤˤâ½ÐÎÏ.\n"
+"\n"
+" -a, --append »ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤ËÄɲä·, ¾å½ñ¤­¤·¤Ê¤¤\n"
+" -i, --ignore-interrupts ³ä¹þ¤ß¥·¥°¥Ê¥ë¤ò̵»ë\n"
+
+#: src/tee.c:71
+#, fuzzy
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"¥Õ¥¡¥¤¥ë¤Î»ØÄ꤬¤Ê¤«¤Ã¤¿¤ê, - ¤Ç¤¢¤Ã¤¿¾ì¹ç, ɸ½àÆþÎϤ«¤éÆɤ߹þ¤ß¤Þ¤¹.\n"
+
+#: src/test.c:125
+#, fuzzy, c-format
+msgid "missing argument after %s"
+msgstr "`%2$s' ¤ËÂФ¹¤ë°ú¿ô %1$s ¤¬Û£Ëæ¤Ç¤¹"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "%s: ̵¸ú¤ÊÈÖ¹æɽµ­¤Ç¤¹"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "')' ¤¬¤¢¤ê¤Þ¤»¤ó\n"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "')' ¤¬¤¢¤ë¤Ù¤­¤È¤³¤í¤Ë, %s ¤¬¤¢¤ê¤Þ¤¹\n"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: ¥æ¡¼¥Ê¥ê±é»»»Ò¤¬¤¢¤ë¤Ï¤º¤Ç¤¹\n"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "-nt ¤Ï -l ¤ò¼õ¤±ÉÕ¤±¤Þ¤»¤ó\n"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "-ef ¤Ï -l ¤ò¼õ¤±ÉÕ¤±¤Þ¤»¤ó\n"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "-ot ¤Ï -l ¤ò¼õ¤±ÉÕ¤±¤Þ¤»¤ó\n"
+
+#: src/test.c:368
+#, fuzzy
+msgid "unknown binary operator"
+msgstr "̤ÃΤΥ·¥¹¥Æ¥à¥¨¥é¡¼"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: ¥Ð¥¤¥Ê¥ê±é»»»Ò¤¬¤¢¤ë¤Ï¤º¤Ç¤¹\n"
+
+#: src/test.c:694
+#, fuzzy
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥Õ¥¡¥¤¥ë]...\n"
+"¤Þ¤¿¤Ï: %s [¥ª¥×¥·¥ç¥ó]\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"¼°¤Ë¤è¤Ã¤Æ·è¤á¤é¤ì¤¿¾õÂ֤ǽªÎ».\n"
+"\n"
+
+#: src/test.c:707
+#, fuzzy
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"\n"
+"¼°¤Ï¿¿¤«µ¶¤Ç¤¢¤ê, ½ªÎ»¾õÂÖ¤òÀßÄê. ¼°¤Ï°Ê²¼¤Î¤¦¤Á¤Î 1¤Ä:\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+"\n"
+" ( ¼° ) ¼° ¤Ï¿¿\n"
+" ! ¼° ¼° ¤Ïµ¶\n"
+" ¼°1 -a ¼°2 ¼°1 ¤È ¼°2 ¤ÎξÊý¤¬¿¿\n"
+" ¼°1 -o ¼°2 ¼°1 ¤Þ¤¿¤Ï ¼°2 ¤Î¤É¤Á¤é¤«¤¬¿¿\n"
+
+#: src/test.c:719
+#, fuzzy
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"\n"
+" [-n] STRING STRING ¤ÎŤµ¤¬¥¼¥í¤Ç¤Ê¤¤\n"
+" -z STRING STRING ¤ÎŤµ¤¬¥¼¥í\n"
+" STRING1 = STRING2 ʸ»úÎó¤¬Åù¤·¤¤\n"
+" STRING1 != STRING2 ʸ»úÎó¤¬Åù¤·¤¯¤Ê¤¤\n"
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 ¤¬ INTEGER2 ¤ËÅù¤·¤¤\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 ¤¬ INTEGER2 °Ê¾å\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 ¤¬ INTEGER2 ¤è¤êÂ礭¤¤\n"
+" INTEGER1 -le INTEGER2 INTEGER1 ¤¬ INTEGER2 °Ê²¼\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 ¤¬ INTEGER2 ̤Ëþ\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 ¤¬ INTEGER2 ¤ËÅù¤·¤¯¤Ê¤¤\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+"\n"
+" FILE1 -ef FILE2 FILE1 ¤È FILE2 ¤¬Æ±¤¸¥Ç¥Ð¥¤¥¹¤Ç inode ¤âÅù¤·¤¤\n"
+" FILE1 -nt FILE2 FILE1 ¤¬ FILE2 ¤è¤ê (¹¹¿·¤µ¤ì¤¿»þ¹ï¤¬) ¿·¤·¤¤\n"
+" FILE1 -ot FILE2 FILE1 ¤¬ FILE2 ¤è¤ê¸Å¤¤\n"
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+"\n"
+" -b FILE FILE ¤¬Â¸ºß¤·, ³î¤Ä¥Ö¥í¥Ã¥¯¥Ç¥Ð¥¤¥¹¤Ç¤¢¤ë\n"
+" -c FILE FILE ¤¬Â¸ºß¤·, ³î¤Ä¥­¥ã¥é¥¯¥¿¥Ç¥Ð¥¤¥¹¤Ç¤¢¤ë\n"
+" -d FILE FILE ¤¬Â¸ºß¤·, ³î¤Ä¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¢¤ë\n"
+" -e FILE FILE ¤¬Â¸ºß¤¹¤ë\n"
+
+#: src/test.c:749
+#, fuzzy
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+" -f FILE FILE ¤¬Â¸ºß¤·, ³î¤ÄÄ̾ï¤Î¥Õ¥¡¥¤¥ë¤Ç¤¢¤ë\n"
+" -g FILE FILE ¤¬Â¸ºß¤·, ³î¤Ä set-group-ID ¤µ¤ì¤Æ¤¤¤ë\n"
+" -h FILE FILE ¤¬Â¸ºß¤·, ³î¤Ä¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Ç¤¢¤ë (-L ¤ÈƱ¤¸)\n"
+" -G FILE FILE ¤¬Â¸ºß¤·, ³î¤Ä¼Â¸ú¥°¥ë¡¼¥× ID ¤Ë°¤·¤Æ¤¤¤ë\n"
+" -k FILE FILE ¤¬Â¸ºß¤·, ³î¤Ä sticky ¥Ó¥Ã¥È¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë\n"
+
+#: src/test.c:756
+#, fuzzy
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+" -L FILE FILE ¤¬Â¸ºß¤·, ³î¤Ä¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Ç¤¢¤ë (-h ¤ÈƱ¤¸)\n"
+" -O FILE FILE ¤¬Â¸ºß¤·, ³î¤Ä¼Â¸ú¥æ¡¼¥¶ ID ¤Ë½êÍ­¤µ¤ì¤Æ¤¤¤ë\n"
+" -p FILE FILE ¤¬Â¸ºß¤·, ³î¤Ä̾Á°ÉÕ¤­¥Ñ¥¤¥×¤Ç¤¢¤ë\n"
+" -r FILE FILE ¤¬Â¸ºß¤·, ³î¤ÄÆɤ߹þ¤ß²Äǽ¤Ç¤¢¤ë\n"
+" -s FILE FILE ¤¬Â¸ºß¤·, ³î¤Ä 0 ¤è¤êÂ礭¤¤¥µ¥¤¥º¤Ç¤¢¤ë\n"
+
+#: src/test.c:763
+#, fuzzy
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+" -S FILE FILE ¤¬Â¸ºß¤·, ³î¤Ä¥½¥±¥Ã¥È¤Ç¤¢¤ë\n"
+" -t [FD] ¥Õ¥¡¥¤¥ëµ­½Ò»Ò FD (ɸ½à¤Çɸ½à½ÐÎÏ) ¤¬Ã¼Ëö¾å¤Ç³«¤«¤ì¤Æ¤¤¤ë\n"
+" -u FILE FILE ¤¬Â¸ºß¤·, ³î¤Ä set-user-ID ¥Ó¥Ã¥È¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë\n"
+" -w FILE FILE ¤¬Â¸ºß¤·, ³î¤Ä½ñ¤­¹þ¤ß²Äǽ¤Ç¤¢¤ë\n"
+" -x FILE FILE ¤¬Â¸ºß¤·, ³î¤Ä¼Â¹Ô²Äǽ¤Ç¤¢¤ë\n"
+
+#: src/test.c:770
+#, fuzzy
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"¥·¥§¥ë¤ËÂФ·¤Æ³ç¸Ì¤Ï¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ê¤É¤Ç¥¨¥¹¥±¡¼¥×¤·¤Ê¤¯¤Æ¤Ï¤¤¤±¤Ê¤¤\n"
+"¤È¤¤¤¦¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤.\n"
+"INTEGER ¤Ïʸ»úÎó STRING ¤ÎŤµ¤ò¼¨¤¹ -l STRING ¤Ç¤¢¤ë¾ì¹ç¤â¤¢¤ê¤Þ¤¹.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "`]'¤¬Â­¤ê¤Þ¤»¤ó\n"
+
+#: src/test.c:846
+#, fuzzy, c-format
+msgid "extra argument %s"
+msgstr "°ú¿ô¤¬Â¿¤¹¤®¤Þ¤¹"
+
+#: src/touch.c:112 src/touch.c:318
+#, fuzzy, c-format
+msgid "invalid date format %s"
+msgstr "`%2$s' ¤ËÂФ¹¤ë°ú¿ô %1$s ¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
+
+#: src/touch.c:154
+#, fuzzy, c-format
+msgid "creating %s"
+msgstr "¥Õ¥¡¥¤¥ë `%s' ¤òºîÀ®\n"
+
+#: src/touch.c:211
+#, fuzzy, c-format
+msgid "cannot touch %s"
+msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ë°ÜÆ°¤Ç¤­¤Þ¤»¤ó"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "%s ¤Î¥¿¥¤¥à¥¹¥¿¥ó¥×¤òÀßÄêÃæ"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+"³Æ FILE ¤Î¥¢¥¯¥»¥¹¡¦½¤Àµ»þ¹ï¤ò¸½ºß»þ¹ï¤Ë¹¹¿·¤¹¤ë¡£\n"
+"\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a ¥¢¥¯¥»¥¹»þ¹ï¤Î¤ßÊѹ¹¤¹¤ë\n"
+" -c, --no-create ¥Õ¥¡¥¤¥ë¤ò¿·µ¬ºîÀ®¤·¤Ê¤¤\n"
+" -d, --date=STRING STRING ¤ò²ò¼á¤·¡¢¸½ºß»þ¹ï¤ÎÂå¤ê¤Ë»È¤¦\n"
+" -f (̵»ë¤µ¤ì¤ë)\n"
+" -m ½¤Àµ»þ¹ï¤Î¤ßÊѹ¹¤¹¤ë\n"
+
+#: src/touch.c:248
+#, fuzzy
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --reference=FILE ¸½ºß»þ¹ï¤ÎÂå¤ê¤Ë¤³¤Î¥Õ¥¡¥¤¥ë¤Î»þ¹ï¤ò»È¤¦\n"
+" -t STAMP ¸½ºß»þ¹ï¤ÎÂå¤ê¤Ë [[CC]YY]MMDDhhmm[.ss] ¤ò»È¤¦\n"
+" --time=WORD WORD ¤ËÍ¿¤¨¤é¤ì¤¿»þ¹ï¤òÀßÄꤹ¤ë:\n"
+" access atime ¤ò»È¤¦(-a ¤ÈƱ¤¸)\n"
+" modify mtime ¤ò»È¤¦(-m ¤ÈƱ¤¸)\n"
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+
+#: src/touch.c:344
+#, fuzzy, c-format
+msgid "cannot specify times from more than one source"
+msgstr "Ê£¿ô¤Îʬ³äÊýË¡¤Ï»ØÄê¤Ç¤­¤Þ¤»¤ó"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... SET1 [SET2]\n"
+
+#: src/tr.c:294
+#, fuzzy
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"ɸ½àÆþÎϤ«¤éÆɤ߹þ¤ó¤Àʸ»ú¤òÃÖ´¹, °µ½Ì, ºï½ü¤·, ɸ½à½ÐÎϤ˽ñ¤­¹þ¤ß¤Þ¤¹.\n"
+"\n"
+" -c, --complement ºÇ½é¤Ë SET1 ¤òÊ佸¹ç¤ËÃÖ¤­´¹¤¨\n"
+" -d, --delete SET1 Ãæ¤Îʸ»ú¤òºï½ü¤·, ÃÖ´¹¤Ï¹Ô¤ï¤Ê¤¤\n"
+" -s, --squeeze-repeats ·«¤êÊÖ¤µ¤ì¤ëʸ»ú¤ÎÎó¤ò 1 ʸ»ú¤Ë°µ½Ì\n"
+" -t, --truncate-set1 SET1 ¤ÎŤµ¤ò SET2 ¤ÎŤµ¤ËÀÚ¤ê¼Î¤Æ\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"SET ¤Ïʸ»úÎó¤Ë¤è¤Ã¤Æ»ØÄꤷ¤Þ¤¹. ¿¤¯¤Î¾ì¹ç¤½¤Îʸ»ú¼«¿È¤òɽ¸½¤·¤Þ¤¹.\n"
+"²ò¼á¤Î¤µ¤ìÊý¤Ï°Ê²¼¤ÎÄ̤ê:\n"
+"\n"
+" \\NNN ʸ»ú¤Î 8 ¿Ê¿ôɽ¸½(1 ¤«¤é 3 ¸Ä¤Î 8 ¿Ê¿ôÃÍ)\n"
+" \\\\ ¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å\n"
+" \\a ¥Ù¥ë\n"
+" \\b ¥Ð¥Ã¥¯¥¹¥Ú¡¼¥¹\n"
+" \\f ¥Õ¥©¡¼¥à¥Õ¥£¡¼¥É\n"
+" \\n ²þ¹Ô\n"
+" \\r Éüµ¢\n"
+" \\t ¿åÊ¿¥¿¥Ö\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v ¿âľ¥¿¥Ö\n"
+" CHAR1-CHAR2 CHAR1 ¤«¤é CHAR2 ¤Þ¤Ç¤ò¾º½ç¤ËŸ³«¤·¤¿Ê¸»úÎó\n"
+" [CHAR1-CHAR2] SET1 ¤È SET2 ¤ÎξÊý¤Ç»ØÄꤷ¤¿¾ì¹ç¤Ë¤Ï CHAR1-CHAR2 ¤ÈƱ¤¸\n"
+" [CHAR*] SET2 ¤È¤·¤Æ, CHAR ¤ò SET1 ¤ÎŤµÊ¬Å¸³«¤·¤¿Ê¸»úÎó\n"
+" [CHAR*REPEAT] CHAR ¤ò REPEAT ¸ÄŸ³«¤·¤¿Ê¸»úÎó, REPEAT ¤ÎÃͤò 0 ¤«¤é\n"
+" »Ï¤á¤¿¾ì¹ç¤Ë¤Ï, 8 ¿Ê¿ô¤È¤·¤Æ²ò¼á\n"
+" [:alnum:] Á´¤Æ¤Î¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤È¿ô»ú\n"
+" [:alpha:] Á´¤Æ¤Î¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È\n"
+" [:blank:] Á´¤Æ¤Î¿åÊ¿Êý¸þ¶õÇòʸ»ú\n"
+" [:cntrl:] Á´¤Æ¤ÎÀ©¸æʸ»ú\n"
+" [:digit:] Á´¤Æ¤Î¿ô»ú\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] Á´¤Æ¤Îɽ¼¨²Äǽʸ»ú, ¶õÇò¤Ï´Þ¤Þ¤Ê¤¤\n"
+" [:lower:] Á´¤Æ¤Î¾®Ê¸»ú¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È\n"
+" [:print:] Á´¤Æ¤Îɽ¼¨²Äǽʸ»ú, ¶õÇò¤â´Þ¤à\n"
+" [:punct:] Á´¤Æ¤Î¶çÆÉÅÀ\n"
+" [:space:] Á´¤Æ¤Î¿åÊ¿µÚ¤Ó¿âľ¥¿¥Öʸ»ú\n"
+" [:upper:] Á´¤Æ¤ÎÂçʸ»ú¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È\n"
+" [:xdigit:] Á´¤Æ¤Î 16 ¿Ê¿ô¿ôÃÍ\n"
+" [=CHAR=] Á´¤Æ¤Î CHAR ¤ÈÅù²Á¤Êʸ»ú. Åù²Á¥¯¥é¥¹\n"
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"ÃÖ´¹¤Ï -d ¥ª¥×¥·¥ç¥ó¤¬Í¿¤¨¤é¤ì¤º, ¤«¤Ä SET1 ¤È SET2 ¤Î»ØÄ꤬¤¢¤ë¤È¤­¤Ë\n"
+"¹Ô¤Ê¤ï¤ì¤Þ¤¹. -t ¥ª¥×¥·¥ç¥ó¤ÏÃÖ´¹¤Î¼Â¹Ô»þ¤Ë¤Î¤ßÍøÍѤǤ­¤Þ¤¹. SET2 ¤Ï SET1 "
+"¤Î\n"
+"ŤµÊ¬¤òËþ¤¿¤¹¤¿¤áɬÍפ˱þ¤¸¤Æ¤½¤ÎºÇ¸å¤Îʸ»ú¤ÇŸ³«¤·¤Þ¤¹. "
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"SET2 ¤Î;ʬ¤Êʸ»ú¤Ï\n"
+"̵»ë¤µ¤ì¤Þ¤¹. [:lower:] µÚ¤Ó [:upper:] ¤Î¾ì¹ç¤Î¤ß¾º½ç¤ÇŸ³«¤¹¤ë¤³¤È¤¬\n"
+"Êݾڤµ¤ì¤Þ¤¹. ¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤ÏÂçʸ»ú¤È¾®Ê¸»ú¤È¤ÎÃÖ´¹¤Î»ØÄê¤ò¹Ô¤Ê¤¦ºÝ¤Î\n"
+"ÁȤ߹ç¤ï¤»¤È¤·¤ÆÍøÍѤǤ­¤Þ¤¹. "
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"-s ¥ª¥×¥·¥ç¥ó¤Ï, ÃÖ´¹¤Ç¤âºï½ü¤Ç¤â¤Ê¤¤¾ì¹ç\n"
+"SET1 ¤ÎÃͤòÍøÍѤ·¤Þ¤¹. -- ÃÖ´¹¤äºï½ü¤Ç¤¢¤Ã¤¿¾ì¹ç¤Ë¤Ï, ÃÖ´¹¤äºï½ü¤ò¹Ô¤Ê¤Ã¤¿"
+"¸å\n"
+"SET2 ¤òÍøÍѤ·¤¿Ê¸»úÎó¤Î°µ½Ì¤ò¹Ô¤Ê¤¤¤Þ¤¹.\n"
+
+#: src/tr.c:519
+#, fuzzy, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"·Ù¹ð: Û£Ëæ¤Ê 8 ¿Ê¿ô¥¨¥¹¥±¡¼¥× \\%c%c%c ¤Ç¤¹\n"
+"\t2 ¥Ð¥¤¥È¤ÎÎó \\0%c%c, `%c' ¤È¤·¤Æ²ò¼á¤µ¤ì¤Þ¤·¤¿"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "ÈÏ°Ï»ØÄê `%s-%s' ¤ÎüÅÀ¤¬µÕ½ç¤Ë»ØÄꤵ¤ì¤Æ¤¤¤Þ¤¹"
+
+#: src/tr.c:838
+#, fuzzy, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "[c*n] ¤Î¹½À®Æâ¤Î `%s' ¤Ï̵¸ú¤Ê·«¤êÊÖ¤·²ó¿ô¤Ç¤¹"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "ʸ»ú¥¯¥é¥¹Ì¾¤¬¤¢¤ê¤Þ¤»¤ó `[::]'"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "Åù²Á¥¯¥é¥¹¤Îʸ»ú¤¬¤¢¤ê¤Þ¤»¤ó `[==]'"
+
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "`%s' ¤Ï̵¸ú¤Êʸ»ú¼ïÎà¤Ç¤¹"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: Åù²Á¥¯¥é¥¹±é»»»Ò¤Ï°ì¤Ä¤Îʸ»ú¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
+
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr "¥Õ¥£¡¼¥ë¥É»ØÄê¤Ë»È¤¨¤Ê¤¤Ê¸»ú¤¬¤¢¤ê¤Þ¤¹"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "[c*] ·«¤êÊÖ¤·²ó¿ô»ØÄê¤Ï, 1 ¤ÄÌܤÎʸ»úÎóÃæ¤Ç¤ÏÍøÍѤǤ­¤Þ¤»¤ó"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "[c*] ·«¤êÊÖ¤·²ó¿ô»ØÄê¤Ï, 2 ¤Ä¤á¤Îʸ»úÎóÃæ¤Ç¤Ï 1 ¤Ä¤À¤±ÍøÍѤǤ­¤Þ¤»¤ó"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "ÃÖ´¹¤Î»þ¤Ë¤Ï, 2 ¤ÄÌܤÎʸ»úÎóÃæ¤Ç [=c=] ·Á¼°¤Îɽ¸½¤Ï¤Ç¤­¤Þ¤»¤ó"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr ""
+"SET1 ¤òÀÚ¤ê¼Î¤Æ¤ë¤Î¤Ç¤Ï¤Ê¤¤¾ì¹ç¤Ï, 2 ¤Ä¤á¤Îʸ»úÎó¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"Ê佸¹çʸ»ú¥¯¥é¥¹¤ÇÃÖ´¹¤ò¹Ô¤Ê¤¦¤È¤­, 2 ¤ÄÌܤÎʸ»úÎó¤Ï³ºÅö¤¹¤ëʸ»ú¤ÎÁ´¤Æ¤Î\n"
+"ÃÖ´¹·ë²Ì¤òÆÃÄê¤Ç¤­¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"ÃÖ´¹¤Î»þ, 2 ¤Ä¤á¤Îʸ»úÎóÃæ¤ÇÍøÍѤǤ­¤ëʸ»ú¥¯¥é¥¹¤Ï, Âçʸ»ú¤È¾®Ê¸»ú¤À¤±¤Ç¤¹"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "ÃÖ´¹¤ò¹Ô¤Ê¤¦¾ì¹ç [c*] ¤Ï, 2 ¤ÄÌܤÎʸ»úÎó¤Ç¤Î¤ßÍøÍѤǤ­¤Þ¤¹"
+
+#: src/tr.c:1731
+#, fuzzy
+msgid "Two strings must be given when translating."
+msgstr "ÃÖ´¹¤ò¹Ô¤Ê¤¦¾ì¹ç, 2 ¤Ä¤Îʸ»úÎó¤¬Í¿¤¨¤é¤ì¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
+
+#: src/tr.c:1741
+#, fuzzy
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"·«¤êÊÖ¤·¤Î°µ½Ì¤ò¤·¤Ê¤¤¤Çºï½ü¤¹¤ë¤È¤­¤Ë¤Ï, °ì¤Ä¤Îʸ»úÎó¤À¤±¤ò¼õ¤±ÉÕ¤±¤Þ¤¹"
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "[:upper:] ¤È [:lower:] ¤È¤Î¹½À®¤¬°ìÃפ·¤Þ¤»¤ó"
+
+#: src/true.c:42
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥Õ¥¡¥¤¥ë]...\n"
+"¤Þ¤¿¤Ï: %s [¥ª¥×¥·¥ç¥ó]\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó] [¥Õ¥¡¥¤¥ë]\n"
+"¥Õ¥¡¥¤¥ëÃæ¤Î½ç½ø¤Ë¤·¤¿¤¬¤Ã¤Æ, Á´¤Æ¤ò½ç½ø²½¤·¤Æ½ÐÎϤ·¤Þ¤¹.\n"
+"¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Ê¤¤, ¤â¤·¤¯¤Ï¥Õ¥¡¥¤¥ë¤¬ - ¤Î¾ì¹ç¤Ïɸ½àÆþÎϤòÆɤ߹þ¤ß¤Þ"
+"¤¹.\n"
+"\n"
+
+#: src/tsort.c:474
+#, fuzzy, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: ÆþÎϤ˥롼¥×¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹:"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: ÆþÎϤ˥롼¥×¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó] [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"ɸ½àÆþÎϤËÀܳ¤µ¤ì¤Æ¤¤¤ëüËö¤Î¥Õ¥¡¥¤¥ë̾¤ò½ÐÎÏ.\n"
+"\n"
+" -s, --silent, --quiet ²¿¤âɽ¼¨¤·¤Ê¤¤, ½ªÎ»¾õÂÖ¤À¤±¤òÊÖ¤¹\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "tty ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
+
+#: src/uname.c:118
+#, fuzzy
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"¥·¥¹¥Æ¥à¤Î¾ðÊó¤òɽ¼¨. ¥ª¥×¥·¥ç¥ó¤¬Ìµ¤±¤ì¤Ð -s ¤ÈƱ¤¸.\n"
+"\n"
+" -a, --all Á´¤Æ¤Î¾ðÊó¤ò¼¡¤Î½ç¤Çɽ¼¨:\n"
+" -s, --kernel-name ¥«¡¼¥Í¥ë̾¤òɽ¼¨\n"
+" -n, --nodename ¥Í¥Ã¥È¥ï¡¼¥¯¥Î¡¼¥É¥Û¥¹¥È̾¤òɽ¼¨\n"
+" -r, --kernel-release ¥«¡¼¥Í¥ë¥ê¥ê¡¼¥¹¤òɽ¼¨\n"
+
+#: src/uname.c:127
+#, fuzzy
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v, --kernel-version ¥«¡¼¥Í¥ë¥Ð¡¼¥¸¥ç¥ó¤òɽ¼¨\n"
+" -m, --machine ¥Þ¥·¥ó¤Î¥Ï¡¼¥É¥¦¥§¥¢Ì¾¤òɽ¼¨\n"
+" -p, --processor ¥×¥í¥»¥Ã¥µ¤Î¥¿¥¤¥×¤òɽ¼¨\n"
+" -i, --hardware-platform ¥Ï¡¼¥É¥¦¥§¥¢¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤òɽ¼¨\n"
+" -o, --operating-system ¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤òɽ¼¨\n"
+
+#: src/uname.c:236
+#, fuzzy, c-format
+msgid "cannot get system name"
+msgstr "°ì»þ¥Õ¥¡¥¤¥ë¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#: src/unexpand.c:125
+#, fuzzy
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"³Æ¥Õ¥¡¥¤¥ë¤Î¶õÇò¤ò¥¿¥Ö¤ËÊÑ´¹¤·, ɸ½à½ÐÎϤ˽ñ¤­¹þ¤ß¤Þ¤¹.\n"
+"FILE ¤¬»ØÄꤵ¤ì¤Ê¤¤¤«, FILE ¤Ë - ¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤Ë¤Ïɸ½àÆþÎϤòÆɤ߹þ¤ß¤Þ"
+"¤¹.\n"
+"\n"
+
+#: src/unexpand.c:133
+#, fuzzy
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all ÀèƬ¤Î¶õÇò¤À¤±¤Ç¤Ê¤¯, Á´¤Æ¤Î¶õÇò¤ò¥¿¥Ö¤ËÊÑ´¹\n"
+" -t, --tabs=NUMBER 8 ¤ÎÂå¤ï¤ê¤Ë NUMBER ¸Ä¤Î¶õÇò¤ò¥¿¥Ö¤ËÊѹ¹\n"
+" -t, --tabs=LIST ¥«¥ó¥Þ¤Ç¶èÀڤä¿ LIST ¤Ç¥¿¥Ö¤Î°ÌÃÖ¤òÌÀ¼¨Åª¤Ë»ØÄê\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "%s ¤ÏŤ¹¤®¤Þ¤¹"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [ÆþÎϸµ [½ÐÎÏÀè]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"ÆþÎϸµ (¤â¤·¤¯¤Ïɸ½àÆþÎÏ) ¤«¤é½ÅÊ£¹Ô¤ò, ½ÐÎÏÀè (¤â¤·¤¯¤Ïɸ½à½ÐÎÏ) ¤Ø\n"
+"½ñ¤­¹þ¤ß¤Þ¤¹.\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count ÆþÎÏÃæ¤Ë³¤±¤Æ½Ð¸½¤·¤¿¹Ô¤Î²ó¿ô¤òɽ¼¨\n"
+" -d, --repeated ½ÅÊ£¤·¤¿¹Ô¤Î¤ß¤ò½ÐÎÏ\n"
+
+#: src/uniq.c:151
+#, fuzzy
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated[=delimit-method] Á´¤Æ¤Î½ÅÊ£¤·¤¿¹Ô¤ò½ÐÎÏ\n"
+" delimit-method={none(ɸ½à),prepend,separate}\n"
+" ¶èÀÚ¤ê¤Ï¶õ¹Ô¤Ç¹Ô¤Ê¤ï¤ì¤ë.\n"
+" -f, --skip-fields=N ¹Ô¤ÎÀèƬ¤«¤é N ¸Ä¤Î¥Õ¥£¡¼¥ë¥É¤ò̵»ë\n"
+" -i, --ignore-case Âçʸ»ú¾®Ê¸»ú¤Î°ã¤¤¤ò̵»ë\n"
+" -s, --skip-chars=N ºÇ½é¤ÎNʸ»ú¤òÈæ³Ó¤·¤Ê¤¤\n"
+" -u, --unique ½ÅÊ£¤¬¤Ê¤«¤Ã¤¿¹Ô¤Î¤ß¤ò½ÐÎÏ\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr " -w, --check-chars=N ¹ÔÃæ, N ʸ»ú°Ê¾å¤òÈæ³Ó¤·¤Ê¤¤\n"
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"¥Õ¥£¡¼¥ë¥É¤È¤Ï, ¶õÇòʸ»ú¤Ç¶èÀÚ¤é¤ì¤¿, ¶õÇò°Ê³°¤Îʸ»ú¤«¤é¤Ê¤ëʸ»úÎó¤ò\n"
+"»Ø¤·¤Þ¤¹. ºÇ½é¤Î¥Õ¥£¡¼¥ë¥É¤ò 1 ¤È¤·¤Æ¿ô¤¨¤Þ¤¹.\n"
+
+#: src/uniq.c:350
+#, fuzzy, c-format
+msgid "too many repeated lines"
+msgstr "°ú¿ô¤¬Â¿¤¹¤®¤Þ¤¹"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "¥¹¥­¥Ã¥×¤¹¤ë¥Õ¥£¡¼¥ë¥É¿ô¤Î»ØÄ̵꤬¸ú¤Ç¤¹"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "¥¹¥­¥Ã¥×¤¹¤ë¥Ð¥¤¥È¿ô¤Î»ØÄ̵꤬¸ú¤Ç¤¹"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "Èæ³Ó¤¹¤ë¥Ð¥¤¥È¿ô¤Î»ØÄ̵꤬¸ú¤Ç¤¹"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr "Á´¤Æ¤Î½ÅÊ£¹Ô¤È·«¤êÊÖ¤·²ó¿ô¤òɽ¼¨¤¹¤ë¤³¤È¤Ë°ÕÌ£¤¬¤¢¤ê¤Þ¤»¤ó"
+
+#: src/unlink.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥Õ¥¡¥¤¥ë]...\n"
+"¤Þ¤¿¤Ï: %s [¥ª¥×¥·¥ç¥ó]\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+
+#: src/unlink.c:91
+#, fuzzy, c-format
+msgid "cannot unlink %s"
+msgstr "`%s' ¤Ç ioctl() ¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "¥Ö¡¼¥È»þ¹ï¤òÆÀ¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %3$s%1$2d»þ%2$02dʬ ²ÔƯ "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "¸áÁ°"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "¸á¸å"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr ""
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr ""
+
+#: src/uptime.c:143
+#, fuzzy, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%dÆü"
+msgstr[1] "%dÆü"
+
+#: src/uptime.c:147
+#, fuzzy, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "¥æ¡¼¥¶»ØÄ꤬ÉÔÀµ"
+msgstr[1] "¥æ¡¼¥¶»ØÄ꤬ÉÔÀµ"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", Ê¿¶ÑÉé²ÙΨ: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]...\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"¸½ºß¤Î»þ¹ï, ¥·¥¹¥Æ¥àµ¯Æ°¤«¤é¤Î»þ´Ö, ¥·¥¹¥Æ¥à¾å¤Ë¤¤¤ë¥æ¡¼¥¶¿ô¤ª¤è¤Ó\n"
+"²áµî 1ʬ, 5ʬ¤ª¤è¤Ó 15ʬ¤Î¼Â¹Ô¥­¥å¡¼¤Ë¤¢¤ë¥¸¥ç¥Ö¤ÎÊ¿¶Ñ¿ô¤òɽ¼¨.\n"
+"¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð %s ¤ò»ÈÍÑ. \n"
+"¥Õ¥¡¥¤¥ë¤È¤·¤Æ %s ¤¬»ØÄꤵ¤ì¤ë¤È, ¤³¤ì¤Þ¤Ç¤ÎÎßÀѥǡ¼¥¿¤òɽ¼¨.\n"
+"\n"
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"¥Õ¥¡¥¤¥ë¤Ë½¾¤¤, ¸½ºß¥í¥°¥¤¥ó¤·¤Æ¤¤¤ë¥æ¡¼¥¶¤òɽ¼¨.\n"
+"¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð %s ¤ò»ÈÍÑ. \n"
+"¥Õ¥¡¥¤¥ë¤È¤·¤Æ %s ¤¬»ØÄꤵ¤ì¤ë¤È, ¤³¤ì¤Þ¤Ç¤ÎÎßÀѥǡ¼¥¿¤òɽ¼¨.\n"
+"\n"
+
+#: src/wc.c:113
+#, fuzzy
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤Î¥Ð¥¤¥È¿ô, ñ¸ì¿ô, ¹Ô¿ô¤òɽ¼¨¤·¤Þ¤¹. ¹¹¤ËÊ£¿ô¤Î¥Õ¥¡¥¤¥ë"
+"¤¬\n"
+"¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤Ï¹ç·×¹Ô¿ô¤òɽ¼¨¤·¤Þ¤¹. ¥Õ¥¡¥¤¥ë¤Î»ØÄ꤬¤Ê¤«¤Ã¤¿¤ê\n"
+"¥Õ¥¡¥¤¥ë¤¬ - ¤Ç¤¢¤ë¾ì¹ç, ɸ½àÆþÎϤ¬ÆþÎϤȤʤê¤Þ¤¹.\n"
+" -c, --bytes ¥Ð¥¤¥È¿ô¤òɽ¼¨\n"
+" -m, --chars ʸ»ú¿ô¤òɽ¼¨\n"
+" -l, --lines ¹Ô¿ô¤òɽ¼¨\n"
+
+#: src/wc.c:121
+#, fuzzy
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" -L, --max-line-length ºÇ¤âŤ¤¹Ô¤ÎŤµ¤òɽ¼¨\n"
+" -w, --words ñ¸ì¿ô¤òɽ¼¨\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr " ÀÎ "
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "ID="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "üËö="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "½ªÎ»="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "»þ¹ï¤ÎÊѹ¹"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "run-level"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "ºÇ¸å="
+
+#: src/who.c:545
+#, fuzzy, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"¥æ¡¼¥¶¿ô=%u\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "̾Á°"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "üËö"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "»þ´Ö"
+
+#: src/who.c:551
+#, fuzzy
+msgid "IDLE"
+msgstr "¼ºÇÔ"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "¥³¥á¥ó¥È"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "½ªÎ»"
+
+#: src/who.c:633
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... ¥Õ¥¡¥¤¥ë1 ¥Õ¥¡¥¤¥ë2\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" -a, --all -b -d --login -p -r -t -T -u ¤ÈƱ¤¸\n"
+" -b, --boot ºÇ¸å¤Ë¥·¥¹¥Æ¥à¤¬µ¯Æ°¤·¤¿»þ¹ï\n"
+" -d, --dead ½ªÎ»¤·¤¿¥×¥í¥»¥¹¤òɽ¼¨\n"
+" -H, --heading ¥Ø¥Ã¥À¹Ô¤òɽ¼¨\n"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+#, fuzzy
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+" -l, --lookup ¥Û¥¹¥È̾¤Î²ò·è¤Ë DNS ¤ò»È¤Ã¤Æ¤ß¤ë\n"
+" (-l ¤Ï¿ä¾©¤µ¤ì¤Ê¤¤, --lookup ¤ò»ÈÍÑ)\n"
+" -m ɸ½àÆþÎϤ˷Ҥ¬¤Ã¤Æ¤¤¤ë¥æ¡¼¥¶¤È¥Û¥¹¥È̾¤À¤±¤òɽ¼¨\n"
+" -p, --process init ¤«¤éµ¯Æ°¤µ¤ì¤Æ¤¤¤ë¼Â¹ÔÃæ¤Î¥×¥í¥»¥¹¤òɽ¼¨\n"
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+" -q, --count ¥í¥°¥¤¥óÃæ¤Î¥æ¡¼¥¶¤Î¥í¥°¥¤¥ó̾¤È¥æ¡¼¥¶¿ô\n"
+" -r, --runlevel ¸½ºß¤Î¥é¥ó¥ì¥Ù¥ë¤òɽ¼¨\n"
+" -s, --short ̾Á°, ¹Ô¤ª¤è¤Ó»þ´Ö¤Î¤ß¤òɽ¼¨ (ɸ½à)\n"
+" -t, --time ºÇ¸å¤Ë¥·¥¹¥Æ¥à¤Î»þ¹ï¤¬Êѹ¹¤µ¤ì¤¿»þ¹ï¤òɽ¼¨\n"
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+" -T, -w, --mesg ¥æ¡¼¥¶¤Î¥á¥Ã¥»¡¼¥¸¾õÂÖ¤ò +, - ¤Þ¤¿¤Ï ? ¤ÇÄɵ­\n"
+" -u, --users ¥í¥°¥¤¥óÃæ¤Î¥æ¡¼¥¶¤ò°ìÍ÷\n"
+" --message -T ¤ÈƱ¤¸\n"
+" --writable -T ¤ÈƱ¤¸\n"
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Ê¤¤¾ì¹ç¤Ï, %s ¤ò»ÈÍÑ.\n"
+"¥Õ¥¡¥¤¥ë¤È¤·¤Æ %s ¤¬»ØÄꤵ¤ì¤ë¤È, ¤³¤ì¤Þ¤Ç¤ÎÎßÀѥǡ¼¥¿¤òɽ¼¨.\n"
+"°ú¿ô1 °ú¿ô2 ¤¬»ØÄꤵ¤ì¤ë¤È, -m ¤¬²¾Äê: Ä̾ï¤Ï `am i' ¤Þ¤¿¤Ï `mom likes'.\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+"·Ù¹ð: -i ¤Ï¾­Íè¤Î¥ê¥ê¡¼¥¹¤Ç¤Ïºï½ü¤µ¤ì¤Þ¤¹. Âå¤ï¤ê¤Ë -u ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤"
+
+#: src/whoami.c:51
+#, fuzzy
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"¸½ºß¤Î¼Â¸ú¥æ¡¼¥¶ ID ¤ËÂбþ¤·¤¿¥æ¡¼¥¶Ì¾¤òɽ¼¨. `id -un' ¤ÈƱ¤¸.\n"
+"\n"
+
+#: src/whoami.c:95
+#, fuzzy, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "¥æ¡¼¥¶ ID %u ¤ËÂФ¹¤ë¥æ¡¼¥¶Ì¾¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
+
+#: src/yes.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ÈÍÑË¡: %s [¥Õ¥¡¥¤¥ë]...\n"
+"¤Þ¤¿¤Ï: %s [¥ª¥×¥·¥ç¥ó]\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"»ØÄꤵ¤ì¤¿Á´¤Æ¤Îʸ»úÎó¤Þ¤¿¤Ï `y' ¤«¤é¤Ê¤ë¹Ô¤ò·«¤êÊÖ¤·½ÐÎÏ.\n"
+"\n"
+
+#, fuzzy
+#~ msgid "strip failed"
+#~ msgstr "¾õÂÖ¸¡ÃμºÇÔ"
+
+#~ msgid "program error"
+#~ msgstr "¥×¥í¥°¥é¥à¥¨¥é¡¼"
+
+#~ msgid "stack overflow"
+#~ msgstr "¥¹¥¿¥Ã¥¯¥ª¡¼¥Ð¡¼¥Õ¥í¡¼"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "%s ¤Î¥ª¡¼¥Ê¡¼¤È¥°¥ë¡¼¥×¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ë°ÜÆ°¤Ç¤­¤Þ¤»¤ó"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "¿ô»ú¤Î UID ¤Î¥í¥°¥¤¥ó¥°¥ë¡¼¥×¤ò¼èÆÀ¤Ç¤­¤Þ¤»¤ó"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ "\n"
+#~ "[»²¹ÍÌõ]\n"
+#~ "¤³¤ì¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹. ¥³¥Ô¡¼¤Î¾ò·ï¤Ë¤Ä¤¤¤Æ¤Ï¥½¡¼¥¹¤ò¤ªÆɤߤ¯¤À¤µ"
+#~ "¤¤.\n"
+#~ "»Ô¾ìÀ­µÚ¤ÓÆÃÄêÌÜŪŬ¹çÀ­¤ÎÇ¡²¿¤Ë¤è¤é¤º, ¤¤¤«¤Ê¤ëÊݾڤ⤢¤ê¤Þ¤»¤ó.\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "°ú¿ô¤¬Â­¤ê¤Þ¤»¤ó"
+
+#~ msgid "Torbjorn Granlund and Richard M. Stallman"
+#~ msgstr "Torbjorn Granlund ¤È Richard M. Stallman"
+
+#, fuzzy
+#~ msgid "closing standard output"
+#~ msgstr "ɸ½à½ÐÎÏ"
+
+#, fuzzy
+#~ msgid "cannot change to null group"
+#~ msgstr "%s ¤Î¥ª¡¼¥Ê¡¼¤È¥°¥ë¡¼¥×¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+
+#~ msgid "group number"
+#~ msgstr "¥°¥ë¡¼¥×ÈÖ¹æ"
+
+#, fuzzy
+#~ msgid "invalid group number %s"
+#~ msgstr "%s: ̵¸ú¤ÊÈÖ¹æɽµ­¤Ç¤¹"
+
+#~ msgid ""
+#~ "\n"
+#~ "Each MODE is one or more of the letters ugoa, one of the symbols +-= and\n"
+#~ "one or more of the letters rwxXstugo.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "¥¢¥¯¥»¥¹¥â¡¼¥É¤Ï¡¢1 ʸ»úËô¤Ï¤½¤ì°Ê¾å¤Î `ugoa' ¤Î¤¤¤º¤ì¤«¤Îʸ»ú¤ÎÁȤ߹ç¤ï"
+#~ "¤»\n"
+#~ "¤Ç¥æ¡¼¥¶¥¢¥¯¥»¥¹¸¢¤òɽ¤·¡¢¼¡¤Ë `+-=' ¤Î±é»»»Ò 1 ʸ»ú¤Ë¤è¤Ã¤ÆÊѹ¹Æ°ºî¤ò»Ø"
+#~ "Äê\n"
+#~ "¤·¡¢ºÇ¸å¤Ë 1 ʸ»úËô¤Ï¤½¤ì°Ê¾å¤Î `rwxXstugo' ¤Î¤¤¤º¤ì¤«¤Îʸ»ú¤ÎÁȹç¤ï¤»¤Ç\n"
+#~ "Êѹ¹¤¹¤ë°À­¤ò»ØÄꤹ¤ë¡£\n"
+
+#, fuzzy
+#~ msgid "invalid mode string: %s"
+#~ msgstr "·¿»ØÄ꤬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹ `%s'"
+
+#, fuzzy
+#~ msgid "unable to restore permissions of %s"
+#~ msgstr "%s ¤Î°À­¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... LAST\n"
+#~ "¤â¤·¤¯¤Ï: %s [¥ª¥×¥·¥ç¥ó]... FIRST LAST\n"
+#~ "¤â¤·¤¯¤Ï: %s [¥ª¥×¥·¥ç¥ó]... FIRST INCREMENT LAST\n"
+
+#~ msgid "Richard Stallman and David MacKenzie"
+#~ msgstr "Richard Stallman ¤È David MacKenzie"
+
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... ¥Õ¥¡¥¤¥ëA ¥Õ¥¡¥¤¥ëB\n"
+
+#, fuzzy
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "Torbjorn Granlund, David MacKenzie, and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie ¤ª¤è¤Ó Jim Meyering"
+
+#, fuzzy
+#~ msgid "missing file arguments"
+#~ msgstr "°ú¿ô¤¬Â­¤ê¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "%s ¤Ï¸ºß¤·¤Þ¤¹¤¬¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
+
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr ""
+#~ "Ê£¿ô¥Õ¥¡¥¤¥ë¤Î¥³¥Ô¡¼¤Ç¤¹¤¬¡¢ºÇ¸å¤Î°ú¿ô %s ¤¬¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "·Ù¹ð: -i ¤Ï¾­Íè¤Î¥ê¥ê¡¼¥¹¤Ç¤Ïºï½ü¤µ¤ì¤Þ¤¹. Âå¤ï¤ê¤Ë -u ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤"
+
+#, fuzzy
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "·Ù¹ð: --pid=PID ¤Ï¤³¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
+
+#~ msgid "Stuart Kemp and David MacKenzie"
+#~ msgstr "Stuart Kemp ¤È David MacKenzie"
+
+#~ msgid "%s: `+' or `-' expected after delimeter"
+#~ msgstr "%s: ¥Ç¥ê¥ß¥¿(`/') ¤Î¼¡¤Ë¤Ï `+',`-' ÉÕ¤­¤ÎÀ°¿ôÃͤò»ØÄꤷ¤Æ²¼¤µ¤¤"
+
+#~ msgid "David Ihnat, David MacKenzie, and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie ¤ª¤è¤Ó Jim Meyering"
+
+#~ msgid ""
+#~ "Display the current time in the given FORMAT, or set the system date.\n"
+#~ "\n"
+#~ " -d, --date=STRING display time described by STRING, not `now'\n"
+#~ " -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+#~ " -ITIMESPEC, --iso-8601[=TIMESPEC] output date/time in ISO 8601 "
+#~ "format.\n"
+#~ " TIMESPEC=`date' for date only,\n"
+#~ " `hours', `minutes', or `seconds' for date "
+#~ "and\n"
+#~ " time to the indicated precision.\n"
+#~ " --iso-8601 without TIMESPEC defaults to "
+#~ "`date'.\n"
+#~ msgstr ""
+#~ "»ØÄꤵ¤ì¤¿¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¸½ºß¤Î»þ¹ï¤òɽ¼¨, ¤â¤·¤¯¤Ï¥·¥¹¥Æ¥à»þ¹ï¤òÀßÄê.\n"
+#~ "\n"
+#~ " -d, --date=STRING ¸½ºß¤Ç¤Ê¤¯, STRING ¤Ç»ØÄꤵ¤ì¤¿»þ¹ï¤òɽ¼¨\n"
+#~ " -f, --file=DATEFILE DATEFILE ¤Î³Æ¹Ô¤ËÂФ·¤Æ --date ¤Î¤è¤¦¤Ëɽ¼¨\n"
+#~ " -ITIMESPEC, --iso-8601[=TIMESPEC] ISO 8601 ·Á¼°¤ÇÆüÉÕ¤ä»þ¹ï¤ò½ÐÎÏ.\n"
+#~ " ÆüÉդΤߤʤé TIMESPEC=`date', ÆüÉդȻþ¹ï¤Ê¤é\n"
+#~ " `hours', `minutes', `seconds' ¤Î¤¤¤º¤ì¤«¤òɽ"
+#~ "¼¨\n"
+#~ " ¤·¤¿¤¤ÀºÅ٤ޤǻØÄê.\n"
+#~ " TIMESPEC ¤Ê¤·¤Î --iso-8601 ¤Ïɸ½à¤Ç `date'.\n"
+
+#~ msgid ""
+#~ " %F same as %Y-%m-%d\n"
+#~ " %g the 2-digit year corresponding to the %V week number\n"
+#~ " %G the 4-digit year corresponding to the %V week number\n"
+#~ msgstr ""
+#~ " %F %Y-%m-%d ¤ÈƱ¤¸\n"
+#~ " %g %V ¤Î½µÈÖ¹æ¤ËÂбþ¤·¤¿ 2·å¤Îǯ\n"
+#~ " %G %V ¤Î½µÈÖ¹æ¤ËÂбþ¤·¤¿ 4·å¤Îǯ\n"
+
+#~ msgid ""
+#~ " %z RFC-822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %Z time zone (e.g., EDT), or nothing if no time zone is determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr ""
+#~ " %z RFC-822 ·Á¼°¤Î¿ô»ú¤Ë¤è¤ë¥¿¥¤¥à¥¾¡¼¥ó (-0500) (Èóɸ½à³ÈÄ¥)\n"
+#~ " %Z ¥¿¥¤¥à¥¾¡¼¥ó (Îã EDT), ¥¿¥¤¥à¥¾¡¼¥ó¤¬·è¤á¤é¤ì¤Ê¤¤¾ì¹ç¤Ï²¿¤âɽ¼¨¤·¤Ê"
+#~ "¤¤\n"
+#~ "\n"
+#~ "ɸ½à¤Ç¤Ï, date ¥³¥Þ¥ó¥É¤Ï¿ôÃÍÍó¤ò¥¼¥í¤ÇËä¤á¤Þ¤¹. GNU date ¥³¥Þ¥ó¥É¤Ç¤Ï,\n"
+#~ "`%' ¤È¿ôÃÍɽ¼¨Ì¿Îá¤Î´Ö¤Ë°Ê²¼¤Î½¤¾þµ­¹æ¤ò»ØÄꤹ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹.\n"
+#~ "\n"
+#~ " `-' (¥Ï¥¤¥Õ¥ó) Íó¤òËä¤á¤Ê¤¤\n"
+#~ " `_' (²¼Àþ) Íó¤ò¥¹¥Ú¡¼¥¹¤ÇËä¤á¤ë\n"
+
+#, fuzzy
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "È󥪥ץ·¥ç¥ó°ú¿ô¤Î¿ô¤¬Â¿¤¹¤®¤Þ¤¹"
+
+#, fuzzy
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-822 (-R) option"
+#~ msgstr "--string ¥ª¥×¥·¥ç¥ó¤òÍøÍѤ¹¤ë¤È¤­¤Ï, ¥Õ¥¡¥¤¥ë¤ò»ØÄê¤Ç¤­¤Þ¤»¤ó"
+
+#~ msgid "undefined"
+#~ msgstr "ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "cannot get time of day"
+#~ msgstr "Ê£¿ô¤Îʬ³äÊýË¡¤Ï»ØÄê¤Ç¤­¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "Paul Rubin, David MacKenzie, and Stuart Kemp"
+#~ msgstr "Paul Rubin ¤È David MacKenzie"
+
+#~ msgid ""
+#~ " notrunc do not truncate the output file\n"
+#~ " ucase change lower case to upper case\n"
+#~ " swab swap every pair of input bytes\n"
+#~ " noerror continue after read errors\n"
+#~ " sync pad every input block with NULs to ibs-size; when used\n"
+#~ " with block or unblock, pad with spaces rather than NULs\n"
+#~ msgstr ""
+#~ " notrunc ½ÐÎÏ¥Õ¥¡¥¤¥ë¤òÀÚ¤êµÍ¤á¤Ê¤¤\n"
+#~ " ucase ±Ñ¾®Ê¸»ú¤ò±ÑÂçʸ»ú¤ËÊÑ´¹¤¹¤ë\n"
+#~ " swab ÆþÎϤ·¤¿Á´¤Æ¤Î 2 ¥Ð¥¤¥È¤ÎÁȤò¤½¤ì¤¾¤ì¸ò´¹¤¹¤ë\n"
+#~ " noerror ÆþÎÏ¥¨¥é¡¼¤¬À¸¤¸¤Æ¤â½èÍý¤ò³¤±¤ë\n"
+#~ " sync ³ÆÆþÎÏ¥Ö¥í¥Ã¥¯¤¬ ibs ¤ÎÂ礭¤µ¤Ë¤Ê¤ë¤è¤¦¤Ë NUL ¤ÇËä¤á¤ë\n"
+#~ " - block, unblock ¤È¶¦¤Ë»È¤¦¤È NUL ¤Ç¤Ï¤Ê¤¯¶õÇò¤ÇËä¤á¤ë\n"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "Æɤ߹þ¤ó¤À¥Ö¥í¥Ã¥¯¿ô¤Ï %s+%s\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "½ñ¤­¹þ¤ó¤À¥Ö¥í¥Ã¥¯¿ô¤Ï %s+%s\n"
+
+#~ msgid "truncated records"
+#~ msgstr "ÀÚ¤êµÍ¤á¤é¤ì¤¿½ñ¤­¹þ¤ß¥Ö¥í¥Ã¥¯¿ô"
+
+#~ msgid ""
+#~ "only one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, "
+#~ "{unblock,sync}"
+#~ msgstr ""
+#~ "`-conv'¤Ë¤è¤ê°ìÅ٤ˤǤ­¤ëÊÑ´¹¤Ï {ascii,ebcdic,ibm}, {lcase,ucase}, {block,"
+#~ "unblock}, {unblock,sync} ¤Î¤¤¤º¤ì¤«¤Î¤ß¤Ç¤¹¡£"
+
+#~ msgid " Type"
+#~ msgstr " ¥¿¥¤¥×"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr ""
+#~ "dircolor¤ÎÆâÉô¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò½ÐÎϤ¹¤ë¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿»þ¤Ï¥Õ¥¡¥¤¥ë\n"
+#~ "°ú¿ô¤ò»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "David MacKenzie and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie ¤ª¤è¤Ó Jim Meyering"
+
+#, fuzzy
+#~ msgid ""
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -k like --block-size=1K\n"
+#~ " -l, --count-links count sizes many times if hard linked\n"
+#~ msgstr ""
+#~ " -h, --human-readable ¿Í´Ö¤¬Æɤߤ䤹¤¤·Á¼°¤Ç¥µ¥¤¥º¤òɽ¼¨¤¹¤ë (Îã: 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si Ʊ¾å¡£Ã¢¤·Ã±°Ì¤Ï 1024 ¤Ç¤Ï¤Ê¤¯ 1000 ÇÜ\n"
+#~ " -k, --kilobytes --block-size=1024 ¤ÈƱÍÍ\n"
+#~ " -l, --count-links ¥Ï¡¼¥É¥ê¥ó¥¯¤Ç¤¢¤Ã¤Æ¤â½¸·×¤Ë´Þ¤á¤ë\n"
+
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ msgstr ""
+#~ "ʸ»úÎó¤òɸ½à½ÐÎϤËɽ¼¨.\n"
+#~ "\n"
+#~ " -n ºÇ¸å¤Î²þ¹Ô¤ò½ÐÎϤ·¤Ê¤¤\n"
+#~ " -e ¸å½Ò¤Î¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ç¥¨¥¹¥±¡¼¥×¤µ¤ì¤ëʸ»ú¤ò²ò¼á\n"
+#~ " -E STRING Æâ¤Î¤½¤ì¤é¤Î¥·¡¼¥±¥ó¥¹¤ò²ò¼á¤·¤Ê¤¤\n"
+
+#, fuzzy
+#~ msgid "Richard Mlynarik and David MacKenzie"
+#~ msgstr "Richard Stallman ¤È David MacKenzie"
+
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "`-LIST' ¥ª¥×¥·¥ç¥ó¤Ï²áµî¤Î¤â¤Î¤Ç¤¹. `-t LIST' ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤"
+
+#~ msgid ""
+#~ "warning: unportable BRE: `%s': using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr ""
+#~ "·Ù¹ð: ²ÄȤǤʤ¤ BRE: `%s': ´ðËÜŪ¤ÊÀµµ¬É½¸½¤ÎºÇ½é¤Îʸ»ú¤È¤·¤Æ\n"
+#~ "`^' ¤ò»È¤¦¤³¤È¤Ï²ÄȤǤϤʤ¤¤Î¤Ç̵»ë¤·¤Þ¤¹"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "»ÈÍÑË¡: %s [¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¤ò̵»ë]\n"
+#~ "¤â¤·¤¯¤Ï: %s ¥ª¥×¥·¥ç¥ó\n"
+#~ "¼ºÇÔ¤ò¼¨¤¹¾õÂÖ¥³¡¼¥É¤Ç½ªÎ»¤¹¤ë.\n"
+#~ "\n"
+#~ "¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Ï̾Á°¤òû½Ì¤Ç¤­¤Ê¤¤.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "In -wNUMBER, the letter `w' may be omitted.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "-wNUMBER ¤È¤¤¤¦·Á¼°¤òÍѤ¤¤ëºÝ, ʸ»ú `w' ¤Ï¾Êά¤Ç¤­¤Þ¤¹.\n"
+
+#~ msgid "invalid width option: `%s'"
+#~ msgstr "Éý¤Î¥ª¥×¥·¥ç¥ó `%s' ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "`%s' ¥ª¥×¥·¥ç¥ó¤Ï²áµî¤Î¤â¤Î¤Ç¤¹. `%s' ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤"
+
+#~ msgid ""
+#~ " -c, --bytes=SIZE print first SIZE bytes\n"
+#~ " -n, --lines=NUMBER print first NUMBER lines instead of first 10\n"
+#~ msgstr ""
+#~ " -c, --bytes=SIZE ÀèƬ¤Î SIZE ¥Ð¥¤¥È¿ô¤À¤±½ÐÎÏ\n"
+#~ " -n, --lines=NUMBER ÀèƬ¤Î»ØÄê¹Ô¿ô¹Ô¿ô½ÐÎÏ (¥Ç¥Õ¥©¥ë¥È 10¹Ô)\n"
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "¥ª¥×¥·¥ç¥ó `-%c' ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó"
+
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "`-%s' ¥ª¥×¥·¥ç¥ó¤Ï²áµî¤Î¤â¤Î¤Ç¤¹. `-%c %.*s%.*s%s' ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤"
+
+#, fuzzy
+#~ msgid "Arnold Robbins and David MacKenzie"
+#~ msgstr "Paul Rubin ¤È David MacKenzie"
+
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr ""
+#~ "Ê£¿ô¥Õ¥¡¥¤¥ë¤Î¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤¹¤¬¡¢ºÇ¸å¤Î°ú¿ô %s ¤¬¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤¢¤ê¤Þ¤»"
+#~ "¤ó"
+
+#, fuzzy
+#~ msgid "%s is a directory"
+#~ msgstr "%s ¤Ï¸ºß¤·¤Þ¤¹¤¬¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "%s ¤ËÂФ¹¤ë¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿¤òºÆÇÛÃ֤Ǥ­¤Þ¤»¤ó"
+
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "¥Õ¥¡¥¤¥ë1 ¤Î¥Õ¥£¡¼¥ë¥É¿ô¤¬´Ö°ã¤Ã¤Æ¤Þ¤¹: `%s'"
+
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "¥Õ¥¡¥¤¥ë2 ¤Î¥Õ¥£¡¼¥ë¥É¿ô¤¬´Ö°ã¤Ã¤Æ¤Þ¤¹: `%s'"
+
+#~ msgid "too many non-option arguments"
+#~ msgstr "È󥪥ץ·¥ç¥ó°ú¿ô¤Î¿ô¤¬Â¿¤¹¤®¤Þ¤¹"
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "È󥪥ץ·¥ç¥ó°ú¿ô¤Î¿ô¤¬¾¯¤Ê¤¹¤®¤Þ¤¹"
+
+#, fuzzy
+#~ msgid "Mike Parker and David MacKenzie"
+#~ msgstr "Scott Bartram ¤È David MacKenzie"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: ¤¹¤Ç¤Ë¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Þ¤¹"
+
+#, fuzzy
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯"
+
+#~ msgid "create hard link %s to %s"
+#~ msgstr "%2$s ¤Ø¤Î¥Ï¡¼¥É¥ê¥ó¥¯ %1$s ¤òºîÀ®"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... LAST\n"
+#~ "¤â¤·¤¯¤Ï: %s [¥ª¥×¥·¥ç¥ó]... FIRST LAST\n"
+#~ "¤â¤·¤¯¤Ï: %s [¥ª¥×¥·¥ç¥ó]... FIRST INCREMENT LAST\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr ""
+#~ "Ê£¿ô¤Î¥ê¥ó¥¯¤ò¤Ï¤ë»þ¤Ï¡¢ºÇ¸å¤Î°ú¿ô¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó"
+
+#~ msgid ""
+#~ " -g like -l, but do not list owner\n"
+#~ " -G, --no-group inhibit display of group information\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " --si likewise, but use powers of 1000 not 1024\n"
+#~ " -H, --dereference-command-line follow symbolic links on the command "
+#~ "line\n"
+#~ msgstr ""
+#~ " -g like -l ƱÍͤÀ¤¬½êÍ­¼Ô¤ò¥ê¥¹¥È¤·¤Ê¤¤\n"
+#~ " -G, --no-group ¥°¥ë¡¼¥×¾ðÊó¤Îɽ¼¨¤ò¹Ô¤ï¤Ê¤¤\n"
+#~ " -h, --human-readable ¥µ¥¤¥º¤ò¿Í´Ö¤¬Æɤߤ䤹¤¤·Á¼°¤Çɽ¼¨ (Îã: 1K "
+#~ "234M 2G)\n"
+#~ " --si Ʊ¾å¡£Ã¢¤·Ã±°Ì¤Ï 1024 ¤Ç¤Ï¤Ê¤¯ 1000 ÇÜ\n"
+#~ " -H, --dereference-command-line ¥³¥Þ¥ó¥É¥é¥¤¥ó¤Î¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤òé"
+#~ "¤ë\n"
+
+#~ msgid "Ulrich Drepper and Scott Miller"
+#~ msgstr "Ulrich Drepper ¤È Scott Miller"
+
+#~ msgid ""
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -b, --binary ¥Õ¥¡¥¤¥ë¤ò¥Ð¥¤¥Ê¥ê¥â¡¼¥É¤ÇÆɤ߹þ¤à\n"
+#~ " (DOS/Windows ¤Ç¤Ïɸ½à)\n"
+#~ " -c, --check Í¿¤¨¤é¤ì¤¿¥ê¥¹¥È¤ËÂФ¹¤ë %s Ãͤξȹç¤ò¹Ô¤¦\n"
+#~ " -t, --text ¥Õ¥¡¥¤¥ë¤ò¥Æ¥­¥¹¥È¥â¡¼¥É¤ÇÆɤ߹þ¤à (ɸ½à)\n"
+#~ "\n"
+
+#~ msgid "file"
+#~ msgstr "¥Õ¥¡¥¤¥ë"
+
+#~ msgid "files"
+#~ msgstr "¥Õ¥¡¥¤¥ë"
+
+#~ msgid "checksum"
+#~ msgstr "¥Á¥§¥Ã¥¯¥µ¥à"
+
+#~ msgid "checksums"
+#~ msgstr "¥Á¥§¥Ã¥¯¥µ¥à"
+
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "¥ª¥×¥·¥ç¥ó --string ¤È --check ¤ÏÇÓ¾Ū¤Ë»È¤ï¤ì¤Þ¤¹"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "--string ¥ª¥×¥·¥ç¥ó¤òÍøÍѤ¹¤ë¤È¤­¤Ï, ¥Õ¥¡¥¤¥ë¤ò»ØÄê¤Ç¤­¤Þ¤»¤ó"
+
+#~ msgid "only one argument may be specified when using --check"
+#~ msgstr "--check ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¤­¤Ï, °ú¿ô¤ò°ì¤Ä¤À¤±»ØÄê¤Ç¤­¤Þ¤¹"
+
+#, fuzzy
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "%s ¤Î°À­¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "%s ¤Î°À­¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "wrong number of arguments"
+#~ msgstr "°ú¿ô¤¬Â­¤ê¤Þ¤»¤ó"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr ""
+#~ "̾Á°¤Ä¤­¥Ñ¥¤¥×¤ËÂФ·¤Æ¥á¥¸¥ã¡¼¤ª¤è¤Ó¥Þ¥¤¥Ê¡¼¥Ç¥Ð¥¤¥¹Èֹ椬»ØÄꤵ¤ì¤Æ\n"
+#~ "¤¤¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "%s ¤Î°À­¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "Mike Parker, David MacKenzie, and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie ¤ª¤è¤Ó Jim Meyering"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr ""
+#~ "Ê£¿ô¤Î¥Õ¥¡¥¤¥ë¤ò°ÜÆ°¤µ¤»¤ë»þ¤Ï¡¢ºÇ¸å¤Î°ú¿ô¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»"
+#~ "¤ó"
+
+#~ msgid ""
+#~ "Run COMMAND with an adjusted scheduling priority.\n"
+#~ "With no COMMAND, print the current scheduling priority. ADJUST is 10\n"
+#~ "by default. Range goes from -20 (highest priority) to 19 (lowest).\n"
+#~ "\n"
+#~ " -n, --adjustment=ADJUST increment priority by ADJUST first\n"
+#~ msgstr ""
+#~ "¥¹¥±¥¸¥å¡¼¥ê¥ó¥°¤ÎÍ¥ÀèÅÙ¤òÊѹ¹¤·¤Æ¥×¥í¥°¥é¥à¤ò¼Â¹Ô.\n"
+#~ "¥³¥Þ¥ó¥É¤¬»ØÄꤵ¤ì¤Ê¤¤¾ì¹ç¤Ï, ¸½ºß¤Î¥¹¥±¥¸¥å¡¼¥ê¥ó¥°Í¥Àè½ç°Ì¤òɽ¼¨. ɸ½à"
+#~ "¤Î\n"
+#~ "Í¥Àè½ç°Ì¤Ï 10. »ØÄêÈÏ°Ï¤Ï -20 (ºÇ¹âÍ¥Àè½ç°Ì) ¤«¤é 19 (ºÇÄã) ¤Þ¤Ç.\n"
+#~ "\n"
+#~ " -n, --adjustment=ADJUST ºÇ½é¤ËÍ¥Àè½ç°Ì¤ò ADJUST ¤Ë¾å¤²¤ë\n"
+
+#, fuzzy
+#~ msgid "invalid option `%s'"
+#~ msgstr "Éý¤Î¥ª¥×¥·¥ç¥ó `%s' ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "invalid priority `%s'"
+#~ msgstr "Éý `%s' ¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "cannot get priority"
+#~ msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "cannot set priority"
+#~ msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#~ msgid "Scott Bartram and David MacKenzie"
+#~ msgstr "Scott Bartram ¤È David MacKenzie"
+
+#~ msgid "old-style offset"
+#~ msgstr "¸Å¤¤·Á¼°¤Î¥ª¥Õ¥»¥Ã¥È"
+
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "¸ß´¹¥â¡¼¥É `%s' Ãæ¤Î 2 ¤Ä¤á¤Î±é»»»Ò¤¬Ìµ¸ú"
+
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr "¸ß´¹¥â¡¼¥É¤Ç¤Ï, ¸å¤í 2 ¤Ä¤Î°ú¿ô¤Ï¥ª¥Õ¥»¥Ã¥È¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
+
+#~ msgid "David M. Ihnat and David MacKenzie"
+#~ msgstr "David M. Ihnat ¤È David MacKenzie"
+
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr ""
+#~ "¥Õ¥¡¥¤¥ë̾¤Ë²ÄÈÂÀ­¤¬¤¢¤ë¤«¤ò¿ÇÃÇ.\n"
+#~ "\n"
+#~ " -p, --portability ¤³¤Î¥·¥¹¥Æ¥à¤À¤±¤Ç¤Ê¤¯, Á´ POSIX ¥·¥¹¥Æ¥à¤ËÂФ·¤Æ"
+#~ "¥Á¥§¥Ã¥¯.\n"
+
+#, fuzzy
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "¥¿¥Ö¥µ¥¤¥º¤Î»ØÄê¤ËÉÔÀµ¤Êʸ»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹"
+
+#, fuzzy
+#~ msgid "`%s' is not a directory"
+#~ msgstr "%s ¤Ï¸ºß¤·¤Þ¤¹¤¬¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "¥Ç¥£¥ì¥¯¥È¥ê `%s' ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
+
+#~ msgid "name `%s' has length %ld; exceeds limit of %ld"
+#~ msgstr "¥Õ¥¡¥¤¥ë̾ `%s' ¤ÎŤµ¤Ï %ld; À©¸Â¤Î %ld ¤ò±Û¤¨¤Æ¤¤¤Þ¤¹"
+
+#~ msgid "path `%s' has length %d; exceeds limit of %ld"
+#~ msgstr "¥Ñ¥¹ `%s' ¤ÎŤµ¤Ï %d; À©¸Â¤Î %ld ¤ò±Û¤¨¤Æ¤¤¤Þ¤¹"
+
+#~ msgid "Joseph Arceneaux, David MacKenzie, and Kaveh Ghazi"
+#~ msgstr "Joseph Arceneaux, David MacKenzie ¤ª¤è¤Ó Kaveh Ghazi"
+
+#~ msgid "Pete TerMaat and Roland Huebner"
+#~ msgstr "Pete TerMaat ¤È Roland Huebner"
+
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "`--pages' ¥Ú¡¼¥¸¿ô¤ÎÈÏ°Ï»ØÄ꤬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹: `%s'"
+
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "`--pages' ³«»Ï¥Ú¡¼¥¸»ØÄ̵꤬¸ú¤Ç¤¹: `%s'"
+
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "`--pages' ½ªÎ»¥Ú¡¼¥¸¤Î»ØÄ̵꤬¸ú¤Ç¤¹: `%s'"
+
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr "`--pages' ³«»Ï¥Ú¡¼¥¸¤Î»ØÄ꤬½ªÎ»¥Ú¡¼¥¸¤è¤ê¤âÂ礭¤¤ÃͤˤʤäƤ¤¤Þ¤¹"
+
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "`--columns=¹ÔÉý' ¹ÔÉý¤Î»ØÄ̵꤬¸ú¤Ç¤¹: `%s'"
+
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%b %e %H:%M %Y"
+
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr "³«»Ï¥Ú¡¼¥¸¤Î»ØÄ꤬Áí¥Ú¡¼¥¸¿ô¤è¤ê¤âÂ礭¤¤ÃͤˤʤäƤ¤¤Þ¤¹: `%d'"
+
+#~ msgid "Page %d"
+#~ msgstr "%d ¥Ú¡¼¥¸"
+
+#, fuzzy
+#~ msgid "David MacKenzie and Richard Mlynarik"
+#~ msgstr "David Ihnat, David MacKenzie ¤ª¤è¤Ó Jim Meyering"
+
+#, fuzzy
+#~ msgid "\\%c: invalid escape"
+#~ msgstr "%s: ̵¸ú¤Ê¥Ñ¥¿¡¼¥ó»ØÄê¤Ç¤¹"
+
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "»ÈÍÑË¡: %s ¥Õ¥©¡¼¥Þ¥Ã¥È [¥Ç¡¼¥¿...]\n"
+
+#~ msgid ""
+#~ "This program is distributed in the hope that it will be useful,\n"
+#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+#~ "GNU General Public License for more details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "ËÜ¥×¥í¥°¥é¥à¤ÏÍ­ÍѤǤ¢¤ë¤È´üÂÔ¤·¤Æ¤ª¤ê¤Þ¤¹¤¬, ÇÛÉۤˤ¢¤¿¤Ã¤Æ¤Ï,\n"
+#~ "»Ô¾ìÀ­¤Þ¤¿¤ÏÆÃÄêÌÜŪŬ¹çÀ­¤ËÂФ¹¤ë°ÅÌÛ¤ÎÊݾڤò´Þ¤á¤Æ,\n"
+#~ "¤¤¤«¤Ê¤ëÊݾڤâÃפ·¤Þ¤»¤ó. ¾ÜºÙ¤Ï GNU °ìÈ̸øÍ­»ÈÍѵöÂú¤ò¤ªÆɤߤ¯¤À¤µ¤¤.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+#~ msgstr ""
+#~ "¤¢¤Ê¤¿¤ÏËÜ¥×¥í¥°¥é¥à¤È¤È¤â¤Ë GNU °ìÈ̸øÍ­»ÈÍѵöÂú¤Î¼Ì¤·¤ò¼õ¤±¼è¤Ã¤Æ¤¤¤ë\n"
+#~ "¤Ï¤º¤Ç¤¹¤¬, ¤â¤·¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ï Free Software Foundation, inc.,\n"
+#~ "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ¤Ø¼ê»æ¤ò½ñ¤¤¤Æ¤¯¤À"
+#~ "¤µ¤¤.\n"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ë°ÜÆ°¤Ç¤­¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "%s ¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "cannot lstat %s"
+#~ msgstr "Æü»þ¤òÀßÄê¤Ç¤­¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ë°ÜÆ°¤Ç¤­¤Þ¤»¤ó"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "`.' ¤ä `..' ¤Ïºï½ü¤Ç¤­¤Þ¤»¤ó"
+
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ " -r, -R, --recursive remove the contents of directories recursively\n"
+#~ " -v, --verbose explain what is being done\n"
+#~ msgstr ""
+#~ "°ì¤Ä¤Þ¤¿¤ÏÊ£¿ô¤Î FILE ¤òºï½ü (unlink) ¤¹¤ë¡£\n"
+#~ "\n"
+#~ " -d, --directory FILE ¤¬¶õ¤Ç¤Ï¤Ê¤¤¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¢¤Ã¤Æ¤â unlink ¤¹"
+#~ "¤ë\n"
+#~ " (¥¹¡¼¥Ñ¡¼¥æ¡¼¥¶¤Î¤ß)\n"
+#~ " -f, --force ¸ºß¤·¤Ê¤¤¥Õ¥¡¥¤¥ë¤Ï̵»ë¤·¡¢³Îǧ¤ò¼è¤é¤Ê¤¤\n"
+#~ " -i, --interactive ºï½ü¤ÎÁ°¤Ë³Îǧ¤ò¤È¤ë\n"
+#~ " -r, -R, --recursive ¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¿È¤òºÆµ¢Åª¤Ëºï½ü¤¹¤ë\n"
+#~ " -v, --verbose ¼Â¹Ô¤µ¤ì¤ë¤³¤È¤òÀâÌÀ¤¹¤ë\n"
+
+#~ msgid ""
+#~ "when the starting value is larger than the limit,\n"
+#~ "the increment must be negative"
+#~ msgstr ""
+#~ "½é´ü¤ÎÃͤ¬ºÇ¸å¤ÎÃͤè¤êÂ礭¤¤¤È¤­¤Ï, ¥¹¥Æ¥Ã¥×¿ô¤ÏÉé¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
+
+#~ msgid ""
+#~ "when the starting value is smaller than the limit,\n"
+#~ "the increment must be positive"
+#~ msgstr ""
+#~ "½é´ü¤ÎÃͤ¬ºÇ¸å¤ÎÃͤè¤ê¾®¤µ¤¤¤È¤­¤Ï, ¥¹¥Æ¥Ã¥×¿ô¤ÏÉé¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "Jim Meyering and Paul Eggert"
+#~ msgstr "Mike Haertel ¤È Paul Eggert"
+
+#~ msgid "Mike Haertel and Paul Eggert"
+#~ msgstr "Mike Haertel ¤È Paul Eggert"
+
+#~ msgid "`-%d' option is obsolete; use `-l %d'"
+#~ msgstr "`-%d' ¥ª¥×¥·¥ç¥ó¤Ï²áµî¤Î¤â¤Î¤Ç¤¹. `-l %d' ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤"
+
+#, fuzzy
+#~ msgid ""
+#~ "Display file or filesystem status.\n"
+#~ "\n"
+#~ " -f, --filesystem display filesystem status instead of file status\n"
+#~ " -c --format=FORMAT use the specified FORMAT instead of the default\n"
+#~ " -L, --dereference follow links\n"
+#~ " -t, --terse print the information in terse form\n"
+#~ msgstr ""
+#~ "¥Õ¥¡¥¤¥ë¤ä¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¾õÂÖ¤òɽ¼¨¤¹¤ë¡£\n"
+#~ "\n"
+#~ " -l, --link\t\t¥ê¥ó¥¯¤òé¤ë\n"
+#~ " -f, --filesystem\t¥Õ¥¡¥¤¥ë¤Î¾õÂ֤ǤϤʤ¯¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¾õÂÖ¤òɽ¼¨¤¹"
+#~ "¤ë\n"
+#~ " -t, --terse\t\t´Ê·é¤Ê·Á¼°¤Ç¾ðÊó¤òɽ¼¨¤¹¤ë\n"
+
+#~ msgid "Kayvan Aghaiepour and David MacKenzie"
+#~ msgstr "Kayvan Aghaiepour ¤È David MacKenzie"
+
+#~ msgid "Jay Lepreau and David MacKenzie"
+#~ msgstr "Jay Lepreau ¤È David MacKenzie"
+
+#~ msgid "stdin: read error"
+#~ msgstr "ɸ½àÆþÎÏ: Æɤ߹þ¤ß¥¨¥é¡¼"
+
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "%c: µì¼°¥ª¥×¥·¥ç¥óÃæ¤ÎÀÜÈøʸ»ú¤¬Ìµ¸ú¤Ç¤¹"
+
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "°ú¿ô¤¬Â¿¤¹¤®¤Þ¤¹. tail ¤Îµì¼°¥ª¥×¥·¥ç¥ó (%s) ¤ò»È¤¦¾ì¹ç¤Ï\n"
+#~ "»ØÄê¤Ç¤­¤ë¥Õ¥¡¥¤¥ë¤Ï 1¤Ä¤À¤±¤Ë¤Ê¤ê¤Þ¤¹. Âå¤ï¤ê¤ËÅù²Á¤Î -n ¤Þ¤¿¤Ï -c\n"
+#~ "¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤."
+
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "·Ù¹ð: tail ¤Îµì¼°¥ª¥×¥·¥ç¥ó (%s) ¤Ç¤Ï 2¤Ä°Ê¾å¤Î¥Õ¥¡¥¤¥ë¤ò»ØÄꤹ¤ë¤³¤È¤Ï\n"
+#~ "²ÄÈÂÀ­¤¬¤è¤¯¤¢¤ê¤Þ¤»¤ó. Âå¤ï¤ê¤ËÅù²Á¤Î -n ¤Þ¤¿¤Ï -c ¥ª¥×¥·¥ç¥ó¤ò\n"
+#~ "»È¤Ã¤Æ¤¯¤À¤µ¤¤."
+
+#~ msgid "`%s' option is obsolete; use `%s-%c %.*s'"
+#~ msgstr "`%s' ¥ª¥×¥·¥ç¥ó¤Ï²áµî¤Î¤â¤Î¤Ç¤¹; `%s-%c %.*s' ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤"
+
+#~ msgid "%s: is so large that it is not representable"
+#~ msgstr "%s ¤ÏÂ礭¤¹¤®¤Æɽ¼¨¤Ç¤­¤Þ¤»¤ó"
+
+#~ msgid "%s is larger than the maximum file size on this system"
+#~ msgstr "%s ¤Ï¤³¤Î¥·¥¹¥Æ¥à¤ÎºÇÂç¥Õ¥¡¥¤¥ë¥µ¥¤¥º¤è¤êÂ礭¤¤¤Ç¤¹"
+
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr "%s: ¥µ¥¤¥º¤Î·Ñ³ÊѲ½¤ÎºÇÂç¿ô¤¬Ìµ¸ú¤Ç¤¹"
+
+#, fuzzy
+#~ msgid "Mike Parker, Richard M. Stallman, and David MacKenzie"
+#~ msgstr "Richard Stallman ¤È David MacKenzie"
+
+#~ msgid "argument expected\n"
+#~ msgstr "°ú¿ô¤¬É¬ÍפǤ¹\n"
+
+#~ msgid "integer expression expected %s\n"
+#~ msgstr "%s ¤Ë¤Ï, À°¿ôɽ¸½¤¬É¬ÍפǤ¹\n"
+
+#~ msgid "before -lt"
+#~ msgstr "-lt ¤ÎÁ°"
+
+#~ msgid "after -lt"
+#~ msgstr "-lt ¤Î¸å"
+
+#~ msgid "before -le"
+#~ msgstr "-le ¤ÎÁ°"
+
+#~ msgid "after -le"
+#~ msgstr "-le ¤Î¸å"
+
+#~ msgid "before -gt"
+#~ msgstr "-gt ¤ÎÁ°"
+
+#~ msgid "after -gt"
+#~ msgstr "-gt ¤Î¸å"
+
+#~ msgid "before -ge"
+#~ msgstr "-ge ¤ÎÁ°"
+
+#~ msgid "after -ge"
+#~ msgstr "-ge ¤Î¸å"
+
+#~ msgid "before -ne"
+#~ msgstr "-ne ¤ÎÁ°"
+
+#~ msgid "after -ne"
+#~ msgstr "-ne ¤Î¸å"
+
+#~ msgid "before -eq"
+#~ msgstr "-eq ¤ÎÁ°"
+
+#~ msgid "after -eq"
+#~ msgstr "-eq ¤Î¸å"
+
+#~ msgid "after -t"
+#~ msgstr "-t ¤Î¸å"
+
+#~ msgid "FIXME: ksb and mjb"
+#~ msgstr "FIXME: ksb ¤È mjb"
+
+#, fuzzy
+#~ msgid "too many arguments\n"
+#~ msgstr "°ú¿ô¤¬Â¿¤¹¤®¤Þ¤¹"
+
+#, fuzzy
+#~ msgid "file arguments missing"
+#~ msgstr "°ú¿ô¤¬Â­¤ê¤Þ¤»¤ó"
+
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "̵¸ú¤Ê¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¥¨¥¹¥±¡¼¥× `\\%c'"
+
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr ""
+#~ "ºï½üµÚ¤Ó·«¤êÊÖ¤·Ê¸»ú°µ½Ì¤ÎξÊý¤ò¹Ô¤Ê¤¦¾ì¹ç, 2 ¤Ä¤Îʸ»úÎó¤¬Í¿¤¨¤é¤ì¤Ê¤±¤ì"
+#~ "¤Ð\n"
+#~ "¤Ê¤ê¤Þ¤»¤ó"
+
+#~ msgid "at least one string must be given when squeezing repeats"
+#~ msgstr ""
+#~ "·«¤êÊÖ¤·¤Î°µ½Ì¤ò¹Ô¤¦¤Ë¤Ï, ºÇÄã¸Â 1 ¤Ä¤Îʸ»úÎó¤¬Í¿¤¨¤é¤ì¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
+
+#~ msgid ""
+#~ "invalid identity mapping; when translating, any [:lower:] or [:upper:]\n"
+#~ "construct in string1 must be aligned with a corresponding construct\n"
+#~ "([:upper:] or [:lower:], respectively) in string2"
+#~ msgstr ""
+#~ "̵¸ú¤Ê¥³¡¼¥É¥Þ¥Ã¥Ô¥ó¥°\n"
+#~ " -- ÃÖ´¹¤Î»þ, 1 ¤Ä¤á¤Îʸ»úÎó¤¬ [:lower:] ¤« [:upper:] ¤Î¹½À®¤Ê¤é¤Ð, \n"
+#~ " string2 ¤Ç¤Ï¤½¤ì¤¾¤ì¤ËÂбþ¤¹¤ë¹½À®(¤½¤ì¤¾¤ì [:upper:] ¤« [:lower:])"
+#~ "¤È\n"
+#~ " °ìÃפ·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó."
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "»ÈÍÑË¡: %s [¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¤ò̵»ë]\n"
+#~ "¤â¤·¤¯¤Ï: %s ¥ª¥×¥·¥ç¥ó\n"
+#~ "À®¸ù¤ò¼¨¤¹¾õÂÖ¥³¡¼¥É¤Ç½ªÎ».\n"
+#~ "\n"
+#~ "°Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤Ï̾Á°¤òû½Ì¤Ç¤­¤Ê¤¤.\n"
+#~ "\n"
+
+#~ msgid "only one argument may be specified"
+#~ msgstr "°ú¿ô¤ò°ì¤Ä¤À¤±»ØÄê¤Ç¤­¤Þ¤¹"
+
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr ""
+#~ "`-LIST' ¥ª¥×¥·¥ç¥ó¤Ï²áµî¤Î¤â¤Î¤Ç¤¹. `--first-only -t LIST' ¤ò»È¤Ã¤Æ¤¯¤À¤µ"
+#~ "¤¤"
+
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "`-%lu' ¥ª¥×¥·¥ç¥ó¤Ï²áµî¤Î¤â¤Î¤Ç¤¹; `-f %lu' ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤"
+
+#, fuzzy
+#~ msgid "Joseph Arceneaux and David MacKenzie"
+#~ msgstr "Jay Lepreau ¤È David MacKenzie"
+
+#~ msgid "Paul Rubin and David MacKenzie"
+#~ msgstr "Paul Rubin ¤È David MacKenzie"
+
+#~ msgid "Joseph Arceneaux, David MacKenzie, and Michael Stone"
+#~ msgstr "Joseph Arceneaux, David MacKenzie ¤ª¤è¤Ó Michael Stone"
+
+#~ msgid ""
+#~ " -i, --idle add idle time as HOURS:MINUTES, . or old\n"
+#~ " (deprecated, use -u)\n"
+#~ " --login print system login processes\n"
+#~ " (equivalent to SUS -l)\n"
+#~ msgstr ""
+#~ " -i, --idle ÂÔµ¡»þ´Ö¤ò¡Ö»þ:ʬ¡×¤ä . ¤â¤·¤¯¤Ï¡ÖÀΡפòÄɵ­\n"
+#~ " (¿ä¾©¤µ¤ì¤Ê¤¤, -u ¤ò»ÈÍÑ)\n"
+#~ " --login ¥·¥¹¥Æ¥à¥í¥°¥¤¥ó¥×¥í¥»¥¹¤òɽ¼¨\n"
+#~ " (SUS -l ¤ÈÅù¤·¤¤)\n"
+
+#~ msgid ""
+#~ "Warning: the meaning of '-l' will change in a future release to conform "
+#~ "to POSIX"
+#~ msgstr ""
+#~ "·Ù¹ð: '-l' ¤Î°ÕÌ£¤Ï POSIX ¤Ë¹ç¤ï¤»¤ë¤¿¤á¤Ë¾­Íè¤Î¥ê¥ê¡¼¥¹¤ÇÊѹ¹¤µ¤ì¤Þ¤¹."
+
+#~ msgid "%s: cannot find username for UID %u\n"
+#~ msgstr "%s: UID %u ¤Î¥æ¡¼¥¶Ì¾¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó\n"
+
+#, fuzzy
+#~ msgid "Try %s --help' for more information.\n"
+#~ msgstr "¾Ü¤·¤¯¤Ï `%s --help' ¤ò¼Â¹Ô¤·¤Æ²¼¤µ¤¤.\n"
+
+#, fuzzy
+#~ msgid "cannot lstat `.'"
+#~ msgstr "Æü»þ¤òÀßÄê¤Ç¤­¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "%s: remove directory %s? "
+#~ msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#~ msgid "%s: directory %s is write protected; descend into it anyway? "
+#~ msgstr ""
+#~ "%s: ¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ï½ñ¤­¹þ¤ßÊݸ¤ì¤Æ¤¤¤Þ¤¹¡£\n"
+#~ " -- ¤½¤ì¤Ç¤â²¼¤ê¤Æ¤¤¤­¤Þ¤¹¤«(yes/no)? "
+
+#~ msgid "removing all entries of directory %s\n"
+#~ msgstr "¥Ç¥£¥ì¥¯¥È¥ê `%s' Ãæ¿È¤òÁ´¤Æºï½ü¤·¤Þ¤·¤¿\n"
+
+#~ msgid "continue? "
+#~ msgstr "³¤±¤Þ¤¹¤«(yes/no)? "
+
+#, fuzzy
+#~ msgid "cannot change back to directory %s via `..'"
+#~ msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ë°ÜÆ°¤Ç¤­¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "%s: remove directory %s%s? "
+#~ msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#~ msgid " (might be nonempty)"
+#~ msgstr "(¿ʬ¡¢¥Õ¥¡¥¤¥ë¤¬»Ä¤Ã¤¿¤Þ¤Þ¤Ç¤¹)"
+
+#, fuzzy
+#~ msgid "removing the directory itself: %s\n"
+#~ msgstr "·Ù¹ð: ¥Ç¥£¥ì¥¯¥È¥ê¤ò %s ¤ËÊѹ¹¤Ç¤­¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "cannot remove current directory %s"
+#~ msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "cannot fork"
+#~ msgstr "%s ¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid ""
+#~ "ERROR: the source file %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after opening it), the numbers\n"
+#~ "are %lu/%lu. That means that while this program was running,\n"
+#~ "the file was replaced with another one. Skipping this file."
+#~ msgstr ""
+#~ "¥¨¥é¡¼: ¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ï¸µ¡¹ ¥Ç¥Ð¥¤¥¹¤Þ¤¿¤Ï i ¥Î¡¼¥ÉÈֹ椬 %lu/%lu\n"
+#~ "¤Ç¤·¤¿¤¬¡¢¡Ê¤½¤³¤Ë chdir ¤·¤¿¡Ë¸½ºß¡¢`.' ¤ÎÈÖ¹æ¤Ï %lu/%lu ¤Ç¤¹¡£\n"
+#~ "¤É¤¦±¾¤¦¤³¤È¤«¤È¤¤¤¦¤È¡¢rm ¤¬Æ°ºî¤·¤Æ¤¤¤ë¤¦¤Á¤Ë¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï¾¤Î\n"
+#~ "¥Ç¥£¥ì¥¯¥È¥ê¤Ë°Ü¤µ¤ì¤¿¤«¡¢Â¾¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë link ¤·¤¿¤È±¾¤¦»ö¤Ç¤¹¡£"
+
+#~ msgid ""
+#~ "ERROR: the directory %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after a chdir into it), the numbers for `.'\n"
+#~ "are %lu/%lu. That means that while rm was running, the directory\n"
+#~ "was replaced with either another directory or a link to another directory."
+#~ msgstr ""
+#~ "¥¨¥é¡¼: ¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ï¸µ¡¹ ¥Ç¥Ð¥¤¥¹¤Þ¤¿¤Ï i ¥Î¡¼¥ÉÈֹ椬 %lu/%lu\n"
+#~ "¤Ç¤·¤¿¤¬¡¢¡Ê¤½¤³¤Ë chdir ¤·¤¿¡Ë¸½ºß¡¢`.' ¤ÎÈÖ¹æ¤Ï %lu/%lu ¤Ç¤¹¡£\n"
+#~ "¤É¤¦±¾¤¦¤³¤È¤«¤È¤¤¤¦¤È¡¢rm ¤¬Æ°ºî¤·¤Æ¤¤¤ë¤¦¤Á¤Ë¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï¾¤Î\n"
+#~ "¥Ç¥£¥ì¥¯¥È¥ê¤Ë°Ü¤µ¤ì¤¿¤«¡¢Â¾¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë link ¤·¤¿¤È±¾¤¦»ö¤Ç¤¹¡£"
+
+#, fuzzy
+#~ msgid ""
+#~ "ERROR: the directory %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after changing into at least one subdirectory\n"
+#~ "and changing back via `..'), the numbers for `.' are %lu/%lu.\n"
+#~ "That means that while rm was running, a partially-removed subdirectory\n"
+#~ "was moved to a different position in the file system hierarchy."
+#~ msgstr ""
+#~ "¥¨¥é¡¼: ¥Ç¥£¥ì¥¯¥È¥ê %s ¤Ï¸µ¡¹ ¥Ç¥Ð¥¤¥¹¤Þ¤¿¤Ï i ¥Î¡¼¥ÉÈֹ椬 %lu/%lu\n"
+#~ "¤Ç¤·¤¿¤¬¡¢¡Ê¤½¤³¤Ë chdir ¤·¤¿¡Ë¸½ºß¡¢`.' ¤ÎÈÖ¹æ¤Ï %lu/%lu ¤Ç¤¹¡£\n"
+#~ "¤É¤¦±¾¤¦¤³¤È¤«¤È¤¤¤¦¤È¡¢rm ¤¬Æ°ºî¤·¤Æ¤¤¤ë¤¦¤Á¤Ë¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï¾¤Î\n"
+#~ "¥Ç¥£¥ì¥¯¥È¥ê¤Ë°Ü¤µ¤ì¤¿¤«¡¢Â¾¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë link ¤·¤¿¤È±¾¤¦»ö¤Ç¤¹¡£"
+
+#~ msgid ""
+#~ " --sparse=WHEN control creation of sparse files\n"
+#~ " -R, --recursive copy directories recursively\n"
+#~ " --reply={yes,no,query} specify how to handle the prompt about an\n"
+#~ " existing destination file\n"
+#~ " --strip-trailing-slashes remove any trailing slashes from each "
+#~ "SOURCE\n"
+#~ " argument\n"
+#~ msgstr ""
+#~ " --sparse=WHEN Á¤é¤Ê¥Õ¥¡¥¤¥ë¤ÎºîÀ®¤òÀ©¸æ¤¹¤ë\n"
+#~ " -R, --recursive ¥Ç¥£¥ì¥¯¥È¥ê¤òºÆµ¢Åª¤Ë¥³¥Ô¡¼¤¹¤ë\n"
+#~ " --reply={yes,no,query} ¥³¥Ô¡¼Àè¤Î´û¸¥Õ¥¡¥¤¥ë¤Ë´Ø¤¹¤ëÌ䤤¹ç¤ï¤»"
+#~ "¤Î\n"
+#~ " °·¤¤Êý¤ò»ØÄꤹ¤ë\n"
+#~ " --strip-trailing-slashes ³Æ SOURCE °ú¿ô¤Î;ʬ¤ÊËöÈø¥¹¥é¥Ã¥·¥å¤ò¼è¤ê"
+#~ "½ü¤¯\n"
+
+#, fuzzy
+#~ msgid " or: %s [-acm] MMDDhhmm[YY] FILE... (obsolete)\n"
+#~ msgstr " Ëô¤Ï: %s [-acm] MMDDhhmm[YY] FILE... (ÀΤνñ¼°)\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Note that the three time-date formats recognized for the -d and -t "
+#~ "options\n"
+#~ "and for the obsolescent argument are all different.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "»°¤Ä¤Î `»þ¹ï-ÆüÉÕ' ·Á¼°¤Ï -d ¤ä -t ¥ª¥×¥·¥ç¥óÍѤÈǧ¼±¤µ¤ì¡¢ÇѤ줿½ñ¼°¤Î\n"
+#~ "°ú¿ô¤È¤ÏÁ´¤¯°Û¤Ê¤ë¤³¤È¤ËÃí°Õ¤·¤Þ¤·¤ç¤¦¡£\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»\n"
+
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ " --help ¤³¤Î»È¤¤Êý¤òɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+#~ " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»\n"
+
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ " --help ¤³¤Î»È¤¤Êý¤òɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+#~ " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+#~ "\n"
+
+#~ msgid "Copyright (C) 2001 Free Software Foundation, Inc."
+#~ msgstr "Copyright (C) 2001 Free Software Foundation, Inc."
+
+#~ msgid ""
+#~ "Change the group membership of each FILE to GROUP.\n"
+#~ "\n"
+#~ " -c, --changes like verbose but report only when a change is "
+#~ "made\n"
+#~ " --dereference affect the referent of each symbolic link, "
+#~ "rather\n"
+#~ " than the symbolic link itself\n"
+#~ " -h, --no-dereference affect symbolic links instead of any referenced "
+#~ "file\n"
+#~ " (available only on systems that can change the\n"
+#~ " ownership of a symlink)\n"
+#~ " -f, --silent, --quiet suppress most error messages\n"
+#~ " --reference=RFILE use RFILE's group rather than the specified\n"
+#~ " GROUP value\n"
+#~ " -R, --recursive operate on files and directories recursively\n"
+#~ " -v, --verbose output a diagnostic for every file processed\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "³Æ¥Õ¥¡¥¤¥ë¤Î½êÍ­¥°¥ë¡¼¥×°À­¤ÎÊѹ¹.\n"
+#~ "\n"
+#~ " -c, --changes Êѹ¹¤ò¹Ô¤Ê¤Ã¤¿»þ¤Ë¤Î¤ß¡¢Êѹ¹¤Î·ë²Ì¤òÊó¹ð¤¹¤ë\n"
+#~ " --dereference ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤½¤Î¤â¤Î¤Ç¤Ï¤Ê¤¯¡¢¥ê¥ó¥¯Àè¤Î\n"
+#~ " ¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ±Æ¶Á¤µ¤»¤ë\n"
+#~ " -h, --no-dereference ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Î»²¾ÈÀè¥Õ¥¡¥¤¥ë¤Ç¤Ï¤Ê¤¯\n"
+#~ " ¥ê¥ó¥¯¥Õ¥¡¥¤¥ë¤½¤Î¤â¤Î¤Ë±Æ¶Á¤µ¤»¤ë\n"
+#~ " (lchown() ¤ò¥µ¥Ý¡¼¥È¤¹¤ë¥·¥¹¥Æ¥à¤Ç¤Î¤ßÍ­¸ú)\n"
+#~ " -f, --silent, --quiet ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò¶ËÎÏÍÞ¤¨¤ë\n"
+#~ " --reference=RFILE RFILE ¤Ë»ØÄꤷ¤¿¥Õ¥¡¥¤¥ë¤Î¥°¥ë¡¼¥×̾¤òÍøÍѤ¹¤ë\n"
+#~ " -R, --recursive ¥Ç¥£¥ì¥¯¥È¥ê¤È¤½¤ÎÃæ¿È¤òºÆµ¢Åª¤ËÊѹ¹¤¹¤ë\n"
+#~ " -v, --verbose ¥Õ¥¡¥¤¥ë¤ò½èÍý¤¹¤ë¤¿¤Ó¤Ë¡¢¾ÜºÙ¤ÊÊó¹ð¤ò¹Ô¤Ê¤¦\n"
+#~ " --help »È¤¤Êý¤òɸ½à½ÐÎϤËɽ¼¨¤¹¤ë\n"
+#~ " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɸ½à½ÐÎϤËɽ¼¨¤¹¤ë\n"
+
+#~ msgid ""
+#~ "Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+#~ "\n"
+#~ " -c, --changes like verbose but report only when a change is "
+#~ "made\n"
+#~ " --dereference affect the referent of each symbolic link, "
+#~ "rather\n"
+#~ " than the symbolic link itself\n"
+#~ " -h, --no-dereference affect symbolic links instead of any referenced "
+#~ "file\n"
+#~ " (available only on systems that can change the\n"
+#~ " ownership of a symlink)\n"
+#~ " --from=CURRENT_OWNER:CURRENT_GROUP\n"
+#~ " change the owner and/or group of each file only "
+#~ "if\n"
+#~ " its current owner and/or group match those "
+#~ "specified\n"
+#~ " here. Either may be omitted, in which case a "
+#~ "match\n"
+#~ " is not required for the omitted attribute.\n"
+#~ " -f, --silent, --quiet suppress most error messages\n"
+#~ " --reference=RFILE use RFILE's owner and group rather than\n"
+#~ " the specified OWNER:GROUP values\n"
+#~ " -R, --recursive operate on files and directories recursively\n"
+#~ " -v, --verbose output a diagnostic for every file processed\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "FILE ¤Î½êÍ­¼Ô¤ä¥°¥ë¡¼¥×¤ò OWNER ¤ä GROUP ¤ËÊѹ¹¤¹¤ë¡£\n"
+#~ "\n"
+#~ " -c, --changes Êѹ¹¤ò¹Ô¤Ê¤Ã¤¿¤È¤­¤À¤±¾ÜºÙ¤ÊÊó¹ð¤ò¹Ô¤Ê¤¦\n"
+#~ " --dereference ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤½¤Î¤â¤Î¤Ç¤Ï¤Ê¤¯¡¢¤½¤Î»²¾ÈÀè"
+#~ "¤Î\n"
+#~ " ¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ±Æ¶Á¤òÍ¿¤¨¤ë\n"
+#~ " -h, --no-dereference ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Î»²¾ÈÀè¥Õ¥¡¥¤¥ë¤Ç¤Ï¤Ê¤¯\n"
+#~ " ¥ê¥ó¥¯¥Õ¥¡¥¤¥ë¤½¤Î¤â¤Î¤Ë±Æ¶Á¤òÍ¿¤¨¤ë\n"
+#~ " (¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Î½êͭ°À­¤òÊѹ¹¤Ç¤­¤ë¥·¥¹"
+#~ "¥Æ¥à\n"
+#~ " ¤Ç¤Î¤ßÍ­¸ú)\n"
+#~ " --from=CURRENT_OWNER:CURRENT_GROUP\n"
+#~ " »ØÄꤵ¤ì¤¿½êÍ­¼Ô¤ä¥°¥ë¡¼¥×¤È°ìÃפ¹¤ë¥Õ¥¡¥¤¥ë¤Î"
+#~ "¤ß¡¢\n"
+#~ " ½êÍ­¼Ô¤ä¥°¥ë¡¼¥×¤òÊѹ¹¤¹¤ë¡£¤¤¤º¤ì¤«°ìÊý¤ò¾Ê"
+#~ "ά\n"
+#~ " ¤·¤¿¤È¤­¤Ï¡¢¾Êά¤µ¤ì¤¿Êý¤ò¥Þ¥Ã¥Á¤µ¤»¤Ê¤¤¡£\n"
+#~ " -f, --silent, --quiet ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤òÍÞÀ©¤¹¤ë\n"
+#~ " --reference=RFILE OWNER:GROUP ¤ò»ØÄꤹ¤ëÂå¤ï¤ê¤Ë RFILE ¤Ç»ØÄꤵ¤ì"
+#~ "¤¿\n"
+#~ " ¥Õ¥¡¥¤¥ë¤Î½êÍ­¼Ô¡¦¥°¥ë¡¼¥×¤Î°À­ÃͤòÍøÍѤ¹"
+#~ "¤ë\n"
+#~ " -R, --recursive ¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤Î¥Õ¥¡¥¤¥ë¤ò¡¢ºÆµ¢Åª¤Ë½èÍý¤¹¤ë\n"
+#~ " -v, --verbose ½èÍýËè¤Î¿ÇÃÇÆâÍƤò½ÐÎϤ¹¤ë\n"
+#~ " --help »È¤¤Êý¤òɸ½à½ÐÎϤËɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+#~ " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɸ½à½ÐÎϤËɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+
+#~ msgid ""
+#~ "Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+#~ "\n"
+#~ " -a, --archive same as -dpR\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination "
+#~ "file\n"
+#~ " -b like --backup but does not accept an "
+#~ "argument\n"
+#~ " -d, --no-dereference never follow symbolic links\n"
+#~ " -f, --force if an existing destination file cannot be\n"
+#~ " opened, remove it and try again\n"
+#~ " -i, --interactive prompt before overwrite\n"
+#~ " -H follow command-line symbolic links\n"
+#~ " -l, --link link files instead of copying\n"
+#~ " -L, --dereference always follow symbolic links\n"
+#~ " -p, --preserve preserve file attributes if possible\n"
+#~ " --parents append source path to DIRECTORY\n"
+#~ " -P same as `--parents' for now; soon to "
+#~ "change to\n"
+#~ " `--no-dereference' to conform to POSIX\n"
+#~ " -r copy recursively, non-directories as "
+#~ "files\n"
+#~ " WARNING: use -R instead when you might "
+#~ "copy\n"
+#~ " special files like FIFOs or /dev/zero\n"
+#~ " --remove-destination remove each existing destination file "
+#~ "before\n"
+#~ " attempting to open it (contrast with --"
+#~ "force)\n"
+#~ msgstr ""
+#~ "SOURCE ¤«¤é DEST ¤Ø¡¢¤Þ¤¿¤ÏÊ£¿ô¤Î SOURCE ¤«¤é DIRECTORY ¤Ø¥³¥Ô¡¼¤·¤Þ¤¹¡£\n"
+#~ "\n"
+#~ " -a, --archive -dpR ¤ÈƱ¤¸\n"
+#~ " --backup[=CONTROL] ¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤¹¤ëºÝ¡¢¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¤È"
+#~ "¤ë\n"
+#~ " -b °ú¿ô¤ò¤È¤é¤Ê¤¤¤³¤È°Ê³°¤Ï --backup ¤ÈƱ¤¸\n"
+#~ " -d, --no-dereference ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤òé¤é¤Ê¤¤\n"
+#~ " -f, --force ´û¸¤Î¥³¥Ô¡¼Àè¥Õ¥¡¥¤¥ë¤ò¥ª¡¼¥×¥ó¤Ç¤­¤Ê¤¤¾ì"
+#~ "¹ç¡¢\n"
+#~ " ºï½ü¤·¤Æ¤«¤é¤â¤¦°ìÅÙ¥³¥Ô¡¼¤ò»î¤¹\n"
+#~ " -i, --interactive ¾å½ñ¤­¤¹¤ëÁ°¤Ë³Îǧ¤¹¤ë\n"
+#~ " -H ¥³¥Þ¥ó¥É¥é¥¤¥ó¤Î¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤òé¤ë\n"
+#~ " -l, --link ¥³¥Ô¡¼¤ÎÂå¤ï¤ê¤Ë¥ê¥ó¥¯¤ò¤Ï¤ë\n"
+#~ " -L, --dereference ¾ï¤Ë¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤òé¤ë\n"
+#~ " -p, --preserve ²Äǽ¤Ê¤é¤Ð¥Õ¥¡¥¤¥ë°À­¤ò°Ý»ý¤¹¤ë\n"
+#~ " --parents ¥½¡¼¥¹¥Ñ¥¹¤È¤·¤Æ DIRECTORY ¤òÊä­¤¹¤ë\n"
+#~ " -P ¸½ºß¤Ï `--parents' ¤ÈƱ¤¸; POSIX ¤Ë½àµò¤¹¤ë"
+#~ "¤¿¤á\n"
+#~ " `--no-dereference' ¤Îµ¡Ç½¤Ë¤Þ¤â¤Ê¤¯Êѹ¹¤µ"
+#~ "¤ì¤ë\n"
+#~ " -r ¥Ç¥£¥ì¥¯¥È¥ê°Ê³°¤Ï¥Õ¥¡¥¤¥ë¤È¤·¤ÆºÆµ¢Åª¤Ë¥³"
+#~ "¥Ô¡¼\n"
+#~ " ·Ù¹ð: FIFO ¤ä /dev/zero ¤ÎÍͤʥ¹¥Ú¥·¥ã"
+#~ "¥ë\n"
+#~ " ¥Õ¥¡¥¤¥ë¤ò¥³¥Ô¡¼¤¹¤ë¤Ê¤é -R ¤ò»È¤¤¤Þ¤·¤ç"
+#~ "¤¦\n"
+#~ " --remove-destination ´û¸¤Î¥³¥Ô¡¼Àè¥Õ¥¡¥¤¥ë¤ò¥ª¡¼¥×¥ó¤ò»î¤¹Á°"
+#~ "¤Ë\n"
+#~ " ºï½ü¤ò¹Ô¤Ê¤¦¡Ê--force Èæ¤Ù¤Æ¤ß¤Æ¤¯¤À¤µ"
+#~ "¤¤¡Ë\n"
+
+#~ msgid ""
+#~ " --sparse=WHEN control creation of sparse files\n"
+#~ " -R, --recursive copy directories recursively\n"
+#~ " --strip-trailing-slashes remove any trailing slashes from each "
+#~ "SOURCE\n"
+#~ " argument\n"
+#~ " -s, --symbolic-link make symbolic links instead of copying\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " --target-directory=DIRECTORY move all SOURCE arguments into "
+#~ "DIRECTORY\n"
+#~ " -u, --update copy only when the SOURCE file is newer\n"
+#~ " than the destination file or when the\n"
+#~ " destination file is missing\n"
+#~ " -v, --verbose explain what is being done\n"
+#~ " -x, --one-file-system stay on this file system\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "By default, sparse SOURCE files are detected by a crude heuristic and "
+#~ "the\n"
+#~ "corresponding DEST file is made sparse as well. That is the behavior\n"
+#~ "selected by --sparse=auto. Specify --sparse=always to create a sparse "
+#~ "DEST\n"
+#~ "file whenever the SOURCE file contains a long enough sequence of zero "
+#~ "bytes.\n"
+#~ "Use --sparse=never to inhibit creation of sparse files.\n"
+#~ "\n"
+#~ msgstr ""
+#~ " --sparse=WHEN Á¤é¤Ê¥Õ¥¡¥¤¥ë¤ÎºîÀ®ÊýË¡¤òÀ©¸æ\n"
+#~ " -R, --recursive ¥Ç¥£¥ì¥¯¥È¥ê¤òºÆµ¢Åª¤Ë¥³¥Ô¡¼¤¹¤ë\n"
+#~ " --strip-trailing-slashes SOURCE °ú¿ô¤ËÉÕ¤¤¤Æ¤¤¤ë¥¹¥é¥Ã¥·¥å¤ò¼è¤ê½ü"
+#~ "¤¯\n"
+#~ " -s, --symbolic-link ¥³¥Ô¡¼¤¹¤ëÂå¤ï¤ê¤Ë¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤òŽ"
+#~ "¤ë\n"
+#~ " -S, --suffix=SUFFIX ñ½ã¥Ð¥Ã¥¯¥¢¥Ã¥×¤ÎºÝ¤Î¥µ¥Õ¥£¥Ã¥¯¥¹¤Î»ØÄê\n"
+#~ " --target-directory=DIR Á´ SOURCE °ú¿ô¤ò DIR ¥Ç¥£¥ì¥¯¥È¥ê¤Ø°ÜÆ°¤¹"
+#~ "¤ë\n"
+#~ " -u, --update SOURCE ¥Õ¥¡¥¤¥ë¤¬¥³¥Ô¡¼Àè¥Õ¥¡¥¤¥ë¤è¤ê¤â¿·¤·"
+#~ "¤¤¤«\n"
+#~ " ¥³¥Ô¡¼Àè¤Ë¥Õ¥¡¥¤¥ë¤¬Ìµ¤¤¾ì¹ç¤Ë¤Î¤ß¥³¥Ô¡¼"
+#~ "¤¹¤ë\n"
+#~ " -v, --verbose ¹Ô¤Ê¤ï¤ì¤ë¤³¤È¤òÀâÌÀ¤¹¤ë\n"
+#~ " -x, --one-file-system °Û¤Ê¤ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë¤Ï¥³¥Ô¡¼¤·¤Ê¤¤\n"
+#~ " --help »È¤¤Êý¤òɸ½à½ÐÎϤËɽ¼¨¤¹¤ë\n"
+#~ " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɸ½à½ÐÎϤËɽ¼¨¤¹¤ë\n"
+#~ "\n"
+#~ "Æä˻ØÄ꤬¤Ê¤±¤ì¤Ð¡¢Á¤é¤Ê SOURCE ¥Õ¥¡¥¤¥ë¤Ïȯ¸«Åª¼êË¡¤Ç¸¡½Ð¤µ¤ì¡¢Âбþ¤¹"
+#~ "¤ë\n"
+#~ "DEST ¥Õ¥¡¥¤¥ë¤ÏÁ¤é¤Ê¥Õ¥¡¥¤¥ë¤È¤·¤ÆºîÀ®¤µ¤ì¤ë¡£¤³¤ì¤Ï `--sparse=auto'\n"
+#~ "¥ª¥×¥·¥ç¥ó¤ò¤Ä¤±¤¿¤Î¤ÈƱ¤¸¤Ç¤¢¤ë¡£ `--sparse=always' ¤ò»ØÄꤹ¤ë¤È¡¢"
+#~ "SOURCE\n"
+#~ "¥Õ¥¡¥¤¥ë¤¬¡¢Ä¹¤¤Ï¢Â³¤¹¤ë¥¼¥í¤Î¥Ð¥¤¥È¥·¡¼¥±¥ó¥¹¤ò¤â¤Ã¤Æ¤¤¤ë»þ¤Ë¤Ï¡¢¾ï¤Ë\n"
+#~ "Á¤é¤Ê¥Õ¥¡¥¤¥ë¤È¤·¤Æ DEST ¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¡£\n"
+#~ "\n"
+#~ "Á¤é¤Ê¥Õ¥¡¥¤¥ë¤È¤·¤Æ¥Õ¥¡¥¤¥ë¤òºîÀ®¤ò¤·¤¿¤¯¤Ê¤±¤ì¤Ð¡¢--sparse=never\n"
+#~ "¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤³¤È¡£\n"
+
+#~ msgid ""
+#~ "Warning: the meaning of `-P' will change in the future to conform to "
+#~ "POSIX.\n"
+#~ "Use `--parents' for the old meaning, and `--no-dereference' for the new "
+#~ "one."
+#~ msgstr ""
+#~ "·Ù¹ð: `-P' ¤Î°ÕÌ£¤Ï POSIX ¤Ë½àµò¤¹¤ë¤¿¤á¤Ë¶á¡¹Êѹ¹¤µ¤ì¤Þ¤¹¡£²áµî¤Î°ÕÌ£¤È\n"
+#~ "¤¹¤ë¤¿¤á¤Ë¤Ï `--parents' ¤ò»È¤¤¡¢¿·¤·¤¤°ÕÌ£¤È¤¹¤ë¤Ë¤Ï `--no-dereference' "
+#~ "¤ò\n"
+#~ "»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£"
+
+#~ msgid ""
+#~ "Copy a file, converting and formatting according to the options.\n"
+#~ "\n"
+#~ " bs=BYTES force ibs=BYTES and obs=BYTES\n"
+#~ " cbs=BYTES convert BYTES bytes at a time\n"
+#~ " conv=KEYWORDS convert the file as per the comma separated keyword "
+#~ "list\n"
+#~ " count=BLOCKS copy only BLOCKS input blocks\n"
+#~ " ibs=BYTES read BYTES bytes at a time\n"
+#~ " if=FILE read from FILE instead of stdin\n"
+#~ " obs=BYTES write BYTES bytes at a time\n"
+#~ " of=FILE write to FILE instead of stdout\n"
+#~ " seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+#~ " skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "BLOCKS and BYTES may be followed by the following multiplicative "
+#~ "suffixes:\n"
+#~ "xM M, c 1, w 2, b 512, kD 1000, k 1024, MD 1,000,000, M 1,048,576,\n"
+#~ "GD 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.\n"
+#~ "Each KEYWORD may be:\n"
+#~ "\n"
+#~ " ascii from EBCDIC to ASCII\n"
+#~ " ebcdic from ASCII to EBCDIC\n"
+#~ " ibm from ASCII to alternated EBCDIC\n"
+#~ " block pad newline-terminated records with spaces to cbs-size\n"
+#~ " unblock replace trailing spaces in cbs-size records with newline\n"
+#~ " lcase change upper case to lower case\n"
+#~ " notrunc do not truncate the output file\n"
+#~ " ucase change lower case to upper case\n"
+#~ " swab swap every pair of input bytes\n"
+#~ " noerror continue after read errors\n"
+#~ " sync pad every input block with NULs to ibs-size; when used\n"
+#~ " with block or unblock, pad with spaces rather than NULs\n"
+#~ msgstr ""
+#~ "¥Õ¥¡¥¤¥ë¤ò¥ª¥×¥·¥ç¥ó»ØÄê¤Ë±þ¤¸¤¿ÊÑ´¹¡¦·Á¼°¤Ç²Ã¹©¤·¤Æ¡¢¥³¥Ô¡¼¤¹¤ë\n"
+#~ "\n"
+#~ " bs=BYTES ibs=BYTES obs=BYTES ¤Ë¶¯À©¤¹¤ë\n"
+#~ " cbs=BYTES °ìÅÙ¤¢¤¿¤ê BYTES ¤Ö¤ó¤ÎÊÑ´¹¤ò¹Ô¤Ê¤¦\n"
+#~ " conv=KEYWORDS ¥­¡¼¥ï¡¼¥É¥ê¥¹¥È¤Ç»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ëÊÑ´¹¤ò¹Ô¤Ê¤¦\n"
+#~ " ¥­¡¼¥ï¡¼¥É¤Î¥ê¥¹¥È¤Ï¥«¥ó¥Þ¤Ç¶èÀÚ¤ë\n"
+#~ " count=BLOCKS ÆþÎÏ¥Ö¥í¥Ã¥¯¤ò BLOCKS ¤ÎÂ礭¤µ¤À¤±¥³¥Ô¡¼¤¹¤ë\n"
+#~ " ibs=BYTES °ìÅÙ¤¢¤¿¤ê BYTES ¤Ö¤ó¤ÎÆɤ߹þ¤ß¤ò¹Ô¤Ê¤¦\n"
+#~ " if=FILE ɸ½àÆþÎϤÎÂå¤ï¤ê¤Ë¡¢FILE ¤òÆɤ߹þ¤à\n"
+#~ " obs=BYTES °ìÅÙ¤¢¤¿¤ê BYTES ¤Ö¤ó¤Î½ñ¤­¹þ¤ß¤ò¹Ô¤Ê¤¦\n"
+#~ " of=FILE ɸ½à½ÐÎϤÎÂå¤ï¤ê¤Ë¡¢FILE ¤Ø½ñ¤­¹þ¤à\n"
+#~ " seek=BLOCKS obs ¥µ¥¤¥º¤Î BLOCKS ¤Ö¤ó½ñ¤­¹þ¤ß³«»Ï°ÌÃÖ¤ò¥¹¥­¥Ã¥×¤¹"
+#~ "¤ë\n"
+#~ " skip=BLOCKS ibs ¥µ¥¤¥º¤Î BLOCKS ¤Ö¤óÆɤ߹þ¤ß³«»Ï°ÌÃÖ¤ò¥¹¥­¥Ã¥×¤¹"
+#~ "¤ë\n"
+#~ " --help »È¤¤Êý¤òɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+#~ " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+#~ "\n"
+#~ "BLOCKS ¤ä BYTES ¤Î»ØÄê¤Ë¤Ï¡¢°Ê²¼¤ÎÍͤÊÇÜ¿ô»ì¥µ¥Õ¥£¥Ã¥¯¥¹¤ò»ØÄê¤Ç¤­¤Þ¤¹:\n"
+#~ "xM M, c 1, w 2, b 512, kD 1000, k 1024, MD 1,000,000, M 1,048,576,\n"
+#~ "GD 1,000,000,000, G 1,073,741,824, ¤½¤Î¤Û¤« T, P, E, Z, Y ¤ò»È¤¨¤Þ¤¹¡£\n"
+#~ "¥­¡¼¥ï¡¼¥É¤Î»ØÄê¤Ë¤Ï¡¢°Ê²¼¤Î¤â¤Î¤ò»ØÄê¤Ç¤­¤Þ¤¹¡£\n"
+#~ "\n"
+#~ " ascii EBCDIC ¤«¤é ASCII ¤ËÊÑ´¹\n"
+#~ " ebcdic ASCII ¤«¤é EBCDIC ¤ËÊÑ´¹\n"
+#~ " ibm ASCII ¤«¤é ÂåÂØ EBCDIC ¤ËÊÑ´¹\n"
+#~ " block ²þ¹Ô¤Ç¶èÀÚ¤é¤ì¤¿¥ì¥³¡¼¥É¤ò¡¢cbs ¤Ç»ØÄꤵ¤ì¤¿¥Ö¥í¥Ã¥¯¥µ¥¤¥º¤Ë\n"
+#~ " ¹ç¤ï¤»¤ë¡£Â­¤ê¤Ê¤¤Éôʬ¤Ï¶õÇò¤ÇËä¤á¤ë\n"
+#~ " unblock cbs ¤Ç»ØÄꤵ¤ì¤¿¥Ö¥í¥Ã¥¯ËöÈø¤Î¶õÇò¤ò²þ¹Ô¤ËÊÑ´¹¤¹¤ë\n"
+#~ " lcase Âçʸ»ú¤ò¾®Ê¸»ú¤ËÊÑ´¹¤¹¤ë\n"
+#~ " notrunc ½ÐÎÏ¥Õ¥¡¥¤¥ë¤ÎÀÚ¤êµÍ¤á¤ò¹Ô¤Ê¤ï¤Ê¤¤\n"
+#~ " ucase ¾®Ê¸»ú¤òÂçʸ»ú¤ËÊÑ´¹¤¹¤ë\n"
+#~ " swab ´ñ¿ô¥Ð¥¤¥È¤È¶ö¿ô¥Ð¥¤¥È¤òÆþ¤ìÂؤ¨¤ë\n"
+#~ " noerror ÆþÎÏ¥¨¥é¡¼¤¬È¯À¸¤·¤Æ¤â¡¢½èÍý¤ò·Ñ³¤¹¤ë\n"
+#~ " sync ÆþÎÏ¥Õ¥¡¥¤¥ë¤ËϢ³¤·¤¿ NUL ¤òµÍ¤á¤Æ¡¢ibs ¤Ç»ØÄꤷ¤¿¥Ö¥í¥Ã¥¯\n"
+#~ " ¥µ¥¤¥º¤Ë¹ç¤ï¤»¤ë\n"
+
+#~ msgid ""
+#~ "Show information about the filesystem on which each FILE resides,\n"
+#~ "or all filesystems by default.\n"
+#~ "\n"
+#~ " -a, --all include filesystems having 0 blocks\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -i, --inodes list inode information instead of block usage\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l, --local limit listing to local filesystems\n"
+#~ " -m, --megabytes like --block-size=1048576\n"
+#~ " --no-sync do not invoke sync before getting usage info "
+#~ "(default)\n"
+#~ " -P, --portability use the POSIX output format\n"
+#~ " --sync invoke sync before getting usage info\n"
+#~ " -t, --type=TYPE limit listing to filesystems of type TYPE\n"
+#~ " -T, --print-type print filesystem type\n"
+#~ " -x, --exclude-type=TYPE limit listing to filesystems not of type "
+#~ "TYPE\n"
+#~ " -v (ignored)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "¥Õ¥¡¥¤¥ë¤¬Â°¤¹¤ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤òɽ¼¨¤¹¤ë¡£\n"
+#~ "°¿¤¤¤Ï¡¢»ØÄ꤬¤Ê¤±¤ì¤Ð¡¢Á´¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î»ÈÍÑÎ̤òɽ¼¨¤¹¤ë¡£\n"
+#~ "\n"
+#~ " -a, --all 0 ¥Ö¥í¥Ã¥¯¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤âɽ¼¨¤µ¤»¤ë\n"
+#~ " --block-size=¥µ¥¤¥º »ØÄꥵ¥¤¥º¤ÎÂ礭¤µ¤ò 1 ¥Ö¥í¥Ã¥¯¤È¤¹¤ë\n"
+#~ " -h, --human-readable ¿Í¤Ë²ò¤ê¤ä¤¹¤¤·Á¼°¤Çɽ¼¨¤¹¤ë (Îã: 1K 234M 2G)\n"
+#~ " -H, --si Ʊ¾å¡£Ã¢¤·¡¢·åÉý¤ò 1024 ¤ÎÂå¤ï¤ê¤Ë 1000 ¤È¤¹¤ë\n"
+#~ " -i, --inodes ¥Ö¥í¥Ã¥¯»ÈÍѾðÊó¤ÎÂå¤ï¤ê¤Ë¡¢inode ¾ðÊó¤òɽ¼¨\n"
+#~ " -k, --kilobytes ¥­¥í¥Ð¥¤¥Èñ°Ì¤Çɽ¼¨\n"
+#~ " -l, --local ¥í¡¼¥«¥ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¤ßɽ¼¨¤¹¤ë\n"
+#~ " -m, --megabytes ¥á¥¬¥Ð¥¤¥Èñ°Ì¤Çɽ¼¨\n"
+#~ " --no-sync ¥­¥ã¥Ã¥·¥å¤È¥Ç¥£¥¹¥¯¤È¤ÎƱ´ü¤ò¼è¤é¤º¤Ëɽ¼¨(ɸ½à)\n"
+#~ " -P, --portability POSIX ·Á¼°¤Î½ÐÎÏ¥Õ¥©¡¼¥Þ¥Ã¥È¤òÍøÍѤ¹¤ë\n"
+#~ " --sync ¥­¥ã¥Ã¥·¥å¤È¥Ç¥£¥¹¥¯¤È¤ÎƱ´ü¤ò¼è¤Ã¤Æ¤«¤éɽ¼¨\n"
+#~ " -t, --type=¥¿¥¤¥× »ØÄꤷ¤¿¥¿¥¤¥×¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¤ßɽ¼¨¤¹¤ë\n"
+#~ " -T, --print-type ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¼ïÎà¤òɽ¼¨¤¹¤ë\n"
+#~ " -x, --exclude-type=¥¿¥¤¥× »ØÄꤷ¤¿¥¿¥¤¥×¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à°Ê³°¤òɽ¼¨¤¹"
+#~ "¤ë\n"
+#~ " -v (̵»ë¤µ¤ì¤ë)\n"
+#~ " --help »È¤¤Êý¤òɽ¼¨¤¹¤ë\n"
+#~ " --version ¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨¤¹¤ë\n"
+
+#~ msgid ""
+#~ "Summarize disk usage of each FILE, recursively for directories.\n"
+#~ "\n"
+#~ " -a, --all write counts for all files, not just directories\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -b, --bytes print size in bytes\n"
+#~ " -c, --total produce a grand total\n"
+#~ " -D, --dereference-args dereference PATHs when symbolic link\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l, --count-links count sizes many times if hard linked\n"
+#~ " -L, --dereference dereference all symbolic links\n"
+#~ " -m, --megabytes like --block-size=1048576\n"
+#~ " -S, --separate-dirs do not include size of subdirectories\n"
+#~ " -s, --summarize display only a total for each argument\n"
+#~ " -x, --one-file-system skip directories on different filesystems\n"
+#~ " -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+#~ "FILE.\n"
+#~ " --exclude=PAT Exclude files that match PAT.\n"
+#~ " --max-depth=N print the total for a directory (or file, with --"
+#~ "all)\n"
+#~ " only if it is N or fewer levels below the "
+#~ "command\n"
+#~ " line argument; --max-depth=0 is the same as\n"
+#~ " --summarize\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "¥Õ¥¡¥¤¥ëËè¤Î¥Ç¥£¥¹¥¯»ÈÍÑÎ̤ò½¸·×¤¹¤ë¡£¥Ç¥£¥ì¥¯¥È¥ê¤ÏºÆµ¢Åª¤Ë½èÍý¤¹¤ë¡£\n"
+#~ "\n"
+#~ " -a, --all ¥Ç¥£¥ì¥¯¥È¥ê¤À¤±¤Ç¤Ê¤¯¡¢Á´¤Æ¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æɽ"
+#~ "¼¨\n"
+#~ " --block-size=¥µ¥¤¥º »ØÄꥵ¥¤¥º¤ÎÂ礭¤µ¤ò 1 ¥Ö¥í¥Ã¥¯¤È¤¹¤ë\n"
+#~ " -b, --bytes ¥Ð¥¤¥Èñ°Ì¤Çɽ¼¨¤¹¤ë\n"
+#~ " -c, --total ¹ç·×¤òɽ¼¨¤¹¤ë\n"
+#~ " -D, --dereference-args ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Î¾ì¹ç¤Ï¡¢»²¾ÈÀè¤òé¤ë\n"
+#~ " -h, --human-readable ¿Í¤Ë²ò¤ê¤ä¤¹¤¤·Á¼°¤Çɽ¼¨¤¹¤ë (Îã: 1K 234M 2G)\n"
+#~ " -H, --si Ʊ¾å¡£Ã¢¤·¡¢·åÉý¤ò 1024 ¤ÎÂå¤ï¤ê¤Ë 1000 ¤È¤¹¤ë\n"
+#~ " -k, --kilobytes ¥­¥í¥Ð¥¤¥Èñ°Ì¤Çɽ¼¨¤¹¤ë\n"
+#~ " -l, --count-links Ʊ¤¸¥Õ¥¡¥¤¥ë¤ò¼¨¤¹¥Ï¡¼¥É¥ê¥ó¥¯¤Î¾ì¹ç¤Ç¤¢¤Ã¤Æ¤â\n"
+#~ " Á´¤Æ½¸·×¤Ë²Ã¤¨¤ë\n"
+#~ " -L, --dereference Á´¤Æ¤Î¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Î»²¾ÈÀè¤òé¤ë\n"
+#~ " -m, --megabytes ¥á¥¬¥Ð¥¤¥Èñ°Ì¤Çɽ¼¨¤¹¤ë\n"
+#~ " -S, --separate-dirs ¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤Î¥µ¥¤¥º¤ò½¸·×¤Ë´Þ¤á¤Ê¤¤\n"
+#~ " -s, --summarize °ú¿ôËè¤Î¹ç·×¤Î¤ßɽ¼¨¤¹¤ë\n"
+#~ " -x, --one-file-system °Û¤Ê¤ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï½¸·×¤·¤Ê"
+#~ "¤¤\n"
+#~ " -X ¥Õ¥¡¥¤¥ë, --exclude-from=¥Õ¥¡¥¤¥ë »ØÄê¥Õ¥¡¥¤¥ëÃæ¤Î¥Ñ¥¿¡¼¥ó¤Ë°ìÃפ¹"
+#~ "¤ë\n"
+#~ " ¥Õ¥¡¥¤¥ë¤Ï½¸·×¤·¤Ê¤¤\n"
+#~ " --exclude=¥Ñ¥¿¡¼¥ó ¥Ñ¥¿¡¼¥ó¤Ë°ìÃפ¹¤ë¥Õ¥¡¥¤¥ë¤Ï½¸·×¤·¤Ê¤¤\n"
+#~ " --max-depth=N ¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¤è¤ê¡¢ºÇÂç N ¸Ä²¼¤Î³¬ÁؤޤǤÎ\n"
+#~ " ¥Ç¥£¥ì¥¯¥È¥ê(--all ¤Î»ØÄê¤Ç¥Õ¥¡¥¤¥ë¤â)¤ò½¸·×¤¹¤ë\n"
+#~ " --max-depth=0 ¤Ê¤é¡¢--summarize ¤ÈƱÅù¤È¤Ê¤ë\n"
+#~ " --help »È¤¤Êý¤òɽ¼¨¤¹¤ë\n"
+#~ " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤¹¤ë\n"
+
+#~ msgid ""
+#~ "In the first two formats, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+#~ "the existing DIRECTORY, while setting permission modes and owner/group.\n"
+#~ "In the third format, create all components of the given DIRECTORY(ies).\n"
+#~ "\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination file\n"
+#~ " -b like --backup but does not accept an argument\n"
+#~ " -c (ignored)\n"
+#~ " -d, --directory treat all arguments as directory names; create all\n"
+#~ " components of the specified directories\n"
+#~ " -D create all leading components of DEST except the "
+#~ "last,\n"
+#~ " then copy SOURCE to DEST; useful in the 1st "
+#~ "format\n"
+#~ " -g, --group=GROUP set group ownership, instead of process' current "
+#~ "group\n"
+#~ " -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-"
+#~ "xr-x\n"
+#~ " -o, --owner=OWNER set ownership (super-user only)\n"
+#~ " -p, --preserve-timestamps apply access/modification times of SOURCE "
+#~ "files\n"
+#~ " to corresponding destination files\n"
+#~ " -s, --strip strip symbol tables, only for 1st and 2nd formats\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " -v, --verbose print the name of each directory as it is created\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Á°Æó¤Ä¤Î½ñ¼°¤Ç¤Ï¡¢SOURCE ¥Õ¥¡¥¤¥ë¤ò DEST ¤Ø¥³¥Ô¡¼¤¹¤ë¤«¡¢Ê£¿ô¤Î SOURCE\n"
+#~ "¥Õ¥¡¥¤¥ë¤ò´û¸¥Ç¥£¥ì¥¯¥È¥ê¤Ø¥³¥Ô¡¼¤·¤Þ¤¹¡£Æ±»þ¤Ë¥¢¥¯¥»¥¹¸¢¡¢½êÍ­¼Ô¤ä¥°¥ë¡¼"
+#~ "¥×\n"
+#~ "¤âÀßÄꤷ¤Þ¤¹¡£»°¤ÄÌܤνñ¼°¤Ç¤Ï¡¢»ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê¤òÁ´¤ÆºîÀ®¤·¤Þ¤¹¡£\n"
+#~ "\n"
+#~ " --backup[=CONTROL] ¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤¹¤ëÁ°¤Ë¥Ð¥Ã¥¯¥¢¥Ã¥×¤òºîÀ®¤¹¤ë\n"
+#~ " -b °ú¿ô¤ò¼è¤é¤Ê¤¤¤³¤È°Ê³°¤Ï --backup ¤ÈƱ¤¸\n"
+#~ " -c (̵»ë¤µ¤ì¤ë)\n"
+#~ " -d, --directory Á´¤Æ¤Î°ú¿ô¤ò¥Ç¥£¥ì¥¯¥È¥ê̾¤Ç¤¢¤ë¤È²ò¼á¤¹¤ë\n"
+#~ " »ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê¤ò°ìÅ٤˺îÀ®¤¹¤ë\n"
+#~ " -D DEST ¤ÎºÇ¸å°Ê³°¤Î¥Õ¥¡¥¤¥ë¤ò¤Þ¤ºÁ´¤ÆºîÀ®¤·¡¢¤½¤Î¸å"
+#~ "¤Ç\n"
+#~ " SOURCE ¤ò DEST ¤Ë¥³¥Ô¡¼¤¹¤ë¡£°ìÈÖÌܤνñ¼°¤ËÍ­"
+#~ "¸ú\n"
+#~ " -g, --group=GROUP ¸½ºß¤Î¥×¥í¥»¥¹¥°¥ë¡¼¥×¤ÎÂå¤ï¤ê¤Ë¥°¥ë¡¼¥×°À­¤ò»ØÄê"
+#~ "¤¹¤ë\n"
+#~ " -m, --mode=MODE ¥¢¥¯¥»¥¹¥â¡¼¥É¤òÊѹ¹¤¹¤ë¡£(»ØÄ̵꤬¤±¤ì¤Ð rwxr-xr-"
+#~ "x)\n"
+#~ " -o, --owner=OWNER ½êÍ­¼Ô¤òÊѹ¹¤¹¤ë (¥¹¡¼¥Ñ¡¼¥æ¡¼¥¶¡¼¤À¤±¤¬²Äǽ)\n"
+#~ " -p, --preserve-timestamps SOURCE ¥Õ¥¡¥¤¥ë¤Î¥¢¥¯¥»¥¹¡¦Êѹ¹»þ¹ï¤òÂбþ¤¹"
+#~ "¤ë\n"
+#~ " DEST ¥Õ¥¡¥¤¥ë¤Ë¤âÍøÍѤ¹¤ë\n"
+#~ " -s, --strip ¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë¤òÇí¤®Íî¤È¤¹ 1 Ëô¤Ï 2 ÈÖÌܤηÁ¼°"
+#~ "¤Î\n"
+#~ " °ú¿ô¤ÎºÝ¤Ë¤Î¤ßÍøÍѲÄ\n"
+#~ " -S, --suffix=SUFFIX ÉáÃʤΥХ寥¢¥Ã¥×¥µ¥Õ¥£¥Ã¥¯¥¹¤ò̵»ë¤¹¤ë\n"
+#~ " --verbose ¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®¤¹¤ë¤¿¤Ó¤Ë¡¢¤½¤Î̾Á°¤òɽ¼¨¤¹¤ë\n"
+#~ " --help »È¤¤Êý¤òɽ¼¨¤¹¤ë\n"
+#~ " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤¹¤ë\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Create a link to the specified TARGET with optional LINK_NAME.\n"
+#~ "If LINK_NAME is omitted, a link with the same basename as the TARGET is\n"
+#~ "created in the current directory. When using the second form with more\n"
+#~ "than one TARGET, the last argument must be a directory; create links\n"
+#~ "in DIRECTORY to each TARGET. Create hard links by default, symbolic\n"
+#~ "links with --symbolic. When creating hard links, each TARGET must "
+#~ "exist.\n"
+#~ "\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination "
+#~ "file\n"
+#~ " -b like --backup but does not accept an "
+#~ "argument\n"
+#~ " -d, -F, --directory hard link directories (super-user only)\n"
+#~ " -f, --force remove existing destination files\n"
+#~ " -n, --no-dereference treat destination that is a symlink to a\n"
+#~ " directory as if it were a normal file\n"
+#~ " -i, --interactive prompt whether to remove destinations\n"
+#~ " -s, --symbolic make symbolic links instead of hard links\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " --target-directory=DIRECTORY specify the DIRECTORY in which to "
+#~ "create\n"
+#~ " the links\n"
+#~ " -v, --verbose print name of each file before linking\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "TARGET ¤Ë»ØÄꤷ¤¿¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¡¢Ç¤°Õ¤Î¥ê¥ó¥¯Ì¾¤Ç¥ê¥ó¥¯¤òºîÀ®¤¹¤ë¡£\n"
+#~ "¥ê¥ó¥¯Ì¾¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¡¢TARGET ¤ÈƱ¤¸¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë̾¤Î¥ê¥ó¥¯¤ò¸½ºß¤Î\n"
+#~ "¥Ç¥£¥ì¥¯¥È¥ê¤ËºîÀ®¤¹¤ë¡£Ê£¿ô¤Î TARGET ¤¬»ØÄꤵ¤ì¤ëÍͤʡ¢ÆóÈÖÌܤηÁ¼°¤ò\n"
+#~ "»È¤Ã¤¿¾ì¹ç¡¢ºÇ¸å¤Î°ú¿ô¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£\n"
+#~ "-- ¤³¤Î¾ì¹ç¡¢¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤Ë¤½¤ì¤¾¤ì¤ÎÂоݥե¡¥¤¥ëËè¤Ë¥ê¥ó¥¯¤òºîÀ®¤¹"
+#~ "¤ë¡£\n"
+#~ "Æä˻ØÄ꤬¤Ê¤¤¾ì¹ç¡¢¥Ï¡¼¥É¥ê¥ó¥¯¤òºîÀ®¤¹¤ë¤Î¤Ç¡¢¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤ò\n"
+#~ "ºîÀ®¤¹¤ë¤Ë¤Ï¡¢--symbolic ¤ò»ØÄꤹ¤ë¡£¥Ï¡¼¥É¥ê¥ó¥¯¤òºîÀ®¤¹¤ë¾ì¹ç¡¢\n"
+#~ "TARGET ¥Õ¥¡¥¤¥ë¤ÏºîÀ®»þ¤Ë¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£\n"
+#~ "\n"
+#~ " --backup[=CONTROL] ºîÀ®¤¹¤ë¥ê¥ó¥¯¤Î¥Õ¥¡¥¤¥ë̾¤¬´û¤Ë¸ºß¤¹¤ë¾ì"
+#~ "¹ç¡¢\n"
+#~ " ¥Ð¥Ã¥¯¥¢¥Ã¥×¤òºîÀ®¤¹¤ë\n"
+#~ " -b °ú¿ô¤ò¼è¤é¤Ê¤¤»ö°Ê³°¤Ï --backup ¤ÈƱ¤¸\n"
+#~ " -d, -F, --directory ¥Ç¥£¥ì¥¯¥È¥ê¤ËÂФ¹¤ë¥Ï¡¼¥É¥ê¥ó¥¯¤òºîÀ®\n"
+#~ " (´ÉÍý¼Ô(root) ¤Î¤ßÍøÍѲÄǽ)\n"
+#~ " -f, --force ´û¸¤Î TARGET ¥Õ¥¡¥¤¥ë¤Ïºï½ü¤¹¤ë\n"
+#~ " -n, --no-dereference »ØÄꤷ¤¿¥ê¥ó¥¯Ì¾¤¬Ä̾ï¥Õ¥¡¥¤¥ë¤Ç¤¢¤Ã¤Æ¤â¡¢\n"
+#~ " ¥Ç¥£¥ì¥¯¥È¥ê¤Ø¤Î¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤È¸«¤Ê"
+#~ "¤¹\n"
+#~ " -i, --interactive ¾å½ñ¤­¤¹¤ëÁ°¤Ë³Îǧ¤ò¤È¤ë\n"
+#~ " -s, --symbolic ¥Ï¡¼¥É¥ê¥ó¥¯¤Ç¤Ï¤Ê¤¯¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤òºîÀ®"
+#~ "¤¹¤ë\n"
+#~ " -S, --suffix=SUFFIX ¥Ð¥Ã¥¯¥¢¥Ã¥×¥µ¥Õ¥£¥Ã¥¯¥¹¤ò»ØÄꤹ¤ë\n"
+#~ " --target-directory=DIR ¥ê¥ó¥¯¤òºîÀ®¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò DIR ¤Ë»ØÄꤹ"
+#~ "¤ë\n"
+#~ " -v, --verbose ½èÍýÆâÍƤξܺ٤òɽ¼¨¤¹¤ë\n"
+#~ " --help »È¤¤Êý¤òɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+#~ " --version ¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid "%a %b %d %H:%M:%S %Y"
+#~ msgstr "%b %e %H:%M %Y"
+
+#~ msgid ""
+#~ "List information about the FILEs (the current directory by default).\n"
+#~ "Sort entries alphabetically if none of -cftuSUX nor --sort.\n"
+#~ "\n"
+#~ " -a, --all do not hide entries starting with .\n"
+#~ " -A, --almost-all do not list implied . and ..\n"
+#~ " -b, --escape print octal escapes for nongraphic "
+#~ "characters\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -B, --ignore-backups do not list implied entries ending with ~\n"
+#~ " -c with -lt: sort by, and show, ctime (time of "
+#~ "last\n"
+#~ " modification of file status information)\n"
+#~ " with -l: show ctime and sort by name\n"
+#~ " otherwise: sort by ctime\n"
+#~ " -C list entries by columns\n"
+#~ " --color[=WHEN] control whether color is used to distinguish "
+#~ "file\n"
+#~ " types. WHEN may be `never', `always', or "
+#~ "`auto'\n"
+#~ " -d, --directory list directory entries instead of contents\n"
+#~ " -D, --dired generate output designed for Emacs' dired "
+#~ "mode\n"
+#~ " -f do not sort, enable -aU, disable -lst\n"
+#~ " -F, --classify append indicator (one of */=@|) to entries\n"
+#~ " --format=WORD across -x, commas -m, horizontal -x, long -"
+#~ "l,\n"
+#~ " single-column -1, verbose -l, vertical -C\n"
+#~ " --full-time list both full date and full time\n"
+#~ msgstr ""
+#~ "»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤Î¾ðÊó¤ò¥ê¥¹¥È½ÐÎϤ¹¤ë(¾Êά»þ¤Ï¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê)¡£\n"
+#~ "-cftuSUX ¤â --sort ¤â»ØÄ꤬¤Ê¤¤¤È¡¢¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤Ë¥½¡¼¥È¤¹¤ë¡£\n"
+#~ "\n"
+#~ " -a, --all '.' ¤Ç»Ï¤Þ¤ë±£¤·¥Õ¥¡¥¤¥ë¤âɽ¼¨¤¹¤ë\n"
+#~ " -A, --almost-all '.' ¤Ç»Ï¤Þ¤ë±£¤·¥Õ¥¡¥¤¥ë¤âɽ¼¨¤¹¤ë¤¬¡¢\n"
+#~ " °ÅÌۤΠ. ¤È .. ¤Ïɽ¼¨¤·¤Ê¤¤\n"
+#~ " -b, --escape ¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¥·¡¼¥±¥ó¥¹¤Ê¤É¤Î\n"
+#~ " Èóɽ¼¨Ê¸»ú¤ò¥¨¥¹¥±¡¼¥×¤¹¤ë\n"
+#~ " --block-size=SIZE SIZE ¤ò 1 ¥Ö¥í¥Ã¥¯¤ÎÂ礭¤µ¤È¤¹¤ë¡£\n"
+#~ " -B, --ignore-backups ~ ¤¬ºÇ¸å¤Ë¤Ä¤¯¥Õ¥¡¥¤¥ë¤ò¥ê¥¹¥Èɽ¼¨¤·¤Ê¤¤\n"
+#~ " -c -lt ÉÕ: ctime (ºÇ½ª¹¹¿·»þ¹ï) ¤Ç¥½¡¼¥È¤·É½¼¨"
+#~ "¤¹¤ë\n"
+#~ " -l ÉÕ : ctime ¤òɽ¼¨¤·¡¢Ì¾Á°¤Ç¥½¡¼¥È¤¹¤ë\n"
+#~ " ¤½¤Î¾: ctime ¤Ç¥½¡¼¥È¤¹¤ë\n"
+#~ " -C ¿âľÊý¸þ¤Ë¹àÌܤò¥ê¥¹¥È¤¹¤ë\n"
+#~ " --color[=WHEN] ¥Õ¥¡¥¤¥ë¥¿¥¤¥×¤Ë±þ¤¸¤Æ¿§¤Å¤±¤·¤Æɽ¼¨¤¹¤ë\n"
+#~ " WHEN ¤Ë¤Ï`never', `always' Ëô¤Ï `auto' ¤¬"
+#~ "Æþ¤ë\n"
+#~ " -d, --directory ¥Ç¥£¥ì¥¯¥È¥ê¤òÃæ¿È¤òɽ¼¨¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¯\n"
+#~ " ¾¤Î¥Õ¥¡¥¤¥ë¤ÈƱ¤¸¤è¤¦¤Ëɽ¼¨¤¹¤ë\n"
+#~ " -D, --dired Emacs ¤Î dired-mode ¤Î¤è¤¦¤Êɽ¼¨·Á¼°¤Ë¤¹¤ë\n"
+#~ " -f ¥½¡¼¥È¤·¤Ê¤¤¡£-aU ¤¬Í­¸ú¡¢-lst ¤ò̵¸ú\n"
+#~ " -F, --classify ¥Õ¥¡¥¤¥ë̾¤Î·¿¤ò¼¨¤¹Ê¸»ú (*/=@) ¤òÉÕ¤±¤ë\n"
+#~ " --format=WORD across -x, commas -m, horizontal -x, long -"
+#~ "l,\n"
+#~ " single-column -1, verbose -l, vertical -C\n"
+#~ " --full-time ÆüÉÕ¡¦»þ¹ï¤Ë´Ø¤¹¤ëÁ´¤Æ¤Î¾ðÊó¤òɽ¼¨¤¹¤ë\n"
+
+#~ msgid ""
+#~ " -g (ignored)\n"
+#~ " -G, --no-group inhibit display of group information\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " --si likewise, but use powers of 1000 not 1024\n"
+#~ " -H same as `--si' for now; soon to change\n"
+#~ " to conform to POSIX\n"
+#~ " --indicator-style=WORD append indicator with style WORD to entry "
+#~ "names:\n"
+#~ " none (default), classify (-F), file-type (-"
+#~ "p)\n"
+#~ " -i, --inode print index number of each file\n"
+#~ " -I, --ignore=PATTERN do not list implied entries matching shell "
+#~ "PATTERN\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l use a long listing format\n"
+#~ " -L, --dereference list entries pointed to by symbolic links\n"
+#~ " -m fill width with a comma separated list of "
+#~ "entries\n"
+#~ " -n, --numeric-uid-gid list numeric UIDs and GIDs instead of names\n"
+#~ " -N, --literal print raw entry names (don't treat e.g. "
+#~ "control\n"
+#~ " characters specially)\n"
+#~ " -o use long listing format without group info\n"
+#~ " -p, --file-type append indicator (one of /=@|) to entries\n"
+#~ " -q, --hide-control-chars print ? instead of non graphic characters\n"
+#~ " --show-control-chars show non graphic characters as-is (default\n"
+#~ " unless program is `ls' and output is a "
+#~ "terminal)\n"
+#~ " -Q, --quote-name enclose entry names in double quotes\n"
+#~ " --quoting-style=WORD use quoting style WORD for entry names:\n"
+#~ " literal, locale, shell, shell-always, c, "
+#~ "escape\n"
+#~ " -r, --reverse reverse order while sorting\n"
+#~ " -R, --recursive list subdirectories recursively\n"
+#~ " -s, --size print size of each file, in blocks\n"
+#~ msgstr ""
+#~ " -g (̵»ë¤µ¤ì¤ë)\n"
+#~ " -G, --no-group ¥°¥ë¡¼¥×¾ðÊó¤Îɽ¼¨¤ò¹Ô¤Ê¤ï¤Ê¤¤\n"
+#~ " -h, --human-readable ¿Í¤Ë²ò¤ê¤ä¤¹¤¤·Á¼°¤Ç½ÐÎϤ¹¤ë (Îã: 1K 234M "
+#~ "2G)\n"
+#~ " --si Ʊ¾å¡£Ã¢¤·¡¢ÇÜ¿ô¤ò 1024 ¤Ç¤Ê¤¯¡¢1000 ¤È¤¹¤ë\n"
+#~ " -H º£¤Î¤È¤³¤í `--si' ¤ÈƱ¤¸¤À¤¬¡¢¶á¡¹ POSIX ¤Ë\n"
+#~ " ½àµò¤·¤¿Æ°ºî¤ËÊѹ¹¤µ¤ì¤ë\n"
+#~ " --indicator-style=WORD ¥Õ¥¡¥¤¥ëɸ¼±¥¹¥¿¥¤¥ë¤Î»ØÄê¡£WORD ¤È¤·¤Æ»È¤¨"
+#~ "¤ë\n"
+#~ " ñ¸ì¤Ï°Ê²¼¤ÎÄ̤ê\n"
+#~ " none (ɸ½à), classify (-F), file-type "
+#~ "(-p)\n"
+#~ " -i, --inode ¥Õ¥¡¥¤¥ë¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹ÈÖ¹æ¤òɽ¼¨¤¹¤ë\n"
+#~ " -I, --ignore=PATTERN PATTERN ¤È¾È¹ç¤¹¤ë¥ê¥¹¥È¤òɽ¼¨¤·¤Ê¤¤\n"
+#~ " -k, --kilobytes --block-size=1024 ¤ÈƱÅù\n"
+#~ " -l ¾ÜºÙ¥ê¥¹¥È·Á¼°¤òɽ¼¨¤¹¤ë\n"
+#~ " -L, --dereference ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¥ê¥¹¥Èɽ¼¨"
+#~ "¤¹¤ë\n"
+#~ " -m ¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Þ `,' ¤Ç¶èÀڤꡢ°ì¹Ô¤Ë¤Ç¤­¤ë¸Â"
+#~ "¤ê\n"
+#~ " ¥Õ¥¡¥¤¥ë¤òɽ¼¨¤¹¤ë\n"
+#~ " -n, --numeric-uid-gid UID ¤ä GID ¤ò̾Á°¤Ç¤Ê¤¯ÈÖ¹æ¤Çɽ¼¨¤¹¤ë\n"
+#~ " -N, --literal À¸¤Î¹àÌÜ̾¤òɽ¼¨¤¹¤ë\n"
+#~ " (Î㤨¤Ð¡¢¥³¥ó¥È¥í¡¼¥ëʸ»ú¤òÆÃÊÌ°·¤¤¤·¤Ê"
+#~ "¤¤)\n"
+#~ " -o ½êÍ­¥°¥ë¡¼¥×½ü¤¤¤¿¾ÜºÙ¥ê¥¹¥È·Á¼°¤Çɽ¼¨¤¹¤ë\n"
+#~ " -p, --file-type ¥Õ¥¡¥¤¥ë¤ËÌÜ°õ(/=@! ¤Î¤É¤ì¤«)¤ò¹àÌܤËÉÕ¤±Â­"
+#~ "¤¹\n"
+#~ " -q, --hide-control-chars ɽ¼¨¤Ç¤­¤Ê¤¤Ê¸»ú¤ò '?' ¤ËÃÖ¤­´¹¤¨¤ë\n"
+#~ " --show-control-chars ɽ¼¨¤Ç¤­¤Ê¤¤Ê¸»ú¤â¤½¤Î¤Þ¤Þ½ÐÎϤ¹¤ë(¥×¥í¥°¥é¥à"
+#~ "¤¬\n"
+#~ " `ls' ¤Ç¤Ï¤Ê¤¤¤«½ÐÎϤ¬Ã¼Ëö¤Ç¤Ï¤Ê¤¤¾ì¹ç¤Î½é´ü"
+#~ "¾õÂÖ)\n"
+#~ " -Q, --quote-name ¥Õ¥¡¥¤¥ë̾¤ò¥À¥Ö¥ë¥¯¥ª¡¼¥È(\")¤Ç¤¯¤¯¤ë\n"
+#~ " --quoting-style=WORD ¹àÌÜ̾¤Î¥¯¥ª¡¼¥È¤Ë WORD ʸ»ú¤ò»È¤¦:\n"
+#~ " literal, locale, shell, shell-always, c, "
+#~ "escape\n"
+#~ " -r, --reverse ¥½¡¼¥È¤òȿž¤¹¤ë\n"
+#~ " -R, --recursive ¤¹¤Ù¤Æ¤Î¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤òºÆµ¢Åª¤Ëɽ¼¨¤¹¤ë\n"
+#~ " -s, --size ³Æ¥Õ¥¡¥¤¥ë¤Î¥Ö¥í¥Ã¥¯¥µ¥¤¥º¤òɽ¼¨¤¹¤ë\n"
+
+#~ msgid ""
+#~ " -S sort by file size\n"
+#~ " --sort=WORD extension -X, none -U, size -S, time -t,\n"
+#~ " version -v\n"
+#~ " status -c, time -t, atime -u, access -u, use "
+#~ "-u\n"
+#~ " --time=WORD show time as WORD instead of modification "
+#~ "time:\n"
+#~ " atime, access, use, ctime or status; use\n"
+#~ " specified time as sort key if --sort=time\n"
+#~ " -t sort by modification time\n"
+#~ " -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+#~ " -u with -lt: sort by, and show, access time\n"
+#~ " with -l: show access time and sort by "
+#~ "name\n"
+#~ " otherwise: sort by access time\n"
+#~ " -U do not sort; list entries in directory "
+#~ "order\n"
+#~ " -v sort by version\n"
+#~ " -w, --width=COLS assume screen width instead of current "
+#~ "value\n"
+#~ " -x list entries by lines instead of by columns\n"
+#~ " -X sort alphabetically by entry extension\n"
+#~ " -1 list one file per line\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "By default, color is not used to distinguish types of files. That is\n"
+#~ "equivalent to using --color=none. Using the --color option without the\n"
+#~ "optional WHEN argument is equivalent to using --color=always. With\n"
+#~ "--color=auto, color codes are output only if standard output is "
+#~ "connected\n"
+#~ "to a terminal (tty).\n"
+#~ msgstr ""
+#~ " -S ¥Õ¥¡¥¤¥ë¥µ¥¤¥º¤Ç¥½¡¼¥È¤¹¤ë\n"
+#~ " --sort=WORD extension -X, none -U, size -S, time -t,\n"
+#~ " version -v\n"
+#~ " status -c, time -t, atime -u, access -u, use "
+#~ "-u\n"
+#~ " --time=WORD »þ¹ï¤ò½¤Àµ»þ¹ï¤Ç¤Ï¤Ê¤¯ WORD ¤Î»þ¹ï¤ò»È¤¦\n"
+#~ " atime, access, use, ctime Ëô¤Ï status\n"
+#~ " »ØÄꤷ¤¿»þ¹ï¤Ï--sort=time ¤Î¥­¡¼¤È¤·¤Æ»È¤ï"
+#~ "¤ì¤ë\n"
+#~ " -t ½¤Àµ»þ¹ï¤Ç¥½¡¼¥È¤¹¤ë\n"
+#~ " -T, --tabsize=COLS 8 ¤ÎÂå¤ï¤ê¤Ë¥¿¥Ö¥¹¥È¥Ã¥×¤ò COLS ¤È¤ß¤Ê¤¹\n"
+#~ " -u -lt ¤ÈÍøÍÑ: ¥¢¥¯¥»¥¹»þ¹ï¤Ç¥½¡¼¥È¤·¡¢É½¼¨¤¹"
+#~ "¤ë\n"
+#~ " -l ¤ÈÍøÍÑ: ¥¢¥¯¥»¥¹»þ¹ï¤òɽ¼¨¤¹¤ë\n"
+#~ " ¤½¤Î¾¤ÈÍøÍÑ: ¥¢¥¯¥»¥¹»þ¹ï¤Ç¥½¡¼¥È¤¹¤ë\n"
+#~ " -U ¥½¡¼¥È¤ò¤·¤Ê¤¤ -- ¥Ç¥£¥ì¥¯¥È¥ê½ç¤Ë¥ê¥¹¥È¤¹"
+#~ "¤ë\n"
+#~ " -v ¥Ð¡¼¥¸¥ç¥ó¤Ç¥½¡¼¥È¤¹¤ë\n"
+#~ " -w, --width=COLS ²èÌÌÉý¤ò¸½ºßÃͤǤϤʤ¯ COLS ¤È¸«¤Ê¤¹\n"
+#~ " -x ÎóÊý¸þ¤Ç¤Ï¤Ê¤¯¡¢¹ÔÊý¸þ¤Ë¹àÌܤò¥ê¥¹¥È¤¹¤ë\n"
+#~ " -X ¹àÌܤγÈÄ¥»Ò½ç¤Ç¥½¡¼¥È¤¹¤ë\n"
+#~ " -1 °ì¹Ô¤¢¤¿¤ê¤Ë°ì¤Ä¤Î¥Õ¥¡¥¤¥ë¤ò¥ê¥¹¥È¤¹¤ë\n"
+#~ " --help ¤³¤Î¥Ø¥ë¥×¤òɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+#~ " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+#~ "\n"
+#~ "Æä˻ØÄ꤬¤Ê¤±¤ì¤Ð¡¢color ¤Ï¥Õ¥¡¥¤¥ë¥¿¥¤¥×¤Ë¤è¤Ã¤Æ¶èÊ̤µ¤ì¤Þ¤»¤ó¡£¤³¤ì¤Ï\n"
+#~ "--color=none ¤ò»È¤¦¤Î¤ÈƱÅù¤Ç¤¹¡£WHEN °ú¿ô¤ò»ØÄꤻ¤º¤Ë --color ¥ª¥×¥·¥ç¥ó"
+#~ "¤ò\n"
+#~ "»È¤¦¤È¡¢--color=always ¤ò»È¤¦¤Î¤ÈƱÅù¤Ç¤¹¡£--color=auto ¤ò»È¤¨¤Ð¡¢Àܳ¤µ¤ì"
+#~ "¤¿\n"
+#~ "üËö(tty)¤Îɸ½à½ÐÎϤˤΤߥ«¥é¡¼¥³¡¼¥É¤ò½ÐÎϤ·¤Þ¤¹¡£\n"
+
+#~ msgid ""
+#~ "Create named pipes (FIFOs) with the given NAMEs.\n"
+#~ "\n"
+#~ " -m, --mode=MODE set permission mode (as in chmod), not a=rw - umask\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Í¿¤¨¤é¤ì¤¿ `̾Á°' ¤Ç ̾Á°¤Ä¤­¥Ñ¥¤¥×(FIFO)¤òºî¤ë¡£\n"
+#~ "\n"
+#~ " -m, --mode=MODE ¥¢¥¯¥»¥¹¸¢¤ò(chmod ¤Î¤è¤¦¤Ë)»ØÄꤹ¤ë\n"
+#~ " ¾Êά»þ¤Ï a=rw ¤«¤é umask ¤ò°ú¤¤¤¿¤â¤Î¤È¤Ê¤ë\n"
+#~ " --help »È¤¤Êý¤òɸ½à½ÐÎϤËɽ¼¨¤¹¤ë\n"
+#~ " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɸ½à½ÐÎϤËɽ¼¨¤¹¤ë\n"
+
+#, fuzzy
+#~ msgid "cannot create fifo `%s'"
+#~ msgstr "¥Ç¥£¥ì¥¯¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó"
+
+#~ msgid ""
+#~ "when creating character special files, major and minor device\n"
+#~ "numbers must be specified"
+#~ msgstr ""
+#~ "¥­¥ã¥é¥¯¥¿·¿¥¹¥Ú¥·¥ã¥ë¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë»þ¤Ï¡¢¥á¥¸¥ã¡¼µÚ¤Ó¥Þ¥¤¥Ê¡¼¥Ç¥Ð¥¤"
+#~ "¥¹\n"
+#~ "ÈÖ¹æ¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó"
+
+#~ msgid ""
+#~ "Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+#~ "\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination "
+#~ "file\n"
+#~ " -b like --backup but does not accept an "
+#~ "argument\n"
+#~ " -f, --force never prompt before overwriting\n"
+#~ " -i, --interactive prompt before overwrite\n"
+#~ " --strip-trailing-slashes remove any trailing slashes from each "
+#~ "SOURCE\n"
+#~ " argument\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " --target-directory=DIRECTORY move all SOURCE arguments into "
+#~ "DIRECTORY\n"
+#~ " -u, --update move only older or brand new non-"
+#~ "directories\n"
+#~ " -v, --verbose explain what is being done\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "SOURCE ¤«¤é DEST ¤Ø̾Á°¤òÊѹ¹¡¢¤â¤·¤¯¤Ï¥Õ¥¡¥¤¥ë¤ò¥Ç¥£¥ì¥¯¥È¥ê¤Ø°ÜÆ°¤¹"
+#~ "¤ë¡£\n"
+#~ "\n"
+#~ " --backup[=CONTROL] ¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤¹¤ëºÝ, ¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¤È"
+#~ "¤ë\n"
+#~ " -b °ú¿ô¤ò¼è¤é¤Ê¤¤¤³¤È°Ê³°¤Ï --backup ¤ÈƱ¤¸\n"
+#~ " -f, --force ¶¯À©Åª¤Ë¾å½ñ¤­¤ò¤¹¤ë\n"
+#~ " -i, --interactive ¾å½ñ¤­¤ò¤¹¤ëÁ°¤Ë³Îǧ¤ò¤È¤ë\n"
+#~ " --strip-trailing-slashes SOURCE °ú¿ô¤«¤é;·×¤Ê¥¹¥é¥Ã¥·¥å¤ò¼è¤ê½ü¤¯\n"
+#~ " -S, --suffix=SUFFIX ¥Ð¥Ã¥¯¥¢¥Ã¥×¥µ¥Õ¥£¥Ã¥¯¥¹¤Î»ØÄê\n"
+#~ " --target-directory=DIR Á´ SOURCE °ú¿ô¤ò DIR ¥Ç¥£¥ì¥¯¥È¥ê¤Ë°ÜÆ°¤¹"
+#~ "¤ë\n"
+#~ " -u, --update Ʊ°ì¥Õ¥¡¥¤¥ë̾¡¢Æ±°ì¥¿¥¤¥à¥¹¥¿¥ó¥×¤Î\n"
+#~ " ¥Õ¥¡¥¤¥ë¤Ï°ÜÆ°¤·¤Ê¤¤\n"
+#~ " -v --verbose ¹Ô¤Ê¤ï¤ì¤ë¤³¤È¤òÀâÌÀ¤¹¤ë\n"
+#~ " --help »È¤¤Êý¤òɸ½à½ÐÎϤËɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+#~ " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɸ½à½ÐÎϤËɽ¼¨¤·¤Æ½ªÎ»¤¹"
+#~ "¤ë\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink directory, even if non-empty (super-user "
+#~ "only)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ " -r, -R, --recursive remove the contents of directories recursively\n"
+#~ " -v, --verbose explain what is being done\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "To remove a file whose name starts with a `-', for example `-foo',\n"
+#~ "use one of these commands:\n"
+#~ " %s -- -foo\n"
+#~ "\n"
+#~ " %s ./-foo\n"
+#~ "\n"
+#~ "Note that if you use rm to remove a file, it is usually possible to "
+#~ "recover\n"
+#~ "the contents of that file. If you want more assurance that the contents "
+#~ "are\n"
+#~ "truly unrecoverable, consider using shred.\n"
+#~ msgstr ""
+#~ "°ì¤Ä¤¢¤ë¤¤¤ÏÊ£¿ô¤Î¥Õ¥¡¥¤¥ë¤òºï½ü(unlink)¤¹¤ë¡£\n"
+#~ "\n"
+#~ " -d, --directory ¶õ¤Ç¤Ê¤¯¤Æ¤â¥Ç¥£¥ì¥¯¥È¥ê¤Î¥ê¥ó¥¯¤òºï½ü¤¹¤ë\n"
+#~ " ´ÉÍý¼Ô(root)¤Î¤ßÍøÍѲÄ\n"
+#~ " -f, --force ¸ºß¤·¤Ê¤¤¥Õ¥¡¥¤¥ë¤Ï̵»ë¤·¡¢³Îǧ¤ò¤È¤é¤Ê¤¤\n"
+#~ " -i, --interactive ºï½ü¤ò¤¹¤ëÁ°¤Ë³Îǧ¤ò¤È¤ë\n"
+#~ " -r, -R, --recursive ¥Ç¥£¥ì¥¯¥È¥ê¤È¤½¤ÎÃæ¿È¤òºÆµ¢Åª¤Ëºï½ü¤¹¤ë\n"
+#~ " -v --verbose ¹Ô¤Ê¤ï¤ì¤ë¤³¤È¤òÃà°ìÊó¹ð¤¹¤ë\n"
+#~ " --help »È¤¤Êý¤òɸ½à½ÐÎϤËɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+#~ " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɸ½à½ÐÎϤËɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+#~ "\n"
+#~ "`-' ¤Ç»Ï¤Þ¤ë̾Á°¤Î¥Õ¥¡¥¤¥ë¤òºï½ü¤¹¤ë¤Ë¤Ï¡¢Î㤨¤Ð `-foo' ¤È±¾¤¦¥Õ¥¡¥¤¥ë¤Ê"
+#~ "¤é\n"
+#~ "¤³¤¦¤¤¤¦¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤·¤ç¤¦:\n"
+#~ " %s -- -foo\n"
+#~ " %s ./-foo\n"
+
+#~ msgid ""
+#~ "Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+#~ "for even very expensive hardware probing to recover the data.\n"
+#~ "\n"
+#~ " -f, --force change permissions to allow writing if necessary\n"
+#~ " -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+#~ " -s, --size=N shred this many bytes (suffixes like k, M, G accepted)\n"
+#~ " -u, --remove truncate and remove file after overwriting\n"
+#~ " -v, --verbose show progress\n"
+#~ " -x, --exact do not round file sizes up to the next full block\n"
+#~ " -z, --zero add a final overwrite with zeros to hide shredding\n"
+#~ " - shred standard output\n"
+#~ " --help display this help and exit\n"
+#~ " --version print version information and exit\n"
+#~ "\n"
+#~ "Delete FILE(s) if --remove (-u) is specified. The default is not to "
+#~ "remove\n"
+#~ "the files because it is common to operate on device files like /dev/hda,\n"
+#~ "and those files usually should not be removed. When operating on "
+#~ "regular\n"
+#~ "files, most people use the --remove option.\n"
+#~ "\n"
+#~ "CAUTION: Note that shred relies on a very important assumption:\n"
+#~ "that the filesystem overwrites data in place. This is the traditional\n"
+#~ "way to do things, but many modern filesystem designs do not satisfy this\n"
+#~ "assumption. The following are examples of filesystems on which shred is\n"
+#~ "not effective:\n"
+#~ "\n"
+#~ "* log-structured or journaled filesystems, such as those supplied with\n"
+#~ " AIX and Solaris (and JFS, ReiserFS, XFS, etc.)\n"
+#~ "\n"
+#~ "* filesystems that write redundant data and carry on even if some writes\n"
+#~ " fail, such as RAID-based filesystems\n"
+#~ "\n"
+#~ "* filesystems that make snapshots, such as Network Appliance's NFS "
+#~ "server\n"
+#~ "\n"
+#~ "* filesystems that cache in temporary locations, such as NFS\n"
+#~ " version 3 clients\n"
+#~ "\n"
+#~ "* compressed filesystems\n"
+#~ msgstr ""
+#~ "»ØÄꤵ¤ì¤¿ FILE ¤Ë·«¤êÊÖ¤·¤Æ¾å½ñ¤­¤ò¹Ô¤¤¡¢Èó¾ï¤Ë¹â²Á¤Ê¥Ï¡¼¥É¥¦¥§¥¢¤Ç¤µ¤¨\n"
+#~ "¥Ç¡¼¥¿¤ÎÉüµì¤Î¤¿¤á¤ÎÄ´ºº¤¬º¤Æñ¤È¤Ê¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£\n"
+#~ "\n"
+#~ " -f, --force ɬÍפ˱þ¤¸¤Æ½ñ¹þ¤ß²Äǽ¤Ê¸¢¸Â¤ËÊѹ¹¤¹¤ë\n"
+#~ " -n, --iterations=N ¥Ç¥Õ¥©¥ë¥È²ó¿ô(%d)¤ÎÂå¤ï¤ê¤Ë N ²ó¤Î½ñ¤­¹þ¤ß¤ò¹Ô¤Ê"
+#~ "¤¦\n"
+#~ " -s, --size=N ¤³¤Î¥Ð¥¤¥È¿ô¤ËÀ£ÃǤ¹¤ë (k, M, G ¤ÎÍͤÊÀÜÈø¼­¤ò»È¤¨¤Þ¤¹)\n"
+#~ " -u, --remove ¾å½ñ¤­¤Î¸å¤ËÀÚ¼è¤ê¤Èºï½ü\n"
+#~ " -v, --verbose ¿ÊĽ¤òɽ¼¨\n"
+#~ " -x, --exact ¥Õ¥¡¥¤¥ë¥Ö¥í¥Ã¥¯Ã±°Ì¤Ø¤Î¥Õ¥¡¥¤¥ë¥µ¥¤¥ºÀÚ¤ê¾å¤²¤ò¤·¤Ê¤¤\n"
+#~ " -z, --zero shred ¤ò±£¤¹¤¿¤á¤Ë¡¢ºÇ¸å¤Ë°ìÅÙ¥¼¥í¤Ç¤Î¾å½ñ¤­¤òÄɲ乤ë\n"
+#~ " - ɸ½à½ÐÎϤòÀ£ÃǤ¹¤ë\n"
+#~ " --help ¤³¤Î»È¤¤Êý¤òɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+#~ " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+#~ "\n"
+#~ "--remove (-u) ¤¬»ØÄꤵ¤ì¤¿¤È¤­¤Ë FILE ¤òºï½ü¤·¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¥Õ¥¡¥¤¥ë"
+#~ "¤ò\n"
+#~ "ºï½ü¤·¤Ê¤¤¤Î¤Ï¡¢/dev/hda ¤Î¤è¤¦¤Ê¥Ç¥Ð¥¤¥¹¥Õ¥¡¥¤¥ë¤Ë¤È¤Ã¤Æ¤Î¶¦Ä̤ÎÁàºî¤Ç¤¢"
+#~ "¤ê¡¢\n"
+#~ "¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤ÏÉáÄ̺ï½ü¤µ¤ì¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¤¤«¤é¤Ç¤¹¡£\n"
+#~ "Ä̾ï¥Õ¥¡¥¤¥ë¤òÁàºî¤¹¤ë¤È¤­¤Ë¤Ï¡¢Ëؤó¤É¤Î¿Í¤¬ --remove ¥ª¥×¥·¥ç¥ó¤ò»È¤¤¤Þ"
+#~ "¤¹\n"
+#~ "\n"
+#~ "Ãí°Õ: shred ¤ÏÈó¾ï¤Ë½ÅÂç¤Ê²¾Äê¤Ë´ð¤Å¤¤¤Æ¤¤¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤:\n"
+#~ "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤¬¥Ç¡¼¥¿¤Î¾ì½ê¤Ë¾å½ñ¤­¤¹¤ë¤È¤¤¤¦¤³¤È¡£¤³¤ì¤ÏÅÁÅýŪ¤Ê\n"
+#~ "ÊýË¡¤Ç¤¹¤¬¡¢¶áǯ¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ï¤³¤Î²¾Äê¤òËþ¤¿¤·¤Þ¤»¤ó¡£\n"
+#~ "shred ¤ò»È¤¦°ÕÌ£¤¬¤Ê¤¤¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ÎÎã¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹:\n"
+#~ "\n"
+#~ "* AIX ¤ä Solaris ¤ÇÄ󶡤µ¤ì¤ë¥í¥°¹½Â¤¤ä¥¸¥ã¡¼¥Ê¥ê¥ó¥°¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à\n"
+#~ " ¡ÊµÚ¤Ó JFS, ReiserFS, XFS Åù¡Ë\n"
+#~ "\n"
+#~ "* RAID ¥Ù¡¼¥¹¤ÎÍͤˡ¢¾éĹ¤Ê¥Ç¡¼¥¿¤ò½ñ¹þ¤ó¤Ç¤ª¤ê¡¢½ñ¤­¹þ¤ß¤¬¼ºÇÔ¤·¤¿¤È¤­¤Ç"
+#~ "¤â\n"
+#~ " °Ý»ý¤µ¤ì¤ëÍͤʥե¡¥¤¥ë¥·¥¹¥Æ¥à\n"
+#~ "\n"
+#~ "* Network Appliance ¤Î NFS ¥µ¡¼¥Ð¤ÎÍͤˡ¢¥¹¥Ê¥Ã¥×¥·¥ç¥Ã¥È¤òºî¤ë¥Õ¥¡¥¤¥ë¥·"
+#~ "¥¹¥Æ¥à\n"
+#~ "\n"
+#~ "* NFS ¥Ð¡¼¥¸¥ç¥ó 3 ¥¯¥é¥¤¥¢¥ó¥È¤ÎÍͤˡ¢°ì»þŪ¤Ë¥­¥ã¥Ã¥·¥å¤ò¹Ô¤Ê¤¦¤è¤¦¤Ê\n"
+#~ " ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à\n"
+#~ "\n"
+#~ "* °µ½Ì¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à\n"
+
+#~ msgid ""
+#~ "Force changed blocks to disk, update the super block.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¥Ð¥Ã¥Õ¥¡¤Î¥Õ¥é¥Ã¥·¥å\n"
+#~ "\n"
+#~ " --help »È¤¤Êý¤òɸ½à½ÐÎϤËɽ¤·¤Æ½ªÎ»¤¹¤ë\n"
+#~ " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɸ½à½ÐÎϤËɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+
+#~ msgid ""
+#~ "Update the access and modification times of each FILE to the current "
+#~ "time.\n"
+#~ "\n"
+#~ " -a change only the access time\n"
+#~ " -c, --no-create do not create any files\n"
+#~ " -d, --date=STRING parse STRING and use it instead of current time\n"
+#~ " -f (ignored)\n"
+#~ " -m change only the modification time\n"
+#~ " -r, --reference=FILE use this file's times instead of current time\n"
+#~ " -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current "
+#~ "time\n"
+#~ " --time=WORD set time given by WORD: access atime use (same "
+#~ "as -a)\n"
+#~ " modify mtime (same as -m)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Note that the three time-date formats recognized for the -d and -t "
+#~ "options\n"
+#~ "and for the obsolescent argument are all different.\n"
+#~ msgstr ""
+#~ "¤½¤ì¤¾¤ì¤Î¥Õ¥¡¥¤¥ë¤Î¥¢¥¯¥»¥¹»þ¹ï¤ä½¤Àµ»þ¹ï¤ò¸½ºß»þ¹ï¤Ë¹¹¿·¤¹¤ë¡£\n"
+#~ "\n"
+#~ " -a ¥¢¥¯¥»¥¹»þ¹ï¤Î¤ß¤òÊѹ¹¤¹¤ë\n"
+#~ " -c --no-create ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¤Ë¿·µ¬ºîÀ®¤ò¹Ô¤ï¤Ê¤¤\n"
+#~ " -d, --date=STRING ¸½ºß¤Î»þ¹ï¤ÎÂå¤ï¤ê¤Ë STRING ¤Î»þ¹ï¤òÍѤ¤¤ë\n"
+#~ " -f (̵»ë¤µ¤ì¤ë)\n"
+#~ " -m ½¤Àµ»þ¹ï¤Î¤ß¤òÊѹ¹¤¹¤ë\n"
+#~ " -r, --reference=FILE ¸½ºß¤Î»þ¹ï¤ÎÂå¤ï¤ê¤Ë FILE ¤Î»þ¹ï¤òÍѤ¤¤ë\n"
+#~ " -t STAMP ¸½ºß¤Î»þ¹ï¤ÎÂå¤ï¤ê¤Ë [[CC]YY]MMDDhhmm[.ss]¤ò¤Ä¤«"
+#~ "¤¦\n"
+#~ " --time=WORD WORD ¤Ë¤è¤Ã¤ÆÍ¿¤¨¤é¤ì¤¿ »þ¹ï¤òÀßÄꤹ¤ë\n"
+#~ " access ¤Ê¤é atime (-a ¤ÈƱ¤¸)¡¢modify ¤Ê¤é "
+#~ "mtime\n"
+#~ " (-m ¤ÈƱ¤¸)¤ò»È¤¦\n"
+#~ " --help »È¤¤Êý¤òɸ½à½ÐÎϤËɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+#~ " --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɸ½à½ÐÎϤËɽ¼¨¤·¤Æ½ªÎ»¤¹¤ë\n"
+#~ "\n"
+#~ "3 ¤Ä¤Î »þ¹ï-ÆüÉդνñ¼°¤Ï -d ¤È -t ¥ª¥×¥·¥ç¥óÍѤȸ«¤Ê¤µ¤ì¡¢ÀΤνñ¼°¤Î\n"
+#~ "°ú¿ô¤È¤ÏÁ´¤¯°Û¤Ê¤ë¤³¤È¤ËÃí°Õ¤·¤Þ¤·¤ç¤¦¡£\n"
+
+#, fuzzy
+#~ msgid "virtual memory exhausted"
+#~ msgstr "¥á¥â¥ê¤ò»È¤¤²Ì¤¿¤·¤Þ¤·¤¿"
+
+#~ msgid "group of %s changed to %s\n"
+#~ msgstr "%s ¤Î¥°¥ë¡¼¥×¤ò %s ¤ØÊѹ¹¤·¤Þ¤·¤¿\n"
+
+#~ msgid "you are not a member of group `%s'"
+#~ msgstr "¤¢¤Ê¤¿¤Ï¥°¥ë¡¼¥× `%s' ¤Î¥á¥ó¥Ð¡¼¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
+
+#~ msgid "owner of %s changed to "
+#~ msgstr "%s ¤Î½êÍ­¼Ô¤ò°Ê²¼¤ËÊѹ¹ : "
+
+#, fuzzy
+#~ msgid "cannot remove old link to `%s'"
+#~ msgstr "`%s' ¤Ç ioctl() ¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó"
+
+#, fuzzy
+#~ msgid "cannot make fifo `%s'"
+#~ msgstr "`%s' ¤Ç ioctl() ¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó"
+
+#~ msgid ""
+#~ "Delete a file securely, first overwriting it to hide its contents.\n"
+#~ "\n"
+#~ " -f, --force change permissions to allow writing if necessary\n"
+#~ " -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+#~ " -s, --size=N shred this many bytes (suffixes like k, M, G accepted)\n"
+#~ " -u, --remove truncate and remove file after overwriting\n"
+#~ " -v, --verbose show progress\n"
+#~ " -x, --exact do not round file sizes up to the next full block\n"
+#~ " -z, --zero add a final overwrite with zeros to hide shredding\n"
+#~ " - shred standard output\n"
+#~ " --help display this help and exit\n"
+#~ " --version print version information and exit\n"
+#~ "\n"
+#~ "FIXME maybe add more discussion here?"
+#~ msgstr ""
+#~ "¥Õ¥¡¥¤¥ë¤ò°ÂÁ´¤Ëºï½ü¤·¤Þ¤¹¡¢¤Þ¤º¤ÏÆâÍƤò±£Ê乤뤿¤á¾å½ñ¤­¤·¤Þ¤¹¡£\n"
+#~ "\n"
+#~ " -f, --force ɬÍפ˱þ¤¸¡¢½ñ¤­¹þ¤ß¤Î¤¿¤á¤Îµö²Ä°À­¤òÊѹ¹\n"
+#~ " -n, --iterations=N ½é´üÃÍ(%d)¤ÎÂå¤ï¤ê¤Ë N ²ó¾å½ñ¤­\n"
+#~ " -s, --size=N ¿¤¯¤Î¥Ð¥¤¥È¿ô¤ò shred ¤¹¤ë (k, M, G ¤ÎÍͤÊñ°Ì¤â²ò¼á¤¹"
+#~ "¤ë)\n"
+#~ " -u, --remove ¾å½ñ¤­¤Î¸å¤Ç¥Õ¥¡¥¤¥ë¤òÀÚ¤êµÍ¤á¤Æºï½ü\n"
+#~ " -v, --verbose ¿Ê¹Ô¾õ¶·¤ò¸«¤ë\n"
+#~ " -x, --exact ¥Õ¥¡¥¤¥ë¥Ö¥í¥Ã¥¯Ã±°Ì¤Ø¤Î¥Õ¥¡¥¤¥ë¥µ¥¤¥ºÀÚ¤ê¾å¤²¤ò¤·¤Ê¤¤\n"
+#~ " -z, --zero shred ¤ò±£¤¹¤¿¤á¡¢ºÇ¸å¤Ë°ì²ó¥¼¥í¤Ç¤Î¾å½ñ¤­¤òÄɲ乤ë\n"
+#~ " - ɸ½à½ÐÎϤΠshred\n"
+#~ " --help ¤³¤Î»È¤¤Êý¤òɽ¼¨¤·¤Æ½ªÎ»¤·¤Þ¤¹\n"
+#~ " --version ¥ô¥¡¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»¤·¤Þ¤¹\n"
+#~ "\n"
+#~ "*½¤Àµ¤¹¤Ù¤·* ¤³¤³¤Ë¤¤¤í¤¤¤íÀâÌÀ¤¬²Ã¤ï¤ë¤«¤Ê¡©"
+
+#~ msgid "create %s %s to %s"
+#~ msgstr "%2$s ¤«¤é %3$s ¤Ë%1$s¤ò¤Ï¤ê¤Þ¤·¤¿"
+
+#~ msgid "hard link"
+#~ msgstr "¥Ï¡¼¥É¥ê¥ó¥¯"
+
+#~ msgid "link"
+#~ msgstr "¥ê¥ó¥¯"
+
+#~ msgid "--version-control"
+#~ msgstr "--version-control"
+
+#, fuzzy
+#~ msgid "starting directory"
+#~ msgstr "¥Ç¥£¥ì¥¯¥È¥ê"
+
+#~ msgid "%s -> %s (backup)\n"
+#~ msgstr "%s -> %s (¥Ð¥Ã¥¯¥¢¥Ã¥×)\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ msgstr ""
+#~ "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [ÆþÎϸµ]... (-G ¤Ê¤·)\n"
+#~ " Ëô¤Ï: %s -G [¥ª¥×¥·¥ç¥ó]... [ÆþÎϸµ [½ÐÎÏÀè]]\n"
+
+#, fuzzy
+#~ msgid "Usage: %s [OPTION]... EXISTING_DIR NEW_DIR\n"
+#~ msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... SET1 [SET2]\n"
+
+#, fuzzy
+#~ msgid "cannot rename `.' or `..'"
+#~ msgstr "¥Û¥¹¥È̾¤ò `%s' ¤ËÀßÄê¤Ç¤­¤Þ¤»¤ó"
diff --git a/po/ko.gmo b/po/ko.gmo
new file mode 100644
index 0000000..a4ea53c
--- /dev/null
+++ b/po/ko.gmo
Binary files differ
diff --git a/po/ko.po b/po/ko.po
new file mode 100644
index 0000000..b161077
--- /dev/null
+++ b/po/ko.po
@@ -0,0 +1,10107 @@
+# Korean messages for GNU textutils
+# Copyright (C) 1996, 2001, 2002 Free Software Foundation, Inc.
+# Bang Jun-Young <bangjy@nownuri.nowcom.co.kr>, 1996-1997.
+# Changwoo Ryu <cwryu@debian.org>, 2001-2002.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU textutils 2.0.22\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2002-07-22 20:02+0900\n"
+"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
+"Language-Team: Korean <translation-team-ko@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=EUC-KR\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "%sÀÇ Çã°¡¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, fuzzy, c-format
+msgid "setting permissions for %s"
+msgstr "%sÀÇ Çã°¡¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "%2$s¿¡ ´ëÇØ ºÎÀûÀýÇÑ ÀÎÀÚ %1$s"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "%2$s¿¡ ´ëÇØ ¾Ö¸ÅÇÑ ÀÎÀÚ %1$s"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "¿Ã¹Ù¸¥ ÀÎÀÚ´Â:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "¾²±â ¿À·ù"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "¾Ë ¼ö ¾ø´Â ½Ã½ºÅÛ ¿À·ù"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, fuzzy, c-format
+msgid "cannot stat %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "ÀÏ¹Ý ºó ÆÄÀÏ"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "ÀÏ¹Ý ÆÄÀÏ"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "µð·ºÅ丮"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "ºí·Ï Ư¼ö ÆÄÀÏ"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "¹®ÀÚ Æ¯¼ö ÆÄÀÏ"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "FIFO"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "½Éº¼¸¯ ¸µÅ©"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "¼ÒÄÏ"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "¸Þ¼¼Áö Å¥"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "¼¼¸¶Æ÷¾î"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "°øÀ¯ ¸Þ¸ð¸® ¿ÀºêÁ§Æ®"
+
+#: lib/file-type.c:69
+#, fuzzy
+msgid "typed memory object"
+msgstr "°øÀ¯ ¸Þ¸ð¸® ¿ÀºêÁ§Æ®"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "±«»óÇÑ ÆÄÀÏ"
+
+#: lib/gai_strerror.c:44
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "fifoÆÄÀÏÀº Áö¿øÇÏÁö ¾Ê½À´Ï´Ù"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "fifoÆÄÀÏÀº Áö¿øÇÏÁö ¾Ê½À´Ï´Ù"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr ""
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "fifoÆÄÀÏÀº Áö¿øÇÏÁö ¾Ê½À´Ï´Ù"
+
+#: lib/gai_strerror.c:54
+#, fuzzy
+msgid "System error"
+msgstr "¾²±â ¿À·ù"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+#, fuzzy
+msgid "Unknown error"
+msgstr "¾Ë ¼ö ¾ø´Â ½Ã½ºÅÛ ¿À·ù"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: `%s'Àº(´Â) ¸ðÈ£ÇÑ ¿É¼ÇÀÔ´Ï´Ù\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: `--%s' ¿É¼ÇÀº Àμö¸¦ Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: `%c%s' ¿É¼ÇÀº Àμö¸¦ Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: `%s' ¿É¼ÇÀº Àμö°¡ ÇÊ¿äÇÕ´Ï´Ù\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: ÀνÄÇÒ ¼ö ¾ø´Â ¿É¼Ç `--%s'\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: ÀνÄÇÒ ¼ö ¾ø´Â ¿É¼Ç `%c%s'\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: À߸øµÈ ¿É¼Ç -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ºÎÀûÀýÇÑ ¿É¼Ç -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: ÀÌ ¿É¼ÇÀº Àμö°¡ ÇÊ¿äÇÕ´Ï´Ù -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: `-W %s'Àº(´Â) ¸ðÈ£ÇÑ ¿É¼ÇÀÔ´Ï´Ù\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: `-W %s' ¿É¼ÇÀº Àμö¸¦ Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "ºí·Ï Å©±â"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "%sÀÇ Çã°¡¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "¸Þ¸ð¸®°¡ ¹Ù´Ú³²"
+
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "'"
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "%s: Àб⠿À·ù"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: ºÎÀûÀýÇÑ Á¤±Ô½Ä: %s"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "ºÎÀûÀýÇÑ ¹®ÀÚ Å¬·¡½º `%s'"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "¸Þ¸ð¸®°¡ ¹Ù´Ú³²"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: ºÎÀûÀýÇÑ Á¤±Ô½Ä: %s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "Á¤±Ô½Ä Ž»ö¿¡ ¿À·ù ¹ß»ý"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "%s: ºÎÀûÀýÇÑ Á¤±Ô½Ä: %s"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "Á¤±Ô½Ä Ž»ö¿¡ ¿À·ù ¹ß»ý"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr ""
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr ""
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[yY]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "iconv ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+# not usable°ú not availableÀÇ Â÷ÀÌ´Â?
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "iconv ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "¹üÀ§¸¦ ¹þ¾î³­ ¹®ÀÚ"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "U+%04XÀ»(¸¦) ·ÎÄ® ¹®ÀÚ¼ÂÀ¸·Î º¯È¯ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "U+%04XÀ»(¸¦) ·ÎÄ® ¹®ÀÚ¼ÂÀ¸·Î º¯È¯ÇÒ ¼ö ¾ø½À´Ï´Ù: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "À߸øµÈ »ç¿ëÀÚ"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "À߸øµÈ ±×·ì"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "À߸øµÈ »ç¿ëÀÚ"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+#, fuzzy
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"ÀÌ ÇÁ·Î±×·¥Àº ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾îÀÔ´Ï´Ù. ¼ÒÇÁÆ®¿þ¾îÀÇ ÇǾ絵ÀÚ´Â ÀÚÀ¯ \n"
+"¼ÒÇÁÆ®¿þ¾î Àç´ÜÀÌ °øÇ¥ÇÑ GNU General Public License 2ÆÇ (¶Ç´Â ±× ÀÌÈÄ \n"
+"ÆÇÀ» ÀÓÀÇ·Î ¼±ÅÃÇؼ­), ±× ±ÔÁ¤¿¡ µû¶ó ÇÁ·Î±×·¥À» °³ÀÛÇϰųª Àç¹èÆ÷ÇÒ \n"
+"¼ö ÀÖ½À´Ï´Ù.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "%sÀÌ(°¡) ¸¸µé¾ú½À´Ï´Ù.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid "Written by %s and %s.\n"
+msgstr "%sÀÌ(°¡) ¸¸µé¾ú½À´Ï´Ù.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, fuzzy, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "%sÀÌ(°¡) ¸¸µé¾ú½À´Ï´Ù.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr "%sÀÌ(°¡) ¸¸µé¾ú½À´Ï´Ù.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr "%sÀÌ(°¡) ¸¸µé¾ú½À´Ï´Ù.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xfts.c:58
+#, fuzzy, c-format
+msgid "invalid argument: %s"
+msgstr "%2$s¿¡ ´ëÇØ ºÎÀûÀýÇÑ ÀÎÀÚ %1$s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "¹®ÀÚ¿­ ºñ±³°¡ ½ÇÆÐÇß½À´Ï´Ù"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "ÀÌ ¹®Á¦¸¦ ÇÇÇØ °¡·Á¸é LC_ALL='C'ÇϽʽÿÀ."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "ºñ±³ÇÑ ¹®ÀÚ¿­Àº %s°ú(¿Í) %sÀÔ´Ï´Ù."
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "¹®ÀÚ¿­ ºñ±³°¡ ½ÇÆÐÇß½À´Ï´Ù"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "ºÎÀûÀýÇÑ Æø: `%s'"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "ºÎÀûÀýÇÑ ¹®ÀÚ Å¬·¡½º `%s'"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%sÀº(´Â) ³Ê¹« Å®´Ï´Ù"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "´õ ¸¹Àº Á¤º¸¸¦ º¸·Á¸é `%s --help' ÇϽʽÿÀ.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr " --version ¹öÀü Á¤º¸¸¦ Ãâ·ÂÇÏ°í ³¡³À´Ï´Ù\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"<ÆÄÀÏ>ÀÌ ÁÖ¾îÁöÁö ¾Ê°Å³ª - À̸é Ç¥ÁØ ÀÔ·ÂÀ» ÀнÀ´Ï´Ù.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"<%s>(À¸)·Î ¹ö±×¸¦ ¾Ë·Á ÁֽʽÿÀ.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "Àб⠿À·ù"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "ºÎÀûÀýÇÑ ¼ýÀÚ"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "ºÎÀûÀýÇÑ Å¸ÀÔÀÇ ¹®ÀÚ¿­ `%s'"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, fuzzy, c-format
+msgid "extra operand %s"
+msgstr "ºÒÇÊ¿äÇÑ ÇÇ¿¬»êÀÚ `%s'"
+
+#: src/base64.c:316 src/cat.c:785
+#, fuzzy, c-format
+msgid "closing standard input"
+msgstr "Ç¥ÁØ ÀÔ·Â"
+
+#: src/basename.c:54
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<ÆÄÀÏ>]...\n"
+" ȤÀº: %s [<¿É¼Ç>]\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, fuzzy, c-format
+msgid "missing operand"
+msgstr "%s: `%c' µÚ¿¡ Á¤¼ö°¡ ¿Í¾ßÇÔ"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>] [<ÆÄÀÏ>]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"<ÆÄÀÏ>(µé)À̳ª Ç¥ÁØ ÀÔ·ÂÀ» ¿¬°áÇØ Ç¥ÁØ Ãâ·Â¿¡ Ãâ·ÂÇÕ´Ï´Ù.\n"
+"\n"
+" -A, --show-all -vET¿Í °°À½\n"
+" -b, --number-nonblank ºóÁÙÀÌ ¾Æ´Ñ Ãâ·ÂÇàÀÇ °³¼ö¸¦ ¼Á´Ï´Ù\n"
+" -e -vE¿Í °°À½\n"
+" -E, --show-ends °¢ ÇàÀÇ ³¡¿¡ $¸¦ Ç¥½ÃÇÕ´Ï´Ù\n"
+" -n, --number ¸ðµç Ãâ·ÂÇàÀÇ °³¼ö¸¦ ¼Á´Ï´Ù\n"
+" -s, --squeeze-blank ÇÑÁÙ ÀÌ»óÀÇ ºó ÇàÀ» Á¦°ÅÇÕ´Ï´Ù\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t -vT¿Í °°À½\n"
+" -T, --show-tabs ÅÇ ¹®ÀÚ¸¦ ^I·Î Ç¥½ÃÇÕ´Ï´Ù\n"
+" -u (¹«½ÃµÊ)\n"
+" -v, --show-nonprinting ^ ¿Í M- Ç¥±â¹ýÀ» »ç¿ëÇÕ´Ï´Ù (LFD¿Í TAB Á¦¿Ü)\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+#: src/cat.c:333
+#, fuzzy, c-format
+msgid "cannot do ioctl on %s"
+msgstr "`%s'¿¡¼­ ioctlÀ» ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "Ç¥ÁØ Ãâ·Â"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: ÀÔ·Â ÆÄÀÏÀÌ Ãâ·Â ÆÄÀÏÀÔ´Ï´Ù"
+
+#: src/chgrp.c:95 src/install.c:611
+#, fuzzy, c-format
+msgid "invalid group %s"
+msgstr "À߸øµÈ ±×·ì"
+
+#: src/chgrp.c:112
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<¿É¼Ç>]... [<ÆÄÀÏ>]...\n"
+" ¶Ç´Â: %s --traditional [<ÆÄÀÏ>] [[+]<¿É¼Â> [[+]<·¹À̺í>]]\n"
+
+#: src/chgrp.c:117
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr ""
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, fuzzy, c-format
+msgid "missing operand after %s"
+msgstr "%s: `%c' µÚ¿¡ Á¤¼ö°¡ ¿Í¾ßÇÔ"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, fuzzy, c-format
+msgid "failed to get attributes of %s"
+msgstr "%sÀÇ ½Ã°£À» À¯ÁöÇÕ´Ï´Ù"
+
+#: src/chmod.c:128
+#, fuzzy, c-format
+msgid "getting new attributes of %s"
+msgstr "%sÀÇ ½Ã°£À» À¯ÁöÇÕ´Ï´Ù"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "½Éº¼¸¯ ¸µÅ© %sµµ, À̸¦ °¡¸®Ä¡´Â ¿ø·¡ ÆÄÀϵµ º¯°æµÇÁö ¾Ê¾Ò½À´Ï´Ù\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "%sÀÇ ¸ðµå¸¦ %04lo(%s)À¸·Î º¯°æÇÏ¿´½À´Ï´Ù\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "%sÀÇ ¸ðµå¸¦ %04lo(%s)À¸·Î º¯°æÇϴµ¥ ½ÇÆÐÇÏ¿´½À´Ï´Ù\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "%sÀÇ ¸ðµå¸¦ %04lo(%s)À¸·Î À¯ÁöÇÏ¿´½À´Ï´Ù\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, fuzzy, c-format
+msgid "cannot access %s"
+msgstr "`%s'¿¡ chownÀ» ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, fuzzy, c-format
+msgid "cannot read directory %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/chmod.c:251
+#, fuzzy, c-format
+msgid "changing permissions of %s"
+msgstr "%sÀÇ Çã°¡¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#: src/chmod.c:286
+#, fuzzy, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "%sÀÇ Çã°¡¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, fuzzy, c-format
+msgid "fts_read failed"
+msgstr "ÆÄÀÏ Àб⠽ÇÆÐ"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"»ç¿ë¹ý: %s [¿É¼Ç]... MODE[,MODE]... FILE...\n"
+" ¶Ç´Â: %s [¿É¼Ç]... 8Áø¼ö-MODE FILE...\n"
+" ¶Ç´Â: %s [¿É¼Ç]... --reference=RFILE FILE...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chmod.c:360
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+"°¢ FILEÀÇ ¸ðµå¸¦ MODE·Î º¯°æÇÕ´Ï´Ù.\n"
+"\n"
+" -c, --changes verbose¿Í °°Áö¸¸ º¯°æÇÒ¶§¸¸ ¾Ë¸³´Ï´Ù\n"
+" -f, --silent, --quiet ´ëºÎºÐÀÇ ¿¡·¯¸Þ½ÃÁö¸¦ ³»Áö ¾Ê°Ô ÇÕ´Ï´Ù\n"
+" -v, --verbose 󸮵Ǵ ¸ðµç ÆÄÀÏ¿¡ ´ëÇØ Áø´Ü ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÕ´Ï"
+"´Ù\n"
+" --reference=RFILE MODE °ª ´ë½Å RFILEÀÇ ¸ðµå°ªÀ» »ç¿ëÇÕ´Ï´Ù\n"
+" -R, --recursive ÆÄÀÏ°ú ¼­ºêµð·ºÅ丮±îÁö º¯°æÇÕ´Ï´Ù\n"
+" --help ÀÌ µµ¿ò¸»À» Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+" --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+"\n"
+"°¢ MODE´Â Çϳª ÀÌ»óÀÇ u,g,o,a¹®ÀÚ ´ÙÀ½¿¡ +,-,=ÁßÀÇ ÇϳªÀÇ ±âÈ£¿Í\n"
+"±× ´ÙÀ½ÀÇ r,w,x,X,s,t,u,g,oÁß ÇϳªÀÇ ¹®ÀÚ·Î ±¸¼ºµË´Ï´Ù.\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr ""
+
+#: src/chmod.c:510
+#, fuzzy, c-format
+msgid "invalid mode: %s"
+msgstr "ºÎÀûÀýÇÑ Æø: `%s'"
+
+#: src/chown-core.c:147
+#, fuzzy, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "%sÀÇ ¼ÒÀ¯ÁÖ¸¦ ´ÙÀ½À¸·Î º¯°æÇϴµ¥ ½ÇÆÐÇÏ¿´½À´Ï´Ù: "
+
+#: src/chown-core.c:148
+#, fuzzy, c-format
+msgid "changed group of %s to %s\n"
+msgstr "%sÀÇ ±×·ìÀ» %s·Î ¹Ù²Ù´Âµ¥ ½ÇÆÐÇß½À´Ï´Ù\n"
+
+#: src/chown-core.c:149
+#, fuzzy, c-format
+msgid "no change to ownership of %s\n"
+msgstr "%sÀÇ ¼ÒÀ¯±ÇÀ» À¯ÁöÇÕ´Ï´Ù"
+
+#: src/chown-core.c:152
+#, fuzzy, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "%sÀÇ Çã°¡¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "%sÀÇ ±×·ìÀ» %s·Î ¹Ù²Ù´Âµ¥ ½ÇÆÐÇß½À´Ï´Ù\n"
+
+#: src/chown-core.c:154
+#, fuzzy, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "%sÀÇ Çã°¡¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#: src/chown-core.c:157
+#, fuzzy, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "%sÀÇ ¼ÒÀ¯ÀÚ´Â ´ÙÀ½°ú °°ÀÌ À¯ÁöµÇ¾ú½À´Ï´Ù: "
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "%sÀÇ ±×·ìÀÌ %sÀ¸·Î º¸Á¸µÇ¾ú½À´Ï´Ù\n"
+
+#: src/chown-core.c:159
+#, fuzzy, c-format
+msgid "ownership of %s retained\n"
+msgstr "%sÀÇ ¼ÒÀ¯ÀÚ´Â ´ÙÀ½°ú °°ÀÌ À¯ÁöµÇ¾ú½À´Ï´Ù: "
+
+#: src/chown-core.c:344
+#, fuzzy, c-format
+msgid "cannot dereference %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/chown-core.c:432
+#, fuzzy, c-format
+msgid "changing ownership of %s"
+msgstr "%sÀÇ ¼ÒÀ¯±ÇÀ» À¯ÁöÇÕ´Ï´Ù"
+
+#: src/chown-core.c:433
+#, fuzzy, c-format
+msgid "changing group of %s"
+msgstr "%sÀÇ ¼ÒÀ¯ÀÚ ±×¸®°í/ȤÀº ±×·ìÀ» ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#: src/chown.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<¿É¼Ç>]... [<ÆÄÀÏ>]...\n"
+" ¶Ç´Â: %s --traditional [<ÆÄÀÏ>] [[+]<¿É¼Â> [[+]<·¹À̺í>]]\n"
+
+#: src/chown.c:98
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<ÆÄÀÏ>]...\n"
+" ȤÀº: %s [<¿É¼Ç>]\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+
+#: src/chroot.c:89
+#, fuzzy, c-format
+msgid "cannot change root directory to %s"
+msgstr "%s µð·ºÅ丮·Î chdirÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/chroot.c:92
+#, fuzzy, c-format
+msgid "cannot chdir to root directory"
+msgstr "%s µð·ºÅ丮·Î chdirÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, fuzzy, c-format
+msgid "cannot run command %s"
+msgstr "`%s'¿¡¼­ ioctlÀ» ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: ÆÄÀÏÀÌ ³Ê¹« ±é´Ï´Ù"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<ÆÄÀÏ>]...\n"
+" ȤÀº: %s [<¿É¼Ç>]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"°¢ <ÆÄÀÏ>¿¡ ´ëÇØ CRC üũ¼¶°ú ¹ÙÀÌÆ® °³¼ö¸¦ Ãâ·ÂÇÕ´Ï´Ù.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>]... <ÆÄÀÏ1> <ÆÄÀÏ2>\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr ""
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+
+#: src/comm.c:86
+#, fuzzy
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"Á¤·ÄµÈ ÆÄÀÏÀÎ <¿ÞÂÊ_ÆÄÀÏ>°ú <¿À¸¥ÂÊ_ÆÄÀÏ>À» Çà ´ÜÀ§·Î ºñ±³ÇÕ´Ï´Ù.\n"
+"\n"
+" -1 ¿ÞÂÊ ÆÄÀÏ¿¡ À¯ÀÏÇÑ ÇàÀ» Á¦°ÅÇÕ´Ï´Ù\n"
+" -2 ¿À¸¥ÂÊ ÆÄÀÏ¿¡ À¯ÀÏÇÑ ÇàÀ» Á¦°ÅÇÕ´Ï´Ù\n"
+" -3 ¾çÂÊ ÆÄÀÏ¿¡ À¯ÀÏÇÑ ÇàÀ» Á¦°ÅÇÕ´Ï´Ù\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, fuzzy, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "%sÀÇ ¼ÒÀ¯±ÇÀ» À¯ÁöÇÕ´Ï´Ù"
+
+#: src/copy.c:222
+#, fuzzy, c-format
+msgid "failed to lookup file %s"
+msgstr "%sÀÇ ½Ã°£À» À¯ÁöÇÕ´Ï´Ù"
+
+#: src/copy.c:227
+#, fuzzy, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "%sÀÇ ¼ÒÀ¯±ÇÀ» À¯ÁöÇÕ´Ï´Ù"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, fuzzy, c-format
+msgid "cannot open %s for reading"
+msgstr "`%s'¸¦ `%s'·Î À̵¿ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, fuzzy, c-format
+msgid "cannot fstat %s"
+msgstr "`%s'ÀÇ Á¤º¸(stat)¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr ""
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, fuzzy, c-format
+msgid "cannot remove %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, fuzzy, c-format
+msgid "removed %s\n"
+msgstr "%s¸¦ Áö¿ó´Ï´Ù\n"
+
+#: src/copy.c:329
+#, fuzzy, c-format
+msgid "cannot create regular file %s"
+msgstr "Àӽà ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, fuzzy, c-format
+msgid "reading %s"
+msgstr "%sÀ»(¸¦) Àд µµÁß ¿À·ù ¹ß»ý"
+
+#: src/copy.c:467 src/head.c:428
+#, fuzzy, c-format
+msgid "cannot lseek %s"
+msgstr "%s: ¿ÀÇÁ¼Â %s%s·Î(À¸·Î) °¥ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, fuzzy, c-format
+msgid "writing %s"
+msgstr "%s¿¡ ¾²´Â µµÁß ¿À·ù ¹ß»ý"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "%sÀÇ ½Ã°£À» À¯ÁöÇÕ´Ï´Ù"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, fuzzy, c-format
+msgid "closing %s"
+msgstr "%s(fd=%d)À»(¸¦) ´Ý½À´Ï´Ù "
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: `%s'¿¡ ¸ðµå %04loÀ¸·Î °ãÃľ²°Ú½À´Ï±î? "
+
+#: src/copy.c:812
+#, fuzzy, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: `%s'¸¦ °ãÃľ¹´Ï±î? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (¹é¾÷: %s)"
+
+#: src/copy.c:1048
+#, fuzzy, c-format
+msgid "omitting directory %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr ""
+
+#: src/copy.c:1093 src/ln.c:209
+#, fuzzy, c-format
+msgid "%s and %s are the same file"
+msgstr "`%s'¿Í `%s'´Â °°Àº ÆÄÀÏÀÔ´Ï´Ù"
+
+#: src/copy.c:1149
+#, fuzzy, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "%s µð·ºÅ丮·Î chdirÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:1167
+#, fuzzy, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "%s: µð·ºÅ丮°¡ ¾Æ´Ñ °÷¿¡ µð·ºÅ丮¸¦ °ãÃľµ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:1185
+#, fuzzy, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:1223
+#, fuzzy, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "%s µð·ºÅ丮·Î chdirÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:1253
+#, fuzzy, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "`%s'ÀÇ ¹é¾÷Àº ¿ø·¡ ÆÄÀÏÀ» ¼Õ»óÇÒ °ÍÀÔ´Ï´Ù; `%s'´Â À̵¿µÇÁö ¾Ê½À´Ï´Ù"
+
+#: src/copy.c:1254
+#, fuzzy, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "`%s'ÀÇ ¹é¾÷Àº ¿ø·¡ ÆÄÀÏÀ» ¼Õ»óÇÒ °ÍÀÔ´Ï´Ù; `%s'´Â º¹»çµÇÁö ¾Ê½À´Ï´Ù"
+
+#: src/copy.c:1273 src/ln.c:239
+#, fuzzy, c-format
+msgid "cannot backup %s"
+msgstr "`%s'¸¦ ¹é¾÷ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:1372
+#, fuzzy, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:1389
+#, fuzzy, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "%s µð·ºÅ丮·Î chdirÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:1414
+#, fuzzy, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:1459
+#, fuzzy, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "%s µð·ºÅ丮·Î chdirÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:1502
+#, fuzzy, c-format
+msgid "cannot move %s to %s"
+msgstr "`%s'¿¡¼­ ioctlÀ» ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+
+#: src/copy.c:1553
+#, fuzzy, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "%s: ½Éº¼¸¯ ¸µÅ©ÀÇ »çÀÌŬÀº º¹»çÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr "%s: ÇöÀç µð·ºÅ丮 ¾È¿¡¼­¸¸ »ó´ëÀûÀÎ ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù"
+
+#: src/copy.c:1661
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:1686
+#, fuzzy, c-format
+msgid "cannot create link %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, fuzzy, c-format
+msgid "cannot create fifo %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:1722
+#, fuzzy, c-format
+msgid "cannot create special file %s"
+msgstr "¹®ÀÚ Æ¯¼ö ÆÄÀÏ"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, fuzzy, c-format
+msgid "cannot read symbolic link %s"
+msgstr "½Éº¼¸¯ ¸µÅ©"
+
+#: src/copy.c:1759
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:1790
+#, fuzzy, c-format
+msgid "%s has unknown file type"
+msgstr "%s: ¾Ë ¼ö ¾ø´Â ÆÄÀÏÇü"
+
+#: src/copy.c:1910 src/ln.c:308
+#, fuzzy, c-format
+msgid "cannot un-backup %s"
+msgstr "`%s'ÀÇ ¹é¾÷À» µÇµ¹¸± ¼ö ¾ø½À´Ï´Ù"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (¹é¾÷ ÇØÁ¦)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"»ç¿ë¹ý: %s [OPTION]... SOURCE DEST\n"
+" ¶Ç´Â: %s [OPTION]... SOURCE... DIRECTORY\n"
+" ¶Ç´Â: %s -d [OPTION]... --target-directory=DIRECTORY SOURCE...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr "±ä ¿É¼Ç¿¡¼­ ²À ÇÊ¿äÇÑ Àμö´Â ªÀº ¿É¼Ç¿¡µµ ²À ÇÊ¿äÇÕ´Ï´Ù.\n"
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+"SOURCE¸¦ DEST·Î º¹»çÇϰųª ¿©·¯°³ÀÇ SOURCE¸¦ DIRECTORY·Î º¹»çÇÕ´Ï´Ù.\n"
+"\n"
+" -a, --archive -dpR¿É¼Ç°ú °°½À´Ï´Ù\n"
+" --backup[=CONTROL] Áö¿ì±â Àü¿¡ ¹é¾÷º»À» ¸¸µì´Ï´Ù.\n"
+" -b --backup°ú ºñ½ÁÇѵ¥ Àμö¸¦ ¹ÞÁö ¾Ê´Â´Ù\n"
+" -d, --no-dereference ¸µÅ©¸¦ À¯ÁöÇÕ´Ï´Ù\n"
+" -f, --force ÀÌ¹Ì Á¸ÀçÇÏ´Â DEST¸¦ Áú¹® ¾øÀÌ »èÁ¦ÇÕ´Ï´Ù.\n"
+" -i, --interactive µ¤¾î ¾²±â Àü¿¡ ¿©ºÎ¸¦ ¹¯½À´Ï´Ù\n"
+" -l, --link ÆÄÀÏÀ» º¹»çÇÏÁö ¾Ê°í ¸µÅ©ÇÕ´Ï´Ù.\n"
+" -p, --preserve °¡´ÉÇÏ´Ù¸é ÆÄÀÏ ¼Ó¼ºÀ» À¯ÁöÇÕ´Ï´Ù.\n"
+" -P, --parents ¿øº»ÀÇ °æ·Î¸¦ DIRECTORY¿¡ Ãß°¡ÇÕ´Ï´Ù\n"
+" -r ÇÏÀ§ µð·ºÅ丮±îÁö º¹»çÇÕ´Ï´Ù. µð·ºÅ丮°¡\n"
+" ¾Æ´Ñ °ÍÀº ÆÄÀÏ·Î ¿©±é´Ï´Ù\n"
+" *°æ°í*: FIFO³ª /dev/zero°°Àº Ưº° ÆÄÀÏÀ»\n"
+" º¹»çÇÒ °æ¿ì¿¡´Â -RÀ» »ç¿ëÇϼ¼¿ä\n"
+" --sparse=WHEN ¼º±ä ÆÄÀÏ(sparse file)ÀÇ »ý¼ºÀ» Á¶ÀýÇÕ´Ï´Ù\n"
+" -R, --recursive Àç±ÍÀûÀ¸·Î º¹»çÇÕ´Ï´Ù\n"
+" --strip-trailing-slashes °¢ SOURCE Àμö¿¡¼­ ³¡ÀÇ ½½·¡½Ã(/)¹®ÀÚ¸¦\n"
+" Áö¿ó´Ï´Ù\n"
+" -s, --symbolic-link º¹»çÇÏ´Â ´ë½Å ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µì´Ï´Ù\n"
+" -S, --suffix=SUFFIX ÀϹÝÀûÀÎ ¹é¾÷ Á¢¹Ì»ç¸¦ °ãÃľ¹´Ï´Ù\n"
+" --target-directory=DIRECTORY ¸ðµç SOURCE ÀÇ Àμö¸¦ DIRECTORY·Î ¿Å±é´Ï"
+"´Ù\n"
+" -u, --update SOURCEÆÄÀÏÀÌ º¹»çµÉ ÆÄÀϺ¸´Ù »õ°ÍÀ̰ųª\n"
+" º¹»çµÉ ÆÄÀÏÀÌ ¾øÀ» ¶§¸¸ º¹»çÇÕ´Ï´Ù\n"
+" -v, --verbose ÀÛ¾÷À» Ãâ·ÂÇÕ´Ï´Ù\n"
+" -x, --one-file-system ÀÌ ÆÄÀϽýºÅÛ¿¡¼­¸¸ º¹»çÇÕ´Ï´Ù\n"
+" --help ÀÌ µµ¿ò¸»À» º¸¿©ÁÖ°í Á¾·áÇÕ´Ï´Ù\n"
+" --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+"\n"
+"±âº»ÀûÀ¸·Î ¼º±ä SOURCE ÆÄÀÏÀº ±×¸® ÁÁÁö ¾ÊÀº ¹æ¹ýÀ¸·Î ŽÁöÇØ ³»¾î\n"
+"´ëÀÀÇÏ´Â DESTÆÄÀϵµ ¶ÇÇÑ ¼º±â°Ô ¸¸µì´Ï´Ù. ÀÌ°ÍÀº --sparse=auto\n"
+"¿¡ ÀÇÇØ ¼±ÅõǴ ÇൿÀ̸ç, --sparse=always¶ó°í ÁöÁ¤Çϸé SOURCEÆÄÀÏ¿¡\n"
+"ÃæºÐÇÑ Å©±âÀÇ 0À¸·Î °è¼ÓµÇ´Â ÁöÁ¡ÀÌ ÀÖÀ» ¶§´Â ¾ðÁ¦³ª ¼º±ä DESTÆÄÀÏÀ»\n"
+"¸¸µì´Ï´Ù.\n"
+"--sparse=never¶ó°í ÁöÁ¤ÇÏ¸é ¼º±ä ÆÄÀÏÀ» »ý¼ºÇÏÁö ¸øÇÏ°Ô ÇÕ´Ï´Ù.\n"
+"\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+
+#: src/cp.c:216
+#, fuzzy
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+"SOURCE¸¦ DEST·Î À̸§À» ¹Ù²Ù°Å³ª SOURCE¸¦ DIRECTORY·Î ¿Å±é´Ï´Ù.\n"
+"\n"
+" --backup[=CONTROL] Áö¿ì±â Àü¿¡ ¹é¾÷º»À» ¸¸µì´Ï´Ù\n"
+" -b --backup°ú ºñ½ÁÇѵ¥ Àμö¸¦ ¹ÞÁö ¾Ê´Â´Ù\n"
+" -f, --force ÀÌ¹Ì Á¸ÀçÇÏ´Â DEST¸¦ Áú¹® ¾øÀÌ »èÁ¦ÇÕ´Ï´Ù.\n"
+" -i, --interactive ¿Å±â±â Àü¿¡ ¿©ºÎ¸¦ ¹¯½À´Ï´Ù\n"
+" --strip-trailing-slashes °¢ SOURCE Àμö¿¡¼­ µÚ¿¡ ³¡³ª´Â ½½·¡½Ã ±âÈ£¸¦\n"
+" »èÁ¦\n"
+" -S, --suffix=SUFFIX ÀϹÝÀûÀÎ ¹é¾÷ Á¢¹Ì»ç¸¦ °ãÃľ¹´Ï´Ù\n"
+" --target-directory=DIRECTORY SOURCEÀÇ ¸ðµç Àμö¸¦ DIRECTORY·Î ¿Å±é´Ï"
+"´Ù\n"
+" -u, --update ¿À·¡µÈ ÆÄÀÏ°ú »õ ÆÄÀϸ¸ ¿Å±é´Ï´Ù\n"
+" -v, --verbose ÀÛ¾÷À» Ãâ·ÂÇÕ´Ï´Ù\n"
+" -V, --version-control=WORD ÀϹÝÀûÀÎ ¹öÀü ÄÜÆ®·ÑÀ» °ãÃľ¹´Ï´Ù\n"
+" --help ÀÌ µµ¿ò¸»À» º¸¿©ÁÖ°í Á¾·áÇÕ´Ï´Ù\n"
+" --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+"\n"
+
+#: src/cp.c:225
+#, fuzzy
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"SOURCE¸¦ DEST·Î º¹»çÇϰųª ¿©·¯°³ÀÇ SOURCE¸¦ DIRECTORY·Î º¹»çÇÕ´Ï´Ù.\n"
+"\n"
+" -a, --archive -dpR¿É¼Ç°ú °°½À´Ï´Ù\n"
+" --backup[=CONTROL] Áö¿ì±â Àü¿¡ ¹é¾÷º»À» ¸¸µì´Ï´Ù.\n"
+" -b --backup°ú ºñ½ÁÇѵ¥ Àμö¸¦ ¹ÞÁö ¾Ê´Â´Ù\n"
+" -d, --no-dereference ¸µÅ©¸¦ À¯ÁöÇÕ´Ï´Ù\n"
+" -f, --force ÀÌ¹Ì Á¸ÀçÇÏ´Â DEST¸¦ Áú¹® ¾øÀÌ »èÁ¦ÇÕ´Ï´Ù.\n"
+" -i, --interactive µ¤¾î ¾²±â Àü¿¡ ¿©ºÎ¸¦ ¹¯½À´Ï´Ù\n"
+" -l, --link ÆÄÀÏÀ» º¹»çÇÏÁö ¾Ê°í ¸µÅ©ÇÕ´Ï´Ù.\n"
+" -p, --preserve °¡´ÉÇÏ´Ù¸é ÆÄÀÏ ¼Ó¼ºÀ» À¯ÁöÇÕ´Ï´Ù.\n"
+" -P, --parents ¿øº»ÀÇ °æ·Î¸¦ DIRECTORY¿¡ Ãß°¡ÇÕ´Ï´Ù\n"
+" -r ÇÏÀ§ µð·ºÅ丮±îÁö º¹»çÇÕ´Ï´Ù. µð·ºÅ丮°¡\n"
+" ¾Æ´Ñ °ÍÀº ÆÄÀÏ·Î ¿©±é´Ï´Ù\n"
+" *°æ°í*: FIFO³ª /dev/zero°°Àº Ưº° ÆÄÀÏÀ»\n"
+" º¹»çÇÒ °æ¿ì¿¡´Â -RÀ» »ç¿ëÇϼ¼¿ä\n"
+" --sparse=WHEN ¼º±ä ÆÄÀÏ(sparse file)ÀÇ »ý¼ºÀ» Á¶ÀýÇÕ´Ï´Ù\n"
+" -R, --recursive Àç±ÍÀûÀ¸·Î º¹»çÇÕ´Ï´Ù\n"
+" --strip-trailing-slashes °¢ SOURCE Àμö¿¡¼­ ³¡ÀÇ ½½·¡½Ã(/)¹®ÀÚ¸¦\n"
+" Áö¿ó´Ï´Ù\n"
+" -s, --symbolic-link º¹»çÇÏ´Â ´ë½Å ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µì´Ï´Ù\n"
+" -S, --suffix=SUFFIX ÀϹÝÀûÀÎ ¹é¾÷ Á¢¹Ì»ç¸¦ °ãÃľ¹´Ï´Ù\n"
+" --target-directory=DIRECTORY ¸ðµç SOURCE ÀÇ Àμö¸¦ DIRECTORY·Î ¿Å±é´Ï"
+"´Ù\n"
+" -u, --update SOURCEÆÄÀÏÀÌ º¹»çµÉ ÆÄÀϺ¸´Ù »õ°ÍÀ̰ųª\n"
+" º¹»çµÉ ÆÄÀÏÀÌ ¾øÀ» ¶§¸¸ º¹»çÇÕ´Ï´Ù\n"
+" -v, --verbose ÀÛ¾÷À» Ãâ·ÂÇÕ´Ï´Ù\n"
+" -x, --one-file-system ÀÌ ÆÄÀϽýºÅÛ¿¡¼­¸¸ º¹»çÇÕ´Ï´Ù\n"
+" --help ÀÌ µµ¿ò¸»À» º¸¿©ÁÖ°í Á¾·áÇÕ´Ï´Ù\n"
+" --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+"\n"
+"±âº»ÀûÀ¸·Î ¼º±ä SOURCE ÆÄÀÏÀº ±×¸® ÁÁÁö ¾ÊÀº ¹æ¹ýÀ¸·Î ŽÁöÇØ ³»¾î\n"
+"´ëÀÀÇÏ´Â DESTÆÄÀϵµ ¶ÇÇÑ ¼º±â°Ô ¸¸µì´Ï´Ù. ÀÌ°ÍÀº --sparse=auto\n"
+"¿¡ ÀÇÇØ ¼±ÅõǴ ÇൿÀ̸ç, --sparse=always¶ó°í ÁöÁ¤Çϸé SOURCEÆÄÀÏ¿¡\n"
+"ÃæºÐÇÑ Å©±âÀÇ 0À¸·Î °è¼ÓµÇ´Â ÁöÁ¡ÀÌ ÀÖÀ» ¶§´Â ¾ðÁ¦³ª ¼º±ä DESTÆÄÀÏÀ»\n"
+"¸¸µì´Ï´Ù.\n"
+"--sparse=never¶ó°í ÁöÁ¤ÇÏ¸é ¼º±ä ÆÄÀÏÀ» »ý¼ºÇÏÁö ¸øÇÏ°Ô ÇÕ´Ï´Ù.\n"
+"\n"
+
+#: src/cp.c:234
+#, fuzzy
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"--suffix³ª SIMPLE_BACKUP_SUFFIXȯ°æº¯¼ö¿¡ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ¹é¾÷ Á¢¹Ì»ç´Â\n"
+"~ÀÔ´Ï´Ù.\n"
+"¹öÀü Á¦¾î´Â --backup¿É¼ÇÀ̳ª VERSION_CONTROLȯ°æº¯¼ö·Î ÁöÁ¤Çϸç, \n"
+"´ÙÀ½°ú °°½À´Ï´Ù:\n"
+"\n"
+" none, off ¹é¾÷À» ÇÏÁö ¾Ê½À´Ï´Ù(--backupÀ» Á־)\n"
+" numbered, t ¹øÈ£°¡ ÁÖ¾îÁø ¹é¾÷À» ¸¸µì´Ï´Ù\n"
+" existing, nil ¹øÈ£°¡ ÁÖ¾îÁø ¹é¾÷ÀÌ ÀÖÀ¸¸é ¹øÈ£¸¦ ÁÖ°í, ±×·¸Áö ¾ÊÀ¸¸é\n"
+" ´Ü¼øÇÏ°Ô ÇÕ´Ï´Ù\n"
+" simple, never Ç×»ó ´Ü¼ø ¹é¾÷À» ÇÕ´Ï´Ù\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+#, fuzzy
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+"--suffix³ª SIMPLE_BACKUP_SUFFIXȯ°æº¯¼ö¿¡ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ¹é¾÷ Á¢¹Ì»ç´Â\n"
+"~ÀÔ´Ï´Ù.\n"
+"¹öÀü Á¦¾î´Â --backup¿É¼ÇÀ̳ª VERSION_CONTROLȯ°æº¯¼ö·Î ÁöÁ¤Çϸç, \n"
+"´ÙÀ½°ú °°½À´Ï´Ù:\n"
+"\n"
+" none, off ¹é¾÷À» ÇÏÁö ¾Ê½À´Ï´Ù(--backupÀ» Á־)\n"
+" numbered, t ¹øÈ£°¡ ÁÖ¾îÁø ¹é¾÷À» ¸¸µì´Ï´Ù\n"
+" existing, nil ¹øÈ£°¡ ÁÖ¾îÁø ¹é¾÷ÀÌ ÀÖÀ¸¸é ¹øÈ£¸¦ ÁÖ°í, ±×·¸Áö ¾ÊÀ¸¸é\n"
+" ´Ü¼øÇÏ°Ô ÇÕ´Ï´Ù\n"
+" simple, never Ç×»ó ´Ü¼ø ¹é¾÷À» ÇÕ´Ï´Ù\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Ưº°ÇÑ °æ¿ì·Î, °­Á¦¿Í ¹é¾÷ ¿É¼ÇÀÌ ÁÖ¾îÁö¸ç SOURCE¿Í DEST°¡ À̸§ÀÌ °°°í,\n"
+"Á¸ÀçÇÏ´Â ÀÏ¹Ý ÆÄÀÏÀÏ ¶§ cp´Â SOURCEÀÇ ¹é¾÷À» ¸¸µì´Ï´Ù.\n"
+
+#: src/cp.c:314
+#, fuzzy, c-format
+msgid "failed to preserve times for %s"
+msgstr "%sÀÇ ½Ã°£À» À¯ÁöÇÕ´Ï´Ù"
+
+#: src/cp.c:340
+#, fuzzy, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "%sÀÇ Çã°¡¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#: src/cp.c:456
+#, fuzzy, c-format
+msgid "cannot make directory %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%sÀÌ(°¡) Á¸ÀçÇÏÁö¸¸ µð·ºÅ丮°¡ ¾Æ´Õ´Ï´Ù"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, fuzzy, c-format
+msgid "accessing %s"
+msgstr "%s¸¦ Áö¿ó´Ï´Ù\n"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, fuzzy, c-format
+msgid "missing file operand"
+msgstr "Àμö¸¦ °Ç³Ê ¶Ü"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, fuzzy, c-format
+msgid "missing destination file operand after %s"
+msgstr "ÇʵåÀÇ ¸ñ·ÏÀÌ ºüÁ³À½"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, fuzzy, c-format
+msgid "target %s is not a directory"
+msgstr "%sÀÌ(°¡) Á¸ÀçÇÏÁö¸¸ µð·ºÅ丮°¡ ¾Æ´Õ´Ï´Ù"
+
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "Æнº¸¦ À¯ÁöÇÒ ¶§ ¸¶Áö¸· Àμö´Â µð·ºÅ丮¿©¾ß ÇÕ´Ï´Ù"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr ""
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, c-format
+msgid "multiple target directories specified"
+msgstr ""
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "Çϵ帵ũ¿Í ½Éº¼¸¯ ¸µÅ©¸¦ µ¿½Ã¿¡ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "¹é¾÷ Á¾·ù"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "ÀÔ·ÂÀÌ »ç¶óÁü"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: ¹üÀ§¸¦ ¹þ¾î³­ Çà ¹øÈ£"
+
+#: src/csplit.c:709
+#, fuzzy, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: `%s': ¹üÀ§¸¦ ¹þ¾î³­ Çà ¹øÈ£"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, fuzzy, c-format
+msgid " on repetition %s\n"
+msgstr " %d ¹ø° ¹Ýº¹Áß\n"
+
+#: src/csplit.c:755
+#, fuzzy, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: `%s': ¸Â´Â ¦À» ãÁö ¸øÇßÀ½"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "Á¤±Ô½Ä Ž»ö¿¡ ¿À·ù ¹ß»ý"
+
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "`%s'¿¡ ¾²±â ¿À·ù"
+
+#: src/csplit.c:1060
+#, fuzzy, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: `%c' µÚ¿¡ Á¤¼ö°¡ ¿Í¾ßÇÔ"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: ¹Ýº¹ Ƚ¼ö¿¡ `}'°¡ ÇÊ¿äÇÕ´Ï´Ù"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: `{'°ú `}' »çÀÌ¿¡ Á¤¼ö°¡ ÇÊ¿äÇÔ"
+
+#: src/csplit.c:1113
+#, fuzzy, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: ´Ý´Â ±¸ºÐÀÚ `%c'ÀÌ(°¡) ¾ø½À´Ï´Ù"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: ºÎÀûÀýÇÑ Á¤±Ô½Ä: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: ºÎÀûÀýÇÑ ÆÐÅÏ"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: Çà¹øÈ£´Â ¿µº¸´Ù Ä¿¾ß ÇÕ´Ï´Ù"
+
+#: src/csplit.c:1172
+#, fuzzy, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "Çà¹øÈ£ `%s'ÀÌ(°¡) ¾Õ¼± Çà¹øÈ£ %sº¸´Ù ÀÛ½À´Ï´Ù"
+
+#: src/csplit.c:1178
+#, fuzzy, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "°æ°í: Çà¹øÈ£ `%s'ÀÌ(°¡) ¾Õ¼± Çà¹øÈ£¿Í °°½À´Ï´Ù"
+
+#: src/csplit.c:1231
+#, fuzzy, c-format
+msgid "invalid format width"
+msgstr "%2$s¿¡ ´ëÇØ ºÎÀûÀýÇÑ ÀÎÀÚ %1$s"
+
+#: src/csplit.c:1252
+#, fuzzy, c-format
+msgid "invalid format precision"
+msgstr "ºÎÀûÀýÇÑ Å¸ÀÔÀÇ ¹®ÀÚ¿­ `%s'"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "Á¢¹Ì»ç¿¡ º¯È¯ ÁöÁ¤ÀÚ°¡ ºüÁ³À½"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "Á¢¹Ì»ç¿¡ ºÎÀûÀýÇÑ º¯È¯ ÁöÁ¤ÀÚ: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "Á¢¹Ì»ç¿¡ ºÎÀûÀýÇÑ º¯È¯ ÁöÁ¤ÀÚ: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "Á¢¹Ì»ç¿¡ %% º¯È¯ ÁöÁ¤ÀÚ°¡ ³Ê¹« ¸¹À½"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "Á¢¹Ì»ç¿¡ %% º¯È¯ ÁöÁ¤ÀÚ°¡ ºüÁ³À½"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: ºÎÀûÀýÇÑ ¼ýÀÚ"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>]... <ÆÄÀÏ> <ÆÐÅÏ>...\n"
+
+#: src/csplit.c:1478
+#, fuzzy
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"<ÆÄÀÏ>À», <ÆÐÅÏ>À» ±âÁØÀ¸·Î ³ª´« ´ÙÀ½, ±× Á¶°¢µéÀ» `xx01', `xx02', ... ÆÄÀϵé"
+"¿¡\n"
+"Ãâ·ÂÇÏ°í, °¢ Á¶°¢µéÀÇ ¹ÙÀÌÆ® ¼ö¸¦ Ç¥ÁØ Ãâ·ÂÀ¸·Î Ãâ·ÂÇÕ´Ï´Ù.\n"
+
+#: src/csplit.c:1486
+#, fuzzy, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=<Æ÷¸Ë> %d ´ë½Å¿¡ sprintf <Æ÷¸Ë>À» ¾¹´Ï´Ù\n"
+" -f, --prefix=<Á¢µÎ¾î> `xx' ´ë½Å¿¡ <Á¢µÎ¾î>¸¦ ¾¹´Ï´Ù\n"
+" -k, --keep-files ¿À·ù ¹ß»ý½Ã¿¡µµ Ãâ·Â ÆÄÀϵéÀ» Áö¿ìÁö ¾Ê½À´Ï´Ù\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=¼ýÀÚµé 2 ´ë½Å¿¡ ÁöÁ¤ÇÑ ¼ýÀÚµéÀÇ °³¼ö¸¦ ÀÌ¿ëÇÕ´Ï´Ù\n"
+" -s, --quiet, --silent Ãâ·Â ÆÄÀÏÀÇ Å©±â¸¦ Ç¥½ÃÇÏÁö ¾Ê½À´Ï´Ù\n"
+" -z, --elide-empty-files ºó Ãâ·Â ÆÄÀÏÀ» Áö¿ó´Ï´Ù\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"<ÆÄÀÏ>ÀÌ `-'À̸é Ç¥ÁØ ÀÔ·ÂÀ» ÀнÀ´Ï´Ù. °¢ <ÆÐÅÏ>¿¡´Â ´ÙÀ½À» ¾µ ¼ö ÀÖ½À´Ï"
+"´Ù:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" <Á¤¼ö> ÁöÁ¤ÇÑ ÁÙ¹øÈ£ ¾Õ±îÁö º¹»çÇÕ´Ï´Ù\n"
+" /<Á¤±Ô½Ä>/[<¿ÀÇÁ¼Â>] Á¤±Ô½Ä¿¡ ¸Â´Â ÁÙ ¾Õ±îÁö º¹»çÇÕ´Ï´Ù\n"
+" %<Á¤±Ô½Ä>%[<¿ÀÇÁ¼Â>] Á¤±Ô½Ä¿¡ ¸Â´Â ÁÙ ¾Õ±îÁö °Ç³Ê ¶Ý´Ï´Ù\n"
+" {<Á¤¼ö>} ¹Ù·Î ¾ÕÀÇ ÆÐÅÏÀ» ÁöÁ¤ÇÑ È½¼ö¸¸Å­ ¹Ýº¹ÇÕ´Ï´Ù\n"
+" {*} ¹Ù·Î ¾ÕÀÇ ÆÐÅÏÀ» °¡´ÉÇÑÇÑ ¸¹ÀÌ ¹Ýº¹ÇÕ´Ï´Ù\n"
+"\n"
+"ÁÙ <¿ÀÇÁ¼Â>Àº `+' ȤÀº `-' ´ÙÀ½¿¡ 0º¸´Ù Å« Á¤¼öÀ̾î¾ß ÇÕ´Ï´Ù\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>]... [<ÆÄÀÏ>]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"°¢ <ÆÄÀÏ>¿¡¼­ ¼±ÅÃÇÑ Áٵ鸸 Ç¥ÁØ Ãâ·Â¿¡ Ç¥½ÃÇÕ´Ï´Ù.\n"
+"\n"
+
+#: src/cut.c:199
+#, fuzzy
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=<¸®½ºÆ®> ÀÌ ¹ÙÀÌÆ®µé¸¸À» Ç¥½ÃÇÕ´Ï´Ù\n"
+" -c, --characters=<¸®½ºÆ®> ÀÌ ¹®Àڵ鸸À» Ç¥½ÃÇÕ´Ï´Ù\n"
+" -d, --delimiter=<±¸ºÐÀÚ> ÇÊµå ±¸ºÐÀÚ·Î ÅÇ ´ë½Å¿¡ <±¸ºÐÀÚ>¸¦ ¾¹´Ï´Ù\n"
+
+#: src/cut.c:204
+#, fuzzy
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=<¸®½ºÆ®> ÀÌ Çʵ常À» Ãâ·ÂÇÕ´Ï´Ù; ¶Ç -s ¿É¼ÇÀÌ »ç¿ëµÇÁö\n"
+" ¾Ê¾Ò´Ù¸é ±¸ºÐÀÚ ¹®ÀÚ°¡ µé¾î ÀÖÁö ¾ÊÀº ÁÙµµ\n"
+" Ãâ·ÂÇÕ´Ï´Ù\n"
+" -n (¹«½ÃµÊ)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited ±¸ºÐÀÚ°¡ µé¾î ÀÖÁö ¾ÊÀº ÁÙÀº Ç¥½ÃÇÏÁö ¾Ê½À´Ï´Ù\n"
+" --output-delimiter=<¹®ÀÚ¿­> <¹®ÀÚ¿­>À» Ãâ·Â ±¸ºÐÀÚ·Î »ç¿ëÇÕ´Ï´Ù\n"
+" ±âº»°ªÀº ÀÔ·Â ±¸ºÐÀÚ·Î »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+#, fuzzy
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"-b, -c ȤÀº -f Áß¿¡¼­ ÇÑ °³¸¸À» ¾²½Ê½Ã¿À. °¢ <¸®½ºÆ®>´Â ÇϳªÀÇ ¹üÀ§, \n"
+"ȤÀº ½°Ç¥·Î ±¸ºÐµÈ ¿©·¯ °³ÀÇ ¹üÀ§ÀÔ´Ï´Ù. °¢ ¹üÀ§´Â ´ÙÀ½ Áß ÇϳªÀÔ´Ï´Ù:\n"
+"\n"
+" N N¹ø° ¹ÙÀÌÆ®, ¹®ÀÚ, ȤÀº Çʵå, 1ºÎÅÍ ½ÃÀÛÇÕ´Ï´Ù\n"
+" N- N¹ø° ¹ÙÀÌÆ®, ¹®ÀÚ, ȤÀº ÇʵåºÎÅÍ ÁÙ ³¡±îÁö\n"
+" N-M N¹ø°ºÎÅÍ M¹ø° ¹ÙÀÌÆ®, ¹®ÀÚ, ȤÀº Çʵå±îÁö (N, M¹ø° Æ÷ÇÔ)\n"
+" -M óÀ½ºÎÅÍ M¹ø° ¹ÙÀÌÆ®, ¹®ÀÚ, ȤÀº Çʵå±îÁö (M¹ø° Æ÷ÇÔ)\n"
+"\n"
+"<ÆÄÀÏ>ÀÌ ÁÖ¾îÁöÁö ¾Ê°Å³ª, <ÆÄÀÏ>ÀÌ `-'À̸é, Ç¥ÁØ ÀÔ·ÂÀ» ÀнÀ´Ï´Ù.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "ºÎÀûÀýÇÑ ¹ÙÀÌÆ®³ª ÇÊµå ¸ñ·Ï"
+
+#: src/cut.c:469
+#, fuzzy, c-format
+msgid "byte offset %s is too large"
+msgstr "%sÀº(´Â) ³Ê¹« Å®´Ï´Ù"
+
+#: src/cut.c:472
+#, fuzzy, c-format
+msgid "field number %s is too large"
+msgstr "ÇÊµå °³¼ö°¡ 0ÀÔ´Ï´Ù"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "¿ÀÁ÷ ÇÑ°¡Áö ÇüÅÂÀÇ ¸ñ·Ï¸¸ÀÌ ÁöÁ¤µÉ ¼ö ÀÖ½À´Ï´Ù"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "±¸È¹ ¹®ÀÚ´Â ´ÜÀÏ ¹®ÀÚ¿©¾ß ÇÕ´Ï´Ù"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "¹ÙÀÌÆ®, ¹®ÀÚ, ¶Ç´Â Çʵå·Î µÈ ¸ñ·ÏÀ» ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù"
+
+#: src/cut.c:831
+#, fuzzy
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "Çʵ忡 ´ëÇØ ¿¬»êÇÒ ¶§¿¡¸¸ ±¸È¹ ¹®ÀÚ°¡ ÁöÁ¤µÉ ¼ö ÀÖ½À´Ï´Ù"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"±¸ºÐÀÚ°¡ ¾ø´Â ÁÙÀ» ¹«½ÃÇÏ´Â °ÍÀº\n"
+"\tÇʵ忡 °üÇØ µ¿ÀÛÇÏ´Â °æ¿ì¿¡¸¸ ÀÌÄ¡¿¡ ¸Â½À´Ï´Ù"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "ÇʵåÀÇ ¸ñ·ÏÀÌ ºüÁ³À½"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "À§Ä¡ÀÇ ¸ñ·ÏÀÌ ºüÁ³À½"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "Ç¥ÁØ ÀÔ·Â"
+
+#: src/date.c:297 src/date.c:517
+#, fuzzy, c-format
+msgid "invalid date %s"
+msgstr "ºÎÀûÀýÇÑ Æø: `%s'"
+
+#: src/date.c:408 src/date.c:442
+#, c-format
+msgid "multiple output formats specified"
+msgstr ""
+
+#: src/date.c:420
+#, fuzzy, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "--string°ú --check ¿É¼ÇÀº »óÈ£ ¹èŸÀûÀÔ´Ï´Ù"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr ""
+
+#: src/date.c:448
+#, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+
+#: src/date.c:525
+#, fuzzy, c-format
+msgid "cannot set date"
+msgstr "`%s'ÀÇ Á¤º¸(stat)¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù"
+
+#: src/date.c:548 src/du.c:425
+#, fuzzy, c-format
+msgid "time %s is out of range"
+msgstr "%s: ¹üÀ§¸¦ ¹þ¾î³­ Çà ¹øÈ£"
+
+#: src/dd.c:404
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<ÆÄÀÏ>]...\n"
+" ȤÀº: %s [<¿É¼Ç>]\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "%sÀÌ(°¡) Á¸ÀçÇÏÁö¸¸ µð·ºÅ丮°¡ ¾Æ´Õ´Ï´Ù"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "À߸° ·¹ÄÚµå"
+msgstr[1] "À߸° ·¹ÄÚµå"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr ""
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ""
+
+#: src/dd.c:604
+#, fuzzy, c-format
+msgid "closing input file %s"
+msgstr "ÆÄÀÏ `%s'À»(¸¦) ¸¸µê\n"
+
+#: src/dd.c:611
+#, fuzzy, c-format
+msgid "closing output file %s"
+msgstr "%s¸¦ Áö¿ó´Ï´Ù\n"
+
+#: src/dd.c:791 src/dd.c:1455
+#, fuzzy, c-format
+msgid "writing to %s"
+msgstr "%s¿¡ ¾²´Â µµÁß ¿À·ù ¹ß»ý"
+
+#: src/dd.c:886
+#, fuzzy, c-format
+msgid "unrecognized operand %s"
+msgstr "ÀνÄÇÒ ¼ö ¾ø´Â ¿É¼Ç `-%c'"
+
+#: src/dd.c:897
+#, fuzzy, c-format
+msgid "invalid conversion: %s"
+msgstr "ºÎÀûÀýÇÑ Æø ¿É¼Ç `%s'"
+
+#: src/dd.c:900
+#, fuzzy, c-format
+msgid "invalid input flag: %s"
+msgstr "ºÎÀûÀýÇÑ Æø: `%s'"
+
+#: src/dd.c:903
+#, fuzzy, c-format
+msgid "invalid output flag: %s"
+msgstr "À߸øµÈ ±×·ì"
+
+#: src/dd.c:906
+#, fuzzy, c-format
+msgid "invalid status flag: %s"
+msgstr "%2$s¿¡ ´ëÇØ ºÎÀûÀýÇÑ ÀÎÀÚ %1$s"
+
+#: src/dd.c:942
+#, fuzzy, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "ÀνÄÇÒ ¼ö ¾ø´Â ¿É¼Ç `-%c'"
+
+#: src/dd.c:948
+#, fuzzy, c-format
+msgid "invalid number %s"
+msgstr "ºÎÀûÀýÇÑ ¼ýÀÚ"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#: src/dd.c:973
+#, fuzzy, c-format
+msgid "cannot combine block and unblock"
+msgstr "»ç¿ëÀÚ¿Í ±×·ìÀ» ¸ðµÎ »ý·«ÇÒ ¼ö´Â ¾ø½À´Ï´Ù"
+
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "ºñ±³ÇÑ ¹®ÀÚ¿­Àº %s°ú(¿Í) %sÀÔ´Ï´Ù."
+
+#: src/dd.c:977
+#, fuzzy, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "%s¿¡ ´ëÇÑ ÆÄÀÏ Æ÷ÀÎÅ͸¦ ÀçÀ§Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+
+#: src/dd.c:1180 src/dd.c:1237
+#, fuzzy, c-format
+msgid "%s: cannot seek"
+msgstr "%s: Áö¿ï ¼ö ¾ø½À´Ï´Ù"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "°æ°í: ºÎÀûÀýÇÑ Æø %lu; ´ë½Å %dÀ»(¸¦) »ç¿ëÇÔ"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr ""
+
+#: src/dd.c:1376
+#, fuzzy, c-format
+msgid "setting flags for %s"
+msgstr "%sÀÇ ½Ã°£À» À¯ÁöÇÕ´Ï´Ù"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr ""
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr ""
+
+#: src/dd.c:1670 src/dd.c:1699
+#, fuzzy, c-format
+msgid "opening %s"
+msgstr "%sÀ»(¸¦) Àд µµÁß ¿À·ù ¹ß»ý"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, fuzzy, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "%s¸¦ Áö¿ó´Ï´Ù\n"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr ""
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr ""
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr ""
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr ""
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr ""
+
+#: src/df.c:165
+#, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr ""
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr ""
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr ""
+
+#: src/df.c:468
+#, fuzzy, c-format
+msgid "cannot get current directory"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, fuzzy, c-format
+msgid "cannot change to directory %s"
+msgstr "%s µð·ºÅ丮·Î chdirÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/df.c:498
+#, fuzzy, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+
+#: src/df.c:749
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr ""
+
+#: src/df.c:900
+#, fuzzy, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "ÆÄÀϽýºÅÛ `%s'¸¦ µ¿½Ã¿¡ ¼±ÅÃÇÏ°í Á¦¿ÜÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "°æ°í: "
+
+#: src/df.c:943
+#, fuzzy, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%s: ¸¶¿îÆ®µÈ ÆÄÀϽýºÅÛÀÇ Å×À̺íÀº ÀÐÀ» ¼ö ¾ø½À´Ï´Ù"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>]... [<ÆÄÀÏ>]...\n"
+
+#: src/dircolors.c:103
+#, fuzzy
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"LS_COLORSȯ°æº¯¼ö¸¦ ÁöÁ¤Çϱâ À§ÇÑ ¸í·ÉÀ» Ãâ·ÂÇÕ´Ï´Ù.\n"
+"\n"
+"Ãâ·Â Æ÷¸Ë:\n"
+" -b, --sh, --bourne-shell LS_COLORS¸¦ ÁöÁ¤Çϱâ À§ÇÑ Bourne½© ¸í·É Ãâ·Â\n"
+" -c, --csh, --c-shell LS_COLORS¸¦ ÁöÁ¤Çϱâ À§ÇÑ C½© ¸í·É Ãâ·Â\n"
+" -p, --print-database ±âº»°ª Ãâ·Â\n"
+" --help ÀÌ µµ¿ò¸»À» º¸¿©ÁÖ°í Á¾·áÇÕ´Ï´Ù\n"
+" --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+"\n"
+"FILEÀÌ ÁöÁ¤µÇ¸é, À̸¦ Àоî ÆÄÀÏ ÇüÅÂ¿Í È®ÀåÀÚ¿¡ µû¶ó ¾î¶² »öÀ» »ç¿ëÇÒ °ÍÀÎÁö"
+"¸¦\n"
+"°áÁ¤ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì¿¡´Â ¹Ì¸® ¸¸µé¾îÁø µ¥ÀÌÅͺ£À̽º¸¦ »ç¿ëÇÕ´Ï´Ù.\n"
+"ÀÌ ÆÄÀÏÀÇ Æ÷¸ËÀ» ÀÚ¼¼È÷ ¾Ë·Á¸é `dircolors --print-database'¶ó°í Çϼ¼¿ä.\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+
+#: src/dircolors.c:291
+#, fuzzy, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s: ºÎÀûÀýÇÑ ÃÊ"
+
+#: src/dircolors.c:363
+#, fuzzy, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s: ÀνÄÇÒ ¼ö ¾ø´Â ¿É¼Ç `%c%s'\n"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<³»Àå>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"dircolorÀÇ ³»ºÎ µ¥ÀÌÅͺ£À̽º¸¦ Ãâ·ÂÇÏ´Â ¿É¼Ç°ú ½© ¹®¹ýÀ»\n"
+"¼±ÅÃÇÏ´Â ¿É¼ÇÀº °°ÀÌ ¾µ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "SHELLȯ°æº¯¼ö°¡ ¾ø°í ½© ÇüÅ ¿É¼ÇÀ» ÁöÁ¤ÇÏÁö ¾Ê¾Ò½À´Ï´Ù"
+
+#: src/dirname.c:48
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<ÆÄÀÏ>]...\n"
+" ȤÀº: %s [<¿É¼Ç>]\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#: src/du.c:279 src/wc.c:108
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<¿É¼Ç>]... [<ÆÄÀÏ>]...\n"
+" ¶Ç´Â: %s --traditional [<ÆÄÀÏ>] [[+]<¿É¼Â> [[+]<·¹À̺í>]]\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "ÇÕ°è"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+
+#: src/du.c:780
+#, fuzzy, c-format
+msgid "invalid maximum depth %s"
+msgstr "ºÎÀûÀýÇÑ Æø: `%s'"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr ""
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "¸ðµç µð·ºÅ丮 ³»¿ëÀ» Ç¥½ÃÇϸ鼭 ¿ä¾àÇÒ ¼ö´Â ¾ø½À´Ï´Ù"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "°æ°í: ¿ä¾àÀº --max-depth=0À» »ç¿ëÇÏ´Â °Í°ú °°½À´Ï´Ù"
+
+#: src/du.c:884
+#, fuzzy, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "°æ°í: --max-depth=%d´Â ¿ä¾à ¿É¼Ç°ú Ãæµ¹ÇÕ´Ï´Ù"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+#: src/du.c:960 src/wc.c:662
+#, fuzzy, c-format
+msgid "cannot read file names from %s"
+msgstr "ºñ±³ÇÑ ¹®ÀÚ¿­Àº %s°ú(¿Í) %sÀÔ´Ï´Ù."
+
+#: src/du.c:1000 src/du.c:1003
+#, fuzzy
+msgid "invalid zero-length file name"
+msgstr "À߸øµÈ ±×·ì"
+
+#: src/echo.c:64
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>]... [<ÆÄÀÏ>]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/env.c:118
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>]... [<ÆÄÀÏ>]...\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"°¢ <ÆÄÀÏ>µéÀÇ ÅÇÀ» °ø¹éÀ¸·Î ¹Ù²Ù°í, Ç¥ÁØ Ãâ·Â¿¡ ¾¹´Ï´Ù.\n"
+"<ÆÄÀÏ>ÀÌ ÁÖ¾îÁöÁö ¾Ê°Å³ª, <ÆÄÀÏ>ÀÌ `-'À̸é, Ç¥ÁØ ÀÔ·ÂÀ» ÀнÀ´Ï´Ù.\n"
+
+#: src/expand.c:123
+#, fuzzy
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial °ø¹é ´ÙÀ½¿¡ ÀÖ´Â ÅÇÀ» º¯È¯ÇÏÁö ¾Ê½À´Ï´Ù\n"
+" -t, --tabs=<°³¼ö> ÅÇÀ» 8ÀÌ ¾Æ´Ñ <°³¼ö>¸¸Å­ÀÇ ¹®ÀÚÅ©±âÀÇ °ø¹éÀ¸·Î Ãë±ÞÇÕ´Ï"
+"´Ù\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+" -t, --tabs=¸®½ºÆ® ÅÇ À§Ä¡¸¦ Á÷Á¢ ½°Ç¥·Î ±¸ºÐÇÑ ¸®½ºÆ®·Î ³ªÅ¸³À´Ï´Ù\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, fuzzy, c-format
+msgid "tab stop is too large %s"
+msgstr "%sÀº(´Â) ³Ê¹« Å®´Ï´Ù"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, fuzzy, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "ÅÇ Å©±â¿¡ ºÎÀûÀýÇÑ ¹®ÀÚ°¡ ÁöÁ¤µÇ¾î ÀÖ½À´Ï´Ù"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "ÅÇ Å©±â´Â 0ÀÌ µÉ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "ÅÇ Å©±âµéÀº Á¡Á¡ Ä¿Á®¾ß ÇÕ´Ï´Ù"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, fuzzy, c-format
+msgid "input line is too long"
+msgstr "%s: ÆÄÀÏÀÌ ³Ê¹« ±é´Ï´Ù"
+
+#: src/expr.c:102
+#, fuzzy, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<ÆÄÀÏ>]...\n"
+" ȤÀº: %s [<¿É¼Ç>]\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#: src/expr.c:175
+#, fuzzy, c-format
+msgid "syntax error"
+msgstr "Ç¥ÁØ ¿À·ù"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "Á¤±Ô½Ä Ž»ö¿¡ ¿À·ù ¹ß»ý"
+
+#: src/expr.c:653 src/expr.c:711
+#, fuzzy, c-format
+msgid "non-numeric argument"
+msgstr "Àμö Á¦ÇÑ"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr ""
+
+#: src/factor.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<ÆÄÀÏ>]...\n"
+" ȤÀº: %s [<¿É¼Ç>]\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+
+#: src/factor.c:85
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%sÀº(´Â) ³Ê¹« Å®´Ï´Ù"
+
+#: src/factor.c:158
+#, fuzzy, c-format
+msgid "%s is not a valid positive integer"
+msgstr "%s: ºÎÀûÀýÇÑ ÆÐÅÏ"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "»ç¿ë¹ý: %s [-<¼ýÀÚ>] [<¿É¼Ç>]... [<ÆÄÀÏ>]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"<ÆÄÀÏ>ÀÇ °¢ ¹®´ÜÀ» ´Ù½Ã ±¸¼ºÇØ, Ç¥ÁØ Ãâ·Â¿¡ ¾¹´Ï´Ù.\n"
+"<ÆÄÀÏ>ÀÌ ¾ø°Å³ª <ÆÄÀÏ>ÀÌ `-'À̸é, Ç¥ÁØ ÀÔ·ÂÀ» ÀнÀ´Ï´Ù.\n"
+"\n"
+
+# refillÀ» ¹¹¶ó°í ¹ø¿ª? -- ÁÙÀÌ ³²À» ¶§ ¾Æ·¡ ¹®ÀåÀÇ ÀϺθ¦ °®´Ù ºÙÀÌ´Â °Í
+#: src/fmt.c:282
+#, fuzzy
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin ¸Ç óÀ½ µÎ ÁÙÀÇ µé¿©¾²±â¸¦ À¯ÁöÇÕ´Ï´Ù\n"
+" -p, --prefix=<¹®ÀÚ¿­> <¹®ÀÚ¿­>À» Á¢µÎ¾î·Î °¡Áø ÁÙ¸¸À» °áÇÕÇÕ´Ï´Ù\n"
+" -s, --split-only ±ä ÁÙÀ» ³ª´©µÇ, ä¿ö ³ÖÁö´Â ¾Ê½À´Ï´Ù\n"
+
+#: src/fmt.c:289
+#, fuzzy
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph ù ¹ø° ÁÙÀÇ µé¿©¾²±â¸¦ µÎ ¹ø°¿Í ´Ù¸£°Ô ÇÕ´Ï´Ù\n"
+" -u, --uniform-spacing ´Ü¾î »çÀÌ¿¡ ÇÑ °³ÀÇ °ø¹é, ¹®Àå ´ÙÀ½¿¡ µÎ °³ÀÇ °ø"
+"¹é\n"
+" -w, --width=<°³¼ö> ÇÑ ÁÙÀÇ ÃÖ´ë Æø (±âº»°ªÀº 75¿­)\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+
+#: src/fmt.c:400
+#, fuzzy, c-format
+msgid "invalid width: %s"
+msgstr "ºÎÀûÀýÇÑ Æø: `%s'"
+
+# wrapÀ» ¹¹¶ó°í ÇÑ´Ù?
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"°¢ <ÆÄÀÏ>¿¡¼­ (±âº»°ªÀº Ç¥ÁØÀԷ¿¡¼­) ÀÔ·ÂµÈ ÁÙÀ» ³ª´²¼­, Ç¥ÁØ Ãâ·Â¿¡\n"
+"¾¹´Ï´Ù.\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes ¿­ÀÌ ¾Æ´Ï¶ó ¹ÙÀÌÆ® ¼ö¸¦ ¼Á´Ï´Ù\n"
+" -s, --spaces °ø¹é¿¡¼­ ÁÙÀ» ³ª´¯´Ï´Ù\n"
+" -w, --width=<Æø> 80¿­ ´ë½Å¿¡ <Æø>¿­À» ÀÌ¿ëÇÕ´Ï´Ù\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "ºÎÀûÀýÇÑ ¿­ÀÇ °³¼ö: `%s'"
+
+#: src/head.c:113
+#, fuzzy
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"°¢ <ÆÄÀÏ>ÀÇ ¸Ç ù 10ÁÙÀ» Ç¥ÁØ Ãâ·Â¿¡ Ç¥½ÃÇÕ´Ï´Ù.\n"
+"µÎ °³ ÀÌ»óÀÇ <ÆÄÀÏ>ÀÇ °æ¿ì, °¢°¢ÀÇ ÆÄÀϸ¶´Ù ÆÄÀÏÀ̸§À» ³ªÅ¸³»´Â Çì´õ¸¦ ¸Õ"
+"Àú \n"
+"Ç¥½ÃÇÕ´Ï´Ù. <ÆÄÀÏ>ÀÌ ÁÖ¾îÁöÁö ¾Ê°Å³ª, <ÆÄÀÏ>ÀÌ `-'À̸é, Ç¥ÁØ ÀÔ·ÂÀ» ÀнÀ´Ï"
+"´Ù.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent ÆÄÀÏÀ̸§À» ³ªÅ¸³»´Â Çì´õ¸¦ Ç¥½ÃÇÏÁö ¾Ê½À´Ï´Ù\n"
+" -v, --verbose ¾ðÁ¦³ª ÆÄÀÏÀ̸§À» ³ªÅ¸³»´Â Çì´õ¸¦ Ç¥½ÃÇÕ´Ï´Ù\n"
+
+# ÇÑ ÁÙ¿¡ ¸ÂÃßÀÚ
+#: src/head.c:136
+#, fuzzy
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"<Å©±â>¿¡ Á¢¹Ì¾î·Î ±× ´ÜÀ§¸¦ ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù; b´Â 512, k´Â 1ų·Î, mÀº 1¸Þ°¡"
+"ÀÔ´Ï´Ù.\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "%sÀ»(¸¦) Àд µµÁß ¿À·ù ¹ß»ý"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "%s¿¡ ¾²´Â µµÁß ¿À·ù ¹ß»ý"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr ""
+
+#: src/head.c:230 src/head.c:1046
+#, fuzzy, c-format
+msgid "%s: number of bytes is too large"
+msgstr "ºñ±³ÇÒ ¹ÙÀÌÆ®ÀÇ °³¼ö°¡ ºÎÀûÀýÇÕ´Ï´Ù"
+
+#: src/head.c:443
+#, fuzzy, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: »ó´ë ¿ÀÇÁ¼Â %s%s·Î(À¸·Î) °¥ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, fuzzy, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: ¿ÀÇÁ¼Â %s%s·Î(À¸·Î) °¥ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "%s¿¡ ´ëÇÑ ÆÄÀÏ Æ÷ÀÎÅ͸¦ ÀçÀ§Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %sÀº(´Â) ³Ê¹« Ä¿¼­ Ç¥½ÃÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "ÇàÀÇ °³¼ö"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "¹ÙÀÌÆ® ¼ö"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "ºÎÀûÀýÇÑ ÇàÀÇ °³¼ö"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "%s: ºÎÀûÀýÇÑ ¹ÙÀÌÆ® ¼ö"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "%s: ºÎÀûÀýÇÑ ¿É¼Ç -- %c\n"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "`%s'¿¡¼­ ioctlÀ» ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+
+#: src/hostname.c:114
+#, fuzzy, c-format
+msgid "cannot determine hostname"
+msgstr "%s: µ¹¾Æ°¥ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/id.c:78
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>]... <ÁýÇÕ1> [<ÁýÇÕ2>]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+
+#: src/id.c:152
+#, fuzzy, c-format
+msgid "cannot print only user and only group"
+msgstr "»ç¿ëÀÚ¿Í ±×·ìÀ» ¸ðµÎ »ý·«ÇÒ ¼ö´Â ¾ø½À´Ï´Ù"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr ""
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr ""
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "%sÀÇ ¼ÒÀ¯ÀÚ ±×¸®°í/ȤÀº ±×·ìÀ» ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "%sÀÇ ¼ÒÀ¯ÀÚ ±×¸®°í/ȤÀº ±×·ìÀ» ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#: src/id.c:271
+#, fuzzy, c-format
+msgid "cannot get supplemental group list"
+msgstr "null ±×·ìÀ¸·Î ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#: src/id.c:375
+msgid " groups="
+msgstr ""
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr "strip¿É¼ÇÀº µð·ºÅ丮¸¦ ¼³Ä¡ÇÒ ¶§´Â ¾µ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/install.c:321
+#, fuzzy, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "strip¿É¼ÇÀº µð·ºÅ丮¸¦ ¼³Ä¡ÇÒ ¶§´Â ¾µ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/install.c:369 src/mkdir.c:193
+#, fuzzy, c-format
+msgid "invalid mode %s"
+msgstr "ºÎÀûÀýÇÑ Æø: `%s'"
+
+#: src/install.c:520
+#, fuzzy, c-format
+msgid "cannot change ownership of %s"
+msgstr "%sÀÇ Çã°¡¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#: src/install.c:541
+#, fuzzy, c-format
+msgid "cannot set time stamps for %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/install.c:562
+#, fuzzy, c-format
+msgid "fork system call failed"
+msgstr "ºí·Ï Ư¼ö ÆÄÀÏ"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "strip¸¦ ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "%s¿¡ ¾²´Â µµÁß ¿À·ù ¹ß»ý"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, fuzzy, c-format
+msgid "invalid user %s"
+msgstr "À߸øµÈ »ç¿ëÀÚ"
+
+#: src/install.c:628
+#, fuzzy, c-format
+msgid "creating directory %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/install.c:651
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"»ç¿ë¹ý: %s [OPTION]... SOURCE DEST\n"
+" ¶Ç´Â: %s [OPTION]... SOURCE... DIRECTORY\n"
+" ¶Ç´Â: %s -d [OPTION]... --target-directory=DIRECTORY SOURCE...\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+
+#: src/install.c:681
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+#, fuzzy
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"--suffix³ª SIMPLE_BACKUP_SUFFIXȯ°æº¯¼ö¿¡ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ¹é¾÷ Á¢¹Ì»ç´Â\n"
+"~ÀÔ´Ï´Ù.\n"
+"¹öÀü Á¦¾î´Â --backup¿É¼ÇÀ̳ª VERSION_CONTROLȯ°æº¯¼ö·Î ÁöÁ¤Çϸç, \n"
+"´ÙÀ½°ú °°½À´Ï´Ù:\n"
+"\n"
+" none, off ¹é¾÷À» ÇÏÁö ¾Ê½À´Ï´Ù(--backupÀ» Á־)\n"
+" numbered, t ¹øÈ£°¡ ÁÖ¾îÁø ¹é¾÷À» ¸¸µì´Ï´Ù\n"
+" existing, nil ¹øÈ£°¡ ÁÖ¾îÁø ¹é¾÷ÀÌ ÀÖÀ¸¸é ¹øÈ£¸¦ ÁÖ°í, ±×·¸Áö ¾ÊÀ¸¸é\n"
+" ´Ü¼øÇÏ°Ô ÇÕ´Ï´Ù\n"
+" simple, never Ç×»ó ´Ü¼ø ¹é¾÷À» ÇÕ´Ï´Ù\n"
+
+# -a SIDE, -e EMPTY Àç°í·Á
+#: src/join.c:138
+#, fuzzy
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"ÀÔ·ÂÁß¿¡¼­ µ¿ÀÏÇÑ join Çʵ带 °¡Áø ÁÙÀÇ °¢°¢ÀÇ ½Ö¿¡ ´ëÇØ, Ç¥ÁØ ÀÔ·ÂÀ¸·Î\n"
+"Ãâ·ÂÇÕ´Ï´Ù. ±âº» join Çʵå´Â ù ¹ø° Çʵå·Î, Çʵå´Â °ø¹é¿¡ ÀÇÇØ ±¸ºÐ µË´Ï"
+"´Ù.\n"
+"<ÆÄÀÏ1> ȤÀº <ÆÄÀÏ2>°¡ -À϶§ (µÑ ´Ù -ÀÌ¸é ¾È µÊ) Ç¥ÁØ ÀԷ¿¡¼­ ÀнÀ´Ï´Ù.\n"
+"\n"
+" -a <»çÀ̵å> <»çÀ̵å> ÆÄÀÏ¿¡¼­ ½ÖÀ» Áö¿ï ¼ö ¾ø´Â ÁÙÀ» Ãâ·ÂÇÕ´Ï´Ù\n"
+" -e <¿¥ÇÁƼ> ÀÔ·Â Çʵ尡 ¾ø´Â °÷¿¡ <¿¥ÇÁƼ>¸¦ ¾¹´Ï´Ù.\n"
+
+#: src/join.c:147
+#, fuzzy
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case Çʵ带 ±¸ºÐÇÒ ¶§ ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê½À´Ï´Ù\n"
+" -j <Çʵå> (°ð ¾ø¾îÁú ¿É¼Ç) `-1 <Çʵå> -2 <Çʵå>'¿Í µ¿ÀÏÇÕ´Ï´Ù\n"
+" -j1 <Çʵå> (°ð ¾ø¾îÁú ¿É¼Ç) `-1 <Çʵå>'¿Í µ¿ÀÏÇÕ´Ï´Ù\n"
+" -j2 <Çʵå> (°ð ¾ø¾îÁú ¿É¼Ç) `-2 <Çʵå>'¿Í µ¿ÀÏÇÕ´Ï´Ù\n"
+" -o <Çü½Ä> Ãâ·Â ÁÙÀ» ¸¸µé ¶§ <Çü½Ä>À» µû¸¨´Ï´Ù\n"
+" -t <¹®ÀÚ> ÀÔ·Â ¹× Ãâ·Â ÇÊµå ±¸ºÐÀÚ·Î <¹®ÀÚ>¸¦ »ç¿ëÇÕ´Ï´Ù\n"
+
+#: src/join.c:153
+#, fuzzy
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v <»çÀ̵å> -a <»çÀ̵å>¿Í µ¿ÀÏÇÏÁö¸¸, joinµÈ ÁÙÀ» Ãâ·ÂÇÏÁö ¾Ê½À´Ï´Ù\n"
+" -1 <Çʵå> ÆÄÀÏ 1¿¡¼­ ÀÌ <Çʵå>¿¡ ´ëÇØ joinÇÕ´Ï´Ù\n"
+" -2 <Çʵå> ÆÄÀÏ 2¿¡¼­ ÀÌ <Çʵå>¿¡ ´ëÇØ joinÇÕ´Ï´Ù\n"
+
+#: src/join.c:160
+#, fuzzy
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"`-t <¹®ÀÚ>' ¿É¼ÇÀ» ¾²Áö ¾Ê¾Ò´Ù¸é, ÁÙÀÇ ¸Ç ¾ÕÀÇ °ø¹éÀº ¹«½ÃµË´Ï´Ù. ÀÌ ¿É¼Ç"
+"À»\n"
+"½è´Ù¸é °¢ Çʵå´Â <¹®ÀÚ>¿¡ ÀÇÇØ ±¸ºÐµË´Ï´Ù. <Çʵå>´Â ÇÊµå ¹øÈ£·Î 1ºÎÅÍ \n"
+"½ÃÀÛÇÕ´Ï´Ù. <Çü½Ä>Àº Çʵ带 ½°Ç¥ ȤÀº °ø¹é¿¡ ÀÇÇØ ±¸ºÐµÇ´Â Çü½Ä ÁöÁ¤ÀÚ·Î, \n"
+"°¢°¢ÀÇ Çü½Ä ÁöÁ¤ÀÚ´Â `<»çÀ̵å>.<Çʵå>' ȤÀº `0'ÀÇ Çü½ÄÀ» Áö´Õ´Ï´Ù. ±âº»\n"
+"<Çü½Ä> Ãâ·ÂÀ¸·Î, join Çʵå, <ÆÄÀÏ1>¿¡ ³²¾Æ ÀÖ´Â Çʵå, <ÆÄÀÏ2>¿¡ ³²¾Æ ÀÖ´Â \n"
+"ÇʵåÀÇ ¼ø¼­´ë·Î °¢°¢Àº <¹®ÀÚ>¿¡ ±¸ºÐµÇ¾î Ãâ·ÂµË´Ï´Ù.\n"
+
+#: src/join.c:617 src/join.c:812
+#, fuzzy, c-format
+msgid "invalid field number: %s"
+msgstr "ºÎÀûÀýÇÑ ÇÊµå ¹øÈ£: `%s'"
+
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "ºÎÀûÀýÇÑ Çʵå ÁöÁ¤ÀÚ: `%s'"
+
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "Çʵå ÁöÁ¤¿¡ ºÎÀûÀýÇÑ ÆÄÀÏ ¹øÈ£: `%s'"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr ""
+
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "¿©·¯ ¹®ÀÚ·Î µÈ ÅÇ `%s'"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr ""
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "µÎ ÆÄÀÏÀÌ ¸ðµÎ Ç¥ÁØ ÀÔ·ÂÀÌ¸é ¾È µË´Ï´Ù"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+
+#: src/kill.c:161
+#, fuzzy, c-format
+msgid "%s: invalid signal"
+msgstr "%s: ºÎÀûÀýÇÑ PID"
+
+#: src/kill.c:266
+#, fuzzy, c-format
+msgid "%s: invalid process id"
+msgstr "%s: ºÎÀûÀýÇÑ ÆÐÅÏ"
+
+#: src/kill.c:320
+#, fuzzy, c-format
+msgid "invalid option -- %c"
+msgstr "%s: ºÎÀûÀýÇÑ ¿É¼Ç -- %c\n"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr ""
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr ""
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr ""
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr ""
+
+#: src/link.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<ÆÄÀÏ>]...\n"
+" ȤÀº: %s [<¿É¼Ç>]\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+
+#: src/link.c:95
+#, fuzzy, c-format
+msgid "cannot create link %s to %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+"%s: °æ°í: ½Éº¼¸¯ ¸µÅ©·Î Çϵ帵ũ¸¦ ¸¸µå´Â °ÍÀº ½Ã½ºÅÛ¿¡ µû¶ó ¾ÈµÉ ¼öµµ\n"
+" ÀÖ½À´Ï´Ù."
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: µð·ºÅ丮´Â Çϵ帵ũÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/ln.c:218
+#, fuzzy, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/ln.c:223
+#, fuzzy, c-format
+msgid "%s: replace %s? "
+msgstr "%s: `%s'¸¦ ¹Ù²Ü±î¿ä? "
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "½Éº¼¸¯ ¸µÅ© `%s'¸¦ `%s'¿¡ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "½Éº¼¸¯ ¸µÅ© `%s'¸¦ `%s'¿¡ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "Çϵ帵ũ `%s'¸¦ `%s'¿¡ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "Çϵ帵ũ `%s'¸¦ `%s'¿¡ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "Çϵ帵ũ `%s'¸¦ `%s'¿¡ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/ln.c:324
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"»ç¿ë¹ý: %s [OPTION]... SOURCE DEST (ù¹ø° Çü½Ä)\n"
+" ¶Ç´Â: %s [OPTION]... SOURCE... DIRECTORY (µÎ¹ø° Çü½Ä)\n"
+" ¶Ç´Â: %s -d [OPTION]... DIRECTORY... (¼¼¹ø° Çü½Ä)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+
+#: src/ln.c:484
+#, fuzzy, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "%sÀÌ(°¡) Á¸ÀçÇÏÁö¸¸ µð·ºÅ丮°¡ ¾Æ´Õ´Ï´Ù"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>] [<ÆÄÀÏ>]...\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+
+#: src/logname.c:89
+#, fuzzy, c-format
+msgid "no login name"
+msgstr "%s: ºÎÀûÀýÇÑ ¼ýÀÚ"
+
+#: src/ls.c:684
+#, fuzzy
+msgid "%b %e %Y"
+msgstr " %Y %b %e %H:%M"
+
+#: src/ls.c:692
+#, fuzzy
+msgid "%b %e %H:%M"
+msgstr " %Y %b %e %H:%M"
+
+#: src/ls.c:1453
+#, fuzzy, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "ȯ°æº¯¼ö COLUMNSÀÇ °ª¿¡ ´ÙÀ½ÀÇ À߸øµÈ ÆøÀÌ ÁöÁ¤µÇ¾ú½À´Ï´Ù: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "ȯ°æº¯¼ö COLUMNSÀÇ °ª¿¡ ´ÙÀ½ÀÇ À߸øµÈ ÆøÀÌ ÁöÁ¤µÇ¾ú½À´Ï´Ù: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr "ȯ°æº¯¼ö TABSIZEÀÇ °ª¿¡ ´ÙÀ½ÀÇ À߸øµÈ ÅÇ Å©±â°¡ ÁöÁ¤µÇ¾ú½À´Ï´Ù: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, fuzzy, c-format
+msgid "invalid line width: %s"
+msgstr "ºÎÀûÀýÇÑ Æø: `%s'"
+
+#: src/ls.c:1704
+#, fuzzy, c-format
+msgid "invalid tab size: %s"
+msgstr "ºÎÀûÀýÇÑ Å¸ÀÔÀÇ ¹®ÀÚ¿­ `%s'"
+
+#: src/ls.c:1885
+#, fuzzy, c-format
+msgid "invalid time style format %s"
+msgstr "%2$s¿¡ ´ëÇØ ºÎÀûÀýÇÑ ÀÎÀÚ %1$s"
+
+#: src/ls.c:2229
+#, fuzzy, c-format
+msgid "unrecognized prefix: %s"
+msgstr "ÀνÄÇÒ ¼ö ¾ø´Â ¿É¼Ç `-%c'"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "LS_COLORSȯ°æº¯¼öÀÇ Çؼ®ÇÒ ¼ö ¾ø´Â °ª"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, fuzzy, c-format
+msgid "cannot open directory %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/ls.c:2344
+#, fuzzy, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "%s¿¡ ´ëÇÑ ÆÄÀÏ Æ÷ÀÎÅ͸¦ ÀçÀ§Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, fuzzy, c-format
+msgid "reading directory %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/ls.c:2410
+#, fuzzy, c-format
+msgid "closing directory %s"
+msgstr "%s µð·ºÅ丮·Î chdirÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/ls.c:2918
+#, fuzzy, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "ºñ±³ÇÑ ¹®ÀÚ¿­Àº %s°ú(¿Í) %sÀÔ´Ï´Ù."
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+
+#: src/ls.c:4360
+#, fuzzy
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -g (¹«½ÃÇÕ´Ï´Ù)\n"
+" -G, --no-group ±×·ìÁ¤º¸ Ãâ·ÂÀ» ÇÏÁö ¾Ê½À´Ï´Ù\n"
+" -h, --human-readable Å©±â¸¦ »ç¶÷ÀÌ ¾Ë±â ½±°Ô(1K, 234M, 2Gµî)Ç¥½ÃÇÕ´Ï"
+"´Ù\n"
+" -H, --si ºñ½ÁÇÕ´Ï´Ù¸¸ 1024¹è ´ë½Å 1000¹è¸¦ »ç¿ëÇÕ´Ï´Ù\n"
+" --indicator-style=WORD WORD ½ºÅ¸ÀÏ·Î ÆÄÀÏ ±¸ºÐÀ» ÇØ ÁÝ´Ï´Ù. °¡´ÉÇÑ °ª"
+"˼:\n"
+" none (±âº»°ª), Á¾·ù (-F), ÆÄÀÏÇü½Ä (-p)\n"
+" -i, --inode °¢ ÆÄÀÏÀÇ i-node¹øÈ£¸¦ Ãâ·ÂÇÕ´Ï´Ù\n"
+" -I, --ignore=PATTERN ¼Ð PATTERN¿Í ÀÏÄ¡ÇÏ´Â ¸ñ·ÏÀº Ãâ·ÂÇÏÁö ¾Ê½À´Ï´Ù\n"
+" -k, --kilobytes --block-size=1024¿Í °°½À´Ï´Ù\n"
+" -l ±ä Ãâ·Â Æ÷¸ËÀ» »ç¿ëÇÕ´Ï´Ù\n"
+" -L, --dereference ½Éº¼¸¯ ¸µÅ©¸¦ µû¶ó°¡ ¸µÅ©µÈ ¸ñ·ÏÀ» Ãâ·ÂÇÕ´Ï´Ù\n"
+" -m Ç౸ºÐ ¾øÀÌ ½°Ç¥·Î ±¸ºÐµÇ´Â ¸ñ·Ï Ãâ·ÂÀ» ÇÕ´Ï´Ù\n"
+" -n, --numeric-uid-gid À̸§ ´ë½Å ¼ýÀÚ·Î µÈ UID¿Í GID¸¦ Ãâ·ÂÇÕ´Ï´Ù\n"
+" -N, --literal ¸ñ·Ï À̸§À» ±×´ë·Î Ãâ·ÂÇÕ´Ï´Ù\n"
+" (ÄÜÆ®·Ñ ¹®ÀÚµµ Ưº°È÷ ó¸®ÇÏÁö ¾Ê½À´Ï´Ù)\n"
+" -o ±×·ìÁ¤º¸ ¾øÀÌ ±ä Ãâ·Â Æ÷¸ËÀ» »ç¿ëÇÕ´Ï´Ù\n"
+" -p, --file-type °¢ ¸ñ·ÏÀ» ±¸ºÐÇϱâ À§ÇÑ ¹®ÀÚ(/=@|)¸¦ µÚ¿¡ ºÙÀÔ´Ï"
+"´Ù\n"
+" -q, --hide-control-chars Ãâ·ÂÇÒ ¼ö ¾ø´Â ¹®ÀÚ ´ë½Å ?À» Ãâ·ÂÇÕ´Ï´Ù\n"
+" --show-control-chars Ãâ·ÂÇÒ ¼ö ¾ø´Â ¹®ÀÚ¸¦ ±×´ë·Î º¸¿©ÁÝ´Ï´Ù(±âº»"
+"°ª)\n"
+" -Q, --quote-name ¸ñ·Ï À̸§À» Å«µû¿ÈÇ¥ ¾È¿¡ ³Ö½À´Ï´Ù\n"
+" --quoting-style=WORD WORDÀÇ ÀÎ¿ë ½ºÅ¸ÀÏÀ» »ç¿ëÇÕ´Ï´Ù. °¡´ÉÇÑ °ªÀº:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+" -r, --reverse Á¤·Ä¼ø¼­¸¦ °Å²Ù·Î ÇÕ´Ï´Ù\n"
+" -R, --recursive ¼­ºêµð·ºÅ丮±îÁö Ãâ·ÂÇÕ´Ï´Ù\n"
+" -s, --size °¢ ÆÄÀÏÀÇ ºí·Ï Å©±â¸¦ Ãâ·ÂÇÕ´Ï´Ù\n"
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+
+#: src/ls.c:4402
+#, fuzzy
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -f, --fields=<¸®½ºÆ®> ÀÌ Çʵ常À» Ãâ·ÂÇÕ´Ï´Ù; ¶Ç -s ¿É¼ÇÀÌ »ç¿ëµÇÁö\n"
+" ¾Ê¾Ò´Ù¸é ±¸ºÐÀÚ ¹®ÀÚ°¡ µé¾î ÀÖÁö ¾ÊÀº ÁÙµµ\n"
+" Ãâ·ÂÇÕ´Ï´Ù\n"
+" -n (¹«½ÃµÊ)\n"
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#: src/md5sum.c:150
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<¿É¼Ç>] [<ÆÄÀÏ>]...\n"
+" ȤÀº: %s [<¿É¼Ç>] --check [<ÆÄÀÏ>]\n"
+"%s (%dºñÆ®) üũ¼¶À» Ç¥½ÃÇϰųª °Ë»çÇÕ´Ï´Ù.\n"
+"<ÆÄÀÏ>ÀÌ ÁÖ¾îÁöÁö ¾Ê°Å³ª, <ÆÄÀÏ>ÀÌ `-'À̸é, Ç¥ÁØ ÀÔ·ÂÀ» ÀнÀ´Ï´Ù.\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+"\n"
+" -B, --binary ÄÜ¼Ö ÀåÄ¡¿¡ ÀÌÁø µ¥ÀÌŸ¸¦ ¾¹´Ï´Ù\n"
+"\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+#, fuzzy
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"´ÙÀ½ µÎ ¿É¼ÇÀº üũ¼¶À» °Ë»çÇÒ °æ¿ì¿¡¸¸ ¿É¼ÇÀ» ¾µ ¼ö ÀÖ½À´Ï´Ù:\n"
+" --status Ãâ·ÂÀ» ÇÏÁö ¾Ê°í, »óÅ ÄÚµå´Â ¼º°ø/½ÇÆи¦ ¸®ÅÏÇÕ´Ï"
+"´Ù\n"
+" -w, --warn Ʋ¸° Çü½ÄÀÇ Ã¼Å©¼¶ ÁÙ¿¡ ´ëÇØ °æ°íÇÕ´Ï´Ù\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"üũ¼¶Àº %s¿¡ ±â¼úµÈ ´ë·Î °è»êµË´Ï´Ù. °Ë»çÇÒ ¶§, ÀÔ·ÂÀº ÀÌ \n"
+"ÇÁ·Î±×·¥ÀÇ Ãâ·Â¹°À̾î¾ß ÇÕ´Ï´Ù. ±âº» ¸ðµå´Â üũ¼¶, ŸÀÔÀ» \n"
+"³ªÅ¸³»´Â ¹®ÀÚ (ÀÌÁø ÆÄÀÏÀº `*', ¹®¼­ ÆÄÀÏÀº ` '), ±×¸®°í °¢ <ÆÄÀÏ>ÀÇ \n"
+"À̸§ÀÔ´Ï´Ù.\n"
+
+#: src/md5sum.c:459
+#, fuzzy, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: ¿Ã¹Ù¸¥ Çü½ÄÀ» °®Ãá %s üũ¼¶ ÇàÀ» ãÁö ¸øÇßÀ½"
+
+#: src/md5sum.c:481
+#, fuzzy, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %lu: ¿Ã¹Ù¸£Áö ¾ÊÀº Çü½ÄÀ» °®Ãá %s üũ¼¶ Çà"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: ¿­±â ¶Ç´Â Àб⠽ÇÆÐ\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "½ÇÆÐ"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "¼º°ø"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: Àб⠿À·ù"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: ¿Ã¹Ù¸¥ Çü½ÄÀ» °®Ãá %s üũ¼¶ ÇàÀ» ãÁö ¸øÇßÀ½"
+
+#: src/md5sum.c:562
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "°æ°í: ¿­°ÅµÈ %2$d°³ÀÇ %3$s Áß¿¡¼­ %1$d°³¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù"
+msgstr[1] "°æ°í: ¿­°ÅµÈ %2$d°³ÀÇ %3$s Áß¿¡¼­ %1$d°³¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù"
+
+#: src/md5sum.c:574
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "°æ°í: °è»êµÈ %2$d°³ÀÇ %3$s Áß¿¡¼­ %1$d °³°¡ ¼­·Î ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù"
+msgstr[1] "°æ°í: °è»êµÈ %2$d°³ÀÇ %3$s Áß¿¡¼­ %1$d °³°¡ ¼­·Î ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr "--binary¿Í --text ¿É¼ÇÀº ¿ÀÁ÷ üũ¼¶À» °Ë»çÇÒ ¶§¸¸ Àǹ̰¡ ÀÖ½À´Ï´Ù"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "--status ¿É¼ÇÀº ¿ÀÁ÷ üũ¼¶À» °Ë»çÇÒ ¶§¸¸ Àǹ̰¡ ÀÖ½À´Ï´Ù"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "--warn ¿É¼ÇÀº ¿ÀÁ÷ üũ¼¶À» °Ë»çÇÒ ¶§¸¸ Àǹ̰¡ ÀÖ½À´Ï´Ù"
+
+#: src/mkdir.c:59
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>] [<ÆÄÀÏ>]...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+"Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì µð·ºÅ丮¸¦ ¸¸µì´Ï´Ù.\n"
+"\n"
+" -m, --mode=MODE rwxrwxrwx - umask°¡ ¾Æ´Ñ, ±ÇÇÑ ¸ðµå¸¦ ¼³Á¤ÇÕ´Ï´Ù(chmod)\n"
+" -p, --parents ÇÊ¿äÇÑ °æ¿ì ºÎ¸ð µð·ºÅ丮µµ ¸¸µì´Ï´Ù. À־ ¿À·ù°¡\n"
+" ¾Æ´Õ´Ï´Ù\n"
+" -v, --verbose ¸¸µé¾î±â´Â °¢°¢ÀÇ µð·ºÅ丮¸¦ Ãâ·ÂÇÕ´Ï´Ù\n"
+" --help ÀÌ µµ¿ò¸»À» Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+" --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+
+#: src/mkdir.c:168
+#, fuzzy, c-format
+msgid "created directory %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/mkfifo.c:54
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>] [<ÆÄÀÏ>]...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+"À̸§ ÀÖ´Â ÆÄÀÌÇÁ(FIFO)¸¦ NAMEÀ̶ó´Â À̸§À¸·Î ¸¸µì´Ï´Ù.\n"
+"\n"
+" -m, --mode=MODE a=rw - umask°¡ ¾Æ´Ñ, ±ÇÇÑ ¸ðµå¸¦ ¼³Á¤ÇÕ´Ï´Ù(chmod)\n"
+" --help ÀÌ µµ¿ò¸»À» Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+" --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, fuzzy, c-format
+msgid "invalid mode"
+msgstr "ºÎÀûÀýÇÑ ¼ýÀÚ"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>]... <ÁýÇÕ1> [<ÁýÇÕ2>]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+
+#: src/mknod.c:76
+#, fuzzy
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"TYPEÇüÅÂÀÇ Æ¯º° ÆÄÀÏ NAMEÀ» ¸¸µì´Ï´Ù.\n"
+"\n"
+" -m, --mode=MODE a=rw - umask°¡ ¾Æ´Ñ, ±ÇÇÑ ¸ðµå¸¦ ¼³Á¤ÇÕ´Ï´Ù(chmod)\n"
+" --help ÀÌ µµ¿ò¸»À» Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+" --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+"\n"
+"MAJOR MINOR´Â TYPE pÇüÀº ¾ÈµÇÁö¸¸ ´Ù¸¥ Çü¿¡´Â ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù. TYPEÀº\n"
+"´ÙÀ½°ú °°½À´Ï´Ù:\n"
+"\n"
+" b ºí·°(¹öÆÛ¸µ ÀÖ´Â) Ưº° ÆÄÀÏÀ» ¸¸µì´Ï´Ù.\n"
+" c, u ij¸¯ÅÍ(¹öÆÛ¸µ ¾ø´Â) Ưº° ÆÄÀÏÀ» ¸¸µì´Ï´Ù.\n"
+" p FIFO¸¦ ¸¸µì´Ï´Ù\n"
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"ºí·° Ưº° ÆÄÀÏÀ» ¸¸µé ¶§¿¡´Â, major¿Í minorÀåÄ¡ ¹øÈ£¸¦\n"
+"ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù"
+
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "ºÎÀûÀýÇÑ ½ÃÀÛ Çà¹øÈ£: `%s'"
+
+#: src/mknod.c:167
+#, fuzzy, c-format
+msgid "block special files not supported"
+msgstr "ºí·Ï Ư¼ö ÆÄÀÏ"
+
+#: src/mknod.c:176
+#, fuzzy, c-format
+msgid "character special files not supported"
+msgstr "¹®ÀÚ Æ¯¼ö ÆÄÀÏ"
+
+#: src/mknod.c:192
+#, fuzzy, c-format
+msgid "invalid major device number %s"
+msgstr "ºÎÀûÀýÇÑ ½ÃÀÛ Çà¹øÈ£: `%s'"
+
+#: src/mknod.c:197
+#, fuzzy, c-format
+msgid "invalid minor device number %s"
+msgstr "ºÎÀûÀýÇÑ ½ÃÀÛ Çà¹øÈ£: `%s'"
+
+#: src/mknod.c:202
+#, fuzzy, c-format
+msgid "invalid device %s %s"
+msgstr "%2$s¿¡ ´ëÇØ ºÎÀûÀýÇÑ ÀÎÀÚ %1$s"
+
+#: src/mknod.c:216
+#, fuzzy, c-format
+msgid "invalid device type %s"
+msgstr "%2$s¿¡ ´ëÇØ ºÎÀûÀýÇÑ ÀÎÀÚ %1$s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+
+#: src/mv.c:308
+#, fuzzy
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+"SOURCE¸¦ DEST·Î À̸§À» ¹Ù²Ù°Å³ª SOURCE¸¦ DIRECTORY·Î ¿Å±é´Ï´Ù.\n"
+"\n"
+" --backup[=CONTROL] Áö¿ì±â Àü¿¡ ¹é¾÷º»À» ¸¸µì´Ï´Ù\n"
+" -b --backup°ú ºñ½ÁÇѵ¥ Àμö¸¦ ¹ÞÁö ¾Ê´Â´Ù\n"
+" -f, --force ÀÌ¹Ì Á¸ÀçÇÏ´Â DEST¸¦ Áú¹® ¾øÀÌ »èÁ¦ÇÕ´Ï´Ù.\n"
+" -i, --interactive ¿Å±â±â Àü¿¡ ¿©ºÎ¸¦ ¹¯½À´Ï´Ù\n"
+" --strip-trailing-slashes °¢ SOURCE Àμö¿¡¼­ µÚ¿¡ ³¡³ª´Â ½½·¡½Ã ±âÈ£¸¦\n"
+" »èÁ¦\n"
+" -S, --suffix=SUFFIX ÀϹÝÀûÀÎ ¹é¾÷ Á¢¹Ì»ç¸¦ °ãÃľ¹´Ï´Ù\n"
+" --target-directory=DIRECTORY SOURCEÀÇ ¸ðµç Àμö¸¦ DIRECTORY·Î ¿Å±é´Ï"
+"´Ù\n"
+" -u, --update ¿À·¡µÈ ÆÄÀÏ°ú »õ ÆÄÀϸ¸ ¿Å±é´Ï´Ù\n"
+" -v, --verbose ÀÛ¾÷À» Ãâ·ÂÇÕ´Ï´Ù\n"
+" -V, --version-control=WORD ÀϹÝÀûÀÎ ¹öÀü ÄÜÆ®·ÑÀ» °ãÃľ¹´Ï´Ù\n"
+" --help ÀÌ µµ¿ò¸»À» º¸¿©ÁÖ°í Á¾·áÇÕ´Ï´Ù\n"
+" --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+"\n"
+
+#: src/nice.c:76
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>] [<ÆÄÀÏ>]...\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "%2$s¿¡ ´ëÇØ ºÎÀûÀýÇÑ ÀÎÀÚ %1$s"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr ""
+
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "Àӽà ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "`%s'ÀÇ Á¤º¸(stat)¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"°¢ <ÆÄÀÏ>À» ÁÙ¹øÈ£¸¦ ºÙ¿©¼­ Ç¥ÁØ Ãâ·Â¿¡ ¾¹´Ï´Ù.\n"
+"<ÆÄÀÏ>ÀÌ ÁÖ¾îÁöÁö ¾Ê°Å³ª, <ÆÄÀÏ>ÀÌ `-'À̸é, Ç¥ÁØ ÀÔ·ÂÀ» ÀнÀ´Ï´Ù.\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=<½ºÅ¸ÀÏ> º»¹®¿¡ ¹øÈ£¸¦ ºÙÀÌ´Â µ¥ <½ºÅ¸ÀÏ>À» ¾¹´Ï´Ù\n"
+" -d, --section-delimiter=<±¸ºÐ> ³í¸®Àû ÆäÀÌÁö¸¦ ±¸ºÐÇÏ´Â µ¥ <±¸ºÐ>À» ¾¹´Ï"
+"´Ù\n"
+" -f, --footer-numbering=<½ºÅ¸ÀÏ> ¾Æ·¡´Ü¿¡ ¹øÈ£¸¦ ºÙÀÌ´Â µ¥ <½ºÅ¸ÀÏ>À» ¾¹´Ï"
+"´Ù\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -f, --header-numbering=<½ºÅ¸ÀÏ> À­´Ü¿¡ ¹øÈ£¸¦ ºÙÀÌ´Â µ¥ <½ºÅ¸ÀÏ>À» ¾¹´Ï´Ù\n"
+" -i, --page-increment=<¹øÈ£> °¢ ÁÙÀÇ ÁÙ¹øÈ£ Áõ°¡Ä¡\n"
+" -l, --join-blank-lines=<¹øÈ£> <¹øÈ£>°³ÀÇ ºó ÁÙÀº Çϳª·Î Ãë±ÞµË´Ï´Ù.\n"
+" -n, --number-format=<Çü½Ä> <Çü½Ä>¿¡ µû¶ó ÁÙ ¹øÈ£¸¦ ¾¹´Ï´Ù\n"
+" -p, --no-renumber ÆäÀÌÁö°¡ ³Ñ¾î°¡µµ ÁÙ¹øÈ£¸¦ ¸®¼ÂÇÏÁö ¾Ê½À´Ï"
+"´Ù\n"
+" -s, --number-separator=<¹®ÀÚ¿­> ÁÙ ¹øÈ£ ´ÙÀ½¿¡ <¹®ÀÚ¿­>À» Ãß°¡ÇÕ´Ï´Ù\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=<°³¼ö> °¢ ³í¸®Àû ÆäÀÌÁö¿¡¼­ ù¹ø° ÁÙ¹øÈ£\n"
+" -w, --number-width=<°³¼ö> ÁÙ¹øÈ£¸¦ <°³¼ö>¿­¿¡ ¾¹´Ï´Ù\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"±âº» ¿É¼ÇÀº, `-v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn'ÀÔ´Ï´Ù. <±¸ºÐ>Àº ³í¸®"
+"Àû\n"
+"ÆäÀÌÁö¸¦ ±¸ºÐÇÏ´Â µ¥ ¾²ÀÌ´Â µÎ °³ÀÇ ¹®ÀÚÀÌ°í, µÎ ¹ø° ¹®ÀÚ°¡ ¾ø´Ù¸é `.'ÀÌ \n"
+"¾²ÀÔ´Ï´Ù: `.'À» ¾²·Á¸é `\\\\'¶ó°í ¾²½Ê½Ã¿À. <½ºÅ¸ÀÏ>Àº ´ÙÀ½ Áß ÇϳªÀÔ´Ï´Ù.\n"
+
+#: src/nl.c:214
+#, fuzzy
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a ¸ðµç ÁÙ¿¡ ¹øÈ£¸¦ ºÙÀÔ´Ï´Ù.\n"
+" t ºó ÁÙÀÌ ¾Æ´Ñ °æ¿ì¿¡¸¸ ¹øÈ£¸¦ ºÙÀÔ´Ï´Ù\n"
+" n ¹øÈ£¸¦ ºÙÀÌÁö ¾Ê½À´Ï´Ù\n"
+" p<Á¤±Ô½Ä> <Á¤±Ô½Ä>¿¡ ¸Â´Â ÁÙ¸¸ ¹øÈ£¸¦ ºÙÀÔ´Ï´Ù\n"
+"\n"
+"<Çü½Ä>Àº ´ÙÀ½Áß ÇϳªÀÔ´Ï´Ù:\n"
+"\n"
+" ln ¿ÞÂÊ Á¤·Ä, ¾Õ¿¡ 0À» ºÙÀÌÁö ¾Ê½À´Ï´Ù\n"
+" rn ¿À¸¥ÂÊ Á¤·Ä, ¾Õ¿¡ 0À» ºÙÀÌÁö ¾Ê½À´Ï´Ù\n"
+" rz ¿À¸¥ÂÊ Á¤·Ä, ¾Õ¿¡ 0À» ºÙÀÔ´Ï´Ù\n"
+"\n"
+
+#: src/nl.c:281
+#, fuzzy, c-format
+msgid "line number overflow"
+msgstr "ÇÊµå °³¼ö°¡ 0ÀÔ´Ï´Ù"
+
+#: src/nl.c:479
+#, fuzzy, c-format
+msgid "invalid header numbering style: %s"
+msgstr "ºÎÀûÀýÇÑ ÇÊµå ¹øÈ£: `%s'"
+
+#: src/nl.c:487
+#, fuzzy, c-format
+msgid "invalid body numbering style: %s"
+msgstr "ºÎÀûÀýÇÑ ¼ýÀÚ"
+
+#: src/nl.c:495
+#, fuzzy, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "Çʵå ÁöÁ¤¿¡ ºÎÀûÀýÇÑ ÆÄÀÏ ¹øÈ£: `%s'"
+
+#: src/nl.c:504
+#, fuzzy, c-format
+msgid "invalid starting line number: %s"
+msgstr "ºÎÀûÀýÇÑ ½ÃÀÛ Çà¹øÈ£: `%s'"
+
+#: src/nl.c:513
+#, fuzzy, c-format
+msgid "invalid line number increment: %s"
+msgstr "ºÎÀûÀýÇÑ Çà¹øÈ£ Áõ°¡: `%s'"
+
+#: src/nl.c:525
+#, fuzzy, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "ºÎÀûÀýÇÑ ºóÁÙÀÇ °³¼ö: `%s'"
+
+#: src/nl.c:539
+#, fuzzy, c-format
+msgid "invalid line number field width: %s"
+msgstr "ºÎÀûÀýÇÑ Çà¹øÈ£ Çʵå Æø: `%s'"
+
+#: src/nl.c:558
+#, fuzzy, c-format
+msgid "invalid line numbering format: %s"
+msgstr "ºÎÀûÀýÇÑ Çà¹øÈ£ Áõ°¡: `%s'"
+
+#: src/nohup.c:57
+#, fuzzy, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<ÆÄÀÏ>]...\n"
+" ȤÀº: %s [<¿É¼Ç>]\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "Àμö°¡ ³Ê¹« ¸¹À½"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, fuzzy, c-format
+msgid "failed to open %s"
+msgstr "%sÀÇ ½Ã°£À» À¯ÁöÇÕ´Ï´Ù"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr ""
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr ""
+
+#: src/od.c:307
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<¿É¼Ç>]... [<ÆÄÀÏ>]...\n"
+" ¶Ç´Â: %s --traditional [<ÆÄÀÏ>] [[+]<¿É¼Â> [[+]<·¹À̺í>]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"<ÆÄÀÏ>ÀÇ ³»¿ëÀ», ±âº»°ªÀ¸·Î´Â 8Áø¼ö ¹ÙÀÌÆ®°ªÀ¸·Î, Ç¥ÁØ Ãâ·Â¿¡ ¾¹´Ï´Ù.\n"
+"<ÆÄÀÏ> ÀÎÀÚ°¡ µÎ °³ ÀÌ»ó ÀÖ´Â °æ¿ì, ±× ÆÄÀϵéÀ» ¿¬°áÇؼ­ ÀÔ·ÂÀ¸·Î\n"
+"ÀÌ¿ëÇÕ´Ï´Ù.\n"
+"<ÆÄÀÏ>ÀÌ ÁÖ¾îÁöÁö ¾Ê°Å³ª, <ÆÄÀÏ>ÀÌ `-'À̸é, Ç¥ÁØ ÀÔ·ÂÀ» ÀнÀ´Ï´Ù.\n"
+"\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr "±ä ¿É¼ÇÀÇ Àμö´Â ªÀº ¿É¼Ç¿¡µµ ²À ÇÊ¿äÇÕ´Ï´Ù.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=<±â¼ö> ÆÄÀÏ ¿ÀÇÁ¼ÂÀ» Ãâ·ÂÇÏ´Â ¹æ¹ýÀ» ÁöÁ¤ÇÕ´Ï´Ù\n"
+" -j, --skip-bytes=<¹ÙÀÌÆ®> ÀÔ·ÂÀÇ Ã¹ ¹ø° <¹ÙÀÌÆ®> ¹ÙÀÌÆ®¸¦ °Ç³Ê ¶Ý´Ï´Ù\n"
+
+#: src/od.c:327
+#, fuzzy
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=<¹ÙÀÌÆ®> ÀԷ¿¡¼­ <¹ÙÀÌÆ®> ¹ÙÀÌÆ®ÀÇ ³»¿ë¸¸À» Ç¥½ÃÇÕ´Ï"
+"´Ù\n"
+" -s, --strings[=<¹ÙÀÌÆ®>] ÃÖ¼Ò <¹ÙÀÌÆ®> ±×·¡ÇÈ ¹®ÀÚÀÇ ¹®ÀÚ¿­À» Ãâ·ÂÇÕ´Ï"
+"´Ù\n"
+" -t, --format=<ŸÀÔ> Ãâ·Â Çü½ÄÀ» ÁöÁ¤ÇÕ´Ï´Ù\n"
+" -v, --output-duplicates µ¿ÀÏÇÑ ÁÙ¿¡ ´ëÇؼ­´Â *¸¦ Ç¥½ÃÇÏÁö ¾Ê½À´Ï´Ù\n"
+" -w, --width[=<¹ÙÀÌÆ®>] Ãâ·ÂÀÇ ÇÑ ÁÙ¿¡ <¹ÙÀÌÆ®> ¹ÙÀÌÆ®¸¦ Ãâ·ÂÇÕ´Ï´Ù\n"
+" --traditional °íÀüÀûÀÎ Çü½ÄÀ¸·Î ÀÎÀÚ¸¦ ¹Þ½À´Ï´Ù\n"
+
+#: src/od.c:337
+#, fuzzy
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"°íÀüÀûÀÎ Çü½Ä ÁöÁ¤ÀÚ¸¦ ¼¯¾î¼­ ¾µ ¼öµµ ÀÖ½À´Ï´Ù. ´ÙÀ½°ú °°½À´Ï´Ù:\n"
+" -a `-t a'¿Í µ¿ÀÏÇÏ°í, ¹®ÀÚ À̸§À¸·Î ÁöÁ¤ÇÕ´Ï´Ù\n"
+" -b `-t oC'¿Í µ¿ÀÏÇÏ°í, 8Áø¼ö ¹ÙÀÌÆ®·Î ÁöÁ¤ÇÕ´Ï´Ù\n"
+" -c `-t c'¿Í µ¿ÀÏÇÏ°í, ASCII ¹®ÀÚ È¤Àº ¹é½½·¡½¬ À̽ºÄÉÀÌÇÁ·Î ÁöÁ¤ÇÕ´Ï´Ù\n"
+" -d `-t u2'¿Í µ¿ÀÏÇÏ°í, 10Áø¼ö unsigned short·Î ÁöÁ¤ÇÕ´Ï´Ù\n"
+
+#: src/od.c:345
+#, fuzzy
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f -t fF¿Í µ¿ÀÏÇÏ°í, ºÎµ¿ ¼Ò¼öÁ¡ ½Ç¼ö¸¦ ¼±ÅÃÇÕ´Ï´Ù\n"
+" -h -t x2¿Í µ¿ÀÏÇÏ°í, 16Áø¼ö short¸¦ ¼±ÅÃÇÕ´Ï´Ù\n"
+" -i -t d2¿Í µ¿ÀÏÇÏ°í, 10Áø¼ö short¸¦ ¼±ÅÃÇÕ´Ï´Ù\n"
+" -l -t d4¿Í µ¿ÀÏÇÏ°í, 10Áø¼ö longÀ» ¼±ÅÃÇÕ´Ï´Ù\n"
+" -o -t o2¿Í µ¿ÀÏÇÏ°í, 8Áø¼ö short¸¦ ¼±ÅÃÇÕ´Ï´Ù\n"
+" -x -t x2¿Í µ¿ÀÏÇÏ°í, 16Áø¼ö short¸¦ ¼±ÅÃÇÕ´Ï´Ù\n"
+
+# 8Áø¼ö suffix¿¡ ´ëÇؼ­ Á» ÀÌ»óÇÏ´Ù
+#: src/od.c:353
+#, fuzzy
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"(µÎ¹ø°¿¡ Çü½ÄÀÌ ¿À´Â) °ú°ÅÀÇ ¹®¹ý¿¡¼­, <¿ÀÇÁ¼Â>Àº `-j <¿ÀÇÁ¼Â>'À» ¶æÇÕ´Ï"
+"´Ù.\n"
+"<·¹À̺í>Àº Ãâ·ÂÇÒ Ã¹ ¹ø° ¹ÙÀÌÆ®ÀÇ ÁÖ¼Ò¸¦ ¶æÇÏ°í, ³»¿ëÀ» Ç¥½ÃÇÒ ¶§¸¶´Ù ±×\n"
+"ÁÖ¼Ò¿¡¼­ Áõ°¡µË´Ï´Ù. <¿ÀÇÁ¼Â>°ú <·¹À̺í>¿¡¼­, 0x³ª 0X Á¢µÎ¾î°¡ ºÙÀ¸¸é\n"
+"16Áø¼ö¸¦ ¸»Çϸç, `.' Á¢¹Ì¾î´Â 8Áø¼ö¸¦ ¸»ÇÏ°í, b´Â 512¸¦ °öÇÑ´Ù´Â ¶æÀÔ´Ï´Ù.\n"
+"\n"
+"<ŸÀÔ>Àº ´ÙÀ½Áß ÇÑ °³ ÀÌ»óÀ¸·Î ¸¸µé¾î Áý´Ï´Ù:\n"
+"\n"
+" a ¹®ÀÚ À̸§\n"
+" c ASCII ¹®ÀÚ È¤Àº ¹é½½·¡½¬ À̽ºÄÉÀÌÇÁ\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[<Å©±â>] ºÎÈ£ÀÖ´Â 10Áø¼ö, °¢ ¼ýÀÚ¸¶´Ù <Å©±â> ¹ÙÀÌÆ®\n"
+" f[<Å©±â>] ºÎµ¿ ¼Ò¼öÁ¡, °¢ ¼ýÀÚ¸¶´Ù <Å©±â> ¹ÙÀÌÆ®\n"
+" o[<Å©±â>] 8Áø¼ö, °¢ ¼ýÀÚ¸¶´Ù <Å©±â> ¹ÙÀÌÆ®\n"
+" u[<Å©±â>] ºÎÈ£¾ø´Â 10Áø¼ö, °¢ ¼ýÀÚ¸¶´Ù <Å©±â> ¹ÙÀÌÆ®\n"
+" x[<Å©±â>] 16Áø¼ö, °¢ ¼ýÀÚ¸¶´Ù <Å©±â> ¹ÙÀÌÆ®\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"<Å©±â>´Â ¼ýÀÚÀÔ´Ï´Ù. doux¿¡¼­ <ŸÀÔ>ÀÇ °æ¿ì, <Å©±â>´Â sizeof(char)ÀÇ °æ¿ì\n"
+"C, sizeof(short)´Â S, sizeof(int)´Â I, sizeof(long)Àº L·Î ¾µ ¼ö ÀÖ½À´Ï´Ù.\n"
+"<ŸÀÔ>ÀÌ fÀÎ °æ¿ì <Å©±â>´Â sizeof(float)ÀÌ µÇ°í, D´Â sizeof(double), LÀº\n"
+"(long double)ÀÌ µË´Ï´Ù.\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"<±â¼ö>´Â ½ÊÁø¼öÀÇ °æ¿ì d, 8Áø¼ö´Â o, 16Áø¼ö´Â x, ¾Æ¹«°Íµµ ¾Æ´Ï¸é nÀÔ´Ï´Ù.\n"
+"<¹ÙÀÌÆ®>´Â 0x³ª 0X¸¦ ºÙÀÎ 16Áø¼öÀ̸ç, b Á¢¹Ì¾î°¡ ºÙÀ¸¸é, 512°¡ °öÇØ Áö°í,\n"
+"k´Â 1024, mÀº 1048576ÀÌ °öÇØ Áý´Ï´Ù. ¾î¶² ŸÀÔÀÌ¶óµµ z Á¢¹Ì¾î¸¦ µ¡ºÙÀ̸é\n"
+"Ãâ·Â ÁÙÀÇ ³¡¿¡ Ç¥½Ã °¡´ÉÇÑ ¹®ÀÚµéÀ» Ç¥½ÃÇÏ°Ô µË´Ï´Ù. "
+
+#: src/od.c:391
+#, fuzzy
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"-stringÀ» ¼ýÀÚ ¾øÀÌ ¾²¸é 3À̶ó°í °¡Á¤ÇÕ´Ï´Ù. --width¸¦ ¼ýÀÚ ¾øÀÌ ¾²¸é 32¸¦\n"
+"°¡Á¤ÇÕ´Ï´Ù. ±âº»°ªÀ¸·Î od´Â `-A -o -t d2 -w 16'À» ¾¹´Ï´Ù.\n"
+
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "ºÎÀûÀýÇÑ Å¸ÀÔÀÇ ¹®ÀÚ¿­ `%s'"
+
+#: src/od.c:693
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"ºÎÀûÀýÇÑ Çü ¹®ÀÚ¿­ `%s';\n"
+"ÀÌ ½Ã½ºÅÛÀº %lu ¹ÙÀÌÆ® Á¤¼öÇüÀ» Á¦°øÇÏÁö ¾Ê½À´Ï´Ù"
+
+#: src/od.c:812
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"ºÎÀûÀýÇÑ Çü ¹®ÀÚ¿­ `%s';\n"
+"ÀÌ ½Ã½ºÅÛÀº %lu ¹ÙÀÌÆ® ºÎµ¿¼Ò¼öÁ¡ÇüÀ» Á¦°øÇÏÁö ¾Ê½À´Ï´Ù"
+
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "ºÎÀûÀýÇÑ ¹®ÀÚ %c' -- Çü ¹®ÀÚ¿­ `%s'"
+
+# combined input ¹ø¿ª °³¼±
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "°áÇÕµÈ ÀÔ·ÂÀÇ ³¡À» ³Ñ¾î°¥ ¼ö´Â ¾ø½À´Ï´Ù."
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+"Ãâ·Â ÁÖ¼Ò ±â¼ö `%c'ÀÌ(°¡) ºÎÀûÀýÇÕ´Ï´Ù; [odxn]ÁßÀÇ ÇϳªÀÇ ¹®ÀÚÀ̾î¾ß ÇÕ´Ï´Ù"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "Àμö¸¦ °Ç³Ê ¶Ü"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "Àμö Á¦ÇÑ"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "ÃÖ¼Ò ¹®ÀÚ¿­ ±æÀÌ"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "±æÀÌ ÁöÁ¤"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "¹®ÀÚ¿­À» ´ýÇÁÇÒ ¶§¿¡´Â ŸÀÔÀÌ ÁöÁ¤µÇ¸é ¾ÈµË´Ï´Ù"
+
+#: src/od.c:1844
+#, fuzzy
+msgid "Compatibility mode supports at most one file."
+msgstr "ȣȯ ¸ðµå¿¡¼­´Â ÃÖ´ë ¼Â±îÁöÀÇ Àμö¸¸À» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù"
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr ""
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "°æ°í: ºÎÀûÀýÇÑ Æø %lu; ´ë½Å %dÀ»(¸¦) »ç¿ëÇÔ"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: Çü½Ä=\"%s\" Æø=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "Ç¥ÁØ ÀÔ·ÂÀÌ ´ÝÇûÀ½"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"¼ø¼­´ë·Î °¢ <ÆÄÀÏ>¿¡¼­ ´ëÀÀµÇ´Â ÁÙµéÀ», TABÀ¸·Î ±¸ºÐµÇ¾î ±¸¼ºÇØ, Ç¥ÁØ\n"
+"Ãâ·ÂÀ¸·Î Ãâ·ÂÇÕ´Ï´Ù.\n"
+"<ÆÄÀÏ>ÀÌ ÁÖ¾îÁöÁö ¾Ê°Å³ª, <ÆÄÀÏ>ÀÌ `-'À̸é, Ç¥ÁØ ÀÔ·ÂÀ» ÀнÀ´Ï´Ù.\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=<¸®½ºÆ®> ÅÇ ´ë½Å¿¡ <¸®½ºÆ®> ¾È¿¡ ÀÖ´Â ¹®ÀÚµéÀ» »ç¿ëÇÕ´Ï"
+"´Ù\n"
+" -s, --serial µ¿½Ã¿¡ ÇÏÁö ¾Ê°í ÇÑ ¹ø¿¡ ÇÑ °³ÀÇ ÆÄÀÏÀ» ¾¹´Ï´Ù\n"
+
+#: src/pathchk.c:99
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>]... [<ÆÄÀÏ>]...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "ºÎÀûÀýÇÑ ¹®ÀÚ %c' -- Çü ¹®ÀÚ¿­ `%s'"
+
+#: src/pathchk.c:282
+#, fuzzy, c-format
+msgid "empty file name"
+msgstr "ÀÏ¹Ý ºó ÆÄÀÏ"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr ""
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr ""
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr ""
+
+#: src/pinky.c:353
+#, fuzzy, c-format
+msgid "Directory: "
+msgstr "µð·ºÅ丮"
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr ""
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr ""
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr ""
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr ""
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr ""
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr ""
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr ""
+
+#: src/pinky.c:427
+msgid "When"
+msgstr ""
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr ""
+
+#: src/pinky.c:510
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>]... [<ÆÄÀÏ>]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+
+#: src/pinky.c:612
+#, fuzzy, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr "--stringÀ» »ç¿ëÇÒ ¶© ÆÄÀÏÀÌ ÁöÁ¤µÉ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr ""
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "`--pages=<ù_ÆäÀÌÁö>[:<³¡_ÆäÀÌÁö>]' Àμö°¡ ¾ø½À´Ï´Ù"
+
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "ºÎÀûÀýÇÑ Å¸ÀÔÀÇ ¹®ÀÚ¿­ `%s'"
+
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "`-l ÆäÀÌÁö_±æÀÌ' ºÎÀûÀýÇÑ ÇàÀÇ °³¼ö: `%s'"
+
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "`-N ¹øÈ£' ºÎÀûÀýÇÑ ½ÃÀÛ Çà ¹øÈ£: `%s'"
+
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "`-o ¿©¹é' ºÎÀûÀýÇÑ Çà ¿É¼Â: `%s'"
+
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-l ÆäÀÌÁö_Æø' ºÎÀûÀýÇÑ ¹®ÀÚ °³¼ö: `%s'"
+
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-l ÆäÀÌÁö_Æø' ºÎÀûÀýÇÑ ¹®ÀÚ °³¼ö: `%s'"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "º´·Ä·Î ÀμâÇÒ ¶§¿¡´Â ¿­ÀÇ °³¼ö¸¦ ÁöÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù."
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "º´·Ä Àμâ¿Í ¿­¿¡ °ÉÃļ­ ÀμâÇÏ´Â °ÍÀ» µ¿½Ã¿¡ ÁöÁ¤ÇÒ ¼ö´Â ¾ø½À´Ï´Ù>"
+
+#: src/pr.c:1202
+#, fuzzy, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "`-%c' ÀÎÀÚ¿¡¼­ ºÒÇÊ¿äÇÑ ¹®ÀÚ È¤Àº ºÎÀûÀýÇÑ ¼ýÀÚ°¡ µé¾î ÀÖ½À´Ï´Ù: `%s'"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "ÆäÀÌÁö ÆøÀÌ ³Ê¹« Á¼À½"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2406
+#, fuzzy, c-format
+msgid "Page number overflow"
+msgstr "ÇÊµå °³¼ö°¡ 0ÀÔ´Ï´Ù"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+"<ÆÄÀÏ>(µé)À» ÆäÀÌÁöº°·Î ³ª´©°Å³ª ¿©·¯ ¿­·Î ³ª´©¾î ÀμâÇϱâ ÁÁµµ·Ï ¸¸µì´Ï´Ù.\n"
+"\n"
+
+#: src/pr.c:2779
+#, fuzzy
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +<ù_ÆäÀÌÁö>[:<³¡_ÆäÀÌÁö>], --pages=<ù_ÆäÀÌÁö>[:<³¡_ÆäÀÌÁö>]\n"
+" <ù_ÆäÀÌÁö>[<³¡_ÆäÀÌÁö]¿¡¼­ Àμ⸦ ½ÃÀÛÇÕ´Ï´Ù[³¡³À´Ï"
+"´Ù].\n"
+" -<¿­>, --columns=<¿­>\n"
+" <¿­> ¿­ÀÇ Ãâ·Â¹°À» ¸¸µé¾î ±× ¿­µéÀ» ÆäÀÌÁö ´ÜÀ§·Î\n"
+" ÀμâÇÕ´Ï´Ù (-a ¿É¼ÇÀÌ »ç¿ëµÇÁö ¾Ê´Â´Ù¸é). ÆäÀÌÁö¿¡¼­ \n"
+" °¢°¢ÀÇ ¿­¿¡ µé¾î ÀÖ´Â ÁÙ ¼ö°¡ °°°Ô À¯ÁöÇÕ´Ï´Ù.\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across ÇÑ ÁÙ ÇÑ ÁÙÀ» ¿©·¯ ¿­¿¡ °ÉÃļ­ ÀμâÇÕ´Ï´Ù. -<¿­> ¿É¼Ç"
+"°ú\n"
+" °°ÀÌ ¾¹´Ï´Ù.\n"
+" -c, --show-control-chars\n"
+" (^G¿Í °°ÀÌ) ^ Ç¥½Ã¸¦ ¾²Áö ¾Ê°í 8Áø¼ö ¹é½½·¡½¬ Ç¥½Ã¸¦ ¾¹´Ï"
+"´Ù\n"
+" -d, --double-space\n"
+" ÇÑ ÁÙ¾¿ ¶ç¿ö¼­ ÀμâÇÕ´Ï´Ù\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=<Çü½Ä>\n"
+" À­´ÜÀÇ ³¯Â¥ Ç¥½Ã¸¦ <Çü½Ä>´ë·Î ÇÕ´Ï´Ù\n"
+" -e[<¹®ÀÚ>[<Æø>]], --expand-tabs[=<¹®ÀÚ>[<Æø>]]\n"
+" ÀÔ·ÂµÈ <¹®ÀÚ> ¹®ÀÚ¸¦ <Æø>°³ÀÇ ÅÇ(8)À¸·Î ¹Ù²ß´Ï´Ù.\n"
+" -F, -f, --form-feed\n"
+" ÆäÀÌÁö¸¦ ±¸ºÐÇÏ´Â µ¥ newline ´ë½Å form feed¸¦ ¾¹´Ï´Ù\n"
+" (-F´Â 3ÁÙÀÇ ÆäÀÌÁö Çì´õ, -F ¾øÀÌ´Â 5ÁÙÀÇ Çì´õ¿Í \n"
+" trailer)\n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h <À­´Ü>, --header=<À­´Ü>\n"
+" ÆäÀÌÁö À­´Ü¿¡ ÆÄÀÏÀ̸§ ´ë½Å¿¡ °¡¿îµ¥ Á¤·ÄµÈ <À­´Ü>À» ¾¹´Ï"
+"´Ù\n"
+" -h \"\"Àº ºó ÁÙÀ» ¾¹´Ï´Ù. -h\"\"¶ó°í ¾²Áö ¸¶½Ê½Ã¿À.\n"
+" -i[<¹®ÀÚ>[<Æø>]], --output-tabs[=<¹®ÀÚ>[<Æø>]]\n"
+" °ø¹éÀ» ÅÇ <Æø>(8)¸¸Å­ÀÇ <¹®ÀÚ>·Î ¹Ù²ß´Ï´Ù\n"
+" -J, --join-lines Àüü ÁÙÀ» ÇÕĨ´Ï´Ù. -W ÁÙ À߶󳻱⸦ ¾²Áö ¾Êµµ·Ï ¸¸µé"
+"°í, ¿­ \n"
+" Á¤·Äµµ ¾ø½À´Ï´Ù. --sep-string=[<¹®ÀÚ¿­>]Àº ±¸ºÐÀÚ¸¦ ÁöÁ¤"
+"ÇÕ´Ï´Ù\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l <ÆäÀÌÁö_±æÀÌ>, --length=<ÆäÀÌÁö_±æÀÌ>\n"
+" ÆäÀÌÁö ±æÀ̸¦ <ÆäÀÌÁö_±æÀÌ> (66) ÁÙ·Î ¸¸µì´Ï´Ù\n"
+" (ÁÙ ¼öÀÇ ±âº»°ªÀº 56ÀÌ°í, -F ¿É¼ÇÀ» ¾²¸é 63ÀÔ´Ï´Ù)\n"
+" -m, --merge ¸ðµç ÆÄÀÏÀ» º´·ÄÀûÀ¸·Î, °¢ ¿­¿¡ Çϳª¾¿ ¾¹´Ï´Ù. ³Ñ¾î°¡´Â\n"
+" ÁÙÀ» ÀÚ¸£Áö¸¸, -J ¿É¼ÇÀ¸·Î ¿©·¯ ÁÙÀ» ÇÕÃļ­ ÁÙÀ» ä¿ó´Ï"
+"´Ù\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[<±¸ºÐ>[<¼ýÀÚ>]], --number-lines[=<±¸ºÐ>[<¼ýÀÚ>]]\n"
+" <¼ýÀÚ>°³ÀÇ ¼ýÀÚ, ´ÙÀ½¿¡ <±¸ºÐ>(ÅÇ)À¸·Î ÁÙ¸¶´Ù ¹øÈ£¸¦\n"
+" ¸Å±é´Ï´Ù. ±âº»ÀûÀ¸·Î 1¹ø° ÁÙºÎÅÍ ¼¼¾î ³ª°©´Ï´Ù.\n"
+" -N <°³¼ö>, --first-line-number=<°³¼ö>\n"
+" ù ¹ø° ÆäÀÌÁöÀÇ Ã¹ ¹ø° ÁÙÀ» <°³¼ö>·Î Çؼ­ ÁÙ ¹øÈ£¸¦\n"
+" ¼¼¾î ³ª°©´Ï´Ù (+<ù_ÆäÀÌÁö> Âü°í)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o <¿©¹é>, --indent=<¿©¹é>\n"
+" <¿©¹é>(0)°³ÀÇ °ø¹é¹®ÀÚ¸¦ °¢ ÁÙ ¾Õ¿¡ ¾¹´Ï´Ù. -w³ª -W¿¡"
+"´Â\n"
+" ¿µÇâÀ» ÁÖÁö ¾ÊÀ¸¸ç, <¿©¹é>Àº <ÆäÀÌÁö_Æø>¿¡ ´õÇØÁý´Ï´Ù\n"
+" -r, --no-file-warnings\n"
+" ÆÄÀÏÀ» ¿­ ¼ö ¾øÀ» ¶§ °æ°í¸¦ »ý·«ÇÕ´Ï´Ù.\n"
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[<¹®ÀÚ>],--separator[=<¹®ÀÚ>]\n"
+" °¢ ¿­À» ÇÑ °³ÀÇ <¹®ÀÚ>·Î ±¸ºÐÇÕ´Ï´Ù. <¹®ÀÚ>ÀÇ ±âº»°ª"
+"˼ \n"
+" -w°¡ ¾øÀ¸¸é ÅÇ ¹®ÀÚÀÌ°í, -w°¡ ÀÖÀ¸¸é ±¸ºÐ¹®ÀÚ°¡ ¾ø½À´Ï"
+"´Ù.\n"
+" -s[<¹®ÀÚ>]´Â ¸ðµç 3¿­ ¿É¼ÇµéÀÇ (-<¿­>|-a -<¿­>|-m) \n"
+" ³Ñ¾î°¡´Â ÁÙ ÀÚ¸£±â ±â´ÉÀ» (-w°¡ ¾øÀ¸¸é) ²ü´Ï´Ù.\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -S<¹®ÀÚ¿­>, --sep-string[=<¹®ÀÚ¿­>]\n"
+
+#: src/pr.c:2846
+#, fuzzy
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" ¿­µéÀ» -S ¾øÀÌ <¹®ÀÚ¿­>·Î ±¸ºÐÇÕ´Ï´Ù. \n"
+" ±âº» ±¸ºÐÀÚ´Â ÅÇ ¹®ÀÚ¿Í -JÀÌ°í ±× ¿ÜÀÇ °æ¿ì °ø¹é ¹®ÀÚÀÔ´Ï"
+"´Ù\n"
+" (-S\" \"¿Í µ¿ÀÏ). ¿­ °ü·Ã ¿É¼Ç¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù\n"
+" -t, --omit-header ÆäÀÌÁö Çì´õ¿Í Æ®·¹ÀÏ·¯¸¦ »ý·«ÇÕ´Ï´Ù\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" ÆäÀÌÁö Çì´õ¿Í Æ®·¹ÀÏ·¯¸¦ »ý·«ÇÏ°í, ÀÔ·Â ÆÄÀÏ¿¡ µé¾î ÀÖ"
+"´Â\n"
+" ÆûÇǵ忡 ÀÇÇÑ ÆäÀÌÁö ±¸ºÐµéÀ» ¾ø¾Û´Ï´Ù\n"
+" -v, --show-nonprinting\n"
+" 8Áø¼ö ¹é½½·¡½¬ Ç¥½Ã¸¦ »ç¿ëÇÕ´Ï´Ù\n"
+" -w <ÆäÀÌÁö_Æø>, --width=<ÆäÀÌÁö_Æø>\n"
+" ÅؽºÆ®-¿­ Ãâ·Â¿¡¼­, -s[<¹®ÀÚ>]¸¦ ¾²Áö ¾Ê¾ÒÀ» °æ¿ì¿¡\n"
+" ÆäÀÌÁö ÆøÀ» <ÆäÀÌÁö_Æø>(72)À¸·Î ÇÕ´Ï´Ù\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W <ÆäÀÌÁö_Æø>, --page-width=<ÆäÀÌÁö_Æø>\n"
+" ÆäÀÌÁöÀÌ ÆøÀ» <ÆäÀÌÁö_Æø>(72)À¸·Î ¸ÂÃä´Ï´Ù. ³Ñ¾î°¡´Â \n"
+" ÁÙÀº Àß·ÁÁö°í, -J ¿É¼Ç°ú °°Àº È¿°ú°¡ ³ª¿À´Â °ÍÀ» Á¦¿ÜÇÏ"
+"¸é, \n"
+" -S³ª -s¿¡ ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù.\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"nn <= 10 À̰ųª -F ¿É¼ÇÀ» ¾²°í n <= 3 ÀÎ °æ¿ì -l ¿É¼ÇÀº -T¸¦ Æ÷ÇÔÇÕ´Ï´Ù. \n"
+"<ÆÄÀÏ>ÀÌ ÁÖ¾îÁöÁö ¾Ê°Å³ª, <ÆÄÀÏ>ÀÌ `-'À̸é, Ç¥ÁØ ÀÔ·ÂÀ» ÀнÀ´Ï´Ù.\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+
+#: src/printf.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<ÆÄÀÏ>]...\n"
+" ȤÀº: %s [<¿É¼Ç>]\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr ""
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr ""
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr ""
+
+#: src/printf.c:289
+#, fuzzy, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "ºÎÀûÀýÇÑ ¹®ÀÚ Å¬·¡½º `%s'"
+
+#: src/printf.c:550
+#, fuzzy, c-format
+msgid "invalid field width: %s"
+msgstr "ºÎÀûÀýÇÑ Æø: `%s'"
+
+#: src/printf.c:585
+#, fuzzy, c-format
+msgid "invalid precision: %s"
+msgstr "ºÎÀûÀýÇÑ Æø ¿É¼Ç `%s'"
+
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%s: ºÎÀûÀýÇÑ Çʵå ÁöÁ¤ `%s'"
+
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr ""
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr ""
+
+#: src/ptx.c:422
+#, fuzzy, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (Á¤±Ô½Ä `%s'¿¡ ´ëÇØ)"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<¿É¼Ç>]... [<ÀÔ·Â>]... (-G ¾øÀÌ)\n"
+" ȤÀº: %s -G [<¿É¼Ç>]... [<ÀÔ·Â> [<Ãâ·Â>]]\n"
+"\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"ÀÔ·Â ÆÄÀÏ¿¡ µé¾î ÀÖ´Â ´Ü¾îµéÀÇ permuated À妽º¸¦ ±× ¹®¸Æ°ú ÇÔ²² Ãâ·ÂÇÕ´Ï´Ù\n"
+"\n"
+
+#: src/ptx.c:1894
+#, fuzzy
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference ÀÚµ¿À¸·Î ¸¸µç ÂüÁ¶¸¦ Ãâ·ÂÇÕ´Ï´Ù\n"
+" -C, --copyright ÀúÀ۱ǰú º¹»ç Á¶°ÇÀ» Ç¥½ÃÇմϤ§\n"
+" -G, --traditional System V `ptx'¿Í ´õ ºñ½ÁÇÏ°Ô µ¿ÀÛÇÕ´Ï´Ù\n"
+" -F, --flag-truncation=<¹®ÀÚ¿­> ³Ñ¾î°£ ÁÙÀ» ÀÚ¸¦¶§ <¹®ÀÚ¿­>·Î Ç¥½ÃÇÕ´Ï´Ù\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=<¹®ÀÚ¿­> `xx' ´ë½Å¿¡ »ç¿ëÇÒ ¸ÅÅ©·Î À̸§\n"
+" -O, --format=roff Ãâ·ÂÀ» roff·Î ÇÕ´Ï´Ù\n"
+" -R, --right-side-refs ÂüÁ¶¸¦ ¿À¸¥ ÂÊ¿¡ ¾¹´Ï´Ù. -wÀÇ °æ¿ì È¿°ú ¾ø"
+"À½\n"
+" -S, --sentence-regexp=<Á¤±Ô½Ä> ÁÙÀÇ ³¡À̳ª ¹®ÀÚÀÇ ³¡À» ³ªÅ¸³»´Â Á¤±Ô½Ä\n"
+" -T, --format=tex Ãâ·ÂÀ» TeXÀ¸·Î ÇÕ´Ï´Ù\n"
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=<Á¤±Ô½Ä> Å°¿öµå¸¦ ±¸ºÐÇÏ´Â µ¥ <Á¤±Ô½Ä>À» ¾¹´Ï´Ù\n"
+" -b, --break-file=<ÆÄÀÏ> ÀÌ <ÆÄÀÏ>¿¡ ´Ü¾î ±¸ºÐ ¹®ÀÚ°¡ µé¾î ÀÖ½À´Ï´Ù\n"
+" -f, --ignore-case Á¤·Ä¿¡¼­ ¼Ò¹®ÀÚ¿Í ´ë¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê½À´Ï"
+"´Ù\n"
+" -g, --gap-size=<°³¼ö> Ãâ·ÂÇÒ Çʵ忡¼­ ¿­ »çÀÌÀÇ °£°Ý\n"
+" -i, --ignore-file=<ÆÄÀÏ> ÀÌ <ÆÄÀÏ>¿¡ µé¾î ÀÖ´Â ´Ü¾îµéÀ» ¹«½ÃÇÕ´Ï´Ù\n"
+" -o, --only-file=<ÆÄÀÏ> ÀÌ <ÆÄÀÏ>¿¡ µé¾î ÀÖ´Â ´Ü¾îµé¸¸ ÀнÀ´Ï´Ù\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references °¢ ÁÙÀÇ Ã¹ ¹ø° Çʵ尡 ÂüÁ¶ÀÔ´Ï´Ù\n"
+" -t, --typeset-mode - ±¸ÇöµÇÁö ¾Ê¾ÒÀ½ -\n"
+" -w, --width=<°³¼ö> Ãâ·ÂÇÒ ¿­ÀÇ Æø (ÂüÁ¶´Â Á¦¿ÜÇÏ°í)\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"<ÆÄÀÏ>ÀÌ ÁÖ¾îÁöÁö ¾Ê°Å³ª, <ÆÄÀÏ>ÀÌ `-'À̸é, Ç¥ÁØ ÀÔ·ÂÀ» ÀнÀ´Ï´Ù. `-F /'°¡ "
+"±âº»°ªÀÔ´Ï´Ù.\n"
+
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "ºÎÀûÀýÇÑ Æø: `%s'"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr ""
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+
+#: src/pwd.c:160
+#, fuzzy, c-format
+msgid "failed to chdir to %s"
+msgstr "%sÀÇ ±×·ìÀ» %s·Î ¹Ù²Ù´Âµ¥ ½ÇÆÐÇß½À´Ï´Ù\n"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "%sÀÇ ½Ã°£À» À¯ÁöÇÕ´Ï´Ù"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, fuzzy, c-format
+msgid "ignoring non-option arguments"
+msgstr "¿É¼Ç¾Æ´Ñ Àμö°¡ ³Ê¹« ¸¹À½"
+
+#: src/readlink.c:67
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>]... [<ÆÄÀÏ>]...\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "%s µð·ºÅ丮·Î chdirÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, fuzzy, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"%s: <°æ°í>: ¼øȯ µð·ºÅ丮 ±¸Á¶.\n"
+"ÀÌ°ÍÀº ´ëºÎºÐÀÇ °æ¿ì ÆÄÀϽýºÅÛÀÌ ¼Õ»óµÇ¾ú´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù.\n"
+"**½Ã½ºÅÛ °ü¸®ÀÚ¿¡°Ô ¾Ë¸®½Ê½Ã¿À**\n"
+"´ÙÀ½ µÎ µð·ºÅ丮°¡ °°Àº inode ¹øÈ£¸¦ °¡Á³½À´Ï´Ù:\n"
+
+#: src/remove.c:854
+#, fuzzy, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/remove.c:855
+#, fuzzy, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s µð·ºÅ丮·Î chdirÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/remove.c:865
+#, fuzzy, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: ¾²±â º¸È£µÈ `%s'ÆÄÀÏÀ» Áö¿ï±î¿ä? "
+
+#: src/remove.c:866
+#, fuzzy, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: `%s'¸¦ Áö¿ï±î¿ä? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, fuzzy, c-format
+msgid "removed directory: %s\n"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "%s µð·ºÅ丮·Î chdirÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, fuzzy, c-format
+msgid "cannot remove directory %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/remove.c:1450
+#, fuzzy, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "%s µð·ºÅ丮·Î chdirÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/remove.c:1558
+#, fuzzy, c-format
+msgid "cannot restore current working directory"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#: src/rm.c:160 src/touch.c:233
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>]... [<ÆÄÀÏ>]...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: `%s'¸¦ Áö¿ï±î¿ä? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, fuzzy, c-format
+msgid "removing directory, %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/rmdir.c:140
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>]... [<ÆÄÀÏ>]...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+
+#: src/rmdir.c:148
+#, fuzzy
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+"ºñ¾î ÀÖ´Ù¸é µð·ºÅ丮¸¦ Áö¿ó´Ï´Ù.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" µð·ºÅ丮¸¦ ¿ÏÀüÈ÷ ºñ¿ìÁö ¸øÇؼ­ »ý±â´Â ½ÇÆдÂ\n"
+" ¹«½ÃÇÕ´Ï´Ù\n"
+" -p, --parents ºñ¾îÀÖ´Â °æ¿ì ºÎ¸ð µð·ºÅ丮¸¦ Áö¿ó´Ï´Ù\n"
+" ¿¹) `rmdir -p a/b/c'´Â `rmdir a/b/c a/b a'°ú ºñ½ÁÇÕ´Ï´Ù\n"
+" -v, --verbose 󸮵Ǵ ¸ðµç µð·ºÅ丮¿¡ ´ëÇØ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÕ´Ï´Ù\n"
+" --help ÀÌ µµ¿ò¸»À» Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+" --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+
+#: src/seq.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<¿É¼Ç>]... [<ÀÔ·Â>]... (-G ¾øÀÌ)\n"
+" ȤÀº: %s -G [<¿É¼Ç>]... [<ÀÔ·Â> [<Ãâ·Â>]]\n"
+"\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+
+#: src/seq.c:88
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, fuzzy, c-format
+msgid "invalid floating point argument: %s"
+msgstr "ºÎÀûÀýÇÑ ½ÃÀÛ Çà¹øÈ£: `%s'"
+
+#: src/seq.c:342
+#, fuzzy, c-format
+msgid "invalid format string: %s"
+msgstr "ºÎÀûÀýÇÑ Å¸ÀÔÀÇ ¹®ÀÚ¿­ `%s'"
+
+#: src/seq.c:364
+#, fuzzy, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr "¹®ÀÚ¿­À» ´ýÇÁÇÒ ¶§¿¡´Â ŸÀÔÀÌ ÁöÁ¤µÇ¸é ¾ÈµË´Ï´Ù"
+
+#: src/setuidgid.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<ÆÄÀÏ>]...\n"
+" ȤÀº: %s [<¿É¼Ç>]\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr ""
+
+#: src/setuidgid.c:109
+#, fuzzy, c-format
+msgid "cannot set supplemental group"
+msgstr "null ±×·ìÀ¸·Î ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "»ç¿ëÀÚ¿Í ±×·ìÀ» ¸ðµÎ »ý·«ÇÒ ¼ö´Â ¾ø½À´Ï´Ù"
+
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "»ç¿ëÀÚ¿Í ±×·ìÀ» ¸ðµÎ »ý·«ÇÒ ¼ö´Â ¾ø½À´Ï´Ù"
+
+#: src/shred.c:165
+#, fuzzy, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>] [<ÆÄÀÏ>]...\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+
+#: src/shred.c:303
+#, fuzzy, c-format
+msgid "%s: fdatasync failed"
+msgstr "stat ½ÇÆÐ"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr ""
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s: µ¹¾Æ°¥ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: ÁøÇàÁß %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, fuzzy, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s¿¡ ¾²´Â µµÁß ¿À·ù ¹ß»ý"
+
+#: src/shred.c:478
+#, fuzzy, c-format
+msgid "%s: lseek failed"
+msgstr "ÆÄÀÏ ´Ý±â ½ÇÆÐ"
+
+#: src/shred.c:489
+#, fuzzy, c-format
+msgid "%s: file too large"
+msgstr "%s: ÆÄÀÏÀÌ ³Ê¹« ±é´Ï´Ù"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: ÁøÇàÁß %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, fuzzy, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: ÁøÇàÁß %lu/%lu (%s)...%s/%s"
+
+#: src/shred.c:776
+#, fuzzy, c-format
+msgid "%s: fstat failed"
+msgstr "stat ½ÇÆÐ"
+
+#: src/shred.c:787
+#, fuzzy, c-format
+msgid "%s: invalid file type"
+msgstr "%s: ºÎÀûÀýÇÑ Á¢¹Ì¾î ±æÀÌ"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: ÆÄÀÏÀÌ À½ÀÇ Å©±â¸¦ °®½À´Ï´Ù"
+
+#: src/shred.c:873
+#, fuzzy, c-format
+msgid "%s: error truncating"
+msgstr "%s: ÆÄÀÏÀÌ Àß·ÈÀ½"
+
+#: src/shred.c:889
+#, fuzzy, c-format
+msgid "%s: fcntl failed"
+msgstr "stat ½ÇÆÐ"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s: ¾²±â Àü¿ë ÆÄÀÏ µð½ºÅ©¸³ÅÍ´Â ÆıâÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: »èÁ¦Áß"
+
+#: src/shred.c:996
+#, fuzzy, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: Àб⠿À·ù"
+
+#: src/shred.c:1018
+#, fuzzy, c-format
+msgid "%s: failed to remove"
+msgstr "%s: ÆÄÀÏÀÌ ³Ê¹« ±é´Ï´Ù"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: »èÁ¦µÇ¾úÀ½"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, fuzzy, c-format
+msgid "%s: failed to close"
+msgstr "%s: ÆÄÀÏÀÌ ³Ê¹« ±é´Ï´Ù"
+
+#: src/shred.c:1065
+#, fuzzy, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: ÆÄÀÏÀÌ ³Ê¹« ±é´Ï´Ù"
+
+#: src/shred.c:1130
+#, fuzzy, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: ºÎÀûÀýÇÑ ÃÊ"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, c-format
+msgid "multiple random sources specified"
+msgstr ""
+
+#: src/shred.c:1153
+#, fuzzy, c-format
+msgid "%s: invalid file size"
+msgstr "%s: ºÎÀûÀýÇÑ Á¢¹Ì¾î ±æÀÌ"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<¿É¼Ç>]... [<ÀÔ·Â>]... (-G ¾øÀÌ)\n"
+" ȤÀº: %s -G [<¿É¼Ç>]... [<ÀÔ·Â> [<Ãâ·Â>]]\n"
+"\n"
+
+#: src/shuf.c:57
+#, fuzzy
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"°¢ <ÆÄÀÏ>¿¡¼­ ¼±ÅÃÇÑ Áٵ鸸 Ç¥ÁØ Ãâ·Â¿¡ Ç¥½ÃÇÕ´Ï´Ù.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, c-format
+msgid "multiple -i options specified"
+msgstr ""
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "ºÎÀûÀýÇÑ ¼ýÀÚ"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "ºÎÀûÀýÇÑ Æø: `%s'"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, fuzzy, c-format
+msgid "multiple output files specified"
+msgstr "%s¸¦ Áö¿ó´Ï´Ù\n"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "%s¿¡ ´ëÇÑ ÆÄÀÏ Æ÷ÀÎÅ͸¦ ÀçÀ§Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr "ºÒÇÊ¿äÇÑ ÇÇ¿¬»êÀÚ `%s'"
+
+#: src/sleep.c:47
+#, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "ºÎÀûÀýÇÑ ÇÊµå ¹øÈ£: `%s'"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, fuzzy, c-format
+msgid "cannot read realtime clock"
+msgstr "¸µÅ© `%s'¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/sort.c:310
+#, fuzzy
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"¸ðµç <ÆÄÀÏ>(µé)À» ¿¬°áÇؼ­ Á¤·ÄÇÑ °á°ú¸¦ Ç¥ÁØ Ãâ·Â¿¡ ¾¹´Ï´Ù.\n"
+"\n"
+"Á¤·Ä ¿É¼ÇÀº ´ÙÀ½°ú °°½À´Ï´Ù:\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+#, fuzzy
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks ¾Õ¿¡ ³ª¿À´Â °ø¹éÀ» ¹«½ÃÇÕ´Ï´Ù\n"
+" -d, --dictionary-order °ø¹é, ¾ËÆĺª, ¼ýÀÚ¸¸À» °í·ÁÇÕ´Ï´Ù\n"
+" -f, --ignore-case ¼Ò¹®ÀÚ¿Í ´ë¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê½À´Ï´Ù\n"
+
+#: src/sort.c:326
+#, fuzzy
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort ÀϹÝÀûÀÎ ¼öÄ¡ °ª¿¡ µû¶ó ºñ±³ÇÕ´Ï´Ù\n"
+" -i, --ignore-nonprinting Ç¥½Ã °¡´ÉÇÑ ¹®ÀÚ¸¸ °í·ÁÇÕ´Ï´Ù\n"
+" -M, --month-sort (±×¿Ü) < `JAN' < ... < `DEC' ÀÇ ¼ø¼­´ë·Î ºñ±³\n"
+" -n, --numeric-sort ¹®ÀÚ¿­ÀÇ ¼öÄ¡ °ª¿¡ µû¶ó ºñ±³ÇÕ´Ï´Ù\n"
+" -r, --reverse ºñ±³ÀÇ °á°ú¸¦ µÚ¹Ù²ß´Ï´Ù\n"
+"\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+# last-resort comparison?
+#: src/sort.c:346
+#, fuzzy
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+"±× ¿Ü ¿É¼Ç:\n"
+"\n"
+" -c, --check ÀÔ·ÂÀÌ Á¤·ÄµÇ¾ú´ÂÁö °Ë»çÇÕ´Ï´Ù; Á¤·ÄÇÏÁö´Â ¾Ê½À´Ï"
+"´Ù\n"
+" -k, --key=POS1[,POS2] POS1¿¡¼­ Å°¸¦ ½ÃÀÛÇÏ°í, POS2¿¡¼­ ³¡³À´Ï´Ù (±âÁØ "
+"1)\n"
+" -m, --merge ÀÌ¹Ì Á¤·ÄµÈ ÆÄÀϵéÀ» ÇÕĨ´Ï´Ù; Á¤·ÄÇÏÁö´Â ¾Ê½À´Ï"
+"´Ù\n"
+" -o, --output=<ÆÄÀÏ> °á°ú¸¦ Ç¥ÁØ Ãâ·Â ´ë½Å¿¡ <ÆÄÀÏ>¿¡ ¾¹´Ï´Ù\n"
+" -s, --stable ¸¶Áö¸·-ÀçÁ¤·Ä ºñ±³°úÁ¤À» ¾ø¾Ö Á¤·ÄÀ» ¾ÈÁ¤È­ÇÕ´Ï"
+"´Ù\n"
+" -S, --buffer-size=<Å©±â> ¸ÞÀÎ ¸Þ¸ð¸® ¹öÆÛ¸¦ <Å©±â>¸¸Å­ ¾¹´Ï´Ù\n"
+
+#: src/sort.c:351
+#, fuzzy, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=<±¸ºÐ> °ø¹éÀ» (ºóÄ­À¸·Î ¹Ù²Ù´Â ´ë½Å) <±¸ºÐ>À¸·Î ¹Ù"
+"²Þ\n"
+" -T, --temporary-directory=DIR Àӽà ÆÄÀÏ¿¡ $TMPDIRÀ̳ª %s ´ë½Å <µð·ºÅ丮>"
+"¸¦\n"
+" »ç¿ëÇÕ´Ï´Ù. ¿É¼Ç ¿©·¯ °³´Â ¿©·¯ °³ µð·ºÅ丮¸¦ "
+"ÁöÁ¤\n"
+" -u, --unique -c¿Í °°ÀÌ »ç¿ë: ±× ¿Ü¿¡´Â ¾ö°ÝÇÑ ¼ø¼­¸¦ °Ë»çÇÕ´Ï"
+"´Ù:\n"
+" µ¿ÀÏÇÑ °ÍÁß Ã¹ ¹ø°¸¸ Ãâ·ÂÇÕ´Ï´Ù\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr " -z, --zero-terminated ÁÙÀÇ ³¡¿¡ ÁÙ¹Ù²Þ ´ë½Å ¹ÙÀÌÆ® 0À» ¾¹´Ï´Ù\n"
+
+#: src/sort.c:363
+#, fuzzy
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"POS´Â `F[.C][OPTS]'ÀÔ´Ï´Ù. ¿©±â¼­ F´Â ÇÊµå ¹øÈ£ÀÌ°í C´Â ÇʵåÀÇ ¹®ÀÚ \n"
+"À§Ä¡ÀÔ´Ï´Ù. OPTS´Â ÇÑ °³ ȤÀº ±× ÀÌ»óÀÇ ÇѱÛÀÚ·Î µÈ ¼ø¼­ ÁöÁ¤ ¿É¼ÇÀ¸·Î,\n"
+"ÇØ´ç Å°¿¡ ´ëÇÑ ±âº» ¼ø¼­ ¿É¼Ç¿¡ ¿ì¼±ÇÕ´Ï´Ù. Å°°¡ ÁÖ¾îÁöÁö ¾ÊÀ¸¸é, Àüü\n"
+"ÁÙÀ» Å°·Î Ãë±ÞÇÕ´Ï´Ù.\n"
+"\n"
+"<Å©±â> ´ÙÀ½¿¡´Â ´ÙÀ½ °öÇϱâ Á¢¹Ì¾î°¡ µû¶ó¿Ã ¼ö ÀÖ½À´Ï´Ù:\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"%% ¹®ÀÚ´Â ¸Þ¸ð¸®ÀÇ 1ÆÛ¼¾Æ®, b´Â 1, k´Â 1024 (±âº»°ª), ±× ¿Ü¿¡ M, G, T, P, E, "
+"Z, Y.\n"
+"\n"
+"<ÆÄÀÏ>ÀÌ ÁÖ¾îÁöÁö ¾Ê°Å³ª, <ÆÄÀÏ>ÀÌ `-'À̸é, Ç¥ÁØ ÀÔ·ÂÀ» ÀнÀ´Ï´Ù.\n"
+"\n"
+"*** °æ°í ***\n"
+"ȯ°æº¯¼ö¿¡ ÁöÁ¤µÈ ·ÎÄÉÀÏÀÌ Á¤·Ä ¼ø¼­¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.\n"
+"¹ÙÀÌÆ®°ª¿¡ µû¶ó Á¤·ÄµÈ ÀüÅëÀûÀÎ Á¤·Ä ¹æ½ÄÀ» ¿øÇÑ´Ù¸é \"LC_ALL=C\"·Î\n"
+"ȯ°æº¯¼ö¸¦ ¼¼ÆÃÇϽʽÿÀ\n"
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "%s¿¡ ¾²´Â µµÁß ¿À·ù ¹ß»ý"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "Àӽà ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "ÆÄÀÏ ¿­±â ½ÇÆÐ"
+
+#: src/sort.c:758
+#, fuzzy
+msgid "fflush failed"
+msgstr "ÆÄÀÏ ´Ý±â ½ÇÆÐ"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "ÆÄÀÏ ´Ý±â ½ÇÆÐ"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "ÆÄÀÏ ¿­±â ½ÇÆÐ"
+
+#: src/sort.c:871
+#, fuzzy, c-format
+msgid "couldn't execute %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "Àӽà ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "Àӽà ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/sort.c:920
+#, fuzzy, c-format
+msgid "couldn't execute %s -d"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "ÆÄÀÏ ¾²±â ½ÇÆÐ"
+
+#: src/sort.c:975
+#, fuzzy, c-format
+msgid "warning: cannot remove: %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "Á¤·Ä Å©±â"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "stat ½ÇÆÐ"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "ÆÄÀÏ Àб⠽ÇÆÐ"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: ¼ø¼­°¡ ¸ÂÁö ¾ÊÀ½: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "Ç¥ÁØ ¿À·ù"
+
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: ºÎÀûÀýÇÑ Çʵå ÁöÁ¤ `%s'"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+# count?
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: `%s' ½ÃÀÛ ºÎºÐ¿¡ ºÎÀûÀýÇÑ °¹¼ö"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "`-' ´ÙÀ½¿¡ ºÎÀûÀýÇÑ ¼ýÀÚ"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "`.' ´ÙÀ½¿¡ ºÎÀûÀýÇÑ ¼ýÀÚ"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "ÇÊµå ½ºÆå¿¡ ¹þ¾î³­ ¹®ÀÚ"
+
+#: src/sort.c:2934
+#, c-format
+msgid "multiple compress programs specified"
+msgstr ""
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "Çʵå óÀ½¿¡ ºÎÀûÀýÇÑ ¼ýÀÚ"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "ÇÊµå °³¼ö°¡ 0ÀÔ´Ï´Ù"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "¹®ÀÚ ¿ÀÇÁ¼ÂÀÌ 0ÀÔ´Ï´Ù"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "`,' ´ÙÀ½¿¡ ºÎÀûÀýÇÑ ¼ýÀÚ"
+
+# extra operand? ¹º ¼Ò¸®¾ß?
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "-c ¿É¼Ç¿¡¼­´Â Ãß°¡ ÇÇ¿¬»êÀÚ `%s'À»(¸¦) ¾µ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>] [<ÀÔ·Â> [<Á¢µÎ¾î>]]\n"
+
+#: src/split.c:110
+#, fuzzy
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"ÀÔ·ÂÀ» °íÁ¤µÈ Å©±âÀÇ Á¶°¢ <Á¢µÎ¾î>aa, <Á¢µÎ¾î>ab, ... À¸·Î ³ª´©¾î ¾¹´Ï´Ù; ±â"
+"º»\n"
+"<Á¢µÎ¾î>´Â`x'ÀÔ´Ï´Ù. <ÀÔ·Â>ÀÌ ÁÖ¾îÁöÁö ¾Ê°Å³ª, <ÀÔ·Â>ÀÌ `-'À̸é, Ç¥ÁØ ÀÔ·Â"
+"À»\n"
+"ÀнÀ´Ï´Ù.\n"
+
+#: src/split.c:119
+#, fuzzy, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=N N¸¸Å­ÀÇ ±æÀÌÀÇ Á¢¹Ì¾î¸¦ »ç¿ëÇÕ´Ï´Ù (±âº»°ª %d)\n"
+" -b, --bytes=<Å©±â> Ãâ·Â ÆÄÀÏ´ç <Å©±â> ¹ÙÀÌÆ®¸¦ ¾¹´Ï´Ù\n"
+" -C, --line-bytes=<Å©±â> Ãâ·Â ÆÄÀÏ´ç ÃÖ´ë <Å©±â> ¹ÙÀÌÆ®¸¸Å­ÀÇ ÁÙÀ» ¾¹´Ï´Ù\n"
+" -l, --lines=<°³¼ö> Ãâ·Â ÆÄÀÏ´ç <°³¼ö> ÁÙ¸¸Å­ÀÇ ÁÙÀ» ¾¹´Ï´Ù\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose Áø´Ü ³»¿ëÀ» °¢ Ãâ·Â ÆÄÀÏÀ» ¿­±â Á÷Àü¿¡ Ç¥ÁØ ¿À·ù"
+"·Î\n"
+" Ãâ·ÂÇÕ´Ï´Ù\n"
+
+# ÇÑ ÁÙ¿¡ ¸ÂÃßÀÚ
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"<Å©±â>¿¡ Á¢¹Ì¾î·Î ±× ´ÜÀ§¸¦ ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù; b´Â 512, k´Â 1ų·Î, mÀº 1¸Þ°¡"
+"ÀÔ´Ï´Ù.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "Ãâ·ÂÆÄÀÏ Á¢¹Ì¾î¸¦ ´Ù ½è½À´Ï´Ù"
+
+#: src/split.c:211
+#, fuzzy, c-format
+msgid "creating file %s\n"
+msgstr "ÆÄÀÏ `%s'À»(¸¦) ¸¸µê\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "ÇÑ °¡Áö ÀÌ»óÀÇ ¹æ¹ýÀ¸·Î ºÐÇÒÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: ºÎÀûÀýÇÑ Á¢¹Ì¾î ±æÀÌ"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: ºÎÀûÀýÇÑ ¹ÙÀÌÆ®ÀÇ °³¼ö"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: ºÎÀûÀýÇÑ ÇàÀÇ °³¼ö"
+
+#: src/split.c:487
+#, fuzzy, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "%s: ÀϷùøÈ£ `%.*s'Àº(´Â) ³Ê¹« Å®´Ï´Ù"
+
+#: src/split.c:518
+#, fuzzy, c-format
+msgid "invalid number of lines: 0"
+msgstr "ºÎÀûÀýÇÑ ÇàÀÇ °³¼ö"
+
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s: ÀνÄÇÒ ¼ö ¾ø´Â ¿É¼Ç `%c%s'\n"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%s: ºÎÀûÀýÇÑ ÆÐÅÏ"
+
+#: src/stat.c:726
+#, fuzzy, c-format
+msgid "warning: backslash at end of format"
+msgstr "¹®ÀÚ¿­ ³¡¿¡ ºÎÀûÀýÇÑ ¿ª½½·¡½¬ À̽ºÄÉÀÌÇÁ"
+
+#: src/stat.c:755
+#, fuzzy, c-format
+msgid "cannot read file system information for %s"
+msgstr "%s¿¡ ´ëÇÑ ÆÄÀÏ Æ÷ÀÎÅ͸¦ ÀçÀ§Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/stat.c:831
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>] [<ÆÄÀÏ>]...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+
+#: src/stty.c:789
+#, fuzzy, c-format
+msgid "only one device may be specified"
+msgstr "¿ÀÁ÷ ÇÑ °³ÀÇ Àμö¸¸ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù"
+
+#: src/stty.c:819
+#, fuzzy, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr "--string°ú --check ¿É¼ÇÀº »óÈ£ ¹èŸÀûÀÔ´Ï´Ù"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr ""
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr ""
+
+#: src/stty.c:885 src/stty.c:995
+#, fuzzy, c-format
+msgid "invalid argument %s"
+msgstr "%2$s¿¡ ´ëÇØ ºÎÀûÀýÇÑ ÀÎÀÚ %1$s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, fuzzy, c-format
+msgid "missing argument to %s"
+msgstr "%2$s¿¡ ´ëÇØ ¾Ö¸ÅÇÑ ÀÎÀÚ %1$s"
+
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "ºÎÀûÀýÇÑ Æø: `%s'"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr ""
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr ""
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr ""
+
+#: src/stty.c:1888
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "ºÎÀûÀýÇÑ Çà¹øÈ£ Áõ°¡: `%s'"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr ""
+
+#: src/su.c:245
+#, fuzzy, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "`%s'µð·ºÅ丮¸¦ Áö¿ï ¼ö ¾ø½À´Ï´Ù"
+
+#: src/su.c:303
+#, fuzzy, c-format
+msgid "cannot set groups"
+msgstr "»ç¿ëÀÚ¿Í ±×·ìÀ» ¸ðµÎ »ý·«ÇÒ ¼ö´Â ¾ø½À´Ï´Ù"
+
+#: src/su.c:307
+#, fuzzy, c-format
+msgid "cannot set group id"
+msgstr "»ç¿ëÀÚ¿Í ±×·ìÀ» ¸ðµÎ »ý·«ÇÒ ¼ö´Â ¾ø½À´Ï´Ù"
+
+#: src/su.c:309
+#, fuzzy, c-format
+msgid "cannot set user id"
+msgstr "»ç¿ëÀÚ¿Í ±×·ìÀ» ¸ðµÎ »ý·«ÇÒ ¼ö´Â ¾ø½À´Ï´Ù"
+
+#: src/su.c:385
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>]... [<ÆÄÀÏ>]...\n"
+
+#: src/su.c:386
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr ""
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr ""
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr ""
+
+#: src/su.c:523
+#, fuzzy, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"°¢ ÆÄÀÏ¿¡ ´ëÇÑ Ã¼Å©¼¶°ú ºí·°ÀÇ °³¼ö¸¦ ÀμâÇÕ´Ï´Ù.\n"
+"\n"
+" -r -s¸¦ ¹«½Ã, BSD ÇÕ ¾Ë°í¸®Áò »ç¿ë, 1K ºí·° »ç¿ë\n"
+" -s, --sysv ½Ã½ºÅÛ V ÇÕ ¾Ë°í¸®Áò »ç¿ë, 512 ¹ÙÀÌÆ® ºí·° »ç¿ë\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+
+#: src/sync.c:74
+#, fuzzy, c-format
+msgid "ignoring all arguments"
+msgstr "Àμö°¡ ³Ê¹« ¸¹À½"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help ÀÌ µµ¿ò¸»À» Ç¥½ÃÇÏ°í ³¡³À´Ï´Ù\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version ¹öÀü Á¤º¸¸¦ Ãâ·ÂÇÏ°í ³¡³À´Ï´Ù\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"°¢ <ÆÄÀÏ>À» ¸¶Áö¸· ÁÙºÎÅÍ Ç¥ÁØ Ãâ·Â¿¡ ¾¹´Ï´Ù.\n"
+"<ÆÄÀÏ>ÀÌ ÁÖ¾îÁöÁö ¾Ê°Å³ª, <ÆÄÀÏ>ÀÌ `-'À̸é, Ç¥ÁØ ÀÔ·ÂÀ» ÀнÀ´Ï´Ù.\n"
+"\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before ±¸ºÐÀÚ¸¦ µÚ¿¡ ³õÁö ¾Ê°í ¾Õ¿¡ ³õ½À´Ï´Ù\n"
+" -r, --regex ±¸ºÐÀÚ¸¦ Á¤±Ô½ÄÀ¸·Î »ý°¢ÇÕ´Ï´Ù\n"
+" -s, --separator=<¹®ÀÚ¿­> ÁÙ¹Ù²Þ ´ë½Å¿¡ <¹®ÀÚ¿­>À» ±¸ºÐÀÚ·Î ¾¹´Ï´Ù\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, fuzzy, c-format
+msgid "%s: seek failed"
+msgstr "ÆÄÀÏ ´Ý±â ½ÇÆÐ"
+
+#: src/tac.c:265
+#, fuzzy, c-format
+msgid "record too large"
+msgstr "%s: ÆÄÀÏÀÌ ³Ê¹« ±é´Ï´Ù"
+
+#: src/tac.c:459
+#, fuzzy, c-format
+msgid "cannot create temporary file %s"
+msgstr "Àӽà ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/tac.c:466
+#, fuzzy, c-format
+msgid "cannot open %s for writing"
+msgstr "`%s'¸¦ `%s'·Î À̵¿ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/tac.c:487 src/tac.c:494
+#, fuzzy, c-format
+msgid "%s: write error"
+msgstr "¾²±â ¿À·ù"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "±¸ºÐ ´ÜÀ§°¡ ºó ¹®ÀÚ¿­ÀÌ µÉ ¼ö´Â ¾ø½À´Ï´Ù"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"°¢ <ÆÄÀÏ>ÀÇ ¸Ç ¸¶Áö¸· %dÁÙÀ» Ç¥ÁØ Ãâ·Â¿¡ Ç¥½ÃÇÕ´Ï´Ù.\n"
+"µÎ °³ ÀÌ»óÀÇ <ÆÄÀÏ>ÀÇ °æ¿ì, °¢°¢ÀÇ ÆÄÀϸ¶´Ù ÆÄÀÏÀ̸§À» ³ªÅ¸³»´Â Çì´õ¸¦ ¸Õ"
+"Àú \n"
+"Ç¥½ÃÇÕ´Ï´Ù. <ÆÄÀÏ>ÀÌ ÁÖ¾îÁöÁö ¾Ê°Å³ª, <ÆÄÀÏ>ÀÌ `-'À̸é, Ç¥ÁØ ÀÔ·ÂÀ» ÀнÀ´Ï"
+"´Ù.\n"
+"\n"
+
+#: src/tail.c:229
+#, fuzzy
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry ÆÄÀÏÀ» ¿­ ¶§ Á¢±Ù ºÒ°¡´ÉÇϰųª, ³ªÁß¿¡ \n"
+" Á¢±Ù ºÒ°¡´ÉÇØ Áö´õ¶óµµ °è¼ÓÇؼ­ ÆÄÀÏ ¿­±â¸¦\n"
+" ½ÃµµÇÕ´Ï´Ù -- -f¿Í °°ÀÌ ¾²¸é À¯¿ëÇÕ´Ï´Ù\n"
+" -c, --bytes=N ¸¶Áö¸· N¹ÙÀÌÆ®¸¦ Ãâ·ÂÇÕ´Ï´Ù\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={name|descriptor}]\n"
+" ÆÄÀÏÀÌ ´Ã¾î³²¿¡ ´Ù¶ó Ãß°¡µÈ µ¥ÀÌŸ¸¦ Ãâ·ÂÇÕ´Ï´Ù;\n"
+" -f, --follow, --follow=descriptor´Â \n"
+" °°Àº ±â´ÉÀ» ÇÕ´Ï´Ù\n"
+" -F --follow=name --retry¿Í °°½À´Ï´Ù\n"
+
+#: src/tail.c:244
+#, fuzzy, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=N ¸¶Áö¸· NÁÙÀ» (¸¶Áö¸· %dÁÙ ´ë½Å) Ãâ·ÂÇÕ´Ï´Ù\n"
+" --max-unchanged-stats=N\n"
+" --follow=name°ú °°ÀÌ ½á¼­, N(±âº»°ª %d)¹ø ÀÌÈÄ·Î\n"
+" Å©±â°¡ ¹Ù²îÁö ¾ÊÀº <ÆÄÀÏ>À» ´Ù½Ã ¿­¾î¼­,\n"
+" ÆÄÀÏÀÌ Áö¿öÁö°Å³ª À̸§ÀÌ ¹Ù²îÁö ¾Ê¾Ò´ÂÁö °Ë»çÇÕ´Ï"
+"´Ù\n"
+" (ȸÀüµÈ ·Î±× ÆÄÀÏÀÇ °æ¿ì ÀÌ·¯ÇÕ´Ï´Ù)\n"
+
+#: src/tail.c:256
+#, fuzzy
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID -f¿Í °°ÀÌ ¾²¿©, ÇÁ·Î¼¼½º ID PID°¡ Á×À¸¸é ³¡³³´Ï"
+"´Ù\n"
+" -q, --quiet, --silent ÆÄÀÏÀ̸§ÀÌ µé¾î ÀÖ´Â Çì´õ¸¦ Ãâ·ÂÇÏÁö ¾Ê½À´Ï´Ù\n"
+" -s, --sleep-interval=S -f¿Í °°ÀÌ ½á¼­, °¢°¢À» ¹Ýº¹ÇÒ ¶§¸¶´Ù ¾à \n"
+" SÃÊ(±âº»°ª 1ÃÊ)¸¸Å­ Áö¼ÓµÇµµ·Ï ÇÕ´Ï´Ù\n"
+" -v, --verbose ¾ðÁ¦³ª ÆÄÀÏÀ̸§ÀÌ µé¾î ÀÖ´Â Çì´õ¸¦ Ãâ·ÂÇÕ´Ï´Ù\n"
+
+#: src/tail.c:265
+#, fuzzy
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"¸¸¾à N(¹ÙÀÌÆ®¼ö³ª ÁÙÀÇ °³¼ö) ¾Õ¿¡ `+'°¡ ¿À´Â °æ¿ì, °¢ ÆÄÀÏÀÇ \n"
+"óÀ½¿¡¼­ºÎÅÍ N¹ø°ºÎÅÍ ½ÃÀÛÇÕ´Ï´Ù. ±× ¿ÜÀÇ °æ¿ì ÆÄÀÏÀÇ ¸¶Áö¸· N°³¸¦ \n"
+"Ç¥½ÃÇÕ´Ï´Ù. N µÚ¿¡ °öÇϱâ Á¢¹Ì¾î°¡ ¿Ã ¼ö ÀÖ½À´Ï´Ù: b´Â 512, k´Â 1024, mÀº \n"
+"1048576 (1¸Þ°¡)ÀÔ´Ï´Ù.\n"
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"--follow (-f) ¿É¼ÇÀ» ¾²¸é, tailÀº ÆÄÀÏ ±â¼úÀÚ¸¦ µû¶ó´Ù´Ï°Ô µË´Ï´Ù. Áï \n"
+"tailµÈ ÆÄÀÏÀÇ À̸§ÀÌ º¯°æµÇ¾ú´õ¶óµµ, tailÀº °è¼ÓÇؼ­ ±× ³¡À» µû¶ó´Ù´Ï°Ô \n"
+"µË´Ï´Ù. "
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"ÀÌ·¯ÇÑ ±âº» µ¿ÀÛ ¹æ½ÄÀº ÆÄÀÏ µð½ºÅ©¸³ÅÍ°¡ ¾Æ´Ñ ÆÄÀÏ À̸§À» ÃßÀûÇÒ \n"
+"¶§´Â ºÎÀûÀýÇÕ´Ï´Ù(¿¹¸¦ µé¾î ·Î±× ȸÀüÀÇ °æ¿ì). ±× °æ¿ì¿¡ `--"
+"follow=name'À» \n"
+"»ç¿ëÇϽʽÿÀ. ÀÌ·¸°Ô Çϸé tailÀº ±× ÆÄÀÏÀÇ À̸§À» ÃßÀûÇÕ´Ï´Ù. Á¤±âÀûÀ¸·Î \n"
+"ÆÄÀÏÀ» ´Ù½Ã ¿­¾î Áö¿öÁ³°Å³ª ´Ù¸¥ ÇÁ·Î±×·¥¿¡ ÀÇÇØ ´Ù½Ã ¸¸µé¾î Á³´ÂÁö ¿©ºÎ¸¦ \n"
+"°Ë»çÇÏ°Ô µÉ °ÍÀÔ´Ï´Ù.\n"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "%s(fd=%d)À»(¸¦) ´Ý½À´Ï´Ù "
+
+#: src/tail.c:411
+#, fuzzy, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: »ó´ë ¿ÀÇÁ¼Â %s%s·Î(À¸·Î) °¥ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/tail.c:415
+#, fuzzy, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s: ³¡ »ó´ë ¿ÀÇÁ¼Â %s%s·Î(À¸·Î) °¥ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/tail.c:867
+#, fuzzy, c-format
+msgid "%s has become inaccessible"
+msgstr "`%s'ÀÌ(°¡) Á¢±Ù ºÒ°¡´ÉÇÏ°Ô µÇ¾ú½À´Ï´Ù"
+
+# Á» ´õ ÀÚ¿¬½º·´°Ô
+#: src/tail.c:884
+#, fuzzy, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+"`%s'ÀÌ(°¡) tailÀ» ½ÇÇàÇÒ ¼ö ¾ø´Â ÆÄÀÏ·Î ´ëüµÇ¾ú½À´Ï´Ù; ÀÌ À̸§Àº Æ÷±âÇÕ´Ï´Ù"
+
+#: src/tail.c:905
+#, fuzzy, c-format
+msgid "%s has become accessible"
+msgstr "`%s'ÀÌ(°¡) Á¢±Ù °¡´ÉÇÏ°Ô µÇ¾ú½À´Ï´Ù"
+
+# Á» ´õ ÀÚ¿¬½º·´°Ô
+#: src/tail.c:913
+#, fuzzy, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "`%s'ÀÌ(°¡) ³ªÅ¸³µ½À´Ï´Ù; »õ·Î¿î ÆÄÀÏÀÇ ³¡¿¡ À̾ ³ªÅ¸³µ½À´Ï´Ù"
+
+# Á» ´õ ÀÚ¿¬½º·´°Ô
+#: src/tail.c:924
+#, fuzzy, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "`%s'ÀÌ(°¡) ´ëüµÇ¾ú½À´Ï´Ù; »õ·Î¿î ÆÄÀÏÀÇ ³¡¿¡ À̾ ´ëüµÇ¾ú½À´Ï´Ù"
+
+#: src/tail.c:1025
+#, fuzzy, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%sÀÇ ¼ÒÀ¯ÀÚ ±×¸®°í/ȤÀº ±×·ìÀ» ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: ÆÄÀÏÀÌ Àß·ÈÀ½"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "ÆÄÀÏÀÌ ³²¾Æ ÀÖÁö ¾Ê½À´Ï´Ù"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+"`%s'Àº(´Â) ÀÌ·± Á¾·ùÀÇ ÆÄÀÏ µÚ¿¡ À̾ ³ª¿Ã ¼ö ¾ø½À´Ï´Ù; ÀÌ À̸§Àº Æ÷±âÇÕ´Ï"
+"´Ù"
+
+#: src/tail.c:1439
+#, fuzzy, c-format
+msgid "number in %s is too large"
+msgstr "%sÀº(´Â) ³Ê¹« Å®´Ï´Ù"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr "%s: ¿­±âÁß¿¡ ¹Ù²îÁö ¾ÊÀº statÀÇ ÃÖ´ë °³¼ö°¡ ºÎÀûÀýÇÕ´Ï´Ù"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: ºÎÀûÀýÇÑ PID"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: ºÎÀûÀýÇÑ ÃÊ"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, fuzzy, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "°æ°í: --retry´Â --follow=name ¿É¼ÇÀ» »ç¿ëÇßÀ» °æ¿ì¸¸ À¯È¿ÇÕ´Ï´Ù"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+"°æ°í: PID ¹«½Ã; `--pid=PID'´Â --follow ¿É¼Ç°ú °°ÀÌ »ç¿ëÇßÀ» °æ¿ì¸¸ À¯È¿ÇÕ´Ï´Ù"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "°æ°í: `--pid=PID'´Â ÀÌ ½Ã½ºÅÛ¿¡¼­ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù"
+
+#: src/tail.c:1667
+#, fuzzy, c-format
+msgid "cannot follow %s by name"
+msgstr "Àӽà ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+
+#: src/tee.c:71
+#, fuzzy
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"<ÆÄÀÏ>ÀÌ ÁÖ¾îÁöÁö ¾Ê°Å³ª - À̸é Ç¥ÁØ ÀÔ·ÂÀ» ÀнÀ´Ï´Ù.\n"
+
+#: src/test.c:125
+#, fuzzy, c-format
+msgid "missing argument after %s"
+msgstr "%2$s¿¡ ´ëÇØ ¾Ö¸ÅÇÑ ÀÎÀÚ %1$s"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "ºÎÀûÀýÇÑ ¼ýÀÚ"
+
+#: src/test.c:242
+msgid "')' expected"
+msgstr ""
+
+#: src/test.c:245
+#, c-format
+msgid "')' expected, found %s"
+msgstr ""
+
+#: src/test.c:261 src/test.c:606
+#, c-format
+msgid "%s: unary operator expected"
+msgstr ""
+
+#: src/test.c:330
+msgid "-nt does not accept -l"
+msgstr ""
+
+#: src/test.c:343
+msgid "-ef does not accept -l"
+msgstr ""
+
+#: src/test.c:359
+msgid "-ot does not accept -l"
+msgstr ""
+
+#: src/test.c:368
+#, fuzzy
+msgid "unknown binary operator"
+msgstr "¾Ë ¼ö ¾ø´Â ½Ã½ºÅÛ ¿À·ù"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "¾Ë ¼ö ¾ø´Â ½Ã½ºÅÛ ¿À·ù"
+
+#: src/test.c:694
+#, fuzzy
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<ÆÄÀÏ>]...\n"
+" ȤÀº: %s [<¿É¼Ç>]\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+msgid "missing `]'"
+msgstr ""
+
+#: src/test.c:846
+#, fuzzy, c-format
+msgid "extra argument %s"
+msgstr "Àμö°¡ ³Ê¹« ¸¹À½"
+
+#: src/touch.c:112 src/touch.c:318
+#, fuzzy, c-format
+msgid "invalid date format %s"
+msgstr "%2$s¿¡ ´ëÇØ ºÎÀûÀýÇÑ ÀÎÀÚ %1$s"
+
+#: src/touch.c:154
+#, fuzzy, c-format
+msgid "creating %s"
+msgstr "ÆÄÀÏ `%s'À»(¸¦) ¸¸µê\n"
+
+#: src/touch.c:211
+#, fuzzy, c-format
+msgid "cannot touch %s"
+msgstr "`%s'¿¡¼­ ioctlÀ» ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/touch.c:217
+#, fuzzy, c-format
+msgid "setting times of %s"
+msgstr "%sÀÇ ½Ã°£À» À¯ÁöÇÕ´Ï´Ù"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+
+#: src/touch.c:344
+#, fuzzy, c-format
+msgid "cannot specify times from more than one source"
+msgstr "ÇÑ °¡Áö ÀÌ»óÀÇ ¹æ¹ýÀ¸·Î ºÐÇÒÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>]... <ÁýÇÕ1> [<ÁýÇÕ2>]\n"
+
+#: src/tr.c:294
+#, fuzzy
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Ç¥ÁØ ÀÔ·ÂÀ¸·ÎºÎÅÍ ¹®ÀÚµéÀ» ¿Å±â°í, ÁÙÀÌ°í, ±×¸®°í/ȤÀº Áö¿ö¼­ Ç¥ÁØ Ãâ·Â¿¡ \n"
+"Ãâ·ÂÇÕ´Ï´Ù.\n"
+"\n"
+" -c, --complement ¸ÕÀú <ÁýÇÕ1>ÀÇ ¿©ÁýÇÕÀ» ÃëÇÕ´Ï´Ù\n"
+" -d, --delete <ÁýÇÕ1>ÀÇ ¹®ÀÚµéÀ» Áö¿ì°í, ¿Å±âÁö ¾Ê½À´Ï´Ù\n"
+" -s, --squeeze-repeats °°Àº ¹®ÀÚµéÀÇ ¹Ýº¹À» ÇϳªÀÇ ¹®ÀÚ·Î ¸¸µì´Ï´Ù\n"
+" <ÁýÇÕ1>¿¡¼­ ÇØ´ç ¹®ÀÚ°¡ ÇÑ ¹ø¸¸ ³ªÅ¸³ª°Ô µË´Ï´Ù\n"
+" -t, --truncate-set1 ¸ÕÀú <ÁýÇÕ1>À» <ÁýÇÕ2>ÀÇ ±æÀÌ¿¡ ¸Â°Ô ÀÚ¸¨´Ï´Ù\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN 8Áø¼ö °ª NNNÀÇ ¹®ÀÚ (1°³¿¡¼­ 3°³ÀÇ 8Áø¼ö ¼ýÀÚ)\n"
+" \\\\ ¹é½½·¡½¬\n"
+" \\a ¼Ò¸®³ª´Â BEL\n"
+" \\b ¹é½ºÆäÀ̽º\n"
+" \\f ÆûÇǵå\n"
+" \\n ÁٹٲÞ\n"
+" \\r ¸®ÅÏ\n"
+" \\t ¼öÆò ÅÇ\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v ¼öÁ÷ ÅÇ\n"
+" CHAR1-CHAR2 CHAR1¿¡¼­ CHAR2±îÁöÀÇ (Ä¿Áö´Â ¼ø¼­´ë·Î) ¸ðµç ¹®ÀÚ\n"
+" [CHAR*] <ÁýÇÕ2>¿¡¼­, <ÁýÇÕ1>ÀÇ ±æÀ̸¸Å­ CHAR¸¦ º¹»ç\n"
+" [CHAR*REPEAT] CHARÀÇ REPEAT¹ø ¹Ýº¹, REPEAT°¡ 0À¸·Î ½ÃÀÛÇϸé 8Áø¼ö\n"
+" [:alnum:] ¸ðµç ¹®ÀÚ ¹× ¼ýÀÚ\n"
+" [:alpha:] ¸ðµç ¹®ÀÚ\n"
+" [:blank:] ¸ðµç ¼öÆò °ø¹é¹®ÀÚµé\n"
+" [:cntrl:] ¸ðµç ÄÁÆ®·Ñ ¹®ÀÚ\n"
+" [:digit:] ¸ðµç ¼ýÀÚ\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] ¸ðµç Ç¥½Ã °¡´ÉÇÑ ¹®ÀÚ, °ø¹éÀº Æ÷ÇÔÇÏÁö ¾ÊÀ½\n"
+" [:lower:] ¸ðµç ¼Ò¹®ÀÚ\n"
+" [:print:] ¸ðµç Ç¥½Ã °¡´ÉÇÑ ¹®ÀÚ, °ø¹é Æ÷ÇÔ\n"
+" [:punct:] ¸ðµç ¹®Àå ±âÈ£ ¹®ÀÚ\n"
+" [:space:] ¸ðµç ¼öÆò ¹× ¼öÁ÷ °ø¹é¹®ÀÚ\n"
+" [:upper:] ¸ðµç ´ë¹®ÀÚ\n"
+" [:xdigit:] ¸ðµç 16Áø¼ö ¼ýÀÚ\n"
+" [=CHAR=] CHAR¿Í µ¿ÀÏÇÑ ¸ðµç ¹®ÀÚ\n"
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"-d°¡ ÁÖ¾îÁöÁö ¾Ê°í <ÁýÇÕ1>°ú <ÁýÇÕ2>°¡ ÀÖ´Â °æ¿ì¿¡ ¹®ÀÚ¸¦ ¿Å±é´Ï´Ù.\n"
+"-t´Â ¿Å±èÀÇ °æ¿ì¿¡¸¸ ¾µ ¼ö ÀÖ½À´Ï´Ù. <ÁýÇÕ2>´Â ¸¶Áö¸· ¹®ÀÚ¸¦\n"
+"ÇÊ¿äÇÑ ¸¸Å­ ¹Ýº¹ÇØ <ÁýÇÕ1>ÀÇ ±æÀ̸¸Å­ È®ÀåµË´Ï´Ù. "
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"<ÁýÇÕ2>ÀÇ ¹®ÀÚ°¡ ´õ\n"
+"¸¹À¸¸é ´õ ¸¹Àº ¹®ÀÚµéÀº ¹«½ÃµË´Ï´Ù. [:lower:]¿Í [:upper]¸¸ÀÌ\n"
+"°è¼Ó °ªÀÌ Ä¿Áö¸é¼­ È®ÀåµË´Ï´Ù; ¿Å±èÀÇ °æ¿ì <ÁýÇÕ2>¿¡¼­ ±×·¸°Ô µÇ¸ç,\n"
+"ÀÌ´Â ´ë¼Ò¹®ÀÚ º¯È¯À» ÁöÁ¤ÇÒ °æ¿ì¿¡¸¸ »ç¿ëµË´Ï´Ù. "
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"¿Å±èÀ̳ª Áö¿ò\n"
+"¾î´À °Íµµ ¾Æ´Ñ °æ¿ì¿¡ -s´Â <ÁýÇÕ1>À» »ç¿ëÇÕ´Ï´Ù; ±× ¿Ü¿¡ ÁÙÀÓÀº <ÁýÇÕ2>¸¦\n"
+"»ç¿ëÇÏ¸ç ¿Å±èÀ̳ª Áö¿ò ÀÌÈÄ¿¡ ÀϾ´Ï´Ù.\n"
+
+#: src/tr.c:519
+#, fuzzy, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"°æ°í: ¾Ö¸ÅÇÑ 8Áø¼ö À̽ºÄÉÀÌÇÁ \\%c%c%cÀº(´Â) 2¹ÙÀÌÆ® ½ÃÄö½º\n"
+"\t\\0%c%c, `%c'·Î(À¸·Î) Çؼ®µË´Ï´Ù"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "¹üÀ§ ÁöÁ¤ `%s-%s'Àº(´Â) ¼ø¼­°¡ »çÀü¼ø¼­ÀÇ ¿ª¹æÇâÀÔ´Ï´Ù"
+
+#: src/tr.c:838
+#, fuzzy, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "[c*n] ±¸¹®¿¡ ºÎÀûÀýÇÑ ¹Ýº¹ ȸ¼ö `%s'"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "¹®ÀÚ Å¬·¡½º À̸§ÀÌ ºüÁ³½À´Ï´Ù `[::]'"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "µ¿°Ý Ŭ·¡½º ¹®ÀÚ°¡ ºüÁ³½À´Ï´Ù `[==]'"
+
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "ºÎÀûÀýÇÑ ¹®ÀÚ Å¬·¡½º `%s'"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: µ¿ÀÏ Å¬·¡½º ÇÇ¿¬»êÀÚ´Â ÇϳªÀÇ ¹®ÀÚÀ̾î¾ß ÇÕ´Ï´Ù"
+
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr "ÇÊµå ½ºÆå¿¡ ¹þ¾î³­ ¹®ÀÚ"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "[c*] ¹Ýº¹ ±¸¼º¹®Àº string1¿¡¼­´Â ¾µ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "[c*] ¹Ýº¹ ±¸¼º¹®Àº string2¿¡¼­ ¿ÀÁ÷ ÇÑ °³¸¸ ¾µ ¼ö ÀÖ½À´Ï´Ù"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "[=c=] Ç¥ÇöÀº ¿Å±èÀÇ °æ¿ì string2¿¡¼­ ¾µ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "ÁýÇÕ1ÀÌ Àß·Á³ª°¡Áö ¾Ê´Â´Ù¸é, string2´Â ºó ÁýÇÕÀ̾´Â ¾È µË´Ï´Ù"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"¹®ÀÚ Å¬·¡½ºÀÇ ¿©ÁýÇÕÀ¸·Î ¿Å±æ °æ¿ì¿¡´Â,\n"
+"string2´Â ±× µµ¸ÞÀÎÀÇ ¸ðµç ¹®ÀÚ¸¦ ÇϳªÀÇ ¹®ÀÚ·Î ¸ÅÇÎÇØ¾ß ÇÕ´Ï´Ù"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"¿Å±èÀÇ °æ¿ì, string2¿¡ ³ªÅ¸³¯ ¼ö ÀÖ´Â ¹®ÀÚ Å¬·¡½º´Â `upper'¿Í \n"
+"`lower'»ÓÀÔ´Ï´Ù"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "¹ø¿ªÇÒ ¶§¿¡¸¸ [c*] ±¸¹®ÀÌ ¹®ÀÚ¿­2¿¡ ³ªÅ¸³¯ ¼ö ÀÖ½À´Ï´Ù"
+
+#: src/tr.c:1731
+#, fuzzy
+msgid "Two strings must be given when translating."
+msgstr "¹ø¿ªÇÒ ¶§ µÎ ¹®ÀÚ¿­ÀÌ ÁÖ¾îÁ®¾ß ÇÕ´Ï´Ù"
+
+#: src/tr.c:1741
+#, fuzzy
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr "¹Ýº¹ÁÙÀÓ ¾øÀÌ Áö¿ì´Â °æ¿ì 1°³ÀÇ string¸¸ÀÌ ÁÖ¾îÁ®¾ß ÇÕ´Ï´Ù"
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "¸ÂÁö ¾Ê´Â [:upper:] ±×¸®°í/ȤÀº [:lower:] ±¸¼º"
+
+#: src/true.c:42
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<ÆÄÀÏ>]...\n"
+" ȤÀº: %s [<¿É¼Ç>]\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"»ç¿ë¹ý: %s [¿É¼Ç] [<ÆÄÀÏ>]\n"
+"<ÆÄÀÏ>ÀÇ partial Á¤·Ä¿¡ µû¸£´Â ¿ÏÀüÈ÷ Á¤·ÄµÈ ¸®½ºÆ®¸¦ ¾¹´Ï´Ù.\n"
+"<ÆÄÀÏ>ÀÌ ÁÖ¾îÁöÁö ¾Ê°Å³ª, <ÆÄÀÏ>ÀÌ `-'À̸é, Ç¥ÁØ ÀÔ·ÂÀ» ÀнÀ´Ï´Ù.\n"
+"\n"
+
+#: src/tsort.c:474
+#, fuzzy, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: ÀԷ¿¡ ·çÇÁ°¡ µé¾î°¡ ÀÖ½À´Ï´Ù loop:"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: ÀԷ¿¡ ·çÇÁ°¡ µé¾î°¡ ÀÖ½À´Ï´Ù loop:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>] [<ÆÄÀÏ>]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr ""
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+
+#: src/uname.c:236
+#, fuzzy, c-format
+msgid "cannot get system name"
+msgstr "Àӽà ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#: src/unexpand.c:125
+#, fuzzy
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"°¢ <ÆÄÀÏ>ÀÇ ÅÇÀ» °ø¹é¹®ÀÚ·Î º¯È¯ÇÏ¿©, Ç¥ÁØ Ãâ·Â¿¡ ¾¹´Ï´Ù.\n"
+"<ÆÄÀÏ>ÀÌ ÁÖ¾îÁöÁö ¾Ê°Å³ª, <ÆÄÀÏ>ÀÌ `-'À̸é, Ç¥ÁØ ÀÔ·ÂÀ» ÀнÀ´Ï´Ù.\n"
+"\n"
+
+#: src/unexpand.c:133
+#, fuzzy
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all (ÃÖÃÊÀÇ °ø¹é¹®ÀÚ°¡ ¾Æ´Ñ) ¸ðµç °ø¹é¹®ÀÚ¸¦ º¯È¯ÇÕ´Ï´Ù\n"
+" -t, --tabs=<°³¼ö> ÅÇÀÌ <°³¼ö>¸¸Å­ÀÇ ¹®ÀÚ¸¸Å­ ¶³¾îÁö°Ô ¸¸µì´Ï´Ù\n"
+" -t, --tabs=<¸®½ºÆ®> ¸í½ÃÀûÀ¸·Î ÅÇ À§Ä¡¸¦ ½°Ç¥·Î ±¸ºÐÇØ ÁöÁ¤ÇÕ´Ï´Ù\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "%sÀº(´Â) ³Ê¹« Å®´Ï´Ù"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "»ç¿ë¹ý: %s [¿É¼Ç]... [<ÀÔ·Â> [<Ãâ·Â>]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"<ÀÔ·Â>(ȤÀº Ç¥ÁØ ÀÔ·Â)¿¡¼­ µ¿ÀÏÇÑ ÁÙÀ» ¸ðµÎ Áö¿ì°í ÇÑ °³¸¸ ³²°Ü ³õ°í\n"
+"¸ðµÎ Áö¿ö¼­ <Ãâ·Â>(ȤÀº Ç¥ÁØ Ãâ·Â)¿¡ ¾¹´Ï´Ù.\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count ÁÙ ¾Õ¿¡ ¹Ýº¹µÈ ȸ¼ö¸¦ ¾¹´Ï´Ù\n"
+" -d, --repeated ¹Ýº¹µÈ ÁÙ¸¸ Ç¥½ÃÇÕ´Ï´Ù\n"
+
+#: src/uniq.c:151
+#, fuzzy
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated[=delimit-method] ¸ðµç ¹Ýº¹µÈ ÁÙÀ» Ç¥½ÃÇÕ´Ï´Ù\n"
+" delimit-method={none(±âº»°ª),prepend,separate)}\n"
+" ºó ÁÙÀ» ±âÁØÀ¸·Î ±¸ºÐÇÕ´Ï´Ù.\n"
+" -f, --skip-fields=N ù¹ø° N°³ÀÇ Çʵ带 ºñ±³ÇÏÁö ¾Ê½À´Ï´Ù\n"
+" -i, --ignore-case ºñ±³ÇÒ ¶§ ´ë¼Ò¹®ÀÚÀÇ Â÷À̸¦ ¹«½ÃÇÕ´Ï´Ù\n"
+" -s, --skip-chars=N ù¹ø° N°³ÀÇ ¹®ÀÚ¸¦ ºñ±³ÇÏÁö ¾Ê½À´Ï´Ù\n"
+" -u, --unique À¯ÀÏÇÑ ÁÙ¸¸À» Ç¥½ÃÇÕ´Ï´Ù\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr " -w, --check-chars=N ÇÑ ÁÙ¿¡ N°³ÀÇ ¹®ÀÚ±îÁö¸¸ ºñ±³ÇÕ´Ï´Ù\n"
+
+# ??
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"ÇÑ Çʵå´Â °ø¹é»ÓÀÌ°í, ±× ´ÙÀ½¿¡ °ø¹é¹®ÀÚ°¡ ¾Æ´Ñ ¹®ÀÚµéÀÌ ÀÖ½À´Ï´Ù.\n"
+"¹®ÀÚ°¡ ³ª¿À±â Àü¿¡ Çʵå´Â °Ç³Ê ¶Ý´Ï´Ù\n"
+
+#: src/uniq.c:350
+#, fuzzy, c-format
+msgid "too many repeated lines"
+msgstr "Àμö°¡ ³Ê¹« ¸¹À½"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "°Ç³Ê ¶Û ÇʵåÀÇ °³¼ö°¡ ºÎÀûÀýÇÕ´Ï´Ù"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "°Ç³Ê ¶Û ¹ÙÀÌÆ® ¼ö°¡ ºÎÀûÀýÇÕ´Ï´Ù"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "ºñ±³ÇÒ ¹ÙÀÌÆ®ÀÇ °³¼ö°¡ ºÎÀûÀýÇÕ´Ï´Ù"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr "¹Ýº¹µÈ ÁÙÀ» Ç¥½ÃÇÏ°í ȸ¼ö¸¦ ¼¼´Â °ÍÀº ¹«ÀǹÌÇÕ´Ï´Ù"
+
+#: src/unlink.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<ÆÄÀÏ>]...\n"
+" ȤÀº: %s [<¿É¼Ç>]\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+
+#: src/unlink.c:91
+#, fuzzy, c-format
+msgid "cannot unlink %s"
+msgstr "`%s'¿¡¼­ ioctlÀ» ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr ""
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr ""
+
+#: src/uptime.c:135
+msgid "am"
+msgstr ""
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr ""
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr ""
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr ""
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/uptime.c:147
+#, fuzzy, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "À߸øµÈ »ç¿ëÀÚ"
+msgstr[1] "À߸øµÈ »ç¿ëÀÚ"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ""
+
+#: src/uptime.c:197 src/users.c:108
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>]... [<ÆÄÀÏ>]...\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+
+#: src/wc.c:113
+#, fuzzy
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"°¢ <ÆÄÀÏ>¿¡ ´ëÇÏ¿© ¹ÙÀÌÆ®, ´Ü¾î, ÁÙ ¹Ù²ÞÀÇ °³¼ö¸¦ Ç¥½ÃÇÏ°í, ÀÌ»óÀÇ ÆÄÀÏÀÌ\n"
+"ÁöÁ¤µÉ ¶© Àüü ÇàÀÇ ¼öµµ ÀμâÇÕ´Ï´Ù. ÆÄÀÏÀÌ ÁÖ¾îÁöÁö ¾Ê°Å³ª ÆÄÀÏÀÌ - À̸é\n"
+"Ç¥ÁØ ÀÔ·ÂÀ» ÀнÀ´Ï´Ù.\n"
+" -c, --bytes ¹®ÀÚÀÇ °³¼ö¸¦ Ç¥½ÃÇÕ´Ï´Ù\n"
+" -l, --lines ÇàÀÇ °³¼ö¸¦ Ç¥½ÃÇÕ´Ï´Ù\n"
+" -w, --words ´Ü¾îÀÇ °³¼ö¸¦ Ç¥½ÃÇÕ´Ï´Ù\n"
+
+#: src/wc.c:121
+#, fuzzy
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" -L, --max-line-length °¡Àå ±ä ÁÙÀÇ ±æÀ̸¦ Ç¥½ÃÇÕ´Ï´Ù\n"
+" -w, --words ´Ü¾îÀÇ °³¼ö¸¦ ÀμâÇÕ´Ï´Ù\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr ""
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr ""
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr ""
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr ""
+
+#: src/who.c:497
+msgid "clock change"
+msgstr ""
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr ""
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr ""
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+
+#: src/who.c:551
+msgid "NAME"
+msgstr ""
+
+#: src/who.c:551
+msgid "LINE"
+msgstr ""
+
+#: src/who.c:551
+msgid "TIME"
+msgstr ""
+
+#: src/who.c:551
+#, fuzzy
+msgid "IDLE"
+msgstr "½ÇÆÐ"
+
+#: src/who.c:552
+msgid "PID"
+msgstr ""
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr ""
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr ""
+
+#: src/who.c:633
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>]... <ÆÄÀÏ1> <ÆÄÀÏ2>\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+
+#: src/who.c:763
+#, fuzzy, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+"°æ°í: --version-control (-V) ¿É¼ÇÀº ´õÀÌ»ó ¾²ÀÌÁö ¾Ê½À´Ï´Ù. ÀÌ ¿É¼ÇÀº\n"
+"ÀÌÈÄ ¸±¸®Áî¿¡¼­´Â »èÁ¦µÉ °ÍÀÔ´Ï´Ù. ´ë½Å --backup=%s À» »ç¿ëÇϼ¼¿ä."
+
+#: src/whoami.c:51
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+
+#: src/whoami.c:95
+#, fuzzy, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%sÀÇ ¼ÒÀ¯ÀÚ ±×¸®°í/ȤÀº ±×·ìÀ» ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#: src/yes.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"»ç¿ë¹ý: %s [<ÆÄÀÏ>]...\n"
+" ȤÀº: %s [<¿É¼Ç>]\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+
+#, fuzzy
+#~ msgid "strip failed"
+#~ msgstr "stat ½ÇÆÐ"
+
+#~ msgid "program error"
+#~ msgstr "ÇÁ·Î±×·¥ ¿À·ù"
+
+#~ msgid "stack overflow"
+#~ msgstr "½ºÅà ¿À¹öÇ÷οì"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "%sÀÇ ¼ÒÀ¯ÀÚ ±×¸®°í/ȤÀº ±×·ìÀ» ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "%s µð·ºÅ丮·Î chdirÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "UIDÀÇ ·Î±×ÀÎ ±×·ìÀ» ¾Ë¾Æ ³¾ ¼ö ¾ø½À´Ï´Ù"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "ÀÌ ÇÁ·Î±×·¥Àº ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾îÀÔ´Ï´Ù; º¹»ç Á¶°ÇÀº ¼Ò½º¸¦ ÂüÁ¶ÇϽʽÿÀ. \n"
+#~ "»óÇ°¼ºÀ̳ª ƯÁ¤ ¸ñÀû¿¡ ´ëÇÑ ÀûÇÕ¼ºÀ» ºñ·ÔÇÏ¿©, ¾î¶°ÇÑ º¸Áõµµ ÇÏÁö ¾Ê½À´Ï"
+#~ "´Ù.\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "Àμö°¡ ³Ê¹« ÀûÀ½"
+
+#~ msgid "Torbjorn Granlund and Richard M. Stallman"
+#~ msgstr "Torbjorn Granlund ±×¸®°í Richard M. Stallman"
+
+#, fuzzy
+#~ msgid "closing standard output"
+#~ msgstr "Ç¥ÁØ Ãâ·Â"
+
+#~ msgid "group number"
+#~ msgstr "±×·ì¹øÈ£"
+
+#, fuzzy
+#~ msgid "invalid group number %s"
+#~ msgstr "ºÎÀûÀýÇÑ ¼ýÀÚ"
+
+#, fuzzy
+#~ msgid "invalid mode string: %s"
+#~ msgstr "ºÎÀûÀýÇÑ Å¸ÀÔÀÇ ¹®ÀÚ¿­ `%s'"
+
+#, fuzzy
+#~ msgid "unable to restore permissions of %s"
+#~ msgstr "%sÀÇ Çã°¡¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "»ç¿ë¹ý: %s [¿É¼Ç]... OWNER[:[GROUP]] FILE...\n"
+#~ " ¶Ç´Â: %s [¿É¼Ç]... .GROUP FILE...\n"
+#~ " ¶Ç´Â: %s [¿É¼Ç]... --reference=RFILE FILE...\n"
+
+#~ msgid "Richard Stallman and David MacKenzie"
+#~ msgstr "Richard Stallman ±×¸®°í David MacKenzie"
+
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "»ç¿ë¹ý: %s [<¿É¼Ç>]... <¿ÞÂÊ_ÆÄÀÏ> <¿À¸¥ÂÊ_ÆÄÀÏ>\n"
+
+#, fuzzy
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "Torbjorn Granlund, David MacKenzie, and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie, ±×¸®°í Jim Meyering"
+
+#, fuzzy
+#~ msgid "missing file arguments"
+#~ msgstr "Àμö°¡ ³Ê¹« ÀûÀ½"
+
+#, fuzzy
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "%sÀÌ(°¡) Á¸ÀçÇÏÁö¸¸ µð·ºÅ丮°¡ ¾Æ´Õ´Ï´Ù"
+
+#, fuzzy
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr "¿©·¯°³ÀÇ ÆÄÀÏÀ» º¹»çÇϴµ¥ ¸¶Áö¸· Àμö(%s)´Â µð·ºÅ丮°¡ ¾Æ´Õ´Ï´Ù"
+
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "°æ°í: --version-control (-V) ¿É¼ÇÀº ´õÀÌ»ó ¾²ÀÌÁö ¾Ê½À´Ï´Ù. ÀÌ ¿É¼ÇÀº\n"
+#~ "ÀÌÈÄ ¸±¸®Áî¿¡¼­´Â »èÁ¦µÉ °ÍÀÔ´Ï´Ù. ´ë½Å --backup=%s À» »ç¿ëÇϼ¼¿ä."
+
+#, fuzzy
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "°æ°í: `--pid=PID'´Â ÀÌ ½Ã½ºÅÛ¿¡¼­ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù"
+
+#~ msgid "Stuart Kemp and David MacKenzie"
+#~ msgstr "Stuart Kemp ±×¸®°í David MacKenzie"
+
+#~ msgid "%s: `+' or `-' expected after delimeter"
+#~ msgstr "%s: ±¸È¹ ¹®ÀÚ µÚ¿¡ `+'³ª `-'°¡ ¿Í¾ßÇÔ"
+
+#~ msgid "David Ihnat, David MacKenzie, and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie, ±×¸®°í Jim Meyering"
+
+#, fuzzy
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "¿É¼Ç¾Æ´Ñ Àμö°¡ ³Ê¹« ¸¹À½"
+
+#, fuzzy
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-822 (-R) option"
+#~ msgstr "--stringÀ» »ç¿ëÇÒ ¶© ÆÄÀÏÀÌ ÁöÁ¤µÉ ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "cannot get time of day"
+#~ msgstr "ÇÑ °¡Áö ÀÌ»óÀÇ ¹æ¹ýÀ¸·Î ºÐÇÒÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "Paul Rubin, David MacKenzie, and Stuart Kemp"
+#~ msgstr "Paul Rubin ±×¸®°í David MacKenzie"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "%s+%s°³ÀÇ ·¹Äڵ带 ÀÔ·ÂÇÏ¿´½À´Ï´Ù\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "%s+%s°³ÀÇ ·¹Äڵ带 Ãâ·ÂÇÏ¿´½À´Ï´Ù\n"
+
+#~ msgid "truncated records"
+#~ msgstr "À߸° ·¹ÄÚµåµé"
+
+#~ msgid ""
+#~ "only one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, "
+#~ "{unblock,sync}"
+#~ msgstr ""
+#~ "{ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, {unblock,sync}Áß¿¡ ÇÏ"
+#~ "³ªÀÇ conv¸¸ °¡´ÉÇÕ´Ï´Ù"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr ""
+#~ "dircolorsÀÇ ³»ºÎ µ¥ÀÌÅͺ£À̽º¸¦ Ãâ·ÂÇÏ´Â ¿É¼ÇÀ» ÁÙ ¶§¿¡´Â\n"
+#~ "FILEÀμö´Â ¾²ÀÌÁö ¾Ê½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "David MacKenzie and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie, ±×¸®°í Jim Meyering"
+
+#, fuzzy
+#~ msgid "Richard Mlynarik and David MacKenzie"
+#~ msgstr "Richard Stallman ±×¸®°í David MacKenzie"
+
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "`-<¸®½ºÆ®>' ¿É¼ÇÀº ¾ø¾îÁ³½À´Ï´Ù `-t <¸®½ºÆ®>'¸¦ »ç¿ëÇϽʽÿÀ "
+
+#~ msgid ""
+#~ "\n"
+#~ "In -wNUMBER, the letter `w' may be omitted.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "-w<°³¼ö>¿¡¼­, `w'¸¦ »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù.\n"
+
+#~ msgid "invalid width option: `%s'"
+#~ msgstr "ºÎÀûÀýÇÑ Æø ¿É¼Ç `%s'"
+
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "`%s': ¾ø¾îÁø ¿É¼ÇÀÔ´Ï´Ù; `%s'À»(¸¦) »ç¿ëÇϽʽÿÀ"
+
+#~ msgid ""
+#~ " -c, --bytes=SIZE print first SIZE bytes\n"
+#~ " -n, --lines=NUMBER print first NUMBER lines instead of first 10\n"
+#~ msgstr ""
+#~ " -c, --bytes=<Å©±â> ¸Ç ù <Å©±â>¹ÙÀÌÆ®¸¦ Ç¥½ÃÇÕ´Ï´Ù\n"
+#~ " -n, --lines=<°³¼ö> 10ÁÙÀÌ ¾Æ´Ï¶ó ¸Ç ù <¼ýÀÚ>ÁÙÀ» Ç¥½ÃÇÕ´Ï´Ù\n"
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "ÀνÄÇÒ ¼ö ¾ø´Â ¿É¼Ç `-%c'"
+
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "`-%s'¿É¼ÇÀº ¾ø¾îÁ³½À´Ï´Ù; `-%c %.*s%.*s%s'À»(¸¦) »ç¿ëÇϽʽÿÀ"
+
+#, fuzzy
+#~ msgid "Arnold Robbins and David MacKenzie"
+#~ msgstr "Paul Rubin ±×¸®°í David MacKenzie"
+
+#, fuzzy
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr "¿©·¯°³ÀÇ ÆÄÀÏÀ» ¼³Ä¡Çϴµ¥ ¸¶Áö¸· Àμö(%s)´Â µð·ºÅ丮°¡ ¾Æ´Õ´Ï´Ù"
+
+#, fuzzy
+#~ msgid "%s is a directory"
+#~ msgstr "%sÀÌ(°¡) Á¸ÀçÇÏÁö¸¸ µð·ºÅ丮°¡ ¾Æ´Õ´Ï´Ù"
+
+#, fuzzy
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "%s¿¡ ´ëÇÑ ÆÄÀÏ Æ÷ÀÎÅ͸¦ ÀçÀ§Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "ÆÄÀÏ 1¿¡ ´ëÇÑ ÇÊµå ¹øÈ£·Î ºÎÀûÀýÇÔ: `%s'"
+
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "ÆÄÀÏ 2¿¡ ´ëÇÑ ÇÊµå ¹øÈ£·Î ºÎÀûÀýÇÔ: `%s'"
+
+#~ msgid "too many non-option arguments"
+#~ msgstr "¿É¼Ç¾Æ´Ñ Àμö°¡ ³Ê¹« ¸¹À½"
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "¿É¼Ç¾Æ´Ñ Àμö°¡ ³Ê¹« ÀûÀ½"
+
+#, fuzzy
+#~ msgid "Mike Parker and David MacKenzie"
+#~ msgstr "Scott Bartram ±×¸®°í David MacKenzie"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: ÆÄÀÏÀÌ Á¸ÀçÇÕ´Ï´Ù"
+
+#, fuzzy
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "½Éº¼¸¯ ¸µÅ©"
+
+#, fuzzy
+#~ msgid "create hard link %s to %s"
+#~ msgstr "Çϵ帵ũ `%s'¸¦ `%s'¿¡ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "»ç¿ë¹ý: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " ¶Ç´Â: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " ¶Ç´Â: %s [OPTION]... --target-directory=DIRECTORY TARGET...\\n\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr "¿©·¯°³ÀÇ ¸µÅ©¸¦ ¸¸µé ¶§¿¡´Â ¸¶Áö¸· Àμö´Â µð·ºÅ丮¿©¾ß ÇÕ´Ï´Ù"
+
+#~ msgid "Ulrich Drepper and Scott Miller"
+#~ msgstr "Ulrich Drepper ±×¸®°í Scott Miller"
+
+#~ msgid ""
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -b, --binary ÀÌÁø ¸ðµå·Î ÆÄÀÏÀ» ÀнÀ´Ï´Ù (µµ½º/À©µµ¿¡¼­ ±âº»"
+#~ "°ª)\n"
+#~ " -c, --check ÁÖ¾îÁø ¸®½ºÆ®¿¡¼­ %s üũ¼¶À» °Ë»çÇÕ´Ï´Ù\n"
+#~ " -t, --text ¹®¼­ ¸ðµå·Î ÆÄÀÏÀ» ÀнÀ´Ï´Ù (±âº»°ª)\n"
+#~ "\n"
+
+#~ msgid "file"
+#~ msgstr "ÆÄÀÏ"
+
+#~ msgid "files"
+#~ msgstr "ÆÄÀÏ"
+
+#~ msgid "checksum"
+#~ msgstr "üũ¼¶"
+
+#~ msgid "checksums"
+#~ msgstr "üũ¼¶"
+
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "--string°ú --check ¿É¼ÇÀº »óÈ£ ¹èŸÀûÀÔ´Ï´Ù"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "--stringÀ» »ç¿ëÇÒ ¶© ÆÄÀÏÀÌ ÁöÁ¤µÉ ¼ö ¾ø½À´Ï´Ù"
+
+#~ msgid "only one argument may be specified when using --check"
+#~ msgstr "--check¸¦ »ç¿ëÇÒ ¶§´Â ¿ÀÁ÷ ÇÑ °³ÀÇ Àμö¸¸ ÁöÁ¤µÉ ¼ö ÀÖ½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "%sÀÇ Çã°¡¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "%sÀÇ Çã°¡¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "wrong number of arguments"
+#~ msgstr "Àμö°¡ ³Ê¹« ÀûÀ½"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr "major¿Í minorÀåÄ¡¹øÈ£´Â fifoÆÄÀÏ¿¡´Â ¼³Á¤ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "%sÀÇ Çã°¡¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "Mike Parker, David MacKenzie, and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie, ±×¸®°í Jim Meyering"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr "¿©·¯°³ÀÇ ÆÄÀÏÀ» ¿Å±æ ¶§¿¡´Â ¸¶Áö¸· Àμö´Â µð·ºÅ丮¿©¾ß ÇÕ´Ï´Ù"
+
+#, fuzzy
+#~ msgid "invalid option `%s'"
+#~ msgstr "ºÎÀûÀýÇÑ Æø ¿É¼Ç `%s'"
+
+#, fuzzy
+#~ msgid "invalid priority `%s'"
+#~ msgstr "ºÎÀûÀýÇÑ Æø: `%s'"
+
+#, fuzzy
+#~ msgid "cannot get priority"
+#~ msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "cannot set priority"
+#~ msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#~ msgid "Scott Bartram and David MacKenzie"
+#~ msgstr "Scott Bartram ±×¸®°í David MacKenzie"
+
+#~ msgid "old-style offset"
+#~ msgstr "¿¾³¯ ¹æ½ÄÀÇ ¿É¼Â"
+
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "ȣȯ ¸ðµå `%s'ÀÇ µÎ¹ø° ÇÇ¿¬»êÀÚ°¡ ºÎÀûÀýÇÔ"
+
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr "ȣȯ ¸ðµå¿¡¼­ ¸¶Áö¸· µÎ Àμö´Â ¿É¼ÂÀ̾î¾ß ÇÕ´Ï´Ù"
+
+#~ msgid "David M. Ihnat and David MacKenzie"
+#~ msgstr "David M. Ihnat ±×¸®°í David MacKenzie"
+
+#, fuzzy
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "ÅÇ Å©±â¿¡ ºÎÀûÀýÇÑ ¹®ÀÚ°¡ ÁöÁ¤µÇ¾î ÀÖ½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "`%s' is not a directory"
+#~ msgstr "%sÀÌ(°¡) Á¸ÀçÇÏÁö¸¸ µð·ºÅ丮°¡ ¾Æ´Õ´Ï´Ù"
+
+#~ msgid "Pete TerMaat and Roland Huebner"
+#~ msgstr "Pete TerMaat ±×¸®°í Roland Huebner"
+
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "`--pages' ºÎÀûÀýÇÑ ÆäÀÌÁö ¹øÈ£ ¹üÀ§: `%s'"
+
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "`--pages' ºÎÀûÀýÇÑ ½ÃÀÛ ÆäÀÌÁö ¹øÈ£: `%s'"
+
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "`--pages' ºÎÀûÀýÇÑ ³¡ ÆäÀÌÁö ¹øÈ£: `%s'"
+
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr "`--pages' ½ÃÀÛ ÆäÀÌÁö ¹øÈ£°¡ ³¡ ÆäÀÌÁö ¹øÈ£º¸´Ù Å®´Ï´Ù"
+
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "`--columns=¿­' ºÎÀûÀýÇÑ ¿­ÀÇ °³¼ö: `%s'"
+
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr " %Y %b %e %H:%M"
+
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr "½ÃÀÛ ÆäÀÌÁö ¹øÈ£°¡ Àüü ÆäÀÌÁö ¼öº¸´Ù Å®´Ï´Ù: `%d'"
+
+#~ msgid "Page %d"
+#~ msgstr "%d ÆäÀÌÁö"
+
+#, fuzzy
+#~ msgid "David MacKenzie and Richard Mlynarik"
+#~ msgstr "David Ihnat, David MacKenzie, ±×¸®°í Jim Meyering"
+
+#, fuzzy
+#~ msgid "\\%c: invalid escape"
+#~ msgstr "%s: ºÎÀûÀýÇÑ ÆÐÅÏ"
+
+#~ msgid ""
+#~ "This program is distributed in the hope that it will be useful,\n"
+#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+#~ "GNU General Public License for more details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "ÀÌ ÇÁ·Î±×·¥Àº À¯¿ëÇÏ°Ô »ç¿ëµÉ ¼ö ÀÖÀ¸¸®¶ó´Â Èñ¸Á¿¡¼­ ¹èÆ÷µÇ°í ÀÖÁö¸¸,\n"
+#~ "ÇÁ·Î±×·¥ÀÇ ½ÃÀ强°ú ƯÁ¤ÇÑ ¸ñÀû¿¡ ¸Â´Â ÀûÇÕ¼º ¿©ºÎ¿¡ ´ëÇÑ ¹¬½ÃÀûÀÎ\n"
+#~ "º¸ÁõÀ» Æ÷ÇÔÇÑ ¾î¶°ÇÑ ÇüÅÂÀÇ º¸Áõµµ Á¦°øµÇÁö ¾Ê½À´Ï´Ù. º¸´Ù ÀÚ¼¼ÇÑ\n"
+#~ "»çÇ׿¡ ´ëÇؼ­´Â GNU General Public License¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+#~ msgstr ""
+#~ "GNU General Public License´Â ÀÌ ÇÁ·Î±×·¥°ú ÇÔ²² Á¦°øµË´Ï´Ù. ¸¸¾à ÀÌ ¹®¼­"
+#~ "°¡\n"
+#~ "´©¶ôµÇ¾î ÀÖ´Ù¸é ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´ÜÀ¸·Î ¹®ÀÇÇϽñ⠹ٶø´Ï´Ù. (ÀÚÀ¯ \n"
+#~ "¼ÒÇÁÆ®¿þ¾î Àç´Ü: Free Software Foundation, Inc., 59 Temple Place - Suite "
+#~ "330, \n"
+#~ "Boston, MA 02111-1307, USA)\n"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "%s µð·ºÅ丮·Î chdirÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "`%s'¿¡¼­ `.'¿¡ ´ëÇØ lstatÄÝÀ» ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "cannot lstat %s"
+#~ msgstr "`%s'ÀÇ Á¤º¸(stat)¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "%s µð·ºÅ丮·Î chdirÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "`.'³ª `..'¸¦ Áö¿ï ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ " -r, -R, --recursive remove the contents of directories recursively\n"
+#~ " -v, --verbose explain what is being done\n"
+#~ msgstr ""
+#~ "ÆÄÀÏÀ» Áö¿ì°Å³ª ¸µÅ©¸¦ ÇØÁ¦ÇÕ´Ï´Ù.\n"
+#~ "\n"
+#~ " -d, --directory ºñ¾î ÀÖÁö ¾Ê¾Æµµ µð·ºÅ丮 ¸µÅ©¸¦ ÇØÁ¦ÇÕ´Ï´Ù(°ü¸®ÀÚ"
+#~ "¿ë)\n"
+#~ " -f, --force Áú¹® ¾øÀÌ Á¸ÀçÇÏÁö ¾Ê´Â ÆÄÀÏÀ» ¹«½ÃÇÕ´Ï´Ù\n"
+#~ " -i, --interactive Áö¿ì±â Àü¿¡ Áú¹®ÇÕ´Ï´Ù\n"
+#~ " -r, -R, --recursive µð·ºÅ丮ÀÇ ³»¿ëÀ» Àç±ÍÀûÀ¸·Î Áö¿ó´Ï´Ù\n"
+#~ " -v, --verbose ÀÛ¾÷À» Ãâ·ÂÇÕ´Ï´Ù\n"
+#~ " --help ÀÌ µµ¿ò¸»À» Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ " --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ "\n"
+#~ "`-foo'¿Í °°ÀÌ `-'·Î ½ÃÀÛÇÏ´Â ÆÄÀÏÀ» Áö¿ì±â À§Çؼ­´Â ´ÙÀ½ ¸í·É Áß Çϳª¸¦\n"
+#~ "»ç¿ëÇÕ´Ï´Ù:\n"
+#~ " %s -- -foo\n"
+#~ " %s ./-foo\n"
+
+#, fuzzy
+#~ msgid "Jim Meyering and Paul Eggert"
+#~ msgstr "Mike Haertel ±×¸®°í Paul Eggert"
+
+#~ msgid "Mike Haertel and Paul Eggert"
+#~ msgstr "Mike Haertel ±×¸®°í Paul Eggert"
+
+#~ msgid "`-%d' option is obsolete; use `-l %d'"
+#~ msgstr "`-%d' ¿É¼ÇÀº ¾ø¾îÁ³½À´Ï´Ù; `-l %d'À»(¸¦) »ç¿ëÇϽʽÿÀ"
+
+#~ msgid "Kayvan Aghaiepour and David MacKenzie"
+#~ msgstr "Kayvan Aghaiepour ±×¸®°í David MacKenzie"
+
+#~ msgid "Jay Lepreau and David MacKenzie"
+#~ msgstr "Jay Lepreau ±×¸®°í David MacKenzie"
+
+#~ msgid "stdin: read error"
+#~ msgstr "stdin: ÆÄÀÏ Àб⠿À·ù"
+
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "%c: ºÎÀûÀýÇÑ Á¢µÎ¾î ¹®ÀÚ°¡ °ð ¾ø¾îÁú ¿É¼Ç¿¡ µé¾î ÀÖ½À´Ï´Ù"
+
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "³Ê¹« ÀÎÀÚ°¡ ¸¹½À´Ï´Ù; tail¿¡¼­ °ð ¾ø¾îÁú ¿É¼ÇÀ» »ç¿ëÇÒ ¶§ (%s)\n"
+#~ "µÎ °³ ÀÌ»óÀÇ ÆÄÀÏ ÀÎÀÚ°¡ ÀÖÀ» ¼öµµ ÀÖ½À´Ï´Ù. ´ë½Å¿¡ °°Àº ±â´ÉÀÇ -nÀ̳ª -"
+#~ "c\n"
+#~ "¿É¼ÇÀ» »ç¿ëÇϼ¼¿ä."
+
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "°æ°í: tailÀÇ °ð ¾ø¾îÁú ¿É¼ÇÀ» »ç¿ëÇؼ­ (%s) µÎ °³ ÀÌ»óÀÇ \n"
+#~ "ÆÄÀÏÀ» »ç¿ëÇÏ´Â °ÍÀº Æ÷ÅͺíÇÏÁö ¾Ê½À´Ï´Ù. °°Àº ±â´ÉÀ» ÇÏ´Â -nÀ̳ª -c\n"
+#~ "¿É¼ÇÀ» »ç¿ëÇϼ¼¿ä."
+
+#~ msgid "`%s' option is obsolete; use `%s-%c %.*s'"
+#~ msgstr "`%s': ÀÌ ¿É¼ÇÀº ¾ø¾îÁ³½À´Ï´Ù; `%s-%c %.*s'À»(¸¦) »ç¿ëÇϽʽÿÀ"
+
+#~ msgid "%s: is so large that it is not representable"
+#~ msgstr "%s: ³Ê¹« Ä¿¼­ Ç¥½ÃÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#~ msgid "%s is larger than the maximum file size on this system"
+#~ msgstr "%s ÀÌ ½Ã½ºÅÛÀÇ ÃÖ´ë ÆÄÀÏ Å©±âº¸´Ù ´õ Å®´Ï´Ù"
+
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr "%s: Áö¼ÓÀûÀÎ Å©±â º¯È­ÀÇ ÃÖ´ë °³¼ö°¡ ºÎÀûÀýÇÕ´Ï´Ù"
+
+#, fuzzy
+#~ msgid "Mike Parker, Richard M. Stallman, and David MacKenzie"
+#~ msgstr "Richard Stallman ±×¸®°í David MacKenzie"
+
+#, fuzzy
+#~ msgid "too many arguments\n"
+#~ msgstr "Àμö°¡ ³Ê¹« ¸¹À½"
+
+#, fuzzy
+#~ msgid "file arguments missing"
+#~ msgstr "Àμö°¡ ³Ê¹« ÀûÀ½"
+
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "ºÎÀûÀýÇÑ ¿ª½½·¡½¬ À̽ºÄÉÀÌÇÁ `\\%c'"
+
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr "Áö¿ò°ú ¹Ýº¹ÁÙÀÓÀ» µ¿½Ã¿¡ ÇÏ´Â °æ¿ì µÎ °³ÀÇ stringÀÌ ÁÖ¾îÁ®¾ß ÇÕ´Ï´Ù"
+
+#~ msgid "at least one string must be given when squeezing repeats"
+#~ msgstr "¹Ýº¹ÁÙÀÓÀÇ °æ¿ì ÃÖ¼Ò 1°³ÀÇ ¹®ÀÚ¿­ÀÌ ÁÖ¾îÁ®¾ß ÇÕ´Ï´Ù"
+
+#~ msgid ""
+#~ "invalid identity mapping; when translating, any [:lower:] or [:upper:]\n"
+#~ "construct in string1 must be aligned with a corresponding construct\n"
+#~ "([:upper:] or [:lower:], respectively) in string2"
+#~ msgstr ""
+#~ "µ¿Àϼº ¸ÅÇÎÀÌ À߸øµÇ¾ú½À´Ï´Ù; ¿Å±èÀÇ °æ¿ì, string1ÀÇ [:lower:]³ª [:"
+#~ "upper:]\n"
+#~ "±¸¼ºÀº string2ÀÇ ´ëÀÀµÇ´Â ±¸¼º(¼ø¼­´ë·Î [:upper:]³ª [:lower:])°ú ¸Â¾Æ¾ß \n"
+#~ "ÇÕ´Ï´Ù"
+
+#~ msgid "only one argument may be specified"
+#~ msgstr "¿ÀÁ÷ ÇÑ °³ÀÇ Àμö¸¸ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù"
+
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr ""
+#~ "-<¸®½ºÆ®> ¿É¼ÇÀº ¾ø¾îÁ³½À´Ï´Ù; `--first-only -t <¸®½ºÆ®>'¸¦ »ç¿ëÇϽʽÿÀ"
+
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "`-%lu' ¿É¼ÇÀº ¾ø¾îÁ³½À´Ï´Ù; `-f %lu'À»(¸¦) »ç¿ëÇϽʽÿÀ"
+
+#, fuzzy
+#~ msgid "Joseph Arceneaux and David MacKenzie"
+#~ msgstr "Jay Lepreau ±×¸®°í David MacKenzie"
+
+#~ msgid "Paul Rubin and David MacKenzie"
+#~ msgstr "Paul Rubin ±×¸®°í David MacKenzie"
+
+#, fuzzy
+#~ msgid "Try %s --help' for more information.\n"
+#~ msgstr "´õ ¸¹Àº Á¤º¸¸¦ º¸·Á¸é `%s --help' ÇϽʽÿÀ.\n"
+
+#, fuzzy
+#~ msgid "cannot lstat `.'"
+#~ msgstr "`%s'¿¡¼­ `.'¿¡ ´ëÇØ lstatÄÝÀ» ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "%s: remove directory %s? "
+#~ msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "%s: directory %s is write protected; descend into it anyway? "
+#~ msgstr "%s: `%s' µð·ºÅ丮´Â ¾²±â º¸È£µÇ¾ú½À´Ï´Ù. ±×·¡µµ °è¼Ó ÇÒ±î¿ä? "
+
+#~ msgid "removing all entries of directory %s\n"
+#~ msgstr "%sµð·ºÅ丮ÀÇ ¸ðµç ³»¿ëÀ» Áö¿ó´Ï´Ù\n"
+
+#~ msgid "continue? "
+#~ msgstr "°è¼ÓÇÒ±î¿ä? "
+
+#, fuzzy
+#~ msgid "cannot change back to directory %s via `..'"
+#~ msgstr "%s µð·ºÅ丮·Î chdirÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "%s: remove directory %s%s? "
+#~ msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#~ msgid " (might be nonempty)"
+#~ msgstr " (¿ÏÀüÈ÷ ºñ¿ìÁö ¾Ê¾Ò½À´Ï´Ù)"
+
+#~ msgid "removing the directory itself: %s\n"
+#~ msgstr "%s µð·ºÅ丮 ÀÚ½ÅÀ» Áö¿ó´Ï´Ù\n"
+
+#~ msgid "cannot fork"
+#~ msgstr "fork() ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid ""
+#~ "ERROR: the source file %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after opening it), the numbers\n"
+#~ "are %lu/%lu. That means that while this program was running,\n"
+#~ "the file was replaced with another one. Skipping this file."
+#~ msgstr ""
+#~ "¿À·ù: `%s' µð·ºÅ丮´Â %lu/%luÀÇ ÀåÄ¡/³ëµå ¹øÈ£°¡ ÀÖ¾ú´Âµ¥, Áö±ÝÀº\n"
+#~ "(chdirÈÄ) `.'ÀÇ ÀåÄ¡/³ëµå ¹øÈ£´Â %lu/%luÀÔ´Ï´Ù. ÀÌ°ÍÀº rm ÁøÇàÁß¿¡\n"
+#~ "µð·ºÅ丮°¡ ´Ù¸¥ µð·ºÅ丮·Î ¹Ù²î¾ú°Å³ª ´Ù¸¥ µð·ºÅ丮ÀÇ ¸µÅ©·Î ¹Ù²î¾ú´Ù´Â \n"
+#~ "ÀǹÌÀÔ´Ï´Ù."
+
+#, fuzzy
+#~ msgid ""
+#~ "ERROR: the directory %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after a chdir into it), the numbers for `.'\n"
+#~ "are %lu/%lu. That means that while rm was running, the directory\n"
+#~ "was replaced with either another directory or a link to another directory."
+#~ msgstr ""
+#~ "¿À·ù: `%s' µð·ºÅ丮´Â %lu/%luÀÇ ÀåÄ¡/³ëµå ¹øÈ£°¡ ÀÖ¾ú´Âµ¥, Áö±ÝÀº\n"
+#~ "(chdirÈÄ) `.'ÀÇ ÀåÄ¡/³ëµå ¹øÈ£´Â %lu/%luÀÔ´Ï´Ù. ÀÌ°ÍÀº rm ÁøÇàÁß¿¡\n"
+#~ "µð·ºÅ丮°¡ ´Ù¸¥ µð·ºÅ丮·Î ¹Ù²î¾ú°Å³ª ´Ù¸¥ µð·ºÅ丮ÀÇ ¸µÅ©·Î ¹Ù²î¾ú´Ù´Â \n"
+#~ "ÀǹÌÀÔ´Ï´Ù."
+
+#, fuzzy
+#~ msgid ""
+#~ "ERROR: the directory %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after changing into at least one subdirectory\n"
+#~ "and changing back via `..'), the numbers for `.' are %lu/%lu.\n"
+#~ "That means that while rm was running, a partially-removed subdirectory\n"
+#~ "was moved to a different position in the file system hierarchy."
+#~ msgstr ""
+#~ "¿À·ù: `%s' µð·ºÅ丮´Â %lu/%luÀÇ ÀåÄ¡/³ëµå ¹øÈ£°¡ ÀÖ¾ú´Âµ¥, Áö±ÝÀº\n"
+#~ "(chdirÈÄ) `.'ÀÇ ÀåÄ¡/³ëµå ¹øÈ£´Â %lu/%luÀÔ´Ï´Ù. ÀÌ°ÍÀº rm ÁøÇàÁß¿¡\n"
+#~ "µð·ºÅ丮°¡ ´Ù¸¥ µð·ºÅ丮·Î ¹Ù²î¾ú°Å³ª ´Ù¸¥ µð·ºÅ丮ÀÇ ¸µÅ©·Î ¹Ù²î¾ú´Ù´Â \n"
+#~ "ÀǹÌÀÔ´Ï´Ù."
+
+#, fuzzy
+#~ msgid " or: %s [-acm] MMDDhhmm[YY] FILE... (obsolete)\n"
+#~ msgstr " ¶Ç´Â: %s [-acm] MMDDhhmm[YY] FILE... (±¸½Ä)\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr " --version ¹öÀü Á¤º¸¸¦ Ãâ·ÂÇÏ°í ³¡³À´Ï´Ù\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr " --version ¹öÀü Á¤º¸¸¦ Ãâ·ÂÇÏ°í ³¡³À´Ï´Ù\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "¹Ù²ï ºí·°À» µð½ºÅ©¿¡ °­Á¦ÀûÀ¸·Î ¾²°Ô ÇÏ°í, ¼öÆÛºí·°À» °»½ÅÇÕ´Ï´Ù.\n"
+#~ "\n"
+#~ " --help ÀÌ µµ¿ò¸»À» Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ " --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr " --version ¹öÀü Á¤º¸¸¦ Ãâ·ÂÇÏ°í ³¡³À´Ï´Ù\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr " --version ¹öÀü Á¤º¸¸¦ Ãâ·ÂÇÏ°í ³¡³À´Ï´Ù\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr " --version ¹öÀü Á¤º¸¸¦ Ãâ·ÂÇÏ°í ³¡³À´Ï´Ù\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr " --version ¹öÀü Á¤º¸¸¦ Ãâ·ÂÇÏ°í ³¡³À´Ï´Ù\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr " --version ¹öÀü Á¤º¸¸¦ Ãâ·ÂÇÏ°í ³¡³À´Ï´Ù\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "¹Ù²ï ºí·°À» µð½ºÅ©¿¡ °­Á¦ÀûÀ¸·Î ¾²°Ô ÇÏ°í, ¼öÆÛºí·°À» °»½ÅÇÕ´Ï´Ù.\n"
+#~ "\n"
+#~ " --help ÀÌ µµ¿ò¸»À» Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ " --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr " --version ¹öÀü Á¤º¸¸¦ Ãâ·ÂÇÏ°í ³¡³À´Ï´Ù\n"
+
+#~ msgid ""
+#~ "Change the group membership of each FILE to GROUP.\n"
+#~ "\n"
+#~ " -c, --changes like verbose but report only when a change is "
+#~ "made\n"
+#~ " --dereference affect the referent of each symbolic link, "
+#~ "rather\n"
+#~ " than the symbolic link itself\n"
+#~ " -h, --no-dereference affect symbolic links instead of any referenced "
+#~ "file\n"
+#~ " (available only on systems that can change the\n"
+#~ " ownership of a symlink)\n"
+#~ " -f, --silent, --quiet suppress most error messages\n"
+#~ " --reference=RFILE use RFILE's group rather than the specified\n"
+#~ " GROUP value\n"
+#~ " -R, --recursive operate on files and directories recursively\n"
+#~ " -v, --verbose output a diagnostic for every file processed\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "°¢ FILEÀÇ ¼ÒÀ¯ ±×·ì¸¦ GROUPÀ¸·Î ¹Ù²ß´Ï´Ù.\n"
+#~ "\n"
+#~ " -c, --changes verbose¿Í °°Áö¸¸ º¯°æÇÏ´Â °æ¿ì¿¡¸¸ ¾Ë¸³´Ï´Ù\n"
+#~ " --dereference ½Éº¼¸¯ ¸µÅ© ÀÚ½ÅÀÌ ¾Æ´Ï¶ó °¢ ½Éº¼¸¯ ¸µÅ©°¡ ÂüÁ¶"
+#~ "ÇÏ´Â\n"
+#~ " °Í¿¡ ÀÛ¿ëÇÕ´Ï´Ù\n"
+#~ " -h, --no-dereference ÂüÁ¶µÇ´Â ÆÄÀÏ ´ë½Å ½Éº¼¸¯ ¸µÅ©¿¡ ÀÛ¿ëÇÕ´Ï´Ù\n"
+#~ " (½Éº¼¸¯ ¸µÅ©ÀÇ ¼ÒÀ¯±ÇÀ» ¹Ù²Ü ¼ö ÀÖ´Â ½Ã½ºÅÛ¿¡¼­"
+#~ "¸¸\n"
+#~ " °¡´ÉÇÕ´Ï´Ù)\n"
+#~ " -f, --silent, --quiet ´ëºÎºÐÀÇ ¿¡·¯¸Þ½ÃÁö¸¦ ³»Áö ¾Ê°Ô ÇÕ´Ï´Ù\n"
+#~ " --reference=RFILE GROUP°ªÀ» »ç¿ëÇÏ´Â ´ë½Å RFILEÀÇ ±×·ìÀ» »ç¿ëÇÕ´Ï"
+#~ "´Ù\n"
+#~ " -R, --recursive ÆÄÀÏ°ú ±× µð·ºÅ丮ÀÇ ¾Æ·¡±îÁö º¯°æÇÕ´Ï´Ù\n"
+#~ " -v, --verbose 󸮵Ǵ ¸ðµç ÆÄÀÏ¿¡ ´ëÇØ Áø´Ü ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÕ´Ï"
+#~ "´Ù\n"
+#~ " --help ÀÌ µµ¿ò¸»À» Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ " --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+#~ "\n"
+#~ " -c, --changes like verbose but report only when a change is "
+#~ "made\n"
+#~ " --dereference affect the referent of each symbolic link, "
+#~ "rather\n"
+#~ " than the symbolic link itself\n"
+#~ " -h, --no-dereference affect symbolic links instead of any referenced "
+#~ "file\n"
+#~ " (available only on systems that can change the\n"
+#~ " ownership of a symlink)\n"
+#~ " --from=CURRENT_OWNER:CURRENT_GROUP\n"
+#~ " change the owner and/or group of each file only "
+#~ "if\n"
+#~ " its current owner and/or group match those "
+#~ "specified\n"
+#~ " here. Either may be omitted, in which case a "
+#~ "match\n"
+#~ " is not required for the omitted attribute.\n"
+#~ " -f, --silent, --quiet suppress most error messages\n"
+#~ " --reference=RFILE use RFILE's owner and group rather than\n"
+#~ " the specified OWNER:GROUP values\n"
+#~ " -R, --recursive operate on files and directories recursively\n"
+#~ " -v, --verbose output a diagnostic for every file processed\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "°¢ FILEÀÇ ¼ÒÀ¯ÀÚ¸¦ OWNER·Î, ±×·ìÀ» GROUPÀ¸·Î, ¶Ç´Â µÑ ´Ù¸¦ ¹Ù²ß´Ï´Ù.\n"
+#~ "\n"
+#~ " -c, --changes verbose¿Í °°Áö¸¸ º¯°æÇÒ¶§¸¸ ¾Ë¸³´Ï´Ù\n"
+#~ " --dereference ½Éº¼¸¯ ¸µÅ© Àڽź¸´Ù °¢ ½Éº¼¸¯ ¸µÅ©°¡ ÂüÁ¶ÇÏ´Â\n"
+#~ " ÆÄÀÏ¿¡°Ô ÀÛ¿ëÇÕ´Ï´Ù\n"
+#~ " -h, --no-dereference ÂüÁ¶µÇ´Â ÆÄÀÏ ´ë½Å ½Éº¼¸¯ ¸µÅ©¿¡ ÀÛ¿ëÇÕ´Ï´Ù\n"
+#~ " (½Éº¼¸¯ ¸µÅ©ÀÇ ¼ÒÀ¯±ÇÀ» ¹Ù²Ü ¼ö ÀÖ´Â ½Ã½ºÅÛ¿¡¼­"
+#~ "¸¸\n"
+#~ " »ç¿ë °¡´ÉÇÕ´Ï´Ù)\n"
+#~ " --from=CURRENT_OWNER:CURRENT_GROUP\n"
+#~ " ÁöÁ¤ÇÑ »ç¿ëÀÚ/±×·ì°ú ÆÄÀÏÀÇ »ç¿ëÀÚ/±×·ìÀÌ ¸Â¾Æ¾ß"
+#~ "¸¸\n"
+#~ " ±× ÆÄÀÏÀÇ »ç¿ëÀÚ/±×·ìÀ» º¯°æÇÕ´Ï´Ù. ÇÊ¿ä ¾ø´Ù"
+#~ "¸é\n"
+#~ " µÑ Áß Çϳª¸¦ »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù.\n"
+#~ " -f, --silent, --quiet ´ëºÎºÐÀÇ ¿¡·¯¸Þ½ÃÁö¸¦ ³»Áö ¾Ê°Ô ÇÕ´Ï´Ù\n"
+#~ " --reference=RFILE ¸í½ÃÀûÀÎ OWNER.GROUP °ªÀ» »ç¿ëÇÏ´Â ´ë½Å RFILE"
+#~ "ÀÇ\n"
+#~ " ¼ÒÀ¯ÀÚ¿Í ±×·ì °ªÀ» »ç¿ëÇÕ´Ï´Ù\n"
+#~ " -R, --recursive ÆÄÀÏ°ú ±× µð·ºÅ丮ÀÇ ¾Æ·¡±îÁö º¯°æÇÕ´Ï´Ù\n"
+#~ " -v, --verbose 󸮵Ǵ ¸ðµç ÆÄÀÏ¿¡ ´ëÇØ Áø´Ü ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÕ´Ï"
+#~ "´Ù\n"
+#~ " --help ÀÌ µµ¿ò¸»À» Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ " --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ "\n"
+#~ "¼ÒÀ¯ÀÚ¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀº °æ¿ì º¯°æÇÏÁö ¾Ê½À´Ï´Ù. ¶ÇÇÑ ±×·ìµµ ÁöÁ¤ÇÏÁö ¾ÊÀ¸"
+#~ "¸é\n"
+#~ "¹Ù²îÁö ¾ÊÁö¸¸ ¸¶Ä§Ç¥(.)¸¦ ÁÖ´Â °æ¿ì¿¡´Â ·Î±×ÀνÃÀÇ ±×·ìÀ¸·Î º¯°æÇÕ´Ï´Ù.\n"
+#~ "ÄÝ·Ð(:)À» ¸¶Ä§Ç¥(.) ´ë½Å ¾µ ¼ö ÀÖ½À´Ï´Ù.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -l, --link link files instead of copying\n"
+#~ " -L, --dereference always follow symbolic links\n"
+#~ " -p same as --preserve=mode,ownership,"
+#~ "timestamps\n"
+#~ " --preserve[=ATTR_LIST] preserve the specified attributes "
+#~ "(default:\n"
+#~ " mode,ownership,timestamps), if possible\n"
+#~ " additional attributes: links, all\n"
+#~ " --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+#~ " --parents append source path to DIRECTORY\n"
+#~ " -P same as `--no-dereference'\n"
+#~ " -r copy recursively, non-directories as "
+#~ "files\n"
+#~ " WARNING: use -R instead when you might "
+#~ "copy\n"
+#~ " special files like FIFOs or /dev/zero\n"
+#~ " --remove-destination remove each existing destination file "
+#~ "before\n"
+#~ " attempting to open it (contrast with --"
+#~ "force)\n"
+#~ msgstr ""
+#~ "SOURCE¸¦ DEST·Î º¹»çÇϰųª ¿©·¯°³ÀÇ SOURCE¸¦ DIRECTORY·Î º¹»çÇÕ´Ï´Ù.\n"
+#~ "\n"
+#~ " -a, --archive -dpR¿É¼Ç°ú °°½À´Ï´Ù\n"
+#~ " --backup[=CONTROL] Áö¿ì±â Àü¿¡ ¹é¾÷º»À» ¸¸µì´Ï´Ù.\n"
+#~ " -b --backup°ú ºñ½ÁÇѵ¥ Àμö¸¦ ¹ÞÁö ¾Ê´Â´Ù\n"
+#~ " -d, --no-dereference ¸µÅ©¸¦ À¯ÁöÇÕ´Ï´Ù\n"
+#~ " -f, --force ÀÌ¹Ì Á¸ÀçÇÏ´Â DEST¸¦ Áú¹® ¾øÀÌ »èÁ¦ÇÕ´Ï"
+#~ "´Ù.\n"
+#~ " -i, --interactive µ¤¾î ¾²±â Àü¿¡ ¿©ºÎ¸¦ ¹¯½À´Ï´Ù\n"
+#~ " -l, --link ÆÄÀÏÀ» º¹»çÇÏÁö ¾Ê°í ¸µÅ©ÇÕ´Ï´Ù.\n"
+#~ " -p, --preserve °¡´ÉÇÏ´Ù¸é ÆÄÀÏ ¼Ó¼ºÀ» À¯ÁöÇÕ´Ï´Ù.\n"
+#~ " -P, --parents ¿øº»ÀÇ °æ·Î¸¦ DIRECTORY¿¡ Ãß°¡ÇÕ´Ï´Ù\n"
+#~ " -r ÇÏÀ§ µð·ºÅ丮±îÁö º¹»çÇÕ´Ï´Ù. µð·ºÅ丮°¡\n"
+#~ " ¾Æ´Ñ °ÍÀº ÆÄÀÏ·Î ¿©±é´Ï´Ù\n"
+#~ " *°æ°í*: FIFO³ª /dev/zero°°Àº Ưº° ÆÄÀÏ"
+#~ "À»\n"
+#~ " º¹»çÇÒ °æ¿ì¿¡´Â -RÀ» »ç¿ëÇϼ¼¿ä\n"
+#~ " --sparse=WHEN ¼º±ä ÆÄÀÏ(sparse file)ÀÇ »ý¼ºÀ» Á¶ÀýÇÕ´Ï"
+#~ "´Ù\n"
+#~ " -R, --recursive Àç±ÍÀûÀ¸·Î º¹»çÇÕ´Ï´Ù\n"
+#~ " --strip-trailing-slashes °¢ SOURCE Àμö¿¡¼­ ³¡ÀÇ ½½·¡½Ã(/)¹®ÀÚ¸¦\n"
+#~ " Áö¿ó´Ï´Ù\n"
+#~ " -s, --symbolic-link º¹»çÇÏ´Â ´ë½Å ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µì´Ï´Ù\n"
+#~ " -S, --suffix=SUFFIX ÀϹÝÀûÀÎ ¹é¾÷ Á¢¹Ì»ç¸¦ °ãÃľ¹´Ï´Ù\n"
+#~ " --target-directory=DIRECTORY ¸ðµç SOURCE ÀÇ Àμö¸¦ DIRECTORY·Î ¿Å±é"
+#~ "´Ï´Ù\n"
+#~ " -u, --update SOURCEÆÄÀÏÀÌ º¹»çµÉ ÆÄÀϺ¸´Ù »õ°ÍÀ̰ųª\n"
+#~ " º¹»çµÉ ÆÄÀÏÀÌ ¾øÀ» ¶§¸¸ º¹»çÇÕ´Ï´Ù\n"
+#~ " -v, --verbose ÀÛ¾÷À» Ãâ·ÂÇÕ´Ï´Ù\n"
+#~ " -x, --one-file-system ÀÌ ÆÄÀϽýºÅÛ¿¡¼­¸¸ º¹»çÇÕ´Ï´Ù\n"
+#~ " --help ÀÌ µµ¿ò¸»À» º¸¿©ÁÖ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ " --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ "\n"
+#~ "±âº»ÀûÀ¸·Î ¼º±ä SOURCE ÆÄÀÏÀº ±×¸® ÁÁÁö ¾ÊÀº ¹æ¹ýÀ¸·Î ŽÁöÇØ ³»¾î\n"
+#~ "´ëÀÀÇÏ´Â DESTÆÄÀϵµ ¶ÇÇÑ ¼º±â°Ô ¸¸µì´Ï´Ù. ÀÌ°ÍÀº --sparse=auto\n"
+#~ "¿¡ ÀÇÇØ ¼±ÅõǴ ÇൿÀ̸ç, --sparse=always¶ó°í ÁöÁ¤Çϸé SOURCEÆÄÀÏ¿¡\n"
+#~ "ÃæºÐÇÑ Å©±âÀÇ 0À¸·Î °è¼ÓµÇ´Â ÁöÁ¡ÀÌ ÀÖÀ» ¶§´Â ¾ðÁ¦³ª ¼º±ä DESTÆÄÀÏÀ»\n"
+#~ "¸¸µì´Ï´Ù.\n"
+#~ "--sparse=never¶ó°í ÁöÁ¤ÇÏ¸é ¼º±ä ÆÄÀÏÀ» »ý¼ºÇÏÁö ¸øÇÏ°Ô ÇÕ´Ï´Ù.\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Copy a file, converting and formatting according to the options.\n"
+#~ "\n"
+#~ " bs=BYTES force ibs=BYTES and obs=BYTES\n"
+#~ " cbs=BYTES convert BYTES bytes at a time\n"
+#~ " conv=KEYWORDS convert the file as per the comma separated keyword "
+#~ "list\n"
+#~ " count=BLOCKS copy only BLOCKS input blocks\n"
+#~ " ibs=BYTES read BYTES bytes at a time\n"
+#~ " if=FILE read from FILE instead of stdin\n"
+#~ " obs=BYTES write BYTES bytes at a time\n"
+#~ " of=FILE write to FILE instead of stdout\n"
+#~ " seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+#~ " skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "BLOCKS and BYTES may be followed by the following multiplicative "
+#~ "suffixes:\n"
+#~ "xM M, c 1, w 2, b 512, kD 1000, k 1024, MD 1,000,000, M 1,048,576,\n"
+#~ "GD 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.\n"
+#~ "Each KEYWORD may be:\n"
+#~ "\n"
+#~ " ascii from EBCDIC to ASCII\n"
+#~ " ebcdic from ASCII to EBCDIC\n"
+#~ " ibm from ASCII to alternated EBCDIC\n"
+#~ " block pad newline-terminated records with spaces to cbs-size\n"
+#~ " unblock replace trailing spaces in cbs-size records with newline\n"
+#~ " lcase change upper case to lower case\n"
+#~ " notrunc do not truncate the output file\n"
+#~ " ucase change lower case to upper case\n"
+#~ " swab swap every pair of input bytes\n"
+#~ " noerror continue after read errors\n"
+#~ " sync pad every input block with NULs to ibs-size; when used\n"
+#~ " with block or unblock, pad with spaces rather than NULs\n"
+#~ msgstr ""
+#~ "¿É¼Ç¿¡ µû¶ó ÆÄÀÏÀ» º¹»çÇÏ°í, º¯È¯ÇÏ°í Æ÷¸ËÇÕ´Ï´Ù\n"
+#~ "\n"
+#~ " bs=BYTES ibs=BYTES¿Í obs=BYTES¸¦ °°ÀÌ ÁöÁ¤ÇÕ´Ï´Ù\n"
+#~ " cbs=BYTES Çѹø¿¡ BYTES¸¸Å­ÀÇ ¹ÙÀÌÆ®¸¦ º¯È¯ÇÕ´Ï´Ù\n"
+#~ " conv=KEYWORDS ÆÄÀÏÀ» ½°Ç¥(,)·Î ºÐ¸®µÈ Å°¿öµå ¸®½ºÆ®¿¡ µû¶ó º¯È¯ÇÕ´Ï"
+#~ "´Ù\n"
+#~ " count=BLOCKS BLOCKS°³ÀÇ ÀÔ·Â ºí·°¸¸ ¹Þ½À´Ï´Ù\n"
+#~ " ibs=BYTES Çѹø¿¡ BYTES¹ÙÀÌÆ®ÀÇ ÆÄÀÏÀ» ÀнÀ´Ï´Ù\n"
+#~ " if=FILE Ç¥ÁØÀÔ·Â ´ë½Å FILE¿¡¼­ ÀнÀ´Ï´Ù\n"
+#~ " obs=BYTES Çѹø¿¡ BYTES¹ÙÀÌÆ®¸¦ ÀнÀ´Ï´Ù\n"
+#~ " of=FILE Ç¥ÁØÃâ·Â ´ë½Å FILE¿¡ ¾²¸ç, Á¸ÀçÇÏ´Â ÆÄÀÏÀ» ¾ø¾ÖÁö ¾Ê½À´Ï"
+#~ "´Ù\n"
+#~ " seek=BLOCKS Ãâ·Â ½ÃÀ۽ÿ¡ obsÅ©±âÀÇ ºí·° BLOCKS°³¸¦ ¶Ù¾î³Ñ½À´Ï´Ù\n"
+#~ " skip=BLOCKS ÀÔ·Â ½ÃÀ۽ÿ¡ ibsÅ©±âÀÇ ºí·° BLOCKS°³¸¦ ¶Ù¾î³Ñ½À´Ï´Ù\n"
+#~ " --help ÀÌ µµ¿ò¸»À» Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ " --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ "\n"
+#~ "BYTES´Â ´ÙÀ½ÀÇ ¼ö·®À» ³ªÅ¸³»´Â Á¢¹Ì¾î¿Í ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:\n"
+#~ "xM M, c 1, w 2, b 512, kD 1000, k 1024, MD 1,000,000, M 1,048,576,\n"
+#~ "GD 1,000,000,000, G 1,073,741,824, ±×¸®°í T, P, E, Z, Yµµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï"
+#~ "´Ù\n"
+#~ "(¿¹: c´Â x1¿Í °°°í, w´Â x2¿Í °°À¸¸ç, b´Â x512¿Í °°À¸¸ç k´Â x1024¿Í °°½À´Ï"
+#~ "´Ù.\n"
+#~ "°¢°¢ÀÇ KEYWORD´Â ´ÙÀ½°ú °°½À´Ï´Ù:\n"
+#~ "\n"
+#~ " ascii EBCDIC¿¡¼­ ASCII·Î º¯È¯ÇÕ´Ï´Ù\n"
+#~ " ebcdic ASCII¿¡¼­ EBCDICÀ¸·Î º¯È¯ÇÕ´Ï´Ù\n"
+#~ " ibm ASCII¿¡¼­ ´ëü(alternated) EBCDICÀ¸·Î º¯È¯ÇÕ´Ï´Ù\n"
+#~ " block °³Ç๮ÀÚ·Î ³¡³ª´Â ·¹Äڵ带 cbsÅ©±âÀÇ °ø¹é¹®ÀڷΠä¿ó´Ï´Ù\n"
+#~ " unblock cbsÅ©±âÀÇ ·¹ÄÚµå µÞºÎºÐÀÇ °ø¹é¹®ÀÚµéÀ» °³Ç๮ÀÚ·Î ¹Ù²ß´Ï´Ù\n"
+#~ " lcase ´ë¹®ÀÚ¸¦ ¼Ò¹®ÀÚ·Î ¹Ù²ß´Ï´Ù\n"
+#~ " notrunc Ãâ·Â ÆÄÀÏÀÇ ³¡À» À߶ó³»Áö ¾Ê½À´Ï´Ù\n"
+#~ " ucase ¼Ò¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î ¹Ù²ß´Ï´Ù\n"
+#~ " swab ÀÔ·ÂÇÏ´Â µÎ ¹ÙÀÌÆ®ÀÇ ¼ø¼­¸¦ ¹Ù²ß´Ï´Ù\n"
+#~ " noerror Àб⠿¡·¯°¡ ³ªµµ °è¼ÓÇÕ´Ï´Ù\n"
+#~ " sync ibsÅ©±âÀÇ ÀÔ·Â ·¹Äڵ带 Å©±â°¡ ¸ÂÁö ¾ÊÀ¸¸é NUL·Î ä¿ó´Ï´Ù\n"
+
+#~ msgid ""
+#~ "Show information about the filesystem on which each FILE resides,\n"
+#~ "or all filesystems by default.\n"
+#~ "\n"
+#~ " -a, --all include filesystems having 0 blocks\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -i, --inodes list inode information instead of block usage\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l, --local limit listing to local filesystems\n"
+#~ " -m, --megabytes like --block-size=1048576\n"
+#~ " --no-sync do not invoke sync before getting usage info "
+#~ "(default)\n"
+#~ " -P, --portability use the POSIX output format\n"
+#~ " --sync invoke sync before getting usage info\n"
+#~ " -t, --type=TYPE limit listing to filesystems of type TYPE\n"
+#~ " -T, --print-type print filesystem type\n"
+#~ " -x, --exclude-type=TYPE limit listing to filesystems not of type "
+#~ "TYPE\n"
+#~ " -v (ignored)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "°¢°¢ÀÇ FILEÀÌ ÀÖ´Â ÆÄÀÏ ½Ã½ºÅÛ¿¡ ´ëÇÑ Á¤º¸¸¦ Ãâ·ÂÇÕ´Ï´Ù.\n"
+#~ "±âº»°ªÀº ¸ðµç ÆÄÀϽýºÅÛÀÔ´Ï´Ù.\n"
+#~ "\n"
+#~ " -a, --all 0ºí·°À» °¡Áø ÆÄÀϽýºÅÛµµ Ãâ·Â¿¡ Æ÷ÇÔÇÕ´Ï´Ù\n"
+#~ " --block-size=SIZE SIZE ¹ÙÀÌÆ® Å©±âÀÇ ºí·°À» »ç¿ëÇÕ´Ï´Ù\n"
+#~ " -h, --human-readable Å©±â¸¦ »ç¶÷ÀÌ ¾Ë±â ½±°Ô(1K, 234M, 2Gµî)Ç¥½ÃÇÕ´Ï"
+#~ "´Ù\n"
+#~ " -H, --si ºñ½ÁÇÕ´Ï´Ù¸¸ 1024¹è ´ë½Å 1000¹è¸¦ »ç¿ëÇÕ´Ï´Ù\n"
+#~ " -i, --inodes ºí·° »ç¿ë ´ë½Å inodeÁ¤º¸¸¦ Ç¥½ÃÇÕ´Ï´Ù\n"
+#~ " -k, --kilobytes --block-size=1024¿Í °°½À´Ï´Ù\n"
+#~ " -l, --local Áö¿ª ÆÄÀϽýºÅÛ¸¸ ³ª¿­ÇÕ´Ï´Ù\n"
+#~ " -m, --megabytes --block-size=1048576°ú °°½À´Ï´Ù\n"
+#~ " --no-sync »ç¿ëÁ¤º¸¸¦ ¾ò±â Àü¿¡ sync¸¦ ºÎ¸£Áö ¾Ê½À´Ï´Ù(±âº»"
+#~ "°ª)\n"
+#~ " -P, --portability POSIX»ç¾çÀ¸·Î Ãâ·ÂÇÕ´Ï´Ù\n"
+#~ " --sync »ç¿ëÁ¤º¸¸¦ ¾ò±â Àü¿¡ sync¸¦ ºÎ¸¨´Ï´Ù\n"
+#~ " -t, --type=TYPE TYPEÇüÅÂÀÇ ÆÄÀϽýºÅÛ¿¡ ´ëÇÑ Á¤º¸¸¸ Ç¥½ÃÇÕ´Ï´Ù\n"
+#~ " -T, --print-type ÆÄÀϽýºÅÛ ÇüŸ¦ Ãâ·ÂÇÕ´Ï´Ù\n"
+#~ " -x, --exclude-type=TYPE TYPEÇüÅ°¡ ¾Æ´Ñ ÆÄÀϽýºÅÛ Á¤º¸¸¸ Ç¥½ÃÇÕ´Ï´Ù\n"
+#~ " -v (¹«½ÃÇÕ´Ï´Ù)\n"
+#~ " --help ÀÌ µµ¿ò¸»À» Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ " --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+
+#~ msgid ""
+#~ "Summarize disk usage of each FILE, recursively for directories.\n"
+#~ "\n"
+#~ " -a, --all write counts for all files, not just directories\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -b, --bytes print size in bytes\n"
+#~ " -c, --total produce a grand total\n"
+#~ " -D, --dereference-args dereference PATHs when symbolic link\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l, --count-links count sizes many times if hard linked\n"
+#~ " -L, --dereference dereference all symbolic links\n"
+#~ " -m, --megabytes like --block-size=1048576\n"
+#~ " -S, --separate-dirs do not include size of subdirectories\n"
+#~ " -s, --summarize display only a total for each argument\n"
+#~ " -x, --one-file-system skip directories on different filesystems\n"
+#~ " -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+#~ "FILE.\n"
+#~ " --exclude=PAT Exclude files that match PAT.\n"
+#~ " --max-depth=N print the total for a directory (or file, with --"
+#~ "all)\n"
+#~ " only if it is N or fewer levels below the "
+#~ "command\n"
+#~ " line argument; --max-depth=0 is the same as\n"
+#~ " --summarize\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "µð·ºÅ丮¸¦ µû¶ó °¢ FILEÀÇ µð½ºÅ© »ç¿ëÀ» ¿ä¾àÇÕ´Ï´Ù.\n"
+#~ "\n"
+#~ " -a, --all µð·ºÅ丮¸¸ÀÌ ¾Æ´Ï°í °¢ ÆÄÀÏÀ» ¸ðµÎ ¼Á´Ï´Ù\n"
+#~ " -b, --bytes Å©±â¸¦ ¹ÙÀÌÆ®·Î Ç¥½ÃÇÕ´Ï´Ù\n"
+#~ " --block-size=SIZE SIZE ¹ÙÀÌÆ® Å©±âÀÇ ºí·°À» »ç¿ëÇÕ´Ï´Ù\n"
+#~ " -c, --total ÃÑÇÕÀ» °è»êÇÕ´Ï´Ù\n"
+#~ " -D, --dereference-args ½Éº¼¸¯ ¸µÅ©ÀÇ °æ¿ì °æ·Î¸¦ µû¶ó°©´Ï´Ù\n"
+#~ " -h, --human-readable Å©±â¸¦ »ç¶÷ÀÌ ¾Ë±â ½±°Ô(1K, 234M, 2Gµî)Ç¥½ÃÇÕ´Ï"
+#~ "´Ù\n"
+#~ " -k, --kilobytes --block-size=1024¿Í °°½À´Ï´Ù\n"
+#~ " -l, --count-links Çϵ帵ũÀÇ °æ¿ì¿¡µµ ¸Å¹ø Å©±â¸¦ °è»êÇÕ´Ï´Ù\n"
+#~ " -L, --dereference ¸ðµç ½Éº¼¸¯ ¸µÅ©¸¦ µû¶ó°©´Ï´Ù\n"
+#~ " -m, --megabytes --block-size=1048576°ú °°½À´Ï´Ù\n"
+#~ " -S, --separate-dirs ÇÏÀ§ µð·ºÅ丮ÀÇ Å©±â´Â Æ÷ÇÔÇÏÁö ¾Ê½À´Ï´Ù\n"
+#~ " -s, --summarize °¢ Àμö¿¡ ´ëÇؼ­¸¸ Çհ踦 Ç¥½ÃÇÕ´Ï´Ù\n"
+#~ " -x, --one-file-system ´Ù¸¥ ÆÄÀϽýºÅÛ¿¡ ÀÖ´Â µð·ºÅ丮´Â Á¦¿ÜÇÕ´Ï´Ù\n"
+#~ " -X FILE, --exclude-from=FILE FILE ¾ÈÀÇ ÆÐÅÏ¿¡ ÀÏÄ¡ÇÏ´Â ÆÄÀÏÀº Á¦¿ÜÇÕ´Ï"
+#~ "´Ù\n"
+#~ " --exclude=PAT PATÆÐÅÏ¿¡ ÀÏÄ¡ÇÏ´Â ÆÄÀÏÀº Á¦¿ÜÇÕ´Ï´Ù.\n"
+#~ " --max-depth=N µð·ºÅ丮(--with all¿É¼ÇÀÇ °æ¿ì ÆÄÀϵµ)ÀÇ ±íÀÌ°¡\n"
+#~ " Nº¸´Ù ÀÛÀº °Í¿¡ ´ëÇؼ­¸¸ Çհ踦 Ç¥½ÃÇÕ´Ï´Ù;\n"
+#~ " --max-depth=0 ´Â --summarize¿Í °°½À´Ï´Ù\n"
+#~ " --help ÀÌ µµ¿ò¸»À» Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ " --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+
+#~ msgid ""
+#~ "In the first two formats, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+#~ "the existing DIRECTORY, while setting permission modes and owner/group.\n"
+#~ "In the third format, create all components of the given DIRECTORY(ies).\n"
+#~ "\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination file\n"
+#~ " -b like --backup but does not accept an argument\n"
+#~ " -c (ignored)\n"
+#~ " -d, --directory treat all arguments as directory names; create all\n"
+#~ " components of the specified directories\n"
+#~ " -D create all leading components of DEST except the "
+#~ "last,\n"
+#~ " then copy SOURCE to DEST; useful in the 1st "
+#~ "format\n"
+#~ " -g, --group=GROUP set group ownership, instead of process' current "
+#~ "group\n"
+#~ " -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-"
+#~ "xr-x\n"
+#~ " -o, --owner=OWNER set ownership (super-user only)\n"
+#~ " -p, --preserve-timestamps apply access/modification times of SOURCE "
+#~ "files\n"
+#~ " to corresponding destination files\n"
+#~ " -s, --strip strip symbol tables, only for 1st and 2nd formats\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " -v, --verbose print the name of each directory as it is created\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "óÀ½ µÎ°¡Áö Çü½Ä¿¡¼­´Â SOURCE¸¦ DEST·Î º¹»çÇϰųª ¿©·¯°³ÀÇ SOURCE¸¦\n"
+#~ "±âÁ¸ÀÇ DIRECTORY·Î º¹»çÇϸç, ÆÄÀÏ ±ÇÇÑÀ̳ª ¼ÒÀ¯ÀÚ/±×·ìÀ» ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï"
+#~ "´Ù\n"
+#~ "¼¼¹ø° Çü½Ä¿¡¼­´Â ÁÖ¾îÁø DIRECTORYÀÇ ¸ðµç ±¸¼º ¿ä¼Ò¸¦ ¸¸µì´Ï´Ù\n"
+#~ "\n"
+#~ " --backup[=CONTROL] Áö¿ì±â Àü¿¡ ¹é¾÷º»À» ¸¸µì´Ï´Ù\n"
+#~ " -b --backup°ú ºñ½ÁÇѵ¥ Àμö¸¦ ¹ÞÁö ¾Ê´Â´Ù\n"
+#~ " -c (¹«½ÃÇÕ´Ï´Ù)\n"
+#~ " -d, --directory ¸ðµç Àμö¸¦ µð·ºÅ丮 À̸§À¸·Î Ãë±ÞÇÕ´Ï´Ù; ÁöÁ¤"
+#~ "µÈ\n"
+#~ " µð·ºÅ丮µéÀÇ ¸ðµç ±¸¼º ¿ä¼Ò¸¦ ¸¸µì´Ï´Ù\n"
+#~ " -D ¸¶Áö¸· °ÍÀ» Á¦¿ÜÇÑ ¸ðµç DESTÀÇ ±¸¼º ¿ä¼Ò¸¦ ¸¸µé"
+#~ "°í\n"
+#~ " SOURCE¸¦ DEST·Î º¹»çÇÕ´Ï´Ù. ù¹ø° Çü½Ä¿¡ À¯¿ëÇÕ"
+#~ "´Ï´Ù\n"
+#~ " -g, --group=GROUP ÇÁ·Î¼¼½ºÀÇ ÇöÀç ±×·ìÀÌ ¾Æ´Ñ ¼ÒÀ¯ÀÚ ±×·ìÀ» ÁöÁ¤ÇÕ"
+#~ "´Ï´Ù\n"
+#~ " -m, --mode=MODE rwxr-xr-x´ë½ÅÀÇ ¸ðµåÀ» ÁöÁ¤ÇÕ´Ï´Ù(chmod¿Í °°ÀÌ)\n"
+#~ " -o, --owner=OWNER ¼ÒÀ¯ÀÚ¸¦ ÁöÁ¤ÇÕ´Ï´Ù(°ü¸®ÀÚ¿ë)\n"
+#~ " -p, --preserve-timestamps ÇØ´ç ¸ñÀû ÆÄÀÏ¿¡ SOURCEÆÄÀÏÀÇ Á¢±Ù/º¯°æ\n"
+#~ " ½Ã°£À» Àû¿ëÇÕ´Ï´Ù\n"
+#~ " -s, --strip ½Éº¼ Å×À̺íÀ» »èÁ¦ÇÕ´Ï´Ù(ù¹ø°¿Í µÎ¹ø° Çü½Ä"
+#~ "¸¸)\n"
+#~ " -S, --suffix=SUFFIX ÀϹÝÀûÀÎ ¹é¾÷ Á¢¹Ì»ç¸¦ °ãÃÄ ¾¹´Ï´Ù\n"
+#~ " -v, --verbose µð·ºÅ丮°¡ ¸¸µé¾îÁú¶§ ±× À̸§À» Ãâ·ÂÇÕ´Ï´Ù\n"
+#~ " --help ÀÌ µµ¿ò¸»À» Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ " --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Create a link to the specified TARGET with optional LINK_NAME.\n"
+#~ "If LINK_NAME is omitted, a link with the same basename as the TARGET is\n"
+#~ "created in the current directory. When using the second form with more\n"
+#~ "than one TARGET, the last argument must be a directory; create links\n"
+#~ "in DIRECTORY to each TARGET. Create hard links by default, symbolic\n"
+#~ "links with --symbolic. When creating hard links, each TARGET must "
+#~ "exist.\n"
+#~ "\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination "
+#~ "file\n"
+#~ " -b like --backup but does not accept an "
+#~ "argument\n"
+#~ " -d, -F, --directory hard link directories (super-user only)\n"
+#~ " -f, --force remove existing destination files\n"
+#~ " -n, --no-dereference treat destination that is a symlink to a\n"
+#~ " directory as if it were a normal file\n"
+#~ " -i, --interactive prompt whether to remove destinations\n"
+#~ " -s, --symbolic make symbolic links instead of hard links\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " --target-directory=DIRECTORY specify the DIRECTORY in which to "
+#~ "create\n"
+#~ " the links\n"
+#~ " -v, --verbose print name of each file before linking\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "TARGET¿¡¼­ ¿É¼ÇÀ¸·Î ÁöÁ¤µÈ LINK_NAMEÀ¸·Î ¸µÅ©¸¦ ¸¸µì´Ï´Ù. Çϳª ÀÌ»óÀÇ "
+#~ "TARGETÀÌ\n"
+#~ "ÀÖ´Ù¸é ¸¶Áö¸· Àμö´Â µð·ºÅ丮°¡ µË´Ï´Ù; ¶Ç ÇϳªÀÇ ¹æ¹ýÀº °¢ TARGETÀÇ\n"
+#~ "¸µÅ©¸¦ DIRECTORY¿¡ ¸¸µì´Ï´Ù. ±âº»ÀûÀ¸·Î Çϵ帵ũ¸¦ ¸¸µé°í, ½Éº¼¸¯\n"
+#~ "¸µÅ©´Â --symbolicÀ¸·Î ¸¸µì´Ï´Ù. Çϵ帵ũ¸¦ ¸¸µé ¶§¿¡´Â TARGETÀÌ ¹Ýµå½Ã\n"
+#~ "Á¸ÀçÇØ¾ß ÇÕ´Ï´Ù.\n"
+#~ "\n"
+#~ " --backup[=CONTROL] Áö¿ì±â Àü¿¡ ¹é¾÷º»À» ¸¸µì´Ï´Ù\n"
+#~ " -b --backup°ú ºñ½ÁÇѵ¥ Àμö¸¦ ¹ÞÁö ¾Ê´Â´Ù\n"
+#~ " -d, -F, --directory µð·ºÅ丮¸¦ Çϵ帵ũÇÕ´Ï´Ù(°ü¸®ÀÚ¸¸)\n"
+#~ " -f, --force Á¸ÀçÇÏ´Â DEST¸¦ Áö¿ó´Ï´Ù\n"
+#~ " -n, --no-dereference µð·ºÅ丮·ÎÀÇ ½Éº¼¸¯ ¸µÅ©¸¦ ÀÏ¹Ý ÆÄÀÏÀΰÍó"
+#~ "·³\n"
+#~ " ó¸®ÇÕ´Ï´Ù\n"
+#~ " -i, --interactive DEST¸¦ Áö¿ï °ÍÀÎÁö ¹°¾îº¾´Ï´Ù\n"
+#~ " -s, --symbolic Çϵ帵ũ ´ë½Å ½Éº¼¸¯ ¸µÅ©¸¦ ÇÕ´Ï´Ù\n"
+#~ " -S, --suffix=SUFFIX ÀϹÝÀûÀÎ ¹é¾÷ Á¢¹Ì»ç¸¦ °ãÃÄ ¾¹´Ï´Ù\n"
+#~ " --target-directory=DIRECTORY ¸µÅ©¸¦ »ý¼ºÇÒ µð·ºÅ丮¸¦ ÁöÁ¤ÇÕ´Ï´Ù\n"
+#~ " -v, --verbose ¸µÅ©Çϱâ Àü¿¡ °¢°¢ÀÇ ÆÄÀÏÀ̸§À» Ãâ·ÂÇÕ´Ï"
+#~ "´Ù\n"
+#~ " --help ÀÌ µµ¿ò¸»À» Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ " --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "List information about the FILEs (the current directory by default).\n"
+#~ "Sort entries alphabetically if none of -cftuSUX nor --sort.\n"
+#~ "\n"
+#~ " -a, --all do not hide entries starting with .\n"
+#~ " -A, --almost-all do not list implied . and ..\n"
+#~ " -b, --escape print octal escapes for nongraphic "
+#~ "characters\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -B, --ignore-backups do not list implied entries ending with ~\n"
+#~ " -c with -lt: sort by, and show, ctime (time of "
+#~ "last\n"
+#~ " modification of file status information)\n"
+#~ " with -l: show ctime and sort by name\n"
+#~ " otherwise: sort by ctime\n"
+#~ " -C list entries by columns\n"
+#~ " --color[=WHEN] control whether color is used to distinguish "
+#~ "file\n"
+#~ " types. WHEN may be `never', `always', or "
+#~ "`auto'\n"
+#~ " -d, --directory list directory entries instead of contents\n"
+#~ " -D, --dired generate output designed for Emacs' dired "
+#~ "mode\n"
+#~ " -f do not sort, enable -aU, disable -lst\n"
+#~ " -F, --classify append indicator (one of */=@|) to entries\n"
+#~ " --format=WORD across -x, commas -m, horizontal -x, long -"
+#~ "l,\n"
+#~ " single-column -1, verbose -l, vertical -C\n"
+#~ " --full-time like -l --time-style=full-iso\n"
+#~ msgstr ""
+#~ "FILE¿¡ ´ëÇÑ Á¤º¸¸¦ Ãâ·ÂÇÕ´Ï´Ù(±âº»°ªÀº ÇöÀçµð·ºÅ丮).\n"
+#~ "-cftuSUXÀ̳ª --sort¿É¼ÇÀÌ ÁöÁ¤µÇÁö ¾ÊÀ¸¸é ±âº»ÀûÀ¸·Î ¾ËÆĺª ¼øÀ¸·Î Á¤·ÄÇÕ"
+#~ "´Ï´Ù.\n"
+#~ "\n"
+#~ " -a, --all .À¸·Î ½ÃÀÛÇÏ´Â ¸ñ·Ï±îÁö ¸ðµÎ Ãâ·ÂÇÕ´Ï´Ù\n"
+#~ " -A, --almost-all -a¿Í °°Áö¸¸ .°ú ..Àº Ãâ·ÂÇÏÁö ¾Ê½À´Ï´Ù\n"
+#~ " -b, --escape Ãâ·ÂÇÒ ¼ö ¾ø´Â ¹®ÀÚ´Â 8Áø¼ö·Î Ç¥±âÇÕ´Ï´Ù\n"
+#~ " --block-size=SIZE SIZE ¹ÙÀÌÆ® Å©±âÀÇ ºí·°À» »ç¿ëÇÕ´Ï´Ù\n"
+#~ " -B, --ignore-backups ~À¸·Î ³¡³ª´Â ¸ñ·ÏÀº Ãâ·ÂÇÏÁö ¾Ê½À´Ï´Ù\n"
+#~ " -c »ý¼º½Ã°£´ÜÀ§·Î Á¤·ÄÇÕ´Ï´Ù. -l¿É¼Ç°ú °°ÀÌ ¾²"
+#~ "¸é\n"
+#~ " »ý¼º½Ã°£À» Ãâ·ÂÇÕ´Ï´Ù\n"
+#~ " -C ¿­´ÜÀ§·Î ¸ñ·ÏÀ» Ãâ·ÂÇÕ´Ï´Ù\n"
+#~ " --color[=WHEN] ÆÄÀÏÀ» ±¸ºÐÇϱâ À§ÇØ »öÀ» ¾µ °ÍÀÎÁö Á¶Á¤ÇÕ´Ï"
+#~ "´Ù.\n"
+#~ " WHENÀº `never', `always', ¶Ç´Â `auto'ÀÔ´Ï"
+#~ "´Ù.\n"
+#~ " -d, --directory µð·ºÅ丮ÀÇ ³»¿ë ´ë½Å µð·ºÅ丮¸¦ Ãâ·ÂÇÕ´Ï´Ù\n"
+#~ " -D, --dired EmacsÀÇ dired¸ðµå¿¡ ¾Ë¸Â´Â Ãâ·ÂÀ» ÇÕ´Ï´Ù\n"
+#~ " -f Á¤·ÄÇÏÁö ¾Ê½À´Ï´Ù(-aU¸¦ ÁÖ°í -lst¸¦ »®´Ï"
+#~ "´Ù).\n"
+#~ " -F, --classify °¢ ¸ñ·ÏÀ» ±¸ºÐÇϱâ À§ÇÑ ¹®ÀÚ¸¦ µÚ¿¡ ºÙÀÔ´Ï"
+#~ "´Ù\n"
+#~ " --format=WORD across -x, comma -m, horizontal -x, long -"
+#~ "l,\n"
+#~ " single-column -1, verbose -l, vertical -C\n"
+#~ " --full-time ³¯Â¥¿Í ½Ã°¢À» ÀÚ¼¼È÷ Ãâ·ÂÇÕ´Ï´Ù\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -g like -l, but do not list owner\n"
+#~ " -G, --no-group inhibit display of group information\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " --si likewise, but use powers of 1000 not 1024\n"
+#~ " -H, --dereference-command-line follow symbolic links on the command "
+#~ "line\n"
+#~ " --indicator-style=WORD append indicator with style WORD to entry "
+#~ "names:\n"
+#~ " none (default), classify (-F), file-type (-"
+#~ "p)\n"
+#~ " -i, --inode print index number of each file\n"
+#~ " -I, --ignore=PATTERN do not list implied entries matching shell "
+#~ "PATTERN\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l use a long listing format\n"
+#~ " -L, --dereference when showing file information for a "
+#~ "symbolic\n"
+#~ " link, show information for the file the "
+#~ "link\n"
+#~ " references rather than for the link "
+#~ "itself\n"
+#~ " -m fill width with a comma separated list of "
+#~ "entries\n"
+#~ msgstr ""
+#~ " -g (¹«½ÃÇÕ´Ï´Ù)\n"
+#~ " -G, --no-group ±×·ìÁ¤º¸ Ãâ·ÂÀ» ÇÏÁö ¾Ê½À´Ï´Ù\n"
+#~ " -h, --human-readable Å©±â¸¦ »ç¶÷ÀÌ ¾Ë±â ½±°Ô(1K, 234M, 2Gµî)Ç¥½ÃÇÕ"
+#~ "´Ï´Ù\n"
+#~ " -H, --si ºñ½ÁÇÕ´Ï´Ù¸¸ 1024¹è ´ë½Å 1000¹è¸¦ »ç¿ëÇÕ´Ï"
+#~ "´Ù\n"
+#~ " --indicator-style=WORD WORD ½ºÅ¸ÀÏ·Î ÆÄÀÏ ±¸ºÐÀ» ÇØ ÁÝ´Ï´Ù. °¡´ÉÇÑ "
+#~ "°ªÀº:\n"
+#~ " none (±âº»°ª), Á¾·ù (-F), ÆÄÀÏÇü½Ä (-p)\n"
+#~ " -i, --inode °¢ ÆÄÀÏÀÇ i-node¹øÈ£¸¦ Ãâ·ÂÇÕ´Ï´Ù\n"
+#~ " -I, --ignore=PATTERN ¼Ð PATTERN¿Í ÀÏÄ¡ÇÏ´Â ¸ñ·ÏÀº Ãâ·ÂÇÏÁö ¾Ê½À´Ï"
+#~ "´Ù\n"
+#~ " -k, --kilobytes --block-size=1024¿Í °°½À´Ï´Ù\n"
+#~ " -l ±ä Ãâ·Â Æ÷¸ËÀ» »ç¿ëÇÕ´Ï´Ù\n"
+#~ " -L, --dereference ½Éº¼¸¯ ¸µÅ©¸¦ µû¶ó°¡ ¸µÅ©µÈ ¸ñ·ÏÀ» Ãâ·ÂÇÕ´Ï"
+#~ "´Ù\n"
+#~ " -m Ç౸ºÐ ¾øÀÌ ½°Ç¥·Î ±¸ºÐµÇ´Â ¸ñ·Ï Ãâ·ÂÀ» ÇÕ´Ï"
+#~ "´Ù\n"
+#~ " -n, --numeric-uid-gid À̸§ ´ë½Å ¼ýÀÚ·Î µÈ UID¿Í GID¸¦ Ãâ·ÂÇÕ´Ï´Ù\n"
+#~ " -N, --literal ¸ñ·Ï À̸§À» ±×´ë·Î Ãâ·ÂÇÕ´Ï´Ù\n"
+#~ " (ÄÜÆ®·Ñ ¹®ÀÚµµ Ưº°È÷ ó¸®ÇÏÁö ¾Ê½À´Ï´Ù)\n"
+#~ " -o ±×·ìÁ¤º¸ ¾øÀÌ ±ä Ãâ·Â Æ÷¸ËÀ» »ç¿ëÇÕ´Ï´Ù\n"
+#~ " -p, --file-type °¢ ¸ñ·ÏÀ» ±¸ºÐÇϱâ À§ÇÑ ¹®ÀÚ(/=@|)¸¦ µÚ¿¡ ºÙ"
+#~ "ÀÔ´Ï´Ù\n"
+#~ " -q, --hide-control-chars Ãâ·ÂÇÒ ¼ö ¾ø´Â ¹®ÀÚ ´ë½Å ?À» Ãâ·ÂÇÕ´Ï´Ù\n"
+#~ " --show-control-chars Ãâ·ÂÇÒ ¼ö ¾ø´Â ¹®ÀÚ¸¦ ±×´ë·Î º¸¿©ÁÝ´Ï´Ù(±âº»"
+#~ "°ª)\n"
+#~ " -Q, --quote-name ¸ñ·Ï À̸§À» Å«µû¿ÈÇ¥ ¾È¿¡ ³Ö½À´Ï´Ù\n"
+#~ " --quoting-style=WORD WORDÀÇ ÀÎ¿ë ½ºÅ¸ÀÏÀ» »ç¿ëÇÕ´Ï´Ù. °¡´ÉÇÑ °ª"
+#~ "˼:\n"
+#~ " literal, locale, shell, shell-always, c, "
+#~ "escape\n"
+#~ " -r, --reverse Á¤·Ä¼ø¼­¸¦ °Å²Ù·Î ÇÕ´Ï´Ù\n"
+#~ " -R, --recursive ¼­ºêµð·ºÅ丮±îÁö Ãâ·ÂÇÕ´Ï´Ù\n"
+#~ " -s, --size °¢ ÆÄÀÏÀÇ ºí·Ï Å©±â¸¦ Ãâ·ÂÇÕ´Ï´Ù\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -S sort by file size\n"
+#~ " --sort=WORD extension -X, none -U, size -S, time -t,\n"
+#~ " version -v\n"
+#~ " status -c, time -t, atime -u, access -u, use "
+#~ "-u\n"
+#~ " --time=WORD show time as WORD instead of modification "
+#~ "time:\n"
+#~ " atime, access, use, ctime or status; use\n"
+#~ " specified time as sort key if --sort=time\n"
+#~ " --time-style=WORD show times using style WORD:\n"
+#~ " full-iso, iso, locale, posix-iso\n"
+#~ " -t sort by modification time\n"
+#~ " -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+#~ " -u with -lt: sort by, and show, access time\n"
+#~ " with -l: show access time and sort by "
+#~ "name\n"
+#~ " otherwise: sort by access time\n"
+#~ " -U do not sort; list entries in directory "
+#~ "order\n"
+#~ " -v sort by version\n"
+#~ " -w, --width=COLS assume screen width instead of current "
+#~ "value\n"
+#~ " -x list entries by lines instead of by columns\n"
+#~ " -X sort alphabetically by entry extension\n"
+#~ " -1 list one file per line\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "By default, color is not used to distinguish types of files. That is\n"
+#~ "equivalent to using --color=none. Using the --color option without the\n"
+#~ "optional WHEN argument is equivalent to using --color=always. With\n"
+#~ "--color=auto, color codes are output only if standard output is "
+#~ "connected\n"
+#~ "to a terminal (tty).\n"
+#~ msgstr ""
+#~ " -S ÆÄÀÏÅ©±â´ÜÀ§·Î Á¤·ÄÇÕ´Ï´Ù\n"
+#~ " --sort=WORD extension -X, none -U, size -S, time -t,\n"
+#~ " version -v\n"
+#~ " --time=WORD º¯°æ½Ã°£ ´ë½Å ½Ã°£À» WORD·Î Ç¥½ÃÇÕ´Ï´Ù:\n"
+#~ " atime, access, use, ctime, status\n"
+#~ " --sort=timeÀ̸é ÁöÁ¤µÈ °ªÀÌ Á¤·Ä ±âÁØÀÔ´Ï"
+#~ "´Ù\n"
+#~ " -t º¯°æ½Ã°£´ÜÀ§·Î Á¤·ÄÇÕ´Ï´Ù.\n"
+#~ " -T, --tabsize=COLS 8´ë½Å ÅÇ Å©±â¸¦ COLS·Î °¡Á¤ÇÕ´Ï´Ù\n"
+#~ " -u ÃÖÈÄÁ¢±Ù½Ã°£¿¡ µû¶ó Á¤·ÄÇÕ´Ï´Ù.\n"
+#~ " -l°ú ÇÔ²² »ç¿ëÇϸé Á¢±Ù½Ã°£À» º¸¿©ÁÝ´Ï´Ù\n"
+#~ " -U Á¤·ÄÇÏÁö ¾Ê°í µð·ºÅ丮ÀÇ ¼ø¼­´ë·Î Ãâ·ÂÇÕ´Ï"
+#~ "´Ù\n"
+#~ " -v ¹öÀü¿¡ µû¶ó Á¤·ÄÇÕ´Ï´Ù\n"
+#~ " -w, --width=COLS ÇöÀç °ª ´ë½Å È­¸éÆøÀ» Á¤ÇØÁØ °ªÀ¸·Î °¡Á¤ÇÕ´Ï"
+#~ "´Ù\n"
+#~ " -x ¿­´ÜÀ§º¸´Ù´Â Çà¼øÀ¸·Î ¸ñ·ÏÀ» Á¤·ÄÇÕ´Ï´Ù\n"
+#~ " -X ¸ñ·Ï È®Àå¿¡ ÀÇÇØ ¾ËÆĺª¼øÀ¸·Î Á¤·ÄÇÕ´Ï´Ù\n"
+#~ " -1 ÇÑ ÁÙ¿¡ ÇÑ ÆÄÀϾ¿ Ãâ·ÂÇÕ´Ï´Ù\n"
+#~ " --help ÀÌ µµ¿ò¸»À» Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ " --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ "\n"
+#~ "±âº»ÀûÀ¸·Î, ÆÄÀÏÀ» ±¸ºÐÇϱâ À§ÇØ »ö»óÀº »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ°ÍÀº\n"
+#~ "--color=noneÀ» »ç¿ëÇÏ´Â °Í°ú °°½À´Ï´Ù. --color¿É¼ÇÀ» ºÎ°¡ÀûÀÎ WHENÀμö¿Í\n"
+#~ "°°ÀÌ »ç¿ëÇÏÁö ¾ÊÀ¸¸é --color=always¿Í °°½À´Ï´Ù. --color=auto¿¡¼­´Â\n"
+#~ "»ö»ó ÄÚµå´Â Ç¥ÁØ Ãâ·ÂÀÌ Å͹̳Î(tty)¿¡ ¿¬°áµÇ¾úÀ» ¶§¸¸ Ãâ·ÂÇÕ´Ï´Ù\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+#~ "for even very expensive hardware probing to recover the data.\n"
+#~ "\n"
+#~ " -f, --force change permissions to allow writing if necessary\n"
+#~ " -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+#~ " -s, --size=N shred this many bytes (suffixes like k, M, G accepted)\n"
+#~ " -u, --remove truncate and remove file after overwriting\n"
+#~ " -v, --verbose show progress\n"
+#~ " -x, --exact do not round file sizes up to the next full block\n"
+#~ " -z, --zero add a final overwrite with zeros to hide shredding\n"
+#~ " - shred standard output\n"
+#~ " --help display this help and exit\n"
+#~ " --version print version information and exit\n"
+#~ "\n"
+#~ "Delete FILE(s) if --remove (-u) is specified. The default is not to "
+#~ "remove\n"
+#~ "the files because it is common to operate on device files like /dev/hda,\n"
+#~ "and those files usually should not be removed. When operating on "
+#~ "regular\n"
+#~ "files, most people use the --remove option.\n"
+#~ "\n"
+#~ "CAUTION: Note that shred relies on a very important assumption:\n"
+#~ "that the filesystem overwrites data in place. This is the traditional\n"
+#~ "way to do things, but many modern filesystem designs do not satisfy this\n"
+#~ "assumption. The following are examples of filesystems on which shred is\n"
+#~ "not effective:\n"
+#~ "\n"
+#~ "* log-structured or journaled filesystems, such as those supplied with\n"
+#~ " AIX and Solaris (and JFS, ReiserFS, XFS, etc.)\n"
+#~ "\n"
+#~ "* filesystems that write redundant data and carry on even if some writes\n"
+#~ " fail, such as RAID-based filesystems\n"
+#~ "\n"
+#~ "* filesystems that make snapshots, such as Network Appliance's NFS "
+#~ "server\n"
+#~ "\n"
+#~ "* filesystems that cache in temporary locations, such as NFS\n"
+#~ " version 3 clients\n"
+#~ "\n"
+#~ "* compressed filesystems\n"
+#~ "\n"
+#~ "In addition, file system backups and remote mirrors may contain copies\n"
+#~ "of the file that cannot be removed, and that will allow a shredded file\n"
+#~ "to be recovered later.\n"
+#~ msgstr ""
+#~ "ÆÄÀÏÀ» ¾ÈÀüÇÏ°Ô Áö¿ì±â À§ÇØ, ¸ÕÀú ³»¿ëÀ» °¨Ãßµµ·Ï ±× ³»¿ëÀ» µ¤¾î ½á ¹ö¸³´Ï"
+#~ "´Ù.\n"
+#~ "\n"
+#~ " -D, --device ÀåÄ¡¿¡ ´ëÇÑ ¿¬»êÀ» °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù(ÀåÄ¡´Â Áö¿öÁöÁö ¾Ê½À´Ï"
+#~ "´Ù)\n"
+#~ " -f, --force ÇÊ¿äÇÏ´Ù¸é ¾²±â °¡´ÉÇϵµ·Ï ±ÇÇÑÀ» ¹Ù²ß´Ï´Ù\n"
+#~ " -n, --iterations=N ±âº»°ª(%d)´ë½Å¿¡ N¹ø °ãÃÄ ¾¹´Ï´Ù\n"
+#~ " -p, --preserve °ãÃÄ ¾´ ÈÄ ÆÄÀÏÀ» Áö¿ìÁö ¾Ê½À´Ï´Ù\n"
+#~ " -s, --size=N ÁöÁ¤ÇÑ Å©±â¸¸Å­ µ¤¾î¾¹´Ï´Ù (k, M°ú °°Àº Á¢¹Ì»ç »ç¿ë °¡"
+#~ "´É)\n"
+#~ " -v, --verbose ÁøÇà»óȲ º¸±â (-vv¸¦ ÁÖ¸é È­¸é¿¡ ÁøÇà»óȲÀ» ³²±é´Ï´Ù)\n"
+#~ " -x, --exact ´ÙÀ½ÀÇ ºí·° Å©±â¸¸Å­À» ä¿ìÁö ¾Ê°í Å©±â´ë·Î ÇÕ´Ï´Ù\n"
+#~ " -z, --zero Áö¿î °ÍÀ» ¼û±â±â À§ÇØ ÃÖÁ¾ÀûÀ¸·Î 0À¸·Î °ãÃľ¹´Ï´Ù\n"
+#~ " - Ç¥ÁØ Ãâ·ÂÀ» Áö¿ó´Ï´Ù (NOTE: -v¿Í Ãæµ¹ÇÕ´Ï´Ù)\n"
+#~ " --help ÀÌ µµ¿ò¸»À» Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ " --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ "\n"
+#~ "¿©±â¼­ ´õ Ãß°¡ÇÒ °ÍÀÌ ÀÖ´Ù¸é *°íÃÄ ÁÖ¼¼¿ä*"
+
+#~ msgid ""
+#~ "Update the access and modification times of each FILE to the current "
+#~ "time.\n"
+#~ "\n"
+#~ " -a change only the access time\n"
+#~ " -c, --no-create do not create any files\n"
+#~ " -d, --date=STRING parse STRING and use it instead of current time\n"
+#~ " -f (ignored)\n"
+#~ " -m change only the modification time\n"
+#~ " -r, --reference=FILE use this file's times instead of current time\n"
+#~ " -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current "
+#~ "time\n"
+#~ " --time=WORD set time given by WORD: access atime use (same "
+#~ "as -a)\n"
+#~ " modify mtime (same as -m)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Note that the three time-date formats recognized for the -d and -t "
+#~ "options\n"
+#~ "and for the obsolescent argument are all different.\n"
+#~ msgstr ""
+#~ "°¢ ÆÄÀÏÀÇ Á¢±Ù/º¯°æ½Ã°£À» ÇöÀç½Ã°£À¸·Î ¹Ù²ß´Ï´Ù.\n"
+#~ "\n"
+#~ " -a Á¢±Ù½Ã°£¸¸À» ¹Ù²ß´Ï´Ù\n"
+#~ " -c, --no-create ÆÄÀÏÀ» ¸¸µéÁö ¾Ê½À´Ï´Ù\n"
+#~ " -d, --date=STRING STRINGÀ» Çؼ®Çؼ­ ÇöÀç½Ã°£ ´ë½Å »ç¿ëÇÕ´Ï´Ù\n"
+#~ " -f (¹«½ÃÇÕ´Ï´Ù)\n"
+#~ " -m º¯°æ½Ã°£¸¸À» ¹Ù²ß´Ï´Ù\n"
+#~ " -r, --reference=FILE ÀÌ ÆÄÀÏÀÇ ½Ã°£À» ÇöÀç½Ã°£ ´ë½Å »ç¿ëÇÕ´Ï´Ù\n"
+#~ " -t STAMP ÇöÀç½Ã°£ ´ë½Å [[CC]YY]MMDDhhmm[.ss]À» »ç¿ëÇÕ´Ï"
+#~ "´Ù\n"
+#~ " --time=WORD access -a, atime -a, mtime -m, modify -m, use -"
+#~ "a\n"
+#~ " --help ÀÌ µµ¿ò¸»À» Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ " --version ¹öÀü Á¤º¸¸¦ Ç¥½ÃÇÏ°í Á¾·áÇÕ´Ï´Ù\n"
+#~ "\n"
+#~ "-d³ª -t ¿É¼Ç°ú ±¸½Ä Àμö·Î ÆǺ°µÇ´Â ¼¼°¡Áö ½Ã°£ Çü½ÄÀº ¸ðµÎ ´Ù¸¥ °ÍÀÓÀ»\n"
+#~ "ÁÖÀÇÇϼ¼¿ä.\n"
+
+#, fuzzy
+#~ msgid "Copyright (C) 2001 Free Software Foundation, Inc."
+#~ msgstr "ÀúÀÛ±Ç (C) 2000 Free Software Foundation, Inc."
+
+#~ msgid ""
+#~ "when creating character special files, major and minor device\n"
+#~ "numbers must be specified"
+#~ msgstr ""
+#~ "ij¸¯ÅÍ Æ¯º° ÆÄÀÏÀ» ¸¸µé ¶§¿¡´Â, major¿Í minorÀåÄ¡ ¹øÈ£¸¦\n"
+#~ "ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù"
+
+#~ msgid "group of %s changed to %s\n"
+#~ msgstr "%sÀÇ ±×·ìÀÌ %sÀ¸·Î ¹Ù²î¾ú½À´Ï´Ù\n"
+
+#, fuzzy
+#~ msgid "ownership of %s changed to "
+#~ msgstr "%sÀÇ ¼ÒÀ¯ÀÚ´Â ´ÙÀ½°ú °°ÀÌ º¯°æµÇ¾ú½À´Ï´Ù: "
+
+#, fuzzy
+#~ msgid "you are not a member of group %s"
+#~ msgstr "`%s' ±×·ìÀÇ ±¸¼º¿øÀÌ ¾Æ´Õ´Ï´Ù"
+
+#, fuzzy
+#~ msgid "cannot make fifo %s"
+#~ msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "cannot change permissions for %s"
+#~ msgstr "%sÀÇ Çã°¡¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "cannot remove old link to %s"
+#~ msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "virtual memory exhausted"
+#~ msgstr "¸Þ¸ð¸®°¡ ¹Ù´Ú³²"
+
+#, fuzzy
+#~ msgid "cannot create directory `%s'"
+#~ msgstr "%s µð·ºÅ丮¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "cannot remove `%s'"
+#~ msgstr "`%s'¿¡¼­ ioctlÀ» ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "specified target, `%s' is not a directory"
+#~ msgstr "%sÀÌ(°¡) Á¸ÀçÇÏÁö¸¸ µð·ºÅ丮°¡ ¾Æ´Õ´Ï´Ù"
+
+#~ msgid "`%s' and `%s' are the same file"
+#~ msgstr "`%s'¿Í `%s'´Â °°Àº ÆÄÀÏÀÔ´Ï´Ù"
+
+#, fuzzy
+#~ msgid "cannot backup `%s'"
+#~ msgstr "`%s'¿¡¼­ ioctlÀ» ÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#~ msgid "cannot un-backup `%s'"
+#~ msgstr "`%s'ÀÇ ¹é¾÷À» µÇµ¹¸± ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "cannot chmod %s"
+#~ msgstr "%s µð·ºÅ丮·Î chdirÇÒ ¼ö ¾ø½À´Ï´Ù"
+
+#, fuzzy
+#~ msgid "`%s' exists but is not a directory"
+#~ msgstr "%sÀÌ(°¡) Á¸ÀçÇÏÁö¸¸ µð·ºÅ丮°¡ ¾Æ´Õ´Ï´Ù"
diff --git a/po/ms.gmo b/po/ms.gmo
new file mode 100644
index 0000000..1ecae72
--- /dev/null
+++ b/po/ms.gmo
Binary files differ
diff --git a/po/ms.po b/po/ms.po
new file mode 100644
index 0000000..bb12f5e
--- /dev/null
+++ b/po/ms.po
@@ -0,0 +1,8517 @@
+# Terjemahan coreutils untuk Bahasa Melayu.
+# Copyright (C) 2001 Free Software Foundation, Inc.
+# Hasbullah Bin Pit <sebol@ikhlas.com>, 2003.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 5.0.90\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2003-08-10 16:00+0800\n"
+"Last-Translator: Hasbullah Bin Pit <sebol@ikhlas.com>\n"
+"Language-Team: Malay <translation-team-ms@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "menetapkan keizinan pada %s"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "menetapkan keizinan pada %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "hujah tidak sah %s bagi %s"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "hujah ambiguous %s bagi %s"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Hujah sah adalah:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "ralat menulis"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Ralat sistem yang tidak diketahui"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "tak dapat stat %s"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "fail kosong biasa"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "fail biasa"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "direktori"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "fail istimewa blok"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "fail istimewa aksara"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "fifo"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "pautan simbolik"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "soket"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "giliran mesej"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr ""
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "objek memori terkongsi"
+
+#: lib/file-type.c:69
+#, fuzzy
+msgid "typed memory object"
+msgstr "objek memori terkongsi"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "fail pelik"
+
+#: lib/gai_strerror.c:44
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "fail fifo tidak disokong"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "fail fifo tidak disokong"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr ""
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "fail fifo tidak disokong"
+
+#: lib/gai_strerror.c:54
+#, fuzzy
+msgid "System error"
+msgstr "ralat menulis"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+#, fuzzy
+msgid "Unknown error"
+msgstr "Ralat sistem yang tidak diketahui"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: opsyen `%s' adalah ambiguous\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: opsyen `--%s' tidak mengizinkan hujah\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: opsyen `%c%s' tidak mengizinkan hujah\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: opsyen `%s' memerlukan hujah\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: opensyen tidak dikenali `--%s'\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: opensyen tidak dikenali `%c%s'\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: opsyen tidak dibenarkan -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: opsyen tidak sah -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: opsyen memerlukan hujah -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: opsyen `-W %s' adalah ambiguous\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: opsyen `-W %s' tidak mengizinkan hujan\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "saiz blok"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "tak dapat menukar keizinan %s"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "tak dapat mencipta direktori %s"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "memori keletihan"
+
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr "gagal untuk kembali ke direktori kerja pemulaan"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "gagal untuk kembali ke direktori kerja pemulaan"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "`"
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "fail istimewa blok"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: ungkapan biasa (regexp) tidak sah: %s"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "aksara tidak sah pada %s pada rentetan mod %s"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "memori keletihan"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: ungkapan biasa (regexp) tidak sah: %s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "ralat pada carian ungkapan biasa (regexp)"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "%s: ungkapan biasa (regexp) tidak sah: %s"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "ralat pada carian ungkapan biasa (regexp)"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr ""
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr ""
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[yY]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[tT]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "fungsi iconv tak boleh digunakan"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "fungsi iconv tidak ada"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "aksara di luar julat"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "tak dapat menukar U+%04X ke set aksara lokal"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "tak dapat menukar U+%04X ke set aksara lokal: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "pengguna tidak sah"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "kumpulan tidak sah"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "pengguna tidak sah"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Ditulis oleh %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Ditulis oleh %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, fuzzy, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Ditulis oleh %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr "Ditulis oleh %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr "Ditulis oleh %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xfts.c:58
+#, fuzzy, c-format
+msgid "invalid argument: %s"
+msgstr "hujah tidak sah %s bagi %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "perbandingan rentetan gagal"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Tetapkan LC_ALL='C' untuk mengatasi masalah."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "Rentetan dibandingkan adalah %s dan %s."
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "perbandingan rentetan gagal"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "tarikh tak sah `%s'"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "aksara tidak sah pada %s pada rentetan mod %s"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s adalah terlalu besar"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Cuba `%s --help' untuk maklumat lanjut .\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Dengan tiada FAIL, atau bila FAIL adalah -, baca input piawai.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Lapor pepijat ke <%s>.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "ralat membaca"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "pengguna tidak sah"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "saiz tab tidak sah: %s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, fuzzy, c-format
+msgid "extra operand %s"
+msgstr "gagal mengekalkan masa bagi %s"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "menutup input piawai"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pengunaan: %s NAMA [SUFFIKS]\n"
+" atau: %s OPSYEN\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Cetak NAMA dengan komponen direktori awalan telah dibuang.\n"
+"Jika dinyatakan, juga akan membuang DUFFIKS ekoran.\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, fuzzy, c-format
+msgid "missing operand"
+msgstr "kehilangan hujah fail"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Penggunaan: %s [OPSYEN] [FAIL]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t setara dengan -vT\n"
+" -T, --show-tabs papar aksara TAB sebagai ^I\n"
+" -u (diabaikan)\n"
+" -v, --show-nonprinting guna notasi ^ and M- , kecuali bagi LFD dan TAB\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+#: src/cat.c:333
+#, fuzzy, c-format
+msgid "cannot do ioctl on %s"
+msgstr "tak dapat ioctl pada `%s'"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "output standard"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: fail input adalah fail output"
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "kumpulan tidak sah %s"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Penggunaan: %s [OPTION]... GROUP FILE...\n"
+" atau: %s [OPTION]... --reference=RFILE FILE...\n"
+
+#: src/chgrp.c:117
+#, fuzzy
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Tukar keahlian kumpulan bagi setiap FAIL ke KUMPULAN.\n"
+"\n"
+" -c, --changes seperti verbose tetapi lapor hanya bila prubahan "
+"dilakukan\n"
+" --dereference meliputi rujukan bagi setiap pautan simbolik\n"
+" bukannya pautan simbolik itu sendiri\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+#, fuzzy
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference meliputi pautan simbolik selain drpd sebarang fail "
+"dirujuk\n"
+" (hanya boleh pada sistem yang boleh menukar\n"
+" pemilikan bagi pautan simbolik)\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chgrp.c:134
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet sorok mesej ralat\n"
+" --reference=RFAIL guna pemilik dan kumpulan RFAIL dan bukannya\n"
+" nilai yg dinyatakan PEMILIK:KUMPULAN\n"
+" -R, --recursive beroperasi pada fail dan direktori secara rekursif\n"
+" -v, --verbose output diagnostik bagi setiap fail yg diproses\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr ""
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, fuzzy, c-format
+msgid "missing operand after %s"
+msgstr "kehilangan hujah fail"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "gagal mendapatkan atribut bagi %s"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "mendapatkan atribut baru untuk %s"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "kedua-duanya pautan simbolik %s dan rujukan telah berubah\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "mod %s berubah kepada %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "gagal menukar mod %s kepada %04lo (%s)\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "mod %s kekal sebagai %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "Tak dapat mengakses %s"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "tak dapat membaca direktori %s"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "menukar keizinan %s"
+
+#: src/chmod.c:286
+#, fuzzy, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "menetapkan keizinan pada %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, fuzzy, c-format
+msgid "fts_read failed"
+msgstr "fail biasa"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Penggunaan: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" atau: %s [OPTION]... OCTAL-MODE FILE...\n"
+" atau: %s [OPTION]... --reference=RFILE FILE...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chmod.c:360
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+" -f, --silent, --quiet sorok mesej ralat\n"
+" --reference=RFAIL guna pemilik dan kumpulan RFAIL dan bukannya\n"
+" nilai yg dinyatakan PEMILIK:KUMPULAN\n"
+" -R, --recursive beroperasi pada fail dan direktori secara rekursif\n"
+" -v, --verbose output diagnostik bagi setiap fail yg diproses\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr ""
+
+#: src/chmod.c:510
+#, fuzzy, c-format
+msgid "invalid mode: %s"
+msgstr "mod tak sah %s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "hakmilik %s telah bertukar ke %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "kumpulan %s telah bertukar ke %s\n"
+
+#: src/chown-core.c:149
+#, fuzzy, c-format
+msgid "no change to ownership of %s\n"
+msgstr "tak dapat menukar keizinan %s"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "gagal menukar hakmilik %s ke %s\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "gagal menukar kumpulan %s ke %s\n"
+
+#: src/chown-core.c:154
+#, fuzzy, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "gagal menukar hakmilik %s ke %s\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "hakmilik %s kekal sebagai %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "kumpulan %s kekal sebagai %s\n"
+
+#: src/chown-core.c:159
+#, fuzzy, c-format
+msgid "ownership of %s retained\n"
+msgstr "hakmilik %s kekal sebagai %s\n"
+
+#: src/chown-core.c:344
+#, fuzzy, c-format
+msgid "cannot dereference %s"
+msgstr "tak dapat membuang %s"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "penukaran hakmilik %s"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "penukaran kumpulan %s"
+
+#: src/chown.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Penggunaan: %s [OPTION]... GROUP FILE...\n"
+" atau: %s [OPTION]... --reference=RFILE FILE...\n"
+
+#: src/chown.c:98
+#, fuzzy
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Tukar pemilik dan/atau kumpulan bagi setiap FAIL ke PEMILIH dan/atau "
+"KUMPULAN.\n"
+"\n"
+" -c, --changes seperti verbose tetapi lapor hanya bila perubahan "
+"dilakukan\n"
+" --dereference melibatkan rujukan bagi setiap pautan simbolik,\n"
+" bukannya pautan smbolik itu sendiri.\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+
+#: src/chown.c:122
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet sorok mesej ralat\n"
+" --reference=RFAIL guna pemilik dan kumpulan RFAIL dan bukannya\n"
+" nilai yg dinyatakan PEMILIK:KUMPULAN\n"
+" -R, --recursive beroperasi pada fail dan direktori secara rekursif\n"
+" -v, --verbose output diagnostik bagi setiap fail yg diproses\n"
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pengunaan: %s ROOTBARU [ARAHAN...]\n"
+" atau: %s OPSYEN\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"Laksana ARAHAN dengan direktori root ditetapkan ke ROOTBARU.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "Gagal menukar direktori root ke %s "
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "tak dapat chdir ke direktori root"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, fuzzy, c-format
+msgid "cannot run command %s"
+msgstr "takboleh nyahpaut %s"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: fail terlalu panjang"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Pengunaan: %s [FAIL]...\n"
+" atau: %s [OPSYEN]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Penggunaan: %s [OPSYEN]...FAIL1 FAIL2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr ""
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "gagal mengekalkan hakmilik bagi %s"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr "gagal mencari fail %s"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "gagal mengekalkan hakmilik bagi %s"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "tak dapat buka %s untuk dibaca"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "tak dapat fstat %s"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr ""
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "tak dapat membuang %s"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "%s dibuang \n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "tak dapat memcipta fail biasa %s"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "membaca %s"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "tak dapat lseek %s"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "menulis %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "mengekalkan masa pada %s"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "menutup %s"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: menindih %s, menindih mod %04lo? "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: tindih %s? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (backup: %s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr ""
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "Amaran: fail sumber %s dinyatakan lebih drpd sekali"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s dan %s adalah fail yang sama"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "tak boleh menindih bukan-direktori %s dengan direktori %s"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "tak akan menindih baru-dicipta %s dengan %s"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "tak boleh menindih direktori %s dengan direktori"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "tak dapat pindah direktori ke bukan-direktori: %s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "backup %s akan memusnahkan sumber; %s tidak dipindahkan"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "backup %s akan memusnahkan sumber; %s tidak disalin"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "tak dapat backup %s"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "tak dapat salin direktori, %s ke dirinya, %s"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "tidak akan mencipta pautan keras %s ke direktori %s"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "tak dapat mencipta pautan keras %s ke %s"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "tak dapat pindahkan %s ke subdirektori dirinya, %s"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "tak dapat pindahkan %s ke %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr "pindahan antara-peranti gagak: %s ke %s; tak dapat memindah sasaran"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "tak boleh salin pautan simbolik cyclic %s"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr "%s: hanya boleh membuat pautan simbolik relatif pada direktori semasa"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "tak dapat mencipta pautan simbolik %s ke %s"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "tak boleh mencipta pautan %s"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "tak boleh mencipta fifo %s"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "tak boleh mencipta fail istimewa %s"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "tak dapat membaca pautan simbolik %s"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "tak dapat mencipta pautan simbolik %s"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s mempunyai jenis fail yang tidak diketahui"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "tak dapat nyahbackup %s"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (nyahbackup)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Penggunaan: %s [OPSYEN]... SUMBER DEST\n"
+" atau: %s [OPSYEN]... SUMBER... DIREKTORI\n"
+" atau: %s [OPSYEN]... --target-directory=DIREKTORI SUMBER...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Salin SUMBER ke DEST, atau banyak SUMBER ke DIREKTORI.\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Hujah mandatori kepada opsyen panjang andalah mandatori bagi opsyen pendek "
+"juga.\n"
+
+#: src/cp.c:170
+#, fuzzy
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive sama seperti -dpR\n"
+" --backup[=CONTROL] buat backup bagi setiap fail destinasi\n"
+" -b seperti --backup tetapi tak menerima hujah\n"
+" --copy-contents salin kandungan bagi fail sitimewa bila "
+"rekursif\n"
+" -d sama seperti --no-dereference --"
+"preserve=link\n"
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+
+#: src/cp.c:205
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "gagal mengekalkan masa bagi %s"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "gagal mengekalkan keizinan bagi %s"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "tak dapat cipta direktori %s"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s wujud tapi ianya bukan direktori"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "mengakses %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, fuzzy, c-format
+msgid "missing file operand"
+msgstr "kehilangan hujah fail"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, fuzzy, c-format
+msgid "missing destination file operand after %s"
+msgstr "kehilangan fail destinasi"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, fuzzy, c-format
+msgid "target %s is not a directory"
+msgstr "Sasaran yang dinyatakan, %s adalah bukan direktori"
+
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "bila mengekalkan path, destinasi mestilah direktori"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr ""
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, fuzzy, c-format
+msgid "multiple target directories specified"
+msgstr "banyak opsyen -l or -t dinyatakan"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "tak dapat buat kecua-dua pautan simbolik dan keras"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "jenis backup"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "input menghilang"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: bilangan baris di luar julat"
+
+#: src/csplit.c:709
+#, fuzzy, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: `%s': bilangan baris di luar julat"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, fuzzy, c-format
+msgid " on repetition %s\n"
+msgstr " pada ulangan %d\n"
+
+#: src/csplit.c:755
+#, fuzzy, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: `%s': padanan tak dijumpai"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "ralat pada carian ungkapan biasa (regexp)"
+
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "ralat menulis bagi `%s'"
+
+#: src/csplit.c:1060
+#, fuzzy, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: integer dijangka selepas `%c'"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: `}' diperluka untuk kiraan ulangan"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: integer diperlukan diantara `{' dan `}'"
+
+#: src/csplit.c:1113
+#, fuzzy, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: pemisah penutup `%c' hilang"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: ungkapan biasa (regexp) tidak sah: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: corak tidak sah"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: bilangan baris mesti lebih besar drpd sifar"
+
+#: src/csplit.c:1172
+#, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr ""
+
+#: src/csplit.c:1178
+#, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr ""
+
+#: src/csplit.c:1231
+#, fuzzy, c-format
+msgid "invalid format width"
+msgstr "format tarikh tidak sah %s"
+
+#: src/csplit.c:1252
+#, fuzzy, c-format
+msgid "invalid format precision"
+msgstr "penukaran tidak sah: %s"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr ""
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "Pengspesifikasi penukaran tidak sah pada suffiks: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "pengspesifikasi penukaran tidak sah pada suffiks: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "terlalu banyak spesifikasi penukaran %% pada suffiks"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "kehilangan spesifikasi penukaran %% pada suffiks"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: nombor tidak sah"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Penggunaan: %s [OPSYEN]... FAIL CORAK...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/csplit.c:1486
+#, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Penggunaan: %s [OPSYEN]...[FAIL]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"Cetak bahagian ibaris dipilih drpd setiap FAIL ke output piawai.\n"
+"\n"
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "byte atau senarai medan tidak sah"
+
+#: src/cut.c:469
+#, fuzzy, c-format
+msgid "byte offset %s is too large"
+msgstr "%s adalah terlalu besar"
+
+#: src/cut.c:472
+#, fuzzy, c-format
+msgid "field number %s is too large"
+msgstr "nombor tidak sah %s"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "hanya satu jenis senarai boleh dinyatakan"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "pemisah mestilah aksara tunggal"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "anda mesti nyatakan senarai byte, aksara, atau medan"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr ""
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "kehilangan senarai medan"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "kehilangan senarai posisi"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Penggunaan: %s [OPSYEN]... [+FORMAT]\n"
+" atau: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+
+#: src/date.c:143
+#, fuzzy
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+" -r, --reference=FAIL papar tarikh ubahsuai bagi FAIL\n"
+" -R, --rfc-822 output rentetan tarikh serasi RFC-822\n"
+" -s, --set=RENTETAN tetapkan masa dihuraikan oleh RENTETAN\n"
+" -u, --utc, --universal cetak atau tetapkan Coordinated Universal Time\n"
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+
+#: src/date.c:167
+#, fuzzy
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A nama penuh hari kerja lokaliti, panjang berubah (Ahad..Sabtu)\n"
+" %b nama singkatan bulan lokaliti (Jan..Dis)\n"
+" %B nama penuh bulan lokaliti, panjang berubah (Januari..Disember)\n"
+" %c tarikh dan masa lokaliti (Jum Dis 19 10:02:33 MYT 1975)\n"
+
+#: src/date.c:173
+#, fuzzy
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C abad (tahun dibahagi dengan 100 dan dibundarkan ke integer) [00-99]\n"
+" %d hari drpd bulan (01..31)\n"
+" %D tarikh (bb/hh/tt)\n"
+" %e hari drpd bulan, ruang kosong ditambah ( 1..31)\n"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h sama sebagai %b\n"
+" %H Jam (00..23)\n"
+" %I jam (01..12)\n"
+" %j hari dalam tahun (001..366)\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k jam ( 0..23)\n"
+" %l jam ( 1..12)\n"
+" %m bulan (01..12)\n"
+" %M minit (00..59)\n"
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+
+#: src/date.c:205
+#, fuzzy
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+" %S saat (00..60); 60 adalah perlu untuk menyesuaikan 1 pusingan saat\n"
+" %t tab mengufuk\n"
+" %T masa, 24-jam (jj:mm:ss)\n"
+" %u hari dalam minggu (1..7); 1 mewakili Isnin\n"
+
+#: src/date.c:211
+#, fuzzy
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U nombor minggu drpd tahun dengan Ahad sebagai hari pertama minggu "
+"(00..53)\n"
+" %V nombor minggu drpd tahun sengan Isnin sebagai hari pertama minggu "
+"(01..53)\n"
+" %w hari dlm minggu (0..6); 0 mewaliki Ahad\n"
+" %W nombor minggu drpd tahun dengan Isnin sebagai hari pertama dlm minggu "
+"(00..53)\n"
+
+#: src/date.c:217
+#, fuzzy
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x perwakilan tarikh lokaliti (bb/hh/tt)\n"
+" %X perwakilan masa lokaliti (%H:%M:%S)\n"
+" %y dua digit akhir bagi tahun (00..99)\n"
+" %Y tahun (1975...)\n"
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "input piawai"
+
+#: src/date.c:297 src/date.c:517
+#, fuzzy, c-format
+msgid "invalid date %s"
+msgstr "tarikh tak sah `%s'"
+
+#: src/date.c:408 src/date.c:442
+#, fuzzy, c-format
+msgid "multiple output formats specified"
+msgstr "banyak opsyen -l or -t dinyatakan"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "opseyn untuk menyatakan tarikh untuk dicetak adalah eksklusif"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr "opsyen untuk mencetak dan menetapkan masa tak boleh digunakan bersama"
+
+#: src/date.c:448
+#, fuzzy, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"hujah `%s' kekurangan awalan `+';\n"
+"Bila menggunakan satu opsyen untuk menyatakan tarikh, sebarang\n"
+"hujah bukan-opsyen mesti dalam rentetan format bermula dengan`+'."
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "tak dapat menetapkan tarikh"
+
+#: src/date.c:548 src/du.c:425
+#, fuzzy, c-format
+msgid "time %s is out of range"
+msgstr "%s: bilangan baris di luar julat"
+
+#: src/dd.c:404
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pengunaan: %s FAIL\n"
+" atau: %s OPSYEN\n"
+
+#: src/dd.c:409
+#, fuzzy
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"Salin fail, menukar dan memformat mengikut opsyen.\n"
+"\n"
+" bs=BAIT paksa ibs=BAIT dan obs=BAIT\n"
+" cbs=BAIT tukar BAIT byte dalam satu masa\n"
+" conv=KATAKUNCI tukar fail sebagai per senarai katakunci dipisahkan koma\n"
+" count=BLOK salin hanya BLOK blok input\n"
+" ibs=BAIT baca BAIT bait dlm satu masa\n"
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "%s: Direktori sasaran yang dinyatakan adalah bukan direktori"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr ""
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ""
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "menutup fail input %s"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "menutup fail output %s"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "Menulis ke %s."
+
+#: src/dd.c:886
+#, fuzzy, c-format
+msgid "unrecognized operand %s"
+msgstr "opsyen tidak dikenali %s"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "penukaran tidak sah: %s"
+
+#: src/dd.c:900
+#, fuzzy, c-format
+msgid "invalid input flag: %s"
+msgstr "lebar tidak sah: `%s'"
+
+#: src/dd.c:903
+#, fuzzy, c-format
+msgid "invalid output flag: %s"
+msgstr "nama kumpulan tak dah %s"
+
+#: src/dd.c:906
+#, fuzzy, c-format
+msgid "invalid status flag: %s"
+msgstr "format tarikh tidak sah %s"
+
+#: src/dd.c:942
+#, fuzzy, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "opsyen tidak dikenali %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "nombor tidak sah %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#: src/dd.c:973
+#, fuzzy, c-format
+msgid "cannot combine block and unblock"
+msgstr "tak dapat omit kedua-dua pengguna dan kumpulan"
+
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "tak boleh banding nama fail %s dan %s"
+
+#: src/dd.c:977
+#, fuzzy, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "tak boleh gabungkan isyarat dengan -l atau -t"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+
+#: src/dd.c:1180 src/dd.c:1237
+#, fuzzy, c-format
+msgid "%s: cannot seek"
+msgstr "%s: tak dapat buang"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+#: src/dd.c:1229
+#, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr ""
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr ""
+
+#: src/dd.c:1376
+#, fuzzy, c-format
+msgid "setting flags for %s"
+msgstr "menetapkan masa untuk %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr ""
+
+#: src/dd.c:1623
+#, fuzzy, c-format
+msgid "fsync failed for %s"
+msgstr "gagal mengekalkan masa bagi %s"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "Membuka %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr ""
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "Sistem fail Jenis"
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "Sistem fail "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " Inod IDiguna IBebas IGuna%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Saiz Diguna Ada Guna%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Saiz Diguna Ada Guna%%"
+
+#: src/df.c:165
+#, fuzzy, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %4s-blok Diguna Ada Kapasiti"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " %4s-blok Diguna Ada Guna%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Dilekapkan pada\n"
+
+#: src/df.c:468
+#, fuzzy, c-format
+msgid "cannot get current directory"
+msgstr "tak dapat mencipta direktori %s"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "Gagal menukar direktori %s "
+
+#: src/df.c:498
+#, fuzzy, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "tak dapat mencipta direktori %s"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+
+#: src/df.c:749
+#, fuzzy
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all termasuk sistemfail yang mempunyai 0 blok\n"
+" -B, --block-size=SIZE guna blok SIZE-byte\n"
+" -h, --human-readable cetak saiz dalam format bolehdibaca manusia (e.g., "
+"1K 234M 2G)\n"
+" -H, --si sebaliknya, guna kuasa 1000 bukannya 1024\n"
+
+#: src/df.c:755
+#, fuzzy
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes senarai maklimat inod selain drpd penggunaan blok\n"
+" -k seperti --block-size=1K\n"
+" -l, --local hadkan penyenaraian ke sistem fail lokal\n"
+" --no-sync jangan panggil sync sebelum mendapat maklumat "
+"penggunaan (default)\n"
+
+#: src/df.c:761
+#, fuzzy
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability menggunakan format output POSIX\n"
+" --sync panggil sync sebelum mendapatkan maklumat "
+"penggunaan\n"
+" -t, --type=JENIS hadkan penyenaraian ke sistemfail jenis JENIS\n"
+" -T, --print-type cetak jenis sistemfail\n"
+" -x, --exclude-type=TYPE hadkan penyenaraian ke ke sistemfail bukan jenis "
+"JENIS\n"
+" -v (diabaikan)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+#, fuzzy
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"SAIZ boleh jadi (atau boleh jadi intege diikuti dengan berikut) satu drpd "
+"berikut:\n"
+"kB 1000, K 1024, MB 1,000,000, M 1,048,576, dan lagi bagi G, T, P, E, Z, Y.\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr ""
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr ""
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Amaran: "
+
+#: src/df.c:943
+#, fuzzy, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%stak dapat membaca jadual sistemfail dilekapkan"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Penggunaan: %s [OPSYEN]...[FAIL]...\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Arahan output untuk menetapkan persekitaran pembolehubah LS_COLORS.\n"
+"\n"
+"Tentukan format output:\n"
+" -b, --sh, --bourne-shell kod output shell Bourne shell menetapkan "
+"LS_COLORS\n"
+" -c, --csh, --c-shell kod output shell C menetapkan LS_COLORS\n"
+" -p, --print-database output default\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr ""
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu: katakunci tidak dikenali %s"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<dalaman>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr ""
+"tiada pembolehubah persekitaran SHELL; dan tiada opsyen jenis shell diberi"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pengunaan: %s FAIL\n"
+" atau: %s OPSYEN\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#: src/du.c:279 src/wc.c:108
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Penggunaan: %s [OPTION]... GROUP FILE...\n"
+" atau: %s [OPTION]... --reference=RFILE FILE...\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"Ringkasan penggunaan cakera bagi setiap FAIL, rekursif bagi direktori.\n"
+"\n"
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "jumlah"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "Kedalaman maksimum %s"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr ""
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "tak dapat meringkaskan dan menunjukkan semua kemasukan"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "amaran: peringkasan sama seperti menggunakan --max-depth=0"
+
+#: src/du.c:884
+#, fuzzy, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "amaran: peringkasan konflik dengan --max-depth=%d"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+#: src/du.c:960 src/wc.c:662
+#, fuzzy, c-format
+msgid "cannot read file names from %s"
+msgstr "tak boleh banding nama fail %s dan %s"
+
+#: src/du.c:1000 src/du.c:1003
+#, fuzzy
+msgid "invalid zero-length file name"
+msgstr "nama kumpulan tak dah %s"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Penggunaan: %s [OPSYEN]...[RENTETAN]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Penggunaan: %s [OPSYEN]... [-] [NAMA=NILAI]...[ARAHAN [HUJAH]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+
+#: src/expand.c:180 src/unexpand.c:199
+#, fuzzy, c-format
+msgid "tab stop is too large %s"
+msgstr "%s adalah terlalu besar"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr ""
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr ""
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr ""
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, fuzzy, c-format
+msgid "input line is too long"
+msgstr "%s: fail terlalu panjang"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pengunaan: %s UNGKAPAN\n"
+" atau: %s OPSYEN\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "Ralat sintaks"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "ralat pada carian ungkapan biasa (regexp)"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "hujah bukan-numerik"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "dibahagi dengan sifar"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pengunaan: %s [NOMBOR]...\n"
+" atau: %s OPSYEN\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"Cetak faktor perdana bagi setiap NOMBOR.\n"
+"\n"
+
+#: src/factor.c:85
+#, fuzzy
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+" Cetak faktor perdana bagi integer NOMBOR dinyatakan. Jika tiada hujah\n"
+" dinyatakan pada arahan baris. ia ia akan dibaca drpd input piawai.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s adalah terlalu besar"
+
+#: src/factor.c:158
+#, fuzzy, c-format
+msgid "%s is not a valid positive integer"
+msgstr "`%s' adalah bukan integer positif yang sah"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Penggunaan: %s [-DIGIT][OPSYEN]...[FAIL]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+
+#: src/fmt.c:400
+#, fuzzy, c-format
+msgid "invalid width: %s"
+msgstr "lebar tidak sah: `%s'"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"Balut baris input pada setiap FAIL (pinput piawai secara default),\n"
+" menulis keoutput piawai.\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "bilangan kolum tidak sah: `%s'"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent tidak cetak pengepala nama fail diberi\n"
+" -v, --verbose sentiasa cetak pengepala nama fail diberi\n"
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"N boleh mempunyai suffiks pengkali: b 512, k 1024, m 1024*1024.\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, fuzzy, c-format
+msgid "error reading %s"
+msgstr "membaca %s"
+
+#: src/head.c:154
+#, fuzzy, c-format
+msgid "error writing %s"
+msgstr "menulis %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr ""
+
+#: src/head.c:230 src/head.c:1046
+#, fuzzy, c-format
+msgid "%s: number of bytes is too large"
+msgstr "nombor tidak sah %s"
+
+#: src/head.c:443
+#, fuzzy, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "tak boleh mencipta fifo %s"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, fuzzy, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "tak dapat lseek %s"
+
+#: src/head.c:793
+#, fuzzy, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "tak memperolehi setem masa bagi %s"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s adalah terlalu besar dan tak boleh diperwakilkan"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "bilangan baris"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "bilangan byte"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "bilangan baris tidak sah"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "bilangan byte tidak sah"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "opsyen tidak sah -- %c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Penggunaan: %s\n"
+" atau: %s OPSYEN\n"
+"Cetak pengcam numerik (dalam heksadesimal) bagi hos semasa.\n"
+"\n"
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Penggunaan: %s [NAMA]\n"
+" atau: %s OPSYEN\n"
+"Cetak atau tetapkan namahos bagi sistem semasa.\n"
+"\n"
+
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "Tak dapat tetapkan namahos ke `%s'"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr "tak dapat menetapkan namahos, sistem ini kekurangan fungsi"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "tak dapat menentukan namahos"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Penggunaan: %s [OPSYEN]...[NAMAPENGGUNA]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Cetak maklumat bagu NAMAPENGGUNA, atau pengguna semasa.\n"
+"\n"
+" -a abai, bagi keserasian dengan versi lain\n"
+" -g, --group cetak hanya ID kumpulan efektif\n"
+" -G, --groups cetak semua ID kumpulan\n"
+" -n, --name cetak nama selain drpd nombor, bagi -ugG\n"
+" -r, --real cetak ID sebenar selain drpd ID efektif, dengan -ugG\n"
+" -u, --user cetak hanya ID pengguna efektif\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"Tanpa sebarang OPSYEN, cetak semua set berguna bagi maklumat yg "
+"dikenalpasti.\n"
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "tak dapat cetak hanya pengguna dan hanya kumpulan"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr "tak dapat cetak hanya nama atau ID sebenar dlm format default"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Tiada pengguna sebegitu"
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "tak dapat menjumpai nama bagi ID pengguna %u"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "tak dapat menjumpai nama atau ID kumpulan %u"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "tak dapat perolehi senarai kumpulan tambahan"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " kumpulan="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr "opsyen dikikis tak boleh digunakan bila memasang direktori"
+
+#: src/install.c:321
+#, fuzzy, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "opsyen dikikis tak boleh digunakan bila memasang direktori"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "mod tak sah %s"
+
+#: src/install.c:520
+#, fuzzy, c-format
+msgid "cannot change ownership of %s"
+msgstr "tak dapat menukar keizinan %s"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "Tak dapat tetapkan setem masa bagi %s"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "panggilan sistem fork() gagal"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr ""
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "Menulis ke %s."
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "pengguna tidak sah %s"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "mencipta direktori %s"
+
+#: src/install.c:651
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Penggunaan: %s [OPSYEN]... SUMBER DEST\n"
+" atau: %s [OPSYEN]... SUMBER... DIREKTORI\n"
+" atau: %s [OPSYEN]... --target-directory=DIREKTORI SUMBER...\n"
+
+#: src/install.c:658
+#, fuzzy
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"Dalam dua format pertama, salin SUMBER ke DEST atau banyak SUMBER ke\n"
+"DIREKTORI sesia ada , sekaligus menetapkan mod keizinan dan pemilik/"
+"kumpulan.\n"
+"Pada format ke tiga, cipta semua komponen bagi DIREKTORI yg diberi.\n"
+"\n"
+
+#: src/install.c:667
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" -a, --archive sama seperti -dpR\n"
+" --backup[=CONTROL] buat backup bagi setiap fail destinasi\n"
+" -b seperti --backup tetapi tak menerima hujah\n"
+" --copy-contents salin kandungan bagi fail sitimewa bila "
+"rekursif\n"
+" -d sama seperti --no-dereference --"
+"preserve=link\n"
+
+#: src/install.c:674
+#, fuzzy
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D cipta semua komponen awalanbagi DEST kecuali yg "
+"terakhir,\n"
+" kemudian salin SUMBER ke DEST; berguna pada format "
+"pertama\n"
+" -g, --group=KUMPULAN tetapkan pemilikan kumpulan, selain drpd kumpulan "
+"bagi proses semasa\n"
+" -m, --mode=MOD tetapkan mod keizinan (seperti dlm chmod), selain "
+"drpd rwxr-xr-x\n"
+" -o, --owner=PEMILIK tetapkan pemilikan (super-user sahaja)\n"
+
+#: src/install.c:681
+#, fuzzy
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps terap masa akses/pengubahsuaian bagi fail "
+"SUMBERn ke fail destinasi itu\n"
+" -s, --strip strip jadual simbol, hanya untuk format pertama dan "
+"kedua\n"
+" -S, --suffix=SUFFIKS tindih suffiks backup biasa\n"
+" -v, --verbose cetak nama bagi setiap direktori bila ianya diipta\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+
+#: src/join.c:617 src/join.c:812
+#, fuzzy, c-format
+msgid "invalid field number: %s"
+msgstr "bilangan medan tidak sah: `%s'"
+
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "pengspesifikasi medan tidak sah: `%s'"
+
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "nombor tidak sah %s"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr ""
+
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "aksara tidak sah pada %s pada rentetan mod %s"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr ""
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "kedua-dua fail tak boleh menjadi input piawai"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"Penggunaan: %s [-s ISYARAT | -ISYARAT] PID...\n"
+" atau: %s -l [ISYARAT]...\n"
+" atau: %s -t [ISYARAT]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+"Menghantar isyarat ke proses, atau senaraikan isyarat.\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: isyarat tidak sah"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: id proses tidak sah"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "opsyen tidak sah -- %c"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: banyak isyarat dinyatakan"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "banyak opsyen -l or -t dinyatakan"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "tak boleh gabungkan isyarat dengan -l atau -t"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr "tiada ID proses dinyatakan"
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Penggunaan: %s FAIL1 FAIL2\n"
+" atau: %s OPSYEN\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+"Panggil fungsi pautan untuk mencipta pautan bernama FAIL2 ke FILE1 sedia "
+"ada.\n"
+"\n"
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "tak dapat mencipta pautan %s ke %s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+"%s: amaran: membuat pautan keras ke pautan simbolik adalah tidak portable"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: pautan keras tidak diizinkan bagi direktori"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: tak dapat menindih direktori"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: mengganti %s? "
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "cipta pautan simbolik %s ke %s"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "cipta pautan simbolik %s ke %s"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "mencipta pautan keras %s ke %s"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "mencipta pautan keras %s ke %s"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "mencipta pautan keras %s ke %s"
+
+#: src/ln.c:324
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Penggunaan: %s [OPSYEN]... SUMBER DEST (format pertama)\n"
+" atau: %s [OPSYEN]... SUMBER... DIREKTORI (format ke dua)\n"
+" atau: %s -d [OPSYEN]... DIREKTORI... (format ke tiga)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+
+#: src/ln.c:342
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" -a, --archive sama seperti -dpR\n"
+" --backup[=CONTROL] buat backup bagi setiap fail destinasi\n"
+" -b seperti --backup tetapi tak menerima hujah\n"
+" --copy-contents salin kandungan bagi fail sitimewa bila "
+"rekursif\n"
+" -d sama seperti --no-dereference --"
+"preserve=link\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+
+#: src/ln.c:484
+#, fuzzy, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "%s: Direktori sasaran yang dinyatakan adalah bukan direktori"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Pengunan: %s [OPSYEN]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"Cetak nama bagi pengguna semasa.\n"
+"\n"
+
+#: src/logname.c:89
+#, fuzzy, c-format
+msgid "no login name"
+msgstr "%s: tiada nama logmasuk\n"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%b %e %Y"
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%b %e %H:%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr ""
+"mengabai nilai pembolehubah persekitaran QUOTING_STYLE yang tidak sah: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "mengabai lebar yg. tak sah pada pembolehubah persekitaran COLUMNS: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr ""
+"mengabai saiz tab yg. tak sah pada pembolehubah persekitaran TABSIZE: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "lebar baris tidak sah: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "saiz tab tidak sah: %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "format gaya tarikh tidak sah %s"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "prefix tidak dikenali: %s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "nilai pembolehubah persekitaran LS_COLORS tidak boleh dihantar"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "tak dapat membuka direktori %s"
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "tak dapat menentukan peranti dan inod bagi %s"
+
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "tak dapat menyenaraikan direktori tersedia-tersenarai: %s"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "membaca direktori %s"
+
+#: src/ls.c:2410
+#, fuzzy, c-format
+msgid "closing directory %s"
+msgstr "mencipta direktori %s"
+
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "tak boleh banding nama fail %s dan %s"
+
+#: src/ls.c:4277
+#, fuzzy
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"Senarai maklumat tentang FAIL (direktori semasa secara default).\n"
+"Inih semasukan mengikut abjad jika tiada -cftuSUX atau --sort.\n"
+"\n"
+
+#: src/ls.c:4285
+#, fuzzy
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all jangan sorok kemasukan bermula dengan .\n"
+" -A, --almost-all jangan senarai . dan ..\n"
+" --author cetak penulis bagi setiap fail\n"
+" -b, --escape cetak escape oktal bagi aksara bukangrafik\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=SAIZ guna blok SAIZ-byte\n"
+" -B, --ignore-backups jangan senarai kemasukan berakhir dengan ~\n"
+" -c dengan -lt: isih dengan, dan papar, ctime "
+"(masa\n"
+" terkahir diubahsuai drpd maklumat status "
+"fail)\n"
+" dengan -l: papar ctime dan isih mengikut "
+"nama\n"
+" sebaliknya: isih mengikut ctime\n"
+
+#: src/ls.c:4299
+#, fuzzy
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C senarai kemasukan mengikut kolum\n"
+" --color[=BILA] kawal samada warna digunakan untuk membezakan \n"
+" jenis fail . BILA boleh jadi `never', "
+"`always', atau `auto'\n"
+" -d, --directory senarai kemasukan direktori selain drpd "
+"kandungannya\n"
+" -D, --dired jana output direka untuk mod dired Emacs\n"
+
+#: src/ls.c:4307
+#, fuzzy
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f jangan isih, hidupkan -aU, matikan -lst\n"
+" -F, --classify tambah penunjuk (satu drpd */=@|) ke kemasukan\n"
+" --format=PERKATAAN rentas -x, koma -m, mengufuk -x, panjang -l,\n"
+" kolum-tunggal -1, verbose -l, menegak -C\n"
+" --full-time seperti -l --time-style=full-iso\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+#, fuzzy
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all termasuk sistemfail yang mempunyai 0 blok\n"
+" -B, --block-size=SIZE guna blok SIZE-byte\n"
+" -h, --human-readable cetak saiz dalam format bolehdibaca manusia (e.g., "
+"1K 234M 2G)\n"
+" -H, --si sebaliknya, guna kuasa 1000 bukannya 1024\n"
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+
+#: src/ls.c:4368
+#, fuzzy
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse turutan menyongsang ketika mengisih\n"
+" -R, --recursive senarai subdirektori secara rekursif\n"
+" -s, --size cetak saiz bagi setiap fail, dalam blok\n"
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#: src/md5sum.c:150
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"Dengan tiada FAIL, atau bila FAIL adalah -, baca input piawai.\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+"\n"
+" -B, --binary menggunakan penulisan binari ke peranti okonsol.\n"
+"\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr ""
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr ""
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr ""
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "GAGAL"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "OK"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: ralat penulisan"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr ""
+
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr ""
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr ""
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Penggunaan; %s [OPSYEN] DIREKTORI...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"Cipta DIREKTORI, jika ia belum wujud.\n"
+"\n"
+
+#: src/mkdir.c:67
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "direktori %s dicipta"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Penggunaan: %s [OPSYEN] NAMA...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"Cipta paip bernama (FIFO) dengan NAMA diberi.\n"
+"\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+" -m, --mode=MOD tetapkan mod keizinan (seperti dlm chmod), bukan umask "
+"a=rw\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "mod tak sah"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Penggunaan: %s [OPSYEN]... NAMA JENIS [MAJOR MINOR]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"Cipta NAMA fail istimewa bagi JENIS diberi.\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"bila mencipta fail istimewa blok, nombor peranti major\n"
+" dan minor mesti dinyatakan"
+
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "nombor peranti minor tidak sah %s"
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "fail istimewa blok tidak disokong"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "fail istimewa aksara tidak disokong"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "nombor peranti major tidak sah %s"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "nombor peranti minor tidak sah %s"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "peranti tidak sah %s %s"
+
+#: src/mknod.c:216
+#, fuzzy, c-format
+msgid "invalid device type %s"
+msgstr "peranti tidak sah %s %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Tukarnama SUMBER ke DEST, atau pindahkan SUMBER ke DIREKTORI.\n"
+"\n"
+
+#: src/mv.c:297
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" -a, --archive sama seperti -dpR\n"
+" --backup[=CONTROL] buat backup bagi setiap fail destinasi\n"
+" -b seperti --backup tetapi tak menerima hujah\n"
+" --copy-contents salin kandungan bagi fail sitimewa bila "
+"rekursif\n"
+" -d sama seperti --no-dereference --"
+"preserve=link\n"
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+
+#: src/mv.c:308
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/nice.c:76
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Penggunaan: %s [OPSYEN] NAMA...\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "hujah tidak sah %s bagi %s"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "arahan mesti diberi dengan satu penyesuaian"
+
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "tak dapat perolehi nama sistem"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "tak dapat menetapkan tarikh"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+
+#: src/nl.c:214
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:281
+#, fuzzy, c-format
+msgid "line number overflow"
+msgstr "nombor tidak sah %s"
+
+#: src/nl.c:479
+#, fuzzy, c-format
+msgid "invalid header numbering style: %s"
+msgstr "bilangan medan tidak sah: `%s'"
+
+#: src/nl.c:487
+#, fuzzy, c-format
+msgid "invalid body numbering style: %s"
+msgstr "nombor tidak sah %s"
+
+#: src/nl.c:495
+#, fuzzy, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "nombor tidak sah %s"
+
+#: src/nl.c:504
+#, fuzzy, c-format
+msgid "invalid starting line number: %s"
+msgstr "nombor baris permulaan tidak sah `%s'"
+
+#: src/nl.c:513
+#, fuzzy, c-format
+msgid "invalid line number increment: %s"
+msgstr "lebar baris tidak sah: %s"
+
+#: src/nl.c:525
+#, fuzzy, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "nombor tidak sah %s"
+
+#: src/nl.c:539
+#, fuzzy, c-format
+msgid "invalid line number field width: %s"
+msgstr "lebar baris tidak sah: %s"
+
+#: src/nl.c:558
+#, fuzzy, c-format
+msgid "invalid line numbering format: %s"
+msgstr "lebar baris tidak sah: %s"
+
+#: src/nohup.c:57
+#, fuzzy, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pengunaan: %s FAIL\n"
+" atau: %s OPSYEN\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "mengabaikan segala hujah"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, fuzzy, c-format
+msgid "failed to open %s"
+msgstr "gagal mengekalkan masa bagi %s"
+
+#: src/nohup.c:161
+#, fuzzy, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "penukaran kumpulan %s"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr ""
+
+#: src/od.c:307
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Penggunaan: %s [OPTION]... GROUP FILE...\n"
+" atau: %s [OPTION]... --reference=RFILE FILE...\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/od.c:320
+#, fuzzy
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+"Hujah mandatori kepada opsyen panjang andalah mandatori bagi opsyen pendek "
+"juga.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:353
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "jenis rentetan m tidak sah `%s'"
+
+#: src/od.c:693
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+
+#: src/od.c:812
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "aksara tidak sah pada %s pada rentetan mod %s"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr ""
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "Langkah hujah"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "Had hujah"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr ""
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr ""
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr ""
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr ""
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr ""
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr ""
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr ""
+
+#: src/paste.c:202
+#, fuzzy, c-format
+msgid "standard input is closed"
+msgstr "input piawai"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+
+#: src/pathchk.c:99
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Penggunaan: %s [OPSYEN] NAMA...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "aksara tidak sah pada %s pada rentetan mod %s"
+
+#: src/pathchk.c:282
+#, fuzzy, c-format
+msgid "empty file name"
+msgstr "fail kosong biasa"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr ""
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr ""
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr ""
+
+#: src/pinky.c:353
+#, fuzzy, c-format
+msgid "Directory: "
+msgstr "direktori"
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr ""
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr ""
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr ""
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr ""
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr ""
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr ""
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr ""
+
+#: src/pinky.c:427
+msgid "When"
+msgstr ""
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr ""
+
+#: src/pinky.c:510
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Penggunaan: %s [OPSYEN]...[FAIL]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr ""
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr ""
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr ""
+
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "jenis rentetan m tidak sah `%s'"
+
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "bilangan baris tidak sah"
+
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "nombor peranti minor tidak sah %s"
+
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "lebar baris tidak sah: %s"
+
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "nombor tidak sah %s"
+
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "nombor tidak sah %s"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr ""
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr ""
+
+#: src/pr.c:1202
+#, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr ""
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "Lebar halaman terlalu sempit"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2406
+#, fuzzy, c-format
+msgid "Page number overflow"
+msgstr "nombor tidak sah %s"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr ""
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+
+#: src/printf.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pengunaan: %s FAIL\n"
+" atau: %s OPSYEN\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr ""
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr ""
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr ""
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr ""
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr "lebar medan tidak sah: %s"
+
+#: src/printf.c:585
+#, fuzzy, c-format
+msgid "invalid precision: %s"
+msgstr "penukaran tidak sah: %s"
+
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%s: fail saiz tidak sah"
+
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr ""
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr ""
+
+#: src/ptx.c:422
+#, c-format
+msgid "%s (for regexp %s)"
+msgstr ""
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "lebar tidak sah: `%s'"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr ""
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+
+#: src/pwd.c:160
+#, fuzzy, c-format
+msgid "failed to chdir to %s"
+msgstr "gagal mengekalkan masa bagi %s"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "gagal mengekalkan masa bagi %s"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, fuzzy, c-format
+msgid "ignoring non-option arguments"
+msgstr "mengabaikan segala hujah"
+
+#: src/readlink.c:67
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Penggunaan: %s [OPSYEN]...[FAIL]...\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "gagal mencari fail %s"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "tak dapat membuka direktori %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "tak dapat mencipta direktori %s"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+
+#: src/remove.c:854
+#, fuzzy, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s: buang direktori write-protected %s? "
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr ""
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: buang write-protected %s %s? "
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: buang %s %s? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "direktori dibuang: %s\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "tak dapat membuka direktori %s"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "tak dapat membuang direktori %s"
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr ""
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "tak dapat membuang direktori %s"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "tak dapat membuang direktori %s"
+
+#: src/remove.c:1558
+#, fuzzy, c-format
+msgid "cannot restore current working directory"
+msgstr "tak dapat mencipta direktori %s"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Penggunaan: %s [OPSYEN]... FAIL...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: buang %s %s? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "membuang direktori, %s"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Penggunaan: %s [OPSYEN]... DIREKTORI...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"Buang DIREKTORI, jika ianya kosong.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" abaikan setiap kegagalan yang hanya disebabkan oleh\n"
+" direktori yang tidak kosong\n"
+
+#: src/rmdir.c:148
+#, fuzzy
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents buang DIRECTORY, dan cuba buang setiap komponen direktori\n"
+" bagi nama path itu. E.g., `rmdir -p a/b/c' adalah\n"
+" sama dengan `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output diagnostik bagi setiap direktori yg diproses\n"
+
+#: src/seq.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Penggunaan: %s [OPSYEN]... SUMBER DEST\n"
+" atau: %s [OPSYEN]... SUMBER... DIREKTORI\n"
+" atau: %s [OPSYEN]... --target-directory=DIREKTORI SUMBER...\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+
+#: src/seq.c:88
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, fuzzy, c-format
+msgid "invalid floating point argument: %s"
+msgstr "format tarikh tidak sah %s"
+
+#: src/seq.c:342
+#, fuzzy, c-format
+msgid "invalid format string: %s"
+msgstr "rentetan mod tidak sah: %s"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr ""
+
+#: src/setuidgid.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pengunaan: %s FAIL\n"
+" atau: %s OPSYEN\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr ""
+
+#: src/setuidgid.c:109
+#, fuzzy, c-format
+msgid "cannot set supplemental group"
+msgstr "tak dapat perolehi senarai kumpulan tambahan"
+
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "tak dapat menukar ke kumpulan null"
+
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "tak dapat stat %s"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Penggunaan: %s [OPSYEN] FAIL [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:174
+#, fuzzy, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force tukar keizinan supaya membolehkan menulisan jika perlu\n"
+" -n, --iterations=N Tindih sebanyak N kali selain drpd default (%d)\n"
+" -s, --size=N lunyai ia berapa byte (suffiks seperti K, M, G diterima)\n"
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+
+#: src/shred.c:303
+#, fuzzy, c-format
+msgid "%s: fdatasync failed"
+msgstr "fail istimewa blok"
+
+#: src/shred.c:314
+#, fuzzy, c-format
+msgid "%s: fsync failed"
+msgstr "fail istimewa blok"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr ""
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr ""
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr ""
+
+#: src/shred.c:478
+#, fuzzy, c-format
+msgid "%s: lseek failed"
+msgstr "fail istimewa blok"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr ""
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr ""
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr ""
+
+#: src/shred.c:776
+#, fuzzy, c-format
+msgid "%s: fstat failed"
+msgstr "stat gagal"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: jenis fail tidak sah"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: fail mempunya saiz negatif"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr ""
+
+#: src/shred.c:889
+#, fuzzy, c-format
+msgid "%s: fcntl failed"
+msgstr "fail istimewa blok"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr ""
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: membuang"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: ditukarnama ke %s"
+
+#: src/shred.c:1018
+#, fuzzy, c-format
+msgid "%s: failed to remove"
+msgstr "%s: fail terlalu panjang"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: dibuang"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, fuzzy, c-format
+msgid "%s: failed to close"
+msgstr "%s: fail terlalu panjang"
+
+#: src/shred.c:1065
+#, fuzzy, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: fail terlalu panjang"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr ""
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "banyak opsyen -l or -t dinyatakan"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: fail saiz tidak sah"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Penggunaan: %s [OPSYEN]... SUMBER DEST\n"
+" atau: %s [OPSYEN]... SUMBER... DIREKTORI\n"
+" atau: %s [OPSYEN]... --target-directory=DIREKTORI SUMBER...\n"
+
+#: src/shuf.c:57
+#, fuzzy
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"Cetak bahagian ibaris dipilih drpd setiap FAIL ke output piawai.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "banyak opsyen -l or -t dinyatakan"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "nombor tidak sah %s"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "lebar baris tidak sah: %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, fuzzy, c-format
+msgid "multiple output files specified"
+msgstr "banyak opsyen -l or -t dinyatakan"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "tak boleh gabungkan isyarat dengan -l atau -t"
+
+#: src/shuf.c:362
+#, c-format
+msgid "extra operand %s\n"
+msgstr ""
+
+#: src/sleep.c:47
+#, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "format gaya tarikh tidak sah %s"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, fuzzy, c-format
+msgid "cannot read realtime clock"
+msgstr "tak boleh mencipta pautan %s"
+
+#: src/sort.c:310
+#, fuzzy
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"Cetak bahagian ibaris dipilih drpd setiap FAIL ke output piawai.\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+
+#: src/sort.c:326
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/sort.c:363
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "Menulis ke %s."
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+#, fuzzy
+msgid "cannot create temporary file"
+msgstr "tak dapat memcipta fail biasa %s"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "pembukaan gagal"
+
+#: src/sort.c:758
+#, fuzzy
+msgid "fflush failed"
+msgstr "fail istimewa blok"
+
+#: src/sort.c:763 src/sort.c:3171
+#, fuzzy
+msgid "close failed"
+msgstr "fail istimewa blok"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "pembukaan gagal"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr ""
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "tak dapat memcipta fail biasa %s"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "tak dapat memcipta fail biasa %s"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr ""
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "tak dapat mencipta direktori %s"
+
+#: src/sort.c:938
+#, fuzzy
+msgid "write failed"
+msgstr "fail pelik"
+
+#: src/sort.c:975
+#, fuzzy, c-format
+msgid "warning: cannot remove: %s"
+msgstr "tak dapat membuang %s"
+
+#: src/sort.c:1092
+#, fuzzy
+msgid "sort size"
+msgstr "saiz blok"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "stat gagal"
+
+#: src/sort.c:1435
+#, fuzzy
+msgid "read failed"
+msgstr "fail biasa"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr ""
+
+#: src/sort.c:1955
+#, fuzzy
+msgid "standard error"
+msgstr "output standard"
+
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: fail saiz tidak sah"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "hujah tidak sah %s bagi %s"
+
+#: src/sort.c:2887
+#, fuzzy
+msgid "invalid number after `-'"
+msgstr "nombor tidak sah %s"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+#, fuzzy
+msgid "invalid number after `.'"
+msgstr "nombor tidak sah %s"
+
+#: src/sort.c:2893 src/sort.c:2988
+#, fuzzy
+msgid "stray character in field spec"
+msgstr "fail istimewa aksara"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "banyak opsyen -l or -t dinyatakan"
+
+#: src/sort.c:2943
+#, fuzzy
+msgid "invalid number at field start"
+msgstr "nombor tidak sah %s"
+
+#: src/sort.c:2947 src/sort.c:2975
+#, fuzzy
+msgid "field number is zero"
+msgstr "nombor tidak sah %s"
+
+#: src/sort.c:2956
+#, fuzzy
+msgid "character offset is zero"
+msgstr "fail istimewa aksara"
+
+#: src/sort.c:2971
+#, fuzzy
+msgid "invalid number after `,'"
+msgstr "nombor tidak sah %s"
+
+#: src/sort.c:3142
+#, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr ""
+
+#: src/split.c:106
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Penggunaan: %s [OPSYEN]...[FAIL]...\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr ""
+
+#: src/split.c:211
+#, fuzzy, c-format
+msgid "creating file %s\n"
+msgstr "mencipta %s"
+
+#: src/split.c:370
+#, fuzzy, c-format
+msgid "cannot split in more than one way"
+msgstr "tak boleh nyatakan masa lebih daripada satu sumber"
+
+#: src/split.c:420
+#, fuzzy, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: fail saiz tidak sah"
+
+#: src/split.c:434 src/split.c:458
+#, fuzzy, c-format
+msgid "%s: invalid number of bytes"
+msgstr "nombor tidak sah %s"
+
+#: src/split.c:446
+#, fuzzy, c-format
+msgid "%s: invalid number of lines"
+msgstr "nombor tidak sah %s"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr ""
+
+#: src/split.c:518
+#, fuzzy, c-format
+msgid "invalid number of lines: 0"
+msgstr "bilangan baris tidak sah"
+
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s: opensyen tidak dikenali `%c%s'\n"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%s: fail saiz tidak sah"
+
+#: src/stat.c:726
+#, fuzzy, c-format
+msgid "warning: backslash at end of format"
+msgstr "aksara tidak sah pada %s pada rentetan mod %s"
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr "tak dapat membaca maklumat sistem fail bagi %s"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Penggunaan: %s [OPSYEN] FAIL...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr ""
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "bila menyatakan gaya output, mod tak boleh ditetapkan"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr ""
+
+#: src/stty.c:885 src/stty.c:995
+#, fuzzy, c-format
+msgid "invalid argument %s"
+msgstr "hujah tidak sah %s bagi %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, fuzzy, c-format
+msgid "missing argument to %s"
+msgstr "kehilangan hujah fail"
+
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "lebar baris tidak sah: %s"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr ""
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "new_mode: mod\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: tiada maklumat saiz bagi peranti ini"
+
+#: src/stty.c:1888
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "hujah tidak sah %s bagi %s"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Katalaluan:"
+
+#: src/su.c:245
+#, fuzzy, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "tak dapat membuka direktori %s"
+
+#: src/su.c:303
+#, fuzzy, c-format
+msgid "cannot set groups"
+msgstr "tak dapat stat %s"
+
+#: src/su.c:307
+#, fuzzy, c-format
+msgid "cannot set group id"
+msgstr "tak dapat menukar ke kumpulan null"
+
+#: src/su.c:309
+#, fuzzy, c-format
+msgid "cannot set user id"
+msgstr "tak dapat stat %s"
+
+#: src/su.c:385
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Penggunaan: %s [OPSYEN]...[FAIL]...\n"
+
+#: src/su.c:386
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "pengguna %s tidak wujud"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "katalaluan salah"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr ""
+
+#: src/su.c:523
+#, fuzzy, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "Gagal menukar direktori %s "
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "mengabaikan segala hujah"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+
+#: src/tac.c:236 src/tac.c:337
+#, fuzzy, c-format
+msgid "%s: seek failed"
+msgstr "fail istimewa blok"
+
+#: src/tac.c:265
+#, fuzzy, c-format
+msgid "record too large"
+msgstr "%s adalah terlalu besar"
+
+#: src/tac.c:459
+#, fuzzy, c-format
+msgid "cannot create temporary file %s"
+msgstr "tak dapat memcipta fail biasa %s"
+
+#: src/tac.c:466
+#, fuzzy, c-format
+msgid "cannot open %s for writing"
+msgstr "tak dapat buka %s untuk dibaca"
+
+#: src/tac.c:487 src/tac.c:494
+#, fuzzy, c-format
+msgid "%s: write error"
+msgstr "ralat menulis"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "pemisah tak boleh kosong"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tail.c:229
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+
+#: src/tail.c:244
+#, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+
+#: src/tail.c:336
+#, fuzzy, c-format
+msgid "closing %s (fd=%d)"
+msgstr "menutup %s"
+
+#: src/tail.c:411
+#, fuzzy, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "tak boleh mencipta fifo %s"
+
+#: src/tail.c:415
+#, fuzzy, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "tak boleh mencipta fifo %s"
+
+#: src/tail.c:867
+#, fuzzy, c-format
+msgid "%s has become inaccessible"
+msgstr "`%s' menjadi tidak boleh diakses"
+
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+
+#: src/tail.c:905
+#, fuzzy, c-format
+msgid "%s has become accessible"
+msgstr "`%s' menjadi boleh diakses"
+
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr ""
+
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr ""
+
+#: src/tail.c:1025
+#, fuzzy, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "tak dapat menukar ke kumpulan null"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr ""
+
+#: src/tail.c:1090
+#, fuzzy, c-format
+msgid "no files remaining"
+msgstr "kehilangan hujah fail"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+
+#: src/tail.c:1439
+#, fuzzy, c-format
+msgid "number in %s is too large"
+msgstr "nombor tidak sah %s"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr ""
+
+#: src/tail.c:1523
+#, fuzzy, c-format
+msgid "%s: invalid PID"
+msgstr "%s: fail saiz tidak sah"
+
+#: src/tail.c:1542
+#, fuzzy, c-format
+msgid "%s: invalid number of seconds"
+msgstr "nombor tidak sah %s"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr ""
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+
+#: src/tail.c:1573
+#, fuzzy, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "pautan simbolik tidak disokong pada sistem ini"
+
+#: src/tail.c:1667
+#, fuzzy, c-format
+msgid "cannot follow %s by name"
+msgstr "tak dapat perolehi nama sistem"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+
+#: src/tee.c:71
+#, fuzzy
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Dengan tiada FAIL, atau bila FAIL adalah -, baca input piawai.\n"
+
+#: src/test.c:125
+#, fuzzy, c-format
+msgid "missing argument after %s"
+msgstr "kehilangan hujah fail"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "nombor tidak sah %s"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "')' dijangka\n"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "')' dijangka\n"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: ungkapan biasa (regexp) tidak sah: %s"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "-nt tak boleh menerima -l\n"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "-ef tak boleh menerima -l\n"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "-ot tak boleh menerima -l\n"
+
+#: src/test.c:368
+#, fuzzy
+msgid "unknown binary operator"
+msgstr "Ralat sistem yang tidak diketahui"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: ungkapan biasa (regexp) tidak sah: %s"
+
+#: src/test.c:694
+#, fuzzy
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Pengunaan: %s FAIL\n"
+" atau: %s OPSYEN\n"
+
+#: src/test.c:701
+#, fuzzy
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"Pengunaan: %s FAIL\n"
+" atau: %s OPSYEN\n"
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+msgid "missing `]'"
+msgstr ""
+
+#: src/test.c:846
+#, fuzzy, c-format
+msgid "extra argument %s"
+msgstr "terlalu banyak hujah"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "format tarikh tidak sah %s"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "mencipta %s"
+
+#: src/touch.c:211
+#, fuzzy, c-format
+msgid "cannot touch %s"
+msgstr "tak dapat stat %s"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "menetapkan masa untuk %s"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "tak boleh nyatakan masa lebih daripada satu sumber"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+
+#: src/tr.c:290
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Penggunaan: %s [OPSYEN]...[FAIL]...\n"
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+
+#: src/tr.c:519
+#, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr ""
+
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr ""
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr ""
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr ""
+
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "aksara tidak sah pada %s pada rentetan mod %s"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr ""
+
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr "fail istimewa aksara"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr ""
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr ""
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr ""
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr ""
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr ""
+
+#: src/tr.c:1731
+msgid "Two strings must be given when translating."
+msgstr ""
+
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr ""
+
+#: src/true.c:42
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pengunaan: %s FAIL\n"
+" atau: %s OPSYEN\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tsort.c:474
+#, fuzzy, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "nombor tidak sah %s"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr ""
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Pengunaan: %s [OPSYEN]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "bukan satu tty"
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+
+#: src/uname.c:127
+#, fuzzy
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v, --kernel-version cetak versi kernel\n"
+" -m, --machine cetak nama perkakasan mesin\n"
+" -p, --processor cetak jenis pemproses\n"
+" -i, --hardware-platform cetak platform perkakasan\n"
+" -o, --operating-system cetak sistem pengoperasian\n"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "tak dapat perolehi nama sistem"
+
+#: src/unexpand.c:125
+#, fuzzy
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"Dengan tiada FAIL, atau bila FAIL adalah -, baca input piawai.\n"
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "%s adalah terlalu besar"
+
+#: src/uniq.c:135
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Penggunaan: %s [OPSYEN]...[FAIL]...\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+
+#: src/uniq.c:350
+#, fuzzy, c-format
+msgid "too many repeated lines"
+msgstr "terlalu banyak hujah"
+
+#: src/uniq.c:512
+#, fuzzy
+msgid "invalid number of fields to skip"
+msgstr "nombor tidak sah %s"
+
+#: src/uniq.c:521
+#, fuzzy
+msgid "invalid number of bytes to skip"
+msgstr "nombor tidak sah %s"
+
+#: src/uniq.c:530
+#, fuzzy
+msgid "invalid number of bytes to compare"
+msgstr "nombor tidak sah %s"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pengunaan: %s FAIL\n"
+" atau: %s OPSYEN\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "takboleh nyahpaut %s"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "tak dapat masa but"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s naik "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "am"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "pm"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr ""
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr ""
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/uptime.c:147
+#, fuzzy, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "pengguna tidak sah"
+msgstr[1] "pengguna tidak sah"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", purata muatan: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Penggunaan: %s [OPSYEN]...[FAIL]...\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+
+#: src/wc.c:121
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr " tua "
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "term="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr ""
+
+#: src/who.c:497
+msgid "clock change"
+msgstr ""
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr ""
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "terkahir="
+
+#: src/who.c:545
+#, fuzzy, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"# pengguna=%u\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "NAMA"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "BARIS"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "MASA"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr "LEKA"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "KOMEN"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "KELUAR"
+
+#: src/who.c:633
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Penggunaan: %s [OPSYEN]...[FAIL]...\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+"Amaran: -i akan dibuang pada keluaran anda datang; guna -u sebaliknya"
+
+#: src/whoami.c:51
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+
+#: src/whoami.c:95
+#, fuzzy, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "tak dapat menjumpai nama bagi ID pengguna %u"
+
+#: src/yes.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pengunaan: %s FAIL\n"
+" atau: %s OPSYEN\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "tak dapat menukar hakmilik dan/atau kumpulan %s"
+
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "tak dapat chdir ke direktori %s"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "tak boleh mendapatkan kumpulan logmasuk untuk UID numerik"
+
+#, fuzzy
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Ini adalah perisian bebas; lihat sumber untuk keadaan menyalin. Tiada\n"
+#~ "waranti; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "terlalu sedikit hujah"
+
+#~ msgid "Torbjorn Granlund and Richard M. Stallman"
+#~ msgstr "Torbjorn Granlund and Richard M. Stallman"
+
+#~ msgid "closing standard output"
+#~ msgstr "menutup output piawai"
+
+#~ msgid "group number"
+#~ msgstr "nombor kumpulan"
+
+#~ msgid "invalid group number %s"
+#~ msgstr "nombor kumpulan tak sah %s"
+
+#~ msgid "invalid mode string: %s"
+#~ msgstr "rentetan mod tidak sah: %s"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "Penggunaan: %s [OPSYEN]... PEMILIK[:[KUMPULAN]] FAIL...\n"
+#~ " atau: %s [OPSYEN]... :KUMPULAN FAIL...\n"
+#~ " atau: %s [OPSYEN]... --reference=RFAIL FAIL...\n"
+
+#~ msgid "Richard Stallman and David MacKenzie"
+#~ msgstr "Richard Stallman dan David MacKenzie"
+
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "Penggunaan: %s [OPSYEN]...FAIL_KIRI FAIL_KANAN\n"
+
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "tak boleh menindih direktori %s"
+
+#~ msgid "Torbjorn Granlund, David MacKenzie, and Jim Meyering"
+#~ msgstr "Torbjorn Granlund, David MacKenzie, dan Jim Meyering"
+
+#~ msgid "%s: specified destination directory does not exist"
+#~ msgstr "%s: Direktori destinasi dinyatakan tidak wujud"
+
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "%s: Sasaran yang dinyatakan adalah bukan direktori"
+
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr ""
+#~ "menyalin banyak fail, tetapi hujah terakhir %s adalah bukan direktori"
+
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "pautan simbolik tidak disokong pada sistem ini"
+
+#~ msgid "Stuart Kemp and David MacKenzie"
+#~ msgstr "Stuart Kemp dan David MacKenzie"
+
+#~ msgid "%s: `+' or `-' expected after delimeter"
+#~ msgstr "%s: `+' atau `-' dijangka selepas pemisah"
+
+#~ msgid "David Ihnat, David MacKenzie, and Jim Meyering"
+#~ msgstr "Torbjorn Granlund, David MacKenzie, dan Jim Meyering"
+
+#~ msgid ""
+#~ "Display the current time in the given FORMAT, or set the system date.\n"
+#~ "\n"
+#~ " -d, --date=STRING display time described by STRING, not `now'\n"
+#~ " -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+#~ " -ITIMESPEC, --iso-8601[=TIMESPEC] output date/time in ISO 8601 "
+#~ "format.\n"
+#~ " TIMESPEC=`date' for date only,\n"
+#~ " `hours', `minutes', or `seconds' for date "
+#~ "and\n"
+#~ " time to the indicated precision.\n"
+#~ " --iso-8601 without TIMESPEC defaults to "
+#~ "`date'.\n"
+#~ msgstr ""
+#~ "Papar masa semasa dalam FORMAT diberi, atau tetapkan tarikh sistem.\n"
+#~ "\n"
+#~ " -d, --date=RENTETAN papar masa diterangkan oleh RENTETAN, bukan "
+#~ "`now'\n"
+#~ " -f, --file=DATEFILE seperti --date sekali bagi setiap baris "
+#~ "DATEFILE\n"
+#~ " -ITIMESPEC, --iso-8601[=TIMESPEC] output tarikh/masa dalam format ISO "
+#~ "8601.\n"
+#~ " TIMESPEC=`date' untuk tarikh sahaja,\n"
+#~ " `hours', `minutes', atau `seconds' baru "
+#~ "tarikh \n"
+#~ " dan masa untuk menunjukkan kejituan.\n"
+#~ " --iso-8601 tanpa TIMESPEC default kepada "
+#~ "`date'.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " %F same as %Y-%m-%d\n"
+#~ " %g the 2-digit year corresponding to the %V week number\n"
+#~ " %G the 4-digit year corresponding to the %V week number\n"
+#~ msgstr ""
+#~ " %F sama sebagai %Y-%m-%d\n"
+#~ " %g tahun 2-digit corresponding to the %V week number\n"
+#~ " %G tahun 4-digit corresponding to the %V week number\n"
+
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "terlalu banyak hujah bukan.opsyen: %s%s"
+
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-822 (-R) option"
+#~ msgstr ""
+#~ "rentetan format tak boleh dinyatakan bila menggunakan opesyen --rfc-822 (-"
+#~ "R)"
+
+#~ msgid "undefined"
+#~ msgstr "tak tertakrif"
+
+#~ msgid "cannot get time of day"
+#~ msgstr "Tak dapat perolehi masa bagi hari"
+
+#~ msgid "Paul Rubin, David MacKenzie, and Stuart Kemp"
+#~ msgstr "Paul Rubin, David MacKenzie, and Stuart Kemp"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "%s+%s rekod masuk\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "%s+%s rekod keluar\n"
+
+#~ msgid "Torbjorn Granlund, David MacKenzie, Larry McVoy, and Paul Eggert"
+#~ msgstr "Torbjorn Granlund, David MacKenzie, Larry McVoy, and Paul Eggert"
+
+#~ msgid "David MacKenzie and Jim Meyering"
+#~ msgstr "David MacKenzie dan Jim Meyering"
+
+#~ msgid ""
+#~ "Torbjorn Granlund, David MacKenzie, Larry McVoy, Paul Eggert, and Jim "
+#~ "Meyering"
+#~ msgstr ""
+#~ "Torbjorn Granlund, David MacKenzie, Larry McVoy, Paul Eggert, and Jim "
+#~ "Meyering"
+
+#~ msgid "cannot change to parent of directory %s"
+#~ msgstr "Gagal menukar ke pangkal direktori %s"
+
+#~ msgid "Richard Mlynarik and David MacKenzie"
+#~ msgstr "Richard Mlynarik dan David MacKenzie"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Penggunaan: %s [abaikan hujag arahan baris]\n"
+#~ " atau: %s OPSYEN\n"
+#~ "Keluar dengan kod status menunjukkan kegagalan.\n"
+#~ "\n"
+#~ "Nama opsyen ini tidak boleh menjadi satu singkatan.\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid "invalid width option: %s"
+#~ msgstr "opsyen lebar tidak sah: `%s'"
+
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "opsyen `%s' telah luput; guna `%s'"
+
+#, fuzzy
+#~ msgid "%s: number of bytes is large"
+#~ msgstr "bilangan byte"
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "opsyen tidak dikenali `%c'"
+
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "opsyen `-%s' sudah luput; guna `-%c %.*s%.*s%s'"
+
+#~ msgid "Arnold Robbins and David MacKenzie"
+#~ msgstr "Arnold Robbins dan David MacKenzie"
+
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr ""
+#~ "memasang pelbagai fail, tetapi hujah terakhir, %s adalah bukan direktori"
+
+#~ msgid "%s is a directory"
+#~ msgstr "%s adalah satu direktori"
+
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "tak memperolehi setem masa bagi %s"
+
+#, fuzzy
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "nombor tidak sah %s"
+
+#, fuzzy
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "nombor tidak sah %s"
+
+#~ msgid "too many non-option arguments"
+#~ msgstr "terlalu banyak hujah bukan-opsyen"
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "terlalu sedikit hujah bukan-opsyen"
+
+#~ msgid "Mike Parker and David MacKenzie"
+#~ msgstr "Mike Parker and David MacKenzie"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: Fail wujud"
+
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "cipta pautan simbolik %s ke %s"
+
+#~ msgid "create hard link %s to %s"
+#~ msgstr "cipta pautan keras %s ke %s"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "Penggunaan: %s [OPSYEN]... SASARAN [NAMA_PAUTAN]\n"
+#~ " atau: %s [OPSYEN]... SASARAN... DIREKTORI\n"
+#~ " atau: %s [OPSYEN]... --target-directory=DIREKTORI SASARAN...\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr "bila membuat banyak pautan, hujah terkahir mestilah direktori"
+
+#, fuzzy
+#~ msgid ""
+#~ " -g like -l, but do not list owner\n"
+#~ " -G, --no-group inhibit display of group information\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " --si likewise, but use powers of 1000 not 1024\n"
+#~ " -H, --dereference-command-line\n"
+#~ " follow symbolic links listed on the command "
+#~ "line\n"
+#~ " --dereference-command-line-symlink-to-dir\n"
+#~ " follow each command line symbolic link\n"
+#~ " that points to a directory\n"
+#~ msgstr ""
+#~ " -g seperti -l, tapi tak senaraikan pemilik\n"
+#~ " -G, --no-group tidak papar maklumat kumpulan\n"
+#~ " -h, --human-readable cetak saiz dlm format bolehdibaca manusia (e.g., "
+#~ "1K 234M 2G)\n"
+#~ " --si sebaliknya, guna kuasaf 1000 bukan 1024\n"
+#~ " -H, --dereference-command-line ikut pautan simbolik pada arahan baris\n"
+
+#~ msgid "Ulrich Drepper and Scott Miller"
+#~ msgstr "Ulrich Drepper dan Scott Miller"
+
+#~ msgid "file"
+#~ msgstr "fail"
+
+#~ msgid "files"
+#~ msgstr "fail"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "tiada fail boleh dinyatakan bila menggunakan --string"
+
+#~ msgid "only one argument may be specified when using --check"
+#~ msgstr "hanya satu hujah boleh dinyatakan bila menggunakan --check"
+
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "tak dapat menetapkan keizinan direktori %s"
+
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "tak dapat menetapkan keizinan bagi fifo %s"
+
+#~ msgid "wrong number of arguments"
+#~ msgstr "nombor hujah yang salah"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr "nombor peranti major dan minor tak boleh dinyatakan pada fail fifo"
+
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "tak dapat menetapkan keizinan bagi %s"
+
+#~ msgid "Mike Parker, David MacKenzie, and Jim Meyering"
+#~ msgstr "Mike Parker, David MacKenzie, dan Jim Meyering"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr "bila memindah banyak fail, hujah terakhir mestilah direktori"
+
+#~ msgid "invalid option `%s'"
+#~ msgstr "opsyen tidak sah `%s'"
+
+#~ msgid "invalid priority `%s'"
+#~ msgstr "prioriti tidak sah `%s'"
+
+#, fuzzy
+#~ msgid "cannot get priority"
+#~ msgstr "Gagal menukar direktori %s "
+
+#, fuzzy
+#~ msgid "cannot set priority"
+#~ msgstr "tak dapat menetapkan keizinan bagi %s"
+
+#, fuzzy
+#~ msgid "Scott Bartram and David MacKenzie"
+#~ msgstr "Mike Parker and David MacKenzie"
+
+#, fuzzy
+#~ msgid "failed to redirect standard output"
+#~ msgstr "menutup output piawai"
+
+#, fuzzy
+#~ msgid "David M. Ihnat and David MacKenzie"
+#~ msgstr "Mike Parker and David MacKenzie"
+
+#, fuzzy
+#~ msgid "`%s' is not a directory"
+#~ msgstr "%s adalah satu direktori"
+
+#, fuzzy
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "nombor kumpulan tak sah %s"
+
+#, fuzzy
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "nombor kumpulan tak sah %s"
+
+#, fuzzy
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%b %e %H:%M"
+
+#~ msgid "Page %d"
+#~ msgstr "Halaman %d"
+
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "tak dapat chdir daripada %s ke ..."
+
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "tak dapat lstat `.' pada %s"
+
+#~ msgid "cannot lstat %s"
+#~ msgstr "tak dapat lstat %s"
+
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "tak dapat chdir drpd. %s ke %s"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "tak dapat membuang `.' atau `..'"
+
+#, fuzzy
+#~ msgid "Paul Rubin, David MacKenzie, Richard Stallman, and Jim Meyering"
+#~ msgstr "Torbjorn Granlund, David MacKenzie, dan Jim Meyering"
+
+#, fuzzy
+#~ msgid "*** invalid date/time ***"
+#~ msgstr "mod tak sah %s"
+
+#, fuzzy
+#~ msgid "Kayvan Aghaiepour and David MacKenzie"
+#~ msgstr "Mike Parker and David MacKenzie"
+
+#, fuzzy
+#~ msgid "Jay Lepreau and David MacKenzie"
+#~ msgstr "Mike Parker and David MacKenzie"
+
+#~ msgid "stdin: read error"
+#~ msgstr "stdin: ralat bacaan"
+
+#, fuzzy
+#~ msgid "Paul Rubin, David MacKenzie, Ian Lance Taylor, and Jim Meyering"
+#~ msgstr "Torbjorn Granlund, David MacKenzie, dan Jim Meyering"
+
+#, fuzzy
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "aksara tidak sah pada %s pada rentetan mod %s"
+
+#, fuzzy
+#~ msgid "Mike Parker, Richard M. Stallman, and David MacKenzie"
+#~ msgstr "Mike Parker and David MacKenzie"
+
+#~ msgid "before -lt"
+#~ msgstr "sebelum -lt"
+
+#~ msgid "after -lt"
+#~ msgstr "selepas -lt"
+
+#~ msgid "before -le"
+#~ msgstr "sebelum -le"
+
+#~ msgid "after -le"
+#~ msgstr "selepas -le"
+
+#~ msgid "before -gt"
+#~ msgstr "sebelum -gt"
+
+#~ msgid "after -gt"
+#~ msgstr "selepas -gt"
+
+#~ msgid "before -ge"
+#~ msgstr "sebelum -ge"
+
+#~ msgid "after -ge"
+#~ msgstr "selepas -ge"
+
+#~ msgid "before -ne"
+#~ msgstr "sebelum -ne"
+
+#~ msgid "after -ne"
+#~ msgstr "selepas -ne"
+
+#~ msgid "before -eq"
+#~ msgstr "sebelum -eq"
+
+#~ msgid "after -eq"
+#~ msgstr "selepas -eq"
+
+#~ msgid "after -t"
+#~ msgstr "selepas -t"
+
+#, fuzzy
+#~ msgid "too many arguments\n"
+#~ msgstr "terlalu banyak hujah"
+
+#~ msgid "file arguments missing"
+#~ msgstr "kehilangan hujah fail"
+
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr "Opsyen `-LIST' sudah luput; guna `--first-only -t LIST'"
+
+#, fuzzy
+#~ msgid "Joseph Arceneaux and David MacKenzie"
+#~ msgstr "Mike Parker and David MacKenzie"
+
+#, fuzzy
+#~ msgid "Paul Rubin and David MacKenzie"
+#~ msgstr "Mike Parker and David MacKenzie"
+
+#~ msgid "%s: cannot find username for UID %u\n"
+#~ msgstr "%s: tak dapat menjumpai namapengguna bagi UID %u\n"
diff --git a/po/nb.gmo b/po/nb.gmo
new file mode 100644
index 0000000..16be2b3
--- /dev/null
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
new file mode 100644
index 0000000..d5ca5c3
--- /dev/null
+++ b/po/nb.po
@@ -0,0 +1,8844 @@
+# Norwegian messages for GNU textutils (bokmål dialect)
+# Copyright (C) 1996 Free Software Foundation, Inc.
+# Eivind Tagseth <eivindt@multinet.no>, 1996, 1997, 1999.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU textutils 2.0.20\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2002-01-27 21:35+0100\n"
+"Last-Translator: Eivind Tagseth <eivindt@multinet.no>\n"
+"Language-Team: Norwegian <i18n-nb@lister.ping.uio.no>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "kan ikke endre rettigheter til %s"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, fuzzy, c-format
+msgid "setting permissions for %s"
+msgstr "kan ikke endre rettigheter til %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "ugyldig argument %s for %s"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "flertydig argument %s for %s"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Gyldige argument er:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "feil ved skriving"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Ukjent systemfeil"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, fuzzy, c-format
+msgid "cannot stat %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr ""
+
+#: lib/file-type.c:39
+#, fuzzy
+msgid "regular file"
+msgstr "feil ved lesing"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr ""
+
+#: lib/file-type.c:45
+#, fuzzy
+msgid "block special file"
+msgstr "blokkstørrelse"
+
+#: lib/file-type.c:48
+#, fuzzy
+msgid "character special file"
+msgstr "tegn-posisjon er null"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr ""
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr ""
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr ""
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr ""
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr ""
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr ""
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr ""
+
+#: lib/file-type.c:71
+#, fuzzy
+msgid "weird file"
+msgstr "feil ved lesing"
+
+#: lib/gai_strerror.c:44
+msgid "Address family for hostname not supported"
+msgstr ""
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "blokkstørrelse"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr ""
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "blokkstørrelse"
+
+#: lib/gai_strerror.c:54
+#, fuzzy
+msgid "System error"
+msgstr "feil ved skriving"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+#, fuzzy
+msgid "Unknown error"
+msgstr "Ukjent systemfeil"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: flagget «%s» er flertydig\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: flagget «--%s» trenger et argument\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: flagget «%c%s» trenger et argument\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: flagget «%s» trenger et argument\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: ukjent flagg «--%s»\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: ukjent flagg «%c%s»\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: ukjent flagg -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ukjent flagg -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: flagget trenger et argument -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: flagget «-W %s» er flertydig\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: flagget «-W %s» tillater ikke et argument\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "blokkstørrelse"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "kan ikke endre rettigheter til %s"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "virtuelt minne oppbrukt"
+
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr "kan ikke opprette katalog %s"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "«"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "»"
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "%s: lesefeil"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: ugyldig regulært uttrykk: %s"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "ugyldig tegn-klasse «%s»"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "virtuelt minne oppbrukt"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: ugyldig regulært uttrykk: %s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "feil i søk med regulært uttrykk"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "%s: ugyldig regulært uttrykk: %s"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "feil i søk med regulært uttrykk"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr ""
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr ""
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+
+#: lib/rpmatch.c:70
+#, fuzzy
+msgid "^[yY]"
+msgstr "^[jJ]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+#, fuzzy
+msgid "iconv function not usable"
+msgstr "kan ikke skrive ut U+%04X: iconv-funksjonen er ikke brukbar"
+
+#: lib/unicodeio.c:153
+#, fuzzy
+msgid "iconv function not available"
+msgstr "kan ikke skrive ut U+%04X: iconv-funksjon er ikke tilgjengelig"
+
+#: lib/unicodeio.c:160
+#, fuzzy
+msgid "character out of range"
+msgstr "U+%04X: tegn utenfor tillatte verdier"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "kan ikke konvertere U+%04X til lokalt tegnsett"
+
+#: lib/unicodeio.c:226
+#, fuzzy, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "kan ikke konvertere U+%04X til lokalt tegnsett"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "ugyldig bruker"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "ugyldig gruppe"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "ugyldig bruker"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+#, fuzzy
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"Dette programmet er fri programvare. Du kan redistribueret det og/eller\n"
+"modifisere det under betingelsene gitt av GNU General Public License som\n"
+"distribuert av Free Software Foundation; enten versjon 2, eller (om du vil)\n"
+"en hvilken som helst senere versjon.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Skrevet av %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Skrevet av %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, fuzzy, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Skrevet av %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr "Skrevet av %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr "Skrevet av %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xfts.c:58
+#, fuzzy, c-format
+msgid "invalid argument: %s"
+msgstr "ugyldig argument %s for %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "strengsammenligning feilet"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Sett LC_ALL='C' for å omgå problemet."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "Strengene som ble sammenlignet var «%s» og «%s»."
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "strengsammenligning feilet"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "ugyldig bredde: «%s»"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "ugyldig tegn-klasse «%s»"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s er for stor"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Prøv med «%s --help» for mer informasjon.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr " --version vis programversjon og avslutt\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Når ingen FIL eller når FIL er -, les fra standard inn.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Rapportér feil til <bug-textutils@gnu.org>."
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "lesefeil"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "ugyldig antall"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, fuzzy, c-format
+msgid "extra operand %s"
+msgstr "ekstra operator «%s»"
+
+#: src/base64.c:316 src/cat.c:785
+#, fuzzy, c-format
+msgid "closing standard input"
+msgstr "standard inn"
+
+#: src/basename.c:54
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Bruk: %s [FIL]...\n"
+"eller: %s [FLAGG]\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, fuzzy, c-format
+msgid "missing operand"
+msgstr "%s: heltall forventet etter «%c»"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Bruk: %s [FLAGG] [FIL]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"Føy sammen FIL(er) eller standard inn til standard ut.\n"
+"\n"
+" -A, --show-all samme som -vET\n"
+" -b, --number-nonblank nummerer ikke-blanke ut-linjer\n"
+" -e samme som -vE\n"
+" -E, --show-ends skriv $ på slutten av hver linje\n"
+" -n, --number nummerer alle ut-linjer\n"
+" -s, --squeeze-blank aldri mer enn én blank linje\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t samme som -vT\n"
+" -T, --show-tabs vis tabulatortegn som ^I\n"
+" -u (ignorert)\n"
+" -v, --show-nonprinting bruk ^ og M-notasjon, unntatt for LFD og TAB\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+#: src/cat.c:333
+#, fuzzy, c-format
+msgid "cannot do ioctl on %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "standard ut"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: innfil er utfil"
+
+#: src/chgrp.c:95 src/install.c:611
+#, fuzzy, c-format
+msgid "invalid group %s"
+msgstr "ugyldig gruppe"
+
+#: src/chgrp.c:112
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Bruk: %s [FLAGG]... [FIL]...\n"
+" eller: %s --traditional [FIL] [[+]POSISJON [[+]MERKE]]\n"
+
+#: src/chgrp.c:117
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr ""
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, fuzzy, c-format
+msgid "missing operand after %s"
+msgstr "%s: heltall forventet etter «%c»"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr ""
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr ""
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr ""
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr ""
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr ""
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr ""
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr ""
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, fuzzy, c-format
+msgid "cannot read directory %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/chmod.c:251
+#, fuzzy, c-format
+msgid "changing permissions of %s"
+msgstr "kan ikke endre rettigheter til %s"
+
+#: src/chmod.c:286
+#, fuzzy, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "kan ikke endre rettigheter til %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, fuzzy, c-format
+msgid "fts_read failed"
+msgstr "feil ved lesing"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr ""
+
+#: src/chmod.c:510
+#, fuzzy, c-format
+msgid "invalid mode: %s"
+msgstr "ugyldig bredde: «%s»"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr ""
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr ""
+
+#: src/chown-core.c:149
+#, fuzzy, c-format
+msgid "no change to ownership of %s\n"
+msgstr "kan ikke endre rettigheter til %s"
+
+#: src/chown-core.c:152
+#, fuzzy, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "kan ikke endre rettigheter til %s"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr ""
+
+#: src/chown-core.c:154
+#, fuzzy, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "kan ikke endre rettigheter til %s"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr ""
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr ""
+
+#: src/chown-core.c:159
+#, c-format
+msgid "ownership of %s retained\n"
+msgstr ""
+
+#: src/chown-core.c:344
+#, fuzzy, c-format
+msgid "cannot dereference %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr ""
+
+#: src/chown-core.c:433
+#, fuzzy, c-format
+msgid "changing group of %s"
+msgstr "kan ikke endre eier og/eller gruppe for %s"
+
+#: src/chown.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Bruk: %s [FLAGG]... [FIL]...\n"
+" eller: %s --traditional [FIL] [[+]POSISJON [[+]MERKE]]\n"
+
+#: src/chown.c:98
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Bruk: %s [FIL]...\n"
+"eller: %s [FLAGG]\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+
+#: src/chroot.c:89
+#, fuzzy, c-format
+msgid "cannot change root directory to %s"
+msgstr "kan ikke skifte til katalog, %s"
+
+#: src/chroot.c:92
+#, fuzzy, c-format
+msgid "cannot chdir to root directory"
+msgstr "kan ikke skifte til katalog, %s"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, fuzzy, c-format
+msgid "cannot run command %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: fil for lang"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Bruk: %s [FIL]...\n"
+"eller: %s [FLAGG]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"Skriv CRC-sjekksum og oktett-antall for hver FIL.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Bruk: %s [FLAGG]... FIL1 FIL2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr ""
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+
+#: src/comm.c:86
+#, fuzzy
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"Sammenlign de sorterte filene VENSTREFIL og HØYREFIL linje for linje.\n"
+"\n"
+" -1 se bort fra linjer som bare finnes i den venstre filen\n"
+" -2 se bort fra linjer som bare finnes i den høyre filen\n"
+" -3 se bort fra linjer som finnes i begge filer\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr ""
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr ""
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr ""
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr ""
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr ""
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr ""
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, fuzzy, c-format
+msgid "cannot remove %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr ""
+
+#: src/copy.c:329
+#, fuzzy, c-format
+msgid "cannot create regular file %s"
+msgstr "kan ikke opprette midlertidig fil"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, fuzzy, c-format
+msgid "reading %s"
+msgstr "feil ved lesing av %s"
+
+#: src/copy.c:467 src/head.c:428
+#, fuzzy, c-format
+msgid "cannot lseek %s"
+msgstr "%s: kan ikke søke til posisjon %s%s"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, fuzzy, c-format
+msgid "writing %s"
+msgstr "feil ved skriving til %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr ""
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, fuzzy, c-format
+msgid "closing %s"
+msgstr "lukker %s (fd=%d)"
+
+#: src/copy.c:805
+#, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr ""
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr ""
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr ""
+
+#: src/copy.c:1048
+#, fuzzy, c-format
+msgid "omitting directory %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr ""
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr ""
+
+#: src/copy.c:1149
+#, fuzzy, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "kan ikke skifte til katalog, %s"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr ""
+
+#: src/copy.c:1185
+#, fuzzy, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/copy.c:1223
+#, fuzzy, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "kan ikke skifte til katalog, %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr ""
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr ""
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr ""
+
+#: src/copy.c:1372
+#, fuzzy, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/copy.c:1389
+#, fuzzy, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "kan ikke skifte til katalog, %s"
+
+#: src/copy.c:1414
+#, fuzzy, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/copy.c:1459
+#, fuzzy, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "kan ikke skifte til katalog, %s"
+
+#: src/copy.c:1502
+#, fuzzy, c-format
+msgid "cannot move %s to %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr ""
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr ""
+
+#: src/copy.c:1661
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/copy.c:1686
+#, fuzzy, c-format
+msgid "cannot create link %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, fuzzy, c-format
+msgid "cannot create fifo %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/copy.c:1722
+#, fuzzy, c-format
+msgid "cannot create special file %s"
+msgstr "tegn-posisjon er null"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, fuzzy, c-format
+msgid "cannot read symbolic link %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:1759
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr ""
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr ""
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr ""
+
+#: src/cp.c:157 src/mv.c:284
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Bruk : %s [FLAGG]... [INN]... (uten -G)\n"
+"eller: %s -G [FLAGG]... [INN [UT]]\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Obligatoriske argmenter til lange flagg er obligatoriske også for korte.\n"
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+
+#: src/cp.c:205
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr ""
+
+#: src/cp.c:340
+#, fuzzy, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "kan ikke endre rettigheter til %s"
+
+#: src/cp.c:456
+#, fuzzy, c-format
+msgid "cannot make directory %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s eksisterer men er ikke en katalog"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr ""
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, fuzzy, c-format
+msgid "missing file operand"
+msgstr "hopp over argument"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, fuzzy, c-format
+msgid "missing destination file operand after %s"
+msgstr "feltliste mangler"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, fuzzy, c-format
+msgid "target %s is not a directory"
+msgstr "%s eksisterer men er ikke en katalog"
+
+#: src/cp.c:697
+#, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr ""
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr ""
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, c-format
+msgid "multiple target directories specified"
+msgstr ""
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr ""
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr ""
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "input forsvant"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: linjenummer utenfor tillatte verdier"
+
+#: src/csplit.c:709
+#, fuzzy, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: «%s»: linjenummer utenfor tillatte verdier"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, fuzzy, c-format
+msgid " on repetition %s\n"
+msgstr " ved %d. repetisjon\n"
+
+#: src/csplit.c:755
+#, fuzzy, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: «%s»: ingen treff funnet"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "feil i søk med regulært uttrykk"
+
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "skrivefeil for «%s»"
+
+#: src/csplit.c:1060
+#, fuzzy, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: heltall forventet etter «%c»"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: «}» er nødvendig i gjentagelsesantall"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: heltall kreves mellom «{» og «}»"
+
+#: src/csplit.c:1113
+#, fuzzy, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: avsluttende skilletegn «%c» mangler"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: ugyldig regulært uttrykk: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: ugyldig mønster"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: linjenummeret må være større enn null"
+
+#: src/csplit.c:1172
+#, fuzzy, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "linjenummer «%s» er mindre enn foregående linjenummer, %s"
+
+#: src/csplit.c:1178
+#, fuzzy, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "advarsel: linjenummer «%s» er det samme som foregående"
+
+#: src/csplit.c:1231
+#, fuzzy, c-format
+msgid "invalid format width"
+msgstr "ugyldig argument %s for %s"
+
+#: src/csplit.c:1252
+#, fuzzy, c-format
+msgid "invalid format precision"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "manglende konverteringsspesifikator i suffiks"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "ugyldig konvertingsspesifikator i suffiks: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "ugyldig konverteringsspesifikator i suffiks: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "for mange %%-konverteringsspesifikasjoner i suffiks"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "manglende %%-konverteringsspesifikasjon i suffiks"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: ugyldig nummer"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Bruk: %s [FLAGG]... FIL MØNSTER...\n"
+
+#: src/csplit.c:1478
+#, fuzzy
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"Skriv ut deler av FIL skilt av MØNSTER til filene «xx01», «xx02», ...\n"
+"og skriv ut antall oktetter for hver del til standard ut.\n"
+
+#: src/csplit.c:1486
+#, fuzzy, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=FORMAT bruk sprintf-FORMAT isteden for %d\n"
+" -f, --prefix=PREFIX bruk PREFIX isteden for «xx»\n"
+" -k, --keep-files ikke fjern utfiler ved feil\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=SIFFER bruk spesifisert antall siffer isteden for 2\n"
+" -s, --quiet, --silent ikke skriv ut utfil-størrelser\n"
+" -z, --elide-empty-files fjern tomme ut-filer\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"Les standard inn hvis FIL er -. Hvert MØNSTER må være:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" HELTALL kopiér opp til, men ikke inkludert spesifisert "
+"linjenummer\n"
+" /REGEXP/[POSISJON] kopiér opp til, men ikke inkludert passende linje\n"
+" %REGEXP%[POSISJON] hopp over fram til, men ikke inkludert passende linje\n"
+" {HELTALL} gjenta forrige mønster spesifisert antall ganger\n"
+" {*} gjenta forrige mønster så mange ganger som mulig\n"
+"\n"
+"En linje-POSISJON er en «+» eller «-» fulgt av et positivt heltall.\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"Skriv ut valgte deler av linjer fra hver FIL til standard ut.\n"
+"\n"
+
+#: src/cut.c:199
+#, fuzzy
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=LISTE skriv bare ut disse oktettene\n"
+" -c, --characters=LISTE skriv bare ut disse tegnene\n"
+" -d, --delimiter=SKILLE bruk SKILLE isteden for TAB som skilletegn\n"
+
+#: src/cut.c:204
+#, fuzzy
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=LISTE skriv bare ut disse feltene. Skriv også ut\n"
+" linjer som ikke inneholder noen skilletegn,\n"
+" med mindre flagget -s er spesifisert\n"
+" -n (ignorert)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited skriv ikke ut linjer som ikke inneholder "
+"skilletegn\n"
+" --output-delimiter=STRENG bruk STRENG som ut-skilletegn\n"
+" forvalgt er å bruke inn-skilletegnet\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+#, fuzzy
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Bruk en og bare en av -b, -c eller -f. Hver LISTE er bygd opp av\n"
+"et område, eller flere områder skilt av komma. Hver område er en av:\n"
+"\n"
+" N N'te oktett, tegn eller felt, telt fra 1\n"
+" N- fra N'te oktett, tegn eller felt, til slutten av linjen\n"
+" N-M fra N'te til M'te (inklusive) oktett, tegn eller felt\n"
+" -M fra første til M'te (inklusive) oktett, tegn eller felt\n"
+"\n"
+"Uten FIL, eller når FIL er -, leses fra standard inn.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "ugyldig byte- eller felt-liste"
+
+#: src/cut.c:469
+#, fuzzy, c-format
+msgid "byte offset %s is too large"
+msgstr "%s er for stor"
+
+#: src/cut.c:472
+#, fuzzy, c-format
+msgid "field number %s is too large"
+msgstr "felt-nummer er null"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "bare en liste-type kan spesifiseres"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "skilletegnet må være ett enkelt tegn"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "du må spesifisere en liste av bytes, tegn eller felt"
+
+#: src/cut.c:831
+#, fuzzy
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "et skilletegn kan bare spesifiseres når en opererer med felt"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"fjerning av linjer uten skilletegn er meningsløst dersom en ikke opererer\n"
+"\tmed felt"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "feltliste mangler"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "posisjonsliste mangler"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "standard inn"
+
+#: src/date.c:297 src/date.c:517
+#, fuzzy, c-format
+msgid "invalid date %s"
+msgstr "ugyldig bredde: «%s»"
+
+#: src/date.c:408 src/date.c:442
+#, c-format
+msgid "multiple output formats specified"
+msgstr ""
+
+#: src/date.c:420
+#, fuzzy, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "flaggene --string og --check kan ikke brukes samtidig"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr ""
+
+#: src/date.c:448
+#, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr ""
+
+#: src/date.c:548 src/du.c:425
+#, fuzzy, c-format
+msgid "time %s is out of range"
+msgstr "%s: linjenummer utenfor tillatte verdier"
+
+#: src/dd.c:404
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Bruk: %s [FIL]...\n"
+"eller: %s [FLAGG]\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "%s eksisterer men er ikke en katalog"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr ""
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ""
+
+#: src/dd.c:604
+#, fuzzy, c-format
+msgid "closing input file %s"
+msgstr "lager filen «%s»\n"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr ""
+
+#: src/dd.c:791 src/dd.c:1455
+#, fuzzy, c-format
+msgid "writing to %s"
+msgstr "feil ved skriving til %s"
+
+#: src/dd.c:886
+#, fuzzy, c-format
+msgid "unrecognized operand %s"
+msgstr "ukjent flagg «-%c»"
+
+#: src/dd.c:897
+#, fuzzy, c-format
+msgid "invalid conversion: %s"
+msgstr "ugyldig breddespesifikasjon «%s»"
+
+#: src/dd.c:900
+#, fuzzy, c-format
+msgid "invalid input flag: %s"
+msgstr "ugyldig bredde: «%s»"
+
+#: src/dd.c:903
+#, fuzzy, c-format
+msgid "invalid output flag: %s"
+msgstr "ugyldig gruppe"
+
+#: src/dd.c:906
+#, fuzzy, c-format
+msgid "invalid status flag: %s"
+msgstr "ugyldig argument %s for %s"
+
+#: src/dd.c:942
+#, fuzzy, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "ukjent flagg «-%c»"
+
+#: src/dd.c:948
+#, fuzzy, c-format
+msgid "invalid number %s"
+msgstr "ugyldig antall"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#: src/dd.c:973
+#, fuzzy, c-format
+msgid "cannot combine block and unblock"
+msgstr "kan ikke utelate både bruker og gruppe"
+
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "Strengene som ble sammenlignet var «%s» og «%s»."
+
+#: src/dd.c:977
+#, fuzzy, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+
+#: src/dd.c:1180 src/dd.c:1237
+#, fuzzy, c-format
+msgid "%s: cannot seek"
+msgstr "%s: kan ikke søke til posisjon %s%s"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "advarsel: ugyldig bredde %lu; bruker %d istedet"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr ""
+
+#: src/dd.c:1376
+#, fuzzy, c-format
+msgid "setting flags for %s"
+msgstr "kan ikke endre rettigheter til %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr ""
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr ""
+
+#: src/dd.c:1670 src/dd.c:1699
+#, fuzzy, c-format
+msgid "opening %s"
+msgstr "feil ved lesing av %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr ""
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr ""
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr ""
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr ""
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr ""
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr ""
+
+#: src/df.c:165
+#, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr ""
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr ""
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr ""
+
+#: src/df.c:468
+#, fuzzy, c-format
+msgid "cannot get current directory"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, fuzzy, c-format
+msgid "cannot change to directory %s"
+msgstr "kan ikke skifte til katalog, %s"
+
+#: src/df.c:498
+#, fuzzy, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+
+#: src/df.c:749
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr ""
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr ""
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr ""
+
+#: src/df.c:943
+#, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr ""
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+
+#: src/dircolors.c:291
+#, fuzzy, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s: ugyldig antall sekunder"
+
+#: src/dircolors.c:363
+#, fuzzy, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s: ukjent flagg «%c%s»\n"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr ""
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr ""
+
+#: src/dirname.c:48
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Bruk: %s [FIL]...\n"
+"eller: %s [FLAGG]\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#: src/du.c:279 src/wc.c:108
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Bruk: %s [FLAGG]... [FIL]...\n"
+" eller: %s --traditional [FIL] [[+]POSISJON [[+]MERKE]]\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "totalt"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+
+#: src/du.c:780
+#, fuzzy, c-format
+msgid "invalid maximum depth %s"
+msgstr "ugyldig bredde: «%s»"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr ""
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr ""
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr ""
+
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr ""
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+#: src/du.c:960 src/wc.c:662
+#, fuzzy, c-format
+msgid "cannot read file names from %s"
+msgstr "Strengene som ble sammenlignet var «%s» og «%s»."
+
+#: src/du.c:1000 src/du.c:1003
+#, fuzzy
+msgid "invalid zero-length file name"
+msgstr "ugyldig gruppe"
+
+#: src/echo.c:64
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/env.c:118
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Konverter tabulatorer i hver FIL til mellomrom, skriv til standard ut.\n"
+"Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+"inn.\n"
+"\n"
+
+#: src/expand.c:123
+#, fuzzy
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial ikke konverter tabulatorer etter ikke-blanke tegn\n"
+" -t, --tabs=TALL ha tabulatorer TALL tegn fra hverandre, ikke 8\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr " -t, --tabs=LISTE bruk komma-separert LISTE med tab-posisjoner\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, fuzzy, c-format
+msgid "tab stop is too large %s"
+msgstr "%s er for stor"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, fuzzy, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "tabulatorstørrelse inneholder et ugyldig tegn"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "tabulatorstørrelse kan ikke være 0"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "tabulatorstørrelser må være stigende"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, fuzzy, c-format
+msgid "input line is too long"
+msgstr "%s: fil for lang"
+
+#: src/expr.c:102
+#, fuzzy, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Bruk: %s [FIL]...\n"
+"eller: %s [FLAGG]\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#: src/expr.c:175
+#, fuzzy, c-format
+msgid "syntax error"
+msgstr "standard feilkanal"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "feil i søk med regulært uttrykk"
+
+#: src/expr.c:653 src/expr.c:711
+#, fuzzy, c-format
+msgid "non-numeric argument"
+msgstr "begrens argument"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr ""
+
+#: src/factor.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Bruk: %s [FIL]...\n"
+"eller: %s [FLAGG]\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+
+#: src/factor.c:85
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s er for stor"
+
+#: src/factor.c:158
+#, fuzzy, c-format
+msgid "%s is not a valid positive integer"
+msgstr "%s: ugyldig mønster"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Bruk: %s [-SIFFER] [FLAGG]... [FIL]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"Omformattér hvert avsnitt i FILEN(e), skriv til standard ut.\n"
+"Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+"inn.\n"
+
+#: src/fmt.c:282
+#, fuzzy
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin behold innrykket til de første to linjene\n"
+" -p, --prefix=STRENG sett kun sammen linjer som har STRENG som\n"
+" forstavelse\n"
+" -s, --split-only del opp lange linjer, men ikke fyll opp\n"
+
+#: src/fmt.c:289
+#, fuzzy
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph innrykket til første linje er forskjellig fra "
+"neste\n"
+" -u, --uniform-spacing ett mellomrom mellom ord, to etter setninger\n"
+" -w, --width=TALL maksimal linjelengde (ellers 75 kolonner)\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+
+#: src/fmt.c:400
+#, fuzzy, c-format
+msgid "invalid width: %s"
+msgstr "ugyldig bredde: «%s»"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"Brekk om linjene i hver FIL (standard inn), skriv til standard ut\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes tell bytes istedet for kolonner\n"
+" -s, --spaces brekk om ved mellomrom\n"
+" -w, --width=BREDDE bruk BREDDE kolonner istedet for 80\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "ugyldig antall kolonner: «%s»"
+
+#: src/head.c:113
+#, fuzzy
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv de første 10 linjene av hver FIL til standard ut.\n"
+"Med mer enn en FIL er angitt, skriv ut filnavnet før hver FIL.\n"
+"Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+"inn.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent ikke skriv ut filnavnene først\n"
+" -v, --verbose skriv alltid filnavnene først\n"
+
+#: src/head.c:136
+#, fuzzy
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"STØRRELSE kan ha en multiplikatorendelse: b for 512, k for 1K eller\n"
+" m for 1 Meg.\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "feil ved lesing av %s"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "feil ved skriving til %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr ""
+
+#: src/head.c:230 src/head.c:1046
+#, fuzzy, c-format
+msgid "%s: number of bytes is too large"
+msgstr "ugyldig antall oktetter å sammenligne"
+
+#: src/head.c:443
+#, fuzzy, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: kan ikke søke til relativ posisjon %s%s"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, fuzzy, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: kan ikke søke til posisjon %s%s"
+
+#: src/head.c:793
+#, fuzzy, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s er så stor at den ikke kan representeres"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "antall linjer"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "antall bytes"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "ugyldig antall linjer"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "ugyldig antall bytes"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "%s: ukjent flagg -- %c\n"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr ""
+
+#: src/id.c:78
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Bruk: %s [FLAGG]... SETT1 [SETT2]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+
+#: src/id.c:152
+#, fuzzy, c-format
+msgid "cannot print only user and only group"
+msgstr "kan ikke utelate både bruker og gruppe"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr ""
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr ""
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "kan ikke endre eier og/eller gruppe for %s"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "kan ikke endre eier og/eller gruppe for %s"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr ""
+
+#: src/id.c:375
+msgid " groups="
+msgstr ""
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr ""
+
+#: src/install.c:321
+#, fuzzy, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "%s eksisterer men er ikke en katalog"
+
+#: src/install.c:369 src/mkdir.c:193
+#, fuzzy, c-format
+msgid "invalid mode %s"
+msgstr "ugyldig bredde: «%s»"
+
+#: src/install.c:520
+#, fuzzy, c-format
+msgid "cannot change ownership of %s"
+msgstr "kan ikke endre rettigheter til %s"
+
+#: src/install.c:541
+#, fuzzy, c-format
+msgid "cannot set time stamps for %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/install.c:562
+#, fuzzy, c-format
+msgid "fork system call failed"
+msgstr "blokkstørrelse"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr ""
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "feil ved skriving til %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, fuzzy, c-format
+msgid "invalid user %s"
+msgstr "ugyldig bruker"
+
+#: src/install.c:628
+#, fuzzy, c-format
+msgid "creating directory %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/install.c:651
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Bruk : %s [FLAGG]... [INN]... (uten -G)\n"
+"eller: %s -G [FLAGG]... [INN [UT]]\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+
+#: src/install.c:681
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+
+#: src/join.c:138
+#, fuzzy
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"For hvert par av inn-linjer med like sammenføyningsfelt, skriv en linje til\n"
+"standard ut. Det forvalgte sammenføyningsfeltet er det første\n"
+"feltet, avgrenset av «blanke» tegn. Dersom FIL1 eller FIL2 (ikke begge)\n"
+"er -, leses det fra standard inn.\n"
+"\n"
+" -a SIDE skriv ut linjer som ikke kan parres som fra fil SIDE\n"
+" -e TOM erstatt manglende inn-felt med TOM\n"
+
+#: src/join.c:147
+#, fuzzy
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case ignorer forskjeller i store/små bokstaver ved\n"
+" sammenligning av felt\n"
+" -j FELT (avleggs) samme som «-1 FELT -2 FELT»\n"
+" -j1 FELT (avleggs) samme som «-1 FELT»\n"
+" -j2 FELT (avleggs) samme som «-2 FELT»\n"
+" -o FORMAT følg FORMAT når utlinjen lages\n"
+" -t TEGN bruk TEGN som feltseparator for inn og ut\n"
+
+#: src/join.c:153
+#, fuzzy
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v SIDE som -a SIDE, men dropp sammenføyde ut-linjer\n"
+" -1 FELT sammenføy ved dette FELTet fra fil 1\n"
+" -2 FELT sammenføy ved dette FELTet fra fil 2\n"
+
+#: src/join.c:160
+#, fuzzy
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"Dersom -t TEGN ikke er angitt, er «ledende blanke» feltseparator, og "
+"ignoreres,\n"
+"ellers er felt skilt av TEGN. Hvert FELT er et feltnummer telt fra 1.\n"
+"FORMAT er en eller flere komma- eller blank-separerte spesifikasjoner, der\n"
+"hver er «SIDE.FELT» eller «0». Det forvalgte FORMATet skriver ut\n"
+"sammenføyningsfeltet, resten av feltene fra FIL1 og resten av feltene fra\n"
+"FIL2, alle skilt med TEGN.\n"
+
+#: src/join.c:617 src/join.c:812
+#, fuzzy, c-format
+msgid "invalid field number: %s"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "ugyldig felt-spesifikator: «%s»"
+
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "ugyldig filnummer i felt-spesifikator: «%s»"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr ""
+
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "flertegnstabulator «%s»"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr ""
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "begge filene kan ikke være standard inn"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+
+#: src/kill.c:161
+#, fuzzy, c-format
+msgid "%s: invalid signal"
+msgstr "%s: ugyldig prosess-id"
+
+#: src/kill.c:266
+#, fuzzy, c-format
+msgid "%s: invalid process id"
+msgstr "%s: ugyldig mønster"
+
+#: src/kill.c:320
+#, fuzzy, c-format
+msgid "invalid option -- %c"
+msgstr "%s: ukjent flagg -- %c\n"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr ""
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr ""
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr ""
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr ""
+
+#: src/link.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Bruk: %s [FIL]...\n"
+"eller: %s [FLAGG]\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+
+#: src/link.c:95
+#, fuzzy, c-format
+msgid "cannot create link %s to %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr ""
+
+#: src/ln.c:218
+#, fuzzy, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr ""
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "lager filen «%s»\n"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/ln.c:324
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+
+#: src/ln.c:484
+#, fuzzy, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "%s eksisterer men er ikke en katalog"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Bruk: %s [FLAGG] [FIL]...\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+
+#: src/logname.c:89
+#, fuzzy, c-format
+msgid "no login name"
+msgstr "%s: ugyldig nummer"
+
+#: src/ls.c:684
+#, fuzzy
+msgid "%b %e %Y"
+msgstr "%b %e %H:%M %Y"
+
+#: src/ls.c:692
+#, fuzzy
+msgid "%b %e %H:%M"
+msgstr "%b %e %H:%M %Y"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr ""
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr ""
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr ""
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, fuzzy, c-format
+msgid "invalid line width: %s"
+msgstr "ugyldig bredde: «%s»"
+
+#: src/ls.c:1704
+#, fuzzy, c-format
+msgid "invalid tab size: %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/ls.c:1885
+#, fuzzy, c-format
+msgid "invalid time style format %s"
+msgstr "ugyldig argument %s for %s"
+
+#: src/ls.c:2229
+#, fuzzy, c-format
+msgid "unrecognized prefix: %s"
+msgstr "ukjent flagg «-%c»"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr ""
+
+#: src/ls.c:2329 src/pwd.c:155
+#, fuzzy, c-format
+msgid "cannot open directory %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/ls.c:2344
+#, fuzzy, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, fuzzy, c-format
+msgid "reading directory %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/ls.c:2410
+#, fuzzy, c-format
+msgid "closing directory %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/ls.c:2918
+#, fuzzy, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "Strengene som ble sammenlignet var «%s» og «%s»."
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+
+#: src/ls.c:4402
+#, fuzzy
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -f, --fields=LISTE skriv bare ut disse feltene. Skriv også ut\n"
+" linjer som ikke inneholder noen skilletegn,\n"
+" med mindre flagget -s er spesifisert\n"
+" -n (ignorert)\n"
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#: src/md5sum.c:150
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Bruk: %s [FLAGG] [FIL]...\n"
+"eller: %s [FLAGG] --check [FIL]\n"
+"Skriv eller sjekk %s-sjekksummer (%d-bit).\n"
+"Dersom ingen FIL er spesifisert eller FIL er -, leses det fra standard inn.\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+"\n"
+" -B, --binary skriv binært til konsollenheten.\n"
+"\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+#, fuzzy
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"De følgende to flaggene brukes kun ved sjekking av sjekksummer:\n"
+" --status ikke skriv ut noe, statuskode angir resultat\n"
+" -w, --warn advar mot feilformatterte MD5-sjekksum-linjer\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"Summene blir beregnet som beskrevet i %s. Ved sjekking skal\n"
+"inndata være tidligere utdata fra dette programmet. Forvalgt \n"
+"modus er å skrive ut en linje med sjekksum, et tegn som indikerer\n"
+"type («*» for binær, « » for tekst), og navnet til hver FIL\n"
+
+#: src/md5sum.c:459
+#, fuzzy, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: ingen riktig formatterte %s-sjekksumlinjer funnet"
+
+#: src/md5sum.c:481
+#, fuzzy, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %lu: ukorrekt formattert %s-sjekksumlinje"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: FEIL ved åpning eller lesing\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "FEIL"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "OK"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: lesefeil"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: ingen riktig formatterte %s-sjekksumlinjer funnet"
+
+#: src/md5sum.c:562
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "ADVARSEL: %d av %d oppførte %s kunne ikke leses"
+msgstr[1] "ADVARSEL: %d av %d oppførte %s kunne ikke leses"
+
+#: src/md5sum.c:574
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "ADVARSEL: %d av %d beregnede %s stemte IKKE overens"
+msgstr[1] "ADVARSEL: %d av %d beregnede %s stemte IKKE overens"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"flaggene --binary og --text er meningsløse ved verifisering av sjekksummer"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "flagget --status har bare betydning ved sjekking av sjekksummer"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "flagget --warn har bare betydning ved sjekking av sjekksummer"
+
+#: src/mkdir.c:59
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Bruk: %s [FLAGG] [FIL]...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+
+#: src/mkdir.c:67
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+
+#: src/mkdir.c:168
+#, fuzzy, c-format
+msgid "created directory %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/mkfifo.c:54
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Bruk: %s [FLAGG] [FIL]...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+
+#: src/mkfifo.c:62 src/mknod.c:64
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, fuzzy, c-format
+msgid "invalid mode"
+msgstr "ugyldig antall"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Bruk: %s [FLAGG]... SETT1 [SETT2]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr "ugyldig startlinjenummer: «%s»"
+
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "ugyldig startlinjenummer: «%s»"
+
+#: src/mknod.c:167
+#, fuzzy, c-format
+msgid "block special files not supported"
+msgstr "blokkstørrelse"
+
+#: src/mknod.c:176
+#, fuzzy, c-format
+msgid "character special files not supported"
+msgstr "tegn-posisjon er null"
+
+#: src/mknod.c:192
+#, fuzzy, c-format
+msgid "invalid major device number %s"
+msgstr "ugyldig startlinjenummer: «%s»"
+
+#: src/mknod.c:197
+#, fuzzy, c-format
+msgid "invalid minor device number %s"
+msgstr "ugyldig startlinjenummer: «%s»"
+
+#: src/mknod.c:202
+#, fuzzy, c-format
+msgid "invalid device %s %s"
+msgstr "ugyldig argument %s for %s"
+
+#: src/mknod.c:216
+#, fuzzy, c-format
+msgid "invalid device type %s"
+msgstr "ugyldig argument %s for %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+
+#: src/mv.c:308
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/nice.c:76
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Bruk: %s [FLAGG] [FIL]...\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "ugyldig argument %s for %s"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr ""
+
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "kan ikke opprette midlertidig fil"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "kan ikke utelate både bruker og gruppe"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv hver fil til standard ut, med linjenummer lagt til.\n"
+"Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+"inn.\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=STIL bruk STIL for nummerering\n"
+" -d, --section-delimiter=CC bruk CC for å skille logiske sider\n"
+" -f, --footer-numbering=STIL bruk STIL for å nummerere bunntekst\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=STIL bruk STIL for å nummerere topptekst\n"
+" -i, --page-increment=ANTALL linjenummerøkning for hver linje\n"
+" -l, --join-blank-lines=ANTALL ANTALL tomme linjer som teller som en\n"
+" -n, --number-format=FORMAT sett inn linjenummer etter FORMAT\n"
+" -p, --no-renumber ikke begynn linjenumre på nytt ved "
+"logiske\n"
+" sider\n"
+" -s, --number-separator=STRENG legg til STRENG etter (mulig) linjenummer\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=ANTALL første linjenummer på hver logiske side\n"
+" -w, --number-width=ANTALL bruk ANTALL kolonner for linjenummerering\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"Forvalgt er -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC er\n"
+"to skilletegn for å skille logiske sider, et manglende andretegn\n"
+"impliserer «:». Bruk \\\\ for \\. STIL er en av:\n"
+
+#: src/nl.c:214
+#, fuzzy
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a nummerer alle linjer\n"
+" t nummerer bare ikke-tomme linjer\n"
+" n nummerer ingen linjer\n"
+" pREGEXP nummerer bare linjer som passer REGEXP\n"
+"\n"
+"FORMAT er et av følgende:\n"
+"\n"
+" ln venstrejustert, ingen ledende nuller\n"
+" rn høyrejustert, ingen ledende nuller\n"
+" rz høyrejustert, ledende nuller\n"
+"\n"
+
+#: src/nl.c:281
+#, fuzzy, c-format
+msgid "line number overflow"
+msgstr "felt-nummer er null"
+
+#: src/nl.c:479
+#, fuzzy, c-format
+msgid "invalid header numbering style: %s"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/nl.c:487
+#, fuzzy, c-format
+msgid "invalid body numbering style: %s"
+msgstr "ugyldig antall"
+
+#: src/nl.c:495
+#, fuzzy, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "ugyldig filnummer i felt-spesifikator: «%s»"
+
+#: src/nl.c:504
+#, fuzzy, c-format
+msgid "invalid starting line number: %s"
+msgstr "ugyldig startlinjenummer: «%s»"
+
+#: src/nl.c:513
+#, fuzzy, c-format
+msgid "invalid line number increment: %s"
+msgstr "ugyldig linjenummer-økning: «%s»"
+
+#: src/nl.c:525
+#, fuzzy, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "ugyldig antall blanke linjer: «%s»"
+
+#: src/nl.c:539
+#, fuzzy, c-format
+msgid "invalid line number field width: %s"
+msgstr "ugyldig linjenummer-feltbredde: «%s»"
+
+#: src/nl.c:558
+#, fuzzy, c-format
+msgid "invalid line numbering format: %s"
+msgstr "ugyldig linjenummer-økning: «%s»"
+
+#: src/nohup.c:57
+#, fuzzy, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Bruk: %s [FIL]...\n"
+"eller: %s [FLAGG]\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "for mange argumenter"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr ""
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr ""
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr ""
+
+#: src/od.c:307
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Bruk: %s [FLAGG]... [FIL]...\n"
+" eller: %s --traditional [FIL] [[+]POSISJON [[+]MERKE]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"Skriv en entydig representasjon, oktale bytes forvalgt, av FIL\n"
+"til standard ut. Dersom ingen FIL er spesifisert, eller FIL er -,\n"
+"leses det fra standard inn.\n"
+"\n"
+
+#: src/od.c:320
+#, fuzzy
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+"Obligatoriske argmenter til lange flagg er obligatoriske også for korte.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=RADIX bestem hvordan filoffset'er skrives\n"
+" -j, --skip-bytes=BYTES hopp over første BYTES fra hver fil\n"
+
+#: src/od.c:327
+#, fuzzy
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=BYTES begrens oppgaven til første BYTES fra hver "
+"fil\n"
+" -s, --strings[=BYTES] skriv ut strenger med minst BYTES grafiske "
+"tegn\n"
+" -t, --format=TYPE velg utformat(er)\n"
+" -v, --output-duplicates ikke bruk * for å markere linjefjerning\n"
+" -w, --width[=BYTES] skriv BYTES bytes per utlinje\n"
+
+#: src/od.c:337
+#, fuzzy
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"Før-POSIX-argumenter kan blandes, de er:\n"
+" -a samme som -t a, velg navngitte tegn\n"
+" -b samme som -t oC, velg oktalbytes\n"
+" -c samme som -t c, velg ASCII-tegn eller backslash-notasjon\n"
+" -d samme som -t u2, velg korte desimaler uten fortegn\n"
+"\n"
+
+#: src/od.c:345
+#, fuzzy
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f samme som -t fF, velg flyttall\n"
+" -h samme som -t x2, velg korte hexadesimale\n"
+" -i samme som -t d2, velg korte desimaler\n"
+" -l samme som -t d4, velg lange desimaler\n"
+" -o samme som -t o2, velg korte oktaler\n"
+" -x samme som -t x2, velg korte hexadesimaler\n"
+
+#: src/od.c:353
+#, fuzzy
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"For eldre syntaks («second call format»), betyr POSISJON -j POSISJON. \n"
+"MERKE er pseudoadressen til den første uskrevne byten, som økes mens\n"
+"utskriften pågår. For POSISJON og MERKE, indikerer en 0x- eller \n"
+"0X-forstavelse hexadesimalt tallformat. Endelser kan være . for oktal,\n"
+"og b for blokker på 512 bytes.\n"
+"\n"
+"TYPE er laget av en eller flere av følgende:\n"
+"\n"
+" a et navngitt tegn\n"
+" c ASCII-tegn eller backslash-notasjon\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[STØRRELSE] desimal med fortegn, STØRRELSE bytes per tall\n"
+" f[STØRRELSE] flyttall, STØRRELSE bytes per tall\n"
+" o[STØRRELSE] oktal, STØRRELSE bytes per tall\n"
+" u[STØRRELSE] desimal uten fortegn, STØRRELSE bytes per tall\n"
+" x[STØRRELSE] hexadesimal, STØRRELSE bytes per tall\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"STØRRELSE er et tall. For TYPE lik d, o, u eller x, kan STØRRELSE også være\n"
+"C for sizeof(char), S for sizeof(short), I for sizeof(int) eller L for \n"
+"sizeof(long). Når TYPE er f, kan STØRRELSE være F for sizeof(float), \n"
+"D for sizeof(double) eller L for sizeof(long double).\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"RADIX er d for desimal, o for oktal, x for hexadesimal eller n for ingen.\n"
+"BYTES er hexadesimal med 0x- eller 0X-prefix, multipliseres med 512\n"
+"med endelse b, med 1024 med endelse k og med 1048576 med endelse m. \n"
+"En z-endelse for en hvilken som helst type viser skrivbare tegn til slutten\n"
+"av hver linje av utskriften. "
+
+#: src/od.c:391
+#, fuzzy
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"-s uten et tall impliserer 3. -w uten et tall impliserer 32.\n"
+"Forvalgt er at od bruker -A o -t d2 -w 16.\n"
+
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/od.c:693
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"ugyldig type-streng «%s»;\n"
+"dette systemet støtter ikke en %lu-byte heltallstype"
+
+#: src/od.c:812
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"ugyldig type-streng «%s»;\n"
+"dette systemet støtter ikke en %lu-byte flyttallstype"
+
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "ugyldig tegn «%c» i type-streng «%s»"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "kan ikke hoppe til bak slutten av kombinert inndata"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr "ugyldig ut-adresse radix «%c»; det må være ett av tegnene [doxn]"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "hopp over argument"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "begrens argument"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "minimal strenglengde"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "breddespesifikasjon"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "ingen type kan spesifiseres ved dumping av strenger"
+
+#: src/od.c:1844
+#, fuzzy
+msgid "Compatibility mode supports at most one file."
+msgstr "kompatibilitetsmodus støtter maksimum tre argumenter"
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr ""
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "advarsel: ugyldig bredde %lu; bruker %d istedet"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: fmt=\"%s\" bredde=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "standard inn er lukket"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv linjer som består av de sekvensielt tilsvarende linjene fra hver\n"
+"FIL separert med tabulatorer til standard ut.\n"
+"Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+"inn.\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=LISTE bruk tegn fra LISTE istedet for tabulatorer\n"
+" -s, --serial ta en fil om gangen i steder for i parallell\n"
+
+#: src/pathchk.c:99
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "ugyldig tegn «%c» i type-streng «%s»"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr ""
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr ""
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr ""
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr ""
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr ""
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr ""
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr ""
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr ""
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr ""
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr ""
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr ""
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr ""
+
+#: src/pinky.c:427
+msgid "When"
+msgstr ""
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr ""
+
+#: src/pinky.c:510
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+
+#: src/pinky.c:612
+#, fuzzy, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr "ingen filer kan spesifiseres når flagget --string brukes"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr ""
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "«--pages=FØRSTE_SIZE[:SISTE_SIDE]» mangler argument"
+
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "«-l SIDE_LENGDE» igyldig antall linjer: «%s»"
+
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "«-N TALL» ugyldig start-linjenummer: «%s»"
+
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "«-o MARG» ugyldig linje-offset: «%s»"
+
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "«-w SIDE_BREDDE» igyldig antall tegn: «%s»"
+
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "«-W SIDE_BREDDE» ugyldig antall tegn: «%s»"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "Kan ikke spesifisere antall kolonner når det skrives i parallell."
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "Kan ikke spesifisere både skriving i kryss og skriving i parallell"
+
+#: src/pr.c:1202
+#, fuzzy, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "«-%c» ekstra tegn eller ugyldig tall i argumentet: «%s»"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "sidebredde for smal"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2406
+#, fuzzy, c-format
+msgid "Page number overflow"
+msgstr "felt-nummer er null"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+#, fuzzy
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+"Paginér eller kolumnér FIL(er) for utskrift.\n"
+"\n"
+
+#: src/pr.c:2779
+#, fuzzy
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +FØRSTE_SIDE[:SISTE_SIDE], --pages=FØRSTE_SIDE[:SISTE_SIDE]\n"
+" begynn [stopp] utskrift med side FØRSTE_[SISTE_]SIDE\n"
+" -KOLONNE, --columns=COLONNE\n"
+" lag KOLONNE-kolonners utskrift og skriv kolonner "
+"nedover,\n"
+" med mindre -a brukes. Balansér antall linjer i\n"
+" kolonnene på hver side\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across skriv kolonner på tvers isteden for nedover, brukes "
+"sammen\n"
+" med -KOLONNE\n"
+" -c, --show-control-chars\n"
+" bruk hatt-notasjon (^G) og oktal backslah-notasjon\n"
+" -d, --double-space\n"
+" bruk dobbel linjeavstand\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=FORMAT\n"
+" bruk FORMAT for topptekst-dato\n"
+" -e[TEGN[BREDDE]], --expand-tabs[=TEGN[BREDDE]]\n"
+" ekspander inn-TEGN (TAB) til tabulator-BREDDE (8)\n"
+" -F, -f, --form-feed\n"
+" bruk sideskift isteden for linjeskift for å separere\n"
+" sider. (ved en 3-linjers topptekst med -F eller en\n"
+" 5-linjers topptekst og bunntekst uten -F)\n"
+
+#: src/pr.c:2805
+#, fuzzy
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h TOPPTEKST, --header=TOPPTEKST\n"
+" bruk en sentrert TOPPTEKST isteden for filnavn i\n"
+" toppteksten. -h \"\" skriver en blank linje, ikke bruk\n"
+" -h\"\"\n"
+" -i[TEGN[BREDDE], --output-tabs[=TEGN[BREDDE]]\n"
+" erstatt mellomrom med TEGN (TAB) til tabulator-BREDDE"
+"(8)\n"
+" -J, --join-lines flett sammen hele linjer. Skrur av -W-linje-"
+"trunkering,\n"
+" ingen kolonnejustering, -S[STRENG] setter skilletegn\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l SIDE_LENDGE, --length=SIDE_LENDGE\n"
+" setter sidelengden til SIDE_LENDGE (66) linjer\n"
+" (forvalgt antall linjer med tekst er 56, og med -F 63)\n"
+" -m, --merge skriv alle filer i parallell, en i hver kolonne,\n"
+" trunker linjer, men flett sammen hele linjer med -J\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[SKILL[SIFFER]], --number-linjes[=SKILL[SIFFER]]\n"
+" antall linjer, bruk SIFFER (5) siffer, så SKILL (TAB),\n"
+" forvalgt starter telling med første linje av innfil\n"
+" -N NUMMER, --first-linje-number=NUMMER\n"
+" start telling med NUMMER ved første linje av første\n"
+" side skrevet ut (se +FØRSTE_SIDE)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o MARG, --indent=MARG\n"
+" posisjonér hver linje med MARG (0) mellomrom,\n"
+" påvirker ikke -w eller -W. MARG vil adderes til "
+"SIDE_BREDDE\n"
+" -r, --no-file-warnings\n"
+" ikke advar når fil ikke kan åpnes\n"
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[TEGN], --separator[=CHAR]\n"
+" skill kolonner med et enkelt tegn, forvalgt TEGNS\n"
+" er TAB-tegnet med -w og ingen tegn ved -W\n"
+" -s[TEGN] skrur av linjetrunkering av alle 3 kolonne-\n"
+" flaggene (-KOLONNE|-a -KOLONNE|-m) hvis ikke -w er satt\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr ""
+
+#: src/pr.c:2846
+#, fuzzy
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" -S[STRENG], --sep-string[=STRENG]\n"
+" skill kolonner med en STRENG. Ikke bruk -S \"STRENG\".\n"
+" Bare -S: Ikke noe skilletegn (samme som -S\"\").\n"
+" Uten -S: Fovalgt skilletegn TAB med -J og SPACE\n"
+" ellers (samme som -S\" \"), ingen effekt på kolonne-"
+"flagg\n"
+" -t, --omit-header ikke ta med topptekst og bunntekst\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" ikke ta med topp- og bunntekst, eliminer evt. "
+"paginering\n"
+" av sideskift satt i inn-filer\n"
+" -v, --show-non-printing\n"
+" bruk backslash-notasjon\n"
+" -w SIDEBREDDE, --with=SIDEBREDDE\n"
+" sett sidebredde til SIDEBREDDE (72) tegn for\n"
+" flerkolonners tekstutskrift. -s[tegn] skrur av (72)\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W SIDEBREDDE, --page-width=SIDEBREDDE\n"
+" sett sidebredde til SIDEBREDDE (72) tegn\n"
+" trunkér linjer hvis ikke -J er satt. Ingen påvirkning\n"
+" med -S eller -s\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"-T impliseres av -l nn når nn <= 10 eller <= 3 med -F. Dersom FIL ikke\n"
+"er oppgitt, eller når FIL er -, leses det fra standard inn.\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+
+#: src/printf.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Bruk: %s [FIL]...\n"
+"eller: %s [FLAGG]\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr ""
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr ""
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr ""
+
+#: src/printf.c:289
+#, fuzzy, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "ugyldig tegn-klasse «%s»"
+
+#: src/printf.c:550
+#, fuzzy, c-format
+msgid "invalid field width: %s"
+msgstr "ugyldig bredde: «%s»"
+
+#: src/printf.c:585
+#, fuzzy, c-format
+msgid "invalid precision: %s"
+msgstr "ugyldig breddespesifikasjon «%s»"
+
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%s: ugyldig feltspesifikasjon «%s»"
+
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr ""
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr ""
+
+#: src/ptx.c:422
+#, fuzzy, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (for regexp «%s»)"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Bruk : %s [FLAGG]... [INN]... (uten -G)\n"
+"eller: %s -G [FLAGG]... [INN [UT]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"Skriv ut en permutert indeks, inkludert kontekst, av ordene i innfilene\n"
+"\n"
+
+#: src/ptx.c:1894
+#, fuzzy
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference skriv ut automatisk genererte referanser\n"
+" -C, --copyright vis Copyright og kopieringsbetingelser\n"
+" -G, --traditional vær mer som System Vs «ptx»\n"
+" -F, --flag-truncation=STRENG bruk STRENG for å markere linjetrunkering\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=STRENG makronavn å bruke istedenfor «xx»\n"
+" -O, --format=roff generer utskrift som roff-direktiver\n"
+" -R, --right-side-refs plassér referansene på høyre side, ikke\n"
+" telt med i -w\n"
+" -S, --sentence-regexp=REGEXP for slutten av linjer eller slutten av\n"
+" setninger\n"
+" -T, --format=tex generer utskrift som TeX-direktiver\n"
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=REGEXP bruk REGEXP for å treffe hvert nøkkelord\n"
+" -b, --break-file=FIL tegn for orddeling i denne FILen\n"
+" -f, --ignore-case gjør om små bokstaver til store for "
+"sortering\n"
+" -g, --gap-size=TALL størrelse på mellomrom mellom spalter i "
+"utfelt\n"
+" -i, --ignore-file=FIL les liste over ord som skal ignoreres fra "
+"FIL\n"
+" -o, --only-file=FIL les liste over ord som *ikke* skal "
+"ignoreres\n"
+" fra FIL\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references første felt av hver linje er en referanse\n"
+" -t, --typeset-mode - ikke implementert -\n"
+" -w, --width=BREDDE utskriftbredde for spalter, eksklusive\n"
+" referanser\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"Ved ingen FIL eller hvis FIL er -, leses det fra standard inn. «-F /» er\n"
+"forvalgt.\n"
+
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "ugyldig bredde: «%s»"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr ""
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+
+#: src/pwd.c:160
+#, fuzzy, c-format
+msgid "failed to chdir to %s"
+msgstr "kan ikke endre rettigheter til %s"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, fuzzy, c-format
+msgid "ignoring non-option arguments"
+msgstr "for mange ikke-flagg-argumenter"
+
+#: src/readlink.c:67
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+
+#: src/remove.c:854
+#, fuzzy, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "kan ikke opprette katalog %s"
+
+#: src/remove.c:855
+#, fuzzy, c-format
+msgid "%s: descend into directory %s? "
+msgstr "kan ikke skifte til katalog, %s"
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr ""
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr ""
+
+#: src/remove.c:925 src/remove.c:1429
+#, fuzzy, c-format
+msgid "removed directory: %s\n"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, fuzzy, c-format
+msgid "cannot remove directory %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/remove.c:1450
+#, fuzzy, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "kan ikke skifte til katalog, %s"
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/remove.c:1558
+#, fuzzy, c-format
+msgid "cannot restore current working directory"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#: src/rm.c:160 src/touch.c:233
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "for mange argumenter"
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, fuzzy, c-format
+msgid "removing directory, %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/rmdir.c:140
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+
+#: src/rmdir.c:148
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+
+#: src/seq.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Bruk : %s [FLAGG]... [INN]... (uten -G)\n"
+"eller: %s -G [FLAGG]... [INN [UT]]\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+
+#: src/seq.c:88
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, fuzzy, c-format
+msgid "invalid floating point argument: %s"
+msgstr "ugyldig startlinjenummer: «%s»"
+
+#: src/seq.c:342
+#, fuzzy, c-format
+msgid "invalid format string: %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/seq.c:364
+#, fuzzy, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr "ingen type kan spesifiseres ved dumping av strenger"
+
+#: src/setuidgid.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Bruk: %s [FIL]...\n"
+"eller: %s [FLAGG]\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr ""
+
+#: src/setuidgid.c:109
+#, fuzzy, c-format
+msgid "cannot set supplemental group"
+msgstr "kan ikke utelate både bruker og gruppe"
+
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "kan ikke utelate både bruker og gruppe"
+
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "kan ikke utelate både bruker og gruppe"
+
+#: src/shred.c:165
+#, fuzzy, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Bruk: %s [FLAGG] [FIL]...\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+
+#: src/shred.c:303
+#, fuzzy, c-format
+msgid "%s: fdatasync failed"
+msgstr "stat feilet"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr ""
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr ""
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr ""
+
+#: src/shred.c:460
+#, fuzzy, c-format
+msgid "%s: error writing at offset %s"
+msgstr "feil ved skriving til %s"
+
+#: src/shred.c:478
+#, fuzzy, c-format
+msgid "%s: lseek failed"
+msgstr "feil ved lukking av fil"
+
+#: src/shred.c:489
+#, fuzzy, c-format
+msgid "%s: file too large"
+msgstr "%s: fil for lang"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr ""
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr ""
+
+#: src/shred.c:776
+#, fuzzy, c-format
+msgid "%s: fstat failed"
+msgstr "stat feilet"
+
+#: src/shred.c:787
+#, fuzzy, c-format
+msgid "%s: invalid file type"
+msgstr "%s: ugyldig antall linjer"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr ""
+
+#: src/shred.c:873
+#, fuzzy, c-format
+msgid "%s: error truncating"
+msgstr "%s: fil trunkert"
+
+#: src/shred.c:889
+#, fuzzy, c-format
+msgid "%s: fcntl failed"
+msgstr "stat feilet"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr ""
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr ""
+
+#: src/shred.c:996
+#, fuzzy, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: lesefeil"
+
+#: src/shred.c:1018
+#, fuzzy, c-format
+msgid "%s: failed to remove"
+msgstr "%s: fil for lang"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr ""
+
+#: src/shred.c:1029 src/shred.c:1072
+#, fuzzy, c-format
+msgid "%s: failed to close"
+msgstr "%s: fil for lang"
+
+#: src/shred.c:1065
+#, fuzzy, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: fil for lang"
+
+#: src/shred.c:1130
+#, fuzzy, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: ugyldig antall sekunder"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, c-format
+msgid "multiple random sources specified"
+msgstr ""
+
+#: src/shred.c:1153
+#, fuzzy, c-format
+msgid "%s: invalid file size"
+msgstr "%s: ugyldig antall linjer"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Bruk : %s [FLAGG]... [INN]... (uten -G)\n"
+"eller: %s -G [FLAGG]... [INN [UT]]\n"
+
+#: src/shuf.c:57
+#, fuzzy
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"Skriv ut valgte deler av linjer fra hver FIL til standard ut.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, c-format
+msgid "multiple -i options specified"
+msgstr ""
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "ugyldig antall"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "ugyldig bredde: «%s»"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr ""
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr "ekstra operator «%s»"
+
+#: src/sleep.c:47
+#, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr ""
+
+#: src/sort.c:310
+#, fuzzy
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"Skriv en sortert konkatenering av alle FIL(er) til standard ut.\n"
+"\n"
+"Sorteringsflagg:\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+#, fuzzy
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks ignorer ledende blanke\n"
+" -d, --dictionary-order behandle bare blanke og alfanumeriske tegn\n"
+" -f, --ignore-case konverter små bokstaver til store\n"
+
+#: src/sort.c:326
+#, fuzzy
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort sammenlign i henhold til vanlige nummériske\n"
+" verdier\n"
+" -i, --ignore-nonprinting behandle bare skrivbare tegn\n"
+" -M, --month-sort sammenlign (ukjent) < 'JAN' < ... < 'DEC'\n"
+" -n, --numeric-sort sammenlign i henhold til nummériske verdier\n"
+" -r, --reverse reversér resultatet av sammenligningene\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+#, fuzzy
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+"Andre flagg:\n"
+"\n"
+" -c, --check sjekk om inndata er sortert; ikke sortér\n"
+" -k, --key=POS1[,POS2] start en nøkkel ved POS1, avslutt ved POS2 (fra "
+"1)\n"
+" -m, --merge flett sammen allerede sorterte filer; ikke "
+"sortér\n"
+" -o, --output=FIL skriv resultater til FIL isteden for standard "
+"ut\n"
+" -s, --stable stabiliser sortering ved å slå av siste-utvei-\n"
+" sammenligning\n"
+" -S, --buffer-size=STØRR bruk STØRRelse stort minne-buffer\n"
+
+#: src/sort.c:351
+#, fuzzy, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=SKILL bruk SKILL isteden for ikke- til -tomrom-"
+"overgang\n"
+" -T, --temporary-directory=KAT bruk KATalog for midlertidige filer, ikke\n"
+" $TMPDIR eller %s. Kan gjentas for å\n"
+" spesifisere flere kataloger\n"
+" -u, --unique med -c: sjekk for streng sortering\n"
+" ellers, bare skriv ut det første av to like\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -z, --zero-terminated avslutt linjer med en 0-oktett, ikke linjeskift\n"
+
+#: src/sort.c:363
+#, fuzzy
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"POS er F[.C][OPTS], hvor F er feltnummeret og C er tegnposisjonen\n"
+"i feltet. OPTS er en eller flere enbokstav-sorteringflagg, som\n"
+"overstyrer globale sorteringsflagg for den nøkkelen. Hvis ingen nøkkel\n"
+"er oppgitt, bruk hele linjen som nøkkel.\n"
+"\n"
+"STØRRELSE kan være fulgt av de følgende multiplikator-endelsene:\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"% 1% av minne, b 1, K 1024 (forvalgt) og så videre for M, G, T, P, E, Z, Y.\n"
+"\n"
+"Dersom ingen FIL er oppgitt eller FIL er -, leses det fra standard inn.\n"
+"\n"
+"*** ADVARSEL ***\n"
+"Lokalet spesifisert av miljøet påvirker sorteringsrekkefølge.\n"
+"Sett LC_ALL=C for å få den tradisjonelle sorteringsrekkefølgen som\n"
+"bruker negative oktett-verdier.\n"
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "feil ved skriving til %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "kan ikke opprette midlertidig fil"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "åpning av fil feilet"
+
+#: src/sort.c:758
+#, fuzzy
+msgid "fflush failed"
+msgstr "feil ved lukking av fil"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "feil ved lukking av fil"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "åpning av fil feilet"
+
+#: src/sort.c:871
+#, fuzzy, c-format
+msgid "couldn't execute %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "kan ikke opprette midlertidig fil"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "kan ikke opprette midlertidig fil"
+
+#: src/sort.c:920
+#, fuzzy, c-format
+msgid "couldn't execute %s -d"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "feil ved skriving"
+
+#: src/sort.c:975
+#, fuzzy, c-format
+msgid "warning: cannot remove: %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "sorteringsstørrelse"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "stat feilet"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "feil ved lesing"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: uorden: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "standard feilkanal"
+
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: ugyldig feltspesifikasjon «%s»"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: ugyldig tall på starten av «%s»"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "ugyldig tall etter «-»"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "ugyldig tall etter «.»"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "ugyldig tegn i feltspesifikasjon"
+
+#: src/sort.c:2934
+#, c-format
+msgid "multiple compress programs specified"
+msgstr ""
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "ugyldig tall i feltstart"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "felt-nummer er null"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "tegn-posisjon er null"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "ugyldig tall etter «,»"
+
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "ekstra operator «%s» ikke tillatt med -c"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Bruk: %s [FLAGG] [INPUT [PREFIKS]]\n"
+
+#: src/split.c:110
+#, fuzzy
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv stykker av fast størrelse av INPUT til PREFIKSaa, PREFIKSab, ...;\n"
+"Forvalgt PREFIKS er `x'. Dersom ingen INPUT er spesifisert, eller INPUT er "
+"-,\n"
+"leses det fra standard inn.\n"
+"\n"
+
+#: src/split.c:119
+#, fuzzy, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -ANTALL samme som -l ANTALL\n"
+" -b, --bytes=STØRRELSE skriv STØRRELSE bytes i hver utfil\n"
+" -C, --line-bytes=STØRRELSE skriv maksimum STØRRELSE bytes med linjer per\n"
+" utfil\n"
+" -l, --lines=ANTALL skriv ANTALL linjer i hver utfil\n"
+" --verbose skriv en diagnostikk til standard error rett\n"
+" før hver utfil åpnes\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"STØRRELSE kan ha en multiplikatorendelse: b for 512, k for 1K eller\n"
+" m for 1 Meg.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr ""
+
+#: src/split.c:211
+#, fuzzy, c-format
+msgid "creating file %s\n"
+msgstr "lager filen «%s»\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "kan ikke dele opp på mer enn én måte"
+
+#: src/split.c:420
+#, fuzzy, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: ugyldig antall linjer"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: ugyldig antall bytes"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: ugyldig antall linjer"
+
+#: src/split.c:487
+#, fuzzy, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "%s: tall «%.*s» for stort"
+
+#: src/split.c:518
+#, fuzzy, c-format
+msgid "invalid number of lines: 0"
+msgstr "ugyldig antall linjer"
+
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s: ukjent flagg «%c%s»\n"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%s: ugyldig mønster"
+
+#: src/stat.c:726
+#, fuzzy, c-format
+msgid "warning: backslash at end of format"
+msgstr "ugyldig backslash-beskyttelse ved slutten av streng"
+
+#: src/stat.c:755
+#, fuzzy, c-format
+msgid "cannot read file system information for %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/stat.c:831
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Bruk: %s [FLAGG] [FIL]...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+
+#: src/stty.c:789
+#, fuzzy, c-format
+msgid "only one device may be specified"
+msgstr "kun ett argument kan spesifiseres"
+
+#: src/stty.c:819
+#, fuzzy, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr "flaggene --string og --check kan ikke brukes samtidig"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr ""
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr ""
+
+#: src/stty.c:885 src/stty.c:995
+#, fuzzy, c-format
+msgid "invalid argument %s"
+msgstr "ugyldig argument %s for %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, fuzzy, c-format
+msgid "missing argument to %s"
+msgstr "flertydig argument %s for %s"
+
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "ugyldig bredde: «%s»"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr ""
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr ""
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr ""
+
+#: src/stty.c:1888
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "ugyldig linjenummer-økning: «%s»"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr ""
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr ""
+
+#: src/su.c:303
+#, fuzzy, c-format
+msgid "cannot set groups"
+msgstr "kan ikke utelate både bruker og gruppe"
+
+#: src/su.c:307
+#, fuzzy, c-format
+msgid "cannot set group id"
+msgstr "kan ikke utelate både bruker og gruppe"
+
+#: src/su.c:309
+#, fuzzy, c-format
+msgid "cannot set user id"
+msgstr "kan ikke utelate både bruker og gruppe"
+
+#: src/su.c:385
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/su.c:386
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr ""
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr ""
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr ""
+
+#: src/su.c:523
+#, fuzzy, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "kan ikke opprette katalog %s"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Skriv ut sjekksum og block-antall for hver FIL.\n"
+"\n"
+" -r bruk BSD-sum-algoritme, bruk 1K-blokker\n"
+" -s, --sysv bruk SystemV-sum-algoritme, bruk 512 byte-blokker\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+
+#: src/sync.c:74
+#, fuzzy, c-format
+msgid "ignoring all arguments"
+msgstr "for mange argumenter"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help vis denne hjelpteksten og avslutt\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version vis programversjon og avslutt\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv hver FIL til standard ut, siste linje først.\n"
+"Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+"inn.\n"
+"\n"
+
+#: src/tac.c:145
+#, fuzzy
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before føy til separator før istedet for etter\n"
+" -r, --regex tolk separatoren som et regulært uttrykk\n"
+" -s, --separator=STRENG bruk STRENG som separator istedet for linjeskift\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, fuzzy, c-format
+msgid "%s: seek failed"
+msgstr "feil ved lukking av fil"
+
+#: src/tac.c:265
+#, fuzzy, c-format
+msgid "record too large"
+msgstr "%s: fil for lang"
+
+#: src/tac.c:459
+#, fuzzy, c-format
+msgid "cannot create temporary file %s"
+msgstr "kan ikke opprette midlertidig fil"
+
+#: src/tac.c:466
+#, fuzzy, c-format
+msgid "cannot open %s for writing"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/tac.c:487 src/tac.c:494
+#, fuzzy, c-format
+msgid "%s: write error"
+msgstr "feil ved skriving"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "separatoren kan ikke være tom"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv de siste %d linjene av hver FIL til standard ut.\n"
+"Med mer enn én FIL, innled hver med en topptekst med filnavnet.\n"
+"Med ingen FILer eller hvis FIL er -, les fra standard inn.\n"
+"\n"
+
+#: src/tail.c:229
+#, fuzzy
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry fortsett å prøv å åpne en fil, selv om den\n"
+" er utilgjengelig når tail starter eller hvis den\n"
+" blir utilgjengelig senere -- bare nyttig med -f\n"
+" -c, --bytes=N skriv ut de siste N oktettene\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={name|descriptor}]\n"
+" skriv ut mer data etter hvert som filen vokser;\n"
+" -f, --follow og --follow=descriptot er de samme\n"
+" -F samme som --follow=name --retry\n"
+
+#: src/tail.c:244
+#, fuzzy, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=N skriv ut de siste N linjene, isteden for de siste "
+"%d\n"
+" --max-unchanged-stats=N\n"
+" med --follow=name, åpne en FIL på nytt hvis den\n"
+" ikke har endret størrelse etter N (forvalgt %d)\n"
+" runder for å se om den har blitt fjernet eller\n"
+" skiftet navn\n"
+" (dette er det vanlige tilfellet for roterte\n"
+" logg-filer\n"
+
+#: src/tail.c:256
+#, fuzzy
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID med -f, terminer etter at prosess PID dør\n"
+" -q, --quiet, --silent ikke skriv ut topptekster med filnavn\n"
+" -s, --sleep-interval=S med -f, hver runde varer circa S (forvalgt 1) "
+"sekunder\n"
+" -v, --verbose skriv alltid topptekster med filnavn\n"
+
+#: src/tail.c:265
+#, fuzzy
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"Hvis det første tegnet av N (antall oktetter eller linjer) er en «+»,\n"
+"begynn å skriv ut med det Nte elementet fra starten av hver linje, ellers\n"
+"skriv de siste N elementene i filen. N kan ha multiplikatorendelse:\n"
+"b for 512, k for 1024, m for 1048576 (1 Meg). "
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"Med --follow (-f), vil tail forvalgt følge fildeskriptoren, som betyr\n"
+"at selv om den tail'ede filen skifter navn vil tail fortsatt følge den"
+
+#: src/tail.c:278
+#, fuzzy
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"Denne forvalgte oppførselen er ikke ønskelig når det du virkelige vil\n"
+"gjøre er å følge selve filnavnet og ikke fildeskriptoren (f.eks. logg-\n"
+"rotering). Bruk --follow=name i det tilfellet. Dette fører til at\n"
+"tail følger den navngitte filen ved å gjenåpne filen periodisk for å se om\n"
+"den har blitt fjernet og gjenopprettet av et annet program.\n"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "lukker %s (fd=%d)"
+
+#: src/tail.c:411
+#, fuzzy, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: kan ikke søke til relativ posisjon %s%s"
+
+#: src/tail.c:415
+#, fuzzy, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s: kan ikke søke til posisjon %s%s relativ til slutten"
+
+#: src/tail.c:867
+#, fuzzy, c-format
+msgid "%s has become inaccessible"
+msgstr "«%s» har blitt utilgjengelig"
+
+#: src/tail.c:884
+#, fuzzy, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+"«%s» har blitt erstattet av en ikke-tailbar fil; gir opp dette filnavnet"
+
+#: src/tail.c:905
+#, fuzzy, c-format
+msgid "%s has become accessible"
+msgstr "«%s» har blitt utilgjengelig"
+
+#: src/tail.c:913
+#, fuzzy, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "«%s» har blitt opprettet. Følger etter slutten av ny fil"
+
+#: src/tail.c:924
+#, fuzzy, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "«%s» har blitt erstattet. Følger etter slutten av ny fil"
+
+#: src/tail.c:1025
+#, fuzzy, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "kan ikke endre eier og/eller gruppe for %s"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: fil trunkert"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "ingen filer igjen"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr "%s: kan ikke følge slutten av en fil av denne typen; gir opp denne"
+
+#: src/tail.c:1439
+#, fuzzy, c-format
+msgid "number in %s is too large"
+msgstr "%s er for stor"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr ""
+"%s: ugyldig maksimum antall av uendrete resultat av kall til stat() mellom "
+"kall til open()"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: ugyldig prosess-id"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: ugyldig antall sekunder"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, fuzzy, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "advarsel: --retry er nyttig kun når en følger ved navn"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr "advarsel: PID ignoreres; --pid=PID er bare nyttid når man følger"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "advarsel: --pid=PID er ikke støttet på dette systemet"
+
+#: src/tail.c:1667
+#, fuzzy, c-format
+msgid "cannot follow %s by name"
+msgstr "kan ikke opprette midlertidig fil"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+
+#: src/tee.c:71
+#, fuzzy
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Når ingen FIL eller når FIL er -, les fra standard inn.\n"
+
+#: src/test.c:125
+#, fuzzy, c-format
+msgid "missing argument after %s"
+msgstr "flertydig argument %s for %s"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "ugyldig antall"
+
+#: src/test.c:242
+msgid "')' expected"
+msgstr ""
+
+#: src/test.c:245
+#, c-format
+msgid "')' expected, found %s"
+msgstr ""
+
+#: src/test.c:261 src/test.c:606
+#, c-format
+msgid "%s: unary operator expected"
+msgstr ""
+
+#: src/test.c:330
+msgid "-nt does not accept -l"
+msgstr ""
+
+#: src/test.c:343
+msgid "-ef does not accept -l"
+msgstr ""
+
+#: src/test.c:359
+msgid "-ot does not accept -l"
+msgstr ""
+
+#: src/test.c:368
+#, fuzzy
+msgid "unknown binary operator"
+msgstr "Ukjent systemfeil"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "Ukjent systemfeil"
+
+#: src/test.c:694
+#, fuzzy
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Bruk: %s [FIL]...\n"
+"eller: %s [FLAGG]\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+msgid "missing `]'"
+msgstr ""
+
+#: src/test.c:846
+#, fuzzy, c-format
+msgid "extra argument %s"
+msgstr "for mange argumenter"
+
+#: src/touch.c:112 src/touch.c:318
+#, fuzzy, c-format
+msgid "invalid date format %s"
+msgstr "ugyldig argument %s for %s"
+
+#: src/touch.c:154
+#, fuzzy, c-format
+msgid "creating %s"
+msgstr "lager filen «%s»\n"
+
+#: src/touch.c:211
+#, fuzzy, c-format
+msgid "cannot touch %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr ""
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+
+#: src/touch.c:344
+#, fuzzy, c-format
+msgid "cannot specify times from more than one source"
+msgstr "kan ikke dele opp på mer enn én måte"
+
+#: src/touch.c:389
+#, fuzzy, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr "advarsel: «sort %s» er avleggs; bruk «sort -k»"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Bruk: %s [FLAGG]... SETT1 [SETT2]\n"
+
+#: src/tr.c:294
+#, fuzzy
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Oversett, klem sammen og/eller fjern tegn fra standard inn,\n"
+"skriv ut til standard ut.\n"
+"\n"
+" -c, --complement først komplementer SETT1\n"
+" -d, --delete slett tegn i SETT1, ikke oversett\n"
+" -s, --squeeze-repeats erstatt rekke av tegn med ett\n"
+" -t, --truncate-set1 forkort først SETT1 til lengden til SETT2\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"SETT er spesifisert med strenger av tegn. De fleste tegnene står for seg\n"
+"selv. Følgende sekvenser tolkes spesielt:\n"
+"\n"
+" \\NNN tegn med oktalverdi NNN (1 til 3 oktale siffer)\n"
+" \\\\ backslash\n"
+" \\a beep\n"
+" \\b backspace\n"
+" \\f sideskift (FF)\n"
+" \\n linjeskift (LF)\n"
+" \\r vognretur (CR)\n"
+" \\t horisontal tabulator\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v vertikal tabulator\n"
+" TEGN1-TEGN2 alle tegn fra TEGN1 til TEGN2, stigende\n"
+" [TEGN1-TEGN2] samme som TEGN1-TEGN2, dersom begge sett bruker dette\n"
+" [TEGN*] i SETT2, kopier av TEGN inntil samme lengde til SETT1\n"
+" [TEGN*ANT] ANT kopier av TEGN, ANT er oktal, hvis det begynner med 0\n"
+" [:alnum:] alle bokstaver og tall\n"
+" [:alpha:] alle bokstaver\n"
+" [:blank:] alle horisontale blanke tegn\n"
+" [:cntrl:] alle kontrolltegn\n"
+" [:digit:] alle siffer\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] alle skrivbare tegn, unntatt blanke tegn\n"
+" [:lower:] alle små bokstaver\n"
+" [:print:] alle skrivbare tegn, inkludert blanke tegn\n"
+" [:punct:] alle tegnsettingstegn\n"
+" [:space:] alle horisontale og vertikale blanke tegn\n"
+" [:upper:] alle store bokstaver\n"
+" [:xdigit:] alle hexadesimale siffer\n"
+" [=TEGN=] alle tegn som er like TEGN\n"
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"Oversettelse skjer dersom -d ikke er gitt, og både SETT1 og SETT2 er der.\n"
+"-t kan bare bli brukt ved oversetting. SETT2 blir utvidet til lengden av\n"
+"SETT1 ved å repetere dets siste tegn som nødvendig. "
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"Tegn til overs i \n"
+"SETT2 ignoreres. Bare [:lower:] og [:upper:] er garantert å ekspandere i\n"
+"stigende rekkefølge; brukt i SETT2 ved oversetting kan de bare brukes i par\n"
+"for å angi oversetting fra store/små til små/store bokstaver."
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+" \n"
+"-s bruker SETT1 hvis det ikke er oversetting eller sletting; ellers bruker \n"
+"sammenklemming SETT2 og skjer etter oversetting eller sletting.\n"
+
+#: src/tr.c:519
+#, fuzzy, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"advarsel: den flertydige oktal-beskyttelsen \\%c%c%c blir tolket som \n"
+"\t2-byte-sekvensen \\0%c%c, «%c»"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "rekke-sluttpunkt i «%s-%s» er i omvendt sorteringsrekkefølge"
+
+#: src/tr.c:838
+#, fuzzy, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "ugyldig gjentagelsesteller «%s» i [c*n]-konstruksjon"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "mangler tegn-klassenavn «[::]»"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "mangler ekvivalensklassetegn «[==]»"
+
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "ugyldig tegn-klasse «%s»"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: ekvivalensklasseoperanden må være et enkelt tegn"
+
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr "ugyldig tegn i feltspesifikasjon"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "gjentagelseskonstruktet [c*] kan ikke opptre i streng1"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "kun ett [c*] gjentagelseskonstrukt kan opptre i streng2"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "[=c=]-uttrykk kan ikke opptre i streng2 under oversetting"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "når sett1 ikke blir forkortet, kan ikke streng2 være tom"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"når det oversettes med komlementerte tegnklasser\n"
+"må streng2 mappe alle tegn i domenet til én"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"ved oversetting er de eneste tegnklassene som kan være i streng2\n"
+"«upper» og «lower»"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "[c*]-konstruktet kan bare opptre i streng2 ved oversetting"
+
+#: src/tr.c:1731
+#, fuzzy
+msgid "Two strings must be given when translating."
+msgstr "to strenger må være gitt ved oversetting"
+
+#: src/tr.c:1741
+#, fuzzy
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"kun én streng kan oppgis når det slettes uten sammenklemming av gjentagelser"
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "feilplassert [:upper:]- og/eller [:lower:]-konstruksjon"
+
+#: src/true.c:42
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Bruk: %s [FIL]...\n"
+"eller: %s [FLAGG]\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Bruk: %s [FLAGG] [FIL]\n"
+"Skriv en fullstendig sortert liste konsistent med den delvise sorteringen\n"
+"i FIL. Hvis ingen FIL eller hvis FIL er -, leses fra standard inn.\n"
+"\n"
+
+#: src/tsort.c:474
+#, fuzzy, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: inndata inneholder en løkke:"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: inndata inneholder en løkke:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Bruk: %s [FLAGG] [FIL]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr ""
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+
+#: src/uname.c:236
+#, fuzzy, c-format
+msgid "cannot get system name"
+msgstr "kan ikke opprette midlertidig fil"
+
+#: src/unexpand.c:125
+#, fuzzy
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Konverter mellomrom i hver FIL til tabulatorer, skriv ut til standard ut.\n"
+"Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+"inn.\n"
+"\n"
+
+#: src/unexpand.c:133
+#, fuzzy
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all konverter alle blanke tegn, istedet for bare "
+"innledende\n"
+" -t, --tabs=ANTALL ha tabulatorer ANTALL tegn fra hverandre istedet for "
+"8\n"
+" -t, --tabs=LISTE bruk komma-separert LISTE med tabulatorposisjoner.\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "%s er for stor"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Bruk: %s [FLAGG]... [INN [UT]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"Fjern alle bortsett fra én identiske linjer fra INN\n"
+"(eller standard inn), og skriv til UT (eller standard ut).\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count begynn linjer med antall forekomster\n"
+" -d, --repeated skriv bare ut linjer det er flere av\n"
+
+#: src/uniq.c:151
+#, fuzzy
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated[=delimit-method] skriv alle linjer det er flere av\n"
+" delimit-method={none(forvalgt),prepend,separate}\n"
+" -f, --skip-fields=N ikke sammenlign de første N feltene\n"
+" -i, --ignore-case ignorer forskjeller med store/små bokstaver\n"
+" -s, --skip-chars=N ikke sammenlign de første N tegnene\n"
+" -u, --unique skriv bare ut unike linjer\n"
+
+#: src/uniq.c:160
+#, fuzzy
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+" -w, --check-chars=N ikke sammenlign mer enn N tegn per linje\n"
+" -N samme som -f N\n"
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"Et felt er en rekke blanke tegn, så andre tegn. Felt hoppes over før tegn.\n"
+
+#: src/uniq.c:350
+#, fuzzy, c-format
+msgid "too many repeated lines"
+msgstr "for mange argumenter"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "ugyldig antall felt å hoppe over"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "ugyldig antall oktetter å hoppe over"
+
+#: src/uniq.c:530
+#, fuzzy
+msgid "invalid number of bytes to compare"
+msgstr "ugyldig antall oktetter å sammenligne"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr "å skrive alle dupliserte linjer *og* gjentagelsesantall er meningsløst"
+
+#: src/unlink.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Bruk: %s [FIL]...\n"
+"eller: %s [FLAGG]\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+
+#: src/unlink.c:91
+#, fuzzy, c-format
+msgid "cannot unlink %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr ""
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr ""
+
+#: src/uptime.c:135
+msgid "am"
+msgstr ""
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr ""
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr ""
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr ""
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/uptime.c:147
+#, fuzzy, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "ugyldig bruker"
+msgstr[1] "ugyldig bruker"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ""
+
+#: src/uptime.c:197 src/users.c:108
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+
+#: src/wc.c:113
+#, fuzzy
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Skriv ut antall linjer, ord og bytes for hver FIL, og en total-linje\n"
+"dersom mer enn én FIL er spesifisert. Dersom ingen FIL er spesifisert,\n"
+"eller FIL er -, leses det fra standard inn.\n"
+" -c, --bytes skriv ut antall oktetter\n"
+" -m, --chars skriv ut antall tegn\n"
+" -l, --lines skriv ut antall linjer.\n"
+
+#: src/wc.c:121
+#, fuzzy
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" -L, --max-line-length skriv ut lengden av den lengste linjen.\n"
+" -w, --words skriv ut antall ord\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr ""
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr ""
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr ""
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr ""
+
+#: src/who.c:497
+msgid "clock change"
+msgstr ""
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr ""
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr ""
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+
+#: src/who.c:551
+msgid "NAME"
+msgstr ""
+
+#: src/who.c:551
+msgid "LINE"
+msgstr ""
+
+#: src/who.c:551
+msgid "TIME"
+msgstr ""
+
+#: src/who.c:551
+#, fuzzy
+msgid "IDLE"
+msgstr "FEIL"
+
+#: src/who.c:552
+msgid "PID"
+msgstr ""
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr ""
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr ""
+
+#: src/who.c:633
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Bruk: %s [FLAGG]... FIL1 FIL2\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+
+#: src/whoami.c:51
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+
+#: src/whoami.c:95
+#, fuzzy, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "kan ikke endre eier og/eller gruppe for %s"
+
+#: src/yes.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Bruk: %s [FIL]...\n"
+"eller: %s [FLAGG]\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+
+#, fuzzy
+#~ msgid "strip failed"
+#~ msgstr "stat feilet"
+
+#, fuzzy
+#~ msgid "program error"
+#~ msgstr "lesefeil"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "kan ikke endre eier og/eller gruppe for %s"
+
+#, fuzzy
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "kan ikke skifte til katalog, %s"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "kan ikke finne login-gruppen til en numerisk bruker-ID"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Dette er fri programvare. Se kildekoden for kopieringsbetingelser.\n"
+#~ "Det er ingen garantier, ikke engang for SALGBARHET eller EGNETHET\n"
+#~ "TIL NOEN SPESIELL OPPGAVE.\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "for få argumenter"
+
+#~ msgid "Torbjorn Granlund and Richard M. Stallman"
+#~ msgstr "Torbjorn Granlund og Richard M. Stallman"
+
+#, fuzzy
+#~ msgid "closing standard output"
+#~ msgstr "standard ut"
+
+#, fuzzy
+#~ msgid "invalid group number %s"
+#~ msgstr "ugyldig antall"
+
+#, fuzzy
+#~ msgid "invalid mode string: %s"
+#~ msgstr "ugyldig type-streng «%s»"
+
+#, fuzzy
+#~ msgid "unable to restore permissions of %s"
+#~ msgstr "kan ikke endre rettigheter til %s"
+
+#~ msgid "Richard Stallman and David MacKenzie"
+#~ msgstr "Richard Stallman og David MacKenzie"
+
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "Bruk: %s [FLAGG]... VENSTRE_FIL HØYRE_FIL\n"
+
+#, fuzzy
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "kan ikke opprette katalog %s"
+
+#, fuzzy
+#~ msgid "Torbjorn Granlund, David MacKenzie, and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie og Jim Meyering"
+
+#, fuzzy
+#~ msgid "missing file arguments"
+#~ msgstr "for få argumenter"
+
+#, fuzzy
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "%s eksisterer men er ikke en katalog"
+
+#, fuzzy
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "advarsel: --pid=PID er ikke støttet på dette systemet"
+
+#~ msgid "Stuart Kemp and David MacKenzie"
+#~ msgstr "Stuart Kemp og David MacKenzie"
+
+#~ msgid "%s: `+' or `-' expected after delimeter"
+#~ msgstr "%s: «+» eller «-» ventet etter skilletegn"
+
+#~ msgid "David Ihnat, David MacKenzie, and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie og Jim Meyering"
+
+#, fuzzy
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "for mange ikke-flagg-argumenter"
+
+#, fuzzy
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-822 (-R) option"
+#~ msgstr "ingen filer kan spesifiseres når flagget --string brukes"
+
+#, fuzzy
+#~ msgid "cannot get time of day"
+#~ msgstr "kan ikke dele opp på mer enn én måte"
+
+#, fuzzy
+#~ msgid "Paul Rubin, David MacKenzie, and Stuart Kemp"
+#~ msgstr "Paul Rubin og David MacKenzie"
+
+#, fuzzy
+#~ msgid "David MacKenzie and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie og Jim Meyering"
+
+#, fuzzy
+#~ msgid "Richard Mlynarik and David MacKenzie"
+#~ msgstr "Richard Stallman og David MacKenzie"
+
+#, fuzzy
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "advarsel: «sort %s» er avleggs; bruk «sort -k»"
+
+#~ msgid ""
+#~ "\n"
+#~ "In -wNUMBER, the letter `w' may be omitted.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ved -wTALL kan «w» utelates.\n"
+
+#~ msgid "invalid width option: `%s'"
+#~ msgstr "ugyldig breddespesifikasjon «%s»"
+
+#, fuzzy
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "advarsel: «sort %s» er avleggs; bruk «sort -k»"
+
+#~ msgid ""
+#~ " -c, --bytes=SIZE print first SIZE bytes\n"
+#~ " -n, --lines=NUMBER print first NUMBER lines instead of first 10\n"
+#~ msgstr ""
+#~ " -c, --bytes=STØRRELSE skriv ut første STØRRELSE bytes\n"
+#~ " -n, --lines=ANTALL skriv ut første ANTALL tegn istedet for 10\n"
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "ukjent flagg «-%c»"
+
+#, fuzzy
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "advarsel: «sort %s» er avleggs; bruk «sort -k»"
+
+#, fuzzy
+#~ msgid "Arnold Robbins and David MacKenzie"
+#~ msgstr "Paul Rubin og David MacKenzie"
+
+#, fuzzy
+#~ msgid "%s is a directory"
+#~ msgstr "%s eksisterer men er ikke en katalog"
+
+#, fuzzy
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "kan ikke opprette katalog %s"
+
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "ugyldig feltnummer for fil 1: «%s»"
+
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "ugyldig feltnummer for fil 2: «%s»"
+
+#~ msgid "too many non-option arguments"
+#~ msgstr "for mange ikke-flagg-argumenter"
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "for få ikke-flagg-argumenter"
+
+#, fuzzy
+#~ msgid "Mike Parker and David MacKenzie"
+#~ msgstr "Scott Bartram og David MacKenzie"
+
+#~ msgid "Ulrich Drepper and Scott Miller"
+#~ msgstr "Ulrich Drepper og Scott Miller"
+
+#~ msgid ""
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -b, --binary les filene i binærmodus (forvalg i DOS/Windows)\n"
+#~ " -c, --check sjekk %s-summene mot angitt liste\n"
+#~ " -t, --text les filene i tekstmodus (forvalgt)\n"
+#~ "\n"
+
+#~ msgid "file"
+#~ msgstr "fil"
+
+#~ msgid "files"
+#~ msgstr "filer"
+
+#~ msgid "checksum"
+#~ msgstr "sjekksum"
+
+#~ msgid "checksums"
+#~ msgstr "sjekksummer"
+
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "flaggene --string og --check kan ikke brukes samtidig"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "ingen filer kan spesifiseres når flagget --string brukes"
+
+#~ msgid "only one argument may be specified when using --check"
+#~ msgstr "kun ett argument kan spesifiseres ved bruk av --check"
+
+#, fuzzy
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "kan ikke endre rettigheter til %s"
+
+#, fuzzy
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "kan ikke endre rettigheter til %s"
+
+#, fuzzy
+#~ msgid "wrong number of arguments"
+#~ msgstr "for få argumenter"
+
+#, fuzzy
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "kan ikke endre rettigheter til %s"
+
+#, fuzzy
+#~ msgid "Mike Parker, David MacKenzie, and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie og Jim Meyering"
+
+#, fuzzy
+#~ msgid "invalid option `%s'"
+#~ msgstr "ugyldig breddespesifikasjon «%s»"
+
+#, fuzzy
+#~ msgid "invalid priority `%s'"
+#~ msgstr "ugyldig bredde: «%s»"
+
+#, fuzzy
+#~ msgid "cannot get priority"
+#~ msgstr "kan ikke opprette katalog %s"
+
+#, fuzzy
+#~ msgid "cannot set priority"
+#~ msgstr "kan ikke opprette katalog %s"
+
+#~ msgid "Scott Bartram and David MacKenzie"
+#~ msgstr "Scott Bartram og David MacKenzie"
+
+#~ msgid "old-style offset"
+#~ msgstr "posisjon på gammel stil"
+
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "ugyldig andre-operand i kompatibilitetsmodus «%s»"
+
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr "i kompatibilitetsmodus må de siste to argumentene være posisjoner"
+
+#~ msgid "David M. Ihnat and David MacKenzie"
+#~ msgstr "David M. Ihnat og David MacKenzie"
+
+#, fuzzy
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "tabulatorstørrelse inneholder et ugyldig tegn"
+
+#, fuzzy
+#~ msgid "`%s' is not a directory"
+#~ msgstr "%s eksisterer men er ikke en katalog"
+
+#~ msgid "Pete TerMaat and Roland Huebner"
+#~ msgstr "Pete TerMaat og Roland Huebner"
+
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "«--pages» ugyldig område med sidenummer: «%s»"
+
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "«--pages» ugyldig start-sidenummer: «%s»"
+
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "«--pages» ugyldig slutt-sidenummer: «%s»"
+
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr "«--pages» start-sidenummeret er større enn slutt-sidenummeret"
+
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "«--columns=SPALTER» ugyldig antall kolonner: «%s»"
+
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%b %e %H:%M %Y"
+
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr "start-sidenummeret er større enn totalt antall sider: «%d»"
+
+#~ msgid "Page %d"
+#~ msgstr "Side %d"
+
+#, fuzzy
+#~ msgid "David MacKenzie and Richard Mlynarik"
+#~ msgstr "David Ihnat, David MacKenzie og Jim Meyering"
+
+#, fuzzy
+#~ msgid "\\%c: invalid escape"
+#~ msgstr "%s: ugyldig mønster"
+
+#~ msgid ""
+#~ "This program is distributed in the hope that it will be useful,\n"
+#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+#~ "GNU General Public License for more details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Dette programmet er distribuert i ønsket om at det vil være nyttig,\n"
+#~ "men UTEN NOEN GARANTI, til og med uten noen implisert garanti om\n"
+#~ "SALGBARHET eller EGNETHET TIL NOEN SPESIELL BRUK. Se GNU General\n"
+#~ "Public License for mer detaljer.\n"
+
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+#~ msgstr ""
+#~ "Du skulle ha mottatt en kopi av GNU General Public License\n"
+#~ "sammen med dette programmet. Hvis ikke, skriv til Free Software "
+#~ "Foundation,\n"
+#~ "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "kan ikke skifte til katalog, %s"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "kan ikke skifte til katalog, %s"
+
+#, fuzzy
+#~ msgid "Jim Meyering and Paul Eggert"
+#~ msgstr "Mike Haertel og Paul Eggert"
+
+#~ msgid "Mike Haertel and Paul Eggert"
+#~ msgstr "Mike Haertel og Paul Eggert"
+
+#, fuzzy
+#~ msgid "`-%d' option is obsolete; use `-l %d'"
+#~ msgstr "advarsel: «sort %s» er avleggs; bruk «sort -k»"
+
+#~ msgid "Kayvan Aghaiepour and David MacKenzie"
+#~ msgstr "Kayvan Aghaiepour og David MacKenzie"
+
+#~ msgid "Jay Lepreau and David MacKenzie"
+#~ msgstr "Jay Lepreau og David MacKenzie"
+
+#~ msgid "stdin: read error"
+#~ msgstr "stdin: lesefeil"
+
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "%c: ugyldig suffiks-tegn i avleggs flagg"
+
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "for mange argumenter. Når tails gamle flagg-syntaks brukes (%s)\n"
+#~ "kan det ikke være mer enn ett filargument. Bruk det tilsvarende -n "
+#~ "eller\n"
+#~ "-c-flagget isteden."
+
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "Advarsel: det er ikke portabelt å bruke to eller flere filargumenter med\n"
+#~ "tails gamle falggsyntaks (%s). Bruk det tilsvarende -n eller -c-\n"
+#~ "flagget isteden."
+
+#, fuzzy
+#~ msgid "`%s' option is obsolete; use `%s-%c %.*s'"
+#~ msgstr "advarsel: «sort %s» er avleggs; bruk «sort -k»"
+
+#~ msgid "%s: is so large that it is not representable"
+#~ msgstr "%s: er så stor at den ikke kan representeres"
+
+#~ msgid "%s is larger than the maximum file size on this system"
+#~ msgstr "%s er større enn den maksimale filstørrelsen på dette systemet"
+
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr "%s: ugyldig maksimum antall etterfølgende endringer i størrelse"
+
+#, fuzzy
+#~ msgid "Mike Parker, Richard M. Stallman, and David MacKenzie"
+#~ msgstr "Richard Stallman og David MacKenzie"
+
+#, fuzzy
+#~ msgid "too many arguments\n"
+#~ msgstr "for mange argumenter"
+
+#, fuzzy
+#~ msgid "file arguments missing"
+#~ msgstr "for få argumenter"
+
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "ugyldig backslash-beskyttelse «\\%c»"
+
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr ""
+#~ "to strenger må være gitt ved både sletting og sammenklemming av "
+#~ "gjentagelser"
+
+#~ msgid "at least one string must be given when squeezing repeats"
+#~ msgstr "minst en streng må være gitt ved sammenklemming av gjentagelser"
+
+#~ msgid ""
+#~ "invalid identity mapping; when translating, any [:lower:] or [:upper:]\n"
+#~ "construct in string1 must be aligned with a corresponding construct\n"
+#~ "([:upper:] or [:lower:], respectively) in string2"
+#~ msgstr ""
+#~ "ugyldig identidetsmapping; ved oversetting må evt. [:lower:]- eller\n"
+#~ "[:upper:]-konstruksjoner i streng1 være plassert i henhold til en\n"
+#~ "tilsvarende konstruksjon (henholdsvis [:upper:] eller [:lower:]) i\n"
+#~ "streng2"
+
+#~ msgid "only one argument may be specified"
+#~ msgstr "kun ett argument kan spesifiseres"
+
+#, fuzzy
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr "advarsel: «sort %s» er avleggs; bruk «sort -k»"
+
+# c-format
+#, fuzzy
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "advarsel: «uniq %s» er avleggs; bruk «uniq -s %s» istedet"
+
+#, fuzzy
+#~ msgid "Joseph Arceneaux and David MacKenzie"
+#~ msgstr "Jay Lepreau og David MacKenzie"
+
+#~ msgid "Paul Rubin and David MacKenzie"
+#~ msgstr "Paul Rubin og David MacKenzie"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "(obsolete) Instead of -t NUMBER or -t LIST, -NUMBER or -LIST may be "
+#~ "used.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Istedet for -t TALL eller -t LISTE kan -TALL eller -LISTE brukes.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "(obsolete) If -VALUE is used as first OPTION, same as -c VALUE when one "
+#~ "of\n"
+#~ "multipliers bkm follows concatenated, else same as -n VALUE.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "STØRRELSE kan ha en multiplikator-endelse: b for 512, k for 1K, m for "
+#~ "1Meg.\n"
+#~ "Hvis -VERDI brukes som første FLAGG, leses det som -c VERDI hvis en av\n"
+#~ "multiplikatorene bkm er bakerst, ellers leses -n VERDI.\n"
+
+#, fuzzy
+#~ msgid "warning: `od -s' is obsolete; use `od --strings'"
+#~ msgstr "advarsel: «sort %s» er avleggs; bruk «sort -k»"
+
+#, fuzzy
+#~ msgid "warning: `od -w' is obsolete; use `od --width'"
+#~ msgstr "advarsel: «sort %s» er avleggs; bruk «sort -k»"
+
+#, fuzzy
+#~ msgid "warning: `pr -S' is obsolete; use `pr --sep-string'"
+#~ msgstr "advarsel: «sort %s» er avleggs; bruk «sort -k»"
+
+#~ msgid ""
+#~ " +POS1 [-POS2] start a key at POS1, end it before POS2 "
+#~ "(origin 0)\n"
+#~ " Warning: this option is obsolete\n"
+#~ msgstr ""
+#~ " +POS1 [-POS2] start en nøkkel ved POS1, avslutt før POS2 "
+#~ "(fra 0)\n"
+#~ " Advarsel: dette flagget er avleggs\n"
+
+#, fuzzy
+#~ msgid "warning: `sort -y' is obsolete; omit `-y'"
+#~ msgstr "advarsel: «sort %s» er avleggs; bruk «sort -k»"
+
+#~ msgid ""
+#~ "A first OPTION of -VALUE\n"
+#~ "is treated like -n VALUE unless VALUE has one of the [bkm] suffix\n"
+#~ "multipliers, in which case it is treated like -c VALUE.\n"
+#~ msgstr ""
+#~ "Et første FLAGG som -VERDI\n"
+#~ "behandles som -n VERDI med mindre VERDI har en av [bkm]-endingene,\n"
+#~ "isåfall behandles det som -v VERDI.\n"
+
+#~ msgid ""
+#~ "A first option of +VALUE is treated like -+VALUE, but this usage is "
+#~ "obsolete\n"
+#~ "and support for it will be withdrawn.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Et første flagg som +VERDI behandles som -+VERDI, men denne anvendelsen "
+#~ "er\n"
+#~ "avleggs og støtte for den vil bli trukket tilbake.\n"
+
+#~ msgid "warning: `tail %s' is obsolete; use -n or -c instead"
+#~ msgstr "advarsel: «tail %s» er avleggs; bruker -n eller -c istedet"
+
+#, fuzzy
+#~ msgid ""
+#~ " -N (obsolete) same as -f N\n"
+#~ " +N (obsolete) same as -s N\n"
+#~ msgstr ""
+#~ " +N samme som -s N (avleggs, vil bli tilbaketrukket)\n"
+
+# c-format
+#~ msgid "warning: `uniq %s' is obsolete; use `uniq -s %s' instead"
+#~ msgstr "advarsel: «uniq %s» er avleggs; bruk «uniq -s %s» istedet"
diff --git a/po/nl.gmo b/po/nl.gmo
new file mode 100644
index 0000000..afd21af
--- /dev/null
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
new file mode 100644
index 0000000..2dc5e9c
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,9969 @@
+# translation of coreutils-6.8.po to Dutch
+# Dutch messages for GNU coreutils
+# Copyright (C) 1996, 2000, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+#
+# Freek de Kruijf <f.de.kruijf@hetnet.nl>, 2004, 2005, 2006, 2007.
+# Ivo Timmermans <ivo@o2w.nl>, 2000.
+# Erick Branderhorst <branderh@debian.org>, 1996.
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 6.8\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2007-03-19 10:54+0100\n"
+"Last-Translator: Freek de Kruijf <f.de.kruijf@hetnet.nl>\n"
+"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.2\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, c-format
+msgid "preserving permissions for %s"
+msgstr "bezig toegangsrechten van %s te handhaven"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "bezig toegangsrechten van %s in te stellen"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "ongeldig argument %s voor %s"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argument %s is niet eenduidig voor %s"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Geldige argumenten zijn:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "fout bij schrijven"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Onbekende systeemfout"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "kan stat niet toepassen op %s"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "leeg normaal bestand"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "normaal bestand"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "map"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "speciaal blokgeörienteerd bestand"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "speciaal karaktergeörienteerd bestand"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "fifo (eerst-in, eerst-uit)"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "symbolische koppeling"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "socket"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "wachtrij met berichten"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "semafoor"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "gedeeld geheugenobject"
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr "getypeerd geheugenobject"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "een maf bestand"
+
+#: lib/gai_strerror.c:44
+msgid "Address family for hostname not supported"
+msgstr "Adresfamilie voor hostnaam worden niet ondersteund"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr "Tijdelijke fout in naamresolutie"
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr "Foute waarde voor ai_vlaggen"
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr "Onherstelbare fout in naamresolutie"
+
+#: lib/gai_strerror.c:48
+msgid "ai_family not supported"
+msgstr "ai_familie niet ondersteund"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr "Fout bij geheugenreservering"
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr "Aan hostnaam is geen adres verbonden"
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr "Naam van service is onbekend"
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr "Servicenaam niet ondersteund voor ai_socktype"
+
+#: lib/gai_strerror.c:53
+msgid "ai_socktype not supported"
+msgstr "ai_socktype niet ondersteund"
+
+#: lib/gai_strerror.c:54
+msgid "System error"
+msgstr "Systeemfout"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr "Buffer voor argument te klein"
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr "Bezig met verwerken van opdracht"
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr "Opdracht afgebroken"
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr "Opdracht niet afgebroken"
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr "Alle opdrachten verwerkt"
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr "Onderbroken door een signaal"
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr "Parametertekst niet juist gecodeerd"
+
+#: lib/gai_strerror.c:74
+msgid "Unknown error"
+msgstr "Onbekende fout"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: optie `%s' is niet eenduidig\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: optie `--%s' staat geen argument toe\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: optie `%c%s' staat geen argument toe\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: optie `%s' vereist een argument\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: niet-herkende optie `--%s'\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: niet-herkende optie `%c%s'\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: ongeldige optie -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ongeldige optie -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: optie vereist een argument -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: optie `-W %s' is niet eenduidig\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: optie `-W %s' staat geen argument toe\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "blokgrootte"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "kan de toegangsrechten van %s niet veranderen"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "kan map %s niet aanmaken"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "geen geheugen meer beschikbaar"
+
+#: lib/openat-die.c:34
+#, c-format
+msgid "unable to record current working directory"
+msgstr "niet in staat de huidige werkmap vast te leggen"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "kan niet terugkeren naar de initiële werkmap"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "'"
+
+#: lib/randread.c:125
+#, c-format
+msgid "%s: end of file"
+msgstr "%s: einde van bestand"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr "Succes"
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr "Geen overeenkomst"
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr "Ongeldige reguliere expressie"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr "Ongeldig ordening-teken"
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr "Ongeldige tekenklassenaam"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr "Achtergevoegde backslash"
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr "Ongeldige terugverwijzing"
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr "Geen bijbehorende [ of [^"
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr "Geen bijbehorende ( of \\("
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr "Geen bijbehorende \\{"
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr "Ongeldige inhoud tussen \\{\\}"
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr "Ongeldig einde van reeks"
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr "Geen geheugen meer beschikbaar"
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr "Ongeldige voorgaande reguliere expressie"
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr "Reguliere expressie is niet af"
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr "Reguliere expressie is te groot"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr "Geen bijbehorende ) or \\)"
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr "Geen voorgaande reguliere expressie"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr "het is gevaarlijk om op %s recursief te werken"
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr "het is gevaarlijk om op %s recursief te werken (zelfde als %s)"
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr "gebruik --no-preserve-root om hier veilig omheen te komen"
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[yY]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "de iconv-functie is niet bruikbaar"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "de iconv-functie is niet beschikbaar"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "teken ligt buiten het toegestane bereik"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "kan U+%04X niet converteren naar de lokale tekenset"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "kan U+%04X niet converteren naar de lokale tekenset: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "ongeldige gebruiker"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "ongeldige groep"
+
+#: lib/userspec.c:109
+msgid "invalid spec"
+msgstr "ongeldige specificatie"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr "©"
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Dit is vrije programmatuur. Het mag gecopiëerd worden onder de voorwaarden\n"
+"in de GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"Er is GEEN GARANTIE, voor zover de wet dit toestaat.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Geschreven door %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Geschreven door %s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Geschreven door %s, %s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Geschreven door %s, %s, %s\n"
+"en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Geschreven door %s, %s, %s,\n"
+"%s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Geschreven door %s, %s, %s,\n"
+"%s, %s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Geschreven door %s, %s, %s,\n"
+"%s, %s, %s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Geschreven door %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Geschreven door %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s en %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Geschreven door %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s en anderen.\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "ongeldig argument: %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "mislukte vergelijking van tekenreeksen"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Zet LC_ALL='C' om het probleem te omzeilen."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "De te vergelijken tekenreeksen waren %s en %s."
+
+#: lib/xmemxfrm.c:55
+#, c-format
+msgid "string transformation failed"
+msgstr "mislukte transformatie van tekenreeks"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr "De niet getransformeerde tekenreeks was %s."
+
+#: lib/xstrtol.h:62
+#, c-format
+msgid "invalid %s `%s'"
+msgstr "ongeldige %s `%s'"
+
+#: lib/xstrtol.h:69
+#, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "ongeldig teken na %s in `%s'"
+
+#: lib/xstrtol.h:74
+#, c-format
+msgid "%s `%s' too large"
+msgstr "%s `%s' is te groot"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Probeer `%s --help' voor meer informatie.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+"Gebruik: %s [OPTIE] [BESTAND]...\n"
+"Codeer of decodeer BESTAND, of standaard invoer, naar standaard uitvoer "
+"volgens base64.\n"
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+" -w, --wrap=KOLM Ga naar volgende regel na KOLM gecodeerde tekens "
+"(standaard 76).\n"
+" Gebruik 0 om niet naar een volgende regel te gaan.\n"
+"\n"
+" -d, --decode Decodeer gegevens.\n"
+" -i, --ignore-garbage Bij decoderen, negeer niet-alfabet tekens.\n"
+"\n"
+
+#: src/base64.c:77
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+" --help Toon deze help en beëindig programma\n"
+" --version Toon versie-informatie en beëindig programma\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Zonder BESTAND, of als BESTAND - is, lees dan van standaardinvoer.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+"\n"
+"De gegevens zijn gecodeerd in het base64-alfabet zoals beschreven in RFC "
+"3548.\n"
+"Bij decodering mag de invoer naast de formele karakters van het base64-"
+"alfabet\n"
+"ook nog nieuweregel-karakters bevatten. Met --ignore-garbage kunt u "
+"proberen\n"
+"over andere dan deze karakters in de gecodeerde stroom bytes te stappen.\n"
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Stuur foutrapportages aan <%s>;\n"
+"Meld fouten in de vertaling aan <vertaling@vrijschrift.nl>.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "fout bij lezen"
+
+#: src/base64.c:234
+#, c-format
+msgid "invalid input"
+msgstr "ongeldige invoer"
+
+#: src/base64.c:271
+#, c-format
+msgid "invalid wrap size: %s"
+msgstr "ongeldige grootte van regellengte waarna nieuwe-regel volgt: %s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr "overtollige operand %s"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "bezig standaardinvoer te sluiten"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik: %s NAAM [ACHTERVOEGSEL]\n"
+" of: %s OPTIE\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Toon NAAM zonder de voorafgaande mapcomponenten.\n"
+"Indien gespecificeerd, verwijder ook het ACHTERVOEGSEL.\n"
+"\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+"\n"
+"Voorbeelden:\n"
+" %s /usr/bin/sort Uitvoer \"sort\".\n"
+" %s include/stdio.h .h Uitvoer \"stdio\".\n"
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, c-format
+msgid "missing operand"
+msgstr "ontbrekende operand"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Gebruik: %s [OPTIE] [BESTAND]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"Stuur BESTAND(en) of standaardinvoer, als één bestand naar "
+"standaarduitvoer.\n"
+"\n"
+" -A, --show-all zelfde als -vET\n"
+" -b, --number-nonblank aantal niet-lege uitvoerregels\n"
+" -e zelfde als -vE\n"
+" -E, --show-ends geef een $ aan het einde van alle regels\n"
+" -n, --number nummer alle uitvoerregels\n"
+" -s, --squeeze-blank nooit meer dan één lege regel\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t zelfde als -vT\n"
+" -T, --show-tabs geef TAB-tekens weer met ^I\n"
+" -u (wordt genegeerd)\n"
+" -v, --show-nonprinting gebruik ^ en M- notatie, behalve voor LFD en TAB\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+"\n"
+"Voorbeelden:\n"
+" %s f - g Uitvoer f's inhoud, dan standaardinvoer, dan g's inhoud.\n"
+" %s Copiëer standaardinvoer naar standaarduitvoer.\n"
+
+#: src/cat.c:333
+#, c-format
+msgid "cannot do ioctl on %s"
+msgstr "kan geen ioctl doen op `%s'"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "standaarduitvoer"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: invoerbestand is uitvoerbestand"
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "ongeldige groep %s"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Gebruik: %s [OPTIE]... GROEP BESTAND...\n"
+" of: %s [OPTIE]... --reference=RBESTAND BESTAND...\n"
+
+#: src/chgrp.c:117
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Verander de groep van elk BESTAND naar GROEP.\n"
+"Met --reference, verander de groep van elk BESTAND naar dat van RBESTAND.\n"
+"\n"
+" -c, --changes zelfde als verbose maar geef alleen een melding als "
+"er\n"
+" iets is veranderd\n"
+" --dereference toepassen op de referentie van elke symbolische "
+"koppeling\n"
+" en niet op de symbolische koppeling zelf "
+"(standaard)\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference toepassen op elke symbolische koppeling in plaats "
+"van op het\n"
+" gerefereerde bestand (alleen bruikbaar op systemen "
+"die\n"
+" toestaan de eigenaar van een symbolische koppeling "
+"te wijzigen)\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root behandel `/' niet speciaal (de standaard)\n"
+" --preserve-root de `/' niet recursief behandelen\n"
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet onderdruk de meeste foutboodschappen\n"
+" --reference=RBESTAND gebruik de groep van RBESTAND in plaats van\n"
+" een GROEPswaarde te specificeren\n"
+" -R, --recursive behandel bestanden en mappen recursief\n"
+" -v, --verbose geef een melding voor alle behandelde bestanden\n"
+"\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+"De volgende opties veranderen de wijze van het doorlopen van de hiërarchie "
+"als\n"
+"de -R optie ook aanwezig is. Als er meer dan één aanwezig is dan is alleen\n"
+"de laatste van toepassing.\n"
+"\n"
+" -H als een argument op de commandoregel een "
+"symbolische\n"
+" koppeling naar een map is, loop door deze map\n"
+" -L volg iedere symbolische koppeling tot een map\n"
+" -P volg geen symbolische koppelingen (de standaard)\n"
+"\n"
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+"\n"
+"Voorbeelden:\n"
+" %s staff /u Verander de groep van /u naar \"staff\".\n"
+" %s -hR staff /u Verander de groep van /u en subbestanden naar \"staff\".\n"
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr "-R --dereference vereist of -H of -L"
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, c-format
+msgid "missing operand after %s"
+msgstr "ontbrekende operand na %s"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "kan de attributen van %s niet verkrijgen"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "bezig met het verkrijgen van de nieuwe attributen van %s"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "noch de symbolische koppeling %s noch de referent is veranderd\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "modus van %s veranderd in %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "kan modus van %s niet in %04lo (%s) veranderen\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "modus van %s blijft %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "kan geen toegang krijgen tot %s"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "kan map %s niet lezen"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "bezig de toegangsrechten van %s te veranderen"
+
+#: src/chmod.c:286
+#, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "%s: nieuwe toegangsrechten zijn %s, niet %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr "fout bij fts_read"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Gebruik: %s [OPTIE]... MODUS[,MODUS]... BESTAND\n"
+" of: %s [OPTIE]... OCTALE-MODUS BESTAND...\n"
+" of: %s [OPTIE]... --reference=RBESTAND BESTAND...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+"Verander de modus van elk BESTAND naar MODUS.\n"
+"\n"
+" -c, --changes zoals verbose maar alleen een melding als er iets "
+"veranderd is\n"
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root behandel `/' niet speciaal (de standaard)\n"
+" --preserve-root de `/' niet recursief behandelen\n"
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+" -f, --silent, --quiet onderdruk vrijwel alle foutmeldingen\n"
+" -v, --verbose toon informatie voor elk behandeld bestand\n"
+" --reference=RBESTAND gebruik de modus van RBESTAND in plaats van een\n"
+" MODUS waarde\n"
+" -R, --recursive verander bestanden en mappen recursief\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+"\n"
+"Iedere MODUS is van de vorm `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr "kan modus en --reference opties niet combineren"
+
+#: src/chmod.c:510
+#, c-format
+msgid "invalid mode: %s"
+msgstr "ongeldige modus: %s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "de eigenaar van %s is veranderd naar %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "de groep van %s is veranderd naar %s\n"
+
+#: src/chown-core.c:149
+#, c-format
+msgid "no change to ownership of %s\n"
+msgstr "de eigenaar van %s is niet veranderd\n"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "kan de eigenaar van %s niet veranderen naar %s\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "kan de groep van %s niet naar %s veranderen\n"
+
+#: src/chown-core.c:154
+#, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "kan de eigenaar van %s niet veranderen\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "de eigenaar van %s blijft %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "groep van %s blijft %s\n"
+
+#: src/chown-core.c:159
+#, c-format
+msgid "ownership of %s retained\n"
+msgstr "de eigenaar van %s blijft dezelfde\n"
+
+#: src/chown-core.c:344
+#, c-format
+msgid "cannot dereference %s"
+msgstr "kan koppeling(en) %s niet volgen"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "bezig met het veranderen van de eigenaar van %s"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "bezig met het veranderen van de groep van %s"
+
+#: src/chown.c:93
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Gebruik: %s [OPTIE]... [EIGENAAR][:[GROEP]] BESTAND...\n"
+" of: %s [OPTIE]... --reference=RBESTAND BESTAND...\n"
+
+#: src/chown.c:98
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Verander de eigenaar en/of groep van ieder BESTAND naar EIGENAAR en/of "
+"GROEP.\n"
+"Met --reference, verander de eigenaar en groep van elk BESTAND naar die van "
+"RBESTAND.\n"
+"\n"
+" -c, --changes zoals verbose maar geef alleen een melding als er "
+"echt iets\n"
+" veranderd is\n"
+" --dereference toepassen op de referentie van elke symbolische \n"
+" koppeling en niet op de symbolische koppeling "
+"zelf\n"
+" (dit is de standaard)\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=HUIDIGE_EIGENAAR:HUIDIGE_GROEP\n"
+" verander de eigenaar en/of groep van ieder bestand "
+"alleen als\n"
+" de huidige eigenaar en/of groep overeenkomt met de "
+"hier\n"
+" gespecificeerde. Eén van beide mag weggelaten, dan "
+"is een\n"
+" overeenkomst met het weggelaten deel niet vereist.\n"
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet onderdruk vrijwel alle foutmeldingen\n"
+" --reference=RBESTAND gebruik de eigenaar en groep van RBESTAND in "
+"plaats van\n"
+" het specificeren hiervan\n"
+" -R, --recursive verander bestanden en mappen recursief\n"
+" -v, --verbose toon informatie voor elk behandeld bestand\n"
+"\n"
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"De eigenaar is onveranderd als deze ontbreekt. De groep is onveranderd als "
+"deze\n"
+"ontbreekt, behalve als de inlog groep impliciet is door een `:' die op een "
+"symbolische\n"
+"EIGENAAR volgt. EIGENAAR en GROEP mogen numeriek zijn zowel als "
+"symbolisch.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+"\n"
+"Voorbeelden:\n"
+" %s root /u Verander de eigenaar van /u naar \"root\".\n"
+" %s root:staff /u Evenzo, maar verander ook de groep naar \"staff\".\n"
+" %s -hR root /u Verander de eigenaar van /u en subbestanden naar \"root"
+"\".\n"
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik: %s NIEUWE_ROOT [COMMANDO...]]\n"
+" of: %s OPTIE\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"Voer COMMANDO uit met als basismap NIEUWE_ROOT.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"Als geen commando is gegeven, voer dan ``${SHELL} -i'' (standaard: /bin/sh) "
+"uit.\n"
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "kan de basismap niet op %s zetten"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "kan de map niet wijzigen naar de basismap"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "kan het commando %s niet uitvoeren"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: bestand is te lang"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Gebruik: %s [BESTAND]...\n"
+" of: %s [OPTIE]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"Toon de CRC-controletelling en het aantal bytes van ieder BESTAND.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Gebruik: %s [OPTIE]... BESTAND1 BESTAND2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr ""
+"Vergelijk de gesorteerde bestanden BESTAND1 en BESTAND2 regel voor regel.\n"
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+"\n"
+"Zonder opties, toon drie-kolommen. Kolom een bevat\n"
+"regels uniek in BESTAND1, kolom twee bevat regels uniek in BESTAND2,\n"
+"en kolom drie bevat regels die gelijk zijn in beide bestanden.\n"
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"\n"
+" -1 onderdruk regels die alleen in BESTAND1 voorkomen\n"
+" -2 onderdruk regels die alleen in BESTAND2 voorkomen\n"
+" -3 onderdruk regels die in beide bestanden voorkomen\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "handhaven van de eigenaar van %s mislukt"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr "kan bestand %s niet vinden"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "handhaven van het auteurschap van %s mislukt"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "kan %s niet openen om te lezen"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "kan fstat op %s niet toepassen"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr ""
+"bestand %s overgeslagen omdat het is vervangen toen het werd gekopieerd"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "kan %s niet verwijderen"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "%s verwijderd\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "kan het normale bestand %s niet aanmaken"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "bezig met lezen van %s"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "kan lseek niet toepassen op %s"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "bezig met schrijven van %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "tijden van %s worden gehandhaafd"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "%s wordt gesloten"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: bezig met overschrijven van %s, ongeacht modus %04lo? "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: %s overschrijven? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (reservekopie: %s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "map %s wordt overgeslagen"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "waarschuwing: bronbestand %s komt meer dan één keer voor"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s en %s zijn hetzelfde bestand"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "kan een niet-map %s niet overschrijven met de map %s"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "kan de zojuist gemaakte map %s niet overschrijven met %s"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "kan de map %s niet overschrijven met een niet-map"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "kan de map niet verplaatsten naar een niet-map: %s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "een reservekopie van %s zou de bron vernietigen; %s niet verplaatst"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "een reservekopie van %s zou de bron vernietigen; %s niet gekopieerd"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "kan geen reservekopie maken van %s"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "kan een map niet kopiëren, %s, gaat naar zichzelf, %s"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "kan geen harde koppeling %s maken naar de map %s"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "kan geen harde koppeling %s maken naar %s"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "kan %s niet verplaatsten naar een ondermap van zichzelf, %s"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "kan %s niet verplaatsten naar %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+"verplaatsing tussen apparatuur mislukt: %s naar %s; het doel kan niet "
+"verwijderd worden"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "kan cyclische symbolische koppeling niet kopiëren %s"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr "%s: kan relatieve symbolische koppelingen alleen in huidige map maken"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "kan symbolische koppeling %s naar %s niet aanmaken"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "kan koppeling %s niet aanmaken"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "kan fifo (eerst-in eerst-uit) %s niet aanmaken"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "kan het speciale bestand %s niet aanmaken"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "kan geen leesopdracht doen op de symbolische koppeling %s"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "kan de symbolische koppeling %s niet aanmaken"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s heeft onbekend bestandstype"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "kan %s niet uit reservekopie halen"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (reservekopie ophalen)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Gebruik: %s [OPTIE]... [-T] BRON BESTEMMING\n"
+" of: %s [OPTIE]... BRON... MAP\n"
+" of: %s [OPTIE]... -t MAP BRON...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Kopiëer BRON naar BESTEMMING, of meervoudige BRON(nen) naar MAP.\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Verplichte argumenten bij lange opties zijn ook verplicht bij korte opties.\n"
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive zelfde als -dpPR\n"
+" --backup[=CONTROL] maak een reservekopie van elk bestaand "
+"bestemmingsbestand\n"
+" -b zoals --backup maar accepteert geen argument\n"
+" --copy-contents kopiëert de inhoud van speciale bestanden "
+"indien recursief\n"
+" -d zelfde als --no-dereference --preserve=link\n"
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" -f, --force als een bestaand bestemmingsbestand niet "
+"geopend\n"
+" kan worden, verwijder het dan en probeer "
+"opnieuw\n"
+" -i, --interactive vraag toestemming voor het overschrijven\n"
+" -H volg de symbolische koppelingen in de "
+"commandoregel\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+" -l, --link maak koppelingen naar bestanden in plaats van "
+"te kopiëren\n"
+" -L, --dereference volg altijd symbolische koppelingen\n"
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr " -P, --no-dereference volg nooit symbolische koppelingen\n"
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -p zelfde als --preserve=mode,ownership,"
+"timestamps\n"
+" --preserve[=ATTR_LIST] handhaaf de gespecificeerde attributen "
+"(standaard:\n"
+" mode,ownership,timestamps), indien "
+"mogelijk\n"
+" additionele attributen: links, all\n"
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=ATTR_LIST handhaaf de gespecificeerde attributen niet\n"
+" --parents gebruik volledige naam van bronbestand onder "
+"MAP\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive kopieer mappen recursief\n"
+" --remove-destination verwijder ieder bestaand bestemmingsbestand "
+"voordat\n"
+" een poging gedaan wordt het te openen (in\n"
+" contrast met --force)\n"
+
+#: src/cp.c:205
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --sparse=WHEN controle over het aanmaken van schaarse "
+"bestanden\n"
+" --strip-trailing-slashes verwijder schuine strepen achteraan in elk "
+"BRON-\n"
+" argument\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link maak een symbolische koppeling in plaats van "
+"kopiëren\n"
+" -S, --suffix=SUFFIX vervang het gebruikelijke achtervoegsel voor\n"
+" reservekopieën\n"
+" -t, --target-directory=MAP verplaats alle BRON-argumenten naar MAP\n"
+" -T, --no-target-directory behandel BESTEMMING als een normaal bestand\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update kopiëer alleen als het BRONbestand nieuwer "
+"is\n"
+" dan het bestemmingsbestand of wanneer dat\n"
+" bestand niet bestaat\n"
+" -v, --verbose laat zien wat er gedaan wordt\n"
+" -x, --one-file-system blijf binnen dit bestandssysteem\n"
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"Standaard worden schaarse BRONbestanden gedetecteerd door een ruwe\n"
+"zoekregel en het overeenkomstige BESTEMMINGsbestand wordt ook schaars\n"
+"gemaakt. Dit is het gedrag geselecteerd door --sparse=auto. Specificeer\n"
+"--sparse=always om een schaars BESTEMMINGsbestand te maken wanneer\n"
+"het BRONbestand een voldoend lange reeks nul-bytes bevat. Gebruik\n"
+"--sparse=never om schaarse bestanden te voorkomen.\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Het reservekopie-achtervoegsel is `~', tenzij ingesteld met --suffix of\n"
+"SIMPLE_BACKUP_SUFFIX. De versie-controle mag worden ingesteld met de optie "
+"--backup\n"
+"of door de omgevingsvariabele VERSION_CONTROL. Dit zijn de waarden:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off maak nooit reservekopieën (zelfs niet met --backup)\n"
+" numbered, t maak genummerde reservekopieën\n"
+" existing, nil maak genummerde reservekopieën als er reeds genummerde \n"
+" reserve-kopieën bestaan, anders simpele\n"
+" simple, never maak altijd simpele reservekopieën\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Als een speciaal geval, kan cp een reservekopie maken van BRON als de\n"
+"opties `force' en `backup' gegeven zijn en BRON en BESTEMMING dezelfde\n"
+"zijn voor een bestaand gewoon bestand.\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "kopiëren van de tijden van %s mislukt"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "kan de toegangsrechten van %s niet handhaven"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "kan map %s niet aanmaken"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s bestaat maar is geen map"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "bezig toegang te zoeken tot %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, c-format
+msgid "missing file operand"
+msgstr "de operand voor bestand ontbreekt"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, c-format
+msgid "missing destination file operand after %s"
+msgstr "de operand voor het bestemmingsbestand ontbreekt na %s"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+"De combinatie van --target-directory (-t) en --no-target-directory (-T) kan "
+"niet"
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, c-format
+msgid "target %s is not a directory"
+msgstr "doel %s is geen map"
+
+#: src/cp.c:697
+#, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "met --parents moet de bestemming een map zijn"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr "de optie --reply is verouderd; gebruik -i of -f"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, c-format
+msgid "multiple target directories specified"
+msgstr "meer dan één bestemmingsmap gespecificeerd"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "kan geen harde èn symbolische koppelingen maken"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "type reservekopie"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "invoer verdween"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: regelnummer buiten bereik"
+
+#: src/csplit.c:709
+#, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: %s: regelnummer buiten bereik"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr " tijdens herhaling %s\n"
+
+#: src/csplit.c:755
+#, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: %s: geen overeenkomst gevonden"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "fout in zoeken met reguliere expressie"
+
+#: src/csplit.c:984
+#, c-format
+msgid "write error for %s"
+msgstr "fout bij schrijven naar %s"
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: geheel getal verwacht na scheidingsteken"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: `}' is verplicht bij een herhalingsaantal"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: geheel getal verplicht tussen `{' en `}'"
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: afsluitend scheidingsteken `%c' ontbreekt"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: ongeldige reguliere expressie: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: ongeldig patroon"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: regelnummer moet groter zijn dan nul"
+
+#: src/csplit.c:1172
+#, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "regelnummer %s is kleiner dan het voorgaande regelnummer, %s"
+
+#: src/csplit.c:1178
+#, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr ""
+"waarschuwing: regelnummer %s is hetzelfde als het voorgaande regelnummer"
+
+#: src/csplit.c:1231
+#, c-format
+msgid "invalid format width"
+msgstr "ongeldige opmaakbreedte"
+
+#: src/csplit.c:1252
+#, c-format
+msgid "invalid format precision"
+msgstr "ongeldige opmaakprecisie"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "specificatie voor conversie ontbreekt in achtervoegsel"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "specificatie voor conversie in het achtervoegsel is ongeldig: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "specificatie voor conversie in het achtervoegsel is ongeldig: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "te veel specificaties voor %%-conversie in achtervoegsel"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "ontbrekende specificatie voor %%-conversie in achtervoegsel"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: ongeldig getal"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Gebruik: %s [OPTIE]... BESTAND PATROON...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"Schrijf gedeelten van BESTAND gescheiden door PATROON(en) naar de\n"
+"bestanden 'xx00', 'xx01',..., en schrijf het aantal bytes van elk\n"
+"gedeelte naar standaarduitvoer.\n"
+"\n"
+
+#: src/csplit.c:1486
+#, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=OPMAAK gebruik sprintf OPMAAK in plaats van %02d\n"
+" -f, --prefix=PREFIX gebruik voorvoegsel PREFIX in plaats van `xx'\n"
+" -k, --keep-files verwijder uitvoerbestanden niet bij fouten\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=CIJFERS gebruik het gespecificeerde aantal cijfers in "
+"plaats van 2\n"
+" -s, --quiet, --silent toon de lengte van de uitvoerbestanden niet\n"
+" -z, --elide-empty-files verwijder lege uitvoerbestanden\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"Lees van standaardinvoer als BESTAND - is. Elk PATROON mag zijn:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" INTEGER kopiëer tot, niet tot en met, het gespecificeerde "
+"regelnummer\n"
+" /REGEXP/[OFFSET] kopiëer tot, niet tot en met, de overeenkomende regel\n"
+" %REGEXP%[OFFSET] sla over tot, niet tot en met, de overeenkomende regel\n"
+" {INTEGER} herhaal het eerdere patroon het gespecificeerde aantal "
+"keren\n"
+" {*} herhaal het eerdere patroon zoveel keren als mogelijk "
+"is\n"
+"\n"
+"Een regel-OFFSET bevat een `+' of `-' gevolgd door een positief geheel "
+"getal.\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Gebruik: %s [OPTIE]... [BESTAND]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"Stuur de geselecteerde delen van regels uit elk BESTAND naar "
+"standaarduitvoer.\n"
+"\n"
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=LIJST toon alleen deze bytes\n"
+" -c, --characters=LIJST toon alleen deze karakters\n"
+" -d, --delimiter=DELIM gebruik DELIM als veldscheidingsteken in plaats "
+"van een TAB\n"
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=LIJST toon alleen deze velden; ook toon alle regels\n"
+" die geen scheidingsteken bevatten, tenzij\n"
+" de -s optie is gespecificeerd\n"
+" -n (genegeerd)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+" --complement complementeer de set van geselecteerde bytes, "
+"karakters\n"
+" of velden.\n"
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited toon alleen regels die scheidingstekens bevatten\n"
+" --output-delimiter=TEKST gebruik TEKST als het "
+"uitvoerscheidingsteken\n"
+" de standaard is het invoerscheidingsteken\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+"\n"
+"Gebruik één en slechts één van -b, -c of -f. Elke LIJST bestaat uit één\n"
+"of meer reeksen gescheiden door komma's. De geselecteerde invoer wordt\n"
+"weggeschreven in dezelfde volgorde als bij lezen en slechts precies één "
+"keer.\n"
+
+#: src/cut.c:227
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"Elke reeks is één van:\n"
+"\n"
+" N Nde byte, karakter of veld, tellend vanaf 1\n"
+" N- vanaf Nde byte, karakter of veld, tot het eind van de regel\n"
+" N-M vanaf Nde tot Mde (inclusief) byte, karakter of veld\n"
+" -M vanaf eerste tot Mde (inclusief) byte, karakter of veld\n"
+"\n"
+"Zonder BESTAND, of wanneer BESTAND - is, lees van standaardinvoer.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "ongeldige lijst van bytes of velden"
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr "byte-offset %s is te groot"
+
+#: src/cut.c:472
+#, c-format
+msgid "field number %s is too large"
+msgstr "veldnummer %s is te groot"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "slechts één soort lijst mag worden opgegeven"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "het scheidingsteken moet een enkel teken zijn"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "u moet een lijst van bytes, tekens, of velden geven"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr ""
+"een scheidingsteken mag alleen gespecificeerd zijn als met velden gewerkt "
+"wordt"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"het onderdrukken van onbegrensde regels heeft\n"
+"\talleen zin als met velden gewerkt wordt"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "ontbrekende lijst van velden"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "ontbrekende lijst van posities"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Gebruik: %s [OPTIE]... [+OPMAAK]\n"
+" of: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"Toon de huidige tijd in de gegeven OPMAAK, of zet de systeemdatum.\n"
+"\n"
+" -d, --date=DATUM toon de datum/tijd gegeven in DATUM, niet `nu'\n"
+" -f, --file=DATUMBESTAND zoals --date één keer voor elke regel in "
+"DATUMBESTAND\n"
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+" -r, --reference=BESTAND toon de laatste tijd van wijziging van BESTAND\n"
+" -R, --rfc-2822 toon de datum in de RFC-2822 opmaak\n"
+" Voorbeeld: Mon, 07 Aug 2006 12:34:56 -0600\n"
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+" --rfc-3339=TIJDSPEC toon de datum en tijd in RFC 3339 formaat.\n"
+" TIJDSPEC=`date', `seconds', of `ns' voor\n"
+" datum en tijd in de aangegeven precisie.\n"
+" De datum en tijd component zijn gescheiden\n"
+" door één spatie: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=TIJD zet de tijd beschreven door TIJD\n"
+" -u, --utc, --universal toon of zet de tijd in standaard wereldtijd\n"
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"\n"
+"OPMAAK controleert de uitvoer. De enig geldige optie voor de tweede vorm\n"
+"specificeert de standaard wereldtijd. Geïnterpreteerde tekenreeksen zijn:\n"
+"\n"
+" %% het procentteken\n"
+" %a de afkorting van de dag volgens de taalregio (bijv. zo)\n"
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A de volledige naam van dag in de week volgens de taalregio, (bijv. "
+"zondag)\n"
+" %b de afgekorte naam van de maand volgens de lokalisatie (bijv. jan)\n"
+" %B de volledige naam van de maand volgens de lokalisatie (bijv. "
+"januari)\n"
+" %c de datum/tijd volgens de lokalisatie (bijv. za 01 okt 2005 16:57:09 "
+"CEST)\n"
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C eeuw: zoals %Y, maar`laat de laatste twee cijfers weg (bijv. 21) \n"
+" %d dag in de maand (bijv. 01)\n"
+" %D datum: zelfde als %m/%d/%y\n"
+" %e dag in de maand, met voorloopspatie: zelfde als %_d\n"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+" %F volledige datum: zelfde als %Y-%m-%d\n"
+" %g de laatste twee cijfers van het jaar van het ISO-weeknummer (zie %G)\n"
+" %G het jaar van het ISO-weeknummer (zie %V); gewoonlijk alleen bruikbaar "
+"met %V\n"
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h zelfde als %b\n"
+" %H uur (00..23)\n"
+" %I uur (01..12)\n"
+" %j dag in het jaar (001..366)\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k uur ( 0..23)\n"
+" %l uur ( 1..12)\n"
+" %m maand (01..12)\n"
+" %M minuut (00..59)\n"
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+" %n een nieuweregel-teken\n"
+" %N nanoseconden (000000000..999999999)\n"
+" %p het taalregio-equivalent van AM of PM: (blanko in vele taalregio's)\n"
+" %P zoals %p maar in kleine letters\n"
+" %r tijd in lokalisatie, 12-uursaanduiding (bijv. 11:11:04 PM)\n"
+" %R tijd in 24-uursaanduiding: zelfde als %H:%M\n"
+" %s seconden sinds 1970-01-01 00:00:00 UTC\n"
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+" %S seconde (00..60)\n"
+" %t een horizontale tab\n"
+" %T tijd, zelfde als %H:%M:%S\n"
+" %u dag van de week (1..7); 1 duidt maandag aan\n"
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U weeknummer in het jaar, met zondag als eerste dag van de week "
+"(00..53)\n"
+" %V ISO-weeknummer, met maandag als eerste dag van de week (01..53)\n"
+" %w dag in de week (0..6); 0 geeft zondag aan\n"
+" %W weeknummer in het jaar, met maandag als eerste dag in de week "
+"(00..53)\n"
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x datumweergave volgens de taalregio (bijv. 31-12-05)\n"
+" %X tijdweergave volgens de taalregio (bijv. 23:13:48)\n"
+" %y laatste twee cijfers van het jaar (00..99)\n"
+" %Y jaar\n"
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+" %z +hhmm numerieke tijdzone (bijv. -0400)\n"
+" %:z +hh:mm numerieke tijdzone (bijv. -04:00)\n"
+" %::z +hh:mm:ss numerieke tijdzone (bijv. -04:00:00)\n"
+" %:::z numerieke tijdzone met : tot de noodzakelijke precisie (bijv. -04, "
+"+05:30)\n"
+" %Z alphabetische afkorting voor tijdzone (bijv. CET)\n"
+"\n"
+"Standaard gebruikt date voorloopnullen bij numerieke velden.\n"
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+"De volgende optionele vlaggen mogen volgen na `%':\n"
+"\n"
+" - (hyphen) geen voorloop in het veld\n"
+" _ (underscore) gebruik voorloopspaties\n"
+" 0 (zero) gebruik voorloopnullen\n"
+" ^ gebruik hoofdletters, indien mogelijk\n"
+" # wijzig hoofd- in kleine letters en omgekeerd, indien mogelijk\n"
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+"\n"
+"Na iedere vlag volgt een optionele veldbreedte als decimaal getal,\n"
+"eventueel gevolgd door ofwel\n"
+"E die aangeeft het taalregio-alternatief te gebruiken, indien beschikbaar, "
+"of\n"
+"O die aangeeft de numerieke symbolen in het taalregio-alternatief te "
+"gebruiken,\n"
+"indien beschikbaar.\n"
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "standaardinvoer"
+
+#: src/date.c:297 src/date.c:517
+#, c-format
+msgid "invalid date %s"
+msgstr "ongeldige datum %s"
+
+#: src/date.c:408 src/date.c:442
+#, c-format
+msgid "multiple output formats specified"
+msgstr "meer dan één uitvoerformaat gespecificeerd"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "de opties om datums te tonen sluiten elkaar uit"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr ""
+"de opties om de tijd te tonen en in te stellen kunnen niet tegelijkertijd "
+"gebruikt worden"
+
+#: src/date.c:448
+#, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"het argument %s mist een voorloop-`+';\n"
+"Bij gebruik van een optie om datums te specificeren, moet elk\n"
+" niet-optie-argument een opmaaktekenreeks zijn beginnende met `+'."
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "kan datum niet instellen"
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "de tijd %s valt buiten het toegestane bereik"
+
+#: src/dd.c:404
+#, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik: %s [OPERAND]...\n"
+" of: %s OPTIE\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"Kopieer een bestand en converteer en maak deze op volgens de opties.\n"
+"\n"
+" bs=BYTES maak ibs=BYTES en obs=BYTES\n"
+" cbs=BYTES converteer BYTES bytes tegelijk\n"
+" conv=CONVERSIE converteer het bestand zoals aangegeven in de "
+"komma-\n"
+" gescheiden lijst met conversiewoorden\n"
+" count=BLOKKEN kopieer alleen BLOKKEN invoer blokken\n"
+" ibs=BYTES lees BYTES bytes tegelijk\n"
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=BESTAND lees van BESTAND in plaats van standaardinvoer\n"
+" iflag=VLAGGEN lees volgens de kommagescheiden symbolenlijst\n"
+" obs=BYTES schrijf BYTES bytes tegelijk\n"
+" of=BESTAND schrijf naar BESTAND in plaats van naar standaarduitvoer\n"
+" oflag=VLAGGEN schrijf volgens de kommagescheiden symbolenlijst\n"
+" seek=BLOKKEN sla aantal BLOKKEN met door obs gegeven grootte over aan "
+"het begin\n"
+" van de uitvoer\n"
+" skip=BLOKKEN sla aantal BLOKKEN met door ibs gegeven grootte over aan "
+"het begin\n"
+" van de invoer\n"
+" status=noxfer onderdruk statistieken van de verplaatsing\n"
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"BLOKKEN en BYTES mogen gevolgd worden door de volgende vermenigvuldigings-\n"
+"achtervoegsels: xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M "
+"1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, enzovoort voor T, P, E, Z, Y.\n"
+"Elk CONVERSIE symbool mag zijn:\n"
+"\n"
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii van EBCDIC naar ASCII\n"
+" ebcdic van ASCII maar EBCDIC\n"
+" ibm van ASCII naar 'alternated EBCDIC'\n"
+" block vul met nieuweregel afgesloten regels uit met spaties tot de cbs "
+"lengte\n"
+" unblock vervang achterloopspaties in regels met lengte cbs door "
+"nieuweregel\n"
+" lcase vervang hoofdletters door kleine letters\n"
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+" nocreat maak geen uitvoerbestand\n"
+" excl stop als het uitvoerbestand al bestaat\n"
+" notrunc maak het uitvoerbestand niet korter\n"
+" ucase vervang kleine letters door hoofdletters\n"
+" swab verwissel ieder paar bytes uit de invoer\n"
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+" noerror ga door ook na leesfouten\n"
+" sync vul ieder blok uit met nul-bytes tot de ibs-grootte; indien "
+"samen\n"
+" met block of unblock, vul dan uit met spaties i.p.v. nul-bytes\n"
+" fdatasync schrijf het uitvoerbestand echt naar schijf voor het "
+"beëindigen\n"
+" fsync evenzo, maar schrijf ook de metagegevens\n"
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+"\n"
+"Elk VLAGGEN-symbool mag zijn:\n"
+"\n"
+" append achtervoegen (alleen zinvol bij uitvoer; suggestie: "
+"conv=notrunc)\n"
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr " direct gebruik direct-I/O voor de gegevens\n"
+
+#: src/dd.c:468
+msgid " directory fail unless a directory\n"
+msgstr " directory stop tenzij een map\n"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr " dsync gebruik synchronized-I/O voor de gegevens\n"
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr " sync evenzo, maar ook voor de metagegevens\n"
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr " nonblock gebruik non-blocking-I/O\n"
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr " noatime wijzig het toegangstijdstip niet\n"
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr " noctty voeg geen controlerende terminal toe aan bestand\n"
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr " nofollow volg geen symbolische koppelingen\n"
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr " nolinks stop bij meer dan één symbolische koppeling\n"
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr " binary gebruik binary-I/O voor de gegevens\n"
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr " text gebruik text-I/O voor de gegevens\n"
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+"\n"
+"Het zenden van een %s signaal naar een werkend `dd' proces zorgt er voor\n"
+"dat I/O statistieken naar standaardfoutuitvoer gaan en daarna gaat het "
+"kopiëren door.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 10899206+0 records in\n"
+" 10899206+0 records uit\n"
+" 9387674624 bytes (9.4 GB) gekopieerd, 34.6279 seconden, 271 MB/s\n"
+"\n"
+"Opties zijn:\n"
+"\n"
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records uit\n"
+
+#: src/dd.c:553
+#, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "%<PRIuMAX> afgebroken record\n"
+msgstr[1] "%<PRIuMAX> afgebroken records\n"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] "%<PRIuMAX> byte (%s) gekopiëerd"
+msgstr[1] "%<PRIuMAX> bytes (%s) gekopiëerd"
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr "Oneindig B"
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ", %g s, %s/s\n"
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "bezig invoerbestand %s te sluiten"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "bezig uitvoerbestand %s te sluiten"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "bezig met schrijven naar %s"
+
+#: src/dd.c:886
+#, c-format
+msgid "unrecognized operand %s"
+msgstr "niet-herkende operand %s"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "ongeldige conversie: %s"
+
+#: src/dd.c:900
+#, c-format
+msgid "invalid input flag: %s"
+msgstr "ongeldige invoervlag: %s"
+
+#: src/dd.c:903
+#, c-format
+msgid "invalid output flag: %s"
+msgstr "ongeldige uitvoervlag %s"
+
+#: src/dd.c:906
+#, c-format
+msgid "invalid status flag: %s"
+msgstr "ongeldige statusvlag %s"
+
+#: src/dd.c:942
+#, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "niet-herkende operand %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "ongeldig nummer %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr "slechts één van deze {ascii,ebcdic,ibm} is mogelijk"
+
+#: src/dd.c:973
+#, c-format
+msgid "cannot combine block and unblock"
+msgstr "block en unblock kunnen niet beide"
+
+# idem
+#: src/dd.c:975
+#, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "lcase en ucase kunnen niet beide"
+
+#: src/dd.c:977
+#, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "excl en nocreat kunnen niet beide"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"waarschuwing: bezig om de 'lseek kernel bug' heen te werken voor het bestand "
+"(%s)\n"
+" met mt_type=0x%0lx -- zie <sys/mtio.h> voor de lijst met typen"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, c-format
+msgid "%s: cannot seek"
+msgstr "%s: kan seek-functie niet uitvoeren"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr "offset te groot bij het lezen van bestand %s"
+
+#: src/dd.c:1229
+#, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr ""
+"waarschuwing: offset in bestand klopt niet meer na een mislukte leesopdracht"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr "kan niet om de 'kernel bug' heenwerken"
+
+#: src/dd.c:1376
+#, c-format
+msgid "setting flags for %s"
+msgstr "bezig de vlaggen van %s te zetten"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr "'fdatasync' mislukt voor %s"
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr "'fsync' mislukt voor %s"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "bezig met openen van %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+"offset te groot: kan niet afkorten tot een lengte van seek=%<PRIuMAX> (%lu-"
+"byte) blokken"
+
+#: src/dd.c:1730
+#, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "bezig met afkorten op %<PRIuMAX> bytes in uitvoerbestand %s"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "Bestandssysteem Type"
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "Bestandssysteem "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " Inodes IGebr IVrij IGeb%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Grtte Gebr Besch Geb%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Grtte Gebr Besch Geb%%"
+
+#: src/df.c:165
+#, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %s-blokken Gebruikt Beschikbaar Capaciteit"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " %4s-blokken Gebruikt Beschikbaar Gebruikt%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Aangekoppeld op\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "kan de huidige map niet krijgen"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "kan niet naar map %s gaan"
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "kan stat-functie niet doen op huidige map (nu %s)"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"Laat de informatie zien van het bestandssysteem waarop ieder BESTAND zich "
+"bevindt,\n"
+"of standaard van alle bestandssystemen.\n"
+"\n"
+
+#: src/df.c:749
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all inclusief bestandssystemen met 0 blokken\n"
+" -B, --block-size=SIZE gebruik blokken van SIZE bytes grootte\n"
+" -h, --human-readable toon de groottes in leesbare opmaak (bijv. 1K 234M "
+"2G)\n"
+" -H, --si evenzo, maar gebruik machten van 1000 niet 1024\n"
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes toont inode informatie in plaats van blokgebruik\n"
+" -k zelfde als --block-size=1K\n"
+" -l, --local limiteer de lijst tot locale bestandssystemen\n"
+" --no-sync roep sync niet aan alvorens de gebruiksinfo op te\n"
+" halen (standaard)\n"
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability gebruik de POSIX uitvoeropmaak\n"
+" --sync roep sync aan voor het ophalen van de gebruiksinfo\n"
+" -t, --type=TYPE limiteer de uitvoer tot bestandssystemen van het "
+"type TYPE\n"
+" -T, --print-type laat type van het bestandssysteem zien\n"
+" -x, --exclude-type=TYPE limiteer de uitvoer tot bestandssystemen niet "
+"van het type TYPE\n"
+" -v (genegeerd)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"SIZE mag zijn (of mag een geheel getal zijn eventueel gevolgd door) één van "
+"de volgende:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, enzovoort voor G, T, P, E, Z, "
+"Y.\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr "de optie --kilobytes is verouderd; gebruik -k"
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "bestandssysteemtype %s zowel geselecteerd als uitgesloten"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Waarschuwing: "
+
+#: src/df.c:943
+#, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%s kan tabel van aangekoppelde bestandssystemen niet lezen"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr "geen bestandssystemen verwerkt"
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Gebruik: %s [OPTIE]... [BESTAND]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Toon commando's voor instellen van de LS_COLOR omgevingsvariabele.\n"
+"\n"
+"Bepaal de opmaak van de uitvoer:\n"
+" -b, --sh, --bourne-shell toon Bourne shell code voor instellen "
+"LS_COLOR\n"
+" -c, --csh, --c-shell toon C shell code voor instellen LS_COLOR\n"
+" -p, --print-data-base toon standaardinstellingen\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"Indien BESTAND gegeven is, wordt dat gelezen om te bepalen welke kleuren "
+"voor\n"
+"bestanden en extensies gebruikt moeten worden. Anders wordt een standaard\n"
+"database gebruikt. Geef `dircolors --print-database' voor details over de\n"
+"opmaak van deze bestanden.\n"
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s:%lu: ongeldige regel; tweede token ontbreekt"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu: niet-herkend sleutelwoord %s"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<intern>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"de opties voor de uitvoer van de interne database van 'dircolors' en \n"
+"het selecteren van de syntaxis van de shell sluiten elkaar onderling uit"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+"BESTAND operand(en) kunnen niet samen met de --print-database (-p) optie."
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "geen SHELL omgevingsvariabele en geen shell-optietype gespecificeerd"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik: %s NAAM\n"
+" of: %s OPTIE\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"Toon NAAM zonder de achtergevoegde /-component; als NAAM geen /'s bevat,\n"
+"toon dan `.' (dat is de huidige map).\n"
+"\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+"\n"
+"Voorbeelden:\n"
+" %s /usr/bin/sort Uitvoer \"/usr/bin\".\n"
+" %s stdio.h Uitvoer \".\".\n"
+
+#: src/du.c:279 src/wc.c:108
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Gebruik: %s [OPTIE]... [BESTAND]...\n"
+" of: %s [OPTIE]... --files0-from=F\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"Vat het schijfgebruik van elk BESTAND samen, recursief voor mappen.\n"
+"\n"
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+" -a, --all toon tellingen voor alle bestanden, niet alleen "
+"mappen\n"
+" --apparent-size toon werkelijke grootte, in plaats van "
+"schijfgebruik; hoewel\n"
+" de werkelijke grootte meestal kleiner is, kan deze "
+"ook\n"
+" groter zijn als gevolg van gaten in (`schaarse') "
+"bestanden,\n"
+" interne fragmentatie, indirecte blokken, en iets "
+"soortgelijks\n"
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+" -B, --block-size=GROOTTE gebruik GROOTTE-byte blokken\n"
+" -b, --bytes zelfde als `--apparent-size --block-size=1'\n"
+" -c, --total toon een eindtotaal\n"
+" -D, --dereference-args volg BESTANDen die symbolische koppelingen zijn\n"
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+" --files0-from=F vat het schijfgebruik samen van de op een NUL "
+"eindigende \n"
+" bestandsnamen gespecificeerd in bestand F\n"
+" -H zoals --si, echter er komt ook een waarschuwing; "
+"verandert\n"
+" spoedig in --dereference-args (-D)\n"
+" -h, --human-readable toon grootte in gemakkelijk leesbare vorm (bijv. 1K "
+"234M 2G)\n"
+" --si zoals -h, echter gebruikt machten van 1000 niet "
+"1024\n"
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+" -k zoals --block-size=1K\n"
+" -l, --count-links telt grootte vele keren indien er een harde "
+"koppeling is\n"
+" -m zoals --block-size=1M\n"
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference volg alle symbolische koppelingen\n"
+" -P, --no-dereference volg geen symbolische koppelingen (dit is de "
+"standaard)\n"
+" -0, --null laat elke uitvoerregel eindigen met een 0-byte en "
+"niet \n"
+" met een nieuweregel\n"
+" -S, --separate-dirs tel de grootte van submappen niet mee\n"
+" -s, --summarize toon alleen een totaal voor elk argument\n"
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system sla mappen in andere bestandssystemen over\n"
+" -X BESTAND, --exclude-from=BESTAND Sluit bestanden die overeenkomen\n"
+" met elk patroon in BESTAND uit.\n"
+" --exclude=PATROON Sluit bestanden die overeenkomen met PATROON uit.\n"
+" --max-depth=N toon het totaal voor een map (of bestand, bij --"
+"all)\n"
+" alleen als het N of minder niveaus is onder het "
+"argument;\n"
+" --max-depth=0 is het zelfde als --summarize\n"
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+" --time toon de tijd van de laatste wijziging van alle "
+"bestanden in de\n"
+" map, of alle submappen\n"
+" --time=TEKST toon tijd volgens TEKST in plaats van "
+"modificatietijd:\n"
+" TEKST is atime, access, use, ctime of status\n"
+" --time-style=STIJL toon tijden volgens de stijl STIJL:\n"
+" STIJL is full-iso, long-iso, iso of +FORMAT\n"
+" FORMAT is geïnterpreteerd zoals in `date'\n"
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "totaal"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+"WAARSCHUWING: gebruik --si, niet -H; de betekenis van de -H optie zal "
+"spoedig\n"
+"wijzigen en wordt hetzelfde als die van --dereference-args (-D)"
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "ongeldige maximum diepte %s"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr "de optie --megabytes is verouderd; gebruik -m"
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr ""
+"totalen berekenen kan niet gelijktijdig met het tonen van alle ingangen"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr ""
+"waarschuwing: totalen weergeven is het zelfde als --max-depth=0 gebruiken"
+
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr ""
+"waarschuwing: het weergeven van totalen is in conflict met --max-depth=%lu"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr "De operanden BESTAND gaan niet samen met de optie --files0-from."
+
+# idem
+#: src/du.c:960 src/wc.c:662
+#, c-format
+msgid "cannot read file names from %s"
+msgstr "kan de bestandsnamen uit %s niet lezen"
+
+#: src/du.c:1000 src/du.c:1003
+msgid "invalid zero-length file name"
+msgstr "ongeldige bestandsnaam (lengte nul)"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Gebruik: %s [OPTIE]... [TEKENREEKS]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+"Schrijf de TEKENREEKS(en) naar standaarduitvoer.\n"
+"\n"
+" -n zonder de achtergevoegde nieuweregel\n"
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+" -e zet de interpretatie van backslash-escapes aan (standaard)\n"
+" -E zet de interpretatie van backslash-escapes uit\n"
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"Bij -e, worden de volgende sequenties herkent en uitgevoerd:\n"
+"\n"
+" \\0NNN het karakter waarvan de ASCII code gelijk is aan NNN (octaal)\n"
+" \\\\ backslash\n"
+" \\a let op (BEL)\n"
+" \\b backspace\n"
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c onderdruk de achteraan staande nieuweregel\n"
+" \\f nieuwe-pagina\n"
+" \\n nieuweregel\n"
+" \\r carriage return\n"
+" \\t horizontale tab\n"
+" \\v verticale tab\n"
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Gebruik: %s [OPTIE]... [-] [NAAM=WAARDE]... [COMMANDO [ARG]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Geef aan de omgevingsvariabele NAAM de waarde WAARDE en voer COMMANDO uit.\n"
+"\n"
+" -i, --ignore-environment start zonder andere omgevingsvariabelen\n"
+" -u, --unset=NAAM1 verwijder de omgevingsvariabele NAAM1\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"Een losse - impliceert -i. Als er geen COMMANDO is, toon dan de "
+"overblijvende \n"
+"omgevingsvariabelen.\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Converteer tabs in elk BESTAND naar spaties, schrijf naar standaarduitvoer.\n"
+"Zonder BESTAND, of als BESTAND gelijk is aan -, lees van standaardinvoer.\n"
+"\n"
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial converteer TAB's niet na niet-witruimte\n"
+" -t, --tabs=NUMMER tab's staan NUMMER karakters van elkaar, dus niet 8\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+" -t, --tabs=LIJST gebruik een komma-gescheiden lijst met tab-posities\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr "tab-positie is te groot %s"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "tab-grootte of positie bevat (een) ongeldig(e) karakter(s): %s"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "tab-grootte of positie mag niet 0 zijn"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "tab-posities moeten toenemen"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, c-format
+msgid "input line is too long"
+msgstr "invoerregel is te lang"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik: %s EXPRESSIE\n"
+"..of: %s OPTIE\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"\n"
+"Schrijf de waarde van EXPRESSIE naar standaarduitvoer. Een onderstaand lege "
+"regel\n"
+"scheidt oplopende voorrang van groepen. EXPRESSIE mag zijn:\n"
+"\n"
+" ARG1 | ARG2 ARG1 als deze niet leeg of 0 is, anders ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 als beide argumenten niet leeg of 0 zijn, anders 0\n"
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"\n"
+" ARG1 < ARG2 ARG1 is kleiner dan ARG2\n"
+" ARG1 <= ARG2 ARG1 is kleiner of gelijk aan ARG2\n"
+" ARG1 = ARG2 ARG1 is gelijk aan ARG2\n"
+" ARG1 != ARG2 ARG1 is niet gelijk aan ARG2\n"
+" ARG1 >= ARG2 ARG1 is groter dan of gelijk aan ARG2\n"
+" ARG1 > ARG2 ARG1 is groter dan ARG2\n"
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+"\n"
+" ARG1 + ARG2 rekenkundige som van ARG1 en ARG2\n"
+" ARG1 - ARG2 rekenkundig verschil van ARG1 en ARG2\n"
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+"\n"
+" ARG1 * ARG2 rekenkundig product van ARG1 en ARG2\n"
+" ARG1 / ARG2 rekenkundig quotient van ARG1 en ARG2 (ARG1 gedeeld door "
+"ARG2)\n"
+" ARG1 % ARG2 rekenkundige rest van ARG1 gedeeld door ARG2\n"
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"\n"
+" TEKENREEKS : REGEXP voldoet de TEKENREEKS aan het patroon in REGEXPR\n"
+"\n"
+" match TEKENREEKS REGEXP hetzelfde als TEKENREEKS : REGEXP\n"
+" substr TEKENREEKS POS LENGTE subreeks van TEKENREEKS, POS telt vanaf 1\n"
+" index TEKENREEKS KARS laagste index in TEKENREEKS waar een kar "
+"in\n"
+" KARS is gevonden, of 0\n"
+" length TEKENREEKS lengte van TEKENREEKS\n"
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+" + TOKEN interpreteer TOKEN als een tekenreeks, zelfs "
+"als het een\n"
+" sleutelwoord is zoals `match' of een operator "
+"zoals `/'\n"
+"\n"
+" ( EXPRESSIE ) waarde van EXPRESSIE\n"
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"Let er op dat veel operatoren geescaped of gekwoot gebruikt moeten\n"
+"worden bij shells. Vergelijkingen zijn rekenkundig als beide ARGs\n"
+"nummers zijn, anders lexicografisch. Patroonovereenkomsten geven de\n"
+"gevonden string tussen \\( en \\) of null; als \\( en \\) niet zijn\n"
+"gebruikt, geven ze het aantal overeenkomstige karakters of 0.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+"\n"
+"Afsluitstatus is 0 als EXPRESSIE noch leeg noch 0 is, 1 als EXPRESSIE leeg\n"
+"of 0 is, 2 als EXPRESSIE syntactisch ongeldig is, en 3 als er een fout "
+"optrad.\n"
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "fout in de syntaxis"
+
+#: src/expr.c:468 src/ptx.c:292
+#, c-format
+msgid "error in regular expression matcher"
+msgstr "fout in zoeken met reguliere expressie"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "niet-numeriek argument"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "deling door nul"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik: %s [NUMMER]...\n"
+" of: %s OPTIE\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"Toon de priemgetallen waaruit elk NUMMER is opgebouwd.\n"
+"\n"
+
+#: src/factor.c:85
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+"Toon de priemgetallen van alle gegeven NUMMERs. Als er geen\n"
+"argumenten gegeven zijn dan worden deze gelezen van standaardinvoer.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s is te groot"
+
+#: src/factor.c:158
+#, c-format
+msgid "%s is not a valid positive integer"
+msgstr "%s is geen geldig positief geheel getal"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Gebruik: %s [-CIJFERS] [OPTIE]... [BESTAND]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"Deel iedere paragraaf opnieuw in in BESTAND(en), schrijf naar "
+"standaarduitvoer.\n"
+"Als er geen BESTAND is of als BESTAND is `-', lees dan van standaardinvoer\n"
+"\n"
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin behoudt inspringen van de eerste twee regels\n"
+" -p, --prefix=TEKST deel alleen regels met TEKST als voorvoegsel "
+"opnieuw in.\n"
+" en voeg TEKST opnieuw als voorvoegsel toe\n"
+" -s, --split-only lange regels splitsen, maar niet opnieuw "
+"uitvullen\n"
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph inspringen eerste regel verschilt van tweede\n"
+" -u, --uniform-spacing één spatie tussen woorden, twee na een "
+"zinseinde\n"
+" -w, --width=NUMMER maximale regelbreedte (standaard is 75 tekens)\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+"ongeldige optie -- %c; -NUMMER wordt alleen herkend als het de eerste\n"
+"optie is; gebruik in plaats daarvan -w N"
+
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr "ongeldige breedte: %s"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"Breek invoerregels af in elk BESTAND (standaardinvoer is de standaard),\n"
+"schrijf naar standaarduitvoer.\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes tel bytes in plaats van kolommen\n"
+" -s, --spaces breek af op spaties\n"
+" -w, --width=NUMMER gebruik NUMMER kolommen in plaats van 80\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, c-format
+msgid "invalid number of columns: %s"
+msgstr "ongeldig aantal kolommen: %s"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Kopieer de eerste 10 regels van elk BESTAND naar standaarduitvoer.\n"
+"Indien meer dan één BESTAND gegeven is, wordt de uitvoer van ieder\n"
+"bestand voorafgegaan door de bestandsnaam. Indien geen BESTAND\n"
+"gegeven is, of BESTAND is -, lees dan van standaardinvoer.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+" -c, --bytes=[-]N toon de eerste N bytes van elk bestand;\n"
+" met een voorloop '-', toon alles behalve de "
+"laatste\n"
+" N bytes van elk bestand\n"
+" -n, --lines=[-]N toon de eerste N regels in plaats van de eerste "
+"10\n"
+" met de voorloop '-', toon alle regels behalve "
+"de\n"
+" laatste N regels van elk bestand\n"
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent toon geen koppen met bestandsnamen\n"
+" -v, --verbose toon altijd koppen met bestandsnamen\n"
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"N mag een achtervoegsel met vermenigvuldigingsfactor hebben:\n"
+" b 512, k 1024, m 1024*1024.\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "fout bij lezen van %s"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "fout bij schrijven van %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr "%s: bestand is te veel geslonken"
+
+#: src/head.c:230 src/head.c:1046
+#, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s: aantal bytes is te groot"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: kan niet terugspringen naar de originele positie"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s kan niet naar de offset %s springen"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "kan de bestandspositieaanduider van %s niet verplaatsen"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s is zo groot dat het niet weergegeven kan worden"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "aantal regels"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "aantal bytes"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "ongeldig aantal regels"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "ongeldig aantal bytes"
+
+#: src/head.c:976 src/head.c:1034
+#, c-format
+msgid "invalid trailing option -- %c"
+msgstr "ongeldige optie aan het eind -- %c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Gebruik: %s\n"
+" of: %s OPTIE\n"
+"Toon de numerieke identifier (in hexadecimaal) voor de huidige host.\n"
+"\n"
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Gebruik: %s [NAAM]\n"
+" of: %s OPTIE\n"
+"Toon of zet de hostnaam van het huidige systeem\n"
+"\n"
+
+#: src/hostname.c:103
+#, c-format
+msgid "cannot set name to %s"
+msgstr "kan de naam niet wijzigen in %s"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+"kan hostnaam niet instellen; dit systeem biedt deze functionaliteit niet"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "kan hostname niet achterhalen"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Gebruik: %s [OPTIE]... [GEBRUIKERSNAAM]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Toon informatie voor GEBRUIKERSNAAM, of van de huidige gebruiker.\n"
+"\n"
+" -a negeer, voor compatibiliteit met andere versies\n"
+" -g, --group toon alleen de groep ID\n"
+" -G, --groups toon alleen de suplmentaire groepen\n"
+" -n, --name toon een naam in plaats van een nummer, voor -ugG\n"
+" -r, --real toon het echte ID in plaats van het effectieve ID, voor -"
+"ugG\n"
+" -u, --user toon alleen het effectieve gebruikers-ID\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"Zonder enige OPTIE, toon een bruikbare set van identificatie-informatie.\n"
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "kan niet alleen gebruikers- en alleen groepsinformatie tonen"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr "kan niet alleen namen of alleen echte IDs in standaard formaat tonen"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Onbekende gebruiker"
+
+#: src/id.c:205
+#, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "kan geen snaam vinden gebruikers-ID %lu"
+
+#: src/id.c:229
+#, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "kan geen naam vinden voor groeps-ID %lu"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "kan geen aanvullende groepslijst verkrijgen"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " groepen="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr ""
+"de strip-optie mag niet gebruikt worden bij het installeren van een map"
+
+#: src/install.c:321
+#, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "doelmap niet toegestaan bij het installeren van een map"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "ongeldige modus %s"
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "kan de eigenaar van %s niet veranderen"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "kan de tijdsaanduidingen van %s niet zetten"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "'fork' systeemaanroep is mislukt"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "kan 'strip' niet uitvoeren"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "wacht op %s [-d]"
+
+#: src/install.c:572
+#, fuzzy, c-format
+msgid "strip process terminated abnormally"
+msgstr "%s [-d] niet normaal beëindigd"
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "ongeldige gebruiker %s"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "bezig map %s aan te maken"
+
+#: src/install.c:651
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Gebruik: %s [OPTIE]... [-T] BRON DOEL\n"
+" of: %s [OPTIE]... BRON... MAP\n"
+" of: %s [OPTIE]... -t MAP BRON...\n"
+" of: %s [OPTIE]... -d MAP...\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"Bij de eerste drie soorten aanroepen, wordt BRON naar DOEL gekopieerd of "
+"BRONnen naar\n"
+"een bestaande MAP, terwijl toegangsrechten en eigenaar en groep gezet "
+"worden.\n"
+"Bij de vierde soort, worden alle componenten van de gegeven MAP(pen) "
+"aangemaakt.\n"
+"\n"
+
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup[=CONTROL] maak een reserve bestand van elk bestaand "
+"bestemmingsbestand\n"
+" -b zoals --backup maar accepteert geen argument\n"
+" -c (genegeerd)\n"
+" -d, --directory behandel alle argumenten als mapnamen; maak alle\n"
+" componenten aan van de gespecificeerde mappen\n"
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D maak alle componenten van DOEL aan behalve de "
+"laatste,\n"
+" kopiëer dan BRON naar DOEL\n"
+" -g, --group=GROEP zet groep-eigenaar, in plaats van de groep van het "
+"huidige proces\n"
+" -m, --mode=MODE zet toegangsrechten (als in chmod), in plaats van rwxr-"
+"xr-x\n"
+" -o, --owner=OWNER zet de eigenaar (alleen voor systeembeheerder)\n"
+
+#: src/install.c:681
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps neem de tijden van laatste keer gebruikt/"
+"gewijzigd over\n"
+" van BRON bestanden naar de overeenkomstige "
+"bestemmingsbestanden\n"
+" -s, --strip verwijder symbooltabellen\n"
+" -S, --suffix=SUFFIX negeer het gebruikelijke reservekopie-achtervoegsel\n"
+" -t, --target-directory=MAP kopiëer alle BRON argumenten naar MAP\n"
+" -T, --no-target-directory behandel DOEL als een normaal bestand\n"
+" -v, --verbose toon de naam van elke map zodra deze is gemaakt\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"Het reservekopie-achtervoegsel is `~', tenzij ingesteld met --suffix of\n"
+"SIMPLE_BACKUP_SUFFIX. De versiecontrolemethode mag worden ingesteld met de "
+"optie\n"
+"--backup of door de omgevingsvariabele VERSION_CONTROL. Mogelijke waarden "
+"zijn:\n"
+"\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"Voor elk paar invoerregels met gelijke samenvoegvelden, schrijf een regel "
+"naar\n"
+"standaarduitvoer. Het standaard samenvoegveld is het eerste veld, omgeven\n"
+"door witruimte. Als BESTAND1 of BESTAND2 (niet beiden) gelijk zijn aan -, "
+"lees\n"
+"dan van standaardinvoer.\n"
+"\n"
+" -a NUMMER print paarbare regels uit bestand NUMMER, waar\n"
+" NUMMER is 1 of 2, overeenkomend met BESTAND1 of "
+"BESTAND2\n"
+" -e LEEG vervang ontbrekende invoer velden door LEEG\n"
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case negeer verschil in hoofd-/kleine letter bij de "
+"veldvergelijking\n"
+" -j VELD gelijk aan `-1 VELD -2 VELD'\n"
+" -o OPMAAK OPMAAK geeft aan hoe de uitvoer regel gemaakt moet "
+"worden\n"
+" -t KAR gebruik KAR als invoer en uitvoer veldscheiding\n"
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v NUMMER zoals -a NUMMER, echter onderdruk samengevoegde "
+"uitvoerregels\n"
+" -1 VELD voeg samen op dit VELD in bestand 1\n"
+" -2 VELD voeg samen op dit VELD in bestand 2\n"
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"Tenzij -t KAR aanwezig is, is voorloop witruimte de scheiding en wordt "
+"verder genegeerd,\n"
+"anders zijn velden gescheiden door KAR. Elk VELD heeft een veldnummer "
+"beginnend\n"
+"bij 1. OPMAAK is een of meer komma- of spatie(s)gescheiden specificaties,\n"
+"elk bestaat uit `NUMMER.VELD' of `0'. Standaard OPMAAK voert het "
+"samenvoegveld\n"
+"uit, dan de overblijvende velden uit BESTAND1, de overblijvende velden uit "
+"BESTAND2,\n"
+"alles gescheiden door KAR.\n"
+"\n"
+"Belangrijk: BESTAND1 en BESTAND2 moeten gesorteerd zijn op de "
+"samenvoegvelden.\n"
+
+#: src/join.c:617 src/join.c:812
+#, c-format
+msgid "invalid field number: %s"
+msgstr "ongeldig veldnummer: %s"
+
+#: src/join.c:638 src/join.c:647
+#, c-format
+msgid "invalid field specifier: %s"
+msgstr "ongeldige veldspecificatie: %s"
+
+#: src/join.c:654
+#, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "ongeldig bestandsnummer in veldspecificatie: %s"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr "incompatibele join-velden %lu, %lu"
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr "conflicterende leeg-veldvervangingstekenreeksen"
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr "lege tab"
+
+#: src/join.c:870 src/sort.c:3031
+#, c-format
+msgid "multi-character tab %s"
+msgstr "meervoudig tab-karakter %s"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr "incompatibele tabs"
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "niet beide bestanden mogen de standaardinvoer zijn"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"Gebruik: %s [-s SIGNAAL | -SIGNAAL] PID...\n"
+" of: %s -l [SIGNAAL]...\n"
+" of: %s -t [SIGNAAL]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+"Zend signalen naar processen, of laat signalen zien.\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+" -s, --signal=SIGNAAL, -SIGNAAL\n"
+" specificeer de naam of nummer van het te verzenden "
+"signaal\n"
+" -l, --list maak een lijst van signaalnamen, of converteer "
+"signaalnamen\n"
+" naar/van nummers\n"
+" -t, --table print een tabel met signaalinformatie\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+"\n"
+"SIGNAAL mag een signaalnaam zoals `HUP' zijn, of een signaalnummer zoals "
+"`1',\n"
+"of een afsluitstatus van een proces beëindigd door een signaal.\n"
+"PID is een geheel getal; als het negatief is dan geeft het een procesgroep "
+"aan.\n"
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: ongeldig signaal"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: ongeldig proces-ID"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "ongeldige optie -- %c"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: meer dan één signaal gespecificeerd"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "meer dan één -l of -t optie gespecificeerd"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "kan het signaal niet combineren met -l of -t"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr "geen proces-ID gespecificeerd"
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik: %s BESTAND1 BESTAND2\n"
+" of: %s OPTIE\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+"Gebruik de koppelingsfunctie, link, om een koppeling BESTAND2 te maken naar\n"
+"een bestaand BESTAND1.\n"
+"\n"
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "kan de koppeling %s naar %s niet aanmaken"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+"%s: waarschuwing: een harde koppeling naar een symbolische koppeling is niet "
+"overdraagbaar"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: een harde koppeling naar een map is niet toegestaan"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: kan de map niet overschrijven"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: %s vervangen? "
+
+#: src/ln.c:295
+#, c-format
+msgid "creating symbolic link %s"
+msgstr "bezig symbolische koppeling %s aan te maken"
+
+#: src/ln.c:296
+#, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "bezig symbolische koppeling %s -> %s aan te maken"
+
+#: src/ln.c:298
+#, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "bezig harde koppeling %.0s%s aan te maken"
+
+#: src/ln.c:301
+#, c-format
+msgid "creating hard link %s"
+msgstr "bezig harde koppeling %s aan te maken"
+
+#: src/ln.c:302
+#, c-format
+msgid "creating hard link %s => %s"
+msgstr "bezig harde koppeling %s -> %s aan te maken"
+
+#: src/ln.c:324
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Gebruik: %s [OPTIE]... [-T] DOEL KOPP_NAAM (1ste methode)\n"
+" of: %s [OPTIE]... DOEL... (2de methode)\n"
+" of: %s [OPTIE]... DOEL... MAP (3de methode)\n"
+" of: %s [OPTIE]...-t MAP DOEL (4de methode)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"1ste methode: maak een koppeling naar DOEL aan met de naam KOPP_NAAM.\n"
+"2de methode: maak een koppeling naar DOEL aan in de huidige MAP.\n"
+"3de en 4de methode: maak koppelingen aan naar elk DOEL in MAP.\n"
+"Standaard wordt een harde koppeling gemaakt, symbolische koppelingen met --"
+"symbolic.\n"
+"Bij het maken van een harde koppeling moet het doel bestaan.\n"
+"\n"
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup[=CONTROL] maak een reservekopie van elk bestaand "
+"bestemmingsbestand\n"
+" -b zoals --backup maar geen argument toegestaan\n"
+" -d, -F, --directory sta de systeembeheerder toe een harde "
+"koppeling te maken\n"
+" naar mappen (Opmerking: zal waarschijnlijk "
+"niet lukken\n"
+" vanwege systeembeperkingen, zelfs niet voor "
+"de\n"
+" systeembeheerder)\n"
+" -f, --force verwijder de bestaande bestemmingsbestanden\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference behandel een bestemming die een symbolische "
+"koppeling is\n"
+" naar een map alsof het een normaal bestand "
+"is\n"
+" -i, --interactive vraag of de bestemming verwijderd moet worden\n"
+" -s, --symbolic maak symbolische in plaats van harde "
+"koppelingen\n"
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" -S, --suffix=ACHTERV gebruik niet het gebruikelijke achtervoegsel "
+"voor\n"
+" reservekopieën\n"
+" -t, --target-directory=MAP specificeer de MAP waarin de koppelingen "
+"aangebracht\n"
+" moeten worden\n"
+" -T, --no-target-directory behandel KOPP_NAAM als een normaal bestand\n"
+" -v, --verbose toon de naam voordat er een koppeling wordt "
+"gemaakt\n"
+
+#: src/ln.c:484
+#, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "De combinatie van --target-directory en --no-target-directory kan niet"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Gebruik: %s [OPTIE]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"Toon de naam van de huidige gebruiker.\n"
+"\n"
+
+#: src/logname.c:89
+#, c-format
+msgid "no login name"
+msgstr "geen inlognaam"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%b %e %Y"
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%b %e %H:%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "negeer ongeldige waarde van de omgevingsvariabele QUOTING_STYLE: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "negeer ongeldige breedte in omgevingsvariabele COLUMNS: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr "negeer ongeldige tab-grootte in omgevingsvariabele TABSIZE: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "ongeldige regelbreedte: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "ongeldige tab-grootte: %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "ongeldige opmaakstijl voor de tijd %s"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "niet-herkend voorvoegsel: %s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "niet te ontleden waarde voor de LS_COLORS omgevingsvariabele"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "kan map %s niet openen"
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "kan het apparaat of de 'inode' van %s niet bepalen"
+
+#: src/ls.c:2353
+#, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "%s: map wordt niet weergegeven, is al weergegeven"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "bezig map %s te lezen"
+
+#: src/ls.c:2410
+#, c-format
+msgid "closing directory %s"
+msgstr "bezig map %s te sluiten"
+
+# idem
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "kan de bestandsnamen %s en %s niet vergelijken"
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"Toon informatie over de BESTANDen (de huidige map is de standaard).\n"
+"Sorteer ingangen alfabetische indien geen -cftuvSUX noch --sort aanwezig "
+"is.\n"
+"\n"
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all laat ook de namen zien die beginnen met een .\n"
+" -A, --almost-all zoals -a, echter laat . en .. weg\n"
+" --author met -l, laat de auteur van elk bestand zien\n"
+" -b, --escape laat octale waarde zien van niet-grafische "
+"karakters\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=GROOTTE gebruik blokken met GROOTTE voor aantal bytes "
+"per blok \n"
+" -B, --ignore-backups laat geen namen zien die eindigen op ~\n"
+" -c met -lt: sorteer op en toon 'ctime'(tijd van "
+"de\n"
+" laatste wijziging van de statusinformatie)\n"
+" met -l: toon 'ctime' en sorteer op naam\n"
+" anders: sorteer op 'ctime'\n"
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C toon ingangen in kolommen\n"
+" --color[=WANNEER] regelt of kleur gebruikt moet worden om typen\n"
+" bestanden te onderscheiden. WANNEER mag "
+"zijn\n"
+" `never', `always' of `auto'\n"
+" -d, --directory toon map-ingangen in plaats van inhoud,\n"
+" en volg de symbolische koppeling niet\n"
+" -D, --dired maak uitvoer die ontworpen is voor de dired\n"
+" modus van Emacs\n"
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f niet sorteren, activeer -aU, deactiveer -ls --"
+"color\n"
+" -F, --classify voeg een aanwijzer achter de namen (één van */"
+"=@|)\n"
+" --file-type zelfde, maar niet `*' achtervoegen\n"
+" --format=WORD overdwars -x, komma's -m, horizontaal -x, long -"
+"l,\n"
+" enkele kolom -1, uitvoerig -l, verticaal -C\n"
+" --full-time zoals -l --time-style=full-iso\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr " -g zoals -l, maar toon geen eigenaar\n"
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+" --group-directories-first\n"
+" groepeer mappen voor bestanden\n"
+
+#: src/ls.c:4322
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -G, --no-group bij een uitgebreide lijst, toon geen "
+"groepsnaam\n"
+" -h, --human-readable laat de groottes zien in leesbare opmaak\n"
+" (bijv. 1K 234M 2G)\n"
+" --si evenzo, maar gebruik machten van 1000 niet 1024\n"
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+" -H, --dereference-command-line\n"
+" volg de symbolische koppeling(en) in de "
+"commandoregel\n"
+" --dereference-command-line-symlink-to-dir\n"
+" volg de symbolische koppeling(en) in de "
+"commandoregel\n"
+" die naar een map verwijzen\n"
+" --hide=PATROON toon de namen niet die voldoen aan het PATROON\n"
+" (geldt niet bij -a of -A)\n"
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=WOORD voeg indicator met stijl WOORD achter namen "
+"in map:\n"
+" WOORD is none (standaard), slash (-p),\n"
+" file-type (--file-type) of classify (-F)\n"
+" -i, --inode met -l, toon het indexnummer van elk bestand\n"
+" -I, --ignore=PATROON laat de namen in map niet zien die "
+"overeenkomen met PATROON\n"
+" -k zoals --block-size=1K\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l gebruik de uitgebreide vorm van "
+"bestandsinformatie\n"
+" -L, --dereference bij het tonen van bestandsinformatie voor een\n"
+" symbolische koppeling, toon de information "
+"over\n"
+" het bestand waar de koppeling naar verwijst "
+"in\n"
+" plaats van de koppeling zelf\n"
+" -m vul de breedte met een kommagescheiden lijst "
+"van namen\n"
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid zoals -l, maar toon numerieke gebruikers- en "
+"groeps-IDs\n"
+" -N, --literal laat de ruwe naam zien (behandel bijv. "
+"controle\n"
+" karakters niet speciaal)\n"
+" -o zoals -l, maar laat de groepinformatie niet "
+"zien\n"
+" -p, --indicator-style=slash\n"
+" voeg een / indicator toe aan mappen\n"
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars toon ? in plaats van niet-grafische karakters\n"
+" --show-control-chars toon niet-grafische karakters zoals-ze zijn "
+"(standaard)\n"
+" tenzij het `ls' is en de uitvoer naar een "
+"terminal gaat)\n"
+" -Q, --quote-name omsluit namen met aanhalingstekens\n"
+" --quoting-style=WOORD gebruik de aanhalingsstijl WOORD voor "
+"ingangsnamen:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse keer de volgorde om bij het sorteren\n"
+" -R, --recursive toon submappen recursief\n"
+" -s, --size toon de grootte van ieder bestand in blokken\n"
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S sorteer op bestandsgrootte\n"
+" --sort=WOORD sorteer niet op naam maar volgens WOORD: none -"
+"U,\n"
+" extensie -X, size -S, time -t, version -v,\n"
+" --time=WOORD met -l, toon tijdstip zoals WOORD aangeeft in "
+"plaats\n"
+" van tijdstip van laatste wijziging: atime -u, "
+"access -u,\n"
+" use -u, ctime -c of status -c; dit tijdstip "
+"wordt gebruikt\n"
+" bij sorteren als --sort=time\n"
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=STIJL met -l toon tijden volgens de stijl STIJL:\n"
+" full-iso, long-iso, iso, locale, +OPMAAK\n"
+" OPMAAK wordt geïnterpreteerd zoals `date'; als "
+"OPMAAK is als\n"
+" OPMAAK1<newline>OPMAAK2, dan geldt OPMAAK1 voor "
+"niet-\n"
+" recente bestanden en OPMAAK2 voor recente "
+"bestanden;\n"
+" als STIJL `posix-' als voorvoegsel heeft, dan "
+"heeft STIJL\n"
+" alleen effect buiten de POSIX taalregio\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+" -t sorteer volgens de tijd van laatste wijziging\n"
+" -T, --tabsize=KOLS zet tabstops op elke KOLS tekens in plaats van "
+"8\n"
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u met -lt: sorteer op, en toon het tijdstip van "
+"laatste\n"
+" toegang; met -l: toon het tijdstip van "
+"laatste toegang\n"
+" en sorteer op naam; anders: sorteer op "
+"tijdstip\n"
+" van laatste toegang\n"
+" -U niet sorteren; laat de namen zien in de "
+"volgorde in de map\n"
+" -v sorteer op versie\n"
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -w, --width=BREEDTE neem BREEDTE als de schermbreedte in plaats\n"
+" van de huidige waarde\n"
+" -x toon namen per regel in plaats in kolommen\n"
+" -X sorteer alfabetisch op de extensie\n"
+" -1 toon één bestand per regel\n"
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"Standaard wordt er geen kleur gebruikt om de verschillende soorten bestanden "
+"te\n"
+"onderscheiden. Dat is gelijk aan --color=none. Gebruik van de optie --"
+"color\n"
+"zonder het optionele WANNEER-argument is gelijk aan het gebruik van --"
+"color=always.\n"
+"Met --color=auto worden kleurcodes alleen gebruikt als de standaarduitvoer "
+"wijst\n"
+"naar een terminal (tty). De omgevingsvariabele LS_COLORS kan de keuren "
+"beinvloeden\n"
+"en kan gezet worden met het dircolors commando.\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+"\n"
+"Afsluitstatus is 0 indien OK, 1 bij kleine problemen, 2 bij serieuze "
+"problemen.\n"
+
+#: src/md5sum.c:150
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Gebruik: %s [OPTIE] [BESTAND]...\n"
+"Toon of controleer %s (%d-bit) controlesommen (checksums).\n"
+"Zonder BESTAND, of wanneer BESTAND is -, lees van standaardinvoer.\n"
+"\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+" -b, --binary lees in binaire modus (standaard tenzij lezend van "
+"tty stdin)\n"
+
+#: src/md5sum.c:164
+msgid " -b, --binary read in binary mode\n"
+msgstr " -b, --binary lees in binaire modus\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+" -c, --check lees %s controlesommen van de BESTANDen en "
+"controleer deze\n"
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+" -t, --text lees in tekst modus (standaard bij lezen van tty "
+"stdin)\n"
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr " -t, --text lees in tekst modus (standaard)\n"
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"\n"
+"De volgende twee opties zijn alleen bruikbaar bij het controleren van "
+"controlesommen:\n"
+" --status stuur niets naar de uitvoer, de statuscode laat "
+"gelukt zien\n"
+" -w, --warn waarschuw bij verkeerd opgemaakte regels met "
+"controlesommen\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"De sommen zijn berekend zoals beschreven in %s. Bij het controleren\n"
+"moet de invoer voormalig uitvoer van dit programma zijn. De standaard modus "
+"is\n"
+"een regel tonen met een controlesom, een karakter die het type aangeeft\n"
+"(`*' voor binair, ` ' voor tekst), en de naam voor elk BESTAND.\n"
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: te veel regels met controlesommen"
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %<PRIuMAX>: foutief opgemaakte %s regel met controlesom"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: openen of lezen MISLUKT\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "MISLUKT"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "OK"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: fout bij lezen"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: geen correct opgemaakte %s regels met controlesom gevonden"
+
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] ""
+"WAARSCHUWING: %<PRIuMAX> van %<PRIuMAX> getoond bestand kan niet gelezen "
+"worden"
+msgstr[1] ""
+"WAARSCHUWING: %<PRIuMAX> van %<PRIuMAX> getoonde bestanden kunnen niet "
+"gelezen worden"
+
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] ""
+"WAARSCHUWING: %<PRIuMAX> van %<PRIuMAX> berekende controlesom komt NIET "
+"overeen"
+msgstr[1] ""
+"WAARSCHUWING: %<PRIuMAX> van %<PRIuMAX> berekende controlesommen komen NIET "
+"overeen"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"de --binary en --text opties werken niet bij het verifiëren van "
+"controlesommen"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "de --status optie werkt alleen bij het verifiëren van controlesommen"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "de --warn optie werkt alleen bij het verifiëren van controlesommen"
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Gebruik: %s [OPTIE] MAP...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"Maak de MAP(pen) aan als ze al niet bestaan.\n"
+"\n"
+
+#: src/mkdir.c:67
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+" -m, --mode=MODE zet rechten (zoals met `chmod'), niet a=rwx - umask\n"
+" -p, --parents geen fout als map al bestaat, maak, indien nodig, de\n"
+" bovenliggende mappen aan\n"
+" -v, --verbose geef een melding voor elke aangemaakte map\n"
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "de map %s is aangemaakt"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Gebruik: %s [OPTIE] NAAM...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"Maak benoemde pijpen aan (FIFO's) met de gegeven NAAMen.\n"
+"\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr " -m, --mode=MODE zet rechten volgens MODE, niet a=rw - umask\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "ongeldige modus"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr "mode mag alleen de bestandsrechtenbits specificeren"
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Gebruik: %s [OPTIE]... NAAM TYPE [MAJOR MINOR]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"Maak het speciale bestand NAAM aan van het gegeven TYPE.\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+"\n"
+"Zowel MAJOR als MINOR moeten gespecificeerd worden wanneer TYPE b, c of u is "
+"en\n"
+"weggelaten als TYPE p is. Als MAJOR of MINOR begint met 0x of 0X, dan\n"
+"is de interpretatie hexadecimaal; anders, als het begint met 0, octaal;\n"
+"anders decimaal. TYPE mag zijn:\n"
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+" b maak een (gebufferd) blok-speciaal bestand\n"
+" c, u maak een (niet gebufferd) byte-speciaal bestand\n"
+" p maak een FIFO\n"
+
+#: src/mknod.c:146
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"Bij speciale bestanden, moeten hoofd- en onderapparaatnummers gespecificeerd "
+"worden."
+
+#: src/mknod.c:156
+msgid "Fifos do not have major and minor device numbers."
+msgstr "Fifo's hebben geen hoofd- en onderapparaatnummers."
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "blok-speciaal bestanden worden niet ondersteund"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "byte-speciaal bestanden worden niet ondersteund"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "ongeldig hoofdaparaatnummer %s"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "ongeldig onderapparaatnummer %s"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "ongeldig apparaat %s %s"
+
+#: src/mknod.c:216
+#, c-format
+msgid "invalid device type %s"
+msgstr "ongeldig apparaattype %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Hernoem BRON naar BEST, of verplaats BRON(nen) naar MAP.\n"
+"\n"
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup[=CONTROL] maak een reservekopie van ieder bestaand\n"
+" bestemmingsbestand\n"
+" -b zoals --backup maar zonder argument\n"
+" -f, --force geen vraag stellen bij overschrijven\n"
+" -i, --interactive vraag toestemming alvorens te overschrijven\n"
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --strip-trailing-slashes verwijder eventuele achtergevoegde slashes\n"
+" (schuine strepen) uit elk BRON argument\n"
+" -S, --suffix=SUFFIX overschrijf het gebruikelijke achtervoegsel "
+"voor een\n"
+" reservebestand\n"
+
+#: src/mv.c:308
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" -t, --target-directory=MAP verplaats alle BRON argumenten naar MAP\n"
+" -T, --no-target-directory behandel DOEL als een normaal bestand\n"
+" -u, --update verplaats alleen als de BRON nieuwer is\n"
+" dan het bestemmingsbestand of wanneer het\n"
+" bestemmingsbestand ontbreekt\n"
+" -v, --verbose laat zien wat er gedaan wordt\n"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Gebruik: %s [OPTIE] [COMMANDO [ARG]...]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+"Voer COMMANDO uit met een aangepaste `scheduling'-prioriteit (nice).\n"
+"Zonder COMMANDO, toon de huidge `scheduling'-prioriteit. Nice-\n"
+"waarden lopen van %d (krijgt de meeste tijd) tot %d (minste tijd).\n"
+"\n"
+" -n, --adjustment=N tel geheel getal N op bij de nice-waarde (standaard "
+"10)\n"
+
+#: src/nice.c:155
+#, c-format
+msgid "invalid adjustment %s"
+msgstr "ongeldige aanpassing %s"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "er moet een commando gegeven worden met een aanpassing"
+
+#: src/nice.c:171 src/nice.c:182
+#, c-format
+msgid "cannot get niceness"
+msgstr "kan de nice-waarde niet verkrijgen "
+
+#: src/nice.c:186
+#, c-format
+msgid "cannot set niceness"
+msgstr "kan nice-waarde niet instellen"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Schrijf ieder BESTAND naar standaarduitvoer, met regelnummers toegevoegd.\n"
+"Zonder BESTAND, of als BESTAND is -, lees van standaardinvoer.\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=STIJL gebruik STIJL voor de nummering van de "
+"regels\n"
+" -d, --section-delimiter=CC gebruik CC voor het scheiden van logische "
+"pagina's\n"
+" -f, --footer-numbering=STIJL gebruik STIJL voor de nummering van "
+"voetregels\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=STIJL gebruik STIJL voor de nummering van "
+"kopregels\n"
+" -i, --page-increment=NUMMER hoog regelnummer op met NUMMER na elke "
+"regel\n"
+" -l, --join-blank-lines=NUMMER groep van NUMMER lege regels telt als één\n"
+" -n, --number-format=OPMAAK voeg regelnummers toe volgens OPMAAK\n"
+" -p, --no-renumber reset regelnummers niet op logische "
+"pagina's\n"
+" -s, --number-separator=TEKST voeg TEKST toe na (mogelijk) regelnummer\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=NUMMER eerste regelnummer op elke logische "
+"pagina\n"
+" -w, --number-width=NUMMER gebruik NUMMER kolommen (karakters) voor "
+"regelnummers\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"Standaard is -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC is\n"
+"twee scheidingstekens voor het scheiden van logische pagina's, een "
+"ontbrekend\n"
+"tweede karakter betekent :. Geef \\\\ voor \\. STIJL is een van:\n"
+
+#: src/nl.c:214
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a nummer alle regels\n"
+" t nummer alleen niet-lege regels\n"
+" n nummer geen regels\n"
+" pBRE nummer alleen regels met een overeenkomst met de basis "
+"reguliere\n"
+" expressie, BRE\n"
+"\n"
+"OPMAAK is een van:\n"
+"\n"
+" ln links aangesloten, geen voorloopnullen\n"
+" rn rechts aangesloten, geen voorloopnullen\n"
+" rz rechts aangesloten, met voorloopnullen\n"
+"\n"
+
+#: src/nl.c:281
+#, c-format
+msgid "line number overflow"
+msgstr "regelnummer loopt over"
+
+#: src/nl.c:479
+#, c-format
+msgid "invalid header numbering style: %s"
+msgstr "ongeldige stijl voor kopnummering: %s"
+
+#: src/nl.c:487
+#, c-format
+msgid "invalid body numbering style: %s"
+msgstr "ongeldige stijl voor regelnummers: %s"
+
+#: src/nl.c:495
+#, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "ongeldige stijl voor voetregels: %s"
+
+#: src/nl.c:504
+#, c-format
+msgid "invalid starting line number: %s"
+msgstr "ongeldig regelnummer voor beginregel: %s"
+
+#: src/nl.c:513
+#, c-format
+msgid "invalid line number increment: %s"
+msgstr "ongeldige ophoging voor regelnummers: %s"
+
+#: src/nl.c:525
+#, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "ongeldig aantal lege regels: %s"
+
+#: src/nl.c:539
+#, c-format
+msgid "invalid line number field width: %s"
+msgstr "ongeldige veldbreedte voor regelnummer: %s"
+
+#: src/nl.c:558
+#, c-format
+msgid "invalid line numbering format: %s"
+msgstr "ongeldig opmaak voor nummering: %s"
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik: %s COMMANDO [ARG]...\n"
+" of: %s OPTIE\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+"Voer COMMANDO uit, maar negeer 'hangup' signalen.\n"
+"\n"
+
+#: src/nohup.c:117
+#, c-format
+msgid "ignoring input"
+msgstr "invoer genegeerd"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr "kan %s niet openen"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "invoer genegeerd en uitvoer achter %s gevoegd"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr "kan de kopie van 'stderr' niet sluiten bij het uitvoeren"
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr "invoer genegeerd en stderr gaat naar stdout"
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr "kan de standaardfoutuitvoer niet omleiden"
+
+#: src/od.c:307
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Gebruik: %s [OPTIE]... [BESTAND]...\n"
+" of: %s [-abcdfilosx]... [BESTAND] [[+]OFFSET[.][b]]\n"
+" of: %s --traditional [OPTIE]... [BESTAND] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"Schrijf een eenduidige representatie, standaard is octale bytes,\n"
+"van BESTAND naar standaarduitvoer. Met meer dan één BESTAND argument,\n"
+"plak ze aan elkaar in de gegeven volgorde om de invoer te vormen.\n"
+"Zonder BESTAND, of wanneer BESTAND is -, lees van standaardinvoer.\n"
+"\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr "Alle argumenten bij lange opties zijn verplicht voor korte opties.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=RADIX geeft aan hoe offsets in bestanden worden "
+"getoond\n"
+" -j, --skip-bytes=BYTES sla de eerste BYTES bytes over van de invoer\n"
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=BYTES limiteer uitvoer tot BYTES bytes van de "
+"invoer\n"
+" -s, --strings[=BYTES] laat tekst zien met tenminste BYTES grafische "
+"karakters\n"
+" -t, --format=TYPE selecteer type of typen uitvoeropmaak\n"
+" -v, --output-duplicates gebruik geen * om een regelonderdrukking aan "
+"te geven\n"
+" -w, --width[=BYTES] laat BYTES bytes zien per uitvoerregel\n"
+" --traditional accepteer argumenten in de traditionele vorm\n"
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"Traditionele opmaakspecificatie mag gemixt worden; zij tellen op:\n"
+" -a zoals -t a, selecteer benoemde karakters, hoogste bit genegeerd\n"
+" -b zoals -t o1, selecteer octale bytes\n"
+" -c zoals -t c, selecteer ASCII karakters of 'backslash escapes'\n"
+" -d zoals -t u2, selecteer decimale getallen zonder teken 2-bytes "
+"eenheden\n"
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f zoals -t fF, selecteer drijvende komma getallen\n"
+" -i zoals -t dI, selecteer decimale korte getallen\n"
+" -l zoals -t dL, selecteer decimale lange getallen\n"
+" -o zoals -t o2, selecteer octale 2-bytes eenheden\n"
+" -s zoals -t d2, selecteer decimale 2-bytes eenheden\n"
+" -x zoals -t x2, selecteer hexadecimale 2-bytes eenheden\n"
+
+#: src/od.c:353
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"Als de eerste en tweede vorm van 'Gebruik' van toepassing is dan geldt de "
+"tweede\n"
+"vorm als de laatste operand met + begint of, bij twee operanden, een "
+"cijfer.\n"
+"Een OFFSET operand betekent -j OFFSET. LABEL is het pseudo-adres\n"
+"bij het eerst getoonde byte en wordt opgehoogd tijdens de voortgang van de\n"
+"dump. Voor OFFSET en LABEL, betekent een 0x of 0X voorvoegsel "
+"hexadecimaal;\n"
+"achtervoegsels mogen zijn . voor octaal en b voor vermenigvuldiging met "
+"512.\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+"\n"
+"TYPE wordt aangeduid door één of meer van de volgende specificaties:\n"
+"\n"
+" a genoemd karakter\n"
+" c ASCII karakter of backslash escape\n"
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[AANT] decimaal getal met teken, AANT bytes per getal\n"
+" f[AANT] drijvende komma getal, AANT bytes per getal\n"
+" o[AANT] octaal, AANT bytes per weergave\n"
+" u[AANT] decimaal getal zonder teken, AANT bytes per getal\n"
+" x[AANT] hexadecimaal, AANT bytes per weergave\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"AANT is een getal. Voor TYPE in doux, AANT mag ook zijn C voor\n"
+"sizeof(char), S voor sizeof(short), I voor sizeof(int) of L voor\n"
+"sizeof(long). Als TYPE f is, AANT mag ook F zijn voor sizeof(float).\n"
+"D voor sizeof(double) of L voor sizeof(long double).\n"
+"sizeof() is een machine afhankelijke functie die de lengte in bytes van\n"
+"de betrokken eenheid teruggeeft.\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"RADIX is d voor decimaal, o voor octaal, x voor hexadecimaal of n voor "
+"geen.\n"
+"BYTES is hexadecimaal met het 0x of 0X voorvoegsel, het wordt "
+"vermenigvuldigd\n"
+"met 512 met b als achtervoegsel, door 1024 met k en door 1024x1024 met m.\n"
+"Een z achtervoegen aan ieder type voegt een hoeveelheid printbare karakters\n"
+"toe aan het eind van iedere regel uitvoer. "
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"--string zonder een nummer betekent 3. --width zonder een nummer\n"
+"betekent 32. Standaard voor od is -A o -t d2 -w16.\n"
+
+#: src/od.c:683 src/od.c:802
+#, c-format
+msgid "invalid type string %s"
+msgstr "ongeldig type argument %s"
+
+#: src/od.c:693
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"ongeldig type argument %s;\n"
+"dit systeem biedt geen integraal %lu-byte type"
+
+#: src/od.c:812
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"ongeldig type argument %s;\n"
+"dit systeem biedt geen %lu-byte drijvende komma type"
+
+#: src/od.c:871
+#, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "ongeldig teken `%c' in type argument %s"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "kan niet verder dan het einde van de gecombineerde invoer"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+"ongeldige radix voor adres in uitvoer `%c'; dit moet een teken zijn uit "
+"[doxn]"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "sla argument over"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "beperk argument"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "minimale lengte van de tekst"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "specificatie voor de breedte"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "er mag geen type gegeven zijn indien met tekst gedumpt wordt"
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr "Compatibiliteitsmodus mag hooguit met één bestand."
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr "aantal bytes om over te slaan + aantal bytes te lezen is te groot"
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "waarschuwing: ongeldige breedte %lu; zal %d gebruiken"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: fmt=\"%s\" breedte=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "standaardinvoer is gesloten"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Schrijf de regels uit de opeenvolgende overeenkomende regels uit\n"
+"elk BESTAND, gescheiden door TABs, naar standaarduitvoer.\n"
+"Zonder BESTAND, of wanneer BESTAND is -, lees standaardinvoer.\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=LIJST gebruik karakters uit LIJST in plaats van TABs\n"
+" -s, --serial 'paste' één bestand tegelijk in plaats van "
+"parallel\n"
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Gebruik: %s [OPTIE]... NAAM...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+"Controleer niet-overdraagbare constructies in NAAM.\n"
+"\n"
+" -p controleer voor de meeste POSIX systemen\n"
+" -P controleer op lege namen en voorloop \"-\"\n"
+" --portability controleer voor alle POSIX systemen (equivalent met -p "
+"-P)\n"
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr "voorloop `-' in een onderdeel van een bestandsnaam %s"
+
+#: src/pathchk.c:206
+#, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "niet-overdraagbaar teken %s in bestandsnaam %s"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr "lege bestandsnaam"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr "%s: niet in staat de maximum lengte van de bestandsnaam te bepalen"
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr "limiet %lu overschreden door de lengte %lu van de bestandsnaam %s"
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+"limiet %lu overschreden door de lengte %lu van de bestandsnaamcomponent %s"
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Gebruikersnaam: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "In het echt: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Map: "
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Shell: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Project: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "Plan:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Inlognaam"
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr "Naam"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr " TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Niet-aktief"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Wanneer"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Waar"
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Gebruik: %s [OPTIE]... [GEBRUIKER]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"\n"
+" -l geef de lange uitvoer voor de gespecificeerde GEBRUIKERs\n"
+" -b laat de standaard map en shell weg van de gebruiker in de "
+"lange uitvoer\n"
+" -h laat het projectbestand weg in de lange uitvoer\n"
+" -p laat het planbestand weg in de lange uitvoer\n"
+" -s geef de korte uitvoer, dit is de standaard\n"
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+" -f laat de kopregel weg in de korte uitvoer\n"
+" -w laat de volledige naam van de gebruiker weg in de korte "
+"uitvoer\n"
+" -i laat de volledige naam en de externe host weg in de korte "
+"uitvoer\n"
+" -q laat de volledige naam, externe host en niet-actief weg\n"
+" in de korte uitvoer\n"
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+"\n"
+"Een lichtgewicht 'finger' programma; laat gebruikersinformatie zien.\n"
+"Het utmp-bestand is %s.\n"
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr ""
+"geen gebruikersnaam opgegeven; tenminste één noodzakelijk als -l wordt "
+"gebruikt"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr "paginareeks"
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "`--pages=EERSTE[:LAATSTE]' ontbrekend argument"
+
+#: src/pr.c:916
+#, c-format
+msgid "Invalid page range %s"
+msgstr "Ongeldige paginareeks %s"
+
+#: src/pr.c:981
+#, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "`-l PAGINALENGTE' ongeldig aantal regels: %s"
+
+#: src/pr.c:1005
+#, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "`-N AANTAL' ongeldig beginregelnummer: %s"
+
+#: src/pr.c:1017
+#, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "`-o MARGE' ongeldige regeloffset: %s"
+
+#: src/pr.c:1058
+#, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-w PAGINABREEDTE' ongeldig aantal tekens: %s"
+
+#: src/pr.c:1072
+#, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-W PAGINABREEDTE' ongeldig aantal tekens: %s"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr ""
+"Bij parallel afdrukken kan het aantal kolommen niet worden gespecificeerd."
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "Kan niet zowel parallel als dwars afdrukken."
+
+#: src/pr.c:1202
+#, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "`-%c' overtollige tekens of ongeldig getal in het argument: %s"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "te smalle paginabreedte"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+"startpaginanummer %<PRIuMAX> is hoger dan het aantal pagina's %<PRIuMAX>"
+
+#: src/pr.c:2406
+#, c-format
+msgid "Page number overflow"
+msgstr "Paginanummer loopt over"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr "Pagina %<PRIuMAX>"
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+"Maak pagina's of kolommen van BESTAND(en) om af te drukken.\n"
+"\n"
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +EERSTE_PAG[:LAATSTE_PAG], --pages=EERSTE_PAG[:LAATSTE_PAG]\n"
+" begin [stop] te printen bij pagina EERSTE_[LAATSTE_]PAG\n"
+" -KOLOM, --columns=KOLOM\n"
+" Maak KOLOM kolommen en print kolomsgewijs naar beneden,\n"
+" tenzij -a is gebruikt. Maak het aantal regels in de\n"
+" kolommen gelijk op iedere pagina.\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across print de kolommen horizontaal en niet verticaal, wordt\n"
+" gebruikt met -KOLOM\n"
+" -c, --show-control-chars\n"
+" gebruik dakje-notatie (^G) en octale backslash notatie\n"
+" -d, --double-space\n"
+" telkens een lege regel tussen de regels\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=OPMAAK\n"
+" gebruik OPMAAK voor de kopdatum\n"
+" -e[KAR[BREEDTE]], --expand-tabs[=KAR[BREEDTE]]\n"
+" vervang invoer-KARs (TABs) tot tab BREEDTE (8)\n"
+" -F, -f, --form-feed\n"
+" gebruik 'formfeeds' in plaats van nieuwe-regels om\n"
+" pagina's te scheiden\n"
+" (bij een 3-regel paginakop met -F of een 5-regel kop\n"
+" en voet zonder -F)\n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h KOP, --header=KOP\n"
+" gebruik een gecentreerde KOP in plaats van de "
+"bestandsnaam\n"
+" in de paginakop,\n"
+" -h \"\" print een blanco regel als kop, dus niet -h\"\"\n"
+" -i[KAR[BREEDTE]], --output-tabs[=KAR[BREEDTE]]\n"
+" vervang spaties door KARs (TABs) tab BREEDTE (8)\n"
+" -J, --join-lines plak volledige regels aan elkaar, zet -W af, afkorten "
+"van\n"
+" regels, geen kolommen uitlijning, --sep-string[=TEKST] "
+"zet\n"
+" scheidingstekens\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l PAG_LENGTE, --length=PAG_LENGTE\n"
+" zet de paginalengte op PAG_LENGTE (66) regels\n"
+" (standaard aantal regels tekst 56, met -F 63)\n"
+" -m, --merge print alle bestanden parallel, één in elke kolom,\n"
+" bekort regels, maar voeg regels met de volle lengte "
+"samen met -J\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[SEP[CIJFER]], --number-lines[=SEP[CIJFER]]\n"
+" aantal regels, gebruik CIJFER (5) cijfers, daarna SEP "
+"(TAB),\n"
+" het tellen begint standaard bij de eerste regel van het "
+"invoerbestand\n"
+" -N NUMMER, --first-line-number=NUMMER\n"
+" start het tellen bij NUMMER op de eerste regel van de "
+"eerste\n"
+" te printen pagina (zie ook +EERSTE_PAG)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o MARGE, --indent=MARGE\n"
+" schuif iedere regel op met MARGE (nul) spaties, heeft "
+"geen\n"
+" invloed op -w of -W, MARGE telt op bij PAG_BREEDTE\n"
+" -r, --no-file-warnings\n"
+" laat waarschuwingen weg als een bestand niet geopend kan "
+"worden\n"
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[KAR],--separator[=KAR]\n"
+" scheidt de kolommen door één karakter, standaard voor "
+"KAR\n"
+" is het <TAB> karakter zonder -w en 'geen karakter' met -"
+"w\n"
+" -s[KAR] zet regelafbreking af voor alle 3 kolommen\n"
+" opties (-KOLOM|-a -KOLOM|-m) behalve wanneer -w is "
+"gezet\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -STEKST, --sep-string[=TEKST]\n"
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" kolommen door TEKST scheiden,\n"
+" zonder -S: Standaard scheidingsteken is <TAB> met -J en "
+"anders\n"
+" spatie (zoals -S\" \"), geen invloed op kolom opties\n"
+" -t, --omit-header laat paginakoppen en -voeten weg\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" geen paginakoppen en voeten, laat alle paginering weg\n"
+" door nieuwepaginatekens in de invoer bestanden\n"
+" -v, --show-nonprinting\n"
+" gebruik octale backslash notatie\n"
+" -w PAG_BREEDTE, --width=PAG_BREEDTE\n"
+" zet de paginabreedte op PAG_BREEDTE (72) karakters "
+"alleen bij\n"
+" meerdere tekstkolommen uitvoer, -s[char] zet (72) af\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W PAG_BREEDTE, --page-width=PAG_BREEDTE\n"
+" zet paginabreedte op PAG_BREEDTE (72) karakters,\n"
+" kap regels af, behalve wanneer de -J optie is gezet,\n"
+" er is geen koppeling met -S of -s\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"-T is van toepassing bij -l nn als nn <= 10 of <= 3 met -F.\n"
+"Zonder BESTAND of wanneer BESTAND - is, lees van standaardinvoer.\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Gebruik: %s [VARIABELE]...\n"
+" of : %s OPTIE\n"
+"Als geen omgevingsvariabele VARIABELE is gespecificeerd, print ze allen.\n"
+"\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+"waarschuwing: %s: karakter(s) volgend op karakterconstante zijn genegeerd"
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik: %s OPMAAK [ARGUMENT]...\n"
+" of: %s OPTIE\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+"Print ARGUMENT(en) in overeenstemming met OPMAAK.\n"
+"\n"
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"\n"
+"OPMAAK controleert de uitvoer zoals met printf in de taal C. "
+"Geïnterpreteerde\n"
+"sequenties zijn:\n"
+"\n"
+" \\\" aanhalingsteken\n"
+" \\NNN karakter met octale waarde NNN (1 tot 3 cijfers)\n"
+" \\\\ backslash\n"
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+" \\a aandacht (BEL)\n"
+" \\b backspace\n"
+" \\c produceer geen verdere uitvoer\n"
+" \\f form-feed-teken\n"
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n nieuweregel-teken\n"
+" \\r regelbegin-teken\n"
+" \\t horizontale tab-teken\n"
+" \\v verticale tab-teken\n"
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+" \\xHH byte met hexadecimale waarde NN (1 tot 2 tekens)\n"
+" \\uHHHH Unicode (ISO/IEC 18646) karakter met hexadecimale waarde HHHH (4 "
+"tekens)\n"
+" \\UHHHHHHHH Unicode karakter met hexadecimale waarde HHHHHHH (8 tekens)\n"
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+" %% een enkele %\n"
+" %b ARGUMENT is tekenreeks met `\\' escapes geïnterpreteerd,\n"
+" behalve dat octale escapes van de vorm \\0 of \\0NNN zijn\n"
+"\n"
+"en alle C opmaakspecificaties die eindigen met één uit diouxXfeEgGcs, met\n"
+"ARGUMENTen eerst geconverteerd naar het juiste type. Variabele breedte\n"
+"wordt behandeld.\n"
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: verwacht een numerieke waarde"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: waarde niet helemaal geconverteerd"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "ontbrekend hexadecimaal getal in escape"
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "ongeldige universele tekennaam \\%c%0*x"
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr "ongeldige veldbreedte: %s"
+
+#: src/printf.c:585
+#, c-format
+msgid "invalid precision: %s"
+msgstr "ongeldige precisie: %s"
+
+#: src/printf.c:612
+#, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%.*s: ongeldige conversiespecificatie"
+
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "waarschuwing: overbodige argumenten worden genegeerd, beginnend bij %s"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr "F. Pinard"
+
+#: src/ptx.c:422
+#, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (voor reguliere expressie %s)"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Gebruik: %s [OPTIE]... [INVOER]... (zonder -G)\n"
+" of: %s -G [OPTIE]... [INVOER [UITVOER]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"Schrijf een gepermuteerde index weg, inclusief context, van de woorden\n"
+"in de invoerbestanden.\n"
+"\n"
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference uitvoer genereert automatisch referenties\n"
+" -G, --traditional gedrag moet meer overeenkomstig System V "
+"`ptx'zijn\n"
+" -F, --flag-truncation=TEKST gebruik TEKST voor het aangeven van het "
+"afbreken\n"
+" van een regel\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=TEKST te gebruiken macro-naam in plaats van `xx'\n"
+" -O, --format=roff genereer uitvoer als roff directiven\n"
+" -R, --right-side-refs zet referenties rechts, niet meetellen in -"
+"w\n"
+" -S, --sentence-regexp=REGEXP voor eind van de regels of eind van de "
+"zinnen\n"
+" -T, --format=tex genereer uitvoer als TeX directiven\n"
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=REGEXP REGEXP definieert sleutelwoorden\n"
+" -b, --break-file=BESTAND woordafbreekkarakters in dit BESTAND\n"
+" -f, --ignore-case verander kleine letters in hoofdletters "
+"voor het\n"
+" sorteren\n"
+" -g, --gap-size=NUMBER grootte van gat in kolommen tussen "
+"uitvoervelden\n"
+" -i, --ignore-file=BESTAND BESTAND met woorden die niet meedoen\n"
+" -o, --only-file=BESTAND BESTAND met woorden die alleen meedoen\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references eerste veld van elke regel is een "
+"referentie\n"
+" -t, --typeset-mode - niet geïmplementeerd -\n"
+" -w, --width=NUMBER uitvoerbreedte in kolommen, referentie niet "
+"meegenomen\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"Zonder BESTAND of wanneer BESTAND - is, lees van standaardinvoer. `-F /' is "
+"standaard.\n"
+
+#: src/ptx.c:2016
+#, c-format
+msgid "invalid gap width: %s"
+msgstr "ongeldige breedte van gat: %s"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr "de --copyright optie is verouderd gebruik --version in plaats daarvan"
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+"Toon de volle bestandsnaam van de huidige werkmap.\n"
+"\n"
+
+#: src/pwd.c:160
+#, c-format
+msgid "failed to chdir to %s"
+msgstr "kan niet naar de werkmap %s gaan"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, c-format
+msgid "failed to stat %s"
+msgstr "kan statusinformatie van %s niet verkrijgen"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr "kan de mapingang in %s niet vinden via de overeenkomende i-node"
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "argumenten die geen optie zijn, zijn genegeerd"
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Gebruik: %s [OPTIE]... BESTAND\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+"Toon de waarde van een symbolische koppeling via standaarduitvoer.\n"
+"\n"
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+" -f, --canonicalize maak canoniek (echt) door iedere koppeling\n"
+" in iedere component van het gegeven pad\n"
+" recursief te volgen; alle componenten, \n"
+" behalve de laatste, behoren te bestaan\n"
+" -e, --canonicalize-existing maak canoniek (echt) door iedere koppeling\n"
+" in iedere component van het gegeven pad\n"
+" recursief te volgen; alle componenten\n"
+" moeten bestaan\n"
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+" -m, --canonicalize-missing maak canoniek (echt) door iedere koppeling\n"
+" in iedere component van de gegeven naam\n"
+" recursief te volgen; de componeneten "
+"behoeven\n"
+" niet bestaan\n"
+" -n, --no-newline geen nieweregel achtervoegen\n"
+" -q, --quiet,\n"
+" -s, --silent onderdruk de meeste foutboodschappen\n"
+" -v, --verbose toon de foutboodschappen\n"
+
+#: src/remove.c:481 src/remove.c:525
+#, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "FATAAL: kan map %s niet sluiten"
+
+#: src/remove.c:494
+#, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "FATAAL: kan .. niet openen vanuit %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+"FATAAL: kan niet zeker stellen dat %s veilig is (keerde er naar terug via ..)"
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "FATAAL: map %s veranderde dev/ino"
+
+#: src/remove.c:631
+#, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "FATAAL: kan map %s niet ingaan"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr "FATAAL: zojuist binnengegane map %s veranderde dev/ino"
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"WAARSCHUWING: Cirkelvormige mapstructuur.\n"
+"Dit betekent vrijwel zeker dat het bestandssysteem corrupt is.\n"
+"WAARSCHUW UW SYSTEEMBEHEERDER.\n"
+"De volgende map is onderdeel van de cirkel:\n"
+" %s\n"
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s: afdalen in voor schrijven beschermde map %s? "
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s: afdalen naar map %s? "
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: schrijfbeveiligde %s %s verwijderen? "
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: %s %s verwijderen? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "map verwijderd: %s\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, c-format
+msgid "failed to close directory %s"
+msgstr "kan de map %s niet sluiten"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr "sla %s over, omdat deze zich op een ander apparaat bevindt"
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "kan map %s niet verwijderen"
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "FATAAL: kan niet terug gaan naar .. vanuit %s"
+
+#: src/remove.c:1504
+#, c-format
+msgid "cannot remove root directory %s"
+msgstr "kan de top-map %s niet verwijderen"
+
+#: src/remove.c:1544
+#, c-format
+msgid "cannot remove relative-named %s"
+msgstr "kan de relatief aangeduide map %s niet verwijderen"
+
+#: src/remove.c:1558
+#, c-format
+msgid "cannot restore current working directory"
+msgstr "kan de huidige werkmap niet herstellen"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr "Probeer `%s ./%s' om het bestand %s te verwijderen.\n"
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Gebruik: %s [OPTIE]... BESTAND...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+"Verwijder (unlink) de BESTAND(en).\n"
+"\n"
+" -f, --force negeer niet bestaande bestanden, nooit vragen\n"
+" -i vraag voor elke verwijdering\n"
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+" -I vraag voor het verwijderen van meer dan drie "
+"bestanden, of\n"
+" bij recursieve verwijdering. Minder omslachtig "
+"dan -i,\n"
+" terwijl er toch beschermings is tegen de meeste "
+"vergissingen\n"
+" --interactive[=WHEN] vraag volgens WHEN: never, once (-I), of\n"
+" always (-i). Zonder WHEN, vraag altijd\n"
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+" --one-file-system bij het recursief verwijderen van een hiërarchie "
+"moet elke\n"
+" map overgeslagen worden die zich op een ander "
+"bestandssysteem\n"
+" bevindt dan die van het bijbehorende argument op "
+"de commandoregel\n"
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --no-preserve-root behandel de `/'-map niet apart\n"
+" --preserve-root de `/'-map niet verwijderen (de standaard)\n"
+" -r, -R, --recursive verwijder mappen en de inhoud van alle "
+"onderliggende mappen\n"
+" -v, --verbose laat zien wat er gedaan wordt\n"
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+"\n"
+"standaard verwijdert rm mappen. Gebruik de optie --recursive (-r of -R)\n"
+"om iedere genoemde map ook te verwijderen, samen met alle inhoud daarvan.\n"
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"Om een bestand te verwijderen dat begint met een `-', bij voorbeeld `-foo',\n"
+"gebruik één van deze commando's:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"Let op: bij gebruik van rm voor het verwijderen van een bestand, is het "
+"gewoonlijk\n"
+"mogelijk de inhoud van dat bestand te herstellen. Als u er zeker van wilt "
+"zijn dat\n"
+"de inhoud niet is te herstellen, gebruik dan shred.\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr "%s: verwijder alle argumenten recursief? "
+
+#: src/rm.c:366
+#, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: verwijder alle argumenten? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "bezig map %s te verwijderen"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Gebruik: %s [OPTIE]... MAP...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"Verwijder de MAP(pen), mits ze leeg zijn.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" negeer alleen een fout die voortkomt uit een niet-lege "
+"map\n"
+
+#: src/rmdir.c:148
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents verwijder MAP, en probeer ieder onderdeel van het\n"
+" pad te verwijderen. Bijv. `rmdir -p a/b/c' is\n"
+" gelijk aan `rmdir a/b/c a/b a'.\n"
+" -v, --verbose geef info over iedere behandelde map\n"
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Gebruik: %s [OPTIE]... LAATSTE\n"
+" of: %s [OPTIE]... EERSTE LAATSTE\n"
+" of: %s [OPTIE]... EERSTE STAP LAATSTE\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"Toon nummers van EERSTE tot LAATSTE, met stapgrootte STAP.\n"
+"\n"
+" -f, --format=OPMAAK gebruik de printf-stijl van drijvende komma "
+"OPMAAK\n"
+" -s, --separator=TEKST gebruik TEKST om nummers te scheiden (standaard: "
+"\\n)\n"
+" -w, --equal-width maak de breedte gelijk door toevoegen van "
+"voorloopnullen\n"
+
+#: src/seq.c:88
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"\n"
+"Als EERSTE of STAP zijn weggelaten, dan wordt 1 gebruikt. D.w.z. dat\n"
+"een weggelaten STAP ook 1 wordt zelfs als LAATSTE kleiner is dan EERSTE.\n"
+"EERSTE, STAP en LAATSTE worden geïnterpreteerd als drijvende komma\n"
+"waarden. STAP is gewoonlijk positief als EERSTE kleiner is dan LAATSTE,\n"
+"en negatief als EERSTE kleiner is dan LAATSTE.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+"OPMAAK moet bruikbaar zijn voor het tonen van één argument van het type "
+"'double';\n"
+"de standaard is %.PRECf als EERSTE, STAP en LAATSTE allen decimale vaste "
+"komma\n"
+"getallen zijn met een maximale precisie PREC en anders %g.\n"
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "ongeldig drijvende komma argument: %s"
+
+#: src/seq.c:342
+#, c-format
+msgid "invalid format string: %s"
+msgstr "ongeldige opmaaktekenreeks: %s"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr ""
+"er mag geen tekst voor opmaak gegeven zijn bij uitvoer met gelijke breedte "
+
+#: src/setuidgid.c:51
+#, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik: %s GEBRUIKERSNAAM COMMANDO [ARGUMENT]...\n"
+" of: %s OPTIE\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+"Verwijder alle toegevoegde groepen, neem het gebruikers-ID en groeps-ID aan\n"
+"van de gespecificeerde GEBRUIKERSNAAM, en voer het COMMANDO uit met alle\n"
+"gespecificeerde ARGUMENTen. Eindig met status 111 als de gevraagde UID en "
+"GID\n"
+"niet gebruik mogen worden. Anders, eindig met de afsluitstatus van "
+"COMMANDO.\n"
+"Dit programma is alleen bruikbaar als het wordt uitgevoerd door root "
+"(gebruikers-ID nul).\n"
+"\n"
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr "onbekend gebruikers-ID: %s"
+
+#: src/setuidgid.c:109
+#, c-format
+msgid "cannot set supplemental group"
+msgstr "kan geen toegevoegde groep zetten"
+
+#: src/setuidgid.c:114
+#, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "kan de groeps-ID niet op %lu zetten"
+
+#: src/setuidgid.c:118
+#, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "kan de gebruikers-ID niet op %lu zetten"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Gebruik: %s [OPTIE] BESTAND [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"Overschrijf de gespecificeerde BESTAND(en) herhaaldelijk om het moeilijker "
+"te maken,\n"
+"zelfs voor zeer dure apparatuur, om de gegevens in de BESTAND(en) te "
+"herstellen.\n"
+"\n"
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force verander, indien nodig, de rechten om schrijven toe te "
+"staan\n"
+" -n, --iterations=N Overschrijf N keer in plaats van de standaard (%d)\n"
+" --random-source=BESTAND haal random bytes uit BESTAND (standaard /dev/"
+"urandom)\n"
+" -s, --size=N shred dit aantal bytes (achtervoegsels als K, M, G "
+"mogelijk)\n"
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove verkort en verwijder het bestand na het overschrijven\n"
+" -v, --verbose laat de voortgang zien\n"
+" -x, --exact rond de lengte van de bestanden niet af naar het aantal "
+"volle blokken;\n"
+" dit is de standaard voor niet-reguliere bestanden\n"
+" -z, --zero overschrijf tenslotte met nullen om het vernietigen te "
+"verhullen\n"
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"Als BESTAND - is, shred dan standaarduitvoer\n"
+"\n"
+"Verwijder BESTAND(en) als --remove (-u) is gespecificeerd. De standaard is "
+"het niet\n"
+"verwijderen van de bestanden omdat het gebruikelijk is dit op "
+"apparaatbestanden toe te\n"
+"passen, zoals /dev/hda, en die bestanden moeten meestal niet worden "
+"verwijderd. Als het\n"
+"op gewone bestanden wordt toepast, dan is de --remove optie gebruikelijk.\n"
+"\n"
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"WAARSCHUWING: Het commando shred vertrouwt op de aanname dat het "
+"bestandssysteem\n"
+"de gegevens ter plekke overschrijft. Dit is de traditionele manier van "
+"doen, maar\n"
+"veel moderne bestandssystemen voldoen hier niet neer aan.\n"
+"Op de volgende voorbeelden van bestandssystemen is shred niet effectief of\n"
+"is het niet gegarandeerd dat het werkt bij elke modus van het "
+"bestandssysteem:\n"
+"\n"
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"* log-gestructureerde of bestandssystemen met een journaal, zoals "
+"meegeleverd met\n"
+" AIX en Solaris (en JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* bestandssystemen die redundante gegevens wegschrijven en zelfs doorgaan "
+"als het\n"
+" schrijven fout gaat, zoals RAID-gebaseerde bestandssystemen\n"
+"\n"
+"* bestandssystemen die snapshots maken, zoals de NFS-server van Network "
+"Appliance\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+"* bestandssystemen die een cache bijhouden in tijdelijke locaties, zoals "
+"NFS\n"
+" versie 3 cliënts\n"
+"\n"
+"* gecomprimeerde bestandssystemen\n"
+"\n"
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+"In het geval van het ext3-bestandssysteem is de bovenstaande uitzondering "
+"van\n"
+"toepassing (en shred is dus beperkt effectief) alleen in de modus "
+"data=journal,\n"
+"die een journaal van bestandsgegevens maakt naast alleen de metadata. In de "
+"beide\n"
+"modussen, data=ordered (standaard) en data=writeback, werkt shred normaal.\n"
+"De Ext3-journaling modus kan gewijzigd worden door de optie data=iets\n"
+"bij de mount opties op te nemen voor een bepaald bestandssysteem in het /etc/"
+"fstab\n"
+"bestand, zoals gedocumenteerd in de mount-man-pagina (man mount).\n"
+"\n"
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+"Bovendien kunnen reservekopieën van bestandssystemen en spiegellocaties "
+"kopieën\n"
+"van het bestand bevatten die hiermee niet verwijderd worden en het dus "
+"mogelijk\n"
+"maakt dat later een shredded bestand hersteld kan worden.\n"
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr ""
+"%s: synchronisatie van data in geheugen en op schijf (fdatasync) mislukt"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr "%s: synchronisatie van data in geheugen en op schijf (fsync) mislukt"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s: kan niet terugspoelen"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: passeergang %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s: fout tijdens schrijven bij offset %s"
+
+#: src/shred.c:478
+#, c-format
+msgid "%s: lseek failed"
+msgstr "%s: zoekopdracht (lseek) mislukt"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s: bestand te groot"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: passeergang %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: passeergang %lu/%lu (%s)...%s/%s %d%%"
+
+#: src/shred.c:776
+#, c-format
+msgid "%s: fstat failed"
+msgstr "%s: opvragen van bestandsstatus (fstat) mislukt"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: ongeldig bestandstype"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: bestand heeft een negatieve grootte"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s: fout bij inkorten"
+
+#: src/shred.c:889
+#, c-format
+msgid "%s: fcntl failed"
+msgstr "%s: manipuleren van bestandsdescriptor (fcntl) mislukt"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s: kan een bestandseigenschap, alleen-toevoegen, niet vernietigen"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: bezig te verwijderen"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: hernoemd tot %s"
+
+#: src/shred.c:1018
+#, c-format
+msgid "%s: failed to remove"
+msgstr "%s: verwijderen mislukt"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: verwijderd"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, c-format
+msgid "%s: failed to close"
+msgstr "%s: sluiten mislukt"
+
+#: src/shred.c:1065
+#, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: openen voor schrijven is mislukt"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: ongeldig aantal passeergangen"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, c-format
+msgid "multiple random sources specified"
+msgstr "meer dan één random-bron gespecificeerd"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: ongeldige bestandsgrootte"
+
+#: src/shuf.c:51
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Gebruik: %s [OPTIE]... BESTAND\n"
+" of: %s -e [OPTIE]... [ARG]...\n"
+" of: %s -i LA-HO [OPTIE]...\n"
+
+#: src/shuf.c:57
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"Schrijf een willekeurige verwisseling van alle invoerregels naar "
+"standaarduitvoer.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -e, --echo gebruik elke ARG als een invoerregel\n"
+" -i, --input-range=LO-HI gebruik elk nummer LA tot HO als een "
+"invoerregel\n"
+" -n, --head-lines=LINES maximaal aantal regels uitvoer is LINES\n"
+" -o, --output=BESTAND schrijf resultaat naar BESTAND in plaats van "
+"standaarduitvoer\n"
+" --random-source=FILE haal random bytes uit FILE (standaard /dev/"
+"urandom)\n"
+" -z, --zero-terminated beëindig regels met 0 byte, niet nieuweregel\n"
+
+#: src/shuf.c:287
+#, c-format
+msgid "multiple -i options specified"
+msgstr "meer dan één -i optie gespecificeerd"
+
+#: src/shuf.c:307
+#, c-format
+msgid "invalid input range %s"
+msgstr "ongeldige invoerreeks %s"
+
+#: src/shuf.c:320
+#, c-format
+msgid "invalid line count %s"
+msgstr "ongeldig aantal regels %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr "meer dan één uitvoerbestand gespecificeerd"
+
+#: src/shuf.c:353
+#, c-format
+msgid "cannot combine -e and -i options"
+msgstr "kan -e en -i opties niet combineren"
+
+#: src/shuf.c:362
+#, c-format
+msgid "extra operand %s\n"
+msgstr "overtollige operand %s\n"
+
+#: src/sleep.c:47
+#, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Gebruik: %s NUMMER[ACHTERVOEGSEL]...\n"
+" of: %s OPTIE\n"
+"Pauzeer gedurende NUMMER seconden. ACHTERVOEGSEL mag respectievelijk 's' "
+"voor \n"
+"seconden (standaard), 'm' voor minuten, 'h' voor uren en 'd' voor dagen "
+"zijn.\n"
+"Anders dan in de meeste implementaties, die eisen dat NUMMER een geheel "
+"getal moet\n"
+"zijn, mag NUMMER hier een willekeurig drijvende kommagetal zijn.\n"
+" Bij twee of meer\n"
+"argumenten, wordt gepauzeerd gedurende een tijd die de som is van hun "
+"waarden.\n"
+"\n"
+
+#: src/sleep.c:138
+#, c-format
+msgid "invalid time interval %s"
+msgstr "ongeldig tijdinterval %s"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "kan de realtime klok niet lezen"
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"Schrijf de gesorteerde concatenatie van alle BESTAND(en) naar "
+"standaarduitvoer.\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+"Sorteeropties:\n"
+"\n"
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks negeer voorloop witruimte\n"
+" -d, --dictionary-order neem alleen witruimte en alfanumerieke "
+"karakters mee\n"
+" -f, --ignore-case beschouw kleine letters als hoofdletters\n"
+
+#: src/sort.c:326
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort vergelijk volgens de algemene numerieke "
+"waarde\n"
+" -i, --ignore-nonprinting neem alleen te printen karakters mee\n"
+" -M, --month-sort vergelijk volgens (onbekend) < `JAN' < ... < "
+"`DEC'\n"
+" -n, --numeric-sort vergelijk volgens numerieke waarde in de "
+"tekst\n"
+" -R, --random-sort sorteer volgens random hash van sleutels\n"
+" --random-source=FILE haal random bytes uit FILE (standaard /dev/"
+"urandom)\n"
+" -r, --reverse draai de volgorde van de vergelijking om\n"
+"\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+"Andere opties:\n"
+"\n"
+" -c, --check controleer of de invoer gesorteerd is; niet "
+"sorteren\n"
+" -C, --check=quiet, --check=silent zoals -c, maar geen rapport over de "
+"eerste foute regel\n"
+" --compress-program=PROG comprimeer tijdelijke bestanden met PROG;\n"
+" decomprimeer met PROG -d\n"
+" -k, --key=POS1[,POS2] start de sleutel in POS1, einde op POS2 (begin "
+"is 1)\n"
+" -m, --merge meng reeds gesorteerde bestanden; niet sorteren\n"
+
+#: src/sort.c:346
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+" -o, --output=BESTAND schrijf resultaat naar BESTAND in plaats van "
+"standaarduitvoer\n"
+" -s, --stable stabiliseer het sorteren door het uitzetten van "
+"de\n"
+" vergelijking als niets werkt\n"
+" -S, --buffer-size=GROOTTE gebruik GROOTTE voor de hoofdgeheugenbuffer\n"
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=SEP gebruik SEP in plaats van niet-wit naar wit "
+"overgang\n"
+" -T, --temporary-directory=MAP gebruik MAP voor tijdelijke bestanden, "
+"niet\n"
+" $TMPDIR of %s; meervoudige opties "
+"specificeren\n"
+" meervoudige mappen\n"
+" -u, --unique met -c, controleer op strikte ordening; zonder -"
+"c,\n"
+" alleen de eerste van iets wat gelijk is is "
+"uitvoer\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -z, --zero-terminated beëindig regels met een 0 byte, niet met "
+"nieuweregel\n"
+
+#: src/sort.c:363
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"POS is F[.C][OPTS], waarin F een veldnummer is en C de tekenpositie in het "
+"veld;\n"
+"beiden beginnen bij 1. Als de -t noch de -b optie is gebruikt dan worden "
+"de\n"
+"karakters in een veld geteld vanaf het begin van de voorafgaande witruimte. "
+"OPTS\n"
+"bestaat uit één of meer enkele-letter opties voor het ordenen, die de "
+"globale ordening\n"
+"voor dat sleutelwoord overstijgen. Indien geen sleutelwoord is gegeven dan "
+"wordt de\n"
+"hele regel gebruikt als sleutel.\n"
+"\n"
+"GROOTTE mag gevolgd woorden door de volgende "
+"vermenigvuldigingsachtervoegsels:\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"% 1% van het geheugen, b 1, K 1024 (standaard), enzovoort voor M, G, T, P, "
+"E, Z, Y.\n"
+"\n"
+"Zonder BESTAND, of als BESTAND - is, lees van standaardinvoer.\n"
+"\n"
+"*** WAARSCHUWING ***\n"
+"De taalregio gespecificeerd door de omgeving beïnvloedt de sorteervolgorde.\n"
+"Zet LC_ALL=C om de traditionele sorteervolgorde te verkrijgen die de gewone\n"
+"bytewaarde gebruikt.\n"
+
+#: src/sort.c:538
+#, c-format
+msgid "waiting for %s [-d]"
+msgstr "wacht op %s [-d]"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr "%s [-d] niet normaal beëindigd"
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "kan een tijdelijk bestand niet aanmaken"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "openen mislukt"
+
+#: src/sort.c:758
+msgid "fflush failed"
+msgstr "alles naar schijf wegschrijven (fflush) mislukt"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "sluiten mislukt"
+
+#: src/sort.c:772
+#, c-format
+msgid "dup2 failed"
+msgstr "dup2 mislukt"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr "kan %s niet uitvoeren"
+
+#: src/sort.c:880 src/sort.c:929
+msgid "couldn't create temporary file"
+msgstr "kan een tijdelijk bestand niet aanmaken"
+
+#: src/sort.c:903
+msgid "couldn't open temporary file"
+msgstr "kan een tijdelijk bestand niet openen"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr "kan %s -d niet uitvoeren"
+
+#: src/sort.c:924
+#, c-format
+msgid "couldn't create process for %s -d"
+msgstr "kan het proces %s -d niet aanmaken"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "schrijven mislukt"
+
+#: src/sort.c:975
+#, c-format
+msgid "warning: cannot remove: %s"
+msgstr "waarschuwing: kan %s niet verwijderen"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "grootte van sorteren"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "opvragen bestandsstatus (stat) mislukt"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "lezen mislukt"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: wanorde: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "standaardfoutuitvoer"
+
+#: src/sort.c:2562
+#, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: ongeldige veldspecificatie %s"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr "opties `-%s' passen niet bij alkaar"
+
+#: src/sort.c:2637
+#, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: ongeldig aantal bij het begin van %s"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "ongeldig getal na `-'"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "ongeldig getal na `.'"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "afwijkend karakter in veldspecificatie"
+
+#: src/sort.c:2934
+#, c-format
+msgid "multiple compress programs specified"
+msgstr "meer dan één compressieprogramma gespecificeerd"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "ongeldig getal aan het begin van een veld"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "veldnummer is nul"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "karakter-offset is nul"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "ongeldig getal na `,'"
+
+#: src/sort.c:3142
+#, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "overtollige operand %s niet toegestaan bij -%c"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Gebruik: %s [OPTIE] [INVOER [VOORVOEGSEL]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"Schrijf stukjes van INVOER met een vaste grootte naar VOORVOEGSELaa,\n"
+"VOORVOEGSELab, ...; standaard grootte is 1000 regels en standaard\n"
+"VOORVOEGSEL is `x'. Indien geen INVOER is gegeven, of INVOER is -, lees\n"
+"van standaardinvoer.\n"
+"\n"
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=L gebruik voorvoegsels met lengte L (standaard %d)\n"
+" -b, --bytes=N uitvoerbestanden zijn maximaal N bytes groot\n"
+" -C, --line-bytes=N uitvoerbestanden hebben regels met maximaal N "
+"bytes\n"
+" -d, --numeric-suffixes gebruik numerieke achtervoegsels in plaats van "
+"alfabetische\n"
+" -l, --lines=AANTAL uitvoerbestand bevat maximaal AANTAL regels\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose print de status naar standaardfoutuitvoer vlak\n"
+" voor elk uitvoerbestand wordt geopend\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"N mag worden gevolgd door: b voor 512, k voor 1K, m voor 1 Meg.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "Alle achtervoegsels voor uitvoerbestanden zijn verbruikt"
+
+#: src/split.c:211
+#, c-format
+msgid "creating file %s\n"
+msgstr "bestand %s wordt aangemaakt\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "kan niet op meer dan één manier splitsen"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: ongeldige lengte van achtervoegsel"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: ongeldig aantal bytes"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: ongeldig aantal regels"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "optie voor regellengte -%s%c... is te groot"
+
+#: src/split.c:518
+#, c-format
+msgid "invalid number of lines: 0"
+msgstr "ongeldig aantal regels: 0"
+
+#: src/stat.c:636
+#, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "waarschuwing: niet-herkende escape `\\%c'"
+
+#: src/stat.c:680
+#, c-format
+msgid "%s: invalid directive"
+msgstr "%s: ongeldige directieve"
+
+#: src/stat.c:726
+#, c-format
+msgid "warning: backslash at end of format"
+msgstr "waarschuwing: backslash aan het eind van een opmaakaanduiding"
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr "kan de informatie uit het filesysteem niet lezen voor %s"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Gebruik: %s [OPTIE] BESTAND...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+"Toon bestand of status van bestandssysteem.\n"
+"\n"
+" -L, --dereference volg koppelingen\n"
+" -f, --file-system toon status van bestandssysteem in plaats van status "
+"van bestand\n"
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+" -c --format=OPMAAK gebruik de gespecificeerde OPMAAK in plaats van de "
+"standaard;\n"
+" voer een nieuweregel-teken uit na elk gebruik van "
+"OPMAAK\n"
+" --printf=FORMAT zoals --format, echter interpreteer backslash-"
+"escapes,\n"
+" en geen uitvoer van een verplicht nieuweregel-"
+"teken.\n"
+" Als u een nieuweregel wilt, voeg dan \\n toe in "
+"OPMAAK.\n"
+" -t, --terse toon de informatie in beknopte vorm\n"
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"\n"
+"De geldige opmaakspecificaties voor bestanden (zonder --filesystem):\n"
+"\n"
+" %a Toegangsrechten in octale vorm\n"
+" %A Toegangsrechten in leesbare vorm\n"
+" %b Aantal toegewezen blokken (zie %B)\n"
+" %B De grootte in bytes van elk blok gerapporteerd door %b\n"
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+" %d Apparaatnummer in decimaal\n"
+" %D Apparaatnummer in hex\n"
+" %f Raw modus in hex\n"
+" %F Bestandstype\n"
+" %g Groeps-ID van gebruiker\n"
+" %G Groepsnaam van gebruiker\n"
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+" %h Aantal harde koppelingen\n"
+" %i Inode-nummer\n"
+" %n Bestandsnaam\n"
+" %N Aangehaalde bestandsnaam met 'dereference' indien een symbolische "
+"koppeling\n"
+" %o IO-blokgrootte\n"
+" %s Totale grootte, in bytes\n"
+" %t Hoofdapparaattype in hex\n"
+" %T Onderapparaattype in hex\n"
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+" %u Gebruikers-ID van eigenaar\n"
+" %U Gebruikersnaam van eigenaar\n"
+" %x Tijdstip van laatste toegang\n"
+" %X Tijdstip van laatste toegang in seconden sinds Epoch\n"
+" %y Tijdstip van laatste wijziging\n"
+" %Y Tijdstip van laatste wijziging in seconden sinds Epoch\n"
+" %z Tijdstip van laatste verandering\n"
+" %Z Tijdstip van laatste verandering in seconden sinds Epoch\n"
+"\n"
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"Geldige opmaakspecificatie voor bestandssystemen:\n"
+"\n"
+" %a Beschikbare vrije blokken voor de niet-superuser\n"
+" %b Totale aantal blokken voor gegevens in bestandssysteem\n"
+" %c Totale aantal nodes in bestandssysteem\n"
+" %d Aantal vrije nodes in bestandssysteem\n"
+" %f Aantal vrije blokken in bestandssysteem\n"
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+" %i Bestandssysteem-id in hex\n"
+" %l Maximale lengte van bestandsnamen\n"
+" %n Bestandsnaam\n"
+" %s Optimale grootte van transportblok\n"
+" %S Fundamentele blokgrootte (voor aantal blokken)\n"
+" %t Type in hex\n"
+" %T Type in leesbare vorm\n"
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Gebruik: %s [-F APPARAAT] [--file=APPARAAT] [INSTELLING]...\n"
+" of: %s [-F APPARAAT] [--file=APPARAAT] [-a|--all]\n"
+" of: %s [-F APPARAAT] [--file=APPARAAT] [-g|--save]\n"
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Toon of verander terminal karakteristieken.\n"
+"\n"
+" -a, --all toon alle huidige instellingen in een leesbare vorm\n"
+" -g, --save toon alle huidige instellingen in een stty leesbare "
+"vorm\n"
+" -F, --file=APPARAAT open en gebruik het gespecificeerde APPARAAT in "
+"plaats\n"
+" van standaardinvoer\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+"\n"
+"De optionele - voor INSTELLING betekent omkering (niet-). Een * markeert\n"
+"niet-POSIX instellingen. Het onderliggende systeem definieert welke\n"
+"instellingen beschikbaar zijn.\n"
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"\n"
+"Speciale karakters:\n"
+" * dsusp KAR KAR zendt een terminal stop signaal nadat invoer verwijderd "
+"is\n"
+" eof KAR KAR zendt een einde van bestand (beëindig de invoer)\n"
+" eol KAR KAR beëindigt de regel\n"
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+" * eol2 KAR alternatief KAR voor einde van de regel\n"
+" erase KAR KAR verwijdert het laatst getypte karakter\n"
+" intr KAR KAR zendt een interruptsignaal\n"
+" kill KAR KAR verwijdert de huidige regel\n"
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+" * lnext KAR KAR zal het volgende KARakter aangehaald invoeren\n"
+" quit KAR KAR zendt een beëindig-signaal\n"
+" * rprnt KAR KAR herschrijft de huidige regel\n"
+" start KAR KAR herstart de uitvoer nadat deze is gestopt\n"
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+" stop KAR KAR stopt de uitvoer\n"
+" susp KAR KAR zendt een terminal-stop-signaal\n"
+" * swtch KAR KAR schakelt naar een andere shell-laag\n"
+" * werase KAR KAR verwijdert het laatst getypte woord\n"
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"\n"
+"Speciale instellingen:\n"
+" N zet de invoer- en uitvoersnelheid naar N bits per seconde\n"
+" * cols N laat de kernel weten dat de terminal N kolummen heeft\n"
+" * columns N zelfde als cols N\n"
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+" ispeed N zet de invoersnelheid naar N\n"
+" * line N gebruik regeldiscipline N\n"
+" min N met -icanon, zet N karakters minimum voor een complete "
+"leesopdracht\n"
+" ospeed N zet de uitvoersnelheid naar N\n"
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+" * rows N laat de kernel weten dat de terminal N rijen heeft\n"
+" * size toon het aantal rijen en kolummen volgens de kernel\n"
+" speed toon de snelheid van de terminal\n"
+" time N met -icanon, zet lees-timeout op N tienden van een seconde\n"
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"\n"
+"Controle instellingen:\n"
+" [-]clocal zet de modem-control-signalen uit\n"
+" [-]cread sta het ontvangen van invoer toe\n"
+" * [-]crtscts zet RTS/CTS handjeschudden aan\n"
+" csN zet de karaktergrootte op N bits, N is [5..8]\n"
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+" [-]cstopb gebruik twee stop bits per karakter (een met `-')\n"
+" [-]hup stuur een `hang op' signaal wanneer het laatste proces \n"
+" de tty sluit\n"
+" [-]hupcl zelfde als [-]hup\n"
+" [-]parenb genereer pariteitsbit in uitvoer en \n"
+" verwacht pariteitsbit in invoer\n"
+" [-]parodd zet oneven pariteit aan (even met `-')\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"\n"
+"Invoerinstellingen:\n"
+" [-]brkint break geeft een interrupt-signal\n"
+" [-]icrnl vertaal een 'carriage return' naar een nieuwregel\n"
+" [-]ignbrk negeer break-karakters\n"
+" [-]igncr negeer 'carriage return'\n"
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+" [-]ignpar negeer karakters met een pariteitsfout\n"
+" * [-]imaxbel geef een piep en leeg een volle invoerbuffer niet bij een "
+"karakter\n"
+" [-]inlcr vertaal een nieuwregel naar 'carriage return'\n"
+" [-]inpck zet controle op invoerpariteit aan\n"
+" [-]istrip zet het hoogste (8ste) bit op nul van invoerkarakters\n"
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr " * [-]iutf8 invoerkarakters zijn UTF-8 gecodeerd\n"
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+" * [-]iuclc vertaal hoofdletters naar`kleine letters\n"
+" * [-]ixany laat elk karakter de uitvoer herstarten, niet alleen het "
+"start-karakter\n"
+" [-]ixoff zet het zenden van start/stop-karakters aan\n"
+" [-]ixon zet XON/XOFF 'flow control' aan\n"
+" [-]parmrk markeer pariteitsfouten (met een 255-0-karaktervolgorde)\n"
+" [-]tandem zelfde als [-]ixoff\n"
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"\n"
+"Uitvoerinstellingen:\n"
+" * bsN backspace-vertragingsstijl, N is [0..1]\n"
+" * crN 'carriage return'-vertragingsstijl, N in [0..3]\n"
+" * ffN 'form feed'-vertragingsstijl, N in [0..1]\n"
+" * nlN nieuweregel-vertragingsstijl, N in [0..1]\n"
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+"* [-]ocrnl zet 'carriage return' om in nieuweregel\n"
+"* [-]ofdel gebruik delete karakters voor 'fill' in plaats van nul-"
+"karakters\n"
+"* [-]ofill gebruik fill (padding) karakters in plaats van timing voor \n"
+" vertragingen\n"
+"* [-]olcuc zet kleine letters om in hoofdletters\n"
+"* [-]onlcr zet nieuweregel om in 'carriage return'-nieuweregel\n"
+"* [-]onlret nieuweregel voert een 'carriage return' uit\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+"* [-]onocr toon geen 'carriage returns' in de eerste kolom\n"
+" [-]opost na-proces-uitvoer\n"
+"* tabN horizontale tab vertragingsstijl, N is [0..3]\n"
+"* tabs zelfde als tab0\n"
+"* -tabs zelfde als tab3\n"
+"* vtN verticale tab vertragingsstijl, N is [0..1]\n"
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"\n"
+"Locale instellingen:\n"
+" [-]crterase echo erase-karakters als backspace-spatie-backspace\n"
+" * crtkill verwijder de gehele regel door de echoprt en echoe "
+"instellingen\n"
+" * -crtkill verwijder de gehele regel door de echoctl and echok "
+"instellingen\n"
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+" * [-]ctlecho echo controlekarakters in dakjesnotatie (`^c')\n"
+" [-]echo echo invoerkarakters\n"
+" * [-]echoctl zelfde als [-]ctlecho\n"
+" [-]echoe zelfde als [-]crterase\n"
+" [-]echok echo een nieuweregel na een kill-karakter\n"
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+" * [-]echoke zelfde als [-]crtkill\n"
+" [-]echonl echo nieuwregel zelfs als geen andere karakters worden "
+"geëchood\n"
+" * [-]echoprt echo verwijderde karakters achterwaards, tussen `\\' en "
+"'/'\n"
+" [-]icanon zet de speciale karakters voor erase, kill, werase, and "
+"rprnt\n"
+" [-]iexten zet niet-POSIX speciale karakters aan\n"
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+" [-]isig zet speciale karakters voor interrupt, quit, en suspend "
+"aan\n"
+" [-]noflsh zet het legen van de buffer na interrupt en quit speciale "
+"karakters uit\n"
+" * [-]prterase zelfde als [-]echoprt\n"
+" * [-]tostop stop actergrondjobs die naar de terminal proberen te "
+"schrijven\n"
+" * [-]xcase met icanon, escape met `\\' voor hoofdletters\n"
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+"\n"
+"Combinatieinstellingen:\n"
+" * [-]LCASE zelfde als [-]lcase\n"
+" cbreak zelfde als -icanon\n"
+" -cbreak zelfde als icanon\n"
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+" cooked zelfde als brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof en eol karakters op hun standaard waarden\n"
+" -cooked zelfde als raw\n"
+" crt zelfde als echoe echoctl echoke\n"
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+" dec zelfde als echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq zelfde als [-]ixany\n"
+" ek erase en kill karakters op hun standaard waarden\n"
+" evenp zelfde als parenb -parodd cs7\n"
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+" -evenp zelfde als -parenb cs8\n"
+" * [-]lcase zelfde als xcase iuclc olcuc\n"
+" litout zelfde als -parenb -istrip -opost cs8\n"
+" -litout zelfde als parenb istrip opost cs7\n"
+" nl zelfde als -icrnl -onlcr\n"
+" -nl zelfde als icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+" oddp zelfde als parenb parodd cs7\n"
+" -oddp zelfde als -parenb cs8\n"
+" [-]parity zelfde als [-]evenp\n"
+" pass8 zelfde als -parenb -istrip cs8\n"
+" -pass8 zelfde als parenb istrip cs7\n"
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+" raw zelfde als -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw zelfde als cooked\n"
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+" sane zelfde als cread -ignbrk brkint -inlcr -igncr icrnl\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, alle speciale\n"
+" karakters op hun standaard waarden.\n"
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"Gebruik de tty lijn verbonden met standaardinvoer. Zonder argumenten,\n"
+"toon baudrate, regeldiscipline en afwijkingen van stty sane. Bij het\n"
+"instellen wordt KAR letterlijk gebruikt, of gecodeerd als in ^c, 0x37,\n"
+"0177 of 127; speciale waarden ^- of undef worden gebruikt om speciale\n"
+"karakters inactief te maken.\n"
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr "slechts één apparaat mag gegeven worden"
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+"de opties voor verbose en stty-leesbare uitvoerstijlen sluiten elkaar uit"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "bij specificeren van een uitvoerstijl, worden modussen niet ingesteld"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: kan de niet-blokkerende modus niet herstellen"
+
+#: src/stty.c:885 src/stty.c:995
+#, c-format
+msgid "invalid argument %s"
+msgstr "ongeldig argument %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, c-format
+msgid "missing argument to %s"
+msgstr "ontbrekend argument voor %s"
+
+#: src/stty.c:976
+#, c-format
+msgid "invalid line discipline %s"
+msgstr "ongeldige lijndiscipline: %s"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: kan niet alle gevraagde acties uitvoeren"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "new_mode: modus\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: geen grootte-informatie voor dit apparaat"
+
+#: src/stty.c:1888
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "ongeldig argument voor geheel getal %s"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Wachtwoord:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: kan /dev/tty niet openen"
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "kan de groepen niet zetten"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "kan de groep-id niet zetten"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "kan de gebruikers-id niet zetten"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Gebruik: %s [OPTIE]... [-] [GEBRUIKER [ARG}...]\n"
+
+#: src/su.c:386
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Verander de effectieve gebruikers-id en groeps-id in die van GEBRUIKER.\n"
+"\n"
+" -, -l, --login maak van de shell een login shell\n"
+" -c, --commmand=COMMANDO stuur een enkel COMMANDO naar de shell met -"
+"c\n"
+" -f, --fast stuur -f naar de shell (voor csh of tcsh)\n"
+" -m, --preserve-environment reset de omgevingsvariabelen niet\n"
+" -p zelfde als -m\n"
+" -s, --shell=SHELL voer SHELL uit als /etc/shells dit toestaat\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+"\n"
+"Een simpele - betekent -l. Als GEBRUIKER niet gegeven is, neem dan root.\n"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "gebruiker %s bestaat niet"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "onjuist wachtwoord"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "bezig beperkte shell %s te gebruiken"
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "waarschuwing: kan map niet wijzigen in %s"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Print controlesom en aantal blokken voor elk BESTAND.\n"
+"\n"
+" -r verijdelt -s, gebruik BSD sommatie-algoritme, gebruik 1K "
+"blokken\n"
+" -s, --sysv gebruik System V sommatie-algoritme, gebruik 512 bytes "
+"blokken\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+"Schrijf veranderde blokken naar schijf, werk het super-blok bij.\n"
+"\n"
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "alle argumenten genegeerd"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+"\n"
+"OPMERKING: uw shell kan een eigen versie van %s hebben, die gewoonlijk\n"
+"prevaleert boven de hier beschreven versie. Kijk in de documentatie van uw\n"
+"shell voor details over de ondersteunde opties.\n"
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help toon deze helptekst en beëindig programma\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version toon versie-informatie en beëindig programma\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Schrijf elk BESTAND naar de standaarduitvoer, laatste regel eerst.\n"
+"Zonder BESTAND, of wanneer BESTAND - is, lees van standaardinvoer.\n"
+"\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before plaats scheider voor i.p.v. achter de regel\n"
+" -r, --regex interpreteer de scheider als reguliere expressie\n"
+" -s, --separator=TEKST gebruik TEKST als scheider in plaats van "
+"nieuweregel\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, c-format
+msgid "%s: seek failed"
+msgstr "%s: zoekopdracht lukte niet"
+
+#: src/tac.c:265
+#, c-format
+msgid "record too large"
+msgstr "record te groot"
+
+#: src/tac.c:459
+#, c-format
+msgid "cannot create temporary file %s"
+msgstr "kan tijdelijk bestand %s niet aanmaken"
+
+#: src/tac.c:466
+#, c-format
+msgid "cannot open %s for writing"
+msgstr "kan %s niet openen om te schrijven"
+
+#: src/tac.c:487 src/tac.c:494
+#, c-format
+msgid "%s: write error"
+msgstr "%s: fout bij schrijven"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "scheidingsteken kan niet leeg zijn"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Kopieer de laatste %d regels van elk BESTAND naar standaarduitvoer.\n"
+"Indien meerdere BESTANDen gegeven zijn, wordt de uitvoer van ieder\n"
+"bestand voorafgegaan door een kop met de bestandsnaam. Indien geen\n"
+"BESTAND gegeven is, of BESTAND is -, lees van standaardinvoer.\n"
+"\n"
+
+#: src/tail.c:229
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry blijf het openen van een bestand proberen zelfs "
+"als het\n"
+" niet toegankelijk is als tail start of als het "
+"later\n"
+" niet toegankelijk is; alleen bruikbaar bij volgen "
+"bij\n"
+" naam , d.w.z. met --follow=name\n"
+" -c, --bytes=N toon de laatste N bytes; alternatief, gebruik +N "
+"om\n"
+" de bytes te tonen vanaf de Nde van elk bestand\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={name|descriptor}]\n"
+" toon de toegevoegde gegevens terwijl het bestand "
+"groeit;\n"
+" -f, --follow, and --follow=descriptor zijn "
+"equivalent\n"
+" -F zelfde als --follow=name --retry\n"
+
+#: src/tail.c:244
+#, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=N toon de laatste N regels, in plaats van de "
+"laatste %d;\n"
+" of gebruik +N om de regels te tonen vanaf de "
+"Nde --max-unchanged-stats=N\n"
+" met --follow=name, heropen een BESTAND die niet\n"
+" in grootte veranderd is na N (standaard %d) "
+"iteraties\n"
+" om te zien of het ontkoppeld of hernoemd is\n"
+" (dit is gebruikelijk bij roterende logbestanden)\n"
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID met -f, beëindig nadat process-ID, PID, stopt\n"
+" -q, --quiet, --silent geen uitvoerkoppen met bestandsnamen\n"
+" -s, --sleep-interval=S met -f, slaap ongeveer S seconden\n"
+" (standaard 1.0) tussen iteraties.\n"
+" -v, --verbose altijd uitvoerkoppen met bestandsnamen\n"
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"Als het eerste karakter van N (het aantal bytes of regels) een `+' is,\n"
+"toon alles vanaf het Nde item vanaf de start van elk bestand, anders,\n"
+"toon de laatste N items in het bestand. N mag een vermenigvuldigings-\n"
+"achtervoegsel hebben: b 512, k 1024, m 1024*1024.\n"
+"\n"
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"Met --follow (-f), tail volgt standaard de 'file descriptor', dat\n"
+"betekent dat zelfs wanneer een bestand hernoemd is, tail het einde van dat\n"
+"bestand blijft volgen. "
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"Dit standaard gedrag is niet wenselijk als u echt de naam van een bestand "
+"wil\n"
+"volgen en niet de 'file descriptor' (bijv. logrotatie).\n"
+"Gebruik --follow=name in dat geval. Dat veroorzaakt dat tail het genoemde\n"
+"bestand periodiek opnieuw opent om te zien of het is verwijderd en\n"
+"opnieuw gemaakt door een of ander programma.\n"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "%s wordt gesloten (fd=%d)"
+
+#: src/tail.c:411
+#, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: kan de zoekopdracht tot de relatieve offset %s niet uitvoeren"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s: kan de zoekopdracht tot einde-relatieve offset %s niet uitvoeren"
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr "%s is ontoegankelijk geworden"
+
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+"%s is vervangen door een bestand dat niet gevolgd kan worden; gestopt met "
+"deze naam"
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr "%s is toegankelijk geworden"
+
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "%s is beschikbaar; bezig het einde van het nieuwe bestand te volgen"
+
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "%s is vervangen; bezig het einde van het nieuwe bestand te volgen"
+
+#: src/tail.c:1025
+#, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: kan de niet-blokkerende modus niet herstellen"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: bestand ingekort"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "geen bestanden meer over"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+"%s: kan het einde van dit type bestand niet volgen; gestopt met deze naam"
+
+#: src/tail.c:1439
+#, c-format
+msgid "number in %s is too large"
+msgstr "nummer in %s is te groot"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr "%s: ongeldig maximaal aantal onveranderde statussen tussen openen"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: ongeldig procesnummer"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: ongeldig aantal seconden"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr "optie gebruikt in een ongeldige context -- %c"
+
+#: src/tail.c:1566
+#, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr ""
+"waarschuwing: --retry is meestal alleen zinvol als het gevolgd wordt door "
+"een naam"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+"waarschuwing: procesnummer genegeerd; --pid=PROCES is alleen zinvol bij "
+"volgen"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "waarschuwing: --pid=PROCES wordt niet ondersteund op dit systeem"
+
+#: src/tail.c:1667
+#, c-format
+msgid "cannot follow %s by name"
+msgstr "kan %s niet via de naam volgen"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+"waarschuwing: het volgen van standaardinvoer zonder beperking is niet "
+"effectief"
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Kopieer standaardinvoer naar elk BESTAND, en ook naar standaarduitvoer.\n"
+"\n"
+" -a, --append toevoegen aan opgegeven BESTAND, overschrijf "
+"niets\n"
+" -i, --ignore-interrupts negeer interrupt signalen\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Als een BESTAND - is, kopieer dan nog eens naar standaarduitvoer.\n"
+
+#: src/test.c:125
+#, c-format
+msgid "missing argument after %s"
+msgstr "ontbrekend argument na %s"
+
+#: src/test.c:161
+#, c-format
+msgid "invalid integer %s"
+msgstr "ongeldig geheel getal %s"
+
+#: src/test.c:242
+msgid "')' expected"
+msgstr "verwacht ')'"
+
+#: src/test.c:245
+#, c-format
+msgid "')' expected, found %s"
+msgstr "verwacht ')', vond %s"
+
+#: src/test.c:261 src/test.c:606
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: verwacht unaire operator"
+
+#: src/test.c:330
+msgid "-nt does not accept -l"
+msgstr "-nt accepteert geen -l"
+
+#: src/test.c:343
+msgid "-ef does not accept -l"
+msgstr "-ef accepteert geen -l"
+
+#: src/test.c:359
+msgid "-ot does not accept -l"
+msgstr "-ot accepteert geen -l"
+
+#: src/test.c:368
+msgid "unknown binary operator"
+msgstr "onbekende binaire operator"
+
+#: src/test.c:634
+#, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: verwacht binaire operator"
+
+#: src/test.c:694
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Gebruik: test EXPRESSIE\n"
+" of: test\n"
+" of: [ EXPRESSIE ]\n"
+" of: [ ]\n"
+" of: [ OPTIE\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"Beëindig met de status die bepaald wordt door EXPRESSIE.\n"
+"\n"
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"\n"
+"Een ontbrekende EXPRESSIE heeft de standaardwaarde onwaar. Anders is\n"
+"EXPRESSIE waar of onwaar en zet de afsluitstatus. Het is één van:\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+"\n"
+" ( EXPRESSIE ) EXPRESSIE is waar\n"
+" ! EXPRESSIE EXPRESSIE is onwaar\n"
+" EXPRESSIE1 -a EXPRESSIE2 beide, EXPRESSIE1 en EXPRESSIE2, zijn waar\n"
+" EXPRESSIE1 -o EXPRESSIE2 òf EXPRESSIE1 òf EXPRESSIE2 is waar\n"
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"\n"
+" -n TEKST de lengte van TEKST is niet-nul\n"
+" TEKST zelfde als -n TEKST\n"
+" -z TEKST de lengte of TEKST is nul\n"
+" TEKST1 = TEKST2 de teksten zijn gelijk\n"
+" TEKST1 != TEKST2 de teksten zijn niet gelijk\n"
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is gelijk aan INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is groter dan of gelijk aan INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is groter dan INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is kleiner dan of gelijk aan INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is kleiner dan INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is niet gelijk aan INTEGER2\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+"\n"
+" BESTAND1 -ef BESTAND2 BESTAND1 en BESTAND2 hebben dezelfde apparaat- en "
+"inode-nummers\n"
+" BESTAND1 -nt BESTAND2 BESTAND1 is nieuwer (modificatie datum) dan "
+"BESTAND2\n"
+" BESTAND1 -ot BESTAND2 BESTAND1 is ouder dan BESTAND2\n"
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+"\n"
+" -b BESTAND BESTAND bestaat en is blok-speciaal\n"
+" -c BESTAND BESTAND bestaat en is karakter-speciaal\n"
+" -d BESTAND BESTAND bestaat en is een map\n"
+" -e BESTAND BESTAND bestaat\n"
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+" -f BESTAND BESTAND bestaat en is een gewoon BESTAND\n"
+" -g BESTAND BESTAND bestaat en heeft zet-groeps-ID\n"
+" -G BESTAND BESTAND bestaat en de eigenaar heeft de effectieve groeps-"
+"ID\n"
+" -h BESTAND BESTAND bestaat en is een symbolische koppeling (zelfde als "
+"-L)\n"
+" -k BESTAND BESTAND bestaat en heeft zijn sticky bit gezet\n"
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+" -L BESTAND BESTAND bestaat en is een symbolische koppeling (zelfde als "
+"-h)\n"
+" -O BESTAND BESTAND bestaat en de eigenaar heeft de effectieve "
+"gebruikers-ID\n"
+" -p BESTAND BESTAND bestaat en is een benoemde pijp\n"
+" -r BESTAND BESTAND bestaat en mag gelezen worden\n"
+" -s BESTAND BESTAND bestaat en heeft een grootte groter dan nul\n"
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+" -S BESTAND BESTAND bestaat en is een socket\n"
+" -t FD 'file descriptor' FD is geopend op een terminal\n"
+" -u BESTAND BESTAND bestaat en zijn zet-gebruikers-ID bit is gezet\n"
+" -w BESTAND BESTAND bestaat en er mag naar geschreven worden\n"
+" -x BESTAND BESTAND bestaat en is uit te voeren (of er mag in gezocht "
+"worden)\n"
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"Behalve bij -h en -L, volgen alle testen op BESTANDen de symbolische\n"
+"koppelingen.\n"
+"Let op dat haakjes moeten worden geescaped (bijv. door backslashes)\n"
+"in shells. INTEGER mag ook -l TEKST zijn, wat resulteert in de\n"
+"lengte van TEKST.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr "test en/of ["
+
+#: src/test.c:831
+msgid "missing `]'"
+msgstr "ontbrekende `]'"
+
+#: src/test.c:846
+#, c-format
+msgid "extra argument %s"
+msgstr "overtollig argument: %s"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "ongeldige opmaak voor datum %s"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "bezig %s aan te maken"
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr "kan touch %s niet uitvoeren"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "bezig de tijden van %s te zetten"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+"Zet de toegangs- en wijzigingstijden van elk BESTAND op de huidige tijd.\n"
+"\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a verander alleen de toegangstijd\n"
+" -c, --no-create maak geen nieuwe bestanden\n"
+" -d, --date=TEKST ontleed TEKST en gebruik dat in plaats van de "
+"huidige tijd\n"
+" -f (genegeerd)\n"
+" -m verander alleen de wijzigingstijd\n"
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --reference=BESTAND gebruik de tijden van dit bestand in plaats van de "
+"huidige tijd\n"
+" -t STAMP gebruik [[CC]YY]MMDDhhmm[.ss] in plaats van de "
+"huidige tijd\n"
+" --time=WORD zet de gegeven tijd:\n"
+" WORD is access, atime of use: zelfde als -a\n"
+" WORD is modify of mtime: zelfde als -m\n"
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"Merk op dat de -d en -t opties verschillende opmaken van tijd-datum "
+"accepteert.\n"
+"\n"
+"Als BESTAND is -, touch' standaarduitvoer.\n"
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "kan de tijden niet uit meer dan één bron halen"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+"waarschuwing: `touch %s' is verouderd; gebruik `touch -t %04ld%02d%02d%02d%"
+"02d.%02d'"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Gebruik: %s [OPTIE]... SET1 [SET2]\n"
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Vertaal, druk samen, en/of verwijder karakters vanuit standaardinvoer,\n"
+"uitvoer naar standaarduitvoer.\n"
+"\n"
+" -c, --complement eerst SET1 complementeren\n"
+" -d, --delete verwijder karakters in SET1, niet vertalen\n"
+" -s, --squeeze-repeats vervang in de invoer een herhaling van karakters\n"
+" uit SET1 door één enkel van hetzelfde karakter\n"
+" -t, --truncate-set1 verkort SET1 eerst tot de lengte van SET2\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"SETs worden gespecificeerd als karakterreeksen. De meesten "
+"vertegenwoordigen\n"
+"zichzelf. Geinterpreteerde sequencies zijn:\n"
+"\n"
+" \\NNN karakter met octale waarde NNN (1 tot 3 octale cijfers)\n"
+" \\\\ backslash\n"
+" \\a hoorbare BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n nieuweregel\n"
+" \\r return\n"
+" \\t horizontale tab\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v verticale tab\n"
+" CHAR1-CHAR2 alle karakters van CHAR1 tot CHAR2 in oplopende volgorde\n"
+" [CHAR*] in SET2, kopieën van CHAR tot de lengte van SET1\n"
+" [CHAR*REPEAT] REPEAT kopieën van CHAR, REPEAT is octaal als het start "
+"met 0\n"
+" [:alnum:] alle letters en cijfers\n"
+" [:alpha:] alle letters\n"
+" [:blank:] alle horizontale witruimte\n"
+" [:cntrl:] alle controle karakters\n"
+" [:digit:] alle cijfers\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] alle printbare karakters, zonder spatie\n"
+" [:lower:] alle kleine letters\n"
+" [:print:] alle printbare karakters, inclusief spatie\n"
+" [:punct:] alle punctuatie karakters\n"
+" [:space:] alle horizontale of verticale witruimte\n"
+" [:upper:] alle hoofdletters\n"
+" [:xdigit:] alle hexadecimale karakters\n"
+" [=KAR=] alle karakters die overeenkomen met KAR\n"
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"Vertaling treedt op als -d niet gegeven is en SET1 en SET2 beide voorkomen.\n"
+"-t mag alleen gebruikt worden bij vertaling. SET2 zal, indien nodig, "
+"verlengd\n"
+"worden tot de lengte van SET1 door herhaling van het laatste karakter. "
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"Overbodige karakters van SET2 worden genegeerd. Alleen [:lower:] en [:"
+"upper:]\n"
+"worden zeker geexpandeerd in oplopende volgorde; gebruikt in SET2, bij\n"
+"vertaling, mogen ze alleen worden gebruikt in paren om hoofd-kleine letter\n"
+"conversie te specificeren. "
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"-s gebruikt SET1 als niet vertaald noch verwijderd wordt; anders gebruikt\n"
+"squeezing SET2 na vertaling of verwijdering.\n"
+
+#: src/tr.c:519
+#, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"waarschuwing: het octale teken \\%c%c%c is niet eenduidig en wordt\n"
+"\tgeïnterpreteerd als de twee bytes sequentie \\0%c%c, %c"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "de eindpunten van het bereik `%s-%s' zijn in tegengestelde volgorde"
+
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "ongeldig herhalingsaantal %s in [c*n] konstruktie"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "ontbrekende naam van tekenklasse `[::]'"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "ontbrekend teken in equivalentie-tekenklasse `[==]'"
+
+#: src/tr.c:937
+#, c-format
+msgid "invalid character class %s"
+msgstr "ongeldige tekenklasse %s"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: equivalente-klasse operand moet een enkel teken zijn"
+
+#: src/tr.c:1275
+#, c-format
+msgid "too many characters in set"
+msgstr "te veel karakters in de set"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "de [c*] herhalingsconstructie mag niet voorkomen in SET1"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "een enkele [c*] herhalingsconstructie mag voorkomen in SET2"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "[=c=] expressies mogen niet voorkomen in SET2 bij vertalen"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "als SET1 niet ingekort wordt, mag SET2 niet leeg zijn"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"bij vertalen met complementaire tekenklassen,\n"
+"moet SET2 alle tekens in het domein naar één afbeelden"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"bij vertalen, zijn alleen de tenklassen `upper' en `lower' toegestaan in\n"
+"SET2"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "de [c*] constructie mag alleen in SET2 voorkomen tijdens vertaling"
+
+#: src/tr.c:1731
+msgid "Two strings must be given when translating."
+msgstr "Bij vertalen zijn twee tekenreeksen nodig."
+
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"Alleen één tekenreeks mag aanwezig zijn bij verwijderen zonder "
+"samendrukkende herhalingen."
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "verkeerd uitgelijnde constructie met [:upper:] en/of [:lower:]"
+
+#: src/true.c:42
+#, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik: %s [argumenten worden genegeerd]\n"
+" of: %s OPTIE\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr "Beëindig met de statuscode succes."
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Gebruik: %s [OPTIE] [BESTAND]\n"
+"Geef een totaal gesorteerde lijst, overeenkomstig de gedeeltelijke\n"
+"volgorde in BESTAND.\n"
+"Zonder BESTAND of als BESTAND - is, lees van de standaardinvoer.\n"
+"\n"
+
+#: src/tsort.c:474
+#, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: invoer bevat een oneven aantal tokens"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: invoer bevat een rondkoppeling:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Gebruik: %s [OPTIE]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Toon de bestandsnaam van de terminal verbonden met standaardinvoer.\n"
+"\n"
+" -s, --silent, --quiet toon niets, retourneer alleen de afsluitstatus\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "geen tty"
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Toon bepaalde systeeminformatie. Zonder OPTIE, zelfde als -s.\n"
+"\n"
+" -a, --all toon alle informatie in de volgende volgorde,\n"
+" laat -p en -i weg als deze onbekend zijn:\n"
+" -s, --kernel-name toon de naam van de kernel\n"
+" -n, --nodename toon hostnaam van de node in het netwerk\n"
+" -r, --kernel-release toon de release van de kernel\n"
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v, --kernel-version toon de versie van de kernel\n"
+" -m, --machine toon de hardwarenaam van de machine\n"
+" -p, --processor toon het processor type of \"unknown\"\n"
+" -i, --hardware-platform toon het hardware platvorm of \"unknown\"\n"
+" -o, --operating-system toon het besturingssysteem\n"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "kan de naam van het systeem niet vinden "
+
+#: src/unexpand.c:125
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Vervang witruimte in elk BESTAND door tabs, uitvoer naar standaarduitvoer.\n"
+"Zonder BESTAND of BESTAND is -, lees van standaardinvoer.\n"
+"\n"
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all vervang alle, in plaats van alleen de initiële "
+"witruimte\n"
+" --first-only vervang alleen de initiële witruimte (gaat boven -a "
+"uit)\n"
+" -t, --tabs=NUMMER maak tabs NUMMER karakters breed in plaats van 8 (zet -"
+"a)\n"
+" -t, --tabs=LIJST gebruik kommagescheiden LIJST van tab posities (zet -"
+"a)\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr "tabs staan te ver van elkaar"
+
+#: src/unexpand.c:512
+#, c-format
+msgid "tab stop value is too large"
+msgstr "tab-positie is te groot"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Gebruik: %s [OPTIE]... [INVOER [UITVOER]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"Verwijder op één na alle opeenvolgende identieke regels uit INVOER (of\n"
+"standaardinvoer), schrijf naar UITVOER (of standaarduitvoer).\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count zet het aantal gelijke regels vooraan de regel\n"
+" -d, --repeated toon alleen meervoudige regels\n"
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated[=delimit-method] toon alle meervoudige regels\n"
+" delimit-method={none(standaard),prepend,separate}\n"
+" Het aangeven (delimiting) wordt gedaan met blanco "
+"regels.\n"
+" -f, --skip-fields=N de eerste N velden niet vergelijken\n"
+" -i, --ignore-case negeer hoofd-kleine letters bij vergelijken\n"
+" -s, --skip-chars=N de eerste N karakters niet vergelijken\n"
+" -u, --unique toon alleen unieke regels\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+" -w, --check-chars=N vergelijk niet meer dan N karakters in regels\n"
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"Een veld is witruimte, daarna niet-witruimte karakters.\n"
+"Velden worden overgeslagen vòòr karakters.\n"
+
+#: src/uniq.c:350
+#, c-format
+msgid "too many repeated lines"
+msgstr "te veel herhaalde regels"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "ongeldig aantal velden om over te slaan"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "ongeldig aantal bytes om over te slaan"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "ongeldig aantal bytes om te vergelijken"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+"het afdrukken van alle gelijke regels en het aantal keren dat een regel "
+"voorkomt is onzin"
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik: %s BESTAND\n"
+" of %s OPTIE\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"Roep de 'unlink' functie aan om het gespecificeerde BESTAND te verwijderen.\n"
+"\n"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "kan %s niet verwijderen"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "kan geen boot-tijd vinden"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s in bedrijf "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "am"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "pm"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr " ??:???? in bedrijf "
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr "???? dagen ??:??, "
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%ld dag"
+msgstr[1] "%ld dagen"
+
+#: src/uptime.c:147
+#, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%lu gebruiker"
+msgstr[1] "%lu gebruikers"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", belastinggemiddelde: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Gebruik: %s [OPTIE]... [ BESTAND ]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Toon de huidige tijd, de tijd dat het systeem in bedrijf is, het\n"
+"aantal gebruikers op het systeem en het gemiddelde aantal jobs in\n"
+"de run-rij over de laatste 1, 5 en 15 minuten.\n"
+"Als BESTAND niet gegeven is, gebruik %s. %s als BESTAND is algemeen.\n"
+"\n"
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Uitvoer van who wordt op dit moment bijgehouden volgens BESTAND. Als\n"
+"BESTAND niet gegeven is, gebruik %s. %s als BESTAND is algemeen.\n"
+"\n"
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Toon het aantal nieuweregeltekens, woorden en bytes voor elk BESTAND, en "
+"een\n"
+"totaalregel als meer dan één BESTAND is gegeven. Zonder BESTAND\n"
+"of BESTAND is -, lees van standaardinvoer.\n"
+" -c, --bytes, toon het aantal bytes\n"
+" -m, --chars toon het aantal karakters\n"
+" -l, --lines- toon het aantal (nieuwe)regels\n"
+
+#: src/wc.c:121
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" --files0-from=F lees invoer uit de gespecificeerde bestanden in\n"
+" bestand F; NUL-beëindigde bestandsnamen\n"
+" -L, --max-line-length toon de lengte van de langste regel\n"
+" -w, --words toon het aantal woorden\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+"bij lezen van bestandsnamen van standaardinvoer is bestandsnaam van %s niet "
+"toegestaan"
+
+#: src/who.c:212
+msgid " old "
+msgstr " oud "
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "term="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "exit="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "verandering in klok"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "run-niveau"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "laatste="
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"aantal gebruikers=%lu\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "NAAM"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "LIJN"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "TIJD"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr "NIET-ACTIEF"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "COMMENTAAR"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "EXIT"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Gebruik: %s [OPTIE]... [ BESTAND | ARG1 ARG2 ]\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" -a, --all zelfde als -b -d --login -p -r -t -T -u\n"
+" -b, --boot tijdstip van de laatste systeemboot\n"
+" -d, --dead toon de dode processen\n"
+" -H, --heading toon de regel met de kolomkoppen\n"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr " -l, --login toon de systeem-login-processen\n"
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+" --lookup probeer de echte hostnamen te vinden via DNS\n"
+" -m alleen de hostnaam en gebruiker verbonden met "
+"standaardinvoer\n"
+" -p, --process toon de actieve processen gestart door init\n"
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+" -q, --count alle loginnamen en nummers van ingelogde gebruikers\n"
+" -r, --runlevel toon het huidige run-niveau\n"
+" -s, --short toon alleen naam, lijn, en tijd (standaard)\n"
+" -t, --time toon de laatste wijziging in de systeemklok\n"
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+" -T, -w, --mesg voeg de message-status van de gebruiker toe als +, - "
+"of ?\n"
+" -u, --users toon de ingelogde gebruikers\n"
+" --message zelfde als -T\n"
+" --writable zelfde als -T\n"
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"Als BESTAND niet gespecificeerd is, gebruik %s. %s als BESTAND is "
+"algemeen.\n"
+"Als ARG1 ARG2 zijn gegeven, dan is -m bedoeld: `am i' or `mom likes' zijn "
+"gebruikelijk.\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+"Waarschuwing: -i zal in een toekomstige versie worden verwijderd; gebruik -"
+"u"
+
+#: src/whoami.c:51
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Toon de gebruikersnaam geassocieerd met de huidige effectieve gebruikers-"
+"ID.\n"
+"Zelfde als id -un.\n"
+"\n"
+
+#: src/whoami.c:95
+#, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: kan geen gebruikersnaam vinden voor gebruikers-ID %lu\n"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Gebruik: %s [TEKST]...\n"
+" of: %s OPTIE\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"Schrijf herhaald een regel met alle gespecificeerde TEKSTen, of `y'.\n"
+"\n"
+
+#~ msgid "strip failed"
+#~ msgstr "'strip' is mislukt"
diff --git a/po/no.gmo b/po/no.gmo
new file mode 100644
index 0000000..193c195
--- /dev/null
+++ b/po/no.gmo
Binary files differ
diff --git a/po/no.po b/po/no.po
new file mode 100644
index 0000000..f9a90ca
--- /dev/null
+++ b/po/no.po
@@ -0,0 +1,11946 @@
+# Norwegian messages for GNU textutils (bokmål dialect)
+# Copyright (C) 1996 Free Software Foundation, Inc.
+# Eivind Tagseth <eivindt@multinet.no>, 1996, 1997, 1999.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU textutils 1.22i\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 1999-04-16 12:02 +02:00\n"
+"Last-Translator: Eivind Tagseth <eivindt@multinet.no>\n"
+"Language-Team: Norwegian <no@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, fuzzy, c-format
+msgid "setting permissions for %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: lib/argmatch.c:134
+#, fuzzy, c-format
+msgid "invalid argument %s for %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: lib/argmatch.c:135
+#, fuzzy, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: lib/argmatch.c:154
+#, fuzzy, c-format
+msgid "Valid arguments are:"
+msgstr "begrens argument"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "feil ved skriving"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr ""
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, fuzzy, c-format
+msgid "cannot stat %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr ""
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr ""
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr ""
+
+#: lib/file-type.c:45
+#, fuzzy
+msgid "block special file"
+msgstr "feil ved lukking av filen"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr ""
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr ""
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr ""
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr ""
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr ""
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr ""
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr ""
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr ""
+
+#: lib/file-type.c:71
+#, fuzzy
+msgid "weird file"
+msgstr "feil ved skriving"
+
+#: lib/gai_strerror.c:44
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "fifo-filer er ikke støttet"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "fifo-filer er ikke støttet"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr ""
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "fifo-filer er ikke støttet"
+
+#: lib/gai_strerror.c:54
+#, fuzzy
+msgid "System error"
+msgstr "feil ved skriving"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+#, fuzzy
+msgid "Unknown error"
+msgstr "ukjent binær operator"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, fuzzy, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "flagget «-k» trenger et argument"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, fuzzy, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "flagget «-k» trenger et argument"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, fuzzy, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "flagget «-k» trenger et argument"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, fuzzy, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: ukjent flagg «-%c»\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, fuzzy, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: ukjent flagg «-%c»\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, fuzzy, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: ukjent flagg «-%c»\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, fuzzy, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ukjent flagg «-%c»\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, fuzzy, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "flagget «-k» trenger et argument"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, fuzzy, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "flagget «-k» trenger et argument"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr ""
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, fuzzy, c-format
+msgid "cannot change permissions of %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, fuzzy, c-format
+msgid "cannot create directory %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr ""
+
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "%s: lesefeil"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: ugyldig regulært uttrykk: %s"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "ugyldig tegn-klasse «%s»"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "virtuelt minne oppbrukt"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: ugyldig regulært uttrykk: %s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "feil i søk med regulært uttrykk"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "%s: ugyldig regulært uttrykk: %s"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "feil i søk med regulært uttrykk"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr ""
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr ""
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr ""
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr ""
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr ""
+
+#: lib/unicodeio.c:160
+#, fuzzy
+msgid "character out of range"
+msgstr "%s: linjenummer utenfor tillatte verdier"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr ""
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr ""
+
+#: lib/userspec.c:107
+#, fuzzy
+msgid "invalid user"
+msgstr "ugyldig antall"
+
+#: lib/userspec.c:108
+#, fuzzy
+msgid "invalid group"
+msgstr "ugyldig antall"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "ugyldig antall"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+#, fuzzy
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"Dette programmet er fri programvare. Du kan redistribuerer det og/eller\n"
+"endre det under betingelsene gitt i «GNU General Public License» som\n"
+"utgitt av «Free Software Foundation» -- enten versjon 2, eller (ved ditt\n"
+"valg) en hvilken som helst senere versjon.\n"
+"\n"
+"Dette programmet er distribuert under håp om at det vil være nyttig,\n"
+"men UTEN NOEN GARANTIER, heller ikke impliserte om SALGBARHET eller\n"
+"EGNETHET FOR NOEN SPESIELL ANVENDELSE. Se «GNU General Public License»\n"
+"for flere detaljer.\n"
+"\n"
+"Du skal ha mottatt en kopi av «GNU General Public License» sammen med\n"
+"dette programmet -- hvis ikke, skriv til Free Software Foundation Inc.,\n"
+"59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xfts.c:58
+#, fuzzy, c-format
+msgid "invalid argument: %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr ""
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr ""
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr ""
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "feltliste mangler"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "ugyldig tegn-klasse «%s»"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "fil trunkert"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Prøv med «%s --help» for mer informasjon.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+"Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+"\n"
+" --help vis denne hjelpteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Rapportér feil til <bug-textutils@gnu.org>."
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "lesefeil"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "ugyldig antall"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr ""
+
+#: src/base64.c:316 src/cat.c:785
+#, fuzzy, c-format
+msgid "closing standard input"
+msgstr "standard inn"
+
+#: src/basename.c:54
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr "Bruk: %s [FLAGG]... [INN [UT]]\n"
+
+#: src/basename.c:59
+#, fuzzy
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Skriv ut NAVN med eventuelle innledende katalog-komponenter fjernet.\n"
+"Hvis spesifisert, fjern også avsluttende SUFFIKS.\n"
+"\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, fuzzy, c-format
+msgid "missing operand"
+msgstr "%s: heltall forventet etter «%c»"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Bruk: %s [FLAGG] [FIL]...\n"
+
+#: src/cat.c:99
+#, fuzzy
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"Føy sammen FIL(er) eller standard inn til standard ut.\n"
+"\n"
+" -A, --show-all samme som -vET\n"
+" -b, --number-nonblank nummerer ikke-blanke ut-linjer\n"
+" -e samme som -vE\n"
+" -E, --show-ends skriv $ på slutten av hver linje\n"
+" -n, --number nummerer alle ut-linjer\n"
+" -s, --squeeze-blank aldri mer enn én blank linje\n"
+" -t samme som -vT\n"
+" -T, --show-tabs vis tabulatorer som ^I\n"
+" -u (ignorert)\n"
+" -v, --show-nonprinting bruk ^ og M- notasjon, unntatt for LFD og TAB\n"
+" --help vis denne hjelpteksten, og avslutt\n"
+" --version vis programversjon, og avslutt\n"
+"\n"
+"Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+"inn.\n"
+
+#: src/cat.c:109
+#, fuzzy
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+"Føy sammen FIL(er) eller standard inn til standard ut.\n"
+"\n"
+" -A, --show-all samme som -vET\n"
+" -b, --number-nonblank nummerer ikke-blanke ut-linjer\n"
+" -e samme som -vE\n"
+" -E, --show-ends skriv $ på slutten av hver linje\n"
+" -n, --number nummerer alle ut-linjer\n"
+" -s, --squeeze-blank aldri mer enn én blank linje\n"
+" -t samme som -vT\n"
+" -T, --show-tabs vis tabulatorer som ^I\n"
+" -u (ignorert)\n"
+" -v, --show-nonprinting bruk ^ og M- notasjon, unntatt for LFD og TAB\n"
+" --help vis denne hjelpteksten, og avslutt\n"
+" --version vis programversjon, og avslutt\n"
+"\n"
+"Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+"inn.\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+#: src/cat.c:333
+#, fuzzy, c-format
+msgid "cannot do ioctl on %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "standard ut"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: innfil er utfil"
+
+#: src/chgrp.c:95 src/install.c:611
+#, fuzzy, c-format
+msgid "invalid group %s"
+msgstr "ugyldig antall"
+
+#: src/chgrp.c:112
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Bruk: %s [FLAGG]... [FIL]...\n"
+" eller: %s --traditional [FIL] [[+]POSISJON [[+]MERKE]]\n"
+
+#: src/chgrp.c:117
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr ""
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, fuzzy, c-format
+msgid "missing operand after %s"
+msgstr "%s: heltall forventet etter «%c»"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, fuzzy, c-format
+msgid "failed to get attributes of %s"
+msgstr "bevarer tider for %s"
+
+#: src/chmod.c:128
+#, fuzzy, c-format
+msgid "getting new attributes of %s"
+msgstr "bevarer tider for %s"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "verken symbolsk link %s eller referant har blitt endret\n"
+
+#: src/chmod.c:160
+#, fuzzy, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "beskyttelse for %s endret til %04o (%s)\n"
+
+#: src/chmod.c:163
+#, fuzzy, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "klarte ikke å endre beskyttelse for %s til %04o (%s)\n"
+
+#: src/chmod.c:166
+#, fuzzy, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "beskyttelse for %s beholdt som %04o (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, fuzzy, c-format
+msgid "cannot access %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, fuzzy, c-format
+msgid "cannot read directory %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/chmod.c:251
+#, fuzzy, c-format
+msgid "changing permissions of %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/chmod.c:286
+#, fuzzy, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, fuzzy, c-format
+msgid "fts_read failed"
+msgstr "feil ved skriving"
+
+#: src/chmod.c:345
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Bruk: %s [FLAGG]... SISTE\n"
+" eller: %s [FLAGG]... FØRSTE SISTE\n"
+" eller: %s [FLAGG]... FØRSTE ØKNING SISTE\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chmod.c:360
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+"\n"
+" -c, --changes som verbose, men rapporter bare ved endringer\n"
+" -f, --silent, --quiet undertrykk de fleste feilmeldingene\n"
+" -v, --verbose gi en diagnostikk for hver fil som behandles\n"
+" --reference=RFIL bruk RFIL sin beskyttelse istedenfor BESKYTTELSE-\n"
+" verdier\n"
+" -R, --recursive endre filer og filkataloger rekursivt\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+"\n"
+"Hver BESKYTTELSE er en eller flere av bokstavene ugoa, ett av symbolene\n"
+"+-=, og en eller flere av bokstavene rwxXstugo.\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr ""
+
+#: src/chmod.c:510
+#, fuzzy, c-format
+msgid "invalid mode: %s"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/chown-core.c:147
+#, fuzzy, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "klarte ikke å endre eier av %s til "
+
+#: src/chown-core.c:148
+#, fuzzy, c-format
+msgid "changed group of %s to %s\n"
+msgstr "klarte ikke å endre gruppen til %s til %s\n"
+
+#: src/chown-core.c:149
+#, fuzzy, c-format
+msgid "no change to ownership of %s\n"
+msgstr "bevarer eierrettigheter for %s"
+
+#: src/chown-core.c:152
+#, fuzzy, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "klarte ikke å endre gruppen til %s til %s\n"
+
+#: src/chown-core.c:154
+#, fuzzy, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/chown-core.c:157
+#, fuzzy, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "eier av %s beholdt som "
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "gruppe til %s beholdt som %s\n"
+
+#: src/chown-core.c:159
+#, fuzzy, c-format
+msgid "ownership of %s retained\n"
+msgstr "eier av %s beholdt som "
+
+#: src/chown-core.c:344
+#, fuzzy, c-format
+msgid "cannot dereference %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/chown-core.c:432
+#, fuzzy, c-format
+msgid "changing ownership of %s"
+msgstr "bevarer eierrettigheter for %s"
+
+#: src/chown-core.c:433
+#, fuzzy, c-format
+msgid "changing group of %s"
+msgstr "kan ikke endre rot-katalogen til %s"
+
+#: src/chown.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Bruk: %s [FLAGG]... [FIL]...\n"
+" eller: %s --traditional [FIL] [[+]POSISJON [[+]MERKE]]\n"
+
+#: src/chown.c:98
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr "Bruk: %s [FLAGG]... [INN [UT]]\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+
+#: src/chroot.c:89
+#, fuzzy, c-format
+msgid "cannot change root directory to %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/chroot.c:92
+#, fuzzy, c-format
+msgid "cannot chdir to root directory"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, fuzzy, c-format
+msgid "cannot run command %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/cksum.c:217
+#, fuzzy, c-format
+msgid "%s: file too long"
+msgstr "fil trunkert"
+
+#: src/cksum.c:265
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr "Bruk: %s [FLAGG]... [INN [UT]]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Bruk: %s [FLAGG]... FIL1 FIL2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr ""
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+
+#: src/comm.c:86
+#, fuzzy
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"Sammenlign de sorterte filene VENSTRE_FIL og HØYRE_FIL linje for linje.\n"
+"\n"
+" -1 se bort fra linjer som bare finnes i den venstre filen\n"
+" -2 se bort fra linjer som bare finnes i den høyre filen\n"
+" -3 se bort fra linjer som finnes i begge filer\n"
+" --help vis denne hjelpteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, fuzzy, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "bevarer eierrettigheter for %s"
+
+#: src/copy.c:222
+#, fuzzy, c-format
+msgid "failed to lookup file %s"
+msgstr "bevarer tider for %s"
+
+#: src/copy.c:227
+#, fuzzy, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "bevarer eierrettigheter for %s"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, fuzzy, c-format
+msgid "cannot open %s for reading"
+msgstr "kan ikke linke «%s» til «%s»"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, fuzzy, c-format
+msgid "cannot fstat %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr ""
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, fuzzy, c-format
+msgid "cannot remove %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, fuzzy, c-format
+msgid "removed %s\n"
+msgstr "sletter %s\n"
+
+#: src/copy.c:329
+#, fuzzy, c-format
+msgid "cannot create regular file %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, fuzzy, c-format
+msgid "reading %s"
+msgstr "feil ved lesing av %s"
+
+#: src/copy.c:467 src/head.c:428
+#, fuzzy, c-format
+msgid "cannot lseek %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, fuzzy, c-format
+msgid "writing %s"
+msgstr "feil ved skriving til %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "bevarer tider for %s"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, fuzzy, c-format
+msgid "closing %s"
+msgstr "lukker %s (fd=%d)"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: overskrive «%s», uten hensyn til beskyttelse %04o?"
+
+#: src/copy.c:812
+#, fuzzy, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: skrivefeil"
+
+#: src/copy.c:994
+#, fuzzy, c-format
+msgid " (backup: %s)"
+msgstr "kan ikke gjøre sikkerhetskopi av «%s»"
+
+#: src/copy.c:1048
+#, fuzzy, c-format
+msgid "omitting directory %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr ""
+
+#: src/copy.c:1093 src/ln.c:209
+#, fuzzy, c-format
+msgid "%s and %s are the same file"
+msgstr "«%s» og «%s» er samme fil"
+
+#: src/copy.c:1149
+#, fuzzy, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:1167
+#, fuzzy, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "%s: kan ikke overskrive filkatalog med annet enn filkatalog"
+
+#: src/copy.c:1185
+#, fuzzy, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:1223
+#, fuzzy, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:1253
+#, fuzzy, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr ""
+"sikkerhetskopiering av «%s» vil overskrive kildefil. «%s» er ikke flyttet"
+
+#: src/copy.c:1254
+#, fuzzy, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr ""
+"sikkerhetskopiering av «%s» vil overskrive kildefil. «%s» er ikke kopiert"
+
+#: src/copy.c:1273 src/ln.c:239
+#, fuzzy, c-format
+msgid "cannot backup %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:1372
+#, fuzzy, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:1389
+#, fuzzy, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:1414
+#, fuzzy, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:1459
+#, fuzzy, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:1502
+#, fuzzy, c-format
+msgid "cannot move %s to %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+
+#: src/copy.c:1553
+#, fuzzy, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "%s: kan ikke kopiere syklisk symbolsk link"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr "%s: kan bare lage relative symbolske linker i aktiv filkatalog"
+
+#: src/copy.c:1661
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:1686
+#, fuzzy, c-format
+msgid "cannot create link %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, fuzzy, c-format
+msgid "cannot create fifo %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:1722
+#, fuzzy, c-format
+msgid "cannot create special file %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, fuzzy, c-format
+msgid "cannot read symbolic link %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:1759
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:1790
+#, fuzzy, c-format
+msgid "%s has unknown file type"
+msgstr "%s: ukjent filtype"
+
+#: src/copy.c:1910 src/ln.c:308
+#, fuzzy, c-format
+msgid "cannot un-backup %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr ""
+
+#: src/cp.c:157 src/mv.c:284
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Bruk: %s [FLAGG]... SISTE\n"
+" eller: %s [FLAGG]... FØRSTE SISTE\n"
+" eller: %s [FLAGG]... FØRSTE ØKNING SISTE\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+"Kopier KILDE til MÅL, eller en eller flere KILDE(r) til FILKATALOG.\n"
+"\n"
+" -a, --archive samme som -dpR\n"
+" -b, --backup lag sikkerhetskopi før sletting\n"
+" -d, --no-dereference bevar linker\n"
+" -f, --force slett eksisterende filer uten bekreftelse\n"
+" -i, --interactive be om bekreftelse før overskriving av filer\n"
+" -l, --link lag linker istedet for å kopiere\n"
+" -p, --preserve forsøk å beholde filattributter\n"
+" -P, --parents legg kildens søkesti til FILKATALOG\n"
+" -r kopier rekursivt, alt utenom filkataloger\n"
+" kopieres som filer\n"
+" --sparse=NÅR kontroller oppretting av filer med hull\n"
+" -R, --recursive kopier filkataloger rekursivt\n"
+" -s, --symbolic-link lag symbolske linker istedet for å kopiere\n"
+" -S, --suffix=SUFFIKS overstyr det vanlige sikkerhetskopi-"
+"suffikset\n"
+" -u, --update kopier bare eldre eller helt nye filer\n"
+" -v, --verbose forklar hva som skjer\n"
+" -V, --version-control=ORD overstyr den vanlige versjonskontrollen\n"
+" -x, --one-file-system kopier bare filer fra dette filsystemet\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+"\n"
+"Normalt blir kildefiler med hull oppdaget ved hjelp av en enkel heuristikk,\n"
+"og målfilen blir også laget med hull. Dette er oppførselen som er gitt med\n"
+"--sparse=auto. Spesifiser --sparse=always for å opprette en målfil med\n"
+"hull i, dersom kildefilen inneholder en tilstrekkelig lang sekvens med\n"
+"null-tegn. Bruk --sparse=never for å hindre oppretting av filer med hull.\n"
+"\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+
+#: src/cp.c:216
+#, fuzzy
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+"Endre navn på KILDE til MÅL, eller flytt KILDE(r) til FILKATALOG.\n"
+"\n"
+" -b, --backup gjør sikkerhetskopi før sletting\n"
+" -f, --force slett eksisterende filer uten bekreftelse\n"
+" -i, --interactive be om bekreftelse før overskriving av filer\n"
+" -S, --suffix=SUFFIKS overstyr det vanlige sikkerhetskopi-"
+"suffikset\n"
+" -u, --update flytt bare eldre eller helt nye filer\n"
+" -v, --verbose forklar hva som skjer\n"
+" -V, --version-control=ORD overstyr den vanlige versjonskontrollen\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+"\n"
+
+#: src/cp.c:225
+#, fuzzy
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"Kopier KILDE til MÅL, eller en eller flere KILDE(r) til FILKATALOG.\n"
+"\n"
+" -a, --archive samme som -dpR\n"
+" -b, --backup lag sikkerhetskopi før sletting\n"
+" -d, --no-dereference bevar linker\n"
+" -f, --force slett eksisterende filer uten bekreftelse\n"
+" -i, --interactive be om bekreftelse før overskriving av filer\n"
+" -l, --link lag linker istedet for å kopiere\n"
+" -p, --preserve forsøk å beholde filattributter\n"
+" -P, --parents legg kildens søkesti til FILKATALOG\n"
+" -r kopier rekursivt, alt utenom filkataloger\n"
+" kopieres som filer\n"
+" --sparse=NÅR kontroller oppretting av filer med hull\n"
+" -R, --recursive kopier filkataloger rekursivt\n"
+" -s, --symbolic-link lag symbolske linker istedet for å kopiere\n"
+" -S, --suffix=SUFFIKS overstyr det vanlige sikkerhetskopi-"
+"suffikset\n"
+" -u, --update kopier bare eldre eller helt nye filer\n"
+" -v, --verbose forklar hva som skjer\n"
+" -V, --version-control=ORD overstyr den vanlige versjonskontrollen\n"
+" -x, --one-file-system kopier bare filer fra dette filsystemet\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+"\n"
+"Normalt blir kildefiler med hull oppdaget ved hjelp av en enkel heuristikk,\n"
+"og målfilen blir også laget med hull. Dette er oppførselen som er gitt med\n"
+"--sparse=auto. Spesifiser --sparse=always for å opprette en målfil med\n"
+"hull i, dersom kildefilen inneholder en tilstrekkelig lang sekvens med\n"
+"null-tegn. Bruk --sparse=never for å hindre oppretting av filer med hull.\n"
+"\n"
+
+#: src/cp.c:234
+#, fuzzy
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Suffikset for sikkerhetskopiering er ~, med mindre det er spesifisert via\n"
+"SIMPLE_BACKUP_SUFFIX. Versjonskontroll kan settes med VERSION_CONTROL.\n"
+"Gyldige verdier er:\n"
+"\n"
+" t, numbered lag nummererte sikkerhetskopier\n"
+" nil, existing nummererte, dersom nummererte sikkerhetskopier "
+"eksisterer,\n"
+" ellers enkle\n"
+" never, simple lag enkle sikkerhetskopier\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+#, fuzzy
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+"Suffikset for sikkerhetskopiering er ~, med mindre det er spesifisert via\n"
+"SIMPLE_BACKUP_SUFFIX. Versjonskontroll kan settes med VERSION_CONTROL.\n"
+"Gyldige verdier er:\n"
+"\n"
+" t, numbered lag nummererte sikkerhetskopier\n"
+" nil, existing nummererte, dersom nummererte sikkerhetskopier "
+"eksisterer,\n"
+" ellers enkle\n"
+" never, simple lag enkle sikkerhetskopier\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Som et spesialtilfelle, gjør cp en sikkerhetskopi av KILDE når flaggene for\n"
+"force og backup er gitt, og KILDE og MÅL er samme navn for en eksisterende,\n"
+"vanlig fil.\n"
+
+#: src/cp.c:314
+#, fuzzy, c-format
+msgid "failed to preserve times for %s"
+msgstr "bevarer tider for %s"
+
+#: src/cp.c:340
+#, fuzzy, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/cp.c:456
+#, fuzzy, c-format
+msgid "cannot make directory %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr ""
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, fuzzy, c-format
+msgid "accessing %s"
+msgstr "sletter %s\n"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, fuzzy, c-format
+msgid "missing file operand"
+msgstr "hopp over argument"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, fuzzy, c-format
+msgid "missing destination file operand after %s"
+msgstr "feltliste mangler"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, fuzzy, c-format
+msgid "target %s is not a directory"
+msgstr "«%s» er ikke en katalog"
+
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "når søkestien skal beholdes, må siste argument være en filkatalog"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr ""
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, fuzzy, c-format
+msgid "multiple target directories specified"
+msgstr "\\%c: ugyldig beskyttelse"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "kan ikke lage både harde og symbolske linker"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr ""
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "input forsvant"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: linjenummer utenfor tillatte verdier"
+
+#: src/csplit.c:709
+#, fuzzy, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: «%d»: linjenummer utenfor tillatte verdier"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, fuzzy, c-format
+msgid " on repetition %s\n"
+msgstr " ved %d. repetisjon\n"
+
+#: src/csplit.c:755
+#, fuzzy, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: «%s»: ingen treff funnet"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "feil i søk med regulært uttrykk"
+
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "skrivefeil for «%s»"
+
+#: src/csplit.c:1060
+#, fuzzy, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: heltall forventet etter «%c»"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: «}» er nødvendig i gjentagelsesantall"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: heltall kreves mellom «{» og «}»"
+
+#: src/csplit.c:1113
+#, fuzzy, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: avsluttende skilletegn «%c» mangler"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: ugyldig regulært uttrykk: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: ugyldig mønster"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: linjenummeret må være større enn null"
+
+#: src/csplit.c:1172
+#, fuzzy, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "linjenummer «%s» er mindre enn foregående linjenummer, %lu"
+
+#: src/csplit.c:1178
+#, fuzzy, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "advarsel: linjenummer «%s» er det samme som foregående"
+
+#: src/csplit.c:1231
+#, fuzzy, c-format
+msgid "invalid format width"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/csplit.c:1252
+#, fuzzy, c-format
+msgid "invalid format precision"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "manglende konverteringsspesifikator i suffiks"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "ugyldig konvertingsspesifikator i suffiks: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "ugyldig konverteringsspesifikator i suffiks: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "for mange %%-konverteringsspesifikasjoner i suffiks"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "manglende %%-konverteringsspesifikasjon i suffiks"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: ugyldig nummer"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Bruk: %s [FLAGG]... FIL MØNSTER...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/csplit.c:1486
+#, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/cut.c:199
+#, fuzzy
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+"Brekk om linjene i hver FIL (standard inn), skriv til standard ut\n"
+"\n"
+" -b, --bytes tell bytes istedet for kolonner\n"
+" -s, --spaces brekk om ved mellomrom\n"
+" -w, --width=BREDDE bruk BREDDE kolonner istedet for 80\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "ugyldig byte- eller felt-liste"
+
+#: src/cut.c:469
+#, fuzzy, c-format
+msgid "byte offset %s is too large"
+msgstr "fil trunkert"
+
+#: src/cut.c:472
+#, fuzzy, c-format
+msgid "field number %s is too large"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "bare en liste-type kan spesifiseres"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "skilletegnet må være ett enkelt tegn"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "du må spesifisere en liste av bytes, tegn eller felt"
+
+#: src/cut.c:831
+#, fuzzy
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "et skilletegn kan bare spesifiseres når en opererer med felt"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"fjerning av linjer uten skilletegn er meningsløst dersom en ikke opererer\n"
+"\tmed felt"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "feltliste mangler"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "posisjonsliste mangler"
+
+#: src/date.c:132
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Bruk: %s [FLAGG]... [+FORMAT]\n"
+" eller: %s [FLAGG] [MMDDhhmm[[CC]YY][.ss]]\n"
+
+#: src/date.c:137
+#, fuzzy
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"Vis den nåværende tiden i det gitte FORMATet eller sett systemdatoen.\n"
+"\n"
+" -d, --date=STRENG vis tiden beskrevet av STRENG, ikke «nå»\n"
+" -f, --file=DATOFIL som --date en gang for hver linje av DATOFIL\n"
+" -r, --reference=FIL vis siste endringsdato for FIL\n"
+" -R, --rfc-822 skriv ut en datostreng i henhold til RFC-822\n"
+" -s, --set=STRENG sett tiden som er beskrevet av STRENG\n"
+" -u, --utc, --universal skriv ut eller sett «Coordinated Universal Time»\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "standard inn"
+
+#: src/date.c:297 src/date.c:517
+#, fuzzy, c-format
+msgid "invalid date %s"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/date.c:408 src/date.c:442
+#, fuzzy, c-format
+msgid "multiple output formats specified"
+msgstr "\\%c: ugyldig beskyttelse"
+
+#: src/date.c:420
+#, fuzzy, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "flaggene --string og --check kan ikke brukes samtidig"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr "flaggene for å skrive ut og sette tiden kan ikke brukes sammen"
+
+#: src/date.c:448
+#, fuzzy, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"argumentet «%s» mangler en innledende «+»;\n"
+"når man bruker et flagg for å spesifisere dato(er) må eventuelle\n"
+"andre typer argumenter bestå av en format-streng som begynner med «+»"
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "kan ikke sette dato"
+
+#: src/date.c:548 src/du.c:425
+#, fuzzy, c-format
+msgid "time %s is out of range"
+msgstr "%s: linjenummer utenfor tillatte verdier"
+
+#: src/dd.c:404
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr "Bruk: %s [FLAGG]... [INN [UT]]\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "«%s» er ikke en katalog"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "forkortet blokk"
+msgstr[1] "forkortet blokk"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr ""
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ""
+
+#: src/dd.c:604
+#, fuzzy, c-format
+msgid "closing input file %s"
+msgstr "lager filen «%s»\n"
+
+#: src/dd.c:611
+#, fuzzy, c-format
+msgid "closing output file %s"
+msgstr "sletter %s\n"
+
+#: src/dd.c:791 src/dd.c:1455
+#, fuzzy, c-format
+msgid "writing to %s"
+msgstr "feil ved skriving til %s"
+
+#: src/dd.c:886
+#, fuzzy, c-format
+msgid "unrecognized operand %s"
+msgstr "ukjent flagg «-%c»"
+
+#: src/dd.c:897
+#, fuzzy, c-format
+msgid "invalid conversion: %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/dd.c:900
+#, fuzzy, c-format
+msgid "invalid input flag: %s"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/dd.c:903
+#, fuzzy, c-format
+msgid "invalid output flag: %s"
+msgstr "ugyldig antall"
+
+#: src/dd.c:906
+#, fuzzy, c-format
+msgid "invalid status flag: %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/dd.c:942
+#, fuzzy, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "ukjent flagg «-%c»"
+
+#: src/dd.c:948
+#, fuzzy, c-format
+msgid "invalid number %s"
+msgstr "ugyldig antall"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#: src/dd.c:973
+#, c-format
+msgid "cannot combine block and unblock"
+msgstr ""
+
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "kan ikke opprette %s «%s» til «%s»"
+
+#: src/dd.c:977
+#, fuzzy, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+
+#: src/dd.c:1180 src/dd.c:1237
+#, fuzzy, c-format
+msgid "%s: cannot seek"
+msgstr "%s: kan ikke overskrive filkatalog"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "advarsel: ugyldig bredde %lu; bruker %d istedet"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr ""
+
+#: src/dd.c:1376
+#, fuzzy, c-format
+msgid "setting flags for %s"
+msgstr "bevarer tider for %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr ""
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr ""
+
+#: src/dd.c:1670 src/dd.c:1699
+#, fuzzy, c-format
+msgid "opening %s"
+msgstr "feil ved lesing av %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, fuzzy, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "sletter %s\n"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr ""
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr ""
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr ""
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr ""
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr ""
+
+#: src/df.c:165
+#, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr ""
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr ""
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr ""
+
+#: src/df.c:468
+#, fuzzy, c-format
+msgid "cannot get current directory"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, fuzzy, c-format
+msgid "cannot change to directory %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/df.c:498
+#, fuzzy, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+
+#: src/df.c:749
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr ""
+
+#: src/df.c:900
+#, fuzzy, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "filsystem av type «%s» er både valgt og ekskludert"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr ""
+
+#: src/df.c:943
+#, fuzzy, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "kan ikke lese tabellen over monterte filsystemer"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/dircolors.c:103
+#, fuzzy
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Skriv ut kommandoer for å sette miljøvariabelen LS_COLORS.\n"
+"\n"
+"Bestem ut-format:\n"
+" -b, --sh, --bourne-shell skriv ut Bourne shell-kode for å sette "
+"LS_COLORS\n"
+" -c, --csh, --c-shell skriv ut C shell-kode for å sette LS_COLORS\n"
+" -p, --print-data-base skriv ut den interne databasen\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+
+#: src/dircolors.c:291
+#, fuzzy, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s: ugyldig antall sekunder"
+
+#: src/dircolors.c:363
+#, fuzzy, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s: ukjent flagg «-%c»\n"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr ""
+
+#: src/dircolors.c:445
+#, fuzzy, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr "flaggene for fyldig og stty-lesbar utskrift utelukker hverandre"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "ingen SHELL-miljøvariabel, og ingen shell-type spesifisert med flagg"
+
+#: src/dirname.c:48
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr "Bruk: %s [FLAGG]... [INN [UT]]\n"
+
+#: src/dirname.c:53
+#, fuzzy
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"Skriv ut NAVN med alt fra siste «/» fjernet, eller alt fra nest siste «/»\n"
+"dersom NAVN ender på «/». Hvis NAVN ikke inneholder «/», skriv ut «.»\n"
+"(for nåværende katalog).\n"
+"\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#: src/du.c:279 src/wc.c:108
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Bruk: %s [FLAGG]... [FIL]...\n"
+" eller: %s --traditional [FIL] [[+]POSISJON [[+]MERKE]]\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "totalt"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+
+#: src/du.c:780
+#, fuzzy, c-format
+msgid "invalid maximum depth %s"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr ""
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "kan ikke vise alle størrelser og bare vise summer samtidig."
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "advarsel: summering er det samme som å bruke --max-depth=0"
+
+#: src/du.c:884
+#, fuzzy, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "advarsel: summering er i konflikt med --max-depth=%d"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+#: src/du.c:960 src/wc.c:662
+#, fuzzy, c-format
+msgid "cannot read file names from %s"
+msgstr "kan ikke opprette %s «%s» til «%s»"
+
+#: src/du.c:1000 src/du.c:1003
+#, fuzzy
+msgid "invalid zero-length file name"
+msgstr "ugyldig antall"
+
+#: src/echo.c:64
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/env.c:118
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/env.c:121
+#, fuzzy
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Sett hvert NAVN til VERDI som miljøvariabler og utfør KOMMANDO.\n"
+" -i, --ignore-environment start uten miljøvariabler\n"
+" -u, --unset=NAVN fjern miljøvariabelen NAVN\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+"\n"
+"En - for seg selv impliserer -i. Hvis ingen KOMMANDO er angitt, skriv ut\n"
+"det resulterende miljøet.\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+
+#: src/expand.c:180 src/unexpand.c:199
+#, fuzzy, c-format
+msgid "tab stop is too large %s"
+msgstr "fil trunkert"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, fuzzy, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "tabulatorstørrelse inneholder et ugyldig tegn"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "tabulatorstørrelse kan ikke være 0"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "tabulatorstørrelser må være stigende"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, fuzzy, c-format
+msgid "input line is too long"
+msgstr "fil trunkert"
+
+#: src/expr.c:102
+#, fuzzy, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr "Bruk: %s [FLAGG]... [INN [UT]]\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"Vær oppmerksom på at mange operatorer må beskyttes mot kommandotolken,\n"
+"f.eks. med gåseøyne. Sammenligninger er aritmetiske dersom begge\n"
+"ARGumentene er tall, ellers leksiografiske. Mønster-sammenligninger\n"
+"returnerer strengen som passet mønstret mellom \\( og \\) eller null.\n"
+"Hvis \\( og \\) ikke brukes returneres antall tegn som passet eller 0.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#: src/expr.c:175
+#, fuzzy, c-format
+msgid "syntax error"
+msgstr "stdin: lesefeil"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "feil i søk med regulært uttrykk"
+
+#: src/expr.c:653 src/expr.c:711
+#, fuzzy, c-format
+msgid "non-numeric argument"
+msgstr "begrens argument"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr ""
+
+#: src/factor.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr "Bruk: %s [FLAGG]... [INN [UT]]\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+
+#: src/factor.c:85
+#, fuzzy
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"Skriv ut faktorene til hvert TALL; les fra standard inn dersom ingen\n"
+"argumenter er gitt.\n"
+"\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+"\n"
+" Skriv ut primtalls-faktorene til alle spesifiserte heltall TALL. Hvis \n"
+" ingen argumenter er angitt på kommandolinjen leses de fra standard inn.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr ""
+
+#: src/factor.c:158
+#, fuzzy, c-format
+msgid "%s is not a valid positive integer"
+msgstr "«%s» er ikke et gyldig positivt heltall"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Bruk: %s [-SIFFER] [FLAGG]... [FIL]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/fmt.c:282
+#, fuzzy
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+"Omformattér hvert avsnitt i FILEN(e), skriv til standard ut.\n"
+"Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+"inn.\n"
+"\n"
+"Obligatoriske argumenter til lange flagg er også obligatoriske for de "
+"korte.\n"
+" -c, --crown-margin behold innrykket til de første to linjene\n"
+" -p, --prefix=STRENG sett kun sammen linjer som har STRENG som\n"
+" forstavelse\n"
+" -s, --split-only del opp lange linjer, men ikke fyll opp\n"
+" -t, --tagged-paragraph innrykket til første linje er forskjellig fra "
+"neste\n"
+" -u, --uniform-spacing ett mellomrom mellom ord, to etter setninger\n"
+" -w, --width=TALL maksimal linjelengde (ellers 75 kolonner)\n"
+" --help vis denne hjelpteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+"\n"
+"Ved -wTALL kan «w» utelates.\n"
+
+#: src/fmt.c:289
+#, fuzzy
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+"Omformattér hvert avsnitt i FILEN(e), skriv til standard ut.\n"
+"Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+"inn.\n"
+"\n"
+"Obligatoriske argumenter til lange flagg er også obligatoriske for de "
+"korte.\n"
+" -c, --crown-margin behold innrykket til de første to linjene\n"
+" -p, --prefix=STRENG sett kun sammen linjer som har STRENG som\n"
+" forstavelse\n"
+" -s, --split-only del opp lange linjer, men ikke fyll opp\n"
+" -t, --tagged-paragraph innrykket til første linje er forskjellig fra "
+"neste\n"
+" -u, --uniform-spacing ett mellomrom mellom ord, to etter setninger\n"
+" -w, --width=TALL maksimal linjelengde (ellers 75 kolonner)\n"
+" --help vis denne hjelpteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+"\n"
+"Ved -wTALL kan «w» utelates.\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+
+#: src/fmt.c:400
+#, fuzzy, c-format
+msgid "invalid width: %s"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "ugyldig antall kolonner: «%s»"
+
+#: src/head.c:113
+#, fuzzy
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv de første 10 linjene av hver FIL til standard ut.\n"
+"Med mer enn en FIL er angitt, skriv ut filnavnet før hver FIL.\n"
+"Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+"inn.\n"
+"\n"
+" -c, --bytes=STØRRELSE skriv ut første STØRRELSE bytes\n"
+" -n, --lines=ANTALL skriv ut første ANTALL tegn istedet for 10\n"
+" -q, --quiet, --silent ikke skriv ut filnavnene først\n"
+" -v, --verbose skriv alltid filnavnene først\n"
+" --help vis denne hjelpteksten, og avslutt\n"
+" --version vis programversjon og avslutt\n"
+"\n"
+"STØRRELSE kan ha en multiplikator-endelse: b for 512, k for 1K, m for 1Meg.\n"
+"Hvis -VERDI brukes som første FLAGG, leses det som -c VERDI hvis en av\n"
+"multiplikatorene bkm er bakerst, ellers leses -n VERDI.\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "feil ved lesing av %s"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "feil ved skriving til %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr ""
+
+#: src/head.c:230 src/head.c:1046
+#, fuzzy, c-format
+msgid "%s: number of bytes is too large"
+msgstr "ugyldig antall bytes å sammenligne: «%s»"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr ""
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, fuzzy, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/head.c:793
+#, fuzzy, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s er så stor at den ikke kan representeres"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "antall linjer"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "antall bytes"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "ugyldig antall linjer"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "ugyldig antall bytes"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "%s: ukjent flagg «-%c»\n"
+
+#: src/hostid.c:48
+#, fuzzy, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Skriv ut navnet til den nåværende brukeren.\n"
+"\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+
+#: src/hostname.c:65
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Bruk: %s [NAVN]\n"
+" eller: %s FLAGG\n"
+"Skriv vertsnavnet til dette systemet.\n"
+"\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr "kan ikke sette vertsnavnet; dette systemet mangler funksjonaliteten"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "kan ikke bestemme vertsnavnet"
+
+#: src/id.c:78
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Bruk: %s [FLAGG]... SETT1 [SETT2]\n"
+
+#: src/id.c:79
+#, fuzzy
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Skriv ut informasjon for BRUKERNAVN eller nåværende bruker.\n"
+"\n"
+" -a ignoreres, for kompatibilitet med andre versjoner\n"
+" -g, --group skriv bare ut gruppe-ID\n"
+" -G, --groups skriv bare ut supplerende grupper\n"
+" -n, --name skriv et navn i stedet for et nummer, for -ugG\n"
+" -r, --real skriv ut den virkelige ID-en istedet for den effektive,\n"
+" for -ugG\n"
+" -u, --user skriv bare ut brukeridentiteten\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+"\n"
+"Uten noen FLAGG, skriv ut et nyttig utvalg av identifisert informasjon.\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+
+#: src/id.c:152
+#, fuzzy, c-format
+msgid "cannot print only user and only group"
+msgstr "kan ikke dele opp på mer enn én måte"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr "kan ikke skrive ut bare navn eller virkelige IDer i forvalgt format"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Ingen slik bruker"
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "%s: kan ikke finne brukernavnet til UID %u\n"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "%s: kan ikke finne brukernavnet til UID %u\n"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "kan ikke hente supplerende gruppeliste"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " grupper="
+
+#: src/install.c:318
+#, fuzzy, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr ""
+"format-strengen kan ikke spesifiseres når det skrives ut strenger\n"
+"med lik bredde"
+
+#: src/install.c:321
+#, fuzzy, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr ""
+"format-strengen kan ikke spesifiseres når det skrives ut strenger\n"
+"med lik bredde"
+
+#: src/install.c:369 src/mkdir.c:193
+#, fuzzy, c-format
+msgid "invalid mode %s"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/install.c:520
+#, fuzzy, c-format
+msgid "cannot change ownership of %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/install.c:541
+#, fuzzy, c-format
+msgid "cannot set time stamps for %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/install.c:562
+#, fuzzy, c-format
+msgid "fork system call failed"
+msgstr "feil ved lukking av filen"
+
+#: src/install.c:566
+#, fuzzy, c-format
+msgid "cannot run strip"
+msgstr "kan ikke kjøre %s"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "feil ved skriving til %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, fuzzy, c-format
+msgid "invalid user %s"
+msgstr "ugyldig antall"
+
+#: src/install.c:628
+#, fuzzy, c-format
+msgid "creating directory %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/install.c:651
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Bruk: %s [FLAGG]... SISTE\n"
+" eller: %s [FLAGG]... FØRSTE SISTE\n"
+" eller: %s [FLAGG]... FØRSTE ØKNING SISTE\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+
+#: src/install.c:681
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+#, fuzzy
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Suffikset for sikkerhetskopiering er ~, med mindre det er spesifisert via\n"
+"SIMPLE_BACKUP_SUFFIX. Versjonskontroll kan settes med VERSION_CONTROL.\n"
+"Gyldige verdier er:\n"
+"\n"
+" t, numbered lag nummererte sikkerhetskopier\n"
+" nil, existing nummererte, dersom nummererte sikkerhetskopier "
+"eksisterer,\n"
+" ellers enkle\n"
+" never, simple lag enkle sikkerhetskopier\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+
+#: src/join.c:153
+#, fuzzy
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+"Sammenlign de sorterte filene VENSTRE_FIL og HØYRE_FIL linje for linje.\n"
+"\n"
+" -1 se bort fra linjer som bare finnes i den venstre filen\n"
+" -2 se bort fra linjer som bare finnes i den høyre filen\n"
+" -3 se bort fra linjer som finnes i begge filer\n"
+" --help vis denne hjelpteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+
+#: src/join.c:617 src/join.c:812
+#, fuzzy, c-format
+msgid "invalid field number: %s"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "ugyldig felt-spesifikator: «%s»"
+
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "ugyldig filnummer i felt-spesifikator: «%s»"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr ""
+
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "ugyldig tegn-klasse «%s»"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr ""
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "begge filene kan ikke være standard inn"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+
+#: src/kill.c:103
+#, fuzzy
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+"Kopier standard inn til hver FIL og til standard ut.\n"
+"\n"
+" -a, --append legg til til de angitte FILene, ikke overskriv\n"
+" -i, --ignore-interrrupts ignorer avbruddssignaler\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+
+#: src/kill.c:161
+#, fuzzy, c-format
+msgid "%s: invalid signal"
+msgstr "%s: ugyldig nummer"
+
+#: src/kill.c:266
+#, fuzzy, c-format
+msgid "%s: invalid process id"
+msgstr "%s: ugyldig mønster"
+
+#: src/kill.c:320
+#, fuzzy, c-format
+msgid "invalid option -- %c"
+msgstr "%s: ukjent flagg «-%c»\n"
+
+#: src/kill.c:329
+#, fuzzy, c-format
+msgid "%s: multiple signals specified"
+msgstr "\\%c: ugyldig beskyttelse"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr ""
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr ""
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr ""
+
+#: src/link.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr "Bruk: %s [FLAGG]... [INN [UT]]\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+
+#: src/link.c:95
+#, fuzzy, c-format
+msgid "cannot create link %s to %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+
+#: src/ln.c:165
+#, fuzzy, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "«%s» er ikke en katalog"
+
+#: src/ln.c:218
+#, fuzzy, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/ln.c:223
+#, fuzzy, c-format
+msgid "%s: replace %s? "
+msgstr "%s: overskrive «%s»? "
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "kan ikke opprette symbolsk link «%s»"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "kan ikke opprette symbolsk link «%s»"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "%s: vil ikke lage hard link «%s» til katalog «%s»"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "%s: vil ikke lage hard link «%s» til katalog «%s»"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "%s: vil ikke lage hard link «%s» til katalog «%s»"
+
+#: src/ln.c:324
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Bruk: %s [FLAGG]... KILDE MÅL (1. format)\n"
+" eller: %s [FLAGG]... KILDE... FILKATALOG (2. format)\n"
+" eller: %s -d [FLAGG]... FILKATALOG... (3. format)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+
+#: src/ln.c:484
+#, fuzzy, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "«%s» er ikke en katalog"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Bruk: %s [FLAGG] [FIL]...\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+
+#: src/logname.c:89
+#, fuzzy, c-format
+msgid "no login name"
+msgstr "%s: ugyldig nummer"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr ""
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr ""
+
+#: src/ls.c:1453
+#, fuzzy, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "ignorerer ugyldig lengde i miljøvariabelen COLUMNS: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "ignorerer ugyldig lengde i miljøvariabelen COLUMNS: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr "ignorerer ugyldig tab-størrelse i miljøvariabelen TABSIZE: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, fuzzy, c-format
+msgid "invalid line width: %s"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/ls.c:1704
+#, fuzzy, c-format
+msgid "invalid tab size: %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/ls.c:1885
+#, fuzzy, c-format
+msgid "invalid time style format %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/ls.c:2229
+#, fuzzy, c-format
+msgid "unrecognized prefix: %s"
+msgstr "ukjent flagg «-%c»"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "ubegripelig verdi i miljøvariabelen LS_COLORS"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, fuzzy, c-format
+msgid "cannot open directory %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/ls.c:2344
+#, fuzzy, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, fuzzy, c-format
+msgid "reading directory %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/ls.c:2410
+#, fuzzy, c-format
+msgid "closing directory %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/ls.c:2918
+#, fuzzy, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "kan ikke opprette %s «%s» til «%s»"
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+
+#: src/ls.c:4360
+#, fuzzy
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -g (ignorert)\n"
+" -G, --no-group ta ikke med gruppe i listingen\n"
+" -h, --human-readable skriv størrelser i et format lesbart av "
+"mennesker\n"
+" (f.eks. 1K 234M 2G)\n"
+" -H, --si det sammen, men bruk 1000 som base, ikke 1024\n"
+" --indicator-style=ORD legg til indikator med stil ORD til elementer:\n"
+" none (forvalgt), classify (-F), file-type (-p)\n"
+" -i, --inode list indeksnummeret for hver fil\n"
+" -I, --ignore=MØNSTER vis ikke filer som stemmer overens med\n"
+" shell-MØNSTERet\n"
+" -k, --kilobytes bruk 1024 blokker, på tross av POSIXLY_CORRECT\n"
+" -l bruk langt listeformat\n"
+" -L, --dereference vis filer som pekes på av symbolske linker\n"
+" -m skriv full skjermbredde med kommaseparering\n"
+" -n, --numeric-uid-gid skriv UID og GID med tall istedet for navn\n"
+" -N, --literal skriv ut alle tegn (inklusive kontrolltegn)\n"
+" -o bruk langt listeformat uten gruppeinformasjon\n"
+" -p legg til en bokstav for filtypen\n"
+" -q, --hide-control-chars skriv ? istedet for ikke-grafiske tegn\n"
+" --show-control-chars vis kontrolltegn som de er (forvalgt)\n"
+" -Q, --quote-name sett filnavn i gåseøyne\n"
+" --quoting-style=ORD bruk beskyttelsesstil ORD for filnavn:\n"
+" literal, shell, shell-always, c eller escape\n"
+" -r, --reverse sorter baklengs\n"
+" -R, --recursive list underkataloger rekursivt\n"
+" -s, --size skriv blokkstørrelse for hver fil\n"
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#: src/md5sum.c:150
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Bruk: %s [FLAGG] [FIL]\n"
+"Skriv en fullstendig sortert liste konsistent med den delvise sorteringen\n"
+"i FIL. Hvis ingen FIL eller hvis FIL er -, leses fra standard inn.\n"
+"\n"
+" --help vis denne hjelpteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+"\n"
+" -B, --binary skriv binært til konsollenheten.\n"
+"\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+
+#: src/md5sum.c:459
+#, fuzzy, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: ingen riktig formatterte MD5-sjekksumlinjer funnet"
+
+#: src/md5sum.c:481
+#, fuzzy, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %lu: ukorrekt formattert MD5 sjekksumlinje"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: FEIL ved åpning eller lesing\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "FEIL"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "OK"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: lesefeil"
+
+#: src/md5sum.c:553
+#, fuzzy, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: ingen riktig formatterte MD5-sjekksumlinjer funnet"
+
+#: src/md5sum.c:562
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "ADVARSEL: %d av %d oppførte %s kunne ikke leses\n"
+msgstr[1] "ADVARSEL: %d av %d oppførte %s kunne ikke leses\n"
+
+#: src/md5sum.c:574
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "ADVARSEL: %d av %d beregnede %s stemte IKKE overens"
+msgstr[1] "ADVARSEL: %d av %d beregnede %s stemte IKKE overens"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"flaggene --binary og --text er meningsløse ved verifisering av sjekksummer"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "flagget --status har bare betydning ved sjekking av sjekksummer"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "flagget --warn har bare betydning ved sjekking av sjekksummer"
+
+#: src/mkdir.c:59
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Bruk: %s [FLAGG] [FIL]...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+"Opprett FILKATALOG(ene), dersom de ikke allerede eksisterer.\n"
+"\n"
+" -m, --mode=BESKYTTELSE sett beskyttelse (som chmod), ikke rwxrwxrwx - "
+"umask\n"
+" -p, --parents opprett foreldrekataloger som nødvendig\n"
+" --verbose skriv en melding for hver filkatalog som opprettes\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+
+#: src/mkdir.c:168
+#, fuzzy, c-format
+msgid "created directory %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/mkfifo.c:54
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Bruk: %s [FLAGG] [FIL]...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+"Opprett navngitte pipes (FIFOs) med angitte NAVN.\n"
+"\n"
+" -m, --mode=BESKYTTELSE sett beskyttelse (som chmod), 0666 - ikke umask\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, fuzzy, c-format
+msgid "invalid mode"
+msgstr "ugyldig antall"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Bruk: %s [FLAGG]... SETT1 [SETT2]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+
+#: src/mknod.c:76
+#, fuzzy
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"Opprett den spesielle filen NAVN med gitt TYPE.\n"
+"\n"
+" -m, --mode=BESKYTTELSE sett beskyttelse (som chmod), 0666 - ikke umask\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+"\n"
+"MAJOR MINOR er ikke tillatt for TYPE p, men er nødvendig ellers. TYPE kan\n"
+"være:\n"
+"\n"
+" b opprett en blokk spesiell fil (bufret) \n"
+" c, u opprett en tegn spesiell fil (ubufret) \n"
+" p opprett en FIFO\n"
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"ved oppretting av blokk-spesielle filer, må major og minor enhetsnummer\n"
+"spesifiseres"
+
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "ugyldig startlinjenummer: «%s»"
+
+#: src/mknod.c:167
+#, fuzzy, c-format
+msgid "block special files not supported"
+msgstr "feil ved lukking av filen"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "tegn-spesielle filer er ikke støttet"
+
+#: src/mknod.c:192
+#, fuzzy, c-format
+msgid "invalid major device number %s"
+msgstr "ugyldig startlinjenummer: «%s»"
+
+#: src/mknod.c:197
+#, fuzzy, c-format
+msgid "invalid minor device number %s"
+msgstr "ugyldig startlinjenummer: «%s»"
+
+#: src/mknod.c:202
+#, fuzzy, c-format
+msgid "invalid device %s %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/mknod.c:216
+#, fuzzy, c-format
+msgid "invalid device type %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+
+#: src/mv.c:308
+#, fuzzy
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+"Endre navn på KILDE til MÅL, eller flytt KILDE(r) til FILKATALOG.\n"
+"\n"
+" -b, --backup gjør sikkerhetskopi før sletting\n"
+" -f, --force slett eksisterende filer uten bekreftelse\n"
+" -i, --interactive be om bekreftelse før overskriving av filer\n"
+" -S, --suffix=SUFFIKS overstyr det vanlige sikkerhetskopi-"
+"suffikset\n"
+" -u, --update flytt bare eldre eller helt nye filer\n"
+" -v, --verbose forklar hva som skjer\n"
+" -V, --version-control=ORD overstyr den vanlige versjonskontrollen\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+"\n"
+
+#: src/nice.c:76
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Bruk: %s [FLAGG] [FIL]...\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "en kommando må bli gitt med en justering"
+
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "kan ikke sette dato"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:189
+#, fuzzy
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+"Skriv hver FIL til standard ut, siste linje først.\n"
+"Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+"inn.\n"
+"\n"
+" -b, --before føy til separator før istedet for etter\n"
+" -r, --regex tolk separatoren som et regulært uttrykk\n"
+" -s, --separator=STRENG bruk STRENG som separator istedet for linjeskift\n"
+" --help vis denne hjelpteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+
+#: src/nl.c:214
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:281
+#, fuzzy, c-format
+msgid "line number overflow"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/nl.c:479
+#, fuzzy, c-format
+msgid "invalid header numbering style: %s"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/nl.c:487
+#, fuzzy, c-format
+msgid "invalid body numbering style: %s"
+msgstr "ugyldig antall"
+
+#: src/nl.c:495
+#, fuzzy, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "ugyldig filnummer i felt-spesifikator: «%s»"
+
+#: src/nl.c:504
+#, fuzzy, c-format
+msgid "invalid starting line number: %s"
+msgstr "ugyldig startlinjenummer: «%s»"
+
+#: src/nl.c:513
+#, fuzzy, c-format
+msgid "invalid line number increment: %s"
+msgstr "ugyldig linjenummer-økning: «%s»"
+
+#: src/nl.c:525
+#, fuzzy, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "ugyldig antall blanke linjer: «%s»"
+
+#: src/nl.c:539
+#, fuzzy, c-format
+msgid "invalid line number field width: %s"
+msgstr "ugyldig linjenummer-feltbredde: «%s»"
+
+#: src/nl.c:558
+#, fuzzy, c-format
+msgid "invalid line numbering format: %s"
+msgstr "ugyldig linjenummer-økning: «%s»"
+
+#: src/nohup.c:57
+#, fuzzy, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr "Bruk: %s [FLAGG]... [INN [UT]]\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "for mange argumenter"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, fuzzy, c-format
+msgid "failed to open %s"
+msgstr "bevarer tider for %s"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr ""
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr ""
+
+#: src/od.c:307
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Bruk: %s [FLAGG]... [FIL]...\n"
+" eller: %s --traditional [FIL] [[+]POSISJON [[+]MERKE]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:353
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/od.c:693
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"ugyldig type-streng «%s»;\n"
+"dette systemet støtter ikke en %lu-byte heltallstype"
+
+#: src/od.c:812
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"ugyldig type-streng «%s»;\n"
+"dette systemet støtter ikke en %lu-byte flyttallstype"
+
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "ugyldig tegn «%c» i type-streng «%s»"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "kan ikke hoppe til bak slutten av kombinert inndata"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr "ugyldig ut-adresse radix «%c»; det må være ett av tegnene [doxn]"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "hopp over argument"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "begrens argument"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "minimal strenglengde"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "breddespesifikasjon"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "ingen type kan spesifiseres ved dumping av strenger"
+
+#: src/od.c:1844
+#, fuzzy
+msgid "Compatibility mode supports at most one file."
+msgstr "kompatibilitetsmodus støtter maksimum tre argumenter"
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr ""
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "advarsel: ugyldig bredde %lu; bruker %d istedet"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: fmt=\"%s\" bredde=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "standard inn er lukket"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+
+#: src/pathchk.c:99
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "ugyldig tegn «%c» i type-streng «%s»"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr ""
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, fuzzy, c-format
+msgid "Login name: "
+msgstr "%s: ikke noe login-navn\n"
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr ""
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr ""
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr ""
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr ""
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr ""
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr ""
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr ""
+
+#: src/pinky.c:423
+#, fuzzy
+msgid "Name"
+msgstr "am"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr ""
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr ""
+
+#: src/pinky.c:427
+msgid "When"
+msgstr ""
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr ""
+
+#: src/pinky.c:510
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+
+#: src/pinky.c:612
+#, fuzzy, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr "ingen filer kan spesifiseres når flagget --string brukes"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr ""
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "«--pages=FØRSTE_SIZE[:SISTE_SIDE]» mangler argument"
+
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "«-l SIDE_LENGDE» igyldig antall linjer: «%s»"
+
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "«-N TALL» ugyldig start-linjenummer: «%s»"
+
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "«-o MARG» ugyldig linje-offset: «%s»"
+
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "«-w SIDE_BREDDE» igyldig antall tegn: «%s»"
+
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "«-W SIDE_BREDDE» ugyldig antall tegn: «%s»"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "Kan ikke spesifisere antall kolonner når det skrives i parallell."
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "Kan ikke spesifisere både skriving i kryss og skriving i parallell"
+
+#: src/pr.c:1202
+#, fuzzy, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "«-%c» ekstra tegn eller ugyldig tall i argumentet: «%s»"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "sidebredde for smal"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2406
+#, fuzzy, c-format
+msgid "Page number overflow"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr ""
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+
+#: src/pr.c:2862
+#, fuzzy
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+"Sammenlign de sorterte filene VENSTRE_FIL og HØYRE_FIL linje for linje.\n"
+"\n"
+" -1 se bort fra linjer som bare finnes i den venstre filen\n"
+" -2 se bort fra linjer som bare finnes i den høyre filen\n"
+" -3 se bort fra linjer som finnes i begge filer\n"
+" --help vis denne hjelpteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/printenv.c:61
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Dersom ingen miljø-VARIABEL er spesifisert, skriv ut alle.\n"
+"\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+
+#: src/printf.c:80
+#, fuzzy, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr "advarsel: overflødige argumenter har blitt ignorert"
+
+#: src/printf.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr "Bruk: %s [FLAGG]... [INN [UT]]\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: ventet en numerisk verdi"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: verdi ikke fullstendig konvertert"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "manglende heksadesimal-tall i beskyttet tegnsekvens"
+
+#: src/printf.c:289
+#, fuzzy, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "ugyldig tegn-klasse «%s»"
+
+#: src/printf.c:550
+#, fuzzy, c-format
+msgid "invalid field width: %s"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/printf.c:585
+#, fuzzy, c-format
+msgid "invalid precision: %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "ugyldig feltspesifikasjon «%s»"
+
+#: src/printf.c:683
+#, fuzzy, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "advarsel: overflødige argumenter har blitt ignorert"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr ""
+
+#: src/ptx.c:422
+#, fuzzy, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (for regexp «%s»)"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Bruk : %s [FLAGG]... [INN]... (uten -G)\n"
+"eller: %s -G [FLAGG]... [INN [UT]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr ""
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+
+#: src/pwd.c:160
+#, fuzzy, c-format
+msgid "failed to chdir to %s"
+msgstr "klarte ikke å endre gruppen til %s til %s\n"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "bevarer tider for %s"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, fuzzy, c-format
+msgid "ignoring non-option arguments"
+msgstr "for mange ikke-flagg-argumenter"
+
+#: src/readlink.c:67
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, fuzzy, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"ADVARSEL: Sirkulær katalogstruktur.\n"
+"Dette betyr nesten helt sikkert at du har et skadet filsystem.\n"
+"MELD IFRA TIL DIN SYSTEMADMININISTRATOR.\n"
+"Følgende to kataloger har samme inode-nummer:\n"
+
+#: src/remove.c:854
+#, fuzzy, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/remove.c:855
+#, fuzzy, c-format
+msgid "%s: descend into directory %s? "
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/remove.c:865
+#, fuzzy, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: slette skrive-beskyttet fil «%s»? "
+
+#: src/remove.c:866
+#, fuzzy, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: slette «%s»? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, fuzzy, c-format
+msgid "removed directory: %s\n"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, fuzzy, c-format
+msgid "cannot remove directory %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/remove.c:1450
+#, fuzzy, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/remove.c:1558
+#, fuzzy, c-format
+msgid "cannot restore current working directory"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#: src/rm.c:160 src/touch.c:233
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: slette «%s»? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, fuzzy, c-format
+msgid "removing directory, %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/rmdir.c:140
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+
+#: src/rmdir.c:148
+#, fuzzy
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+"Slett FILKATALOG(er), dersom de er tomme.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignorer alle feil som enbart skyldes at katalogen ikke\n"
+" er tom\n"
+" -p, --parents slett gitte foreldrekataloger dersom de blir tomme\n"
+" --verbose skriv ut diagnostikk for hver katalog som behandles\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+
+#: src/seq.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Bruk : %s [FLAGG]... [INN]... (uten -G)\n"
+"eller: %s -G [FLAGG]... [INN [UT]]\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"Skriv ut tallene fra FØRSTE til SISTE, med steg på ØKNING.\n"
+"\n"
+" -f, --format FORMAT bruk printf(3)-FORMAT (forvalgt: %%g)\n"
+" -s, --separator STRENG bruk STRENG for å separere tallene (forvalgt: "
+"\\n)\n"
+" -w, --equal-width gjør bredden lik ved å fylle inn med nuller "
+"foran\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+"\n"
+"Hvis FØRSTE eller ØKNING ikke er oppgitt, er forvalgt verdi 1.\n"
+"FØRSTE, ØKNING og SISTE tolkes som desimalverdier. ØKNING skal være\n"
+"positiv hvis FØRSTE er mindre enn SISTE, og negativ ellers. Når FORMAT\n"
+"er oppgitt, må det inneholde nøyaktig ett av printf-direktivene for\n"
+"desimaltall: %%e, %%f eller %%g.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, fuzzy, c-format
+msgid "invalid floating point argument: %s"
+msgstr "ugyldig startlinjenummer: «%s»"
+
+#: src/seq.c:342
+#, fuzzy, c-format
+msgid "invalid format string: %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/seq.c:364
+#, fuzzy, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr "ingen type kan spesifiseres ved dumping av strenger"
+
+#: src/setuidgid.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr "Bruk: %s [FLAGG]... [INN [UT]]\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr ""
+
+#: src/setuidgid.c:109
+#, fuzzy, c-format
+msgid "cannot set supplemental group"
+msgstr "kan ikke hente supplerende gruppeliste"
+
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "kan ikke sette gruppe-id"
+
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/shred.c:165
+#, fuzzy, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Bruk: %s [FLAGG] [FIL]...\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr ""
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr ""
+
+#: src/shred.c:391
+#, fuzzy, c-format
+msgid "%s: cannot rewind"
+msgstr "kan ikke kjøre %s"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr ""
+
+#: src/shred.c:460
+#, fuzzy, c-format
+msgid "%s: error writing at offset %s"
+msgstr "feil ved skriving til %s"
+
+#: src/shred.c:478
+#, fuzzy, c-format
+msgid "%s: lseek failed"
+msgstr "feil ved lukking av filen"
+
+#: src/shred.c:489
+#, fuzzy, c-format
+msgid "%s: file too large"
+msgstr "fil trunkert"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr ""
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr ""
+
+#: src/shred.c:776
+#, fuzzy, c-format
+msgid "%s: fstat failed"
+msgstr "feil ved skriving"
+
+#: src/shred.c:787
+#, fuzzy, c-format
+msgid "%s: invalid file type"
+msgstr "%s: ugyldig antall linjer"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr ""
+
+#: src/shred.c:873
+#, fuzzy, c-format
+msgid "%s: error truncating"
+msgstr "fil trunkert"
+
+#: src/shred.c:889
+#, fuzzy, c-format
+msgid "%s: fcntl failed"
+msgstr "feil ved skriving"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr ""
+
+#: src/shred.c:972
+#, fuzzy, c-format
+msgid "%s: removing"
+msgstr "sletter %s\n"
+
+#: src/shred.c:996
+#, fuzzy, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: lesefeil"
+
+#: src/shred.c:1018
+#, fuzzy, c-format
+msgid "%s: failed to remove"
+msgstr "fil trunkert"
+
+#: src/shred.c:1022
+#, fuzzy, c-format
+msgid "%s: removed"
+msgstr "%s: slette «%s»? "
+
+#: src/shred.c:1029 src/shred.c:1072
+#, fuzzy, c-format
+msgid "%s: failed to close"
+msgstr "fil trunkert"
+
+#: src/shred.c:1065
+#, fuzzy, c-format
+msgid "%s: failed to open for writing"
+msgstr "fil trunkert"
+
+#: src/shred.c:1130
+#, fuzzy, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: ugyldig antall sekunder"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "\\%c: ugyldig beskyttelse"
+
+#: src/shred.c:1153
+#, fuzzy, c-format
+msgid "%s: invalid file size"
+msgstr "%s: ugyldig antall linjer"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Bruk : %s [FLAGG]... [INN]... (uten -G)\n"
+"eller: %s -G [FLAGG]... [INN [UT]]\n"
+
+#: src/shuf.c:57
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "\\%c: ugyldig beskyttelse"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "ugyldig antall"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, fuzzy, c-format
+msgid "multiple output files specified"
+msgstr "\\%c: ugyldig beskyttelse"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/shuf.c:362
+#, c-format
+msgid "extra operand %s\n"
+msgstr ""
+
+#: src/sleep.c:47
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Sov i ANTALL sekund.\n"
+"SUFFIKS kan være s for å angi sekunder, m for minutter, h for \n"
+"timer (hours) og d for dager.\n"
+"\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr ""
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+
+#: src/sort.c:326
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/sort.c:363
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "feil ved skriving til %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+#, fuzzy
+msgid "cannot create temporary file"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr ""
+
+#: src/sort.c:758
+#, fuzzy
+msgid "fflush failed"
+msgstr "oppdaterer filen"
+
+#: src/sort.c:763 src/sort.c:3171
+#, fuzzy
+msgid "close failed"
+msgstr "feil ved lukking av filen"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "feil ved skriving"
+
+#: src/sort.c:871
+#, fuzzy, c-format
+msgid "couldn't execute %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/sort.c:920
+#, fuzzy, c-format
+msgid "couldn't execute %s -d"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/sort.c:938
+#, fuzzy
+msgid "write failed"
+msgstr "feil ved skriving"
+
+#: src/sort.c:975
+#, fuzzy, c-format
+msgid "warning: cannot remove: %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr ""
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr ""
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr ""
+
+#: src/sort.c:1951
+#, fuzzy, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%d: uorden: "
+
+#: src/sort.c:1955
+#, fuzzy
+msgid "standard error"
+msgstr "stdin: lesefeil"
+
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "ugyldig feltspesifikasjon «%s»"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/sort.c:2887
+#, fuzzy
+msgid "invalid number after `-'"
+msgstr "ugyldig antall bytes"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+#, fuzzy
+msgid "invalid number after `.'"
+msgstr "ugyldig antall bytes"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr ""
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "\\%c: ugyldig beskyttelse"
+
+#: src/sort.c:2943
+#, fuzzy
+msgid "invalid number at field start"
+msgstr "ugyldig antall linjer"
+
+#: src/sort.c:2947 src/sort.c:2975
+#, fuzzy
+msgid "field number is zero"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr ""
+
+#: src/sort.c:2971
+#, fuzzy
+msgid "invalid number after `,'"
+msgstr "ugyldig antall bytes"
+
+#: src/sort.c:3142
+#, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr ""
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Bruk: %s [FLAGG] [INPUT [PREFIKS]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/split.c:119
+#, fuzzy, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+"Skriv stykker av fast størrelse av INPUT til PREFIKSaa, PREFIKSab, ...;\n"
+"Forvalgt PREFIKS er `x'. Dersom ingen INPUT er spesifisert, eller INPUT er "
+"-,\n"
+"leses det fra standard inn.\n"
+"\n"
+" -ANTALL samme som -l ANTALL\n"
+" -b, --bytes=STØRRELSE skriv STØRRELSE bytes i hver utfil\n"
+" -C, --line-bytes=STØRRELSE skriv maksimum STØRRELSE bytes med linjer per\n"
+" utfil\n"
+" -l, --lines=ANTALL skriv ANTALL linjer i hver utfil\n"
+" --verbose skriv en diagnostikk til standard error rett\n"
+" før hver utfil åpnes\n"
+" --help vis denne hjelpteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+"\n"
+"STØRRELSE kan ha en multiplikatorendelse: b for 512, k for 1K eller\n"
+" m for 1 Meg.\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr ""
+
+#: src/split.c:211
+#, fuzzy, c-format
+msgid "creating file %s\n"
+msgstr "lager filen «%s»\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "kan ikke dele opp på mer enn én måte"
+
+#: src/split.c:420
+#, fuzzy, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: ugyldig antall linjer"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: ugyldig antall bytes"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: ugyldig antall linjer"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr ""
+
+#: src/split.c:518
+#, fuzzy, c-format
+msgid "invalid number of lines: 0"
+msgstr "ugyldig antall linjer"
+
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s: ukjent flagg «-%c»\n"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%s: ugyldig mønster"
+
+#: src/stat.c:726
+#, fuzzy, c-format
+msgid "warning: backslash at end of format"
+msgstr "ugyldig backslash-beskyttelse ved slutten av streng"
+
+#: src/stat.c:755
+#, fuzzy, c-format
+msgid "cannot read file system information for %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/stat.c:831
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Bruk: %s [FLAGG] [FIL]...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+
+#: src/stty.c:517
+#, fuzzy
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Skriv ut eller endre terminal-karakteristikk.\n"
+"\n"
+" -a, --all skriv ut alle nåværende innstillinger i menneske-lesbar "
+"form\n"
+" -g, --save skriv ut alle nåværende innstillinger i stty-lesbar form\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+"\n"
+"«-» før INNSTILLING indikerer en motsatt innstilling. «*» markerer\n"
+"innstillinger som ikke følger POSIX-standarden. Det underliggende systemet\n"
+"definerer hvilke innstillinger som er tilgjengelige.\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+
+#: src/stty.c:583
+#, fuzzy
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+"\n"
+"Kontrollinnstillinger:\n"
+" [-]clocal slå av signaler for modem-kontroll\n"
+" [-]cread la inndata bli mottatt\n"
+"* [-]crtscts slå på RTC/CTS-forhandling («handshaking»)\n"
+" csN sett tegnstørrelse til N bits, N i [5..8]\n"
+" [-]cstopb bruk to stop-bits per tegn (én med «-»)\n"
+" [-]hup send et hangup-signal når den siste prosessen lukker ttyen\n"
+" [-]hupcl samme som [-]hup\n"
+" [-]parenb generer paritetsbit ved skriving og forvent paritetsbit ved\n"
+" lesing\n"
+" [-]parodd sett ulik paritet (lik med «-»)\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:624
+#, fuzzy
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+"\n"
+"Innstillinger for utdata:\n"
+"* bsN backspace-forsinkelsesstil, N i [0..1]\n"
+"* crN vognretur-forsinkelsesstil, N i [0..3]\n"
+"* ffN sideskift-forsinkelsesstil, N i [0..1]\n"
+"* nlN linjeskift-forsinkelsesstil, N i [0..1]\n"
+"* [-]ocrnl oversett vognretur til linjeskift\n"
+"* [-]ofdel bruk slettetegn til fyll istedet for null-tegn\n"
+"* [-]ofill bruk fyll-tegn (padding) istedet for forsinkelses-timing\n"
+"* [-]olcuc oversett små bokstaver til store\n"
+"* [-]onlcr oversett linjeskift til vognretur-linjeskift\n"
+"* [-]onlret linjeskift foretar vognretur\n"
+"* [-]onocr ikke skriv vognreturer i første kolonne\n"
+" [-]opost etterprossesser output\n"
+"* tabN horisontal tab-forsinkelsesstil, N i [0..3]\n"
+"* tabs samme som tab0\n"
+"* -tabs samme som tab3\n"
+"* vtN vertikal tab-forsinkelsesstil, N i [0..1]\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"Håndter tty-linjen koblet til standard inn. Uten argumenter, skriv ut\n"
+"bitrate, linjedisiplin og avvik fra «stty sane». I innstillinger tas\n"
+"TEGN bokstavelig eller kodet som i ^c, 0x37, 0177 eller 127; spesielle\n"
+"verdier, ^- eller undef brukes for å slå av spesielle tegn\n"
+
+#: src/stty.c:789
+#, fuzzy, c-format
+msgid "only one device may be specified"
+msgstr "kun ett argument kan spesifiseres"
+
+#: src/stty.c:819
+#, fuzzy, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr "flaggene --string og --check kan ikke brukes samtidig"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "når en stil for utdata spesifiseres kan ikke modi settes"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr ""
+
+#: src/stty.c:885 src/stty.c:995
+#, fuzzy, c-format
+msgid "invalid argument %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, fuzzy, c-format
+msgid "missing argument to %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "ugyldig felt-nummer: «%s»"
+
+#: src/stty.c:1046
+#, fuzzy, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "standard inn: ikke i stand til å utføre alle forespurte operasjoner"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "new_mode: modus\n"
+
+#: src/stty.c:1392
+#, fuzzy, c-format
+msgid "%s: no size information for this device"
+msgstr "ingen informasjon om størrelse for denne enheten"
+
+#: src/stty.c:1888
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "ugyldig linjenummer-økning: «%s»"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Passord:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: kan ikke åpne /dev/tty"
+
+#: src/su.c:303
+#, fuzzy, c-format
+msgid "cannot set groups"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "kan ikke sette gruppe-id"
+
+#: src/su.c:309
+#, fuzzy, c-format
+msgid "cannot set user id"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/su.c:385
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/su.c:386
+#, fuzzy
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Endre den effektive bruker-id'en og gruppe-id'en til BRUKER.\n"
+"\n"
+" -, -l, --login gjør shellet til et login-shell\n"
+" -c, --command=KOMMANDO send en enkel kommando til shellet med -c\n"
+" -f, --fast send -f til shellet (for csh eller tcsh)\n"
+" -m, --preserve-environment ikke nullstill miljøvariabler\n"
+" -s, --shell=SHELL kjør SHELL hvis /etc/shells tillater det\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+"\n"
+"En enkel - impliserer -l. Hvis BRUKER ikke er angitt, anta root.\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "bruker %s eksisterer ikke"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "feil passord"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "bruker begrenset shell %s"
+
+#: src/su.c:523
+#, fuzzy, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/sum.c:63
+#, fuzzy
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Skriv ut sjekksum og block-antall for hver FIL.\n"
+"\n"
+" -r bruk BSD-sum-algoritme, bruk 1K-blokker\n"
+" -s, --sysv bruk SystemV-sum-algoritme, bruk 512 byte-blokker\n"
+" --help vis denne hjelpteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+"\n"
+"Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+"inn.\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+
+#: src/sync.c:74
+#, fuzzy, c-format
+msgid "ignoring all arguments"
+msgstr "for mange argumenter"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#: src/system.h:417
+#, fuzzy
+msgid " --help display this help and exit\n"
+msgstr ""
+"Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+"\n"
+" --help vis denne hjelpteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+
+#: src/system.h:419
+#, fuzzy
+msgid " --version output version information and exit\n"
+msgstr ""
+"Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+"\n"
+" --help vis denne hjelpteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tac.c:145
+#, fuzzy
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+"Skriv hver FIL til standard ut, siste linje først.\n"
+"Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+"inn.\n"
+"\n"
+" -b, --before føy til separator før istedet for etter\n"
+" -r, --regex tolk separatoren som et regulært uttrykk\n"
+" -s, --separator=STRENG bruk STRENG som separator istedet for linjeskift\n"
+" --help vis denne hjelpteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, fuzzy, c-format
+msgid "%s: seek failed"
+msgstr "feil ved lukking av filen"
+
+#: src/tac.c:265
+#, fuzzy, c-format
+msgid "record too large"
+msgstr "fil trunkert"
+
+#: src/tac.c:459
+#, fuzzy, c-format
+msgid "cannot create temporary file %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/tac.c:466
+#, fuzzy, c-format
+msgid "cannot open %s for writing"
+msgstr "kan ikke linke «%s» til «%s»"
+
+#: src/tac.c:487 src/tac.c:494
+#, fuzzy, c-format
+msgid "%s: write error"
+msgstr "feil ved skriving"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "separatoren kan ikke være tom"
+
+#: src/tail.c:220
+#, fuzzy, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv de første 10 linjene av hver FIL til standard ut.\n"
+"Med mer enn en FIL er angitt, skriv ut filnavnet før hver FIL.\n"
+"Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+"inn.\n"
+"\n"
+" -c, --bytes=STØRRELSE skriv ut første STØRRELSE bytes\n"
+" -n, --lines=ANTALL skriv ut første ANTALL tegn istedet for 10\n"
+" -q, --quiet, --silent ikke skriv ut filnavnene først\n"
+" -v, --verbose skriv alltid filnavnene først\n"
+" --help vis denne hjelpteksten, og avslutt\n"
+" --version vis programversjon og avslutt\n"
+"\n"
+"STØRRELSE kan ha en multiplikator-endelse: b for 512, k for 1K, m for 1Meg.\n"
+"Hvis -VERDI brukes som første FLAGG, leses det som -c VERDI hvis en av\n"
+"multiplikatorene bkm er bakerst, ellers leses -n VERDI.\n"
+
+#: src/tail.c:229
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+
+#: src/tail.c:244
+#, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "lukker %s (fd=%d)"
+
+#: src/tail.c:411
+#, fuzzy, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr ""
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr ""
+
+#: src/tail.c:884
+#, fuzzy, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+"«%s» har blitt erstattet av en ikke-vanlig fil. Kan ikke følge etter "
+"slutten av ikke-vanlig fil"
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr ""
+
+#: src/tail.c:913
+#, fuzzy, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "«%s» har blitt opprettet. Følger etter slutten av ny fil"
+
+#: src/tail.c:924
+#, fuzzy, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "«%s» har blitt erstattet. Følger etter slutten av ny fil"
+
+#: src/tail.c:1025
+#, fuzzy, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/tail.c:1066
+#, fuzzy, c-format
+msgid "%s: file truncated"
+msgstr "fil trunkert"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "ingen filer igjen"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+
+#: src/tail.c:1439
+#, fuzzy, c-format
+msgid "number in %s is too large"
+msgstr "fil trunkert"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr ""
+"%s: ugyldig maksimum antall av uendrete resultat av kall til stat() mellom "
+"kall til open()"
+
+#: src/tail.c:1523
+#, fuzzy, c-format
+msgid "%s: invalid PID"
+msgstr "%s: ugyldig nummer"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: ugyldig antall sekunder"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr ""
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr ""
+
+#: src/tail.c:1667
+#, fuzzy, c-format
+msgid "cannot follow %s by name"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+
+#: src/tee.c:63
+#, fuzzy
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Kopier standard inn til hver FIL og til standard ut.\n"
+"\n"
+" -a, --append legg til til de angitte FILene, ikke overskriv\n"
+" -i, --ignore-interrrupts ignorer avbruddssignaler\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+
+#: src/test.c:125
+#, fuzzy, c-format
+msgid "missing argument after %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "ugyldig antall"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "«)» forventet\n"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "«)» forventet, fant %s\n"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: unær operator forventet\n"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "-nt aksepterer ikke -l\n"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "-ef aksepterer ikke -l\n"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "-nt aksepterer ikke -l\n"
+
+#: src/test.c:368
+msgid "unknown binary operator"
+msgstr "ukjent binær operator"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: binær operator forventet\n"
+
+#: src/test.c:694
+#, fuzzy
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr "Bruk: %s [FLAGG]... [INN [UT]]\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+
+#: src/test.c:707
+#, fuzzy
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+"\n"
+" --help vis denne hjelpteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+
+#: src/test.c:727
+#, fuzzy
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" ( UTTRYKK ) UTTRYKK er sant\n"
+" ! UTTRYKK UTTRYKK er usant\n"
+" UTTRYKK1 -a UTTRYKK2 både UTTRYKK1 og UTTRYKK2 er sanne\n"
+" UTTRYKK1 -o UTTRYKK2 minst ett av uttrykkene er sanne\n"
+"\n"
+" [-n ] STRENG lengden av STRENG er ikke-null\n"
+" -z STRENG lengden av STRENG er null\n"
+" STRENG1 = STRENG2 strengene er like\n"
+" STRENG1 != STRENG2 strengene er ulike\n"
+"\n"
+" HELTALL1 -eq HELTALL2 HELTALL1 er lik HELTALL2\n"
+" HELTALL1 -ge HELTALL2 HELTALL1 er større enn eller lik HELTALL2\n"
+" HELTALL1 -gt HELTALL2 HELTALL1 er større enn HELTALL2\n"
+" HELTALL1 -le HELTALL2 HELTALL1 er mindre enn eller lik HELTALL2\n"
+" HELTALL1 -lt HELTALL2 HELTALL1 er mindre enn HELTALL2\n"
+" HELTALL1 -ne HELTALL2 HELTALL1 er ulikt HELTALL2\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+
+#: src/test.c:770
+#, fuzzy
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"Vær oppmerksom på at paranteser må være beskyttet (f.eks. med backslasher)\n"
+"for shell. HELTALL kan også være -l STRENG, som evalueres til lengden\n"
+"av STRENGen.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "manglende «]»\n"
+
+#: src/test.c:846
+#, fuzzy, c-format
+msgid "extra argument %s"
+msgstr "for mange argumenter"
+
+#: src/touch.c:112 src/touch.c:318
+#, fuzzy, c-format
+msgid "invalid date format %s"
+msgstr "ugyldig type-streng «%s»"
+
+#: src/touch.c:154
+#, fuzzy, c-format
+msgid "creating %s"
+msgstr "lager filen «%s»\n"
+
+#: src/touch.c:211
+#, fuzzy, c-format
+msgid "cannot touch %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/touch.c:217
+#, fuzzy, c-format
+msgid "setting times of %s"
+msgstr "bevarer tider for %s"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+
+#: src/touch.c:344
+#, fuzzy, c-format
+msgid "cannot specify times from more than one source"
+msgstr "kan ikke dele opp på mer enn én måte"
+
+#: src/touch.c:389
+#, fuzzy, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr "advarsel: ugyldig bredde %lu; bruker %d istedet"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Bruk: %s [FLAGG]... SETT1 [SETT2]\n"
+
+#: src/tr.c:294
+#, fuzzy
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Oversett, klem sammen og/eller fjern tegn fra standard inn,\n"
+"skriv ut til standard ut.\n"
+"\n"
+" -c, --complement først komplementer SETT1\n"
+" -d, --delete slett tegn i SETT1, ikke oversett\n"
+" -s, --squeeze-repeats erstatt rekke av tegn med ett\n"
+" -t, --truncate-set1 forkort først SETT1 til lengden til SETT2\n"
+" --help vis denne hjelpteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+
+#: src/tr.c:342
+#, fuzzy
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"Oversettelse skjer dersom -d ikke er gitt, og både SETT1 og SETT2 er der.\n"
+"-t kan bare bli brukt ved oversetting. SETT2 blir utvidet til lengden av\n"
+"SETT1 ved å repetere dets siste tegn som nødvendig. Tegn til overs i \n"
+"SETT2 ignoreres. Bare [:lower:] og [:upper:] er garantert å ekspandere i\n"
+"stigende rekkefølge; brukt i SETT2 ved oversetting kan de bare brukes i par\n"
+"for å angi oversetting fra store/små til små/store bokstaver. \n"
+"-s bruker SETT1 hvis det ikke er oversetting eller sletting; ellers bruker \n"
+"sammenklemming SETT2 og skjer etter oversetting eller sletting.\n"
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+
+#: src/tr.c:354
+#, fuzzy
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"\n"
+"Oversettelse skjer dersom -d ikke er gitt, og både SETT1 og SETT2 er der.\n"
+"-t kan bare bli brukt ved oversetting. SETT2 blir utvidet til lengden av\n"
+"SETT1 ved å repetere dets siste tegn som nødvendig. Tegn til overs i \n"
+"SETT2 ignoreres. Bare [:lower:] og [:upper:] er garantert å ekspandere i\n"
+"stigende rekkefølge; brukt i SETT2 ved oversetting kan de bare brukes i par\n"
+"for å angi oversetting fra store/små til små/store bokstaver. \n"
+"-s bruker SETT1 hvis det ikke er oversetting eller sletting; ellers bruker \n"
+"sammenklemming SETT2 og skjer etter oversetting eller sletting.\n"
+
+#: src/tr.c:519
+#, fuzzy, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"advarsel: den flertydige oktal-beskyttelsen \\%c%c%c blir tolket som \n"
+"\t2-byte-sekvensen \\0%c%c, «%c»"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "rekke-sluttpunkt i «%s-%s» er i omvendt sorteringsrekkefølge"
+
+#: src/tr.c:838
+#, fuzzy, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "ugyldig gjentagelsesteller «%s» i [c*n]-konstruksjon"
+
+#: src/tr.c:919
+#, fuzzy, c-format
+msgid "missing character class name `[::]'"
+msgstr "ugyldig tegn-klasse «%s»"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr ""
+
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "ugyldig tegn-klasse «%s»"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: ekvivalensklasseoperanden må være et enkelt tegn"
+
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr "for mange argumenter"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "gjentagelseskonstruktet [c*] kan ikke opptre i streng1"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "kun ett [c*] gjentagelseskonstrukt kan opptre i streng2"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "[=c=]-uttrykk kan ikke opptre i streng2 under oversetting"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "når sett1 ikke blir forkortet, kan ikke streng2 være tom"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"når det oversettes med komlementerte tegnklasser\n"
+"må streng2 mappe alle tegn i domenet til én"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"ved oversetting er de eneste tegnklassene som kan være i streng2\n"
+"«upper» og «lower»"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "[c*]-konstruktet kan bare opptre i streng2 ved oversetting"
+
+#: src/tr.c:1731
+#, fuzzy
+msgid "Two strings must be given when translating."
+msgstr "to strenger må være gitt ved oversetting"
+
+#: src/tr.c:1741
+#, fuzzy
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"kun én streng kan oppgis når det slettes uten sammenklemming av gjentagelser"
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "feilplassert [:upper:]- og/eller [:lower:]-konstruksjon"
+
+#: src/true.c:42
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr "Bruk: %s [FLAGG]... [INN [UT]]\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Bruk: %s [FLAGG] [FIL]\n"
+"Skriv en fullstendig sortert liste konsistent med den delvise sorteringen\n"
+"i FIL. Hvis ingen FIL eller hvis FIL er -, leses fra standard inn.\n"
+"\n"
+" --help vis denne hjelpteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+
+#: src/tsort.c:474
+#, fuzzy, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: inndata inneholder en løkke:\n"
+
+#: src/tsort.c:515
+#, fuzzy, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: inndata inneholder en løkke:\n"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Bruk: %s [FLAGG] [FIL]...\n"
+
+#: src/tty.c:70
+#, fuzzy
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Skriv ut filnavnet til terminalen som er koblet til standard inn.\n"
+"\n"
+" -s, --silent, --quiet ikke skriv ut noe, bare returner en "
+"avslutningsstatus\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "ikke en tty"
+
+#: src/uname.c:118
+#, fuzzy
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Skriv ut visse systemdata. Uten FLAGG, samme som -s.\n"
+"\n"
+" -a, --all skriv ut all informasjon\n"
+" -m, --machine skriv ut maskin-typen (hardwaretypen)\n"
+" -n, --nodename skriv ut maskinens vertsnavn\n"
+" -r, --release skriv ut operativsystemets versjonnummer\n"
+" -s, --sysname skriv ut navnet til operativsystemet\n"
+" -p, --processor skriv ut maskinens prosessortype\n"
+" -v skriv ut versjonen til operativsystemet\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+
+#: src/uname.c:236
+#, fuzzy, c-format
+msgid "cannot get system name"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/unexpand.c:125
+#, fuzzy
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Konverter mellomrom i hver FIL til tabulatorer, skriv ut til standard ut.\n"
+"Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+"inn.\n"
+"\n"
+" -a, --all konverter alle blanke tegn, istedet for bare "
+"innledende\n"
+" -t, --tabs=ANTALL ha tabulatorer ANTALL tegn fra hverandre istedet for "
+"8\n"
+" -t, --tabs=LISTE bruk komma-separert LISTE med tabulatorposisjoner.\n"
+" --help vis denne hjelpteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+"\n"
+"Istedet for -t ANTALL eller -t LISTE, kan -ANTALL eller -LISTE brukes\n"
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "fil trunkert"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Bruk: %s [FLAGG]... [INN [UT]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+
+#: src/uniq.c:350
+#, fuzzy, c-format
+msgid "too many repeated lines"
+msgstr "for mange argumenter"
+
+#: src/uniq.c:512
+#, fuzzy
+msgid "invalid number of fields to skip"
+msgstr "ugyldig antall felt å hoppe over: «%s»"
+
+#: src/uniq.c:521
+#, fuzzy
+msgid "invalid number of bytes to skip"
+msgstr "ugyldig antall bytes å hoppe over: «%s»"
+
+#: src/uniq.c:530
+#, fuzzy
+msgid "invalid number of bytes to compare"
+msgstr "ugyldig antall bytes å sammenligne: «%s»"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr "å skrive alle dupliserte linjer *og* gjentagelsesantall er meningsløst"
+
+#: src/unlink.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr "Bruk: %s [FLAGG]... [INN [UT]]\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+
+#: src/unlink.c:91
+#, fuzzy, c-format
+msgid "cannot unlink %s"
+msgstr "kan ikke utføre ioctl på «%s»"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "kunne ikke finne ut boot-tid"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s oppe "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "am"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "pm"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr ""
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr ""
+
+#: src/uptime.c:143
+#, fuzzy, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "dag"
+msgstr[1] "dag"
+
+#: src/uptime.c:147
+#, fuzzy, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "ugyldig antall"
+msgstr[1] "ugyldig antall"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", snittlast: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#: src/uptime.c:198
+#, fuzzy, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Skriv ut hvem som for øyeblikket er pålogget i følge FIL.\n"
+"Hvis FIL ikke er spesifisert brukes %s. %s som FIL er vanlig.\n"
+"\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+
+#: src/users.c:109
+#, fuzzy, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Skriv ut hvem som for øyeblikket er pålogget i følge FIL.\n"
+"Hvis FIL ikke er spesifisert brukes %s. %s som FIL er vanlig.\n"
+"\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+
+#: src/wc.c:113
+#, fuzzy
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Skriv ut antall linjer, ord og bytes for hver FIL, og en total-linje\n"
+"dersom mer enn én FIL er spesifisert. Dersom ingen FIL er spesifisert,\n"
+"eller FIL er -, leses det fra standard inn.\n"
+" -c, --bytes, --chars skriv ut antall bytes\n"
+" -l, --lines skriv ut antall linjer.\n"
+" -L, --max-line-length skriv ut lengden av den lengste linjen.\n"
+" -w, --words skriv ut antall ord\n"
+" --help vis denne hjelpteksten og avslutt\n"
+" --version vid programversjon og avslutt\n"
+
+#: src/wc.c:121
+#, fuzzy
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+"Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+"\n"
+" --help vis denne hjelpteksten og avslutt\n"
+" --version vis programversjon og avslutt\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr " gammel "
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr ""
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr ""
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr ""
+
+#: src/who.c:497
+msgid "clock change"
+msgstr ""
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr ""
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr ""
+
+#: src/who.c:545
+#, fuzzy, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"# brukere=%u\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr ""
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "LINJE"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr ""
+
+#: src/who.c:551
+#, fuzzy
+msgid "IDLE"
+msgstr "FEIL"
+
+#: src/who.c:552
+msgid "PID"
+msgstr ""
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr ""
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr ""
+
+#: src/who.c:633
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Bruk: %s [FLAGG]... FIL1 FIL2\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+
+#: src/whoami.c:51
+#, fuzzy
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Skriv ut brukernavnet bundet til den nåværende effektive brukeridentiteten.\n"
+"Samme som id -un.\n"
+"\n"
+" --help vis denne hjelpeteksten og avslutt\n"
+" --version vis versjonsinformasjon og avslutt\n"
+
+#: src/whoami.c:95
+#, fuzzy, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: kan ikke finne brukernavnet til UID %u\n"
+
+#: src/yes.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr "Bruk: %s [FLAGG]... [INN [UT]]\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+
+#, fuzzy
+#~ msgid "strip failed"
+#~ msgstr "feil ved skriving"
+
+#, fuzzy
+#~ msgid "program error"
+#~ msgstr "lesefeil"
+
+#, fuzzy
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#~ msgid "too few arguments"
+#~ msgstr "for få argumenter"
+
+#, fuzzy
+#~ msgid "closing standard output"
+#~ msgstr "standard ut"
+
+#~ msgid "group number"
+#~ msgstr "gruppenummer"
+
+#, fuzzy
+#~ msgid "invalid group number %s"
+#~ msgstr "ugyldig antall"
+
+#, fuzzy
+#~ msgid "invalid mode string: %s"
+#~ msgstr "ugyldig type-streng «%s»"
+
+#, fuzzy
+#~ msgid "unable to restore permissions of %s"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "Bruk: %s [FLAGG]... SISTE\n"
+#~ " eller: %s [FLAGG]... FØRSTE SISTE\n"
+#~ " eller: %s [FLAGG]... FØRSTE ØKNING SISTE\n"
+
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "Bruk: %s [FLAGG]... VENSTRE_FIL HØYRE_FIL\n"
+
+#, fuzzy
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#, fuzzy
+#~ msgid "missing file arguments"
+#~ msgstr "for få argumenter"
+
+#, fuzzy
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "«%s» er ikke en katalog"
+
+#, fuzzy
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr "kopierer flere filer, men siste argument (%s) er ikke en filkatalog"
+
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "symbolske linker er ikke støttet på dette systemet"
+
+#~ msgid "%s: `+' or `-' expected after delimeter"
+#~ msgstr "%s: «+» eller «-» ventet etter skilletegn"
+
+#, fuzzy
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "for mange ikke-flagg-argumenter"
+
+#, fuzzy
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-822 (-R) option"
+#~ msgstr "ingen filer kan spesifiseres når flagget --string brukes"
+
+#~ msgid "undefined"
+#~ msgstr "udefinert"
+
+#, fuzzy
+#~ msgid "cannot get time of day"
+#~ msgstr "kan ikke dele opp på mer enn én måte"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "%s+%s blokker inn\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "%s+%s blokker ut\n"
+
+#~ msgid "truncated records"
+#~ msgstr "forkortede blokker"
+
+#~ msgid ""
+#~ "only one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, "
+#~ "{unblock,sync}"
+#~ msgstr ""
+#~ "kun én konvertering fra {ascii,ebcdic,ibm}, {lcase,ucase}, {block,"
+#~ "unblock}, {unblock,sync}"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr ""
+#~ "flagget for å skrive ut den interne databasen til dircolor tar\n"
+#~ "ikke argumenter"
+
+#, fuzzy
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "advarsel: ugyldig bredde %lu; bruker %d istedet"
+
+#~ msgid ""
+#~ "warning: unportable BRE: `%s': using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr ""
+#~ "advarsel: ikke-portabel BRE(Basic Regular Expression): «%s»: \n"
+#~ "bruk av «^» som første tegn av et vanlig regulært uttrykk er ikke\n"
+#~ "portabelt; «^» ignoreres"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Bruk: %s [NAVN]\n"
+#~ " eller: %s FLAGG\n"
+#~ "Skriv vertsnavnet til dette systemet.\n"
+#~ "\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis versjonsinformasjon og avslutt\n"
+
+#, fuzzy
+#~ msgid "invalid width option: `%s'"
+#~ msgstr "ugyldig type-streng «%s»"
+
+#, fuzzy
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "advarsel: ugyldig bredde %lu; bruker %d istedet"
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "ukjent flagg «-%c»"
+
+#, fuzzy
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "advarsel: ugyldig bredde %lu; bruker %d istedet"
+
+#, fuzzy
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr ""
+#~ "installerer flere filer, men siste argument (%s) er ikke en filkatalog"
+
+#, fuzzy
+#~ msgid "%s is a directory"
+#~ msgstr "«%s» er ikke en katalog"
+
+#, fuzzy
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "ugyldig feltnummer for fil 1: «%s»"
+
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "ugyldig feltnummer for fil 2: «%s»"
+
+#~ msgid "too many non-option arguments"
+#~ msgstr "for mange ikke-flagg-argumenter"
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "for få ikke-flagg-argumenter"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: Fil eksisterer"
+
+#, fuzzy
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "kan ikke opprette symbolsk link «%s»"
+
+#, fuzzy
+#~ msgid "create hard link %s to %s"
+#~ msgstr "%s: vil ikke lage hard link «%s» til katalog «%s»"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "Bruk: %s [FLAGG]... SISTE\n"
+#~ " eller: %s [FLAGG]... FØRSTE SISTE\n"
+#~ " eller: %s [FLAGG]... FØRSTE ØKNING SISTE\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr ""
+#~ "ved oppretting av flere linker, må siste argument være en filkatalog"
+
+#~ msgid "file"
+#~ msgstr "fil"
+
+#~ msgid "files"
+#~ msgstr "filer"
+
+#~ msgid "checksum"
+#~ msgstr "sjekksum"
+
+#~ msgid "checksums"
+#~ msgstr "sjekksummer"
+
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "flaggene --string og --check kan ikke brukes samtidig"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "ingen filer kan spesifiseres når flagget --string brukes"
+
+#~ msgid "only one argument may be specified when using --check"
+#~ msgstr "kun ett argument kan spesifiseres ved bruk av --check"
+
+#, fuzzy
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#, fuzzy
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#, fuzzy
+#~ msgid "wrong number of arguments"
+#~ msgstr "for få argumenter"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr "major- og minor-nummer kan ikke angis for fifo-filer"
+
+#, fuzzy
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr "ved flytting av flere filer, må siste argument være en filkatalog"
+
+#, fuzzy
+#~ msgid ""
+#~ "Run COMMAND with an adjusted scheduling priority.\n"
+#~ "With no COMMAND, print the current scheduling priority. ADJUST is 10\n"
+#~ "by default. Range goes from -20 (highest priority) to 19 (lowest).\n"
+#~ "\n"
+#~ " -n, --adjustment=ADJUST increment priority by ADJUST first\n"
+#~ msgstr ""
+#~ "Kjør KOMMANDO med en justert behandlingsprioritet.\n"
+#~ "Uten noen KOMMANDO, skriv ut nåværende behandlingsprioritet. JUSTERING\n"
+#~ "er forvalgt til 10. Skalaen går fra -20 (høyest prioritet) til 19 "
+#~ "(lavest).\n"
+#~ "\n"
+#~ " -JUSTERING øk prioriteten med JUSTERING først\n"
+#~ " -n, --adjustment=JUSTERING samme som -JUSTERING\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis versjonsinformasjon og avslutt\n"
+
+#, fuzzy
+#~ msgid "invalid option `%s'"
+#~ msgstr "ugyldig type-streng «%s»"
+
+#, fuzzy
+#~ msgid "invalid priority `%s'"
+#~ msgstr "ugyldig felt-nummer: «%s»"
+
+#, fuzzy
+#~ msgid "cannot get priority"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#, fuzzy
+#~ msgid "cannot set priority"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#~ msgid "old-style offset"
+#~ msgstr "posisjon på gammel stil"
+
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "ugyldig andre-operand i kompatibilitetsmodus «%s»"
+
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr "i kompatibilitetsmodus må de siste to argumentene være posisjoner"
+
+#, fuzzy
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr ""
+#~ "Sjekker om filNAVN er portable.\n"
+#~ "\n"
+#~ " -p, --portability sjekk for alle POSIX-systemer, ikke bare dette\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis versjonsinformasjon og avslutt\n"
+
+#, fuzzy
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "tabulatorstørrelse inneholder et ugyldig tegn"
+
+#, fuzzy
+#~ msgid "`%s' is not a directory"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "katalogen «%s» er ikke søkbar"
+
+#, fuzzy
+#~ msgid "name `%s' has length %ld; exceeds limit of %ld"
+#~ msgstr "navnet «%s» har lengde %d; overstiger grensen på %d"
+
+#, fuzzy
+#~ msgid "path `%s' has length %d; exceeds limit of %ld"
+#~ msgstr "stien «%s» har lengde %d; overstiger grensen på %d"
+
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "«--pages» ugyldig område med sidenummer: «%s»"
+
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "«--pages» ugyldig start-sidenummer: «%s»"
+
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "«--pages» ugyldig slutt-sidenummer: «%s»"
+
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr "«--pages» start-sidenummeret er større enn slutt-sidenummeret"
+
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "«--columns=SPALTER» ugyldig antall kolonner: «%s»"
+
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr "start-sidenummeret er større enn totalt antall sider: «%d»"
+
+#, fuzzy
+#~ msgid "\\%c: invalid escape"
+#~ msgstr "%s: ugyldig mønster"
+
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "Bruk: %s format [argument...]\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+#~ msgstr ""
+#~ "Dette programmet er fri programvare. Du kan redistribuerer det og/eller\n"
+#~ "endre det under betingelsene gitt i «GNU General Public License» som\n"
+#~ "utgitt av «Free Software Foundation» -- enten versjon 2, eller (ved ditt\n"
+#~ "valg) en hvilken som helst senere versjon.\n"
+#~ "\n"
+#~ "Dette programmet er distribuert under håp om at det vil være nyttig,\n"
+#~ "men UTEN NOEN GARANTIER, heller ikke impliserte om SALGBARHET eller\n"
+#~ "EGNETHET FOR NOEN SPESIELL ANVENDELSE. Se «GNU General Public License»\n"
+#~ "for flere detaljer.\n"
+#~ "\n"
+#~ "Du skal ha mottatt en kopi av «GNU General Public License» sammen med\n"
+#~ "dette programmet -- hvis ikke, skriv til Free Software Foundation Inc.,\n"
+#~ "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#, fuzzy
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "kan ikke kjøre %s"
+
+#, fuzzy
+#~ msgid "cannot lstat %s"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "kan ikke slette «.» eller «..»"
+
+#, fuzzy
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ " -r, -R, --recursive remove the contents of directories recursively\n"
+#~ " -v, --verbose explain what is being done\n"
+#~ msgstr ""
+#~ "Slett FIL(er).\n"
+#~ "\n"
+#~ " -d, --directory slett filkataloger, selv om de ikke er tomme\n"
+#~ " (kun super-user)\n"
+#~ " -f, --force ignorer filer som ikke eksisterer, ingen "
+#~ "bekreftelse\n"
+#~ " -i, --interactive be om bekreftelse før sletting av filer\n"
+#~ " -r, -R, --recursive slett innholdet av filkataloger rekursivt\n"
+#~ " -v, --verbose forklar hva som skjer\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#~ msgid ""
+#~ "when the starting value is larger than the limit,\n"
+#~ "the increment must be negative"
+#~ msgstr "når startverdien er større enn grensen må økningen være negativ"
+
+#, fuzzy
+#~ msgid ""
+#~ "when the starting value is smaller than the limit,\n"
+#~ "the increment must be positive"
+#~ msgstr "startfeltnummer-argumentet til «-k»-flagget må være positivt"
+
+#, fuzzy
+#~ msgid "`-%d' option is obsolete; use `-l %d'"
+#~ msgstr "advarsel: ugyldig bredde %lu; bruker %d istedet"
+
+#~ msgid "stdin: read error"
+#~ msgstr "stdin: lesefeil"
+
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "%c: ugyldig suffiks-tegn i avleggs flagg"
+
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "for mange argumenter. Når tails gamle flagg-syntaks brukes (%s)\n"
+#~ "kan det ikke være mer enn ett filargument. Bruk det tilsvarende -n "
+#~ "eller\n"
+#~ "-c-flagget isteden."
+
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "Advarsel: det er ikke portabelt å bruke to eller flere filargumenter med\n"
+#~ "tails gamle falggsyntaks (%s). Bruk det tilsvarende -n eller -c-\n"
+#~ "flagget isteden."
+
+#, fuzzy
+#~ msgid "`%s' option is obsolete; use `%s-%c %.*s'"
+#~ msgstr "advarsel: ugyldig bredde %lu; bruker %d istedet"
+
+#, fuzzy
+#~ msgid "%s: is so large that it is not representable"
+#~ msgstr "%s: %s er så stor at den ikke kan representeres"
+
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr "%s: ugyldig maksimum antall etterfølgende endringer i størrelse"
+
+#~ msgid "argument expected\n"
+#~ msgstr "argument forventet\n"
+
+#~ msgid "integer expression expected %s\n"
+#~ msgstr "forventet heltallsuttrykk %s\n"
+
+#~ msgid "before -lt"
+#~ msgstr "før -lt"
+
+#~ msgid "after -lt"
+#~ msgstr "etter -lt"
+
+#~ msgid "before -le"
+#~ msgstr "før -le"
+
+#~ msgid "after -le"
+#~ msgstr "etter -le"
+
+#~ msgid "before -gt"
+#~ msgstr "før -gt"
+
+#~ msgid "after -gt"
+#~ msgstr "etter -gt"
+
+#~ msgid "before -ge"
+#~ msgstr "før -ge"
+
+#~ msgid "after -ge"
+#~ msgstr "etter -ge"
+
+#~ msgid "before -ne"
+#~ msgstr "før -ne"
+
+#~ msgid "after -ne"
+#~ msgstr "etter -ne"
+
+#~ msgid "before -eq"
+#~ msgstr "før -eq"
+
+#~ msgid "after -eq"
+#~ msgstr "etter -eq"
+
+#, fuzzy
+#~ msgid "after -t"
+#~ msgstr "etter -lt"
+
+#, fuzzy
+#~ msgid "too many arguments\n"
+#~ msgstr "for mange argumenter"
+
+#, fuzzy
+#~ msgid "file arguments missing"
+#~ msgstr "for få argumenter"
+
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "ugyldig backslash-beskyttelse «\\%c»"
+
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr ""
+#~ "to strenger må være gitt ved både sletting og sammenklemming av "
+#~ "gjentagelser"
+
+#~ msgid "at least one string must be given when squeezing repeats"
+#~ msgstr "minst en streng må være gitt ved sammenklemming av gjentagelser"
+
+#~ msgid ""
+#~ "invalid identity mapping; when translating, any [:lower:] or [:upper:]\n"
+#~ "construct in string1 must be aligned with a corresponding construct\n"
+#~ "([:upper:] or [:lower:], respectively) in string2"
+#~ msgstr ""
+#~ "ugyldig identidetsmapping; ved oversetting må evt. [:lower:]- eller\n"
+#~ "[:upper:]-konstruksjoner i streng1 være plassert i henhold til en\n"
+#~ "tilsvarende konstruksjon (henholdsvis [:upper:] eller [:lower:]) i\n"
+#~ "streng2"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Bruk: %s [NAVN]\n"
+#~ " eller: %s FLAGG\n"
+#~ "Skriv vertsnavnet til dette systemet.\n"
+#~ "\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis versjonsinformasjon og avslutt\n"
+
+#~ msgid "only one argument may be specified"
+#~ msgstr "kun ett argument kan spesifiseres"
+
+#, fuzzy
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr "advarsel: ugyldig bredde %lu; bruker %d istedet"
+
+#, fuzzy
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "advarsel: ugyldig bredde %lu; bruker %d istedet"
+
+#~ msgid "%s: cannot find username for UID %u\n"
+#~ msgstr "%s: kan ikke finne brukernavnet til UID %u\n"
+
+#, fuzzy
+#~ msgid "Try %s --help' for more information.\n"
+#~ msgstr "Prøv med «%s --help» for mer informasjon.\n"
+
+#, fuzzy
+#~ msgid "cannot lstat `.'"
+#~ msgstr "kan ikke sette dato"
+
+#, fuzzy
+#~ msgid "%s: remove directory %s? "
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#, fuzzy
+#~ msgid "%s: directory %s is write protected; descend into it anyway? "
+#~ msgstr "%s: katalog «%s» er skrivebskyttet; gå inn i den likevel? "
+
+#~ msgid "removing all entries of directory %s\n"
+#~ msgstr "fjerner alt i filkatalog «%s»\n"
+
+#~ msgid "continue? "
+#~ msgstr "fortsette? "
+
+#, fuzzy
+#~ msgid "cannot change back to directory %s via `..'"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#, fuzzy
+#~ msgid "%s: remove directory %s%s? "
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#~ msgid " (might be nonempty)"
+#~ msgstr " (er kanskje ikke tom)"
+
+#, fuzzy
+#~ msgid "removing the directory itself: %s\n"
+#~ msgstr "advarsel: kan ikke skifte katalog til %s"
+
+#, fuzzy
+#~ msgid "cannot fork"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#, fuzzy
+#~ msgid " or: %s [-acm] MMDDhhmm[YY] FILE... (obsolete)\n"
+#~ msgstr " eller: %s [-acm] MMDDttmm[ÅÅ] FIL... (avleggs)\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Change the group membership of each FILE to GROUP.\n"
+#~ "\n"
+#~ " -c, --changes like verbose but report only when a change is "
+#~ "made\n"
+#~ " --dereference affect the referent of each symbolic link, "
+#~ "rather\n"
+#~ " than the symbolic link itself\n"
+#~ " -h, --no-dereference affect symbolic links instead of any referenced "
+#~ "file\n"
+#~ " (available only on systems that can change the\n"
+#~ " ownership of a symlink)\n"
+#~ " -f, --silent, --quiet suppress most error messages\n"
+#~ " --reference=RFILE use RFILE's group rather than the specified\n"
+#~ " GROUP value\n"
+#~ " -R, --recursive operate on files and directories recursively\n"
+#~ " -v, --verbose output a diagnostic for every file processed\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Endre gruppen til hver FIL til GRUPPE.\n"
+#~ "\n"
+#~ " -c, --changes som verbose, men rapporter bare ved endringer\n"
+#~ " -h, --no-dereference endre symbolske linker istedet for refererte "
+#~ "filer\n"
+#~ " (kun for systemer med systemkallet «lchown»)\n"
+#~ " -f, --silent, --quiet undertrykk de fleste feilmeldingene\n"
+#~ " --reference=RFIL bruke RFIL sin gruppe istedenfor å bruke en\n"
+#~ " GRUPPE-verdi\n"
+#~ " -R, --recursive endre filer og filkataloger rekursivt\n"
+#~ " -v, --verbose gi en diagnostikk for hver fil som behandles\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+#~ "\n"
+#~ " -c, --changes like verbose but report only when a change is "
+#~ "made\n"
+#~ " --dereference affect the referent of each symbolic link, "
+#~ "rather\n"
+#~ " than the symbolic link itself\n"
+#~ " -h, --no-dereference affect symbolic links instead of any referenced "
+#~ "file\n"
+#~ " (available only on systems that can change the\n"
+#~ " ownership of a symlink)\n"
+#~ " --from=CURRENT_OWNER:CURRENT_GROUP\n"
+#~ " change the owner and/or group of each file only "
+#~ "if\n"
+#~ " its current owner and/or group match those "
+#~ "specified\n"
+#~ " here. Either may be omitted, in which case a "
+#~ "match\n"
+#~ " is not required for the omitted attribute.\n"
+#~ " -f, --silent, --quiet suppress most error messages\n"
+#~ " --reference=RFILE use RFILE's owner and group rather than\n"
+#~ " the specified OWNER:GROUP values\n"
+#~ " -R, --recursive operate on files and directories recursively\n"
+#~ " -v, --verbose output a diagnostic for every file processed\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Endre eier og/eller gruppe til hver FIL til EIER og/eller GRUPPE.\n"
+#~ "\n"
+#~ " -c, --changes rapporter alle endringer\n"
+#~ " --dereference foreta endringene på referenten av hver "
+#~ "symbolsk\n"
+#~ " link isteden for den sombolske linken selv\n"
+#~ " -h, --no-dereference endre symbolske linker istedet for refererte "
+#~ "filer\n"
+#~ " (kun for systemer med systemkallet «lchown»)\n"
+#~ " -f, --silent, --quiet undertrykk de fleste feilmeldingene\n"
+#~ " --reference=RFIL bruk eier og gruppe til RFIL isteden for å "
+#~ "bruke\n"
+#~ " eksplisitte EIER.GRUPPE-verdier\n"
+#~ " -R, --recursive endre filer og filkataloger rekursivt\n"
+#~ " -v, --verbose fortell hva som skjer\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "Eier forblir uendret dersom utelatt. Gruppen forblir uendret dersom den\n"
+#~ "ikke er spesifiert, men blir satt til login-gruppen dersom den er "
+#~ "implisert\n"
+#~ "med et punktum. Punktumet kan byttes ut med et kolon.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -l, --link link files instead of copying\n"
+#~ " -L, --dereference always follow symbolic links\n"
+#~ " -p same as --preserve=mode,ownership,"
+#~ "timestamps\n"
+#~ " --preserve[=ATTR_LIST] preserve the specified attributes "
+#~ "(default:\n"
+#~ " mode,ownership,timestamps), if possible\n"
+#~ " additional attributes: links, all\n"
+#~ " --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+#~ " --parents append source path to DIRECTORY\n"
+#~ " -P same as `--no-dereference'\n"
+#~ " -r copy recursively, non-directories as "
+#~ "files\n"
+#~ " WARNING: use -R instead when you might "
+#~ "copy\n"
+#~ " special files like FIFOs or /dev/zero\n"
+#~ " --remove-destination remove each existing destination file "
+#~ "before\n"
+#~ " attempting to open it (contrast with --"
+#~ "force)\n"
+#~ msgstr ""
+#~ "Kopier KILDE til MÅL, eller en eller flere KILDE(r) til FILKATALOG.\n"
+#~ "\n"
+#~ " -a, --archive samme som -dpR\n"
+#~ " -b, --backup lag sikkerhetskopi før sletting\n"
+#~ " -d, --no-dereference bevar linker\n"
+#~ " -f, --force slett eksisterende filer uten bekreftelse\n"
+#~ " -i, --interactive be om bekreftelse før overskriving av "
+#~ "filer\n"
+#~ " -l, --link lag linker istedet for å kopiere\n"
+#~ " -p, --preserve forsøk å beholde filattributter\n"
+#~ " -P, --parents legg kildens søkesti til FILKATALOG\n"
+#~ " -r kopier rekursivt, alt utenom filkataloger\n"
+#~ " kopieres som filer\n"
+#~ " --sparse=NÅR kontroller oppretting av filer med hull\n"
+#~ " -R, --recursive kopier filkataloger rekursivt\n"
+#~ " -s, --symbolic-link lag symbolske linker istedet for å "
+#~ "kopiere\n"
+#~ " -S, --suffix=SUFFIKS overstyr det vanlige sikkerhetskopi-"
+#~ "suffikset\n"
+#~ " -u, --update kopier bare eldre eller helt nye filer\n"
+#~ " -v, --verbose forklar hva som skjer\n"
+#~ " -V, --version-control=ORD overstyr den vanlige versjonskontrollen\n"
+#~ " -x, --one-file-system kopier bare filer fra dette filsystemet\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "Normalt blir kildefiler med hull oppdaget ved hjelp av en enkel "
+#~ "heuristikk,\n"
+#~ "og målfilen blir også laget med hull. Dette er oppførselen som er gitt "
+#~ "med\n"
+#~ "--sparse=auto. Spesifiser --sparse=always for å opprette en målfil med\n"
+#~ "hull i, dersom kildefilen inneholder en tilstrekkelig lang sekvens med\n"
+#~ "null-tegn. Bruk --sparse=never for å hindre oppretting av filer med "
+#~ "hull.\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Copy a file, converting and formatting according to the options.\n"
+#~ "\n"
+#~ " bs=BYTES force ibs=BYTES and obs=BYTES\n"
+#~ " cbs=BYTES convert BYTES bytes at a time\n"
+#~ " conv=KEYWORDS convert the file as per the comma separated keyword "
+#~ "list\n"
+#~ " count=BLOCKS copy only BLOCKS input blocks\n"
+#~ " ibs=BYTES read BYTES bytes at a time\n"
+#~ " if=FILE read from FILE instead of stdin\n"
+#~ " obs=BYTES write BYTES bytes at a time\n"
+#~ " of=FILE write to FILE instead of stdout\n"
+#~ " seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+#~ " skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "BLOCKS and BYTES may be followed by the following multiplicative "
+#~ "suffixes:\n"
+#~ "xM M, c 1, w 2, b 512, kD 1000, k 1024, MD 1,000,000, M 1,048,576,\n"
+#~ "GD 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.\n"
+#~ "Each KEYWORD may be:\n"
+#~ "\n"
+#~ " ascii from EBCDIC to ASCII\n"
+#~ " ebcdic from ASCII to EBCDIC\n"
+#~ " ibm from ASCII to alternated EBCDIC\n"
+#~ " block pad newline-terminated records with spaces to cbs-size\n"
+#~ " unblock replace trailing spaces in cbs-size records with newline\n"
+#~ " lcase change upper case to lower case\n"
+#~ " notrunc do not truncate the output file\n"
+#~ " ucase change lower case to upper case\n"
+#~ " swab swap every pair of input bytes\n"
+#~ " noerror continue after read errors\n"
+#~ " sync pad every input block with NULs to ibs-size; when used\n"
+#~ " with block or unblock, pad with spaces rather than NULs\n"
+#~ msgstr ""
+#~ "Kopier en fil, med konvertering og formattering som spesifisert.\n"
+#~ "\n"
+#~ " bs=BYTES tving ibs=BYTES og obs=BYTES\n"
+#~ " cbs=BYTES konverter BYTES bytes om gangen\n"
+#~ " conv=NØKKELORD konverter filen vha. en liste med kommaseparerte "
+#~ "nøkkelord\n"
+#~ " count=BLOKKER kopier bare BLOKKER innblokker\n"
+#~ " ibs=BYTES les BYTES bytes om gangen\n"
+#~ " if=FIL les fra FIL istedet for stdin\n"
+#~ " obs=BYTES skriv BYTES bytes om gangen\n"
+#~ " of=FIL skriv til FIL istedet for stdout, ikke kutt filen\n"
+#~ " seek=BLOKKER hopp over BLOKKER blokker med størrelse obs fra\n"
+#~ " begynnelsen av utdata\n"
+#~ " skip=BLOKKER hopp over BLOKKER blokkermed størrelse ibs fra\n"
+#~ " begynnelsen av inndata\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "BYTES kan ha suffiks: xM M, c 1, w 2, b 512, kD 1000, k 1024, MD "
+#~ "1.000.000,\n"
+#~ "M 1.048.576, GD 1.000.000.000, G 1.073.741.824, og så videre for T, P, "
+#~ "E,\n"
+#~ "Z og Y.\n"
+#~ "Hvert NØKKELORD kan være:\n"
+#~ " ascii fra EBCDIC til ASCII\n"
+#~ " ebcdic fra ASCII til EBCDIC\n"
+#~ " ibm fra ASCII til alternert EBCDIC\n"
+#~ " block fyll ut felter terminert med linjeskift med mellomrom til\n"
+#~ " størrelse gitt i cbs\n"
+#~ " unblock bytt ut mellomrom med linjeskift i blokker med størrelse\n"
+#~ " som gitt i cbs\n"
+#~ " lcase gjør om store bokstaver til små\n"
+#~ " notrunc ikke forkort utfilen\n"
+#~ " ucase gjør om små bokstaver til store\n"
+#~ " swab bytt om hvert par av bytes i inndata\n"
+#~ " noerror forsett etter lesefeil\n"
+#~ " sync fyll ut hver inndata-blokk med null-tegn til størrelse gitt i "
+#~ "ibs\n"
+
+#~ msgid ""
+#~ "Show information about the filesystem on which each FILE resides,\n"
+#~ "or all filesystems by default.\n"
+#~ "\n"
+#~ " -a, --all include filesystems having 0 blocks\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -i, --inodes list inode information instead of block usage\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l, --local limit listing to local filesystems\n"
+#~ " -m, --megabytes like --block-size=1048576\n"
+#~ " --no-sync do not invoke sync before getting usage info "
+#~ "(default)\n"
+#~ " -P, --portability use the POSIX output format\n"
+#~ " --sync invoke sync before getting usage info\n"
+#~ " -t, --type=TYPE limit listing to filesystems of type TYPE\n"
+#~ " -T, --print-type print filesystem type\n"
+#~ " -x, --exclude-type=TYPE limit listing to filesystems not of type "
+#~ "TYPE\n"
+#~ " -v (ignored)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vis informasjon om filsystemet som FIL ligger på, eller alle "
+#~ "filsystemer.\n"
+#~ "\n"
+#~ " -a, --all ta med filsystemer med 0 blokker\n"
+#~ " --block-size=STØR bruke blokker på STØR bytes\n"
+#~ " -h, --human-readable skriv størrelser på en form lesbar for mennesker\n"
+#~ " (f.eks. 1K 234M 2G)\n"
+#~ " -H, --si det samme, men bruk 1000 som base, ikke 1024\n"
+#~ " -i, --inodes skriv inodeinformasjon istedet for blokk-forbruk\n"
+#~ " -k, --kilobytes bruk 1024-byte blokker\n"
+#~ " -m, --megabytes bruk 1024K-byte blokker\n"
+#~ " --no-sync ikke kjør sync før henting av informasjon "
+#~ "(forvalgt)\n"
+#~ " -P, --portability bruk POSIX-format på utdata\n"
+#~ " --sync kjør sync før henting av informasjon\n"
+#~ " -t, --type=TYPE list filsystemer av type TYPE\n"
+#~ " -T, --print-type skriv ut typen på filsystemet\n"
+#~ " -x, --exclude-type=TYPE list filsystemer som ikke er av type TYPE\n"
+#~ " -v (ignorert)\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#~ msgid ""
+#~ "Summarize disk usage of each FILE, recursively for directories.\n"
+#~ "\n"
+#~ " -a, --all write counts for all files, not just directories\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -b, --bytes print size in bytes\n"
+#~ " -c, --total produce a grand total\n"
+#~ " -D, --dereference-args dereference PATHs when symbolic link\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l, --count-links count sizes many times if hard linked\n"
+#~ " -L, --dereference dereference all symbolic links\n"
+#~ " -m, --megabytes like --block-size=1048576\n"
+#~ " -S, --separate-dirs do not include size of subdirectories\n"
+#~ " -s, --summarize display only a total for each argument\n"
+#~ " -x, --one-file-system skip directories on different filesystems\n"
+#~ " -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+#~ "FILE.\n"
+#~ " --exclude=PAT Exclude files that match PAT.\n"
+#~ " --max-depth=N print the total for a directory (or file, with --"
+#~ "all)\n"
+#~ " only if it is N or fewer levels below the "
+#~ "command\n"
+#~ " line argument; --max-depth=0 is the same as\n"
+#~ " --summarize\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Summer diskforbruk for hver FIL, rekursivt for filkataloger.\n"
+#~ "\n"
+#~ " -a, --all ta med filer, ikke bare filkataloger\n"
+#~ " --block-size=STØR bruk blokker på STØR bytes\n"
+#~ " -b, --bytes skriv størrelse i bytes\n"
+#~ " -c, --total skriv ut totalsum\n"
+#~ " -D, --dereference-args følg søkestier når de er symbolske linker\n"
+#~ " -h, --human-readable skriv størrelser på en form lesbar for mennesker\n"
+#~ " (f.eks. 1K 234M 2G)\n"
+#~ " -H, --si det samme, men bruk 1000 som base, ikke 1024\n"
+#~ " -k, --kilobytes bruk 1024-byte blokker\n"
+#~ " -l, --count-links regn med størrelsen flere ganger for harde "
+#~ "linker\n"
+#~ " -L, --dereference følg symbolske linker\n"
+#~ " -m, --megabytes bruk 1024K-byte blokker\n"
+#~ " -S, --separate-dirs ta ikke med størrelsen på underkataloger\n"
+#~ " -s, --summarize vis bare sum for hvert argument\n"
+#~ " -x, --one-file-system ta ikke med filkataloger på andre filsystem\n"
+#~ " -X FIL, --exclude-from=FIL Eksluder filer som svarer til et hvilket "
+#~ "som\n"
+#~ " helst mønster i FIL.\n"
+#~ " --exclude=MØN eksluder filer som svarer til MØN.\n"
+#~ " --max-depth=N skriv totalen for en katalog (eller fil med --"
+#~ "all)\n"
+#~ " bare hvis det er N eller færre nivå under "
+#~ "kommandoen.\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "In the first two formats, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+#~ "the existing DIRECTORY, while setting permission modes and owner/group.\n"
+#~ "In the third format, create all components of the given DIRECTORY(ies).\n"
+#~ "\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination file\n"
+#~ " -b like --backup but does not accept an argument\n"
+#~ " -c (ignored)\n"
+#~ " -d, --directory treat all arguments as directory names; create all\n"
+#~ " components of the specified directories\n"
+#~ " -D create all leading components of DEST except the "
+#~ "last,\n"
+#~ " then copy SOURCE to DEST; useful in the 1st "
+#~ "format\n"
+#~ " -g, --group=GROUP set group ownership, instead of process' current "
+#~ "group\n"
+#~ " -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-"
+#~ "xr-x\n"
+#~ " -o, --owner=OWNER set ownership (super-user only)\n"
+#~ " -p, --preserve-timestamps apply access/modification times of SOURCE "
+#~ "files\n"
+#~ " to corresponding destination files\n"
+#~ " -s, --strip strip symbol tables, only for 1st and 2nd formats\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " -v, --verbose print the name of each directory as it is created\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "De to første formatene kopierer KILDE til MÅL eller en eller flere KILDE"
+#~ "(r)\n"
+#~ "til FILKATALOG, samtidig som beskyttelser og eier/gruppe settes. Det\n"
+#~ "tredje formatet oppretter FILKATALOG(er) samt eventuelle "
+#~ "foreldrekataloger.\n"
+#~ "\n"
+#~ " -b, --backup gjør sikkerhetskopi før sletting\n"
+#~ " -c (ignorert)\n"
+#~ " -d, --directory opprett filkataloger, inklusive "
+#~ "foreldrekataloger.\n"
+#~ " -D opprett alle ledende komponentene av MÅL utenom "
+#~ "den\n"
+#~ " siste, kopier deretter KILDE til MÅL; nyttig for "
+#~ "det\n"
+#~ " første formatet.\n"
+#~ " -g, --group=GRUPPE sett gruppe, istedet for prosessens nåværende "
+#~ "gruppe\n"
+#~ " -m, --mode=BESKYTTELSE sett beskyttelse (som chmod), istedet for 0644\n"
+#~ " -o, --owner=EIER sett eier (kun super-user)\n"
+#~ " -p, --preserve-timestamps sett aksess/endringstider på mål-filene "
+#~ "som\n"
+#~ " tilsvarer KILDE-filene.\n"
+#~ " -s, --strip ta bort symboltabeller, kun format 1 og 2\n"
+#~ " -S, --suffix=SUFFIKS overstyr det vanlige sikkerhetskopi-suffikset\n"
+#~ " --verbose skriv navnet på hver katalog når det blir "
+#~ "opprettet\n"
+#~ " -V, --version-control=ORD overstyr den vanlige versjonskontrollen\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Create a link to the specified TARGET with optional LINK_NAME.\n"
+#~ "If LINK_NAME is omitted, a link with the same basename as the TARGET is\n"
+#~ "created in the current directory. When using the second form with more\n"
+#~ "than one TARGET, the last argument must be a directory; create links\n"
+#~ "in DIRECTORY to each TARGET. Create hard links by default, symbolic\n"
+#~ "links with --symbolic. When creating hard links, each TARGET must "
+#~ "exist.\n"
+#~ "\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination "
+#~ "file\n"
+#~ " -b like --backup but does not accept an "
+#~ "argument\n"
+#~ " -d, -F, --directory hard link directories (super-user only)\n"
+#~ " -f, --force remove existing destination files\n"
+#~ " -n, --no-dereference treat destination that is a symlink to a\n"
+#~ " directory as if it were a normal file\n"
+#~ " -i, --interactive prompt whether to remove destinations\n"
+#~ " -s, --symbolic make symbolic links instead of hard links\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " --target-directory=DIRECTORY specify the DIRECTORY in which to "
+#~ "create\n"
+#~ " the links\n"
+#~ " -v, --verbose print name of each file before linking\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Opprett en link til det spesifiserte MÅLer med eventuelt LINKNAVN. Hvis "
+#~ "det\n"
+#~ "er mer enn ett MÅL, må det siste argumentet være en katalog; lag linker\n"
+#~ "i KATALOG til hvert MÅL. Forvalgt er å lage harde linker, symbolske "
+#~ "linker\n"
+#~ "med --symbolic. Når det opprettes harde linker må hvert MÅL eksistere.\n"
+#~ "\n"
+#~ " -b, --backup gjør sikkerhetskopi av slettede filer\n"
+#~ " -d, -F, --directory lag harde linker for filkataloger\n"
+#~ " (kun super-user)\n"
+#~ " -f, --force slett eksisterende mål\n"
+#~ " -n, --no-dereference behandle mål som er en symbolsk link som "
+#~ "om\n"
+#~ " det skulle være en normal fil\n"
+#~ " -i, --interactive be om bekreftelse før sletting av filer\n"
+#~ " -s, --symbolic lag symbolske linker istedet for harde "
+#~ "linker\n"
+#~ " -S, --suffix=SUFFIKS overstyr det vanlige sikkerhetskopi-"
+#~ "suffikset\n"
+#~ " -v, --verbose skriv navnet på hver fil før linking\n"
+#~ " -V, --version-control=ORD overstyr den vanlige versjonskontrollen\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "List information about the FILEs (the current directory by default).\n"
+#~ "Sort entries alphabetically if none of -cftuSUX nor --sort.\n"
+#~ "\n"
+#~ " -a, --all do not hide entries starting with .\n"
+#~ " -A, --almost-all do not list implied . and ..\n"
+#~ " -b, --escape print octal escapes for nongraphic "
+#~ "characters\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -B, --ignore-backups do not list implied entries ending with ~\n"
+#~ " -c with -lt: sort by, and show, ctime (time of "
+#~ "last\n"
+#~ " modification of file status information)\n"
+#~ " with -l: show ctime and sort by name\n"
+#~ " otherwise: sort by ctime\n"
+#~ " -C list entries by columns\n"
+#~ " --color[=WHEN] control whether color is used to distinguish "
+#~ "file\n"
+#~ " types. WHEN may be `never', `always', or "
+#~ "`auto'\n"
+#~ " -d, --directory list directory entries instead of contents\n"
+#~ " -D, --dired generate output designed for Emacs' dired "
+#~ "mode\n"
+#~ " -f do not sort, enable -aU, disable -lst\n"
+#~ " -F, --classify append indicator (one of */=@|) to entries\n"
+#~ " --format=WORD across -x, commas -m, horizontal -x, long -"
+#~ "l,\n"
+#~ " single-column -1, verbose -l, vertical -C\n"
+#~ " --full-time like -l --time-style=full-iso\n"
+#~ msgstr ""
+#~ "List informasjon om FILer (aktiv filkatalog om ikke annet spesifiseres).\n"
+#~ "Sorter filene alfabetisk om ingen av flaggene -cftuSUX eller --sort gis.\n"
+#~ "\n"
+#~ " -a, --all ikke gjem filer som starter med .\n"
+#~ " -A, --almost-all ikke vis . og ..\n"
+#~ " -b, --escape skriv oktale koder for ikke-grafiske tegn\n"
+#~ " --block-size=STØRRELSE use blokker på STØRRELSE bytes\n"
+#~ " -B, --ignore-backups ikke vis filer som slutter med ~\n"
+#~ " -c sorter på endringsdato; med -l: vis "
+#~ "endringsdato\n"
+#~ " -C list filer i kolonner\n"
+#~ " --color[=NÅR] kontroller om farge skal brukes for å "
+#~ "skille\n"
+#~ " filtyper. NÅR kan være «never», "
+#~ "«always»,\n"
+#~ " eller «auto».\n"
+#~ " -d, --directory list filkataloger istedet for innholdet\n"
+#~ " -D, --dired generer utdata for Emacs' dired-modus\n"
+#~ " -f ikke sorter, slå på -aU, slå av -lst\n"
+#~ " -F, --classify legg til en bokstav (en av */=@|) for "
+#~ "filtypen\n"
+#~ " --format=ORD across -x, commas -m, horizontal -x, long -"
+#~ "l,\n"
+#~ " single-column -1, verbose -l, vertical -C\n"
+#~ " --full-time list full dato og klokkeslett\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -g like -l, but do not list owner\n"
+#~ " -G, --no-group inhibit display of group information\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " --si likewise, but use powers of 1000 not 1024\n"
+#~ " -H, --dereference-command-line follow symbolic links on the command "
+#~ "line\n"
+#~ " --indicator-style=WORD append indicator with style WORD to entry "
+#~ "names:\n"
+#~ " none (default), classify (-F), file-type (-"
+#~ "p)\n"
+#~ " -i, --inode print index number of each file\n"
+#~ " -I, --ignore=PATTERN do not list implied entries matching shell "
+#~ "PATTERN\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l use a long listing format\n"
+#~ " -L, --dereference when showing file information for a "
+#~ "symbolic\n"
+#~ " link, show information for the file the "
+#~ "link\n"
+#~ " references rather than for the link "
+#~ "itself\n"
+#~ " -m fill width with a comma separated list of "
+#~ "entries\n"
+#~ msgstr ""
+#~ " -g (ignorert)\n"
+#~ " -G, --no-group ta ikke med gruppe i listingen\n"
+#~ " -h, --human-readable skriv størrelser i et format lesbart av "
+#~ "mennesker\n"
+#~ " (f.eks. 1K 234M 2G)\n"
+#~ " -H, --si det sammen, men bruk 1000 som base, ikke "
+#~ "1024\n"
+#~ " --indicator-style=ORD legg til indikator med stil ORD til "
+#~ "elementer:\n"
+#~ " none (forvalgt), classify (-F), file-type (-"
+#~ "p)\n"
+#~ " -i, --inode list indeksnummeret for hver fil\n"
+#~ " -I, --ignore=MØNSTER vis ikke filer som stemmer overens med\n"
+#~ " shell-MØNSTERet\n"
+#~ " -k, --kilobytes bruk 1024 blokker, på tross av "
+#~ "POSIXLY_CORRECT\n"
+#~ " -l bruk langt listeformat\n"
+#~ " -L, --dereference vis filer som pekes på av symbolske linker\n"
+#~ " -m skriv full skjermbredde med kommaseparering\n"
+#~ " -n, --numeric-uid-gid skriv UID og GID med tall istedet for navn\n"
+#~ " -N, --literal skriv ut alle tegn (inklusive kontrolltegn)\n"
+#~ " -o bruk langt listeformat uten "
+#~ "gruppeinformasjon\n"
+#~ " -p legg til en bokstav for filtypen\n"
+#~ " -q, --hide-control-chars skriv ? istedet for ikke-grafiske tegn\n"
+#~ " --show-control-chars vis kontrolltegn som de er (forvalgt)\n"
+#~ " -Q, --quote-name sett filnavn i gåseøyne\n"
+#~ " --quoting-style=ORD bruk beskyttelsesstil ORD for filnavn:\n"
+#~ " literal, shell, shell-always, c eller "
+#~ "escape\n"
+#~ " -r, --reverse sorter baklengs\n"
+#~ " -R, --recursive list underkataloger rekursivt\n"
+#~ " -s, --size skriv blokkstørrelse for hver fil\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -S sort by file size\n"
+#~ " --sort=WORD extension -X, none -U, size -S, time -t,\n"
+#~ " version -v\n"
+#~ " status -c, time -t, atime -u, access -u, use "
+#~ "-u\n"
+#~ " --time=WORD show time as WORD instead of modification "
+#~ "time:\n"
+#~ " atime, access, use, ctime or status; use\n"
+#~ " specified time as sort key if --sort=time\n"
+#~ " --time-style=WORD show times using style WORD:\n"
+#~ " full-iso, iso, locale, posix-iso\n"
+#~ " -t sort by modification time\n"
+#~ " -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+#~ " -u with -lt: sort by, and show, access time\n"
+#~ " with -l: show access time and sort by "
+#~ "name\n"
+#~ " otherwise: sort by access time\n"
+#~ " -U do not sort; list entries in directory "
+#~ "order\n"
+#~ " -v sort by version\n"
+#~ " -w, --width=COLS assume screen width instead of current "
+#~ "value\n"
+#~ " -x list entries by lines instead of by columns\n"
+#~ " -X sort alphabetically by entry extension\n"
+#~ " -1 list one file per line\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "By default, color is not used to distinguish types of files. That is\n"
+#~ "equivalent to using --color=none. Using the --color option without the\n"
+#~ "optional WHEN argument is equivalent to using --color=always. With\n"
+#~ "--color=auto, color codes are output only if standard output is "
+#~ "connected\n"
+#~ "to a terminal (tty).\n"
+#~ msgstr ""
+#~ " -S sorter etter filstørrelse\n"
+#~ " --sort=ORD ctime -c, extension -X, none -U, size -S,\n"
+#~ " status -c, time -t\n"
+#~ " --time=ORD atime -u, access -u, use -u\n"
+#~ " -t sorter på modifiseringstid, med -l: vis\n"
+#~ " modifiseringstid\n"
+#~ " -T, --tabsize=KOLONNER sett tabulatorstørrelse til KOLONNER\n"
+#~ " (8 er forvalgt)\n"
+#~ " -u sorter på tilgangstid, med -l: vis "
+#~ "tilgangstid\n"
+#~ " -U ikke sorter, list filer slik de ligger i "
+#~ "katalogen\n"
+#~ " -v sorter på versjon\n"
+#~ " -w, --width=KOLONNER sett skjermbredde til KOLONNER\n"
+#~ " -x list filer i rader istedet for kolonner\n"
+#~ " -X sorter alfabetisk på fil-ekstensjon\n"
+#~ " -1 list én fil per linje\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "Normalt brukes ikke farge for å skille mellom filtyper. Det er "
+#~ "ekvivalent\n"
+#~ "med å bruke --color=none. Flagget --color uten argumenter er ekvivalent\n"
+#~ "med --color=always. Med --color=auto blir fargekoder skrevet ut kun "
+#~ "dersom\n"
+#~ "standard utkanal er koblet til en terminal (tty).\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Force changed blocks to disk, update the super block.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Update the access and modification times of each FILE to the current "
+#~ "time.\n"
+#~ "\n"
+#~ " -a change only the access time\n"
+#~ " -c, --no-create do not create any files\n"
+#~ " -d, --date=STRING parse STRING and use it instead of current time\n"
+#~ " -f (ignored)\n"
+#~ " -m change only the modification time\n"
+#~ " -r, --reference=FILE use this file's times instead of current time\n"
+#~ " -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current "
+#~ "time\n"
+#~ " --time=WORD set time given by WORD: access atime use (same "
+#~ "as -a)\n"
+#~ " modify mtime (same as -m)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Note that the three time-date formats recognized for the -d and -t "
+#~ "options\n"
+#~ "and for the obsolescent argument are all different.\n"
+#~ msgstr ""
+#~ "Sett tilgangs- og modifiseringstidene for FIL(er) til nåværende\n"
+#~ "klokkeslett.\n"
+#~ "\n"
+#~ " -a endre bare tilgangstiden\n"
+#~ " -c ikke opprett filer\n"
+#~ " -d, --date=STRENG les STRENG og bruk det som nåværende "
+#~ "klokkeslett\n"
+#~ " -f (ignorert)\n"
+#~ " -m endre bare modifiseringstiden\n"
+#~ " -r, --reference=FILE bruk denne filens tider istedet for nåværende\n"
+#~ " klokkeslett\n"
+#~ " -t STAMP bruk MMDDttmm[[HH]ÅÅ][.ss] istedet for "
+#~ "nåværende\n"
+#~ " klokkeslett\n"
+#~ " --time=WORD access -a, atime -a, mtime -m, modify -m, use -"
+#~ "a\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "STAMP kan bli brukt uten -t hvis ingen av -drt eller -- er brukt.\n"
+#~ "Merk at de tre tid-dato-formatene som gjenkjennes for flaggene -d og -t\n"
+#~ "og for det gamle argumentet er alle forskjellige.\n"
+
+#, fuzzy
+#~ msgid "cannot create fifo `%s'"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#~ msgid ""
+#~ "when creating character special files, major and minor device\n"
+#~ "numbers must be specified"
+#~ msgstr ""
+#~ "ved oppretting av tegn spesielle filer, må major og minor enhetsnummer\n"
+#~ "spesifiseres"
+
+#~ msgid "group of %s changed to %s\n"
+#~ msgstr "gruppe til %s endret til %s\n"
+
+#, fuzzy
+#~ msgid "ownership of %s changed to "
+#~ msgstr "eier av %s endret til "
+
+#, fuzzy
+#~ msgid "you are not a member of group %s"
+#~ msgstr "du er ikke medlem av gruppen «%s»"
+
+#, fuzzy
+#~ msgid "cannot make fifo %s"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#, fuzzy
+#~ msgid "cannot change permissions for %s"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#, fuzzy
+#~ msgid "cannot remove old link to %s"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#~ msgid "virtual memory exhausted"
+#~ msgstr "virtuelt minne oppbrukt"
+
+#, fuzzy
+#~ msgid "cannot create directory `%s'"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#, fuzzy
+#~ msgid "cannot remove `%s'"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#, fuzzy
+#~ msgid "specified target, `%s' is not a directory"
+#~ msgstr "«%s» er ikke en katalog"
+
+#~ msgid "`%s' and `%s' are the same file"
+#~ msgstr "«%s» og «%s» er samme fil"
+
+#, fuzzy
+#~ msgid "cannot backup `%s'"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#, fuzzy
+#~ msgid "cannot un-backup `%s'"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#, fuzzy
+#~ msgid "cannot chmod %s"
+#~ msgstr "kan ikke utføre ioctl på «%s»"
+
+#, fuzzy
+#~ msgid "`%s' exists but is not a directory"
+#~ msgstr "«%s» er ikke en katalog"
+
+#, fuzzy
+#~ msgid "create %s %s to %s"
+#~ msgstr "opprette %s %s til %s\n"
+
+#~ msgid "hard link"
+#~ msgstr "hard link"
+
+#~ msgid "link"
+#~ msgstr "link"
+
+#, fuzzy
+#~ msgid "starting directory"
+#~ msgstr "«%s» er ikke en katalog"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ msgstr ""
+#~ "Bruk : %s [FLAGG]... [INN]... (uten -G)\n"
+#~ "eller: %s -G [FLAGG]... [INN [UT]]\n"
+
+#, fuzzy
+#~ msgid "Usage: %s [OPTION]... EXISTING_DIR NEW_DIR\n"
+#~ msgstr "Bruk: %s [FLAGG]... SETT1 [SETT2]\n"
+
+#, fuzzy
+#~ msgid "cannot rename `.' or `..'"
+#~ msgstr "kan ikke bestemme vertsnavnet"
+
+#, fuzzy
+#~ msgid "%s is closed"
+#~ msgstr "standard inn er lukket"
+
+#, fuzzy
+#~ msgid "%s: cannot shred read-only file descriptor"
+#~ msgstr "%s: kan ikke overskrive filkatalog"
+
+#, fuzzy
+#~ msgid "Can't fstat file `%s'"
+#~ msgstr "lager filen «%s»\n"
+
+#, fuzzy
+#~ msgid "sparse type"
+#~ msgstr "type for filer med hull"
+
+#~ msgid "time type"
+#~ msgstr "tidstype"
+
+#~ msgid "format type"
+#~ msgstr "formattype"
+
+#~ msgid "colorization criterion"
+#~ msgstr "fargeleggingskriterie"
+
+#~ msgid "indicator style"
+#~ msgstr "indikatorstil"
+
+#~ msgid "quoting style"
+#~ msgstr "beskyttelsesstil (quoting style)"
+
+#~ msgid "time selector"
+#~ msgstr "tidsvalg"
+
+#~ msgid "days"
+#~ msgstr "dager"
+
+#~ msgid "users"
+#~ msgstr "brukere"
+
+#, fuzzy
+#~ msgid ""
+#~ "Run COMMAND with root directory set to NEWROOT.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+#~ msgstr ""
+#~ "Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "FORMAT controls the output. The only valid option for the second form\n"
+#~ "specifies Coordinated Universal Time. Interpreted sequences are:\n"
+#~ "\n"
+#~ " %%%% a literal %%\n"
+#~ " %%a locale's abbreviated weekday name (Sun..Sat)\n"
+#~ " %%A locale's full weekday name, variable length (Sunday..Saturday)\n"
+#~ " %%b locale's abbreviated month name (Jan..Dec)\n"
+#~ " %%B locale's full month name, variable length (January..December)\n"
+#~ " %%c locale's date and time (Sat Nov 04 12:02:33 EST 1989)\n"
+#~ " %%C century (year divided by 100 and truncated to an integer) [00-"
+#~ "99]\n"
+#~ " %%d day of month (01..31)\n"
+#~ " %%D date (mm/dd/yy)\n"
+#~ " %%e day of month, blank padded ( 1..31)\n"
+#~ " %%h same as %%b\n"
+#~ " %%H hour (00..23)\n"
+#~ " %%I hour (01..12)\n"
+#~ " %%j day of year (001..366)\n"
+#~ " %%k hour ( 0..23)\n"
+#~ " %%l hour ( 1..12)\n"
+#~ " %%m month (01..12)\n"
+#~ " %%M minute (00..59)\n"
+#~ " %%n a newline\n"
+#~ " %%p locale's AM or PM\n"
+#~ " %%r time, 12-hour (hh:mm:ss [AP]M)\n"
+#~ " %%s seconds since `00:00:00 1970-01-01 UTC' (a GNU extension)\n"
+#~ " %%S second (00..60)\n"
+#~ " %%t a horizontal tab\n"
+#~ " %%T time, 24-hour (hh:mm:ss)\n"
+#~ " %%u day of week (1..7); 1 represents Monday\n"
+#~ " %%U week number of year with Sunday as first day of week (00..53)\n"
+#~ " %%V week number of year with Monday as first day of week (01..53)\n"
+#~ " %%w day of week (0..6); 0 represents Sunday\n"
+#~ " %%W week number of year with Monday as first day of week (00..53)\n"
+#~ " %%x locale's date representation (mm/dd/yy)\n"
+#~ " %%X locale's time representation (%%H:%%M:%%S)\n"
+#~ " %%y last two digits of year (00..99)\n"
+#~ " %%Y year (1970...)\n"
+#~ " %%z RFC-822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %%Z time zone (e.g., EDT), or nothing if no time zone is "
+#~ "determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr ""
+#~ "\n"
+#~ "FORMAT kontrollerer utskriften. Det eneste gyldige flagget for den "
+#~ "andre\n"
+#~ "formen spesifiserer «Coordinated Universal Time». Tolkede sekvenser er:\n"
+#~ "\n"
+#~ " %%%% en vanlig %%\n"
+#~ " %%a locale's forkortede ukedagsnavn (søn..lør)\n"
+#~ " %%A locale's fulle ukedagsnavn, variabel lengde (søndag..lørdag)\n"
+#~ " %%b locale's forkortede månedsnavn (jan..des)\n"
+#~ " %%B locale's fulle månedsnavn, variabel lengde (januar..desember)\n"
+#~ " %%c locale's dato og tid (lør nov 04 12:02:33 MET 1989)\n"
+#~ " %%d dag i måneden (01..31)\n"
+#~ " %%D dato (mm/dd/åå)\n"
+#~ " %%e dag i måneden, fylt ut med blanke ( 1..31)\n"
+#~ " %%h samme som %%b\n"
+#~ " %%H time (00..23)\n"
+#~ " %%I time (01..12)\n"
+#~ " %%j dag i året (001..366)\n"
+#~ " %%k time ( 0..23)\n"
+#~ " %%l time ( 1..12)\n"
+#~ " %%m måned (01..12)\n"
+#~ " %%M minutt (00..59)\n"
+#~ " %%n linjeskift\n"
+#~ " %%p locale's AM eller PM\n"
+#~ " %%r tid, 12-timers (tt:mm:ss [AP]M)\n"
+#~ " %%s sekunder siden 00:00:00, jan 1, 1970 (en GNU-utvidelse)\n"
+#~ " %%S sekunder (00..61)\n"
+#~ " %%t en horisontal tab\n"
+#~ " %%T tid, 24-timers (tt:mm:ss)\n"
+#~ " %%U ukenummer med søndag som første dag i uken (00..53)\n"
+#~ " %%V ukenummer med mandag som første dag i uken (01..52)\n"
+#~ " %%w dag i uken (0..6); 0 representerer søndag\n"
+#~ " %%W ukenummer med mandag som første dag i uken (00..53)\n"
+#~ " %%x locale's datorepresentasjon (mm/dd/åå)\n"
+#~ " %%X locale's tidsrepresentasjon (%%T:%%M:%%S)\n"
+#~ " %%y siste 2 siffer av årstallet (00..99)\n"
+#~ " %%Y årstallet (1970...)\n"
+#~ " %%z numerisk tidssone på RFC-822-format (-0500) (en GNU-utvidelse)\n"
+#~ " %%Z tidssone (f.eks, EDT) eller ingenting dersom tidssonen er ukjent\n"
+#~ "\n"
+#~ "Forvalgt er at date fyller numeriske felter med nuller. GNU date "
+#~ "gjenkjenner\n"
+#~ "følgende modifikatorer mellom «%%» og et numerisk direktiv.\n"
+#~ "\n"
+#~ " «-» (bindestrek) ikke fyll ut feltet\n"
+#~ " «_» (understrek) fyll ut feltet med mellomrom\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ " --help display this help and exit (should be alone)\n"
+#~ " --version output version information and exit (should be alone)\n"
+#~ "\n"
+#~ "Without -E, the following sequences are recognized and interpolated:\n"
+#~ "\n"
+#~ " \\NNN the character whose ASCII code is NNN (octal)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a alert (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c suppress trailing newline\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r carriage return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ msgstr ""
+#~ "Gjengi STRENGen(e) til standard ut.\n"
+#~ "\n"
+#~ " -n ikke skriv ut etterfølgende linjeskift\n"
+#~ " -e (ubrukt)\n"
+#~ " -E skru av erstatning av enkelte sekvenser i STRENGer\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis versjonsinformasjon og avslutt\n"
+#~ "\n"
+#~ "Uten -E blir de følgende sekvensene gjenkjent og erstattet:\n"
+#~ "\n"
+#~ " \\NNN tegnet som har ASCII-kode NNN (oktalt)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a «alert», dvs. et pip (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c utelat etterfølgende linjeskift\n"
+#~ " \\f sideskift («form feed»)\n"
+#~ " \\n linjeskift («new line»)\n"
+#~ " \\r vognretur («carriage return»)\n"
+#~ " \\t horisontal tabulator\n"
+#~ " \\v vertikal tabulator\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print the value of EXPRESSION to standard output. A blank line below\n"
+#~ "separates increasing precedence groups. EXPRESSION may be:\n"
+#~ "\n"
+#~ " ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+#~ "\n"
+#~ " ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+#~ "\n"
+#~ " ARG1 < ARG2 ARG1 is less than ARG2\n"
+#~ " ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+#~ " ARG1 = ARG2 ARG1 is equal to ARG2\n"
+#~ " ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+#~ " ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+#~ " ARG1 > ARG2 ARG1 is greater than ARG2\n"
+#~ "\n"
+#~ " ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+#~ " ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+#~ "\n"
+#~ " ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+#~ " ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+#~ " ARG1 %% ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+#~ "\n"
+#~ " STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+#~ "\n"
+#~ " match STRING REGEXP same as STRING : REGEXP\n"
+#~ " substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+#~ " index STRING CHARS index in STRING where any CHARS is found, or "
+#~ "0\n"
+#~ " length STRING length of STRING\n"
+#~ " + TOKEN interpret TOKEN as a string, even if it is "
+#~ "a\n"
+#~ " keyword like `match' or an operator like "
+#~ "`/'\n"
+#~ "\n"
+#~ " ( EXPRESSION ) value of EXPRESSION\n"
+#~ msgstr ""
+#~ "Skriv verdien av UTTRYKKet til standard ut. En blank linje under "
+#~ "skiller\n"
+#~ "grupper av økende presedens. UTTRYKK kan være:\n"
+#~ "\n"
+#~ " ARG1 | ARG2 ARG1 dersom det hverken er null eller 0, ellers ARG2\n"
+#~ "\n"
+#~ " ARG1 & ARG2 ARG1 dersom ingen av argumentene er null eller 0, "
+#~ "ellers 0\n"
+#~ "\n"
+#~ " ARG1 < ARG2 ARG1 er mindre enn ARG2\n"
+#~ " ARG1 <= ARG2 ARG1 er mindre enn eller lik ARG2\n"
+#~ " ARG1 = ARG2 ARG1 er lik ARG2\n"
+#~ " ARG1 != ARG2 ARG1 er ulik ARG2\n"
+#~ " ARG1 >= ARG2 ARG1 er større enn eller lik ARG2\n"
+#~ " ARG1 > ARG2 ARG1 er større enn ARG2\n"
+#~ "\n"
+#~ " ARG1 + ARG2 aritmetisk sum av ARG1 og ARG2\n"
+#~ " ARG1 - ARG2 artimetisk differanse mellom ARG1 og ARG2\n"
+#~ "\n"
+#~ " ARG1 * ARG2 aritmetisk produkt av ARG1 og ARG2\n"
+#~ " ARG1 / ARG2 aritmetisk kvotient av ARG1 delt på ARG2\n"
+#~ " ARG1 %% ARG2 aritmetisk rest av ARG1 delt på ARG2\n"
+#~ "\n"
+#~ " STRENG : REGEXP forankret uttrykkssøk etter REGEXP i STRENG\n"
+#~ "\n"
+#~ " match STRENG REGEXP samme som STRENG : REGEXP\n"
+#~ " substr STRENG POS LENGDE substreng av STRENG, POS telt fra 1\n"
+#~ " index STRENG TEGN indeks i STRENG hvor evt. TEGN er funnet "
+#~ "eller 0\n"
+#~ " length STRENG lengde av STRENG\n"
+#~ "\n"
+#~ " ( UTTRYKK ) verdi av UTTRYKK\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print ARGUMENT(s) according to FORMAT.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+#~ "\n"
+#~ " \\\" double quote\n"
+#~ " \\0NNN character with octal value NNN (0 to 3 digits)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a alert (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c produce no further output\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r carriage return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ " \\xNNN byte with hexadecimal value NNN (1 to 3 digits)\n"
+#~ "\n"
+#~ " \\uNNNN character with hexadecimal value NNNN (4 digits)\n"
+#~ " \\UNNNNNNNN character with hexadecimal value NNNNNNNN (8 digits)\n"
+#~ " %%%% a single %%\n"
+#~ " %%b ARGUMENT as a string with `\\' escapes interpreted\n"
+#~ "\n"
+#~ "and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+#~ "ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+#~ msgstr ""
+#~ "Skriv ut ARGUMENT(er) i henhold til FORMAT.\n"
+#~ "\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis versjonsinformasjon og avslutt\n"
+#~ "\n"
+#~ "FORMAT kontrollerer utskriften som i C sin printf. Tolkede sekvenser "
+#~ "er:\n"
+#~ "\n"
+#~ " \\\" gåseøyne\n"
+#~ " \\0NNN tegn med oktal verdi NNN (0 til 3 siffer)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a «alert», dvs. et pip (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c ikke produser mer utskrift\n"
+#~ " \\f sideskift («form feed»)\n"
+#~ " \\n linjeskift («new line»)\n"
+#~ " \\r vognretur («carriage return»)\n"
+#~ " \\t horisontal tabulator\n"
+#~ " \\v vertikal tabulator\n"
+#~ " \\xNNN tegn med heksadesimal verdi NNN (1 til 3 siffer)\n"
+#~ "\n"
+#~ " %%%% en enkel %%\n"
+#~ " %%b ARGUMENT som en streng med «\\»-beskyttelser fortolket\n"
+#~ "\n"
+#~ "og alle C-format-spesifikasjoner som ender med en av diouxXfeEgGcs, med\n"
+#~ "ARGUMENTer konvertert til passende type først. Variable bredder "
+#~ "håndteres.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print the full filename of the current working directory.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Special characters:\n"
+#~ " * dsusp CHAR CHAR will send a terminal stop signal once input "
+#~ "flushed\n"
+#~ " eof CHAR CHAR will send an end of file (terminate the input)\n"
+#~ " eol CHAR CHAR will end the line\n"
+#~ " * eol2 CHAR alternate CHAR for ending the line\n"
+#~ " erase CHAR CHAR will erase the last character typed\n"
+#~ " intr CHAR CHAR will send an interrupt signal\n"
+#~ " kill CHAR CHAR will erase the current line\n"
+#~ " * lnext CHAR CHAR will enter the next character quoted\n"
+#~ " quit CHAR CHAR will send a quit signal\n"
+#~ " * rprnt CHAR CHAR will redraw the current line\n"
+#~ " start CHAR CHAR will restart the output after stopping it\n"
+#~ " stop CHAR CHAR will stop the output\n"
+#~ " susp CHAR CHAR will send a terminal stop signal\n"
+#~ " * swtch CHAR CHAR will switch to a different shell layer\n"
+#~ " * werase CHAR CHAR will erase the last word typed\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Spesielle tegn:\n"
+#~ "* dsusp TEGN TEGN vil sende et «terminal stop»-signal når input "
+#~ "tømmes\n"
+#~ " eof TEGN TEGN vil sende en «end of file» (avslutt input)\n"
+#~ " eol TEGN TEGN vil avslutte linjen\n"
+#~ "* eol2 TEGN alternativt TEGN for å avslutte linjen\n"
+#~ " erase TEGN TEGN vil slette siste skrevne tegn\n"
+#~ " intr TEGN TEGN vil sende et interrupt-signal\n"
+#~ " kill TEGN TEGN vil slette nåværende linje\n"
+#~ "* lnext TEGN TEGN vil skrive neste tegn sitert («quoted»)\n"
+#~ " quit TEGN TEGN vil sende et quit-signal\n"
+#~ "* rprnt TEGN TEGN vil tegne nåværende linje på nytt\n"
+#~ " start TEGN TEGN vil starte opp utskrift etter å ha stoppet det\n"
+#~ " stop TEGN TEGN vil stoppe utskriften\n"
+#~ " susp TEGN TEGN vil sende et «terminal stop»-signal\n"
+#~ "* swtch TEGN TEGN vil skifte til et annet shell-lag\n"
+#~ "* werase TEGN TEGN vil slette det sist skrevne ordet\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Special settings:\n"
+#~ " N set the input and output speeds to N bauds\n"
+#~ " * cols N tell the kernel that the terminal has N columns\n"
+#~ " * columns N same as cols N\n"
+#~ " ispeed N set the input speed to N\n"
+#~ " * line N use line discipline N\n"
+#~ " min N with -icanon, set N characters minimum for a completed "
+#~ "read\n"
+#~ " ospeed N set the output speed to N\n"
+#~ " * rows N tell the kernel that the terminal has N rows\n"
+#~ " * size print the number of rows and columns according to the "
+#~ "kernel\n"
+#~ " speed print the terminal speed\n"
+#~ " time N with -icanon, set read timeout of N tenths of a second\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Spesielle innstillinger:\n"
+#~ " N sett lese- og skrivehastiget til N bps\n"
+#~ "* cols N fortell kjernen at terminalen har N kolonner\n"
+#~ "* columns N samme som cols\n"
+#~ " ispeed N sett lesehastigeten til N\n"
+#~ "* line N bruk linjedisiplin N\n"
+#~ " min N med -icanon, sett N tegn minimum for en komplett lesning\n"
+#~ " ospeed N sett skrivehastigheten til N\n"
+#~ "* rows N fortell kjernen at terminalen har N rader/linjer\n"
+#~ "* size skriv ut antall rader og kolonner ifølge kjernen\n"
+#~ " speed skriv ut terminalhastigeten\n"
+#~ " time N med -iconon, sett lese-timeout til N tidels sekunder\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Input settings:\n"
+#~ " [-]brkint breaks cause an interrupt signal\n"
+#~ " [-]icrnl translate carriage return to newline\n"
+#~ " [-]ignbrk ignore break characters\n"
+#~ " [-]igncr ignore carriage return\n"
+#~ " [-]ignpar ignore characters with parity errors\n"
+#~ " * [-]imaxbel beep and do not flush a full input buffer on a "
+#~ "character\n"
+#~ " [-]inlcr translate newline to carriage return\n"
+#~ " [-]inpck enable input parity checking\n"
+#~ " [-]istrip clear high (8th) bit of input characters\n"
+#~ " * [-]iuclc translate uppercase characters to lowercase\n"
+#~ " * [-]ixany let any character restart output, not only start "
+#~ "character\n"
+#~ " [-]ixoff enable sending of start/stop characters\n"
+#~ " [-]ixon enable XON/XOFF flow control\n"
+#~ " [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+#~ " [-]tandem same as [-]ixoff\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Innstillinger for inndata:\n"
+#~ " [-]brkint sett avbryt («break») til å forårsake et avbruddssignal\n"
+#~ " [-]icrnl oversett vognretur til linjeskift\n"
+#~ " [-]ignbrk ignorer «break»-tegn\n"
+#~ " [-]igncr ignorer vognretur\n"
+#~ " [-]ignpar ignorer tegn med paritetsfeil\n"
+#~ "* [-]imaxbel pip og ikke tøm et fullt inn-buffer ved et tegn\n"
+#~ " [-]inlcr oversett linjeskift til vognretur\n"
+#~ " [-]inpck slå på paritetsjekking på inndata\n"
+#~ " [-]istrip blank øverste (8.) bit på inndata\n"
+#~ "* [-]iuclc oversett store bokstaver til små\n"
+#~ "* [-]ixany la alle tegn omstarte utdata, ikke bare start-tegnet\n"
+#~ " [-]ixoff slå på sending av start/stop-tegn\n"
+#~ " [-]ixon slå på XON/XOFF flytkontroll\n"
+#~ " [-]parmrk marker paritetsfeil (med en 255-0-tegns sekvens)\n"
+#~ " [-]tandem samme som [-]ixoff\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Local settings:\n"
+#~ " [-]crterase echo erase characters as backspace-space-backspace\n"
+#~ " * crtkill kill all line by obeying the echoprt and echoe settings\n"
+#~ " * -crtkill kill all line by obeying the echoctl and echok settings\n"
+#~ " * [-]ctlecho echo control characters in hat notation (`^c')\n"
+#~ " [-]echo echo input characters\n"
+#~ " * [-]echoctl same as [-]ctlecho\n"
+#~ " [-]echoe same as [-]crterase\n"
+#~ " [-]echok echo a newline after a kill character\n"
+#~ " * [-]echoke same as [-]crtkill\n"
+#~ " [-]echonl echo newline even if not echoing other characters\n"
+#~ " * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+#~ " [-]icanon enable erase, kill, werase, and rprnt special "
+#~ "characters\n"
+#~ " [-]iexten enable non-POSIX special characters\n"
+#~ " [-]isig enable interrupt, quit, and suspend special characters\n"
+#~ " [-]noflsh disable flushing after interrupt and quit special "
+#~ "characters\n"
+#~ " * [-]prterase same as [-]echoprt\n"
+#~ " * [-]tostop stop background jobs that try to write to the terminal\n"
+#~ " * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Lokale innstillinger:\n"
+#~ " [-]crterase gjengi slettetegn som backspace-space-backspace\n"
+#~ "* crtkill slett hele linjen ved å overholde echoprt- og echoe-\n"
+#~ " innstillingene\n"
+#~ "* -crtkill slett hele linjen ved å overholde echoctl- og echok-\n"
+#~ " innstillingene\n"
+#~ "* [-]ctlecho gjengi kontrolltegn i hattnotasjon («^c»)\n"
+#~ " [-]echo gjengi input-tegn\n"
+#~ "* [-]echoctl samme som [-]ctlecho\n"
+#~ " [-]echoe samme som [-]crterase\n"
+#~ " [-]echok gjengi et linjeskift etter et kill-tegn\n"
+#~ "* [-]echoke samme som [-]crtkill\n"
+#~ " [-]echonl gjengi linjeskift selv om andre tegn ikke gjengis\n"
+#~ "* [-]echoprt gjengi slettede tegn baklengs mellom «\\» og «/»\n"
+#~ " [-]icanon slå på erase-, kill-, werase- og rprnt-spesielle tegn\n"
+#~ " [-]iexten slå på spesielle tegn utenfor POSIX \n"
+#~ " [-]isig slå på avbrudds-, quit- og suspend-spesielle tegn\n"
+#~ " [-]noflsh slå av tømming (flushing) etter avbrudds- og quit-"
+#~ "spesialtegn\n"
+#~ "* [-]prterase samme som [-]echoprt\n"
+#~ "* [-]tostop stopp bakgrunnsjobber som prøver å skrive til terminalen\n"
+#~ "* [-]xcase med icanon, beskytt med «\\» for store bokstaver\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Combination settings:\n"
+#~ " * [-]LCASE same as [-]lcase\n"
+#~ " cbreak same as -icanon\n"
+#~ " -cbreak same as icanon\n"
+#~ " cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+#~ " icanon, eof and eol characters to their default values\n"
+#~ " -cooked same as raw\n"
+#~ " crt same as echoe echoctl echoke\n"
+#~ " dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+#~ " kill ^u\n"
+#~ " * [-]decctlq same as [-]ixany\n"
+#~ " ek erase and kill characters to their default values\n"
+#~ " evenp same as parenb -parodd cs7\n"
+#~ " -evenp same as -parenb cs8\n"
+#~ " * [-]lcase same as xcase iuclc olcuc\n"
+#~ " litout same as -parenb -istrip -opost cs8\n"
+#~ " -litout same as parenb istrip opost cs7\n"
+#~ " nl same as -icrnl -onlcr\n"
+#~ " -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+#~ " oddp same as parenb parodd cs7\n"
+#~ " -oddp same as -parenb cs8\n"
+#~ " [-]parity same as [-]evenp\n"
+#~ " pass8 same as -parenb -istrip cs8\n"
+#~ " -pass8 same as parenb istrip cs7\n"
+#~ " raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+#~ " -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+#~ " -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+#~ " -raw same as cooked\n"
+#~ " sane same as cread -ignbrk brkint -inlcr -igncr icrnl\n"
+#~ " -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+#~ " -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+#~ " isig icanon iexten echo echoe echok -echonl -noflsh\n"
+#~ " -xcase -tostop -echoprt echoctl echoke, all special\n"
+#~ " characters to their default values.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Kombinasjonsinnstillinger:\n"
+#~ "* [-]LCASE samme som [-]lcase\n"
+#~ " cbreak samme som -icanon\n"
+#~ " -cbreak samme som icanon\n"
+#~ " cooked samme som å sette brkint ignpar istrip icrnl ixon opost "
+#~ "isig\n"
+#~ " icanon, eof og eol til deres forvalgte verdier\n"
+#~ " -cooked samme som raw\n"
+#~ " crt samme som echoe echoctl echoke\n"
+#~ " dec samme som echoe echoctl echoke -ixany intr ^c erase 0177\n"
+#~ " kill ^u\n"
+#~ "* [-]decctlq samme som [-]ixany\n"
+#~ " ek erase- og kill-tegn til deres forvalgte verdier\n"
+#~ " evenp samme som parenb -parodd cs7\n"
+#~ " -evenp samme som -parenb cs8\n"
+#~ "* [-]lcase samme som xcase iuclc olcuc\n"
+#~ " litout samme som -parenb -istrip -opost cs8\n"
+#~ " -litout samme som parenb istrip opost cs7\n"
+#~ " nl samme som -icrnl -onlcr\n"
+#~ " -nl samme som icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+#~ " oddp samme som parenb parodd cs7\n"
+#~ " -oddp samme som -parenb cs8\n"
+#~ " [-]parity samme som [-]evenp\n"
+#~ " pass8 samme som -parenb -istrip cs8\n"
+#~ " -pass8 samme som parenb istrip cs7\n"
+#~ " raw samme som -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+#~ " -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+#~ " -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+#~ " -raw samme som cooked\n"
+#~ " sane samme som cread -ignbrk brkint -inlcr -igncr icrnl\n"
+#~ " -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+#~ " -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+#~ " isig icanon iexten echo echoe echok -echonl -noflsh\n"
+#~ " -xcase -tostop -echoprt echoctl echoke, alle spesial-\n"
+#~ " tegn til deres forvalgte verdier.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode "
+#~ "numbers\n"
+#~ " FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+#~ " FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+#~ "\n"
+#~ " -b FILE FILE exists and is block special\n"
+#~ " -c FILE FILE exists and is character special\n"
+#~ " -d FILE FILE exists and is a directory\n"
+#~ " -e FILE FILE exists\n"
+#~ " -f FILE FILE exists and is a regular file\n"
+#~ " -g FILE FILE exists and is set-group-ID\n"
+#~ " -h FILE FILE exists and is a symbolic link (same as -L)\n"
+#~ " -G FILE FILE exists and is owned by the effective group ID\n"
+#~ " -k FILE FILE exists and has its sticky bit set\n"
+#~ " -L FILE FILE exists and is a symbolic link (same as -h)\n"
+#~ " -O FILE FILE exists and is owned by the effective user ID\n"
+#~ " -p FILE FILE exists and is a named pipe\n"
+#~ " -r FILE FILE exists and is readable\n"
+#~ " -s FILE FILE exists and has a size greater than zero\n"
+#~ " -S FILE FILE exists and is a socket\n"
+#~ " -t [FD] file descriptor FD (stdout by default) is opened on a "
+#~ "terminal\n"
+#~ " -u FILE FILE exists and its set-user-ID bit is set\n"
+#~ " -w FILE FILE exists and is writable\n"
+#~ " -x FILE FILE exists and is executable\n"
+#~ msgstr ""
+#~ "\n"
+#~ " FIL1 -ef FIL2 FIL1 og FIL2 har samme enhet og inodenummer\n"
+#~ " FIL1 -nt FIL2 FIL1 er nyere (endringsdato) enn FIL2\n"
+#~ " FIL1 -ot FIL2 FIL1 er eldre enn FIL2\n"
+#~ "\n"
+#~ " -b FIL FIL eksisterer og er en blokkenhet\n"
+#~ " -c FIL FIL eksisterer og er en tegn-enhet\n"
+#~ " -d FIL FIL eksisterer og er en filkatalog\n"
+#~ " -e FIL FIL eksisterer\n"
+#~ " -f FIL FIL eksisterer og er en vanlig fil\n"
+#~ " -g FIL FIL eksisterer og er «set-group-ID»\n"
+#~ " -G FIL FIL eksisterer og er eid av den effektive gruppe-IDen\n"
+#~ " -k FIL FIL eksisterer og har sin «sticky bit» satt\n"
+#~ " -L FIL FIL eksisterer og er en symbolsk lenke\n"
+#~ " -O FIL FIL eksisterer og er eid av den effektive bruker-ID\n"
+#~ " -p FIL FIL eksisterer og er en «named pipe»\n"
+#~ " -r FIL FIL eksisterer og er lesbar\n"
+#~ " -s FIL FIL eksisterer og har en størrelse større enn null\n"
+#~ " -S FIL FIL eksisterer og er en socket\n"
+#~ " -t [FD] fil-deskriptor FD (stdout er forvalgt) er åpnet på en "
+#~ "terminal\n"
+#~ " -u FIL FIL eksisterer og dens «set-user-ID»-bit er satt\n"
+#~ " -w FIL FIL eksisterer og er skrivbar\n"
+#~ " -x FIL FIL eksisterer og er kjørbar\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " -a, --all same as -b -d --login -p -r -t -T -u\n"
+#~ " -b, --boot time of last system boot\n"
+#~ " -d, --dead print dead processes\n"
+#~ " -H, --heading print line of column headings\n"
+#~ " -i, --idle add idle time as HOURS:MINUTES, . or old\n"
+#~ " (deprecated, use -u)\n"
+#~ " --login print system login processes\n"
+#~ " (equivalent to SUS -l)\n"
+#~ " -l, --lookup attempt to canonicalize hostnames via DNS\n"
+#~ " (-l is deprecated, use --lookup)\n"
+#~ " -m only hostname and user associated with stdin\n"
+#~ " -p, --process print active processes spawned by init\n"
+#~ " -q, --count all login names and number of users logged on\n"
+#~ " -r, --runlevel print current runlevel\n"
+#~ " -s, --short print only name, line, and time (default)\n"
+#~ " -t, --time print last system clock change\n"
+#~ " -T, -w, --mesg add user's message status as +, - or ?\n"
+#~ " -u, --users lists users logged in\n"
+#~ " --message same as -T\n"
+#~ " --writable same as -T\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "If FILE is not specified, use %s. %s as FILE is common.\n"
+#~ "If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -H, --heading skriv ut en linje med kolonneoverskrifter\n"
+#~ " -i, -u, --idle legg til brukers borte-tid som TIMER:MINUTTER, . "
+#~ "eller\n"
+#~ " gammel\n"
+#~ " -m, bare vertsnavn og bruker assosiert med standard inn\n"
+#~ " -q, --count alle brukernavn og antall brukere pålogget\n"
+#~ " -s (ignorert)\n"
+#~ " -T, -w, --mesg legg til brukers meldingsstatus som +, - eller ?\n"
+#~ " --message samme som -T\n"
+#~ " --writeable samme som -T\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis versjonsinformasjon og avslutt\n"
+#~ "\n"
+#~ "Hvis FIL ikke er spesifisert, bruk %s. %s som FIL er vanlig.\n"
+#~ "Hvis ARG1 ARG2 er oppgitt antas -m: «am i» eller «mom likes» er vanlig.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Repeatedly output a line with all specified STRING(s), or `y'.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#~ msgid "cannot get processor type"
+#~ msgstr "kan ikke finne ut prosessortypen"
+
+#~ msgid "USER"
+#~ msgstr "BRUKER"
+
+#~ msgid "MESG "
+#~ msgstr "MELD "
+
+#~ msgid "LOGIN-TIME "
+#~ msgstr "LOGIN-TID "
+
+#~ msgid "FROM\n"
+#~ msgstr "FRA\n"
+
+#~ msgid "<undef>"
+#~ msgstr "<undef>"
+
+#, fuzzy
+#~ msgid "Usage: %s [-v]\n"
+#~ msgstr "Bruk: %s [FLAGG]\n"
+
+#, fuzzy
+#~ msgid "Usage: %s [OPTION]... [VARIABLE]...\n"
+#~ msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#, fuzzy
+#~ msgid "Usage: %s [OPTION]... NUMBER[SUFFIX]\n"
+#~ msgstr "Bruk: %s [FLAGG]... [FIL]...\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "(obsolete) If -VALUE is used as first OPTION, same as -c VALUE when one "
+#~ "of\n"
+#~ "multipliers bkm follows concatenated, else same as -n VALUE.\n"
+#~ msgstr ""
+#~ "Skriv de første 10 linjene av hver FIL til standard ut.\n"
+#~ "Med mer enn en FIL er angitt, skriv ut filnavnet før hver FIL.\n"
+#~ "Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+#~ "inn.\n"
+#~ "\n"
+#~ " -c, --bytes=STØRRELSE skriv ut første STØRRELSE bytes\n"
+#~ " -n, --lines=ANTALL skriv ut første ANTALL tegn istedet for 10\n"
+#~ " -q, --quiet, --silent ikke skriv ut filnavnene først\n"
+#~ " -v, --verbose skriv alltid filnavnene først\n"
+#~ " --help vis denne hjelpteksten, og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "STØRRELSE kan ha en multiplikator-endelse: b for 512, k for 1K, m for "
+#~ "1Meg.\n"
+#~ "Hvis -VERDI brukes som første FLAGG, leses det som -c VERDI hvis en av\n"
+#~ "multiplikatorene bkm er bakerst, ellers leses -n VERDI.\n"
+
+#, fuzzy
+#~ msgid "warning: `od -w' is obsolete; use `od --width'"
+#~ msgstr "advarsel: ugyldig bredde %lu; bruker %d istedet"
+
+#, fuzzy
+#~ msgid "warning: `pr -S' is obsolete; use `pr --sep-string'"
+#~ msgstr "advarsel: ugyldig bredde %lu; bruker %d istedet"
+
+#, fuzzy
+#~ msgid ""
+#~ " +POS1 [-POS2] start a key at POS1, end it before POS2 "
+#~ "(origin 0)\n"
+#~ " Warning: this option is obsolete\n"
+#~ msgstr ""
+#~ "Sammenlign de sorterte filene VENSTRE_FIL og HØYRE_FIL linje for linje.\n"
+#~ "\n"
+#~ " -1 se bort fra linjer som bare finnes i den venstre filen\n"
+#~ " -2 se bort fra linjer som bare finnes i den høyre filen\n"
+#~ " -3 se bort fra linjer som finnes i begge filer\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid "warning: `sort -y' is obsolete; omit `-y'"
+#~ msgstr "advarsel: ugyldig bredde %lu; bruker %d istedet"
+
+#, fuzzy
+#~ msgid "warning: `tail %s' is obsolete; use -n or -c instead"
+#~ msgstr "advarsel: ugyldig bredde %lu; bruker %d istedet"
+
+#, fuzzy
+#~ msgid "warning: `uniq %s' is obsolete; use `uniq -s %s' instead"
+#~ msgstr "advarsel: ugyldig bredde %lu; bruker %d istedet"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vis CRC-sjekksummer og byteantall for hver FIL.\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Convert tabs in each FILE to spaces, writing to standard output.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -i, --initial do not convert TABs after non whitespace\n"
+#~ " -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+#~ msgstr ""
+#~ "Konverter tabulatorer i hver FIL til mellomrom, skriv til standard ut.\n"
+#~ "Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+#~ "inn.\n"
+#~ "\n"
+#~ " -i, --initial ikke konverter tabulatorer etter ikke-blanke tegn\n"
+#~ " -t, --tabs=TALL ha tabulatorer TALL tegn fra hverandre, ikke 8\n"
+#~ " -t, --tabs=LISTE bruk komma-separert LISTE med tab-posisjoner\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "Istedet for -t TALL eller -t LISTE kan -TALL eller -LISTE brukes.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Instead of -t NUMBER or -t LIST, -NUMBER or -LIST may be used.\n"
+#~ msgstr ""
+#~ "Konverter tabulatorer i hver FIL til mellomrom, skriv til standard ut.\n"
+#~ "Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+#~ "inn.\n"
+#~ "\n"
+#~ " -i, --initial ikke konverter tabulatorer etter ikke-blanke tegn\n"
+#~ " -t, --tabs=TALL ha tabulatorer TALL tegn fra hverandre, ikke 8\n"
+#~ " -t, --tabs=LISTE bruk komma-separert LISTE med tab-posisjoner\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "Istedet for -t TALL eller -t LISTE kan -TALL eller -LISTE brukes.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Wrap input lines in each FILE (standard input by default), writing to\n"
+#~ "standard output.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --bytes count bytes rather than columns\n"
+#~ " -s, --spaces break at spaces\n"
+#~ " -w, --width=WIDTH use WIDTH columns instead of 80\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Brekk om linjene i hver FIL (standard inn), skriv til standard ut\n"
+#~ "\n"
+#~ " -b, --bytes tell bytes istedet for kolonner\n"
+#~ " -s, --spaces brekk om ved mellomrom\n"
+#~ " -w, --width=BREDDE bruk BREDDE kolonner istedet for 80\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis versjonsinformasjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Write lines consisting of the sequentially corresponding lines from\n"
+#~ "each FILE, separated by TABs, to standard output.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+#~ " -s, --serial paste one file at a time instead of in "
+#~ "parallel\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Skriv linjer som består av de sekvensielt tilsvarende linjene fra hver\n"
+#~ "FIL separert med tabulatorer til standard ut.\n"
+#~ "Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+#~ "inn.\n"
+#~ "\n"
+#~ " -d, --delimiters=LISTE bruk tegn fra LISTE istedet for tabulatorer\n"
+#~ " -s, --serial ta en fil om gangen i steder for i parallell\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -NUMBER same as -l NUMBER\n"
+#~ " --verbose print a diagnostic to standard error just\n"
+#~ " before each output file is opened\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+#~ msgstr ""
+#~ "Skriv stykker av fast størrelse av INPUT til PREFIKSaa, PREFIKSab, ...;\n"
+#~ "Forvalgt PREFIKS er `x'. Dersom ingen INPUT er spesifisert, eller INPUT "
+#~ "er -,\n"
+#~ "leses det fra standard inn.\n"
+#~ "\n"
+#~ " -ANTALL samme som -l ANTALL\n"
+#~ " -b, --bytes=STØRRELSE skriv STØRRELSE bytes i hver utfil\n"
+#~ " -C, --line-bytes=STØRRELSE skriv maksimum STØRRELSE bytes med linjer "
+#~ "per\n"
+#~ " utfil\n"
+#~ " -l, --lines=ANTALL skriv ANTALL linjer i hver utfil\n"
+#~ " --verbose skriv en diagnostikk til standard error "
+#~ "rett\n"
+#~ " før hver utfil åpnes\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "STØRRELSE kan ha en multiplikatorendelse: b for 512, k for 1K eller\n"
+#~ " m for 1 Meg.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Write each FILE to standard output, last line first.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --before attach the separator before instead of after\n"
+#~ msgstr ""
+#~ "Skriv hver FIL til standard ut, siste linje først.\n"
+#~ "Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+#~ "inn.\n"
+#~ "\n"
+#~ " -b, --before føy til separator før istedet for etter\n"
+#~ " -r, --regex tolk separatoren som et regulært uttrykk\n"
+#~ " -s, --separator=STRENG bruk STRENG som separator istedet for "
+#~ "linjeskift\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print the last %d lines of each FILE to standard output.\n"
+#~ "With more than one FILE, precede each with a header giving the file "
+#~ "name.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " --retry keep trying to open a file even if it is\n"
+#~ " inaccessible when tail starts or if it "
+#~ "becomes\n"
+#~ " inaccessible later -- useful only with -f\n"
+#~ msgstr ""
+#~ "Skriv de første 10 linjene av hver FIL til standard ut.\n"
+#~ "Med mer enn en FIL er angitt, skriv ut filnavnet før hver FIL.\n"
+#~ "Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+#~ "inn.\n"
+#~ "\n"
+#~ " -c, --bytes=STØRRELSE skriv ut første STØRRELSE bytes\n"
+#~ " -n, --lines=ANTALL skriv ut første ANTALL tegn istedet for 10\n"
+#~ " -q, --quiet, --silent ikke skriv ut filnavnene først\n"
+#~ " -v, --verbose skriv alltid filnavnene først\n"
+#~ " --help vis denne hjelpteksten, og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "STØRRELSE kan ha en multiplikator-endelse: b for 512, k for 1K, m for "
+#~ "1Meg.\n"
+#~ "Hvis -VERDI brukes som første FLAGG, leses det som -c VERDI hvis en av\n"
+#~ "multiplikatorene bkm er bakerst, ellers leses -n VERDI.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -t, --tabs=NUMBER have tabs NUMBER characters apart instead of 8\n"
+#~ " -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Instead of -t NUMBER or -t LIST, -NUMBER or -LIST may be used.\n"
+#~ msgstr ""
+#~ "Konverter mellomrom i hver FIL til tabulatorer, skriv ut til standard "
+#~ "ut.\n"
+#~ "Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+#~ "inn.\n"
+#~ "\n"
+#~ " -a, --all konverter alle blanke tegn, istedet for bare "
+#~ "innledende\n"
+#~ " -t, --tabs=ANTALL ha tabulatorer ANTALL tegn fra hverandre istedet "
+#~ "for 8\n"
+#~ " -t, --tabs=LISTE bruk komma-separert LISTE med tabulatorposisjoner.\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "Istedet for -t ANTALL eller -t LISTE, kan -ANTALL eller -LISTE brukes\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Output pieces of FILE separated by PATTERN(s) to files `xx01', "
+#~ "`xx02', ...,\n"
+#~ "and output byte counts of each piece to standard output.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --suffix-format=FORMAT use sprintf FORMAT instead of %%d\n"
+#~ " -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+#~ " -k, --keep-files do not remove output files on errors\n"
+#~ " -n, --digits=DIGITS use specified number of digits instead of 2\n"
+#~ " -s, --quiet, --silent do not print counts of output file sizes\n"
+#~ " -z, --elide-empty-files remove empty output files\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Read standard input if FILE is -. Each PATTERN may be:\n"
+#~ "\n"
+#~ " INTEGER copy up to but not including specified line number\n"
+#~ " /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+#~ " %%REGEXP%%[OFFSET] skip to, but not including a matching line\n"
+#~ " {INTEGER} repeat the previous pattern specified number of "
+#~ "times\n"
+#~ " {*} repeat the previous pattern as many times as "
+#~ "possible\n"
+#~ "\n"
+#~ "A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+#~ msgstr ""
+#~ "Skriv ut deler av FIL separert av MØNSTER til filene «xx01», «xx02»,...,\n"
+#~ "og vis antall bytes for hver del på standard ut.\n"
+#~ "\n"
+#~ " -b, --suffix-format=FORMAT bruk sprintf-FORMAT istedet for %%d\n"
+#~ " -f, --prefix=PREFIKS bruk PREFIKS istedet for «xx»\n"
+#~ " -k, --keep-files ikke fjern utfiler ved feil\n"
+#~ " -n, --digits=SIFFER bruk angitt antall siffer istedet for 2\n"
+#~ " -s, --quiet, --silent ikke vis størrelsen på utfilene\n"
+#~ " -z, --elide-empty-files fjern tomme utfiler\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "Les standard inn når FIL er «-». Hvert MØNSTER kan være:\n"
+#~ "\n"
+#~ " HELTALL kopier fram til, men ikke med, spesifisert "
+#~ "linjenummer\n"
+#~ " /REGEXP/[POSISJON] kopier fram til, men ikke med, en «passende» linje\n"
+#~ " %%REGEXP%%[POSISJON] hopp fram til, men ikke med, en «passende» linje\n"
+#~ " {HELTALL} gjenta forrige mønster så mange ganger som "
+#~ "spesifisert\n"
+#~ " {*} gjenta forrige mønster så mange ganger som mulig\n"
+#~ "\n"
+#~ "En linje-POSISJON må være «+» eller «-» fulgt av et positivt heltall\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print selected parts of lines from each FILE to standard output.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --bytes=LIST output only these bytes\n"
+#~ " -c, --characters=LIST output only these characters\n"
+#~ " -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+#~ " -f, --fields=LIST output only these fields; also print any line\n"
+#~ " that contains no delimiter character, unless\n"
+#~ " the -s option is specified\n"
+#~ " -n (ignored)\n"
+#~ " -s, --only-delimited do not print lines not containing delimiters\n"
+#~ " --output-delimiter=STRING use STRING as the output delimiter\n"
+#~ " the default is to use the input delimiter\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+#~ "range, or many ranges separated by commas. Each range is one of:\n"
+#~ "\n"
+#~ " N N'th byte, character or field, counted from 1\n"
+#~ " N- from N'th byte, character or field, to end of line\n"
+#~ " N-M from N'th to M'th (included) byte, character or field\n"
+#~ " -M from first to M'th (included) byte, character or field\n"
+#~ "\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ msgstr ""
+#~ "Skriv ut valgte deler av linjene fra hver FIL til standard ut.\n"
+#~ "\n"
+#~ " -b, --bytes=LISTE skriv bare ut disse byte'ene\n"
+#~ " -c, --characters=LISTE skriv bare ut disse tegnene\n"
+#~ " -d, --delimiter=SKILLE bruk SKILLE istedet for TAB som skilletegn\n"
+#~ " -f, --fields=LISTE skriv bare ut disse feltene\n"
+#~ " -n (ignorert)\n"
+#~ " -s, --only-delimited ikke skriv ut linjer som ikke inneholder "
+#~ "skilletegn\n"
+#~ " --output-delimiter=STRENG bruk STRENG som forvalgt ut-skilletegn.\n"
+#~ " forvalgt er å bruke inn-skilletegnet\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "Bruk én, og bare én av -b, -c og -f. Hver LISTE er laget av en\n"
+#~ "«serie», eller mange serier separert av komma. Hver serie er en av:\n"
+#~ "\n"
+#~ " N N'te byte, tegn eller felt, telt fra 1\n"
+#~ " N- fra N'te byte, tegn eller felt, til slutten av linjen\n"
+#~ " N-M fra N'te til M'te (til og med) byte, tegn eller felt\n"
+#~ " -M fra første til M'te (til og med) byte, tegn eller felt\n"
+#~ "\n"
+#~ "Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+#~ "inn.\n"
+
+#~ msgid ""
+#~ "For each pair of input lines with identical join fields, write a line to\n"
+#~ "standard output. The default join field is the first, delimited\n"
+#~ "by whitespace. When FILE1 or FILE2 (not both) is -, read standard "
+#~ "input.\n"
+#~ "\n"
+#~ " -a SIDE print unpairable lines coming from file SIDE\n"
+#~ " -e EMPTY replace missing input fields with EMPTY\n"
+#~ " -i, --ignore-case ignore differences in case when comparing fields\n"
+#~ " -j FIELD (obsolescent) equivalent to `-1 FIELD -2 FIELD'\n"
+#~ " -j1 FIELD (obsolescent) equivalent to `-1 FIELD'\n"
+#~ " -j2 FIELD (obsolescent) equivalent to `-2 FIELD'\n"
+#~ " -o FORMAT obey FORMAT while constructing output line\n"
+#~ " -t CHAR use CHAR as input and output field separator\n"
+#~ " -v SIDE like -a SIDE, but suppress joined output lines\n"
+#~ " -1 FIELD join on this FIELD of file 1\n"
+#~ " -2 FIELD join on this FIELD of file 2\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+#~ "else fields are separated by CHAR. Any FIELD is a field number counted\n"
+#~ "from 1. FORMAT is one or more comma or blank separated specifications,\n"
+#~ "each being `SIDE.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+#~ "the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+#~ "separated by CHAR.\n"
+#~ msgstr ""
+#~ "For hvert par av inn-linjer med like sammenføyningsfelt, skriv en linje "
+#~ "til\n"
+#~ "standard ut. Det forvalgte sammenføyningsfeltet er det første\n"
+#~ "feltet, begrenset av «blanke» tegn. Dersom FIL1 eller FIL2 (ikke begge)\n"
+#~ "er -, leses det fra standard inn.\n"
+#~ "\n"
+#~ " -a SIDE skriv ut linjer som ikke kan parres som fra fil SIDE\n"
+#~ " -e TOM erstatt manglende inn-felt med TOM\n"
+#~ " -i, --ignore-case ignorer forskjeller i store/små bokstaver ved\n"
+#~ " sammenligning av felt\n"
+#~ " -j FELT (avleggs) samme som «-1 FELT -2 FELT»\n"
+#~ " -j1 FELT (avleggs) samme som «-1 FELT»\n"
+#~ " -j2 FELT (avleggs) samme som «-2 FELT»\n"
+#~ " -o FORMAT følg FORMAT når utlinjen lages\n"
+#~ " -t TEGN bruk TEGN som feltseparator for inn og ut\n"
+#~ " -v SIDE som -a SIDE, men dropp sammenføyde ut-linjer\n"
+#~ " -1 FELT sammenføy ved dette FELTet fra fil 1\n"
+#~ " -2 FELT sammenføy ved dette FELTet fra fil 2\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "Dersom -t TEGN ikke er angitt, er «ledende blanke» feltseparator, og "
+#~ "ignoreres,\n"
+#~ "ellers er felt skilt av TEGN. Hvert FELT er et feltnummer telt fra 1.\n"
+#~ "FORMAT er en eller flere komma- eller blank-separerte spesifikasjoner, "
+#~ "der\n"
+#~ "hver er «SIDE.FELT» eller «0». Det forvalgte FORMATet skriver ut\n"
+#~ "sammenføyningsfeltet, resten av feltene fra FIL1 og resten av feltene "
+#~ "fra\n"
+#~ "FIL2, alle skilt med TEGN.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION] [FILE]...\n"
+#~ " or: %s [OPTION] --check [FILE]\n"
+#~ "Print or check %s (%d-bit) checksums.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ "The following two options are useful only when verifying checksums:\n"
+#~ " --status don't output anything, status code shows "
+#~ "success\n"
+#~ " -w, --warn warn about improperly formated checksum lines\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "The sums are computed as described in %s. When checking, the input\n"
+#~ "should be a former output of this program. The default mode is to print\n"
+#~ "a line with checksum, a character indicating type (`*' for binary, ` ' "
+#~ "for\n"
+#~ "text), and name for each FILE.\n"
+#~ msgstr ""
+#~ "Bruk: %s [FLAGG] [FIL]...\n"
+#~ " eller: %s [FLAGG] --check [FIL]\n"
+#~ "Skriv eller sjekk MD5-sjekksummer.\n"
+#~ "Dersom ingen FIL er spesifisert eller FIL er -, leses det fra standard "
+#~ "inn.\n"
+#~ "\n"
+#~ " -b, --binary les filene i binærmodus (forvalg i DOS/Windows)\n"
+#~ " -c, --check sjekk MD5-summene mot angitt liste\n"
+#~ " -t, --text les filene i tekstmodus (forvalgt)\n"
+#~ "\n"
+#~ "De følgende to flaggene brukes kun ved sjekking av sjekksummer:\n"
+#~ " --status ikke skriv ut noe, statuskode angir resultat\n"
+#~ " -w, --warn advar mot feilformatterte MD5-sjekksum-linjer\n"
+#~ "\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "Summene blir beregnet som beskrevet i RFC 1321. Ved sjekking skal\n"
+#~ "inndata være tidligere utdata fra dette programmet. Forvalgt \n"
+#~ "modus er å skrive ut en linje med sjekksum, et tegn som indikerer\n"
+#~ "type («*» for binær, « » for tekst), og navnet til hver FIL\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Write each FILE to standard output, with line numbers added.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+#~ " -d, --section-delimiter=CC use CC for separating logical pages\n"
+#~ " -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+#~ " -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+#~ " -i, --page-increment=NUMBER line number increment at each line\n"
+#~ " -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+#~ "one\n"
+#~ " -n, --number-format=FORMAT insert line numbers according to "
+#~ "FORMAT\n"
+#~ " -p, --no-renumber do not reset line numbers at logical "
+#~ "pages\n"
+#~ " -s, --number-separator=STRING add STRING after (possible) line "
+#~ "number\n"
+#~ " -v, --first-page=NUMBER first line number on each logical page\n"
+#~ " -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+#~ "two delimiter characters for separating logical pages, a missing\n"
+#~ "second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+#~ "\n"
+#~ " a number all lines\n"
+#~ " t number only nonempty lines\n"
+#~ " n number no lines\n"
+#~ " pREGEXP number only lines that contain a match for REGEXP\n"
+#~ "\n"
+#~ "FORMAT is one of:\n"
+#~ "\n"
+#~ " ln left justified, no leading zeros\n"
+#~ " rn right justified, no leading zeros\n"
+#~ " rz right justified, leading zeros\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Skriv hver fil til standard ut, med linjenummer lagt til.\n"
+#~ "Dersom ingen FIL er spesifisert, eller FIL er -, leses det fra standard "
+#~ "inn.\n"
+#~ "\n"
+#~ " -b, --body-numbering=STIL bruk STIL for nummerering\n"
+#~ " -d, --section-delimiter=CC bruk CC for å skille logiske sider\n"
+#~ " -f, --footer-numbering=STIL bruk STIL for å nummerere bunntekst\n"
+#~ " -h, --header-numbering=STIL bruk STIL for å nummerere topptekst\n"
+#~ " -i, --page-increment=ANTALL linjenummerøkning for hver linje\n"
+#~ " -l, --join-blank-lines=ANTALL ANTALL tomme linjer som teller som en\n"
+#~ " -n, --number-format=FORMAT sett inn linjenummer etter FORMAT\n"
+#~ " -p, --no-renumber ikke begynn linjenumre på nytt ved "
+#~ "logiske\n"
+#~ " sider\n"
+#~ " -s, --number-separator=STRENG legg til STRENG etter (mulig) "
+#~ "linjenummer\n"
+#~ " -v, --first-page=ANTALL første linjenummer på hver logiske "
+#~ "side\n"
+#~ " -w, --number-width=ANTALL bruk ANTALL kolonner for "
+#~ "linjenummerering\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "Forvalgt er -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC er\n"
+#~ "to skilletegn for å skille logiske sider, et manglende andretegn\n"
+#~ "impliserer «:». Bruk \\\\ for \\. STIL er en av:\n"
+#~ "\n"
+#~ " a nummerer alle linjer\n"
+#~ " t nummerer bare ikke-tomme linjer\n"
+#~ " n nummerer ingen linjer\n"
+#~ " pREGEXP nummerer bare linjer som passer REGEXP\n"
+#~ "\n"
+#~ "FORMAT er et av følgende:\n"
+#~ "\n"
+#~ " ln venstrejustert, ingen ledende nuller\n"
+#~ " rn høyrejustert, ingen ledende nuller\n"
+#~ " rz høyrejustert, ledende nuller\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Write an unambiguous representation, octal bytes by default,\n"
+#~ "of FILE to standard output. With more than one FILE argument,\n"
+#~ "concatenate them in the listed order to form the input.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -A, --address-radix=RADIX decide how file offsets are printed\n"
+#~ " -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+#~ " -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+#~ " -s, --strings[=BYTES] output strings of at least BYTES graphic "
+#~ "chars\n"
+#~ " -t, --format=TYPE select output format or formats\n"
+#~ " -v, --output-duplicates do not use * to mark line suppression\n"
+#~ " -w, --width[=BYTES] output BYTES bytes per output line\n"
+#~ " --traditional accept arguments in pre-POSIX form\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Pre-POSIX format specifications may be intermixed, they accumulate:\n"
+#~ " -a same as -t a, select named characters\n"
+#~ " -b same as -t oC, select octal bytes\n"
+#~ " -c same as -t c, select ASCII characters or backslash escapes\n"
+#~ " -d same as -t u2, select unsigned decimal shorts\n"
+#~ " -f same as -t fF, select floats\n"
+#~ " -h same as -t x2, select hexadecimal shorts\n"
+#~ " -i same as -t d2, select decimal shorts\n"
+#~ " -l same as -t d4, select decimal longs\n"
+#~ " -o same as -t o2, select octal shorts\n"
+#~ " -x same as -t x2, select hexadecimal shorts\n"
+#~ msgstr ""
+#~ "Skriv en entydig representasjon, oktale bytes forvalgt, av FIL\n"
+#~ "til standard ut. Dersom ingen FIL er spesifisert, eller FIL er -,\n"
+#~ "leses det fra standard inn.\n"
+#~ "\n"
+#~ " -A, --address-radix=RADIX bestem hvordan filoffset'er skrives\n"
+#~ " -j, --skip-bytes=BYTES hopp over første BYTES fra hver fil\n"
+#~ " -N, --read-bytes=BYTES begrens oppgaven til første BYTES fra hver "
+#~ "fil\n"
+#~ " -s, --strings[=BYTES] skriv ut strenger med minst BYTES grafiske "
+#~ "tegn\n"
+#~ " -t, --format=TYPE velg utformat(er)\n"
+#~ " -v, --output-duplicates ikke bruk * for å markere linjefjerning\n"
+#~ " -w, --width[=BYTES] skriv BYTES bytes per utlinje\n"
+#~ " --traditional aksepter argumenter i pre-POSIX form\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "Pre-POSIX-argumenter kan blandes, de er:\n"
+#~ " -a samme som -t a, velg navngitte tegn\n"
+#~ " -b samme som -t oC, velg oktalbytes\n"
+#~ " -c samme som -t c, velg ASCII-tegn eller backslash-notasjon\n"
+#~ " -d samme som -t u2, velg korte desimaler uten fortegn\n"
+#~ " -f samme som -t fF, velg flyttall\n"
+#~ " -h samme som -t x2, velg korte hexadesimale\n"
+#~ " -i samme som -t d2, velg korte desimaler\n"
+#~ " -l samme som -t d4, velg lange desimaler\n"
+#~ " -o samme som -t o2, velg korte oktaler\n"
+#~ " -x samme som -t x2, velg korte hexadesimaler\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "For older syntax (second call format), OFFSET means -j OFFSET. LABEL\n"
+#~ "is the pseudo-address at first byte printed, incremented when dump is\n"
+#~ "progressing. For OFFSET and LABEL, a 0x or 0X prefix indicates\n"
+#~ "hexadecimal, suffixes maybe . for octal and b multiply by 512.\n"
+#~ "\n"
+#~ "TYPE is made up of one or more of these specifications:\n"
+#~ "\n"
+#~ " a named character\n"
+#~ " c ASCII character or backslash escape\n"
+#~ " d[SIZE] signed decimal, SIZE bytes per integer\n"
+#~ " f[SIZE] floating point, SIZE bytes per integer\n"
+#~ " o[SIZE] octal, SIZE bytes per integer\n"
+#~ " u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+#~ " x[SIZE] hexadecimal, SIZE bytes per integer\n"
+#~ "\n"
+#~ "SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+#~ "sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+#~ "sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+#~ "for sizeof(double) or L for sizeof(long double).\n"
+#~ "\n"
+#~ "RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+#~ "BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+#~ "with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix "
+#~ "to\n"
+#~ "any type adds a display of printable characters to the end of each line\n"
+#~ "of output. -s without a number implies 3. -w without a number implies "
+#~ "32.\n"
+#~ "By default, od uses -A o -t d2 -w 16.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "For eldre syntaks («second call format»), betyr POSISJON -j POSISJON. \n"
+#~ "MERKE er pseudoadressen til den første uskrevne byten, som økes mens\n"
+#~ "utskriften pågår. For POSISJON og MERKE, indikerer en 0x- eller \n"
+#~ "0X-forstavelse hexadesimalt tallformat. Endelser kan være . for oktal,\n"
+#~ "og b for blokker på 512 bytes.\n"
+#~ "\n"
+#~ "TYPE er laget av en eller flere av følgende:\n"
+#~ "\n"
+#~ " a et navngitt tegn\n"
+#~ " c ASCII-tegn eller backslash-notasjon\n"
+#~ " d[STØRRELSE] desimal med fortegn, STØRRELSE bytes per tall\n"
+#~ " f[STØRRELSE] flyttall, STØRRELSE bytes per tall\n"
+#~ " o[STØRRELSE] oktal, STØRRELSE bytes per tall\n"
+#~ " u[STØRRELSE] desimal uten fortegn, STØRRELSE bytes per tall\n"
+#~ " x[STØRRELSE] hexadesimal, STØRRELSE bytes per tall\n"
+#~ "\n"
+#~ "STØRRELSE er et tall. For TYPE lik d, o, u eller x, kan STØRRELSE også "
+#~ "være\n"
+#~ "C for sizeof(char), S for sizeof(short), I for sizeof(int) eller L for \n"
+#~ "sizeof(long). Når TYPE er f, kan STØRRELSE være F for sizeof(float), \n"
+#~ "D for sizeof(double) eller L for sizeof(long double).\n"
+#~ "\n"
+#~ "RADIX er d for desimal, o for oktal, x for hexadesimal eller n for "
+#~ "ingen.\n"
+#~ "BYTES er hexadesimal med 0x- eller 0X-prefix, multipliseres med 512\n"
+#~ "med endelse b, med 1024 med endelse k og med 1048576 med endelse m. \n"
+#~ "En z-endelse for en hvilken som helst type viser skrivbare tegn til "
+#~ "slutten\n"
+#~ "av hver linje av utskriften. -s uten et tall impliserer 3. -w uten et "
+#~ "tall\n"
+#~ "impliserer 32. Forvalgt er at od bruker -A o -t d2 -w 16.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Paginate or columnate FILE(s) for printing.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+#~ " begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+#~ " -COLUMN, --columns=COLUMN\n"
+#~ " produce COLUMN-column output and print columns down,\n"
+#~ " unless -a is used. Balance number of lines in the\n"
+#~ " columns on each page.\n"
+#~ " -a, --across print columns across rather than down, used together\n"
+#~ " with -COLUMN\n"
+#~ " -c, --show-control-chars\n"
+#~ " use hat notation (^G) and octal backslash notation\n"
+#~ " -d, --double-space\n"
+#~ " double space the output\n"
+#~ " -D, --date-format=FORMAT\n"
+#~ " use FORMAT for the header date\n"
+#~ " -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+#~ " expand input CHARs (TABs) to tab WIDTH (8)\n"
+#~ " -F, -f, --form-feed\n"
+#~ " use form feeds instead of newlines to separate pages\n"
+#~ " (by a 3-line page header with -F or a 5-line header\n"
+#~ " and trailer without -F)\n"
+#~ msgstr ""
+#~ "Formater FIL(er) i sider og spalter for utskriving.\n"
+#~ "\n"
+#~ "Fra versjon 1.22i: Redefinering av noen av flaggene med små bokstaver "
+#~ "(bedre\n"
+#~ "POSIZ-støtte og tilpassing til andre UNIXer i noen tilfeller) som fører "
+#~ "til\n"
+#~ "brudd i bakover-kompatibilitet. Noen nye flagg med store bokstaver er\n"
+#~ "definert for å unngå uventede forstyrrelser av flagg. Flagg med store\n"
+#~ "bokstaver dominierer flagg med små bokstaver.\n"
+#~ "Sideskift i inndata fører til sideskift i utdata. Flere sideskift\n"
+#~ "fører til tomme sider\n"
+#~ "\n"
+#~ " +FØRSTE_SIDE[:SISTE_SIDE], --pages=FØRSTE_SIZE[:SISTE_SIDE]\n"
+#~ " start [slutt] utskrift med FØRSTE_[SISTE_]SIDE\n"
+#~ " -SPALTER, --columns=SPALTER\n"
+#~ " lag SPALTER-spalters utskrift og skriv spalter "
+#~ "nedover\n"
+#~ " med mindre «-a» er spesifisert: balansér antall "
+#~ "linjer\n"
+#~ " i spaltene på hver side.\n"
+#~ " -a, --across skriv spalter bortover isteden for nedover. Brukes\n"
+#~ " sammen med -SPALTER\n"
+#~ " -c, --show-control-chars\n"
+#~ " bruk hatt-notasjon (^G) og oktal backslashnotasjon\n"
+#~ " -d, --double-space\n"
+#~ " dobbel avstand i utskriften\n"
+#~ " -e[TEGN[BREDDE]], --expand-tabs[=TEGN[BREDDE]]\n"
+#~ " utvid inn-TEGN (TABs) til BREDDE blanktegn (8)\n"
+#~ " -F, -f, --form-feed\n"
+#~ " bruk sideforskyvning(FF) istedenfor linjeskift for å\n"
+#~ " separere sider. (Med et 3-linjers sidehode med -F "
+#~ "eller\n"
+#~ " et 5-linjers hode og bunn uten -F).\n"
+#~ " -h HODE, --header=HODE\n"
+#~ " bruk HODE isteden for filnavn i sidetopptekstene\n"
+#~ " med lange hoder kan venstre-trunkering forekomme.\n"
+#~ " -h \"\" skriver en blank linje. Ikke bruk -h\"\".\n"
+#~ " -i[TEGN[BREDDE]], --output-tabs=[TEGN[BREDDE]]\n"
+#~ " erstatt BREDDE (8) mellomrom til TEGN (TABs) \n"
+#~ " -J, --join-lines føy sammen fulle linjer. Skrur av -W "
+#~ "linjetrunkering,\n"
+#~ " ingen kolonnejustering, -S[STRENG] setter "
+#~ "separatorer\n"
+#~ " -l SIDELENGDE, --length=SIDELENGDE\n"
+#~ " sett sidelendge til SIDELENGDE (66) linjer\n"
+#~ " (forvalgt antall linjer med tekst er 56 med -f 63)\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -s[CHAR],--separator[=CHAR]\n"
+#~ " separate columns by a single character, default for "
+#~ "CHAR\n"
+#~ " is the <TAB> character without -w and 'no char' with -"
+#~ "w\n"
+#~ " -s[CHAR] turns off line truncation of all 3 column\n"
+#~ " options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+#~ " -S[STRING], --sep-string[=STRING]\n"
+#~ " separate columns by an optional STRING, don't use\n"
+#~ " -S \"STRING\", -S only: No separator used (same as -S"
+#~ "\"\"),\n"
+#~ " without -S: Default separator <TAB> with -J and "
+#~ "<space>\n"
+#~ " otherwise (same as -S\" \"), no effect on column "
+#~ "options\n"
+#~ " -t, --omit-header omit page headers and trailers\n"
+#~ " -T, --omit-pagination\n"
+#~ " omit page headers and trailers, eliminate any "
+#~ "pagination\n"
+#~ " by form feeds set in input files\n"
+#~ " -v, --show-nonprinting\n"
+#~ " use octal backslash notation\n"
+#~ " -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+#~ " set page width to PAGE_WIDTH (72) characters for\n"
+#~ " multiple text-column output only, -s[char] turns off "
+#~ "(72)\n"
+#~ " -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+#~ " set page width to PAGE_WIDTH (72) characters always,\n"
+#~ " truncate lines, except -J option is set, no "
+#~ "interference\n"
+#~ " with -S or -s\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+#~ "FILE is -, read standard input.\n"
+#~ msgstr ""
+#~ " -m, --merge skriv ut alle filer parallelt, en i hver spalte\n"
+#~ " trunkér linjer, men føy sammen linjer av full lengde "
+#~ "med -j\n"
+#~ " -n[SEP[SIFFER]], --number-lines[=SEP[SIFFER]\n"
+#~ " nummerér linjer, bruk SIFFER (5) siffer, så SEP "
+#~ "(TAB)\n"
+#~ " forvalgt telling starter med første linje av innfil\n"
+#~ " -N NUMMER, --first-line-number=NUMMER\n"
+#~ " start telling med NUMMER på første linje på første "
+#~ "side\n"
+#~ " som skrives (se +FØRSTE_SIDE)\n"
+#~ " -o MARG, --indent=MARG\n"
+#~ " rykk inn linjer MARG mellomrom (påvirker ikke -w)\n"
+#~ " -r, --no-file-warnings\n"
+#~ " ikke advar når en fil ikke kan åpnes\n"
+#~ " -s[TEGN], --separator[=TEGN]\n"
+#~ " skill spalter med et enkelt TEGN. Forvalgt TEGN er\n"
+#~ " TAB uten -w og «ingen tegn» med -w.\n"
+#~ " -s[TEGN] slår av linjetrunkering for alle 3 spalte-\n"
+#~ " flaggene (-SPALTER|-a -SPALTER|-m) bortsett fra -w\n"
+#~ " -s[STRENG], --sep-string[=STRENG]\n"
+#~ " skill spalter med en evt. STRENG, ikke bruk\n"
+#~ " -S \"STRENG\". Med bare -S brukes ingen skilletegn\n"
+#~ " (samme som -S\"\").\n"
+#~ " uten -S: forvalgt skilletegn er TAB med -J og "
+#~ "mellomrom\n"
+#~ " ellers (samme som -S\" \"), ingen effekt på "
+#~ "spalteflagg\n"
+#~ " -t, --omit-header ikke bruk topp- og bunntekst\n"
+#~ " -T, --omit-pagination\n"
+#~ " ikke bruk topp- og bunntekst, eliminer evt. side-"
+#~ "layout\n"
+#~ " ved sideforskyvning(FF) satt i innfiler\n"
+#~ " -v, --show-nonprinting\n"
+#~ " bruk oktal backslashnotasjon\n"
+#~ " -w SIDEBREDDE, --width=SIDEBREDDE\n"
+#~ " sett sidebredde til SIDEBREDDE (72) kolonner, kun "
+#~ "for\n"
+#~ " flerspalteutskrift. -s[tegn] slår av (72)\n"
+#~ " -W SIDEBREDDE, --page-width=SIDEBREDDE\n"
+#~ " sett sidebredde til SIDEBREDDE (72) kolonner, "
+#~ "alltid.\n"
+#~ " Trunkér linjer hvis -J ikke er satt. Har ingen\n"
+#~ " innblanding med -S eller -s\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "-T impliseres av -l nn, når nn <= 10 eller <= 3 ved -F. Dersom ingen FIL\n"
+#~ "er spesifisert eller FIL er -, leses det fra standard inn.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Output a permuted index, including context, of the words in the input "
+#~ "files.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -A, --auto-reference output automatically generated "
+#~ "references\n"
+#~ " -C, --copyright display Copyright and copying "
+#~ "conditions\n"
+#~ " -G, --traditional behave more like System V `ptx'\n"
+#~ " -F, --flag-truncation=STRING use STRING for flagging line "
+#~ "truncations\n"
+#~ " -M, --macro-name=STRING macro name to use instead of `xx'\n"
+#~ " -O, --format=roff generate output as roff directives\n"
+#~ " -R, --right-side-refs put references at right, not counted in -"
+#~ "w\n"
+#~ " -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+#~ " -T, --format=tex generate output as TeX directives\n"
+#~ " -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+#~ " -b, --break-file=FILE word break characters in this FILE\n"
+#~ " -f, --ignore-case fold lower case to upper case for "
+#~ "sorting\n"
+#~ " -g, --gap-size=NUMBER gap size in columns between output "
+#~ "fields\n"
+#~ " -i, --ignore-file=FILE read ignore word list from FILE\n"
+#~ " -o, --only-file=FILE read only word list from this FILE\n"
+#~ " -r, --references first field of each line is a reference\n"
+#~ " -t, --typeset-mode - not implemented -\n"
+#~ " -w, --width=NUMBER output width in columns, reference "
+#~ "excluded\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+#~ msgstr ""
+#~ "Obligatoriske argumenter til lange flagg er også obligatoriske for korte "
+#~ "flagg.\n"
+#~ "\n"
+#~ " -A, --auto-reference skriv ut automatisk genererte "
+#~ "referanser\n"
+#~ " -C, --copyright vis Copyright og kopieringsbetingelser\n"
+#~ " -G, --traditional vær mer som System Vs «ptx»\n"
+#~ " -F, --flag-truncation=STRENG bruk STRENG for å markere "
+#~ "linjetrunkering\n"
+#~ " -M, --macro-name=STRENG makronavn å bruke istedenfor «xx»\n"
+#~ " -O, --format=roff generer utskrift som roff-direktiver\n"
+#~ " -R, --right-side-refs plassér referansene på høyre side, ikke\n"
+#~ " telt med i -w\n"
+#~ " -S, --sentence-regexp=REGEXP for slutten av linjer eller slutten av\n"
+#~ " setninger\n"
+#~ " -T, --format=tex generer utskrift som TeX-direktiver\n"
+#~ " -W, --word-regexp=REGEXP bruk REGEXP for å treffe hvert "
+#~ "nøkkelord\n"
+#~ " -b, --break-file=FIL tegn for orddeling i denne FILen\n"
+#~ " -f, --ignore-case gjør om små bokstaver til store for "
+#~ "sortering\n"
+#~ " -g, --gap-size=TALL størrelse på mellomrom mellom spalter i "
+#~ "utfelt\n"
+#~ " -i, --ignore-file=FIL les liste over ord som skal ignoreres "
+#~ "fra\n"
+#~ " denne FILen\n"
+#~ " -o, --only-file=FIL les liste over ord som *ikke* skal "
+#~ "ignoreres\n"
+#~ " fra denne FILen\n"
+#~ " -r, --references første felt av hver linje er en "
+#~ "referanse\n"
+#~ " -t, --typeset-mode - ikke implementert -\n"
+#~ " -w, --width=BREDDE utskriftbredde for spalter, eksklusive\n"
+#~ " referanser\n"
+#~ " --help vis denne hjelpeteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "Ved ingen FIL eller hvis FIL er -, leses det fra standard inn. «-F /» "
+#~ "er\n"
+#~ "forvalgt.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Other options:\n"
+#~ "\n"
+#~ " -c, --check check whether input is sorted; do not sort\n"
+#~ " -k, --key=POS1[,POS2] start a key at POS1, end it at POS 2 (origin "
+#~ "1)\n"
+#~ " -m, --merge merge already sorted files; do not sort\n"
+#~ " -o, --output=FILE write result to FILE instead of standard "
+#~ "output\n"
+#~ " -s, --stable stabilize sort by disabling last-resort "
+#~ "comparison\n"
+#~ " -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+#~ " -t, --field-separator=SEP use SEP instead of non- to whitespace "
+#~ "transition\n"
+#~ " -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+#~ "s\n"
+#~ " multiple options specify multiple "
+#~ "directories\n"
+#~ " -u, --unique with -c: check for strict ordering\n"
+#~ " otherwise: output only the first of an "
+#~ "equal run\n"
+#~ " -z, --zero-terminated end lines with 0 byte, not newline\n"
+#~ " +POS1 [-POS2] start a key at POS1, end it before POS2 "
+#~ "(origin 0)\n"
+#~ " Warning: this option is obsolescent\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Skriv en sortert sammenføyning av alle FIL(er) til standard ut.\n"
+#~ "\n"
+#~ " +POS1 [-POS2] start en nøkkel ved POS1, avslutt den ved POS2\n"
+#~ " -b ignorer ledende mellomrom i sorterings-felt og -"
+#~ "nøkler\n"
+#~ " -c sjekk om filene allerede er sorterte, ikke sortér\n"
+#~ " -d bruk bare [a-zA-Z0-9 ]-tegnene i nøkler\n"
+#~ " -f gjør om små bokstaver til store i nøkler\n"
+#~ " -g sammenlign i henhold til generell numerisk verdi, "
+#~ "impl. -b\n"
+#~ " -i betrakt kun [\\040-\\0176]-tegnene i nøkler\n"
+#~ " -k POS1[,POS2] samme som +POS1 [-POS2], alle posisjoner telles fra 1\n"
+#~ " -m legg sammen allerede sorterte filer, ikke sortér\n"
+#~ " -M sammenlign (ukjent) < `JAN' < ... < `DEC', impliserer -"
+#~ "b\n"
+#~ " -n sammenlign i henhold til streng-numerisk verdi, impl. -"
+#~ "b\n"
+#~ " -o FIL skriv resultat til FIL istedet for til standard ut\n"
+#~ " -r gi resultatet i motsatt rekkefølge\n"
+#~ " -s stabiliser sortering ved å slå av \n"
+#~ " «last resort comparison»\n"
+#~ " -t SEP bruk SEP som skilletegn istedet for mellomrom.\n"
+#~ " -T HENVIS bruk HENVIS for temporære filer, ikke $TMPDIR eller %"
+#~ "s\n"
+#~ " -u med -c, sjekk om «strict ordering» brukes\n"
+#~ " med -m, skriv kun ut den første av to like setninger\n"
+#~ " -z avslutt linjer med en 0-byte, ikke linjeskift,\n"
+#~ " for «find -print0»\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "POS er F[.T][FLAGG], hvor F er et feltnummer og T en tegnposisjon\n"
+#~ "i feltet, begge starter fra null. FLAGG er satt sammen av en eller\n"
+#~ "flere av Mbdfinr, dette forhindrer effektivt globale settinger\n"
+#~ "av -Mbdfinr for denne nøkkelen. Når ingen nøkkel er angitt,\n"
+#~ "brukes hele linjen som nøkkel. Dersom ingen FIL er spesifisert, eller \n"
+#~ "FIL er -, leses det fra standard inn.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print the last %d lines of each FILE to standard output.\n"
+#~ "With more than one FILE, precede each with a header giving the file "
+#~ "name.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " --retry keep trying to open a file even if it is\n"
+#~ " inaccessible when tail starts or if it "
+#~ "becomes\n"
+#~ " inaccessible later -- useful only with -f\n"
+#~ " -c, --bytes=N output the last N bytes\n"
+#~ " -f, --follow[={name|descriptor}]\n"
+#~ " output appended data as the file grows;\n"
+#~ " -f, --follow, and --follow=descriptor are\n"
+#~ " equivalent\n"
+#~ " -F same as --follow=name --retry\n"
+#~ " -n, --lines=N output the last N lines, instead of the last %"
+#~ "d\n"
+#~ " --max-unchanged-stats=N\n"
+#~ " with --follow=name, reopen a FILE which has "
+#~ "not\n"
+#~ " changed size after N (default %d) iterations\n"
+#~ " to see if it has been unlinked or renamed\n"
+#~ " (this is the usual case of rotated log files)\n"
+#~ " --pid=PID with -f, terminate after process ID, PID dies\n"
+#~ " -q, --quiet, --silent never output headers giving file names\n"
+#~ " -s, --sleep-interval=S with -f, each iteration lasts approximately S\n"
+#~ " (default 1) seconds\n"
+#~ " -v, --verbose always output headers giving file names\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Skriv de siste 10 linjene av hver FIL til standard ut.\n"
+#~ "Dersom mer enn én FIL er spesifisert, skriv ut filnavnet foran hver fil.\n"
+#~ "Dersom ingen FIL er spesifisert eller FIL er -, leses det fra standard "
+#~ "inn.\n"
+#~ "\n"
+#~ " --allow-missing FIXME\n"
+#~ " -c, --bytes=N skriv ut de siste N bytes\n"
+#~ " -f, --follow[={navn|deskriptor}] skriv ut tillagte data etterhvert som "
+#~ "filen vokser\n"
+#~ " -n, --lines=N skriv ut de siste N linjene istedet for de "
+#~ "siste 10\n"
+#~ " --max-unchanged-stats=N FIXME\n"
+#~ " --max-consecutive-size-changes=N FIXME\n"
+#~ " -q, --quiet, --silent ikke skriv ut filnavn\n"
+#~ " -s, --sleep-interval=S med -f, sov S sekunder mellom hver iterasjon\n"
+#~ " -v, --verbose skriv alltid ut filnavnet\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "Hvis det første tegnet i N (antall bytes eller linjer) er en «+»,\n"
+#~ "skriv ut fra N'te element fra starten av hver fil, ellers skriv ut de\n"
+#~ "siste N elementene i filen. N kan ha en multiplikatorending:\n"
+#~ "b for 512, k for 1024, m for 1048576 (1 Meg). Dersom første FLAGG er \n"
+#~ "-VERDI, eller +VERDI, tolkes det som -n VERDI, eller -n +VERDI dersom "
+#~ "VERDI\n"
+#~ "ikke har en av [bmk]-endingsmultiplikatorene, ellers tolkes det som -c\n"
+#~ "VERDI eller -c +VERDI.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "SETs are specified as strings of characters. Most represent themselves.\n"
+#~ "Interpreted sequences are:\n"
+#~ "\n"
+#~ " \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a audible BEL\n"
+#~ " \\b backspace\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ " CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+#~ " [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+#~ " [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+#~ " [:alnum:] all letters and digits\n"
+#~ " [:alpha:] all letters\n"
+#~ " [:blank:] all horizontal whitespace\n"
+#~ " [:cntrl:] all control characters\n"
+#~ " [:digit:] all digits\n"
+#~ " [:graph:] all printable characters, not including space\n"
+#~ " [:lower:] all lower case letters\n"
+#~ " [:print:] all printable characters, including space\n"
+#~ " [:punct:] all punctuation characters\n"
+#~ " [:space:] all horizontal or vertical whitespace\n"
+#~ " [:upper:] all upper case letters\n"
+#~ " [:xdigit:] all hexadecimal digits\n"
+#~ " [=CHAR=] all characters which are equivalent to CHAR\n"
+#~ msgstr ""
+#~ "\n"
+#~ "SETT er spesifisert med strenger av tegn. De fleste tegnene står for "
+#~ "seg\n"
+#~ "selv. Følgende sekvenser tolkes spesielt:\n"
+#~ "\n"
+#~ " \\NNN tegn med oktalverdi NNN (1 til 3 oktale siffer)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a beep\n"
+#~ " \\b backspace\n"
+#~ " \\f sideskift (FF)\n"
+#~ " \\n linjeskift (LF)\n"
+#~ " \\r vognretur (CR)\n"
+#~ " \\t horisontal tabulator\n"
+#~ " \\v vertikal tabulator\n"
+#~ " TEGN1-TEGN2 alle tegn fra TEGN1 til TEGN2, stigende\n"
+#~ " [TEGN1-TEGN2] samme som TEGN1-TEGN2, dersom begge sett bruker dette\n"
+#~ " [TEGN*] i SETT2, kopier av TEGN inntil samme lengde til SETT1\n"
+#~ " [TEGN*ANT] ANT kopier av TEGN, ANT er oktal, hvis det begynner med "
+#~ "0\n"
+#~ " [:alnum:] alle bokstaver og tall\n"
+#~ " [:alpha:] alle bokstaver\n"
+#~ " [:blank:] alle horisontale blanke tegn\n"
+#~ " [:cntrl:] alle kontrolltegn\n"
+#~ " [:digit:] alle siffer\n"
+#~ " [:graph:] alle skrivbare tegn, unntatt blanke tegn\n"
+#~ " [:lower:] alle små bokstaver\n"
+#~ " [:print:] alle skrivbare tegn, inkludert blanke tegn\n"
+#~ " [:punct:] alle tegnsettingstegn\n"
+#~ " [:space:] alle horisontale og vertikale blanke tegn\n"
+#~ " [:upper:] alle store bokstaver\n"
+#~ " [:xdigit:] alle hexadesimale siffer\n"
+#~ " [=TEGN=] alle tegn som er like TEGN\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Discard all but one of successive identical lines from INPUT (or\n"
+#~ "standard input), writing to OUTPUT (or standard output).\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -c, --count prefix lines by the number of occurrences\n"
+#~ " -d, --repeated only print duplicate lines\n"
+#~ " -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+#~ " delimit-method={none(default),prepend,separate)}\n"
+#~ " Delimiting is done with blank lines.\n"
+#~ " -f, --skip-fields=N avoid comparing the first N fields\n"
+#~ " -i, --ignore-case ignore differences in case when comparing\n"
+#~ " -s, --skip-chars=N avoid comparing the first N characters\n"
+#~ " -u, --unique only print unique lines\n"
+#~ " -w, --check-chars=N compare no more than N characters in lines\n"
+#~ " -N same as -f N\n"
+#~ " +N same as -s N (obsolescent; will be withdrawn)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "A field is a run of whitespace, then non-whitespace characters.\n"
+#~ "Fields are skipped before chars.\n"
+#~ msgstr ""
+#~ "Fjern alle bortsett fra én identiske linjer fra INN\n"
+#~ "(eller standard inn), og skriv til UT (eller standard ut).\n"
+#~ "\n"
+#~ " -c, --count begynn linjer med antall forekomster\n"
+#~ " -d, --repeated skriv bare ut linjer det er flere av\n"
+#~ " -D, --all-repeated skriv alle linjer det er flere av\n"
+#~ " -f, --skip-fields=N ikke sammenlign de første N feltene\n"
+#~ " -i, --ignore-case ignorer forskjeller med store/små bokstaver\n"
+#~ " -s, --skip-chars=N ikke sammenlign de første N tegnene\n"
+#~ " -u, --unique skriv bare ut unike linjer\n"
+#~ " -w, --check-chars=N ikke sammenlign mer enn N tegn per linje\n"
+#~ " -N samme som -f N\n"
+#~ " +N samme som -s N\n"
+#~ " --help vis denne hjelpteksten og avslutt\n"
+#~ " --version vis programversjon og avslutt\n"
+#~ "\n"
+#~ "Et felt er en rekke blanke tegn, så andre tegn. Felt hoppes over før "
+#~ "tegn.\n"
+
+#~ msgid ""
+#~ "when using the old-style +POS and -POS key specifiers,\n"
+#~ "the +POS specifier must come first"
+#~ msgstr ""
+#~ "når den gamle nøkkelspesifikasjonsstilen +POS og -POS blir brukt,\n"
+#~ "må +POS komme først"
+
+#~ msgid "option `-k' requires an argument"
+#~ msgstr "flagget «-k» trenger et argument"
+
+#~ msgid "starting field spec has `.' but lacks following character offset"
+#~ msgstr ""
+#~ "startfeltspesifikasjonen har et «.» men mangler følgende tegnposisjon"
+
+#, fuzzy
+#~ msgid ""
+#~ "starting field character offset argument to the `-k' option must be "
+#~ "positive"
+#~ msgstr ""
+#~ "startfeltets tegnposisjonsargument til «-k»-flagget må være positivt"
+
+#~ msgid "field specification has `,' but lacks following field spec"
+#~ msgstr ""
+#~ "feltspesifikasjonen har et «,» men mangler følgende feltspesifikasjon"
+
+#~ msgid "ending field number argument to the `-k' option must be positive"
+#~ msgstr "avsluttende feltnummer-argument til «-k»-flagget må være positivt"
+
+#~ msgid "ending field spec has `.' but lacks following character offset"
+#~ msgstr ""
+#~ "avsluttende feltspesifikasjon har «.» men mangler følgende tegnposisjon"
+
+#~ msgid "option `-o' requires an argument"
+#~ msgstr "flagget «-o» trenger et argument"
+
+#, fuzzy
+#~ msgid "option `-S' requires an argument"
+#~ msgstr "flagget «-k» trenger et argument"
+
+#~ msgid "option `-t' requires an argument"
+#~ msgstr "flagget «-t» trenger et argument"
+
+#~ msgid "option `-T' requires an argument"
+#~ msgstr "flagget «-T» trenger et argument"
+
+#~ msgid "%s%*s%s%*sPage"
+#~ msgstr "%s%*s%s%*sSide"
+
+#~ msgid ""
+#~ "specified number of bytes `%s' is larger than the maximum\n"
+#~ "representable value of type `long'"
+#~ msgstr ""
+#~ "angitt antall bytes «%s» er større enn den maksimale representérbare\n"
+#~ "verdien av type «long»"
+
+#~ msgid "could not find loop"
+#~ msgstr "kunne ikke finne løkke"
+
+#~ msgid "%s: cannot follow end of non-regular file"
+#~ msgstr "%s: kan ikke følge etter slutten av ikke-vanlig fil"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to <textutils-bugs@gnu.org>."
+#~ msgstr ""
+#~ "\n"
+#~ "Rapportér feil til <textutils-bugs@gnu.org>."
+
+#~ msgid "`%s' has reappeared"
+#~ msgstr "«%s» har blitt gjenopprettet"
+
+#~ msgid "`-w PAGE_WIDTH' invalid column number: `%s'"
+#~ msgstr "«-w SIDE_BREDDE» ugyldig kolonnenummer: «%s»"
+
+#~ msgid ""
+#~ "\n"
+#~ "Report bugs to textutils-bugs@gnu.org"
+#~ msgstr ""
+#~ "\n"
+#~ "Rapportér feil til textutils-bugs@gnu.org"
diff --git a/po/pl.gmo b/po/pl.gmo
new file mode 100644
index 0000000..981c03c
--- /dev/null
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
new file mode 100644
index 0000000..d7f563a
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,9870 @@
+# Polish translation of GNU coreutils messages
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+# Rafa³ Maszkowski <rzm@icm.edu.pl>, 1996-2001, 2003-2007.
+# ptx: Pawe³ Krawczyk <kravietz@pipeta.chemia.pk.edu.pl>, 1996.
+# sh-utils: Pawe³ Krawczyk <kravietz@ceti.pl>, 1997, 1998, 1999.
+# fileutils: Thanks for help to Marta Bartnicka, 1999.
+# fileutils: Andrzej Krzysztofowicz <ankry@mif.pg.gda.pl>, 2002.
+# Thanks for help and 246+ remarks to Jakub Bogusz, 2003.
+# 4 corrections: jurget@infocoig.pl via garski@poczta.onet.pl, 2004.
+# 3 corrections: Andrzej Krzysztofowicz <ankry@green.mif.pg.gda.pl>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 6.8\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2007-02-27 16:00+0100\n"
+"Last-Translator: Rafa³ Maszkowski <rzm@icm.edu.pl>\n"
+"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, c-format
+msgid "preserving permissions for %s"
+msgstr "zachowanie uprawnieñ %s"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "nie mo¿na ustawiæ uprawnieñ do %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "b³êdny argument %s opcji %s"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "niejednoznaczny argument %s opcji %s"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Prawid³owe argumenty to:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "b³±d zapisu"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Nieznany b³±d systemu"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "nie mo¿na wykonaæ stat na %s"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "pusty zwyk³y plik"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "zwyk³y plik"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "katalog"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "blokowy plik specjalny"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "znakowy plik specjalny"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "potok"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "dowi±zanie symboliczne"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "gniazdo"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "kolejka komunikatów"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "semafor"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "obiekt w pamiêci wspó³dzielonej"
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr "obiekt z typem w pamiêci"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "dziwny plik"
+
+#: lib/gai_strerror.c:44
+msgid "Address family for hostname not supported"
+msgstr "Rodzina adresów nie obs³ugiwana przez ten system"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr "Tymczasowy b³±d rozwi±zywania nazw"
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr "Z³a warto¶æ ai_flags"
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr "Nienaprawialny b³±d w rozwi±zywaniu nazw"
+
+#: lib/gai_strerror.c:48
+msgid "ai_family not supported"
+msgstr "ai_family nie jest obs³ugiwana"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr "B³±d przydzia³u pamiêci"
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr "Z nazw± nie jest zwi±zany ¿aden adres"
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr "Nieznana nazwa lub us³uga"
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr "Servname nie obs³ugiwany przez ai_socktype"
+
+#: lib/gai_strerror.c:53
+msgid "ai_socktype not supported"
+msgstr "ai_socktype nie jest obs³ugiwane"
+
+#: lib/gai_strerror.c:54
+msgid "System error"
+msgstr "b³±d systemu"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr "Za ma³y bufor argumentów"
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr "W trakcie przetwarzania ¿±dania"
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr "¯±danie skasowane"
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr "¯±dnie nie skasowane"
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr "Wszystkie ¿±dania wype³nione"
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr "PRzerwany przez sygna³"
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr "¬le zakodowany ³añcuch parametrów"
+
+#: lib/gai_strerror.c:74
+msgid "Unknown error"
+msgstr "Nieznany b³±d"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: opcja `%s' jest niejednoznaczna\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: opcja `--%s' nie mo¿e mieæ argumentu\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: opcja `%c%s' nie mo¿e mieæ argumentu\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: opcja `%s' wymaga argumentu\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: nierozpoznana opcja `--%s'\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: nierozpoznana opcja `%c%s'\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: nielegalna opcja -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: b³êdna opcja -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: opcja wymaga argumentu -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: opcja `-W %s' jest niejednoznaczna\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: opcja `-W %s' nie mo¿e mieæ argumentu\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "rozmiar bloku"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "nie mo¿na zmieniæ uprawnieñ do %s"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "nie mo¿na utworzyæ katalogu %s"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "brak pamiêci"
+
+#: lib/openat-die.c:34
+#, c-format
+msgid "unable to record current working directory"
+msgstr "nie uda³o siê zapisaæ bie¿±cego katalogu roboczego"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "nie uda³o siê wróciæ do pocz±tkowego katalogu roboczego"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "'"
+
+#: lib/randread.c:125
+#, c-format
+msgid "%s: end of file"
+msgstr "%s: koniec pliku"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr "Sukces"
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr "Brak dopasowania"
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr "B³êdne wyra¿enie regularne"
+
+# ? - rzm
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr "B³êdny znak sortowany"
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr "B³êdna nazwa klasy znaków"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr "Koñcowy uko¶nik odwrotny"
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr "B³êdne odwo³anie"
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr "Niesparowany [ lub [^"
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr "Niesparowany ( lub \\("
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr "Niedopasowany \\{"
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr "B³êdna zawarto¶æ \\{\\}"
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr "B³êdny koniec zakresu"
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr "Brak pamiêci"
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr "B³êdne wyra¿enie regularne"
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr "Przedwczesny koniec szukania wyra¿enia regularnego"
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr "Za du¿e wyra¿enie regularne"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr "Niesparowany ) lub \\)"
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr "Brak poprzedniego wyra¿enia regularnego"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr "dzia³anie rekurencyjne na %s jest niebezpieczne"
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr "dzia³anie rekurencyjne na %s jest niebezpieczne (to samo co %s)"
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr "u¿yj --no-preserve-root do wy³±czenia tego zabezpieczenia"
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[yYtT]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "nie mo¿na u¿yæ funkcji iconv"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "funkcja iconv nie jest dostêpna"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "znak spoza zakresu"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "nie mo¿na przekszta³ciæ U+%04X do lokalnego zestawu znaków"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "nie mo¿na przekszta³ciæ U+%04X do lokalnego zestawu znaków: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "b³êdny u¿ytkownik"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "b³êdna grupa"
+
+#: lib/userspec.c:109
+msgid "invalid spec"
+msgstr "b³êdna specyfikacja"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr "(C)"
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"To jest wolne oprogramowanie. Mo¿na je rozprowadzaæ na warunkach\n"
+"Powszechnej Licencji Publicznej GNU (General Public Licence)\n"
+"<http://www.gnu.org/licenses/gpl.html>.\n"
+"Ten program ten jest rozprowadzany BEZ GWARANCJI, w granicach dozwolonych\n"
+"przez prawo.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Napisany przez %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Autorzy: %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Autorzy: %s, %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Autorzy: %s, %s, %s\n"
+"i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Autorzy: %s, %s, %s,\n"
+"%s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Autorzy: %s, %s, %s,\n"
+"%s, %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Autorzy: %s, %s, %s,\n"
+"%s, %s, %s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Autorzy: %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Autorzy: %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s i %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Autorzy: %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s i inni.\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "b³êdny argument: %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "nie uda³o siê porównanie ³añcuchów znaków"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Ustaw LC_ALL='C' ¿eby obej¶æ problem"
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "Porównywane ³añcuchy znaków do %s i %s."
+
+#: lib/xmemxfrm.c:55
+#, c-format
+msgid "string transformation failed"
+msgstr "nie uda³o siê przekszta³cenie ³añcucha znaków"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr "Nieprzekszta³cony ³añcuch znaków to %s."
+
+#: lib/xstrtol.h:62
+#, c-format
+msgid "invalid %s `%s'"
+msgstr "b³êdny %s `%s'"
+
+#: lib/xstrtol.h:69
+#, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "b³êdna znak po %s w `%s'"
+
+#: lib/xstrtol.h:74
+#, c-format
+msgid "%s `%s' too large"
+msgstr "%s `%s' jest za du¿e"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Spróbuj `%s --help' dla uzyskania informacji.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+"Sk³adnia: %s [OPCJA] [PLIK]\n"
+"Zakodowane lub zdekodowanie kodem 64-znakowym (base64) PLIKU albo danych\n"
+"miêdzy standardowym wej¶ciem i wyj¶ciem.\n"
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+" -w, --wrap=KOLUMNY Zawijanie zakodowanych linii po KOLUMNACH "
+"(domy¶lnie\n"
+" 76), 0 wy³±cza zawijanie.\n"
+"\n"
+" -d, --decode Rozkodowanie danych.\n"
+" -i, --ignore-garbage Zignorowanie znaków niealfabetycznych przy "
+"dekodowaniu.\n"
+
+#: src/base64.c:77
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+" --help Wy¶wietlenie pomocy i zakoñczenie.\n"
+" --version Wy¶wietlenie informacji o wersji i zakoñczenie.\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Je¿eli nie zosta³ podany PLIK albo PLIK to -, czytane jest standardowe "
+"wej¶cie.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+"\n"
+"Dane s± kodowane wed³ug opisu dla alfabetu o podstawie 64 (base64) w\n"
+"RFC 3548. Przy dekodowaniu oprócz znaków formalnego alfabetu base64 mo¿na\n"
+"napotkaæ znaki nowej linii. Program wywo³any z opcj± --ignore-garbage "
+"bêdzie\n"
+"próbowa³ opu¶ciæ jakiekolwiek inne znaki nie z alfabetu base64.\n"
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Raporty o b³êdach wysy³aj do %s .\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "b³±d czytania"
+
+#: src/base64.c:234
+#, c-format
+msgid "invalid input"
+msgstr "b³êdna dane wej¶ciowe"
+
+#: src/base64.c:271
+#, c-format
+msgid "invalid wrap size: %s"
+msgstr "b³êdny rozmiar zawijania: %s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr "nadmiarowy argument %s"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "zamkniêcie standardowego wej¶cia"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Sk³adnia: %s NAZWA [ROZSZERZENIE]\n"
+" albo: %s [OPCJA]\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Wy¶wietla NAZWÊ, usuwaj±c wszystkie poprzedzaj±ce sk³adniki ¶cie¿ki.\n"
+"Je¶li jest podany, usuwa równie¿ PRZYROSTEK.\n"
+"\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+"\n"
+"Przyk³ady:\n"
+" %s /usr/bin/sort Wynik: \"sort\".\n"
+" %s include/stdio.h .h Wynik: \"stdio\".\n"
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, c-format
+msgid "missing operand"
+msgstr "brakuj±cy argument"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Sk³adnia: %s [OPCJA] [PLIK]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"Po³±czenie PLIKU(ÓW) albo przekazanie ze standardowego wej¶cia na wyj¶cie.\n"
+"\n"
+" -A, --show-all równowa¿ne -vET\n"
+" -b, --number-nonblank numerowanie niepustych linii na wyj¶ciu\n"
+" -e równowa¿ne -vE\n"
+" -E, --show-ends wypisanie $ na koñcu ka¿dej linii\n"
+" -n, --number numerowanie wszystkich linii na wyj¶ciu\n"
+" -s, --squeeze-blank nigdy wiêcej ni¿ jedna pusta linia\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t równowa¿ne -vT\n"
+" -T, --show-tabs wypisanie znaków TAB jako ^I\n"
+" -u (ignorowane)\n"
+" -v, --show-nonprinting u¿ycie zapisu ^ i M-, oprócz LFD i TAB\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+"\n"
+"Przyk³ady:\n"
+" %s f - g Skopiowanie zawarto¶ci f na standardowe wyj¶cie, potem\n"
+" zawarto¶ci g.\n"
+" %s Skopiowanie standardowego wej¶cia na standardowe wyj¶cie.\n"
+
+#: src/cat.c:333
+#, c-format
+msgid "cannot do ioctl on %s"
+msgstr "nie mo¿na wykonaæ ioctl na %s"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "standardowe wyj¶cie"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: plik wej¶ciowy jest plikiem wyj¶ciowym"
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "b³êdna grupa %s"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Sk³adnia: %s [OPCJA]... GRUPA PLIK...\n"
+" albo: %s [OPCJA]... --reference=PLIK_WZ PLIK...\n"
+
+#: src/chgrp.c:117
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Zmiana grupy ka¿dego PLIKU na GRUPÊ.\n"
+"Z opcj± --reference zmiana grupy ka¿dego PLIKU na tak± jak± ma PLIK_WZ.\n"
+"\n"
+" -c, --changes jak verbose, ale informowanie tylko gdy zasz³a "
+"zmiana\n"
+" --dereference zmiany maj± dotyczyæ plików wskazywanych\n"
+" przez dowi±zania symboliczne, a nie samych\n"
+" dowi±zañ (domy¶lnie)\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference operowanie na dowi±zaniach symbolicznych zamiast "
+"na\n"
+" wskazywanych plikach (tylko dla systemów, które\n"
+" umiej± zmieniæ w³a¶ciciela dowi±zania "
+"symbolicznego)\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root bez traktowania katalogu `/' w specjalny sposób\n"
+" (domy¶lnie)\n"
+" --preserve-root odmowa rekusywnego dzia³ania na `/'\n"
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet wy³±czenie wiêkszo¶ci komunikatów o b³êdach\n"
+" --reference=PLIK_WZ u¿ycie grupy pliku PLIK_WZ zamiast podanej\n"
+" nazwy GRUPY\n"
+" -R, --recursive zmiany te¿ w plikach w podkatalogach\n"
+" -v, --verbose wypisanie informacji o ka¿dym przetwarzanym pliku\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+"Nastêpuj±ce opcje zmieniaj± sposób przegl±dania katalogów gdy jest podana\n"
+"opcja -R. Je¿eli podane jest wiêcej opcji, u¿ywana jest tylko ostatnia.\n"
+" -H je¿eli argumentem jest dowi±zanie symboliczne do\n"
+" katalogu - bêdzie przetworzony\n"
+" -L przetworzenie ka¿dego katalogu, do którego jest\n"
+" dowi±zanie symboliczne\n"
+" -P bez przetwarzania dowi±zañ symbolicznych "
+"(domy¶lnie)\n"
+"\n"
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+"\n"
+"Przyk³ady:\n"
+" %s staff /u Zmiana grupy /u na \"staff\".\n"
+" %s -hR staff /u Zmiana grupy /u i zawarto¶ci na \"staff\".\n"
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr "-R --dereference wymaga -H albo -L"
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, c-format
+msgid "missing operand after %s"
+msgstr "brakuj±cy argument po %s"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "nie uda³o siê odczytaæ atrybutów %s"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "pobranie nowych atrybutów %s"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr ""
+"nie zosta³o zmienione ani dowi±zanie symboliczne %s ani wskazywany plik\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "uprawnienia do %s zmienione na %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "nie uda³o siê zmieniæ uprawnieñ do %s na %04lo (%s)\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "uprawnienia do %s zachowane jako %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "nie ma dostêpu do %s"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "nie mo¿na przeczytaæ katalogu %s"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "nie mo¿na zmieniæ uprawnieñ do %s"
+
+#: src/chmod.c:286
+#, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "%s: nowe uprawnienia to %s, nie %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr "b³±d fts_read"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Sk³adnia: %s [OPCJA]... UPRAWN[,UPRAWN]... PLIK...\n"
+" albo: %s [OPCJA]... UPRAWN_ÓS PLIK...\n"
+" albo: %s [OPCJA]... --reference=PLIK_WZ PLIK...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+"Zmiana uprawnieñ do ka¿dego PLIKU na UPRAWN.\n"
+"\n"
+" -c, --changes jak -v, ale podanie tylko kiedy zasz³a zmiana\n"
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root bez traktowania katalogu '/' w specjalny sposób\n"
+" (domy¶lnie)\n"
+" --preserve-root odmowa rekusywnego dzia³ania na '/'\n"
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+"Zmienia uprawnienia do ka¿dego PLIKU do UPRAWN.\n"
+" -f, --silent, --quiet wy³±czenie wiêkszo¶ci komunikatów o b³êdach\n"
+" -v, --verbose wypisanie informacji o ka¿dym przetwarzanym pliku\n"
+" --reference=PLIK_WZ u¿ycie uprawnieñ pliku PLIK_WZ zamiast warto¶ci "
+"UPRAWN\n"
+" -R, --recursive zmiany te¿ w plikach w podkatalogach\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+"\n"
+"UPRAWNIENIA maj± formê `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr "nie mo¿na ³±czyæ ustawiania uprawnieñ i opcji --reference"
+
+#: src/chmod.c:510
+#, c-format
+msgid "invalid mode: %s"
+msgstr "b³êdne uprawnienia %s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "w³a¶ciciel %s zmieniony na %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "grupa %s zmieniona na %s\n"
+
+#: src/chown-core.c:149
+#, c-format
+msgid "no change to ownership of %s\n"
+msgstr "nie mo¿na zmieniæ w³a¶ciciela %s\n"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "nie mo¿na zmieniæ w³a¶ciciela %s na %s\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "nie uda³o siê zmieniæ grupy z %s na %s\n"
+
+#: src/chown-core.c:154
+#, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "nie mo¿na zmieniæ w³a¶ciciela %s\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "w³a¶ciciel %s zachowany jako %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "grupa %s zachowana jako %s\n"
+
+#: src/chown-core.c:159
+#, c-format
+msgid "ownership of %s retained\n"
+msgstr "w³a¶ciciel %s zachowany\n"
+
+#: src/chown-core.c:344
+#, c-format
+msgid "cannot dereference %s"
+msgstr "nie mo¿na usun±æ %s"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "zmiana w³a¶ciciela %s"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "nie mo¿na zmieniæ grupy %s"
+
+#: src/chown.c:93
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Sk³adnia: %s [OPCJA]... [W£A¦CICIEL][:[GRUPA]] PLIK...\n"
+" albo: %s [OPCJA]... --reference=PLIK_WZ PLIK...\n"
+
+#: src/chown.c:98
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Zmiana w³a¶ciciela i/lub grupy ka¿dego PLIKU na W£A¦CICIELA i/lub GRUPÊ.\n"
+"Z opcj± --reference zmiana w³a¶ciciela i grupy ka¿dego PLIKU na tak± jak± "
+"ma\n"
+"PLIK_WZ.\n"
+"\n"
+" -c, --changes jak verbose, ale podanie tylko kiedy zasz³a zmiana\n"
+" --dereference zmiany maj± dotyczyæ plików wskazywanych przez\n"
+" dowi±zania symboliczne, a nie samych dowi±zañ\n"
+" (domy¶lnie)\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=BIE¯¡CY_W£A¦CICIEL:BIE¯¡CA_GRUPA\n"
+" zmiana w³a¶ciciela i/lub grupy ka¿dego pliku, "
+"je¿eli\n"
+" bie¿±cy w³a¶ciciel i /lub grupa s± takie jak "
+"podane.\n"
+" Atrybut nie jest porównywany je¿eli zosta³ "
+"pominiêty\n"
+" w opcji.\n"
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet wy³±czenie wiêkszo¶ci komunikatów o b³êdach\n"
+" --reference=PLIK_WZ u¿ycie w³a¶ciciela i grupy PLIK_WZ zamiast "
+"podanych\n"
+" warto¶ci W£A¦CICIEL:GRUPA\n"
+" -R, --recursive zmiany te¿ w plikach w podkatalogach\n"
+" -v, --verbose wypisanie informacji o ka¿dym przetwarzanym pliku\n"
+"\n"
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"W³a¶ciciel nie bêdzie zmieniony, je¿eli nie zosta³ podany. Grupa nie bêdzie\n"
+"zmieniona, je¿eli nie zosta³a podana; bêdzie zmieniona na grupê g³ówn±, "
+"je¿eli\n"
+"po W£A¦CICIELU zosta³ podany `:'. W£A¦CICIEL i GRUPA mog± byæ podane "
+"zarówno\n"
+"numerycznie jak symbolicznie.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+"\n"
+"Przyk³ady:\n"
+" %s root /u Zmiana w³a¶ciciela /u na \"root\".\n"
+" %s root:staff /u Podobnie, ale równie¿ zmiana grupy na \"staff\".\n"
+" %s -hR root /u Zmiana w³a¶ciciela /u i zawarto¶ci na \"root\".\n"
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Sk³adnia: %s NOWY_ROOT [POLECENIE...]\n"
+" albo: %s OPCJA\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"Uruchomienie polecenia w katalogiem root ustawionym na NOWY_ROOT.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"Je¿eli nie jest podane ¿adne polecenie, uruchamiany jest ``${SHELL} -i''\n"
+"(domy¶lnie: /bin/sh).\n"
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "nie mo¿na zmieniæ katalogu root na %s"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "nie mo¿na przej¶æ do katalogu root"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "nie mo¿na uruchomic polecenia %s"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: za d³ugi plik"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Sk³adnia: %s [PLIK]...\n"
+" albo: %s [OPCJA]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr "Wypisanie sumy CRC i liczby bajtów ka¿dego PLIKU.\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Sk³adnia: %s [OPCJA]... PLIK1 PLIK2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr "Porównanie posortowanych plików PLIK1 i PLIK2 linia po linii.\n"
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+"\n"
+"Bez opcji wypisuje wyniki w trzech kolumnach. Pierwsza zawiera linie\n"
+"wystêpuj±ce tylko w PLIKU1, druga - tylko w PLIKU2, trzecia - wystêpuj±ce w\n"
+"obu plikach.\n"
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"\n"
+" -1 bez pokazania linii, które s± tylko w PLIKU1\n"
+" -2 bez pokazania linii, które s± tylko w PLIKU2\n"
+" -3 bez pokazania linii, które s± w obu plikach\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "nie uda³o siê zachowaæ w³asno¶ci %s"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr "nie uda³o siê znale¼æ pliku %s"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "nie uda³o siê zachowaæ autorstwa %s"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "nie mo¿na otworzyæ %s do czytania"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "nie mo¿na wykonaæ fstat na %s"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "plik %s zosta³ ominiêty, bo zosta³ zmieniony w trakcie kopiowania"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "nie mo¿na usun±æ %s"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "usuniêty %s\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "nie mo¿na utworzyæ zwyk³ego pliku %s"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "czytanie %s"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "nie mo¿na wykonaæ lseek na %s"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "zapis %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "zachowanie czasu %s"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "zamykanie %s"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: zamazanie %s, obej¶æ uprawnienia %04lo? "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: zamazaæ %s? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (kopia zapasowa: %s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "katalog %s zosta³ pominiêty"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "uwaga: plik ¼ród³owy %s pojawi³ siê wiêcej ni¿ raz"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s i %s to ten sam plik"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "nie mo¿na zamazaæ nie-katalogu %s katalogiem %s"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "nie mo¿na zamazaæ w³a¶nie utworzonego %s plikiem %s"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "nie mo¿na zamazaæ katalogu %s nie-katalogiem"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "nie mo¿na przenie¶æ katalogu do nie-katalogu: %s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr ""
+"utworzenie kopii zapasowej %s zniszczy³oby ¿ród³o; %s nie zosta³ "
+"przeniesiony"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr ""
+"utworzenie kopii zapasowej %s zniszczy³oby ¿ród³o; %s nie zosta³ skopiowany"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "nie mo¿na utworzyæ kopii zapasowej %s"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "nie mo¿na skopiowaæ katalogu %s do siebie samego %s"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "nie mo¿na utworzyæ dowi±zania zwyk³ego %s do katalogu %s"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "nie mo¿na utworzyæ dowi±zania zwyk³ego %s do %s"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "nie mo¿na przenie¶æ %s do w³asnego podkatalogu %s"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "nie mo¿na przenie¶æ %s do %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+"nie uda³o siê przeniesienie miêdzy urz±dzeniami: %s do %s; nie uda³o siê "
+"usunaæ pliku docelowego"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "nie mo¿na skopiowaæ cyklicznego dowi±zania symbolicznego %s"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr ""
+"%s: mo¿na zrobiæ tylko wzglêdne dowi±zanie symboliczne w bie¿±cym katalogu"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "nie mo¿na utworzyæ dowi±zania symbolicznego %s do %s"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "nie mo¿na utworzyæ dowi±zania %s"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "nie mo¿na utworzyæ potoku %s"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "nie mo¿na utworzyæ pliku specjalnego %s"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "nie mo¿na przeczytaæ dowi±zania symbolicznego %s"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "nie mo¿na utworzyæ dowi±zania symbolicznego %s"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s to nieznany typ pliku"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "nie mo¿na przywróciæ kopii zapasowej %s"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (przywrócenie kopii zapasowej)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Sk³adnia: %s [OPCJA]... [-T] ¬RÓD£O CEL\n"
+" albo: %s [OPCJA]... ¬RÓD£O... KATALOG\n"
+" albo: %s [OPCJA]... -t KATALOG ¬RÓD£O...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Skopiowanie ¬RÓD£A do CELU lub ¬RÓD£A/¬RÓDE£ do KATALOGU.\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Argumenty obowi±zkowe dla opcji d³ugich obowi±zuj± równie¿ dla krótkich.\n"
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive to samo co -dpR\n"
+" --backup[=TRYB] robienie kopii zapasowej ka¿dego "
+"istniej±cego\n"
+" pliku docelowego\n"
+" -b jak --backup, ale bez podawania argumentu\n"
+" --copy-contents kopiowanie zawarto¶ci pliku specjalnego w\n"
+" przypadku rekursji\n"
+" -d to samo co --no-dereference --preserve=link\n"
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" -f, --force kasowanie istniej±cych plików docelowych "
+"je¿eli\n"
+" nie daj± siê otworzyæ\n"
+" -i, --interactive pytanie przed zamazaniem\n"
+" -H rozwi±zywanie dowi±zañ symbolicznych\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+" -l, --link ³±cza zwyk³e zamiast kopiowania\n"
+" -L, --dereference rozwijanie ³±cz symbolicznych\n"
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr " -P, --no-dereference bez rozwijania ³±cz symbolicznych\n"
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -p to samo co --preserve=mode,ownership,"
+"timestamps\n"
+" --preserve[=LISTA_ATR] zachowanie podanych atrybutów, je¿eli to\n"
+" mo¿liwe (domy¶lnie: mode (uprawnienia),\n"
+" ownership (w³a¶ciciel, grupa), timestamps\n"
+" (czasy); je¿eli mo¿liwe, to dodatkowych\n"
+" atrybutów: links (dowi±zania), all "
+"(wszystkie))\n"
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=LISTA_ATR bez zachowania podanych atrybutów\n"
+" --parents u¿ycie pe³nej ¶cie¿ki ¼ród³owej KATALOG\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive kopiowanie rekursywnie podkatalogów\n"
+" --remove-destination usuniêcie ka¿dego istniej±cego pliku "
+"docelowego\n"
+" przed prób± jego otwarcia (por. z --force)\n"
+
+#: src/cp.c:205
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --sparse=GDY sterowanie tworzeniem plików rzadkich\n"
+" --strip-trailing-slashes skasowanie ewentualnych koñcowych uko¶ników "
+"z\n"
+" nazw argumentów ¬RÓD£OWYCH\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link dowi±zywanie symboliczne zamiast kopiowania\n"
+" -S, --suffix=ROZSZERZENIE zmiana domy¶lnego rozszerz. kopii zapasowej\n"
+" -t, --target-directory=KATALOG skopiowanie wszystkich ¬RÓDE£ do KATALOGU\n"
+" -T, --no-target-directory traktowanie CELU jak zwyk³ego pliku\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update kopiowanie tylko plików, dla których ¬RÓD£O\n"
+" jest nowsze ni¿ CEL albo brakuje CELU\n"
+" -v, --verbose wyja¶nianie co siê dzieje\n"
+" -x, --one-file-system pozostanie w jednym systemie plików\n"
+"\n"
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"Domy¶lnie pliki rzadkie s± wykrywane prost± heurystyk± i odpowiedni\n"
+"plik CEL jest tworzony te¿ jako rzadki. Takie zachowanie jest wybierane\n"
+"przez --sparse=auto. Podaj --sparse=always (zawsze) ¿eby utworzyæ rzadki\n"
+"plik CEL zawsze gdy plik ¬RÓD£OWY zawiera wystarczaj±co d³ug± sekwencjê "
+"zer.\n"
+"U¿yj --sparse=never (nigdy) ¿eby zakazaæ tworzenia plików rzadkich.\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Rozszerzenie nazwy kopii zapasowej to `~', je¿eli nie jest ustawione\n"
+"inaczej przez --suffix albo SIMPLE_BACKUP_SUFFIX. Sterowanie wersjami mo¿e "
+"byæ\n"
+"ustawione przez opcjê --backup albo przez zmienn± ¶rodowiska "
+"VERSION_CONTROL.\n"
+"Mo¿liwe warto¶ci:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off nigdy nie s± tworzone kopie zapasowe (nawet gdy jest "
+"podana\n"
+" opcja --backup)\n"
+" numbered, t tworzenie numerowanych kopii zapasowych\n"
+" existing, nil numerowane je¿eli takie ju¿ istniej±, je¿eli nie - proste\n"
+" simple, never tworzenie zawsze prostych kopii zapasowych\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"W przypadku specjalnym cp robi kopiê zapasow± ¬RÓD£A je¿eli s± podane\n"
+"opcje force i backup, a ¬RÓD£O i CEL s± t± sam± nazw± istniej±cego pliku\n"
+"zwyk³ego\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "nie uda³o siê zachowaæ czasu %s"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "nie uda³o siê zachowaæ uprawnieñ do %s"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "nie mo¿na utworzyæ katalogu %s"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s istnieje, ale nie jest katalogiem"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "dostêp do %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, c-format
+msgid "missing file operand"
+msgstr "brakuj±cy argument plikowy"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, c-format
+msgid "missing destination file operand after %s"
+msgstr "brakuj±cy plik docelowy po %s"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+"Nie mo¿na u¿ywaæ razem --target-directory (-t) i --no-target-directory (-T)"
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, c-format
+msgid "target %s is not a directory"
+msgstr "cel %s nie jest katalogiem"
+
+#: src/cp.c:697
+#, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "z opcj± --parents cel musi byæ katalogiem"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr "opcja --reply jest przestarza³a; u¿ywaj -i albo -f"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, c-format
+msgid "multiple target directories specified"
+msgstr "podano wiele katalogów docelowych"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "nie mo¿na zrobiæ dowi±zania symbolicznego i zwyk³ego równocze¶nie"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "rodzaj kopii zapasowej"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "dane wej¶ciowe zniknê³y"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: numer linii spoza zakresu"
+
+#: src/csplit.c:709
+#, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: %s: numer linii spoza zakresu"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr " przy powtórzeniu %s\n"
+
+#: src/csplit.c:755
+#, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: %s: nie pasuje"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "b³±d szukania wyra¿enia regularnego"
+
+#: src/csplit.c:984
+#, c-format
+msgid "write error for %s"
+msgstr "b³±d pisania dla %s"
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: po ograniczniku powinna byæ liczba ca³kowita"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: '}' jest wymagany w liczniku powtórzeñ"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: miêdzy `{' a `}' musi byæ liczba ca³kowita"
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: brak zamykaj±cego ogranicznika `%c'"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: b³êdne wyra¿enie regularne: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: b³êdny wzorzec"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: numer linii musi byæ wiêkszy od zera"
+
+#: src/csplit.c:1172
+#, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "numer linii %s jest mniejszy ni¿ numer linii poprzedzaj±cej, %s"
+
+#: src/csplit.c:1178
+#, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "uwaga: numer linii %s jest taki sam jak numer linii poprzedzaj±cej"
+
+#: src/csplit.c:1231
+#, c-format
+msgid "invalid format width"
+msgstr "b³êdna szeroko¶æ formatu"
+
+#: src/csplit.c:1252
+#, c-format
+msgid "invalid format precision"
+msgstr "b³±d specyfikacja precyzji w formacie"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "brak okre¶lenia konwersji w rozszerzeniu"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "b³êdne okre¶lenie konwersji w rozszerzeniu: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "b³êdne okre¶lenie konwersji w rozszerzeniu: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "za du¿o okre¶leñ konwersji %% w rozszerzeniu"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "brak okre¶lenia konwersji %% w rozszerzeniu"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: b³êdna liczba"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Sk³adnia: %s [OPCJA]... PLIK WZORZEC...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"Zapisanie kawa³ków PLIKU oddzielonych przez WZORCE do plików `xx01', "
+"`xx02',\n"
+"..., i podanie na standardowym wyj¶ciu liczby bajtów w ka¿dym kawa³ku.\n"
+"\n"
+
+#: src/csplit.c:1486
+#, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=FORMAT u¿ycie FORMATU sprintf zamiast %02d\n"
+" -f, --prefix=PRZEDROSTEK u¿ycie PRZEDROSTKA zamiast `xx'\n"
+" -k, --keep-files bez kasowania plików wyj¶ciowych w razie "
+"b³êdów\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=CYFRY u¿ycie podanej liczby CYFR zamiast dwóch\n"
+" -s, --quiet, --silent bez podawania liczby bajtów w plikach "
+"wyj¶ciowych\n"
+" -z, --elide-empty-files usuniêcie pustych plików wyj¶ciowych\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"Je¿eli PLIK to -, czytane jest standardowe wej¶cie. Mo¿liwe WZORCE:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" LICZBA_CA£KOWITA kopiowanie do podanej linii o numerze "
+"LICZBA_CA£KOWITA,\n"
+" oprócz tej linii\n"
+" /REGEXP/[PRZESUNIÊCIE] kopiowanie do pasuj±cej linii, oprócz tej linii\n"
+" %REGEXP%[PRZESUNIÊCIE] przeskoczenie do pasuj±cej linii, ale bez niej "
+"samej\n"
+" {LICZBA_CA£KOWITA} powtórzenie poprzedniego wzorca podan± liczbê "
+"razy\n"
+" {*} powtórzenie poprzedniego wzorca tyle razy ile siê "
+"da\n"
+"\n"
+"PRZESUNIÊCIE linii musi siê sk³adaæ z `+' albo `-' oraz liczby ca³kowitej.\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Sk³adnia: %s [OPCJA]... [PLIK]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"Wypisywanie wybranych czê¶ci linii z ka¿dego PLIKU na standardowe wyj¶cie.\n"
+"\n"
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=LISTA wypisanie tylko tych bajtów\n"
+" -c, --characters=LISTA wypisanie tylko tych znaków\n"
+" -d, --delimiter=OGRANICZNIK u¿ycie OGRANICZNIKA zamiast TABa jako "
+"separatora\n"
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=LISTA wypisanie tylko tych pól oraz linii, które nie\n"
+" zawieraj± znaku ogranicznika, chyba ¿e podana "
+"jest\n"
+" opcja -s\n"
+" -n (ignorowane)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+" --complement dope³nienie zbioru wybranych bajtów, znaków albo "
+"pól\n"
+" zamiast nich samych\n"
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited bez wypisywania linii nie zawieraj±cych "
+"ogranicznika\n"
+" --output-delimiter=£AÑCUCH u¿ycie £AÑCUCHA jako separatora danych\n"
+" wyj¶ciowych, domy¶lnie u¿ywany jest separator\n"
+" danych wej¶ciowych\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+"\n"
+"U¿yæ mo¿na tylko jednej z opcji -b, -c albo -f. Ka¿da LISTA sk³ada siê z\n"
+"jednego zakresu lub wielu zakresów oddzielonych przecinkami. Przefiltrowane\n"
+"dane wej¶ciowe s± wypisywane w tym samym porz±dku, w jakim s± czytane i s±\n"
+"wypisywane tylko raz.\n"
+
+#: src/cut.c:227
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"Ka¿dy zakres to:\n"
+"\n"
+" N N-ty bajt, znak lub pole, liczone od 1\n"
+" N- od N-tego bajtu, znaku lub pola do koñca linii\n"
+" N-M od N-tego do M-tego (w³±cznie) bajtu, znaku lub pola\n"
+" -M od pierwszego do M-tego (w³±cznie) bajtu, znaku lub pola\n"
+"\n"
+"Je¿eli PLIK nie jest podany lub PLIK to -, czytane jest standardowe "
+"wej¶cie.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "b³êdna lista bajtów lub pól"
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr "przesuniêcie najtowe %s jest za du¿e"
+
+#: src/cut.c:472
+#, c-format
+msgid "field number %s is too large"
+msgstr "numer pola %s jest za du¿y"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "mo¿na podaæ tylko jeden typ listy"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "ogranicznik musi byæ pojedynczym znakiem"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "musisz podaæ listê bajtów, znaków albo pól"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "ogranicznik mo¿e byæ podany tylko dla operacji na polach"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"blokowanie wy¶wietlania linii bez ograniczników jest sensowne\n"
+"\ttylko dla operacji na polach"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "brakuj±ca lista pól"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "brakuj±ca lista pozycji"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Sk³adnia: %s [OPCJA]... [+FORMAT]\n"
+" albo: %s [-u|--utc|--universal] [MMDDggmm[[CC]RR][.ss]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"Wypisanie bie¿±cego czasu w podanym formacie albo ustawienie czasu "
+"systemowego.\n"
+" -d, --date=£AÑCUCH wypisanie czasu podanego przez £AÑCUCH, nie\n"
+" bie¿±cego (now)\n"
+" -f, --file=PLIKDAT jak --date, dla ka¿dej linii PLIKUDAT\n"
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+" -r, --reference=PLIK wy¶wietla czas ostatniej modyfikacji PLIKU\n"
+" -R, --rfc-822 wypisuje datê i czas zgodnie z RFC 2822\n"
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+" --rfc-3339=CZAS wypisuje data i czas w formacie RFC 3339.\n"
+" Dla osi±gniêcia ¿±danej dok³adno¶ci nale¿y\n"
+" podaæ CZAS=`date', `seconds' albo `ns'.\n"
+" Sk³adniki data i czas s± oddzielone przez\n"
+" pojedyncz± spacjê: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=£AÑCUCH ustawia czas podany w £AÑCUCHU\n"
+" -u, --utc, --universal wy¶wietla lub ustawia czas uniwersalny\n"
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"\n"
+"FORMAT steruje wyj¶ciem. Jedyna prawid³owa opcja w drugiej formie to\n"
+"u¿ycie czasu uniwersalnego. Rozpoznawane sekwencje:\n"
+"\n"
+" %% znak procenta %\n"
+" %a lokalny skrót nazwy dnia tygodnia (np. pon)\n"
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A lokalna pe³na nazwa dnia tygodnia (np. poniedzia³ek)\n"
+" %b lokalny skrót nazwy miesi±ca (np. sty)\n"
+" %B lokalna pe³na nazwa miesi±ca (np. styczeñ)\n"
+" %c lokalna data i czas (np. czw mar 03 23:05:25 MEST 2005)\n"
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C stulecie; jak %Y, ale bez dwóch ostantich cyfr (np. 21)\n"
+" %d dzieñ miesi±ca (np. 01)\n"
+" %D data; to samo co %m/%d/%y\n"
+" %e dzieñ miesi±ca uzupe³niony spacjami; to samo co $_d\n"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+" %F pa³na data; to samo co %Y-%m-%d\n"
+" %g dwie ostatnie cyfry roku odpowiadaj±ce numerowi tygodnia ISO (zobacz\n"
+" %G)\n"
+" %G rok odpowiadaj±cy numerowi tygodnia ISO (zob. %V); zwykle u¿yteczne\n"
+" tylko z %V\n"
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h to samo co %b\n"
+" %H godzina (00...23)\n"
+" %I godzina (01...12)\n"
+" %j dzieñ roku (001...366)\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k godzina ( 0...23)\n"
+" %l godzina ( 1...12)\n"
+" %m miesi±c (01...12)\n"
+" %M minuta (00...59)\n"
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+" %n znak nowej linii\n"
+" %N nanosekundy (000000000..999999999)\n"
+" %p lokalny odpowiednik AM lub PM; pusty je¿lei nieznany\n"
+" %P jak $p, ale ma³ymi literami\n"
+" %r czas w formacie 12-godzinnym (np. 11:11:04 PM)\n"
+" %R czas w formacie 24-godzinnym; to samo co %H:%M\n"
+" %s liczba sekund od godz. 00:00:00, 1 stycznia 1970 UTC\n"
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+" %S sekunda (00...60)\n"
+" %t tabulator poziomy\n"
+" %T czas; to samo co %H:%M:%S\n"
+" %u dzieñ tygodnia (1..7); 1 to poniedzia³ek\n"
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U numer tygodnia w roku, niedziela zaczyna tydzieñ (00...53)\n"
+" %V numer tygodnia ISO, poniedzia³ek zaczyna tydzieñ (01...53)\n"
+" %w numer dnia tygodnia (0...6), 0 oznacza niedzielê\n"
+" %W numer tygodnia w roku, poniedzia³ek zaczyna tydzieñ (00...53)\n"
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x lokalna reprezentacja daty (np. 12/31/99)\n"
+" %X lokalna reprezentacja czasu (np. 21:13:48)\n"
+" %y dwie ostatnie cyfry roku (00...99)\n"
+" %Y rok\n"
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+" %z strefa czasowa liczbowo +hhmm (np. -0400)\n"
+" %:z strefa czasowa liczbowo +hh:mm (np. -04:00)\n"
+" %::z strefa czasowa liczbowo +hh:mm:ss (np. -04:00:00)\n"
+" %:::z strefa czasowa liczbowo z : dla sprecyzowania dok³adno¶ci (np. -"
+"04,\n"
+" +05:30)\n"
+" %Z literowy skrót strefy czasowej (np. EDT)\n"
+"\n"
+"Domy¶lnie numeryczne pola daty s± dope³niane zerami.\n"
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+"Nastêpuj±ce opcjonalne flagi mog± byæ podane po `%':\n"
+"\n"
+" - (my¶lnik) bez dope³niania\n"
+" _ (podkre¶lenie) dope³nienie odstêpami\n"
+" 0 (zero) dope³nienie zerami\n"
+" ^ u¿ywanie wielkich liter je¿eli to mo¿liwe\n"
+" # u¿ycie ma³ych liter zamiast wielkich i odwotnie, je¿eli to mo¿liwe\n"
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+"\n"
+"Po dowolnej fladze mo¿e opcjonalnie wyst±piæ szeroko¶æ pola w postaci "
+"liczby\n"
+"dziesiêtnej, potem opcjonalny modyfikator:\n"
+"E - ¿eby u¿yæ alternatywnej reprezentacji lokalnej albo\n"
+"O - ¿eby u¿yæ alternatywnych symboli numerycznych, je¿eli s± dostepne\n"
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "standardowe wej¶cie"
+
+#: src/date.c:297 src/date.c:517
+#, c-format
+msgid "invalid date %s"
+msgstr "b³êdna data: %s"
+
+#: src/date.c:408 src/date.c:442
+#, c-format
+msgid "multiple output formats specified"
+msgstr "podano wiele formatów wyj¶ciowych"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "opcje specyfikuj±ce daty do wy¶wietlenia wzajemnie siê wykluczaj±"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr "opcje wy¶wietlaj±ce i ustawiaj±ce czas nie mog± byæ u¿ywane razem"
+
+#: src/date.c:448
+#, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"brak znaku `+' na pocz±tku argumentu %s;\n"
+"Je¶li u¿yto opcji okre¶laj±cych datê/y, ka¿dy argument nie bêd±cy\n"
+"opcj± musi byæ ³añcuchem formatuj±cym i zaczynaæ siê od `+'"
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "ustawienie daty niemo¿liwe"
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "czas %s jest spoza zakresu"
+
+#: src/dd.c:404
+#, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Sk³adnia: %s [ARGUMENT]...\n"
+" albo: %s OPCJA\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"Kopiowanie pliku z przekszta³caniem i formatowaniem zgodnie z argumentami.\n"
+"\n"
+" bs=BAJTÓW ustawienie ibs=BAJTÓW i obs=BAJTÓW\n"
+" cbs=BAJTÓW przekszta³cenie tylu BAJTÓW za jednym razem\n"
+" conv=S£OWA_KL przekszta³cenie pliku wg listy s³ów kluczowych\n"
+" oddzielonych przecinkami\n"
+" count=BLOKÓW skopiowanie tylko tyle BLOKÓW z wej¶cia\n"
+" ibs=BAJTÓW czytanie tylu BAJTÓW naraz\n"
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=PLIK czytanie z PLIKU zamiast ze standardowego wej¶cia\n"
+" iflag=FLAGI czytanie zgodnie z podan± list±\n"
+" obs=BAJTÓW zapisanie tylu BAJTÓW naraz\n"
+" of=PLIK zapisanie do PLIKU zamiast do standardowego wyj¶cia\n"
+" oflag=FLAGI pisanie zgodnie z podan± list±\n"
+" seek=BLOKÓW przeskoczenie tylu BLOKÓW o rozmiarze ibs na wyj¶ciu\n"
+" skip=BLOKÓW przeskoczenie tylu BLOKÓW o rozmiarze ibs na wej¶ciu\n"
+" status=noxfer bez statystyki kopiowania\n"
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"BLOKI i BAJTY mog± mieæ nastêpuj±ce przyrostki mno¿±ce:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, itd. dla T, P, E, Z, Y.\n"
+"\n"
+"Ka¿de S£OWO_KL mo¿e byæ:\n"
+"\n"
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii z EBCDIC do ASCII\n"
+" ebcdic z ASCII do EBCDIC\n"
+" ibm z ASCII do alternatywnego EBCDIC\n"
+" block wyrównanie rekordów zakoñczonych znakami nowej linii spacjami\n"
+" do rozmiaru cbs\n"
+" unblock zamiana koñcowych spacji w rekordach o rozmiarze cbs na znak\n"
+" nowej linii\n"
+" lcase zamiana wielkich liter na ma³e\n"
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+" nocreat bez tworzenia pliku wyj¶ciowego\n"
+" excl zakoñczenie je¿eli plik wyj¶ciowy ju¿ istnieje\n"
+" notrunc bez skrócenia pliku wyj¶ciowego\n"
+" ucase zamiana ma³ych liter na wielkie\n"
+" swab zamiana ka¿dej pary bajtów\n"
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+" noerror kontynuowanie mimo b³êdów czytania\n"
+" sync dope³nienie ka¿dego bloku wej¶ciowego zerami do rozmiaru ibs,\n"
+" je¿eli u¿yte z block albo unblock, dope³nienie spacjami zamiast\n"
+" NULami\n"
+" fdatasync wymuszenie fizycznego zapisu danych przed zakoñczeniem\n"
+" fsync jak fdatasync, ale te¿ dla metadanych\n"
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+"\n"
+"Do FLAG nale¿±:\n"
+"\n"
+" append tryb dopisywania (ma sens tylko dla wyj¶cia)\n"
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr " direct dane zapisywane przez bezpo¶rednie I/O\n"
+
+#: src/dd.c:468
+msgid " directory fail unless a directory\n"
+msgstr " directory b³±d je¿eli nie katalog\n"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr " dsync dane zapisywane przez synchronizowane I/O\n"
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr " sync podobnie, ale te¿ dla metadanych\n"
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr " nonblock u¿ycie nie blokuj±cego I/O\n"
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr " noatime bez aktualizacji czasu dostêpu\n"
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr " noctty bez przyporz±dkowywania terminala steruj±cego - pliku\n"
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr " nofollow bez rozwijania dowi±zañ symbolicznych\n"
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr " nolinks b³±d je¿eli wielokrotnie do³±czony\n"
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr " binary u¿ycie binarnego I/O dla danych\n"
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr " text u¿ycie tekstowego I/O dla danych\n"
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+"\n"
+"Wys³anie sygna³u %s do dzia³aj±cego programu `dd' powoduje wypisanie\n"
+"statystyki wej¶cia i wyj¶cia na standardowym wyj¶ciu b³êdów i kontynuacjê\n"
+"kopiowania.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+"%<PRIuMAX>+%<PRIuMAX> przeczytanych recordów\n"
+"%<PRIuMAX>+%<PRIuMAX> zapisanych recordów\n"
+
+#: src/dd.c:553
+#, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "%<PRIuMAX> obciêty rekord\n"
+msgstr[1] "%<PRIuMAX> obciête rekordy\n"
+msgstr[2] "%<PRIuMAX> obciêtych rekordów\n"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] "skopiowany %<PRIuMAX> bajt (%s)"
+msgstr[1] "skopiowane %<PRIuMAX> bajty (%s)"
+msgstr[2] "skopiowane %<PRIuMAX> bajtów (%s)"
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr "nieskoñczenie wiele B"
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ", %g s, %s/s\n"
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "zamykanie pliku wej¶ciowego %s"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "zamkniêcie pliku wyj¶ciowego %s"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "zapis do %s"
+
+#: src/dd.c:886
+#, c-format
+msgid "unrecognized operand %s"
+msgstr "nierozpoznany argument %s"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "b³êdna konwersja: %s"
+
+#: src/dd.c:900
+#, c-format
+msgid "invalid input flag: %s"
+msgstr "b³êdna flaga wej¶ciowa: %s"
+
+#: src/dd.c:903
+#, c-format
+msgid "invalid output flag: %s"
+msgstr "b³êdna flaga wyj¶ciowa: %s"
+
+#: src/dd.c:906
+#, c-format
+msgid "invalid status flag: %s"
+msgstr "b³êdna flaga stanu: %s"
+
+#: src/dd.c:942
+#, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "nierozpoznany argument %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "b³êdna liczba %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr "nie mo¿na podawaæ równocze¶nie ascii, ebcdic, ibm"
+
+#: src/dd.c:973
+#, c-format
+msgid "cannot combine block and unblock"
+msgstr "nie mo¿na u¿yæ block i unblock równocze¶nie"
+
+#: src/dd.c:975
+#, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "nie mo¿na u¿yæ razem lcase i ucase"
+
+#: src/dd.c:977
+#, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "nie mo¿na u¿yæ razem excl i nocreat"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"uwaga: ominiêcie b³êdu dzia³ania lseek w j±drze dla pliku (%s)\n"
+" o mt_type=0x%0lx - zobacz listê typów w <sys/mtio.h>"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, c-format
+msgid "%s: cannot seek"
+msgstr "%s: nie mo¿na ustawiæ pozycji"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr "przepe³nienie licznika pozycji w czasie czytanie pliku %s"
+
+#: src/dd.c:1229
+#, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "uwaga: b³êdna pozycja w pliku po nieudanym czytaniu"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr "nie uda³o siê obej¶æ b³êdu j±dra"
+
+#: src/dd.c:1376
+#, c-format
+msgid "setting flags for %s"
+msgstr "ustawienie flag dla %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr "nieudany fdatasync dla %s"
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr "nieudany fsync dla %s"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "otwieranie %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+"za du¿a warto¶c pozycji w pliku: nie mo¿na obci±æ pliku do d³ugo¶ci seek=%"
+"<PRIuMAX> (%lu bajtowych) bloków"
+
+#: src/dd.c:1730
+#, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "obciêcie pliku do %<PRIuMAX> bajtów w pliku wyj¶ciowym %s"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "System plików Typ"
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "System plików "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " iwêz³y u¿yteI wolneI %%u¿.I"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " rozm. u¿yte dost. %%u¿."
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " rozm. u¿yte dost. %%u¿."
+
+#: src/df.c:165
+#, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " bl.%s-B u¿yte dostêpne pojemno¶æ"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " bl.%4s B u¿yte dostêpne %%u¿."
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " zamont. na\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "nie mo¿na odczytaæ bie¿±cego katalogu"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "nie mo¿na przej¶æ do katalogu %s"
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "nie mo¿na odczytaæ danych bie¿±cego katalogu (obecnie %s)"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"Pokazuje informacje o systemie plików, w którym jest ka¿dy z PLIKÓW, "
+"domy¶lnie\n"
+"o wszystkich systemach plików.\n"
+"\n"
+
+#: src/df.c:749
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all pokazanie specjalnych systemów plików\n"
+" -B, --block-size=ROZMIAR u¿ycie bloków o podanym ROZMIARZE w bajtach\n"
+" -h, --human-readable rozmiary w formacie czytelnym dla ludzi (np. 1K 234M "
+"2G)\n"
+" -H, --si podobnie, ale z u¿yciem potêg 1000, nie 1024\n"
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes wypisanie informacji o i-wêz³ach zamiast o blokach\n"
+" -k jak --block-size=1K\n"
+" -l, --local ograniczenie spisu do lokalnych systemów plików\n"
+" --no-sync bez wywo³ania sync przed pobraniem informacji o\n"
+" systemach plików (domy¶lnie)\n"
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability u¿ycie formatu zgodnego z POSIX-em\n"
+" --sync wywo³anie sync przed pobraniem informacji\n"
+" -t, --type=TYP pokazanie tylko systemów plików tego TYPU\n"
+" -T, --print-type wypisanie typów systemów plików\n"
+" -x, --exclude-type=TYP pokazanie tylko systemów plików nie tego TYPU\n"
+" -v (ignorowane)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"ROZMIAR mo¿e byæ podany jako (opcjonalnie jako liczba ca³kowita z\n"
+"przyrostkiem): kB 1000, K 1024, MB 1000*1000, M 1024*1024 itd. dla G, T, P,\n"
+"E, Z, Y.\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr "opcja --kilobytes jest przestarza³a; u¿ywaj -k"
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "typ systemu plików %s równocze¶nie wybrany i wykluczony"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Uwaga: "
+
+#: src/df.c:943
+#, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%snie mo¿e przeczytaæ tablicy zamontowanych systemów plików"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr "nie zosta³y przetworzone ¿adne systemy plików"
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Sk³adnia: %s [OPCJA]... [PLIK]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Wypisanie poleceñ ustawiaj±cych zmienn± ¶rodowiskow± LS_COLORS.\n"
+"\n"
+"Ustalenie formatu:\n"
+" -b, --sh, --bourne-shell w kodzie pow³oki Bourne'a\n"
+" -c, --csh, --c-shell w kodzie pow³oki C\n"
+" -p, --print-database wypisanie warto¶ci domy¶lnych\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"Je¿eli jest podany PLIK, jest czytany dla okre¶lenia jakie kolory s± u¿yte\n"
+"z jakimi rozszerzeniami. W przeciwnym wypadku u¿yta jest wkompilowana baza\n"
+"danych. Szczegó³y formatu tych plików mo¿na zobaczyæ przez\n"
+"`dircolors --print-database'.\n"
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s:%lu: b³êdna linia, brakuje drugiego s³owa"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu: nierozpoznane s³owo kluczowe %s"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<wewnêtrzne>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"opcje w³±czaj±ce wy¶wietlanie wewnêtrznej bazy dircolors i wybranie sk³adni\n"
+"pow³oki wykluczaj± siê wzajemnie"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+"Argumenty plikowe nie mog± byæ u¿yte razem z opcj± --print-database (-p)."
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "Brak zmiennej ¶rodowiskowej SHELL i opcji typu pow³oki"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Sk³adnia: %s NAZWA\n"
+" albo: %s OPCJA\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"Wy¶wietlenie NAZWY bez ostatniego /sk³adnika; je¶li NAZWA nie zawiera "
+"znaków\n"
+"`/', wy¶wietla `.' (co oznacza katalog bie¿±cy).\n"
+"\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+"\n"
+"Przyk³ady:\n"
+" %s /usr/bin/sort Wynik: \"/usr/bin\".\n"
+" %s stdio.h Wynik: \".\".\n"
+
+#: src/du.c:279 src/wc.c:108
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Sk³adnia: %s [OPCJA]... [PLIK]...\n"
+" albo: %s [OPCJA]... --files0-from=P\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"Podsumowuje zajêto¶æ dysku przez ka¿dy PLIK, rekursywnie dla katalogów.\n"
+"\n"
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+" -a, --all podanie podliczenia dla plików, nie samych "
+"katalogów\n"
+" --apparent-size podanie rozmiarów pozornych zamiast zu¿ycia dysku;\n"
+" chocia¿ rozmiar pozorny jest zwykle mniejszy, "
+"mo¿e\n"
+" byæ te¿ wiêkszy z powodu dziur (plików rzadkich -\n"
+" sparse), wewnêtrznej fragmentacji, bloków "
+"po¶rednich\n"
+" itp.\n"
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+" -B, --block-size=ROZM u¿ycie bloków o podanym ROZMIARZE w bajtach\n"
+" -b, --bytes równowa¿ne `--apparent-size --block-size=1'\n"
+" -c, --total wypisanie podsumowania ca³o¶ci\n"
+" -D, --dereference-args rozwijanie PLIKÓW - dowi±zañ symbolicznych\n"
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+" --files0-from=F podsumowanie zajêto¶ci dysku przez pliki podane w\n"
+" pliku F (nazwy zakoñczone przez NUL)\n"
+" -H to samo co --si, ale wypisuje ostrze¿enie; "
+"znaczenie\n"
+" bêdzie nied³ugo zmienione na równowa¿ne\n"
+" --dereference-args (-D)\n"
+" -h, --human-readable rozmiary w formacie czytelnym dla ludzi (np. 1K "
+"234M\n"
+" 2G)\n"
+" --si podobnie, ale z u¿yciem potêg 1000, nie 1024\n"
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+" -k, --kilobytes to samo co --block-size=1K\n"
+" -l, --count-links liczenie rozmiaru wielokrotnie je¿eli plik ma\n"
+" dowi±zania zwyk³e\n"
+" -m jak dla --block-size=1M\n"
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference rozwiniêcie wszystkich dowi±zañ symbolicznych\n"
+" -P, --no-dereference bez rozwijania dowi±zañ symbolicznych (domy¶lnie)\n"
+" -0, --null po ka¿dej linii znak 0 zamiast znaku nowej linii\n"
+" -S, --separate-dirs bez uwzglêdniania rozmiarów podkatalogów\n"
+" -s, --summarize wypisanie tylko podsumowañ dla ka¿dego argumentu\n"
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system ominiêcie katalogów bêd±cych w innych systemach "
+"plików\n"
+" -X PLIK, --exclude-from=PLIK pominiêcie plików pasuj±cych do wzorców w "
+"PLIKU\n"
+" --exclude=WZÓR pominiêcie plików pasuj±cych do WZORU\n"
+" --max-depth=N wypisanie podsumowania dla katalogu (lub pliku -\n"
+" z --all) tylko je¿eli jest N lub mniej poziomów\n"
+" poni¿ej podanego jako argument komendy;\n"
+" --max-depth=0 jest tym samym co -summarize\n"
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+" --time pokazanie czasu ostatniej modyfikacji dowolnego "
+"pliku\n"
+" w katalogu albo dowolnego podkatalogu tego "
+"katalogu\n"
+" --time=S£OWO zamiast czasu modyfikacji pokazuje czas wg S£OWA:\n"
+" atime, access, use, ctime albo status\n"
+" --time-style=STYL pokazanie czasu w STYLU:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT jest interpretowany jak dla `date'\n"
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "razem"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+"UWAGA: u¿ywaj --si zamiast -H; znaczenie opcji -H nied³ugo zmieni siê na\n"
+"odpowiednik opcji --dereference-args (-D)"
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "b³êdny maksymalny poziom zag³êbienia %s"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr "opcja --megabytes jest przestarza³a; u¿ywaj -m"
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "nie mo¿na równocze¶nie tylko podsumowaæ i wypisaæ wszystkich danych"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "uwaga: --summarize jest tym samym co --max-depth=0"
+
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "uwaga: --summarize nie mo¿e byæ u¿yte razem z --max-depth=%lu"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+"Nie mo¿na podawaæ argumentów plikowych i opcji --files0-from równocze¶nie."
+
+#: src/du.c:960 src/wc.c:662
+#, c-format
+msgid "cannot read file names from %s"
+msgstr "nie mo¿na wczytaæ nazw plików z %s"
+
+#: src/du.c:1000 src/du.c:1003
+msgid "invalid zero-length file name"
+msgstr "b³êdna nazwa pliku o zerowej d³ugo¶ci"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Sk³adnia: %s [OPCJA]... [£AÑCUCH]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+"Powtórzenie £AÑCUCHA na standardowym wyj¶ciu.\n"
+"\n"
+" -n bez powtarzania koñcowego znaku nowej linii\n"
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+" -e w³±czenie interpretacji sekwencji z uko¶nikiem odwrotnym\n"
+" (domy¶lnie)\n"
+" -E wy³±czenie interpretacji sekwencji z uko¶nikiem odwrotnym\n"
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"Je¶li dzia³a opcja -e, s± rozpoznawane i interpretowane poni¿sze sekwencje:\n"
+"\n"
+" \\0NNN znak o kodzie ASCII wynosz±cym NNN (ósemkowo)\n"
+" \\\\ uko¶nik odwrotny (ang. backslash)\n"
+" \\a dzwonek (BEL)\n"
+" \\b znak cofania (ang. backspace)\n"
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c bez wy¶wietlania znaku nowej linii\n"
+" \\f wysuniêcie strony\n"
+" \\n znak nowej linii\n"
+" \\r znak powrotu karetki (CR)\n"
+" \\t tabulator poziomy\n"
+" \\v tabulator pionowy\n"
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr ""
+"Sk³adnia: %s [OPCJA]... [-] [NAZWA=WARTO¦Æ]... [POLECENIE [ARGUMENT]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Ustawienie ka¿dej zmiennej ¶rodowiskowej NAZWA warto¶ci WARTO¦Æ i wykonanie\n"
+"POLECENIA.\n"
+"\n"
+" -i, --ignore-environment zaczêcie z pustym ¶rodowiskiem\n"
+" -u, --unset=NAZWA usuniêcie zmiennej ze ¶rodowiska\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"Argument - implikuje -i. Je¶li nie podano POLECENIA, wy¶wietla otrzymane "
+"¶rodowisko.\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Zamiana TAB-ów we wszystkich PLIKACH na spacje, wynik na standardowym "
+"wyj¶ciu.\n"
+"Je¿eli PLIK nie jest podany lub PLIK to -, czytane jest standardowe "
+"wej¶cie.\n"
+"\n"
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial bez zamiany znaków tabulacji po znaku innym ni¿ "
+"odstêp\n"
+" -t, --tabs=ILE u¿ycie znaków tabulacji co ILE znaków, nie co 8\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+" -t, --tabs=LISTA u¿ycie listy pozycji TABów oddzielanych przecinkami\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr "pozycja TABa %s jest za du¿a"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "rozmiar TABa zawiera b³êdny znak(i): %s"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "rozmiar TABa nie mo¿e wynosiæ 0"
+
+# sizes or positions? - rzm
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "kolejne pozycje TABa musz± rosn±æ"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, c-format
+msgid "input line is too long"
+msgstr "za d³uga linia wej¶ciowa"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Sk³adnia: %s WYRA¯ENIE\n"
+" albo: %s OPCJA\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"\n"
+"Wypisanie warto¶ci WYRA¯ENIA na standardowym wyj¶ciu. Puste linie poni¿ej\n"
+"rozdzielaj± grupy o wzrastaj±cym pierwszeñstwie. WYRA¯ENIE ma postaæ:\n"
+"\n"
+" ARG1 | ARG2 ARG1 je¶li nie jest pusty ani równy 0, inaczej ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 je¶li ¿aden argument nie jest pusty ani 0, inaczej "
+"0\n"
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"\n"
+" ARG1 < ARG2 ARG1 jest mniejszy od ARG2\n"
+" ARG1 <= ARG2 ARG1 jest mniejszy lub równy ARG2\n"
+" ARG1 = ARG2 ARG1 jest równy ARG2\n"
+" ARG1 != ARG2 ARG1 nie jest równy ARG2\n"
+" ARG1 >= ARG2 ARG1 jest wiêkszy lub równy ARG2\n"
+" ARG1 > ARG2 ARG1 jest wiêkszy od ARG2\n"
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+"\n"
+" ARG1 + ARG2 arytmetyczna suma ARG1 i ARG2\n"
+" ARG1 - ARG2 arytmetyczna ró¿nica ARG1 i ARG2\n"
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+"\n"
+" ARG1 * ARG2 arytmetyczny iloczyn ARG1 i ARG2\n"
+" ARG1 / ARG2 arytmetyczny iloraz ARG1 przez ARG2\n"
+" ARG1 % ARG2 arytmetyczna reszta z dzielenia ARG1 przez ARG2\n"
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"\n"
+" £AÑCUCH : WYR_REG dopasowanie wyra¿enia regularnego WYR_REG do £AÑCUCHA\n"
+"\n"
+" match £AÑCUCH WYR_REG tak jak £AÑCUCH : WYR_REG\n"
+" substr £AÑCUCH POZ D£UGO¦Æ czê¶æ £AÑCUCHA na POZYCJI liczonej od 1\n"
+" index £AÑCUCH ZNAKI\t po³o¿enie jednego ze ZNAKÓW w £AÑCUCHU, lub 0\n"
+" length £AÑCUCH d³ugo¶æ £AÑCUCHA\n"
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+" + S£OWO S£OWO interpretowane jako ³añcuch znaków,\n"
+" nawet je¿eli jest to s³owo kluczowe, jak\n"
+" `match' albo operator jak '/'\n"
+"\n"
+" ( WYRA¯ENIE ) warto¶æ WYRA¯ENIA\n"
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"Wiêkszo¶æ operatorów musi byæ chroniona przed interpretacj± przez pow³okê\n"
+"znakiem `\\' lub cudzys³owami. Porównania s± arytmetyczne, je¶li obydwa\n"
+"ARGUMENTY s± liczbami, w przeciwnym wypadku - leksykograficzne.\n"
+"Dopasowania zwracaj± ³añcuch zgodny ze wzorcem zawartym pomiêdzy \\( i \\)\n"
+"lub 0; je¶li \\( i \\) nie zosta³y u¿yte, dopasowanie zwraca liczbê "
+"zgodnych\n"
+"znaków lub 0.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+"\n"
+"Status wyj¶ciowy jest zerem je¿eli WYRA¯ENIE nie ma warto¶ci null ani 0, 1 "
+"-\n"
+"je¿eli WYRA¯ENIE ma warto¶c null albo 0, 2 - je¿eli WYRA¯ENIE ma b³±d "
+"sk³adni,\n"
+"3 - je¿eli zosta³ wykryty inny b³±d\n"
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "b³±d sk³adni"
+
+#: src/expr.c:468 src/ptx.c:292
+#, c-format
+msgid "error in regular expression matcher"
+msgstr "b³±d procedury dopasowywania wyra¿eñ regularnych"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "argument nieliczbowy"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "dzielenie przez zero"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Sk³adnia: %s [LICZBA]...\n"
+" albo: %s OPCJA\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"Rozk³ada ka¿d± z LICZB na czynniki pierwsze.\n"
+"\n"
+
+#: src/factor.c:85
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+"Wypisuje rozk³ad ka¿dej z podanych LICZB ca³kowitych na czynniki pierwsze.\n"
+"Je¿eli argumenty nie s± podane, czyta je ze standardowego wej¶cia.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s jest za du¿a"
+
+#: src/factor.c:158
+#, c-format
+msgid "%s is not a valid positive integer"
+msgstr "%s nie jest poprawn± dodatni± liczb± ca³kowit±"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Sk³adnia: %s [-CYFRY] [OPCJA]... [PLIK]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"Przeformatowanie akapitów w PLIKU(ACH), wynik na standardowym wyj¶ciu.\n"
+"Je¿eli PLIK nie jest podany lub PLIK to `-', czytane jest standardowe "
+"wej¶cie.\n"
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin zachowanie wciêæ w pierwszych dwóch liniach\n"
+" -p, --prefix=ZNAKI przeformatowanie tylko linii maj±cych "
+"przedrostek\n"
+" ZNAKI, do³±czenie ZNAKÓW do przeformatowych "
+"linii\n"
+" -s, --split-only podzielenie d³ugich linii, ale bez wyrównania\n"
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph wciêcie pierwszej linii inne ni¿ drugiej\n"
+" -u, --uniform-spacing jedna spacja miêdzy s³owami, dwie miêdzy "
+"zdaniami\n"
+" -w, --width=ILE maksymalna szeroko¶æ linii (domy¶lnie 75 "
+"kolumn)\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+"b³êdna opcja -- %c; opcja -WIDTH jest rozpoznawana tylko jako pierwsza, "
+"u¿yj\n"
+"-w N zamiast"
+
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr "b³êdna szeroko¶æ: %s"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"£amanie linii w ka¿dym PLIKU wej¶ciowym (domy¶lnie standardowym wej¶ciu),\n"
+"wynik na standardowym wyj¶ciu.\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes liczenie bajtów zamiast kolumn\n"
+" -s, --spaces ³amanie na spacjach\n"
+" -w, --width=SZER u¿ycie SZER kolumn zamiast 80\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, c-format
+msgid "invalid number of columns: %s"
+msgstr "b³êdna liczba kolumn: %s"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Wypisanie 10 pierwszych linii ka¿dego PLIKU na standardowym wyj¶ciu.\n"
+"Dla wiêkszej liczby PLIKÓW ka¿dy kawa³ek ma nag³ówek z nazw±.\n"
+"Je¿eli PLIK nie jest podany lub PLIK to -, czytane jest standardowe "
+"wej¶cie.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+" -c, --bytes=[-]ILE wypisanie pierwszych ILE bajtów z ka¿dego pliku;\n"
+" z `-' - wypisanie wszystkich oprócz ostatnich "
+"ILE\n"
+" bajtów ka¿dego pliku\n"
+" -n, --lines=[-]ILE wypisanie pierwszych ILE linii zamiast 10\n"
+" z `-' - wypisanie wszystkich oprócz ostatnich "
+"ILE\n"
+" linii ka¿dego pliku\n"
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent bez wypisywania nag³ówków z nazwami plików\n"
+" -v, --verbose zawsze wypisywane s± nag³ówki z nazwami plików\n"
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"ROZMIAR mo¿e mieæ dodany mno¿nik: b dla 512, k dla 1024, m dla 1024*1024.\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "b³±d czytania %s"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "b³±d zapisu %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr "%s: plik siê za bardzo zmniejszy³"
+
+#: src/head.c:230 src/head.c:1046
+#, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s: ilo¶æ bajtów jest za du¿a"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: nie mo¿na ustawiæ pozycji wyj¶ciowej"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: nie mo¿na ustawiæ pozycji %s"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "nie mo¿na zmieniæ pozycji w pliku %s"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s jest tak du¿a, ¿e nie mo¿e zostaæ wyra¿ona"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "liczba linii"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "liczba bajtów"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "b³êdna liczba linii"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "b³êdna liczba bajtów"
+
+#: src/head.c:976 src/head.c:1034
+#, c-format
+msgid "invalid trailing option -- %c"
+msgstr "b³êdna opcja na koñcu -- %c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Sk³adnia: %s\n"
+" albo: %s OPCJA\n"
+"Wy¶wietla numeryczny, szesnastkowy identyfikator tego systemu.\n"
+"\n"
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Sk³adnia: %s [NAZWA]\n"
+" albo: %s OPCJA\n"
+"Wy¶wietlenie lub ustawienie nazwy tego systemu.\n"
+"\n"
+
+#: src/hostname.c:103
+#, c-format
+msgid "cannot set name to %s"
+msgstr "nie mo¿na ustawiæ nazwy systemu jako %s"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+"ustawienie nazwy systemu jest niemo¿liwe; ten system nie ma takiej mo¿liwo¶ci"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "uzyskanie nazwy systemu jest niemo¿liwe"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Sk³adnia: %s [OPCJA]... [U¯YTKOWNIK]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Wy¶wietla informacjê o U¯YTKOWNIKU lub o aktualnym u¿ytkowniku.\n"
+"\n"
+" -a ignorowane, dla zachowania kompatybilno¶ci z innymi "
+"wersjami\n"
+" -g, --group wy¶wietlenie tylko efektywnego identyfikatora grupy\n"
+" -G, --groups wy¶wietlenie pe³nej listy grup\n"
+" -n, --name wy¶wietlenie nazw zamiast numerów, dla -ugG\n"
+" -r, --real wy¶wietlenie rzeczywistego ID zamiast efektywnego, dla -"
+"ugG\n"
+" -u, --user wy¶wietlenie tylko efektywnego identyfikatora u¿ytkownika\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"Bez ¿adnych OPCJI wy¶wietla zestaw u¿ytecznych informacji, które uda³o siê\n"
+"zidentyfikowaæ.\n"
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "nie mo¿na wypisaæ tylko u¿ytkownika i tylko grupê równocze¶nie"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr ""
+"nie da siê wypisaæ tylko nazw lub rzeczywistych ID w domy¶lnym formacie"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Nie ma takiego u¿ytkownika"
+
+#: src/id.c:205
+#, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "nie mo¿na znale¼æ nazwy u¿ytkownika o ID %lu"
+
+#: src/id.c:229
+#, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "nie mo¿na znale¼æ nazwy grupy o ID %lu"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "uzyskanie pe³nej listy grup niemo¿liwe"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " grupy="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr "opcja obcinania (strip) nie mo¿e byæ u¿yta przy instalowaniu katalogu"
+
+#: src/install.c:321
+#, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "katalog docelowy nie mo¿e byæ podany przy instalowaniu katalogu"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "b³êdne uprawnienia %s"
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "nie mo¿na zmieniæ w³a¶ciciela na %s"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "nie mo¿na ustawiæ czasów %s"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "nie powiiod³o siê wywo³anie systemowe fork"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "nie uda³o siê uruchomiæ strip"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "czekanie nado %s [-d]"
+
+#: src/install.c:572
+#, fuzzy, c-format
+msgid "strip process terminated abnormally"
+msgstr "%s [-d] zakoñczone nieprawid³owo"
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "b³êdny u¿ytkownik %s"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "tworzenie katalogu %s"
+
+#: src/install.c:651
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Sk³adnia: %s [OPCJA]... -T ¬RÓD£O CEL\n"
+" albo: %s [OPCJA]... ¬RÓD£O... KATALOG\n"
+" albo: %s [OPCJA]... -t KATALOG ¬RóD£O...\n"
+" albo: %s [OPCJA]... -d KATALOG...\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"W pierwszych trzech formatach kopiowane jest ¬RÓD£O do CELU lub wiele "
+"¬RÓDE£\n"
+"do istniej±cego KATALOGU i ustawiane s± uprawnienia oraz w³a¶ciciel/grupa. "
+"W\n"
+"czwartym formacie tworzone s± wszystkie katalogi sk³adowe podanej ¶cie¿ki\n"
+"KATALOG(ÓW).\n"
+"\n"
+
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup[=TRYB] robienie kopii zapasowej przed zamazaniem pliku\n"
+" -b jak --backup, ale bez podawania argumentu\n"
+" -c (ignorowane)\n"
+" -d, --directory traktowanie wszystkich argumentów jako nazw "
+"katalogów;\n"
+" tworzenie katalogów sk³adowych podanych katalogów\n"
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D tworzenie wszystkich czê¶ci sk³adowych CELU, oprócz\n"
+" ostatniej, potem skopiowanie ¬RÓD£A do CELU\n"
+" -g, --group=GRUPA ustawienie GRUPY zamiast bie¿±cej grupy\n"
+" -m, --mode=UPRAWNIENIA ustawienie UPRAWNIEÑ (jak w chmod) zamiast rwxr-"
+"xr-x\n"
+" -o, --owner=W£A¦CICIEL ustawienie W£A¦CICIELA (tylko super-user)\n"
+
+#: src/install.c:681
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps ustawienie plikom docelowym czasów dostêpu i\n"
+" modyfikacji, jak w odpowiednich plikach ¬RÓD£OWYCH\n"
+" -s, --strip skasowanie tablicy symboli, tylko w 1 i 2 formacie\n"
+" -S, --suffix=ROZSZERZ zmiana domy¶lnego ROZSZERZENIA kopii zapasowej\n"
+" -v, --verbose wypisanie nazwy ka¿dego tworzonego katalogu\n"
+" -t, --target-directory=KATALOG skopiowanie wszystkich ¬RÓDE£ do KATALOGU\n"
+" -T, --no-target-directory traktowanie CELU jak zwyk³ego pliku\n"
+" -v, --verbose wypisanie nazwy ka¿dego tworzonego katalogu\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"Rozszerzenie nazwy kopii zapasowej to `~', je¿eli nie jest ustawione\n"
+"inaczej przez --suffix albo SIMPLE_BACKUP_SUFFIX. Traktowanie wersji mo¿e "
+"byæ\n"
+"ustawione przez opcjê --backup albo przez zmienn± ¶rodowiska "
+"VERSION_CONTROL.\n"
+"Mo¿liwe warto¶ci:\n"
+"\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"Dla ka¿dej pary linii z identycznymi polami ³±cz±cymi wypisywana jest linia\n"
+"na standardowym wyj¶ciu. Domy¶lnie pole ³±cz±ce jest pierwsze i oddzielone\n"
+"odstêpem. Gdy PLIK1 albo PLIK2 (nie oba) to -, czytane jest standardowe\n"
+"wej¶cie.\n"
+"\n"
+" -a NUMER wypisanie linii nie do pary z pliku NUMER, gdzie numer "
+"to\n"
+" 1 albo 2, odpowiadaj±cy PLIKOWI1 albi PLIKOWI2\n"
+" -e PUSTE zamiana brakuj±cych pól na wej¶ciu na PUSTE\n"
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case porównuj±c pola ignoruje ró¿nice miêdzy ma³ymi i "
+"wielkimi\n"
+" literami\n"
+" -j POLE równowa¿ne `-j 1 POLE -j 2 POLE'\n"
+" -o FORMAT zachowanie FORMATU przy tworzeniu linii wyj¶ciowej\n"
+" -t ZNAK u¿ycie ZNAKU jako separatora pól linii wej. i wyj.\n"
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v NUMER jak -a NUMER, ale bez wypisania po³±czonych linii "
+"wyj¶c.\n"
+" -1 POLE po³±czenie plików na tym POLU pliku 1\n"
+" -2 POLE po³±czenie plików na tym POLU pliku 2\n"
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"Je¿eli nie jest podana opcja -t ZNAK, spacje na pocz±tku linii oddzielaj±\n"
+"pola i s± ignorowane, w przeciwnym wypadku pola s± oddzielane przez\n"
+"ZNAK. POLE jest numerem pola liczonym od 1. FORMAT to jedna lub wiêcej\n"
+"specyfikacji oddzielonych przecinkami lub odstêpami, ka¿da w postaci\n"
+"`NUMER.POLE' albo `0'. Domy¶lny format wypisuje pole ³±cz±ce, pozosta³e\n"
+"pola z PLIKU1 i pozosta³e pola z PLIKU2, wszystkie oddzielone ZNAKIEM.\n"
+"\n"
+"Uwaga: PLIK1 i PLIK2 musza byc posortowane po polu ³±cz±cym.\n"
+"Np. dla `join-a' bez opcji u¿yj `sort -k 1b,1'.\n"
+
+#: src/join.c:617 src/join.c:812
+#, c-format
+msgid "invalid field number: %s"
+msgstr "b³êdny numer pola: %s"
+
+#: src/join.c:638 src/join.c:647
+#, c-format
+msgid "invalid field specifier: %s"
+msgstr "b³êdna specyfikacja pola: %s"
+
+#: src/join.c:654
+#, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "b³êdny numer pliku w specyfikacji pola: %s"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr "niekompatybilne pola ³±czenia %lu, %lu"
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr "konflikt ³añcuchów zastêpuj±cych puste pola"
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr "pusty TAB"
+
+#: src/join.c:870 src/sort.c:3031
+#, c-format
+msgid "multi-character tab %s"
+msgstr "wieloznakowy TAB %s"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr "niekompatybilne TABy"
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "oba pliki nie mog± byæ standardowym wej¶ciem"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"Sk³adnia: %s [-s SYGNA£ | -SYGNA£] PID...\n"
+" albo: %s -l [SYGNA£]...\n"
+" albo: %s -t [SYGNA£]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+"Wysy³a sygna³y do procesów albo pokazuje listê sygna³ów.\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+" -s, --signal=SYGNA£, -SYGNA£\n"
+" nazwa albo numer SYGNA£U do wys³ania\n"
+" -l, --list lista nazw sygna³ów albo konwersja nazw na/z numery\n"
+" -t, --table tablica informacji o sygna³ach\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+"\n"
+"SYGNA£ mo¿e byæ podany przez nazwê jak `HUP' albo numer jak `1' albo jako\n"
+"status wyj¶ciowy procesu zakoñczonego przez sygna³.\n"
+"PID jest liczb± ca³kowit±, je¿eli ujemn±, to oznacza grupê procesów.\n"
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: b³êdny sygna³"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: b³êdny identyfikator procesu"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "b³êdna opcja -- %c"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: podano wiele sygna³ów"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "podano wiele opcji -l lub -t"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "nie mo¿na podaæ sygna³u równocze¶nie z opcjami -l lub -t"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr "brak identyfikatora procesu"
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Sk³adnia: %s PLIK1 PLIK2\n"
+" albo: %s OPCJA\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+"U¿ycie funkcji link do utworzenia dowi±zania o nazwie PLIK2 do istniej±cego "
+"PLIKU1.\n"
+"\n"
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "nie mo¿na utworzyæ dowi±zania %s do %s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+"%s: uwaga: zrobienie zwyk³ego dowi±zania do symbolicznego nie jest przeno¶ne"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: nie mo¿na zrobiæ dowi±zania zwyk³ego do katalogu"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: nie mo¿na zamazaæ katalogu"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: zast±piæ %s? "
+
+#: src/ln.c:295
+#, c-format
+msgid "creating symbolic link %s"
+msgstr "tworzenie dowi±zania symbolicznego %s"
+
+#: src/ln.c:296
+#, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "tworzenie dowi±zania symbolicznego %s -> %s"
+
+#: src/ln.c:298
+#, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "tworzenie dowi±zania zwyk³ego %.0s%s"
+
+#: src/ln.c:301
+#, c-format
+msgid "creating hard link %s"
+msgstr "tworzenie dowi±zania zwyk³ego %s"
+
+#: src/ln.c:302
+#, c-format
+msgid "creating hard link %s => %s"
+msgstr "tworzenie dowi±zania zwyk³ego %s => %s"
+
+#: src/ln.c:324
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Sk³adnia: %s [OPCJA]... [-T] CEL NAZ_DOWI¡Z (format 1-szy)\n"
+" albo: %s [OPCJA]... CEL (format 2-gi)\n"
+" albo: %s [OPCJA]... ¬RÓD£O... KATALOG (format 3-ci)\n"
+" albo: %s [OPCJA]... -t KATALOG... CEL... (format 4-ty)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"W 1-szej formie - utworzenie dowi±zania do CELU z nazw± NAZWA_DOWI¡ZANIA.\n"
+"W 2-giej formie - utworzenie dowi±zania do CELU w bie¿±cym katalogu.\n"
+"W 3-ciej i 4-tej formie - utworzenie ³±cza do ka¿dego CELU w KATALOGU.\n"
+"Domy¶lnie tworzone s± zwyk³e dowi±zania, symboliczne gdy jest u¿yta opcja\n"
+"--symbolic. Przy tworzeniu zwyk³ych dowi±zañ ka¿dy CEL musi istnieæ.\n"
+"\n"
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup[=TRYB] zrobienie kopii zapasowej przed skasowaniem\n"
+" -b jak --backup, ale bez argumentu\n"
+" -d, -F, --directory administrator mo¿e robiæ dowi±zania zwyk³e do\n"
+" katalogów (uwaga: prawdopodobnie bez\n"
+" powodzenia ze wzglêdu na ograniczenia\n"
+" systemowe obowi±zuj±ce nawet "
+"administratora)\n"
+" -f, --force skasowanie istniej±cych CELÓW bez pytania\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference je¿eli CEL jest dowi±zaniem symbolicznym do\n"
+" katalogu, traktowany jest jak zwyk³y plik\n"
+" -i, --interactive program pyta czy usun±æ CELE\n"
+" -s, --symbolic tworzenie dowi±zañ symbolicznych zamiast "
+"zwyk³ych\n"
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" -S, --suffix=ROZSZERZENIE zmiana domy¶lnego ROZSZERZENIA kopii "
+"zapasowej\n"
+" -t, --target-directory=KATALOG podanie KATALOGU, w którym maj± byæ\n"
+" tworzone dowi±zania\n"
+" -T, --no-target-directory traktowanie NAZWY_DOWIAZANIA jak zwyk³ego "
+"pliku\n"
+" -v, --verbose wypisanie nazw plików przed dowi±zaniem\n"
+
+#: src/ln.c:484
+#, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr ""
+"nie mo¿na u¿ywaæ równocze¶nie --target-directory i --no-target-directory"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Sk³adnia: %s [OPCJA]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"Wypisuje nazwê aktualnego u¿ytkownika.\n"
+"\n"
+
+#: src/logname.c:89
+#, c-format
+msgid "no login name"
+msgstr "brak nazwy u¿ytkownika"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%b %e %Y"
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%b %e %H:%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "ignorujê b³êdny rozmiar zmiennej ¶rodowiskowej QUOTING_STYLE: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "ignorujê b³êdn± d³ugo¶æ w zmiennej ¶rodowiskowej COLUMNS: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr "ignorujê b³êdny rozmiar tab-a w zmiennej ¶rodowiska TABSIZE: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "b³êdna szeroko¶æ linii: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "b³êdny rozmiar TAB-a: %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "b³êdny format stylu czasu %s"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "nierozpoznany prefiks: %s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "niezrozumia³a warto¶æ zmiennej ¶rodowiska LS_COLORS"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "nie mo¿na otworzyæ katalogu %s"
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "nie mo¿na ustaliæ urz±dzenia i i-wêz³a %s"
+
+#: src/ls.c:2353
+#, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "%s: nie bêdzie wylistowany katalog ju¿ wylistowany poprzednio"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "czytanie katalogu %s"
+
+#: src/ls.c:2410
+#, c-format
+msgid "closing directory %s"
+msgstr "zamykanie katalogu %s"
+
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "nie mo¿na porównaæ nazw plików %s i %s"
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"Wypisanie informacji o PLIKACH (domy¶lnie w katalogu bie¿±cym). Sortowane\n"
+"alfabetyczne, je¿eli nie jest podana ¿adna z opcji -cftuvSUX ani --sort.\n"
+"\n"
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all bez ukrywania plików zaczynaj±cych siê od .\n"
+" -A, --almost-all bez pokazania . ani ..\n"
+" --author z -l: wypisanie autora ka¿dego pliku\n"
+" -b, --escape wypisanie znaków niegraficznych ósemkowo\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=ROZMIAR u¿ycie bloków o podanym w bajtach ROZMIARZE\n"
+" -B, --ignore-backups bez pokazania plików koñcz±cych siê na ~\n"
+" -c z -lt: sortowanie wg i wypisanie ctime (czasu\n"
+" ostatniej modyfikacji danych o pliku)\n"
+" z -l: wypisanie ctime i sortowanie wg nazw\n"
+" w przeciwnym przypadku: sortowanie wg ctime\n"
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C wypisanie plików w kolumnach\n"
+" --color[=GDY] sterowanie u¿ycia kolorów rozró¿niaj±cych typy\n"
+" plików. GDY mo¿e byæ `never' (nigdy), "
+"`always'\n"
+" (zawsze) albo `auto' (automatyczne)\n"
+" -d, --directory pokazanie katalogów zamiast ich zawarto¶ci, "
+"bez\n"
+" rozwi±zywania dowi±zañ symbolicznych\n"
+" -D, --dired dane wyj¶ciowe dla trybu dired Emacsa\n"
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f bez sortowania, w³±czenie -aU, wy³±czenie -lst\n"
+" -F, --classify dopisanie znaków wskazuj±cych typ ka¿dego\n"
+" elementu (jednego z */=>@|)\n"
+" --file-type podobnie, ale oprócz `*'\n"
+" --format=S£OWO across (poziomo), odpowiada opcji -x, commas\n"
+" (oddzielone przecinkami) -m, horizontal\n"
+" (poziomo) -x, long (d³ugi, z dodatkowymi\n"
+" informacjami) -l, single-column (w jednej\n"
+" kolumnie) -1, verbose (d³ugi, z dodatkowymi\n"
+" informacjami) -l, vertical (pionowy, w\n"
+" kolumnach) -C\n"
+" --full-time jak -l --time-style=full-iso\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr " -g jak -l, ale nie pokazuje w³a¶ciciela\n"
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+" --group-directories-first\n"
+" pokazywane s± najpierw katalogi, potem pliki\n"
+
+#: src/ls.c:4322
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -G, --no-group bez pokazania informacji o grupach\n"
+" -h, --human-readable z opcj± -l podaje rozmiary w formacie "
+"czytelnym\n"
+" dla ludzi (np. 1K 234M 2G)\n"
+" --si podobnie, ale z u¿yciem potêg 1000, nie 1024\n"
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+" -H, --dereference-command-line\n"
+" rozwi±zywanie dowi±zañ symbolicznych podanych\n"
+" jako argumenty\n"
+" --dereference-command-line-symlink-to-dir\n"
+" rozwi±zywanie dowi±zañ symbolicznych podanych\n"
+" jako argumenty je¿eli wskazuj± na katalogi\n"
+" --hide=WZÓR bez wypisywania nazw pasuj±cych do WZORU\n"
+" (wy³±czane przez -a albo -A)\n"
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=S£OWO dodanie wska¼ników typów plików w stylu "
+"S£OWO:\n"
+" none (domy¶lnie), slash (-p), file-type\n"
+" (--file-type), classify (-F)\n"
+" -i, --inode pokazywanie numeru i-wêz³a ka¿dego pliku\n"
+" -I, --ignore=WZÓR bez pokazywania plików pasuj±cych do shellowego "
+"WZORU\n"
+" -k jak --block-size=1K\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l u¿ycie d³ugiego formatu wyj¶ciowego\n"
+" -L, --dereference pokazanie informacji o pliku wskazywanym przez\n"
+" dowi±zanie symboliczne zamiast informacji o\n"
+" samym dowi±zaniu\n"
+" -m pisanie do pe³nej szeroko¶ci, oddzielanie "
+"przecinkami\n"
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid jak -l, ale pokazanie UID i GID liczbowo\n"
+" -N, --literal wypisanie nazwy dok³adnie (bez specjalnego\n"
+" traktowania np. znaków steruj±cych)\n"
+" -o jak -l, ale bez informacji o grupie\n"
+" -p, --indicator-style=slash dodanie / do nazw katalogów\n"
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars pisanie ? zamiast znaków steruj±cych\n"
+" --show-control-chars pokazanie znaków niedrukowalnych (domy¶lnie, "
+"chyba\n"
+" ¿e program nazywa siê `ls' i pisze na "
+"terminalu)\n"
+" -Q, --quote-name ujêcie nazw w cudzys³owy\n"
+" --quoting-style=S£OWO zabezpieczenie znaków specjalnych w stylu "
+"S£OWO:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse odwrotny porz±dek sortowania\n"
+" -R, --recursive rekursywne listowanie katalogów\n"
+" -s, --size wypisanie liczby bloków zajêtych przez ka¿dy "
+"plik\n"
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S sortowanie wed³ug rozmiaru\n"
+" --sort=S£OWO sortowanie wg S£OWA zamiast wg nazw: none -U\n"
+" (wcale), extension -X (rozszerzenia), size -S\n"
+" (rozmiaru), time -t (czasu), version -v "
+"(wersji)\n"
+" --time=S£OWO z opcj± -l: pokazanie czasu okre¶lonego S£OWEM, "
+"a\n"
+" nie czasu modyfikacji: czas odczytu - atime,\n"
+" access, use - -u, czas zmiany informacji o "
+"pliku\n"
+" - ctime, status - -c; u¿ycie podanego czasu do\n"
+" sortowania gdy podano --sort=time\n"
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=STYL z opcj± -l: pokazanie czasów przy u¿yciu "
+"STYLU:\n"
+" full-iso, long-iso, iso, locale, +FORMAT\n"
+" FORMAT jest interpretowany jak w `date'. "
+"Je¿eli\n"
+" FORMAT to FORMAT1<zn.nowej linii>FORMAT2,\n"
+" FORMAT1 dotyczy dawniejszych plików, FORMAT2\n"
+" nowszych. Je¿eli STYL zaczyna siê od posix-,\n"
+" STYL jest u¿ywany tylko dla locale nie POSIX\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+" -t sortowanie wg czasu modyfikacji\n"
+" -T, --tabsize=KOLUMNA TAB co tyle KOLUMN, zamiast co 8\n"
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u z -lt: sortowanie wg i wypisanie czasu\n"
+" ostatniego dostêpu; z -l: wypisanie czasu\n"
+" dostêpu i sortowanie wg nazw; w przeciwnym\n"
+" przypadku: sortowanie wg czasu dostêpu\n"
+" -U bez sortowania, wypisanie kolejno¶ci jak w "
+"katalogu\n"
+" -v sortowanie wg wersji\n"
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -w, --width=KOLUMNA szeroko¶æ ekranu zamiast warto¶ci bie¿±cej\n"
+" -x wypisanie nazw w kolejnych liniach, nie "
+"kolumnach\n"
+" -X sortowanie alfabetyczne wg rozszerzeñ\n"
+" -1 listowanie po jednym pliku w linii\n"
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"Domy¶lnie kolory nie s± u¿ywane do rozró¿niania typów plików. Jest to\n"
+"równowa¿ne u¿yciu --color=none. U¿ycie opcji --color bez opcjonalnego\n"
+"argumentu GDY jest równowa¿ne u¿yciu --color=always. Z --color=auto\n"
+"nazwy s± kolorowane tylko je¿eli standardowe wyj¶cie jest przy³±czone do\n"
+"terminala (tty). Zmienna ¶rodowiskowa LS_COLORS wp³ywa na kolory i mo¿e\n"
+"byæ ³atwo ustawiona przez polecenie dircolors.\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+"\n"
+"Status wyj¶ciowy to 0 je¿eli polecenie zakoñczy³o siê poprawnie, 1 - je¿eli\n"
+"by³y drobne problemy, 2 - je¿eli by³y powa¿ne b³êdy\n"
+
+#: src/md5sum.c:150
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Sk³adnia: %s [OPCJA] [PLIK]...\n"
+"Wypisuje albo sprawdza sumy kontrolne %s (%d-bitowe).\n"
+"Bez podanego PLIKU albo gdy PLIK to -, czyta standardowe wej¶cie.\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+" -b, --binary czytanie plików w trybie binarnym (domy¶lne "
+"je¿eli\n"
+" nie jest czytane tty przez standardowe wej¶cie)\n"
+
+#: src/md5sum.c:164
+msgid " -b, --binary read in binary mode\n"
+msgstr " -b, --binary czytanie w trybie binarnym.\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr " -c, --check sprawdzanie sum %s zapisanych w PLIKACH\n"
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+" -t, --text czytanie plików w trybie tekstowym (domy¶lne "
+"je¿eli\n"
+" czytane jest tty przez standardowe wej¶cie)\n"
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+" -t, --text czytanie plików w trybie tekstowym (domy¶lnie)\n"
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"\n"
+"Nastêpuj±ce opcje s± przydatne tylko przy sprawdzaniu sum kontrolnych:\n"
+" --status bez wypisywania niczego, kod wyj¶cia przekazuje "
+"wynik\n"
+" -w, --warn ostrzeganie o niepoprawnie sformatowanych liniach "
+"sum\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"Sumy s± liczone wg opisu w %s. Przy sprawdzaniu dane wej¶ciowe powinny\n"
+"byæ takie jak wygenerowane przez ten program na wyj¶ciu. Domy¶lny tryb to\n"
+"wypisanie linii z sum± kontroln±, znaku wskazuj±cego typ (`*' binarny, ` '\n"
+"tekstowy) i nazwy ka¿dego PLIKU.\n"
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: za du¿o linii z sumami kontrolnymi"
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %<PRIuMAX>: nieprawid³owo sformatowana linia sumy kontrolnej %s"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: NIEPOWODZENIE otwarcia lub odczytu\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "NIEPOWODZENIE"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "DOBRZE"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: b³±d odczytu"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: brak poprawnie sformatowanych linii sumy kontrolnej %s"
+
+# that's a case where cases are needed in Slavic languages
+# podanych/podanego are plural/singular Genitive, I moved them to
+# next messages hoping it doesn't spoil anything - rzm
+#
+# see also md5sum.c:.... it is somewhat surprising that we need
+# such things only in two places in this file - rzm 960902
+#
+# Actually here we have two parameters. The second number influences case of
+# "listed files", the first one - case of "could not be read". - rzm 20051025
+#
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "UWAGA: %<PRIuMAX> z %<PRIuMAX> pliku nie móg³ byæ odczytany"
+msgstr[1] "UWAGA: %<PRIuMAX> z %<PRIuMAX> plików nie mog³o byæ odczytane"
+msgstr[2] "UWAGA: %<PRIuMAX> z %<PRIuMAX> plików nie mog³o byæ odczytane"
+
+# once more `of computed checksum(s)' is `wyliczonej sumy' or
+# `wyliczonych sum' in sing. or plural Genitive; how to handle? - rzm
+#
+# it is better now but the word `wyliczonych' should also change according
+# to the number too (what a horrible language! - but there are worse)
+# so I'm moving it to the changing part; fortunately it is Genitive
+# so we don't need to use two forms for plural (depending on number: nn[234]
+# are different that the other ones) - rzm 960902
+#
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "UWAGA: %<PRIuMAX> z %<PRIuMAX> policzonej sumy siê NIE zgadza"
+msgstr[1] "UWAGA: %<PRIuMAX> z %<PRIuMAX> policzonych sum siê NIE zgadza"
+msgstr[2] "UWAGA: %<PRIuMAX> z %<PRIuMAX> policzonych sum siê NIE zgadza"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"opcje --binary i --text nie maj± znaczenia przy weryfikacji sum\n"
+"kontrolnych"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "opcja --status ma znaczenie tylko przy weryfikacji sum kontrolnych"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "opcja --warn ma znaczenie tylko przy weryfikacji sum kontrolnych"
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Sk³adnia: %s [OPCJA] KATALOG...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"Utworzenie KATALOGU/ÓW, je¿eli jeszcze nie istniej±.\n"
+"\n"
+
+#: src/mkdir.c:67
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+" -m, --mode=UPRAWN ustawienie uprawnieñ (jak w chmod), nie a=rwx - umask\n"
+" -p, --parents bez b³êdu gdy istnieje, utworzenie ca³ej ¶cie¿ki "
+"katalogów\n"
+" -v, --verbose wypisanie komunikatu o ka¿dym utworzonym katalogu\n"
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "utworzony katalog %s"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Sk³adnia: %s [OPCJA] NAZWA...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"Tworzenie nazwanych potoków (pipes, FIFOs) o podanych NAZWACH.\n"
+"\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr " -m, --mode=UPRAWN ustawienie UPRAWNIEÑ, nie a=rw - umask\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "b³êdne uprawnienia"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr "mog± byæ podane ylko bity uprawnieñ"
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Sk³adnia: %s [OPCJA]... NAZWA TYP [WIÊKSZY MNIEJSZY]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"Utworzenie pliku specjalnego o podanej NAZWIE i TYPIE.\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+"\n"
+"Dla TYPÓW b, c i u musi byæ podany zarówno WIÊKSZY jak MNIEJSZY numer\n"
+"urz±dzenia. Oba numery musz± byæ pominiête je¿eli TYP to p. Je¿eli WIÊKSZY\n"
+"lub MNIEJSZY zaczyna siê od 0x albo 0X, jest interpretowany jako liczba\n"
+"szesnastkowa. Je¿eli zaczyna siê od 0 - jako ósemkowa. W innych wypadkach -\n"
+"jako dziêsi±tkowa. TYP mo¿e byæ:\n"
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+" b specjalny plik blokowy (buforowany)\n"
+" c, u specjalny plik znakowy (niebuforowany)\n"
+" p potok (FIFO)\n"
+
+#: src/mknod.c:146
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"Plik specjalny powinien mieæ podane wiêkszy i mniejszy numer urz±dzenia"
+
+#: src/mknod.c:156
+msgid "Fifos do not have major and minor device numbers."
+msgstr "Potoki nie maj± numerów wiêkszych ani mniejszych."
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "specjalne pliki blokowe nie s± obs³ugiwane"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "specjalne pliki znakowe nie s± obs³ugiwane"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "b³êdny wiêkszy numer urz±dzenia %s"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "b³êdny mniejszy numer urz±dzenia %s"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "b³êdne urz±dzenie %s %s"
+
+#: src/mknod.c:216
+#, c-format
+msgid "invalid device type %s"
+msgstr "b³êdne typ urz±dzenia %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Przemianowanie ¬RÓD£A na CEL albo przeniesienie jednego lub wielu ¬RÓDE£\n"
+"do KATALOGU.\n"
+"\n"
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup[=TRYB] zrobienie kopii zapasowej ka¿dego "
+"istniej±cego\n"
+" pliku docelowego\n"
+" -b jak --backup, ale bez podawania argumentu\n"
+" -f, --force bez pytania przed zamazaniem pliku\n"
+" -i, --interactive pytanie przed zamazaniem\n"
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --strip-trailing-slashes usuniêcie koñcowych uko¶ników z ka¿dego\n"
+" argumentu ZRÓD£OWEGO\n"
+" -S, --suffix=ROZSZERZ zmiana domy¶lnego rozszerzenia kopii "
+"zapasowej\n"
+
+#: src/mv.c:308
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" -t, --target-directory=KATALOG przeniesienie wszystkich argumentów\n"
+" ¬RÓD£OWYCH do KATALOGU\n"
+" -T, --no-target-directory traktowanie CELU jak zwyk³ego pliku\n"
+" -u, --update przenoszenie tylko gdy ¬RÓD£O jest nowsze od\n"
+" CELU albo nie ma CELU\n"
+" -v, --verbose wyja¶nianie co siê dzieje\n"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Sk³adnia: %s [OPCJA] [POLECENIE [ARGUMENT]...]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+"Uruchomienie POLECENIA z poprawionym priorytetem, co wp³ywa na przydzia³\n"
+"czasu procesora. Bez POLECENIE wypisuje bie¿±cy priorytet. Priorytet mo¿e\n"
+"mieæ warto¶æ od %d (najwiêksze przydzia³y czasu) do %d (najmniejsze).\n"
+"\n"
+
+#: src/nice.c:155
+#, c-format
+msgid "invalid adjustment %s"
+msgstr "b³êdny poprawka %s"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "razem z priorytetem musi byæ podane polecenie"
+
+#: src/nice.c:171 src/nice.c:182
+#, c-format
+msgid "cannot get niceness"
+msgstr "nie mo¿na ustaliæ ile wynosi poprawka"
+
+#: src/nice.c:186
+#, c-format
+msgid "cannot set niceness"
+msgstr "ustawienie poprawki niemo¿liwe"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Wypisanie ka¿dego PLIKU na standardowe wyj¶cie z numerami linii.\n"
+"Je¿eli PLIK nie jest podany lub PLIK to -, czytane jest standardowe\n"
+"wej¶cie.\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=STYL u¿ycie STYLU do numerowania linii tre¶ci\n"
+" -d, --section-delimiter=CC u¿ycie CC do oddzielania stron logicznych\n"
+" -f, --footer-numbering=STYL u¿ycie STYLU do numerowania linii stopek\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=STYL u¿ycie STYLU do numeracji linii nag³ówka\n"
+" -i, --page-increment=ILE przyrost numeracji linii\n"
+" -l, --join-blank-lines=ILE grupa ILU pustych linii liczona jako "
+"jedna\n"
+" -n, --number-format=FORMAT dopisanie numerów linii zgodnie z "
+"FORMATEM\n"
+" -p, --no-renumber bez zerowania numeracji na pocz±tkach "
+"stron\n"
+" logicznych\n"
+" -s, --number-separator=£AÑCUCH dodanie £AÑCUCHA po ewent. numerze linii\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=NUMER NUMER pierwszej linii na stronie "
+"logicznej\n"
+" -w, --number-width=ILE ILE kolumn na numery linii\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"Domy¶lnie wybrane s± -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC to\n"
+"dwa ograniczniki oddzielaj±ce strony logiczne. Je¿eli brakuje drugiego\n"
+"przyjmowana jest warto¶æ :. Napisz \\\\ ¿eby uzyskaæ \\. STYL to jeden z:\n"
+
+#: src/nl.c:214
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a numerowanie wszystkich linii\n"
+" t numerowanie tylko niepustych linii\n"
+" n bez numerowania linii\n"
+" pPODST_WYR_REG numerowanie tylko linii pasuj±cych do\n"
+" PODSTAWOWEGO_WYRA¯ENIA_REGULARNAEGO\n"
+"\n"
+"FORMAT to jeden z:\n"
+"\n"
+" ln dosuniête do lewej, bez zer na pocz±tku\n"
+" rn dosuniête do prawej, bez zer na pocz±tku\n"
+" rz dosuniête do prawej, z zerami na pocz±tku\n"
+"\n"
+
+#: src/nl.c:281
+#, c-format
+msgid "line number overflow"
+msgstr "przepe³nienie licznika wierszy"
+
+#: src/nl.c:479
+#, c-format
+msgid "invalid header numbering style: %s"
+msgstr "b³êdny styl numerowania nag³ówka: %s"
+
+#: src/nl.c:487
+#, c-format
+msgid "invalid body numbering style: %s"
+msgstr "b³êdny styl numerownaia tre¶ci: %s"
+
+#: src/nl.c:495
+#, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "b³êdny styl numerowania stopek: %s"
+
+#: src/nl.c:504
+#, c-format
+msgid "invalid starting line number: %s"
+msgstr "b³êdny pocz±tkowy numer linii: %s"
+
+#: src/nl.c:513
+#, c-format
+msgid "invalid line number increment: %s"
+msgstr "b³êdny przyrost numeru linii: %s"
+
+#: src/nl.c:525
+#, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "b³êdna liczba pustych linii: %s"
+
+#: src/nl.c:539
+#, c-format
+msgid "invalid line number field width: %s"
+msgstr "b³êdna szeroko¶æ pola numeru linii: %s"
+
+#: src/nl.c:558
+#, c-format
+msgid "invalid line numbering format: %s"
+msgstr "b³êdny przyrost numeru linii: %s"
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Sk³adnia: %s POLECENIE [ARGUMENT]...\n"
+" albo: %s OPCJA\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr "Uruchomienie POLECENIA ignoruj±cego sygna³y HUP.\n"
+
+#: src/nohup.c:117
+#, c-format
+msgid "ignoring input"
+msgstr "zignorowane dane wej¶ciowe"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr "nie uda³o siê otworzyæ %s"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "zignorowanie wej¶cia i do³±czenie wyników do %s"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+"nie uda³o siê zamkn±æ kopii standardowego wyj¶cia przy wykonywaniu exec"
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+"zignorowanie wej¶cia i przekierowanie standardowego b³êdu do standardowego "
+"wyj¶cia"
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr "nie uda³o siê przekierowaæ wyj¶cia standardowego b³êdu"
+
+#: src/od.c:307
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Sk³adnia: %s [OPCJA]... [PLIK]...\n"
+" albo: %s [-abcdfilosx]... [PLIK] [[+]PRZESUNIÊCIE[.][b]]\n"
+" albo: %s --traditional [OPCJA]... [PLIK] [[+]PRZESUNIÊCIE[.][b]\n"
+" [[+]ETYKIETA]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"Wypisanie jednoznacznej reprezentacji PLIKU, domy¶lnie bajty ósemkowo, na\n"
+"standardowe wyj¶cie. Je¿eli PLIK nie jest podany lub PLIK to -, czytane\n"
+"jest standardowe wej¶cie.\n"
+"\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr "Argumenty obowi±zkowe dla opcji d³ugich obowi±zuj± dla krótkich.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=BAZA postaæ wypisywania pozycji\n"
+" -j, --skip-bytes=BAJTY ominiêcie tylu pocz±tkowych BAJTÓW ka¿dego "
+"pliku\n"
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=BAJTY ograniczenie wielko¶ci do BAJTÓW\n"
+" -S, --strings[=BAJTY] wypisanie przynajmniej tylu BAJTÓW znaków\n"
+" graficznych\n"
+" -t, --format=TYP wybranie formatu/formatów danych wyj¶ciowych\n"
+" -v, --output-duplicates bez u¿ywania * do zaznaczania powtórzonych "
+"linii\n"
+" -w, --width[=BAJTY] wypisanie tylu BAJTÓW w ka¿dej linii "
+"wyj¶ciowej\n"
+" --traditional akceptowanie argumentów w tradycyjnym "
+"formacie\n"
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"Tradycyjne specyfikacje formatu mog± byæ mieszane, akumuluj± siê:\n"
+" -a to samo co -t a, nazwy znaków po zignorowaniu najstarszego bitu\n"
+" -b to samo co -t o1, bajty ósemkowo\n"
+" -c to samo co -t c, znaki ASCII lub kody znaków z uko¶nikiem odwrotnym\n"
+" -d to samo co -t u2, dziesiêtnie liczby 2-bajtowe bez znaku\n"
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f to samo co -t fF, zmiennoprzecinkowo float\n"
+" -i to samo co -t dI, dziesiêtnie integer\n"
+" -l to samo co -t dL, dziesiêtnie long\n"
+" -o to samo co -t o2, ósemkowo 2-bajtowo\n"
+" -s to samo co -t d2, dziesiêtnie 2-bajtowo\n"
+" -x to samo co -t x2, szesnastkowo 2-bajtowo\n"
+
+#: src/od.c:353
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"Je¿eli i pierwszy i drugi format pasuje do u¿ytej sk³adni, a ostatni "
+"argument\n"
+"zaczyna siê od + albo (w przypadku dwóch argumentów) od cyfry, zak³ada siê, "
+"¿e\n"
+"zosta³ u¿yty format trzeci. PRZESUNIÊCIE oznacza to samo co -j "
+"PRZESUNIÊCIE.\n"
+"ETYKIETA to pseudo-adres wypisanego bajtu, zwiêksza siê w trakcie pracy\n"
+"programu. Dla PRZESUNIÊCIA i ETYKIETY przedrostek 0x lub 0X oznacza zapis\n"
+"szesnastkowy, zapis ósemkowy jest oznaczany przez przyrostek . , a "
+"przyrostek\n"
+"b oznacza wielokrotno¶æ 512.\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+"\n"
+"TYP sk³ada siê z jednej lub wiêcej nastêpuj±cych specyfikacji:\n"
+"\n"
+" a nazwy znaków po zignorowaniu najstarszego bitu\n"
+" c znaki ASCII lub kody znaków z uko¶nikiem odwrotnym\n"
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[ROZMIAR] dziesiêtny ze znakiem, liczba o takim ROZMIARZE w bajtach\n"
+" f[ROZMIAR] zmiennoprzecinkowy, liczba o takim ROZMIARZE w bajtach\n"
+" o[ROZMIAR] ósemkowy, liczba o takim ROZMIARZE w bajtach\n"
+" u[ROZMIAR] dziesiêtny bez znaku, liczba o takim ROZMIARZE w bajtach\n"
+" x[ROZMIAR] szesnastkowy, liczba o takim ROZMIARZE w bajtach\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"ROZMIAR jest liczb±. Dla TYPÓW d, o, u, x ROZMIAR mo¿e byæ te¿ C dla\n"
+"sizeof(char), S dla sizeof(short), I dla sizeof(int) albo L dla\n"
+"sizeof(long). Je¿eli TYP to f, ROZMIAR mo¿e byæ te¿ F dla sizeof(float), D\n"
+"dla sizeof(double) albo L dla sizeof(long double).\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"BAZÊ oznacza siê d je¿eli dziesiêtna, o - ósemkowa, x - szesnastkowa, n -\n"
+"¿adna. BAJTY s± w zapisie szesnastkowym je¿eli maja przedrostek 0x albo 0X,\n"
+"je¿eli przyrostek to b, s± mno¿one przez 512, k - 1024, m - 1048576. "
+"Dodanie\n"
+"przyrostka `z' do dowolnego typu dodaje wy¶wietlanie znaków drukowalnych na\n"
+"koñcu ka¿dej linii. "
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"--string bez liczby oznacza d³ugo¶æ równ± 3. --width bez\n"
+"liczby oznacza szeroko¶æ równ± 32. Domy¶lnie od u¿ywa -A o -t d2 -w16.\n"
+
+#: src/od.c:683 src/od.c:802
+#, c-format
+msgid "invalid type string %s"
+msgstr "b³êdny ³añcuch typu %s"
+
+#: src/od.c:693
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"b³êdny ³añcuch typu %s;\n"
+"ten system nie ma %lu-bajtowych liczb ca³kowitych"
+
+#: src/od.c:812
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"b³êdny ³añcuch typu %s;\n"
+"ten system nie ma %lu-bajtowych liczb zmiennoprzecinkowych"
+
+#: src/od.c:871
+#, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "b³êdny znak %c w ³añcuchu typu %s"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "nie mo¿na przeskoczyæ poza koniec po³±czonych danych wej¶ciowych"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+"b³êdna baza danych wyj¶ciowych `%c'; musi to byæ jeden ze znaków [doxn]"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "pominiêcie argumentu"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "ograniczenie argumentu"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "minimalna d³ugo¶æ ³añcucha"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "specyfikacja szeroko¶ci"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "nie mo¿na podawaæ typu przy wypisywaniu ³añcuchów"
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr "Tryb zgodny ze star± wersj± mo¿e mieæ podany najwy¿ej jeden plik"
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr "za du¿e skip-bytes + read-bytes"
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "uwaga: b³êdna szeroko¶æ %lu; u¿ywam %d zamiast"
+
+# should this be translated? - rzm
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: format=\"%s\" szeroko¶æ=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "standardowe wej¶cie jest zamkniête"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Wypisywanie linii z³o¿onych ze sklejonych kolejnych odpowiadaj±cych sobie\n"
+"linii z ka¿dego PLIKU oddzielonych TABami, na standardowe wyj¶cie.\n"
+"Bez PLIKU albo gdy PLIK to -, czytane jest standardowe wej¶cie.\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=LISTA u¿ycie kolejnych znaków z LISTY zamiast TABów\n"
+" -s, --serial przepisanie plików po kolei zamiast równolegle\n"
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Sk³adnia: %s [OPCJA]... NAZWA...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+"Diagnozowanie nieprzeno¶nych konstrukcji w NAZWIE.\n"
+"\n"
+" -p sprawdzenie dla wiêkszo¶ci systemów POSIX\n"
+" -P sprawdzenie pustych nazw i pocz±tkowych \"-\"\n"
+" --portability sprawdzenie dla wszystkich systemów POSIX\n"
+" (równowa¿ne -p -P)\n"
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr "`-' na pocz±tku sk³adnika nazwy pliku %s"
+
+#: src/pathchk.c:206
+#, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "nieprzeno¶ny znak %s w nazwie pliku %s"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr "pusta nazwa pliku"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr "%s: nie mo¿na ustaliæ maksymalnej d³ugo¶ci nazwy pliku"
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr "ograniczenie do %lu przekroczone przez d³ugo¶æ %lu nazwy pliku %s"
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+"ograniczenie do %lu przekroczone przez d³ugo¶æ %lu sk³adnika nazwy pliku %s"
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "U¿ytkownik: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "Imiê i nazwisko: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Katalog: "
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Pow³oka: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Projekt: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "Plan:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "U¿ytkownik"
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr "Nazwisko"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr " TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Bezczynny"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Kiedy"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Sk±d"
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Sk³adnia: %s [OPCJA]... [U¯YTKOWNIK]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"\n"
+" -l wy¶wietlenie szczegó³owych informacji o U¯YTKOWNIKU\n"
+" -b pominiêcie katalogu domowego i pow³oki u¿ytkownika w\n"
+" formacie szczegó³owym\n"
+" -h pominiêcie projektu u¿ytkownika w formacie szczegó³owym\n"
+" -p pominiêcie planu u¿ytkownika w formacie szczegó³owym\n"
+" -s wy¶wietlenie informacji w formacie skróconym (domy¶lnie)\n"
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+" -f pominiêcie nag³ówków kolumn w formacie skróconym\n"
+" -w pominiêcie nazwiska u¿ytkownika w formacie skróconym\n"
+" -i pominiêcie nazwiska i zdalnego systemu w formacie "
+"skróconym\n"
+" -q pominiêcie nazwiska, zdalnego system oraz czasu "
+"bezczynno¶ci\n"
+" w formacie skróconym\n"
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+"\n"
+"Uproszczona wersja programu `finger'. Wy¶wietla informacje o u¿ytkownikach.\n"
+"¦cie¿ka do pliku utmp: %s .\n"
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr ""
+"brak nazwy u¿ytkownika - musi byæ podana chocia¿ jedna, je¿eli u¿yto opcji -l"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr "zakres stron"
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "`--pages=PIERWSZA_STRONA[:OSTATNIA_STRONA]' - brakuj±cy argument"
+
+#: src/pr.c:916
+#, c-format
+msgid "Invalid page range %s"
+msgstr "b³êdny zakres stron %s"
+
+#: src/pr.c:981
+#, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "`-l D£_STRONY' b³êdna liczba linii: %s"
+
+#: src/pr.c:1005
+#, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "`-N LICZBA' b³êdny numer linii pocz±tkowej: %s"
+
+#: src/pr.c:1017
+#, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "`-o MARGINES' b³êdne przesuniêcie linii: %s"
+
+#: src/pr.c:1058
+#, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-w SZEROKO¦Æ_STRONY' b³êdna liczba znaków: %s"
+
+#: src/pr.c:1072
+#, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-W SZEROKO¦Æ_STRONY' b³êdna liczba znaków: %s"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "Przy wypisywaniu równoleg³ym nie mo¿na podawaæ liczby kolumn."
+
+# wzd³u¿? - rzm
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "Nie mo¿na wypisywaæ równocze¶nie w kolejnych kolumnach i równolegle."
+
+#: src/pr.c:1202
+#, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "`-%c' nadmiarowe znaki lub b³êdna liczba w argumencie: %s"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "szeroko¶æ strony za ma³a"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr "pocz±tkowy numer strony %<PRIuMAX> przekracza liczbê stron %<PRIuMAX>"
+
+#: src/pr.c:2406
+#, c-format
+msgid "Page number overflow"
+msgstr "Przepe³nienie licznika stron"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr "Strona %<PRIuMAX>"
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+"Podzielenie na strony lub u³o¿enie w kolumny PLIKU/ÓW do drukowania.\n"
+"\n"
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +PIERWSZA_STRONA[:OSTATNIA_STRONA], --pages=PIERWSZA_STRONA[:"
+"OSTATNIA_STRONA]\n"
+" zaczêcie [zakoñczenie] od strony PIERWSZA_[OSTATNIA_]"
+"STRONA\n"
+" -COLUMN, --columns=KOLUMNY\n"
+" wypisywanie danych w tylu KOLUMNACH i drukowanie kolumn "
+"od\n"
+" góry do do³u, chyba ¿e u¿yte jest -a. Wyrównanie liczby\n"
+" linii w kolumnach na ka¿dej stronie.\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across kolejne linie bêd± wypisane w kolejnych kolumnach, nie "
+"po\n"
+" kolei od góry do do³u; u¿ywa siê razem z -KOLUMNY\n"
+" -c, --show-control-chars\n"
+" u¿ycie zapisu z daszkiem (np. ^G) i ósemkowych numerów\n"
+" znaków z backslashem\n"
+" -d, --double-space\n"
+" podwójny odstêp na wyj¶ciu\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=FORMAT\n"
+" FORMAT daty w nag³ówku\n"
+" -e[ZNAK[SZER]], --expand-tabs[=ZNAK[SZER]]\n"
+" rozwijanie ZNAKÓW wej¶ciowych (TABów) do tej SZERoko¶ci "
+"(8)\n"
+" -F, -f, --form-feed\n"
+" do odzielania stron bêdzie u¿yty znak nowej strony "
+"zamiast\n"
+" znaku nowej linii (przez 3-liniowy nag³ówek strony z -F\n"
+" lub 5-liniowy nag³ówek i stopkê bez -F)\n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h NAG£ÓWEK, --header=NAG£ÓWEK\n"
+" u¿ycie wycentrowanego NAG£ÓWKA zamiast nazwy pliku w\n"
+" nag³ówkach, dla d³ugich nag³ówków mo¿e doj¶æ do "
+"obciêcia\n"
+" z lewej. -h \"\" drukuje pust± linie, nie u¿ywaj -h "
+"\"\"\n"
+" -i[ZNAK[SZER]], --output-tabs[=ZNAK[SZER]]\n"
+" zamiana spacji na ZNAKI (TABy) do tej SZEROKO¦CI (8)\n"
+" -J, --join-lines\n"
+" po³±czenie pe³nych linii, wy³±cza obcinanie linii przez\n"
+" -W, bez wyrównania kolumn, -sep-string[-£AÑCUCH] "
+"ustawia\n"
+" separatory\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l D£UGO¦Æ_STRONY, --length=D£UGO¦Æ_STRONY\n"
+" ustawienie takiej D£UGO¦CI_STRONY w liniach (66)\n"
+" (domy¶lna liczba linii tekstu: 56; dla -F 63)\n"
+" -m, --merge wypisanie wszystkich plików równolegle, ka¿dy w jednej\n"
+" kolumnie, linie s± obcinane, ale linie o pe³nej "
+"d³ugo¶ci\n"
+" s± ³±czone przez -J\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[SEP[CYFRY]], --number-lines[=SEP[CYFRY]]\n"
+" numerowanie linii tyloma CYFRAMI (5), potem SEPARATOREM\n"
+" (TAB), domy¶lnie liczone od pierwszej linii pliku\n"
+" wej¶ciowego\n"
+" -N LICZBA, --first-line-number=LICZBA\n"
+" pocz±tek liczenia od LICZBY przy pierwszej linii "
+"pierwszej\n"
+" drukowanej strony (zob. +PIERWSZA_STRONA)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o MARGINES, --indent=MARGINES\n"
+" Przesuniêcie ka¿dej linii o MARGINES (zero) spacji, nie\n"
+" wp³ywa na -w ani -W, MARGINES zostanie dodany do\n"
+" SZEROKO¦CI_STRONY\n"
+" -r, --no-file-warnings\n"
+" bez ostrze¿eñ kiedy plik nie mo¿e byæ otwarty\n"
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[ZNAK], --separator[=ZNAK]\n"
+" oddzielanie kolumn pojedynczym ZNAKIEM, domy¶lnie "
+"TABem,\n"
+" je¿eli bez opcji -w, 'no char' z opcj± -w\n"
+" -s[ZNAK] wy³±cza obcinanie linii we wszystkich 3 "
+"uk³adach\n"
+" kolumn (-COLUMN|-a -COLUMN|-m), chyba ¿e u¿yto opcji -w\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -S£AÑCUCH, --sep-string[=£AÑCUCH]\n"
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" oddzielenie kolumn przez £AÑCUCH znaków,\n"
+" bez -S: z opcj± -J domy¶lny separator to TAB, bez -J -\n"
+" spacja (to samo co -S\" \"), nie wp³ywa na opcje "
+"dotycz±ce\n"
+" kolumn\n"
+" -t, --omit-header bez wypisywania nag³ówków i stopek stron\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" bez wypisywania nag³ówków i stopek stron, wy³±czenie\n"
+" formatowania stron przez znaki nowej strony w plikach\n"
+" wej¶ciowych\n"
+" -v, --show-nonprinting\n"
+" u¿ycie zapisu ósemkowego z backslashem\n"
+" -w SZEROKO¦Æ_STRONY, --width=SZEROKO¦Æ_STRONY\n"
+" ustawienie SZEROKO¦CI_STRONY w kolumnach (72), tylko "
+"dla\n"
+" wydruku wielokolumnowego, -s[ZNAK] wy³±cza warto¶æ\n"
+" domy¶ln± (72)\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W SZEROKO¦Æ_STRONY, --page-width=SZEROKO¦Æ_STRONY\n"
+" ustawienie szeroko¶ci strony zawsze do "
+"SZEROKO¦CI_STRONY\n"
+" (72), obcinanie linii, chyba ¿e jest u¿yta opcja -J; "
+"nie\n"
+" przeszkadza opcjom -S ani -s.\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"-T jest w³±czane gdy u¿yte jest -l nn kiedy nn <= 10 lub <= 3 z -F.\n"
+"Je¿eli PLIK nie jest podany lub PLIK to -, czytane jest standardowe "
+"wej¶cie.\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Sk³adnia: %s [ZMIENNA]...\n"
+" albo: %s OPCJA\n"
+"Je¿eli nie jest podana ¿adna zmienna ¶rodowiskowa, wypisywane s± wszystkie.\n"
+"\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr "uwaga: %s: znaki nastêpuj±ce po sta³ej znakowej zosta³y zignorowane"
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Sk³adnia: %s FORMAT [ARGUMENT]...\n"
+" albo: %s OPCJA\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+"Wypisuje ARGUMENT(Y) zgodnie z FORMATEM.\n"
+"\n"
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"\n"
+"FORMAT wyj¶cia jak w funkcji C printf. Rozpoznawane sekwencje:\n"
+"\n"
+" \\\" cudzys³ów\n"
+" \\0NNN znak o ósemkowej warto¶ci NNN (1 do 3 cyfr)\n"
+" \\\\ uko¶nik odwrotny (ang. backslash)\n"
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+" \\a dzwonek (BEL)\n"
+" \\b znak cofania (ang. backspace)\n"
+" \\c zatrzymanie dalszego wy¶wietlania\n"
+" \\f przesuniêcie o stronê (FF)\n"
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n znak nowej linii\n"
+" \\r powrót karetki (CR)\n"
+" \\t tabulator poziomy\n"
+" \\v tabulator pionowy\n"
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+" \\xHH bajt szesnastkowej warto¶ci HH (1 do 2 cyfr)\n"
+" \\uHHHH znak Unicode (ISO/IEC 10646) o szesnastkowej warto¶ci HHHH (4 "
+"cyfry)\n"
+" \\UHHHHHHHH znak Unicode o szesnastkowej warto¶ci HHHHHHHH (8 cyfr)\n"
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+" %% pojedynczy %\n"
+" %b ARGUMENT ze zinterpretowanymi sekwencjami `\\' oprócz\n"
+" sekwencji ósemkowych, które maj± formê \\0 albo \\0NNN\n"
+"\n"
+"i wszystkie specyfikacje formatu C zakoñczone jednym ze znaków\n"
+"diouxXfeEgGcs z ARGUMENTAMI przekszta³conymi najpierw do odpowiednich\n"
+"typów. S± obs³ugiwane zmienne szeroko¶ci.\n"
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: spodziewana warto¶æ liczbowa"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: warto¶æ nie przekszta³cona w ca³o¶ci"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "brak liczby szesnastkowej w sekwencji"
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "b³êdna nazwa znaku uniwersalnego \\%c%0*x"
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr "b³êdna szeroko¶æ pola: %s"
+
+#: src/printf.c:585
+#, c-format
+msgid "invalid precision: %s"
+msgstr "b³±d specyfikacji precyzji: %s"
+
+#: src/printf.c:612
+#, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%.*s: b³êdna specyfikacja przekszta³cenia"
+
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "uwaga: nadmiarowe argumenty pocz±wszy od %s zosta³y zignorowane"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr "F. Pinard"
+
+#: src/ptx.c:422
+#, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (dla wyr. regularnego %s)"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Sk³adnia: %s [OPCJA]... [WEJ¦CIE]... (bez -G)\n"
+" albo: %s -G [OPCJA]... [WEJ¦CIE [WYJ¦CIE]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"Pokazanie indeksu s³ów z plików wej¶ciowych razem z kontekstem.\n"
+"\n"
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference wypisanie automatycznie wygenerowanych\n"
+" odno¶ników\n"
+" -G, --traditional zachowanie zgodno¶ci z wersj± ptx z Systemu "
+"V\n"
+" -F, --flag-truncation=£AÑCUCH u¿ycie £AÑCUCHA do zaznaczania wyciêtych "
+"linii\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=£AÑCUCH nazwa makra u¿ywanego zamiast `xx'\n"
+" -O, --format=roff wyj¶cie w postaci dyrektyw roff-a\n"
+" -R, --right-side-refs umieszczenie odno¶ników po prawej, nie\n"
+" liczone w -w\n"
+" -S, --sentence-regexp=REGEXP REGEXP dla okre¶lenia koñców linii lub "
+"zdañ\n"
+" -T, --format=tex generowanie wyj¶cia w postaci dyrektyw TeX-"
+"a\n"
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=REGEXP u¿ycie REGEXPa do rozpoznawania s³ów\n"
+" kluczowych\n"
+" -b, --break-file=PLIK znaki rozdzielaj±ce s³owa s± w tym PLIKU\n"
+" -f, --ignore-case traktowanie ma³ych liter jak wielkich przy\n"
+" sortowaniu\n"
+" -g, --gap-size=LICZBA odstêp w kolumnach miêdzy polami "
+"wyj¶ciowymi\n"
+" -i, --ignore-file=PLIK czytanie listy ignorowanych s³ów z PLIKU\n"
+" -o, --only-file=FILE uwzglêdnienie tylko s³ów z PLIKU\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references pierwsze pole ka¿dej linii jest "
+"odno¶nikiem\n"
+" -t, --typeset-mode - nie zaimplementowane -\n"
+" -w, --width=NUMBER szeroko¶æ wyj¶cia w kolumnach, bez "
+"odno¶ników\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"Je¿eli PLIK nie jest podany albo PLIK to -, czytane jest standardowe "
+"wej¶cie.\n"
+"Domy¶lnie u¿yta jest opcja `-F /'.\n"
+
+#: src/ptx.c:2016
+#, c-format
+msgid "invalid gap width: %s"
+msgstr "b³êdna szeroko¶æ odstêpu: %s"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr "opcja --copyright jest przestarza³a; u¿ywaj --version"
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+"Wypisanie pe³nej nazwy bie¿±cego katalogu.\n"
+"\n"
+
+#: src/pwd.c:160
+#, c-format
+msgid "failed to chdir to %s"
+msgstr "nie uda³o siê chdir do %s"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, c-format
+msgid "failed to stat %s"
+msgstr "nie uda³o siê stat %s"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr "w %s nie mo¿na odnale¼æ katalogu z pasuj±cym i-wêz³em"
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "zignorowano argumenty nie bêd±ce opcjami"
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Sk³adnia: %s [OPCJA]... PLIK\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+"Wy¶wietlenie warto¶ci dowi±zania symbolicznego na standardowym wyj¶ciu.\n"
+"\n"
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+" -f, --canonicalize doprowadzenie do postaci kanonicznej przez\n"
+" rekursywne rozwi±zanie wszystkich ³±cz\n"
+" symbolicznych we wszystkich sk³adnikach "
+"danej\n"
+" nazwy; musz± istnieæ wszystkie sk³adniki\n"
+" oprócz ostatniego\n"
+" -e, --canonicalize-existing doprowadzenie do postaci kanonicznej przez\n"
+" rekursywne rozwi±zanie wszystkich ³±cz\n"
+" symbolicznych we wszystkich sk³adnikach "
+"danej\n"
+" nazwy; musz± istnieæ wszystkie sk³adniki\n"
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+" -m, --canonicalize-missing doprowadzenie do postaci kanonicznej przez\n"
+" rekursywne rozwi±zanie wszystkich ³±cz\n"
+" symbolicznych we wszystkich sk³adnikach "
+"danej\n"
+" nazwy; sk³adniki nie musz± istnieæ\n"
+" -n, --no-newline bez wypisania koñcowego znaku nowej linii\n"
+" -q, --quiet,\n"
+" -s, --silent wy³±czenie wiêkszo¶ci komunikatów o b³êdach\n"
+" -v, --verbose wypisywanie komunikatów o b³êdach\n"
+
+#: src/remove.c:481 src/remove.c:525
+#, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "B£¡D: nie uda³o siê zamkn±æ katalogu %s"
+
+#: src/remove.c:494
+#, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "B£AD: nie mo¿na otworzyæ .. z %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr "B£¡D: nie mo¿na byæ pewnym, ¿e %s (zwrócone przez ..) jest bezpieczne"
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "B£¡D: katalog %s zmieni³ urz±dzenie/i-wêze³"
+
+#: src/remove.c:631
+#, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "B£¡D: nie mo¿na wej¶æ do katalogu %s"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr "B£¡D: katalog %s, do którego w³a¶nie przeszed³ program zmieni³ dev/ino"
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"UWAGA: Cykliczna struktura katalogów.\n"
+"Prawie na pewno oznacza to, ¿e system plików jest uszkodzony.\n"
+"NALE¯Y ZAWIADOMIÆ ADMINISTRATORA SYSTEMU.\n"
+"Nastêpuj±cy katalog jest czê¶ci± cyklu:\n"
+" %s\n"
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s: wej¶æ w katalog %s, zabezpieczony przed zapisem? "
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s: przej¶æ do katalogu %s? "
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: usun±æ zabezpieczony przed zapisem %s %s? "
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: usun±æ %s %s? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "usuniêty katalog %s\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, c-format
+msgid "failed to close directory %s"
+msgstr "nie uda³o siê zamkn±æ katalogu %s"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr "pominiêto %s, bo jest na innym urz±dzeniu"
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "nie mo¿na usun±æ katalogu %s"
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "B£¡D: nie mo¿na wróciæ do .. z %s"
+
+#: src/remove.c:1504
+#, c-format
+msgid "cannot remove root directory %s"
+msgstr "nie mo¿na usun±æ katalogu %s"
+
+#: src/remove.c:1544
+#, c-format
+msgid "cannot remove relative-named %s"
+msgstr "nie mo¿na usun±æ nazwy wzglêdnej %s"
+
+#: src/remove.c:1558
+#, c-format
+msgid "cannot restore current working directory"
+msgstr "nie mo¿na odtworzyæ bie¿±cego katalogu"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr "U¿yj `%s ./%s' ¿eby usun±æ plik %s.\n"
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Sk³adnia: %s [OPCJA]... PLIK...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+"Kasowanie (unlink) PLIKU/PLIKÓW.\n"
+"\n"
+" -f, --force ignorowanie nieistniej±cych plików, bez pytañ\n"
+" -i pytanie przez ka¿dym kasowaniem\n"
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+" -I pojedyncze pytanie przez usuniêciem wiêcej ni¿ "
+"trzech\n"
+" plików przy usuwaniu rekursywnym. Mniej\n"
+" przeszkadzaj±ce ni¿ -i, ale nadal zabezpieczaj±ce\n"
+" przed wiêkszo¶ci± b³êdów\n"
+" --interactive[=KIEDY] pytania zale¿nie od KIEDY: never (nigdy), once\n"
+" (raz, -I) albo always (zawsze, -i). Bez KIEDY "
+"zawsze\n"
+" jest zadawane pytanie\n"
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+" --one-file-system poddczas rekurencyjnego usuwania katalogu pomijane\n"
+" s± katalogi znajduj±ce siê na innym systemie "
+"plików\n"
+" ni¿ ten, na którym znajduje siê argument "
+"polecenia\n"
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --no-preserve-root bez traktowania katalogu '/' w specjalny sposób\n"
+" (domy¶lnie)\n"
+" --preserve-root odmowa usuniêcia '/' (domyslnie)\n"
+" -r, -R, --recursive usuwanie katalogów z zawarto¶ci± rekursywnie\n"
+" -v, --verbose wyja¶nianie co siê dzieje\n"
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+"\n"
+"Domy¶lnie rm nie usuwa katalogów. U¿yj opcji --recursive (albo -r albo -R)\n"
+"¿eby skasowaæ równie¿ wszystkie podane katalogi z zawarto¶ci±.\n"
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"¯eby usun±æ plik z nazw± zaczynaj±ca siê od `-', np. `-foo', mo¿na u¿yæ\n"
+"jednego z poleceñ:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"Warto zauwa¿yæ, ¿e po u¿yciu rm do usuniêcia pliku zazwyczaj mo¿na "
+"odtworzyæ\n"
+"jego zawarto¶æ. Gdy istnieje potrzeba pewniejszego zagwarantowania, ¿e\n"
+"zawarto¶æ pliku jest rzeczywi¶cie nie do odtworzenia, nale¿y rozwa¿yæ "
+"u¿ycie\n"
+"programu shred.\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr "%s: usun±æ wszystkie argumenty rekursywnie? "
+
+#: src/rm.c:366
+#, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: usun±æ wszystkie argumenty? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "usuwany katalog %s"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Sk³adnia: %s [OPCJA]... KATALOG...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"Usuwanie pustych KATALOGÓW.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" zignorowanie b³êdów spowodowanych wy³±cznie tym, ¿e "
+"katalog\n"
+" nie jest pusty\n"
+
+#: src/rmdir.c:148
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents usuniêcie KATALOGU, potem próba usuniêcia ka¿dego "
+"katalogu\n"
+" nadrzêdnego tej ¶cie¿ki. Np,. `rmdir -p a/b/c jest "
+"podobne\n"
+" do `rmdir a/b/c a/b a'.\n"
+" -v, --verbose informacja diagnostyczna o ka¿dym przetworzonym\n"
+" katalogu\n"
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Sk³adnia: %s [OPCJA]... OSTATNIA\n"
+" albo: %s [OPCJA]... PIERWSZA OSTATNIA\n"
+" albo: %s [OPCJA]... PIERWSZA KROK OSTATNIA\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"Wy¶wietlenie liczb od PIERWSZEJ do OSTATNIEJ z krokiem KROK.\n"
+"\n"
+" -f, --format=FORMAT u¿ycie FORMATU w stylu zmiennoprzecinkowego "
+"formatu\n"
+" funkcji printf\n"
+" -s, --separator=£AÑCUCH rozdzielenie liczb £AÑCUCHEM (domy¶lnie: \\n)\n"
+" -w, --equal-width wype³nienie zerami do równej szeroko¶ci\n"
+
+#: src/seq.c:88
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"\n"
+"Je¿eli PIERWSZA lub KROK s± pominiête, maj± domy¶ln± warto¶æ 1. Tzn. je¿eli\n"
+"KROK jest pominiêty, domy¶lnie ma warto¶æ 1, nawet je¿eli OSTATNIA jest\n"
+"mniejsza od PIERWSZEJ. PIERWSZA, KROK i OSTATNIA s± interpretowane jako\n"
+"liczby zmiennoprzecinkowe. KROK zwykle jest dodatni, je¶li PIERWSZA jest\n"
+"mniejsza od OSTATNIEJ, KROK jest zwykle ujemny, je¶li PIERWSZA jest wiêksza\n"
+"od OSTATNIEJ.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+"FORMAT musi umo¿liwiaæ wypisanie jednego argumentu typu `double'; domy¶lnie\n"
+"jest to %.DOK£f je¿eli PIERWSZA, KROK i OSTATNIA s± wszystkie ca³kowite, z\n"
+"maksymaln± dok³adno¶ci± DOK£ albo %g w przeciwnym przypadku.\n"
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "b³êdny argument zmiennoprzecinkowy: %s"
+
+#: src/seq.c:342
+#, c-format
+msgid "invalid format string: %s"
+msgstr "b³êdny format: %s"
+
+# ? - rzm
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr "nie mo¿na podawaæ formatu, gdy drukowane s± ³añcuchy o równej d³ugo¶ci"
+
+#: src/setuidgid.c:51
+#, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Sk³adnia: %s U¯YTKOWNIK POLECENIE [ARGUMENT]...\n"
+" albo: %s OPCJA\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+"Pozbycie siê wszystkich dodatkowych grup, przyjêcie identyfikatora i grupy\n"
+"U¯YTKOWNIKA i wykonanie POLECENIA z podanymi ARGUMENTAMI. Wyj¶cie ze "
+"statusem\n"
+"111, je¿eli nie da siê przyj±æ wymaganych udentyfikatorów u¿ytkownika i "
+"grupy.\n"
+"W przeciwnym przypadku wyj¶cie ze statusem wyj¶ciowym POLECENIA.\n"
+"Ten program jest uzyteczny tylko je¿eli jest uruchomiony przez roota\n"
+"(u¿ytkownika o identyfikatorze zero)\n"
+"\n"
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr "nieznany identyfikator u¿ytkownika %s"
+
+#: src/setuidgid.c:109
+#, c-format
+msgid "cannot set supplemental group"
+msgstr "nie mo¿na ustawiæ grup dodatkowych"
+
+#: src/setuidgid.c:114
+#, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "nie mo¿na ustawiæ identyfikatora grupy %lu"
+
+#: src/setuidgid.c:118
+#, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "nie mo¿na ustawiæ identyfikatora u¿ytkownika %lu"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Sk³adnia: %s [OPCJE] PLIK [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"Wielokrotne zamazanie podanego PLIKU w celu utrudnienia odzyskania jego\n"
+"zawarto¶ci nawet przy u¿yciu drogich urz±dzeñ do odzyskiwania danych.\n"
+"\n"
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force zmiana uprawnieñ w razie potrzeby, ¿eby pozwoliæ na zapis\n"
+" -n, --iterations=N zamazanie N razy zamiast domy¶lnych %d\n"
+" -s, --size=N zamazanie N bajtów (mo¿na u¿ywaæ przyrostków typu K, M, G)\n"
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove skrócenie i skasowanie pliku po zamazaniu\n"
+" -v, --verbose pokazywanie przebiegu zamazywania\n"
+" -x, --exact bez zaokr±glania rozmiarów plików w górê do pe³nych "
+"bloków,\n"
+" domy¶lnie dla plików innych ni¿ zwyk³e\n"
+" -z, --zero dodatkowe zamazanie zerami, aby ukryæ zamazywanie\n"
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"Je¿eli PLIK to -, zamazywane jest standardowe wyj¶cie.\n"
+"\n"
+"Je¿eli podana jest opcja --remove (-u) PLIK jest kasowany. Domy¶lnie PLIK\n"
+"nie jest kasowany, poniewa¿ czêsto operacje dotycz± plików urz±dzeñ, jak\n"
+"/dev/hda, a takie pliki zwykle nie powinny byæ usuwane. Przy zamazywaniu\n"
+"zwyk³ych plików zwykle u¿ywa siê opcji --remove.\n"
+"\n"
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"UWAGA: Nale¿y pamiêtaæ, ¿e shred opiera siê na wa¿nym za³o¿eniu: ¿e system\n"
+"plików zamazuje dane w tym samym miejscu, gdzie je pierwotnie zapisa³. Tak\n"
+"dzieje siê tradycyjnie, ale wiele nowoczesnych systemów plików tak nie "
+"robi.\n"
+"Z nastêpuj±cymi systemami plików shred nie dzia³a efektywnie albo nie ma\n"
+"gwarancji, ¿e dzia³a efektywnie we wszystkich trybach pracy systemu plików:\n"
+"\n"
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"* opartymi na logowaniu i journalingu, jak dostarczane z AIXem i Solarisem\n"
+" (oraz JFS, ReiserFS, XFS, Ext3 itd.)\n"
+"\n"
+"* takimi, które zapisuj± dane na dodatkowych dyskach i kontynuuj± pracê,\n"
+" nawet je¿eli nie udaj± siê niektóre operacje zapisu, jak systemy plików\n"
+" oparte na RAID\n"
+"\n"
+"* które zapisuj± stan chwilowy, jak serwer NFS Network Appliance\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+"* u¿ywaj±cymi tymczasowego cache'a, jak klient wersji 3 NFS\n"
+"\n"
+"* kompresowanymi\n"
+"\n"
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+"W przypadku systemu plików ext3 powy¿sze uwagi maj± znaczenie (a shred ma\n"
+"wtedy ograniczona efektywno¶æ) tylko w trybie data=journal, w którym\n"
+"journallingowi podlega oprócz metadanych równie¿ zawarto¶æ pliku. Zarówno w\n"
+"trybie data=ordered (domy¶lny) jak data=writeback shred dzia³a jak "
+"zazwyczaj.\n"
+"Tryb jourinallingu ext3 mo¿e byc zmieniony przez dodanie opcji data=opcja "
+"do\n"
+"opcji mount-a dla danego systemu plików w pliku /etc/fstab, jak podaje "
+"manual\n"
+"(man mount)\n"
+"\n"
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+"Dodatkowo backupy i zdalne kopie mog± zawieraæ egzemplarze tego samego "
+"pliku,\n"
+"które nie mog± zostaæ usuniête i plik zamazany schredem mo¿e zostaæ\n"
+"odtworzony.\n"
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr "%s: b³±d fdatasync"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr "%s: b³±d fsync"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s: nie mo¿na przewin±æ"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: przebieg %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s: b³±d zapisu na pozycji %s"
+
+#: src/shred.c:478
+#, c-format
+msgid "%s: lseek failed"
+msgstr "%s: nie uda³o siê ustawienie pozycji lseek"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s: plik jest za du¿y"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: przebieg %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: przebieg %lu/%lu (%s)...%s/%s %d%%"
+
+#: src/shred.c:776
+#, c-format
+msgid "%s: fstat failed"
+msgstr "%s: b³±d fstat"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: b³êdny typ pliku"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: plik ma ujemny rozmiar"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s: b³±d obcinania"
+
+#: src/shred.c:889
+#, c-format
+msgid "%s: fcntl failed"
+msgstr "%s: b³±d fcntl"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s: nie mo¿na zamazywaæ pliku tylko do dopisywania"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: usuwanie"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: przemianowany na %s"
+
+#: src/shred.c:1018
+#, c-format
+msgid "%s: failed to remove"
+msgstr "%s: b³±d przy kasowaniu pliku"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: skasowany"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, c-format
+msgid "%s: failed to close"
+msgstr "%s: b³±d przy zamykaniu pliku"
+
+#: src/shred.c:1065
+#, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: b³±d przy otwieraniu do zapisu"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: b³êdna liczba przebiegów"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, c-format
+msgid "multiple random sources specified"
+msgstr "podano wiele ¼róde³ losowych bajtów"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: b³êdny rozmiar pliku"
+
+#: src/shuf.c:51
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Sk³adnia: %s [OPCJA]... [PLIK]\n"
+" albo: %s -e [OPCJA]... [ARGUMENT]\n"
+" albo: %s -i LO-HI [OPCJA]...\n"
+
+#: src/shuf.c:57
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"Wypisanie losowej permutacji linii wej¶ciowych na standardowym wyj¶ciu.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -e, --echo traktowanie ka¿dego argumentu jako linii\n"
+" wej¶ciowej\n"
+" -i, --input-range=LO-HI traktowanie ka¿dej liczby od LO do HI jako "
+"linii\n"
+" wej¶ciowej\n"
+" -n, --head-lines=LINIE najwy¿ej tyle LINII na wyj¶ciu\n"
+" -o, --output=PLIK zapis wyników do PLIKU zamiast do standardowego\n"
+" wyj¶cia\n"
+" --random-source=PLIK pobranie losowych bajtów za PLIKU (domy¶lnie\n"
+" /dev/urandom)\n"
+" -z, --zero-terminated zakoñczenie linii przez bajt 0, nie przez znak\n"
+" nowej linii\n"
+
+#: src/shuf.c:287
+#, c-format
+msgid "multiple -i options specified"
+msgstr "podano wiele opcji -i"
+
+#: src/shuf.c:307
+#, c-format
+msgid "invalid input range %s"
+msgstr "b³êdny zakres wej¶ciowy: %s"
+
+#: src/shuf.c:320
+#, c-format
+msgid "invalid line count %s"
+msgstr "b³êdna liczba linii %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr "podano wiele plików wyj¶ciowych"
+
+#: src/shuf.c:353
+#, c-format
+msgid "cannot combine -e and -i options"
+msgstr "nie mo¿na ³±czyæ ustawiania opcji -e i -i"
+
+#: src/shuf.c:362
+#, c-format
+msgid "extra operand %s\n"
+msgstr "nadmiarowy argument %s\n"
+
+#: src/sleep.c:47
+#, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Sk³adnia: %s ILE[PRZYROSTEK]...\n"
+" albo: %s OPCJA\n"
+"Czekanie przez okre¶lon± LICZBÊ sekund. PRZYROSTKIEM mo¿e byæ `s' dla\n"
+"oznaczenia sekund (domy¶lnie), m - minut, h - godzin i d - dni. Inaczej ni¿ "
+"w\n"
+"wiêkszo¶ci implementacji, w których ILE musi byæ liczb± ca³kowit±, tutaj "
+"ILE\n"
+"mo¿e byæ dowoln± liczb± zmiennoprzecinkow±. Je¿eli podane s± dwa lub wiêcej\n"
+"argumenty, przerwa trwa tyle ile suma ich warto¶ci.\n"
+"\n"
+
+#: src/sleep.c:138
+#, c-format
+msgid "invalid time interval %s"
+msgstr "b³êdny odstêp czasowy %s"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "nie mo¿na odczytaæ zegara systemowego"
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"Wypisanie posortowanego po³±czenia wszystkich PLIK(ÓW) na standardowym "
+"wyj¶ciu\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+"Opcje porz±dkowania:\n"
+"\n"
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks zignorowanie pocz±tkowych spacji\n"
+" -d, --dictionary-order branie pod uwagê tylko znaków odstêpu i\n"
+" alfanumerycznych\n"
+" -f, --ignore-case traktowanie ma³ych liter jak wielkich\n"
+
+#: src/sort.c:326
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort porównywanie wed³ug warto¶ci liczbowej\n"
+" -i, --ignore-nonprinting branie pod uwagê tylko znaków drukowalnych\n"
+" -M, --month-sort porz±dek: (nieznany) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort porównywanie wed³ug warto¶ci liczbowych "
+"³añcuchów\n"
+" -R, --random-sort sortowanie wg losowego skrótu kluczy\n"
+" --random-source=PLIK losowe bajty z PLIKU (domy¶lnie /dev/urandom)\n"
+" -r, --reverse odwrotny porz±dek sortowania\n"
+"\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+"Inne opcje:\n"
+"\n"
+" -c, --check sprawdzenie czy dane s± posortowane, bez "
+"sortowania\n"
+" -C, --check=quiet, --check=silent jak -c, ale bez pierwszej z³ej linii\n"
+" --compress-program=PROG kompresowanie plików tymczasowych przez "
+"PROG;\n"
+" dekompresowanie przez PROG -d\n"
+" -k, --key=POZ1[,POZ2] klucz zaczyna siê od POZYCJI1 i koñczy na "
+"POZYCJI2\n"
+" (numeracja od 1)\n"
+" -m, --merge po³±czenie ju¿ posortowanych plików, bez "
+"sortowania\n"
+
+#: src/sort.c:346
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+" -o, --output=PLIK zapisanie wyniku w PLIKU zamiast na "
+"standardowym\n"
+" wyj¶ciu\n"
+" -s, --stable stabilizacja sortowania przez zablokowanie\n"
+" porównania koñcowego\n"
+" -S, --buffer-size=ROZM ROZMIAR g³ównego bufora pamiêci\n"
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=SEP u¿ycie SEPARATORA zamiast przej¶cia\n"
+" odstêp - nie-odstêp\n"
+" -T, --temporary-directory=KATALOG u¿ycie KATALOGU na pliki tymczasowe\n"
+" zamiast $TMPDIR lub %s; opcja u¿yta\n"
+" wiêcej razy definiuje wiêcej katalogów\n"
+" -u, --unique z -c: sprawdzenie uporz±dkowania; bez -c:\n"
+" wypisanie tylko pierwszej z identycznych "
+"linii\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -z, --zero-terminated zakoñczenie linii bajtem 0 zamiast znakiem "
+"nowej\n"
+" linii\n"
+
+#: src/sort.c:363
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"POZ to P[.Z][OPCJE], gdzie P jest numerem pola, a Z pozycj± znaku w polu; "
+"oba\n"
+"liczone od jedynki. Je¿eli nie jest u¿yta opcja -t ani -b, znaki w polu s±\n"
+"liczone do pocz±tku poprzedzaj±cego odstêpu. OPCJE zawieraj± jedn± lub "
+"wiêcej\n"
+"liter, które dla tego klucza s± wa¿niejsze ni¿ opcje globalne. Je¿eli nie\n"
+"jest podany klucz, ca³a linia jest u¿ywana jako klucz.\n"
+"\n"
+"ROZMIAR mo¿e byæ uzupe³niony o nastêpuj±ce mno¿niki:\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"% - 1% pamiêci, b - 1, K - 1024 (domy¶lnie) itd. dla M, G, T, P, E, Z, Y.\n"
+"\n"
+"Je¿eli PLIK nie jest podany albo podany jako -, czytane jest standardowe\n"
+"wej¶cie\n"
+"\n"
+"*** UWAGA ***\n"
+"Locale ustawione przez zmienne ¶rodowiskowe wp³ywa na porz±dek sortowania.\n"
+"Ustaw LC_ALL=C ¿eby przywróciæ tradycyjny porz±dek sortowania, który u¿ywa\n"
+"dos³ownych warto¶ci bajtów.\n"
+
+#: src/sort.c:538
+#, c-format
+msgid "waiting for %s [-d]"
+msgstr "czekanie nado %s [-d]"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr "%s [-d] zakoñczone nieprawid³owo"
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "nie mo¿na utworzyæ pliku tymczasowego"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "b³±d otwierania pliku"
+
+#: src/sort.c:758
+msgid "fflush failed"
+msgstr "b³±d fflush"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "b³±d zamykania pliku"
+
+#: src/sort.c:772
+#, c-format
+msgid "dup2 failed"
+msgstr "b³±d dup2"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr "nie uda³o siê uruchomiæ %s"
+
+#: src/sort.c:880 src/sort.c:929
+msgid "couldn't create temporary file"
+msgstr "nie uda³o siê utworzyæ pliku tymczasowego"
+
+#: src/sort.c:903
+msgid "couldn't open temporary file"
+msgstr "nie uda³o siê otworzyæ pliku tymczasowego"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr "nie uda³o siê uruchomiæ %s -d"
+
+#: src/sort.c:924
+#, c-format
+msgid "couldn't create process for %s -d"
+msgstr "nie uda³o siê uruchomiæ procesu %s -d"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "b³±d zapisu"
+
+#: src/sort.c:975
+#, c-format
+msgid "warning: cannot remove: %s"
+msgstr "uwaga: nie uda³o siê usun±æ %s"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "rozmiar bloku"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "b³±d stat"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "b³±d czytania"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: nieuporz±dkowanie: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "standardowe wyj¶cie b³êdów"
+
+#: src/sort.c:2562
+#, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: b³êdna specyfikacja pola %s"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr "opcje `-%s' nie pasuj± do siebie"
+
+#: src/sort.c:2637
+#, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: b³êdna liczba na pocz±tku %s"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "b³êdna liczba po `-'"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "b³êdna liczba po `.'"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "nieprawid³owy znak w specyfikacji pola"
+
+#: src/sort.c:2934
+#, c-format
+msgid "multiple compress programs specified"
+msgstr "podano wiele programów kompresuj±cych"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "b³êdna liczba na pocz±tku pola"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "numer pola wynosi zero"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "numer znaku wynosi zero"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "b³êdna liczba po `,'"
+
+#: src/sort.c:3142
+#, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "dodatkowy argument %s nie mo¿e byæ u¿yty z opcj± -%c"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Sk³adnia: %s [OPCJA] [PLIK [PRZEDROSTEK]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"Zapisanie równych kawa³ków PLIKU do PRZEDROSTEKaa, PRZEDROSTEKab, ...;\n"
+"domy¶lny rozmiat to 1000 linii, domyslny PRZEDROSTEK to `x'. Je¿eli PLIK "
+"nie\n"
+"jest podany lub podano -, czytane jest standardowe wej¶cie\n"
+"\n"
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=N u¿ycie przyrostków o d³ugo¶ci N (domy¶lnie %d)\n"
+" -b, --bytes=ROZMIAR zapisanie po ROZMIAR bajtów do plików wyj¶ciowych\n"
+" -C, --line-bytes=ROZMIAR zapisanie najwy¿ej ROZMIAR bajtów pe³nych linii\n"
+" -d, --numeric-suffixes u¿ycie przyrostków liczbowych zamiast literowych\n"
+" -l, --lines=ILE zapis ILU linii do ka¿dego pliku wyj¶ciowego\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose przed otwarciem ka¿dego pliku wypisanie "
+"komunikatów\n"
+" diagnostycznych na standardowe wyj¶cie b³êdów\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"ROZMIAR mo¿e mieæ dodany mno¿nik: b dla 512, k dla 1 k, m dla 1 M.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "Zabrak³o przyrostków plików wyj¶ciowych"
+
+#: src/split.c:211
+#, c-format
+msgid "creating file %s\n"
+msgstr "tworzenie pliku %s\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "nie mo¿na podzieliæ na wiêcej ni¿ jeden sposób"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: b³êdna d³ugo¶æ przyrostka"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: b³êdna liczba bajtów"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: b³êdna liczba linii"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "za du¿a ilo¶æ linii w opcji -%s%c..."
+
+#: src/split.c:518
+#, c-format
+msgid "invalid number of lines: 0"
+msgstr "b³êdna liczba linii: 0"
+
+#: src/stat.c:636
+#, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "uwaga: nierozpoznana sekwencja `\\%c'"
+
+#: src/stat.c:680
+#, c-format
+msgid "%s: invalid directive"
+msgstr "%s: b³êdna dyrektywa"
+
+#: src/stat.c:726
+#, c-format
+msgid "warning: backslash at end of format"
+msgstr "uwaga: uko¶nik odwrotny na koñcu formatu"
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr "nie mo¿na przeczytaæ informacji systemowych o %s"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Sk³adnia: %s [OPCJA] PLIK...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+"Pokazanie danych pliku albo systemu plików\n"
+"\n"
+" -L, --dereference rozwi±zywanie dowi±zañ symbolicznych\n"
+" -f, --file-system pokazanie danych systemu plików, a nie pliku\n"
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+" -c --format=FORMAT u¿ycie podanego FORMATU zamiast domy¶lnego; po\n"
+" u¿yciu ka¿dego nowego FORMATU wypisywany jest "
+"znak\n"
+" nowej linii\n"
+" --printf=FORMAT jak --format, ale z interpretacj± sekwencji z\n"
+" uko¶nikiem odwrotnym i bez wypisywania znaku "
+"nowej\n"
+" linii. ¯eby go wypisaæ u¿yj \\n w FORMACIE.\n"
+" -t, --terse wypisywanie informacji w skróconej formie\n"
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"\n"
+"Prawid³owe specyfikacje formatu dla plików (bez opcji --file-system):\n"
+"\n"
+" %a prawa dostêpu ósemkowo\n"
+" %A prawa dostêpu w postaci czytelnej dla cz³owieka\n"
+" %b liczba zajêtych bloków (zobacz %B)\n"
+" %B rozmiar w bajtach ka¿dego bloku podanego przez `%b'\n"
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+" %d numer urz±dzenia dziesiêtnie\n"
+" %D numer urz±dzenia szesnastkowo\n"
+" %f tryb surowy, szesnastkowo\n"
+" %F typ pliku\n"
+" %g numer grupy w³a¶ciciela pliku\n"
+" %G nazwa grupy w³a¶ciciela pliku\n"
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+" %h liczba dowi±zañ zwyk³ych\n"
+" %i numer i-wêz³a\n"
+" %n nazwa pliku\n"
+" %N nazwa pliku w cudzys³owach, rozwi±zana je¿eli dowi±zanie symboliczne\n"
+" %o rozmiar bloku wej¶cia/wyj¶cia\n"
+" %s ca³kowity rozmiar w bajtach\n"
+" %t wiêkszy numer urz±dzenia szesnastkowo\n"
+" %T mniejszy numer urz±dzenia szesnastkowo\n"
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+" %u numer u¿ytkownika w³a¶ciciela\n"
+" %U nazwa w³a¶ciciela\n"
+" %x czas ostatniego czytania\n"
+" %X czas ostatniego czytania w sekundach od Epoki\n"
+" %y czas ostatniej modyfikacji\n"
+" %Y czas ostatniej modyfikacji w sekundach od Epoki\n"
+" %z czas ostatniej zmiany czasu\n"
+" %Z czas ostatniej zmiany czasu w sekundach od Epoki\n"
+"\n"
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"Prawid³owe specyfikacje formatu dla systemów plików:\n"
+"\n"
+" %a liczba wolnych bloków dostêpnych dla zwyk³ego u¿ytkownika\n"
+" %b ca³kowita liczba bloków danych w systemie plików\n"
+" %c ca³kowita liczba i-wêz³ów w systemie plików\n"
+" %d liczba wolnych i-wêz³ów w systemie plików\n"
+" %f liczba wolnych bloków w systemie plików\n"
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+" %i identyfikator systemu plików szesnastkowo\n"
+" %l maksymalna d³ugo¶æ nazw plików\n"
+" %n nazwa pliku\n"
+" %s optymalny rozmiar bloku przy zapisie/odczycie\n"
+" %S Podstawowy rozmiar bloku (dla zliczeñ bloków)\n"
+" %t typ szesnastkowo\n"
+" %T typ w formie czytelnej dla cz³owieka\n"
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Sk³adnia: %s [-F URZ¡DZENIE] [--file=URZ¡DZENIE] [USTAWIENIA]...\n"
+" albo: %s [-F URZ¡DZENIE] [--file=URZ¡DZENIE] [-a|--all]\n"
+" albo: %s [-F URZ¡DZENIE] [--file=URZ¡DZENIE] [-g|--save]\n"
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Wy¶wietlenie lub zmiana ustawieñ terminala.\n"
+"\n"
+" -a, --all wy¶wietlenie wszystkich aktualnych ustawieñ w postaci\n"
+" czytelnej dla cz³owieka\n"
+" -g, --save wy¶wietlenie wszystkich aktualnych ustawieñ w formacie\n"
+" czytelnym dla stty\n"
+" -F, --file=URZ¡DZENIE otwarcie i u¿ywanie podanego URZ¡DZENIA zamiast\n"
+" standardowego wej¶cia\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+"\n"
+"Opcjonalny minus przed USTAWIENIEM oznacza zaprzeczenie. Gwiazdka * oznacza\n"
+"ustawienia spoza POSIX. System sam okre¶la, które ustawienia s± dostêpne.\n"
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"\n"
+"Znaki specjalne:\n"
+" * dsusp ZNAK ZNAK wysy³a do terminala sygna³ stopu po opró¿nieniu "
+"wej¶cia\n"
+" eof ZNAK ZNAK wysy³a znak koñca pliku (koñca wej¶cia)\n"
+" eol ZNAK ZNAK wysy³a znak koñca linii\n"
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+" * eol2 ZNAK alternatywny ZNAK koñca linii\n"
+" erase ZNAK ZNAK kasuje ostatni wprowadzony znak\n"
+" intr ZNAK ZNAK wysy³a sygna³ przerwania\n"
+" kill ZNAK ZNAK kasuje bie¿±c± liniê\n"
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+" * lnext ZNAK ZNAK wprowadza nastêpny znak w cudzys³owie\n"
+" quit ZNAK ZNAK wysy³a sygna³ wyj¶cia\n"
+" * rprnt ZNAK ZNAK powtarza bie¿±c± liniê\n"
+" start ZNAK ZNAK wznawia wy¶wietlanie\n"
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+" stop ZNAK ZNAK wstrzymuje wy¶wietlanie\n"
+" susp ZNAK ZNAK wysy³a do terminala sygna³ stop\n"
+" * swtch ZNAK ZNAK w³±cza inn± warstwê pow³oki\n"
+" * werase ZNAK ZNAK kasuje ostatnie wprowadzone s³owo\n"
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"\n"
+"Ustawienia specjalne:\n"
+" N ustawienie prêdko¶ci wyj¶ciowej i wej¶ciowej na N bitów/s\n"
+" * cols N ustawienie szeroko¶ci terminala na N kolumn\n"
+" * columns N to samo co cols N\n"
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+" ispeed N ustawienie prêdko¶ci wej¶ciowej na N\n"
+" * line N u¿ycie rygoru linii (line discipline) N\n"
+" min N z -icanon ustawienie minimum N znaków pe³nego odczytu\n"
+" ospeed N ustawienie prêdko¶ci wyj¶ciowej na N\n"
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+" * rows N ustawienie d³ugo¶ci terminala na N wierszy\n"
+" * size wy¶wietlenie liczby wierszy i kolumn wed³ug ustawieñ j±dra\n"
+" speed wy¶wietlenie prêdko¶ci terminala\n"
+" time N z -icanon ustawienie timeout na N dziesi±tych sekundy\n"
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"\n"
+"Ustawienia steruj±ce:\n"
+" [-]clocal wy³±czenie sygna³ów sterowania modemu\n"
+" [-]cread w³±czenie odbioru z wej¶cia\n"
+" * [-]crtscts w³±czenie protoko³u RTS/CTS (handshaking)\n"
+" csN ustawienie wielko¶ci znaku na N bitów, N w zakresie [5..8]\n"
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+" [-]cstopb u¿ycie dwóch bitów stopu na znak (jeden z `-')\n"
+" [-]hup wys³anie sygna³u roz³±czenia gdy ostatni proces zamknie\n"
+" terminal\n"
+" [-]hupcl to samo co [-]hup\n"
+" [-]parenb w³±czenie ustawiania i sprawdzania bitu parzysto¶ci\n"
+" [-]parodd w³±czenie parzysto¶ci nieparzystej (parzystej z `-')\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"\n"
+"Ustawienia wej¶cia:\n"
+" [-]brkint znaki break powoduj± wys³anie sygna³u przerwania\n"
+" [-]icrnl zamienianie znaków CR na NL\n"
+" [-]ignbrk ignorowanie znaku break\n"
+" [-]igncr ignorowanie znaku CR\n"
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+" [-]ignpar ignorowanie znaków z b³êdami parzysto¶ci\n"
+" * [-]imaxbel piszczenie przy pe³nym buforze (bez jego opró¿niania) po\n"
+" wprowadzeniu znaku\n"
+" [-]inlcr zamienianie znaków NL na CR\n"
+" [-]inpck w³±czenie kontroli parzysto¶ci na wej¶ciu\n"
+" [-]istrip zerowanie najstarszego (ósmego) bitu znaków na wej¶ciu\n"
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+" * [-]iutf8 program zak³ada, ¿e znaki wej¶ciowe s± zakodowane w UTF-8\n"
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+" * [-]iuclc zamienianie wielkich liter na ma³e\n"
+" * [-]ixany ka¿dy znak wznawia transmisjê, nie tylko start\n"
+" [-]ixoff w³±czenie wysy³ania znaków start/stop\n"
+" [-]ixon w³±czenie protoko³u sterowania przep³ywem XON/XOF\n"
+" [-]parmrk zaznaczanie b³êdów parzysto¶ci sekwencj± 255-0-znak\n"
+" [-]tandem to samo co [-]ixoff\n"
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"\n"
+"Ustawienia dla wyj¶cia:\n"
+" * bsN styl opó¼nienia po znaku BS, N w zakresie [0..1]\n"
+" * crN styl opó¼nienia po znaku CR, N w zakresie [0..3]\n"
+" * ffN styl opó¼nienia po znaku FF, N w zakresie [0..1]\n"
+" * nlN styl opó¼nienia po znaku NL, N w zakresie [0..1]\n"
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+" * [-]ocrnl zamienianie znaku CR na NL\n"
+" * [-]ofdel u¿ywanie znaku DEL zamiast NUL jako znaku wype³niaj±cego\n"
+" * [-]ofill u¿ywanie znaków wype³niaj±cych zamiast opó¼nieñ transmisji\n"
+" * [-]olcuc zamienianie ma³ych liter na wielkie\n"
+" * [-]onlcr zamienianie znaków NL na sekwencje CR-NL\n"
+" * [-]onlret znak NL powoduje powrót karetki (carriage return)\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+" * [-]onocr bez wysy³ania znaków CR w pierwszej kolumnie\n"
+" [-]opost przetwarzanie znaków wyj¶ciowych\n"
+" * tabN styl opó¼nienia po tabulatorze poziomym, N w zakresie "
+"[0..3]\n"
+" * tabs to samo co tab0\n"
+" * -tabs to samo co tab3\n"
+" * vtN styl opó¼nienia po tabulatorze pionowym, N w zakresie "
+"[0..1]\n"
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"\n"
+"Ustawienia lokalne:\n"
+" [-]crterase wy¶wietlanie znaku erase jako BS-spacja-BS\n"
+" * crtkill kasowanie ca³ej linii zgodnie z ustawieniami echoprt i "
+"echoe\n"
+" * -crtkill kasowanie ca³ej linii zgodnie z ustawieniami echoctl i "
+"echok\n"
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+" * [-]ctlecho wy¶wietlanie znaków kontrolnych jako `^c' itp.\n"
+" [-]echo wy¶wietlanie ka¿dego znaku z wej¶cia\n"
+" * [-]echoctl to samo co [-]ctlecho\n"
+" [-]echoe to samo co [-]crterase\n"
+" [-]echok wy¶wietlanie znaku nowej linii po znaku kill\n"
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+" * [-]echoke to samo co [-]crtkill\n"
+" [-]echonl wy¶wietlanie znaku NL nawet je¶li inne nie s± wy¶wietlane\n"
+" * [-]echoprt wy¶wietlanie skasowanych znaków wstecz miêdzy `\\' i `/'\n"
+" [-]icanon wy¶wietlanie znaków erase, kill, werase i rprnt\n"
+" [-]iexten wy¶wietlanie znaków spoza specyfikacji POSIX\n"
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+" [-]isig wy¶wietlanie znaków intr, quit i susp\n"
+" [-]noflsh bez opró¿niania bufora po znakach intr i quit\n"
+" * [-]prterase to samo co [-]echoprt\n"
+" * [-]tostop zatrzymywanie procesów w tle, próbuj±cych pisaæ na "
+"terminal\n"
+" * [-]xcase z icanon: wy¶wietlanie wielkich liter jako `\\ma³a-litera'\n"
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+"\n"
+"Kombinacje ustawieñ:\n"
+" * [-]LCASE jak [-]lcase\n"
+" cbreak jak -icanon\n"
+" -cbreak jak icanon\n"
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+" cooked jak brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof i eol ustawione na warto¶ci domy¶lne\n"
+" -cooked jak raw\n"
+" crt jak echoe echoctl echoke\n"
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+" dec jak echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq jak [-]ixany\n"
+" ek ustawienie znaków erase i kill na warto¶ci domy¶lne\n"
+" evenp jak parenb -parodd cs7\n"
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+" -evenp jak -parenb cs8\n"
+" * [-]lcase jak xcase iuclc olcuc\n"
+" litout jak -parenb -istrip -opost cs8\n"
+" -litout jak parenb istrip opost cs7\n"
+" nl jak -icrnl -onlcr\n"
+" -nl jak icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+" oddp jak parenb parodd cs7\n"
+" -oddp jak -parenb cs8\n"
+" [-]parity jak [-]evenp\n"
+" pass8 jak -parenb -istrip cs8\n"
+" -pass8 jak parenb istrip cs7\n"
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+" raw jak -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw jak cooked\n"
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+" sane jak cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, wszystkie znaki\n"
+" specjalne przybieraj± standardowe warto¶ci.\n"
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"Obs³uga linii terminalowej pod³±czonej do standardowego wej¶cia.\n"
+"Bez argumentów wy¶wietla prêdko¶æ transmisji, rygor linii i odchylenia\n"
+"od stty sane. W ustawieniach ZNAK powinien byæ podany dos³ownie lub\n"
+"zakodowany np. ^c, 0x37, 0177 lub 127; warto¶æ ^- lub s³owo undef s±\n"
+"u¿ywane do wy³±czania znaków specjalnych.\n"
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr "mo¿e byæ podane tylko jedno urz±dzenie"
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr "opcje --all i --save wzajemnie siê wykluczaj±"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "tryb nie mo¿e byæ ustawiany, gdy podany jest format wyj¶cia"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: zresetowanie trybu nie blokuj±cego nie by³o mo¿liwe"
+
+#: src/stty.c:885 src/stty.c:995
+#, c-format
+msgid "invalid argument %s"
+msgstr "b³êdny argument %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, c-format
+msgid "missing argument to %s"
+msgstr "brakuj±cy argument %s"
+
+#: src/stty.c:976
+#, c-format
+msgid "invalid line discipline %s"
+msgstr "b³êdna dyscyplina linii: %s"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: wykonanie wszystkich ¿±danych operacji by³o niemo¿liwe"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "nowy_tryb: tryb\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: brak informacji o wielko¶ci tego urz±dzenia"
+
+#: src/stty.c:1888
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "b³êdny argument ca³kowity %s"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Has³o:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: otwarcie /dev/tty niemo¿liwe"
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "nie mo¿na ustawiæ grup"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "nie mo¿na ustawiæ identyfikatora grupy"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "nie mo¿na ustawiæ identyfikatora u¿ytkownika"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Sk³adnia: %s [OPCJA]... [-] [U¯YTKOWNIK [ARGUMENT]...]\n"
+
+#: src/su.c:386
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Zmiana efektywnego identyfikatora u¿ytkownika i grupy na identyfikator\n"
+"U¯YTKOWNIKA.\n"
+"\n"
+" -, -l, --login uruchomienie pow³oki podstawowej (login "
+"shell)\n"
+" -c, --command=POLECENIE przekazanie POLECENIA pow³oce opcj± -c\n"
+" -f, --fast przekazanie -f pow³oce (dla csh lub tcsh)\n"
+" -m, --preserve-environment bez kasowania zmiennych ¶rodowiskowych\n"
+" -p to samo co -m\n"
+" -s, --shell=POW£OKA uruchomienie POW£OKI, je¶li /etc/shells "
+"pozwala\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+"\n"
+"Sam - jest równoznaczny -l. Je¶li brak U¯YTKOWNIKA, domy¶lnym jest root.\n"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "u¿ytkownik %s nie istnieje"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "niepoprawne has³o"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "u¿ycie pow³oki z ograniczeniami %s"
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "uwaga: nie mo¿na zmieniæ katalogu na %s"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Wypisanie sumy kontrolnej i liczby bloków dla ka¿dego PLIKU.\n"
+"\n"
+" -r u¿ycie algorytmu BSD i bloków po 1 KB\n"
+" -s, --sysv u¿ycie algorytmu Systemu V i bloków po 512 bajtów\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+"Wymuszenie zapisu zmienionych bloków na dysk, aktualizacja super-bloku.\n"
+"\n"
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "wszystkie argumenty zosta³y zignorowane"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+"\n"
+"UWAGA: u¿ywana przez ciebie pow³oka systemowa mo¿e mieæ w³asn± wersjê %s,\n"
+"która zwykle zas³ania wersjê tu opisan±. Szczegó³y opcji tego polecenia\n"
+"opisuje dokumentacja.\n"
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help wy¶wietlenie tego opisu i zakoñczenie\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version wy¶wietlenie informacji o wersji i zakoñczenie\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Przepisanie ka¿dego PLIKU na standardowe wyj¶cie, w odwrotnym porz±dku:\n"
+"ostatnia linia pierwsza. Je¿eli PLIK nie jest podany lub PLIK to -, czytane\n"
+"jest standardowe wej¶cie.\n"
+"\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before do³±czenie separatora przed zamiast po\n"
+" -r, --regex interpretowanie separatora jako wyr. regularnego\n"
+" -s, --separator=£AÑCUCH u¿ycie £AÑCUCHA jako separatora zamiast nowej "
+"linii\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, c-format
+msgid "%s: seek failed"
+msgstr "%s: nie uda³o siê ustawienie pozycji"
+
+#: src/tac.c:265
+#, c-format
+msgid "record too large"
+msgstr "rekord jest za du¿y"
+
+#: src/tac.c:459
+#, c-format
+msgid "cannot create temporary file %s"
+msgstr "nie mo¿na utworzyæ pliku tymczasowego %s"
+
+#: src/tac.c:466
+#, c-format
+msgid "cannot open %s for writing"
+msgstr "nie mo¿na otworzyæ %s do pisania"
+
+#: src/tac.c:487 src/tac.c:494
+#, c-format
+msgid "%s: write error"
+msgstr "%s: b³±d zapisu"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "separator nie mo¿e byæ pusty"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Wypisanie %d ostatnich linii ka¿dego PLIKU na standardowym wyj¶ciu.\n"
+"Dla wiêkszej liczby PLIKÓW ka¿da porcja ma nag³ówek z nazw±. Je¿eli PLIK "
+"nie\n"
+"jest podany lub PLIK to -, czytane jest standardowe wej¶cie.\n"
+"\n"
+
+#: src/tail.c:229
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry sta³e ponawianie próby otwierania pliku, nawet\n"
+" je¿eli jest niedostêpny albo staje siê "
+"niedostêpny\n"
+" pó¼niej; u¿yteczne do ¶ledzenia wg nazwy, np. z\n"
+" --follow=name\n"
+" -c, --bytes=N wypisanie ostatnich N bajtów; u¿yj +N do "
+"wypisania\n"
+" bajtów od N-ego najtu ka¿dego z podanych plików\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={name|descriptor}]\n"
+" wypisywanie nowych danych kiedy plik ro¶nie;\n"
+" -f, --follow i --follow=descriptor s±\n"
+" równowa¿ne\n"
+" -F to samo co --follow=name --retry\n"
+
+#: src/tail.c:244
+#, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=N wypisanie ostatnich N linii zamiast ostatnich %d\n"
+" --max-unchanged-stats=N\n"
+" z --follow=name powoduje ponowne otwieranie "
+"PLIKU,\n"
+" który nie zmieni³ rozmiaru po N (domy¶lnie %d)\n"
+" iteracjach, dla sprawdzenia czy zosta³ usuniêty\n"
+" albo przemianowany (czêsty przypadek dla logów)\n"
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID z -f - zakoñczenie pracy po zakoñczeniu procesu "
+"o\n"
+" numerze PID\n"
+" -q, --quiet, --silent bez wypisywania nag³ówków z nazwami plików\n"
+" -s, --sleep-interval=S z -f - odczekanie za ka¿dym razem S sekund\n"
+" -v, --verbose wypisywanie zawsze nag³ówków z nazwami plików\n"
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"Je¿eli pierwszy znak N (liczby bajtów lub linii) to `+', pisanie zaczyna\n"
+"siê od N-tego elementu od pocz±tku ka¿dego pliku. W przeciwnym wypadku\n"
+"wypisanych jest ostatnich N elementów pliku. N mo¿e mieæ mno¿nik: b - 512, "
+"k\n"
+"1024 albo m - 1024*1024 (1 mega).\n"
+"\n"
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"Z --follow (-f) tail domy¶lnie ¶ledzi przyrosty zawarto¶ci pliku o "
+"okre¶lonym\n"
+"deskryptorze, wiêc nawet po zmianie nazwy ¶ledzi ten sam plik. "
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"To zachowanie\n"
+"jest niepo¿±dane, je¿eli ¶ledzony ma byæ plik o okre¶lonej nazwie (np.\n"
+"plik loga podlegaj±cy rotacji). W tym przypadku nale¿y u¿yæ --follow=name, "
+"co\n"
+"powoduje, ¿e tail ¶ledzi podany plik, otwieraj±c go co jaki¶ czas ponownie,\n"
+"¿eby sprawdziæ, czy nie zosta³ usuniêty i ponownie utworzony przez jaki¶ "
+"inny\n"
+"program.\n"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "zamykanie %s (fd=%d)"
+
+#: src/tail.c:411
+#, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: nie mo¿na ustawiæ pozycji wzglêdnej %s"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s: nie mo¿na ustawiæ pozycji %s wzglêdem koñca pliku"
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr "%s sta³ siê niedostêpny"
+
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+"%s zosta³ zamieniony na plik, którego nie mo¿na ¶ledziæ tailem; koniec "
+"¶ledzenia"
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr "%s sta³ siê dostêpny"
+
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "%s pojawi³ siê; ¶ledzenie koñca nowego pliku"
+
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "%s zosta³ podmieniony; ¶ledzenie koñca nowego pliku"
+
+#: src/tail.c:1025
+#, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: zresetowanie trybu nie blokuj±cego nie by³o mo¿liwe"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: plik obciêty"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "nie ma wiêcej plików"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr "%s: pliku tego typu nie mo¿na ¶ledziæ"
+
+#: src/tail.c:1439
+#, c-format
+msgid "number in %s is too large"
+msgstr "liczba w %s jest za du¿a"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr ""
+"%s: b³êdna maksymalna liczba braków zmian stanów miêdzy otwarciami pliku"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: b³êdny PID"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: b³êdna liczba sekund"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr "opcja u¿yta w b³êdnym kontek¶cie -- %c"
+
+#: src/tail.c:1566
+#, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "uwaga: opcja --retry jest przydatna g³ównie przy ¶ledzeniu nazwy"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+"uwaga: zignorowany PID; opcja --pid=PID jest przydatna tylko przy ¶ledzeniu"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "uwaga: opcja --pid=PID nie dzia³a w tym systemie"
+
+#: src/tail.c:1667
+#, c-format
+msgid "cannot follow %s by name"
+msgstr "nie mo¿na pokazywaæ pliku %s wg nazwy"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr "warning: sta³e pod±¿anie za standardowym wej¶ciem mo¿e sie nie udaæ"
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Kopiuje standardowe wej¶cie do ka¿dego PLIKU oraz na standardowe wyj¶cie.\n"
+"\n"
+" -a, --append dopisywanie do PLIKU, nie nadpisywanie\n"
+" -i, --ignore-interrupts ignorowanie sygna³ów przerwania\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Je¿eli PLIK to -, dane s±kopiowane na standardowe wyj¶cie.\n"
+
+#: src/test.c:125
+#, c-format
+msgid "missing argument after %s"
+msgstr "brakuj±cy argument %s"
+
+#: src/test.c:161
+#, c-format
+msgid "invalid integer %s"
+msgstr "b³êdna liczba ca³kowita %s"
+
+#: src/test.c:242
+msgid "')' expected"
+msgstr "spodziewany `)'"
+
+#: src/test.c:245
+#, c-format
+msgid "')' expected, found %s"
+msgstr "spodziewany `)', a jest %s"
+
+#: src/test.c:261 src/test.c:606
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: spodziewany operator jednoargumentowy"
+
+#: src/test.c:330
+msgid "-nt does not accept -l"
+msgstr "-nt nie dopuszcza -l"
+
+#: src/test.c:343
+msgid "-ef does not accept -l"
+msgstr "-ef nie dopuszcza -l"
+
+#: src/test.c:359
+msgid "-ot does not accept -l"
+msgstr "-ot nie dopuszcza -l"
+
+#: src/test.c:368
+msgid "unknown binary operator"
+msgstr "nieznany operator dwuargumentowy"
+
+#: src/test.c:634
+#, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: spodziewany operator dwuargumentowy"
+
+#: src/test.c:694
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Sk³adnia: test WYRA¯ENIE\n"
+" albo: test\n"
+" albo: [ WYRA¯ENIE ]\n"
+" albo: []\n"
+" albo: [ OPCJA\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"Zakoñczenie pracy z kodem wyj¶cia zale¿nym od WYRA¯ENIA.\n"
+"\n"
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"\n"
+"Je¿eli brakuje WYRA¯ENIA, domy¶lna warto¶æ to fa³sz. W przeciwnym przypadku\n"
+"WYRA¯ENIE jest prawdziwe lub fa³szywe i wynika z niego kod stanu - jeden z:\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+"\n"
+" ( WYRA¯ENIE ) WYRA¯ENIE jest prawdziwe\n"
+" ! WYRA¯ENIE WYRA¯ENIE jest fa³szywe\n"
+" WYRA¯ENIE1 -a WYRA¯ENIE2 WYRA¯ENIE1 i WYRA¯ENIE2 s± prawdziwe\n"
+" WYRA¯ENIE1 -o WYRA¯ENIE2 WYRA¯ENIE1 lub WYRA¯ENIE2 jest prawdziwe\n"
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"\n"
+" [-n] £AÑCUCH £AÑCUCH ma d³ugo¶æ ró¿n± od zera\n"
+" £AÑCUCH równowa¿ne z -n £AÑCUCH\n"
+" -z £AÑCUCH £AÑCUCH ma d³ugo¶æ równ± zero\n"
+" £AÑCUCH1 = £AÑCUCH2 ³añcuchy s± równe\n"
+" £AÑCUCH1 != £AÑCUCH2 ³añcuchy s± ró¿ne\n"
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" LICZBA1 -eq LICZBA2 LICZBA1 równa LICZBIE2 (liczby ca³kowite)\n"
+" LICZBA1 -ge LICZBA2 LICZBA1 wiêksza lub równa LICZBIE2\n"
+" LICZBA1 -gt LICZBA2 LICZBA1 wiêksza od LICZBY2\n"
+" LICZBA1 -le LICZBA2 LICZBA1 mniejsza lub równa LICZBIE2\n"
+" LICZBA1 -lt LICZBA2 LICZBA1 mniejsza od LICZBY2\n"
+" LICZBA1 -ne LICZBA2 LICZBA1 jest ró¿na od LICZBY2\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+"\n"
+" PLIK1 -ef PLIK2 PLIK1 i PLIK2 maj± ten sam numer urz±dzenia i i-wêz³a\n"
+" PLIK1 -nt PLIK2 PLIK1 jest nowszy ni¿ PLIK2 (wg daty modyfikacji)\n"
+" PLIK1 -ot PLIK2 PLIK1 jest starszy ni¿ PLIK2\n"
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+"\n"
+" -b PLIK PLIK istnieje i jest urz±dzeniem blokowym\n"
+" -c PLIK PLIK istnieje i jest urz±dzeniem znakowym\n"
+" -d PLIK PLIK istnieje i jest katalogiem\n"
+" -e PLIK PLIK istnieje\n"
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+" -f PLIK PLIK istnieje i jest zwyk³ym plikiem\n"
+" -g PLIK PLIK istnieje i ma atrybut set-group-id\n"
+" -G PLIK PLIK istnieje i jego w³a¶cicielem jest efektywna grupa\n"
+" -h PLIK PLIK istnieje i jest dowi±zaniem symbolicznym (to samo co -"
+"L)\n"
+" -k PLIK PLIK istnieje i ma ustawiony bit ochrony (sticky bit)\n"
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+" -L PLIK PLIK istnieje i jest dowi±zaniem symbolicznym (to samo co -h)\n"
+" -O PLIK PLIK istnieje i jego w³a¶cicielem jest efektywny u¿ytkownik\n"
+" -p PLIK PLIK istnieje i jest potokiem z nazw± (named pipe)\n"
+" -r PLIK PLIK istnieje i mo¿e byæ czytany\n"
+" -s PLIK PLIK istnieje i ma d³ugo¶æ wiêksz± od zera\n"
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+" -S PLIK PLIK istnieje i jest gniazdem\n"
+" -t DP deskryptor pliku DP jest otwarty na terminalu\n"
+" -u PLIK PLIK istnieje i ma atrybut set-user-id\n"
+" -w PLIK PLIK istnieje i mo¿e byæ zapisywany\n"
+" -x PLIK PLIK istnieje i jest wykonywalny albo przeszukiwalny\n"
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"Wszystkie testy dotycz±ce PLIKÓW oprócz -h i -L rozwijaj± ³±cza "
+"symboliczne.\n"
+"Nale¿y zwróciæ uwagê na to, ¿e nawiasy musz± byæ chronione (np. przez `\\')\n"
+"przed interpretacj± przez pow³okê. LICZBA musi byæ ca³kowita i mo¿e mieæ "
+"tak¿e\n"
+"postaæ -l £AÑCUCH, czyli d³ugo¶æ £AÑCUCHA.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr "test i/lub ["
+
+#: src/test.c:831
+msgid "missing `]'"
+msgstr "brak `]'"
+
+#: src/test.c:846
+#, c-format
+msgid "extra argument %s"
+msgstr "nadmiarowy argument: %s"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "b³êdny format daty %s"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "utworzenie %s"
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr "nie mo¿na dotkn±æ %s"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "ustawienie czasu %s"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+"Uaktualnienie czasu ostatniego odczytu lub modyfikacji ka¿dego PLIKU do\n"
+"bie¿±cego czasu.\n"
+"\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a zmiana tylko czasu dostêpu\n"
+" -c, --no-create bez tworzenia nowych plików\n"
+" -d, --date=£AÑCUCH u¿ycie £AÑCUCHA znaków zamiast bie¿±cego czasu\n"
+" -f (ignorowane)\n"
+" -m zmiana tylko czasu modyfikacji\n"
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --reference=PLIK u¿ycie czasu tego PLIKU zamiast czasu bie¿±cego\n"
+" -t CZAS u¿ycie [[CC]YY]MMDDhhmm[.ss] zamiast bie¿±cego "
+"czasu\n"
+" --time=S£OWO ustawienie czasu wg S£OWA: access atime use (czas\n"
+" dostêpu, to samo co -a), modify mtime (czas\n"
+" modyfikacji, to samo co -m)\n"
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"Nale¿y zauwa¿yæ, ¿e opcje -d i -t akceptuj± ró¿ne formaty daty/czasu.\n"
+"\n"
+"Je¿eli PLIK to -, touch dzia³a na standardowym wej¶ciu.\n"
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "nie mo¿na podaæ czasu z wiêcej ni¿ jednego ¼ród³a"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+"uwaga: `touch %s' jest form± przestarza³±; u¿ywaj `touch -t %04ld%02d%02d%02d"
+"%02d.%02d'"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Sk³adnia: %s [OPCJA]... ZBIÓR1 [ZBIÓR2]\n"
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Zamiana, usuniêcie wielokrotnych i/lub skasowanie znaków ze standardowego\n"
+"wej¶cia. Wyniki s± zapisywane do standardowego wyj¶cia.\n"
+"\n"
+" -c, -C, --complement zbiór znaków komplementarny do ZBIORU1\n"
+" -d, --delete skasowanie znaków ze ZBIORU1, bez zamian\n"
+" -s, --squeeze-repeats zamiana ci±gu takich samych znaków ze ZBIORU1 na\n"
+" pojedyncze wyst±pienia takich znaków\n"
+" -t, --truncate-set1 najpierw ZBIÓR1 jest obcinany do d³ugo¶ci ZBIORU2\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"ZBIORY s± podawane jako ci±gi znaków. Wiêkszo¶æ znaków reprezentuje same\n"
+"siebie. Specjalnie interpretowane ci±gi to:\n"
+"\n"
+" \\NNN znak o warto¶ci ósemkowej NNN (od 1 do 3 cyfr "
+"ósemkowych)\n"
+" \\\\ uko¶nik odwrotny\n"
+" \\a znak BEL\n"
+" \\b backspace\n"
+" \\f nowa strona\n"
+" \\n nowa linia\n"
+" \\r powrót karetki\n"
+" \\t tabulacja pozioma\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v tabulacja pionowa\n"
+" ZNAK1-ZNAK2 wszystkie znaki od ZNAK1 do ZNAK2, rosn±co\n"
+" [ZNAK*] w ZBIORZE2 kopiuje ZNAK uzupe³niaj±c do d³ugo¶ci ZBIORU1\n"
+" [ZNAK*POWTÓRZ] POWTÓRZ kopii ZNAKU, ósemkowo gdy zaczyna siê od 0\n"
+" [:alnum:] wszystkie litery i cyfry\n"
+" [:alpha:] wszystkie litery\n"
+" [:blank:] wszystkie odstêpy poziome\n"
+" [:cntrl:] wszystkie znaki steruj±ce\n"
+" [:digit:] wszystkie cyfry\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] wszystkie znaki drukowalne oprócz spacji\n"
+" [:lower:] wszystkie ma³e litery\n"
+" [:print:] wszystkie znaki drukowalne w³±cznie ze spacj±\n"
+" [:punct:] wszystkie znaki przestankowe\n"
+" [:space:] wszystkie odstêpy poziome i pionowe\n"
+" [:upper:] wszystkie wielkie litery\n"
+" [:xdigit:] wszystkie cyfry szesnastkowe\n"
+" [=ZNAK=] wszystkie znaki równowa¿ne ZNAKOWI\n"
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"Zamiana nastêpuje gdy nie jest podana opcja -d i s± podane oba zbiory "
+"ZBIÓR1\n"
+"i ZBIÓR2. -t mo¿e byæ u¿yte tylko przy zamianie. W razie potrzeby ZBIÓR2\n"
+"jest uzupe³niany do d³ugo¶ci ZBIORU1 przez powtórzenie ostatniego znaku.\n"
+"Nadmiarowe znaki ZBIORU2 s± ignorowane. "
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"Tylko [:lower:] i [:upper:] bêd± na\n"
+"pewno rozwiniête w porz±dku rosn±cym; u¿yte w ZBIORZE2 przy zamianie, mog± "
+"byæ\n"
+"tylko zestawione w parach dla konwersji ma³e-wielkie litery. "
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"Je¿eli operacj±\n"
+"nie jest ani zamiana ani kasowanie, -s u¿ywa ZBIORU1. W przeciwnym wypadku\n"
+"u¿ywa ZBIORU2 i kompresja powtórzeñ zachodzi po zamianie i kasowaniu.\n"
+
+#: src/tr.c:519
+#, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"uwaga: niejednoznaczny zapis ósemkowy \\%c%c%c zostanie\n"
+"\tzinterpretowany jako sekwencja 2-bajtowa \\0%c%c, %c"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "koñce zakresu `%s-%s' s± w odwrotnym porz±dku sortowania"
+
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "b³êdna liczba powtórzeñ %s w specyfikacji [c*n]"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "brakuj±ca nazwa klasy znaków `[::]'"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "brakuj±cy znak dla klasy równowa¿no¶ci `[==]'"
+
+#: src/tr.c:937
+#, c-format
+msgid "invalid character class %s"
+msgstr "b³êdna klasa znaków %s"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: operand klasy równowa¿no¶ci musi byæ pojedynczym znakiem"
+
+#: src/tr.c:1275
+#, c-format
+msgid "too many characters in set"
+msgstr "za du¿o znaków w zbiorze"
+
+# should it be string1 or SET1?
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "specyfikacja powtarzania [c*] nie mo¿e byæ w ZBIORZE1"
+
+# string2 or SET2?
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "tylko jedna specyfikacja powtarzania [c*] mo¿e byæ w ZBIORZE2"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "wyra¿enia [=c=] nie mog± byæ w ZBIORZE2 przy zamianie"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "je¿eli nie jest obcinany ZBIÓR1, ZBIÓR2 musi byæ niepusty"
+
+# ? - rzm
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"przy zamianie z u¿yciem dope³nieñ klas znaków,\n"
+"ZBIÓR2 musi odwzorowywaæ wszystkie znaki z dziedziny na jeden"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"przy zamianie w ZBIORZE2 mog± siê pojawiæ tylko klasy znaków\n"
+"`upper' i `lower'"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "specyfikacja [c*] mo¿e siê pojawiæ w ZBIORZE2 tylko przy zamianie"
+
+#: src/tr.c:1731
+msgid "Two strings must be given when translating."
+msgstr "Przy zamianie musz± byæ podane dwa zbiory"
+
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr "Przy kasowaniu bez kompresji powtórzeñ mo¿e byæ podany tylko 1 zbiór."
+
+# ? - rzm
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "nie wyrównane konstrukcje [:upper:] i/lub [:lower:]"
+
+#: src/true.c:42
+#, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Sk³adnia: %s [argumenty s± ignorowane]\n"
+" albo: %s OPCJA\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr "Wyj¶cie z kodem oznaczaj±cym powodzenie."
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Sk³adnia: %s [OPCJA] [PLIK]\n"
+"Wypisanie ca³kowicie uporz±dkowanej listy zgodnie z czê¶ciowym porz±dkiem\n"
+"w PLIKU. Gdy nie podano PLIKU albo gdy PLIK to -, czytane jest standardowe\n"
+"wej¶cie.\n"
+"\n"
+
+#: src/tsort.c:474
+#, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: dane wej¶ciowe zawieraj± nieparzyst± liczbê elementów"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: dane wej¶ciowe zawieraj± pêtlê:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Sk³adnia: %s [OPCJA]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Napisanie nazwy terminala zwi±zanego ze standardowym wej¶ciem.\n"
+"\n"
+" -s, --silent, --quiet nic nie jest wypisywane, zwracany jest kod "
+"powrotu\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "to nie jest terminal"
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Napisanie informacji o systemie. Bez opcji dzia³a jak z -s.\n"
+"\n"
+" -a, --all pokazanie wszystkich informacji w nastêpuj±cej\n"
+" kolejno¶ci, oprócz -p i -i, je¿eli nieznane:\n"
+" -s, --kernel-name pokazanie nazwy j±dra systemu operacyjnego\n"
+" -n, --nodename pokazanie sieciowej nazwy systemu\n"
+" -r, --kernel-release pokazanie numeru edycji j±dra systemu\n"
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v, --kernel-version pokazanie numeru wersji j±dra systemu\n"
+" -m, --machine pokazanie nazwy sprzêtu (architektury)\n"
+" -p, --processor pokazanie typu procesora albo \"unknown"
+"\" (nieznany)\n"
+" -i, --hardware-platform pokazanie platformy sprzêtowej albo \"unknown\"\n"
+" -o, --operating-system pokazanie nazwy systemu operacyjnego\n"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "nie mo¿na ustaliæ nazwy systemu"
+
+#: src/unexpand.c:125
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"W ka¿dym PLIKU spacje zamieniane s± na TABy, wynik jest wypisywany na\n"
+"standardowe wyj¶cie. Je¿eli PLIK nie jest podany lub PLIK to -, czytane\n"
+"jest standardowe wej¶cie.\n"
+"\n"
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all zamiana wszystkich odstêpów, nie tylko pocz±tkowych\n"
+" --first-only zamiana tylko pocz±tkowych odstêpów (wy³±cza -a)\n"
+" -t, --tabs=N kolejne TABy co N znaków zamiast 8 (w³±cza -a)\n"
+" -t, --tabs=LISTA u¿ycie oddzielanej przecinkami LISTY pozycji TABów\n"
+" (w³±cza -a)\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr "znaki tabulacji zbyt odleg³e od siebie"
+
+#: src/unexpand.c:512
+#, c-format
+msgid "tab stop value is too large"
+msgstr "za du¿a warto¶æ pozycji koñca TABów"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Sk³adnia: %s [OPCJA]... [WEJ¦CIE [WYJ¦CIE]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"Pominiêcie wszystkich kolejnych identycznych linii z WEJ¦CIA (lub\n"
+"standardowego wej¶cia) oprócz jednej, wynik jest zapisywany na WYJ¦CIE (lub\n"
+"standardowe wyj¶cie).\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count poprzedzenie linii liczb± powtórzeñ\n"
+" -d, --repeated wypisanie tylko powtórzonych linii\n"
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated[=metoda-oddzielenia] wypisanie wszystkich\n"
+" powtarzaj±cych siê linii.\n"
+" metoda-oddzielenia={none(domy¶lna),prepend,"
+"separate}\n"
+" Do oddzielania u¿ywane s± puste linie\n"
+" -f, --skip-fields=N bez porównania pierwszych N pól\n"
+" -i, --ignore-case ignorowanie ró¿nic miêdzy ma³ymi i wielkimi "
+"literami\n"
+" -s, --skip-chars=N bez porównania pierwszych N znaków\n"
+" -u, --unique wypisanie tylko linii unikalnych\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr " -w, --check-chars=N porównanie najwy¿ej N znaków w liniach\n"
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"Pole to ci±g znaków odstêpu, za którym s± znaki nie bêd±ce znakami odstepu.\n"
+"Pola s± przeskakiwane przed przeskakiwaniem znaków. \n"
+
+#: src/uniq.c:350
+#, c-format
+msgid "too many repeated lines"
+msgstr "za du¿o powtórzonych linii"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "b³êdna liczba pól do przeskoczenia"
+
+# bytes to skip? we were talking about chars? - rzm
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "b³êdna liczba bajtów do przeskoczenia"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "b³êdna liczba bajtów do porównania"
+
+# ? rzm
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+"wypisywanie wszystkich powtórzonych linii i ilo¶ci powtórzeñ nie ma sensu"
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Sk³adnia: %s PLIK\n"
+" albo: %s OPCJA\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"Wywo³anie funkcji unlink (usuñ) aby usun±æ podany PLIK.\n"
+"\n"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "nie mo¿na usun±æ %s"
+
+# pola tabelki wymagaja poprawienia szerokosci -pk
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "sprawdzenie czasu startu systemu jest niemo¿liwe"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s dzia³a "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "am"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "pm"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr " ??:???? up "
+
+# msgid_plural? - 20051029 rzm
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr "???? dni ??:??, "
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%ld dzieñ"
+msgstr[1] "%ld dni"
+msgstr[2] "%ld dni"
+
+#: src/uptime.c:147
+#, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%lu u¿ytkownik"
+msgstr[1] "%lu u¿ytkownicy"
+msgstr[2] "%lu u¿ytkowników"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", ¶rednie obci±¿enie: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Sk³adnia: %s [OPCJA]... [ PLIK ]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Wy¶wietlenie aktualnej godziny, czasu dzia³ania systemu, liczby "
+"u¿ytkowników\n"
+"zalogowanych w systemie oraz ¶redni± liczbê procesów uruchamianych w ci±gu\n"
+"ostatnich 1, 5 i 15 minut.\n"
+"Je¶li nie podano PLIKU, u¿ywa %s. %s jest czêsto podawane jako PLIK.\n"
+"\n"
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Wy¶wietla kto jest zalogowany wed³ug informacji w PLIKU.\n"
+"Je¶li brak PLIKU, u¿ywa %s. Czêsto podaje siê te¿ %s.\n"
+"\n"
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Dla ka¿dego PLIKU wypisywana jest liczba naków nowej linii, s³ów i bajtów\n"
+"oraz podsumowanie je¿eli podany jest wiêcej ni¿ jeden PLIK. Je¿eli PLIK nie\n"
+"jest podany lub PLIK to -, czytane jest standardowe wej¶cie.\n"
+" -c, --bytes wypisanie liczby bajtów\n"
+" -m, --chars wypisanie liczby znaków\n"
+" -l, --lines wypisanie liczby znaków nowej linii\n"
+
+#: src/wc.c:121
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" --files0-from=F pliki wej¶ciowe s± pliku F, oddzielone NUL-ami\n"
+" -L, --max-line-length wypisanie d³ugo¶ci najd³u¿szej linii\n"
+" -w, --words wypisanie liczby s³ów\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr "przy czytaniu nazw na wej¶ciu plik nie mo¿e mieæ nazwy %s"
+
+#: src/who.c:212
+msgid " old "
+msgstr "dawno"
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "zakoñczenie="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "wyj¶cie="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "zmiana czasu"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "run-level"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "ostatni="
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"liczba u¿ytkowników=%lu\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "U¯YTKOWNIK"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "TERM"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "CZAS"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr "BEZCZYNNY"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "KOMENTARZ"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "WYJ¦CIE"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Sk³adnia: %s [OPCJA]... [ PLIK | ARGUMENT1 ARGUMENT2 ]\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" -a, --all to samo co -b -d --login -p -r -t -T -u\n"
+" -b, --boot czas ostatniego uruchomienia systemu\n"
+" -d, --dead wypisanie martwych procesów\n"
+" -H, --heading wypisanie linii nag³ówków kolumn\n"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr " -l, --login wypisanie systemowych procesów login\n"
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+" --lookup rozwi±zywanie nazw systemów poprzez DNS\n"
+" -m wy¶wietlenie tylko nazwy systemu i u¿ytkownika "
+"zwi±zanego\n"
+" ze standardowym wej¶ciem\n"
+" -p, --process aktywne procesy uruchomione przez init\n"
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+" -q, --count wszystkie nazwy i liczba zalogowanych u¿ytkowników\n"
+" -r, --runlevel bie¿±cy runlevel\n"
+" -s, --short wypisanie tylko u¿ytkownika, terminala i czasu "
+"(domy¶lnie)\n"
+" -t, --time podanie ostatniej zmiany zegara systemowego\n"
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+" -T, -w, --mesg zaznaczenie czy u¿ytkownik przyjmuje komunikaty: +, - "
+"lub ?\n"
+" -u, --users wypisanie zalogowanych u¿ytkowników\n"
+" --message to samo co -T\n"
+" --writable to samo co -T\n"
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"Je¶li nie podano PLIKU, u¿ywany jest %s. Czêsto podaje siê %s.\n"
+"Obecno¶æ ARG1 ARG2 implikuje -m. Typowe wywo³ania: `am i', `mom likes'.\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr "Uwaga: opcja -i zostanie w przysz³o¶ci usuniêta, u¿ywaj -u"
+
+#: src/whoami.c:51
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Wypisanie nazwy u¿ytkownika zwi±zanego z aktualnym efektywnym\n"
+"idetyfikatorem u¿ytkownika. Dzia³a jak id -un.\n"
+"\n"
+
+#: src/whoami.c:95
+#, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: nie mo¿na znale¼æ nazwy u¿ytkownika o ID %lu\n"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Sk³adnia: %s [£AÑCUCH]\n"
+" albo: %s OPCJA\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"Powtarzanie na wyj¶ciu linii ze wszystkimi podanymi £AÑCUCH(AMI) albo `y'\n"
+"\n"
+
+#~ msgid "strip failed"
+#~ msgstr "b³±d strip"
+
+#~ msgid "-R -h requires -P"
+#~ msgstr "-R -h wymaga -P"
+
+#~ msgid "value %s is so large that it is not representable"
+#~ msgstr "warto¶æ %s jest tak du¿a, ¿e nie mo¿e zostaæ wyra¿ona"
+
+#~ msgid "%s: count `%.*s' too large"
+#~ msgstr "%s: liczba `%.*s' jest za du¿a"
diff --git a/po/pt.gmo b/po/pt.gmo
new file mode 100644
index 0000000..d5bb905
--- /dev/null
+++ b/po/pt.gmo
Binary files differ
diff --git a/po/pt.po b/po/pt.po
new file mode 100644
index 0000000..c5f8977
--- /dev/null
+++ b/po/pt.po
@@ -0,0 +1,10404 @@
+# Portuguese translation of the "sh-utils" messages
+# Copyright (C) 1996 Free Software Foundation, Inc.
+# António João Serras Rendas <arendas@mail.telepac.pt>, 1996
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: sh-utils 1.12i\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 1996-11-08 20:03+0100\n"
+"Last-Translator: António João Serras Rendas <arendas@mail.telepac.pt>\n"
+"Language-Team: Português <pt@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, fuzzy, c-format
+msgid "setting permissions for %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: lib/argmatch.c:134
+#, fuzzy, c-format
+msgid "invalid argument %s for %s"
+msgstr "argumento inválido `%s'"
+
+#: lib/argmatch.c:135
+#, fuzzy, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "falta um argumento a `%s'"
+
+#: lib/argmatch.c:154
+#, fuzzy, c-format
+msgid "Valid arguments are:"
+msgstr "argumento inválido `%s'"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "erro na escrita"
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "operador binário desconhecido"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, fuzzy, c-format
+msgid "cannot stat %s"
+msgstr "não consigo alterar data"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr ""
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr ""
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr ""
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr ""
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr ""
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr ""
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr ""
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr ""
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr ""
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr ""
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr ""
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr ""
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr ""
+
+#: lib/gai_strerror.c:44
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "ficheiros \"fifo\" não suportados"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "ficheiros \"fifo\" não suportados"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr ""
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "ficheiros \"fifo\" não suportados"
+
+#: lib/gai_strerror.c:54
+#, fuzzy
+msgid "System error"
+msgstr "erro na escrita"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+#, fuzzy
+msgid "Unknown error"
+msgstr "operador binário desconhecido"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, fuzzy, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "opção inválida `%s'"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, fuzzy, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "opção inválida `%s'"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, fuzzy, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "opção inválida `%s'"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/human.c:477
+msgid "block size"
+msgstr ""
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, fuzzy, c-format
+msgid "cannot change permissions of %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, fuzzy, c-format
+msgid "cannot create directory %s"
+msgstr "não consigo obter a directoria actual"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+#, fuzzy
+msgid "memory exhausted"
+msgstr "memória virtual esgotada"
+
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr "não consigo obter a directoria actual"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "opção inválida `%s'"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "opção inválida `%s'"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "data inválida `%s'"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "memória virtual esgotada"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "opção inválida `%s'"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "opção inválida `%s'"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "opção inválida `%s'"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "opção inválida `%s'"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr ""
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr ""
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr ""
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr ""
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr ""
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr ""
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr ""
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr ""
+
+#: lib/userspec.c:107
+#, fuzzy
+msgid "invalid user"
+msgstr "\\%c: caracter de escape inválido"
+
+#: lib/userspec.c:108
+#, fuzzy
+msgid "invalid group"
+msgstr "opção inválida `%s'"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "\\%c: caracter de escape inválido"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xfts.c:58
+#, fuzzy, c-format
+msgid "invalid argument: %s"
+msgstr "argumento inválido `%s'"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr ""
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr ""
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr ""
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "ficheiro de destino ausente"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "data inválida `%s'"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "data inválida `%s'"
+
+#: lib/xstrtol.h:74
+#, c-format
+msgid "%s `%s' too large"
+msgstr ""
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Tente `%s --help' para mais informação.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+"Mostra o nome do utilizador actual.\n"
+"\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "erro de leitura"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "data inválida `%s'"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, fuzzy, c-format
+msgid "extra operand %s"
+msgstr "modo inválido `%s'"
+
+#: src/base64.c:316 src/cat.c:785
+#, fuzzy, c-format
+msgid "closing standard input"
+msgstr "canal de entrada por omissão (stdin)"
+
+#: src/basename.c:54
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Utilização: %s NOME\n"
+" ou: %s OPÇÃO\n"
+
+#: src/basename.c:59
+#, fuzzy
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Se não for especificada nenhuma VARIÁVEL do ambiente, mostra todas.\n"
+"\n"
+" --help mostrar esta ajuda\n"
+" --version mostrar informação de versão e sair\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, fuzzy, c-format
+msgid "missing operand"
+msgstr "falta um argumento a `%s'"
+
+#: src/cat.c:95
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Utilização: %s [OPÇÃO]... [FICHEIRO]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+#: src/cat.c:333
+#, fuzzy, c-format
+msgid "cannot do ioctl on %s"
+msgstr "não consigo correr %s"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "canal de saída padrão (stdout)"
+
+#: src/cat.c:720
+#, fuzzy, c-format
+msgid "%s: input file is output file"
+msgstr "tamanho de tab inválido: %s"
+
+#: src/chgrp.c:95 src/install.c:611
+#, fuzzy, c-format
+msgid "invalid group %s"
+msgstr "opção inválida `%s'"
+
+#: src/chgrp.c:112
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Utilização: %s [OPÇÃO]... DONO[.[GRUPO]] FICHEIRO...\n"
+" ou: %s [OPÇÃO]... .[GRUPO] FICHEIRO...\n"
+
+#: src/chgrp.c:117
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr ""
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, fuzzy, c-format
+msgid "missing operand after %s"
+msgstr "falta um argumento a `%s'"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, fuzzy, c-format
+msgid "failed to get attributes of %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/chmod.c:128
+#, fuzzy, c-format
+msgid "getting new attributes of %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, fuzzy, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "ligação (link) simbólica"
+
+#: src/chmod.c:160
+#, fuzzy, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "modo de %s mudado para %04o (%s)\n"
+
+#: src/chmod.c:163
+#, fuzzy, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "modo de %s mudado para %04o (%s)\n"
+
+#: src/chmod.c:166
+#, fuzzy, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "modo de %s mantido como %04o (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, fuzzy, c-format
+msgid "cannot access %s"
+msgstr "não consigo correr %s"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, fuzzy, c-format
+msgid "cannot read directory %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/chmod.c:251
+#, fuzzy, c-format
+msgid "changing permissions of %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/chmod.c:286
+#, fuzzy, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, fuzzy, c-format
+msgid "fts_read failed"
+msgstr "`%s' não é um ficheiro normal"
+
+#: src/chmod.c:345
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Utilização: %s [OPÇÃO]... MODO[,MODO]... FICHEIRO...\n"
+" ou: %s [OPÇÃO]... MODO_OCTAL FICHEIRO...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chmod.c:360
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+"\n"
+" -c, --changes igual ao modo \"verbose\" mas avisa só quando uma \n"
+" alteração é feita\n"
+" -f, --silent, --quiet desligar a maior parte das mensagens de erro\n"
+" -v, --verbose mostrar um diagnóstico por cada ficheiro processado\n"
+" -R, --recursive mudar ficheiros e directorias recursivamente\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a versão e sair\n"
+"\n"
+"Cada MODO é uma ou mais das letras ugoa, um dos símbolos +-= e uma ou \n"
+"mais das letras rwxXstugo.\n"
+"\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr ""
+
+#: src/chmod.c:510
+#, fuzzy, c-format
+msgid "invalid mode: %s"
+msgstr "data inválida `%s'"
+
+#: src/chown-core.c:147
+#, fuzzy, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "modo de %s mudado para %04o (%s)\n"
+
+#: src/chown-core.c:148
+#, fuzzy, c-format
+msgid "changed group of %s to %s\n"
+msgstr "modo de %s mudado para %04o (%s)\n"
+
+#: src/chown-core.c:149
+#, fuzzy, c-format
+msgid "no change to ownership of %s\n"
+msgstr "modo de %s mudado para %04o (%s)\n"
+
+#: src/chown-core.c:152
+#, fuzzy, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/chown-core.c:153
+#, fuzzy, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "modo de %s mudado para %04o (%s)\n"
+
+#: src/chown-core.c:154
+#, fuzzy, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/chown-core.c:157
+#, fuzzy, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "dono de %s mantido como "
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "grupo de %s mantido como %s\n"
+
+#: src/chown-core.c:159
+#, fuzzy, c-format
+msgid "ownership of %s retained\n"
+msgstr "dono de %s mantido como "
+
+#: src/chown-core.c:344
+#, fuzzy, c-format
+msgid "cannot dereference %s"
+msgstr "não consigo correr %s"
+
+#: src/chown-core.c:432
+#, fuzzy, c-format
+msgid "changing ownership of %s"
+msgstr "modo de %s mudado para %04o (%s)\n"
+
+#: src/chown-core.c:433
+#, fuzzy, c-format
+msgid "changing group of %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/chown.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Utilização: %s [OPÇÃO]... DONO[.[GRUPO]] FICHEIRO...\n"
+" ou: %s [OPÇÃO]... .[GRUPO] FICHEIRO...\n"
+
+#: src/chown.c:98
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Utilização: %s [PARÂMETRO]...\n"
+" ou: %s OPÇÃO\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+
+#: src/chroot.c:89
+#, fuzzy, c-format
+msgid "cannot change root directory to %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/chroot.c:92
+#, fuzzy, c-format
+msgid "cannot chdir to root directory"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, fuzzy, c-format
+msgid "cannot run command %s"
+msgstr "não consigo correr %s"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr ""
+
+#: src/cksum.c:265
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Utilização: %s [NÚMERO...]\n"
+" ou: %s OPÇÃO\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+
+#: src/comm.c:73 src/join.c:134
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Utilização: %s [OPÇÃO]... [FICHEIRO]...\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr ""
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, fuzzy, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "modo de %s mudado para %04o (%s)\n"
+
+#: src/copy.c:222
+#, fuzzy, c-format
+msgid "failed to lookup file %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/copy.c:227
+#, fuzzy, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "modo de %s mudado para %04o (%s)\n"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, fuzzy, c-format
+msgid "cannot open %s for reading"
+msgstr "não consigo mover `%s' para `%s'"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, fuzzy, c-format
+msgid "cannot fstat %s"
+msgstr "não consigo alterar data"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr ""
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, fuzzy, c-format
+msgid "cannot remove %s"
+msgstr "não consigo correr %s"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, fuzzy, c-format
+msgid "removed %s\n"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/copy.c:329
+#, fuzzy, c-format
+msgid "cannot create regular file %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, fuzzy, c-format
+msgid "reading %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/copy.c:467 src/head.c:428
+#, fuzzy, c-format
+msgid "cannot lseek %s"
+msgstr "não consigo correr %s"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, fuzzy, c-format
+msgid "writing %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr ""
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, fuzzy, c-format
+msgid "closing %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: escrever por cima de `%s', apesar de modo %04o? "
+
+#: src/copy.c:812
+#, fuzzy, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: escrever por cima de `%s'? "
+
+#: src/copy.c:994
+#, fuzzy, c-format
+msgid " (backup: %s)"
+msgstr "não consigo fazer \"backup\" de `%s'"
+
+#: src/copy.c:1048
+#, fuzzy, c-format
+msgid "omitting directory %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr ""
+
+#: src/copy.c:1093 src/ln.c:209
+#, fuzzy, c-format
+msgid "%s and %s are the same file"
+msgstr "`%s' e `%s' são o mesmo ficheiro"
+
+#: src/copy.c:1149
+#, fuzzy, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/copy.c:1167
+#, fuzzy, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "%s: não posso escrever por cima de directoria com não-directoria"
+
+#: src/copy.c:1185
+#, fuzzy, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "não consigo obter a directoria actual"
+
+#: src/copy.c:1223
+#, fuzzy, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/copy.c:1253
+#, fuzzy, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "fazer \"backup\" de `%s' iria destruir o original; `%s' não copiado"
+
+#: src/copy.c:1254
+#, fuzzy, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "fazer \"backup\" de `%s' iria destruir o original; `%s' não copiado"
+
+#: src/copy.c:1273 src/ln.c:239
+#, fuzzy, c-format
+msgid "cannot backup %s"
+msgstr "não consigo correr %s"
+
+#: src/copy.c:1372
+#, fuzzy, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/copy.c:1389
+#, fuzzy, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/copy.c:1414
+#, fuzzy, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/copy.c:1459
+#, fuzzy, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/copy.c:1502
+#, fuzzy, c-format
+msgid "cannot move %s to %s"
+msgstr "não consigo correr %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+
+#: src/copy.c:1553
+#, fuzzy, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "%s: não consigo copiar ligação (link) simbólica cíclica"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr ""
+"%s: só consigo fazer ligações (links) simbólicas relativas na directoria\n"
+"actual"
+
+#: src/copy.c:1661
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/copy.c:1686
+#, fuzzy, c-format
+msgid "cannot create link %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, fuzzy, c-format
+msgid "cannot create fifo %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/copy.c:1722
+#, fuzzy, c-format
+msgid "cannot create special file %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, fuzzy, c-format
+msgid "cannot read symbolic link %s"
+msgstr "não consigo ler ligação (link) simbólica `%s'"
+
+#: src/copy.c:1759
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/copy.c:1790
+#, fuzzy, c-format
+msgid "%s has unknown file type"
+msgstr "%s: tipo de ficheiro desconhecido"
+
+#: src/copy.c:1910 src/ln.c:308
+#, fuzzy, c-format
+msgid "cannot un-backup %s"
+msgstr "não consigo correr %s"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr ""
+
+#: src/cp.c:157 src/mv.c:284
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Utilização: %s [OPÇÃO]... FONTE DESTINO (1o formato)\n"
+" ou: %s [OPÇÃO]... FONTE... DIRECTORIA (2o formato)\n"
+" ou: %s -d [OPÇÃO]... DIRECTORIA... (3o formato)\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+"Copia FONTE para DESTINO, ou múltiplas FONTE(s) para DIRECTORIA.\n"
+"\n"
+" -a, --archive igual a -dpR\n"
+" -b, --backup fazer \"backup\" antes da remoção\n"
+" -d, --no-dereference manter as links\n"
+" -f, --force remover destinos existentes, nunca "
+"perguntar\n"
+" -i, --interactive perguntar antes de apagar\n"
+" -l, --link fazer ligações (links) de ficheiros em vez\n"
+" de os copiar\n"
+" -p, --preserve manter atributos dos ficheiros se possível\n"
+" -r copiar recursivamente, não-directorias "
+"como\n"
+" ficheiros\n"
+" --sparse=QUANDO controlar a criação de ficheiros esparsos\n"
+" -s, --symbolic-link fazer ligações (links) simbólicas em vez "
+"de\n"
+" copiar\n"
+" -u, --update copiar só ficheiros novos ou mais velhos\n"
+" -v, --verbose explica o que está a ser feito\n"
+" -x, --one-file-system ficar só neste sistema de ficheiros\n"
+" -P, --parents acrescentar caminho (path) de fonte a \n"
+" DIRECTORIA\n"
+" -R, --recursive copiar directorias recursivamente\n"
+" -S, --sufix=SUFIXO usar em vez do sufixo de \"backup\" usual\n"
+" -V, --version-control=PALAVRA usar em vez do controlo de versão habitual\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+"\n"
+"Por omissão, ficheiros esparsos da FONTE são detectados por uma heurística \n"
+"grosseira e o correspondente ficheiro DESTINO é também feito um ficheiro \n"
+"esparso. Este é o comportamento escolhido por --sparse=auto. Especifica \n"
+"--sparse=always para criar um ficheiro esparso em DESTINO quando o ficheiro\n"
+"SOURCE tiver uma sequência de bytes a zero suficientemente grande.\n"
+"\n"
+"Usa --sparse=never para inibir a criação de ficheiros esparsos.\n"
+"\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+
+#: src/cp.c:216
+#, fuzzy
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+"Mudar o nome de FONTE para DESTINO ou mover FONTE(s) para DIRECTORIA.\n"
+"\n"
+" -b, --backup fazer \"backup\" antes da remoção\n"
+" -f, --force apagar destinos existentes, nunca perguntar\n"
+" -i, --interactive perguntar antes de apagar\n"
+" -u, --update mover somente ficheiros novos ou mais \n"
+" recentes\n"
+" -v, --verbose explicar o que se está a fazer\n"
+" -S, --suffix=SUFIXO usar SUFIXO em vez do sufixo habitual de\n"
+" \"backup\"\n"
+" -V, --version-sontrol=PALAVRA usar PALAVRA em vez do controle de versão \n"
+" usual\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+"\n"
+
+#: src/cp.c:225
+#, fuzzy
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"Copia FONTE para DESTINO, ou múltiplas FONTE(s) para DIRECTORIA.\n"
+"\n"
+" -a, --archive igual a -dpR\n"
+" -b, --backup fazer \"backup\" antes da remoção\n"
+" -d, --no-dereference manter as links\n"
+" -f, --force remover destinos existentes, nunca "
+"perguntar\n"
+" -i, --interactive perguntar antes de apagar\n"
+" -l, --link fazer ligações (links) de ficheiros em vez\n"
+" de os copiar\n"
+" -p, --preserve manter atributos dos ficheiros se possível\n"
+" -r copiar recursivamente, não-directorias "
+"como\n"
+" ficheiros\n"
+" --sparse=QUANDO controlar a criação de ficheiros esparsos\n"
+" -s, --symbolic-link fazer ligações (links) simbólicas em vez "
+"de\n"
+" copiar\n"
+" -u, --update copiar só ficheiros novos ou mais velhos\n"
+" -v, --verbose explica o que está a ser feito\n"
+" -x, --one-file-system ficar só neste sistema de ficheiros\n"
+" -P, --parents acrescentar caminho (path) de fonte a \n"
+" DIRECTORIA\n"
+" -R, --recursive copiar directorias recursivamente\n"
+" -S, --sufix=SUFIXO usar em vez do sufixo de \"backup\" usual\n"
+" -V, --version-control=PALAVRA usar em vez do controlo de versão habitual\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+"\n"
+"Por omissão, ficheiros esparsos da FONTE são detectados por uma heurística \n"
+"grosseira e o correspondente ficheiro DESTINO é também feito um ficheiro \n"
+"esparso. Este é o comportamento escolhido por --sparse=auto. Especifica \n"
+"--sparse=always para criar um ficheiro esparso em DESTINO quando o ficheiro\n"
+"SOURCE tiver uma sequência de bytes a zero suficientemente grande.\n"
+"\n"
+"Usa --sparse=never para inibir a criação de ficheiros esparsos.\n"
+"\n"
+
+#: src/cp.c:234
+#, fuzzy
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"O sufixo de \"backup\" é ~, a não ser com SIMPLE_BACKUP_SUFFIX. O controlo "
+"de\n"
+"versão pode ser escolhido com VERSION_CONTROL, valores possíveis são:\n"
+"\n"
+" t, numbered fazer \"backups\" numerados\n"
+" nil, existing \"backups\" numerados se já existirem numerados, "
+"simples \n"
+" caso contrário\n"
+" never, simple fazer \"backups\" simples sempre\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+#, fuzzy
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+"O sufixo de \"backup\" é ~, a não ser com SIMPLE_BACKUP_SUFFIX. O controlo "
+"de\n"
+"versão pode ser escolhido com VERSION_CONTROL, valores possíveis são:\n"
+"\n"
+" t, numbered fazer \"backups\" numerados\n"
+" nil, existing \"backups\" numerados se já existirem numerados, "
+"simples \n"
+" caso contrário\n"
+" never, simple fazer \"backups\" simples sempre\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Como caso especial, o cp faz um backup da FONTE quando as opções \"force\" "
+"e\n"
+"\"backup\" são dadas e FONTE + DESTINO são iguais ao nome de um ficheiro \n"
+"regular já existente.\n"
+
+#: src/cp.c:314
+#, fuzzy, c-format
+msgid "failed to preserve times for %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/cp.c:340
+#, fuzzy, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/cp.c:456
+#, fuzzy, c-format
+msgid "cannot make directory %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/cp.c:505 src/cp.c:524
+#, fuzzy, c-format
+msgid "%s exists but is not a directory"
+msgstr "`%s' não é uma directoria"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, fuzzy, c-format
+msgid "accessing %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, fuzzy, c-format
+msgid "missing file operand"
+msgstr "falta um argumento a `%s'"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, fuzzy, c-format
+msgid "missing destination file operand after %s"
+msgstr "ficheiro de destino ausente"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, fuzzy, c-format
+msgid "target %s is not a directory"
+msgstr "`%s' não é uma directoria"
+
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr ""
+"ao preservar caminhos (paths), o último argumento tem que ser uma \n"
+"directoria"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr ""
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, fuzzy, c-format
+msgid "multiple target directories specified"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "não posso fazer ligações (links) simbólicas e fixas"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr ""
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr ""
+
+#: src/csplit.c:669 src/csplit.c:680
+#, fuzzy, c-format
+msgid "%s: line number out of range"
+msgstr "número inválido `%s'"
+
+#: src/csplit.c:709
+#, fuzzy, c-format
+msgid "%s: %s: line number out of range"
+msgstr "número inválido `%s'"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr ""
+
+#: src/csplit.c:755
+#, c-format
+msgid "%s: %s: match not found"
+msgstr ""
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr ""
+
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "erro na escrita"
+
+#: src/csplit.c:1060
+#, fuzzy, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "falta um argumento a `%s'"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr ""
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr ""
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr ""
+
+#: src/csplit.c:1130
+#, fuzzy, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "opção inválida `%s'"
+
+#: src/csplit.c:1163
+#, fuzzy, c-format
+msgid "%s: invalid pattern"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr ""
+
+#: src/csplit.c:1172
+#, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr ""
+
+#: src/csplit.c:1178
+#, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr ""
+
+#: src/csplit.c:1231
+#, fuzzy, c-format
+msgid "invalid format width"
+msgstr "data inválida `%s'"
+
+#: src/csplit.c:1252
+#, fuzzy, c-format
+msgid "invalid format precision"
+msgstr "string de formatação inválida: `%s'"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr ""
+
+#: src/csplit.c:1279
+#, fuzzy, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "%s: conversão inválida"
+
+#: src/csplit.c:1282
+#, fuzzy, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "%s: conversão inválida"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr ""
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr ""
+
+#: src/csplit.c:1364
+#, fuzzy, c-format
+msgid "%s: invalid number"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/csplit.c:1474
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Utilização: %s [OPÇÃO]... [FICHEIRO]...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/csplit.c:1486
+#, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Utilização: %s [OPÇÃO]... [FICHEIRO]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+#, fuzzy
+msgid "invalid byte or field list"
+msgstr "intervalo de tempo inválido `%s'"
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr ""
+
+#: src/cut.c:472
+#, fuzzy, c-format
+msgid "field number %s is too large"
+msgstr "número inválido `%s'"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr ""
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr ""
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr ""
+
+#: src/cut.c:831
+#, fuzzy
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr ""
+"a string de formatação não deve ser especificada ao imprimir strings com a \n"
+"mesma largura"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+
+#: src/cut.c:851
+#, fuzzy
+msgid "missing list of fields"
+msgstr "ficheiro de destino ausente"
+
+#: src/cut.c:853
+#, fuzzy
+msgid "missing list of positions"
+msgstr "ficheiro de destino ausente"
+
+#: src/date.c:132
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Utilização: %s [OPÇÃO]... [+FORMATO]\n"
+" ou: %s [OPÇÃO] [MMDDhhmm[[CC]AA][.ss]]\n"
+
+#: src/date.c:137
+#, fuzzy
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"Mostra o tempo actual num dado FORMATO, ou altera a data do sistema.\n"
+"\n"
+" -d, --date=STRING mostra o tempo descrito em STRING, em vez do\n"
+" actual\n"
+" -f, --file=FICHEIRODATAS igual a --date só que uma vez para cada linha "
+"de\n"
+" FICHEIRODATAS\n"
+" -r, --reference=FICHEIRO mostra a ultima data de alteração de FICHEIRO\n"
+" -R, --rfc-822 mostra a data no formato RFC-822\n"
+" -s, --set=STRING altera o tempo para o valor de STRING\n"
+" -u, --utc, --universal mostra ou altera o Tempo Universal Coordenado\n"
+" --help mostra este ecran e sai\n"
+" --version mostra a informação de versão e sai\n"
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "canal de entrada por omissão (stdin)"
+
+#: src/date.c:297 src/date.c:517
+#, fuzzy, c-format
+msgid "invalid date %s"
+msgstr "data inválida `%s'"
+
+#: src/date.c:408 src/date.c:442
+#, fuzzy, c-format
+msgid "multiple output formats specified"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr ""
+"as opções para especificar a data de impressão são mutuamente exclusivas"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr ""
+"as opções para imprimir e alterar o tempo não podem ser usadas ao mesmo tempo"
+
+#: src/date.c:448
+#, fuzzy, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"ao usar uma opção que especifique data(s), qualquer argumento não-opção \n"
+"tem que ser uma string de formatação começando com `+'"
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "não consigo alterar data"
+
+#: src/date.c:548 src/du.c:425
+#, fuzzy, c-format
+msgid "time %s is out of range"
+msgstr "número inválido `%s'"
+
+#: src/dd.c:404
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Utilização: %s [PARÂMETRO]...\n"
+" ou: %s OPÇÃO\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "`%s' não é uma directoria"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "registo truncado"
+msgstr[1] "registo truncado"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr ""
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ""
+
+#: src/dd.c:604
+#, fuzzy, c-format
+msgid "closing input file %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/dd.c:611
+#, fuzzy, c-format
+msgid "closing output file %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/dd.c:791 src/dd.c:1455
+#, fuzzy, c-format
+msgid "writing to %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/dd.c:886
+#, fuzzy, c-format
+msgid "unrecognized operand %s"
+msgstr "opção inválida `%s'"
+
+#: src/dd.c:897
+#, fuzzy, c-format
+msgid "invalid conversion: %s"
+msgstr "opção inválida `%s'"
+
+#: src/dd.c:900
+#, fuzzy, c-format
+msgid "invalid input flag: %s"
+msgstr "data inválida `%s'"
+
+#: src/dd.c:903
+#, fuzzy, c-format
+msgid "invalid output flag: %s"
+msgstr "opção inválida `%s'"
+
+#: src/dd.c:906
+#, fuzzy, c-format
+msgid "invalid status flag: %s"
+msgstr "data inválida `%s'"
+
+#: src/dd.c:942
+#, fuzzy, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "opção inválida `%s'"
+
+#: src/dd.c:948
+#, fuzzy, c-format
+msgid "invalid number %s"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#: src/dd.c:973
+#, fuzzy, c-format
+msgid "cannot combine block and unblock"
+msgstr "não consigo mostrar só o utilizador e só o grupo"
+
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "não consigo %s `%s' para `%s'"
+
+#: src/dd.c:977
+#, fuzzy, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "não consigo criar directoria `%s'"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+
+#: src/dd.c:1180 src/dd.c:1237
+#, fuzzy, c-format
+msgid "%s: cannot seek"
+msgstr "%s: não consigo escrever em cima da directoria"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+#: src/dd.c:1229
+#, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr ""
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr ""
+
+#: src/dd.c:1376
+#, fuzzy, c-format
+msgid "setting flags for %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr ""
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr ""
+
+#: src/dd.c:1670 src/dd.c:1699
+#, fuzzy, c-format
+msgid "opening %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, fuzzy, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr ""
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr ""
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr ""
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr ""
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr ""
+
+#: src/df.c:165
+#, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr ""
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr ""
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr ""
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "não consigo obter a directoria actual"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, fuzzy, c-format
+msgid "cannot change to directory %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/df.c:498
+#, fuzzy, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "não consigo obter a directoria actual"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+
+#: src/df.c:749
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr ""
+
+#: src/df.c:900
+#, fuzzy, c-format
+msgid "file system type %s both selected and excluded"
+msgstr ""
+"sistema de ficheiros de tipo `%s' foi escolhido e excluído ao mesmo tempo"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr ""
+
+#: src/df.c:943
+#, fuzzy, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "não consigo ler a tabela com sistemas de ficheiros montados"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Utilização: %s [OPÇÃO]... [FICHEIRO]...\n"
+
+#: src/dircolors.c:103
+#, fuzzy
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Emite comandos de saída para ajustar a variável de ambiente LS_COLORS.\n"
+"\n"
+"Para ajustar o formato da saída:\n"
+" -b, --sh, --bourne-shell emitir o código para ajustar LS_COLORS em \n"
+" formato conhecido pela Bourne shell\n"
+" -c, --csh, --c-shell emitir o código para ajustar LS_COLORS em \n"
+" formato conhecido pela C shell\n"
+" -p, --print-data-base emitir os códigos por defeito\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr ""
+
+#: src/dircolors.c:363
+#, fuzzy, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "opção inválida `%s'"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr ""
+
+#: src/dircolors.c:445
+#, fuzzy, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"as opções para saída em modo verboso e legível pelo stty são mutuamente\n"
+"exclusivas"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr ""
+"não existe nenhuma variável de ambiente SHELL e não se especificou nenhum\n"
+"tipo de shell como argumento"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Utilização: %s NOME\n"
+" ou: %s OPÇÃO\n"
+
+#: src/dirname.c:53
+#, fuzzy
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"Mostra NOME sem a sua componente /; se NOME não tiver / mostra `.' (o que\n"
+"quer dizer a directoria actual).\n"
+"\n"
+" --help mostra esta ajuda e sai\n"
+" --version mostra a informação de versão e sai\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#: src/du.c:279 src/wc.c:108
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Utilização: %s [OPÇÃO]... DONO[.[GRUPO]] FICHEIRO...\n"
+" ou: %s [OPÇÃO]... .[GRUPO] FICHEIRO...\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+#, fuzzy
+msgid "total"
+msgstr "%ld\ttotal\n"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+
+#: src/du.c:780
+#, fuzzy, c-format
+msgid "invalid maximum depth %s"
+msgstr "argumento inválido `%s'"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr ""
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "não consigo resumir e mostrar todas as entradas ao mesmo tempo"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr ""
+
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr ""
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+#: src/du.c:960 src/wc.c:662
+#, fuzzy, c-format
+msgid "cannot read file names from %s"
+msgstr "não consigo %s `%s' para `%s'"
+
+#: src/du.c:1000 src/du.c:1003
+#, fuzzy
+msgid "invalid zero-length file name"
+msgstr "opção inválida `%s'"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Utilização: %s [OPÇÃO]... [STRING]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Utilização: %s [OPÇÃO]... [-] [NOME=VALOR]... [COMANDO [ARG]...]\n"
+
+#: src/env.c:121
+#, fuzzy
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Alterar cada NOME para VALOR no ambiente e correr o COMANDO.\n"
+"\n"
+" -u, --unset=NOME retirar variável NOME do ambiente\n"
+" -i, --ignore-environment começar com um ambiente vazio\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+"\n"
+"Um só - implica -i. Se não houver nenhum COMANDO mostra o ambiente\n"
+"resultante.\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr ""
+
+#: src/expand.c:188 src/unexpand.c:207
+#, fuzzy, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "o caminho `%s' contém o caracter não portável `%c'"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr ""
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr ""
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, c-format
+msgid "input line is too long"
+msgstr ""
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Utilização: %s EXPRESSÃO\n"
+" ou: %s OPÇÃO\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "erro de sintaxe"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "opção inválida `%s'"
+
+#: src/expr.c:653 src/expr.c:711
+#, fuzzy, c-format
+msgid "non-numeric argument"
+msgstr "a ignorar argumentos não-opção"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr ""
+
+#: src/factor.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Utilização: %s [NÚMERO...]\n"
+" ou: %s OPÇÃO\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+
+#: src/factor.c:85
+#, fuzzy
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+"\n"
+"Mostra os factores primos de todos os NÚMEROS especificados. Se nenhum\n"
+"argumento for especificado, estes são lidos do canal de entrada padrão.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr ""
+
+#: src/factor.c:158
+#, fuzzy, c-format
+msgid "%s is not a valid positive integer"
+msgstr "`%s' não é um inteiro positivo válido"
+
+#: src/fmt.c:273
+#, fuzzy, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Utilização: %s [OPÇÃO]... [FICHEIRO]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+
+#: src/fmt.c:400
+#, fuzzy, c-format
+msgid "invalid width: %s"
+msgstr "data inválida `%s'"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "argumento inteiro inválido `%s'"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, fuzzy, c-format
+msgid "error reading %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/head.c:154
+#, fuzzy, c-format
+msgid "error writing %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr ""
+
+#: src/head.c:230 src/head.c:1046
+#, fuzzy, c-format
+msgid "%s: number of bytes is too large"
+msgstr "número inválido `%s'"
+
+#: src/head.c:443
+#, fuzzy, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "não consigo criar \"fifo\" `%s'"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, fuzzy, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "não consigo determinar o hostname"
+
+#: src/head.c:793
+#, fuzzy, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr ""
+
+#: src/head.c:881
+#, fuzzy
+msgid "number of lines"
+msgstr "número de argumentos errado"
+
+#: src/head.c:881
+#, fuzzy
+msgid "number of bytes"
+msgstr "número de argumentos errado"
+
+#: src/head.c:888 src/tail.c:1483
+#, fuzzy
+msgid "invalid number of lines"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/head.c:889 src/tail.c:1484
+#, fuzzy
+msgid "invalid number of bytes"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "opção inválida `%s'"
+
+#: src/hostid.c:48
+#, fuzzy, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Mostra o nome do utilizador actual.\n"
+"\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+
+#: src/hostname.c:65
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Utilização: %s [NOME]\n"
+" ou: %s [OPÇÃO]\n"
+"Mostra o hostname do sistema corrente.\n"
+"\n"
+" --help mostra esta ajuda e sai\n"
+" --version mostra a informação de versão e sai\n"
+
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "não consigo determinar o hostname"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+"não consigo alterar o hostname; este sistema não dispõe dessa funcionalidade"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "não consigo determinar o hostname"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Utilização: %s [OPÇÃO]... [NOMEDOUTILIZADOR]\n"
+
+#: src/id.c:79
+#, fuzzy
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Mostrar a informação de NOMEDOUTILIZADOR, ou o utilizador actual.\n"
+"\n"
+" -g, --group mostrar só o ID do grupo\n"
+" -G, --groups mostrar só os grupos adicionais\n"
+" -n, --name mostrar o nome em vez de um número, para -ugG\n"
+" -r, --read mostrar o ID real em vez do ID efectivo, para -ugG\n"
+" -u, --user mostrar só o ID do utilizador\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+"\n"
+"Sem qualquer opção mostra um conjunto de informações de identidade úteis.\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "não consigo mostrar só o utilizador e só o grupo"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr "não consigo mostrar só nomes ou ID's reais no formato por defeito"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Utilizador inexistente"
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "%s: não consigo encontrar um nome para o UID %u\n"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "%s: não consigo encontrar um nome para o UID %u\n"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "Não consigo obter lista de grupos adicional"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " grupos="
+
+#: src/install.c:318
+#, fuzzy, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr ""
+"a string de formatação não deve ser especificada ao imprimir strings com a \n"
+"mesma largura"
+
+#: src/install.c:321
+#, fuzzy, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr ""
+"a string de formatação não deve ser especificada ao imprimir strings com a \n"
+"mesma largura"
+
+#: src/install.c:369 src/mkdir.c:193
+#, fuzzy, c-format
+msgid "invalid mode %s"
+msgstr "data inválida `%s'"
+
+#: src/install.c:520
+#, fuzzy, c-format
+msgid "cannot change ownership of %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/install.c:541
+#, fuzzy, c-format
+msgid "cannot set time stamps for %s"
+msgstr "não consigo determinar o hostname"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr ""
+
+#: src/install.c:566
+#, fuzzy, c-format
+msgid "cannot run strip"
+msgstr "não consigo correr %s"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, fuzzy, c-format
+msgid "invalid user %s"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/install.c:628
+#, fuzzy, c-format
+msgid "creating directory %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/install.c:651
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Utilização: %s [OPÇÃO]... FONTE DESTINO (1o formato)\n"
+" ou: %s [OPÇÃO]... FONTE... DIRECTORIA (2o formato)\n"
+" ou: %s -d [OPÇÃO]... DIRECTORIA... (3o formato)\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+
+#: src/install.c:681
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+#, fuzzy
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"O sufixo de \"backup\" é ~, a não ser com SIMPLE_BACKUP_SUFFIX. O controlo "
+"de\n"
+"versão pode ser escolhido com VERSION_CONTROL, valores possíveis são:\n"
+"\n"
+" t, numbered fazer \"backups\" numerados\n"
+" nil, existing \"backups\" numerados se já existirem numerados, "
+"simples \n"
+" caso contrário\n"
+" never, simple fazer \"backups\" simples sempre\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+
+#: src/join.c:617 src/join.c:812
+#, fuzzy, c-format
+msgid "invalid field number: %s"
+msgstr "intervalo de tempo inválido `%s'"
+
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "intervalo de tempo inválido `%s'"
+
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "intervalo de tempo inválido `%s'"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr ""
+
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "data inválida `%s'"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr ""
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr ""
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+
+#: src/kill.c:103
+#, fuzzy
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+"Copia o canal de entrada padrão (stdin) para cada FICHEIRO, e também para o\n"
+"canal de saída padrão (stdout).\n"
+"\n"
+" -a, --append acrescenta aos FICHEIROs dados, não escreve por\n"
+" cima\n"
+" -i, --ignore-interrupts ignora os sinais de interrupção\n"
+" --help mostrar esta a ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+
+#: src/kill.c:161
+#, fuzzy, c-format
+msgid "%s: invalid signal"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/kill.c:266
+#, fuzzy, c-format
+msgid "%s: invalid process id"
+msgstr "opção inválida `%s'"
+
+#: src/kill.c:320
+#, fuzzy, c-format
+msgid "invalid option -- %c"
+msgstr "opção inválida `%s'"
+
+#: src/kill.c:329
+#, fuzzy, c-format
+msgid "%s: multiple signals specified"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr ""
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr ""
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr ""
+
+#: src/link.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Utilização: %s NOME\n"
+" ou: %s OPÇÃO\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+
+#: src/link.c:95
+#, fuzzy, c-format
+msgid "cannot create link %s to %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+
+#: src/ln.c:165
+#, fuzzy, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "`%s' não é uma directoria"
+
+#: src/ln.c:218
+#, fuzzy, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "não consigo obter a directoria actual"
+
+#: src/ln.c:223
+#, fuzzy, c-format
+msgid "%s: replace %s? "
+msgstr "%s: substituir `%s'? "
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "não consigo criar ligação (link) simbólica `%s'"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "não consigo criar ligação (link) simbólica `%s'"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "não consigo criar a ligação (link) de `%s' para `%s'"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "não consigo criar a ligação (link) de `%s' para `%s'"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "não consigo criar a ligação (link) de `%s' para `%s'"
+
+#: src/ln.c:324
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Utilização: %s [OPÇÃO]... FONTE DESTINO (1o formato)\n"
+" ou: %s [OPÇÃO]... FONTE... DIRECTORIA (2o formato)\n"
+" ou: %s -d [OPÇÃO]... DIRECTORIA... (3o formato)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+
+#: src/ln.c:484
+#, fuzzy, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "`%s' não é uma directoria"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Utilização: %s [OPÇÃO]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+
+#: src/logname.c:89
+#, fuzzy, c-format
+msgid "no login name"
+msgstr "%s: nome de login ausente\n"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr ""
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr ""
+
+#: src/ls.c:1453
+#, fuzzy, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "a ignorar largura inválida na variável do ambiente COLUMNS: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "a ignorar largura inválida na variável do ambiente COLUMNS: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr "a ignorar tamanho de tab inválido na variável TABSIZE do ambiente: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, fuzzy, c-format
+msgid "invalid line width: %s"
+msgstr "argumento inteiro inválido `%s'"
+
+#: src/ls.c:1704
+#, fuzzy, c-format
+msgid "invalid tab size: %s"
+msgstr "data inválida `%s'"
+
+#: src/ls.c:1885
+#, fuzzy, c-format
+msgid "invalid time style format %s"
+msgstr "intervalo de tempo inválido `%s'"
+
+#: src/ls.c:2229
+#, fuzzy, c-format
+msgid "unrecognized prefix: %s"
+msgstr "opção inválida `%s'"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr ""
+"a variável do ambiente LS_COLORS tem um valor não conhecido (i.e. ilegível)"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, fuzzy, c-format
+msgid "cannot open directory %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/ls.c:2344
+#, fuzzy, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "não consigo criar directoria `%s'"
+
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "não consigo obter a directoria actual"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, fuzzy, c-format
+msgid "reading directory %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/ls.c:2410
+#, fuzzy, c-format
+msgid "closing directory %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/ls.c:2918
+#, fuzzy, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "não consigo %s `%s' para `%s'"
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+
+#: src/ls.c:4360
+#, fuzzy
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -G, --no-group inibir que se mostre a informação de grupo\n"
+" -g (ignorado)\n"
+" -I, --ignore=PADRÃO não mostrar entradas implícitas incluídas no \n"
+" padrão de shell PADRÃO\n"
+" -i, --inode mostrar o índice de cada ficheiro\n"
+" -k, --kilobytes usar blocos de 1024 em vez de 512 apesar de \n"
+" POSIXLY_CORRECT\n"
+" -L, --dereference mostrar entradas apontadas por ligações "
+"(links)\n"
+" simbólicas\n"
+" -l usar formato longo de listagem\n"
+" -m encher largura com entradas separadas por \n"
+" vírgulas\n"
+" -N, --literal mostrar os valores \"reais\" das entradas "
+"(não\n"
+" tratar caracteres com \"Ctrl\" como "
+"especiais)\n"
+" -n, --numeric-uid-gid mostrar UIDs e GIDs numericamente em vez de "
+"pôr\n"
+" nome correspondente\n"
+" -o usar formato de listagem longo sem informação\n"
+" de grupo\n"
+" -p acrescentar um caracter para tipificar cada\n"
+" entrada\n"
+" -Q, --quote-name colocar aspas nos nomes das entradas\n"
+" -q, --hide-control-chars mostrar ? em vez de caracteres não gráficos\n"
+" -R, --recursive mostrar subdirectorias recursivamente\n"
+" -r, --reverse inverter a ordem enquanto ordenando\n"
+" -S ordenar por tamanho de ficheiro\n"
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#: src/md5sum.c:150
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr ""
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr ""
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr ""
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr ""
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr ""
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, fuzzy, c-format
+msgid "%s: read error"
+msgstr "erro de leitura"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr ""
+
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr ""
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr ""
+
+#: src/mkdir.c:59
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Utilização: %s [OPÇÃO]...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+"Criar a(s) DIRECTORIA(s), se estas ainda não existirem.\n"
+"\n"
+" -p, --parent suprimir erros caso exista,, criar directorias \n"
+" anteriores à medida que for necessário\n"
+" -m, --mode=MODO colocar permissões a valer MODO (como no chmod) em vez\n"
+" de rwxrwxrwx - umask\n"
+" --verbose mostrar uma mensagem por cada directoria criada\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+
+#: src/mkdir.c:168
+#, fuzzy, c-format
+msgid "created directory %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/mkfifo.c:54
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Utilização: %s [OPÇÃO]... NOME...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+"Criar pipes com nome (FIFOs) com o NOME dado.\n"
+"\n"
+" -m, --mode=MODO colocar permissões a MODO (como no chmod), em vez de \n"
+" 0666-umask\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, fuzzy, c-format
+msgid "invalid mode"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Utilização: %s [OPÇÃO]... NOME...\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+
+#: src/mknod.c:76
+#, fuzzy
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"Criar o ficheiro especial NOME do TIPO dado.\n"
+"\n"
+" -m, --mode=MODO colocar permissões a MODO (como no chmod), em vez de \n"
+" 0666-umask\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+"\n"
+"MAJOR e MINOR são proibidos para TIPO p, obrigatórios nos outros casos.\n"
+"TIPO pode ser:\n"
+" b criar um ficheiro especial de tipo bloco (buffered)\n"
+" c, u criar um ficheiro especial de tipo caracter (não buffered)\n"
+" p criar um \"FIFO\"\n"
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"ao criar ficheiros especiais de tipo bloco, são necessários os números \n"
+"\"major\" e \"minor do periférico"
+
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "argumento inteiro inválido `%s'"
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "ficheiros especiais de tipo bloco não suportados"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "ficheiros especiais de tipo caracter não suportados"
+
+#: src/mknod.c:192
+#, fuzzy, c-format
+msgid "invalid major device number %s"
+msgstr "argumento inválido `%s'"
+
+#: src/mknod.c:197
+#, fuzzy, c-format
+msgid "invalid minor device number %s"
+msgstr "argumento inteiro inválido `%s'"
+
+#: src/mknod.c:202
+#, fuzzy, c-format
+msgid "invalid device %s %s"
+msgstr "data inválida `%s'"
+
+#: src/mknod.c:216
+#, fuzzy, c-format
+msgid "invalid device type %s"
+msgstr "data inválida `%s'"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+
+#: src/mv.c:308
+#, fuzzy
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+"Mudar o nome de FONTE para DESTINO ou mover FONTE(s) para DIRECTORIA.\n"
+"\n"
+" -b, --backup fazer \"backup\" antes da remoção\n"
+" -f, --force apagar destinos existentes, nunca perguntar\n"
+" -i, --interactive perguntar antes de apagar\n"
+" -u, --update mover somente ficheiros novos ou mais \n"
+" recentes\n"
+" -v, --verbose explicar o que se está a fazer\n"
+" -S, --suffix=SUFIXO usar SUFIXO em vez do sufixo habitual de\n"
+" \"backup\"\n"
+" -V, --version-sontrol=PALAVRA usar PALAVRA em vez do controle de versão \n"
+" usual\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+"\n"
+
+#: src/nice.c:76
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Utilização: %s [OPÇÃO]... [COMANDO [ARG]...]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "argumento inválido `%s'"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "um comando deve ser dado com um ajuste"
+
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "não consigo obter o nome do sistema"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "não consigo alterar data"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+
+#: src/nl.c:214
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:281
+#, fuzzy, c-format
+msgid "line number overflow"
+msgstr "número inválido `%s'"
+
+#: src/nl.c:479
+#, fuzzy, c-format
+msgid "invalid header numbering style: %s"
+msgstr "intervalo de tempo inválido `%s'"
+
+#: src/nl.c:487
+#, fuzzy, c-format
+msgid "invalid body numbering style: %s"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/nl.c:495
+#, fuzzy, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "intervalo de tempo inválido `%s'"
+
+#: src/nl.c:504
+#, fuzzy, c-format
+msgid "invalid starting line number: %s"
+msgstr "argumento em vírgula flutuante inválido: %s"
+
+#: src/nl.c:513
+#, fuzzy, c-format
+msgid "invalid line number increment: %s"
+msgstr "argumento inteiro inválido `%s'"
+
+#: src/nl.c:525
+#, fuzzy, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "intervalo de tempo inválido `%s'"
+
+#: src/nl.c:539
+#, fuzzy, c-format
+msgid "invalid line number field width: %s"
+msgstr "argumento inteiro inválido `%s'"
+
+#: src/nl.c:558
+#, fuzzy, c-format
+msgid "invalid line numbering format: %s"
+msgstr "argumento inteiro inválido `%s'"
+
+#: src/nohup.c:57
+#, fuzzy, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Utilização: %s FORMATO [ARGUMENTO]...\n"
+" ou: %s OPÇÃO\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "a ignorar argumentos não-opção"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, fuzzy, c-format
+msgid "failed to open %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr ""
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr ""
+
+#: src/od.c:307
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Utilização: %s [OPÇÃO]... DONO[.[GRUPO]] FICHEIRO...\n"
+" ou: %s [OPÇÃO]... .[GRUPO] FICHEIRO...\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:353
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "string de formatação inválida: `%s'"
+
+#: src/od.c:693
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+
+#: src/od.c:812
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "string de formatação inválida: `%s'"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr ""
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+
+#: src/od.c:1655
+#, fuzzy
+msgid "skip argument"
+msgstr "demasiados argumentos %s"
+
+#: src/od.c:1664
+#, fuzzy
+msgid "limit argument"
+msgstr "demasiados argumentos %s"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr ""
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr ""
+
+#: src/od.c:1769
+#, fuzzy, c-format
+msgid "no type may be specified when dumping strings"
+msgstr ""
+"a string de formatação não deve ser especificada ao imprimir strings com a \n"
+"mesma largura"
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr ""
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr ""
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr ""
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr ""
+
+#: src/paste.c:202
+#, fuzzy, c-format
+msgid "standard input is closed"
+msgstr "canal de entrada por omissão (stdin)"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Utilização: %s [OPÇÃO]... NOME...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "string de formatação inválida: `%s'"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr ""
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, fuzzy, c-format
+msgid "Login name: "
+msgstr "%s: nome de login ausente\n"
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr ""
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr ""
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr ""
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr ""
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr ""
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr ""
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr ""
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr ""
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr ""
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr ""
+
+#: src/pinky.c:427
+msgid "When"
+msgstr ""
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr ""
+
+#: src/pinky.c:510
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Utilização: %s [OPÇÃO]... [STRING]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr ""
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr ""
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr ""
+
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "string de formatação inválida: `%s'"
+
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "número \"minor\" de periférico inválido `%s'"
+
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "largura de linha inválida: %s"
+
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "largura de linha inválida: %s"
+
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "largura de linha inválida: %s"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr ""
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr ""
+
+#: src/pr.c:1202
+#, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr ""
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr ""
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2406
+#, fuzzy, c-format
+msgid "Page number overflow"
+msgstr "número inválido `%s'"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr ""
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/printenv.c:61
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Se não for especificada nenhuma VARIÁVEL do ambiente, mostra todas.\n"
+"\n"
+" --help mostrar esta ajuda\n"
+" --version mostrar informação de versão e sair\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Utilização: %s FORMATO [ARGUMENTO]...\n"
+" ou: %s OPÇÃO\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: valor numérico esperado"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: valor não convertido na totalidade"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "falta um número hexadecimal no caracter de escape"
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr ""
+
+#: src/printf.c:550
+#, fuzzy, c-format
+msgid "invalid field width: %s"
+msgstr "argumento inteiro inválido `%s'"
+
+#: src/printf.c:585
+#, fuzzy, c-format
+msgid "invalid precision: %s"
+msgstr "opção inválida `%s'"
+
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "opção inválida `%s'"
+
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr ""
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr ""
+
+#: src/ptx.c:422
+#, c-format
+msgid "%s (for regexp %s)"
+msgstr ""
+
+#: src/ptx.c:1883
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Utilização: %s [OPÇÃO]... FONTE DESTINO\n"
+" ou: %s [OPÇÃO]... FONTE... DIRECTORIA\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "data inválida `%s'"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr ""
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+
+#: src/pwd.c:160
+#, fuzzy, c-format
+msgid "failed to chdir to %s"
+msgstr "modo de %s mudado para %04o (%s)\n"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "a ignorar argumentos não-opção"
+
+#: src/readlink.c:67
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Utilização: %s [OPÇÃO]... [FICHEIRO]...\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, fuzzy, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"%s: AVISO: Estrutura de directorias circular.\n"
+"Isto quer dizer quase de certeza que tens o sistema de ficheiros\n"
+"corrupto.\n"
+"AVISA O TEU ADMINISTRADOR DE SISTEMA.\n"
+"Ciclo detectado:\n"
+"%s\n"
+"é o mesmo ficheiro que\n"
+
+#: src/remove.c:854
+#, fuzzy, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "não consigo obter a directoria actual"
+
+#: src/remove.c:855
+#, fuzzy, c-format
+msgid "%s: descend into directory %s? "
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/remove.c:865
+#, fuzzy, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/remove.c:866
+#, fuzzy, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: apagar %s`%s'? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, fuzzy, c-format
+msgid "removed directory: %s\n"
+msgstr "não consigo obter a directoria actual"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, fuzzy, c-format
+msgid "cannot remove directory %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/remove.c:1450
+#, fuzzy, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/remove.c:1558
+#, fuzzy, c-format
+msgid "cannot restore current working directory"
+msgstr "não consigo obter a directoria actual"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#: src/rm.c:160 src/touch.c:233
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Utilização: %s [OPÇÃO]... [FICHEIRO]...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: apagar %s`%s'? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, fuzzy, c-format
+msgid "removing directory, %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/rmdir.c:140
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Utilização: %s [OPÇÃO]... [FICHEIRO]...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+
+#: src/rmdir.c:148
+#, fuzzy
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+"Apaga a(s) DIRECTORIA(s), se elas estiverem vazias.\n"
+"\n"
+" -p, --parents remover directorias antecedentes explícitas se ficarem\n"
+" vazias\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a versão e sair\n"
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"\n"
+" -f, --format FORMATO utilizar o estilo de FORMATO do printf(3) \n"
+" (por defeito: %%g)\n"
+" --help mostrar esta ajuda e sair\n"
+" -s, --separator STRING usar STRING para especificar números\n"
+" (por defeito: \\n)\n"
+" --version mostrar a informação de versão e sair\n"
+" -w, --equal-width tornar a largura igual acrescentando zeros no \n"
+" fim\n"
+"\n"
+"COMEÇO, INCREMENTO, e LIMITE são interpretados como valores em vírgula\n"
+"flutuante.\n"
+"INCREMENTO deve ser positivo se COMEÇO fôr mais pequeno que LIMITE, e\n"
+"negativo caso contrário. Quando indicado, o argumento FORMATO deve conter\n"
+"exactamente um de %%e, %%f ou %%g - argumentos de formatação vírgula \n"
+"flutuante do printf.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "argumento em vírgula flutuante inválido: %s"
+
+#: src/seq.c:342
+#, fuzzy, c-format
+msgid "invalid format string: %s"
+msgstr "string de formatação inválida: `%s'"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr ""
+"a string de formatação não deve ser especificada ao imprimir strings com a \n"
+"mesma largura"
+
+#: src/setuidgid.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Utilização: %s FORMATO [ARGUMENTO]...\n"
+" ou: %s OPÇÃO\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr ""
+
+#: src/setuidgid.c:109
+#, fuzzy, c-format
+msgid "cannot set supplemental group"
+msgstr "Não consigo obter lista de grupos adicional"
+
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "não consigo alterar a identificação de grupo"
+
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "não consigo alterar a identificação de utilizador"
+
+#: src/shred.c:165
+#, fuzzy, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Utilização: %s [OPÇÃO]... [FICHEIRO]...\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr ""
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr ""
+
+#: src/shred.c:391
+#, fuzzy, c-format
+msgid "%s: cannot rewind"
+msgstr "não consigo correr %s"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr ""
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr ""
+
+#: src/shred.c:478
+#, fuzzy, c-format
+msgid "%s: lseek failed"
+msgstr "ficheiros especiais de tipo bloco não suportados"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr ""
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr ""
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr ""
+
+#: src/shred.c:776
+#, c-format
+msgid "%s: fstat failed"
+msgstr ""
+
+#: src/shred.c:787
+#, fuzzy, c-format
+msgid "%s: invalid file type"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr ""
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr ""
+
+#: src/shred.c:889
+#, fuzzy, c-format
+msgid "%s: fcntl failed"
+msgstr "ficheiros especiais de tipo bloco não suportados"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr ""
+
+#: src/shred.c:972
+#, fuzzy, c-format
+msgid "%s: removing"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/shred.c:996
+#, fuzzy, c-format
+msgid "%s: renamed to %s"
+msgstr "opção inválida `%s'"
+
+#: src/shred.c:1018
+#, fuzzy, c-format
+msgid "%s: failed to remove"
+msgstr "%s: não consigo escrever em cima da directoria"
+
+#: src/shred.c:1022
+#, fuzzy, c-format
+msgid "%s: removed"
+msgstr "%s: apagar %s`%s'? "
+
+#: src/shred.c:1029 src/shred.c:1072
+#, fuzzy, c-format
+msgid "%s: failed to close"
+msgstr "opção inválida `%s'"
+
+#: src/shred.c:1065
+#, c-format
+msgid "%s: failed to open for writing"
+msgstr ""
+
+#: src/shred.c:1130
+#, fuzzy, c-format
+msgid "%s: invalid number of passes"
+msgstr "opção inválida `%s'"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/shred.c:1153
+#, fuzzy, c-format
+msgid "%s: invalid file size"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Utilização: %s [OPÇÃO]... DONO[.[GRUPO]] FICHEIRO...\n"
+" ou: %s [OPÇÃO]... .[GRUPO] FICHEIRO...\n"
+
+#: src/shuf.c:57
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "argumento inteiro inválido `%s'"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, fuzzy, c-format
+msgid "multiple output files specified"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "não consigo criar directoria `%s'"
+
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr "modo inválido `%s'"
+
+#: src/sleep.c:47
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Parar por NÚMERO segundos.\n"
+"SUFIXO pode ser s para indicar segundos, m para minutos, h para horas ou d\n"
+"para dias\n"
+"\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "intervalo de tempo inválido `%s'"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr ""
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+
+#: src/sort.c:326
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/sort.c:363
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+#, fuzzy
+msgid "cannot create temporary file"
+msgstr "não consigo obter a directoria actual"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr ""
+
+#: src/sort.c:758
+#, fuzzy
+msgid "fflush failed"
+msgstr "ficheiros especiais de tipo bloco não suportados"
+
+#: src/sort.c:763 src/sort.c:3171
+#, fuzzy
+msgid "close failed"
+msgstr "ficheiros especiais de tipo bloco não suportados"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "`%s' não é um ficheiro normal"
+
+#: src/sort.c:871
+#, fuzzy, c-format
+msgid "couldn't execute %s"
+msgstr "não consigo correr %s"
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "não consigo obter a directoria actual"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "não consigo obter a directoria actual"
+
+#: src/sort.c:920
+#, fuzzy, c-format
+msgid "couldn't execute %s -d"
+msgstr "não consigo correr %s"
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "não consigo obter a directoria actual"
+
+#: src/sort.c:938
+#, fuzzy
+msgid "write failed"
+msgstr "erro na escrita"
+
+#: src/sort.c:975
+#, fuzzy, c-format
+msgid "warning: cannot remove: %s"
+msgstr "não consigo correr %s"
+
+#: src/sort.c:1092
+#, fuzzy
+msgid "sort size"
+msgstr "tipo de ordenação"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr ""
+
+#: src/sort.c:1435
+#, fuzzy
+msgid "read failed"
+msgstr "`%s' não é um ficheiro normal"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr ""
+
+#: src/sort.c:1955
+#, fuzzy
+msgid "standard error"
+msgstr "erro de sintaxe"
+
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "opção inválida `%s'"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "string de formatação inválida: `%s'"
+
+#: src/sort.c:2887
+#, fuzzy
+msgid "invalid number after `-'"
+msgstr "data inválida `%s'"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+#, fuzzy
+msgid "invalid number after `.'"
+msgstr "data inválida `%s'"
+
+#: src/sort.c:2893 src/sort.c:2988
+#, fuzzy
+msgid "stray character in field spec"
+msgstr "ficheiros especiais de tipo caracter não suportados"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/sort.c:2943
+#, fuzzy
+msgid "invalid number at field start"
+msgstr "número inválido `%s'"
+
+#: src/sort.c:2947 src/sort.c:2975
+#, fuzzy
+msgid "field number is zero"
+msgstr "número inválido `%s'"
+
+#: src/sort.c:2956
+#, fuzzy
+msgid "character offset is zero"
+msgstr "ficheiros especiais de tipo caracter não suportados"
+
+#: src/sort.c:2971
+#, fuzzy
+msgid "invalid number after `,'"
+msgstr "data inválida `%s'"
+
+#: src/sort.c:3142
+#, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr ""
+
+#: src/split.c:106
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Utilização: %s [OPÇÃO]... [FICHEIRO]...\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr ""
+
+#: src/split.c:211
+#, fuzzy, c-format
+msgid "creating file %s\n"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/split.c:370
+#, fuzzy, c-format
+msgid "cannot split in more than one way"
+msgstr "não consigo obter prioridade"
+
+#: src/split.c:420
+#, fuzzy, c-format
+msgid "%s: invalid suffix length"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/split.c:434 src/split.c:458
+#, fuzzy, c-format
+msgid "%s: invalid number of bytes"
+msgstr "opção inválida `%s'"
+
+#: src/split.c:446
+#, fuzzy, c-format
+msgid "%s: invalid number of lines"
+msgstr "opção inválida `%s'"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr ""
+
+#: src/split.c:518
+#, fuzzy, c-format
+msgid "invalid number of lines: 0"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "opção inválida `%s'"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%%%c: directiva inválida"
+
+#: src/stat.c:726
+#, fuzzy, c-format
+msgid "warning: backslash at end of format"
+msgstr "formato da data inválido `%s'"
+
+#: src/stat.c:755
+#, fuzzy, c-format
+msgid "cannot read file system information for %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/stat.c:831
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Utilização: %s [OPÇÃO]... [FICHEIRO]...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+
+#: src/stty.c:517
+#, fuzzy
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Mostrar ou alterar as características do terminal.\n"
+"\n"
+" -a, --all mostrar todas as características num formato legível por\n"
+"humanos\n"
+" -g, --save mostrar todas as características num formato legível \n"
+"pelo stty\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+"\n"
+"Um - opcional antes de de PARÂMETRO indica negação. Um * marca parâmetros \n"
+"não-POSIX. O sistema onde o stty corre determina quais as características "
+"que\n"
+"estão disponíveis.\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+
+#: src/stty.c:583
+#, fuzzy
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+"\n"
+"Parâmetros de controle:\n"
+" [-]clocal desactivar os sinais de controle do modem\n"
+" [-]cread permitir a entrada de dados\n"
+"* [-]crtscts permitir negociação RTS/CTS\n"
+" csN colocar a N bits o tamanho dos caracteres, N em [5..8]\n"
+" [-]cstopb usar dois bits de paragem por caracter (um com `-')\n"
+" [-]hup enviar um sinal de desligar quando o último processo\n"
+" fechar o tty\n"
+" [-]hupcl o mesmo que [-]hup\n"
+" [-]parenb gerar um bit de paridade no output e esperar um bit de\n"
+" paridade no input\n"
+" [-]parodd colocar a paridade a ímpar (mesmo com `-')\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:624
+#, fuzzy
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+"\n"
+"Parâmetros de saída:\n"
+"* bsN estilo do temporizador do backspace, N em [0..1]\n"
+"* crN estilo do temporizador do carriage return, N em [0..3]\n"
+"* ffN estilo do temporizador do form feed, N em [0..1]\n"
+"* nlN estilo do temporizador do newline, N em [0..1]\n"
+"* [-]ocrnl traduzir carriage return para newline\n"
+"* [-]ofdel usar caracteres de delete em vez de caracteres null para\n"
+" preencher.\n"
+"* [-]ofill preencher caracteres em vez de esperar por temporizador\n"
+"* [-]olcuc traduzir minúsculas para maiúsculas\n"
+"* [-]onlcr traduzir newline para carriage return-newline\n"
+"* [-]onlret newline faz um carriage return\n"
+"* [-]onocr não imprimir carriage return na primeira coluna\n"
+" [-]opost pos-processar a saída\n"
+"* tabN estilo do temporizador do tab horizontal, N em [0..3]\n"
+"* tabs o mesmo que tab0\n"
+"* -tabs o mesmo que tab3\n"
+"* vtN estilo do temporizador do tab vertical, N em [0..1]\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"Trata o tty ligado ao canal de entrada por defeito (stdin). Sem argumentos,\n"
+"imprime o ritmo em baud, a disciplina da linha e diferenças em relação a "
+"stty\n"
+"sane. Nos parâmetros, CHAR é aceite literalmente, ou codificado com em ^C,\n"
+"0x37, 0177 ou 127; valores especiais ^- ou undef são utilizados para anular\n"
+"caracteres especiais.\n"
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr ""
+
+#: src/stty.c:819
+#, fuzzy, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+"as opções para saída em modo verboso e legível pelo stty são mutuamente\n"
+"exclusivas"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "ao especificar um modo de saída, não pode alterar um modo"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr ""
+
+#: src/stty.c:885 src/stty.c:995
+#, fuzzy, c-format
+msgid "invalid argument %s"
+msgstr "argumento inválido `%s'"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, fuzzy, c-format
+msgid "missing argument to %s"
+msgstr "falta um argumento a `%s'"
+
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "argumento inteiro inválido `%s'"
+
+#: src/stty.c:1046
+#, fuzzy, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr ""
+"canal de entrada padrão (stdin): não é possível realizar todas as opções\n"
+"pedidas"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "modo_novo: modo\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr ""
+
+#: src/stty.c:1888
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "argumento inteiro inválido `%s'"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Password:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: não consigo abrir /dev/tty"
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "não consigo alterar grupos"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "não consigo alterar a identificação de grupo"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "não consigo alterar a identificação de utilizador"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Utilização: %s [OPÇÃO]... [-] [UTILIZADOR [ARGUMENTO]...]\n"
+
+#: src/su.c:386
+#, fuzzy
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Altera as identificações de utilizador e de grupo efectivas do UTILIZADOR.\n"
+"\n"
+" -, -l, --login tornar a shell numa shell de login\n"
+" -c, --command=COMANDO envia um único COMANDO à \"shell\", usando -"
+"c\n"
+" -f, --fast envia um -f à shell (para csh ou tcsh)\n"
+" -m, --preserver-environment não fazer colocar as variáveis do ambiente\n"
+" \t\t\t\taos seus valores por defeito\n"
+" -p o mesmo que -m\n"
+" -s, --shell=SHELL correr SHELL se /etc/shells o permitir\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+"\n"
+"Um único - implica -l. Se UTILIZADOR não for especificador, assume-se root.\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "utilizador %s não existe"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "password incorrecta"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "a usar a shell restrita %s"
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+
+#: src/sync.c:74
+#, fuzzy, c-format
+msgid "ignoring all arguments"
+msgstr "a ignorar argumentos não-opção"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: src/system.h:419
+#, fuzzy
+msgid " --version output version information and exit\n"
+msgstr ""
+"\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+"\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+
+#: src/tac.c:236 src/tac.c:337
+#, fuzzy, c-format
+msgid "%s: seek failed"
+msgstr "ficheiros especiais de tipo bloco não suportados"
+
+#: src/tac.c:265
+#, c-format
+msgid "record too large"
+msgstr ""
+
+#: src/tac.c:459
+#, fuzzy, c-format
+msgid "cannot create temporary file %s"
+msgstr "não consigo obter a directoria actual"
+
+#: src/tac.c:466
+#, fuzzy, c-format
+msgid "cannot open %s for writing"
+msgstr "não consigo mover `%s' para `%s'"
+
+#: src/tac.c:487 src/tac.c:494
+#, fuzzy, c-format
+msgid "%s: write error"
+msgstr "erro na escrita"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr ""
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tail.c:229
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+
+#: src/tail.c:244
+#, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+
+#: src/tail.c:336
+#, fuzzy, c-format
+msgid "closing %s (fd=%d)"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/tail.c:411
+#, fuzzy, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "não consigo criar \"fifo\" `%s'"
+
+#: src/tail.c:415
+#, fuzzy, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "não consigo criar \"fifo\" `%s'"
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr ""
+
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr ""
+
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr ""
+
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr ""
+
+#: src/tail.c:1025
+#, fuzzy, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "aviso: não consigo mudar para a directoria %s"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr ""
+
+#: src/tail.c:1090
+#, fuzzy, c-format
+msgid "no files remaining"
+msgstr "faltam argumentos de ficheiro"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+
+#: src/tail.c:1439
+#, c-format
+msgid "number in %s is too large"
+msgstr ""
+
+#: src/tail.c:1511
+#, fuzzy, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr "número inválido `%s'"
+
+#: src/tail.c:1523
+#, fuzzy, c-format
+msgid "%s: invalid PID"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/tail.c:1542
+#, fuzzy, c-format
+msgid "%s: invalid number of seconds"
+msgstr "opção inválida `%s'"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr ""
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+
+#: src/tail.c:1573
+#, fuzzy, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "--no-dereference (-h) não é suportado neste sistema"
+
+#: src/tail.c:1667
+#, fuzzy, c-format
+msgid "cannot follow %s by name"
+msgstr "não consigo obter o nome do sistema"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+
+#: src/tee.c:63
+#, fuzzy
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Copia o canal de entrada padrão (stdin) para cada FICHEIRO, e também para o\n"
+"canal de saída padrão (stdout).\n"
+"\n"
+" -a, --append acrescenta aos FICHEIROs dados, não escreve por\n"
+" cima\n"
+" -i, --ignore-interrupts ignora os sinais de interrupção\n"
+" --help mostrar esta a ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+
+#: src/test.c:125
+#, fuzzy, c-format
+msgid "missing argument after %s"
+msgstr "falta um argumento a `%s'"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "\\%c: caracter de escape inválido"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "')' esperado\n"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "')' esperado, encontrei %s\n"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: operador unário esperado\n"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "-nt não aceita -l\n"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "-ef não aceita -l\n"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "-nt não aceita -l\n"
+
+#: src/test.c:368
+msgid "unknown binary operator"
+msgstr "operador binário desconhecido"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: operador binário esperado\n"
+
+#: src/test.c:694
+#, fuzzy
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Utilização: %s EXPRESSÃO\n"
+" ou: [ EXPRESSÃO ]\n"
+" ou: %s OPÇÃO\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+
+#: src/test.c:707
+#, fuzzy
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"Sair, retornando o estado determinado por EXPRESSÃO.\n"
+"\n"
+" --help mostrar esta a ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+"\n"
+"EXPRESSÃO é verdadeira ou falsa e altera o o estado de saída. É uma de:\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+
+#: src/test.c:727
+#, fuzzy
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" ( EXPRESSÃO ) EXPRESSÃO é verdadeira\n"
+" ! EXPRESSÃO\t\t\tEXPRESSÃO é falsa\n"
+" EXPRESSÃO1 -a EXPRESSÃO2 tanto EXPRESSÃO1 como EXPRESSÃO2 \n"
+"\t\t\t\tsão verdadeiras\n"
+" EXPRESSÃO1 -o EXPRESSÃO2 nem EXPRESSÃO1 nem EXPRESSÃO2 são "
+"verdadeiras\n"
+"\n"
+" [-n] STRING o comprimento de STRING é diferente de zero\n"
+" -z STRING o comprimento de STRING é zero\n"
+" STRING1 = STRING2 as STRING's são iguais\n"
+" STRING1 != STRING2 as STRING's são diferentes\n"
+"\n"
+" INTEIRO1 -eq INTEIRO2 INTEIRO1 é igual a INTEIRO2\n"
+" INTEIRO1 -ge INTEIRO2 INTEIRO1 é maior ou igual a INTEIRO2\n"
+" INTEIRO1 -gt INTEIRO2 INTEIRO1 é maior que INTEIRO2\n"
+" INTEIRO1 -le INTEIRO2 INTEIRO1 é menor ou igual a INTEIRO2\n"
+" INTEIRO1 -lt INTEIRO2 INTEIRO1 é menor que INTEIRO2\n"
+" INTEIRO1 -ne INTEIRO2 INTEIRO1 é diferente de INTEIRO2\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+
+#: src/test.c:770
+#, fuzzy
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"Lembre-se que os parêntesis têm que ser alterados (por exemplo, usando \n"
+"anti-barras) se vão se usados com shells.\n"
+"INTEIRO pode também ser -l STRING, que retorna o comprimento de STRING.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "falta um ']'\n"
+
+#: src/test.c:846
+#, fuzzy, c-format
+msgid "extra argument %s"
+msgstr "demasiados argumentos"
+
+#: src/touch.c:112 src/touch.c:318
+#, fuzzy, c-format
+msgid "invalid date format %s"
+msgstr "data inválida `%s'"
+
+#: src/touch.c:154
+#, fuzzy, c-format
+msgid "creating %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/touch.c:211
+#, fuzzy, c-format
+msgid "cannot touch %s"
+msgstr "não consigo correr %s"
+
+#: src/touch.c:217
+#, fuzzy, c-format
+msgid "setting times of %s"
+msgstr "%s: apagar directoria `%s'? "
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "não consigo especificar tempos a partir de mais de uma fonte"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+
+#: src/tr.c:290
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Utilização: %s [OPÇÃO]... [STRING]...\n"
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+
+#: src/tr.c:519
+#, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr ""
+
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr ""
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr ""
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr ""
+
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "data inválida `%s'"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr ""
+
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr "ficheiros especiais de tipo caracter não suportados"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr ""
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr ""
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr ""
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr ""
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr ""
+
+#: src/tr.c:1731
+msgid "Two strings must be given when translating."
+msgstr ""
+
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr ""
+
+#: src/true.c:42
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Utilização: %s NOME\n"
+" ou: %s OPÇÃO\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tsort.c:474
+#, fuzzy, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "opção inválida `%s'"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr ""
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Utilização: %s [OPÇÃO]...\n"
+
+#: src/tty.c:70
+#, fuzzy
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Mostra o nome do terminal ligado ao canal e entrada padrão (stdin).\n"
+"\n"
+" -s, --silent, --quiet não mostra nada, só retorna o estado de saída\n"
+" --help mostrar esta a ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "não é um tty"
+
+#: src/uname.c:118
+#, fuzzy
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Mostra alguma informação sobre o sistema. Sem OPÇÃO, o mesmo que -s.\n"
+"\n"
+" -a, --all mostra toda a informação\n"
+" -m, --machine mostra o tipo da máquina (hardware)\n"
+" -n, --nodename mostra o nome do nó da máquina na rede\n"
+" -r, --release mostra a versão do sistema operativo\n"
+" -s, --sysname mostra o nome do sistema operativo\n"
+" -v mostra a altura em que o sistema foi criado\n"
+" --help mostra esta ajuda e sair\n"
+" --version mostra a informação de versão e sai\n"
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "não consigo obter o nome do sistema"
+
+#: src/unexpand.c:125
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, c-format
+msgid "tab stop value is too large"
+msgstr ""
+
+#: src/uniq.c:135
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Utilização: %s [OPÇÃO]... [FICHEIRO]...\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+
+#: src/uniq.c:350
+#, fuzzy, c-format
+msgid "too many repeated lines"
+msgstr "demasiados argumentos"
+
+#: src/uniq.c:512
+#, fuzzy
+msgid "invalid number of fields to skip"
+msgstr "número inválido `%s'"
+
+#: src/uniq.c:521
+#, fuzzy
+msgid "invalid number of bytes to skip"
+msgstr "número inválido `%s'"
+
+#: src/uniq.c:530
+#, fuzzy
+msgid "invalid number of bytes to compare"
+msgstr "número inválido `%s'"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+
+#: src/unlink.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Utilização: %s NOME\n"
+" ou: %s OPÇÃO\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+
+#: src/unlink.c:91
+#, fuzzy, c-format
+msgid "cannot unlink %s"
+msgstr "não consigo correr %s"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr ""
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr ""
+
+#: src/uptime.c:135
+msgid "am"
+msgstr ""
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr ""
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr ""
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr ""
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/uptime.c:147
+#, fuzzy, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "\\%c: caracter de escape inválido"
+msgstr[1] "\\%c: caracter de escape inválido"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ""
+
+#: src/uptime.c:197 src/users.c:108
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Utilização: %s [OPÇÃO]... [FICHEIRO]...\n"
+
+#: src/uptime.c:198
+#, fuzzy, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Mostra o nome do utilizador associado à identificação de utilizador "
+"efectiva\n"
+"actualmente.\n"
+"O mesmo que id -un.\n"
+"\n"
+" --help mostrar esta ajuda e sair.\n"
+" --version mostrar informação de versão e sair\n"
+
+#: src/users.c:109
+#, fuzzy, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Mostra o nome do utilizador associado à identificação de utilizador "
+"efectiva\n"
+"actualmente.\n"
+"O mesmo que id -un.\n"
+"\n"
+" --help mostrar esta ajuda e sair.\n"
+" --version mostrar informação de versão e sair\n"
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+
+#: src/wc.c:121
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr ""
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr ""
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr ""
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr ""
+
+#: src/who.c:497
+msgid "clock change"
+msgstr ""
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr ""
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr ""
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+
+#: src/who.c:551
+msgid "NAME"
+msgstr ""
+
+#: src/who.c:551
+msgid "LINE"
+msgstr ""
+
+#: src/who.c:551
+msgid "TIME"
+msgstr ""
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr ""
+
+#: src/who.c:552
+msgid "PID"
+msgstr ""
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr ""
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr ""
+
+#: src/who.c:633
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Utilização: %s [OPÇÃO]... [FICHEIRO]...\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+
+#: src/whoami.c:51
+#, fuzzy
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Mostra o nome do utilizador associado à identificação de utilizador "
+"efectiva\n"
+"actualmente.\n"
+"O mesmo que id -un.\n"
+"\n"
+" --help mostrar esta ajuda e sair.\n"
+" --version mostrar informação de versão e sair\n"
+
+#: src/whoami.c:95
+#, fuzzy, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: não consigo encontrar um nome para o UID %u\n"
+
+#: src/yes.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Utilização: %s [PARÂMETRO]...\n"
+" ou: %s OPÇÃO\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+
+#, fuzzy
+#~ msgid "program error"
+#~ msgstr "erro de leitura"
+
+#, fuzzy
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "aviso: não consigo mudar para a directoria %s"
+
+#, fuzzy
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "aviso: não consigo mudar para a directoria %s"
+
+#~ msgid "too few arguments"
+#~ msgstr "poucos argumentos"
+
+#, fuzzy
+#~ msgid "closing standard output"
+#~ msgstr "canal de saída padrão (stdout)"
+
+#~ msgid "group number"
+#~ msgstr "grupo número"
+
+#, fuzzy
+#~ msgid "invalid group number %s"
+#~ msgstr "opção inválida `%s'"
+
+#, fuzzy
+#~ msgid "invalid mode string: %s"
+#~ msgstr "string de formatação inválida: `%s'"
+
+#, fuzzy
+#~ msgid "unable to restore permissions of %s"
+#~ msgstr "aviso: não consigo mudar para a directoria %s"
+
+#, fuzzy
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "Utilização: %s [OPÇÃO]... [FICHEIRO]...\n"
+
+#, fuzzy
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "não consigo obter a directoria actual"
+
+#, fuzzy
+#~ msgid "missing file arguments"
+#~ msgstr "falta um argumento a `%s'"
+
+#, fuzzy
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "`%s' não é uma directoria"
+
+#, fuzzy
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr ""
+#~ "a copiar vários ficheiros, mas o último argumento (%s) não é uma "
+#~ "directoria"
+
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "ligações (links) simbólicas não são suportadas neste sistema"
+
+#, fuzzy
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "demasiados argumentos não-opção"
+
+#, fuzzy
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-822 (-R) option"
+#~ msgstr ""
+#~ "a string de formatação não deve ser especificada ao imprimir strings com "
+#~ "a \n"
+#~ "mesma largura"
+
+#~ msgid "undefined"
+#~ msgstr "indefenido"
+
+#, fuzzy
+#~ msgid "cannot get time of day"
+#~ msgstr "não consigo obter prioridade"
+
+#, fuzzy
+#~ msgid "%s+%s records in\n"
+#~ msgstr "%u+%u registos dentro\n"
+
+#, fuzzy
+#~ msgid "%s+%s records out\n"
+#~ msgstr "%u+%u registos fora\n"
+
+#~ msgid "truncated records"
+#~ msgstr "registos truncados"
+
+#~ msgid ""
+#~ "only one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, "
+#~ "{unblock,sync}"
+#~ msgstr ""
+#~ "só uma conversão em {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, \n"
+#~ "{unblock,sync}"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr ""
+#~ "não se podem usar argumentos de tipo FICHEIRO com a opção para mostrar a "
+#~ "base\n"
+#~ "de dados interna do \"dircolors\""
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Utilização: %s [NOME]\n"
+#~ " ou: %s [OPÇÃO]\n"
+#~ "Mostra o hostname do sistema corrente.\n"
+#~ "\n"
+#~ " --help mostra esta ajuda e sai\n"
+#~ " --version mostra a informação de versão e sai\n"
+
+#, fuzzy
+#~ msgid "invalid width option: `%s'"
+#~ msgstr "opção inválida `%s'"
+
+#, fuzzy
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "opção inválida `%s'"
+
+#, fuzzy
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr ""
+#~ "a copiar vários ficheiros, mas o último argumento (%s) não é uma "
+#~ "directoria"
+
+#, fuzzy
+#~ msgid "%s is a directory"
+#~ msgstr "`%s' não é uma directoria"
+
+#, fuzzy
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "não consigo determinar o hostname"
+
+#, fuzzy
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "intervalo de tempo inválido `%s'"
+
+#, fuzzy
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "intervalo de tempo inválido `%s'"
+
+#, fuzzy
+#~ msgid "too many non-option arguments"
+#~ msgstr "demasiados argumentos não-opção"
+
+#, fuzzy
+#~ msgid "too few non-option arguments"
+#~ msgstr "demasiados argumentos não-opção"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: Ficheiro já existente"
+
+#, fuzzy
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "não consigo criar ligação (link) simbólica `%s'"
+
+#, fuzzy
+#~ msgid "create hard link %s to %s"
+#~ msgstr "não consigo criar a ligação (link) de `%s' para `%s'"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "Utilização: %s [OPÇÃO]... FONTE DESTINO (1o formato)\n"
+#~ " ou: %s [OPÇÃO]... FONTE... DIRECTORIA (2o formato)\n"
+#~ " ou: %s -d [OPÇÃO]... DIRECTORIA... (3o formato)\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr ""
+#~ "quando a fazer ligações (links) múltiplas último argumento deve ser \n"
+#~ "directoria"
+
+#, fuzzy
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr ""
+#~ "as opções para especificar a data de impressão são mutuamente exclusivas"
+
+#, fuzzy
+#~ msgid "no files may be specified when using --string"
+#~ msgstr ""
+#~ "a string de formatação não deve ser especificada ao imprimir strings com "
+#~ "a \n"
+#~ "mesma largura"
+
+#, fuzzy
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "aviso: não consigo mudar para a directoria %s"
+
+#, fuzzy
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "aviso: não consigo mudar para a directoria %s"
+
+#, fuzzy
+#~ msgid "wrong number of arguments"
+#~ msgstr "a ignorar argumentos não-opção"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr ""
+#~ "ficheiros especiais de tipo \"fifo\" pode não ter os números \"major\" e "
+#~ "\"minor\"\n"
+#~ "do periférico"
+
+#, fuzzy
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "aviso: não consigo mudar para a directoria %s"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr ""
+#~ "ao mover ficheiros múltiplos o último argumento tem que ser uma directoria"
+
+#, fuzzy
+#~ msgid ""
+#~ "Run COMMAND with an adjusted scheduling priority.\n"
+#~ "With no COMMAND, print the current scheduling priority. ADJUST is 10\n"
+#~ "by default. Range goes from -20 (highest priority) to 19 (lowest).\n"
+#~ "\n"
+#~ " -n, --adjustment=ADJUST increment priority by ADJUST first\n"
+#~ msgstr ""
+#~ "Corre o COMANDO com uma prioridade de despacho ajustada.\n"
+#~ "Sem qualquer COMANDO, mostra a prioridade de despacho actual. AJUSTE é "
+#~ "10\n"
+#~ "por defeito. Valores vão desde -20 (prioridade mais alta) a 19 (mais "
+#~ "baixa).\n"
+#~ "\n"
+#~ " -AJUSTE incrementa prioridade AJUSTE primeiro\n"
+#~ " -n, --adjustment=AJUSTE igual a -AJUSTE\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+
+#~ msgid "invalid option `%s'"
+#~ msgstr "opção inválida `%s'"
+
+#~ msgid "invalid priority `%s'"
+#~ msgstr "prioridade inválida `%s'"
+
+#~ msgid "cannot get priority"
+#~ msgstr "não consigo obter prioridade"
+
+#~ msgid "cannot set priority"
+#~ msgstr "não consigo alterar prioridade"
+
+#, fuzzy
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr ""
+#~ "Diagnostica construções não portáveis em NOME.\n"
+#~ "\n"
+#~ " -p, --portability verifica todos os sistemas POSIX, não só este\n"
+#~ " --help mostra esta ajuda e sai\n"
+#~ " --version mostrar a informação de versão e sai\n"
+
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "o caminho `%s' contém o caracter não portável `%c'"
+
+#~ msgid "`%s' is not a directory"
+#~ msgstr "`%s' não é uma directoria"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "não é possível procurar na directoria `%s'"
+
+#, fuzzy
+#~ msgid "name `%s' has length %ld; exceeds limit of %ld"
+#~ msgstr "nome `%s' tem comprimento %d; excede limite de %d"
+
+#, fuzzy
+#~ msgid "path `%s' has length %d; exceeds limit of %ld"
+#~ msgstr "caminho `%s' tem comprimento %d; excede limite de %d"
+
+#, fuzzy
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "número de grupo inválido `%s'"
+
+#, fuzzy
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "argumento em vírgula flutuante inválido: %s"
+
+#, fuzzy
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "argumento inteiro inválido `%s'"
+
+#~ msgid "\\%c: invalid escape"
+#~ msgstr "\\%c: caracter de escape inválido"
+
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "Utilização: %s formato [argumento...]\n"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "aviso: não consigo mudar para a directoria %s"
+
+#, fuzzy
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "não consigo correr %s"
+
+#, fuzzy
+#~ msgid "cannot lstat %s"
+#~ msgstr "não consigo alterar data"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "aviso: não consigo mudar para a directoria %s"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "não consigo apagar `.' ou `..'"
+
+#, fuzzy
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ " -r, -R, --recursive remove the contents of directories recursively\n"
+#~ " -v, --verbose explain what is being done\n"
+#~ msgstr ""
+#~ "Apagar (destruir as ligações - unlink) do(s) FICHEIRO(s).\n"
+#~ "\n"
+#~ " -d, --directory destruir a ligação (link) da directoria, mesmo "
+#~ "que\n"
+#~ " não vazia (só super-utilizador)\n"
+#~ " -f, --force ignorar ficheiros não existentes, nunca "
+#~ "perguntar\n"
+#~ " -i, --interactive perguntar antes de qualquer remoção\n"
+#~ " -v, --verbose explicar o que se está a fazer\n"
+#~ " -r, -R, --recursive apagar os conteúdos das directorias "
+#~ "recursivamente\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+
+#~ msgid ""
+#~ "when the starting value is larger than the limit,\n"
+#~ "the increment must be negative"
+#~ msgstr ""
+#~ "quando o valor inicial é maior que o limite,\n"
+#~ "o incremento deve ser positivo"
+
+#~ msgid ""
+#~ "when the starting value is smaller than the limit,\n"
+#~ "the increment must be positive"
+#~ msgstr ""
+#~ "quando o valor inicial é menor que o limite,\n"
+#~ "o argumento deve ser positivo"
+
+#, fuzzy
+#~ msgid "stdin: read error"
+#~ msgstr "erro de leitura"
+
+#, fuzzy
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "formato da data inválido `%s'"
+
+#, fuzzy
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr "número inválido `%s'"
+
+#~ msgid "argument expected\n"
+#~ msgstr "argumento esperado\n"
+
+#~ msgid "integer expression expected %s\n"
+#~ msgstr "esperava uma expressão inteira %s\n"
+
+#~ msgid "before -lt"
+#~ msgstr "antes de -lt"
+
+#~ msgid "after -lt"
+#~ msgstr "depois de -lt"
+
+#~ msgid "before -le"
+#~ msgstr "antes de -le"
+
+#~ msgid "after -le"
+#~ msgstr "depois de -le"
+
+#~ msgid "before -gt"
+#~ msgstr "antes de -gt"
+
+#~ msgid "after -gt"
+#~ msgstr "depois de -gt"
+
+#~ msgid "before -ge"
+#~ msgstr "antes de -ge"
+
+#~ msgid "after -ge"
+#~ msgstr "depois de -ge"
+
+#~ msgid "before -ne"
+#~ msgstr "antes de -ne"
+
+#~ msgid "after -ne"
+#~ msgstr "depois de -ne"
+
+#~ msgid "before -eq"
+#~ msgstr "antes de -eq"
+
+#~ msgid "after -eq"
+#~ msgstr "depois de -eq"
+
+#, fuzzy
+#~ msgid "after -t"
+#~ msgstr "depois de -lt"
+
+#~ msgid "too many arguments\n"
+#~ msgstr "demasiados argumentos\n"
+
+#, fuzzy
+#~ msgid "file arguments missing"
+#~ msgstr "poucos argumentos"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Utilização: %s [NOME]\n"
+#~ " ou: %s [OPÇÃO]\n"
+#~ "Mostra o hostname do sistema corrente.\n"
+#~ "\n"
+#~ " --help mostra esta ajuda e sai\n"
+#~ " --version mostra a informação de versão e sai\n"
+
+#, fuzzy
+#~ msgid "only one argument may be specified"
+#~ msgstr "\\%c: caracter de escape inválido"
+
+#~ msgid "%s: cannot find username for UID %u\n"
+#~ msgstr "%s: não consigo encontrar um nome para o UID %u\n"
+
+#, fuzzy
+#~ msgid "Try %s --help' for more information.\n"
+#~ msgstr "Tente `%s --help' para mais informação.\n"
+
+#, fuzzy
+#~ msgid "cannot lstat `.'"
+#~ msgstr "não consigo alterar data"
+
+#, fuzzy
+#~ msgid "%s: remove directory %s? "
+#~ msgstr "não consigo obter a directoria actual"
+
+#, fuzzy
+#~ msgid "removing all entries of directory %s\n"
+#~ msgstr "%s: apagar directoria `%s'? "
+
+#, fuzzy
+#~ msgid "continue? "
+#~ msgstr "%s: continuar? "
+
+#, fuzzy
+#~ msgid "cannot change back to directory %s via `..'"
+#~ msgstr "aviso: não consigo mudar para a directoria %s"
+
+#, fuzzy
+#~ msgid "%s: remove directory %s%s? "
+#~ msgstr "não consigo obter a directoria actual"
+
+#, fuzzy
+#~ msgid "removing the directory itself: %s\n"
+#~ msgstr "aviso: não consigo mudar para a directoria %s"
+
+#, fuzzy
+#~ msgid "cannot fork"
+#~ msgstr "não consigo correr %s"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Mostra o nome do utilizador actual.\n"
+#~ "\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Mostra o nome do utilizador actual.\n"
+#~ "\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Mostra o nome do utilizador actual.\n"
+#~ "\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Mostra o nome do utilizador actual.\n"
+#~ "\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Mostra o nome do utilizador actual.\n"
+#~ "\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Mostra o nome do utilizador actual.\n"
+#~ "\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Mostra o nome do utilizador actual.\n"
+#~ "\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Mostra o nome do utilizador actual.\n"
+#~ "\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Mostra o nome do utilizador actual.\n"
+#~ "\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Mostra o nome do utilizador actual.\n"
+#~ "\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Change the group membership of each FILE to GROUP.\n"
+#~ "\n"
+#~ " -c, --changes like verbose but report only when a change is "
+#~ "made\n"
+#~ " --dereference affect the referent of each symbolic link, "
+#~ "rather\n"
+#~ " than the symbolic link itself\n"
+#~ " -h, --no-dereference affect symbolic links instead of any referenced "
+#~ "file\n"
+#~ " (available only on systems that can change the\n"
+#~ " ownership of a symlink)\n"
+#~ " -f, --silent, --quiet suppress most error messages\n"
+#~ " --reference=RFILE use RFILE's group rather than the specified\n"
+#~ " GROUP value\n"
+#~ " -R, --recursive operate on files and directories recursively\n"
+#~ " -v, --verbose output a diagnostic for every file processed\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Muda as permissões de grupo de cada FICHEIRO para GRUPO\n"
+#~ "\n"
+#~ " -c, --changes igual ao modo \"verbose\" mas avisa só quando "
+#~ "uma \n"
+#~ " alteração é feita\n"
+#~ " -h, --no-dereference afectar ligações simbólicas (symlinks) em vez de\n"
+#~ " algum ficheiro referenciado\n"
+#~ " -f, --silent, --quiet desligar a maior parte das mensagens de erro\n"
+#~ " -v, --verbose mostrar um diagnóstico por cada ficheiro "
+#~ "processado\n"
+#~ " -R, --recursive mudar ficheiros e directorias recursivamente\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+#~ "\n"
+#~ " -c, --changes like verbose but report only when a change is "
+#~ "made\n"
+#~ " --dereference affect the referent of each symbolic link, "
+#~ "rather\n"
+#~ " than the symbolic link itself\n"
+#~ " -h, --no-dereference affect symbolic links instead of any referenced "
+#~ "file\n"
+#~ " (available only on systems that can change the\n"
+#~ " ownership of a symlink)\n"
+#~ " --from=CURRENT_OWNER:CURRENT_GROUP\n"
+#~ " change the owner and/or group of each file only "
+#~ "if\n"
+#~ " its current owner and/or group match those "
+#~ "specified\n"
+#~ " here. Either may be omitted, in which case a "
+#~ "match\n"
+#~ " is not required for the omitted attribute.\n"
+#~ " -f, --silent, --quiet suppress most error messages\n"
+#~ " --reference=RFILE use RFILE's owner and group rather than\n"
+#~ " the specified OWNER:GROUP values\n"
+#~ " -R, --recursive operate on files and directories recursively\n"
+#~ " -v, --verbose output a diagnostic for every file processed\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Muda o dono e/ou grupo de cada FICHEIRO para DONO e/ou GRUPO.\n"
+#~ "\n"
+#~ " -c, --changes ser verboso quando ocorrerem mudanças\n"
+#~ " -h, --no-dereference afectar ligações simbólicas (symlinks) em vez "
+#~ "do\n"
+#~ " ficheiro referenciado. (disponível só em "
+#~ "sistemas\n"
+#~ " com a chamada de sistema lchown)\n"
+#~ " -f, --silent, --quiet desliga a maioria das mensagens de erro\n"
+#~ " -v, --verbose explica o que está a ser feito\n"
+#~ " -R, --recursive muda ficheiros e directorias recursivamente\n"
+#~ " --help mostra esta ajuda e sai\n"
+#~ " --version mostra a versão e sai\n"
+#~ "\n"
+#~ "Dono é mantido se inexistente. Grupo é mantido se inexistente, mas "
+#~ "mudado \n"
+#~ "para grupo de login se implícito com um ponto. Uma vírgula pode ser "
+#~ "usada \n"
+#~ "em vez do ponto.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -l, --link link files instead of copying\n"
+#~ " -L, --dereference always follow symbolic links\n"
+#~ " -p same as --preserve=mode,ownership,"
+#~ "timestamps\n"
+#~ " --preserve[=ATTR_LIST] preserve the specified attributes "
+#~ "(default:\n"
+#~ " mode,ownership,timestamps), if possible\n"
+#~ " additional attributes: links, all\n"
+#~ " --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+#~ " --parents append source path to DIRECTORY\n"
+#~ " -P same as `--no-dereference'\n"
+#~ " -r copy recursively, non-directories as "
+#~ "files\n"
+#~ " WARNING: use -R instead when you might "
+#~ "copy\n"
+#~ " special files like FIFOs or /dev/zero\n"
+#~ " --remove-destination remove each existing destination file "
+#~ "before\n"
+#~ " attempting to open it (contrast with --"
+#~ "force)\n"
+#~ msgstr ""
+#~ "Copia FONTE para DESTINO, ou múltiplas FONTE(s) para DIRECTORIA.\n"
+#~ "\n"
+#~ " -a, --archive igual a -dpR\n"
+#~ " -b, --backup fazer \"backup\" antes da remoção\n"
+#~ " -d, --no-dereference manter as links\n"
+#~ " -f, --force remover destinos existentes, nunca "
+#~ "perguntar\n"
+#~ " -i, --interactive perguntar antes de apagar\n"
+#~ " -l, --link fazer ligações (links) de ficheiros em "
+#~ "vez\n"
+#~ " de os copiar\n"
+#~ " -p, --preserve manter atributos dos ficheiros se "
+#~ "possível\n"
+#~ " -r copiar recursivamente, não-directorias "
+#~ "como\n"
+#~ " ficheiros\n"
+#~ " --sparse=QUANDO controlar a criação de ficheiros "
+#~ "esparsos\n"
+#~ " -s, --symbolic-link fazer ligações (links) simbólicas em vez "
+#~ "de\n"
+#~ " copiar\n"
+#~ " -u, --update copiar só ficheiros novos ou mais "
+#~ "velhos\n"
+#~ " -v, --verbose explica o que está a ser feito\n"
+#~ " -x, --one-file-system ficar só neste sistema de ficheiros\n"
+#~ " -P, --parents acrescentar caminho (path) de fonte a \n"
+#~ " DIRECTORIA\n"
+#~ " -R, --recursive copiar directorias recursivamente\n"
+#~ " -S, --sufix=SUFIXO usar em vez do sufixo de \"backup\" "
+#~ "usual\n"
+#~ " -V, --version-control=PALAVRA usar em vez do controlo de versão "
+#~ "habitual\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+#~ "\n"
+#~ "Por omissão, ficheiros esparsos da FONTE são detectados por uma "
+#~ "heurística \n"
+#~ "grosseira e o correspondente ficheiro DESTINO é também feito um "
+#~ "ficheiro \n"
+#~ "esparso. Este é o comportamento escolhido por --sparse=auto. Especifica \n"
+#~ "--sparse=always para criar um ficheiro esparso em DESTINO quando o "
+#~ "ficheiro\n"
+#~ "SOURCE tiver uma sequência de bytes a zero suficientemente grande.\n"
+#~ "\n"
+#~ "Usa --sparse=never para inibir a criação de ficheiros esparsos.\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Copy a file, converting and formatting according to the options.\n"
+#~ "\n"
+#~ " bs=BYTES force ibs=BYTES and obs=BYTES\n"
+#~ " cbs=BYTES convert BYTES bytes at a time\n"
+#~ " conv=KEYWORDS convert the file as per the comma separated keyword "
+#~ "list\n"
+#~ " count=BLOCKS copy only BLOCKS input blocks\n"
+#~ " ibs=BYTES read BYTES bytes at a time\n"
+#~ " if=FILE read from FILE instead of stdin\n"
+#~ " obs=BYTES write BYTES bytes at a time\n"
+#~ " of=FILE write to FILE instead of stdout\n"
+#~ " seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+#~ " skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "BLOCKS and BYTES may be followed by the following multiplicative "
+#~ "suffixes:\n"
+#~ "xM M, c 1, w 2, b 512, kD 1000, k 1024, MD 1,000,000, M 1,048,576,\n"
+#~ "GD 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.\n"
+#~ "Each KEYWORD may be:\n"
+#~ "\n"
+#~ " ascii from EBCDIC to ASCII\n"
+#~ " ebcdic from ASCII to EBCDIC\n"
+#~ " ibm from ASCII to alternated EBCDIC\n"
+#~ " block pad newline-terminated records with spaces to cbs-size\n"
+#~ " unblock replace trailing spaces in cbs-size records with newline\n"
+#~ " lcase change upper case to lower case\n"
+#~ " notrunc do not truncate the output file\n"
+#~ " ucase change lower case to upper case\n"
+#~ " swab swap every pair of input bytes\n"
+#~ " noerror continue after read errors\n"
+#~ " sync pad every input block with NULs to ibs-size; when used\n"
+#~ " with block or unblock, pad with spaces rather than NULs\n"
+#~ msgstr ""
+#~ "Copiar um ficheiro, convertendo e formatando de acordo com as opções.\n"
+#~ "\n"
+#~ " bs=BYTES forçar ibs=BYTES e obs=BYTES\n"
+#~ " cbs=BYTES converter BYTES bytes de cada vez\n"
+#~ " conv=PALAVRAS-CHAVE converter o ficheiro de acordo com lista de "
+#~ "palavras \n"
+#~ " chave separadas por vírgulas\n"
+#~ " count=BLOCOS copiar só BLOCOS blocos de entrada\n"
+#~ " ibs=BYTES ler BYTES bytes de cada vez\n"
+#~ " if=FICHEIRO ler de FICHEIRO em vez de stdin\n"
+#~ " obs=BYTES escrever BYTES bytes de cada vez\n"
+#~ " of=FICHEIRO escrever para FICHEIRO em vez de stdout, sem truncar \n"
+#~ " FICHEIRO\n"
+#~ " seek=BLOCOS saltar por cima dos primeiros BLOCOS blocos de "
+#~ "tamanho \n"
+#~ " obs no início do output\n"
+#~ " skip=BLOCOS saltar por cima dos primeiros BLOCOS blocos de "
+#~ "tamanho \n"
+#~ " ibs no início do input\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar informação sobre a versão e sair\n"
+#~ "\n"
+#~ "BYTES pode ter sufixos:by xM para multiplicar por M, by c para x1, by w "
+#~ "para\n"
+#~ "x2, by b para x512, by k para x1024.Cada PALAVRA-CHAVE pode ser:\n"
+#~ "\n"
+#~ " ascii de EBCDIC para ASCII\n"
+#~ " ebcdic de ASCII para EBCDIC\n"
+#~ " ibm de ASCII para EBCDIC alternado\n"
+#~ " block acrescentar aos registos terminados com fim de linha "
+#~ "espaços \n"
+#~ " até cbs-tamanho\n"
+#~ " unblock substituir os espaços no fim dos registos de tamanho cbs "
+#~ "com \n"
+#~ " um fim de linha\n"
+#~ " lcase mudar de letras maiúsculas para minúsculas\n"
+#~ " ucase mudar de letras minúsculas para maiúsculas\n"
+#~ " swab trocar cada par de bytes de input\n"
+#~ " noerror continuar mesmo depois de erros de leitura\n"
+#~ " sync acrescentar a cada bloco de entrada NULs até ibs-tamanho\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Show information about the filesystem on which each FILE resides,\n"
+#~ "or all filesystems by default.\n"
+#~ "\n"
+#~ " -a, --all include filesystems having 0 blocks\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -i, --inodes list inode information instead of block usage\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l, --local limit listing to local filesystems\n"
+#~ " -m, --megabytes like --block-size=1048576\n"
+#~ " --no-sync do not invoke sync before getting usage info "
+#~ "(default)\n"
+#~ " -P, --portability use the POSIX output format\n"
+#~ " --sync invoke sync before getting usage info\n"
+#~ " -t, --type=TYPE limit listing to filesystems of type TYPE\n"
+#~ " -T, --print-type print filesystem type\n"
+#~ " -x, --exclude-type=TYPE limit listing to filesystems not of type "
+#~ "TYPE\n"
+#~ " -v (ignored)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Mostrar informação sobre o sistema de ficheiros onde cada FICHEIRO "
+#~ "reside,\n"
+#~ "ou todos os sistemas de ficheiros por omissão.\n"
+#~ "\n"
+#~ " -a, --all incluir sistemas de ficheiros com 0 blocos\n"
+#~ " -h, --human imprimir tamanhos em formato legível por "
+#~ "humanos \n"
+#~ " (ex. 1K 234M 2G)\n"
+#~ " -i, --inodes mostra informação de inodes em vez de blocos \n"
+#~ " utilizados\n"
+#~ " -k, --kilobytes usar blocos de 1024 bytes em vez de 512 apesar "
+#~ "de \n"
+#~ " POSIXLY_CORRECT\n"
+#~ " -m, --megabytes usar blocos de 1024K bytes em vez de 512 apesar "
+#~ "de\n"
+#~ " POSIXLY_CORRECT\n"
+#~ " --no-sync não invocar o sync antes de obter informação de\n"
+#~ " utilização (opção por defeito)\n"
+#~ " --sync invocar sync antes de obter informação de "
+#~ "utilização\n"
+#~ " -t, --type=TIPO limitar a listagem a sistemas de ficheiros do "
+#~ "tipo \n"
+#~ " TIPO\n"
+#~ " -x, --exclude-type=TIPO limitar a listagem a sistemas de ficheiros que "
+#~ "não\n"
+#~ " sejam do tipo TIPO\n"
+#~ " -v (ignorado)\n"
+#~ " -P, --portability usar o formato de output do POSIX\n"
+#~ " -T, --print-type imprimir o tipo do sistema de ficheiros\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar informação sobre a versão e sair\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Summarize disk usage of each FILE, recursively for directories.\n"
+#~ "\n"
+#~ " -a, --all write counts for all files, not just directories\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -b, --bytes print size in bytes\n"
+#~ " -c, --total produce a grand total\n"
+#~ " -D, --dereference-args dereference PATHs when symbolic link\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l, --count-links count sizes many times if hard linked\n"
+#~ " -L, --dereference dereference all symbolic links\n"
+#~ " -m, --megabytes like --block-size=1048576\n"
+#~ " -S, --separate-dirs do not include size of subdirectories\n"
+#~ " -s, --summarize display only a total for each argument\n"
+#~ " -x, --one-file-system skip directories on different filesystems\n"
+#~ " -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+#~ "FILE.\n"
+#~ " --exclude=PAT Exclude files that match PAT.\n"
+#~ " --max-depth=N print the total for a directory (or file, with --"
+#~ "all)\n"
+#~ " only if it is N or fewer levels below the "
+#~ "command\n"
+#~ " line argument; --max-depth=0 is the same as\n"
+#~ " --summarize\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Mostrar a utilização de disco de cada FICHEIRO, recursivamente para\n"
+#~ "directorias.\n"
+#~ "\n"
+#~ " -a, --all escreve a contagem para todos os ficheiros, "
+#~ "não \n"
+#~ " apenas directorias\n"
+#~ " -b, --bytes imprimir o tamanho em bytes\n"
+#~ " -c, --total produzir um total final\n"
+#~ " -D, --dereference-arg des-referenciar CAMINHOs se ligação simbólica \n"
+#~ " (symlink)\n"
+#~ " -h, --human imprimir tamanhos em formato legível por "
+#~ "humanos \n"
+#~ " (ex. 1K 234M 2G)\n"
+#~ " -k, --kilobytes usar blocos de 1024 bytes em vez de 512 apesar "
+#~ "de \n"
+#~ " POSIXLY_CORRECT\n"
+#~ " -l, --count-links contar cada tamanho várias vezes se houver "
+#~ "ligações\n"
+#~ " (links) fixas\n"
+#~ " -L, --dereference des-referenciar todas as ligações (links) "
+#~ "simbólicas\n"
+#~ " -m, --megabytes usar blocos de 1024K bytes em vez de 512 apesar "
+#~ "de\n"
+#~ " POSIXLY_CORRECT\n"
+#~ " -S, --separate-dirs não incluir tamanho de sub-directorias\n"
+#~ " -s, --summarize mostrar só um total para cada argumento\n"
+#~ " -x, --one-file-sysyem saltar directorias em sistemas de ficheiros \n"
+#~ " diferentes\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar informação de versão e sair\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "In the first two formats, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+#~ "the existing DIRECTORY, while setting permission modes and owner/group.\n"
+#~ "In the third format, create all components of the given DIRECTORY(ies).\n"
+#~ "\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination file\n"
+#~ " -b like --backup but does not accept an argument\n"
+#~ " -c (ignored)\n"
+#~ " -d, --directory treat all arguments as directory names; create all\n"
+#~ " components of the specified directories\n"
+#~ " -D create all leading components of DEST except the "
+#~ "last,\n"
+#~ " then copy SOURCE to DEST; useful in the 1st "
+#~ "format\n"
+#~ " -g, --group=GROUP set group ownership, instead of process' current "
+#~ "group\n"
+#~ " -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-"
+#~ "xr-x\n"
+#~ " -o, --owner=OWNER set ownership (super-user only)\n"
+#~ " -p, --preserve-timestamps apply access/modification times of SOURCE "
+#~ "files\n"
+#~ " to corresponding destination files\n"
+#~ " -s, --strip strip symbol tables, only for 1st and 2nd formats\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " -v, --verbose print the name of each directory as it is created\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Nos dois primeiros formatos, copia FONTE para DESTINO ou múltiplas\n"
+#~ "FONTE(s) para DIRECTORIA, ao mesmo tempo que ajusta as permissões e o \n"
+#~ "dono/grupo. No terceiro formato, ajusta todos os componentes das\n"
+#~ "DIRECTORIA(s) dadas.\n"
+#~ "\n"
+#~ " -c (ignorado)\n"
+#~ " -d, --directory criar directorias [anteriores], manda-tório para "
+#~ "o\n"
+#~ " 3o formato\n"
+#~ " -g, --group=GRUPO todos os ficheiros passam a pertencer ao grupo "
+#~ "GRUPO\n"
+#~ " em vez do grupo do processo que lança o comando\n"
+#~ " -m, --mode=MODO todas as permissões ficam a modo MODO (como no "
+#~ "chmod)\n"
+#~ " em vez de rw-r--r--\n"
+#~ " -o, --owner=DONO todos os ficheiros passam a ter como dono DONO "
+#~ "(só \n"
+#~ " super-utilizador)\n"
+#~ " -s, --strip retirar as tabelas de símbolos, só para o 1o ou "
+#~ "2o \n"
+#~ " formato\n"
+#~ " -b, --backup fazer \"backup\" antes da remoção\n"
+#~ " -S, --sufix=SUFIXO usar SUFIXO em vez do sufixo habitual de \"backup"
+#~ "\"\n"
+#~ " -V, --version-control=PALAVRA usar em vez do controle de versão "
+#~ "habitual\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar informação sobre a versão e sair\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Create a link to the specified TARGET with optional LINK_NAME.\n"
+#~ "If LINK_NAME is omitted, a link with the same basename as the TARGET is\n"
+#~ "created in the current directory. When using the second form with more\n"
+#~ "than one TARGET, the last argument must be a directory; create links\n"
+#~ "in DIRECTORY to each TARGET. Create hard links by default, symbolic\n"
+#~ "links with --symbolic. When creating hard links, each TARGET must "
+#~ "exist.\n"
+#~ "\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination "
+#~ "file\n"
+#~ " -b like --backup but does not accept an "
+#~ "argument\n"
+#~ " -d, -F, --directory hard link directories (super-user only)\n"
+#~ " -f, --force remove existing destination files\n"
+#~ " -n, --no-dereference treat destination that is a symlink to a\n"
+#~ " directory as if it were a normal file\n"
+#~ " -i, --interactive prompt whether to remove destinations\n"
+#~ " -s, --symbolic make symbolic links instead of hard links\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " --target-directory=DIRECTORY specify the DIRECTORY in which to "
+#~ "create\n"
+#~ " the links\n"
+#~ " -v, --verbose print name of each file before linking\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Cria uma ligação (link) de FONTE para DESTINO (. por omissão) ou "
+#~ "múltiplas \n"
+#~ "FONTE(s) para DIRECTORIA. Faz ligações (links) fixas por omissão, "
+#~ "simbólicas\n"
+#~ "com -s.\n"
+#~ "\n"
+#~ " -b, --backup fazer \"backups\" de ficheiros apagados\n"
+#~ " -d, -F, --directory fazer ligações (links) fixas para \n"
+#~ " directorias (só super-utilizador)\n"
+#~ " -f, --force remover destinos existentes\n"
+#~ " -n, --no-dereference tratar destinos que são ligações "
+#~ "(links) \n"
+#~ " simbólicas para uma directoria como "
+#~ "ficheiros\n"
+#~ " normais\n"
+#~ " -i, --interactive perguntar se devemos apagar destinos\n"
+#~ " -s, --symbolic fazer ligações (links) simbólicas em vez "
+#~ "de\n"
+#~ " fixas\n"
+#~ " -v, --verbose escrever nome de cada ficheiro antes de\n"
+#~ " criar a ligação (link)\n"
+#~ " -S, --suffix=SUFIXO usar SUFIXO em vez do sufixo de \"backup"
+#~ "\" \n"
+#~ " usual\n"
+#~ " -V, --version-control=PALAVRA usar PALAVRA em vez do controle de "
+#~ "versão\n"
+#~ " usual\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar informação de versão e sair\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "List information about the FILEs (the current directory by default).\n"
+#~ "Sort entries alphabetically if none of -cftuSUX nor --sort.\n"
+#~ "\n"
+#~ " -a, --all do not hide entries starting with .\n"
+#~ " -A, --almost-all do not list implied . and ..\n"
+#~ " -b, --escape print octal escapes for nongraphic "
+#~ "characters\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -B, --ignore-backups do not list implied entries ending with ~\n"
+#~ " -c with -lt: sort by, and show, ctime (time of "
+#~ "last\n"
+#~ " modification of file status information)\n"
+#~ " with -l: show ctime and sort by name\n"
+#~ " otherwise: sort by ctime\n"
+#~ " -C list entries by columns\n"
+#~ " --color[=WHEN] control whether color is used to distinguish "
+#~ "file\n"
+#~ " types. WHEN may be `never', `always', or "
+#~ "`auto'\n"
+#~ " -d, --directory list directory entries instead of contents\n"
+#~ " -D, --dired generate output designed for Emacs' dired "
+#~ "mode\n"
+#~ " -f do not sort, enable -aU, disable -lst\n"
+#~ " -F, --classify append indicator (one of */=@|) to entries\n"
+#~ " --format=WORD across -x, commas -m, horizontal -x, long -"
+#~ "l,\n"
+#~ " single-column -1, verbose -l, vertical -C\n"
+#~ " --full-time like -l --time-style=full-iso\n"
+#~ msgstr ""
+#~ "Lista informação de FICHEIROs (na directoria corrente por omissão).\n"
+#~ "Ordena entradas alfabética-mente se não forem usadas qualquer das "
+#~ "opções \n"
+#~ "-cftuSUX ou -sort.\n"
+#~ "\n"
+#~ " -A, --almost-all não mostrar . e .. implícitos\n"
+#~ " -a, --all não esconder entradas que começam com .\n"
+#~ " -B, --ignore-backups não mostrar entradas acabando em ~ "
+#~ "implícitas\n"
+#~ " -b, --escape mostrar caracteres de escape octais para \n"
+#~ " caracteres não-gráficos\n"
+#~ " -C mostrar entradas em colunas\n"
+#~ " -c ordenar por tempo de mudança; com -l: "
+#~ "mostra \n"
+#~ " ctime\n"
+#~ " --color[=QUANDO] controlar se a cor é usada para "
+#~ "distinguir \n"
+#~ " tipos de ficheiros. QUANDO pode ser "
+#~ "'never',\n"
+#~ " 'always' ou 'auto'\n"
+#~ " -D, --dired gerar output formatado para o modo dired "
+#~ "do \n"
+#~ " Emacs\n"
+#~ " -d, --directory mostrar os nomes das directorias em vez dos "
+#~ "seus\n"
+#~ " conteúdos\n"
+#~ " -F, --classify acrescentar um caracter para tipificar "
+#~ "cada\n"
+#~ " entrada\n"
+#~ " -f não ordenar, liga -aU, desliga -lst\n"
+#~ " --format=PALAVRA across -x, vírgulas -m, horizontal -x, \n"
+#~ " longo -l, uma coluna -1, verboso -l, \n"
+#~ " vertical -C\n"
+#~ " --full-time mostrar toda a data e todo o tempo\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -g like -l, but do not list owner\n"
+#~ " -G, --no-group inhibit display of group information\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " --si likewise, but use powers of 1000 not 1024\n"
+#~ " -H, --dereference-command-line follow symbolic links on the command "
+#~ "line\n"
+#~ " --indicator-style=WORD append indicator with style WORD to entry "
+#~ "names:\n"
+#~ " none (default), classify (-F), file-type (-"
+#~ "p)\n"
+#~ " -i, --inode print index number of each file\n"
+#~ " -I, --ignore=PATTERN do not list implied entries matching shell "
+#~ "PATTERN\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l use a long listing format\n"
+#~ " -L, --dereference when showing file information for a "
+#~ "symbolic\n"
+#~ " link, show information for the file the "
+#~ "link\n"
+#~ " references rather than for the link "
+#~ "itself\n"
+#~ " -m fill width with a comma separated list of "
+#~ "entries\n"
+#~ msgstr ""
+#~ " -G, --no-group inibir que se mostre a informação de "
+#~ "grupo\n"
+#~ " -g (ignorado)\n"
+#~ " -I, --ignore=PADRÃO não mostrar entradas implícitas incluídas "
+#~ "no \n"
+#~ " padrão de shell PADRÃO\n"
+#~ " -i, --inode mostrar o índice de cada ficheiro\n"
+#~ " -k, --kilobytes usar blocos de 1024 em vez de 512 apesar "
+#~ "de \n"
+#~ " POSIXLY_CORRECT\n"
+#~ " -L, --dereference mostrar entradas apontadas por ligações "
+#~ "(links)\n"
+#~ " simbólicas\n"
+#~ " -l usar formato longo de listagem\n"
+#~ " -m encher largura com entradas separadas por \n"
+#~ " vírgulas\n"
+#~ " -N, --literal mostrar os valores \"reais\" das entradas "
+#~ "(não\n"
+#~ " tratar caracteres com \"Ctrl\" como "
+#~ "especiais)\n"
+#~ " -n, --numeric-uid-gid mostrar UIDs e GIDs numericamente em vez de "
+#~ "pôr\n"
+#~ " nome correspondente\n"
+#~ " -o usar formato de listagem longo sem "
+#~ "informação\n"
+#~ " de grupo\n"
+#~ " -p acrescentar um caracter para tipificar "
+#~ "cada\n"
+#~ " entrada\n"
+#~ " -Q, --quote-name colocar aspas nos nomes das entradas\n"
+#~ " -q, --hide-control-chars mostrar ? em vez de caracteres não "
+#~ "gráficos\n"
+#~ " -R, --recursive mostrar subdirectorias recursivamente\n"
+#~ " -r, --reverse inverter a ordem enquanto ordenando\n"
+#~ " -S ordenar por tamanho de ficheiro\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -S sort by file size\n"
+#~ " --sort=WORD extension -X, none -U, size -S, time -t,\n"
+#~ " version -v\n"
+#~ " status -c, time -t, atime -u, access -u, use "
+#~ "-u\n"
+#~ " --time=WORD show time as WORD instead of modification "
+#~ "time:\n"
+#~ " atime, access, use, ctime or status; use\n"
+#~ " specified time as sort key if --sort=time\n"
+#~ " --time-style=WORD show times using style WORD:\n"
+#~ " full-iso, iso, locale, posix-iso\n"
+#~ " -t sort by modification time\n"
+#~ " -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+#~ " -u with -lt: sort by, and show, access time\n"
+#~ " with -l: show access time and sort by "
+#~ "name\n"
+#~ " otherwise: sort by access time\n"
+#~ " -U do not sort; list entries in directory "
+#~ "order\n"
+#~ " -v sort by version\n"
+#~ " -w, --width=COLS assume screen width instead of current "
+#~ "value\n"
+#~ " -x list entries by lines instead of by columns\n"
+#~ " -X sort alphabetically by entry extension\n"
+#~ " -1 list one file per line\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "By default, color is not used to distinguish types of files. That is\n"
+#~ "equivalent to using --color=none. Using the --color option without the\n"
+#~ "optional WHEN argument is equivalent to using --color=always. With\n"
+#~ "--color=auto, color codes are output only if standard output is "
+#~ "connected\n"
+#~ "to a terminal (tty).\n"
+#~ msgstr ""
+#~ " -s, --size mostrar o tamanho de cada ficheiro em "
+#~ "blocos\n"
+#~ " --sort=PALAVRA ctime -c, extensão -X, nenhum -U, tamanho -"
+#~ "S,\n"
+#~ " estado -c, tempo -t\n"
+#~ " --time=PALAVRA atime -u, acesso -u, utilização -u\n"
+#~ " -T, --tabsize=COLUNA assumir que há tabs de COLUNA em COLUNA \n"
+#~ " colunas em vez de 8 em 8\n"
+#~ " -t ordenar por tempo da última alteração; com -"
+#~ "l;\n"
+#~ " mostra mtime\n"
+#~ " -U não ordenar; mostrar entradas na sua ordem "
+#~ "na\n"
+#~ " directoria\n"
+#~ " -u ordenar por tempo do último acesso; com -"
+#~ "l:\n"
+#~ " mostrar atime\n"
+#~ " -w, --width=COLUNAS assumir que o écran tem largura COLUNAS em "
+#~ "vez\n"
+#~ " do valor actual\n"
+#~ " -x mostrar entradas por linhas em vez de "
+#~ "colunas\n"
+#~ " -X ordenar alfabéticamente pela extensão da\n"
+#~ " entrada\n"
+#~ " -1 mostrar um ficheiro por linha\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+#~ "\n"
+#~ "Por defeito não é usada côr para distinguir entre os tipos de ficheiros.\n"
+#~ "Isto é equivalente a usar --color=none. Usar a opção --color sem o "
+#~ "argumento\n"
+#~ "opcional QUANDO é equivalente a usar --color=always. Com --color=auto "
+#~ "usam-se\n"
+#~ "códigos de cores só se o canal de saída por defeito (stdout) estiver "
+#~ "ligado\n"
+#~ "a um terminal (tty).\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Force changed blocks to disk, update the super block.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Mostra o nome do utilizador actual.\n"
+#~ "\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Update the access and modification times of each FILE to the current "
+#~ "time.\n"
+#~ "\n"
+#~ " -a change only the access time\n"
+#~ " -c, --no-create do not create any files\n"
+#~ " -d, --date=STRING parse STRING and use it instead of current time\n"
+#~ " -f (ignored)\n"
+#~ " -m change only the modification time\n"
+#~ " -r, --reference=FILE use this file's times instead of current time\n"
+#~ " -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current "
+#~ "time\n"
+#~ " --time=WORD set time given by WORD: access atime use (same "
+#~ "as -a)\n"
+#~ " modify mtime (same as -m)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Note that the three time-date formats recognized for the -d and -t "
+#~ "options\n"
+#~ "and for the obsolescent argument are all different.\n"
+#~ msgstr ""
+#~ "Actualizar os tempos de acesso e modificação de cada FICHEIRO para o "
+#~ "tempo\n"
+#~ "actual.\n"
+#~ "\n"
+#~ " -a mudar só os tempos de acesso\n"
+#~ " -c não criar ficheiros\n"
+#~ " -d, --date=STRING analisar STRING e usa-la em vez do tempo "
+#~ "actual\n"
+#~ " -f (ignorado)\n"
+#~ " -m mudar só os tempos de modificação\n"
+#~ " -r, --reference=FICHEIRO usar os tempos de FICHEIRO em vez do tempo "
+#~ "actual\n"
+#~ " -t TEMPO usar MMDDhhmm[[CC]YY][.ss] em vez do tempo "
+#~ "actual\n"
+#~ " --time=PALAVRA acesso -a, atime -a, mtime -m, modificado -m,\n"
+#~ " utilização -a\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+#~ "\n"
+#~ "TEMPO pode ser usado sem -t se não se estiver a usar nem -drt nem --.\n"
+
+#, fuzzy
+#~ msgid "cannot create fifo `%s'"
+#~ msgstr "não consigo obter a directoria actual"
+
+#~ msgid ""
+#~ "when creating character special files, major and minor device\n"
+#~ "numbers must be specified"
+#~ msgstr ""
+#~ "ao criar ficheiros especiais de tipo caracter é necessário especificar\n"
+#~ "os números \"major\" e \"minor\" do periférico"
+
+#~ msgid "group of %s changed to %s\n"
+#~ msgstr "grupo de %s mudou para %s\n"
+
+#, fuzzy
+#~ msgid "ownership of %s changed to "
+#~ msgstr "dono (owner) de %s mudou para "
+
+#, fuzzy
+#~ msgid "you are not a member of group %s"
+#~ msgstr "não és membro do grupo '%s'"
+
+#, fuzzy
+#~ msgid "cannot make fifo %s"
+#~ msgstr "não consigo correr %s"
+
+#, fuzzy
+#~ msgid "cannot change permissions for %s"
+#~ msgstr "aviso: não consigo mudar para a directoria %s"
+
+#, fuzzy
+#~ msgid "cannot remove old link to %s"
+#~ msgstr "não consigo obter a directoria actual"
+
+#~ msgid "virtual memory exhausted"
+#~ msgstr "memória virtual esgotada"
+
+#, fuzzy
+#~ msgid "cannot create directory `%s'"
+#~ msgstr "não consigo obter a directoria actual"
+
+#, fuzzy
+#~ msgid "cannot remove `%s'"
+#~ msgstr "não consigo correr %s"
+
+#, fuzzy
+#~ msgid "specified target, `%s' is not a directory"
+#~ msgstr "`%s' não é uma directoria"
+
+#~ msgid "`%s' and `%s' are the same file"
+#~ msgstr "`%s' e `%s' são o mesmo ficheiro"
+
+#, fuzzy
+#~ msgid "cannot backup `%s'"
+#~ msgstr "não consigo correr %s"
+
+#, fuzzy
+#~ msgid "cannot un-backup `%s'"
+#~ msgstr "não consigo correr %s"
+
+#, fuzzy
+#~ msgid "cannot chmod %s"
+#~ msgstr "não consigo correr %s"
+
+#, fuzzy
+#~ msgid "`%s' exists but is not a directory"
+#~ msgstr "`%s' não é uma directoria"
+
+#, fuzzy
+#~ msgid "create %s %s to %s"
+#~ msgstr "criar %s %s para %s\n"
+
+#~ msgid "hard link"
+#~ msgstr "ligação fixa (hardlink)"
+
+#~ msgid "link"
+#~ msgstr "ligação (link)"
+
+#, fuzzy
+#~ msgid "current directory"
+#~ msgstr "não consigo obter a directoria actual"
+
+#, fuzzy
+#~ msgid "starting directory"
+#~ msgstr "`%s' não é uma directoria"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ msgstr ""
+#~ "Utilização: %s [OPÇÃO]... FONTE [DESTINO]\n"
+#~ " ou: %s [OPÇÃO]... FONTE... DIRECTORIA\n"
+
+#, fuzzy
+#~ msgid "Usage: %s [OPTION]... EXISTING_DIR NEW_DIR\n"
+#~ msgstr "Utilização: %s [OPÇÃO]... [STRING]...\n"
+
+#, fuzzy
+#~ msgid "cannot rename `.' or `..'"
+#~ msgstr "não consigo determinar o hostname"
+
+#~ msgid "%s is closed"
+#~ msgstr "%s está fechado"
+
+#, fuzzy
+#~ msgid "%s: cannot shred read-only file descriptor"
+#~ msgstr "%s: não consigo escrever em cima da directoria"
+
+#, fuzzy
+#~ msgid "Can't fstat file `%s'"
+#~ msgstr "não consigo escrever para `%s'"
+
+#~ msgid "sparse type"
+#~ msgstr "tipo esparso \"sparse\""
+
+#~ msgid "time type"
+#~ msgstr "tipo de tempo"
+
+#~ msgid "format type"
+#~ msgstr "tipo de formato"
+
+#~ msgid "colorization criterion"
+#~ msgstr "critério de colorização"
+
+#~ msgid "time selector"
+#~ msgstr "selector de tempo"
+
+#, fuzzy
+#~ msgid "remove directory `%s'%s? "
+#~ msgstr "não consigo obter a directoria actual"
+
+#~ msgid ""
+#~ "the option for counting 1MB blocks may not be used\n"
+#~ "with the portable output format"
+#~ msgstr ""
+#~ "a opção para contar blocos de 1MB não pode ser usada com o formato de "
+#~ "saída\n"
+#~ "portável"
+
+#, fuzzy
+#~ msgid "removing non-directory %s\n"
+#~ msgstr "aviso: não consigo mudar para a directoria %s"
+
+#~ msgid "%s: replace `%s', overriding mode %04o? "
+#~ msgstr "%s: substituir `%s', apesar do modo %04o? "
+
+#~ msgid "cannot move `%s' across filesystems: Not a regular file"
+#~ msgstr ""
+#~ "não consigo mover `%s' através de sistemas de ficheiros: Não é um "
+#~ "ficheiro\n"
+#~ "normal"
+
+#~ msgid "%s: remove %s`%s', overriding mode %04o? "
+#~ msgstr "%s: apagar %s`%s' apesar do modo %04o? "
+
+#~ msgid "%s: remove directory `%s' (might be nonempty)? "
+#~ msgstr "%s: apagar directoria `%s' (possivelmente não vazia)? "
+
+#~ msgid "%s: descend directory `%s', overriding mode %04o? "
+#~ msgstr "%s: continuar na directoria `%s', apesar do modo %04o? "
+
+#, fuzzy
+#~ msgid "Usage: %s [OPTION]... GROUP FILE...\n"
+#~ msgstr "Utilização: %s [OPÇÃO]... [FICHEIRO]...\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Run COMMAND with root directory set to NEWROOT.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+#~ msgstr ""
+#~ "Sair, retornando o estado determinado por EXPRESSÃO.\n"
+#~ "\n"
+#~ " --help mostrar esta a ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+#~ "\n"
+#~ "EXPRESSÃO é verdadeira ou falsa e altera o o estado de saída. É uma de:\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "FORMAT controls the output. The only valid option for the second form\n"
+#~ "specifies Coordinated Universal Time. Interpreted sequences are:\n"
+#~ "\n"
+#~ " %%%% a literal %%\n"
+#~ " %%a locale's abbreviated weekday name (Sun..Sat)\n"
+#~ " %%A locale's full weekday name, variable length (Sunday..Saturday)\n"
+#~ " %%b locale's abbreviated month name (Jan..Dec)\n"
+#~ " %%B locale's full month name, variable length (January..December)\n"
+#~ " %%c locale's date and time (Sat Nov 04 12:02:33 EST 1989)\n"
+#~ " %%C century (year divided by 100 and truncated to an integer) [00-"
+#~ "99]\n"
+#~ " %%d day of month (01..31)\n"
+#~ " %%D date (mm/dd/yy)\n"
+#~ " %%e day of month, blank padded ( 1..31)\n"
+#~ " %%h same as %%b\n"
+#~ " %%H hour (00..23)\n"
+#~ " %%I hour (01..12)\n"
+#~ " %%j day of year (001..366)\n"
+#~ " %%k hour ( 0..23)\n"
+#~ " %%l hour ( 1..12)\n"
+#~ " %%m month (01..12)\n"
+#~ " %%M minute (00..59)\n"
+#~ " %%n a newline\n"
+#~ " %%p locale's AM or PM\n"
+#~ " %%r time, 12-hour (hh:mm:ss [AP]M)\n"
+#~ " %%s seconds since `00:00:00 1970-01-01 UTC' (a GNU extension)\n"
+#~ " %%S second (00..60)\n"
+#~ " %%t a horizontal tab\n"
+#~ " %%T time, 24-hour (hh:mm:ss)\n"
+#~ " %%u day of week (1..7); 1 represents Monday\n"
+#~ " %%U week number of year with Sunday as first day of week (00..53)\n"
+#~ " %%V week number of year with Monday as first day of week (01..53)\n"
+#~ " %%w day of week (0..6); 0 represents Sunday\n"
+#~ " %%W week number of year with Monday as first day of week (00..53)\n"
+#~ " %%x locale's date representation (mm/dd/yy)\n"
+#~ " %%X locale's time representation (%%H:%%M:%%S)\n"
+#~ " %%y last two digits of year (00..99)\n"
+#~ " %%Y year (1970...)\n"
+#~ " %%z RFC-822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %%Z time zone (e.g., EDT), or nothing if no time zone is "
+#~ "determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr ""
+#~ "\n"
+#~ "FORMATO controla a saída. A única opção válida para a segunda forma\n"
+#~ "especifica Tempo Universal Coordenado. Sequências interpretadas são:\n"
+#~ "\n"
+#~ " %%%% um %% literal\n"
+#~ " %%a dia da semana local abreviado (Dom..Sab)\n"
+#~ " %%A dia da semana local, de comprimento variável (Domingo..Sábado)\n"
+#~ " %%b nome do mês local abreviado (Jan..Dez)\n"
+#~ " %%B nome do mês local, de comprimento variável (Janeiro..Dezembro)\n"
+#~ " %%c data e hora locais (Sab Nov 02 12:02:33 EST 1989)\n"
+#~ " %%d dia do mês (01..31)\n"
+#~ " %%D data (mm/dd/aa)\n"
+#~ " %%e\\tdia do mês, com espaços em vez de zeros à esquerda ( 1..31)\n"
+#~ " %%h o mesmo que %%b\n"
+#~ " %%H hora (00..23)\n"
+#~ " %%I hora (01..12)\n"
+#~ " %%j dia do ano (001..366)\n"
+#~ " %%k hora ( 0..23)\n"
+#~ " %%l hora ( 1..12)\n"
+#~ " %%m mês (01..12)\n"
+#~ " %%M minutos (00..59)\n"
+#~ " %%n um separador de linha\n"
+#~ " %%p AM ou PM locais\n"
+#~ " %%r hora, formato 12-horas (hh:mm:ss [AP]M)\n"
+#~ " %%s segundos desde 00:00:00, Jan 1, 1970 (uma extensão da GNU)\n"
+#~ " %%S segundos (00..61)\n"
+#~ " %%t um tab horizontal\n"
+#~ " %%T hora, formato 24-horas (hh:mm:ss)\n"
+#~ " %%U número da semana no ano com Domingo como primeiro dia da "
+#~ "semana \n"
+#~ " (00..53)\n"
+#~ " %%w dia da semana (0..6); 0 representa o Domingo\n"
+#~ " %%W número da semana no ano com Segunda-Feira como primeiro dia da \n"
+#~ " semana (00..53)\n"
+#~ " %%x representação da data local (mm/dd/aa)\n"
+#~ " %%X representação da hora local (%%H:%%M:%%S)\n"
+#~ " %%y últimos dois dígitos do ano (00..99)\n"
+#~ " %%Y ano (1970...)\n"
+#~ " %%z fuso horário local em formato numérico de acordo com RFC-822 \n"
+#~ " (+0100) (uma extensão não padrão)\n"
+#~ " %%Z fuso horário (ex. EDT), ou nada caso não se consiga determinar\n"
+#~ " nenhum fuso\n"
+#~ "\n"
+#~ " Por defeito o date preenche os campos numéricos com zeros. O GNU date\n"
+#~ "reconhece os seguintes modificadores entre `%%' e uma directriz "
+#~ "numérica.\n"
+#~ "\n"
+#~ " `-' (hífen) não preencher o campo\n"
+#~ " `_' (underscore) preencher o campo com espaços\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ " --help display this help and exit (should be alone)\n"
+#~ " --version output version information and exit (should be alone)\n"
+#~ "\n"
+#~ "Without -E, the following sequences are recognized and interpolated:\n"
+#~ "\n"
+#~ " \\NNN the character whose ASCII code is NNN (octal)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a alert (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c suppress trailing newline\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r carriage return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ msgstr ""
+#~ "Ecoar STRING(s) para o canal de saída padrão (stdout).\n"
+#~ "\n"
+#~ " -n não ecoar a fim-de-linha final\n"
+#~ " -e (não usado)\n"
+#~ " -E desligar a interpolação de algumas sequências em "
+#~ "STRINGs\n"
+#~ " --help mostra esta ajuda e sai (deve ser a única opção "
+#~ "usada)\n"
+#~ " --version mostra a informação de versão e sai (deve ser única "
+#~ "opção\n"
+#~ " usada)\n"
+#~ "\n"
+#~ "Sem -E, as seguintes sequências são reconhecidas e interpoladas:\n"
+#~ "\n"
+#~ " \\NNN o carácter cujo código ASCII é NNN (octal)\n"
+#~ " \\\\ anti-barra\n"
+#~ " \\a alerta (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c elimina o newlines no final\n"
+#~ " \\f form feed\n"
+#~ " \\n newline\n"
+#~ " \\r carriage return\n"
+#~ " \\t tab horizontal\n"
+#~ " \\v tab vertical\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print the value of EXPRESSION to standard output. A blank line below\n"
+#~ "separates increasing precedence groups. EXPRESSION may be:\n"
+#~ "\n"
+#~ " ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+#~ "\n"
+#~ " ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+#~ "\n"
+#~ " ARG1 < ARG2 ARG1 is less than ARG2\n"
+#~ " ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+#~ " ARG1 = ARG2 ARG1 is equal to ARG2\n"
+#~ " ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+#~ " ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+#~ " ARG1 > ARG2 ARG1 is greater than ARG2\n"
+#~ "\n"
+#~ " ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+#~ " ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+#~ "\n"
+#~ " ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+#~ " ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+#~ " ARG1 %% ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+#~ "\n"
+#~ " STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+#~ "\n"
+#~ " match STRING REGEXP same as STRING : REGEXP\n"
+#~ " substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+#~ " index STRING CHARS index in STRING where any CHARS is found, or "
+#~ "0\n"
+#~ " length STRING length of STRING\n"
+#~ " + TOKEN interpret TOKEN as a string, even if it is "
+#~ "a\n"
+#~ " keyword like `match' or an operator like "
+#~ "`/'\n"
+#~ "\n"
+#~ " ( EXPRESSION ) value of EXPRESSION\n"
+#~ msgstr ""
+#~ "Mostra o valor de EXPRESSÃO no canal de saída padrão (stdout). Uma linha "
+#~ "em\n"
+#~ "branco na seguinte listagem separa grupos em ordem ascendente de\n"
+#~ "precedência. EXPRESSÃO pode ser:\n"
+#~ "\n"
+#~ " ARG1 | ARG2 ARG1 se não for nem null nem 0, caso contrário ARG2\n"
+#~ "\n"
+#~ " ARG1 & ARG2 ARG1 se nenhum argumento for null ou 0, caso "
+#~ "contrário\n"
+#~ "0\n"
+#~ " ARG1 < ARG2 ARG1 é menor que ARG2\n"
+#~ " ARG2 <= ARG2 ARG1 é menor ou igual a ARG2\n"
+#~ " ARG1 = ARG2 ARG1 é igual a ARG2\n"
+#~ " ARG1 != ARG2 ARG1 é diferente de ARG2\n"
+#~ " ARG1 >= ARG2 ARG1 é maior ou igual a ARG2\n"
+#~ " ARG1 > ARG2 ARG1 é maior que ARG2\n"
+#~ "\n"
+#~ " ARG1 + ARG2 soma aritmética de ARG1 e ARG2\n"
+#~ " ARG1 - ARG2 diferença aritmética entre ARG1 e ARG2\n"
+#~ "\n"
+#~ " ARG1 * ARG2 produto aritmético de ARG1 e ARG2\n"
+#~ " ARG1 / ARG2 quociente da divisão de ARG1 por ARG2\n"
+#~ "\n"
+#~ " STRING : REGEXP resultado de procurar REGEXP em STRING\n"
+#~ "\n"
+#~ " match STRING REGEXP o mesmo que STRING : REGEXP\n"
+#~ " substr STRING POS COMPRIMENTO sub string de STRING POS contado de 1\n"
+#~ " index STRING CHARS índice em STRING onde está CHARS ou 0\n"
+#~ "\n"
+#~ " ( EXPRESSÃO ) valor de EXPRESSÃO\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print ARGUMENT(s) according to FORMAT.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+#~ "\n"
+#~ " \\\" double quote\n"
+#~ " \\0NNN character with octal value NNN (0 to 3 digits)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a alert (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c produce no further output\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r carriage return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ " \\xNNN byte with hexadecimal value NNN (1 to 3 digits)\n"
+#~ "\n"
+#~ " \\uNNNN character with hexadecimal value NNNN (4 digits)\n"
+#~ " \\UNNNNNNNN character with hexadecimal value NNNNNNNN (8 digits)\n"
+#~ " %%%% a single %%\n"
+#~ " %%b ARGUMENT as a string with `\\' escapes interpreted\n"
+#~ "\n"
+#~ "and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+#~ "ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+#~ msgstr ""
+#~ "Imprime ARGUMENTO(S) de acordo com FORMATO.\n"
+#~ "\n"
+#~ " --help mostra esta ajuda e sair\n"
+#~ " --version mostrar a versão e sair\n"
+#~ "\n"
+#~ "FORMATO controla o que é escrito como na função printf do C. As "
+#~ "sequências\n"
+#~ "interpretadas são:\n"
+#~ "\n"
+#~ " \\\" aspas aspas\n"
+#~ " \\ONNN caracter com valor octal NNN (0 até 3 dígitos)\n"
+#~ " \\\\ barra\n"
+#~ " \\a alerta (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c não produzir mais nenhum output\n"
+#~ " \\f form feed\n"
+#~ " \\n nova linha\n"
+#~ " \\r retorno\n"
+#~ " \\t tab horizontal\n"
+#~ " \\v tab vertical\n"
+#~ " \\xNNN caracter com valor hexadecimal NNN (1 a 3 dígitos)\n"
+#~ "\n"
+#~ " %%%% um único %%\n"
+#~ " %%b ARGUMENTO como uma string com '\\' escapes interpretados\n"
+#~ "\n"
+#~ "e todas as especificações de formato C que acabem em diouxXfeEgGcs,\n"
+#~ "com ARGUMENTO(s) convertidos para o tipo adequado primeiro. Larguras\n"
+#~ "variáveis são também tratadas.\n"
+
+#~ msgid ""
+#~ "Print the full filename of the current working directory.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Imprime o nome completo da directoria corrente.\n"
+#~ "\n"
+#~ " --help mostra esta ajuda e sai\n"
+#~ " --version mostra a informação da versão e sai\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Special characters:\n"
+#~ " * dsusp CHAR CHAR will send a terminal stop signal once input "
+#~ "flushed\n"
+#~ " eof CHAR CHAR will send an end of file (terminate the input)\n"
+#~ " eol CHAR CHAR will end the line\n"
+#~ " * eol2 CHAR alternate CHAR for ending the line\n"
+#~ " erase CHAR CHAR will erase the last character typed\n"
+#~ " intr CHAR CHAR will send an interrupt signal\n"
+#~ " kill CHAR CHAR will erase the current line\n"
+#~ " * lnext CHAR CHAR will enter the next character quoted\n"
+#~ " quit CHAR CHAR will send a quit signal\n"
+#~ " * rprnt CHAR CHAR will redraw the current line\n"
+#~ " start CHAR CHAR will restart the output after stopping it\n"
+#~ " stop CHAR CHAR will stop the output\n"
+#~ " susp CHAR CHAR will send a terminal stop signal\n"
+#~ " * swtch CHAR CHAR will switch to a different shell layer\n"
+#~ " * werase CHAR CHAR will erase the last word typed\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Caracteres especiais:\n"
+#~ "\n"
+#~ "* dsusp CHAR CHAR enviará um stop ao terminal quando o input fôr "
+#~ "flushed\n"
+#~ " eof CHAR CHAR enviará um fim de ficheiro (terminando o input)\n"
+#~ " eol CHAR CHAR terminará a linha\n"
+#~ "* eol2 CHAR caracter alternativo para terminar a linha\n"
+#~ " erase CHAR CHAR apagará o último caracter escrito\n"
+#~ " intr CHAR CHAR enviará um sinal de interrupção\n"
+#~ " kill CHAR CHAR apagará a próxima linha\n"
+#~ "* lnext CHAR CHAR dará entrada ao próximo caracter entre aspas\n"
+#~ " quit CHAR CHAR enviará um sinal de quit\n"
+#~ "* rprnt CHAR CHAR redesenhará a linha actual\n"
+#~ " start CHAR CHAR recomeçará o output depois deste ter sido \n"
+#~ " interrompido\n"
+#~ " stop CHAR CHAR terminará o output\n"
+#~ " susp CHAR CHAR enviará um sinal de stop ao terminal\n"
+#~ "* swtch CHAR CHAR mudará para uma shell diferente\n"
+#~ "* werase CHAR CHAR apagará a última palavra escrita\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Special settings:\n"
+#~ " N set the input and output speeds to N bauds\n"
+#~ " * cols N tell the kernel that the terminal has N columns\n"
+#~ " * columns N same as cols N\n"
+#~ " ispeed N set the input speed to N\n"
+#~ " * line N use line discipline N\n"
+#~ " min N with -icanon, set N characters minimum for a completed "
+#~ "read\n"
+#~ " ospeed N set the output speed to N\n"
+#~ " * rows N tell the kernel that the terminal has N rows\n"
+#~ " * size print the number of rows and columns according to the "
+#~ "kernel\n"
+#~ " speed print the terminal speed\n"
+#~ " time N with -icanon, set read timeout of N tenths of a second\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Parâmetros especiais:\n"
+#~ " N colocar a velocidade de entrada/saída a N bauds\n"
+#~ "* cols N dizer ao kernel que o terminal tem N colunas\n"
+#~ "* columns N o mesmo que cols N\n"
+#~ " ispeed N colocar a velocidade de entrada a N\n"
+#~ "* line N usar line discipline\n"
+#~ " min N com -icanon, colocar a N o número mínimo de "
+#~ "caracteres \n"
+#~ " para uma leitura completa.\n"
+#~ "* rows N dizer ao kernel que o terminal tem N linhas\n"
+#~ "* size mostrar o número de colunas e de linhas de acordo com "
+#~ "o\n"
+#~ " kernel\n"
+#~ " speed mostrar a velocidade do terminal\n"
+#~ " time N com -icanon, colocar o limite de tempo a N décimas de\n"
+#~ " segundo\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Input settings:\n"
+#~ " [-]brkint breaks cause an interrupt signal\n"
+#~ " [-]icrnl translate carriage return to newline\n"
+#~ " [-]ignbrk ignore break characters\n"
+#~ " [-]igncr ignore carriage return\n"
+#~ " [-]ignpar ignore characters with parity errors\n"
+#~ " * [-]imaxbel beep and do not flush a full input buffer on a "
+#~ "character\n"
+#~ " [-]inlcr translate newline to carriage return\n"
+#~ " [-]inpck enable input parity checking\n"
+#~ " [-]istrip clear high (8th) bit of input characters\n"
+#~ " * [-]iuclc translate uppercase characters to lowercase\n"
+#~ " * [-]ixany let any character restart output, not only start "
+#~ "character\n"
+#~ " [-]ixoff enable sending of start/stop characters\n"
+#~ " [-]ixon enable XON/XOFF flow control\n"
+#~ " [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+#~ " [-]tandem same as [-]ixoff\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Parâmetros de entrada:\n"
+#~ " [-]brkint break causa um sinal de interrupção\n"
+#~ " [-]icrnl converter os carriage return para newline\n"
+#~ " [-]ignbrk ignorar caracteres de break\n"
+#~ " [-]ignpar ignorar caracteres com erros de paridade\n"
+#~ " [-]imaxbel não esvaziar um buffer de entrada cheio num caracter e\n"
+#~ " fazer beep quando tal ocorrer\n"
+#~ " [-]inlcr converter de newline para carriage return\n"
+#~ " [-]inpck ligar verificação de paridade na entrada\n"
+#~ " [-]istrip limpar o maior bit (oitavo) dos caracteres de entrada\n"
+#~ " [-]iuclc traduzir caracteres maiúsculos para minúsculos\n"
+#~ " [-]ixany permitir que qualquer caracter recomece a saída, e não \n"
+#~ " apenas os de start\n"
+#~ " [-]ixoff ligar o envio de bits de start/stop\n"
+#~ " [-]ixon ligar o controle de fluxo usando XON/XOFF\n"
+#~ " [-]parmrk marcar erros de paridade (com uma sequência de 255-0\n"
+#~ " caracteres\n"
+#~ " [-]tandem o mesmo que [-]ixoff\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Local settings:\n"
+#~ " [-]crterase echo erase characters as backspace-space-backspace\n"
+#~ " * crtkill kill all line by obeying the echoprt and echoe settings\n"
+#~ " * -crtkill kill all line by obeying the echoctl and echok settings\n"
+#~ " * [-]ctlecho echo control characters in hat notation (`^c')\n"
+#~ " [-]echo echo input characters\n"
+#~ " * [-]echoctl same as [-]ctlecho\n"
+#~ " [-]echoe same as [-]crterase\n"
+#~ " [-]echok echo a newline after a kill character\n"
+#~ " * [-]echoke same as [-]crtkill\n"
+#~ " [-]echonl echo newline even if not echoing other characters\n"
+#~ " * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+#~ " [-]icanon enable erase, kill, werase, and rprnt special "
+#~ "characters\n"
+#~ " [-]iexten enable non-POSIX special characters\n"
+#~ " [-]isig enable interrupt, quit, and suspend special characters\n"
+#~ " [-]noflsh disable flushing after interrupt and quit special "
+#~ "characters\n"
+#~ " * [-]prterase same as [-]echoprt\n"
+#~ " * [-]tostop stop background jobs that try to write to the terminal\n"
+#~ " * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Parâmetros locais:\n"
+#~ " [-] crterase ecoar caracteres erase como backspace-space-backspace\n"
+#~ "* crtkill eliminar a linha inteira obedecendo aos parâmetros "
+#~ "echoprt e\n"
+#~ " echoe\n"
+#~ "* -crtkill eliminar a linha inteira obedecendo aos parâmetros "
+#~ "echoctl e\n"
+#~ " echok\n"
+#~ "* [-]ctlecho ecoar os caracteres de controle com \"chapéus\" ('^c')\n"
+#~ " [-]echo ecoar os caracteres de entrada\n"
+#~ "* [-]echoctl o mesmo que [-]ctlecho\n"
+#~ " [-]echoe o mesmo que [-]crterase\n"
+#~ " [-]echok ecoar um newline depois de um caracter kill\n"
+#~ "* [-]echoke o mesmo que [-]crtkill\n"
+#~ " [-]echonl ecoar newline mesmo se não estivermos a ecoar outros\n"
+#~ "\t\t caracteres\n"
+#~ "* [-]echoprt ecoar caracteres apagados para trás, entre '\\' e '/'\n"
+#~ " [-]icanon permite os caracteres especiais erase,kill,werase e "
+#~ "rprnt\n"
+#~ " [-]iexten permite caracteres especiais não-POSIX\n"
+#~ " [-]isig permite os caracteres especiais interrupção,quit e "
+#~ "suspend\n"
+#~ " [-]noflush após um caracter especial interrupt ou quit, não "
+#~ "fazemos\n"
+#~ " flush\n"
+#~ "* [-]prterase o mesmo que [-]echoprt\n"
+#~ "* [-]tostop impede que outros processos escrevam no terminal\n"
+#~ "* [-]xcase com icanon, os caracteres maiúsculos ficam marcados com\n"
+#~ " '\\'\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Combination settings:\n"
+#~ " * [-]LCASE same as [-]lcase\n"
+#~ " cbreak same as -icanon\n"
+#~ " -cbreak same as icanon\n"
+#~ " cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+#~ " icanon, eof and eol characters to their default values\n"
+#~ " -cooked same as raw\n"
+#~ " crt same as echoe echoctl echoke\n"
+#~ " dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+#~ " kill ^u\n"
+#~ " * [-]decctlq same as [-]ixany\n"
+#~ " ek erase and kill characters to their default values\n"
+#~ " evenp same as parenb -parodd cs7\n"
+#~ " -evenp same as -parenb cs8\n"
+#~ " * [-]lcase same as xcase iuclc olcuc\n"
+#~ " litout same as -parenb -istrip -opost cs8\n"
+#~ " -litout same as parenb istrip opost cs7\n"
+#~ " nl same as -icrnl -onlcr\n"
+#~ " -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+#~ " oddp same as parenb parodd cs7\n"
+#~ " -oddp same as -parenb cs8\n"
+#~ " [-]parity same as [-]evenp\n"
+#~ " pass8 same as -parenb -istrip cs8\n"
+#~ " -pass8 same as parenb istrip cs7\n"
+#~ " raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+#~ " -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+#~ " -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+#~ " -raw same as cooked\n"
+#~ " sane same as cread -ignbrk brkint -inlcr -igncr icrnl\n"
+#~ " -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+#~ " -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+#~ " isig icanon iexten echo echoe echok -echonl -noflsh\n"
+#~ " -xcase -tostop -echoprt echoctl echoke, all special\n"
+#~ " characters to their default values.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Combinações de estilos:\n"
+#~ "\n"
+#~ "* [-]LCASE o mesmo que [-]lcase\n"
+#~ " cbreak o mesmo que -icanon\n"
+#~ " -cbreak o mesmo que icanon\n"
+#~ " cooked o mesmo que por a valores por defeito os caracteres "
+#~ "brkint \n"
+#~ " ignpar istrip icrnl ixon opost isig icanon, eof e eol\n"
+#~ " -cooked o mesmo que raw\n"
+#~ " crt o mesmo que echoe echoctl echoke\n"
+#~ " dec o mesmo que echoe echoctl echoke -ixany intr ^c erase \n"
+#~ " 0177 kill ^u\\n\n"
+#~ "* [-]decctlq o mesmo que [-]ixany\n"
+#~ " ek apagar e matar os caracteres para os seus valores por \n"
+#~ " defeito\n"
+#~ " evenp o mesmo que parenb -parodd cs7\n"
+#~ " -evenp o mesmo que -parenb cs8\n"
+#~ "* [-]lcase o mesmo que xcase iuclc olcuc\n"
+#~ " litout o mesmo que -parenb -istrip -opost cs8\n"
+#~ " -litout o mesmo que parenb istrip opost cs7\n"
+#~ " nl o mesmo que -icrnl -onlcr\n"
+#~ " -nl o mesmo que icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+#~ " oddp o mesmo que parenb parodd cs7\n"
+#~ " -oddp o mesmo que -parenb cs8\n"
+#~ " [-]parity o mesmo que [-]evenp\n"
+#~ " pass8 o mesmo que -parenb -istrip cs8\n"
+#~ " -pass8 o mesmo que parenb istrip cs7\n"
+#~ " raw o mesmo que -ignbrk -brkint -ignpar -parmrk -inpck -"
+#~ "istrip\n"
+#~ " -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -"
+#~ "imaxbel\n"
+#~ " -opost -isig -icanon -xcase min 1 time 0\n"
+#~ " -raw o mesmo que cooked\n"
+#~ " sane o mesmo que cread -ignbrk brkint -inlcr -igncr icrnl\n"
+#~ " -ixoff -iucl -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+#~ " -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+#~ " isig icanon iexten echo echoe echok -echonl -noflsh\n"
+#~ " -xcase -tostop -echoprt echoctl echoke, todos eles \n"
+#~ " caracteres especiais postos aos seus valores por "
+#~ "defeito\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode "
+#~ "numbers\n"
+#~ " FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+#~ " FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+#~ "\n"
+#~ " -b FILE FILE exists and is block special\n"
+#~ " -c FILE FILE exists and is character special\n"
+#~ " -d FILE FILE exists and is a directory\n"
+#~ " -e FILE FILE exists\n"
+#~ " -f FILE FILE exists and is a regular file\n"
+#~ " -g FILE FILE exists and is set-group-ID\n"
+#~ " -h FILE FILE exists and is a symbolic link (same as -L)\n"
+#~ " -G FILE FILE exists and is owned by the effective group ID\n"
+#~ " -k FILE FILE exists and has its sticky bit set\n"
+#~ " -L FILE FILE exists and is a symbolic link (same as -h)\n"
+#~ " -O FILE FILE exists and is owned by the effective user ID\n"
+#~ " -p FILE FILE exists and is a named pipe\n"
+#~ " -r FILE FILE exists and is readable\n"
+#~ " -s FILE FILE exists and has a size greater than zero\n"
+#~ " -S FILE FILE exists and is a socket\n"
+#~ " -t [FD] file descriptor FD (stdout by default) is opened on a "
+#~ "terminal\n"
+#~ " -u FILE FILE exists and its set-user-ID bit is set\n"
+#~ " -w FILE FILE exists and is writable\n"
+#~ " -x FILE FILE exists and is executable\n"
+#~ msgstr ""
+#~ "\n"
+#~ " FICHEIRO1 -ef FICHEIRO2 FICHEIRO1 e FICHEIRO2 têm o mesmo número "
+#~ "de \n"
+#~ "\t\t\t dispositivo e inode\n"
+#~ " FICHEIRO1 -nt FICHEIRO2 FICHEIRO1 é mais recente (data modificação) "
+#~ "que\n"
+#~ "\t\t FICHEIRO2\n"
+#~ " FICHEIRO1 -ot FICHEIRO2 FICHEIRO1 é mais antigo que FICHEIRO2\n"
+#~ "\n"
+#~ " -G FICHEIRO FICHEIRO existe e tem como dono o grupo efectivo "
+#~ "ID\n"
+#~ " -L FICHEIRO FICHEIRO existe e é uma ligação simbólica\n"
+#~ " -O FICHEIRO FICHEIRO existe e tem como dono o utilizador \n"
+#~ "\t\t\t efectivo ID\n"
+#~ " -S FICHEIRO FICHEIRO existe e é uma socket\n"
+#~ " -b FICHEIRO FICHEIRO existe e é um ficheiro especial de "
+#~ "bloco\n"
+#~ " -c FICHEIRO FICHEIRO existe e é um ficheiro especial de "
+#~ "caracter\n"
+#~ " -d FICHEIRO FICHEIRO existe e é uma directoria\n"
+#~ " -e FICHEIRO FICHEIRO existe\n"
+#~ " -f FICHEIRO FICHEIRO existe e é um ficheiro normal\n"
+#~ " -g FICHEIRO FICHEIRO existe e tem o bit set-group-ID a 1\n"
+#~ " -k FICHEIRO FICHEIRO existe e tem o bit sticky a 1\n"
+#~ " -p FICHEIRO FICHEIRO existe e é um pipe com nome\n"
+#~ " -r FICHEIRO FICHEIRO existe e é legível\n"
+#~ " -s FICHEIRO FICHEIRO existe e tem tamanho maior que zero\n"
+#~ " -t [FD] o descritor de ficheiro FD (stdout por defeito) "
+#~ "está\n"
+#~ " aberto num terminal\n"
+#~ " -u FICHEIRO FICHEIRO existe e tem o bit set-user-ID a 1\n"
+#~ " -w FICHEIRO FICHEIRO existe e pode-se escrever nele\n"
+#~ " -x FICHEIRO FICHEIRO existe e é executável\n"
+
+#~ msgid ""
+#~ "Repeatedly output a line with all specified STRING(s), or `y'.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Retornar repetidamente uma linha com as STRING(s) especificadas, ou 'y'.\n"
+#~ "\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+
+#, fuzzy
+#~ msgid "cannot get processor type"
+#~ msgstr "não consigo obter prioridade"
+
+#~ msgid "<undef>"
+#~ msgstr "<indefinido>"
+
+#, fuzzy
+#~ msgid "Usage: %s [-v]\n"
+#~ msgstr "Utilização: %s [OPÇÃO]\n"
+
+#~ msgid "Usage: %s [OPTION]... [VARIABLE]...\n"
+#~ msgstr "Utilização: %s [OPÇÃO]... [VARIÁVEL]...\n"
+
+#~ msgid "Usage: %s [OPTION]... NUMBER[SUFFIX]\n"
+#~ msgstr "Utilização: %s [OPÇÃO]... NÚMERO[SUFIXO]\n"
+
+#~ msgid "few"
+#~ msgstr "poucos"
+
+#~ msgid "many"
+#~ msgstr "muitos"
+
+#~ msgid "Usage: %s [OPTION]... [START [INCREMENT]] LIMIT\n"
+#~ msgstr "Utilização: %s [OPÇÃO]... [COMEÇO [INCREMENTO]] LIMITE\n"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
new file mode 100644
index 0000000..9f034df
--- /dev/null
+++ b/po/pt_BR.gmo
Binary files differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644
index 0000000..22e05fb
--- /dev/null
+++ b/po/pt_BR.po
@@ -0,0 +1,9548 @@
+# Traduçoes para o português do Brasil das mensagens do "textutils"
+# Copyright (C) 1998 Free Software Foundation, Inc.
+# Cyro Mendes De Moraes Neto <neto@conectiva.com.br>, 1998.
+# Rodrigo Stulzer Lopes <rodrigo@conectiva.com.br>, 2001.
+# Juan Carlos Castro y Castro <jcastro@vialink.com.br>, 2003.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 5.0\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2003-06-27 19:20-0300\n"
+"Last-Translator: Juan Carlos Castro y Castro <jcastro@vialink.com.br>\n"
+"Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+# , c-format
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "definindo permissões para %s"
+
+# , c-format
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "definindo permissões para %s"
+
+# , c-format
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "argumento inválido %s para '%s'"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "argumento ambíguo %s para `%s'"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Os argumentos válidos são:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "erro de escrita"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Erro de sistema desconhecido"
+
+# , c-format
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "impossível fazer stat em %s"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "arquivo comum vazio"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "arquivo comum"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr ""
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "arquivo especial de bloco"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "arquivo especial caracter"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "fifo"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "link simbólico"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "socket"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "fila de mensagens"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "semáforo"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "objeto de memória compartilhada"
+
+#: lib/file-type.c:69
+#, fuzzy
+msgid "typed memory object"
+msgstr "objeto de memória compartilhada"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "arquivo estranho"
+
+#: lib/gai_strerror.c:44
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "arquivos \"fifo\" não suportados"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "arquivos \"fifo\" não suportados"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr ""
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "arquivos \"fifo\" não suportados"
+
+#: lib/gai_strerror.c:54
+#, fuzzy
+msgid "System error"
+msgstr "erro de escrita"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+#, fuzzy
+msgid "Unknown error"
+msgstr "Erro de sistema desconhecido"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: opção `%s' está ambígua\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: opção `--%s' não permite um argumento\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: opção `%c%s' não permite um argumento\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: opção `%s' requer um argumento\n"
+
+# , c-format
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: opção desconhecida `-%s'\n"
+
+# , c-format
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: opção desconhecida `%c%s'\n"
+
+# , c-format
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: opção inválida -- %c\n"
+
+# , c-format
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: opção inválida -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: opção requer um argumento --%c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: opção `-W %s' está ambígua\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: opção `-W %s' não permite um argumento\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "tamanho do bloco"
+
+# , c-format
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "não é possível mudar permissões de %s"
+
+# , c-format
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "não é possível criar o diretório %s"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "memória esgotada"
+
+# , c-format
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr "não é possível criar o diretório %s"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "'"
+
+# , c-format
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "%s: erro de leitura"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+# , c-format
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: a expressão regular não é válida: %s"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+# , c-format
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "classe de caracteres inválida `%s'"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "memória esgotada"
+
+# , c-format
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: a expressão regular não é válida: %s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "erro na busca da expressão regular"
+
+# , c-format
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "%s: a expressão regular não é válida: %s"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "erro na busca da expressão regular"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr ""
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr ""
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[yY]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "função iconv não utilizável"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "função iconv não disponível"
+
+# , c-format
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "caractere fora de faixa"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "impossível converter U+%04X para o conjunto local de caracteres"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "impossível converter U+%04X para o conjunto local de caracteres: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "usuário inválido"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "grupo inválido"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "usuário inválido"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+#, fuzzy
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"Este programa é um software livre, você pode redistribuí-lo e/ou modificá-"
+"lo\n"
+"sobre os termos da licença pública geral GNU (GPL - General Public License)\n"
+"publicada pela Free Software Foundation, versão 2 ou posteriores.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Escrito por %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Escrito por %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, fuzzy, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Escrito por %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr "Escrito por %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr "Escrito por %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+# , c-format
+#: lib/xfts.c:58
+#, fuzzy, c-format
+msgid "invalid argument: %s"
+msgstr "argumento inválido %s para '%s'"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr ""
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr ""
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr ""
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "falta arquivo destino"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+# , c-format
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "data inválida `%s'"
+
+# , c-format
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "classe de caracteres inválida `%s'"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s é muito grande"
+
+# , c-format
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Tente `%s --help' para mais informação.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+"Mostra o CRC e o número de bytes de cada ARQUIVO.\n"
+"\n"
+" --help mostra esta ajuda e finaliza\n"
+" --version informa a versão e finaliza\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Sem ARQUIVO, ou quando ARQUIVO é -, lê a entrada padrão.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Comunicar `bugs' para <%s>.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "erro de leitura"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "número inválido"
+
+# , c-format
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "tipo de cadeia inválida `%s'"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, fuzzy, c-format
+msgid "extra operand %s"
+msgstr "operando extra `%s' não é permitido com -c"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "fechando entrada padrão"
+
+# , c-format
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s NOME [SUFIXO]\n"
+" ou: %s OPÇÃO\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Mostra o NOME sem quaisquer componentes de diretório.\n"
+"Se for especificado, remove também o SUFIXO final.\n"
+"\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+# , c-format
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, fuzzy, c-format
+msgid "missing operand"
+msgstr "%s: espera-se um número inteiro depois de `%c'"
+
+# , c-format
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Uso: %s [OPÇÃO] [ARQUIVO]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"Concatena ARQUIVO(s), ou a entrada padrão, para a saída padrão.\n"
+"\n"
+" -A, --show-all o mesmo que -vET\n"
+" -b, --number-nonblank numera as linhas que não estão vazias\n"
+" -e o mesmo que -vE\n"
+" -E, --show-ends mostra '$' no final de cada linha\n"
+" -n, --number numera todas as linhas de saída\n"
+" -s, --squeeze-blank nunca mostra mais de uma linha vazia,\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+"Concatena ARQUIVO(s), ou a entrada padrão, na saída padrão.\n"
+" -t equivalente a -vT\n"
+" -T, --show-tabs mostra os caracteres de tabulação como ^I\n"
+" -u (sem efeito)\n"
+" -v, --show-nonprinting utiliza a notação ^ e M-, salvo para LFD e TAB\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+# , c-format
+#: src/cat.c:333
+#, fuzzy, c-format
+msgid "cannot do ioctl on %s"
+msgstr "não pode executar a função 'ioctl' sobre `%s'"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "saída padrão"
+
+# , c-format
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: os arquivos de entrada e saída são os mesmos"
+
+#: src/chgrp.c:95 src/install.c:611
+#, fuzzy, c-format
+msgid "invalid group %s"
+msgstr "grupo inválido"
+
+# , c-format
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Uso: %s [OPÇÃO]... GRUPO ARQUIVO...\n"
+" ou: %s [OPÇÃO]... --reference=ARQUIVOREF ARQUIVO...\n"
+
+#: src/chgrp.c:117
+#, fuzzy
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Muda o dono e/ou grupo de cada ARQUIVO para DONO e/ou GRUPO.\n"
+"\n"
+" -c, --changes como o modo \"verbose\" mas só avisa quando uma\n"
+" alteração for feita\n"
+" --dereference afeta o que for apontado por cada link simbólico,\n"
+" em vez do link simbólico em si\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chgrp.c:134
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet desligar a maior parte das mensagens de erro\n"
+" --reference=ARQR usa dono e grupo do arquivo ARQR em vez dos "
+"valores\n"
+" de DONO:GRUPO especificados\n"
+" -R, --recursive mudar arquivos e diretórios recursivamente\n"
+" -v, --verbose mostrar um diagnóstico para cada arquivo "
+"processado\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr ""
+
+# , c-format
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, fuzzy, c-format
+msgid "missing operand after %s"
+msgstr "%s: espera-se um número inteiro depois de `%c'"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "falha ao obter atributos de %s"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "obtendo novos atributos de %s"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "ligação simbólica %s e referência inalterados\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "modo de %s mudado para %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "falha na troca do modo de %s para %04lo (%s)\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "modo de %s mantido como %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "impossível acessar %s"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr ""
+
+# , c-format
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "imposível ler diretório %s"
+
+# , c-format
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "mudando permissões de %s"
+
+# , c-format
+#: src/chmod.c:286
+#, fuzzy, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "definindo permissões para %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, fuzzy, c-format
+msgid "fts_read failed"
+msgstr "falha na leitura"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Uso: %s [OPÇÃO]... MODO[,MODO]... ARQUIVO...\n"
+" ou: %s [OPÇÃO]... MODO-OCTAL ARQUIVO...\n"
+" ou: %s [OPÇÃO]... --reference=ARQUIVOREF ARQUIVO...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chmod.c:360
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+"Troca o modo de cada ARQUIVO para MODO.\n"
+"\n"
+" -c, --changes como o modo \"verbose\" mas só avisa quando uma\n"
+" alteração for feita\n"
+" -f, --silent, --quiet desligar a maior parte das mensagens de erro\n"
+" -v, --verbose mostrar um diagnóstico para cada arquivo processado\n"
+" --reference=ARQR usa modo do arquivo ARQR em vez dos valores de MODO\n"
+" -R, --recursive mudar arquivos e diretórios recursivamente\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr ""
+
+# , c-format
+#: src/chmod.c:510
+#, fuzzy, c-format
+msgid "invalid mode: %s"
+msgstr "número de campo inválido: `%s'"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "trocado dono de %s para %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "alterado o grupo de %s para %s\n"
+
+#: src/chown-core.c:149
+#, fuzzy, c-format
+msgid "no change to ownership of %s\n"
+msgstr "mudando permissões de %s"
+
+# , c-format
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "erro ao mudar proprietário de %s para %s\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "não foi possível alterar o grupo de %s para %s\n"
+
+# , c-format
+#: src/chown-core.c:154
+#, fuzzy, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "erro ao mudar proprietário de %s para %s\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "dono de %s mantido como %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "grupo de %s mantido como %s\n"
+
+#: src/chown-core.c:159
+#, fuzzy, c-format
+msgid "ownership of %s retained\n"
+msgstr "dono de %s mantido como %s\n"
+
+# , c-format
+#: src/chown-core.c:344
+#, fuzzy, c-format
+msgid "cannot dereference %s"
+msgstr "imposível remover %s"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "mudando permissões de %s"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "mudando grupo de %s"
+
+# , c-format
+#: src/chown.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Uso: %s [OPÇÃO]... GRUPO ARQUIVO...\n"
+" ou: %s [OPÇÃO]... --reference=ARQUIVOREF ARQUIVO...\n"
+
+#: src/chown.c:98
+#, fuzzy
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Muda o dono e/ou grupo de cada ARQUIVO para DONO e/ou GRUPO.\n"
+"\n"
+" -c, --changes como o modo \"verbose\" mas só avisa quando uma\n"
+" alteração for feita\n"
+" --dereference afeta o que for apontado por cada link simbólico,\n"
+" em vez do link simbólico em si\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=DONO_ATUAL:GRUPO_ATUAL\n"
+" muda dono e/ou grupo de cada arquivo apenas se seu\n"
+" dono e/ou grupo atual forem iguais aos "
+"especificados\n"
+" nesta opção. Um ou outro pode ser omitido; nesse\n"
+" caso, não será testado o atributo omitido.\n"
+
+#: src/chown.c:122
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet desligar a maior parte das mensagens de erro\n"
+" --reference=ARQR usa dono e grupo do arquivo ARQR em vez dos "
+"valores\n"
+" de DONO:GRUPO especificados\n"
+" -R, --recursive mudar arquivos e diretórios recursivamente\n"
+" -v, --verbose mostrar um diagnóstico para cada arquivo "
+"processado\n"
+
+#: src/chown.c:144
+#, fuzzy
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"Dono, caso não informado, permanece inalterado. Grupo é alterado para \n"
+"o grupo de login caso login seja seguido por `:'. DONO e GRUPO pode ser \n"
+"numérico bem como simbólico.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+# , c-format
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s NOVORAIZ [COMANDO...]\n"
+" ou: %s OPÇÃO\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"Executa COMANDO com o diretório raiz modificado para NOVORAIZ.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"Se não for dado COMANDO, roda ``${SHELL} -i'' (padrão: /bin/sh).\n"
+
+# , c-format
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "impossível mudar diretório raiz para %s"
+
+# , c-format
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "impossível mudar para o diretório raiz"
+
+# , c-format
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, fuzzy, c-format
+msgid "cannot run command %s"
+msgstr "não pode executar a função 'ioctl' sobre `%s'"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: arquivo muito grande"
+
+# , c-format
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Uso: %s [ARQUIVO]...\n"
+" ou: %s [OPÇÃO]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"Exibe checagem de CRC e contagem de bytes de cada ARQUIVO.\n"
+"\n"
+
+# , c-format
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Uso: %s [OPÇÃO]... ARQUIVO1 ARQUIVO2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr ""
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+
+#: src/comm.c:86
+#, fuzzy
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"Compara os arquivos ordenados ARQUIVO1 e ARQUIVO2, linha a linha.\n"
+"\n"
+" -1 suprime as linhas que só estão em ARQUIVO1\n"
+" -2 suprime as linhas que só estão em ARQUIVO2\n"
+" -3 suprime as linhas que estão em ambos os arquivos\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "impossível preservar proprietário para %s"
+
+#: src/copy.c:222
+#, fuzzy, c-format
+msgid "failed to lookup file %s"
+msgstr "falha ao preservar horário para %s"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "impossível preservar autoria para %s"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "não foi possível abrir %s para leitura"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "impossível fazer fstat em %s"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "pulando arquivo %s; ele foi substituído durante a cópia"
+
+# , c-format
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "imposível remover %s"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, fuzzy, c-format
+msgid "removed %s\n"
+msgstr "removendo %s\n"
+
+# , c-format
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "impossível criar arquivo comum %s"
+
+# , c-format
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "lendo %s"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "impossível fazer lseek em %s"
+
+# , c-format
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "escrevendo %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "preservando horário para %s"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "fechando %s"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: sobrescrever %s, apesar do modo %04lo? "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: sobrescrever %s? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (backup: %s)"
+
+# , c-format
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "omitindo diretório %s"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "aviso: arquivo origem %s especificado mais de uma vez"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s e %s são o mesmo arquivo"
+
+# , c-format
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "impossível sobrescrever não-diretório %s com diretório %s"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "não sobrescreverá recém-criado %s com %s"
+
+# , c-format
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "impossível sobrescrever diretório %s com não-diretório"
+
+# , c-format
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "imposível mover diretório para não-diretório: %s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "fazer cópia de %s iria destruir o original; `%s' não movido"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "fazer backup de %s iria destruir o original; %s não copiado"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "impossível fazer backup de %s"
+
+# , c-format
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "impossível copiar um diretório, %s, para si próprio, %s"
+
+# , c-format
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "não criará link físico %s para diretório %s"
+
+# , c-format
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "impossível criar link físico %s para %s"
+
+# , c-format
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "impossível mover %s para um subdiretório de si próprio, %s"
+
+# , c-format
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "impossível mover %s para %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+"falha ao mover entre dispositivos: %s para %s: impossível remover destino"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "impossível copiar link simbólico cíclico %s"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr "%s: só é possível fazer links simbólicos no diretório corrente"
+
+# , c-format
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "impossível criar link simbólico %s para %s"
+
+# , c-format
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "impossível criar link %s"
+
+# , c-format
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "impossível criar fifo %s"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "impossível criar arquivo especial %s"
+
+# , c-format
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "impossível ler link simbólico %s"
+
+# , c-format
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "impossível criar link simbólico %s"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s tem tipo de arquivo desconhecido"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "impossível desfazer backup %s"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (unbackup)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Uso: %s [OPÇÃO]... ORIGEM DESTINO\n"
+" ou: %s [OPÇÃO]... ORIGEM... DIRETÓRIO\n"
+" ou: %s [OPÇÃO]... --target-directory=DIRETÓRIO ORIGEM...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Copia ORIGEM para DESTINO, ou múltiplas ORIGENs para DIRETÓRIO.\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Argumentos obrigatórios para opções longas também o são para opções curtas\n"
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --reply={yes,no,query} determina como tratar as perguntas sobre\n"
+" arquivo destino existente\n"
+" --sparse=QUANDO controla criação de arquivos esparsos\n"
+" --strip-trailing-slashes remove barras finais de cada argumento\n"
+" ORIGEM\n"
+
+#: src/cp.c:210
+#, fuzzy
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link cria links simbólicos em vez de copiar\n"
+" -S, --suffix=SUFFIX usa este sufixo de backup em vez do padrão\n"
+" --target-directory=DIR move todos os argumentos ORIGEM para o\n"
+" diretório DIR\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update copiar apenas se o arquivo ORIGEM for\n"
+" mais recente que o arquivo destino ou se\n"
+" não existir o arquivo destino\n"
+" -v, --verbose explica o que está sendo feito\n"
+" -x, --one-file-system permanece neste sistema de arquivos\n"
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"Por padrão, arquivos esparsos da ORIGEM são detectados por uma heurística\n"
+"básica e o correspondente arquivo DESTINO é também feito um arquivo\n"
+"esparso. Este é o comportamento escolhido por --sparse=auto. Especifique\n"
+"--sparse=always para criar um arquivo esparso em DESTINO quando o arquivo\n"
+"ORIGEM tiver uma sequência de bytes zero suficientemente grande.\n"
+"Use --sparse=never para inibir a criação de arquivos esparsos.\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"O sufixo de backup é ~, a não ser que --suffix ou SIMPLE_BACKUP_SUFFIX "
+"esteja\n"
+"definido. O controle de versão pode ser selecionado com --backup ou com a\n"
+"variável de ambiente VERSION_CONTROL. Estes são os valores possíveis:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off nunca faz backups (mesmo que --backup for passado)\n"
+" numbered,t faz backups numerados\n"
+" existing,nil numerados se já existirem backups numerados, simples em\n"
+" caso contrário\n"
+" simple,never sempre fazer backups simples\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Como caso especial, cp faz um backup da ORIGEM quando as opções force e\n"
+"backup são fornecidas e ORIGEM e DESTINO são iguais ao nome de um arquivo\n"
+"regular já existente.\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "falha ao preservar horário para %s"
+
+# , c-format
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "falha ao preservar permissões para %s"
+
+# , c-format
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "impossível criar diretório %s"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s existe, mas não é um diretório"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "acessando %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, fuzzy, c-format
+msgid "missing file operand"
+msgstr "falta argumento de arquivo"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, fuzzy, c-format
+msgid "missing destination file operand after %s"
+msgstr "falta arquivo destino"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, fuzzy, c-format
+msgid "target %s is not a directory"
+msgstr "%s existe, mas não é um diretório"
+
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr ""
+"ao preservar caminhos (paths), o último argumento deve ser um diretório"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr ""
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, fuzzy, c-format
+msgid "multiple target directories specified"
+msgstr "\\%c: caractere de escape inválido"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "impossível fazer links simbólicos e físicos ao mesmo tempo"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "tipo de backup"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "a entrada deixou de existir"
+
+# , c-format
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: número de linha fora de tamanho"
+
+# , c-format
+#: src/csplit.c:709
+#, fuzzy, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: `%s': número de linha fora de tamanho"
+
+# , c-format
+#: src/csplit.c:712 src/csplit.c:761
+#, fuzzy, c-format
+msgid " on repetition %s\n"
+msgstr " na repetição %d\n"
+
+# , c-format
+#: src/csplit.c:755
+#, fuzzy, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: `%s': ocorrência não encontrada"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "erro na busca da expressão regular"
+
+# , c-format
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "erro em escrever `%s'"
+
+# , c-format
+#: src/csplit.c:1060
+#, fuzzy, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: espera-se um número inteiro depois de `%c'"
+
+# , c-format
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: requer-se um `}' depois do número de repetições"
+
+# , c-format
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: entre `{' e `}' deve se especificar um número inteiro"
+
+# , c-format
+#: src/csplit.c:1113
+#, fuzzy, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: falta o delimitador de fechar `%c'"
+
+# , c-format
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: a expressão regular não é válida: %s"
+
+# , c-format
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: padrão inválido"
+
+# , c-format
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: o número de linha deve ser maior que zero"
+
+#: src/csplit.c:1172
+#, fuzzy, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "número de linha `%s' é menor do que o número de linha precedente, %s"
+
+#: src/csplit.c:1178
+#, fuzzy, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "atenção: o número de linha `%s' é igual ao número de linha anterior"
+
+# , c-format
+#: src/csplit.c:1231
+#, fuzzy, c-format
+msgid "invalid format width"
+msgstr "formato de data inválido %s"
+
+# , c-format
+#: src/csplit.c:1252
+#, fuzzy, c-format
+msgid "invalid format precision"
+msgstr "conversão inválida: %s"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "especificador de conversão no sufixo perdido"
+
+# , c-format
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "especificador de conversão no sufixo é inválida: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "especificador de conversão no sufixo é inválida: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "muito %% especificador de conversão no sufixo"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "especificador de conversão no sufixo %% perdido"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: número inválido"
+
+# , c-format
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Uso: %s [OPÇÃO]... ARQUIVO PADRÃO...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/csplit.c:1486
+#, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+
+# , c-format
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Uso: %s [OPÇÃO]... [ARQUIVO]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/cut.c:199
+#, fuzzy
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+"Ajusta o largura das linhas em cada ARQUIVO (entrada padrão por default),\n"
+"escrevendo o resultado na saída padrão\n"
+"\n"
+" -b, --bytes conta bytes em vez de colunas\n"
+" -s, --spaces quebra nos espaços\n"
+" -w, --width=WIDTH utiliza WIDTH colunas em vez de 80\n"
+" --help mostra esta ajuda e finaliza\n"
+" --version informa a versão e finaliza\n"
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "a lista de bytes ou campos não é válida"
+
+#: src/cut.c:469
+#, fuzzy, c-format
+msgid "byte offset %s is too large"
+msgstr "%s é muito grande"
+
+# , c-format
+#: src/cut.c:472
+#, fuzzy, c-format
+msgid "field number %s is too large"
+msgstr "o número do campo é zero"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "somente um tipo de lista pode ser especificado"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "o delimitador deve ser um só caractere"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "Deve-se indicar uma lista de bytes, caracteres ou campos"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "delimitador de entrada só pode ser especificado ao operar em campos"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"suprimir as linhas não delimitadas somente tem sentido\n"
+"\tquando se processam campos"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "faltando a lista de campos"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "faltando a lista de posições"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Usage: %s [OPÇÃO]... [+FORMATO]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "entrada padrão"
+
+# , c-format
+#: src/date.c:297 src/date.c:517
+#, fuzzy, c-format
+msgid "invalid date %s"
+msgstr "data inválida `%s'"
+
+#: src/date.c:408 src/date.c:442
+#, fuzzy, c-format
+msgid "multiple output formats specified"
+msgstr "\\%c: caractere de escape inválido"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr ""
+"as opções que especificam datas para exibição são mutuamente exclusivas"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr ""
+"as opções para imprimir e alterar o horário não podem ser usadas juntas"
+
+#: src/date.c:448
+#, fuzzy, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"o argumento `%s' não tem um `+' inicial;\n"
+"Quando usado uma opção que especifique data(s), qualquer argumento sem "
+"opção\n"
+"tem que ser uma string de formatação começando com `+'."
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "impossível alterar data"
+
+# , c-format
+#: src/date.c:548 src/du.c:425
+#, fuzzy, c-format
+msgid "time %s is out of range"
+msgstr "posição no arquivo fora da faixa"
+
+# , c-format
+#: src/dd.c:404
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [ARQUIVO]...\n"
+" ou: %s [OPÇÃO]\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "%s existe, mas não é um diretório"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "registro truncado"
+msgstr[1] "registro truncado"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr ""
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ""
+
+# , c-format
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "fechando arquivo de entrada %s"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "fechando arquivo de saída %s"
+
+# , c-format
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "escrevendo em %s"
+
+# , c-format
+#: src/dd.c:886
+#, fuzzy, c-format
+msgid "unrecognized operand %s"
+msgstr "opção não reconhecida %s"
+
+# , c-format
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "conversão inválida: %s"
+
+# , c-format
+#: src/dd.c:900
+#, fuzzy, c-format
+msgid "invalid input flag: %s"
+msgstr "largura inválida: `%s'"
+
+#: src/dd.c:903
+#, fuzzy, c-format
+msgid "invalid output flag: %s"
+msgstr "nome de grupo inválido %s"
+
+# , c-format
+#: src/dd.c:906
+#, fuzzy, c-format
+msgid "invalid status flag: %s"
+msgstr "formato de data inválido %s"
+
+# , c-format
+#: src/dd.c:942
+#, fuzzy, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "opção não reconhecida %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "número inválido %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#: src/dd.c:973
+#, fuzzy, c-format
+msgid "cannot combine block and unblock"
+msgstr "não pode ignorar usuário e grupo"
+
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "não foi possível criar o link %s"
+
+# , c-format
+#: src/dd.c:977
+#, fuzzy, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "não é possível criar o diretório %s"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+
+#: src/dd.c:1180 src/dd.c:1237
+#, fuzzy, c-format
+msgid "%s: cannot seek"
+msgstr "não foi possível remover `%s'"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+# , c-format
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "atenção: largura %lu inválida; será usado %d em seu lugar"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr ""
+
+#: src/dd.c:1376
+#, fuzzy, c-format
+msgid "setting flags for %s"
+msgstr "configurando data de %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr ""
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr ""
+
+# , c-format
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "abrindo %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, fuzzy, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "avançando %s bytes no arquivo de saída %s"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "Sist. Arq. Tipo "
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "Sist. Arq. "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " Inodes IUsados ILivr IUso%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Tam Usad Disp Uso%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Tam Usado Disp Uso%%"
+
+#: src/df.c:165
+#, fuzzy, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %4s-blocos Usad Dispon. Capacidade"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " %4s-blocos Usad Dispon. Uso%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Montado em\n"
+
+# , c-format
+#: src/df.c:468
+#, fuzzy, c-format
+msgid "cannot get current directory"
+msgstr "não é possível criar o diretório %s"
+
+# , c-format
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "imposível mudar para diretório %s"
+
+# , c-format
+#: src/df.c:498
+#, fuzzy, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "não é possível criar o diretório %s"
+
+#: src/df.c:741
+#, fuzzy
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"Mostra informações sobre os sistemas de arquivos nos quais cada ARQUIVO\n"
+"reside ou, por padrão, todos os sistemas de arquivos.\n"
+
+#: src/df.c:749
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr ""
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "sistema de arquivos de tipo %s selecionado e excluído"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Aviso: "
+
+#: src/df.c:943
+#, fuzzy, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%s não foi possível ler a tabela dos sistemas de arquivos montados"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+# , c-format
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Uso: %s [OPÇÃO]... [ARQUIVO]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Emite comandos de saída para definir a variável de ambiente LS_COLORS.\n"
+"\n"
+"Para determinar o formato da saída:\n"
+" -b, --sh, --bourne-shell emitir o código para definir LS_COLORS em \n"
+" formato conhecido pelo Bourne shell\n"
+" -c, --csh, --c-shell emitir o código para definir LS_COLORS em \n"
+" formato conhecido pelo C shell\n"
+" -p, --print-data-base emitir os códigos padrão\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+
+# , c-format
+#: src/dircolors.c:291
+#, fuzzy, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s: número de segundos inválido"
+
+# , c-format
+#: src/dircolors.c:363
+#, fuzzy, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s: opção desconhecida `%c%s'\n"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<interno>"
+
+#: src/dircolors.c:445
+#, fuzzy, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"as opções para saída em modo detalhado e legível pelo stty são mutuamente\n"
+"exclusivas"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr ""
+"variável de ambiente SHELL não existente e não se especificou nenhum\n"
+"tipo de shell como argumento"
+
+# , c-format
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s NOME\n"
+" ou: %s OPÇÃO\n"
+
+#: src/dirname.c:53
+#, fuzzy
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"Mostra NOME do diretório (rota absoluta) até o diretório pai, sem o "
+"caractere /; se NOME não tiver '/' mostra `.' (o que significa o diretório "
+"corrente).\n"
+"\n"
+" --help mostra esta ajuda e sai\n"
+" --version mostra a informação de versão e sai\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+# , c-format
+#: src/du.c:279 src/wc.c:108
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Uso: %s [OPÇÃO]... GRUPO ARQUIVO...\n"
+" ou: %s [OPÇÃO]... --reference=ARQUIVOREF ARQUIVO...\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "total"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+
+# , c-format
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "profundidade máxima inválida %s"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr ""
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "não é possível resumir e mostrar todas as entradas ao mesmo tempo"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "alerta: summarizing é o mesmo que usar --max-depth=0"
+
+#: src/du.c:884
+#, fuzzy, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "alerta: summarizing conflita com --max-depth=%d"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+#: src/du.c:960 src/wc.c:662
+#, fuzzy, c-format
+msgid "cannot read file names from %s"
+msgstr "não foi possível criar o link %s"
+
+#: src/du.c:1000 src/du.c:1003
+#, fuzzy
+msgid "invalid zero-length file name"
+msgstr "nome de grupo inválido %s"
+
+# , c-format
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Uso: %s [OPÇÃO]... [STRING]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+#: src/echo.c:80
+#, fuzzy
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"Sem -E, as sequências abaixo são reconhecidas e interpretadas:\n"
+"\n"
+" \\NNN o caracter cujo código ASCII é NNN (octal)\n"
+" \\\\ contrabarra\n"
+" \\a bip de alerta (BEL)\n"
+" \\b backspace (retorno de um caracter)\n"
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c suprime fim-de-linha\n"
+" \\f form feed (nova página)\n"
+" \\n fim-de-linha\n"
+" \\r retorno-de-carro\n"
+" \\t tabulação horizontal\n"
+" \\v tabulação vertical\n"
+
+# , c-format
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Uso: %s [OPÇÃO]... [-] [NOME=VALOR]... [COMANDO [ARGUMENTO]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Alterar cada NOME para VALOR no ambiente e executar o COMANDO.\n"
+"\n"
+" -i, --ignore-environment começar com um ambiente vazio\n"
+" -u, --unset=NOME retirar variável NOME do ambiente\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"Um único - implica -i. Se não houver COMANDO, exibe o ambiente resultante.\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Converte caracteres tab em cada ARQUIVO em espaços e exibe resultado na\n"
+"saída padrão. Se ARQUIVO não for especificado ou for -, lê da entrada "
+"padrão.\n"
+"\n"
+
+#: src/expand.c:123
+#, fuzzy
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial não converte TABs após caracteres não-brancos\n"
+" -t, --tabs=NUMBER usa esta largura de TAB em vez de 8\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+" -t, --tabs=LIST usa lista explícita de posições de tab, separadas\n"
+" por vírgula\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, fuzzy, c-format
+msgid "tab stop is too large %s"
+msgstr "%s é muito grande"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, fuzzy, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "o tamanho de tabulação contém um caractere não válido"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "o tamanho de tabulação não pode ser 0"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "as posições de tabulação devem ir em ordem crescente"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, fuzzy, c-format
+msgid "input line is too long"
+msgstr "%s: arquivo muito grande"
+
+# , c-format
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s EXPRESSÃO...\n"
+" ou: %s OPÇÃO\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"NOTE que muitos operadores precisam ser \"escapados\" ou entre aspas.\n"
+"Comparações são aritméticas se ambos os ARGumentos forem números, de outra "
+"forma serão lexicográficas. O casamento de padrões retorna a string casada "
+"entre \\( e \\) ou nulo; se \\( e \\) não forem usados elas retornarão o "
+"número de caracteres casados ou 0.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+# , c-format
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "erro de sintaxe"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "erro na busca da expressão regular"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "argumento não-numérico"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "divisão por zero"
+
+# , c-format
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [NÚMERO]...\n"
+" ou: %s OPÇÃO\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"Exibe os fatores primos de cada NÚMERO.\n"
+"\n"
+
+#: src/factor.c:85
+#, fuzzy
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+" Exibe os fatores primos de cada NÚMERO especificado. Lê da entrada padrão\n"
+" se não forem especificados argumentos.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s é muito grande"
+
+#: src/factor.c:158
+#, fuzzy, c-format
+msgid "%s is not a valid positive integer"
+msgstr "`%s' não é um inteiro positivo válido"
+
+# , c-format
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Uso: %s [-DÍGITOS] [OPÇÃO]... [ARQUIVO]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/fmt.c:282
+#, fuzzy
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+"Reformata cada parágrafo do ARQUIVO(s), escrevendo na saída padrão.\n"
+"Se não se especificar um ARQUIVO ou ARQUIVO é `-', lê a entrada padrão.\n"
+"\n"
+"Os argumentos obrigatórios para as opções largas são também obrigatórios "
+"para as opções curtas.\n"
+" -c, --crown-margin mantém a indentação nas primeiras duas linhas\n"
+" -p, --prefix=CADEIA associa somente as linhas que comecem com "
+"CADEIA\n"
+" -s, --split-only divide as linhas largas, mas sem quebrá-las\n"
+" -t, --tagged-paragraph identificação da primeira linha diferente\n"
+" da segunda linha\n"
+" -u, --uniform-spacing coloca um espaço entre palavras, dois "
+"entre frases\n"
+" -w, --width=NÚMERO estabelece o largura de linha máximo "
+"(por default,\n"
+" 75 colunas)\n"
+" --help mostra esta ajuda e finaliza\n"
+" --version informa a versão e finaliza\n"
+"\n"
+"No `-wNÚMERO' pode-se omitir a letra `w'.\n"
+"\n"
+
+#: src/fmt.c:289
+#, fuzzy
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+"Reformata cada parágrafo do ARQUIVO(s), escrevendo na saída padrão.\n"
+"Se não se especificar um ARQUIVO ou ARQUIVO é `-', lê a entrada padrão.\n"
+"\n"
+"Os argumentos obrigatórios para as opções largas são também obrigatórios "
+"para as opções curtas.\n"
+" -c, --crown-margin mantém a indentação nas primeiras duas linhas\n"
+" -p, --prefix=CADEIA associa somente as linhas que comecem com "
+"CADEIA\n"
+" -s, --split-only divide as linhas largas, mas sem quebrá-las\n"
+" -t, --tagged-paragraph identificação da primeira linha diferente\n"
+" da segunda linha\n"
+" -u, --uniform-spacing coloca um espaço entre palavras, dois "
+"entre frases\n"
+" -w, --width=NÚMERO estabelece o largura de linha máximo "
+"(por default,\n"
+" 75 colunas)\n"
+" --help mostra esta ajuda e finaliza\n"
+" --version informa a versão e finaliza\n"
+"\n"
+"No `-wNÚMERO' pode-se omitir a letra `w'.\n"
+"\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+
+# , c-format
+#: src/fmt.c:400
+#, fuzzy, c-format
+msgid "invalid width: %s"
+msgstr "largura inválida: `%s'"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+
+# , c-format
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "o número de colunas não é válido: `%s'"
+
+#: src/head.c:113
+#, fuzzy
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Mostra as primeiras 10 linhas de cada ARQUIVO na saída padrão.\n"
+"Se especificados vários ARQUIVO(s), mostra o nome de cada um.\n"
+"Se ARQUIVO não for especificado ou for `-', lê da entrada padrão.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent nunca exibir cabeçalhos com nomes de arquivo\n"
+" -v, --verbose sempre exibir cabeçalhos com nomes de arquivo\n"
+
+#: src/head.c:136
+#, fuzzy
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"TAMANHO pode ter um sufixo multiplicador: b = 512, k = 1024, m = 1 mega.\n"
+
+# , c-format
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "erro lendo %s"
+
+# , c-format
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "erro escrevendo %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr ""
+
+#: src/head.c:230 src/head.c:1046
+#, fuzzy, c-format
+msgid "%s: number of bytes is too large"
+msgstr "número inválido de bytes para comparar: `%s'"
+
+# , c-format
+#: src/head.c:443
+#, fuzzy, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "não é possível criar o diretório %s"
+
+# , c-format
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, fuzzy, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "não pode executar a função 'ioctl' sobre `%s'"
+
+# , c-format
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "impossível reposicionar ponteiro de arquivo para %s"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s é tão grande que não pode ser representado"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "número de linhas"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "número de bytes"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "número de linhas inválido"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "número de bytes inválido"
+
+# , c-format
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "%s: opção inválida -- %c\n"
+
+#: src/hostid.c:48
+#, fuzzy, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Uso: %s\n"
+" ou: %s OPÇÃO\n"
+"Mostra o identificador numérico (em hexadecimal) para a máquina atual\n"
+"\n"
+" --help mostrar esta ajuda e sai\n"
+" --version mostrar a informação de versão e sai\n"
+
+#: src/hostname.c:65
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Uso: %s [NOME]\n"
+" ou: %s [OPÇÃO]\n"
+"Mostra ou configura o hostname do sistema corrente.\n"
+"\n"
+" --help mostra esta ajuda e sai\n"
+" --version mostra a informação de versão e sai\n"
+
+# , c-format
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "não pode executar a função 'ioctl' sobre `%s'"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+"não consigo alterar o hostname; este sistema não dispõe dessa funcionalidade"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "não consigo determinar o hostname"
+
+# , c-format
+#: src/id.c:78
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Uso: %s [OPÇÃO]... CONJUNTO1 [CONJUNTO2]\n"
+
+#: src/id.c:79
+#, fuzzy
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Mostrar a informação de NOMEDOUSUÁRIO, ou o usuário corrente.\n"
+"\n"
+" -g, --group mostrar só o ID do grupo\n"
+" -G, --groups mostrar só os grupos suplementares\n"
+" -n, --name mostrar o nome em vez de um número, para -ugG\n"
+" -r, --read mostrar o ID real em vez do ID efetivo, para -ugG\n"
+" -u, --user mostrar só o ID do usuário\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+"\n"
+"id sem qualquer opção, mostrara' um conjunto útil de informações de \n"
+"identidade .\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+
+#: src/id.c:152
+#, fuzzy, c-format
+msgid "cannot print only user and only group"
+msgstr "não pode ignorar usuário e grupo"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr "não consigo mostrar só nomes ou ID's reais no formato default"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Usuário inexistente"
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "não consigo encontrar o nome para o UID %u"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "não pode substituir dono e/ou grupo de %s"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "Não consigo obter lista de grupos suplementar"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " grupos="
+
+#: src/install.c:318
+#, fuzzy, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr ""
+"a string de formatação não deve ser especificada ao imprimir strings com a \n"
+"mesma largura"
+
+#: src/install.c:321
+#, fuzzy, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr ""
+"a string de formatação não deve ser especificada ao imprimir strings com a \n"
+"mesma largura"
+
+# , c-format
+#: src/install.c:369 src/mkdir.c:193
+#, fuzzy, c-format
+msgid "invalid mode %s"
+msgstr "número de campo inválido: `%s'"
+
+# , c-format
+#: src/install.c:520
+#, fuzzy, c-format
+msgid "cannot change ownership of %s"
+msgstr "não é possível mudar permissões de %s"
+
+# , c-format
+#: src/install.c:541
+#, fuzzy, c-format
+msgid "cannot set time stamps for %s"
+msgstr "não é possível criar o diretório %s"
+
+#: src/install.c:562
+#, fuzzy, c-format
+msgid "fork system call failed"
+msgstr "tamanho do bloco"
+
+#: src/install.c:566
+#, fuzzy, c-format
+msgid "cannot run strip"
+msgstr "não consigo executar %s"
+
+# , c-format
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "escrevendo em %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, fuzzy, c-format
+msgid "invalid user %s"
+msgstr "usuário inválido"
+
+# , c-format
+#: src/install.c:628
+#, fuzzy, c-format
+msgid "creating directory %s"
+msgstr "não é possível criar o diretório %s"
+
+#: src/install.c:651
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Uso: %s [OPÇÃO]... ORIGEM DESTINO\n"
+" ou: %s [OPÇÃO]... ORIGEM... DIRETÓRIO\n"
+" ou: %s [OPÇÃO]... --target-directory=DIRETÓRIO ORIGEM...\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+
+#: src/install.c:681
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+#, fuzzy
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"O sufixo de backup é ~, a não ser que --suffix ou SIMPLE_BACKUP_SUFFIX "
+"esteja\n"
+"definido. O controle de versão pode ser definido com --backup ou\n"
+"VERSION_CONTROL, valores possíveis são:\n"
+"\n"
+" none, off nunca faz backups (mesmo que --backup for passado)\n"
+" numbered,t fazer backups numerados\n"
+" existing,nil numerados se já existirem backups numerados, simples em\n"
+" caso contrário\n"
+" simple,never fazer backups simples sempre\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+
+#: src/join.c:153
+#, fuzzy
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+"Compara os arquivos ordenados ARQUIVO1 e ARQUIVO2, linha por linha.\n"
+"\n"
+" -1 suprime as linhas que só estão em ARQUIVO1\n"
+" -2 suprime as linhas que só estão em ARQUIVO2\n"
+" -3 mostra as linhas que só estão em um deles\n"
+" --help mostra esta ajuda e finaliza\n"
+" --version informa a versão e finaliza\n"
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+
+# , c-format
+#: src/join.c:617 src/join.c:812
+#, fuzzy, c-format
+msgid "invalid field number: %s"
+msgstr "número de campo inválido: `%s'"
+
+# , c-format
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "especificação do campo é inválida: `%s'"
+
+# , c-format
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "número de arquivo inválido na especificação do campo: `%s'"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr ""
+
+# , c-format
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "tabulação multicaracter `%s'"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr ""
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "ambos os arquivos não podem ser a entrada padrão"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+
+#: src/kill.c:103
+#, fuzzy
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+"Copia a entrada padrão (stdin) para um ARQUIVO, e também para a\n"
+"saída padrão (stdout).\n"
+"\n"
+" -a, --append acrescenta aos ARQUIVO(s) passados, não escreve "
+"por\n"
+" cima\n"
+" -i, --ignore-interrupts ignora os sinais de interrupção\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+
+# , c-format
+#: src/kill.c:161
+#, fuzzy, c-format
+msgid "%s: invalid signal"
+msgstr "%s: PID inválido"
+
+# , c-format
+#: src/kill.c:266
+#, fuzzy, c-format
+msgid "%s: invalid process id"
+msgstr "%s: padrão inválido"
+
+# , c-format
+#: src/kill.c:320
+#, fuzzy, c-format
+msgid "invalid option -- %c"
+msgstr "%s: opção inválida -- %c\n"
+
+#: src/kill.c:329
+#, fuzzy, c-format
+msgid "%s: multiple signals specified"
+msgstr "\\%c: caractere de escape inválido"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr ""
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr ""
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr ""
+
+# , c-format
+#: src/link.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [ARQUIVO]...\n"
+" ou: %s [OPÇÃO]\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+
+# , c-format
+#: src/link.c:95
+#, fuzzy, c-format
+msgid "cannot create link %s to %s"
+msgstr "não é possível criar o diretório %s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+"%s: aviso: fazer uma ligação (hard) para uma ligação simbólica não é portável"
+
+#: src/ln.c:165
+#, fuzzy, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "`%s' não é um diretório"
+
+# , c-format
+#: src/ln.c:218
+#, fuzzy, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "não é possível criar o diretório %s"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: substituir %s?"
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "criando link simbólico %s to %s"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "criando link simbólico %s to %s"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "criando link %s para %s"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "criando link %s para %s"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "criando link %s para %s"
+
+#: src/ln.c:324
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Uso: %s [OPÇÃO]... FONTE DESTINO (1º formato)\n"
+" ou: %s [OPÇÃO]... FONTE... DIRETÓRIO (2º formato)\n"
+" ou: %s -d [OPÇÃO]... DIRETÓRIO... (3º formato)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+
+#: src/ln.c:484
+#, fuzzy, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "%s existe, mas não é um diretório"
+
+# , c-format
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Uso: %s [OPÇÃO] [ARQUIVO]...\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+
+#: src/logname.c:89
+#, fuzzy, c-format
+msgid "no login name"
+msgstr "%s: número inválido"
+
+#: src/ls.c:684
+#, fuzzy
+msgid "%b %e %Y"
+msgstr "%b %e %H:%M %Y"
+
+#: src/ls.c:692
+#, fuzzy
+msgid "%b %e %H:%M"
+msgstr "%b %e %H:%M %Y"
+
+#: src/ls.c:1453
+#, fuzzy, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "ignorando tamanho de tab inválido na variável de ambiente TABSIZE: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "ignorando largura inválida na variável de ambiente COLUMNS: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr "ignorando tamanho de tab inválido na variável de ambiente TABSIZE: %s"
+
+# , c-format
+#: src/ls.c:1630 src/ptx.c:2043
+#, fuzzy, c-format
+msgid "invalid line width: %s"
+msgstr "número de campo inválido: `%s'"
+
+# , c-format
+#: src/ls.c:1704
+#, fuzzy, c-format
+msgid "invalid tab size: %s"
+msgstr "tipo de cadeia inválida `%s'"
+
+# , c-format
+#: src/ls.c:1885
+#, fuzzy, c-format
+msgid "invalid time style format %s"
+msgstr "argumento inválido %s para '%s'"
+
+# , c-format
+#: src/ls.c:2229
+#, fuzzy, c-format
+msgid "unrecognized prefix: %s"
+msgstr "opção não reconhecida '-%c'"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "o valor da variável de ambiente LS_COLORS não pode ser analisado"
+
+# , c-format
+#: src/ls.c:2329 src/pwd.c:155
+#, fuzzy, c-format
+msgid "cannot open directory %s"
+msgstr "não é possível criar o diretório %s"
+
+# , c-format
+#: src/ls.c:2344
+#, fuzzy, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "não é possível criar o diretório %s"
+
+# , c-format
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "não é possível criar o diretório %s"
+
+# , c-format
+#: src/ls.c:2400 src/pwd.c:223
+#, fuzzy, c-format
+msgid "reading directory %s"
+msgstr "não é possível criar o diretório %s"
+
+# , c-format
+#: src/ls.c:2410
+#, fuzzy, c-format
+msgid "closing directory %s"
+msgstr "não é possível criar o diretório %s"
+
+#: src/ls.c:2918
+#, fuzzy, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "não foi possível criar o link %s"
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+
+#: src/ls.c:4360
+#, fuzzy
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -g (ignorado)\n"
+" -G, --no-group não mostra o grupo\n"
+" -h, --human-readable mostra tamanhos em formato de leitura para \n"
+" humanos (ex: 1K 234M 2G)\n"
+" -H, --si como o anterior, mas usa o multiplicador \n"
+" 1000 em vez de 1024\n"
+" --indicator-style=PALAVRA concatena o indicador com o estilo \n"
+" PALAVRA na entrada de nomes:\n"
+" none (padrao)\n"
+" classificado (-F)\n"
+" tipo-de-arquivo (-p)\n"
+" -i, --inode mostrar o número de índice de cada arquivo\n"
+" -I, --ignore=PADRÃO não mostrar entradas que coincidam com o\n"
+" PADRÃO de shell\n"
+" -k, --kilobytes como --block-size=1024\n"
+" -l usar formato longo de listagem\n"
+" -L, --dereference mostrar entradas apontadas pelos\n"
+" links simbólicos\n"
+" -m preencher largura com as entradas separadas "
+"por\n"
+" vírgulas\n"
+" -n, --numeric-uid-gid mostrar UIDs e GIDs numéricos em vez dos nomes\n"
+" -N, --literal mostrar os nomes das entradas sem tratar\n"
+" tratar caracteres de controle\n"
+" -o usar formato de listagem longo sem informação\n"
+" de grupo\n"
+" -p, --file-type acrescentar um indicador (/=@|) nas entradas\n"
+" -q, --hide-control-chars mostrar ? em vez de caracteres não gráficos\n"
+" --show-control-chars mostra caracteres não gráficos como são "
+"(padrão\n"
+" a menos que o programa seja o `ls' e a saída\n"
+" seja um terminal)\n"
+" -Q, --quote-name colocar aspas nos nomes das entradas\n"
+" --quoting-style=PALAVRA use estilo de quote para nomes de entrada:\n"
+" literal, shell, shell-always, c, escape\n"
+" -r, --reverse inverter a ordem na ordenação\n"
+" -R, --recursive mostrar subdiretórios recursivamente\n"
+" -s, --size mostrar o tamanho de cada arquivo, em blocos\n"
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#: src/md5sum.c:150
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Uso: %s [OPÇÃO] [ARQUIVO]\n"
+"Escreve uma lista consistente totalmente ordenada com uma ordenação parcial "
+"no arquivo\n"
+"Sem informar ARQUIVO, ou se ARQUIVO é `-', lê da entrada padrão\n"
+"\n"
+" --help mostra esta ajuda e finaliza\n"
+" --version informa a versão e finaliza\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+"\n"
+" -B, --binary usa escrita binária no console.\n"
+"\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+
+# , c-format
+#: src/md5sum.c:459
+#, fuzzy, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: não foram encontradas linhas de checksum %s com formato correto"
+
+# , c-format
+#: src/md5sum.c:481
+#, fuzzy, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %lu: linha de checksum %s com formato errôneo"
+
+# , c-format
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: FALHA na abertura ou na leitura\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "A soma não coincide"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "A soma coincide"
+
+# , c-format
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: erro de leitura"
+
+# , c-format
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: não foram encontradas linhas de checksum %s com formato correto"
+
+# , c-format
+#: src/md5sum.c:562
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "ATENÇÃO: %d de %d listado %s não pode ser lido"
+msgstr[1] "ATENÇÃO: %d de %d listado %s não pode ser lido"
+
+# , c-format
+#: src/md5sum.c:574
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "ATENÇÃO: calculado %d de %d %s não confere"
+msgstr[1] "ATENÇÃO: calculado %d de %d %s não confere"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"as opções --binary e --text não tem sentido para verificar somas de "
+"comprovação"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "a opção --status só tem sentido para verificar somas de comprovação"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "a opção --warn só tem sentido para verificar somas de comprovação"
+
+# , c-format
+#: src/mkdir.c:59
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Uso: %s [OPÇÃO] [ARQUIVO]...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+"Criar o(s) DIRETÓRIO(s), se ainda não existirem.\n"
+"\n"
+" -m, --mode=MODO colocar permissões MODO (como no chmod) em vez\n"
+" de rwxrwxrwx - umask\n"
+" -p, --parents suprimir erros caso existam, criar diretórios\n"
+" pais à medida que for necessário\n"
+" -v, --verbose mostrar uma mensagem para cada diretório criado\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar informação sobre versão e sair\n"
+
+# , c-format
+#: src/mkdir.c:168
+#, fuzzy, c-format
+msgid "created directory %s"
+msgstr "não é possível criar o diretório %s"
+
+# , c-format
+#: src/mkfifo.c:54
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Uso: %s [OPÇÃO] [ARQUIVO]...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+"Criar pipes com nome (FIFOs) com o NOME dado.\n"
+"\n"
+" -m, --mode=MODO configurar permissões (como no chmod)\n"
+" --help mostrar esta ajuda e sai\n"
+" --version mostrar informação sobre versão e sai\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, fuzzy, c-format
+msgid "invalid mode"
+msgstr "número inválido"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+# , c-format
+#: src/mknod.c:55
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Uso: %s [OPÇÃO]... CONJUNTO1 [CONJUNTO2]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+
+#: src/mknod.c:76
+#, fuzzy
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"Criar o arquivo especial NOME do TIPO dado.\n"
+"\n"
+" -m, --mode=MODO colocar permissões MODO (como no chmod), em vez de \n"
+" 0666-umask\n"
+" --help mostrar esta ajuda e sai\n"
+" --version mostrar informação sobre versão e sai\n"
+"\n"
+"MAJOR e MINOR são proibidos para o TIPO p, obrigatórios nos outros casos.\n"
+"TIPO pode ser:\n"
+" b criar um arquivo especial de tipo bloco (buffered)\n"
+" c, u criar um arquivo especial de tipo caracter (não buffered)\n"
+" p criar um \"FIFO\"\n"
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"ao criar arquivos especiais de bloco, são necessários os números \n"
+"\"major\" e \"minor do dispositivo"
+
+# , c-format
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "número de começo de linha inválido: `%s'"
+
+#: src/mknod.c:167
+#, fuzzy, c-format
+msgid "block special files not supported"
+msgstr "tamanho do bloco"
+
+#: src/mknod.c:176
+#, fuzzy, c-format
+msgid "character special files not supported"
+msgstr "o offset de caracteres é zero"
+
+# , c-format
+#: src/mknod.c:192
+#, fuzzy, c-format
+msgid "invalid major device number %s"
+msgstr "número de começo de linha inválido: `%s'"
+
+# , c-format
+#: src/mknod.c:197
+#, fuzzy, c-format
+msgid "invalid minor device number %s"
+msgstr "número de começo de linha inválido: `%s'"
+
+# , c-format
+#: src/mknod.c:202
+#, fuzzy, c-format
+msgid "invalid device %s %s"
+msgstr "argumento inválido %s para '%s'"
+
+# , c-format
+#: src/mknod.c:216
+#, fuzzy, c-format
+msgid "invalid device type %s"
+msgstr "argumento inválido %s para '%s'"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+
+#: src/mv.c:308
+#, fuzzy
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+"Renomear FONTE como DESTINO ou mover FONTE(s) para DIRETÓRIO.\n"
+"\n"
+" -b, --backup[=CONTROLE] fazer \"backup\" antes da remoção\n"
+" -f, --force apagar destinos existentes, nunca perguntar\n"
+" -i, --interactive perguntar antes de sobrescrever\n"
+" --strip-trailing-slashes remove todas as barras finais de cada \n"
+" parâmetro FONTE\n"
+" -S, --suffix=SUFIXO usar SUFIXO em vez do sufixo habitual de\n"
+" \"backup\"\n"
+" --target-directory=DIR move todos os parâmetros FONTE para o\n"
+" diretório DIR\n"
+" -u, --update mover somente arquivos novos ou mais \n"
+" recentes\n"
+" -v, --verbose explicar o que está sendo feito\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar informação sobre versão e sair\n"
+
+# , c-format
+#: src/nice.c:76
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Uso: %s [OPÇÃO] [ARQUIVO]...\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+# , c-format
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "argumento inválido %s para '%s'"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "um comando deve ser dado com um ajuste"
+
+# , c-format
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "impossível obter nome do sistema"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "impossível alterar data"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:189
+#, fuzzy
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+"Escreve cada ARQUIVO na saída padrão começando pela última linha\n"
+"Sem informar ARQUIVO, ou se ARQUIVO é `-', lê da entrada padrão\n"
+"\n"
+" -b, --before colocar o separador antes de cada linha, em vez "
+"de\n"
+" colocar depois\n"
+" -r, --regex interpretar o separador como uma expressão "
+"regular\n"
+" -s, --separator=STRING usar STRING como separador, em vez de um salto de\n"
+" linha\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a versão e sair\n"
+"\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+
+#: src/nl.c:214
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+
+# , c-format
+#: src/nl.c:281
+#, fuzzy, c-format
+msgid "line number overflow"
+msgstr "o número do campo é zero"
+
+# , c-format
+#: src/nl.c:479
+#, fuzzy, c-format
+msgid "invalid header numbering style: %s"
+msgstr "número de campo inválido: `%s'"
+
+#: src/nl.c:487
+#, fuzzy, c-format
+msgid "invalid body numbering style: %s"
+msgstr "número inválido %s"
+
+# , c-format
+#: src/nl.c:495
+#, fuzzy, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "número de arquivo inválido na especificação do campo: `%s'"
+
+# , c-format
+#: src/nl.c:504
+#, fuzzy, c-format
+msgid "invalid starting line number: %s"
+msgstr "número de começo de linha inválido: `%s'"
+
+# , c-format
+#: src/nl.c:513
+#, fuzzy, c-format
+msgid "invalid line number increment: %s"
+msgstr "incremento de linha não válido: `%s'"
+
+# , c-format
+#: src/nl.c:525
+#, fuzzy, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "número de linhas vazias inválido: `%s'"
+
+# , c-format
+#: src/nl.c:539
+#, fuzzy, c-format
+msgid "invalid line number field width: %s"
+msgstr "largura para o número de linha inválido: `%s'"
+
+# , c-format
+#: src/nl.c:558
+#, fuzzy, c-format
+msgid "invalid line numbering format: %s"
+msgstr "incremento de linha não válido: `%s'"
+
+# , c-format
+#: src/nohup.c:57
+#, fuzzy, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [ARQUIVO]...\n"
+" ou: %s [OPÇÃO]\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "muitos argumentos"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, fuzzy, c-format
+msgid "failed to open %s"
+msgstr "falha ao preservar horário para %s"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr ""
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr ""
+
+# , c-format
+#: src/od.c:307
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Uso: %s [OPÇÃO]... [ARQUIVO]...\n"
+" ou: %s --traditional [ARQUIVO] [[+]OFFSET [[+]RÓTULO]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:353
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+
+# , c-format
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "tipo de cadeia inválida `%s'"
+
+# , c-format
+#: src/od.c:693
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"tipo de cadeia inválida `%s';\n"
+"este sistema não provê um tipo de %lu bytes"
+
+# , c-format
+#: src/od.c:812
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"tipo de cadeia inválida `%s';\n"
+"este sistema não dispõe de um tipo de ponto flutuante de %lu bytes"
+
+# , c-format
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "caracter inválido `%c' na cadeia `%s'"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "impossível acessar além da entrada"
+
+# , c-format
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr "endereço de saída inválido `%c'; deve ser um caracter de [doxn]"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "argumento ignorado"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "argumento limite"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "tamanho mínimo de cadeia"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "especificação de largura"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "o tipo não pode ser especificado quando se depura cadeias"
+
+#: src/od.c:1844
+#, fuzzy
+msgid "Compatibility mode supports at most one file."
+msgstr "em modo de compatibilidade não deve haver mais de três argumentos"
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr ""
+
+# , c-format
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "atenção: largura %lu inválida; será usado %d em seu lugar"
+
+# , c-format
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: fmt=\"%s\" largura=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "a entrada padrão está fechada"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+
+# , c-format
+#: src/pathchk.c:99
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Uso: %s [OPÇÃO]... [ARQUIVO]...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+# , c-format
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "caracter inválido %s na cadeia de modo %s"
+
+#: src/pathchk.c:282
+#, fuzzy, c-format
+msgid "empty file name"
+msgstr "arquivo comum vazio"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Nome de Login: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "Na vida real: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Diretório: "
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Interpretador: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Projeto: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "Planos:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Login"
+
+#: src/pinky.c:423
+#, fuzzy
+msgid "Name"
+msgstr " Nome"
+
+#: src/pinky.c:424
+#, fuzzy
+msgid " TTY"
+msgstr "TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Ocioso"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Quando"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Onde"
+
+# , c-format
+#: src/pinky.c:510
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Uso: %s [OPÇÃO]... [ARQUIVO]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+
+#: src/pinky.c:612
+#, fuzzy, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr "não é possível especificar arquivo quando se usa --string"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr ""
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "`--pages=PRIMEIRA_PÁGINA[:ÚLTIMA_PÁGINA]' está faltando argumentos"
+
+# , c-format
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "tipo de cadeia inválida `%s'"
+
+# , c-format
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "`-l TAMANHO_DE_PÁGINA' número de linhas inválido: `%s'"
+
+# , c-format
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "`-N NÚMERO' número de início de linha inválido: `%s'"
+
+# , c-format
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "`-o MARGEM' deslocamento (offset) de linha inválido: `%s'"
+
+# , c-format
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-w TAMANHO_DE_PÁGINA' número de caracteres inválido: `%s'"
+
+# , c-format
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-W TAMANHO_DE_PÁGINA' número de caracteres inválido: `%s'"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr ""
+"Não é possível especificar o número de colunas quando imprimindo em paralelo."
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr ""
+"Não é possível especificar impressão em paralelo e transversalmente ao mesmo "
+"tempo."
+
+# , c-format
+#: src/pr.c:1202
+#, fuzzy, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr ""
+"`-%c' caracteres extras, ou o argumento da opção `-s' não é válido : `%s'"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "largura de página muito estreita"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+# , c-format
+#: src/pr.c:2406
+#, fuzzy, c-format
+msgid "Page number overflow"
+msgstr "o número do campo é zero"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr ""
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+
+#: src/pr.c:2862
+#, fuzzy
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+"Compara os arquivos ordenados ARQUIVO1 e ARQUIVO2, linha por linha.\n"
+"\n"
+" -1 suprime as linhas que só estão em ARQUIVO1\n"
+" -2 suprime as linhas que só estão em ARQUIVO2\n"
+" -3 mostra as linhas que só estão em um deles\n"
+" --help mostra esta ajuda e finaliza\n"
+" --version informa a versão e finaliza\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/printenv.c:61
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Uso: %s [VARIÁVEL]...\n"
+" ou:\"%s OPÇÃO\n"
+"Se não for especificada nenhuma VARIÁVEL do ambiente, mostra todas.\n"
+"\n"
+" --help mostrar esta ajuda\n"
+" --version mostrar informação de versão e sai\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr "Atenção: %s caracter(s) seguindo constante de caractere foi ignorado"
+
+# , c-format
+#: src/printf.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [ARQUIVO]...\n"
+" ou: %s [OPÇÃO]\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: valor numérico esperado"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: valor não convertido totalmente"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "falta um número hexadecimal no caractere de escape"
+
+# , c-format
+#: src/printf.c:289
+#, fuzzy, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "classe de caracteres inválida `%s'"
+
+# , c-format
+#: src/printf.c:550
+#, fuzzy, c-format
+msgid "invalid field width: %s"
+msgstr "número de campo inválido: `%s'"
+
+# , c-format
+#: src/printf.c:585
+#, fuzzy, c-format
+msgid "invalid precision: %s"
+msgstr "conversão inválida: %s"
+
+# , c-format
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%s: especificação de campo inválida `%s'"
+
+#: src/printf.c:683
+#, fuzzy, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "Atenção: argumentos excessivos serão ignorados"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr ""
+
+#: src/ptx.c:422
+#, fuzzy, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (para expressão regular `%s')"
+
+# , c-format
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Uso: %s [OPÇÃO]... [ENTRADA]... (sem a opção -G)\n"
+" ou: %s [OPÇÃO]... [ENTRADA [SAÍDA]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+
+# , c-format
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "largura inválida: `%s'"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr ""
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+
+#: src/pwd.c:160
+#, fuzzy, c-format
+msgid "failed to chdir to %s"
+msgstr "não foi possível alterar o grupo de %s para %s\n"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "falha ao obter atributos de %s"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, fuzzy, c-format
+msgid "ignoring non-option arguments"
+msgstr "muitos argumentos"
+
+# , c-format
+#: src/readlink.c:67
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Uso: %s [OPÇÃO]... [ARQUIVO]...\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+
+# , c-format
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "não é possível criar o diretório %s"
+
+# , c-format
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "não é possível criar o diretório %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr ""
+
+# , c-format
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "não é possível criar o diretório %s"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, fuzzy, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"%s: AVISO: Estrutura de diretórios circular.\n"
+"Isto quer dizer quase com certeza que o sistema de arquivos\n"
+"está corrompido.\n"
+"NOTIFIQUE O ADMINISTRADOR DO SISTEMA.\n"
+"Os próximos dois diretórios tem o mesmo número de inode:\n"
+
+# , c-format
+#: src/remove.c:854
+#, fuzzy, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "não é possível criar o diretório %s"
+
+# , c-format
+#: src/remove.c:855
+#, fuzzy, c-format
+msgid "%s: descend into directory %s? "
+msgstr "não pode executar 'chdir' sobre `%s'"
+
+#: src/remove.c:865
+#, fuzzy, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: remover arquivo %s protegido contra escrita? "
+
+#: src/remove.c:866
+#, fuzzy, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: remover %s? "
+
+# , c-format
+#: src/remove.c:925 src/remove.c:1429
+#, fuzzy, c-format
+msgid "removed directory: %s\n"
+msgstr "não é possível criar o diretório %s"
+
+# , c-format
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "não é possível criar o diretório %s"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+# , c-format
+#: src/remove.c:1434 src/remove.c:1484
+#, fuzzy, c-format
+msgid "cannot remove directory %s"
+msgstr "não é possível criar o diretório %s"
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr ""
+
+# , c-format
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "não é possível criar o diretório %s"
+
+# , c-format
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "não é possível criar o diretório %s"
+
+# , c-format
+#: src/remove.c:1558
+#, fuzzy, c-format
+msgid "cannot restore current working directory"
+msgstr "não é possível criar o diretório %s"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+# , c-format
+#: src/rm.c:160 src/touch.c:233
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Uso: %s [OPÇÃO]... [ARQUIVO]...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: remover %s? "
+
+# , c-format
+#: src/rmdir.c:110 src/rmdir.c:208
+#, fuzzy, c-format
+msgid "removing directory, %s"
+msgstr "não é possível criar o diretório %s"
+
+# , c-format
+#: src/rmdir.c:140
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Uso: %s [OPÇÃO]... [ARQUIVO]...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+
+#: src/rmdir.c:148
+#, fuzzy
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+"Remove o(s) DIRETÓRIO(s), se eles estiverem vazios.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignora cada falha causada somente se o diretório não \n"
+" está vazio\n"
+" -p, --parents remove DIRETÓRIO, depois tenta remover cada diretório\n"
+" componente da rota. Ex. `rmdir -p a/b/c é similar\n"
+" a `rmdir a/b/c a/b a'.\n"
+" --verbose mostra um diagnóstico para cada diretório processado\n"
+" vazios\n"
+" --help mostrar esta ajuda e sai\n"
+" --version mostrar informação sobre versão e sai\n"
+
+# , c-format
+#: src/seq.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Uso: %s [OPÇÃO]... [ENTRADA]... (sem a opção -G)\n"
+" ou: %s [OPÇÃO]... [ENTRADA [SAÍDA]]\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"Mostra números de PRIMEIRO até ÚLTIMO, usando INCREMENTO.\n"
+"\n"
+" -f, --format FORMATO utilizar o estilo de FORMATO do printf(3) \n"
+" (por default: %%g)\n"
+" -s, --separator STRING usar STRING para separar números\n"
+" (por default: \\n)\n"
+" -w, --equal-width tornar a largura igual acrescentando zeros no \n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+" fim\n"
+"\n"
+"Se são omitidos COMEÇO ou INCREMENTO, o default será 1. \n"
+"COMEÇO, INCREMENTO, e ÚLTIMO são interpretados como valores em ponto "
+"flutuante.\n"
+"INCREMENTO deve ser positivo se COMEÇO for menor que ÚLTIMO, e\n"
+"negativo caso contrário. Quando indicado, o argumento FORMATO deve conter\n"
+"exatamente um de %%e, %%f ou %%g - argumentos de formatação ponto \n"
+"flutuante do printf.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+# , c-format
+#: src/seq.c:134
+#, fuzzy, c-format
+msgid "invalid floating point argument: %s"
+msgstr "número de começo de linha inválido: `%s'"
+
+# , c-format
+#: src/seq.c:342
+#, fuzzy, c-format
+msgid "invalid format string: %s"
+msgstr "tipo de cadeia inválida `%s'"
+
+#: src/seq.c:364
+#, fuzzy, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr "o tipo não pode ser especificado quando se depura cadeias"
+
+# , c-format
+#: src/setuidgid.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [ARQUIVO]...\n"
+" ou: %s [OPÇÃO]\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr ""
+
+#: src/setuidgid.c:109
+#, fuzzy, c-format
+msgid "cannot set supplemental group"
+msgstr "Não consigo obter lista de grupos suplementar"
+
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "não pode ignorar usuário e grupo"
+
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "não pode ignorar usuário e grupo"
+
+# , c-format
+#: src/shred.c:165
+#, fuzzy, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Uso: %s [OPÇÃO] [ARQUIVO]...\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+
+#: src/shred.c:303
+#, fuzzy, c-format
+msgid "%s: fdatasync failed"
+msgstr "falha no stat"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr ""
+
+#: src/shred.c:391
+#, fuzzy, c-format
+msgid "%s: cannot rewind"
+msgstr "não consigo executar %s"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: passou %lu/%lu (%s)..."
+
+# , c-format
+#: src/shred.c:460
+#, fuzzy, c-format
+msgid "%s: error writing at offset %s"
+msgstr "erro escrevendo %s"
+
+#: src/shred.c:478
+#, fuzzy, c-format
+msgid "%s: lseek failed"
+msgstr "erro fechando arquivo"
+
+#: src/shred.c:489
+#, fuzzy, c-format
+msgid "%s: file too large"
+msgstr "%s: arquivo muito grande"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: pass %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, fuzzy, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: passou %lu/%lu (%s)...%s/%s"
+
+#: src/shred.c:776
+#, fuzzy, c-format
+msgid "%s: fstat failed"
+msgstr "falha no stat"
+
+# , c-format
+#: src/shred.c:787
+#, fuzzy, c-format
+msgid "%s: invalid file type"
+msgstr "%s: número de linhas inválido"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: arquivo tem tamanho negativo"
+
+#: src/shred.c:873
+#, fuzzy, c-format
+msgid "%s: error truncating"
+msgstr "%s: arquivo truncado"
+
+#: src/shred.c:889
+#, fuzzy, c-format
+msgid "%s: fcntl failed"
+msgstr "falha no stat"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr ""
+"%s: não foi possível fragmentar (shred) descritor de arquivo (append-only)"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "removendo %s"
+
+# , c-format
+#: src/shred.c:996
+#, fuzzy, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: erro de leitura"
+
+#: src/shred.c:1018
+#, fuzzy, c-format
+msgid "%s: failed to remove"
+msgstr "%s: arquivo muito grande"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: removido"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, fuzzy, c-format
+msgid "%s: failed to close"
+msgstr "%s: arquivo muito grande"
+
+#: src/shred.c:1065
+#, fuzzy, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: arquivo muito grande"
+
+# , c-format
+#: src/shred.c:1130
+#, fuzzy, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: número de segundos inválido"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "\\%c: caractere de escape inválido"
+
+# , c-format
+#: src/shred.c:1153
+#, fuzzy, c-format
+msgid "%s: invalid file size"
+msgstr "%s: número de linhas inválido"
+
+# , c-format
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Uso: %s [OPÇÃO]... [ENTRADA]... (sem a opção -G)\n"
+" ou: %s [OPÇÃO]... [ENTRADA [SAÍDA]]\n"
+
+#: src/shuf.c:57
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "\\%c: caractere de escape inválido"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "número inválido %s"
+
+# , c-format
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "número de campo inválido: `%s'"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, fuzzy, c-format
+msgid "multiple output files specified"
+msgstr "\\%c: caractere de escape inválido"
+
+# , c-format
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "não é possível criar o diretório %s"
+
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr "operando extra `%s' não é permitido com -c"
+
+#: src/sleep.c:47
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Uso: %s NÚMERO[SUFIXO]...\n"
+" ou: %s OPÇÃO\n"
+"Parar por NÚMERO segundos.\n"
+"SUFIXO pode ser 's' para indicar segundos, 'm' para minutos, 'h' para "
+"horas \n"
+"ou 'd' para dias. Ao contrário de outras implementações que requerem que\n"
+"NÚMERO seja um inteiro, aqui NÚMERO pode ser qualquer número de ponto\n"
+"flutuante.\n"
+"\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+
+# , c-format
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "número de campo inválido: `%s'"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "impossível ler relógio de tempo real"
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+#, fuzzy
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+"Escreve uma concatenação classificada do(s) ARQUIVO(s) na saída padrão.\n"
+"\n"
+"Opções de classificação:\n"
+"\n"
+" -b, --ignore-leading-blanks ignora espaços precedentes\n"
+" -d, --dictionary-order considera apenas espaços e "
+"caracteres alfanuméricos\n"
+" -f, --ignore-case ignora caixa\n"
+" -g, --general-numeric-sort compara de acordo com um valor numérico geral\n"
+" -i, --ignore-nonprinting considera apenas caracteres imprimíveis\n"
+" -M, --month-sort compara (desconhecido) < `JAN' < ... < `DEZ'\n"
+" -n, --numeric-sort compara de acordo com o valor númerico da "
+"string\n"
+" -r, --reverse reverte o resultado das comparações\n"
+"\n"
+
+#: src/sort.c:326
+#, fuzzy
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+"Escreve uma concatenação classificada do(s) ARQUIVO(s) na saída padrão.\n"
+"\n"
+"Opções de classificação:\n"
+"\n"
+" -b, --ignore-leading-blanks ignora espaços precedentes\n"
+" -d, --dictionary-order considera apenas espaços e "
+"caracteres alfanuméricos\n"
+" -f, --ignore-case ignora caixa\n"
+" -g, --general-numeric-sort compara de acordo com um valor numérico geral\n"
+" -i, --ignore-nonprinting considera apenas caracteres imprimíveis\n"
+" -M, --month-sort compara (desconhecido) < `JAN' < ... < `DEZ'\n"
+" -n, --numeric-sort compara de acordo com o valor númerico da "
+"string\n"
+" -r, --reverse reverte o resultado das comparações\n"
+"\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/sort.c:363
+#, fuzzy
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"POS é da forma F[.C][OPÇÕES], onde F é o número do campo e C a posição do\n"
+"caractere no campo, ambos contados desde um com -k, e desde zero da forma\n"
+"obsoleta. OPÇÕES se compõem de uma ou mais opções (de uma letra) de\n"
+"ordenação, as quais substituem as opções globais de classificação para\n"
+"aquela chave. Se nenhuma chave for fornecida, usa a linha inteira como\n"
+"chave.\n"
+"\n"
+"TAMANHO pode ser seguido pelos seguintes prefixos multiplicadores:\n"
+"%% 1%% de memória, b 1, k 1024 (padrão), e assim por diante com\n"
+"M, G, T, P, E, Z e Y.\n"
+"\n"
+"Sem ARQUIVO, ou quando ARQUIVO for -, lê da entrada padrão.\n"
+"\n"
+"*** ATENÇÃO ***\n"
+"A localização especificada no ambiente afeta a ordem de classificação.\n"
+"Defina LC_ALL=C para obter a classificação tradicional que usa valores\n"
+"nativos de bytes.\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+
+# , c-format
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "escrevendo em %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+# , c-format
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "impossível criar arquivo temporário"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "erro abrindo arquivo"
+
+#: src/sort.c:758
+#, fuzzy
+msgid "fflush failed"
+msgstr "erro fechando arquivo"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "erro fechando arquivo"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "erro abrindo arquivo"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr ""
+
+# , c-format
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "impossível criar arquivo temporário"
+
+# , c-format
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "impossível criar arquivo temporário"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr ""
+
+# , c-format
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "não é possível criar o diretório %s"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "erro de escrita"
+
+# , c-format
+#: src/sort.c:975
+#, fuzzy, c-format
+msgid "warning: cannot remove: %s"
+msgstr "imposível remover %s"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "classificar tamanho"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "falha no stat"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "falha na leitura"
+
+# , c-format
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: desordenado: "
+
+# , c-format
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "erro padrão"
+
+# , c-format
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: especificação de campo inválida `%s'"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+# , c-format
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: contagem inválida no início de `%s'"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "número inválido após `-'"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "número inválido após `.'"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "caracter perdido no campo spec"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "\\%c: caractere de escape inválido"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "número inválido no início do campo"
+
+# , c-format
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "o número do campo é zero"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "o offset de caracteres é zero"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "número inválido após `.'"
+
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "operando extra `%s' não é permitido com -c"
+
+# , c-format
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Uso: %s [OPÇÃO] [ARQUIVO [PREFIXO]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/split.c:119
+#, fuzzy, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+"Divide ARQUIVO em arquivos menores de tamanho fixo e os nomeia PREFIXOaa, "
+"PREFIXOab...\n"
+". O PREFIXO default é x.Sem informar ARQUIVO, ou se ARQUIVO é `-', lê da "
+"entrada padrão\n"
+"\n"
+" -b, --bytes=BYTES escreve BYTES bytes em cada arquivo de saída\n"
+" -C, --line-bytes=BYTES escreve um máximo de BYTES bytes sem quebrar "
+"linhas\n"
+" -l, --lines=NÚMERO escreve NÚMERO linhas em cada arquivo de saída\n"
+" -NÚMERO o mesmo que -l NÚMERO\n"
+" --verbose mostra um diagnóstico na saída de erro padrão\n"
+" antes de abrir cada arquivo\n"
+" --help mostra esta ajuda e finaliza\n"
+" --version informa a versão e finaliza\n"
+"\n"
+"BYTES pode ter um fator indicado com o sufixo: b para 512, k para 1k,\n"
+"m para 1 mega.\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"TAMANHO pode ter um sufixo multiplicador: b = 512, k = 1024, m = 1 mega.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr ""
+
+# , c-format
+#: src/split.c:211
+#, fuzzy, c-format
+msgid "creating file %s\n"
+msgstr "criando arquivo `%s'\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "não é possível sub-dividir em mais de uma forma"
+
+# , c-format
+#: src/split.c:420
+#, fuzzy, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: número de linhas inválido"
+
+# , c-format
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: número de bytes inválido"
+
+# , c-format
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: número de linhas inválido"
+
+#: src/split.c:487
+#, fuzzy, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "%s: countagem `%.*s' muito grande"
+
+#: src/split.c:518
+#, fuzzy, c-format
+msgid "invalid number of lines: 0"
+msgstr "número de linhas inválido"
+
+# , c-format
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s: opção desconhecida `%c%s'\n"
+
+# , c-format
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%s: padrão inválido"
+
+#: src/stat.c:726
+#, fuzzy, c-format
+msgid "warning: backslash at end of format"
+msgstr "sequência de escape inválida no final da string"
+
+# , c-format
+#: src/stat.c:755
+#, fuzzy, c-format
+msgid "cannot read file system information for %s"
+msgstr "não é possível criar o diretório %s"
+
+# , c-format
+#: src/stat.c:831
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Uso: %s [OPÇÃO] [ARQUIVO]...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Uso : %s [-F dispositivo] [--file=dispositivo] [CONFIGURAÇÃO]...\n"
+" ou: %s [-F dispositivo] [--file=dispositivo] [-a|--all]\n"
+" ou: %s [-F dispositivo] [--file=dispositivo] [-g|--save]\n"
+
+#: src/stty.c:517
+#, fuzzy
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Mostrar ou alterar as características do terminal.\n"
+"\n"
+" -a, --all mostrar todas as características num formato legível por\n"
+" humanos\n"
+" -g, --save mostrar todas as características num formato legível \n"
+" pelo stty\n"
+" -F, --file=DISP abre e usa o dispositivo especificado ao invés da entrada "
+"padrão\n"
+" --help mostrar esta ajuda e sai\n"
+" --version mostrar a informação de versão e sai\n"
+"\n"
+"Um '-' opcional antes de PARÂMETRO indica negação. Um '*' marca parâmetros \n"
+"não-POSIX. O sistema onde o stty é executado determina quais as "
+"características \n"
+"que estão disponíveis.\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+
+#: src/stty.c:583
+#, fuzzy
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+"\n"
+"Parâmetros de controle:\n"
+" [-]clocal desativar os sinais de controle do modem\n"
+" [-]cread permitir a entrada de dados ser recebida\n"
+"* [-]crtscts permitir negociação RTS/CTS\n"
+" csN colocar em N bits o tamanho dos caracteres, N em [5..8]\n"
+" [-]cstopb usar dois stop bits por caractere (um com `-')\n"
+" [-]hup enviar um sinal de 'desligar' quando o último processo\n"
+" fechar o tty\n"
+" [-]hupcl o mesmo que [-]hup\n"
+" [-]parenb gerar um bit de paridade na saída e esperar um bit de\n"
+" paridade na entrada\n"
+" [-]parodd colocar a paridade ímpar (mesmo com `-')\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:624
+#, fuzzy
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+"\n"
+"Parâmetros de saída:\n"
+"* bsN estilo do temporizador do backspace, N em [0..1]\n"
+"* crN estilo do temporizador do carriage return, N em [0..3]\n"
+"* ffN estilo do temporizador do form feed, N em [0..1]\n"
+"* nlN estilo do temporizador do newline, N em [0..1]\n"
+"* [-]ocrnl traduzir carriage return para newline\n"
+"* [-]ofdel usar caracteres de delete para preencher em vez de null \n"
+"* [-]ofill usar caractere fill (padding) em vez de esperar por "
+"temporizador\n"
+"* [-]olcuc traduzir minúsculas para maiúsculas\n"
+"* [-]onlcr traduzir newline para carriage return-newline\n"
+"* [-]onlret newline faz um carriage return\n"
+"* [-]onocr não imprimir carriage return na primeira coluna\n"
+" [-]opost pós-processar a saída\n"
+"* tabN estilo do temporizador do tab horizontal, N em [0..3]\n"
+"* tabs o mesmo que tab0\n"
+"* -tabs o mesmo que tab3\n"
+"* vtN estilo do temporizador do tab vertical, N em [0..1]\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"Trata o tty ligado a entrada default (stdin). Sem argumentos,\n"
+"imprime o taxa em baud, a disciplina da linha e diferenças em relação a "
+"stty\n"
+"sane. Nos parâmetros, CHAR é aceito literalmente ou codificado como em ^C,\n"
+"0x37, 0177 ou 127; valores especiais ^- ou undef são utilizados para \n"
+"desabilitar caracteres especiais.\n"
+
+#: src/stty.c:789
+#, fuzzy, c-format
+msgid "only one device may be specified"
+msgstr "somente um argumento pode ser especificado"
+
+#: src/stty.c:819
+#, fuzzy, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr "as opções --string e --check são mutuamente excludentes"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "ao especificar um estilo de saída, não se pode alterar um 'modo'"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: não é possível reinicializar modo não-blocante"
+
+# , c-format
+#: src/stty.c:885 src/stty.c:995
+#, fuzzy, c-format
+msgid "invalid argument %s"
+msgstr "argumento inválido %s para '%s'"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, fuzzy, c-format
+msgid "missing argument to %s"
+msgstr "Argumentos ambíguos %s para `%s'"
+
+# , c-format
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "número de campo inválido: `%s'"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: não é possível realizar todas as opções pedidas"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "novo_modo: modo\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: Sem informação de tamanho para este dispositivo"
+
+# , c-format
+#: src/stty.c:1888
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "incremento de linha não válido: `%s'"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Password:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: não consigo abrir /dev/tty"
+
+#: src/su.c:303
+#, fuzzy, c-format
+msgid "cannot set groups"
+msgstr "não pode ignorar usuário e grupo"
+
+#: src/su.c:307
+#, fuzzy, c-format
+msgid "cannot set group id"
+msgstr "não pode ignorar usuário e grupo"
+
+#: src/su.c:309
+#, fuzzy, c-format
+msgid "cannot set user id"
+msgstr "não pode ignorar usuário e grupo"
+
+# , c-format
+#: src/su.c:385
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Uso: %s [OPÇÃO]... [ARQUIVO]...\n"
+
+#: src/su.c:386
+#, fuzzy
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Altera as identificações efetivas de usuário e de grupo daquele USUÁRIO.\n"
+"\n"
+" -, -l, --login tornar a shell numa shell de login\n"
+" -c, --command=COMANDO envia um único COMANDO à \"shell\", usando -"
+"c\n"
+" -f, --fast envia um -f à shell (para csh ou tcsh)\n"
+" -m, --preserver-environment não altera os valores das variáveis de "
+"ambiente\n"
+" -p o mesmo que -m\n"
+" -s, --shell=SHELL executar SHELL se /etc/shells o permitir\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+"\n"
+"Um único '-' implica -l. Se USUÁRIO não for especificado, assume-se root.\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "usuário %s não existe"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "senha incorreta"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "usando a shell restrita %s"
+
+# , c-format
+#: src/su.c:523
+#, fuzzy, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "não é possível criar o diretório %s"
+
+#: src/sum.c:63
+#, fuzzy
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Mostra a soma de verificação (checksum) e o número de blocos para cada "
+"ARQUIVO.\n"
+"\n"
+" -r usar o algoritmo de BSD, com blocos de 1K\n"
+" -s, --sysv usar o algoritmo de System V, com blocos de 512 bytes\n"
+" --help mostrar esta ajuda e sair\n"
+" --version informar a versão e sair\n"
+"\n"
+"Sem informar ARQUIVO, ou se ARQUIVO é `-', lê da entrada padrão\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+
+#: src/sync.c:74
+#, fuzzy, c-format
+msgid "ignoring all arguments"
+msgstr "muitos argumentos"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#: src/system.h:417
+#, fuzzy
+msgid " --help display this help and exit\n"
+msgstr ""
+"Mostra o CRC e o número de bytes de cada ARQUIVO.\n"
+"\n"
+" --help mostra esta ajuda e finaliza\n"
+" --version informa a versão e finaliza\n"
+
+#: src/system.h:419
+#, fuzzy
+msgid " --version output version information and exit\n"
+msgstr ""
+"Mostra o CRC e o número de bytes de cada ARQUIVO.\n"
+"\n"
+" --help mostra esta ajuda e finaliza\n"
+" --version informa a versão e finaliza\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tac.c:145
+#, fuzzy
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+"Escreve cada ARQUIVO na saída padrão começando pela última linha\n"
+"Sem informar ARQUIVO, ou se ARQUIVO é `-', lê da entrada padrão\n"
+"\n"
+" -b, --before colocar o separador antes de cada linha, em vez "
+"de\n"
+" colocar depois\n"
+" -r, --regex interpretar o separador como uma expressão "
+"regular\n"
+" -s, --separator=STRING usar STRING como separador, em vez de um salto de\n"
+" linha\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a versão e sair\n"
+"\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, fuzzy, c-format
+msgid "%s: seek failed"
+msgstr "erro fechando arquivo"
+
+#: src/tac.c:265
+#, fuzzy, c-format
+msgid "record too large"
+msgstr "%s: arquivo muito grande"
+
+# , c-format
+#: src/tac.c:459
+#, fuzzy, c-format
+msgid "cannot create temporary file %s"
+msgstr "impossível criar arquivo temporário"
+
+#: src/tac.c:466
+#, fuzzy, c-format
+msgid "cannot open %s for writing"
+msgstr "não foi possível abrir %s para leitura"
+
+#: src/tac.c:487 src/tac.c:494
+#, fuzzy, c-format
+msgid "%s: write error"
+msgstr "erro de escrita"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "o separador não pode ser nulo"
+
+#: src/tail.c:220
+#, fuzzy, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Mostra as últimas 10 linhas de cada ARQUIVO na saída padrão.\n"
+"Se especificados vários ARQUIVO(s), mostra o nome de cada um.\n"
+"Se ARQUIVO não for especificado ou for `-', lê da entrada padrão.\n"
+"\n"
+
+#: src/tail.c:229
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+
+#: src/tail.c:244
+#, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "fechando %s (fd=%d)"
+
+# , c-format
+#: src/tail.c:411
+#, fuzzy, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "não é possível criar o diretório %s"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr ""
+
+#: src/tail.c:867
+#, fuzzy, c-format
+msgid "%s has become inaccessible"
+msgstr "`%s' tornou-se inacessível"
+
+#: src/tail.c:884
+#, fuzzy, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+"`%s' foi substituido por um arquivo que não pode ser concatenado; desistindo "
+"desse nome."
+
+#: src/tail.c:905
+#, fuzzy, c-format
+msgid "%s has become accessible"
+msgstr "%s tornou-se acessível"
+
+# , c-format
+#: src/tail.c:913
+#, fuzzy, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "%s: apareceu; localizando o fim de um novo arquivo"
+
+#: src/tail.c:924
+#, fuzzy, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "`%s' foi substituido; localizando o fim de um arquivo"
+
+#: src/tail.c:1025
+#, fuzzy, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: não é possível reinicializar modo não-blocante"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: arquivo truncado"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "nenhum aquivo restante"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr "%s: impossivel seguir ate o final desta arquivo; desistindo deste nome"
+
+#: src/tail.c:1439
+#, fuzzy, c-format
+msgid "number in %s is too large"
+msgstr "%s é muito grande"
+
+# , c-format
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr "%s: número máximo de bytes inválido"
+
+# , c-format
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: PID inválido"
+
+# , c-format
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: número de segundos inválido"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, fuzzy, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "atenção: --retry é util somente quando for localizado pelo nome"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr "atenção: PID ignorado; --pid=PID é útil somente quando localizado"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "atenção: --pid=PID não é suportado neste sistema"
+
+# , c-format
+#: src/tail.c:1667
+#, fuzzy, c-format
+msgid "cannot follow %s by name"
+msgstr "impossível obter nome do sistema"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Copia a entrada padrão para cada ARQUIVO, e também para a saída padrão.\n"
+"\n"
+" -a, --append acrescenta ao(s) ARQUIVO(s) passado(s) em vez "
+"de\n"
+" sobrescrever\n"
+" -i, --ignore-interrupts ignora os sinais de interrupção\n"
+
+#: src/tee.c:71
+#, fuzzy
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Sem ARQUIVO, ou quando ARQUIVO é -, lê a entrada padrão.\n"
+
+#: src/test.c:125
+#, fuzzy, c-format
+msgid "missing argument after %s"
+msgstr "Argumentos ambíguos %s para `%s'"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "número inválido %s"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "')' esperado\n"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "')' esperado, encontrei %s\n"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: operador unário esperado\n"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "-nt não aceita -l\n"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "-ef não aceita -l\n"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "-ot não aceita -l\n"
+
+#: src/test.c:368
+msgid "unknown binary operator"
+msgstr "operador binário desconhecido"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: operador binário esperado\n"
+
+# , c-format
+#: src/test.c:694
+#, fuzzy
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Uso: %s [ARQUIVO]...\n"
+" ou: %s [OPÇÃO]\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+
+#: src/test.c:727
+#, fuzzy
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" ( EXPRESSÃO ) EXPRESSÃO é verdadeira\n"
+" ! EXPRESSÃO EXPRESSÃO é falsa\n"
+" EXPRESSÃO1 -a EXPRESSÃO2 Se EXPRESSÃO1 e EXPRESSÃO2 forem "
+"verdadeiras\n"
+" EXPRESSÃO1 -o EXPRESSÃO2 Se EXPRESSÃO1 ou EXPRESSÃO2 "
+"forem verdadeiras\n"
+"\n"
+" [-n] STRING o comprimento de STRING é diferente de zero\n"
+" -z STRING o comprimento de STRING é zero\n"
+" STRING1 = STRING2 as STRING's são iguais\n"
+" STRING1 != STRING2 as STRING's são diferentes\n"
+"\n"
+" INTEIRO1 -eq INTEIRO2 INTEIRO1 é igual a INTEIRO2\n"
+" INTEIRO1 -ge INTEIRO2 INTEIRO1 é maior ou igual a INTEIRO2\n"
+" INTEIRO1 -gt INTEIRO2 INTEIRO1 é maior que INTEIRO2\n"
+" INTEIRO1 -le INTEIRO2 INTEIRO1 é menor ou igual a INTEIRO2\n"
+" INTEIRO1 -lt INTEIRO2 INTEIRO1 é menor que INTEIRO2\n"
+" INTEIRO1 -ne INTEIRO2 INTEIRO1 é diferente de INTEIRO2\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+
+#: src/test.c:770
+#, fuzzy
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"Lembre-se que os parênteses têm que ser \"escapados\" (por exemplo, usando \n"
+"contra-barras) antes, para ser passado para shells.\n"
+"INTEIRO pode também ser -l STRING, que retorna o comprimento de STRING.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "falta `]'\n"
+
+#: src/test.c:846
+#, fuzzy, c-format
+msgid "extra argument %s"
+msgstr "muitos argumentos"
+
+# , c-format
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "formato de data inválido %s"
+
+# , c-format
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "criando %s"
+
+# , c-format
+#: src/touch.c:211
+#, fuzzy, c-format
+msgid "cannot touch %s"
+msgstr "não pode executar a função 'ioctl' sobre `%s'"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "configurando data de %s"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "impossível especificar horas de mais de uma fonte"
+
+# , c-format
+#: src/touch.c:389
+#, fuzzy, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr "atenção: largura %lu inválida; será usado %d em seu lugar"
+
+# , c-format
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Uso: %s [OPÇÃO]... CONJUNTO1 [CONJUNTO2]\n"
+
+#: src/tr.c:294
+#, fuzzy
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Traduz, comprime e/ou apaga caracteres da entrada padrão, escrevendo\n"
+"o resultado na saída padrão.\n"
+"\n"
+" -c, --complement operar sobre o complemento (sobre cada caractere\n"
+" que no coincida) de CONJUNTO1\n"
+" -d, --delete remover caracteres de CONJUNTO1, não traduzindo\n"
+" -s, --squeeze-repeats substituir sequências de caracteres iguais por "
+"uma só\n"
+" -t, --truncate-set1 truncar CONJUNTO1 na largura de CONJUNTO2\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a versão e sair\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+
+#: src/tr.c:342
+#, fuzzy
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"A tradução é feita se -d não é dado e ambos os CONJUNTOs são informados.\n"
+"-t somente pode ser usado quando se estiver traduzindo.\n"
+"CONJUNTO2 é estendido à largura de CONJUNTO1, repetindo seus últimos\n"
+"caracteres tantas vezes como seja necessário. Os caracteres em excesso de\n"
+"CONJUNTO2 são ignorados. Somente se garante que [:lower:] e [:upper:]\n"
+"sejam expandidos em ordem ascendente; se se usa em CONJUNTO2 ao traduzir,\n"
+"somente se podem usar em pares, para especificar conversão para maiúsculas.\n"
+"-s usa CONJUNTO1 se não se está traduzindo nem apagando; caso contrário, a\n"
+"compressão usa CONJUNTO2 depois da tradução ou remoção.\n"
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+
+#: src/tr.c:354
+#, fuzzy
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"\n"
+"A tradução é feita se -d não é dado e ambos os CONJUNTOs são informados.\n"
+"-t somente pode ser usado quando se estiver traduzindo.\n"
+"CONJUNTO2 é estendido à largura de CONJUNTO1, repetindo seus últimos\n"
+"caracteres tantas vezes como seja necessário. Os caracteres em excesso de\n"
+"CONJUNTO2 são ignorados. Somente se garante que [:lower:] e [:upper:]\n"
+"sejam expandidos em ordem ascendente; se se usa em CONJUNTO2 ao traduzir,\n"
+"somente se podem usar em pares, para especificar conversão para maiúsculas.\n"
+"-s usa CONJUNTO1 se não se está traduzindo nem apagando; caso contrário, a\n"
+"compressão usa CONJUNTO2 depois da tradução ou remoção.\n"
+
+#: src/tr.c:519
+#, fuzzy, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"atenção: a sequência de escape octal ambígua \\%c%c%c\n"
+"está sendo interpretada como a sequência de 2 bytes \\0%c%c, `%c'"
+
+# , c-format
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "os extremos do intervalo em `%s-%s' estão em ordem inversa"
+
+# , c-format
+#: src/tr.c:838
+#, fuzzy, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "número de repetições `%s' inválido na especificação [c*n]"
+
+# , c-format
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "nome de classe de caracteres faltando `[::]'"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "caracter de classe de equivalência faltando `[==]'"
+
+# , c-format
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "classe de caracteres inválida `%s'"
+
+# , c-format
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: o operador de equivalência de classe deve ser só um caractere"
+
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr "caracter perdido no campo spec"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "o operador de repetição [c*] não pode aparecer em string1"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "só um operador de repetição [c*] pode aparecer em string2"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "as expressões [=c=] não podem aparecer em string2 ao traduzir"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "se não se está truncando conjunto1, string2 deve ser não vazia"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"ao traduzir com classes de caracteres complementares (que não coincidem),\n"
+"string2 deve mapear todos os caracteres do domínio a um só"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"quando traduzindo, as únicas classes de caracteres que podem aparecer em\n"
+"string2 são 'upper' e 'lower'"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "as expressões [c*] só podem aparecer em string2 quando traduzindo"
+
+#: src/tr.c:1731
+#, fuzzy
+msgid "Two strings must be given when translating."
+msgstr "duas strings devem ser fornecidas quando traduzindo"
+
+#: src/tr.c:1741
+#, fuzzy
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"somente uma string deve ser fornecida quando removendo sem\n"
+"comprimir repetições"
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "as construções [:upper:] e/ou [:lower:] estão desalinhadas"
+
+# , c-format
+#: src/true.c:42
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s NOME\n"
+" ou: %s OPÇÃO\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Uso: %s [OPÇÃO] [ARQUIVO]\n"
+"Escreve uma lista consistente totalmente ordenada com uma ordenação parcial "
+"no arquivo\n"
+"Sem informar ARQUIVO, ou se ARQUIVO é `-', lê da entrada padrão\n"
+"\n"
+" --help mostra esta ajuda e finaliza\n"
+" --version informa a versão e finaliza\n"
+
+#: src/tsort.c:474
+#, fuzzy, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: entrada contem um loop:"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: entrada contem um loop:"
+
+# , c-format
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Uso: %s [OPÇÃO]...\n"
+
+#: src/tty.c:70
+#, fuzzy
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Mostra o nome de arquivo do terminal conectado à entrada padrão (stdin).\n"
+"\n"
+" -s, --silent, --quiet não mostra nada, só retorna um status de término\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a informação de versão e sair\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "não é um tty"
+
+#: src/uname.c:118
+#, fuzzy
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Mostra alguma informação sobre o sistema. Sem passar OPÇÃO, tem o mesmo \n"
+"significado que -s.\n"
+"\n"
+" -a, --all mostra todas as informações\n"
+" -m, --machine mostra o tipo da máquina (hardware)\n"
+" -n, --nodename mostra o nome do nó da máquina na rede\n"
+" -r, --release mostra a versão do sistema operacional\n"
+" -s, --sysname mostra o nome do sistema operacional\n"
+" -v mostra a data em que o sistema operacional foi criado\n"
+" --help mostra esta ajuda e sai\n"
+" --version mostra a informação de versão e sai\n"
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+
+# , c-format
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "impossível obter nome do sistema"
+
+#: src/unexpand.c:125
+#, fuzzy
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Converte os espaços de cada ARQUIVO em tabulações, escrevendo o\n"
+"Sem informar ARQUIVO, ou se ARQUIVO é `-', lê da entrada padrão\n"
+"\n"
+" -a, --all converter todos os espaços em branco, não só os "
+"iniciais\n"
+" -t, --tabs=NÚMERO usar N espaços em cada tabulação, em vez de 8\n"
+" -t, --tabs=LISTA usar a LISTA de posições separadas por vírgulas para\n"
+" definir as posições de tabulação\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a versão e sair\n"
+"\n"
+"Em vez de `-t NÚMERO' ou `-t LISTA' pode se usar -NÚMERO ou -LISTA.\n"
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "%s é muito grande"
+
+# , c-format
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Uso: %s [OPÇÃO]... [ENTRADA [SAÍDA]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+
+#: src/uniq.c:350
+#, fuzzy, c-format
+msgid "too many repeated lines"
+msgstr "muitos argumentos"
+
+# , c-format
+#: src/uniq.c:512
+#, fuzzy
+msgid "invalid number of fields to skip"
+msgstr "número inválido de campos para ignorar: `%s'"
+
+# , c-format
+#: src/uniq.c:521
+#, fuzzy
+msgid "invalid number of bytes to skip"
+msgstr "número inválido de caracteres para ignorar: `%s'"
+
+#: src/uniq.c:530
+#, fuzzy
+msgid "invalid number of bytes to compare"
+msgstr "número inválido de bytes para comparar: `%s'"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+"não faz sentido imprimir todas as linhas duplicadas e repetir contagens"
+
+# , c-format
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s ARQUIVO\n"
+" ou: %s OPÇÃO\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+
+# , c-format
+#: src/unlink.c:91
+#, fuzzy, c-format
+msgid "cannot unlink %s"
+msgstr "não pode executar a função 'ioctl' sobre `%s'"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "não consegui obter a data de boot"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s no ar "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "am"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "pm"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr ""
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr ""
+
+#: src/uptime.c:143
+#, fuzzy, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "dia"
+msgstr[1] "dia"
+
+#: src/uptime.c:147
+#, fuzzy, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "usuário inválido"
+msgstr[1] "usuário inválido"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", média de carga: %.2f"
+
+# , c-format
+#: src/uptime.c:197 src/users.c:108
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Uso: %s [OPÇÃO]... [ARQUIVO]...\n"
+
+#: src/uptime.c:198
+#, fuzzy, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Mostra a data corrente, o tempo que o sistema está ativo,\n"
+"o número de usuários no sistema e a média do número de processos\n"
+"na fila do sistema a 1, 5 e 15 minutos.\n"
+"Se ARQUIVO não for especificado, use %s. %s como ARQUIVO é comum.\n"
+"\n"
+" --help mostrar esta ajuda\n"
+" --version mostrar informação de versão e sai\n"
+
+#: src/users.c:109
+#, fuzzy, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Mostra quem está atualmente conectado de acordo com ARQUIVO.\n"
+"Se FILE não for especificado, usa %s. %s como ARQUIVO é comum.\n"
+"\n"
+" --help mostrar esta ajuda\n"
+" --version mostrar informação de versão e sair\n"
+
+#: src/wc.c:113
+#, fuzzy
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Mostrar o número de linhas, palavras e bytes para cada ARQUIVO, e uma linha\n"
+"com o total se se especificar mais de um ARQUIVO.\n"
+"Sem informar ARQUIVO, ou se ARQUIVO é `-', lê da entrada padrão\n"
+" -c, --bytes mostrar o número de bytes\n"
+" -m, --chars mostrar o número de caracteres\n"
+" -l, --lines mostrar o número de linhas\n"
+" -L, --max-line-length mostrar o comprimento da linha mais longa\n"
+" -w, --words mostrar o número de palavras\n"
+" --help mostrar esta ajuda e sair\n"
+" --version mostrar a versão e sair\n"
+
+#: src/wc.c:121
+#, fuzzy
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+"Mostra o CRC e o número de bytes de cada ARQUIVO.\n"
+"\n"
+" --help mostra esta ajuda e finaliza\n"
+" --version informa a versão e finaliza\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr " antigo "
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr ""
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr ""
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr ""
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "mudança de relógio"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr ""
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr ""
+
+#: src/who.c:545
+#, fuzzy, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"# usuários=%u\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "NOME"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "LINHA"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "TEMPO"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr "PARADO"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "COMENTÁRIO"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "SAIR"
+
+# , c-format
+#: src/who.c:633
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Uso: %s [OPÇÃO]... ARQUIVO1 ARQUIVO2\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+
+#: src/whoami.c:51
+#, fuzzy
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Mostra o nome do usuário associado à identificação efetiva de usuário "
+"(uid).\n"
+"O mesmo que id -un.\n"
+"\n"
+" --help mostrar esta ajuda e sair.\n"
+" --version mostrar informação de versão e sair\n"
+
+#: src/whoami.c:95
+#, fuzzy, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "não consigo encontrar o nome para o UID %u"
+
+# , c-format
+#: src/yes.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uso: %s [ARQUIVO]...\n"
+" ou: %s [OPÇÃO]\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+
+#, fuzzy
+#~ msgid "strip failed"
+#~ msgstr "falha no stat"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "não pode substituir dono e/ou grupo de %s"
+
+# , c-format
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "impossível mudar para diretório %s"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "nao foi possivel obter um grupo e login de um UID numerico "
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "este e um software livre. veja o fonte para as condicoes de copia.\n"
+#~ "NÃO ha garantia nem mesmo de COMERCIALIZAÇÃO ou de APLICABILIDADE PARA "
+#~ "UM\n"
+#~ "USO ESPACÍFICO.\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "poucos argumentos"
+
+#~ msgid "Torbjorn Granlund and Richard M. Stallman"
+#~ msgstr "Torbjorn Granlund e Richard M. Stallman"
+
+#~ msgid "closing standard output"
+#~ msgstr "fechando saída padrão"
+
+#~ msgid "cannot change to null group"
+#~ msgstr "impossível mudar para grupo nulo"
+
+#~ msgid "group number"
+#~ msgstr "número de grupo"
+
+#~ msgid "invalid group number %s"
+#~ msgstr "número de grupo inválido %s"
+
+#~ msgid ""
+#~ "\n"
+#~ "Each MODE is one or more of the letters ugoa, one of the symbols +-= and\n"
+#~ "one or more of the letters rwxXstugo.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Cada MODO é uma ou mais das letras ugoa, um dos símbolos +-= e uma ou "
+#~ "mais\n"
+#~ "das letras rwxXstugo.\n"
+
+# , c-format
+#~ msgid "invalid mode string: %s"
+#~ msgstr "cadeia de modo inválida: %s"
+
+# , c-format
+#~ msgid "unable to restore permissions of %s"
+#~ msgstr "não é possível restaurar permissões de %s"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "Uso: %s [OPÇÃO]... DONO[:[GRUPO]] ARQUIVO...\n"
+#~ " ou: %s [OPÇÃO]... :GRUPO ARQUIVO...\n"
+#~ " ou: %s [OPÇÃO]... --reference=ARQUIVOREF ARQUIVO...\n"
+
+#~ msgid "Richard Stallman and David MacKenzie"
+#~ msgstr "Richard Stallman e David MacKenzie"
+
+# , c-format
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "Uso: %s [OPÇÃO]... ARQUIVO1 ARQUIVO2\n"
+
+# , c-format
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "impossível sobrescrever diretório %s"
+
+#~ msgid "Torbjorn Granlund, David MacKenzie, and Jim Meyering"
+#~ msgstr "Torbjorn Granlund, David MacKenzie e Jim Meyering"
+
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "%s: destino especificado não é um diretório"
+
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr ""
+#~ "copiando vários arquivos, mas o último argumento %s não é um diretório"
+
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "aviso: --version-control (-V) é obsoleto; o suporte será removido\n"
+#~ "numa versão futura. Use --backup=%s."
+
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "links simbólicos não são suportados neste sistema"
+
+#~ msgid "Stuart Kemp and David MacKenzie"
+#~ msgstr "Stuart Kemp e David MacKenzie"
+
+# , c-format
+#~ msgid "%s: `+' or `-' expected after delimeter"
+#~ msgstr "%s: se esperava um `+' ou um `-' depois do delimitador"
+
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "argumentos não-opção em demasia: %s%s"
+
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-822 (-R) option"
+#~ msgstr ""
+#~ "string de formatação não pode ser especificada com a opção --rfc-822 (-R)"
+
+#~ msgid "undefined"
+#~ msgstr "indefinido"
+
+#~ msgid "cannot get time of day"
+#~ msgstr "impossível obter hora"
+
+#~ msgid "Paul Rubin, David MacKenzie, and Stuart Kemp"
+#~ msgstr "Paul Rubin, David MacKenzie e Stuart Kemp"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "%s+%s registros de entrada\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "%s+%s registros de saída\n"
+
+#~ msgid "truncated records"
+#~ msgstr "registros truncados"
+
+#~ msgid ""
+#~ "only one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, "
+#~ "{unblock,sync}"
+#~ msgstr ""
+#~ "somente uma conversão em {ascii,ebcdic,ibm}, {lcase,ucase}, {block,"
+#~ "unblock},\n"
+#~ "{unblock,sync}"
+
+#~ msgid "Torbjorn Granlund, David MacKenzie, Larry McVoy, and Paul Eggert"
+#~ msgstr "Torbjorn Granlund, David MacKenzie, Larry McVoy e Paul Eggert"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr ""
+#~ "não se podem usar argumentos de tipo ARQUIVO com a opção para mostrar a "
+#~ "base\n"
+#~ "de dados interna do \"dircolors\""
+
+#~ msgid ""
+#~ "Torbjorn Granlund, David MacKenzie, Larry McVoy, Paul Eggert, and Jim "
+#~ "Meyering"
+#~ msgstr ""
+#~ "Torbjorn Granlund, David MacKenzie, Larry McVoy, Paul Eggert e Jim "
+#~ "Meyering"
+
+# , c-format
+#~ msgid "cannot change to parent of directory %s"
+#~ msgstr "imposível mudar para pai do diretório %s"
+
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ msgstr ""
+#~ "Exibe a(s) STRING(s) na saída padrão.\n"
+#~ "\n"
+#~ " -n não termina com um fim-de-linha\n"
+#~ " -e ativa interpretação dos caracteres listados abaixo "
+#~ "quando\n"
+#~ " precedidos por contra-barra (\\)\n"
+#~ " -E desativa interpretação dessas sequências nas STRINGs\n"
+
+#~ msgid "Richard Mlynarik and David MacKenzie"
+#~ msgstr "Richard Mlynarik e David MacKenzie"
+
+# , c-format
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "opção `-LIST' é obsoleta; use `-t LIST'"
+
+#~ msgid ""
+#~ "warning: unportable BRE: `%s': using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr ""
+#~ "atenção: BRE não portável: `%s': usando `^' como primeiro caractere\n"
+#~ " da expressão regular básica (BRE) não é portável; está sendo ignorado"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Uso: %s [ignora parâmetros da linha de comando]\n"
+#~ " ou: %s OPÇÃO\n"
+#~ "Sai com um código de estado indicando falha\n"
+#~ "\n"
+#~ "As opções a seguir não podem ser abreviadas.\n"
+#~ "\n"
+#~ " --help mostra esta ajuda e sai\n"
+#~ " --version mostra a informação de versão e sai\n"
+
+# , c-format
+#~ msgid "invalid width option: `%s'"
+#~ msgstr "opção de largura inválida: `%s'"
+
+# , c-format
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "opção `%s' é obsoleta; use `%s'"
+
+#~ msgid ""
+#~ " -c, --bytes=SIZE print first SIZE bytes\n"
+#~ " -n, --lines=NUMBER print first NUMBER lines instead of first 10\n"
+#~ msgstr ""
+#~ " -c, --bytes=TAMANHO exibe os primeiros TAMANHO bytes\n"
+#~ " -n, --lines=NÚMERO exibe este número de linhas em vez de 10\n"
+
+# , c-format
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "opção não reconhecida `-%c'"
+
+# , c-format
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "opção `-%s' é obsoleta; use `-%c %.*s%.*s%s'"
+
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr ""
+#~ "instalando vários arquivos, mas o último parâmetro, %s não é um diretório"
+
+#, fuzzy
+#~ msgid "%s is a directory"
+#~ msgstr "%s existe, mas não é um diretório"
+
+# , c-format
+#, fuzzy
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "não é possível criar o diretório %s"
+
+# , c-format
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "número de campo inválido para o arquivo 1: `%s'"
+
+# , c-format
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "número de campo inválido para o arquivo 2: `%s'"
+
+#~ msgid "too many non-option arguments"
+#~ msgstr "muitos argumentos"
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "número de argumentos insuficiente"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: Arquivo já existente"
+
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "criar link simbólico %s to %s"
+
+#~ msgid "create hard link %s to %s"
+#~ msgstr "criar link %s para %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "Uso: %s [OPÇÃO]... ÚLTIMO\n"
+#~ " ou: %s [OPÇÃO]... PRIMEIRO ÚLTIMO\n"
+#~ " ou: %s [OPÇÃO]... PRIMEIRO INCREMENTO ÚLTIMO\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr ""
+#~ "quando há vários links a serem feitos, o último argumento deve ser um "
+#~ "diretório"
+
+#~ msgid "file"
+#~ msgstr "arquivo"
+
+#~ msgid "files"
+#~ msgstr "arquivos"
+
+#~ msgid "checksum"
+#~ msgstr "soma de comprovação (checksum)"
+
+#~ msgid "checksums"
+#~ msgstr "somas de comprovação (checksum)"
+
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "as opções --string e --check são mutuamente excludentes"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "não é possível especificar arquivo quando se usa --string"
+
+#~ msgid "only one argument may be specified when using --check"
+#~ msgstr "quando se utiliza --check só se pode especificar um argumento"
+
+# , c-format
+#, fuzzy
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "não é possível mudar permissões de %s"
+
+# , c-format
+#, fuzzy
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "não é possível mudar permissões de %s"
+
+#, fuzzy
+#~ msgid "wrong number of arguments"
+#~ msgstr "poucos argumentos"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr ""
+#~ "arquivos especiais de tipo \"fifo\" não podem ter os números \"major\" e "
+#~ "\"minor\"\n"
+#~ "do dispositivo"
+
+# , c-format
+#, fuzzy
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "não é possível mudar permissões de %s"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr ""
+#~ "ao mover múltiplos arquivos o último argumento deve ser um diretório"
+
+#, fuzzy
+#~ msgid ""
+#~ "Run COMMAND with an adjusted scheduling priority.\n"
+#~ "With no COMMAND, print the current scheduling priority. ADJUST is 10\n"
+#~ "by default. Range goes from -20 (highest priority) to 19 (lowest).\n"
+#~ "\n"
+#~ " -n, --adjustment=ADJUST increment priority by ADJUST first\n"
+#~ msgstr ""
+#~ "Execute o COMANDO com uma prioridade de despacho ajustada.\n"
+#~ "Sem qualquer COMANDO, mostra a prioridade de despacho corrente. AJUSTE é "
+#~ "10\n"
+#~ "por default. Valores vão desde -20 (prioridade mais alta) a 19 (mais "
+#~ "baixa).\n"
+#~ "\n"
+#~ " -AJUSTE incrementa prioridade AJUSTE primeiro\n"
+#~ " -n, --adjustment=AJUSTE igual a -AJUSTE\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar a informação de versão e sair\n"
+
+# , c-format
+#, fuzzy
+#~ msgid "invalid option `%s'"
+#~ msgstr "tipo de cadeia inválida `%s'"
+
+# , c-format
+#, fuzzy
+#~ msgid "invalid priority `%s'"
+#~ msgstr "número de campo inválido: `%s'"
+
+# , c-format
+#, fuzzy
+#~ msgid "cannot get priority"
+#~ msgstr "não é possível criar o diretório %s"
+
+# , c-format
+#, fuzzy
+#~ msgid "cannot set priority"
+#~ msgstr "não é possível criar o diretório %s"
+
+# msgstr ""
+#~ msgid "old-style offset"
+#~ msgstr "estilo antigo de deslocamento"
+
+# , c-format
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "segundo operando inválido em modo de compatibilidade `%s'"
+
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr ""
+#~ "em modo de compatibilidade os dois últimos argumentos devem ser "
+#~ "deslocamentos (offsets)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr ""
+#~ "Diagnostica construções não portáveis em NOME.\n"
+#~ "\n"
+#~ " -p, --portability verifica todos os sistemas POSIX, não só este\n"
+#~ " --help mostra esta ajuda e sai\n"
+#~ " --version mostra a informação de versão e sai\n"
+
+#, fuzzy
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "o tamanho de tabulação contém um caractere não válido"
+
+#, fuzzy
+#~ msgid "`%s' is not a directory"
+#~ msgstr "%s existe, mas não é um diretório"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "não é possível procurar no diretório `%s'"
+
+#, fuzzy
+#~ msgid "name `%s' has length %ld; exceeds limit of %ld"
+#~ msgstr "nome `%s' tem comprimento %d; excede limite de %d"
+
+#, fuzzy
+#~ msgid "path `%s' has length %d; exceeds limit of %ld"
+#~ msgstr "rota `%s' tem comprimento %d; excede limite de %d"
+
+# , c-format
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "`--pages' intervalo de número de páginas inválido: `%s'"
+
+# , c-format
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "`--pages' número de página inicial inválido: `%s'"
+
+# , c-format
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "`--pages' número de página final inválido: `%s'"
+
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr ""
+#~ "`--pages' número de página inicial é maior que o número de página final"
+
+# , c-format
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "`--columns=COLUNAS' o número de colunas não é válido: `%s'"
+
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%b %e %H:%M %Y"
+
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr "número de página inicial é maior que o número de páginas: `%d'"
+
+#~ msgid "Page %d"
+#~ msgstr "Página %d"
+
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "Uso: %s formato [argumento...]\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+#~ msgstr ""
+#~ "Este programa é um software livre, você pode redistribuí-lo e/ou modificá-"
+#~ "lo\n"
+#~ "sobre os termos da licença pública geral GNU (GPL - General Public "
+#~ "License)\n"
+#~ "publicada pela Free Software Foundation, versão 2 ou posteriores.\n"
+#~ "\n"
+
+# , c-format
+#, fuzzy
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "não pode executar 'chdir' sobre `%s'"
+
+#, fuzzy
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "não consigo executar %s"
+
+#, fuzzy
+#~ msgid "cannot lstat %s"
+#~ msgstr "não consigo alterar data"
+
+# , c-format
+#, fuzzy
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "não pode executar 'chdir' sobre `%s'"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "não é possível remover `.' ou `..'"
+
+#, fuzzy
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ " -r, -R, --recursive remove the contents of directories recursively\n"
+#~ " -v, --verbose explain what is being done\n"
+#~ msgstr ""
+#~ "Remover (link) do(s) ARQUIVO(s).\n"
+#~ "\n"
+#~ " -d, --directory remover diretório, mesmo que\n"
+#~ " não vazio (só superusuário)\n"
+#~ " -f, --force ignorar arquivos não existentes, nunca "
+#~ "perguntar\n"
+#~ " -i, --interactive perguntar antes de qualquer remoção\n"
+#~ " -r, -R, --recursive apagar o conteúdos dos diretórios "
+#~ "recursivamente\n"
+#~ " -v, --verbose explicar o que se está sendo feito\n"
+#~ " --help mostrar esta ajuda e sair\n"
+#~ " --version mostrar informação sobre versão e sair\n"
+#~ "\n"
+#~ "Para remover um arquivo que o nome inicia-se com um `-', por exemplo `-"
+#~ "foo',\n"
+#~ "use um destes comandos:\n"
+#~ " %s -- -foo\n"
+#~ " %s ./-foo\n"
+
+#~ msgid ""
+#~ "when the starting value is larger than the limit,\n"
+#~ "the increment must be negative"
+#~ msgstr ""
+#~ "quando o valor inicial é maior que o limite,\n"
+#~ "o incremento deve ser positivo"
+
+#~ msgid ""
+#~ "when the starting value is smaller than the limit,\n"
+#~ "the increment must be positive"
+#~ msgstr ""
+#~ "quando o valor inicial é menor que o limite,\n"
+#~ "o argumento deve ser positivo"
+
+#~ msgid "Mike Haertel and Paul Eggert"
+#~ msgstr "Mike Haertel e Paul Eggert"
+
+# , c-format
+#, fuzzy
+#~ msgid "`-%d' option is obsolete; use `-l %d'"
+#~ msgstr "atenção: largura %lu inválida; será usado %d em seu lugar"
+
+# , c-format
+#, fuzzy
+#~ msgid "*** invalid date/time ***"
+#~ msgstr "número de campo inválido: `%s'"
+
+# , c-format
+#~ msgid "stdin: read error"
+#~ msgstr "stdin: erro de leitura"
+
+#~ msgid "Paul Rubin, David MacKenzie, Ian Lance Taylor, and Jim Meyering"
+#~ msgstr "Paul Rubin, David MacKenzie, Ian Lance Taylor e Jim Meyering"
+
+# , c-format
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "%c: sufixo inválido em uma opção obsoleta"
+
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "argumentos em excesso; ao usar a sintaxe de opção obsoleta (%s) do tail\n"
+#~ "não pode haver mais de um argumento de arquivo. Use a opção equivalente -"
+#~ "n ou -c"
+
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "atenção: Não é portável usar dois ou mais argumentos de arquivos com "
+#~ "sintaxe\n"
+#~ "obsoleta (%s). Use as equivalentes -n ou -c"
+
+# , c-format
+#~ msgid "`%s' option is obsolete; use `%s-%c %.*s'"
+#~ msgstr "opção `%s' é obsoleta; use `%s-%c %.*s'"
+
+#~ msgid "%s is larger than the maximum file size on this system"
+#~ msgstr "%s é maior que o tamanho máximo de arquivo neste sistema"
+
+# , c-format
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr ""
+#~ "%s: número máximo de linhas inválido para mudanças consecutivas no tamanho"
+
+#~ msgid "Mike Parker, Richard M. Stallman, and David MacKenzie"
+#~ msgstr "Mike Parker, Richard M. Stallman e David MacKenzie"
+
+#~ msgid "argument expected\n"
+#~ msgstr "argumento esperado\n"
+
+#~ msgid "integer expression expected %s\n"
+#~ msgstr "esperado uma expressão inteira %s\n"
+
+#~ msgid "before -lt"
+#~ msgstr "antes de -lt"
+
+#~ msgid "after -lt"
+#~ msgstr "depois de -lt"
+
+#~ msgid "before -le"
+#~ msgstr "antes de -le"
+
+#~ msgid "after -le"
+#~ msgstr "depois de -le"
+
+#~ msgid "before -gt"
+#~ msgstr "antes de -gt"
+
+#~ msgid "after -gt"
+#~ msgstr "depois de -gt"
+
+#~ msgid "before -ge"
+#~ msgstr "antes de -ge"
+
+#~ msgid "after -ge"
+#~ msgstr "depois de -ge"
+
+#~ msgid "before -ne"
+#~ msgstr "antes de -ne"
+
+#~ msgid "after -ne"
+#~ msgstr "depois de -ne"
+
+#~ msgid "before -eq"
+#~ msgstr "antes de -eq"
+
+#~ msgid "after -eq"
+#~ msgstr "depois de -eq"
+
+#~ msgid "after -t"
+#~ msgstr "depois de -t"
+
+#~ msgid "FIXME: ksb and mjb"
+#~ msgstr "CORRIJA-ME: ksb e mjb"
+
+#~ msgid "too many arguments\n"
+#~ msgstr "muitos argumentos\n"
+
+#~ msgid ""
+#~ "Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie, and Randy Smith"
+#~ msgstr ""
+#~ "Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie e Randy Smith"
+
+#~ msgid "file arguments missing"
+#~ msgstr "argumentos de arquivo faltando"
+
+# , c-format
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "sequência de escape inválida `\\%c'"
+
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr ""
+#~ "duas strings devem ser fornecidas quando removendo/deletando repetições"
+
+#~ msgid "at least one string must be given when squeezing repeats"
+#~ msgstr ""
+#~ "pelo menos uma string deve ser fornecida quando se comprime repetições"
+
+#~ msgid ""
+#~ "invalid identity mapping; when translating, any [:lower:] or [:upper:]\n"
+#~ "construct in string1 must be aligned with a corresponding construct\n"
+#~ "([:upper:] or [:lower:], respectively) in string2"
+#~ msgstr ""
+#~ "correspondência inválida; quando se traduz, qualquer construção [:lower] "
+#~ "ou\n"
+#~ "[:upper:] na string1 deve estar alinhada com a correspondente\n"
+#~ "construção ([:upper:] ou [:lower:], respectivamente) em string2"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Uso: %s [ignora parâmetros da linha de comando}\n"
+#~ " ou: %s OPÇÃO\n"
+#~ "Sai com um estado indicando sucesso.\n"
+#~ "\n"
+#~ "As opções abaixo não podem ser abreviadas.\n"
+#~ "\n"
+#~ " --help mostra esta ajuda e sai\n"
+#~ " --version mostra a informação de versão e sai\n"
+
+#~ msgid "only one argument may be specified"
+#~ msgstr "somente um argumento pode ser especificado"
+
+# , c-format
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr "opção `-LIST' é obsoleta; use `--first-only -t LIST'"
+
+# , c-format
+#, fuzzy
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "atenção: largura %lu inválida; será usado %d em seu lugar"
+
+#~ msgid "%s: cannot find username for UID %u\n"
+#~ msgstr "%s: não consigo encontrar o nome do usuário para o UID %u\n"
diff --git a/po/quot.sed b/po/quot.sed
new file mode 100644
index 0000000..0122c46
--- /dev/null
+++ b/po/quot.sed
@@ -0,0 +1,6 @@
+s/"\([^"]*\)"/“\1â€/g
+s/`\([^`']*\)'/‘\1’/g
+s/ '\([^`']*\)' / ‘\1’ /g
+s/ '\([^`']*\)'$/ ‘\1’/g
+s/^'\([^`']*\)' /‘\1’ /g
+s/“â€/""/g
diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin
new file mode 100644
index 0000000..2436c49
--- /dev/null
+++ b/po/remove-potcdate.sin
@@ -0,0 +1,19 @@
+# Sed script that remove the POT-Creation-Date line in the header entry
+# from a POT file.
+#
+# The distinction between the first and the following occurrences of the
+# pattern is achieved by looking at the hold space.
+/^"POT-Creation-Date: .*"$/{
+x
+# Test if the hold space is empty.
+s/P/P/
+ta
+# Yes it was empty. First occurrence. Remove the line.
+g
+d
+bb
+:a
+# The hold space was nonempty. Following occurrences. Do nothing.
+x
+:b
+}
diff --git a/po/ru.gmo b/po/ru.gmo
new file mode 100644
index 0000000..f32fa83
--- /dev/null
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
new file mode 100644
index 0000000..c766f7d
--- /dev/null
+++ b/po/ru.po
@@ -0,0 +1,9913 @@
+# ìÏËÁÌÉÚÁÃÉÑ GNU coreutils
+# Copyright (C) 1999, 2000, 2005, 2006 Free Software Foundation, Inc.
+# Denis Perchine <dyp@perchine.com>, 1997-2002.
+# Oleg Tihonov <ost@tatnipi.ru>, 1999-2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 6.8\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2007-02-27 13:48+0300\n"
+"Last-Translator: Oleg S. Tihonov <ost@tatnipi.ru>\n"
+"Language-Team: Russian <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=koi8-r\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, c-format
+msgid "preserving permissions for %s"
+msgstr "ÓÏÈÒÁÎÅÎÉÅ ÐÒÁ× ÄÏÓÔÕÐÁ ÄÌÑ %s"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "ÕÓÔÁÎÏ×ËÁ ÐÒÁ× ÄÏÓÔÕÐÁ ÄÌÑ %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÁÒÇÕÍÅÎÔ %s ÄÌÑ %s"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "ÎÅÏÄÎÏÚÎÁÞÎÙÊ ÁÒÇÕÍÅÎÔ %s ÄÌÑ %s"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "÷ÅÒÎÙÅ ÁÒÇÕÍÅÎÔÙ:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "ÏÛÉÂËÁ ÚÁÐÉÓÉ"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÓÉÓÔÅÍÎÁÑ ÏÛÉÂËÁ"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ stat ÄÌÑ %s"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "ÐÕÓÔÏÊ ÏÂÙÞÎÙÊ ÆÁÊÌ"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "ÏÂÙÞÎÙÊ ÆÁÊÌ"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "ëÁÔÁÌÏÇ"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "ÂÌÏÞÎÙÊ ÓÐÅÃÉÁÌØÎÙÊ ÆÁÊÌ"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "ÚÎÁËÏ×ÙÊ ÓÐÅÃÉÁÌØÎÙÊ ÆÁÊÌ"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "ÆÁÊÌ-ÏÞÅÒÅÄØ"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "ÓÉÍ×ÏÌØÎÁÑ ÓÓÙÌËÁ"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "ÓÏËÅÔ"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "ÏÞÅÒÅÄØ ÓÏÏÂÝÅÎÉÊ"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "ÓÅÍÁÆÏÒ"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "ÏÂßÅËÔ ÒÁÚÄÅÌÑÅÍÏÊ ÐÁÍÑÔÉ"
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr "ÏÂßÅËÔ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÊ ÐÁÍÑÔÉ"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "ÓÔÒÁÎÎÙÊ ÆÁÊÌ"
+
+#: lib/gai_strerror.c:44
+msgid "Address family for hostname not supported"
+msgstr "óÅÍÅÊÓÔ×Ï ÁÄÒÅÓÏ× ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÄÌÑ ÜÔÏÇÏ ÈÏÓÔÁ"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr "÷ÒÅÍÅÎÎÙÊ ÓÂÏÊ ÒÁÚÒÅÛÅÎÉÑ ÉÍÅÎ"
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr "îÅ×ÅÒÎÏÅ ÚÎÁÞÅÎÉÅ ÄÌÑ ai_flags"
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr "îÅ×ÏÓÓÔÁÎÏ×ÉÍÙÊ ÓÂÏÊ ÒÁÚÒÅÛÅÎÉÑ ÉÍÅÎ"
+
+#: lib/gai_strerror.c:48
+msgid "ai_family not supported"
+msgstr "ai_family ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr "ïÛÉÂËÁ ×ÙÄÅÌÅÎÉÑ ÐÁÍÑÔÉ"
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr "ó ÄÁÎÎÙÍ ÉÍÅÎÅÍ ÈÏÓÔÁ ÎÅ ÁÓÓÏÃÉÉÒÏ×ÁÎ ÁÄÒÅÓ"
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr "îÅÉÚ×ÅÓÔÎÏÅ ÉÍÑ ÉÌÉ ÓÅÒ×ÉÓ"
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr "Servname ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÄÌÑ ai_socktype"
+
+#: lib/gai_strerror.c:53
+msgid "ai_socktype not supported"
+msgstr "ai_socktype ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
+
+#: lib/gai_strerror.c:54
+msgid "System error"
+msgstr "óÉÓÔÅÍÎÁÑ ÏÛÉÂËÁ"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr "âÕÆÅÒ ÁÒÇÕÍÅÎÔÏ× ÓÌÉÛËÏÍ ÍÁÌ"
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr "éÄÅÔ ÏÂÒÁÂÏÔËÁ ÚÁÐÒÏÓÁ"
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr "úÁÐÒÏÓ ÏÔÍÅÎÅÎ"
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr "úÁÐÒÏÓ ÎÅ ÏÔÍÅÎÅÎ"
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr "÷ÓÅ ÚÁÐÒÏÓÙ ÚÁ×ÅÒÛÅÎÙ"
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr "ðÒÅÒ×ÁÎÏ ÐÏ ÓÉÇÎÁÌÕ"
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr "îÅÐÒÁ×ÉÌØÎÏ ÚÁËÏÄÉÒÏ×ÁÎÁ ÓÔÒÏËÁ ÐÁÒÁÍÅÔÒÏ×"
+
+#: lib/gai_strerror.c:74
+msgid "Unknown error"
+msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: ÎÅÏÄÎÏÚÎÁÞÎÙÊ ËÌÀÞ `%s'\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: ËÌÀÞ `--%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: ËÌÀÞ `%c%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: ËÌÀÞ `%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: ËÌÀÞ `--%s' ÎÅ ÒÁÓÐÏÚÎÁÎ\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: ËÌÀÞ `%c%s' ÎÅ ÒÁÓÐÏÚÎÁÎ\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÙÊ ËÌÀÞ -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ÎÅ×ÅÒÎÙÊ ËÌÀÞ -- `%c'\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: ËÌÀÞ ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: ÎÅÏÄÎÏÚÎÁÞÎÙÊ ËÌÀÞ `-W %s'\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: ËÌÀÞ `-W %s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "ÒÁÚÍÅÒ ÂÌÏËÁ"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÉÚÍÅÎÉÔØ ÐÒÁ×Á ÄÏÓÔÕÐÁ %s"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ËÁÔÁÌÏÇ %s"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ"
+
+#: lib/openat-die.c:34
+#, c-format
+msgid "unable to record current working directory"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÈÒÁÎÉÔØ ÔÅËÕÝÉÊ ÒÁÂÏÞÉÊ ËÁÔÁÌÏÇ"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ×ÅÒÎÕÔØÓÑ × ÐÅÒ×ÏÎÁÞÁÌØÎÙÊ ÒÁÂÏÞÉÊ ËÁÔÁÌÏÇ"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "'"
+
+#: lib/randread.c:125
+#, c-format
+msgid "%s: end of file"
+msgstr "%s: ËÏÎÅÃ ÆÁÊÌÁ"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr "õÓÐÅÈ"
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr "îÅÔ ÓÏÏÔ×ÅÔÓÔ×ÉÑ"
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr "îÅÄÏÐÕÓÔÉÍÏÅ ÒÅÇÕÌÑÒÎÏÅ ×ÙÒÁÖÅÎÉÅ"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr "îÅ×ÅÒÎÙÊ ÚÎÁË ÓÏÒÔÉÒÏ×ËÉ"
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr "îÅ×ÅÒÎÏÅ ÉÍÑ ËÌÁÓÓÁ ÚÎÁËÏ×"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr "ïÂÒÁÔÎÁÑ ËÏÓÁÑ ÞÅÒÔÁ × ËÏÎÃÅ ×ÙÒÁÖÅÎÉÑ"
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr "îÅ×ÅÒÎÁÑ ÏÂÒÁÔÎÁÑ ÓÓÙÌËÁ"
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr "îÅÐÁÒÎÁÑ [ ÉÌÉ [^"
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr "îÅÐÁÒÎÁÑ ( ÉÌÉ \\("
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr "îÅÐÁÒÎÁÑ \\{"
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr "îÅ×ÅÒÎÏÅ ÓÏÄÅÒÖÉÍÏÅ \\{\\}"
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr "îÅ×ÅÒÎÙÊ ËÏÎÅà ÄÉÁÐÁÚÏÎÁ"
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr "ðÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ"
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr "îÅ×ÅÒÎÏÅ ÐÒÅÄÛÅÓÔ×ÕÀÝÅÅ ÒÅÇÕÌÑÒÎÏÅ ×ÙÒÁÖÅÎÉÅ"
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr "ðÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅà ÒÅÇÕÌÑÒÎÏÇÏ ×ÙÒÁÖÅÎÉÑ"
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr "òÅÇÕÌÑÒÎÏÅ ×ÙÒÁÖÅÎÉÅ ÓÌÉÛËÏÍ ×ÅÌÉËÏ"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr "îÅÐÁÒÎÁÑ ) ÉÌÉ \\)"
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr "îÅÔ ÐÒÅÄÛÅÓÔ×ÕÀÝÅÇÏ ÒÅÇÕÌÑÒÎÏÇÏ ×ÙÒÁÖÅÎÉÑ"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr "ÏÐÁÓÎÏ ÒÅËÕÒÓÉ×ÎÏ ÏÂÒÁÂÁÔÙ×ÁÔØ %s"
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr "ÏÐÁÓÎÏ ÒÅËÕÒÓÉ×ÎÏ ÏÂÒÁÂÁÔÙ×ÁÔØ %s (ÔÏ ÖÅ, ÞÔÏ %s)"
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+"ÉÓÐÏÌØÚÕÊÔÅ --no-preserve-root, ÞÔÏÂÙ ÏÔÍÅÎÉÔØ ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ ÏÂ ÏÐÁÓÎÏÓÔÉ"
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[yY]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "ÆÕÎËÃÉÑ iconv ÎÅÐÒÉÍÅÎÉÍÁ"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "ÆÕÎËÃÉÑ iconv ÎÅÄÏÓÔÕÐÎÁ"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "ÚÎÁË ×ÎÅ ÄÏÐÕÓÔÉÍÏÇÏ ÄÉÁÐÁÚÏÎÁ"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÅÏÂÒÁÚÏ×ÁÔØ U+%04X Ë ÌÏËÁÌØÎÏÊ ËÏÄÉÒÏ×ËÅ"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÅÏÂÒÁÚÏ×ÁÔØ U+%04X Ë ÌÏËÁÌØÎÏÊ ËÏÄÉÒÏ×ËÅ: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "ÎÅ×ÅÒÎÙÊ ÐÏÌØÚÏ×ÁÔÅÌØ"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "ÎÅ×ÅÒÎÁÑ ÇÒÕÐÐÁ"
+
+#: lib/userspec.c:109
+msgid "invalid spec"
+msgstr "ÎÅ×ÅÒÎÙÊ ÓÐÅÃÉÆÉËÁÔÏÒ"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr "(C)"
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"üÔÏ Ó×ÏÂÏÄÎÁÑ ÐÒÏÇÒÁÍÍÁ. ÷Ù ÍÏÖÅÔÅ ÒÁÓÐÒÏÓÔÒÁÎÑÔØ ÅÅ ËÏÐÉÉ ÐÒÉ\n"
+"ÓÏÂÌÀÄÅÎÉÉ ÕÓÌÏ×ÉÊ õÎÉ×ÅÒÓÁÌØÎÏÊ ïÂÝÅÓÔ×ÅÎÎÏÊ ìÉÃÅÎÚÉÉ GNU\n"
+"<http://www.gnu.org/licenses/gpl.html>. îÅ ÐÒÅÄÏÓÔÁ×ÌÑÅÔÓÑ îéëáëéè\n"
+"çáòáîôéê, × ÕÓÔÁÎÏ×ÌÅÎÎÙÈ ÚÁËÏÎÏÍ ÐÒÅÄÅÌÁÈ.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "á×ÔÏÒ ÐÒÏÇÒÁÍÍÙ -- %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "á×ÔÏÒÙ ÐÒÏÇÒÁÍÍÙ -- %s É %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "á×ÔÏÒÙ ÐÒÏÇÒÁÍÍÙ -- %s, %s É %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"á×ÔÏÒÙ ÐÒÏÇÒÁÍÍÙ -- %s, %s, %s\n"
+"É %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"á×ÔÏÒÙ ÐÒÏÇÒÁÍÍÙ -- %s, %s, %s,\n"
+"%s É %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"á×ÔÏÒÙ ÐÒÏÇÒÁÍÍÙ -- %s, %s, %s,\n"
+"%s, %s É %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"á×ÔÏÒÙ ÐÒÏÇÒÁÍÍÙ -- %s, %s, %s,\n"
+"%s, %s, %s É %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"á×ÔÏÒÙ ÐÒÏÇÒÁÍÍÙ -- %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"É %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"á×ÔÏÒÙ ÐÒÏÇÒÁÍÍÙ -- %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s É %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"á×ÔÏÒÙ ÐÒÏÇÒÁÍÍÙ -- %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s É ÄÒÕÇÉÅ.\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÁÒÇÕÍÅÎÔ: %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "ÓÒÁ×ÎÅÎÉÅ ÓÔÒÏË ÎÅÕÓÐÅÛÎÏ"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "þÔÏÂÙ ÏÂÏÊÔÉ ÜÔÕ ÐÒÏÂÌÅÍÕ, ÕÓÔÁÎÏ×ÉÔÅ LC_ALL='C'."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "óÒÁ×ÎÉ×ÁÌÉÓØ ÓÔÒÏËÉ %s %s."
+
+#: lib/xmemxfrm.c:55
+#, c-format
+msgid "string transformation failed"
+msgstr "ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÓÔÒÏË ÎÅÕÓÐÅÛÎÏ"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr "îÅÔÒÁÎÓÆÏÒÍÉÒÏ×ÁÎÎÁÑ ÓÔÒÏËÁ ÂÙÌÁ %s."
+
+#: lib/xstrtol.h:62
+#, c-format
+msgid "invalid %s `%s'"
+msgstr "ÎÅ×ÅÒÎÙÊ %s `%s'"
+
+#: lib/xstrtol.h:69
+#, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË ÐÏÓÌÅ %s × `%s'"
+
+#: lib/xstrtol.h:74
+#, c-format
+msgid "%s `%s' too large"
+msgstr "%s `%s'ÓÌÉÛËÏÍ ×ÅÌÉË"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "ðÏÐÒÏÂÕÊÔÅ `%s --help' ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÂÏÌÅÅ ÐÏÄÒÏÂÎÏÇÏ ÏÐÉÓÁÎÉÑ.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ] [æáêì]\n"
+"ëÏÄÉÒÕÅÔ ÉÌÉ ÄÅËÏÄÉÒÕÅÔ ×/ÉÚ base64 æáêì, ÉÌÉ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ ÎÁ "
+"ÓÔÁÎÄÁÒÔÎÙÊ \n"
+"×Ù×ÏÄ.\n"
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+" -w, --wrap=óôïìâåã ðÅÒÅÎÏÓÉÔØ ÚÁËÏÄÉÒÏ×ÁÎÎÙÅ ÓÔÒÏËÉ ÐÏÓÌÅ ÚÁÄÁÎÎÏÇÏ "
+"óôïìâãá\n"
+" (ÐÏ ÕÍÏÌÞÁÎÉÀ 76). úÁÄÁÊÔÅ 0, ÞÔÏÂÙ ×ÙËÌÀÞÉÔØ "
+"ÐÅÒÅÎÏÓ.\n"
+"\n"
+" -d, --decode äÅËÏÄÉÒÏ×ÁÔØ ÄÁÎÎÙÅ.\n"
+" -i, --ignore-garbage ðÒÉ ÄÅËÏÄÉÒÏ×ÁÎÉÉ ÉÇÎÏÒÉÒÏ×ÁÔØ ÎÅÁÌÆÁ×ÉÔÎÙÅ ÚÎÁËÉ.\n"
+"\n"
+
+#: src/base64.c:77
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+" --help ðÏËÁÚÁÔØ ÜÔÕ ÓÐÒÁ×ËÕ É ×ÙÊÔÉ.\n"
+" --version ðÏËÁÚÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ É ×ÙÊÔÉ.\n"
+"\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+"\n"
+"äÁÎÎÙÅ ËÏÄÉÒÕÀÔÓÑ ËÁË ÏÐÉÓÁÎÏ ÄÌÑ ÁÌÆÁ×ÉÔÁ base64 × RFC 3548. ðÒÉ\n"
+"ÄÅËÏÄÉÒÏ×ÁÎÉÉ ××ÏÄ ÍÏÖÅÔ ÓÏÄÅÒÖÁÔØ ÔÁËÖÅ ÐÅÒÅ×ÏÄÙ ÓÔÒÏË ÐÏÍÉÍÏ ÂÁÊÔÏ×\n"
+"ÆÏÒÍÁÌØÎÏÇÏ ÁÌÆÁ×ÉÔÁ base64. éÓÐÏÌØÚÕÊÔÅ ËÌÀÞ --ignore-garbage, ÞÔÏÂÙ\n"
+"ÐÏÐÙÔÁÔØÓÑ ÐÒÏÉÇÎÏÒÉÒÏ×ÁÔØ ÎÅÁÌÆÁ×ÉÔÎÙÅ ÚÎÁËÉ × ÚÁËÏÄÉÒÏ×ÁÎÎÏÍ ÐÏÔÏËÅ.\n"
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"ï ÏÛÉÂËÁÈ ÓÏÏÂÝÁÊÔÅ ÐÏ ÁÄÒÅÓÕ <%s>.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "ÏÛÉÂËÁ ÞÔÅÎÉÑ"
+
+#: src/base64.c:234
+#, c-format
+msgid "invalid input"
+msgstr "ÎÅ×ÅÒÎÙÊ ××ÏÄ"
+
+#: src/base64.c:271
+#, c-format
+msgid "invalid wrap size: %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÒÁÚÍÅÒ ÐÅÒÅÎÏÓÁ: %s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr "ÌÉÛÎÉÊ ÏÐÅÒÁÎÄ %s"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "ÚÁËÒÙÔÉÅ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s éíñ [óõææéëó]\n"
+" ÉÌÉ: %s ëìàþ\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"÷Ù×ÏÄÉÔ éíñ ÂÅÚ ÐÒÅÄÛÅÓÔ×ÕÀÝÉÈ ÎÁÚ×ÁÎÉÊ ËÁÔÁÌÏÇÏ×.\n"
+"åÓÌÉ ÕËÁÚÁÎÏ, ÕÄÁÌÑÅÔ ÔÁËÖÅ ÚÁ×ÅÒÛÁÀÝÉÊ óõææéëó.\n"
+"\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+"\n"
+"ðÒÉÍÅÒÙ:\n"
+" %s /usr/bin/sort ÷Ù×ÏÄÉÔ \"sort\".\n"
+" %s include/stdio.h .h ÷Ù×ÏÄÉÔ \"stdio\".\n"
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, c-format
+msgid "missing operand"
+msgstr "ÐÒÏÐÕÝÅÎ ÏÐÅÒÁÎÄ"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ] [æáêì]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"óÃÅÐÌÑÅÔ æáêì(Ù) ÉÌÉ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ.\n"
+"\n"
+" -A, --show-all ÓÉÎÏÎÉÍ -vET\n"
+" -b, --number-nonblank ÎÕÍÅÒÏ×ÁÔØ ÎÅÐÕÓÔÙÅ ÓÔÒÏËÉ ÐÒÉ ×Ù×ÏÄÅ\n"
+" -e ÓÉÎÏÎÉÍ -vE\n"
+" -E, --show-ends ÐÏËÁÚÙ×ÁÔØ $ × ËÏÎÃÅ ËÁÖÄÏÊ ÓÔÒÏËÉ\n"
+" -n, --number ÎÕÍÅÒÏ×ÁÔØ ×ÓÅ ÓÔÒÏËÉ ÐÒÉ ×Ù×ÏÄÅ\n"
+" -s, --squeeze-blank ×Ù×ÏÄÉÔØ ÎÅ ÂÏÌÅÅ ÏÄÎÏÊ ÐÕÓÔÏÊ ÓÔÒÏËÉ\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t ÓÉÎÏÎÉÍ -vT\n"
+" -T, --show-tabs ÐÏËÁÚÙ×ÁÔØ ÚÎÁËÉ ÔÁÂÕÌÑÃÉÉ ËÁË ^I\n"
+" -u (ÉÇÎÏÒÉÒÕÅÔÓÑ)\n"
+" -v, --show-nonprinting ÉÓÐÏÌØÚÏ×ÁÔØ ÚÁÐÉÓØ Ó ^ É M-, ÚÁ ÉÓËÌÀÞÅÎÉÅÍ "
+"ÚÎÁËÏ×\n"
+" ÐÅÒÅ×ÏÄÁ ÓÔÒÏËÉ É ÔÁÂÕÌÑÃÉÉ\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+"\n"
+"ðÒÉÍÅÒÙ:\n"
+" %s f - g ÷Ù×ÏÄÉÔ ÓÏÄÅÒÖÉÍÏÅ f, ÐÏÔÏÍ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ, ÐÏÔÏÍ g.\n"
+" %s ëÏÐÉÒÕÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ.\n"
+
+#: src/cat.c:333
+#, c-format
+msgid "cannot do ioctl on %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ioctl ÄÌÑ %s"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: ××ÏÄ É ×Ù×ÏÄ × ÏÄÉÎ ÆÁÊÌ"
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "ÎÅ×ÅÒÎÁÑ ÇÒÕÐÐÁ %s"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... çòõððá æáêì...\n"
+" ÉÌÉ: %s [ëìàþ]... --reference=ïæáêì æáêì...\n"
+
+#: src/chgrp.c:117
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"éÚÍÅÎÑÅÔ ÐÒÉÎÁÄÌÅÖÎÏÓÔØ ÇÒÕÐÐÅ ËÁÖÄÏÇÏ æáêìá ÎÁ çòõððõ.\n"
+"ó ËÌÀÞÏÍ --reference, ÉÚÍÅÎÑÅÔ ÇÒÕÐÐÕ ËÁÖÄÏÇÏ æáêìá ÎÁ ÇÒÕÐÐÕ ïæáêìá.\n"
+"\n"
+" -c, --changes ÔÏ ÖÅ ÞÔÏ É verbose, ÎÏ ÔÏÌØËÏ ÅÓÌÉ ÐÒÏÉÚÏÛÌÏ "
+"ÉÚÍÅÎÅÎÉÅ\n"
+" --dereference ÉÚÍÅÎÑÔØ ÆÁÊÌ, ÎÁ ËÏÔÏÒÙÊ ÕËÁÚÙ×ÁÅÔ ÓÉÍ×ÏÌØÎÁÑ\n"
+" ÓÓÙÌËÁ, Á ÎÅ ÓÁÍÕ ÓÓÙÌËÕ (ÐÏ ÕÍÏÌÞÁÎÉÀ)\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference ÉÚÍÅÎÑÅÔ ÓÉÍ×ÏÌØÎÙÅ ÓÓÙÌËÉ, Á ÎÅ ÆÁÊÌÙ, ÎÁ ËÏÔÏÒÙÅ\n"
+" ÏÎÉ ÓÓÙÌÁÀÔÓÑ (ÉÍÅÅÔ ÓÍÙÓÌ ÔÏÌØËÏ ÎÁ ÓÉÓÔÅÍÁÈ, ÇÄÅ\n"
+" ÍÏÖÎÏ ÉÚÍÅÎÑÔØ ×ÌÁÄÅÌØÃÁ ÓÉÍ×ÏÌØÎÏÊ ÓÓÙÌËÉ)\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root ÎÅ ÏÂÒÁÂÁÔÙ×ÁÔØ `/' ÏÓÏÂÏ (ÐÏ ÕÍÏÌÞÁÎÉÀ)\n"
+" --preserve-root ÏÔËÁÚÙ×ÁÔØÓÑ ÒÅËÕÒÓÉ×ÎÏ ÏÂÒÁÂÁÔÙ×ÁÔØ `/'\n"
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet ÐÏÄÁ×ÌÑÔØ ÂÏÌØÛÉÎÓÔ×Ï ÓÏÏÂÝÅÎÉÊ Ï ÏÛÉÂËÁÈ\n"
+" --reference=ïæáêì ÉÓÐÏÌØÚÏ×ÁÔØ ÇÒÕÐÐÕ ïæáêìá ×ÍÅÓÔÏ Ñ×ÎÏÇÏ ÕËÁÚÁÎÉÑ "
+"çòõððù\n"
+" -R, --recursive ÒÅËÕÒÓÉ×ÎÏ ÏÂÒÁÂÁÔÙ×ÁÔØ ÆÁÊÌÙ É ËÁÔÁÌÏÇÉ\n"
+" -v, --verbose ×Ù×ÏÄÉÔØ ÄÉÁÇÎÏÓÔÉÞÅÓËÉÅ ÓÏÏÂÝÅÎÉÑ ÄÌÑ ËÁÖÄÏÇÏ "
+"ÆÁÊÌÁ\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+"óÌÅÄÕÀÝÉÅ ËÌÀÞÉ ×ÌÉÑÀÔ ÎÁ ÓÐÏÓÏ ÏÂÈÏÄÁ ÉÅÒÁÒÈÉÉ ËÁÔÁÌÏÇÏ× ÐÒÉ\n"
+"ÚÁÄÁÎÎÏÍ ËÌÀÞÅ -R. åÓÌÉ ÕËÁÚÁÎÏ ÎÅÓËÏÌØËÏ ÜÔÉÈ ËÌÀÞÅÊ, ÄÅÊÓÔ×ÕÅÔ\n"
+"ÔÏÌØËÏ ÐÏÓÌÅÄÎÉÊ.\n"
+"\n"
+" -H ÅÓÌÉ ÁÒÇÕÍÅÎÔ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ Ñ×ÌÑÅÔÓÑ ÓÉÍ×ÏÌØÎÏÊ\n"
+" ÓÓÙÌËÏÊ ÎÁ ËÁÔÁÌÏÇ, ÐÅÒÅÊÔÉ ÐÏ ÎÅÊ\n"
+" -L ÐÅÒÅÈÏÄÉÔØ ÐÏ ÌÀÂÏÊ ×ÓÔÒÅÞÅÎÎÏÊ ÓÉÍ×ÏÌØÎÏÊ ÓÓÙÌËÅ "
+"ÎÁ\n"
+" ËÁÔÁÌÏÇ\n"
+" -P ÎÅ ÐÅÒÅÈÏÄÉÔØ ÐÏ ÓÉÍ×ÏÌØÎÙÍ ÓÓÙÌËÁÍ (ÐÏ ÕÍÏÌÞÁÎÉÀ)\n"
+"\n"
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+"\n"
+"ðÒÉÍÅÒÙ:\n"
+" %s staff /u íÅÎÑÅÔ ÇÒÕÐÐÕ /u ÎÁ \"staff\".\n"
+" %s -hR staff /u íÅÎÑÅÔ ÇÒÕÐÐÕ /u É ×ÌÏÖÅÎÎÙÈ ÆÁÊÌÏ× ÎÁ \"staff\".\n"
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr "ëÏÍÂÉÎÁÃÉÑ ËÌÀÞÅÊ -R --dereference ÔÒÅÂÕÅÔ ÕËÁÚÁÔØ -H ÌÉÂÏ -L"
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, c-format
+msgid "missing operand after %s"
+msgstr "ÐÒÏÐÕÝÅÎ ÏÐÅÒÁÎÄ ÐÏÓÌÅ %s"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "ÏÛÉÂËÁ ÐÏÌÕÞÅÎÉÑ ÁÔÒÉÂÕÔÏ× %s"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "ÐÏÌÕÞÁÀ ÎÏ×ÙÅ ÁÔÒÉÂÕÔÙ %s"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "ÎÉ ÓÉÍ×ÏÌØÎÁÑ ÓÓÙÌËÁ %s, ÎÉ ÔÏ ÎÏ ÞÔÏ ÏÎÁ ÕËÁÚÙ×ÁÅÔ ÎÅ ÂÙÌÉ ÉÚÍÅÎÅÎÙ\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "ÐÒÁ×Á ÄÏÓÔÕÐÁ %s ÉÚÍÅÎÅÎÙ ÎÁ %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "ÏÛÉÂËÁ ÉÚÍÅÎÅÎÉÑ ÐÒÁ× ÄÏÓÔÕÐÁ %s ÎÁ %04lo (%s)\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "ÐÒÁ×Á ÄÏÓÔÕÐÁ %s ÏÓÔÁ×ÌÅÎÙ ËÁË %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÄÏÓÔÕÐ Ë %s"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÞÉÔÁÔØ ËÁÔÁÌÏÇ %s"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "ÉÚÍÅÎÅÎÉÅ ÐÒÁ× ÄÏÓÔÕÐÁ ÄÌÑ %s"
+
+#: src/chmod.c:286
+#, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "%s: ÎÏ×ÙÅ ÐÒÁ×Á ÄÏÓÔÕÐÁ %s, Á ÎÅ %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr "ÏÐÅÒÁÃÉÑ fts_read ÎÅÕÓÐÅÛÎÁ"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... òåöéí[,òåöéí]... æáêì\n"
+" ÉÌÉ: %s [ëìàþ]... ÷ïóøí-òåöéí æáêì...\n"
+" ÉÌÉ: %s [ëìàþ]... --reference=ïæáêì æáêì...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+"éÚÍÅÎÑÅÔ ÒÅÖÉÍ ËÁÖÄÏÇÏ æáêìá ÎÁ ÕËÁÚÁÎÎÙÊ òåöéí.\n"
+"\n"
+" -c, --changes ËÁË verbose, ÎÏ ÓÏÏÂÝÁÔØ, ÔÏÌØËÏ ÅÓÌÉ ÓÄÅÌÁÎÏ\n"
+" ÄÅÊÓÔ×ÉÔÅÌØÎÏÅ ÉÚÍÅÎÅÎÉÅ\n"
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root ÎÅ ÏÂÒÁÂÁÔÙ×ÁÔØ `/' ÏÓÏÂÏ (ÐÏ ÕÍÏÌÞÁÎÉÀ)\n"
+" --preserve-root ÏÔËÁÚÙ×ÁÔØÓÑ ÒÅËÕÒÓÉ×ÎÏ ÏÂÒÁÂÁÔÙ×ÁÔØ `/'\n"
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+" -f, --silent, --quiet ÐÏÄÁ×ÌÑÔØ ÂÏÌØÛÉÎÓÔ×Ï ÓÏÏÂÝÅÎÉÊ Ï ÏÛÉÂËÁÈ\n"
+" -v, --verbose ×Ù×ÏÄÉÔØ ÄÉÁÇÎÏÓÔÉÞÅÓËÉÅ ÓÏÏÂÝÅÎÉÑ ÄÌÑ ËÁÖÄÏÇÏ "
+"ÆÁÊÌÁ\n"
+" --reference=ïæáêì ÉÓÐÏÌØÚÏ×ÁÔØ ÒÅÖÉÍ ïæáêìá ×ÍÅÓÔÏ Ñ×ÎÏÇÏ ÕËÁÚÁÎÉÑ "
+"òåöéíá\n"
+" -R, --recursive ÒÅËÕÒÓÉ×ÎÏ ÏÂÒÁÂÁÔÙ×ÁÔØ ÆÁÊÌÙ É ËÁÔÁÌÏÇÉ\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+"\n"
+"òåöéí ÚÁÄÁÅÔÓÑ × ÆÏÒÍÅ `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr "ÎÅÌØÚÑ ÓÏÞÅÔÁÔØ ËÌÀÞÉ ÒÅÖÉÍÁ É --reference"
+
+#: src/chmod.c:510
+#, c-format
+msgid "invalid mode: %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÒÅÖÉÍ: %s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "ÉÚÍÅÎÅÎ ×ÌÁÄÅÌÅà %s ÎÁ %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "ÉÚÍÅÎÅÎÁ ÇÒÕÐÐÁ %s ÎÁ %s\n"
+
+#: src/chown-core.c:149
+#, c-format
+msgid "no change to ownership of %s\n"
+msgstr "ÎÅ ÉÚÍÅÎÅÎ ×ÌÁÄÅÌÅà %s\n"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÉÚÍÅÎÉÔØ ×ÌÁÄÅÌØÃÁ %s ÎÁ %s\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "ÏÛÉÂËÁ ÉÚÍÅÎÅÎÉÑ ÇÒÕÐÐÙ %s ÎÁ %s\n"
+
+#: src/chown-core.c:154
+#, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÉÚÍÅÎÉÔØ ×ÌÁÄÅÌØÃÁ %s\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "×ÌÁÄÅÌÅà %s ÏÓÔÁ×ÌÅÎ ËÁË %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "ÇÒÕÐÐÁ %s ÏÓÔÁ×ÌÅÎÁ ËÁË %s\n"
+
+#: src/chown-core.c:159
+#, c-format
+msgid "ownership of %s retained\n"
+msgstr "×ÌÁÄÅÌÅà %s ÏÓÔÁ×ÌÅÎ ÂÅÚ ÉÚÍÅÎÅÎÉÊ\n"
+
+#: src/chown-core.c:344
+#, c-format
+msgid "cannot dereference %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÊÔÉ ÐÏ ÓÉÍ×ÏÌØÎÏÊ ÓÓÙÌËÅ %s"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "ÉÚÍÅÎÅÎÉÅ ×ÌÁÄÅÌØÃÁ %s"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "ÉÚÍÅÎÅÎÉÅ ÇÒÕÐÐÙ ÄÌÑ %s"
+
+#: src/chown.c:93
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [÷ìáäåìåã][:[çòõððá]] æáêì...\n"
+" ÉÌÉ: %s [ëìàþ]... --reference=ïæáêì æáêì...\n"
+
+#: src/chown.c:98
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"éÚÍÅÎÑÅÔ ×ÌÁÄÅÌØÃÁ É/ÉÌÉ ÇÒÕÐÐÕ ËÁÖÄÏÇÏ æáêìá ÎÁ ÷ìáäåìøãá É/ÉÌÉ çòõððõ.\n"
+"ó ËÌÀÞÏÍ --reference, ÉÚÍÅÎÑÅÔ ×ÌÁÄÅÌØÃÁ É ÇÒÕÐÐÕ ËÁÖÄÏÇÏ æáêìá ÎÁ ×ÌÁÄÅÌØÃÁ "
+"É\n"
+"ÇÒÕÐÐÕ ïæáêìá.\n"
+"\n"
+" -c, --change ÔÏÖÅ ÞÔÏ É verbose, ÎÏ ÓÏÏÂÝÁÅÔ ÔÏÌØËÏ ËÏÇÄÁ\n"
+" ÂÙÌÉ ÐÒÏÉÚ×ÅÄÅÎÙ ÉÚÍÅÎÅÎÉÑ\n"
+" --dereference ÉÚÍÅÎÑÔØ ÆÁÊÌ, ÎÁ ËÏÔÏÒÙÊ ÕËÁÚÙ×ÁÅÔ ÓÉÍ×ÏÌØÎÁÑ\n"
+" ÓÓÙÌËÁ, Á ÎÅ ÓÁÍÕ ÓÓÙÌËÕ (ÐÏ ÕÍÏÌÞÁÎÉÀ)\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" ÉÚÍÅÎÑÅÔ ×ÌÁÄÅÌØÃÁ É/ÉÌÉ ÇÒÕÐÐÕ ËÁÖÄÏÇÏ ÆÁÊÌÁ\n"
+" ÔÏÌØËÏ ÅÓÌÉ ÔÅËÕÝÉÊ ×ÌÁÄÅÌÅà É/ÉÌÉ ÇÒÕÐÐÁ\n"
+" ÓÏ×ÐÁÄÁÅÔ Ó CURRENT_OWNER::CURRENT_GROUP.\n"
+" ëÁË ÇÒÕÐÐÁ, ÔÁË É ×ÌÁÄÅÌÅà ÍÏÇÕÔ ÂÙÔØ ÏÐÕÝÅÎÙ,\n"
+" × ÜÔÏÍ ÓÌÕÞÁÅ ÓÏ×ÐÁÄÅÎÉÅ ÄÌÑ ÄÁÎÎÏÇÏ ÁÔÒÉÂÕÔÁ\n"
+" ÎÅ ÏÂÑÚÁÔÅÌØÎÏ.\n"
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet ÐÏÄÁ×ÌÑÔØ ÂÏÌØÛÉÎÓÔ×Ï ÓÏÏÂÝÅÎÉÊ Ï ÏÛÉÂËÁÈ\n"
+" --reference=ïæáêì ÉÓÐÏÌØÚÏ×ÁÔØ ×ÌÁÄÅÌØÃÁ É ÇÒÕÐÐÕ ïæáêìá ×ÍÅÓÔÏ "
+"Ñ×ÎÏÇÏ\n"
+" ÕËÁÚÁÎÉÑ ÷ìáäåìøãá:çòõððù\n"
+" -R, --recursive ÒÅËÕÒÓÉ×ÎÏ ÏÂÒÁÂÁÔÙ×ÁÔØ ÆÁÊÌÙ É ËÁÔÁÌÏÇÉ\n"
+" -v, --verbose ×Ù×ÏÄÉÔØ ÄÉÁÇÎÏÓÔÉÞÅÓËÉÅ ÓÏÏÂÝÅÎÉÑ ÄÌÑ ËÁÖÄÏÇÏ "
+"ÆÁÊÌÁ\n"
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"÷ÌÁÄÅÌÅà ÎÅ ÉÚÍÅÎÑÅÔÓÑ, ÅÓÌÉ ÏÎ ÎÅ ÚÁÄÁÎ × ÁÒÇÕÍÅÎÔÅ. çÒÕÐÐÁ ÔÁËÖÅ ÎÅ\n"
+"ÉÚÍÅÎÑÅÔÓÑ, ÅÓÌÉ ÎÅ ÚÁÄÁÎÁ; ÎÏ ÅÓÌÉ ÐÏÓÌÅ ÓÉÍ×ÏÌØÎÏÇÏ ÷ìáäåìøãá ÓÔÏÉÔ\n"
+"ÚÎÁË `:', ÐÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ ÉÚÍÅÎÅÎÉÅ ÇÒÕÐÐÙ ÎÁ ÏÓÎÏ×ÎÕÀ ÇÒÕÐÐÕ ÔÅËÕÝÅÇÏ\n"
+"ÐÏÌØÚÏ×ÁÔÅÌÑ.\n"
+"÷ìáäåìåã É çòõððá ÍÏÇÕÔ ÂÙÔØ ËÁË ÞÉÓÌÏ×ÙÍÉ, ÔÁË É ÓÉÍ×ÏÌØÎÙÍÉ.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+"\n"
+"ðÒÉÍÅÒÙ:\n"
+" %s root /u íÅÎÑÅÔ ×ÌÁÄÅÌØÃÁ /u ÎÁ \"root\".\n"
+" %s root:staff /u ôÏ ÖÅ, ÎÏ ÅÝÅ ÍÅÎÑÅÔ ÇÒÕÐÐÕ ÎÁ \"staff\".\n"
+" %s -hR root /u íÅÎÑÅÔ ×ÌÁÄÅÌØÃÁ /u É ×ÌÏÖÅÎÎÙÈ ÆÁÊÌÏ× ÎÁ \"root\".\n"
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s ëáôáìïç [ëïíáîäá...]\n"
+" ÉÌÉ: %s ëìàþ\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"÷ÙÐÏÌÎÑÅÔ ëïíáîäõ Ó ÕËÁÚÁÎÎÙÍ ËÏÒÎÅ×ÙÍ ËÁÔÁÌÏÇÏÍ.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"åÓÌÉ ËÏÍÁÎÄÁ ÎÅ ÚÁÄÁÎÁ, ×ÙÐÏÌÎÑÅÔ ``${SHELL} -i'' (ÐÏ ÕÍÏÌÞÁÎÉÀ: /bin/sh).\n"
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÍÅÎÉÔØ ËÏÒÎÅ×ÏÊ ËÁÔÁÌÏÇ ÎÁ %s"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÊÔÉ Ë ËÏÒÎÅ×ÏÍÕ ËÁÔÁÌÏÇÕ"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÕ %s"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: ÆÁÊÌ ÓÌÉÛËÏÍ ×ÅÌÉË"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [æáêì]...\n"
+" ÉÌÉ: %s ëìàþ\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ ËÏÎÔÒÏÌØÎÕÀ ÓÕÍÍÕ (CRC) É ÞÉÓÌÏ ÂÁÊÔ ÄÌÑ ËÁÖÄÏÇÏ æáêìá.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... æáêì1 æáêì2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr "óÒÁ×ÎÉ×ÁÅÔ ÓÏÒÔÉÒÏ×ÁÎÎÙÅ ÆÁÊÌÙ æáêì1 É æáêì2 ÐÏÓÔÒÏÞÎÏ.\n"
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+"\n"
+"ðÒÉ ÚÁÐÕÓËÅ ÂÅÚ ËÌÀÞÅÊ ×ÙÄÁÅÔ ÒÅÚÕÌØÔÁÔ × ÔÒÉ ÓÔÏÌÂÃÁ. ðÅÒ×ÙÊ ÓÔÏÌÂÅÃ\n"
+"ÓÏÄÅÒÖÉÔ ÓÔÒÏËÉ, ÕÎÉËÁÌØÎÙÅ ÄÌÑ æáêìá1, ×ÔÏÒÏÊ -- ÕÎÉËÁÌØÎÙÅ ÄÌÑ\n"
+"æáêìá2, Á ÔÒÅÔÉÊ -- ÏÂÝÉÅ ÄÌÑ ÏÂÏÉÈ ÆÁÊÌÏ× ÓÔÒÏËÉ.\n"
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"\n"
+" -1 ÎÅ ÐÏËÁÚÙ×ÁÔØ ÓÔÒÏËÉ, ÕÎÉËÁÌØÎÙÅ ÄÌÑ æáêìá1\n"
+" -2 ÎÅ ÐÏËÁÚÙ×ÁÔØ ÓÔÒÏËÉ, ÕÎÉËÁÌØÎÙÅ ÄÌÑ æáêìá2\n"
+" -3 ÎÅ ÐÏËÁÚÙ×ÁÔØ ÓÔÒÏËÉ, ×ÓÔÒÅÞÅÎÎÙÅ × ÏÂÏÉÈ ÆÁÊÌÁÈ\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ÓÏÈÒÁÎÉÔØ ×ÌÁÄÅÌØÃÁ %s"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ÎÁÊÔÉ ÆÁÊÌ %s"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ÓÏÈÒÁÎÉÔØ Á×ÔÏÒÁ %s"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ %s ÄÌÑ ÞÔÅÎÉÑ"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ fstat ÄÌÑ %s"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "ÐÒÏÐÕÓËÁÀ ÆÁÊÌ %s, ÔÁË ËÁË ÏÎ ÂÙÌ ÚÁÍÅÎÅÎ ×Ï ×ÒÅÍÑ ËÏÐÉÒÏ×ÁÎÉÑ"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ %s"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "ÕÄÁÌÅÎ %s\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÏÂÙÞÎÙÊ ÆÁÊÌ %s"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "ÞÔÅÎÉÅ %s"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ lseek ÄÌÑ %s"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "ÚÁÐÉÓØ %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "ÓÏÈÒÁÎÅÎÉÅ ×ÒÅÍÅÎÎÏÊ ÏÔÍÅÔËÉ %s"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "ÚÁËÒÙÔÉÅ %s"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: ÐÅÒÅÐÉÓÁÔØ %s, ÎÅÓÍÏÔÒÑ ÎÁ ÐÒÁ×Á ÄÏÓÔÕÐÁ %04lo? "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: ÐÅÒÅÐÉÓÁÔØ %s? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (ÒÅÚÅÒ×ÎÁÑ ËÏÐÉÑ: %s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "ÐÒÏÐÕÓË ËÁÔÁÌÏÇÁ %s"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "×ÎÉÍÁÎÉÅ: ×ÈÏÄÎÏÊ ÆÁÊÌ %s ÕËÁÚÁÎ ÂÏÌÅÅ ÏÄÎÏÇÏ ÒÁÚÁ"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s É %s - ÏÄÉÎ É ÔÏÔ ÖÅ ÆÁÊÌ"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr ""
+"ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÚÁÐÉÓÁÔØ ÐÏ×ÅÒÈ ÆÁÊÌÁ %s, ÎÅ Ñ×ÌÑÀÝÅÇÏÓÑ ËÁÔÁÌÏÇÏÍ, ËÁÔÁÌÏÇ %s"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "ÎÅ ÐÅÒÅÐÉÓÙ×ÁÀ ÔÏÌØËÏ ÞÔÏ ÓÏÚÄÁÎÎÙÊ %s %s"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÚÁÐÉÓÁÔØ ËÁÔÁÌÏÇ %s ÆÁÊÌÏÍ, ÎÅ Ñ×ÌÑÀÝÉÍÓÑ ËÁÔÁÌÏÇÏÍ"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr ""
+"ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÉÍÅÎÏ×ÁÔØ ËÁÔÁÌÏÇ × ÆÁÊÌ, ÎÅ Ñ×ÌÑÀÝÉÊÓÑ ËÁÔÁÌÏÇÏÍ: %s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "ÓÏÈÒÁÎÅÎÉÅ ÚÁÐÁÓÎÏÊ ËÏÐÉÉ %s ÕÎÉÞÔÏÖÉÔ ÏÒÉÇÉÎÁÌ; %s ÎÅ ÐÅÒÅÎÅÓÅÎ"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "ÓÏÈÒÁÎÅÎÉÅ ÚÁÐÁÓÎÏÊ ËÏÐÉÉ %s ÕÎÉÞÔÏÖÉÔ ÏÒÉÇÉÎÁÌ; %s ÎÅ ÓËÏÐÉÒÏ×ÁÎ"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÒÅÚÅÒ×ÎÕÀ ËÏÐÉÀ ÄÌÑ %s"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓËÏÐÉÒÏ×ÁÔØ ËÁÔÁÌÏÇ, %s, × ÓÁÍÏÇÏ ÓÅÂÑ, %s"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "ÖÅÓÔËÁÑ ÓÓÙÌËÁ %s ÎÁ ËÁÔÁÌÏÇ %s ÎÅ ÂÕÄÅÔ ÓÏÚÄÁÎÁ"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÖÅÓÔËÕÀ ÓÓÙÌËÕ %s ÎÁ %s"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÎÅÓÔÉ %s × Ó×ÏÊ ÓÏÂÓÔ×ÅÎÎÙÊ ÐÏÄËÁÔÁÌÏÇ, %s"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÍÅÓÔÉÔØ %s × %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+"ÐÅÒÅÍÅÝÅÎÉÅ Ó ÕÓÔÒÏÊÓÔ×Á %s ÎÁ ÕÓÔÒÏÊÓÔ×Ï %s ÎÅÕÓÐÅÛÎÏ: ÎÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ "
+"ÃÅÌÅ×ÏÅ"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓËÏÐÉÒÏ×ÁÔØ ÃÉËÌÉÞÅÓËÕÀ ÓÉÍ×ÏÌØÎÕÀ ÓÓÙÌËÕ %s"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr ""
+"%s: ÏÔÎÏÓÉÔÅÌØÎÙÅ ÓÉÍ×ÏÌØÎÙÅ ÓÓÙÌËÉ ÍÏÖÎÏ ÓÏÚÄÁ×ÁÔØ ÔÏÌØËÏ × ÔÅËÕÝÅÍ ËÁÔÁÌÏÇÅ"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÉÍ×ÏÌØÎÕÀ ÓÓÙÌËÕ %s ÎÁ %s"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÓÙÌËÕ %s"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÏÞÅÒÅÄØ %s"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÐÅÃÉÁÌØÎÙÊ ÆÁÊÌ %s"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÞÉÔÁÔØ ÓÉÍ×ÏÌØÎÕÀ ÓÓÙÌËÕ %s"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÉÍ×ÏÌØÎÕÀ ÓÓÙÌËÕ %s"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "ÔÉÐ ÆÁÊÌÁ %s ÎÅÉÚ×ÅÓÔÅÎ"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÏÓÓÔÁÎÏ×ÉÔØ %s ÉÚ ÒÅÚÅÒ×ÎÏÊ ËÏÐÉÉ"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (×ÏÓÓÔÁÎÏ×ÌÅÎÉÅ)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [-T] éóôïþîéë îáúîáþåîéå\n"
+" ÉÌÉ: %s [ëìàþ]... éóôïþîéë... ëáôáìïç\n"
+" ÉÌÉ: %s [ëìàþ]... -t ëáôáìïç éóôïþîéë...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"ëÏÐÉÒÕÅÔ éóôïþîéë × îáúîáþåîéå, ÉÌÉ ÎÅÓËÏÌØËÏ éóôïþîéëï÷ × ëáôáìïç.\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"áÒÇÕÍÅÎÔÙ, ÏÂÑÚÁÔÅÌØÎÙÅ ÄÌÑ ÄÌÉÎÎÙÈ ËÌÀÞÅÊ, ÏÂÑÚÁÔÅÌØÎÙ É ÄÌÑ ËÏÒÏÔËÉÈ.\n"
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive ÔÏÖÅ ÞÔÏ É -dpPR\n"
+" --backup[=ëïçäá] ÓÏÚÄÁ×ÁÔØ ÒÅÚÅÒ×ÎÕÀ ËÏÐÉÀ ËÁÖÄÏÇÏ ÃÅÌÅ×ÏÇÏ "
+"ÆÁÊÌÁ\n"
+" -b ÔÏ ÖÅ, ÞÔÏ É --backup, ÎÏ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n"
+" --copy-contents ËÏÐÉÒÏ×ÁÔØ ÓÏÄÅÒÖÉÍÏÅ ÓÐÅÃÉÁÌØÎÙÈ ÆÁÊÌÏ× ÐÒÉ\n"
+" ÒÅËÕÒÓÉ×ÎÏÊ ÏÂÒÁÂÏÔËÅ\n"
+" -d ÔÏ ÖÅ, ÞÔÏ É --no-dereference --"
+"preserve=link\n"
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" -f, --force ÅÓÌÉ ÎÅÌØÚÑ ÏÔËÒÙÔØ ÓÕÝÅÓÔ×ÕÀÝÉÊ ÆÁÊÌ,\n"
+" ÕÄÁÌÉÔØ ÅÇÏ É ÐÏÐÒÏÂÏ×ÁÔØ ÅÝÅ ÒÁÚ\n"
+" -i, --interactive ÓÐÒÁÛÉ×ÁÔØ ÐÅÒÅÄ ÔÅÍ ËÁË ÐÅÒÅÐÉÓÙ×ÁÔØ\n"
+" -H ÓÌÅÄÏ×ÁÔØ ÐÏ ÓÉÍ×ÏÌØÎÙÍ ÓÓÙÌËÁÍ × ËÏÍÁÎÄÎÏÊ "
+"ÓÔÒÏËÅ\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+" -l, --link ÓÏÚÄÁ×ÁÔØ ÖÅÓÔËÉÅ ÓÓÙÌËÉ ×ÍÅÓÔÏ ËÏÐÉÒÏ×ÁÎÉÑ\n"
+" -L, --dereference ×ÓÅÇÄÁ ÓÌÅÄÏ×ÁÔØ ÓÉÍ×ÏÌØÎÙÍ ÓÓÙÌËÁÍ\n"
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr " -P, --no-dereference ÎÅ ÓÌÅÄÏ×ÁÔØ ÓÉÍ×ÏÌØÎÙÍ ÓÓÙÌËÁÍ\n"
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -p ÔÏ ÖÅ, ÞÔÏ É --preserve=mode,ownership,"
+"timestamps\n"
+" --preserve[=óðéó_áôôò] ÓÏÈÒÁÎÑÔØ ÕËÁÚÁÎÎÙÅ ÁÔÒÉÂÕÔÙ (ÐÏ ÕÍÏÌÞÁÎÉÀ:\n"
+" mode,ownership,timestamps), ÅÓÌÉ ×ÏÚÍÏÖÎÏ\n"
+" ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÁÔÒÉÂÕÔÙ: links, all\n"
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=óðéó_áôôò ÎÅ ÓÏÈÒÁÎÑÔØ ÕËÁÚÁÎÎÙÅ ÁÔÒÉÂÕÔÙ\n"
+" --parents ÄÏÂÁ×ÉÔØ ÉÓÈÏÄÎÙÊ ÐÕÔØ Ë ëáôáìïçõ\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive ËÏÐÉÒÏ×ÁÔØ ÒÅËÕÒÓÉ×ÎÏ ËÁÔÁÌÏÇÉ\n"
+" --remove-destination ÕÄÁÌÑÔØ ËÁÖÄÙÊ ÆÁÊÌ ÎÁÚÎÁÞÅÎÉÑ ÐÅÒÅÄ ÔÅÍ,\n"
+" ËÁË ÐÏÐÙÔËÏÊ ÓËÏÐÉÒÏ×ÁÔØ ÅÇÏ (ÏÂÒÁÔÎÏ Ë --"
+"force)\n"
+
+#: src/cp.c:205
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --sparse=ëïçäá ÕÐÒÁ×ÌÑÅÔ ÓÏÚÄÁÎÉÅÍ ÒÁÚÒÑÖÅÎÎÙÈ ÆÁÊÌÏ×\n"
+" --strip-trailing-slashes ÕÄÁÌÑÔØ ×ÓÅ ËÏÎÅÞÎÙÅ ËÏÓÙÅ ÞÅÒÔÙ ÉÚ ËÁÖÄÏÇÏ\n"
+" ÁÒÇÕÍÅÎÔÁ éóôïþîéë\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link ÓÏÚÄÁ×ÁÔØ ÓÉÍ×ÏÌØÎÙÅ ÓÓÙÌËÉ ×ÍÅÓÔÏ "
+"ËÏÐÉÒÏ×ÁÎÉÑ\n"
+" -S, --suffix=óõææéëó ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÚÁÐÁÓÎÙÈ ËÏÐÉÊ ÚÁÄÁÎÎÙÊ "
+"óõææéëó\n"
+" --target-directory=ëáôáìïç ÓËÏÐÉÒÏ×ÁÔØ ×ÓÅ éóôïþîéëé × ëáôáìïç\n"
+" -T, --no-target-directory ÓÞÉÔÁÔØ îáúîáþåîéå ÏÂÙÞÎÙÍ ÆÁÊÌÏÍ\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update ËÏÐÉÒÏ×ÁÔØ ÔÏÌØËÏ ÔÏÇÄÁ ËÏÇÄÁ ÉÓÈÏÄÎÙÊ ÆÁÊÌ\n"
+" ÎÏ×ÅÅ ÞÅÍ ÆÁÊÌ ÎÁÚÎÁÞÅÎÉÑ, ÉÌÉ ËÏÇÄÁ ÆÁÊÌ\n"
+" ÎÁÚÎÁÞÅÎÉÑ ÏÔÓÕÔÓÔ×ÕÅÔ\n"
+" -v, --verbose ÐÏÑÓÎÑÔØ ÞÔÏ ÂÕÄÅÔ ÓÄÅÌÁÎÏ\n"
+" -x, --one-file-system ÏÓÔÁ×ÁÔØÓÑ × ÐÒÅÄÅÌÁÈ ÏÄÎÏÊ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ\n"
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"ðÏ ÕÍÏÌÞÁÎÉÀ `sparse' SOURCE ÒÁÓÐÏÚÎÁÅÔÓÑ ÐÒÉ ÐÏÍÏÝÉ ÇÒÕÂÏÊ\n"
+"Ü×ÒÉÓÔÉÞÅÓËÏÊ ÐÒÏÃÅÄÕÒÙ É ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ ÓÏÚÄÁÅÔÓÑ `sparse' DEST.\n"
+"á×ÔÏÍÁÔÉÞÅÓËÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÍÏÖÎÏ ÔÁËÖÅ ÚÁÄÁÔØ ÐÒÉ ÐÏÍÏÝÉ ËÌÀÞÁ --"
+"sparse=auto.\n"
+"ó ËÌÀÞÏÍ --sparse=always SOURCE ×ÓÅÇÄÁ ÓÏÚÄÁÅÔÓÑ `sparse' ×ÎÅ ÚÁ×ÉÓÉÍÏÓÔÉ\n"
+"ÏÔ ÔÏÇÏ ÓÏÄÅÒÖÉÔ ÌÉ SOURCE ÄÌÉÎÎÙÅ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÎÕÌÅ×ÙÈ ÂÁÊÔÏ×.\n"
+"éÓÐÏÌØÚÕÊÔÅ ËÌÀÞ --sparse=never ÄÌÑ ÚÁÐÒÅÝÅÎÉÑ ÓÏÚÄÁÎÉÑ `sparse' ÆÁÊÌÏ×.\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"ðÏ ÕÍÏÌÞÁÎÉÀ ÓÕÆÆÉËÓ ÄÌÑ ÚÁÐÁÓÎÙÈ ËÏÐÉÊ ~, ÅÓÌÉ ÔÏÌØËÏ ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ\n"
+"ÐÅÒÅÍÅÎÎÁÑ ÏËÒÕÖÅÎÉÑ SIMPLE_BACKUP_SUFFIX ÉÌÉ ËÌÀÞ --suffix. óÐÏÓÏÂ "
+"ËÏÎÔÒÏÌÑ\n"
+"×ÅÒÓÉÊ ÍÏÖÅÔ ÂÙÔØ ÕÓÔÁÎÏ×ÌÅÎ ÐÒÉ ÐÏÍÏÝÉ ËÌÀÞÁ --backup ÉÌÉ ÐÅÒÅÍÅÎÎÏÊ\n"
+"ÏËÒÕÖÅÎÉÑ VERSION_CONTROL. äÏÐÕÓÔÉÍÙÅ ÚÎÁÞÅÎÉÑ:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off ÎÉËÏÇÄÁ ÎÅ ÓÏÚÄÁ×ÁÔØ ÒÅÚÅÒ×ÎÙÈ ËÏÐÉÊ (ÄÁÖÅ ÅÓÌÉ\n"
+" ÕËÁÚÁÎ ËÌÀÞ --backup)\n"
+" numbered, t ÓÏÚÄÁ×ÁÔØ ÎÕÍÅÒÏ×ÁÎÎÙÅ ËÏÐÉÉ\n"
+" existing, nil ÅÓÌÉ ÓÕÝÅÓÔ×ÕÀÔ ÎÕÍÅÒÏ×ÁÎÎÙÅ ËÏÐÉÉ, ÔÏ ÓÏÚÄÁ×ÁÔØ\n"
+" ÎÕÍÅÒÏ×ÁÎÎÙÅ ÉÎÁÞÅ ÓÏÚÄÁ×ÁÔØ ÐÒÏÓÔÙÅ\n"
+" simple. never ×ÓÅÇÄÁ ÓÏÚÄÁ×ÁÔØ ÐÒÏÓÔÙÅ ËÏÐÉÉ\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"ëÏÇÄÁ ÚÁÄÁÎÙ ËÌÀÞÉ -f É -b, É SOURCE ÓÏ×ÐÁÄÁÅÔ Ó DEST cp ÓÏÚÄÁÅÔ ÒÅÚÅÒ×ÎÕÀ\n"
+"ËÏÐÉÀ DEST.\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ÓÏÈÒÁÎÉÔØ ×ÒÅÍÅÎÎÙÅ ÍÅÔËÉ ÄÌÑ %s"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ÓÏÈÒÁÎÉÔØ ÐÒÁ×Á ÄÏÓÔÕÐÁ ÄÌÑ %s"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ËÁÔÁÌÏÇ %s"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s ÓÕÝÅÓÔ×ÕÅÔ, ÎÏ ÎÅ Ñ×ÌÑÅÔÓÑ ËÁÔÁÌÏÇÏÍ"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "ÏÂÒÁÝÅÎÉÅ Ë %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, c-format
+msgid "missing file operand"
+msgstr "ÐÒÏÐÕÝÅÎ ÏÐÅÒÁÎÄ, ÚÁÄÁÀÝÉÊ ÆÁÊÌ"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, c-format
+msgid "missing destination file operand after %s"
+msgstr "ÐÏÓÌÅ %s ÐÒÏÐÕÝÅÎ ÏÐÅÒÁÎÄ, ÚÁÄÁÀÝÉÊ ÃÅÌÅ×ÏÊ ÆÁÊÌ"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr "îÅÌØÚÑ ÓÏÞÅÔÁÔØ --target-directory (-t) É --no-target-directory (-T)"
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, c-format
+msgid "target %s is not a directory"
+msgstr "ÕËÁÚÁÎÎÁÑ ÃÅÌØ %s ÎÅ Ñ×ÌÑÅÔÓÑ ËÁÔÁÌÏÇÏÍ"
+
+#: src/cp.c:697
+#, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "ÐÒÉ ÚÁÄÁÎÎÏÍ --parents ÎÁÚÎÁÞÅÎÉÅ ÄÏÌÖÎÏ ÂÙÔØ ËÁÔÁÌÏÇÏÍ"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr "ËÌÀÞ --reply ÕÓÔÁÒÅÌ, ÉÓÐÏÌØÚÕÊÔÅ ×ÍÅÓÔÏ ÎÅÇÏ -i ÉÌÉ -f"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, c-format
+msgid "multiple target directories specified"
+msgstr "ÚÁÄÁÎÏ ÎÅÓËÏÌØËÏ ÃÅÌÅ×ÙÈ ËÁÔÁÌÏÇÏ×"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÖÅÓÔËÕÀ É ÓÉÍ×ÏÌØÎÕÀ ÓÓÙÌËÕ ÏÄÎÏ×ÒÅÍÅÎÎÏ"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "ÔÉÐ ÒÅÚÅÒ×ÎÏÊ ËÏÐÉÉ"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "××ÏÄ ÓÔÁÌ ÎÅÄÏÓÔÕÐÅÎ"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: ÎÏÍÅÒ ÓÔÒÏËÉ ×ÎÅ ÄÏÐÕÓÔÉÍÙÈ ÐÒÅÄÅÌÏ×"
+
+#: src/csplit.c:709
+#, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: %s: ÎÏÍÅÒ ÓÔÒÏËÉ ×ÎÅ ÄÏÐÕÓÔÉÍÙÈ ÐÒÅÄÅÌÏ×"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr " ÐÒÉ ÐÏ×ÔÏÒÅ %s\n"
+
+#: src/csplit.c:755
+#, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: %s: ÓÏ×ÐÁÄÅÎÉÅ ÎÅ ÎÁÊÄÅÎÏ"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "ÏÛÉÂËÁ ÐÏÉÓËÁ ÒÅÇÕÌÑÒÎÏÇÏ ×ÙÒÁÖÅÎÉÑ"
+
+#: src/csplit.c:984
+#, c-format
+msgid "write error for %s"
+msgstr "ÏÛÉÂËÁ ÚÁÐÉÓÉ ÄÌÑ %s"
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: ÐÏÓÌÅ ÒÁÚÄÅÌÉÔÅÌÑ ÏÖÉÄÁÅÔÓÑ ÃÅÌÏÅ ÞÉÓÌÏ"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: ÐÒÉ ÚÁÄÁÎÉÉ ÞÉÓÌÁ ÐÏ×ÔÏÒÏ× ÎÅÏÂÈÏÄÉÍÁ `}'"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s: ÍÅÖÄÕ `{' É `}' ÄÏÌÖÎÏ ÂÙÔØ ÃÅÌÏÅ ÞÉÓÌÏ"
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: ÐÒÏÐÕÝÅÎ ÚÁËÒÙ×ÁÀÝÉÊ ÒÁÚÄÅÌÉÔÅÌØ `%c'"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÒÅÇÕÌÑÒÎÏÅ ×ÙÒÁÖÅÎÉÅ: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÙÊ ÏÂÒÁÚÅÃ"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: ÎÏÍÅÒ ÓÔÒÏËÉ ÄÏÌÖÅÎ ÂÙÔØ ÂÏÌØÛÅ ÎÕÌÑ"
+
+#: src/csplit.c:1172
+#, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "ÎÏÍÅÒ ÓÔÒÏËÉ %s ÍÅÎØÛÅ ÎÏÍÅÒÁ ÐÒÅÄÙÄÕÝÅÊ ÓÔÒÏËÉ, %s"
+
+#: src/csplit.c:1178
+#, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÎÏÍÅÒ ÓÔÒÏËÉ %s ÒÁ×ÅÎ ÐÒÅÄÙÄÕÝÅÍÕ ÎÏÍÅÒÕ ÓÔÒÏËÉ"
+
+#: src/csplit.c:1231
+#, c-format
+msgid "invalid format width"
+msgstr "ÎÅ×ÅÒÎÁÑ ÛÉÒÉÎÁ × ÆÏÒÍÁÔÅ"
+
+#: src/csplit.c:1252
+#, c-format
+msgid "invalid format precision"
+msgstr "ÎÅ×ÅÒÎÁÑ ÔÏÞÎÏÓÔØ × ÆÏÒÍÁÔÅ"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "ÐÒÏÐÕÝÅÎ ÏÐÉÓÁÔÅÌØ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ × ÓÕÆÆÉËÓÅ"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "ÎÅ×ÅÒÎÙÊ ÏÐÉÓÁÔÅÌØ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ × ÓÕÆÆÉËÓÅ: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "ÎÅ×ÅÒÎÙÊ ÏÐÉÓÁÔÅÌØ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ × ÓÕÆÆÉËÓÅ: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÏÐÉÓÁÎÉÊ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ (%%) × ÓÕÆÆÉËÓÅ"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "ÐÒÏÐÕÝÅÎÏ ÏÐÉÓÁÎÉÅ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ (%%) × ÓÕÆÆÉËÓÅ"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÞÉÓÌÏ"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... æáêì ïâòáúåã...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"÷Ù×ÏÄÉÔ ÞÁÓÔÉ æáêìá, ÒÁÚÄÅÌÅÎÎÙÅ ïâòáúãïí (ïâòáúãáíé), × ÆÁÊÌÙ `xx00',\n"
+"`xx01', ... É ÐÅÞÁÔÁÅÔ ÞÉÓÌÏ ÂÁÊÔ × ËÁÖÄÏÊ ÞÁÓÔÉ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ.\n"
+"\n"
+
+#: src/csplit.c:1486
+#, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=æïòíáô ÉÓÐÏÌØÚÏ×ÁÔØ æïòíáô ËÁË × sprintf ×ÍÅÓÔÏ %02d\n"
+" -f, --prefix=ðòåæéëó ÉÓÐÏÌØÚÏ×ÁÔØ ðòåæéëó ×ÍÅÓÔÏ `xx'\n"
+" -k, --keep-files ÎÅ ÕÄÁÌÑÔØ ×ÙÈÏÄÎÙÅ ÆÁÊÌÙ ÐÒÉ ÏÛÉÂËÅ\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=ãéæòù ÉÓÐÏÌØÚÏ×ÁÔØ ÚÁÄÁÎÎÏÅ ÞÉÓÌÏ ãéæò ×ÍÅÓÔÏ Ä×ÕÈ\n"
+" -s, --quiet, --silent ÎÅ ÐÅÞÁÔÁÔØ ÒÁÚÍÅÒÙ ×ÙÈÏÄÎÙÈ ÆÁÊÌÏ×\n"
+" -z, --elide-empty-files ÕÄÁÌÑÔØ ÐÕÓÔÙÅ ×ÙÈÏÄÎÙÅ ÆÁÊÌÙ\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"åÓÌÉ æáêì ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ. ïâòáúåã ÚÁÄÁÅÔÓÑ ÓÌÅÄÕÀÝÉÍ\n"
+"ÏÂÒÁÚÏÍ:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" ãåìïå ËÏÐÉÒÏ×ÁÔØ ÄÏ ÓÔÒÏËÉ Ó ÚÁÄÁÎÎÙÍ ÎÏÍÅÒÏÍ, ÎÏ ÎÅ "
+"×ËÌÀÞÉÔÅÌØÎÏ\n"
+" /REGEXP/[óä÷éç] ËÏÐÉÒÏ×ÁÔØ ÄÏ ÓÏ×ÐÁ×ÛÅÊ ÓÔÒÏËÉ, ÎÏ ÎÅ ×ËÌÀÞÉÔÅÌØÎÏ\n"
+" %%REGEXP%%[óä÷éç] ÐÒÏÐÕÓÔÉÔØ ÄÏ ÓÏ×ÐÁ×ÛÅÊ ÓÔÒÏËÉ, ÎÏ ÎÅ ×ËÌÀÞÉÔÅÌØÎÏ\n"
+" {ãåìïå} ÐÏ×ÔÏÒÉÔØ ÐÒÅÄÙÄÕÝÉÊ ÏÂÒÁÚÅà ÚÁÄÁÎÎÏÅ ÞÉÓÌÏ ÒÁÚ\n"
+" {*} ÐÏ×ÔÏÒÉÔØ ÐÒÅÄÙÄÕÝÉÊ ÏÂÒÁÚÅà ÎÁÉÂÏÌØÛÅÅ ×ÏÚÍÏÖÎÏÅ ÞÉÓÌÏ "
+"ÒÁÚ\n"
+"\n"
+"äÏÐÏÌÎÉÔÅÌØÎÙÊ óä÷éç ÓÔÒÏË -- ÜÔÏ ÏÂÑÚÁÔÅÌØÎÙÊ ÓÉÍ×ÏÌ `+' ÉÌÉ `-' Ó "
+"ÐÏÓÌÅÄÕÀÝÉÍ\n"
+"ÐÏÌÏÖÉÔÅÌØÎÙÍ ÃÅÌÙÍ ÞÉÓÌÏÍ.\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [æáêì]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ ×ÙÂÒÁÎÎÙÅ ÞÁÓÔÉ ÓÔÒÏË ÉÚ ËÁÖÄÏÇÏ æáêìá ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ.\n"
+"\n"
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=óðéóïë ×ÙÂÒÁÔØ ÔÏÌØËÏ ÚÁÄÁÎÎÙÅ ÂÁÊÔÙ\n"
+" -c, --characters=óðéóïë ×ÙÂÒÁÔØ ÔÏÌØËÏ ÚÁÄÁÎÎÙÅ ÚÎÁËÉ\n"
+" -d, --delimiter=òáúäåìéôåìø ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÒÁÚÄÅÌÅÎÉÑ ÐÏÌÅÊ "
+"òáúäåìéôåìø\n"
+" ×ÍÅÓÔÏ ÔÁÂÕÌÑÃÉÉ\n"
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=óðéóïë ×ÙÂÒÁÔØ ÔÏÌØËÏ ÚÁÄÁÎÎÙÅ ÐÏÌÑ; ÔÁËÖÅ "
+"ÐÅÞÁÔÁÔØ\n"
+" ×ÓÅ ÓÔÒÏËÉ, ÎÅ ÓÏÄÅÒÖÁÝÉÅ ÒÁÚÄÅÌÉÔÅÌÅÊ, "
+"ÅÓÌÉ\n"
+" ÔÏÌØËÏ ÎÅ ÚÁÄÁÎ ËÌÀÞ -s\n"
+" -n (ÉÇÎÏÒÉÒÕÅÔÓÑ)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+" --complement ÄÏÐÏÌÎÉÔØ ÍÎÏÖÅÓÔ×Ï ×ÙÂÒÁÎÎÙÈ ÂÁÊÔ, ÚÎÁËÏ× ÉÌÉ "
+"ÐÏÌÅÊ.\n"
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited ÎÅ ÐÅÞÁÔÁÔØ ÓÔÒÏËÉ, ÎÅ ÓÏÄÅÒÖÁÝÉÅ "
+"ÒÁÚÄÅÌÉÔÅÌÅÊ\n"
+" --output-delimiter=óôòïëá ÉÓÐÏÌØÚÏ×ÁÔØ óôòïëõ ÄÌÑ ÒÁÚÄÅÌÅÎÉÑ ÐÏÌÅÊ "
+"ÐÒÉ\n"
+" ×Ù×ÏÄÅ, ÐÏ ÕÍÏÌÞÁÎÉÀ ÉÓÐÏÌØÚÕÅÔÓÑ "
+"ÒÁÚÄÅÌÉÔÅÌØ\n"
+" ÄÌÑ ××ÏÄÁ\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+"\n"
+"éÓÐÏÌØÚÕÊÔÅ ÏÄÉÎ É ÔÏÌØËÏ ÏÄÉÎ ÉÚ ËÌÀÞÅÊ -b, -c ÉÌÉ -f. óðéóëé\n"
+"ÓÏÓÔÏÑÔ ÉÚ ÄÉÁÐÁÚÏÎÁ ÉÌÉ ÎÅÓËÏÌØËÉÈ ÄÉÁÐÁÚÏÎÏ×, ÒÁÚÄÅÌÅÎÎÙÈ ÚÁÐÑÔÙÍÉ.\n"
+"÷ÙÂÒÁÎÎÙÅ ÞÁÓÔÉ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ ÐÅÞÁÔÁÀÔÓÑ × ÔÏÍ ÐÏÒÑÄËÅ, × ËÏÔÏÒÏÍ ÏÎÉ\n"
+"ÐÏÑ×ÌÑÀÔÓÑ ÎÁ ×ÈÏÄÅ, É ÐÅÞÁÔÁÀÔÓÑ ÒÏ×ÎÏ ÏÄÉÎ ÒÁÚ.\n"
+
+#: src/cut.c:227
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"äÉÁÐÁÚÏÎÙ ÚÁÄÁÀÔÓÑ ÓÌÅÄÕÀÝÉÍ ÏÂÒÁÚÏÍ:\n"
+"\n"
+" î î-ÎÙÊ ÂÁÊÔ, ÚÎÁË ÉÌÉ ÐÏÌÅ; ÏÔÓÞÉÔÙ×ÁÅÔÓÑ ÏÔ 1\n"
+" î- ÏÔ î-ÎÏÇÏ ÂÁÊÔÁ, ÚÎÁËÁ ÉÌÉ ÐÏÌÑ ÄÏ ËÏÎÃÁ ÓÔÒÏËÉ\n"
+" î-í ÏÔ î-ÎÏÇÏ ÄÏ í-ÎÏÇÏ (×ËÌÀÞÉÔÅÌØÎÏ) ÂÁÊÔÁ, ÚÎÁËÁ ÉÌÉ ÐÏÌÑ\n"
+" -í ÏÔ ÐÅÒ×ÏÇÏ ÄÏ í-ÎÏÇÏ (×ËÌÀÞÉÔÅÌØÎÏ) ÂÁÊÔÁ, ÚÎÁËÁ ÉÌÉ ÐÏÌÑ\n"
+"\n"
+"åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "ÎÅÐÒÁ×ÉÌØÎÙÊ ÓÐÉÓÏË ÂÁÊÔÏ× ÉÌÉ ÐÏÌÅÊ"
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr "ÂÁÊÔÏ×ÏÅ ÓÍÅÝÅÎÉÅ %s ÓÌÉÛËÏÍ ×ÅÌÉËÏ"
+
+#: src/cut.c:472
+#, c-format
+msgid "field number %s is too large"
+msgstr "ÎÏÍÅÒ ÐÏÌÑ %s ÓÌÉÛËÏÍ ×ÅÌÉË"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "ÍÏÖÎÏ ÚÁÄÁÔØ ÔÏÌØËÏ ÏÄÉÎ ÔÉÐ ÓÐÉÓËÁ"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "ÒÁÚÄÅÌÉÔÅÌØ ÄÏÌÖÅÎ ÂÙÔØ ÏÄÎÉÍ ÓÉÍ×ÏÌÏÍ"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "×Ù ÄÏÌÖÎÙ ÚÁÄÁÔØ ÓÐÉÓÏË ÂÁÊÔ, ÓÉÍ×ÏÌÏ× ÉÌÉ ÐÏÌÅÊ"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr ""
+"ÒÁÚÄÅÌÉÔÅÌØ ÄÌÑ ×ÈÏÄÎÙÈ ÄÁÎÎÙÈ ÍÏÖÎÏ ÚÁÄÁ×ÁÔØ ÔÏÌØËÏ ÐÒÉ ÏÂÒÁÂÏÔËÅ ÐÏÌÅÊ"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"ÚÁÐÒÅÝÅÎÉÅ ×Ù×ÏÄÁ ÓÔÒÏË, ÎÅ ÓÏÄÅÒÖÁÝÉÈ ÒÁÚÄÅÌÉÔÅÌÅÊ,\n"
+"ÉÍÅÅÔ ÓÍÙÓÌ ÔÏÌØËÏ ÐÒÉ ÒÁÂÏÔÅ Ó ÐÏÌÑÍÉ"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "ÏÔÓÕÔÓÔ×ÕÅÔ ÓÐÉÓÏË ÐÏÌÅÊ"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "ÏÔÓÕÔÓÔ×ÕÅÔ ÓÐÉÓÏË ÐÏÚÉÃÉÊ"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [+æïòíáô]\n"
+" ÉÌÉ: %s [-u|--utc|--universal] [ííääÞÞÍÍ[[÷÷]çç][.ÓÓ]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"÷Ù×ÏÄÉÔ ÔÅËÕÝÅÅ ×ÒÅÍÑ × ÚÁÄÁÎÎÏÍ æïòíáôå, ÉÌÉ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÓÉÓÔÅÍÎÏÅ "
+"×ÒÅÍÑ.\n"
+"\n"
+" -d, --date=óôòïëá ÐÏËÁÚÁÔØ ÎÅ ÔÅËÕÝÅÅ ×ÒÅÍÑ, Á ×ÒÅÍÑ, ÏÐÉÓÁÎÎÏÅ\n"
+" ÚÁÄÁÎÎÏÊ óôòïëïê\n"
+" -f, --file=æáêì ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÐÒÉÍÅÎÅÎÉÀ --date ÄÌÑ ËÁÖÄÏÊ\n"
+" ÓÔÒÏËÉ æáêìá\n"
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+" -r, --reference=æáêì ÐÏËÁÚÁÔØ ×ÒÅÍÑ ÐÏÓÌÅÄÎÅÇÏ ÉÚÍÅÎÅÎÉÑ æáêìá\n"
+" -R, --rfc-2822 ×Ù×ÏÄÉÔØ ×ÒÅÍÑ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó RFC-2822\n"
+" ðÒÉÍÅÒ: Mon, 07 Aug 2006 12:34:56 -0600\n"
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+" --rfc-3339=óðåã ×Ù×ÅÓÔÉ ÄÁÔÕ/×ÒÅÍÑ × ÆÏÒÍÁÔÅ RFC 3339\n"
+" óðåã=`date', `seconds' ÉÌÉ `ns' ÄÌÑ ÐÏÌÕÞÅÎÉÑ\n"
+" ÄÁÔÙ É ×ÒÅÍÅÎÉ Ó ÕËÁÚÁÎÎÏÊ ÔÏÞÎÏÓÔØÀ.\n"
+" ëÏÍÐÏÎÅÎÔÙ ÄÁÔÙ É ×ÒÅÍÅÎÉ ÒÁÚÄÅÌÑÀÔÓÑ ÏÄÎÉÍ\n"
+" ÐÒÏÂÅÌÏÍ: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=óôòïëá ÕÓÔÁÎÏ×ÉÔØ ×ÒÅÍÑ, ÏÐÉÓÁÎÎÏÅ óôòïëïê\n"
+" -u, --utc, --universal ÐÏËÁÚÁÔØ ÉÌÉ ÕÓÔÁÎÏ×ÉÔØ ÕÎÉ×ÅÒÓÁÌØÎÏÅ\n"
+" ËÏÏÒÄÉÎÉÒÏ×ÁÎÎÏÅ ×ÒÅÍÑ\n"
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"\n"
+"æïòíáô ÕÐÒÁ×ÌÑÅÔ ×Ù×ÏÄÏÍ. åÄÉÎÓÔ×ÅÎÎÙÊ ËÌÀÞ, ÄÏÐÕÓÔÉÍÙÊ ÄÌÑ ×ÔÏÒÏÊ\n"
+"ÆÏÒÍÙ, ÚÁÄÁÅÔ ËÏÏÒÄÉÎÉÒÏ×ÁÎÎÏÅ ÕÎÉ×ÅÒÓÁÌØÎÏÅ ×ÒÅÍÑ. ÷ÏÓÐÒÉÎÉÍÁÀÔÓÑ\n"
+"ÓÌÅÄÕÀÝÉÅ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ:\n"
+"\n"
+" %% ÚÎÁË %\n"
+" %a ÍÅÓÔÎÏÅ ÓÏËÒÁÝÅÎÎÏÅ ÎÁÚ×ÁÎÉÅ ÄÎÑ ÎÅÄÅÌÉ (ÎÁÐÒ., ×ÓË)\n"
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A ÍÅÓÔÎÏÅ ÐÏÌÎÏÅ ÎÁÚ×ÁÎÉÅ ÄÎÑ ÎÅÄÅÌÉ (ÎÁÐÒ., ÐÏÎÅÄÅÌØÎÉË)\n"
+" %b ÍÅÓÔÎÏÅ ÓÏËÒÁÝÅÎÎÏÅ ÎÁÚ×ÁÎÉÅ ÍÅÓÑÃÁ (ÎÁÐÒ., ÑÎ×)\n"
+" %B ÍÅÓÔÎÏÅ ÐÏÌÎÏÅ ÎÁÚ×ÁÎÉÅ ÍÅÓÑÃÁ (ÎÁÐÒ., ÑÎ×ÁÒØ)\n"
+" %c ÍÅÓÔÎÏÅ ×ÒÅÍÑ É ÄÁÔÁ (ÎÁÐÒ., þÔ× 3 íÁÒ 23:05:25 2005)\n"
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C ×ÅË; ËÁË %Y, ÎÏ ÏÐÕÓËÁÀÔÓÑ Ä×Å ÐÏÓÌÅÄÎÉÅ ÃÉÆÒÙ (ÎÁÐÒ., 21)\n"
+" %d ÄÅÎØ ÍÅÓÑÃÁ (ÎÁÐÒ., 01)\n"
+" %D ÄÁÔÁ; ÁÎÁÌÏÇÉÞÎÏ %m/%d/%y\n"
+" %e ÄÅÎØ ÍÅÓÑÃÁ, ÄÏÐÏÌÎÅÎÎÙÊ ÐÒÏÂÅÌÁÍÉ; ÁÎÁÌÏÇÉÞÎÏ %_d\n"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+" %F ÐÏÌÎÁÑ ÄÁÔÁ; ÜË×É×ÁÌÅÎÔÎÏ %Y-%m-%d\n"
+" %g ÐÏÓÌÅÄÎÉÅ Ä×Å ÃÉÆÒÙ ÇÏÄÁ ÄÌÑ ÎÏÍÅÒÁ ÎÅÄÅÌÉ ISO (ÓÍ. %G)\n"
+" %G ÇÏÄ ÄÌÑ ÎÏÍÅÒÁ ÎÅÄÅÌÉ ISO (ÓÍ. %V); ÏÂÙÞÎÏ ÂÙ×ÁÅÔ ÐÏÌÅÚÎÏ ÔÏÌØËÏ Ó %"
+"V\n"
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h ÔÏ ÖÅ, ÞÔÏ É %b\n"
+" %H ÞÁÓ (00..23)\n"
+" %I ÞÁÓ (01..12)\n"
+" %j ÎÏÍÅÒ ÄÎÑ × ÇÏÄÕ (001..366)\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k ÞÁÓ ( 0..23)\n"
+" %l ÞÁÓ ( 1..12)\n"
+" %m ÍÅÓÑÃ (01..12)\n"
+" %M ÍÉÎÕÔÙ (00..59)\n"
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+" %n ÎÏ×ÁÑ ÓÔÒÏËÁ\n"
+" %N ÎÁÎÏÓÅËÕÎÄÙ (000000000..999999999)\n"
+" %p ÍÅÓÔÎÙÊ ÜË×É×ÁÌÅÎÔ AM ÉÌÉ PM; ÐÕÓÔÏ ÅÓÌÉ ÎÅÉÚ×ÅÓÔÎÏ\n"
+" %P ËÁË %p, ÎÏ ÓÔÒÏÞÎÙÍÉ ÂÕË×ÁÍÉ\n"
+" %r ×ÒÅÍÑ ÐÏ ÌÏËÁÌÉ, 12-ÞÁÓÏ×ÏÊ ÆÏÒÍÁÔ (ÎÁÐÒ., 11:11:04 PM)\n"
+" %R ÞÁÓÙ É ÍÉÎÕÔÙ ÐÏ ÌÏËÁÌÉ, 24-ÞÁÓÏ×ÏÊ ÆÏÒÍÁÔ; ÁÎÁÌÏÇ %H:%M\n"
+" %s ÞÉÓÌÏ ÓÅËÕÎÄ, ÉÓÔÅËÛÉÈ Ó 1970-01-01 00:00:00 UTC\n"
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+" %S ÓÅËÕÎÄÙ (00..60)\n"
+" %t ÔÁÂÕÌÑÃÉÑ\n"
+" %T ×ÒÅÍÑ, ÁÎÁÌÏÇ %H:%M:%S\n"
+" %u ÄÅÎØ ÎÅÄÅÌÉ (1..7); 1 ÏÂÏÚÎÁÞÁÅÔ ÐÏÎÅÄÅÌØÎÉË\n"
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U ÎÏÍÅÒ ÎÅÄÅÌÉ × ÇÏÄÕ, ÅÓÌÉ ÐÅÒ×ÙÊ ÄÅÎØ ÎÅÄÅÌÉ -- ×ÏÓËÒÅÓÅÎØÅ (00..53)\n"
+" %V ÎÏÍÅÒ ÎÅÄÅÌÉ ÐÏ ISO, ÅÓÌÉ ÐÅÒ×ÙÊ ÄÅÎØ ÎÅÄÅÌÉ -- ÐÏÎÅÄÅÌØÎÉË (01..52)\n"
+" %w ÄÅÎØ ÎÅÄÅÌÉ (0..6), 0 ÏÚÎÁÞÁÅÔ ×ÏÓËÒÅÓÅÎØÅ\n"
+" %W ÎÏÍÅÒ ÎÅÄÅÌÉ × ÇÏÄÕ, ÅÓÌÉ ÐÅÒ×ÙÊ ÄÅÎØ ÎÅÄÅÌÉ -- ÐÏÎÅÄÅÌØÎÉË (00..53)\n"
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x ÍÅÓÔÎÏÅ ÐÒÅÄÓÔÁ×ÌÅÎÉÅ ÄÁÔÙ (ÎÁÐÒ., ÄÄ/ÍÍ/ÇÇ)\n"
+" %X ÍÅÓÔÎÏÅ ÐÒÅÄÓÔÁ×ÌÅÎÉÅ ×ÒÅÍÅÎÉ (ÎÁÐÒ., 23:13:48)\n"
+" %y ÐÏÓÌÅÄÎÉÅ Ä×Å ÃÉÆÒÙ ÇÏÄÁ (00..99)\n"
+" %Y ÇÏÄ\n"
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+" %z +ÞÞÍÍ ÞÁÓÏ×ÏÊ ÐÏÑÓ (ÎÁÐÒ., -0400)\n"
+" %:z +ÞÞ:ÍÍ ÞÁÓÏ×ÏÊ ÐÏÑÓ (ÎÁÐÒ., -04:00)\n"
+" %::z +ÞÞ:ÍÍ:ÓÓ ÞÁÓÏ×ÏÊ ÐÏÑÓ (ÎÁÐÒ., -04:00:00)\n"
+" %:::z ÞÁÓÏ×ÏÊ ÐÏÑÓ Ó ÄÏÓÔÁÔÏÞÎÙÍ ËÏÌÉÞÅÓÔ×ÏÍ Ä×ÏÅÔÏÞÉÊ (ÎÁÐÒ., -04, "
+"+05:30)\n"
+" %Z ÁÌÆÁ×ÉÔÎÏÅ ÓÏËÒÁÝÅÎÉÅ ÞÁÓÏ×ÏÇÏ ÐÏÑÓÁ (ÎÁÐÒ., EDT)\n"
+"\n"
+"ðÏ ÕÍÏÌÞÁÎÉÀ date ÄÏÐÏÌÎÑÅÔ ÞÉÓÌÏ×ÙÅ ÐÏÌÑ ÎÕÌÑÍÉ.\n"
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+"ðÏÓÌÅ `%' ÍÏÇÕÔ ÉÄÔÉ ÓÌÅÄÕÀÝÉÅ ÎÅÏÂÑÚÁÔÅÌØÎÙÅ ÆÌÁÇÉ:\n"
+"\n"
+" - (ÄÅÆÉÓ) ÎÅ ÄÏÐÏÌÎÑÔØ ÜÔÏ ÐÏÌÅ\n"
+" _ (ÐÏÄÞÅÒË) ÄÏÐÏÌÎÑÔØ ÐÒÏÂÅÌÁÍÉ\n"
+" 0 (ÎÏÌØ) ÄÏÐÏÌÎÑÔØ ÎÕÌÑÍÉ\n"
+" ^ ÉÓÐÏÌØÚÏ×ÁÔØ ×ÅÒÈÎÉÊ ÒÅÇÉÓÔÒ, ÅÓÌÉ ×ÏÚÍÏÖÎÏ\n"
+" # ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÏÔÉ×ÏÐÏÌÏÖÎÙÊ ÒÅÇÉÓÔÒ, ÅÓÌÉ ×ÏÚÍÏÖÎÏ\n"
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+"\n"
+"ðÏÓÌÅ ÌÀÂÏÇÏ ÉÚ ÆÌÁÇÏ× ÉÄÅÔ ÎÅÏÂÑÚÁÔÅÌØÎÁÑ ÛÉÒÉÎÁ ÐÏÌÑ × ×ÉÄÅ ÄÅÓÑÔÉÞÎÏÇÏ "
+"ÞÉÓÌÁ;\n"
+"ÚÁÔÅÍ ÎÅÏÂÑÚÁÔÅÌØÎÙÊ ÍÏÄÉÆÉËÁÔÏÒ, ÏÄÉÎ ÉÚ ÓÌÅÄÕÀÝÉÈ:\n"
+"E -- ÅÓÌÉ ×ÏÚÍÏÖÎÏ, ÉÓÐÏÌØÚÏ×ÁÔØ ÁÌØÔÅÒÎÁÔÉ×ÎÏÅ ÐÒÅÄÓÔÁ×ÌÅÎÉÅ ÄÌÑ ÔÅËÕÝÅÊ "
+"ÌÏËÁÌÉ\n"
+"O -- ÅÓÌÉ ×ÏÚÍÏÖÎÏ, ÉÓÐÏÌØÚÏ×ÁÔØ ÁÌØÔÅÒÎÁÔÉ×ÎÙÅ ÞÉÓÌÏ×ÙÅ ÓÉÍ×ÏÌÙ ÌÏËÁÌÉ.\n"
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ"
+
+#: src/date.c:297 src/date.c:517
+#, c-format
+msgid "invalid date %s"
+msgstr "ÎÅ×ÅÒÎÁÑ ÄÁÔÁ %s"
+
+#: src/date.c:408 src/date.c:442
+#, c-format
+msgid "multiple output formats specified"
+msgstr "ÚÁÄÁÎÏ ÎÅÓËÏÌØËÏ ×ÙÈÏÄÎÙÈ ÆÏÒÍÁÔÏ×"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "ËÌÀÞÉ ÄÌÑ ×Ù×ÏÄÁ ÄÁÔÙ ×ÚÁÉÍÎÏ ÉÓËÌÀÞÁÀÔ ÄÒÕÇ ÄÒÕÇÁ"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr ""
+"ËÌÀÞÉ ÄÌÑ ÕÓÔÁÎÏ×ËÉ É ÄÌÑ ÏÔÏÂÒÁÖÅÎÉÑ ×ÒÅÍÅÎÉ ÎÅ ÍÏÇÕÔ ÐÒÉÍÅÎÑÔØÓÑ ×ÍÅÓÔÅ"
+
+#: src/date.c:448
+#, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"ÁÒÇÕÍÅÎÔ %s ÎÅ ÎÁÞÉÎÁÅÔÓÑ ÓÏ ÚÎÁËÁ `+';\n"
+"ðÒÉ ÚÁÄÁÎÉÉ ÄÁÔÙ, ËÁÖÄÙÊ ÁÒÇÕÍÅÎÔ, ÎÅ Ñ×ÌÑÀÝÉÊÓÑ ËÌÀÞÏÍ, ÄÏÌÖÅÎ ÂÙÔØ "
+"ÓÔÒÏËÏÊ\n"
+"ÆÏÒÍÁÔÁ É ÎÁÞÉÎÁÔØÓÑ ÚÎÁËÏÍ `+'."
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÄÁÔÕ"
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "×ÒÅÍÑ %s ×ÎÅ ÄÏÐÕÓÔÉÍÏÇÏ ÄÉÁÐÁÚÏÎÁ"
+
+#: src/dd.c:404
+#, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ïðåòáîä]...\n"
+" ÉÌÉ: %s ëìàþ\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"ëÏÐÉÒÕÅÔ ÆÁÊÌ, ÐÒÅÏÂÒÁÚÕÅÔ É ÆÏÒÍÁÔÉÒÕÅÔ × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÏÐÅÒÁÎÄÏ×.\n"
+"\n"
+" bs=þéóìï ÐÒÉÎÕÄÉÔÅÌØÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ibs=þéóìï É obs=þéóìï\n"
+" cbs=þéóìï ÐÒÅÏÂÒÁÚÏ×Ù×ÁÔØ ÚÁÄÁÎÎÏÅ þéóìõ ÂÁÊÔ ÚÁ ÒÁÚ\n"
+" conv=óðéóïë ÐÒÅÏÂÒÁÚÏ×Ù×ÁÔØ ÆÁÊÌ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ ÓÏ óðéóëïí ÓÉÍ×ÏÌÏ×,\n"
+" ÜÌÅÍÅÎÔÙ ÐÅÒÅÞÉÓÌÑÀÔÓÑ ÞÅÒÅÚ ÚÁÐÑÔÕÀ\n"
+" count=þéóìï ËÏÐÉÒÏ×ÁÔØ ÔÏÌØËÏ ÚÁÄÁÎÎÏÅ þéóìï ×ÈÏÄÎÙÈ ÂÌÏËÏ×\n"
+" ibs=þéóìï ÓÞÉÔÙ×ÁÔØ ÚÁÄÁÎÎÏÅ þéóìï ÂÁÊÔ ÚÁ ÒÁÚ\n"
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=æáêì ÞÉÔÁÔØ æáêì, Á ÎÅ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ\n"
+" iflag=óðéóïë ÞÉÔÁÔØ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ ÓÏ óðéóëïí ÓÉÍ×ÏÌÏ×,\n"
+" ÜÌÅÍÅÎÔÙ ÐÅÒÅÞÉÓÌÑÀÔÓÑ ÞÅÒÅÚ ÚÁÐÑÔÕÀ\n"
+" obs=þéóìï ÚÁÐÉÓÙ×ÁÔØ ÚÁÄÁÎÎÏÅ þéóìï ÂÁÊÔ ÚÁ ÒÁÚ\n"
+" of=æáêì ÚÁÐÉÓÙ×ÁÔØ × æáêì, Á ÎÅ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ\n"
+" oflag=óðéóïë ÚÁÐÉÓÙ×ÁÔØ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ ÓÏ ÓÐÉÓËÏÍ ÓÉÍ×ÏÌÏ×,\n"
+" ÜÌÅÍÅÎÔÙ ÐÅÒÅÞÉÓÌÑÀÔÓÑ ÞÅÒÅÚ ÚÁÐÑÔÕÀ\n"
+" seek=þéóìï ÐÒÏÐÕÓÔÉÔØ ÄÏ ÎÁÞÁÌÁ ×Ù×ÏÄÁ ÚÁÄÁÎÎÏÅ þéóìï ÂÌÏËÏ× ÒÁÚÍÅÒÁ "
+"obs\n"
+" skip=þéóìï ÐÒÏÐÕÓÔÉÔØ Ó ÎÁÞÁÌÁ ××ÏÄÁ ÚÁÄÁÎÎÏÅ þéóìï ÂÌÏËÏ× ÒÁÚÍÅÒÁ "
+"ibs\n"
+" status=noxfer ÎÅ ×Ù×ÏÄÉÔØ ÓÔÁÔÉÓÔÉËÕ ÐÅÒÅÄÁÞÉ\n"
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"ðÏÓÌÅ þéóìá ÂÌÏËÏ× É ÂÁÊÔ ÍÏÖÅÔ ÓÔÏÑÔØ ÏÄÉÎ ÉÚ ÕÍÎÏÖÁÀÝÉÊ ÓÕÆÆÉËÓÏ×:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024, GB\n"
+"1000*1000*1000, G 1024*1024*1024 É ÔÁË ÄÁÌÅÅ ÄÌÑ T, P, E, Z, Y.\n"
+"\n"
+"ëÁÖÄÙÊ ÜÌÅÍÅÎÔ óðéóëá ÄÌÑ conv ÍÏÖÅÔ ÂÙÔØ:\n"
+"\n"
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii ÉÚ EBCDIC × ASCII\n"
+" ebcdic ÉÚ ASCII × EBCDIC\n"
+" ibm ÉÚ ASCII × ÁÌØÔÅÒÎÁÔÉ×ÎÕÀ EBCDIC\n"
+" block ÚÁÐÏÌÎÑÔØ ÚÁÐÉÓÉ, ÚÁËÁÎÞÉ×ÁÀÝÉÅÓÑ ÐÅÒÅ×ÏÄÏÍ ÓÔÒÏËÉ, ÐÒÏÂÅÌÁÍÉ "
+"ÄÏ\n"
+" ÒÁÚÍÅÒÁ cbs\n"
+" unblock ÚÁÍÅÎÑÔØ ÚÁ×ÅÒÛÁÀÝÉÅ ÐÒÏÂÅÌÙ × ÚÁÐÉÓÑÈ ÒÁÚÍÅÒÁ cbs ÎÁ ÐÅÒÅ×ÏÄ "
+"ÓÔÒÏËÉ\n"
+" lcase ÉÚÍÅÎÑÔØ ÒÅÇÉÓÔÒ Ó ×ÅÒÈÎÅÇÏ ÎÁ ÎÉÖÎÉÊ\n"
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+" nocreat ÎÅ ÓÏÚÄÁ×ÁÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ\n"
+" excl ÚÁ×ÅÒÛÁÔØÓÑ ÎÅÕÓÐÅÈÏÍ, ÅÓÌÉ ×ÙÈÏÄÎÏÊ ÆÁÊÌ ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ\n"
+" notrunc ÎÅ ÏÂÒÅÚÁÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ\n"
+" ucase ÉÚÍÅÎÑÔØ ÒÅÇÉÓÔÒ Ó ÎÉÖÎÅÇÏ ÎÁ ×ÅÒÈÎÉÊ\n"
+" swab ÍÅÎÑÔØ ÍÅÓÔÁÍÉ ËÁÖÄÕÀ ÐÁÒÕ ×ÈÏÄÎÙÈ ÂÁÊÔÏ×\n"
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+" noerror ÐÒÏÄÏÌÖÁÔØ ÐÏÓÌÅ ÏÛÉÂÏË ÞÔÅÎÉÑ\n"
+" sync ÄÏÐÏÌÎÑÔØ ËÁÖÄÙÊ ×ÈÏÄÎÏÊ ÂÌÏË ÎÕÌÑÍÉ ÄÏ ÒÁÚÍÅÒÁ ibs; ÅÓÌÉ\n"
+" ÉÓÐÏÌØÚÕÅÔÓÑ ×ÍÅÓÔÅ Ó block ÉÌÉ unblock, ÄÏÐÏÌÎÑÔØ ÐÒÏÂÅÌÁÍÉ\n"
+" fdatasync ÆÉÚÉÞÅÓËÉ ÚÁÐÉÓÁÔØ ×ÙÈÏÄÎÏÊ ÆÁÊÌ ÐÅÒÅÄ ÚÁ×ÅÒÛÅÎÉÅÍ\n"
+" fsync ÁÎÁÌÏÇÉÞÎÏ, ÎÏ ÚÁÐÉÓÁÔØ ÔÁËÖÅ ÍÅÔÁÄÁÎÎÙÅ\n"
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+"\n"
+"óÉÍ×ÏÌ æìáç ÍÏÖÅÔ ÂÙÔØ ÔÁËÉÍ:\n"
+"\n"
+" append ÒÅÖÉÍ ÄÏÂÁ×ÌÅÎÉÑ (ÉÍÅÅÔ ÓÍÙÓÌ ÄÌÑ ×Ù×ÏÄÁ; ÒÅËÏÍÅÎÄÕÅÔÓÑ "
+"conv=notrunc)\n"
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr " direct ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÑÍÏÊ ××ÏÄ/×Ù×ÏÄ ÄÌÑ ÄÁÎÎÙÈ\n"
+
+#: src/dd.c:468
+msgid " directory fail unless a directory\n"
+msgstr " directory ×ÙÄÁ×ÁÔØ ÏÛÉÂËÕ, ÅÓÌÉ ÜÔÏ ÎÅ ËÁÔÁÌÏÇ\n"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr " dsync ÉÓÐÏÌØÚÏ×ÁÔØ ÓÉÎÈÒÏÎÉÚÉÒÏ×ÁÎÎÙÊ ××ÏÄ/×Ù×ÏÄ ÄÌÑ ÄÁÎÎÙÈ\n"
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr " sync ÔÏ ÖÅ, ÎÏ ÔÁË ÖÅ É ÄÌÑ ÍÅÔÁÄÁÎÎÙÈ\n"
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr " nonblock ÉÓÐÏÌØÚÏ×ÁÔØ ÎÅÂÌÏËÉÒÕÀÝÉÊ ××ÏÄ/×Ù×ÏÄ\n"
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr " noatime ÎÅ ÏÂÎÏ×ÌÑÔØ ×ÒÅÍÑ ÐÏÓÌÅÄÎÅÇÏ ÄÏÓÔÕÐÁ\n"
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr " noctty ÎÅ ÎÁÚÎÁÞÁÔØ ÕÐÒÁ×ÌÑÀÝÉÊ ÔÅÒÍÉÎÁÌ ÉÚ ÆÁÊÌÁ\n"
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr " nofollow ÎÅ ÓÌÅÄÏ×ÁÔØ ÐÏ ÓÉÍ×ÏÌØÎÙÍ ÓÓÙÌËÁÍ\n"
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr " nolinks ×ÙÄÁ×ÁÔØ ÏÛÉÂËÕ, ÅÓÌÉ ÎÁÊÄÅÎÏ ÎÅÓËÏÌØËÏ ÓÓÙÌÏË\n"
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr " binary ÉÓÐÏÌØÚÏ×ÁÔØ ÂÉÎÁÒÎÙÊ ××ÏÄ/×Ù×ÏÄ ÄÌÑ ÄÁÎÎÙÈ\n"
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr " text ÉÓÐÏÌØÚÏ×ÁÔØ ÔÅËÓÔÏ×ÙÊ ××ÏÄ/×Ù×ÏÄ ÄÌÑ ÄÁÎÎÙÈ\n"
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+"\n"
+"åÓÌÉ ÐÏÓÌÁÔØ ÒÁÂÏÔÁÀÝÅÍÕ ÐÒÏÃÅÓÓÕ `dd' ÓÉÇÎÁÌ %s, ÏÎ ÎÁÐÅÞÁÔÁÅÔ ÎÁ\n"
+"ÓÔÁÎÄÁÒÔÎÙÊ ÐÏÔÏË ÏÛÉÂÏË ÓÔÁÔÉÓÔÉËÕ ××ÏÄÁ/×Ù×ÏÄÁ É ÐÒÏÄÏÌÖÉÔ\n"
+"ËÏÐÉÒÏ×ÁÎÉÅ.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 ×ÈÏÄÎÙÈ ÚÁÐÉÓÅÊ\n"
+" 18335302+0 ×ÙÈÏÄÎÙÈ ÚÁÐÉÓÅÊ\n"
+" 9387674624 ÂÁÊÔÁ (9.4 GB) ÓËÏÐÉÒÏ×ÁÎÏ, 34.6279 ÓÅËÕÎÄÙ, 271 MB/s\n"
+"\n"
+"ëÌÀÞÉ:\n"
+"\n"
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+"%<PRIuMAX>+%<PRIuMAX> ÚÁÐÉÓÅÊ ÓÞÉÔÁÎÏ\n"
+"%<PRIuMAX>+%<PRIuMAX> ÚÁÐÉÓÅÊ ÎÁÐÉÓÁÎÏ\n"
+
+#: src/dd.c:553
+#, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "%<PRIuMAX> ÕÓÅÞÅÎÎÁÑ ÚÁÐÉÓØ\n"
+msgstr[1] "%<PRIuMAX> ÕÓÅÞÅÎÎÙÅ ÚÁÐÉÓÉ\n"
+msgstr[2] "%<PRIuMAX> ÕÓÅÞÅÎÎÙÈ ÚÁÐÉÓÅÊ\n"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] " ÓËÏÐÉÒÏ×ÁÎ %<PRIuMAX> ÂÁÊÔ (%s)"
+msgstr[1] " ÓËÏÐÉÒÏ×ÁÎÏ %<PRIuMAX> ÂÁÊÔÁ (%s)"
+msgstr[2] " ÓËÏÐÉÒÏ×ÁÎÏ %<PRIuMAX> ÂÁÊÔ (%s)"
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr "âÅÓËÏÎÅÞÎÏÓÔØ"
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ", %g c, %s/c\n"
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "ÚÁËÒÙÔÉÅ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ %s"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "ÚÁËÒÙÔÉÅ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ %s"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "ÚÁÐÉÓØ × %s"
+
+#: src/dd.c:886
+#, c-format
+msgid "unrecognized operand %s"
+msgstr "ÏÐÅÒÁÎÄ %s ÎÅ ÒÁÓÐÏÚÎÁÎ"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "ÎÅÄÏÐÕÓÔÉÍÏÅ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ: %s"
+
+#: src/dd.c:900
+#, c-format
+msgid "invalid input flag: %s"
+msgstr "ÎÅÄÏÐÕÓÔÉÍÙÊ ÆÌÁÇ ×ÈÏÄÁ: %s"
+
+#: src/dd.c:903
+#, c-format
+msgid "invalid output flag: %s"
+msgstr "ÎÅÄÏÐÕÓÔÉÍÙÊ ÆÌÁÇ ×ÙÈÏÄÁ: %s"
+
+#: src/dd.c:906
+#, c-format
+msgid "invalid status flag: %s"
+msgstr "ÎÅÄÏÐÕÓÔÉÍÙÊ ÆÌÁÇ ÓÔÁÔÕÓÁ: %s"
+
+#: src/dd.c:942
+#, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "ÏÐÅÒÁÎÄ %s=%s ÎÅ ÒÁÓÐÏÚÎÁÎ"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÎÏÍÅÒ %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr "ÎÅÌØÚÑ ÓÏÞÅÔÁÔØ ÌÀÂÙÅ Ä×Á ÉÚ {ascii,ebcdic,ibm}"
+
+#: src/dd.c:973
+#, c-format
+msgid "cannot combine block and unblock"
+msgstr "ÎÅÌØÚÑ ÓÏ×ÍÅÝÁÔØ block É unblock"
+
+#: src/dd.c:975
+#, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "ÎÅÌØÚÑ ÓÏ×ÍÅÝÁÔØ lcase É ucase"
+
+#: src/dd.c:977
+#, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "ÎÅÌØÚÑ ÓÏ×ÍÅÝÁÔØ excl É nocreat"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"×ÎÉÍÁÎÉÅ: ÏÂÈÏÄÉÍ ÏÛÉÂËÕ lseek × ÑÄÒÅ ÄÌÑ ÆÁÊÌÁ (%s)\n"
+" mt_type=0x%0lx -- ÓÍ. <sys/mtio.h> ÄÌÑ ÓÐÉÓËÁ ÔÉÐÏ×"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, c-format
+msgid "%s: cannot seek"
+msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÓÍÅÓÔÉÔØ ÕËÁÚÁÔÅÌØ ÆÁÊÌÁ"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÓÄ×ÉÇÁ ÐÒÉ ÞÔÅÎÉÉ ÆÁÊÌÁ %s"
+
+#: src/dd.c:1229
+#, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÓÍÅÝÅÎÉÅ ÆÁÊÌÁ ÓÔÁÌÏ ÎÅ×ÅÒÎÙÍ ÐÏÓÌÅ ÏÛÉÂËÉ ÞÔÅÎÉÑ"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÂÏÊÔÉ ÏÛÉÂËÕ ÑÄÒÁ"
+
+#: src/dd.c:1376
+#, c-format
+msgid "setting flags for %s"
+msgstr "ÕÓÔÁÎÏ×ËÁ ÆÌÁÇÏ× ÄÌÑ %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr "ÏÐÅÒÁÃÉÑ fdatasync ÄÌÑ %s ÎÅÕÓÐÅÛÎÁ"
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr "ÏÐÅÒÁÃÉÑ fsync ÄÌÑ %s ÎÅÕÓÐÅÛÎÁ"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "ÏÔËÒÙÔÉÅ %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+"ÓÍÅÝÅÎÉÅ ÓÌÉÛËÏÍ ×ÅÌÉËÏ: ÎÅ×ÏÚÍÏÖÎÏ ÏÂÒÅÚÁÔØ ÄÏ ×ÅÌÉÞÉÎÙ seek=%<PRIuMAX> (%"
+"lu-ÂÁÊÔÎÙÈ) ÂÌÏËÏ×"
+
+#: src/dd.c:1730
+#, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "ÏÔÓÅÞÅÎÉÅ ÎÁ %<PRIuMAX> ÂÁÊÔ × ×ÙÈÏÄÎÏÍ ÆÁÊÌÅ %s"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "æ. ÓÉÓÔÅÍÁ ôÉÐ "
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " éÎÏÄÏ× éÓÐÏÌ ó×Ï éÓÐ %%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " òÁÚÍ éÓÐ äÏÓÔ éÓÐ%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " òÁÚÍ éÓÐ äÏÓÔ éÓÐ%%"
+
+#: src/df.c:165
+#, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %s-ÂÌÏËÏ× éÓÐ äÏÓÔÕÐÎÏ ÷ÓÅÇÏ"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " %4s-ÂÌÏËÏ× éÓÐ äÏÓÔÕÐÎÏ éÓÐ%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " ÓÍÏÎÔÉÒÏ×ÁÎÁ ÎÁ\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "ÔÅËÕÝÉÊ ËÁÔÁÌÏÇ ÎÅÄÏÓÔÕÐÅÎ"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÍÅÎÉÔØ ËÁÔÁÌÏÇ ÎÁ %s"
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ stat ÄÌÑ ÔÅËÕÝÅÇÏ ËÁÔÁÌÏÇÁ (ÓÅÊÞÁÓ %s)"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"ðÏËÁÚÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÅ, ÎÁ ËÏÔÏÒÏÊ ÒÁÓÐÏÌÏÖÅÎ ËÁÖÄÙÊ\n"
+"ÉÚ æáêìï÷, ÉÌÉ, ÐÏ ÕÍÏÌÞÁÎÉÀ, ÏÂÏ ×ÓÅÈ ÆÁÊÌÏ×ÙÈ ÓÉÓÔÅÍÁÈ.\n"
+"\n"
+
+#: src/df.c:749
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all ×ËÌÀÞÁÔØ ×ÉÒÔÕÁÌØÎÙÅ ÆÁÊÌÏ×ÙÅ ÓÉÓÔÅÍÙ\n"
+" -B, --block-size=òáúíåò ÉÓÐÏÌØÚÏ×ÁÔØ ÂÌÏËÉ ÕËÁÚÁÎÎÏÇÏ òáúíåòá (× ÂÁÊÔÁÈ)\n"
+" -h, --human-readable ÐÅÞÁÔÁÔØ ÒÁÚÍÅÒÙ × ÕÄÏÂÎÏÍ ÄÌÑ ÞÅÌÏ×ÅËÁ ×ÉÄÅ\n"
+" (ÎÁÐÒÉÍÅÒ, 1K 234M 2G)\n"
+" -H, --si ÔÏ ÖÅ, ÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÔÅÐÅÎÉ 1000, Á ÎÅ 1024\n"
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes ×Ù×ÅÓÔÉ ÉÎÆÏÒÍÁÃÉÀ Ï ÉÎÄÅËÓÎÙÈ ÄÅÓËÒÉÐÔÏÒÁÈ, Á ÎÅ "
+"ÏÂ\n"
+" ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÂÌÏËÏ×\n"
+" -k ÁÎÁÌÏÇ --block-size=1K\n"
+" -l, --local ÐÅÒÅÞÉÓÌÉÔØ ÔÏÌØËÏ ÌÏËÁÌØÎÙÅ ÆÁÊÌÏ×ÙÅ ÓÉÓÔÅÍÙ\n"
+" --no-sync ÎÅ ×ÙÚÙ×ÁÔØ sync ÐÅÒÅÄ ÐÏÌÕÞÅÎÉÅÍ ÉÎÆÏÒÍÁÃÉÉ ÏÂ\n"
+" ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÂÌÏËÏ× (ÐÏ ÕÍÏÌÞÁÎÉÀ)\n"
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability ×Ù×ÏÄÉÔØ × ÆÏÒÍÁÔÅ POSIX\n"
+" --sync ×ÙÚÙ×ÁÔØ sync ÐÅÒÅÄ ÐÏÌÕÞÅÎÉÅÍ ÉÎÆÏÒÍÁÃÉÉ ÏÂ\n"
+" ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÂÌÏËÏ×\n"
+" -t, --type=ôéð ÐÅÒÅÞÉÓÌÉÔØ ÔÏÌØËÏ ÆÁÊÌÏ×ÙÅ ÓÉÓÔÅÍÙ ÕËÁÚÁÎÎÏÇÏ ôéðá\n"
+" -T, --print-type ÐÅÞÁÔÁÔØ ÔÉÐ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ\n"
+" -x, --exclude-type=ôéð ÉÓËÌÀÞÉÔØ ÆÁÊÌÏ×ÙÅ ÓÉÓÔÅÍÙ ÕËÁÚÁÎÎÏÇÏ ôéðá\n"
+" -v (ÉÇÎÏÒÉÒÕÅÔÓÑ)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"òáúíåò ÍÏÖÅÔ ÂÙÔØ ÔÁËÉÍ (ÉÌÉ ÜÔÏ ÍÏÖÅÔ ÂÙÔØ ÃÅÌÏÅ ÞÉÓÌÏ, ÚÁ ËÏÔÏÒÙÍ\n"
+"ÍÏÖÅÔ ÓÌÅÄÏ×ÁÔØ ÏÄÎÏ ÉÚ ÐÅÒÅÞÉÓÌÅÎÎÏÇÏ): kB 1000, K 1024,\n"
+"MB 1000*1000, M 1024*1024 É ÔÁË ÄÁÌÅÅ ÄÌÑ G, T, P, E, Z, Y.\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr "ËÌÀÞ --kilobytes ÕÓÔÁÒÅÌ, ÉÓÐÏÌØÚÕÊÔÅ ×ÍÅÓÔÏ ÎÅÇÏ -k"
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "ÆÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÔÉÐÁ %s É ×ÙÂÒÁÎÁ, É ÉÓËÌÀÞÅÎÁ"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: "
+
+#: src/df.c:943
+#, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%sÏÛÉÂËÁ ÞÔÅÎÉÑ ÔÁÂÌÉÃÙ ÓÍÏÎÔÉÒÏ×ÁÎÎÙÈ ÆÁÊÌÏ×ÙÈ ÓÉÓÔÅÍ"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr "ÎÅ ÏÂÒÁÂÏÔÁÎÏ ÎÉ ÏÄÎÏÊ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ"
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [æáêì]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"÷ÙÄÁÅÔ ËÏÍÁÎÄÙ ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÐÅÒÅÍÅÎÎÏÊ ÏËÒÕÖÅÎÉÑ LS_COLORS.\n"
+"\n"
+"úÁÄÁÔØ ÆÏÒÍÁÔ ×Ù×ÏÄÁ:\n"
+" -b, --sh, --bourne-shell ×Ù×ÅÓÔÉ ËÏÄ ÄÌÑ ÕÓÔÁÎÏ×ËÉ LS_COLORS ×\n"
+" Bourne shell\n"
+" -c, --csh, --c-shell ×Ù×ÅÓÔÉ ËÏÄ ÄÌÑ ÕÓÔÁÎÏ×ËÉ LS_COLORS × C shell\n"
+" -p, --print-database ×Ù×ÅÓÔÉ ÕÓÔÁÎÏ×ËÉ ÐÏ ÕÍÏÌÞÁÎÉÀ\n"
+" --help ÐÏËÁÚÁÔØ ÐÏÍÏÝØ É ×ÙÊÔÉ\n"
+" --version ×Ù×ÅÓÔÉ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ É ×ÙÊÔÉ\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"åÓÌÉ ÕËÁÚÁÎ FILE, ÔÏ ÞÉÔÁÔØ ÅÇÏ ÞÔÏÂÙ ÕÚÎÁÔØ ËÁËÉÅ Ã×ÅÔÁ ËÁËÉÍ ÒÁÓÛÉÒÅÎÉÑÍ\n"
+"ÓÏÐÏÓÔÁ×ÌÅÎÙ. éÎÁÞÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÂÁÚÕ ÄÁÎÎÙÈ ÐÏ ÕÍÏÌÞÁÎÉÀ. äÌÑ ÂÏÌÅÅ\n"
+"ÄÅÔÁÌØÎÏÇÏ ÏÐÉÓÁÎÉÑ ÆÏÒÍÁÔÁ FILE ÚÁÐÕÓÔÉÔÅ dircolors --print-database.\n"
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s:%lu: ÎÅÐÒÁ×ÉÌØÎÁÑ ÓÔÒÏËÁ; ÐÒÏÐÕÝÅÎÁ ×ÔÏÒÁÑ ÌÅËÓÅÍÁ"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu ËÌÀÞÅ×ÏÅ ÓÌÏ×Ï %s ÎÅ ÒÁÓÐÏÚÎÁÎÏ"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<×ÎÕÔÒÅÎÎÉÊ>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"ËÌÀÞÉ ÄÌÑ ×Ù×ÏÄÁ ×ÎÕÔÒÅÎÎÅÊ ÂÁÚÙ ÄÁÎÎÙÈ dircolors É ËÌÀÞÉ ÄÌÑ ×ÙÂÏÒÁ\n"
+"ÓÉÎÔÁËÓÉÓÁ ÏÂÏÌÏÞËÉ ×ÚÁÉÍÎÏ ÉÓËÌÀÞÁÀÔ ÄÒÕÇ ÄÒÕÇÁ"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr "ïÐÅÒÁÎÄÙ-ÆÁÊÌÙ ÎÅÌØÚÑ ÓÏÞÅÔÁÔØ Ó --print-database (-p)."
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr ""
+"ÌÉÂÏ ÐÅÒÅÍÅÎÎÁÑ ÏËÒÕÖÅÎÉÑ SHELL ÏÔÓÕÔÓÔ×ÕÅÔ, ÌÉÂÏ ÎÅ ÚÁÄÁÎ ÔÉÐ ÉÎÔÅÒÐÒÅÔÁÔÏÒÁ"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s éíñ\n"
+" ÉÌÉ: %s ëìàþ\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"÷Ù×ÏÄÉÔ éíñ, ÕÄÁÌÉ× ËÏÍÐÏÎÅÎÔÕ ÓÐÒÁ×Á ÏÔ ÐÏÓÌÅÄÎÅÊ ËÏÓÏÊ ÞÅÒÔÙ; ÅÓÌÉ éíñ ÎÅ\n"
+"ÓÏÄÅÒÖÉÔ ËÏÓÏÊ ÞÅÒÔÙ, ×Ù×ÏÄÉÔ `.' (ÔÏ ÅÓÔØ ÔÅËÕÝÉÊ ËÁÔÁÌÏÇ).\n"
+"\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+"\n"
+"ðÒÉÍÅÒÙ:\n"
+" %s /usr/bin/sort ÷Ù×ÏÄÉÔ \"/usr/bin\".\n"
+" %s stdio.h ÷Ù×ÏÄÉÔ \".\".\n"
+
+#: src/du.c:279 src/wc.c:108
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [æáêì]...\n"
+" ÉÌÉ: %s [ëìàþ]... --files0-from=æ\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"óÕÍÍÉÒÕÅÔ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÄÉÓËÏ×ÏÇÏ ÐÒÏÓÔÒÁÎÓÔ×Á ËÁÖÄÏÇÏ FILE, Ó ËÁÔÁÌÏÇÁÍÉ.\n"
+"\n"
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+" -a, --all ÐÅÞÁÔÁÔØ ÏÂßÅÍ ÄÌÑ ×ÓÅÈ ÆÁÊÌÏ×, Á ÎÅ ÔÏÌØËÏ "
+"ËÁÔÁÌÏÇÏ×\n"
+" --apparent-size ÐÅÞÁÔÁÔØ ÄÅÊÓÔ×ÉÔÅÌØÎÙÅ ÒÁÚÍÅÒÙ, Á ÎÅ ÚÁÎÉÍÁÅÍÏÅ ÎÁ\n"
+" ÄÉÓËÅ ÍÅÓÔÏ; ÈÏÔÑ ÄÅÊÓÔ×ÉÔÅÌØÎÙÊ ÒÁÚÍÅÒ ÏÂÙÞÎÏ\n"
+" ÍÅÎØÛÅ, ÉÎÏÇÄÁ ÏÎ ÍÏÖÅÔ ÂÙÔØ ÂÏÌØÛÅ ÉÚ-ÚÁ ÄÙÒ ×\n"
+" ÆÁÊÌÁÈ, ×ÎÕÔÒÅÎÎÅÊ ÆÒÁÇÍÅÎÔÁÃÉÉ, ËÏÓ×ÅÎÎÙÈ ÂÌÏËÏ× "
+"É\n"
+" ÔÏÍÕ ÐÏÄÏÂÎÏÇÏ\n"
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+" -B, --block-size=òáúíåò ÉÓÐÏÌØÚÏ×ÁÔØ ÂÌÏËÉ ÕËÁÚÁÎÎÏÇÏ òáúíåòá (× ÂÁÊÔÁÈ)\n"
+" -b, --bytes ÜË×É×ÁÌÅÎÔÎÏ `--apparent-size --block-size=1'\n"
+" -c, --total ÐÅÞÁÔÁÔØ ÏÂÝÉÊ ÉÔÏÇ\n"
+" -D, --dereference-args ÓÌÅÄÏ×ÁÔØ ÐÏ ÓÉÍ×ÏÌØÎÙÍ ÓÓÙÌËÁÍ\n"
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+" --files0-from=æ ×Ù×ÅÓÔÉ ÏÔÞÅÔ Ï ÆÁÊÌÁÈ, ÞØÉ ÉÍÅÎÁ (ÚÁ×ÅÒÛÅÎÎÙÅ "
+"ÎÕÌÅÍ)\n"
+" ÐÅÒÅÞÉÓÌÅÎÙ × ÆÁÊÌÅ æ\n"
+" -H ËÁË --si, ÎÏ ×ÙÄÁÅÔ ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ; ÓËÏÒÏ ÓÍÙÓÌ "
+"ÜÔÏÇÏ\n"
+" ËÌÀÞÁ ÂÕÄÅÔ ÉÚÍÅÎÅÎ, É ÏÎ ÓÔÁÎÅÔ ÜË×É×ÁÌÅÎÔÅÎ\n"
+" ËÌÀÞÕ --dereference-args (-D)\n"
+" -h, --human-readable ÐÅÞÁÔÁÔØ ÒÁÚÍÅÒÙ × ÕÄÏÂÎÏÍ ÄÌÑ ÞÅÌÏ×ÅËÁ ×ÉÄÅ\n"
+" (ÎÁÐÒÉÍÅÒ, 1K 234M 2G)\n"
+" --si ËÁË -h, ÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÔÅÐÅÎÉ 1000, Á ÎÅ 1024\n"
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+" -k ÓÉÎÏÎÉÍ --block-size=1K\n"
+" -l, --count-links ÓËÌÁÄÙ×ÁÔØ ÒÁÚÍÅÒÙ, ÅÓÌÉ ÅÓÔØ ÎÅÓËÏÌØËÏ ÖÅÓÔËÉÈ "
+"ÓÓÙÌÏË\n"
+" -m ÓÉÎÏÎÉÍ --block-size=1M\n"
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference ÒÁÚÙÍÅÎÏ×Ù×ÁÔØ ÓÉÍ×ÏÌØÎÙÅ ÓÓÙÌËÉ\n"
+" -P, --no-dereference ÎÅ ÓÌÅÄÏ×ÁÔØ ÐÏ ÓÉÍ×ÏÌØÎÙÍ ÓÓÙÌËÁÍ (ÐÏ ÕÍÏÌÞÁÎÉÀ)\n"
+" -0, --null ÚÁ×ÅÒÛÁÔØ ×ÙÈÏÄÎÕÀ ÓÔÒÏËÕ ÎÕÌÅÍ, Á ÎÅ ÐÅÒÅ×ÏÄÏÍ "
+"ÓÔÒÏËÉ\n"
+" -S, --separate-dirs ÎÅ ×ËÌÀÞÁÔØ ÒÁÚÍÅÒ ËÁÔÁÌÏÇÏ×\n"
+" -s, --summarize ÐÏËÁÚÙ×ÁÔØ ÔÏÌØËÏ ÉÔÏÇ ÄÌÑ ËÁÖÄÏÇÏ ÁÒÇÕÍÅÎÔÁ\n"
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system ÐÒÏÐÕÓËÁÔØ ËÁÔÁÌÏÇÉ ÎÁ ÄÒÕÇÉÈ ÆÁÊÌÏ×ÙÈ ÓÉÓÔÅÍÁÈ\n"
+" -X æáêì, --exclude-from=æáêì ÉÓËÌÀÞÁÔØ ÆÁÊÌÙ, ÓÏ×ÐÁÄÁÀÝÉÅ Ó ËÁËÉÍ-ÌÉÂÏ\n"
+" ÏÂÒÁÚÃÏÍ ÉÚ æáêìá\n"
+" --exclude=ïâòáúåã ÉÓËÌÀÞÁÔØ ÆÁÊÌÙ, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÅ ïâòáúãõ\n"
+" --max-depth=N ÐÏÄ×ÏÄÉÔØ ÉÔÏÇ ÄÌÑ ËÁÔÁÌÏÇÁ (ÉÌÉ ÆÁÊÌÁ, Ó --all),\n"
+" ÔÏÌØËÏ ÅÓÌÉ ÏÎ ÎÁ N ÉÌÉ ÍÅÎØÛÅ ÕÒÏ×ÎÅÊ ÎÉÖÅ,\n"
+" ÞÅÍ ÁÒÇÕÍÅÎÔ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ; --max-depth=0\n"
+" ÜË×É×ÁÌÅÎÔÎÏ --summarize\n"
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+" --time ÐÏËÁÚÙ×ÁÔØ ×ÒÅÍÑ ÐÏÓÌÅÄÎÅÊ ÍÏÄÉÆÉËÁÃÉÉ ×ÓÅÈ ÆÁÊÌÏ× "
+"×\n"
+" ËÁÔÁÌÏÇÅ ÉÌÉ ×ÓÅÈ ÅÇÏ ÐÏÄËÁÔÁÌÏÇÏ×\n"
+" --time=óìï÷ï ÐÏËÁÚÙ×ÁÔØ ÕËÁÚÁÎÎÏÅ óìï÷ïí ×ÒÅÍÑ, Á ÎÅ ×ÒÅÍÑ \n"
+" ÍÏÄÉÆÉËÁÃÉÉ: atime, access, use, ctime ÉÌÉ status\n"
+" --time-style=óôéìø ÐÏËÁÚÙ×ÁÔØ ×ÒÅÍÑ, ÉÓÐÏÌØÚÕÑ óôéìø:\n"
+" full-iso, long-iso, iso, +æïòíáô\n"
+" æïòíáô ÉÎÔÅÒÐÒÅÔÉÒÕÅÔÓÑ ËÁË × `date'\n"
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "ÉÔÏÇÏ"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+"ðòåäõðòåöäåîéå: ÉÓÐÏÌØÚÕÊÔÅ --si, Á ÎÅ -H; ÓÍÙÓÌ ËÌÀÞÁ -H ÓËÏÒÏ ÂÕÄÅÔ\n"
+"ÉÚÍÅÎÅÎ É ÓÔÁÎÅÔ ÔÁËÉÍ ÖÅ ËÁË Õ --dereference-args (-D)"
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "ÎÅÄÏÐÕÓÔÉÍÁÑ ÍÁËÓÉÍÁÌØÎÁÑ ÇÌÕÂÉÎÁ %s"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr "ËÌÀÞ --megabytes ÕÓÔÁÒÅÌ, ÉÓÐÏÌØÚÕÊÔÅ ×ÍÅÓÔÏ ÎÅÇÏ -m"
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÄÎÏ×ÒÅÍÅÎÎÏ ÐÏÄ×ÏÄÉÔØ ÉÔÏÇ É ÐÏËÁÚÙ×ÁÔØ ×ÓÅ ÜÌÅÍÅÎÔÙ"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÐÏÄ×ÅÄÅÎÉÅ ÉÔÏÇÁ ÜÔÏ ÔÏ ÖÅ ÓÁÍÏÅ, ÞÔÏ É --max-depth=0"
+
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÐÏÄ×ÅÄÅÎÉÅ ÉÔÏÇÁ ËÏÎÆÌÉËÔÕÅÔ Ó --max-depth=%lu"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr "ïÐÅÒÁÎÄÙ-ÆÁÊÌÙ ÎÅÌØÚÑ ÓÏÞÅÔÁÔØ Ó --files0-from."
+
+#: src/du.c:960 src/wc.c:662
+#, c-format
+msgid "cannot read file names from %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ ÉÍÅÎÁ ÆÁÊÌÏ× ÉÚ %s"
+
+#: src/du.c:1000 src/du.c:1003
+msgid "invalid zero-length file name"
+msgstr "ÎÅ×ÅÒÎÏÅ ÉÍÑ ÆÁÊÌÁ ÎÕÌÅ×ÏÊ ÄÌÉÎÙ"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [óôòïëá]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ óôòïëõ(óôòïëé) ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ.\n"
+"\n"
+" -n ÎÅ ÐÅÞÁÔÁÔØ ÚÁ×ÅÒÛÁÀÝÉÊ ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ\n"
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+" -e ÉÎÔÅÒÐÒÅÔÉÒÏ×ÁÔØ ÕÐÒÁ×ÌÑÀÝÉÅ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ (ÐÏ "
+"ÕÍÏÌÞÁÎÉÀ)\n"
+" -E ÎÅ ÉÎÔÅÒÐÒÅÔÉÒÏ×ÁÔØ ÕÐÒÁ×ÌÑÀÝÉÅ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ\n"
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"åÓÌÉ ÄÅÊÓÔ×ÕÅÔ ËÌÀÞ -e, ÒÁÓÐÏÚÎÁÀÔÓÑ ÓÌÅÄÕÀÝÉÅ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ:\n"
+"\n"
+" \\0îîî ÚÎÁË Ó ×ÏÓØÍÅÒÉÞÎÙÍ ASCII-ËÏÄÏÍ îîî\n"
+" \\\\ ÏÂÒÁÔÎÁÑ ËÏÓÁÑ ÞÅÒÔÁ\n"
+" \\a Ú×ÕËÏ×ÏÊ ÓÉÇÎÁÌ (BEL)\n"
+" \\b ÚÁÂÏÊ\n"
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c ÐÏÄÁ×ÉÔØ ÚÁ×ÅÒÛÁÀÝÉÊ ÓÉÍ×ÏÌ ÎÏ×ÏÊ ÓÔÒÏËÉ\n"
+" \\f ÎÏ×ÁÑ ÓÔÒÁÎÉÃÁ\n"
+" \\n ÎÏ×ÁÑ ÓÔÒÏËÁ\n"
+" \\r ×ÏÚ×ÒÁÔ ËÁÒÅÔËÉ\n"
+" \\t ÇÏÒÉÚÏÎÔÁÌØÎÁÑ ÔÁÂÕÌÑÃÉÑ\n"
+" \\v ×ÅÒÔÉËÁÌØÎÁÑ ÔÁÂÕÌÑÃÉÑ\n"
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [-] [éíñ=úîáþåîéå]... [ëïíáîäá [áòç]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"ðÒÉÓ×ÁÉ×ÁÅÔ ËÁÖÄÏÍÕ éíåîé ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÅ úîáþåîéå É ÚÁÐÕÓËÁÅÔ ëïíáîäõ × "
+"ÜÔÏÊ\n"
+"ÓÒÅÄÅ.\n"
+"\n"
+" -i, --ignore-environment ÎÁÞÁÔØ Ó ÐÕÓÔÏÊ ÓÒÅÄÏÊ\n"
+" -u, --unset=éíñ ÕÄÁÌÉÔØ ÉÚ ÓÒÅÄÙ éíñ\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"ðÒÏÓÔÏ `-' -- ÓÉÎÏÎÉÍ ÄÌÑ `-i'. åÓÌÉ ÎÅ ÚÁÄÁÎÁ ëïíáîäá, ÐÅÞÁÔÁÅÔ "
+"ÐÏÌÕÞÉ×ÛÕÀÓÑ\n"
+"ÓÒÅÄÕ.\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"ðÒÅÏÂÒÁÚÕÅÔ ÚÎÁËÉ ÔÁÂÕÌÑÃÉÉ × ËÁÖÄÏÍ æáêìå × ÐÒÏÂÅÌÙ É ÐÅÞÁÔÁÅÔ ÎÁ "
+"ÓÔÁÎÄÁÒÔÎÙÊ\n"
+"×Ù×ÏÄ. åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ.\n"
+"\n"
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial ÎÅ ÐÒÅÏÂÒÁÚÏ×Ù×ÁÔØ ÚÎÁËÉ ÔÁÂÕÌÑÃÉÉ ÐÏÓÌÅ ÐÒÏÂÅÌØÎÙÈ "
+"ÚÎÁËÏ×\n"
+" -t, --tabs=þéóìï ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÛÉÒÉÎÕ ÔÁÂÕÌÑÃÉÉ, ÐÏ ÕÍÏÌÞÁÎÉÀ 8\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+" -t, --tabs=óðéóïë ÉÓÐÏÌØÚÏ×ÁÔØ ÒÁÚÄÅÌÅÎÎÙÊ ÚÁÐÑÔÙÍÉ ÓÐÉÓÏË ÐÏÚÉÃÉÊ "
+"ÔÁÂÕÌÑÃÉÉ\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr "ÒÁÚÍÅÒ ÔÁÂÕÌÑÃÉÉ ÓÌÉÛËÏÍ ×ÅÌÉË %s"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "ÒÁÚÍÅÒ ÔÁÂÕÌÑÃÉÉ ÓÏÄÅÒÖÉÔ ÎÅÄÏÐÕÓÔÉÍÙÊ ÚÎÁË (ÚÎÁËÉ): %s"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "ÒÁÚÍÅÒ ÔÁÂÕÌÑÃÉÉ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÒÁ×ÅÎ ÎÕÌÀ"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "ÎÏÍÅÒÁ ÐÏÚÉÃÉÊ ÔÁÂÕÌÑÃÉÉ ÄÏÌÖÎÙ ×ÏÚÒÁÓÔÁÔØ"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, c-format
+msgid "input line is too long"
+msgstr "×ÈÏÄÎÁÑ ÓÔÒÏËÁ ÓÌÉÛËÏÍ ×ÅÌÉËÁ"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s ÷ùòáöåîéå\n"
+" ÉÌÉ: %s ëìàþ\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"\n"
+"ðÅÞÁÔÁÅÔ ÚÎÁÞÅÎÉÅ ÷ùòáöåîéñ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ. îÉÖÅ ÐÕÓÔÙÍÉ ÓÔÒÏËÁÍÉ\n"
+"ÒÁÚÄÅÌÅÎÙ ÇÒÕÐÐÙ ÐÏ ×ÏÚÒÁÓÔÁÎÉÀ ÐÒÉÏÒÉÔÅÔÁ. äÏÐÕÓÔÉÍÙÅ ÷ùòáöåîéñ:\n"
+"\n"
+" áòç1 | áòç2 áòç1, ÅÓÌÉ ÏÎ ÏÔÌÉÞÅÎ ÏÔ ÎÕÌÑ, ÉÎÁÞÅ áòç2\n"
+"\n"
+" áòç1 & áòç2 áòç1, ÅÓÌÉ ÏÂÁ ÏÔÌÉÞÎÙ ÏÔ ÎÕÌÑ, ÉÎÁÞÅ 0\n"
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"\n"
+" áòç1 < áòç2 áòç1 ÍÅÎØÛÅ áòç2\n"
+" áòç1 <= áòç2 áòç1 ÍÅÎØÛÅ ÉÌÉ ÒÁ×ÅÎ áòç2\n"
+" áòç1 = áòç2 áòç1 ÒÁ×ÅÎ áòç2\n"
+" áòç1 != áòç2 áòç1 ÎÅ ÒÁ×ÅÎ áòç2\n"
+" áòç1 >= áòç2 áòç1 ÂÏÌØÛÅ ÉÌÉ ÒÁ×ÅÎ áòç2\n"
+" áòç1 > áòç2 áòç1 ÂÏÌØÛÅ áòç2\n"
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+"\n"
+" áòç1 + áòç2 ÁÒÉÆÍÅÔÉÞÅÓËÁÑ ÓÕÍÍÁ áòç1 É áòç2\n"
+" áòç1 - áòç2 ÁÒÉÆÍÅÔÉÞÅÓËÁÑ ÒÁÚÎÏÓÔØ áòç1 É áòç2\n"
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+"\n"
+" áòç1 * áòç2 ÁÒÉÆÍÅÔÉÞÅÓËÏÅ ÐÒÏÉÚ×ÅÄÅÎÉÅ áòç1 É áòç2\n"
+" áòç1 / áòç2 ÁÒÉÆÍÅÔÉÞÅÓËÏÅ ÞÁÓÔÎÏÅ áòç1 É áòç2\n"
+" áòç1 % Aòç2 ÁÒÉÆÍÅÔÉÞÅÓËÉÊ ÏÓÔÁÔÏË ÏÔ ÄÅÌÅÎÉÑ áòç1 ÎÁ áòç2\n"
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"\n"
+" óôòïëá : REGEXP ÐÒÏ×ÅÒËÁ ÓÏ×ÐÁÄÅÎÉÑ REGEXP Ó ÎÁÞÁÌÏÍ ÉÌÉ ËÏÎÃÏÍ óôòïëé\n"
+"\n"
+" match óôòïëá REGEXP ÔÏ ÖÅ, ÞÔÏ É óôòïëá : REGEXP\n"
+" substr óôòïëá ðïú äìéîá ÐÏÄÓÔÒÏËÁ óôòïëé, ÐÏÚÉÃÉÑ ÏÔÓÞÉÔÙ×ÁÅÔÓÑ ÏÔ 1\n"
+" index óôòïëá óéí÷ïìù ÐÏÚÉÃÉÑ × óôòïëå, ÇÄÅ ÐÅÒ×ÙÍ ÎÁÊÄÅÎ ÌÀÂÏÊ ÉÚ\n"
+" óéí÷ïìï÷, ÉÎÁÞÅ 0\n"
+" length óôòïëá ÄÌÉÎÁ óôòïëé\n"
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+" + ìåëóåíá ×ÏÓÐÒÉÎÉÍÁÔØ ìåëóåíõ ËÁË ÓÔÒÏËÕ, ÄÁÖÅ ÅÓÌÉ ÜÔÏ\n"
+" ËÌÀÞÅ×ÏÅ ÓÌÏ×Ï, ËÁË `match', ÉÌÉ ÏÐÅÒÁÔÏÒ, ËÁË "
+"`/'\n"
+"\n"
+" ( ÷ùòáöåîéå ) ÚÎÁÞÅÎÉÅ ÷ùòáöåîéñ\n"
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"ðÏÍÎÉÔÅ, ÞÔÏ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ × ÏÂÏÌÏÞËÅ ÎÅËÏÔÏÒÙÅ ÏÐÅÒÁÔÏÒÙ ÄÏÌÖÎÙ ÂÙÔØ "
+"×ÚÑÔÙ\n"
+"× ËÁ×ÙÞËÉ. åÓÌÉ ÏÂÁ ÁÒÇÕÍÅÎÔÁ áòç Ñ×ÌÑÀÔÓÑ ÞÉÓÌÁÍÉ, ÔÏ ÐÒÏÉÚ×ÏÄÉÔÓÑ\n"
+"ÁÒÉÆÍÅÔÉÞÅÓËÏÅ ÓÒÁ×ÎÅÎÉÅ, ÉÎÁÞÅ ÏÎÉ ÓÒÁ×ÎÉ×ÁÀÔÓÑ ËÁË ÓÔÒÏËÉ. óÏÐÏÓÔÁ×ÌÅÎÉÑ "
+"Ó\n"
+"ÏÂÒÁÚÃÏÍ ×ÏÚ×ÒÁÝÁÀÔ ÓÏ×ÐÁ×ÛÕÀ ÓÔÒÏËÕ ÍÅÖÄÕ \\( É \\) ÉÌÉ ÐÕÓÔÕÀ ÓÔÒÏËÕ;\n"
+"ÅÓÌÉ \\( É \\) ÎÅ ÉÓÐÏÌØÚÏ×ÁÎÙ, ÔÏ ×ÏÚ×ÒÁÝÁÅÔÓÑ ÞÉÓÌÏ ÓÏ×ÐÁ×ÛÉÈ ÓÉÍ×ÏÌÏ×.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+"\n"
+"÷ÙÈÏÄÎÏÊ ÓÔÁÔÕÓ ÒÁ×ÅÎ 0, ÅÓÌÉ ÷ùòáöåîéå ÎÅ ÐÕÓÔÏÅ É ÎÅ 0; 1, ÅÓÌÉ\n"
+"÷ùòáöåîéå ÐÕÓÔÏ ÉÌÉ 0; 2, ÅÓÌÉ ÷ùòáöåîéå ÓÉÎÔÁËÓÉÞÅÓËÉ ÎÅ×ÅÒÎÏ; É 3,\n"
+"ÅÓÌÉ ÓÌÕÞÉÔÓÑ ÏÛÉÂËÁ.\n"
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ"
+
+#: src/expr.c:468 src/ptx.c:292
+#, c-format
+msgid "error in regular expression matcher"
+msgstr "ÏÛÉÂËÁ × ÓÏÐÏÓÔÁ×ÉÔÅÌÅ ÒÅÇÕÌÑÒÎÙÈ ×ÙÒÁÖÅÎÉÊ"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "ÎÅÞÉÓÌÏ×ÏÊ ÁÒÇÕÍÅÎÔ"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "ÄÅÌÅÎÉÅ ÎÁ ÎÏÌØ"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [þéóìï]...\n"
+" ÉÌÉ: %s ëìàþ\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ ÐÒÏÓÔÙÅ ÍÎÏÖÉÔÅÌÉ ËÁÖÄÏÇÏ þéóìá.\n"
+"\n"
+
+#: src/factor.c:85
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+"ðÅÞÁÔÁÅÔ ÐÒÏÓÔÙÅ ÍÎÏÖÉÔÅÌÉ ÄÌÑ ËÁÖÄÏÇÏ ÚÁÄÁÎÎÏÇÏ ÃÅÌÏÇÏ þéóìá. åÓÌÉ\n"
+"ÁÒÇÕÍÅÎÔÙ ÎÅ ÚÁÄÁÎÙ, ÞÉÔÁÅÔ ÞÉÓÌÁ ÓÏ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s ÓÌÉÛËÏÍ ×ÅÌÉË"
+
+#: src/factor.c:158
+#, c-format
+msgid "%s is not a valid positive integer"
+msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ×ÅÒÎÙÍ ÃÅÌÙÍ ÐÏÌÏÖÉÔÅÌØÎÙÍ ÞÉÓÌÏÍ"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [-ãéæòù] [ëìàþ]... [æáêì]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"ðÅÒÅÆÏÒÍÁÔÉÒÕÅÔ ËÁÖÄÙÊ ÁÂÚÁÃ × æáêìå(ÁÈ) É ÐÅÞÁÔÁÅÔ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ.\n"
+"åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ.\n"
+"\n"
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin ÓÏÈÒÁÎÑÔØ ÏÔÓÔÕÐÙ Ä×ÕÈ ÐÅÒ×ÙÈ ÓÔÒÏË\n"
+" -p, --prefix=óôòïëá ÆÏÒÍÁÔÉÒÏ×ÁÔØ ÔÏÌØËÏ ÓÔÒÏËÉ, ÎÁÞÉÎÁÀÝÉÅÓÑ ÓÏ "
+"óôòïëé,\n"
+" ÓÏÈÒÁÎÑÑ ÐÒÉ ÜÔÏÍ ÐÒÅÆÉËÓ ÓÔÒÏË\n"
+" -s, --split-only ÒÁÚÂÉ×ÁÔØ ÄÌÉÎÎÙÅ ÓÔÒÏËÉ, ÎÏ ÎÅ ÚÁÐÏÌÎÑÔØ\n"
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph ÏÔÓÔÕÐ ÐÅÒ×ÏÊ ÓÔÒÏËÉ ÏÔÌÉÞÅÎ ÏÔ ÏÔÓÔÕÐÁ ×ÔÏÒÏÊ\n"
+" -u, --uniform-spacing ÏÄÉÎ ÐÒÏÂÅÌ ÐÏÓÌÅ ÓÌÏ×Á, Ä×Á ÐÏÓÌÅ ÐÒÅÄÌÏÖÅÎÉÑ\n"
+" -w, --width=þéóìï ÍÁËÓÉÍÁÌØÎÁÑ ÛÉÒÉÎÁ ÓÔÒÏËÉ (ÐÏ ÕÍÏÌÞÁÎÉÀ 75 "
+"ÓÔÏÌÂÃÏ×)\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+"ÎÅ×ÅÒÎÙÊ ËÌÀÞ -- %c; -ûéòéîá ÒÁÓÐÏÚÎÁÅÔÓÑ, ÔÏÌØËÏ ÅÓÌÉ ÜÔÏ ÐÅÒ×ÙÊ\n"
+"ÁÒÇÕÍÅÎÔ, × ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÐÉÛÉÔÅ -w N"
+
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr "ÎÅÄÏÐÕÓÔÉÍÁÑ ÛÉÒÉÎÁ: %s"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"òÁÚÂÉ×ÁÅÔ ÓÔÒÏËÉ × æáêìå(ÁÈ) (ÐÏ ÕÍÏÌÞÁÎÉÀ ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ) É "
+"ÐÅÞÁÔÁÅÔ\n"
+"ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ.\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes ÓÞÉÔÁÔØ ÂÁÊÔÙ, Á ÎÅ ÓÔÏÌÂÃÙ\n"
+" -s, --spaces ÒÁÚÂÉ×ÁÔØ ÔÏÌØËÏ ÎÁ ÐÒÏÂÅÌÁÈ\n"
+" -w, --width=þéóìï ÉÓÐÏÌØÚÏ×ÁÔØ ÕËÁÚÁÎÎÏÅ þéóìï ÓÔÏÌÂÃÏ×, Á ÎÅ 80\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, c-format
+msgid "invalid number of columns: %s"
+msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÓÔÏÌÂÃÏ×: %s"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ ÐÅÒ×ÙÅ 10 ÓÔÒÏË ËÁÖÄÏÇÏ æáêìá ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ.\n"
+"åÓÌÉ ÚÁÄÁÎÏ ÎÅÓËÏÌØËÏ æáêìï÷, ÓÎÁÞÁÌÁ ÐÅÞÁÔÁÅÔ ÚÁÇÏÌÏ×ÏË Ó ÉÍÅÎÅÍ ÆÁÊÌÁ.\n"
+"åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+" -c, --bytes=[-]N ÎÁÐÅÞÁÔÁÔØ ÐÅÒ×ÙÅ N ÂÁÊÔ ËÁÖÄÏÇÏ ÆÁÊÌÁ;\n"
+" ÅÓÌÉ ÐÅÒÅÄ N ÓÔÏÉÔ `-', ÎÁÐÅÞÁÔÁÔØ ×ÓÅ, ËÒÏÍÅ "
+"N\n"
+" ÐÏÓÌÅÄÎÉÈ ÂÁÊÔ ËÁÖÄÏÇÏ ÆÁÊÌÁ\n"
+" -n, --lines=[-]N ÎÁÐÅÞÁÔÁÔØ ÐÅÒ×ÙÅ N ÓÔÒÏË ËÁÖÄÏÇÏ ÆÁÊÌÁ, Á ÎÅ "
+"10;\n"
+" ÅÓÌÉ ÐÅÒÅÄ N ÓÔÏÉÔ `-', ÎÁÐÅÞÁÔÁÔØ ×ÓÅ, ËÒÏÍÅ "
+"N\n"
+" ÐÏÓÌÅÄÎÉÈ ÓÔÒÏË ËÁÖÄÏÇÏ ÆÁÊÌÁ\n"
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent ÎÅ ÐÅÞÁÔÁÔØ ÚÁÇÏÌÏ×ËÉ Ó ÉÍÅÎÁÍÉ ÆÁÊÌÏ×\n"
+" -v, --verbose ×ÓÅÇÄÁ ÐÅÞÁÔÁÔØ ÚÁÇÏÌÏ×ËÉ Ó ÉÍÅÎÁÍÉ ÆÁÊÌÏ×\n"
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"N ÍÏÖÅÔ ÉÍÅÔØ ÓÕÆÆÉËÓ-ÍÎÏÖÉÔÅÌØ: b 512, k 1024, m 1024*1024.\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "ÏÛÉÂËÁ ÞÔÅÎÉÑ %s"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "ÏÛÉÂËÁ ÚÁÐÉÓÉ %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr "%s: ÆÁÊÌ ÓÌÉÛËÏÍ ÓÏËÒÁÔÉÌÓÑ"
+
+#: src/head.c:230 src/head.c:1046
+#, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s: ÞÉÓÌÏ ÂÁÊÔ ÓÌÉÛËÏÍ ×ÅÌÉËÏ"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ×ÅÒÎÕÔØ ÕËÁÚÁÔÅÌØ ÆÁÊÌÁ ÎÁ ÐÅÒ×ÏÎÁÞÁÌØÎÕÀ ÐÏÚÉÃÉÀ"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÓÍÅÓÔÉÔØÓÑ Ë ÐÏÚÉÃÉÉ %s"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÍÅÓÔÉÔØ ÕËÁÚÁÔÅÌØ ÆÁÊÌÁ ÄÌÑ %s"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s ÎÁÓÔÏÌØËÏ ×ÅÌÉËÏ, ÞÔÏ ÅÇÏ ÎÅ×ÏÚÍÏÖÎÏ ÍÁÛÉÎÎÏ ÐÒÅÄÓÔÁ×ÉÔØ"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "ÞÉÓÌÏ ÓÔÒÏË"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "ÞÉÓÌÏ ÂÁÊÔ"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÓÔÒÏË"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "ÎÅ×ÅÒÎÙÊ ÞÉÓÌÏ ÂÁÊÔ"
+
+#: src/head.c:976 src/head.c:1034
+#, c-format
+msgid "invalid trailing option -- %c"
+msgstr "ÎÅ×ÅÒÎÙÊ ÚÁ×ÅÒÛÁÀÝÉÊ ËÌÀÞ -- %c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s\n"
+" ÉÌÉ: %s ëìàþ\n"
+"ðÅÞÁÔÁÅÔ ÞÉÓÌÏ×ÏÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ (ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÊ) ÔÅËÕÝÅÊ ÍÁÛÉÎÙ.\n"
+"\n"
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [éíñ]\n"
+" ÉÌÉ: %s ëìàþ\n"
+"ðÅÞÁÔÁÅÔ ÉÌÉ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÉÍÑ ÄÁÎÎÏÊ ÓÉÓÔÅÍÙ.\n"
+"\n"
+
+#: src/hostname.c:103
+#, c-format
+msgid "cannot set name to %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÉÍÑ × ÚÎÁÞÅÎÉÅ %s"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+"ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÏÓÎÏ×ÎÏÅ ÉÍÑ -- ÜÔÁ ÓÉÓÔÅÍÁ ÎÅ ÏÂÌÁÄÁÅÔ ÔÁËÏÊ "
+"ÓÐÏÓÏÂÎÏÓÔØÀ"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÉÍÑ ÍÁÛÉÎÙ"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [ðïìøúï÷áôåìø]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ Ó×ÅÄÅÎÉÑ Ï ðïìøúï÷áôåìå, ÉÌÉ Ï ÔÅËÕÝÅÍ ÐÏÌØÚÏ×ÁÔÅÌÅ.\n"
+"\n"
+" -a ÉÇÎÏÒÉÒÕÅÔÓÑ, ××ÅÄÅÎÏ ÔÏÌØËÏ ÄÌÑ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ\n"
+" -g, --group ÐÅÞÁÔÁÔØ ÔÏÌØËÏ ID ÇÒÕÐÐÙ\n"
+" -G, --groups ÐÅÞÁÔÁÔØ ÔÏÌØËÏ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÇÒÕÐÐÙ\n"
+" -n, --name ÐÅÞÁÔÁÔØ ÉÍÑ ×ÍÅÓÔÏ ÎÏÍÅÒÁ, ÄÌÑ ËÌÀÞÅÊ -ugG\n"
+" -r, --real ÐÅÞÁÔÁÔØ ÄÅÊÓÔ×ÉÔÅÌØÎÙÅ, Á ÎÅ ÜÆÆÅËÔÉ×ÎÙÅ ID, ÄÌÑ ËÌÀÞÅÊ -"
+"ugG\n"
+" -u, --user ÐÅÞÁÔÁÔØ ÔÏÌØËÏ ID ÐÏÌØÚÏ×ÁÔÅÌÑ\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"åÓÌÉ ëìàþé ÎÅ ÚÁÄÁÎÙ, ÐÅÞÁÔÁÅÔ ÎÅËÏÔÏÒÙÊ ÓÔÁÎÄÁÒÔÎÙÊ ÎÁÂÏÒ ÐÏÌÅÚÎÙÈ "
+"Ó×ÅÄÅÎÉÊ.\n"
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÎÁÐÅÞÁÔÁÔØ ÔÏÌØËÏ ÐÏÌØÚÏ×ÁÔÅÌÑ É ÔÏÌØËÏ ÇÒÕÐÐÕ"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr ""
+"ÎÅ×ÏÚÍÏÖÎÏ ÎÁÐÅÞÁÔÁÔØ ÔÏÌØËÏ ÉÍÅÎÁ ÉÌÉ ÄÅÊÓÔ×ÉÔÅÌØÎÙÅ ID × ÆÏÒÍÁÔÅ ÐÏ "
+"ÕÍÏÌÞÁÎÉÀ"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: ôÁËÏÇÏ ÐÏÌØÚÏ×ÁÔÅÌÑ ÎÅÔ"
+
+#: src/id.c:205
+#, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ ÄÌÑ ID %lu"
+
+#: src/id.c:229
+#, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÉÍÑ ÇÒÕÐÐÙ ÄÌÑ ID %lu"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÓÐÉÓÏË ÄÏÐÏÌÎÉÔÅÌØÎÙÈ ÇÒÕÐÐ"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " ÇÒÕÐÐÙ="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr "ÐÒÉ ÕÓÔÁÎÏ×ËÅ ËÁÔÁÌÏÇÁ ÎÅÌØÚÑ ÐÒÉÍÅÎÑÔØ ËÌÀÞ strip"
+
+#: src/install.c:321
+#, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "ÐÒÉ ÕÓÔÁÎÏ×ËÅ ËÁÔÁÌÏÇÁ ÎÅÌØÚÑ ÚÁÄÁ×ÁÔØ ÃÅÌÅ×ÏÊ ËÁÔÁÌÏÇ"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÒÅÖÉÍ %s"
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÉÚÍÅÎÉÔØ ×ÌÁÄÅÌØÃÁ %s"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ×ÒÅÍÅÎÎÙÅ ÏÔÍÅÔËÉ ÄÌÑ %s"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ× fork ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÓÐÅÈÏÍ"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÐÕÓÔÉÔØ strip"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "ÏÖÉÄÁÎÉÅ %s [-d]"
+
+#: src/install.c:572
+#, fuzzy, c-format
+msgid "strip process terminated abnormally"
+msgstr "%s [-d] ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÓÐÅÛÎÏ"
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÐÏÌØÚÏ×ÁÔÅÌØ %s"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "ÓÏÚÄÁÎÉÅ ËÁÔÁÌÏÇÁ %s"
+
+#: src/install.c:651
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [-T] éóôïþîéë îáúîáþåîéå\n"
+" ÉÌÉ: %s [ëìàþ]... éóôïþîéë... ëáôáìïç\n"
+" ÉÌÉ: %s [ëìàþ]... -t ëáôáìïç éóôïþîéë...\n"
+" ÉÌÉ: %s [ëìàþ]... -d ëáôáìïç...\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"÷ ÐÅÒ×ÙÈ ÔÒÅÈ ÆÏÒÍÁÈ ËÏÐÉÒÕÅÔ éóôïþîéë × îáúîáþåîéå ÉÌÉ ÎÅÓËÏÌØËÏ\n"
+"éóôïþîéëï÷ × ÓÕÝÅÓÔ×ÕÀÝÉÊ ëáôáìïç, ÕÓÔÁÎÁ×ÌÉ×ÁÑ ÒÅÖÉÍÙ ÄÏÓÔÕÐÁ É\n"
+"×ÌÁÄÅÌØÃÁ/ÇÒÕÐÐÕ. ÷ ÞÅÔ×ÅÒÔÏÊ ÆÏÒÍÅ ÓÏÚÄÁÅÔ ×ÓÅ ËÏÍÐÏÎÅÎÔÙ ÕËÁÚÁÎÎÙÈ\n"
+"ëáôáìïçï÷.\n"
+"\n"
+
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup[=ëïîôòïìø] ÓÏÚÄÁ×ÁÔØ ÒÅÚÅÒ×ÎÙÅ ËÏÐÉÉ ÃÅÌÅ×ÙÈ ÆÁÊÌÏ×\n"
+" -b ÔÏ ÖÅ, ÞÔÏ É --backup, ÎÏ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n"
+" -c (ÉÇÎÏÒÉÒÕÅÔÓÑ)\n"
+" -d, --directory ÒÁÓÓÍÁÔÒÉ×ÁÔØ ×ÓÅ ÁÒÇÕÍÅÎÔÙ ËÁË ËÁÔÁÌÏÇÉ; ÓÏÚÄÁ×ÁÔØ "
+"×ÓÅ\n"
+" ËÏÍÐÏÎÅÎÔÙ ÕËÁÚÁÎÎÙÈ ËÁÔÁÌÏÇÏ×\n"
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D ÓÏÚÄÁ×ÁÔØ ×ÓÅ ÎÁÞÁÌØÎÙÅ ÓÏÓÔÁ×ÌÑÀÝÉÅ îáúîáþåîéñ ËÒÏÍÅ\n"
+" ÐÏÓÌÅÄÎÅÇÏ, ÚÁÔÅÍ ËÏÐÉÒÏ×ÁÔØ éóôïþîéë × îáúîáþåîéå\n"
+" -g, --group=çòõððá ÕÓÔÁÎÁ×ÌÉ×ÁÔØ çòõððõ, Á ÎÅ ÇÒÕÐÐÕ ÔÅËÕÝÅÇÏ ÐÒÏÃÅÓÓÁ\n"
+" -m, --mode=òåöéí ÕÓÔÁÎÁ×ÌÉ×ÁÔØ òåöéí (ËÁË chmod), Á ÎÅ rwxr-xr-x\n"
+" -o, --owner=÷ìáäåìåã ÕÓÔÁÎÁ×ÌÉ×ÁÔØ ÷ìáäåìøãá (ÔÏÌØËÏ ÄÌÑ "
+"ÓÕÐÅÒÐÏÌØÚÏ×ÁÔÅÌÑ)\n"
+
+#: src/install.c:681
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps ÕÓÔÁÎÁ×ÌÉ×ÁÔØ ÃÅÌÅ×ÙÍ ÆÁÊÌÁÍ ×ÒÅÍÅÎÁ\n"
+" ÄÏÓÔÕÐÁ/ÉÚÍÅÎÅÎÉÑ ËÁË Õ ÉÈ ÆÁÊÌÏ×-éóôïþîéëï÷\n"
+" -s, --strip ÕÄÁÌÑÔØ ÔÁÂÌÉÃÙ ÓÉÍ×ÏÌÏ×\n"
+" -S, --suffix=óõææéëó ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÒÅÚÅÒ×ÎÙÈ ËÏÐÉÊ ÚÁÄÁÎÎÙÊ óõææéëó\n"
+" -t, --target-directory=ëáôáìïç ËÏÐÉÒÏ×ÁÔØ ×ÓÅ ÁÒÇÕÍÅÎÔÙ-éóôïþîéëé × "
+"ëáôáìïç\n"
+" -T, --no-target-directory ÓÞÉÔÁÔØ îáúîáþåîéå ÏÂÙÞÎÙÍ ÆÁÊÌÏÍ\n"
+" -v, --verbose ×Ù×ÏÄÉÔØ ÎÁÚ×ÁÎÉÅ ËÁÖÄÏÇÏ ÓÏÚÄÁ×ÁÅÍÏÇÏ ËÁÔÁÌÏÇÁ\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"ðÏ ÕÍÏÌÞÁÎÉÀ ÓÕÆÆÉËÓ ÄÌÑ ÚÁÐÁÓÎÙÈ ËÏÐÉÊ ~, ÅÓÌÉ ÔÏÌØËÏ ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ\n"
+"ÐÅÒÅÍÅÎÎÁÑ ÏËÒÕÖÅÎÉÑ SIMPLE_BACKUP_SUFFIX ÉÌÉ ËÌÀÞ --suffix. óÐÏÓÏÂ "
+"ËÏÎÔÒÏÌÑ\n"
+"×ÅÒÓÉÊ ÍÏÖÅÔ ÂÙÔØ ÕÓÔÁÎÏ×ÌÅÎ ÐÒÉ ÐÏÍÏÝÉ ËÌÀÞÁ --backup ÉÌÉ ÐÅÒÅÍÅÎÎÏÊ\n"
+"ÏËÒÕÖÅÎÉÑ VERSION_CONTROL. äÏÐÕÓÔÉÍÙÅ ÚÎÁÞÅÎÉÑ:\n"
+"\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"äÌÑ ËÁÖÄÏÊ ÐÁÒÙ ×ÈÏÄÎÙÈ ÓÔÒÏË Ó ÏÄÉÎÁËÏ×ÙÍÉ ÏÂÝÉÍÉ ÐÏÌÑÍÉ ×Ù×ÏÄÉÔ ÓÔÒÏËÕ ÎÁ\n"
+"ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ. ðÏ ÕÍÏÌÞÁÎÉÀ ÏÂÝÅÅ ÐÏÌÅ ÓÞÉÔÁÅÔÓÑ ÐÅÒ×ÙÍ, ÐÏÌÑ "
+"ÒÁÚÄÅÌÑÀÔÓÑ\n"
+"ÐÒÏÂÅÌØÎÙÍÉ ÚÎÁËÁÍÉ. åÓÌÉ ÏÄÉÎ ÉÚ æáêìï÷ ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ\n"
+"××ÏÄ.\n"
+"\n"
+" -a îïíåò ÐÅÞÁÔÁÔØ ÎÅ ÉÍÅÀÝÉÅ ÐÁÒÙ ÓÔÒÏËÉ ÉÚ ÆÁÊÌÁ Ó ÚÁÄÁÎÎÙÍ\n"
+" ÎÏÍÅÒÏÍ (1 ÉÌÉ 2)\n"
+" -e óôòïëá ÚÁÍÅÝÁÔØ ÐÒÉ ×Ù×ÏÄÅ ÐÕÓÔÙÅ ÓÔÒÏËÉ ÕËÁÚÁÎÎÏÊ óôòïëïê\n"
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case ÉÇÎÏÒÉÒÏ×ÁÔØ ÒÅÇÉÓÔÒ ÂÕË× ÐÒÉ ÓÒÁ×ÎÅÎÉÉ ÐÏÌÅÊ\n"
+" -j ðïìå ÜË×É×ÁÌÅÎÔÎÏ `-1 ðïìå -2 ðïìå'\n"
+" -o æïòíáô ×Ù×ÏÄÉÔØ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó æïòíáôïí\n"
+" -t úîáë ÉÓÐÏÌØÚÏ×ÁÔØ úîáë ËÁË ÒÁÚÄÅÌÉÔÅÌØ ÐÏÌÅÊ ××ÏÄÁ É ×Ù×ÏÄÁ\n"
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v îïíåò ËÁË -Á îïíåò, ÎÏ ÎÅ ÐÅÞÁÔÁÔØ ÉÍÅÀÝÉÅ ÐÁÒÙ ÓÔÒÏËÉ\n"
+" -1 ðïìå ÓÞÉÔÁÔØ ÏÂÝÉÍ ÚÁÄÁÎÎÏÅ ðïìå ÆÁÊÌÁ 1\n"
+" -2 ðïìå ÓÞÉÔÁÔØ ÏÂÝÉÍ ÚÁÄÁÎÎÏÅ ðïìå ÆÁÊÌÁ 2\n"
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"åÓÌÉ ÎÅ ÚÁÄÁÎ -t úîáë, ÎÁÞÁÌØÎÙÅ ÐÒÏÂÅÌØÎÙÅ ÚÎÁËÉ ÒÁÚÄÅÌÑÀÔ ÐÏÌÑ É\n"
+"ÉÇÎÏÒÉÒÕÀÔÓÑ, × ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÐÏÌÑ ÒÁÚÄÅÌÑÀÔÓÑ úîáëïí. ðïìå -- ÜÔÏ\n"
+"ÎÏÍÅÒ ÐÏÌÑ, ÏÔÓÞÉÔÙ×ÁÅÍÙÊ ÏÔ 1. æïòíáô -- ÜÔÏ ÏÄÎÏ ÉÌÉ ÎÅÓËÏÌØËÏ\n"
+"ÒÁÚÄÅÌÑÅÍÙÈ ÚÁÐÑÔÙÍÉ ÉÌÉ ÐÒÏÂÅÌØÎÙÍÉ ÚÎÁËÁÍÉ ÏÐÉÓÁÎÉÊ ÆÏÒÍÁÔÁ × ×ÉÄÅ\n"
+"`îïíåò_æáêìá.ðïìå' ÉÌÉ `0'. ðÏ ÕÍÏÌÞÁÎÉÀ æïòíáô ×Ù×ÏÄÉÔ ÏÂÝÅÅ ÐÏÌÅ,\n"
+"ÏÓÔÁÌØÎÙÅ ÐÏÌÑ ÉÚ æáêìá1 É ÏÓÔÁÌØÎÙÅ ÐÏÌÑ ÉÚ æáêìá2, ÒÁÚÄÅÌÅÎÎÙÅ\n"
+"úîáëïí.\n"
+"\n"
+"÷ÁÖÎÏ: æáêì1 É æáêì2 ÄÏÌÖÎÙ ÂÙÔØ ÏÔÓÏÒÔÉÒÏ×ÁÎÙ ÐÏ ÏÂÝÉÍ ÐÏÌÑÍ.\n"
+"îÁÐÒÉÍÅÒ, ÉÓÐÏÌØÚÕÊÔÅ `sort -k 1b,1', ÅÓÌÉ Õ `join' ÎÅÔ ËÌÀÞÅÊ.\n"
+
+#: src/join.c:617 src/join.c:812
+#, c-format
+msgid "invalid field number: %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÎÏÍÅÒ ÐÏÌÑ: %s"
+
+#: src/join.c:638 src/join.c:647
+#, c-format
+msgid "invalid field specifier: %s"
+msgstr "ÎÅ×ÅÒÎÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÐÏÌÑ: %s"
+
+#: src/join.c:654
+#, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÎÏÍÅÒ ÆÁÊÌÁ × ÓÐÅÃÉÆÉËÁÃÉÉ ÐÏÌÑ: %s"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr "ÐÏÌÑ ÏÂßÅÄÉÎÅÎÉÑ %lu, %lu ÎÅÓÏ×ÍÅÓÔÉÍÙ"
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr "ËÏÎÆÌÉËÔÕÀÝÉÅ ÓÔÒÏËÉ ÚÁÍÅÎÙ ÄÌÑ ÐÕÓÔÏÇÏ ÐÏÌÑ"
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr "ÐÕÓÔÁÑ ÔÁÂÕÌÑÃÉÑ"
+
+#: src/join.c:870 src/sort.c:3031
+#, c-format
+msgid "multi-character tab %s"
+msgstr "ÍÎÏÇÏÚÎÁËÏ×ÁÑ ÔÁÂÕÌÑÃÉÑ %s"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr "ÎÅÓÏ×ÍÅÓÔÉÍÁÑ ÔÁÂÕÌÑÃÉÑ"
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "ÏÂÁ ÆÁÊÌÁ ÎÅ ÍÏÇÕÔ ÂÙÔØ ÓÔÁÎÄÁÒÔÎÙÍ ××ÏÄÏÍ"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [-s óéçîáì | -óéçîáì] PID...\n"
+" ÉÌÉ: %s -l [óéçîáì]...\n"
+" ÉÌÉ: %s -t [óéçîáì]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+"ðÏÓÙÌÁÅÔ ÐÒÏÃÅÓÓÁÍ ÓÉÇÎÁÌÙ ÉÌÉ ÐÅÒÅÞÉÓÌÑÅÔ ÓÉÇÎÁÌÙ.\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+" -s, --signal=óéçîáì, -óéçîáì\n"
+" ÚÁÄÁÅÔ ÉÍÑ ÉÌÉ ÎÏÍÅÒ ÐÏÓÙÌÁÅÍÏÇÏ ÓÉÇÎÁÌÁ\n"
+" -l, --list ÐÅÒÅÞÉÓÌÑÅÔ ÉÍÅÎÁ ÓÉÇÎÁÌÏ× ÉÌÉ ÐÅÒÅ×ÏÄÉÔ ÉÍÅÎÁ × ÎÏÍÅÒÁ É "
+"ÎÁÏÂÏÒÏÔ\n"
+" -t, --table ÐÅÞÁÔÁÅÔ ÔÁÂÌÉÃÕ Ó ÉÎÆÏÒÍÁÃÉÅÊ Ï ÓÉÇÎÁÌÁÈ\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+"\n"
+"óéçîáì ÍÏÖÅÔ ÂÙÔØ ÉÍÅÎÅÍ ÓÉÇÎÁÌÁ, ËÁË `HUP' ÉÌÉ ÎÏÍÅÒÏÍ ÓÉÇÎÁÌÁ, ËÁË\n"
+"`1', ÉÌÉ ×ÙÈÏÄÎÙÍ ÚÎÁÞÅÎÉÅÍ ÐÒÏÃÅÓÓÁ, ÐÒÅÒ×ÁÎÎÏÇÏ ÓÉÇÎÁÌÏÍ.\n"
+"PID Ñ×ÌÑÅÔÓÑ ÃÅÌÙÍ ÞÉÓÌÏÍ; ÅÓÌÉ ÏÎÏ ÏÔÒÉÃÁÔÅÌØÎÏ, ÔÏ ÏÂÏÚÎÁÞÁÅÔ ÇÒÕÐÐÕ\n"
+"ÐÒÏÃÅÓÓÏ×.\n"
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: ÎÅ×ÅÒÎÙÊ ÓÉÇÎÁÌ"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: ÎÅ×ÅÒÎÙÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÒÏÃÅÓÓÁ"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "ÎÅ×ÅÒÎÙÊ ËÌÀÞ -- `%c'"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: ÚÁÄÁÎÏ ÎÅÓËÏÌØËÏ ÓÉÇÎÁÌÏ×"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "ÚÁÄÁÎÏ ÎÅÓËÏÌØËÏ ËÌÀÞÅÊ -l ÉÌÉ -t"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "ÎÅÌØÚÑ ÏÂßÅÄÉÎÑÔØ ÓÉÇÎÁÌ Ó -l ÉÌÉ -t"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr "ÎÅ ÚÁÄÁÎ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÒÏÃÅÓÓÁ"
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s æáêì1 æáêì2\n"
+" ÉÌÉ: %s ëìàþ\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+"÷ÙÚÙ×ÁÅÔ ÆÕÎËÃÉÀ link ÄÌÑ ÓÏÚÄÁÎÉÑ ÓÓÙÌËÉ Ó ÉÍÅÎÅÍ æáêì2 ÎÁ ÓÕÝÅÓÔ×ÕÀÝÉÊ "
+"æáêì1.\n"
+"\n"
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÓÓÙÌËÕ %s ÎÁ %s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+"%s: ÏÓÔÏÒÏÖÎÏ: ÓÏÚÄÁÎÉÅ ÖÅÓÔËÏÊ ÓÓÙÌËÉ ÎÁ ÓÉÍ×ÏÌØÎÕÀ ÓÓÙÌËÕ ÒÁÂÏÔÁÅÔ\n"
+"ÎÅ ×ÅÚÄÅ"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: ÎÅ ÄÏÐÕÓËÁÅÔÓÑ ÓÏÚÄÁ×ÁÔØ ÖÅÓÔËÉÅ ÓÓÙÌËÉ ÎÁ ËÁÔÁÌÏÇÉ"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÚÁÐÉÓÁÔØ ËÁÔÁÌÏÇ"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: ÚÁÍÅÎÉÔØ %s? "
+
+#: src/ln.c:295
+#, c-format
+msgid "creating symbolic link %s"
+msgstr "ÓÏÚÄÁÎÉÅ ÓÉÍ×ÏÌØÎÏÊ ÓÓÙÌËÉ %s"
+
+#: src/ln.c:296
+#, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "ÓÏÚÄÁÎÉÅ ÓÉÍ×ÏÌØÎÏÊ ÓÓÙÌËÉ %s -> %s"
+
+#: src/ln.c:298
+#, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "ÓÏÚÄÁÎÉÅ ÖÅÓÔËÏÊ ÓÓÙÌËÉ ÎÁ %.0s%s"
+
+#: src/ln.c:301
+#, c-format
+msgid "creating hard link %s"
+msgstr "ÓÏÚÄÁÎÉÅ ÖÅÓÔËÏÊ ÓÓÙÌËÉ %s"
+
+#: src/ln.c:302
+#, c-format
+msgid "creating hard link %s => %s"
+msgstr "ÓÏÚÄÁÎÉÅ ÖÅÓÔËÏÊ ÓÓÙÌËÉ %s => %s"
+
+#: src/ln.c:324
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [-T] ãåìø éíñ_óóùìëé (1-ÁÑ ÆÏÒÍÁ)\n"
+" ÉÌÉ: %s [ëìàþ]... ãåìø (2-ÁÑ ÆÏÒÍÁ)\n"
+" ÉÌÉ: %s [ëìàþ]... ãåìø... ëáôáìïç (3-Ñ ÆÏÒÍÁ)\n"
+" ÉÌÉ: %s [ëìàþ]... -t ëáôáìïç ãåìø... (4-ÁÑ ÆÏÒÍÁ)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"÷ ÐÅÒ×ÏÊ ÆÏÒÍÅ ÓÏÚÄÁÅÔ ÓÓÙÌËÕ ÎÁ ãåìø Ó ÕËÁÚÁÎÎÙÍ éíåîåí_óóùìëé.\n"
+"÷Ï ×ÔÏÒÏÊ ÆÏÒÍÅ ÓÏÚÄÁÅÔ ÓÓÙÌËÕ ÎÁ ãåìø × ÔÅËÕÝÅÍ ËÁÔÁÌÏÇÅ.\n"
+"÷ ÔÒÅÔØÅÊ É ÞÅÔ×ÅÒÔÏÊ ÆÏÒÍÁÈ ÓÏÚÄÁÅÔ ÓÓÙÌËÉ ÎÁ ËÁÖÄÕÀ ãåìø × ÕËÁÚÁÎÎÏÍ "
+"ëáôáìïçå.\n"
+"ðÏ ÕÍÏÌÞÁÎÉÀ ÓÏÚÄÁÅÔ ÖÅÓÔËÉÅ ÓÓÙÌËÉ, Á Ó ËÌÀÞÏÍ --symbolic -- ÓÉÍ×ÏÌØÎÙÅ.\n"
+"ðÒÉ ÓÏÚÄÁÎÉÉ ÖÅÓÔËÉÈ ÓÓÙÌÏË ËÁÖÄÁÑ ãåìø ÄÏÌÖÎÁ ÓÕÝÅÓÔ×Ï×ÁÔØ.\n"
+"\n"
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup[=ëïîôòïìø] ÓÏÚÄÁ×ÁÔØ ÒÅÚÅÒ×ÎÕÀ ËÏÐÉÀ ÄÌÑ ËÁÖÄÏÇÏ ÃÅÌÅ×ÏÇÏ "
+"ÆÁÊÌÁ\n"
+" -b ÔÏ ÖÅ, ÞÔÏ É --backup, ÎÏ ÎÅ ÐÒÉÎÉÍÁÅÔ ÁÒÇÕÍÅÎÔ\n"
+" -d, -F, --directory ÐÏÚ×ÏÌÉÔØ ÓÕÐÅÒÐÏÌØÚÏ×ÁÔÅÌÀ ÓÏÚÄÁ×ÁÔØ ÖÅÓÔËÉÅ "
+"ÓÓÙÌËÉ\n"
+" ÎÁ ËÁÔÁÌÏÇÉ (ÚÁÍÅÞÁÎÉÅ: ×ÅÒÏÑÔÎÏ, ÜÔÏ ÎÅ "
+"ÐÏÌÕÞÉÔÓÑ\n"
+" ÉÚ-ÚÁ ÓÉÓÔÅÍÎÙÈ ÏÇÒÁÎÉÞÅÎÉÊ, ÄÁÖÅ ÄÌÑ\n"
+" ÓÕÐÅÒÐÏÌØÚÏ×ÁÔÅÌÑ)\n"
+" -f, --force ÕÄÁÌÑÔØ ÓÕÝÅÓÔ×ÕÀÝÉÅ ÃÅÌÅ×ÙÅ ÆÁÊÌÙ\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference ÒÁÓÓÍÁÔÒÉ×ÁÔØ ÓÉÍ×ÏÌØÎÕÀ ÓÓÙÌËÕ ËÁË "
+"ÎÏÒÍÁÌØÎÙÊ\n"
+" ÆÁÊÌ\n"
+" -i, --interactive ÓÐÒÁÛÉ×ÁÔØ ÐÅÒÅÄ ÔÅÍ ËÁË ÐÅÒÅÐÉÓÙ×ÁÔØ\n"
+" -s, --symbolic ÓÏÚÄÁ×ÁÔØ ÓÉÍ×ÏÌØÎÙÅ ÓÓÙÌËÉ\n"
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" -S, --suffix=óõææéëó ÐÅÒÅÏÐÒÅÄÅÌÑÅÔ ÏÂÙÞÎÙÊ ÓÕÆÆÉËÓ ÒÅÚÅÒ×ÎÙÈ "
+"ËÏÐÉÊ\n"
+" -t, --target-directory=ëáôáìïç ÕËÁÚÙ×ÁÅÔ ëáôáìïç, × ËÏÔÏÒÏÍ ÓÏÚÄÁ×ÁÔØ\n"
+" ÓÓÙÌËÉ\n"
+" -T, --no-target-directory ÓÞÉÔÁÔØ éíñ_óóùìëé ÏÂÙÞÎÙÍ ÆÁÊÌÏÍ\n"
+" -v, --verbose ÐÅÞÁÔÁÔØ ÉÍÑ ËÁÖÄÏÇÏ ÆÁÊÌÁ ÐÒÉ ÓÏÚÄÁÎÉÉ "
+"ÓÓÙÌËÉ\n"
+
+#: src/ln.c:484
+#, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "îÅÌØÚÑ ÓÏÞÅÔÁÔØ --target-directory É --no-target-directory"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ ÉÍÑ ÔÅËÕÝÅÇÏ ÐÏÌØÚÏ×ÁÔÅÌÑ.\n"
+"\n"
+
+#: src/logname.c:89
+#, c-format
+msgid "no login name"
+msgstr "ÒÅÇÉÓÔÒÁÃÉÏÎÎÏÅ ÉÍÑ ÏÔÓÕÔÓÔ×ÕÅÔ"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%b %e %Y"
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%b %e %H:%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr ""
+"ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎÏ ÎÅ×ÅÒÎÏÅ ÚÎÁÞÅÎÉÅ ÐÅÒÅÍÅÎÎÏÊ ÏËÒÕÖÅÎÉÑ QUOTING_STYLE: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎÁ ÎÅ×ÅÒÎÁÑ ÛÉÒÉÎÁ × ÐÅÒÅÍÅÎÎÏÊ ÏËÒÕÖÅÎÉÑ COLUMNS: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr ""
+"ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎ ÎÅ×ÅÒÎÙÊ ÒÁÚÍÅÒ ÔÁÂÕÌÑÃÉÉ × ÐÅÒÅÍÅÎÎÏÊ ÏËÒÕÖÅÎÉÑ TABSIZE: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "ÎÅ×ÅÒÎÁÑ ÛÉÒÉÎÁ ÓÔÒÏËÉ: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÒÁÚÍÅÒ ÔÁÂÕÌÑÃÉÉ: %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÆÏÒÍÁÔ ×ÒÅÍÅÎÉ %s"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "ÎÅ ÒÁÓÐÏÚÎÁÎ ÐÒÅÆÉËÓ: %s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "ÎÅ ÁÎÁÌÉÚÉÒÕÅÍÏÅ ÚÎÁÞÅÎÉÅ × ÐÅÒÅÍÅÎÎÏÊ ÏËÒÕÖÅÎÉÑ LS_COLORS"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ËÁÔÁÌÏÇ %s"
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÕÓÔÒÏÊÓÔ×Ï É inode ÄÌÑ %s"
+
+#: src/ls.c:2353
+#, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "%s: ÐÒÏÐÕÓË ÕÖÅ ÐÅÒÅÞÉÓÌÅÎÎÏÇÏ ËÁÔÁÌÏÇÁ"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "ÞÔÅÎÉÅ ËÁÔÁÌÏÇÁ %s"
+
+#: src/ls.c:2410
+#, c-format
+msgid "closing directory %s"
+msgstr "ÚÁËÒÙÔÉÅ ËÁÔÁÌÏÇÁ %s"
+
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÒÁ×ÎÉÔØ ÉÍÅÎÁ ÆÁÊÌÏ× %s É %s"
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"÷ÙÄÁÅÔ ÉÎÆÏÒÍÁÃÉÀ Ï æáêìáè (ÐÏ ÕÍÏÌÞÁÎÉÀ Ï ÔÅËÕÝÅÍ ËÁÔÁÌÏÇÅ).\n"
+"óÏÒÔÉÒÕÅÔ × ÁÌÆÁ×ÉÔÎÏÍ ÐÏÒÑÄËÅ, ÅÓÌÉ ÎÅ ÚÁÄÁÎ ÎÉ --sort, ÎÉ ÏÄÉÎ ÉÚ\n"
+"ËÌÀÞÅÊ -cftuvSUX.\n"
+"\n"
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all ÎÅ ÓËÒÙ×ÁÔØ ÆÁÊÌÙ ÎÁÞÉÎÁÀÝÉÅÓÑ Ó .\n"
+" -A, --almost-all ÎÅ ×ÙÄÁ×ÁÔØ ÐÏÄÒÁÚÕÍÅ×ÁÅÍÙÅ . É ..\n"
+" --author ×ÍÅÓÔÅ Ó -l, ÐÅÞÁÔÁÔØ Á×ÔÏÒÁ ËÁÖÄÏÇÏ ÆÁÊÌÁ\n"
+" -b, --escape ÐÅÞÁÔÁÔØ ×ÏÓØÍÅÒÉÞÎÙÅ escape-"
+"ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ\n"
+" ×ÍÅÓÔÏ ÎÅÇÒÁÆÉÞÅÓËÉÈ ÚÎÁËÏ×\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=SIZE ÉÓÐÏÌØÚÏ×ÁÔØ ÂÌÏËÉ ÒÁÚÍÅÒÏÍ SIZE ÂÁÊÔ\n"
+" -B, --ignore-backups ÎÅ ×ÙÄÁ×ÁÔØ ÆÁÊÌÙ ÏËÁÎÞÉ×ÁÀÝÉÅÓÑ ÎÁ ~\n"
+" -c Ó -lt: ÓÏÒÔÉÒÏ×ÁÔØ ÐÏ ×ÒÅÍÅÎÉ ÉÚÍÅÎÅÎÉÑ; Ó -l:\n"
+" ×ÙÄÁ×ÁÔØ ×ÒÅÍÑ ÉÚÍÅÎÅÎÉÑ É ÓÏÒÔÉÒÏ×ÁÔØ ÐÏ "
+"ÉÍÅÎÉ,\n"
+" ÉÎÁÞÅ ÓÏÒÔÉÒÏ×ÁÔØ ÐÏ ×ÒÅÍÅÎÉ ÉÚÍÅÎÅÎÉÑ\n"
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C ×ÙÄÁ×ÁÔØ ÓÐÉÓÏË × ÎÅÓËÏÌØËÏ ËÏÌÏÎÏË\n"
+" --color[=ëïçäá] ÕËÁÚÙ×ÁÅÔ, ÎÕÖÎÏ ÌÉ ×ÙÄÅÌÑÔØ ÔÉÐÙ ÆÁÊÌÏ× "
+"Ã×ÅÔÏÍ.\n"
+" ëïçäá ÍÏÖÅÔ ÂÙÔØ `never' (ÎÅ ×ÙÄÅÌÑÔØ), "
+"`always'\n"
+" (×ÙÄÅÌÑÔØ) ÉÌÉ `auto' (ÚÁ×ÉÓÉÔ ÏÔ ÔÅÒÍÉÎÁÌÁ)\n"
+" -d, --directory ×ÙÄÁ×ÁÔØ ÉÍÅÎÁ ËÁÔÁÌÏÇÏ×, Á ÎÅ ÉÈ ÓÏÄÅÒÖÉÍÏÅ, "
+"Á\n"
+" ÔÁËÖÅ ÎÅ ÓÌÅÄÏ×ÁÔØ ÐÏ ÓÉÍ×ÏÌØÎÙÍ ÓÓÙÌËÁÍ\n"
+" -D, --dired ÇÅÎÅÒÉÒÏ×ÁÔØ ×Ù×ÏÄ ÄÌÑ ÒÅÖÉÍÁ Emacs Dired\n"
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f ÎÅ ÓÏÒÔÉÒÏ×ÁÔØ, ×ËÌÀÞÁÅÔ -aU, ×ÙËÌÀÞÁÅÔ -ls --"
+"color\n"
+" -F, --classify ÄÏÂÁ×ÌÑÔØ Ë ÉÍÅÎÉ ÆÁÊÌÁ ÉÎÄÉËÁÔÏÒ (ÏÄÉÎ ÉÚ */"
+"=>@|)\n"
+" --file-type ÁÎÁÌÏÇÉÞÎÏ, ÎÏ ÎÅ ÄÏÂÁ×ÌÑÔØ `*'\n"
+" --format=óìï÷ï across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time ÓÉÎÏÎÉÍ -l --time-style=full-iso\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr " -g ËÁË -l, ÎÏ ÎÅ ×Ù×ÏÄÉÔØ ×ÌÁÄÅÌØÃÁ\n"
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+" --group-directories-first\n"
+" ÇÒÕÐÐÉÒÏ×ÁÔØ ËÁÔÁÌÏÇÉ ÐÅÒÅÄ ÆÁÊÌÁÍÉ\n"
+
+#: src/ls.c:4322
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -G, --no-group × ÄÌÉÎÎÏÍ ÆÏÒÍÁÔÅ ÎÅ ÐÅÞÁÔÁÔØ ÉÍÅÎÁ ÇÒÕÐÐ\n"
+" -h, --human-readable c -l, ÐÅÞÁÔÁÔØ ÒÁÚÍÅÒÙ × ÕÄÏÂÎÏÍ ÄÌÑ ÞÅÌÏ×ÅËÁ "
+"×ÉÄÅ\n"
+" (ÎÁÐÒÉÍÅÒ, 1K 234M 2G)\n"
+" --si ÔÏ ÖÅ, ÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÔÅÐÅÎÉ 1000, Á ÎÅ 1024\n"
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+" -H, --dereference-command-line\n"
+" ÓÌÅÄÏ×ÁÔØ ÐÏ ÓÉÍ×ÏÌØÎÙÍ ÓÓÙÌËÁÍ × ËÏÍÁÎÄÎÏÊ "
+"ÓÔÒÏËÅ\n"
+" --dereference-command-line-symlink-to-dir\n"
+" ÓÌÅÄÏ×ÁÔØ ÐÏ ×ÓÅÍ ÓÉÍ×ÏÌØÎÙÍ ÓÓÙÌËÁÍ × "
+"ËÏÍÁÎÄÎÏÊ\n"
+" ÓÔÒÏËÅ, ËÏÔÏÒÙÅ ÕËÁÚÙ×ÁÀÔ ÎÁ ËÁÔÁÌÏÇ\n"
+" --hide=ûáâìïî ÎÅ ÐÏËÁÚÙ×ÁÔØ ÆÁÊÌÙ, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÅ ûáâìïîõ "
+"ÏÂÏÌÏÞËÉ\n"
+" (ÏÔÍÅÎÑÅÔÓÑ ËÌÀÞÁÍÉ -a ÉÌÉ -A)\n"
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=óôéìø ÄÏÂÁ×ÌÑÔØ Ë ÉÍÅÎÁÍ ÜÌÅÍÅÎÔÏ× ÉÎÄÉËÁÔÏÒ Ó\n"
+" ÕËÁÚÁÎÎÙÍ óôéìåí: none (ÐÕÓÔÏ, ÐÏ ÕÍÏÌÞÁÎÉÀ), \n"
+" slash (ËÏÓÁÑ ÞÅÒÔÁ, -p), \n"
+" file-type (ÔÉÐ ÆÁÊÌÁ, --file-type), \n"
+" classify (ÏÐÒÅÄÅÌÑÅÔÓÑ ×ÉÄÏÍ ÆÁÊÌÁ, -F)\n"
+" -i, --inode ÐÅÞÁÔÁÔØ ÉÎÄÅËÓ ËÁÖÄÏÇÏ ÆÁÊÌÁ\n"
+" -I, --ignore=ûáâìïî ÎÅ ÐÏËÁÚÙ×ÁÔØ ÆÁÊÌÙ, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÅ ûáâìïîõ "
+"ÏÂÏÌÏÞËÉ\n"
+" -k ÔÏ ÖÅ, ÞÔÏ É --block-size=1K\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l ÉÓÐÏÌØÚÏ×ÁÔØ ÛÉÒÏËÉÊ ÆÏÒÍÁÔ\n"
+" -L, --dereference ÐÏËÁÚÙ×ÁÑ ÉÎÆÏÒÍÁÃÉÀ ÄÌÑ ÓÉÍ×ÏÌØÎÏÊ ÓÓÙÌËÅ,\n"
+" ÐÏËÁÚÙ×ÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ÆÁÊÌÅ, ÎÁ ËÏÔÏÒÙÊ "
+"ÓÓÙÌËÁ\n"
+" ÓÓÙÌÁÅÔÓÑ\n"
+" -m ×ÙÄÁ×ÁÔØ ÓÐÉÓÏË ÎÁ ×ÓÀ ÛÉÒÉÎÕ ÞÅÒÅÚ ÚÁÐÑÔÕÀ\n"
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid ËÁË -l, ÎÏ ×ÙÄÁ×ÁÔØ ÞÉÓÌÏ×ÙÅ UID É GID\n"
+" -N, --literal ÐÅÞÁÔÁÔØ ÉÍÅÎÁ ËÁË ÅÓÔØ (ÎÅ ÏÂÒÁÂÁÔÙ×ÁÔØ "
+"ÏÓÏÂÏ, \n"
+" ÎÁÐÒÉÍÅÒ, ÕÐÒÁ×ÌÑÀÝÉÅ ÚÎÁËÉ)\n"
+" -o ËÁË -l, ÎÏ ÎÅ ×Ù×ÏÄÉÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ÇÒÕÐÐÅ\n"
+" -p, --indicator-style=slash ÄÏÂÁ×ÌÑÔØ ÉÎÄÉËÁÔÏÒ / Ë ËÁÔÁÌÏÇÁÍ\n"
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars ÐÅÞÁÔÁÔØ ? ×ÍÅÓÔÏ ÎÅ ÇÒÁÆÉÞÅÓËÉÈ ÓÉÍ×ÏÌÏ×\n"
+" --show-control-chars ÐÏËÁÚÙ×ÁÔØ ÎÅÐÅÞÁÔÁÅÍÙÅ ÓÉÍ×ÏÌÙ (ÐÏ ÕÍÏÌÞÁÎÉÀ\n"
+" ÅÓÌÉ ÐÒÏÇÒÁÍÍÁ ÎÅ `ls' É ×Ù×ÏÄ ÉÄÅÔ ÎÅ ÎÁ\n"
+" ÔÅÒÍÉÎÁÌ).\n"
+" -Q, --quote-name ÚÁËÌÀÞÁÔØ ÉÍÑ ÆÁÊÌÁ × ËÁ×ÙÞËÉ\n"
+" --quoting-style=WORD ÉÓÐÏÌØÚÏ×ÁÔØ ÔÉÐ ÚÁËÌÀÞÅÎÉÑ × ËÁ×ÙÞËÉ WORD:\n"
+" literal, shell, shell-always, c, escape\n"
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse ÏÂÒÁÔÎÙÊ ÐÏÒÑÄÏË ÓÏÒÔÉÒÏ×ËÉ\n"
+" -R, --recursive ÒÅËÕÒÓÉ×ÎÏ ÐÏËÁÚÙ×ÁÔØ ËÁÔÁÌÏÇÉ\n"
+" -s, --size ÐÅÞÁÔÁÔØ ÒÁÚÍÅÒ ËÁÖÄÏÇÏ ÆÁÊÌÁ, × ÂÌÏËÁÈ\n"
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S ÓÏÒÔÉÒÏ×ÁÔØ ÐÏ ÒÁÚÍÅÒÕ ÆÁÊÌÁ\n"
+" --sort=óìï÷ï ÓÏÒÔÉÒÏ×ÁÔØ ÐÏ óìï÷õ, Á ÎÅ ÐÏ ÉÍÅÎÉ: \n"
+" none (ÂÅÚ ÓÏÒÔÉÒÏ×ËÉ) -U, \n"
+" extension (ÒÁÓÛÉÒÅÎÉÅ) -X, size (ÒÁÚÍÅÒ) -S,\n"
+" time (×ÒÅÍÑ) -t, version (×ÅÒÓÉÑ) -v\n"
+" --time=óìï÷ï Ó ËÌÀÞÏÍ -l, ÐÏËÁÚÙ×ÁÔØ ×ÍÅÓÔÏ ×ÒÅÍÅÎÉ "
+"ÉÚÍÅÎÅÎÉÑ \n"
+" ×ÒÅÍÑ, ÚÁÄÁÎÎÏÅ óìï÷ïí: \n"
+" atime -u, access -u, use -u (×ÒÅÍÑ ÄÏÓÔÕÐÁ),\n"
+" ctime -c ÉÌÉ status -c (×ÒÅÍÑ ÉÚÍÅÎÅÎÉÑ "
+"ÓÔÁÔÕÓÁ);\n"
+" ÅÓÌÉ --sort=time, ÉÓÐÏÌØÚÏ×ÁÔØ ÕËÁÚÁÎÎÏÅ\n"
+" ×ÒÅÍÑ × ËÁÞÅÓÔ×Å ËÌÀÞÁ ÓÏÒÔÉÒÏ×ËÉ\n"
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=óôéìø Ó -l, ÐÏËÁÚÙ×ÁÔØ ×ÒÅÍÑ ÉÓÐÏÌØÚÕÑ ÕËÁÚÁÎÎÙÊ "
+"óôéìø:\n"
+" full-iso, long-iso, iso, locale, +æïòíáô.\n"
+" æïòíáô ÉÎÔÅÒÐÒÅÔÉÒÕÅÔÓÑ ËÁË × `date'; ÅÓÌÉ "
+"æïòíáô\n"
+" -- ÜÔÏ æïòíáô1<ÐÅÒÅ×ÏÄ-ÓÔÒÏËÉ>æïòíáô2, æïòíáô1\n"
+" ÐÒÉÍÅÎÑÅÔÓÑ Ë ÓÔÁÒÙÍ ÆÁÊÌÁÍ, Á æïòíáô2 Ë "
+"ÎÏ×ÙÍ;\n"
+" ÅÓÌÉ Ë óôéìà ÄÏÂÁ×ÌÅÎ ÐÒÅÆÉËÓ `posix-', ÔÏ ÏÎ\n"
+" ÄÅÊÓÔ×ÕÅÔ ÔÏÌØËÏ × ÌÏËÁÌÉ, ÏÔÌÉÞÎÏÊ ÏÔ POSIX\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+" -t ÓÏÒÔÉÒÏ×ÁÔØ ÐÏ ×ÒÅÍÅÎÉ ÉÚÍÅÎÅÎÉÑ\n"
+" -T, --tabsize=òáúíåò ÉÓÐÏÌØÚÏ×ÁÔØ ÔÁÂÕÌÑÃÉÀ ÕËÁÚÁÎÎÏÇÏ òáúíåòá, Á ÎÅ "
+"8\n"
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u Ó -lt: ÓÏÒÔÉÒÏ×ÁÔØ É ÐÏËÁÚÙ×ÁÔØ ×ÒÅÍÑ ÄÏÓÔÕÐÁ\n"
+" c -l: ÐÏËÁÚÙ×ÁÔØ ×ÒÅÍÑ ÄÏÓÔÕÐÁ É ÓÏÒÔÉÒÏ×ÁÔØ "
+"ÐÏ ÉÍÅÎÉ\n"
+" ÉÎÁÞÅ: ÓÏÒÔÉÒÏ×ÁÔØ ÐÏ ×ÒÅÍÅÎÉ ÄÏÓÔÕÐÁ\n"
+" -U ÎÅ ÓÏÒÔÉÒÏ×ÁÔØ; ÐÅÞÁÔÁÔØ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó\n"
+" ÆÉÚÉÞÅÓËÉÍ ÒÁÓÐÏÌÏÖÅÎÉÅÍ\n"
+" -v ÓÏÒÔÉÒÏ×ÁÔØ ÐÏ ×ÅÒÓÉÉ\n"
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -w, --width=þéóìï ÚÁÄÁÅÔ ÛÉÒÉÎÕ ÜËÒÁÎÁ ×ÍÅÓÔÏ ÔÅËÕÝÅÇÏ ÚÎÁÞÅÎÉÑ\n"
+" -x ÐÅÒÅÞÉÓÌÑÅÔ ×ÈÏÖÄÅÎÉÑ ÐÏ ÓÔÒÏËÁÍ, Á ÎÅ ÐÏ "
+"ÓÔÏÌÂÃÁÍ\n"
+" -X ÓÏÒÔÉÒÏ×ÁÔØ ÐÏ ÒÁÓÛÉÒÅÎÉÀ × ÁÌÆÁ×ÉÔÎÏÍ ÐÏÒÑÄËÅ\n"
+" -1 ÐÅÒÅÞÉÓÌÑÔØ ÐÏ ÏÄÎÏÍÕ ÆÁÊÌÕ ÎÁ ÓÔÒÏËÅ\n"
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"ðÏ ÕÍÏÌÞÁÎÉÀ Ã×ÅÔ ÎÅ ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÒÁÚÌÉÞÅÎÉÑ ÆÁÊÌÏ×. üÔÏ\n"
+"ÜË×É×ÁÌÅÎÔÎÏ ÉÓÐÏÌØÚÏ×ÁÎÉÀ --color=none. éÓÐÏÌØÚÏ×ÁÎÉÅ ËÌÀÞÁ --color\n"
+"ÂÅÚ ÎÅÏÂÑÚÁÔÅÌØÎÏÇÏ ÁÒÇÕÍÅÎÔÁ ëïçäá ÜË×É×ÁÌÅÎÔÎÏ --color=always. ó\n"
+"ËÌÀÞÏÍ --color=auto, ËÏÄÙ Ã×ÅÔÁ ÂÕÄÕÔ ×ÙÄÁ×ÁÔØÓÑ, ÔÏÌØËÏ ÅÓÌÉ\n"
+"ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ ÐÏÄËÌÀÞÅÎ Ë ÔÅÒÍÉÎÁÌÕ (tty). îÁ Ã×ÅÔÁ ÍÏÖÅÔ ×ÌÉÑÔØ\n"
+"ÐÅÒÅÍÅÎÎÁÑ ÓÒÅÄÙ LS_COLORS; ÅÅ ÍÏÖÎÏ ÌÅÇËÏ ÕÓÔÁÎÏ×ÉÔØ Ó ÐÏÍÏÝØÀ\n"
+"ËÏÍÁÎÄÙ dircolors.\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+"\n"
+"÷ÙÈÏÄÎÏÊ ÓÔÁÔÕÓ ÒÁ×ÅÎ 0 × ÓÌÕÞÁÅ ÎÏÒÍÁÌØÎÏÇÏ ÚÁ×ÅÒÛÅÎÉÑ, 1 × ÓÌÕÞÁÅ\n"
+"ÎÅÂÏÌØÛÉÈ ÐÒÏÂÌÅÍ É 2, ÅÓÌÉ ×ÏÚÎÉËÌÁ ÓÅÒØÅÚÎÁÑ ÐÒÏÂÌÅÍÁ.\n"
+
+#: src/md5sum.c:150
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ] [æáêì]...\n"
+"ðÅÞÁÔÁÅÔ ÉÌÉ ÐÒÏ×ÅÒÑÅÔ ËÏÎÔÒÏÌØÎÙÅ ÓÕÍÍÙ %s (%d-ÂÉÔÎÙÅ).\n"
+"åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ.\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+" -b, --binary ÞÉÔÁÔØ × Ä×ÏÉÞÎÏÍ ÒÅÖÉÍÅ (ÐÏ ÕÍÏÌÞÁÎÉÀ, ÅÓÌÉ "
+"ÞÉÔÁÅÔÓÑ\n"
+" ÎÅ ÔÅÒÍÉÎÁÌØÎÙÊ ××ÏÄ)\n"
+
+#: src/md5sum.c:164
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+" -b, --binary ÞÉÔÁÔØ × Ä×ÏÉÞÎÏÍ ÒÅÖÉÍÅ\n"
+"\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr " -c, --check ÞÉÔÁÅÔ ÓÕÍÍÙ %s ÉÚ æáêìï÷ É Ó×ÅÒÑÅÔ ÉÈ\n"
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+" -t, --text ÞÉÔÁÔØ × ÔÅËÓÔÏ×ÏÍ ÒÅÖÉÍÅ (ÐÏ ÕÍÏÌÞÁÎÉÀ, ÅÓÌÉ "
+"ÞÉÔÁÅÔÓÑ\n"
+" ÔÅÒÍÉÎÁÌØÎÙÊ ××ÏÄ)\n"
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr " -t, --text ÞÉÔÁÔØ × ÔÅËÓÔÏ×ÏÍ ÒÅÖÉÍÅ (ÐÏ ÕÍÏÌÞÁÎÉÀ)\n"
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"\n"
+"ä×Á ÓÌÅÄÕÀÝÉÈ ËÌÀÞÁ ÉÓÐÏÌØÚÕÀÔÓÑ ÔÏÌØËÏ ÐÒÉ ÐÒÏ×ÅÒËÅ ËÏÎÔÒÏÌØÎÙÈ ÓÕÍÍ:\n"
+" --status ÎÅ ÐÒÏÉÚ×ÏÄÉÔØ ×Ù×ÏÄ, ×ÙÈÏÄÎÏÅ ÚÎÁÞÅÎÉÅ "
+"ÐÏËÁÚÙ×ÁÅÔ\n"
+" ÕÓÐÅÈ ÐÒÏ×ÅÒËÉ\n"
+" -w, --warn ÐÒÅÄÕÐÒÅÖÄÁÔØ Ï ÎÅÐÒÁ×ÉÌØÎÏ ÓÏÓÔÁ×ÌÅÎÎÙÈ ÓÔÒÏËÁÈ "
+"×\n"
+" ÓÐÉÓËÅ ËÏÎÔÒÏÌØÎÙÈ ÓÕÍÍ\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"íÅÔÏÄ ×ÙÞÉÓÌÅÎÉÑ ËÏÎÔÒÏÌØÎÙÈ ÓÕÍÍ ÏÐÉÓÁÎ × %s. ÷ÈÏÄÎÙÍÉ ÄÁÎÎÙÍÉ ÐÒÉ\n"
+"ÐÒÏ×ÅÒËÅ ÄÏÌÖÎÙ ÂÙÔØ ÐÏÌÕÞÅÎÎÙÅ ÒÁÎÅÅ ×ÙÈÏÄÎÙÅ ÄÁÎÎÙÅ ÜÔÏÊ ÐÒÏÇÒÁÍÍÙ.\n"
+"ðÏ ÕÍÏÌÞÁÎÉÀ ÐÅÞÁÔÁÅÔ ÓÔÒÏËÕ Ó ËÏÎÔÒÏÌØÎÏÊ ÓÕÍÍÏÊ, ÚÎÁË, ÐÏËÁÚÙ×ÁÀÝÉÊ\n"
+"ÔÉÐ ÆÁÊÌÁ (`*' ÄÌÑ Ä×ÏÉÞÎÙÈ, ` ' ÄÌÑ ÔÅËÓÔÏ×ÙÈ), É ÉÍÑ ËÁÖÄÏÇÏ æáêìá.\n"
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÔÒÏË ËÏÎÔÒÏÌØÎÙÈ ÓÕÍÍ"
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %<PRIuMAX>: ÎÅÐÒÁ×ÉÌØÎÏ ÓÏÓÔÁ×ÌÅÎÎÁÑ ÓÔÒÏËÁ ËÏÎÔÒÏÌØÎÏÊ ÓÕÍÍÙ %s"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÉÌÉ ÐÒÏÞÉÔÁÔØ\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "îåõóðåûîï"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "õÓÐÅÈ"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: ÏÛÉÂËÁ ÞÔÅÎÉÑ"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: ÎÅ ÎÁÊÄÅÎÏ ×ÅÒÎÏ ÓÏÓÔÁ×ÌÅÎÎÙÈ ÓÔÒÏË ËÏÎÔÒÏÌØÎÙÈ ÓÕÍÍ %s"
+
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] ""
+"ðòåäõðòåöäåîéå: ÎÅ ÕÄÁÌÏÓØ ÐÒÏÞÉÔÁÔØ %<PRIuMAX> ÐÅÒÅÞÉÓÌÅÎÎÙÊ ÆÁÊÌ ÉÚ %"
+"<PRIuMAX>"
+msgstr[1] ""
+"ðòåäõðòåöäåîéå: ÎÅ ÕÄÁÌÏÓØ ÐÒÏÞÉÔÁÔØ %<PRIuMAX> ÐÅÒÅÞÉÓÌÅÎÎÙÈ ÆÁÊÌÁ ÉÚ %"
+"<PRIuMAX>"
+msgstr[2] ""
+"ðòåäõðòåöäåîéå: ÎÅ ÕÄÁÌÏÓØ ÐÒÏÞÉÔÁÔØ %<PRIuMAX> ÐÅÒÅÞÉÓÌÅÎÎÙÈ ÆÁÊÌÏ× ÉÚ %"
+"<PRIuMAX>"
+
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] ""
+"ðòåäõðòåöäåîéå: îå ÓÏ×ÐÁÌÁ %<PRIuMAX> ×ÙÞÉÓÌÅÎÎÁÑ ËÏÎÔÒÏÌØÎÁÑ ÓÕÍÍÁ ÉÚ %"
+"<PRIuMAX>"
+msgstr[1] ""
+"ðòåäõðòåöäåîéå: îå ÓÏ×ÐÁÌÉ %<PRIuMAX> ×ÙÞÉÓÌÅÎÎÙÅ ËÏÎÔÒÏÌØÎÙÅ ÓÕÍÍÙ ÉÚ %"
+"<PRIuMAX>"
+msgstr[2] ""
+"ðòåäõðòåöäåîéå: îå ÓÏ×ÐÁÌÉ %<PRIuMAX> ×ÙÞÉÓÌÅÎÎÙÈ ËÏÎÔÒÏÌØÎÙÈ ÓÕÍÍ ÉÚ %"
+"<PRIuMAX>"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr "ËÌÀÞÉ --binary É --text ÂÅÓÓÍÙÓÌÅÎÎÙ ÐÒÉ ÐÒÏ×ÅÒËÅ ËÏÎÔÒÏÌØÎÙÈ ÓÕÍÍ"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "ËÌÀÞ --status ÉÍÅÅÔ ÓÍÙÓÌ ÔÏÌØËÏ ÐÒÉ ÐÒÏ×ÅÒËÅ ËÏÎÔÒÏÌØÎÙÈ ÓÕÍÍ"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "ËÌÀÞ --warn ÉÍÅÅÔ ÓÍÙÓÌ ÔÏÌØËÏ ÐÒÉ ÐÒÏ×ÅÒËÅ ËÏÎÔÒÏÌØÎÙÈ ÓÕÍÍ"
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ] ëáôáìïç...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"óÏÚÄÁÅÔ DIRECTORY, ÅÓÌÉ ÏÎÁ ÅÝÅ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ.\n"
+"\n"
+
+# not a=rwx - umask ??? ÞÔÏ ÚÁ ÂÒÅÄ
+#: src/mkdir.c:67
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+" -m, --mode=MODE ÕÓÔÁÎÏ×ÉÔØ ËÏÄ ÄÏÓÔÕÐÁ (ËÁË × chmod)\n"
+" -p, --parents ÎÅ ×ÙÄÁ×ÁÔØ ÏÛÉÂÏË ÅÓÌÉ ÓÕÝÅÓÔ×ÕÅÔ, ÓÏÚÄÁ×ÁÔØ\n"
+" ÒÏÄÉÔÅÌØÓËÉÅ ËÁÔÁÌÏÇÉ ÅÓÌÉ ÎÅÏÂÈÏÄÉÍÏ\n"
+" -v, --verbose ÐÅÞÁÔÁÔØ ÓÏÏÂÝÅÎÉÅ Ï ËÁÖÄÏÍ ÓÏÚÄÁÎÎÏÍ ËÁÔÁÌÏÇÅ\n"
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "ÓÏÚÄÁÎ ËÁÔÁÌÏÇ %s"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ] éíñ...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"óÏÚÄÁÅÔ ÉÍÅÎÏ×ÁÎÎÙÅ ËÁÎÁÌÙ (FIFO) ÄÌÑ ÚÁÄÁÎÎÏÇÏ NAME.\n"
+"\n"
+
+# not a=rwx - umask ??? ÞÔÏ ÚÁ ÂÒÅÄ
+#: src/mkfifo.c:62 src/mknod.c:64
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr " -m, --mode=òåöéí ÕÓÔÁÎÏ×ÉÔØ ÂÉÔÙ ÒÁÚÒÅÛÅÎÉÊ ÄÌÑ ÆÁÊÌÁ × òåöéí\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "ÎÅ×ÅÒÎÙÊ ÒÅÖÉÍ"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr "ÒÅÖÉÍ ÄÏÌÖÅÎ ÚÁÄÁ×ÁÔØ ÔÏÌØËÏ ÂÉÔÙ ÒÁÚÒÅÛÅÎÉÊ ÄÌÑ ÆÁÊÌÁ"
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... éíñ ôéð [ïóîï÷îïê ÷ôïòïóôåðåîîùê]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"óÏÚÄÁÅÔ ÓÐÅÃÉÁÌØÎÙÊ ÆÁÊÌ Ó ÉÍÅÎÅÍ NAME É ÔÉÐÏÍ TYPE.\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+"\n"
+"åÓÌÉ ôéð -- ÜÔÏ b, c ÉÌÉ u, ÎÅÏÂÈÏÄÉÍÏ ÚÁÄÁ×ÁÔØ ËÁË ïóîï÷îïê, ÔÁË É\n"
+"÷ôïòïóôåðåîîùê, Á ÅÓÌÉ ôéð ÒÁ×ÅÎ p, ÉÈ ÎÅÌØÚÑ ÚÁÄÁ×ÁÔØ. åÓÌÉ ïóîï÷îïê\n"
+"ÉÌÉ ÷ôïòïóôåðåîîùê ÎÁÞÉÎÁÀÔÓÑ ÎÁ 0x ÉÌÉ 0X, ÏÎÉ ÉÎÔÅÒÐÒÅÔÉÒÕÀÔÓÑ ËÁË\n"
+"ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÅ ÞÉÓÌÁ; ÅÓÌÉ ÎÁÞÉÎÁÀÔÓÑ ÎÁ 0, ÔÏ ËÁË ×ÏÓØÍÅÒÉÞÎÙÅ;\n"
+"ÉÎÁÞÅ ËÁË ÄÅÓÑÔÉÞÎÙÅ. ôéð ÍÏÖÅÔ ÐÒÉÎÉÍÁÔØ ÓÌÅÄÕÀÝÉÅ ÚÎÁÞÅÎÉÑ:\n"
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+" b ÓÏÚÄÁÔØ ÆÁÊÌ ÂÌÏÞÎÏÇÏ ÕÓÔÒÏÊÓÔ×Á (ÂÕÆÅÒÉÚÏ×ÁÎÎÙÊ)\n"
+" c, u ÓÏÚÄÁÔØ ÆÁÊÌ ÓÉÍ×ÏÌØÎÏÇÏ ÕÓÔÒÏÊÓÔ×Á (ÎÅÂÕÆÅÒÉÚÏ×ÁÎÎÙÊ)\n"
+" p ÓÏÚÄÁÔØ ÉÍÅÎÏ×ÁÎÎÙÊ ËÁÎÁÌ\n"
+
+#: src/mknod.c:146
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"äÌÑ ÓÐÅÃÉÁÌØÎÏÇÏ ÆÁÊÌÁ ÄÏÌÖÎÙ ÂÙÔØ ÕËÁÚÁÎÙ ÏÓÎÏ×ÎÏÊ É ×ÔÏÒÏÓÔÅÐÅÎÎÙÊ ÎÏÍÅÒÁ "
+"ÕÓÔÒÏÊÓÔ×Á."
+
+#: src/mknod.c:156
+msgid "Fifos do not have major and minor device numbers."
+msgstr "õ ÆÁÊÌÏ×-ÏÞÅÒÅÄÅÊ ÎÅÔ ÏÓÎÏ×ÎÏÇÏ É ×ÔÏÒÏÓÔÅÐÅÎÎÏÇÏ ÞÉÓÌÁ ÕÓÔÒÏÊÓÔ×Á."
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "ÂÌÏÞÎÙÅ ÓÐÅÃÉÁÌØÎÙÅ ÆÁÊÌÙ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "ÚÎÁËÏ×ÙÅ ÓÐÅÃÉÁÌØÎÙÅ ÆÁÊÌÙ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "ÎÅ×ÅÒÎÏÅ ÏÓÎÏ×ÎÏÅ ÞÉÓÌÏ ÕÓÔÒÏÊÓÔ×Á %s"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "ÎÅ×ÅÒÎÏÅ ×ÔÏÒÏÓÔÅÐÅÎÎÏÅ ÞÉÓÌÏ ÕÓÔÒÏÊÓÔ×Á %s"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "ÎÅ×ÅÒÎÏÅ ÕÓÔÒÏÊÓÔ×Ï %s %s"
+
+#: src/mknod.c:216
+#, c-format
+msgid "invalid device type %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÔÉÐ ÕÓÔÒÏÊÓÔ×Á %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"ðÅÒÅÉÍÅÎÏ×Ù×ÁÅÔ SOURCE × DEST, ÉÌÉ ÐÅÒÅÎÏÓÉÔ SOURCE(Ù) × DIRECTORY.\n"
+"\n"
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup[=ëïîôòïìø] ÓÏÚÄÁ×ÁÔØ ÒÅÚÅÒ×ÎÙÅ ËÏÐÉÉ ÃÅÌÅ×ÙÈ ÆÁÊÌÏ×\n"
+" -b ÔÏ ÖÅ, ÞÔÏ É --backup, ÎÏ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n"
+" -f, --force ÐÅÒÅÐÉÓÙ×ÁÔØ ÓÕÝÅÓÔ×ÕÀÝÉÅ ÆÁÊÌÙ ÎÅ ÓÐÒÁÛÉ×ÁÑ\n"
+" -i, --interactive ÓÐÒÁÛÉ×ÁÔØ ÐÅÒÅÄ ÔÅÍ ËÁË ÐÅÒÅÐÉÓÙ×ÁÔØ\n"
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --strip-trailing-slashes ÕÄÁÌÑÅÔ ×ÓÅ ËÏÎÅÞÎÙÅ ËÏÓÙÅ ÞÅÒÔÙ ÉÚ ËÁÖÄÏÇÏ\n"
+" ÁÒÇÕÍÅÎÔÁ éóôïþîéë\n"
+" -S, --suffix=óõææéëó ÐÅÒÅËÒÙ×ÁÅÔ ÏÂÙÞÎÙÊ ÓÕÆÆÉËÓ ÄÌÑ ÒÅÚÅÒ×ÎÙÈ "
+"ËÏÐÉÊ\n"
+
+#: src/mv.c:308
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" -t, --target-directory=ëáôáìïç ÐÅÒÅÍÅÓÔÉÔØ ×ÓÅ éóôïþîéëé × ëáôáìïç\n"
+" -T, --no-target-directory ÓÞÉÔÁÔØ îáúîáþåîéå ÏÂÙÞÎÙÍ ÆÁÊÌÏÍ\n"
+" -u, --update ÐÅÒÅÍÅÝÁÔØ ÔÏÌØËÏ ÔÏÇÄÁ ËÏÇÄÁ éóôïþîéë\n"
+" ÎÏ×ÅÅ ÞÅÍ ÆÁÊÌ ÎÁÚÎÁÞÅÎÉÑ, ÉÌÉ ËÏÇÄÁ ÆÁÊÌ\n"
+" ÎÁÚÎÁÞÅÎÉÑ ÏÔÓÕÔÓÔ×ÕÅÔ\n"
+" -v, --verbose ÐÏÑÓÎÑÔØ ÐÒÏÉÚ×ÏÄÉÍÙÅ ÄÅÊÓÔ×ÉÑ\n"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ] [ëïíáîäá [áòç]...]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+"úÁÐÕÓËÁÅÔ ëïíáîäõ Ó ÉÚÍÅÎÅÎÎÙÍ ÚÎÁÞÅÎÉÅÍ nice, ÞÔÏ ×ÌÉÑÅÔ ÎÁ ÐÒÉÏÒÉÔÅÔ\n"
+"ÄÌÑ ÐÌÁÎÉÒÏ×ÝÉËÁ. åÓÌÉ ëïíáîäá ÎÅ ÚÁÄÁÎÁ, ÐÅÞÁÔÁÅÔ ÔÅËÕÝÅÅ ÚÎÁÞÅÎÉÅ\n"
+"nice. äÏÐÕÓÔÉÍÙ ÐÒÅÄÅÌÙ ÏÔ %d (ÎÁÉÂÏÌØÛÉÊ ÐÒÉÏÒÉÔÅÔ) ÄÏ %d\n"
+"(ÎÁÉÍÅÎØÛÉÊ).\n"
+"\n"
+" -n, --adjustment=N Õ×ÅÌÉÞÉÔØ nice ÎÁ ÃÅÌÏÅ ÞÉÓÌÏ N (ÐÏ ÕÍÏÌÞÁÎÉÀ 10)\n"
+
+#: src/nice.c:155
+#, c-format
+msgid "invalid adjustment %s"
+msgstr "ÎÅ×ÅÒÎÁÑ ÐÏÐÒÁ×ËÁ %s"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "ÅÓÌÉ ÚÁÄÁÎÁ ÐÏÐÒÁ×ËÁ, ÄÏÌÖÎÁ ÂÙÔØ ÕËÁÚÁÎÁ ËÏÍÁÎÄÁ"
+
+#: src/nice.c:171 src/nice.c:182
+#, c-format
+msgid "cannot get niceness"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÚÎÁÔØ ÚÎÁÞÅÎÉÅ nice"
+
+#: src/nice.c:186
+#, c-format
+msgid "cannot set niceness"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÚÎÁÞÅÎÉÅ nice"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ ËÁÖÄÙÊ æáêì ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ, ÄÏÂÁ×ÌÑÑ ÎÏÍÅÒÁ ÓÔÒÏË.\n"
+"åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ.\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=óôéìø ÉÓÐÏÌØÚÏ×ÁÔØ óôéìø ÎÕÍÅÒÏ×ÁÎÉÑ ÓÔÒÏË ÔÅÌÁ\n"
+" -d, --section-delimiter=óó ÉÓÐÏÌØÚÏ×ÁÔØ óó ÄÌÑ ÒÁÚÄÅÌÅÎÉÑ ÌÏÇÉÞÅÓËÉÈ\n"
+" ÓÔÒÁÎÉÃ\n"
+" -f, --footer-numbering=óôéìø ÉÓÐÏÌØÚÏ×ÁÔØ óôéìø ÎÕÍÅÒÏ×ÁÎÉÑ ÓÔÒÏË "
+"ÎÉÖÎÅÇÏ\n"
+" ËÏÌÏÎÔÉÔÕÌÁ\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=óôéìø ÉÓÐÏÌØÚÏ×ÁÔØ óôéìø ÎÕÍÅÒÏ×ÁÎÉÑ ÓÔÒÏË "
+"×ÅÒÈÎÅÇÏ\n"
+" ËÏÌÏÎÔÉÔÕÌÁ\n"
+" -i, --page-increment=þéóìï ÛÁÇ Õ×ÅÌÉÞÅÎÉÑ ÎÏÍÅÒÏ× ÓÔÒÏË\n"
+" -l, --join-blank-lines=þéóìï ÚÁÄÁÎÎÏÅ þéóìï ÐÕÓÔÙÈ ÓÔÒÏË ÓÞÉÔÁÔØ ÏÄÎÏÊ\n"
+" -n, --number-format=æïòíáô ÉÓÐÏÌØÚÏ×ÁÔØ æïòíáô ÄÌÑ ÎÏÍÅÒÏ× ÓÔÒÏË\n"
+" -p, --no-renumber ÎÅ ÎÁÞÉÎÁÔØ ÎÕÍÅÒÁÃÉÀ ÚÁÎÏ×Ï ÐÏÓÌÅ ËÁÖÄÏÊ\n"
+" ÌÏÇÉÞÅÓËÏÊ ÓÔÒÁÎÉÃÙ\n"
+" -s, --number-separator=óôòïëá ÄÏÂÁ×ÌÑÔØ óôòïëõ ÐÏÓÌÅ ÎÏÍÅÒÁ\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=þéóìï ÐÅÒ×ÙÊ ÎÏÍÅÒ ÓÔÒÏËÉ ÄÌÑ ËÁÖÄÏÊ ÌÏÇÉÞÅÓËÏÊ\n"
+" ÓÔÒÁÎÉÃÙ\n"
+" -w, --number-width=þéóìï ÉÓÐÏÌØÚÏ×ÁÔØ ÚÁÄÁÎÎÏÅ þéóìï ÓÔÏÌÂÃÏ× ÄÌÑ\n"
+" ÎÏÍÅÒÏ× ÓÔÒÏË\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"ðÏ ÕÍÏÌÞÁÎÉÀ ÉÓÐÏÌØÚÕÀÔÓÑ -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. óó -- ÜÔÏ "
+"Ä×Á\n"
+"ÚÎÁËÁ, ÒÁÚÄÅÌÑÀÝÉÅ ÌÏÇÉÞÅÓËÉÅ ÓÔÒÁÎÉÃÙ; ÅÓÌÉ ÚÁÄÁÎ ÔÏÌØËÏ ÏÄÉÎ, ÔÏ × "
+"ËÁÞÅÓÔ×Å\n"
+"×ÔÏÒÏÇÏ ÉÓÐÏÌØÚÕÅÔÓÑ :. ÷×ÏÄÉÔÅ \\\\ ÞÔÏÂÙ ÐÏÌÕÞÉÔØ \\. óôéìø ÚÁÄÁÅÔÓÑ ËÁË "
+"ÏÄÉÎ\n"
+"ÉÚ ÓÌÅÄÕÀÝÉÈ:\n"
+
+#: src/nl.c:214
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a ÎÕÍÅÒÏ×ÁÔØ ×ÓÅ ÓÔÒÏËÉ\n"
+" t ÎÕÍÅÒÏ×ÁÔØ ÔÏÌØËÏ ÎÅÐÕÓÔÙÅ ÓÔÒÏËÉ\n"
+" n ÎÅ ÎÕÍÅÒÏ×ÁÔØ ÓÔÒÏËÉ\n"
+" pâò÷ ÎÕÍÅÒÏ×ÁÔØ ÔÏÌØËÏ ÓÔÒÏËÉ, ÞÁÓÔØ ËÏÔÏÒÙÈ ÓÏ×ÐÁÄÁÅÔ Ó ÂÁÚÏ×ÙÍ\n"
+" ÒÅÇÕÌÑÒÎÙÍ ×ÙÒÁÖÅÎÉÅÍ âò÷\n"
+"\n"
+"æïòíáô ÚÁÄÁÅÔÓÑ ËÁË ÏÄÉÎ ÉÚ ÓÌÅÄÕÀÝÉÈ:\n"
+"\n"
+" ln ×ÙÒÁ×ÎÉ×ÁÔØ ÐÏ ÌÅ×ÏÍÕ ËÒÁÀ, ÎÅ ×Ù×ÏÄÉÔØ ÎÁÞÁÌØÎÙÅ ÎÕÌÉ\n"
+" rn ×ÙÒÁ×ÎÉ×ÁÔØ ÐÏ ÐÒÁ×ÏÍÕ ËÒÁÀ, ÎÅ ×Ù×ÏÄÉÔØ ÎÁÞÁÌØÎÙÅ ÎÕÌÉ\n"
+" rz ×ÙÒÁ×ÎÉ×ÁÔØ ÐÏ ÐÒÁ×ÏÍÕ ËÒÁÀ, ×Ù×ÏÄÉÔØ ÎÁÞÁÌØÎÙÅ ÎÕÌÉ\n"
+"\n"
+
+#: src/nl.c:281
+#, c-format
+msgid "line number overflow"
+msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÎÏÍÅÒÁ ÓÔÒÏËÉ"
+
+#: src/nl.c:479
+#, c-format
+msgid "invalid header numbering style: %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÓÔÉÌØ ÎÕÍÅÒÏ×ÁÎÉÑ ÚÁÇÏÌÏ×ËÁ: %s"
+
+#: src/nl.c:487
+#, c-format
+msgid "invalid body numbering style: %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÓÔÉÌØ ÎÕÍÅÒÏ×ÁÎÉÑ ÔÅÌÁ: %s"
+
+#: src/nl.c:495
+#, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÓÔÉÌØ ÎÕÍÅÒÏ×ÁÎÉÑ ÎÉÖÎÅÇÏ ËÏÌÏÎÔÉÔÕÌÁ: %s"
+
+#: src/nl.c:504
+#, c-format
+msgid "invalid starting line number: %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÎÏÍÅÒ ÎÁÞÁÌØÎÏÊ ÓÔÒÏËÉ: %s"
+
+#: src/nl.c:513
+#, c-format
+msgid "invalid line number increment: %s"
+msgstr "ÎÅ×ÅÒÎÏÅ ÐÒÉÒÁÝÅÎÉÅ ÎÏÍÅÒÁ ÓÔÒÏËÉ: %s"
+
+#: src/nl.c:525
+#, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÐÕÓÔÙÈ ÓÔÒÏË: %s"
+
+#: src/nl.c:539
+#, c-format
+msgid "invalid line number field width: %s"
+msgstr "ÎÅ×ÅÒÎÁÑ ÛÉÒÉÎÁ ÐÏÌÑ ÄÌÑ ÎÏÍÅÒÁ ÓÔÒÏËÉ: %s"
+
+#: src/nl.c:558
+#, c-format
+msgid "invalid line numbering format: %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÆÏÒÍÁÔ ÎÕÍÅÒÁÃÉÉ ÓÔÒÏË: %s"
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s ëïíáîäá [áòçõíåîô]...\n"
+" ÉÌÉ: %s ëìàþ\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+"÷ÙÐÏÌÎÑÅÔ ëïíáîäõ ÉÇÎÏÒÉÒÕÑ ÓÉÇÎÁÌÙ ÏÂÒÙ×Á ÔÅÒÍÉÎÁÌØÎÏÊ ÌÉÎÉÉ.\n"
+"\n"
+
+#: src/nohup.c:117
+#, c-format
+msgid "ignoring input"
+msgstr "××ÏÄ ÉÇÎÏÒÉÒÕÅÔÓÑ"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ %s"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "××ÏÄ ÉÇÎÏÒÉÒÕÅÔÓÑ, ×Ù×ÏÄ ÄÏÂÁ×ÌÑÅÔÓÑ × %s"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+"ÎÅ ÕÄÁÌÏÓØ ÓÄÅÌÁÔØ ÔÁË, ÞÔÏÂÙ ËÏÐÉÑ ÓÔÁÎÄÁÒÔÎÏÇÏ ÐÏÔÏËÁ ÏÛÉÂÏË ÚÁËÒÙÌÁÓØ ÐÒÉ "
+"ÎÁÞÁÌÅ ×ÙÐÏÌÎÅÎÉÑ"
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr "××ÏÄ ÉÇÎÏÒÉÒÕÅÔÓÑ, ÐÏÔÏË ÏÛÉÂÏË ÐÅÒÅÎÁÐÒÁ×ÌÑÀÔÓÑ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ"
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ÐÅÒÅÎÁÐÒÁ×ÉÔØ ÓÔÁÎÄÁÒÔÎÙÊ ÐÏÔÏË ÏÛÉÂÏË"
+
+#: src/od.c:307
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [æáêì]...\n"
+" ÉÌÉ: %s [-abcdfilosx]... [æáêì] [[+]óíåýåîéå[.][b]]\n"
+" ÉÌÉ: %s --traditional [ëìàþ]... [æáêì] [[+]óíåýåîéå[.][b] [+]"
+"[íåôëá][.][b]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"ðÅÞÁÔÁÅÔ ÏÄÎÏÚÎÁÞÎÏÅ (ÐÏ ÕÍÏÌÞÁÎÉÀ ÂÁÊÔÏ×ÏÅ ×ÏÓØÍÅÒÉÞÎÏÅ) ÐÒÅÄÓÔÁ×ÌÅÎÉÅ "
+"æáêìá\n"
+"ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ. åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ "
+"ÓÔÁÎÄÁÒÔÎÙÊ\n"
+"××ÏÄ.\n"
+"\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr "÷ÓÅ ÁÒÇÕÍÅÎÔÙ ÄÌÑ ÄÌÉÎÎÙÈ ËÌÀÞÅÊ ÏÂÑÚÁÔÅÌØÎÙ ÄÌÑ ËÏÒÏÔËÉÈ.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=ïóîï÷áîéå ×Ù×ÏÄÉÔØ ÓÍÅÝÅÎÉÑ × ÆÁÊÌÁÈ × ÚÁÄÁÎÎÏÊ "
+"ÓÉÓÔÅÍÅ\n"
+" ÓÞÉÓÌÅÎÉÑ\n"
+" -j, --skip-bytes=î ÐÒÏÐÕÓÔÉÔØ ÐÅÒ×ÙÅ î ÂÁÊÔ\n"
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=î ÓÞÉÔÙ×ÁÔØ ÔÏÌØËÏ î ÂÁÊÔ × ËÁÖÄÏÍ ÆÁÊÌÅ\n"
+" -s, --strings[=î] ×Ù×ÏÄÉÔØ ÓÔÒÏËÉ ÄÌÉÎÏÊ ÐÏ ÍÅÎØÛÅÊ ÍÅÒÅ î\n"
+" ÇÒÁÆÉÞÅÓËÉÈ ÚÎÁËÏ×\n"
+" -t, --format=ôéð ×ÙÂÉÒÁÅÔ ÆÏÒÍÁÔ ÉÌÉ ÆÏÒÍÁÔÙ ×Ù×ÏÄÁ\n"
+" -v, --output-duplicates ÎÅ ÐÏÍÅÞÁÔØ ÚÎÁËÏÍ * ÎÅ×Ù×ÏÄÉÍÙÅ ÓÔÒÏËÉ\n"
+" -w, --width[=î] ×Ù×ÏÄÉÔØ î ÂÁÊÔ × ËÁÖÄÏÊ ×ÙÈÏÄÎÏÊ ÓÔÒÏËÅ\n"
+" --traditional ÐÒÉÎÉÍÁÔØ ÁÒÇÕÍÅÎÔÙ × ÔÒÁÄÉÃÉÏÎÎÏÊ ÆÏÒÍÅ\n"
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"ôÒÁÄÉÃÉÏÎÎÙÅ ÓÐÅÃÉÆÉËÁÃÉÉ ÆÏÒÍÁÔÁ ÍÏÖÎÏ ÐÉÓÁÔØ ×ÐÅÒÅÍÅÛËÕ, ÏÎÉ "
+"ÁËËÕÍÕÌÉÒÕÀÔÓÑ:\n"
+" -a ÓÉÎÏÎÉÍ -t a, ÉÍÅÎÏ×ÁÎÎÙÅ ÚÎÁËÉ, ÓÔÁÒÛÉÊ ÂÉÔ ÉÇÎÏÒÉÒÕÅÔÓÑ\n"
+" -b ÓÉÎÏÎÉÍ -t o1, ×ÏÓØÍÅÒÉÞÎÙÅ ÂÁÊÔÙ\n"
+" -c ÓÉÎÏÎÉÍ -t c, ASCII-ÚÎÁËÉ ÉÌÉ ÕÐÒÁ×ÌÑÀÝÉÅ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ Ó `\\'\n"
+" -d ÓÉÎÏÎÉÍ -t u2, ÂÅÚÚÎÁËÏ×ÙÅ ÄÅÓÑÔÉÞÎÙÅ Ä×ÕÈÂÁÊÔÏ×ÙÅ ÅÄÉÎÉÃÙ\n"
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f ÓÉÎÏÎÉÍ -t fF, ÞÉÓÌÁ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ\n"
+" -i ÓÉÎÏÎÉÍ -t dI, ÄÅÓÑÔÉÞÎÙÅ ÃÅÌÙÅ\n"
+" -l ÓÉÎÏÎÉÍ -t dL, ÄÅÓÑÔÉÞÎÙÅ ÄÌÉÎÎÙÅ ÃÅÌÙÅ\n"
+" -o ÓÉÎÏÎÉÍ -t o2, ×ÏÓØÍÅÒÉÞÎÙÅ Ä×ÕÈÂÁÊÔÏ×ÙÅ ÅÄÉÎÉÃÙ\n"
+" -s ÓÉÎÏÎÉÍ -t d2, ÄÅÓÑÔÉÞÎÙÅ Ä×ÕÈÂÁÊÔÏ×ÙÅ ÅÄÉÎÉÃÙ\n"
+" -x ÓÉÎÏÎÉÍ -t x2, ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÅ Ä×ÕÈÂÁÊÔÏ×ÙÅ ÅÄÉÎÉÃÙ\n"
+
+#: src/od.c:353
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"åÓÌÉ ÐÒÉÍÅÎÉÍÙ É ÐÅÒ×ÁÑ, É ×ÔÏÒÁÑ ÆÏÒÍÙ ×ÙÚÏ×Á, ÐÒÅÄÐÏÌÁÇÁÅÔÓÑ ×ÔÏÒÁÑ\n"
+"ÆÏÒÍÁ, ÅÓÌÉ ÐÏÓÌÅÄÎÉÊ ÏÐÅÒÁÎÄ ÎÁÞÉÎÁÅÔÓÑ ÎÁ + ÉÌÉ (ÅÓÌÉ ÚÁÄÁÎÙ Ä×Á\n"
+"ÏÐÅÒÁÎÄÁ) ÎÁ ÃÉÆÒÕ. ïÐÅÒÁÎÄ óíåýåîéå ÏÚÎÁÞÁÅÔ -j óíåýåîéå. íåôëá --\n"
+"ÜÔÏ ÐÓÅ×ÄÏÁÄÒÅÓ ÐÅÒ×ÏÇÏ ÎÁÐÅÞÁÔÁÎÎÏÇÏ ÂÁÊÔÁ; ÏÎÁ Õ×ÅÌÉÞÉ×ÁÅÔÓÑ × ÐÒÏÃÅÓÓÅ\n"
+"×Ù×ÏÄÁ. ðÒÅÆÉËÓ 0x ÉÌÉ 0X ÚÁÄÁÅÔ óíåýåîéå ÉÌÉ íåôëõ ËÁË\n"
+"ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÅ ÞÉÓÌÁ, ÓÕÆÆÉËÓ . -- ËÁË ×ÏÓØÍÅÒÉÞÎÙÅ, Á ÓÕÆÆÉËÓ b\n"
+"ÕÍÎÏÖÁÅÔ ÎÁ 512.\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+"\n"
+"ôéð ÓÏÓÔÁ×ÌÑÅÔÓÑ ÉÚ ÏÄÎÏÇÏ ÉÌÉ ÎÅÓËÏÌØËÉÈ ÓÌÅÄÕÀÝÉÈ ÓÐÅÃÉÆÉËÁÃÉÊ:\n"
+"\n"
+" a ÉÍÅÎÏ×ÁÎÎÙÊ ÚÎÁË, ÓÔÁÒÛÉÊ ÂÉÔ ÉÇÎÏÒÉÒÕÅÔÓÑ\n"
+" c ASCII-ÚÎÁË ÉÌÉ ÕÐÒÁ×ÌÑÀÝÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ\n"
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[þéóìï] ÚÎÁËÏ×ÏÅ ÄÅÓÑÔÉÞÎÏÅ ÃÅÌÏÅ ÒÁÚÍÅÒÏÍ ÚÁÄÁÎÎÏÅ þéóìï ÂÁÊÔ\n"
+" f[þéóìï] ÞÉÓÌÏ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ ÒÁÚÍÅÒÏÍ ÚÁÄÁÎÎÏÅ þéóìï ÂÁÊÔ\n"
+" o[þéóìï] ×ÏÓØÍÅÒÉÞÎÏÅ ÃÅÌÏÅ ÒÁÚÍÅÒÏÍ ÚÁÄÁÎÎÏÅ þéóìï ÂÁÊÔ\n"
+" u[þéóìï] ÂÅÚÚÎÁËÏ×ÏÅ ÄÅÓÑÔÉÞÎÏÅ ÃÅÌÏÅ ÒÁÚÍÅÒÏÍ ÚÁÄÁÎÎÏÅ þéóìï ÂÁÊÔ\n"
+" x[þéóìï] ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÅ ÃÅÌÏÅ ÒÁÚÍÅÒÏÍ ÚÁÄÁÎÎÏÅ þéóìï ÂÁÊÔ\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"åÓÌÉ æïòíáô -- ÏÄÎÏ ÉÚ [doux], þéóìï ÍÏÖÅÔ ÚÁÄÁ×ÁÔØÓÑ ËÁË C (char), S "
+"(short),\n"
+"I (int) ÉÌÉ L (long), ÅÓÌÉ æïòíáô ÒÁ×ÅÎ f, ÔÏ þéóìï ÔÁËÖÅ ÍÏÖÅÔ ÂÙÔØ F "
+"(float),\n"
+"D (double) ÉÌÉ L (long double).\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"ïóîï÷áîéå ÍÏÖÅÔ ÂÙÔØ d (ÄÅÓÑÔÉÞÎÙÍ), o (×ÏÓØÍÅÒÉÞÎÙÍ), x (ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÍ) "
+"ÉÌÉ\n"
+"n (ÎÅ ×Ù×ÏÄÉÔØ ÓÍÅÝÅÎÉÑ). î Ó ÐÒÅÆÉËÓÏÍ 0x ÉÌÉ 0X ×ÏÓÐÒÉÎÉÍÁÅÔÓÑ ËÁË\n"
+"ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÅ, Ó ÓÕÆÆÉËÓÏÍ b ÕÍÎÏÖÁÅÔÓÑ ÎÁ 512, Ó ÓÕÆÆÉËÓÏÍ k -- ÎÁ 1024 "
+"É\n"
+"ÓÕÆÆÉËÓÏÍ m -- ÎÁ 1048576. åÓÌÉ ÄÏÂÁ×ÉÔØ Ë ÌÀÂÏÍÕ ÆÏÒÍÁÔÕ ÓÕÆÆÉËÓ z, ÔÏ × "
+"ËÏÎÃÅ\n"
+"ËÁÖÄÏÊ ÓÔÒÏËÉ ÂÕÄÕÔ ×Ù×ÏÄÉÔØÓÑ ÐÅÞÁÔÎÙÅ ÓÉÍ×ÏÌÙ. "
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"--string ÂÅÚ ÞÉÓÌÁ ÐÏÄÒÁÚÕÍÅ×ÁÅÔ 3. --width ÂÅÚ ÞÉÓÌÁ ÐÏÄÒÁÚÕÍÅ×ÁÅÔ\n"
+"32. ðÏ ÕÍÏÌÞÁÎÉÀ od ÉÓÐÏÌØÚÕÅÔ ËÌÀÞÉ -A o -t d2 -w16.\n"
+
+#: src/od.c:683 src/od.c:802
+#, c-format
+msgid "invalid type string %s"
+msgstr "ÎÅ×ÅÒÎÁÑ ÓÔÒÏËÁ ÔÉÐÁ %s"
+
+#: src/od.c:693
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"ÎÅ×ÅÒÎÏ ÚÁÄÁÎÁ ÓÔÒÏËÁ ÔÉÐÁ %s;\n"
+"ÄÁÎÎÁÑ ÓÉÓÔÅÍÁ ÎÅ ÐÒÅÄÏÓÔÁ×ÌÑÅÔ %lu-ÂÁÊÔÎÏÇÏ ÃÅÌÏÇÏ ÔÉÐÁ"
+
+#: src/od.c:812
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"ÎÅ×ÅÒÎÏ ÚÁÄÁÎ ÔÉÐ %s;\n"
+"ÄÁÎÎÁÑ ÓÉÓÔÅÍÁ ÎÅ ÐÒÅÄÏÓÔÁ×ÌÑÅÔ %lu-ÂÁÊÔÎÏÇÏ ÔÉÐÁ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ"
+
+#: src/od.c:871
+#, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË `%c' × ÓÔÒÏËÅ ÔÉÐÁ %s"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÍÅÓÔÉÔØÓÑ ÚÁ ÐÒÅÄÅÌ ÐÏÓÌÅÄÎÅÇÏ ×ÈÏÄÎÏÇÏ ÆÁÊÌÁ"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+"ÎÅ×ÅÒÎÏ ÚÁÄÁÎÏ ÏÓÎÏ×ÁÎÉÅ ÓÉÓÔÅÍÙ ÓÞÉÓÌÅÎÉÑ `%c',\n"
+"ÄÏÌÖÎÏ ÂÙÔØ ÏÄÎÉÍ ÉÚ ÓÉÍ×ÏÌÏ× [doxn]"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "ÁÒÇÕÍÅÎÔ, ÚÁÄÁÀÝÉÊ ÐÒÏÐÕÓË,"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "ÁÒÇÕÍÅÎÔ, ÚÁÄÁÀÝÉÊ ÏÇÒÁÎÉÞÅÎÉÅ,"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "ÍÉÎÉÍÁÌØÎÁÑ ÄÌÉÎÁ ÓÔÒÏËÉ"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "ÚÁÄÁÎÉÅ ÛÉÒÉÎÙ"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "ÐÒÉ ÄÁÍÐÅ ÓÔÒÏË ÎÅÌØÚÑ ÚÁÄÁ×ÁÔØ ÔÉÐ"
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr "× ÒÅÖÉÍÅ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÎÅ ÂÏÌÅÅ ÏÄÎÏÇÏ ÆÁÊÌÁ."
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr "ÚÎÁÞÅÎÉÅ skip-bytes + read-bytes ÓÌÉÛËÏÍ ×ÅÌÉËÏ"
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÎÅ×ÅÒÎÁÑ ÛÉÒÉÎÁ %lu; ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎÁ %d"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: ÆÏÒÍÁÍ=\"%s\" ÛÉÒÉÎÁ=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ ÚÁËÒÙÔ"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ ÓÔÒÏËÉ, ÓÏÓÔÁ×ÌÅÎÎÙÅ ÉÚ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÓÔÒÏË\n"
+"×ÈÏÄÎÙÈ æáêìï÷, ÒÁÚÄÅÌÅÎÎÙÈ ÔÁÂÕÌÑÃÉÅÊ.\n"
+"åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ.\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=óðéóïë ÉÓÐÏÌØÚÏ×ÁÔØ ×ÍÅÓÔÏ ÔÁÂÕÌÑÃÉÉ ÚÎÁËÉ ÉÚ óðéóëá\n"
+" -s, --serial ÏÂÒÁÂÁÔÙ×ÁÔØ ÆÁÊÌÙ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏ\n"
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... éíñ...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+"äÉÁÇÎÏÓÔÉÒÕÅÔ ÎÅÐÅÒÅÎÏÓÉÍÙÅ ËÏÎÓÔÒÕËÃÉÉ × éíåîé.\n"
+"\n"
+" -p ÐÒÏ×ÅÒËÁ ÄÌÑ ÂÏÌØÛÉÎÓÔ×Á POSIX-ÓÉÓÔÅÍ\n"
+" -P ÐÒÏ×ÅÒËÁ ÎÁ ÐÕÓÔÙÅ ÉÍÅÎÁ É ÎÁÞÁÌØÎÙÊ \"-\"\n"
+" --portability ÐÒÏ×ÅÒËÁ ÄÌÑ ×ÓÅÈ POSIX-ÓÉÓÔÅÍ (ÜË×É×ÁÌÅÎÔÎÏ -p -P)\n"
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr "ÎÁÞÁÌØÎÙÊ `-' × ËÏÍÐÏÎÅÎÔÅ ÉÍÅÎÉ ÆÁÊÌÁ %s"
+
+#: src/pathchk.c:206
+#, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "ÎÅÐÅÒÅÎÏÓÉÍÙÊ ÚÎÁË %s × ÉÍÅÎÉ ÆÁÊÌÁ %s"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr "ÐÕÓÔÏÅ ÉÍÑ ÆÁÊÌÁ"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÍÁËÓÉÍÁÌØÎÕÀ ÄÌÉÎÕ ÉÍÅÎÉ ÆÁÊÌÁ"
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr "ÐÒÅÄÅÌ × %lu ÐÒÅ×ÙÛÅÎ ÄÌÉÎÏÊ × %lu × ÉÍÅÎÉ ÆÁÊÌÁ %s"
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr "ÐÒÅÄÅÌ × %lu ÐÒÅ×ÙÛÅÎ ÄÌÉÎÏÊ × %lu × ËÏÍÐÏÎÅÎÔÅ ÉÍÅÎÉ ÆÁÊÌÁ %s"
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "òÅÇÉÓÔÒÁÃÉÏÎÎÏÅ ÉÍÑ: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "÷ ÒÅÁÌØÎÏÊ ÖÉÚÎÉ: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "ëÁÔÁÌÏÇ: "
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "ïÂÏÌÏÞËÁ: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "ðÒÏÅËÔ: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "ðÌÁÎ:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "éÍÑ"
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr "éÍÑ"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr " ôÅÒÍÉÎÁÌ"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "îÅÁËÔÉ×ÅÎ"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "ëÏÇÄÁ"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "çÄÅ"
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [ðïìøúï÷áôåìø]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"\n"
+" -l ÉÓÐÏÌØÚÏ×ÁÔØ ÐÏÄÒÏÂÎÙÊ ÆÏÒÍÁÔ ×Ù×ÏÄÁ\n"
+" -b ÏÐÕÓÔÉÔØ × ÐÏÄÒÏÂÎÏÍ ÆÏÒÍÁÔÅ ÎÁÞÁÌØÎÙÊ ËÁÔÁÌÏÇ É ÏÂÏÌÏÞËÕ\n"
+" ÜÔÏÇÏ ÐÏÌØÚÏ×ÁÔÅÌÑ\n"
+" -h ÏÐÕÓÔÉÔØ × ÐÏÄÒÏÂÎÏÍ ÆÏÒÍÁÔÅ ÆÁÊÌ ÐÒÏÅËÔÁ ÜÔÏÇÏ "
+"ÐÏÌØÚÏ×ÁÔÅÌÑ\n"
+" -p ÏÐÕÓÔÉÔØ × ÐÏÄÒÏÂÎÏÍ ÆÏÒÍÁÔÅ ÆÁÊÌ ÐÌÁÎÁ ÜÔÏÇÏ "
+"ÐÏÌØÚÏ×ÁÔÅÌÑ\n"
+" -s ÉÓÐÏÌØÚÏ×ÁÔØ ËÒÁÔËÉÊ ÆÏÒÍÁÔ ×Ù×ÏÄÁ, ÐÒÉÎÉÍÁÅÔÓÑ ÐÏ "
+"ÕÍÏÌÞÁÎÉÀ\n"
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+" -f ÏÐÕÓÔÉÔØ × ËÒÁÔËÏÍ ÆÏÒÍÁÔÅ ÓÔÒÏËÕ Ó ÚÁÇÏÌÏ×ËÁÍÉ ËÏÌÏÎÏË\n"
+" -w ÏÐÕÓÔÉÔØ × ËÒÁÔËÏÍ ÆÏÒÍÁÔÅ ÐÏÌÎÏÅ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ\n"
+" -i ÏÐÕÓÔÉÔØ × ËÒÁÔËÏÍ ÆÏÒÍÁÔÅ ÐÏÌÎÏÅ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ É ÉÍÑ\n"
+" ÕÄÁÌÅÎÎÏÊ ÍÁÛÉÎÙ\n"
+" -q ÏÐÕÓÔÉÔØ × ËÒÁÔËÏÍ ÆÏÒÍÁÔÅ ÐÏÌÎÏÅ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ, ÉÍÑ\n"
+" ÕÄÁÌÅÎÎÏÊ ÍÁÛÉÎÙ É ×ÒÅÍÑ ÎÅÁËÔÉ×ÎÏÓÔÉ\n"
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+"\n"
+"õÐÒÏÝÅÎÎÁÑ ÐÒÏÇÒÁÍÍÁ `finger'; ÐÅÞÁÔÁÅÔ Ó×ÅÄÅÎÉÑ Ï ÐÏÌØÚÏ×ÁÔÅÌÅ.\n"
+"÷ ËÁÞÅÓÔ×Å ÆÁÊÌÁ utmp ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ %s.\n"
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr ""
+"ÎÅ ÚÁÄÁÎÏ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ; ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ËÌÀÞÁ -l ÎÕÖÎÏ ÚÁÄÁÔØ ÈÏÔÑ ÂÙ "
+"ÏÄÎÏ"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr "ÄÉÁÐÁÚÏÎ ÓÔÒÁÎÉÃ"
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "`--pages=ðåò÷áñ_óôò[:ðïóìåäîññ_óôò]' ÐÒÏÐÕÝÅÎ ÁÒÇÕÍÅÎÔ"
+
+#: src/pr.c:916
+#, c-format
+msgid "Invalid page range %s"
+msgstr "îÅ×ÅÒÎÙÊ ÄÉÁÐÁÚÏÎ ÓÔÒÁÎÉà %s"
+
+#: src/pr.c:981
+#, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "`-l äìéîá_óôòáîéãù' ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÓÔÒÏË: %s"
+
+#: src/pr.c:1005
+#, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "`-N îïíåò' ÎÅ×ÅÒÎÙÊ ÎÏÍÅÒ ÎÁÞÁÌØÎÏÊ ÓÔÒÏËÉ: %s"
+
+#: src/pr.c:1017
+#, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "`-o ðïìå' ÎÅ×ÅÒÎÏÅ ÓÍÅÝÅÎÉÅ: %s"
+
+#: src/pr.c:1058
+#, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-w ûéòéîá_óôòáîéãù' ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÚÎÁËÏ×: %s"
+
+#: src/pr.c:1072
+#, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-W ûéòéîá_óôòáîéãù' ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÚÎÁËÏ×: %s"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÚÁÄÁÔØ ÞÉÓÌÏ ÓÔÏÌÂÃÏ× ÐÒÉ ÐÁÒÁÌÌÅÌØÎÏÊ ÐÅÞÁÔÉ."
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÄÎÏ×ÒÅÍÅÎÎÏ ÐÅÞÁÔÁÔØ ×ÄÏÌØ É ÐÁÒÁÌÌÅÌØÎÏ."
+
+#: src/pr.c:1202
+#, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "`-%c' ÌÉÛÎÉÅ ÚÎÁËÉ ÉÌÉ ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ × ÁÒÇÕÍÅÎÔÅ: %s"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "ÓÔÒÁÎÉÃÁ ÓÌÉÛËÏÍ ÕÚËÁÑ"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+"ÎÏÍÅÒ ÎÁÞÁÌØÎÏÊ ÓÔÒÁÎÉÃÙ %<PRIuMAX> ÐÒÅ×ÏÓÈÏÄÉÔ ÏÂÝÅÅ ÞÉÓÌÏ ÓÔÒÁÎÉà %"
+"<PRIuMAX>"
+
+#: src/pr.c:2406
+#, c-format
+msgid "Page number overflow"
+msgstr "ðÅÒÅÐÏÌÎÅÎÉÅ ÎÏÍÅÒÁ ÓÔÒÁÎÉÃÙ"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr "óÔÒÁÎÉÃÁ %<PRIuMAX>"
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+"òÁÚÂÉ×ÁÅÔ æáêì(Ù) ÎÁ ÓÔÒÁÎÉÃÙ ÉÌÉ ËÏÌÏÎËÉ ÄÌÑ ÐÅÞÁÔÉ.\n"
+"\n"
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +ðåò÷áñ_óôòáîéãá[:ðïóìåäîññ_óôòáîéãá], --pages=ðåò÷áñ_óôòáîéãá[:"
+"ðïóìåäîññ_óôòáîéãá]\n"
+" ÎÁÞÁÔØ [ÚÁ×ÅÒÛÉÔØ] ÐÅÞÁÔØ ÎÁ ðåò÷ïê_[ðïóìåäîåê_]"
+"óôòáîéãå\n"
+" -þéóìï, --columns=þéóìï\n"
+" ×Ù×ÏÄÉÔØ ÚÁÄÁÎÎÏÅ þéóìï ËÏÌÏÎÏË É ÐÅÞÁÔÁÔØ ÉÈ ×ÎÉÚ, "
+"ÅÓÌÉ\n"
+" ÔÏÌØËÏ ÎÅ ÕËÁÚÁÎ ËÌÀÞ -a. âÁÌÁÎÓÉÒÏ×ÁÔØ ÞÉÓÌÏ ÓÔÒÏË ×\n"
+" ËÏÌÏÎËÅ ÎÁ ËÁÖÄÏÊ ÓÔÒÁÎÉÃÅ.\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across ×Ù×ÏÄÉÔØ ËÏÌÏÎËÉ ×ÄÏÌØ, Á ÎÅ ×ÎÉÚ; ÉÓÐÏÌØÚÕÅÔÓÑ ×ÍÅÓÔÅ "
+"Ó\n"
+" ËÌÀÞÏÍ -þéóìï\n"
+" -c, --show-control-chars\n"
+" ÉÓÐÏÌØÚÏ×ÁÔØ ÚÁÐÉÓØ Ó ÛÁÐÏÞËÏÊ (^G) ÉÌÉ ÏÂÒÁÔÎÏÊ ËÏÓÏÊ\n"
+" ÞÅÒÔÏÊ (É ×ÏÓØÍÅÒÉÞÎÙÍ ËÏÄÏÍ)\n"
+" -d, --double-space\n"
+" ×ÓÔÁ×ÌÑÔØ ÐÕÓÔÕÀ ÓÔÒÏËÕ ÐÏÓÌÅ ËÁÖÄÏÊ ×ÙÈÏÄÎÏÊ ÓÔÒÏËÉ\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=æïòíáô\n"
+" ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÄÁÔÙ × ÚÁÇÏÌÏ×ËÅ ÕËÁÚÁÎÎÙÊ æïòíáô\n"
+" -e[úîáë[þéóìï]], --expand-tabs[=úîáë[þéóìï]]\n"
+" ÐÒÅÏÂÒÁÚÏ×Ù×ÁÔØ ×ÈÏÄÎÙÅ úîáëé (ÔÁÂÕÌÑÃÉÀ) × ÚÁÄÁÎÎÏÅ "
+"þéóìï\n"
+" ÐÒÏÂÅÌÏ× (8)\n"
+" -F, -f, --form-feed\n"
+" ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÒÁÚÄÅÌÅÎÉÑ ÓÔÒÁÎÉà ÚÎÁË ÐÅÒÅ×ÏÄÁ "
+"ÓÔÒÁÎÉÃÙ,\n"
+" Á ÎÅ ÎÏ×ÏÊ ÓÔÒÏËÉ (Ó ÔÒÅÈÓÔÒÏÞÎÙÍ ÚÁÇÏÌÏ×ËÏÍ, ÅÓÌÉ ÅÓÔØ\n"
+" ËÌÀÞ -F, É ÐÑÔÉÓÔÒÏÞÎÙÍ ÚÁÇÏÌÏ×ËÏÍ É ÚÁ×ÅÒÛÉÔÅÌÅÍ, ÅÓÌÉ\n"
+" ËÌÀÞ -F ÎÅ ÚÁÄÁÎ)\n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h úáçïìï÷ïë, --header=úáçïìï÷ïë\n"
+" ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÓÔÒÁÎÉà ÃÅÎÔÒÉÒÏ×ÁÎÎÙÊ úáçïìï÷ïë, Á ÎÅ\n"
+" ÉÍÑ ÆÁÊÌÁ; -h \"\" ×Ù×ÏÄÉÔ ÐÕÓÔÕÀ ÓÔÒÏËÕ; ÎÅ ÉÓÐÏÌØÚÕÊÔÅ "
+"-h \"\"\n"
+" -i[úîáë[ûéòéîá]], --output-tabs[=úîáë[ûéòéîá]]\n"
+" ÚÁÍÅÎÉÔØ ÐÒÏÂÅÌÙ ÎÁ úîáëé (ÔÁÂÕÌÑÃÉÀ) ÚÁÄÁÎÎÏÊ ûéòéîù "
+"(8)\n"
+" -J, --join-lines ÏÂßÅÄÉÎÑÔØ ÐÏÌÎÙÅ ÓÔÒÏËÉ, ÏÔËÌÀÞÉÔØ ÕÓÅÞÅÎÉÅ ÓÔÒÏË (-W), "
+"ÎÅ\n"
+" ×ÙÒÁ×ÎÉ×ÁÔØ ËÏÌÏÎËÉ, --sep-string[=óôòïëá] ÚÁÄÁÅÔ "
+"ÒÁÚÄÅÌÉÔÅÌÉ\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l äìéîá_óôòáîéãù, --length=äìéîá_óôòáîéãù\n"
+" ÕÓÔÁÎÏ×ÉÔØ äìéîõ_óôòáîéãù (66)\n"
+" (ÐÏ ÕÍÏÌÞÁÎÉÀ ÞÉÓÌÏ ÓÔÒÏË ÔÅËÓÔÁ ÒÁ×ÎÏ 56, Á Ó -F -- "
+"63)\n"
+" -m, --merge ÐÅÞÁÔÁÔØ ×ÓÅ ÆÁÊÌÙ ÐÁÒÁÌÌÅÌØÎÏ, ÐÏ ÏÄÎÏÍÕ × ËÏÌÏÎËÅ,\n"
+" ÕÓÅËÁÔØ ÓÔÒÏËÉ, ÎÏ ÓÏÅÄÉÎÑÔØ ÐÏÌÎÙÅ ÓÔÒÏËÉ ÐÒÉ -J\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[òáúä[þéóìï]], --number-lines[=òáúä[þéóìï]]\n"
+" ÎÕÍÅÒÏ×ÁÔØ ÓÔÒÏËÉ, ÉÓÐÏÌØÚÕÑ ÚÁÄÁÎÎÏÅ þéóìï (5) ÃÉÆÒ É\n"
+" òáúäÅÌÉÔÅÌØ (ÔÁÂÕÌÑÃÉÀ); ÐÏ ÕÍÏÌÞÁÎÉÀ ÎÕÍÅÒÁÃÉÑ "
+"ÎÁÞÉÎÁÅÔÓÑ\n"
+" Ó ÐÅÒ×ÏÊ ×ÈÏÄÎÏÊ ÓÔÒÏËÉ\n"
+" -N îïíåò, --first-line-number=îïíåò\n"
+" ÎÁÞÁÔØ ÎÕÍÅÒÁÃÉÀ Ó îïíåòá Ó ÐÅÒ×ÏÊ ÓÔÒÏËÉ ÐÅÒ×ÏÊ "
+"×Ù×ÏÄÉÍÏÊ\n"
+" ÓÔÒÁÎÉÃÙ (ÓÍÏÔÒÉ +ðåò÷áñ_óôòáîéãá)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o ðïìå, --indent=ðïìå\n"
+" ÓÄ×ÉÇÁÔØ ËÁÖÄÕÀ ÓÔÒÏËÕ ÎÁ ðïìå (ÎÕÌØ) ÐÒÏÂÅÌÏ× (ÎÅ "
+"×ÌÉÑÅÔ\n"
+" ÎÁ -w ÉÌÉ -W); ðïìå ÄÏÂÁ×ÌÑÅÔÓÑ Ë ûéòéîå_óôòáîéãù\n"
+" -r, --no-file-warnings\n"
+" ÎÅ ÐÒÅÄÕÐÒÅÖÄÁÔØ Ï ÎÅ×ÏÚÍÏÖÎÏÓÔÉ ÏÔËÒÙÔÉÑ ÆÁÊÌÁ\n"
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[úîáë],--separator[=úîáë]\n"
+" ÒÁÚÄÅÌÑÔØ ËÏÌÏÎËÉ ÏÄÎÉÍ ÚÎÁËÏÍ, ÐÏ ÕÍÏÌÞÁÎÉÀ úîáë ÒÁ×ÅÎ\n"
+" ÔÁÂÕÌÑÃÉÉ, ÅÓÌÉ ÎÅÔ ËÌÀÞÁ -w, É ÐÕÓÔ, ÅÓÌÉ ÅÓÔØ ËÌÀÞ -w\n"
+" -s[úîáë] ×ÙËÌÀÞÁÅÔ ÕÓÅÞÅÎÉÅ ÓÔÒÏË ÄÌÑ ×ÓÅÈ ÔÒÅÈ ËÌÀÞÅÊ "
+"ÄÌÑ\n"
+" ËÏÌÏÎÏË (-þéóìï |-a -þéóìï|-m), ÅÓÌÉ ÔÏÌØËÏ ÎÅÔ ËÌÀÞÁ -"
+"w\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -S[óôòïëá], --sep-string[=óôòïëá]\n"
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" ÒÁÚÄÅÌÑÔØ ËÏÌÏÎËÉ óôòïëïê,\n"
+" ÅÓÌÉ -S ÎÅ ÚÁÄÁÎ: ÒÁÚÄÅÌÉÔÅÌØ ÐÏ ÕÍÏÌÞÁÎÉÀ -- "
+"ÔÁÂÕÌÑÃÉÑ, \n"
+" ÅÓÌÉ ÉÓÐÏÌØÚÏ×ÁÎ ËÌÀÞ -J, ÉÎÁÞÅ ÐÒÏÂÅÌ (ÔÏ ÖÅ, ÞÔÏ -S\" "
+"\"); \n"
+" ÎÅ ×ÌÉÑÅÔ ÎÁ ËÌÀÞÉ ÄÌÑ ËÏÌÏÎÏË\n"
+" -t, --omit-header ÎÅ ×Ù×ÏÄÉÔØ ÚÁÇÏÌÏ×ËÉ ÓÔÒÁÎÉÃ\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" ÎÅ ×Ù×ÏÄÉÔØ ÚÁÇÏÌÏ×ËÉ É ÉÇÎÏÒÉÒÏ×ÁÔØ ÓÉÍ×ÏÌÙ ÐÅÒÅ×ÏÄÁ\n"
+" ÓÔÒÁÎÉÃÙ ×Ï ×ÈÏÄÎÙÈ ÆÁÊÌÁÈ\n"
+" -v, --show-nonprinting\n"
+" ÉÓÐÏÌØÚÏ×ÁÔØ ÚÁÐÉÓØ Ó `\\' É ×ÏÓØÍÅÒÉÞÎÙÍ ËÏÄÏÍ\n"
+" -w ûéòéîá_óôòáîéãù, --width=ûéòéîá_óôòáîéãù\n"
+" ÕÓÔÁÎÏ×ÉÔØ ûéòéîõ_óôòáîéãù (72) × ÓÔÏÌÂÃÁÈ ÄÌÑ\n"
+" ×Ù×ÏÄÁ × ÎÅÓËÏÌØËÏ ËÏÌÏÎÏË, -s[ÚÎÁË] ×ÙËÌÀÞÁÅÔ (72)\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W ûéòéîá_óôòáîéãù, --page-width=ûéòéîá_óôòáîéãù\n"
+" ÕÓÔÁÎÏ×ÉÔØ ûéòéîõ_óôòáîéãù (72) × ÓÔÏÌÂÃÁÈ, ÕÓÅËÁÔØ "
+"ÓÔÒÏËÉ,\n"
+" ÅÓÌÉ ÔÏÌØËÏ ÎÅÔ ËÌÀÞÁ -J; ÎÅ ÚÁÔÒÁÇÉ×ÁÅÔÓÑ ËÌÀÞÁÍÉ -S "
+"ÉÌÉ -s\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"-T ÐÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ ÐÒÉ ÚÁÄÁÎÎÏÍ ËÌÀÞÅ -l ÎÎ, ÇÄÅ ÎÎ <= 10 ÉÌÉ <= 3, ÅÓÌÉ "
+"ÅÓÔØ\n"
+"ËÌÀÞ -F. åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ.\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ðåòåíåîîáñ]...\n"
+" ÉÌÉ: %s ëìàþ\n"
+"åÓÌÉ ÎÅ ÚÁÄÁÎÁ ðåòåíåîîáñ ÓÒÅÄÙ, ÐÅÞÁÔÁÅÔ ÉÈ ×ÓÅ.\n"
+"\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+"ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: %s: ÚÎÁËÉ, ÓÌÅÄÕÀÝÉÅ ÚÁ ÚÎÁËÏ×ÏÊ ËÏÎÓÔÁÎÔÏÊ, ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎÙ"
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s æïòíáô [áòçõíåîô]...\n"
+" ÉÌÉ: %s ëìàþ\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ áòçõíåîô(Ù) × ÚÁÄÁÎÎÏÍ æïòíáôå.\n"
+"\n"
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"\n"
+"æïòíáô ÕÐÒÁ×ÌÑÅÔ ×Ù×ÏÄÏÍ ÔÁË ÖÅ, ËÁË × C-ÆÕÎËÃÉÉ printf.\n"
+"÷ÏÓÐÒÉÎÉÍÁÀÔÓÑ ÓÌÅÄÕÀÝÉÅ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ:\n"
+"\n"
+" \\\" Ä×ÏÊÎÁÑ ËÁ×ÙÞËÁ\n"
+" \\0îîî ÚÎÁË Ó ×ÏÓØÍÅÒÉÞÎÙÍ ËÏÄÏÍ îîî (ÏÔ 1 ÄÏ 3 ÃÉÆÒ)\n"
+" \\\\ ÏÂÒÁÔÎÁÑ ËÏÓÁÑ ÞÅÒÔÁ\n"
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+" \\a Ú×ÕËÏ×ÏÊ ÓÉÇÎÁÌ\n"
+" \\b ÚÁÂÏÊ\n"
+" \\c ÐÏÄÁ×ÉÔØ ÐÏÓÌÅÄÕÀÝÉÊ ×Ù×ÏÄ\n"
+" \\f ÐÅÒÅ×ÏÄ ÓÔÒÁÎÉÃÙ\n"
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n ÎÏ×ÁÑ ÓÔÒÏËÁ\n"
+" \\r ×ÏÚ×ÒÁÔ ËÁÒÅÔËÉ\n"
+" \\t ÇÏÒÉÚÏÎÔÁÌØÎÁÑ ÔÁÂÕÌÑÃÉÑ\n"
+" \\v ×ÅÒÔÉËÁÌØÎÁÑ ÔÁÂÕÌÑÃÉÑ\n"
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+" \\xîî ÂÁÊÔ Ó ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÍ ËÏÄÏÍ îî (ÏÔ 1 ÄÏ 2 ÃÉÆÒ)\n"
+" \\uîîîî ÚÎÁË Unicode (ISO/IEC 10646) Ó ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÍ ËÏÄÏÍ îîîî (4 "
+"ÃÉÆÒÙ)\n"
+" \\Uîîîîîîîî ÚÎÁË Unicode Ó ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÍ ËÏÄÏÍ îîîîîîîî (8 ÃÉÆÒ)\n"
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+" %% ÏÄÉÎ ÚÎÁË %\n"
+" %b áòçõíåîô × ×ÉÄÅ ÓÔÒÏËÉ Ó ÉÎÔÅÒÐÒÅÔÉÒÏ×ÁÎÎÙÍÉ\n"
+" escape-ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÑÍÉ, ÎÁÞÉÎÁÀÝÉÍÉÓÑ Ó \\\\;\n"
+" ×ÏÓØÍÅÒÉÞÎÙÅ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ × ÆÏÒÍÅ \\0 ÉÌÉ \\0îîî\n"
+"\n"
+"Á ÔÁËÖÅ ×ÓÅ ÓÐÅÃÉÆÉËÁÃÉÉ ÆÏÒÍÁÔÁ × ÓÔÉÌÅ C, ÚÁËÁÎÞÉ×ÁÀÝÉÅÓÑ ÏÄÎÉÍ ÉÚ\n"
+"ÚÎÁËÏ× diouxXfeEgGcs; áòçõíåîô ÐÒÉ×ÏÄÉÔÓÑ Ë ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÍÕ ÔÉÐÕ.\n"
+"ïÂÒÁÂÁÔÙ×ÁÀÔcÑ ÔÁËÖÅ ÁÒÇÕÍÅÎÔÙ ÐÅÒÅÍÅÎÎÏÊ ÛÉÒÉÎÙ.\n"
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: ÏÖÉÄÁÅÔÓÑ ÞÉÓÌÏ×ÏÅ ÚÎÁÞÅÎÉÅ"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: ÚÎÁÞÅÎÉÅ ÐÒÅÏÂÒÁÚÏ×ÁÎÏ ÎÅ ÐÏÌÎÏÓÔØÀ"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "ÎÅ×ÅÒÎÏÅ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÏÅ ÞÉÓÌÏ × escape-ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ"
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "ÎÅ×ÅÒÎÏÅ ÕÎÉ×ÅÒÓÁÌØÎÏÅ ÉÍÑ ÚÎÁËÁ \\%c%0*x"
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr "ÎÅ×ÅÒÎÁÑ ÛÉÒÉÎÁ ÐÏÌÑ: %s"
+
+#: src/printf.c:585
+#, c-format
+msgid "invalid precision: %s"
+msgstr "ÎÅ×ÅÒÎÁÑ ÔÏÞÎÏÓÔØ: %s"
+
+#: src/printf.c:612
+#, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%.*s: ÎÅ×ÅÒÎÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ"
+
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÉÚÂÙÔÏÞÎÙÅ ÁÒÇÕÍÅÎÔÙ ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎÙ, ÎÁÞÉÎÁÑ Ó %s"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr "æ. ðÉÎÁÒÄ"
+
+#: src/ptx.c:422
+#, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (ÄÌÑ ÒÅÇÕÌÑÒÎÏÇÏ ×ÙÒÁÖÅÎÉÑ %s)"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [÷èïä]... (ÂÅÚ -G)\n"
+" ÉÌÉ: %s -G [ëìàþ]... [÷èïä [÷ùèïä]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ ÐÅÒÅÍÅÛÁÎÎÙÊ ÁÌÆÁ×ÉÔÎÙÊ ÕËÁÚÁÔÅÌØ ÓÌÏ× ×ÈÏÄÎÙÈ ÆÁÊÌÏ×, ×ËÌÀÞÁÑ "
+"ËÏÎÔÅËÓÔ.\n"
+"\n"
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference ×Ù×ÏÄÉÔØ Á×ÔÏÍÁÔÉÞÅÓËÉ ÓÇÅÎÅÒÉÒÏ×ÁÎÎÙÅ "
+"ÓÓÙÌËÉ\n"
+" -G, --traditional ÒÁÂÏÔÁÔØ × ÒÅÖÉÍÅ ÂÏÌØÛÅÊ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ Ó\n"
+" ÐÒÏÇÒÁÍÍÏÊ `ptx' ÉÚ System V\n"
+" -F, --flag-truncation=óôòïëá ÉÓÐÏÌØÚÏ×ÁÔØ óôòïëõ ÄÌÑ ÐÏÍÅÔËÉ ÕÓÅÞÅÎÉÑ "
+"ÓÔÒÏË\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=óôòïëá ÉÍÑ ÍÁËÒÏ, ËÏÔÏÒÏÅ ÓÌÅÄÕÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ\n"
+" ×ÍÅÓÔÏ `xx'\n"
+" -O, --format=roff ÇÅÎÅÒÉÒÏ×ÁÔØ ×Ù×ÏÄ × ×ÉÄÅ ÄÉÒÅËÔÉ× roff\n"
+" -R, --right-side-refs ÐÏÍÅÝÁÔØ ÓÓÙÌËÉ ÓÐÒÁ×Á, ÎÅ ÕÞÉÔÙ×ÁÅÔÓÑ ÐÒÉ -"
+"w\n"
+" -S, --sentence-regexp=REGEXP ÄÌÑ ËÏÎÃÁ ÓÔÒÏË ÉÌÉ ËÏÎÃÁ ÐÒÅÄÌÏÖÅÎÉÊ\n"
+" -T, --format=tex ÇÅÎÅÒÉÒÏ×ÁÔØ ×Ù×ÏÄ × ×ÉÄÅ ÄÉÒÅËÔÉ× TeX\n"
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=REGEXP ÒÅÇÕÌÑÒÎÏÅ ×ÙÒÁÖÅÎÉÅ ÄÌÑ ËÌÀÞÅ×ÙÈ ÓÌÏ×\n"
+" -b, --break-file=æáêì æáêì Ó ÓÉÍ×ÏÌÁÍÉ-ÒÁÚÄÅÌÉÔÅÌÑÍÉ ÓÌÏ×\n"
+" -f, --ignore-case ÐÒÅÏÂÒÁÚÏ×Ù×ÁÔØ Ë ×ÅÒÈÎÅÍÕ ÒÅÇÉÓÔÒÕ ÐÒÉ\n"
+" ÓÏÒÔÉÒÏ×ËÅ\n"
+" -g, --gap-size=þéóìï ÒÁÚÍÅÒ ÐÒÏÍÅÖÕÔËÁ ÍÅÖÄÕ ÐÏÌÑÍÉ ×Ù×ÏÄÁ,\n"
+" ×ÙÒÁÖÅÎÎÙÊ × ÓÔÏÌÂÃÁÈ\n"
+" -i, --ignore-file=æáêì ÓÞÉÔÁÔØ ÐÅÒÅÞÅÎØ ÉÇÎÏÒÉÒÕÅÍÙÈ ÓÌÏ× ÉÚ "
+"æáêìá\n"
+" -o, --only-file=æáêì ÔÏÌØËÏ ÓÞÉÔÁÔØ ÓÐÉÓÏË ÓÌÏ× ÉÚ ÚÁÄÁÎÎÏÇÏ "
+"æáêìá\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references ÐÅÒ×ÏÅ ÐÏÌÅ × ËÁÖÄÏÊ ÓÔÒÏËÅ Ñ×ÌÑÅÔÓÑ "
+"ÓÓÙÌËÏÊ\n"
+" -t, --typeset-mode - ÎÅ ÒÅÁÌÉÚÏ×ÁÎÏ -\n"
+" -w, --width=þéóìï ÛÉÒÉÎÁ ×Ù×ÏÄÁ × ÓÔÏÌÂÃÁÈ, ÎÅ ÓÞÉÔÁÑ ÓÓÙÌËÉ\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ.\n"
+"ðÏ ÕÍÏÌÞÁÎÉÀ ÐÒÅÄÐÏÌÁÇÁÅÔÓÑ `-F /'.\n"
+
+#: src/ptx.c:2016
+#, c-format
+msgid "invalid gap width: %s"
+msgstr "ÎÅ×ÅÒÎÁÑ ÛÉÒÉÎÁ ÄÙÒËÉ: %s"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr "ËÌÀÞ --copyright ÕÓÔÁÒÅÌ, ÉÓÐÏÌØÚÕÊÔÅ ×ÍÅÓÔÏ ÎÅÇÏ --version"
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ ÐÏÌÎÏÅ ÉÍÑ ÔÅËÕÝÅÇÏ ÒÁÂÏÞÅÇÏ ËÁÔÁÌÏÇÁ.\n"
+"\n"
+
+#: src/pwd.c:160
+#, c-format
+msgid "failed to chdir to %s"
+msgstr "ÏÛÉÂËÁ ÉÚÍÅÎÅÎÉÑ ËÁÔÁÌÏÇÁ ÎÁ %s"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, c-format
+msgid "failed to stat %s"
+msgstr "ÏÛÉÂËÁ ÐÏÌÕÞÅÎÉÑ ÁÔÒÉÂÕÔÏ× %s"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr "× %s ÎÅ ÎÁÊÄÅÎÁ ÚÁÐÉÓØ ËÁÔÁÌÏÇÁ Ó ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÍ i-node"
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "ÎÅ Ñ×ÌÑÀÝÉÅÓÑ ËÌÀÞÁÍÉ ÁÒÇÕÍÅÎÔÙ ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎÙ"
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [æáêì]\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ ÚÎÁÞÅÎÉÅ ÓÉÍ×ÏÌØÎÏÊ ÓÓÙÌËÉ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ.\n"
+"\n"
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+" -f, --canonicalize ÐÏÌÕÞÉÔØ ËÁÎÏÎÉÞÅÓËÏÅ ÉÍÑ ÆÁÊÌÁ ÐÕÔÅÍ\n"
+" ÒÅËÕÒÓÉ×ÎÏÇÏ ÓÌÅÄÏ×ÁÎÉÑ ÐÏ ×ÓÅÍ ÓÉÍ×ÏÌØÎÙÍ\n"
+" ÓÓÙÌËÁÍ × ËÁÖÄÏÍ ËÏÍÐÏÎÅÎÔÅ ÚÁÄÁÎÎÏÇÏ ÐÕÔÉ;\n"
+" ×ÓÅ ËÏÍÐÏÎÅÎÔÙ ÐÕÔÉ, ËÒÏÍÅ ÐÏÓÌÅÄÎÅÇÏ,\n"
+" ÄÏÌÖÎÙ ÓÕÝÅÓÔ×Ï×ÁÔØ\n"
+" -e, --canonicalize-existing ÐÏÌÕÞÉÔØ ËÁÎÏÎÉÞÅÓËÏÅ ÉÍÑ ÆÁÊÌÁ ÐÕÔÅÍ\n"
+" ÒÅËÕÒÓÉ×ÎÏÇÏ ÓÌÅÄÏ×ÁÎÉÑ ÐÏ ×ÓÅÍ ÓÉÍ×ÏÌØÎÙÍ\n"
+" ÓÓÙÌËÁÍ × ËÁÖÄÏÍ ËÏÍÐÏÎÅÎÔÅ ÚÁÄÁÎÎÏÇÏ ÐÕÔÉ;\n"
+" ×ÓÅ ËÏÍÐÏÎÅÎÔÙ ÐÕÔÉ ÄÏÌÖÎÙ ÓÕÝÅÓÔ×Ï×ÁÔØ\n"
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+" -m, --canonicalize-missing ÐÏÌÕÞÉÔØ ËÁÎÏÎÉÞÅÓËÏÅ ÉÍÑ ÆÁÊÌÁ ÐÕÔÅÍ\n"
+" ÒÅËÕÒÓÉ×ÎÏÇÏ ÓÌÅÄÏ×ÁÎÉÑ ÐÏ ×ÓÅÍ ÓÉÍ×ÏÌØÎÙÍ\n"
+" ÓÓÙÌËÁÍ × ËÁÖÄÏÍ ËÏÍÐÏÎÅÎÔÅ ÚÁÄÁÎÎÏÇÏ ÐÕÔÉ;\n"
+" ËÏÍÐÏÎÅÎÔÙ ÐÕÔÉ ÎÅ ÏÂÑÚÁÎÙ ÓÕÝÅÓÔ×Ï×ÁÔØ\n"
+" -n, --no-newline ÎÅ ×Ù×ÏÄÉÔØ ÚÁ×ÅÒÛÁÀÝÉÊ ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ\n"
+" -q, --quiet,\n"
+" -s, --silent ÐÏÄÁ×ÌÑÔØ ×Ù×ÏÄ ÂÏÌØÛÉÎÓÔ×Á ÓÏÏÂÝÅÎÉÊ Ï "
+"ÏÛÉÂËÁÈ\n"
+" -v, --verbose ÓÏÏÂÝÁÔØ ÏÂ ÏÛÉÂËÁÈ\n"
+
+#: src/remove.c:481 src/remove.c:525
+#, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "æáôáìøîáñ ïûéâëá: ÎÅ×ÏÚÍÏÖÎÏ ÚÁËÒÙÔØ ËÁÔÁÌÏÇ %s"
+
+#: src/remove.c:494
+#, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "æáôáìøîáñ ïûéâëá: ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ËÁÔÁÌÏÇ .. ÉÚ %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+"æáôáìøîáñ ïûéâëá: ÎÅ×ÏÚÍÏÖÎÏ ÕÂÅÄÉÔØÓÑ × ÂÅÚÏÐÁÓÎÏÓÔÉ %s (ËÕÄÁ ×ÅÒÎÕÌÉÓØ "
+"ÞÅÒÅÚ ..)"
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "æáôáìøîáñ ïûéâëá: ËÁÔÁÌÏÇ %s ÓÍÅÎÉÌ dev/ino"
+
+#: src/remove.c:631
+#, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "æáôáìøîáñ ïûéâëá: ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÊÔÉ × ËÁÔÁÌÏÇ %s"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+"æáôáìøîáñ ïûéâëá: ËÁÔÁÌÏÇ %s, × ËÏÔÏÒÙÊ ÔÏÌØËÏ ÞÔÏ ÐÅÒÅÛÌÉ, ÓÍÅÎÉÌ dev/ino"
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"÷îéíáîéå: ãÉËÌÉÞÅÓËÁÑ ÓÔÒÕËÔÕÒÁ ËÁÔÁÌÏÇÁ.\n"
+"óËÏÒÅÅ ×ÓÅÇÏ, ÜÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ×ÁÛÁ ÆÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÐÏ×ÒÅÖÄÅÎÁ.\n"
+"õ÷åäïíéôå ÷áûåçï óéóôåíîïçï áäíéîéóôòáôïòá.\n"
+"óÌÅÄÕÀÝÉÊ ËÁÔÁÌÏÇ Ñ×ÌÑÅÔÓÑ ÞÁÓÔØÀ ÃÉËÌÁ:\n"
+" %s\n"
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s: ÓÐÕÓÔÉÔØÓÑ × ÚÁÝÉÝÅÎÎÙÊ ÏÔ ÚÁÐÉÓÉ ËÁÔÁÌÏÇ %s? "
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s: ÓÐÕÓÔÉÔØÓÑ × ËÁÔÁÌÏÇ %s? "
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: ÕÄÁÌÉÔØ ÚÁÝÉÝÅÎÎÙÊ ÏÔ ÚÁÐÉÓÉ %s %s? "
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: ÕÄÁÌÉÔØ %s %s? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "ÕÄÁÌÅÎ ËÁÔÁÌÏÇ: %s\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, c-format
+msgid "failed to close directory %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁËÒÙÔØ ËÁÔÁÌÏÇ %s"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr "ÐÒÏÐÕÓËÁÅÔÓÑ %s, ÐÏÓËÏÌØËÕ ÏÎ ÎÁÈÏÄÉÔÓÑ ÎÁ ÄÒÕÇÏÍ ÕÓÔÒÏÊÓÔ×Å"
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ËÁÔÁÌÏÇ %s"
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "æáôáìøîáñ ïûéâëá: ÎÅ×ÏÚÍÏÖÎÏ ×ÅÒÎÕÔØÓÑ Ë .. ÉÚ %s"
+
+#: src/remove.c:1504
+#, c-format
+msgid "cannot remove root directory %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ËÏÒÎÅ×ÏÊ ËÁÔÁÌÏÇ %s"
+
+#: src/remove.c:1544
+#, c-format
+msgid "cannot remove relative-named %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ %s Ó ÏÔÎÏÓÉÔÅÌØÎÙÍ ÉÍÅÎÅÍ"
+
+#: src/remove.c:1558
+#, c-format
+msgid "cannot restore current working directory"
+msgstr "ÎÅ ÕÄÁÌÏÓØ ×ÏÓÓÔÁÎÏ×ÉÔØ ÔÅËÕÝÉÊ ÒÁÂÏÞÉÊ ËÁÔÁÌÏÇ"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr "ðÏÐÒÏÂÕÊÔÅ `%s ./%s', ÞÔÏÂÙ ÕÄÁÌÉÔØ ÆÁÊÌ %s.\n"
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... æáêì...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+"õÄÁÌÑÅÔ (ÓÓÙÌËÉ ÎÁ) æáêì(Ù).\n"
+"\n"
+" -f, --force ÉÇÎÏÒÉÒÏ×ÁÔØ ÎÅÓÕÝÅÓÔ×ÕÀÝÉÅ ÆÁÊÌÙ, ÎÉ Ï ÞÅÍ ÎÅ "
+"ÓÐÒÁÛÉ×ÁÔØ\n"
+" -i ÚÁÐÒÁÛÉ×ÁÔØ ÐÏÄÔ×ÅÒÖÄÅÎÉÅ ÐÅÒÅÄ ËÁÖÄÙÍ ÕÄÁÌÅÎÉÅÍ\n"
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+" -I ÚÁÐÒÁÛÉ×ÁÔØ ÐÏÄÔ×ÅÒÖÄÅÎÉÅ ÏÄÉÎ ÒÁÚ ÐÅÒÅÄ ÕÄÁÌÅÎÉÅÍ "
+"ÂÏÌÅÅ\n"
+" ÞÅÍ ÔÒÅÈ ÆÁÊÌÏ× ÉÌÉ ÐÅÒÅÄ ÒÅËÕÒÓÉ×ÎÙÍ ÕÄÁÌÅÎÉÅÍ. îÅ "
+"ÔÁË\n"
+" ÎÁÚÏÊÌÉ×Ï, ËÁË -i, ÎÏ ×ÓÅ ÖÅ ÐÒÅÄÏÓÔÁ×ÌÑÅÔ ÚÁÝÉÔÕ "
+"ÏÔ\n"
+" ÂÏÌØÛÉÎÓÔ×Á ÏÛÉÂÏË.\n"
+" --interactive[=ëïçäá] ÚÁÐÒÁÛÉ×ÁÔØ ÐÏÄÔ×ÅÒÖÄÅÎÉÅ, ëïçäá ÕËÁÚÁÎÏ: "
+"never \n"
+" (ÎÉËÏÇÄÁ), once (-I, ÏÄÉÎ ÒÁÚ) ÉÌÉ always (-i, "
+"×ÓÅÇÄÁ).\n"
+" åÓÌÉ ëïçäá ÎÅ ÚÁÄÁÎÏ, ÚÁÐÒÁÛÉ×ÁÔØ ×ÓÅÇÄÁ.\n"
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+" --one-file-system ÐÒÉ ÒÅËÕÒÓÉ×ÎÏÍ ÕÄÁÌÅÎÉÉ ÉÅÒÁÒÈÉÉ, ÐÒÏÐÕÓËÁÔØ ×ÓÅ \n"
+" ËÁÔÁÌÏÇÉ, ÎÁÈÏÄÑÝÉÅÓÑ ÎÅ ÎÁ ÔÏÊ ÖÅ ÆÁÊÌÏ×ÏÊ "
+"ÓÉÓÔÅÍÅ,\n"
+" ÞÔÏ É ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ ÁÒÇÕÍÅÎÔ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ\n"
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --no-preserve-root ÎÅ ÏÂÒÁÂÁÔÙ×ÁÔØ `/' ÏÓÏÂÏ\n"
+" --preserve-root ÏÔËÁÚÙ×ÁÔØÓÑ ÒÅËÕÒÓÉ×ÎÏ ÏÂÒÁÂÁÔÙ×ÁÔØ `/'\n"
+" (ÐÏ ÕÍÏÌÞÁÎÉÀ)\n"
+" -r, -R, --recursive ÒÅËÕÒÓÉ×ÎÏ ÕÄÁÌÑÔØ ËÁÔÁÌÏÇÉ É ÉÈ ÓÏÄÅÒÖÉÍÏÅ\n"
+" -v, --verbose ÐÏÑÓÎÑÔØ ÐÒÏÉÚ×ÏÄÉÍÙÅ ÄÅÊÓÔ×ÉÑ\n"
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+"\n"
+"ðÏ ÕÍÏÌÞÁÎÉÀ rm ÎÅ ÕÄÁÌÑÅÔ ËÁÔÁÌÏÇÉ. éÓÐÏÌØÚÕÊÔÅ ËÌÀÞ --recursive (-r\n"
+"ÉÌÉ -R), ÞÔÏÂÙ ÕÄÁÌÉÔØ ×ÓÅ ÐÅÒÅÞÉÓÌÅÎÎÙÅ ËÁÔÁÌÏÇÉ ×ÍÅÓÔÅ Ó ÉÈ\n"
+"ÓÏÄÅÒÖÉÍÙÍ.\n"
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"äÌÑ ÕÄÁÌÅÎÉÑ ÆÁÊÌÁ, ÎÁÞÉÎÁÀÝÅÇÏÓÑ Ó `-' (ÎÁÐÒÉÍÅÒ: `-foo'),\n"
+"ÉÓÐÏÌØÚÕÊÔÅ ÏÄÎÕ ÉÚ ÓÌÅÄÕÀÝÉÈ ËÏÍÁÎÄ:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"éÍÅÊÔÅ × ×ÉÄÕ, ÞÔÏ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ rm ÄÌÑ ÕÄÁÌÅÎÉÑ ÆÁÊÌÁ ÅÇÏ ÓÏÄÅÒÖÉÍÏÅ\n"
+"ÏÂÙÞÎÏ ÍÏÖÎÏ ×ÏÓÓÔÁÎÏ×ÉÔØ. éÓÐÏÌØÚÕÊÔÅ shred, ÅÓÌÉ ÷ÁÍ ÎÅÏÂÈÏÄÉÍÁ ÂÏÌØÛÁÑ\n"
+"Õ×ÅÒÅÎÎÏÓÔØ × ÎÅ×ÏÚÍÏÖÎÏÓÔÉ ×ÏÓÓÔÁÎÏ×ÌÅÎÉÑ ÓÏÄÅÒÖÉÍÏÇÏ.\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr "%s: ÕÄÁÌÉÔØ ×ÓÅ ÁÒÇÕÍÅÎÔÙ ÒÅËÕÒÓÉ×ÎÏ? "
+
+#: src/rm.c:366
+#, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: ÕÄÁÌÉÔØ ×ÓÅ ÁÒÇÕÍÅÎÔÙ? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "ÕÄÁÌÅÎÉÅ ËÁÔÁÌÏÇÁ, %s"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... ëáôáìïç...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"õÄÁÌÑÅÔ DIRECTORY, ÅÓÌÉ ÏÎÉ ÐÕÓÔÙ.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ÉÇÎÏÒÉÒÏ×ÁÔØ ×ÓÅ ÏÛÉÂËÉ, ËÏÔÏÒÙÅ ×ÏÚÎÉËÁÀÔ ÉÚ-ÚÁ ÔÏÇÏ, "
+"ÞÔÏ\n"
+" ËÁÔÁÌÏÇ ÎÅ ÐÕÓÔ\n"
+
+#: src/rmdir.c:148
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents õÄÁÌÉÔØ ëáôáìïç É ÅÇÏ ÐÏÔÏÍËÏ×. îÁÐÒÉÍÅÒ, `rmdir -p a/b/"
+"c'\n"
+" ÄÅÌÁÅÔ ÔÏ ÖÅ, ÞÔÏ É `rmdir a/b/c a/b a'.\n"
+" -v, --verbose ×Ù×ÏÄÉÔØ ÓÏÏÂÝÅÎÉÅ ÄÌÑ ËÁÖÄÏÇÏ ÏÂÒÁÂÏÔÁÎÎÏÇÏ ËÁÔÁÌÏÇÁ\n"
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... ðïóìåäîéê\n"
+" ÉÌÉ: %s [ëìàþ]... ðåò÷ùê ðïóìåäîéê\n"
+" ÉÌÉ: %s [ëìàþ]... ðåò÷ùê ðòéòïóô ðïóìåäîéê\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ ÞÉÓÌÁ ÏÔ ðåò÷ïçï ÄÏ ðïóìåäîåçï Ó ÛÁÇÏÍ ðòéòïóô.\n"
+"\n"
+" -f, --format=æïòíáô ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÄÒÏÂÎÙÈ ÞÉÓÅÌ æïòíáô × ÓÔÉÌÅ "
+"printf\n"
+" -s, --separator=óôòïëá ÉÓÐÏÌØÚÏ×ÁÔØ óôòïëõ ËÁË ÒÁÚÄÅÌÉÔÅÌØ (ÐÏ ÕÍÏÌÞÁÎÉÀ "
+"\\n)\n"
+" -w, --equal-width ×ÙÒÁ×ÎÉ×ÁÔØ ÐÏ ÛÉÒÉÎÅ, ÄÏÂÁ×ÌÑÑ × ÎÁÞÁÌÏ ÎÕÌÉ\n"
+
+#: src/seq.c:88
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"\n"
+"åÓÌÉ ÎÅ ÚÁÄÁÎÙ ðåò÷ùê ÉÌÉ ðòéòïóô, ÐÏ ÕÍÏÌÞÁÎÉÀ ÉÓÐÏÌØÚÕÅÔÓÑ 1. ôÏ\n"
+"ÅÓÔØ ðòéòïóô ÐÏ ÕÍÏÌÞÁÎÉÀ ÐÒÉÎÉÍÁÅÔÓÑ ÚÁ 1, ÄÁÖÅ ÅÓÌÉ ðïóìåäîéê ÍÅÎØÛÅ\n"
+"ðåò÷ïçï. ðåò÷ùê, ðïóìåäîéê É ðòéòïóô ÉÎÔÅÒÐÒÅÔÉÒÕÀÔÓÑ ËÁË ÞÉÓÌÁ Ó\n"
+"ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ. ðòéòïóô ÏÂÙÞÎÏ ÐÏÌÏÖÉÔÅÌÅÎ, ÅÓÌÉ ðåò÷ùê ÍÅÎØÛÅ\n"
+"ðïóìåäîåçï, É ÏÔÒÉÃÁÔÅÌÅÎ, ÅÓÌÉ ðåò÷ùê ÂÏÌØÛÅ ðïóìåäîåçï.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+"æïòíáô ÄÏÌÖÅÎ ÐÏÄÈÏÄÉÔØ ÄÌÑ ÐÅÞÁÔÉ ÏÄÎÏÇÏ ÁÒÇÕÍÅÎÔÁ ÔÉÐÁ `double';\n"
+"ÐÏ ÕÍÏÌÞÁÎÉÀ ÏÎ ÐÒÉÎÉÍÁÅÔÓÑ ÚÁ %.PRECf, ÅÓÌÉ ðåò÷ùê, ðòéòïóô É\n"
+"ðïóìåäîéê ×ÓÅ Ñ×ÌÑÀÔÓÑ ÄÅÓÑÔÉÞÎÙÍÉ ÞÉÓÌÁÍÉ Ó ÆÉËÓÉÒÏ×ÁÎÎÏÊ ÔÏÞËÏÊ Ó\n"
+"ÍÁËÓÉÍÁÌØÎÏÊ ÔÏÞÎÏÓÔØÀ PREC, É %g × ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ.\n"
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÁÒÇÕÍÅÎÔ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ: %s"
+
+#: src/seq.c:342
+#, c-format
+msgid "invalid format string: %s"
+msgstr "ÎÅ×ÅÒÎÁÑ ÓÔÒÏËÁ ÆÏÒÍÁÔÁ: %s"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr "ÐÒÉ ×Ù×ÏÄÅ ÓÔÒÏË ÏÄÉÎÁËÏ×ÏÊ ÛÉÒÉÎÙ ÆÏÒÍÁÔ ÍÏÖÎÏ ÎÅ ÕËÁÚÙ×ÁÔØ"
+
+#: src/setuidgid.c:51
+#, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s éíñ_ðïìøúï÷áôåìñ ëïíáîäá [áòçõíåîô]...\n"
+" ÉÌÉ: %s ëìàþ\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+"óÂÒÁÓÙ×ÁÅÔ ×ÓÅ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÇÒÕÐÐÙ, ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÉÄÅÎÔÉÆÉËÁÔÏÒÙ\n"
+"ÐÏÌØÚÏ×ÁÔÅÌÑ É ÇÒÕÐÐÙ ËÁË Õ ÚÁÄÁÎÎÏÇÏ ðïìøúï÷áôåìñ É ÚÁÐÕÓËÁÅÔ ëïíáîäõ\n"
+"Ó ÕËÁÚÁÎÎÙÍÉ áòçõíåîôáíé. úÁ×ÅÒÛÁÅÔÓÑ ÓÏ ÓÔÁÔÕÓÏÍ 111, ÅÓÌÉ ÏËÁÚÁÌÏÓØ\n"
+"ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÎÕÖÎÙÅ ÉÄÅÎÔÉÆÉËÁÔÏÒÙ ÐÏÌØÚÏ×ÁÔÅÌÑ É ÇÒÕÐÐÙ. ÷\n"
+"ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ×ÏÚ×ÒÁÝÁÅÔÓÑ ×ÙÈÏÄÎÏÊ ÓÔÁÔÕÓ ëïíáîäù. üÔÁ ÐÒÏÇÒÁÍÍÁ\n"
+"ÉÍÅÅÔ ÓÍÙÓÌ ÔÏÌØËÏ ÄÌÑ root (UID=0).\n"
+"\n"
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ: %s"
+
+#: src/setuidgid.c:109
+#, c-format
+msgid "cannot set supplemental group"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÄÏÐÏÌÎÉÔÅÌØÎÕÀ ÇÒÕÐÐÕ"
+
+#: src/setuidgid.c:114
+#, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÇÒÕÐÐÙ ÒÁ×ÎÙÍ %lu"
+
+#: src/setuidgid.c:118
+#, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÏÌØÚÏ×ÁÔÅÌÑ ÒÁ×ÎÙÍ %lu"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþé] æáêì [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"ðÅÒÅÐÉÓÙ×ÁÅÔ ÎÅÓËÏÌØËÏ ÒÁÚ ÕËÁÚÁÎÎÙÅ ÆÁÊÌÙ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÓÄÅÌÁÔØ ÂÏÌÅÅ\n"
+"ÓÌÏÖÎÙÍ ×ÏÓÓÔÁÎÏ×ÌÅÎÉÅ ÄÁÖÅ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÏÞÅÎØ ÄÏÒÏÇÏÇÏ ÏÂÏÒÕÄÏ×ÁÎÉÑ.\n"
+"\n"
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force ÉÚÍÅÎÑÔØ ÐÒÁ×Á, ÒÁÚÒÅÛÁÑ ÚÁÐÉÓØ, ÅÓÌÉ ÎÅÏÂÈÏÄÉÍÏ\n"
+" -n, --iterations=N ÐÅÒÅÐÉÓÁÔØ N ÒÁÚ ×ÍÅÓÔÏ (%d) ÐÏ ÕÍÏÌÞÁÎÉÀ\n"
+" --random-source=æáêì ÐÏÌÕÞÁÔØ ÓÌÕÞÁÊÎÙÅ ÞÉÓÌÁ ÉÚ æáêìá\n"
+" (ÐÏ ÕÍÏÌÞÁÎÉÀ /dev/urandom)\n"
+" -s, --size=N ÏÞÉÓÔÉÔØ N ÂÁÊÔ (×ÏÚÍÏÖÎÙ ÓÕÆÆÉËÓÙ ×ÉÄÁ K, M, G)\n"
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove ÏÂÒÅÚÁÔØ É ÕÄÁÌÑÔØ ÆÁÊÌ ÐÏÓÌÅ ÐÅÒÅÚÁÐÉÓÉ\n"
+" -v, --verbose ÐÏËÁÚÙ×ÁÔØ ÐÒÏÇÒÅÓÓ\n"
+" -x, --exact ÎÅ ÏËÒÕÇÌÑÔØ ÒÁÚÍÅÒÙ ÆÁÊÌÏ× ÄÏ ÓÌÅÄÕÀÝÅÇÏ ÃÅÌÏÇÏ ÂÌÏËÁ;\n"
+" ÐÏ ÕÍÏÌÞÁÎÉÀ ÄÌÑ ÎÅÏÂÙÞÎÙÈ ÆÁÊÌÏ×\n"
+" -z, --zero ÐÅÒÅÚÁÐÉÓÁÔØ × ËÏÎÃÅ ÎÕÌÑÍÉ, ÞÔÏÂÙ ÓËÒÙÔØ ÐÅÒÅÍÅÛÉ×ÁÎÉÅ\n"
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"åÓÌÉ æáêì ÚÁÄÁÎ ËÁË -, ÐÅÒÅÍÅÛÉ×ÁÔØ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ.\n"
+"\n"
+"õÄÁÌÑÅÔ æáêì(Ù), ÅÓÌÉ ÕËÁÚÁÎ --remove (-u). ðÏ ÕÍÏÌÞÁÎÉÀ ÆÁÊÌÙ ÎÅ\n"
+"ÕÄÁÌÑÀÔÓÑ, ÔÁË ËÁË ÞÁÓÔÏ ÏÂÒÁÂÁÔÙ×ÁÀÔÓÑ ÆÁÊÌÙ-ÕÓÔÒÏÊÓÔ×Á ×ÒÏÄÅ\n"
+"/dev/hda, Á ÔÁËÉÅ ÆÁÊÌÙ ÎÅ ÎÁÄÏ ÕÄÁÌÑÔØ. ðÒÉ ÏÂÒÁÂÏÔËÅ ÏÂÙÞÎÙÈ ÆÁÊÌÏ×\n"
+"ÂÏÌØÛÉÎÓÔ×Ï ÌÀÄÅÊ ÉÓÐÏÌØÚÕÀÔ ËÌÀÞ --remove.\n"
+"\n"
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"÷îéíáîéå: ðÏÍÎÉÔÅ, ÞÔÏ shred ÐÏÌÁÇÁÅÔÓÑ ÎÁ ÏÞÅÎØ ×ÁÖÎÏÅ ÐÒÅÄÐÏÌÏÖÅÎÉÅ:\n"
+"ÞÔÏ ×ÁÛÁ ÆÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÐÅÒÅÚÁÐÉÓÙ×ÁÅÔ ÆÁÊÌÙ \"ÎÁ ÍÅÓÔÅ\".\n"
+"ôÒÁÄÉÃÉÏÎÎÏ ÜÔÏ ÔÁË É ÄÅÌÁÅÔÓÑ, ÎÏ ÍÎÏÇÉÅ ÓÏ×ÒÅÍÅÎÎÙÅ ÆÁÊÌÏ×ÙÅ ÓÉÓÔÅÍÙ\n"
+"ÎÅ ÕÄÏ×ÌÅÔ×ÏÒÑÀÔ ÜÔÏÍÕ ÐÒÅÄÐÏÌÏÖÅÎÉÀ. ÷ÏÔ ÐÒÉÍÅÒÙ ÆÁÊÌÏ×ÙÈ ÓÉÓÔÅÍ, ÎÁ\n"
+"ËÏÔÏÒÙÈ shred ÎÅ ÜÆÆÅËÔÉ×ÅÎ ÉÌÉ ÎÅ ÄÁÅÔ ÇÁÒÁÎÔÉÉ ÜÆÆÅËÔÉ×ÎÏÓÔÉ ×Ï ×ÓÅÈ\n"
+"ÒÅÖÉÍÁÈ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ:\n"
+"\n"
+
+# log-structured???
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"* ÖÕÒÎÁÌÉÒÕÀÝÉÅ ÆÁÊÌÏ×ÙÅ ÓÉÓÔÅÍÙ, ÎÁÐÒÉÍÅÒ ËÏÔÏÒÙÅ ÉÄÕÔ × ËÏÍÐÌÅËÔÅ\n"
+" AIX É Solaris (É JFS, ReiserFS, XFS, Ext3 É ÄÒ.)\n"
+"\n"
+"* ÆÁÊÌÏ×ÙÅ ÓÉÓÔÅÍÙ, ËÏÔÏÒÙÅ ÚÁÐÉÓÙ×ÁÀÔ ÉÚÂÙÔÏÞÎÙÅ ÄÁÎÎÙÅ É ÓÏÈÒÁÎÑÀÔ\n"
+" ÒÁÂÏÔÏÓÐÏÓÏÂÎÏÓÔØ, ÄÁÖÅ ÅÓÌÉ ÓÌÕÞÁÀÔÓÑ ÎÅÕÄÁÞÎÙÅ ÚÁÐÉÓÉ, ÎÁÐÒÉÍÅÒ\n"
+" ÆÁÊÌÏ×ÙÅ ÓÉÓÔÅÍÙ, ÏÓÎÏ×ÁÎÎÙÅ ÎÁ ÔÅÈÎÏÌÏÇÉÉ RAID\n"
+"\n"
+"* ÆÁÊÌÏ×ÙÅ ÓÉÓÔÅÍÙ, ËÏÔÏÒÙÅ ÓÏÚÄÁÀÔ ÓÎÉÍËÉ ÓÏÓÔÏÑÎÉÑ, ÎÁÐÒÉÍÅÒ\n"
+" NFS-ÓÅÒ×ÅÒ ÏÔ Network Appliance\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+"* ÆÁÊÌÏ×ÙÅ ÓÉÓÔÅÍÙ, ËÏÔÏÒÙÅ ËÜÛÉÒÕÀÔ ÆÁÊÌÙ ×Ï ×ÒÅÍÅÎÎÙÈ ÈÒÁÎÉÌÉÝÁÈ,\n"
+"ÎÁÐÒÉÍÅÒ ËÌÉÅÎÔÙ NFS ×ÅÒÓÉÉ 3\n"
+"\n"
+"* ÓÖÁÔÙÅ ÆÁÊÌÏ×ÙÅ ÓÉÓÔÅÍÙ\n"
+"\n"
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+"÷ ÓÌÕÞÁÅ ÆÁÊÌÏ×ÙÈ ÓÉÓÔÅÍ ext3 ÕÐÏÍÑÎÕÔÏÅ ×ÙÛÅ ÏÇÒÁÎÉÞÅÎÉÅ ×ÅÒÎÏ (É\n"
+"shred, ÓÌÅÄÏ×ÁÔÅÌØÎÏ, ÎÅ ÔÁË ÜÆÆÅËÔÉ×ÅÎ), ÔÏÌØËÏ × ÒÅÖÉÍÅ\n"
+"data=journal, ËÏÇÄÁ ËÒÏÍÅ ÍÅÔÁÄÁÎÎÙÈ ÖÕÒÎÁÌÉÒÕÀÔÓÑ ÔÁËÖÅ É ÓÁÍÉ ÄÁÎÎÙÅ\n"
+"ÆÁÊÌÏ×. ÷ ÒÅÖÉÍÁÈ data=ordered (ÐÏ ÕÍÏÌÞÁÎÉÀ) É data=writeback\n"
+"ÐÒÏÇÒÁÍÍÁ shred ÒÁÂÏÔÁÅÔ ËÁË ÏÂÙÞÎÏ. òÅÖÉÍÙ ÖÕÒÎÁÌÉÒÏ×ÁÎÉÑ ext3 ÍÏÖÎÏ\n"
+"ÉÚÍÅÎÉÔØ, ÄÏÂÁ×É× ËÌÀÞ data=ÞÔÏ-ÔÏ Ë ÐÁÒÁÍÅÔÒÁÍ ÍÏÎÔÉÒÏ×ÁÎÉÑ ÄÌÑ\n"
+"ËÏÎËÒÅÔÎÏÊ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ × ÆÁÊÌÅ /etc/fstab, ËÁË ÄÏËÕÍÅÎÔÉÒÏ×ÁÎÏ ×\n"
+"ÓÔÒÁÎÉÃÅ man ÄÌÑ mount (man mount).\n"
+"\n"
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+"ëÒÏÍÅ ÔÏÇÏ, ÒÅÚÅÒ×ÎÙÅ ËÏÐÉÉ É ÕÄÁÌÅÎÎÙÅ ÚÅÒËÁÌÁ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ ÍÏÇÕÔ\n"
+"ÓÏÄÅÒÖÁÔØ ËÏÐÉÉ ÆÁÊÌÁ, ËÏÔÏÒÙÅ ÎÅÌØÚÑ ÕÄÁÌÉÔØ, É ËÏÔÏÒÙÅ ÐÏÚ×ÏÌÑÔ\n"
+"×ÐÏÓÌÅÄÓÔ×ÉÉ ×ÏÓÓÔÁÎÏ×ÉÔØ ÕÎÉÞÔÏÖÅÎÎÙÊ ÆÁÊÌ.\n"
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr "%s: ÏÐÅÒÁÃÉÑ fdatasync ÚÁ×ÅÒÛÉÌÁÓØ ÎÅÕÓÐÅÈÏÍ"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr "%s: ÏÐÅÒÁÃÉÑ fsync ÚÁ×ÅÒÛÉÌÁÓØ ÎÅÕÓÐÅÛÎÏ"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÁÔÉÔØÓÑ"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: ÐÒÏÈÏÄ %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s: ÏÛÉÂËÁ ÚÁÐÉÓÉ ÐÏ ÓÍÅÝÅÎÉÀ %s"
+
+#: src/shred.c:478
+#, c-format
+msgid "%s: lseek failed"
+msgstr "%s: ÏÐÅÒÁÃÉÑ lseek ÎÅÕÓÐÅÛÎÁ"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s: ÆÁÊÌ ÓÌÉÛËÏÍ ×ÅÌÉË"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: ÐÒÏÈÏÄ %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: ÐÒÏÈÏÄ %lu/%lu (%s)...%s/%s %d%%"
+
+#: src/shred.c:776
+#, c-format
+msgid "%s: fstat failed"
+msgstr "%s: ÏÐÅÒÁÃÉÑ fstat ÚÁ×ÅÒÛÉÌÁÓØ ÎÅÕÓÐÅÈÏÍ"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: ÎÅ×ÅÒÎÙÊ ÔÉÐ ÆÁÊÌÁ"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: Õ ÆÁÊÌÁ ÏÔÒÉÃÁÔÅÌØÎÙÊ ÒÁÚÍÅÒ"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s: ÏÛÉÂËÁ ÐÒÉ ÕÓÅÞÅÎÉÉ"
+
+#: src/shred.c:889
+#, c-format
+msgid "%s: fcntl failed"
+msgstr "%s: ÏÐÅÒÁÃÉÑ fcntl ÚÁ×ÅÒÛÉÌÁÓØ ÎÅÕÓÐÅÈÏÍ"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr ""
+"%s: ÎÅ×ÏÚÍÏÖÎÏ ÎÁÒÅÚÁÔØ ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ Ó ÔÏÌØËÏ Ó ÐÒÁ×ÏÍ ÄÏÂÁ×ÌÅÎÉÑ"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: ÕÄÁÌÅÎÉÅ"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: ÐÅÒÅÉÍÅÎÏ×ÁÎ × %s"
+
+#: src/shred.c:1018
+#, c-format
+msgid "%s: failed to remove"
+msgstr "%s: ÎÅ ÕÄÁÌÏÓØ ÕÄÁÌÉÔØ"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: ÕÄÁÌÅÎ"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, c-format
+msgid "%s: failed to close"
+msgstr "%s: ÎÅ ÕÄÁÌÏÓØ ÚÁËÒÙÔØ"
+
+#: src/shred.c:1065
+#, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: ÎÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ÄÌÑ ÞÔÅÎÉÑ"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÐÒÏÈÏÄÏ×"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, c-format
+msgid "multiple random sources specified"
+msgstr "ÚÁÄÁÎÏ ÎÅÓËÏÌØËÏ ÉÓÔÏÞÎÉËÏ× ÓÌÕÞÁÊÎÙÈ ÞÉÓÅÌ"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: ÎÅ×ÅÒÎÙÊ ÒÁÚÍÅÒ ÆÁÊÌÁ"
+
+#: src/shuf.c:51
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [æáêì]\n"
+" ÉÌÉ: %s -e [ëìàþ]... [áòç]...\n"
+" ÉÌÉ: %s -l ïô-äï [ëìàþ]...\n"
+
+#: src/shuf.c:57
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ ÓÌÕÞÁÊÎÕÀ ÐÅÒÅÓÔÁÎÏ×ËÕ ×ÈÏÄÎÙÈ ÓÔÒÏË ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -e, --echo ÓÞÉÔÁÔØ ËÁÖÄÙÊ áòç ×ÈÏÄÎÏÊ ÓÔÒÏËÏÊ\n"
+" -i, --input-range=ïô-äï ÓÞÉÔÁÔØ ÞÉÓÌÁ ïô É äï ×ÈÏÄÎÙÍÉ ÓÔÒÏËÁÍÉ\n"
+" -n, --head-lines=þéóìï ×Ù×ÏÄÉÔØ ÎÅ ÂÏÌÅÅ ÚÁÄÁÎÎÏÇÏ þéóìá ÓÔÒÏË\n"
+" -o, --output=æáêì ÚÁÐÉÓÁÔØ ÒÅÚÕÌØÔÁÔ × æáêì, Á ÎÅ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ "
+"×Ù×ÏÄ\n"
+" --random-source=æáêì ÐÏÌÕÞÁÔØ ÓÌÕÞÁÊÎÙÅ ÞÉÓÌÁ ÉÚ æáêìá \n"
+" (ÐÏ ÕÍÏÌÞÁÎÉÀ /dev/urandom)\n"
+" -z, --zero-terminated ÚÁ×ÅÒÛÁÔØ ÓÔÒÏËÉ ÎÕÌÅÍ, Á ÎÅ ÐÅÒÅ×ÏÄÏÍ ÓÔÒÏËÉ\n"
+
+#: src/shuf.c:287
+#, c-format
+msgid "multiple -i options specified"
+msgstr "ÚÁÄÁÎÏ ÎÅÓËÏÌØËÏ ËÌÀÞÅÊ -i"
+
+#: src/shuf.c:307
+#, c-format
+msgid "invalid input range %s"
+msgstr "ÎÅÄÏÐÕÓÔÉÍÙÊ ×ÈÏÄÎÏÊ ÄÉÁÐÁÚÏÎ %s"
+
+#: src/shuf.c:320
+#, c-format
+msgid "invalid line count %s"
+msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÓÔÒÏË: %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr "ÚÁÄÁÎÏ ÎÅÓËÏÌØËÏ ×ÙÈÏÄÎÙÈ ÆÁÊÌÏ×"
+
+#: src/shuf.c:353
+#, c-format
+msgid "cannot combine -e and -i options"
+msgstr "ÎÅÌØÚÑ ÓÏÞÅÔÁÔØ ËÌÀÞÉ -e É -i"
+
+#: src/shuf.c:362
+#, c-format
+msgid "extra operand %s\n"
+msgstr "ÌÉÛÎÉÊ ÏÐÅÒÁÎÄ %s\n"
+
+#: src/sleep.c:47
+#, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s þéóìï[óõææéëó]...\n"
+" ÉÌÉ: %s ëìàþ\n"
+"ðÒÉÏÓÔÁÎÁ×ÌÉ×ÁÅÔ ×ÙÐÏÌÎÅÎÉÅ ÎÁ ÚÁÄÁÎÎÏÅ þéóìï ÓÅËÕÎÄ. óõææéëó ÍÏÖÅÔ\n"
+"ÐÒÉÎÉÍÁÔØ ÚÎÁÞÅÎÉÅ `s', ÞÔÏ ÏÚÎÁÞÁÅÔ ÓÅËÕÎÄÙ (ÐÒÉÍÅÎÑÅÔÓÑ ÐÏ\n"
+"ÕÍÏÌÞÁÎÉÀ), `m' -- ÍÉÎÕÔÙ, `h' -- ÞÁÓÙ É `d' -- ÄÎÉ. ÷ ÏÔÌÉÞÉÅ ÏÔ\n"
+"ÄÒÕÇÉÈ ÒÅÁÌÉÚÁÃÉÊ, ËÏÔÏÒÙÅ ÔÒÅÂÕÀÔ, ÞÔÏÂÙ þéóìï ÂÙÌÏ ÃÅÌÙÍ, ÚÄÅÓØ ÏÎÏ\n"
+"ÍÏÖÅÔ ÂÙÔØ ÐÒÏÉÚ×ÏÌØÎÙÍ ÞÉÓÌÏÍ Ó ÐÌÁ×ÁÀÝÅÊ ÚÁÐÑÔÏÊ. åÓÌÉ ÚÁÄÁÎÏ ÎÅÓËÏÌØËÏ\n"
+"ÁÒÇÕÍÅÎÔÏ×, ÐÒÉÏÓÔÁÎÁ×ÌÉ×ÁÅÔ ÎÁ ÐÅÒÉÏÄ, ÒÁ×ÎÙÊ ÓÕÍÍÅ ÉÈ ÚÎÁÞÅÎÉÊ.\n"
+"\n"
+
+#: src/sleep.c:138
+#, c-format
+msgid "invalid time interval %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ×ÒÅÍÅÎÎÏÊ ÉÎÔÅÒ×ÁÌ %s"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ ÔÁÊÍÅÒ ÒÅÁÌØÎÏÇÏ ×ÒÅÍÅÎÉ"
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ ÓÏÒÔÉÒÏ×ÁÎÎÏÅ ÓÌÉÑÎÉÅ ×ÓÅÈ æáêì(Ï×) ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ.\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+"ëÌÀÞÉ, ÚÁÄÁÀÝÉÅ ÐÏÒÑÄÏË:\n"
+"\n"
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks ÉÇÎÏÒÉÒÏ×ÁÔØ ÎÁÞÁÌØÎÙÅ ÐÒÏÐÕÓËÉ\n"
+" -d, --dictionary-order ÒÁÓÓÍÁÔÒÉ×ÁÔØ ÔÏÌØËÏ ÐÒÏÐÕÓËÉ, ÂÕË×Ù É ÃÉÆÒÙ\n"
+" -f, --ignore-case ÉÇÎÏÒÉÒÏ×ÁÔØ ÒÅÇÉÓÔÒ ÂÕË×\n"
+
+#: src/sort.c:326
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort ÓÒÁ×ÎÉ×ÁÔØ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó ÏÂÝÉÍ ÞÉÓÌÏ×ÙÍ "
+"ÚÎÁÞÅÎÉÅÍ\n"
+" -i, --ignore-nonprinting ÒÁÓÓÍÁÔÒÉ×ÁÔØ ÔÏÌØËÏ ÐÅÞÁÔÎÙÅ ÚÎÁËÉ\n"
+" -M, --month-sort ÓÒÁ×ÎÉ×ÁÔØ (ÎÅÉÚ×ÅÓÔÎÏ) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort ÓÒÁ×ÎÉ×ÁÔØ ÞÉÓÌÏ×ÙÅ ÚÎÁÞÅÎÉÑ ÓÔÒÏË\n"
+" -R, --random-sort ÓÏÒÔÉÒÏ×ÁÔØ ÐÏ ÓÌÕÞÁÊÎÙÍ ÈÜÛ-ÞÉÓÌÁÍ ËÌÀÞÅÊ\n"
+" --random-source=æáêì ÂÒÁÔØ ÓÌÕÞÁÊÎÙÅ ÞÉÓÌÁ ÉÚ æáêìá \n"
+" (ÐÏ ÕÍÏÌÞÁÎÉÀ /dev/urandom)\n"
+" -r, --reverse ÏÂÒÁÔÉÔØ ÒÅÚÕÌØÔÁÔÙ ÓÒÁ×ÎÅÎÉÑ\n"
+"\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+"ïÓÔÁÌØÎÙÅ ËÌÀÞÉ:\n"
+"\n"
+" -c, --check, --check=diagnose-first ÐÒÏ×ÅÒÑÔØ, ÓÏÒÔÉÒÏ×ÁÎÙ ÌÉ ×ÈÏÄÎÙÅ "
+"ÆÁÊÌÙ;\n"
+" ÎÅ ÓÏÒÔÉÒÏ×ÁÔØ\n"
+" -C, --check=quiet, --check=silent ËÁË -c, ÎÏ ÎÅ ÓÏÏÂÝÁÔØ Ï ÐÅÒ×ÏÊ ÐÌÏÈÏÊ "
+"ÓÔÒÏËÅ\n"
+" --compress-program=ðòïç ÓÖÉÍÁÔØ ×ÒÅÍÅÎÎÙÅ ÆÁÊÌÙ ËÏÍÁÎÄÏÊ ðòïç;\n"
+" ÒÁÚÖÉÍÁÔØ ÉÈ ËÏÍÁÎÄÏÊ ðòïç -d\n"
+" -k, --key=ðïú1[,ðïú2]\n"
+" ÎÁÞÉÎÁÔØ ËÌÀÞ × ðïú1 É ÚÁ×ÅÒÛÁÔØ ÎÁ ðïú2 (ÏÔÓÞÅÔ ÏÔ 1)\n"
+" -m, --merge ÏÂßÅÄÉÎÑÔØ ÕÖÅ ÓÏÒÔÉÒÏ×ÁÎÎÙÅ ÆÁÊÌÙ, ÎÅ ÓÏÒÔÉÒÏ×ÁÔØ\n"
+
+#: src/sort.c:346
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+" -o, --output=æáêì ×Ù×ÏÄÉÔØ × æáêì, Á ÎÅ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ\n"
+" -s, --stable ÓÔÁÂÉÌÉÚÉÒÏ×ÁÔØ ÓÏÒÔÉÒÏ×ËÕ, ÉÓËÌÀÞÉ× ÐÒÏ×ÅÒËÕ ÎÁ "
+"ÒÁ×ÅÎÓÔ×Ï\n"
+" -S, --buffer-size=òáúíåò\n"
+" ÉÓÐÏÌØÚÏ×ÁÔØ × ÏÓÎÏ×ÎÏÊ ÐÁÍÑÔÉ ÂÕÆÅÒ ÕËÁÚÁÎÎÏÇÏ òáúíåòá\n"
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=òáúäåìéôåìø\n"
+" ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÉ ÐÏÉÓËÅ ËÌÀÞÅ×ÙÈ ÐÏÌÅÊ òáúäåìéôåìø, Á ÎÅ\n"
+" ÐÅÒÅÈÏÄ ÏÔ ÎÅÐÒÏÂÅÌØÎÙÈ ÚÎÁËÏ× Ë ÐÒÏÂÅÌØÎÙÍ\n"
+" -T, --temporary-directory=ëáôáìïç\n"
+" ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ×ÒÅÍÅÎÎÙÈ ÆÁÊÌÏ× ëáôáìïç, Á ÎÅ $TMPDIR\n"
+" ÉÌÉ %s; ÎÅÓËÏÌØËÏ ÔÁËÉÈ ËÌÀÞÅÊ ÚÁÄÁÀÔ ÎÅÓËÏÌØËÏ "
+"ËÁÔÁÌÏÇÏ×\n"
+" -u, --unique Ó -c, ÐÒÏ×ÅÒÑÔØ ÐÏÒÑÄÏË ÓÔÒÏÇÏ;\n"
+" ÂÅÚ -c, ×Ù×ÏÄÉÔØ ÔÏÌØËÏ ÐÅÒ×ÏÅ ÓÒÅÄÉ ÎÅÓËÏÌØËÉÈ ÒÁ×ÎÙÈ\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -z, --zero-terminated ÚÁ×ÅÒÛÁÔØ ÓÔÒÏËÉ ÎÕÌÅ×ÙÍ ÂÁÊÔÏÍ, Á ÎÅ ÎÏ×ÏÊ "
+"ÓÔÒÏËÏÊ\n"
+
+#: src/sort.c:363
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"ðïú ÚÁÄÁÅÔÓÑ ËÁË ð[.ú][ëìàþ], ÇÄÅ ð -- ÎÏÍÅÒ ÐÏÌÑ, Á ú -- ÐÏÚÉÃÉÑ\n"
+"ÚÎÁËÁ × ÜÔÏÍ ÐÏÌÅ, ÏÂÁ ÏÔÓÞÉÔÙ×ÁÀÔÓÑ ÏÔ 1. åÓÌÉ ÎÅ ÚÁÄÁÎÙ ËÌÀÞÉ -t\n"
+"ÉÌÉ -b, ÚÎÁËÉ × ÐÏÌÅ ÏÔÓÞÉÔÙ×ÁÀÔÓÑ ÏÔ ÎÁÞÁÌÁ ÐÒÅÄÛÅÓÔ×ÕÀÝÉÈ ÐÒÏÂÅÌØÎÙÈ\n"
+"ÚÎÁËÏ×. ëìàþ ÓÏÓÔÁ×ÌÑÅÔÓÑ ÉÚ ÏÄÎÏÊ ÉÌÉ ÎÅÓËÏÌØËÉÈ ÂÕË×, ÚÁÄÁÀÝÉÈ\n"
+"ÐÏÒÑÄÏË ÓÏÒÔÉÒÏ×ËÉ; ÏÎ ÏÔÍÅÎÑÅÔ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÅ ÇÌÏÂÁÌØÎÙÅ ËÌÀÞÉ ÄÌÑ\n"
+"ÄÁÎÎÏÇÏ ËÌÀÞÅ×ÏÇÏ ÐÏÌÑ. åÓÌÉ ËÌÀÞÅ×ÏÅ ÐÏÌÅ ÎÅ ÚÁÄÁÎÏ, × ËÁÞÅÓÔ×Å\n"
+"ËÌÀÞÁ ÉÓÐÏÌØÚÕÅÔÓÑ ÓÔÒÏËÁ ÃÅÌÉËÏÍ.\n"
+"\n"
+"ðÏÓÌÅ òáúíåòá ÍÏÖÎÏ ÐÉÓÁÔØ ÓÌÅÄÕÀÝÉÅ ÓÕÆÆÉËÓÙ-ÍÕÌØÔÉÐÌÉËÁÔÏÒÙ:\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"% 1% ÐÁÍÑÔÉ, b 1, k 1024 (ÐÏ ÕÍÏÌÞÁÎÉÀ), É ÔÁË ÄÁÌÅÅ ÄÌÑ M, G, T, P, E, Z, "
+"Y.\n"
+"\n"
+"åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ.\n"
+"\n"
+"*** ðòåäõðòåöäåîéå ***\n"
+"õÓÔÁÎÏ×ÌÅÎÎÁÑ × ÓÒÅÄÅ ÌÏËÁÌØ ×ÌÉÑÅÔ ÎÁ ÐÏÒÑÄÏË ÓÏÒÔÉÒÏ×ËÉ.\n"
+"þÔÏÂÙ ÐÏÌÕÞÉÔØ ÔÒÁÄÉÃÉÏÎÎÙÊ ÐÏÒÑÄÏË, ÉÓÐÏÌØÚÕÀÝÉÊ ÓÉÓÔÅÍÎÙÅ ÚÎÁÞÅÎÉÑ ÂÁÊÔ,\n"
+"ÕÓÔÁÎÏ×ÉÔÅ LC_ALL=C.\n"
+
+#: src/sort.c:538
+#, c-format
+msgid "waiting for %s [-d]"
+msgstr "ÏÖÉÄÁÎÉÅ %s [-d]"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr "%s [-d] ÚÁ×ÅÒÛÉÌÓÑ ÎÅÕÓÐÅÛÎÏ"
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "ÏÐÅÒÁÃÉÑ ÏÔËÒÙÔÉÑ ÚÁ×ÅÒÛÉÌÁÓØ ÎÅÕÓÐÅÈÏÍ"
+
+#: src/sort.c:758
+msgid "fflush failed"
+msgstr "ÏÐÅÒÁÃÉÑ fflush ÚÁ×ÅÒÛÉÌÁÓØ ÎÅÕÓÐÅÛÎÏ"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "ÚÁËÒÙÔÉÅ ÎÅÕÓÐÅÛÎÏ"
+
+#: src/sort.c:772
+#, c-format
+msgid "dup2 failed"
+msgstr "dup2 ÎÅÕÓÐÅÛÎÁ"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ %s"
+
+#: src/sort.c:880 src/sort.c:929
+msgid "couldn't create temporary file"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ"
+
+#: src/sort.c:903
+msgid "couldn't open temporary file"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ %s -d"
+
+#: src/sort.c:924
+#, c-format
+msgid "couldn't create process for %s -d"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÐÒÏÃÅÓÓ ÄÌÑ %s -d"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "ÚÁÐÉÓØ ÎÅÕÓÐÅÛÎÁ"
+
+#: src/sort.c:975
+#, c-format
+msgid "warning: cannot remove: %s"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ, ÎÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ: %s"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "ÒÁÚÍÅÒ ÓÏÒÔÉÒÏ×ËÉ"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "ÏÐÅÒÁÃÉÑ stat ÚÁ×ÅÒÛÉÌÁÓØ ÎÅÕÓÐÅÈÏÍ"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "ÞÔÅÎÉÅ ÎÅÕÓÐÅÛÎÏ"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: ÎÅÐÒÁ×ÉÌØÎÙÊ ÐÏÒÑÄÏË: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "ÓÔÁÎÄÁÒÔÎÁÑ ÏÛÉÂËÁ"
+
+#: src/sort.c:2562
+#, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: ÎÅ×ÅÒÎÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÐÏÌÑ %s"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr "ËÌÀÞÉ `-%s' ÎÅÓÏ×ÍÅÓÔÉÍÙ"
+
+#: src/sort.c:2637
+#, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: ÎÅ×ÅÒÎÙÊ ÓÞÅÔÞÉË × ÎÁÞÁÌÅ %s"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÐÏÓÌÅ `-'"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÐÏÓÌÅ `.'"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "ÌÉÛÎÉÊ ÚÎÁË × ÓÐÅÃÉÆÉËÁÃÉÉ ÐÏÌÑ"
+
+#: src/sort.c:2934
+#, c-format
+msgid "multiple compress programs specified"
+msgstr "ÚÁÄÁÎÙ ÎÅÓËÏÌØËÏ ÐÒÏÇÒÁÍÍ ÓÖÁÔÉÑ"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ × ÎÁÞÁÌÅ ÐÏÌÑ"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "ÎÕÌÅ×ÏÊ ÎÏÍÅÒ ÐÏÌÑ"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "ÎÕÌÅ×ÏÊ ÚÎÁËÏ×ÙÊ ÓÄ×ÉÇ"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÐÏÓÌÅ `,'"
+
+#: src/sort.c:3142
+#, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "ÄÏÐÏÌÎÉÔÅÌØÎÙÊ ÏÐÅÒÁÎÄ %s ÎÅ ÄÏÐÕÓÔÉÍ Ó -%c"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ] [÷èïä [ðòåæéëó]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"÷Ù×ÏÄÉÔ ÆÉËÓÉÒÏ×ÁÎÎÏÇÏ ÒÁÚÍÅÒÁ ÞÁÓÔÉ æáêìá × ÆÁÊÌÙ ðòåæéëóaa,\n"
+"ðòåæéëóab, ...; ÐÏ ÕÍÏÌÞÁÎÉÀ ÒÁÚÍÅÒ ÞÁÓÔÉ ÒÁ×ÅÎ 1000 ÓÔÒÏË, Á ðòåæéëó\n"
+"ÒÁ×ÅÎ `x'. åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ\n"
+"××ÏÄ.\n"
+"\n"
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=î ÉÓÐÏÌØÚÏ×ÁÔØ ÓÕÆÆÉËÓÙ ÄÌÉÎÙ î (ÐÏ ÕÍÏÌÞÁÎÉÀ %d)\n"
+" -b, --bytes=þéóìï ÚÁÐÉÓÙ×ÁÔØ × ËÁÖÄÙÊ ×ÙÈÏÄÎÏÊ ÆÁÊÌ ÚÁÄÁÎÎÏÅ þéóìï "
+"ÂÁÊÔ\n"
+" -C, --line-bytes=þéóìï ÚÁÐÉÓÙ×ÁÔØ ÎÅ ÂÏÌÅÅ ÚÁÄÁÎÎÏÇÏ þéóìá ÂÁÊÔ ÉÚ "
+"ÓÔÒÏËÉ\n"
+" -d, --numeric-suffixes ÉÓÐÏÌØÚÏ×ÁÔØ ÞÉÓÌÏ×ÙÅ, Á ÎÅ ÁÌÆÁ×ÉÔÎÙÅ ÓÕÆÆÉËÓÙ\n"
+" -l, --lines=þéóìï ÚÁÐÉÓÙ×ÁÔØ × ËÁÖÄÙÊ ×ÙÈÏÄÎÏÊ ÆÁÊÌ ÚÁÄÁÎÎÏÅ þéóìï "
+"ÓÔÒÏË\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose ÐÅÞÁÔÁÔØ ÓÏÏÂÝÅÎÉÅ × ÓÔÁÎÄÁÒÔÎÙÊ ÐÏÔÏË ÏÛÉÂÏË "
+"ÐÅÒÅÄ\n"
+" ÏÔËÒÙÔÉÅÍ ÏÞÅÒÅÄÎÏÇÏ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"ðÒÉ ÚÁÄÁÎÉÉ þéóìá ÂÁÊÔ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÕÆÆÉËÓ: b ÏÚÎÁÞÁÅÔ 512b, k -- "
+"1kb,\n"
+"m -- 1Mb.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "éÓÞÅÒÐÁÎÙ ÓÕÆÆÉËÓÙ ÄÌÑ ×ÙÈÏÄÎÙÈ ÆÁÊÌÏ×"
+
+#: src/split.c:211
+#, c-format
+msgid "creating file %s\n"
+msgstr "ÓÏÚÄÁÎÉÅ ÆÁÊÌÁ %s\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÒÁÚÂÉ×ÁÔØ ÎÅÓËÏÌØËÉÍÉ ÍÅÔÏÄÁÍÉ ÓÒÁÚÕ"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: ÎÅ×ÅÒÎÁÑ ÄÌÉÎÁ ÓÕÆÆÉËÓÁ"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÂÁÊÔ"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÓÔÒÏË"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "ËÌÀÞ ÞÉÓÌÁ ÓÔÒÏË -%s%c... ÓÌÉÛËÏÍ ×ÅÌÉË"
+
+#: src/split.c:518
+#, c-format
+msgid "invalid number of lines: 0"
+msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÓÔÒÏË: 0"
+
+#: src/stat.c:636
+#, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÕÐÒÁ×ÌÑÀÝÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ `\\%c' ÎÅ ÒÁÓÐÏÚÎÁÎÁ"
+
+#: src/stat.c:680
+#, c-format
+msgid "%s: invalid directive"
+msgstr "%s: ÎÅ×ÅÒÎÁÑ ÄÉÒÅËÔÉ×Á"
+
+#: src/stat.c:726
+#, c-format
+msgid "warning: backslash at end of format"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÏÂÒÁÔÎÁÑ ËÏÓÁÑ ÞÅÒÔÁ × ËÏÎÃÅ ÆÏÒÍÁÔÁ"
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÞÉÔÁÔØ ÉÎÆÏÒÍÁÃÉÀ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ ÄÌÑ %s"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ] æáêì...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+"ïÔÏÂÒÁÖÁÅÔ ÓÏÓÔÏÑÎÉÅ ÆÁÊÌÁ ÉÌÉ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ.\n"
+"\n"
+" -L, --dereference ÓÌÅÄÏ×ÁÔØ ÐÏ ÓÓÙÌËÁÍ\n"
+" -f, --file-system ÐÏËÁÚÁÔØ ÓÏÓÔÏÑÎÉÅ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ, Á ÎÅ ÆÁÊÌÁ\n"
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+" -c --format=æïòíáô ÉÓÐÏÌØÚÏ×ÁÔØ ÕËÁÚÁÎÎÙÊ æïòíáô, Á ÎÅ ÐÒÉÎÉÍÁÅÍÙÊ ÐÏ "
+"ÕÍÏÌÞÁÎÉÀ;\n"
+" ÐÅÒÅ×ÏÄÉÔØ ÓÔÒÏËÕ ÐÏÓÌÅ ËÁÖÄÏÇÏ ÉÓÐÏÌØÚÏ×ÁÎÉÑ "
+"æïòíáôá\n"
+" --printf=FORMAT ËÁË --format, ÎÏ ÉÎÔÅÒÐÒÅÔÉÒÏ×ÁÔØ ÕÐÒÁ×ÌÑÀÝÉÅ\n"
+" ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ É ÎÅ ÐÅÒÅ×ÏÄÉÔØ ÓÔÒÏËÕ × "
+"ËÏÎÃÅ.\n"
+" åÓÌÉ ×ÁÍ ÎÕÖÅÎ ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ, ×ÓÔÁ×ØÔÅ × æïòíáô "
+"\\n.\n"
+" -t, --terse ×Ù×ÏÄÉÔØ ÉÎÆÏÒÍÁÃÉÀ × ËÏÍÐÁËÔÎÏÊ ÆÏÒÍÅ\n"
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"\n"
+"äÏÐÕÓÔÉÍÙÅ ÆÏÒÍÁÔÎÙÅ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÄÌÑ ÆÁÊÌÏ× (ÂÅÚ --file-system):\n"
+"\n"
+" %a ðÒÁ×Á ÄÏÓÔÕÐÁ × ×ÏÓØÍÅÒÉÞÎÏÊ ÆÏÒÍÅ\n"
+" %A ðÒÁ×Á ÄÏÓÔÕÐÁ × ÞÉÔÁÅÍÏÊ ÆÏÒÍÅ\n"
+" %b þÉÓÌÏ ×ÙÄÅÌÅÎÎÙÈ ÂÌÏËÏ× (ÓÍÏÔÒÉÔÅ %B)\n"
+" %B òÁÚÍÅÒ ÂÌÏËÁ, ÓÏÏÂÝÁÅÍÏÇÏ %b, × ÂÁÊÔÁÈ\n"
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+" %d îÏÍÅÒ ÕÓÔÒÏÊÓÔ×Á, ÄÅÓÑÔÉÞÎÙÊ\n"
+" %D îÏÍÅÒ ÕÓÔÒÏÊÓÔ×Á, ÛÅÓÔÎÁÄÃÁÔÉÒÉÞÎÙÊ\n"
+" %f îÉÚËÏÕÒÏ×ÎÅ×ÙÊ ÒÅÖÉÍ, ÛÅÓÔÎÁÄÃÁÔÉÒÉÞÎÙÊ\n"
+" %F ôÉÐ ÆÁÊÌÁ\n"
+" %g ID ÇÒÕÐÐÙ-×ÌÁÄÅÌØÃÁ\n"
+" %G éÍÑ ÇÒÕÐÐÙ-×ÌÁÄÅÌØÃÁ\n"
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+" %h þÉÓÌÏ ÖÅÓÔËÉÈ ÓÓÙÌÏË\n"
+" %i þÉÓÌÏ Inode\n"
+" %n éÍÑ ÆÁÊÌÁ\n"
+" %N üËÒÁÎÉÒÏ×ÁÎÎÏÅ ÉÍÑ ÆÁÊÌÁ, ÓÉÍ×ÏÌØÎÁÑ ÓÓÙÌËÙ ÒÁÚÙÍÅÎÏ×Ù×ÁÅÔÓÑ\n"
+" %o òÁÚÍÅÒ ÂÌÏËÁ ××ÏÄÁ/×Ù×ÏÄÁ\n"
+" %s ðÏÌÎÙÊ ÒÁÚÍÅÒ, × ÂÁÊÔÁÈ\n"
+" %t ïÓÎÏ×ÎÏÊ ÔÉÐ ÕÓÔÒÏÊÓÔ×Á, ÛÅÓÔÎÁÄÃÁÔÉÒÉÞÎÙÊ\n"
+" %T ÷ÔÏÒÏÓÔÅÐÅÎÎÙÊ ÔÉÐ ÕÓÔÒÏÊÓÔ×Á, ÛÅÓÔÎÁÄÃÁÔÉÒÉÞÎÙÊ\n"
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+" %u ID ÐÏÌØÚÏ×ÁÔÅÌÑ-×ÌÁÄÅÌØÃÁ\n"
+" %U éÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ-×ÌÁÄÅÌØÃÁ\n"
+" %x ÷ÒÅÍÑ ÐÏÓÌÅÄÎÅÇÏ ÄÏÓÔÕÐÁ\n"
+" %X ÷ÒÅÍÑ ÐÏÓÌÅÄÎÅÇÏ ÄÏÓÔÕÐÁ × ÓÅËÕÎÄÁÈ Ó ÎÁÞÁÌÁ üÐÏÈÉ\n"
+" %y ÷ÒÅÍÑ ÐÏÓÌÅÄÎÅÊ ÍÏÄÉÆÉËÁÃÉÉ\n"
+" %Y ÷ÒÅÍÑ ÐÏÓÌÅÄÎÅÊ ÍÏÄÉÆÉËÁÃÉÉ × ÓÅËÕÎÄÁÈ Ó ÎÁÞÁÌÁ üÐÏÈÉ\n"
+" %z ÷ÒÅÍÑ ÐÏÓÌÅÄÎÅÇÏ ÉÚÍÅÎÅÎÉÑ\n"
+" %Z ÷ÒÅÍÑ ÐÏÓÌÅÄÎÅÇÏ ÉÚÍÅÎÅÎÉÑ × ÓÅËÕÎÄÁÈ Ó ÎÁÞÁÌÁ üÐÏÈÉ\n"
+"\n"
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"äÏÐÕÓÔÉÍÙÅ ÆÏÒÍÁÔÎÙÅ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÄÌÑ ÆÁÊÌÏ×ÙÈ ÓÉÓÔÅÍ:\n"
+"\n"
+" %a þÉÓÌÏ Ó×ÏÂÏÄÎÙÈ ÂÌÏËÏ×, ÄÏÓÔÕÐÎÙÈ ÄÌÑ ÏÂÙÞÎÏÇÏ ÐÏÌØÚÏ×ÁÔÅÌÑ\n"
+" %b ðÏÌÎÏÅ ÞÉÓÌÏ ÂÌÏËÏ× ÄÁÎÎÙÈ × ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÅ\n"
+" %c ðÏÌÎÏÅ ÞÉÓÌÏ ÎÏÄ × ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÅ\n"
+" %d þÉÓÌÏ Ó×ÏÂÏÄÎÙÈ ÆÁÊÌÏ×ÙÈ ÎÏÄ × ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÅ\n"
+" %f þÉÓÌÏ Ó×ÏÂÏÄÎÙÈ ÂÌÏËÏ× × ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÅ\n"
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+" %i éÄÅÎÔÉÆÉËÁÔÏÒ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ, ÛÅÓÔÎÁÄÃÁÔÉÒÉÞÎÙÊ\n"
+" %l íÁËÓÉÍÁÌØÎÁÑ ÄÌÉÎÁ ÉÍÅÎÉ ÆÁÊÌÁ\n"
+" %n éÍÑ ÆÁÊÌÁ\n"
+" %s òÁÚÍÅÒ ÂÌÏËÁ (ÄÌÑ ÂÙÓÔÒÅÊÛÅÊ ÐÅÒÅÄÁÞÉ)\n"
+" %S æÕÎÄÁÍÅÎÔÁÌØÎÙÊ ÒÁÚÍÅÒ ÂÌÏËÁ (ÄÌÑ ÐÏÄÓÞÅÔÁ ÂÌÏËÏ×)\n"
+" %t ôÉÐ, ÛÅÓÔÎÁÄÃÁÔÉÒÉÞÎÙÊ\n"
+" %T ôÉÐ × ÞÉÔÁÅÍÏÊ ÆÏÒÍÅ\n"
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [-F õóôòïêóô÷ï] [--file=õóôòïêóô÷ï] [õóôáîï÷ëá]...\n"
+" ÉÌÉ: %s [-F õóôòïêóô÷ï] [--file=õóôòïêóô÷ï] [-a|--all]\n"
+" ÉÌÉ: %s [-F õóôòïêóô÷ï] [--file=õóôòïêóô÷ï] [-g|--save]\n"
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ ÉÌÉ ÉÚÍÅÎÑÅÔ ÕÓÔÁÎÏ×ËÉ ÔÅÒÍÉÎÁÌÁ.\n"
+"\n"
+" -a, --all ÎÁÐÅÞÁÔÁÔØ ×ÓÅ ÔÅËÕÝÉÅ ÕÓÔÁÎÏ×ËÉ × ÆÏÒÍÅ, ÐÏÎÑÔÎÏÊ "
+"ÞÅÌÏ×ÅËÕ\n"
+" -g, --save ÎÁÐÅÞÁÔÁÔØ ×ÓÅ ÔÅËÕÝÉÅ ÕÓÔÁÎÏ×ËÉ × ÆÏÒÍÅ, ÐÏÎÑÔÎÏÊ "
+"ÐÒÏÇÒÁÍÍÅ\n"
+" stty\n"
+" -F, --file=õóôòïêóô÷ï\n"
+" ÏÔËÒÙÔØ É ÉÓÐÏÌØÚÏ×ÁÔØ ÕËÁÚÁÎÎÏÅ ÕÓÔÒÏÊÓÔ×Ï ×ÍÅÓÔÏ\n"
+" ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+"\n"
+"îÅÏÂÑÚÁÔÅÌØÎÙÊ ÚÎÁË ÍÉÎÕÓ ÐÅÒÅÄ õóôáîï÷ëïê ÏÚÎÁÞÁÅÔ ÏÔÒÉÃÁÎÉÅ. ú×ÅÚÄÏÞËÏÊ\n"
+"ÏÔÍÅÞÅÎÙ ÕÓÔÁÎÏ×ËÉ, ÎÅ ÏÐÉÓÁÎÎÙÅ × ÓÔÁÎÄÁÒÔÅ POSIX. äÏÓÔÕÐÎÏÓÔØ ÔÏÊ ÉÌÉ "
+"ÉÎÏÊ\n"
+"ÕÓÔÁÎÏ×ËÉ ÏÐÒÅÄÅÌÑÅÔÓÑ ÉÓÐÏÌØÚÕÅÍÏÊ ÓÉÓÔÅÍÏÊ.\n"
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"\n"
+"óÐÅÃÉÁÌØÎÙÅ ÓÉÍ×ÏÌÙ:\n"
+"* dsusp óéí÷ïì óéí÷ïì ÂÕÄÅÔ ÐÏÓÙÌÁÔØ ÔÅÒÍÉÎÁÌÕ ÓÉÇÎÁÌ ÏÓÔÁÎÏ×Á ÐÒÉ "
+"ÚÁ×ÅÒÛÅÎÉÉ\n"
+" ××ÏÄÁ\n"
+" eof óéí÷ïì óéí÷ïì ÂÕÄÅÔ ÏÚÎÁÞÁÔØ ËÏÎÅà ÆÁÊÌÁ (ÐÒÅËÒÁÝÁÔØ ××ÏÄ)\n"
+" eol óéí÷ïì óéí÷ïì ÂÕÄÅÔ ÏÚÎÁÞÁÔØ ËÏÎÅà ÓÔÒÏËÉ\n"
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+"* eol2 óéí÷ïì ÄÒÕÇÏÊ óéí÷ïì ÄÌÑ ËÏÎÃÁ ÓÔÒÏËÉ\n"
+" erase óéí÷ïì óéí÷ïì ÂÕÄÅÔ ÓÔÉÒÁÔØ ÐÏÓÌÅÄÎÉÊ ××ÅÄÅÎÎÙÊ ÄÏ ÎÅÇÏ\n"
+" intr óéí÷ïì óéí÷ïì ÂÕÄÅÔ ÐÏÓÙÌÁÔØ ÓÉÇÎÁÌ ÐÒÅÒÙ×ÁÎÉÑ\n"
+" kill óéí÷ïì óéí÷ïì ÂÕÄÅÔ ÓÔÉÒÁÔØ ÔÅËÕÝÕÀ ÓÔÒÏËÕ\n"
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+"* lnext óéí÷ïì óéí÷ïì ÂÕÄÅÔ ××ÏÄÉÔØ ÓÌÅÄÕÀÝÉÊ ÓÉÍ×ÏÌ, ÏÔÍÅÎÑÑ ÅÇÏ "
+"ÓÐÅÃÉÁÌØÎÏÅ\n"
+" ÄÅÊÓÔ×ÉÅ\n"
+" quit óéí÷ïì óéí÷ïì ÂÕÄÅÔ ÐÏÓÙÌÁÔØ ÓÉÇÎÁÌ ×ÙÈÏÄÁ\n"
+"* rprnt óéí÷ïì óéí÷ïì ÂÕÄÅÔ ÐÅÒÅÒÉÓÏ×Ù×ÁÔØ ÔÅËÕÝÕÀ ÓÔÒÏËÕ\n"
+" start óéí÷ïì óéí÷ïì ÂÕÄÅÔ ×ÏÚÏÂÎÏ×ÌÑÔØ ××ÏÄ\n"
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+" stop óéí÷ïì óéí÷ïì ÂÕÄÅÔ ÐÒÉÏÓÔÁÎÁ×ÌÉ×ÁÔØ ××ÏÄ\n"
+" susp óéí÷ïì óéí÷ïì ÂÕÄÅÔ ÐÏÓÙÌÁÔØ ÔÅÒÍÉÎÁÌÕ ÓÉÇÎÁÌ ÏÓÔÁÎÏ×Á\n"
+"* swtch óéí÷ïì óéí÷ïì ÂÕÄÅÔ ÐÅÒÅËÌÀÞÁÔØ ÕÒÏ×ÅÎØ ×ÌÏÖÅÎÎÏÓÔÉ ÏÂÏÌÏÞËÉ\n"
+"* werase óéí÷ïì óéí÷ïì ÓÔÉÒÁÔØ ÐÏÓÌÅÄÎÉÅ ××ÅÄÅÎÎÏÅ ÓÌÏ×Ï\n"
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"\n"
+"óÐÅÃÉÁÌØÎÙÅ ÕÓÔÁÎÏ×ËÉ:\n"
+"\n"
+" î ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔÉ ××ÏÄÁ É ×Ù×ÏÄÁ ÒÁ×ÎÙÍÉ î ÂÏÄ\n"
+"* cols î ÓÏÏÂÝÉÔØ ÑÄÒÕ, ÞÔÏ ÔÅÒÍÉÎÁÌ ÉÍÅÅÔ î ÓÔÏÌÂÃÏ×\n"
+"* columns î ÓÉÎÏÎÉÍ cols\n"
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+" ispeed î ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ××ÏÄÁ\n"
+"* line î ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÏÔÏËÏÌ ÌÉÎÉÉ î\n"
+" min î ÉÓÐÏÌØÚÕÅÔÓÑ Ó -icanon, ÕÓÔÁÎÏ×ÉÔØ î ÍÉÎÉÍÁÌØÎÙÍ ÞÉÓÌÏÍ "
+"ÓÉÍ×ÏÌÏ×\n"
+" ÄÌÑ ÚÁ×ÅÒÛÅÎÉÑ ÏÐÅÒÁÃÉÉ ÞÔÅÎÉÑ\n"
+" ospeed î ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×Ù×ÏÄÁ\n"
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+"* rows î ÓÏÏÂÝÉÔØ ÑÄÒÕ, ÞÔÏ ÔÅÒÍÉÎÁÌ ÉÍÅÅÔ î ÓÔÒÏË\n"
+"* size ÎÁÐÅÞÁÔÁÔØ ÞÉÓÌÁ ÓÔÏÌÂÃÏ× É ÓÔÒÏË, ÉÚ×ÅÓÔÎÙÅ ÑÄÒÕ\n"
+" speed ÎÁÐÅÞÁÔÁÔØ ÓËÏÒÏÓÔØ ÔÅÒÍÉÎÁÌÁ\n"
+" time î ÉÓÐÏÌØÚÕÅÔÓÑ Ó -icanon, ÕÓÔÁÎÏ×ÉÔØ ×ÒÅÍÅÎÎÏÊ ÐÒÅÄÅÌ ÄÌÑ "
+"ÏÐÅÒÁÃÉÉ\n"
+" ÞÔÅÎÉÑ ÒÁ×ÎÙÍ î ÄÅÓÑÔÙÍ ÓÅËÕÎÄÙ\n"
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"\n"
+"õÓÔÁÎÏ×ËÉ ÕÐÒÁ×ÌÅÎÉÑ:\n"
+" [-]clocal ÏÔÍÅÎÉÔØ ÕÐÒÁ×ÌÑÀÝÉÅ ÓÉÇÎÁÌÙ ÍÏÄÅÍÁ\n"
+" [-]cread ÒÁÚÒÅÛÉÔØ ××ÏÄ\n"
+"* [-]crtscts ÒÁÚÒÅÛÉÔØ ÕÐÒÁ×ÌÅÎÉÅ ÐÏÔÏËÏÍ ÄÁÎÎÙÈ Ó ÐÏÄÔ×ÅÒÖÄÅÎÉÅÍ "
+"ÇÏÔÏ×ÎÏÓÔÉ\n"
+" csî ÕÓÔÁÎÏ×ÉÔØ ÒÁÚÍÅÒ ÓÉÍ×ÏÌÁ ÒÁ×ÎÙÍ î ÂÉÔ, î ÏÔ 5 ÄÏ 8\n"
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+" [-]cstopb ÉÓÐÏÌØÚÏ×ÁÔØ Ä×Á ÒÁÚÄÅÌÑÀÝÉÈ ÂÉÔÁ ÎÁ ÓÉÍ×ÏÌ (ÏÄÉÎ, ÅÓÌÉ Ó "
+"`-')\n"
+" [-]hup ÐÏÓÙÌÁÔØ ÓÉÇÎÁÌ ÏÂÒÙ×Á ÔÅÒÍÉÎÁÌØÎÏÊ ÌÉÎÉÉ, ËÏÇÄÁ ÐÏÓÌÅÄÎÉÊ\n"
+" ÐÒÏÃÅÓÓ ÚÁËÒÙ×ÁÅÔ ÔÅÒÍÉÎÁÌ\n"
+" [-]hupcl ÓÉÎÏÎÉÍ [-]hup\n"
+" [-]parenb ÇÅÎÅÒÉÒÏ×ÁÔØ ÐÒÉ ×Ù×ÏÄÅ ÂÉÔ ÞÅÔÎÏÓÔÉ É ÏÖÉÄÁÔØ ÂÉÔ ÞÅÔÎÏÓÔÉ "
+"ÎÁ\n"
+" ××ÏÄÅ\n"
+" [-]parodd ÕÓÔÁÎÏ×ÉÔØ ÐÒÏ×ÅÒËÕ ÎÁ ÎÅÞÅÔÎÏÓÔØ (ÄÁÖÅ Ó `-')\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"\n"
+"õÓÔÁÎÏ×ËÉ ××ÏÄÁ:\n"
+" [-]brkint ÓÉÍ×ÏÌ break ÂÕÄÅÔ ×ÙÚÙ×ÁÔØ ÓÉÇÎÁÌ ÐÒÅÒÙ×ÁÎÉÑ\n"
+" [-]icrnl ÐÒÅÏÂÒÁÚÏ×Ù×ÁÔØ ×ÏÚ×ÒÁÔ ËÁÒÅÔËÉ × ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ\n"
+" [-]ignbrk ÉÇÎÏÒÉÒÏ×ÁÔØ ÓÉÍ×ÏÌÙ ÐÒÅÒÙ×ÁÎÉÑ\n"
+" [-]igncr ÉÇÎÏÒÉÒÏ×ÁÔØ ÓÉÍ×ÏÌÙ ×ÏÚ×ÒÁÔÁ ËÁÒÅÔËÉ\n"
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+" [-]ignpar ÉÇÎÏÒÉÒÏ×ÁÔØ ÓÉÍ×ÏÌÙ Ó ÏÛÉÂËÁÍÉ ÞÅÔÎÏÓÔÉ\n"
+"* [-]imaxbel ÐÒÉ ÐÅÒÅÐÏÌÎÅÎÎÏÍ ÂÕÆÅÒÅ ××ÏÄÁ ÐÏÄÁ×ÁÔØ Ú×ÕËÏ×ÏÊ ÓÉÇÎÁÌ É "
+"ÎÅ\n"
+" ÓÂÒÁÓÙ×ÁÔØ ÂÕÆÅÒ, ÉÇÎÏÒÉÒÕÑ ÄÁÌØÎÅÊÛÉÊ ××ÏÄ\n"
+" [-]inlcr ÐÒÅÏÂÒÁÚÏ×Ù×ÁÔØ ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ × ×ÏÚ×ÒÁÔ ËÁÒÅÔËÉ\n"
+" [-]inpck ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÏ×ÅÒËÕ ÞÅÔÎÏÓÔÉ ××ÏÄÁ\n"
+" [-]istrip ÏÞÉÝÁÔØ ÓÔÁÒÛÉÊ (×ÏÓØÍÏÊ) ÂÉÔ ××ÏÄÉÍÙÈ ÓÉÍ×ÏÌÏ×\n"
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr " * [-]iutf8 ÐÒÅÄÐÏÌÁÇÁÔØ, ÞÔÏ ×ÈÏÄÎÙÅ ÚÎÁËÉ × ËÏÄÉÒÏ×ËÅ UTF-8\n"
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+"* [-]iuclc ÐÒÅÏÂÒÁÚÏ×Ù×ÁÔØ ÚÁÇÌÁ×ÎÙÅ ÂÕË×Ù × ÓÔÒÏÞÎÙÅ\n"
+"* [-]ixany ÐÏÚ×ÏÌÉÔØ ÌÀÂÏÍÕ ÓÉÍ×ÏÌÕ ×ÏÚÏÂÎÏ×ÉÔØ ××ÏÄ\n"
+" [-]ixoff ÒÁÚÒÅÛÉÔØ ÐÏÓÙÌËÕ ÓÉÍ×ÏÌÏ× ÐÒÉÏÓÔÁÎÏ×ËÉ/×ÏÚÏÂÎÏ×ÌÅÎÉÑ\n"
+" [-]ixon ÒÁÚÒÅÛÉÔØ ÕÐÒÁ×ÌÅÎÉÅ ÐÏÔÏËÏÍ ÄÁÎÎÙÈ\n"
+" [-]parmrk ÏÔÍÅÞÁÔØ ÏÛÉÂËÉ ÞÅÔÎÏÓÔÉ (ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØÀ ÉÚ 255 ÎÕÌÅÊ)\n"
+" [-]tandem ÓÉÎÏÎÉÍ [-]xioff\n"
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"\n"
+"õÓÔÁÎÏ×ËÉ ×Ù×ÏÄÁ:\n"
+"* bsî ÚÎÁÞÅÎÉÅ ÐÁÕÚÙ ÐÏÓÌÅ ÚÁÂÏÑ, ÄÏÐÕÓÔÉÍÙÅ î [0..1]\n"
+"* crî ÚÎÁÞÅÎÉÅ ÐÁÕÚÙ ÐÏÓÌÅ ×ÏÚ×ÒÁÔÁ ËÁÒÅÔËÉ, ÄÏÐÕÓÔÉÍÙÅ î [0..3]\n"
+"* ffî ÚÎÁÞÅÎÉÅ ÐÁÕÚÙ ÐÏÓÌÅ ÐÅÒÅ×ÏÄÁ ÓÔÒÁÎÉÃÙ, ÄÏÐÕÓÔÉÍÙÅ î [0..1]\n"
+"* nlî ÚÎÁÞÅÎÉÅ ÐÁÕÚÙ ÐÏÓÌÅ ÎÏ×ÏÊ ÓÔÒÏËÉ, ÄÏÐÕÓÔÉÍÙÅ î [0..1]\n"
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+"* [-]ocrnl ÐÒÅÏÂÒÁÚÏ×Ù×ÁÔØ ×ÏÚ×ÒÁÔ ËÁÒÅÔËÉ × ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ\n"
+"* [-]ofdel ÉÓÐÏÌØÚÏ×ÁÔØ ÓÉÍ×ÏÌÙ ÓÔÉÒÁÎÉÑ ×ÍÅÓÔÏ ÎÕÌÅÊ ÄÌÑ ÚÁÐÏÌÎÅÎÉÑ\n"
+"* [-]ofill ÉÓÐÏÌØÚÏ×ÁÔØ ÓÉÍ×ÏÌÙ ÚÁÐÏÌÎÅÎÉÑ ÄÌÑ ÚÁÄÅÒÖÅË\n"
+"* [-]olcuc ÐÒÅÏÂÒÁÚÏ×Ù×ÁÔØ ÓÔÒÏÞÎÙÅ ÂÕË×Ù × ÚÁÇÌÁ×ÎÙÅ\n"
+"* [-]onlcr ÐÒÅÏÂÒÁÚÏ×Ù×ÁÔØ ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ × ×ÏÚ×ÒÁÔ ËÁÒÅÔËÉ É ÎÏ×ÕÀ "
+"ÓÔÒÏËÕ\n"
+"* [-]onlret ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ ÐÒÏÉÚ×ÏÄÉÔ ×ÏÚ×ÒÁÔ ËÁÒÅÔËÉ\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+"* [-]onocr ÎÅ ÐÅÞÁÔÁÔØ ×ÏÚ×ÒÁÔ ËÁÒÅÔËÉ × ÐÅÒ×ÏÍ ÓÔÏÌÂÃÅ\n"
+" [-]opost ÆÏÒÍÁÔÉÒÏ×ÁÔØ ×Ù×ÏÄ\n"
+"* tabî ÚÎÁÞÅÎÉÅ ÐÁÕÚÙ ÐÏÓÌÅ ÇÏÒÉÚÏÎÔÁÌØÎÏÊ ÔÁÂÕÌÑÃÉÉ,\n"
+" ÄÏÐÕÓÔÉÍÙÅ î [0..3]\n"
+"* tabs ÓÉÎÏÎÉÍ tab0\n"
+"* -tabs ÓÉÎÏÎÉÍ tab3\n"
+"* vtî ÚÎÁÞÅÎÉÅ ÐÁÕÚÙ ÐÏÓÌÅ ×ÅÒÔÉËÁÌØÎÏÊ ÔÁÂÕÌÑÃÉÉ, ÄÏÐÕÓÔÉÍÙÅ î "
+"[0..1]\n"
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"\n"
+"ìÏËÁÌØÎÙÅ ÕÓÔÁÎÏ×ËÉ:\n"
+" [-]crterase ÓÔÉÒÁÔØ ÓÉÍ×ÏÌÙ ËÁË ÚÁÂÏÊ-ÐÒÏÂÅÌ-ÚÁÂÏÊ\n"
+"* crtkill ÓÔÉÒÁÔØ ×ÓÀ ÓÔÒÏËÕ, ÐÏÄÞÉÎÑÑÓØ ÕÓÔÁÎÏ×ËÁÍ echoprt É echoe\n"
+"* -crtkill ÓÔÉÒÁÔØ ×ÓÀ ÓÔÒÏËÕ, ÐÏÄÞÉÎÑÑÓØ ÕÓÔÁÎÏ×ËÁÍ echoctl É echok\n"
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+"* [-]ctlecho ÏÔÏÂÒÁÖÁÔØ ÕÐÒÁ×ÌÑÀÝÉÅ ÓÉÍ×ÏÌÙ Ó ÛÁÐÏÞËÏÊ (`^c')\n"
+" [-]echo ÏÔÏÂÒÁÖÁÔØ ××ÏÄÉÍÙÅ ÓÉÍ×ÏÌÙ\n"
+"* [-]echoctl ÓÉÎÏÎÉÍ [-]ctlecho\n"
+" [-]echoe ÓÉÎÏÎÉÍ [-]crterase\n"
+" [-]echok ÏÔÏÂÒÁÖÁÔØ ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ ÐÏÓÌÅ ÓÉÍ×ÏÌÁ ÕÎÉÞÔÏÖÅÎÉÑ\n"
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+"* [-]echoke ÓÉÎÏÎÉÍ [-]crtkill\n"
+" [-]echonl ÏÔÏÂÒÁÖÁÔØ ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ, ÄÁÖÅ ÅÓÌÉ ÄÒÕÇÉÅ ÓÉÍ×ÏÌÙ ÎÅ\n"
+" ÏÔÏÂÒÁÖÁÀÔÓÑ\n"
+"* [-]echoprt ×Ù×ÏÄÉÔØ ÓÔÉÒÁÅÍÙÅ ÓÉÍ×ÏÌÙ × ÏÂÒÁÔÎÏÍ ÐÏÒÑÄËÅ, ÍÅÖÄÕ `\\` É "
+"'/'\n"
+" [-]icanon ÉÓÐÏÌØÚÏ×ÁÔØ ÓÐÅÃÉÁÌØÎÙÅ ÓÉÍ×ÏÌÙ erase, kill, werase, É "
+"rprnt\n"
+" [-]iexten ÉÓÐÏÌØÚÏ×ÁÔØ ÓÐÅÃÉÁÌØÎÙÅ ÓÉÍ×ÏÌÙ, ÎÅ ÏÐÉÓÁÎÎÙÅ × ÓÔÁÎÄÁÒÔÅ "
+"POSIX\n"
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+" [-]isig ÉÓÐÏÌØÚÏ×ÁÔØ ÓÐÅÃÉÁÌØÎÙÅ ÓÉÍ×ÏÌÙ interrupt, quit, É suspend\n"
+" [-]noflsh ÚÁÐÒÅÔÉÔØ ÓÂÒÏÓ ÂÕÆÅÒÁ ÐÏÓÌÅ ÐÒÉÅÍÁ ÓÐÅÃÉÁÌØÎÙÈ ÓÉÍ×ÏÌÏ× "
+"interrupt\n"
+" É quit\n"
+"* [-]prterase ÓÉÎÏÎÉÍ [-]echoprt\n"
+"* [-]tostop ÐÒÉÏÓÔÁÎÁ×ÌÉ×ÁÔØ ÆÏÎÏ×ÙÅ ÐÒÏÇÒÁÍÍÅ, ÐÙÔÁÀÝÉÅÓÑ ÐÒÏÉÚ×ÅÓÔÉ "
+"ÚÁÐÉÓØ\n"
+" ÎÁ ÔÅÒÍÉÎÁÌ\n"
+"* [-]xcase ÏÔÏÂÒÁÖÁÔØ `\\' ÄÌÑ ÚÁÇÌÁ×ÎÙÈ ÂÕË×, ÉÓÐÏÌØÚÕÅÔÓÑ Ó icanon\n"
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+"\n"
+"ïÂßÅÄÉÎÅÎÎÙÅ ÕÓÔÁÎÏ×ËÉ:\n"
+"* [-]LCASE ÓÉÎÏÎÉÍ [-]lcase\n"
+" cbreak ÓÉÎÏÎÉÍ -icanon\n"
+" -cbreak ÓÉÎÏÎÉÍ icanon\n"
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+" cooked ÓÉÎÏÎÉÍ brkint ignpar istrip icrnl ixon opost isig icanon,\n"
+" ÓÉÍ×ÏÌÙ eof and eol ÉÍÅÀÔ ÚÎÁÞÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ\n"
+" -cooked ÓÉÎÏÎÉÍ raw\n"
+" crt ÓÉÎÏÎÉÍ echoe echoctl echoke\n"
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+" dec ÓÉÎÏÎÉÍ echoe echoctl echoke -ixany intr ^c erase 0177 kill "
+"^u\n"
+"* [-]decctlq ÓÉÎÏÎÉÍ [-]ixany\n"
+" ek ÕÓÔÁÎÏ×ÉÔØ ÄÌÑ ÓÉÍ×ÏÌÏ× erase and kill ÚÎÁÞÅÎÉÑ ÐÏ "
+"ÕÍÏÌÞÁÎÉÀ\n"
+" evenp ÓÉÎÏÎÉÍ parenb -parodd cs7\n"
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+" -evenp ÓÉÎÏÎÉÍ -parenb cs8\n"
+"* [-]lcase ÓÉÎÏÎÉÍ xcase iuclc olcuc\n"
+" litout ÓÉÎÏÎÉÍ -parenb -istrip -opost cs8\n"
+" -litout ÓÉÎÏÎÉÍ parenb istrip opost cs7\n"
+" nl ÓÉÎÏÎÉÍ -icrnl -onlcr\n"
+" -nl ÓÉÎÏÎÉÍ icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+" oddp ÓÉÎÏÎÉÍ parenb parodd cs7\n"
+" -oddp ÓÉÎÏÎÉÍ -parenb cs8\n"
+" [-]parity ÓÉÎÏÎÉÍ [-]evenp\n"
+" pass8 ÓÉÎÏÎÉÍ -parenb -istrip cs8\n"
+" -pass8 ÓÉÎÏÎÉÍ parenb istrip cs7\n"
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+" raw ÓÉÎÏÎÉÍ -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw ÓÉÎÏÎÉÍ cooked\n"
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+" sane ÓÉÎÏÎÉÍ cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, ×ÓÅ ÓÐÅÃÉÁÌØÎÙÅ "
+"ÚÎÁËÉ\n"
+" ÉÍÅÀÔ ÚÎÁÞÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ\n"
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"õÐÒÁ×ÌÑÅÔ ÔÅÒÍÉÎÁÌØÎÏÊ ÌÉÎÉÅÊ, ÐÏÄËÌÀÞÅÎÎÏÊ Ë ÓÔÁÎÄÁÒÔÎÏÍÕ ××ÏÄÕ. "
+"úÁÐÕÝÅÎÎÁÑ\n"
+"ÂÅÚ ÁÒÇÕÍÅÎÔÏ×, ÐÅÞÁÔÁÅÔ ÓËÏÒÏÓÔØ ÐÅÒÅÄÁÞÉ ÉÎÆÏÒÍÁÃÉÉ, line discipline É\n"
+"ÏÔÌÉÞÉÑ ÏÔ ÏÂÙÞÎÙÈ ÕÓÔÁÎÏ×ÏË. ðÒÉ ÕÓÔÁÎÏ×ËÅ, óéí÷ïìù ÔÒÁËÔÕÀÔÓÑ ÂÕË×ÁÌØÎÏ\n"
+"ÉÌÉ ÚÁÄÁÀÔÓÑ × ËÁË ^c, 0x37, 0177 ÉÌÉ 127; ÄÌÑ ÏÔÍÅÎÙ ÓÐÅÃÉÁÌØÎÙÈ ÓÉÍ×ÏÌÏ×\n"
+"ÓÌÕÖÁÔ ÚÎÁÞÅÎÉÑ ^- É undef.\n"
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr "ÍÏÖÎÏ ÚÁÄÁÔØ ÔÏÌØËÏ ÏÄÎÏ ÕÓÔÒÏÊÓÔ×Ï"
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+"ËÌÀÞÉ ÄÌÑ ×Ù×ÏÄÁ × ×ÉÄÅ, ÞÉÔÁÅÍÏÍ ÞÅÌÏ×ÅËÏÍ É ÞÉÔÁÅÍÏÍ ÐÒÏÇÒÁÍÍÏÊ stty,\n"
+"×ÚÁÉÍÏÉÓËÌÀÞÁÀÝÉÅ"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "ÐÒÉ ÚÁÄÁÎÉÉ ÓÔÉÌÑ ×Ù×ÏÄÁ ÎÅÌØÚÑ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ ÒÅÖÉÍ"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÎÅÂÌÏËÉÒÕÀÝÉÊ ÒÅÖÉÍ"
+
+#: src/stty.c:885 src/stty.c:995
+#, c-format
+msgid "invalid argument %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÁÒÇÕÍÅÎÔ %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, c-format
+msgid "missing argument to %s"
+msgstr "ÐÒÏÐÕÝÅÎ ÁÒÇÕÍÅÎÔ ÄÌÑ %s"
+
+#: src/stty.c:976
+#, c-format
+msgid "invalid line discipline %s"
+msgstr "ÎÅ×ÅÒÎÁÑ line discipline %s"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÐÒÏÉÚ×ÅÓÔÉ ×ÓÅ ÚÁÐÒÏÛÅÎÎÙÅ ÄÅÊÓÔ×ÉÑ"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "ÎÏ×ÙÊ_ÒÅÖÉÍ: ÒÅÖÉÍ\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: ÄÌÑ ÜÔÏÇÏ ÕÓÔÒÏÊÓÔ×Á ÎÅÔ Ó×ÅÄÅÎÉÊ Ï ÒÁÚÍÅÒÁÈ"
+
+#: src/stty.c:1888
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÃÅÌÙÊ ÁÒÇÕÍÅÎÔ %s"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "ðÁÒÏÌØ:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ /dev/tty"
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÇÒÕÐÐÙ"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÇÒÕÐÐÏ×ÏÊ id"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÐÏÌØÚÏ×ÁÔÅÌØÓËÉÊ id"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [-] [ðïìøúï÷áôåìø [áòç]...]\n"
+
+#: src/su.c:386
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"õÓÔÁÎÁ×ÌÉ×ÁÅÔ ÜÆÆÅËÔÉ×ÎÙÅ ÉÄÅÎÔÉÆÉËÁÔÏÒÙ ÐÏÌØÚÏ×ÁÔÅÌÑ É ÇÒÕÐÐÙ ËÁË Õ "
+"ðïìøúï÷áôåìñ.\n"
+"\n"
+" -, -l, --login ÉÓÐÏÌØÚÏ×ÁÔØ ÏÂÏÌÏÞËÕ ËÁË ÏÂÏÌÏÞËÕ ×ÈÏÄÁ\n"
+" -c, --commmand=ëïíáîäá ÐÅÒÅÄÁÔØ ÏÂÏÌÏÞËÅ ëïíáîäõ Ó ÐÏÍÏÝØÀ -c\n"
+" -f, --fast ÐÅÒÅÄÁÔØ ÏÂÏÌÏÞËÅ -f (ÄÌÑ csh ÉÌÉ tcsh)\n"
+" -m, --preserve-environment ÎÅ ÓÂÒÁÓÙ×ÁÔØ ÐÅÒÅÍÅÎÎÙÅ ÓÒÅÄÙ\n"
+" -p ÓÉÎÏÎÉÍ ÄÌÑ -m\n"
+" -s, --shell=ïâïìïþëá ÚÁÐÕÓÔÉÔØ ïâïìïþëõ, ÅÓÌÉ ÐÏÚ×ÏÌÑÅÔ /etc/"
+"shells\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+"\n"
+"ðÒÏÓÔÏ ÚÎÁË ÍÉÎÕÓ ÐÏÄÒÁÚÕÍÅ×ÁÅÔ -l. åÓÌÉ ðïìøúï÷áôåìø ÎÅ ÚÁÄÁÎ,\n"
+"ÐÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ root.\n"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "ÐÏÌØÚÏ×ÁÔÅÌØ %s ÎÅ ÓÕÝÅÓÔ×ÕÅÔ"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "ÎÅÐÒÁ×ÉÌØÎÙÊ ÐÁÒÏÌØ"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "ÉÓÐÏÌØÚÕÅÔÓÑ ÏÇÒÁÎÉÞÅÎÎÁÑ ÏÂÏÌÏÞËÁ %s"
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÎÅ×ÏÚÍÏÖÎÏ ÓÍÅÎÉÔØ ËÁÔÁÌÏÇ ÎÁ %s"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ ËÏÎÔÒÏÌØÎÕÀ ÓÕÍÍÕ É ÞÉÓÌÏ ÂÌÏËÏ× ÄÌÑ ËÁÖÄÏÇÏ æáêìá.\n"
+"\n"
+" -r ÉÓÐÏÌØÚÏ×ÁÔØ ÍÅÔÏÄ ×ÙÞÉÓÌÅÎÉÑ ËÏÎÔÒÏÌØÎÙÈ ÓÕÍÍ ËÁË × BSD,\n"
+" ÒÁÚÍÅÒ ÂÌÏËÁ 1K\n"
+" -s, --sysv ÉÓÐÏÌØÚÏ×ÁÔØ ÍÅÔÏÄ ×ÙÞÉÓÌÅÎÉÑ ËÏÎÔÒÏÌØÎÙÈ ÓÕÍÍ ËÁË × "
+"System V,\n"
+" ÒÁÚÍÅÒ ÂÌÏËÁ 512 ÂÁÊÔ\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+"úÁÐÉÓÙ×ÁÅÔ ÉÚÍÅÎÅÎÎÙÅ ÂÌÏËÉ ÎÁ ÄÉÓË, ÏÂÎÏ×ÌÑÅÔ ÓÕÐÅÒÂÌÏË\n"
+"\n"
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "×ÓÅ ÁÒÇÕÍÅÎÔÙ ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎÙ"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+"\n"
+"úáíåþáîéå: ×ÁÛÁ ÏÂÏÌÏÞËÁ ÍÏÖÅÔ ÐÒÅÄÏÓÔÁ×ÌÑÔØ Ó×ÏÀ ×ÅÒÓÉÀ %s, ËÏÔÏÒÁÑ\n"
+"ÏÂÙÞÎÏ ÐÅÒÅËÒÙ×ÁÅÔ ×ÅÒÓÉÀ, ÏÐÉÓÁÎÎÕÀ ÚÄÅÓØ. ðÏÖÁÌÕÊÓÔÁ, ÏÂÒÁÝÁÊÔÅÓØ Ë\n"
+"ÄÏËÕÍÅÎÔÁÃÉÉ ÐÏ ×ÁÛÅÊ ÏÂÏÌÏÞËÅ, ÞÔÏÂÙ ÕÚÎÁÔØ, ËÁËÉÅ ËÌÀÞÉ ÏÎÁ\n"
+"ÐÏÄÄÅÒÖÉ×ÁÅÔ.\n"
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help ÐÏËÁÚÁÔØ ÜÔÕ ÓÐÒÁ×ËÕ É ×ÙÊÔÉ\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr ""
+" --version ÐÏËÁÚÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ É ×ÙÊÔÉ\n"
+"\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ æáêìù ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ, ÎÁÞÉÎÁÑ Ó ÐÏÓÌÅÄÎÅÊ ÓÔÒÏËÉ.\n"
+"åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ.\n"
+"\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before ÐÒÉÓÏÅÄÉÎÑÔØ ÒÁÚÄÅÌÉÔÅÌØ Ë ÎÁÞÁÌÕ, Á ÎÅ Ë ËÏÎÃÕ\n"
+" -r, --regex ×ÏÓÐÒÉÎÉÍÁÔØ ÒÁÚÄÅÌÉÔÅÌØ ËÁË ÒÅÇÕÌÑÒÎÏÅ "
+"×ÙÒÁÖÅÎÉÅ\n"
+" -s, --separator=óôòïëá ÉÓÐÏÌØÚÏ×ÁÔØ ËÁË ÒÁÚÄÅÌÉÔÅÌØ óôòïëõ, Á ÎÅ ÚÎÁË `"
+"\\n'\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, c-format
+msgid "%s: seek failed"
+msgstr "%s: ÐÅÒÅÍÅÝÅÎÉÅ ÐÏ ÆÁÊÌÕ ÎÅÕÓÐÅÛÎÏ"
+
+#: src/tac.c:265
+#, c-format
+msgid "record too large"
+msgstr "ÚÁÐÉÓØ ÓÌÉÛËÏÍ ×ÅÌÉËÁ"
+
+#: src/tac.c:459
+#, c-format
+msgid "cannot create temporary file %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ %s"
+
+#: src/tac.c:466
+#, c-format
+msgid "cannot open %s for writing"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ %s ÄÌÑ ÚÁÐÉÓÉ"
+
+#: src/tac.c:487 src/tac.c:494
+#, c-format
+msgid "%s: write error"
+msgstr "%s: ÏÛÉÂËÁ ÚÁÐÉÓÉ"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "ÒÁÚÄÅÌÉÔÅÌØ ÎÅ ÍÏÖÅÔ ÂÙÔØ ÐÕÓÔÙÍ"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ ÐÏÓÌÅÄÎÉÅ %d ÓÔÒÏË ËÁÖÄÏÇÏ ÉÚ æáêìï÷ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ.\n"
+"åÓÌÉ ÚÁÄÁÎÏ ÎÅÓËÏÌØËÏ æáêìï÷, ÓÎÁÞÁÌÁ ÐÅÞÁÔÁÅÔ ÚÁÇÏÌÏ×ÏË Ó ÉÍÅÎÅÍ ÆÁÊÌÁ.\n"
+"åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ.\n"
+"\n"
+
+#: src/tail.c:229
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry ÐÒÏÄÏÌÖÁÔØ ÐÏÐÙÔËÉ ÏÔËÒÙÔÉÑ ÆÁÊÌÁ, ÄÁÖÅ ÅÓÌÉ ÏÎ\n"
+" ÎÅÄÏÓÔÕÐÅÎ, ËÏÇÄÁ tail ÚÁÐÕÓËÁÅÔÓÑ, ÉÌÉ ÅÓÌÉ ÏÎ\n"
+" ÓÔÁÌ ÎÅÄÏÓÔÕÐÅÎ ÐÏÚÄÎÅÅ; ÐÏÌÅÚÎÏ ÐÒÉ ÎÁÂÌÀÄÅÎÉÉ\n"
+" ÐÏ ÉÍÅÎÉ, ÎÁÐÒÉÍÅÒ, ÐÒÉ --follow=ÉÍÑ\n"
+" -c, --bytes=î ×Ù×ÏÄÉÔØ ÐÏÓÌÅÄÎÉÅ î ÂÁÊÔ; ÉÌÉ ÉÓÐÏÌØÚÕÊÔÅ +î, "
+"ÞÔÏÂÙ\n"
+" ×Ù×ÅÓÔÉ Õ ËÁÖÄÏÇÏ ÆÁÊÌÁ ×ÓÅ ÂÁÊÔÙ, ÎÁÞÉÎÁÑ Ó î-"
+"ÎÏÇÏ\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={name|descriptor}]\n"
+" ×Ù×ÏÄÉÔØ ÐÏÓÔÕÐÁÀÝÉÅ ÄÁÎÎÙÅ ÐÏ ÍÅÒÅ ÒÏÓÔÁ ÆÁÊÌÁ;\n"
+" -f, --follow É --follow=descriptor "
+"ÜË×É×ÁÌÅÎÔÎÙ\n"
+" -F ÜË×É×ÁÌÅÎÔ --follow=name --retry\n"
+
+#: src/tail.c:244
+#, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=î ×Ù×ÏÄÉÔØ ÐÏÓÌÅÄÎÉÅ î ÓÔÒÏË, Á ÎÅ ÐÏÓÌÅÄÎÉÅ %d;\n"
+" ÉÌÉ ÉÓÐÏÌØÚÕÊÔÅ +î ÄÌÑ ×Ù×ÏÄÁ ÓÔÒÏË, ÎÁÞÉÎÁÑ Ó î-"
+"ÎÏÊ\n"
+" --max-unchanged-stats=î\n"
+" c ËÌÀÞÏÍ --follow=name, ÐÏ×ÔÏÒÎÏ ÏÔËÒÙ×ÁÔØ æáêì,\n"
+" ËÏÔÏÒÙÊ ÎÅ ÉÚÍÅÎÑÌÓÑ ÐÏÓÌÅÄÎÉÅ î (ÐÏ ÕÍÏÌÞÁÎÉÀ %"
+"d)\n"
+" ÉÔÅÒÁÃÉÊ, ÞÔÏÂÙ ÐÒÏ×ÅÒÉÔØ, ÎÅ ÂÙÌ ÌÉ ÏÎ ÕÄÁÌÅÎ "
+"ÉÌÉ\n"
+" ÐÅÒÅÉÍÅÎÏ×ÁÎ (ÔÁËÏÅ ÏÂÙÞÎÏ ÂÙ×ÁÅÔ ÐÒÉ ÒÏÔÁÃÉÉ\n"
+" ÓÉÓÔÅÍÎÙÈ ÐÒÏÔÏËÏÌØÎÙÈ ÆÁÊÌÏ×)\n"
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID Ó ËÌÀÞÏÍ -f, ÐÒÅÒ×ÁÔØÓÑ, ËÏÇÄÁ ÐÒÏÃÅÓÓ PID\n"
+" ÚÁ×ÅÒÛÁÅÔ ÒÁÂÏÔÕ\n"
+" -q, --quiet, --silent ÎÅ ×Ù×ÏÄÉÔØ ÚÁÇÏÌÏ×ËÉ Ó ÉÍÅÎÁÍÉ ÆÁÊÌÏ×\n"
+" -s, --sleep-interval=ó Ó ËÌÀÞÏÍ -f, ÓÐÁÔØ ÍÅÖÄÕ ÉÔÅÒÁÃÉÑÍÉ ÐÒÉÍÅÒÎÏ ó "
+"ÓÅËÕÎÄ\n"
+" (ÐÏ ÕÍÏÌÞÁÎÉÀ 1.0)\n"
+" -v, --verbose ×ÓÅÇÄÁ ×Ù×ÏÄÉÔØ ÚÁÇÏÌÏ×ËÉ Ó ÉÍÅÎÁÍÉ ÆÁÊÌÏ×\n"
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"åÓÌÉ ÐÅÒ×ÙÍ ÚÎÁËÏÍ × î (ÞÉÓÌÅ ÂÁÊÔ ÉÌÉ ÓÔÒÏË) Ñ×ÌÑÅÔÓÑ `+', ÔÏ ×Ù×ÏÄÉÔ\n"
+"Ó î-ÎÏÇÏ ÂÁÊÔÁ (ÉÌÉ ÓÔÒÏËÉ) ÏÔ ÎÁÞÁÌÁ ËÁÖÄÏÇÏ ÆÁÊÌÁ, ÉÎÁÞÅ ×Ù×ÏÄÉÔ\n"
+"ÐÏÓÌÅÄÎÉÅ î ÂÁÊÔ (ÉÌÉ ÓÔÒÏË). î ÍÏÖÅÔ ÉÍÅÔØ ÓÕÆÆÉËÓ-ÍÎÏÖÉÔÅÌØ: b\n"
+"ÏÚÎÁÞÁÅÔ 512, k -- 1024, m -- 1024*1024.\n"
+"\n"
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"ó ËÌÀÞÏÍ --follow (-f), tail ÐÏ ÕÍÏÌÞÁÎÉÀ ÓÌÅÄÕÅÔ ÚÁ ÄÅÓËÒÉÐÔÏÒÏÍ ÆÁÊÌÁ, "
+"ÞÔÏ\n"
+"ÏÚÎÁÞÁÅÔ, ÞÔÏ ÄÁÖÅ ÅÓÌÉ ÆÁÊÌ ÐÅÒÅÉÍÅÎÏ×ÁÎ, tail ÂÕÄÅÔ É ÄÁÌÅÅ ÓÌÅÄÉÔØ ÚÁ "
+"ÅÇÏ\n"
+"ËÏÎÃÏÍ. "
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"üÔÏ ÐÏ×ÅÄÅÎÉÅ, ÐÒÉÎÉÍÁÅÍÏÅ ÐÏ ÕÍÏÌÞÁÎÉÀ, ÎÅÖÅÌÁÔÅÌØÎÏ, ÅÓÌÉ ×Ù ÎÁ\n"
+"ÓÁÍÏÍ ÄÅÌÅ ÈÏÔÉÔÅ ÓÌÅÄÉÔØ ÚÁ ÄÅÊÓÔ×ÉÔÅÌØÎÙÍ ÉÍÅÎÅÍ ÆÁÊÌÁ, Á ÎÅ ÚÁ "
+"ÄÅÓËÒÉÐÔÏÒÏÍ\n"
+"(ÐÒÉÍÅÒ -- ×ÒÁÝÅÎÉÅ ÐÒÏÔÏËÏÌØÎÙÈ ÆÁÊÌÏ×). ÷ ÔÁËÏÍ ÓÌÕÞÁÅ ÉÓÐÏÌØÚÕÊÔÅ\n"
+"--follow=name. üÔÏ ÚÁÓÔÁ×ÉÔ tail ÓÌÅÄÏ×ÁÔØ ÚÁ ÕËÁÚÁÎÎÙÍ ÆÁÊÌÏÍ, ÐÏ×ÔÏÒÎÏ\n"
+"ÏÔËÒÙ×ÁÑ ÅÇÏ ÐÅÒÉÏÄÉÞÅÓËÉ, ÞÔÏÂÙ ÕÚÎÁÔØ, ÎÅ ÂÙÌ ÌÉ ÏÎ ÕÄÁÌÅÎ É ÚÁÎÏ×Ï "
+"ÓÏÚÄÁÎ\n"
+"ËÁËÏÊ-ÔÏ ÄÒÕÇÏÊ ÐÒÏÇÒÁÍÍÏÊ.\n"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "ÚÁËÒÙÔÉÅ %s (fd=%d)"
+
+#: src/tail.c:411
+#, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÍÅÓÔÉÔØ ÕËÁÚÁÔÅÌØ ÐÏÚÉÃÉÉ ÎÁ %s"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÍÅÓÔÉÔØ ÕËÁÚÁÔÅÌØ ÐÏÚÉÃÉÉ ÎÁ %s ÏÔÎÏÓÉÔÅÌØÎÏ ËÏÎÃÁ"
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr "%s ÓÔÁÌ ÎÅÄÏÓÔÕÐÅÎ"
+
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+"%s ÂÙÌ ÚÁÍÅÝÅÎ ÆÁÊÌÏÍ, ÄÌÑ ËÏÔÏÒÏÇÏ tail ÎÅÐÒÉÍÅÎÉÍ; ËÏÎÅà ×Ù×ÏÄÁ ÄÌÑ ÜÔÏÇÏ "
+"ÉÍÅÎÉ"
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr "%s ÓÔÁÌ ÄÏÓÔÕÐÅÎ"
+
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "%s ÐÏÑ×ÉÌÓÑ; ÎÁÞÁÔ ×Ù×ÏÄ ÄÌÑ ÎÏ×ÏÇÏ ÆÁÊÌÁ"
+
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "%s ÂÙÌ ÚÁÍÅÝÅÎ; ×Ù×ÏÄ ÐÒÏÄÏÌÖÁÅÔÓÑ ÄÌÑ ÎÏ×ÏÇÏ ÆÁÊÌÁ"
+
+#: src/tail.c:1025
+#, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÉÚÍÅÎÉÔØ ÎÅÂÌÏËÉÒÕÀÝÉÊ ÒÅÖÉÍ"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: ÆÁÊÌ ÕÓÅÞÅÎ"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "ÂÏÌØÛÅ ÎÅÔ ÆÁÊÌÏ×"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+"%s: ÎÅ×ÏÚÍÏÖÎÏ ÓÌÅÄÉÔØ ÚÁ ËÏÎÃÏÍ ÆÁÊÌÁ ÔÁËÏÇÏ ÔÉÐÁ; ×Ù×ÏÄ ÐÒÏÄÏÌÖÁÅÔÓÑ ÄÌÑ "
+"ÎÏ×ÏÇÏ ÆÁÊÌÁ"
+
+#: src/tail.c:1439
+#, c-format
+msgid "number in %s is too large"
+msgstr "ÞÉÓÌÏ × %s ÓÌÉÛËÏÍ ×ÅÌÉËÏ"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr ""
+"%s: ÎÅ×ÅÒÎÏÅ ÍÁËÓÉÍÁÌØÎÏÅ ÞÉÓÌÏ ÎÅÉÚÍÅÎÑ×ÛÉÈÓÑ ÐÁÒÁÍÅÔÒÏ× ÍÅÖÄÕ ÏÔËÒÙÔÉÑÍÉ"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: ÎÅ×ÅÒÎÙÊ PID"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÓÅËÕÎÄ"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr "ËÌÀÞ ÉÓÐÏÌØÚÏ×ÁÎ × ÎÅ×ÅÒÎÏÍ ËÏÎÔÅËÓÔÅ -- %c"
+
+#: src/tail.c:1566
+#, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "×ÎÉÍÁÎÉÅ: ËÌÀÞ --retry ÏÂÙÞÎÏ ÐÏÌÅÚÅÎ ÐÒÉ ÓÌÅÄÏ×ÁÎÉÉ ÐÏ ÉÍÅÎÉ ÆÁÊÌÁ"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+"×ÎÉÍÁÎÉÅ: PID ÉÇÎÏÒÉÒÏ×ÁÎ; ËÌÀÞ --pid=PID ÐÏÌÅÚÅÎ ÔÏÌØËÏ ÐÒÉ ÓÌÅÄÏ×ÁÎÉÉ"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: --pid=PID ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ ÎÁ ÜÔÏÊ ÓÉÓÔÅÍÅ"
+
+#: src/tail.c:1667
+#, c-format
+msgid "cannot follow %s by name"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÌÅÄÏ×ÁÔØ ÚÁ %s ÐÏ ÉÍÅÎÉ"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+"ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÂÅÓËÏÎÅÞÎÏÅ ÓÌÅÖÅÎÉÅ ÚÁ ÓÔÁÎÄÁÒÔÎÙÍ ××ÏÄÏÍ ÎÅÜÆÆÅËÔÉ×ÎÏ"
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"ëÏÐÉÒÕÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ × ËÁÖÄÙÊ æáêì, Á ÔÁËÖÅ × ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ.\n"
+"\n"
+" -a, --append ÄÏÐÉÓÁÔØ × ÚÁÄÁÎÎÙÅ æáêìù\n"
+" -i, --ignore-interrupts ÉÇÎÏÒÉÒÏ×ÁÔØ ÓÉÇÎÁÌÙ ÐÒÅÒÙ×ÁÎÉÑ\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"åÓÌÉ æáêì ÚÁÄÁÎ ËÁË -, ËÏÐÉÒÕÅÔ ÏÂÒÁÔÎÏ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ.\n"
+
+#: src/test.c:125
+#, c-format
+msgid "missing argument after %s"
+msgstr "ÐÒÏÐÕÝÅÎ ÁÒÇÕÍÅÎÔ ÐÏÓÌÅ %s"
+
+#: src/test.c:161
+#, c-format
+msgid "invalid integer %s"
+msgstr "ÎÅ×ÅÒÎÏÅ ÃÅÌÏÅ ÞÉÓÌÏ %s"
+
+#: src/test.c:242
+msgid "')' expected"
+msgstr "ÏÖÉÄÁÅÔÓÑ `)'"
+
+#: src/test.c:245
+#, c-format
+msgid "')' expected, found %s"
+msgstr "ÏÖÉÄÁÅÔÓÑ `)', ×ÓÔÒÅÞÅÎÏ %s"
+
+#: src/test.c:261 src/test.c:606
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: ÏÖÉÄÁÅÔÓÑ ÕÎÁÒÎÙÊ ÏÐÅÒÁÔÏÒ"
+
+#: src/test.c:330
+msgid "-nt does not accept -l"
+msgstr "-nt ÎÅ ÄÏÐÕÓËÁÅÔ -l"
+
+#: src/test.c:343
+msgid "-ef does not accept -l"
+msgstr "-ef ÎÅ ÄÏÐÕÓËÁÅÔ -l"
+
+#: src/test.c:359
+msgid "-ot does not accept -l"
+msgstr "-ot ÎÅ ÄÏÐÕÓËÁÅÔ -l"
+
+#: src/test.c:368
+msgid "unknown binary operator"
+msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÂÉÎÁÒÎÙÊ ÏÐÅÒÁÔÏÒ"
+
+#: src/test.c:634
+#, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: ÏÖÉÄÁÅÔÓÑ ÂÉÎÁÒÎÙÊ ÏÐÅÒÁÔÏÒ"
+
+#: src/test.c:694
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: test ÷ùòáöåîéå\n"
+" ÉÌÉ: test\n"
+" ÉÌÉ: [ ÷ùòáöåîéå ]\n"
+" ÉÌÉ: [ ]\n"
+" ÉÌÉ: [ ëìàþ\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr "÷ÙÈÏÄÎÏÊ ÓÔÁÔÕÓ ÏÐÒÅÄÅÌÑÅÔÓÑ ÷ùòáöåîéåí.\n"
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"\n"
+"åÓÌÉ ÷ùòáöåîéå ÎÅ ÚÁÄÁÎÏ, ÏÎÏ ÓÞÉÔÁÅÔÓÑ ÌÏÖÎÙÍ. ÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ\n"
+"÷ùòáöåîéå ÍÏÖÅÔ ÂÙÔØ ÉÓÔÉÎÎÙÍ ÌÉÂÏ ÌÏÖÎÙÍ; ÏÎÏ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ×ÙÈÏÄÎÏÊ\n"
+"ÓÔÁÔÕÓ ÐÒÏÇÒÁÍÍÙ. ÷ÙÈÏÄÎÏÅ ÚÎÁÞÅÎÉÅ ÏÐÒÅÄÅÌÑÅÔÓÑ ÓÌÅÄÕÀÝÉÍ ÏÂÒÁÚÏÍ:\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+"\n"
+" ( ÷ùòáöåîéå ) ÷ùòáöåîéå ÉÓÔÉÎÎÏ\n"
+" ! ÷ùòáöåîéå ÷ùòáöåîéå ÌÏÖÎÏ\n"
+" ÷ùòáöåîéå1 -a ÷ùòáöåîéå2 ÷ùòáöåîéå1 É ÷ùòáöåîéå2 ÏÂÁ ÉÓÔÉÎÎÙ\n"
+" ÷ùòáöåîéå1 -o ÷ùòáöåîéå2 ÷ùòáöåîéå1 ÉÌÉ ÷ùòáöåîéå2 ÉÓÔÉÎÎÏ\n"
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"\n"
+" -n óôòïëá ÄÌÉÎÁ óôòïëé ÏÔÌÉÞÎÁ ÏÔ ÎÕÌÑ\n"
+" óôòïëá ÜË×É×ÁÌÅÎÔÎÏ -n óôòïëá\n"
+" -z óôòïëá ÄÌÉÎÁ óôòïëé ÒÁ×ÎÁ ÎÕÌÀ\n"
+" óôòïëá1 = óôòïëá2 ÓÔÒÏËÉ ÒÁ×ÎÙ\n"
+" óôòïëá1 != óôòïëá2 ÓÔÒÏËÉ ÎÅ ÒÁ×ÎÙ\n"
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" ãåìïå1 -eq ãåìïå2 ãåìïå1 ÒÁ×ÎÏ ãåìïíõ2\n"
+" ãåìïå1 -ge ãåìïå2 ãåìïå1 ÂÏÌØÛÅ ÉÌÉ ÒÁ×ÎÏ ãåìïíõ2\n"
+" ãåìïå1 -gt ãåìïå2 ãåìïå1 ÂÏÌØÛÅ ãåìïçï2\n"
+" ãåìïå1 -le ãåìïå2 ãåìïå1 ÍÅÎØÛÅ ÉÌÉ ÒÁ×ÎÏ ãåìïíõ2\n"
+" ãåìïå1 -lt ãåìïå2 ãåìïå1 ÍÅÎØÛÅ ãåìïçï2\n"
+" ãåìïå1 -ne ãåìïå2 ãåìïå1 ÏÔÌÉÞÎÏ ÏÔ ãåìïçï2\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+"\n"
+" æáêì1 -ef æáêì2 æáêì1 É æáêì2 ÉÍÅÀÔ ÏÄÉÎÁËÏ×ÙÅ ÕÓÔÒÏÊÓÔ×Á É ÎÏÍÅÒÁ "
+"inode\n"
+" æáêì1 -nt æáêì2 æáêì1 ÉÚÍÅÎÑÌÓÑ ÐÏÚÖÅ, ÞÅÍ æáêì2\n"
+" æáêì1 -ot æáêì2 æáêì1 ÂÙÌ ÓÏÚÄÁÎ ÐÏÚÖÅ, ÞÅÍ æáêì2\n"
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+"\n"
+" -b æáêì æáêì ÓÕÝÅÓÔ×ÕÅÔ É Ñ×ÌÑÅÔÓÑ ÓÐÅÃÉÁÌØÎÙÍ Ó ÐÏÂÌÏÞÎÙÍ ÄÏÓÔÕÐÏÍ\n"
+" -c æáêì æáêì ÓÕÝÅÓÔ×ÕÅÔ É Ñ×ÌÑÅÔÓÑ ÓÐÅÃÉÁÌØÎÙÍ Ó ÐÏÓÉÍ×ÏÌØÎÙÍ "
+"ÄÏÓÔÕÐÏÍ\n"
+" -d æáêì æáêì ÓÕÝÅÓÔ×ÕÅÔ É Ñ×ÌÑÅÔÓÑ ËÁÔÁÌÏÇÏÍ\n"
+" -e æáêì æáêì ÓÕÝÅÓÔ×ÕÅÔ\n"
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+" -f æáêì æáêì ÓÕÝÅÓÔ×ÕÅÔ É Ñ×ÌÑÅÔÓÑ ÏÂÙÞÎÙÍ ÆÁÊÌÏÍ\n"
+" -g æáêì æáêì ÓÕÝÅÓÔ×ÕÅÔ É ÉÍÅÅÔ ÆÌÁÇ set-group-ID\n"
+" -G æáêì æáêì ÓÕÝÅÓÔ×ÕÅÔ É ÐÒÉÎÁÄÌÅÖÉÔ ÔÅËÕÝÅÊ ÜÆÆÅËÔÉ×ÎÏÊ ÇÒÕÐÐÅ\n"
+" -h æáêì æáêì ÓÕÝÅÓÔ×ÕÅÔ É Ñ×ÌÑÅÔÓÑ ÓÉÍ×ÏÌØÎÏÊ ÓÓÙÌËÏÊ (ÜË×É×ÁÌÅÎÔ -L)\n"
+" -k æáêì æáêì ÓÕÝÅÓÔ×ÕÅÔ É ÉÍÅÅÔ ÆÌÁÇ sticky\n"
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+" -L æáêì æáêì ÓÕÝÅÓÔ×ÕÅÔ É Ñ×ÌÑÅÔÓÑ ÓÉÍ×ÏÌØÎÏÊ ÓÓÙÌËÏÊ (ÜË×É×ÁÌÅÎÔ -h)\n"
+" -O æáêì æáêì ÓÕÝÅÓÔ×ÕÅÔ É ÐÒÉÎÁÄÌÅÖÉÔ ÔÅËÕÝÅÍÕ ÜÆÆÅËÔÉ×ÎÏÍÕ "
+"ÐÏÌØÚÏ×ÁÔÅÌÀ\n"
+" -p æáêì æáêì ÓÕÝÅÓÔ×ÕÅÔ É Ñ×ÌÑÅÔÓÑ ÉÍÅÎÏ×ÁÎÎÙÍ ËÁÎÁÌÏÍ\n"
+" -r æáêì æáêì ÓÕÝÅÓÔ×ÕÅÔ ÄÏÓÔÕÐÅÎ ÄÌÑ ÞÔÅÎÉÑ\n"
+" -s æáêì æáêì ÓÕÝÅÓÔ×ÕÅÔ É ÉÍÅÅÔ ÎÅÎÕÌÅ×ÏÊ ÒÁÚÍÅÒ\n"
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+" -S æáêì æáêì ÓÕÝÅÓÔ×ÕÅÔ É Ñ×ÌÑÅÔÓÑ ÓÏËÅÔÏÍ\n"
+" -t [äæ] ÄÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ äæ ÏÔËÒÙÔ ÎÁ ÔÅÒÍÉÎÁÌÅ\n"
+" -u æáêì æáêì ÓÕÝÅÓÔ×ÕÅÔ É ÉÍÅÅÔ ÆÌÁÇ set-user-ID\n"
+" -w æáêì æáêì ÓÕÝÅÓÔ×ÕÅÔ É ÄÏÓÔÕÐÅÎ ÄÌÑ ÚÁÐÉÓÉ\n"
+" -x æáêì æáêì ÓÕÝÅÓÔ×ÕÅÔ É Ñ×ÌÑÅÔÓÑ ÉÓÐÏÌÎÑÅÍÙÍ\n"
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"÷ÓÅ ÔÅÓÔÙ, ÏÔÎÏÓÑÝÉÅÓÑ Ë æáêìõ, ËÒÏÍÅ -h É -L ÒÁÚÙÍÅÎÏ×Ù×ÁÀÔ\n"
+"ÓÉÍ×ÏÌØÎÙÅ ÓÓÙÌËÉ. ðÏÍÎÉÔÅ, ÞÔÏ ×Ù ÄÏÌÖÎÙ ÏÔÍÅÎÉÔØ ÓÐÅÃÉÁÌØÎÏÅ\n"
+"ÚÎÁÞÅÎÉÅ ÓËÏÂÏË ÄÌÑ ËÏÍÁÎÄÎÏÇÏ ÉÎÔÅÒÐÒÅÔÁÔÏÒÁ (ÎÁÐÒÉÍÅÒ, Ó ÐÏÍÏÝØÀ\n"
+"ÚÎÁËÁ `\\'). ãåìïå ÍÏÖÅÔ ÔÁËÖÅ ÂÙÔØ ÚÁÄÁÎÏ ËÁË \"-l óôòïëá\", ÐÒÉ ÜÔÏÍ\n"
+"ÏÎÏ ÐÒÉÎÉÍÁÅÔ ÚÎÁÞÅÎÉÅ ÄÌÉÎÙ óôòïëé.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr "test É/ÉÌÉ ["
+
+#: src/test.c:831
+msgid "missing `]'"
+msgstr "ÐÒÏÐÕÝÅÎÁ `]'"
+
+#: src/test.c:846
+#, c-format
+msgid "extra argument %s"
+msgstr "ÉÚÌÉÛÎÉÊ ÁÒÇÕÍÅÎÔ %s"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ÆÏÒÍÁÔ ÄÁÔÙ %s"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "ÓÏÚÄÁÎÉÅ %s"
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ touch ÄÌÑ %s"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "ÕÓÔÁÎÏ×ËÁ ×ÒÅÍÅÎÎÙÈ ÏÔÍÅÔÏË %s"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+"ïÂÎÏ×ÉÔØ ×ÒÅÍÅÎÁ ÄÏÓÔÕÐÁ É ÍÏÄÉÆÉËÁÃÉÉ ËÁÖÄÏÇÏ ÆÁÊÌÁ ÄÏ ÔÅËÕÝÅÇÏ ×ÒÅÍÅÎÉ\n"
+"\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a ÉÚÍÅÎÑÔØ ÔÏÌØËÏ ×ÒÅÍÑ ÄÏÓÔÕÐÁ\n"
+" -c, --no-create ÎÅ ÓÏÚÄÁ×ÁÔØ ÆÁÊÌÏ×\n"
+" -d, --date=STRING ÐÒÏÁÎÁÌÉÚÉÒÏ×ÁÔØ STRING É ÉÓÐÏÌØÚÏ×ÁÔØ ×ÍÅÓÔÏ\n"
+" ÔÅËÕÝÅÇÏ ×ÒÅÍÅÎÉ\n"
+" -f (ÉÇÎÏÒÉÒÕÅÔÓÑ)\n"
+" -m ÉÚÍÅÎÑÔØ ÔÏÌØËÏ ×ÒÅÍÑ ÉÚÍÅÎÅÎÉÑ\n"
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --reference=æáêì ÉÓÐÏÌØÚÏ×ÁÔØ ×ÒÅÍÑ æáêìá ×ÍÅÓÔÏ ÔÅËÕÝÅÇÏ\n"
+" -t ÷òåíñ ÉÓÐÏÌØÚÏ×ÁÔØ [[÷÷]çç]ííääÞÞÍÍ[.ÓÓ] ×ÍÅÓÔÏ\n"
+" ÔÅËÕÝÅÇÏ ×ÒÅÍÅÎÉ\n"
+" --time=óìï÷ï ÉÚÍÅÎÉÔØ ÕËÁÚÁÎÎÏÅ ×ÒÅÍÑ:\n"
+" óìï÷ï access, atime, use ÜË×É×ÁÌÅÎÔÎÏ -a\n"
+" óìï÷ï modify, mtime ÜË×É×ÁÌÅÎÔÎÏ -m\n"
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"úÁÍÅÔØÔÅ, ÞÔÏ ËÌÀÞÉ -d É -t ×ÏÓÐÒÉÎÉÍÁÀÔ ÒÁÚÎÙÅ ÆÏÒÍÁÔÙ ÄÁÔÙ É ×ÒÅÍÅÎÉ.\n"
+"\n"
+"åÓÌÉ æáêì ÚÁÄÁÎ ËÁË -, ÏÂÎÏ×ÌÑÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ.\n"
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÄÁÔØ ×ÒÅÍÑ ÉÚ ÎÅÓËÏÌØËÉÈ ÉÓÔÏÞÎÉËÏ×"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+"ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: `touch %s' ÕÓÔÁÒÅÌ; ÉÓÐÏÌØÚÕÊÔÅ `touch -t %04ld%02d%02d%02d%"
+"02d.%02d'"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... îáâïò1 [îáâïò2]\n"
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"ðÒÅÏÂÒÁÚÕÅÔ, ÕÐÌÏÔÎÑÅÔ É/ÉÌÉ ÕÄÁÌÑÅÔ ÚÎÁËÉ ÓÏ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ É\n"
+"ÐÅÞÁÔÁÅÔ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ.\n"
+"\n"
+" -c, -C, --complement ÓÎÁÞÁÌÁ ÐÏÌÕÞÉÔØ ÄÏÐÏÌÎÅÎÉÅ ôáâìéãù1\n"
+" -d, --delete ÕÄÁÌÑÔØ ÚÎÁËÉ ÉÚ ôáâìéãù1, ÎÅ ÐÒÅÏÂÒÁÚÏ×Ù×ÁÔØ\n"
+" -s, --squeeze-repeats ÚÁÍÅÝÁÔØ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÐÏ×ÔÏÒÑÀÝÉÈÓÑ ÚÎÁËÏ× "
+"ÉÚ\n"
+" ÐÅÒÅÞÉÓÌÅÎÎÙÈ × ôáâìéãå1 ÎÁ ÅÄÉÎÓÔ×ÅÎÎÙÊ ÔÁËÏÊ "
+"ÚÎÁË\n"
+" -t, --truncate-set1 ÓÎÁÞÁÌÁ ÓÏËÒÁÔÉÔØ ôáâìéãõ1 ÄÏ ÒÁÚÍÅÒÁ ôáâìéãù2\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"ôáâìéãÙ ÚÁÄÁÀÔÓÑ ËÁË ÚÎÁËÏ×ÙÅ ÓÔÒÏËÉ. ÷Ï ÍÎÏÇÉÈ ÓÌÕÞÁÑÈ ÚÎÁËÉ ÐÒÅÄÓÔÁ×ÌÑÀÔ\n"
+"ÓÁÍÉ ÓÅÂÑ. ÷ÏÓÐÒÉÎÉÍÁÀÔÓÑ ÓÌÅÄÕÀÝÉÅ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ:\n"
+"\n"
+" \\îîî ÚÎÁË Ó ×ÏÓØÍÅÒÉÞÎÙÍ ËÏÄÏÍ îîî (ÏÔ 1 ÄÏ 3 ÃÉÆÒ)\n"
+" \\\\ ÏÂÒÁÔÎÁÑ ËÏÓÁÑ ÞÅÒÔÁ\n"
+" \\a Ú×ÕËÏ×ÏÊ ÓÉÇÎÁÌ\n"
+" \\b ÚÁÂÏÊ\n"
+" \\f ÐÅÒÅ×ÏÄ ÓÔÒÁÎÉÃÙ\n"
+" \\n ÎÏ×ÁÑ ÓÔÒÏËÁ\n"
+" \\r ×ÏÚ×ÒÁÔ ËÁÒÅÔËÉ\n"
+" \\t ÇÏÒÉÚÏÎÔÁÌØÎÁÑ ÔÁÂÕÌÑÃÉÑ\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v ×ÅÒÔÉËÁÌØÎÁÑ ÔÁÂÕÌÑÃÉÑ\n"
+" úîáë1-úîáë2 ×ÓÅ ÚÎÁËÉ ÏÔ úîáë1 ÄÏ úîáë2 × ÐÏÒÑÄËÅ ×ÏÚÒÁÓÔÁÎÉÑ\n"
+" [úîáë*] úîáë ÚÁÐÏÌÎÑÅÔ ôáâìéãõ2 ÄÏ ÄÌÉÎÙ ôáâìéãù1\n"
+" [úîáë*þéóìï] ÚÁÄÁÎÎÏÅ þéóìï ÏÄÉÎÁËÏ×ÙÈ úîáëï÷; þéóìï ×ÏÓØÍÅÒÉÞÎÏÅ, "
+"ÅÓÌÉ\n"
+" ÎÁÞÉÎÁÅÔÓÑ Ó 0\n"
+" [:alnum:] ×ÓÅ ÂÕË×Ù É ÃÉÆÒÙ\n"
+" [:alpha:] ×ÓÅ ÂÕË×Ù\n"
+" [:blank:] ×ÓÅ ÇÏÒÉÚÏÎÔÁÌØÎÙÅ ÐÒÏÂÅÌØÎÙÅ ÚÎÁËÉ\n"
+" [:cntrl:] ×ÓÅ ÕÐÒÁ×ÌÑÀÝÉÅ ÚÎÁËÉ\n"
+" [:digit:] ×ÓÅ ÃÉÆÒÙ\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] ×ÓÅ ÐÅÞÁÔÎÙÅ ÚÎÁËÉ, ÉÓËÌÀÞÁÑ ÐÒÏÂÅÌ\n"
+" [:lower:] ×ÓÅ ÓÔÒÏÞÎÙÅ ÂÕË×Ù\n"
+" [:print:] ×ÓÅ ÐÅÞÁÔÎÙÅ ÚÎÁËÉ, ×ËÌÀÞÁÑ ÐÒÏÂÅÌ\n"
+" [:punct:] ×ÓÅ ÚÎÁËÉ ÐÒÅÐÉÎÁÎÉÑ\n"
+" [:space:] ×ÓÅ ×ÅÒÔÉËÁÌØÎÙÅ ÉÌÉ ÇÏÒÉÚÏÎÔÁÌØÎÙÅ ÐÒÏÂÅÌØÎÙÅ ÚÎÁËÉ\n"
+" [:upper:] ×ÓÅ ÚÁÇÌÁ×ÎÙÅ ÂÕË×Ù\n"
+" [:xdigit:] ×ÓÅ ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÙÅ ÃÉÆÒÙ\n"
+" [=úîáë=] ×ÓÅ ÚÎÁËÉ, ÜË×É×ÁÌÅÎÔÎÙÅ úîáëõ\n"
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"åÓÌÉ ÚÁÄÁÎÙ ÏÂÅ ôáâìéãÙ, É ÎÅ ÕËÁÚÁÎ -d, ÐÒÏÉÚ×ÏÄÉÔÓÑ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ. ëÌÀÞ -"
+"t\n"
+"ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎ ÔÏÌØËÏ ÐÒÉ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÉ. ôáâìéãá2 ÒÁÓÛÉÒÑÅÔÓÑ ÄÏ\n"
+"ÒÁÚÍÅÒÁ ôáâìéãù1 ÐÕÔÅÍ ÐÏ×ÔÏÒÅÎÉÑ ÐÏÓÌÅÄÎÅÇÏ ÚÎÁËÁ. "
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"éÚÂÙÔÏÞÎÙÅ ÚÎÁËÉ\n"
+"ôáâìéãù2 ÉÇÎÏÒÉÒÕÀÔÓÑ. ôÏÌØËÏ [:lower:] É [:upper:] ÇÁÒÁÎÔÉÒÏ×ÁÎÏ "
+"ÓÏÒÔÉÒÏ×ÁÎÙ ×\n"
+"ÐÏÒÑÄËÅ ×ÏÚÒÁÓÔÁÎÉÑ, ÉÈ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÏÌØËÏ ÐÁÒÎÏ, ÄÌÑ ÏÂÏÚÎÁÞÅÎÉÑ "
+"ÓÍÅÎÙ\n"
+"ÒÅÇÉÓÔÒÁ. "
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"åÓÌÉ ÎÅ ÚÁÐÒÏÛÅÎÏ ÎÉ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ, ÎÉ ÕÄÁÌÅÎÉÅ, ËÌÀÞ -s ÉÓÐÏÌØÚÕÅÔ\n"
+"ôáâìéãõ1, ÉÎÁÞÅ ÐÒÉ ÕÐÌÏÔÎÅÎÉÉ ÉÓÐÏÌØÚÕÅÔÓÑ ôáâìéãá2. õÐÌÏÔÎÅÎÉÅ "
+"ÐÒÏÉÚ×ÏÄÉÔÓÑ\n"
+"ÐÏÓÌÅ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ ÉÌÉ ÕÄÁÌÅÎÉÑ.\n"
+
+#: src/tr.c:519
+#, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÎÅÏÄÎÏÚÎÁÞÎÁÑ ×ÏÓØÍÅÒÉÞÎÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ \\%c%c%c "
+"ÔÒÁËÔÕÅÔÓÑ\n"
+"ËÁË Ä×ÕÈÂÁÊÔÎÁÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ \\0%c%c, %c"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "ÎÅ×ÅÒÎÙÊ ÐÏÒÑÄÏË ÇÒÁÎÉà ÄÉÁÐÁÚÏÎÁ `%s-%s'"
+
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "ÎÅ×ÅÒÎÏ ÚÁÄÁÎÏ ÞÉÓÌÏ ÐÏ×ÔÏÒÏ× %s × ËÏÎÓÔÒÕËÃÉÉ [c*n]"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "ÐÒÏÐÕÝÅÎÏ ÉÍÑ ËÌÁÓÓÁ ÚÎÁËÏ× `[::]'"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "ÐÒÏÐÕÝÅÎ ÚÎÁË ËÌÁÓÓÁ ÜË×É×ÁÌÅÎÔÎÏÓÔÉ `[==]'"
+
+#: src/tr.c:937
+#, c-format
+msgid "invalid character class %s"
+msgstr "ÎÅ×ÅÒÎÙÊ ËÌÁÓÓ ÚÎÁËÏ× %s"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr ""
+"%s: ÎÅÏÂÈÏÄÉÍÏ ÚÁÄÁÔØ ÏÄÉÎ ÓÉÍ×ÏÌ, ÏÐÒÅÄÅÌÑÀÝÉÊ ËÌÁÓÓ ÜË×É×ÁÌÅÎÔÎÙÈ ÅÍÕ"
+
+#: src/tr.c:1275
+#, c-format
+msgid "too many characters in set"
+msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÚÎÁËÏ× × ÔÁÂÌÉÃÅ"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "ËÏÎÓÔÒÕËÃÉÑ [c*] ÎÅ ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÁ × ôáâìéãå1"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "× ôáâìéãå2 ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÁ ÔÏÌØËÏ ÏÄÎÁ ËÏÎÓÔÒÕËÃÉÑ [c*]"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr ""
+"×ÙÒÁÖÅÎÉÅ [=c=] ÎÅ ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÏ × ôáâìéãå2 ÐÒÉ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÉ"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "ÅÓÌÉ ÞÁÓÔØ ÔÁÂÌÉÃÙ1 ÎÅ ÏÔÂÒÁÓÙ×ÁÅÔÓÑ, ÔÁÂÌÉÃÁ2 ÄÏÌÖÎÁ ÂÙÔØ ÎÅÐÕÓÔÏÊ"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"ÐÒÉ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÉ Ó ÄÏÐÏÌÎÅÎÉÅÍ ËÌÁÓÓÏ× ÓÉÍ×ÏÌÏ×, ôáâìéãá2 ÄÏÌÖÎÁ\n"
+"ÓÔÁ×ÉÔØ × ÓÏÏÔ×ÅÔÓÔ×ÉÅ ×ÓÅÍ ÓÉÍ×ÏÌÁÍ ÄÏÐÏÌÎÅÎÉÑ ÒÏ×ÎÏ ÏÄÉÎ ÓÉÍ×ÏÌ"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"ÐÒÉ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÉ, × ôáâìéãå2 ÍÏÇÕÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÙ ÔÏÌØËÏ\n"
+"ËÌÁÓÓÙ `upper' É `lower'"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr ""
+"ËÏÎÓÔÒÕËÃÉÑ [c*] ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÁ × ôáâìéãå2 ÔÏÌØËÏ ÐÒÉ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÉ"
+
+#: src/tr.c:1731
+msgid "Two strings must be given when translating."
+msgstr "ðÒÉ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÉ ÎÅÏÂÈÏÄÉÍÏ ÚÁÄÁÔØ Ä×Å ÔÁÂÌÉÃÙ."
+
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"ðÒÉ ÕÄÁÌÅÎÉÉ ÂÅÚ ÕÐÌÏÔÎÅÎÉÑ ÐÏ×ÔÏÒÏ× ÍÏÖÎÏ ÚÁÄÁÔØ Ä×Å ÔÏÌØËÏ ÏÄÎÕ ÔÁÂÌÉÃÕ."
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "ÎÅÐÁÒÎÙÅ ËÏÎÓÔÒÕËÃÉÉ [:upper:] É/ÉÌÉ [:lower:]"
+
+#: src/true.c:42
+#, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ ÉÇÎÏÒÉÒÕÅÍÙÅ ÁÒÇÕÍÅÎÔÙ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ ]\n"
+" ÉÌÉ: %s ëìàþ\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr "÷ÙÈÏÄÉÔ Ó ÕÓÐÅÛÎÙÍ ÓÔÁÔÕÓÏÍ."
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ] [æáêì]\n"
+"ðÅÞÁÔÁÅÔ ÐÏÌÎÏÓÔØÀ ÓÏÒÔÉÒÏ×ÁÎÎÙÊ ÓÐÉÓÏË, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ ÞÁÓÔÉÞÎÏÊ "
+"ÓÏÒÔÉÒÏ×ËÅ\n"
+"× ÚÁÄÁÎÎÏÍ æáêìå. åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ "
+"××ÏÄ.\n"
+"\n"
+
+#: src/tsort.c:474
+#, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: ÎÁ ×ÈÏÄÅ ÓÏÄÅÒÖÉÔÓÑ ÎÅÞÅÔÎÏÅ ÞÉÓÌÏ ÌÅËÓÅÍ"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: ÎÁ ×ÈÏÄÅ ÓÏÄÅÒÖÉÔÓÑ ÃÉËÌ:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ ÉÍÑ ÆÁÊÌÁ ÄÌÑ ÔÅÒÍÉÎÁÌÁ, ÐÒÉÓÏÅÄÉÎÅÎÎÏÇÏ Ë ÓÔÁÎÄÁÒÔÎÏÍÕ ××ÏÄÕ.\n"
+"\n"
+" -s, --silent, --quiet ÎÅ ÐÅÞÁÔÁÔØ, ÔÏÌØËÏ ×ÅÒÎÕÔØ ×ÙÈÏÄÎÏÅ ÚÎÁÞÅÎÉÅ\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "ÎÅ ÔÅÌÅÔÁÊÐ"
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ ÏÐÒÅÄÅÌÅÎÎÙÅ Ó×ÅÄÅÎÉÑ Ï ÓÉÓÔÅÍÅ. åÓÌÉ ëìàþ ÎÅ ÚÁÄÁÎ,\n"
+"ÐÏÄÒÁÚÕÍÅ×ÁÅÔÓÑ -s.\n"
+"\n"
+" -a, --all ÎÁÐÅÞÁÔÁÔØ ×ÓÀ ÉÎÆÏÒÍÁÃÉÀ, × ÓÌÅÄÕÀÝÅÍ ÐÏÒÑÄËÅ,\n"
+" ËÒÏÍÅ -p É -i, ÅÓÌÉ ÏÎÉ ÎÅÉÚ×ÅÓÔÎÙ:\n"
+" -s, --kernel-name ÎÁÐÅÞÁÔÁÔØ ÉÍÑ ÑÄÒÁ\n"
+" -n, --nodename ÎÁÐÅÞÁÔÁÔØ ÉÍÑ ÍÁÛÉÎÙ × ÓÅÔÉ\n"
+" -r, --release ÎÁÐÅÞÁÔÁÔØ ÎÏÍÅÒ ×ÙÐÕÓËÁ ÏÐÅÒÁÃÉÏÎÎÏÊ ÓÉÓÔÅÍÙ\n"
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v, --kernel-version ÎÁÐÅÞÁÔÁÔØ ×ÅÒÓÉÀ ÑÄÒÁ\n"
+" -m, --machine ÎÁÐÅÞÁÔÁÔØ ÔÉÐ ÏÂÏÒÕÄÏ×ÁÎÉÑ ÍÁÛÉÎÙ\n"
+" -p, --processor ÎÁÐÅÞÁÔÁÔØ ÔÉÐ ÐÒÏÃÅÓÓÏÒÁ ÉÌÉ \"ÎÅÉÚ×ÅÓÔÎÏ\"\n"
+" -i, --hardware-platform ÎÁÐÅÞÁÔÁÔØ ÔÉÐ ÁÐÐÁÒÁÔÎÏÊ ÐÌÁÔÆÏÒÍÙ ÉÌÉ "
+"\"ÎÅÉÚ×ÅÓÔÎÏ\"\n"
+" -o, --operating-system ÎÁÐÅÞÁÔÁÔØ ÉÍÑ ÏÐÅÒÁÃÉÏÎÎÏÊ ÓÉÓÔÅÍÙ\n"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÚÎÁÔØ ÎÁÚ×ÁÎÉÅ ÓÉÓÔÅÍÙ"
+
+#: src/unexpand.c:125
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"ðÒÅÏÂÒÁÚÕÅÔ ÐÒÏÂÅÌÙ × æáêìáè × ÚÎÁËÉ ÔÁÂÕÌÑÃÉÉ É ÐÅÞÁÔÁÅÔ ÎÁ\n"
+"ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ. åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ\n"
+"ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ.\n"
+"\n"
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all ÐÒÅÏÂÒÁÚÏ×Ù×ÁÔØ ×ÓÅ ÐÒÏÂÅÌØÎÙÅ ÚÎÁËÉ, Á ÎÅ ÔÏÌØËÏ "
+"ÎÁÞÁÌØÎÙÅ\n"
+" --first-only ÐÒÅÏÂÒÁÚÏ×Ù×ÁÔØ ÔÏÌØËÏ ÎÁÞÁÌØÎÙÅ ÐÒÏÂÅÌØÎÙÅ ÚÎÁËÉ\n"
+" (ÐÅÒÅËÒÙ×ÁÅÔ -a)\n"
+" -t, --tabs=þéóìï ÉÓÐÏÌØÚÏ×ÁÔØ ÔÁÂÕÌÑÃÉÀ ÚÁÄÁÎÎÏÊ ÛÉÒÉÎÙ, Á ÎÅ 8 (×ËÌÀÞÁÅÔ "
+"-a)\n"
+" -t, --tabs=óðéóïë ÉÓÐÏÌØÚÏ×ÁÔØ ÚÁÄÁÎÎÙÊ óðéóïë (ÒÁÚÄÅÌÅÎÎÙÊ ÚÁÐÑÔÙÍÉ) "
+"ÐÏÚÉÃÉÊ\n"
+" ÔÁÂÕÌÑÃÉÉ (×ËÌÀÞÁÅÔ -a)\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr "ÐÏÚÉÃÉÉ ÔÁÂÕÌÑÃÉÉ ÓÌÉÛËÏÍ ÄÁÌÅËÏ ÄÒÕÇ ÏÔ ÄÒÕÇÁ"
+
+#: src/unexpand.c:512
+#, c-format
+msgid "tab stop value is too large"
+msgstr "ÒÁÚÍÅÒ ÔÁÂÕÌÑÃÉÉ ÓÌÉÛËÏÍ ×ÅÌÉË"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [÷èïä [÷ùèïä]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"õÄÁÌÑÅÔ ×ÓÅ ËÒÏÍÅ ÏÄÎÏÊ ÐÏ×ÔÏÒÑÀÝÉÅÓÑ ÓÔÒÏËÉ ÷èïäá (ÉÌÉ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ) "
+"É\n"
+"ÐÅÞÁÔÁÅÔ ÎÁ ÷ùèïä (ÉÌÉ ÎÁ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ).\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count ×Ù×ÏÄÉÔØ ÞÉÓÌÏ ÐÏ×ÔÏÒÏ× × ÎÁÞÁÌÅ ËÁÖÄÏÊ ÓÔÒÏËÉ\n"
+" -d, --repeated ×Ù×ÏÄÉÔØ ÔÏÌØËÏ ÐÏ×ÔÏÒÑÀÝÉÅÓÑ ÓÔÒÏËÉ\n"
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated[=delimit-method] ÎÁÐÅÞÁÔÁÔØ ×ÓÅ ÐÏ×ÔÏÒÑÀÝÉÅÓÑ ÓÔÒÏËÉ\n"
+" delimit-method={none(ÐÏ ÕÍÏÌÞÁÎÉÀ),prepend,"
+"separate)}\n"
+" òÁÚÄÅÌÅÎÉÅ ÄÅÌÁÅÔÓÑ ÐÕÓÔÙÍÉ ÓÔÒÏËÁÍÉ.\n"
+" -f, --skip-fields=N ÎÅ ÓÒÁ×ÎÉ×ÁÔØ ÐÅÒ×ÙÅ N ÐÏÌÅÊ\n"
+" -i, --ignore-case ÉÇÎÏÒÉÒÏ×ÁÔØ ÐÒÉ ÓÒÁ×ÎÅÎÉÉ ÒÅÇÉÓÔÒ\n"
+" -s, --skip-chars=N ÎÅ ÓÒÁ×ÎÉ×ÁÔØ ÐÅÒ×ÙÅ N ÚÎÁËÏ×\n"
+" -u, --unique ×Ù×ÏÄÉÔØ ÔÏÌØËÏ ÎÅÐÏ×ÔÏÒÑÀÝÉÅÓÑ ÓÔÒÏËÉ\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr " -w, --check-chars=î ÓÒÁ×ÎÉ×ÁÔØ ÐÅÒ×ÙÅ î ÚÎÁËÏ× ÓÔÒÏË\n"
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"ðÏÌÅÍ ÓÞÉÔÁÅÔÓÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ÐÒÏÂÅÌØÎÙÈ ÚÎÁËÏ×, ÚÁ ËÏÔÏÒÏÊ\n"
+"ÓÌÅÄÕÀÔ ÎÅÐÒÏÂÅÌØÎÙÅ ÚÎÁËÉ. óÎÁÞÁÌÁ ÐÒÏÐÕÓËÁÀÔÓÑ ÐÏÌÑ, ÐÏÔÏÍ ÚÎÁËÉ.\n"
+
+#: src/uniq.c:350
+#, c-format
+msgid "too many repeated lines"
+msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÐÏ×ÔÏÒÑÀÝÉÈÓÑ ÓÔÒÏË"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÐÒÏÐÕÓËÁÅÍÙÈ ÐÏÌÅÊ"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÐÒÏÐÕÓËÁÅÍÙÈ ÂÁÊÔ"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "ÎÅ×ÅÒÎÏÅ ÞÉÓÌÏ ÓÒÁ×ÎÉ×ÁÅÍÙÈ ÂÁÊÔ"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr "ÐÅÞÁÔØ ×ÓÅÈ ÐÏ×ÔÏÒÑÀÝÉÈÓÑ ÓÔÏË É ÞÉÓÌÁ ÐÏ×ÔÏÒÅÎÉÊ ÂÅÓÓÍÙÓÌÅÎÎÁ"
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s æáêì\n"
+" ÉÌÉ: %s ëìàþ\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"÷ÙÚÙ×ÁÅÔ ÆÕÎËÃÉÀ unlink ÄÌÑ ÕÄÁÌÅÎÉÑ ÕËÁÚÁÎÎÏÇÏ æáêìá.\n"
+"\n"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÓÓÙÌËÕ %s"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÚÎÁÔØ ×ÒÅÍÑ ÐÅÒ×ÏÎÁÞÁÌØÎÏÊ ÚÁÇÒÕÚËÉ"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s ×ËÌÀÞÅÎ "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "am"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "pm"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr " ??:???? ×ËÌÀÞÅÎ "
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr "???? ÄÎÅÊ ??:??, "
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%ld ÄÅÎØ"
+msgstr[1] "%ld ÄÎÑ"
+msgstr[2] "%ld ÄÎÅÊ"
+
+#: src/uptime.c:147
+#, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%lu ÐÏÌØÚÏ×ÁÔÅÌØ"
+msgstr[1] "%lu ÐÏÌØÚÏ×ÁÔÅÌÑ"
+msgstr[2] "%lu ÐÏÌØÚÏ×ÁÔÅÌÅÊ"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", ÓÒÅÄÎÑÑ ÚÁÇÒÕÖÅÎÎÏÓÔØ: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [ æáêì ]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"÷Ù×ÏÄÉÔ ÔÅËÕÝÅÅ ×ÒÅÍÑ, ÏÂÝÅÅ ×ÒÅÍÑ ÎÅÐÒÅÒÙ×ÎÏÊ ÒÁÂÏÔÙ ÓÉÓÔÅÍÙ, ÞÉÓÌÏ\n"
+"ÐÏÌØÚÏ×ÁÔÅÌÅÊ × ÓÉÓÔÅÍÅ É ÓÒÅÄÎÅÅ ÞÉÓÌÏ ÚÁÄÁÎÉÊ × ÏÞÅÒÅÄÉ ÚÁÐÕÓËÁ ÚÁ\n"
+"ÐÏÓÌÅÄÎÉÅ 1, 5 É 15 ÍÉÎÕÔ.\n"
+"åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ, ÉÓÐÏÌØÚÕÅÔÓÑ %s. þÁÓÔÏ × ËÁÞÅÓÔ×Å æáêìá ÚÁÄÁÀÔ %s.\n"
+"\n"
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"÷Ù×ÏÄÉÔ ÓÐÉÓÏË ÐÏÄËÌÀÞÅÎÎÙÈ ÐÏÌØÚÏ×ÁÔÅÌÅÊ × ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó æáêìïí.\n"
+"åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ, ÉÓÐÏÌØÚÕÅÔÓÑ %s. þÁÓÔÏ × ËÁÞÅÓÔ×Å æáêìá\n"
+"ÚÁÄÁÀÔ %s.\n"
+"\n"
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"ðÅÞÁÔÁÅÔ ÞÉÓÌÏ ÐÅÒÅ×ÏÄÏ× ÓÔÒÏË, ÓÌÏ× É ÂÁÊÔ ÄÌÑ ËÁÖÄÏÇÏ æáêìá É\n"
+"ÉÔÏÇÏ×ÕÀ ÓÔÒÏËÕ, ÅÓÌÉ ÂÙÌÏ ÚÁÄÁÎÏ ÎÅÓËÏÌØËÏ æáêìï÷. åÓÌÉ æáêì ÎÅ\n"
+"ÚÁÄÁÎ ÉÌÉ ÚÁÄÁÎ ËÁË -, ÞÉÔÁÅÔ ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ.\n"
+" -c, --bytes ÎÁÐÅÞÁÔÁÔØ ÞÉÓÌÏ ÂÁÊÔ\n"
+" -m, --chars ÎÁÐÅÞÁÔÁÔØ ÞÉÓÌÏ ÚÎÁËÏ×\n"
+" -l, --lines ÎÁÐÅÞÁÔÁÔØ ÞÉÓÌÏ ÐÅÒÅ×ÏÄÏ× ÓÔÒÏË\n"
+
+#: src/wc.c:121
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" --files0-from=æáêì ÂÒÁÔØ ××ÏÄ ÉÚ ÆÁÊÌÏ×, ÐÅÒÅÞÉÓÌÅÎÎÙÈ ÞÅÒÅÚ NUL × "
+"æáêìå\n"
+" -L, --max-line-length ÎÁÐÅÞÁÔÁÔØ ÄÌÉÎÕ ÎÁÉÂÏÌØÛÅÊ ÓÔÒÏËÉ\n"
+" -w, --words ÎÁÐÅÞÁÔÁÔØ ÞÉÓÌÏ ÓÌÏ×\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+"ÐÒÉ ÞÔÅÎÉÉ ÉÍÅÎ ÆÁÊÌÏ× ÓÏ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ, ÉÍÑ ÆÁÊÌÁ %s ÎÅ ÄÏÐÕÓËÁÅÔÓÑ"
+
+#: src/who.c:212
+msgid " old "
+msgstr "ÄÁ×ÎÏ"
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "ÔÅÒÍÉÎÁÌ="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "×ÙÈÏÄ="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "ÉÚÍÅÎÅÎÉÅ ×ÒÅÍÅÎÉ"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "ÕÒÏ×ÅÎØ ×ÙÐÏÌÎÅÎÉÑ"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "ÐÒÅÄÙÄÕÝÉÊ="
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"ÞÉÓÌÏ ÐÏÌØÚÏ×ÁÔÅÌÅÊ=%lu\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "éíñ"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "ìéîéñ"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "÷òåíñ"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr "îåáëôé÷åî"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "ëïííåîôáòéê"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "÷ùèïä"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [ æáêì | áòç1 áòç2]\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" -a, --all ÜË×É×ÁÌÅÎÔ -b -d --login -p -r -t -T -u\n"
+" -b, --boot ×ÒÅÍÑ ÐÏÓÌÅÄÎÅÊ ÚÁÇÒÕÚËÉ ÓÉÓÔÅÍÙ\n"
+" -d, --dead ÐÅÞÁÔÁÔØ ÍÅÒÔ×ÙÅ ÐÒÏÃÅÓÓÙ\n"
+" -H, --heading ÐÅÞÁÔÁÔØ ÓÔÒÏËÕ Ó ÚÁÇÏÌÏ×ËÁÍÉ ÓÔÏÌÂÃÏ×\n"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr " -l, --login ÐÅÞÁÔÁÔØ ÐÒÏÃÅÓÓÙ ×ÈÏÄÁ × ÓÉÓÔÅÍÕ\n"
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+" --lookup ÐÙÔÁÔØÓÑ ËÁÎÏÎÉÚÉÒÏ×ÁÔØ ÉÍÅÎÁ ÈÏÓÔÏ× ÞÅÒÅÚ DNS\n"
+" -m ÔÏÌØËÏ ÉÍÑ ÈÏÓÔÁ É ÐÏÌØÚÏ×ÁÔÅÌØ, Ó×ÑÚÁÎÎÙÅ ÓÏ\n"
+" ÓÔÁÎÄÁÒÔÎÙÍ ××ÏÄÏÍ\n"
+" -p, --process ÐÅÞÁÔÁÔØ ÁËÔÉ×ÎÙÅ ÐÒÏÃÅÓÓÙ, ËÏÔÏÒÙÅ ÐÏÒÏÄÉÌ init\n"
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+" -q, --count ×ÓÅ ÉÍÅÎÁ É ÞÉÓÌÏ ÐÏÄËÌÀÞÅÎÎÙÈ ÐÏÌØÚÏ×ÁÔÅÌÅÊ\n"
+" -r, --runlevel ÐÅÞÁÔÁÔØ ÔÅËÕÝÉÊ ÕÒÏ×ÅÎØ ×ÙÐÏÌÎÅÎÉÑ\n"
+" -s, --short ÐÅÞÁÔÁÔØ ÔÏÌØËÏ ÉÍÑ, ÌÉÎÉÀ É ×ÒÅÍÑ (ÐÒÉÎÉÍÁÅÔÓÑ ÐÏ "
+"ÕÍÏÌÞÁÎÉÀ)\n"
+" -t, --time ÐÅÞÁÔÁÔØ ÐÏÓÌÅÄÎÅÅ ÉÚÍÅÎÅÎÉÅ ÓÉÓÔÅÍÎÏÇÏ ×ÒÅÍÅÎÉ\n"
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+" -T, -w, --mesg ÄÏÂÁ×ÌÑÔØ ÓÔÁÔÕÓ ÐÒÉÅÍÁ ÓÏÏÂÝÅÎÉÊ ËÁË +, - ÉÌÉ ?\n"
+" -u, --users ÐÅÒÅÞÉÓÌÉÔØ ÐÏÄËÌÀÞÅÎÎÙÈ ÐÏÌØÚÏ×ÁÔÅÌÅÊ\n"
+" --message ÜË×É×ÁÌÅÎÔ -T\n"
+" --writable ÜË×É×ÁÌÅÎÔ -T\n"
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"åÓÌÉ æáêì ÎÅ ÚÁÄÁÎ, ÉÓÐÏÌØÚÕÅÔÓÑ %s. þÁÓÔÏ × ËÁÞÅÓÔ×Å æáêìá ÚÁÄÁÀÔ %s.\n"
+"åÓÌÉ ÚÁÄÁÎÙ áòç1 É áòç2, ÐÏÌÁÇÁÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÎÉÅ -m: ÎÁÐÒÉÍÅÒ `am i'\n"
+"É `mom likes'.\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+"ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ËÌÀÞ -i ÂÕÄÅÔ ÕÄÁÌÅÎ × ÂÕÄÕÝÅÍ ×ÙÐÕÓËÅ; ÉÓÐÏÌØÚÕÊÔÅ\n"
+"×ÍÅÓÔÏ ÎÅÇÏ -u"
+
+#: src/whoami.c:51
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"îÁÐÅÞÁÔÁÔØ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÅ ÔÅËÕÝÅÍÕ ÜÆÆÅËÔÉ×ÎÏÍÕ id\n"
+"ÐÏÌØÚÏ×ÁÔÅÌÑ. áÎÁÌÏÇÉÞÎÏ ×ÙÚÏ×Õ id -un.\n"
+"\n"
+
+#: src/whoami.c:95
+#, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ ÄÌÑ ID %lu\n"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [óôòïëá]...\n"
+" ÉÌÉ: %s ëìàþ\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"îÅÐÒÅÒÙ×ÎÏ ÐÅÞÁÔÁÅÔ ÚÁÄÁÎÎÕÀ óôòïëõ (óôòïëé) ÉÌÉ, ÅÓÌÉ óôòïë ÎÅ ÚÁÄÁÎÏ, "
+"`y'.\n"
+"\n"
+
+#~ msgid "strip failed"
+#~ msgstr "strip ÚÁ×ÅÒÛÉÌÁÓØ ÎÅÕÓÐÅÛÎÏ"
diff --git a/po/rw.gmo b/po/rw.gmo
new file mode 100644
index 0000000..b242776
--- /dev/null
+++ b/po/rw.gmo
Binary files differ
diff --git a/po/rw.po b/po/rw.po
new file mode 100644
index 0000000..ad882e9
--- /dev/null
+++ b/po/rw.po
@@ -0,0 +1,9370 @@
+# Kinyarwanda translations for coreutils package.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# This file is distributed under the same license as the coreutils package.
+# Steve Murphy <murf@e-tools.com>, 2005.
+# Steve performed initial rough translation from compendium built from translations provided by the following translators:
+# Philibert Ndandali <ndandali@yahoo.fr>, 2005.
+# Viateur MUGENZI <muvia1@yahoo.fr>, 2005.
+# Noëlla Mupole <s24211045@tuks.co.za>, 2005.
+# Carole Karema <karemacarole@hotmail.com>, 2005.
+# JEAN BAPTISTE NGENDAHAYO <ngenda_denis@yahoo.co.uk>, 2005.
+# Augustin KIBERWA <akiberwa@yahoo.co.uk>, 2005.
+# Donatien NSENGIYUMVA <ndonatienuk@yahoo.co.uk>, 2005.
+# Antoine Bigirimana <antoine@e-tools.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 5.3.0\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2005-04-04 10:55-0700\n"
+"Last-Translator: Steven Michael Murphy <murf@e-tools.com>\n"
+"Language-Team: Kinyarwanda <translation-team-rw@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "Igenamiterere Uruhushya kugirango"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, fuzzy, c-format
+msgid "setting permissions for %s"
+msgstr "Igenamiterere Uruhushya kugirango"
+
+#: lib/argmatch.c:134
+#, fuzzy, c-format
+msgid "invalid argument %s for %s"
+msgstr "Sibyo kugirango"
+
+#: lib/argmatch.c:135
+#, fuzzy, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "kugirango"
+
+#: lib/argmatch.c:154
+#, fuzzy, c-format
+msgid "Valid arguments are:"
+msgstr "ingingo"
+
+# svtools/source\misc\errtxt.src:RID_ERRHDL.ERRCODE_CLASS_WRITE.text
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, fuzzy, c-format
+msgid "write error"
+msgstr "Kwandika ikosa"
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Sisitemu Ikosa"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr ""
+
+#: lib/file-type.c:39
+#, fuzzy
+msgid "regular empty file"
+msgstr "Ibisanzwe ubusa IDOSIYE"
+
+#: lib/file-type.c:39
+#, fuzzy
+msgid "regular file"
+msgstr "Ibisanzwe IDOSIYE"
+
+# svtools/source\dialogs\filedlg2.src:STR_FILEDLG_DIR.text
+#: lib/file-type.c:42
+#, fuzzy
+msgid "directory"
+msgstr "Ububiko"
+
+#: lib/file-type.c:45
+#, fuzzy
+msgid "block special file"
+msgstr "Funga Bidasanzwe IDOSIYE"
+
+#: lib/file-type.c:48
+#, fuzzy
+msgid "character special file"
+msgstr "Inyuguti Bidasanzwe IDOSIYE"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr ""
+
+#: lib/file-type.c:54
+#, fuzzy
+msgid "symbolic link"
+msgstr "Ihuza"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr ""
+
+#: lib/file-type.c:60
+#, fuzzy
+msgid "message queue"
+msgstr "Ubutumwa Umurongo"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr ""
+
+#: lib/file-type.c:66
+#, fuzzy
+msgid "shared memory object"
+msgstr "Ububiko Igikoresho"
+
+#: lib/file-type.c:69
+#, fuzzy
+msgid "typed memory object"
+msgstr "Ububiko Igikoresho"
+
+#: lib/file-type.c:71
+#, fuzzy
+msgid "weird file"
+msgstr "IDOSIYE"
+
+#: lib/gai_strerror.c:44
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "Idosiye OYA"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "Idosiye OYA"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr ""
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "Idosiye OYA"
+
+# svtools/source\misc\errtxt.src:RID_ERRHDL.ERRCODE_CLASS_WRITE.text
+#: lib/gai_strerror.c:54
+#, fuzzy
+msgid "System error"
+msgstr "Kwandika ikosa"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+#, fuzzy
+msgid "Unknown error"
+msgstr "Sisitemu Ikosa"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, fuzzy, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s:Ihitamo ni"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, fuzzy, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s:Ihitamo Kwemerera"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, fuzzy, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s:Ihitamo Kwemerera"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, fuzzy, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s:Ihitamo"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, fuzzy, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s:Ihitamo"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, fuzzy, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s:Ihitamo"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, fuzzy, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s:Ihitamo"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, fuzzy, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s:Sibyo Ihitamo"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, fuzzy, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s:Ihitamo"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, fuzzy, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s:Ihitamo ni"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, fuzzy, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s:Ihitamo Kwemerera"
+
+#: lib/human.c:477
+#, fuzzy
+msgid "block size"
+msgstr "Funga Ingano"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, fuzzy, c-format
+msgid "cannot change permissions of %s"
+msgstr "Guhindura>> Uruhushya Bya"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, fuzzy, c-format
+msgid "cannot create directory %s"
+msgstr "Kurema bushyinguro"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+#, fuzzy
+msgid "memory exhausted"
+msgstr "Ububiko"
+
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr "Kuri Icyabitswe KIGEZWEHO bushyinguro"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, fuzzy, c-format
+msgid "failed to return to initial working directory"
+msgstr "Byanze Kuri Garuka Kuri bushyinguro"
+
+# basctl/source\basicide\basidesh.src:RID_IMGBTN_REMOVEWATCH.text
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+#, fuzzy
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "'"
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "%s:Byanze"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s:Sibyo Ibisanzwe imvugo"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "Sibyo Inyuguti ishuri"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+#, fuzzy
+msgid "Invalid range end"
+msgstr "Ipaji Urutonde"
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "Ububiko"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s:Sibyo Ibisanzwe imvugo"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "Ikosa in Ibisanzwe imvugo Gushaka"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "%s:Sibyo Ibisanzwe imvugo"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "Ikosa in Ibisanzwe imvugo Gushaka"
+
+#: lib/root-dev-ino.h:40
+#, fuzzy, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr "ni Kuri ku"
+
+#: lib/root-dev-ino.h:44
+#, fuzzy, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr "ni Kuri ku Nka"
+
+#: lib/root-dev-ino.h:46
+#, fuzzy, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr "Gukoresha Oya Imizi Kuri iyi"
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr ""
+
+#: lib/unicodeio.c:151
+#, fuzzy
+msgid "iconv function not usable"
+msgstr "Umumaro OYA"
+
+#: lib/unicodeio.c:153
+#, fuzzy
+msgid "iconv function not available"
+msgstr "Umumaro OYA Bihari"
+
+#: lib/unicodeio.c:160
+#, fuzzy
+msgid "character out of range"
+msgstr "Inyuguti Inyuma Bya Urutonde"
+
+#: lib/unicodeio.c:224
+#, fuzzy, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "GUHINDURA U Kuri Inyuguti Gushyiraho"
+
+#: lib/unicodeio.c:226
+#, fuzzy, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "GUHINDURA U Kuri Inyuguti Gushyiraho"
+
+#: lib/userspec.c:107
+#, fuzzy
+msgid "invalid user"
+msgstr "Sibyo Ukoresha:"
+
+#: lib/userspec.c:108
+#, fuzzy
+msgid "invalid group"
+msgstr "Sibyo Itsinda"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "Sibyo Ukoresha:"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+#, fuzzy
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"Porogaramu ni Kigenga Na Cyangwa i Bya i Nka Verisiyo 2. Cyangwa ku Ihitamo "
+"Verisiyo"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, fuzzy, c-format
+msgid "Written by %s.\n"
+msgstr "ku"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid "Written by %s and %s.\n"
+msgstr "ku Na"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, fuzzy, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "ku Na"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr "ku Na"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr "ku Na"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr "ku Na"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr "ku Na"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr "ku Na"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr "ku Na"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr "ku Na Ibindi"
+
+#: lib/xfts.c:58
+#, fuzzy, c-format
+msgid "invalid argument: %s"
+msgstr "Inkoresha siyo"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, fuzzy, c-format
+msgid "string comparison failed"
+msgstr "Ikurikiranyanyuguti Byanze"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, fuzzy, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Kuri Akazi i"
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, fuzzy, c-format
+msgid "The strings compared were %s and %s."
+msgstr "Ikurikiranyanyuguti Na"
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "Ikurikiranyanyuguti Byanze"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "Sibyo Itariki"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "Sibyo Inyuguti ishuri"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%sni Binini"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, fuzzy, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "kugirango Birenzeho Ibisobanuro"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr "--Verisiyo Ibisohoka Verisiyo Ibisobanuro Na"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+#, fuzzy
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr "Oya Cyangwa Ryari: ni Gusoma Bisanzwe Iyinjiza"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr "Kuri"
+
+# 4952
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, fuzzy, c-format
+msgid "read error"
+msgstr "Ikosa ryo mu Isoma"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "Sibyo Iyinjiza Ibendera"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "Sibyo Isunika Ingano"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, fuzzy, c-format
+msgid "extra operand %s"
+msgstr "Birenga"
+
+#: src/base64.c:316 src/cat.c:785
+#, fuzzy, c-format
+msgid "closing standard input"
+msgstr "Bisanzwe Iyinjiza"
+
+#: src/basename.c:54
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr "Cyangwa"
+
+#: src/basename.c:59
+#, fuzzy
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr "Na: Nyobora bushyinguro Cyavanyweho Gukuraho... a"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, fuzzy, c-format
+msgid "missing operand"
+msgstr "Ibuze"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr ""
+
+#: src/cat.c:99
+#, fuzzy
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"S Cyangwa Bisanzwe Iyinjiza Kuri Bisanzwe Ibisohoka A Garagaza Byose Kuri B "
+"Umubare Umubare Ibisohoka E Kuri E Garagaza Kugaragaza ku Impera Bya N "
+"Umubare Umubare Byose Ibisohoka S Ahatanditseho Nta narimwe Birenzeho UMWE "
+"Ahatanditseho"
+
+#: src/cat.c:109
+#, fuzzy
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+"-T Kuri Garagaza Amasimbuka Kugaragaza Inyuguti Nka u v Garagaza Gukoresha "
+"Na kugirango Na"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+#: src/cat.c:333
+#, fuzzy, c-format
+msgid "cannot do ioctl on %s"
+msgstr "ku"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, fuzzy, c-format
+msgid "standard output"
+msgstr "Bisanzwe Ibisohoka"
+
+#: src/cat.c:720
+#, fuzzy, c-format
+msgid "%s: input file is output file"
+msgstr "%s:Iyinjiza IDOSIYE ni Ibisohoka IDOSIYE"
+
+#: src/chgrp.c:95 src/install.c:611
+#, fuzzy, c-format
+msgid "invalid group %s"
+msgstr "Sibyo Itsinda"
+
+#: src/chgrp.c:112
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr "Cyangwa Indango"
+
+#: src/chgrp.c:117
+#, fuzzy
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"i Itsinda Bya Kuri Indango Guhindura>> i Itsinda Bya Kuri Bya C Amahinduka "
+"nka Icyegeranyo Ryari: a Guhindura>> ni i Bya Ihuza i Ihuza iyi ni i "
+"Mburabuzi"
+
+#: src/chgrp.c:125 src/chown.c:106
+#, fuzzy
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr "-h Oya Ihuza Bya IDOSIYE ku Guhindura>> Bya a"
+
+#: src/chgrp.c:130 src/chown.c:118
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr "--Oya Imizi OYA i Mburabuzi Imizi Kuri ku"
+
+#: src/chgrp.c:134
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+"-F Ikosa Indango Gukoresha Itsinda i ku Idosiye Na ububiko bw'amaderese v "
+"Ibisohoka a kugirango buri IDOSIYE"
+
+#: src/chgrp.c:142 src/chown.c:130
+#, fuzzy
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+"Amahitamo Guhindura a ni Ryari: i ni Birenzeho ni i INGARUKA H NIBA a "
+"Komandi: Umurongo ni a Kuri a bushyinguro buri Ihuza Kuri a OYA amahuza "
+"Mburabuzi"
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, fuzzy, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr "-H Cyangwa"
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, fuzzy, c-format
+msgid "missing operand after %s"
+msgstr "Ibuze Nyuma"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, fuzzy, c-format
+msgid "failed to get attributes of %s"
+msgstr "Byanze Kuri Kubona Ibiranga Bya"
+
+#: src/chmod.c:128
+#, fuzzy, c-format
+msgid "getting new attributes of %s"
+msgstr "Gishya Ibiranga Bya"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, fuzzy, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "Ihuza"
+
+#: src/chmod.c:160
+#, fuzzy, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "Ubwoko Bya Byahinduwe Kuri"
+
+#: src/chmod.c:163
+#, fuzzy, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "Byanze Kuri Guhindura>> Ubwoko Bya Kuri"
+
+#: src/chmod.c:166
+#, fuzzy, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "Ubwoko Bya Nka"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr ""
+
+# basctl/source\basicide\basidesh.src:RID_IMGBTN_REMOVEWATCH.text
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, fuzzy, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, fuzzy, c-format
+msgid "cannot read directory %s"
+msgstr "Gusoma bushyinguro"
+
+#: src/chmod.c:251
+#, fuzzy, c-format
+msgid "changing permissions of %s"
+msgstr "Uruhushya Bya"
+
+#: src/chmod.c:286
+#, fuzzy, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "Igenamiterere Uruhushya kugirango"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, fuzzy, c-format
+msgid "fts_read failed"
+msgstr "Byanze"
+
+#: src/chmod.c:345
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr "Cyangwa Cyangwa Indango"
+
+#: src/chmod.c:351
+#, fuzzy
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr "i Ubwoko Bya Kuri C Amahinduka nka Icyegeranyo Ryari: a Guhindura>> ni"
+
+#: src/chmod.c:356
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr "--Oya Imizi OYA i Mburabuzi Imizi Kuri ku"
+
+#: src/chmod.c:360
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+"-F Ikosa v Ibisohoka a kugirango buri IDOSIYE Indango Gukoresha Ubwoko Bya "
+"Guhindura>> Idosiye Na ububiko bw'amaderese"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, fuzzy, c-format
+msgid "cannot combine mode and --reference options"
+msgstr "Kuvanga Ubwoko Na Indango Amahitamo"
+
+#: src/chmod.c:510
+#, fuzzy, c-format
+msgid "invalid mode: %s"
+msgstr "Sibyo Ubwoko"
+
+#: src/chown-core.c:147
+#, fuzzy, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "Byahinduwe Bya Kuri"
+
+#: src/chown-core.c:148
+#, fuzzy, c-format
+msgid "changed group of %s to %s\n"
+msgstr "Byahinduwe Itsinda Bya Kuri"
+
+#: src/chown-core.c:149
+#, fuzzy, c-format
+msgid "no change to ownership of %s\n"
+msgstr "Oya Guhindura>> Kuri Bya"
+
+#: src/chown-core.c:152
+#, fuzzy, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "Byanze Kuri Guhindura>> Bya Kuri"
+
+#: src/chown-core.c:153
+#, fuzzy, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "Byanze Kuri Guhindura>> Itsinda Bya Kuri"
+
+#: src/chown-core.c:154
+#, fuzzy, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "Byanze Kuri Guhindura>> Bya"
+
+#: src/chown-core.c:157
+#, fuzzy, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "Bya Nka"
+
+#: src/chown-core.c:158
+#, fuzzy, c-format
+msgid "group of %s retained as %s\n"
+msgstr "Itsinda Bya Nka"
+
+#: src/chown-core.c:159
+#, fuzzy, c-format
+msgid "ownership of %s retained\n"
+msgstr "Bya"
+
+#: src/chown-core.c:344
+#, c-format
+msgid "cannot dereference %s"
+msgstr ""
+
+#: src/chown-core.c:432
+#, fuzzy, c-format
+msgid "changing ownership of %s"
+msgstr "Bya"
+
+#: src/chown-core.c:433
+#, fuzzy, c-format
+msgid "changing group of %s"
+msgstr "Itsinda Bya"
+
+#: src/chown.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr "Cyangwa Indango"
+
+#: src/chown.c:98
+#, fuzzy
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"i Na Cyangwa Itsinda Bya Kuri Na Cyangwa Indango Guhindura>> i Na Itsinda "
+"Bya Kuri Bya C Amahinduka nka Icyegeranyo Ryari: a Guhindura>> ni i Bya "
+"Ihuza i Ihuza iyi ni i Mburabuzi"
+
+#: src/chown.c:111
+#, fuzzy
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+"--Bivuye Guhindura>> i Na Cyangwa Itsinda Bya IDOSIYE KIGEZWEHO Na Cyangwa "
+"Itsinda BIHUYE Gicurasi in a ni OYA Bya ngombwa kugirango i Ikiranga"
+
+#: src/chown.c:122
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+"-F Ikosa Indango Gukoresha Na Itsinda i ku Idosiye Na ububiko bw'amaderese v "
+"Ibisohoka a kugirango buri IDOSIYE"
+
+#: src/chown.c:144
+#, fuzzy
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"ni NIBA Ibuze ni NIBA Ibuze Ifashayinjira Itsinda NIBA ku a a Na Gicurasi "
+"Bikurikije umubare Nka Nka"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr "Cyangwa"
+
+#: src/chroot.c:50
+#, fuzzy
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr "Na: Imizi bushyinguro Gushyiraho Kuri"
+
+#: src/chroot.c:56
+#, fuzzy
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr "Oya Komandi: ni Gukoresha Mburabuzi"
+
+#: src/chroot.c:89
+#, fuzzy, c-format
+msgid "cannot change root directory to %s"
+msgstr "Guhindura>> Imizi bushyinguro Kuri"
+
+#: src/chroot.c:92
+#, fuzzy, c-format
+msgid "cannot chdir to root directory"
+msgstr "Kuri Imizi bushyinguro"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, fuzzy, c-format
+msgid "cannot run command %s"
+msgstr "Gukoresha Komandi:"
+
+#: src/cksum.c:217
+#, fuzzy, c-format
+msgid "%s: file too long"
+msgstr "%s:IDOSIYE"
+
+#: src/cksum.c:265
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr "Cyangwa"
+
+#: src/cksum.c:270
+#, fuzzy
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr "Na Bayite Bya"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr ""
+
+#: src/comm.c:77
+#, fuzzy
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr "bishunguwe Idosiye Na Umurongo ku Umurongo"
+
+#: src/comm.c:80
+#, fuzzy
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+"Oya Amahitamo Inkingi Ibisohoka Cyo nyine Kuri Inkingi Kirimo Imirongo Cyo "
+"nyine Kuri Na Inkingi Kirimo Imirongo Kuri Byombi Idosiye"
+
+#: src/comm.c:86
+#, fuzzy
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"-1. Imirongo Cyo nyine Kuri 2. Imirongo Cyo nyine Kuri 3. Imirongo "
+"Kugaragara in Byombi"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, fuzzy, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "Byanze Kuri kugirango"
+
+#: src/copy.c:222
+#, fuzzy, c-format
+msgid "failed to lookup file %s"
+msgstr "Byanze Kuri GUSHAKISHA IDOSIYE"
+
+#: src/copy.c:227
+#, fuzzy, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "Byanze Kuri kugirango"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, fuzzy, c-format
+msgid "cannot open %s for reading"
+msgstr "Gufungura kugirango"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr ""
+
+#: src/copy.c:293
+#, fuzzy, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "Gusimbuka: %s%s IDOSIYE Nka"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, fuzzy, c-format
+msgid "cannot remove %s"
+msgstr "Gukuraho..."
+
+# 5072
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, fuzzy, c-format
+msgid "removed %s\n"
+msgstr "Cyavanyweho"
+
+#: src/copy.c:329
+#, fuzzy, c-format
+msgid "cannot create regular file %s"
+msgstr "Kurema Ibisanzwe IDOSIYE"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr ""
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr ""
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr ""
+
+#: src/copy.c:523 src/copy.c:1823
+#, fuzzy, c-format
+msgid "preserving times for %s"
+msgstr "Times kugirango"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr ""
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s:Guhindura Ubwoko"
+
+#: src/copy.c:812
+#, fuzzy, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s:Guhindura"
+
+#: src/copy.c:994
+#, fuzzy, c-format
+msgid " (backup: %s)"
+msgstr "(Inyibutsa"
+
+#: src/copy.c:1048
+#, fuzzy, c-format
+msgid "omitting directory %s"
+msgstr "bushyinguro"
+
+#: src/copy.c:1062
+#, fuzzy, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "Iburira Inkomoko IDOSIYE Birenzeho Rimwe"
+
+#: src/copy.c:1093 src/ln.c:209
+#, fuzzy, c-format
+msgid "%s and %s are the same file"
+msgstr "%sNa i IDOSIYE"
+
+#: src/copy.c:1149
+#, fuzzy, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "Guhindura bushyinguro Na: bushyinguro"
+
+#: src/copy.c:1167
+#, fuzzy, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "OYA Guhindura Byaremwe Na:"
+
+#: src/copy.c:1185
+#, fuzzy, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "Guhindura bushyinguro Na: bushyinguro"
+
+#: src/copy.c:1223
+#, fuzzy, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "Kwimura bushyinguro bushyinguro"
+
+#: src/copy.c:1253
+#, fuzzy, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "Hejuru Inkomoko OYA"
+
+#: src/copy.c:1254
+#, fuzzy, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "Hejuru Inkomoko OYA"
+
+#: src/copy.c:1273 src/ln.c:239
+#, fuzzy, c-format
+msgid "cannot backup %s"
+msgstr "Inyibutsa"
+
+#: src/copy.c:1372
+#, fuzzy, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "Gukoporora a bushyinguro"
+
+#: src/copy.c:1389
+#, fuzzy, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "OYA Kurema Ikomeye Ihuza Kuri bushyinguro"
+
+#: src/copy.c:1414
+#, fuzzy, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "Kurema Ikomeye Ihuza Kuri"
+
+#: src/copy.c:1459
+#, fuzzy, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "Kwimura Kuri a Bya"
+
+#: src/copy.c:1502
+#, fuzzy, c-format
+msgid "cannot move %s to %s"
+msgstr "Kwimura Kuri"
+
+#: src/copy.c:1514
+#, fuzzy, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr "APAREYE Kwimura Byanze Kuri Kuri Gukuraho... Intego"
+
+#: src/copy.c:1553
+#, fuzzy, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "Gukoporora Ihuza"
+
+#: src/copy.c:1654
+#, fuzzy, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr "%s:Ubwoko Bifitanye isano amahuza in KIGEZWEHO bushyinguro"
+
+#: src/copy.c:1661
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "Kurema Ihuza Kuri"
+
+#: src/copy.c:1686
+#, fuzzy, c-format
+msgid "cannot create link %s"
+msgstr "Kurema Ihuza"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, fuzzy, c-format
+msgid "cannot create fifo %s"
+msgstr "Kurema"
+
+#: src/copy.c:1722
+#, fuzzy, c-format
+msgid "cannot create special file %s"
+msgstr "Kurema Bidasanzwe IDOSIYE"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, fuzzy, c-format
+msgid "cannot read symbolic link %s"
+msgstr "Gusoma Ihuza"
+
+#: src/copy.c:1759
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s"
+msgstr "Kurema Ihuza"
+
+#: src/copy.c:1790
+#, fuzzy, c-format
+msgid "%s has unknown file type"
+msgstr "%sKitazwi IDOSIYE Ubwoko"
+
+#: src/copy.c:1910 src/ln.c:308
+#, fuzzy, c-format
+msgid "cannot un-backup %s"
+msgstr "Inyibutsa"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr ""
+
+#: src/cp.c:157 src/mv.c:284
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr "Cyangwa Cyangwa T"
+
+#: src/cp.c:163
+#, fuzzy
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr "Kuri Cyangwa Igikubo S Kuri"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+#, fuzzy
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr "ingingo Kuri Amahitamo kugirango Amahitamo"
+
+#: src/cp.c:170
+#, fuzzy
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+"-a Nka Inyibutsa Ubwoko a Inyibutsa Bya Ishyika B nka Inyibutsa OYA Kwemera "
+"Gukoporora Ibigize Gukoporora Ibigize Bya Bidasanzwe Idosiye Ryari: D Nka Oya"
+
+#: src/cp.c:177
+#, fuzzy
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+"--Oya Nta narimwe F NIBA Ishyika IDOSIYE Gukuraho... Na i Biganira "
+"Urwinjiriro Mbere H Komandi: Umurongo"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+#, fuzzy
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+"-L Ihuza Ihuza Idosiye Bya Buri gihe P Nka Ubwoko i Ibiranga Mburabuzi "
+"Ubwoko NIBA Ibiranga amahuza"
+
+#: src/cp.c:196
+#, fuzzy
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr "--Oya i Kongeraho... Inkomoko Inzira Kuri Nka Oya"
+
+#: src/cp.c:200
+#, fuzzy
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+"-R Gukoporora ububiko bw'amaderese Gukuraho... Ishyika Gukuraho... Ishyika "
+"IDOSIYE Kuri Gufungura Inyuranyamigaragarire Na:"
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+"--Subiza Yego Oya Ikibazo# Kuri i Urwinjiriro Ibyerekeye Ishyika Igenzura "
+"Bya Gukuraho... Bivuye"
+
+#: src/cp.c:210
+#, fuzzy
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+"-S Ihuza Ubwoko amahuza Bya Ingereka i Inyibutsa T Intego bushyinguro "
+"Gukoporora Byose ingingo Oya Intego bushyinguro Nka a Bisanzwe"
+
+#: src/cp.c:216
+#, fuzzy
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+"-u Kuvugurura Gukoporora Ryari: i IDOSIYE ni i Ishyika IDOSIYE Cyangwa "
+"Ryari: Ishyika IDOSIYE ni v ni X IDOSIYE Sisitemu ku iyi IDOSIYE"
+
+#: src/cp.c:225
+#, fuzzy
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"Mburabuzi Idosiye ku a Na IDOSIYE ni Nka ni i ku Ikiyega Buri gihe Kuri "
+"Kurema a i IDOSIYE Kirimo a Bya Zeru Bayite Nta narimwe Kuri Bya Idosiye"
+
+#: src/cp.c:234
+#, fuzzy
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Inyibutsa Ingereka ni Gushyiraho Na: Ingereka Cyangwa Verisiyo Igenzura "
+"Uburyo Gicurasi Byahiswemo Biturutse i Inyibutsa Ihitamo Cyangwa "
+"IMPINDURAGACIRO i Uduciro"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+#, fuzzy
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+"Ntacyo Bidakora Nta narimwe Ubwoko Ibyashyinguwe ATARIIGIHARWE NIBA "
+"Inyibutsa ni Iriho Imibare T Ubwoko Iriho Imibare Iriho Imibare NIBA Iriho "
+"Imibare Ibyashyinguwe Byoroheje Byoroheje Nta narimwe Buri gihe Ubwoko "
+"Byoroheje"
+
+#: src/cp.c:246
+#, fuzzy
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"a Bidasanzwe a Inyibutsa Bya Ryari: i Na Na Na i Izina: kugirango Ibisanzwe "
+"IDOSIYE"
+
+#: src/cp.c:314
+#, fuzzy, c-format
+msgid "failed to preserve times for %s"
+msgstr "Byanze Kuri Times kugirango"
+
+#: src/cp.c:340
+#, fuzzy, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "Byanze Kuri Uruhushya kugirango"
+
+#: src/cp.c:456
+#, fuzzy, c-format
+msgid "cannot make directory %s"
+msgstr "Ubwoko bushyinguro"
+
+#: src/cp.c:505 src/cp.c:524
+#, fuzzy, c-format
+msgid "%s exists but is not a directory"
+msgstr "%sni OYA a bushyinguro"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr ""
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, fuzzy, c-format
+msgid "missing file operand"
+msgstr "Ibuze IDOSIYE"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, fuzzy, c-format
+msgid "missing destination file operand after %s"
+msgstr "Ibuze Ishyika IDOSIYE Nyuma"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, fuzzy, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr "Kuvanga Intego bushyinguro T Na Oya Intego bushyinguro"
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, fuzzy, c-format
+msgid "target %s is not a directory"
+msgstr "Intego ni OYA a bushyinguro"
+
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "Ryari: Inzira i Ishyika a bushyinguro"
+
+#: src/cp.c:967 src/mv.c:384
+#, fuzzy, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr "i Kwemerera Ibuze Ihitamo ni Bitemewe. Gukoresha Ongera ugerageze"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, fuzzy, c-format
+msgid "multiple target directories specified"
+msgstr "Igikubo Intego ububiko bw'amaderese"
+
+#: src/cp.c:1030
+#, fuzzy, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "Ubwoko Byombi Ikomeye Na amahuza"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+#, fuzzy
+msgid "backup type"
+msgstr "Inyibutsa Ubwoko"
+
+#: src/csplit.c:541
+#, fuzzy, c-format
+msgid "input disappeared"
+msgstr "Iyinjiza"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, fuzzy, c-format
+msgid "%s: line number out of range"
+msgstr "%s:Umurongo Umubare Inyuma Bya Urutonde"
+
+#: src/csplit.c:709
+#, fuzzy, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s:`%s':Umurongo Umubare Inyuma Bya Urutonde"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, fuzzy, c-format
+msgid " on repetition %s\n"
+msgstr "ku"
+
+#: src/csplit.c:755
+#, fuzzy, c-format
+msgid "%s: %s: match not found"
+msgstr "%s:`%s':BIHUYE OYA Byabonetse"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, fuzzy, c-format
+msgid "error in regular expression search"
+msgstr "Ikosa in Ibisanzwe imvugo Gushaka"
+
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "Kwandika Ikosa kugirango"
+
+#: src/csplit.c:1060
+#, fuzzy, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s:Umubare wuzuye Ikitezwe: Nyuma"
+
+#: src/csplit.c:1076
+#, fuzzy, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s:`}'ni Bya ngombwa in Gusubiramo IBARA"
+
+#: src/csplit.c:1086
+#, fuzzy, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}:Umubare wuzuye Bya ngombwa hagati Na"
+
+#: src/csplit.c:1113
+#, fuzzy, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s:Ibuze"
+
+#: src/csplit.c:1130
+#, fuzzy, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s:Sibyo Ibisanzwe imvugo"
+
+#: src/csplit.c:1163
+#, fuzzy, c-format
+msgid "%s: invalid pattern"
+msgstr "%s:Sibyo Ishusho"
+
+#: src/csplit.c:1166
+#, fuzzy, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s:Umurongo Umubare Biruta Zeru"
+
+#: src/csplit.c:1172
+#, fuzzy, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "Umurongo Umubare ni Gitoya Umurongo Umubare"
+
+#: src/csplit.c:1178
+#, fuzzy, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "Iburira Umurongo Umubare ni i Nka Umurongo Umubare"
+
+#: src/csplit.c:1231
+#, fuzzy, c-format
+msgid "invalid format width"
+msgstr "Sibyo Imiterere Ubugari"
+
+#: src/csplit.c:1252
+#, fuzzy, c-format
+msgid "invalid format precision"
+msgstr "Sibyo Imiterere"
+
+#: src/csplit.c:1273
+#, fuzzy, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "Ibuze Ihindurangero in Ingereka"
+
+#: src/csplit.c:1279
+#, fuzzy, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "Sibyo Ihindurangero in Ingereka"
+
+#: src/csplit.c:1282
+#, fuzzy, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "Sibyo Ihindurangero in Ingereka"
+
+#: src/csplit.c:1305
+#, fuzzy, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "Ihindurangero in Ingereka"
+
+#: src/csplit.c:1320
+#, fuzzy, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "Ibuze Ihindurangero in Ingereka"
+
+#: src/csplit.c:1364
+#, fuzzy, c-format
+msgid "%s: invalid number"
+msgstr "%s:Sibyo Umubare"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr ""
+
+#: src/csplit.c:1478
+#, fuzzy
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr "Bya ku S Kuri Idosiye Na Ibisohoka Bayite Bya Kuri Bisanzwe Ibisohoka"
+
+#: src/csplit.c:1486
+#, fuzzy, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+"-B Ingereka Imiterere Gukoresha Bya F Imbanziriza Gukoresha Bya K Gumana: "
+"Idosiye OYA Gukuraho... Ibisohoka Idosiye ku"
+
+#: src/csplit.c:1491
+#, fuzzy
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+"-N Gukoresha Umubare Bya Bya S OYA Gucapa Bya Ibisohoka IDOSIYE Z ubusa "
+"Idosiye Gukuraho... ubusa Ibisohoka"
+
+#: src/csplit.c:1498
+#, fuzzy
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr "Bisanzwe Iyinjiza NIBA ni Gicurasi"
+
+#: src/csplit.c:1502
+#, fuzzy
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"Gukoporora Hejuru Kuri OYA Umurongo Gukoporora Hejuru Kuri OYA a Kuri OYA a "
+"Gusubiramo i Ibanjirije Ishusho Umubare Bya Gusubiramo i Ibanjirije Ishusho "
+"Nka Times Nka Umurongo ni a Bya ngombwa Cyangwa ku a Umubare wuzuye"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr ""
+
+#: src/cut.c:192
+#, fuzzy
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr "Byahiswemo Bya Imirongo Bivuye Kuri Bisanzwe Ibisohoka"
+
+#: src/cut.c:199
+#, fuzzy
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+"-B Bayite Guhitamo C Inyuguti Guhitamo D Gukoresha Bya kugirango Umwanya"
+
+#: src/cut.c:204
+#, fuzzy
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+"-F Imyanya Guhitamo Imyanya Gucapa Kirimo Oya Inyuguti i S Ihitamo ni N"
+
+#: src/cut.c:210
+#, fuzzy
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr "--i Gushyiraho Bya Byahiswemo Bayite Cyangwa Imyanya"
+
+#: src/cut.c:214
+#, fuzzy
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+"-S OYA Gucapa Imirongo OYA Ibisohoka Gukoresha Nka i Ibisohoka i Mburabuzi "
+"ni Kuri Gukoresha i Iyinjiza"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+#, fuzzy
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"Na Bya B C Cyangwa F ni Hejuru Bya Cyangwa Ibice ku Iyinjiza ni i "
+"Itondekanya ni Gusoma Na ni Rimwe Urutonde ni Bya Bayite Inyuguti Cyangwa "
+"Umwanya Bivuye Bivuye Bayite Inyuguti Cyangwa Umwanya Kuri Impera Bya Bivuye "
+"Kuri Bayite Inyuguti Cyangwa Bivuye Itangira Kuri Bayite Inyuguti Cyangwa "
+"Oya Cyangwa Ryari: ni Gusoma Bisanzwe Iyinjiza"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+#, fuzzy
+msgid "invalid byte or field list"
+msgstr "Sibyo Bayite Cyangwa Umwanya Urutonde"
+
+#: src/cut.c:469
+#, fuzzy, c-format
+msgid "byte offset %s is too large"
+msgstr "Bayite Nta- boneza ni Binini"
+
+#: src/cut.c:472
+#, fuzzy, c-format
+msgid "field number %s is too large"
+msgstr "Umwanya Umubare ni Binini"
+
+#: src/cut.c:776 src/cut.c:784
+#, fuzzy
+msgid "only one type of list may be specified"
+msgstr "Ubwoko Bya Urutonde Gicurasi"
+
+#: src/cut.c:793
+#, fuzzy
+msgid "the delimiter must be a single character"
+msgstr "i a UMWE Inyuguti"
+
+#: src/cut.c:828
+#, fuzzy
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "a Urutonde Bya Bayite Inyuguti Cyangwa Imyanya"
+
+#: src/cut.c:831
+#, fuzzy
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "Iyinjiza Gicurasi Ryari: ku Imyanya"
+
+#: src/cut.c:835
+#, fuzzy
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr "Imirongo Ryari: ku Imyanya"
+
+#: src/cut.c:851
+#, fuzzy
+msgid "missing list of fields"
+msgstr "Ibuze Urutonde Bya Imyanya"
+
+#: src/cut.c:853
+#, fuzzy
+msgid "missing list of positions"
+msgstr "Ibuze Urutonde Bya imyanya"
+
+#: src/date.c:132
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr "Cyangwa u Ky'isi yose"
+
+#: src/date.c:137
+#, fuzzy
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"i KIGEZWEHO Igihe in i Cyangwa Gushyiraho i Sisitemu Itariki D Itariki "
+"Kugaragaza Igihe ku OYA F IDOSIYE nka Itariki Rimwe kugirango Umurongo Bya "
+"Ibisohoka Itariki Igihe in Imiterere kugirango Itariki i Mburabuzi Cyangwa "
+"kugirango Itariki Igihe Kuri i"
+
+#: src/date.c:143
+#, fuzzy
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+"-R Indango Kugaragaza i Iheruka Igihe Bya Ibisohoka Itariki S Gushyiraho "
+"Gushyiraho Igihe ku u Ky'isi yose Gucapa Cyangwa Gushyiraho"
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+#, fuzzy
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+"."
+
+#: src/date.c:167
+#, fuzzy
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+"%AProject- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+"."
+
+#: src/date.c:173
+#, fuzzy
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+"%CProject- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+"."
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+#, fuzzy
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+"%hProject- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+"."
+
+#: src/date.c:190
+#, fuzzy
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+"%kProject- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+"."
+
+#: src/date.c:196
+#, fuzzy
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+"%nProject- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+"."
+
+#: src/date.c:205
+#, fuzzy
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+"%SProject- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+"."
+
+#: src/date.c:211
+#, fuzzy
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+"%UProject- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+"."
+
+#: src/date.c:217
+#, fuzzy
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+"%xProject- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+"."
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, fuzzy, c-format
+msgid "standard input"
+msgstr "Bisanzwe Iyinjiza"
+
+#: src/date.c:297 src/date.c:517
+#, fuzzy, c-format
+msgid "invalid date %s"
+msgstr "Sibyo Itariki"
+
+#: src/date.c:408 src/date.c:442
+#, fuzzy, c-format
+msgid "multiple output formats specified"
+msgstr "Igikubo Ibisohoka Idosiye"
+
+#: src/date.c:420
+#, fuzzy, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "i Amahitamo Kuri Amatariki kugirango Icapa..."
+
+#: src/date.c:427
+#, fuzzy, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr "i Amahitamo Kuri Gucapa Na Gushyiraho i Igihe Gicurasi OYA"
+
+#: src/date.c:448
+#, fuzzy, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"i a Nyobora ikoresha Ihitamo Kuri Itariki S a Imiterere Ikurikiranyanyuguti "
+"Itangiriro Na:"
+
+#: src/date.c:525
+#, fuzzy, c-format
+msgid "cannot set date"
+msgstr "Gushyiraho Itariki"
+
+#: src/date.c:548 src/du.c:425
+#, fuzzy, c-format
+msgid "time %s is out of range"
+msgstr "Igihe ni Inyuma Bya Urutonde"
+
+#: src/dd.c:404
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr "Cyangwa"
+
+#: src/dd.c:409
+#, fuzzy
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"a IDOSIYE Guhindura.... Na Ihinduramiterere Kuri i Na GUHINDURA Bayite ku a "
+"GUHINDURA i IDOSIYE Nka i Akitso IKIMENYETSO IBARA Gukoporora Iyinjiza "
+"Gusoma Bayite ku a"
+
+#: src/dd.c:418
+#, fuzzy
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+"NIBA Gusoma Bivuye Bya Gusoma Nka i Akitso IKIMENYETSO Kwandika Bayite ku a "
+"Bya Kwandika Kuri Bya Kwandika Nka i Akitso IKIMENYETSO ku Gutangira Bya ku "
+"Gutangira Bya Imimerere"
+
+#: src/dd.c:428
+#, fuzzy
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"Na Gicurasi ku i Imigereka C 1. W 2. B 1000 1000 1000 1000 1000 1000 Na ku "
+"kugirango E IKIMENYETSO Gicurasi"
+
+#: src/dd.c:437
+#, fuzzy
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+"ASCII Bivuye Kuri Bivuye Kuri Bivuye Kuri Funga Ibyabitswe Na: Imyanya Kuri "
+"Gusimbura Imyanya in Ingano Ibyabitswe Na: Guhindura>> Nkuru Kuri Ntoya"
+
+#: src/dd.c:445
+#, fuzzy
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+"OYA Kurema i Ibisohoka NIBA i Ibisohoka IDOSIYE OYA i Ibisohoka Guhindura>> "
+"Ntoya Kuri Nkuru buri Bya Iyinjiza urifuzagukomeza Nyuma Gusoma buri "
+"Iyinjiza Funga Na: Kuri Ingano Ryari: Na: Funga Cyangwa Na: Imyanya Kwandika "
+"Ibisohoka IDOSIYE Ibyatanzwe Mbere Kwandika"
+
+#: src/dd.c:452
+#, fuzzy
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+"OYA Kurema i Ibisohoka NIBA i Ibisohoka IDOSIYE OYA i Ibisohoka Guhindura>> "
+"Ntoya Kuri Nkuru buri Bya Iyinjiza urifuzagukomeza Nyuma Gusoma buri "
+"Iyinjiza Funga Na: Kuri Ingano Ryari: Na: Funga Cyangwa Na: Imyanya Kwandika "
+"Ibisohoka IDOSIYE Ibyatanzwe Mbere Kwandika"
+
+#: src/dd.c:459
+#, fuzzy
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+"IKIMENYETSO Gicurasi Kongeraho... Kongeraho... Ubwoko kugirango Ibisohoka"
+
+#: src/dd.c:466
+#, fuzzy
+msgid " direct use direct I/O for data\n"
+msgstr "Gukoresha kugirango"
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "Gukoresha kugirango"
+
+#: src/dd.c:470
+#, fuzzy
+msgid " dsync use synchronized I/O for data\n"
+msgstr "Gukoresha kugirango"
+
+#: src/dd.c:472
+#, fuzzy
+msgid " sync likewise, but also for metadata\n"
+msgstr "kugirango"
+
+#: src/dd.c:474
+#, fuzzy
+msgid " nonblock use non-blocking I/O\n"
+msgstr "Gukoresha"
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+#, fuzzy
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr "OYA Kugenera... Bivuye"
+
+#: src/dd.c:481
+#, fuzzy
+msgid " nofollow do not follow symlinks\n"
+msgstr "OYA"
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+#, fuzzy
+msgid " binary use binary I/O for data\n"
+msgstr "Gukoresha kugirango"
+
+#: src/dd.c:487
+#, fuzzy
+msgid " text use text I/O for data\n"
+msgstr "Gukoresha kugirango"
+
+#: src/dd.c:491
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+"a Kuri a Sitatisitiki Kuri Bisanzwe Ikosa Hanyuma Kuri Gusubiramo NIBA Zeru "
+"Bya 1. 0 Ibyabitswe 0 Ibyabitswe Bayite 9 4. amasogonda"
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "Icyabitswe"
+msgstr[1] "Icyabitswe"
+
+#: src/dd.c:565
+#, fuzzy, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] "%sBayite"
+
+#: src/dd.c:583
+#, fuzzy
+msgid "Infinity B"
+msgstr "iherezo "
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, fuzzy, c-format
+msgid ", %g s, %s/s\n"
+msgstr ",%gISEGONDA"
+
+#: src/dd.c:604
+#, fuzzy, c-format
+msgid "closing input file %s"
+msgstr "Iyinjiza IDOSIYE"
+
+#: src/dd.c:611
+#, fuzzy, c-format
+msgid "closing output file %s"
+msgstr "Ibisohoka IDOSIYE"
+
+#: src/dd.c:791 src/dd.c:1455
+#, fuzzy, c-format
+msgid "writing to %s"
+msgstr "Kuri"
+
+#: src/dd.c:886
+#, c-format
+msgid "unrecognized operand %s"
+msgstr ""
+
+#: src/dd.c:897
+#, fuzzy, c-format
+msgid "invalid conversion: %s"
+msgstr "Sibyo Ihindurangero"
+
+#: src/dd.c:900
+#, fuzzy, c-format
+msgid "invalid input flag: %s"
+msgstr "Sibyo Iyinjiza Ibendera"
+
+#: src/dd.c:903
+#, fuzzy, c-format
+msgid "invalid output flag: %s"
+msgstr "Sibyo Ibisohoka Ibendera"
+
+#: src/dd.c:906
+#, fuzzy, c-format
+msgid "invalid status flag: %s"
+msgstr "Sibyo Imimerere Ibendera"
+
+#: src/dd.c:942
+#, c-format
+msgid "unrecognized operand %s=%s"
+msgstr ""
+
+# sch/source\ui\app\strings.src:STR_INVALID_NUMBER.text
+#: src/dd.c:948
+#, fuzzy, c-format
+msgid "invalid number %s"
+msgstr "Umubare utari wo"
+
+#: src/dd.c:971
+#, fuzzy, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr "Kuvanga Bya ASCII"
+
+#: src/dd.c:973
+#, fuzzy, c-format
+msgid "cannot combine block and unblock"
+msgstr "Kuvanga Funga Na"
+
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "Kuvanga Na"
+
+#: src/dd.c:977
+#, fuzzy, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "Kuvanga Na"
+
+#: src/dd.c:1123
+#, fuzzy, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr "Iburira kugirango IDOSIYE Bya sys h kugirango i Urutonde Bya"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, c-format
+msgid "%s: cannot seek"
+msgstr ""
+
+#: src/dd.c:1217
+#, fuzzy, c-format
+msgid "offset overflow while reading file %s"
+msgstr "Nta- boneza Byarenze urugero IDOSIYE"
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "Iburira IDOSIYE Nta- boneza Nyuma Byanze Gusoma"
+
+#: src/dd.c:1233
+#, fuzzy, c-format
+msgid "cannot work around kernel bug after all"
+msgstr "Akazi Nyuma Byose"
+
+#: src/dd.c:1376
+#, fuzzy, c-format
+msgid "setting flags for %s"
+msgstr "Igenamiterere Amabendera kugirango"
+
+#: src/dd.c:1613
+#, fuzzy, c-format
+msgid "fdatasync failed for %s"
+msgstr "Byanze kugirango"
+
+#: src/dd.c:1623
+#, fuzzy, c-format
+msgid "fsync failed for %s"
+msgstr "Byanze kugirango"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, fuzzy, c-format
+msgid "opening %s"
+msgstr "Gufungura %s%S"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, fuzzy, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "Bayite in Ibisohoka IDOSIYE"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr ""
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr ""
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr ""
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr ""
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr ""
+
+#: src/df.c:165
+#, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr ""
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr ""
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr ""
+
+#: src/df.c:468
+#, fuzzy, c-format
+msgid "cannot get current directory"
+msgstr "Kubona KIGEZWEHO bushyinguro"
+
+# svtools/source\dialogs\filedlg2.src:STR_FILEDLG_CANTCHDIR.text
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, fuzzy, c-format
+msgid "cannot change to directory %s"
+msgstr "Gufungura ububiko ntibishoboka"
+
+#: src/df.c:498
+#, fuzzy, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "KIGEZWEHO bushyinguro NONEAHA"
+
+#: src/df.c:741
+#, fuzzy
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"Ibisobanuro Ibyerekeye i IDOSIYE Sisitemu ku Cyangwa Byose IDOSIYE ku "
+"Mburabuzi"
+
+#: src/df.c:749
+#, fuzzy
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr "-g."
+
+#: src/df.c:755
+#, fuzzy
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+"-i Urutonde Ibisobanuro Bya Funga K nka Funga Ingano L Kuri IDOSIYE Oya OYA "
+"Mbere Ikoresha: Ibisobanuro Mburabuzi"
+
+#: src/df.c:761
+#, fuzzy
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+"-Gukoresha i Ibisohoka Mbere Ikoresha: T Ubwoko Kuri IDOSIYE Bya Ubwoko "
+"Gucapa Ubwoko Gucapa IDOSIYE Sisitemu X Ubwoko Kuri IDOSIYE OYA Bya Ubwoko v"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+#, fuzzy
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"Gicurasi Cyangwa Gicurasi Umubare wuzuye ku Bya 1000 1000 1000 Na ku "
+"kugirango E"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, fuzzy, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr "i Kwemerera Ibuze Ihitamo ni Bitemewe. Gukoresha Ongera ugerageze"
+
+#: src/df.c:900
+#, fuzzy, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "IDOSIYE Sisitemu Ubwoko Byombi Byahiswemo Na"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Iburira:"
+
+#: src/df.c:943
+#, fuzzy, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%scannotGusoma imbonerahamwe# Bya IDOSIYE"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr ""
+
+#: src/dircolors.c:103
+#, fuzzy
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Amabwiriza Kuri Gushyiraho i IMPINDURAGACIRO Imiterere Bya Ibisohoka B "
+"Igikonoshwa Ibisohoka Igikonoshwa ITEGEKONGENGA Kuri Gushyiraho C C "
+"Igikonoshwa Ibisohoka C Igikonoshwa ITEGEKONGENGA Kuri Gushyiraho P Gucapa "
+"Ububikoshingiro Ibisohoka"
+
+#: src/dircolors.c:113
+#, fuzzy
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"ni Gusoma Kuri Amabara Kuri Gukoresha kugirango Na Umigereka a "
+"Ububikoshingiro ni Birambuye ku i Imiterere Bya Idosiye Gukoresha Gucapa"
+
+#: src/dircolors.c:291
+#, fuzzy, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s:%lu:Sibyo Umurongo Ibuze ISEGONDA"
+
+#: src/dircolors.c:363
+#, fuzzy, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu:Ijambo- banze"
+
+#: src/dircolors.c:364
+#, fuzzy
+msgid "<internal>"
+msgstr "<By'imbere"
+
+#: src/dircolors.c:445
+#, fuzzy, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"i Amahitamo Kuri Ibisohoka By'imbere Ububikoshingiro Guhitamo a Igikonoshwa"
+
+#: src/dircolors.c:455
+#, fuzzy
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr "Idosiye Na: Gucapa Ububikoshingiro P"
+
+#: src/dircolors.c:478
+#, fuzzy, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "Oya IMPINDURAGACIRO Na Oya Igikonoshwa Ubwoko Ihitamo"
+
+#: src/dirname.c:48
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr "Cyangwa"
+
+#: src/dirname.c:53
+#, fuzzy
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"Na: Cyavanyweho NIBA Kirimo Oya S Ibisohoka Igisobanuro i KIGEZWEHO "
+"bushyinguro"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#: src/du.c:279 src/wc.c:108
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr "Cyangwa Bivuye"
+
+#: src/du.c:283
+#, fuzzy
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr "Ikoresha: Bya kugirango ububiko bw'amaderese"
+
+#: src/du.c:290
+#, fuzzy
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+"-a Byose Kwandika kugirango Byose Idosiye OYA Ingano Gucapa Ikoresha: i "
+"Ingano ni Gitoya Gicurasi Kinini Kuri in Idosiye BUZIGUYE Na i Funga Ingano "
+"Gukoresha Bayite B Bayite Kuri Ingano Funga Ingano C Igiteranyo a"
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+#, fuzzy
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr "--g."
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+#, fuzzy
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+"-Byose Oya amahuza iyi ni i Mburabuzi 0 NTAGIHARI Impera Ibisohoka Umurongo "
+"Na: 0 Bayite OYA Gushyiramo Ingano Bya S Kugaragaza a Igiteranyo kugirango"
+
+#: src/du.c:323
+#, fuzzy
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+"-X IDOSIYE Sisitemu ububiko bw'amaderese ku IDOSIYE Bivuye Idosiye BIHUYE "
+"Ishusho in Idosiye BIHUYE KININI Ubujyakuzimu Gucapa i Igiteranyo kugirango "
+"a bushyinguro Cyangwa IDOSIYE Na: Byose NIBA ni Cyangwa Bike Intera munsi i "
+"Umurongo KININI Ubujyakuzimu 0 ni i"
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+# #-#-#-#-# sc.pot (PACKAGE VERSION) #-#-#-#-#
+# sc/source\ui\src\autofmt.src:RID_SCDLG_AUTOFORMAT.STR_SUM.text
+# #-#-#-#-# sc.pot (PACKAGE VERSION) #-#-#-#-#
+# sc/source\ui\src\globstr.src:RID_GLOBSTR.STR_PIVOT_TOTAL.text
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+#, fuzzy
+msgid "total"
+msgstr "Igiteranyo"
+
+#: src/du.c:752
+#, fuzzy, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr "Gukoresha OYA H i Igisobanuro Bya i H Ihitamo Kuri i Nka Bya"
+
+#: src/du.c:780
+#, fuzzy, c-format
+msgid "invalid maximum depth %s"
+msgstr "Sibyo Kinini Ubujyakuzimu"
+
+#: src/du.c:789
+#, fuzzy, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr "i Kwemerera Ibuze Ihitamo ni Bitemewe. Gukoresha Ongera ugerageze"
+
+#: src/du.c:871
+#, fuzzy, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "Byombi Na Garagaza Byose Ibyinjijwe"
+
+#: src/du.c:878
+#, fuzzy, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "Iburira ni i Nka ikoresha KININI Ubujyakuzimu 0"
+
+#: src/du.c:884
+#, fuzzy, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "Iburira Na: KININI Ubujyakuzimu"
+
+#: src/du.c:949 src/wc.c:645
+#, fuzzy
+msgid "File operands cannot be combined with --files0-from."
+msgstr "Idosiye Na: Bivuye"
+
+#: src/du.c:960 src/wc.c:662
+#, fuzzy, c-format
+msgid "cannot read file names from %s"
+msgstr "Gusoma IDOSIYE Amazina Bivuye"
+
+#: src/du.c:1000 src/du.c:1003
+#, fuzzy
+msgid "invalid zero-length file name"
+msgstr "Sibyo Zeru Uburebure IDOSIYE Izina:"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr ""
+
+#: src/echo.c:65
+#, fuzzy
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr "i S Kuri Bisanzwe Ibisohoka N OYA Ibisohoka i"
+
+#: src/echo.c:71
+#, fuzzy
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr "-E Gushoboza Bya Mburabuzi E Bya"
+
+#: src/echo.c:80
+#, fuzzy
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr "E ni in INGARUKA i i Inyuguti bya ITEGEKONGENGA ni Ikimenyetso"
+
+#: src/echo.c:89
+#, fuzzy
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr "\\cIfishi N Gishya Gitambitse Bihagaritse"
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr ""
+
+#: src/env.c:121
+#, fuzzy
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Kuri in i Na Gukoresha i Kwirengagiza Gutangira Na: ubusa u Gukuraho... "
+"IMPINDURAGACIRO Bivuye i"
+
+#: src/env.c:129
+#, fuzzy
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr "A i Oya Gucapa i"
+
+#: src/expand.c:115
+#, fuzzy
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Amasimbuka in Kuri Imyanya Kuri Bisanzwe Ibisohoka Oya Cyangwa Ryari: ni "
+"Gusoma Bisanzwe Iyinjiza"
+
+#: src/expand.c:123
+#, fuzzy
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr "-i OYA GUHINDURA Amasimbuka Nyuma T Amasimbuka Amasimbuka Inyuguti OYA"
+
+#: src/expand.c:127
+#, fuzzy
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr "-T Amasimbuka Gukoresha Akitso Urutonde Bya Isunika"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, fuzzy, c-format
+msgid "tab stop is too large %s"
+msgstr "Isunika Guhagarara ni Binini"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, fuzzy, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "Isunika Ingano Kirimo Sibyo Inyuguti S"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, fuzzy, c-format
+msgid "tab size cannot be 0"
+msgstr "Isunika Ingano 0"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, fuzzy, c-format
+msgid "tab sizes must be ascending"
+msgstr "Isunika Ubujyejuru"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, fuzzy, c-format
+msgid "input line is too long"
+msgstr "Iyinjiza Umurongo ni"
+
+#: src/expr.c:102
+#, fuzzy, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr "Cyangwa"
+
+#: src/expr.c:110
+#, fuzzy
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"i Agaciro Bya Kuri Bisanzwe Ibisohoka A Ahatanditseho Umurongo Amatsinda "
+"Gicurasi NIBA ni NTAGIHARI 0 NIBA ni NTAGIHARI Cyangwa 0"
+
+#: src/expr.c:119
+#, fuzzy
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"ni Birutwa ni Birutwa Cyangwa bingana Kuri ni bingana Kuri ni Kuri ni Biruta "
+"Cyangwa bingana Kuri ni Biruta"
+
+#: src/expr.c:128
+#, fuzzy
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr "Igiteranyo Bya Na Ikinyuranyo/ Itandukaniro Bya Na"
+
+#: src/expr.c:133
+#, fuzzy, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr "IGIKUBO Bya Na IKIGABANYO Bya ku Bya ku"
+
+#: src/expr.c:139
+#, fuzzy
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"Ishusho BIHUYE Bya in BIHUYE Nka Bya Bivuye Umubarendanga Umubarendanga in "
+"ni Byabonetse Cyangwa Uburebure Uburebure Bya"
+
+#: src/expr.c:148
+#, fuzzy
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+"+Nka a Ikurikiranyanyuguti ATARIIGIHARWE NIBA ni Ijambo- banze nka Cyangwa "
+"Mukoresha nka Agaciro Bya"
+
+#: src/expr.c:154
+#, fuzzy
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"Mukoresha Kuri Cyangwa kugirango NIBA Byombi Imibare Ikindi Garuka i "
+"Ikurikiranyanyuguti hagati Na Cyangwa NTAGIHARI Na OYA Garuka i Umubare Bya "
+"Inyuguti Cyangwa 0"
+
+#: src/expr.c:161
+#, fuzzy
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+"Imimerere ni 0 NIBA ni NTAGIHARI 0 1. NIBA ni 0 2. NIBA ni Sibyo Na 3. NIBA "
+"Ikosa"
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "Ikosa mu myandikire"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "Ikosa in Ibisanzwe imvugo Gushaka"
+
+#: src/expr.c:653 src/expr.c:711
+#, fuzzy, c-format
+msgid "non-numeric argument"
+msgstr "Bikurikije umubare"
+
+#: src/expr.c:665
+#, fuzzy, c-format
+msgid "division by zero"
+msgstr "Kugabanya na zeru"
+
+#: src/factor.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr "Cyangwa"
+
+#: src/factor.c:79
+#, fuzzy
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr "i Bya"
+
+#: src/factor.c:85
+#, fuzzy
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"i Bya Byose Umubare wuzuye Oya ku i Komandi: Umurongo Gusoma Bivuye Bisanzwe "
+"Iyinjiza"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, fuzzy, c-format
+msgid "%s is too large"
+msgstr "%sni Binini"
+
+#: src/factor.c:158
+#, fuzzy, c-format
+msgid "%s is not a valid positive integer"
+msgstr "`%s'ni OYA a Byemewe Umubare wuzuye"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr ""
+
+#: src/fmt.c:274
+#, fuzzy
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"Igika in i S Kuri Bisanzwe Ibisohoka Oya Cyangwa NIBA ni Gusoma Bisanzwe "
+"Iyinjiza"
+
+#: src/fmt.c:282
+#, fuzzy
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+"-C Marije Bya Itangira P Imbanziriza Imirongo Itangiriro Na: i Imbanziriza "
+"Kuri S Gutandukanya Gutandukanya Imirongo OYA"
+
+#: src/fmt.c:289
+#, fuzzy
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+"-T Igika Bya Itangira Umurongo Bivuye u Isigamwanya Umwanya hagati Amagambo "
+"Nyuma W Ubugari Kinini Umurongo Ubugari Mburabuzi Bya 75 Inkingi"
+
+#: src/fmt.c:358
+#, fuzzy, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr "Sibyo Ihitamo ni Ryari: ni i Gukoresha W"
+
+#: src/fmt.c:400
+#, fuzzy, c-format
+msgid "invalid width: %s"
+msgstr "Sibyo Ubugari"
+
+#: src/fold.c:74
+#, fuzzy
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr "Iyinjiza Imirongo in Bisanzwe Iyinjiza ku Mburabuzi Ibisohoka"
+
+#: src/fold.c:82
+#, fuzzy
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+"-B Bayite IBARA Bayite S Imyanya itandukanya ku W Ubugari Gukoresha Inkingi "
+"Bya"
+
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "Sibyo Umubare Bya Inkingi"
+
+#: src/head.c:113
+#, fuzzy
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"i Itangira 10 Imirongo Bya Kuri Bisanzwe Ibisohoka Birenzeho Na: a "
+"Umutwempangano i IDOSIYE Izina: Oya Cyangwa Ryari: ni Gusoma Bisanzwe "
+"Iyinjiza"
+
+#: src/head.c:122
+#, fuzzy
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+"-C Bayite Gucapa i Itangira Bayite Bya IDOSIYE Na: i Nyobora Gucapa Byose i "
+"Bayite Bya N Imirongo Gucapa i Itangira Imirongo Bya i Itangira 10 Na: i "
+"Nyobora Gucapa Byose i Imirongo Bya"
+
+#: src/head.c:130
+#, fuzzy
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr "-Q Nta narimwe Gucapa Imitwe IDOSIYE v Buri gihe Gucapa Imitwe IDOSIYE"
+
+#: src/head.c:136
+#, fuzzy
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr "Gicurasi a Ingereka B K M"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, fuzzy, c-format
+msgid "error reading %s"
+msgstr "Ikosa"
+
+#: src/head.c:154
+#, fuzzy, c-format
+msgid "error writing %s"
+msgstr "Ikosa"
+
+#: src/head.c:157
+#, fuzzy, c-format
+msgid "%s: file has shrunk too much"
+msgstr "%s:IDOSIYE"
+
+#: src/head.c:230 src/head.c:1046
+#, fuzzy, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s:Umubare Bya Bayite ni Binini"
+
+#: src/head.c:443
+#, fuzzy, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s:Inyuma Kuri Umwimerere Ibirindiro"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, fuzzy, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s:Kuri Nta- boneza"
+
+#: src/head.c:793
+#, fuzzy, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "IDOSIYE Mweretsi kugirango"
+
+#: src/head.c:880
+#, fuzzy, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s:%sni Binini ni OYA"
+
+# sch/source\ui\dlg\diagrtyp.src:DLG_DIAGRAM_TYPE.FT_NUM_OF_LINES.text
+#: src/head.c:881
+#, fuzzy
+msgid "number of lines"
+msgstr "Umubare w'imirongo"
+
+#: src/head.c:881
+#, fuzzy
+msgid "number of bytes"
+msgstr "Umubare Bya Bayite"
+
+#: src/head.c:888 src/tail.c:1483
+#, fuzzy
+msgid "invalid number of lines"
+msgstr "Sibyo Umubare Bya Imirongo"
+
+#: src/head.c:889 src/tail.c:1484
+#, fuzzy
+msgid "invalid number of bytes"
+msgstr "Sibyo Umubare Bya Bayite"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "Sibyo Ihitamo"
+
+#: src/hostid.c:48
+#, fuzzy, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr "Cyangwa i Bikurikije umubare Ikiranga in kugirango i KIGEZWEHO Ubuturo"
+
+#: src/hostname.c:65
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr "Cyangwa Cyangwa Gushyiraho i Izina ry'inturo: Bya i KIGEZWEHO Sisitemu"
+
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "Gushyiraho Izina: Kuri"
+
+#: src/hostname.c:106
+#, fuzzy, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr "Gushyiraho Izina ry'inturo: iyi Sisitemu i"
+
+#: src/hostname.c:114
+#, fuzzy, c-format
+msgid "cannot determine hostname"
+msgstr "Izina ry'inturo:"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr ""
+
+#: src/id.c:79
+#, fuzzy
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Ibisobanuro kugirango Cyangwa i KIGEZWEHO Ukoresha: a Kwirengagiza kugirango "
+"Bihuye neza Na: Ikindi g Itsinda Gucapa i CYUZUYE Itsinda Amatsinda Gucapa "
+"Byose Itsinda N Izina: Gucapa a Izina: Bya a Umubare kugirango R Gucapa i "
+"Bya i CYUZUYE Na: u Ukoresha: Gucapa i CYUZUYE Ukoresha:"
+
+#: src/id.c:91
+#, fuzzy
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr "Gucapa Gushyiraho Bya Ibisobanuro"
+
+#: src/id.c:152
+#, fuzzy, c-format
+msgid "cannot print only user and only group"
+msgstr "Gucapa Ukoresha: Na Itsinda"
+
+#: src/id.c:156
+#, fuzzy, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr "Gucapa Amazina Cyangwa in Mburabuzi Imiterere"
+
+#: src/id.c:168
+#, fuzzy, c-format
+msgid "%s: No such user"
+msgstr "%s:Ukoresha:"
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "Gushaka Izina: kugirango Ukoresha:"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "Gushaka Izina: kugirango Itsinda"
+
+#: src/id.c:271
+#, fuzzy, c-format
+msgid "cannot get supplemental group list"
+msgstr "Kubona Itsinda Urutonde"
+
+# sc/source\ui\src\subtdlg.src:RID_SCPAGE_SUBT_OPTIONS.FL_GROUP.text
+#: src/id.c:375
+#, fuzzy
+msgid " groups="
+msgstr "Amatsinda"
+
+#: src/install.c:318
+#, fuzzy, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr ""
+"i Ihitamo Gicurasi OYA Ryari: gukora iyinjizaporogaramu:%s a bushyinguro"
+
+#: src/install.c:321
+#, fuzzy, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr ""
+"Intego bushyinguro OYA Ryari: gukora iyinjizaporogaramu:%s a bushyinguro"
+
+#: src/install.c:369 src/mkdir.c:193
+#, fuzzy, c-format
+msgid "invalid mode %s"
+msgstr "Sibyo Ubwoko"
+
+#: src/install.c:520
+#, fuzzy, c-format
+msgid "cannot change ownership of %s"
+msgstr "Guhindura>> Bya"
+
+#: src/install.c:541
+#, fuzzy, c-format
+msgid "cannot set time stamps for %s"
+msgstr "Gushyiraho Igihe kugirango"
+
+#: src/install.c:562
+#, fuzzy, c-format
+msgid "fork system call failed"
+msgstr "Sisitemu Byanze"
+
+#: src/install.c:566
+#, fuzzy, c-format
+msgid "cannot run strip"
+msgstr "Gukoresha"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "Kuri"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, fuzzy, c-format
+msgid "invalid user %s"
+msgstr "Sibyo Ukoresha:"
+
+#: src/install.c:628
+#, fuzzy, c-format
+msgid "creating directory %s"
+msgstr "bushyinguro"
+
+#: src/install.c:651
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr "Cyangwa Cyangwa T Cyangwa D"
+
+#: src/install.c:658
+#, fuzzy
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"i Itangira Amafishi Gukoporora Kuri Cyangwa Igikubo S Igenamiterere Na "
+"Itsinda i Ifishi Kurema Byose Bya i"
+
+#: src/install.c:667
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+"--Inyibutsa Ubwoko a Inyibutsa Bya Ishyika B nka Inyibutsa OYA Kwemera C D "
+"bushyinguro Byose ingingo Nka bushyinguro Amazina Kurema Bya i"
+
+#: src/install.c:674
+#, fuzzy
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+"-Kurema Byose Nyobora Bya i Iheruka Hanyuma Gukoporora Kuri g Itsinda "
+"Gushyiraho Itsinda Bya KIGEZWEHO M Ubwoko Gushyiraho Ubwoko Nka in Bya o "
+"Gushyiraho hejuru Ukoresha:"
+
+#: src/install.c:681
+#, fuzzy
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+"-P Gukurikiza Times Bya Kuri Ishyika S IKIMENYETSO Ingereka i Inyibutsa T "
+"Intego bushyinguro Gukoporora Byose ingingo Oya Intego bushyinguro Nka a "
+"Bisanzwe v Gucapa i Izina: Bya bushyinguro Nka ni"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+#, fuzzy
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Inyibutsa Ingereka ni Gushyiraho Na: Ingereka Cyangwa Verisiyo Igenzura "
+"Uburyo Gicurasi Byahiswemo Biturutse i Inyibutsa Ihitamo Cyangwa "
+"IMPINDURAGACIRO i Uduciro"
+
+#: src/join.c:138
+#, fuzzy
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"Bya Iyinjiza Imirongo Na: birasa Imyanya Kwandika a Umurongo Ibisohoka "
+"Mburabuzi Umwanya ni i Itangira Cyangwa OYA Byombi ni Gusoma Bisanzwe "
+"Iyinjiza a Gucapa Imirongo Bivuye IDOSIYE ni 1. Cyangwa 2. Kuri Cyangwa E "
+"Gusimbura Ibuze Iyinjiza Imyanya Na:"
+
+#: src/join.c:147
+#, fuzzy
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+"-i Kwirengagiza Kwirengagiza in Ryari: j Kuri 1. 2. o Ibisohoka T Gukoresha "
+"Nka Iyinjiza Na Ibisohoka Umwanya"
+
+#: src/join.c:153
+#, fuzzy
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr "-v nka a Ibisohoka 1. ku iyi Bya IDOSIYE 2. ku iyi Bya IDOSIYE"
+
+#: src/join.c:160
+#, fuzzy
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"T ni Nyobora Imyanya Na Ikindi Imyanya ku ni a Umwanya Umubare 1. ni Cyangwa "
+"Birenzeho Akitso Cyangwa Ahatanditseho Cyangwa i Umwanya i Imyanya Bivuye i "
+"Imyanya Bivuye ku Na bishunguwe ku i Imyanya"
+
+#: src/join.c:617 src/join.c:812
+#, fuzzy, c-format
+msgid "invalid field number: %s"
+msgstr "Sibyo Umwanya Umubare"
+
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "Sibyo Umwanya"
+
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "Sibyo IDOSIYE Umubare in Umwanya"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, fuzzy, c-format
+msgid "empty tab"
+msgstr "ubusa Isunika"
+
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "Inyuguti Isunika"
+
+#: src/join.c:874 src/sort.c:3036
+#, fuzzy, c-format
+msgid "incompatible tabs"
+msgstr "Amasimbuka"
+
+#: src/join.c:931
+#, fuzzy, c-format
+msgid "both files cannot be standard input"
+msgstr "Byombi Idosiye Bisanzwe Iyinjiza"
+
+#: src/kill.c:90
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr "S Cyangwa L Cyangwa T"
+
+#: src/kill.c:96
+#, fuzzy
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr "Kuri Cyangwa Urutonde"
+
+#: src/kill.c:103
+#, fuzzy
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+"-S i Izina: Cyangwa Umubare Bya i Kuri L Urutonde Urutonde Amazina Cyangwa "
+"GUHINDURA Amazina Kuri Bivuye T imbonerahamwe# Gucapa a imbonerahamwe# Bya"
+
+#: src/kill.c:111
+#, fuzzy
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+"Gicurasi a Izina: nka Cyangwa a Umubare nka Cyangwa Gusohoka Imimerere Bya a "
+"ku a ni Umubare wuzuye NIBA a Itsinda"
+
+#: src/kill.c:161
+#, fuzzy, c-format
+msgid "%s: invalid signal"
+msgstr "%s:Sibyo"
+
+#: src/kill.c:266
+#, fuzzy, c-format
+msgid "%s: invalid process id"
+msgstr "%s:Sibyo ID"
+
+#: src/kill.c:320
+#, fuzzy, c-format
+msgid "invalid option -- %c"
+msgstr "Sibyo Ihitamo"
+
+#: src/kill.c:329
+#, fuzzy, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s:Igikubo"
+
+#: src/kill.c:343
+#, fuzzy, c-format
+msgid "multiple -l or -t options specified"
+msgstr "Igikubo L Cyangwa T Amahitamo"
+
+#: src/kill.c:360
+#, fuzzy, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "Kuvanga Na: L Cyangwa T"
+
+#: src/kill.c:366
+#, fuzzy, c-format
+msgid "no process ID specified"
+msgstr "Oya"
+
+#: src/link.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr "Cyangwa"
+
+#: src/link.c:53
+#, fuzzy
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr "i Ihuza Umumaro Kuri Kurema a Ihuza Kuri"
+
+#: src/link.c:95
+#, fuzzy, c-format
+msgid "cannot create link %s to %s"
+msgstr "Kurema Ihuza Kuri"
+
+#: src/ln.c:155
+#, fuzzy, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr "%s:Iburira a Ikomeye Ihuza Kuri a Ihuza ni OYA"
+
+#: src/ln.c:165
+#, fuzzy, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s:Ikomeye Ihuza OYA kugirango bushyinguro"
+
+#: src/ln.c:218
+#, fuzzy, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s:Guhindura bushyinguro"
+
+# svx/source\dialog\srchdlg.src:RID_SVXSTR_REPLACE.text
+#: src/ln.c:223
+#, fuzzy, c-format
+msgid "%s: replace %s? "
+msgstr "%s:Gusimbura)"
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "Ihuza Kuri"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "Ihuza Kuri"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "Ikomeye Ihuza Kuri"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "Ikomeye Ihuza Kuri"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "Ikomeye Ihuza Kuri"
+
+#: src/ln.c:324
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr "Ifishi Cyangwa Ifishi Cyangwa Ifishi Cyangwa T Ifishi"
+
+#: src/ln.c:331
+#, fuzzy
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"i Ifishi Kurema a Ihuza Kuri Na: i Izina: i Ifishi Kurema a Ihuza Kuri in i "
+"KIGEZWEHO bushyinguro i Na Amafishi Kurema amahuza Kuri in Ikomeye amahuza "
+"ku Mburabuzi amahuza Na: Ikomeye amahuza"
+
+#: src/ln.c:342
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+"--Inyibutsa Ubwoko a Inyibutsa Bya Ishyika B nka Inyibutsa OYA Kwemera D "
+"bushyinguro Kwemerera i Kuri Kuri Ikomeye ububiko bw'amaderese Impugukirwa "
+"Sisitemu Amabwiriza ATARIIGIHARWE kugirango i F Gukuraho... Ishyika"
+
+#: src/ln.c:350
+#, fuzzy
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+"-N Oya Ishyika ni a Kuri bushyinguro Nka NIBA a Bisanzwe i Biganira "
+"Urwinjiriro Kuri Gukuraho... S Ubwoko amahuza Bya Ikomeye"
+
+#: src/ln.c:356
+#, fuzzy
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+"-Ingereka i Inyibutsa T Intego bushyinguro i in Kuri i Oya Intego "
+"bushyinguro Nka a Bisanzwe v Gucapa Izina: Bya IDOSIYE Mbere"
+
+#: src/ln.c:484
+#, fuzzy, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "Kuvanga Intego bushyinguro Na Oya Intego bushyinguro"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr ""
+
+#: src/logname.c:45
+#, fuzzy
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr "i Izina: Bya i KIGEZWEHO Ukoresha:"
+
+#: src/logname.c:89
+#, fuzzy, c-format
+msgid "no login name"
+msgstr "Oya Ifashayinjira Izina:"
+
+# desktop/source\app\ssodlg.src:DLG_SSOLOGIN.text
+#: src/ls.c:684
+#, fuzzy
+msgid "%b %e %Y"
+msgstr "%b%e%Y"
+
+#: src/ls.c:692
+#, fuzzy
+msgid "%b %e %H:%M"
+msgstr "%b%e%H:%MCYOSE"
+
+#: src/ls.c:1453
+#, fuzzy, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "Sibyo Agaciro Bya IMPINDURAGACIRO"
+
+#: src/ls.c:1480
+#, fuzzy, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "Sibyo Ubugari in IMPINDURAGACIRO"
+
+#: src/ls.c:1510
+#, fuzzy, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr "Sibyo Isunika Ingano in IMPINDURAGACIRO"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, fuzzy, c-format
+msgid "invalid line width: %s"
+msgstr "Sibyo Umurongo Ubugari"
+
+#: src/ls.c:1704
+#, fuzzy, c-format
+msgid "invalid tab size: %s"
+msgstr "Sibyo Isunika Ingano"
+
+#: src/ls.c:1885
+#, fuzzy, c-format
+msgid "invalid time style format %s"
+msgstr "Sibyo Igihe IMISUSIRE Imiterere"
+
+#: src/ls.c:2229
+#, fuzzy, c-format
+msgid "unrecognized prefix: %s"
+msgstr "Imbanziriza"
+
+#: src/ls.c:2252
+#, fuzzy, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "Agaciro kugirango IMPINDURAGACIRO"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, fuzzy, c-format
+msgid "cannot open directory %s"
+msgstr "Gufungura bushyinguro"
+
+#: src/ls.c:2344
+#, fuzzy, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "APAREYE Na Bya"
+
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "%s:OYA bushyinguro"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, fuzzy, c-format
+msgid "reading directory %s"
+msgstr "bushyinguro"
+
+#: src/ls.c:2410
+#, fuzzy, c-format
+msgid "closing directory %s"
+msgstr "bushyinguro"
+
+#: src/ls.c:2918
+#, fuzzy, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "Kugereranya# IDOSIYE Amazina Na"
+
+#: src/ls.c:4277
+#, fuzzy
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"Ibisobanuro Ibyerekeye i i KIGEZWEHO bushyinguro ku Mburabuzi Ibyinjijwe "
+"NIBA Ntacyo Bya Ishungura"
+
+#: src/ls.c:4285
+#, fuzzy
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+"-Na. Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+"."
+
+#: src/ls.c:4291
+#, fuzzy
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+"--Funga Ingano Gukoresha Bayite Kwirengagiza Ibyashyinguwe OYA Urutonde "
+"Ibyinjijwe Na: C Na: Ishungura ku Na Garagaza Igihe Bya Bya IDOSIYE "
+"Imimerere Ibisobanuro Na: L Garagaza Na Ishungura ku Ishungura ku"
+
+#: src/ls.c:4299
+#, fuzzy
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+"-C Urutonde Ibyinjijwe ku Ibara Igenzura Ibara ni Kuri Gicurasi Cyangwa D "
+"bushyinguro Urutonde bushyinguro Ibyinjijwe Bya Ibigize Na OYA Ibisohoka "
+"kugirango"
+
+#: src/ls.c:4307
+#, fuzzy
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+"-F OYA Ishungura Gushoboza Kongeraho... Bya Kuri Imiterere Kwambukiranya X M "
+"Gitambitse X L UMWE Inkingi 1. L Bihagaritse Igihe nka L Igihe IMISUSIRE"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+#, fuzzy
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr "-g."
+
+#: src/ls.c:4328
+#, fuzzy
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr "-g."
+
+#: src/ls.c:4337
+#, fuzzy
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+"--IMISUSIRE Kongeraho... Na: IMISUSIRE Kuri Icyinjijwe Amazina Ntacyo "
+"Mburabuzi IDOSIYE Ubwoko P i Na: L Gucapa i Umubarendanga Umubare Bya "
+"Kwirengagiza OYA Urutonde Ibyinjijwe Igikonoshwa K nka Funga Ingano"
+
+#: src/ls.c:4345
+#, fuzzy
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+"-L Gukoresha a Ryari: IDOSIYE Ibisobanuro kugirango a Ihuza Garagaza "
+"Ibisobanuro kugirango i IDOSIYE i Indango kugirango i Ihuza M Kuzuza Ubugari "
+"Na: a Akitso Urutonde Bya"
+
+#: src/ls.c:4352
+#, fuzzy
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr "-g."
+
+#: src/ls.c:4360
+#, fuzzy
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+"-Q Gushisha Igenzura Gucapa Bya Igishushanyo Garagaza Igenzura Garagaza "
+"Igishushanyo Inyuguti Nka ni Porogaramu ni Na Ibisohoka ni a Gushyiraho "
+"akugarizo Izina: Icyinjijwe Amazina in MAHARAKUBIRI IMISUSIRE Gukoresha "
+"IMISUSIRE kugirango Icyinjijwe Amazina Umwanya Igikonoshwa Igikonoshwa Buri "
+"gihe C"
+
+#: src/ls.c:4368
+#, fuzzy
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+"-R Ihindurakerekezo Ihindurakerekezo Itondekanya Urutonde Ububiko bwungirije "
+"S Ingano Na: L Gucapa Ingano Bya IDOSIYE in"
+
+#: src/ls.c:4373
+#, fuzzy
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+"-Ishungura ku IDOSIYE Ishungura Umugereka Ntacyo U Ingano Igihe T Verisiyo v "
+"Imimerere C Igihe T u u Gukoresha Igihe Na: L Garagaza Igihe Nka Bya Igihe "
+"Gukoresha Cyangwa Imimerere Igihe Nka Ishungura Urufunguzo NIBA Ishungura"
+
+#: src/ls.c:4382
+#, fuzzy
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+"--Igihe IMISUSIRE Na: L Garagaza Times ikoresha IMISUSIRE Umwanya ni nka "
+"NIBA Idosiye Na Kuri Idosiye NIBA ni Na: INGARUKA Hanze i T Ishungura ku "
+"Isunika ku Bya"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+#, fuzzy
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+"-u Na: Ishungura ku Na Garagaza Na: L Garagaza Igihe Na Ishungura ku "
+"Ishungura ku U OYA Ishungura Urutonde Ibyinjijwe in bushyinguro v Ishungura "
+"ku"
+
+#: src/ls.c:4402
+#, fuzzy
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+"-W Ubugari Mugaragaza Ubugari Bya KIGEZWEHO X Urutonde Ibyinjijwe ku "
+"Imirongo Bya ku Ishungura ku Icyinjijwe 1. Urutonde IDOSIYE"
+
+#: src/ls.c:4414
+#, fuzzy
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"Mburabuzi Ibara ni OYA Kuri Bya Idosiye Kuri ikoresha Ibara Ntacyo i Ibara "
+"Ihitamo ni Kuri ikoresha Ibara Buri gihe Ibara Ikiyega Ibara Ibisohoka NIBA "
+"Bisanzwe Ibisohoka ni a"
+
+#: src/ls.c:4423
+#, fuzzy
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr "Imimerere ni 0 NIBA 1. NIBA 2. NIBA"
+
+#: src/md5sum.c:150
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Cyangwa Kugenzura... Cyangwa Kugenzura... Oya Cyangwa Ryari: ni Gusoma "
+"Bisanzwe Iyinjiza"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr "-Nyabibiri Gukoresha Nyabibiri Kuri i APAREYE"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+#, fuzzy
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"Amahitamo Ryari: Imimerere Ibisohoka Imimerere ITEGEKONGENGA W Ibyerekeye"
+
+#: src/md5sum.c:187
+#, fuzzy, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"Nka in i a Ibisohoka Bya iyi Porogaramu Mburabuzi Ubwoko ni Kuri Umurongo "
+"Na: a Inyuguti Ubwoko kugirango Nyabibiri Na Izina: kugirango"
+
+#: src/md5sum.c:459
+#, fuzzy, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s:Imirongo"
+
+#: src/md5sum.c:481
+#, fuzzy, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s:%<Byahanaguwe Umurongo"
+
+#: src/md5sum.c:504
+#, fuzzy, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s:Gufungura Cyangwa"
+
+#: src/md5sum.c:528
+#, fuzzy
+msgid "FAILED"
+msgstr "Byanze"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "OKE"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, fuzzy, c-format
+msgid "%s: read error"
+msgstr "%s:Gusoma Ikosa"
+
+#: src/md5sum.c:553
+#, fuzzy, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s:Oya Byahanaguwe Imirongo Byabonetse"
+
+#: src/md5sum.c:562
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "Bya IDOSIYE OYA Gusoma"
+
+#: src/md5sum.c:574
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "Bya BIHUYE"
+
+#: src/md5sum.c:640
+#, fuzzy, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr "i Nyabibiri Na Umwandiko Amahitamo Ryari:"
+
+#: src/md5sum.c:648
+#, fuzzy, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "i Imimerere Ihitamo ni Ryari:"
+
+#: src/md5sum.c:655
+#, fuzzy, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "i Ihitamo ni Ryari:"
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr ""
+
+#: src/mkdir.c:60
+#, fuzzy
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr "i NIBA OYA"
+
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+"-M Ubwoko Gushyiraho Ubwoko Nka in OYA P Oya Ikosa NIBA Ubwoko ububiko "
+"bw'amaderese Nka v Gucapa a Ubutumwa kugirango Byaremwe"
+
+#: src/mkdir.c:168
+#, fuzzy, c-format
+msgid "created directory %s"
+msgstr "Byaremwe bushyinguro"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr ""
+
+#: src/mkfifo.c:55
+#, fuzzy
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr "Na: i"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr "-M Ubwoko Gushyiraho Ubwoko Nka in OYA a"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, fuzzy, c-format
+msgid "invalid mode"
+msgstr "Sibyo Ubwoko"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr ""
+
+#: src/mknod.c:57
+#, fuzzy
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr "i Bidasanzwe IDOSIYE Bya i"
+
+#: src/mknod.c:69
+#, fuzzy
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+"Na Ryari: ni B C Cyangwa u Na Ryari: ni P Cyangwa Na: Cyangwa ni Nka NIBA "
+"Na: 0 Nka Nka NYACUMI Gicurasi"
+
+#: src/mknod.c:76
+#, fuzzy
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"B Kurema a Funga Bidasanzwe C u Kurema a Inyuguti Bidasanzwe P Kurema a"
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr "Idosiye Na APAREYE Imibare"
+
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "OYA Na APAREYE Imibare"
+
+#: src/mknod.c:167
+#, fuzzy, c-format
+msgid "block special files not supported"
+msgstr "Funga Bidasanzwe Idosiye OYA"
+
+#: src/mknod.c:176
+#, fuzzy, c-format
+msgid "character special files not supported"
+msgstr "Inyuguti Bidasanzwe Idosiye OYA"
+
+#: src/mknod.c:192
+#, fuzzy, c-format
+msgid "invalid major device number %s"
+msgstr "Sibyo APAREYE Umubare"
+
+#: src/mknod.c:197
+#, fuzzy, c-format
+msgid "invalid minor device number %s"
+msgstr "Sibyo APAREYE Umubare"
+
+#: src/mknod.c:202
+#, fuzzy, c-format
+msgid "invalid device %s %s"
+msgstr "Sibyo APAREYE"
+
+#: src/mknod.c:216
+#, fuzzy, c-format
+msgid "invalid device type %s"
+msgstr "Sibyo APAREYE Ubwoko"
+
+#: src/mv.c:290
+#, fuzzy
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr "Kuri Cyangwa Kwimura S Kuri"
+
+#: src/mv.c:297
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+"--Inyibutsa Ubwoko a Inyibutsa Bya Ishyika B nka Inyibutsa OYA Kwemera F OYA "
+"Urwinjiriro Mbere Kuri Subiza Yego i Biganira Urwinjiriro Mbere Kuri Subiza "
+"Ikibazo#"
+
+#: src/mv.c:303
+#, fuzzy
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+"--Subiza Yego Oya Ikibazo# Kuri i Urwinjiriro Ibyerekeye Ishyika Gukuraho... "
+"Bivuye Ingereka i Inyibutsa"
+
+#: src/mv.c:308
+#, fuzzy
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+"-T Intego bushyinguro Kwimura Byose ingingo Oya Intego bushyinguro Nka a "
+"Bisanzwe u Kuvugurura Kwimura Ryari: i IDOSIYE ni i Ishyika IDOSIYE Cyangwa "
+"Ryari: Ishyika IDOSIYE ni v ni"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr ""
+
+#: src/nice.c:77
+#, fuzzy, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+"Na: Agaciro i By'ibanze Oya Gucapa i KIGEZWEHO Agaciro Uduciro Urutonde Kuri "
+"N Kongeramo Umubare wuzuye Kuri i Agaciro Mburabuzi 10"
+
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "Sibyo"
+
+#: src/nice.c:164
+#, fuzzy, c-format
+msgid "a command must be given with an adjustment"
+msgstr "a Komandi: Na:"
+
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "Kubona Sisitemu Izina:"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "Gushyiraho Itariki"
+
+#: src/nl.c:181
+#, fuzzy
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Kuri Bisanzwe Ibisohoka Na: Umurongo Imibare Kyongewe Oya Cyangwa Ryari: ni "
+"Gusoma Bisanzwe Iyinjiza"
+
+#: src/nl.c:189
+#, fuzzy
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+"-B Umubiri Itanganomero Gukoresha kugirango Itanganomero Umubiri D Icyiciro "
+"Gukoresha kugirango Bijyanye n'inyurabwenge F Imperampangano Itanganomero "
+"Gukoresha kugirango Itanganomero Imperampangano"
+
+#: src/nl.c:194
+#, fuzzy
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+"-h Umutwempangano Itanganomero Gukoresha kugirango Itanganomero "
+"Umutwempangano i Ipaji Iyongeragaciro Umurongo Umubare Iyongeragaciro ku L "
+"Ahatanditseho Imirongo Itsinda Bya ubusa Imirongo Nka N Umubare Imiterere "
+"Kongeramo Umurongo Imibare Kuri P Oya OYA Kugarura Umurongo Imibare ku "
+"Bijyanye n'inyurabwenge S Umubare Mutandukanya Kongeramo Nyuma Umurongo"
+
+#: src/nl.c:202
+#, fuzzy
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+"-v Itangira Ipaji Itangira Umurongo Umubare ku Bijyanye n'inyurabwenge W "
+"Umubare Ubugari Gukoresha Inkingi kugirango Umurongo"
+
+#: src/nl.c:208
+#, fuzzy
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"Mburabuzi Inyuguti kugirango Bijyanye n'inyurabwenge Amapaji a Inyuguti "
+"kugirango ni Bya"
+
+#: src/nl.c:214
+#, fuzzy
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"a Umubare Byose T Umubare N Umubare Oya Umubare Imirongo a BIHUYE kugirango "
+"i BASIC imvugo ni Bya Ln Ibumoso: Biringaniye Oya Nyobora Iburyo: "
+"Biringaniye Oya Nyobora Iburyo: Biringaniye Nyobora"
+
+#: src/nl.c:281
+#, fuzzy, c-format
+msgid "line number overflow"
+msgstr "Umurongo Umubare Byarenze urugero"
+
+#: src/nl.c:479
+#, fuzzy, c-format
+msgid "invalid header numbering style: %s"
+msgstr "Sibyo Umutwempangano Itanganomero IMISUSIRE"
+
+#: src/nl.c:487
+#, fuzzy, c-format
+msgid "invalid body numbering style: %s"
+msgstr "Sibyo Umubiri Itanganomero IMISUSIRE"
+
+#: src/nl.c:495
+#, fuzzy, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "Sibyo Imperampangano Itanganomero IMISUSIRE"
+
+#: src/nl.c:504
+#, fuzzy, c-format
+msgid "invalid starting line number: %s"
+msgstr "Sibyo Umurongo Umubare"
+
+#: src/nl.c:513
+#, fuzzy, c-format
+msgid "invalid line number increment: %s"
+msgstr "Sibyo Umurongo Umubare Iyongeragaciro"
+
+#: src/nl.c:525
+#, fuzzy, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "Sibyo Umubare Bya Ahatanditseho Imirongo"
+
+#: src/nl.c:539
+#, fuzzy, c-format
+msgid "invalid line number field width: %s"
+msgstr "Sibyo Umurongo Umubare Umwanya Ubugari"
+
+#: src/nl.c:558
+#, fuzzy, c-format
+msgid "invalid line numbering format: %s"
+msgstr "Sibyo Umurongo Itanganomero Imiterere"
+
+#: src/nohup.c:57
+#, fuzzy, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr "Cyangwa"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "Byose ingingo"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, fuzzy, c-format
+msgid "failed to open %s"
+msgstr "Byanze Kuri Gufungura"
+
+#: src/nohup.c:161
+#, fuzzy, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "Ibisohoka Kuri"
+
+#: src/nohup.c:179
+#, fuzzy, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr "Byanze Kuri Gushyiraho i Gukoporora Bya Kuri Gufunga ku"
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, fuzzy, c-format
+msgid "failed to redirect standard error"
+msgstr "Byanze Kuri Bisanzwe Ikosa"
+
+#: src/od.c:307
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr "Cyangwa B Cyangwa B B"
+
+#: src/od.c:313
+#, fuzzy
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Bayite ku Mburabuzi Bya Kuri Bisanzwe Ibisohoka Birenzeho GUHUZA in i "
+"Itondekanya Kuri Ifishi i Iyinjiza Oya Cyangwa Ryari: ni Gusoma Bisanzwe "
+"Iyinjiza"
+
+#: src/od.c:320
+#, fuzzy
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr "ingingo Kuri Amahitamo kugirango Amahitamo"
+
+#: src/od.c:323
+#, fuzzy
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr "-A Aderesi radix IDOSIYE j Bayite Iyinjiza Bayite"
+
+#: src/od.c:327
+#, fuzzy
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+"-Gusoma Bayite Kuri Iyinjiza Ikurikiranyanyuguti Ibisohoka "
+"Ikurikiranyanyuguti Bya ku Igishushanyo T Imiterere Guhitamo Ibisohoka "
+"Imiterere Cyangwa v Ibisohoka OYA Gukoresha Kuri Ikimenyetso Umurongo W "
+"Ubugari Ibisohoka Bayite Ibisohoka Kwemera ingingo in"
+
+#: src/od.c:337
+#, fuzzy
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"Imiterere Gicurasi a Nka T a Guhitamo B Nka T Guhitamo C Nka T C Guhitamo "
+"Inyuguti Cyangwa D Nka T Guhitamo Bitashizweho umukono NYACUMI 2. Bayite"
+
+#: src/od.c:345
+#, fuzzy
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+"-F Nka T Guhitamo i Nka T Guhitamo NYACUMI L Nka T Guhitamo NYACUMI o Nka T "
+"Guhitamo 2. Bayite S Nka T Guhitamo NYACUMI 2. Bayite X Nka T Guhitamo 2. "
+"Bayite"
+
+#: src/od.c:353
+#, fuzzy
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"Itangira Na ISEGONDA Imiterere Byombi Gukurikiza i ISEGONDA Imiterere ni i "
+"Iheruka Na: Cyangwa NIBA 2. a j ni i Itangira Bayite Byacapwe Ryari: ni Na a "
+"Cyangwa Imbanziriza Imigereka Gicurasi kugirango Na B kugirango Gukuba ku ni "
+"Hejuru Bya Cyangwa Birenzeho Bya a C Inyuguti Cyangwa"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+#, fuzzy
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+"D NYACUMI Bayite F Bihindagurika Akadomo Bayite o Bayite u Bitashizweho "
+"umukono NYACUMI Bayite X Bayite"
+
+#: src/od.c:376
+#, fuzzy
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"ni a Umubare in Gicurasi C INYUGUTI kugirango kugirango INT Cyangwa ni F "
+"Gicurasi kugirango Kureremba MAHARAKUBIRI Cyangwa kugirango MAHARAKUBIRI"
+
+#: src/od.c:383
+#, fuzzy
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"ni D kugirango NYACUMI o kugirango X kugirango Cyangwa N kugirango Ntacyo ni "
+"Na: Cyangwa Imbanziriza ni ku B Ingereka ku Na: K Na ku Na: M a Z Ingereka "
+"Ubwoko a Kugaragaza Bya Gicapika Inyuguti Kuri i Impera Bya Ibisohoka"
+
+#: src/od.c:391
+#, fuzzy
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr "--Ikurikiranyanyuguti a Umubare 3. Ubugari a Mburabuzi A o T W"
+
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "Sibyo Ubwoko Ikurikiranyanyuguti"
+
+#: src/od.c:693
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr "Sibyo Ubwoko Ikurikiranyanyuguti iyi Sisitemu a Umubare Wuzuye Ubwoko"
+
+#: src/od.c:812
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"Sibyo Ubwoko Ikurikiranyanyuguti iyi Sisitemu a Bihindagurika Akadomo Ubwoko"
+
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "Sibyo Inyuguti in Ubwoko Ikurikiranyanyuguti"
+
+#: src/od.c:1096
+#, fuzzy, c-format
+msgid "cannot skip past end of combined input"
+msgstr "Impera Bya Iyinjiza"
+
+#: src/od.c:1644
+#, fuzzy, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr "Sibyo Ibisohoka Aderesi radix Inyuguti Bivuye"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr ""
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr ""
+
+#: src/od.c:1675
+#, fuzzy
+msgid "minimum string length"
+msgstr "Gito Ikurikiranyanyuguti Uburebure"
+
+#: src/od.c:1747
+#, fuzzy
+msgid "width specification"
+msgstr "Ubugari"
+
+#: src/od.c:1769
+#, fuzzy, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "Oya Ubwoko Gicurasi Ryari: Ikurikiranyanyuguti"
+
+#: src/od.c:1844
+#, fuzzy
+msgid "Compatibility mode supports at most one file."
+msgstr "Ubwoko ku IDOSIYE"
+
+#: src/od.c:1865
+#, fuzzy, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr "Bayite Gusoma Bayite ni Binini"
+
+#: src/od.c:1908
+#, fuzzy, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "Iburira Sibyo Ubugari ikoresha"
+
+#: src/od.c:1924
+#, fuzzy, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d:Ubugari"
+
+#: src/paste.c:202
+#, fuzzy, c-format
+msgid "standard input is closed"
+msgstr "Bisanzwe Iyinjiza ni"
+
+#: src/paste.c:421
+#, fuzzy
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Imirongo Bya i Imirongo ku Kuri Bisanzwe Ibisohoka Oya Cyangwa Ryari: ni "
+"Gusoma Bisanzwe Iyinjiza"
+
+#: src/paste.c:430
+#, fuzzy
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr "-D Inyuguti Bivuye Bya S Komeka IDOSIYE ku a Igihe Bya in"
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr ""
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "Inyuguti in IDOSIYE Izina:"
+
+#: src/pathchk.c:282
+#, fuzzy, c-format
+msgid "empty file name"
+msgstr "Ibisanzwe ubusa IDOSIYE"
+
+#: src/pathchk.c:324
+#, fuzzy, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr "%s:Kuri Kinini IDOSIYE Izina: Uburebure"
+
+#: src/pathchk.c:335
+#, fuzzy, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr "ku Uburebure Bya IDOSIYE Izina:"
+
+#: src/pathchk.c:421
+#, fuzzy, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr "ku Uburebure Bya IDOSIYE Izina:"
+
+# svx/source\dialog\hyperdlg.src:RID_SVXPAGE_HYPERLINK_INTERNET.FT_LOGIN.text
+#: src/pinky.c:327
+#, fuzzy, c-format
+msgid "Login name: "
+msgstr "Izina ryo kwinjira"
+
+#: src/pinky.c:330
+#, fuzzy, c-format
+msgid "In real life: "
+msgstr "Ubuzima"
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr ""
+
+# setup2/source\ui\pages\pwsetup.src:RESID_PAGE_PAGEWRONGSETUP.FT_INFO3.text
+#: src/pinky.c:353
+#, fuzzy, c-format
+msgid "Directory: "
+msgstr "bushyinguro"
+
+#: src/pinky.c:355
+#, fuzzy, c-format
+msgid "Shell: "
+msgstr "Igikonoshwa"
+
+# svtools/source\misc\mediatyp.src:STR_SVT_MIMETYPE_CNT_PUBLBOX.text
+#: src/pinky.c:376
+#, fuzzy, c-format
+msgid "Project: "
+msgstr "Umushinga"
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr ""
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Iyugurura/Ifungura"
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr "Izina"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr ""
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr ""
+
+#: src/pinky.c:427
+#, fuzzy
+msgid "When"
+msgstr "Ryari:"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr ""
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr ""
+
+#: src/pinky.c:511
+#, fuzzy
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"-L Imiterere Ibisohoka kugirango i B i Ku Ntangiriro bushyinguro Na "
+"Igikonoshwa in h i Umushinga IDOSIYE in P i IDOSIYE in S Imiterere Ibisohoka "
+"iyi ni i"
+
+#: src/pinky.c:519
+#, fuzzy
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+"-F i Umurongo Bya Inkingi Imitwe in W i Izina: in i i Izina: Na Ubuturo in Q "
+"i Izina: Ubuturo Na in"
+
+#: src/pinky.c:528
+#, fuzzy, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr "A Porogaramu Gucapa Ukoresha: Ibisobanuro IDOSIYE"
+
+#: src/pinky.c:612
+#, fuzzy, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr "Oya Izina ry'ukoresha ku Ryari: ikoresha L"
+
+#: src/pr.c:807 src/pr.c:817
+#, fuzzy
+msgid "page range"
+msgstr "Urutonde"
+
+#: src/pr.c:914
+#, fuzzy, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "`--Amapaji Ibuze"
+
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "Ipaji Urutonde"
+
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "`-L Sibyo Umubare Bya Imirongo"
+
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "`-Sibyo Umurongo Umubare"
+
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "`-o Sibyo Umurongo Nta- boneza"
+
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-W Sibyo Umubare Bya Inyuguti"
+
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-Sibyo Umubare Bya Inyuguti"
+
+#: src/pr.c:1102
+#, fuzzy, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "Umubare Bya Inkingi Ryari: Icapa... in Biteganye"
+
+#: src/pr.c:1106
+#, fuzzy, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "Byombi Icapa... Kwambukiranya Na Icapa... in Biteganye"
+
+#: src/pr.c:1202
+#, fuzzy, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "`-%c'Birenga Inyuguti Cyangwa Sibyo Umubare in i"
+
+#: src/pr.c:1312
+#, fuzzy, c-format
+msgid "page width too narrow"
+msgstr "Ipaji Ubugari"
+
+#: src/pr.c:2376
+#, fuzzy, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr "Ipaji Umubare Ipaji IBARA"
+
+#: src/pr.c:2406
+#, fuzzy, c-format
+msgid "Page number overflow"
+msgstr "Umubare Byarenze urugero"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+#, fuzzy
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr "Cyangwa S kugirango Icapa..."
+
+#: src/pr.c:2779
+#, fuzzy
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+"+Amapaji Guhagarara Icapa... Na: Ipaji Inkingi Ibisohoka Inkingi Na Gucapa "
+"Inkingi Hasi a ni Umubare Bya Imirongo in Inkingi ku Ipaji"
+
+#: src/pr.c:2787
+#, fuzzy
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+"-a Kwambukiranya Gucapa Inkingi Kwambukiranya Hasi Na: C Garagaza Igenzura "
+"Gukoresha Na D MAHARAKUBIRI MAHARAKUBIRI Umwanya i"
+
+#: src/pr.c:2795
+#, fuzzy
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+"-Itariki Imiterere Gukoresha kugirango i Umutwempangano E Kwagura Amasimbuka "
+"Kwagura Iyinjiza Kuri Isunika 8 F Ifishi Gukoresha Ifishi Bya Kuri ku a 3. "
+"Umurongo Ipaji Umutwempangano Na: Cyangwa a 5 Umurongo Na"
+
+#: src/pr.c:2805
+#, fuzzy
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+"-h Umutwempangano Gukoresha a Bishyizwe hagati Bya Izina ry'idosiye: in "
+"Ipaji Umutwempangano h a Ahatanditseho Umurongo Gukoresha h i Ibisohoka "
+"Amasimbuka Gusimbura Imyanya Na: Kuri Isunika 8 Imirongo Gukomatanya "
+"Imirongo Bidakora Umurongo Oya Itunganya Itandukanya Ikurikiranyanyuguti"
+
+#: src/pr.c:2814
+#, fuzzy
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+"-L Uburebure Gushyiraho i Ipaji Uburebure Kuri Mburabuzi Umubare Bya "
+"Imirongo Bya Umwandiko Na Na: M Gukomatanya Gucapa Byose Idosiye in "
+"Biteganye in Inkingi Imirongo Imirongo Bya Uburebure Na:"
+
+#: src/pr.c:2821
+#, fuzzy
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+"-N Umubare Imirongo Umubare Imirongo Gukoresha 5 Hanyuma Mburabuzi Kubara "
+"Na: Umurongo Bya Iyinjiza Itangira Umurongo Umubare Gutangira Kubara Na: ku "
+"Umurongo Bya Ipaji Byacapwe"
+
+#: src/pr.c:2829
+#, fuzzy
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+"-o Ikurura Nta- boneza Umurongo Na: Zeru Imyanya W Cyangwa Kyongewe Kuri R "
+"Oya IDOSIYE Iburira Ryari: a IDOSIYE"
+
+#: src/pr.c:2836
+#, fuzzy
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+"-S Mutandukanya Inkingi ku a UMWE Inyuguti Mburabuzi kugirango ni i Inyuguti "
+"W Na Oya Na: S Bidakora Umurongo Bya Byose 3. Amahitamo a M W ni"
+
+#: src/pr.c:2843
+#, fuzzy
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr "-Itandukanya Ikurikiranyanyuguti"
+
+#: src/pr.c:2846
+#, fuzzy
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+"Inkingi ku Mutandukanya Na: Na Umwanya Nka Oya INGARUKA ku Inkingi T "
+"Umutwempangano Ipaji Imitwe Na"
+
+#: src/pr.c:2852
+#, fuzzy
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+"-Ipaji Imitwe Na ku Ifishi Gushyiraho in Iyinjiza v Garagaza Gukoresha W "
+"Ubugari Gushyiraho Ipaji Ubugari Kuri Inyuguti Igikubo Umwandiko Inkingi "
+"Ibisohoka S INYUGUTI Bidakora"
+
+#: src/pr.c:2862
+#, fuzzy
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+"-Ipaji Ubugari Gushyiraho Ipaji Ubugari Kuri Inyuguti Buri gihe Imirongo "
+"Ihitamo ni Gushyiraho Oya Na: Cyangwa"
+
+#: src/pr.c:2870
+#, fuzzy
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr "-ku L Ryari: 10 Cyangwa 3. Na: Oya Cyangwa ni Gusoma Bisanzwe Iyinjiza"
+
+#: src/printenv.c:61
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr "Cyangwa Oya Gucapa Byose"
+
+#: src/printf.c:80
+#, fuzzy, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr "Iburira Inyuguti S Inyuguti"
+
+#: src/printf.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr "Cyangwa"
+
+#: src/printf.c:98
+#, fuzzy
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr "S Kuri"
+
+#: src/printf.c:104
+#, fuzzy
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"Amagenzura i Ibisohoka Nka in C MAHARAKUBIRI Inyuguti Na: Agaciro 1. Kuri 3."
+
+#: src/printf.c:112
+#, fuzzy
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr "\\aIkimenyetso Oya Ifishi"
+
+#: src/printf.c:118
+#, fuzzy
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+"\n"
+"N Gishya Gitambitse Bihagaritse"
+
+#: src/printf.c:124
+#, fuzzy
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+"\\xBayite Na: Agaciro 1. Kuri 2. Inyuguti Na: Agaciro 4. Inyuguti Na: "
+"Agaciro 8"
+
+#: src/printf.c:129
+#, fuzzy
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+"%%a UMWE Nka a Ikurikiranyanyuguti Na: Bya i Ifishi Cyangwa Byose C "
+"Imiterere Na: Bya Kuri NYACYO Ubwoko Itangira"
+
+#: src/printf.c:154
+#, fuzzy, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s:Ikitezwe: a Bikurikije umubare Agaciro"
+
+#: src/printf.c:156
+#, fuzzy, c-format
+msgid "%s: value not completely converted"
+msgstr "%s:Agaciro OYA"
+
+#: src/printf.c:250 src/printf.c:277
+#, fuzzy, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "Ibuze Umubare in"
+
+#: src/printf.c:289
+#, fuzzy, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "Sibyo Ky'isi yose Inyuguti Izina: C"
+
+#: src/printf.c:550
+#, fuzzy, c-format
+msgid "invalid field width: %s"
+msgstr "Sibyo Umwanya Ubugari"
+
+#: src/printf.c:585
+#, fuzzy, c-format
+msgid "invalid precision: %s"
+msgstr "Sibyo"
+
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr ""
+"%.*Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+"."
+
+#: src/printf.c:683
+#, fuzzy, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "Iburira ingingo Na:"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr ""
+
+#: src/ptx.c:422
+#, fuzzy, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s(kugirango"
+
+#: src/ptx.c:1883
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Cyangwa"
+
+#: src/ptx.c:1887
+#, fuzzy
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr "a Umubarendanga Imvugiro Bya i Amagambo in i Iyinjiza Idosiye"
+
+#: src/ptx.c:1894
+#, fuzzy
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+"-A Ikiyega Indango Ibisohoka ku buryo bwikora C Uburenganzira bw'umuhimbyi "
+"Kugaragaza Na Birenzeho nka V Ibendera Gukoresha kugirango Umurongo"
+
+#: src/ptx.c:1899
+#, fuzzy
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+"-Makoro Izina: Makoro Izina: Kuri Gukoresha Bya Imiterere Ibisohoka Nka "
+"Iburyo: Gushyira Indango ku Iburyo: OYA in kugirango Impera Bya Imirongo "
+"Cyangwa Impera Bya Imiterere Ibisohoka Nka"
+
+#: src/ptx.c:1906
+#, fuzzy
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+"-ijambo Gukoresha Kuri BIHUYE B itandukanya IDOSIYE ijambo itandukanya "
+"Inyuguti in iyi F Kwirengagiza Guhina Ntoya Kuri Nkuru kugirango g Umwanya "
+"Ingano Umwanya Ingano in Inkingi hagati Ibisohoka i Kwirengagiza IDOSIYE "
+"Gusoma Kwirengagiza ijambo Urutonde Bivuye o IDOSIYE Gusoma ijambo Urutonde "
+"Bivuye iyi"
+
+#: src/ptx.c:1914
+#, fuzzy
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+"-R Indango Itangira Umwanya Bya Umurongo ni a T Ubwoko OYA W Ubugari "
+"Ibisohoka Ubugari in Inkingi Indango"
+
+#: src/ptx.c:1921
+#, fuzzy
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr "Oya Cyangwa NIBA ni Gusoma ku Mburabuzi"
+
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "Sibyo Umwanya Ubugari"
+
+#: src/ptx.c:2089
+#, fuzzy, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr "i Kwemerera Ibuze Ihitamo ni Bitemewe. Gukoresha Ongera ugerageze"
+
+#: src/pwd.c:55
+#, fuzzy
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr "i Izina ry'idosiye: Bya i KIGEZWEHO bushyinguro"
+
+#: src/pwd.c:160
+#, fuzzy, c-format
+msgid "failed to chdir to %s"
+msgstr "Byanze Kuri Kuri"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "Byanze Kuri"
+
+#: src/pwd.c:229
+#, fuzzy, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr "Gushaka bushyinguro Icyinjijwe in Na: i"
+
+#: src/pwd.c:306
+#, fuzzy, c-format
+msgid "ignoring non-option arguments"
+msgstr "Ihitamo ingingo"
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr ""
+
+#: src/readlink.c:68
+#, fuzzy
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr "Agaciro Bya a Ihuza ku Bisanzwe Ibisohoka"
+
+#: src/readlink.c:70
+#, fuzzy
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+"-F ku buri buri Bya i Inzira Byose i Iheruka Inzira E ku buri buri Bya i "
+"Inzira Byose Inzira M Ibuze ku buri buri Bya i Inzira ku N Oya OYA Ibisohoka "
+"i Q S Ikosa v Icyegeranyo Ikosa"
+
+#: src/readlink.c:78
+#, fuzzy
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+"-F ku buri buri Bya i Inzira Byose i Iheruka Inzira E ku buri buri Bya i "
+"Inzira Byose Inzira M Ibuze ku buri buri Bya i Inzira ku N Oya OYA Ibisohoka "
+"i Q S Ikosa v Icyegeranyo Ikosa"
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "Byanze Kuri Kuri"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "Gufungura bushyinguro"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, fuzzy, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "%sByahinduwe"
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "Kurema bushyinguro"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, fuzzy, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr "bushyinguro Imiterere a IDOSIYE Sisitemu bushyinguro ni Bya i Uruziga"
+
+#: src/remove.c:854
+#, fuzzy, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s:Kumanuka Kwandika Birinzwe bushyinguro"
+
+#: src/remove.c:855
+#, fuzzy, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s:Kumanuka bushyinguro"
+
+#: src/remove.c:865
+#, fuzzy, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s:Gukuraho... Kwandika Birinzwe"
+
+# sfx2/source\toolbox\tbxcust.src:RID_TOOLBOXCUSTOMIZE.BTN_TB_REMOVE.text
+#: src/remove.c:866
+#, fuzzy, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s:Gukuraho"
+
+#: src/remove.c:925 src/remove.c:1429
+#, fuzzy, c-format
+msgid "removed directory: %s\n"
+msgstr "Cyavanyweho bushyinguro"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "Byanze Kuri Kuri"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, fuzzy, c-format
+msgid "cannot remove directory %s"
+msgstr "Gukuraho... bushyinguro"
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr ""
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "Gukuraho... bushyinguro"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "Gukuraho... bushyinguro"
+
+#: src/remove.c:1558
+#, fuzzy, c-format
+msgid "cannot restore current working directory"
+msgstr "Kugarura KIGEZWEHO bushyinguro"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr ""
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+"--Oya Imizi OYA i Mburabuzi Imizi Kuri ku R Gukuraho... i Ibigize Bya "
+"ububiko bw'amaderese v ni"
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, fuzzy, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"Gukuraho... a IDOSIYE bya Izina: Na: a kugirango Urugero Gukoresha Bya "
+"Amabwiriza"
+
+#: src/rm.c:201
+#, fuzzy
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"NIBA Gukoresha Kuri Gukuraho... a IDOSIYE ni Kuri Ibigize Bya IDOSIYE "
+"Birenzeho i Ibigize ikoresha"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+# sfx2/source\toolbox\tbxcust.src:RID_TOOLBOXCUSTOMIZE.BTN_TB_REMOVE.text
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s:Gukuraho"
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, fuzzy, c-format
+msgid "removing directory, %s"
+msgstr "bushyinguro"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr ""
+
+#: src/rmdir.c:141
+#, fuzzy
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr "i NIBA ubusa Kwirengagiza ku Kwirengagiza ni a ni"
+
+#: src/rmdir.c:148
+#, fuzzy
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr "-E. g."
+
+#: src/seq.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr "Cyangwa Cyangwa"
+
+#: src/seq.c:79
+#, fuzzy
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"Imibare Bivuye Kuri in Intambwe Bya F Imiterere Gukoresha IMISUSIRE "
+"Bihindagurika Akadomo Mburabuzi S Mutandukanya Gukoresha Kuri Imibare "
+"Mburabuzi N W bingana Ubugari Ubugari ku Wuzuza: Na: Nyobora"
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"Cyangwa ni Kuri 1. ni Kuri 1. ATARIIGIHARWE Ryari: ni Gitoya Na Nka "
+"Bihindagurika Akadomo Uduciro ni NIBA ni Gitoya ni NIBA ni Biruta i "
+"IMISUSIRE Bihindagurika Akadomo Ibisohoka Imiterere"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, fuzzy, c-format
+msgid "invalid floating point argument: %s"
+msgstr "Sibyo Bihindagurika Akadomo"
+
+#: src/seq.c:342
+#, fuzzy, c-format
+msgid "invalid format string: %s"
+msgstr "Sibyo Imiterere Ikurikiranyanyuguti"
+
+#: src/seq.c:364
+#, fuzzy, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr ""
+"Imiterere Ikurikiranyanyuguti Gicurasi OYA Ryari: Icapa... bingana Ubugari "
+"Ikurikiranyanyuguti"
+
+#: src/setuidgid.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr "Cyangwa"
+
+#: src/setuidgid.c:57
+#, fuzzy
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+"Amatsinda i Ukoresha: Na Itsinda Na Gukoresha Na: Na: Imimerere NIBA Kuri i "
+"Bya ngombwa Na Gusohoka Na: i Gusohoka Imimerere Bya Porogaramu ni Ryari: "
+"Gukoresha ku Imizi 0"
+
+#: src/setuidgid.c:105
+#, fuzzy, c-format
+msgid "unknown user-ID: %s"
+msgstr "Kitazwi Ukoresha:"
+
+#: src/setuidgid.c:109
+#, fuzzy, c-format
+msgid "cannot set supplemental group"
+msgstr "Gushyiraho Itsinda"
+
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "Gushyiraho Itsinda Kuri"
+
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "Gushyiraho Ukoresha: Kuri"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr ""
+
+#: src/shred.c:166
+#, fuzzy
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"Gusimbuza i S in Itondekanya Kuri Ubwoko ATARIIGIHARWE Kuri i Ibyatanzwe"
+
+#: src/shred.c:174
+#, fuzzy, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+"-F Guhindura>> Uruhushya Kuri Kwemerera NIBA N Amasubiramo Gusimbuza Times "
+"Bya i Mburabuzi S Ingano iyi Bayite Imigereka nka Byemewe"
+
+#: src/shred.c:180
+#, fuzzy
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+"-u Gukuraho... Na Gukuraho... IDOSIYE Nyuma v Garagaza X NYACYO OYA "
+"IBURUNGUSHURA IDOSIYE Hejuru Kuri i Komeza>> Funga iyi ni i Mburabuzi "
+"kugirango Ibisanzwe Z Zeru Kongeramo a Guhindura Na: Kuri Gushisha"
+
+#: src/shred.c:189
+#, fuzzy
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"ni Bisanzwe Ibisohoka S NIBA Gukuraho... u ni Mburabuzi ni OYA Kuri Idosiye "
+"ni Kuri ku APAREYE Idosiye nka Na Idosiye OYA Cyavanyweho ku Abantu "
+"Gukoresha i Gukuraho... Ihitamo"
+
+#: src/shred.c:199
+#, fuzzy
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"ku a By'ingirakamaro i IDOSIYE Sisitemu Ibyatanzwe in ni i Kuri BIGEZWEHO "
+"IDOSIYE Sisitemu OYA Bya IDOSIYE ku CYUZUYE"
+
+#: src/shred.c:207
+#, fuzzy
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"*LOG Cyangwa IDOSIYE Nka Na Na IDOSIYE Kwandika Ibyatanzwe Na ku "
+"ATARIIGIHARWE NIBA Nka IDOSIYE IDOSIYE Ubwoko Nka"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+#, fuzzy
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+"*IDOSIYE Ubwihisho in By'igihe gito Nka Verisiyo 3. Byegeranijwe IDOSIYE "
+"Guteranya+ IDOSIYE Sisitemu Ibyashyinguwe Na Gicurasi i IDOSIYE Cyavanyweho "
+"Na Kwemerera a"
+
+#: src/shred.c:303
+#, fuzzy, c-format
+msgid "%s: fdatasync failed"
+msgstr "%s:Byanze"
+
+#: src/shred.c:314
+#, fuzzy, c-format
+msgid "%s: fsync failed"
+msgstr "%s:Byanze"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr ""
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr ""
+
+#: src/shred.c:460
+#, fuzzy, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s:Ikosa ku Nta- boneza"
+
+#: src/shred.c:478
+#, fuzzy, c-format
+msgid "%s: lseek failed"
+msgstr "%s:Byanze"
+
+#: src/shred.c:489
+#, fuzzy, c-format
+msgid "%s: file too large"
+msgstr "%s:IDOSIYE Binini"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr ""
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr ""
+
+#: src/shred.c:776
+#, fuzzy, c-format
+msgid "%s: fstat failed"
+msgstr "%s:Byanze"
+
+#: src/shred.c:787
+#, fuzzy, c-format
+msgid "%s: invalid file type"
+msgstr "%s:Sibyo IDOSIYE Ubwoko"
+
+#: src/shred.c:806
+#, fuzzy, c-format
+msgid "%s: file has negative size"
+msgstr "%s:IDOSIYE Ingano"
+
+#: src/shred.c:873
+#, fuzzy, c-format
+msgid "%s: error truncating"
+msgstr "%s:Ikosa"
+
+#: src/shred.c:889
+#, fuzzy, c-format
+msgid "%s: fcntl failed"
+msgstr "%s:Byanze"
+
+#: src/shred.c:894
+#, fuzzy, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s:Kongeraho... IDOSIYE"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr ""
+
+#: src/shred.c:996
+#, fuzzy, c-format
+msgid "%s: renamed to %s"
+msgstr "%s:Kuri"
+
+#: src/shred.c:1018
+#, fuzzy, c-format
+msgid "%s: failed to remove"
+msgstr "%s:Byanze Kuri Gukuraho..."
+
+#: src/shred.c:1022
+#, fuzzy, c-format
+msgid "%s: removed"
+msgstr "%s:Cyavanyweho"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, fuzzy, c-format
+msgid "%s: failed to close"
+msgstr "%s:Byanze Kuri Gufunga"
+
+#: src/shred.c:1065
+#, fuzzy, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s:Byanze Kuri Gufungura kugirango"
+
+#: src/shred.c:1130
+#, fuzzy, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s:Sibyo Umubare Bya"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "Igikubo Ibisohoka Idosiye"
+
+#: src/shred.c:1153
+#, fuzzy, c-format
+msgid "%s: invalid file size"
+msgstr "%s:Sibyo IDOSIYE Ingano"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr "Cyangwa Cyangwa"
+
+#: src/shuf.c:57
+#, fuzzy
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr "Byahiswemo Bya Imirongo Bivuye Kuri Bisanzwe Ibisohoka"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "Igikubo L Cyangwa T Amahitamo"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "Sibyo Iyinjiza Ibendera"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "Sibyo Umurongo Ubugari"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, fuzzy, c-format
+msgid "multiple output files specified"
+msgstr "Igikubo Ibisohoka Idosiye"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "Kuvanga Ubwoko Na Indango Amahitamo"
+
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr "Birenga"
+
+#: src/sleep.c:47
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Cyangwa kugirango amasogonda Gicurasi kugirango amasogonda i Mburabuzi "
+"kugirango Iminota kugirango amasaha Cyangwa kugirango Iminsi Umubare wuzuye "
+"Gicurasi Umubare"
+
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "Sibyo Igihe Intera"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, fuzzy, c-format
+msgid "cannot read realtime clock"
+msgstr "Gusoma"
+
+#: src/sort.c:310
+#, fuzzy
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr "bishunguwe Bya Byose S Kuri Bisanzwe Ibisohoka Amahitamo"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+#, fuzzy
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+"-B Kwirengagiza Nyobora Kwirengagiza Nyobora D Inkoranyamagambo Itondekanya "
+"Na Gikurikije itondenyuguti F Kwirengagiza Guhina Ntoya Kuri Nkuru"
+
+#: src/sort.c:326
+#, fuzzy
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+"-g Rusange Bikurikije umubare Ishungura Kugereranya# Kuri Rusange Mbarika i "
+"Kwirengagiza Gicapika Ukwezi Ishungura Kugereranya# Kitazwi N Bikurikije "
+"umubare Ishungura Kugereranya# Kuri Ikurikiranyanyuguti Mbarika R "
+"Ihindurakerekezo Ihindurakerekezo i Igisubizo Bya"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+#, fuzzy
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+"Amahitamo C Kugenzura... Kugenzura... Iyinjiza ni bishunguwe OYA K "
+"Urufunguzo Gutangira a Urufunguzo ku Impera ku 2. Inkomoko 1. M Gukomatanya "
+"Gukomatanya bishunguwe Idosiye OYA o Ibisohoka Kwandika Igisubizo Kuri Bya "
+"Bisanzwe S Ishungura ku Iheruka Ingano Gukoresha kugirango Ububiko"
+
+#: src/sort.c:351
+#, fuzzy, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+"-T Umwanya Mutandukanya Gukoresha Bya Ahatanditseho Kuri Ahatanditseho "
+"By'igihe gito bushyinguro Gukoresha kugirango OYA Cyangwa Igikubo Amahitamo "
+"Igikubo u Cyo nyine Na: C Kugenzura... kugirango C Ibisohoka i Itangira Bya "
+"bingana"
+
+#: src/sort.c:358
+#, fuzzy
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr "-Z Zeru Impera Imirongo Na: 0 Bayite OYA"
+
+#: src/sort.c:363
+#, fuzzy
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"ni C ni i Umwanya Umubare Na C i Inyuguti i Umwanya ni Cyangwa Birenzeho "
+"UMWE Ibaruwa... Amahitamo Amahitamo kugirango Urufunguzo Oya Urufunguzo ni "
+"Gukoresha Umurongo Nka i Urufunguzo Gicurasi ku i Imigereka"
+
+#: src/sort.c:373
+#, fuzzy
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"%1. Bya Ububiko B 1. Mburabuzi Na ku kugirango E Oya Cyangwa Ryari: ni "
+"Gusoma Bisanzwe Iyinjiza Umwanya ku i Ishungura Itondekanya C Kuri Kubona i "
+"Ishungura Itondekanya Bayite Uduciro"
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "Kuri"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+#, fuzzy
+msgid "cannot create temporary file"
+msgstr "Kurema By'igihe gito IDOSIYE"
+
+#: src/sort.c:736 src/sort.c:3122
+#, fuzzy
+msgid "open failed"
+msgstr "Gufungura Byanze"
+
+#: src/sort.c:758
+#, fuzzy
+msgid "fflush failed"
+msgstr "Byanze"
+
+#: src/sort.c:763 src/sort.c:3171
+#, fuzzy
+msgid "close failed"
+msgstr "Gufunga Byanze"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "Gufungura Byanze"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr ""
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "Kurema By'igihe gito IDOSIYE"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "Kurema By'igihe gito IDOSIYE"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr ""
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "Kurema bushyinguro"
+
+#: src/sort.c:938
+#, fuzzy
+msgid "write failed"
+msgstr "Kwandika Byanze"
+
+#: src/sort.c:975
+#, fuzzy, c-format
+msgid "warning: cannot remove: %s"
+msgstr "Iburira Gukuraho..."
+
+#: src/sort.c:1092
+#, fuzzy
+msgid "sort size"
+msgstr "Ishungura Ingano"
+
+#: src/sort.c:1171
+#, fuzzy
+msgid "stat failed"
+msgstr "Byanze"
+
+#: src/sort.c:1435
+#, fuzzy
+msgid "read failed"
+msgstr "Gusoma Byanze"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr ""
+
+#: src/sort.c:1955
+#, fuzzy
+msgid "standard error"
+msgstr "Bisanzwe Ikosa"
+
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s:Sibyo Umwanya"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s:Sibyo IBARA ku Gutangira Bya"
+
+#: src/sort.c:2887
+#, fuzzy
+msgid "invalid number after `-'"
+msgstr "Sibyo Umubare Nyuma"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+#, fuzzy
+msgid "invalid number after `.'"
+msgstr "Sibyo Umubare Nyuma"
+
+#: src/sort.c:2893 src/sort.c:2988
+#, fuzzy
+msgid "stray character in field spec"
+msgstr "Inyuguti in Umwanya"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "Igikubo Intego ububiko bw'amaderese"
+
+#: src/sort.c:2943
+#, fuzzy
+msgid "invalid number at field start"
+msgstr "Sibyo Umubare ku Umwanya Gutangira"
+
+#: src/sort.c:2947 src/sort.c:2975
+#, fuzzy
+msgid "field number is zero"
+msgstr "Umwanya Umubare ni Zeru"
+
+#: src/sort.c:2956
+#, fuzzy
+msgid "character offset is zero"
+msgstr "Inyuguti Nta- boneza ni Zeru"
+
+#: src/sort.c:2971
+#, fuzzy
+msgid "invalid number after `,'"
+msgstr "Sibyo Umubare Nyuma"
+
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "Birenga OYA Na: C"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr ""
+
+#: src/split.c:110
+#, fuzzy
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"BIHAMYE Ingano Bya Kuri ni 1000 Imirongo Na Mburabuzi ni Oya Cyangwa Ryari: "
+"Gusoma Bisanzwe Iyinjiza"
+
+#: src/split.c:119
+#, fuzzy, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+"-a Ingereka Uburebure Gukoresha Imigereka Bya Uburebure Mburabuzi B Bayite "
+"Gushyira Bayite Ibisohoka C Umurongo Bayite Gushyira ku Bayite Bya Imirongo "
+"Ibisohoka D Bikurikije umubare Imigereka Gukoresha Bikurikije umubare "
+"Imigereka Bya L Imirongo Gushyira Imirongo Ibisohoka"
+
+#: src/split.c:126
+#, fuzzy
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr "--Gucapa a Kuri Bisanzwe Ikosa Mbere Ibisohoka IDOSIYE ni"
+
+#: src/split.c:132
+#, fuzzy
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr "Gicurasi a Ingereka B kugirango K kugirango M kugirango 1."
+
+#: src/split.c:193
+#, fuzzy, c-format
+msgid "Output file suffixes exhausted"
+msgstr "IDOSIYE Imigereka"
+
+#: src/split.c:211
+#, fuzzy, c-format
+msgid "creating file %s\n"
+msgstr "IDOSIYE"
+
+#: src/split.c:370
+#, fuzzy, c-format
+msgid "cannot split in more than one way"
+msgstr "Gutandukanya in Birenzeho"
+
+#: src/split.c:420
+#, fuzzy, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s:Sibyo Ingereka Uburebure"
+
+#: src/split.c:434 src/split.c:458
+#, fuzzy, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s:Sibyo Umubare Bya Bayite"
+
+#: src/split.c:446
+#, fuzzy, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s:Sibyo Umubare Bya Imirongo"
+
+#: src/split.c:487
+#, fuzzy, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "Umurongo IBARA Ihitamo ni Binini"
+
+#: src/split.c:518
+#, fuzzy, c-format
+msgid "invalid number of lines: 0"
+msgstr "Sibyo Umubare Bya Imirongo 0"
+
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s:Ihitamo"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%s:Sibyo IDOSIYE Ingano"
+
+#: src/stat.c:726
+#, c-format
+msgid "warning: backslash at end of format"
+msgstr ""
+
+#: src/stat.c:755
+#, fuzzy, c-format
+msgid "cannot read file system information for %s"
+msgstr "Gusoma IDOSIYE Sisitemu Ibisobanuro kugirango"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr ""
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+#, fuzzy
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"Byemewe Imiterere kugirango Idosiye IDOSIYE Sisitemu in in Ingano in Bayite "
+"Bya Funga ku Bya"
+
+#: src/stat.c:857
+#, fuzzy
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr "%DUmubare in Umubare in Idosiye Ubwoko in Izina: Bya Bya"
+
+#: src/stat.c:865
+#, fuzzy
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+"%hBya Ikomeye Idosiye Izina: Na: NIBA Idosiye Funga Ingano in APAREYE Ubwoko "
+"in APAREYE Ubwoko in"
+
+#: src/stat.c:875
+#, fuzzy
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+"%UIzina: Bya Bya Bya Iheruka Nka amasogonda guhera Bya Iheruka Bya Iheruka "
+"Nka amasogonda guhera Bya Iheruka Bya Iheruka Guhindura>> Nka amasogonda "
+"guhera Bya Iheruka"
+
+#: src/stat.c:887
+#, fuzzy
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"Imiterere kugirango IDOSIYE Bihari Kuri Ibyatanzwe in IDOSIYE IDOSIYE in "
+"IDOSIYE IDOSIYE in IDOSIYE in IDOSIYE"
+
+#: src/stat.c:896
+#, fuzzy
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr "%iIdosiye ID in Uburebure Bya Idosiye Funga in in"
+
+#: src/stty.c:511
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr "IDOSIYE Cyangwa IDOSIYE a Byose Cyangwa IDOSIYE g Kubika"
+
+#: src/stty.c:517
+#, fuzzy
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Cyangwa Guhindura>> a Byose Gucapa Byose KIGEZWEHO Amagenamiterere in g "
+"Kubika Gucapa Byose KIGEZWEHO Amagenamiterere in a IDOSIYE Gufungura Na "
+"Gukoresha i Bya"
+
+#: src/stty.c:526
+#, fuzzy
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr "Mbere Sisitemu Amagenamiterere Bihari"
+
+#: src/stty.c:531
+#, fuzzy
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"Inyuguti Kohereza a Guhagarara Rimwe Iyinjiza Kohereza Impera Bya IDOSIYE i "
+"Iyinjiza Impera i"
+
+#: src/stty.c:538
+#, fuzzy
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr "*kugirango i i Iheruka Inyuguti Kohereza Hagarikira aho i KIGEZWEHO"
+
+#: src/stty.c:544
+#, fuzzy
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+"*Injiza i Komeza>> Inyuguti Kuvamo Kohereza a Kuvamo Kongera Gushushanya i "
+"KIGEZWEHO Gutangira Ongera utangire i Ibisohoka Nyuma"
+
+#: src/stty.c:550
+#, fuzzy
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+"Guhagarara Guhagarara i Kohereza a Guhagarara Hindura Kuri a Igikonoshwa i "
+"Iheruka ijambo"
+
+#: src/stty.c:556
+#, fuzzy
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"Amagenamiterere Gushyiraho i Iyinjiza Na Ibisohoka Kuri i i Inkingi Nka"
+
+#: src/stty.c:563
+#, fuzzy
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+"Gushyiraho i Iyinjiza Umuvuduko Kuri Umurongo Gukoresha Umurongo GITO Na: "
+"Gushyiraho Inyuguti Gito kugirango a Gushyiraho i Ibisohoka Umuvuduko Kuri"
+
+#: src/stty.c:569
+#, fuzzy
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+"*Imbariro i i Ingano Gucapa i Umubare Bya Imbariro Na Inkingi Kuri i "
+"Umuvuduko Gucapa i Igihe Na: Gushyiraho Gusoma Igihe cyarenze: Bya Bya a"
+
+#: src/stty.c:575
+#, fuzzy
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+"."
+
+#: src/stty.c:583
+#, fuzzy
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+"[-]Gukoresha Guhagarara Inyuguti Na: Kohereza a Ryari: i Iheruka i Nka in "
+"Ibisohoka Na in Gushyiraho IGIHARWE ATARIIGIHARWE Na:"
+
+#: src/stty.c:590
+#, fuzzy
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"Amagenamiterere Amataruka Hagarikira aho translate Garuka Kuri Kwirengagiza "
+"itandukanya Kwirengagiza"
+
+#: src/stty.c:598
+#, fuzzy
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+"[-]Kwirengagiza Inyuguti Na: Na OYA a Iyinjiza ku a translate Kuri Gushoboza "
+"Iyinjiza Gusiba kirekire Bya Iyinjiza"
+
+#: src/stty.c:605
+#, fuzzy
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr "*[-]Iyinjiza Inyuguti 8"
+
+#: src/stty.c:608
+#, fuzzy
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+"*[-]translate Inyuguti nkuru Inyuguti Kuri Inyuguti Ongera utangire "
+"Ibisohoka OYA Gutangira Gushoboza Bya Gutangira Guhagarara Gushoboza "
+"Ikimenyetso Amakosa Na: a 0 Inyuguti Nka"
+
+#: src/stty.c:616
+#, fuzzy
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+"."
+
+#: src/stty.c:624
+#, fuzzy
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+"*[-]translate Garuka Kuri Gukoresha Gusiba Inyuguti kugirango Kuzuza Bya "
+"NTAGIHARI Gukoresha Kuzuza Wuzuza: Inyuguti Bya Kugena igihe kugirango "
+"translate Inyuguti nto Inyuguti Kuri translate Kuri Garuka a"
+
+#: src/stty.c:632
+#, fuzzy
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+"*[-]Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+"."
+
+#: src/stty.c:640
+#, fuzzy
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"Amagenamiterere Inyuguti Nka Gusiba usubira inyuma Umwanya Byose Umurongo ku "
+"i Na Byose Umurongo ku i Na"
+
+#: src/stty.c:647
+#, fuzzy
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr "*[-]Igenzura Inyuguti in Iyinjiza Nka Nka a Nyuma a"
+
+#: src/stty.c:654
+#, fuzzy
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+"*[-]Nka ATARIIGIHARWE NIBA OYA Ikindi Inyuguti subira inyuma hagati Na "
+"Gushoboza Na Bidasanzwe Gushoboza Bidasanzwe"
+
+#: src/stty.c:661
+#, fuzzy
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+"[-]Gushoboza Hagarikira aho Kuvamo Na Bidasanzwe Nyuma Hagarikira aho Na "
+"Kuvamo Bidasanzwe Nka Guhagarara Mbuganyuma Kuri Kwandika Kuri i Na: Na: "
+"kugirango Inyuguti nkuru"
+
+#: src/stty.c:668
+#, fuzzy
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr "Amagenamiterere Nka Nka Nka"
+
+#: src/stty.c:675
+#, fuzzy
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr "Nka Na Inyuguti Kuri Mburabuzi Nka Nka"
+
+#: src/stty.c:681
+#, fuzzy
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr "Ukub.( Ukuboza) Nka C Nka Na Inyuguti Kuri Mburabuzi Nka"
+
+#: src/stty.c:688
+#, fuzzy
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr "-Nka Nka Nka Nka Nka Nka"
+
+#: src/stty.c:696
+#, fuzzy
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr "Nka Nka Nka Nka Nka"
+
+#: src/stty.c:703
+#, fuzzy
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr "Nka GITO 1. Igihe Nka"
+
+#: src/stty.c:709
+#, fuzzy
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr "Nka Byose Inyuguti Kuri Mburabuzi Uduciro"
+
+#: src/stty.c:717
+#, fuzzy
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"i Umurongo Kuri Bisanzwe Iyinjiza ingingo Igipimo Umurongo Na Bivuye ni "
+"Cyangwa Nka in C Bidasanzwe Uduciro Cyangwa Kuri Bidasanzwe Inyuguti"
+
+#: src/stty.c:789
+#, fuzzy, c-format
+msgid "only one device may be specified"
+msgstr "APAREYE Gicurasi"
+
+#: src/stty.c:819
+#, fuzzy, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr "i Amahitamo kugirango Na Ibisohoka Imisusire"
+
+#: src/stty.c:825
+#, fuzzy, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "Ryari: Ibisohoka IMISUSIRE Gicurasi OYA Gushyiraho"
+
+#: src/stty.c:840
+#, fuzzy, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s:Kugarura Ubwoko"
+
+#: src/stty.c:885 src/stty.c:995
+#, fuzzy, c-format
+msgid "invalid argument %s"
+msgstr "Inkoresha siyo"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, fuzzy, c-format
+msgid "missing argument to %s"
+msgstr "Ibuze Kuri"
+
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "Sibyo Umurongo"
+
+#: src/stty.c:1046
+#, fuzzy, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s:Kuri Byose Ibikorwa:"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr ""
+
+#: src/stty.c:1392
+#, fuzzy, c-format
+msgid "%s: no size information for this device"
+msgstr "%s:Oya Ingano Ibisobanuro kugirango iyi APAREYE"
+
+#: src/stty.c:1888
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "Sibyo Umubare wuzuye"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Ijambobanga:"
+
+#: src/su.c:245
+#, fuzzy, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "Gufungura"
+
+#: src/su.c:303
+#, fuzzy, c-format
+msgid "cannot set groups"
+msgstr "Gushyiraho Amatsinda"
+
+#: src/su.c:307
+#, fuzzy, c-format
+msgid "cannot set group id"
+msgstr "Gushyiraho Itsinda ID"
+
+#: src/su.c:309
+#, fuzzy, c-format
+msgid "cannot set user id"
+msgstr "Gushyiraho Ukoresha: ID"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr ""
+
+#: src/su.c:386
+#, fuzzy
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"i CYUZUYE Ukoresha: ID Na Itsinda ID Kuri Bya L Ifashayinjira Ubwoko i "
+"Igikonoshwa a Ifashayinjira C a UMWE Kuri i Igikonoshwa Na: F Byihuta F Kuri "
+"i Igikonoshwa kugirango Cyangwa M OYA Kugarura P Nka S Igikonoshwa Gukoresha "
+"NIBA"
+
+#: src/su.c:398
+#, fuzzy
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr "A L OYA Imizi"
+
+#: src/su.c:475
+#, fuzzy, c-format
+msgid "user %s does not exist"
+msgstr "Ukoresha: OYA"
+
+# basctl/source\basicide\basidesh.src:RID_STR_WRONGPASSWORD.text
+#: src/su.c:498
+#, fuzzy, c-format
+msgid "incorrect password"
+msgstr "ijambobanga si ryo"
+
+#: src/su.c:515
+#, fuzzy, c-format
+msgid "using restricted shell %s"
+msgstr "ikoresha Nta gukoresha bisesuye Igikonoshwa"
+
+#: src/su.c:523
+#, fuzzy, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "Iburira Guhindura>> bushyinguro Kuri"
+
+#: src/sum.c:63
+#, fuzzy
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Na Funga kugirango R S Gukoresha Igiteranyo Gukoresha S Gukoresha V "
+"Igiteranyo Gukoresha Bayite"
+
+#: src/sync.c:46
+#, fuzzy
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr "Byahinduwe Kuri Kuvugurura i hejuru Funga"
+
+#: src/sync.c:74
+#, fuzzy, c-format
+msgid "ignoring all arguments"
+msgstr "Byose ingingo"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#: src/system.h:417
+#, fuzzy
+msgid " --help display this help and exit\n"
+msgstr "--Ifashayobora Kugaragaza iyi Ifashayobora Na"
+
+#: src/system.h:419
+#, fuzzy
+msgid " --version output version information and exit\n"
+msgstr "--Verisiyo Ibisohoka Verisiyo Ibisobanuro Na"
+
+#: src/tac.c:137
+#, fuzzy
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Kuri Bisanzwe Ibisohoka Iheruka Umurongo Itangira Oya Cyangwa Ryari: ni "
+"Gusoma Bisanzwe Iyinjiza"
+
+#: src/tac.c:145
+#, fuzzy
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+"-B Mbere gereka i Mutandukanya Mbere Bya R i Mutandukanya Nka a Ibisanzwe S "
+"Mutandukanya Gukoresha Nka i Mutandukanya Bya"
+
+#: src/tac.c:236 src/tac.c:337
+#, fuzzy, c-format
+msgid "%s: seek failed"
+msgstr "%s:Byanze"
+
+#: src/tac.c:265
+#, fuzzy, c-format
+msgid "record too large"
+msgstr "Icyabitswe Binini"
+
+#: src/tac.c:459
+#, fuzzy, c-format
+msgid "cannot create temporary file %s"
+msgstr "Kurema By'igihe gito IDOSIYE"
+
+#: src/tac.c:466
+#, fuzzy, c-format
+msgid "cannot open %s for writing"
+msgstr "Gufungura kugirango"
+
+#: src/tac.c:487 src/tac.c:494
+#, fuzzy, c-format
+msgid "%s: write error"
+msgstr "%s:Kwandika Ikosa"
+
+#: src/tac.c:601
+#, fuzzy, c-format
+msgid "separator cannot be empty"
+msgstr "Mutandukanya ubusa"
+
+#: src/tail.c:220
+#, fuzzy, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"i Iheruka Imirongo Bya Kuri Bisanzwe Ibisohoka Birenzeho Na: a "
+"Umutwempangano i IDOSIYE Izina: Oya Cyangwa Ryari: ni Gusoma Bisanzwe "
+"Iyinjiza"
+
+#: src/tail.c:229
+#, fuzzy
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr "--E."
+
+#: src/tail.c:237
+#, fuzzy
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr "-F Izina: Ibisohoka Ibyatanzwe Nka i IDOSIYE F Na Nka Izina:"
+
+#: src/tail.c:244
+#, fuzzy, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+"-N Imirongo Ibisohoka i Iheruka Imirongo Bya i Iheruka KININI stats Na: "
+"Izina: a Byahinduwe Ingano Nyuma Mburabuzi Kuri NIBA Cyangwa iyi ni i Bya "
+"LOG Idosiye"
+
+#: src/tail.c:256
+#, fuzzy
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+"--Na: F Nyuma Q Nta narimwe Ibisohoka Imitwe IDOSIYE S Intera Na: F "
+"kugirango Mburabuzi 1. 0 hagati Amasubiramo v Buri gihe Ibisohoka Imitwe "
+"IDOSIYE"
+
+#: src/tail.c:265
+#, fuzzy
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"i Itangira Inyuguti Bya i Umubare Bya Bayite Cyangwa Imirongo ni a Gucapa "
+"Itangiriro Na: i Ikintu Bivuye i Gutangira Bya IDOSIYE Gucapa i Iheruka in i "
+"IDOSIYE Gicurasi a Ingereka B K M"
+
+#: src/tail.c:273
+#, fuzzy
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"F Kuri i IDOSIYE ATARIIGIHARWE NIBA a IDOSIYE ni urifuzagukomeza Kuri Impera"
+
+#: src/tail.c:278
+#, fuzzy
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr "g."
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr ""
+
+#: src/tail.c:411
+#, fuzzy, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s:Kuri Bifitanye isano Nta- boneza"
+
+#: src/tail.c:415
+#, fuzzy, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s:Kuri Impera Bifitanye isano Nta- boneza"
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr ""
+
+#: src/tail.c:884
+#, fuzzy, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr "`%s'Na: IDOSIYE Hejuru ku iyi Izina:"
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr ""
+
+#: src/tail.c:913
+#, fuzzy, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "`%s'Impera Bya Gishya IDOSIYE"
+
+#: src/tail.c:924
+#, fuzzy, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "`%s'Impera Bya Gishya IDOSIYE"
+
+#: src/tail.c:1025
+#, fuzzy, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s:Guhindura>> Ubwoko"
+
+#: src/tail.c:1066
+#, fuzzy, c-format
+msgid "%s: file truncated"
+msgstr "%s:IDOSIYE"
+
+#: src/tail.c:1090
+#, fuzzy, c-format
+msgid "no files remaining"
+msgstr "Oya Idosiye"
+
+#: src/tail.c:1323
+#, fuzzy, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr "%s:Impera Bya iyi Ubwoko Bya IDOSIYE Hejuru ku iyi Izina:"
+
+#: src/tail.c:1439
+#, fuzzy, c-format
+msgid "number in %s is too large"
+msgstr "Umubare in ni Binini"
+
+#: src/tail.c:1511
+#, fuzzy, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr "%s:Sibyo Kinini Umubare Bya stats hagati"
+
+#: src/tail.c:1523
+#, fuzzy, c-format
+msgid "%s: invalid PID"
+msgstr "%s:Sibyo"
+
+#: src/tail.c:1542
+#, fuzzy, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s:Sibyo Umubare Bya amasogonda"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, fuzzy, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "Iburira Ongera ugerageze ni Ryari: ku Izina:"
+
+#: src/tail.c:1570
+#, fuzzy, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr "Iburira ni Ryari:"
+
+#: src/tail.c:1573
+#, fuzzy, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "Iburira ni OYA ku iyi Sisitemu"
+
+#: src/tail.c:1667
+#, fuzzy, c-format
+msgid "cannot follow %s by name"
+msgstr "ku Izina:"
+
+#: src/tail.c:1673
+#, fuzzy, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr "Iburira Bisanzwe Iyinjiza Kidasobanutse. ni"
+
+#: src/tee.c:63
+#, fuzzy
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Bisanzwe Iyinjiza Kuri Na Kuri Bisanzwe Ibisohoka a Kongeraho... "
+"Kongeraho... Kuri i OYA i Kwirengagiza Kwirengagiza Hagarikira aho"
+
+#: src/tee.c:71
+#, fuzzy
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr "a ni Gukoporora Kuri Bisanzwe Ibisohoka"
+
+#: src/test.c:125
+#, fuzzy, c-format
+msgid "missing argument after %s"
+msgstr "Ibuze Nyuma"
+
+# sch/source\ui\app\strings.src:STR_INVALID_NUMBER.text
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "Umubare utari wo"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "')'Ikitezwe: Byabonetse"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "')'Ikitezwe: Byabonetse"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s:Mukoresha"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "-OYA Kwemera"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "-OYA Kwemera"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "-OYA Kwemera"
+
+#: src/test.c:368
+#, fuzzy
+msgid "unknown binary operator"
+msgstr "Kitazwi Nyabibiri"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s:Nyabibiri Mukoresha"
+
+#: src/test.c:694
+#, fuzzy
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr "Igerageza Cyangwa Cyangwa Cyangwa Cyangwa Na: i Imimerere ku"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+
+#: src/test.c:707
+#, fuzzy
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr "Kuri SIBYO ni NIBYO Cyangwa SIBYO Na Gusohoka Imimerere ni Bya"
+
+#: src/test.c:712
+#, fuzzy
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr "(ni ni a Byombi Na o Cyangwa ni"
+
+#: src/test.c:719
+#, fuzzy
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"-N i Uburebure Bya ni Kuri N Z i Uburebure Bya ni i Ikurikiranyanyuguti i "
+"Ikurikiranyanyuguti OYA"
+
+#: src/test.c:727
+#, fuzzy
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"ni bingana Kuri ni Biruta Cyangwa bingana Kuri ni Biruta LE ni Birutwa "
+"Cyangwa bingana Kuri ni Birutwa ni OYA bingana Kuri"
+
+#: src/test.c:736
+#, fuzzy
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr "Na i APAREYE Na ni Itariki ni"
+
+#: src/test.c:742
+#, fuzzy
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr "-B Na ni Funga C Na ni Inyuguti D Na ni a E"
+
+#: src/test.c:749
+#, fuzzy
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+"-F Na ni a Ibisanzwe g Na ni Gushyiraho Itsinda Na ni ku i CYUZUYE Itsinda h "
+"Na ni a Ihuza Nka K Na"
+
+#: src/test.c:756
+#, fuzzy
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+"-Na ni a Ihuza Nka h Na ni ku i CYUZUYE Ukoresha: P Na ni a R Na Gusoma ni S "
+"Na a Ingano Biruta"
+
+#: src/test.c:763
+#, fuzzy
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+"-Na ni a T IDOSIYE ni ku a u Na Gushyiraho Ukoresha: ni W Na Kwandika ni X "
+"Na Gukora Cyangwa Gushaka ni"
+
+#: src/test.c:770
+#, fuzzy
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr "g."
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "Ibuze"
+
+#: src/test.c:846
+#, fuzzy, c-format
+msgid "extra argument %s"
+msgstr "Birenga"
+
+#: src/touch.c:112 src/touch.c:318
+#, fuzzy, c-format
+msgid "invalid date format %s"
+msgstr "Sibyo Itariki Imiterere"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr ""
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr ""
+
+#: src/touch.c:217
+#, fuzzy, c-format
+msgid "setting times of %s"
+msgstr "Igenamiterere Times Bya"
+
+#: src/touch.c:234
+#, fuzzy
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr "i Na Times Bya Kuri i KIGEZWEHO Igihe"
+
+#: src/touch.c:241
+#, fuzzy
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+"-a Guhindura>> i C Oya Kurema OYA Kurema D Itariki Na Gukoresha Bya "
+"KIGEZWEHO F M Guhindura>> i"
+
+#: src/touch.c:248
+#, fuzzy
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+"-R Indango Gukoresha iyi Times Bya KIGEZWEHO T Gukoresha Bya KIGEZWEHO Igihe "
+"Guhindura>> i Igihe ni Cyangwa Gukoresha Kuri ni Guhindura Cyangwa Kuri"
+
+#: src/touch.c:257
+#, fuzzy
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr "i D Na T Amahitamo Kwemera Igihe Itariki Imiterere"
+
+#: src/touch.c:344
+#, fuzzy, c-format
+msgid "cannot specify times from more than one source"
+msgstr "Times Bivuye Birenzeho Inkomoko"
+
+#: src/touch.c:389
+#, fuzzy, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr "Iburira ni Gukoresha T"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr ""
+
+#: src/tr.c:294
+#, fuzzy
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Na Cyangwa Gusiba Inyuguti Bivuye Bisanzwe Iyinjiza Kuri Bisanzwe Ibisohoka "
+"C C Itangira D Gusiba Gusiba Inyuguti in OYA S Gusimbura Iyinjiza Bya a "
+"byasubiyemo ni in Na: a UMWE Bya T Itangira Kuri Uburebure Bya"
+
+#: src/tr.c:307
+#, fuzzy
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"Nka Ikurikiranyanyuguti Bya Inyuguti Inyuguti Na: Agaciro 1. Kuri 3. Ifishi "
+"N Gishya Gitambitse"
+
+#: src/tr.c:321
+#, fuzzy
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+"\\vBihagaritse Byose Inyuguti Bivuye Kuri in Ubujyejuru in Amakopi Bya "
+"Uburebure Bya Amakopi Bya NIBA Na: Byose Na Alufa Byose Ahatanditseho Byose "
+"Gitambitse Byose Igenzura Byose"
+
+#: src/tr.c:332
+#, fuzzy
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+"[:Byose Gicapika Inyuguti OYA Ntoya Byose Ntoya Gucapa Byose Gicapika "
+"Inyuguti Byose Umwanya Byose Gitambitse Cyangwa Bihagaritse Nkuru Byose "
+"Nkuru Byose Byose Inyuguti Kuri"
+
+#: src/tr.c:342
+#, fuzzy
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"NIBA D ni OYA Na Byombi Na Kugaragara T Gicurasi Ryari: ni Byongerewe... "
+"Kuri Uburebure ku Iheruka Inyuguti Nka"
+
+#: src/tr.c:348
+#, fuzzy
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr "Ntoya Na Nkuru in Ubujyejuru Itondekanya in in Kuri Ihindurangero"
+
+#: src/tr.c:354
+#, fuzzy
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr "-S NIBA Ikindi Na Cyangwa Isibwa"
+
+#: src/tr.c:519
+#, fuzzy, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr "Iburira i C ni Nka i 2. Bayite"
+
+#: src/tr.c:682
+#, fuzzy, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "Urutonde Bya in Ihindurakerekezo Itondekanya"
+
+#: src/tr.c:838
+#, fuzzy, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "Sibyo Gusubiramo IBARA in C N"
+
+#: src/tr.c:919
+#, fuzzy, c-format
+msgid "missing character class name `[::]'"
+msgstr "Ibuze Inyuguti ishuri Izina:"
+
+#: src/tr.c:922
+#, fuzzy, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "Ibuze ishuri Inyuguti"
+
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "Sibyo Inyuguti ishuri"
+
+#: src/tr.c:956
+#, fuzzy, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s:ishuri a UMWE Inyuguti"
+
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr "Inyuguti in Gushyiraho"
+
+#: src/tr.c:1423
+#, fuzzy, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "i C Gusubiramo Gicurasi OYA Kugaragara in"
+
+#: src/tr.c:1433
+#, fuzzy, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "C Gusubiramo Gicurasi Kugaragara in"
+
+#: src/tr.c:1441
+#, fuzzy, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "[=C Gicurasi OYA Kugaragara in Ryari:"
+
+#: src/tr.c:1454
+#, fuzzy, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "Ryari: OYA ubusa"
+
+#: src/tr.c:1463
+#, fuzzy, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr "Ryari: Na: Inyuguti Inzego Byose Inyuguti in i Urwego Kuri"
+
+#: src/tr.c:1470
+#, fuzzy, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr "Ryari: i Inyuguti Inzego Gicurasi Kugaragara Na"
+
+#: src/tr.c:1479
+#, fuzzy, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "i C Gicurasi Kugaragara in Ryari:"
+
+#: src/tr.c:1731
+#, fuzzy
+msgid "Two strings must be given when translating."
+msgstr "Ikurikiranyanyuguti Ryari:"
+
+#: src/tr.c:1741
+#, fuzzy
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr "Ikurikiranyanyuguti Gicurasi Ryari:"
+
+#: src/tr.c:1844
+#, fuzzy, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "Nkuru Na Cyangwa Ntoya"
+
+#: src/true.c:42
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr "Cyangwa"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Urutonde Na: i Bituzuye in Oya Cyangwa Ryari: ni Gusoma Bisanzwe Iyinjiza"
+
+#: src/tsort.c:474
+#, fuzzy, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s:Iyinjiza Kirimo IGIHARWE Umubare Bya"
+
+#: src/tsort.c:515
+#, fuzzy, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s:Iyinjiza Kirimo a"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr ""
+
+#: src/tty.c:70
+#, fuzzy
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr "i IDOSIYE Izina: Bya i Kuri Bisanzwe Iyinjiza S Gucapa Garuka Gusohoka"
+
+#: src/tty.c:125
+#, fuzzy
+msgid "not a tty"
+msgstr "OYA a"
+
+#: src/uname.c:118
+#, fuzzy
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Sisitemu Ibisobanuro Oya Nka S a Byose Gucapa Byose Ibisobanuro in i "
+"Itondekanya S Izina: Gucapa i N Gucapa i urusobe R Gucapa i"
+
+#: src/uname.c:127
+#, fuzzy
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+"-v Verisiyo Gucapa i M Gucapa i P Gucapa i i Gucapa i o Sisitemu Gucapa i"
+
+#: src/uname.c:236
+#, fuzzy, c-format
+msgid "cannot get system name"
+msgstr "Kubona Sisitemu Izina:"
+
+#: src/unexpand.c:125
+#, fuzzy
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"in Kuri Amasimbuka Kuri Bisanzwe Ibisohoka Oya Cyangwa Ryari: ni Gusoma "
+"Bisanzwe Iyinjiza"
+
+#: src/unexpand.c:133
+#, fuzzy
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+"-a Byose GUHINDURA Byose Bya Itangira GUHINDURA Nyobora Bya a T Amasimbuka "
+"Amasimbuka Inyuguti Bya 8 a T Amasimbuka Gukoresha Akitso Bya Isunika "
+"imyanya a"
+
+#: src/unexpand.c:161
+#, fuzzy, c-format
+msgid "tabs are too far apart"
+msgstr "Amasimbuka"
+
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "Isunika Guhagarara ni Binini"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+
+#: src/uniq.c:139
+#, fuzzy
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"Byose Bya birasa Imirongo Bivuye Iyinjiza Kuri Cyangwa Bisanzwe Ibisohoka"
+
+#: src/uniq.c:147
+#, fuzzy
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+"-C IBARA Imbanziriza Imirongo ku i Umubare Bya D byasubiyemo Gucapa "
+"Gusubiramo"
+
+#: src/uniq.c:151
+#, fuzzy
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+"-Byose byasubiyemo Uburyo Gucapa Byose Gusubiramo Uburyo Ntacyo Mburabuzi ni "
+"Byakozwe Na: Ahatanditseho Imirongo F Imyanya i Itangira i Kwirengagiza "
+"Kwirengagiza in Ryari: S i Itangira u Cyo nyine Gucapa Cyo nyine"
+
+#: src/uniq.c:160
+#, fuzzy
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr "-W Kugenzura... Kugereranya# Oya Birenzeho Inyuguti in"
+
+#: src/uniq.c:165
+#, fuzzy
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr "A Umwanya ni a Gukoresha Bya Hanyuma Inyuguti Mbere"
+
+#: src/uniq.c:350
+#, fuzzy, c-format
+msgid "too many repeated lines"
+msgstr "byasubiyemo Imirongo"
+
+#: src/uniq.c:512
+#, fuzzy
+msgid "invalid number of fields to skip"
+msgstr "Sibyo Umubare Bya Imyanya Kuri"
+
+#: src/uniq.c:521
+#, fuzzy
+msgid "invalid number of bytes to skip"
+msgstr "Sibyo Umubare Bya Bayite Kuri"
+
+#: src/uniq.c:530
+#, fuzzy
+msgid "invalid number of bytes to compare"
+msgstr "Sibyo Umubare Bya Bayite Kuri Kugereranya#"
+
+#: src/uniq.c:545
+#, fuzzy, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr "Icapa... Byose Imirongo Na Gusubiramo ni"
+
+#: src/unlink.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr "Cyangwa"
+
+#: src/unlink.c:53
+#, fuzzy
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr "i Kureka guhuza Umumaro Kuri Gukuraho... i"
+
+#: src/unlink.c:91
+#, fuzzy, c-format
+msgid "cannot unlink %s"
+msgstr "Kureka guhuza"
+
+#: src/uptime.c:123
+#, fuzzy, c-format
+msgid "couldn't get boot time"
+msgstr "Kubona Igihe"
+
+#: src/uptime.c:131
+#, fuzzy, c-format
+msgid " %2d:%02d%s up "
+msgstr "%2d:%02d%sHejuru"
+
+#: src/uptime.c:135
+msgid "am"
+msgstr ""
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr ""
+
+#: src/uptime.c:137
+#, fuzzy, c-format
+msgid " ??:???? up "
+msgstr ":Hejuru"
+
+#: src/uptime.c:139
+#, fuzzy, c-format
+msgid "???? days ??:??, "
+msgstr ""
+"Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Iminsi. Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+". Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+"."
+
+#: src/uptime.c:143
+#, fuzzy, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%ldUMUNSI"
+
+# sw/source\ui\envelp\label.src:STR_CUSTOM.text
+#: src/uptime.c:147
+#, fuzzy, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%luUkoresha]"
+msgstr[1] "%luUkoresha]"
+
+#: src/uptime.c:161
+#, fuzzy, c-format
+msgid ", load average: %.2f"
+msgstr ",Ibirimo Impuzandengo"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr ""
+
+#: src/uptime.c:198
+#, fuzzy, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"i KIGEZWEHO Igihe i Uburebure Bya Igihe i Sisitemu Hejuru i Umubare Bya ku i "
+"Sisitemu Na i Impuzandengo Umubare Bya i Gukoresha Umurongo KURI i Iheruka "
+"1. 5 Na 15 Iminota ni OYA Gukoresha Nka ni"
+
+#: src/users.c:109
+#, fuzzy, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr "ni in Kuri ni OYA Gukoresha Nka ni"
+
+#: src/wc.c:113
+#, fuzzy
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"ijambo Na Bayite kugirango Na a Igiteranyo Umurongo ni Oya Cyangwa Ryari: ni "
+"Gusoma Bisanzwe Iyinjiza C Bayite Gucapa i Bayite M Gucapa i Inyuguti L "
+"Imirongo Gucapa i"
+
+#: src/wc.c:121
+#, fuzzy
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+"-KININI Umurongo Uburebure Gucapa i Uburebure Bya i W Amagambo Gucapa i "
+"ijambo"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+# 4388
+#: src/who.c:212
+#, fuzzy
+msgid " old "
+msgstr "ki/ bishaje"
+
+#: src/who.c:439 src/who.c:441
+#, fuzzy
+msgid "id="
+msgstr "IKIRANGA:"
+
+#: src/who.c:454 src/who.c:459
+#, fuzzy
+msgid "term="
+msgstr "Ijambo"
+
+#: src/who.c:456 src/who.c:460
+#, fuzzy
+msgid "exit="
+msgstr "Kuvamo%S"
+
+#: src/who.c:497
+#, fuzzy
+msgid "clock change"
+msgstr "Guhindura>>"
+
+#: src/who.c:509 src/who.c:510
+#, fuzzy
+msgid "run-level"
+msgstr "Gukoresha urwego"
+
+#: src/who.c:513 src/who.c:514
+#, fuzzy
+msgid "last="
+msgstr "Ya nyuma:"
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+
+#: src/who.c:551
+#, fuzzy
+msgid "NAME"
+msgstr "Izina"
+
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\app\strings.src:STR_LINE.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib2.src:TAB_AXIS.1.RID_SVXPAGE_LINE.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib2.src:TAB_X_AXIS.1.RID_SVXPAGE_LINE.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib2.src:TAB_Y_AXIS.1.RID_SVXPAGE_LINE.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib2.src:TAB_Z_AXIS.1.RID_SVXPAGE_LINE.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib2.src:TAB_GRID.1.RID_SVXPAGE_LINE.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib2.src:TAB_LINE.1.RID_SVXPAGE_LINE.text
+# #-#-#-#-# sch.pot (PACKAGE VERSION) #-#-#-#-#
+# sch/source\ui\dlg\attrib.src:TAB_DATA_LINE.1.RID_SVXPAGE_LINE.text
+#: src/who.c:551
+#, fuzzy
+msgid "LINE"
+msgstr "Umurongo"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "IGIHE"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr ""
+
+#: src/who.c:552
+msgid "PID"
+msgstr ""
+
+# padmin/source\padialog.src:RID_TXT_TESTPAGE_COMMENT.text
+#: src/who.c:552
+#, fuzzy
+msgid "COMMENT"
+msgstr "Icyo wongeraho"
+
+# #-#-#-#-# setup2.pot (PACKAGE VERSION) #-#-#-#-#
+# setup2/source\ui\app.src:STR_RESTART_BTN_NO.text
+# #-#-#-#-# setup2.pot (PACKAGE VERSION) #-#-#-#-#
+# setup2/source\ui\pages\phavefun.src:RESID_PAGE_PAGEHAVEFUN.STR_LOGOUT_BTN_NO.text
+#: src/who.c:552
+#, fuzzy
+msgid "EXIT"
+msgstr "Gusohoka"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr ""
+
+#: src/who.c:634
+#, fuzzy
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"-a Byose Nka B D Ifashayinjira P R T B Igihe Bya Iheruka Sisitemu D Gucapa H "
+"Umutwempangano Gucapa Umurongo Bya Inkingi"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+#, fuzzy
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+"--GUSHAKISHA Kuri Biturutse M Izina ry'inturo: Na Ukoresha: Na: P Gucapa "
+"Gikora ku"
+
+#: src/who.c:649
+#, fuzzy
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+"-Q IBARA Byose Ifashayinjira Amazina Na Umubare Bya R Gucapa KIGEZWEHO S "
+"Gucapa Izina: Umurongo Na Igihe Mburabuzi T Igihe Gucapa Iheruka Sisitemu"
+
+#: src/who.c:655
+#, fuzzy
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+"-W Kongeramo Ubutumwa Imimerere Nka Cyangwa u Urutonde Ubutumwa Nka Nka"
+
+#: src/who.c:663
+#, fuzzy, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr "ni OYA Gukoresha Nka ni M Cyangwa"
+
+#: src/who.c:763
+#, fuzzy, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr "i Cyavanyweho in a Gukoresha u"
+
+#: src/whoami.c:51
+#, fuzzy
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr "i Ukoresha: Izina: Na: i KIGEZWEHO CYUZUYE Ukoresha: ID Nka ID"
+
+#: src/whoami.c:95
+#, fuzzy, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "Gushaka Izina: kugirango Ukoresha:"
+
+#: src/yes.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr "Cyangwa"
+
+#: src/yes.c:52
+#, fuzzy
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr "Ibisohoka a Umurongo Na: Byose S Cyangwa"
+
+#, fuzzy
+#~ msgid "strip failed"
+#~ msgstr "Byanze"
+
+#, fuzzy
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "Guhindura>> Na Cyangwa Itsinda Bya"
+
+#, fuzzy
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "Kuri bushyinguro"
+
+#, fuzzy
+#~ msgid "openat: unable to restore working directory"
+#~ msgstr "Kuri Kugarura bushyinguro"
+
+#, fuzzy
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "Kubona i Ifashayinjira Itsinda Bya a Bikurikije umubare"
+
+#, fuzzy
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "ni Kigenga i Inkomoko kugirango ni OYA ATARIIGIHARWE kugirango Cyangwa A"
+
+#, fuzzy
+#~ msgid "closing standard output"
+#~ msgstr "Bisanzwe Ibisohoka"
+
+#, fuzzy
+#~ msgid ""
+#~ " --no-preserve-root do not treat `/' specially (the default)\n"
+#~ " --preserve-root fail to operate recursively on `/'\n"
+#~ msgstr "--Oya Imizi OYA i Mburabuzi Imizi Kuri ku"
+
+#, fuzzy
+#~ msgid "-R -h requires -P"
+#~ msgstr "-h"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Each MODE is one or more of the letters ugoa, one of the symbols +-= and\n"
+#~ "one or more of the letters rwxXstugo.\n"
+#~ msgstr ""
+#~ "ni Cyangwa Birenzeho Bya i Bya i Ibimenyetso Cyangwa Birenzeho Bya i"
+
+#, fuzzy
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "Guhindura bushyinguro"
+
+#, fuzzy
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "Iburira Verisiyo Igenzura V ni Gushigikira kugirango Cyavanyweho in "
+#~ "Inyibutsa"
+
+#, fuzzy
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "amahuza OYA ku iyi Sisitemu"
+
+#, fuzzy
+#~ msgid ""
+#~ " %F same as %Y-%m-%d\n"
+#~ " %g the 2-digit year corresponding to the %V week number\n"
+#~ " %G the 4-digit year corresponding to the %V week number\n"
+#~ msgstr "%FNka i 2. Umwaka Kuri i Icyumweru i 4. Umwaka Kuri i Icyumweru"
+
+#, fuzzy
+#~ msgid ""
+#~ " %z RFC-2822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %Z time zone (e.g., EDT), or nothing if no time zone is determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr "%zg."
+
+#, fuzzy
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-2822 (-R) option"
+#~ msgstr ""
+#~ "a Imiterere Ikurikiranyanyuguti Gicurasi OYA Ryari: ikoresha i Ihitamo"
+
+#~ msgid "undefined"
+#~ msgstr "kidasobanuye"
+
+#, fuzzy
+#~ msgid "cannot get time of day"
+#~ msgstr "Kubona Igihe Bya UMUNSI"
+
+#, fuzzy
+#~ msgid "%s+%s records in\n"
+#~ msgstr "%s+%sIbyabitswe"
+
+#, fuzzy
+#~ msgid "%s+%s records out\n"
+#~ msgstr "%s+%sIbyabitswe"
+
+#, fuzzy
+#~ msgid "truncated records"
+#~ msgstr "Ibyabitswe"
+
+#, fuzzy
+#~ msgid "file offset out of range"
+#~ msgstr "IDOSIYE Nta- boneza Inyuma Bya Urutonde"
+
+#, fuzzy
+#~ msgid ""
+#~ " -e enable interpretation of backslash escapes\n"
+#~ " -E disable interpretation of backslash escapes (default)\n"
+#~ msgstr "-E Gushoboza Bya E Bya Mburabuzi"
+
+#, fuzzy
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "`-Ihitamo ni Gukoresha T"
+
+#, fuzzy
+#~ msgid ""
+#~ "warning: unportable BRE: `%s': using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr "Iburira ikoresha Nka i Itangira i BASIC Ibisanzwe imvugo ni OYA ni"
+
+#, fuzzy
+#~ msgid "`%s' is too large"
+#~ msgstr "`%s'ni Binini"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Komandi: Umurongo ingingo Cyangwa Na: a Imimerere ITEGEKONGENGA Ihitamo "
+#~ "Amazina Gicurasi OYA"
+
+#, fuzzy
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "`%s'Ihitamo ni Gukoresha"
+
+#, fuzzy
+#~ msgid "%s: number of bytes is large"
+#~ msgstr "%s:Umubare Bya Bayite ni Binini"
+
+#, fuzzy
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "Ihitamo"
+
+#, fuzzy
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "`-%s'S."
+
+#, fuzzy
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "Igihe kugirango"
+
+#, fuzzy
+#~ msgid "value %s is so large that it is not representable"
+#~ msgstr "Agaciro ni Binini ni OYA"
+
+#, fuzzy
+#~ msgid "invalid field number: `%s'"
+#~ msgstr "Sibyo Umwanya Umubare"
+
+#, fuzzy
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "Sibyo Umwanya Umubare kugirango IDOSIYE 1."
+
+#, fuzzy
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "Sibyo Umwanya Umubare kugirango IDOSIYE 2."
+
+#, fuzzy
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "Kurema Ihuza Kuri"
+
+#, fuzzy
+#~ msgid "create hard link %s to %s"
+#~ msgstr "Kurema Ikomeye Ihuza Kuri"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ msgstr ""
+#~ "-B Nyabibiri Gusoma Idosiye in Nyabibiri Ubwoko Mburabuzi ku C "
+#~ "Kugenzura... Kugenzura... T Umwandiko Gusoma Idosiye in Umwandiko Ubwoko "
+#~ "Mburabuzi"
+
+#, fuzzy
+#~ msgid "Only one operand may be specified when using --check."
+#~ msgstr "Gicurasi Ryari: ikoresha Kugenzura..."
+
+#, fuzzy
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "Gushyiraho Uruhushya Bya bushyinguro"
+
+#, fuzzy
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "Gushyiraho Uruhushya Bya"
+
+#, fuzzy
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "Gushyiraho Uruhushya Bya"
+
+#, fuzzy
+#~ msgid "cannot get priority"
+#~ msgstr "Kubona By'ibanze"
+
+#, fuzzy
+#~ msgid "cannot set priority"
+#~ msgstr "Gushyiraho By'ibanze"
+
+#, fuzzy
+#~ msgid "failed to redirect standard output"
+#~ msgstr "Byanze Kuri Bisanzwe Ibisohoka"
+
+#, fuzzy
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr "in P Kugenzura... kugirango Byose OYA iyi"
+
+#, fuzzy
+#~ msgid "column count too large"
+#~ msgstr "Inkingi IBARA Binini"
+
+#, fuzzy
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "`--Inkingi Sibyo Umubare Bya Inkingi"
+
+#, fuzzy
+#~ msgid ""
+#~ "This program is distributed in the hope that it will be useful,\n"
+#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+#~ "GNU General Public License for more details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Porogaramu ni in i ATARIIGIHARWE i Cyangwa A kugirango Birenzeho Birambuye"
+
+#, fuzzy
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+#~ msgstr ""
+#~ "BYAKIRIWE a Gukoporora Bya i Na: iyi Porogaramu NIBA OYA Kwandika Kuri i"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr ""
+#~ "Project- Id- Version: basctl\n"
+#~ "POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+#~ "PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+#~ "Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+#~ "Content- Type: text/ plain; charset= UTF- 8\n"
+#~ "Content- Transfer- Encoding: 8bit\n"
+#~ "X- Generator: KBabel 1. 0\n"
+#~ "."
+
+#, fuzzy
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "in"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "Bivuye Kuri"
+
+#, fuzzy
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr ""
+#~ "Cyangwa. Project- Id- Version: basctl\n"
+#~ "POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+#~ "PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+#~ "Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+#~ "Content- Type: text/ plain; charset= UTF- 8\n"
+#~ "Content- Transfer- Encoding: 8bit\n"
+#~ "X- Generator: KBabel 1. 0\n"
+#~ "."
+
+#, fuzzy
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only; this works only if your "
+#~ "system\n"
+#~ " supports `unlink' for nonempty directories)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ msgstr ""
+#~ "Kureka guhuza i S D bushyinguro Kureka guhuza ATARIIGIHARWE NIBA ni a "
+#~ "ubusa hejuru Ukoresha: iyi NIBA kugirango ububiko bw'amaderese F "
+#~ "Kwirengagiza Idosiye Nta narimwe i Biganira Urwinjiriro Mbere"
+
+#, fuzzy
+#~ msgid "%s: count `%.*s' too large"
+#~ msgstr "%s:IBARA."
+
+#, fuzzy
+#~ msgid "`-%s' option is obsolete; use `-l %s'"
+#~ msgstr "`-%s'Ihitamo ni Gukoresha L"
+
+#, fuzzy
+#~ msgid ""
+#~ "Display file or file system status.\n"
+#~ "\n"
+#~ " -f, --file-system display file system status instead of file "
+#~ "status\n"
+#~ " -c --format=FORMAT use the specified FORMAT instead of the default\n"
+#~ " -L, --dereference follow links\n"
+#~ " -t, --terse print the information in terse form\n"
+#~ msgstr ""
+#~ "IDOSIYE Cyangwa IDOSIYE Sisitemu Imimerere F IDOSIYE Sisitemu Kugaragaza "
+#~ "IDOSIYE Sisitemu Imimerere Bya IDOSIYE C Imiterere Gukoresha i Bya i T "
+#~ "Gucapa i Ibisobanuro in"
+
+#, fuzzy
+#~ msgid "Warning: `-l' is deprecated; use `-L' instead"
+#~ msgstr "ni Bitemewe. Gukoresha"
+
+#, fuzzy
+#~ msgid "invalid argument `%s'"
+#~ msgstr "Inkoresha siyo"
+
+#, fuzzy
+#~ msgid "stdin: read error"
+#~ msgstr "Gusoma Ikosa"
+
+#, fuzzy
+#~ msgid "`%s' option is obsolete; use `%s-%c %<PRIuMAX>'"
+#~ msgstr "`%s'Ihitamo ni Gukoresha"
+
+#, fuzzy
+#~ msgid "%s: integer expression expected\n"
+#~ msgstr "%s:Umubare wuzuye imvugo"
+
+#, fuzzy
+#~ msgid "before -lt"
+#~ msgstr "Mbere"
+
+#, fuzzy
+#~ msgid "after -lt"
+#~ msgstr "Nyuma"
+
+#, fuzzy
+#~ msgid "before -le"
+#~ msgstr "Mbere LE"
+
+#, fuzzy
+#~ msgid "after -le"
+#~ msgstr "Nyuma LE"
+
+#, fuzzy
+#~ msgid "before -gt"
+#~ msgstr "Mbere"
+
+#, fuzzy
+#~ msgid "after -gt"
+#~ msgstr "Nyuma"
+
+#, fuzzy
+#~ msgid "before -ge"
+#~ msgstr "Mbere"
+
+#, fuzzy
+#~ msgid "after -ge"
+#~ msgstr "Nyuma"
+
+#, fuzzy
+#~ msgid "before -ne"
+#~ msgstr "Mbere"
+
+#, fuzzy
+#~ msgid "after -ne"
+#~ msgstr "Nyuma"
+
+#, fuzzy
+#~ msgid "before -eq"
+#~ msgstr "Mbere"
+
+#, fuzzy
+#~ msgid "after -eq"
+#~ msgstr "Nyuma"
+
+#, fuzzy
+#~ msgid "after -t"
+#~ msgstr "Nyuma T"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Komandi: Umurongo ingingo Cyangwa Na: a Imimerere ITEGEKONGENGA "
+#~ "Ibyatunganye Ihitamo Amazina Gicurasi OYA"
+
+#, fuzzy
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr "`-Ihitamo ni Gukoresha Itangira T"
+
+#, fuzzy
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "`-%lu'Ihitamo ni Gukoresha F"
+
+#, fuzzy
+#~ msgid ""
+#~ " -i, --idle add idle time as HOURS:MINUTES, . or old\n"
+#~ " (deprecated, use -u)\n"
+#~ " -l, --login print system login processes\n"
+#~ msgstr ""
+#~ "-i Kongeramo Igihe Nka Cyangwa Bitemewe. Gukoresha u L Ifashayinjira "
+#~ "Gucapa Sisitemu Ifashayinjira"
+
+#, fuzzy
+#~ msgid "%s: cannot find username for UID %lu\n"
+#~ msgstr "%s:Gushaka Izina ry'ukoresha kugirango"
diff --git a/po/sk.gmo b/po/sk.gmo
new file mode 100644
index 0000000..32516de
--- /dev/null
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
new file mode 100644
index 0000000..0525739
--- /dev/null
+++ b/po/sk.po
@@ -0,0 +1,12332 @@
+# Slovak translations for GNU textutils
+# Copyright (C) 1996 Free Software Foundation, Inc.
+# Miroslav Vasko <vasko@debian.cz>, 1999
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: textutils 2.0.14\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2001-06-08 22:10 +02:00\n"
+"Last-Translator: Stanislav Meduna <stano@trillian.eunet.sk>\n"
+"Language-Team: Slovak <sk-i18n@rak.isternet.sk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "nie je mo¾né zmeni» práva %s"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, fuzzy, c-format
+msgid "setting permissions for %s"
+msgstr "nie je mo¾né zmeni» práva %s"
+
+#: lib/argmatch.c:134
+#, fuzzy, c-format
+msgid "invalid argument %s for %s"
+msgstr "chybný argument %s pre `%s'"
+
+#: lib/argmatch.c:135
+#, fuzzy, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "nejednoznaèný argument %s pre `%s'"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Platné argumenty sú:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "chyba pri zápise"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Neznáma systémová chyba"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, fuzzy, c-format
+msgid "cannot stat %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr ""
+
+#: lib/file-type.c:39
+#, fuzzy
+msgid "regular file"
+msgstr "zlyhalo èítanie"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr ""
+
+#: lib/file-type.c:45
+#, fuzzy
+msgid "block special file"
+msgstr "veµkos» bloku"
+
+#: lib/file-type.c:48
+#, fuzzy
+msgid "character special file"
+msgstr "pozícia znaku je nula"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr ""
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr ""
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr ""
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr ""
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr ""
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr ""
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr ""
+
+#: lib/file-type.c:71
+#, fuzzy
+msgid "weird file"
+msgstr "zlyhalo èítanie"
+
+#: lib/gai_strerror.c:44
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "tento systém nepodporuje rúry"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "tento systém nepodporuje rúry"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr ""
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "tento systém nepodporuje rúry"
+
+#: lib/gai_strerror.c:54
+#, fuzzy
+msgid "System error"
+msgstr "chyba pri zápise"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+#, fuzzy
+msgid "Unknown error"
+msgstr "Neznáma systémová chyba"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: voµba `%s' nie je jednoznaèná\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: prepínaè `--%s' nepovoµuje argument\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: prepínaè `%c%s' nepovoµuje argument\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: prepínaè `%s' vy¾aduje argument\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: neznámy prepínaè `--%s'\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: neznámy prepínaè `%c%s'\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: nepovolený prepínaè -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: chybný prepínaè -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: prepínaè vy¾aduje argument -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: prepínaè `-W %s' nie je jednoznaèný\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: prepínaè `-W %s' nepovoµuje argument\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "veµkos» bloku"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "nie je mo¾né zmeni» práva %s"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "vyèerpaná pamä»"
+
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "'"
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "%s: chyba pri èítaní"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: chybný regulárny výraz: %s"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "chybná trieda znaku `%s'"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "vyèerpaná pamä»"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: chybný regulárny výraz: %s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "chyba pri vyhµadávaní pomocou regulárneho výrazu"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "%s: chybný regulárny výraz: %s"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "chyba pri vyhµadávaní pomocou regulárneho výrazu"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr ""
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr ""
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[yYaAáÁ]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+#, fuzzy
+msgid "iconv function not usable"
+msgstr "nie je mo¾né vypísa» U+%04X: funkcia iconv nie je pou¾iteµná"
+
+#: lib/unicodeio.c:153
+#, fuzzy
+msgid "iconv function not available"
+msgstr "nie je mo¾né vypísa» U+%04X: funkcia iconv nie je dostupná"
+
+#: lib/unicodeio.c:160
+#, fuzzy
+msgid "character out of range"
+msgstr "U+%04X: znak je mimo rozsah"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "nie je mo¾né konvertova» U+%04X do lokálnej znakovej sady"
+
+#: lib/unicodeio.c:226
+#, fuzzy, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "nie je mo¾né konvertova» U+%04X do lokálnej znakovej sady"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "neplatný pou¾ívateµ"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "neplatná skupina"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "neplatný pou¾ívateµ"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+#, fuzzy
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+" Tento program je voµné programové vybavenie; mô¾ete ho ¹íri» a "
+"modifikova»\n"
+"podµa podmienok V¹eobecnej verejnej licencie GNU, vydávanej Free Software\n"
+"Foundation; a to buï verzie 2 tejto licencie alebo (podµa vá¹ho uvá¾enia),\n"
+"ktorejkoµvek neskor¹ej verzie.\n"
+"\n"
+" Tento program je roz¹irovaný v nádeji, ¾e bude u¾itoèný, av¹ak BEZ "
+"AKEJKO¥VEK\n"
+"ZÁRUKY; neposkytujú sa ani odvodené záruky PREDAJNOSTI alebo VHODNOSTI PRE\n"
+"NEJAKÝ KONKRÉTNY ÚÈEL. Ïaµ¹ie podrobnosti nájdete vo V¹eobecnej verejnej\n"
+"licencii GNU.\n"
+"\n"
+" Kópia V¹eobecnej verejnej licencie GNU mala by» dodaná spolu s týmto\n"
+"programom; pokiaµ sa tak nestalo, napí¹te do Free Software Foundation, "
+"Inc.,\n"
+"59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Napísal %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, fuzzy, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Napísal %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, fuzzy, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Napísal %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr "Napísal %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, fuzzy, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr "Napísal %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xfts.c:58
+#, fuzzy, c-format
+msgid "invalid argument: %s"
+msgstr "chybný argument %s pre `%s'"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr ""
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr ""
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr ""
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "chýba zoznam polo¾iek"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "chybná trieda znaku `%s'"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s je príli¹ veµa"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Viac informácií získate príkazom `%s --help'.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+"Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+"\n"
+" --help vypí¹e túto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+" Chyby v programe oznamujte na adrese <bug-textutils@gnu.org> (iba\n"
+"anglicky), pripomienky k prekladu zasielajte na adresu <sk@li.org> "
+"(slovensky)."
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "chyba pri èítaní"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "neplatné èíslo"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "chybný typ re»azca `%s'"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, fuzzy, c-format
+msgid "extra operand %s"
+msgstr "nadbytoèný operand `%s' nie je povolený, pokiaµ je pou¾ité -c"
+
+#: src/base64.c:316 src/cat.c:785
+#, fuzzy, c-format
+msgid "closing standard input"
+msgstr "¹tandardný vstup"
+
+#: src/basename.c:54
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾itie: %s [SÚBOR]...\n"
+" alebo: %s [VO¥BA]\n"
+
+#: src/basename.c:59
+#, fuzzy
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Vypísa» NÁZOV bez adresárov vedúcich k nemu.\n"
+"Odstráni» aj PRÍPONU, pokiaµ bola zadaná.\n"
+"\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, fuzzy, c-format
+msgid "missing operand"
+msgstr "%s: po `%c' je oèakávané celé èíslo"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ] [SÚBOR]...\n"
+
+#: src/cat.c:99
+#, fuzzy
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+" Vypisuje SÚBOR(Y) na ¹tandardný výstup. Ak je uvedených viacero súborov,\n"
+"vypisuje ich postupne. Toho sa dá vyu¾i» na spojenie viacerých súborov do "
+"jedného.\n"
+"\n"
+" -A, --show-all rovnaké ako -vET\n"
+" -b, --number-nonblank èísluje neprázdne výstupné riadky\n"
+" -e rovnaké ako -vE\n"
+" -E, --show-ends vypí¹e $ na konci ka¾dého riadku\n"
+" -n, --number èísluje v¹etky výstupné riadky\n"
+" -s, --squeeze-blank prázdne riadky idúce po sebe redukuje na jediný\n"
+" -t rovnaké ako -vT\n"
+" -T, --show-tabs vypisuje znak TAB ako ^I\n"
+" -u (ignorované)\n"
+" -v, --show-nonprinting pou¾ije zápis ^ a M-, okrem znakov LF a TAB\n"
+" --help vypí¹e túto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+"\n"
+"Ak SÚBOR nebude zadaný alebo bude -, potom bude èítaný ¹tandardný vstup.\n"
+
+#: src/cat.c:109
+#, fuzzy
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" Vypisuje SÚBOR(Y) na ¹tandardný výstup. Ak je uvedených viacero súborov,\n"
+"vypisuje ich postupne. Toho sa dá vyu¾i» na spojenie viacerých súborov do "
+"jedného.\n"
+"\n"
+" -A, --show-all rovnaké ako -vET\n"
+" -b, --number-nonblank èísluje neprázdne výstupné riadky\n"
+" -e rovnaké ako -vE\n"
+" -E, --show-ends vypí¹e $ na konci ka¾dého riadku\n"
+" -n, --number èísluje v¹etky výstupné riadky\n"
+" -s, --squeeze-blank prázdne riadky idúce po sebe redukuje na jediný\n"
+" -t rovnaké ako -vT\n"
+" -T, --show-tabs vypisuje znak TAB ako ^I\n"
+" -u (ignorované)\n"
+" -v, --show-nonprinting pou¾ije zápis ^ a M-, okrem znakov LF a TAB\n"
+" --help vypí¹e túto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+"\n"
+"Ak SÚBOR nebude zadaný alebo bude -, potom bude èítaný ¹tandardný vstup.\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+#: src/cat.c:333
+#, fuzzy, c-format
+msgid "cannot do ioctl on %s"
+msgstr "ioctl na `%s' nie je mo¾né vykona»"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "¹tandardný výstup"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: vstupný súbor je zároveò výstupným"
+
+#: src/chgrp.c:95 src/install.c:611
+#, fuzzy, c-format
+msgid "invalid group %s"
+msgstr "neplatná skupina"
+
+#: src/chgrp.c:112
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Pou¾itie: %s [PREPÍNAÈ]... [SÚBOR]...\n"
+" alebo: %s --traditional [SÚBOR] [[+]POSUN [[+]NÁVESTIE]]\n"
+
+#: src/chgrp.c:117
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr ""
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, fuzzy, c-format
+msgid "missing operand after %s"
+msgstr "%s: po `%c' je oèakávané celé èíslo"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, fuzzy, c-format
+msgid "failed to get attributes of %s"
+msgstr "zis»ujem atribúty %s"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "zis»ujem nové atribúty %s"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "symbolický odkaz %s ani odkazovaný súbor neboli zmenené\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "práva súboru %s boli zmenené na %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "zmena práv súboru %s na %04lo (%s) zlyhala\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "práva súboru %s zostali %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, fuzzy, c-format
+msgid "cannot access %s"
+msgstr "nie je mo¾né spusti» %s"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, fuzzy, c-format
+msgid "cannot read directory %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/chmod.c:251
+#, fuzzy, c-format
+msgid "changing permissions of %s"
+msgstr "nie je mo¾né zmeni» práva %s"
+
+#: src/chmod.c:286
+#, fuzzy, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "nie je mo¾né zmeni» práva %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, fuzzy, c-format
+msgid "fts_read failed"
+msgstr "zlyhalo èítanie"
+
+#: src/chmod.c:345
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Pou¾itie: %s [VO¥BA]... KONIEC\n"
+" alebo: %s [VO¥BA]... ZAÈIATOK KONIEC\n"
+" alebo: %s [VO¥BA]... ZAÈIATOK KROK LAST\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chmod.c:360
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+"Zmeni» práva ka¾dého SÚBORu na PRÁVA.\n"
+"\n"
+" -c, --changes ako voµba 'verbose', ale zobrazi» iba zmeny\n"
+" -f, --silent, --quiet potlaèi» väè¹inu chybových správ\n"
+" -v, --verbose vypísa» informáciu o ka¾dom spracovanom súbore\n"
+" --reference=RSÚBOR pou¾i» práva RSÚBORu namiesto PRÁV\n"
+" -R, --recursive vykona» operáciu aj vo vnorených adresároch\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+"\n"
+"Ka¾dé PRÁVO je tvorené jedným alebo viacerými písmenami z ugoa, jedným "
+"symbolom\n"
+"z +-= a jedným alebo viacerými písmenami z rwxXstugo.\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr ""
+
+#: src/chmod.c:510
+#, fuzzy, c-format
+msgid "invalid mode: %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "vlastníka %s zmenený na %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "skupina %s zmenená na %s\n"
+
+#: src/chown-core.c:149
+#, fuzzy, c-format
+msgid "no change to ownership of %s\n"
+msgstr "mením vlastníctvo %s"
+
+#: src/chown-core.c:152
+#, fuzzy, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "nie je mo¾né zmeni» práva %s"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "zmena skupiny %s na %s zlyhala\n"
+
+#: src/chown-core.c:154
+#, fuzzy, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "nie je mo¾né zmeni» práva %s"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "vlastník %s zostal %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "skupina súboru %s zostala %s\n"
+
+#: src/chown-core.c:159
+#, fuzzy, c-format
+msgid "ownership of %s retained\n"
+msgstr "vlastník %s zostal %s\n"
+
+#: src/chown-core.c:344
+#, fuzzy, c-format
+msgid "cannot dereference %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "mením vlastníctvo %s"
+
+#: src/chown-core.c:433
+#, fuzzy, c-format
+msgid "changing group of %s"
+msgstr "nie je mo¾né zmeni» pou¾ívateµa a/alebo skupinu %s"
+
+#: src/chown.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Pou¾itie: %s [PREPÍNAÈ]... [SÚBOR]...\n"
+" alebo: %s --traditional [SÚBOR] [[+]POSUN [[+]NÁVESTIE]]\n"
+
+#: src/chown.c:98
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+
+#: src/chown.c:144
+#, fuzzy
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"Vlastník nie je zmenený, pokiaµ nebol zadaný. Skupina nie je zmenená,\n"
+"pokiaµ nie je zadaná, ale bude zmenená na prihlasovaciu skupinu,\n"
+"pokiaµ je to vy¾iadané dvojbodkou. VLASTNÍK aj SKUPINA mô¾u by»\n"
+"tak èíselné, ako aj symbolické.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾itie: %s [SÚBOR]...\n"
+" alebo: %s [VO¥BA]\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+
+#: src/chroot.c:89
+#, fuzzy, c-format
+msgid "cannot change root directory to %s"
+msgstr "nie je mo¾né vojs» do adresára, %s"
+
+#: src/chroot.c:92
+#, fuzzy, c-format
+msgid "cannot chdir to root directory"
+msgstr "nie je mo¾né vojs» do adresára, %s"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, fuzzy, c-format
+msgid "cannot run command %s"
+msgstr "ioctl na `%s' nie je mo¾né vykona»"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: súbor je príli¹ dlhý"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Pou¾itie: %s [SÚBOR]...\n"
+" alebo: %s [VO¥BA]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ]... SÚBOR1 SÚBOR2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr ""
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+
+#: src/comm.c:86
+#, fuzzy
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+" Porovnáva súbory ¥AVÝ_SÚBOR a PRAVÝ_SÚBOR, ktorých riadky sú usporiadané\n"
+"podµa nejakého kµúèa, riadok po riadku. Výstupom sú tri ståpce, riadky "
+"obsiahnuté\n"
+"iba v µavom súbore, riadky obsiahnuté iba v pravom súbore, riadky spoloèné\n"
+"obom súborom.\n"
+"\n"
+" -1 neukazuje riadky obsiahnuté iba v µavom súbore\n"
+" -2 neukazuje riadky obsiahnuté iba v pravom súbore\n"
+" -3 neukazuje riadky spoloèné obom súborom\n"
+" --help vypí¹e tuto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, fuzzy, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "zachovávam vlastníctvo %s"
+
+#: src/copy.c:222
+#, fuzzy, c-format
+msgid "failed to lookup file %s"
+msgstr "zachovávam èasy %s"
+
+#: src/copy.c:227
+#, fuzzy, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "zachovávam vlastníctvo %s"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "nie je mo¾né otvori» %s pre èítanie"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, fuzzy, c-format
+msgid "cannot fstat %s"
+msgstr "nie je mo¾né nastavi» dátum"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr ""
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, fuzzy, c-format
+msgid "cannot remove %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, fuzzy, c-format
+msgid "removed %s\n"
+msgstr "ma¾em %s\n"
+
+#: src/copy.c:329
+#, fuzzy, c-format
+msgid "cannot create regular file %s"
+msgstr "nie je mo¾né vytvori» doèasný súbor"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, fuzzy, c-format
+msgid "reading %s"
+msgstr "chyba pri èítaní %s"
+
+#: src/copy.c:467 src/head.c:428
+#, fuzzy, c-format
+msgid "cannot lseek %s"
+msgstr "nie je mo¾né spusti» %s"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, fuzzy, c-format
+msgid "writing %s"
+msgstr "chyba pri zápise %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "zachovávam èasy %s"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, fuzzy, c-format
+msgid "closing %s"
+msgstr "uzatváranie %s (fd=%d)"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: prepísa» %s bez ohµadu na práva %04lo? "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: prepísa» %s? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr "(záloha: %s)"
+
+#: src/copy.c:1048
+#, fuzzy, c-format
+msgid "omitting directory %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr ""
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s a %s predstavujú ten istý súbor"
+
+#: src/copy.c:1149
+#, fuzzy, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "nie je mo¾né vojs» do adresára, %s"
+
+#: src/copy.c:1167
+#, fuzzy, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "nie je mo¾né prepísa» ne-adresár %s adresárom %s"
+
+#: src/copy.c:1185
+#, fuzzy, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/copy.c:1223
+#, fuzzy, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "nie je mo¾né vojs» do adresára, %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "vytvorenie zálo¾nej kópie %s by znièilo zdroj; %s nebol presunutý"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "vytvorenie zálo¾nej kópie %s by znièilo zdroj; %s nebol skopírovaný"
+
+#: src/copy.c:1273 src/ln.c:239
+#, fuzzy, c-format
+msgid "cannot backup %s"
+msgstr "nie je mo¾né spusti» %s"
+
+#: src/copy.c:1372
+#, fuzzy, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/copy.c:1389
+#, fuzzy, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "nie je mo¾né vojs» do adresára, %s"
+
+#: src/copy.c:1414
+#, fuzzy, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/copy.c:1459
+#, fuzzy, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "nie je mo¾né vojs» do adresára, %s"
+
+#: src/copy.c:1502
+#, fuzzy, c-format
+msgid "cannot move %s to %s"
+msgstr "ioctl na `%s' nie je mo¾né vykona»"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr ""
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "nie je mo¾né skopírova» zacyklený symbolický odkaz %s"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr ""
+"%s: relatívne symbolické odkazy je mo¾né vytvori» iba v aktuálnom adresári"
+
+#: src/copy.c:1661
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/copy.c:1686
+#, fuzzy, c-format
+msgid "cannot create link %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, fuzzy, c-format
+msgid "cannot create fifo %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/copy.c:1722
+#, fuzzy, c-format
+msgid "cannot create special file %s"
+msgstr "pozícia znaku je nula"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, fuzzy, c-format
+msgid "cannot read symbolic link %s"
+msgstr "ioctl na `%s' nie je mo¾né vykona»"
+
+#: src/copy.c:1759
+#, fuzzy, c-format
+msgid "cannot create symbolic link %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s je neznámy typ souboru"
+
+#: src/copy.c:1910 src/ln.c:308
+#, fuzzy, c-format
+msgid "cannot un-backup %s"
+msgstr "nie je mo¾né spusti» %s"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (obnovenie zálohy)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Pou¾itie: %s [VO¥BA]... KONIEC\n"
+" alebo: %s [VO¥BA]... ZAÈIATOK KONIEC\n"
+" alebo: %s [VO¥BA]... ZAÈIATOK KROK LAST\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --sparse=KEDY tvorba nesúvislých (deravých) súborov\n"
+" -R, --recursive kopírova» adresáre rekurzívne\n"
+" --strip-trailing-slashes odstráni» z ka¾dého ZDROJa koncové lomítko\n"
+" -s, --symbolic-link namiesto odkazov vytvori» symbolické odkazy\n"
+" -S, --suffix=PRÍPONA zmeni» obvyklú príponu zálohových súborov\n"
+" na PRÍPONU\n"
+" --target-directory=ADR presunú» v¹etky ZDROJe do ADResára\n"
+" -u, --update kopírova» iba pokiaµ je zdrojový súbor nov¹í\n"
+" ako cieµový alebo pokiaµ cieµový súbor "
+"neexistuje\n"
+" -v, --verbose vypisova» informácie o vykonaných operáciách\n"
+" -x, --one-file-system zosta» v tomto súborovom systéme\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+"\n"
+"Pokiaµ nie je zadané inak, nesúvislé (deravé) súbory sú detekované\n"
+"a zodpovedajúci cieµový súbor je vytvorený taktie¾ ako nesúvislý.\n"
+"Toto je tie¾ správanie sa pri voµbe --sparse=auto. Pri zadaní voµby\n"
+"--sparse=always bude vytvorený nesúvislý súbor v¾dy ak zdrojový\n"
+"súbor obsahuje dostatoène dlhú postupnos» nulových bajtov. Voµba\n"
+"--sparse=never zabráni tvoreniu nesúvislých súborov.\n"
+"\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+
+#: src/cp.c:216
+#, fuzzy
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+"Premenovanie ZDROJa na CIE¥ alebo premiestnenie ZDROJa(ov) do ADRESÁRa.\n"
+"\n"
+" --backup[=CONTROL] vytvori» zálo¾nú kópiu ka¾dého existujúceho\n"
+" CIE¥a\n"
+" -b ako --backup, ale nepovoµuje argument\n"
+" -f, --force prepísa» existujúce ciele bez opýtania\n"
+" -i, --interactive pred prepísaním súboru sa opýta»\n"
+" --strip-trailing-slashes odstráni» koncové lomítka z ka¾dého\n"
+" ZDROJa\n"
+" -S, --suffix=PRÍPONA zmeni» obvyklú príponu zálo¾ných kópií\n"
+" --target-directory=ADR presunú» v¹etky ZDROJe do ADResára\n"
+" -u, --update premiestni» iba nov¹ie a úplne nové soubory\n"
+" -v, --verbose vypisova» informácie o priebehu\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+"\n"
+
+#: src/cp.c:225
+#, fuzzy
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+" --sparse=KEDY tvorba nesúvislých (deravých) súborov\n"
+" -R, --recursive kopírova» adresáre rekurzívne\n"
+" --strip-trailing-slashes odstráni» z ka¾dého ZDROJa koncové lomítko\n"
+" -s, --symbolic-link namiesto odkazov vytvori» symbolické odkazy\n"
+" -S, --suffix=PRÍPONA zmeni» obvyklú príponu zálohových súborov\n"
+" na PRÍPONU\n"
+" --target-directory=ADR presunú» v¹etky ZDROJe do ADResára\n"
+" -u, --update kopírova» iba pokiaµ je zdrojový súbor nov¹í\n"
+" ako cieµový alebo pokiaµ cieµový súbor "
+"neexistuje\n"
+" -v, --verbose vypisova» informácie o vykonaných operáciách\n"
+" -x, --one-file-system zosta» v tomto súborovom systéme\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+"\n"
+"Pokiaµ nie je zadané inak, nesúvislé (deravé) súbory sú detekované\n"
+"a zodpovedajúci cieµový súbor je vytvorený taktie¾ ako nesúvislý.\n"
+"Toto je tie¾ správanie sa pri voµbe --sparse=auto. Pri zadaní voµby\n"
+"--sparse=always bude vytvorený nesúvislý súbor v¾dy ak zdrojový\n"
+"súbor obsahuje dostatoène dlhú postupnos» nulových bajtov. Voµba\n"
+"--sparse=never zabráni tvoreniu nesúvislých súborov.\n"
+"\n"
+
+#: src/cp.c:234
+#, fuzzy
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Prípona zálo¾ných súborov je ~, pokiaµ nie je nastavená voµbou --suffix "
+"alebo\n"
+"premennou SIMPLE_BACKUP_SUFFIX. Spôsob tvorby zálo¾ných kópií súborov mô¾e "
+"by»\n"
+"nastavený premennou VERSION_CONTROL, prípustné hodnoty sú:\n"
+"\n"
+" none, off nikdy nevytvára» zálo¾né kópie (ani ak bolo zadané --"
+"backup)\n"
+" numbered, t tvori» èíslované zálo¾né kópie\n"
+" existing, nil tvori» èíslované, pokiaµ u¾ èíslované zálo¾né kópie\n"
+" existujú, inak tvori» jednoduché\n"
+" simple, never v¾dy tvori» jednoduché zálo¾né kópie súborov \n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+#, fuzzy
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+"Prípona zálo¾ných súborov je ~, pokiaµ nie je nastavená voµbou --suffix "
+"alebo\n"
+"premennou SIMPLE_BACKUP_SUFFIX. Spôsob tvorby zálo¾ných kópií súborov mô¾e "
+"by»\n"
+"nastavený premennou VERSION_CONTROL, prípustné hodnoty sú:\n"
+"\n"
+" none, off nikdy nevytvára» zálo¾né kópie (ani ak bolo zadané --"
+"backup)\n"
+" numbered, t tvori» èíslované zálo¾né kópie\n"
+" existing, nil tvori» èíslované, pokiaµ u¾ èíslované zálo¾né kópie\n"
+" existujú, inak tvori» jednoduché\n"
+" simple, never v¾dy tvori» jednoduché zálo¾né kópie súborov \n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Ako ¹peciálny prípad, cp tvorí zálo¾né kópie ZDROJa, pokiaµ sú zadané voµby\n"
+"force a backup a ZDROJ a CIE¥ sú rovnakým menom pre existujúci be¾ný súbor.\n"
+
+#: src/cp.c:314
+#, fuzzy, c-format
+msgid "failed to preserve times for %s"
+msgstr "zachovávam èasy %s"
+
+#: src/cp.c:340
+#, fuzzy, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "nie je mo¾né zmeni» práva %s"
+
+#: src/cp.c:456
+#, fuzzy, c-format
+msgid "cannot make directory %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s existuje, ale nie je adresárom"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "pristupujem k %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, fuzzy, c-format
+msgid "missing file operand"
+msgstr "preskakujem argument"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, fuzzy, c-format
+msgid "missing destination file operand after %s"
+msgstr "chýba zoznam polo¾iek"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, fuzzy, c-format
+msgid "target %s is not a directory"
+msgstr "%s existuje, ale nie je adresárom"
+
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "pokiaµ je po¾adované zachovanie ciest, cieµ musí by» adresárom"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr ""
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, fuzzy, c-format
+msgid "multiple target directories specified"
+msgstr "\\%c: neprípustná sekvencia"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "nie je mo¾né zároveò vytvori» pevný a symbolický odkaz"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "typ zálohy"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "vstup sa stratil"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: èíslo riadku je mimo rozsah"
+
+#: src/csplit.c:709
+#, fuzzy, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: `%s': èíslo riadku je mimo rozsah"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, fuzzy, c-format
+msgid " on repetition %s\n"
+msgstr " v %d. opakovaní\n"
+
+#: src/csplit.c:755
+#, fuzzy, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: `%s': nenájdené"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "chyba pri vyhµadávaní pomocou regulárneho výrazu"
+
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "chyba pri zápise do `%s'"
+
+#: src/csplit.c:1060
+#, fuzzy, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: po `%c' je oèakávané celé èíslo"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: '}' je po¾adovaná v poèítadle opakovaní"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: medzi `{' a `}' musí by» celé èíslo"
+
+#: src/csplit.c:1113
+#, fuzzy, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: chýba koncový oddeµovaè `%c'"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: chybný regulárny výraz: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: chybný vzor"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: èíslo riadku musí by» väè¹ie ako nula"
+
+#: src/csplit.c:1172
+#, fuzzy, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "èíslo riadku `%s' je men¹ie ako èíslo predchádzajúceho riadku, %s"
+
+#: src/csplit.c:1178
+#, fuzzy, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr ""
+"varovanie: èíslo riadku `%s' je rovnaké ako èíslo predcházajúceho riadku"
+
+#: src/csplit.c:1231
+#, fuzzy, c-format
+msgid "invalid format width"
+msgstr "chybný argument %s pre `%s'"
+
+#: src/csplit.c:1252
+#, fuzzy, c-format
+msgid "invalid format precision"
+msgstr "chybný typ re»azca `%s'"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "v parametri prepínaèa chýba urèenie typu konverzie"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "chybne zadaný typ konverzie v parametri prepínaèa: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "chybne zadaný typ konverzie v parametri prepínaèa: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "príli¹ mnoho typov konverzie %% v parametri prepínaèa"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "v parametri prepínaèa chýba zadanie typu konverzie pomocou %%"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: chybné èíslo"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ]... SÚBOR VZOROV...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/csplit.c:1486
+#, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ]... [SÚBOR]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/cut.c:199
+#, fuzzy
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" Zalamuje vstupné riadky ka¾dého SÚBORu (implicitne ¹tandardného vstupu),\n"
+"zapisujúc výstup na ¹tandardný výstup.\n"
+"\n"
+" -b, --bytes pre zalamovanie poèíta bajty na riadku namiesto "
+"ståpcov\n"
+" -s, --spaces zalamuje riadky v medzerách\n"
+" -w, --width=©ÍRKA pou¾íva ©ÍRKA ståpcov namiesto 80\n"
+" --help vypí¹e túto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+"\n"
+"V ståpcoch nie sú zahrnuté kontrolné znaky na rozdiel od bytov.\n"
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "chybný zoznam bytov alebo polo¾iek"
+
+#: src/cut.c:469
+#, fuzzy, c-format
+msgid "byte offset %s is too large"
+msgstr "%s je príli¹ veµa"
+
+#: src/cut.c:472
+#, fuzzy, c-format
+msgid "field number %s is too large"
+msgstr "èíslo polo¾ky je nula"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "mô¾e by» zadaný iba jeden typ zoznamu"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "oddeµovaè musí by» jediný znak"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "musíte zadat zoznam bytov, znakov alebo polo¾iek"
+
+#: src/cut.c:831
+#, fuzzy
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "oddeµovaè mô¾e by» zadaný iba pri práci s polo¾kami"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"potlaèenie riadkov neobsahujúcich oddeµovaè, má význam iba\n"
+"\tpri pou¾ití pracuje s poµami"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "chýba zoznam polo¾iek"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "chýba zoznam pozícií"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Pou¾itie: %s [VO¥BA]... [+FORMÁT]\n"
+" alebo: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+
+#: src/date.c:137
+#, fuzzy
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"Vypísa» aktuálny èas v zadanom FORMÁTE alebo nastavi» systémový èas.\n"
+"\n"
+" -d, --date=RE«AZEC zobrazi» èas zadaný RE«AZCOM namiesto `teraz'\n"
+" -f, --file=SÚBOR ako --date pre ka¾dý riadok SÚBORU\n"
+" -I, --iso-8601[=©PEC] vypísa» dátum/èas v ISO-8601 formáte.\n"
+" ©PEC=`date' (alebo niè) pre samotný dátum,\n"
+" `hours', `minutes', alebo `seconds' pre dátum\n"
+" a èas po zadanú presnos».\n"
+" -r, --reference=SÚBOR zobrazi» èas poslednej zmeny SÚBORU\n"
+" -R, --rfc-822 vypísa» èas vo formáte vyhovujúcom RFC-822\n"
+" -s, --set=RE«AZEC nastavi» èas zadaný RE«AZCOM\n"
+" -u, --utc, --universal vypísa» alebo nastavi» univerzálny svetový èas\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "¹tandardný vstup"
+
+#: src/date.c:297 src/date.c:517
+#, fuzzy, c-format
+msgid "invalid date %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/date.c:408 src/date.c:442
+#, fuzzy, c-format
+msgid "multiple output formats specified"
+msgstr "\\%c: neprípustná sekvencia"
+
+#: src/date.c:420
+#, fuzzy, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "prepínaèe --string a --check sa vzájomne vyluèujú"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr "voµby pre výpis a nastavenie èasu nemô¾u by» pou¾ité spoloène"
+
+#: src/date.c:448
+#, fuzzy, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"argumentu `%s' chýba úvodný znak `+';\n"
+"Pokiaµ je pre ¹pecifikáciu dátumu pou¾itá voµba, v¹etky argumenty,\n"
+"ktoré nie sú voµbami, musia by» formátovacím re»azcom s úvodným `+'."
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "nie je mo¾né nastavi» dátum"
+
+#: src/date.c:548 src/du.c:425
+#, fuzzy, c-format
+msgid "time %s is out of range"
+msgstr "%s: èíslo riadku je mimo rozsah"
+
+#: src/dd.c:404
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾itie: %s [SÚBOR]...\n"
+" alebo: %s [VO¥BA]\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "%s existuje, ale nie je adresárom"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "skrátený záznam"
+msgstr[1] "skrátený záznam"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr ""
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ""
+
+#: src/dd.c:604
+#, fuzzy, c-format
+msgid "closing input file %s"
+msgstr "vytváram súbor `%s'\n"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "zatváram výstupný súbor %s"
+
+#: src/dd.c:791 src/dd.c:1455
+#, fuzzy, c-format
+msgid "writing to %s"
+msgstr "chyba pri zápise %s"
+
+#: src/dd.c:886
+#, fuzzy, c-format
+msgid "unrecognized operand %s"
+msgstr "neznámy prepínaè `-%c'"
+
+#: src/dd.c:897
+#, fuzzy, c-format
+msgid "invalid conversion: %s"
+msgstr "chybný typ re»azca `%s'"
+
+#: src/dd.c:900
+#, fuzzy, c-format
+msgid "invalid input flag: %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/dd.c:903
+#, fuzzy, c-format
+msgid "invalid output flag: %s"
+msgstr "neplatná skupina"
+
+#: src/dd.c:906
+#, fuzzy, c-format
+msgid "invalid status flag: %s"
+msgstr "chybný argument %s pre `%s'"
+
+#: src/dd.c:942
+#, fuzzy, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "neznámy prepínaè `-%c'"
+
+#: src/dd.c:948
+#, fuzzy, c-format
+msgid "invalid number %s"
+msgstr "neplatné èíslo"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#: src/dd.c:973
+#, fuzzy, c-format
+msgid "cannot combine block and unblock"
+msgstr "nie je mo¾né vynecha» pou¾ívateµa aj skupinu"
+
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "nie je mo¾né vytvori» odkaz %s"
+
+#: src/dd.c:977
+#, fuzzy, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+
+#: src/dd.c:1180 src/dd.c:1237
+#, fuzzy, c-format
+msgid "%s: cannot seek"
+msgstr "%s: nie je mo¾né zmaza»"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "varovanie: chybná ¹írka %lu; namiesto nej pou¾ijem %d"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr ""
+
+#: src/dd.c:1376
+#, fuzzy, c-format
+msgid "setting flags for %s"
+msgstr "nastavujem èasy %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr ""
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr ""
+
+#: src/dd.c:1670 src/dd.c:1699
+#, fuzzy, c-format
+msgid "opening %s"
+msgstr "chyba pri èítaní %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, fuzzy, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "presúvam sa za %s bajtov vo výstupnom súbore %s"
+
+#: src/df.c:151
+#, fuzzy
+msgid "Filesystem Type"
+msgstr "Súborový systém "
+
+#: src/df.c:153
+#, fuzzy
+msgid "Filesystem "
+msgstr "Súborový systém "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " I-uzly IPou¾ IVoµ IPou%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Veµk Pou¾ Dost Pou%%"
+
+#: src/df.c:162
+#, fuzzy, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Veµk Pou¾ Dost Pou%%"
+
+#: src/df.c:165
+#, fuzzy, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %4d-blokov Pou¾ Dostupné Kapacita"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " %4s-bloky Pou¾ Dostupné Pou%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Namontovaný na\n"
+
+#: src/df.c:468
+#, fuzzy, c-format
+msgid "cannot get current directory"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, fuzzy, c-format
+msgid "cannot change to directory %s"
+msgstr "nie je mo¾né vojs» do adresára, %s"
+
+#: src/df.c:498
+#, fuzzy, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+
+#: src/df.c:749
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr ""
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "súborový systém %s je zároveò vybratý a vylúèený"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Varovanie: "
+
+#: src/df.c:943
+#, fuzzy, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%snie je mo¾né preèíta» tabuµku namontovaných súborových systémov"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ]... [SÚBOR]...\n"
+
+#: src/dircolors.c:103
+#, fuzzy
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Príkaz pre nastavenie premennej prostredia LS_COLOR.\n"
+"\n"
+"©pecifikova» výstupný formát:\n"
+" -b, --sh, --bourne-shell výstupom je Bourne shellový príkaz\n"
+" pre nastavenie LS_COLORS\n"
+" -c, --csh, --c-shell výstupom je C shellový príkaz\n"
+" pre nastavenie LS_COLORS\n"
+" -p, --print-database vypísa» ¹tandardné nastavenia\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+
+#: src/dircolors.c:291
+#, fuzzy, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s: neplatný poèet sekúnd"
+
+#: src/dircolors.c:363
+#, fuzzy, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s: neznámy prepínaè `%c%s'\n"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<interné>"
+
+#: src/dircolors.c:445
+#, fuzzy, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"voµby pre podrobný a stty-èitateµný formát výstupu\n"
+"sa navzájom vyluèujú"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "nie je nastavená premenná prostredia SHELL a typ shellu nie je zadaný"
+
+#: src/dirname.c:48
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾itie: %s [SÚBOR]...\n"
+" alebo: %s [VO¥BA]\n"
+
+#: src/dirname.c:53
+#, fuzzy
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"Vypísa» NÁZOV s odstráneným koncovým komponentom a predchádzajúcim "
+"lomítkom.\n"
+"Pokiaµ NÁZOV neobsahuje lomítko, vypísa» `.' (s významom aktuálneho "
+"adresára).\n"
+"\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#: src/du.c:279 src/wc.c:108
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Pou¾itie: %s [PREPÍNAÈ]... [SÚBOR]...\n"
+" alebo: %s --traditional [SÚBOR] [[+]POSUN [[+]NÁVESTIE]]\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "celkom"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+
+#: src/du.c:780
+#, fuzzy, c-format
+msgid "invalid maximum depth %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr ""
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "nie je mo¾né súèasne sumarizova» a vypisova» v¹etky polo¾ky"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "varovanie: sumarizácia je to isté ako --max-depth=0"
+
+#: src/du.c:884
+#, fuzzy, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "varovanie: sumarizácia je v konflikte s --max-depth=%d"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+#: src/du.c:960 src/wc.c:662
+#, fuzzy, c-format
+msgid "cannot read file names from %s"
+msgstr "nie je mo¾né vytvori» odkaz %s"
+
+#: src/du.c:1000 src/du.c:1003
+#, fuzzy
+msgid "invalid zero-length file name"
+msgstr "neplatná skupina"
+
+#: src/echo.c:64
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ]... [SÚBOR]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/env.c:118
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ]... [SÚBOR]...\n"
+
+#: src/env.c:121
+#, fuzzy
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Nastavi» v prostredí ka¾dú PREMENNÚ na HODNOTU a spusti» PRÍKAZ.\n"
+"\n"
+" -i, --ignore-environment zaèa» s prázdnym prostredím\n"
+" -u, --unset=NAME odstráni» premennú z prostredia\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+"\n"
+"Samotné - implikuje -i. Pokiaµ nebol zadaný PRÍKAZ, výsledné prostredie sa "
+"vypí¹e.\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+
+#: src/expand.c:180 src/unexpand.c:199
+#, fuzzy, c-format
+msgid "tab stop is too large %s"
+msgstr "%s je príli¹ veµa"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, fuzzy, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "veµkos» tabulátoru obsahuje neplatný znak"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "veµkos» tabulátoru nemô¾e by» 0"
+
+# sizes or positions? - rzm
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "postupnos» pozíc tabulátorov musí by» rastúca"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, fuzzy, c-format
+msgid "input line is too long"
+msgstr "%s: súbor je príli¹ dlhý"
+
+#: src/expr.c:102
+#, fuzzy, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾itie: %s [SÚBOR]...\n"
+" alebo: %s [VO¥BA]\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"Pozor na to, ¾e veµa operátorov musí by» v shelli citovaných. Porovnania sú\n"
+"aritmetické, pokiaµ sú oba argumenty èíselné, inak sú lexikografické.\n"
+" Hµadanievzoru vracia vyhovujúci re»azec medzi \\( a \\) alebo prázdny "
+"re»azec; pokiaµ\n"
+"\\( a \\) nie sú pou¾ité, vracia poèet vyhovujúcich znakov alebo 0.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#: src/expr.c:175
+#, fuzzy, c-format
+msgid "syntax error"
+msgstr "¹tandardná chyba"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "chyba pri vyhµadávaní pomocou regulárneho výrazu"
+
+#: src/expr.c:653 src/expr.c:711
+#, fuzzy, c-format
+msgid "non-numeric argument"
+msgstr "argument orezaný"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr ""
+
+#: src/factor.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾itie: %s [SÚBOR]...\n"
+" alebo: %s [VO¥BA]\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+
+#: src/factor.c:85
+#, fuzzy
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"Rozlo¾i» ka¾dé ÈÍSLO na prvoèinitele; bez argumento èíta ¹tandardný vstup\n"
+"\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+"\n"
+" Vypí¹e prvoèinitele v¹etkých zadaných celých ÈÍSIEL. Pokiaµ na príkazovom\n"
+" riadku nie sú zadané ¾iadne argumenty, budú naèítané zo ¹tandardného "
+"vstupu.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s je príli¹ veµa"
+
+#: src/factor.c:158
+#, fuzzy, c-format
+msgid "%s is not a valid positive integer"
+msgstr "`%s' nie je platné kladné celé èíslo"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Pou¾itie: %s [-ÈÍSLICA] [PREPÍNAÈ]... [SÚBOR]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/fmt.c:282
+#, fuzzy
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" Preformátuje ka¾dý odstavec v SÚBORe(och) a výsledok zapí¹e na ¹tandardný\n"
+"výstup. Ak SÚBOR nebude zadaný alebo bude -, bude èítaný ¹tandardný vstup.\n"
+"\n"
+"Argumenty po¾adované dlhými prepínaèmi, sú tie¾ po¾adované krátkymi.\n"
+" -c, --crown-margin zachová odsadenie prvých dvoch riadkov\n"
+" -p, --prefix=RE«AZEC pracuje iba s riadkami majúcimi RE«AZEC ako "
+"prefix\n"
+" -s, --split-only iba rozdelí dlhé riadky\n"
+" -t, --tagged-paragraph odsadí prvý riadok rozdielne od druhého\n"
+" -u, --uniform-spacing jedna medzera medzi slovami, dve za vetou\n"
+" -w, --width=©ÍRKA maximálna ¹írka riadku (implicitne 75)\n"
+" --help vypí¹e túto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+"\n"
+"Pri prepínaèi -w©ÍRKA je mo¾né vynecha» znak `w'.\n"
+
+#: src/fmt.c:289
+#, fuzzy
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" Preformátuje ka¾dý odstavec v SÚBORe(och) a výsledok zapí¹e na ¹tandardný\n"
+"výstup. Ak SÚBOR nebude zadaný alebo bude -, bude èítaný ¹tandardný vstup.\n"
+"\n"
+"Argumenty po¾adované dlhými prepínaèmi, sú tie¾ po¾adované krátkymi.\n"
+" -c, --crown-margin zachová odsadenie prvých dvoch riadkov\n"
+" -p, --prefix=RE«AZEC pracuje iba s riadkami majúcimi RE«AZEC ako "
+"prefix\n"
+" -s, --split-only iba rozdelí dlhé riadky\n"
+" -t, --tagged-paragraph odsadí prvý riadok rozdielne od druhého\n"
+" -u, --uniform-spacing jedna medzera medzi slovami, dve za vetou\n"
+" -w, --width=©ÍRKA maximálna ¹írka riadku (implicitne 75)\n"
+" --help vypí¹e túto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+"\n"
+"Pri prepínaèi -w©ÍRKA je mo¾né vynecha» znak `w'.\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+
+#: src/fmt.c:400
+#, fuzzy, c-format
+msgid "invalid width: %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "neplatný poèet ståpcov: `%s'"
+
+#: src/head.c:113
+#, fuzzy
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+" Vypí¹e prvých 10 riadkov ka¾dého súboru na ¹tandardný výstup. S viac ako\n"
+"jedným súborom, bude pred vypísaním ka¾dého uvedená hlavièka obsahujúca "
+"meno\n"
+"súboru. Ak SÚBOR nebude zadaný alebo bude -, bude èítaný ¹tandardný vstup.\n"
+"\n"
+" -c, --bytes=VE¥KOS« vypí¹e prvých VE¥KOS« bytov\n"
+" -n, --lines=POÈET vypí¹e prvých POÈET riadkov namiesto prvých 10\n"
+" -q, --quiet, --silent nikdy nevypisuje hlavièky s názvami súborov\n"
+" -v, --verbose vypisuje hlavièky s názvami súborov v¾dy\n"
+" --help vypí¹e túto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+"\n"
+" VE¥KOS« mô¾e ma» násobiacu príponu: b pre 512, k pre 1K, m pre 1M. Pokiaµ\n"
+"prvý prepínaè bude -HODNOTA a ak bude pou¾itá násobiaca prípona, potom bude "
+"braný\n"
+"ako -c HODNOTA. Inak bude prepínaè braný ako -n HODNOTA.\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "chyba pri èítaní %s"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "chyba pri zápise %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr ""
+
+#: src/head.c:230 src/head.c:1046
+#, fuzzy, c-format
+msgid "%s: number of bytes is too large"
+msgstr "chybný poèet znakov pre porovnanie: `%s'"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr ""
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, fuzzy, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "ioctl na `%s' nie je mo¾né vykona»"
+
+#: src/head.c:793
+#, fuzzy, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+# src/tail.c:968
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s je príli¹ veµký, preto nie je reprezentovateµný"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "poèet riadkov"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "poèet bytov"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "chybný poèet riadkov"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "chybný poèet bytov"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "%s: chybný prepínaè -- %c\n"
+
+#: src/hostid.c:48
+#, fuzzy, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Pou¾itie: %s\n"
+" alebo: %s VO¥BA\n"
+"Vypísa» numerický (hexadecimálny) identifikátor aktuálneho poèítaèa.\n"
+"\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+"\n"
+
+#: src/hostname.c:65
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Pou¾itie: %s [NÁZOV]\n"
+" alebo: %s VO¥BA\n"
+"Vypísa» názov tohoto systému.\n"
+"\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "ioctl na `%s' nie je mo¾né vykona»"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr "nie je mo¾né nastavi» názov; tento systém to neumo¾òuje"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "nie je mo¾né zisti» názov systému"
+
+#: src/id.c:78
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ]... MNO®INA1 [MNO®INA2]\n"
+
+#: src/id.c:79
+#, fuzzy
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Vypísa» informáciu o POU®ÍVATE¥OVI, alebo o aktuálnom pou¾ívateµovi.\n"
+"\n"
+" -a ignorované, kvôli kompatibilite s inými verziami\n"
+" -g, --group vypísa» iba identifikáciu skupiny\n"
+" -G, --groups vypísa» iba identifikáciu doplnkových skupín\n"
+" -n, --name namiesto èísla vypísa» meno, pre -ugG\n"
+" -r, --real vypísa» reálne ID namiesto efektívneho ID, pre -ugG\n"
+" -u, --user vypísa» iba ID pou¾ívateµa\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+
+#: src/id.c:152
+#, fuzzy, c-format
+msgid "cannot print only user and only group"
+msgstr "nie je mo¾né vynecha» pou¾ívateµa aj skupinu"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr "v implicitnom formáte nie je mo¾né vypísa» iba mená alebo reálne ID"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Pou¾ívateµ neexistuje"
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "nie je mo¾né zisti» meno pre ID pou¾ívateµa %u\n"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "nie je mo¾né zmeni» pou¾ívateµa a/alebo skupinu %s"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "nie je mo¾né zisti» zoznam doplnkových skupín"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " skupiny="
+
+#: src/install.c:318
+#, fuzzy, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr ""
+"formátovací re»azec nemô¾e by» pou¾itý, pokiaµ je po¾adovaná rovnaká ¹írka"
+
+#: src/install.c:321
+#, fuzzy, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr ""
+"formátovací re»azec nemô¾e by» pou¾itý, pokiaµ je po¾adovaná rovnaká ¹írka"
+
+#: src/install.c:369 src/mkdir.c:193
+#, fuzzy, c-format
+msgid "invalid mode %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/install.c:520
+#, fuzzy, c-format
+msgid "cannot change ownership of %s"
+msgstr "nie je mo¾né zmeni» práva %s"
+
+#: src/install.c:541
+#, fuzzy, c-format
+msgid "cannot set time stamps for %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/install.c:562
+#, fuzzy, c-format
+msgid "fork system call failed"
+msgstr "veµkos» bloku"
+
+#: src/install.c:566
+#, fuzzy, c-format
+msgid "cannot run strip"
+msgstr "nie je mo¾né spusti» %s"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "chyba pri zápise %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, fuzzy, c-format
+msgid "invalid user %s"
+msgstr "neplatný pou¾ívateµ"
+
+#: src/install.c:628
+#, fuzzy, c-format
+msgid "creating directory %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/install.c:651
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Pou¾itie: %s [VO¥BA]... KONIEC\n"
+" alebo: %s [VO¥BA]... ZAÈIATOK KONIEC\n"
+" alebo: %s [VO¥BA]... ZAÈIATOK KROK LAST\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+
+#: src/install.c:681
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+#, fuzzy
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Prípona zálo¾ných súborov je ~, pokiaµ nie je nastavená voµbou --suffix "
+"alebo\n"
+"premennou SIMPLE_BACKUP_SUFFIX. Spôsob tvorby zálo¾ných kópií súborov mô¾e "
+"by»\n"
+"nastavený premennou VERSION_CONTROL, prípustné hodnoty sú:\n"
+"\n"
+" none, off nikdy nevytvára» zálo¾né kópie (ani ak bolo zadané --"
+"backup)\n"
+" numbered, t tvori» èíslované zálo¾né kópie\n"
+" existing, nil tvori» èíslované, pokiaµ u¾ èíslované zálo¾né kópie\n"
+" existujú, inak tvori» jednoduché\n"
+" simple, never v¾dy tvori» jednoduché zálo¾né kópie súborov \n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+
+#: src/join.c:153
+#, fuzzy
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" Porovnáva súbory ¥AVÝ_SÚBOR a PRAVÝ_SÚBOR, ktorých riadky sú usporiadané\n"
+"podµa nejakého kµúèa, riadok po riadku. Výstupom sú tri ståpce, riadky "
+"obsiahnuté\n"
+"iba v µavom súbore, riadky obsiahnuté iba v pravom súbore, riadky spoloèné\n"
+"obom súborom.\n"
+"\n"
+" -1 neukazuje riadky obsiahnuté iba v µavom súbore\n"
+" -2 neukazuje riadky obsiahnuté iba v pravom súbore\n"
+" -3 neukazuje riadky spoloèné obom súborom\n"
+" --help vypí¹e tuto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+
+#: src/join.c:617 src/join.c:812
+#, fuzzy, c-format
+msgid "invalid field number: %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "chybne zadaná polo¾ka: `%s'"
+
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "chybné èíslo súboru v popise polo¾ky: `%s'"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr ""
+
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "viacznakový tabulátor `%s'"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr ""
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "obidva súbory nemô¾u by» ¹tandardným vstupom"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+
+#: src/kill.c:103
+#, fuzzy
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+"Kopírova» ¹tandardný vstup do ka¾dého SÚBORU a tie¾ na ¹tandardný výstup.\n"
+"\n"
+" -a, --append prida» na koniec SÚBORU, neprepisova»\n"
+" -i, --ignore-interrupts ignorova» signály preru¹enia\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+
+#: src/kill.c:161
+#, fuzzy, c-format
+msgid "%s: invalid signal"
+msgstr "%s: chybné PID"
+
+#: src/kill.c:266
+#, fuzzy, c-format
+msgid "%s: invalid process id"
+msgstr "%s: chybný vzor"
+
+#: src/kill.c:320
+#, fuzzy, c-format
+msgid "invalid option -- %c"
+msgstr "%s: chybný prepínaè -- %c\n"
+
+#: src/kill.c:329
+#, fuzzy, c-format
+msgid "%s: multiple signals specified"
+msgstr "\\%c: neprípustná sekvencia"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr ""
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr ""
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr ""
+
+#: src/link.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾itie: %s [SÚBOR]...\n"
+" alebo: %s [VO¥BA]\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+
+#: src/link.c:95
+#, fuzzy, c-format
+msgid "cannot create link %s to %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr "%s: varovanie: pevný odkaz na symbolický odkaz nie je prenositeµný"
+
+#: src/ln.c:165
+#, fuzzy, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "`%s' nie je adresár"
+
+#: src/ln.c:218
+#, fuzzy, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: prepísa» %s? "
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "vytváram symbolický odkaz %s na %s"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "vytváram symbolický odkaz %s na %s"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "vytváram pevný odkaz %s na %s"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "vytváram pevný odkaz %s na %s"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "vytváram pevný odkaz %s na %s"
+
+#: src/ln.c:324
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Pou¾itie: %s [VO¥BA]... ZDROJ CIE¥ (1. formát)\n"
+" alebo: %s [VO¥BA]... ZDROJ... ADRESÁR (2. formát)\n"
+" alebo: %s -d [VO¥BA]... ADRESÁR... (3. formát)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+
+#: src/ln.c:484
+#, fuzzy, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "%s existuje, ale nie je adresárom"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ] [SÚBOR]...\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+
+#: src/logname.c:89
+#, fuzzy, c-format
+msgid "no login name"
+msgstr "%s: chybné èíslo"
+
+#: src/ls.c:684
+#, fuzzy
+msgid "%b %e %Y"
+msgstr "%b %e %H:%M %Y"
+
+#: src/ls.c:692
+#, fuzzy
+msgid "%b %e %H:%M"
+msgstr "%b %e %H:%M %Y"
+
+#: src/ls.c:1453
+#, fuzzy, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr ""
+"ignorujem chybný rozostup tabulátorov v premennej prostredia TABSIZE: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "ignorujem chybnú ¹írku v premennej prostredia COLUMNS: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr ""
+"ignorujem chybný rozostup tabulátorov v premennej prostredia TABSIZE: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, fuzzy, c-format
+msgid "invalid line width: %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/ls.c:1704
+#, fuzzy, c-format
+msgid "invalid tab size: %s"
+msgstr "chybný typ re»azca `%s'"
+
+#: src/ls.c:1885
+#, fuzzy, c-format
+msgid "invalid time style format %s"
+msgstr "chybný argument %s pre `%s'"
+
+#: src/ls.c:2229
+#, fuzzy, c-format
+msgid "unrecognized prefix: %s"
+msgstr "neznámy prepínaè `-%c'"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "nezrozumiteµná hodnota v premennej prostredia LS_COLORS"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, fuzzy, c-format
+msgid "cannot open directory %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/ls.c:2344
+#, fuzzy, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, fuzzy, c-format
+msgid "reading directory %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/ls.c:2410
+#, fuzzy, c-format
+msgid "closing directory %s"
+msgstr "nie je mo¾né vojs» do adresára, %s"
+
+#: src/ls.c:2918
+#, fuzzy, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "nie je mo¾né vytvori» odkaz %s"
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+
+#: src/ls.c:4360
+#, fuzzy
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -g (ignorované)\n"
+" -G, --no-group nevypisova» informácie o skupinách\n"
+" -h, --human-readable veµkosti v µahko èitateµnom formáte\n"
+" (napr. 1K 234M 2G)\n"
+" --si podobne, ale pou¾i» mocniny 1000 namiesto 1024\n"
+" -H zatiaµ to isté ako --si; èoskoro sa zmení\n"
+" kvôli kompatibilite s POSIX-om\n"
+" --indicator-style=©TÝL pripoji» indikátor ¹týlu ©TÝL k názvom:\n"
+" none (predvoµba), classify (-F), file-type (-"
+"p)\n"
+" -i, --inode ku ka¾dému súboru vypísa» aj èíslo jeho i-uzlu\n"
+" -I, --ignore=VZOR nevypisova» súbory vyhovujúce shellovému VZORu\n"
+" -k, --kilobytes ako --block-size=1024\n"
+" -l pou¾i» dlhý formát\n"
+" -L, --dereference v prípade symbolických odkazov vypísa» "
+"vlastnosti,\n"
+" súboru, na ktorý odkaz odkazuje\n"
+" -m oddeµova» súbory èiarkami\n"
+" -n, --numeric-uid-gid namiesto mena vlastníka (UID) a skupiny (GID)\n"
+" vypísa» èísla\n"
+" -N, --literal nespracováva» riadiace znaky v názvoch súborov\n"
+" -o pou¾i» dlhý formát bez informácií o skupinách\n"
+" -p, --file-type doplni» znak urèujúci typ ka¾dého souboru "
+"(jeden z /=@|)\n"
+" -q, --hide-control-chars namiesto negrafických znakov vypísa» '?'\n"
+" --show-control-chars vypísa» aj negrafické znaku (predvolené)\n"
+" -Q, --quote-name vlo¾i» názvy do úvodzoviek (citácia)\n"
+" --quoting-style=SLOVO citova» mená ¹týlom SLOVO:\n"
+" literal, shell, shell-always, c, escape\n"
+" -r, --reverse usporiada» v opaènom poradí\n"
+" -R, --recursive vypísa» adresáre rekurzívne\n"
+" -s, --size vypísa» veµkos» ka¾dého súboru v blokoch\n"
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#: src/md5sum.c:150
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Pou¾itie: %s [PREPÍNAÈ] [SÚBOR]\n"
+" Výstupom je totálne zotriedený zoznam v¹etkých polo¾iek zo v¹etkých\n"
+"vstupných riadkov, na ktorých sú polo¾ky zotriedené, vstupného SÚBORu.\n"
+"Jednotlivé polo¾ky sú na riadku oddelené medzerou.\n"
+" Pokiaµ nie je SÚBOR zadaný, bude èítaný ¹tandardný vstup.\n"
+"\n"
+" --help vypí¹e túto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+"\n"
+" -B, --binary pou¾ije mód binárneho zápisu na zariadenie "
+"konzoly\n"
+"\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+
+#: src/md5sum.c:459
+#, fuzzy, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: nenájdené správne sformátované riadky %s kontrolného súètu"
+
+#: src/md5sum.c:481
+#, fuzzy, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %lu: nesprávne sformátovaný riadok %s kontrolného súètu"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: ZLYHALO otvorenie alebo èítanie\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "CHYBNÝ"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "V PORIADKU"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: chyba pri èítaní"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: nenájdené správne sformátované riadky %s kontrolného súètu"
+
+# that's a case where cases are needed in Slavic languages
+# podanych/podanego are plural/singular Genitive, I moved them to
+# next messages hoping it doesn't spoil anything - rzm
+#
+# see also md5sum.c:430. it is somewhat surprising that we need
+# such things only in two places in this file - rzm 960902
+#
+#: src/md5sum.c:562
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "VAROVANIE: %d z %d %s nie je mo¾né èíta»"
+msgstr[1] "VAROVANIE: %d z %d %s nie je mo¾né èíta»"
+
+# once more `of computed checksum(s)' is `wyliczonej sumy' or
+# `wyliczonych sum' in sing. or plural Genitive; how to handle? - rzm
+#
+# it is better now but the word `wyliczonych' should also change according
+# to the number too (what a horrible language! - but there are worse)
+# so I'm moving it to the changing part; fortunately it is Genitive
+# so we don't need to use two forms for plural (depending on number: nn[234]
+# are different that the other ones) - rzm 960902
+#
+#: src/md5sum.c:574
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "VAROVANIE: %d z %d %s NEBOLI vyhodnotené"
+msgstr[1] "VAROVANIE: %d z %d %s NEBOLI vyhodnotené"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"prepínaèe --binary a --text sú bezvýznamné pri overovaní kontrolných súètov"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "prepínaè --status má význam iba pri overovaní kontrolných súètov"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "prepínaè --warn má význam iba pri overovaní kontrolných súètov"
+
+#: src/mkdir.c:59
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ] [SÚBOR]...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+"Vytvori» ADRESÁR(e), pokiaµ u¾ neexistuje.\n"
+"\n"
+" -m, --mode=PRÁVA nastavi» prístupové práva (ako s 'chmod'), nie rwxrwxrwx "
+"-\n"
+" umask\n"
+" -p, --parents existencia nie je chybou, vytvori» rodièovské adresáre,\n"
+" pokiaµ je to potrebné.\n"
+" --verbose vypísa» správu o ka¾dom vytváranom adresári\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+
+#: src/mkdir.c:168
+#, fuzzy, c-format
+msgid "created directory %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/mkfifo.c:54
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ] [SÚBOR]...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+"Vytvori» pomenované rúry (FIFO) s menami NÁZOV.\n"
+"\n"
+" -m, --mode=PRÁVA nastavi» prístupové práva (ako s 'chmod'), nie a=rw - "
+"umask\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, fuzzy, c-format
+msgid "invalid mode"
+msgstr "neplatné èíslo"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ]... MNO®INA1 [MNO®INA2]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+
+#: src/mknod.c:76
+#, fuzzy
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"Vytvori» ¹peciálny súbor NÁZOV zadaného TYPu.\n"
+"\n"
+" -m, --mode=PRÁVA nastavi» prístupové práva (ako s 'chmod'), nie a=rw - "
+"umask\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+"\n"
+"HLAVNÉ a VED¥AJ©IE èíslo nie je povolené pri TYPe p, inak je povinné.\n"
+"TYP mô¾e by»:\n"
+"\n"
+" b vytvori» blokový (vyrovnávaný) ¹peciálny súbor\n"
+" c, u vytvori» znakový (nevyrovnávaný) ¹peciálny súbor\n"
+" p vytvori» rúru (FIFO)\n"
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"pri vytváraní ¹peciálneho blokového súboru musí by» zadané\n"
+"hlavné a vedµaj¹ie èíslo zariadenia"
+
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "chybné poèiatoèné èíslo riadku: `%s'"
+
+#: src/mknod.c:167
+#, fuzzy, c-format
+msgid "block special files not supported"
+msgstr "veµkos» bloku"
+
+#: src/mknod.c:176
+#, fuzzy, c-format
+msgid "character special files not supported"
+msgstr "pozícia znaku je nula"
+
+#: src/mknod.c:192
+#, fuzzy, c-format
+msgid "invalid major device number %s"
+msgstr "chybné poèiatoèné èíslo riadku: `%s'"
+
+#: src/mknod.c:197
+#, fuzzy, c-format
+msgid "invalid minor device number %s"
+msgstr "chybné poèiatoèné èíslo riadku: `%s'"
+
+#: src/mknod.c:202
+#, fuzzy, c-format
+msgid "invalid device %s %s"
+msgstr "chybný argument %s pre `%s'"
+
+#: src/mknod.c:216
+#, fuzzy, c-format
+msgid "invalid device type %s"
+msgstr "chybný argument %s pre `%s'"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+
+#: src/mv.c:308
+#, fuzzy
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+"Premenovanie ZDROJa na CIE¥ alebo premiestnenie ZDROJa(ov) do ADRESÁRa.\n"
+"\n"
+" --backup[=CONTROL] vytvori» zálo¾nú kópiu ka¾dého existujúceho\n"
+" CIE¥a\n"
+" -b ako --backup, ale nepovoµuje argument\n"
+" -f, --force prepísa» existujúce ciele bez opýtania\n"
+" -i, --interactive pred prepísaním súboru sa opýta»\n"
+" --strip-trailing-slashes odstráni» koncové lomítka z ka¾dého\n"
+" ZDROJa\n"
+" -S, --suffix=PRÍPONA zmeni» obvyklú príponu zálo¾ných kópií\n"
+" --target-directory=ADR presunú» v¹etky ZDROJe do ADResára\n"
+" -u, --update premiestni» iba nov¹ie a úplne nové soubory\n"
+" -v, --verbose vypisova» informácie o priebehu\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+"\n"
+
+#: src/nice.c:76
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ] [SÚBOR]...\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "chybný argument %s pre `%s'"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "s úpravou musí by» zadaný príkaz"
+
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "nie je mo¾né vytvori» doèasný súbor"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "nie je mo¾né nastavi» dátum"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:189
+#, fuzzy
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" Vypí¹e ka¾dý SÚBOR na ¹tandardný výstup. Posledný riadok ako prvý.\n"
+"Pokiaµ SÚBOR nebude zadaný alebo bude -, bude èítaný ¹tandardný vstup.\n"
+"\n"
+" -b, --before pripojí oddeµovaè riadkov pred riadky namiesto\n"
+" za ne\n"
+" -r, --regex interpretuje oddeµovaè ako regulárny výraz\n"
+" -s, --separator=RE«AZEC pou¾ije RE«AZEC ako oddeµovaè namiesto nového "
+"riadku\n"
+" --help vypí¹e túto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+
+#: src/nl.c:214
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:281
+#, fuzzy, c-format
+msgid "line number overflow"
+msgstr "èíslo polo¾ky je nula"
+
+#: src/nl.c:479
+#, fuzzy, c-format
+msgid "invalid header numbering style: %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/nl.c:487
+#, fuzzy, c-format
+msgid "invalid body numbering style: %s"
+msgstr "neplatné èíslo"
+
+#: src/nl.c:495
+#, fuzzy, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "chybné èíslo súboru v popise polo¾ky: `%s'"
+
+#: src/nl.c:504
+#, fuzzy, c-format
+msgid "invalid starting line number: %s"
+msgstr "chybné poèiatoèné èíslo riadku: `%s'"
+
+#: src/nl.c:513
+#, fuzzy, c-format
+msgid "invalid line number increment: %s"
+msgstr "chybná hodnota prírastku èísla riadku: `%s'"
+
+#: src/nl.c:525
+#, fuzzy, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "chybný poèet prázdnych riadkov: `%s'"
+
+#: src/nl.c:539
+#, fuzzy, c-format
+msgid "invalid line number field width: %s"
+msgstr "chybná ¹írka èísla riadku: `%s'"
+
+#: src/nl.c:558
+#, fuzzy, c-format
+msgid "invalid line numbering format: %s"
+msgstr "chybná hodnota prírastku èísla riadku: `%s'"
+
+#: src/nohup.c:57
+#, fuzzy, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾itie: %s [SÚBOR]...\n"
+" alebo: %s [VO¥BA]\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "príli¹ veµa argumentov"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, fuzzy, c-format
+msgid "failed to open %s"
+msgstr "zachovávam èasy %s"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr ""
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr ""
+
+#: src/od.c:307
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Pou¾itie: %s [PREPÍNAÈ]... [SÚBOR]...\n"
+" alebo: %s --traditional [SÚBOR] [[+]POSUN [[+]NÁVESTIE]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:353
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "chybný typ re»azca `%s'"
+
+#: src/od.c:693
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr "chybný typ `%s'; tento systém nemá %lu-bytové celé èísla"
+
+#: src/od.c:812
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"chybný typ `%s'; tento systém nemá %lu-bytové èísla s plávajúcou radovou\n"
+"èiarkou"
+
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "znak `%c' v re»azci typu `%s' je chybný"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "nemo¾no preskoèi» koniec kombinovaného vstupu"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+"chybný základ výstupnej adresy `%c'; musí to by» jeden zo znakov [doxn]"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "preskakujem argument"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "argument orezaný"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "minimálna då¾ka re»azca"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "specifikácia ¹írky"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "pri vypisovaní re»azcov nemo¾no zada» typ"
+
+#: src/od.c:1844
+#, fuzzy
+msgid "Compatibility mode supports at most one file."
+msgstr "v kompatibilnom móde nemô¾u by» viac ako tri argumenty"
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr ""
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "varovanie: chybná ¹írka %lu; namiesto nej pou¾ijem %d"
+
+# should this be translated? - rzm
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: formát='%s' ¹írka=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "¹tandardný vstup je uzavrený"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+
+#: src/pathchk.c:99
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ]... [SÚBOR]...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "znak `%c' v re»azci typu `%s' je chybný"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr ""
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Prihlasovacie meno: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "V reáli: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Adresár: "
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Shell: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Projekt: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "Plán:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Login"
+
+#: src/pinky.c:423
+#, fuzzy
+msgid "Name"
+msgstr " Meno"
+
+#: src/pinky.c:424
+#, fuzzy
+msgid " TTY"
+msgstr "TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Neèin"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Kedy"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Kde "
+
+#: src/pinky.c:510
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ]... [SÚBOR]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+
+#: src/pinky.c:612
+#, fuzzy, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr "pri pou¾ití prepínaèa --string nemô¾u by» zadané súbory"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr ""
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "`--pages=PRVÁ_STRÁNKA[:POSLEDNÁ_STRÁNKA]' chýbajúci parameter"
+
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "chybný typ re»azca `%s'"
+
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "`-l DÅ®KA_STRÁNKY' chybný poèet riadkov na stranu: `%s'"
+
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "`-N ÈÍSLO'chybné èíslo poèiatoèného riadku: `%s'"
+
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "`-o OKRAJ' chybný posun riadku: `%s'"
+
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-w ©ÍRKA_STRÁNKY' - chybný poèet riadkov na stranu: `%s'"
+
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-W ©ÍRKA_STRÁNKY' - chybný poèet riadkov na stranu: `%s'"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "Pri výpise vedµa seba, nie je mo¾né zada» poèet ståpcov."
+
+# wzdluz? - rzm
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "Nie je mo¾né zada» výpis súborov po sebe a vedµa seba."
+
+#: src/pr.c:1202
+#, fuzzy, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "`-%c' nadbytoèné znaky alebo zlé èíslo v argumente: `%s'"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "¹írka stránky je príli¹ malá"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2406
+#, fuzzy, c-format
+msgid "Page number overflow"
+msgstr "èíslo polo¾ky je nula"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr ""
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+
+#: src/pr.c:2862
+#, fuzzy
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" Porovnáva súbory ¥AVÝ_SÚBOR a PRAVÝ_SÚBOR, ktorých riadky sú usporiadané\n"
+"podµa nejakého kµúèa, riadok po riadku. Výstupom sú tri ståpce, riadky "
+"obsiahnuté\n"
+"iba v µavom súbore, riadky obsiahnuté iba v pravom súbore, riadky spoloèné\n"
+"obom súborom.\n"
+"\n"
+" -1 neukazuje riadky obsiahnuté iba v µavom súbore\n"
+" -2 neukazuje riadky obsiahnuté iba v pravom súbore\n"
+" -3 neukazuje riadky spoloèné obom súborom\n"
+" --help vypí¹e tuto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/printenv.c:61
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Pou¾itie: %s [PREMENNÁ]...\n"
+" alebo: %s VO¥BA\n"
+"Pokiaµ nie je zadaná PREMENNÁ, vypísa» v¹etky.\n"
+"\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+"varovanie: %s: znak (znaky) nasledujúce za znakovou kon¹tantou boli "
+"ignorované"
+
+#: src/printf.c:93
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾itie: %s [SÚBOR]...\n"
+" alebo: %s [VO¥BA]\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: oèakávaná numerická hodnota"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: hodnota nebola úplne prevedená"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "v sekvencii chýba hexadecimálne èíslo"
+
+#: src/printf.c:289
+#, fuzzy, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "chybná trieda znaku `%s'"
+
+#: src/printf.c:550
+#, fuzzy, c-format
+msgid "invalid field width: %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/printf.c:585
+#, fuzzy, c-format
+msgid "invalid precision: %s"
+msgstr "chybný typ re»azca `%s'"
+
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%s: chybne zadaná polo¾ka `%s'"
+
+#: src/printf.c:683
+#, fuzzy, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "varovanie: nadbytoèné argumenty boli ignorované"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr ""
+
+#: src/ptx.c:422
+#, fuzzy, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (pre regvýr `%s')"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Pou¾itie: %s [PREPÍNAÈ]... [VSTUP]... (bez -G)\n"
+" alebo: %s -G [PREPÍNAÈ]... [VSTUP [VÝSTUP]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr ""
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+
+#: src/pwd.c:160
+#, fuzzy, c-format
+msgid "failed to chdir to %s"
+msgstr "zmena skupiny %s na %s zlyhala\n"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "zis»ujem atribúty %s"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, fuzzy, c-format
+msgid "ignoring non-option arguments"
+msgstr "príli¹ mnoho argumentov, ktoré nie sú prepínaèmi"
+
+#: src/readlink.c:67
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ]... [SÚBOR]...\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "nie je mo¾né vojs» do adresára, %s"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, fuzzy, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"%s: VAROVANIE: Zacyklená ¹truktúra adresárov.\n"
+"To skoro urèite znamená, ¾e máte po¹kodený súborový systém.\n"
+"INFORMUJTE VÁ©HO SPRÁVCU SYSTÉMU.\n"
+"Nasledujúce adresáre majú rovnaké èíslo i-uzlu:\n"
+
+#: src/remove.c:854
+#, fuzzy, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/remove.c:855
+#, fuzzy, c-format
+msgid "%s: descend into directory %s? "
+msgstr "nie je mo¾né vojs» do adresára, %s"
+
+#: src/remove.c:865
+#, fuzzy, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: zmaza» súbor chránený proti zápisu %s? "
+
+#: src/remove.c:866
+#, fuzzy, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: zmaza» %s? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, fuzzy, c-format
+msgid "removed directory: %s\n"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "nie je mo¾né vojs» do adresára, %s"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, fuzzy, c-format
+msgid "cannot remove directory %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/remove.c:1450
+#, fuzzy, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "nie je mo¾né vojs» do adresára, %s"
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/remove.c:1558
+#, fuzzy, c-format
+msgid "cannot restore current working directory"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#: src/rm.c:160 src/touch.c:233
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ]... [SÚBOR]...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: zmaza» %s? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, fuzzy, c-format
+msgid "removing directory, %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/rmdir.c:140
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ]... [SÚBOR]...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+
+#: src/rmdir.c:148
+#, fuzzy
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+"Zmaza» ADRESÁR(e), pokiaµ sú prázdne.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignorova» ka¾dú chybu spôsobenú výluène tým, ¾e\n"
+" adresár nie je prázdny\n"
+" -p, --parents zmaza» adresár a potom v¹etky elementy cesty k nemu.\n"
+" Napr. `rmdir -p a/b/c' je podobný ako `rmdir a/b/c a/b "
+"a'.\n"
+" --verbose vypísa» správu pre ka¾dý spracovaný adresár\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+
+#: src/seq.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Pou¾itie: %s [PREPÍNAÈ]... [VSTUP]... (bez -G)\n"
+" alebo: %s -G [PREPÍNAÈ]... [VSTUP [VÝSTUP]]\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"Vypísa» èísla od ZAÈIATKU do KONCA s prírastkom KROK.\n"
+"\n"
+" -f, --format FORMÁT pou¾i» printf(3) FORMÁT (implicitne %%g)\n"
+" -s, --separator RE«AZEC pou¾i» RE«AZEC pre oddelenie èísiel (implicitne "
+"\\n)\n"
+" -w, --equal-width vyrovnaj då¾ky pou¾itím úvodných núl\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+"\n"
+"Pokiaµ je ZAÈIATOK alebo KONIEC vynechaný, pou¾ije sa 1.\n"
+"ZAÈIATOK, KONIEC a KROK sú interpretované ako èísla s pohyblivou rádovou "
+"èiarkou.\n"
+"KROK by mal by» kladný, pokiaµ je ZAÈIATOK men¹í ako KONIEC, inak záporný.\n"
+"Pokiaµ je zadaný, FORMÁT musí obsahova» práve jeden z výstupných\n"
+"printf-formátov pre èísla v pohyblivej rádovej èiarke %%e, %%f alebo %%g.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, fuzzy, c-format
+msgid "invalid floating point argument: %s"
+msgstr "chybné poèiatoèné èíslo riadku: `%s'"
+
+#: src/seq.c:342
+#, fuzzy, c-format
+msgid "invalid format string: %s"
+msgstr "chybný typ re»azca `%s'"
+
+#: src/seq.c:364
+#, fuzzy, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr "pri vypisovaní re»azcov nemo¾no zada» typ"
+
+#: src/setuidgid.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾itie: %s [SÚBOR]...\n"
+" alebo: %s [VO¥BA]\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr ""
+
+#: src/setuidgid.c:109
+#, fuzzy, c-format
+msgid "cannot set supplemental group"
+msgstr "nie je mo¾né zisti» zoznam doplnkových skupín"
+
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "nie je mo¾né vynecha» pou¾ívateµa aj skupinu"
+
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "nie je mo¾né vynecha» pou¾ívateµa aj skupinu"
+
+#: src/shred.c:165
+#, fuzzy, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ] [SÚBOR]...\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+
+#: src/shred.c:303
+#, fuzzy, c-format
+msgid "%s: fdatasync failed"
+msgstr "zlyhal stat"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr ""
+
+#: src/shred.c:391
+#, fuzzy, c-format
+msgid "%s: cannot rewind"
+msgstr "nie je mo¾né spusti» %s"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: prechod %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, fuzzy, c-format
+msgid "%s: error writing at offset %s"
+msgstr "chyba pri zápise %s"
+
+#: src/shred.c:478
+#, fuzzy, c-format
+msgid "%s: lseek failed"
+msgstr "zlyhalo zatvorenie súboru"
+
+#: src/shred.c:489
+#, fuzzy, c-format
+msgid "%s: file too large"
+msgstr "%s: súbor je príli¹ dlhý"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: prechod %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, fuzzy, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: prechod %lu/%lu (%s)...%s/%s"
+
+#: src/shred.c:776
+#, fuzzy, c-format
+msgid "%s: fstat failed"
+msgstr "zlyhal stat"
+
+#: src/shred.c:787
+#, fuzzy, c-format
+msgid "%s: invalid file type"
+msgstr "%s: chybný poèet riadkov"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: súbor má zápornú då¾ku"
+
+#: src/shred.c:873
+#, fuzzy, c-format
+msgid "%s: error truncating"
+msgstr "%s: súbor bol skrátený"
+
+#: src/shred.c:889
+#, fuzzy, c-format
+msgid "%s: fcntl failed"
+msgstr "zlyhal stat"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s: nie je mo¾né skartova» deskriptor urèený iba pre pridávanie"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: ma¾e sa"
+
+#: src/shred.c:996
+#, fuzzy, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: chyba pri èítaní"
+
+#: src/shred.c:1018
+#, fuzzy, c-format
+msgid "%s: failed to remove"
+msgstr "%s: súbor je príli¹ dlhý"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: zmazaný"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, fuzzy, c-format
+msgid "%s: failed to close"
+msgstr "%s: súbor je príli¹ dlhý"
+
+#: src/shred.c:1065
+#, fuzzy, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: súbor je príli¹ dlhý"
+
+#: src/shred.c:1130
+#, fuzzy, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: neplatný poèet sekúnd"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "\\%c: neprípustná sekvencia"
+
+#: src/shred.c:1153
+#, fuzzy, c-format
+msgid "%s: invalid file size"
+msgstr "%s: chybný poèet riadkov"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Pou¾itie: %s [PREPÍNAÈ]... [VSTUP]... (bez -G)\n"
+" alebo: %s -G [PREPÍNAÈ]... [VSTUP [VÝSTUP]]\n"
+
+#: src/shuf.c:57
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "\\%c: neprípustná sekvencia"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "neplatné èíslo"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, fuzzy, c-format
+msgid "multiple output files specified"
+msgstr "\\%c: neprípustná sekvencia"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr "nadbytoèný operand `%s' nie je povolený, pokiaµ je pou¾ité -c"
+
+#: src/sleep.c:47
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Pou¾itie: %s ÈÍSLO[PRÍPONA]...\n"
+" alebo: %s VO¥BA\n"
+"Poèka» POÈET sekúnd.\n"
+"PRÍPONA mô¾e by» s pre sekundy, m pre minúty, h pre hodiny alebo d pre dni.\n"
+"Na rozdiel od väè¹iny implementácií vy¾adujúcich, aby ÈÍSLO bolo celé, tu\n"
+"mô¾e by» zadané aj ako desatinné.\n"
+"\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "nie je mo¾né preèíta» hodiny reálneho èasu"
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+#, fuzzy
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+"Spojí v¹etky SÚBORy a zotriedený výsledok zapí¹e na ¹tandardný výstup.\n"
+"\n"
+"Voµby zoraïovania:\n"
+"\n"
+" -b, --ignore-leading-blanks ignoruje úvodné medzery\n"
+" -d, --dictionary-order zohµadòuje iba medzery a alfanumerické znaky\n"
+" -f, --ignore-case zamení v kµúèoch malé písmená za veµké\n"
+" -g, --general-numeric-sort porovnáva podµa v¹eobecnej veµkosti èísiel\n"
+" -i, --ignore-nonprinting zohµadòuje iba tlaèiteµné znaky\n"
+" -M, --month-sort porovná podµa mesiacov (neznámy) < `JAN' <\n"
+" ... < `DEC'\n"
+" -n, --numeric-sort porovná podµa re»azcovej veµkosti èísiel\n"
+" -r, --reverse obrátený výsledok porovnávania\n"
+
+#: src/sort.c:326
+#, fuzzy
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+"Spojí v¹etky SÚBORy a zotriedený výsledok zapí¹e na ¹tandardný výstup.\n"
+"\n"
+"Voµby zoraïovania:\n"
+"\n"
+" -b, --ignore-leading-blanks ignoruje úvodné medzery\n"
+" -d, --dictionary-order zohµadòuje iba medzery a alfanumerické znaky\n"
+" -f, --ignore-case zamení v kµúèoch malé písmená za veµké\n"
+" -g, --general-numeric-sort porovnáva podµa v¹eobecnej veµkosti èísiel\n"
+" -i, --ignore-nonprinting zohµadòuje iba tlaèiteµné znaky\n"
+" -M, --month-sort porovná podµa mesiacov (neznámy) < `JAN' <\n"
+" ... < `DEC'\n"
+" -n, --numeric-sort porovná podµa re»azcovej veµkosti èísiel\n"
+" -r, --reverse obrátený výsledok porovnávania\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/sort.c:363
+#, fuzzy
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"POZ je F[.C][PREPÍNAÈE], kde F je èíslo polo¾ky a C pozícia znaku v "
+"polo¾ke,\n"
+"obidvoje poèítané od 1 s -k, od 0 so zastaranou formou. PREPÍNAÈE sú "
+"vytvorené\n"
+"z jedného alebo viacerých písmen radenia, ktoré zablokujú globálne "
+"nastavenie\n"
+"pre tento kµúè. Ak nebude kµúè zadaný, ako kµúè sa pou¾ije celý riadok.\n"
+"Ak nebude SÚBOR zadaný alebo bude -, bude èítaný ¹tandardný vstup.\n"
+"\n"
+"VE¥KOS« mô¾e by» nasledovaná nasledovnými príponami násobkov:\n"
+"%% 1%% pamäti, b 1, k 1024 (implicitné), atï pre M, G, T, P, E, Z, Y.\n"
+"\n"
+"*** VAROVANIE ***\n"
+"Nastavené národné prostredie ovplyvòuje triedenie. Pokiaµ si ¾eláte.\n"
+"triedenie s pou¾itím tradièných bajtových hodnôt znakov, nastavte LC_ALL=C.\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "chyba pri zápise %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "nie je mo¾né vytvori» doèasný súbor"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "zlyhalo otvorenie"
+
+#: src/sort.c:758
+#, fuzzy
+msgid "fflush failed"
+msgstr "zlyhalo zatvorenie súboru"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "zlyhalo zatvorenie súboru"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "zlyhalo otvorenie"
+
+#: src/sort.c:871
+#, fuzzy, c-format
+msgid "couldn't execute %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "nie je mo¾né vytvori» doèasný súbor"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "nie je mo¾né vytvori» doèasný súbor"
+
+#: src/sort.c:920
+#, fuzzy, c-format
+msgid "couldn't execute %s -d"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "chyba pri zápise"
+
+#: src/sort.c:975
+#, fuzzy, c-format
+msgid "warning: cannot remove: %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "veµkos» triedenia"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "zlyhal stat"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "zlyhalo èítanie"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: nezotriediteµné: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "¹tandardná chyba"
+
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: chybne zadaná polo¾ka `%s'"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: chybný poèet na zaèiatku `%s'"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "chybné èíslo za `-'"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "chybné èíslo za `.'"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "neoèakávaný znak v ¹pecifikácii polo¾ky"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "\\%c: neprípustná sekvencia"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "chybné èíslo na zaèiatku polo¾ky"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "èíslo polo¾ky je nula"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "pozícia znaku je nula"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "chybné èíslo za `,'"
+
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "nadbytoèný operand `%s' nie je povolený, pokiaµ je pou¾ité -c"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ] [SÚBOR [PREDPONA]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/split.c:119
+#, fuzzy, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" Rozdelí SÚBOR do súborov PREDPONAaa, PREDPONAab, ... s pevnou då¾kou.\n"
+"Implicitná PREDPONA je `x'. Pokiaµ SÚBOR nebude zadaný alebo bude -, bude "
+"èítaný\n"
+"¹tandardný vstup.\n"
+"\n"
+" -b, --bytes=VE¥KOS« zapí¹e VE¥KOST bytov do výstupného súboru\n"
+" -C, --line-bytes=VE¥KOS« zapí¹e najviac VE¥KOST bytov na výstupný riadok\n"
+" -l, --lines=POÈET zapí¹e POÈET riadkov do výstupného súboru\n"
+" -POÈET to isté ako -l POÈET\n"
+" --verbose pred otvorením ka¾dého výstupného súboru vypí¹e\n"
+" o tom oznámenie na ¹tandardný výstup\n"
+" --help vypí¹e túto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenei verzie a skonèí\n"
+"\n"
+"VE¥KOS« mô¾e ma» násobiacu príponu: b - 512, k - 1024, m - 1 Mega.\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr ""
+
+#: src/split.c:211
+#, fuzzy, c-format
+msgid "creating file %s\n"
+msgstr "vytváram súbor `%s'\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "súbor sa nedá rozdeli» viacerými spôsobmi"
+
+#: src/split.c:420
+#, fuzzy, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: chybný poèet riadkov"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: chybný poèet bytov"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: chybný poèet riadkov"
+
+#: src/split.c:487
+#, fuzzy, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "%s: poèet `%.*s' príli¹ veµký"
+
+#: src/split.c:518
+#, fuzzy, c-format
+msgid "invalid number of lines: 0"
+msgstr "chybný poèet riadkov"
+
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s: neznámy prepínaè `%c%s'\n"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%s: chybný vzor"
+
+#: src/stat.c:726
+#, fuzzy, c-format
+msgid "warning: backslash at end of format"
+msgstr "chybne pou¾ité spätné lomítko na konci re»azca"
+
+#: src/stat.c:755
+#, fuzzy, c-format
+msgid "cannot read file system information for %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/stat.c:831
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ] [SÚBOR]...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Pou¾itie: %s [-F ZARIADENIE] [--file=ZARIADENIE] [NASTAVENIE]...\n"
+" alebo: %s [-F ZARIADENIE] [--file=ZARIADENIE] [-a|--all]\n"
+" alebo: %s [-F ZARIADENIE] [--file=ZARIADENIE] [-g|--save]\n"
+
+#: src/stty.c:517
+#, fuzzy
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Nastavi» alebo zmeni» charakteristiku terminálu.\n"
+"\n"
+" -a, --all vypísa» v¹etky aktuálne nastavenia vo formáte\n"
+" èitateµnom pre èloveka\n"
+" -g, --save vypísa» v¹etky aktuálne nastavenia vo formáte\n"
+" èitateµnom pre stty\n"
+" -F, --file=ZARIADENIE otvori» a pou¾íva» zadané zariadenie namiesto\n"
+" ¹tandardného vstupu\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+"\n"
+"Voliteµné - pred NASTAVENÍM oznaèuje negáciu. Hviezdièka oznaèuje "
+"nastavenia,\n"
+"ktoré nie sú súèas»ou POSIX-u. Konkrétny systém urèuje, ktoré nastavenia\n"
+"sú prístupné.\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+
+#: src/stty.c:583
+#, fuzzy
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+"\n"
+"Riadiace nastavenia:\n"
+" [-]clocal zakáza» signály riadenia modemu\n"
+" [-]cread povoli» príjem vstupu\n"
+"* [-]crtscts povoli» RTS/CTS protokol\n"
+" csN nastavi» då¾ku znaku na N bitov, N in [5..8]\n"
+" [-]cstopb pou¾íva» dva stop bity (jeden s `-')\n"
+" [-]hup posla» signál zavesenia, keï posledný proces zatvorí "
+"terminál\n"
+" [-]hupcl ako [-]hup\n"
+" [-]parenb generova» paritný bit na výstupa a oèakáva» ho na vstupe\n"
+" [-]parodd nastavi» nepárnu paritu (aj s `-')\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:624
+#, fuzzy
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+"\n"
+"Nastavenia výstupu:\n"
+"* bsN oneskorenie znaku kroku spä», N je z [0..1]\n"
+"* crN oneskorenie znaku prechodu na zaèiatok riadku, N je z "
+"[0..3]\n"
+"* ffN oneskorenie znaku novej stránky, N je z [0..1]\n"
+"* nlN oneskorenie znaku nového riadku, N je z [0..1]\n"
+"* [-]ocrnl preklada» znaky návratu na zaèiatok riadku na nové riadky\n"
+"* [-]ofdel pre vyplnenie pou¾í» znaky vymazania namiesto nulových "
+"znakov\n"
+"* [-]ofill pou¾í» výplòové znaku namiesto oneskorení\n"
+"* [-]olcuc preklada» malé znaky na veµké\n"
+"* [-]onlcr preklada» nové riadky na znaky návratu na zaèiatok riadku\n"
+"* [-]onlret znak nového riadku prejde na zaèiatok riadku\n"
+"* [-]onocr nevraca» sa na zaèiatok riadku z prvého ståpca\n"
+" [-]opost následne spracováva» výstup\n"
+"* tabN oneskorenie horizontálneho tabulátora, N je z [0..3]\n"
+"* tabs ako tab0\n"
+"* -tabs ako tab3\n"
+"* vtN oneskorenie vertikálneho tabulátora, N je z [0..1]\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"Ovládanie terminálu pripojeného na ¹tandardný vstup. Bez argumentov\n"
+"vypí¹e baudovú rýchlos», linkovú disciplínu a odchylky od stty sane.\n"
+"V nastaveniach sa ZNAK ¹pecifikuje tak ako je, alebo kódovaný spôsobom\n"
+"^c, 0x37, 0177 alebo 127; pre zákaz ¹peciálneho znaku treba pou¾i»\n"
+"^- alebo undef.\n"
+
+#: src/stty.c:789
+#, fuzzy, c-format
+msgid "only one device may be specified"
+msgstr "mô¾e by» zadaný iba jeden argument"
+
+#: src/stty.c:819
+#, fuzzy, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr "prepínaèe --string a --check sa vzájomne vyluèujú"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr ""
+"nastavenia nemô¾u by» ¹pecifikované, pokiaµ je po¾adovaný výpis nastavení"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: nie je mo¾né opusti» neblokovací re¾im"
+
+#: src/stty.c:885 src/stty.c:995
+#, fuzzy, c-format
+msgid "invalid argument %s"
+msgstr "chybný argument %s pre `%s'"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, fuzzy, c-format
+msgid "missing argument to %s"
+msgstr "nejednoznaèný argument %s pre `%s'"
+
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "chybné èíslo polo¾ky: `%s'"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: nie je mo¾né vykona» v¹etky po¾adované operácie"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "new_mode: mode\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: neexistuje informácia o veµkosti tohoto zariadenia"
+
+#: src/stty.c:1888
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "chybná hodnota prírastku èísla riadku: `%s'"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Heslo:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: nie je mo¾né otvori» /dev/tty"
+
+#: src/su.c:303
+#, fuzzy, c-format
+msgid "cannot set groups"
+msgstr "nie je mo¾né vynecha» pou¾ívateµa aj skupinu"
+
+#: src/su.c:307
+#, fuzzy, c-format
+msgid "cannot set group id"
+msgstr "nie je mo¾né vynecha» pou¾ívateµa aj skupinu"
+
+#: src/su.c:309
+#, fuzzy, c-format
+msgid "cannot set user id"
+msgstr "nie je mo¾né vynecha» pou¾ívateµa aj skupinu"
+
+#: src/su.c:385
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ]... [SÚBOR]...\n"
+
+#: src/su.c:386
+#, fuzzy
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Zmeni» efektívne id pou¾ívateµa a skupiny na id POU®ÍVATE¥A.\n"
+"\n"
+" -, -l, --login urobi» tento shell prihlasovacím\n"
+" -c, --commmand=PRÍKAZ odovzda» shellu PRÍKAZ pomocou -c\n"
+" -f, --fast odovzda» shellu -f (pre csh alebo tcsh)\n"
+" -m, --preserve-environment zachova» premenné prostredia\n"
+" -p same as -m\n"
+" -s, --shell=SHELL spusti» SHELL, pokiaµ to /etc/shells "
+"povoµuje\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+"\n"
+"Samotné - implikuje -l. Ak POU®ÍVATE¥ nebol zadaný, predpokladá sa root.\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "pou¾ívateµ %s neexistuje"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "nesprávne heslo"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "pou¾itý obmedzený shell %s"
+
+#: src/su.c:523
+#, fuzzy, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/sum.c:63
+#, fuzzy
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Ku ka¾dému SÚBORu vypí¹e kontrolný súèet a poèet blokov.\n"
+"\n"
+" -r pou¾ije algoritmus BSD a bloky veµkosti 1 KB\n"
+" -s, --sysv pou¾ije algoritmus System V a bloky veµkosti 512 bytov\n"
+" --help vypí¹e tuto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+"\n"
+"Pokiaµ SÚBOR nebude zadaný alebo bude -, bude èítaný ¹tandardný vstup.\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+
+#: src/sync.c:74
+#, fuzzy, c-format
+msgid "ignoring all arguments"
+msgstr "príli¹ veµa argumentov"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#: src/system.h:417
+#, fuzzy
+msgid " --help display this help and exit\n"
+msgstr ""
+"Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+"\n"
+" --help vypí¹e túto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#: src/system.h:419
+#, fuzzy
+msgid " --version output version information and exit\n"
+msgstr ""
+"Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+"\n"
+" --help vypí¹e túto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tac.c:145
+#, fuzzy
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" Vypí¹e ka¾dý SÚBOR na ¹tandardný výstup. Posledný riadok ako prvý.\n"
+"Pokiaµ SÚBOR nebude zadaný alebo bude -, bude èítaný ¹tandardný vstup.\n"
+"\n"
+" -b, --before pripojí oddeµovaè riadkov pred riadky namiesto\n"
+" za ne\n"
+" -r, --regex interpretuje oddeµovaè ako regulárny výraz\n"
+" -s, --separator=RE«AZEC pou¾ije RE«AZEC ako oddeµovaè namiesto nového "
+"riadku\n"
+" --help vypí¹e túto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, fuzzy, c-format
+msgid "%s: seek failed"
+msgstr "zlyhalo zatvorenie súboru"
+
+#: src/tac.c:265
+#, fuzzy, c-format
+msgid "record too large"
+msgstr "%s: súbor je príli¹ dlhý"
+
+#: src/tac.c:459
+#, fuzzy, c-format
+msgid "cannot create temporary file %s"
+msgstr "nie je mo¾né vytvori» doèasný súbor"
+
+#: src/tac.c:466
+#, fuzzy, c-format
+msgid "cannot open %s for writing"
+msgstr "nie je mo¾né otvori» %s pre èítanie"
+
+#: src/tac.c:487 src/tac.c:494
+#, fuzzy, c-format
+msgid "%s: write error"
+msgstr "chyba pri zápise"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "oddeµovaè nemô¾e by» prázdny"
+
+#: src/tail.c:220
+#, fuzzy, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+" Vypí¹e prvých 10 riadkov ka¾dého súboru na ¹tandardný výstup. S viac ako\n"
+"jedným súborom, bude pred vypísaním ka¾dého uvedená hlavièka obsahujúca "
+"meno\n"
+"súboru. Ak SÚBOR nebude zadaný alebo bude -, bude èítaný ¹tandardný vstup.\n"
+"\n"
+" -c, --bytes=VE¥KOS« vypí¹e prvých VE¥KOS« bytov\n"
+" -n, --lines=POÈET vypí¹e prvých POÈET riadkov namiesto prvých 10\n"
+" -q, --quiet, --silent nikdy nevypisuje hlavièky s názvami súborov\n"
+" -v, --verbose vypisuje hlavièky s názvami súborov v¾dy\n"
+" --help vypí¹e túto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+"\n"
+" VE¥KOS« mô¾e ma» násobiacu príponu: b pre 512, k pre 1K, m pre 1M. Pokiaµ\n"
+"prvý prepínaè bude -HODNOTA a ak bude pou¾itá násobiaca prípona, potom bude "
+"braný\n"
+"ako -c HODNOTA. Inak bude prepínaè braný ako -n HODNOTA.\n"
+
+#: src/tail.c:229
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+
+#: src/tail.c:244
+#, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "uzatváranie %s (fd=%d)"
+
+#: src/tail.c:411
+#, fuzzy, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "nie je mo¾né vytvori» adresár %s"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr ""
+
+#: src/tail.c:867
+#, fuzzy, c-format
+msgid "%s has become inaccessible"
+msgstr "`%s' sa stal nedostupným"
+
+#: src/tail.c:884
+#, fuzzy, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr "súbor `%s' bol nahradený iným, neumo¾òujúcim sledovanie jeho konca."
+
+#: src/tail.c:905
+#, fuzzy, c-format
+msgid "%s has become accessible"
+msgstr "`%s' sa stal dostupným"
+
+#: src/tail.c:913
+#, fuzzy, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "súbor %s sa objavil. Sledovanie konca súboru pokraèuje."
+
+#: src/tail.c:924
+#, fuzzy, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr ""
+"súbor %s bol nahradený iným. Sledovanie konca súboru\n"
+"pokraèuje."
+
+#: src/tail.c:1025
+#, fuzzy, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: nie je mo¾né opusti» neblokovací re¾im"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: súbor bol skrátený"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "u¾ nezostávajú ¾iadne súbory"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr "%s: nie je mo¾né sledova» koniec tohoto typu súboru"
+
+#: src/tail.c:1439
+#, fuzzy, c-format
+msgid "number in %s is too large"
+msgstr "%s je príli¹ veµa"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr ""
+"%s: neplatné èíslo maximálneho poètu nezmenených výsledkov funkcie stat\n"
+"medzi otvoreniami"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: chybné PID"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: neplatný poèet sekúnd"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, fuzzy, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "varovanie: --retry je u¾itoèné iba pri sledovaní podµa názvu"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+"varovanie: PID bolo ignorované; --pid=PID je u¾itoèné iba pri nasledovaní"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "varovanie: --pid=PID nie je na tomto systéme podporované"
+
+#: src/tail.c:1667
+#, fuzzy, c-format
+msgid "cannot follow %s by name"
+msgstr "nie je mo¾né vytvori» doèasný súbor"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+
+#: src/tee.c:63
+#, fuzzy
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Kopírova» ¹tandardný vstup do ka¾dého SÚBORU a tie¾ na ¹tandardný výstup.\n"
+"\n"
+" -a, --append prida» na koniec SÚBORU, neprepisova»\n"
+" -i, --ignore-interrupts ignorova» signály preru¹enia\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+
+#: src/test.c:125
+#, fuzzy, c-format
+msgid "missing argument after %s"
+msgstr "nejednoznaèný argument %s pre `%s'"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "neplatné èíslo"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "oèakávaný znak ')'\n"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "oèakávaný znak ')', nájdený %s\n"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: oèakávaný unárny operátor\n"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "-nt neakceptuje -l\n"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "-ef neakceptuje -l\n"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "-nt neakceptuje -l\n"
+
+#: src/test.c:368
+#, fuzzy
+msgid "unknown binary operator"
+msgstr "Neznáma systémová chyba"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: oèakávaný binárny operátor\n"
+
+#: src/test.c:694
+#, fuzzy
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Pou¾itie: %s [SÚBOR]...\n"
+" alebo: %s [VO¥BA]\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+
+#: src/test.c:707
+#, fuzzy
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+"\n"
+" --help vypí¹e túto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+
+#: src/test.c:727
+#, fuzzy
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" ( VÝRAZ ) VÝRAZ je pravdivý\n"
+" ! VÝRAZ VÝRAZ je nepravdivý\n"
+" VÝRAZ1 -a VÝRAZ2 VÝRAZ1 aj VÝRAZ2 sú pravdivé\n"
+" VÝRAZ1 -o VÝRAZ2 VÝRAZ1 alebo VÝRAZ2 je pravdivý\n"
+"\n"
+" [-n] RE«AZEC då¾ka RE«AZCA je nenulová\n"
+" -z RE«AZEC då¾ka RE«AZCA je nulová\n"
+" RE«AZEC1 = RE«AZEC2 re»azce sa rovnajú\n"
+" RE«AZEC1 != RE«AZEC2 re»azce sa nerovnajú\n"
+"\n"
+" CELÉÈÍSLO1 -eq CELÉÈÍSLO2 CELÉÈÍSLO1 sa rovná CELÉÈÍSLO2\n"
+" CELÉÈÍSLO1 -ge CELÉÈÍSLO2 CELÉÈÍSLO1 je väè¹ie alebo rové CELÉÈÍSLO2\n"
+" CELÉÈÍSLO1 -gt CELÉÈÍSLO2 CELÉÈÍSLO1 je väè¹ie ako CELÉÈÍSLO2\n"
+" CELÉÈÍSLO1 -le CELÉÈÍSLO2 CELÉÈÍSLO1 je men¹ie alebo rovné CELÉÈÍSLO2\n"
+" CELÉÈÍSLO1 -lt CELÉÈÍSLO2 CELÉÈÍSLO1 je men¹ie ako CELÉÈÍSLO2\n"
+" CELÉÈÍSLO1 -ne CELÉÈÍSLO2 CELÉÈÍSLO1 sa nerovná CELÉÈÍSLO2\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+
+#: src/test.c:770
+#, fuzzy
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"Pozor na to, ¾e zátvorky musia by» v shelli chránené (napr. spätnými\n"
+"lomítkami. CELÉÈÍSLO mô¾e by» tie¾ -l RE«AZEC, èo sa vyhodnotí na\n"
+"då¾ku RE«AZCA.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "chýbajúca `]'\n"
+
+#: src/test.c:846
+#, fuzzy, c-format
+msgid "extra argument %s"
+msgstr "príli¹ veµa argumentov"
+
+#: src/touch.c:112 src/touch.c:318
+#, fuzzy, c-format
+msgid "invalid date format %s"
+msgstr "chybný argument %s pre `%s'"
+
+#: src/touch.c:154
+#, fuzzy, c-format
+msgid "creating %s"
+msgstr "vytváram súbor `%s'\n"
+
+#: src/touch.c:211
+#, fuzzy, c-format
+msgid "cannot touch %s"
+msgstr "ioctl na `%s' nie je mo¾né vykona»"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "nastavujem èasy %s"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+
+#: src/touch.c:344
+#, fuzzy, c-format
+msgid "cannot specify times from more than one source"
+msgstr "súbor sa nedá rozdeli» viacerými spôsobmi"
+
+#: src/touch.c:389
+#, fuzzy, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr "varovanie: chybná ¹írka %lu; namiesto nej pou¾ijem %d"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ]... MNO®INA1 [MNO®INA2]\n"
+
+#: src/tr.c:294
+#, fuzzy
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+" Nahradzuje, komprimuje a/alebo ma¾e znaky zo ¹tandardného vstupu, "
+"výsledok\n"
+"je zapisovaný na ¹tandardný výstup.\n"
+"\n"
+" -c, --complement najprv vytvorí doplnok MNO®INY1\n"
+" -d, --delete iba ma¾e znaky z MNO®INY1\n"
+" -s, --squeeze-repeats nahradí postupnosti jedného znaku iba jedným\n"
+" -t, --truncate-set1 najprv skráti MNO®INU1 na då¾ku MNO®INY2\n"
+" --help vypí¹e túto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+
+#: src/tr.c:342
+#, fuzzy
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+" Nahradenie nastane, ak nie je zadaný prepínaè -d a sú zadané obe\n"
+"mno¾iny. -t mô¾e by» pou¾ité iba pri nahradzovaní. V prípade potreby je\n"
+"MNO®INA2 roz¹írená na då¾ku MNO®INY1 opakovaním posledného znaku. "
+"Prebytoèné\n"
+"znaky MNO®INY2 sú ignorované. Iba pri [:lower:] a [:upper:] je garantované,\n"
+"¾e budú rozpísané vzostupne; pri pou¾ití v MNO®INE2 pri nahradzovaní mô¾u "
+"by»\n"
+"pou¾ívané iba v pároch pre zmenu veµkosti písmen. -s pou¾íva MNO®INU2\n"
+"pri nahradzovaní alebo mazaní a kompresia je vykonaná a¾ po tomto. Inak -s\n"
+"pou¾íva MNO®INU1.\n"
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+
+#: src/tr.c:354
+#, fuzzy
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"\n"
+" Nahradenie nastane, ak nie je zadaný prepínaè -d a sú zadané obe\n"
+"mno¾iny. -t mô¾e by» pou¾ité iba pri nahradzovaní. V prípade potreby je\n"
+"MNO®INA2 roz¹írená na då¾ku MNO®INY1 opakovaním posledného znaku. "
+"Prebytoèné\n"
+"znaky MNO®INY2 sú ignorované. Iba pri [:lower:] a [:upper:] je garantované,\n"
+"¾e budú rozpísané vzostupne; pri pou¾ití v MNO®INE2 pri nahradzovaní mô¾u "
+"by»\n"
+"pou¾ívané iba v pároch pre zmenu veµkosti písmen. -s pou¾íva MNO®INU2\n"
+"pri nahradzovaní alebo mazaní a kompresia je vykonaná a¾ po tomto. Inak -s\n"
+"pou¾íva MNO®INU1.\n"
+
+#: src/tr.c:519
+#, fuzzy, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"varovanie: nejednoznaèný osmièkový zápis \\%c%c%c bude\n"
+"\tinterpretovaný ako 2-bytová sekvencia \\0%c%c, `%c'"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "konce rozsahu `%s-%s' sú v obrátenom poradí"
+
+#: src/tr.c:838
+#, fuzzy, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "chybný poèet opakovania `%s' v kon¹trukcii [c*n]"
+
+#: src/tr.c:919
+#, fuzzy, c-format
+msgid "missing character class name `[::]'"
+msgstr "chybná trieda znaku `%s'"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr ""
+
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "chybná trieda znaku `%s'"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: operand v triede [=c=] musí by» jediný znak"
+
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr "neoèakávaný znak v ¹pecifikácii polo¾ky"
+
+# should it be string1 or SET1?
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "zadanie opakovania [c*] nemô¾e by» v MNO®INE1"
+
+# string2 or SET2?
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "opakovanie znaku [c*] mô¾e by» v MNO®INE2 iba raz"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "výraz [=c=] nemô¾e by» v MNO®INE2 pri nahradzovaní"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "pokiaµ MNO®INA1 nie je skracovaná, potom MNO®INA2 nesmie by» prázdna"
+
+# ? - rzm
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"pri nahradzovaní s doplnkom mno¾iny znakov, MNO®INA2 musí mapov»t v¹etky\n"
+"znaky z tejto oblasti do jedného"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"pri nahradzovaní mô¾u by» v MNO®INE2 iba triedy znakov [:upper:]\n"
+"a [:lower:]"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "výraz [c*] mô¾e by» v MNO®INE2 iba pri nahradzovaní"
+
+#: src/tr.c:1731
+#, fuzzy
+msgid "Two strings must be given when translating."
+msgstr "obidve mno¾iny musia by» zadané pri nahradzovaní"
+
+#: src/tr.c:1741
+#, fuzzy
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"iba jedna mno¾ina mô¾e by» zadaná pri mazaní bez komprimovania\n"
+"opakujúcich sa znakov"
+
+# ? - rzm
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "nezarovnané(á) kon¹trukcie(a) [:upper:] a/alebo [:lower:]"
+
+#: src/true.c:42
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾itie: %s [SÚBOR]...\n"
+" alebo: %s [VO¥BA]\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Pou¾itie: %s [PREPÍNAÈ] [SÚBOR]\n"
+" Výstupom je totálne zotriedený zoznam v¹etkých polo¾iek zo v¹etkých\n"
+"vstupných riadkov, na ktorých sú polo¾ky zotriedené, vstupného SÚBORu.\n"
+"Jednotlivé polo¾ky sú na riadku oddelené medzerou.\n"
+" Pokiaµ nie je SÚBOR zadaný, bude èítaný ¹tandardný vstup.\n"
+"\n"
+" --help vypí¹e túto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#: src/tsort.c:474
+#, fuzzy, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: vstup obsahuje cyklus:"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: vstup obsahuje cyklus:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ] [SÚBOR]...\n"
+
+#: src/tty.c:70
+#, fuzzy
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Vypísa» názov súboru terminálu spojeného so ¹tandardným vstupom.\n"
+"\n"
+" -s, --silent, --quiet nevypisova» niè, iba vráti» výstupný stav\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "nie je terminál"
+
+#: src/uname.c:118
+#, fuzzy
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Vypísa» niektoré systémové informácie. ®iadna VO¥BA zodpovedá -s.\n"
+"\n"
+" -a, --all vypísa» v¹etky informácie\n"
+" -m, --machine vypísa» typ (hardware) poèítaèa\n"
+" -n, --nodename vypísa» názov poèítaèa v sieti\n"
+" -r, --release vypísa» verziu jadra operaèného systému\n"
+" -s, --sysname vypísa» názov operaèného systému\n"
+" -p, --processor vypísa» typ procesora\n"
+" -v vypísa» verziu zostavenia operaèného systému\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+
+#: src/uname.c:236
+#, fuzzy, c-format
+msgid "cannot get system name"
+msgstr "nie je mo¾né vytvori» doèasný súbor"
+
+#: src/unexpand.c:125
+#, fuzzy
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+" V ka¾dom SÚBORe konvertuje medzery na tabulátory a výsledok vypisuje\n"
+"na ¹tandardný výstup. Ak nebude SÚBOR zadaný alebo bude -, bude èítaný\n"
+"¹tandardný vstup.\n"
+"\n"
+" -a, --all konvertuje v¹etky medzery, namiesto iba úvodných\n"
+" -t, --tabs=POÈET nastaví tabulátor na POÈET medzier (8)\n"
+" -t, --tabs=ZOZNAM pou¾ije èiarkami oddelený zoznam pre pozície "
+"tabulátorov\n"
+" --help vypí¹e tuto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+"\n"
+"Namiesto -t POÈET alebo -t ZOZNAM je mo¾né pou¾i» -POÈET alebo -ZOZNAM.\n"
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "%s je príli¹ veµa"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ]... [VSTUP [VÝSTUP]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+
+#: src/uniq.c:350
+#, fuzzy, c-format
+msgid "too many repeated lines"
+msgstr "príli¹ veµa argumentov"
+
+#: src/uniq.c:512
+#, fuzzy
+msgid "invalid number of fields to skip"
+msgstr "chybný poèet polo¾iek na preskoèenie: `%s'"
+
+# bytes to skip? we were talking about chars? - rzm
+#: src/uniq.c:521
+#, fuzzy
+msgid "invalid number of bytes to skip"
+msgstr "chybný poèet znakov na preskoèenie: `%s'"
+
+#: src/uniq.c:530
+#, fuzzy
+msgid "invalid number of bytes to compare"
+msgstr "chybný poèet znakov pre porovnanie: `%s'"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+"výpis v¹etkých opakujúcich sa riadkov a poèítadla opakovania nemá zmysel"
+
+#: src/unlink.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾itie: %s [SÚBOR]...\n"
+" alebo: %s [VO¥BA]\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+
+#: src/unlink.c:91
+#, fuzzy, c-format
+msgid "cannot unlink %s"
+msgstr "ioctl na `%s' nie je mo¾né vykona»"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "nie je mo¾né zisti» èas zavedenia systému"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s be¾í "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr " "
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr " "
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr ""
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr ""
+
+#: src/uptime.c:143
+#, fuzzy, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "deò"
+msgstr[1] "deò"
+
+#: src/uptime.c:147
+#, fuzzy, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "neplatný pou¾ívateµ"
+msgstr[1] "neplatný pou¾ívateµ"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", priemerná zá»a¾: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ]... [SÚBOR]...\n"
+
+#: src/uptime.c:198
+#, fuzzy, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Vypísa» aktuálny èas, èas od spustenia systému, poèet pou¾ívateµov\n"
+"v systéme a priemerný poèet úloh vo fronte za poslednú minútu,\n"
+"5 minút a 15 minút.\n"
+"Pokiaµ nie je zadaný SÚBOR, pou¾i» %s. %s ako SÚBOR je obvyklý.\n"
+"\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+
+#: src/users.c:109
+#, fuzzy, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Vypísa», kto je momentálne prihlásený podµa SÚBORU.\n"
+"Pokiaµ nie je zadaný SÚBOR, pou¾i» %s. %s ako SÚBOR je obvyklý.\n"
+"\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+
+#: src/wc.c:113
+#, fuzzy
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+" Ku ka¾dému SÚBORu vypí¹e poèet riadkov, slov a bytov. Ak bude zadaný viac\n"
+"ako jeden SÚBOR, vypí¹e aj celkové údaje. Pokiaµ SÚBOR nebude zadaný alebo\n"
+"bude -, bude èítaný ¹tandardný vstup.\n"
+"\n"
+" -c, --bytes vypí¹e poèet bytov\n"
+" -m, --chars vypí¹e poèet znakov\n"
+" -l, --lines vypí¹e poèet riadkov\n"
+" -L, --max-line-length vypí¹e då¾ku najdlh¹ieho riadku\n"
+" -w, --words vypí¹e poèet slov\n"
+" --help vypí¹e túto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#: src/wc.c:121
+#, fuzzy
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+"Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+"\n"
+" --help vypí¹e túto nápovedu a skonèí\n"
+" --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr " dávno "
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr ""
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr ""
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr ""
+
+#: src/who.c:497
+msgid "clock change"
+msgstr ""
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr ""
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr ""
+
+#: src/who.c:545
+#, fuzzy, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"# pou¾ívateµov=%u\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr ""
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "TERM"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr ""
+
+#: src/who.c:551
+#, fuzzy
+msgid "IDLE"
+msgstr "CHYBNÝ"
+
+#: src/who.c:552
+msgid "PID"
+msgstr ""
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr ""
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr ""
+
+#: src/who.c:633
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Pou¾itie: %s [PREPÍNAÈ]... SÚBOR1 SÚBOR2\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr ""
+
+#: src/whoami.c:51
+#, fuzzy
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Vypísa» meno pou¾ívateµa spojené s aktuálnym efektívnym id pou¾ívateµa.\n"
+"Rovnaké ako id -un.\n"
+"\n"
+" --help vypísa» túto pomoc a skonèi»\n"
+" --version vypísa» informáciu o verzii a skonèi»\n"
+
+#: src/whoami.c:95
+#, fuzzy, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "nie je mo¾né zisti» meno pre ID pou¾ívateµa %u\n"
+
+#: src/yes.c:46
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Pou¾itie: %s [SÚBOR]...\n"
+" alebo: %s [VO¥BA]\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+
+#, fuzzy
+#~ msgid "strip failed"
+#~ msgstr "zlyhal stat"
+
+#, fuzzy
+#~ msgid "program error"
+#~ msgstr "chyba pri èítaní"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "nie je mo¾né zmeni» pou¾ívateµa a/alebo skupinu %s"
+
+#, fuzzy
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "nie je mo¾né vojs» do adresára, %s"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "nie je mo¾né urèi» skupinu èíselného UID"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Toto je voµne ¹íriteµný softvér - pre podmienky ¹írenia pozri zdrojový\n"
+#~ "kód. Neexistuje ®IADNA ZÁRUKA, ani OBCHODOVATE¥NOSTI alebo VHODNOSTI\n"
+#~ "PRE KONKRÉTNY ÚÈEL.\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "príli¹ málo argumentov"
+
+#, fuzzy
+#~ msgid "closing standard output"
+#~ msgstr "¹tandardný výstup"
+
+#, fuzzy
+#~ msgid "cannot change to null group"
+#~ msgstr "nie je mo¾né zmeni» pou¾ívateµa a/alebo skupinu %s"
+
+#~ msgid "group number"
+#~ msgstr "èíslo skupiny"
+
+#, fuzzy
+#~ msgid "invalid group number %s"
+#~ msgstr "neplatné èíslo"
+
+#, fuzzy
+#~ msgid "invalid mode string: %s"
+#~ msgstr "chybný typ re»azca `%s'"
+
+#, fuzzy
+#~ msgid "unable to restore permissions of %s"
+#~ msgstr "nie je mo¾né zmeni» práva %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "Pou¾itie: %s [VO¥BA]... KONIEC\n"
+#~ " alebo: %s [VO¥BA]... ZAÈIATOK KONIEC\n"
+#~ " alebo: %s [VO¥BA]... ZAÈIATOK KROK LAST\n"
+
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "Pou¾itie: %s [PREPÍNAÈ]... ¥AVÝ_SÚBOR PRAVÝ_SÚBOR\n"
+
+#, fuzzy
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "nie je mo¾né vytvori» adresár %s"
+
+#, fuzzy
+#~ msgid "missing file arguments"
+#~ msgstr "príli¹ málo argumentov"
+
+#, fuzzy
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "%s existuje, ale nie je adresárom"
+
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr ""
+#~ "je po¾adované kopírovanie viacerých súborov, ale posledný argument %s nie "
+#~ "je adresár"
+
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "varovanie: voµba --version-control (-V) je zastaralá a jej\n"
+#~ "podpora bude v niektorej budúcej verzii odstránená. Namiesto\n"
+#~ "nej pou¾ite --backup=%s."
+
+#, fuzzy
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "varovanie: --pid=PID nie je na tomto systéme podporované"
+
+#~ msgid "%s: `+' or `-' expected after delimeter"
+#~ msgstr "%s: po oddeµovaèi je oèakávané `+' alebo `-'"
+
+#, fuzzy
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "príli¹ mnoho argumentov, ktoré nie sú prepínaèmi"
+
+#, fuzzy
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-822 (-R) option"
+#~ msgstr "pri pou¾ití prepínaèa --string nemô¾u by» zadané súbory"
+
+#~ msgid "undefined"
+#~ msgstr "nedefinovaný"
+
+#, fuzzy
+#~ msgid "cannot get time of day"
+#~ msgstr "súbor sa nedá rozdeli» viacerými spôsobmi"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "%s+%s záznamov dnu\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "%s+%s záznamov von\n"
+
+#~ msgid "truncated records"
+#~ msgstr "skrátených záznamov"
+
+#~ msgid ""
+#~ "only one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, "
+#~ "{unblock,sync}"
+#~ msgstr ""
+#~ "prípustná je iba jedna z konverzií {ascii,ebcdic,ibm}, {lcase,ucase},\n"
+#~ "{block,unblock}, {unblock,sync}"
+
+#~ msgid " Type"
+#~ msgstr " Typ"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr ""
+#~ "pokiaµ je po¾adovaný výpis vnútornej databázy 'dircolors', nie\n"
+#~ "je mo¾né pou¾i» argumenty pre súbor"
+
+#, fuzzy
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "varovanie: chybná ¹írka %lu; namiesto nej pou¾ijem %d"
+
+#~ msgid ""
+#~ "warning: unportable BRE: `%s': using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr ""
+#~ "varovanie: neprenositeµný BRE (základný regulérny výraz): `%s': pou¾itie\n"
+#~ "znaku `^' na zaèiatku nie je prenositeµné a je ignorovaný"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Pou¾itie: %s [ignorované argumenty]\n"
+#~ " alebo: %s VO¥BA\n"
+#~ "Skonèi» s výstupným kódom indikujúcim chybu.\n"
+#~ "\n"
+#~ " --help vypísa» túto pomoc a skonèi»\n"
+#~ " --version vypísa» informáciu o verzii a skonèi»\n"
+
+#, fuzzy
+#~ msgid "invalid width option: `%s'"
+#~ msgstr "chybný typ re»azca `%s'"
+
+#, fuzzy
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "varovanie: chybná ¹írka %lu; namiesto nej pou¾ijem %d"
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "neznámy prepínaè `-%c'"
+
+#, fuzzy
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "varovanie: chybná ¹írka %lu; namiesto nej pou¾ijem %d"
+
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr ""
+#~ "je po¾adovaná in¹talácia viacerých súborov, ale posledný argument %s nie "
+#~ "je adresár"
+
+#, fuzzy
+#~ msgid "%s is a directory"
+#~ msgstr "%s existuje, ale nie je adresárom"
+
+#, fuzzy
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "nie je mo¾né vytvori» adresár %s"
+
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "chybné èíslo polo¾ky pre súbor 1: `%s'"
+
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "chybné èíslo polo¾ky pre súbor 2: `%s'"
+
+#~ msgid "too many non-option arguments"
+#~ msgstr "príli¹ mnoho argumentov, ktoré nie sú prepínaèmi"
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "príli¹ málo argumentov, ktoré nie sú prepínaèmi"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: Súbor existuje"
+
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "vytvori» symbolický odkaz %s na %s"
+
+#~ msgid "create hard link %s to %s"
+#~ msgstr "vytvori» pevný odkaz %s na %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "Pou¾itie: %s [VO¥BA]... KONIEC\n"
+#~ " alebo: %s [VO¥BA]... ZAÈIATOK KONIEC\n"
+#~ " alebo: %s [VO¥BA]... ZAÈIATOK KROK LAST\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr ""
+#~ "pri vytváraní viacerých odkazov musí by» posledným argumentom adresár"
+
+# in Genitive - rzm
+#~ msgid "file"
+#~ msgstr "zadaného súboru"
+
+# in Genitive - rzm
+#~ msgid "files"
+#~ msgstr "zadaných súborov"
+
+#~ msgid "checksum"
+#~ msgstr "kontrolného súètu"
+
+#~ msgid "checksums"
+#~ msgstr "kontrolných súètov"
+
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "prepínaèe --string a --check sa vzájomne vyluèujú"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "pri pou¾ití prepínaèa --string nemô¾u by» zadané súbory"
+
+#~ msgid "only one argument may be specified when using --check"
+#~ msgstr "iba jeden argument mô¾e by» zadaný pri pou¾ití prepínaèa --check"
+
+#, fuzzy
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "nie je mo¾né zmeni» práva %s"
+
+#, fuzzy
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "nie je mo¾né zmeni» práva %s"
+
+#, fuzzy
+#~ msgid "wrong number of arguments"
+#~ msgstr "príli¹ málo argumentov"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr ""
+#~ "pre rúry nie je potrebné zadáva» hlavné a vedµaj¹ie èíslo zariadenia"
+
+#, fuzzy
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "nie je mo¾né zmeni» práva %s"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr ""
+#~ "pri premiestòovaní viacerých súborov musí by» posledným argumentom adresár"
+
+#, fuzzy
+#~ msgid ""
+#~ "Run COMMAND with an adjusted scheduling priority.\n"
+#~ "With no COMMAND, print the current scheduling priority. ADJUST is 10\n"
+#~ "by default. Range goes from -20 (highest priority) to 19 (lowest).\n"
+#~ "\n"
+#~ " -n, --adjustment=ADJUST increment priority by ADJUST first\n"
+#~ msgstr ""
+#~ "Spusti» PRÍKAZ s upravenou plánovacou prioritou.\n"
+#~ "Bez PRÍKAZU vypí¹e aktuálnu prioritu. ÚPRAVA je implicitne 10.\n"
+#~ "Rozsah je od -20 (najvy¹¹ia priorita) po 19 (najni¾¹ia).\n"
+#~ "\n"
+#~ " -ÚPRAVA najprv pripoèíta» k priorite ÚPRAVU\n"
+#~ " -n, --adjustment=ÚPRAVA ako -ADJUST\n"
+#~ " --help vypísa» túto pomoc a skonèi»\n"
+#~ " --version vypísa» informáciu o verzii a skonèi»\n"
+
+#, fuzzy
+#~ msgid "invalid option `%s'"
+#~ msgstr "chybný typ re»azca `%s'"
+
+#, fuzzy
+#~ msgid "invalid priority `%s'"
+#~ msgstr "chybné èíslo polo¾ky: `%s'"
+
+#, fuzzy
+#~ msgid "cannot get priority"
+#~ msgstr "nie je mo¾né vytvori» adresár %s"
+
+#, fuzzy
+#~ msgid "cannot set priority"
+#~ msgstr "nie je mo¾né vytvori» adresár %s"
+
+#~ msgid "old-style offset"
+#~ msgstr "posunutie v starom ¹týle"
+
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "chybný druhý argument '%s' v starom formáte"
+
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr "v kompatibilnom móde musia by» posledné dva argumenty posuny"
+
+#, fuzzy
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr ""
+#~ "Diagnostikova» neprenositeµné prvky v NÁZVE.\n"
+#~ "\n"
+#~ " -p, --portability skontrolova» pre v¹etky POSIX systémy, nielen "
+#~ "tento\n"
+#~ " --help vypísa» túto pomoc a skonèi»\n"
+#~ " --version vypísa» informáciu o verzii a skonèi»\n"
+
+#, fuzzy
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "veµkos» tabulátoru obsahuje neplatný znak"
+
+#, fuzzy
+#~ msgid "`%s' is not a directory"
+#~ msgstr "%s existuje, ale nie je adresárom"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "adresár `%s' nie je mo¾né prehµadáva»"
+
+#, fuzzy
+#~ msgid "name `%s' has length %ld; exceeds limit of %ld"
+#~ msgstr "názov `%s' má då¾ku %d; presahuje limit %d"
+
+#, fuzzy
+#~ msgid "path `%s' has length %d; exceeds limit of %ld"
+#~ msgstr "cesta `%s' má då¾ku %d; presahuje limit %d"
+
+# c-format
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "`--pages' - chybný rozsah èísiel stránok: `%s'"
+
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "`--pages' - chybné èíslo poèiatoènej stránky: `%s'"
+
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "`--pages' - chybné èíslo koncovej stránky: `%s'"
+
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr ""
+#~ "`--pages' - èíslo poèiatoènej stránky je väè¹ie ako èíslo koncovej stránky"
+
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "`--columns=STÅPCOV' neplatný poèet ståpcov: `%s'"
+
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%b %e %H:%M %Y"
+
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr "èíslo poèiatoènej stránky je väè¹ie ako poèet stránok: `%d'"
+
+#~ msgid "Page %d"
+#~ msgstr "Stránka %d"
+
+#, fuzzy
+#~ msgid "\\%c: invalid escape"
+#~ msgstr "%s: chybný vzor"
+
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "Pou¾itie: %s formát [argument...]\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+#~ msgstr ""
+#~ " Tento program je voµné programové vybavenie; mô¾ete ho ¹íri» a "
+#~ "modifikova»\n"
+#~ "podµa podmienok V¹eobecnej verejnej licencie GNU, vydávanej Free "
+#~ "Software\n"
+#~ "Foundation; a to buï verzie 2 tejto licencie alebo (podµa vá¹ho "
+#~ "uvá¾enia),\n"
+#~ "ktorejkoµvek neskor¹ej verzie.\n"
+#~ "\n"
+#~ " Tento program je roz¹irovaný v nádeji, ¾e bude u¾itoèný, av¹ak BEZ "
+#~ "AKEJKO¥VEK\n"
+#~ "ZÁRUKY; neposkytujú sa ani odvodené záruky PREDAJNOSTI alebo VHODNOSTI "
+#~ "PRE\n"
+#~ "NEJAKÝ KONKRÉTNY ÚÈEL. Ïaµ¹ie podrobnosti nájdete vo V¹eobecnej verejnej\n"
+#~ "licencii GNU.\n"
+#~ "\n"
+#~ " Kópia V¹eobecnej verejnej licencie GNU mala by» dodaná spolu s týmto\n"
+#~ "programom; pokiaµ sa tak nestalo, napí¹te do Free Software Foundation, "
+#~ "Inc.,\n"
+#~ "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "nie je mo¾né vojs» do adresára, %s"
+
+#, fuzzy
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "nie je mo¾né spusti» %s"
+
+#, fuzzy
+#~ msgid "cannot lstat %s"
+#~ msgstr "nie je mo¾né nastavi» dátum"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "nie je mo¾né vojs» do adresára, %s"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "nie je mo¾né zmaza» `.' alebo `..'"
+
+#, fuzzy
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ " -r, -R, --recursive remove the contents of directories recursively\n"
+#~ " -v, --verbose explain what is being done\n"
+#~ msgstr ""
+#~ "Zmaza» SÚBOR(y).\n"
+#~ "\n"
+#~ " -d, --directory zmaza» adresár, aj pokiaµ nie je prázdny (iba\n"
+#~ " superu¾ívateµ)\n"
+#~ " -f, --force ignorova» neexistujúce soubory, nikdy sa nepýta»\n"
+#~ " -i, --interactive pred ka¾dým zmazaním sa opýta»\n"
+#~ " -r, -R, --recursive rekurzívne zmaza» obsah adresárov\n"
+#~ " -v, --verbose vypisova» infomácie o priebehu\n"
+#~ " --help vypísa» túto pomoc a skonèi»\n"
+#~ " --version vypísa» informáciu o verzii a skonèi»\n"
+#~ "\n"
+#~ "Súbor s menom zaèínajúcim `-' (napr. `-foo') zma¾ete nasledovne:\n"
+#~ " %s -- -foo\n"
+#~ " %s ./-foo\n"
+#~ "\n"
+#~ "Pamätajte na to, ¾e pri zmazaní súboru pomocou rm je obvykle mo¾né obsah\n"
+#~ "daného súboru obnovi». Pokiaµ sa chete lep¹ie uisti», ¾e obsah nebude\n"
+#~ "mo¾né obnovi», uvá¾te pou¾itie pomôcky shred.\n"
+
+#~ msgid ""
+#~ "when the starting value is larger than the limit,\n"
+#~ "the increment must be negative"
+#~ msgstr ""
+#~ "pokiaµ je poèiatoèná hodnota väè¹ia ako koneèná,\n"
+#~ "krok musí by» záporný"
+
+#~ msgid ""
+#~ "when the starting value is smaller than the limit,\n"
+#~ "the increment must be positive"
+#~ msgstr ""
+#~ "pokiaµ je poèiatoèná hodnota men¹ia ako koneèná,\n"
+#~ "krok musí by» kladný"
+
+#, fuzzy
+#~ msgid "`-%d' option is obsolete; use `-l %d'"
+#~ msgstr "varovanie: chybná ¹írka %lu; namiesto nej pou¾ijem %d"
+
+#~ msgid "stdin: read error"
+#~ msgstr "stdin: chyba pri èítaní"
+
+# src/tail.c:938
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "%c: neplatný znak v zastaralom prepínaèi"
+
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "príli¹ mnoho argumentov; Pri pou¾ití zastaralej syntaxe prepínaèa %s,\n"
+#~ "mô¾e by» uvedený iba jeden súborový argument. Rad¹ej pou¾ite\n"
+#~ "ekvivalentný prepínaè -n alebo -c."
+
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "Varovanie: pou¾itie dvoch alebo viacerých súborových argumentov so "
+#~ "zastaralou\n"
+#~ "syntaxou prepínaèa %s nie je prenosné. Rad¹eji pou¾ite ekvivalentný "
+#~ "prepínaè\n"
+#~ "-n alebo -c."
+
+#, fuzzy
+#~ msgid "`%s' option is obsolete; use `%s-%c %.*s'"
+#~ msgstr "varovanie: chybná ¹írka %lu; namiesto nej pou¾ijem %d"
+
+# src/tail.c:968
+#~ msgid "%s: is so large that it is not representable"
+#~ msgstr "%s: je tak veµký, ¾e nie je reprezentovateµný"
+
+#~ msgid "%s is larger than the maximum file size on this system"
+#~ msgstr "%s je viac ako maximálna veµkos» súboru na tomto systéme"
+
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr "%s: neplatné èíslo maximálneho poètu po sebe idúcich zmien veµkosti"
+
+#~ msgid "argument expected\n"
+#~ msgstr "oèakávaný argument\n"
+
+#~ msgid "integer expression expected %s\n"
+#~ msgstr "oèakávaný celoèíselný výraz %s\n"
+
+#~ msgid "before -lt"
+#~ msgstr "pred -lt"
+
+#~ msgid "after -lt"
+#~ msgstr "po -lt"
+
+#~ msgid "before -le"
+#~ msgstr "pred -le"
+
+#~ msgid "after -le"
+#~ msgstr "po -le"
+
+#~ msgid "before -gt"
+#~ msgstr "pred -gt"
+
+#~ msgid "after -gt"
+#~ msgstr "po -gt"
+
+#~ msgid "before -ge"
+#~ msgstr "pred -ge"
+
+#~ msgid "after -ge"
+#~ msgstr "po -ge"
+
+#~ msgid "before -ne"
+#~ msgstr "pred -ne"
+
+#~ msgid "after -ne"
+#~ msgstr "po -ne"
+
+#~ msgid "before -eq"
+#~ msgstr "pred -eq"
+
+#~ msgid "after -eq"
+#~ msgstr "po -eq"
+
+#~ msgid "after -t"
+#~ msgstr "po -t"
+
+#, fuzzy
+#~ msgid "too many arguments\n"
+#~ msgstr "príli¹ veµa argumentov"
+
+#, fuzzy
+#~ msgid "file arguments missing"
+#~ msgstr "príli¹ málo argumentov"
+
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "chybný zápis `\\%c'"
+
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr ""
+#~ "dve mno¾iny musia by» zadané pri mazaní a komprimovaní opakujúcich sa "
+#~ "znakov"
+
+#~ msgid "at least one string must be given when squeezing repeats"
+#~ msgstr ""
+#~ "najmenej jedna mno¾ina musí by» zadaná pri komprimovaní opakujúcich sa "
+#~ "znakov"
+
+#~ msgid ""
+#~ "invalid identity mapping; when translating, any [:lower:] or [:upper:]\n"
+#~ "construct in string1 must be aligned with a corresponding construct\n"
+#~ "([:upper:] or [:lower:], respectively) in string2"
+#~ msgstr ""
+#~ "nie je mo¾né identifikova» mapovanie: pri nahradzovaní, µubovoµná "
+#~ "kon¹trukcia\n"
+#~ "[:lower:] alebo [:upper:] v MNO®INE1 musí by» zarovnaná so "
+#~ "zodpovedajúcou\n"
+#~ "kon¹trukciou ([:upper:] alebo [:lower:]) v MNO®INE2."
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Pou¾itie: %s [ignorované argumenty]...\n"
+#~ " alebo: %s VO¥BA\n"
+#~ "Skonèi» s výstupným kódom indikujúcim úspech.\n"
+#~ "\n"
+#~ " --help vypísa» túto pomoc a skonèi»\n"
+#~ " --version vypísa» informáciu o verzii a skonèi»\n"
+
+#~ msgid "only one argument may be specified"
+#~ msgstr "mô¾e by» zadaný iba jeden argument"
+
+#, fuzzy
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr "varovanie: chybná ¹írka %lu; namiesto nej pou¾ijem %d"
+
+#, fuzzy
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "varovanie: chybná ¹írka %lu; namiesto nej pou¾ijem %d"
+
+#~ msgid "%s: cannot find username for UID %u\n"
+#~ msgstr "%s: nie je mo¾né zisti» meno pou¾ívateµa pre UID %u\n"
+
+#, fuzzy
+#~ msgid "Try %s --help' for more information.\n"
+#~ msgstr "Viac informácií získate príkazom `%s --help'.\n"
+
+#, fuzzy
+#~ msgid "cannot lstat `.'"
+#~ msgstr "nie je mo¾né nastavi» dátum"
+
+#, fuzzy
+#~ msgid "%s: remove directory %s? "
+#~ msgstr "nie je mo¾né vytvori» adresár %s"
+
+#~ msgid "%s: directory %s is write protected; descend into it anyway? "
+#~ msgstr ""
+#~ "%s: adresár %s je chránený proti zápisu; zostúpi» napriek tomu do neho? "
+
+#~ msgid "removing all entries of directory %s\n"
+#~ msgstr "ma¾em v¹etky záznamy adresára `%s'\n"
+
+#~ msgid "continue? "
+#~ msgstr "pokraèova»? "
+
+#, fuzzy
+#~ msgid "cannot change back to directory %s via `..'"
+#~ msgstr "nie je mo¾né vojs» do adresára, %s"
+
+#, fuzzy
+#~ msgid "%s: remove directory %s%s? "
+#~ msgstr "nie je mo¾né vytvori» adresár %s"
+
+#~ msgid " (might be nonempty)"
+#~ msgstr " (mô¾e by» neprázdny)"
+
+#, fuzzy
+#~ msgid "removing the directory itself: %s\n"
+#~ msgstr "varovanie: nie je mo¾né zmeni» adresár na %s"
+
+#, fuzzy
+#~ msgid "cannot fork"
+#~ msgstr "nie je mo¾né spusti» %s"
+
+#, fuzzy
+#~ msgid ""
+#~ "ERROR: the source file %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after opening it), the numbers\n"
+#~ "are %lu/%lu. That means that while this program was running,\n"
+#~ "the file was replaced with another one. Skipping this file."
+#~ msgstr ""
+#~ "CHYBA: adresár %s mal pôvodne èíslo zariadenia/i-uzlu %lu/%lu,\n"
+#~ "ale teraz (po vojdení do neho prostredníctvom chdir) sú èísla\n"
+#~ "pre `.' %lu/%lu. To znamená, ¾e poèas behu rm bol adresár buï\n"
+#~ "vymenený za iný, alebo nahradený odkazom na iný adresár."
+
+#~ msgid ""
+#~ "ERROR: the directory %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after a chdir into it), the numbers for `.'\n"
+#~ "are %lu/%lu. That means that while rm was running, the directory\n"
+#~ "was replaced with either another directory or a link to another directory."
+#~ msgstr ""
+#~ "CHYBA: adresár %s mal pôvodne èíslo zariadenia/i-uzlu %lu/%lu,\n"
+#~ "ale teraz (po vojdení do neho prostredníctvom chdir) sú èísla\n"
+#~ "pre `.' %lu/%lu. To znamená, ¾e poèas behu rm bol adresár buï\n"
+#~ "vymenený za iný, alebo nahradený odkazom na iný adresár."
+
+#, fuzzy
+#~ msgid ""
+#~ "ERROR: the directory %s initially had device/inode\n"
+#~ "numbers %lu/%lu, but now (after changing into at least one subdirectory\n"
+#~ "and changing back via `..'), the numbers for `.' are %lu/%lu.\n"
+#~ "That means that while rm was running, a partially-removed subdirectory\n"
+#~ "was moved to a different position in the file system hierarchy."
+#~ msgstr ""
+#~ "CHYBA: adresár %s mal pôvodne èíslo zariadenia/i-uzlu %lu/%lu,\n"
+#~ "ale teraz (po vojdení do neho prostredníctvom chdir) sú èísla\n"
+#~ "pre `.' %lu/%lu. To znamená, ¾e poèas behu rm bol adresár buï\n"
+#~ "vymenený za iný, alebo nahradený odkazom na iný adresár."
+
+#, fuzzy
+#~ msgid " or: %s [-acm] MMDDhhmm[YY] FILE... (obsolete)\n"
+#~ msgstr " alebo: %s [-acm] MMDDhhmm[RR] SÚBOR... (zastaralé)\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#~ msgid ""
+#~ "Change the group membership of each FILE to GROUP.\n"
+#~ "\n"
+#~ " -c, --changes like verbose but report only when a change is "
+#~ "made\n"
+#~ " --dereference affect the referent of each symbolic link, "
+#~ "rather\n"
+#~ " than the symbolic link itself\n"
+#~ " -h, --no-dereference affect symbolic links instead of any referenced "
+#~ "file\n"
+#~ " (available only on systems that can change the\n"
+#~ " ownership of a symlink)\n"
+#~ " -f, --silent, --quiet suppress most error messages\n"
+#~ " --reference=RFILE use RFILE's group rather than the specified\n"
+#~ " GROUP value\n"
+#~ " -R, --recursive operate on files and directories recursively\n"
+#~ " -v, --verbose output a diagnostic for every file processed\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Zmena skupinového vlastníka ka¾dého SÚBORu na SKUPINU.\n"
+#~ "\n"
+#~ " -c, --changes ako voµba 'verbose', ale zobrazi» iba zmeny\n"
+#~ " --dereference pôsobi» na odkazované súbory namiesto na\n"
+#~ " samotný odkaz\n"
+#~ " -h, --no-dereference pôsobi» na symbolické odkazy namiesto na "
+#~ "súbor,\n"
+#~ " na ktorý odkaz odkazuje (dostupné iba na\n"
+#~ " systémoch umo¾òujúcich zmeni» vlastníka\n"
+#~ " symbolického odkazu)\n"
+#~ " -f, --silent, --quiet potlaèi» väè¹inu chybových správ\n"
+#~ " --reference=SÚBOR2 pou¾i» skupinu SÚBORU2 namiesto SKUPINy\n"
+#~ " -R, --recursive rekurzívne zmeni» skupinu aj vo vnorených "
+#~ "adresároch\n"
+#~ " -v, --verbose vypísa» informáciu o ka¾dom spracovanom súbore\n"
+#~ " --help vypísa» túto pomoc a skonèi»\n"
+#~ " --version vypísa» informáciu o verzii a skonèi»\n"
+
+#~ msgid ""
+#~ "Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+#~ "\n"
+#~ " -c, --changes like verbose but report only when a change is "
+#~ "made\n"
+#~ " --dereference affect the referent of each symbolic link, "
+#~ "rather\n"
+#~ " than the symbolic link itself\n"
+#~ " -h, --no-dereference affect symbolic links instead of any referenced "
+#~ "file\n"
+#~ " (available only on systems that can change the\n"
+#~ " ownership of a symlink)\n"
+#~ " --from=CURRENT_OWNER:CURRENT_GROUP\n"
+#~ " change the owner and/or group of each file only "
+#~ "if\n"
+#~ " its current owner and/or group match those "
+#~ "specified\n"
+#~ " here. Either may be omitted, in which case a "
+#~ "match\n"
+#~ " is not required for the omitted attribute.\n"
+#~ " -f, --silent, --quiet suppress most error messages\n"
+#~ " --reference=RFILE use RFILE's owner and group rather than\n"
+#~ " the specified OWNER:GROUP values\n"
+#~ " -R, --recursive operate on files and directories recursively\n"
+#~ " -v, --verbose output a diagnostic for every file processed\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Zmena vlastníka a/alebo skupinového vlastníka ka¾dého SÚBORu na VLASTNÍKa "
+#~ "a/alebo SKUPINU.\n"
+#~ "\n"
+#~ " -c, --changes ako voµba 'verbose', ale zobrazi» iba zmeny\n"
+#~ " --dereference pôsobi» na odkazovaný súbor namiesto na\n"
+#~ " samotný symbolický odkaz\n"
+#~ " -h, --no-dereference pôsobi» na symbolické odkazy namiesto na "
+#~ "súbor,\n"
+#~ " na ktorý odkaz odkazuje (dostupné iba na\n"
+#~ " systémoch umo¾òujúcich zmeni» vlastníka\n"
+#~ " symbolického odkazu)\n"
+#~ " --from=SÚÈASNÝ_VLASTNÍK:SÚÈASNÁ_SKUPINA\n"
+#~ " zmeni» vlastníka a/alebo skupinu iba pokiaµ\n"
+#~ " sa súèasný vlastník a/alebo skupina zhoduje\n"
+#~ " so zadanými. Vlastník alebo skupina mô¾u\n"
+#~ " by» vynechané, v takom prípade sa pre\n"
+#~ " vynechaný atribút zhoda nevy¾aduje.\n"
+#~ " -f, --silent, --quiet potlaèi» väè¹inu chybových správ\n"
+#~ " --reference=RSÚBOR pou¾i» vlastníka a skupinu RSÚBORU namiesto\n"
+#~ " explicitných hodnôt VLASTNÍK:SKUPINA\n"
+#~ " -R, --recursive vykona» operáciu aj vo vnorených adresároch\n"
+#~ " -v, --verbose vypísa» informáciu o ka¾dom spracovanom súbore\n"
+#~ " --help vypísa» túto pomoc a skonèi»\n"
+#~ " --version vypísa» informáciu o verzii a skonèi»\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -l, --link link files instead of copying\n"
+#~ " -L, --dereference always follow symbolic links\n"
+#~ " -p same as --preserve=mode,ownership,"
+#~ "timestamps\n"
+#~ " --preserve[=ATTR_LIST] preserve the specified attributes "
+#~ "(default:\n"
+#~ " mode,ownership,timestamps), if possible\n"
+#~ " additional attributes: links, all\n"
+#~ " --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+#~ " --parents append source path to DIRECTORY\n"
+#~ " -P same as `--no-dereference'\n"
+#~ " -r copy recursively, non-directories as "
+#~ "files\n"
+#~ " WARNING: use -R instead when you might "
+#~ "copy\n"
+#~ " special files like FIFOs or /dev/zero\n"
+#~ " --remove-destination remove each existing destination file "
+#~ "before\n"
+#~ " attempting to open it (contrast with --"
+#~ "force)\n"
+#~ msgstr ""
+#~ "Kópia ZDROJa do CIE¥a alebo viac ZDROJov do ADRESÁRA.\n"
+#~ "\n"
+#~ " -a, --archive ekvivalent volieb '-dpR'\n"
+#~ " --backup[=CONTROL] vytvori» zálohu ka¾dého existujúceho "
+#~ "cieµového\n"
+#~ " súboru\n"
+#~ " -b ako --backup, ale nepovoµuje argument\n"
+#~ " -d, --no-dereference nikdy nenasledova» symbolické odkazy\n"
+#~ " -f, --force pokiaµ existujúci CIE¥ nemô¾e by» "
+#~ "otvorený,\n"
+#~ " zmaza» ho a skúsi» znovu\n"
+#~ " -i, --interactive pred prepísaním sa opýta»\n"
+#~ " -H nasledova» symbolické odkazy z "
+#~ "príkazového\n"
+#~ " riadku\n"
+#~ " -l, --link namiesto kópií vytvori» odkazy\n"
+#~ " -L, --dereference v¾dy nasledova» symbolické odkazy\n"
+#~ " -p, --preserve pokiaµ je to mo¾né, zachova» práva a èasy "
+#~ "súborov\n"
+#~ " --parents prida» cestu k zdroju k cieµovému "
+#~ "ADRESÁRu\n"
+#~ " -P zatiaµ to isté ako --parents; èoskoro sa\n"
+#~ " ale zmení na --no-dereference kvôli\n"
+#~ " kompatibilite s POSIX-om\n"
+#~ " -r kopírova» rekurzívne, v¹etko èo nie je "
+#~ "adresárom\n"
+#~ " kopírova» ako keby to bol súbor.\n"
+#~ " VAROVANIE: pokiaµ by ste mohli "
+#~ "kopírova»\n"
+#~ " ¹peciálne súbory ako FIFO alebo /dev/"
+#~ "zero,\n"
+#~ " pou¾ite -R.\n"
+#~ " --remove-destination odstráni» ka¾dý existujúci CIE¥ pred "
+#~ "pokusom\n"
+#~ " o jeho otvorenie (porovnaj s --force)\n"
+
+#~ msgid ""
+#~ "Copy a file, converting and formatting according to the options.\n"
+#~ "\n"
+#~ " bs=BYTES force ibs=BYTES and obs=BYTES\n"
+#~ " cbs=BYTES convert BYTES bytes at a time\n"
+#~ " conv=KEYWORDS convert the file as per the comma separated keyword "
+#~ "list\n"
+#~ " count=BLOCKS copy only BLOCKS input blocks\n"
+#~ " ibs=BYTES read BYTES bytes at a time\n"
+#~ " if=FILE read from FILE instead of stdin\n"
+#~ " obs=BYTES write BYTES bytes at a time\n"
+#~ " of=FILE write to FILE instead of stdout\n"
+#~ " seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+#~ " skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "BLOCKS and BYTES may be followed by the following multiplicative "
+#~ "suffixes:\n"
+#~ "xM M, c 1, w 2, b 512, kD 1000, k 1024, MD 1,000,000, M 1,048,576,\n"
+#~ "GD 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.\n"
+#~ "Each KEYWORD may be:\n"
+#~ "\n"
+#~ " ascii from EBCDIC to ASCII\n"
+#~ " ebcdic from ASCII to EBCDIC\n"
+#~ " ibm from ASCII to alternated EBCDIC\n"
+#~ " block pad newline-terminated records with spaces to cbs-size\n"
+#~ " unblock replace trailing spaces in cbs-size records with newline\n"
+#~ " lcase change upper case to lower case\n"
+#~ " notrunc do not truncate the output file\n"
+#~ " ucase change lower case to upper case\n"
+#~ " swab swap every pair of input bytes\n"
+#~ " noerror continue after read errors\n"
+#~ " sync pad every input block with NULs to ibs-size; when used\n"
+#~ " with block or unblock, pad with spaces rather than NULs\n"
+#~ msgstr ""
+#~ "Kopírovanie súboru, konverzia a formátovanie podµa volieb.\n"
+#~ "\n"
+#~ " bs=BAJTOV vnúti» ibs=BAJTOV a obs=BAJTOV\n"
+#~ " cbs=BAJTOV konvertova» BAJTOV bajtov naraz\n"
+#~ " conv=K¥ÚÈ_SLOVÁ konvertova» podµa èiarkami oddeleného zoznamu "
+#~ "kµúèových slov\n"
+#~ " count=BLOKOV kopírova» iba BLOKOV vstupných blokov\n"
+#~ " ibs=BAJTOV èíta» BAJTOV bajtov naraz\n"
+#~ " if=SÚBOR èíta» zo súboru SÚBOR namiesto zo ¹tandardného vstupu\n"
+#~ " obs=BAJTOV zapisova» BAJTOV bajtov naraz\n"
+#~ " of=SÚBOR zapisova» do súboru SÚBOR namiesto na ¹tandardný "
+#~ "výstup\n"
+#~ " seek=BLOKOV preskoèi» prvých BLOKOV výstupných blokov veµkosti "
+#~ "obs\n"
+#~ " skip=BLOKOV preskoèi» prvých BLOKOV vstupných blokov veµkosti ibs\n"
+#~ " --help vypísa» túto pomoc a skonèi»\n"
+#~ " --version vypísa» informáciu o verzii a skonèi»\n"
+#~ "\n"
+#~ "Poèet BAJTOV mô¾e ma» nasledovné prípony násobku:\n"
+#~ "xM M, c 1, w 2, b 512, kD 1000, k 1024, MD 1 000 000, M 1 048 576,\n"
+#~ "GD 1 000 000 000, G 1 073 741 824, atï. pre T, P, E, Z, Y.\n"
+#~ "Ka¾dé K¥ÚÈ_SLOVO mô¾e by»:\n"
+#~ "\n"
+#~ " ascii z EBCDIC do ASCII\n"
+#~ " ebcdic z ASCII do EBCDIC\n"
+#~ " ibm z ASCII do alternatívneho EBCDIC\n"
+#~ " block doplni» záznamy ukonèené zn. nového riadku medzerami do "
+#~ "veµkosti cbs\n"
+#~ " unblock zameni» koncové medzery v záznamoch då¾ky cbs za zn. nového\n"
+#~ " riadku\n"
+#~ " lcase zmeni» veµké písmená na malé\n"
+#~ " notrunc neskracova» výstupný súbor\n"
+#~ " ucase zmeni» malé písmená na veµké\n"
+#~ " swab zameni» ka¾dý pár vstupných bajtov\n"
+#~ " noerror pokraèova» aj v prípade chyby pri èítaní\n"
+#~ " sync doplni» ka¾dý vstupný blok nulovými bajtami do veµkosti ibs\n"
+
+#~ msgid ""
+#~ "Show information about the filesystem on which each FILE resides,\n"
+#~ "or all filesystems by default.\n"
+#~ "\n"
+#~ " -a, --all include filesystems having 0 blocks\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -i, --inodes list inode information instead of block usage\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l, --local limit listing to local filesystems\n"
+#~ " -m, --megabytes like --block-size=1048576\n"
+#~ " --no-sync do not invoke sync before getting usage info "
+#~ "(default)\n"
+#~ " -P, --portability use the POSIX output format\n"
+#~ " --sync invoke sync before getting usage info\n"
+#~ " -t, --type=TYPE limit listing to filesystems of type TYPE\n"
+#~ " -T, --print-type print filesystem type\n"
+#~ " -x, --exclude-type=TYPE limit listing to filesystems not of type "
+#~ "TYPE\n"
+#~ " -v (ignored)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Výpis informácie o súborových systémoch, v ktorých sa SÚBORy nachádzajú\n"
+#~ "alebo o v¹etkých súborových systémoch.\n"
+#~ "\n"
+#~ " -a, --all aj súborové systémy s 0 blokmi\n"
+#~ " --block-size=VE¥KOS« pou¾i» bloky då¾ky VE¥KOS« bajtov\n"
+#~ " -h, --human-readable veµkosti v µahko èitateµnom formáte\n"
+#~ " (napr. 1K 234M 2G)\n"
+#~ " -H, --si podobne, ale pou¾i» mocniny 1000 namiesto "
+#~ "1024\n"
+#~ " -i, --inodes vypísa» informácie o i-uzloch namiesto "
+#~ "veµkosti v blokoch\n"
+#~ " -k, --kilobytes ako --block-size=1024\n"
+#~ " -l, --local obmedzi» výpis na lokálne súborové systémy\n"
+#~ " -m, --megabytes ako --block-size=1048576\n"
+#~ " --no-sync nevykona» 'sync' pred získaním informácií "
+#~ "(¹tandard)\n"
+#~ " -P, --portability pou¾i» formát definovaný normou POSIX\n"
+#~ " --sync vykona» 'sync' pred získaním informácií\n"
+#~ " -t, --type=TYP obmedzi» výstup na súborové systémy typu TYP\n"
+#~ " -T, --print-type vypísa» typ súborového systému\n"
+#~ " -x, --exclude-type=TYP vo výstupe nebudú súborové systémy typu TYP\n"
+#~ " -v (ignorované)\n"
+#~ " --help vypísa» túto pomoc a skonèi»\n"
+#~ " --version vypísa» informáciu o verzii a skonèi»\n"
+
+#~ msgid ""
+#~ "Summarize disk usage of each FILE, recursively for directories.\n"
+#~ "\n"
+#~ " -a, --all write counts for all files, not just directories\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -b, --bytes print size in bytes\n"
+#~ " -c, --total produce a grand total\n"
+#~ " -D, --dereference-args dereference PATHs when symbolic link\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " -H, --si likewise, but use powers of 1000 not 1024\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l, --count-links count sizes many times if hard linked\n"
+#~ " -L, --dereference dereference all symbolic links\n"
+#~ " -m, --megabytes like --block-size=1048576\n"
+#~ " -S, --separate-dirs do not include size of subdirectories\n"
+#~ " -s, --summarize display only a total for each argument\n"
+#~ " -x, --one-file-system skip directories on different filesystems\n"
+#~ " -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+#~ "FILE.\n"
+#~ " --exclude=PAT Exclude files that match PAT.\n"
+#~ " --max-depth=N print the total for a directory (or file, with --"
+#~ "all)\n"
+#~ " only if it is N or fewer levels below the "
+#~ "command\n"
+#~ " line argument; --max-depth=0 is the same as\n"
+#~ " --summarize\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Sumarizácia miesta na disku zabraného ka¾dým SÚBORom, adresáre prechádza\n"
+#~ "rekurzívne.\n"
+#~ "\n"
+#~ " -a, --all vypísa» diskový priestor pre v¹etky súbory,\n"
+#~ " nie iba pre adresáre\n"
+#~ " --block-size=VE¥KOS« pou¾i» bloky då¾ky VE¥KOS« bajtov\n"
+#~ " -b, --bytes vypísa» veµkosti v bajtoch\n"
+#~ " -c, --total vypísa» aj celkový súèet\n"
+#~ " -D, --dereference-args pokiaµ je ako argument zadaný symbolický\n"
+#~ " odkaz, nasledova» ho\n"
+#~ " -h, --human-readable veµkosti v µahko èitateµnom formáte\n"
+#~ " (napr. 1K 234M 2G)\n"
+#~ " -H, --si podobne, ale pou¾i» mocniny 1000 namiesto "
+#~ "1024\n"
+#~ " -k, --kilobytes ako --block-size=1024\n"
+#~ " -l, --count-links zapoèíta» veµkosti pevných odkazov viackrát\n"
+#~ " -L, --dereference nasledova» v¹etky symbolické odkazy\n"
+#~ " -m, --megabytes ako --block-size=1048576\n"
+#~ " -S, --separate-dirs nezapoèíta» do veµkosti adresárov veµkosti "
+#~ "ich\n"
+#~ " podadresárov\n"
+#~ " -s, --summarize vypísa» iba celkový súèet pre ka¾dý argument\n"
+#~ " -x, --one-file-system preskoèi» adresáre na iných súborových "
+#~ "systémoch\n"
+#~ " -X SÚBOR, --exclude-from=SÚBOR vynecha» súbory definované vzormi v "
+#~ "SÚBORe\n"
+#~ " --exclude=VZOR vynecha» súbory definované VZORom\n"
+#~ " --max-depth=N vypísa» súèet pre adresár (alebo súbor pre --"
+#~ "all)\n"
+#~ " iba pokiaµ je N alebo menej úrovní pod "
+#~ "argumentom\n"
+#~ " príkazového riadku; --max-depth=0 je to "
+#~ "isté ako\n"
+#~ " --summarize\n"
+#~ " --help vypísa» túto pomoc a skonèi»\n"
+#~ " --version vypísa» informáciu o verzii a skonèi»\n"
+
+#~ msgid ""
+#~ "In the first two formats, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+#~ "the existing DIRECTORY, while setting permission modes and owner/group.\n"
+#~ "In the third format, create all components of the given DIRECTORY(ies).\n"
+#~ "\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination file\n"
+#~ " -b like --backup but does not accept an argument\n"
+#~ " -c (ignored)\n"
+#~ " -d, --directory treat all arguments as directory names; create all\n"
+#~ " components of the specified directories\n"
+#~ " -D create all leading components of DEST except the "
+#~ "last,\n"
+#~ " then copy SOURCE to DEST; useful in the 1st "
+#~ "format\n"
+#~ " -g, --group=GROUP set group ownership, instead of process' current "
+#~ "group\n"
+#~ " -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-"
+#~ "xr-x\n"
+#~ " -o, --owner=OWNER set ownership (super-user only)\n"
+#~ " -p, --preserve-timestamps apply access/modification times of SOURCE "
+#~ "files\n"
+#~ " to corresponding destination files\n"
+#~ " -s, --strip strip symbol tables, only for 1st and 2nd formats\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " -v, --verbose print the name of each directory as it is created\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Prvé dva formáty skopírujú ZDROJ do CIE¥a alebo viac ZDROJov do "
+#~ "existujúceho\n"
+#~ "ADRESÁRa vrátane nastavenia práv, vlastníka a/alebo skupiny. Tretí "
+#~ "formát\n"
+#~ "vytvorí ADRESÁR vrátane adresárov v jeho ceste.\n"
+#~ "\n"
+#~ " --backup=CONTROL pred zmazaním vytvori» zálo¾nú kópiu\n"
+#~ " -b ako --backup, ale nepovoµuje argument\n"
+#~ " -c (ignorované)\n"
+#~ " -d, --directory vytvori» v¹etky prvky cesty k adresárom;\n"
+#~ " povinné pre 3. formát\n"
+#~ " -D vytvori» v¹etky prvky cesty okrem posledného, "
+#~ "potom\n"
+#~ " skopírova» ZDROJ do CIE¥a; u¾itoèné v 1. "
+#~ "formáte\n"
+#~ " -g, --group=SKUPINA nastavi» SKUPINU ako vlastníka namiesto skupiny "
+#~ "procesu\n"
+#~ " -m, --mode=PRÁVA nastavi» prístupové práva PRÁVA (ako s 'chmod') "
+#~ "namiesto\n"
+#~ " rwxr-xr-x\n"
+#~ " -o, --owner=VLASTNÍK nastavi» vlastníka (iba superu¾ívateµ - root)\n"
+#~ " -p, --preserve-timestamps nastavi» èas prístupu a zmeny podµa ZDROJa\n"
+#~ " -s, --strip odstráni» tabuµku symbolov (iba 1. a 2. formát)\n"
+#~ " -S, --suffix=PRÍPONA nastavi» novú príponu zálo¾ných súborov\n"
+#~ " --verbose vypísa» názov ka¾dého vytváraného adresára\n"
+#~ " --help vypísa» túto pomoc a skonèi»\n"
+#~ " --version vypísa» informáciu o verzii a skonèi»\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Create a link to the specified TARGET with optional LINK_NAME.\n"
+#~ "If LINK_NAME is omitted, a link with the same basename as the TARGET is\n"
+#~ "created in the current directory. When using the second form with more\n"
+#~ "than one TARGET, the last argument must be a directory; create links\n"
+#~ "in DIRECTORY to each TARGET. Create hard links by default, symbolic\n"
+#~ "links with --symbolic. When creating hard links, each TARGET must "
+#~ "exist.\n"
+#~ "\n"
+#~ " --backup[=CONTROL] make a backup of each existing destination "
+#~ "file\n"
+#~ " -b like --backup but does not accept an "
+#~ "argument\n"
+#~ " -d, -F, --directory hard link directories (super-user only)\n"
+#~ " -f, --force remove existing destination files\n"
+#~ " -n, --no-dereference treat destination that is a symlink to a\n"
+#~ " directory as if it were a normal file\n"
+#~ " -i, --interactive prompt whether to remove destinations\n"
+#~ " -s, --symbolic make symbolic links instead of hard links\n"
+#~ " -S, --suffix=SUFFIX override the usual backup suffix\n"
+#~ " --target-directory=DIRECTORY specify the DIRECTORY in which to "
+#~ "create\n"
+#~ " the links\n"
+#~ " -v, --verbose print name of each file before linking\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Vytvori» odkaz na CIE¥, voliteµne so zadaným MENOM_ODKAZU. Pokiaµ\n"
+#~ "je MENO_ODKAZU vynechané, vytvorí sa odkaz s rovnakým menom ako\n"
+#~ "CIE¥ v aktuálnom adresári. Pri pou¾ití druhej formy s viac ako\n"
+#~ "jedným CIE¥om musí by» posledný argument adresár, v ktorom majú\n"
+#~ "by» odkazy vytvorené. Pokiaµ nie je zadané inak, budú vytvorené\n"
+#~ "pevné odkazy, pri zadaní --symbolic budú vytvorené symbolické.\n"
+#~ "Pokiaµ sú vytvárané pevné odkazy, ka¾dý CIE¥ musí existova».\n"
+#~ "\n"
+#~ "\n"
+#~ " --backup[=CONTROL] vytvori» zálohu ka¾dého existujúceho "
+#~ "cieµového\n"
+#~ " súboru\n"
+#~ " -b ako --backup, ale nepovoµuje argument\n"
+#~ " -d, -F, --directory pevný odkaz na adresár (len "
+#~ "superu¾ívateµ)\n"
+#~ " -f, --force zmaza» existujúce súbory\n"
+#~ " -n, --no-dereference pokiaµ je MENO_ODKAZU symbolický odkaz na "
+#~ "adresár,\n"
+#~ " zachádza» s ním ako s obyèajným súborom\n"
+#~ " -i, --interactive pred prípadným zmazaním súboru sa opýta»\n"
+#~ " -s, --symbolic vytvori» symbolický odkaz namiesto pevného "
+#~ "odkazu\n"
+#~ " -S, --suffix=PRÍPONA zmeni» obvyklú príponu zálo¾ných kópií\n"
+#~ " --target-directory=ADR presunú» v¹etky ZDROJe do ADResára\n"
+#~ " -v, --verbose pred vytvorením odkazu vypísa» meno "
+#~ "ka¾dého súboru\n"
+#~ " --help vypísa» túto pomoc a skonèi»\n"
+#~ " --version vypísa» informáciu o verzii a skonèi»\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "List information about the FILEs (the current directory by default).\n"
+#~ "Sort entries alphabetically if none of -cftuSUX nor --sort.\n"
+#~ "\n"
+#~ " -a, --all do not hide entries starting with .\n"
+#~ " -A, --almost-all do not list implied . and ..\n"
+#~ " -b, --escape print octal escapes for nongraphic "
+#~ "characters\n"
+#~ " --block-size=SIZE use SIZE-byte blocks\n"
+#~ " -B, --ignore-backups do not list implied entries ending with ~\n"
+#~ " -c with -lt: sort by, and show, ctime (time of "
+#~ "last\n"
+#~ " modification of file status information)\n"
+#~ " with -l: show ctime and sort by name\n"
+#~ " otherwise: sort by ctime\n"
+#~ " -C list entries by columns\n"
+#~ " --color[=WHEN] control whether color is used to distinguish "
+#~ "file\n"
+#~ " types. WHEN may be `never', `always', or "
+#~ "`auto'\n"
+#~ " -d, --directory list directory entries instead of contents\n"
+#~ " -D, --dired generate output designed for Emacs' dired "
+#~ "mode\n"
+#~ " -f do not sort, enable -aU, disable -lst\n"
+#~ " -F, --classify append indicator (one of */=@|) to entries\n"
+#~ " --format=WORD across -x, commas -m, horizontal -x, long -"
+#~ "l,\n"
+#~ " single-column -1, verbose -l, vertical -C\n"
+#~ " --full-time like -l --time-style=full-iso\n"
+#~ msgstr ""
+#~ "Výpis informácií o SÚBORoch (v aktuálnom adresári, pokiaµ nie sú "
+#~ "zadané).\n"
+#~ "Pokiaµ nie je zadaná ¾iadna z volieb -cftuSUX alebo --sort, bude výstup\n"
+#~ "usporiadaný abecedne.\n"
+#~ "\n"
+#~ " -a, --all vypísa» aj súbory zaèínajúce bodkou\n"
+#~ " -A, --almost-all vypísa» v¹etky súbory okrem . a ..\n"
+#~ " -b, --escape vypísa» negrafické znaky osmièkovo\n"
+#~ " --block-size=VE¥KOS« pou¾i» bloky då¾ky VE¥KOS« bajtov\n"
+#~ " -B, --ignore-backups nevypisova» súbory konèiace ~\n"
+#~ " -c spoloène s -lt: zobrazi» ctime a zoradi» "
+#~ "podµa neho\n"
+#~ " (èas poslednej zmeny stavovej informácie "
+#~ "súboru)\n"
+#~ " spoloène s -l: zobrazi» ctime a zoradi» "
+#~ "podµa mena\n"
+#~ " inak: zoradi» podµa ctime\n"
+#~ " -C vypísa» súbory v ståpcoch\n"
+#~ " --color[=KEDY] urèi», ako sú pou¾ité farby pre rozlí¹enie "
+#~ "typov\n"
+#~ " súborov. KEDY mô¾e by» `never', `always' "
+#~ "alebo\n"
+#~ " `auto'\n"
+#~ " -d, --directory vypísa» názvy adresárov namiesto ich obsahu\n"
+#~ " -D, --dired generova» výstup pre Emacsový dired mód\n"
+#~ " -f neusporiada», povoli» -aU, zakáza» -lst\n"
+#~ " -F, --classify doplni» znak urèujúci typ súborov (jeden z */"
+#~ "=@|)\n"
+#~ " --format=SLOVO across -x, commas -m, horizontal -x, long -"
+#~ "l,\n"
+#~ " single-column -1, verbose -l, vertical -C\n"
+#~ " --full-time vypísa» plný dátum aj èas\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -g like -l, but do not list owner\n"
+#~ " -G, --no-group inhibit display of group information\n"
+#~ " -h, --human-readable print sizes in human readable format (e.g., 1K "
+#~ "234M 2G)\n"
+#~ " --si likewise, but use powers of 1000 not 1024\n"
+#~ " -H, --dereference-command-line follow symbolic links on the command "
+#~ "line\n"
+#~ " --indicator-style=WORD append indicator with style WORD to entry "
+#~ "names:\n"
+#~ " none (default), classify (-F), file-type (-"
+#~ "p)\n"
+#~ " -i, --inode print index number of each file\n"
+#~ " -I, --ignore=PATTERN do not list implied entries matching shell "
+#~ "PATTERN\n"
+#~ " -k, --kilobytes like --block-size=1024\n"
+#~ " -l use a long listing format\n"
+#~ " -L, --dereference when showing file information for a "
+#~ "symbolic\n"
+#~ " link, show information for the file the "
+#~ "link\n"
+#~ " references rather than for the link "
+#~ "itself\n"
+#~ " -m fill width with a comma separated list of "
+#~ "entries\n"
+#~ msgstr ""
+#~ " -g (ignorované)\n"
+#~ " -G, --no-group nevypisova» informácie o skupinách\n"
+#~ " -h, --human-readable veµkosti v µahko èitateµnom formáte\n"
+#~ " (napr. 1K 234M 2G)\n"
+#~ " --si podobne, ale pou¾i» mocniny 1000 namiesto "
+#~ "1024\n"
+#~ " -H zatiaµ to isté ako --si; èoskoro sa zmení\n"
+#~ " kvôli kompatibilite s POSIX-om\n"
+#~ " --indicator-style=©TÝL pripoji» indikátor ¹týlu ©TÝL k názvom:\n"
+#~ " none (predvoµba), classify (-F), file-type "
+#~ "(-p)\n"
+#~ " -i, --inode ku ka¾dému súboru vypísa» aj èíslo jeho i-"
+#~ "uzlu\n"
+#~ " -I, --ignore=VZOR nevypisova» súbory vyhovujúce shellovému "
+#~ "VZORu\n"
+#~ " -k, --kilobytes ako --block-size=1024\n"
+#~ " -l pou¾i» dlhý formát\n"
+#~ " -L, --dereference v prípade symbolických odkazov vypísa» "
+#~ "vlastnosti,\n"
+#~ " súboru, na ktorý odkaz odkazuje\n"
+#~ " -m oddeµova» súbory èiarkami\n"
+#~ " -n, --numeric-uid-gid namiesto mena vlastníka (UID) a skupiny "
+#~ "(GID)\n"
+#~ " vypísa» èísla\n"
+#~ " -N, --literal nespracováva» riadiace znaky v názvoch "
+#~ "súborov\n"
+#~ " -o pou¾i» dlhý formát bez informácií o "
+#~ "skupinách\n"
+#~ " -p, --file-type doplni» znak urèujúci typ ka¾dého souboru "
+#~ "(jeden z /=@|)\n"
+#~ " -q, --hide-control-chars namiesto negrafických znakov vypísa» '?'\n"
+#~ " --show-control-chars vypísa» aj negrafické znaku (predvolené)\n"
+#~ " -Q, --quote-name vlo¾i» názvy do úvodzoviek (citácia)\n"
+#~ " --quoting-style=SLOVO citova» mená ¹týlom SLOVO:\n"
+#~ " literal, shell, shell-always, c, escape\n"
+#~ " -r, --reverse usporiada» v opaènom poradí\n"
+#~ " -R, --recursive vypísa» adresáre rekurzívne\n"
+#~ " -s, --size vypísa» veµkos» ka¾dého súboru v blokoch\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -S sort by file size\n"
+#~ " --sort=WORD extension -X, none -U, size -S, time -t,\n"
+#~ " version -v\n"
+#~ " status -c, time -t, atime -u, access -u, use "
+#~ "-u\n"
+#~ " --time=WORD show time as WORD instead of modification "
+#~ "time:\n"
+#~ " atime, access, use, ctime or status; use\n"
+#~ " specified time as sort key if --sort=time\n"
+#~ " --time-style=WORD show times using style WORD:\n"
+#~ " full-iso, iso, locale, posix-iso\n"
+#~ " -t sort by modification time\n"
+#~ " -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+#~ " -u with -lt: sort by, and show, access time\n"
+#~ " with -l: show access time and sort by "
+#~ "name\n"
+#~ " otherwise: sort by access time\n"
+#~ " -U do not sort; list entries in directory "
+#~ "order\n"
+#~ " -v sort by version\n"
+#~ " -w, --width=COLS assume screen width instead of current "
+#~ "value\n"
+#~ " -x list entries by lines instead of by columns\n"
+#~ " -X sort alphabetically by entry extension\n"
+#~ " -1 list one file per line\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "By default, color is not used to distinguish types of files. That is\n"
+#~ "equivalent to using --color=none. Using the --color option without the\n"
+#~ "optional WHEN argument is equivalent to using --color=always. With\n"
+#~ "--color=auto, color codes are output only if standard output is "
+#~ "connected\n"
+#~ "to a terminal (tty).\n"
+#~ msgstr ""
+#~ " -S uspoiada» podµa då¾ky súborov\n"
+#~ " --sort=SLOVO extension -X, none -U, size -S, time -t,\n"
+#~ " version -v\n"
+#~ " status -c, time -t, atime -u, access -u, use "
+#~ "-u\n"
+#~ " --time=SLOVO zobrazi» èas ako SLOVO namiesto èasu zmeny:\n"
+#~ " atime, access, use, ctime alebo status; "
+#~ "pou¾i\n"
+#~ " zadaný èas pre triedenie, pokiaµ --"
+#~ "sort=time\n"
+#~ " -t usporiada» podµa èasu poslednej zmeny\n"
+#~ " -T, --tabsize=ROZOSTUP nastavi» tabulátory ka¾dých ROZOSTUP znakov\n"
+#~ " -u spoloène s -lt: zobrazi» èas posledného "
+#~ "prístupu\n"
+#~ " (atime) a zoradi» podµa neho\n"
+#~ " spoloène s -l: zobrazi» atime a zoradi» "
+#~ "podµa mena\n"
+#~ " inak: zoradi» podµa atime\n"
+#~ " -U neusporiadava» - vypísa» v poradí, aké je\n"
+#~ " v adresári\n"
+#~ " -v usporiada» podµa verzie\n"
+#~ " -w, --width=STÅPCOV pou¾i» túto ¹írku obrazovky pri vypisovaní\n"
+#~ " -x vypisova» názvy po riadkoch namiesto po "
+#~ "ståpcoch\n"
+#~ " -X usporiada» podµa prípon\n"
+#~ " -1 vypísa» jeden súbor na jednom riadku\n"
+#~ " --help vypísa» túto pomoc a skonèi»\n"
+#~ " --version vypísa» informáciu o verzii a skonèi»\n"
+#~ "Pokiaµ nie je nastavené inak, farba sa pre oznaèenie typov súborov "
+#~ "nepou¾ije,\n"
+#~ "èo je rovnocenné s voµbou --color=none. Pou¾itie voµby --color bez "
+#~ "argumentu\n"
+#~ "KEDY je rovnocenné s pou¾itím voµby --color=always. Voµba --color=auto "
+#~ "spôsobí,\n"
+#~ "¾e farby budú pou¾ité iba pokiaµ je ¹tandardný výstup pripojený k "
+#~ "terminálu\n"
+#~ "(tty).\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+#~ "for even very expensive hardware probing to recover the data.\n"
+#~ "\n"
+#~ " -f, --force change permissions to allow writing if necessary\n"
+#~ " -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+#~ " -s, --size=N shred this many bytes (suffixes like k, M, G accepted)\n"
+#~ " -u, --remove truncate and remove file after overwriting\n"
+#~ " -v, --verbose show progress\n"
+#~ " -x, --exact do not round file sizes up to the next full block\n"
+#~ " -z, --zero add a final overwrite with zeros to hide shredding\n"
+#~ " - shred standard output\n"
+#~ " --help display this help and exit\n"
+#~ " --version print version information and exit\n"
+#~ "\n"
+#~ "Delete FILE(s) if --remove (-u) is specified. The default is not to "
+#~ "remove\n"
+#~ "the files because it is common to operate on device files like /dev/hda,\n"
+#~ "and those files usually should not be removed. When operating on "
+#~ "regular\n"
+#~ "files, most people use the --remove option.\n"
+#~ "\n"
+#~ "CAUTION: Note that shred relies on a very important assumption:\n"
+#~ "that the filesystem overwrites data in place. This is the traditional\n"
+#~ "way to do things, but many modern filesystem designs do not satisfy this\n"
+#~ "assumption. The following are examples of filesystems on which shred is\n"
+#~ "not effective:\n"
+#~ "\n"
+#~ "* log-structured or journaled filesystems, such as those supplied with\n"
+#~ " AIX and Solaris (and JFS, ReiserFS, XFS, etc.)\n"
+#~ "\n"
+#~ "* filesystems that write redundant data and carry on even if some writes\n"
+#~ " fail, such as RAID-based filesystems\n"
+#~ "\n"
+#~ "* filesystems that make snapshots, such as Network Appliance's NFS "
+#~ "server\n"
+#~ "\n"
+#~ "* filesystems that cache in temporary locations, such as NFS\n"
+#~ " version 3 clients\n"
+#~ "\n"
+#~ "* compressed filesystems\n"
+#~ "\n"
+#~ "In addition, file system backups and remote mirrors may contain copies\n"
+#~ "of the file that cannot be removed, and that will allow a shredded file\n"
+#~ "to be recovered later.\n"
+#~ msgstr ""
+#~ "Opakovane prepisuje SÚBOR(y), aby sa aj veµmi nákladnému hardvéru\n"
+#~ "maximálne s»a¾ili pokusy o obnovu údajov.\n"
+#~ "\n"
+#~ " -f, --force zmeni» práva pre povolenie zápisu, ak je to potrebné\n"
+#~ " -n, --iterations=N prepísa» N-krát namiesto prednastavených (%d)\n"
+#~ " -s, --size=N prepísa» N bajtov (prípony ako k, M, G sú mo¾né)\n"
+#~ " -u, --remove skráti» a odstráni» súbor po prepísaní\n"
+#~ " -v, --verbose zobrazi» postup\n"
+#~ " -x, --exact nezaokrúhµova» veµkosti súborov na ïal¹í úplný blok\n"
+#~ " -z, --zero na záver prepísa» nulami, aby sa prepisovanie skrylo\n"
+#~ " - prepisova» ¹tandardný výstup\n"
+#~ " --help vypísa» túto pomoc a skonèi»\n"
+#~ " --version vypísa» informáciu o verzii a skonèi»\n"
+#~ "\n"
+#~ "SÚBOR bude zmazaný, pokiaµ bolo zadané --remove (-u). Inak sa nema¾e,\n"
+#~ "keï¾e je obvyklé prepisova» súbory zariadení ako /dev/hda a tieto\n"
+#~ "obvykle vymazané by» nemajú. Pre obyèajné súbory väè¹ina µudí pou¾íva\n"
+#~ "voµbu --remove.\n"
+#~ "\n"
+#~ "POZOR: Prepisovanie funguje len pokiaµ je splnený dôle¾itý predpoklad:\n"
+#~ "¾e súborový systém prepisuje údaje na mieste. Tak sa to obvykle aj "
+#~ "robí,\n"
+#~ "ale pre veµa moderných súborových systémoch to splnené nie je.\n"
+#~ "Nasledujúce súborové systémy sú príkladom takých, kde shred nie je\n"
+#~ "úèinný:\n"
+#~ "\n"
+#~ "* systémy zalo¾ené na log-súboroch alebo ¾urnáli, ako napr. systémy\n"
+#~ " obsiahnuté v systémoch AIX, Solaris (a JFS, ReiserFS, XFS, atï.)\n"
+#~ "\n"
+#~ "* systémy zapisujúce redundantné údaje a sú schopné fungova» aj keï\n"
+#~ " niektoré zo zápisov zlyhajú, ako napr. systémy zalo¾ené na RAID\n"
+#~ "\n"
+#~ "* systémy tvoriace 'snímky', ako napr. NFS server Network Appliance\n"
+#~ "\n"
+#~ "* systémy vyu¾ívajúce cache na doèasných miestach, ako napr. klienti\n"
+#~ " NFS verzie 3\n"
+#~ "\n"
+#~ "* komprimované súborové systémy\n"
+
+#~ msgid ""
+#~ "Update the access and modification times of each FILE to the current "
+#~ "time.\n"
+#~ "\n"
+#~ " -a change only the access time\n"
+#~ " -c, --no-create do not create any files\n"
+#~ " -d, --date=STRING parse STRING and use it instead of current time\n"
+#~ " -f (ignored)\n"
+#~ " -m change only the modification time\n"
+#~ " -r, --reference=FILE use this file's times instead of current time\n"
+#~ " -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current "
+#~ "time\n"
+#~ " --time=WORD set time given by WORD: access atime use (same "
+#~ "as -a)\n"
+#~ " modify mtime (same as -m)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Note that the three time-date formats recognized for the -d and -t "
+#~ "options\n"
+#~ "and for the obsolescent argument are all different.\n"
+#~ msgstr ""
+#~ "Aktualizova» èas posledného prístupu a poslednej zmeny ka¾dého SÚBORu\n"
+#~ "na aktuálny èas\n"
+#~ "\n"
+#~ " -a zmeni» iba èas posledného prístupu\n"
+#~ " -c nevytvára» nové súbory\n"
+#~ " -d, --date=RE«AZEC analyzova» RE«AZEC a pou¾i» ho namiesto "
+#~ "aktuálneho èasu\n"
+#~ " -f (ignorované)\n"
+#~ " -m zmeni» iba èas poslednej zmeny súboru\n"
+#~ " -r, --reference=SÚBOR pou¾i» èasy SÚBORu namiesto aktuálneho èasu\n"
+#~ " -t ÈAS pou¾i» [[SS]RR]MMDDhhmm[.ss] namiesto aktuálneho "
+#~ "èasu\n"
+#~ " --time=SLOVO aktualizova» èas zadaný SLOVOm - access, atime,\n"
+#~ " use (to isté ako -a); modify, mtime (ako -m)\n"
+#~ " --help vypísa» túto pomoc a skonèi»\n"
+#~ " --version vypísa» informáciu o verzii a skonèi»\n"
+#~ "\n"
+#~ "Zoberte na vedomie, ¾e tri formáty dátumu a èasu (rozpoznávané \n"
+#~ "voµbami -d a -t a zastaralým spôsobom ich zadania) sú v¹etky rozdielne.\n"
+
+#~ msgid ""
+#~ "Warning: the meaning of `-P' will change in the future to conform to "
+#~ "POSIX.\n"
+#~ "Use `--parents' for the old meaning, and `--no-dereference' for the new "
+#~ "one."
+#~ msgstr ""
+#~ "Varovanie: význam `-P' sa v budúcnosti zmení, aby bolo vyhovené POSIX-u.\n"
+#~ "Pre pôvodný význam pou¾ite `--parents' a pre nový `--no-dereference'."
+
+#, fuzzy
+#~ msgid "Copyright (C) 2001 Free Software Foundation, Inc."
+#~ msgstr "Copyright (C) 2001 Free Software Foundation, Inc."
+
+#, fuzzy
+#~ msgid "%a %b %d %H:%M:%S %Y"
+#~ msgstr "%b %e %H:%M %Y"
+
+#~ msgid ""
+#~ "when creating character special files, major and minor device\n"
+#~ "numbers must be specified"
+#~ msgstr ""
+#~ "pri vytváraní ¹peciálneho znakového súboru musí by» zadané\n"
+#~ "hlavné a vedµaj¹ie èíslo zariadenia"
+
+#~ msgid "days"
+#~ msgstr "dni"
+
+#~ msgid "users"
+#~ msgstr "pou¾ív."
+
+#, fuzzy
+#~ msgid "%s: only one signal specififier allowed"
+#~ msgstr "mô¾e by» zadaný iba jeden argument"
+
+#, fuzzy
+#~ msgid ""
+#~ "Run COMMAND with root directory set to NEWROOT.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "FORMAT controls the output. The only valid option for the second form\n"
+#~ "specifies Coordinated Universal Time. Interpreted sequences are:\n"
+#~ "\n"
+#~ " %%%% a literal %%\n"
+#~ " %%a locale's abbreviated weekday name (Sun..Sat)\n"
+#~ " %%A locale's full weekday name, variable length (Sunday..Saturday)\n"
+#~ " %%b locale's abbreviated month name (Jan..Dec)\n"
+#~ " %%B locale's full month name, variable length (January..December)\n"
+#~ " %%c locale's date and time (Sat Nov 04 12:02:33 EST 1989)\n"
+#~ " %%C century (year divided by 100 and truncated to an integer) [00-"
+#~ "99]\n"
+#~ " %%d day of month (01..31)\n"
+#~ " %%D date (mm/dd/yy)\n"
+#~ " %%e day of month, blank padded ( 1..31)\n"
+#~ " %%h same as %%b\n"
+#~ " %%H hour (00..23)\n"
+#~ " %%I hour (01..12)\n"
+#~ " %%j day of year (001..366)\n"
+#~ " %%k hour ( 0..23)\n"
+#~ " %%l hour ( 1..12)\n"
+#~ " %%m month (01..12)\n"
+#~ " %%M minute (00..59)\n"
+#~ " %%n a newline\n"
+#~ " %%p locale's AM or PM\n"
+#~ " %%r time, 12-hour (hh:mm:ss [AP]M)\n"
+#~ " %%s seconds since `00:00:00 1970-01-01 UTC' (a GNU extension)\n"
+#~ " %%S second (00..60)\n"
+#~ " %%t a horizontal tab\n"
+#~ " %%T time, 24-hour (hh:mm:ss)\n"
+#~ " %%u day of week (1..7); 1 represents Monday\n"
+#~ " %%U week number of year with Sunday as first day of week (00..53)\n"
+#~ " %%V week number of year with Monday as first day of week (01..53)\n"
+#~ " %%w day of week (0..6); 0 represents Sunday\n"
+#~ " %%W week number of year with Monday as first day of week (00..53)\n"
+#~ " %%x locale's date representation (mm/dd/yy)\n"
+#~ " %%X locale's time representation (%%H:%%M:%%S)\n"
+#~ " %%y last two digits of year (00..99)\n"
+#~ " %%Y year (1970...)\n"
+#~ " %%z RFC-822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %%Z time zone (e.g., EDT), or nothing if no time zone is "
+#~ "determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr ""
+#~ "\n"
+#~ "FORMÁT urèuje výstup. Pre druhú formu je jedinou povolenou voµbou\n"
+#~ "¹pecifikácia univerzálneho èasu. Platné formátovacie sekvencie sú:\n"
+#~ "\n"
+#~ " %%%% znak %%\n"
+#~ " %%a skratka dòa v tý¾dni podµa aktuálneho národného prostredia (Po.."
+#~ "Ne)\n"
+#~ " %%A úplný názov dòa podµa národného prostredia, premenná då¾ka "
+#~ "(Pondelok..Nedeµa)\n"
+#~ " %%b skratka mesiaca podµa národného prostredia (Jan..Dec)\n"
+#~ " %%B úplný názov mesiaca podµa národného prostredia, premenná då¾ka "
+#~ "(Január..December)\n"
+#~ " %%c dátum a èas podµa národného prostredia (Ne 28. február 1999, "
+#~ "18:48:59 CET)\n"
+#~ " %%d de+n v mesiaci (01..31)\n"
+#~ " %%D dátum (mm/dd/rr)\n"
+#~ " %%e deò v mesiaci, zarovnanie medzerou ( 1..31)\n"
+#~ " %%h ako %%b\n"
+#~ " %%H hodina (00..23)\n"
+#~ " %%I hodina (01..12)\n"
+#~ " %%j deò v roku (001..366)\n"
+#~ " %%k hodina ( 0..23)\n"
+#~ " %%l hodina ( 1..12)\n"
+#~ " %%m mesiac (01..12)\n"
+#~ " %%M minúta (00..59)\n"
+#~ " %%n prechod na nový riadok\n"
+#~ " %%p doobeda alebo poobede (podµa národného prostredia)\n"
+#~ " %%r èas, 12-hodinový formát (hh:mm:ss [AP]M)\n"
+#~ " %%s sekundy od 00:00:00, Jan 1, 1970 (GNU roz¹írenie)\n"
+#~ " %%S sekunda (00..60)\n"
+#~ " %%t horizontálny tabulátor\n"
+#~ " %%T èas, 24-hodinový formát (hh:mm:ss)\n"
+#~ " %%U èíslo tý¾dòa v roku s nedeµou ako prvým dòom tý¾dòa (00..53)\n"
+#~ " %%V èíslo tý¾dòa v roku s pondelkom ako prvým dòom tý¾dòa (01..52)\n"
+#~ " %%w deò v tý¾dni (0..6); 0 reprezentuje nedeµu\n"
+#~ " %%W èíslo tý¾dòa v roku s pondelkom ako prvým dòom tý¾dòa (00..53)\n"
+#~ " %%x dátum podµa národného prostredia (dd.mm.rrrr)\n"
+#~ " %%X èas podµa národného prostredia (%%H:%%M:%%S)\n"
+#~ " %%y posledné dve èíslice roku (00..99)\n"
+#~ " %%Y rok (1970...)\n"
+#~ " %%z èíselné èasové pásmo podµa RFC-822 (+0100) (ne¹tandardné "
+#~ "roz¹írenie)\n"
+#~ " %%Z èasové pásmo (napr. CET) alebo prázdny re»azec, pokiaµ sa nedá "
+#~ "urèi»\n"
+#~ "\n"
+#~ "Èíselné údaje sú implicitne zarovnávané nulami. GNU date rozpoznáva\n"
+#~ "medzi `%%' a èíselnou direktívou nasledovné modifikátory:\n"
+#~ "\n"
+#~ " `-' (pomlèka) nezarovnáva»\n"
+#~ " `_' (podèiarnik) zarovnáva» medzerami\n"
+
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ " --help display this help and exit (should be alone)\n"
+#~ " --version output version information and exit (should be alone)\n"
+#~ "\n"
+#~ "Without -E, the following sequences are recognized and interpolated:\n"
+#~ "\n"
+#~ " \\NNN the character whose ASCII code is NNN (octal)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a alert (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c suppress trailing newline\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r carriage return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ msgstr ""
+#~ "Vypísa» RE«AZEC (RE«AZCE) na ¹tandardný výstup.\n"
+#~ "\n"
+#~ " -n po výpise neprejs» na nový riadok\n"
+#~ " -e povoli» rozpoznanie znakov uvádzaných spätným "
+#~ "lomítkom,\n"
+#~ " popísaných ïalej\n"
+#~ " -E zakáza» spracovanie takýchto sekvencií\n"
+#~ " --help vypísa» túto pomoc a skonèi»\n"
+#~ " --version vypísa» informáciu o verzii a skonèi»\n"
+#~ "\n"
+#~ "Bez -E sú rozpoznávané a spracované nasledujúce sekvencie:\n"
+#~ "\n"
+#~ " \\NNN znak, ktorého ASCII kód je NNN (oktalovo)\n"
+#~ " \\\\ spätné lomítko\n"
+#~ " \\a pípnutie (BEL)\n"
+#~ " \\b krok spä»\n"
+#~ " \\c potlaèi» koncový znak nového riadku\n"
+#~ " \\f prechod na novú stránku\n"
+#~ " \\n prechod na nový riadok\n"
+#~ " \\r návrat na zaèiatok riadku\n"
+#~ " \\t horizontálny tabulátor\n"
+#~ " \\v vertikálny tabulátor\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print the value of EXPRESSION to standard output. A blank line below\n"
+#~ "separates increasing precedence groups. EXPRESSION may be:\n"
+#~ "\n"
+#~ " ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+#~ "\n"
+#~ " ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+#~ "\n"
+#~ " ARG1 < ARG2 ARG1 is less than ARG2\n"
+#~ " ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+#~ " ARG1 = ARG2 ARG1 is equal to ARG2\n"
+#~ " ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+#~ " ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+#~ " ARG1 > ARG2 ARG1 is greater than ARG2\n"
+#~ "\n"
+#~ " ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+#~ " ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+#~ "\n"
+#~ " ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+#~ " ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+#~ " ARG1 %% ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+#~ "\n"
+#~ " STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+#~ "\n"
+#~ " match STRING REGEXP same as STRING : REGEXP\n"
+#~ " substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+#~ " index STRING CHARS index in STRING where any CHARS is found, or "
+#~ "0\n"
+#~ " length STRING length of STRING\n"
+#~ " + TOKEN interpret TOKEN as a string, even if it is "
+#~ "a\n"
+#~ " keyword like `match' or an operator like "
+#~ "`/'\n"
+#~ "\n"
+#~ " ( EXPRESSION ) value of EXPRESSION\n"
+#~ msgstr ""
+#~ "Vypísa» hodnotu VÝRAZU na ¹tandardný výstup. V nasledujúcom texte\n"
+#~ "prázdny riadok oddeµuje skupiny podµa stúpajúcej priority. VÝRAZ mô¾e "
+#~ "by»:\n"
+#~ "\n"
+#~ " ARG1 | ARG2 ARG1 ak nie je prázdny ani 0, inak ARG2\n"
+#~ "\n"
+#~ " ARG1 & ARG2 ARG1 ak ¾iadny argument nie je prázdny ani nula, "
+#~ "otherwise 0\n"
+#~ "\n"
+#~ " ARG1 < ARG2 ARG1 je men¹í ako ARG2\n"
+#~ " ARG1 <= ARG2 ARG1 je men¹í alebo rovný ARG2\n"
+#~ " ARG1 = ARG2 ARG1 je rovný ARG2\n"
+#~ " ARG1 != ARG2 ARG1 nie je rovný ARG2\n"
+#~ " ARG1 >= ARG2 ARG1 je väè¹í alebo rovný ARG2\n"
+#~ " ARG1 > ARG2 ARG1 je väè¹í ako ARG2\n"
+#~ "\n"
+#~ " ARG1 + ARG2 aritmetický súèet ARG1 a ARG2\n"
+#~ " ARG1 - ARG2 aritmetický rozdiel ARG1 a ARG2\n"
+#~ "\n"
+#~ " ARG1 * ARG2 aritmetický súèin ARG1 a ARG2\n"
+#~ " ARG1 / ARG2 aritmetický podiel ARG1 a ARG2\n"
+#~ " ARG1 %% ARG2 aritmetický zvy¹ok po delení ARG1 ARG2\n"
+#~ "\n"
+#~ " RE«AZEC : REGEXP výskyt vzoru REGEXP v RE«AZCI\n"
+#~ "\n"
+#~ " match RE«AZEC REGEXP ako RE«AZEC : REGEXP\n"
+#~ " substr RE«AZEC POS DÅ®KA podre»azec RE«AZCA, POS poèítaná od 1\n"
+#~ " index RE«AZEC ZNAKY index v RE«AZCI, kde bol nájdený niektorý "
+#~ "ZNAK, inak 0\n"
+#~ " length RE«AZEC då¾ka RE«AZCA\n"
+#~ " quote TOKEN interpretuj TOKEN ako re»azec, aj pokiaµ je "
+#~ "kµúèovým\n"
+#~ " slovom ako `match' alebo operátorom ako "
+#~ "`/'\n"
+#~ "\n"
+#~ " ( VÝRAZ ) hodnota of VÝRAZU\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " -l produce long format output for the specified USERs\n"
+#~ " -b omit the user's home directory and shell in long "
+#~ "format\n"
+#~ " -h omit the user's project file in long format\n"
+#~ " -p omit the user's plan file in long format\n"
+#~ " -s do short format output, this is the default\n"
+#~ " -f omit the line of column headings in short format\n"
+#~ " -w omit the user's full name in short format\n"
+#~ " -i omit the user's full name and remote host in short "
+#~ "format\n"
+#~ " -q omit the user's full name, remote host and idle time\n"
+#~ " in short format\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "A lightweight `finger' program; print user information.\n"
+#~ "The utmp file will be %s.\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -l dlhá forma výstupu\n"
+#~ " -b vynecha» domovský adresár a shell pou¾ívateµa v dlhej "
+#~ "forme\n"
+#~ " -h vynecha» projektový súbor pou¾ívateµa v dlhej forme\n"
+#~ " -p vynecha» súbor s plánom pou¾ívateµa v dlhej forme\n"
+#~ " -s krátka forma (implicitná)\n"
+#~ " -f vynecha» nadpisy ståpcov v krátkej forme\n"
+#~ " -w vynecha» úplné meno pou¾ívateµa v krátkej forme\n"
+#~ " -i vynecha» úplné meno pou¾ívateµa a vzdialený systém v "
+#~ "krátkej forme\n"
+#~ " -q vynecha» úplné meno pou¾ívateµa, vzdialený systém a èas "
+#~ "neèinnosti\n"
+#~ " v krátkej forme\n"
+#~ " --help vypísa» túto pomoc a skonèi»\n"
+#~ " --version vypísa» informáciu o verzii a skonèi»\n"
+#~ "\n"
+#~ "Odµahèený program `finger'; výpis informácie o pou¾ívateµovi.\n"
+#~ "utmp súbor bude %s.\n"
+
+#~ msgid ""
+#~ "Print ARGUMENT(s) according to FORMAT.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+#~ "\n"
+#~ " \\\" double quote\n"
+#~ " \\0NNN character with octal value NNN (0 to 3 digits)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a alert (BEL)\n"
+#~ " \\b backspace\n"
+#~ " \\c produce no further output\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r carriage return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ " \\xNNN byte with hexadecimal value NNN (1 to 3 digits)\n"
+#~ "\n"
+#~ " \\uNNNN character with hexadecimal value NNNN (4 digits)\n"
+#~ " \\UNNNNNNNN character with hexadecimal value NNNNNNNN (8 digits)\n"
+#~ " %%%% a single %%\n"
+#~ " %%b ARGUMENT as a string with `\\' escapes interpreted\n"
+#~ "\n"
+#~ "and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+#~ "ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+#~ msgstr ""
+#~ "Vypísa» ARGUMENT(y) podµa FORMÁTU.\n"
+#~ "\n"
+#~ " --help vypísa» túto pomoc a skonèi»\n"
+#~ " --version vypísa» informáciu o verzii a skonèi»\n"
+#~ "FORMÁT riadi výstup analogicky C-funkcii printf. Spracovávané sekvencie "
+#~ "sú:\n"
+#~ "\n"
+#~ " \\\" úvodzovky\n"
+#~ " \\0NNN znak s oktalovou hodnotou NNN (0 a¾ 3 èíslice)\n"
+#~ " \\\\ spätné lomítko\n"
+#~ " \\a pípnutie (BEL)\n"
+#~ " \\b krok spä»\n"
+#~ " \\c neprodukova» ïal¹í výstup\n"
+#~ " \\f nová stránka\n"
+#~ " \\n nový riadok\n"
+#~ " \\r návrat na zaèiatok riadku\n"
+#~ " \\t horizontálny tabulátor\n"
+#~ " \\v vertikálny tabulátor\n"
+#~ " \\xNNN znak s hexadecimálnou hodnotou NNN (1 a¾ 3 èíslice)\n"
+#~ " \\uNNNN znak s hexadecimálnou hodnotou NNNN (4 èíslice)\n"
+#~ " \\UNNNNNNNN znak s hexadecimálnou hodnotou NNNNNNNN (8 èíslic)\n"
+#~ "\n"
+#~ " %%%% znak %%\n"
+#~ " %%b ARGUMENT ako re»azec s interpretovanými `\\' sekvenciami\n"
+#~ "\n"
+#~ "a v¹etky C ¹pecifikácie formátu konèiace jedným znakov diouxXfeEgGcs, s "
+#~ "ARGUMENTAMI\n"
+#~ "najprv prevedenými na správny typ. Premenné ¹írky budú spracované.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print the full filename of the current working directory.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Special characters:\n"
+#~ " * dsusp CHAR CHAR will send a terminal stop signal once input "
+#~ "flushed\n"
+#~ " eof CHAR CHAR will send an end of file (terminate the input)\n"
+#~ " eol CHAR CHAR will end the line\n"
+#~ " * eol2 CHAR alternate CHAR for ending the line\n"
+#~ " erase CHAR CHAR will erase the last character typed\n"
+#~ " intr CHAR CHAR will send an interrupt signal\n"
+#~ " kill CHAR CHAR will erase the current line\n"
+#~ " * lnext CHAR CHAR will enter the next character quoted\n"
+#~ " quit CHAR CHAR will send a quit signal\n"
+#~ " * rprnt CHAR CHAR will redraw the current line\n"
+#~ " start CHAR CHAR will restart the output after stopping it\n"
+#~ " stop CHAR CHAR will stop the output\n"
+#~ " susp CHAR CHAR will send a terminal stop signal\n"
+#~ " * swtch CHAR CHAR will switch to a different shell layer\n"
+#~ " * werase CHAR CHAR will erase the last word typed\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Special characters:\n"
+#~ "* dsusp ZNAK ZNAK po¹le signál zastavenia terminálu po zahodení\n"
+#~ " nepreèítaného vstupu\n"
+#~ " eof ZNAK ZNAK po¹le koniec súboru (ukonèenie vstupu)\n"
+#~ " eol ZNAK ZNAK ukonèuje riadok\n"
+#~ "* eol2 ZNAK alternatívny ZNAK pre ukonèenie riadku\n"
+#~ " erase ZNAK ZNAK zma¾e posledný napísaný znak\n"
+#~ " intr ZNAK ZNAK po¹le signál preru¹enia\n"
+#~ " kill ZNAK ZNAK zma¾e aktuálny riadok\n"
+#~ "* lnext ZNAK ZNAK spôsobí citáciu nasledujúceho znaku\n"
+#~ " quit ZNAK ZNAK po¹le signál ukonèenia\n"
+#~ "* rprnt ZNAK ZNAK znovu vykreslí aktuálny riadok\n"
+#~ " start ZNAK ZNAK spustí výstup po jeho zastavení\n"
+#~ " stop ZNAK ZNAK zastaví výstup\n"
+#~ " susp ZNAK ZNAK po¹le signál zastavenia terminálu\n"
+#~ "* swtch ZNAK ZNAK prepne do odli¹nej úrovne shellu\n"
+#~ "* werase ZNAK ZNAK zma¾e posledné napísané slovo\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Special settings:\n"
+#~ " N set the input and output speeds to N bauds\n"
+#~ " * cols N tell the kernel that the terminal has N columns\n"
+#~ " * columns N same as cols N\n"
+#~ " ispeed N set the input speed to N\n"
+#~ " * line N use line discipline N\n"
+#~ " min N with -icanon, set N characters minimum for a completed "
+#~ "read\n"
+#~ " ospeed N set the output speed to N\n"
+#~ " * rows N tell the kernel that the terminal has N rows\n"
+#~ " * size print the number of rows and columns according to the "
+#~ "kernel\n"
+#~ " speed print the terminal speed\n"
+#~ " time N with -icanon, set read timeout of N tenths of a second\n"
+#~ msgstr ""
+#~ "\n"
+#~ "©peciálne nastavenia:\n"
+#~ " N nastavi» rýchlos» vstupu a výstupu na N baudov\n"
+#~ "* cols N oznámi» jadru, ¾e terminál má N ståpcov\n"
+#~ "* columns N ako cols N\n"
+#~ " ispeed N nastavi» rýchlos» vstupu N\n"
+#~ "* line N pou¾i» linkovú disciplínu N\n"
+#~ " min N s -icanon nastavi» minimum N znakov pre ukonèené èítanie\n"
+#~ " ospeed N nastavi» rýchlos» výstupu N\n"
+#~ "* rows N oznámi» jadru, ¾e terminál má N riadkov\n"
+#~ "* size vypísa» poèet riadkov a ståpcov podµa údajov jadra\n"
+#~ " speed vypísa» rýchlos» terminálu\n"
+#~ " time N s -icanon nastavi» èasový limit vstupu na N desatín "
+#~ "sekundy\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Input settings:\n"
+#~ " [-]brkint breaks cause an interrupt signal\n"
+#~ " [-]icrnl translate carriage return to newline\n"
+#~ " [-]ignbrk ignore break characters\n"
+#~ " [-]igncr ignore carriage return\n"
+#~ " [-]ignpar ignore characters with parity errors\n"
+#~ " * [-]imaxbel beep and do not flush a full input buffer on a "
+#~ "character\n"
+#~ " [-]inlcr translate newline to carriage return\n"
+#~ " [-]inpck enable input parity checking\n"
+#~ " [-]istrip clear high (8th) bit of input characters\n"
+#~ " * [-]iuclc translate uppercase characters to lowercase\n"
+#~ " * [-]ixany let any character restart output, not only start "
+#~ "character\n"
+#~ " [-]ixoff enable sending of start/stop characters\n"
+#~ " [-]ixon enable XON/XOFF flow control\n"
+#~ " [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+#~ " [-]tandem same as [-]ixoff\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Nastavenia vstupu:\n"
+#~ " [-]brkint break vyvolá signál preru¹enia\n"
+#~ " [-]icrnl preklada» znaky návratu na zaèiatok riadku na nové "
+#~ "riadky\n"
+#~ " [-]ignbrk ignorova» break znaku\n"
+#~ " [-]igncr ignorova» znaky návratu na zaèiatok riadku\n"
+#~ " [-]ignpar ignorova» znaky s chybou parity\n"
+#~ "* [-]imaxbel pokiaµ príde znak a vyrovnávacia pamä» je plná, pípnu»\n"
+#~ " a nezahodi» vstup\n"
+#~ " [-]inlcr preklada» nové riadky na znaky návratu na zaèiatok "
+#~ "riadku\n"
+#~ " [-]inpck povoli» kontrolu parity na vstupe\n"
+#~ " [-]istrip vynulova» najvy¹¹í (ôsmy) bit vstupujúcich znakov\n"
+#~ "* [-]iuclc preklada» veµké znaky na malé\n"
+#~ "* [-]ixany znovu spusti» výstup µubovoµným znakom, nielen znakom "
+#~ "¹tart\n"
+#~ " [-]ixoff povoli» posielanie ¹tart/stop znakom\n"
+#~ " [-]ixon povoli» XON/XOFF riadenie toku\n"
+#~ " [-]parmrk oznaèi» chyby parity (postupnos»ou znakov 255-0)\n"
+#~ " [-]tandem ako [-]ixoff\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Local settings:\n"
+#~ " [-]crterase echo erase characters as backspace-space-backspace\n"
+#~ " * crtkill kill all line by obeying the echoprt and echoe settings\n"
+#~ " * -crtkill kill all line by obeying the echoctl and echok settings\n"
+#~ " * [-]ctlecho echo control characters in hat notation (`^c')\n"
+#~ " [-]echo echo input characters\n"
+#~ " * [-]echoctl same as [-]ctlecho\n"
+#~ " [-]echoe same as [-]crterase\n"
+#~ " [-]echok echo a newline after a kill character\n"
+#~ " * [-]echoke same as [-]crtkill\n"
+#~ " [-]echonl echo newline even if not echoing other characters\n"
+#~ " * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+#~ " [-]icanon enable erase, kill, werase, and rprnt special "
+#~ "characters\n"
+#~ " [-]iexten enable non-POSIX special characters\n"
+#~ " [-]isig enable interrupt, quit, and suspend special characters\n"
+#~ " [-]noflsh disable flushing after interrupt and quit special "
+#~ "characters\n"
+#~ " * [-]prterase same as [-]echoprt\n"
+#~ " * [-]tostop stop background jobs that try to write to the terminal\n"
+#~ " * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Lokálne nastavenia:\n"
+#~ " [-]crterase echova» znaky zmazania ako krok spä»-medzera-krok spä»\n"
+#~ "* crtkill vymaza» riadok s re¹pektovaním nastavení echoprt a echoe\n"
+#~ "* -crtkill vymaza» riadok s re¹pektovaním nastavení echoctl a echok\n"
+#~ "* [-]ctlecho echova» riadiace znaky v strie¹kovej notácii (`^c')\n"
+#~ " [-]echo echova» vstupujúce znaky\n"
+#~ "* [-]echoctl ako [-]ctlecho\n"
+#~ " [-]echoe ako [-]crterase\n"
+#~ " [-]echok echova» nový riadok po znaku vymazania riadku\n"
+#~ "* [-]echoke ako [-]crtkill\n"
+#~ " [-]echonl echova» nový riadok aj pokiaµ sa ostatné znaky neechujú\n"
+#~ "* [-]echoprt echova» vymazané znaky v obrátenom poradí medzi `\\' a "
+#~ "'/'\n"
+#~ " [-]icanon povoli» ¹peciálne znaky erase, kill, werase, a rprnt\n"
+#~ " [-]iexten povoli» ¹peciálne ne-POSIX-ové znaky\n"
+#~ " [-]isig povoli» ¹peciálne znaky interrupt, quit a suspend\n"
+#~ " [-]noflsh zakáza» zahodenie vstupu po znakoch interrupt and quit\n"
+#~ "* [-]prterase ako [-]echoprt\n"
+#~ "* [-]tostop zastavi» úlohy v pozadí, keï skúsia zapisova» na "
+#~ "terminál\n"
+#~ "* [-]xcase s icanon, predradi» `\\' pre veµké písmená\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Combination settings:\n"
+#~ " * [-]LCASE same as [-]lcase\n"
+#~ " cbreak same as -icanon\n"
+#~ " -cbreak same as icanon\n"
+#~ " cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+#~ " icanon, eof and eol characters to their default values\n"
+#~ " -cooked same as raw\n"
+#~ " crt same as echoe echoctl echoke\n"
+#~ " dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+#~ " kill ^u\n"
+#~ " * [-]decctlq same as [-]ixany\n"
+#~ " ek erase and kill characters to their default values\n"
+#~ " evenp same as parenb -parodd cs7\n"
+#~ " -evenp same as -parenb cs8\n"
+#~ " * [-]lcase same as xcase iuclc olcuc\n"
+#~ " litout same as -parenb -istrip -opost cs8\n"
+#~ " -litout same as parenb istrip opost cs7\n"
+#~ " nl same as -icrnl -onlcr\n"
+#~ " -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+#~ " oddp same as parenb parodd cs7\n"
+#~ " -oddp same as -parenb cs8\n"
+#~ " [-]parity same as [-]evenp\n"
+#~ " pass8 same as -parenb -istrip cs8\n"
+#~ " -pass8 same as parenb istrip cs7\n"
+#~ " raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+#~ " -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+#~ " -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+#~ " -raw same as cooked\n"
+#~ " sane same as cread -ignbrk brkint -inlcr -igncr icrnl\n"
+#~ " -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+#~ " -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+#~ " isig icanon iexten echo echoe echok -echonl -noflsh\n"
+#~ " -xcase -tostop -echoprt echoctl echoke, all special\n"
+#~ " characters to their default values.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Kombinované nastavenia:\n"
+#~ "* [-]LCASE ako [-]lcase\n"
+#~ " cbreak ako -icanon\n"
+#~ " -cbreak ako icanon\n"
+#~ " cooked ako brkint ignpar istrip icrnl ixon opost isig\n"
+#~ " znaky icanon, eof a eol sa nastavia na implicitné "
+#~ "hodnoty\n"
+#~ " -cooked ako raw\n"
+#~ " crt ako echoe echoctl echoke\n"
+#~ " dec ako echoe echoctl echoke -ixany intr ^c erase 0177\n"
+#~ " kill ^u\n"
+#~ "* [-]decctlq ako [-]ixany\n"
+#~ " ek znaky erase a kill sa nastavia na implicitné hodnoty\n"
+#~ " evenp ako parenb -parodd cs7\n"
+#~ " -evenp ako -parenb cs8\n"
+#~ "* [-]lcase ako xcase iuclc olcuc\n"
+#~ " litout ako -parenb -istrip -opost cs8\n"
+#~ " -litout ako parenb istrip opost cs7\n"
+#~ " nl ako -icrnl -onlcr\n"
+#~ " -nl ako icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+#~ " oddp ako parenb parodd cs7\n"
+#~ " -oddp ako -parenb cs8\n"
+#~ " [-]parity ako [-]evenp\n"
+#~ " pass8 ako -parenb -istrip cs8\n"
+#~ " -pass8 ako parenb istrip cs7\n"
+#~ " raw ako -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+#~ " -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+#~ " -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+#~ " -raw ako cooked\n"
+#~ " sane ako cread -ignbrk brkint -inlcr -igncr icrnl\n"
+#~ " -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+#~ " -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+#~ " isig icanon iexten echo echoe echok -echonl -noflsh\n"
+#~ " -xcase -tostop -echoprt echoctl echoke, v¹etky ¹peciálne\n"
+#~ " znaky sa nastavia na implicitné hodnoty.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode "
+#~ "numbers\n"
+#~ " FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+#~ " FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+#~ "\n"
+#~ " -b FILE FILE exists and is block special\n"
+#~ " -c FILE FILE exists and is character special\n"
+#~ " -d FILE FILE exists and is a directory\n"
+#~ " -e FILE FILE exists\n"
+#~ " -f FILE FILE exists and is a regular file\n"
+#~ " -g FILE FILE exists and is set-group-ID\n"
+#~ " -h FILE FILE exists and is a symbolic link (same as -L)\n"
+#~ " -G FILE FILE exists and is owned by the effective group ID\n"
+#~ " -k FILE FILE exists and has its sticky bit set\n"
+#~ " -L FILE FILE exists and is a symbolic link (same as -h)\n"
+#~ " -O FILE FILE exists and is owned by the effective user ID\n"
+#~ " -p FILE FILE exists and is a named pipe\n"
+#~ " -r FILE FILE exists and is readable\n"
+#~ " -s FILE FILE exists and has a size greater than zero\n"
+#~ " -S FILE FILE exists and is a socket\n"
+#~ " -t [FD] file descriptor FD (stdout by default) is opened on a "
+#~ "terminal\n"
+#~ " -u FILE FILE exists and its set-user-ID bit is set\n"
+#~ " -w FILE FILE exists and is writable\n"
+#~ " -x FILE FILE exists and is executable\n"
+#~ msgstr ""
+#~ "\n"
+#~ " SÚBOR1 -ef SÚBOR2 SÚBOR1 a SÚBOR2 majú rovnaké èísla zariadenia a "
+#~ "inode\n"
+#~ " SÚBOR1 -nt SÚBOR2 SÚBOR1 je nov¹í (èas zmeny) ako SÚBOR2\n"
+#~ " SÚBOR1 -ot SÚBOR2 SÚBOR1 je star¹í ako SÚBOR2\n"
+#~ "\n"
+#~ " -b SÚBOR SÚBOR existuje a je blokový ¹peciálny súbor\n"
+#~ " -c SÚBOR SÚBOR existuje a je znakový ¹peciálny súbor\n"
+#~ " -d SÚBOR SÚBOR existuje a je adresár\n"
+#~ " -e SÚBOR SÚBOR existuje\n"
+#~ " -f SÚBOR SÚBOR existuje a je be¾ný súbor\n"
+#~ " -g SÚBOR SÚBOR existuje a má nastavný set-group-ID bit\n"
+#~ " -G SÚBOR SÚBOR existuje a je vlastnený efektívnym skupinovým ID\n"
+#~ " -k SÚBOR SÚBOR existuje a má nastavený sticky bit\n"
+#~ " -L SÚBOR SÚBOR existuje a je symbolický odkaz\n"
+#~ " -O SÚBOR SÚBOR existuje a je vlastnený efektívnym ID pou¾ívateµa\n"
+#~ " -p SÚBOR SÚBOR existuje a je pomenovaná rúra\n"
+#~ " -r SÚBOR SÚBOR existuje a je èitateµný\n"
+#~ " -s SÚBOR SÚBOR existuje a má nenulovú då¾ku\n"
+#~ " -S SÚBOR SÚBOR existuje a je socket\n"
+#~ " -t [FD] deskriptor súboru FD (implicitne ¹tandardný výstup)\n"
+#~ " je otvorený na termináli\n"
+#~ " -u SÚBOR SÚBOR existuje a má nastavený set-user-ID bit\n"
+#~ " -w SÚBOR SÚBOR existuje a je zapisovateµný\n"
+#~ " -x SÚBOR SÚBOR existuje a je vykonateµný\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ " -a, --all same as -b -d --login -p -r -t -T -u\n"
+#~ " -b, --boot time of last system boot\n"
+#~ " -d, --dead print dead processes\n"
+#~ " -H, --heading print line of column headings\n"
+#~ " -i, --idle add idle time as HOURS:MINUTES, . or old\n"
+#~ " (deprecated, use -u)\n"
+#~ " --login print system login processes\n"
+#~ " (equivalent to SUS -l)\n"
+#~ " -l, --lookup attempt to canonicalize hostnames via DNS\n"
+#~ " (-l is deprecated, use --lookup)\n"
+#~ " -m only hostname and user associated with stdin\n"
+#~ " -p, --process print active processes spawned by init\n"
+#~ " -q, --count all login names and number of users logged on\n"
+#~ " -r, --runlevel print current runlevel\n"
+#~ " -s, --short print only name, line, and time (default)\n"
+#~ " -t, --time print last system clock change\n"
+#~ " -T, -w, --mesg add user's message status as +, - or ?\n"
+#~ " -u, --users lists users logged in\n"
+#~ " --message same as -T\n"
+#~ " --writable same as -T\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "If FILE is not specified, use %s. %s as FILE is common.\n"
+#~ "If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -H, --heading vypísa» hlavièky ståpcov\n"
+#~ " -i, -u, --idle vypísa» èas neèinnosti ako HOD:MIN, . alebo dávno\n"
+#~ " -l, --lookup pokúsi» sa o kanonizáciu mien prostredníctvom DNS\n"
+#~ " -m iba meno poèítaèa a pou¾ívateµa spojené so ¹tand. "
+#~ "vstupom\n"
+#~ " -q, --count v¹etky mená pou¾ívateµov a ich poèet\n"
+#~ " -s (ignorované)\n"
+#~ " -T, -w, --mesg prida» stav povolenia príjmu správ ako +, - or ?\n"
+#~ " --message ako -T\n"
+#~ " --writable ako -T\n"
+#~ " --help vypísa» túto pomoc a skonèi»\n"
+#~ " --version vypísa» informáciu o verzii a skonèi»\n"
+#~ "\n"
+#~ "Ak SÚBOR nebol zadaný, pou¾íje sa %s. %s ako SÚBOR je obvyklý.\n"
+#~ "Pokiaµ sú zadané ARG1 a ARG2, predpokladá sa -m: `am i' alebo `mom "
+#~ "likes'\n"
+#~ "sú obvyklé.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Repeatedly output a line with all specified STRING(s), or `y'.\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#~ msgid "cannot get processor type"
+#~ msgstr "nie je mo¾né zisti» typ procesora"
+
+#~ msgid "USER"
+#~ msgstr "U®ÍV"
+
+#~ msgid "MESG "
+#~ msgstr "SPR "
+
+#~ msgid "LOGIN-TIME "
+#~ msgstr "ÈAS-PRIHLÁS "
+
+#~ msgid "FROM\n"
+#~ msgstr "Z\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "(obsolete) If -VALUE is used as first OPTION, same as -c VALUE when one "
+#~ "of\n"
+#~ "multipliers bkm follows concatenated, else same as -n VALUE.\n"
+#~ msgstr ""
+#~ " Vypí¹e prvých 10 riadkov ka¾dého súboru na ¹tandardný výstup. S viac "
+#~ "ako\n"
+#~ "jedným súborom, bude pred vypísaním ka¾dého uvedená hlavièka obsahujúca "
+#~ "meno\n"
+#~ "súboru. Ak SÚBOR nebude zadaný alebo bude -, bude èítaný ¹tandardný "
+#~ "vstup.\n"
+#~ "\n"
+#~ " -c, --bytes=VE¥KOS« vypí¹e prvých VE¥KOS« bytov\n"
+#~ " -n, --lines=POÈET vypí¹e prvých POÈET riadkov namiesto prvých "
+#~ "10\n"
+#~ " -q, --quiet, --silent nikdy nevypisuje hlavièky s názvami súborov\n"
+#~ " -v, --verbose vypisuje hlavièky s názvami súborov v¾dy\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+#~ "\n"
+#~ " VE¥KOS« mô¾e ma» násobiacu príponu: b pre 512, k pre 1K, m pre 1M. "
+#~ "Pokiaµ\n"
+#~ "prvý prepínaè bude -HODNOTA a ak bude pou¾itá násobiaca prípona, potom "
+#~ "bude braný\n"
+#~ "ako -c HODNOTA. Inak bude prepínaè braný ako -n HODNOTA.\n"
+
+#, fuzzy
+#~ msgid "warning: `od -w' is obsolete; use `od --width'"
+#~ msgstr "varovanie: chybná ¹írka %lu; namiesto nej pou¾ijem %d"
+
+#, fuzzy
+#~ msgid "warning: `pr -S' is obsolete; use `pr --sep-string'"
+#~ msgstr "varovanie: chybná ¹írka %lu; namiesto nej pou¾ijem %d"
+
+#, fuzzy
+#~ msgid ""
+#~ " +POS1 [-POS2] start a key at POS1, end it before POS2 "
+#~ "(origin 0)\n"
+#~ " Warning: this option is obsolete\n"
+#~ msgstr ""
+#~ " Porovnáva súbory ¥AVÝ_SÚBOR a PRAVÝ_SÚBOR, ktorých riadky sú "
+#~ "usporiadané\n"
+#~ "podµa nejakého kµúèa, riadok po riadku. Výstupom sú tri ståpce, riadky "
+#~ "obsiahnuté\n"
+#~ "iba v µavom súbore, riadky obsiahnuté iba v pravom súbore, riadky "
+#~ "spoloèné\n"
+#~ "obom súborom.\n"
+#~ "\n"
+#~ " -1 neukazuje riadky obsiahnuté iba v µavom súbore\n"
+#~ " -2 neukazuje riadky obsiahnuté iba v pravom súbore\n"
+#~ " -3 neukazuje riadky spoloèné obom súborom\n"
+#~ " --help vypí¹e tuto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#, fuzzy
+#~ msgid "warning: `sort -y' is obsolete; omit `-y'"
+#~ msgstr "varovanie: chybná ¹írka %lu; namiesto nej pou¾ijem %d"
+
+#, fuzzy
+#~ msgid "warning: `tail %s' is obsolete; use -n or -c instead"
+#~ msgstr "varovanie: chybná ¹írka %lu; namiesto nej pou¾ijem %d"
+
+#, fuzzy
+#~ msgid "warning: `uniq %s' is obsolete; use `uniq -s %s' instead"
+#~ msgstr "varovanie: chybná ¹írka %lu; namiesto nej pou¾ijem %d"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ "Vypí¹e CRC kontrolný súèet a då¾ku v bytoch ka¾dého SÚBORu.\n"
+#~ "\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Convert tabs in each FILE to spaces, writing to standard output.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -i, --initial do not convert TABs after non whitespace\n"
+#~ " -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+#~ msgstr ""
+#~ " Konvertuje tabulátory v ka¾dom SÚBORe na medzery, výstup ide na "
+#~ "¹tandardný\n"
+#~ "výstup. Ak nebude SÚBOR zadaný alebo ak bude -, bude èítaný ¹tandardný "
+#~ "vstup.\n"
+#~ "\n"
+#~ " -i, --initial konvertuje iba tabulátory pred prvým znakom na "
+#~ "riadku\n"
+#~ " -t, --tabs=POÈET tabulátor pova¾uje za POÈET (8) medzier\n"
+#~ " -t, --tabs=ZOZNAM pou¾ije èiarkami oddelený zoznam pozícií "
+#~ "tabulátorov\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+#~ "\n"
+#~ "Namiesto -t POÈET alebo -t ZOZNAM mô¾ete pou¾i» -POÈET alebo -ZOZNAM.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Instead of -t NUMBER or -t LIST, -NUMBER or -LIST may be used.\n"
+#~ msgstr ""
+#~ " Konvertuje tabulátory v ka¾dom SÚBORe na medzery, výstup ide na "
+#~ "¹tandardný\n"
+#~ "výstup. Ak nebude SÚBOR zadaný alebo ak bude -, bude èítaný ¹tandardný "
+#~ "vstup.\n"
+#~ "\n"
+#~ " -i, --initial konvertuje iba tabulátory pred prvým znakom na "
+#~ "riadku\n"
+#~ " -t, --tabs=POÈET tabulátor pova¾uje za POÈET (8) medzier\n"
+#~ " -t, --tabs=ZOZNAM pou¾ije èiarkami oddelený zoznam pozícií "
+#~ "tabulátorov\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+#~ "\n"
+#~ "Namiesto -t POÈET alebo -t ZOZNAM mô¾ete pou¾i» -POÈET alebo -ZOZNAM.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Wrap input lines in each FILE (standard input by default), writing to\n"
+#~ "standard output.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --bytes count bytes rather than columns\n"
+#~ " -s, --spaces break at spaces\n"
+#~ " -w, --width=WIDTH use WIDTH columns instead of 80\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ msgstr ""
+#~ " Zalamuje vstupné riadky ka¾dého SÚBORu (implicitne ¹tandardného "
+#~ "vstupu),\n"
+#~ "zapisujúc výstup na ¹tandardný výstup.\n"
+#~ "\n"
+#~ " -b, --bytes pre zalamovanie poèíta bajty na riadku namiesto "
+#~ "ståpcov\n"
+#~ " -s, --spaces zalamuje riadky v medzerách\n"
+#~ " -w, --width=©ÍRKA pou¾íva ©ÍRKA ståpcov namiesto 80\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+#~ "\n"
+#~ "V ståpcoch nie sú zahrnuté kontrolné znaky na rozdiel od bytov.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Write lines consisting of the sequentially corresponding lines from\n"
+#~ "each FILE, separated by TABs, to standard output.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+#~ " -s, --serial paste one file at a time instead of in "
+#~ "parallel\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ " Vypí¹e riadky skladajúce sa z riadkov jednotlivých SÚBORov, v zadanom "
+#~ "poradí,\n"
+#~ "a oddelených tabulátormi na ¹tandardný výstup. Pokiaµ SÚBOR nebude "
+#~ "zadaný\n"
+#~ "alebo bude -, bude èítaný ¹tandardný vstup.\n"
+#~ "\n"
+#~ " -d, --delimiters=ZOZNAM pou¾ije znaky zo ZOZNAMU ako oddeµovaèe "
+#~ "(namiesto TAB)\n"
+#~ " -s, --serial vypí¹e súbory za sebou namiesto vedµa seba\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -NUMBER same as -l NUMBER\n"
+#~ " --verbose print a diagnostic to standard error just\n"
+#~ " before each output file is opened\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+#~ msgstr ""
+#~ " Rozdelí SÚBOR do súborov PREDPONAaa, PREDPONAab, ... s pevnou då¾kou.\n"
+#~ "Implicitná PREDPONA je `x'. Pokiaµ SÚBOR nebude zadaný alebo bude -, bude "
+#~ "èítaný\n"
+#~ "¹tandardný vstup.\n"
+#~ "\n"
+#~ " -b, --bytes=VE¥KOS« zapí¹e VE¥KOST bytov do výstupného súboru\n"
+#~ " -C, --line-bytes=VE¥KOS« zapí¹e najviac VE¥KOST bytov na výstupný "
+#~ "riadok\n"
+#~ " -l, --lines=POÈET zapí¹e POÈET riadkov do výstupného súboru\n"
+#~ " -POÈET to isté ako -l POÈET\n"
+#~ " --verbose pred otvorením ka¾dého výstupného súboru "
+#~ "vypí¹e\n"
+#~ " o tom oznámenie na ¹tandardný výstup\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenei verzie a skonèí\n"
+#~ "\n"
+#~ "VE¥KOS« mô¾e ma» násobiacu príponu: b - 512, k - 1024, m - 1 Mega.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Write each FILE to standard output, last line first.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --before attach the separator before instead of after\n"
+#~ msgstr ""
+#~ " Vypí¹e ka¾dý SÚBOR na ¹tandardný výstup. Posledný riadok ako prvý.\n"
+#~ "Pokiaµ SÚBOR nebude zadaný alebo bude -, bude èítaný ¹tandardný vstup.\n"
+#~ "\n"
+#~ " -b, --before pripojí oddeµovaè riadkov pred riadky "
+#~ "namiesto\n"
+#~ " za ne\n"
+#~ " -r, --regex interpretuje oddeµovaè ako regulárny výraz\n"
+#~ " -s, --separator=RE«AZEC pou¾ije RE«AZEC ako oddeµovaè namiesto nového "
+#~ "riadku\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print the last %d lines of each FILE to standard output.\n"
+#~ "With more than one FILE, precede each with a header giving the file "
+#~ "name.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " --retry keep trying to open a file even if it is\n"
+#~ " inaccessible when tail starts or if it "
+#~ "becomes\n"
+#~ " inaccessible later -- useful only with -f\n"
+#~ msgstr ""
+#~ " Vypí¹e prvých 10 riadkov ka¾dého súboru na ¹tandardný výstup. S viac "
+#~ "ako\n"
+#~ "jedným súborom, bude pred vypísaním ka¾dého uvedená hlavièka obsahujúca "
+#~ "meno\n"
+#~ "súboru. Ak SÚBOR nebude zadaný alebo bude -, bude èítaný ¹tandardný "
+#~ "vstup.\n"
+#~ "\n"
+#~ " -c, --bytes=VE¥KOS« vypí¹e prvých VE¥KOS« bytov\n"
+#~ " -n, --lines=POÈET vypí¹e prvých POÈET riadkov namiesto prvých "
+#~ "10\n"
+#~ " -q, --quiet, --silent nikdy nevypisuje hlavièky s názvami súborov\n"
+#~ " -v, --verbose vypisuje hlavièky s názvami súborov v¾dy\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+#~ "\n"
+#~ " VE¥KOS« mô¾e ma» násobiacu príponu: b pre 512, k pre 1K, m pre 1M. "
+#~ "Pokiaµ\n"
+#~ "prvý prepínaè bude -HODNOTA a ak bude pou¾itá násobiaca prípona, potom "
+#~ "bude braný\n"
+#~ "ako -c HODNOTA. Inak bude prepínaè braný ako -n HODNOTA.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ " -t, --tabs=NUMBER have tabs NUMBER characters apart instead of 8\n"
+#~ " -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Instead of -t NUMBER or -t LIST, -NUMBER or -LIST may be used.\n"
+#~ msgstr ""
+#~ " V ka¾dom SÚBORe konvertuje medzery na tabulátory a výsledok vypisuje\n"
+#~ "na ¹tandardný výstup. Ak nebude SÚBOR zadaný alebo bude -, bude èítaný\n"
+#~ "¹tandardný vstup.\n"
+#~ "\n"
+#~ " -a, --all konvertuje v¹etky medzery, namiesto iba úvodných\n"
+#~ " -t, --tabs=POÈET nastaví tabulátor na POÈET medzier (8)\n"
+#~ " -t, --tabs=ZOZNAM pou¾ije èiarkami oddelený zoznam pre pozície "
+#~ "tabulátorov\n"
+#~ " --help vypí¹e tuto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+#~ "\n"
+#~ "Namiesto -t POÈET alebo -t ZOZNAM je mo¾né pou¾i» -POÈET alebo -ZOZNAM.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Output pieces of FILE separated by PATTERN(s) to files `xx01', "
+#~ "`xx02', ...,\n"
+#~ "and output byte counts of each piece to standard output.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --suffix-format=FORMAT use sprintf FORMAT instead of %%d\n"
+#~ " -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+#~ " -k, --keep-files do not remove output files on errors\n"
+#~ " -n, --digits=DIGITS use specified number of digits instead of 2\n"
+#~ " -s, --quiet, --silent do not print counts of output file sizes\n"
+#~ " -z, --elide-empty-files remove empty output files\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Read standard input if FILE is -. Each PATTERN may be:\n"
+#~ "\n"
+#~ " INTEGER copy up to but not including specified line number\n"
+#~ " /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+#~ " %%REGEXP%%[OFFSET] skip to, but not including a matching line\n"
+#~ " {INTEGER} repeat the previous pattern specified number of "
+#~ "times\n"
+#~ " {*} repeat the previous pattern as many times as "
+#~ "possible\n"
+#~ "\n"
+#~ "A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+#~ msgstr ""
+#~ " Rozdeµuje SÚBOR v miestach VZORu(ov) do súborov `xx01', `xx02', ...\n"
+#~ "a vypisuje veµkosti ka¾dého súboru na ¹tandardný výstup.\n"
+#~ "\n"
+#~ " -b, --suffix-format=FORMÁT pou¾ije sprintf FORMÁT namiesto %%d\n"
+#~ " -f, --prefix=PREDPONA pou¾ije PREDPONU namiesto `xx'\n"
+#~ " -k, --keep-files nema¾e výstupné súbory pri chybách\n"
+#~ " -n, --digits=ÈÍSLIC pou¾ije zadaný poèet èíslic namiesto 2\n"
+#~ " -s, --quiet, --silent nevypisuje veµkosti výstupných súborov\n"
+#~ " -z, --elide-empty-files ma¾e prázdne výstupné súbory\n"
+#~ " --help vypí¹e tuto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+#~ "\n"
+#~ "Ak SÚBOR bude -, bude èítaný ¹tandardný vstup. Ka¾dý VZOR mô¾e by»:\n"
+#~ "\n"
+#~ " CELÉ_ÈÍSLO kopíruje v¹etko a¾ do riadku tohto èísla, ale bez "
+#~ "neho\n"
+#~ " /REGVÝR/[POSUN] kopíruje v¹etko do riadku zodpovedajúceho "
+#~ "regulárnemu výrazu,\n"
+#~ " ale bez neho\n"
+#~ " %%REGVÝR%%[POSUN] preskoèí v¹etko a¾ do riadku zodpovedajúceho "
+#~ "regulárnemu\n"
+#~ " výrazu, ale bez neho\n"
+#~ " {CELÉ_ÈÍSLO} opakuje predchádzajúci vzor toµkokrát, koµko je tu "
+#~ "uvedené\n"
+#~ " {*} opakuje predchádzajúci vzor toµkokrát, koµko je to "
+#~ "mo¾né\n"
+#~ "\n"
+#~ " POSUN musí zaèína» s `+' alebo `-', nasledovaný celým kladným èíslom. "
+#~ "Posun\n"
+#~ "urèuje koµko znakov se e¹te zahrnie do bloku v mieste vyhodnotenia "
+#~ "REGVÝR.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print selected parts of lines from each FILE to standard output.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --bytes=LIST output only these bytes\n"
+#~ " -c, --characters=LIST output only these characters\n"
+#~ " -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+#~ " -f, --fields=LIST output only these fields; also print any line\n"
+#~ " that contains no delimiter character, unless\n"
+#~ " the -s option is specified\n"
+#~ " -n (ignored)\n"
+#~ " -s, --only-delimited do not print lines not containing delimiters\n"
+#~ " --output-delimiter=STRING use STRING as the output delimiter\n"
+#~ " the default is to use the input delimiter\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+#~ "range, or many ranges separated by commas. Each range is one of:\n"
+#~ "\n"
+#~ " N N'th byte, character or field, counted from 1\n"
+#~ " N- from N'th byte, character or field, to end of line\n"
+#~ " N-M from N'th to M'th (included) byte, character or field\n"
+#~ " -M from first to M'th (included) byte, character or field\n"
+#~ "\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ msgstr ""
+#~ "Vypí¹e iba vybrané èasti riadkov z ka¾dého SÚBORu na ¹tandardný výstup.\n"
+#~ "\n"
+#~ " -b, --bytes=ZOZNAM vypí¹e iba tieto byty\n"
+#~ " -c, --characters=ZOZNAM vypí¹e iba tieto znaky\n"
+#~ " -d, --delimiter=ODDE¥OVAÈ ako oddeµovaè pou¾ije ODDE¥OVAÈ (namiesto "
+#~ "TAB)\n"
+#~ " -f, --fields=ZOZNAM vypí¹e iba tieto polo¾ky; pokiaµ nie je "
+#~ "zadaná\n"
+#~ " voµba -s, vypí¹e aj v¹etky riadky "
+#~ "neobsahujúce\n"
+#~ " ¾iadny oddeµovaè\n"
+#~ " -n (ignorované)\n"
+#~ " -s, --only-delimited potlaèí riadky neobsahujúce znak oddeµovaèa\n"
+#~ " --output-delimiter=RE«AZEC RE«AZEC sa pou¾ije ako výstupný "
+#~ "oddeµovaè.\n"
+#~ " Implicitne je ako tento oddeµovaè pou¾itý "
+#~ "vstupný\n"
+#~ " oddeµovaè.\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+#~ "\n"
+#~ "Pou¾ite jeden a iba jeden z prepínaèov -b, -c a -f. Ka¾dý zoznam sa "
+#~ "skladá\n"
+#~ "z jedného rozsahu alebo z viac rozsahov oddelených èiarkami. Ka¾dý rozsah "
+#~ "mô¾e\n"
+#~ "by»:\n"
+#~ "\n"
+#~ " N N-tý byt, znak alebo polo¾ka, poèítané od 1\n"
+#~ " N- od N-tého bytu, znaku alebo polo¾ky, do konca riadku\n"
+#~ " N-M od N-tého do M-tého (vrátane) bytu, znaku alebo polo¾ky\n"
+#~ " -M od prvního do M-tého (vrátane) bytu, znaku alebo polo¾ky\n"
+#~ "\n"
+#~ "Ak SÚBOR nie je zadaný alebo je `-', bude èítaný zo ¹tandardného vstupu.\n"
+
+#~ msgid ""
+#~ "For each pair of input lines with identical join fields, write a line to\n"
+#~ "standard output. The default join field is the first, delimited\n"
+#~ "by whitespace. When FILE1 or FILE2 (not both) is -, read standard "
+#~ "input.\n"
+#~ "\n"
+#~ " -a SIDE print unpairable lines coming from file SIDE\n"
+#~ " -e EMPTY replace missing input fields with EMPTY\n"
+#~ " -i, --ignore-case ignore differences in case when comparing fields\n"
+#~ " -j FIELD (obsolescent) equivalent to `-1 FIELD -2 FIELD'\n"
+#~ " -j1 FIELD (obsolescent) equivalent to `-1 FIELD'\n"
+#~ " -j2 FIELD (obsolescent) equivalent to `-2 FIELD'\n"
+#~ " -o FORMAT obey FORMAT while constructing output line\n"
+#~ " -t CHAR use CHAR as input and output field separator\n"
+#~ " -v SIDE like -a SIDE, but suppress joined output lines\n"
+#~ " -1 FIELD join on this FIELD of file 1\n"
+#~ " -2 FIELD join on this FIELD of file 2\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+#~ "else fields are separated by CHAR. Any FIELD is a field number counted\n"
+#~ "from 1. FORMAT is one or more comma or blank separated specifications,\n"
+#~ "each being `SIDE.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+#~ "the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+#~ "separated by CHAR.\n"
+#~ msgstr ""
+#~ " Pre ka¾dý pár vstupných riadkov s rovnakými prepojovacími polo¾kami, "
+#~ "zapí¹e\n"
+#~ "riadok na ¹tandardný výstup. Implicitne je prepojovacou polo¾kou polo¾ka "
+#~ "prvá\n"
+#~ "a oddeµovaè je medzera. Pokiaµ SÚBOR1 alebo SÚBOR2 bude -, potom tento "
+#~ "bude\n"
+#~ "èítaný zo ¹tandardného vstupu.\n"
+#~ "\n"
+#~ " -a STRANA vypí¹e nepárové riadky pochádzajúce zo súboru STRANA\n"
+#~ " -e PRÁZDN nahradí chýbajúce vstupné polo¾ky znakom PRÁZDN\n"
+#~ " -i, --ignore-case pri porovnávaní polo¾iek ignoruje rozdiely medzi "
+#~ "malými\n"
+#~ " a veµkými písmenami\n"
+#~ " -j POLO®KA (zastarané) rovnocenné s `-1 POLE -2 POLE'\n"
+#~ " -j1 POLO®KA (zastarané) rovnocenné s `-1 POLE'\n"
+#~ " -j2 POLO®KA (zastarané) rovnocenné s `-2 POLE'\n"
+#~ " -o FORMÁT riadi sa FORMÁTom pri tvorbe výstupného riadku\n"
+#~ " -t ZNAK pou¾ije ZNAK ako oddeµovaè polo¾iek na vstupe aj "
+#~ "výstupe.\n"
+#~ " -v STRANA ako -a STRANA, ale bez spojených riadkov.\n"
+#~ " -1 POLO®KA spája pomocou tejto POLO®KY súboru 1\n"
+#~ " -2 POLO®KA spája pomocou tejto POLO®KY súboru 2\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+#~ "\n"
+#~ " Pokiaµ prepínaè -t ZNAK nebude zadaný, ako oddeµovaè bude pou¾itá "
+#~ "medzera\n"
+#~ "a prázdne polo¾ky na zaèiatku riadku budú ignorované. Inak bude "
+#~ "oddeµovaèom\n"
+#~ "polo¾iek ZNAK. ¥ubovoµná POLO®KA je poradie polo¾ky poèítané od 1. FORMÁT "
+#~ "je\n"
+#~ "jedna alebo viac èiarkami alebo medzerami oddelených popisovaèov, ka¾dý "
+#~ "mô¾e by»\n"
+#~ "'STRANA.POLO®KA' alebo '0'. Implicitný FORMÁT vypisuje prepojovaciu "
+#~ "polo¾ku,\n"
+#~ "zbytok polo¾iek zo súboru 1, zbytok polo¾iek zo súboru 2. V¹etky sú "
+#~ "oddelené\n"
+#~ "znakom ZNAK.\n"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION] [FILE]...\n"
+#~ " or: %s [OPTION] --check [FILE]\n"
+#~ "Print or check %s (%d-bit) checksums.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ "The following two options are useful only when verifying checksums:\n"
+#~ " --status don't output anything, status code shows "
+#~ "success\n"
+#~ " -w, --warn warn about improperly formated checksum lines\n"
+#~ "\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "The sums are computed as described in %s. When checking, the input\n"
+#~ "should be a former output of this program. The default mode is to print\n"
+#~ "a line with checksum, a character indicating type (`*' for binary, ` ' "
+#~ "for\n"
+#~ "text), and name for each FILE.\n"
+#~ msgstr ""
+#~ "Pou¾itie: %s [PREPÍNAÈ] [SÚBOR]...\n"
+#~ " alebo: %s [PREPÍNAÈ] --check [SÚBOR]\n"
+#~ "\n"
+#~ " Vypí¹e alebo kontroluje %s (%d-bitové) kontrolné súèty. Pokiaµ SÚBOR\n"
+#~ "nebude zadaný alebo bude -, bude èítaný ¹tandardný vstup.\n"
+#~ "\n"
+#~ " -b, --binary èíta súbory v binárnom móde (implicitné\n"
+#~ " v DOSe/Windows)\n"
+#~ " -c, --check porovnáva %s súèty so zadaným zoznamom\n"
+#~ " -t, --text èíta súbory v textovom móde (implicitné)\n"
+#~ "\n"
+#~ "Nasledujúce prepínaèe sú u¾itoèné iba pri overovaní kontrolných súètov:\n"
+#~ " --status nevypisuje niè, status kód ukazuje úspe¹nos»\n"
+#~ " -w, --warn varovanie o nesprávne formátovaných riadkoch\n"
+#~ " kontrolných súètov\n"
+#~ "\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+#~ "\n"
+#~ " Súèty sú poèítané podµa definície v %s. Pri testovaní by vstup mal\n"
+#~ "by» skor¹ím výstupom tohoto programu. Implicitné nastavenie je výpis "
+#~ "jedného\n"
+#~ "riadku pre ka¾dý SÚBOR. Formát riadku je kontrolný súèet, znak indikujúci "
+#~ "typ\n"
+#~ "('*' pre binárny, ' ' pre textový) a meno SÚBORu.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Write each FILE to standard output, with line numbers added.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+#~ " -d, --section-delimiter=CC use CC for separating logical pages\n"
+#~ " -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+#~ " -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+#~ " -i, --page-increment=NUMBER line number increment at each line\n"
+#~ " -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+#~ "one\n"
+#~ " -n, --number-format=FORMAT insert line numbers according to "
+#~ "FORMAT\n"
+#~ " -p, --no-renumber do not reset line numbers at logical "
+#~ "pages\n"
+#~ " -s, --number-separator=STRING add STRING after (possible) line "
+#~ "number\n"
+#~ " -v, --first-page=NUMBER first line number on each logical page\n"
+#~ " -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+#~ "two delimiter characters for separating logical pages, a missing\n"
+#~ "second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+#~ "\n"
+#~ " a number all lines\n"
+#~ " t number only nonempty lines\n"
+#~ " n number no lines\n"
+#~ " pREGEXP number only lines that contain a match for REGEXP\n"
+#~ "\n"
+#~ "FORMAT is one of:\n"
+#~ "\n"
+#~ " ln left justified, no leading zeros\n"
+#~ " rn right justified, no leading zeros\n"
+#~ " rz right justified, leading zeros\n"
+#~ "\n"
+#~ msgstr ""
+#~ " Prepí¹e ka¾dý SÚBOR na ¹tandardný výstup a ku ka¾dému riadku pridá "
+#~ "jeho\n"
+#~ "èíslo. Pokiaµ SÚBOR nebude zadaný alebo bude -, bude èítaný ¹tandardný "
+#~ "vstup.\n"
+#~ "\n"
+#~ " -b, --body-numbering=©TÝL pou¾ije ©TÝL na èíslovanie riadkov v "
+#~ "tele\n"
+#~ " -d, --section-delimiter=CC pou¾ije CC pre oddelenie logických "
+#~ "stránok\n"
+#~ " -f, --footer-numbering=©TÝL pou¾ije ©TÝL na èíslovanie riadkov v "
+#~ "pätièke\n"
+#~ " -h, --header-numbering=©TÝL pou¾ije ©TÝL na èíslovanie riadkov v "
+#~ "hlavièke\n"
+#~ " -i, --page-increment=ÈÍSLO o koµko zvy¹ova» èíslo riadkov\n"
+#~ " -l, --join-blank-lines=POÈET berie POÈET prázdnych riadkov ako "
+#~ "jeden\n"
+#~ " -n, --number-format=FORMÁT èísla riadkov vypisuje podµa FORMÁTu\n"
+#~ " -p, --no-renumber nenuluje èíslo riadku na zaèiatku "
+#~ "logickej\n"
+#~ " stránky\n"
+#~ " -s, --number-separator=RE«AZEC pridá re»azec za èíslo riadku "
+#~ "(oddeµovaè\n"
+#~ " èísla od ïaµ¹ieho riadku)\n"
+#~ " -v, --first-page=ÈÍSLO èíslo prvého riadku na logickej "
+#~ "stránke\n"
+#~ " -w, --number-width=POÈET èísla riadkov vypisuje na POÈET miest\n"
+#~ " --help vypí¹e tuto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+#~ "\n"
+#~ " Implicitné sú parametre -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC sú\n"
+#~ "dva znaky, ktoré sú pou¾ité na oddeµovanie logických stránok. Pre zadanie "
+#~ "'\\'\n"
+#~ "je treba napísa» '\\\\'. ©TÝL je jeden z:\n"
+#~ "\n"
+#~ " a èísluje v¹etky riadky\n"
+#~ " t èísluje iba neprázdne riadky\n"
+#~ " n riadky neèísluje\n"
+#~ " pREGVÝR èísluje iba riadky vyhovujúce REGVÝR\n"
+#~ "\n"
+#~ "FORMÁT je jeden z:\n"
+#~ "\n"
+#~ " ln zarovnáva vµavo, bez úvodných núl\n"
+#~ " rn zarovnáva vpravo, bez úvodných núl\n"
+#~ " rz zarovnáva vpravo, s úvodnými nulami\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Write an unambiguous representation, octal bytes by default,\n"
+#~ "of FILE to standard output. With more than one FILE argument,\n"
+#~ "concatenate them in the listed order to form the input.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -A, --address-radix=RADIX decide how file offsets are printed\n"
+#~ " -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+#~ " -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+#~ " -s, --strings[=BYTES] output strings of at least BYTES graphic "
+#~ "chars\n"
+#~ " -t, --format=TYPE select output format or formats\n"
+#~ " -v, --output-duplicates do not use * to mark line suppression\n"
+#~ " -w, --width[=BYTES] output BYTES bytes per output line\n"
+#~ " --traditional accept arguments in pre-POSIX form\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "Pre-POSIX format specifications may be intermixed, they accumulate:\n"
+#~ " -a same as -t a, select named characters\n"
+#~ " -b same as -t oC, select octal bytes\n"
+#~ " -c same as -t c, select ASCII characters or backslash escapes\n"
+#~ " -d same as -t u2, select unsigned decimal shorts\n"
+#~ " -f same as -t fF, select floats\n"
+#~ " -h same as -t x2, select hexadecimal shorts\n"
+#~ " -i same as -t d2, select decimal shorts\n"
+#~ " -l same as -t d4, select decimal longs\n"
+#~ " -o same as -t o2, select octal shorts\n"
+#~ " -x same as -t x2, select hexadecimal shorts\n"
+#~ msgstr ""
+#~ " Vypí¹e SÚBOR v zadanom formáte, implicitný je osmièkový výpis, na\n"
+#~ "¹tandardný výstup. Pokiaµ SÚBOR nebude zadaný alebo bude -, bude èítaný\n"
+#~ "¹tandardný vstup.\n"
+#~ "\n"
+#~ " -A, --address-radix=ZÁKLAD pozíciu v súbore vypisuje v zadanej "
+#~ "sústave\n"
+#~ " -j, --skip-bytes=POÈET preskoèí prvých POÈET bytov ka¾dého súboru\n"
+#~ " -N, --read-bytes=POÈET vypí¹e iba POÈET bytov ka¾dého súboru\n"
+#~ " -s, --strings[=POÈET] vypí¹e iba re»azce obsahujúce najmenej "
+#~ "POÈET\n"
+#~ " znakov\n"
+#~ " -t, --format=TYP vyberie výstupný formát alebo formáty\n"
+#~ " -v, --output-duplicates vypisuje aj za sebou sa opakujúce rovnaké "
+#~ "riadky\n"
+#~ " -w, --width[=POÈET] vypí¹e POÈET bytov na výstupný riadok\n"
+#~ " --traditional akceptuje argumenty v pred-POSIXovom tvare\n"
+#~ " --help vypí¹e tuto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+#~ "\n"
+#~ "Pred-POSIXové formáty mô¾u by» pou¾ívané spolu s POSIXovými, to zahàòa:\n"
+#~ " -a rovnaké ako -t a, názvy znakov\n"
+#~ " -b rovnaké ako -t oC, byty osmièkovo\n"
+#~ " -c rovnaké ako -t c, ASCII znaky alebo kódy znakov so spätným "
+#~ "lomítkom\n"
+#~ " -d rovnaké ako -t u2, desiatkové bez znamienka (dvoj bytové - short)\n"
+#~ " -f rovnaké ako -t fF, èísla s plávajúcou radovou èiarkou\n"
+#~ " -h rovnaké ako -t x2, ¹estnástkové (dvoj bytové - short)\n"
+#~ " -i rovnaké ako -t d2, desiatkové so znamienkom (dvoj bytové - short)\n"
+#~ " -l rovnaké ako -t d4, desiatkové so znamienkom (¹tvor bytové - long)\n"
+#~ " -o rovnaké ako -t o2, osmièkové (dvoj bytové - short)\n"
+#~ " -x rovnaké ako -t x2, ¹estnástkové (dvoj bytové - short)\n"
+
+# `maybe' or `may be'? - rzm
+#~ msgid ""
+#~ "\n"
+#~ "For older syntax (second call format), OFFSET means -j OFFSET. LABEL\n"
+#~ "is the pseudo-address at first byte printed, incremented when dump is\n"
+#~ "progressing. For OFFSET and LABEL, a 0x or 0X prefix indicates\n"
+#~ "hexadecimal, suffixes maybe . for octal and b multiply by 512.\n"
+#~ "\n"
+#~ "TYPE is made up of one or more of these specifications:\n"
+#~ "\n"
+#~ " a named character\n"
+#~ " c ASCII character or backslash escape\n"
+#~ " d[SIZE] signed decimal, SIZE bytes per integer\n"
+#~ " f[SIZE] floating point, SIZE bytes per integer\n"
+#~ " o[SIZE] octal, SIZE bytes per integer\n"
+#~ " u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+#~ " x[SIZE] hexadecimal, SIZE bytes per integer\n"
+#~ "\n"
+#~ "SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+#~ "sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+#~ "sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+#~ "for sizeof(double) or L for sizeof(long double).\n"
+#~ "\n"
+#~ "RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+#~ "BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+#~ "with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix "
+#~ "to\n"
+#~ "any type adds a display of printable characters to the end of each line\n"
+#~ "of output. -s without a number implies 3. -w without a number implies "
+#~ "32.\n"
+#~ "By default, od uses -A o -t d2 -w 16.\n"
+#~ msgstr ""
+#~ "\n"
+#~ " Pri starej syntaxi (druhý spôsob volania), POSUN znamená -j POSUN. "
+#~ "NÁVESTIE\n"
+#~ "je pseudo-adresa vypísaná pri prvom byte a zväè¹ovaná behom výpisu. "
+#~ "POSUN\n"
+#~ "a NÁVESTIE sú brané ako osmièkové èísla. Pokiaµ èíslo zaèína 0x alebo "
+#~ "0X,\n"
+#~ "oznaèuje ¹estnástkové èíslo. Pokiaµ èíslo konèí desatinnou èiarkou '.', "
+#~ "oznaèuje\n"
+#~ "desiatkové èíslo. Pokiaµ èíslo konèí znakom 'b', znamená to, ¾e bude "
+#~ "násobené\n"
+#~ "512-timi.\n"
+#~ "\n"
+#~ "TYP je tvorené z jednej alebo viacerých týchto mo¾ností:\n"
+#~ "\n"
+#~ " a názvy znakov\n"
+#~ " c ASCII znaky alebo kódy znakov so spätným lomítkom\n"
+#~ " d[BYTOV] desiatkové so znamienkovm s poètom BYTOV na èíslo\n"
+#~ " f[BYTOV] s plávajúcou radovou èiarkou s poètom BYTOV na èíslo\n"
+#~ " o[BYTOV] osmièkové s poètom BYTOV na èíslo\n"
+#~ " u[BYTOV] desiatkové bez znamienka s poètom BYTOV na èíslo\n"
+#~ " x[BYTOV] ¹estnástkové s poètom BYTOV na èíslo\n"
+#~ "\n"
+#~ " BYTOV je èíslo. Pre TYPy d, o, u, x mô¾e by» BYTOV tie¾ C ako\n"
+#~ "sizeof(char), S ako sizeof(short), I ako sizeof(int) alebo L ako\n"
+#~ "sizeof(long). Pokiaµ je TYP f, BYTOV mô¾e by» tie¾ F ako sizeof(float),\n"
+#~ "D ako sizeof(double) alebo L ako sizeof(long double).\n"
+#~ "\n"
+#~ " ZÁKLAD je d pre dekadické, o - osmièkové, x - ¹estnástkové, n - "
+#~ "¾iadne.\n"
+#~ "POÈET je braný ako ¹estnástkové èíslo ak zaèína 0x alebo 0X, ak konèí "
+#~ "znakom\n"
+#~ "'b', bude násobeno 512-ti, k - 1024-mi, m - 1048576-ti. -s bez zadaného "
+#~ "èísla\n"
+#~ "je brané ako -s 3. -w bez èísla je brané ako -w 32. Implicitné sú tieto\n"
+#~ "hodnoty -A o -t d2 -w 16.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Paginate or columnate FILE(s) for printing.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+#~ " begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+#~ " -COLUMN, --columns=COLUMN\n"
+#~ " produce COLUMN-column output and print columns down,\n"
+#~ " unless -a is used. Balance number of lines in the\n"
+#~ " columns on each page.\n"
+#~ " -a, --across print columns across rather than down, used together\n"
+#~ " with -COLUMN\n"
+#~ " -c, --show-control-chars\n"
+#~ " use hat notation (^G) and octal backslash notation\n"
+#~ " -d, --double-space\n"
+#~ " double space the output\n"
+#~ " -D, --date-format=FORMAT\n"
+#~ " use FORMAT for the header date\n"
+#~ " -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+#~ " expand input CHARs (TABs) to tab WIDTH (8)\n"
+#~ " -F, -f, --form-feed\n"
+#~ " use form feeds instead of newlines to separate pages\n"
+#~ " (by a 3-line page header with -F or a 5-line header\n"
+#~ " and trailer without -F)\n"
+#~ msgstr ""
+#~ "Nastránkuje alebo naståpcuje SÚBOR(y) pre tlaè.\n"
+#~ "\n"
+#~ " +PRVÁ_STRANA[:POSLEDNÁ_STRANA], --pages=PRVÁ_STRANA[:POSLEDNÁ_STRANA]\n"
+#~ " zaène [skonèí] výpis na strane PRVNÁ_[POSLEDNÁ_]"
+#~ "STRANA\n"
+#~ " -STÅPCOV, --columns=STÅPCOV\n"
+#~ " produkuje STÅPCOV-ståpcový výstup. Riadky vypisuje\n"
+#~ " na stránku do ståpcov, pokiaµ nie je ¹pecifikovaná\n"
+#~ " voµba -a. Vyva¾uje poèet riadkov v ståpcoch na "
+#~ "ka¾dej\n"
+#~ " strane.\n"
+#~ " -a, --across vypisuje ståpce vodorovne miesto nadol. Pou¾íva sa "
+#~ "spolu\n"
+#~ " s prepínaèom -STÅPCOV.\n"
+#~ " -c, --show-control-chars\n"
+#~ " pou¾ije strie¹kovú notáciu (^G) a osmièkovú so "
+#~ "spätným lomítkom\n"
+#~ " -d, --double-space\n"
+#~ " za ka¾dý riadok vlo¾í jeden prázdny\n"
+#~ " -D, --date-format=FORMÁT\n"
+#~ " pou¾ije FORMÁT pre dátum v hlavièke\n"
+#~ " -e[ZNAK[©ÍRKA]], --expand-tabs[=ZNAK[©ÍRKA]]\n"
+#~ " expanduje vstupné ZNAKy(tabulátory) na ©ÍRKA(8) "
+#~ "medzier\n"
+#~ " -F, -f, --form-feed\n"
+#~ " pou¾ije znak novej strany (FF) namiesto nových "
+#~ "riadkov (CR)\n"
+#~ " na oddelenie stránok (a 3-riadkovú hlavièku strany "
+#~ "pri -F\n"
+#~ " alebo 5-riadkovú hlavièku s pätièkou bez -F).\n"
+
+#~ msgid ""
+#~ " -h HEADER, --header=HEADER\n"
+#~ " use a centered HEADER instead of filename in page "
+#~ "header,\n"
+#~ " -h \"\" prints a blank line, don't use -h\"\"\n"
+#~ " -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+#~ " replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+#~ " -J, --join-lines merge full lines, turns off -W line truncation, no "
+#~ "column\n"
+#~ " alignment, -S[STRING] sets separators\n"
+#~ " -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+#~ " set the page length to PAGE_LENGTH (66) lines\n"
+#~ " (default number of lines of text 56, and with -F 63)\n"
+#~ " -m, --merge print all files in parallel, one in each column,\n"
+#~ " truncate lines, but join lines of full length with -"
+#~ "J\n"
+#~ " -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+#~ " number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+#~ " default counting starts with 1st line of input file\n"
+#~ " -N NUMBER, --first-line-number=NUMBER\n"
+#~ " start counting with NUMBER at 1st line of first\n"
+#~ " page printed (see +FIRST_PAGE)\n"
+#~ " -o MARGIN, --indent=MARGIN\n"
+#~ " offset each line with MARGIN (zero) spaces, do not\n"
+#~ " affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+#~ " -r, --no-file-warnings\n"
+#~ " omit warning when a file cannot be opened\n"
+#~ msgstr ""
+#~ " -h HLAVIÈKA, --header=HLAVIÈKA\n"
+#~ " pou¾ije vycentrovanú HLAVIÈKU namiesto mena súboru.\n"
+#~ " Pri dlhej hlavièke bude µavá strana orezaná.\n"
+#~ " -h \"\" vypí¹e prázdnu hlavièku. Nepou¾ívajte -h\"\"\n"
+#~ " -i[ZNAK[©ÍRKA]], --output-tabs[=ZNAK[©ÍRKA]]\n"
+#~ " nahradí ©ÍRKA (8) medzier ZNAKom (tabulátorom)\n"
+#~ " -J, --join-lines spája celé riadky, vyradí -W skracovanie riadkov,\n"
+#~ " ru¹í ståpce, -S[RE«AZEC] nastaví oddeµovaè\n"
+#~ " -l DÅ®KA_STRÁNKY, --length=DÅ®KA_STRÁNKY\n"
+#~ " nastaví då¾ku strany na DÅ®KA_STRÁNKY riadkov.\n"
+#~ " (implicitne je 56 riadkov textu, s -F 63)\n"
+#~ " -m, --merge vypí¹e súbory vedµa seba, ka¾dý v jednom ståpci,\n"
+#~ " skracuje riadky, ale spolu s prepínaèom -J ich "
+#~ "vypisuje celé\n"
+#~ " -n[ODDE¥[ÈÍSLIC]], --number-lines[=ODDE¥[ÈÍSLIC]]\n"
+#~ " èísluje riadky, vypisuje ÈÍSLIC (5) èíslic a potom "
+#~ "ODDE¥\n"
+#~ " (TAB). Implicitne poèítanie zaèína od jednotky prvým\n"
+#~ " vstupným riadkom\n"
+#~ " -N ÈÍSLO, --first-line-number=ÈÍSLO\n"
+#~ " zaène poèítanie èíslom ÈÍSLO prvého riadku prvej\n"
+#~ " vypisovanej strany (viï +PRVÁ_STRANA)\n"
+#~ " -o OKRAJ, --indent=OKRAJ\n"
+#~ " odsadzuje ka¾dý riadok s OKRAJ (nula) medzerami,\n"
+#~ " neovplyvní -w alebo -W, OKRAJ bude pridaný do "
+#~ "©ÍRKA_STRÁNKY\n"
+#~ " -r, --no-file-warnings\n"
+#~ " potlaèí varovanie, keï súbor nemô¾e by» otvorený\n"
+
+#~ msgid ""
+#~ " -s[CHAR],--separator[=CHAR]\n"
+#~ " separate columns by a single character, default for "
+#~ "CHAR\n"
+#~ " is the <TAB> character without -w and 'no char' with -"
+#~ "w\n"
+#~ " -s[CHAR] turns off line truncation of all 3 column\n"
+#~ " options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+#~ " -S[STRING], --sep-string[=STRING]\n"
+#~ " separate columns by an optional STRING, don't use\n"
+#~ " -S \"STRING\", -S only: No separator used (same as -S"
+#~ "\"\"),\n"
+#~ " without -S: Default separator <TAB> with -J and "
+#~ "<space>\n"
+#~ " otherwise (same as -S\" \"), no effect on column "
+#~ "options\n"
+#~ " -t, --omit-header omit page headers and trailers\n"
+#~ " -T, --omit-pagination\n"
+#~ " omit page headers and trailers, eliminate any "
+#~ "pagination\n"
+#~ " by form feeds set in input files\n"
+#~ " -v, --show-nonprinting\n"
+#~ " use octal backslash notation\n"
+#~ " -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+#~ " set page width to PAGE_WIDTH (72) characters for\n"
+#~ " multiple text-column output only, -s[char] turns off "
+#~ "(72)\n"
+#~ " -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+#~ " set page width to PAGE_WIDTH (72) characters always,\n"
+#~ " truncate lines, except -J option is set, no "
+#~ "interference\n"
+#~ " with -S or -s\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+#~ "FILE is -, read standard input.\n"
+#~ msgstr ""
+#~ " -s[ZNAK], --separator[=ZNAK]\n"
+#~ " oddelí ståpce jedným ZNAKom, ¹tandardná hodnota pre "
+#~ "ZNAK\n"
+#~ " je znak <TAB> bez -w a '¾iadny znak' s -w\n"
+#~ " -s[CHAR] vypína orezávanie riadkov vo v¹etkých troch\n"
+#~ " ståpcových voµbách (-COLUMN|-a -COLUMN|-m), okrem "
+#~ "prípadu,\n"
+#~ " ¾e je zapnuté -w\n"
+#~ " -S[RE«AZEC], --sep-string[=RE«AZEC]\n"
+#~ " oddeµuje ståpce s voliteµným RE«AZCOM, nepou¾ívajte\n"
+#~ " -S \"RE«AZEC\", iba -S: nepou¾itý ¾iadny oddeµovaè "
+#~ "(rovnako\n"
+#~ " ako -S\"\", bez -S: ¹tandardný oddeµovaè <TAB> s -J, "
+#~ "inak\n"
+#~ " <medzera> (rovnako ako -S\" \"), ¾iadny efekt na "
+#~ "ståpcové\n"
+#~ " voµby\n"
+#~ " -t, --omit-header nevypisuje hlavièky a pätièky stránok\n"
+#~ " -T, --omit-pagination\n"
+#~ " nevypisuje hlavièky a pätièky, odstráni stránkovanie\n"
+#~ " vstupného súboru (ignoruje znak novej stránky 'form "
+#~ "feed')\n"
+#~ " -v, --show-nonprinting\n"
+#~ " pou¾ije osmièkovú notáciu so spätným lomítkom\n"
+#~ " -w ©ÍRKA_STRÁNKY, --width=©ÍRKA_STRANY\n"
+#~ " nastaví ¹írku strany na ©ÍRKA_STRANY (72) znakov,\n"
+#~ " iba pre viacståpcový výstup, -s[ZNAK] vypína (72)\n"
+#~ " -W ©ÍRKA_STRÁNKY, --page-width=©ÍRKA_STRANY\n"
+#~ " nastaví ¹írku strany na ©ÍRKA_STRANY (72) znakov "
+#~ "v¾dy,\n"
+#~ " orezáva riadky, pokiaµ nie je ¹pecifikovaná voµba -"
+#~ "J,\n"
+#~ " ¾iadne konflikty s -S alebo -s\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+#~ "\n"
+#~ "-T mlèky predopkladané voµbou -l nn, keï nn <= 10 alebo <= 3 s -F. So "
+#~ "¾iadnym\n"
+#~ "SÚBOROM, alebo keï je SÚBOR rovný -, èíta ¹tandardný vstup.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Output a permuted index, including context, of the words in the input "
+#~ "files.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -A, --auto-reference output automatically generated "
+#~ "references\n"
+#~ " -C, --copyright display Copyright and copying "
+#~ "conditions\n"
+#~ " -G, --traditional behave more like System V `ptx'\n"
+#~ " -F, --flag-truncation=STRING use STRING for flagging line "
+#~ "truncations\n"
+#~ " -M, --macro-name=STRING macro name to use instead of `xx'\n"
+#~ " -O, --format=roff generate output as roff directives\n"
+#~ " -R, --right-side-refs put references at right, not counted in -"
+#~ "w\n"
+#~ " -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+#~ " -T, --format=tex generate output as TeX directives\n"
+#~ " -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+#~ " -b, --break-file=FILE word break characters in this FILE\n"
+#~ " -f, --ignore-case fold lower case to upper case for "
+#~ "sorting\n"
+#~ " -g, --gap-size=NUMBER gap size in columns between output "
+#~ "fields\n"
+#~ " -i, --ignore-file=FILE read ignore word list from FILE\n"
+#~ " -o, --only-file=FILE read only word list from this FILE\n"
+#~ " -r, --references first field of each line is a reference\n"
+#~ " -t, --typeset-mode - not implemented -\n"
+#~ " -w, --width=NUMBER output width in columns, reference "
+#~ "excluded\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+#~ msgstr ""
+#~ " Povinné argumenty dlhých prepínaèov, sú tie¾ povinné aj pri "
+#~ "zodpovedajúcich\n"
+#~ "krátkych prepínaèoch.\n"
+#~ "\n"
+#~ " -A, --auto-reference vo výstupe sú automaticky generované "
+#~ "odkazy\n"
+#~ " -C, --copyright vypí¹e autorské práva a podmeinky "
+#~ "kopírovania\n"
+#~ " -G, --traditional spôsobí chovanie ako System V `ptx'\n"
+#~ " -F, --flag-truncation=RE«AZEC pou¾ije RE«AZEC na urèenie skracovania "
+#~ "riadkov\n"
+#~ " -M, --macro-name=RE«AZEC meno makra, ktoré sa má pou¾i» namiesto "
+#~ "`xx'\n"
+#~ " -O, --format=roff generuje výstup pre program roff\n"
+#~ " -R, --right-side-refs vlo¾í odkazy vpravo, nepoèítané v -w\n"
+#~ " -S, --sentence-regexp=REGVÝR pre koniec riadkov a koniec viet\n"
+#~ " -T, --format=tex generuje výstup pre TeX\n"
+#~ " -W, --word-regexp=REGVÝR pou¾ije REGVÝR na urèenie ka¾dého slova\n"
+#~ " -b, --break-file=SÚBOR znaky preru¹ujúce slovo v tomto SÚBORe\n"
+#~ " -f, --ignore-case prepísanie malých písmen na veµké pre "
+#~ "triedenie\n"
+#~ " -g, --gap-size=ÈÍSLO veµkos» medzery v ståpcoch medzi "
+#~ "výstupnými\n"
+#~ " polo¾kami\n"
+#~ " -i, --ignore-file=SÚBOR preèíta slová, ktoré sa majú ignorova»\n"
+#~ " zo SÚBORu\n"
+#~ " -o, --only-file=SÚBOR preèítanie zoznamu slov iba zo SÚBORu\n"
+#~ " -r, --references prvná polo¾ka ka¾dého riadku je odkaz\n"
+#~ " -t, --typeset-mode - neimplementované -\n"
+#~ " -w, --width=ÈÍSLO ¹írka výstupu v ståpcoch, bez odkazov\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+#~ "\n"
+#~ "Pokiaµ nie je SÚBOR zadaný alebo je -, bude èítaný ¹tandardný vstup. "
+#~ "Implicitné\n"
+#~ "prepínaèe: `-F /'\n"
+
+#~ msgid ""
+#~ "Other options:\n"
+#~ "\n"
+#~ " -c, --check check whether input is sorted; do not sort\n"
+#~ " -k, --key=POS1[,POS2] start a key at POS1, end it at POS 2 (origin "
+#~ "1)\n"
+#~ " -m, --merge merge already sorted files; do not sort\n"
+#~ " -o, --output=FILE write result to FILE instead of standard "
+#~ "output\n"
+#~ " -s, --stable stabilize sort by disabling last-resort "
+#~ "comparison\n"
+#~ " -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+#~ " -t, --field-separator=SEP use SEP instead of non- to whitespace "
+#~ "transition\n"
+#~ " -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+#~ "s\n"
+#~ " multiple options specify multiple "
+#~ "directories\n"
+#~ " -u, --unique with -c: check for strict ordering\n"
+#~ " otherwise: output only the first of an "
+#~ "equal run\n"
+#~ " -z, --zero-terminated end lines with 0 byte, not newline\n"
+#~ " +POS1 [-POS2] start a key at POS1, end it before POS2 "
+#~ "(origin 0)\n"
+#~ " Warning: this option is obsolescent\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Ostatné voµby:\n"
+#~ "\n"
+#~ " -c, --check v prípade, ¾e vstupné súbory sú u¾ "
+#~ "zoradené,\n"
+#~ " netriedi ich\n"
+#~ " -k, --key=POZ1[,POZ2] kµúè zaèína od POZ1, konèí na POZ2 (zaè. "
+#~ "je 1)\n"
+#~ " -m, --merge spojí u¾ zoradené súbory, netriedi ich\n"
+#~ " -o, --output=SÚBOR výsledok zapí¹e do SÚBORu namiesto na "
+#~ "¹tandardný\n"
+#~ " výstup\n"
+#~ " -s, --stable stabilizuje triedenie zakázaním koneèného\n"
+#~ " triedenia rovnakých polo¾iek\n"
+#~ " -S, --buffer-size=VE¥KOS« pou¾i VE¥KOS« pre buffer v hlavnej pamäti\n"
+#~ " -t, --field-separator=ODDE¥ pou¾ije ODDE¥ovaè namiesto hranice\n"
+#~ " medzera/nemedzera\n"
+#~ " -T, --temporary-directory=ADRESÁR pou¾ije ADRESÁR na doèasné súbory,\n"
+#~ " nepou¾íva $TMPDIR ani %s.\n"
+#~ " Viac volieb znamená viac adresárov.\n"
+#~ " -u s -c testuje striktné usporiadanie\n"
+#~ " inak vypí¹e iba prvú z rovnakých "
+#~ "postupností\n"
+#~ " -z vstupné riadky budú ukonèené bytom 0 "
+#~ "namiesto\n"
+#~ " nového riadku\n"
+#~ " +POZ1 [-POZ2] zaèni kµúè na pozícii POZ1, ukonèi pred "
+#~ "POZ2\n"
+#~ " (zaè. 0). Pozor: táto voµba je zastaraná\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Print the last %d lines of each FILE to standard output.\n"
+#~ "With more than one FILE, precede each with a header giving the file "
+#~ "name.\n"
+#~ "With no FILE, or when FILE is -, read standard input.\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " --retry keep trying to open a file even if it is\n"
+#~ " inaccessible when tail starts or if it "
+#~ "becomes\n"
+#~ " inaccessible later -- useful only with -f\n"
+#~ " -c, --bytes=N output the last N bytes\n"
+#~ " -f, --follow[={name|descriptor}]\n"
+#~ " output appended data as the file grows;\n"
+#~ " -f, --follow, and --follow=descriptor are\n"
+#~ " equivalent\n"
+#~ " -F same as --follow=name --retry\n"
+#~ " -n, --lines=N output the last N lines, instead of the last %"
+#~ "d\n"
+#~ " --max-unchanged-stats=N\n"
+#~ " with --follow=name, reopen a FILE which has "
+#~ "not\n"
+#~ " changed size after N (default %d) iterations\n"
+#~ " to see if it has been unlinked or renamed\n"
+#~ " (this is the usual case of rotated log files)\n"
+#~ " --pid=PID with -f, terminate after process ID, PID dies\n"
+#~ " -q, --quiet, --silent never output headers giving file names\n"
+#~ " -s, --sleep-interval=S with -f, each iteration lasts approximately S\n"
+#~ " (default 1) seconds\n"
+#~ " -v, --verbose always output headers giving file names\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ msgstr ""
+#~ " Vypí¹e na ¹tandardný výstup, posledných %d riadkov ka¾dého SÚBORu. "
+#~ "Pokiaµ\n"
+#~ "bude zadaný viac ako jeden súbor, predchádza výpisu ka¾dého súboru jeho "
+#~ "názov.\n"
+#~ "Pokiaµ SÚBOR nebude zadaný alebo bude -, bude èítaný ¹tandardný vstup.\n"
+#~ "\n"
+#~ " --retry skú¹a opakovane otvori» súbor, pokiaµ je "
+#~ "nedostupný\n"
+#~ " v èase spustenia tail-u, prípadne pokiaµ sa "
+#~ "stane\n"
+#~ " nedostupným neskôr - u¾itoèné iba s -f\n"
+#~ " -c, --bytes=N vypí¹e posledných N bytov\n"
+#~ " -f, --follow[={name|descriptor}]\n"
+#~ " vypisuje iba dáta pridávané do súboru\n"
+#~ " -f, --follow a --follow=descriptor sú "
+#~ "ekvivalenty\n"
+#~ " -n, --lines=N vypí¹e posledných N riadkov namiesto %d\n"
+#~ " --max-unchanged-stats=N\n"
+#~ " s --follow=name znovu otvorí SÚBOR, ktorý "
+#~ "nezmenil\n"
+#~ " veµkos» po N (implicitne %d) iteráciách, "
+#~ "aby\n"
+#~ " zistil, èi nebol zmazaný alebo premenovaný\n"
+#~ " (èo je zvykom pri rotovaných log súboroch)\n"
+#~ " --pid=PID s -f skonèí po tom, ako proces PID skonèí\n"
+#~ " -q, --quiet, --silent nevypisuje názvy súborov\n"
+#~ " -s, --sleep-interval=S spolu s -f èaká pribli¾ne S sekúnd medzi "
+#~ "výpismi\n"
+#~ " (implicitne 1)\n"
+#~ " -v, --verbose v¾dy vypisuje názvy súborov\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "If the first character of N (the number of bytes or lines) is a `+',\n"
+#~ "print beginning with the Nth item from the start of each file, "
+#~ "otherwise,\n"
+#~ "print the last N items in the file. N may have a multiplier suffix:\n"
+#~ "b for 512, k for 1024, m for 1048576 (1 Meg). A first OPTION of -VALUE\n"
+#~ "or +VALUE is treated like -n VALUE or -n +VALUE unless VALUE has one of\n"
+#~ "the [bkm] suffix multipliers, in which case it is treated like -c VALUE\n"
+#~ "or -c +VALUE. Warning: a first option of +VALUE is obsolescent, and "
+#~ "support\n"
+#~ "for it will be withdrawn.\n"
+#~ "\n"
+#~ "With --follow (-f), tail defaults to following the file descriptor, "
+#~ "which\n"
+#~ "means that even if a tail'ed file is renamed, tail will continue to "
+#~ "track\n"
+#~ "its end. This default behavior is not desirable when you really want to\n"
+#~ "track the actual name of the file, not the file descriptor (e.g., log\n"
+#~ "rotation). Use --follow=name in that case. That causes tail to track "
+#~ "the\n"
+#~ "named file by reopening it periodically to see if it has been removed "
+#~ "and\n"
+#~ "recreated by some other program.\n"
+#~ "\n"
+#~ msgstr ""
+#~ " Pokiaµ prvný znak N (poèet bytov alebo riadkov) je `+', výpis zaèína\n"
+#~ "od N-tého elementu od zaèiatku ka¾dého súboru. Inak sa vypisuje "
+#~ "posledných\n"
+#~ "N elementov súboru. N mô¾e ma» násobiacu príponu: b - 512, k - 1024 "
+#~ "alebo\n"
+#~ "m - 1048576 (1 Mega). Ak je prvý prepínaè -HODNOTA alebo +HODNOTA, potom "
+#~ "je\n"
+#~ "bran ako -n HODNOTA alebo -n +HODNOTA, pokiaµ HODNOTA nemá násobiacu\n"
+#~ "príponu [bkm]. Pokiaµ ju má, potom je HODNOTA braná ako -c HODNOTA \n"
+#~ "alebo -c +HODNOTA. Varovanie: prvá mo¾nos» +HODNOTA je zastaralá\n"
+#~ "a jej podpora bude odstránená.\n"
+#~ "\n"
+#~ "Pri pou¾ití --follow (-f) tail implicitne sleduje deskriptor súboru, t."
+#~ "j.\n"
+#~ "vypisuje ten istý súbor aj v prípade jeho premenovania. Toto správanie\n"
+#~ "sa nie je vhodné v prípade, pokiaµ skutoène chcete sledova» konkrétny\n"
+#~ "názov súboru a nie deskriptor súboru (napr. pri rotácii log súborov).\n"
+#~ "V takom prípade pou¾ite --follow=name - tail bude znovu otvára» daný\n"
+#~ "súbor, aby mohol zisti» jeho prípadné odstránenie a znovuvytvorenie\n"
+#~ "iným programom.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "SETs are specified as strings of characters. Most represent themselves.\n"
+#~ "Interpreted sequences are:\n"
+#~ "\n"
+#~ " \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+#~ " \\\\ backslash\n"
+#~ " \\a audible BEL\n"
+#~ " \\b backspace\n"
+#~ " \\f form feed\n"
+#~ " \\n new line\n"
+#~ " \\r return\n"
+#~ " \\t horizontal tab\n"
+#~ " \\v vertical tab\n"
+#~ " CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+#~ " [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+#~ " [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+#~ " [:alnum:] all letters and digits\n"
+#~ " [:alpha:] all letters\n"
+#~ " [:blank:] all horizontal whitespace\n"
+#~ " [:cntrl:] all control characters\n"
+#~ " [:digit:] all digits\n"
+#~ " [:graph:] all printable characters, not including space\n"
+#~ " [:lower:] all lower case letters\n"
+#~ " [:print:] all printable characters, including space\n"
+#~ " [:punct:] all punctuation characters\n"
+#~ " [:space:] all horizontal or vertical whitespace\n"
+#~ " [:upper:] all upper case letters\n"
+#~ " [:xdigit:] all hexadecimal digits\n"
+#~ " [=CHAR=] all characters which are equivalent to CHAR\n"
+#~ msgstr ""
+#~ "\n"
+#~ " MNO®INY sú zadané ako re»azce znakov. Väè¹ina znakov reprezentuje ich "
+#~ "samých,\n"
+#~ "¹peciálny význam majú tieto:\n"
+#~ "\n"
+#~ " \\NNN znak v hodnote NNN (zadané v osmièkovej sústave)\n"
+#~ " \\\\ spätné lomítko\n"
+#~ " \\a znak BEL (pípnutie)\n"
+#~ " \\b backspace - vyma¾e znak vµavo od kurzoru\n"
+#~ " \\f nová strana (form feed)\n"
+#~ " \\n nový riadok (line feed)\n"
+#~ " \\r návrat vozíku (return)\n"
+#~ " \\t horizontálny tabulátor\n"
+#~ " \\v vertikálny tabulátor\n"
+#~ " ZNAK1-ZNAK2 v¹etky znaky od ZNAKu1 po ZNAK2, vzostupne\n"
+#~ " [ZNAK1-ZNAK2] rovnakné ako ZNAK1-ZNAK2, ak je pou¾ité v oboch "
+#~ "mno¾inách\n"
+#~ " [ZNAK*] v MNO®INE2 kopíruje ZNAK toµkokrát, aby bola MNO®INA2 "
+#~ "rovnako\n"
+#~ " dlhá ako MNO®INA1\n"
+#~ " [ZNAK*KO¥KOKRÁT] KO¥KOKRÁT kópií ZNAKu, osmièkovo, keï zaèína èíslicou "
+#~ "0\n"
+#~ " [:alnum:] v¹etky písmená a èíslice\n"
+#~ " [:alpha:] v¹etky písmená\n"
+#~ " [:blank:] v¹etky horizontálne medzery\n"
+#~ " [:cntrl:] v¹etky riadiace znaky\n"
+#~ " [:digit:] v¹etky èíslice\n"
+#~ " [:graph:] v¹etky tlaèiteµné znaky bez medzier\n"
+#~ " [:lower:] v¹etky malé písmená\n"
+#~ " [:print:] v¹etky tlaèiteµné znaky vrátane medzier\n"
+#~ " [:punct:] v¹etky interpunkèné znaky\n"
+#~ " [:space:] v¹etky horizontálne a vertikálne medzery\n"
+#~ " [:upper:] v¹etky veµké písmená\n"
+#~ " [:xdigit:] v¹etky ¹estnástkové èíslice\n"
+#~ " [=ZNAK=] v¹etky znaky rovnocenné so ZNAKom\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Discard all but one of successive identical lines from INPUT (or\n"
+#~ "standard input), writing to OUTPUT (or standard output).\n"
+#~ "\n"
+#~ "Mandatory arguments to long options are mandatory for short options too.\n"
+#~ " -c, --count prefix lines by the number of occurrences\n"
+#~ " -d, --repeated only print duplicate lines\n"
+#~ " -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+#~ " delimit-method={none(default),prepend,separate)}\n"
+#~ " Delimiting is done with blank lines.\n"
+#~ " -f, --skip-fields=N avoid comparing the first N fields\n"
+#~ " -i, --ignore-case ignore differences in case when comparing\n"
+#~ " -s, --skip-chars=N avoid comparing the first N characters\n"
+#~ " -u, --unique only print unique lines\n"
+#~ " -w, --check-chars=N compare no more than N characters in lines\n"
+#~ " -N same as -f N\n"
+#~ " +N same as -s N (obsolescent; will be withdrawn)\n"
+#~ " --help display this help and exit\n"
+#~ " --version output version information and exit\n"
+#~ "\n"
+#~ "A field is a run of whitespace, then non-whitespace characters.\n"
+#~ "Fields are skipped before chars.\n"
+#~ msgstr ""
+#~ " Zo v¹etkých po sebe idúcich rovnakých vstupných riadkov, vypí¹e na "
+#~ "výstup\n"
+#~ "v¾dy iba jeden. Implicitne je ako VSTUP braný ¹tandardný vstup a ako "
+#~ "VÝSTUP\n"
+#~ "¹tandardný výstup.\n"
+#~ "\n"
+#~ " -c, --count pred ka¾dý riadok vlo¾í poèet opakovania\n"
+#~ " -d, --repeated vypisuje iba opakujúce sa riadky\n"
+#~ " -D, --all-repeated vypisuje v¹etky opakujúce sa riadky\n"
+#~ " -f, --skip-fields=N neporovnáva prvých N polo¾iek\n"
+#~ " -i, --ignore-case ignoruje rozdiel medzi malými a veµkými "
+#~ "písmenami\n"
+#~ " -s, --skip-chars=N neporovnáva prvých N znakov\n"
+#~ " -u, --unique vypisuje iba neopakujúce sa riadky\n"
+#~ " -w, --check-chars=N porovnává najviac N prvých znakov ka¾dého riadku\n"
+#~ " -N rovnaké ako -f N\n"
+#~ " +N rovnaké ako -s N (zastaralé, bude zru¹ené)\n"
+#~ " --help vypí¹e túto nápovedu a skonèí\n"
+#~ " --version vypí¹e oznaèenie verzie a skonèí\n"
+#~ "\n"
+#~ " Polo¾kou je chápaný neprázdny re»azec znakov, ktoré nie sú medzerami "
+#~ "alebo\n"
+#~ "tabulátormi. Polo¾ky sú oddelené medzerami a tabulátormi. Polo¾ky budú\n"
+#~ "preskoèené pred znakmi.\n"
diff --git a/po/sl.gmo b/po/sl.gmo
new file mode 100644
index 0000000..5381c1a
--- /dev/null
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
new file mode 100644
index 0000000..8c1d75d
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,10703 @@
+# -*- mode: po; coding: utf-8; -*- Slovenian message catalog for GNU coreutils.
+# Copyright (C) 1996, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# Primož Peterlin <primoz.peterlin@biofiz.mf.uni-lj.si>, 1996, 1999, 2000, 2001, 2002, 2003, 2005, 2006.
+# $Id: coreutils-6.2.sl.po,v 1.2 2006/09/28 09:31:10 peterlin Exp $
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU coreutils 6.2\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2006-09-28 11:30+0200\n"
+"Last-Translator: Primož Peterlin <primoz.peterlin@biofiz.mf.uni-lj.si>\n"
+"Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
+"%100==4 ? 3 : 0);\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, c-format
+msgid "preserving permissions for %s"
+msgstr "ohranjena dovoljenja za %s"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "nastavljena dovoljenja za %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "neveljaven argument %s za %s"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "dvoumen argument %s za %s"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Veljavni argumenti so:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "napaka pri pisanju"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Neznana sistemska napaka"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "statusa %s ni moÄ ugotoviti s stat"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "navadna prazna datoteka"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "navadna datoteka"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "imenik"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "bloÄna enota"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "znakovna enota"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "FIFO"
+
+# ! INEXACT
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "simbolna povezava"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "vtiÄnica"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "vrsta sporoÄil"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "semafor"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "deljen pomnilniški predmet"
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr "tipiziran pomnilniški predmet"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "Äudna datoteka"
+
+#: lib/gai_strerror.c:44
+msgid "Address family for hostname not supported"
+msgstr "Družina naslovov za ime gostitelja ni podprta"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr "ZaÄasen neuspeh pri razreÅ¡evanju imena"
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr "Slaba vrednost ai_flags"
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr "Nepopravljiv neuspeh pri razreševanju imena"
+
+#: lib/gai_strerror.c:48
+msgid "ai_family not supported"
+msgstr "ai_family ni podprt"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr "Neuspeh pri dodelitvi pomnilnika"
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr "Z imenom gostitelja ni povezan noben naslov"
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr "Ime ali storitev ni poznana"
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr "Servname ni podprt za ai_socktype"
+
+#: lib/gai_strerror.c:53
+msgid "ai_socktype not supported"
+msgstr "ai_socktype ni podprt"
+
+#: lib/gai_strerror.c:54
+msgid "System error"
+msgstr "Sistemska napaka"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr "Obdelava zahtevka v teku"
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr "Zahtevek preklican"
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr "Zahtevek ni preklican"
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr "Vsi zahtevki obdelani"
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr "Prekinjeno s signalom"
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr "ParametriÄni niz nepravilno kodiran"
+
+#: lib/gai_strerror.c:74
+msgid "Unknown error"
+msgstr "Neznana napaka"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: izbira »%s« je dvoumna\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: izbira »--%s« ne dovoljuje argumenta\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: izbira »%c%s« ne dovoljuje argumenta\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: izbira »%s« zahteva argument\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: neprepoznana izbira »--%s«\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: neprepoznana izbira »%c%s«\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: nedovoljena izbira -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: neveljavna izbira -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: izbira zahteva argument -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: izbira »-W %s« je dvoumna\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: izbira »-W %s« ne dovoljuje argumenta\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "velikost bloka"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "dovoljenj %s ni mogoÄe spremeniti"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "imenika %s ni mogoÄe ustvariti"
+
+# ! INEXACT
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "zmanjkalo pomnilnika"
+
+#: lib/openat-die.c:34
+#, c-format
+msgid "unable to record current working directory"
+msgstr "ni mogoÄe zabeležiti trenutnega delovnega imenika"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "vrnitev v zaÄetni delovni imenik neuspeÅ¡na"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "»"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "«"
+
+#: lib/randread.c:125
+#, c-format
+msgid "%s: end of file"
+msgstr "%s: konec datoteke"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: neveljaven regularni izraz: %s"
+
+#: lib/regcomp.c:140
+#, fuzzy
+msgid "Invalid collation character"
+msgstr "neveljaven razred znakov %s"
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "neveljaven razred znakov %s"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+#, fuzzy
+msgid "Invalid back reference"
+msgstr "Neveljaven razpon strani %s"
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+#, fuzzy
+msgid "Invalid range end"
+msgstr "Neveljaven razpon strani %s"
+
+# ! INEXACT
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "zmanjkalo pomnilnika"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: neveljaven regularni izraz: %s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "napaka pri iskanju z regularnimi izrazi"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "napaka v ujemalniku z regularnimi izrazi"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "napaka pri iskanju z regularnimi izrazi"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr "rekurzivno delovanje na %s je nevarno"
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr "rekurzivno delovanje na %s (isto kot %s) je nevarno"
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr "uporabite --no-preserve-root, da zaobidete to varovalko"
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[jJdD]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "funkcija iconv ne deluje"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "funkcija iconv ni na voljo"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "koda znaka izven obsega"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "znaka s kodo U+%04X ni mogoÄe pretvoriti v lokalni nabor znakov"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "znaka s kodo U+%04X ni moÄ pretvoriti v lokalni nabor znakov: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "neveljavno uporabniško ime"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "neveljavno ime skupine"
+
+#: lib/userspec.c:109
+msgid "invalid spec"
+msgstr "neveljavna specifikacija"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr "©"
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Ta program je prosta programska oprema; lahko ga redistribuirate in/ali\n"
+"spreminjate po pogojih, doloÄenih v »GNU General Public License«, \n"
+"<http://www.gnu.org/licenses/gpl.html>. Za izdelek ni NOBENEGA JAMSTVA, do\n"
+"z zakonom dovoljene meje.\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Avtor(ica): %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Avtorja: %s in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Avtorji: %s, %s in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Avtorji: %s, %s, %s\n"
+"in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Avtorji: %s, %s, %s,\n"
+"%s in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Avtorji: %s, %s, %s,\n"
+"%s, %s in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Avtorji: %s, %s, %s,\n"
+"%s, %s, %s in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Avtorji: %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Avtorji: %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s in %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Avtorji: %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s in drugi.\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "neveljaven argument: %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "primerjanje nizov ni uspelo"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Nastavite LC_ALL='C', da bi odpravili težavo."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "Primerjana niza sta bila %s in %s."
+
+#: lib/xmemxfrm.c:55
+#, c-format
+msgid "string transformation failed"
+msgstr "pretvorba niza ni uspela"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr "Nepretvorjeni niz je bil %s."
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "neveljavno ime uporabnika %s"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "neveljaven razred znakov %s"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s je preveliko"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Poskusite »%s --help« za izÄrpnejÅ¡a navodila\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+"Uporaba: %s [IZBIRA] [DATOTEKA]\n"
+"Base64 kodira ali dekodira DATOTEKO ali standardni vhod na standardni "
+"izhod.\n"
+"\n"
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+" -w, --wrap=Å IRINA Vrstice prelomi tako, da so Å¡iroke najveÄ Å IRINA "
+"znakov\n"
+" (privzeto 76). Vrednost Å IRINA=0 onemogoÄi prelom.\n"
+"\n"
+" -d, --decode Dekodiraj podatke.\n"
+" -i, --ignore-garbage Pri dekodiranju prezri nealfanumeriÄne znake.\n"
+"\n"
+
+#: src/base64.c:77
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+" --help Ta navodila\n"
+" --version RazliÄica programa\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"ÄŒe DATOTEKA ni podana, ali pa je enaka -, beremo s standardnega vhoda.\n"
+
+#: src/base64.c:83
+#, fuzzy
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+"\n"
+"Podatki so kodirani skladno z abecedo base64, opisano v priporoÄilu RFC "
+"3548.\n"
+"Dekodiranje privzeto zahteva vhod, skladen s tem priporoÄilom; uporabite\n"
+"--ignore-garbage za poskus rekonstrukcije kodiranega toka z "
+"nealfanumeriÄnimi\n"
+"znaki, kot denimo znaki za novo vrstico.\n"
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"PoroÄila o napakah javite na <%s>.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "napaka pri branju"
+
+#: src/base64.c:234
+#, c-format
+msgid "invalid input"
+msgstr "neveljavni vhod"
+
+#: src/base64.c:271
+#, c-format
+msgid "invalid wrap size: %s"
+msgstr "neveljavna Å¡irina: %s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr "odveÄni operand %s"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "zapiramo standardni vhod"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uporaba: %s IME [PRIPONA]\n"
+" ali: %s IZBIRA\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Izpišemo IME datoteke brez celotne poti do nje. Če je podana PRIPONA,\n"
+"izpišemo ime datoteke brez pripone.\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+"\n"
+"Zgleda:\n"
+" %s /usr/bin/sort Izhod: »sort«.\n"
+" %s include/stdio.h .h Izhod: »stdin«.\n"
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, c-format
+msgid "missing operand"
+msgstr "manjkajoÄ operand"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Uporaba: %s [IZBIRA] [DATOTEKA]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"PrepiÅ¡emo eno ali veÄ DATOTEK na standardni izhod, ali std. vhod na std. "
+"izhod.\n"
+"\n"
+" -A, --show-all enakovredno sestavljeni izbiri -vET\n"
+" -b, --number-nonblank oÅ¡tevilÄi neprazne izpisane vrstice\n"
+" -e enakovredno sestavljeni izbiri -vE\n"
+" -E, --show-ends izpiši $ na koncu vsake vrstice\n"
+" -n, --number oÅ¡tevilÄi vse izpisane vrstice\n"
+" -s, --squeeze-blank zaporedje veÄ praznih vrstic skrÄi v eno\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t enakovredno sestavljeni izbiri -vT\n"
+" -T, --show-tabs prikaži znake TAB kot ^I\n"
+" -u (ignorirano)\n"
+" -v, --show-nonprinting krmilne znake razen LF in TAB izpiši kot ^ and "
+"M-\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+"\n"
+"Zgleda:\n"
+" %s f - g Izpiše vsebino datoteke »f«, zatem standardni vhod, zatem "
+"vsebino »g«.\n"
+" %s Prepiši vsebino standardnega vhoda na standardni izhod.\n"
+
+#: src/cat.c:333
+#, c-format
+msgid "cannot do ioctl on %s"
+msgstr "ioctl na »%s« ni mogoÄ"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "standardni izhod"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: vhodna in izhodna datoteka sta isti"
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "neveljavno ime skupine %s"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Uporaba: %s [IZBIRA]... SKUPINA DATOTEKA...\n"
+" ali: %s [IZBIRA]... --reference=ZGLED DATOTEKA...\n"
+
+#: src/chgrp.c:117
+#, fuzzy
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Vsem DATOTEKAM spremenimo Älanstvo v navedeno SKUPINO.\n"
+"Z izbiro --reference, spremenimo vsem DATOTEKAM datoteko v isto skupino,\n"
+"kot jo ima ZGLED.\n"
+"\n"
+" -c, --changes kot »verbose«, a samo ob spremembah\n"
+" --deferefence deluje na ciljne datoteke, ne na simbolne "
+"povezave\n"
+" (privzeto)\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference deluje na simbolne povezave, ne na ciljne "
+"datoteke\n"
+" (uporabno samo na sistemih, ki dovoljujejo "
+"spremembo\n"
+" lastništva simbolne povezave)\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root imenika »/« ne obravnavamo posebej (privzeto)\n"
+" --preserve-root ne dovoli rekurzivnega dela na »/«\n"
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet brez veÄine opozoril o napakah\n"
+" --reference=ZGLED namesto izrecno navedene SKUPINE jo nastavi \n"
+" enako, kot jo ima ZGLED\n"
+" -R, --recursive rekurzivno obdelaj imenike in datoteke\n"
+" -v, --verbose z diagnostiko za vsako obdelano datoteko\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+"Naslednje izbire vplivajo na to, kako je pri podani izbiri -R preÄesano \n"
+"datoteÄno drevo. ÄŒe je navedena veÄ kot ena od naÅ¡tetih izbir, se upoÅ¡teva\n"
+"le zadnja.\n"
+"\n"
+" -H Äe je argument ukazne vrstice simbolna povezava na\n"
+" imenik, preÄeÅ¡i ta imenik\n"
+" -L preÄeÅ¡i vse simbolne povezave na imenike, na "
+"katere\n"
+" naletiš\n"
+" -P ne preÄeÅ¡i nobene simbolne povezave (privzeto)\n"
+"\n"
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+"\n"
+"Zgleda:\n"
+"\n"
+" %s staff /u Spremeni skupino podimenika »/u« v »staff«.\n"
+" %s -hR staff /u Spremeni skupino podimenika »/u« s podimeniki v »staff«.\n"
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr "-R --dereference zahteva bodisi -H, bodisi -L"
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, c-format
+msgid "missing operand after %s"
+msgstr "manjkajoÄ operand za %s"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "branje prilastkov (atributov) %s neuspešno"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "beremo nove prilastke (atribute) %s"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr ""
+"tako simbolna povezava %s kot sklicevana datoteka/imenik sta nespremenjena\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "zaÅ¡Äita datoteke %s spremenjena v %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "poskus spremembe zaÅ¡Äite datoteke %s v %04lo (%s) neuspeÅ¡en\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "zaÅ¡Äita datoteke %s ohranjena kot %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "dostop do %s ni mogoÄ"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "imenika %s ni mogoÄe prebrati"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "spreminjamo dovoljenja %s"
+
+#: src/chmod.c:286
+#, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "%s: nova dovoljenja so %s, ne %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr "fts_read ni uspel"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Uporaba: %s [IZBIRA]... ZAÅ ÄŒITA[,ZAÅ ÄŒITA]... DATOTEKA...\n"
+" ali: %s [IZBIRA]... OKTALNA_KODA DATOTEKA...\n"
+" ali: %s [IZBIRA]... --reference=ZGLED DATOTEKA...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+"Spremenimo ZAÅ ÄŒITO za DATOTEKO.\n"
+"\n"
+" -c, --changes kot »verbose«, a samo ob izvedenih spremembah\n"
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root imenika »/« ne obravnavamo posebej (privzeto)\n"
+" --preserve-root ne dovoli rekurzivnega dela na »/«\n"
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+" -f, --silent, --quiet brez veÄine opozoril o napakah\n"
+" -v, --verbose z diagnostiko za vsako obdelano datoteko\n"
+" --reference=ZGLED namesto, da izrecno navedemo ZAÅ ÄŒITO, to nastavi\n"
+" enako, kot jo ima ZGLED\n"
+" -R, --recursive rekurzivno obdelaj imenike in datoteke\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+"\n"
+"Vsaka ZAŠČITA ima obliko »[ugoa]*([-+=]([rwxXst]*|[ugo]))+«.\n"
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr "ni moÄ podati izbire --reference in Å¡e izrecno navesti ZAÅ ÄŒITE"
+
+#: src/chmod.c:510
+#, c-format
+msgid "invalid mode: %s"
+msgstr "neveljaven naÄin: %s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "neuspešna zamenava lastništva %s na %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "skupina %s spremenjena na %s\n"
+
+#: src/chown-core.c:149
+#, c-format
+msgid "no change to ownership of %s\n"
+msgstr "brez spremembe lastništva %s\n"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "neuspešna zamenava lastništva %s na %s\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "zamenjava skupine %s na %s ni uspela\n"
+
+#: src/chown-core.c:154
+#, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "neuspešna zamenava lastništva %s\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "lastnik datoteke %s ostaja %s\n"
+
+# ! INEXACT
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "skupina datoteke %s ohranjena kot %s\n"
+
+#: src/chown-core.c:159
+#, c-format
+msgid "ownership of %s retained\n"
+msgstr "lastništvo datoteke %s nespremenjeno\n"
+
+#: src/chown-core.c:344
+#, c-format
+msgid "cannot dereference %s"
+msgstr "ni mogoÄe slediti povezavi %s"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "spreminjamo lastništvo %s"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "spreminjamo skupino %s"
+
+#: src/chown.c:93
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Uporaba: %s [IZBIRA]... [LASTNIK][:[SKUPINA]] DATOTEKA...\n"
+" ali: %s [IZBIRA]... --reference=ZGLED DATOTEKA...\n"
+
+#: src/chown.c:98
+#, fuzzy
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Spremeni LASTNIKA in/ali SKUPINO vsake navedene DATOTEKE na podani "
+"vrednosti.\n"
+"Pri podani izbiri --reference spremeni lastnika in/ali skupino na "
+"vrednosti,\n"
+"kot jih ima datoteka ZGLED.\n"
+"\n"
+" -c, --changes informativna obvestila ob spremembah\n"
+" --dereference deluje na ciljne datoteke simbolnih povezav, ne "
+"pa\n"
+" na same simbolne povezave\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=TRENUTNI_LASTNIK:TRENUTNA_SKUPINA\n"
+" lastnika in/ali skupino zamenjamo samo pri tistih\n"
+" datotekah, pri katerih trenutni lastnik in "
+"skupina\n"
+" ustrezata navedenima. ÄŒe lastnika ali skupino \n"
+" izpustimo, ujemanje tega ni veÄ pogoj.\n"
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet brez veÄine obvestil o napakah\n"
+" --reference=ZGLED lastnika/skupino spremenimo na vrednost, kot jo\n"
+" ima ZGLED, namesto da podamo par LASTNIK:SKUPINA\n"
+" -R, --recursive rekurzivno obdelamo imenike in datoteke\n"
+" -v, --verbose z izpisom diagnostike ob vsaki obdelani datoteki\n"
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"ÄŒe ni podan, lastnik datoteke ostane isti. Skupina se ohrani, Äe ni podana,\n"
+"spremeni pa v skupino lastnika, Äe lastniku sledi dvopiÄje (:). LASTNIK in\n"
+"SKUPINA sta lahko podana s simbolno ali numeriÄno vrednostjo.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+"\n"
+"Zgledi:\n"
+" %s root /u Spremeni lastnika imenika »/u« v »root«.\n"
+" %s root:staff /u Podobno, a obenem spremeni Å¡e njegovo skupino v "
+"»staff«.\n"
+" %s -hR root /u Spremeni lastnika imenika »/u« in podimenikov v »root«.\n"
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uporaba: %s [NOVI_KOREN] [UKAZ...]\n"
+" ali: %s IZBIRA\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"Izvedemo UKAZ tako, da korenski imenik postavimo na KOREN.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"Če UKAZ ni podan, izvedemo »${SHELL} -i« (privzeto /bin/sh).\n"
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "korenskega imenika ni mogoÄe prestaviti na %s"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "korenski imenik ni dosegljiv s chdir"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "ukaza %s ni mogoÄe izvesti"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: datoteka je predolga"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Uporaba: %s [DATOTEKA]...\n"
+" ali: %s [IZBIRA]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"Izpišemo nadzorno vsoto in dolžino v bajtih za vsako DATOTEKO.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Uporaba: %s [IZBIRA]... DATOTEKA1 DATOTEKA2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr ""
+"Urejeni datoteki DATOTEKA1 in DATOTEKA2 primerjamo vrstico za vrstico.\n"
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+"\n"
+"Brez podanih izbir program izpiše tri stolpce. V prvem stolpcu so vrstice,\n"
+"ki se pojavijo le v DATOTEKI1, v drugem vrstice, ki se pojavijo le v "
+"DATOTEKI2,\n"
+"v tretjem pa vrstice, skupne obema datotekama.\n"
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"\n"
+" -1 izpusti vrstice, ki se pojavijo samo v prvi datoteki\n"
+" -2 izpusti vrstice, ki se pojavijo samo v drugi datoteki\n"
+" -3 izpusti vrstice, ki se pojavijo v obeh datotekah\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "lastništvo za %s ni bilo ohranjeno"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr "vpogled v datoteko %s ni mogoÄ"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "avtorstvo datoteke %s ni bilo ohranjeno"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "datotek %s ni mogoÄe odpreti za branje"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "statusa %s ni moÄ ugotoviti s fstat"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "datoteko %s izpustimo, ker je bila med prepisom zamenjana"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "ni mogoÄe odstraniti %s"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "odstranjena %s\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "ni mogoÄe ustvariti navadne datoteke %s"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "beremo %s"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "premikanje z lseek po %s ni mogoÄe"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "zapisujemo %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "ohranjeni Äasi za %s"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "zapiramo %s"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: naj piÅ¡emo prek %s navzlic zaÅ¡Äiti %04lo? "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: naj pišemo prek %s? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (varnostna kopija: %s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "izpuÅ¡Äamo imenik %s"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "opozorilo: izvorna datoteka %s je podana veÄ kot enkrat"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s in %s sta ena in ista datoteka"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "prek ne-imenika %s ne moremo pisati imenika %s"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "prek pravkar ustvarjene datoteke %s ne moremo zapisati %s"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "prek imenika %s ne moremo zapisati ne-imenika"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "imenika ne moremo premakniti v ne-imenik: %s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "varnostna kopija %s bi uniÄila izvirnik; %s ni premaknjen"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "varnostna kopija %s bi uniÄila izvirnik; %s ni prepisan"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "ni mogoÄe izdelati varnostne kopije %s"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "imenika %s se ne da prepisati vase, v %s"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "ni mogoÄe ustvariti trde povezave %s na imenik %s"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "ni mogoÄe ustvariti trde povezave %s na %s"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "imenika %s se ne da premakniti v %s, ki je podimenik prvega"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "ni mogoÄe premakniti %s v %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr "premik med enotami ni uspel: %s v %s; cilja ni moÄ odstraniti"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "ni mogoÄe prepisati cikliÄne simbolne povezave %s"
+
+# ! INEXACT
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr "%s: relativne simbolne povezave so mogoÄe samo znotraj imenika"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "ni mogoÄe ustvariti simbolne povezave %s na %s"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "ni mogoÄe ustvariti povezave %s"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "ni mogoÄe ustvariti FIFO %s"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "ni mogoÄe ustvariti posebne datoteke %s"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "ni mogoÄe prebrati simbolne povezave %s"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "ni mogoÄe ustvariti simbolne povezave %s"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s ima neznan tip datoteke"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "ni mogoÄe odstraniti varnostne kopije %s"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (brez varnostne kopije)\n"
+
+# ! INEXACT
+#: src/cp.c:157 src/mv.c:284
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Uporaba: %s [IZBIRA]... [-T] IZVOR CILJ\n"
+" ali: %s [IZBIRA]... IZVOR... IMENIK\n"
+" ali: %s [IZBIRA]... --target-directory=IMENIK IZVOR...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"PrepiÅ¡emo IZVOR v CILJ, ali veÄ IZVOROV v IMENIK.\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Obvezni argumenti, navedeni pri dolgi obliki izbire, veljajo tudi za "
+"kratko.\n"
+
+# ! INEXACT
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive isto kot -dpPR\n"
+" --backup[=TIP] pred pisanjem prek obstojeÄe ciljne "
+"datoteke \n"
+" izdelamo varnostno kopijo podanega TIPA\n"
+" -b enako kot --backup, vendar ne sprejema "
+"argumenta\n"
+" --copy-contents pri rekurzivnem prepisovanju prepišemo "
+"vsebino\n"
+" posebnih datotek\n"
+" -d isto kot --no-dereference --preserve=link\n"
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" -f, --force Äe ciljne datoteke ni mogoÄe odpreti, jo\n"
+" odstranimo in poskusimo znova\n"
+" -i, --interactive poziv, preden zapišemo novo datoteko prek "
+"stare\n"
+" -H sledimo simbolnim povezavam v ukazni vrstici\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+" -l, --link ustvarimo trde povezave namesto kopij "
+"datotek\n"
+" -L, --dereference vedno sledimo simbolnim povezavam\n"
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr " -P, --no-dereference ne sledimo simbolnim povezavam\n"
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -p isto kot --preserve=mode,ownership,"
+"timestamps\n"
+" --preserve[=SEZN_PRIL] Äe je mogoÄe, ohranimo navedene prilastke\n"
+" (atribute) datotek (privzeto: mode, "
+"ownership,\n"
+" timestamps; dodatne možnosti: links, all)\n"
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=SEZN_PRIL ne ohranimo navedenih prilastkov\n"
+" --parents pot do vira dodaj v IMENIK\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive imenike prepišemo rekurzivno\n"
+" --remove-destination vsako ciljno datoteko vedno zbrišemo, preden\n"
+" poskusimo pisati vanjo (prim. --force)\n"
+
+#: src/cp.c:205
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --sparse=KDAJ kdaj ustvarimo razpršene datoteke\n"
+" --strip-trailing-slashes odstrani zakljuÄne poÅ¡evnice iz vseh "
+"podanih\n"
+" IZVOROV\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link ustvari simbolne povezave namesto kopij\n"
+" -S, --suffix=PRIPONA pripona varnostne kopije naj bo PRIPONA\n"
+" --target-directory=IMENIK vse IZVORE premakni v IMENIK\n"
+" -T, --no-target-directory obravnavaj CILJ kot navadno datoteko\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update prepiÅ¡i samo. Äe je IZVOR novejÅ¡i od CILJA "
+"ali\n"
+" kadar CILJ Å¡e ne obstaja\n"
+" -v, --verbose z razlago poteka\n"
+" -x, --one-file-system samo krajevni datoteÄni sistem\n"
+
+# ! INEXACT
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"Po privzeti izbiri razpršene IZVORE ugotovimo z grobo hevristiko, ustrezni\n"
+"CILJI pa bodo tudi razpršeni. Isto dosežemo tudi z izbiro --sparse=auto.\n"
+"Z izbiro --sparse=always bo CILJ razpršen vedno, kadar IZVOR vsebuje dovolj\n"
+"dolgo zaporedje znakov niÄ. Izbira --sparse=never vedno prepreÄi "
+"ustvarjanje\n"
+"razpršenih datotek.\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Varnostna kopija ima pripono »~«, razen Äe ni z izbiro --suffix ali\n"
+"spremenljivko SIMPLE_BACKUP_SUFFIX nastavljeno drugaÄe. Vrsto varnostnih\n"
+"kopij lahko nastavimo z izbiro --backup ali spremenljivko\n"
+"VERSION_CONTROL. Možnosti so:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off nikoli ne delamo varnostne kopije, niti z izbiro --backup\n"
+" numbered, t oÅ¡tevilÄene varnostne kopije\n"
+" existing, nil oÅ¡tevilÄene varnostne kopije, Äe take že obstajajo,\n"
+" sicer enostavne\n"
+" simple, never vedno enostavne varnostne kopije\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"V posebnem primeru napravi cp varnostno kopijo IZVORa, kadar sta podani "
+"izbiri\n"
+"--force in --backup, IZVOR in CILJ pa sta isto ime za obstojeÄo navadno\n"
+"datoteko.\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "Äasi za %s niso bili ohranjeni"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "dovoljenja datoteke %s niso ohranjena"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "ni mogoÄe ustvariti imenika %s"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s obstaja, vendar ni imenik"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "dostopamo do %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, c-format
+msgid "missing file operand"
+msgstr "manjkajoÄ operand datoteke"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, c-format
+msgid "missing destination file operand after %s"
+msgstr "manjkajoÄ operand ciljne datoteke za %s"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+"Izbiri --target-directory (-t) in --no-target-directory (-T) se izkljuÄujeta"
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, c-format
+msgid "target %s is not a directory"
+msgstr "cilj %s ni imenik"
+
+#: src/cp.c:697
+#, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "pri izbiri --parents mora biti cilj imenik"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr "izbira --reply je odsvetovana; namesto nje uporabite -i ali -f"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, c-format
+msgid "multiple target directories specified"
+msgstr "podanih je veÄ ciljnih imenikov"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "hkratne trde in simbolne povezave niso mogoÄe"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "vrsta varnostne kopije"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "vhod je izginil"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: Å¡tevilka vrstice izven intervala"
+
+#: src/csplit.c:709
+#, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: %s: Å¡tevilka vrstice izven obsega"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr " pri ponovitvi %s\n"
+
+#: src/csplit.c:755
+#, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: %s: ujemanja ni"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "napaka pri iskanju z regularnimi izrazi"
+
+#: src/csplit.c:984
+#, c-format
+msgid "write error for %s"
+msgstr "napaka pri pisanju za %s"
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: za razmejilnikom priÄakovano celo Å¡tevilo"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: pri ponovitvah je zahtevan »}«"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: med »{« in »}« je zahtevano celo število"
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: manjkajoÄ zakljuÄni razmejilnik »%c«"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: neveljaven regularni izraz: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: neveljavni vzorec"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: Å¡tevilo vrstice mora biti pozitivno"
+
+#: src/csplit.c:1172
+#, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "številka vrstice %s je nižja od številke vrstice pred njo, %s"
+
+#: src/csplit.c:1178
+#, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "opozorilo: Å¡tevilka vrstice %s je ista kot tista pred njo"
+
+#: src/csplit.c:1231
+#, c-format
+msgid "invalid format width"
+msgstr "neveljavna Å¡irina oblike"
+
+#: src/csplit.c:1252
+#, c-format
+msgid "invalid format precision"
+msgstr "neveljavna natanÄnost oblike"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "manjkajoÄe doloÄilo pretvorbe v priponi"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "neveljavno doloÄilo pretvorbe v priponi: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "neveljavno doloÄilo pretvorbe v priponi: \\\\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "preveÄ doloÄil pretvorbe %% v priponi"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "manjkajoÄe doloÄilo pretvorbe %% v priponi"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: neveljavno Å¡tevilo"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Uporaba: %s [IZBIRA]... DATOTEKA VZOREC...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"IzpiÅ¡emo kose DATOTEKE, loÄene z VZORCEM in zapiÅ¡emo v datoteke »xx01«, "
+"»xx02«...,\n"
+"Å¡tevilo bajtov v vsakem posamiÄnem kosu pa izpiÅ¡emo na standardni izhod.\n"
+"\n"
+
+#: src/csplit.c:1486
+#, fuzzy, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=OBLIKA uporabi OBLIKO spritntf namesto %02d\n"
+" -f, --prefix=PREDPONA uporabi podano PREDPONO namesto »xx«\n"
+" -k, --keep-files ob napaki ne pobriši nepopolno zapisanih "
+"datotek\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=Å TEVKE uporabi navedeno Å¡tevilo Å¡tevk namesto "
+"privzetih 2\n"
+" -s, --quiet, --silent brez izpisa velikosti na standardni izhod\n"
+" -z, --elide-empty-files odstrani prazne izhodne datoteke\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"ÄŒe je DATOTEKA -, beremo s standardnega vhoda. VZOREC je lahko eden od:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" CELO_ŠTEVILO prepiši do navedene vrstice, ne vštevši te vrstice\n"
+" /REGIZR/[ODMIK] prepiÅ¡i do ODMIKA, ne vÅ¡tevÅ¡i ujemajoÄe se vrstice\n"
+" %%REGIZR%%[ODMIK] preskoÄi na ODMIK, ne vÅ¡tevÅ¡i ujemajoÄe se vrstice\n"
+" {CELO_ŠTEVILO} ponovi prejšnji regularni izraz navedenokrat\n"
+" {*} ponovi prejšnji regularni izraz, kolikorkrat gre\n"
+"\n"
+"Zapis vrstice ODMIKA je znak »+« ali »-«, ki mu sledi pozitivno celo "
+"Å¡tevilo.\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Uporaba: %s [IZBIRA]... [DATOTEKA]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"Izbrane dele vrstic iz vsake od navedenih DATOTEK izpišemo na standardni "
+"izhod.\n"
+"\n"
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=SEZNAM izpiši samo navedene bajte\n"
+" -c, --characters=SEZNAM izpiši samo navedene znake\n"
+" -d, --delimiter=RAZMEJ polja so razmejena z znakom RAZMEJ namesto s TAB\n"
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=SEZNAM izpiši samo navedena polja; izpiši tudi vse "
+"vrstice,\n"
+" ki ne vsebujejo razmejilnika, razen Äe je "
+"podana\n"
+" izbira -s\n"
+" -n (prezrto)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+" --complement komplement množice izbranih bajtov, znakov ali "
+"polj.\n"
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited ne izpiši vrstic, ki ne vsebujejo razmejilnika\n"
+" --output-delimiter=NIZ naj bo NIZ razmejilnik na izhodu\n"
+" privzeti izhodni razmejilnik je enak vhodnemu\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+#, fuzzy
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Izbire -b, -c in -f se medsebojno izkljuÄujejo. Vsak SEZNAM lahko sestavlja "
+"en\n"
+"ali veÄ razponov, ki so med seboj loÄeni z vejico. Izbrani vhod je zapisan "
+"v\n"
+"istem vrstnem redu, kot je bil prebran, in je zapisan natanko enkrat.\n"
+"Vsak razpon ima lahko obliko:\n"
+"\n"
+" N N-ti bajt, znak ali polje, Å¡teto od 1 dalje\n"
+" N- od N-tega bajta, znaka ali polja do konca vrstice\n"
+" N-M od N-tega do vkljuÄno M-tega bajta, znaka ali polja\n"
+" -M od prvega do vkljuÄno M-tega bajta, znaka ali polja\n"
+"\n"
+"ÄŒe DATOTEKA ni podana, ali Äe je enaka - (minusu), se bere standardni vhod.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "neveljaven seznam bajtov ali polj"
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr "odmik %s (v bajtih) je prevelik"
+
+#: src/cut.c:472
+#, c-format
+msgid "field number %s is too large"
+msgstr "Å¡tevilka polja %s je prevelika"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "doloÄen je lahko samo en tip seznama"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "razmejilnik mora biti en sam znak"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "podati je treba seznam bajtov, znakov ali polj"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "vhodni razmejilnik se sme doloÄiti le, kadar delamo s polji"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"neizpisovanje vrstic, ki ne vsebujejo razmejilnika\n"
+"\tje smiselno le, kadar delamo s polji"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "seznam polj manjka"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "seznam položajev manjka"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Uporaba: %s [IZBIRA]... [+OBLIKA]\n"
+" ali: %s [-u|--utc|--universal] [MMDDuumm[[SS]LL][.ss]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"IzpiÅ¡emo trenutni Äas v podani OBLIKI, ali pa nastavimo sistemski Äas.\n"
+"\n"
+" -d, --date=NIZ izpiÅ¡i Äas podan v NIZU namesto trenutnega\n"
+" -f, --file=DATOTEKA enako kot --date za vsako vrstico v DATOTEKI\n"
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+#, fuzzy
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+" -r, --reference=DATOTEKA izpiÅ¡i Äas zadnje spremembe za navedeno "
+"DATOTEKO\n"
+" -R, --rfc-2822 Äas izpiÅ¡i skladno s priporoÄilom RFC-2822\n"
+" --rfc-3339=DOLOÄŒILO datum v obliki, skladni s priporoÄilom RFC-3339\n"
+" DOLOČILO je lahko »date«, »seconds« ali »ns«\n"
+" za datum in uro v navedeni natanÄnosti.\n"
+" -s, --set=NIZ nastavi Äas na v NIZU podano vrednost\n"
+" -u, --utc, --universal izpis ali nastavitev Äasa v UTC namesto v "
+"lokalnem\n"
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"\n"
+"Izpis doloÄa izbrana OBLIKA. Edina veljavna izbira pri drugi obliki ukaza\n"
+"doloÄa Äas v UTC. TolmaÄ razume naslednja zaporedja:\n"
+"\n"
+" %% dobesedni znak za procent %%\n"
+" %a lokalizirano okrajšano ime dneva v tednu (npr. ned)\n"
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A lokalizirano polno ime dneva v tednu, spremen. Å¡irine (npr. nedelja)\n"
+" %b lokalizirano okrajšano ime meseca (npr. jan)\n"
+" %B lokalizirano polno ime meseca, spremenljive Å¡irine (npr. januar)\n"
+" %c lokaliziran izpis datuma in ure (sob 04 nov 1989 12:02:33 CET)\n"
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C stoletje; kot %Y, vendar brez zadnjih dveh Å¡tevk (npr. 21)\n"
+" %d dan v mesecu (npr. 01)\n"
+" %D datum; isto kot %m/%d/%y\n"
+" %e dan v mesecu, dopolnjen s presledki; isto kot %_d\n"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+" %F poln datum; isto kot %Y-%m-%d\n"
+" %g dvoÅ¡tevilÄno leto, ustrezajoÄe Å¡tevilki tedna ISO (glejte %G)\n"
+" %G Å¡tiriÅ¡tevilÄno leto, ustrezajoÄe Å¡tevilki tedna ISO (glejte %V);\n"
+" praviloma uporabno le v kombinaciji z %V\n"
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h isto kot %b\n"
+" %H ura (00..23)\n"
+" %I ura (01..12)\n"
+" %j dan v letu (001..366)\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k ura ( 0..23)\n"
+" %l ura ( 1..12)\n"
+" %m mesec (01..12)\n"
+" %M minuta (00..59)\n"
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+" %n nova vrstica\n"
+" %N nanosekunde (000000000..999999999)\n"
+" %p lokalizirana oznaka za dopoldanske (AM) ali popoldanske (PM) ure\n"
+" %P isto kot %P, a z malimi Ärkami\n"
+" %r Äas v lokaliziranem 12-urnem zapisu (npr. 11:11:04 PM)\n"
+" %R Äas v 24-urnem zapisu; isto kot %H:%M\n"
+" %s sekunde od 00:00:00, 1970-01-01 UTC\n"
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+" %S sekunde (00..60) (60 samo v primeru prestopne sekunde)\n"
+" %t vodoravni tabulator\n"
+" %T Äas v 24-urnem zapisu; isto kot %H:%M:%S\n"
+" %u dan v tednu (1..7); 1 je ponedeljek\n"
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U Å¡tevilka tedna v letu z nedeljo kot prvim dnevom v tednu (00..53)\n"
+" %V Å¡tevilka tedna ISO, s ponedeljkom kot prvim dnevom v tednu (01..53)\n"
+" %w dan v tednu (0..6); 0 predstavlja nedeljo\n"
+" %W Å¡tevilka tedna v letu s ponedeljkom kot prvim dnevom v tednu "
+"(00..53)\n"
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x lokaliziran zapis datuma (npr. 21/31/99)\n"
+" %X lokaliziran zapis ure (npr. 23:13:48)\n"
+" %y zadnji dve Å¡tevki leta (00..99)\n"
+" %Y leto\n"
+
+#: src/date.c:223
+#, fuzzy
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+" %z Äasovni pas v Å¡tevilÄnem zapisu +hhmm (npr. +0100)\n"
+" %:z Äasovni pas v Å¡tevilÄnem zapisu +hh:mm (npr. +01:00)\n"
+" %::z Äasovni pas v Å¡tevilÄnem zapisu +hh:mm:ss (npr. +01:00:00)\n"
+" %:::z Äasovni pas v Å¡tevilÄnem zapisu; Å¡tevilo dvopiÄij ustreza zahtevani\n"
+" natanÄnosti (npr. +04, +05:30)\n"
+" %Z alfanumeriÄna okrajÅ¡ava Äasovnega pasu (npr. CET)\n"
+"\n"
+"Privzeto so Å¡tevilÄna polja v datumu do polne dolžine polja dopolnjena\n"
+"z niÄlami. Naslednja neobvezna doloÄila lahko sledijo znaku »%«:\n"
+"\n"
+" »-« (minus) ne dopolnjuj polja\n"
+" »_« (podÄrtaj) dopolni polje s presledki\n"
+" »0« (niÄla) dopolni polje z niÄlami\n"
+" »^« Äe je mogoÄe, uporabi velike Ärke\n"
+" »#« Äe je mogoÄe, uporabi nasprotne Ärke\n"
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+"\n"
+"Vsaki izbiri sledi neobvezna širina polja, navedena kot desetiško število,\n"
+"zatem neobvezni modifikator, ki je nekaj od naslednjega:\n"
+"»E« za lokalizirano alternativno predstavitev, Äe je ta na voljo, ali\n"
+"»O« za lokalizirane alternativne Å¡tevilÄne simbole, Äe so ti na voljo.\n"
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "standardni vhod"
+
+#: src/date.c:297 src/date.c:517
+#, c-format
+msgid "invalid date %s"
+msgstr "neveljavni datum %s"
+
+#: src/date.c:408 src/date.c:442
+#, c-format
+msgid "multiple output formats specified"
+msgstr "podana je veÄ kot ena oblika izhoda"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "izbire pri doloÄanju datumov za izpis se medsebojno izkljuÄujejo"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr "izbiri za izpis in nastavitev datuma se medsebojno izkljuÄujeta"
+
+#: src/date.c:448
+#, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"argumentu %s manjka vodilni »+«;\n"
+"Kadar doloÄamo datum, morajo biti vsi argumenti, ki niso izbire,\n"
+"doloÄitelji oblike datuma in se morajo zaÄeti s »+«."
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "datuma ni mogoÄe nastaviti"
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "Äas %s je izven obmoÄja"
+
+#: src/dd.c:404
+#, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uporaba: %s [OPERAND]...\n"
+" ali: %s IZBIRA\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"Prepiši datoteko in jo pretvori in preoblikuj glede na izbire.\n"
+"\n"
+" bs=BAJTOV zahtevamo ibs=BAJTOV in obs=BAJTOV\n"
+" cbs=BAJTOV pretvori zahtevano Å¡tevilo BAJTOV naenkrat\n"
+" conv=PRETVORBA pretvori datoteko, kot zahteva PRETVORBA (seznam gesel,\n"
+" loÄen z vejicami)\n"
+" count=BLOKOV pretvori samo zahtevano Å¡tevilo vhodnik BLOKOV\n"
+" ibs=BAJTOV beri po zahtevano Å¡tevilo BAJTOV naenkrat\n"
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=DATOTEKA beri z navedene DATOTEKE namesto s standardnega vhoda\n"
+" iflag=ZASTAVICA beri kot z vejicami loÄen seznam simbolov\n"
+" obs=BAJTOV piši po zahtevano število BAJTOV naenkrat\n"
+" of=DATOTEKA piši na navedeno DATOTEKA namesto na standardni izhod\n"
+" oflag=ZASTAVICA piÅ¡i kot z vejicami loÄen seznam simbolov\n"
+" seek=BLOKOV na zaÄetku pisanja preskoÄi zahtevano Å¡tevilo BLOKOV\n"
+" dolžine obs\n"
+" skip=BLOKOV na zaÄetku branja preskoÄi zahtevano Å¡tevilo BLOKOV\n"
+" dolžine ibs\n"
+" status=noxfer brez statistike prenosa\n"
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"Število BAJTOV in BLOKOV lahko okrajšamo s priponami za množenje: xM za\n"
+"množenje z M, c za množenje z 1, w za množenje z 2, b za množenje s 512,\n"
+"kB za množenje s 1000, K za množenje s 1024. MB = 1000×1000, M = 1024×1024,\n"
+"GB = 1000×1000×1000, G = 1024×1024×1024, in tako dalje za T, P, E, Z, Y.\n"
+"PRETVORBA je lahko (veÄ izbir loÄimo z vejico):\n"
+"\n"
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii iz EBCDIC v ASCII\n"
+" ebcdic iz ASCII v EBCDIC\n"
+" ibm iz ASCII v »alternate EBCDIC«\n"
+" block zapise terminirane z NEWLINE zapolni z presledki do dolžine cbs\n"
+" unblock sledilne presledke v zapisu dolžine cbs nadomesti z NEWLINE\n"
+" lcase velike Ärke zamenjaj z malimi\n"
+
+#: src/dd.c:445
+#, fuzzy
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+" nocreat ne zapiši izhodne datoteke\n"
+" excl prenehaj z delom, Äe izhodna datoteka že obstaja\n"
+" notrunc ne poreži izhodne datoteke\n"
+" ucase male Ärke zamenjaj z velikimi\n"
+" swab paroma zamenjaj bajte na vhodu\n"
+" noerror nadaljuj po napaki pri branju\n"
+" sync vsak vhodni blok zapolni z znaki NUL dolžine ibs; Äe smo podali\n"
+" tudi block ali unblock, zapolni s presledki namesto z znaki "
+"NUL\n"
+" fdatasync fiziÄno zapiÅ¡i izhodno datoteko pred zakljuÄkom dela\n"
+" fsync enako, vendar zapiši tudi metapodatke \n"
+
+#: src/dd.c:452
+#, fuzzy
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+" nocreat ne zapiši izhodne datoteke\n"
+" excl prenehaj z delom, Äe izhodna datoteka že obstaja\n"
+" notrunc ne poreži izhodne datoteke\n"
+" ucase male Ärke zamenjaj z velikimi\n"
+" swab paroma zamenjaj bajte na vhodu\n"
+" noerror nadaljuj po napaki pri branju\n"
+" sync vsak vhodni blok zapolni z znaki NUL dolžine ibs; Äe smo podali\n"
+" tudi block ali unblock, zapolni s presledki namesto z znaki "
+"NUL\n"
+" fdatasync fiziÄno zapiÅ¡i izhodno datoteko pred zakljuÄkom dela\n"
+" fsync enako, vendar zapiši tudi metapodatke \n"
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+"\n"
+"ZASTAVICA je lahko:\n"
+"\n"
+" append dodajanje na konec datoteke (smiselno le pri izhodu; "
+"priporoÄeno\n"
+" conv=notrunc)\n"
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr " direct uporabi neposredne vhodno-izhodne funkcije za podatke\n"
+
+#: src/dd.c:468
+msgid " directory fail unless a directory\n"
+msgstr " directory opusti, razen Äe je imenik\n"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+" dsync uporabi sinhronizirane vhodno-izhodne funkcije za podatke\n"
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr " sync enako, a tudi za metapodatke\n"
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr " nonblock uporabi neblokirne vhodno-izhodne funkcije\n"
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr " noatime ne ažuriraj Äasa zadnjega dostopa\n"
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr " noctty ne doloÄaj krmilnega terminala iz datoteke\n"
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr " nofollow ne sledi simbolnim povezavam\n"
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr " nolinks opusti, Äe je datoteka veÄkratno povezana\n"
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr " binary uporabi binarne vhodno-izhodne funkcije za podatke\n"
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr " text uporabi besedilne vhodno-izhodne funkcije za podatke\n"
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+"\n"
+"ÄŒe poÅ¡ljemo tekoÄemu procesu »dd« signal %s, ta izpiÅ¡e vhodno-izhodne\n"
+"statistike na standardni izhod za napake in nadaljuje z delom.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Izbire so:\n"
+"\n"
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+"%<PRIuMAX>+%<PRIuMAX> zapisov na vhodu\n"
+"%<PRIuMAX>+%<PRIuMAX> zapisov na izhodu\n"
+
+# ! INEXACT
+#: src/dd.c:553
+#, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "%<PRIuMAX> odrezanih zapisov\n"
+msgstr[1] "%<PRIuMAX> odrezan zapis\n"
+msgstr[2] "%<PRIuMAX> odrezana zapisa\n"
+msgstr[3] "%<PRIuMAX> odrezani zapisi\n"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] "%<PRIuMAX> bajtov (%s) prepisanih"
+msgstr[1] "%<PRIuMAX> bajt (%s) prepisan"
+msgstr[2] "%<PRIuMAX> bajta (%s) prepisana"
+msgstr[3] "%<PRIuMAX> bajti (%s) prepisani"
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr "neskonÄno B"
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ", %g s, %s/s\n"
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "zapiramo vhodno datoteko %s"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "zapiramo izhodno datoteko %s"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "pišemo na %s"
+
+#: src/dd.c:886
+#, c-format
+msgid "unrecognized operand %s"
+msgstr "neprepoznan operand %s"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "neveljavna pretvorba: %s"
+
+#: src/dd.c:900
+#, c-format
+msgid "invalid input flag: %s"
+msgstr "neveljavna vhodna izbira: %s"
+
+# ! INEXACT
+#: src/dd.c:903
+#, c-format
+msgid "invalid output flag: %s"
+msgstr "neveljavno izhodna izbira: %s"
+
+#: src/dd.c:906
+#, c-format
+msgid "invalid status flag: %s"
+msgstr "neveljavna statusna izbira: %s"
+
+#: src/dd.c:942
+#, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "neprepoznan operand %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "neveljavno Å¡tevilo %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr "pretvorbe ascii, ebcdic in ibm se medsebojno izkljuÄujejo"
+
+#: src/dd.c:973
+#, c-format
+msgid "cannot combine block and unblock"
+msgstr "pretvorbi block in unblock se medsebojno izkljuÄujeta"
+
+# ! INEXACT
+#: src/dd.c:975
+#, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "pretvorbi lcase in ucase se medsebojno izkljuÄujeta"
+
+#: src/dd.c:977
+#, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "pretvorbi excl in nocreat se medsebojno izkljuÄujeta"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"opozorilo: obvoz okoli napake lseek v jedru za datoteko (%s)\n"
+" vrste mt_type=0x%0lx -- glejte <sys/mtio.h> za seznam zvrsti"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, c-format
+msgid "%s: cannot seek"
+msgstr "%s: premik s »seek« ni mogoÄ"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr "prekoraÄitev odmika pri branju datoteke %s"
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "opozorilo: pokvarjen odmik datoteke po napaki pri branju"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr "napake v jedru ni bilo mogoÄe zaobiti"
+
+#: src/dd.c:1376
+#, c-format
+msgid "setting flags for %s"
+msgstr "nastavljamo zastavice za %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr "fdatasync ni uspel za %s"
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr "fsync ni uspel za %s<"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "odpiramo %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+"odmik prevelik: ni moÄ odrezati na dolžino seek=%<PRIuMAX> (%lu-bajtnih) "
+"blokov"
+
+#: src/dd.c:1730
+#, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "napredovali smo prek %<PRIuMAX> bajtov v izhodni datoteki %s"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "Dat. sist. Tip"
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "Dat. sist. "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " Inodov IUpor IPros IUpo%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Vel. Upor Prost Upo%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Vel. Upor. Prost Upo%%"
+
+#: src/df.c:165
+#, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %s-blokov Upor. Na voljo Kapacit."
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " %4s-blokov Upor. Na voljo Upo%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Priklopljeno na\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "trenutnega imenika ni mogoÄe ugotoviti"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "imenik %s ni dosegljiv"
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "statistike trenutnega imenika (zdaj %s) ni moÄ ugotoviti"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"IzpiÅ¡emo informacije o datoteÄnem sistemu, na katerem se nahaja DATOTEKA,\n"
+"ali (privzeto) o vseh datoteÄnih sistemih.\n"
+"\n"
+
+#: src/df.c:749
+#, fuzzy
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all vkljuÄno s praznimi datoteÄnimi sistemi\n"
+" -B, --block-size=VELIKOST uporabljamo VELIKOST bajtov velike bloke\n"
+" -h, --human-readable velikosti v Äloveku umljivi obliki (npr. 1K 234M "
+"2G)\n"
+" -H, --si podobno kot -h, vendar z bazo 1000 namesto 1024\n"
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes izpis informacije o inode namesto o porabi blokov\n"
+" -k isto kot --block-size=1K\n"
+" -l, --local omejimo seznam na lokalni datoteÄni sistem\n"
+" --no-sync brez klica sync() pred izpisom porabe (privzeto)\n"
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability izhodni format POSIX\n"
+" --sync klic sync() pred izpisom porabe\n"
+" -t, --type=TIP samo datoteÄni sistemi tipa TIP\n"
+" -T, --print-type izpis datoteÄnega sistem\n"
+" -x, --exclude-type=TIP brez datoteÄnih sistemov tipa TIP\n"
+" -v (ignorirano)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"VELIKOST je ena od naslednjih oznak (ali pa celo Å¡tevilo, ki mu lahko sledi\n"
+"ena od naslednjih oznak): kB 1000, K 1024, MB 1000×1000, M 1024×1024 in "
+"tako\n"
+"dalje za G, T, P, E, Z in Y.\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr "izbira --kilobytes je odsvetovana; namesto nje uporabite -k"
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "tip datoteÄnega sistema %s je obenem izbran in izloÄen"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Opozorilo: "
+
+#: src/df.c:943
+#, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%stabele priklopljenih datoteÄnih sistemov ni moÄ prebrati"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr "obdelan ni bil noben datoteÄni sistem"
+
+# ! INEXACT
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Uporaba: %s [IZBIRA]... [DATOTEKA]...\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Izpis ukazov za nastavitev spremenljivke LS_COLORS.\n"
+"\n"
+"DoloÄitev oblike izhoda:\n"
+" -b, --sh, --bourne-shell oblika Bournove ukazne lupine za nastavitev \n"
+" spremenljivke LS_COLORS\n"
+" -c, --csh, --c-shell oblika ukazne lupine C za nastavitev "
+"LS_COLORS\n"
+" -p, --print-database izpis privzeth vrednosti\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"ÄŒe je DATOTEKA podana, iz nje preberemo, katero barvo uporabimo za kateri "
+"tip\n"
+"datotek oziroma pripon. Sicer se uporabi vgrajena tabela. Za podrobnosti o \n"
+"skladnji datoteke poženite »dircolors --print-database«.\n"
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s:%lu: neveljavna vrstica; manjka drugi element"
+
+# ! INEXACT
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu: neprepoznana kljuÄna beseda %s"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<interno>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"izpis privzetih vrednosti (izbira --print-data-base, -p) ni združljiv\n"
+"z izbiro sintakse ukazne lupine"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr ""
+"DatoteÄnih operandov ne moremo kombinirati z izbiro --print-database (-p)."
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "spremenljivka SHELL ni nastavljena, niti ni podan tip ukazne lupine"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uporaba: %s IME\n"
+" ali: %s IZBIRA\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"IzpiÅ¡emo IME brez elementa za zadnjo poÅ¡evnico (/); Äe IME ne vsebuje\n"
+"poševnic, izpišemo ».« (pomeni trenutni imenik).\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+"\n"
+"Zgleda:\n"
+" %s /usr/bin/sort Izhod: »/usr/bin«.\n"
+" %s stdio.h Izhod: ».«.\n"
+
+#: src/du.c:279 src/wc.c:108
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Uporaba: %s [IZBIRA]... [DATOTEKA]...\n"
+" ali: %s [IZBIRA]... --files0-from=F\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"Povzetek porabe diska za datoteko DATOTEKA, rekurzivno po podimenikih.\n"
+"\n"
+
+#: src/du.c:290
+#, fuzzy
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+" -a, --all izpis za vse datoteke, ne le za imenike\n"
+" --apparent-size izpis navidezne dolžine namesto porabe diska; "
+"slednja \n"
+" je navadno veÄja, v doloÄenih primerih (razprÅ¡ene\n"
+" datoteke, notranja fragmentiranost, indirektni "
+"bloki\n"
+" ipd.) pa je lahko tudi manjša\n"
+" -B, --block-size=VELIKOST Å¡tejemo v VELIKOST bajtov velikih blokih\n"
+" -b, --bytes isto kot »--apparent-size --block-size=1«\n"
+" -c, --total skupni povzetek\n"
+" -D, --dereference-args razreÅ¡imo poti, Äe so simbolne povezave\n"
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+#, fuzzy
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+" --files0-from=S poraba diska za datoteke, navedene v datoteki S;\n"
+" datoteke v seznamu morajo biti loÄene z znakom "
+"NUL\n"
+" -H podobno kot --si, a z dodatnim opozorilom; izbira se "
+"bo\n"
+" kmalu spremenila v sopomenko --dereference-args (-"
+"D)\n"
+" -h, --human-readable velikosti v Äloveku berljivem zapisu (npr. 1K 234M "
+"2G)\n"
+" --si podobno kot -h, vendar v bazi 1000 namesto 1024\n"
+" -k isto kot --block-size=1K\n"
+" -l, --count-links trde povezeva Å¡tejemo po veÄkrat\n"
+" -m isto kot --block-size=1M\n"
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference sledimo vsem simbolnim povezavam, Å¡tejemo ciljne "
+"datoteke\n"
+" -P, --no-dereference ne sledimo nobeni simbolni povezavi (privzeto)\n"
+" -O, --null vsako izhodno vrstico zakljuÄimo z znakom NUL "
+"namesto NL\n"
+" -S, --separate-dirs brez velikosti podimenikov\n"
+" -s, --summarize za vsak argument samo povzetek\n"
+
+#: src/du.c:323
+#, fuzzy
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system brez imenikov na ostalih datoteÄnih sistemih\n"
+" -X DATOTEKA, --exclude-from=DATOTEKA brez datotek, ki jih pokriva "
+"vzorec, \n"
+" podan v DATOTEKI\n"
+" --exclude=VZOREC brez datotek, ki jih pokriva podani VZOREC\n"
+" --max-depth=N razÄlenjeni izpis samo za imenike (in datoteke pri\n"
+" izbiri --all), ki so N ali manj ravni pod v ukazni \n"
+" lupini navedenim imenikom; --max-depth=0 je isto "
+"kot\n"
+" --summarize\n"
+
+#: src/du.c:332
+#, fuzzy
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+" --time prikaži Äas zadnje spremembe katerekoli datoteke v\n"
+" imeniku ali kateregakoli od podimenikov\n"
+" --time=BESEDA prikaži Äas kot BESEDA namesto Äasa zadnje "
+"spremembe:\n"
+" atime, access, use, ctime ali status\n"
+" --time-style=SLOG prikaži Äas z uporabo navedenega SLOGA\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT se tolmaÄi kot pri ukazu »date«\n"
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "skupno"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+"OPOZORILO: uporabljajte --si, ne -H; pomen izbire -H se bo kmalu spremenil\n"
+"in postal sopomenka za --dereference-args (-D)"
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "neveljavna najveÄja globina %s"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr "izbira --megabytes je odsvetovana; namesto nje uporabite -m"
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "možnosti se izkljuÄujeta - ali izpis vseh, ali povzetek"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "opozorilo: povzetek je isto kot izbira --max-depth=0"
+
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "opozorilo: povzetek se izkljuÄuje z --max-depth=%lu"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr "DatoteÄnih operandov ne moremo kombinirati z izbiro --files0-from."
+
+# POZOR!!! Razisci, kaj program res tu pocne!
+# ! INEXACT
+#: src/du.c:960 src/wc.c:662
+#, c-format
+msgid "cannot read file names from %s"
+msgstr "ni mogoÄe prebrati imen datotek iz %s"
+
+# ! INEXACT
+#: src/du.c:1000 src/du.c:1003
+msgid "invalid zero-length file name"
+msgstr "neveljavno ime (dolžina niÄ) datoteke"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Uporaba: %s [IZBIRA]... [NIZ]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+"IzpiÅ¡emo NIZ ali veÄ NIZOV na standardni izhod.\n"
+"\n"
+" -n ne izpisuj konÄnega znaka za novo vrstico\n"
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+" -e pri izpisu tolmaÄi spodaj navedena ubežna zaporedja "
+"(privzeto)\n"
+" -E onemogoÄi tolmaÄenje ubežnih zaporedij v NIZIH\n"
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"ÄŒe je veljavna izbira -e, pri izpisu prepoznamo in tolmaÄimo naslednja\n"
+"ubežna zaporedja:\n"
+"\n"
+" \\ONNN znak s kodo NNN (osmiško) v trenutnem kodnem naboru\n"
+" \\\\ nagibnica\n"
+" \\a zvonÄek (BEL)\n"
+" \\b pomik za znak nazaj\n"
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c ne izpiÅ¡i konÄnega znaka za skok v novo vrstico\n"
+" \\f skok na novo stran\n"
+" \\n skok v novo vrstico\n"
+" \\r povratek na zaÄetek vrstice\n"
+" \\t horizontalni tabulator\n"
+" \\v vertikalni tabulator\n"
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Uporaba: %s [IZBIRA]... [-] [IME=VREDNOST]... [UKAZ [ARGUMENT]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"DoloÄi VREDNOST spremenljivki okolja z danim IMENOM in poženi UKAZ.\n"
+"\n"
+" -i, --ignore-environment zaÄni iz praznega okolja\n"
+" -u, --unset=IME odstrani spremenljivko z navedenim IMENOM iz "
+"okolja\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"Sam - implicira -i. Če UKAZ ni podan, izpišemo spremenljivke okolja.\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Tabulatorje v vsaki od DATOTEK nadomestimo s presledki in rezultat izpišemo\n"
+"na standardni izhod. ÄŒe DATOTEKA ni podana, ali Äe je enaka - (minus), "
+"beremo\n"
+"s standardnega vhoda.\n"
+"\n"
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial nadomesti samo tabulatorje, ki sledijo praznim znakom\n"
+" -t, --tabs=Å IRINA Å IRINA tabulatorja naj bo navedeno namesto 8\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+" -t, --tabs=SEZNAM uporabi z vejicami loÄen SEZNAM eksplicitnih "
+"tabulatorjev\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr "tabulator je prevelik %s"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "Å¡irina tabulatorja vsebuje neveljaven(-ne) znak(e): %s"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "Å¡irina tabulatorja ne more biti 0"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "seznam tabulatorjev mora biti naraÅ¡ÄajoÄ"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, c-format
+msgid "input line is too long"
+msgstr "vhodna vrstica je predolga"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uporaba: %s IZRAZ\n"
+" ali: %s IZBIRA\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"\n"
+"Ovrednoten IZRAZ izpišemo na standardni izhod. Operatorji v spodnjem\n"
+"seznamu so razvrÅ¡Äeni po naraÅ¡ÄajoÄi prednosti, prazna vrstica loÄi\n"
+"skupine z isto prednostjo. Vrednost IZRAZA je lahko:\n"
+"\n"
+" ARG1 | ARG2 ARG1, Äe ta ni prazen ali enak 0, sicer ARG2\n"
+" \n"
+" ARG1 & ARG2 ARG1, Äe ni noben argumentov prazen ali enak 0, sicer 0\n"
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"\n"
+" ARG1 < ARG2 ARG1 je manjši od ARG2\n"
+" ARG1 <= ARG2 ARG1 je manjši ali enak ARG2\n"
+" ARG1 = ARG2 ARG1 je enak ARG2\n"
+" ARG1 != ARG2 ARG1 ni enak ARG2\n"
+" ARG1 >= ARG2 ARG1 je veÄji ali enak ARG2\n"
+" ARG1 > ARG2 ARG1 je veÄji od ARG2\n"
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+"\n"
+" ARG1 + ARG2 aritmetiÄna vsota ARG1 in ARG2\n"
+" ARG1 - ARG2 aritmetiÄna razlika ARG1 in ARG2\n"
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+"\n"
+" ARG1 * ARG2 aritmetiÄni produkt ARG1 in ARG2\n"
+" ARG1 / ARG2 aritmetiÄni koliÄnik pri deljenju ARG1 z ARG2\n"
+" ARG1 % ARG2 aritmetiÄni ostanek pri deljenju ARG1 z ARG2\n"
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"\n"
+" NIZ : REGIZR ujemanje NIZA s sidranim regularnim izrazom REGIZR\n"
+"\n"
+" match STRING REGIZR isto kot NIZ : REGIZR\n"
+" substr NIZ POLOŽAJ DOLŽINA podniz NIZA, POLOŽAJ se šteje od 1 dalje \n"
+" index NIZ ZNAKI mesto v NIZU, kjer se nahajajo ZNAKI, sicer "
+"0\n"
+" length NIZ dožina NIZA\n"
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+" + SIMBOL ravnaj s SIMBOLOM, kot da je NIZ, Äeprav je\n"
+" kljuÄna beseda kot »match« ali operator kot "
+"»/«\n"
+"\n"
+" ( IZRAZ ) vrednost IZRAZA\n"
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"Pazite na to, da morajo mnogi operatorji biti zavarovani z nagibnico \\\n"
+"ali narekovaji, da jih ne interpretira ukazna lupina. Primerjave so\n"
+"aritmetiÄne, Äe sta oba argumenta Å¡tevili, sicer leksikografske. Ujemanje\n"
+"vzorcev vrne niz med oklepajema \\( in \\) ali pa prazen niz; Äe \\( in \\)\n"
+"nista podana, vrne Å¡tevilo znakov, ki se ujemajo, ali 0.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+"\n"
+"Izhodni status je 0, Äe IZRAZ ni prazen ali enak 0; 1, Äe je IZRAZ prazen "
+"ali 0;\n"
+"2, Äe IZRAZ ni skladenjsko pravilen; 3, Äe je priÅ¡lo do napake.\n"
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "napaka v skladnji"
+
+#: src/expr.c:468 src/ptx.c:292
+#, c-format
+msgid "error in regular expression matcher"
+msgstr "napaka v ujemalniku z regularnimi izrazi"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "ne-Å¡tevilÄni argument"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "deljenje z niÄ"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uporaba: %s [Å TEVILO]...\n"
+" ali: %s IZBIRA\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"Vsa podana ŠTEVILA razstavimo na prafaktorje in slednje izpišemo.\n"
+"\n"
+
+#: src/factor.c:85
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+"Izpiše prafaktorje za vsa podana cela ŠTEVILA. Če niso podana kot\n"
+"argument v ukazni vrstici, jih beremo s standardnega vhoda.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s je preveliko"
+
+#: src/factor.c:158
+#, c-format
+msgid "%s is not a valid positive integer"
+msgstr "%s ni veljavno pozitivno celo Å¡tevilo"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Uporaba: %s [-Å TEVKE] [IZBIRA]... [DATOTEKA]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"Vsak odstavek v DATOTEKI(-ah) preoblikujemo in izpišemo na standardni "
+"izhod.\n"
+"Če DATOTEKA ni podana ali je enaka »-« (minus), beremo s standardnega "
+"vhoda.\n"
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin ohrani zamik prvih dveh vrstic\n"
+" -p, --prefix=NIZ preoblikuj samo vrstice, ki se zaÄno z NIZOM,\n"
+" tega pridaj oblikovanim vrsticam\n"
+" -s, --split-only poreži predolge vrstice, a brez poravnave\n"
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph zamik prve vrstice v odstavku je razliÄen od "
+"druge\n"
+" -u, --uniform-spacing en presledek med besedami, dva za piko\n"
+" -w, --width=Å IRINA najveÄja Å¡irina vrstice (privzeto 75 znakov)\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+"neveljavna izbira -- %c; -WIDTH je prepoznana le, Äe je navedena kot prva\n"
+"izbira; namesto tega uporabite -w N"
+
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr "neveljavna Å¡irina: %s"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"Vrstice v vsaki DATOTEKI na vhodu (privzet je standardni vhod) prelomimo\n"
+"in rezultat izpišemo na standardni izhod.\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes Å¡tejemo bajte namesto znakov\n"
+" -s, --spaces prelom na presledkih\n"
+" -w, --width=Å IRINA nastavimo Å IRINO vrstic (privzeto 80)\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, c-format
+msgid "invalid number of columns: %s"
+msgstr "neveljavno Å¡tevilo stoplcev: %s"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Izpišemo prvih 10 vrstic vsake od DATOTEK na standardni izhod.\n"
+"ÄŒe je podana veÄ kot ena DATOTEKA, pred vsebino izpiÅ¡emo Å¡e ime datoteke.\n"
+"ÄŒe DATOTEKA ni podana, ali Äe je enaka -, beremo s standardnega vhoda.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+" -c, --bytes=[-]N izpiši prvih N bajtov vsake datoteke;\n"
+" Äe Å¡tevilu predhodi »-«, izpiÅ¡i vse razen "
+"zadnjih\n"
+" N bajtov vsake datoteke\n"
+" -n, --lines=[-]N izpiši prvih N vrstic vsake datoteke namesto "
+"prvih 10;\n"
+" Äe Å¡tevilu predhodi »-«, izpiÅ¡i vse razen "
+"zadnjih\n"
+" N vrstic vsake datoteke\n"
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent vedno brez izpisa imena datoteke\n"
+" -v, --verbose vedno izpišemo še ime datoteke\n"
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"VELIKOST ima lahko pripono b za množenje s 512, k za 1024 ali m za "
+"1024×1024.\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "napaka pri branju %s"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "napaka pri pisanju na %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr "%s: datoteka se je preveÄ skrÄila"
+
+#: src/head.c:230 src/head.c:1046
+#, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s: Å¡tevilo bajtov je preveliko"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: premik na zaÄetni položaj ni mogoÄ"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: premik na odmik %s ni mogoÄ"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "ni mogoÄe premakniti datoteÄnega kazalca za %s"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s je tako veliko, da ni predstavljivo"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "Å¡tevilo vrstic"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "Å¡tevilo bajtov"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "neveljavno Å¡tevilo vrstic"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "neveljavno Å¡tevilo bajtov"
+
+#: src/head.c:976 src/head.c:1034
+#, c-format
+msgid "invalid trailing option -- %c"
+msgstr "neveljavna zakljuÄna izbira -- %c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Uporaba: %s\n"
+" ali: %s IZBIRA\n"
+"IzpiÅ¡emo (Å¡estnajstiÅ¡ko) identifikacijsko Å¡tevilko trenutnega raÄunalnika.\n"
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Uporaba: %s [IME]\n"
+" ali: %s IZBIRA\n"
+"Izpišemo ali nastavimo gostiteljsko ime trenutnega sistema.\n"
+
+#: src/hostname.c:103
+#, c-format
+msgid "cannot set name to %s"
+msgstr "imena ni moÄ nastaviti na %s"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr "na tem sistemu imena raÄunalnika ni mogoÄe nastavljati"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "imena raÄunalnika ni mogoÄe ugotoviti"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Uporaba: %s [IZBIRA]... [UPORABNIK]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Izpišemo informacije o navedenem UPORABNIKU ali pa o trenutnem uporabniku.\n"
+"\n"
+" -a ignorirano, ostalo zaradi združljivosti z ostalimi "
+"razliÄicami\n"
+" -g, --group izpiši samo številko skupine (GID)\n"
+" -G, --groups izpiši številke vseh skupin\n"
+" -n, --name pri izbirah -ugG izpiši ime uporabnika namesto številke\n"
+" -r, --real izpiši pravi ID namesto efektivnega -ugG\\n\"\n"
+" -u, --user izpiši smo številko uporabnika (UID)\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"Brez navedene IZBIRE izpišemo nekaj uporabnih identifikacijskih informacij.\n"
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "izbiri »le uporabnik« in »le skupina« se izkljuÄujeta"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr "v privzeti obliki ni možen izpis samo imen ali realnih ID"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Uporabnik ne obstaja"
+
+#: src/id.c:205
+#, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "uporabniško ime za UID %lu ni ugotovljivo"
+
+#: src/id.c:229
+#, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "ime skupine za GID %lu ni ugotovljivo"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "dodaten seznam skupin ni na voljo"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " skupine="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr "opcija »strip« ni dovoljena pri namestitvi imenika"
+
+#: src/install.c:321
+#, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "navedba ciljnega imenika ni dovoljena pri namestitvi imenika"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "neveljaven naÄin %s"
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "lastniÅ¡tva %s ni mogoÄe spremeniti"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "datoteke %s ni moÄ Äasovno oznaÄiti"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "vejitev ni mogoÄa"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "ni mogoÄe pognati »strip«"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "pišemo na %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "neveljavno ime uporabnika %s"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "ustvarjamo imenik %s"
+
+# ! INEXACT
+#: src/install.c:651
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Uporaba: %s [IZBIRA]... [-T] IZVOR CILJ\n"
+" ali: %s [IZBIRA]... IZVOR... IMENIK\n"
+" ali: %s [IZBIRA]... -t IMENIK IZVOR...\n"
+" ali: %s [IZBIRA]... -d IMENIK...\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"V prvih treh oblikah prepiÅ¡emo IZVOR na CILJ ali veÄ IZVOROV v IMENIK\n"
+"ter obenem nastavimo zaÅ¡Äito, lastnika in skupino. V Äetrti obliki\n"
+"ustvarimo nov IMENIK ali veÄ IMENIKOV s podanimi lastnostmi.\n"
+"\n"
+
+# ! INEXACT
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup[=TIP] pred pisanjem prek obstojeÄe ciljne datoteke \n"
+" izdelamo varnostno kopijo podanega TIPA\n"
+" -b enako kot --backup, vendar ne sprejema argumenta\n"
+" -c (ignorirano)\n"
+" -d, --directory vse argumente obravnavamo kot imena imenikov; "
+"ustvarimo\n"
+" vse komponente podanih imenikov\n"
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D ustvarimo vse vodilne komponente CILJA razen zadnje,\n"
+" zatem prepišemo IZVOR na CILJ\n"
+" -g, --group=SKUPINA uporabniška skupina, namesto skupine trenutnega "
+"procesa\n"
+" -m, --mode=ZAÅ ÄŒITA zaÅ¡Äita (kot v chmod), namesto privzete rwxr-xr-x\n"
+" -o, --owner=LASTNIK lastnik (samo superuporabnik)\n"
+
+#: src/install.c:681
+#, fuzzy
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps ohranimo Äas dostopa/spremembe, kot jih ima "
+"IZVOR\n"
+" -s, --strip ogulimo simbolne tabele (samo prva in druga oblika)\n"
+" -S, --suffix=PRIPONA izrecno navedemo pripono varnostnih kopij\n"
+" -t, --target-directory=IMENIK prepiši vse IZVORE v IMENIK\n"
+" -T, --no-target-directory obravnavaj CILJ kot navadno datoteko\n"
+" -v, --verbose z izpisom imen vseh ustvarjenih imenikov\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"Varnostna kopija ima pripono »~«, razen Äe ni z izbiro --suffix ali\n"
+"spremenljivko SIMPLE_BACKUP_SUFFIX nastavljeno drugaÄe. Vrsto varnostnih\n"
+"kopij lahko nastavimo z izbiro --backup ali spremenljivko\n"
+"VERSION_CONTROL. Možnosti so:\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"Za vsak par vrstic na vhodu z enakimi združitvenimi polji izpišemo vrstico\n"
+"na standardni izhod. Privzeto združitveno polje je prvo, loÄeno s praznim\n"
+"prostorom. ÄŒe sta DATOTEKA1 ali DATOTEKA2 (ne pa obe hkrati) enaki -, "
+"beremo\n"
+"s standardnega vhoda.\n"
+"\n"
+" -a DATOTEKA izpišemo vrstice brez para, ki izvirajo iz navedene \n"
+" DATOTEKE (spremenljivka DATOTEKA lahko zavzame "
+"vrednosti\n"
+" 1 ali 2, kar ustreza DATOTEKI1 in DATOTEKI2)\n"
+" -e PRAZNO manjkajoÄe vhodno polje nadomestimo z nizom PRAZNO\n"
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case pri primerjanju obravnavamo velike in male Ärke enako\n"
+" -j POLJE isto kot »-1 POLJE -2 POLJE«\n"
+" -o OBLIKA pri izpisu uporabimo predpisano OBLIKO\n"
+" -t ZNAK navedeni ZNAK naj bo loÄilo med polji na vhodu in "
+"izhodu\n"
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v DATOTEKA isto kot -a DATOTEKA, vendar brez združenih izhodnih "
+"vrstic\n"
+" -1 POLJE združujemo glede na navedeno POLJE v prvi datoteki\n"
+" -2 POLJE združujemo glede na navedeno POLJE v drugi datoteki\n"
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"ÄŒe izbira -t ZNAK ni podana, vodilni presledki loÄujejo polja in se ne\n"
+"upoÅ¡tevajo, sicer pa loÄuje polja ZNAK. POLJE je Å¡tevilka polja, Å¡teto od 1\n"
+"dalje. OBLIKA je eno ali veÄ z vejico ali presledkom loÄenih doloÄil, "
+"vsako \n"
+"od njih je oblike »DATOTEKA.POLJE« ali »0«. Privzeta OBLIKA izpiše "
+"združitveno\n"
+"polje, vsa preostala polja iz DATOTEKE1, in zatem Å¡e vsa preostala polja iz\n"
+"DATOTEKE2; loÄilo med polji je ZNAK.\n"
+"\n"
+"Pomembno: DATOTEKA1 in DATOTEKA2 morata biti urejeni po polju, po\n"
+"katerem ju združujemo. Če »join« ne podamo izbir npr. uporabimo »sort -k "
+"1b,1«.\n"
+
+#: src/join.c:617 src/join.c:812
+#, c-format
+msgid "invalid field number: %s"
+msgstr "neveljavna Å¡tevilka polja: %s"
+
+#: src/join.c:638 src/join.c:647
+#, c-format
+msgid "invalid field specifier: %s"
+msgstr "neveljavno doloÄilo polja: %s"
+
+#: src/join.c:654
+#, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "neveljavna Å¡tevilka datoteke v doloÄilu polja: %s"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr "nezdružljivi združevalni polji %lu, %lu"
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr "nasprotujoÄa si niza za nadomestitev praznega polja"
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr "prazen tabulator"
+
+#: src/join.c:870 src/sort.c:3031
+#, c-format
+msgid "multi-character tab %s"
+msgstr "veÄznakovni tabulator %s"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr "nezdružljivi tabulatorji"
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "obeh datotek ne moremo hkrati brati s standardnega vhoda"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"Uporaba: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" ali: %s -l [SIGNAL]...\n"
+" ali: %s -t [SIGNAL]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+"Procesom pošljemo signale, ali pa izpišemo signale.\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" doloÄimo ime ali Å¡tevilko signala, ki ga želimo poslati\n"
+" -l, --list izpišemo imena signalov, ali pretvorimo številko signala\n"
+" v ime (ali obratno)\n"
+" -t, --table izpišemo tabelo signalnih informacij\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+"\n"
+"SIGNAL lahko podamo z imenom (npr. HUP) ali Å¡tevilko (npr. 1),\n"
+"ali pa z izhodno statusno kodo procesa, ustavljenega s signalom.\n"
+"PID (identifikacijska Å¡tevilkoa uporabnika) je celo Å¡tevilo; negativna \n"
+"vrednost doloÄa identifikacijko Å¡tevilko skupine.\n"
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: neveljaven signal"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: neveljavna identifikacijska Å¡tevilka procesa"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "neveljavna izbira -- %c"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: podan veÄ kot en signal"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "hkrati sta podani izbiri -l in -t"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "signala ni moÄ kombinirati z izbirama -l ali -t"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr "Å¡tevilka procesa (PID) ni doloÄena"
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uporaba: %s DATOTEKA1 DATOTEKA2\n"
+" ali: %s IZBIRA\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+"S klicem funkcije link(2) ustvarimo povezavo med povezavo DATOTEKO2 in\n"
+"obstojeÄo DATOTEKO1.\n"
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "ni mogoÄe ustvariti povezave %s na %s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr "%s: opozorilo: trda povezava na simbolno povezavo ni prenosljiva"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: trda pozezava ni dovoljena za imenik"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: ni mogoÄe pisati prek imenika"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: naj nadomestimo %s? "
+
+#: src/ln.c:295
+#, c-format
+msgid "creating symbolic link %s"
+msgstr "ustvarjamo simbolno povezavo %s"
+
+#: src/ln.c:296
+#, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "ustvarjamo simbolno povezavo %s -> %s"
+
+#: src/ln.c:298
+#, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "ustvarjamo trdo povezavo %.0s%s"
+
+#: src/ln.c:301
+#, c-format
+msgid "creating hard link %s"
+msgstr "ustvarjamo trdo povezavo %s"
+
+#: src/ln.c:302
+#, c-format
+msgid "creating hard link %s => %s"
+msgstr "ustvarjamo trdo povezavo %s => %s"
+
+# ! INEXACT
+#: src/ln.c:324
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Uporaba: %s [IZBIRA]... [-T] CILJ POVEZAVA (prva oblika)\n"
+" ali: %s [IZBIRA]... CILJ (druga oblika)\n"
+" ali: %s [IZBIRA]... CILJ... IMENIK (tretja oblika)\n"
+" ali: %s [IZBIRA]... -t IMENIK CILJ (Äetrta oblika)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"V prvi obliki ustvarimo povezavo do doloÄenega CILJA z imenom POVEZAVE.\n"
+"V drugi obliki se ustvari povezava do CILJA v trenutnem imeniku.\n"
+"V tretji in Äetrti povezavi ustvarimo povezavo do vsakega CILJA v navedenem\n"
+"IMENIKU. Privzeti tip povezav so trde povezave; simbolne zahtevamo\n"
+"z izbiro --symbolic. Pri ustvarjanju trdih povezav morajo CILJI obstajati.\n"
+"\n"
+
+# ! INEXACT
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup[=TIP] pred pisanjem prek obstojeÄe ciljne datoteke\n"
+" izdelamo varnostno kopijo podanega TIPA\n"
+" -b enako kot --backup, vendar ne sprejema "
+"argumenta\n"
+" -d, -F, --directory trde povezave imenikov (samo naduporabnik;\n"
+" zaradi sistemskih omejitev izbira morda ni\n"
+" mogoÄa)\n"
+" -f, --force brez vprašanj pobrišemo morebitne ciljne "
+"datoteke\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference obravnavaj simbolne povezave na imenik kot\n"
+" navadne datoteke\n"
+" -i, --interactive zahtevaj potrditev, preden pobrišemo "
+"datoteko\n"
+" -s, --symbolic simbolne povezave namesto trdih\n"
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" -S, --suffix=PRIPONA izrecno doloÄena pripona varnostne kopije\n"
+" -t, --target-directory=IMENIK izrecna navedba IMENIKA, v katerem ustvari\n"
+" povezave\n"
+" -T, --no-target-directory obravnavaj POVEZAVO kot navadno datoteko\n"
+" -v, --verbose z izpisom imen datotek, ki jih povezujemo\n"
+
+#: src/ln.c:484
+#, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "Izbiri --target-directory in --no-target-directory se izkljuÄujeta"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Uporaba: %s [IZBIRA]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"Izpišemo uporabniško ime trenutnega uporabnika.\n"
+"\n"
+
+#: src/logname.c:89
+#, c-format
+msgid "no login name"
+msgstr "uporabniško ime manjka"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%b %e %Y"
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%b %e %H:%M"
+
+# ! INEXACT
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "ignoriram neveljavno vrednost spremenljivke QUOTING_STYLE: %s"
+
+# ! INEXACT
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "ignoriram neveljavno Å¡irino v spremenljivki COLUMNS: %s"
+
+# ! INEXACT
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr "ignoriram neveljavni tabulator v spremenljivki TABSIZE: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "neveljavna Å¡irina vrstice: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "neveljaven tabulator: %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "neveljavna oblika ure %s"
+
+# ! INEXACT
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "neprepoznana predpona: %s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "vrednosti v spremenljivki LS_COLORS ni moÄ raztolmaÄiti"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "imenika %s ni mogoÄe odpreti"
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "ni mogoÄe ugotoviti enote in inoda datoteke %s"
+
+#: src/ls.c:2353
+#, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "%s: že izpisanega imenika ne podvajamo"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "beremo imenik %s"
+
+#: src/ls.c:2410
+#, c-format
+msgid "closing directory %s"
+msgstr "zapiramo imenik %s"
+
+# ! INEXACT
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "ni mogoÄe primerjati imen datotek %s in %s"
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"Izpis informacij o DATOTEKAH (privzeto vse datoteke v trenutnem imeniku),\n"
+"urejenih po abecedi, Äe ni podana nobena od izbir -cftuvSUX ali --sort.\n"
+"\n"
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all tudi imena, ki se zaÄnejo s piko\n"
+" -A, --almost-all tudi imena, ki se zaÄnejo s piko, a brez ».« in "
+"»..«\n"
+" --author skupaj z -l: izpis avtorja datoteke\n"
+" -b, --escape izpis osmiške kode za neizpisljive znake\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=VELIKOST merjeno v VELIKOST bajtov velikih blokih\n"
+" -B, --ignore-backups ne izpisuj varnostnih kopij, ki se konÄajo z ~\n"
+" -c razvrÅ¡Äeno po datumu zadnje spremembe;\n"
+" skupaj z -lt: prikaži Äas zadnje spremembe "
+"stanja\n"
+" (ctime) in uredi po njem;\n"
+" skupaj z -l: prikaži ctime, urejeno po "
+"imenih;\n"
+" sicer: urejeno po ctime\n"
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C imena izpišemo v stolpcih\n"
+" --color[=KDAJ] kdaj se uporabijo barve za oznaÄitev tipa "
+"datoteke\n"
+" Možnosti so »never«, »always« in »auto«\n"
+" -d, --directory izpis imen imenika(-ov) namesto njihove "
+"vsebine,\n"
+" brez sledenja simbolnim povezavam\n"
+" -D, --dired izpis primeren za naÄin »dired« v Emacsu\n"
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f brez razvrÅ¡Äanja; omogoÄi -aU, onemogoÄi -ls --"
+"color\n"
+" -F, --classify s pripono (*/=@|) oznaÄi tip datoteke\n"
+" --file-type podobno, vendar ne pripenja »*«\n"
+" --format=BESEDA across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time kot -l --time-style=full-iso\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr " -g kot -l, vendar brez izpisa lastnika\n"
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+" --group-directories-first\n"
+" najprej imeniki, zatem datoteke\n"
+
+#: src/ls.c:4322
+#, fuzzy
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all vkljuÄno s praznimi datoteÄnimi sistemi\n"
+" -B, --block-size=VELIKOST uporabljamo VELIKOST bajtov velike bloke\n"
+" -h, --human-readable velikosti v Äloveku umljivi obliki (npr. 1K 234M "
+"2G)\n"
+" -H, --si podobno kot -h, vendar z bazo 1000 namesto 1024\n"
+
+#: src/ls.c:4328
+#, fuzzy
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+" -G, --no-group kot -l, vendar brez izpisa skupine\n"
+" -h, --human-readable skupaj z -l izpiÅ¡i velikost v Äloveku umljivem\n"
+" zapisu (npr.1K 234M 2G)\n"
+" --si podobno kot -h, vendar v bazi 1000 namesto "
+"1024\n"
+" -H, --dereference-command-line sledimo simbolnim povezavam v ukazni "
+"vrstici\n"
+" --dereference-command-line-symlink-to-dir\n"
+" sledimo vsem simbolnim povezavam v ukazni "
+"vrstici,\n"
+" ki kažejo na imenike\n"
+" --hide=VZOREC brez impliciranih vnosov, opisanih z VZORCEM\n"
+
+#: src/ls.c:4337
+#, fuzzy
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=BESEDA imenom datotek pripnemo indikator: BESEDA "
+"sme\n"
+" biti »none« (privzeto), »slash« (-p), »file-"
+"type«\n"
+" (--file-type) ali »classify« (-F)\n"
+" -i, --inode izpis inoda pri vsaki datoteki\n"
+" -I, --ignore=VZOREC pri izpisu izpusti imena, ki ustrezajo VZORCU\n"
+" -k isto kot --block-size=1K\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l dolga oblika izpisa\n"
+" -L, --dereference izpis imen datotek, na katere kažejo simbolne\n"
+" povezave, namesto simbolnih povezav\n"
+" -m z vejicami loÄena imena prek celotne Å¡irine "
+"vrstice\n"
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid Å¡tevilÄne vrednosti UID in GID namesto imen\n"
+" -N, --literal izpis imen v neobdelani obliki (npr. krmilnih\n"
+" znakov ne obravnavamo posebno)\n"
+" -o dolga oblika izpisa brez uporabniške skupine\n"
+" -p, --indicator-style=slash imenike oznaÄimo s pripono »/«\n"
+
+# ! INEXACT
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars namesto krmilnih znakov izpišemo vprašaje (?)\n"
+" --show-control-chars neobdelan izpis krmilnih znakov (privzeta "
+"izbira,\n"
+" razen pri ukazu »ls« in izhodu na terminal)\n"
+" -Q, --quote-name imena izpišemo v dvojnih narekovajih\n"
+" --quoting-style=BESEDA slog izpisa; BESEDA je lahko »literal«, "
+"»locale«,\n"
+" »shell«, »shell-always«, »c« ali »escape«\n"
+
+#: src/ls.c:4368
+#, fuzzy
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse razvrstitev po obrnjenem vrstnem redu\n"
+" -R, --recursive rekurziven izpis podimenikov\n"
+" -s, --size skupaj z -l: izpis velikosti datotek (v "
+"blokih)\n"
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S datoteke uredi po velikosti\n"
+" --sort=BESEDA namesto po imenu uredi po: brez urejanja \n"
+" (BESEDA=none), priponi (extension), Äasu "
+"nastanka\n"
+" (time) ali razliÄici (version)\n"
+" --time=BESEDA skupaj z -l: namesto Äasa zadnje spremembe "
+"prikaži\n"
+" Äas nastanka (BESEDA=ctime ali status) ali "
+"Äas\n"
+" zadnjega dostopa (atime, access ali use); "
+"skupaj\n"
+" z izbiro --sort=time tudi uredi po izbranem "
+"Äasu\n"
+
+#: src/ls.c:4382
+#, fuzzy
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=SLOG skupaj z -l: Äas prikaži glede na slog, podan "
+"s \n"
+" SLOGOM: full-iso, iso, locale, posix-iso, "
+"+OBLIKA\n"
+" OBLIKO tolmaÄimo kot pri ukazu »date«; Äe je\n"
+" OBLIKA enaka OBLIKA1<nova_vrstica>OBLIKA2, "
+"velja\n"
+" prva za stare datoteke, druga pa za nove;\n"
+" Äe se SLOG zaÄne s predpono »posix-«, velja\n"
+" podani slog samo izven krajevnega okolja "
+"POSIX\n"
+" -t ureditev po datumu zadnje modifikacije\n"
+" -T, --tabsize=STOLPCEV tabulator nastavljen na STOLPCEV namesto na 8\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u ureditev po datumu zadnjega dostopa;\n"
+" skupaj z -l: pokaži datum zadnjega dostopa\n"
+" -U brez urejanja; kot so v imeniku\n"
+" -v urejanje po Å¡tevilki razliÄice\n"
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -w, --width=STOLPCEV Å¡irina zaslova STOLPCEV namesto trenutne "
+"vrednosti\n"
+" -x izpis urejen v vrstice namesto v stolpce\n"
+" -X abecedna ureditev po priponah\n"
+" -1 izpis po eno datoteko v vrstici\n"
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"Privzeto se barve ne uporabljajo za oznaÄevanje vrste datoteke. To je\n"
+"enakovredno izbiri --color=none. Izbira --color brez argumenta KDAJ je\n"
+"enakovredna --color=always. Pri izbiri --color=auto se barve uporabijo "
+"samo,\n"
+"kadar je standardni izhod terminal (tty). Na rabo barv vpliva lupinska\n"
+"spremenljivka LS_COLORS, ki jo lahko nastavljamo z ukazom »dircolors«.\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+"\n"
+"Izhodni status je enak 0, Äe je vse v redu; 1, Äe je priÅ¡lo do manjÅ¡ih "
+"težav;\n"
+"2, Äe je priÅ¡lo do veÄjih težav.\n"
+
+#: src/md5sum.c:150
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Uporaba: %s [IZBIRA] [DATOTEKA]...\n"
+"Izpiše ali preveri nadzorne vsote %s (%d-bitne).\n"
+"ÄŒe DATOTEKA ni podana ali Äe je enaka -, se bere s standardnega vhoda.\n"
+"\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+" -b, --binary beri binarno (privzeto, razen pri branju s "
+"terminala)\n"
+
+#: src/md5sum.c:164
+msgid " -b, --binary read in binary mode\n"
+msgstr " -b, --binary beri binarno\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr " -c, --check preberi %s vsot iz DATOTEK in jih preveri\n"
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+" -t, --text beri besedilno (privzeto pri branju s terminala)\n"
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr " -t, --text beri besedilno (privzeto)\n"
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"\n"
+"Naslednji dve izbiri sta uporabni le pri preverjanju nadzornih vsot:\n"
+" --status brez izpisa, izhodna statusna koda kaže uspeh\n"
+" -w, --warn z opozorili pri nepravilno oblikovanih vrsticah\n"
+" z nadzornimi vsotami MD5\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"IzraÄun nadzornih vsot je opisan v %s. Pri preverjanju mora biti datoteka\n"
+"z vrednostmi v enaki obliki kot izpis programa. Privzet naÄin je izpis\n"
+"vrstice z nadzorno vsoto, statusnim znakom (»*« za binarne, » « za "
+"besedilne\n"
+"datoteke) in imenom DATOTEKE, za katero je bila izraÄunana nadzorna vsota.\n"
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: preveÄ vrstic z nadzorno vsoto"
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %<PRIuMAX>: nepravilno oblikovana vrstica z nadzorno vsoto %s"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: NAPAKA pri odpiranju ali branju\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "NAPAKA"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "V REDU"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: napaka pri branju"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: nobene pravilno oblikovane vrstice z nadzorno vsoto %s ni najti"
+
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] ""
+"OPOZORILO: %<PRIuMAX> od %<PRIuMAX> navedenih datotek se ne da prebrati"
+msgstr[1] ""
+"OPOZORILO: %<PRIuMAX> od %<PRIuMAX> navedene datoteke se ne da prebrati"
+msgstr[2] ""
+"OPOZORILO: %<PRIuMAX> od %<PRIuMAX> navedenih datotek se ne da prebrati"
+msgstr[3] ""
+"OPOZORILO: %<PRIuMAX> od %<PRIuMAX> navedenih datotek se ne da prebrati"
+
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "OPOZORILO: %<PRIuMAX> od %<PRIuMAX> nadzornih vsot se NE ujema."
+msgstr[1] "OPOZORILO: %<PRIuMAX> od %<PRIuMAX> nadzorne vsote se NE ujema."
+msgstr[2] "OPOZORILO: %<PRIuMAX> od %<PRIuMAX> nadzornih vsot se NE ujema."
+msgstr[3] "OPOZORILO: %<PRIuMAX> od %<PRIuMAX> nadzornih vsot se NE ujema."
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"izbiri --binary in --text nista smiselni pri preverjanju nadzornih vsot"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "izbira --status je smiselna samo pri preverjanju nadzornih vsot"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "izbira --warn je smiselna samo pri preverjanju nadzornih vsot"
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Uporaba: %s [IZBIRA] IMENIK...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"Ustvari IMENIK (ali veÄ imenikov), Äe ta Å¡e ne obstaja.\n"
+"\n"
+
+#: src/mkdir.c:67
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+" -m, --mode=ZAÅ ÄŒITA nastavi zaÅ¡Äito (kot pri chmod) namesto privzete\n"
+" a=rwx - umask\n"
+" -p, --parents brez opozorila Äe imenik obstaja; po potrebi ustvari\n"
+" še starševske imenike\n"
+" -v, --verbose z obvestilom o vsakem ustvarjenem imeniku\n"
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "ustvarjen imenik %s"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Uporaba: %s [IZBIRA] IME...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"Ustvarimo poimenovano cev (FIFO) z navedenim IMENOM.\n"
+"\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+" -m, --mode=ZAÅ ÄŒITA nastavi bite ZAÅ ÄŒITE namesto privzete a=rw - umask\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "napaÄna zaÅ¡Äita"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr "naÄin mora doloÄiti le bite dovoljenja za dostop do datoteke"
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Uporaba: %s [IZBIRA]... IME TIP [GLAVNO POMOŽNO]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"Ustvarimo posebno datoteko navedenega TIPA z navedenim IMENOM.\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+"\n"
+"GLAVNO in POMOŽNO število moramo vedno navesti za TIP b, c ali u, ne smemo "
+"pa\n"
+"ju navesti pri TIPU p. ÄŒe se GLAVNO ali POMOŽNO Å¡tevilo zaÄne z 0x ali 0X, "
+"se\n"
+"ga tolmaÄi kot Å¡estnajstiÅ¡ko Å¡tevilo; Äe se zaÄne z vodilno niÄko, kot "
+"osmiško,\n"
+"sicer pa kot desetiško število. TIP je lahko:\n"
+
+# ! INEXACT
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+" b ustvarimo bloÄno enoto (z medpomnilnikom)\n"
+" c, u ustvarimo znakovno enoto (brez medpomnilnika)\n"
+" p ustvarimo FIFO\n"
+
+#: src/mknod.c:146
+msgid "Special files require major and minor device numbers."
+msgstr ""
+"Posebne datoteke zahtevajo, da sta podani glavno in pomožno število naprave"
+
+#: src/mknod.c:156
+msgid "Fifos do not have major and minor device numbers."
+msgstr "Poimenovane cevi nimajo glavnih in pomožnih števil naprave"
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "bloÄne enote niso podprte"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "znakovne enote niso podprte"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "neveljavno GLAVNO Å¡tevilo enote %s"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "neveljavno POMOŽNO število enote %s"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "neveljavna enota %s %s"
+
+#: src/mknod.c:216
+#, c-format
+msgid "invalid device type %s"
+msgstr "neveljavna vrsta naprave %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Preimenujemo IZVOR v CILJ, ali veÄ IZVOROV v IMENIK.\n"
+"\n"
+
+# ! INEXACT
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup[=TIP] pred pisanjem prek obstojeÄe ciljne "
+"datoteke \n"
+" izdelaj varnostno kopijo podanega TIPA\n"
+" -b enako kot --backup, vendar ne sprejema "
+"argumenta\n"
+" -f, --force brez vpraÅ¡anj piÅ¡i prek obstojeÄih CILJEV\n"
+" -i, --interactive zahtevaj potrditev pred pisanjem prek "
+"obstojeÄega\n"
+" CILJA\n"
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --strip-trailing-slashes odstrani zakljuÄne poÅ¡evnice iz vseh "
+"podanih\n"
+" IZVOROV\n"
+" -S, --suffix=PRIPONA izrecno navedena PRIPONA varnostnih kopij\n"
+
+#: src/mv.c:308
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" -t, --target-directory=IMENIK vse IZVORE premakni v navedeni IMENIK\n"
+" -T, --no-target-directory obravnavaj CILJ kot navadno datoteko\n"
+" -u, --update datoteko premakni samo, Äe je novejÅ¡a od\n"
+" obstojeÄe ciljne ali Äe ciljna ne obstaja\n"
+" -v, --verbose z razlago poteka\n"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Uporaba: %s [IZBIRA]... [UKAZ [ARGUMENT]...]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+"Požene UKAZ s spremenjeno vrednost »nice«, kar vpliva na prioriteto "
+"izvajanja.\n"
+"Če UKAZ ni podan, izpiše trenutno raven prioritete. Vrednosti »nice« so "
+"med \n"
+"%d (najvišja prioriteta) in %d (najnižja).\n"
+"\n"
+" -n, --adjustment=POPRAVEK poveÄaj raven za POPRAVEK (privzeto 10)\n"
+
+#: src/nice.c:155
+#, c-format
+msgid "invalid adjustment %s"
+msgstr "neveljaven popravek %s"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "ob podanem popravku ravni moramo podati tudi ukaz"
+
+#: src/nice.c:171 src/nice.c:182
+#, c-format
+msgid "cannot get niceness"
+msgstr "prioriteta izvajanja ni ugotovljiva"
+
+#: src/nice.c:186
+#, c-format
+msgid "cannot set niceness"
+msgstr "prioritete izvajanja ni mogoÄe nastaviti"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Vsako od DATOTEK prepiÅ¡emo na standardni izhod in spotoma oÅ¡tevilÄimo "
+"vrstice.\n"
+"ÄŒe DATOTEKA ni podana, ali Äe je enaka -, beremo s standardnega vhoda.\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=SLOG uporabi SLOG pri oÅ¡tevilÄenju vrstic "
+"telesa\n"
+" -d, --section-delimiter=CC uporabi CC pri loÄitvi logiÄnih strani\n"
+" -f, --footer-numbering=SLOG uporabi SLOG pri oÅ¡tevilÄenju znožja "
+"strani\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=SLOG uporabi SLOG pri oÅ¡tevilÄenju zglavja "
+"strani\n"
+" -i, --page-increment=Å TEVILO Å¡tevilke vrstic inkrementiraj po Å TEVILO\n"
+" -l, --join-blank-lines=Å TEVILO skupino Å TEVILA praznih vrstic Å¡tej kot "
+"eno\n"
+" -n, --number-format=OBLIKA Å¡tevilke vrstic vrini glede na OBLIKO\n"
+" -p, --no-renumber oÅ¡tevilÄenje vrstic naj teÄe prek log. "
+"strani\n"
+" -s, --number-separator=NIZ pripni NIZ (možni) številki vrstice\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=Å TEVILO Å¡tevilka prve vrstice na novi logiÄni "
+"strani\n"
+" -w, --number-width=Å TEVILO Å TEVILO znakov Å¡irine za oÅ¡tevilÄenje\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"Privzete so izbire -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC sta dva "
+"loÄitvena\n"
+"znaka za loÄevanje logiÄnih strani; Äe je drugi znak izpuÅ¡Äen, se "
+"privzame :.\n"
+"Uporabite \\\\\\\\ za \\\\. SLOG je nekaj od naštetega:\n"
+
+#: src/nl.c:214
+#, fuzzy
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a oÅ¡tevilÄi vse vrstice\n"
+" t oÅ¡tevilÄi samo polne vrstice, praznih ne\n"
+" n ne oÅ¡tevilÄi nobene vrstice\n"
+" pREGIZR oÅ¡tevilÄi samo vrstice, ki se ujemajo z osnovnim regularnim\n"
+" izrazom REGIZR\n"
+"\n"
+"OBLIKA je nekaj od naštetega:\n"
+"\n"
+" ln levo poravnano, brez vodilnih niÄel\n"
+" rn desno poravnano, brez vodilnih niÄel\n"
+" rz desno poravnano, z vodilnimi niÄlami\n"
+
+#: src/nl.c:281
+#, c-format
+msgid "line number overflow"
+msgstr "prekoraÄitev Å¡tevilke vrstice"
+
+#: src/nl.c:479
+#, c-format
+msgid "invalid header numbering style: %s"
+msgstr "neveljaven slog oÅ¡tevilÄenja glave: %s"
+
+#: src/nl.c:487
+#, c-format
+msgid "invalid body numbering style: %s"
+msgstr "neveljaven slog oÅ¡tevilÄenja telesa: %s"
+
+#: src/nl.c:495
+#, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "neveljaven slog oÅ¡tevilÄenja noge: %s"
+
+#: src/nl.c:504
+#, c-format
+msgid "invalid starting line number: %s"
+msgstr "neveljavna zaÄetna Å¡tevilka vrstice: %s"
+
+#: src/nl.c:513
+#, c-format
+msgid "invalid line number increment: %s"
+msgstr "neveljaven vrstiÄni inkrement: %s"
+
+#: src/nl.c:525
+#, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "neveljavno Å¡tevilo praznih vrstic: %s"
+
+#: src/nl.c:539
+#, c-format
+msgid "invalid line number field width: %s"
+msgstr "neveljavna Å¡irina polja s Å¡tevilko vrstice: %s"
+
+#: src/nl.c:558
+#, c-format
+msgid "invalid line numbering format: %s"
+msgstr "neveljavna oblika oÅ¡tevilÄenja vrstic: %s"
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uporaba: %s UKAZ [ARGUMENT]...\n"
+" ali: %s IZBIRA\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+"Poženemo UKAZ, pri Äemer ignoriramo signale za prekinitev.\n"
+"\n"
+
+#: src/nohup.c:117
+#, c-format
+msgid "ignoring input"
+msgstr "ignoriramo vhod"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr "odpiranje %s ni uspelo"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "ignoriramo vhod ter dodajamo izhod na konec %s"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr "nastavitev, da se kopija stderr zapre ob koncu izvajanja, ni uspela"
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+"prezremo vhod in preusmerimo standardni izhod za napake na standardni izhod"
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr "preusmeritev standardnega izhoda za napake ni uspela"
+
+#: src/od.c:307
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Uporaba: %s [IZBIRA]... [DATOTEKA]...\n"
+" ali: %s [-abcdfilosx]... [DATOTEKA] [[+]ODMIK[.][b]]\n"
+" ali: %s --traditional [IZBIRA] [DATOTEKA] [[+]ODMIK[.][b] [[+]OZNAKA][.]"
+"[b]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"Na standardni izhod zapiÅ¡emo enoznaÄno predstavitev DATOTEKE, privzeto\n"
+"osmiÅ¡ki zapis bajtov. ÄŒe je navedenih veÄ DATOTEK, jih na vhodu\n"
+"zlepimo v zaporedje. ÄŒe DATOTEKA ni podana ali je enaka -, beremo s\n"
+"standardnega vhoda.\n"
+"\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr "Vsi argumenti pri dolgi obliki izbire so obvezni tudi pri kratki.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=OSNOVA OSNOVA pri izpisu odmikov v datoteki (doxn)\n"
+" -j, --skip-bytes=Å TEVILO pri vsaki datoteki preskoÄimo prvih Å TEVILO "
+"bajtov\n"
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=Å TEVILO izpis omejim na Å TEVILO bajtov v vsaki "
+"datoteki\n"
+" -s, --strings[=ŠTEVILO] zaporedje, dolgo vsaj ŠTEVILO bajtov, izpiši\n"
+" kot niz\n"
+" -t, --format=TIP doloÄi obliko ali oblike izpisov\n"
+" -v, --output-duplicates ne uporabi * za oznako izpuÅ¡Äenih vrstic\n"
+" -w, --width[=ŠTEVILO] v vsaki vrstici izpiši ŠTEVILO bajtov\n"
+" --traditional sprejemi argumente v tradicionalni obliki\n"
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"DoloÄila v tradicionalni obliki lahko kombiniramo in se sestavljajo:\n"
+" -a isto kot -t a, poimenovani znaki, brez osmega bita\n"
+" -b isto kot -t o1, osmiški izpis bajtov\n"
+" -c isto kot -t c, ASCII; neizpisljive znake uvedi z nagibnico\n"
+" -d isto kot -t u2, desetiÅ¡ki izpis dvobajtnih nepredznaÄenih enot\n"
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f isto kot -t fF, izpis Å¡tevil s plavajoÄo vejico\n"
+" -i isto kot -t dI, desetiÅ¡ki izpis dvobajtnih predznaÄenih celih Å¡tevil\n"
+" -l isto kot -t dL, desetiÅ¡ki izpis Å¡tiribajtnih predznaÄenih celih "
+"Å¡tevil\n"
+" -o isto kot -t o2, osmiški izpis dvobajtnih enot\n"
+" -s isto kot -t d2, desetiški izpis dvobajtnih enot\n"
+" -x isto kot -t x2, šestnajstiški izpis dvobajtnih enot\n"
+
+#: src/od.c:353
+#, fuzzy
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"Če sta uporabljena tako prva kot druga oblika klica, se upošteva druga,\n"
+"kadar se zadnji operand zaÄne s + ali (kadar sta dva operanda) s Å¡tevko.\n"
+"Operand ODMIK pomeni izbiro -j ODMIK. OZNAKA je psevdonaslov prvega\n"
+"izpisanega bajta in se prišteje odmiku pri izpisu. Pri ODMIKU in OZNAKI\n"
+"predpona 0x ali 0X naznanja šestnajstiški zapis. Pripone so lahko . za\n"
+"osmiški zapis ali b za množenje s 512.\n"
+"\n"
+"\n"
+"TIP je lahko eno ali veÄ doloÄil s seznama:\n"
+"\n"
+" a poimenovani znaki\n"
+" c znaki ASCII; neizpisljivi znaki uvedeni z nagibnico\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[VELIKOST] predznaÄeno desetiÅ¡ko celo Å¡tevilo dolžine VELIKOST bajtov\n"
+" f[VELIKOST] Å¡tevilo v plavajoÄi vejici dolžine VELIKOST bajtov\n"
+" o[VELIKOST] osmiško število dolžine VELIKOST bajtov\n"
+" u[VELIKOST] nepredznaÄeno desetiÅ¡ko celo Å¡tevilo dolžine VELIKOST bajtov\n"
+" x[VELIKOST] šestnajstiško število dolžine VELIKOST bajtov\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"VELIKOST je Å¡tevilka. Za TIPE d,o,u ali x je VELIKOST lahko tudi C, kar\n"
+"pomeni dolžino tipa char, S (dolžina tipa short), I (dolžina tipa int) ali\n"
+"L (dolžina tipa long). Če je TIP f, je lahko VELIKOST tudi F za dolžino\n"
+"tipa float, D (dolžina tipa double) ali L (dolžina tipa long double).\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"OSNOVA je lahko d (desetiška), o (osmiška), x (šestnajstiška) ali n\n"
+"(nobena). ÄŒe ima Å TEVILO predpono 0x ali 0X, se tolmaÄi kot\n"
+"šestnajstiška vrednost. Pripona b pomeni množenje s 512, pripona k\n"
+"množenje s 1024, pripona m množenje s 1048576. Pripona z pri\n"
+"kateremkoli tipu doda prikaz izpisljivih znakov na koncu vsake\n"
+"vrstice. "
+
+#: src/od.c:391
+#, fuzzy
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"Izbira --string brez podanega Å¡tevila privzame vrednost 3. Izbira\n"
+"--width brez podanega Å¡tevila privzame vrednost 32. Privzete vrednosti, ki\n"
+"jih uporablja program »od«, so: -A o -t d2 -w 16.\n"
+
+#: src/od.c:683 src/od.c:802
+#, c-format
+msgid "invalid type string %s"
+msgstr "neveljavna oznaka tipa %s"
+
+#: src/od.c:693
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"neveljavna oznaka tip %s;\n"
+"ta sistem ne omogoÄa %lu-bajtnega celoÅ¡tevilÄnega tipa"
+
+#: src/od.c:812
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"neveljavna oznaka tip %s;\n"
+"ta sistem ne omogoÄa %lu-bajtnega zapisa v plavajoÄi vejici"
+
+#: src/od.c:871
+#, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "neveljaven znak %c v oznaki tipa %s"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "ni mogoÄe prek konca kombiniranega vhoda"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr "neveljavna osnova naslovov »%c«; veljavne so možnosti d, o, x in n"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "preskoÄi argument"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "omeji argument"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "najmanjša dolžina niza"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "doloÄilo Å¡irine"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "tip ne sme biti doloÄen, kadar iznaÅ¡amo nize"
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr "Združljivostni naÄin podpira najveÄ eno datoteko."
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr "vsota preskoÄenih in prebranih bajtov je prevelika"
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "opozorilo: neveljavna Å¡irina %lu; namesto nje jemljemo %d"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: fmt=\"%s\" width?%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "standardni vhod je zaprt"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Vsaki od vrstic iz prve DATOTEKE s tabulatorjem na konec pridružimo "
+"istoležno\n"
+"vrstico iz druge DATOTEKE, in tako naprej do konca seznama DATOTEK. ÄŒe\n"
+"DATOTEKA ni podana ali je enaka -, beremo s standardnega vhoda.\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=SEZNAM za loÄitev uporabimo znake s SEZNAMA namesto TAB\n"
+" -s, --serial datoteke združujemo zaporedno namesto vzporedno\n"
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Uporaba: %s [IZBIRA]... IME...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+"Diagnosticira neprenosljive konstrukte v IMENU.\n"
+"\n"
+" -p preveri za veÄino sistemov POSIX\n"
+" -P preveri za prazna imena in vodilne »-« v imenih\n"
+" --portability preveri za vse sisteme POSIX (enakovredno -p -P)\n"
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr "vodilni »-« v delu imena datoteke %s"
+
+#: src/pathchk.c:206
+#, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "neprenosljiv znak %s v imenu datoteke %s"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr "prazno ime datoteke"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr "%s: najveÄje dovoljene dolžine imena datoteke ni moÄ ugotoviti"
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr "meja %lu presežena za dolžino %lu pri imenu datoteke %s"
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr "meja %lu presežena za dolžino %lu pri delu imena datoteke %s"
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Uporabniško ime: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "Pravo ime: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Imenik: "
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Ukazna lupina: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Projekt: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "NaÄrt:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Login"
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr " Ime"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr " TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Neak"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "Kdaj"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Kje"
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Uporaba: %s [IZBIRA]... [UPORABNIK]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"\n"
+" -l dolga oblika izpisa\n"
+" -b v dolgi obliki izpusti domaÄi imenik in ukazno lupino\n"
+" -h v dolgi obliki izpusti uporabnikovo datoteko .project\n"
+" -p v dolgi obliki izpusti uporabnikovo datoteko .plan\n"
+" -s kratka oblika izpisa (privzeto)\n"
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+" -f v kratki obliki izpusti legendo k stolpcem\n"
+" -w v kratki obliki izpusti polno ime uporabnika\n"
+" -i v kratki obliki izpusti polno ime uporabnika in ime "
+"raÄunalnika\n"
+" -q v kratki obliki izpusti polno ime uporabnika, ime "
+"raÄunalnika\n"
+" in Äas neaktivnosti\n"
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+"\n"
+"Poenostavljeni program »finger«: izpis informacij o uporbnikih.\n"
+"Datoteka UTMP bo %s.\n"
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr "uporabniško ime ni podano; pri izbiri -l mora biti podano vsaj eno"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr "razpon strani"
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr ",--pages=PRVA_STRAN[:ZADNJA_STRAN]`: manjkajoÄi argument"
+
+#: src/pr.c:916
+#, c-format
+msgid "Invalid page range %s"
+msgstr "Neveljaven razpon strani %s"
+
+#: src/pr.c:981
+#, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "»-l DOLŽINA_STRANI« nedovoljeno število vrstic: %s"
+
+#: src/pr.c:1005
+#, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "»-N Å TEVILKA« nedovoljena Å¡tevilka zaÄetne vrstice: %s"
+
+#: src/pr.c:1017
+#, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "»-o ROB« nedovoljen odmik od levega roba: %s"
+
+#: src/pr.c:1058
+#, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "»-w ŠIRINA_STRANI« neveljavno število znakov: %s"
+
+#: src/pr.c:1072
+#, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "»-W ŠIRINA_STRANI« neveljavno število znakov: %s"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "Pri vzporednem izpisu ni mogoÄe doloÄiti Å¡tevila stolpcev"
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "Možnosti izpisa poÄez in vzporednega izpisa se izkljuÄujeta"
+
+#: src/pr.c:1202
+#, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "»-%c« dodatni znaki ali neveljavno število v argumentu: %s"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "Å¡irina strani premajhna"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr "zaÄetna stran %<PRIuMAX> presega skupno Å¡tevilo strani %<PRIuMAX>"
+
+#: src/pr.c:2406
+#, c-format
+msgid "Page number overflow"
+msgstr "PrekoraÄitev Å¡tevila strani"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr "Stran %<PRIuMAX>"
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+"OÅ¡tevilÄimo strani ali poravnamo besedilo v DATOTEKI v stolpce za izpis.\n"
+"\n"
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +PRVA_STRAN[:ZADNJA_STRAN], --pages=PRVA_STRAN[:ZADNJA_STRAN]\n"
+" tiskanje zaÄnemo na PRVI in konÄamo na ZADNJI STRANI\n"
+" -STOLPCI, --columns=STOLPCI\n"
+" izpis v danem Å¡tevilu STOLPCEV, ki teÄejo od zgoraj "
+"navzdol\n"
+" razen Äe je izbrano -a. Å tevilo vrstic v stolpcih na "
+"strani\n"
+" je uravnoteženo.\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across skupaj s -STOLPCI; stolpce tiskamo poprek prek strani\n"
+" namesto navzdol.\n"
+" -c, --show-control-chars\n"
+" uporabimo zapis ^G in osmiški zapis z uvodno nagibnico\n"
+" -d, --double-space\n"
+" izpis z dvojnim razmakom\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=OBLIKA\n"
+" izpis datuma v glavi v navedeni OBLIKI\n"
+" -e[ZNAK[Å IRINA]], --expand-tabs[=ZNAK[Å IRINA]]\n"
+" ZNAKE (privzeto TAB) na vhodu razširimo v tabulator\n"
+" dane Å IRINE (privzeto 8)\n"
+" -F, -f, --form-feed\n"
+" strani loÄimo z znaki za skok na novo stran namesto s\n"
+" praznimi vrsticami (s 3-vrstiÄnim zglavjem z izbiro -F\n"
+" ali 5-vrstiÄnim zglavjem in znožjem brez -F)\n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h ZGLAVJE, --header=ZGLAVJE\n"
+" uporabimo navedeno osredinjeno ZGLAVJE namesto imena\n"
+" datoteke; -h \\\"\\\" izpiše prazno vrstica; ne "
+"uporabljajte -h\\\"\\\"\n"
+" -i[ZNAK[Å IRINA]], --output-tabs[=ZNAK[Å IRINA]]\n"
+" presledke skrÄimo v ZNAK (privzeto TAB) do Å IRINE\n"
+" tabulatorja (privzeto 8)\n"
+" -J, --join-lines združujemo cele vrstice, brez rezanja vrstic z -W, brez\n"
+" poravnave stolpcev, --sep-string[=NIZ] nastavi loÄila\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l DOLŽINA_STRANI, --length=DOLŽINA_STRANI\n"
+" doloÄimo DOLŽINO STRANI, v vrsticah (privzeto 66)\n"
+" (privzeto Å¡tevilo vrstic besedila je 56, z -F 63)\n"
+" -m, --merge datoteke izpisujemo vzporedno, po eno v stolpec. "
+"Predolge\n"
+" vrstice porežemo, razen z izbiro -J, kjer združimo "
+"celotne\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[LOČ[ŠTEVILO]], --number-lines[=LOČ[ŠTEVILO]]\n"
+" vrstice oÅ¡tevilÄimo, Å¡irina polja je Å TEVILO (privzeto "
+"5)\n"
+" znakov, sledi LOÄŒ (privzeto TAB). OÅ¡tevilÄenje gre od "
+"prve\n"
+" vrstice vhodne datoteke.\n"
+" -N Å TEVILO, --first-line-number=Å TEVILO\n"
+" oÅ¡tevilÄenje zaÄnemo z navedenim Å TEVILOM v prvi vrstici "
+"na\n"
+" prvi natisnjeni strani (glej +PRVA_STRAN)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o ROB, --indent=ROB\n"
+" vrstice zamaknemo za ROB znakov od levega roba; ne "
+"vpliva\n"
+" na -w in -W; ROB se prišteje ŠIRINI_STRANI.\n"
+" -r, --no-file-warnings\n"
+" brez opozoril, kadar ni mogoÄe odpreti datoteke\n"
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[ZNAK], --separator[=ZNAK]\n"
+" stolpce loÄimo z navedenim ZNAKOM (privzeto TAB) namesto "
+"s\n"
+" presledki.\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -SNIZ, --sep-string[=NIZ]\n"
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" stolpce loÄimo z navedenim NIZOM\n"
+" Brez -S: privzeto loÄilo (TAB pri -J, presledki sicer -\n"
+" isto kot -S\" \"), brez uÄinka na nastavitve stolpcev\n"
+" -t, --omit-header brez zglavja in repa\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" brez zglavja in repa; brez oÅ¡tevilÄenja strani, ki jih\n"
+" povzroÄijo znaki za skok na novo stran v vhodni "
+"datoteki\n"
+" -v, --show-nonprinting\n"
+" z uporabo osmiških vrednosti z ubežnimi zaporedji\n"
+" -w Å IRINA_STRANI, --width=Å IRINA_STRANI\n"
+" Å IRINO STRANI nastavimo na dano Å¡tevilo znakov (privz. "
+"72);\n"
+" samo besedilo v veÄ stolpcih; -s[znak] izklopi\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W Å IRINA_STRANI, --page-width=Å IRINA_STRANI\n"
+" Å IRINO STRANI nastavimo na dano Å¡tevilo znakov (privz. "
+"72);\n"
+" predolge vrstice porežemo razen z izbiro -J; ne vpliva "
+"na\n"
+" izbiri -s in -S\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"V dveh primerih se privzame -T: pri izbiri -l NN, kadar NN <= 10; ter pri\n"
+"izbiri -F, kadar je NN <= 3. Kadar DATOTEKA ni podana ali je enaka -, beremo "
+"s\n"
+"standardnega vhoda.\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Uporaba: %s [SPREMENLJIVKA]...\n"
+" ali: %s IZBIRA\n"
+"Če SPREMENLJIVKA ni podana, izpiši vrednosti vseh spremenljivke.\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr "opozorilo: %s: znak(i), ki sledijo znakovni konstanti so ignorirani"
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uporaba: %s OBLIKA [ARGUMENT]...\n"
+" ali: %s IZBIRA\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+"Izpišemo ARGUMENT v navedeni OBLIKI.\n"
+"\n"
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"\n"
+"OBLIKA nazdira izpis enako kot pri funkciji printf v C. TolmaÄena zaporedja "
+"so:\n"
+"\n"
+" \\\" dvojni narekovaj\n"
+" \\0NNN znak z osmiško kodo NNN (1 do 3 števke)\n"
+" \\\\ nagibnica\n"
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+" \\a zvonÄek (BEL)\n"
+" \\b pomik za znak nazaj\n"
+" \\c ne izpisuj niÄesar veÄ\n"
+" \\f skok na novo stran\n"
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n skok v novo vrstico\n"
+" \\r vrnitev na zaÄetek vrstice\n"
+" \\t horizontalni tabulator\n"
+" \\v vertikalni tabulator\n"
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+" \\xNN bajt s šestnajstiško kodo NN (1 ali 2 števki)\n"
+" \\uNNNN znak Unicode (ISO/IEC 10646) s šestnajstiško kodo NNNN (4 "
+"Å¡tevke)\n"
+" \\UNNNNNNNN znak Unicode s šestnajstiško kodo NNNNNNNN (8 števk)\n"
+
+#: src/printf.c:129
+#, fuzzy
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+" %% znak za odstotek\n"
+" %b ARGUMENT kot niz z raztolmaÄenimi znaki, ki jih uvajajo "
+"nagibnice,\n"
+" razen osmiških zaporedij v obliki \\O ali \\ONNN\n"
+"\n"
+"Vsa oblikovna doloÄila iz C, ki se konÄajo na diouxXfeEgGcs so\n"
+"raztolmaÄena, Äe je ARGUMENT prej pretvorjen v pravilen podatkovni\n"
+"tip. Spremenljive Å¡irine se obravnavajo pravilno.\n"
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: priÄakovana je Å¡tevilÄna vrednost"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: vrednost nepopolno pretvorjena"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "v ubežnem zaporedju manjka šestnajstiško število"
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "neveljavno univerzalno ime znaka \\%c%0*x"
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr "neveljavna Å¡irina polja: %s"
+
+#: src/printf.c:585
+#, c-format
+msgid "invalid precision: %s"
+msgstr "neveljavna natanÄnost: %s"
+
+#: src/printf.c:612
+#, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%.*s: neveljavna doloÄitev pretvorbe"
+
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "opozorilo: odveÄni argumenti zaÄenÅ¡i s %s so bili ignorirani"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr "F. Pinard"
+
+#: src/ptx.c:422
+#, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (za regularni izraz %s)"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Uporaba: %s [IZBIRA]... [VHOD]... (brez -G)\n"
+" ali: %s -G [IZBIRA]... [VHOD [IZHOD]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"Izpis permutiranega kazala gesel v vhodnih datotekah, skupaj s kontekstom.\n"
+"\n"
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference izpis samodejno generiranih vnosov\n"
+" -G, --traditional obnašanje kot »ptx« v sistemu System V\n"
+" -F, --flag-truncation=NIZ za oznaÄevanje okrajÅ¡anih vrstic uporabi "
+"NIZ\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=NIZ uporabi podano ime makroukaza (privzeto "
+"»xx«)\n"
+" -O, --format=roff izpis v obliki stavnega jezika roff\n"
+" -R, --right-side-refs sklici ob desnem robu (niso všteti v -w)\n"
+" -S, --sentence-regexp=REGIZR za konce vrstic ali konce stavkov\n"
+" -T, --format=tex izpis v obliki stavnega jezika tex\n"
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=REGIZR uporabi REGIZR za lovljenje besed\n"
+" -b, --break-file=DATOTEKA znake v podani DATOTEKI razlomi po besedah\n"
+" -f, --ignore-case pri urejanju obravnavaj male in velike "
+"Ärke \n"
+" enako\n"
+" -g, --gap-size=Å TEVILO Å¡irina razmaka v znakih med polji v izpisu\n"
+" -i, --ignore-file=DATOTEKA seznam prezrtih besed preberi iz DATOTEKE\n"
+" -o, --only-file=FILE preberi le seznam besed iz navedene "
+"DATOTEKE\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references prvo polje v vsaki vrstici je sklic\n"
+" -t, --typeset-mode - ni izvedeno -\n"
+" -w, --width=Å TEVILO Å¡irina izhoda v znakih, brez sklicev\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"Kadar DATOTEKA ni podana ali je enaka -, se bere standardni vhod. Privzeto\n"
+"oznaÄevanje okrajÅ¡anih vrstic je »-F /«.\n"
+
+#: src/ptx.c:2016
+#, c-format
+msgid "invalid gap width: %s"
+msgstr "neveljavna Å¡irina razmaka: %s"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr "izbira --copyright je odsvetovana; namesto nje uporabite --version"
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+"Izpišemo celotno pot trenutnega delovnega imenika.\n"
+"\n"
+
+#: src/pwd.c:160
+#, c-format
+msgid "failed to chdir to %s"
+msgstr "menjava imenika v %s ni uspela"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, c-format
+msgid "failed to stat %s"
+msgstr "branje statistike %s neuspešno"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr "imeniÅ¡kega vnosa z ujemajoÄim inodom v %s ni moÄ najti"
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "ne-izbirni argumenti so ignorirani"
+
+# ! INEXACT
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Uporaba: %s [IZBIRA]... DATOTEKA\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+"Izpiši cilj simbolne povezave na standardni izhod.\n"
+"\n"
+
+#: src/readlink.c:70
+#, fuzzy
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+" -f, --canonicalize kanoniziran izpis vsake komponente vsake "
+"simbolne\n"
+" povezave z rekurzivnim sledenjem povezav; "
+"vse\n"
+" razen zadnje komponente poti morajo "
+"obstajati\n"
+" -e, --canonicalize-existing kanoniziran izpis vsake komponente vsake "
+"simbolne\n"
+" povezave z rekurzivnim sledenjem povezav; "
+"vse\n"
+" komponente poti morajo obstajati\n"
+" -m, --canonicalize-missing kanoniziran izpis vsake komponente vsake "
+"simbolne\n"
+" povezave z rekurzivnim sledenjem povezav; "
+"brez\n"
+" pogojev glede obstoja\n"
+" -n, --no-newline brez izpisa sledilnih znakov za novo vrstico\n"
+" -q, --quiet,\n"
+" -s, --silent brez izpisa veÄine poroÄil o napakah\n"
+" -v, --verbose z poroÄili o napakah\n"
+
+#: src/readlink.c:78
+#, fuzzy
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+" -f, --canonicalize kanoniziran izpis vsake komponente vsake simbolne\n"
+" povezave z rekurzivnim sledenjem povezav\n"
+" -n, --no-newline brez izpisa vodilnih znakov za novo vrstico\n"
+" -q, --quiet,\n"
+" -s, --silent brez izpisa veÄine poroÄil o napakah\n"
+" -v, --verbose z poroÄili o napakah\n"
+
+#: src/remove.c:481 src/remove.c:525
+#, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "USODNA NAPAKA: zapiranje imenika %s ni uspelo"
+
+#: src/remove.c:494
+#, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "USODNA NAPAKA: ni mogoÄe odpreti .. iz %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr "USODNA NAPAKA: ni mogoÄe zagotoviti varnosti %s (vrnjeno prek ..)"
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "USODNA NAPAKA: imenik %s ima spremenjen dev/ino"
+
+#: src/remove.c:631
+#, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "USODNA NAPAKA: imenika %s ni mogoÄe doseÄi"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+"USODNA NAPAKA: imenik %s, ki smo ga ravno zaÄeli obdelovati, je spremenil "
+"dev/ino"
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"POZOR: Cirkularna struktura imenikov.\n"
+"To skoraj gotovo pomeni resno napako v datoteÄnem sistemu.\n"
+"OBVESTITE UPRAVITELJA SISTEMA.\n"
+"Naslednja dva imenika imata isto Å¡tevilo inode:\n"
+" %s\n"
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s: naj se spustimo v imenik %s, ki je zavarovan proti pisanju? "
+
+# POZOR!!! Razisci, kaj je misljeno!
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s: naj se spustimo v podimenik %s? "
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: naj se odstrani %s %s, ki je zavarovana proti pisanju? "
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: naj se odstrani %s %s? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "odstranjen imenik: %s\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, c-format
+msgid "failed to close directory %s"
+msgstr "zapiranje imenika %s ni uspelo"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "imenika %s ni mogoÄe odstraniti"
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "USODNA NAPAKA: iz imenika %s ni dosegljiv imenik .."
+
+#: src/remove.c:1504
+#, c-format
+msgid "cannot remove root directory %s"
+msgstr "korenskega imenika %s ni mogoÄe odstraniti"
+
+#: src/remove.c:1544
+#, c-format
+msgid "cannot remove relative-named %s"
+msgstr "relativno poimenovanega %s ni mogoÄe odstraniti"
+
+#: src/remove.c:1558
+#, c-format
+msgid "cannot restore current working directory"
+msgstr "trenutnega imenika ni mogoÄe povrniti"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr "Poskusite »%s ./%s«, da bi odstranili datoteko %s.\n"
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Uporaba: %s [IZBIRA]... DATOTEKA...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+"Odstranimo navedene DATOTEKE.\n"
+"\n"
+" -f, --force brez opozoril o neobstojeÄih datotekah, brez "
+"vprašanj\n"
+" -i zahtevamo potrditev pred vsakim brisanjem\n"
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+" -I zahtevamo potrditev pred brisanjem treh ali veÄ "
+"datotek,\n"
+" ali pri rekurzivnem brisanju. Manj moteÄe kot -i, "
+"vseeno\n"
+" pa varuje pred veÄino napak.\n"
+" --interactive[=KDAJ] potrditev glede na KDAJ: never (nikoli), once \n"
+" (enkrat, isto kot -I), always (vedno, isto kot -i,\n"
+" privzeto)\n"
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --no-preserve-root imenika »/« ne obravnavamo posebej (privzeto)\n"
+" --preserve-root ne dovoli rekurzivnega dela na »/«\n"
+" -r, -R, --recursive rekurzivno brisanje vsebine imenika s podimeniki "
+"vred\n"
+" -v, --verbose z razlago poteka\n"
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+"\n"
+"Privzeto ukaz »rm« ne odstrani imenikov. Z izbiro --recursive (-r ali -R)\n"
+"pa odstrani tudi vse navedene imenike z njihovo vsebino vred.\n"
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"Datoteko, katere ime se zaÄne z minusom (npr. »-bla«) lahko pobriÅ¡emo z "
+"enim \n"
+"od naslednjih dveh ukazov:\n"
+" %s -- -bla\n"
+"\n"
+" %s ./-bla\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"Vsebino datotek, izbrisanih z ukazom rm, je navadno mogoÄe (Äeravno ne\n"
+"enostavno) rekonstruirati. ÄŒe želite to prepreÄiti, razmislite o uporabi \n"
+"ukaza shred.\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr "%s: naj vse argumente rekurzivno odstranimo? "
+
+#: src/rm.c:366
+#, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: naj se odstranijo vsi argumenti? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "brišemo imenik, %s"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Uporaba: %s [IZBIRA]... IMENIK...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"Odstrani IMENIK ali IMENIKE, Äe so prazni.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" nadaljujemo kljub napaki, Äe je do te priÅ¡lo zgolj zato, "
+"ker\n"
+" kakšen od navedenih imenikov ni prazen\n"
+
+#: src/rmdir.c:148
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents pobriÅ¡emo tudi IMENIKE nad navedenim, Äe so prazni.\n"
+" Zgled: »rmdir -p a/b/c« naredi isto kot »rmdir a/b/c a/b "
+"a«\n"
+" -v, --verbose z diagnostiÄnim sporoÄilom za vsak obdelan imenik\n"
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Uporaba: %s [IZBIRA]... ZADNJE\n"
+" ali: %s [IZBIRA]... PRVO ZADNJE\n"
+" ali: %s [IZBIRA]... PRVO KORAK ZADNJE\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"Izpišemo števila od PRVEGA do ZADNJEGA s podanim KORAKOM.\n"
+"\n"
+" -f, --format DOLOÄŒILO uporabi oblikovno DOLOÄŒILO kot v printf(3)\n"
+" -s, --separator NIZ uporabi NIZ kot loÄilo med Å¡tevili (privzeto: "
+"\\n)\n"
+" -w, --equal-width polja dopolni do enake Å¡irine z vodilnimi "
+"niÄlami\n"
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"\n"
+"ÄŒe sta bodisi PRVO bodisi KORAK izpuÅ¡Äena, se zanju uporabi privzeta\n"
+"vrednost 1; izpuÅ¡Äeni KORAK zavzame vrednost 1 celo takrat, kot je\n"
+"ZADNJE manjÅ¡e od PRVEGA. PRVO, KORAK in ZADNJE so tolmaÄena kot\n"
+"Å¡tevila s plavajoÄo vejico. KORAK je navadno pozitiven, Äe je PRVO\n"
+"število manjše od ZADNJEGA, sicer pa negativen. Podano oblikovno\n"
+"DOLOČILO mora biti primerno za izpis enega argumenta tipa »double«;\n"
+"privzeto je %.PRECf, Äe so PRVO, KORAK in ZADNJE decimalna Å¡tevila\n"
+"predstavljena v fiksni natanÄnosti PREC, sicer pa %g.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "argument ni neveljavno Å¡tevilo v plavajoÄi vejici: %s"
+
+#: src/seq.c:342
+#, c-format
+msgid "invalid format string: %s"
+msgstr "neveljavno oblikovno doloÄilo: %s"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr "pri izpisu polj enake Å¡irine ni dovoljeno podati oblikovnega doloÄila"
+
+#: src/setuidgid.c:51
+#, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uporaba: %s UPORABNIK UKAZ [ARGUMENT]...\n"
+" ali: %s IZBIRA\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+"Izpusti vse dodatne skupine, privzame Å¡tevilki uporabnika in skupine (UID \n"
+"in GID) navedenega UPORABNIKA ter požene UKAZ z vsemi podanimi ARGUMENTI.\n"
+"Ob izhodu vrne statusno kodo 111, Äe ni bilo mogoÄe privzeti zahtevanih UID\n"
+"in GID, sicer pa vrne izhodno statusno kodo UKAZA.\n"
+"Program je uporaben le, kadar ga poganja superuporabnik (UID=0).\n"
+"\n"
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr "neznana Å¡tevilka uporabnika (UID): %s"
+
+#: src/setuidgid.c:109
+#, c-format
+msgid "cannot set supplemental group"
+msgstr "dodatne skupine ni mogoÄe nastaviti"
+
+#: src/setuidgid.c:114
+#, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "nastavitev GID na %lu ni mogoÄa"
+
+#: src/setuidgid.c:118
+#, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "nastavitev UID na %lu ni mogoÄa"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Uporaba: %s [IZBIRE]... DATOTEKA [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"Vsebino navedene DATOTEKE uniÄimo tako, da prek nje veÄkrat zapiÅ¡emo\n"
+"drugo vsebino.\n"
+"\n"
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force po potrebi dovolimo pisanje na datoteko/enoto\n"
+" -n, --iterations=N prek datoteke pišeno N-krat namesto privzetega (%d)\n"
+" --random-source=DATOTEKA preberi nakljuÄne bajte iz DATOTEKE\n"
+" (privzeto /dev/urandom)\n"
+" -s, --size=N uniÄimo podano Å¡tevilo bajtov (dovoljene pripone K, M, "
+"G...)\n"
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove datoteko po uniÄenju vsebine skrajÅ¡aj in odstrani\n"
+" -v, --verbose s prikazom napredka med delom\n"
+" -x, --exact brez zaokroževanja velikosti datotek do polnega bloka\n"
+" (privzeto za predmete, ki niso navadne datoteke)\n"
+" -z, --zero na koncu zapiÅ¡i prek datoteke niÄle, da se prikrije "
+"uniÄenje\n"
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"ÄŒe je DATOTEKA »-«, uniÄi vsebino, prebrano s standardnega vhoda.\n"
+"\n"
+"DATOTEKE zbriÅ¡emo le, Äe je podana izbira --remove (-u). Privzeto ne "
+"zbrišemo\n"
+"datoteke, kar je primerneje za delo z napravami (npr. /dev/hda). Pri delu z\n"
+"navadnimi datotekami veÄina uporablja izbiro --remove.\n"
+"\n"
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"OPOZORILO: Delovanje programa »shred« temelji na zelo pomembni "
+"predpostavki,\n"
+"da datoteÄni sistem piÅ¡e prek starih podatkov. Vsi tradicionalni datoteÄni\n"
+"sistemi so res taki, Å¡tevilne sodobne zasnove datoteÄnih sistemov pa ne.\n"
+"Navedeni so zgledi datoteÄnih sistemov, na katerih program »shred« ne bo\n"
+"uÄinkovit, ali pa njegova uÄinkovitost ni zajamÄena v vseh naÄinih "
+"delovanja\n"
+"datoteÄnega sistema:\n"
+"\n"
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"* datoteÄni sistemi s strukturiranim dnevnikom ali z dnevnikom sprememb, "
+"kot\n"
+" jih uporabljata AIX in Solaris (tudi JFS, ReiserFS, XFS, Ext3 itn.)\n"
+"\n"
+"* datoteÄni sistemi, ki podatke zapisujejo redundantno in lahko nadaljujejo\n"
+" z delom, Äeprav vsa pisanja niso bila uspeÅ¡na (npr. RAID)\n"
+"\n"
+"* datoteÄni sistemi, ki shranjujejo trenutne slike stanja diska, npr.\n"
+" strežnik NFS podjetja Network Appliace\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+#, fuzzy
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+"* datoteÄni sistemi, ki hranijo medpomnilnik na zaÄasnih lokacijah, npr.\n"
+" odjemniki NFS verzije 3\n"
+"\n"
+"* stisnjeni datoteÄni sistemi\n"
+"\n"
+"V primeru datoteÄnih sistemov ext3 velja gornje opozorilo o neuÄinkovitosti\n"
+"programa shred le v naÄinu »data=journal«, ki zapisuje dnevnik sprememb\n"
+"podatkov v datotekah, ne le podatkov o datotekah. V naÄinih »data=ordered«\n"
+"(kar je privzeti naÄin) ter »data=writeback« deluje shred kot obiÄajno.\n"
+"NaÄine dnevniÅ¡kega beleženja sprememb pri ext3 doloÄimo z izbiro "
+"»data=nekaj«\n"
+"pri priklopu doloÄenega datoteÄnega sistema v datoteki /etc/fstab,\n"
+"kot je opisano v priroÄniku ukaza »mount« (glejte »man mount«).\n"
+"\n"
+"Poleg tega lahko izvodi datoteke obstajajo tudi na varnostnih kopijah\n"
+"in oddaljenih zrcalih. Teh izvodov ne moremo odstraniti in iz njih je\n"
+"mogoÄe rekonstruirati uniÄeno datoteko.\n"
+
+#: src/shred.c:234
+#, fuzzy
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+"* datoteÄni sistemi, ki hranijo medpomnilnik na zaÄasnih lokacijah, npr.\n"
+" odjemniki NFS verzije 3\n"
+"\n"
+"* stisnjeni datoteÄni sistemi\n"
+"\n"
+"Poleg tega lahko izvodi datoteke obstajajo tudi na varnostnih kopijah\n"
+"in oddaljenih zrcalih. Teh izvodov ne moremo odstraniti in iz njih je\n"
+"mogoÄe rekonstruirati uniÄeno datoteko.\n"
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr "%s: klic fdatasync ni uspel"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr "%s: fsync ni uspel"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s: ni mogoÄe previti na zaÄetek"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: prehod %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s: napaka med pisanjem pri odmiku %s"
+
+#: src/shred.c:478
+#, c-format
+msgid "%s: lseek failed"
+msgstr "%s: klic lseek ni uspel"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s: datoteka prevelika"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: prehod %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: prehod %lu/%lu (%s)...%s/%s %d%%"
+
+#: src/shred.c:776
+#, c-format
+msgid "%s: fstat failed"
+msgstr "%s: klic fstat ni uspel"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: neveljaven tip datoteke"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: velikost datoteke negativna"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s: napaka pri krajšanju"
+
+#: src/shred.c:889
+#, c-format
+msgid "%s: fcntl failed"
+msgstr "%s: klic fcntl ni uspel"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s: ni mogoÄe uniÄiti datoteke, v katero smemo le dodajati"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: brišemo"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: preimenovano v %s"
+
+#: src/shred.c:1018
+#, c-format
+msgid "%s: failed to remove"
+msgstr "%s: ni mogoÄe odstraniti"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: odstranjeno"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, c-format
+msgid "%s: failed to close"
+msgstr "%s: ni mogoÄe zapreti"
+
+#: src/shred.c:1065
+#, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: ni mogoÄe odpreti za pisanje"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: neveljavno Å¡tevilo prehodov"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, c-format
+msgid "multiple random sources specified"
+msgstr "naveden je veÄ kot en izvor nakljuÄnih Å¡tevil"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: neveljavna velikost datoteke"
+
+#: src/shuf.c:51
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Uporaba: %s [IZBIRA]... [DATOTEKA]\n"
+" ali: %s [IZBIRA]... [ARGUMENT]...\n"
+" ali: %s -i SP-ZG [IZBIRA]...\n"
+
+#: src/shuf.c:57
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"NakljuÄno permutacijo vrstic na vhodu zapiÅ¡emo na standardni izhod.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -e, --echo obravnavaj vsak ARG kot vhodno vrstico\n"
+" -i, --input-range=SP-ZG obravnavaj vsako Å¡tevilo SP..ZG kot vhodno "
+"vrstico\n"
+" -n, --head-lines=VRSTICE izpiÅ¡i najveÄ navedeno Å¡tevilo VRSTIC\n"
+" -o, --output=DATOTEKA zapiši rezultat na DATOTEKO namesto na std. "
+"izhod\n"
+" --random-source=DATOTEKA preberi nakljuÄne bajte iz datoteke "
+"(privzeto\n"
+" /dev/urandom)\n"
+" -z, --zero-terminated zakljuÄi vrstice z \\0, ne z znakom za novo "
+"vrstico\n"
+
+#: src/shuf.c:287
+#, c-format
+msgid "multiple -i options specified"
+msgstr "podanih je veÄ izbir -i"
+
+#: src/shuf.c:307
+#, c-format
+msgid "invalid input range %s"
+msgstr "neveljaven vhodni obseg %s"
+
+#: src/shuf.c:320
+#, c-format
+msgid "invalid line count %s"
+msgstr "neveljavno Å¡tevilo vrstic %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr "podana je veÄ kot ena izhodna datoteka"
+
+#: src/shuf.c:353
+#, c-format
+msgid "cannot combine -e and -i options"
+msgstr "izbir -e in -i ni mogoÄe kombinirati"
+
+#: src/shuf.c:362
+#, c-format
+msgid "extra operand %s\n"
+msgstr "odveÄni operand %s\n"
+
+#: src/sleep.c:47
+#, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Uporaba: %s Å TEVILO[PRIPONA]\n"
+" ali: %s IZBIRA\n"
+"Premor za ŠTEVILO sekund. PRIPONA je lahko »s« za sekunde (privzeto),\n"
+"»m« za minute, »h« za ure ali »d« za dneve. Za razliko od veÄine\n"
+"drugih izvedb, ki zahtevajo, da je Å TEVILO celo Å¡tevilo, je tu lahko\n"
+"poljubno Å¡tevilo v zapisu s plavajoÄo vejico. ÄŒe je podanih veÄ argumentov,\n"
+"velja premor za vsoto njihovih vrednosti.\n"
+"\n"
+
+#: src/sleep.c:138
+#, c-format
+msgid "invalid time interval %s"
+msgstr "neveljaven Äasovni interval %s"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "ure s stvarnim Äasom ni moÄ prebrati"
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"Vsebino vseh DATOTEK na vhodu združimo, uredimo, in izpišemo na standarni "
+"izhod.\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+"Izbire pri urejanju:\n"
+"\n"
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks ne upoštevaj vodilnih presledkov\n"
+" -d, --dictionary-order upoÅ¡tevaj samo Ärke, Å¡tevke in presledke\n"
+" -f, --ignore-case male in velike Ärke so enakovredne\n"
+
+#: src/sort.c:326
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort primerjaj po splošni številski vrednosti\n"
+" -i, --ignore-nonprinting v kljuÄih upoÅ¡tevaj samo izpisljive znake\n"
+" -M, --month-sort kljuÄe uredi: (neznano) < »jan« < ... < »dec«\n"
+" -n, --numeric-sort primerjaj po Å¡tevilski vrednosti nizov\n"
+" -R, --random-sort uredi po nakljuÄnem kljuÄu\n"
+" --random-source=DATOTEKA beri nakljuÄne bajte iz DATOTEKE \n"
+" (privzeto /dev/urandom)\n"
+" -r, --reverse izpis v obrnjenem vrstnem redu\n"
+"\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+#, fuzzy
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+"Druge izbire:\n"
+"\n"
+" -c, --check Äe je datoteka že urejena, je ne urejaj znova\n"
+" -k, --key=POZ1[,POZ2] kljuÄ se zaÄne v stolpcu POZ1 in konÄa v "
+"stolpcu\n"
+" POZ2. Stolpci se Å¡tejejo od 1 dalje.\n"
+" -m, --merge že urejene datoteke združi brez ponovnega "
+"urejanja\n"
+" -o, --output=DATOTEKA izhod zapiši na DATOTEKO namesto na standardni "
+"izhod\n"
+" -s, --stable urejanje stabiliziraj z onemogoÄenjem skrajnih\n"
+" primerjav\n"
+" -S, --buffer-size=VELIKOST doloÄi VELIKOST medpomnilnika\n"
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=LOÄŒILO LOÄŒILO namesto prehodov med znaki in "
+"presledki\n"
+" -T, --temporary-directory=IMENIK \n"
+" uporabi IMENIK za zaÄasne datoteke namesto "
+"$TMPDIR\n"
+" ali %s; veÄtere izbire doloÄajo veÄ imenikov\n"
+" -u, --unique skupaj z -c: preveri za strogo urejenost;\n"
+" sicer izpiši samo prve od zaporednih enakih "
+"vrstic\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -z, --zero-terminated vrstice naj se zakljuÄijo z znakom NUL, ne LF\n"
+
+#: src/sort.c:363
+#, fuzzy
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"POZ ima obliko P[.Z][IZBIRE], kjer je P številka polja in Z položaj\n"
+"znaka znotraj polja. ÄŒe ni podana nobena od izbir -t ali -b, se znaki v\n"
+"polju Å¡tejejo od zaÄetka predhodnega presledka. IZBIRE so lahko ena ali veÄ\n"
+"od enoÄrkovnih izbir urejanja, kar prevlada nad globalnimi nastavitvami za\n"
+"ta kljuÄ. ÄŒe kljuÄ ni podan, se kot kljuÄ uporabi celotna vrstica.\n"
+"\n"
+"VELIKOSTI lahko sledi ena od naslednji multiplikativnih pripon:\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"% 1% pomnilnika, b 1, k 1024 (privzeto), itn. za M, G, T, P, E, Z, Y.\n"
+"\n"
+"ÄŒe DATOTEKA ni podana ali je enaka -, beremo s standardnega vhoda.\n"
+"\n"
+"***OPOZORILO***\n"
+"Krajevne prilagoditve vplivajo na urejanje. Če želite tradicionalno "
+"obnašanje\n"
+"(urejanje po Å¡tevilski vrednosti bajtov), uporabite LC_ALL=C.\n"
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "pišemo na %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "zaÄasne datoteke ni mogoÄe ustvariti"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "odpiranje ni uspelo"
+
+#: src/sort.c:758
+msgid "fflush failed"
+msgstr "klic fflush ni uspel"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "zapiranje ni uspelo"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "odpiranje ni uspelo"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr ""
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "zaÄasne datoteke ni mogoÄe ustvariti"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "zaÄasne datoteke ni mogoÄe ustvariti"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr ""
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "imenika %s ni mogoÄe ustvariti"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "pisanje ni uspelo"
+
+#: src/sort.c:975
+#, c-format
+msgid "warning: cannot remove: %s"
+msgstr "opozorilo: ni moÄ odstraniti %s"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "velikost urejanja"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "poizvedba po statusu ni uspela"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "branje ni uspelo"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: neurejenost: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "standardna napaka"
+
+#: src/sort.c:2562
+#, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: neveljavno doloÄilo polja: %s"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr "izbire »-%s« so nezdružljive"
+
+#: src/sort.c:2637
+#, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: neveljaven Å¡tevec na zaÄetku %s"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "neveljavno število za »-«"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "neveljavno število za ».«"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "zablodeli znak v doloÄilu polja"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "podana je veÄ kot ena oblika izhoda"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "neveljavno Å¡tevilo zaÄetka polja"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "Å¡tevilka polja je niÄ"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "znakovni zamik je niÄ"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "neveljavno število za »,«"
+
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "dodatni operand %s pri izbiri -c ni dovoljen"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Uporaba: %s [IZBIRA] [VHOD [PREDPONA]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"Datoteko VHOD razrežemo na kose enake dolžine, poimenovane PREDPONAaa,\n"
+"PREDPONAab...; privzeta dolžina je 1000 vrstic, privzeta PREDPONA pa »x«.\n"
+"ÄŒe VHOD ni podan ali je enak -, se bere s standardnega vhoda.\n"
+"\n"
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=N uporabi pripone dolžine N (privzeto %d)\n"
+" -b, --bytes=VELIKOST doloÄimo VELIKOST (v bajtih) izhodnih datotek\n"
+" -C, --line-bytes=VELIKOST velikost izhodnih datotek je navzgor omejena "
+"na\n"
+" VELIKOST (v bajtih)\n"
+" -d, --numeric-suffixes uporabi Å¡tevilÄne pripone namesto Ärkovnih\n"
+" -l, --lines=Å TEVILO doloÄimo Å TEVILO vrstic v izhodni datoteki\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose z izpisom diagnostike na standardni vhod za "
+"napake,\n"
+" preden odpremo posamiÄno datoteko\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"VELIKOST ima lahko pripono b za množenje s 512, k za 1024 ali m za 1048576.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "Pripone izhodnih datotek so izÄrpane"
+
+#: src/split.c:211
+#, c-format
+msgid "creating file %s\n"
+msgstr "ustvarjamo datoteko %s\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "razcep na veÄ kot en naÄin ni mogoÄ"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: neveljavno dolžina pripone"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: neveljavno Å¡tevilo bajtov"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: neveljavno Å¡tevilo vrstic"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "Å¡tevec vrstic -%s%c... je prevelik"
+
+#: src/split.c:518
+#, c-format
+msgid "invalid number of lines: 0"
+msgstr "neveljavno Å¡tevilo vrstic: 0"
+
+#: src/stat.c:636
+#, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "opozorilo: neprepoznana izbira »\\%c«"
+
+#: src/stat.c:680
+#, c-format
+msgid "%s: invalid directive"
+msgstr "%s: neveljavna direktiva"
+
+#: src/stat.c:726
+#, c-format
+msgid "warning: backslash at end of format"
+msgstr "opozorilo: nagibnica na koncu formatnega doloÄila"
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr "ni mogoÄe prebrati datoteÄnega sistema %s"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Uporaba: %s [IZBIRA] DATOTEKA...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+"Izpis statusa datoteke ali datoteÄnega sistema.\n"
+"\n"
+" -L, --dereference s sledenjem povezav\n"
+" -f, --file-system izpis statusa datoteÄnega sistema, ne statusa "
+"datoteke\n"
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+" -c, --format=OBLIKA namesto privzete uporabi podano OBLIKO;\n"
+" nova vrstica za vsako uporabo OBLIKE\n"
+" --printf=OBLIKA podobno kot --format, vendar s tolmaÄenjem ubežnih\n"
+" zaporedij in brez izpisa obvezne zakljuÄne nove \n"
+" verstice; Äe jo želite, dodajte \\n v OBLIKO.\n"
+" -t, --terse izpis podatkov v zgoÅ¡Äeni obliki\n"
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"\n"
+"Veljavna oblikovna zaporedja za datoteke (brez --file-system):\n"
+"\n"
+" %a - Osmiški zapis pravic do dostopa\n"
+" %A - Pravice do dostopa zapisane v Äloveku umljivi obliki\n"
+" %b - Å tevilo dodeljenih blokov (glej %B)\n"
+" %B - Velikost v bajtih za vsak blok, ki ga javi »%b«\n"
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+" %d - Številka naprave v desetiškem zapisu\n"
+" %D - Številka naprave v šestnajstiškem zapisu\n"
+" %f - Surov Å¡estnajstiÅ¡ki naÄin\n"
+" %F - Zvrst datoteke\n"
+" %g - Å tevilka skupine (GID) lastnika\n"
+" %G - Ime skupine lastnika\n"
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+" %h - Å tevilo trdih povezav\n"
+" %i - Å tevilka inoda\n"
+" %n - Ime datoteke\n"
+" %N - Ime datoteke (ciljne datoteke, Äe gre za simbolno povezavo)\n"
+" %o - Velikost V/I bloka\n"
+" %s - Skupna velikost v bajtih\n"
+" %t - Glavna številka zvrsti enote, šestnajstiško\n"
+" %T - Pomožna številka zvrsti enote, šestnajstiško\n"
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+" %u - Uporabniška številka (UID) lastnika\n"
+" %U - Uporabniško ime lastnika\n"
+" %x - ÄŒas zadnjega dostopa\n"
+" %X - ÄŒas zadnjega dostopa, v sekundah od 1970-01-01\n"
+" %y - ÄŒas zadnje spremembe\n"
+" %Y - ÄŒas zadnje spremembe, v sekundah od 1970-01-01\n"
+" %z - ÄŒas zadnje spremembe inoda\n"
+" %Z - ÄŒas zadnje spremembe inoda, v sekundah od 1970-01-01\n"
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"Veljavna formatna zaporedja za datoteÄne sisteme:\n"
+"\n"
+" %a - Å tevilo prostih blokov, dostopnih za uporabnike\n"
+" %b - Skupno Å¡tevilo blokov v datoteÄnem sistemu\n"
+" %c - Skupno Å¡tevilo inodov v datoteÄnem sistemu\n"
+" %d - Å tevilo prostih inodov v datoteÄnem sistemu\n"
+" %f - Å tevilo prostih blokov v datoteÄnem sistemu\n"
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+" %i - Identifikacijska Å¡tevilka datoteÄnega sistema, Å¡estnajstiÅ¡ko\n"
+" %l - NajveÄja dovoljena dolžina imen datotek\n"
+" %n - Ime datoteke\n"
+" %s - Optimalna velikost bloka za prenos\n"
+" %S - Osnovna velikost bloka (za Å¡tetje blokov)\n"
+" %t - Zvrst v šestnajstiškem zapisu\n"
+" %T - Zvrst v Äloveku umljivi obliki\n"
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Uporaba: %s [-F ENOTA] [--file=ENOTA] [NASTAVITEV]...\n"
+" ali: %s [-F ENOTA] [--file=ENOTA] [-a|-all]\n"
+" ali: %s [-F ENOTA] [--file=ENOTA] [-g|--save]\n"
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Izpišemo ali spremenimo lastnosti terminala.\n"
+"\n"
+" -a, --all izpiÅ¡i vse trenutne nastavitve v Äloveku berljivi "
+"obliki\n"
+" -g, --save izpiši vse trenutne nastavitve v obliki, ki jo bere "
+"stty\n"
+" -F, --file=ENOTA odpri in uporabi navedeno ENOTO namesto standardnega "
+"vhoda\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+"\n"
+"Neobvezni minus (-) pred NASTAVITVIJO pomeni njen izklop. Zvezdica (*)\n"
+"oznaÄuje nastavitve, ki so razÅ¡iritve standarda POSIX. Dejansko\n"
+"dostopne nastavitve so odvisne od sistema.\n"
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"\n"
+"Posebni znaki:\n"
+"* dsusp ZNAK ZNAK bo, ko poÄisti vhodni medpomnilnik, poslal signal za\n"
+" ustavitev terminala\n"
+" eof ZNAK ZNAK bo zakljuÄil datoteko (konÄal vhod)\n"
+" eol ZNAK ZNAK bo zakljuÄil vrstico\n"
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+"* eol2 ZNAK alternativni ZNAK za zakljuÄek vrstice\n"
+" erase ZNAK ZNAK bo pobrisal nazadnje vneseni znak\n"
+" intr ZNAK ZNAK bo poslal signal za prekinitev\n"
+" kill ZNAK ZNAK bo pobrisal trenutno vrstico\n"
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+"* lnext ZNAK ZNAK bo vnesel naslednji navedeni znak\n"
+" quit ZNAK ZNAK bo poslal signal za konÄanje\n"
+"* rprnt ZNAK ZNAK bo obnovil (ponovno izrisal) trenutno vrstico\n"
+" start ZNAK ZNAK bo ponovno pognal ustavljeni izhod\n"
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+" stop ZNAK ZNAK bo ustavil izhod\n"
+" susp ZNAK ZNAK bo poslal signal za ustavitev terminala\n"
+"* swtch ZNAK ZNAK bo preklopil v drugo plast lupine\n"
+"* werase ZNAK ZNAK bo pobrisal nazadnje vneseno besedo\n"
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"\n"
+"Posebne nastavitve:\n"
+"\n"
+" N hitrosti vhoda in izhoda nastavi na N bitov/s\n"
+"* cols N sporoÄi jedru, da uporabljamo terminal z N stolpci\n"
+"* columns N isto kot cols N\n"
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+" ispeed N vhodno hitrost nastavimo na N bitov/s\n"
+"* line N uporabi komunikacijski protokol N\n"
+" min N z -icanon; naj bo N znakov minimum pri branju\n"
+" ospeed N izhodno hitrost nastavimo na N bitov/s\n"
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+"* rows N sporoÄi jedru, da uporabljamo terminal z N vrsticami\n"
+"* size izpiši podatke iz jedra o številu stolpcev in vrstic\n"
+" speed izpiši hitrost terminala\n"
+" time N z -icanon, nastavi iztek Äasa pri branju na N desetink "
+"sekunde\n"
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"\n"
+"Krmilne nastavitve:\n"
+" [-]clocal onemogoÄi modemske krmilne signale\n"
+" [-]cread omogoÄi sprejem vhoda\n"
+"* [-]crtscts omogoÄi usklajevanje RTS/CTS\n"
+" csN nastavi velikost znaka v bitih na N; N je v intervalu "
+"[5..8]\n"
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+" [-]cstopb dva konÄna bita za znak (pri »-« je en sam)\n"
+" [-]hup pošlji signal za odložitev, ko zadnji proces zapre terminal\n"
+" [-]hupcl isto kot [-]hup\n"
+" [-]parenb poÅ¡iljaj paritetni bit na izhodu in ga priÄakuj na vhodu\n"
+" [-]parodd izberi liho pariteto (pri »-« je soda)\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"\n"
+"Vhodne nastavitve:\n"
+" [-]brkint prekinitve sprožijo signal za prekinitev\n"
+" [-]icrnl pretvori znak CR v NL\n"
+" [-]ignbrk ne upoštevaj prekinitvenih znakov\n"
+" [-]igncr ne upoštevaj znaka za pomik na levi rob\n"
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+" [-]ignpar ne upoÅ¡tevaj znakov z napaÄno pariteto\n"
+"* [-]imaxbel zapiskaj in ne izprazni polnega medpomnilnika na znaku\n"
+" [-]inlcr pretvori znak NL v CR\n"
+" [-]inpck omogoÄi preverjanje paritete na vhodu\n"
+" [-]istrip najviÅ¡ji (osmi) bit znakov vedno postavi na niÄ\n"
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+" * [-]iutf8 privzemi, da znaki na vhodu uporabljajo kodiranje UTF-8\n"
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+"* [-]iuclc pretvori velike Ärke v male\n"
+"* [-]ixany omogoÄi, da katerikoli znak, ne le XON, ponovno požene "
+"izpis\n"
+" [-]ixoff omogoÄi poÅ¡iljanje znakov XON in XOFF\n"
+" [-]ixon omogoÄi uskladitev z znaki XON/XOFF\n"
+" [-]parmrk oznaÄi napako v pariteti z zaporedjem 255-0-ZNAK\n"
+" [-]tandem isto kot [-]ixoff\n"
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"\n"
+"Izhodne nastavitve:\n"
+"* bsN slog zakasnitve pri brisalki; N je v intervalu [0..1]\n"
+"* crN slog zakasnitve pri pomiku na zaÄetek vrste; N je v [0..3]\n"
+"* ffN slog zakasnitve pri pomiku na naslednjo stran; N je v "
+"[0..1]\n"
+"* nlN slog zakasnitve pri skoku v naslednjo vrsto; N je v [0..1]\n"
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+"* [-]ocrnl pretvori znake CR v NL\n"
+"* [-]ofdel zapolnjuj z znaki za brisanje namesto z znaki NUL\n"
+"* [-]ofill uporabi znake za zapolnjevanje namesto Äasovnih zakasnitev\n"
+"* [-]olcuc pretvori male Ärke v velike\n"
+"* [-]onlcr pretvori znake NL v CR\n"
+"* [-]onlret znak NL opravi Å¡e pomik na zaÄetek vrste\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+"* [-]onocr ne izpisuj znakov CR v prvem stolpcu\n"
+" [-]opost dodatna obdelava izhoda\n"
+"* tabN slog zakasnitve pri tabulatorju; N je v intervalu [0..1]\n"
+"* tabs isto kot tab0\n"
+"* -tabs isto kot tab3\n"
+"* vtN slog zakasnitve pri vertikalnem tabulatorju; N je v [0..1]\n"
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"\n"
+"Lokalne nastavitve:\n"
+" [-]crterase izpisuj znak za brisanje kot brisanje-presledek-brisanje\n"
+"* crtkill pobriši celotno vrstico ob upoštevanju echoprt in echoe\n"
+"* -crtkill pobriši celotno vrstico ob upoštevanju echoctl in echok\n"
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+"* [-]ctlecho krmilne znake izpisuj v zapisu s strešico (npr. »^C«)\n"
+" [-]echo izpisuj vnesene znake\n"
+"* [-]echoctl isto kot [-]ctlecho\n"
+" [-]echoe isti kot [-]crterase\n"
+" [-]echok izpiši znak za novo vrstico po brisanju vrstice\n"
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+"* [-]echoke isto kot [-]crtkill\n"
+" [-]echonl izpisuj znak za novo vrstico, Äetudi ostalih ne\n"
+"* [-]echoprt izpisuj pobrisane znake nazaj, med »\\« in »/«\n"
+" [-]icanon omogoÄi posebne znake erase, kill, werase in rprnt\n"
+" [-]iexten omogoÄi posebne znake, ki niso del priporoÄila POSIX\n"
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+" [-]isig omogoÄi posebne znake interrupt, quit in suspend\n"
+" [-]noflsh onemogoÄi izpraznitev medpomnilnika po znakih interrupt in "
+"quit\n"
+"* [-]prterase isto kot [-]echoprt\n"
+"* [-]tostop ustavi vsa opravila v ozadju, ki poskušajo pisati na "
+"terminal\n"
+"* [-]xcase skupaj z icanon, predhodi vse velike Ärke z nagibnico »\\«\n"
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+"\n"
+"Kombinacijske nastavitve:\n"
+"* [-]LCASE isto kot [-]lcase\n"
+" cbreak isto kot -icanon\n"
+" -cbreak isto kot icanon\n"
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+" cooked isto kot brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, znaka eof in eol na njuni privzeti vrednosti\n"
+" -cooked isto kot raw\n"
+" crt isto kot echoe echoctl echoke\n"
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+" dec isto kot echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+"* [-]decctlq isto kot [-]ixany\n"
+" ek znaka erase in kill na njuni privzeti vrednosti\n"
+" evenp isto kot parenb -parodd cs7\n"
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+" -evenp isto kot -parenb cs8\n"
+"* [-]lcase isto kot xcase iuclc olcuc\n"
+" litout isto kot -parenb -istrip -opost cs8\n"
+" -litout isto kot parenb istrip opost cs7\n"
+" nl isto kot -icrnl -onlcr\n"
+" -nl isto kot icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+" oddp isto kot parenb parodd cs7\n"
+" -oddp isto kot -parenb cs8\n"
+" [-]parity isto kot [-]evenp\n"
+" pass8 isto kot -parenb -istrip cs8\n"
+" -pass8 isto kot parenb istrip cs7\n"
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+" raw isto kot -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw isto kot cooked\n"
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+" sane isto kot cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, vsi posebni znaki\n"
+" na njihove privzete vrednosti.\n"
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"Upravljaj s terminalskim vodom, povezanim s standardnim vhodom. Brez\n"
+"argumentov izpiše hitrost, komunikacijski protokol in vse spremembe\n"
+"glede na stty sane. Pri nastavitvah je ZNAK mogoÄe podati dobesedno,\n"
+"ali pa v notacijah ^c, 0x37, 0177 ali 127; s posebnimi vrednostmi ^-\n"
+"in undef prekliÄemo nastavitve posebnih znakov.\n"
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr "navedena je lahko samo ena enota"
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+"izbiri za izpis v Äloveku berljivi obliki ter obliki, ki jo lahko prebere\n"
+"stty, sta si nasprotujoÄi"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "pri doloÄanju sloga izhoda ni mogoÄe nastavljati naÄinov"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: ne-blokirnega naÄina ni mogoÄe ponovno zagnati"
+
+#: src/stty.c:885 src/stty.c:995
+#, c-format
+msgid "invalid argument %s"
+msgstr "neveljaven argument %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, c-format
+msgid "missing argument to %s"
+msgstr "izbiri %s manjka argument"
+
+#: src/stty.c:976
+#, c-format
+msgid "invalid line discipline %s"
+msgstr "neveljaven komunikacijski protokol %s"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: vseh zahtevanih operacij se ni dalo izvesti"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "nov_naÄin: naÄin\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: ni podatka o velikosti te enote"
+
+#: src/stty.c:1888
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "neveljaven celoÅ¡tevilÄni argument %s"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Geslo:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: ni mogoÄe odpreti /dev/tty"
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "nastavitev skupin ni mogoÄa"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "nastavitev GID ni mogoÄa"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "nastavitev UID ni mogoÄa"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Uporaba: %s [IZBIRA]... [-] [UPORABNIK [ARGUMENT]...]\n"
+
+#: src/su.c:386
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Aktivno uporabniško in skupinsko identiteto spremenimo na identiteto\n"
+"navedenega UPORABNIKA.\n"
+"\n"
+" -, -l, --login naj bo ukazna lupina prijavna lupina\n"
+" -c, --commmand=UKAZ ukazni lupini podamo en sam navedeni UKAZ s -"
+"c\n"
+" -f, --fast ukazni lupini podamo izbiro -f (samo csh in "
+"tcsh)\n"
+" -m, --preserve-environment brez spreminjanja nastavitev okolja\n"
+" -p isto kot -m\n"
+" -s, --shell=LUPINA poženemo navedeno LUPINO (Äe jo /etc/shells "
+"dovoli)\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+"\n"
+"Minus - brez Äesarkoli pomeni isto kot -l. ÄŒe UPORABNIK ni naveden, se\n"
+"privzame naduporabnik.\n"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "uporabnik %s ne obstaja"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "napaÄno geslo"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "z omejeno ukazno lupino %s"
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "opozorilo: imenik %s ni dosegljiv"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Za vsako podano DATOTEKO izraÄunamo nadzorno vsoto in izpiÅ¡emo Å¡tevilo "
+"blokov.\n"
+"\n"
+" -r prekliÄemo -s; algoritem BSD, velikost blokov 1 KB\n"
+" -s, --sysv raÄunanje vsote z algoritmom System V, velikost blokov 512 "
+"B\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr "Stanje na disku uskladimo s stanjem v diskovnem medpomnilniku.\n"
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "ignoriramo vse argumente"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+"\n"
+"OPOZORILO: vaša ukazna lupina ima lahko vgrajeno vrednost %s, ki navadno\n"
+"prevlada nad tu opisano razliÄico. Prosimo, obrnite se na dokumentacijo\n"
+"vaše ukazne lupine za podrobnosti o podprtih izbirah.\n"
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help ta navodila\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version razliÄica programa\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Vsako od DATOTEK prepišemo na standardni izhod v obratnem vrstnem redu, od\n"
+"zadnje vrstice proti prvi. ÄŒe DATOTEKA ni podana ali je enaka -, beremo s\n"
+"standardnega vhoda.\n"
+"\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before loÄilo dodamo pred, ne za izpisano vrstico\n"
+" -r, --regex loÄila obravnavamo kot regularne izraze\n"
+" -s, --separator=NIZ vrstice naj loÄuje NIZ, ne znak za novo vrstico\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, c-format
+msgid "%s: seek failed"
+msgstr "%s: klic seek ni uspel"
+
+#: src/tac.c:265
+#, c-format
+msgid "record too large"
+msgstr "zapis je prevelik"
+
+#: src/tac.c:459
+#, c-format
+msgid "cannot create temporary file %s"
+msgstr "zaÄasne datoteke %s ni mogoÄe ustvariti"
+
+#: src/tac.c:466
+#, c-format
+msgid "cannot open %s for writing"
+msgstr "%s ni mogoÄe odpreti za pisanje"
+
+#: src/tac.c:487 src/tac.c:494
+#, c-format
+msgid "%s: write error"
+msgstr "%s: napaka pri pisanju"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "loÄilo ne more biti prazno"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Zadnjih %d vrstic vsake od podanih DATOTEK izpišemo na standardni izhod.\n"
+"ÄŒe je podana veÄ kot ena DATOTEKA, izpiÅ¡emo pred tem Å¡e glavo z imenom\n"
+"datoteke. ÄŒe DATOTEKA ni podana ali je enaka -, beremo s standardnega "
+"vhoda.\n"
+"\n"
+
+#: src/tail.c:229
+#, fuzzy
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry datoteko poskuÅ¡aj odpreti, Äetudi ni dostopna v\n"
+" trenutku, ko poženemo tail ali pa postane\n"
+" nedostopna kasneje -- uporabno skupaj s "
+"sledenjem\n"
+" imena (izbira --follow-name)\n"
+" -c, --bytes=N izpiši zadnjih N bajtov datoteke\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={name|descriptor}] pri datotekah, ki rastejo, sledimo\n"
+" trenutnemu koncu datoteke; -f, --follow in\n"
+" --follow=descriptor so sopomenke\n"
+" -F isto kot --follow=name --retry\n"
+
+#: src/tail.c:244
+#, fuzzy, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=N izpišemo zadnjih N vrstic namesto privzetih %d\n"
+" --max-unchanged-stats=N\n"
+" skupaj z --follow=name, ponovno odpri DATOTEKO, "
+"ki\n"
+" se ni spremenila v zadnjih N (privzeto %d) "
+"branjih;\n"
+" s tem preverimo, ali vmes ni bila izbrisana "
+"ali\n"
+" preimenovana (uporabno pri dnevniških "
+"datotekah)\n"
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID skupaj z -f, proces zakljuÄimo, ko PID ugasne\n"
+" -q, --quiet, --silent vedno brez izpisa glave z imenom datoteke\n"
+" -s, --sleep-interval=S skupaj z -f; premor S sekund (privzeto 1 "
+"sekunda)\n"
+" med ponovitvami\n"
+" -v, --verbose vedno z izpisom glave z imenom datoteke\n"
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"ÄŒe je Å¡tevilo N (Å¡tevilo vrstic ali bajtov) predznaÄeno z znakom "
+"»+« (plus),\n"
+"izpisujemo vrstice od N-te vrstice (N-tega bajta) dalje namesto zadnjih N\n"
+"vrstic (bajtov). MogoÄe multiplikativne pripone pri N so »b« (množenje s "
+"512),\n"
+"»k« (1024) in »m« (1024×1024).\n"
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"Z izbiro --follow (-f) tail privzeto sledi deskriptorju datoteke, kar "
+"pomeni,\n"
+"da konec datoteke sledimo tudi, Äe je ta vmes preimenovana. "
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"Privzeti naÄin ni uporaben, Äe želimo spremljati samo datoteko z danim\n"
+"imenom (npr. dnevniški zapisi). V tem primeru uporabimo --follow=name. V "
+"tem\n"
+"naÄinu tail periodiÄno poskusi odpreti datoteko in tako preverja, ali ta Å¡e\n"
+"obstaja, ali pa je bila vmes zbrisana ter ponovno ustvarjena.\n"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "zapiramo %s (fd=%d)"
+
+#: src/tail.c:411
+#, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: premik na relativni odmik %s ni mogoÄ"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s: premik na odmik %s (relativno od konca) ni mogoÄ"
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr "%s je postala nedostopna"
+
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+"%s je bila nadomeÅ¡Äena z datoteko, kateri ni moÄ slediti konca; opuÅ¡Äamo"
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr "%s je postala dostopna"
+
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "%s se je pojavila; sledimo konec nove datoteka"
+
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "%s je bila zamenjana; sledimo konec nove datoteke"
+
+#: src/tail.c:1025
+#, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: ne-blokirnega naÄina ni mogoÄe spremeniti"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: datoteka je porezana"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "nobene datoteke ni veÄ"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr "%s: koncu te zvrsti datoteke ni mogoÄe slediti; s tem imenom odnehamo"
+
+#: src/tail.c:1439
+#, c-format
+msgid "number in %s is too large"
+msgstr "Å¡tevilo v %s je preveliko"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr "%s: neveljavno najveÄje Å¡tevilo nespremenjenih statusov med odpiranji"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: neveljavna Å¡tevilka procesa (PID)"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: neveljavno Å¡tevilo sekund"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr "izbira je uporabljena v neveljavnem kontekstu -- %c"
+
+#: src/tail.c:1566
+#, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "opozorilo: izbira --retry je veÄinoma uporabna le, kadar ji sledi ime"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr "opozorilo: PID ignoriran; --pid=PID je uporabno samo pri sledenju"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "opozorilo: izbira --pid=PID na tem sistemu ni podprta"
+
+#: src/tail.c:1667
+#, c-format
+msgid "cannot follow %s by name"
+msgstr "sledenje %s po imenu ni mogoÄe"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr "opozorilo: sledenje standardnemu vhodu za vekomaj ni uÄinkovito"
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Standarni vhod prepišemo na standardni izhod in še na vse navedene "
+"DATOTEKE.\n"
+"\n"
+" -a, --append dodajaj na konec datoteke, namesto da pišeš "
+"prek\n"
+" -i, --ignore-interrupts ne upoštevaj signalov za prekinitev\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Če je DATOTEKA enaka -, prepišemo nazaj na standardni izhod.\n"
+
+#: src/test.c:125
+#, c-format
+msgid "missing argument after %s"
+msgstr "manjkajoÄ argument za %s"
+
+#: src/test.c:161
+#, c-format
+msgid "invalid integer %s"
+msgstr "neveljavno celo Å¡tevilo %s"
+
+#: src/test.c:242
+msgid "')' expected"
+msgstr "priÄakuje se »)«"
+
+#: src/test.c:245
+#, c-format
+msgid "')' expected, found %s"
+msgstr "priÄakuje se »)«, naleteli na %s"
+
+#: src/test.c:261 src/test.c:606
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: priÄakuje se unarni operator"
+
+#: src/test.c:330
+msgid "-nt does not accept -l"
+msgstr "-nt ne sprejema -l"
+
+#: src/test.c:343
+msgid "-ef does not accept -l"
+msgstr "-ef ne sprejema -l"
+
+#: src/test.c:359
+msgid "-ot does not accept -l"
+msgstr "-ot ne sprejema -l"
+
+#: src/test.c:368
+msgid "unknown binary operator"
+msgstr "neznan binarni operator"
+
+#: src/test.c:634
+#, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: priÄakuje se binarni operator"
+
+#: src/test.c:694
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Uporaba: test IZRAZ\n"
+" ali: test\n"
+" ali: [ IZRAZ ]\n"
+" ali: [ ]\n"
+" ali: [ IZBIRA\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"Ovrednoti IZRAZ in rezultat vrne kot izhodno kodo.\n"
+"\n"
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"\n"
+"Rezultat ovrednotenja IZRAZA je lahko resniÄno (true) ali neresniÄno "
+"(false).\n"
+"IzpuÅ¡Äen IZRAZ se privzeto ovrednoti kot neresniÄno. IZRAZ je eden od:\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+"\n"
+" ( IZRAZ ) IZRAZ je pravilen\n"
+" ! IZRAZ IZRAZ ni pravilen\n"
+" IZRAZ1 -a IZRAZ2 IZRAZ1 in IZRAZ2 sta oba pravilna\n"
+" IZRAZ1 -o IZRAZ2 IZRAZ1 ali IZRAZ2 sta pravilna\n"
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"\n"
+" [-n] NIZ dolžina NIZA je veÄja od niÄ\n"
+" NIZ isto kot -n NIZ\n"
+" -z NIZ dolžina NIZA je enaka niÄ\n"
+" NIZ1 = NIZ2 niza sta enaka\n"
+" NIZ1 != NIZ2 niza se razlikujeta\n"
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" Å TEVILO1 -eq Å TEVILO2 celo Å TEVILO1 je enako celemu Å TEVILU2\n"
+" Å TEVILO1 -ge Å TEVILO2 celo Å TEVILO1 je veÄje ali enako od celega "
+"Å TEVILU2\n"
+" Å TEVILO1 -gt Å TEVILO2 celo Å TEVILO1 je veÄje od celega Å TEVILU2\n"
+" ŠTEVILO1 -le ŠTEVILO2 celo ŠTEVILO1 je manjše ali enako od celega "
+"Å TEVILU2\n"
+" ŠTEVILO1 -lt ŠTEVILO2 celo ŠTEVILO1 je manjše od celega ŠTEVILU2\n"
+" Å TEVILO1 -ne Å TEVILO2 celo Å TEVILO1 ni enako celemu Å TEVILU2\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+"\n"
+" DATOTEKA1 -ef DATOTEKA2 datoteki imata isto Å¡tevilko naprave in inoda\n"
+" DATOTEKA1 -nt DATOTEKA2 DATOTEKA1 je bila spremenjena kasneje kot "
+"DATOTEKA2\n"
+" DATOTEKA1 -ot DATOTEKA2 DATOTEKA1 je bila spremenjena prej kot DATOTEKA2\n"
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+"\n"
+" -b DATOTEKA DATOTEKA obstaja in je bloÄna posebna enota\n"
+" -c DATOTEKA DATOTEKA obstaja in je znakovna posebna enota\n"
+" -d DATOTEKA DATOTEKA obstaja in je imenik\n"
+" -e DATOTEKA DATOTEKA obstaja\n"
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+" -f DATOTEKA DATOTEKA obstaja in je navadna datoteka\n"
+" -g DATOTEKA DATOTEKA obstaja in ima postavljen bit SGID\n"
+" -G DATOTEKA DATOTEKA obstaja in pripada isti skupini\n"
+" -h DATOTEKA DATOTEKA obstaja in je simbolna povezava (isto kot -L)\n"
+" -k DATOTEKA DATOTEKA obstaja in ima postavljen lepljivi bit\n"
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+" -L DATOTEKA DATOTEKA obstaja in je simbolna povezava (isto kot -h)\n"
+" -O DATOTEKA DATOTEKA obstaja in pripada istemu uporabniku\n"
+" -p DATOTEKA DATOTEKA obstaja in je poimenovana cev\n"
+" -r DATOTEKA DATOTEKA obstaja in jo smemo brati\n"
+" -s DATOTEKA DATOTEKA obstaja in ni prazna (dolžina > 0)\n"
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+" -S DATOTEKA DATOTEKA obstaja in je vtiÄnica\n"
+" -t DATOTEKA deskriptor DATOTEKE (navadno standarni izhod) je odprt na "
+"terminalu\n"
+" -u DATOTEKA DATOTEKA obstaja in ima postavljen bit SUID\n"
+" -w DATOTEKA DATOTEKA obstaja in nanjo smemo pisati\n"
+" -x DATOTEKA DATOTEKA obstaja in jo smemo izvajati ali iskati\n"
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"Razen pri izbirah -h in -L se pri vseh testih v zvezi z datotekami\n"
+"sledi simbolnim povezavam. Pazite na to, da je potrebno oklepaje\n"
+"opremiti z nagibnicami, da jih ne tolmaÄi ukazna lupina. Celo Å TEVILO\n"
+"je lahko tudi -l NIZ, ki se ovrednoti na dolžino NIZA.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr "test in/ali ["
+
+#: src/test.c:831
+msgid "missing `]'"
+msgstr "manjkajoÄ Â»]«"
+
+#: src/test.c:846
+#, c-format
+msgid "extra argument %s"
+msgstr "odveÄen argument %s"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "neveljavna oblika datuma %s"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "ustvarjamo %s"
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr "%s ni dosegljiv"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "nastavljamo Äase %s"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+"ÄŒas zadnjega dostopa in spremembe DATOTEKE postavimo na trenutni Äas.\n"
+"\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a spremeni samo Äas zadnjega dostopa\n"
+" -c, --no-create brez ustvarjanja novih datotek\n"
+" -d, --date=NIZ razÄleni NIZ in uporabi ta Äas namesto trenutnega\n"
+" -f (ignorirano)\n"
+" -m spremeni samo Äas zadnje spremembe\n"
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --reference=DATOTEKA uporabi Äas podane DATOTEKE namesto trenutnega\n"
+" -t ŽIG uporabi [[CC]YY]MMDDhhmm[.ss] namesto trenutnega "
+"Äasa\n"
+" --time=BESEDA nastavimo Äas, podan z BESEDO: \n"
+" Äas dostopa: access, atime, use (isto kot -a)\n"
+" Äas spremembe: mtime, modify (isto kot -m)\n"
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"Pazita na to, da izbiri -d in -t sprejemata razliÄna zapisa datuma in Äasa.\n"
+"\n"
+"Če je DATOTEKA enaka »-«, se dotakne standardnega izhoda.\n"
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "hkrati lahko navedemo samo en vir"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+"opozorilo: »touch %s« je opuÅ¡Äeno; uporabite »touch -t %04ld%02d%02d%02d%02d."
+"%02d«"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Uporaba: %s [IZBIRA]... MNOŽICA1 [MNOŽICA2]\n"
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Prevedemo, stisnemo ali pobrišemo znake iz toka podatkov na standardnem \n"
+"vhodu ter rezultat pišemo na standardni izhod.\n"
+"\n"
+" -c, -C, --complement komplement MNOŽICE 1.\n"
+" -d, --delete pobrišemo znake, navedene v MNOŽICI 1.\n"
+" -s, --squeeze-repeats sosledje enakih znakov, navedeno v MNOŽICI 1,\n"
+" nadomestimo z enim samim znakom\n"
+" -t, --truncate-set1 MNOŽICO 1 najprej skrÄimo na velikost MNOŽICE 2.\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"MNOŽICE doloÄajo nizi znakov. VeÄinoma predstavljajo sebe, posebej pa se\n"
+"tolmaÄijo naslednja zaporedja:\n"
+"\n"
+" \\\\NNN znak z osmiško kodo NNN (dolžina 1, 2 ali 3 osmiške "
+"Å¡tevke)\n"
+" \\\\\\\\ nagibnica\n"
+" \\\\a zvonÄek\n"
+" \\\\b pomik za en znak v levo\n"
+" \\\\f skok na novo stran\n"
+" \\\\n skok v novo vrstico\n"
+" \\\\r pomik na levi rob\n"
+" \\\\t vodoravni tabulator\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\\\v navpiÄni tabulator\n"
+" ZNAK1-ZNAK2 naraÅ¡ÄajoÄe zaporedje znakov od ZNAKA1 do ZNAKA2\n"
+" [ZNAK1-ZNAK2] isto kot ZNAK1-ZNAK2, Äe to uporabljata obe množici\n"
+" [ZNAK*] v MNOŽICI 2; toliko ponovitev ZNAKA kot v MNOŽICI 1\n"
+" [ZNAK*N] N ponovitev znaka; osmiÅ¡ka vrednost, Äe se N zaÄne z "
+"niÄlo\n"
+" [:alnum:] vse Ärke in Å¡tevke\n"
+" [:alpha:] vse Ärke\n"
+" [:blank:] vsi vodoravni prazni znaki\n"
+" [:cntrl:] vsi krmilni znaki\n"
+" [:digit:] vse Å¡tevke\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] vsi izpisljivi znaki razen presledka\n"
+" [:lower:] vse male Ärke\n"
+" [:print:] vsi izpisljivi znaki s presledkom vred\n"
+" [:punct:] vsa loÄila\n"
+" [:space:] vsi prazni znaki, vodoravni in navpiÄni\n"
+" [:upper:] vse velike Ärke\n"
+" [:xdigit:] vse šestnajstiške števke\n"
+" [=ZNAK=] vsi znaki, ki so enakovredni navedenemu ZNAKU\n"
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"Če izbira -d ni podana in sta navedeni tako MNOŽICA1 kot MNOŽICA2, se "
+"privzame\n"
+"prevedba. Izbira -t se sme uporabiti samo ob prevedbi. Če je MNOŽICA 2 "
+"krajša\n"
+"od MNOŽICE 1, se privzame ponovitev zadnjega znaka v MNOŽICI 2 do dolžine\n"
+"MNOŽICE 1. "
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"Znaki, ki v MNOŽICI 2 segajo prek dolžine MNOŽICE 1, se zavržejo.\n"
+"Edino razreda [:lower:] in [:upper:] se zajamÄeno razÅ¡irita v naraÅ¡ÄajoÄem\n"
+"vrstnem redu. Če je kateri od njiju naveden v MNOŽICI 2, ju lahko uporabimo\n"
+"le za pretvorbo med velikimi in malimi Ärkami. "
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"Izbira -s uporablja MNOŽICO 1,\n"
+"kadar ne prevajamo ali brišemo, sicer pa stiskanje uporablja MNOŽICO 2 in "
+"se\n"
+"izvede po prevajanju in brisanju.\n"
+
+#: src/tr.c:519
+#, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"opozorilo: dvoumno osmiško ubežno zaporedje \\%c%c%c \n"
+"\ttolmaÄimo kot dvobajtno zaporedje \\0%c%c, %c"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "meji obsega »%s-%s« nista navedeni v naraÅ¡ÄajoÄem abecednem redu"
+
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "neveljavno Å¡tevilo ponavljanj %s v konstruktu [c*n]"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "manjkajoÄe ime razreda znakov »[::]«"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "manjkajoÄ znak za ekvivalenco razredov »[==]«"
+
+#: src/tr.c:937
+#, c-format
+msgid "invalid character class %s"
+msgstr "neveljaven razred znakov %s"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: operand ekvivalentnih razredov sme biti en sam znak"
+
+#: src/tr.c:1275
+#, c-format
+msgid "too many characters in set"
+msgstr "preveÄ znakov v množici"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "konstrukt ponovitev znaka [c*] se ne sme pojaviti v nizu 1"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "kveÄjemu en konstrukt ponovitev znaka [c*] se sme pojaviti v nizu 2"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "izrazi [=c=] se pri prevedbi ne smejo pojavljati v nizu 2"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "kadar ne krajšamo niza 1, mora biti niz 2 neprazen"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"pri prevedbi s komplementi znakovnih razredov mora\n"
+"niz 2 preslikati vse znake iz domene v enega"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"edina razreda znakov, ki se smeta pri prevedbi pojaviti v nizu 2,\n"
+"sta »upper« in »lower«"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "konstrukt [c*] se sme pojaviti v nizu 2 le pri prevedbi"
+
+#: src/tr.c:1731
+msgid "Two strings must be given when translating."
+msgstr "Pri prevedbi morata biti podana dva niza."
+
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr "Kadar briÅ¡emo brez veÄkratnega stiskanja, sme biti podan samo en niz."
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "neporavnana konstrukta [:upper:] in/ali [:lower:]"
+
+#: src/true.c:42
+#, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uporaba: %s [prezrt argument ukazne vrstice]\n"
+" ali: %s IZBIRA\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr "ZakljuÄi s statusno kodo, ki kaže uspeh."
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Uporaba: %s [IZBIRA] [DATOTEKA]\n"
+"Zapišemo povsem urejen seznam, usklajen z delno ureditvijo v DATOTEKI.\n"
+"ÄŒe DATOTEKA ni podana ali je enaka -, beremo s standardnega vhoda.\n"
+"\n"
+
+#: src/tsort.c:474
+#, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: liho Å¡tevilo vnosov na vhodu"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: zanka na vhodu:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Uporaba: %s [IZBIRA]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Izpišemo ime enote terminala, s katere beremo standardni vhod.\n"
+"\n"
+" -s, --silent, --quiet niÄesar ne izpiÅ¡i, samo vrni izhodni status\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "ni terminal"
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"IzpiÅ¡emo razliÄne sistemske podatke. Brez IZBIRE je isto kot -s.\n"
+"\n"
+" -a, --all izpiši vse podatke v naslednjem vrstnem redu;\n"
+" z izjemo -p in -i, Äe nista znana\n"
+" -r, --kernel-name izpiši ime jedra operacijskega sistema\n"
+" -n, --nodename izpiÅ¡i omrežno ime raÄunalnika\n"
+" -r, --kernel-release izpiši izdajo jedra operacijskega sistema\n"
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v, --kernel-version izpiÅ¡i razliÄico jedra operacijskega sistema\n"
+" -m, --machine izpiši podatke o strojni opremi\n"
+" -p, --processor izpiši vrsto procesorja ali »unknown«\n"
+" -i, --hardware-platform izpiši podatke o strojnem okolju ali »unknown«\n"
+" -o, --operating-system izpiši ime operacijskega sistema\n"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "ime sistema ni ugotovljivo"
+
+#: src/unexpand.c:125
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Presledke v vsaki DATOTEKI nadomestimo s tabulatorji in rezultat zapišemo "
+"na\n"
+"standardni izhod. ÄŒe DATOTEKA ni podana ali je enaka -, beremo s "
+"standardnega\n"
+"vhoda.\n"
+"\n"
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all pretvorimo vse prazne prostore, ne le vodilnih\n"
+" --first-only navzlic izbiri -a pretvorimo samo vodilne presledke\n"
+" -t, --tabs=Å TEVILO tabulatorji naj bodo Å TEVILO znakov narazen namesto\n"
+" privzetih 8 (omogoÄi -a)\n"
+" -t, --tabs=SEZNAM z vejicami loÄen seznam eksplicitnih položajev "
+"tabulatorja\n"
+" (omogoÄi -a)\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr "razmik med tabulatorji je prevelik"
+
+#: src/unexpand.c:512
+#, c-format
+msgid "tab stop value is too large"
+msgstr "vrednost tabulatorja je prevelika"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Uporaba: %s [IZBIRA]... [VHOD [IZHOD]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"Sosledje enakih vrstic na VHODU (ali standardnem vhodu) nadomestimo z eno\n"
+"samo in rezultat zapišemo na IZHOD (standardni izhod).\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count na zaÄetku vsake vrstice izpiÅ¡emo tudi Å¡tevilo "
+"ponovitev\n"
+" -d, --repeated izpišemo samo podvojene vrstice\n"
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated[=delimit-method] izpišemo vse podvojene vrstice\n"
+" -f, --skip-fields=N pri primerjanju izpustimo prvih N polj\n"
+" -i, --ignore-case male in velike Ärke obravnavamo enakovredno\n"
+" -s, --skip-chars=N pri primerjanju izpustimo prvih N znakov\n"
+" -u, --unique izpišemo samo nepodvojene vrstice\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr " -w, --check-chars=N primerjamo prvih N znakov v vrstici\n"
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"Polje je zaporedje praznih znakov, ki mu sledi zaporedje nepraznih znakov.\n"
+"Najprej preskoÄimo polja, potem znake.\n"
+
+#: src/uniq.c:350
+#, c-format
+msgid "too many repeated lines"
+msgstr "preveÄ ponovljenih vrstic"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "neveljavno Å¡tevilo preskoÄenih polj"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "neveljavno Å¡tevilo preskoÄenih bajtov"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "neveljavno Å¡tevilo primerjanih bajtov"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr "izpis vseh podvojenih vrstic skupaj s Å¡tevilom ponovitev ni smiseln"
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uporaba: %s DATOTEKA\n"
+" ali: %s IZBIRA\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"Odstranitev navedene DATOTEKE s klicem funkcije unlink(2).\n"
+"\n"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "s klicem unlink ni mogoÄe odstraniti %s"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "Äas od zagona ni ugotovljiv"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d:%02d%s v teku "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "A.M."
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "P.M."
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr " ??:???? pokonci "
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr "???? dni ??:??, "
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%ld dni"
+msgstr[1] "%ld dan"
+msgstr[2] "%ld dneva"
+msgstr[3] "%ld dnevi"
+
+#: src/uptime.c:147
+#, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%lu uporabnikov"
+msgstr[1] "%lu uporabnik"
+msgstr[2] "%lu uporabnika"
+msgstr[3] "%lu uporabniki"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", povpr. obremenitev %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Uporaba: %s [IZBIRA]... [ DATOTEKA ]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"IzpiÅ¡emo trenutni Äas, Äas, ki je pretekel od zagona raÄunalnika, Å¡tevilo\n"
+"trenutno prijavljenih uporabnikov in povpreÄno Å¡tevilo opravil v Äakalni "
+"vrsti\n"
+"v zadnji minuti, petih minutah in 15 minutah.\n"
+"ÄŒe DATOTEKA ni navedena, uporabimo %s. ObiÄajno je DATOTEKA %s.\n"
+"\n"
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Seznam trenutno prijavljenih uporabnikov zapišemo na DATOTEKO.\n"
+"ÄŒe DATOTEKA ni navedena, uporabimo %s. ObiÄajno je DATOTEKA %s.\n"
+"\n"
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Izpišemo število bajtov, besed in vrstic v vsaki od podanih DATOTEK, ter\n"
+"skupne vrednosti, Äe je bila podana veÄ kot ena DATOTEKA. ÄŒe DATOTEKA ni \n"
+"podana ali je enaka -, se bere s standardnega vhoda.\n"
+"\n"
+" -c, --bytes izpis Å¡tevila bajtov\n"
+" -m, --chars izpis Å¡tevila znakov\n"
+" -l, --lines izpis Å¡tevila vrstic\n"
+
+#: src/wc.c:121
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" --files0-from=DATOTEKA preberi imena datotek s seznama\n"
+" z \\0 zakljuÄenih imen v navedeni DATOTEKI\n"
+" -L, --max-line-length izpiši dolžino najdaljše vrstice\n"
+" -w, --words izpiši število besed\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr "Pri branju imen datotek s standardnega vhoda ime %s ni dovoljeno."
+
+#: src/who.c:212
+msgid " old "
+msgstr " staro "
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "term="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "exit="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "sprem. ure"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "run-level"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "last="
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"Å t. up.=%lu\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "IME"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "LINIJA"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "ÄŒAS"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr "NEAKT."
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "KOMENTAR"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "IZH."
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Uporaba: %s [IZBIRA]... [ DATOTEKA | ARGUMENT1 ARGUMENT2 ]\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" -a, --all isto kot -b -d --login -p -r -t -T -u\n"
+" -b, --boot Äas zadnjega zagona\n"
+" -d, --dead izpis mrtvih procesov\n"
+" -H, --heading izpiši vrstico z legendo\n"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr " -l, --login izpiši prijavne procese sistema\n"
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+" --lookup uporabi DNS za poizvedbo o kanoniÄnih imenih "
+"raÄunalnikov\n"
+" -m samo imena raÄunalnikov ter uporabnik, povezan s\n"
+" standardnim vhodom\n"
+" -p, --process izpišemo aktivne procese, ki jih je zagnal init\n"
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+" -q, --count vsi uporabniki in Å¡tevilo vseh prijavljenih uporabnikov\n"
+" -r, --runlevel izpišemo trenutni nivo teka sistema\n"
+" -s, --short izpiÅ¡emo le uporabniÅ¡ko ime, linijo in Äas prijave "
+"(privzeto)\n"
+" -t, --time izpišemo zadnjo spremembo sistemske ure\n"
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+" -T, -w, --mesg navedi možnost poÅ¡iljanja sporoÄil kot +, - ali ?\n"
+" -u, --users seznam vseh prijavljenih uporabnikov\n"
+" --message isto kot -T\n"
+" --writable isto kot -T\n"
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"ÄŒe DATOTEKA ni navedena, piÅ¡emo na %s. ObiÄajno je DATOTEKA %s.\n"
+"ÄŒe sta podana ARGUMENT1 in ARGUMENT2, uporabi -m; obiÄajno sta argumenta\n"
+"»am i« ali »mom likes«.\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr "Opozorilo: izbira -i bo v prihodnjih izdajah ukinjena; uporabite -u"
+
+#: src/whoami.c:51
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Izpiše ime uporabnika, povezanega s trenutno dejavno uporabniško "
+"identiteto.\n"
+"Isto kot »id -un«.\n"
+"\n"
+
+#: src/whoami.c:95
+#, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: uporabniško ime za UID %lu ni ugotovljivo\n"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Uporaba: %s [NIZ]...\n"
+" ali: %s IZBIRA\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"Ponavljaje izpisujemo vrstico s podanim NIZOM (privzeto »y«).\n"
+"\n"
+
+#~ msgid "strip failed"
+#~ msgstr "»strip« ni uspel"
+
+#~ msgid "-R -h requires -P"
+#~ msgstr "-R -h zahteva -P"
+
+#~ msgid "value %s is so large that it is not representable"
+#~ msgstr "vrednost %s je tolikšna, da ni strojno predstavljiva"
+
+#~ msgid "%s: count `%.*s' too large"
+#~ msgstr "%s: števec »%.*s« je prevelik"
+
+# ! INEXACT
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "lastnika in/ali skupine %s ni mogoÄe spremeniti"
+
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "dostop do imenika %s ni mogoÄ"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "imena skupine, ki pripada Å¡tevilÄnemu UID, ni mogoÄe ugotoviti"
+
+#~ msgid ""
+#~ " --no-preserve-root do not treat `/' specially (the default)\n"
+#~ " --preserve-root fail to operate recursively on `/'\n"
+#~ msgstr ""
+#~ " --no-preserve-root imenika »/« ne obravnavamo posebej (privzeto)\n"
+#~ " --preserve-root ne dovoli rekurzivnega dela na »/«\n"
+
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "ni mogoÄe pisati prek imenika %s"
+
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "ta sistem ne podpira simbolnih povezav"
+
+#~ msgid ""
+#~ " -e enable interpretation of backslash escapes\n"
+#~ " -E disable interpretation of backslash escapes (default)\n"
+#~ msgstr ""
+#~ " -e pri izpisu tolmaÄi spodaj navedene ubežna zaporedja\n"
+#~ " -E onemogoÄi tolmaÄenje ubežnih zaporedij v NIZIH "
+#~ "(privzeto)\n"
+
+#~ msgid ""
+#~ "warning: unportable BRE: %s: using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr ""
+#~ "opozorilo: neprenosljiv osnovni regularni izraz: %s : uporaba »^« kot\n"
+#~ "prvega znaka v osnovnem regularnem izrazu ni prenosljiva, ignorirano"
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "neprepoznana izbira »-%c«"
+
+#~ msgid "cannot return to working directory"
+#~ msgstr "vrnitev v delovni imenik ni mogoÄa"
+
+#~ msgid "cannot return to current directory"
+#~ msgstr "vrnitev v trenutni imenik ni mogoÄa"
+
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "simbolna povezava %s na %s"
+
+#~ msgid "create hard link %s to %s"
+#~ msgstr "trda povezava %s na %s"
+
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "ni mogoÄe spremeniti dovoljenj za imenik %s"
+
+#~ msgid "fifo files not supported"
+#~ msgstr "datoteke FIFO niso podprte"
+
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "ni mogoÄe spremeniti dovoljenj za FIFO %s"
+
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "ni mogoÄe nastaviti dovoljenj za %s"
+
+#~ msgid ""
+#~ "This program is free software; you can redistribute it and/or modify\n"
+#~ "it under the terms of the GNU General Public License as published by\n"
+#~ "the Free Software Foundation; either version 2, or (at your option)\n"
+#~ "any later version.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Ta program je prosta programska oprema; lahko ga redistribuirate in/ali\n"
+#~ "spreminjate po pogojih, doloÄenih v »GNU General Public License«, izdani\n"
+#~ "pri Free Software Foundation; 2. izdaja (ali novejÅ¡a, Äe razpolagate z "
+#~ "njo).\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "This program is distributed in the hope that it will be useful,\n"
+#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+#~ "GNU General Public License for more details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Ta program se razširja v upanju, da je koristen, vendar BREZ "
+#~ "KAKRÅ NEGAKOLI\n"
+#~ "JAMSTVA, niti jamstev USTREZNOSTI ZA PRODAJO ali PRIMERNOSTI ZA UPORABO. "
+#~ "Za\n"
+#~ "podrobnosti si oglejte »GNU General Public License«.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
+#~ msgstr ""
+#~ "Izvod »GNU General Public License« bi moral biti priložen temu programu;\n"
+#~ "Äe ni, piÅ¡ite Free Software Foundation, Inc., 51 Franklin Street, Fifth\n"
+#~ "Floor, Boston, MA 02110-1301, ZDA.\n"
+
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "sprememba imenika iz %s v .. ni mogoÄa"
+
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "klic lstat trenutnega imenika v %s ni mogoÄ"
+
+#~ msgid "cannot lstat %s"
+#~ msgstr "statusa %s ni moÄ ugotoviti z lstat"
+
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "premik iz imenika %s v %s ni mogoÄ"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "ni mogoÄe odstraniti imenikov ».« ali »..«"
+
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only; this works only if your "
+#~ "system\n"
+#~ " supports `unlink' for nonempty directories)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ msgstr ""
+#~ "Odstranimo navedene DATOTEKE.\n"
+#~ "\n"
+#~ " -d, --directory brisanje imenikov, vkljuÄno s polnimi (samo super-"
+#~ "user)\n"
+#~ " -f, --force brez opozoril o neobstojeÄih datotekah, brez "
+#~ "vprašanj\n"
+#~ " -i, --interactive zahtevamo potrditev pred vsakim brisanjem\n"
+
+#~ msgid "Exit with a status code indicating failure."
+#~ msgstr "ZakljuÄi s statusno kodo, ki kaže neuspeh."
+
+#~ msgid ""
+#~ "Display file or file system status.\n"
+#~ "\n"
+#~ " -f, --file-system display file system status instead of file "
+#~ "status\n"
+#~ " -c --format=FORMAT use the specified FORMAT instead of the default\n"
+#~ " -L, --dereference follow links\n"
+#~ " -t, --terse print the information in terse form\n"
+#~ msgstr ""
+#~ "Izpis statusa datoteke ali datoteÄnega sistema.\n"
+#~ "\n"
+#~ " -f, --file-system izpis statusa datoteÄnega sistema, ne statusa "
+#~ "datoteke\n"
+#~ " -c, --format=OBLIKA namesto privzete uporabi podano OBLIKO\n"
+#~ " -L, --dereference s sledenjem povezav\n"
+#~ " -t, --terse izpis podatkov v zgoÅ¡Äeni obliki\n"
+
+#~ msgid "Warning: `-l' is deprecated; use `-L' instead"
+#~ msgstr "Opozorilo: izbira »-l« je odsvetovana; uporabite »-L«"
+
+#~ msgid "the --allow-missing option is deprecated; use --retry instead"
+#~ msgstr ""
+#~ "izbira --allow-missing je odsvetovana; namesto nje uporabite --retry"
+
+#~ msgid ""
+#~ " -i, --idle add idle time as HOURS:MINUTES, . or old\n"
+#~ " (deprecated, use -u)\n"
+#~ " -l, --login print system login processes\n"
+#~ msgstr ""
+#~ " -i, --idle dodaj Äas neaktivnosti z v obliki URE:MINUTE, . ali "
+#~ "star\n"
+#~ " (opuÅ¡Äena oblika; uporabite -u)\n"
+#~ " -l, --login izpis sistemskih prijavnih procesov\n"
+#~ " (enakovredno SUS -l)\n"
+
+#~ msgid "openat: unable to restore working directory"
+#~ msgstr "openat: povrnitev delovnega imenika ni mogoÄa"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "To je prost program; pogoji, pod katerimi ga lahko razmnožujete in\n"
+#~ "razširjate so navedeni v izvorni kodi. Za program ni NOBENEGA jamstva,\n"
+#~ "niti jamstev USTREZNOSTI ZA PRODAJO ali PRIMERNOSTI ZA UPORABO.\n"
+
+#~ msgid "closing standard output"
+#~ msgstr "zapiramo standardni izhod"
+
+#~ msgid ""
+#~ "\n"
+#~ "Each MODE is one or more of the letters ugoa, one of the symbols +-= and\n"
+#~ "one or more of the letters rwxXstugo.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "ZAÅ ÄŒITA je ena ali veÄ Ärk iz »ugoa«, eden od znakov +-= in\n"
+#~ "ena ali veÄ Ärk iz »rwxXstugo«.\n"
+
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "opozorilo: --version-control (-V) je zastarela oblika izbire, ki bo v\n"
+#~ "eni od naslednjih izdaj odpravljena. Uporabljajte --backup=%s."
+
+#~ msgid ""
+#~ " %z RFC-2822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %Z time zone (e.g., EDT), or nothing if no time zone is determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr ""
+#~ " %z zapis Äasovnega pasu skladno z RFC-2822 (-0500) (nestandardna "
+#~ "razširitev)\n"
+#~ " %Z Äasovni pas (npr. CET); prazno, Äe Äasovni pas ni doloÄen\n"
+#~ "\n"
+#~ "Privzeto so Å¡tevilÄna polja v datumu do polne dolžine polja dopolnjena\n"
+#~ "z niÄlami. GNU date pozna Å¡e naslednji doloÄili med znakom »%%« in\n"
+#~ "numeriÄnim doloÄilom:\n"
+#~ "\n"
+#~ " »-« (minus) ne dopolnjuj polja\n"
+#~ " »_« (podÄrtaj) dopolni polje s presledki\n"
+
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-2822 (-R) option"
+#~ msgstr "pri izbiri --rfc-822 (-R) ni dovoljeno podati oblikovnega niza"
+
+#~ msgid "undefined"
+#~ msgstr "nedoloÄeno"
+
+#~ msgid "cannot get time of day"
+#~ msgstr "ni mogoÄe izvedeti trenutnega Äasa"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "%s+%s zapisov na vhodu\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "%s+%s zapisov na izhodu\n"
+
+# ! INEXACT
+#~ msgid "truncated records"
+#~ msgstr "odrezani zapisi"
+
+#~ msgid "file offset out of range"
+#~ msgstr "odmik izven obmoÄja"
+
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "»-LIST« je opuÅ¡Äena oblika; uporabite »-t LIST«"
+
+#~ msgid "`%s' is too large"
+#~ msgstr "»%s« je preveliko"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Uporaba: %s [morebitni argumeni v ukazni vrstici se ne upoštevajo]\n"
+#~ " ali: %s IZBIRA\n"
+#~ "KonÄamo z izhodno kodo, ki signalizira napako.\n"
+#~ "\n"
+#~ "Navedeni izbiri nimata kratke oblike.\n"
+
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "»%s« je opuÅ¡Äena oblika; uporabite »%s«"
+
+#~ msgid "%s: number of bytes is large"
+#~ msgstr "%s: Å¡tevilo bajtov je preveliko"
+
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "»-%s« je opuÅ¡Äena oblika; uporabite »-%c %.*s%.*s%s«"
+
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "Äasovne oznake %s ni moÄ najti"
+
+#~ msgid "invalid field number: `%s'"
+#~ msgstr "neveljavna številka polja: »%s«"
+
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "neveljavna številka polja za prvo datoteko: »%s«"
+
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "neveljavna številka polja za drugo datoteko: »%s«"
+
+#~ msgid ""
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -b, --binary datoteke beremo v binarnem naÄinu (privzeto v\n"
+#~ " okoljih DOS/Windows)\n"
+#~ " -c, --check izraÄunane nadzorne vsote %s primerjamo z "
+#~ "vrednostmi\n"
+#~ " v navedeni datoteki\n"
+#~ " -t, --text datoteke beremo v besedilnem naÄinu (privzeto)\n"
+#~ "\n"
+
+#~ msgid "Only one operand may be specified when using --check."
+#~ msgstr "pri izbiri --check sme biti doloÄen samo en operand"
+
+#~ msgid "cannot get priority"
+#~ msgstr "ni mogoÄe izvedeti prioritete"
+
+#~ msgid "cannot set priority"
+#~ msgstr "prioritete ni mogoÄe nastaviti"
+
+#~ msgid "failed to redirect standard output"
+#~ msgstr "preusmeritev standardnega izhoda ni uspela"
+
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr ""
+#~ "Diagnosticiramo neprenosljive konstrukte v IMENU.\n"
+#~ "\n"
+#~ " -p, --portability preveri za vse sisteme POSIX, ne le za tega\n"
+
+#~ msgid "column count too large"
+#~ msgstr "Å¡tevilo stolpcev preveliko"
+
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "»--columns=STOLPCI« neveljavno število stolpcev: »%s«"
+
+#~ msgid "`-%s' option is obsolete; use `-l %s'"
+#~ msgstr "»-%s« je opuÅ¡Äena oblika; uporabite »-l %s«"
+
+#~ msgid "invalid argument `%s'"
+#~ msgstr "neveljaven argument »%s«"
+
+#~ msgid "stdin: read error"
+#~ msgstr "stdin: napaka pri branju"
+
+#~ msgid "`%s' option is obsolete; use `%s-%c %<PRIuMAX>'"
+#~ msgstr "»%s« je opuÅ¡Äena oblika; uporabite »%s-%c %<PRIuMAX>«"
+
+#~ msgid "%s: integer expression expected\n"
+#~ msgstr "%s: priÄakuje se celoÅ¡tevilÄni izraz\n"
+
+#~ msgid "before -lt"
+#~ msgstr "pred -lt"
+
+#~ msgid "after -lt"
+#~ msgstr "po -lt"
+
+#~ msgid "before -le"
+#~ msgstr "pred -le"
+
+#~ msgid "after -le"
+#~ msgstr "po -le"
+
+#~ msgid "before -gt"
+#~ msgstr "pred -gt"
+
+#~ msgid "after -gt"
+#~ msgstr "po -gt"
+
+#~ msgid "before -ge"
+#~ msgstr "pred -ge"
+
+#~ msgid "after -ge"
+#~ msgstr "po -ge"
+
+#~ msgid "before -ne"
+#~ msgstr "pred -ne"
+
+#~ msgid "after -ne"
+#~ msgstr "po -ne"
+
+#~ msgid "before -eq"
+#~ msgstr "pred -eq"
+
+#~ msgid "after -eq"
+#~ msgstr "po -eq"
+
+#~ msgid "after -t"
+#~ msgstr "po -t"
+
+#~ msgid ""
+#~ "Usage: test EXPRESSION\n"
+#~ " or: test\n"
+#~ " or: [ EXPRESSION ]\n"
+#~ " or: [ ]\n"
+#~ " or: [ OPTION\n"
+#~ "Exit with the status determined by EXPRESSION.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Uporaba: test IZRAZ\n"
+#~ " ali: test\n"
+#~ " ali: [ IZRAZ ]\n"
+#~ " ali: [ ]\n"
+#~ " ali: [ IZBIRA\n"
+#~ "Ovrednotimo IZRAZ; rezultat vrnemo kot izhodni status. \n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Uporaba: %s [morebitni argumenti v ukazni vrstici se ne upoštevajo]\n"
+#~ " ali: %s IZBIRA\n"
+#~ "KonÄamo z izhodno kodo, ki signalizira uspeh.\n"
+#~ "\n"
+#~ "Navedeni izbiri nimata kratke oblike.\n"
+#~ "\n"
+
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr "»-SEZNAM« je opuÅ¡Äena oblika; uporabite »--first-only -t SEZNAM«"
+
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "»-%lu« je opuÅ¡Äena oblika; uporabite »-f %lu«"
+
+#~ msgid "%s: cannot find username for UID %lu\n"
+#~ msgstr "%s: uporabniško ume za UID %lu ni ugotovljivo\n"
+
+#~ msgid "program error"
+#~ msgstr "napaka v programu"
+
+#~ msgid "stack overflow"
+#~ msgstr "prekoraÄitev sklada"
+
+#~ msgid "too few arguments"
+#~ msgstr "premalo argumentov"
+
+#~ msgid "Torbjorn Granlund and Richard M. Stallman"
+#~ msgstr "Torbjorn Granlund in Richard M. Stallman"
+
+# Je to res v redu?
+# ! INEXACT
+#~ msgid "cannot change to null group"
+#~ msgstr "ni mogoÄe spremeniti na skupino niÄ"
+
+#~ msgid "group number"
+#~ msgstr "Älan skupine"
+
+# ! INEXACT
+#~ msgid "invalid group number %s"
+#~ msgstr "neveljavna Å¡tevilka skupine %s"
+
+#~ msgid "invalid mode string: %s"
+#~ msgstr "neveljaven naÄin %s"
+
+#~ msgid "unable to restore permissions of %s"
+#~ msgstr "dovoljenj %s ni mogoÄe povrniti"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "Uporaba: %s [IZBIRA]... LASTNIK[:[SKUPINA]] DATOTEKA...\n"
+#~ " ali: %s [IZBIRA]... :SKUPINA DATOTEKA...\n"
+#~ " ali: %s [IZBIRA]... --reference=ZGLED DATOTEKA...\n"
+
+#~ msgid "Richard Stallman and David MacKenzie"
+#~ msgstr "Richard Stallman in David MacKenzie"
+
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "Uporaba: %s [IZBIRA]... LEVA DESNA\n"
+
+#~ msgid "Torbjorn Granlund, David MacKenzie, and Jim Meyering"
+#~ msgstr "Torbjorn Granlund, David MacKenzie in Jim Meyering"
+
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "%s: navedeni cilj ni imenik"
+
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr "prepisujemo veÄ datotek, vendar zadnji argument %s ni imenik"
+
+#~ msgid "Stuart Kemp and David MacKenzie"
+#~ msgstr "Stuart Kemp in David MacKenzie"
+
+#~ msgid "%s: `+' or `-' expected after delimeter"
+#~ msgstr "%s: po razmejilniku priÄakovana ,*` ali ,-`"
+
+#~ msgid "David Ihnat, David MacKenzie, and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie in Jim Meyering"
+
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "preveÄ ne-izbirnih argumentov: %s%s"
+
+#~ msgid "Paul Rubin, David MacKenzie, and Stuart Kemp"
+#~ msgstr "Paul Rubin, David MacKenzie in Stuart Kemp"
+
+#~ msgid ""
+#~ "only one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, "
+#~ "{unblock,sync}"
+#~ msgstr ""
+#~ "samo eno od {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, {unblock,"
+#~ "sync}"
+
+#~ msgid "Torbjorn Granlund, David MacKenzie, Larry McVoy, and Paul Eggert"
+#~ msgstr "Torbjorn Granlund, David MacKenzie, Larry McVoy in Paul Eggert"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr ""
+#~ "pri izpisu privzetih vrednosti (izbira --print-data-base, -p) ni "
+#~ "dovoljeno\n"
+#~ "podati argumenta DATOTEKA"
+
+#~ msgid "David MacKenzie and Jim Meyering"
+#~ msgstr "David MacKenzie in Jim Meyering"
+
+#~ msgid ""
+#~ "Torbjorn Granlund, David MacKenzie, Larry McVoy, Paul Eggert, and Jim "
+#~ "Meyering"
+#~ msgstr ""
+#~ "Torbjorn Granlund, David MacKenzie, Larry McVoy, Paul Eggert in Jim "
+#~ "Meyerling"
+
+#~ msgid "cannot change to parent of directory %s"
+#~ msgstr "imenik nad imenikom %s ni dosegljiv"
+
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ msgstr ""
+#~ "IzpiÅ¡emo NIZ ali veÄ NIZOV na standardni izhod.\n"
+#~ "\n"
+#~ " -n ne izpisuj konÄnega znaka za novo vrstico\n"
+#~ " -e pri izpisu tolmaÄi spodaj navedene ubežne sekvence\n"
+#~ " -E onemogoÄi tolmaÄenje ubežnih sekvenc v NIZIH\n"
+
+#~ msgid "Richard Mlynarik and David MacKenzie"
+#~ msgstr "Richard Mlynarik in David MacKenzie"
+
+#~ msgid ""
+#~ "\n"
+#~ "In -wNUMBER, the letter `w' may be omitted.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Izbiro -wÅ TEVILO lahko uporabimo tudi v obliki -Å TEVILO.\n"
+
+#~ msgid "invalid width option: `%s'"
+#~ msgstr "neveljavna izbira Å¡irine: ,%s`"
+
+#~ msgid ""
+#~ " -c, --bytes=SIZE print first SIZE bytes\n"
+#~ " -n, --lines=NUMBER print first NUMBER lines instead of first 10\n"
+#~ msgstr ""
+#~ " -c, --bytes=VELIKOST izpiÅ¡emo prvih VELIKOST bajtov z zaÄetka "
+#~ "datoteke\n"
+#~ " -n, --lines=ŠTEVILO izpišemo dano ŠTEVILO vrstic namesto prvih 10\n"
+
+#~ msgid "Arnold Robbins and David MacKenzie"
+#~ msgstr "Arnold Robbins in David MacKenzie"
+
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr "nameÅ¡Äamo veÄ datotek, vendar zadnji argument %s ni imenik"
+
+#~ msgid "%s is a directory"
+#~ msgstr "%s je imenik"
+
+#~ msgid "too many non-option arguments"
+#~ msgstr "preveÄ neizbirnih argumentov"
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "premalo neizbirnih argumentov"
+
+#~ msgid "Mike Parker and David MacKenzie"
+#~ msgstr "Mike Parker in David MacKenzie"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: Datoteka obstaja"
+
+# ! INEXACT
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "Uporaba: %s [IZBIRA]... CILJ [POVEZAVA]\n"
+#~ " ali: %s [IZBIRA]... CILJ... IMENIK\n"
+#~ " ali: %s [IZBIRA]... --target-directory=IMENIK CILJ...\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr "pri veÄih povezavah mora biti zadnji argument imenik"
+
+#~ msgid "Ulrich Drepper and Scott Miller"
+#~ msgstr "Ulrich Drepper in Scott Miller"
+
+#~ msgid "file"
+#~ msgstr "naštete datoteke"
+
+#~ msgid "files"
+#~ msgstr "naštetih datotek"
+
+#~ msgid "checksum"
+#~ msgstr "izraÄunane nadzorne vsote"
+
+#~ msgid "checksums"
+#~ msgstr "izraÄunanih nadzornih vsot"
+
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "izbiri --string in --check se medsebojno izkljuÄujeta"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "pri izbiri --string ne sme biti podana nobena datoteka"
+
+#~ msgid "wrong number of arguments"
+#~ msgstr "napaÄno Å¡tevilo argumentov"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr "niti glavno niti pomožno število ne sme biti podano za FIFO"
+
+#~ msgid "Mike Parker, David MacKenzie, and Jim Meyering"
+#~ msgstr "Mike Parker, David MacKenzie in Jim Meyering"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr "pri premikanju veÄih datotek mora biti zadnji argument imenik"
+
+#~ msgid "invalid option `%s'"
+#~ msgstr "neveljavna izbira ,%s`"
+
+#~ msgid "invalid priority `%s'"
+#~ msgstr "neveljavna prioriteta ,%s`"
+
+#~ msgid "Scott Bartram and David MacKenzie"
+#~ msgstr "Scott Bartram in David MacKenzie"
+
+#~ msgid "old-style offset"
+#~ msgstr "odmik v starem slogu"
+
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "neveljaven drugi operand v združljivostnem naÄinu ,%s`"
+
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr "v združljivostnem naÄinu morata biti zadnja dva argumenta odmika"
+
+#~ msgid "David M. Ihnat and David MacKenzie"
+#~ msgstr "David M. Ihnat in David MacKenzie"
+
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "pot ,%s` vsebuje neprenosljiv znak ,%c`"
+
+#~ msgid "`%s' is not a directory"
+#~ msgstr ",%s` ni imenik"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "imenik ,%s` ni berljiv"
+
+#~ msgid "name `%s' has length %ld; exceeds limit of %ld"
+#~ msgstr "dolžina imena ,%s` je %ld; presega mejo %ld"
+
+#~ msgid "path `%s' has length %d; exceeds limit of %ld"
+#~ msgstr "dolžina poti ,%s` je %d; presega mejo %ld"
+
+#~ msgid "Joseph Arceneaux, David MacKenzie, and Kaveh Ghazi"
+#~ msgstr "Joseph Arceneaux, David MacKenzie in Kaveh Ghazi"
+
+#~ msgid "Pete TerMaat and Roland Huebner"
+#~ msgstr "Pete TerMaat in Roland Huebner"
+
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr ",--pages` neveljavni obseg Å¡tevilk strani: ,%s`"
+
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr ",--pages` neveljavna zaÄetna Å¡tevilka strani: ,%s`"
+
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr ",--pages` neveljavna konÄna Å¡tevilka strani: ,%s`"
+
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr ",--pages` zaÄetna Å¡tevilka strani je viÅ¡ja od konÄne"
+
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%b %e %H:%M %Y"
+
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr "zaÄetna stran je viÅ¡ja od celotnega Å¡tevila strani: ,%d`"
+
+#~ msgid "Page %d"
+#~ msgstr "Str. %d"
+
+#~ msgid "David MacKenzie and Richard Mlynarik"
+#~ msgstr "David MacKenzie in Richard Mlynarik"
+
+#~ msgid "\\%c: invalid escape"
+#~ msgstr "\\%c: neveljaven ubežni znak"
+
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "Uporaba: %s oblika [argument...]\n"
+
+#~ msgid "Paul Rubin, David MacKenzie, Richard Stallman, and Jim Meyering"
+#~ msgstr "Paul Rubin, David MacKenzie, Richard Stallman in Jim Meyering"
+
+#~ msgid ""
+#~ "when the starting value is larger than the limit,\n"
+#~ "the increment must be negative"
+#~ msgstr ""
+#~ "ÄŒe je zaÄetna vrednost manjÅ¡a kot meja, mora biti\n"
+#~ "korak negativen"
+
+#~ msgid ""
+#~ "when the starting value is smaller than the limit,\n"
+#~ "the increment must be positive"
+#~ msgstr ""
+#~ "Äe je zaÄetna vrednost manjÅ¡a kot meja, mora biti\n"
+#~ "korak pozitiven"
+
+#~ msgid "Jim Meyering and Paul Eggert"
+#~ msgstr "Jim Meyering in Paul Eggert"
+
+#~ msgid "Mike Haertel and Paul Eggert"
+#~ msgstr "Mike Haertel in Paul Eggert"
+
+#~ msgid "invalid number"
+#~ msgstr "neveljavno Å¡tevilo"
+
+#~ msgid "*** invalid date/time ***"
+#~ msgstr "*** neveljavni datum/Äas ***"
+
+#~ msgid "Kayvan Aghaiepour and David MacKenzie"
+#~ msgstr "Kayvan Aghaiepour in David MacKenzie"
+
+#~ msgid "Jay Lepreau and David MacKenzie"
+#~ msgstr "Jay Lepreau in David MacKenzie"
+
+#~ msgid "Paul Rubin, David MacKenzie, Ian Lance Taylor, and Jim Meyering"
+#~ msgstr "Paul Rubin, David MacKenzie, Ian Lance Taylor in Jim Meyering"
+
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "%c: neveljavna enoznakovna pripona pri zastareli izbiri"
+
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "preveÄ argumentov: Pri stari skladnji izbir (%s) lahko podamo kot "
+#~ "argument le\n"
+#~ "eno datoteko. Namesto tega uporabite izbiri -n ali -c."
+
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "Opozorilo: pri uporabi stare skladnje (%s) navedba dveh ali veÄ datotek\n"
+#~ "ni prenosljiva. Namesto nje uporabite izbiri -n ali -c."
+
+#~ msgid "%s is larger than the maximum file size on this system"
+#~ msgstr "%s presega najveÄjo dovoljeno velikost datoteke na tem sistemu"
+
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr "%s: neveljavno najveÄje Å¡tevilo zaporednih sprememb velikosti"
+
+#~ msgid "Mike Parker, Richard M. Stallman, and David MacKenzie"
+#~ msgstr "Mike Parker, Richard M. Stallman in David MacKenzie"
+
+#~ msgid "argument expected\n"
+#~ msgstr "priÄakuje se argument\n"
+
+#~ msgid "too many arguments\n"
+#~ msgstr "preveÄ argumentov\n"
+
+#~ msgid ""
+#~ "Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie, and Randy Smith"
+#~ msgstr ""
+#~ "Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie in Randy Smith"
+
+#~ msgid "file arguments missing"
+#~ msgstr "datoteka ni podana"
+
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "neveljavno ubežno zaporedje ,\\%c`"
+
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr ""
+#~ "ob hkratnem veÄkratnem brisanju in stiskanju morata biti podana dva niza"
+
+#~ msgid "at least one string must be given when squeezing repeats"
+#~ msgstr "vsaj en niz mora biti podan pri stiskanju veÄ znakov"
+
+#~ msgid ""
+#~ "invalid identity mapping; when translating, any [:lower:] or [:upper:]\n"
+#~ "construct in string1 must be aligned with a corresponding construct\n"
+#~ "([:upper:] or [:lower:], respectively) in string2"
+#~ msgstr ""
+#~ "neveljavna identiÄna preslikava: pri prevedbi mora biti vsak konstrukt [:"
+#~ "upper:]\n"
+#~ "ali [:lower:] v nizu 1 poravnan z ustreznim konstruktom (torej [:lower:] "
+#~ "ali\n"
+#~ "[:upper:]) v nizu 2"
+
+#~ msgid "only one argument may be specified"
+#~ msgstr "dovoljen je le en argument"
+
+#~ msgid "Joseph Arceneaux and David MacKenzie"
+#~ msgstr "Joseph Arceneaux in David MacKenzie"
+
+#~ msgid "Paul Rubin and David MacKenzie"
+#~ msgstr "Paul Rubin in David MacKenzie"
+
+#~ msgid "Joseph Arceneaux, David MacKenzie, and Michael Stone"
+#~ msgstr "Joseph Arceneaux, David MacKenzie in Michael Stone"
+
+#~ msgid ""
+#~ "Warning: the meaning of '-l' will change in a future release to conform "
+#~ "to POSIX"
+#~ msgstr ""
+#~ "Opozorilo: pomen izbire -l se bo v prihodnji izdaji spremenil, tako da "
+#~ "bo\n"
+#~ "skladen s POSIX"
+
+#~ msgid "warning: unable to use large stack"
+#~ msgstr "opozorilo: uporaba velikega sklada ni mogoÄa"
+
+#~ msgid " Type"
+#~ msgstr " Vrsta"
+
+#~ msgid "missing file arguments"
+#~ msgstr "datoteka ni podana"
diff --git a/po/stamp-po b/po/stamp-po
new file mode 100644
index 0000000..9788f70
--- /dev/null
+++ b/po/stamp-po
@@ -0,0 +1 @@
+timestamp
diff --git a/po/sv.gmo b/po/sv.gmo
new file mode 100644
index 0000000..2c26712
--- /dev/null
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
new file mode 100644
index 0000000..4f6a675
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,9698 @@
+# Swedish messages for coreutils.
+# Copyright © 1997, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+# Peter Antman <peter.antman@abc.se>, 1997.
+# Thomas Olsson <cid95tho@lustudat.student.lu.se>, 1997.
+# Daniel Resare <daniel@resare.com> 1999, 2000.
+# Göran Uddeborg <goeran@uddeborg.se>, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007.
+# $Revision: 1.76 $
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 6.8\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2007-03-01 22:35+0100\n"
+"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, c-format
+msgid "preserving permissions for %s"
+msgstr "bevarar rättigheter på %s"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "sätter rättigheter på %s"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "felaktigt argument %s till %s"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "tvetydigt argument %s till %s"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Giltiga argument är:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "skrivfel"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Okänt systemfel"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "kan inte ta status på %s"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "tom normal fil"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "normal fil"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "katalog"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "blockspecialfil"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "teckenspecialfil"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "fifo"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "symbolisk länk"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "uttag (socket)"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "meddelandekö"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "semafor"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "delat minne-objekt"
+
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr "typat minne-objekt"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "konstig fil"
+
+#: lib/gai_strerror.c:44
+msgid "Address family for hostname not supported"
+msgstr "Adressfamiljen för värdnamnet stöds inte"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr "Tillfälligt fel i namnuppslagning"
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr "Felaktigt värde för ai_flags"
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr "Oreparabelt fel i namnuppslagning"
+
+#: lib/gai_strerror.c:48
+msgid "ai_family not supported"
+msgstr "ai_family stöds inte"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr "Minnesallokeringsfel"
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr "Ingen adress associerad med värdnamnet"
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr "Namn eller tjänst okänd"
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr "Servname stöds inte för ai_socktype"
+
+#: lib/gai_strerror.c:53
+msgid "ai_socktype not supported"
+msgstr "ai_socktype stöds inte"
+
+#: lib/gai_strerror.c:54
+msgid "System error"
+msgstr "Systemfel"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr "Argumentbufferten är för liten"
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr "Bearbetar pågående begäran"
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr "Begäran annulerad"
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr "Begäran inte annulerad"
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr "Alla begäran utförda"
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr "Avbruten av en signal"
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr "Parametersträng inte korrekt kodad"
+
+#: lib/gai_strerror.c:74
+msgid "Unknown error"
+msgstr "Okänt fel"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: flaggan \"%s\" är tvetydig\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: flaggan \"--%s\" tar inget argument\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: flaggan \"%c%s\" tar inget argument\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: flaggan \"%s\" kräver ett argument\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: okänd flagga \"--%s\"\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: okänd flagga \"%c%s\"\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: otillåten flagga -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: ogiltig flagga -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: flaggan kräver ett argument -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: flaggan \"-W %s\" är tvetydig\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: flaggan \"-W %s\" tar inget argument\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "blockstorlek"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "kan inte ändra rättigheter på %s"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "kan inte skapa katalog %s"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "minnet slut"
+
+#: lib/openat-die.c:34
+#, c-format
+msgid "unable to record current working directory"
+msgstr "kan inte notera aktuell arbetskatalog"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "kunde inte återvända till den ursprungliga arbetskatalogen"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "\""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "\""
+
+#: lib/randread.c:125
+#, c-format
+msgid "%s: end of file"
+msgstr "%s: filslut"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr "Lyckas"
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr "Ingen matchning"
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr "Felaktigt reguljärt uttryck"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr "Ogiltigt sorteringstecken"
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr "Ogiltigt teckenklassnamn"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr "Avslutande bakstreck"
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr "Ogiltig bakåtreferens"
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr "Ensam [ eller [^"
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr "Ensam ( eller \\("
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr "Ensam \\{"
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr "Ogiltigt innehåll i \\{\\}"
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr "Ogiltigt intervallslut"
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr "Minnet slut"
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr "Felaktigt tidigare reguljärt uttryck"
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr "För tidigt slut på reguljärt uttryck"
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr "Reguljärt uttryck för stort"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr "Ensam ) eller \\)"
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr "Inget tidigare reguljärt uttryck"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr "det är farligt att arbeta rekursivt på %s"
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr "det är farligt att arbeta rekursivt på %s (samma som %s)"
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr "använd --no-preserve-root för att åsidosätta detta säkerhetsskydd"
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[yYjJ]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "iconv-funktion inte användbar"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "iconv-funktion inte tillgänglig"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "tecken utanför intervall"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "kan inte konvertera U+%04X till lokal teckenuppsättning"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "kan inte konvertera U+%04X till lokal teckenuppsättning: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "ogiltig användare"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "ogiltig grupp"
+
+#: lib/userspec.c:109
+msgid "invalid spec"
+msgstr "ogiltig spec"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr "©"
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"Detta är fri programvara. Du kan distribuera det enligt villkoren i\n"
+"GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"Det finns INGEN GARANTI, så långt lagen tillåter.\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "Skrivet av %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "Skrivet av %s och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "Skrivet av %s, %s och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Skrivet av %s, %s, %s\n"
+"och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Skrivet av %s, %s, %s,\n"
+"%s och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"Skrivet av %s, %s, %s,\n"
+"%s, %s och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"Skrivet av %s, %s, %s,\n"
+"%s, %s, %s och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"Skrivet av %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"Skrivet av %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s och %s.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"Skrivet av %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s med flera.\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "felaktigt argument: %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "strängjämförelse misslyckades"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Sätt LC_ALL='C' för att kringgå problemet."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "De jämförda strängarna var %s och %s."
+
+#: lib/xmemxfrm.c:55
+#, c-format
+msgid "string transformation failed"
+msgstr "strängtransformation misslyckades"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr "Den otransformerade strängen var %s."
+
+#: lib/xstrtol.h:62
+#, c-format
+msgid "invalid %s `%s'"
+msgstr "ogiltig %s \"%s\""
+
+#: lib/xstrtol.h:69
+#, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "ogiltigt tecken följer %s i \"%s\""
+
+#: lib/xstrtol.h:74
+#, c-format
+msgid "%s `%s' too large"
+msgstr "%s \"%s\" är för stort"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Försök med \"%s --help\" för mer information.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+"Användning: %s [FLAGGA] [FIL]\n"
+"Base64-koda eller -avkoda FIL, eller standard in, till standard ut.\n"
+"\n"
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+" -w, --wrap=KOLR Radbryt kodade rader efter KOLR tecken (normalt "
+"76).\n"
+" Använd 0 för att inte bryta rader.\n"
+"\n"
+" -d, --decode Avkoda data.\n"
+" -i, --ignore-garbage Vid avkodning, ingorera icke alfabetiska tecken.\n"
+"\n"
+
+#: src/base64.c:77
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+" --help Visa denna hjälptext och avsluta.\n"
+" --version Visa versionsinformation och avsluta.\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"Utan FIL, eller när FIL är -, läs standard in.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+"\n"
+"Data kodas för base64-alfabetet enligt beskrivningen i RFC 3548. Vid\n"
+"avkodning kan indata innehålla nyradstecken förutom de byte som\n"
+"tillhör det egentliga base64-alfabetet. Använd --ignore-garbage för\n"
+"att försöka återhämta från tecken utanför alfabetet i den kodade\n"
+"strömmen.\n"
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Rapportera fel till <%s>.\n"
+"Rapportera kommentarer om översättningen till <tp-sv@listor.tp-sv.se>.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "läsfel"
+
+#: src/base64.c:234
+#, c-format
+msgid "invalid input"
+msgstr "ogiltig indata"
+
+#: src/base64.c:271
+#, c-format
+msgid "invalid wrap size: %s"
+msgstr "ogiltig radbrytningslängd: %s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr "extra operand %s"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "stänger standard in"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Användning: %s NAMN [ÄNDELSE]\n"
+" eller: %s FLAGGA\n"
+"\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Skriv NAMN med eventuella inledande sökvägskomponenter borttagna.\n"
+"Tag bort eventuell specificerad ÄNDELSE.\n"
+"\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+"\n"
+"Exempel:\n"
+" %s /usr/bin/sort Skriv \"sort\".\n"
+" %s include/stdio.h .h Skriv \"stdio\".\n"
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, c-format
+msgid "missing operand"
+msgstr "argument saknas"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Användning: %s [FLAGGA] [FIL]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"Sammanfoga FIL(er), eller standard in, till standard ut.\n"
+"\n"
+" -A, --show-all som -vET\n"
+" -b, --number-nonblank numrera icke-tomma rader\n"
+" -e som -vE\n"
+" -E, --show-ends visa $ i slutet av varje rad\n"
+" -n, --number numrera alla rader\n"
+" -s, --squeeze-blank aldrig mer än en ensam tom rad\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t likvärdigt med -vT\n"
+" -T, --show-tabs visa TAB-tecken som ^I\n"
+" -u (ignorerad)\n"
+" -v, --show-nonprinting använd ^ och M-notation, utom för nyrad och TAB\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+"\n"
+"Exempel:\n"
+" %s f - g Skriv f:s innehåll, därefter standard in, och sedan g:s "
+"innehåll.\n"
+" %s Kopiera standard in till standard ut.\n"
+
+#: src/cat.c:333
+#, c-format
+msgid "cannot do ioctl on %s"
+msgstr "kan inte göra \"ioctl\" på %s"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "standard ut"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: infil är utfil"
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "ogiltig grupp %s"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Användning: %s [FLAGGA]... GRUPP FIL...\n"
+" eller: %s [FLAGGA]... --reference=RFIL FIL...\n"
+
+#: src/chgrp.c:117
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Ändra grupptillhörighet på varje FIL till GRUPP.\n"
+"Med --reference, ändra grupptillhörighet på varje FIL till den hos RFIL.\n"
+"\n"
+" -c, --changes som \"verbose\", men rapportera endast när ändring "
+"görs\n"
+" --dereference ändra det varje symbolisk länk pekar på (detta är\n"
+" normalfallet), istället för själva länken\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference ändra varje symbolisk länk istället för det den "
+"pekar\n"
+" på (meningsfullt endast på system där det går att\n"
+" ändra ägare på en symbolisk länk)\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root behandla inte \"/\" speciellt (normalfall)\n"
+" --preserve-root låt bli att arbeta på \"/\"\n"
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet utelämna de flesta felmeddelanden\n"
+" --reference=RFIL använd RFIL:s grupp istället för att ange ett\n"
+" GRUPPvärde\n"
+" -R, --recursive ändra filer och kataloger rekursivt\n"
+" -v, --verbose rapportera alla behandlade filer\n"
+"\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+"Följande flaggor modifierar hur en hierarki traverseras när flaggan -R\n"
+"också anges. Om mer än en anges har enbart den sista någon verkan.\n"
+"\n"
+" -H om ett kommandoradsargument för ett kommando är\n"
+" en symbolisk länk, följ den.\n"
+" -L följ varje symbolisk länk till en katalog som\n"
+" påträffas\n"
+" -P följ inga symboliska länkar (normalfall)\n"
+"\n"
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+"\n"
+"Exempel:\n"
+" %s staff /u Ändra gruppen för /u till \"staff\".\n"
+" %s -hR staff /u Ändra gruppen för /u och underfiler till \"staff\".\n"
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr "-R --dereference behöver antingen -H eller -L"
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, c-format
+msgid "missing operand after %s"
+msgstr "operand saknas efter %s"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "kunde inte hämta attribut för %s"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "hämtar nya attribut för %s"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "varken den symboliska länken %s eller det den refererar har ändrats\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "rättigheterna hos %s ändrade till %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "kunde inte ändra rättigheterna på %s till %04lo (%s)\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "rättigheterna hos %s är oförändrat %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "kan inte komma åt %s"
+
+# Jag har påpekat att det inte är så stor mening att markera detta för
+# översättning.
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "kan inte läsa katalog %s"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "ändrar rättigheter på %s"
+
+#: src/chmod.c:286
+#, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "%s: nya rättigheter är %s, inte %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr "fts_read misslyckades"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Användning: %s [FLAGGA]... RÄTTIGHET[,RÄTTIGHET]... FIL...\n"
+" eller: %s [FLAGGA]... OKTAL-RÄTTIGHET FIL...\n"
+" eller: %s [FLAGGA]... --reference=RFIL FIL...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+"Ändra rättigheterna på varje FIL till RÄTTIGHET.\n"
+"\n"
+" -c, --changes som \"verbose\", men rapportera bara när något "
+"ändras\n"
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root behandla inte \"/\" speciellt (normalfall)\n"
+" --preserve-root låt bli att arbeta på \"/\"\n"
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+" -f, --silent, --quiet utelämna de flesta felmeddelanden\n"
+" -v, --verbose rapportera alla behandlade filer\n"
+" --reference=RFIL använd RFILs rättigheter istället för något "
+"argument\n"
+" -R, --recursive ändra filer och kataloger rekursivt\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+"\n"
+"Varje RÄTTIGHET har formen \"[ugoa]*([-+=]([rwxXst]*|[ugo]))+\".\n"
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr "kan inte kombinera rättighets- och --reference-flaggor"
+
+#: src/chmod.c:510
+#, c-format
+msgid "invalid mode: %s"
+msgstr "ogiltig rättighet: %s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "bytte ägare av %s till %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "bytte grupp av %s till %s\n"
+
+#: src/chown-core.c:149
+#, c-format
+msgid "no change to ownership of %s\n"
+msgstr "inget byte av ägare av %s\n"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "kunde inte byta ägare på %s till %s\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "kunde inte byta grupp för %s till %s\n"
+
+#: src/chown-core.c:154
+#, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "kunde inte byta ägare på %s\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "ägare av %s bevarad som %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "grupp av %s bevarad som %s\n"
+
+#: src/chown-core.c:159
+#, c-format
+msgid "ownership of %s retained\n"
+msgstr "ägare av %s bevarad\n"
+
+#: src/chown-core.c:344
+#, c-format
+msgid "cannot dereference %s"
+msgstr "kan inte följa %s"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "byter ägare av %s"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "byter grupp av %s"
+
+#: src/chown.c:93
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Användning: %s [FLAGGA]... [ÄGARE][:[GRUPP]] FIL...\n"
+" eller: %s [FLAGGA]... --reference=RFIL FIL...\n"
+
+#: src/chown.c:98
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Ändra ägaren och/eller gruppen på varje FIL till ÄGARE och/eller GRUPP.\n"
+"Med --reference, ändra ägare och grupp på varje FIL till dem hos RFIL.\n"
+"\n"
+" -c, --changes som \"verbose\", men rapportera endast när ändring "
+"görs\n"
+" --dereference ändra det varje symbolisk länk pekar på (detta är\n"
+" normalfallet), istället för själva länken\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=NUVARANDE_ÄGARE:NUVARANDE_GRUPP\n"
+" byt ägare och/eller grupp endast på filer som nu\n"
+" tillhör den angivna ägaren och/eller gruppen. Den\n"
+" ena eller andra kan utelämnas, och då ställs inget\n"
+" krav på tillhörighet i det avseendet.\n"
+
+#: src/chown.c:122
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet utelämna de flesta felmeddelanden\n"
+" --reference=RFIL använd RFILs ägare och grupp istället för att ange\n"
+" ÄGARE:GRUPPvärden\n"
+" -R, --recursive arbeta med filer och kataloger rekursivt\n"
+" -v, --verbose visa ett meddelande för varje bearbetad fil\n"
+" --help visa denna hjälptext och avsluta\n"
+" --version visa versionsinformation och avsluta\n"
+"\n"
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"Ägaren byts inte om den utelämnas. Grupp byts inte om utelämnad,\n"
+"men byts till inloggningsgrupp om underförstådd av \":\" efter en\n"
+"symbolisk ÄGARE. ÄGARE och GRUPP kan vara numeriska såväl som\n"
+"symboliska.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+"\n"
+"Exempel:\n"
+" %s root /u Ändra ägare av /u till \"root\".\n"
+" %s root:staff /u Samma, men ändra även dess grupp till \"staff\".\n"
+" %s -hR root /u Ändra ägare av /u och underfiller \"root\".\n"
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Användning: %s NYROT [KOMMANDO...]\n"
+" eller: %s FLAGGA\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"Kör KOMMANDO med rootkatalogen satt till NYROOT.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"Om inget kommando angivs, kör \"${SHELL} -i\" (i normalfallet /bin/sh).\n"
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "kan inte ändra rotkatalog till %s"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "kan inte byta katalog till rotkatalog"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "kan inte köra kommando %s"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: fil för lång"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Användning: %s [FIL]...\n"
+" eller: %s [FLAGGA]\n"
+"\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"Skriv CRC-kontrollsumma och byteantal för varje FIL.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Användning: %s [FLAGGA]... FIL1 FIL2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr "Jämför de sorterade filerna FIL1 och FIL2 rad för rad.\n"
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+"\n"
+"Utan flaggor produceras tre kolumner utdata. Kolumn ett innehåller\n"
+"rader unika för FIL1, kolumn två innehåller filer unika för FIL2 och\n"
+"kolumn tre innehåller rader gemensamma för båda filerna.\n"
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"\n"
+" -1 skriv ej rader som är unika för FIL1\n"
+" -2 skriv ej rader som är unika för FIL2\n"
+" -3 skriv ej rader som är gemensamma för båda filerna\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "misslyckades att bevara ägare av %s"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr "misslyckades att hitta filen %s"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "misslyckades att bevara författarskap för %s"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "kan inte öppna %s för läsning"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "kan inte göra fstat på %s"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "hoppar över fil %s eftersom den byttes ut medan den kopierades"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "kan inte ta bort %s"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "tog bort %s\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "kan inte skapa normal fil %s"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "läser %s"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "kan inte göra lseek i %s"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "skriver %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "bevarar tider på %s"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "stänger %s"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: skriva över %s och därmed åsidosätta rättigheterna %04lo? "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: skriva över %s? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr "(säkerhetskopia: %s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "utesluter katalog %s"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "varning: källfil %s angiven mer än en gång"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s och %s är samma fil"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "kan inte skriva över icke-katalog %s med katalog %s"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "kommer inte skriva över nyligen skapade %s med %s"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "kan inte skriva över katalog %s med icke-katalog"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "kan inte flytta katalog på icke-katalog: %s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "säkerhetskopiering av %s skulle förstöra källan; %s inte flyttad"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "säkerhetskopiering av %s skulle förstöra källan; %s inte kopierad"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "kan inte göra säkerhetskopia %s"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "kan inte kopiera en katalog, %s, på sig själv, %s"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "kommer inte skapa hård länk %s till katalog %s"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "kan inte skapa hård länk %s till %s"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "kan inte flytta %s till en underkatalog till sig själv, %s"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "kan inte flytta %s till %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr "flytt mellan enheter misslyckades: %s till %s; kan inte ta bort målet"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "kan inte kopiera cyklisk symbolisk länk %s"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr "%s: kan bara skapa relativa symboliska länkar i aktuell katalog"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "kan inte skapa symbolisk länk %s till %s"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "kan inte skapa länk %s"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "kan inte skapa fifo %s"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "kan inte skapa specialfil %s"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "kan inte läsa symbolisk länk %s"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "kan inte skapa symbolisk länk %s"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s har okänd filtyp"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "kan inte avsäkerhetskopiera %s"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (återta säkerhetskopia)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Användning: %s [FLAGGA]... [-T] KÄLLA DEST\n"
+" eller: %s [FLAGGA]... KÄLLA... KATALOG\n"
+" eller: %s [FLAGGA]... -t KATALOG KÄLLA...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Kopiera KÄLLA till DEST, eller flera KÄLLOR till KATALOG.\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Obligatoriska argument till långa flaggor är obligatoriska även för de "
+"korta.\n"
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive samma som -dpPR\n"
+" --backup[=STYR] gör en säkerhetskopia av varje befintlig\n"
+" destinationsfil\n"
+" -b som --backup men tar inget argument\n"
+" --copy-contents kopiera innehåll i specialfiler när "
+"rekursivt\n"
+" -d samma som --no-dereference --preserve=link\n"
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" -f, --force om en befintlig destinationsfil inte kan\n"
+" öppnas, ta bort den och försök igen\n"
+" -i, --interactive fråga innan något skrivs över\n"
+" -H följ symboliska länkar på kommandoraden\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+" -l, --link länka filer istället fär att kopiera\n"
+" -L, --dereference följ alltid symboliska länkar\n"
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr " -P, --no-dereference följ aldrig symboliska länkar\n"
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -p samma som --preserve=mode,ownership,"
+"timestamps\n"
+" --preserve[=ATTR_LISTA] bevara de angivna attributen (standard:\\n\"\n"
+" mode,ownership,timestamps), om möjligt \n"
+" ytterligare attribut: links, all\\n\"\n"
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=ATTR_LISTA bevara inte de angivna attributen\n"
+" --parents lägg till källsökvägen till KATALOG\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive kopiera kataloger rekursivt\n"
+" --remove-destination ta bort varje befintlig destinationsfil före\n"
+" försök att öppna den (jämför med --force)\n"
+
+#: src/cp.c:205
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --sparse=NÄR styr skapande av glesa filer\n"
+" --strip-trailing-slashes ta bort avslutande snedstreck från varje "
+"KÄLLa\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link gör symboliska länkar istället för att "
+"kopiera\n"
+" -S, --suffix=ÄNDELSE ersätt den vanliga säkerhetskopieändelsen\n"
+" -t, --target-directory=KATALOG flytta alla KÄLLOR till KATALOG\n"
+" -T, --no-target-directory behandla DEST som en vanlig fil\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update kopiera bara när KÄLLA är nyare än\n"
+" destinationen, eller när destinationen\n"
+" saknas helt\n"
+" -v, --verbose berätta vad som görs\n"
+" -x, --one-file-system stanna inom detta filsystem\n"
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"Normalt upptäcks en gles KÄLLA med en grov heuristik och motsvarande DEST\n"
+"görs likaledes gles. Det beteendet väljs av --sparse=auto. Ange\n"
+"--sparse=always för att alltid göra DEST gles när KÄLLA innehåller\n"
+"tillräckligt långa nollbytesekvenser.\n"
+"\n"
+"Ange --sparse=never för att hindra skapandet av glesa filer.\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Ändelsen på säkerhetskopior är \"~\" om inte annat anges av --suffix eller\n"
+"SIMPLE_BACKUP_SUFFIX. Versionhanteringen kan styras med --backup-flaggan "
+"eller\n"
+"med miljövariabeln VERSION_CONTROL. Den kan ha följande värden:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off gör aldrig säkerhetskopior (ens om --backup anges)\n"
+" numbered, t gör numrerade säkerhetskopior\n"
+" existing, nil numrerade om det redan finns numrerade, annars enkla\n"
+" simple, never gör alltid enkla säkerhetskopior\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Som ett specialfall gör cp en säkerhetskopia av KÄLLA när force- och\n"
+"backup-flaggorna är givna, och KÄLLA och DEST är samma namn på en befintlig\n"
+"normal fil.\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "misslyckades att bevara tider för %s"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "misslyckades att bevara rättigheter på %s"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "kan inte skapa katalog %s"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s finns men är inte en katalog"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "bearbetar %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, c-format
+msgid "missing file operand"
+msgstr "filoperand saknas"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, c-format
+msgid "missing destination file operand after %s"
+msgstr "destinationfilsoperand saknas efter %s"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+"Kan inte kombinera --target-directory (-t) och --no-target-directory (-T)"
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, c-format
+msgid "target %s is not a directory"
+msgstr "målet %s är inte en katalog"
+
+#: src/cp.c:697
+#, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "med --parents måste destinationen vara en katalog"
+
+#: src/cp.c:967 src/mv.c:384
+#, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr "flaggan --reply undanbedes; använd -i eller -f istället"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, c-format
+msgid "multiple target directories specified"
+msgstr "multipla målkataloger angivna"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "kan inte göra både hårda och symboliska länkar"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "säkerhetskopietyp"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "indata försvann"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: radnummer utanför intervallet"
+
+#: src/csplit.c:709
+#, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: %s: radnummer utanför intervallet"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr " vid upprepning %s\n"
+
+#: src/csplit.c:755
+#, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: %s: ingen träff"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "fel i sökning med reguljärt uttryck"
+
+#: src/csplit.c:984
+#, c-format
+msgid "write error for %s"
+msgstr "skrivfel för %s"
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: heltal förväntades efter avskiljare"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: upprepningsoperatorn måste avslutas med \"}\""
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: heltal krävs mellan \"{\" och \"}\""
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: avslutande avskiljare \"%c\" saknas"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: felaktigt reguljärt uttryck: %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: felaktigt mönster"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: radnummer måste vara större än noll"
+
+#: src/csplit.c:1172
+#, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "radnummer %s är lägre än föregående radnummer, %s"
+
+#: src/csplit.c:1178
+#, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "varning: radnummer %s är detsamma som föregående radnummer"
+
+#: src/csplit.c:1231
+#, c-format
+msgid "invalid format width"
+msgstr "felaktig formatbredd"
+
+#: src/csplit.c:1252
+#, c-format
+msgid "invalid format precision"
+msgstr "felaktig formatprecision"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "saknar formatbeskrivning i ändelse"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "felaktig formatbeskrivning i ändelse: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "felaktig formatbeskrivning i ändelse: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "för många %%-formatbeskrivningar i ändelse"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "saknar %%-formatbeskrivning i ändelse"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: felaktigt tal"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Användning: %s [FLAGGA]... FIL MÖNSTER...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"Skriv ut delar av FIL avdelade med MÖNSTER till filer \"xx00\", \"xx01"
+"\", ...,\n"
+"och skriv ut byte-antal för varje del till standard ut.\n"
+"\n"
+
+#: src/csplit.c:1486
+#, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=FORMAT använd sprintf-FORMAT i stället för %02d\n"
+" -f, --prefix=PREFIX använd PREFIX i stället för \"xx\"\n"
+" -k, --keep-files ta inte bort utfiler vid fel\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=SIFFROR använd angivet antal siffror istället för 2\n"
+" -s, --quiet, --silent skriv inte ut storleken på utmatningsfiler\n"
+" -z, --elide-empty-files ta bort tomma utmatningsfiler\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"Läs standard in om FIL är -. Varje MÖNSTER kan vara:\n"
+"\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" HELTAL kopiera till men ej inklusive angivet radnummer\n"
+" /MÖNSTER/[AVSTÅND] kopiera till men ej inklusive en rad som matchar\n"
+" %MÖNSTER%[AVSTÅND] hoppa över till men ej inklusive, en rad som "
+"matchar\n"
+" {HELTAL} upprepa föregående mönster HELTAL gånger\n"
+" {*} upprepa föregående mönster så många gånger som "
+"möjligt\n"
+"\n"
+"Ett radAVSTÅND är ett \"+\" eller \"-\" följt av ett positivt heltal.\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Användning: %s [FLAGGA]... [FIL]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"Skriv valda delar av rader från varje FIL till standard ut.\n"
+"\n"
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=LISTA välj endast dessa byte\n"
+" -c, --characters=LISTA välj endast dessa tecken\n"
+" -d, --delimiter=AVSKILJ använd AVSKILJ i stället för TAB som "
+"fältavskiljare\n"
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=LISTA välj endast dessa fält; skriv också ut rader som\n"
+" saknar avkiljare, om inte flaggan -s anges\n"
+" -n (ignorerad)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+" --complement komplementmängden till de valda byten, tecknen "
+"eller \n"
+" fälten.\n"
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited skriv inte ut rader som saknar fältavskiljare\n"
+" --output-delimiter=STRÄNG använd STRÄNG som avskiljare vid utmatning\n"
+" standard är att avända inmatningsavskiljaren\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+"\n"
+"Använd en och endast en av -b, -c eller -f. Varje LISTA består av ett\n"
+"intervall, eller flera intervall avskilda med komman. Utvald indata\n"
+"skrivs i samma ordning som den läses, och skrivs exakt en gång.\n"
+
+#: src/cut.c:227
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"Varje intervall är en av:\n"
+"\n"
+" N N:te byte, tecken eller fält, räknat från 1\n"
+" N- från N:te byte, tecken eller fält, till radslut\n"
+" N-M från N:te till och med M:te byte, tecken eller fält\n"
+" -M från första till och med M:te byte, tecken eller fält\n"
+"\n"
+"Utan FIL eller när FIL är -, läs standard in.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "felaktig byte- eller fältlista"
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr "byteposition %s är för stor"
+
+#: src/cut.c:472
+#, c-format
+msgid "field number %s is too large"
+msgstr "fältnummer %s är för stort"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "endast en sorts lista får användas"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "avskiljaren måste vara endast ett tecken"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "du måste specificera en lista med byte, tecken eller fält"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "en indataavskiljare kan endast specificeras vid arbete på fält"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"att undertrycka ej avskilda rader är endast rimligt\n"
+"\tvid arbete på fält"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "saknar fältlista"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "saknar lista med positionsangivelser"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Användning: %s [FLAGGA]... [+FORMAT]\n"
+" eller: %s [-u|--utc|--universal] [MMDDhhmm[[ÅÅ]ÅÅ][.ss]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"Visa aktuell tid på angivet FORMAT, eller ställ systemklockan.\n"
+"\n"
+" -d, --date=STRÄNG visa tid som beskrivs av STRÄNG, inte \"nu\"\n"
+" -f, --file=DATUMFIL samma som --date en gång per rad i DATUMFIL\n"
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+" -r, --reference=FIL visa den tidpunkt då FIL senast modifierades\n"
+" -R, --rfc-2822 skriv ut tid och datum enligt formatet RFC 2822\n"
+" Exampel: Mon, 07 Aug 2006 12:34:56 +0200\n"
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+" --rfc-3339=TIDSPEC skriv ut tid och datum enligt formatet RFC "
+"3339.\n"
+" TIDSPEC=\"date\", \"seconds\" eller \"ns\" för "
+"att tid\n"
+" datum skall anges med angiven precision. "
+"Datum-\n"
+" och tidsdelen separeras av ett ensamt "
+"blanktecken:\n"
+" 2006-08-07 12:34:56+02:00\n"
+" -s, --set=STRÄNG sätt tiden som den beskrivs i STRÄNG\n"
+" -u, --utc, --universal sätt eller visa tiden i Universell Tid (UTC)\n"
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"\n"
+"FORMAT styr utskriften. Den enda giltiga flaggan för den andra\n"
+"formen specifierar Universell Tid (UTC). Tolkade sekvenser är:\n"
+"\n"
+" %% ett literalt %\n"
+" %a lokalanpassat veckodagsnamn (t.ex. sön)\n"
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A lokalens fullständiga veckodagsnamn (t.ex. söndag)\n"
+" %b lokalens förkortade månadsnamn (t.ex. jan)\n"
+" %B lokalens fullständiga månadsnamn (t.ex. januari)\n"
+" %c lokalens dag och tid (t.ex. ons 5 okt 2005 22.02.05)\n"
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C århundrade, som %Y, fast utelämna de sista två siffrorna (t.ex. 21)\n"
+" %d dag i månad (t.ex. 01)\n"
+" %D datum, samma som %m/%d/%y\n"
+" %e dag i månad, blankutfyllt, samma som %_d\n"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+" %F fullständigt datum, samma som %Y-%m-%d\n"
+" %g de sista två siffrorna i året för ISO-veckonumret (se %G)\n"
+" %G året motsvarande ISO-veckonumret (se %V), normalt användbart endast\n"
+" med %V\n"
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h samma som %b\n"
+" %H timme (00-23)\n"
+" %I timme (01-12)\n"
+" %j dag på året (001-366)\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k timme ( 0-23)\n"
+" %l timme ( 1-12)\n"
+" %m månad (01-12)\n"
+" %M minut (00-59)\n"
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+" %n en ny rad\n"
+" %N nanosekunder (000000000-999999999)\n"
+" %p lokalens FM- eller EM-indikator (tom i många lokaler)\n"
+" %P lokalens fm- eller em-indikator (tom i många lokaler)\n"
+" %r lokalens tid, 12-timmars (t.ex. 10:04:26)\n"
+" %R 24-timmars timme och minut, samma som %H:%M\n"
+" %s sekunder sedan \"1970-01-01 00.00.00 UTC\"\n"
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+" %S sekunder (00-60)\n"
+" %t en tabulator\n"
+" %T tid, samma som %H:%M:%s\n"
+" %u dag i veckan (1-7), 1 är måndag\n"
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U veckonummer, med söndag som första dag i veckan (00-53)\n"
+" %V ISO-veckonummer, med måndag som första dag i veckan (01-53)\n"
+" %w veckodag (0-6); 0 är söndag\n"
+" %W veckonummer, med måndag som första dag i veckan (00-53)\n"
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x lokalens datumrepresentation (t.ex. 2005-10-06)\n"
+" %X lokalens tidrepresentation (t.ex 23.43.02)\n"
+" %y sista två siffrorna i årtalet (00-99)\n"
+" %Y år\n"
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+" %z +hhmm numerisk tidszon (t.ex., -0400)\n"
+" %:z +hh:mm numerisk tidszon (t.ex., -04:00)\n"
+" %::z +hh:mm:ss numerisk tidszon (t.ex., -04:00:00)\n"
+" %:::z numerisk tidszon med : som behövs för precisionen (t.ex., -04, "
+"+05:30)\n"
+" %Z alfabetisk tidszonsförkortning (t.ex., CET)\n"
+"\n"
+"Normalt fyller date ut numeriska fält med nollor.\n"
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+"Följande frivilliga flaggor kan komma efter \"%\":\n"
+"\n"
+" - (bindestreck) fyll inte ut fältet\n"
+" _ (understrykning) fyll ut med blanksteg\n"
+" 0 (noll) fyll ut med nollor\n"
+" ^ använd versaler om möjligt\n"
+" # använd motsatt skiftläge om möjligt\n"
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+"\n"
+"Efter eventuella flaggor följer en valfri fältbredd, som ett decimalt\n"
+"tal, sedan en valfri modifierare, som är antingen\n"
+"E för att använda lokalens alternativa representationer om tillgängliga, "
+"eller\n"
+"O för att använda lokalens alternativa numeriska symboler om tillgängliga.\n"
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "standard in"
+
+#: src/date.c:297 src/date.c:517
+#, c-format
+msgid "invalid date %s"
+msgstr "ogiltigt datum %s"
+
+#: src/date.c:408 src/date.c:442
+#, c-format
+msgid "multiple output formats specified"
+msgstr "multipla utformat angivna"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "flaggorna för att ange datum för utskrift är ömsesidigt uteslutande"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr ""
+"argumenten för utskrift och för tidsinställning får inte användas tillsammans"
+
+#: src/date.c:448
+#, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"argumentet %s saknar ett inledande \"+\";\n"
+"När en flagga argument som anger datum används måste eventuellt argument,\n"
+"som inte är en flagga, vara en formatsträng som börjar med \"+\""
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "kan inte ställa klockan"
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "tiden %s är utanför tillåtet intervall"
+
+#: src/dd.c:404
+#, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Användning: %s [OPERAND]...\n"
+" eller: %s FLAGGA\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"Kopiera en fil med konvertering och formatering enligt operanderna.\n"
+"\n"
+" bs=BYTE framtvinga ibs=BYTE och obs=BYTE\n"
+" cbs=BYTE konvertera BYTE byte åt gången\n"
+" conv=KONVar konvertera filen enligt den kommaseparerade symbollistan\n"
+" count=BLOCK kopiera endast BLOCK inblock\n"
+" ibs=BYTE läs BYTE byte åt gången\n"
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=FIL läs från FIL istället för standard in\n"
+" iflag=FLAGGOR läs enligt den kommaseparerade symbollistan\n"
+" obs=BYTE skriv BYTE byte åt gången\n"
+" of=FIL skriv FIL istället för standard ut\n"
+" oflag=FLAGGOR skriv enligt den kommaseparerade symbollistan\n"
+" seek=BLOCK hoppa över BLOCK obs-stora block från början av utfil\n"
+" skip=BLOCK hoppa över BLOCK ibs-stora block från början av infil\n"
+" status=noxfer utelämna överföringsstatistik\n"
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"BLOCK och BYTE kan följas av av de följande multiplikativa ändelserna:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000·1000, M 1024·1024,\n"
+"GB 1000·1000·1000, G 1024·1024·1024, och så vidare för T, P, E, Z, Y.\n"
+"\n"
+"Varje KONV kan vara:\n"
+"\n"
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii från EBCDIC till ASCII\n"
+" ebcdic från ASCII till EBCDIC\n"
+" ibm från ASCII till en annan EBCDIC\n"
+" block fyll ut nyradsavslutade poster med blanktecken till cbs-storlek\n"
+" unblock ersätt avslutande blanktecken med nyrad i cbs-stora poster\n"
+" lcase ändra versaler till gemena\n"
+
+#: src/dd.c:445
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+" nocreat skapa inte utfilen\n"
+" excl misslyckas om utilen redan finns\n"
+" notrunc hugg inte av utfilen\n"
+" ucase ändra gemena till versaler\n"
+" swab byt plats på varje par av byte i indata\n"
+
+#: src/dd.c:452
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+" noerror fortsätt efter läsfel\n"
+" sync fyll ut varje indatablock med nulltecken till ibs-storlek; när\n"
+" det används med block eller unblock, fyll ut med blanktecken\n"
+" istället för nulltecken\n"
+" fdatasync skriv fysiskt data till utfilen före svslut\n"
+" fsync d:o, men skriv även metadata\n"
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+"\n"
+"Varje FLAGGsymbol kan vara:\n"
+"\n"
+" append lägg-till-läge (meningsfullt endast för utmatning, conv=notrunc\n"
+" rekommenderas)\n"
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr " direct använd direkt I/O för data\n"
+
+#: src/dd.c:468
+msgid " directory fail unless a directory\n"
+msgstr " directory misslyckas om inte en katalog\n"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr " dsync använd synkroniserad I/O för data\n"
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr " sync d:o, men även för metadata\n"
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr " nonblock använd icke blockerande I/O\n"
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr " noatime uppdatera inte åtkomsttiden\n"
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr " noctty tilldela inte styrterminal från fil\n"
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr " nofollow följ inte symboliska länkar\n"
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr " nolinks misslyckas ifall flera länkar\n"
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr " binary använd binär I/O för data\n"
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr " text använd text-I/O för data\n"
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+"\n"
+"Genom att skicka en %s-signal till en körande \"dd\"-process får\n"
+"man den att skriva in-/utstatistik på standard, och sedan fortsätta\n"
+"kopiera.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 poster in\n"
+" 18335302+0 poster ut\n"
+" 9387674624 byte (9.4 GB) kopierade, 34.6279 sekunder, 271 MB/s\n"
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+"%<PRIuMAX>+%<PRIuMAX> poster in\n"
+"%<PRIuMAX>+%<PRIuMAX> poster ut\n"
+
+#: src/dd.c:553
+#, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "%<PRIuMAX> avhuggen post\n"
+msgstr[1] "%<PRIuMAX> avhuggna poster\n"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] "%<PRIuMAX> byte (%s) kopierad"
+msgstr[1] "%<PRIuMAX> byte (%s) kopierade"
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr "Oändligt B"
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ", %g s, %s/s\n"
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "stänger infil %s"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "stänger utdatafil %s"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "skrivning till %s"
+
+#: src/dd.c:886
+#, c-format
+msgid "unrecognized operand %s"
+msgstr "okänd operand %s"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "ogiltig konvertering: %s"
+
+#: src/dd.c:900
+#, c-format
+msgid "invalid input flag: %s"
+msgstr "ogiltig inflagga: %s"
+
+#: src/dd.c:903
+#, c-format
+msgid "invalid output flag: %s"
+msgstr "ogiltig utflagga: %s"
+
+#: src/dd.c:906
+#, c-format
+msgid "invalid status flag: %s"
+msgstr "ogiltig statusflagga: %s"
+
+#: src/dd.c:942
+#, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "okänd operand %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "ogiltigt antal %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr "kan inte kombinera något par av {ascii,ebcdic,ibm}"
+
+#: src/dd.c:973
+#, c-format
+msgid "cannot combine block and unblock"
+msgstr "kan inte kombinera block och unblock"
+
+#: src/dd.c:975
+#, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "kan inte kombinera lcase och ucase"
+
+#: src/dd.c:977
+#, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "kan inte kombinera excl och nocreate"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"varning: går runt fel i kärnan i lseek för fil (%s)\n"
+" med mt_type=0x%0lx -- se <sys/mtio.h> för en lista av typer"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, c-format
+msgid "%s: cannot seek"
+msgstr "%s: kan inte söka"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr "spill i filposition vid läsning av filen %s"
+
+#: src/dd.c:1229
+#, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "varning: ogiltig filposition efter misslyckad läsning"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr "kan inte kringgå fel i kärnan trots allt"
+
+#: src/dd.c:1376
+#, c-format
+msgid "setting flags for %s"
+msgstr "sätter flaggor för %s"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr "fdatasync misslyckades för %s"
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr "fsync misslyckades för %s"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "öppnar %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+"positionen för stor: kan inte hugga av till en längd av seek=%<PRIuMAX> (%lu-"
+"byte-)block"
+
+#: src/dd.c:1730
+#, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "hugger av vid %<PRIuMAX> byte i utdatafil %s"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "Filsystem Typ"
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "Filsystem "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " Inoder IAnvända IFria IAnv%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Storlek Anvnt Tillg Anv%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Storlek Använt Tillg Anv%%"
+
+#: src/df.c:165
+#, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %s-block Använt Tillgängl Kapacit"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " %4s-block Använt Tillgängl Anv%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " Monterat på\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "kan inte avgöra aktuell katalog"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "kan inte byta till katalog %s"
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "kan inte ta status på aktuell katalog (nu %s)"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"Visa information om filsystemet där varje FIL ligger, eller annars alla\n"
+"filsystem.\n"
+"\n"
+
+#: src/df.c:749
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all tag med låtsasfilsystem\n"
+" -B, --block-size=STRL använd STRL byte stora block\n"
+" -h, --human-readable skriv storlekar i läsbart format (t.ex. 1K 234M 2G)\n"
+" -H, --si d:o, men använd potenser av 1000 istället för 1024\n"
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes skriv inodinformation istället för blockinformation\n"
+" -k som --block-size=1K\n"
+" -l, --local visa endast lokala filsystem\n"
+" --no-sync anropa inte sync innan information hämtas "
+"(normalfall)\n"
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability använd POSIX-format\n"
+" --sync anropa sync innan information hämtas\n"
+" -t, --type=TYP begränsa listningen till filsystem av typen TYP\n"
+" -T, --print-type skriv ut filsystemtyp\n"
+" -x, --exclude-type=TYP utelämna filsystem av typ TYP\n"
+" -v (ignorerad)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"STRL kan vara (eller kan vara ett heltal eventuellt följt av) en av de\n"
+"följande: kB 1000, K 1024, MB 1000·1000, M 1024·1024, och så vidare\n"
+"för G, T, P, E, Z, Y.\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr "flaggan --kilobytes undanbedes; använd -k istället"
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "filsystemstypen %s är både vald och exkluderad"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Varning: "
+
+#: src/df.c:943
+#, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%skan inte läsa tabellen över monterade filsystem"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr "inga filsystem bearbetade"
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Användning: %s [FLAGGA]... [FIL]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"Skriv ut kommandon för att sätta miljövariabeln LS_COLORS.\n"
+"\n"
+"Bestäm utformat:\n"
+" -b, --sh, --bourne-shell skriv kod för att sätta LS_COLORS i Bourne-"
+"skal\n"
+" -c, --csh, --c-shell skriv kod för att sätta LS_COLORS i C-skal\n"
+" -p, --print-database visa standardvärden\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"Om FIL anges, läs den för att bestämma vilka färger som skall användas till\n"
+"vilka filtyper och ändelser. Annars används en fördefinierad databas. För\n"
+"detaljer om formatet på dessa filer, kör \"dircolors --print-database\".\n"
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s:%lu: ogiltig rad; inget andra element"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu: okänt nyckelord %s"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<intern>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"flaggorna för att skriva ut dircolors interna databas och att välja en\n"
+"skalsyntax är ömsesidigt uteslutande"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr "Filoperander kan inte kombineras med --print-database (-p)."
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "ingen SHELL-miljövariabel, och ingen flagga för skalvariant angiven"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Användning: %s NAMN\n"
+" eller: %s FLAGGA\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"Skriv ut NAMN med dess avslutande /komponent borttagen; om NAMN inte\n"
+"innehåller något /, skriv \".\" (som betyder aktuell katalog)\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+"\n"
+"Exempel:\n"
+" %s /usr/bin/sort Skriv \"/usr/bin\".\n"
+" %s stdio.h Skriv \".\".\n"
+
+#: src/du.c:279 src/wc.c:108
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Användning: %s [FLAGGA]... [FIL]...\n"
+" eller: %s [FLAGGA]... --files0-from=F\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"Sammanfatta diskanvändningen för varje FIL, rekursivt för kataloger.\n"
+"\n"
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+" -a, --all skriv ut värden för alla filer, inte bara kataloger\n"
+" --apparent-size skriv skenbar storlek, istället för diskanvändning;\n"
+" även om den skenbara storleken normalt är mindre, "
+"kan\n"
+" den vara större på grund av hål i (\"glesa\") "
+"filer,\n"
+" intern fragmentering, indirekta block, och "
+"liknande\n"
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+" -B, --block-size=STRL använd STRL byte stora block\n"
+" -b, --bytes likvärdigt med \"--apparent-size --block-size=1\"\n"
+" -c, --total rapportera totalsumman\n"
+" -D, --dereference-args följ FILer som är symboliska länkar\n"
+
+#: src/du.c:303
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+" --files0-from=F summera diskanvändning för de NOLL-terminerade\n"
+" filnamnen som anges i filen F\n"
+" -H som --si, men ger också en varning; kommer snart "
+"att\n"
+" ändras till att bli detsamma som --dereference-"
+"args\n"
+" (-D)\n"
+" -h, --human-readable skriv storlekar i läsbart format (t.ex. 1K 234M 2G)\n"
+" --si som -h men i exponenter av 1000 istället för 1024\n"
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+" -k som --block-size=1K\n"
+" -l, --count-links räkna storlek flera gånger för hårda länkar\n"
+" -m som --block-size=1M\n"
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference följ alla symboliska länkar\n"
+" -P, --no-dereference följ inga symboliska länkar (detta är normalfallet)\n"
+" -0, --null avsluta varje utrad med en 0-byte istället för "
+"nyrad\n"
+" -S, --separate-dirs ta inte med storlek på underkataloger\n"
+" -s, --summarize visa bara summan för varje argument\n"
+
+#: src/du.c:323
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system hoppa över kataloger på andra filsystem\n"
+" -X FIL, --exclude-from=FIL hoppa över filer som matchar mönster i FIL.\n"
+" --exclude=MÖNSTER hoppa över filer som matchar MÖNSTER.\n"
+" --max-depth=N skriv summan för en katalog (eller fil, med --all)\n"
+" endast om den är N eller färre nivåer nedanför\n"
+" kommandoradsargumentet; --maxdepth=0 är detsamma "
+"som\n"
+" --summarize\n"
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+" --time visa tiden för senaste ändring av filer i "
+"katalogen,\n"
+" eller någon av dess underkataloger\n"
+" --time=ORD visa tid som ORD istället för modifieringstid:\n"
+" atime, access, use, ctime eller status\n"
+" --time-style=STIL visa tider med stilen STIL:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT tolkas so för \"date\"\n"
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "totalt"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+"VARNING: använd --si, inte -H. Betydelsen av -H kommer snart ändras\n"
+"till att bli samma som den för --dereference-args (-D)"
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "ogiltigt maxdjup %s"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr "flaggan --megabytes undanbedes; använd -m istället"
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "kan inte samtidigt bara visa summan och alla storlekar"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "varning: att summera är detsamma som att använda --max-depth=0"
+
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "varning: att summera står i konflikt med --max-depth=%lu"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr "Filoperander kan inte kombineras med --files0-from"
+
+#: src/du.c:960 src/wc.c:662
+#, c-format
+msgid "cannot read file names from %s"
+msgstr "kan inte läsa filnamn från %s"
+
+#: src/du.c:1000 src/du.c:1003
+msgid "invalid zero-length file name"
+msgstr "ogiltigt filnamn med längd noll"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Användning: %s [FLAGGA]... [STRÄNG]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+"Eka STRÄNG(arna) till standard ut.\n"
+"\n"
+" -n skriv inte ut den avslutande nyraden\n"
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+" -e slå på tolkning av sekvenser med omvänt snedstreck "
+"(standard)\n"
+" -E slå av tolkning av sekvenser med omvänt snedstreck\n"
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"Om -e är aktivt kommer följande sekvenser att förstås:\n"
+"\n"
+" \\0NNN det tecken, vars ASCII-värde är NNN (oktalt)\n"
+" \\\\ omvänt snedstreck\n"
+" \\a varning (SIGNAL)\n"
+" \\b backsteg\n"
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c utelämna nyrad på slutet\n"
+" \\f sidmatning\n"
+" \\n ny rad\n"
+" \\r vagnretur\n"
+" \\t horisontell tabulator\n"
+" \\v vertikal tabulator\n"
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Användning: %s [FLAGGA]... [-] [NAMN=VÄRDE]... [KOMMANDO [ARG]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Sätt varje NAMN till VÄRDE i miljön och kör KOMMANDO.\n"
+"\n"
+" -i, --ignore-environment börja med en tom miljö\n"
+" -u, --unset=NAMN ta bort variabeln från miljön\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"Ett ensamt - medför -i. Om inget KOMMANDO, skriv ut den resulterande "
+"miljön.\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Konvertera tabulatorer i varje FIL till mellanslag, skriv till standard ut.\n"
+"Utan FIL eller om FIL är -, läs standard in.\n"
+"\n"
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial konvertera inte tabulatorer efter icke-blanktecken\n"
+" -t, --tabs=ANTAL använd ANTAL tecken mellan tabulatorer, ej 8\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+" -t, --tabs=LISTA använd kommaseparerad lista med tabulatorpositioner\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr "tabulatorsteg är för stort %s"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "tabulatorsteg innehåller felaktiga tecken: %s"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "tabulatorsteg kan inte vara 0"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "tabulatorsteg måste vara stigande"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, c-format
+msgid "input line is too long"
+msgstr "för lång rad in"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Användning: %s UTTRYCK\n"
+" eller: %s FLAGGA\n"
+"\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"\n"
+"Skriv ut värdet på UTTRYCK till standard ut. En tom rad nedan separerar "
+"grupper\n"
+"med ökande prioritetsordning. UTTRYCK kan vara:\n"
+"\n"
+" ARG1 | ARG2 ARG1 om det varken är null eller 0, annars ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 om inget av argumenten är null eller 0, annars 0\n"
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"\n"
+" ARG1 < ARG2 ARG1 är mindre än ARG2\n"
+" ARG1 <= ARG2 ARG1 är mindre än eller lika med ARG2\n"
+" ARG1 = ARG2 ARG1 är lika med ARG2\n"
+" ARG1 != ARG2 ARG1 är inte lika med ARG2\n"
+" ARG1 >= ARG2 ARG1 är större än eller lika med ARG2\n"
+" ARG1 > ARG2 ARG1 är större än ARG2\n"
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+"\n"
+" ARG1 + ARG2 aritmetisk summa av ARG1 och ARG2\n"
+" ARG1 - ARG2 aritmetisk differens mellan ARG1 och ARG2\n"
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+"\n"
+" ARG1 * ARG2 aritmetisk produkt av ARG1 och ARG2\n"
+" ARG1 / ARG2 aritmetisk kvot av ARG1 dividerat med ARG2\n"
+" ARG1 % ARG2 aritmetisk rest av ARG1 dividerat med ARG2\n"
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"\n"
+" STRÄNG : REGUTTR förankrad mönstersökning efter REGUTTR i STRÄNG\n"
+"\n"
+" match STRÄNG REGUTTR samma som STRÄNG : REGUTTR\n"
+" subtr STRÄNG POS LÄNGD delsträng av STRÄNG, POS räknas från 1\n"
+" index STRÄNG BOKST index i STRÄNG där BOKST påträffats, eller 0\n"
+" length STRÄNG längden av STRÄNG\n"
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+" + ELEMENT tolka ELEMENT som en sträng, även om den är "
+"ett\n"
+" nyckelord som \"match\" eller en operator som "
+"\"/\"\n"
+" ( UTTRYCK ) värdet av UTTRYCK\n"
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"Var medveten om att vissa skal tolkar många operatorer, som därför måste\n"
+"markeras. Jämförelser är aritmetiska om båda ARG är siffror, annars\n"
+"lexikografiska. Mönsterträffar returnerar strängen som stämmer\n"
+"mellan \\( och \\), eller tom sträng. Om \\( och \\) inte använts, "
+"returneras \n"
+"antalet tecken som överensstämmer, eller 0.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+"\n"
+"Slutstatus är 0 om UTTRYCK varken är tomt eller 0, 1 om UTTRYCK är tomt\n"
+"eller 0, 2 om UTTRYCK är syntaktiskt felaktigt och 3 om ett fel uppstod.\n"
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "syntaxfel"
+
+#: src/expr.c:468 src/ptx.c:292
+#, c-format
+msgid "error in regular expression matcher"
+msgstr "fel i matchningen av reguljärt uttryck"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "ickenumeriskt argument"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "division med noll"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Användning: %s [TAL]...\n"
+" eller: %s FLAGGA\n"
+"\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"Skriv ut faktorerna i NUMMER. Om inget argument angivits, läs standard in.\n"
+"\n"
+
+#: src/factor.c:85
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+"Skriv ut primfaktorerna till alla angivna heltal NUMMER. Om inga argument\n"
+"angivits på kommandoraden, läses de från standard in.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s är för stort"
+
+#: src/factor.c:158
+#, c-format
+msgid "%s is not a valid positive integer"
+msgstr "%s är inte ett giltigt positivt heltal"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Användning: %s [-SIFFROR] [FLAGGA]... [FIL]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"Formatera om varje stycke i FIL(er), skriv till standard ut.\n"
+"Utan FIL eller om FIL är -, läs standard in.\n"
+"\n"
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin bibehåll indragning av de två första raderna\n"
+" -p, --prefix=STRÄNG formatera bara om rader som börjar med STRÄNG\n"
+" sätt tillbaka prefixet på omformaterade rader\n"
+" -s, --split-only dela långa rader, men justera ej\n"
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph indrag av första raden inte samma som andra "
+"raden\n"
+" -u, --uniform-spacing ett mellanslag mellan ord, två efter meningar\n"
+" -w, --width=LÄNGD maximal radlängd (standardvärde 75 kolumner)\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+"ogiltig flagga -- %c; -RADLÄNGD accepteras bara när det är den första\n"
+"flaggan; använd -w N istället"
+
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr "ogiltig radlängd: %s"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"Bryt inmatade rader i varje fil (standard in som standard) och skriv till\n"
+"standard ut.\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes räkna byte i stället för kolumner\n"
+" -s, --spaces bryt vid mellanrum\n"
+" -w, --width=ANTAL använd ANTAL kolumner i stället för 80\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, c-format
+msgid "invalid number of columns: %s"
+msgstr "felaktigt antal kolumner: %s"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv de 10 första raderna av varje FIL till standard ut.\n"
+"Vid fler än en FIL, föregå varje fil med ett huvud med filens namn.\n"
+"Utan FIL eller när FIL är -, läs standard in.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+" -c, --bytes=[-]N skriv de första N byte av varje fil;\n"
+" med det inledande \"-\", skriv allt utom de "
+"sista\n"
+" N byte av varje fil\n"
+" -n, --lines=[-]N skriv de första N raderna istället för de första "
+"10;\n"
+" med det inledande \"-\", skriv alla utom de "
+"sista\n"
+" N raderna av varje fil\n"
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent skriv aldrig huvuden med filnamn\n"
+" -v, --verbose skriv alltid huvuden med filnamn\n"
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"N kan ha en multiplikator som ändelse: b 512, k 1k, m 1024·1024.\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "fel vid läsning av %s"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "fel vid skrivning av %s"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr "%s: filen har krympt för mycket"
+
+#: src/head.c:230 src/head.c:1046
+#, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s: antal byte är för stort"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: kan inte söka tillbaka till startposition"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: kan inte söka till position %s"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "kan inte flytta filpekaren för %s"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s är så stor att den inte kan representeras"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "antal rader"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "antal byte"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "felaktigt antal rader"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "felaktigt antal byte"
+
+#: src/head.c:976 src/head.c:1034
+#, c-format
+msgid "invalid trailing option -- %c"
+msgstr "ogiltig avslutande flagga -- %c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Användning: %s\n"
+" eller: %s FLAGGA\n"
+"Skriv ut den numeriska identifieraren (i hexadecimal form) för aktuell "
+"värd.\n"
+"\n"
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Användning: %s [NAMN]\n"
+" eller: %s FLAGGA\n"
+"Skriv ut eller ställ in värdnamnet på aktuellt system.\n"
+"\n"
+
+#: src/hostname.c:103
+#, c-format
+msgid "cannot set name to %s"
+msgstr "kan inte sätta namnet till %s"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr "kan inte sätta värdnamn; detta system saknar denna funktionen"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "kan inte avgöra värdnamnet"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Användning: %s [FLAGGA]... [ANVÄNDARNAMN]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"Skriv ut information om ANVÄNDARNAMN, eller den aktuella användaren.\n"
+"\n"
+" -a ignoreras, finns för kompabilitet med andra versioner\n"
+" -g, --group skriv ut endast gällande grupp-id\n"
+" -G, --groups skriv ut alla grupp-id\n"
+" -n, --name skriv ut ett namn i stället för ett nummer, gäller -ugG\n"
+" -r, --real skriv ut verklig ID i stället för den gällande, gäller -"
+"ugG\n"
+" -u, --user skriv ut endast gällande användar-id\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"Utan någon FLAGGA skrivs lite användbar, identifierad information ut.\n"
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "kan inte skriva bara användare och bara grupp"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr "kan inte skriva ut bara namn eller faktiskt ID på standardformat"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Ingen sådan användare"
+
+#: src/id.c:205
+#, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "kan inte hitta ett namn för användar-ID %lu"
+
+#: src/id.c:229
+#, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "kan inte hitta ett namn för grupp-ID %lu"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "kan inte hämta tilläggsgrupplista"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " grupper="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr "strip-flaggan kan inte användas vid installation av en katalog"
+
+#: src/install.c:321
+#, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "målkatalog kan inte användas vid installation av en katalog"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "ogiltig rättighet %s"
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "kan inte byta ägare av %s"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "kan inte sätta tidsstämpel för %s"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "systemanropet fork misslyckades"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "kan inte köra strip"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "väntar på %s [-d]"
+
+#: src/install.c:572
+#, fuzzy, c-format
+msgid "strip process terminated abnormally"
+msgstr "%s [-d] avlutade oväntat"
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "ogiltig användare %s"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "skapar katalog %s"
+
+#: src/install.c:651
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Användning: %s [FLAGGA]... [-T] KÄLLA DEST\n"
+" eller: %s [FLAGGA]... KÄLLA... KATALOG\n"
+" eller: %s [FLAGGA]... -t KATALOG KÄLLA...\n"
+" eller: %s [FLAGGA]... -d KATALOG...\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"De första tre formaten kopierar KÄLLA till DEST eller flera KÄLLor till\n"
+"en befintlig KATALOG, samtidigt som rättigheter och ägare/grupp sätts.\n"
+"Det fjärde formatet skapar KATALOG(er) inklusive eventuella "
+"föräldrakataloger.\n"
+"\n"
+
+#: src/install.c:667
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup[=STYR] säkerhetskopiera varje befintlig destination\n"
+" -b som --backup, fast tar inget argument\n"
+" -c (ignoreras)\n"
+" -d, --directory betrakta alla argument som kataloger; skapa dem\n"
+" inklusive eventuella föräldrakataloger\n"
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D skapa alla föräldrakataloger till DEST; kopiera sedan\n"
+" KÄLLA till DEST\n"
+" -g, --group=GRUPP sätt grupptillhörighet, istället för processens grupp\n"
+" -m, --mode=RÄTTIGHET sätt rättigheter (som för chmod), istället för rwxr-"
+"xr-x\n"
+" -o, --owner=ÄGARE sätt ägare (endast superanvändare)\n"
+
+#: src/install.c:681
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps sätt KÄLLors åtkomst- och modifikationstid även "
+"på\n"
+" destinationsfiler\n"
+" -s, --strip ta bort symboltabeller\n"
+" -S, --suffix=ÄNDELSE ersätt den vanliga säkerhetskopieändelsen\n"
+" -t, --target-directory=KATALOG kopiera alla KÄLLargument till KATALOG\n"
+" -T, --no-target-directory behandla DEST som en vanlig fil\n"
+" -v, --verbose skriv namnet på varje katalog som skapas\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"Ändelsen på säkerhetskopior är \"~\" om inte annat anges av --suffix eller\n"
+"SIMPLE_BACKUP_SUFFIX. Versionhanteringen kan styras med --backup-flaggan "
+"eller\n"
+"med miljövariabeln VERSION_CONTROL. Den kan ha följande värden:\n"
+"\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"För varje par av inmatade rader med identiska join-fält, skriv en rad\n"
+"till standard ut. Om inget annat anges används det första fältet som\n"
+"join-fält avskiljda med blanktecken. När FIL1 eller FIL2 (inte båda)\n"
+"är -, läs standard in.\n"
+"\n"
+" -a FILNUM skriv omatchade rader från fil FILNUM, där FILNUM är 1 "
+"eller\n"
+" 2, motsvarande FIL1 eller FIL2\n"
+" -e TOM ersätt tomma inmatningsfält med TOM\n"
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case ignorera skiftläge när fält jämförs\n"
+" -j FÄLT samma som \"-1 FÄLT -2 FÄLT\"\n"
+" -o FORMAT följ FORMAT när utskriftsrader konstrueras\n"
+" -t TECKEN använd TECKEN som fältseparator för in- och utmatning\n"
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v FILNUM som -a FILNUM, men undertrycker förenade utmatade rader\n"
+" -1 FÄLT förena med FÄLT i fil 1\n"
+" -2 FÄLT förena med FÄLT i fil 2\n"
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"Om inte -t TECKEN är givet, separeras fält av föregående mellanslag\n"
+"som ignoreras, annars separeras fält av TECKEN. Varje FÄLT är ett\n"
+"fältnummer räknat från 1. FORMAT är en eller flera specifikationer\n"
+"åtskilda med komma eller mellanslag, var och en är \"FILNUM.FÄLT\"\n"
+"eller \"0\". Normalvärdet för FORMAT skriver ut de förenade fälten, de\n"
+"kvarvarande fälten från FIL1, de kvarvarande fälten från FIL2, allt\n"
+"separerat med TECKEN.\n"
+"\n"
+"Viktigt: FIL1 och FIL2 måste vara sorterade på föreningsfälten.\n"
+"T.ex., använd \"sort -k 1b,1\" om \"join\" inte har några flaggor.\n"
+
+#: src/join.c:617 src/join.c:812
+#, c-format
+msgid "invalid field number: %s"
+msgstr "felaktigt fältnummer: %s"
+
+#: src/join.c:638 src/join.c:647
+#, c-format
+msgid "invalid field specifier: %s"
+msgstr "felaktig fältspecifikation: %s"
+
+#: src/join.c:654
+#, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "felaktigt filnummer i fältspec: %s"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr "inkompatibla join-fält %lu, %lu"
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr "motsägelsefulla ersättningssträngar för tomma fält"
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr "tom tabulator"
+
+#: src/join.c:870 src/sort.c:3031
+#, c-format
+msgid "multi-character tab %s"
+msgstr "flerteckenstabulator %s"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr "inkompatibla tabulatorer"
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "båda filerna kan inte vara standard in"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"Användning: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" eller: %s -l [SIGNAL]...\n"
+" eller: %s -t [SIGNAL]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+"Skickar signaler till processer, eller räknar upp signaler.\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" ange namnet eller numret på signalen som skall skickas\n"
+" -l, --list räkna upp signalnamn, eller konvertera signalnamn till/"
+"från\n"
+" nummer\n"
+" -t, --table skriv en tabell med signalinformation\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+"\n"
+"SIGNAL kan vara ett signalnamn som \"HUP\" eller ett signalnummer som\n"
+"\"1\", eller en slutstatus från en process avslutad av en signal. PID\n"
+"är ett heltal; om det är negativt identifierar det en processgrupp.\n"
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: felaktig signal"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: ogiltigt process-id"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "ogiltig flagga -- %c"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: flera signaler angivna"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "multipla -l eller -t-flaggor angivna"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "kan inte kombinera signal med -l eller -t"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr "inget process-ID angivet"
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Användning: %s FIL1 FIL2\n"
+" eller: %s [FLAGGA]\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+"Anropa funktionen link för att skapa en länk som heter FIL2 till en\n"
+"befintlig FIL1.\n"
+"\n"
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "kan inte skapa länk %s till %s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr ""
+"%s: varning: att göra en hård länk till en symbolisk länk är inte portabelt"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: hård länk inte tillåten för katalog"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: kan inte skriva över katalog"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: ersätt %s? "
+
+#: src/ln.c:295
+#, c-format
+msgid "creating symbolic link %s"
+msgstr "skapar symbolisk länk %s"
+
+#: src/ln.c:296
+#, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "skapar symbolisk länk %s -> %s"
+
+#: src/ln.c:298
+#, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "skapar hård länk till %.0s%s"
+
+#: src/ln.c:301
+#, c-format
+msgid "creating hard link %s"
+msgstr "skapar hård länk %s"
+
+#: src/ln.c:302
+#, c-format
+msgid "creating hard link %s => %s"
+msgstr "skapar hård länk %s => %s"
+
+#: src/ln.c:324
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Användning: %s [FLAGGA]... [-T] MÅL LÄNKNAMN (format 1)\n"
+" eller: %s [FLAGGA]... MÅL (format 2)\n"
+" eller: %s [FLAGGA]... MÅL... KATALOG (format 3)\n"
+" eller: %s [FLAGGA]... -t KATALOG MÅL... (format 4)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"I det första formatet, skapa en link till MÅL med namnet LÄNKNAMN.\n"
+"I det andra formatet, skapa en länk till MÅL i aktuell katalog.\n"
+"I de tredje och fjärde formaten, skapa länkar till varje MÅL i KATALOG.\n"
+"Skapa hårda länkar om inget annat anges, symboliska länkar med\n"
+"--symbolic. När hårda länkar skapas måste varje MÅL existera.\n"
+"\n"
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup[=STYR] säkerhetskopiera varje befintlig destination\n"
+" -b som --backup, fast tar inget argument\n"
+" -d, -F, --directory tillåt superanvändaren att försöka hårt länka\n"
+" kataloger (obs: detta kommer formodligen\n"
+" misslyckas på grund av systemrestriktioner,\n"
+" även för superanvändaren)\n"
+" -f, --force ta bort befintliga destinationsfiler\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference behandla destination som är symbolisk länk "
+"till\n"
+" en katalog som om det vore en vanlig fil\n"
+" -i, --interactive fråga om destinationer skall tas bort\n"
+" -s, --symbolic gör symboliska länkar istället för hårda\n"
+
+#: src/ln.c:356
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" -S, --suffix=ÄNDELSE ersätt den vanliga säkerhetskopieändelsen\n"
+" -t, --target-directory=KATALOG ange KATALOG som länkarna skall skapas i\n"
+" -T, --no-target-directory behandla LÄNKNAMN som en vanlig fil\n"
+" -v, --verbose skriv namnet på varje länkad fil\n"
+
+#: src/ln.c:484
+#, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "Kan inte kombinera --target-directory och --no-target-directory"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Användning: %s [FLAGGA]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"Skriv ut namnet på aktuell användare.\n"
+"\n"
+
+#: src/logname.c:89
+#, c-format
+msgid "no login name"
+msgstr "inget inloggningsnamn"
+
+# Dessa två format skall expandera till samma längd. (Det finns en
+# kommentar omedelbart innan dem i koden om det. Hur får man xgettext
+# att ta med kommentarer?)
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%e %b %Y"
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%e %b %H.%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "ignorerar ogiltigt värde på miljövariabeln QUOTING_STYLE: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "ignorerar felaktig bredd i miljövariabeln COLUMNS: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr "ignorerar felaktigt tabulatorsteg i miljövariabeln TABSIZE: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "felaktig radlängd: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "felaktigt tabulatorsteg %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "felaktigt tidsstilsformat %s"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "okänt prefix: %s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "obegripligt värde på LS_COLORS-miljövariabeln"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "kan inte öppna katalog %s"
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "kan inte avgöra enhet och inod för %s"
+
+#: src/ls.c:2353
+#, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "%s: listar inte redan listad katalog"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "läser katalog %s"
+
+#: src/ls.c:2410
+#, c-format
+msgid "closing directory %s"
+msgstr "stänger katalog %s"
+
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "kan inte jämföra filnamnen %s och %s"
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"Visa information om FILerna (aktuell katalog om inget anges). Sortera\n"
+"posterna alfabetiskt om ingen av -cftuvSUX eller --sort anges.\n"
+"\n"
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all bortse inte från poster som inleds med .\n"
+" -A, --almost-all lista inte underförstådda . och ..\n"
+" --author med -l, skriv ut författare för varje fil\n"
+" -b, --escape skriv oktala koder för ickegrafiska tecken\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=STORLEK använd STORLEK byte stora block\n"
+" -B, --ignore-backups lista inte underförstådda poster som slutar på "
+"~\n"
+" -c med -lt: sortera efter och visa ctime, (tid "
+"för\n"
+" senaste ändring av filstatusinformation)\n"
+" med -l: visa ctime och sortera alfabetiskt\n"
+" annars: sortera efter ctime\n"
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C lista poster kolumnvis\n"
+" --color[=NÄR] ange om färger skall användas för att "
+"särskilja\n"
+" filetyper. NÄR kan vara \"never\", \"always"
+"\"\n"
+" eller \"auto\".\n"
+" -d, --directory lista kataloger istället för deras innehåll,\n"
+" och följ inte symboliska länkar\n"
+" -D, --dired anpassa utdata för Emacs dired-funktion\n"
+
+#: src/ls.c:4307
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f sortera inte, slå på -aU, slå av -ls --color\n"
+" -F, --classify lägg till en indikator (en av */=>@|) till "
+"poster\n"
+" --file-type detsamma, med undantag av \"*\"\n"
+" --format=ORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time som -l --time-style=full-iso\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr " -g som -l, men skriv inte ut ägare\n"
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+" --group-directories-first\n"
+" gruppera kataloger före filer\n"
+
+#: src/ls.c:4322
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -G, --no-group i långa listningar: skriv inte ut gruppnamn\n"
+" -h, --human-readable skriv storlekar i läsbart format (t.ex. 1K 234M "
+"2G)\n"
+" -H, --si d:o, men använd potenser av 1000, inte 1024\n"
+
+#: src/ls.c:4328
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+" -H, --dereference-command-line\n"
+" följ symboliska länkar angivna på kommandoraden\n"
+" --dereference-command-line-symlink-to-dir\n"
+" följ varje kommandoradsargument som är en "
+"symbolisk\n"
+" länk som pekar på en katalog\n"
+" --hide=MÖNSTER visa inte underförstådda poster som matchar "
+"MÖNSTER\n"
+" (åsidosätts av -a eller -A)\n"
+
+#: src/ls.c:4337
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=ORD lägg till en indikator med stil ORD till "
+"postnamn:\n"
+" none (standard), slash (-p),\n"
+" file-type (-p), classify (-F)\n"
+" -i, --inode visa indexnummer för varje fil\n"
+" -I, --ignore=MÖNSTER visa inte underförstådda poster som matchar\n"
+" skalMÖNSTER\n"
+" -k som --block-size=1K\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l använd långt listningsformat\n"
+" -L, --dereference när filinformation visas för en symbolisk "
+"länk,\n"
+" visa information om filen länken refererar\n"
+" snarare än för själva länken\n"
+" -m fyll bredden med en kommaseparerad lista av "
+"poster\n"
+
+#: src/ls.c:4352
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid som -l, men lista numeriska användar- och "
+"gruppid\n"
+" -N, --literal skriv ut råa postnamn (specialbehandla inte\n"
+" kontrolltecken till exempel)\n"
+" -o som -l, men lista inte gruppinformation\n"
+" -p, --indicator-style=slash\n"
+" lägg till en /-indikator till kataloger\n"
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars skriv ? istället för ickegrafiska tecken\n"
+" --show-control-chars visa ickegrafiska tecken som de är (normalfall "
+"utom\n"
+" om programmet är \"ls\" och utdata är en "
+"terminal)\n"
+" -Q, --quote-name omge postnamnen med citationstecken\n"
+" --quoting-style=ORD använd citationsstil ORD för postnamn:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+
+#: src/ls.c:4368
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse sortera baklänges\n"
+" -R, --recursive visa underkataloger rekursivt\n"
+" -s, --size skriv storleken i block för varje fil\n"
+
+#: src/ls.c:4373
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S sortera efter filstorlek\n"
+" --sort=ORD sortera ORDvis istället för efter namn: none -"
+"U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=ORD visa tid som ORD istället för modifieringstid:\n"
+" atime, access, use, ctime eller status; använd\n"
+" angiven tid som sorteringsnyckel om --"
+"sort=time\n"
+
+#: src/ls.c:4382
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=STIL med -l, visa tider i med stil STIL:\n"
+" full-iso, long-sio, iso, locale, +FORMAT\n"
+" FORMAT tolkas som \"date\"; om FORMAT är\n"
+" FORMAT1<nyrad>FORMAT2, används FORMAT1 för "
+"gamla\n"
+" filer och FORMAT2 för nyare filer;\n"
+" vid tillägg av prefixet \"posix-\" till STIL, "
+"gäller\n"
+" STIL endast utanför lokalen POSIX\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+" -t sortera efter modifieringstid\n"
+" -T, --tabsize=KOLUMN antag tabulatorsteg varje KOLUMN, inte var 8:e\n"
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u med -lt: sortera efter och visa åtkomsttid\n"
+" med -l: visa åtkomsttid men sortera "
+"alfabetiskt\n"
+" annars: sortera enligt åtkomsttid\n"
+" -U sortera inte; lista poster i katalogordning\n"
+" -v sortera efter version\n"
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -w, --width=KOLUMN anta skärmbredd istället för aktuellt värde\n"
+" -x lista poster radvis istället för kolumnvis\n"
+" -X sortera alfabetiskt efter ändelser\n"
+" -1 lista en fil per rad\n"
+
+#: src/ls.c:4414
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"Normalt används inte färger för att särskilja filtyper. Det är likvärdigt\n"
+"med att ange --color=none. Att använda flaggan --color utan något NÄR är\n"
+"detsamma som att ange --color=always. Med --color=auto används färgkodning\n"
+"endast om standard ut är en terminal (tty). Miljövariabeln LS_COLORS kan\n"
+"påverka färgerna, och kan lätt sättas av kommandot dircolors.\n"
+"\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+"\n"
+"Slutstatus är 0 om OK, 1 vid smärre problem, 2 vid allvarligare bekymmer.\n"
+
+#: src/md5sum.c:150
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Användning: %s [FLAGGA] [FIL]...\n"
+"Skriv eller kontrollera %s (%d-bitars) kontrollsummor.\n"
+"Utan FIL eller om FIL är -, läs standard in.\n"
+"\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+" -b, --binary läs i binärt läge (standard om inte standard in "
+"läses)\n"
+
+#: src/md5sum.c:164
+msgid " -b, --binary read in binary mode\n"
+msgstr " -b, --binary läs i binärt läge\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+" -c, --check läs %s-summor från FILen och kontrollera dem\n"
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+" -t, --text läs i textläge (standard om standard in läses)\n"
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr " -t, --text läs i textläge (standard)\n"
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"\n"
+"De två följande flaggorna är användbara enbart vid verifikation av\n"
+"kontrollsummor:\n"
+" --status skriv inte ut något, statuskoden visar resultatet\n"
+" -w, --warn varna för felaktigt formaterade "
+"kontrollsummerader\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"Summorna beräknas så som beskrivs i %s. Vid kontroll ska indata vara\n"
+"tidigare utdata från detta program. Normalläge är att skriva en rad\n"
+"med en kontrollsumma, ett tecken som indikerar typen (\"*\" för binärt,\n"
+"\" \" för text), och namnet på varje fil.\n"
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: för många kontrollsummerader"
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %<PRIuMAX>: felaktigt formaterad %s-kontrollsummerad"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s: MISSLYCKADES att öppna eller läsa\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "MISSLYCKADES"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "OK"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: läsfel"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: inga korrekt formaterade %s-kontrollsummerader funna"
+
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "VARNING: %<PRIuMAX> av %<PRIuMAX> listad fil kunde inte läsas"
+msgstr[1] "VARNING: %<PRIuMAX> av %<PRIuMAX> listade filer kunde inte läsas"
+
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] ""
+"VARNING: %<PRIuMAX> av %<PRIuMAX> beräknad kontrollsumma stämde INTE"
+msgstr[1] ""
+"VARNING: %<PRIuMAX> av %<PRIuMAX> beräknade kontrollsummor stämde INTE"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+"flaggorna --binary och --text är meningsfulla enbart när kontrollsummor\n"
+"verifieras"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "flaggan --status är meningsfull enbart när kontrollsummor verifieras"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "flaggan --warn är meningsfull enbart när kontrollsummor verifieras "
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Användning: %s [FLAGGA] KATALOG...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"Skapa KATALOG(er), om de inte redan finns.\n"
+"\n"
+
+#: src/mkdir.c:67
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+" -m, --mode=RÄTTIGHET sätt filrättigheter (som i chmod), inte rwxrwxrwx - "
+"umask\n"
+" -p, --parents inget fel om den finns, gör föräldrakataloger vid behov\n"
+" -v, --verbose skriv meddelande för varje skapad katalog\n"
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "skapade katalog %s"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Användning: %s [FLAGGA] NAMN...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"Skapa namngivna rör (FIFO) med de givna NAMNen.\n"
+"\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+" -m, --mode=RÄTTIGHET sätt filrättighetsbitar till RÄTTIGHET, inte a=rw - "
+"umask\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "felaktig rättighet"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr "rättigheter måste ange endast filrättighetsbitar"
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Användning: %s [FLAGGA]... NAMN TYP [ÖVRE LÄGRE]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"Skapa specialfilen NAMN av angiven TYP.\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+"\n"
+"Både ÖVRE och LÄGRE måste anges när TYP är b, c eller u, och de får\n"
+"inte anges när TYP är p. Om ÖVRE eller LÄGRE börjar med 0x eller 0X\n"
+"tolkas det som hexadecimalt; annars, om det börjar med 0 som oktalt;\n"
+"annars som decimalt. TYP får vara:\n"
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+" b skapa en (buffrad) blockspecialfil\n"
+" c, u skapa en (obuffrad) teckenspecialfil\n"
+" p skapa en FIFO\n"
+
+#: src/mknod.c:146
+msgid "Special files require major and minor device numbers."
+msgstr "Specialfiler kräver övre och undre enhetsnummer"
+
+#: src/mknod.c:156
+msgid "Fifos do not have major and minor device numbers."
+msgstr "Fifo:er har inte övre och undre enhetsnummer."
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "blockspecialfiler stöds inte"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "teckenspecialfiler stöds inte"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "ogiltigt övre enhetsnummer %s"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "ogiltigt undre enhetsnummer %s"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "ogiltig enhet %s %s"
+
+#: src/mknod.c:216
+#, c-format
+msgid "invalid device type %s"
+msgstr "ogiltig enhetstyp %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"Byt namn på KÄLLA till DEST eller flytta KÄLLor till KATALOG.\n"
+"\n"
+
+#: src/mv.c:297
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup[=STYR] säkerhetskopiera varje befintlig destination\n"
+" -b som --backup, fast tar inget argument\n"
+" -f, --force fråga inte innan något skrivs över\n"
+" -i, --interactive fråga innan något skrivs över\n"
+
+#: src/mv.c:303
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --strip-trailing-slashes ta bort avslutande snedstreck från varje \n"
+" KÄLLargument\n"
+" -S, --suffix=ÄNDELSE ersätt den vanliga säkerhetskopieändelsen\n"
+
+#: src/mv.c:308
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" -t, --target-directory=KATALOG flytta alla KÄLLargument in i KATALOG\n"
+" -T, --no-target-directory behandla DEST som en vanlig fil\n"
+" -u, --update flytta nedast när KÄLLfilen är nyare än\n"
+" destinationsfilen eller när "
+"destinationsfilen\n"
+" inte finns\n"
+" -v, --verbose förklara vad som görs\n"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Användning: %s [FLAGGA] [KOMMANDO [ARG]...]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+"Kör KOMMANDO med justerat nice-värde, vilket påverkar processens\n"
+"schemaläggning. Utan KOMMANDO skrivs nuvarande nice-värde.\n"
+"Nice-värden går från %d (mest gynnad schemaläggning) till %d (minst\n"
+"gynnad).\n"
+"\n"
+" -n, --adjustment=N lägg till heltalet N till nice-värdet (10 som "
+"standard)\n"
+
+#: src/nice.c:155
+#, c-format
+msgid "invalid adjustment %s"
+msgstr "felaktigt justering %s"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "ett kommando måste anges med en justering"
+
+#: src/nice.c:171 src/nice.c:182
+#, c-format
+msgid "cannot get niceness"
+msgstr "kan inte avgöra nice-värde"
+
+#: src/nice.c:186
+#, c-format
+msgid "cannot set niceness"
+msgstr "kan inte sätta nice-värde"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv varje FIL till standard ut och lägg till radnummer.\n"
+"Utan FIL eller om FIL är -, läs standard in.\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=STIL använd STIL för att numrera rader i "
+"kroppen\n"
+" -d, --section-delimiter=CC använd CC för att avgränsa logiska sidor\n"
+" -f, --footer-numbering=STIL använd STIL för att numrera rader i fot\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=STIL använd STIL för att numrera rader i huvud\n"
+" -i, --page-increment=ANTAL öka radnummer med ANTAL för varje rad\n"
+" -l, --join-blank-lines=ANTAL grupp med ANTAL tomma rader räknade som "
+"en\n"
+" -n, --number-format=FORMAT följ FORMAT när radnummer sätts in\n"
+" -p, --no-renumber börja inte om radnummer vid logiska sidor\n"
+" -s, --number-separator=STRÄNG lägg till STRÄNG efter (möjligt) "
+"radnummer\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=NUMMER första radnumret på varje logisk sida\n"
+" -w, --number-width=ANTAL använd ANTAL kolumner för radnummer\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"I normalläge används -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC\n"
+"består av två tecken för att avskilja logiska sidor, saknas andra\n"
+"tecknet menas :. Skriv \\\\ för \\. STIL är någon av:\n"
+
+#: src/nl.c:214
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a numrera alla rader\n"
+" t numrera endast icketomma rader\n"
+" n numrera inga rader\n"
+" pGRU numrera endast rader som stämmer med det grundläggande "
+"reguljära\n"
+" uttrycket, GRU\n"
+"\n"
+"FORMAT är någon av:\n"
+"\n"
+" ln vänsterjusterat, inga inledande nollor\n"
+" rn högerjusterat, inga inledande nollor\n"
+" rz högerjusterat, inledande nollor\n"
+"\n"
+
+#: src/nl.c:281
+#, c-format
+msgid "line number overflow"
+msgstr "spill i radnummer"
+
+#: src/nl.c:479
+#, c-format
+msgid "invalid header numbering style: %s"
+msgstr "felaktig stil för numrering av sidhuvud: %s"
+
+#: src/nl.c:487
+#, c-format
+msgid "invalid body numbering style: %s"
+msgstr "felaktig stil för numrering av kropp: %s"
+
+#: src/nl.c:495
+#, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "felaktig stil för numrering av sidfot: %s"
+
+#: src/nl.c:504
+#, c-format
+msgid "invalid starting line number: %s"
+msgstr "felaktigt första radnummer: %s"
+
+#: src/nl.c:513
+#, c-format
+msgid "invalid line number increment: %s"
+msgstr "felaktig ökning av radnummer: %s"
+
+#: src/nl.c:525
+#, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "felaktigt antal tomma rader: %s"
+
+#: src/nl.c:539
+#, c-format
+msgid "invalid line number field width: %s"
+msgstr "felaktig bredd på radnumrets fält: %s"
+
+#: src/nl.c:558
+#, c-format
+msgid "invalid line numbering format: %s"
+msgstr "felaktigt format på radnummer: %s"
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Användning: %s KOMMANDO [ARGUMENT]...\n"
+" eller: %s FLAGGA\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+"Kör KOMMANDO, ignorera avringningssignaler.\n"
+"\n"
+
+#: src/nohup.c:117
+#, c-format
+msgid "ignoring input"
+msgstr "ignorerar indata"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr "misslyckades att öppna %s"
+
+#: src/nohup.c:161
+#, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "ignorerar indata och lägger till utdata till %s"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr "misslyckades att ställa in kopian av standard fel att stängas vid exec"
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr "ingorerar indata och omdirigerar standard fel och standard ut"
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr "misslyckades att omdirigera standard fel"
+
+#: src/od.c:307
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Användning: %s [FLAGGA]... [FIL]...\n"
+" eller: %s [-abcdfilosx]... [FIL] [[+]FÖRSKUTNING[.][b]]\n"
+" eller: %s --traditional [FLAGGA]... [FIL] [[+]FÖRSKUTNING[.][b] [+]"
+"[ETIKETT][.][b]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"Skriv en otvetydig representation, normalt oktala tecken, av FIL till\n"
+"standard ut. Med mer än ett FIL-argument, slå samman dem i den\n"
+"angivna orningen som indata. Utan FIL eller om FIL är -, läs standard\n"
+"in.\n"
+"\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr "Alla argument till långa flaggor är obligatoriska korta flaggor.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=RADIX avgör hur filposition skrivs\n"
+" -j, --skip-bytes=BYTE hoppa först över BYTE byt i indata\n"
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=BYTE begränsa utmatning till BYTE byte från "
+"indata\n"
+" -S, --strings[=BYTE] skriv ut strängar med minst BYTE grafiska "
+"tecken\n"
+" -t, --format=TYP välj format för utmatning\n"
+" -v, --output-duplicates använd inte * för att markera undertryckta "
+"rader\n"
+" -w, --width[=BYTE] skriv ut BYTE byte per rad\n"
+" --traditional acceptera argument i traditionellt format\n"
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"Traditionella formatspecifikationer kan blandas, de ackumuleras:\n"
+" -a samma som -t a, välj namngivna tecken, ingorera höga biten\n"
+" -b samma som -t o1, välj oktala byte\n"
+" -c samma som -t c, välj ASCII-tecken eller sekvenser med omvänt "
+"snedstreck\n"
+" -d samma som -t u2, välj 2-bytenheter, utan tecken, decimalt\n"
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f samma som -t fF, välj flyttal\n"
+" -i samma som -t dI, välj decimala heltal\n"
+" -l samma som -t dL, välj decimala långa heltal\n"
+" -o samma som -t o2, välj oktala 2-byteenheter\n"
+" -s samma som -t d2, välj decimala 2-byteenheter\n"
+" -x samma som -t x2, välj hexadecimala 2-bytenheter\n"
+
+#: src/od.c:353
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"Om både det första och andra anropsformatet är tillämpligt, används\n"
+"det andra formate om den sista operanden börjar med + eller (om det\n"
+"finns två operander) en siffra. En operand FÖRSKJUTNING betyder -j\n"
+"FÖRSKJUTNING. ETIKETT är den första skrivna bytens pseudoadress,\n"
+"vilken ökas så länge utmatningen pågår. För FÖRSKJUTNING och ETIKETT\n"
+"indikerar förstavelserna 0x eller 0X hexadecimalt, ändelser kan vara\n"
+". för oktalt och b multiplicerar med 512.\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+"\n"
+"TYP skapas av en eller fler av dessa specifikationer:\n"
+"\n"
+" a namngivet tecken, ignorera höga biten\n"
+" c ASCII-tecken eller sekvens med omvänt snedstreck\n"
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[STORLEK] decimalt med tecken, STORLEK byte per heltal\n"
+" f[STORLEK] flyttal, STORLEK byte per heltal\n"
+" o[STORLEK] oktalt, STORLEK byte per heltal\n"
+" u[STORLEK] decimalt utan tecken, STORLEK byte per heltal\n"
+" x[STORLEK] hexadecimalt, STORLEK byte per heltal\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"STORLEK är ett tal. För TYP doux, kan STORLEK också vara C för\n"
+"sizeof(char), S för sizeof(short), I för sizeof(int) eller L för\n"
+"sizeof(long). Om TYP är f, kan STORLEK också var F för sizeof(float), D\n"
+"för sizeof(double) eller L för sizeof(long double).\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"RADIX är d för decimalt, o för oktalt, x för hexadecimalt eller n för\n"
+"inget. BYTE är hexadecimalt med 0x eller 0X som förstavelse,\n"
+"multipliceras med 512 med b som ändelse, med 1024 med k och med\n"
+"1048576 med m. Ett tillägg av z till valfri typ gör att skrivbara\n"
+"tecken visas i slutet på varje rad. "
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"--string utan ett tal implicerar 3. --width utan ett tal implicerar\n"
+"32. I normalläge använder od -A o -t d2 -w16.\n"
+
+#: src/od.c:683 src/od.c:802
+#, c-format
+msgid "invalid type string %s"
+msgstr "ogiltig typsträng %s"
+
+#: src/od.c:693
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"ogiltig typsträng %s;\n"
+"detta system har ingen %lu-bytes heltalstyp"
+
+#: src/od.c:812
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"ogiltig typsträng %s;\n"
+"detta system har ingen %lu-bytes flyttalstyp"
+
+#: src/od.c:871
+#, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "ogiltigt tecken \"%c\" i typsträngen %s"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "kan inte hoppa förbi slutet på en kombinerad inmatning"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+"ogiltig radix för utmatningsadress \"%c\"; måste vara ett tecken från [doxn]"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "hoppa över argument"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "begränsa argument"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "minsta längd på sträng"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "specifikation av bredd"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "ingen typ kan anges när strängar sparas"
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr "Kompatibelt läge stöder högst en fil."
+
+# "skip-bytes" och "read-bytes" är flaggor
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr "skip-bytes + read-bytes är för stort"
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "varning: ogiltig bredd %lu; använder %d i stället"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: fmt=\"%s\" bredd=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "standard in stängd"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv rader som består av sekventiellt korresponderande rader från\n"
+"varje FIL, åtskilda med TAB, till standard ut. Utan FIL eller om\n"
+"FIL är -, läs standard in.\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=LISTA återanvänd tecken från LISTA inställer för TAB\n"
+" -s, --serial klistra in en fil i taget i stället för "
+"parallellt\n"
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Användning: %s [FLAGGA]... NAMN...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+"Diagnostisera oportabla konstruktioner i NAMN.\n"
+"\n"
+" -p kontrollera för de flesta POSIX-system\n"
+" -P kontrollera tomma namn och inledande \"-\"\n"
+" --portability kontrollera för alla POSIX-system (detsamma som -p -"
+"P)\n"
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr "inledande \"-\" i en komponent av filnamnet %s"
+
+#: src/pathchk.c:206
+#, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "ej portabelt tecken %s i filnamnet %s"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr "tomt filnamn"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr "%s: kan inte avgöra maximal filnamnslängd"
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr "gränsen %lu överskreds av längden %lu för filnamnet %s"
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr "gränsen %lu överskreds av längden %lu för filnamnsdelen %s"
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Inloggningsnamn: "
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "I verkliga livet: "
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Katalog: "
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Skal: "
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Projekt: "
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "Plan:\n"
+
+# Rubrik i 8 tecken bred kolumn.
+#: src/pinky.c:421
+msgid "Login"
+msgstr "Login"
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr "Namn"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr " TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "Overksam"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr "När"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr "Var"
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Användning: %s [FLAGGA]... [ANVÄNDARE]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"\n"
+" -l skriv ut i långt format\n"
+" -b utelämna användarens hemkatalog och skal i det långa "
+"formatet\n"
+" -h utelämna användarens projektfil i det långa formatet\n"
+" -p utelämna användarens planfil i det långa formatet\n"
+" -s skriv ut i kort format\n"
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+" -f utelämna raden med kolumnrubriker i kort format\n"
+" -w utelämna anävndarens fullständiga namn i kort format\n"
+" -i utelämna användarens fullständiga namn och fjärrvärd i "
+"kort\n"
+" format\n"
+" -q utelämna användarens fullstädniga namn, fjärrvärd och \n"
+" overksamma tiden i kort format\n"
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+"\n"
+"Ett lättviktigt \"finger\"-program; skriver ut användarinformation.\n"
+"utmp-filen kommer att vara %s.\n"
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr "inget användarnamn angivet; åtminstone ett måsta anges när -l används"
+
+#: src/pr.c:807 src/pr.c:817
+msgid "page range"
+msgstr "sidintervall"
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "\"--pages=FÖRSTA_SIDA[:SISTA_SIDA]\" saknar argument"
+
+#: src/pr.c:916
+#, c-format
+msgid "Invalid page range %s"
+msgstr "Ogiltigt sidintervall %s"
+
+#: src/pr.c:981
+#, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "\"-l SIDLÄNGD\" felaktigt antal rader: %s"
+
+#: src/pr.c:1005
+#, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "\"-N NUMMER\" felaktigt första radnummer: %s"
+
+#: src/pr.c:1017
+#, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "\"-o MARGINAL felaktigt indrag av rad: %s"
+
+#: src/pr.c:1058
+#, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "\"-w SIDBREDD\" felaktigt antal tecken: %s"
+
+#: src/pr.c:1072
+#, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "\"-W SIDBREDD\" felaktigt antal tecken: %s"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "Kan inte specificera antal kolumner vid parallell utskrift."
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "Kan inte specificera både utskrift på tvären och parallell utskrift."
+
+#: src/pr.c:1202
+#, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "\"-%c\" extra tecken eller felaktigt tal i argumentet: %s"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "bredden på sidan är för smal"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr "första sidnummer %<PRIuMAX> överskrider antalet sidor %<PRIuMAX>"
+
+#: src/pr.c:2406
+#, c-format
+msgid "Page number overflow"
+msgstr "Spill i sidnummer"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr "Sida %<PRIuMAX>"
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+"Paginera eller skapa kolumner av FIL(er) för utskrift.\n"
+"\n"
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +FÖRSTA_SIDA[:SISTA_SIDA], --pages=FÖRSTA_SIDA[:SISTA_SIDA]\n"
+" börja [sluta] skriva vid sida FÖRSTA_[SISTA_]SIDA\n"
+" -KOLUMN, --columns=KOLUMN\n"
+" skapa KOLUMN-kolumnutmatning och skriv kolumner nedåt,\n"
+" om inte -a används. Balansera antalet rader i "
+"kolumnerna\n"
+" på varje sida\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across skriv kolumner på tvären i stället för nedåt, används\n"
+" tillsammans med -KOLUMN\n"
+" -c, --show-control-chars\n"
+" använd hattnotation (^G) och oktal notation med omvänt\n"
+" snedstreck\n"
+" -d, --double-space\n"
+" skriv ut med dubbelt radavstånd\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=FORMAT\n"
+" använd FORMAT för huvuddatum\n"
+" -e[TECKEN[BREDD]], --expand-tabs[=TECKEN[BREDD]]\n"
+" expandera inmatade TECKEN (tabulatorer) till\n"
+" tabulatorBREDD (8)\n"
+" -F, -f, --form-feed\n"
+" använd sidmatning i stället för nya rader för att\n"
+" separera sidor (med ett 3-raders huvud vid -F eller\n"
+" 5-raders huvud och fot utan -F)\n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h HUVUD, --header=HUVUD\n"
+" använd ett centrerat HUVUD i stället för filnamn i\n"
+" sidhuvud, -h \"\" skriver en tom rad. Använd inte -h"
+"\"\"\n"
+" -i[TECKEN[BREDD]], --output-tabs[=TECKEN[BREDD]]\n"
+" ersätt mellanslag med TECKEN (tabulatorer), BREDD breda "
+"(8)\n"
+" -J, --join-lines sammanfoga hela rader, stänger av -W radstympning, "
+"ingen\n"
+" kolumnjustering, --sep-string[STRÄNG] anger avskiljare\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l SIDLÄNGD, --length=SIDLÄNGD\n"
+" sätt sidlängden till SIDLÄNGD (66) rader\n"
+" (standard 56 rader text, och med -F 63)\n"
+" -m, --merge skriv alla filer parallellt, en i varje kolumn, hugg av\n"
+" rader, men slå samman rader till full längd med -J\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[SEP[SIFFROR]], --number-lines[=SEP[SIFFROR]]\n"
+" numrera rader, använd SIFFROR (5) siffror, sedan SEP "
+"(TAB),\n"
+" i normalläge startar räkning vid infilens första rad\n"
+" -N NUMMER, --first-line-number=NUMMER\n"
+" börja räkna med NUMMER vid första raden på första sidan\n"
+" som skrivs ut (se +FÖRSTA_SIDA)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o MARGINAL, --indent=MARGINAL\n"
+" skjut in varje rad med MARGINAL (noll) mellanrum, "
+"påverka\n"
+" ej -w eller -W, MARGINAL läggs till SIDBREDD\n"
+" -r, --no-file-warnings\n"
+" utelämna varning när en fil inte kan öppnas\n"
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[TECKEN], --separator[=TECKEN]\n"
+" åtskilj kolumner med ett enda tecken, standard för "
+"TECKEN\n"
+" är tabulatortecknet utan -w och \"inget tecken\" med -w\n"
+" -s[TECKEN] slår av avhuggning för alla tre "
+"kolumnflaggorna\n"
+" (-KOLUMN|-a KOLUMN|-m) utom när -w är angivet\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -SSTRÄNG, --sep-string[=STRÄNG]\n"
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" åtskilj kolumner med STRÄNG,\n"
+" utan -S: Standardseparator <TAB> med -J och <blank>\n"
+" annars (samma som -S\" \"), ingen effekt på "
+"kolumnflaggor\n"
+" -t, --omit-header utelämna sidhuvud och sidfot\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" utelämna sidhuvud och sidfot, ta bort paginering\n"
+" gjord med sidmatning i infiler\n"
+" -v, --show-nonprinting\n"
+" använd oktal notation med omvänt snedstreck\n"
+" -w SIDBREDD, --width=SIDBREDD\n"
+" sätt sidbredd till SIDBREDD (72) kolumner vid utmatning\n"
+" med flera textkolumner, -s[TECKEN] slår av (72)\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W SIDBREDD, --page-width=SIDBREDD\n"
+" sätt sidbredd till SIDBREDD (72) kolumner vid all \n"
+" utmatning, hugg av rader utom om flagga -J är satt,\n"
+" ingen koppling till -S eller -s\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"-T impliceras av -l nn när nn <= 10 eller <= 3 med -F. Utan FIL eller om \n"
+"FIL är -, läs standard in.\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Användning: %s [MILJÖVARIABEL]...\n"
+" eller: %s FLAGGA\n"
+"Om ingen MILJÖVARIABEL angetts, skriv ut allihop.\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr "varning: %s: tecken som följer efter teckenkonstanten har ignorerats"
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Användning: %s FORMAT [ARGUMENT]...\n"
+" eller: %s FLAGGA\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+"Skriv ut ARGUMENT enligt FORMAT.\n"
+"\n"
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"\n"
+"FORMAT styr utdatan som i C printf. Tolkade sekvenser är:\n"
+"\n"
+" \\\" citationstecken\n"
+" \\NNN tecken med oktalt värde NNN (1 till 3 siffror)\n"
+" \\\\ omvänt snedstreck\n"
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+" \\a varning (SIGNAL)\n"
+" \\b backsteg\n"
+" \\c producera inte mer utdata\n"
+" \\f sidmatning\n"
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n ny rad\n"
+" \\r vagnretur\n"
+" \\t horisontell tabulator\n"
+" \\v vertikal tabulator\n"
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+" \\xHH byte med hexadecimalt värde HH (1 till 2 siffror)\n"
+"\n"
+" \\xHHHH Unicodetecken (ISO/IEC 10646) med hexadecimalt värde HHHH (4 "
+"siffror)\n"
+" \\UHHHHHHHH Unicodetecken med hexadecimalt värde HHHHHHHH (8 siffror)\n"
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+" %% ett enkelt %\n"
+" %b ARGUMENT som en sträng med \"\\\"-kontrollsekvenser tolkade,\n"
+" utom att oktala sekvenser är på formen \\0 eller \\0NNN\n"
+"\n"
+"och alla specifikationer på C-format som slutar med en av diouxXfeEgGcs, "
+"med \n"
+"ARGUMENT konverterade till en passande typ först. Klarar av varierande "
+"storlek.\n"
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: ett numeriskt värde förväntas"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: värdet kunde inte konverteras helt"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "saknar hexadecimal siffra i kontrollsekvens"
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "ogiltigt universellt-teckennamn \\%c%0*x"
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr "ogiltig fältbredd: %s"
+
+#: src/printf.c:585
+#, c-format
+msgid "invalid precision: %s"
+msgstr "ogiltig precision: %s"
+
+#: src/printf.c:612
+#, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%.*s: felaktig fältspecifikation"
+
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "varning: ignorerar överflödiga argument, startar med %s"
+
+# Denna kommentar skulle varit med i po-filen, men har av någon
+# anledning fallit bort. Jag har felrapporterat att den saknas.
+#
+# Note to translator: Please translate "F. Pinard" to "François
+# Pinard" if "ç" (c-with-cedilla) is available in the
+# translation's character set and encoding.
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr "François Pinard"
+
+#: src/ptx.c:422
+#, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (för reguljäruttrycket %s)"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Användning: %s [FLAGGA]... [INFIL]... (utan -G)\n"
+" eller: %s -G [FLAGGA]... [INFIL [UTFIL]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"Utdata är ett permuterat index, med sammanhang, av orden i indatafilerna\n"
+"\n"
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference skriv ut automatiskt genererade referenser\n"
+" -G, --traditional uppträd mer som System V:s \"ptx\"\n"
+" -F, --flag-truncation=STRÄNG använd STRÄNG för att markera avhuggnar "
+"rader\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=STRÄNG makronamn att använda istället för \"xx\"\n"
+" -O, --format=roff generera utdata som roff-direktiv\n"
+" -R, --right-side-refs skriv referenser till höger, ej med i -w\n"
+" -S, --sentence-regexp=REGUTTR för radslut eller meningsslut\n"
+" -T, --format=tex generera utdata som TeX-direktiv\n"
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=REGUTTR använd REGUTTRY för att macha varje "
+"nyckelord\n"
+" -b, --break-file=FIL ordmellanrumstecken i denna FIL\n"
+" -f, --ignore-case gör om gemener till versaler för sortering\n"
+" -g, --gap-size=ANTAL mellanrum i kolumner mellan utdatafält\n"
+" -i, --ignore-file=FIL läs lista av ord att ignorera från FIL\n"
+" -o, --only-file=FIL läs lista av ord att endast använda från "
+"FIL\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references första fältet på varje rad är en referens\n"
+" -t, --typeset-mode - ej implementerat -\n"
+" -w, --width=ANTAL utmatningsbredd i kolumner, utan "
+"referenser\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"Utan FIL eller om FIL är -, läs standard in. \"-F /\" är standard.\n"
+
+#: src/ptx.c:2016
+#, c-format
+msgid "invalid gap width: %s"
+msgstr "ogiltig gapbredd: %s"
+
+#: src/ptx.c:2089
+#, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr "flaggan --copyright undanbedes; använd --version istället"
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+"Skriv ut hela filnamnet på aktuell katalog.\n"
+"\n"
+
+#: src/pwd.c:160
+#, c-format
+msgid "failed to chdir to %s"
+msgstr "misslyckades att ändra katalog till %s"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, c-format
+msgid "failed to stat %s"
+msgstr "misslyckades att ta status på %s"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr "kunde inte hitta katalogpost i %s med matchande i-nod"
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "ignorerar argument som inte är flaggor"
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Användning: %s [FLAGGA]... FIL\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+"Visa värdet på en symbolisk länk på standard ut.\n"
+"\n"
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+" -f, --canonicalize gör kanoniskt genom att följa varje "
+"symbolisk\n"
+" länk i varje komponent av det givna namnet\n"
+" rekursivt; alla utom den sista komponenten\n"
+" måste existera\n"
+" -e, --canonicalize-existing gör kanoniskt genom att följa varje "
+"symbolisk\n"
+" länk i varje komponent av det givna namnet\n"
+" rekursivt, alla komponenter måste existera\n"
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+" -m, --canonicalize-missing gör kanoniskt genom att följa varje "
+"symbolisk\n"
+" länk i varje komponent av det givna namnet\n"
+" rekursivt, utan krav på att komponenterna\n"
+" existerar\n"
+" -n, --no-newline skriv inte ut den avslutande nyraden\n"
+" -q, --quiet,\n"
+" -s, --silent undertryck de flesta meddelanden\n"
+" -v, --verbose rapportera felmeddelanden\n"
+
+#: src/remove.c:481 src/remove.c:525
+#, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "ÖDESDIGERT: misslyckades att stänga katalog %s"
+
+#: src/remove.c:494
+#, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "ÖDESDIGERT: kan inte öppna .. från %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+"ÖDESDIGERT: kan inte förvissa om att %s (återvänt till via ..) är säkert"
+
+#: src/remove.c:510
+#, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "ÖDESDIGERT: katalog %s ändrade enh/ino"
+
+#: src/remove.c:631
+#, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "ÖDESDIGERT: kan inte gå in i katalog %s"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr "ÖDESDIGERT: nyanländ till katalog %s ändrade dev/ino"
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"VARNING: Cirkulär katalogstruktur.\n"
+"Detta betyder nästan säkert att du har ett trasigt filsystem.\n"
+"RAPPORTERA TILL SYSTEMANSVARIG.\n"
+"Följande katalog utgör del av cykeln:\n"
+" %s\n"
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s: gå ner i skrivskyddad katalog %s? "
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s: gå ner i katalog %s? "
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: ta bort skrivskyddad %s %s? "
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: ta bort %s %s? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "tog bort katalog: %s\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, c-format
+msgid "failed to close directory %s"
+msgstr "misslyckades att stänga katalog %s"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr "hoppar över %s, eftersom den är på en annan enhet"
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "kan inte ta bort katalog %s"
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "ÖDESDIGERT: kan inte återvända till .. från %s"
+
+#: src/remove.c:1504
+#, c-format
+msgid "cannot remove root directory %s"
+msgstr "kan inte ta bort rotkatalog %s"
+
+#: src/remove.c:1544
+#, c-format
+msgid "cannot remove relative-named %s"
+msgstr "kan inte ta bort relativt namngivna %s"
+
+#: src/remove.c:1558
+#, c-format
+msgid "cannot restore current working directory"
+msgstr "kan inte återställa aktuell katalog"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr "Försök med \"%s ./%s\" för att ta bort filen %s.\n"
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Användning: %s [FLAGGA]... FIL...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+"Ta bort (avlänka) FIL(en/erna).\n"
+"\n"
+" -f, --force ignorera icke existerande filer, fråga aldrig\n"
+" -i fråga före varje borttagning\n"
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+" -I fråga en gång före mer än tre filer tas bort, eller\n"
+" vid rekursiv borttagning. Mindre påträngande än -"
+"i,\n"
+" men skyddar ändå mot de flesta misstag\n"
+" --interactive[=NÄR] fråga enligt NÄR: never, once (-I), eller\n"
+" always (-i). Utan NÄR, fråga alltid\n"
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+" --one-file-system när en hierarki tas bort rekursivt, hoppa över\n"
+" eventuella kataloger som ligger på andra "
+"filsystem\n"
+" än motsvarande kommandoradsargument gör\n"
+
+#: src/rm.c:179
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --no-preserve-root behandla inte \"/\" speciellt\n"
+" --preserve-root ta inte bort \"/\" (normalfall)\n"
+" -r, -R, --recursive ta bort kataloger och deras innehåll rekursivt\n"
+" -v, --verbose berätta vad som görs\n"
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+"\n"
+"Som standard tar rm inte bort kataloger. Använd flaggan --recursive (-r "
+"eller\n"
+"-R) för att ta bort varje uppräknad katalog också, tillsammans med hela "
+"dess\n"
+"inenhåll.\n"
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"För att ta bort filer vars namn börjar med \"-\", till exempel \"-apa\",\n"
+"använder du ett av dessa kommandon:\n"
+" %s -- -apa\n"
+"\n"
+" %s ./-apa\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"Observera att om du använder rm för att ta bort en fil är det oftast "
+"möjligt\n"
+"att ta reda på vad filen innehöll. Överväg att använda shred om du vill\n"
+"förvissa dig om att innehållet verkligen är borta.\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr "%s: ta bort alla argument rekursivt? "
+
+#: src/rm.c:366
+#, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: ta bort alla argument? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "tar bort katalog, %s"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Användning: %s [FLAGGA]... KATALOG...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"Ta bort KATALOG(er) om de är tomma.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignorera alla fel som beror enbart på att katalogen inte "
+"är\n"
+" tom\n"
+
+#: src/rmdir.c:148
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents ta bort KATALOG och dess föräldrar. T.ex. \"rmdir -p a/b/c"
+"\"\n"
+" motsvarar \"rmdir a/b/c a/b a\".\n"
+" -v, --verbose skriv ett meddelande för varje behandlad katalog\n"
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Användning: %s [FLAGGA]... SISTA\n"
+" eller: %s [FLAGGA]... FÖRSTA SISTA\n"
+" eller: %s [FLAGGA]... FÖRSTA ÖKNING SISTA\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"Skriv ut tal från FÖRSTA till SISTA, i steg om ÖKNING.\n"
+"\n"
+" -f, --format=FORMAT använd flyttalsFORMAT av typ printf\n"
+" -s, --separator=STRÄNG använd STRÄNG för att separera tal (standard: "
+"\\n)\n"
+" -w, --equal-width jämna ut bredd genom att lägga till inledande "
+"nollor\n"
+
+#: src/seq.c:88
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"\n"
+"Om FÖRSTA eller ÖKNING utelämnas, sätts de till 1. Det vill säga, en\n"
+"utelämnad ÖKNING sätts till 1 även när SISTA är mindre än FÖRSTA.\n"
+"FÖRSTA, ÖKNING och SISTA tolkas som flyttal. ÖKNING är normalt\n"
+"positivt om FÖRSTA är mindre än SISTA och ÖKNING är normalt negativt\n"
+"om FÖRSTA är större än SISTA.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+"FORMAT måste passa för att skriva ett argument av typen \"double\". Som\n"
+"standard är det %.PRECf om FÖRSTA, ÖKNING och SISTA alla är\n"
+"fixpunktsdecimaltal med maximal precision PREC, och annars %g.\n"
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "felaktigt flyttalsargument: %s"
+
+#: src/seq.c:342
+#, c-format
+msgid "invalid format string: %s"
+msgstr "felaktig formatsträng: %s"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr "formatsträng får inte anges när strängar med lika bredd skrivs"
+
+#: src/setuidgid.c:51
+#, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Användning: %s ANVÄNDARNAMN KOMMANDO [ARGUMENT]...\n"
+" eller: %s FLAGGA\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+"Släpp eventuella kompletterande grupper, anta användar-ID och grupp-ID för\n"
+"det angivna ANVÄNDARNAMNet, och kör KOMMANDO med angivna ARGUMENT.\n"
+"Avsluta med status 111 om det inte gick att anta begärda användar och grupp-"
+"ID.\n"
+"Annars, avsluta med slutstatus hos KOMMANDO.\n"
+"Detta program är användbart endast när det körs av root (användar-ID noll).\n"
+"\n"
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr "okänt användar-ID: %s"
+
+#: src/setuidgid.c:109
+#, c-format
+msgid "cannot set supplemental group"
+msgstr "kan inte sätta tilläggsgrupp"
+
+#: src/setuidgid.c:114
+#, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "kan inte sätta grupp-id till %lu"
+
+#: src/setuidgid.c:118
+#, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "kan inte sätta användar-id till %lu"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Användning: %s [FLAGGOR] FIL [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"Skriv över de angivna FIL(erna) upprepade gånger, för att göra det svårare\n"
+"även för väldigt dyra hårdvaruutrustningar att ta fram data.\n"
+"\n"
+
+#: src/shred.c:174
+#, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force ändra rättigheter för att tillåta skrivning, om nödvändigt\n"
+" -n, --iterations=N Skriv över N gånger istället för standard (%d)\n"
+" --random-source=FIL hämta slumpbytar från FIL (standard /dev/"
+"urandom)\n"
+" -s, --size=N strimla detta antal byte (ändelse som K, M, G fungerar)\n"
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove stympa och ta bort filen efter överskrivningen\n"
+" -v, --verbose följ processen\n"
+" -x, --exact avrunda inte filstorlekar upp till nästa hela block;\n"
+" detta är standardfallet för icke-normala filer\n"
+" -z, --zero lägg till en avslutande överskrivning med nollor för att\n"
+" dölja strimlandet\n"
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"Om FIL är -, strimla standard ut.\n"
+"\n"
+"Ta bort FIL(er) om --remove (-u) anges. Standard är att inte ta bort "
+"filerna\n"
+"för det är vanligt att arbeta på enhetsfiler som /dev/hda, och dessa filer\n"
+"bör inte tas bort. När man kör på en vanlig fil använder de flesta flaggan\n"
+"--remove.\n"
+"\n"
+
+#: src/shred.c:199
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"VARNING: Observera att shred bygger på ett väldigt viktigt antagande: att\n"
+"filsystemet skriver över data på plats. Detta är det traditionella sättet\n"
+"att göra saker, men många moderna filsystemskonstruktioner uppfyller inte\n"
+"detta antagande. Följande är exempel på filsystem på vilka shred inte har\n"
+"någon effekt, eller inte är garanterat att vara effektivt i alla "
+"filsystemets\n"
+"lägen:\n"
+"\n"
+
+#: src/shred.c:207
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"* loggstrukturerade eller journalfilsystem, som de som kommer med AIX och\n"
+"Solaris (och JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* filsystem som skriver skriver extra data och fortsätter även om en del\n"
+"skrivningar misslyckas, såsom RAID-baserade filsystem\n"
+"\n"
+"* filsystem som tar ögonblicksbilder, såsom Network Appliances NFS-server\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+"* filsystem som mellanlagrar på temporära platser, såsom klienter till\n"
+"NFS version 3\n"
+"\n"
+"* comprimerade filsystem\n"
+"\n"
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+"I fallet ext3-filsystem gäller den ovanstående friskrivningen (och shred är\n"
+"därmed av begränsad nytta) bara i läget data=journal, som lägger fildata i\n"
+"journal utöver bara metadata. I både läget data=ordered (standard) och\n"
+"data=writeback fungerar shred som vanligt. Ext3-journallägen kan ändras "
+"genom\n"
+"att lägga till flaggan data=något till monteringsflaggorna för ett särskilt\n"
+"filsystem i filen /etc/fstab, så som det är dokumenterat i manualsidan för\n"
+"mount (man mount).\n"
+"\n"
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+"Dessutom kan säkerhetskopior av filsystemet och fjärrspeglar innehålla "
+"kopior\n"
+"av filen som inte kan tas bort, och som kan göra det möjligt att återta en\n"
+"strimlad fil senare.\n"
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr "%s: fdatasync misslyckades"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr "%s: fsync misslyckades"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s: kan inte backa till början"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: pass %lu/%lu (%s)..."
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s: fel vid skrivning vid position %s"
+
+#: src/shred.c:478
+#, c-format
+msgid "%s: lseek failed"
+msgstr "%s: lseek misslyckades"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s: filen är för stor"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: pass %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+
+#: src/shred.c:776
+#, c-format
+msgid "%s: fstat failed"
+msgstr "%s: fstat misslyckades"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: ogiltig filtyp"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: filen har negativ storlek"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s: fel vid avhuggning"
+
+#: src/shred.c:889
+#, c-format
+msgid "%s: fcntl failed"
+msgstr "%s: fcntl misslyckades"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr ""
+"%s: kan inte skriva över filidentiferare som bara är öppnad för tillägg"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: tar bort"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: namnändrad till %s"
+
+#: src/shred.c:1018
+#, c-format
+msgid "%s: failed to remove"
+msgstr "%s: misslyckades att ta bort"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: borttagen"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, c-format
+msgid "%s: failed to close"
+msgstr "%s: misslyckades att stänga"
+
+#: src/shred.c:1065
+#, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: misslyckades öppna för skrivning"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s: ogiltigt antal pass"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, c-format
+msgid "multiple random sources specified"
+msgstr "multipla slumpkällor angivna"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: ogiltig filstorlek"
+
+#: src/shuf.c:51
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Användning: %s [FLAGGA]... [FIL]\n"
+" eller: %s -e [FLAGGA]... [ARG]\n"
+" eller: %s -i LÅ-HÖ [FLAGGA]...\n"
+
+#: src/shuf.c:57
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"Skriv en slumpvis permutation av indataraderna till standard ut.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -e, --echo behandla varje ARG som en indatarad\n"
+" -i, --input-range=LÅ-HÖ behandla varje nummer LÅ till HÖ som en "
+"indatarad\n"
+" -n, --head-lines=RADER skriv ut högst RADER rader\n"
+" -o, --output=FIL skriv resultatet till FIL istället för standard "
+"ut\n"
+" --random-source=FIL hämta slumpbytear från FIL (normalt /dev/"
+"urandom)\n"
+" -z, --zero-terminated avsluta rader med 0-byte, inte nyrad\n"
+
+#: src/shuf.c:287
+#, c-format
+msgid "multiple -i options specified"
+msgstr "multipla -l-flaggor angivna"
+
+#: src/shuf.c:307
+#, c-format
+msgid "invalid input range %s"
+msgstr "ogiltigt indataintervall %s"
+
+#: src/shuf.c:320
+#, c-format
+msgid "invalid line count %s"
+msgstr "felaktig radantal %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr "multipla utfiler angivna"
+
+#: src/shuf.c:353
+#, c-format
+msgid "cannot combine -e and -i options"
+msgstr "det går inte att kombinera flaggorna -e och -i"
+
+#: src/shuf.c:362
+#, c-format
+msgid "extra operand %s\n"
+msgstr "extra operand %s\n"
+
+#: src/sleep.c:47
+#, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Användning: %s ANTAL[ÄNDELSE]...\n"
+" eller: %s FLAGGA\n"
+"Gör paus i ANTAL sekunder. ÄNDELSE kan vara \"s\" för att ange sekunder\n"
+"(standardval), \"m\" för minuter, \"h\" för timmar eller \"d\" för dagar.\n"
+"Till skillnad från de flesta implementationer som kräver att ANTAL är\n"
+"ett heltal, kan ANTAL här vara ett valfritt flyttal. Med två eller\n"
+"flera agument, gör paus så länge som summan av dem anger\n"
+"\n"
+
+#: src/sleep.c:138
+#, c-format
+msgid "invalid time interval %s"
+msgstr "felaktigt tidsintervall: %s"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "kan inte läsa realtidsklockan"
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"Skriv en sorterad sammanfogning av alla FIL(er) till standard ut.\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+"Sorteringsflaggor:\n"
+"\n"
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks ignorera inledande mellanslag\n"
+" -d, --dictionary-order betrakta endast alfanumeriska och blanka "
+"tecken\n"
+" -f, --ignore-case byt gemener mot versaler\n"
+
+#: src/sort.c:326
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort jämför enligt generella numeriska värden\n"
+" -i, --ignore-nonprinting betrakta enbart skrivbara tecken\n"
+" -M, --month-sort jämför (okänd) < \"JAN\" < ... < \"DEC\"\n"
+" -n, --numeric-sort jämför i enlighet strängens numeriska värde\n"
+" -r, --reverse kasta om resultatet av jämförelser\n"
+" -R, --random-sort sortera efter en slumpkontrollsumma av "
+"nycklar\n"
+" --random-source=FIL hämta slumpbytar från FIL (standard /dev/"
+"urandom)\n"
+" -r, --reverse vänd på resultatet av jämförelser\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+"Andra flaggor:\n"
+"\n"
+" -c, --check, --check=diagnose-first kontrollera om indata är sorterad,\n"
+" sortera ej\n"
+" -C, --check=quiet, --check=silent som -c, men rapportera inte en första\n"
+" felaktig rad\n"
+" --compress-program=PROG komprimera temporärfiler med PROG;\n"
+" packa up dem med PROG -d\n"
+" -k, --key=POS1[,POS2] starta nyckel vid POS1, sluta den vid POS2\n"
+" (räknas från 1)\n"
+" -m, --merge slå samman redan sorterade filer, sortera ej\n"
+
+#: src/sort.c:346
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+" -o, --output=FIL skriv resultatet till FIL i stället för standard "
+"ut\n"
+" -s, --stable stabilisera sortering genom att stänga av\n"
+" sista-utvägsjämförelse\n"
+" -S, --buffer-size=STORLEK använd STORLEK för huvudminnesbuffert\n"
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=SEP använd SEP istället för övergång från ej "
+"blanka\n"
+" till blanka\n"
+" -T, --temporary-directory=KAT använd KAT för tillfälliga filer, ej "
+"$TMPDIR\n"
+" eller %s;\n"
+" flera argument anger flera kataloger\n"
+" -u, --unique med -c, kontrollera strikt ordningsföljd;\n"
+" utan -c, skriv ut endast den första av flera "
+"lika\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr " -z, --zero-terminated avsluta rader med byte 0, inte ny rad\n"
+
+#: src/sort.c:363
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"POS är F[.C][FLGR], där F är fältnumret och C teckenpositionen inom\n"
+"fältet, båda börjar på 1. Om vare sig flaggan -t eller -b är aktiv\n"
+"räknas tecken i fältet från början av föregående blanktecken. FLGR är\n"
+"en eller flera enbokstavs ordningsflaggor, vilka ersätter globala\n"
+"ordningsflaggor för den nyckeln. Om ingen nyckel är angiven, använd\n"
+"hela raden som nyckel.\n"
+"\n"
+"STORLEK kan följas av följande multiplikativa ändelser:\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"% 1% av minne, b 1, K 1024 (standard), och så vidare för M, G, T, P, E, Z, "
+"Y.\n"
+"\n"
+"Utan FIL eller om FIL är -, läs standard in.\n"
+"\n"
+"*** VARNING ***\n"
+"Lokalen som är angiven i omgivningen påverkar sorteringsordning.\n"
+"Sätt LC_ALL=C för att få traditionell sorteringsordning som använder\n"
+"de underliggande bytevärdena.\n"
+
+#: src/sort.c:538
+#, c-format
+msgid "waiting for %s [-d]"
+msgstr "väntar på %s [-d]"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr "%s [-d] avlutade oväntat"
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "kan inte skapa temporärfil"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "misslyckades öppna"
+
+#: src/sort.c:758
+msgid "fflush failed"
+msgstr "fflush misslyckades"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "misslyckades stänga"
+
+#: src/sort.c:772
+#, c-format
+msgid "dup2 failed"
+msgstr "dup2 misslyckades"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr "det gick inte att köra %s"
+
+#: src/sort.c:880 src/sort.c:929
+msgid "couldn't create temporary file"
+msgstr "det går inte att skapa temporärfil"
+
+#: src/sort.c:903
+msgid "couldn't open temporary file"
+msgstr "det går inte att öppna temporärfil"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr "det gick inte att köra %s -d"
+
+#: src/sort.c:924
+#, c-format
+msgid "couldn't create process for %s -d"
+msgstr "det gick inte att skapa en process för %s -d"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "misslyckaes skriva"
+
+#: src/sort.c:975
+#, c-format
+msgid "warning: cannot remove: %s"
+msgstr "varning: kan inte ta bort: %s"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "sorteringsstorlek"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "misslyckades ta status"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "misslyckades läsa"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: oordning: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "standard fel"
+
+#: src/sort.c:2562
+#, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: felaktig fältspecifikation %s"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr "flaggorna \"-%s\" är inkompatibla"
+
+#: src/sort.c:2637
+#, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: felaktigt antal i början på %s"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "felaktigt nummer efter \"-\""
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "felaktigt nummer efter \".\""
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "extra tecken i fältspecifikation"
+
+#: src/sort.c:2934
+#, c-format
+msgid "multiple compress programs specified"
+msgstr "multipla komprimeringsprogram angivna"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "felaktigt nummer vid fältstart"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "fältnummer är noll"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "teckenplats är noll"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "felaktigt nummer efter \",\""
+
+#: src/sort.c:3142
+#, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "extra operand %s inte tillåten med -%c"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Användning: %s [FLAGGA] [INFIL [PREFIX]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv ut delar av INFIL med bestämd storlek till PREFIXaa, PREFIXab, ...\n"
+"Standardstorlek är 1000 rader, och standardprefix är \"x\". Utan INFIL,\n"
+"eller när INFIL är -, läs standard in.\n"
+"\n"
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=N använd ändelse av längd N (standard %d)\n"
+" -b, --bytes=ANTAL placera ANTAL byte i varje utfil\n"
+" -C, --line-bytes=ANTAL placera max ANTAL byte rader per utfil\n"
+" -d, --numeric-suffixes använd numeriska suffix istället för alfabetiska\n"
+" -l, --lines=RADER placera RADER rader i varje utfil\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose skriv ett meddelande till standard fel strax före\n"
+" varje fil öppnas\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"STORLEK kan ha en multiplikator som ändelse: b för 512, k för 1k, m för 1M.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "Slut på utfiländelser"
+
+#: src/split.c:211
+#, c-format
+msgid "creating file %s\n"
+msgstr "skapar filen %s\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "kan inte dela på mer än ett sätt"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: felaktig ändelselängd"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: felaktigt antal byte"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: felaktigt antal rader"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "radantalsflagga -%s%c... är för stor"
+
+#: src/split.c:518
+#, c-format
+msgid "invalid number of lines: 0"
+msgstr "felaktigt antal rader: 0"
+
+#: src/stat.c:636
+#, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "varning: okänd sekvens med omvänt snedstreck \"\\%c\""
+
+#: src/stat.c:680
+#, c-format
+msgid "%s: invalid directive"
+msgstr "%s: ogiltigt direktiv"
+
+#: src/stat.c:726
+#, c-format
+msgid "warning: backslash at end of format"
+msgstr "varning: omvänt snedstreck vid slutet av formatet"
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr "kan inte läsa filsysteminformation för %s"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Användning: %s [FLAGGA] FIL...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+"Visa fil- eller filsystemstatus.\n"
+"\n"
+" -L, --dereference följ länkar\n"
+" -f, --file-system visa filsystemstatus istället för filstatus\n"
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+" -c --format=FORMAT använd angivet FORMAT istället för standardformat;\n"
+" skriv ut en nyrad efter varje användning av "
+"FORMAT\n"
+" --printf=FORMAT som --format, men tolka specialkoder med omvänt\n"
+" snedstreck, och skriv inte ut en obligatorisk\n"
+" avslutande nyrad. Om du vill ha en nyrad, ta med\n"
+" \\n i FORMAT.\n"
+" -t, --terse skriv informationen kortfattat\n"
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"\n"
+"De giltiga formatsekvenserna för filer (utan --file-system):\n"
+"\n"
+" %a Åtkomsträttigheter oktalt\n"
+" %A Åtkomsträttigheter i format läsbart för människa\n"
+" %b Antal använda block (se %B)\n"
+" %B Storleken i byte på varje block rapporterat av %b\n"
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+" %d Enhetsnummer decimalt\n"
+" %D Enhetsnummer hexadecimalt\n"
+" %f Tillståndet rått hexadecimalt\n"
+" %F Filtyp\n"
+" %g Gruppid på ägare\n"
+" %G Gruppnamn på ägare\n"
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+" %h Antal hårda länkar\n"
+" %i Inodnummer\n"
+" %n Filnamn\n"
+" %N Citerat filnamn, med dereferens om symbolisk länk\n"
+" %o I/O-blockstorlek\n"
+" %s Total storlek, i byte\n"
+" %t Övre enhetsnummer hexadecimalt\n"
+" %T Undre enhetsnummer hexadecimalt\n"
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+" %u Användarid på ägare\n"
+" %U Användarnamn på ägare\n"
+" %x Senaste åtkomsttidpunkt\n"
+" %X Senaste åtkomsttidpunkt i sekunder sedan Epok\n"
+" %y Senaste modifieringstidpunkt\n"
+" %Y Senaste modifieringstidpunkt i sekunder sedan Epok\n"
+" %z Senaste ändringstidpunkt\n"
+" %Z Senaste ändringstidpunkt i sekunder sedan Epok\n"
+"\n"
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"Giltiga formatsekvenser för filsystem:\n"
+"\n"
+" %a Fria block tillgängliga för icke superanvändare\n"
+" %b Totalt antal datablock i filsystem\n"
+" %c Totalt antal filnoder i filsystem\n"
+" %d Fria filnoder i filsystem\n"
+" %f Fria block i filsystem\n"
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+" %i Filsystem-ID hexadecimalt\n"
+" %l Maxlängd på filnamn\n"
+" %n Filnamn\n"
+" %s Blockstorlek (för snabbare överföringar)\n"
+" %S Grundläggande blockstorlek (för antal block)\n"
+" %t Typ hexadecimalt\n"
+" %T Typ i format läsbart för människa\n"
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Användning: %s [-F ENHETSFIL] [--file=ENHETSFIL] [INSTÄLLNING]...\n"
+" eller: %s [-F ENHETSFIL] [--file=ENHETSFIL] [-a|--all]\n"
+" eller: %s [-F ENHETSFIL] [--file=ENHETSFIL] [-g|--save]\n"
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Skriv ut eller ändra terminalkarakteristik.\n"
+"\n"
+" -a, --all skriv ut alla nuvarande inställningar läsligt\n"
+" -g, --save skriv ut alla nuvarande inställningar i stty-format\n"
+" -F, --file=ENHET öppna och använd angiven ENHET istället för standard "
+"in\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+"\n"
+"Möjligt - före INSTÄLLNING indikerar negation. En * indikerar en\n"
+"icke-POSIX-inställning. Det underliggande systemet definierar vilka\n"
+"inställningar som är tillgängliga.\n"
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"\n"
+"Specialtecken:\n"
+" * dsusp TECKEN TECKEN skickar en stoppsignal så fort indata är slut.\n"
+" eof TECKEN TECKEN skickar ett filslut (avsluta inmatning)\n"
+" eol TECKEN TECKEN avslutar raden\n"
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+" * eol2 TECKEN alternativt TECKEN för radslut\n"
+" erase TECKEN TECKEN raderar det senast skrivna tecknet\n"
+" intr TECKEN TECKEN skickar en avbrottssignal\n"
+" kill TECKEN TECKEN raderar nuvarande rad\n"
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+" * lnext TECKEN TECKEN skriver nästa tecken som ett specialtecken\n"
+" quit TECKEN TECKEN skickar en avslutningssignal\n"
+" * rprnt TECKEN TECKEN ritar om nuvarande rad\n"
+" start TECKEN TECKEN startar utskrift igen efter att ha stoppat den\n"
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+" stop TECKEN TECKEN stoppar utskriften\n"
+" susp TECKEN TECKEN skickar en terminalstoppsignal\n"
+" * swtch TECKEN TECKEN byter till ett annat skal\n"
+" * werase TECKEN TECKEN raderar det senast skrivna ordet\n"
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"\n"
+"Specialinställningar:\n"
+" N sätt in- och utmatninshastighet till N baud\n"
+" * cols N säg till kärnan att terminalen har N kolumner\n"
+" * columns N samma som cols N\n"
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+" ispeed N sätt inmatningshastighet till N\n"
+" * line N använd linjetyp N\n"
+" min N med -icanon, sätt N tecken till minimum för en avslutad "
+"läsning\n"
+" ospeed N sätt utmatningshastighet till N\n"
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+" * rows N säg till kärnan att terminalen har N rader\n"
+" * size skriv ut antalet rader och kolumner enligt kärnan\n"
+" speed skriv ut terminalens hastighet\n"
+" time N med -icanon, sätt timeout för läsning till N tiondels "
+"sekunder\n"
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"\n"
+"Kontrollinställningar:\n"
+" [-]clocal stäng av kontrollsignaler till modem\n"
+" [-]cread tillåt mottagandet av indata\n"
+" * [-]crtscts möjliggör RTS/CTS handskakning\n"
+" csN sätt teckenstorleken till N bitar, N 5-8\n"
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+" [-]cstopb använd två stoppbitar per tecken (en med \"-\")\n"
+" [-]hup skicka en påläggningssignal när sista processen stänger "
+"ttyn\n"
+" [-]hupcl samma som [-]hup\n"
+" [-]parenb generera paritetsbit i utdata och förvänta paritetsbit i "
+"indata\n"
+" [-]parodd ställ in udda paritet (jämn med \"-\")\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"\n"
+"Inställningar för inmatning:\n"
+" [-]brkint avbrott orsakar en avbrottssignal\n"
+" [-]icrnl översätt vagnretur till nyrad\n"
+" [-]ignbrk ignorera avbrottstecken\n"
+" [-]igncr ignorera vagnretur\n"
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+" [-]ignpar ignorera tecken med paritetsfel\n"
+" * [-]imaxbel ljud signal, men töm inte full indatabuffert på grund av\n"
+" ett tecken\n"
+" [-]inlcr översätt nyrad till vagnretur\n"
+" [-]inpck möjliggör paritetskontroll av indata\n"
+" [-]istrip rensa den höga (8:e) biten i ett inmatningstecken\n"
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr " * [-]iutf8 anta inmatningstecken är UTF-8-kodade\n"
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+" * [-]iuclc översätt versaler till gemener\n"
+" * [-]ixany tillåt vilket tecken som helst att starta om utmatning, \n"
+" inte bara starttecken\n"
+" [-]ixoff möjliggör start/stopp-tecken\n"
+" [-]ixon möjliggör XON/XOFF flödeskontroll\n"
+" [-]parmrk markera paritetsfel (med en 255-0 teckensekvens)\n"
+" [-]tandem samma som [-]ixoff\n"
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"\n"
+"Inställningar för utmatning:\n"
+" * bsN fördröjning på backsteg, N är [0-1]\n"
+" * crN fördröjning på vagnretur, N är [0-3]\n"
+" * ffN fördröjning på sidmatning, N är [0-1]\n"
+" * nlN fördröjning på nyrad, N är [0-1]\n"
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+" * [-]ocrnl översätt vagnretur till nyrad\n"
+" * [-]ofdel använd raderingstecken till utfyllnad, istället för "
+"nulltecken\n"
+" * [-]ofill använd utfyllnadstecken istället för tidstagning \n"
+" vid fördröjningar\n"
+" * [-]olcuc översätt gemener till versaler\n"
+" * [-]onlcr översätt nyrad till vagnretur-nyrad\n"
+" * [-]onlret nyrad utför vagnretur\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+" * [-]onocr skriv inte ut vagnretur i första kolumnen\n"
+" [-]opost bearbetar utdata\n"
+" * tabN fördröjning på horisontell tabulator, N är [0-3]\n"
+" * tabs samma som tab0\n"
+" * -tabs samma som tab3\n"
+" * vtN fördröjning på vertikal tabulator, N är [0-1]\n"
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"\n"
+"Lokala inställningar:\n"
+" [-]crterase eka raderingstecken som backsteg-mellanslag-backsteg\n"
+" * crtkill radera hela raden genom att använda inställningarna \n"
+" för echoprt och echoe\n"
+" * -crtkill radera hela raden genom att använda inställningarna\n"
+" för echoctl och echok\n"
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+" * [-]ctlecho eka kontrolltecken med hattnotation (\"^c\")\n"
+" [-]echo eka inmatade tecken\n"
+" * [-]echoctl samma som [-]ctlecho\n"
+" [-]echoe samma som [-]crterase\n"
+" [-]echok eka ett nyrad efter ett dödatecken\n"
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+" * [-]echoke samma som [-]crtkill\n"
+" [-]echonl eka nyrad även om inga andra tecken ekas\n"
+" * [-]echoprt eka raderade tecken baklänges, mellan \"\\\" och \"/\"\n"
+" [-]icanon möjliggör specialtecknen erase, kill, werase och rprnt\n"
+" [-]iexten möjliggör specialtecken som inte är POSIX-tecken\n"
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+" [-]isig möjliggör specialtecken för avbrott, slut och vila\n"
+" [-]noflsh koppla bort rensning efter avbrottsignaler och \n"
+" specialsluttecken\n"
+" * [-]prterase samma som [-]echoprt\n"
+" * [-]tostop stoppa bakgrundsjobb som försöker skriva till terminalen\n"
+" * [-]xcase tillsammans med icanon, används \"\\\" som kontrollsekvens\n"
+" för versaltecken\n"
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+"\n"
+"Kombinationsinställningar:\n"
+" * [-]LCASE samma som [-]lcase\n"
+" cbreak samma som -icanon\n"
+" -cbreak samma som icanon\n"
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+" cooked samma som brkint ignpar istrip icrnl ixon oppst isig "
+"icanon,\n"
+" filsluttecken och radsluttecken till sina standardvärden\n"
+" -cooked samma som raw\n"
+" crt samma som echoe echoctl echoke\n"
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+" dec samma som echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq samma som [-]ixany\n"
+" ek radera- och återställtecken till sina standardvärden\n"
+" evenp samma som parenb -parodd cs7\n"
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+" -evenp samma som -parenb cs8\n"
+" * [-]lcase samma som xcase iuclc olcuc\n"
+" litout samma som -parenb -istrip -opost cs8\n"
+" -litout samma som parenb istrip opost cs7\n"
+" nl samma som -icrnl -onlcr\n"
+" -nl samma som icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+" oddp samma som parenb parodd cs7\n"
+" -oddp samma som -parenb cs8\n"
+" [-]parity samma som [-]evenp\n"
+" pass8 samma som -parenb -istrip cs8\n"
+" -pass8 samma som parenb istrip cs7\n"
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+" raw samma som -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw samma som cooked\n"
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+" sane samma som cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, \n"
+" alla specialtecken till sina standardvärden.\n"
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"Hantera ttylinjen kopplad till standard in. Utan argument skrivs \n"
+"baudhastighet, radtyp och avvikelse från stty sane ut. I inställningarna \n"
+"tolkas TECKEN ordagrant, eller kodat som i ^c, 0x37, 0177 eller 127;\n"
+"specialvärdet ^- eller undef används för att stänga av specialtecken.\n"
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr "endast en enhet får anges"
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+"flaggorna för utförlig och stty-läsbar utmatningsstil är ömsesidigt\n"
+"uteslutande"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "när en utmatningstyp specificeras, kan inte inställningar göras"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: kan inte starta om icke-blockerande läge"
+
+#: src/stty.c:885 src/stty.c:995
+#, c-format
+msgid "invalid argument %s"
+msgstr "felaktigt argument %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, c-format
+msgid "missing argument to %s"
+msgstr "argument saknas till %s"
+
+#: src/stty.c:976
+#, c-format
+msgid "invalid line discipline %s"
+msgstr "felaktig linjedisciplin %s"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: kunde inte utföra alla efterfrågade operationer"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "new_mode: inställning\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: ingen storleksinformation på denna enhet"
+
+#: src/stty.c:1888
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "felaktigt heltalsargument %s"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Lösenord:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: kan inte öppna /dev/tty"
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "kan inte sätta grupper"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "kan inte sätta grupp-id"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "kan inte sätta användar-id"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Användning: %s [FLAGGA]... [-] [ANVÄNDARE [ARG]...]\n"
+
+#: src/su.c:386
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Ändra gällande användar-id och grupp-id till ANVÄNDAREs.\n"
+"\n"
+" -, -l, --login gör skalet till ett inloggningsskal\n"
+" -c, --command=KOMMANDO skicka ett enskilt KOMMANDO till skalet med -"
+"c\n"
+" -f, --fast skicka -f till skalet (för csh eller tcsh)\n"
+" -m, --preserve-environment återställ inte miljövariabler\n"
+" -p samma som -m\n"
+" -s, --shell=SKAL kör SKAL, om /etc/shells tillåter det\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+"\n"
+"Att bara ange - implierar -l. Om ANVÄDNARE inte anges, antas root.\n"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "användaren %s existerar inte"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "felaktigt lösenord"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "använder ett skyddat skal %s"
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "varning: kan inte byta katalog till %s"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Skriv kontrollsumma och antal block för varje FIL.\n"
+"\n"
+" -r överge -s, använd BSD summeringsalgoritm, använd 1 k "
+"block\n"
+" -s, --sysv använd System V:s summeringsalgoritm, använd 512-"
+"byteblock\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+"Tvinga ut ändrade block till disk, uppdatera superblocket.\n"
+"\n"
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "ignorerar alla argument"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+"\n"
+"OBS: ditt skal kan ha sin egen version av %s, som ofta ersätter versionen "
+"som\n"
+"beskrivs här. Se dokumentationen för ditt skal för detaljer om valen det\n"
+"stödjer.\n"
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help visa denna hjälptext och avsluta\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version visa versionsinformation och avsluta\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv varje FIL till standard ut, sista raden först.\n"
+"Utan FIL, eller när FIL är -, läs standard in.\n"
+"\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before sätt in skiljetecken före i stället för efter\n"
+" -r, --regex tolka skiljetecknet som ett reguljärt uttryck\n"
+" -s, --separator=STRÄNG använd STRÄNG som skiljetecken i stället för ny "
+"rad\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, c-format
+msgid "%s: seek failed"
+msgstr "%s: sökning misslyckades"
+
+#: src/tac.c:265
+#, c-format
+msgid "record too large"
+msgstr "för stor post"
+
+#: src/tac.c:459
+#, c-format
+msgid "cannot create temporary file %s"
+msgstr "kan inte skapa temporärfil %s"
+
+#: src/tac.c:466
+#, c-format
+msgid "cannot open %s for writing"
+msgstr "kan inte öppna %s för skrivning"
+
+#: src/tac.c:487 src/tac.c:494
+#, c-format
+msgid "%s: write error"
+msgstr "%s: skrivfel"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "skiljetecken kan inte vara tomt"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Skriv de sista %d raderna från varje FIL till standard ut.\n"
+"Vid fler än en FIL, inled varje med ett huvud med filnamnet.\n"
+"Utan FIL eller om FIL är -, läs standard in.\n"
+"\n"
+
+#: src/tail.c:229
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry fortsätt försök öppna filen även om den inte är\n"
+" åtkomlig när tail startar eller om den blir\n"
+" oåtkomlig senare; användbart när man följer ett\n"
+" namn, d.v.s. med --follow=namn\n"
+" -c, --bytes=N skriv ut de N sista byten; alternativt, använd "
+"+N\n"
+" för att skriva ut byte med början på den N:e i "
+"varje\n"
+" fil\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={namn|filidentifierare}]\n"
+" skriv ut nya rader i takt med att filen växer;\n"
+" -f, --follow och --follow=descriptor är\n"
+" likvärdiga\n"
+" -F samma som --follow=name --retry\n"
+
+#: src/tail.c:244
+#, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=N skriv ut de sista N raderna istället för de "
+"sista\n"
+" %d, eller använd +N för att skriva ut rader med\n"
+" början från den N:e\n"
+" --max-unchanged-stats=N\n"
+" med --follow=name, öppna om FIL som inte har "
+"ändrat\n"
+" storlek efter N (standard %d) iterationer för "
+"att\n"
+" se om den har tagits bort eller ändrat namn\n"
+" (detta är det vanliga fallet för roterade "
+"loggfiler)\n"
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID med -f, avsluta efter att process-id PID dör\n"
+" -q, --quiet, --silent skriv aldrig ut huvuden med filnamn\n"
+" -s, --sleep-interval=S med -f, sov ungefär S sekunder (standard 1,0)\n"
+" mellan iterationer.\n"
+" -v, --verbose skriv alltid ut huvuden med filnamn\n"
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"Om det första tecknet i N (antal byte eller rader) är \"+\", starta\n"
+"utmatning med den N:te posten räknat från början av varje fil. Skriv\n"
+"annars ut de sista N posterna i filen. N kan ha en multiplikator som\n"
+"ändelse: b 512, k 1024, m 1024·1024.\n"
+"\n"
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"Med --follow (-f) följer tail normalt filidentifieraren, vilket\n"
+"betyder att även om filen man gör tail på byter namn, kommer tail att\n"
+"fortsätta följa dess slut. "
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"Detta standardbeteende är inte önskvärt\n"
+"när du verkligen vill följa det faktiska namnet på filen, inte\n"
+"filidentifieraren (t.ex. roterade loggfiler). Använd --follow=name i\n"
+"så fall. Det gör att tail följer den namngivna filen genom att öppna\n"
+"om den med jämna mellanrum för att se om den har tagits bort och\n"
+"skapats om av något annat program.\n"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "stänger %s (fd=%d)"
+
+#: src/tail.c:411
+#, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: kan inte söka till relativ position %s"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s: kan inte söka till slut-relativ position %s"
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr "%s har blivit oåtkomlig"
+
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr "%s har ersatts av en fil som inte kan följas; ger upp detta namn"
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr "%s har blivit åtkomlig"
+
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "%s har dykt upp; följer slutet på en ny fil"
+
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "%s har bytts ut, följer slutet på den nya filen"
+
+#: src/tail.c:1025
+#, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: kan inte ändra icke-blockerande läge"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: filen avhuggen"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "inga fler filer"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr "%s: kan inte följa slutet på denna sorts fil, ger upp med detta namn"
+
+#: src/tail.c:1439
+#, c-format
+msgid "number in %s is too large"
+msgstr "tal i %s är för stort"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr "%s: ogiltigt antal oförändrade status mellan öppningar"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: felaktigt PID"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: ogiltigt antal sekunder"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr "flagga använd i felaktigt sammanhang -- %c"
+
+#: src/tail.c:1566
+#, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "varning: --retry är huvudsakligen användbar när filer följs via namn"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr "varning: PID ignorerad, --pid=PID är användbar bara när man följer"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "varning: --pid=PID stöds inte på detta system"
+
+#: src/tail.c:1667
+#, c-format
+msgid "cannot follow %s by name"
+msgstr "kan inte följa %s vid namn"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr "varning: att följa standar in obegränsat är ineffektivt"
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Kopiera standard in till varje FIL, och även till standard ut.\n"
+"\n"
+" -a, --append lägg till till angivna FILer, skriv inte över\n"
+" -i, --ignore-interrupts ignorera avbrottssignaler\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"Om FIL är -, kopiera igen till standard ut.\n"
+
+#: src/test.c:125
+#, c-format
+msgid "missing argument after %s"
+msgstr "argument saknas efter %s"
+
+#: src/test.c:161
+#, c-format
+msgid "invalid integer %s"
+msgstr "ogiltigt heltal %s"
+
+#: src/test.c:242
+msgid "')' expected"
+msgstr "\")\" förväntades"
+
+#: src/test.c:245
+#, c-format
+msgid "')' expected, found %s"
+msgstr "\")\" förväntades, fann %s"
+
+#: src/test.c:261 src/test.c:606
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: unär operator förväntas"
+
+#: src/test.c:330
+msgid "-nt does not accept -l"
+msgstr "-nt tar inte -l"
+
+#: src/test.c:343
+msgid "-ef does not accept -l"
+msgstr "-ef tar inte -l"
+
+#: src/test.c:359
+msgid "-ot does not accept -l"
+msgstr "-ot accepterar inte -l"
+
+#: src/test.c:368
+msgid "unknown binary operator"
+msgstr "okänd binär operator"
+
+#: src/test.c:634
+#, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: binär operator förväntades"
+
+#: src/test.c:694
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Användning: test UTTRYCK\n"
+" eller: test\n"
+" eller: [ UTTRYCK ]\n"
+" eller: [ ]\n"
+" eller: [ FLAGGA\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"Avsluta med status som bestäms av UTTRYCK.\n"
+"\n"
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"\n"
+"Ett utelämnat UTTRYCK behandlas som falskt. Annars är UTTRYCK sant\n"
+"eller falskt och sätter returvärdet. Det är något av:\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+"\n"
+" ( UTTRYCK ) UTTRYCK är sant\n"
+" ! UTTRYCK UTTRYCK är falskt\n"
+" UTTRYCK1 -a UTTRYCK2 både UTTRYCK1 och UTTRYCK2 är sanna\n"
+" UTTRYCK1 -o UTTRYCK2 något av UTTRYCK1 eler UTTRYCK2 är sant\n"
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"\n"
+" -n STRÄNG längden på STRÄNG är inte noll\n"
+" STRÄNG likvärdigt med -n STRÄNG\n"
+" -z STRÄNG längden på STRÄNG är noll\n"
+" STRÄNG1 = STRÄNG2 strängarna är lika\n"
+" STRÄNG1 != STRÄNG2 strängarna är inte lika\n"
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" HELTAL1 -eq HELTAL2 HELTAL1 är lika med HELTAL2\n"
+" HELTAL1 -ge HELTAL2 HELTAL1 är större än eller lika med HELTAL2\n"
+" HELTAL1 -gt HELTAL2 HELTAL1 är större än HELTAL2\n"
+" HELTAL1 -le HELTAL2 HELTAL1 är mindre än eller lika med HELTAL2\n"
+" HELTAL1 -lt HELTAL2 HELTAL1 är mindre än HELTAL2\n"
+" HELTAL1 -ne HELTAL2 HELTAL1 är inte lika med HELTAL2\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+"\n"
+" FIL1 -ef FIL2 FIL1 och FIL2 har samma enhets- och inodnummer\n"
+" FIL1 -nt FIL2 FIL1 är nyare (ändringstidpunkt) än FIL2\n"
+" FIL1 -ot FIL2 FIL1 är äldre än FIL2\n"
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+"\n"
+" -b FIL FIL finns och är en specialfil för blockåtkomst\n"
+" -c FIL FIL finns och är en specialfil för teckenåtkomst\n"
+" -d FIL FIL finns och är en katalog\n"
+" -e FIL FIL finns\n"
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+" -f FIL FIL finns och är en vanlig fil\n"
+" -g FIL FIL finns och har sätt-grupp-ID-biten satt\n"
+" -G FIL FIL finns och ägs av verksam gruppidetnitet\n"
+" -h FIL FIL finns och är en symbolisk länk (samma som -L)\n"
+" -k FIL FIL finns med fastbiten satt\n"
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+" -L FIL FIL finns och är en symbolisk länk (samma som -h)\n"
+" -O FIL FIL finns coh ägs av verksam användaridentitet\n"
+" -p FIL FIL finns och är ett namngivet rör\n"
+" -r FIL FIL finns och läsning är tillåten\n"
+" -s FIL FIL finns och har större storlek än noll\n"
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+" -S FIL FIL existterar och är ett uttag (socket)\n"
+" -t FI filidentifierare FI är öppnad mot en terminal\n"
+" -u FIL FIL existerar och dess set-user-ID-bit är satt\n"
+" -w FIL FIL existerar och skrivning är tillåten\n"
+" -x FIL FIL existerar och körning (eller sökning) är tillåten\n"
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"Förutom för -h och -L följer alla filrelaterade tester symboliska länkar.\n"
+"Var medveten om att parenteser måste föregås av kontrollsekvens \n"
+"(t.ex. av omvänt snedstreck) för skal. HELTAL kan också vara -l STRÄNG,\n"
+"som har värdet av längden på STRÄNG.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr "test och/eller ["
+
+#: src/test.c:831
+msgid "missing `]'"
+msgstr " \"]\" saknas"
+
+#: src/test.c:846
+#, c-format
+msgid "extra argument %s"
+msgstr "extra argument %s"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "felaktigt datumformat %s"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "skapar %s"
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr "kan inte beröra %s"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "sätter tider på %s"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+"Uppdatera åtkomst- och modifikationstiderna på varje FIL till aktuell tid.\n"
+"\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a ändra bara åtkomsttiden\n"
+" -c --no-create skapa inga filer\n"
+" -d, --date=STRÄNG tolka STRÄNG och använd det istället för aktuell "
+"tid\n"
+" -f (ignorerad)\n"
+" -m ändra bara modifikationstiden\n"
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --reference=FIL använd FILs tider istället för aktuell tid\n"
+" -t STÄMPEL använd [[ÅÅ]ÅÅ]MMDDhhmm[.ss] istället för aktuell "
+"tid\n"
+" --time=ORD sätt den angivna tiden:\n"
+" ORD är access, atime eller use: detsamma som -a\n"
+" ORT är modify eller mtime: detsamma som -m\n"
+
+#: src/touch.c:257
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"Observera att flaggorna -d och -t tar olika tid-datumformat.\n"
+"\n"
+"Om FIL är -, berör standard ut.\n"
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "kan inte ange tider från mer än en källa"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+"varning: \"touch %s\" är föråldrat; använd \"touch -t %04ld%02d%02d%02d%02d.%"
+"02d\""
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Användning: %s [FLAGGA]... MÄNGD1 [MÄNGD2]\n"
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Översätt, pressa ihop och/eller ta bort tecken från standard in, skriv till\n"
+"standard ut.\n"
+"\n"
+" -c, -C, --complement komplementera först MÄNGD1\n"
+" -d, --delete ta bort tecken i MÄNGD1, översätt inte\n"
+" -s, --squeeze-repeats ersätt varje insekvens av upprepade tecken som är\n"
+" uppräknat i MÄNGD1 med en ensam förekomst av "
+"det\n"
+" tecknet\n"
+" -t, --truncate-set1 stympa först MÄNGD1 till längden hos MÄNGD2\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"MÄNGDer anges som en sträng tecken. De flesta representerar sig själva.\n"
+"Följande sekvenser tolkas:\n"
+"\n"
+" \\NNN tecken med det oktala värdet NNN (1 till 3 oktala "
+"siffror)\n"
+" \\\\ omvänt snedstreck\n"
+" \\a ljudsignal\n"
+" \\b baksteg\n"
+" \\f sidmatning\n"
+" \\n nyrad\n"
+" \\r vagnretur\n"
+" \\t horisontell tabulator\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v vertikal tabulator\n"
+" TECK1-TECK2 alla tecken från TECK1 till TECK2 i stigande ordning\n"
+" [TECK*] i MÄNGD2, repetera TECK upp till längden av MÄNGD1\n"
+" [TECK*REP] REP kopior av TECK, REP är oktalt om det startar med 0\n"
+" [:alnum:] alla bokstäver och siffror\n"
+" [:alpha:] alla bokstäver\n"
+" [:blank:] alla horisontella blanktecken\n"
+" [:cntrl:] alla styrtecken\n"
+" [:digit:] alla siffror\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] alla utskrivbara tecken, ej blanka\n"
+" [:lower:] alla gemena bokstäver\n"
+" [:print:] alla skrivbara tecken, inklusive mellanrum\n"
+" [:punct:] alla tecken för interpunktion\n"
+" [:space:] alla horisontella och vertikala blanka\n"
+" [:upper:] alla versala bokstäver\n"
+" [:xdigit:] alla hexidecimala siffror\n"
+" [=TECKEN=] alla tecken som är lika med TECKEN\n"
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"Översättning sker om -d inte ges och både MÄNGD1 och MÄNGD2 finns. -t\n"
+"kan endast användas vid översättning. MÄNGD2 expanderas till längden\n"
+"av MÄNGD1 genom att dess sista tecken upprepas tillräckligt många\n"
+"gånger. "
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"Överflödiga tecken i MÄNGD2 ignoreras. Endast [:lower:] och\n"
+"[:upper:] expanderas garanterat i stigande ordning. Används de i\n"
+"MÄNGD2 vid översättning kan de endast användas parvis för att ange\n"
+"skiftlägesändring. "
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"-s använder MÄNGD1 om det ej är översättning eller\n"
+"borttagning; annars använder sammanpressning MÄNGD2 och sker efter\n"
+"översättning och borttagning.\n"
+
+# Hur översätta escape?
+#: src/tr.c:519
+#, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"varning: den tvetydiga oktala kontrollsekvensen \\%c%c%c tolkas som\n"
+"en 2-byte sekvens \\0%c%c, %c"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "intervallets ändpunkter för \"%s-%s\"är i omvänd ordning"
+
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "ogiltig upprepningsantal %s i konstruktionen [c*n]"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "saknat teckenklassnamn \"[::]\""
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "saknat ekvivalensklasstecken \"[==]\""
+
+#: src/tr.c:937
+#, c-format
+msgid "invalid character class %s"
+msgstr "ogiltig teckenklass %s"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s: likhetsklassoperand får bara bestå av ett tecken"
+
+#: src/tr.c:1275
+#, c-format
+msgid "too many characters in set"
+msgstr "för många tecken i mängd"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "återupprepningssammansättningen [c*] får ej förekomma i sträng1"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "endast en [c*] återupprepningssammansättning kan förekomma i sträng2"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "[=c=]-uttryck får inte förekomma i sträng2 vid översättning"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "när set1 inte stympas får sträng2 ej vara tom"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"vid översättning med kompleterande teckenklasser måste sträng2\n"
+"översätta alla tecken i domänen till ett"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"vid översättning får endast teckenklasserna \"upper\" och \"lower\"\n"
+"finnas i sträng2"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "sammansättningen [c*] får förekomma i sträng2 endast vid översättning"
+
+#: src/tr.c:1731
+msgid "Two strings must be given when translating."
+msgstr "Två strängar måste ges vid översättning"
+
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"Endast en sträng får anges när man tar bort utan återupprepad\n"
+"sammanpressning"
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "[:upper:] och/eller [:lower:] är felaktigt uppställda"
+
+#: src/true.c:42
+#, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Användning: %s [ignorerade kommandoradsargument]\n"
+" eller: %s FLAGGA\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr "Avsluta med en statuskod som indikerar framgång."
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Användning: %s [FLAGGA] [FIL]\n"
+"Skriv en fullständigt ordnad lista konsistent med den partiella ordningen i\n"
+"FIL. \"Utan FIL eller om FIL är -, läs standard in.\n"
+"\n"
+
+#: src/tsort.c:474
+#, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: indata innehåller ett udda antal element"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: indata innehåller en slinga:"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Användning: %s [FLAGGA]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Skriv ut filnamnet på den terminal som är kopplad till standard in.\n"
+"\n"
+" -s, --silent, --quiet skriv inte ut någonting, returnera endast "
+"slutstatus\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "inte en tty"
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Skriv ut viss systeminformation. Om ingen FLAGGA angetts används -s.\n"
+"\n"
+" -a, --all skriv ut all information, i följande ordning,\n"
+" men utelämna -p och -i om okända:\n"
+" -s, --kernel-name skriv ut kärnans namn\n"
+" -n, --nodename skriv ut maskinens nätverksnodnamn\n"
+" -r, --kernel-release skriv ut kärnans utgåva\n"
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v, --kernel-version skriv ut kärnans version\n"
+" -m, --machine skriv ut maskin(hårdvaru)typen\n"
+" -p, --processor skriv ut processortypen eller \"unknown\"\n"
+" -i, --hardware-platform skriv ut hårdvaruplattform eller \"unknown\"\n"
+" -o, --operating-system skriv ut operativsystemet\n"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "kan inte avgöra systemnamn"
+
+#: src/unexpand.c:125
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Konvertera mellanrum i varje FIL till tabulatorer, skriv till standard ut.\n"
+"Utan FIL eller om FIL är -, läs standard in.\n"
+"\n"
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all konvertera alla mellanrum, i stället för bara inledande\n"
+" --first-only konvertera bara inledande mellanrumsekvenser (ersätter -"
+"a)\n"
+" -t, --tabs=N tabulatorstegen är N långa i stället för 8 (aktiverar -"
+"a)\n"
+" -t, --tabs=LISTA använd kommaseparerad LISTA med tabulatorpositioner\n"
+" (aktiverar -a)\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr "tabulatorer är för långt isär"
+
+#: src/unexpand.c:512
+#, c-format
+msgid "tab stop value is too large"
+msgstr "tabulatorsteg är för stort"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Användning: %s [FLAGGA]... [INFIL [UTFIL]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"Ta bort alla utom en av på varandra följande identiska rader från\n"
+"INFIL (eller standard in), skriv till UTFIL (eller standard ut).\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count skriv antalet gånger raden förekom framför raden\n"
+" -d, --repeated skriv endast rader som förekommer flera gånger\n"
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated[=avgränsningsmetod] skriv alla upprepade rader\n"
+" avgränsningsmetod={none(standard),prepend,separate}\n"
+" Avgränsning görs med blanka rader.\n"
+" -f, --skip-fields=N undvik jämförelse av de första N fälten\n"
+" -i, --ignore-case ignorera skiftläge vid jämförelse\n"
+" -s, --skip-chars=N undvik jämförelse av de första N tecknen\n"
+" -u, --unique skriv endast unika rader\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr " -w, --check-chars=N jämför inte mer än N tecken i rader\n"
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"Ett fält är en följd av mellanslag och sedan tecken som ej är mellanslag.\n"
+"Fält hoppas över före tecken.\n"
+
+#: src/uniq.c:350
+#, c-format
+msgid "too many repeated lines"
+msgstr "för många upprepade rader"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "ogiltigt antal fält att hoppa över"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "ogiltigt antal byte att hoppa över"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "ogiltigt antal byte att jämföra"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+"att skriva alla duplicerade rader och antalet upprepningar är meningslöst"
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Användning: %s FIL\n"
+" eller: %s FLAGGA\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"Anropa funktionen unlink för att ta bort angiven FIL.\n"
+"\n"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "kan inte ta bort %s"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "kunde inte avgöra boot-tillfälle"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr " %2d.%02d%s igång "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "am"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "pm"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr " ??.???? igång "
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr "???? dagar ??.??, "
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%ld dag"
+msgstr[1] "%ld dagar"
+
+#: src/uptime.c:147
+#, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%lu användare"
+msgstr[1] "%lu användare"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", medellast: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Användning: %s [FLAGGA]... [ FIL ]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Skriver ut aktuell tid, den tid som systemet varit uppe,\n"
+"antalet användare på systemet och medelvärdet av antalet jobb\n"
+"i körkön under de senaste 1, 5 och 15 minuterna.\n"
+"Om FIL är specifierad, använd %s. %s som FIL är vanligt.\n"
+"\n"
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Skriv ut vilka som är påloggade enligt FIL.\n"
+"Om FIL inte är angiven, använd %s. %s som FIL är vanligt.\n"
+"\n"
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Skriv antal nyrader, ord och byte för varje FIL och en rad med totaler\n"
+"om mer än en FIL angivits. Utan FIL eller om FIL är -, läs standard\n"
+"in.\n"
+" -c, --bytes skriv antalet byte\n"
+" -m, --chars skriv antalet tecken\n"
+" -l, --lines skriv antalet rader\n"
+
+#: src/wc.c:121
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" --files0-from=F läs indata från filer som anges med\n"
+" NULL-terminerade namn i filen F\n"
+" -L, --max-line-length skriv längden på den längsta raden\n"
+" -w, --words skriv antalet ord\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr "när filnamn läses från standard in tillåts inte filnamnet %s"
+
+#: src/who.c:212
+msgid " old "
+msgstr "länge"
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "id="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "term="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "slut="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "klockändring"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "körnivå"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "sist="
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"# användare=%lu\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "NAMN"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "LINJE"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "TID"
+
+# Högst 6 tecken kommer skrivas ut.
+#: src/who.c:551
+msgid "IDLE"
+msgstr "LUGN"
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+# Högst 8 tecken kommer skrivas ut.
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "KOMMENTAR"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "SLUT"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Användning: %s [FLAGGA]... [ FIL | ARG1 ARG2 ]\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" -a, --all samma som -b -d --login -p -r -t -T -u\n"
+" -b, --boot tid för senaste systemuppstart\n"
+" -d, --dead skriv ut döda processer\n"
+" -H, --heading skriv ut rad med kolumnhuvuden\n"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr " -l, --login skriv ut inloggningsprocesser\n"
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+" --lookup försök kvalificera värdnamn med hjälp av DNS\n"
+" -m endast värdnamn och användarnamn associerat med standard "
+"in\n"
+" -p, --process skriv aktiva processer startade av init\n"
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+" -q, --count alla inloggningsnamn och antal inloggade användare\n"
+" -r, --runleve skriv aktuell körnivå\n"
+" -s, --short skriv endast namn, linje och tid (standard)\n"
+" -t, --time skriv alla ändringar av systemklockan\n"
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+" -T, -w, --mesg lägg till användares meddelandestatus som +, - eller ?\n"
+" -u, --users lista inloggade användare\n"
+" --message samma som -T\n"
+" --writeable samma som -T\n"
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"Om FIL inte är angiven, använd %s. %s som FIL är vanligt.\n"
+"Om ARG1 ARG2 är angivna, antas -m: \"är jag\" eller \"mamma gillar\" är "
+"vanligt.\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr "Varning: -i kommer tas bort i en framtida utgåva; använd -u istället"
+
+#: src/whoami.c:51
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Skriv ut användarnamnet som associeras med den aktuella gällande användar-ID:"
+"t.\n"
+"Samma som id -un.\n"
+"\n"
+
+#: src/whoami.c:95
+#, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: kan inte hitta namn för användar-ID %lu\n"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Användning: %s [STRÄNG]...\n"
+" eller: %s FLAGGA\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"Skriv gång på gång en rad med alla specifierade STRÄNG(ar), eller \"y\"\n"
+"\n"
+
+#~ msgid "strip failed"
+#~ msgstr "strip misslyckades"
diff --git a/po/tr.gmo b/po/tr.gmo
new file mode 100644
index 0000000..b3a2f45
--- /dev/null
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
new file mode 100644
index 0000000..cef0bf0
--- /dev/null
+++ b/po/tr.po
@@ -0,0 +1,10708 @@
+# translation of coreutils-5.3.0.tr.po to Turkish
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+# Ali Devin Sezer <Ali_Sezer@brown.edu>, 2002.
+# Nilgün Belma Bugüner <nilgun@superonline.com>, 2001, 2002.
+# Onur Tolga ÅžEHÄ°TOÄžLU <onur@lcsl.metu.edu.tr>, 1998.
+# Deniz Akkus Kanca <deniz@arayan.com>, 2001,2003, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 5.3.0\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2005-03-14 04:17+0200\n"
+"Last-Translator: Deniz Akkus Kanca <deniz@arayan.com>\n"
+"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "%s'in izinleri ayarlanıyor"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "%s'in izinleri ayarlanıyor"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "%s argümanı `%s' için geçersiz"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "%s argümanı `%s' için belirsiz"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "Geçerli argümanlar:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "yazma hatası"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "Bilinmeyen sistem hatası"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "%s durumlanamadı"
+
+#
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "normal boÅŸ dosya"
+
+#
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "normal dosya"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "dizin"
+
+#
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "blok özel dosyası"
+
+#
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "karakter özel dosyası"
+
+#
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "fifo"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "sembolik baÄŸ"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "soket"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "ileti kuyruÄŸu"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "semafor"
+
+#
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "paylaşımlı bellek nesnesi"
+
+#
+#: lib/file-type.c:69
+msgid "typed memory object"
+msgstr "türlenmiş bellek nesnesi"
+
+#
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "garip dosya"
+
+#: lib/gai_strerror.c:44
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "fifo dosyaları desteklenmiyor"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "fifo dosyaları desteklenmiyor"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr ""
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "fifo dosyaları desteklenmiyor"
+
+#: lib/gai_strerror.c:54
+#, fuzzy
+msgid "System error"
+msgstr "yazma hatası"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+#, fuzzy
+msgid "Unknown error"
+msgstr "Bilinmeyen sistem hatası"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s: `%s' seçeneği belirsiz\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s: `--%s' seçeneği argümansız kullanılır\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s: seçenek `%c%s' argümansız kullanılır\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s: `%s' seçeneği bir argümanla kullanılır\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s: `--%s' seçeneği bilinmiyor\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s: `%c%s' seçeneği bilinmiyor\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: kuraldışı seçenek -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: geçersiz seçenek -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: seçenek bir argümanla kullanılır -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s: `-W %s' seçeneği belirsiz\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s: `-W %s' seçeneği argümansız kullanılır\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "blok uzunluÄŸu"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "%s'in eriÅŸim izinleri deÄŸiÅŸtirilemiyor"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "%s dizini oluşturulamıyor"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "bellek tükendi"
+
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr "openat: çalışılan dizini kaydedemedi"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "başlangıç çalışma dizinine geri dönülemedi"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "`"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "'"
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "%s: arama (seek) başarısız"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s: geçersiz düzenli ifade(regular expression): %s"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "geçersiz karakter sınıfı `%s'"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+#, fuzzy
+msgid "Invalid range end"
+msgstr "Geçersiz sayfa aralığı `%s'"
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "bellek tükendi"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s: geçersiz düzenli ifade(regular expression): %s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "düzenli ifade (regular expression) aramasında hata oluştu"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "%s: geçersiz düzenli ifade(regular expression): %s"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "düzenli ifade (regular expression) aramasında hata oluştu"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr "%s üzerinde döngüsel işlem yapmak tehlikelidir"
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr "%s üzerinde döngüsel işlem yapmak tehlikelidir (%s gibi)"
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr "--no-preserver-root seçeneğini kullanarak bu güvenlik tedbirini aşın"
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[eE]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[hH]"
+
+#
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "iconv işlevi kullanılabilir değil"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "iconv iÅŸlevi yok"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "karakter kapsamdışı"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "U+%04X yerel karakter kümesine dönüştürülemiyor"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "U+%04X yerel karakter kümesine dönüştürülemiyor: %s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "kullanıcı geçersiz"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "grup geçersiz"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "kullanıcı geçersiz"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+#, fuzzy
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"Bu, bir serbest yazılımdır; Free Software Foundation tarafından yayınlanan\n"
+"GNU Genel Kamu Lisansı, 2. sürüm (veya sizin seçiminize bağlı olarak) daha "
+"üst \n"
+"sürüm koşulları altında değişiklik yapabilir ve/veya yeniden "
+"dağıtabilirsiniz. \n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "%s tarafından yazıldı.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "%s ve %s tarafından yazıldı.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "%s, %s ve %s tarafından yazıldı.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"%s, %s, %s \n"
+"ve %s tarafından yazıldı.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"%s, %s, %s, %s \n"
+"ve %s tarafından yazıldı.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"%s, %s, %s, %s, \n"
+"%s ve %s tarafından yazıldı.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"%s, %s, %s, %s, \n"
+"%s, %s ve %s tarafından yazıldı.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"%s, %s, %s, \n"
+"%s, %s, %s, \n"
+"%s ve %s tarafından yazıldı.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"%s, %s, %s, \n"
+"%s, %s, %s, \n"
+"%s, %s ve %s tarafından yazıldı.\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"%s, %s, %s, \n"
+"%s, %s, %s, \n"
+"%s, %s, %s ve başkaları tarafından yazıldı.\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "%s argümanı geçersiz"
+
+#
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "dizge karşılaştırması başarısız"
+
+#
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "Problemi devre dışı bırakmak için LC_ALL='C' tanımlayın."
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "Karşılaştırılan dizgeler %s ve %s idi."
+
+#
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "dizge karşılaştırması başarısız"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "`%s' geçerli bir zaman dizgesi değil"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "geçersiz karakter sınıfı `%s'"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s çok büyük"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Daha fazla bilgi için `%s --help' yazın.\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr " --version sürüm bilgisini gösterir ve çıkar\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"DOSYA verilmemiÅŸse veya DOSYA - ise, standart girdi okunur.\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Yazılım hatalarını <%s> adresine,\n"
+"çeviri hatalarını <gnu-tr@belgeler.org> adresine bildirin.\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "okuma hatası"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "geçersiz girdi bayrağı: %s"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "geçersiz sekme boyutu: %s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr "`%s' operandı fazla"
+
+#
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "standart girdi kapatılıyor"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kullanımı: %s İSİM [SONEK]\n"
+" veya: %s SEÇENEK\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"Dizinlerle ilgili kısımlar kaldırılarak İSİM basılır.\n"
+"Belirtilmişse, SONEK de kaldırılır.\n"
+"\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, c-format
+msgid "missing operand"
+msgstr "eksik iÅŸlenen"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "Kullanım: %s [SEÇENEK] [DOSYA]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"DOSYA(ları)yı (veya standart girdiyi) standart çıktıya yazar.\n"
+"\n"
+" -A, --show-all -vET ile aynı\n"
+" -b, --number-nonblank boş olmayan çıktı satırlarını numaralandırır\n"
+" -e -vE ile aynı\n"
+" -E, --show-ends her satırın sonuna bir $ koyar\n"
+" -n, --number tüm çıktı satırlarını numaralandırır\n"
+" -s, --squeeze-blank arka arkaya gelen boş satırları bire indirger\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t -vT ile aynı\n"
+" -T, --show-tabs TAB karakterlerini ^I olarak gösterir\n"
+" -u (yoksayılır)\n"
+" -v, --show-nonprinting LFD ve TAB hariç ^ ve M- nitelemesini kullanır\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+#: src/cat.c:333
+#, fuzzy, c-format
+msgid "cannot do ioctl on %s"
+msgstr "`%s üzerinde ioctl başarısız"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "standart çıktı"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s: girdi dosyası çıktı dosyası ile aynı"
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "geçersiz grup %s"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Kullanım: %s [SEÇENEK]... GRUP DOSYASI\n"
+" veya: %s [SEÇENEK]... --reference=REFDOSYA DOSYA...\n"
+
+#: src/chgrp.c:117
+#, fuzzy
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Her DOSYA'nın grup üyeliğini GRUP olarak değiştirir.\n"
+"--reference ile, her DOSYA'nın grup üyeliğini RDOSYA'nınkine değiştirir.\n"
+"\n"
+" -c, --changes verbose seçeneği gibi fakat yalnızca bir "
+"deÄŸiÅŸiklik\n"
+" olduÄŸu zaman bilgi verir.\n"
+" --dereference her sembolik bağın imlediği dosyayı değiştirir,\n"
+" sembolik bağı değil (öntanımlı).\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference her sembolik bağın kendisini etkiler, bağın "
+"imlediÄŸi\n"
+" dosyayı değil. (yalnızca sembolik bağ sahibiyetini\n"
+" deÄŸiÅŸtirebilen sistemlerde bulunur.\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root `/' için özel işlem yapma (öntanımlı)\n"
+" --preserve-root `/' üzerinde döngüsel işlem yapma\n"
+
+#: src/chgrp.c:134
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet çoğu hata iletisini bastırır.\n"
+" --reference=RDOSYA RDOSYA'nın grup değerini kullanır, GRUP değerini\n"
+" deÄŸil.\n"
+" -R, --recursive dizin ve dosyalar üzerinde çevrimli işlem yapar.\n"
+" -v, --verbose işlenen her dosya için bir durum iletisi gösterir.\n"
+"\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+"Aşağıdaki seçenekler, -R seçeneği var iken hiyerarşilerin nasıl gezildiğini\n"
+"etkiler. Eğer birden fazla seçenek kullanılır ise, ancak sonuncusu etkin\n"
+"olur.\n"
+"\n"
+" -H eğer bir komut satırı seçeneği, bir dizine verilen\n"
+" sembolik baÄŸ ise, o dizini gezer\n"
+" -L bir dizine giden bütün sembolik bağları gezer\n"
+" -P hiç bir sembolik bağı gezmez (öntanımlı)\n"
+"\n"
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr "-R --dereference ile ya -H veya -L kullanılmalıdır"
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, c-format
+msgid "missing operand after %s"
+msgstr "`%s'den sonra eksik iÅŸlenen"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "%s'nın öznitelikleri alınamadı"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "%s'nın yeni öznitelikleri alınıyor"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "ne sembolik baÄŸ %s ne de imlediÄŸi dosya deÄŸiÅŸtirilmedi\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "%s'nin kipi %04lo (%s) olarak deÄŸiÅŸtirildi\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "%s'nın kipi %04lo (%s) olarak değiştirilemedi\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "%s'nin kipi %04lo (%s) olarak korundu\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "%s'e eriÅŸilemedi"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "%s dizini okunamıyor"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "%s'nın erişim izinleri değiştiriliyor"
+
+#: src/chmod.c:286
+#, fuzzy, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "%s'in izinleri ayarlanıyor"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr "fts_read başarısız oldu"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Kullanım: %s [SEÇENEK]... KİP[,KİP]... DOSYA...\n"
+" veya: %s [SEÇENEK]... SEKİZLİK-KİP DOSYA\n"
+" veya: %s [SEÇENEK]... --reference=REFDOSYA DOSYA...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+"Her DOSYA'nın kipini KİP olarak değiştirir.\n"
+"\n"
+" -c, --changes verbose gibi, fakat yalnızca değişiklikleri "
+"bildirir\n"
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root `/' için özel işlem yapma (öntanımlı)\n"
+" --preserve-root `/' üzerinde döngüsel işlem yapma\n"
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+" -f, --silent, --quiet çoğu hata mesajını bastırır\n"
+" -v, --verbose işlenen her dosya için bir durum belirtir\n"
+" --reference=REFDOSYA belirtilen KÄ°P deÄŸerini deÄŸil,\n"
+" REFDOSYA'nın kipini kullanır\n"
+" -R, --recursive Yinelemeli olarak dosya ve dizinleri iÅŸler\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr "kip ve --reference seçenekleri birleştirilemez"
+
+#: src/chmod.c:510
+#, c-format
+msgid "invalid mode: %s"
+msgstr "geçersiz kip: %s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "%s'nin sahipliÄŸi %s'e deÄŸiÅŸtirildi\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "%s'nin grup üyeliği %s'e değiştirildi\n"
+
+#: src/chown-core.c:149
+#, c-format
+msgid "no change to ownership of %s\n"
+msgstr "%s'in sahipliÄŸi deÄŸiÅŸmedi\n"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "%s'nın sahipliği %s olarak değiştirilemedi\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "%s'in grup üyeliği %s olarak değiştirilemedi\n"
+
+#: src/chown-core.c:154
+#, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "%s'nın sahipliği değiştirilemedi\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "%s'nin sahipliÄŸi %s olarak korundu\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "%s'in grubu %s olarak korundu\n"
+
+#: src/chown-core.c:159
+#, c-format
+msgid "ownership of %s retained\n"
+msgstr "%s'nin sahipliÄŸi korundu\n"
+
+#: src/chown-core.c:344
+#, c-format
+msgid "cannot dereference %s"
+msgstr "%s izlenemedi"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "%s'in sahipliÄŸi deÄŸiÅŸtiriliyor"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "%s'in grup üyeliği değiştiriliyor"
+
+#: src/chown.c:93
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"Kullanım: %s [SEÇENEK]... [SAHİP][:[GRUP]] DOSYA...\n"
+" veya: %s [SEÇENEK]... --reference=REFDOSYA DOSYA...\n"
+
+#: src/chown.c:98
+#, fuzzy
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"Her DOSYA'nın sahibi ve/veya grubunu SAHİP ve/veya GRUP olarak değiştirir.\n"
+"--reference ile, her DOSYA'nın sahibini ve grup üyeliğini RDOSYA'nınkine\n"
+"deÄŸiÅŸtirir.\n"
+"\n"
+" -c, --changes verbose seçeneği gibi fakat yalnızca bir "
+"deÄŸiÅŸiklik\n"
+" olduÄŸu zaman bilgi verir.\n"
+" --dereference her sembolik bağın imlediği dosyayı değiştirir,\n"
+" sembolik bağı değil (öntanımlı).\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=ŞİMDİKİ_SAHİP:ŞİMDİKİ_GRUP\n"
+" her dosyanın sahibini ve/veya grubunu eğer şimdiki\n"
+" sahip ve/veya grup burada verilen deÄŸerlere eÅŸ ise\n"
+" deÄŸiÅŸtirir. Bu deÄŸerlerin biri verilmeyebilir, o \n"
+" takdirde, verilmeyen değere eşleme yapılmaz.\n"
+
+#: src/chown.c:122
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet çoğu hata iletisini bastırır.\n"
+" --reference=RDOSYA RDOSYA'nın sahip ve grup değerini kullanır, "
+"belirtilen\n"
+" SAHÄ°P:GRUP deÄŸerlerini deÄŸil\n"
+" -R, --recursive dizin ve dosyalar üzerinde çevrimli işlem yapar.\n"
+" -v, --verbose işlenen her dosya için bir durum iletisi gösterir.\n"
+"\n"
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"Sahip deÄŸeri yok ise sahip deÄŸiÅŸtirilmez. Grup deÄŸeri yok ise \n"
+"deÄŸiÅŸtirilmez, fakat bir sembolik bir SAHÄ°P'ten sonra':' ile iÅŸaret edilmiÅŸ\n"
+"ise kullanıcının grubuna değiştirilir. SAHİP ve GRUP değerleri \n"
+"sembolik olabileceği gibi sayısal değerler de olabilir.\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kullanımı: %s [SEÇENEK] YENİKÖK [KOMUT...]\n"
+" veya: %s SEÇENEK\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"KOMUT'u kök dizin YENİKÖK olarak çalıştırır.\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+"\n"
+"Eğer komut verilmemişse, ``${SHELL} -i''yi çalıştırır (öntanımlı: /bin/sh).\n"
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "kök dizini %s olarak değiştirilemedi"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "kök dizinine geçilemedi"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "%s komutu çalıştırılamadı"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s: dosya fazla uzun"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"Kullanım: %s [DOSYA]...\n"
+" veya: %s [SEÇENEK]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"Her DOSYA'nın CRC sağlama toplamlarını ve bayt sayılarını yazdırır.\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "Kullanım: %s [SEÇENEK]... DOSYA1 DOSYA2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr "Sıralı dosyalar DOSYA1 ve DOSYA2'yi satır satır karşılaştırır.\n"
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+"\n"
+"Seçenek verilmemişse üç sütuna çıktı verir. Birinci sütun yalnızca "
+"DOSYA1'de\n"
+"bulunan satırları, ikinci sütun yalnızca DOSYA2'de bulunan satırları,\n"
+"üçüncü sütun her iki dosyada da bulunan satırları içerir.\n"
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"\n"
+" -1 salt DOSYA1'de yer alan satırları yazmaz\n"
+" -2 salt DOSYA2'de yer alan satırları yazmaz\n"
+" -3 her iki dosyada da yer alan satırları yazmaz\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "%s'nin sahiplik bilgileri korunamadı"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr "%s dosyasına bakılamadı"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "%s'nin yazar bilgileri korunamadı"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "%s okumak için açılamadı"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "%s'nin dosya durumu (fstat) alınamadı"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "kopyalandığı esnada değiştirildiği için %s dosyası atlandı"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "%s silinemedi"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "%s silindi\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "normal dosya %s oluşturulamadı"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "%s okunuyor"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "%s'de lseek yapılamadı"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "%s yazılıyor"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "%s'in zaman damgaları korundu"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "%s kapatılıyor "
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s: %s'ın, %04lo kipi gözardı edilerek, üzerine yazılsın mı?"
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s: %s'ın üzerine yazılsın mı?"
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (yedek: %s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "%s dizini atlanıyor"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "uyarı: %s kaynak dosyası bir defadan çok belirtilmiş"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s ve %s aynı dosya"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "Dizin olmayan %s'un üzerine dizin %s yazılamaz"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "yeni oluşturulmuş %s'un üzerine %s yazılamaz"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "Dizin %s'ın üzerine dizin olmayan bir dosya yazılamaz"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "bir dizin, dizin olmayanın üzerine taşınamaz: %s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "%s'ı yedeklemek kaynağı yok eder; %s taşınmadı"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "%s'ı yedeklemek kaynağı yok eder; %s kopyalanmadı"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "%s yedeklenemedi"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "bir dizin, %s, kendi içine kopyalanamaz, %s"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "Dizine sabit baÄŸ oluÅŸturulmayacak: sabit baÄŸ %s, dizin %s"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "%s sabit bağı %s'e bağlanamadı"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "%s kendi alt dizinine taşınamaz, %s"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "%s %s'e taşınamadı"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr "aygıt arası taşıma başarısız: %s'yı %s'a; hedef silinemedi"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "çevrimli sembolik bağ %s kopyalanamaz"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr "%s: göreceli sembolik bağlar yalnızca mevcut dizinde oluşturulabilir"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "sembolik bağ %s, %s'e bağlanamadı"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "%s bağı oluşturulamadı"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "%s fifosu oluşturulamadı"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "özel dosya %s oluşturulamadı"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "%s sembolik bağı okunamadı"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "%s sembolik bağı oluşturulamadı"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s bilinmeyen dosya türüne sahip"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "%s yedeklemesi geri alınamadı"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (yedeklemeyi geri al)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"Kullanım: %s [SEÇENEK]... [-T] KAYNAK HEDEF\n"
+" veya: %s [SEÇENEK]... KAYNAK... DİZİN\n"
+" veya: %s [SEÇENEK]... -t DİZİN KAYNAK...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"KAYNAK'ı HEDEF'e kopyalar veya birden fazla KAYNAK'ı DİZİN'e kopyalar.\n"
+"\n"
+
+#
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Uzun seçenekler için zorunlu olan argümanlar kısa seçenekler için de "
+"zorunludur.\n"
+
+#: src/cp.c:170
+#, fuzzy
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive -dpR ile aynı\n"
+" --backup[=KONTROL] mevcut olan her hedef dosyanın yedeğini "
+"alır.\n"
+" -b --backup gibi, fakat argüman kabul etmez.\n"
+" --copy-contents çevrimli olduğu zaman özel dosyaların "
+"içeriğini kopyalar\n"
+" -d --no-dereference --preserve=link ile aynı\n"
+
+#: src/cp.c:177
+#, fuzzy
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" --no-dereference sembolik bağları izlemez\n"
+" -f, --force eğer mevcut bir hedef dosya açılamaz ise, "
+"onu\n"
+" siler ve tekrar dener\n"
+" -i, --interactive üzerine yazmadan önce sorar\n"
+" -H komut satırında sembolik bağları izler\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+#, fuzzy
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -l, --link dosyaları kopyalamak yerine sembolik bağ\n"
+" oluÅŸturur.\n"
+" -L, --dereference sembolik bağları hep izler\n"
+" -p --preserve=mode,ownership,timestamps ile "
+"aynı\n"
+" --preserve[=ÖZNİT_LST] belirtilen öznitelikleri korur\n"
+" öntanımlı öznitelikler:\n"
+" mode,ownership,timestamps\n"
+" (kip,sahibi,zaman damgaları)\n"
+" diğer öznitelikler:\n"
+" links,all\n"
+
+#: src/cp.c:196
+#, fuzzy
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=ÖZNT_LİST belirtilen öznitelikleri korumaz\n"
+" --parents kaynak yolunu DÄ°ZÄ°N'in sonuna ekler\n"
+" -P --no-dereference ile aynı\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive yinelemeli kopyalar\n"
+" --remove-destination bütün mevcut hedef dosyaları açmayı "
+"denemeden\n"
+" siler (--force ile karşılaştır)\n"
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --reply={yes,no,query} mevcut bir hedef dosya için sorgulamanın "
+"nasıl\n"
+" yapılacağını ayarlar: \n"
+" yes=evet, no=hayır, query=sor\n"
+" --sparse=ZAMAN seyrek dosyaların oluşumunu kontrol eder\n"
+" --strip-trailing-slashes bütün KAYNAK argümanlarının sonundan "
+"kesmeleri\n"
+" (/) kaldırır\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link kopyalama yerine sembolik baÄŸ oluÅŸturur\n"
+" -S, --suffix=SONEK normal yedekleme soneki yerine SONEK'i\n"
+" kullanır\n"
+" -t, --target-directory=DİZİN bütün KAYNAK argümanlarını DİZİN'e taşır\n"
+" -T, --no-target-directory HEDEF'i normal bir dosya kabul eder\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update yalnızca KAYNAK dosya hedef dosyadan daha "
+"yeni\n"
+" olduğu veya hedef dosya mevcut olmadığı "
+"zaman\n"
+" kopyalar\n"
+" -v, --verbose ne yapıldığını anlatır\n"
+" -x, --one-file-system bu dosya sisteminde kalır\n"
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"Öntanımlı olarak seyrek KAYNAK dosyalar kaba bir yöntemle bulunur \n"
+"ve ilgili HEDEF dosya da seyrek olarak oluÅŸturulur. \n"
+"Bu davranış --sparse=auto seçeneği ile belirtilir. \n"
+"Eğer --sparse=always seçilir ise KAYNAK dosya yeterli \n"
+"uzunlukta sıfır bayt dizisi içerdiği zaman seyrek HEDEF dosya \n"
+"oluÅŸturulur\n"
+"Hiçbir zaman seyrek dosya oluşturmamak için --sparse=never seçeneğini \n"
+"kullanın.\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"Yedekleme soneki eÄŸer --suffix veya SIMPLE_BACKUP_SUFFIX ile belirtilmemiÅŸ "
+"ise\n"
+" '~'dir. Yedekleme kontrol metodu --backup seçeneği ile veya \n"
+"VERSION_CONTROL çevre değişkeninden belirlenebilir. Geçerli değerler:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off hiç yedekleme yapma (--backup kullanılsa bile)\n"
+" numbered, t numaralanmış yedekleme yap\n"
+" existing, nil eğer numaralanmış yedekler var ise numaralanmış, yoksa "
+"basit\n"
+" simple, never her zaman basit yedekleme yap\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"Özel bir durum olarak, cp force ve backup seçenekleri verilmiş ve \n"
+"KAYNAK ve HEDEF deÄŸiÅŸkenleri birbirine eÅŸit olup\n"
+"mevcut, normal bir dosyayı gösteriyorlarsa KAYNAK'ın bir yedeğini alır.\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "%s'in zaman damgaları korunamadı"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "%s'in izinleri korunamadı"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "dizin %s oluşturulamadı"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s var ama bir dizin deÄŸil"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "%s'e eriÅŸiliyor"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, c-format
+msgid "missing file operand"
+msgstr "dosya iÅŸleyeni eksik"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, c-format
+msgid "missing destination file operand after %s"
+msgstr "%s sonrasında hedef dosya işleyeni eksik"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr "--target-directory (-t) ve --no-target-directory (-T) birleÅŸtirilemez"
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, c-format
+msgid "target %s is not a directory"
+msgstr "hedef %s bir dizin deÄŸil"
+
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "dosya yolları korunurken hedef bir dizin olmalı"
+
+#: src/cp.c:967 src/mv.c:384
+#, fuzzy, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr "--allow-missing seçeneği kaldırılacaktır; yerine --retry kullanın"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, c-format
+msgid "multiple target directories specified"
+msgstr "birden fazla hedef dizin belirtilmiÅŸ"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "hem sabit hem sembolik baÄŸ oluÅŸturulamaz"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "yedekleme türü"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "girdi yok oldu"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s: satır sayısı kapsam dışı"
+
+#: src/csplit.c:709
+#, fuzzy, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s: `%s': satır sayısı kapsam dışı"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr " %s tekrarda\n"
+
+#: src/csplit.c:755
+#, fuzzy, c-format
+msgid "%s: %s: match not found"
+msgstr "%s: `%s': eşleşme bulunamadı"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "düzenli ifade (regular expression) aramasında hata oluştu"
+
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "`%s' için yazım hatası"
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s: ayraçtan sonra tamsayı olmalı"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s: tekrar sayımında `}' gerekli"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}: `{' ve `}' arasına tamsayı yazılmalı"
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s: kapatan ayraç `%c' eksik"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s: geçersiz düzenli ifade(regular expression): %s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s: geçersiz kalıp"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s: satır sayısı 0'dan büyük olmalı"
+
+#: src/csplit.c:1172
+#, fuzzy, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "satır numarası `%s' bir önceki satır numarası %s den daha küçük"
+
+#: src/csplit.c:1178
+#, fuzzy, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "uyarı: satır numarası `%s' bir önceki satır numarası ile aynı"
+
+#: src/csplit.c:1231
+#, c-format
+msgid "invalid format width"
+msgstr "geçersiz biçem genişliği"
+
+#: src/csplit.c:1252
+#, c-format
+msgid "invalid format precision"
+msgstr "geçersiz biçem kesinliği"
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "sonekte dönüşüm belirleyicisi eksik"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "sonekte geçersiz dönüşüm belirleyicisi: %c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "sonekte geçersiz dönüşüm belirleyicisi: \\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "sonekte gereğinden fazla %% dönüşüm belirleyicisi var"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "sonekte %% dönüşüm belirleyicisi eksik"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: geçersiz sayı"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "Kullanım: %s [SEÇENEK]... DOSYA KALIP...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"KALIP(lar)la ayrılmış DOSYA parçalarını `xx01', `xx02', ... isimli "
+"dosyalara,\n"
+"her parçanın bayt sayısını standart çıktıya yazar.\n"
+"\n"
+
+#: src/csplit.c:1486
+#, fuzzy, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=BİÇEM %02d yerine sprintf BİÇEM'ini kullanır\n"
+" -f, --prefix=ÖNEK `xx' yerine ÖNEKi kullanır\n"
+" -k, --keep-files hata olduğunda çıktı dosyalarını silmez\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=BASAMAK BASAMAK sayısında basamak kullanır (-n \n"
+" kullanılmadıkça 2 ) \n"
+" -s, --quiet, --silent çıktı dosyalarının bayt büyüklüklerini vermez\n"
+" -z, --elide-empty-files boş çıktı dosyalarını siler\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"Eğer DOSYA - olarak verilmişse, standart girdiyi okur. Her KALIP, aşağıdaki\n"
+"seçeneklerden olabilir:\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" SAYI verilen SAYI satırına kadar (SAYI satırı hariç) "
+"kopyalar\n"
+" /DÜZİF/[GÖRELİ] kalıba uyan satıra kadar (uyan satır hariç) kopyalar\n"
+" (DÜZİF = düzenli ifade(regular expression)) \n"
+" %DÜZİF%[GÖRELİ] uyan satıra kadar (uyan satır hariç) atlar\n"
+" {SAYI} bir önceki kalıbı SAYI kere tekrar eder\n"
+" {*} bir önceki kalıbı mümkün olduğu kadar tekrar eder\n"
+"\n"
+"Bir satır GÖRELİ konumu, `+' veya `-' ve ardından bir pozitif sayıdan "
+"oluÅŸur.\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "Kullanım: %s [SEÇENEK]... [DOSYA]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+"Her DOSYA'daki satırların seçilen bölümlerini standart çıktıya yazdırır.\n"
+"\n"
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=LİSTE sadece bu baytları gösterir\n"
+" -c, --characters=LİSTE sadece bu karakterleri gösterir\n"
+" -d, --delimiter=AYRAÇ Alan ayracı olarak TAB yerine AYRAÇ'ı kullanır\n"
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=LİSTE sadece bu alanları gösterir; ayrıca, eğer -s\n"
+" seçeneği belirtilmemişse, içinde ayraç olmayan "
+"tüm\n"
+" satırları yazdırır.\n"
+" -n (yoksayılır)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+" --complement seçili bayt, karakter veya alan kümelerini tümler\n"
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited içinde ayraç olmayan alanları yazdırmaz\n"
+" --output-delimeter=DÄ°ZGE\n"
+" çıktı ayracı olarak DİZGE'yi kullanır \n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+#, fuzzy
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"-f -b ve -c den yalnız biri kullanılabilir. Her LİSTE bir aralık, veya \n"
+"virgüllerle ayrılmış birden fazla aralıktan oluşmalıdır. Seçilen girdi\n"
+"okunduğu sırada yazılır ve yalnızca bir defa yazılır. Her aralık\n"
+"aşağıdakilerden biri olmalıdır:\n"
+"\n"
+" N birden başlanarak sayıldığında N. bayt, karakter veya alan\n"
+" N- N. bayt, karakter, veya alandan satırın sonuna kadar\n"
+" N-M N ile M (dahil) arasında olan bayt, karakter veya alanlar\n"
+" -M 1 ile M (dahil) arasında olan bayt, karakter veya alanlar\n"
+"\n"
+"DOSYA belirtilmediÄŸinde veya - olarak verildiÄŸinde standart girdiden okur.\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "geçersiz bayt veya alan listesi"
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr "bayt görecesi %s çok büyük"
+
+#: src/cut.c:472
+#, c-format
+msgid "field number %s is too large"
+msgstr "alan numarası %s çok büyük"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "sadece bir liste türü belirtilebilir"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "ayraç tek karakter olmalıdır"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "bayt, karakter ya da alan listesi belirtilmelidir"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "sadece alanlar üzerinde işlem yaparken bir ayraç belirtilebilir"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+"ayrılmamış alanları atlamak sadece alanlar üzerinde işlem\n"
+"\tyapılırken anlamlı"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "alan listesi eksik"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "konum listesi eksik"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"Kullanımı: %s [SEÇENEK]... [+BİÇEM]\n"
+" veya: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+
+#: src/date.c:137
+#, fuzzy
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+"Verilen BİÇEMde zamanı gösterir, ya da sistem zamanını değiştirir.\n"
+"\n"
+" -d, --date=DİZGE DIZGE ile tanımlanan zamanı gösterir, şimdiki "
+"zamanı\n"
+" deÄŸil\n"
+" -f, --file=DOSYA DOSYAnın her satırı için --date uygulanır\n"
+" --iso-8601[=BİRİM] ISO-8601 uyumlu tarih/zaman dizgesi gösterir.\n"
+" BİRİM=`date' sadece tarihi (öntanımlı),\n"
+" `hours', `minutes', `seconds' veya `ns' ile tarih "
+"ve\n"
+" zaman 'saat', 'dakika', 'saniye' veya nanosaniye\n"
+" hassasiyetinde gösterilir.\n"
+
+#: src/date.c:143
+#, fuzzy
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+" -r, --reference=DOSYA DOSYAnın son değiştirildiği zamanı gösterir\n"
+" -R, --rfc-822 RFC-2822 uyumlu tarih ve zaman gösterir\n"
+" -s, --set=DİZGE sistem zamanını DİZGE ile belirtilen zamana "
+"ayarlar\n"
+" -u, --utc, --universal zamanı Greenwich saatiyle gösterir ya da "
+"deÄŸiÅŸtirir\n"
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+#, fuzzy
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+"\n"
+"BİÇEM çıktıyı kontrol eder. İkinci biçem için tek geçerli seçenek\n"
+"Greenwich saatini belirtir. Bilinen biçemler:\n"
+"\n"
+" %% sabit %\n"
+" %a yerelin kısaltılmış gün adı (Paz..Cmt)\n"
+
+#: src/date.c:167
+#, fuzzy
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+" %A yerelin uzun gün adı, değişken uzunluk (Pazar..Cumartesi)\n"
+" %b yerelin kısaltılmış ay adı (Oca..Ara)\n"
+" %B yerelin uzun ay adı, değişken uzunluk (Ocak..Aralık)\n"
+" %c yerelin tarih ve zamanı (Cmt Kas 04 12:02:33 EEST 1989)\n"
+
+#: src/date.c:173
+#, fuzzy
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+" %C yüzyıl (yıl yüze bölünüp tamsayıya budanır) [00-99]\n"
+" %d ayın günü (01..31)\n"
+" %D tarih (aa/gg/yy)\n"
+" %e boşlukla yastıklanmış ayın günü ( 1..31)\n"
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+" %h %b ile aynı\n"
+" %H saat (00..23)\n"
+" %I saat (01..12)\n"
+" %j yılın günü (001..366)\n"
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+" %k saat ( 0..23)\n"
+" %l saat ( 1..12)\n"
+" %m ay (01..12)\n"
+" %M dakika (00..59)\n"
+
+#: src/date.c:196
+#, fuzzy
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+" %n satırsonu karakteri\n"
+" %N nanosaniye (000000000..999999999)\n"
+" %p büyük harfli yerel ÖÖ/öS belirteci\n"
+" %P küçük harfli yerel öö/ös belirteci\n"
+" %r 12 saatlik zaman (ss:dd:SS [ÖÖ]S])\n"
+" %R 24 saatlik zaman (ss:dd)\n"
+" %s `00:00:00 1970-01-01 UTC' saatinden beri saniye sayısı (bir GNU "
+"eklentisi)\n"
+
+#
+#: src/date.c:205
+#, fuzzy
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+" %S saniye (00..60); 60, fazla bir saniyeyi belirtebilmek için "
+"gereklidir\n"
+" %t yatay sekme\n"
+" %T 24 saatlik zaman (ss:dd:SS)\n"
+" %u haftanın günü (1..7); 1, pazartesiye tekabül eder\n"
+
+#: src/date.c:211
+#, fuzzy
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+" %U yılın haftası, pazar günü haftanın ilk günü kabul edilir (00..53)\n"
+" %V yılın haftası, pazartesi günü haftanın ilk günü kabul edilir "
+"(01..53)\n"
+" %w haftanın günü (0..6); 0, pazar gününe tekabül eder\n"
+" %W yılın haftası, pazartesi günü haftanın ilk günü kabul edilir "
+"(00..53)\n"
+
+#: src/date.c:217
+#, fuzzy
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+" %x yerelin tarih betimlemesi (gg/aa/yy)\n"
+" %X yerelin zaman betimlemesi (%H:%M:%S)\n"
+" %y yılın son iki basamağı (00..99)\n"
+" %Y yıl (1970...)\n"
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "standart girdi"
+
+#: src/date.c:297 src/date.c:517
+#, fuzzy, c-format
+msgid "invalid date %s"
+msgstr "`%s' geçerli bir zaman dizgesi değil"
+
+#: src/date.c:408 src/date.c:442
+#, fuzzy, c-format
+msgid "multiple output formats specified"
+msgstr "birden fazla çıktı dosyası belirtilmiş"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "tarih belirten bu seçenekler birlikte kullanılamaz"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr "zamanı ayarlamak ve göstermek için bu seçenekler birlikte kullanılamaz"
+
+#: src/date.c:448
+#, fuzzy, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+"`%s' argümanı bir `+' ile başlamalı;\n"
+"Zamanı belirtmek için bir seçenek kullanırken, seçenek olmayan\n"
+"her argüman `+' ile başlayan bir biçem dizgesi olmalıdır."
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "tarih ayarlanamadı"
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "%s zamanı aralık dışı"
+
+#: src/dd.c:404
+#, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kullanımı: %s [İŞLEYEN]...\n"
+" veya: %s SEÇENEK\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"Seçeneklere göre biçemleme ve dönüştürme yaparak bir dosya kopyalar.\n"
+"\n"
+" bs=BAYT ibs=BAYT ve obs=BAYT anlamına gelir \n"
+" cbs=BYTES bir seferde BAYT dönüştürür\n"
+" conv=ANAHTAR_KELİMELER dosyayı virgülle ayrılmış\n"
+" anahtar kelime listesine uygun olarak dönüştürür\n"
+" count=BLOK yalnızca BLOK sayıda girdi bloğu kopyalar\n"
+" ibs=BAYT bir seferde BAYT bayt okur\n"
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=DOSYA standart girdi yerine DOSYA'dan okur\n"
+" iflag=BAYRAK virgülle ayrılmış sembol listesine uygun olarak okur\n"
+" obs=BAYT bir seferde BAYT bayt yazdırır\n"
+" of=DOSYA standart çıktı yerine DOSYA'ya yazdırır\n"
+" oflag=BAYRAK virgülle ayrılmış sembol listesine uygun olarak yazdırır\n"
+" seek=BLOK çıktının başında obs boyunda BLOK sayısında blok atlar\n"
+" skip=BLOK girdinin başında ibs boyunda BLOK sayısında blok atlar\n"
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"BLOK ve BAYTlar aşağıdaki çarpan sonekleri ile bitebilirler:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, ve T, P, E, Z, Y. için diğerleri\n"
+"\n"
+"Her CONV sembolü:\n"
+"\n"
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii EBCDIC'den ASCII'ye\n"
+" ebcdic ASCII'den EBCDIC'ye\n"
+" ibm ASCII'den alternatifli EBCDIC'ye\n"
+" block satırsonu karakteri ile biten kayıtları cbs boyutuna getirmek\n"
+" için boşlukla doldurur\n"
+" unblock cbs boyutundaki kayıtlarda sonda yer alan boşlukları yenisatır \n"
+" ile deÄŸiÅŸtirir\n"
+" lcase büyük harfleri küçük harfe dönüştürür\n"
+
+#: src/dd.c:445
+#, fuzzy
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+" nocreat çıktı dosyasını oluşturmaz\n"
+" excl çıktı dosyası var ise başarısız olur\n"
+" notrunc çıktı dosyasını budamaz\n"
+" ucase küçük harfleri büyük harfe dönüştürür\n"
+" swab her girdi bayt çiftini takas eder\n"
+" noerror okuma hatalarından sonra da devam eder\n"
+" sync her girdi bloÄŸunu NUL karakterle doldurarak ibs boyutuna "
+"getirir\n"
+" block veya unblock seçenekleri ile kullanıldığı zaman NUL "
+"yerine\n"
+" boÅŸlukla doldurur\n"
+" fdatasync bitirmeden önce çıktı dosya verisini fiziken yazdırır\n"
+" fsync fdatasync gibi fakat ek olarak meta veriyi de yazdırır\n"
+
+#: src/dd.c:452
+#, fuzzy
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+" nocreat çıktı dosyasını oluşturmaz\n"
+" excl çıktı dosyası var ise başarısız olur\n"
+" notrunc çıktı dosyasını budamaz\n"
+" ucase küçük harfleri büyük harfe dönüştürür\n"
+" swab her girdi bayt çiftini takas eder\n"
+" noerror okuma hatalarından sonra da devam eder\n"
+" sync her girdi bloÄŸunu NUL karakterle doldurarak ibs boyutuna "
+"getirir\n"
+" block veya unblock seçenekleri ile kullanıldığı zaman NUL "
+"yerine\n"
+" boÅŸlukla doldurur\n"
+" fdatasync bitirmeden önce çıktı dosya verisini fiziken yazdırır\n"
+" fsync fdatasync gibi fakat ek olarak meta veriyi de yazdırır\n"
+
+#: src/dd.c:459
+#, fuzzy
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+"\n"
+"Her BAYRAK sembolü:\n"
+"\n"
+" append ekleme kipi (yalnız çıktı için geçerli)\n"
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr " direct veri için direkt I/O kullanır\n"
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr " direct veri için direkt I/O kullanır\n"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr " dsync veri için senkron I/O kullanır\n"
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr " sync önceki gibi fakat meta veri için de geçerli\n"
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr " nonblock bloklamayan I/O kullanır\n"
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+" noctty dosyadan kontrol eden terminali ayarlamaz\n"
+" terminal from file\n"
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr " nofollow sembolik bağları izlemez\n"
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+#, fuzzy
+msgid " binary use binary I/O for data\n"
+msgstr " direct veri için direkt I/O kullanır\n"
+
+#: src/dd.c:487
+#, fuzzy
+msgid " text use text I/O for data\n"
+msgstr " direct veri için direkt I/O kullanır\n"
+
+#: src/dd.c:491
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+"\n"
+"Çalışan bir `dd' sürecine SIGUSR1 sinyali göndermek, sürecin I/O\n"
+" istatistiklerini standart hataya yazdırmasını ve kopyalamaya\n"
+"devam etmesini saÄŸlar.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -USR1 $pid; sleep 1; kill $pid\n"
+" 18335302+0 kayıt girdi\n"
+" 18335302+0 kayıt çıktı\n"
+" 9387674624 bayt (9.4 GB) kopyalandı, 34.6279 saniye, 271 MB/s\n"
+"\n"
+"Seçenekler:\n"
+"\n"
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "budanmış kayıt"
+msgstr[1] "budanmış kayıt"
+
+#: src/dd.c:565
+#, fuzzy, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] "%s bayt (%s) kopyalandı"
+msgstr[1] "%s bayt (%s) kopyalandı"
+
+#: src/dd.c:583
+#, fuzzy
+msgid "Infinity B"
+msgstr "Sonsuz"
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, fuzzy, c-format
+msgid ", %g s, %s/s\n"
+msgstr ", %g saniye, %s/s\n"
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "girdi dosyası %s kapatılıyor"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "çıktı dosyası %s kapatılıyor"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "%s'e yazılıyor"
+
+#: src/dd.c:886
+#, c-format
+msgid "unrecognized operand %s"
+msgstr "geçersiz işleyen %s"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "geçersiz dönüşüm: %s"
+
+#: src/dd.c:900
+#, c-format
+msgid "invalid input flag: %s"
+msgstr "geçersiz girdi bayrağı: %s"
+
+#: src/dd.c:903
+#, c-format
+msgid "invalid output flag: %s"
+msgstr "geçersiz çıktı bayrağı: %s"
+
+#: src/dd.c:906
+#, c-format
+msgid "invalid status flag: %s"
+msgstr "geçersiz durum bayrağı: %s"
+
+#: src/dd.c:942
+#, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "geçersiz işleyen %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "geçersiz sayı %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr "{ascii, ebcdic, ibm} deÄŸerlerinin herhangi ikisi birleÅŸtirilemez"
+
+#
+#: src/dd.c:973
+#, c-format
+msgid "cannot combine block and unblock"
+msgstr "`block' ve `unblock' seçenekleri aynı anda kullanılamaz"
+
+#: src/dd.c:975
+#, c-format
+msgid "cannot combine lcase and ucase"
+msgstr ""
+"`lcase' (küçük harf) ve `ucase' (büyük harf) seçenekleri aynı anda "
+"kullanılamaz"
+
+#: src/dd.c:977
+#, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "`excl' ve `nocreat' seçenekleri birleştirilemez"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"uyarı: mt_type=0x%2$0lx, %1$s dosyası için lseek çekirdek hatasına "
+"alternatifler\n"
+" kullanılıyor -- tür listesi için <sys/mtio.h>'e bakın"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, c-format
+msgid "%s: cannot seek"
+msgstr "%s: aranamadı"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr "%s dosya okunurken görece taşması"
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "uyarı: başarısız okumadan sonra garip dosya atlaması"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr "çekirdek hatası bertaraf edilemedi"
+
+#: src/dd.c:1376
+#, c-format
+msgid "setting flags for %s"
+msgstr "%s için seçenekler belirtiliyor"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr "%s için fdatasync başarısız"
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr "%s için fsync başarısız"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "%s açılıyor"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, fuzzy, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "çıktı dosyasında %s bayt ileriye gidildi %s"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "Dosyasistemi Türü"
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "Dosyasistemi "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr "Dosyaindeksi Dolu BoÅŸ Kull%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Boy Dolu BoÅŸ Kull%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " Boy Dolu BoÅŸ Kull%%"
+
+#: src/df.c:165
+#, fuzzy, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %4s-blok Dolu BoÅŸ Kapasite"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " %4s-blok Dolu BoÅŸ Kull%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr "Bağlanılan yer\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "çalışılan dizin alınamadı"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "%s dizinine geçilemedi"
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "şimdiki dizin durumlanamadı (şimdi %s)"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"Üzerinde DOSYA'ların bulunduğu dosyasistemi hakkında bilgi gösterir,\n"
+"veya öntanımlı olarak bütün dosyasistemleri hakkında bilgi gösterir.\n"
+"\n"
+
+#: src/df.c:749
+#, fuzzy
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all 0 bloÄŸa sahip dosyasistemlerini de dahil eder.\n"
+" -b --block-size=BOY BOY baytlık bloklar kullanır\n"
+" -h, --human-readable boyutları insan okuyabilir biçemde gösterir\n"
+" (örn., 1K 234M 2G)\n"
+" -H, --si yukarıdaki gibi fakat 1000'in katlarını kullanır,\n"
+" 1024'ün değil.\n"
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes blok kullanımı yerine idüğüm bilgilerini gösterir\n"
+" -k, --block-size=1024 gibi\n"
+" -l, --local listelemeyi yerel dosyasistemleri ile sınırlar\n"
+" --no-sync (öntanımlı) kullanım bilgisini almadan önce sync\n"
+" yapmaz\n"
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability POSIX çıktı biçemini kullanır\n"
+" --sync kullanım bilgisini almadan önce sync yapar\n"
+" -t, --type=TÜR bilgi göstermeyi TÜR türünde dosyasistemleri ile\n"
+" sınırlar\n"
+" -T, --print-type dosyasistemi türünü gösterir\n"
+" -x, --exclude-type=TÜR bilgi göstermeyi TÜR türünde olmayan\n"
+" dosyasistemleri ile sınırlar\n"
+" -v (yoksayılır)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"BOY aşağıdakilerin biri (veya aşağıdakilerin biri ile sonlanan bir tamsayı)\n"
+"olabilir:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, ve G, T, P, E, Z, Y için "
+"diÄŸerleri.\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, fuzzy, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr "--allow-missing seçeneği kaldırılacaktır; yerine --retry kullanın"
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "dosyasistem türü %s hem seçili hem dışarlanmış"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "Uyarı: "
+
+#: src/df.c:943
+#, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%s bağlanmış dosyasistemleri tablosu okunamadı"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "Kullanım: %s [SEÇENEK]... [DOSYA]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"LS_COLORS çevre değişkenini değiştirmek için çıktı komutları.\n"
+"\n"
+"Çıktı formatını belirler:\n"
+" -b, --sh, --bourne-shell LS_COLORS'u belirlemek için Bourne kabuk "
+"komutları\n"
+" çıktılar\n"
+" -c, --csh, --c-shell LS_COLORS'u belirlemek için C kabuk komutları\n"
+" çıktılar\n"
+" -p, --print-database öntanımlıları çıktılar\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"Eğer DOSYA belirtilmiş ise, hangi dosya türü ve uzantılar için hangi "
+"renklerin\n"
+"kullanılacağı dosyadan okunur. Eğer DOSYA belirtilmemiş ise önceden "
+"derlenmiÅŸ\n"
+"bir veritabanı kullanılır. Bu dosyaların biçemi için, \n"
+"'dircolors --print-database' komutunu çalıştırın.\n"
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s: %lu geçersiz satır; ikinci dizgecik yok"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s: %lu: tanınmayan anahtar kelime %s"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<içsel>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"dircolors çıktısının hem içsel veritabanına, hem de bir kabuk sentaksına\n"
+"göre olması çelişkili"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr "Dosya iÅŸleyenleri --print-database (-p) ile birleÅŸtirilemez"
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "SHELL çevre değişkeni yok ve kabuk türü seçeneği verilmemiş"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kullanımı: %s İSİM\n"
+" veya: %s SEÇENEK\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"İSİM'min sonundaki / kaldırılarak yazdırılır; eğer İSİM içinde herhangi\n"
+"bir / içermiyorsa, `.' basılır (içinde bulunulan dizin anlamında).\n"
+"\n"
+" --help bu iletiyi gösterir ve çıkar\n"
+" --version sürüm bilgilerini gösterir ve çıkar\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#: src/du.c:279 src/wc.c:108
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"Kullanım: %s [SEÇENEK]... DOSYA\n"
+" veya: %s [SEÇENEK]... --files0-from=F\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"Her DOSYA'nın disk kullanımını özetler, dizinler için çevrimli çalışır.\n"
+"\n"
+
+#
+#: src/du.c:290
+#, fuzzy
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+" -a, --all sayıları bütün dosyalar için yazar, yalnız dizinler\n"
+" için değil\n"
+" --apparent-size dosya boylarının görünen boylarını yazar, diskte\n"
+" kapladığı alanı değil. Görünen boy genelde daha \n"
+" küçüktür, fakat `seyrek' dosyalarda boşluklar, iç\n"
+" parçalanmalar, endirekt bloklar gibi şeyler "
+"yüzünden\n"
+" daha büyük olabilir.\n"
+" -B, --block-size=BOY BOY boyunda bloklar kullanır\n"
+" -b, --bytes boyları bayt cinsinden yazar\n"
+" -c, --total toplam hesaplar\n"
+" -D, --dereference-args sembolik bağ olduğu zaman DOSYA'ları takip eder\n"
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+#, fuzzy
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+" --files0-from=F F dosyasında isimleri belirtilen, sonu NUL ile "
+"biten\n"
+" dosyaların disk kullanımı hakkında bilgi verir\n"
+" -H --si gibi, fakat yakında --dereference-args (-D) "
+"ile\n"
+" aynı hale geleceğine dair uyarı verir\n"
+" -h, --human-readable boyutları insan okuyabilir biçemde gösterir\n"
+" (örn., 1K 234M 2G)\n"
+" --si -h gibi fakat 1000'in katlarını kullanır, 1024'ün\n"
+" deÄŸil.\n"
+" -k --block-size=1K gibi\n"
+" -l, --count-links Eğer sabit bağ var ise, boyları toplama tekrar alır\n"
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference bütün sembolik bağları takip eder\n"
+" -P, --no-dereference sembolik bağları takip etmez (öntanımlı)\n"
+" -0, --null her çıktı satırını yenisatır yerine 0 bayt \n"
+" ile sonlandırır\n"
+" -S, --separate-dirs altdizinlerin boyutunu dahil etmez\n"
+" -s, --summarize her argüman için yalnızca toplamı gösterir\n"
+
+#: src/du.c:323
+#, fuzzy
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system baÅŸka dosyasistemlerinde olan dizinleri atlar\n"
+" -X DOSYA, --exclude-from=DOSYA DOSYA'da bulunan kalıplara uyan dosyaları\n"
+" işlemden hariç tutar.\n"
+" --exclude=KAL KAL kalıbına uyan dosyaları işlemden hariç tutar.\n"
+" --max-depth=N bir dizin için toplamı (veya dosya için, --all "
+"ile),\n"
+" yalnızca komut satırı argümanından N veya daha az\n"
+" seviye aşağıda ise gösterir. \n"
+" --max-depth=0, --summarize ile aynıdır.\n"
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "toplam"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+"UYARI: -H yerine -si seçeneğini kullanın; -H seçeneğinin anlamı yakında\n"
+"--dereference-args (-D) ile aynı hale gelecektir"
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "geçersiz maksimum derinlik %s"
+
+#: src/du.c:789
+#, fuzzy, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr "--allow-missing seçeneği kaldırılacaktır; yerine --retry kullanın"
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "hem özetleyip hem bütün girdiler gösterilemez"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "uyarı: özetlemek --max-depth=0 ile aynı"
+
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "uyarı: özetlemek --max-depth=%lu ile çakışıyor"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr "Dosya iÅŸleyenleri --files0-from ile birleÅŸtirilemez"
+
+#: src/du.c:960 src/wc.c:662
+#, c-format
+msgid "cannot read file names from %s"
+msgstr "%s'den dosya adları okunamadı"
+
+#: src/du.c:1000 src/du.c:1003
+msgid "invalid zero-length file name"
+msgstr "geçersiz sıfır uzunluklu dosya adı"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "Kullanımı: %s [SEÇENEK]... [DİZGE]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+"DİZGE(leri) standart çıktıya yazdırır.\n"
+"\n"
+" -n sonlayan yenisatırı yazdırmaz\n"
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+" -e (öntanımlı) terskesme kaçışlarını yorumlar\n"
+" -E terskesme kaçışlarını yorumlamaz\n"
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"-e kullanıldığı zaman, aşağıdaki kaçışlar tanınır ve kullanılır:\n"
+"\n"
+" \\0NNN ASCII kodu NNN (8lik) olan karakter\n"
+" \\\\ ters kesme\n"
+" \\a zil (BEL)\n"
+" \\b geri silme\n"
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c sonlayan yenisatırı bastırır\n"
+" \\f sayfa sonuna kadar imleci ilerletir\n"
+" \\n alt satıra geçer\n"
+" \\r imleci satır başına taşır\n"
+" \\t imleci yatay sekme kadar ilerletir\n"
+" \\v imleci düşey sekme kadar ilerletir\n"
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "Kullanımı: %s [SEÇENEK]... [-] [İSİM=DEĞER]... [KOMUT [ARG]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+"Her çevre değişkeni İSİM için bir DEĞER atar ve KOMUTu çalıştırır.\n"
+"\n"
+" -i, --ignore-environment bir boş çevre ile başlatır\n"
+" -u, --unset=İSİM İSİM ile belirtilen çevre değişkenini kaldırır\n"
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"Sadece -, -i uygular. KOMUT verilmezse mevcut çevre değişkenlerini "
+"listeler.\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Her DOSYA'daki tabları boşluğa çevirerek standart çıktıya yazar.\n"
+"DOSYA belirtilmediÄŸinde, veya - olduÄŸunda, standart girdiden okur.\n"
+"\n"
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial Boşluktan sonra gelmeyen tabları değiştirmez\n"
+" -t, --tabs=N tabların yerine 8 değil N boşluk koyar\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+" -t, --tabs=LİSTE LİSTE virgülle ayrılmış sayılardır. Listedeki \n"
+" sayılar tabların satırdaki yerlerine karşılık gelir.\n"
+" Satırda listenin uzunluğundan fazla tab varsa, fazla\n"
+" olan tablar yerine bir boÅŸluk koyar\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr "sekme boyu %s çok büyük"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "sekme boyunda geçersiz karakter(ler): %s"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "tab boyu 0 olamaz"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "tab boyları küçükten büyüğe sıralı olmalı"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, c-format
+msgid "input line is too long"
+msgstr "girdi satırı fazla uzun"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kullanımı: %s İFADE\n"
+" veya: %s SEÇENEK\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+"\n"
+"İFADE'nin değerini standart çıktıya yazdırır. Aşağıda boş satır\n"
+"artan öncelik gruplarını ayırır. İFADE:|n\n"
+" ARG1 | ARG2 eÄŸer ARG1 boÅŸ veya 0 ise ARG2, deÄŸil ise ARG1\n"
+" ARG1 & ARG2 eğer iki argüman da 0 veya boş ise ARG2, değil ise ARG1\n"
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+"\n"
+" ARG1 < ARG2 ARG1 küçüktür ARG2\n"
+" ARG1 <= ARG2 ARG1 küçük ya da eşittir ARG2\n"
+" ARG1 = ARG2 ARG1 eÅŸittir ARG2\n"
+" ARG1 != ARG2 ARG1 farklıdır ARG2\n"
+" ARG1 >= ARG2 ARG1 büyük ya da eşittir ARG2\n"
+" ARG1 > ARG2 ARG1 büyüktür ARG2\n"
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+"\n"
+" ARG1 + ARG2 aritmetik toplama iÅŸlemi\n"
+" ARG1 - ARG2 aritmetik çıkarma işlemi\n"
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+"\n"
+" ARG1 * ARG2 aritmetik çarpma işlemi\n"
+" ARG1 / ARG2 aritmetik bölme işleminde bölümü verir\n"
+" ARG1 % ARG2 aritmetik bölme işleminde kalanı verir\n"
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+"\n"
+" DİZGE : DÜZİFD ilk karakterinden itibaren DİZGE içindeki\n"
+" DÜZenliİFaDe ile eşleşen kısım\n"
+"\n"
+" match DİZGE DÜZİFD DİZGE : DÜZİFD ile aynı\n"
+" substr DÄ°ZGE KONUM UZNLK DÄ°ZGEnin KONUMdan baÅŸlayan UZuNLuKtaki alt "
+"dizgesi\n"
+" index DİZGE KARKTR DİZGE içinde KARaKTeRlerin ilk rastlandığı "
+"konum\n"
+" length DİZGE DİZGEnin karakter sayısı\n"
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+" + ANDAÇ ANDAÇ `match' gibi bir anahtar sözcük ya da "
+"`/'\n"
+" gibi bir iÅŸlemimi bile olsa bir dizge olarak\n"
+" yorumlar.\n"
+"\n"
+" ( Ä°FADE ) Ä°FADEnin deÄŸeri\n"
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+"\n"
+"Kabukta yorumlanması için öncelenmesi ya da yorumlanmaması için tırnak "
+"içine\n"
+"alınması gereken işlemimlerinden sakının. Karşılaştırmalar her ikisi de "
+"sayısal\n"
+"ise sayısal, değilse sözlük sırasına göredir. Örgüsel eşleşmeler \\(ve \\)\n"
+"arasındaki eşleşen dizge ile ya da null ile sonuçlanır; eğer \\(ve \\)\n"
+"kullanılmamışsa eşleşen karakter sayısıyla ya da 0 ile sonuçlanır.\n"
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+"\n"
+"Eğer İFADE boş veya 0 değil ise, çıkış durumu 0, eğer İFADE boş veya 0 ise "
+"1,\n"
+"eğer İFADE sözdizim hatası içeriyor ise 2, bir hata var ise 3 olur.\n"
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "sözdizimi hatası"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "düzenli ifade (regular expression) aramasında hata oluştu"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "nümerik olmayan argüman"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "sıfırla bölüm"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kullanımı: %s [SAYI]...\n"
+" veya: %s SEÇENEK\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"Her SAYInın asal çarpanlarını gösterir\n"
+"\n"
+
+#: src/factor.c:85
+#, fuzzy
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+" Belirtilen tamsayıların asal çarpanlarını gösterir. Argüman belirtilmezse\n"
+" doğrudan standart çıktıyı okuyarak sonucu verir.\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s çok büyük"
+
+#: src/factor.c:158
+#, fuzzy, c-format
+msgid "%s is not a valid positive integer"
+msgstr "`%s' bir pozitif tamsayı değil."
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "Kullanım: %s [-BASAMAKLAR] [SEÇENEK]... [DOSYA]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"DOSYA(lar)daki tüm paragrafları yeniden biçemlendirir ve standart çıktıya\n"
+"yazar. Eğer DOSYA adı yoksa veya `-' ise, standart girdiden okur.\n"
+"\n"
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin paragrafın ilk iki satırını değiştirmez\n"
+" -p, --prefix=DİZGE sadece DİZGE ile başlayan satırları yeniden\n"
+" biçemler\n"
+" -s, --split-only uzun satırları böler fakat kısaları "
+"birleÅŸtirmez\n"
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph paragrafın ilk satırı ikinci satırından farklı\n"
+" girintilenir\n"
+" -u, --uniform-spacing sözcük arası bir, noktadan sonra iki boşluk "
+"koyar.\n"
+" -w, --width=GENİŞLİK maksimum satır genişliği (öntanımlı 75 sütun) \n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+"geçersiz seçenek -- %c; GENİŞLİK yalnızca ilk seçenek olduğu zaman kabul\n"
+"edilir; bunun yerine -w N kullanın"
+
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr "geçersiz genişlik: %s"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"DOSYA'daki (DOSYA belirtilmediğinde standart girdi'deki) satırları \n"
+"katlar ve standart çıktıya yazar\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes sütunlar yerine baytları sayar\n"
+" -s, --spaces satırı boşluklarda böler\n"
+" -w, --width=N 80 yerine N sütun kullanır\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "geçersiz sütun sayısı: `%s'"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Her DOSYA'nın ilk on satırını standart çıktıya yazar.\n"
+"Birden fazla DOSYA verildiğinde, her dosyadan önce dosya adını yazar.\n"
+"DOSYA adı verilmediğinde, veya - olduğunda standart girdiden okur.\n"
+"\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+" -c, --bytes=[-]N her dosyanın ilk N baytını yazdırır;\n"
+" başında `-' verilirse her dosyanın son N baytı\n"
+" haricindeki bütün içeriğini yazdırır\n"
+" -n, --lines=[-]N ilk 10 yerine ilk N satırı yazdırır;\n"
+" başında `-' verilirse her dosyanın son N "
+"satırı\n"
+" haricindeki bütün içeriğini yazdırır\n"
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent dosya isimlerini göstermez\n"
+" -v, --verbose dosya isimlerini gösterir\n"
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"N, bir katsayı soneki içerebilir: 512 için b, 1024 için k, 1024*1024 için "
+"m.\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "%s'i okunurken hata"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "%s'e yazarken hata"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr "%s: dosya fazla küçülmüş"
+
+#: src/head.c:230 src/head.c:1046
+#, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s: bayt sayısı fazla büyük"
+
+#: src/head.c:443
+#, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s: orjinal konuma geri gidilemiyor (lseek)"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s: %s görecesine ilerleme (seek) yapılamıyor"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "%s üzerinde lseek başarısız"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s: %s bu bilgisayarda kullanılamayacak kadar büyük bir sayı"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "satır sayısı"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "bayt sayısı"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "geçersiz satır sayısı"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "geçersiz bayt sayısı"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "geçersiz seçenek -- %c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+"Kullanımı: %s\n"
+" veya: %s SEÇENEK\n"
+"Çalıştırıldığı makinanın kimliğini onaltılık tabanda gösterir.\n"
+"\n"
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"Kullanımı: %s [İSİM]\n"
+" veya: %s SEÇENEK\n"
+"Çalıştırıldığı sistemin makina ismini değiştirir ya da gösterir.\n"
+"\n"
+
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "isim`%s' yapılamadı"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr "makina ismi deÄŸiÅŸtirilemedi; bu sistemde bu yetenek yok"
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "makina ismi saptanamadı"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "Kullanımı: %s [SEÇENEK]... [KULLANICI-İSMİ]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"KULLANICI-İSMİ ya da çalıştıran kullanıcı hakkındaki bilgileri gösterir.\n"
+"\n"
+" -a eski sürümlere uyumluluk için var. Yoksayılır.\n"
+" -g, --group sadece grup kimliğini gösterir\n"
+" -G, --groups sadece ek grupları gösterir\n"
+" -n, --name -ugG için bir sayı yerine bir isim gösterir\n"
+" -r, --real -ugG için etkin kimlik yerine gerçek kimliği gösterir\n"
+" -u, --user sadece kullanıcı kimliğini gösterir\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"SEÇENEK belirtilmeksizin bazı yararlı kullanıcı bilgileri gösterir.\n"
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "sadece kullanıcı ya da sadece grup gösterilemez"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr "öntanımlı biçemde gerçek kimlikler veya gerçek isimler gösterilemez"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s: Böyle bir kullanıcı yok"
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "%u kullanıcı kimliğinin ismi bulunamıyor"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "%u grup kimliğinin ismi bulunamıyor"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr "ek grup listesi alınamadı"
+
+#: src/id.c:375
+msgid " groups="
+msgstr " gruplar="
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr "bir dizin kurulurken strip seçeneği kullanılamaz"
+
+#: src/install.c:321
+#, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "bir dizin kurulurken hedef dizin belirlenemez"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "geçersiz kip %s"
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "%s'in sahipliÄŸi deÄŸiÅŸtirilemiyor"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "%s için zaman damgalama yapılamadı"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "fork sistem çağrısı başarısız"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "strip çalıştırılamadı"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "%s'e yazılıyor"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "geçersiz kullanıcı %s"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "dizin %s oluÅŸturuluyor"
+
+#: src/install.c:651
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"Kullanım: %s [SEÇENEK]... [T] KAYNAK HEDEF\n"
+" veya: %s [SEÇENEK]... KAYNAK... DİZİN\n"
+" veya: %s [SEÇENEK]... -t DİZİN KAYNAK...\n"
+" veya: %s [SEÇENEK]... -d DİZİN...\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"İlk üç biçemde KAYNAK'ı HEDEF'e veya birden fazla KAYNAK'ı mevcut DİZİN'e\n"
+"kopyalar, aynı zamanda izin kiplerini ve sahip/grup bilgilerini atar.\n"
+"Dördüncü biçemde, ilgili DİZİN(ler)in bütün öğelerini oluşturur.\n"
+"\n"
+
+#: src/install.c:667
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup[=KONTROL] her mevcut hedef dosyasının bir yedeğini alır\n"
+" -b --backup gibi ama argüman kabul etmez\n"
+" -c (yoksayılır)\n"
+" -d, --directory bütün argümanları dizin adı olarak alır; belirtilen\n"
+" dizinlerin tüm öğelerini oluşturur\n"
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D HEDEF'in en sondaki hariç tüm öğelerini oluşturur,\n"
+" sonra KAYNAK'ı HEDEF'e kopyalar\n"
+" -g, --group=GRUP İşlemin şimdiki grubu yerine grup üyeliğini GRUP'a "
+"atar\n"
+" -m, --mode=KÄ°P izin kipini rwxr-xr-x yerine KÄ°P olarak atar (chmod\n"
+" gibi)\n"
+" -o, --owner=SAHİP sahibi atar (yalnızca süper-kullanıcı)\n"
+
+#: src/install.c:681
+#, fuzzy
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps KAYNAK dosyalarının erişim/değişim zaman\n"
+" damgalarını ilgili hedef dosyalarına uygular\n"
+" -s, --strip sembol tablolarını soyar\n"
+" -S, --suffix=SONEK öntanımlı yedek soneki yerine SONEK'i kullanır\n"
+" -t, --target-directory=DİZİN bütün KAYNAK argümanlarını DİZİN'e kopyalar "
+"-T, --no-target-directory HEDEF'i normal bir dosya kabul eder\n"
+" -v, --verbose oluşturuldukça her dizinin adını gösterir\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"Yedekleme soneki eÄŸer --suffix veya SIMPLE_BACKUP_SUFFIX ile belirtilmemiÅŸ "
+"ise\n"
+"'~'dir. Yedekleme kontrol metodu --backup seçeneği ile veya \n"
+"VERSION_CONTROL çevre değişkeninden belirlenebilir. Geçerli değerler:\n"
+"\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"Her birleştirme (join) alanı aynı olan girdi satırı çifti için standart\n"
+"çıktıya bir satır yazar. Öntanımlı birleştırme alanı, boşlukla ayrılmış ilk\n"
+"alandır. DOSYA1 veya DOSYA2 - olduğunda (ikisi birden - olamaz), standart \n"
+"girdiden okur.\n"
+"\n"
+" -a DOSYANUM DOSYANUM dosyasından gelen eşleştirilememiş satırları \n"
+" yazdırır. DOSYANUM, DOSYA1 veya DOSYA2 dosyasından\n"
+" gelinmesine göre 1 veya 2 olabilir.\n"
+" -e YAZI eksik girdi alanlarını YAZI ile değiştirir\n"
+
+#: src/join.c:147
+#, fuzzy
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case karşılaştırma yaparken küçük/büyük harf ayrımı yapmaz\n"
+" -j ALAN (eski kullanım)`-1 ALAN -2 ALAN' ile aynı\n"
+" -o BİÇEM çıktı satırını oluştururken BİÇEM'i kullanır\n"
+" -t HARF HARFi girdi ve çıktı alanlarını ayırmakta kullanır\n"
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v DOSYANUM -a DOSYANUM gibi, fakat birleştirilmiş satırları "
+"göstermez\n"
+" -1 ALAN DOSYA1'in bu ALAN'ını kullanarak birleştirir\n"
+" -2 ALAN DOSYA2'nin bu ALAN'ını kullanarak birleştirir \n"
+
+#: src/join.c:160
+#, fuzzy
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"Eğer -t HARF verilmemiş ise, başlangıçtaki boşluklar alan ayracıdır ve\n"
+"yoksayılırlar. Eğer -t HARF verilmiş ise, ayraç olarak HARF kullanılır.\n"
+"ALAN, 1'den başlayarak sayılan alan numarasıdır. BİÇEM, bir veya daha "
+"fazla,\n"
+"virgül veya boşlukla ayrılmış biçemdir. Biçem, `DOSYANUM.ALAN' veya `0' "
+"olarak\n"
+"verilir. Öntanımlı BİÇEM, HARF ile ayrılmış olarak, birleştirme alanını,\n"
+"DOSYA1'de kalan alanları ve DOSYA2'de kalan alanları gösterir.\n"
+"\n"
+"Önemli: DOSYA1 ve DOSYA2 birleştirme alanına göre sıralı olmalıdır.\n"
+
+#: src/join.c:617 src/join.c:812
+#, c-format
+msgid "invalid field number: %s"
+msgstr "geçersiz alan numarası: %s"
+
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "geçersiz alan belirleyicisi: `%s'"
+
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "alan tanımlamasında geçersiz dosya numarası: `%s'"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr "boÅŸ sekme"
+
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "tab yerine kullanılacak `%s' bir karakterden oluşmalı"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr "uyumsuz sekme"
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "her iki dosya da standart girdi olamaz"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+"Kullanımı: %s [-s SİNYAL] | -SİNYAL] PID...\n"
+" ya da: %s -l [SÄ°NYAL]...\n"
+" ya da: %s -t [SÄ°NYAL]...\n"
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+"Ä°ÅŸlemlere sinyal yollar veya sinyalleri listeler.\n"
+"\n"
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+" -s, --signal=SÄ°NYAL, -SÄ°NYAL\n"
+" Gönderilecek sinyalin adı veya numarası.\n"
+" -l, --list Sinyal adlarını listeler ya da sinyal isimleri ile "
+"sinyal\n"
+" numaraları arasında dönüşüm yapar.\n"
+" -t, --table Sinyal bilgileri tablosu gösterir.\n"
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+"\n"
+"SİNYAL, `HUP' gibi bir sinyal adı veya `1' gibi bir sinyal numarası, \n"
+"veya bir sinyalle sonlanmış işlemin çıkış durumu olabilir.\n"
+"PID bir tamsayıdır; eğer negatif ise bir işlem grubunu tanımlar.\n"
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s: geçersiz sinyal"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s: geçersiz işlem kimlik no"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "geçersiz seçenek -- %c"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s: birden fazla sinyal belirtilmiÅŸ"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "birden fazla -l veya -t seçeneği belirtilmiş"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "sinyal, -l veya -t ile birleÅŸtirilemez"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr "süreç kimliği belirtilmemiş"
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kullanım: %s DOSYA1 DOSYA2\n"
+" veya: %s SEÇENEK\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+"Mevcut olan DOSYA1'e DOSYA2 adında bir bağ oluşturmak için 'link' (bağ)\n"
+"işlevini çağırın.\n"
+"\n"
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "%s sabit bağı %s'e bağlanamadı"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr "%s: uyarı: sembolik bağa sabit bağ oluşturmak taşınabilirliği bozar"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: dizinde sabit baÄŸa izin verilmiyor"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s: dizinin üzerine yazılamaz"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s: %s'un üzerine yazılsın mı?"
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "Sembolik bağ %s %s'e bağlanıyor"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "Sembolik bağ %s %s'e bağlanıyor"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "Sabit bağ %s %s'e bağlanıyor"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "Sabit bağ %s %s'e bağlanıyor"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "Sabit bağ %s %s'e bağlanıyor"
+
+#: src/ln.c:324
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"Kullanım: %s [SEÇENEK]... [-T] KAYNAK BAĞ_ADI (1. biçem)\n"
+" veya: %s [SEÇENEK]... HEDEF (2. biçem)\n"
+" veya: %s [SEÇENEK]... HEDEF...DİZİN (3. biçem)\n"
+" veya: %s [SEÇENEK]... -t DİZİN HEDEF... (4. biçem)\n"
+
+#: src/ln.c:331
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"1. formda, belirlenen HEDEF'e, opsiyonel BAÄž_ADI ile bir baÄŸ oluÅŸturur.\n"
+"2. formda, HEDEF'e mevcut dizinde bir baÄŸ oluÅŸturur.\n"
+"3. ve 4. formlarda, DİZİN içindeki her HEDEF'e bir bağ oluşturur.\n"
+"Öntanımlı olarak sabit bağ oluşturulur, --symbolic seçeneği kullanıldığı\n"
+"zaman sembolik baÄŸ oluÅŸturulur. Sabit baÄŸ oluÅŸturulduÄŸu zaman, her HEDEF\n"
+"mevcut olmak zorundadır.\n"
+"\n"
+
+#: src/ln.c:342
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup[=KONTROL] her mevcut hedef dosyanın bir yedeğini alır\n"
+" -b --backup gibi fakat argüman almaz\n"
+" -d, -F, --directory süper kullanıcının dizinleri sabit "
+"bağlamasına\n"
+" izin verir (not: sistem kısıtlamaları "
+"yüzünden\n"
+" büyük ihtimal ile süper kullanıcı için dahi\n"
+" bu işlem başarısız olacaktır)\n"
+" -f, --force önceden var olan hedef dosyaları siler\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference bir dizine sembolik baÄŸ olan hedefi sanki "
+"normal\n"
+" bir dosyaymış gibi işler\n"
+" -i, --interactive hedefleri silmeden önce sorar\n"
+" -s, --symbolic sabit baÄŸ yerine sembolik baÄŸ oluÅŸturur\n"
+
+#: src/ln.c:356
+#, fuzzy
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" -S, --suffix=SONEK yedekleme soneki yerine SONEK'i kullanır\n"
+" -t, --target-directory=DİZİN bağların oluşturulacağı DİZİN'i belirtir\n"
+" -T, --no-target-directory BAĞ_ADI'nı normal bir dosya gibi kullanır\n"
+" -v, --verbose bağlamadan önce her dosyanın adını gösterir\n"
+
+#: src/ln.c:484
+#, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "--target-directory ve --no-target-directory birleÅŸtirilemez"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "Kullanım: %s [SEÇENEK]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"Çalıştıran kullanıcının ismini gösterir.\n"
+"\n"
+
+#: src/logname.c:89
+#, c-format
+msgid "no login name"
+msgstr "kullanıcı ismi yok"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%b %e %Y"
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%b %e %H:%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "çevre değişkeni QUOTING_STYLE'da bulunan geçersiz değer yoksayıldı: %s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr ""
+"çevre değişkeni COLUMNS'da belirtilen geçersiz genişlik değeri yoksayıldı: %s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr ""
+"çevre değişkeni TABSIZE'da bulunan geçersiz sekme boyutu yoksayıldı: %s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "geçersiz satır genişliği: %s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "geçersiz sekme boyutu: %s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "geçersiz tarih biçemi %s"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "tanımlanmamış önek: %s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "çevre değişkeni LS_COLORS'da taranamaz değer"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "dizin %s açılamadı"
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "%s'nın aygıtı ve i-düğümü belirlenemedi"
+
+#: src/ls.c:2353
+#, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "%s: önceden listelenmiş dizin tekrar listelenmedi"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "dizin %s okunuyor"
+
+#: src/ls.c:2410
+#, c-format
+msgid "closing directory %s"
+msgstr "%s dizini kapatılıyor"
+
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "%s ve %s dosya adları karşılaştırılamaz"
+
+#: src/ls.c:4277
+#, fuzzy
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"DOSYA(lar) hakkında bilgileri listeler (öntanımlı olarak şimdiki dizinde).\n"
+"Eğer -cftuSUX veya --sort seçenekleri verilmemiş ise girdileri alfabetik\n"
+"sıralar.\n"
+"\n"
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all . ile baÅŸlayan girdileri saklamaz\n"
+" -A, --almost-all örtük . ve .. değerlerini göstermez\n"
+" --author -l ile her dosyanın yazarını gösterir\n"
+" -b, --escape grafik olmayan karakterleri sekizlik\n"
+" değerlerle gösterir\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=BOY BOY baytta bloklar kullanır\n"
+" -B, --ignore-backups sonu ~ ile biten örtük yedekleri göstermez\n"
+" -c -lt ile: ctime'a (son dosya durum bilgisi\n"
+" değişikliği zamanı) göre sıralar ve ctime'ı\n"
+" gösterir\n"
+" -l ile: ctime'ı göster ve isme göre sıralar\n"
+" tek başına: ctime'a göre sıralar\n"
+
+#: src/ls.c:4299
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C Çıktıyı sütunlar halinde gösterir\n"
+" --color[=NEZAMAN] Dosya tiplerini belirtmek için değişik renkler\n"
+" kullanılıp kullanılmamasını belirler. "
+"NEZAMAN\n"
+" deÄŸerleri never (asla), always (her zaman) "
+"veya\n"
+" auto (otomatik) olabilir.\n"
+" -d, --directory içindekiler yerine dizin bilgilerini gösterir "
+"ve\n"
+" sembolik bağları izlemez.\n"
+" -D, --dired Emacs dired kipine uygun çıktı verir\n"
+
+#: src/ls.c:4307
+#, fuzzy
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f sıralama yapmaz, -aU seçeneğini etkinleştirir,\n"
+" -lst seçeneğini etkinsizleştir\n"
+" -F, --classify çıktı bilgilerine belirteç ( */=@| "
+"seçeneklerinden\n"
+" birini) ekler\n"
+" --format=SÖZCÜK -x yatay, -m virgüllü, -l uzun,\n"
+" -1 tek sütun, -l uzun, -C dikey\n"
+" --full-time -l --time-style=full-iso gibi\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+#, fuzzy
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all 0 bloÄŸa sahip dosyasistemlerini de dahil eder.\n"
+" -b --block-size=BOY BOY baytlık bloklar kullanır\n"
+" -h, --human-readable boyutları insan okuyabilir biçemde gösterir\n"
+" (örn., 1K 234M 2G)\n"
+" -H, --si yukarıdaki gibi fakat 1000'in katlarını kullanır,\n"
+" 1024'ün değil.\n"
+
+#: src/ls.c:4328
+#, fuzzy
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+" -g -l gibi fakat sahibi listelemez\n"
+" -G, --no-group -l gibi fakat grup bilgisini göstermez\n"
+" -h, --human-readable boyutları insan okuyabilir biçemde gösterir\n"
+" (örn., 1K 234M 2G)\n"
+" --si benzer ama 1000'in katlarını kullanır,\n"
+" 1024'ün değil\n"
+" -H, --dereference-command-line\n"
+" komut satırındaki sembolik bağları izler\n"
+" --dereference-command-line-symlink-to-dir\n"
+" dizine işaret eden komut satırı sembolik\n"
+" bağları izler.\n"
+" --hide=KALIP KALIP'a uyan örtük girdileri göstermez\n"
+" (-a veya -A ile etkisizleÅŸtirilir)\n"
+
+#: src/ls.c:4337
+#, fuzzy
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=SÖZCÜK girdi isimlerine SÖZCÜK tarzında belirteç\n"
+" ekler: none (boş -- öntanımlı),\n"
+" classify (-F kipi gibi),\n"
+" file-type (-p kipi gibi)\n"
+" -i, --inode -l ile her dosyanın indeks numarasını gösterir\n"
+" -I, --ignore=KALIP kabuk KALIP'ıyla eşleşen örtük girdileri\n"
+" göstermez\n"
+" -k --block-size=1K gibi\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l uzun listeleme biçemi kullanır\n"
+" -L, --dereference bir sembolik bağ için dosya bilgilerini\n"
+" gösterirken, sembolik bağın imlediği "
+"dosyanın\n"
+" bilgilerini gösterir, sembolik bağın kendi\n"
+" bilgilerini deÄŸil\n"
+" -m satırı virgül ayraçlı girdilerle doldurur\n"
+
+#: src/ls.c:4352
+#, fuzzy
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid İsim yerine sayısal grup ve kullanıcı "
+"kimliklerini\n"
+" (UID ve GID) gösterir\n"
+" -N, --literal ham isimleri gösterir (kontrol karakterlerini\n"
+" ayrıca işlemez)\n"
+" -o grup bilgisi olmaksızın uzun listeleme biçemi\n"
+" kullanır\n"
+" -p, --file-type bilgilere belirteç ekler ( /=@| dan biri) \n"
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars grafik olmayan karakterler yerine ? çıktılar\n"
+" --show-control-chars grafik olmayan karakterleri olduÄŸu gibi "
+"gösterir\n"
+" (program 'ls' ve çıktı bir terminal değil ise\n"
+" öntanımlı seçenek)\n"
+" -Q, --quote-name çıktı adlarını çift tırnak içinde gösterir\n"
+" --quoting-style=SÖZCÜK tırnaklama biçemi için SÖZCÜK'te belirtilen \n"
+" değeri kullanır:\n"
+" literal (olduÄŸu gibi), locale (yerel),\n"
+" shell (kabuk), \n"
+" shell-always (her zaman kabuk), c (C dili), \n"
+" escape (kaçış karakterli)\n"
+
+#: src/ls.c:4368
+#, fuzzy
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse ters sıralar\n"
+" -R, --recursive alt dizinleri çevrimli listeler\n"
+" -s, --size -l ile her dosyanın boyutunu blok olarak\n"
+" gösterir\n"
+
+#: src/ls.c:4373
+#, fuzzy
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S dosya büyüklüğüne göre sıralar\n"
+" --sort=SÖZCÜK sözcükte belirtilen değere göre sıralar: \n"
+" extension -X (uzantı), none -U (boş), \n"
+" size -S (büyüklük), time -t (zaman),\n"
+" version -v (sürüm), status -c (durum)\n"
+" time -t (değişim zamanı),\n"
+" atime -u (erişim zaman damgası),\n"
+" access -u (erişim zamanı),\n"
+" use -u (kullanım zamanı)\n"
+" --time=SÖZCÜK -l ile zamanı SÖZCÜKte belirtilen değer olarak\n"
+" gösterir\n"
+" atime (erişim zaman damgası), \n"
+" access (erişim), use (kullanım zamanı), \n"
+" ctime (dosya durum bilgisi değişim zamanı) veya\n"
+" status (durum); eÄŸer --sort=time belirtilmiÅŸse\n"
+" seçilen zaman değerine göre sıralar.\n"
+
+#: src/ls.c:4382
+#, fuzzy
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=BİÇEM zamanı BİÇEM biçeminde gösterir:\n"
+" full-iso, long-iso, iso, locale, +BİÇEM\n"
+" BİÇEM `date' gibi tanınır; eğer BİÇEM,\n"
+" BİÇEM1<yenisatır>BİÇEM2 şeklinde ise, BİÇEM1\n"
+" eski dosyalara, BİÇEM2, yeni dosyalara "
+"uygulanır\n"
+" eğer BİÇEM'in başında posix- var ise, BİÇEM\n"
+" yalnızca POSIX yerelinin haricinde geçerli "
+"olur.\n"
+" -t değişim zamanına göre sıralar\n"
+" -T, --tabsize=SÜT öntanımlı 8 değeri yerine her SÜT değerinde\n"
+" sekme olduÄŸunu varsayar.\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u -lt ile: erişim zamanını gösterir ve buna göre\n"
+" sıralar\n"
+" -l ile: erişim zamanını gösterir ve isme göre\n"
+" sıralar\n"
+" tekbaşına: erişim zamanına göre sıralar\n"
+" -U sıralamaz, girdileri dizin sırasına göre "
+"gösterir\n"
+" -v sürüme göre sıralar\n"
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -w, --width=SÃœTUN ekran geniÅŸliÄŸini SÃœTUNa ayarlar\n"
+" -x girdileri satır olarak çıktılar, sütun değil\n"
+" -X girdi sonekine göre alfabetik sıralar\n"
+" -1 her satıra bir dosya olarak listeler\n"
+
+#: src/ls.c:4414
+#, fuzzy
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"Öntanımlı olarak dosya tipleri renkle ayırdedilmezler. Bu, --color=none \n"
+"seçeneğine eşittir. --color seçeneğini NEZAMAN seçeneğini belirtmeden "
+"kullanmak\n"
+"her zaman kullanılacağı manasına --color=always değerine eşittir. --"
+"color=auto\n"
+"seçeneği ile eğer standart çıktı bir terminale (tty) bağlı ise renk "
+"ayırdetmesi\n"
+"kullanılır.\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+"\n"
+"Çıkış durumu, her şey normal ise 0, ufak problemler var ise 1, önemli\n"
+"problemler var ise 2 olur.\n"
+
+#: src/md5sum.c:150
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Kullanım: %s [SECENEK] [DOSYA]...\n"
+" veya: %s [SECENEK] --check [DOSYA]\n"
+"%s (%d-bit) sağlama toplamlarını kontrol eder veya yazar.\n"
+"DOSYA adı verilmediğinde veya - olduğunda standart girdiden okur.\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+"\n"
+" -B, --binary konsol aygıtına yazarken ikilik yazma kullanır.\n"
+"\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+#, fuzzy
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"Aşağıdaki iki seçenek sadece sağlama toplamlarını kontrol ederken işe "
+"yarar:\n"
+" --status çıktı vermez, durum kodu, başarı bilgisini verir\n"
+" -w, --warn yanlış formatlı çemlenmiş sağlama toplam satırları "
+"hakkında\n"
+" uyarı verir\n"
+"\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"Toplamlar %s'de belirtildiği gibi hesaplanır. Toplamlar kontrol edilirken,\n"
+"girdi, bu yazılımdan önceden elde edilmiş bir çıktı olmalıdır. Öntanımlı\n"
+"olarak, her satırı bir sağlama toplamı ile yazdırır, tür belirtir (ikilik\n"
+"için `*' , metin için ` ') ve DOSYA'nın ismini yazar.\n"
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s: çok fazla sağlama satırı"
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s: %<PRIuMAX>: yanlış biçemlenmiş %s sağlama satırı"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s:açma veya okuma BAŞARISIZ\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "BAÅžARISIZ"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "Tamam"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s: okuma hatası"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s: doğru biçemlenmiş %s sağlama toplam satırı bulunamadı"
+
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "Uyarı: listelenmiş dosyanın %<PRIuMAX> / %<PRIuMAX> kısmı okunamadı"
+msgstr[1] "Uyarı: listelenmiş dosyanın %<PRIuMAX> / %<PRIuMAX> kısmı okunamadı"
+
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] ""
+"UYARI: Hesaplanmış sağlamaların %<PRIuMAX> / %<PRIuMAX> kısmı eşleşmedi"
+msgstr[1] ""
+"UYARI: Hesaplanmış sağlamaların %<PRIuMAX> / %<PRIuMAX> kısmı eşleşmedi"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+" --binary ve --text seçenekleri sağlama toplamlarını kontrol ederken geçersiz"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "--status seçeneği yalnızca sağlama toplam kontrolü sırasında anlamlı"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "--warn seçeneği yalnızca sağlama toplam kontrolü sırasında anlamlı"
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "Kullanım: %s [SEÇENEK] DİZİN...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"EÄŸer yoksa, ilgili DÄ°ZÄ°N(ler)i oluÅŸturur.\n"
+"\n"
+
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+" -m, --mode=KÄ°P izin kipini belirtir (chmod gibi), \n"
+" rwxrwxrwx öntanımlı değer\n"
+" -p, --parents eğer üst dizinler var ise hata vermeden \n"
+" gerektiği şekilde üst dizinleri oluşturur\n"
+" -v, --verbose oluşturulan her dizin için bir ileti çıktılar\n"
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "dizin %s oluÅŸturuldu"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "Kullanım: %s [SEÇENEK] İSİM...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"İsimli veri yollarını (FIFO) belirtilen İSİM'lerle oluşturur.\n"
+"\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr ""
+" -m, --mode=KÄ°P izin kipini belirtilen deÄŸere deÄŸiÅŸtirir\n"
+" (chmod gibi) varsayılan değer: rw\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "geçersiz kip"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "Kullanım: %s [SEÇENEK]...İSİM TİP [MAJÖR MİNÖR]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"Belirtilen TÜR'de belirtilen İSİM'de özel dosya oluşturur.\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+"\n"
+"TÜR b,c veya u olduğu zaman hem MAJÖR, hem de MİNÖR belirtilmelidir.\n"
+"TÜR p olduğu zaman ne MAJÖR ne de MİNÖR belirtilmelidir. Eğer MAJÖR veya\n"
+"MİNÖR 0x veya 0X ile başlarsa, onaltılık olarak algılanır. Eğer 0 ile\n"
+"başlarlarsa, sekizlik olarak algılanır. Bütün diğer değerler onluk olarak\n"
+"algılanır. TÜR, aşağıdaki değerlerde olabilir:\n"
+
+#: src/mknod.c:76
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+" b özel blok (önbellekli) dosyası oluşturur\n"
+" c, u özel karakter (önbellekli) dosyası oluşturur\n"
+" p FIFO oluÅŸturur\n"
+
+#: src/mknod.c:146
+msgid "Special files require major and minor device numbers."
+msgstr "Özel dosyalar, majör ve minör aygıt numaraları gerektirir."
+
+#: src/mknod.c:156
+msgid "Fifos do not have major and minor device numbers."
+msgstr "Fifoların majör ve minör aygıt numarası bulunmaz. %s"
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "özel blok dosyalar desteklenmiyor"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "özel karakter dosyaları desteklenmiyor"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "geçersiz majör aygıt numarası %s"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "geçersiz minör aygıt numarası %s"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "geçersiz aygıt %s %s"
+
+#: src/mknod.c:216
+#, c-format
+msgid "invalid device type %s"
+msgstr "geçersiz aygıt türü %s"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"KAYNAK'ı HEDEF olarak yeniden adlandırır veya KAYNAK'ları DİZİN'e taşır.\n"
+"\n"
+
+#: src/mv.c:297
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup[=KONTROL] mevcut her hedef dosyanın bir yedeğini alır.\n"
+" -b --backup gibi ama argüman almaz.\n"
+" -f, --force üzerine yazmadan önce sormaz\n"
+" --reply=yes ile aynı\n"
+" -i, --interactive üzerine yazmadan önce sorar\n"
+" --reply=query ile aynı\n"
+
+#: src/mv.c:303
+#, fuzzy
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --reply={yes,no,query} mevcut bir hedef dosya için sorgulamanın "
+"nasıl\n"
+" yapılacağını ayarlar: \n"
+" yes=evet, no=hayır, query=sor\n"
+" --strip-trailing-slashes bütün KAYNAK argümanlarının sonundan "
+"kesmeleri\n"
+" (/) kaldırır\n"
+" -S, --suffix=SONEK öntanımlı sonek yerine SONEK değerini "
+"kullanır.\n"
+
+#: src/mv.c:308
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" -t, --target-directory=DİZİN bütün KAYNAK argümanlarını DİZİN'e taşır\n"
+" -T, --no-target-directory HEDEF'i normal bir dosya kabul eder\n"
+" -u, --update taşıma işlemini yalnızca KAYNAK dosyası\n"
+" hedeften daha yeni ise, veya hedef dosya "
+"yok\n"
+" ise yapar\n"
+" -v, --verbose ne yapıldığını anlatır\n"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "Kullanımı: %s [SEÇENEK] [KOMUT [ARG]...]\n"
+
+#: src/nice.c:77
+#, fuzzy, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+"KOMUTu ayarlanan işlem önceliğinde çalıştırır.\n"
+"KOMUT verilmezse, mevcut işlem önceliğini gösterir. Öncelik sıralaması\n"
+"%d (en yüksek öncelik) ve %d (en düşük öncelik) arasında değişir.\n"
+"\n"
+" -n, --adjustment=AYAR AYAR değerini şimdiki öncelik değerine ekler\n"
+" (öntanımlı 10)\n"
+
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "`%s' geçersiz ayar"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr "komut ayarlama ile birlikte verilmeli"
+
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "sistem ismi alınamadı"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "tarih ayarlanamadı"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Satır başlarına satır numarası koyarak her DOSYA'yı standart çıktıya "
+"yazdırır.\n"
+"DOSYA adı verilmemişse, veya - olarak verilmişse, standart girdiden okur.\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=TARZ satırları TARZ tarzında numaralandırır.\n"
+" -d, --section-delimiter=KK mantıksal sayfaları ayırırken KK'yi "
+"kullanır\n"
+" -f, --footer-numbering=TARZ altyazıları TARZ tarzında numaralandırır\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=TARZ üstyazıları TARZ tarzında numaralandırır\n"
+" -i, --page-increment=SAYI satır numarası artış miktarı\n"
+" -l, --join-blank-lines=SAYI SAYI kadar boş satır grubunu bir satır "
+"olarak\n"
+" okur\n"
+" -n, --number-format=FORMAT satır numaralarını FORMAT şeklinde yazar\n"
+" -p, --no-renumber yeni mantıksal sayfaya başladığında satır\n"
+" numaralarını baştan başlatmaz\n"
+" -s, --number-separator=DİZGE satır numarasından sonra DİZGE yazdırır\n"
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --first-page=SAYI her mantıksal sayfanın ilk satır numarası\n"
+" -w, --number-width=SAYI satır numarası genişliğini SAYI yapar\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"aksi belirtilmedikçe otomatik olarak kullanılan seçenekler: \n"
+"-v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn\n"
+"KK, mantıksal sayfaları ayırmak için kullanılan iki ayraç karakteridir. "
+"Ä°kinci\n"
+"karakter verilmemişse :. kabul edilir. \\. elde etmek için \\\\ yazılır. \n"
+"TARZ, aşağıdaki değerlerden biri olarak belirtilmelidir: \n"
+
+#: src/nl.c:214
+#, fuzzy
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a bütün satırları numaralandırır\n"
+" t sadece boş olmayan satırları numaralandırır\n"
+" n hiç bir satırı numaralandırmaz\n"
+" pDÜZİF sadece DÜZİF düzenli ifadesi ile eşleşen satırları "
+"numaralandırır\n"
+" (DÜZİF: düzenli ifade = regular expression) \n"
+"\n"
+"FORMAT aşağıdakilerden biri olabilir:\n"
+"\n"
+" ln sola dayalı yazdırır, numaraların başlarına sıfır koymaz\n"
+" rn sağa dayalı yazdırır, numaraların başlarına sıfır koymaz\n"
+" rz sağa dayalı yazdırır, numaraların başlarına sıfır koyar\n"
+"\n"
+
+#: src/nl.c:281
+#, c-format
+msgid "line number overflow"
+msgstr "satır numarası taşması"
+
+#: src/nl.c:479
+#, c-format
+msgid "invalid header numbering style: %s"
+msgstr "geçersiz başlık numaralama tarzı: %s"
+
+#: src/nl.c:487
+#, c-format
+msgid "invalid body numbering style: %s"
+msgstr "geçersiz gövde numaralama tarzı: %s"
+
+#: src/nl.c:495
+#, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "geçersiz altbilgi numaralama tarzı: %s"
+
+#: src/nl.c:504
+#, c-format
+msgid "invalid starting line number: %s"
+msgstr "geçersiz başlangıç satır numarası: %s"
+
+#: src/nl.c:513
+#, c-format
+msgid "invalid line number increment: %s"
+msgstr "geçersiz satır numarası artışı: %s"
+
+#: src/nl.c:525
+#, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "geçersiz boş satır sayısı: %s"
+
+#: src/nl.c:539
+#, c-format
+msgid "invalid line number field width: %s"
+msgstr "geçersiz satır numarası alan genişliği: %s"
+
+#: src/nl.c:558
+#, c-format
+msgid "invalid line numbering format: %s"
+msgstr "geçersiz satır numaralama biçemi: %s"
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kullanımı: %s BİÇEM [ARGÜMAN]...\n"
+" veya: %s SEÇENEK\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+"KOMUTu çalıştırır, ve bitir sinyallerini yoksayar.\n"
+"\n"
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "argümanların tamamı yoksayılıyor"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, c-format
+msgid "failed to open %s"
+msgstr "%s açılamadı"
+
+#: src/nohup.c:161
+#, fuzzy, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "çıktı, %s'nin sonuna ekleniyor"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr "standart hatanın kopyası, exec sonunda kapanmaya ayarlanamadı"
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr "standart hata yeniden yönlendirilemedi"
+
+#: src/od.c:307
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"Kullanım: %s [SEÇENEK]... [DOSYA]...\n"
+"veya: %s [-abcdfilosx]... [DOSYA] [[+]GÖRELİ[.][b]]\n"
+"veya: %s --traditional [SEÇENEK] [DOSYA] [[+]GÖRELİ[.][b] [[+]ETİKET]][.]"
+"[b]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"DOSYA'yı, (hiçbir seçenek belirtilmediğinde sekizlik sayı sisteminde), \n"
+"standart çıktıya yazar. DOSYA adı verilmemişse veya - olarak verilmişse, \n"
+"standart girdiden okur.\n"
+"\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr ""
+"Uzun seçenekler için zorunlu argümanlar kısa seçenekler için de zorunludur.\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=RADIX adresleri RADIX sayı sisteminde yazar\n"
+" -j, --skip-bytes=BAYT her dosyanın ilk BAYT baytını atlar\n"
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=BAYT çıktıyı dosya başına BAYT baytla sınırlar\n"
+" -s, --strings[=SAYI] en az SAYI grafik karakter içeren dizgeler\n"
+" yazdırır.\n"
+" -t, --format=FORMAT çıktı formatını FORMAT olarak belirler\n"
+" -v, --output-duplicates birbirinin aynı art arda gelen satırları * \n"
+" kullanmadan yazar\n"
+" -w, --width[=BAYT] her satıra BAYT bayt yazar\n"
+" --traditional geleneksel formda argüman kabul eder\n"
+
+#: src/od.c:337
+#, fuzzy
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"Geleneksel formatlar karışık kullanılabilir:\n"
+" -a veya -t a , isimli karakterleri seçer (isimli karakterlerin [named\n"
+" characters] ne olduğunu öğrenmek için : man od)\n"
+" -b veya -t o1, sekizlik baytlar seçer\n"
+" -c veya -t c, ASCII karakterleri ve terskesmeyle belirtilmiş kaçış\n"
+" karakterlerini seçer\n"
+" -d veya -t u2, işsaretsiz (unsigned) ondalık kısa sayıları seçer\n"
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f veya -t fF, gerçel sayıları seçer\n"
+" -i veya -t dI, 10luk kısa sayıları seçer\n"
+" -l veya -t dL, 10luk uzun sayıları seçer\n"
+" -o veya -t o2, 8lik 2 bayt sayıları seçer\n"
+" -x veya -t x2, 16lik 2 bayt sayıları seçer\n"
+
+#: src/od.c:353
+#, fuzzy
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"Eğer birinci ve ikinci çağırış şekilleri beraber kullanılmış ise, son "
+"iÅŸlenenin +\n"
+"ile veya bir sayı ile başlaması veya iki işlenen olması halinde, 2. çağırış "
+"ÅŸekli\n"
+"varsayılır.\n"
+"GORELI işleneni, -j GORELI anlamına gelir. ETİKET, ilk bayttaki sanal "
+"adrestir, ve\n"
+"yazdırma devam ettikçe artar.\n"
+"GÖRELİ ve ETİKET için, 0x veya 0X öneki, 16'lık sayı anlamına gelir;\n"
+"sonekler sekizlik sayılar için . ve 512 ile çarpılması için b olabilir.\n"
+"\n"
+"FORMAT aşağıdaki kısaltmalar kullanılarak oluşturulur:\n"
+"\n"
+" a karakter isimlerini yazar\n"
+" (Örnek:'od -t a' tab karakteri gördüğünde 'ht' yazar)\n"
+" c ASCII karakterler veya terskesme ile kaçışlar\n"
+" c alfabe elemanlarını olduğu gibi kontrol karakterlerini\n"
+" terskesikle gösteririldikleri gibi yazar\n"
+" (Örnek: 'od -t c' tab karakteri gördüğünde '\t' yazar)\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[SAYI] işaretli (signed) ondalık sayı olarak yazar, her sayı \n"
+" için SAYI bayt kullanır\n"
+" f[SAYI] gerçel sayı olarak yazar, her sayı için SAYI bayt kullanır\n"
+" o[SAYI] sekizlik sayı olarak yazar, her sayı için SAYI bayt kullanır\n"
+" u[SAYI] işaretsiz (unsigned) ondalık sayı olarak yazar, her sayı\n"
+" için SAYI bayt kullanır\n"
+" x[SAYI] 16lik sayı olarak yazar, her sayı için SAYI bayt kullanır\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"SAYI yerine genelde bir sayı yazılır ( örnek : od -t d1 ), ancak \n"
+"FORMAT d,o,u,x den biri olduğunda SAYI yerine sizeof(char) anlamına gelen\n"
+"C, sizeof(short) anlamına gelen S veya sizeof(long) anlamana gelen L de\n"
+"gelebilir. Eğer FORMAT f ise, SAYI yerine sizeof(float) anlamına gelen\n"
+"F, sizeof(double) anlamına gelen D veya sizeof(long double) anlamına\n"
+"gelen L de gelebilir.\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"RADIX yerine sayı sistemini belirtmek için bir harf yazılır:\n"
+"onluk sistem için d, sekizlik sistem için o, 16lik sistem için x ve hiçbiri\n"
+"için n. BAYT'ın başına 0x veya 0X koyarak bu sayının 16lik sistemde \n"
+"olduğunu belirtebilirsiniz. Sonuna b koyarsanız 512 ile, k koyarsanız\n"
+"1024 ile, m koyarsanız 1048576 ile çarpılmasını istediğinizi belirtmis\n"
+"olursunuz. Herhangi bir ÅŸekilin sonuna ( ÅŸekiller: a,c,d,f,o,u,x) z\n"
+"eklerseniz od her satırın sonuna o satırdaki tüm okunabilir karakterleri\n"
+"yazar."
+
+#: src/od.c:391
+#, fuzzy
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+"--string in ardından bir sayı belirtilmemişse 3 belirtilmiş gibi kabul\n"
+"eder. --width in ardından bir sayı belirtilmemişse 32 belirtilmiş kabul "
+"eder.\n"
+"Aksi belirtilmedikçe od -A o -t d2 -w 16 seçeneklerini kullanır\n"
+
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "geçersiz format `%s'"
+
+#: src/od.c:693
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"geçersiz format `%s';\n"
+"bu sistem, yerleşik %lu baytlık tamsayı türü desteklemiyor"
+
+#: src/od.c:812
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"geçersiz format `%s';\n"
+"bu sistem %lu baytlık bir kayan ondalık (floating point) türü desteklemiyor"
+
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "format `%2$s' içinde geçersiz `%1$c' karakteri"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr ""
+"girdinin dikkate alınmayacak bölümü toplam girdiden \n"
+"daha büyük verilmiş"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr "geçersiz çıktı adres radix'i `%c'; [doxn] harflerinden biri olmalı"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "atlanacak bayt sayısı olarak verilen değer hatalı (-j nin argümanı)"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr ""
+"maksimum okunacak bayt sayısı olarak verilen değer hatalı (-N nin argümanı)"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "minimum dizge uzunluğu olarak verilen değer hatalı (-s in argümanı)"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "genişlik olarak verilen değer hatalı (-w nun argümanı)"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "dizgeler çıktılanırken tür belirtilemez"
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr "Eski kullanım kipi en fazla bir dosya destekler."
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr "atlanacak baytlar + okunacak baytlar çok büyük"
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "uyarı: geçersiz genişlik %lu; %d kullanılıyor"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d: bçm=\"%s\" genişlik=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "standart girdi kapalı"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Standart çıktıya her DOSYAdan aynı sırada olan satırları aralarına \n"
+"tablar koyarak yazar. DOSYA adı verilmediğinde veya - olduğunda standart\n"
+"girdiden okur\n"
+"\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=LISTE TABlar yerine LISTE'deki karakterleri kullanır\n"
+" -s, --serial Her dosyayı (paralel olarak yazmak yerine) \n"
+" arka arkaya yazar\n"
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "Kullanımı: %s [SEÇENEK]... İSİM...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "%2$s dosya adında taşınmaz karakter %1$s bulundu"
+
+#
+#: src/pathchk.c:282
+#, fuzzy, c-format
+msgid "empty file name"
+msgstr "normal boÅŸ dosya"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr "%s: maksimum dosya adı uzunluğu belirlenemedi"
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr "%1$lu limiti, %3$s dosya adının %2$lu uzunluğu ile aşıldı"
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr "%1$lu limiti, %3$s dosya adı bileşeninin %2$lu uzunluğu ile aşıldı"
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr "Kullanıcı ismi:"
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr "Gerçekte:"
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "Dizin:"
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Kabuk:"
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr "Proje:"
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr "Plan:\n"
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr "GiriÅŸ"
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr "Ä°sim"
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr " TTY"
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr "BoÅŸta"
+
+#: src/pinky.c:427
+msgid "When"
+msgstr " zaman"
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr " yer"
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "Kullanımı: %s [SEÇENEK]... [KULLANICI]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+"\n"
+" -l belirtilen KULLANICIlar için uzun biçemde çıktı üretir\n"
+" -b uzun biçemde kullanıcının ev dizini ve kabuğunu göstermez\n"
+" -h uzun biçemde kullanıcının proje dosyasını göstermez\n"
+" -p uzun biçemde kullanıcının plan dosyasını göstermez\n"
+" -s kısa biçemde çıktı üretir, öntanımlı\n"
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+" -f kısa biçemde sütun başlığı satırını göstermez\n"
+" -w kısa biçemde kullanıcının tam adını göstermez\n"
+" -i kısa biçemde kullanıcının tam adı ve uzak makinayı "
+"göstermez\n"
+" -q kısa biçemde kullanıcının tam adı, uzak makina ve atıl "
+"zamanını\n"
+" göstermez\n"
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+"\n"
+"Basit bir`finger' uygulaması; kullanıcı bilgilerini gösterir.\n"
+"utmp dosyası olarak %s kullanılacaktır.\n"
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr ""
+"kullanıcı adı belirtilmemiş; -l kullanırken en az bir tane belirtilmeli"
+
+#: src/pr.c:807 src/pr.c:817
+#, fuzzy
+msgid "page range"
+msgstr "Dosya aralığı `%s'"
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "`--pages=İLK_SAYFA[:SON_SAYFA]' argüman eksik"
+
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "Geçersiz sayfa aralığı `%s'"
+
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "`-l SAYFA_UZUNLUĞU' geçersiz satır sayısı: `%s'"
+
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "`-N SAYI' geçersiz başlangıç satır numarası: `%s'"
+
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "`-o KENAR' geçersiz satır göreli konumu: `%s'"
+
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-w SAYFA_GENİŞLİĞİ' geçersiz harf sayısı: `%s'"
+
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "`-W SAYFA_GENİŞLİĞİ' geçersiz harf sayısı: `%s'"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "Paralel yazdırma yapılırken sütun sayısı belirtilemez."
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "Hem paralel yazım, hem altalta yazım yapılamaz."
+
+#: src/pr.c:1202
+#, fuzzy, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "`-%c' argüman içinde fazla harf veya geçersiz sayı: `%s'"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "sayfa genişliği çok dar"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+"başlangıç sayfa numarası %<PRIuMAX> sayfa sayısı %<PRIuMAX> değerini aşıyor"
+
+#: src/pr.c:2406
+#, c-format
+msgid "Page number overflow"
+msgstr "Sayfa numarası taşması"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr "Sayfa %<PRIuMAX>"
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+"DOSYA(ları)yı kolonlara ayırır veya sayfalandırır ve yazar .\n"
+"\n"
+
+#
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +ILK_SAYFA[:SON_SAYFA], --pages=ILK_SAYFA[:SON_SAYFA]\n"
+" yazmaya ILK_SAYFA'dan baÅŸlar (SON_SAYFA \n"
+" belirtilmiÅŸse SON_SAYFA'da durur)\n"
+" -SÃœTUN, -columns=SÃœTUN\n"
+" yazıyı SÜTUN sütuna ayırır , ve -a seçeneği \n"
+" verilmemişse sütunları yukardan aşağı yazar. \n"
+" Her sayfada tüm sütunların satır sayılarını \n"
+" aynı yapar\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across satırları yukardan aşağı yerine soldan sağa yazar.\n"
+" bu seçenek -KOLON ile kullanılır\n"
+" -c, --show-control-chars\n"
+" ÅŸapka(^G) ve sekizli ters kesik notasyonunu \n"
+" kullanarak kontrol karakterlerini de gösterir\n"
+" -d, --double-space\n"
+" çift aralık bırakarak yazar\n"
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=FORMAT\n"
+" başlık tarihini yazarken FORMAT'ı kullanır\n"
+" -e[KARAKTER[GENISLIK]], --expand-tabs[=KARAKTER[GENISLIK]]\n"
+"\t\t KARAKTER(KARAKTER belirtilmediÄŸinde TAB) yerine \n"
+" GENISLIK(GENISLIK belirtilmediÄŸinde 8) tane \n"
+" boÅŸluk koyar\n"
+" -F, -f, --form-feed\n"
+" yenisatır karakteri yerine (\\n) formfeed (\\f) \n"
+" karakteri kullanarak sayfaları ayırır\n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h BASLIK, --header=BASLIK\n"
+" Başlık olarak dosya ismi yerine BASLIK'ı\n"
+" kullanır ( başlık ortalanarak yazılır),\n"
+" -h \"\" boş bir satır yazar, -h\"\" kullanmayın\n"
+" -i[KAR[GEN]], --output-tabs[=KAR[GEN]]\n"
+" boşluk gördüğü yere GEN tane KAR koyar. GEN belirtil-\n"
+" mediÄŸinde 8 , KAR belirtilmediÄŸinde TAB\n"
+" kullanır\n"
+" -J, --join-lines birden fazla kolondan oluşan çıktılarda \n"
+" kolonları birleştirip bir satır oluşturur\n"
+" -W seçeneğinin satırları kısaltmasına izin vermez,\n"
+" kolonları hizalamaz, --sep-string[=KAR] ayraçları\n"
+" belirler\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l SAYFA_UZUNLUGU, --length=SAYFA_UZUNLUGU\n"
+" sayfa uzunluğunu SAYFA_UZUNLUGU yapar. Bu seçenek "
+"kullanıl-\n"
+" madıkca sayfa uzunluğu 56 satırdır. -F seçeneği "
+"kullanıl-\n"
+" dığında sayfa uzunluğu 63 tür.\n"
+" -m, --merge tüm dosyaları yan yana yazar, her biri bir kolona, çok "
+"uzun\n"
+" satırları keser, ve yan yana gelen kolonlar tam bir "
+"satır\n"
+" oluşturuyorlarsa, onları da büyük tek bir kolonda "
+"toplar \n"
+" ( -J deki gibi)\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[AYIR[SAY]], --number-lines[=AYIR[SAY]]\n"
+" satırları SAY basamak kullanarak numaralandırır\n"
+" ve satır numarasını satırdan AYIR ile ayırır. (AYIR \n"
+" belirtilmediğinde TAB kullanır, SAY belirtilmediğinde \n"
+" 5 kullanır)\n"
+" -N SAYI, --first-line-number=SAYI\n"
+" satır numaralandırmaya SAYI'dan başlar(örnek: pr -N 5 "
+"ilk\n"
+" satıra 5 , ikinci satıra 6,... numaralarını verir)\n"
+" (+ILK_SAYFA seçeneğine de bakınız)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o KENAR, --indent=KENAR\n"
+" her sayfanın başında KENAR boşluk bırakır. Bu seçenek\n"
+" -w veya -W yu etkilemez, bırakılan boşluk \n"
+" SAYFA_GENISLIGI'ne eklenir\n"
+" -r, --no-file-warnings\n"
+" belirtilen dosyayı açamadığında hata mesajı vermez\n"
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[KAR], --seperator[=KAR]\n"
+" kolonları tek bir karakterle (KAR) ayır, bu seçenek\n"
+" kullanılmadığında kolonlar TAB ile ayrılır. Bu seçenek\n"
+" diğer hiçbir seçeneğin satırları kısaltmasına\n"
+" izin vermez\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -SDIZI, --sep-string[=DIZI]\n"
+
+#: src/pr.c:2846
+#, fuzzy
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" kolonları DIZI ile ayır. DIZI'yi \"\" isaretleri\n"
+" arasında yazmayın. DIZI belirtilmediğinde kolonları \n"
+" birbirinden ayırmaz\n"
+" bu seçenek diğer kolon seçeneklerini etkilemez\n"
+" -t, --omit-header sayfalara başlık ve bitiş koymaz\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" dosyaları sayfalandırmaz, başlık ve bitiş koymaz\n"
+" -v, --show-nonprinting\n"
+" sekizli terskesik notasyonunu kullanarak ekranda\n"
+" normalde gözükmeyecek karakterleri de yazar\n"
+" -w SAYFA_GENISLIGI, --width=SAYFA_GENISLIGI\n"
+" sayfa genişliğini birden fazla kolon olan çıktılar için\n"
+" SAYFA_GENISLIGI yapar. Sayfa genişliği -w kullanıl-\n"
+" madığında 72 dir. -s[KAR] seçeneği kullanıldığında "
+"sayfa\n"
+" genişliği otomatik olarak 72 olmaz. Hem -s seçeneğini\n"
+" kullanmak hem de sayfa genişliğinin ayarlı olmasını "
+"istiyor-\n"
+" sanız -w seçeneğini mutlaka kullanın\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W SAYFA_GENISLIGI, --page-width=SAYFA_GENISLIGI\n"
+" sayfa genişliğini her çeşit çıktı için SAYFA_GENISLIGI\n"
+" yapar( -W kullanılmadığında sayfa genişliği 72'dir ). -"
+"J \n"
+" seçeneği belirtilmedikçe uzun satırları keser. Bu "
+"seçenek\n"
+" ve -s ,-S seçenekleri birbirlerini etkilemezler\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"pr -l nn seçeneği nn 11 den küçükse -T seçeneği de verilmiş gibi kabul eder\n"
+"nn üçten küçükse ve -F de verilmişse -T gene verilmiş kabul edilir. DOSYA \n"
+"belirtilmediÄŸinde veya - olduÄŸunda standart girdiden okur\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+"Kullanımı: %s [DEĞİŞKEN]...\n"
+" veya: %s SEÇENEK\n"
+"Çevre DEĞİŞKENi verilmezse tümünü listeler.\n"
+"\n"
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr "uyarı: %s: karakter sabitini izleyen karakter(ler) yoksayıldı"
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kullanımı: %s BİÇEM [ARGÜMAN]...\n"
+" veya: %s SEÇENEK\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+"ARGÜMAN(lar)ı BİÇEM'e göre gösterir.\n"
+"\n"
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+"\n"
+"BİÇEM çıktıyı, C printf işlevindeki gibi biçemler. Yorumlanan işlemimleri:\n"
+"\n"
+" \\\" çift tırnak karakterini gösterir\n"
+" \\NNN Sekizlik değeri NNN olan karakteri gösterir (3 haneye kadar)\n"
+" \\\\ tersbölü karakterini gösterir\n"
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+" \\a uyarı zili (BEL)\n"
+" \\b bir önceki karakteri siler\n"
+" \\c alt satıra geçme karakterini engeller\n"
+" \\f sayfa sonuna kadar imleci ilerletir\n"
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n alt satıra geçer\n"
+" \\r imleci satır başına taşır\n"
+" \\t imleci yatay sekme kadar ilerletir\n"
+" \\v imleci düşey sekme kadar ilerletir\n"
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+" \\xHH onaltılık değeri HH olan bayt (2 haneye kadar)\n"
+" \\uHHHH onaltılık değeri HHHH olan Unicode (ISO/IEC 10646) karakteri (4 "
+"haneli)\n"
+" \\UHHHHHHHH onaltılık değeri HHHHHHHH olan Unicode karakteri (8 hane)\n"
+
+#: src/printf.c:129
+#, fuzzy
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+" %% tek bir % işaretini gösterir\n"
+" %b ARGÜMAN `\\' öncelemeli bir dizge olarak yorumlanır\n"
+"\n"
+"ve ARGÜMANlar önce uygun bir türe dönüştürülerek diouxXfeEgGcs\n"
+"karakterlerinden biri ile biten tüm C biçem tanımlamaları kullanılır.\n"
+"DeÄŸiÅŸken geniÅŸlikler de desteklenmiÅŸtir.\n"
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr "%s: bir sayısal argüman gerekli"
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr "%s: değer tamamen dönüştürülmedi"
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr "öncelemde onaltılık sayı yok"
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "evrensel karakter ismi \\%c%0*x geçersiz"
+
+#: src/printf.c:550
+#, c-format
+msgid "invalid field width: %s"
+msgstr "geçersiz satır genişliği: %s"
+
+#: src/printf.c:585
+#, c-format
+msgid "invalid precision: %s"
+msgstr "geçersiz kesinlik: %s"
+
+#: src/printf.c:612
+#, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%.*s: geçersiz çevrim tanımı"
+
+#: src/printf.c:683
+#, fuzzy, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr "uyarı: `%s'den başlayarak fazladan argümanlar yoksayıldı"
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr "F. Pinard"
+
+#: src/ptx.c:422
+#, fuzzy, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (`%s' düzenli ifadesi için)"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"Kullanım: %s [SEÇENEK]... [GİRDİ]... (-G olmaksızın)\n"
+" veya: %s -G [SEÇENEK]... [GİRDİ [ÇIKTI]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"girdi dosyasındaki kelimelerin (contextleriyle beraber),bir permutasyonunu \n"
+" oluÅŸturur.\n"
+
+#: src/ptx.c:1894
+#, fuzzy
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+" -A, --auto-reference Satırbaşlarına referans bilgileri koyar\n"
+" -C, --copyright Kopyalama hakkı bilgilerine ve şartlarını\n"
+" gösterir\n"
+" -G, --traditional System V'deki ptx gibi davranır\n"
+" -F, --flag-truncation=DİZGE Satırları kesmesi gerektiğinde satırı \n"
+" kestiÄŸi yeri DÄ°ZGE (string) ile belirtir\n"
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+" -M, --macro-name=DİZGE TeX formatında çıktı oluştururken `xx' "
+"yerine\n"
+" DİZGE makrosunu kullanır\n"
+" -O, --format=roff roff direktifleri formatında çıktı "
+"oluÅŸturur\n"
+" -R, --right-side-refs -A seçeneğinde oluşturulan referansları \n"
+" satırbaşına değil, satırsonuna koyar( -A \n"
+" ile beraber kullanımı anlamlı bir seçenek)\n"
+" -S, --sentence-regexp=REGEXP satır sonlarını REGEXP'i (REGEXP = regular\n"
+" expression (düzenli ifade) ) \n"
+" -T, --format=tex TeX formatında çıktı oluştur\n"
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+" -W, --word-regexp=REGEXP anahtar kelimeleri REGEXP'i kullanarak \n"
+" belirler\n"
+" -b, --break-file=DOSYA DOSYA'daki karakterlere bakarak kelime \n"
+" sonlarını belirler\n"
+" -f, --ignore-case büyük/küçük harf ayrımı yapmaz\n"
+" -g, --gap-size=SAYI çıktının kolonları arasındaki boşluk "
+"geniÅŸliÄŸi\n"
+" SAYI olur\n"
+" -i, --ignore-file=DOSYA girdi üzerinde çalışırken DOSYA daki \n"
+" kelimeleri dikkate almaz\n"
+" -o, --only-file=DOSYA girdide sadece DOSYA'daki kelimeleri\n"
+" dikkate alır\n"
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+" -r, --references her satırın ilk alanını referans olarak \n"
+" kullanır\n"
+" -t, --typeset-mode [henüz çalışmayan bir seçenek]\n"
+" -w, --width=SAYI çıktıdaki kolon sayısı SAYI olur \n"
+" (referans hariç)\n"
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"DOSYA belirtilmediÄŸinde veya - olduÄŸunda standart girdiden okur. \n"
+"`-F /' seçeneği verilmiş gibi çalışır\n"
+
+#: src/ptx.c:2016
+#, c-format
+msgid "invalid gap width: %s"
+msgstr "geçersiz boşluk genişliği: %s"
+
+#: src/ptx.c:2089
+#, fuzzy, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr "--allow-missing seçeneği kaldırılacaktır; yerine --retry kullanın"
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+"Çalışılan dizinin tam dosya yolunu gösterir.\n"
+"\n"
+
+#: src/pwd.c:160
+#, c-format
+msgid "failed to chdir to %s"
+msgstr "%s dizinine chdir başarısız"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, c-format
+msgid "failed to stat %s"
+msgstr "%s durumlanamadı"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr "%s içinde eşleşen i-düğümlü dizin girdisi bulunamadı"
+
+#: src/pwd.c:306
+#, c-format
+msgid "ignoring non-option arguments"
+msgstr "seçenek olmayan argümanlar yoksayılıyor"
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Kullanım: %s [SEÇENEK]... [DOSYA]\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+"Bir sembolik bağın değerini standart çıktıda gösterir.\n"
+"\n"
+
+#: src/readlink.c:70
+#, fuzzy
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+" -f, --canonicalize verilen yoldaki her bileÅŸende her sembolik\n"
+" bağı döngüsel olarak izler;\n"
+" en son yol bileÅŸeni haricindeki herÅŸey var\n"
+" olmalıdır.\n"
+" -e, --canonicalize-existing verilen yoldaki her bileÅŸende her sembolik\n"
+" bağı döngüsel olarak izler;\n"
+" bütün yol bileşenleri var olmalıdır.\n"
+" -m, --canonicalize-missing verilen yoldaki her bileÅŸende her sembolik\n"
+" bağı döngüsel olarak izler;\n"
+" bileşenlerin var olması gerekmez.\n"
+" -n, --no-newline sonlayan yeni satırı yazdırmaz.\n"
+" -q, --quiet,\n"
+" -s, --silent çoğu hata iletisini bastırır\n"
+" -v, --verbose hata iletilerini verir\n"
+
+#: src/readlink.c:78
+#, fuzzy
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+" -f, --canonicalize verilen yolun bileÅŸenlerinde yer alan her "
+"sembolik\n"
+" bağı döngüsel olarak takip eder.\n"
+" -n, --no-newline en sonuna yenisatır eklemez.\n"
+" -q, --quiet,\n"
+" -s, --silent pek çok hata iletisini göstermez.\n"
+" -v, --verbose hata iletilerini gösterir.\n"
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "%s dizinine chdir başarısız"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "dizin %s açılamadı"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, fuzzy, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "%s dev/ino'yu deÄŸiÅŸtirdi"
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "%s dizini oluşturulamıyor"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"Uyarı: Döngülü dizin yapısı\n"
+"Bu hemen her zaman bozulmuş bir dosya sisteminiz olduğunu gösterir.\n"
+"SİSTEM YÖNETİCİNİZE HABER VERİN.\n"
+"Aşağıdaki dizin bu çevrimin bir parçası:\n"
+" %s\n"
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s: korumalı dizin %s'nin içine inilsin mi?"
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s: %s dizininin içine inilsin mi?"
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s: korumalı %s %s silinsin mi?"
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s: %s %s silinsin mi?"
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "%s dizini silindi\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "%s dizinine chdir başarısız"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "dizin %s silinemiyor"
+
+#: src/remove.c:1450
+#, fuzzy, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr "'..''e %s dizininden çıkılamaz"
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "dizin %s silinemiyor"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "dizin %s silinemiyor"
+
+#: src/remove.c:1558
+#, c-format
+msgid "cannot restore current working directory"
+msgstr "çalışılan dizine geri dönülemedi"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "Kullanım: %s [SEÇENEK]... DOSYA...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --no-preserve-root `/' için özel işlem yapma (öntanımlı)\n"
+" --preserve-root `/' üzerinde döngüsel işlem yapma\n"
+" -r, -R, --recursive yinelemeli olarak dizinlerin içlerindekileri siler\n"
+" -v, --verbose ne yapıldığını anlatır\n"
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"Adı '-' ile başlayan bir dosyayı silmek için, örneğin '-foo' \n"
+"aşağıdaki komutlardan birini kullanın:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"Not: Eğer bir dosyayı silerken rm kullandıysanız, genelde o dosyanın\n"
+"içindekileri geri almanız mümkündür. Eğer dosya içeriğinin gerçekten geri\n"
+"alınamaz olarak silinmesini istiyorsanız, shred komutunu kullanın.\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s: %s %s silinsin mi?"
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "dizin %s siliniyor"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "Kullanım: %s [SEÇENEK]... DİZİN...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"DÄ°ZÄ°N(ler) boÅŸ ise siler.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" yalnızca bir dizinin boş olmamasından kaynaklanan \n"
+" hataları dikkate almaz\n"
+
+#: src/rmdir.c:148
+#, fuzzy
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents DÄ°ZÄ°N'i siler, ondan sonra o yolun her bileÅŸenindeki\n"
+" dizinleri silmeye çalışır. Örnek: 'rmdir -p a/b/c'\n"
+" rmdir a/b/c a/b a' komutuna eÅŸittir.\n"
+" -v, --verbose işlenen her dizin için durum çıktılar\n"
+
+#: src/seq.c:74
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"Kullanımı: %s [SEÇENEK]... SON\n"
+" veya: %s [SEÇENEK]... İLK SON\n"
+" ya da: %s [SEÇENEK]... İLK ARTIŞ SON\n"
+
+#: src/seq.c:79
+#, fuzzy
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+"İLK'ten SON'a kadar rakamları, ARTIŞ atlayarak yazar.\n"
+"\n"
+" -f, --format=BİÇEM printf tarzı gerçel sayı BİÇEMi kullanır "
+"(öntanımlı: %g)\n"
+" -s, --separator=DİZGE rakamları DİZGE ile ayırır (öntanımlı:\\n)\n"
+" -w, --equal-width rakamları sıfırla yastıklayarak eşit genişliğe "
+"getirir\n"
+
+#: src/seq.c:88
+#, fuzzy
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+"\n"
+"İLK ve ARTIŞ belirtilmemişse öntanımlı olarak 1 kabul edilir.\n"
+"Eğer ARTIŞ verilmemiş ise, SON, İLK'den küçük dahi olsa, 1 olarak kabul "
+"edilir.\n"
+"İLK, ARTIŞ ve SON gerçel sayılar olarak yorumlanır.\n"
+"İLK SONdan küçükse ARTIŞ pozitif, aksi takdirde negatif olmalıdır.\n"
+"Belirtildiği takdirde BİÇEM en azından bir tane printf tarzı gerçel\n"
+"sayı çıktı biçemi (%e, %f, %g den birini) içermelidir.\n"
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "gerçel sayı argüman geçersiz: %s"
+
+#: src/seq.c:342
+#, fuzzy, c-format
+msgid "invalid format string: %s"
+msgstr "biçem dizgesi geçersiz: `%s'"
+
+#: src/seq.c:364
+#, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr "eş genişlikli dizgeler için biçem dizgesi belirtilmeyebilir"
+
+#: src/setuidgid.c:51
+#, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kullanımı: %s KULLANICIADI BİÇEM [ARGÜMAN]...\n"
+" veya: %s SEÇENEK\n"
+
+#: src/setuidgid.c:57
+#, fuzzy
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+"Ek grupları bırakır, belirtilen KULLANICIADI'nın kullanıcı ve grup\n"
+"kimliklerini alır ve KOMUT'u belirtilen ARGÜMAN'larla çalıştırır.\n"
+"Eğer gereken UID ve GID'i alamamışsa 111 durumu ile çıkar.\n"
+"Aksi halde, KOMUT'un çıkış durumu ile çıkar.\n"
+"Bu program yalnızca root (UID=0) tarafından çalıştırıldığı zaman "
+"faydalıdır.\n"
+"\n"
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr "bilinmeyen kullanıcı kimliği: %s"
+
+#: src/setuidgid.c:109
+#, c-format
+msgid "cannot set supplemental group"
+msgstr "ek grup atanamadı"
+
+#: src/setuidgid.c:114
+#, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "grup kimliği %lu olarak atanamıyor"
+
+#: src/setuidgid.c:118
+#, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "kullanıcı kimliği %lu olarak atanamıyor"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "Kullanım: %s [SEÇENEK] DOSYA [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"Belirtilen DOSYA(ların) üzerine bir kaç defa yazarak pahalı donanım \n"
+"çözümleri ile bile dosya içeriğinin kurtarılabilmesini zorlaştırır.\n"
+"\n"
+
+#: src/shred.c:174
+#, fuzzy, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force eÄŸer gerekli olursa yazma izni verir\n"
+" -n, --iterations=N Öntanımlı (%d) defa üzerine yazma yerine N defa "
+"üzerine\n"
+" yazar\n"
+" -s, --size=N N sayıda baytı bu işlemden geçirir\n"
+" (k, M, G gibi sonekler kabul edilir)\n"
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove üzerine yazdıktan sonra dosyayı sıfırlar ve siler\n"
+" -v, --verbose ilerlemeyi gösterir\n"
+" -x, --exact dosya boyutunu sonraki tam bloÄŸa yuvarlamaz\n"
+" bu işlem, normal dosya olmayan dosyalar için öntanımlıdır\n"
+" -z, --zero işlemi gizlemek için en son olarak üzerine sıfırlarla "
+"yazar\n"
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"Eğer DOSYA - ise, standart çıktıyı bu işleme tabi tutar\n"
+"\n"
+"Eğer --remove (-u) belirtilmişse DOSYA(ları) siler. Öntanımlı değer "
+"dosyaları\n"
+"silmez çünkü bu komut genelde /dev/hda gibi aygıt dosyaları üzerinde \n"
+"çalıştırılır ve o dosyalar genelde silinmemelidir. Normal dosyalar "
+"üzerinde\n"
+"çalıştırıldığı zaman genelde --remove seçeneği kullanılır.\n"
+"\n"
+
+#: src/shred.c:199
+#, fuzzy
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"DİKKAT: shred komutu dosya sisteminin datayı yerinde \n"
+"üzerine yazdığı varsayımına dayanır. Bu genelde yapılan işlemdir, \n"
+"fakat pek çok modern dosya sistemi bu varsayıma uymaz. Aşağıda shred\n"
+"komutunun işe yaramadığı dosya sistemleri örneklenmiştir:\n"
+"\n"
+
+#: src/shred.c:207
+#, fuzzy
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"* AIX ve Solaris ile gelen (ve JFS, ReiserFS, XFS vs.) gibi kayıt düzenli "
+"veya\n"
+" jurnalli dosya sistemleri\n"
+"\n"
+"* RAID gibi çoklu data yazan ve bazı yazma işlemleri başarısız olsa bile "
+"devam\n"
+" edebilen dosya sistemleri\n"
+"\n"
+"* Network Appliance'ın NFS sunucusu gibi dosya sisteminin bir görüntüsünü \n"
+" kaydeden dosya sistemleri\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+#, fuzzy
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+"* geçici yerlerde arabellek oluşturan dosya sistemleri (NFS sürüm 3 \n"
+" istemcileri gibi)\n"
+"\n"
+"* sıkıştırılmış dosya sistemleri\n"
+"\n"
+"Buna ek olarak, dosyasistem yedekleri ve uzak yansılar dosyanın\n"
+"silinemeyen kopyalarını taşıyabilir ve bu shred işleminden geçirilmiş\n"
+"bir dosyanın tekrar oluşturulabilmesini sağlayabilir.\n"
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr "%s: fdatasync başarısız"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr "%s: fsync başarısız"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s: geri gelinemiyor"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%s: geçiş %lu/%lu (%s)"
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s %s göreli konumunda yazdırma hatası"
+
+#: src/shred.c:478
+#, c-format
+msgid "%s: lseek failed"
+msgstr "%s: arama (lseek) başarısız"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s: dosya çok büyük"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%s: geçiş %lu/%lu (%s)...%s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%s: geçiş %lu/%lu (%s)...%s/%s %d%%"
+
+#: src/shred.c:776
+#, c-format
+msgid "%s: fstat failed"
+msgstr "%s: fstat başarısız"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s: geçersiz dosya tipi"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s: dosya büyüklüğü negatif"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s: kısaltmada hata"
+
+#: src/shred.c:889
+#, c-format
+msgid "%s: fcntl failed"
+msgstr "%s: fcntl başarısız"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s: yalnızca eklenebilir kipte dosya belirteçine shred uygulanamaz"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s: siliniyor"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s: %s olarak yeniden adlandırıldı"
+
+#: src/shred.c:1018
+#, c-format
+msgid "%s: failed to remove"
+msgstr "%s: silinemedi"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s: silindi"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, c-format
+msgid "%s: failed to close"
+msgstr "%s: kapatılamadı"
+
+#: src/shred.c:1065
+#, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s: yazmak için açılamadı"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s geçersiz sayıda geçiş"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "birden fazla çıktı dosyası belirtilmiş"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s: geçersiz dosya büyüklüğü"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"Kullanımı: %s [SEÇENEK]... SON\n"
+" veya: %s [SEÇENEK]... İLK SON\n"
+" ya da: %s [SEÇENEK]... İLK ARTIŞ SON\n"
+
+#: src/shuf.c:57
+#, fuzzy
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+"Her DOSYA'daki satırların seçilen bölümlerini standart çıktıya yazdırır.\n"
+"\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "birden fazla -l veya -t seçeneği belirtilmiş"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "geçersiz girdi bayrağı: %s"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "geçersiz satır genişliği: %s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, c-format
+msgid "multiple output files specified"
+msgstr "birden fazla çıktı dosyası belirtilmiş"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "kip ve --reference seçenekleri birleştirilemez"
+
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr "`%s' operandı fazla"
+
+#: src/sleep.c:47
+#, fuzzy, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+"Kullanımı: %s SAYI[SONEK]...\n"
+" veya: %s SEÇENEK\n"
+"SAYI saniye kadar bekletir.\n"
+"SONEK saniye için `s' (öntanımlı), dakika için `m', saat için `h' ve \n"
+"gün için `d' olabilir. Birçok benzerinde SAYI için bir tamsayı\n"
+"değer gerekirken, burada SAYI bir gerçel sayı olabilir.\n"
+"\n"
+
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "`%s' zaman aralığı geçersiz"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, c-format
+msgid "cannot read realtime clock"
+msgstr "gerçekzaman saati okunamıyor"
+
+#: src/sort.c:310
+#, fuzzy
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"DOSYA(ların)nın sıralanmış halini standart çıktıya yazar.\n"
+"sort sıralama yaparken her satırın belli bir bölümune bakarak sıralama\n"
+"yapar. Baktığı bölüme sıralama anahtarı denir. Bu anahtarı aşağıdaki\n"
+"seçenekleri kullanarak belirtebilirsiniz. Seçeneklerden sonra anahtarların\n"
+"nasıl oluşturulduğuyla ilgili bilgi bulabilirsiniz.\n"
+"\n"
+"Sıralama seçenekleri:\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+#, fuzzy
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks sıralanacak alanlarda ve sıralama \n"
+" anahtarlarından önce gelen boşlukları "
+"dikkate \n"
+" almaz\n"
+" -d, --dictionary-order anahtarlarda sadece [a-zA-Z0-9] "
+"karakterlerini\n"
+" dikkate alır\n"
+" -f, --ignore-case sıralarken büyük/küçük harf farklılıklarını \n"
+" dikkate almaz \n"
+
+#: src/sort.c:326
+#, fuzzy
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort sayısal değere bakarak sıralar, -n seçeneğini "
+"de\n"
+" de verilmiÅŸ kabul eder \n"
+" ( -n seçeneğinden farkı : 1.e-3 gibi \n"
+" sayıları da okuyabilir. -n seçeneğinden çok \n"
+" daha yavaş çalışır, gerekmedikçe bu seçeneği \n"
+" kullanmayın)\n"
+" -i, --ignore-nonprinting anahtarlarda sadece yazılabilir yazılabilir =\n"
+" printable, Örnekler: a ? < , ...) \n"
+" karakterleri dikkate alır\n"
+" -M, --month-sort anahtarın ilk üç harfini alır, bir ay ismi\n"
+" nin kısaltmasıysa, ayların sırasına göre\n"
+" sıralar. Ay isimlerinin kısa yazılış-\n"
+" larını LC_TIME çevre değiskeninin\n"
+" belirttigi locale dosyasından bakar\n"
+" (çevre değişkeni = environment variable)\n"
+" -n, --numeric-sort sayısal değerlere göre sıralar\n"
+" -r, --reverse tersine sıralar\n"
+"\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+#, fuzzy
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+"Diger seçenekler:\n"
+"\n"
+" -c, --check dosyalar sıralı mı kontrol eder; sıralamaz\n"
+" -k, --key=POS1[,POS2] Sıralama anahtarı belirtmek için kullanılan \n"
+" seçenek:\n"
+" POS1 de baÅŸlayan POS2 de biten bir anahtar \n"
+" belirler (alan numarasını ve karakterin\n"
+" kelime içindeki yerini 1'den başlayarak sayar)\n"
+" -m, --merge sıralama yapma; daha önceden sıralanmış \n"
+" dosyaları birleştirir\n"
+" -o, --output=DOSYA sonucu DOSYA'ya yazar\n"
+" -s, --stable Eğer tüm satırlar karşılaştırıldıklarında eşit\n"
+" gözüküyorlarsa dosyayı aynı bırakır\n"
+" (bu seçenek kullanılmadığında sort yukarda \n"
+" belirtilen durumla karşılaştığında satırları \n"
+" baştan sona bayt bayt karşılaştırır)\n"
+" -S, --buffer-size=SAYI ana bellekten SAYI genişliğinde alan kullanır\n"
+
+#: src/sort.c:351
+#, fuzzy, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-seperator=SEP kelimeleri boşluk yerine SEP ile ayrılmış \n"
+" kabul eder\n"
+" -T, --temporary-directory=DIR geçici dizin olarak $TMPDIR veya %s "
+"yerine \n"
+" DIR'ı kullanır. \n"
+" -u, --unique -c ile kullanıldığında girdide her satırın \n"
+" özgün olup olmadığını da kontrol eder. -c ile\n"
+" kullanılmadığında sıralama yaparken aynı olan \n"
+" satırlardan sadece birini yazar \n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -z, --zero-terminated satırları satır-sonu karakteri (\\n) \n"
+" yerine 0'la (0 baytı) bitirir\n"
+
+#: src/sort.c:363
+#, fuzzy
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"Sıralama anahtarları POS1, POS2 argümanları F[.C][SEC] ile belirtilir.\n"
+"Burda F alan numarası C de karakterin alandaki yeridir.-k seçeneği "
+"verildiÄŸinde\n"
+"alan numarası ve karakterine alandaki yeri 1'den başlanarak sayılır (eski \n"
+"kullanım şeklinde 0'dan başlanarak sayılır). SEC ise yukarda belirtilen\n"
+"sıralama seçeneklerinden oluşur. (Hem en başta hem POS1 veya POS2 nin \n"
+"içinde sıralama seçeneği belirtilmişse POS1, POS2 nin içindekiler "
+"kullanır).\n"
+"Anahtar belirtilmemişse sort bütün satırı anahtar olarak kullanır.\n"
+"\n"
+"SAYI'dan sonra aşağıdaki soneklerden biri gelebilir:\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"%%(hafızayı yüzdeyle belirtmek için) , b, k (varsayılan), M, G, T, P, E, Z, "
+"Y.\n"
+"\n"
+"DOSYA verilmediÄŸinde veya - olduÄŸunda standart girdiden okur.\n"
+"\n"
+"*** UYARI ***\n"
+"Çevre değişkenlerince belirlenen locale dosyası sıralamayı etkiler.\n"
+"bayt değerlerine göre sıralama için LC_ALL çevre değişkenine C değerini "
+"atayın.\n"
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "%s'e yazılıyor"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "geçici dosya oluşturulamadı"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "açma işlemi başarısız"
+
+#: src/sort.c:758
+msgid "fflush failed"
+msgstr "fflush başarısız"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "kapatma işlemi başarısız"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "açma işlemi başarısız"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr ""
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "geçici dosya oluşturulamadı"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "geçici dosya oluşturulamadı"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr ""
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "%s dizini oluşturulamıyor"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "yazma başarısız oldu"
+
+#: src/sort.c:975
+#, c-format
+msgid "warning: cannot remove: %s"
+msgstr "uyarı: %s silinemedi"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "sıralama boyu"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "stat başarısız"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "okuma başarısız oldu"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s: sırasız: "
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "standart hata"
+
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s: geçersiz alan tanımı `%s'"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s: `%s' başlangıcında geçersiz sayım"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "`-' den sonra geçersiz sayı"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "`.' dan sonra geçersiz sayı"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "alan tanımında fazla harf"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "birden fazla hedef dizin belirtilmiÅŸ"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "alan başlangıcında geçersiz sayı"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "alan numarası sıfır"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "sıralama anahtarında belirtilen karakter yeri sıfır"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "`,' den sonra geçersiz sayı"
+
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "-c seçeneği ile ekstra işlenen %s kullanılamaz"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "Kullanım: %s [SEÇENEK] [GİRDİ [ÖNEK]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"GIRDI'yi eşit büyüklükte parçalara bölüp ONEKaa, ONEKab, ... isimli\n"
+"dosyalara kor. Ötanımlı boy 1000 satır ve öntanımlı ONEK `x'tir.\n"
+"GIRDI belirtilmediğinde veya - olduğunda standart girdiyi kullanır\n"
+"\n"
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=N parça isimlerinin ONEK'ten sonraki bölümlerinin \n"
+" uzunluğu N olur ( -a kullanılmadıkça %d) \n"
+" -b, --bytes=SAYI dosyayı N bayt parçalara böler\n"
+" -C, --line-bytes=SAYI parçaların her satırında en fazla N bayt olur\n"
+" -d, --numeric-suffixes alfabetik değil, nümerik sonekler kullanır\n"
+" -l, --lines=SAYI her parçada N tane satır olur\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+" --verbose her parçayı dosyasına koymadan önce \n"
+" ne yaptığına dair bilgi verir (bilgi standart "
+"hata'ya\n"
+" yazılır)\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"SAYI, bir katsayı soneki içerebilir: 512 için b, 1K için k, 1 Meg için m.\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "kullanacak parça ismi kalmadı"
+
+#: src/split.c:211
+#, fuzzy, c-format
+msgid "creating file %s\n"
+msgstr "`%s' dosyası oluşturuluyor\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "-C -l -b seçenekleri beraber kullanılmaz"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s: -a seçeneğine verilen arguman geçersiz"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s: geçersiz bayt sayısı"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s: geçersiz satır sayısı"
+
+#: src/split.c:487
+#, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "satır sayma seçeneği -%s%c... fazla büyük"
+
+#: src/split.c:518
+#, c-format
+msgid "invalid number of lines: 0"
+msgstr "geçersiz satır sayısı: 0"
+
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s: `%c%s' seçeneği bilinmiyor\n"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%%%c: yönerge geçersiz"
+
+#: src/stat.c:726
+#, fuzzy, c-format
+msgid "warning: backslash at end of format"
+msgstr "dizge sonunda geçersiz terskesik gösterimi"
+
+#: src/stat.c:755
+#, c-format
+msgid "cannot read file system information for %s"
+msgstr "%s için dosyasistem bilgisi okunamadı"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "Kullanım: %s [SEÇENEK] DOSYA...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+#, fuzzy
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"\n"
+"Dosyalar için geçerli sözdizimler (--file-system seçeneği olmaksızın)\n"
+"\n"
+" %A İnsan tarafından okunabilir biçemde erişim hakları\n"
+" %a Sekizlik değer halinde erişim hakları\n"
+" %B `%b' ile verilen her bloÄŸun bayt cinsinden boyu\n"
+" %b Ayrılan blok sayısı (bkz. %B)\n"
+
+#: src/stat.c:857
+#, fuzzy
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+" %D Onaltılık düzende aygıt numarası\n"
+" %d Onluk düzende aygıt numarası\n"
+" %F Dosya türü\n"
+" %f Onaltılık düzende ham (raw) kip\n"
+" %G Sahibin grup adı\n"
+" %g Sahibin grup kimlik no'su\n"
+
+#: src/stat.c:865
+#, fuzzy
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+" %h Sabit bağ sayısı\n"
+" %i Idüğüm sayısı\n"
+" %N Eğer sembolik bağ ise çözümlenmiş ve tırnak içine alınmış dosya adı\n"
+" %n Dosya adı\n"
+" %o IO blok büyüklüğü\n"
+" %s Bayt cinsinden toplam büyüklük\n"
+" %T Onaltılık minör aygıt türü\n"
+" %t Onaltılık majör aygıt türü\n"
+
+#: src/stat.c:875
+#, fuzzy
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+" %U Sahibin kullanıcı adı\n"
+" %u Sahibin kimlik no\n"
+" %X Başlangıçtan beri saniye cinsinden son erişim zamanı\n"
+" %x Son erişim zamanı\n"
+" %Y Başlangıçtan beri saniye cinsinden son değişim zamanı\n"
+" %y Son değişim zamanı\n"
+" %Z Başlangıçtan beri saniye cinsinden son dosya değişim zamanı\n"
+" %z Son dosya değişim zamanı\n"
+"\n"
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"Dosya sistemleri için geçerli biçem dizileri:\n"
+"\n"
+" %a Normal kullanıcıya izin verilen boş bloklar\n"
+" %b Dosya sistemindeki toplam veri blokları\n"
+" %c Dosya sistemindeki toplam dosya düğümleri\n"
+" %d Dosya sisteminde boş dosya düğümleri\n"
+" %f Dosya sisteminde boÅŸ bloklar\n"
+
+#: src/stat.c:896
+#, fuzzy
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+" %i Dosya sistem kimlik no (onaltılık)\n"
+" %l Dosya isimlerinin maksimum uzunluÄŸu\n"
+" %n Dosya ismi\n"
+" %s Optimal transfer blok büyüklüğü\n"
+" %T İnsan okuyabilir şekilde tür\n"
+" %t Onaltılık düzende tür\n"
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+"Kullanımı: %s [-F AYGIT] [--file=AYGIT] [AYAR]...\n"
+" veya: %s [-F AYGIT] [--file=AYGIT] [-a|--all]\n"
+" ya da: %s [-F AYGIT] [--file=AYGIT] [-g|--save]\n"
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+"Terminal karakteristiklerini değiştirir ve gösterir.\n"
+"\n"
+" -a, --all tüm ayarları okunabilir biçimde gösterir\n"
+" -g, --save tüm ayarları stty-okuyabilir biçimde gösterir\n"
+" -F, --file=AYGIT stdGirdi yerine belirtilen AYGITI açar ve kullanır\n"
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+"\n"
+"AYARdan önceki seçimlik `-' anlamı ters çevirir. * karakteri POSIX olmayan\n"
+"ayarları gösterir. Hangi ayarların kullanılabileceği sisteme göre değişir.\n"
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+"\n"
+"Özel karakterler\n"
+"* dsusp KRKT KRKT okuma sırasında dur (SIGSTOP) sinyali gönderecektir\n"
+" eof KRKT KRKT dosya sonu karakteri olacak (girdiyi sonlandırır)\n"
+" eol KRKT KRKT satır sonu karakteri olacak\n"
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+"* eol2 KRKT satır sonu için diğer bir KRKT olacaktır\n"
+" erase KRKT KRKT yazılan son karakteri silecektir\n"
+" intr KRKT KRKT bir kesme (SIGINT) sinyali gönderecektir\n"
+" kill KRKT KRKT bulunulan satırı silecektir\n"
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+"* lnext KRKT KRKT izleyen özel karakterin yorumlanmasını engelleyecektir\n"
+" quit KRKT KRKT bir çıkış (SIGQUIT) sinyali gönderecektir\n"
+"* rprnt KRKT KRKT bulunulan satırı yeniden yazacaktır\n"
+" start KRKT KRKT durdurulduktan sonra çıktıyı yeniden başlatacaktır\n"
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+" stop KRKT KRKT çıktıyı durduracaktır\n"
+" susp KRKT KRKT bir terminal dur (SIGSTOP) sinyali gönderecektir\n"
+"* swtch KRKT KRKT başka bir kabuk katmanına geçecektir\n"
+"* werase KRKT KRKT son sözcüğü silecektir\n"
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+"\n"
+"Özel ayarlar:\n"
+" N girdi/çıktı hızlarını N bit/s olarak ayarlar\n"
+" * cols N çekirdeğe terminal genişliğini N karakter olarak bildirir\n"
+"* columns N cols N ile aynı\n"
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+" ispeed N girdi hızını N olarak ayarlar\n"
+"* line N terminal hat disiplinini N yapar\n"
+" min N -icanon ile okumanın tamamlanması için gereken en az "
+"karakter\n"
+" sayısını N yapar\n"
+" ospeed N çıktı hızını N olarak ayarlar\n"
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+"* rows N çekirdeğe terminal satır sayısını N olarak bildirir\n"
+"* size çekirdeğe uygun satır ve sütun sayısını gösterir\n"
+" speed terminal hızını gösterir\n"
+" time N -icanon ile okuma zaman aşımını N/10 saniyeye ayarlar\n"
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+"\n"
+"Denetim ayarları:\n"
+" [-]clocal modem denetim sinyallerini geçersiz kılar\n"
+" [-]cread girdi alımına izin verir\n"
+"* [-]crtscts RTS/CTS uzlaşmasını etkinleştirir\n"
+" csN karakter bit sayısını N olarak ayarlar, [5..8 bit arasında]\n"
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+" [-]cstopb her karakter için iki durma biti kullanılır (`-' ile bir)\n"
+" [-]hup son işlem tty'yi kapatırken kapatma (SIGHUP) sinyali "
+"gönderilir\n"
+" [-]hupcl [-]hup ile aynı\n"
+" [-]parenb çıktı için eşlik biti üretilir, girdi için eşlik biti "
+"beklenir\n"
+" [-]parodd tek eşlik biti kullanılır (`-' ile çift)\n"
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+"\n"
+"Girdi ayarları:\n"
+" [-]brkint kırma karakterleri kesme sinyali üretir\n"
+" [-]icrnl satır başı karakterini alt satıra geçme\n"
+" karakteri olarak yorumlar\n"
+" [-]ignbrk kırma karakterlerini yoksayar\n"
+" [-]igncr satır başı karakterlerini yoksayar\n"
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+" [-]ignpar eşlik hataları olan karakterleri yoksayar\n"
+"* [-]imaxbel girdi tamponu taştığında uyarı sesi üretir\n"
+" [-]inlcr alt satıra geçme karakterini satır başı\n"
+" karakteri olarak yorumlar\n"
+" [-]inpck girdi eÅŸlik denetimini etkinleÅŸtirir\n"
+" [-]istrip girdi karakterlerinin yüksek (8.) bitini temizler\n"
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr " * [-]iutf8 girdi karakterlerinin UTF-8 kodlu olduÄŸunu varsayar\n"
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+"* [-]iuclc büyük harfleri küçük harf olarak yorumlar\n"
+"* [-]ixany sadece baÅŸla karakteri deÄŸil herhangi bir karakter\n"
+" girdiyi başlatır\n"
+" [-]ixoff başla/dur karakterlerinin gönderimini etkinleştirir\n"
+" [-]ixon XON/XOFF akış denetimini etkinleştirir\n"
+" [-]parmrk eşlik hatalarını imler (255-0-karakter sıralamasıyla)\n"
+" [-]tandem [-]ixoff ile aynı\n"
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+"\n"
+"Çıktı ayarları:\n"
+"* bsN geri silme tarzı gecikme, N [0..1] arasında\n"
+"* crN satır başı tarzı gecikme, N [0..3] arasında\n"
+"* ffN sayfa başı tarzı gecikme, N [0..1] arasında\n"
+"* nlN alt satıra geçiş tarzı gecikme, N [0..1] arasında\n"
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+"* [-]ocrnl satır başını alt satıra geçiş olarak yorumlar\n"
+"* [-]ofdel 0 karakteri yerine dolgu için silme karakterini kullanır\n"
+"* [-]ofill gecikmeler için zamanlama yapmak yerine dolgu\n"
+" karakterlerini kullanır\n"
+"* [-]olcuc küçük harfleri büyük harf olarak yorumlar\n"
+"* [-]onlcr alt satıra geçişi satır başı olarak yorumlar\n"
+"* [-]onlret alt satıra geçiş karakteri satır başı yapar\n"
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+"* [-]onocr satır başı karakterini ilk karakter olarak basmaz\n"
+" [-]opost işlem sonrası çıktı\n"
+"* tabN yatay sekme tarzı gecikme, N [0..3] arasında\n"
+"* tabs tab0 ile aynı\n"
+"* -tabs tab3 ile aynı\n"
+"* vtN düşey sekme tarzı gecikme, N [0..1] arasında\n"
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+"\n"
+"Yerel ayarlar:\n"
+" [-]crterase silme karakterlerini gerisilme-boÅŸluk-gerisilme olarak "
+"yansılar\n"
+"* crtkill satırları echoprt ve echoe ayarlarına uygun olarak siler\n"
+"* -crtkill satırları echoctl ve echok ayarlarına uygun olarak siler\n"
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+"* [-]ctlecho denetim karakterlerini şapkalı gösterim (`^c') ile yansılar\n"
+" [-]echo girdi karakterlerini yansılar\n"
+"* [-]echoctl [-]ctlecho ile aynı\n"
+" [-]echoe [-]crterase ile aynı\n"
+" [-]echok karakteri sildikten sonra bir alt satıra geçiş yansılar\n"
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+"* [-]echoke [-]crtkill ile\n"
+" [-]echonl diğer karakterler yansılanmamış olsa bile\n"
+" alt satıra geçişi yansılar\n"
+"* [-]echoprt geriye doÄŸru silinmiÅŸ karakterleri `\\' ve '/'\n"
+" arasında yansılar\n"
+" [-]icanon karakter, satır, sözcük silmeleri ve satır yenileme özel\n"
+" karakterlerini etkinleÅŸtirir\n"
+" [-]iexten POSIX olmayan özel karakterleri etkinleştirir\n"
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+" [-]isig kesme, çıkış ve dondurma özel karakterlerini etkinleştirir\n"
+" [-]noflsh kesme ve çıkış özel karakterlerinden sonra güncellemeyi\n"
+" geçersiz kılar\n"
+"* [-]prterase [-]echoprt ile aynı\n"
+"* [-]tostop terminale yazmaya çalışan artalandaki işleri durdurur\n"
+"* [-]xcase icanon ile, büyük harfleri `\\' ile önceleyerek gösterir\n"
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+"\n"
+"BirleÅŸik ayarlar:\n"
+"* [-]LCASE [-]lcase ile aynı\n"
+" cbreak -icanon ile aynı\n"
+" -cbreak icanon ile aynı\n"
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+" cooked brkint ignpar istrip icrnl ixon opost isig icanon eof ve "
+"eol\n"
+" karakterlerinin öntanımlı değerleri ile aynı\n"
+" -cooked raw ile aynı\n"
+" crt echoe echoctl echoke ile aynı\n"
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+" dec echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u ile aynı\n"
+"* [-]decctlq [-]ixany ile aynı\n"
+" ek karakter ve satır silme karakterlerinin öntanımlı\n"
+" değerleriyle aynı\n"
+" evenp parenb -parodd cs7 ile aynı\n"
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+" -evenp -parenb cs8 ile aynı\n"
+"* [-]lcase xcase iuclc olcuc ile aynı\n"
+" litout -parenb -istrip -opost cs8 ile aynı\n"
+" -litout parenb istrip opost cs7 ile aynı\n"
+" nl -icrnl -onlcr ile aynı\n"
+" -nl icrnl -inlcr -igncr onlcr -ocrnl -onlret ile aynı\n"
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+" oddp parenb parodd cs7 ile aynı\n"
+" -oddp -parenb cs8 ile aynı\n"
+" [-]parity [-]evenp ile aynı\n"
+" pass8 -parenb -istrip cs8 ile aynı\n"
+" -pass8 parenb istrip cs7 ile aynı\n"
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+" raw -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0 ile aynı\n"
+" -raw cooked ile aynı\n"
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+" sane cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, tüm özel\n"
+" karakterlerin öntanımlı değerleriyle aynı.\n"
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+"\n"
+"Standart girdiye bağlı olan tty hattını yönetir. Argümansız\n"
+"çalıştırıldığında iletişim hızını, hat disiplinini, stty sane ayarından\n"
+"farklı ayarları gösterir. Ayarlarda KRKT yazıldığı gibi ya da ^c, 0x37, "
+"0177\n"
+"ya da 127 olarak gösterilmiş bir karakter olabilir. ^- veya undef değerleri\n"
+"bu özel karakteri geçersiz kılar\n"
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr "sadee tek aygıt belirtilebilir"
+
+#: src/stty.c:819
+#, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+"ayrıntılı çıktı seçenekleri ile stty-okuyabilir tarzı çıktı\n"
+"seçenekleri birlikte kullanılamaz"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr "bir çıktı tarzı belirtildiğinde kipler ayarlanamaz"
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr "%s: bloklamayan kip sıfırlanamadı"
+
+#: src/stty.c:885 src/stty.c:995
+#, fuzzy, c-format
+msgid "invalid argument %s"
+msgstr "%s argümanı geçersiz"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, fuzzy, c-format
+msgid "missing argument to %s"
+msgstr "`%s'de argüman kayıp"
+
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "geçersiz satır belirleyicisi `%s'"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr "%s: istenen işlemlerin tümü yapılamıyor"
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr "yeni_kip: kip\n"
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr "%s: bu aygıt için boyut bilgileri yok"
+
+#: src/stty.c:1888
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "tamsayı argüman olarak `%s' geçersiz"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "Parola:"
+
+#: src/su.c:245
+#, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "getpass: dev/tty açılamıyor"
+
+#: src/su.c:303
+#, c-format
+msgid "cannot set groups"
+msgstr "gruplar atanamıyor"
+
+#: src/su.c:307
+#, c-format
+msgid "cannot set group id"
+msgstr "grup kimliği atanamıyor"
+
+#: src/su.c:309
+#, c-format
+msgid "cannot set user id"
+msgstr "kullanıcı kimliği atanamıyor"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "Kullanımı: %s [SEÇENEK]... [-] [KULLANICI [ARG]...]\n"
+
+#: src/su.c:386
+#, fuzzy
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+"Etkin kullanıcı ve grup kimliklerini KULLANICI olarak değiştirir.\n"
+"\n"
+" -, -l, --login kabuÄŸu bir giriÅŸ kabuÄŸu yapar\n"
+" -c, --commmand=KOMUT -c ile kabukta tek bir KOMUT çalıştırır\n"
+" -f, --fast kabuğu -f ile çalıştırır (csh veya tcsh "
+"için)\n"
+" -m, --preserve-environment çevre değişkenlerini sıfırlamaz\n"
+" -p -m ile aynı\n"
+" -s, --shell=KABUK /etc/shells dosyasında varsa KABUĞU "
+"çalıştırır\n"
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+"\n"
+"Sadece - ile -l uygulanır. KULLANICI verilmezse root varsayılır.\n"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "%s diye bir kullanıcı yok"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "parola yanlış"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "kısıtlı kabuk %s kullanılıyor"
+
+#: src/su.c:523
+#, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "uyarı: %s dizinine geçilemiyor"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"Her DOSYA'nın sağlama toplamını ve blok sayısını yazar.\n"
+"\n"
+" -r BSD toplama algoritmasını kullanır, blok genişliğini 1K "
+"alır\n"
+" -s, --sysv System V toplama algoritmasını kullanır, blok genişliğini\n"
+" 512 bayt alır\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+"Değişen blokları diske yazılmaya zorlar ve süper bloğu günceller.\n"
+"\n"
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "argümanların tamamı yoksayılıyor"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help bu yardımı gösterir ve çıkar\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version sürüm bilgisini gösterir ve çıkar\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"DOSYAları baştan sona yazar ( son satır ilk).\n"
+"DOSYA belirtilmediÄŸinde veya - olduÄŸunda standart girdiden okur.\n"
+"\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before ayracı satırdan sonra değil, satırdan önce koyar\n"
+" -r, --regex ayracı düzenli ifade olarak kabul eder\n"
+" (regex = regular expression (düzenli ifade))\n"
+" -s, --seperator=AYRAC satırları `\\n' yerine AYRAC ile ayır\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, c-format
+msgid "%s: seek failed"
+msgstr "%s: arama (seek) başarısız"
+
+#: src/tac.c:265
+#, c-format
+msgid "record too large"
+msgstr "kayıt çok büyük"
+
+#: src/tac.c:459
+#, c-format
+msgid "cannot create temporary file %s"
+msgstr "geçici dosya %s oluşturulamadı"
+
+#: src/tac.c:466
+#, c-format
+msgid "cannot open %s for writing"
+msgstr "%s yazmak için açılamadı"
+
+#: src/tac.c:487 src/tac.c:494
+#, c-format
+msgid "%s: write error"
+msgstr "%s: yazma hatası"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "-s 'ten sonra AYRAC belirtilmeli"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Belirtilen her DOSYA'nın son %d satırını standart çıktıya yazar.\n"
+"Dosya ismi belirtilmediÄŸinde veya - olduÄŸunda standart girdiden okur.\n"
+"\n"
+
+#: src/tail.c:229
+#, fuzzy
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry belirtilen dosya tail başlatıldığında ulaşılamaz\n"
+" ise veya daha sonra ulaşılamaz hale geldiğinde\n"
+" dosya tekrar okunabilir olana kadar yeniden "
+"dener\n"
+" özellikle isim kullanıldığı zaman faydalıdır,\n"
+" örneğin --follow=İSİM seçeneği ile birlikte.\n"
+" -c, --bytes=SAYI son SAYI baytı gösterir\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={name|descriptor}]\n"
+" dosyayı sürekli izler, yeni satırlar\n"
+" eklendikçe onları da çıktıya yazar. --"
+"follow=name\n"
+" dosya ismini kullanarak izler,--"
+"follow=descriptor\n"
+" dosya açıldığında sistemin döndüğü dosya\n"
+" descriptor'ını kullanarak izler.\n"
+" -F --follow=name --retry 'ın aynısı \n"
+
+#: src/tail.c:244
+#, fuzzy, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=SAYI son %d satır yerine son SAYI satırı yazar\n"
+" --max-unchanged-stats=N\n"
+" --follow=name seçeneği kullanıldığında N "
+"denemeden\n"
+" sonra DOSYA'da bir değisiklik gözlemlememişse\n"
+" silinip silinmediÄŸini veya isminin deÄŸistiril-\n"
+" mediğinden emin olmak için DOSYA'yı tekrar açar\n"
+" (bu seçenek kullanılmadığında %d defa bu işi "
+"yapar)\n"
+
+#
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID -f ile kullanılır. Proses numarası PID olan "
+"proses\n"
+" öldükten sonra çıkar\n"
+" -q, --quiet, --silent dosya isimlerini gösteren başlıklar yazmaz\n"
+" -s, --sleep-interval=S -f ile kullanıldığı zaman dosyaya birşey yazılıp "
+"yazıl-\n"
+" madığını S saniyede bir (öntanımlı 1.0) kontrol "
+"eder \n"
+" -v, --verbose dosya isimlerini gösteren başlıklar yazar\n"
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"SAYI'nin (bayt veya satır sayısı) ilk karakteri `+' ise, \n"
+"SAYI'ncı satır veya bayttan itibaren dosyanın içeriğini yazar, aksi halde\n"
+"dosyadaki son SAYI girdiyi yazar. SAYI, çarpım soneki alabilir:\n"
+"b = 512, k = 1024, m = 1024*1024.\n"
+"\n"
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"--follow (-f) seçeneğinde [=name] belirtilmedikçe, dosya descriptor'ını\n"
+"kullanarak dosyayı izler. Böylelikle dosyanın ismi değişse bile \n"
+"dosyayı izlemeye devam eder. "
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"Bazı durumlarda belli bir dosya adını\n"
+"izlemek istiyor olabilirsiniz, o zaman --follow=name seçeneğini kullanın\n"
+"(örneğin `tail --follow=name deneme' dediğinizde, deneme dosyası arada\n"
+"silinse, sonra yerine başka bir deneme dosyası oluşsa bütün bunlardan\n"
+"sonra tail `deneme' dosyasının içinde olanları göstermeye devam eder).\n"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "%s kapatılıyor (fd=%d)"
+
+#: src/tail.c:411
+#, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s: görece %s'ye ilerlenemiyor (seek)"
+
+#: src/tail.c:415
+#, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s: dosyanın sonundan %s görecesine geri gidilemiyor (seek)"
+
+#: src/tail.c:867
+#, fuzzy, c-format
+msgid "%s has become inaccessible"
+msgstr "`%s' dosyası okunamaz hale geldi"
+
+#: src/tail.c:884
+#, fuzzy, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr "`%s' ismi artık izlenemeyecek bir dosyaya ait"
+
+#: src/tail.c:905
+#, fuzzy, c-format
+msgid "%s has become accessible"
+msgstr "`%s' dosyası tekrar okunabilir hale geldi"
+
+#: src/tail.c:913
+#, fuzzy, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "`%s' ortaya çıktı; yeni dosyanın sonu takip ediliyor"
+
+#: src/tail.c:924
+#, fuzzy, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "`%s' tekrar okunabilir hale geldi; yeni dosyayı izlemeye devam"
+
+#: src/tail.c:1025
+#, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "%s: bloklamayan kip deÄŸiÅŸtirilemedi"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s: dosya kısaldı"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "üzerinde çalışabilecek dosya kalmadı"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr "%s: tail bu çeşit dosyayı takip edemez"
+
+#: src/tail.c:1439
+#, fuzzy, c-format
+msgid "number in %s is too large"
+msgstr "`%s' içindeki sayı çok büyük"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr "%s:--max-unchanged-stats seçeneğiyle verilen argüman geçersiz"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s: geçersiz PID"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s: geçersiz saniye sayısı"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, fuzzy, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr ""
+"uyarı: --retry seçeneği sadece --follow=name seçeneğiyle kullanıldığında \n"
+" bir anlam taşır"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr "uyarı: --pid=PID sadece -f seçeneğiyle kullanıldığında bir anlam taşır"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "uyarı: --pid=PID bu sistemde desteklenmiyor"
+
+#: src/tail.c:1667
+#, c-format
+msgid "cannot follow %s by name"
+msgstr "%s adı ile takip edilemiyor"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr "uyarı: standart girdiyi sonsuza dek takip etmek verimli değildir"
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+"Standart girdiyi verilen DOSYAlara ve ayrıca standart çıktıya kopyalar.\n"
+"\n"
+" -a, --append DOSYAların üzerine yazmaz sonuna ekler\n"
+" -i, --ignore-interrupts kesme sinyallerini yoksayar\n"
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"DOSYA verilmemişse veya DOSYA - ise, standart girdi tekrar kopyalanır.\n"
+
+#: src/test.c:125
+#, c-format
+msgid "missing argument after %s"
+msgstr "%s sonrasında eksik argüman"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "geçersiz sayı %s"
+
+#: src/test.c:242
+#, fuzzy
+msgid "')' expected"
+msgstr "')' gerekli\n"
+
+#: src/test.c:245
+#, fuzzy, c-format
+msgid "')' expected, found %s"
+msgstr "')' gerekirken, %s bulundu\n"
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: bir terimli iÅŸlemimi olabilir\n"
+
+#: src/test.c:330
+#, fuzzy
+msgid "-nt does not accept -l"
+msgstr "-nt -l ile kullanılmaz\n"
+
+#: src/test.c:343
+#, fuzzy
+msgid "-ef does not accept -l"
+msgstr "-ef -l ile kullanılmaz\n"
+
+#: src/test.c:359
+#, fuzzy
+msgid "-ot does not accept -l"
+msgstr "-ot -l ile kullanılmaz\n"
+
+#: src/test.c:368
+#, fuzzy
+msgid "unknown binary operator"
+msgstr "bilinmeyen ikilik iÅŸlemimi\n"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: iki terimli iÅŸlemimi olabilir\n"
+
+#: src/test.c:694
+#, fuzzy
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"Kullanımı: test İFADE\n"
+" veya: test\n"
+" veya: [ Ä°FADE ]\n"
+" veya: [ ]\n"
+" ya da: [ SEÇENEK\n"
+"İFADE ile belirtilen durum ile çıkar.\n"
+"\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+"İFADEye göre üretilen durum kodu ile çıkar.\n"
+"\n"
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+"\n"
+"İFADE yok ise, çıkış durumu öntanımlı olarak yanlış (false) olur.\n"
+"İFADEnin sonucunun doğru ya da yanlış olmasına göre aşağıdaki\n"
+"çıkış durumlarından biri belirlenir:\n"
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+"\n"
+" ( Ä°FADE ) Ä°FADE doÄŸrudur\n"
+" ! İFADE İFADE yanlıştır\n"
+" Ä°FADE1 -a Ä°FADE2 Ä°FADE1 ve Ä°FADE2 her ikisi de doÄŸrudur\n"
+" Ä°FADE1 -o Ä°FADE2 ya Ä°FADE1 ya da Ä°FADE2 doÄŸrudur\n"
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+"\n"
+" -n DİZGE DİZGEnin uzunluğu sıfırdan farklıdır\n"
+" DİZGE -n DİZGE ile aynıdır\n"
+" -z DİZGE DİZGEnin uzunluğu sıfırdır\n"
+" DÄ°ZGE1 = DÄ°ZGE2 DÄ°ZGEler eÅŸittir\n"
+" DİZGE1 != DİZGE2 DİZGEler farklıdır\n"
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+"\n"
+" TAMSAYI1 -eq TAMSAYI2 TAMSAYI1 TAMSAYI2ye eÅŸittir\n"
+" TAMSAYI1 -ge TAMSAYI2 TAMSAYI1 TAMSAYI2ye eşit ya da büyüktür\n"
+" TAMSAYI1 -gt TAMSAYI2 TAMSAYI1 TAMSAYI2den büyüktür\n"
+" TAMSAYI1 -le TAMSAYI2 TAMSAYI1 TAMSAYI2ye eşit ya da küçüktür\n"
+" TAMSAYI1 -lt TAMSAYI2 TAMSAYI1 TAMSAYI2den küçüktür\n"
+" TAMSAYI1 -ne TAMSAYI2 TAMSAYI1 TAMSAYI2den farklıdır\n"
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+"\n"
+" DOSYA1 -ef DOSYA2 DOSYA1 ve DOSYA2 aynı aygıtta ve aynı uzunluktadır\n"
+" DOSYA1 -nt DOSYA2 DOSYA1 DOSYA2den daha yenidir\n"
+" DOSYA1 -ot DOSYA2 DOSYA1 DOSYA2den daha eskidir\n"
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+"\n"
+" -b DOSYA DOSYA vardır ve blok özeldir\n"
+" -c DOSYA DOSYA vardır ve karakter özeldir\n"
+" -d DOSYA DOSYA vardır ve bir dizindir\n"
+" -e DOSYA DOSYA vardır\n"
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+" -f DOSYA DOSYA vardır ve normal bir dosyadır\n"
+" -g DOSYA DOSYA vardır ve grup-kimliği belirlidir\n"
+" -G DOSYA DOSYA vardır ve etkin grup kimliğine aittir\n"
+" -h DOSYA DOSYA vardır ve sembolik bağdır (-L ile aynı)\n"
+" -k DOSYA DOSYA vardır ve kalıcı biti ayarlıdır\n"
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+" -L DOSYA DOSYA vardır ve bir sembolik bağdır\n"
+" -O DOSYA DOSYA vardır ve etkin kullanıcı kimliğine aittir\n"
+" -p DOSYA DOSYA vardır ve bir isimli veri yoludur\n"
+" -r DOSYA DOSYA vardır ve okunabilirdir\n"
+" -s DOSYA DOSYA vardır ve uzunluğu sıfırdan büyüktür\n"
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+" -S DOSYA DOSYA vardır ve bir sokettir\n"
+" -t [DB] dosya belirteci DB (öntanımlı:stdÇıktı) bir terminalde "
+"açıktır\n"
+" -u DOSYA DOSYA vardır ve kullanıcı-kimlik belirleme biti ayarlıdır\n"
+" -w DOSYA DOSYA vardır ve yazılabilirdir\n"
+" -x DOSYA DOSYA vardır ve çalıştırılma (veya arama) izni verilmiştir\n"
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+"\n"
+"-h ve -L haricinde bütün DOSYA ile ilgili testler sembolik bağları izler.\n"
+"Parantezlerin kabukta öncelem (örn. tersbölü ile) gerektirdiğini unutmayın.\n"
+"TAMSAYI yerine DİZGE uzunluğuna karşılık olarak -l DİZGE kullanılabilir.\n"
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "`]' eksik\n"
+
+#: src/test.c:846
+#, c-format
+msgid "extra argument %s"
+msgstr "%s argümanı fazla"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "geçersiz tarih biçemi %s"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "%s oluÅŸturuluyor"
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr "`touch' %s yapılamadı"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "%s'in zamanları değiştiriliyor"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+"Her DOSYA'nın erişim ve değişim zamanlarını şimdiki zamana günceller.\n"
+"\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a yalnız erişim zamanını günceller\n"
+" -c, --no-create dosya oluÅŸturmaz\n"
+" -d, --date=DİZGİ DİZGİyi tarar ve şimdiki zaman yerine kullanır\n"
+" -f (yoksayılıyor)\n"
+" -m yalnız değişim tarihini günceller\n"
+
+#: src/touch.c:248
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --reference=DOSYA şimdiki zaman yerine bu DOSYAnın zaman damgalarını\n"
+" kullanır\n"
+" -t DAMGA ÅŸimdiki zaman yerine [[YY]YY]AAGGssdd[ss] deÄŸerini\n"
+" kullanır\n"
+" --time=SÖZCÜK SÖZCÜKle belirtilen zaman damgasını değiştirir:\n"
+" access (erişim) atime (erişim) use (kullanım, -a "
+"ile\n"
+" aynı) modify (değişim) mtime (değişim, -m ile "
+"aynı)\n"
+
+#: src/touch.c:257
+#, fuzzy
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"Dikkat: -d ve -t seçenekleri farklı zaman/tarih biçemleri kabul ederler.\n"
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "zaman birden fazla kaynaktan belirtilemez"
+
+#: src/touch.c:389
+#, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr ""
+"uyarı: `touch %s' artık kullanılmıyor; `touch -t %04ld%02d%02d%02d%02d.%"
+"02d'\n"
+" kullanılmalı"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "Kullanım: %s [SEÇENEK]... KÜME1 [KÜME2]\n"
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"Standart girdiden okuduğu karakterleri çevirerek, sıkıştırarak ve/veya\n"
+"silerek standart çıktıya yazar\n"
+"\n"
+" -c, -C, --complement KUME1'in tümleyicisi\n"
+" -d, --delete KUME1'deki karakterleri siler, çeviri yapmaz\n"
+" -s, --squeeze-repeats aynı karakterden oluşmus sırayi siler yerine \n"
+" o karakterden bir tane koyar\n"
+" -t, --truncate-set1 ilk önce KUME1'i, KUME2'nin boyuna eşit olacak \n"
+" şekilde kısaltır\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"KUMEler burada karakter dizgeleri anlamındadır.\n"
+"anlamlı olan sıralamalar aşağıdadır:\n"
+" \\NNN NNN (1-3 tane sekizlik basamak ) sekizlik deÄŸeri \n"
+" olan karakter\n"
+" \\\\ ters kesik\n"
+" \\a bip sesi\n"
+" \\b geri git\n"
+" \\f form ilerletme\n"
+" \\n yeni satır\n"
+" \\r satır başı\n"
+" \\t enine tab\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v boyuna tab\n"
+" KAR1-KAR2 büyükten küçüğe KAR1 den KAR2 ye kadarki tüm \n"
+" karakterler \n"
+" [KAR*] KUME2'de kullanılır:KUME1'in boyuna gelene kadar \n"
+" KAR'ın tekrarı\n"
+" [KAR*TEKRAR] KAR'ın TEKRAR kere tekrarı, TEKRAR 0 ile başlıyorsa\n"
+" sekizlik sayı olarak algılanır\n"
+" [:alnum:] tüm harf ve rakamlar\n"
+" [:alpha:] tüm harfler\n"
+" [:blank:] tüm enine boşluklar\n"
+" [:cntrl:] tüm kontrol karakterleri\n"
+" [:digit:] tüm rakamlar\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] boşluk hariç, tüm yazılabilir karakterler\n"
+" [:lower:] tüm küçük harfler\n"
+" [:print:] boşluk dahil, tüm yazılabilir karakterler\n"
+" [:punct:] tüm noktalama isaretleri\n"
+" [:space:] tüm enine veya boyuna boşluklar\n"
+" [:upper:] tüm büyük harfler\n"
+" [:xdigit:] tüm onaltılık sistem rakamları\n"
+" [=KAR=] KAR'a eş olan tüm karakterler\n"
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"Çeviri,-d seçeneği kullanılmadığında ve KUME1 ve KUME2 nin her ikisi de\n"
+"verildiğinde gerçekleşir.-t sadece çeviri yaparken kullanılabilir.\n"
+"KUME2 gerektiğinde son karakteri tekrar edilerek KUME1 ile aynı uzunluğa\n"
+"getirilir."
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"SET2'deki gereğinden fazla karakterler dikkate alınmaz. Çeviri yapılılırken\n"
+"KUME2 de kullanılan karakter sınıflarından sadece [:lower:] ve [:upper:]\n"
+"kesin olarak büyükten küçüğe açılırlar, bu ikisi beraberce sadece büyük\n"
+"harf küçük harf değisimi yapılılrken kullanılabilir. -s sadece KUME1'i\n"
+"kullanır."
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"-s sadece çeviri veya sıkıştırmayla beraber çalışıyorsa\n"
+"KUME2 yi kullanır ve çeviri veya sıkıştırma bittikten sonra devreye girer.\n"
+
+#: src/tr.c:519
+#, fuzzy, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"uyarı: net olmayan \\%c%c%c sekizlik ters kesik gösteririmi \n"
+"\t \\0%c%c,`%c' sırası olarak algılanıyor "
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "alan sınırları '%s-%s' ters sıralılar"
+
+#: src/tr.c:838
+#, fuzzy, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "'%s' de geçersiz [c*n] tekrar yapısı"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "`[:' ile `:]' arasında bir eşitlik sınıfı belirtilmeli"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "`[=' ile `=]' arasında bir eşitlik sınıfı belirtilmeli"
+
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "geçersiz karakter sınıfı `%s'"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr ""
+"%s: eşitlik sınıfı (equivalance class)operandı tek karakterden oluşmalıdır"
+
+#: src/tr.c:1275
+#, c-format
+msgid "too many characters in set"
+msgstr "kümede çok fazla karakter"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "[c*] tekrar yapısı KUME1'de bulunamaz"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "KUME2'de yalnızca bir [c*] tekrar yapısı olabilir"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "KUME2'de çeviri yaparken [=c=] ifadeleri yer alamaz"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "KUME1 kısaltılmıyorsa KUME2 boş olamaz"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"karakter sınıflarının tümleyicileri (küme tümleyen=set complement)\n"
+"kullanıldığında KUME2 sadece bir karakter kullanan ifadeler içerebilir"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+"çeviri yaparken, KUME2'de kullanılabilecek karakter sınıfları:\n"
+" upper, lower"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "[c*] ifadesi KUME2'de sadece çeviri yaparken kullanılabilir"
+
+#: src/tr.c:1731
+msgid "Two strings must be given when translating."
+msgstr "çevrim için iki dizge verilmelidir."
+
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+"tekrar edilen karakterler bire indirgenMEden silme yapılıyorsa\n"
+"sadece bir dizge verilmeli."
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "ayarlanmamış veya uymayan [:upper:] ve/veya [:lower:] ifadesi"
+
+#: src/true.c:42
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kullanımı: %s İSİM\n"
+" veya: %s SEÇENEK\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"Kullanım: %s [SECENEK] [DOSYA] \n"
+"DOSYA'daki kısmi sıralamayı (kısmi sıralama=partial ordering, \n"
+"matematiksel bir terim) göz önüne alarak DOSYA'nın tam sıralı\n"
+"(tam sıralı = totally ordered, matematiksel terim) halini çıktıya yazar.\n"
+"(tsort = topological sort, topolojik sıralama)\n"
+"\n"
+
+#: src/tsort.c:474
+#, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s: girdide tek sayılı andaç var"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s: girdide bir döngü (döngü=loop, Graph Teorideki anlamında) var"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "Kullanım: %s [SEÇENEK]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+"Standart girdiye bağlı terminalin dosya ismini gösterir.\n"
+"\n"
+" -s, --silent, --quiet hiçbir şey göstermez, sadece çıkış durumu ile "
+"döner\n"
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr "bir tty deÄŸil"
+
+#: src/uname.c:118
+#, fuzzy
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+"Sistem hakkında bazı bilgiler gösterir. SEÇENEKsiz -s ile aynıdır.\n"
+"\n"
+" -a, --all tüm bilgileri gösterir\n"
+" -m, --machine makina türünü (donanımı) gösterir\n"
+" -n, --nodename makinanın ağ ismini gösterir\n"
+" -r, --release işletim sisteminin dağıtım numarasını gösterir\n"
+
+#: src/uname.c:127
+#, fuzzy
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+" -v, --kernel-version çekirdek sürümünü gösterir\n"
+" -p, --processor makinanın işlemci türünü gösterir\n"
+" -i, --hardware-platform makinanın donanım türünü gösterir\n"
+" -o, --operating-system işletim sistemi türünü gösterir\n"
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr "sistem ismi alınamadı"
+
+#: src/unexpand.c:125
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"DOSYA'daki boşlukları sekmeye çevirir ve standard çıktıya yazar.\n"
+"DOSYA belirtilmediÄŸinde veya - olduÄŸunda standard girdiden okur.\n"
+"\n"
+
+#: src/unexpand.c:133
+#, fuzzy
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all tüm boşlukları dikkate alır, yalnızca baştaki "
+"boşlukları\n"
+" deÄŸil\n"
+" --first-only yalnızca baştaki boşlukları çevirir\n"
+" (-a'yı etkisizleştirir)\n"
+" -t, --tabs=SAYI sekme genişliğini 8 değil SAYI olarak alır (-a'yı \n"
+" etkinleÅŸtirir)\n"
+" -t, --tabs=LİSTE virgüllerle ayrılmış sekme pozisyonları LİSTEsini\n"
+" kullanır (-a'yı etkinleştirir)\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr "sekmeler fazla aralı"
+
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "sekme boyu %s çok büyük"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "Kullanım: %s [SEÇENEK]... [GİRDİ [ÇIKTI]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"GIRDI'deki (veya standart girdi) arka arkaya gelen aynı satırlardan\n"
+"sadece ilkini CIKTI'ya (veya standart çıktı) yazar\n"
+"\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count her satır başına tekrar sayısını yazar\n"
+" -d, --repeated sadece aynısından iki tane olan satırları gösterir\n"
+
+#: src/uniq.c:151
+#, fuzzy
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D --all-repeated[=delimit-method] sadece birden fazla olan satırları "
+"yazar\n"
+" delimit-method ÅŸu deÄŸerleri alabilir:\n"
+" none: satırları ayırmaz \n"
+" (delimit-method belirtilmediÄŸinde none \n"
+" kullanılır)\n"
+" prepend: her satır grubunun başına boşluk koyar\n"
+" separate: satır gruplarının arasına boşluk koyar\n"
+" -f, --skip-fields=N ilk N alanı karşılaştırmaz\n"
+" -i, --ignore-case büyük/küçük harf farklılıklarını dikkate almaz\n"
+" -s, --skip-chars=N ilk N karakteri karşılaştırmaz\n"
+" -u, --unique sadece özgün satırları karşılaştır\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+" -w, --check-chars=N her satırda N'den fazla karakter karşılaştırmaz\n"
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"Aralıksız devam eden boşluklara alan denir\n"
+"-s ve -f seçenekleri kullanıldığında alanlar karakterlerden önce atlanır.\n"
+
+#: src/uniq.c:350
+#, c-format
+msgid "too many repeated lines"
+msgstr "çok fazla tekrar eden satır"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "atlanacak alan sayısı geçersiz"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "atlanacak bayt sayısı geçersiz"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "karşılaştırılacak bayt sayısı geçersiz"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr ""
+"hem aynı olan satırların yazılmasına izin vermek hem de aynı\n"
+" olan satırların sayısını yazdırmak anlamsız"
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kullanım: %s DOSYA\n"
+" veya: %s SEÇENEK\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"Belirtilen DOSYA'yı silmek için 'unlink' (bağ çöz) işlevini çağırın.\n"
+"\n"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "%s bağı çözülemedi"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "sistemin başlama zamanı alınamadı"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr "Åžu an %2d:%02d%s, "
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "öö"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "ös"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr " ??:???? yukarı "
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr "???? gün ??:??, "
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%ld gün"
+msgstr[1] "%ld gün"
+
+#: src/uptime.c:147
+#, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%lu kullanıcı"
+msgstr[1] "%lu kullanıcı"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr " çalışıyor, yük ortalaması: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "Kullanımı: %s [SEÇENEK]... [ DOSYA ]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"Şimdiki zamanı, sistemin çalışır durumda olduğu süreyi, sistemdeki "
+"kullanıcı\n"
+"sayısını, ve son 1, 5 ve 15 dakika içerisinde kuyruktaki ortalama iş\n"
+"sayısını gösterir.\n"
+"DOSYA belirtilmezse %s kullanılır. Dosya olarak %s kullanımı yaygındır.\n"
+"\n"
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"DOSYAya göre çalışmakta olan kullanıcıları gösterir.\n"
+"DOSYA verilmezse %s kullanılır. DOSYA olarak %s kullanımı yaygındır.\n"
+"\n"
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"Her DOSYA için satır, kelime ve bayt sayılarını, ve birden fazla DOSYA \n"
+"verilmişse toplam değerlerini yazar. Eğer hiç DOSYA ismi verilmemiş veya \n"
+"DOSYA - ise standart girdiden okur.\n"
+" -c, --bytes bayt sayısını yazar\n"
+" -m, --chars karakter sayısını yazar\n"
+" -l, --lines satır sayısını (\\n sayısı) yazar\n"
+
+#: src/wc.c:121
+#, fuzzy
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" -L, --max-line-length en uzun satırın uzunluğunu yazar\n"
+" -w, --words kelime sayısını yazar\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr " eski "
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr "kimlik="
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr "terminal="
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr "çıkış="
+
+#: src/who.c:497
+msgid "clock change"
+msgstr "saat deÄŸiÅŸikliÄŸi"
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr "açılış-seviyesi"
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr "son="
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"kullanıcı sayısı: %lu\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "Ä°SÄ°M"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr "HAT"
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "SAAT"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr "ATIL "
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "AÇIKLAMA"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "ÇIKIŞ"
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "Kullanımı: %s [SEÇENEK]... [ DOSYA | ARG1 ARG2 ]\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+"\n"
+" -a, --all -b -d --login -p -r -t -T -u ile aynı\n"
+" -b, --boot son sistem açılış zamanı\n"
+" -d, --dead ölü işlemleri yazdırır\n"
+" -H, --heading sütun başlığı satırı yazdırır\n"
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+" --lookup makina isimlerini DNS üzerinden IP ile eşleştirmeye "
+"çalışır\n"
+" -m stdGirdi'deki kullanıcı ve makina ismini gösterir\n"
+" -p, --process init tarafından başlatılan aktif işlemleri listeler\n"
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+" -q, --count tüm çalışan kullanıcı isimlerini ve sayısını gösterir\n"
+" -r, --runlevel şimdiki açılış seviyesini gösterir\n"
+" -s, --short yalnız isim, satır ve zamanı gösterir (öntanımlı)\n"
+" -t, --time son sistem saat değişikliğini gösterir\n"
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+" -T, -w, --mesg kullanıcının ileti durumunu +, - veya ? olarak gösterir\n"
+" -u, --users sistemde olan kullanıcıları listeler\n"
+" --message -T ile aynı\n"
+" --writable -T ile aynı\n"
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+"\n"
+"DOSYA belirtilmezse %s kullanılır. DOSYA olarak %s kullanımı yaygındır.\n"
+"ARG1 ARG2 verilmişse, -m varsayılır: `who am i' (ben kimim) ya da\n"
+"`who mom likes' (annem kimi sever) gibi kullanımlar mümkündür.\n"
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr "Uyarı: -i sonraki sürümlerde kaldırılacaktır; -u kullanın"
+
+#: src/whoami.c:51
+#, fuzzy
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"Geçerli olan etkin kullanıcı kimliğine karşılık gelen ismi yazar.\n"
+"`id -un' ile aynıdır.\n"
+
+#: src/whoami.c:95
+#, fuzzy, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%u kullanıcı kimliğinin ismi bulunamıyor"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"Kullanımı: %s [DİZGE]...\n"
+" veya: %s SEÇENEK\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"Belirtilmişse DİZGE(ler)den, yoksa `y'den oluşan satırları sürekli üretir.\n"
+
+#~ msgid "strip failed"
+#~ msgstr "strip başarısız"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "%s'in sahibi ve/veya grubu deÄŸiÅŸtirilemiyor"
+
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "%s dizinine geçilemedi"
+
+#~ msgid "openat: unable to restore working directory"
+#~ msgstr "openat: çalışma dizinine geri dönülemedi"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "bir sayısal kullanıcı-kimliğin grubu alınamıyor"
+
+#
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "Bu bir serbest yazılımdır; kopyalama koşulları için kaynak koduna "
+#~ "bakınız.\n"
+#~ "Hiçbir garantisi yoktur; hatta SATILABİLİRLİĞİ veya HERHANGİ BİR AMACA\n"
+#~ "UYGUNLUĞU için bile garanti verilmez.\n"
+
+#
+#~ msgid "closing standard output"
+#~ msgstr "standart çıktı kapatılıyor"
+
+#~ msgid ""
+#~ " --no-preserve-root do not treat `/' specially (the default)\n"
+#~ " --preserve-root fail to operate recursively on `/'\n"
+#~ msgstr ""
+#~ " --no-preserve-root `/' için özel işlem yapma (öntanımlı)\n"
+#~ " --preserve-root `/' üzerinde döngüsel işlem yapma\n"
+
+#~ msgid "-R -h requires -P"
+#~ msgstr "-R -h ile -P kullanılmalıdır"
+
+#~ msgid ""
+#~ "\n"
+#~ "Each MODE is one or more of the letters ugoa, one of the symbols +-= and\n"
+#~ "one or more of the letters rwxXstugo.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Her KİP ugoa harflerinden biri veya bir kaçından, +-= sembollerinden "
+#~ "birinden\n"
+#~ "ve rwxXstugo harflerinden biri veya bir kaçından oluşur.\n"
+
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "%s dizininin üzerine yazılamaz"
+
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "uyarı: --version-control (-V) artık kullanılmıyor; ileride \n"
+#~ "bunun desteği kaldırılacak. --backup=%s seçeneğini kullanın"
+
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "bu sistemde sembolik baÄŸlar desteklenmiyor"
+
+#~ msgid ""
+#~ " %F same as %Y-%m-%d\n"
+#~ " %g the 2-digit year corresponding to the %V week number\n"
+#~ " %G the 4-digit year corresponding to the %V week number\n"
+#~ msgstr ""
+#~ " %F %Y-%m-%d ile aynı\n"
+#~ " %g %V hafta sayısıyla eşleşen 2 basamaklı yıl\n"
+#~ " %G %V hafta sayısıyla eşleşen 4 basamaklı yıl\n"
+
+#~ msgid ""
+#~ " %z RFC-2822 style numeric timezone (-0500) (a nonstandard extension)\n"
+#~ " %Z time zone (e.g., EDT), or nothing if no time zone is determinable\n"
+#~ "\n"
+#~ "By default, date pads numeric fields with zeroes. GNU date recognizes\n"
+#~ "the following modifiers between `%' and a numeric directive.\n"
+#~ "\n"
+#~ " `-' (hyphen) do not pad the field\n"
+#~ " `_' (underscore) pad the field with spaces\n"
+#~ msgstr ""
+#~ " %z RFC-822 tarzı nümerik zaman dilimi (-0500) (standart dışı "
+#~ "eklenti)\n"
+#~ " %Z zaman dilimi (örn. EEST), veya eğer zaman dilimi "
+#~ "belirlenebiliyorsa, hiç bir şey\n"
+#~ "\n"
+#~ "Öntanımlı olarak `date', nümerik alanları sıfırla yastıklar. GNU date `%' "
+#~ "ile nümerik\n"
+#~ "yönergeler arasında aşağıdaki belirteçleri kabul eder.\n"
+#~ "\n"
+#~ " `-' (tire) alanı yastıklamaz\n"
+#~ " `_' (alt tire) alanı boşlukla yastıklar\n"
+
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-2822 (-R) option"
+#~ msgstr "--rfc-822 (-R) seçeneği ile birlikte bir biçem dizgisi belirtilemez"
+
+#~ msgid "undefined"
+#~ msgstr "atanmamış"
+
+#~ msgid "cannot get time of day"
+#~ msgstr "günün zamanı belirlenemedi"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "%s+%s kayıt girdi\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "%s+%s kayıt çıktı\n"
+
+#~ msgid "truncated records"
+#~ msgstr "budanmış kayıtlar"
+
+#~ msgid "file offset out of range"
+#~ msgstr "dosya göreli konumu aralık dışı"
+
+#~ msgid ""
+#~ " -e enable interpretation of backslash escapes\n"
+#~ " -E disable interpretation of backslash escapes (default)\n"
+#~ msgstr ""
+#~ " -e terskesme kaçışlarını yorumlar\n"
+#~ " -E (öntanımlı) terskesme kaçışlarını yorumlamaz\n"
+
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "`-LİSTE' seçeneği eski; yerine `-t LİSTE' kullanın"
+
+#~ msgid ""
+#~ "warning: unportable BRE: `%s': using `^' as the first character\n"
+#~ "of the basic regular expression is not portable; it is being ignored"
+#~ msgstr ""
+#~ "uyarı: taşınamaz düzgün ifade: `%s':`^' ile başlayan temel düzenli\n"
+#~ "ifadeler taşınamadığından`^' yoksayılıyor."
+
+#~ msgid "`%s' is too large"
+#~ msgstr "`%s' çok büyük"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Kullanımı: %s [yoksayılan komut satırı argümanları]\n"
+#~ " veya: %s SEÇENEK\n"
+#~ "Saptanan bozukluk ile ilgili durum kodunu göstererek çıkar.\n"
+#~ "\n"
+#~ "Bu seçenek isimleri kısaltılmış olarak kullanılamaz.\n"
+#~ "\n"
+
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "`%s' seçeneği eski: yerine `%s' kullanın"
+
+#~ msgid "%s: number of bytes is large"
+#~ msgstr "%s: bayt sayısı büyük"
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "bilinmeyen seçenek `-%c'"
+
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "`-%s' seçeneği eski; yerine `-%c %.*s%.*s%s' kullanın"
+
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "%s için zaman damgaları alınamadı"
+
+#~ msgid "value %s is so large that it is not representable"
+#~ msgstr "%s değeri gösterilemeyece kadar büyük"
+
+#~ msgid "invalid field number: `%s'"
+#~ msgstr "geçersiz alan numarası: `%s'"
+
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "dosya 1 icin geçersiz alan numarası : `%s'"
+
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "dosya 2 için geçersiz alan numarası: `%s'"
+
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "%s -> %s sembolik bağı oluştur"
+
+#~ msgid "create hard link %s to %s"
+#~ msgstr "%s -> %s sabit bağı oluştur"
+
+#~ msgid ""
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -b, --binary dosyaları binary (ikilik) olarak okur(DOS/"
+#~ "Windows üzerinde\n"
+#~ " md5sum otomatik olarak bu seçeneği çalıştırır)\n"
+#~ " -c, --check %s toplamlarını verilen liste ile "
+#~ "karşılaştırır\n"
+#~ " -t, --text dosyaları metin (text) olarak okur (md5sum -b\n"
+#~ " belirtilmedikçe otomatik olarak bu seçeneği\n"
+#~ " çalıştırır)\n"
+#~ "\n"
+
+#~ msgid "Only one operand may be specified when using --check."
+#~ msgstr "--check seçeneği kullanılırken sadece bir işleyen verilebilir"
+
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "%s dizininin izinleri deÄŸiÅŸtirilemedi"
+
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "'%s' fifosunun izinleri deÄŸiÅŸtirilemedi"
+
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "'%s'nın izinleri belirtilemedi"
+
+#~ msgid "cannot get priority"
+#~ msgstr "öncelik alınamadı"
+
+#~ msgid "cannot set priority"
+#~ msgstr "öncelik ayarlanamadı"
+
+#
+#~ msgid "failed to redirect standard output"
+#~ msgstr "standart çıktı yeniden yönlendirilemedi"
+
+#~ msgid ""
+#~ "Diagnose unportable constructs in NAME.\n"
+#~ "\n"
+#~ " -p, --portability check for all POSIX systems, not only this one\n"
+#~ msgstr ""
+#~ "Dosya İSİMlerinin geçerliliğini ve taşınabilirliğini denetler.\n"
+#~ "\n"
+#~ " -p, --portability yalnız bu sistem için değil tüm POSIX\n"
+#~ " sistemler için denetler\n"
+
+#~ msgid "column count too large"
+#~ msgstr "sütun sayısı fazla büyük"
+
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "`--columns=SÜTUN' geçersiz sütun sayısı: `%s'"
+
+#~ msgid ""
+#~ "This program is distributed in the hope that it will be useful,\n"
+#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+#~ "GNU General Public License for more details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Bu program kullanışlı olabileceği umularak dağıtılmaktadır. Ancak,\n"
+#~ "hiçbir GARANTİSİ YOKTUR; hatta SATILABİLİRLİĞİ veya HERHANGİ BİR\n"
+#~ "AMACA UYGUNLUĞU için bile garanti verilmez. Daha ayrıntılı bilgi\n"
+#~ "edinmek için GNU Genel Kamu Lisansına bakınız.\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+#~ msgstr ""
+#~ "GNU Genel Kamu Lisansının bir kopyasını bu yazılımla birlikte almış\n"
+#~ "olacaksınız; yoksa Free Software Foundation, Inc., 59 Temple Place\n"
+#~ "Suite 330, Boston, MA 02111-1307, USA. adresinden isteyebilirsiniz.\n"
+
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "%s dizininden ..'ye geçilemedi"
+
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "%s'de '.' durumlanamadı"
+
+#~ msgid "cannot lstat %s"
+#~ msgstr "%s durumlanamadı"
+
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "%s dizininden %s dizinine geçilemedi"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "'.' veya '..' silinemiyor"
+
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only; this works only if your "
+#~ "system\n"
+#~ " supports `unlink' for nonempty directories)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ msgstr ""
+#~ "DOSYA(lar)ı siler (bağlarını kaldırır).\n"
+#~ "\n"
+#~ " -d, --directory DOSYA, boş olmayan bir dizin olsa bile bağını "
+#~ "kaldırır\n"
+#~ " (yalnızca süper kullanıcı; bu, yalnızca "
+#~ "sisteminiz\n"
+#~ " boş olmayan dizinler için `unlink' "
+#~ "destekliyorsa\n"
+#~ " çalışır)\n"
+#~ " -f, --force mevcut olmayan dosyaları yok varsayar, hiç "
+#~ "sormaz\n"
+#~ " -i, --interactive silmeden önce sorar\n"
+
+#~ msgid "%s: count `%.*s' too large"
+#~ msgstr "%s: `%.*s' sayımı fazla büyük"
+
+#~ msgid "`-%s' option is obsolete; use `-l %s'"
+#~ msgstr "`-%s' seçeneği eski; yerine `-l %s' kullanın"
+
+#~ msgid ""
+#~ "Display file or file system status.\n"
+#~ "\n"
+#~ " -f, --file-system display file system status instead of file "
+#~ "status\n"
+#~ " -c --format=FORMAT use the specified FORMAT instead of the default\n"
+#~ " -L, --dereference follow links\n"
+#~ " -t, --terse print the information in terse form\n"
+#~ msgstr ""
+#~ "Dosya veya dosya sistemi durumunu gösterir.\n"
+#~ "\n"
+#~ " -f, --filesystem dosya durumu yerine dosya sistemi durumunu "
+#~ "gösterir\n"
+#~ " -c --format=BİÇEM öntanımlı biçem yerine belirtilen BİÇEM'i "
+#~ "kullanır\n"
+#~ " -L, --dereference bağları takip eder\n"
+#~ " -t, --terse bilgileri kısa biçemde gösterir\n"
+
+#~ msgid "Warning: `-l' is deprecated; use `-L' instead"
+#~ msgstr "Uyarı: `-l' sonraki sürümlerde kaldırılacaktır; `-L' kullanın"
+
+#~ msgid "invalid argument `%s'"
+#~ msgstr "`%s' argümanı geçersiz"
+
+#~ msgid "stdin: read error"
+#~ msgstr "standart girdi: okuma hatası"
+
+#~ msgid "`%s' option is obsolete; use `%s-%c %<PRIuMAX>'"
+#~ msgstr "`%s' seçeneği eski: yerine `%s -%c %<PRIuMAX>' kullanın"
+
+#~ msgid "%s: integer expression expected\n"
+#~ msgstr "%s: tamsayı ifade beklendi\n"
+
+#~ msgid "before -lt"
+#~ msgstr "-lt öncesinde"
+
+#~ msgid "after -lt"
+#~ msgstr "-lt sonrasında"
+
+#~ msgid "before -le"
+#~ msgstr "-le öncesinde"
+
+#~ msgid "after -le"
+#~ msgstr "-le sonrasında"
+
+#~ msgid "before -gt"
+#~ msgstr "-gt öncesinde"
+
+#~ msgid "after -gt"
+#~ msgstr "-gt sonrasında"
+
+#~ msgid "before -ge"
+#~ msgstr "-ge öncesinde"
+
+#~ msgid "after -ge"
+#~ msgstr "-ge sonrasında"
+
+#~ msgid "before -ne"
+#~ msgstr "-ne öncesinde"
+
+#~ msgid "after -ne"
+#~ msgstr "-ne sonrasında"
+
+#~ msgid "before -eq"
+#~ msgstr "-eq öncesinde"
+
+#~ msgid "after -eq"
+#~ msgstr "-eq sonrasında"
+
+#~ msgid "after -t"
+#~ msgstr "-t sonrasında"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating success.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Kullanımı: %s [argümanlar yoksayılır]\n"
+#~ " veya: %s SEÇENEK\n"
+#~ "Başarılı durum kodu ile çıkar.\n"
+#~ "\n"
+#~ "Bu seçenek isimleri kısaltılamaz.\n"
+#~ "\n"
+
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr "`-LISTE' seçeneği eski; yerine `--first-only -t LISTE' kullanın"
+
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "`-%lu' seçeneği eski; yerine `-f %lu' kullanın"
+
+#~ msgid ""
+#~ " -i, --idle add idle time as HOURS:MINUTES, . or old\n"
+#~ " (deprecated, use -u)\n"
+#~ " -l, --login print system login processes\n"
+#~ msgstr ""
+#~ " -i, --idle atıl zamanı SAAT:DAKİKA, . veya eski olarak\n"
+#~ " ekler (kullanımdan kalkacak, -u kullanın)\n"
+#~ " -l, --login sisteme giriş işlemlerini yazdırır\n"
+
+#~ msgid "%s: cannot find username for UID %lu\n"
+#~ msgstr "%s: kullanıcı-kimlik %lu için kullanıcı ismi bulunamadı\n"
+
+#~ msgid "too few arguments"
+#~ msgstr "argüman sayısı yetersiz"
+
+#~ msgid "cannot change to null group"
+#~ msgstr "boÅŸ gruba deÄŸiÅŸilemez"
+
+#~ msgid "group number"
+#~ msgstr "grup sayısı"
+
+#~ msgid "invalid group number %s"
+#~ msgstr "geçersiz grup sayısı %s"
+
+#~ msgid "invalid mode string: %s"
+#~ msgstr "geçersiz kip dizgesi: %s"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "Kullanım: %s [SEÇENEK]... SAHİBİ[:[GRUP]] DOSYA...\n"
+#~ " veya: %s [SEÇENEK]... : GRUP DOSYA...\n"
+#~ " veya: %s [SEÇENEK]... --reference=REFDOSYA DOSYA...\n"
+
+#~ msgid "%s: specified destination directory does not exist"
+#~ msgstr "%s: belirtilen hedef dizin yok"
+
+#~ msgid "%s: specified target is not a directory"
+#~ msgstr "%s: belirtilen hedef bir dizin deÄŸil"
+
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr "birden çok dosya kopyalanıyor fakat son argüman %s bir dizin değil"
+
+#~ msgid "too many non-option arguments: %s%s"
+#~ msgstr "çok sayıda seçenek olmayan argüman var: %s%s"
+
+#~ msgid ""
+#~ "\tonly one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}"
+#~ msgstr ""
+#~ "\t{ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, {unblock,sync} \n"
+#~ "seçenek kümelerinden her birinden birer tane kullanılabilir"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr ""
+#~ "dircolors'un içsel veritabanını listelemek seçeneği ile \n"
+#~ "beraber DOSYA argümanı kullanılamaz"
+
+#~ msgid ""
+#~ "Echo the STRING(s) to standard output.\n"
+#~ "\n"
+#~ " -n do not output the trailing newline\n"
+#~ " -e enable interpretation of the backslash-escaped "
+#~ "characters\n"
+#~ " listed below\n"
+#~ " -E disable interpretation of those sequences in STRINGs\n"
+#~ msgstr ""
+#~ "DİZGE(ler)i standart çıktıya yansılar.\n"
+#~ "\n"
+#~ " -n sonuna yenisatır eklemez\n"
+#~ " -e aşağıda belirtilen ters kesme kaçışlı karakterleri "
+#~ "yorumlar\n"
+#~ " -E DİZGE'lerde bu karakterlerin yorumlamasını durdurur\n"
+
+#~ msgid "invalid width option: %s"
+#~ msgstr "geçersiz genişlik seçeneği: %s"
+
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr "birden çok dosya kuruluyor fakat son argüman %s bir dizin değil"
+
+#~ msgid "%s is a directory"
+#~ msgstr "%s bir dizin"
+
+#~ msgid "too many non-option arguments"
+#~ msgstr "çok sayıda `seçenek olmayan' argüman var"
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "çok az `seçenek olmayan' argüman var"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s: Dosya mevcut"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "Kullanım: %s [SEÇENEK]... HEDEF [BAĞ_ADI]\n"
+#~ " veya: %s [SEÇENEK]... HEDEF... DİZİN\n"
+#~ " veya: %s [SEÇENEK]... --target-directory=HEDEF DİZİN...\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr "birden fazla bağ yaratırken son argüman bir dizin olmalı"
+
+#~ msgid "User name too long"
+#~ msgstr "Kullanıcı adı fazla uzun"
+
+#~ msgid "file"
+#~ msgstr "dosya"
+
+#~ msgid "files"
+#~ msgstr "dosyalar"
+
+#~ msgid "checksum"
+#~ msgstr "sağlama toplamı"
+
+#~ msgid "checksums"
+#~ msgstr "sağlama toplamları"
+
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "--string ve --check seçenekleri aynı anda kullanılamaz"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "--string seçeneği kullanılırken dosya adı belirtilemez"
+
+#~ msgid "wrong number of arguments"
+#~ msgstr "argüman sayısı hatalı"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr "fifo dosyaları için majör ve minör aygıt numaraları belirtilemez"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr "birden fazla dosya taşınırken son argüman dizin olmalıdır"
+
+#~ msgid "invalid option `%s'"
+#~ msgstr "`%s' seçeneği geçersiz"
+
+#~ msgid "invalid priority `%s'"
+#~ msgstr "öncelik olarak `%s' geçersiz"
+
+#~ msgid "old-style offset"
+#~ msgstr "eski tarz göreli konum"
+
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "`%s' eski kullanımda fazladan belirtilmiş ikinci dosya"
+
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr "eski kullanımda son iki argüman göreli konum olmalı"
+
+#~ msgid "path `%s' contains nonportable character `%c'"
+#~ msgstr "`%s' dosya yolu `%c' taşınamayan karakterini içeriyor"
+
+#~ msgid "`%s' is not a directory"
+#~ msgstr "`%s' bir dizin deÄŸil"
+
+#~ msgid "directory `%s' is not searchable"
+#~ msgstr "`%s' dizine eriÅŸilemiyor"
+
+#~ msgid "name `%s' has length %ld; exceeds limit of %ld"
+#~ msgstr "`%s' ismi, %ld uzunluğunda ve %ld karakterlik sınırdan uzun"
+
+#~ msgid "path `%s' has length %lu; exceeds limit of %ld"
+#~ msgstr "`%s' yolu, %lu uzunluğunda ve %ld sınırını geçiyor"
+
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "`--pages' geçersiz sayfa numara aralığı: `%s'"
+
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "`--pages' geçersiz başlangıç sayfa numarası: `%s'"
+
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "`--pages' geçersiz son sayfa numarası: `%s'"
+
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr ""
+#~ "`--pages' başlangıç sayfa numarası son sayfa numarasından daha büyük"
+
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%b %e %H:%M %Y"
+
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr "başlangıç sayfa sayısı toplam sayfa sayısından daha büyük: `%d'"
+
+#~ msgid "Page %d"
+#~ msgstr "Sayfa %d"
+
+#~ msgid "Usage: %s format [argument...]\n"
+#~ msgstr "Kullanımı: %s BİÇEM [ARGÜMAN...]\n"
+
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "%c: eski kullanım şeklindeki seçenekte geçersiz ek"
+
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "gereğinden fazla argüman; eski kullanım şeklindeki seçenekle (%s) "
+#~ "beraber\n"
+#~ "sadece bir dosya ismi verilebilir. Eski ÅŸekil yerine -n veya -c\n"
+#~ "seçeneklerini kullanın."
+
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "Uyarı: eski kullanım şeklindeki seçenekle (%s) beraber\n"
+#~ "sadece bir dosya ismi verilebilir. Eski ÅŸekil yerine -n veya -c\n"
+#~ "seçeneklerini kullanın."
+
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr ""
+#~ "%s: --max-consecutive-size-changes seçeneğiyle verilen argüman geçersiz"
+
+#~ msgid "argument expected\n"
+#~ msgstr "argüman gerekli\n"
+
+#~ msgid "too many arguments\n"
+#~ msgstr "argüman sayısı çok fazla\n"
+
+#~ msgid "file arguments missing"
+#~ msgstr "dosya argümanları eksik"
+
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "geçersiz terskesik gösterimi `\\%c'"
+
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr ""
+#~ "tekrar edilen karakterler bire indirgeme ve silme beraber yapılılrken\n"
+#~ " iki KUME verilmeli"
+
+#~ msgid "at least one string must be given when squeezing repeats"
+#~ msgstr ""
+#~ "tekrar eden karakterler bire indirgenirken en azından bir KUME verilmeli"
+
+#~ msgid ""
+#~ "invalid identity mapping; when translating, any [:lower:] or [:upper:]\n"
+#~ "construct in string1 must be aligned with a corresponding construct\n"
+#~ "([:upper:] or [:lower:], respectively) in string2"
+#~ msgstr ""
+#~ "çeviri yaparken KUME1'de [:lower:] kullanmışsanız KUME2'de [:upper:]\n"
+#~ "KUME1'de [:upper:] kullanmışsanız KUME2'de [:lower:] kullanmanız lazım"
+
+#~ msgid "only one argument may be specified"
+#~ msgstr "yalnız bir argüman verilebilir"
+
+#~ msgid "tab size contains an invalid character"
+#~ msgstr "tab boyunda geçersiz karakter"
+
+#~ msgid "Torbjorn Granlund and Richard M. Stallman"
+#~ msgstr "Torbjorn Granlund ve Richard M. Stallman"
+
+#~ msgid "Richard Stallman and David MacKenzie"
+#~ msgstr "Richard Stallman ve David MacKenzie"
+
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "Kullanım: %s [SEÇENEK]...SOL-DOSYA SAĞ-DOSYA\n"
+
+#~ msgid "Torbjorn Granlund, David MacKenzie, and Jim Meyering"
+#~ msgstr "Torbjorn Granlund, David MacKenzie ve Jim Meyering"
+
+#~ msgid "Stuart Kemp and David MacKenzie"
+#~ msgstr "Stuart Kemp ve David MacKenzie"
+
+#~ msgid "%s: `+' or `-' expected after delimeter"
+#~ msgstr "%s: ayraçtan sonra `+' veya `-' olmalı"
+
+#~ msgid "David Ihnat, David MacKenzie, and Jim Meyering"
+#~ msgstr "David Ihnat, David MacKenzie ve Jim Meyering"
+
+#~ msgid "Paul Rubin, David MacKenzie, and Stuart Kemp"
+#~ msgstr "Paul Rubin, David MacKenzie ve Stuart Kemp"
+
+#
+#~ msgid "Torbjorn Granlund, David MacKenzie, Larry McVoy, and Paul Eggert"
+#~ msgstr "Torbjorn Granlund, David MacKenzie, Larry McVoy ve Paul Eggert"
+
+#~ msgid "David MacKenzie and Jim Meyering"
+#~ msgstr "David MacKenzie ve Jim Meyering"
+
+#
+#~ msgid ""
+#~ "Torbjorn Granlund, David MacKenzie, Larry McVoy, Paul Eggert, and Jim "
+#~ "Meyering"
+#~ msgstr ""
+#~ "Torbjorn Granlund, David MacKenzie, Larry McVoy, Paul Eggert ve Jim "
+#~ "Meyering"
+
+#~ msgid "cannot change to parent of directory %s"
+#~ msgstr "%s dizininin kök dizinine geçilemedi"
+
+#~ msgid "Richard Mlynarik and David MacKenzie"
+#~ msgstr "Richard Mlynarik ve David MacKenzie"
+
+#~ msgid "Arnold Robbins and David MacKenzie"
+#~ msgstr "Arnold Robbins ve David MacKenzie"
+
+#~ msgid "Mike Parker and David MacKenzie"
+#~ msgstr "Mike Parker ve David MacKenzie"
+
+#~ msgid "Ulrich Drepper and Scott Miller"
+#~ msgstr "Ulrich Drepper ve Scott Miller"
+
+#~ msgid "Mike Parker, David MacKenzie, and Jim Meyering"
+#~ msgstr "Mike Parker, David MacKenzie ve Jim Meyering"
+
+#~ msgid "Scott Bartram and David MacKenzie"
+#~ msgstr "Scott Bartram ve David MacKenzie"
+
+#~ msgid "David M. Ihnat and David MacKenzie"
+#~ msgstr "David M. Ihnat ve David MacKenzie"
+
+#~ msgid "Joseph Arceneaux, David MacKenzie, and Kaveh Ghazi"
+#~ msgstr "Joseph Arceneaux, David MacKenzie ve Kaveh Ghazi"
+
+#~ msgid "Pete TerMaat and Roland Huebner"
+#~ msgstr "Pete TerMaat ve Roland Huebner"
+
+#~ msgid "David MacKenzie and Richard Mlynarik"
+#~ msgstr "David MacKenzie ve Richard Mlynarik"
+
+#
+#~ msgid "Paul Rubin, David MacKenzie, Richard Stallman, and Jim Meyering"
+#~ msgstr "Paul Rubin, David MacKenzie, Richard Stallman ve Jim Meyering"
+
+#~ msgid ""
+#~ "when the starting value is larger than the limit,\n"
+#~ "the increment must be negative"
+#~ msgstr ""
+#~ "başlangıç değeri sonuncudan büyükse,\n"
+#~ "artış negatif olmalıdır."
+
+#~ msgid ""
+#~ "when the starting value is smaller than the limit,\n"
+#~ "the increment must be positive"
+#~ msgstr ""
+#~ "başlangıç değeri sonuncudan küçükse,\n"
+#~ "artış pozitif olmalıdır."
+
+#~ msgid "Jim Meyering and Paul Eggert"
+#~ msgstr "Jim Meyering ve Paul Eggert"
+
+#~ msgid "Mike Haertel and Paul Eggert"
+#~ msgstr "Mike Haertel ve Paul Eggert"
+
+#~ msgid "*** invalid date/time ***"
+#~ msgstr "*** geçersiz tarih/zaman ***"
+
+#~ msgid "Kayvan Aghaiepour and David MacKenzie"
+#~ msgstr "Kayvan Aghaiepour ve David MacKenzie"
+
+#~ msgid "Jay Lepreau and David MacKenzie"
+#~ msgstr "Jay Lepreau ve David MacKenzie"
+
+#
+#~ msgid "Paul Rubin, David MacKenzie, Ian Lance Taylor, and Jim Meyering"
+#~ msgstr "Paul Rubin, David MacKenzie, Ian Lance Taylor ve Jim Meyering"
+
+#~ msgid "Mike Parker, Richard M. Stallman, and David MacKenzie"
+#~ msgstr "Mike Parker, Richard M. Stallman ve David MacKenzie"
+
+#~ msgid "Kevin Braunsdorf and Matthew Bradburn"
+#~ msgstr "Kevin Braunsdorf ve Matthew Bradburn"
+
+#
+#~ msgid ""
+#~ "Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie, and Randy Smith"
+#~ msgstr ""
+#~ "Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie ve Randy Smith"
+
+#~ msgid "Joseph Arceneaux and David MacKenzie"
+#~ msgstr "Joseph Arceneaux ve David MacKenzie"
+
+#~ msgid "Paul Rubin and David MacKenzie"
+#~ msgstr "Paul Rubin ve David MacKenzie"
+
+#~ msgid "Joseph Arceneaux, David MacKenzie, and Michael Stone"
+#~ msgstr "Joseph Arceneaux, David MacKenzie ve Michael Stone"
+
+#~ msgid ""
+#~ "Warning: the meaning of '-l' will change in a future release to conform "
+#~ "to POSIX"
+#~ msgstr ""
+#~ "Uyarı: '-l'nin anlamı sonraki sürümlerde değişerek POSIX uyumlu hale "
+#~ "gelecektir"
+
+#~ msgid "unable to restore permissions of %s"
+#~ msgstr "%s'in izinleri eski haline getirilemedi"
+
+#~ msgid ""
+#~ "\n"
+#~ "In -wNUMBER, the letter `w' may be omitted.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "-wSAYI seçeneğinde, `w' harfi yazılmayabilir.\n"
+
+#~ msgid ""
+#~ " -c, --bytes=SIZE print first SIZE bytes\n"
+#~ " -n, --lines=NUMBER print first NUMBER lines instead of first 10\n"
+#~ msgstr ""
+#~ " -c, --bytes=SAYI ilk SAYI baytı gösterir\n"
+#~ " -n, --lines=N ilk 10 yerine ilk N satırı gösterir\n"
+
+#~ msgid "invalid number"
+#~ msgstr "geçersiz sayı"
+
+#~ msgid "%s is larger than the maximum file size on this system"
+#~ msgstr "%s bu sistemdeki maksimum dosya boyundan daha büyük"
+
+#~ msgid "FIXME: ksb and mjb"
+#~ msgstr "DÃœZELT: ksb ve mjb"
+
+#~ msgid "program error"
+#~ msgstr "yazılım hatası"
+
+#
+#~ msgid "stack overflow"
+#~ msgstr "yığıt taşması"
+
+#~ msgid "missing file arguments"
+#~ msgstr "dosya argümanları eksik"
+
+#~ msgid " Type"
+#~ msgstr " Tür"
+
+#~ msgid "\\%c: invalid escape"
+#~ msgstr "\\%c: öncelem geçersiz"
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
new file mode 100644
index 0000000..bee10a2
--- /dev/null
+++ b/po/zh_CN.gmo
Binary files differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100644
index 0000000..4526809
--- /dev/null
+++ b/po/zh_CN.po
@@ -0,0 +1,8294 @@
+# simplified Chinese translation of fileutils.
+# Copyright (C) 1998, 2002 Free Software Foundation, Inc.
+# Yip Chi Lap <clyip@cs.hku.hk>, 1998.
+# Abel Cheung <maddog@linux.org.hk>, 2002.
+# Anthony Fok <anthony@thizlinux.com>, 2002.
+# Funda Wang <fundawang@linux.net.cn>, 2004, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 6.1\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2006-08-24 23:38+0800\n"
+"Last-Translator: Funda Wang <fundawang@linux.net.cn>\n"
+"Language-Team: Chinese (simplified) <i18n-translation@lists.linux.net.cn>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, c-format
+msgid "preserving permissions for %s"
+msgstr "%s çš„ä¿ç•™æƒé™"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "设定 %s çš„æƒé™"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "%2$s çš„å‚æ•° %1$s 无效"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "%2$s çš„å‚æ•° %1$s ä¸æ˜Žç¡®"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "有效的å‚数为:"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "写入错误"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "未知的系统错误"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "无法 stat %s"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "普通空文件"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "普通文件"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "目录"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "å—特殊文件"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "字符特殊文件"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "先进先出"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "符å·é“¾æŽ¥"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "套接字"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "消æ¯é˜Ÿåˆ—"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "ä¿¡å·é‡"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "共享内存对象"
+
+#: lib/file-type.c:69
+#, fuzzy
+msgid "typed memory object"
+msgstr "共享内存对象"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "å¤æ€ªæ–‡ä»¶"
+
+#: lib/gai_strerror.c:44
+msgid "Address family for hostname not supported"
+msgstr "主机å的地å€å®¶æ—ä¸æ”¯æŒ"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr "å称解æžæœ‰ä¸å¯æ¢å¤çš„失败"
+
+#: lib/gai_strerror.c:48
+msgid "ai_family not supported"
+msgstr "ä¸æ”¯æŒ ai_family"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr "内存分é…失败"
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr "没有与主机åå…³è”的地å€"
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr "å称或æœåŠ¡æœªçŸ¥"
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+msgid "ai_socktype not supported"
+msgstr "ä¸æ”¯æŒ ai_socktype"
+
+#: lib/gai_strerror.c:54
+msgid "System error"
+msgstr "系统错误"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr "正在处ç†è¯·æ±‚"
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr "请求已å–消"
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr "请求未å–消"
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr "全部请求已完æˆ"
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr "被信å·ä¸­æ–­"
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr "å‚数字符串编ç ä¸æ­£ç¡®"
+
+#: lib/gai_strerror.c:74
+msgid "Unknown error"
+msgstr "未知错误"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s:选项“%sâ€ä¸æ˜Žç¡®\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s:选项“--%sâ€ä¸å…许å‚æ•°\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s:选项“%c%sâ€ä¸å…许å‚æ•°\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s:选项“%sâ€éœ€è¦å‚æ•°\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s:无法识别的选项“--%sâ€\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s:无法识别的选项“%c%sâ€\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s:éžæ³•é€‰é¡¹ -- %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s:无效选项 -- %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s:选项需è¦å‚æ•° -- %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s:选项“-W %sâ€ä¸æ˜Žç¡®\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s:选项“-W %sâ€ä¸å…许å‚æ•°\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr "å—大å°"
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "无法更改 %s çš„æƒé™"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "无法创建目录 %s"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "内存用尽"
+
+#: lib/openat-die.c:34
+#, c-format
+msgid "unable to record current working directory"
+msgstr "无法记录目å‰çš„工作目录"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr "返回到åˆå§‹å·¥ä½œç›®å½•å¤±è´¥"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "“"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "â€"
+
+#: lib/randread.c:125
+#, c-format
+msgid "%s: end of file"
+msgstr "%s:文件结æŸ"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "转æ¢æ— æ•ˆï¼š%s"
+
+#: lib/regcomp.c:140
+#, fuzzy
+msgid "Invalid collation character"
+msgstr "æƒé™æ¨¡å¼å­—符串 %2$s 中出现无效的字符 %1$s"
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "æƒé™æ¨¡å¼å­—符串 %2$s 中出现无效的字符 %1$s"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+#, fuzzy
+msgid "Invalid back reference"
+msgstr "æƒé™æ¨¡å¼å­—符串无效:%s "
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+#, fuzzy
+msgid "Invalid range end"
+msgstr "æƒé™æ¨¡å¼å­—符串无效:%s "
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "内存用尽"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "转æ¢æ— æ•ˆï¼š%s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "转æ¢æ— æ•ˆï¼š%s"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "转æ¢æ— æ•ˆï¼š%s"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "转æ¢æ— æ•ˆï¼š%s"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr "在 %s 进行递归æ“作å分å±é™©"
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr "在 %s 进行递归æ“作å分å±é™©(与 %s 相åŒ)"
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[yY]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "iconv 函数无法使用"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "iconv 函数ä¸å­˜åœ¨"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "字符值超出å¯æŽ¥å—的范围以外"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "无法将 U+%04X 转æ¢è‡³ç”¨æˆ·çš„字符集"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "无法将 U+%04X 转æ¢è‡³ç”¨æˆ·çš„字符集:%s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "无效的用户"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "无效的组"
+
+#: lib/userspec.c:109
+msgid "invalid spec"
+msgstr "无效的 spec"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr "(C)"
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"\n"
+"这是自由软件。您å¯ä»¥æŒ‰ç…§ GNU GPL åè®® <http://www.gnu.org/licenses/gpl.html> "
+"çš„æ¡æ¬¾å†å‘布此软件的副本,但我们无法ä¿è¯ç›¸å…³æ³•å¾‹ä¸å¯¹è¿™ä¸€æƒ…形进行é™åˆ¶ã€‚\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "由 %s 编写。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "由 %s 和 %s 编写。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "ç”± %sã€%s å’Œ %s 编写。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"ç”± %sã€%sã€%s å’Œ\n"
+"%s 编写。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"ç”± %sã€%sã€%sã€\n"
+"%s 和 %s 编写。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"ç”± %sã€%sã€%sã€\n"
+"%sã€%s å’Œ %s 编写。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"ç”± %sã€%sã€%sã€\n"
+"%sã€%sã€%s å’Œ %s 编写。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"ç”± %sã€%sã€%sã€\n"
+"%sã€%sã€%sã€%s\n"
+"和 %s 编写。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"ç”± %sã€%sã€%sã€\n"
+"%sã€%sã€%sã€%sã€\n"
+"%sã€å’Œ %s 编写。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"ç”± %sã€%sã€%sã€\n"
+"%sã€%sã€%sã€%sã€\n"
+"%sã€%sã€å’Œå…¶ä»–人编写。\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "无效的å‚数:%s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "字符串比较出现错误"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "请设定 LC_ALL='C' é¿å…问题出现。"
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "è¦æ¯”较的字符串为 %s å’Œ %s。"
+
+#: lib/xmemxfrm.c:55
+#, c-format
+msgid "string transformation failed"
+msgstr "字符串转æ¢å¤±è´¥"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "无效的用户 %s"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "æƒé™æ¨¡å¼å­—符串 %2$s 中出现无效的字符 %1$s"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s 太大"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "请å°è¯•æ‰§è¡Œâ€œ%s --helpâ€æ¥èŽ·å–更多信æ¯ã€‚\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr ""
+" --help 显示此帮助并退出。\n"
+" --version 输出版本信æ¯å¹¶é€€å‡º\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"如果[文件]缺çœï¼Œæˆ–者[文件]为 - ,则读å–标准输入。\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"è¯·å‘ <%s> 报告错误。\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "读å–错误"
+
+#: src/base64.c:234
+#, c-format
+msgid "invalid input"
+msgstr "无效的输入"
+
+#: src/base64.c:271
+#, c-format
+msgid "invalid wrap size: %s"
+msgstr "无效的æ¢è¡Œå­—符数:%s"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr "é¢å¤–çš„æ“作数 %s"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "关闭标准输入"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s å称 [åŽç¼€]\n"
+" 或:%s 选项\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"去掉å‰å¯¼çš„目录部分åŽæ‰“å°â€œå称â€ã€‚\n"
+"如果指定的è¯ï¼Œè¿˜ä¼šåŽ»æŽ‰å°¾éšçš„“åŽç¼€â€ã€‚\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+"\n"
+"示例:\n"
+" %s /usr/bin/sort 输出“sortâ€ã€‚\n"
+" %s include/stdio.h .h 输出“stdioâ€ã€‚\n"
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, c-format
+msgid "missing operand"
+msgstr "缺少æ“作数"
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "用法:%s [选项] [文件]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"å°†[文件]或标准输入组åˆè¾“出到标准输出。\n"
+"\n"
+" -A, --show-all 等价于 -vET\n"
+" -b, --number-nonblank 对éžç©ºè¾“出行编å·\n"
+" -e 等价于 -vE\n"
+" -E, --show-ends 在æ¯è¡Œç»“æŸå¤„显示 $\n"
+" -n, --number 对输出的所有行编å·\n"
+" -s, --squeeze-blank ä¸è¾“出多行空行\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t 与 -vT 等价\n"
+" -T, --show-tabs 将跳格字符显示为 ^I\n"
+" -u (被忽略)\n"
+" -v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+"\n"
+"示例:\n"
+" %s f - g 先输出 f 的内容,然åŽè¾“出标准输入的内容,最åŽè¾“出 g 的内容。\n"
+" %s 将标准输入的内容å¤åˆ¶åˆ°æ ‡å‡†è¾“出。\n"
+
+#: src/cat.c:333
+#, c-format
+msgid "cannot do ioctl on %s"
+msgstr "无法在 %s 上执行 ioctrl"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "标准输出"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s:输入文件是输出文件"
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "无效的组 %s"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"用法:%s [选项]... 组 文件...\n"
+" 或:%s [选项]... --reference=å‚考文件 文件...\n"
+
+#: src/chgrp.c:117
+#, fuzzy
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"å°†æ¯ä¸ª[文件]的所属组设定为[组]。\n"
+"如果使用 --reference,则将æ¯ä¸ª[文件]的所属组设定为与[å‚考文件]相åŒã€‚\n"
+"\n"
+" -c, --changes åƒ --verbose,但åªåœ¨æœ‰æ›´æ”¹æ—¶æ‰æ˜¾ç¤ºç»“æžœ\n"
+" --dereference 会影å“符å·é“¾æŽ¥æ‰€æŒ‡ç¤ºçš„对象,而éžç¬¦å·é“¾æŽ¥æœ¬èº«(默认"
+"值)\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+#, fuzzy
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference 会影å“符å·é“¾æŽ¥æœ¬èº«ï¼Œè€Œéžç¬¦å·é“¾æŽ¥æ‰€æŒ‡ç¤ºçš„目的地\n"
+" (当系统支æŒæ›´æ”¹ç¬¦å·é“¾æŽ¥çš„所有者,此选项æ‰æœ‰æ•ˆ)\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+" --no-preserve-root ä¸ç‰¹æ®Šå¯¹å¾…“/â€(默认值)\n"
+" --preserve-root ä¸å…许在“/â€ä¸Šé€’å½’æ“作\n"
+" -r, -R, --recursive 递归删除目录åŠå…¶å†…容\n"
+" -v, --verbose 详细显示进行的步骤\n"
+
+#: src/chgrp.c:134
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet 去除大部份的错误信æ¯\n"
+" --reference=å‚考文件 使用<å‚考文件>的所属组,而éžæŒ‡å®šçš„<组>\n"
+" -R, --recursive 递归处ç†æ‰€æœ‰çš„文件åŠå­ç›®å½•\n"
+" -v, --verbose 处ç†ä»»ä½•æ–‡ä»¶éƒ½ä¼šæ˜¾ç¤ºä¿¡æ¯\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr "-R --dereference éœ€è¦ -H 或 -L 其中之一"
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, c-format
+msgid "missing operand after %s"
+msgstr "%s åŽç¼ºå°‘æ“作数"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "无法å–å¾— %s 的属性"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "检查 %s 的新属性"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "符å·é“¾æŽ¥ %s 和该链接所指示的对象都没有更改\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "%s çš„æƒé™æ¨¡å¼å·²æ›´æ”¹ä¸º %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "无法将 %s çš„æƒé™æ¨¡å¼æ›´æ”¹ä¸º %04lo (%s)\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "%s çš„æƒé™æ¨¡å¼ä¿ç•™ä¸º %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "无法访问 %s"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "无法读å–目录 %s"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "更改 %s çš„æƒé™"
+
+#: src/chmod.c:286
+#, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "%s:新的æƒé™ä¸º %sï¼Œè€Œéž %s"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr "fts_read 失败"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"用法:%s [选项]... 模å¼[,模å¼]... 文件...\n"
+" 或:%s [选项]... å…«è¿›åˆ¶æ¨¡å¼ æ–‡ä»¶...\n"
+" 或:%s [选项]... --reference=å‚考文件 文件...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+"å°†æ¯ä¸ª[文件]的模å¼æ›´æ”¹ä¸º[模å¼]。\n"
+"\n"
+" -c, --changes 类似 --verbose,但åªåœ¨æœ‰æ›´æ”¹æ—¶æ‰æ˜¾ç¤ºç»“æžœ\n"
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+" -f, --silent, --quiet 去除大部份的错误信æ¯\n"
+" -v, --verbose 处ç†ä»»ä½•æ–‡ä»¶éƒ½ä¼šæ˜¾ç¤ºä¿¡æ¯\n"
+" --reference=å‚考文件 使用[å‚考文件]的模å¼ï¼Œè€Œéžè‡ªè¡ŒæŒ‡å®šæƒé™æ¨¡å¼\n"
+" -R, --recursive 以递归方å¼æ›´æ”¹æ‰€æœ‰çš„文件åŠå­ç›®å½•\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr "无法组åˆä½¿ç”¨ mode å’Œ --reference 选项"
+
+#: src/chmod.c:510
+#, c-format
+msgid "invalid mode: %s"
+msgstr "无效模å¼ï¼š%s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "%s 的所有者已更改为 %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "%s 的所属组已更改为 %s\n"
+
+#: src/chown-core.c:149
+#, c-format
+msgid "no change to ownership of %s\n"
+msgstr "%s 的归属关系未更改\n"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "无法更改 %s 的所有者为 %s\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "无法更改 %s 的所属组为 %s\n"
+
+#: src/chown-core.c:154
+#, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "更改 %s 的所有者为失败\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "%s 的所有者已ä¿ç•™ä¸º %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "%s 的所属组已ä¿ç•™ä¸º %s\n"
+
+#: src/chown-core.c:159
+#, c-format
+msgid "ownership of %s retained\n"
+msgstr "%s 的所有者已ä¿ç•™\n"
+
+#: src/chown-core.c:344
+#, c-format
+msgid "cannot dereference %s"
+msgstr "无法å–消 %s 的引用"
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "正在更改 %s 的所有者"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "正在更改 %s 的所属组"
+
+#: src/chown.c:93
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"用法:%s [选项]... [所有者][:[组]] 文件...\n"
+" 或:%s [选项]... --reference=å‚考文件 文件...\n"
+
+#: src/chown.c:98
+#, fuzzy
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"更改æ¯ä¸ª <文件> çš„ <所有者> å’Œ/或 <所属组>。\n"
+"\n"
+" -c, --changes 类似 verbose,但åªåœ¨æœ‰æ›´æ”¹æ—¶æ‰æ˜¾ç¤ºç»“æžœ\n"
+" --dereference å—å½±å“的是符å·é“¾æŽ¥æ‰€æŒ‡ç¤ºçš„对象,而éžç¬¦å·é“¾æŽ¥æœ¬èº«\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=ç›®å‰æ‰€æœ‰è€…:ç›®å‰ç»„\n"
+" åªå½“æ¯ä¸ªæ–‡ä»¶çš„所有者和组符åˆé€‰é¡¹æ‰€æŒ‡å®šçš„,\n"
+" æ‰ä¼šæ›´æ”¹æ‰€æœ‰è€…和组。其中一个å¯ä»¥çœç•¥ï¼Œè¿™æ—¶\n"
+" å·²çœç•¥çš„属性就ä¸éœ€è¦ç¬¦åˆåŽŸæœ‰çš„属性。\n"
+
+#: src/chown.c:122
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet 去除大部份的错误信æ¯\n"
+" --reference=å‚考文件 使用<å‚考文件>的所属组,而éžæŒ‡å®šçš„<组>\n"
+" -R, --recursive 递归处ç†æ‰€æœ‰çš„文件åŠå­ç›®å½•\n"
+" -v, --verbose 处ç†ä»»ä½•æ–‡ä»¶éƒ½ä¼šæ˜¾ç¤ºä¿¡æ¯\n"
+
+#: src/chown.c:144
+#, fuzzy
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"如果没有指定<所有者>,则ä¸ä¼šæ›´æ”¹ã€‚<组>若没有指定也ä¸ä¼šæ›´æ”¹ï¼Œä½†å½“加上\n"
+"“:â€æ—¶<组>会更改为指定所有者的主è¦ç»„。<所有者>å’Œ<组>å¯ä»¥æ˜¯æ•°å­—\n"
+"或å称。\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s 新根用户 [命令...]\n"
+" 或:%s 选项\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "无法将根目录切æ¢åˆ° %s"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr "无法切æ¢åˆ°æ ¹ç›®å½•"
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "无法è¿è¡Œå‘½ä»¤ %s"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s:文件太长"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"用法:%s [文件]...\n"
+" 或:%s [选项]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"打å°æ¯ä¸ªæ–‡ä»¶çš„ CRC 校验和åŠå­—节统计。\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "用法:%s [选项]... 文件1 文件2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr "é€è¡Œæ¯”较已排åºçš„文件[文件1]å’Œ[文件2]。\n"
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "ä¿ç•™ %s 的所有者失败"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr "查阅文件 %s 失败"
+
+#: src/copy.c:227
+#, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "ä¿ç•™ %s 的作者失败"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "无法打开 %s 读å–æ•°æ®"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "无法 fstat %s"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "跳过文件 %s,因为准备å¤åˆ¶æ—¶å®ƒå·²è¢«å…¶å®ƒæ–‡ä»¶æ›¿ä»£"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "无法删除 %s"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "已删除%s\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "无法创建普通文件%s"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "读入 %s"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "无法 lseek %s"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "写入 %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "ä¿ç•™ %s 的时间"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "关闭 %s"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s:是å¦è¦†ç›– %s,而ä¸ç†ä¼šæƒé™æ¨¡å¼ %04lo?"
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s:是å¦è¦†ç›–%s? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (备份:%s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "略过目录 %s"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "警告:指定æ¥æºæ–‡ä»¶ %s 多于一次"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s åŠ %s 为åŒä¸€æ–‡ä»¶"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "无法以目录 %2$s æ¥è¦†ç›–éžç›®å½• %1$s"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "ä¸ä¼šä»¥ %2$s 覆盖刚创建的 %1$s"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "无法以éžç›®å½•æ¥è¦†ç›–目录 %s"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "无法将目录移动至éžç›®å½•ï¼š%s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "备份 %s 会破åæºæ–‡ä»¶ï¼›æœªç§»åŠ¨ %s"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "备份 %s 会破åæºæ–‡ä»¶ï¼›æœªå¤åˆ¶ %s"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "无法备份 %s"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "无法将目录 %s å¤åˆ¶åˆ°è‡ªå·± %s"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "ä¸ä¼šåˆ›å»ºæŒ‡å‘目录 %2$s 的硬链接 %1$s"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "æ— æ³•åˆ›å»ºæŒ‡å‘ %2$s 的硬链接 %1$s"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "无法将目录 %s 移动至自身的å­ç›®å½• %s 下"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "无法将 %s 移动至 %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr "无法进行跨设备的移动:%s 至 %s;无法删除目标"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "无法å¤åˆ¶å¾ªçŽ¯çš„符å·é“¾æŽ¥ %s"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr "%s:åªèƒ½äºŽå½“å‰ç›®å½•ä¸­åˆ›å»ºç›¸å¯¹çš„符å·é“¾æŽ¥"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "æ— æ³•åˆ›å»ºæŒ‡å‘ %2$s 的符å·é“¾æŽ¥ %1$s"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "无法创建链接 %s"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "无法创建先进先出文件 %s"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "无法创建特殊文件 %s"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "无法读å–符å·é“¾æŽ¥ %s"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "无法创建符å·é“¾æŽ¥ %s"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s 的文件类型ä¸è¯¦"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "无法将 %s 的备份还原"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (还原备份)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"用法:%s [选项]... [-T] æº ç›®çš„\n"
+" 或:%s [选项]... æº... 目录\n"
+" 或:%s [选项]... -t 目录 æº...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"å°†<æº>文件å¤åˆ¶è‡³<目的>,或将多个<æº>å¤åˆ¶è‡³<目录>。\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr "长选项必须用的å‚数在使用短选项时也是必需的。\n"
+
+#: src/cp.c:170
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive 等于 -dpPR\n"
+" --backup[=CONTROL] 为æ¯ä¸ªå·²å­˜åœ¨çš„目的地文件创建备份文件\n"
+" -b 类似 --backup,但ä¸æŽ¥å—任何å‚æ•°\n"
+" --copy-contents 当使用递归模å¼æ—¶å¤åˆ¶ç‰¹æ®Šæ–‡ä»¶çš„内容\n"
+" -d 等于 --no-dereference --preserve=link\n"
+
+#: src/cp.c:177
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" -f, --force 如果无法打开已存在的文件,会删除该文件并å†\n"
+" å°è¯•æ‰“å¼€\n"
+" -i, --interactive 覆盖文件å‰éœ€è¦ç¡®è®¤\n"
+" -H 使用命令列中的符å·é“¾æŽ¥æŒ‡ç¤ºçš„真正目的地\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+" -l, --link 链接文件而ä¸å¤åˆ¶\n"
+" -L, --dereference 总是跟éšç¬¦å·é“¾æŽ¥\n"
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr " -P, --no-dereference 从ä¸è·Ÿéšç¬¦å·é“¾æŽ¥\n"
+
+#: src/cp.c:190
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -p 等于 --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] è‹¥å¯èƒ½ï¼Œä¿ç•™æŒ‡å®šçš„文件属性\n"
+" (默认值为:mode,ownership,timestamps)\n"
+" é¢å¤–的属性有:linksã€all\n"
+
+#: src/cp.c:196
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --sno-preserve=ATTR_LIST ä¸ä¿ç•™æŒ‡å®šçš„文件属性\n"
+" --parents å¤åˆ¶å‰å…ˆåœ¨<目录>创建æ¥æºæ–‡ä»¶è·¯å¾„中的所有目录\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive å¤åˆ¶ç›®å½•åŠç›®å½•å†…的所有项目\n"
+" --remove-destination å°è¯•æ‰“开目的地文件å‰å…ˆåˆ é™¤å·²å­˜åœ¨çš„目的地\n"
+" 文件 (与 --force 选项作对比)\n"
+
+#: src/cp.c:205
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --sparse=WHEN 控制创建 sparse 文件的方å¼\n"
+" --strip-trailing-slashes 删除å‚数中所有<æº>文件/目录末端的斜æ \n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link åªåˆ›å»ºç¬¦å·é“¾æŽ¥è€Œä¸æ˜¯å¤åˆ¶æ–‡ä»¶\n"
+" -S, --suffix=åŽç¼€ 自行指定备份文件的<åŽç¼€>\n"
+" -t, --target-directory=目录 将所有å‚数指定的<æº>文件/目录å¤åˆ¶è‡³<目录>\n"
+" -T, --no-target-directory 将目标当作普通文件\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update åªåœ¨<æº>文件比目的地文件新,或目的地文件\n"
+" ä¸å­˜åœ¨æ—¶æ‰è¿›è¡Œå¤åˆ¶\n"
+" -v, --verbose 详细显示进行的步骤\n"
+" -x, --one-file-system ä¸ä¼šè·¨è¶Šæ–‡ä»¶ç³»ç»Ÿè¿›è¡Œæ“作\n"
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"默认使用模å¼ä¸­ï¼Œ<æº>æ–‡ä»¶æ˜¯å¦ sparse 文件会由一ç§ç²—略的方å¼å†³å®šï¼Œè€Œä¸”相应\n"
+"çš„<目的地>文件也会是 sparse 文件。此方å¼ç­‰äºŽä½¿ç”¨ --sparse=auto 选项。指定\n"
+"--sparse=always 则åªè¦<æº>文件å«æœ‰è¶³å¤Ÿé•¿çš„ 0 字节都会产生 sparse çš„\n"
+"<目的地>文件。\n"
+"使用 --sparse=never 会ç¦æ­¢äº§ç”Ÿ sparse 文件。\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"备份文件的åŽç¼€ä¸ºâ€œ~â€ï¼Œé™¤éžä»¥ --suffix 选项或是 SIMPLE_BACKUP_SUFFIX\n"
+"环境å˜é‡æŒ‡å®šã€‚版本控制的方å¼å¯é€è¿‡ --backup 选项或 VERSION_CONTROL 环境\n"
+"å˜é‡æ¥é€‰æ‹©ã€‚以下是å¯ç”¨çš„å˜é‡å€¼ï¼š\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off ä¸ä¼šè¿›è¡Œå¤‡ä»½ (å³ä½¿ä½¿ç”¨äº† --backup 选项)\n"
+" numbered, t 备份文件会加上数字\n"
+" existing, nil 若有数字的备份文件已ç»å­˜åœ¨åˆ™ä½¿ç”¨æ•°å­—,å¦åˆ™ä½¿ç”¨æ™®é€šæ–¹å¼å¤‡"
+"份\n"
+" simple, never 永远使用普通方å¼å¤‡ä»½\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"有一个特别情况:如果åŒæ—¶æŒ‡å®š --force å’Œ --backup 选项,而且<æº>å’Œ<目的地>\n"
+"是åŒä¸€ä¸ªå·²å­˜åœ¨çš„普通文件的è¯ï¼Œcp 会将<æº>文件备份。\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "无法ä¿ç•™%s的时间"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "ä¿ç•™ %s çš„æƒé™å¤±è´¥"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "无法创建目录 %s"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s 存在但并éžç›®å½•"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "访问 %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, c-format
+msgid "missing file operand"
+msgstr "缺少了文件æ“作数"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, fuzzy, c-format
+msgid "missing destination file operand after %s"
+msgstr "缺少了目的地文件"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr ""
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, c-format
+msgid "target %s is not a directory"
+msgstr "目标 %s ä¸æ˜¯ç›®å½•"
+
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "当ä¿ç•™è·¯å¾„时,目的地必须是目录"
+
+#: src/cp.c:967 src/mv.c:384
+#, fuzzy, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr ""
+"警告:--version-control (-V) 选项已ç»è¿‡æ—¶ï¼›å°†æ¥çš„版本éšæ—¶å¯èƒ½ä¸å†æ”¯æŒ\n"
+"此选项。请使用 --backup=%s。"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, c-format
+msgid "multiple target directories specified"
+msgstr "指定了多个目标目录"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "无法åŒæ—¶åˆ›å»ºå®žé™…åŠç¬¦å·é“¾æŽ¥"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "备份方å¼"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "输入消失"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s:行数超出范围"
+
+#: src/csplit.c:709
+#, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s:%s:行数超出范围"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr ""
+
+#: src/csplit.c:755
+#, c-format
+msgid "%s: %s: match not found"
+msgstr "%s:%s:无匹é…"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr ""
+
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "写入时å‘生错误"
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr ""
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr ""
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr ""
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr ""
+
+#: src/csplit.c:1130
+#, fuzzy, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "转æ¢æ— æ•ˆï¼š%s"
+
+#: src/csplit.c:1163
+#, fuzzy, c-format
+msgid "%s: invalid pattern"
+msgstr "%s:文件类型无效"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr ""
+
+#: src/csplit.c:1172
+#, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr ""
+
+#: src/csplit.c:1178
+#, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr ""
+
+#: src/csplit.c:1231
+#, fuzzy, c-format
+msgid "invalid format width"
+msgstr "æ—¥æœŸæ ¼å¼ %s 无效"
+
+#: src/csplit.c:1252
+#, fuzzy, c-format
+msgid "invalid format precision"
+msgstr "æƒé™æ¨¡å¼å­—符串无效:%s "
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr ""
+
+#: src/csplit.c:1279
+#, fuzzy, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "转æ¢æ— æ•ˆï¼š%s"
+
+#: src/csplit.c:1282
+#, fuzzy, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "转æ¢æ— æ•ˆï¼š%s"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr ""
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr ""
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s:无效数字"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "用法:%s [选项]... 文件 模å¼...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/csplit.c:1486
+#, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"如果<文件>为 -,则读å–标准输入。æ¯ä¸ª<模å¼>都å¯ä»¥æ˜¯ï¼š\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "用法:%s [选项]... [文件]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+
+#: src/cut.c:204
+#, fuzzy
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -w, --width=COLS 自行指定è¤å¹•å®½åº¦è€Œä¸ä½¿ç”¨ç›®å‰çš„数值\n"
+" -x é€è¡Œåˆ—出项目而ä¸æ˜¯é€æ åˆ—出\n"
+" -X æ ¹æ®æ‰©å±•å排åº\n"
+" -1 æ¯è¡Œåªåˆ—出一个文件\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+#, fuzzy
+msgid "invalid byte or field list"
+msgstr "æ—¥æœŸæ ¼å¼ %s 无效"
+
+#: src/cut.c:469
+#, fuzzy, c-format
+msgid "byte offset %s is too large"
+msgstr "%s:文件过大"
+
+#: src/cut.c:472
+#, fuzzy, c-format
+msgid "field number %s is too large"
+msgstr "无效的å·ç  %s"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr ""
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr ""
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr ""
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr ""
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr ""
+
+#: src/cut.c:851
+#, fuzzy
+msgid "missing list of fields"
+msgstr "缺少了目的地文件"
+
+#: src/cut.c:853
+#, fuzzy
+msgid "missing list of positions"
+msgstr "缺少了目的地文件"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+"用法:%s [选项]... [+æ ¼å¼]\n"
+" 或:%s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "标准输入"
+
+#: src/date.c:297 src/date.c:517
+#, c-format
+msgid "invalid date %s"
+msgstr "无效的日期 %s"
+
+#: src/date.c:408 src/date.c:442
+#, c-format
+msgid "multiple output formats specified"
+msgstr "指定了多ç§è¾“出格å¼"
+
+#: src/date.c:420
+#, fuzzy, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr ""
+"显示 dircolors 内部数æ®åº“的选项和选择 shell 语法的选项\n"
+"是互相抵触的"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr ""
+
+#: src/date.c:448
+#, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "无法设定日期"
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "时间 %s 超出范围"
+
+#: src/dd.c:404
+#, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s [æ“作符]...\n"
+" 或:%s 选项\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"å¤åˆ¶æ–‡ä»¶ï¼Œå¹¶æ ¹æ®ä»¥ä¸‹çš„选项将数æ®è½¬æ¢å’Œæ ¼å¼åŒ–。\n"
+"\n"
+" bs=字节 强迫 ibs=<字节> åŠ obs=<字节>\n"
+" cbs=字节 æ¯æ¬¡è½¬æ¢æŒ‡å®šçš„<字节>\n"
+" conv=关键字 æ ¹æ®ä»¥é€—å·åˆ†éš”的关键字表示的方å¼æ¥è½¬æ¢æ–‡ä»¶\n"
+" count=å—æ•°ç›® åªå¤åˆ¶æŒ‡å®š<å—æ•°ç›®>的输入数æ®\n"
+" ibs=字节 æ¯æ¬¡è¯»å–指定的<字节>\n"
+
+#: src/dd.c:418
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=文件 读å–<文件>内容而éžæ ‡å‡†è¾“入的数æ®\n"
+" iflag=标志 按照逗å·åˆ†éš”的符å·åˆ—表读å–\n"
+" obs=字节 æ¯æ¬¡å†™å…¥æŒ‡å®šçš„<字节>\n"
+" of=文件 将数æ®å†™å…¥<文件>而ä¸åœ¨æ ‡å‡†è¾“出显示\n"
+" oflag=标志 按照逗å·åˆ†éš”的符å·åˆ—表写入\n"
+" seek=å—æ•°ç›® 先略过以 obs 为å•ä½çš„指定<å—æ•°ç›®>的输出数æ®\n"
+" skip=å—æ•°ç›® 先略过以 ibs 为å•ä½çš„指定<å—æ•°ç›®>的输入数æ®\n"
+" status=noxfer ç¦æ­¢ä¼ é€ç»Ÿè®¡\n"
+
+#: src/dd.c:428
+#, fuzzy
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"<å—æ•°ç›®>å’Œ<字节>å¯ä»¥åŠ ä¸Šä»¥ä¸‹çš„å•ä½ï¼š\n"
+"xM=M,c=1,w=2,b=512,kB=1000,K=1024,MB=1000000,M=1048576,\n"
+"GB=1000000000,G=1073741824,还有 Tã€Pã€Eã€Zã€Y 如此类推。\n"
+"æ¯ä¸ª<关键字>å¯ä»¥æ˜¯ï¼š\n"
+
+#: src/dd.c:437
+#, fuzzy
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii ç”± EBCDIC 转æ¢è‡³ ASCII\n"
+" ebcdic ç”± ASCII 转æ¢è‡³ EBCDIC\n"
+" ibm ç”± ASCII 转æ¢è‡³ alternated EBCDIC\n"
+" block 将以 newline 作为结æŸå­—符的å—çš„ newline æ¢æˆç©ºæ ¼ï¼Œç›´è‡³ç©ºæ ¼\n"
+" 填满 cbs 表示的大å°\n"
+" unblock 会将 cbs 大å°çš„å—中所有结æŸçš„空格删除,并转æ¢ä¸ºä¸€ä¸ª newline å­—"
+"符\n"
+" lcase 将大写字符转æ¢ä¸ºå°å†™\n"
+
+#: src/dd.c:445
+#, fuzzy
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+" notrunc ä¸æˆªæ–­è¾“出文件\n"
+" ucase å°†å°å†™å­—符转æ¢ä¸ºå¤§å†™\n"
+" swab 交æ¢æ¯ä¸€å¯¹è¾“入数æ®å­—节\n"
+" noerror 读å–æ•°æ®å‘生错误åŽä»ç„¶ç»§ç»­\n"
+" sync å°†æ¯ä¸ªè¾“入数æ®å—以 NUL 字符填满至 ibs 的大å°ï¼›å½“é…åˆ block\n"
+" 或 unblock 时,会以空格代替 NUL 字符填充\n"
+
+#: src/dd.c:452
+#, fuzzy
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+" notrunc ä¸æˆªæ–­è¾“出文件\n"
+" ucase å°†å°å†™å­—符转æ¢ä¸ºå¤§å†™\n"
+" swab 交æ¢æ¯ä¸€å¯¹è¾“入数æ®å­—节\n"
+" noerror 读å–æ•°æ®å‘生错误åŽä»ç„¶ç»§ç»­\n"
+" sync å°†æ¯ä¸ªè¾“入数æ®å—以 NUL 字符填满至 ibs 的大å°ï¼›å½“é…åˆ block\n"
+" 或 unblock 时,会以空格代替 NUL 字符填充\n"
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "安装目录时ä¸èƒ½ç”¨ strip 选项"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "%<PRIuMAX> 个被截断了的å—\n"
+
+#: src/dd.c:565
+#, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] ""
+
+#: src/dd.c:583
+msgid "Infinity B"
+msgstr "æ— ç©· B"
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, c-format
+msgid ", %g s, %s/s\n"
+msgstr ",%g 秒,%s/秒\n"
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "正在关闭输入文件 %s"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "正在关闭输出文件 %s"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "正在写入 %s"
+
+#: src/dd.c:886
+#, c-format
+msgid "unrecognized operand %s"
+msgstr "无法识别的æ“作数 %s"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "转æ¢æ— æ•ˆï¼š%s"
+
+#: src/dd.c:900
+#, c-format
+msgid "invalid input flag: %s"
+msgstr "无效的输入标志:%s"
+
+#: src/dd.c:903
+#, c-format
+msgid "invalid output flag: %s"
+msgstr "无效的输出标志:%s"
+
+#: src/dd.c:906
+#, fuzzy, c-format
+msgid "invalid status flag: %s"
+msgstr "æ—¥æœŸæ ¼å¼ %s 无效"
+
+#: src/dd.c:942
+#, fuzzy, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "无法识别的选项 %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "无效的å·ç  %s"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr ""
+
+#: src/dd.c:973
+#, fuzzy, c-format
+msgid "cannot combine block and unblock"
+msgstr "ä¸å¯åŒæ—¶çœç•¥ç”¨æˆ·å’Œæ‰€å±žç»„"
+
+#: src/dd.c:975
+#, fuzzy, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "无法比较文件å %s å’Œ %s"
+
+#: src/dd.c:977
+#, fuzzy, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "无法决定 %s æ‰€åœ¨çš„è®¾å¤‡åŠ inode"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"警告:暂时é¿å…有关文件 (%s) çš„ lseek 核心错误,文件的 mt_type=0x%0lx --\n"
+" 有关 mt_type 类型的列表请å‚考 <sys/mtio.h>"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, c-format
+msgid "%s: cannot seek"
+msgstr "%s:无法æœç´¢"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "警告:指定æ¥æºæ–‡ä»¶%s多于一次"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr ""
+
+#: src/dd.c:1376
+#, fuzzy, c-format
+msgid "setting flags for %s"
+msgstr "设置 %s 的时间"
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr ""
+
+#: src/dd.c:1623
+#, fuzzy, c-format
+msgid "fsync failed for %s"
+msgstr "无法ä¿ç•™%s的时间"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "打开 %s"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, fuzzy, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "略过输出文件 %2$s çš„æœ€åˆ %1$s 个字节"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "文件系统 类型"
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "文件系统 "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " Inode (I)已用 (I)å¯ç”¨ (I)已用%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " å®¹é‡ å·²ç”¨ å¯ç”¨ 已用%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " å®¹é‡ å·²ç”¨ å¯ç”¨ 已用%%"
+
+#: src/df.c:165
+#, fuzzy, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %4d-å— å·²ç”¨ å¯ç”¨ 容é‡"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " %4s-å— å·²ç”¨ å¯ç”¨ 已用%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " 挂载点\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "无法获得当å‰ç›®å½•"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "无法进入目录 %s"
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "无法 stat 当å‰ç›®å½•(现在是 %s)"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"显示æ¯ä¸ª<文件>所在的文件系统的信æ¯ï¼Œé»˜è®¤æ˜¯æ˜¾ç¤ºæ‰€æœ‰æ–‡ä»¶ç³»ç»Ÿã€‚\n"
+"\n"
+
+#: src/df.c:749
+#, fuzzy
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all 包括大å°ä¸º 0 个å—的文件系统\n"
+" -B, --block-size=å¤§å° å—以指定<大å°>的字节为å•ä½\n"
+" -h, --human-readable 以容易ç†è§£çš„æ ¼å¼å°å‡ºæ–‡ä»¶ç³»ç»Ÿå¤§å° (例如 1K 234M 2G)\n"
+" -H, --si 类似 -hï¼Œä½†å– 1000 的次方而ä¸æ˜¯ 1024\n"
+
+#: src/df.c:755
+#, fuzzy
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes 显示 inode ä¿¡æ¯è€Œéžå—使用é‡\n"
+" -k å³ --block-size=1K\n"
+" -l, --local åªæ˜¾ç¤ºæœ¬æœºçš„文件系统\n"
+" --no-sync å–得使用é‡æ•°æ®å‰ä¸è¿›è¡Œ sync 动作 (默认)\n"
+
+#: src/df.c:761
+#, fuzzy
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability 使用 POSIX 输出格å¼\n"
+" --sync å–得使用é‡æ•°æ®å‰å…ˆè¿›è¡Œ sync 动作\n"
+" -t, --type=类型 åªå°å‡ºæŒ‡å®š<类型>的文件系统信æ¯\n"
+" -T, --print-type å°å‡ºæ–‡ä»¶ç³»ç»Ÿç±»åž‹\n"
+" -x, --exclude-type=类型 åªå°å‡ºä¸æ˜¯æŒ‡å®š<类型>的文件系统信æ¯\n"
+" -v (此选项ä¸ä½œå¤„ç†)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"[大å°]å¯ä»¥æ˜¯ä»¥ä¸‹çš„å•ä½(å•ä½å‰å¯åŠ ä¸Šæ•´æ•°):\n"
+"kB 1000,K 1024,MB 1000000,M 1048576,还有 Gã€Tã€Pã€Eã€Zã€Y。\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr "--kilobytes 选项已ç»è¢«å¼ƒç”¨ï¼Œè¯·ä½¿ç”¨ -k"
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "ä¸èƒ½åŒæ—¶é€‰æ‹©å’ŒæŽ’除文件系统类型 %s"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "警告:"
+
+#: src/df.c:943
+#, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%s无法读å–已挂上的文件系统的目录"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr "未处ç†æ–‡ä»¶ç³»ç»Ÿ"
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "用法:%s [选项]... [文件]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"输出用æ¥è®¾å®š LS_COLORS 环境å˜é‡çš„命令。\n"
+"\n"
+"指定输出的规格:\n"
+" -b, --sh, --bourne-shell 输出设定 LS_COLORS 的 Bourne shell 命令\n"
+" -c, --csh, --c-shell 输出设定 LS_COLORS 的 C shell 命令\n"
+" -p, --print-database 输出默认的色彩设置\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"如果指定<文件>,则读å–该文件的数æ®æ¥å†³å®šæ–‡ä»¶ç±»åž‹åŠæ‰©å±•å相应的颜色。\n"
+"å¦åˆ™ï¼Œä¼šä½¿ç”¨ä¸€ä¸ªé»˜è®¤çš„æ•°æ®åº“。如è¦äº†è§£æ­¤æ–‡ä»¶æ ¼å¼çš„细节,请执行\n"
+"“dircolors --print-databaseâ€ã€‚\n"
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s:%lu:此行无效;缺少了第二æ æ•°æ®"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu:无法识别的关键字 %s"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<内部数æ®>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"显示 dircolors 内部数æ®åº“的选项和选择 shell 语法的选项\n"
+"是互相抵触的"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr "文件æ“作数无法与 --print-database (-p) 组åˆä½¿ç”¨ã€‚"
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "没有设定 SHELL 环境å˜é‡ï¼Œä¹Ÿæ²¡æœ‰æŒ‡å®š shell 类型的选项"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s å称\n"
+" 或:%s 选项\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#: src/du.c:279 src/wc.c:108
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"用法:%s [选项]... [文件]...\n"
+" 或:%s [选项]... --files0-from=F\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"总结æ¯ä¸ª<文件>çš„ç£ç›˜ç”¨é‡ï¼Œç›®å½•åˆ™å–总用é‡ã€‚\n"
+"\n"
+
+#: src/du.c:290
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+
+#: src/du.c:297
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+
+#: src/du.c:303
+#, fuzzy
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+" -h, --human-readable 以容易ç†è§£çš„æ ¼å¼å°å‡ºæ–‡ä»¶å¤§å° (例如 1K 234M 2G)\n"
+" -H, --si 类似 -hï¼Œä½†å– 1000 的次方而ä¸æ˜¯ 1024\n"
+" -k å³ --block-size=1K\n"
+" -l, --count-links 连硬链接的大å°ä¹Ÿè®¡ç®—在内\n"
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+#, fuzzy
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference 找出任何符å·é“¾æŽ¥æŒ‡ç¤ºçš„真正目的地\n"
+" -S, --separate-dirs ä¸åŒ…括å­ç›®å½•çš„å ç”¨é‡\n"
+" -s, --summarize åªåˆ†åˆ«è®¡ç®—命令列中æ¯ä¸ªå‚数所å çš„总用é‡\n"
+
+#: src/du.c:323
+#, fuzzy
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system 略过属于其他文件系统的目录\n"
+" -X 文件, --exclude-from=文件 ç”±<文件>读å–应排除的文件的样å¼\n"
+" --exclude=PAT 排除符åˆæŒ‡å®š<æ ·å¼>的文件\n"
+" --max-depth=N åªæ˜¾ç¤ºå‚数指定的目录 N 层或以内的å­ç›®å½•çš„总用é‡\n"
+" (若使用 --all 选项,也会显示文件的å ç”¨é‡)ï¼›\n"
+" --max-depth=0 的效果等于 --summarize\n"
+
+#: src/du.c:332
+#, fuzzy
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+" -S æ ¹æ®æ–‡ä»¶å¤§å°æŽ’åº\n"
+" --sort=WORD 以下是å¯é€‰ç”¨çš„ WORD 和它们代表的相应选项:\n"
+" extension -X status -c\n"
+" none -U time -t\n"
+" size -S atime -u\n"
+" time -t access -u\n"
+" version -v use -u\n"
+" --time=WORD å’Œ -l åŒæ—¶ä½¿ç”¨æ—¶æ˜¾ç¤º WORD 所代表的时间而éžä¿®æ”¹"
+"æ—¶\n"
+" 间:atimeã€accessã€useã€ctime 或 status;加上\n"
+" --sort=time 选项时会以指定时间作为排åºå…³é”®å­—\n"
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "总计"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "目录最大深度 %s 无效"
+
+#: src/du.c:789
+#, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr "--megabytes 选项已被弃用;请æ¢ç”¨ -m"
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "ä¸èƒ½åªæ˜¾ç¤ºæ€»ç”¨é‡ï¼ŒåŒæ—¶åˆæ˜¾ç¤ºæ¯ä¸ªé¡¹ç›®"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "警告:显示总用é‡ç­‰äºŽä½¿ç”¨ --max-depth=0"
+
+#: src/du.c:884
+#, fuzzy, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "警告:显示总用é‡çš„选项和 --max-depth=%d 互相抵触"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr ""
+
+#: src/du.c:960 src/wc.c:662
+#, c-format
+msgid "cannot read file names from %s"
+msgstr "无法从 %s 读å–文件å"
+
+#: src/du.c:1000 src/du.c:1003
+msgid "invalid zero-length file name"
+msgstr "无效零长度文件å"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "用法:%s [选项]... [字符串]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+"将[字符串]回显到标准输出。\n"
+"\n"
+" -n ä¸è¾“出为å²çš„æ¢è¡Œ\n"
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "用法:%s [选项]... [-] [å称=值]... [命令 [å‚æ•°]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"å•çº¯çš„ - æ„å‘³ç€ -i。如果没有命令,则打å°ç»“果环境。\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr ""
+
+#: src/expand.c:180 src/unexpand.c:199
+#, fuzzy, c-format
+msgid "tab stop is too large %s"
+msgstr "%s:文件过大"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, fuzzy, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "æƒé™æ¨¡å¼å­—符串 %2$s 中出现无效的字符 %1$s"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr ""
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr ""
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, c-format
+msgid "input line is too long"
+msgstr "输入行太长"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s 表达å¼\n"
+" 或:%s 选项\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "语法错误"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "转æ¢æ— æ•ˆï¼š%s"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "éžæ•°å€¼å‚æ•°"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "被零除"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s [数值]...\n"
+" 或:%s 选项\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+
+#: src/factor.c:85
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s 太大"
+
+#: src/factor.c:158
+#, c-format
+msgid "%s is not a valid positive integer"
+msgstr "%s ä¸æ˜¯æœ‰æ•ˆçš„正整数"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "用法:%s [-DIGITS] [选项]... [文件]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr "无效的宽度:%s"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "无效的å·ç  %s"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "读入 %s 出错"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "写入 %s 出错"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr ""
+
+#: src/head.c:230 src/head.c:1046
+#, fuzzy, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s:覆盖次数无效"
+
+#: src/head.c:443
+#, fuzzy, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "无法创建 fifo 文件%s"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, fuzzy, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "无法 lseek%s"
+
+#: src/head.c:793
+#, fuzzy, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "无法å–å¾— %s 的时间标记"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr ""
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "行数"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "字节数"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "无效的行数"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "无效的字节数"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "%s:无效的选项 -- %c\n"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "无法设定 %s 的时间标记"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "无法确定主机å"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "用法:%s [选项]... [用户å]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+
+#: src/id.c:152
+#, fuzzy, c-format
+msgid "cannot print only user and only group"
+msgstr "ä¸å¯åŒæ—¶çœç•¥ç”¨æˆ·å’Œæ‰€å±žç»„"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr ""
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s:无此用户"
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "无法更改%s的所有者åŠ/或组"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "无法更改%s的所有者åŠ/或组"
+
+#: src/id.c:271
+#, fuzzy, c-format
+msgid "cannot get supplemental group list"
+msgstr "无法改å˜æ‰€å±žç»„至没有å称的组"
+
+#: src/id.c:375
+msgid " groups="
+msgstr ""
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr "安装目录时ä¸èƒ½ç”¨ strip 选项"
+
+#: src/install.c:321
+#, fuzzy, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "安装目录时ä¸èƒ½ç”¨ strip 选项"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "æ— æ•ˆæ¨¡å¼ %s"
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "无法更改 %s 的所有者"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "无法设定 %s 的时间标记"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "fork 系统进程出现错误"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "无法执行 strip 命令"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "正在写入 %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "无效的用户 %s"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "正在创建目录%s"
+
+#: src/install.c:651
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"用法:%s [选项]... [-T] æ¥æº 目的地\n"
+" 或:%s [选项]... æ¥æº... 目录\n"
+" 或:%s [选项]... -t 目录 æ¥æº...\n"
+" 或:%s [选项]... -d 目录...\n"
+
+#: src/install.c:658
+#, fuzzy
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"在最åˆä¸¤ç§æ ¼å¼ä¸­ï¼Œä¼šå°†<æº>å¤åˆ¶è‡³<目的地>或将多个<æº>文件å¤åˆ¶è‡³å·²å­˜åœ¨çš„\n"
+"<目录>,åŒæ—¶è®¾å®šæƒé™æ¨¡å¼åŠæ‰€æœ‰è€…/所属组。在第三ç§æ ¼å¼ä¸­ï¼Œä¼šåˆ›å»ºæ‰€æœ‰\n"
+"指定的目录åŠå®ƒä»¬çš„主目录。\n"
+"\n"
+
+#: src/install.c:667
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup[=CONTROL] 为æ¯ä¸ªå·²å­˜åœ¨çš„目的地文件进行备份\n"
+" -b 类似 --backup,但ä¸æŽ¥å—任何å‚æ•°\n"
+" -c (此选项ä¸ä½œå¤„ç†)\n"
+" -d, --directory 所有å‚数都作为目录处ç†ï¼›è€Œä¸”会创建指定目录的所有主目"
+"录\n"
+
+#: src/install.c:674
+#, fuzzy
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D 创建<目的地>å‰çš„所有主目录,然åŽå°†<æº>å¤åˆ¶è‡³\n"
+" <目的地>;在第一ç§ä½¿ç”¨æ ¼å¼ä¸­æœ‰ç”¨\n"
+" -g, --group=组 自行设定所属组,而ä¸æ˜¯è¿›ç¨‹ç›®å‰çš„所属组\n"
+" -m, --mode=æ¨¡å¼ è‡ªè¡Œè®¾å®šæƒé™æ¨¡å¼ (åƒ chmod),而ä¸æ˜¯ rwxr-xr-x\n"
+" -o, --owner=所有者 自行设定所有者 (åªé€‚用于超级用户)\n"
+
+#: src/install.c:681
+#, fuzzy
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps 以<æº>文件的访问/修改时间作为相应的目的\n"
+" 地文件的时间属性\n"
+" -s, --strip 用 strip 命令删除 symbol table,åªé€‚用于第一åŠç¬¬äºŒç§\n"
+" 使用格å¼\n"
+" -S, --suffix=åŽç¼€ 自行指定备份文件的<åŽç¼€>\n"
+" -v, --verbose 处ç†æ¯ä¸ªæ–‡ä»¶/目录时å°å‡ºå称\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"备份文件的åŽç¼€ä¸ºâ€œ~â€ï¼Œé™¤éžä»¥ --suffix 选项或是 SIMPLE_BACKUP_SUFFIX\n"
+"环境å˜é‡æŒ‡å®šã€‚版本控制的方å¼å¯é€è¿‡ --backup 选项或 VERSION_CONTROL 环境\n"
+"å˜é‡æ¥é€‰æ‹©ã€‚以下是å¯ç”¨çš„å˜é‡å€¼ï¼š\n"
+"\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+
+#: src/join.c:147
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+
+#: src/join.c:160
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+
+#: src/join.c:617 src/join.c:812
+#, fuzzy, c-format
+msgid "invalid field number: %s"
+msgstr "无效的å·ç  %s"
+
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "无效的 tab 字符定ä½å€¼ï¼š%s"
+
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "无效的å·ç  %s"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr ""
+
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "æƒé™æ¨¡å¼å­—符串 %2$s 中出现无效的字符 %1$s"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr ""
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr ""
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+
+#: src/kill.c:161
+#, fuzzy, c-format
+msgid "%s: invalid signal"
+msgstr "%s:文件类型无效"
+
+#: src/kill.c:266
+#, fuzzy, c-format
+msgid "%s: invalid process id"
+msgstr "%s:文件大å°æ— æ•ˆ"
+
+#: src/kill.c:320
+#, fuzzy, c-format
+msgid "invalid option -- %c"
+msgstr "%s:无效的选项 -- %c\n"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr ""
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr ""
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr ""
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr ""
+
+#: src/link.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s 文件1 文件2\n"
+" 或:%s 选项\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "无法创建指å‘%2$s的链接%1$s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr "%s:警告:将硬链接指å‘符å·é“¾æŽ¥æ˜¯ä¸é€šç”¨çš„功能"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: ä¸å…许将硬链接指å‘目录"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s:无法覆盖目录"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s:是å¦ç½®æ¢%s? "
+
+#: src/ln.c:295
+#, c-format
+msgid "creating symbolic link %s"
+msgstr "创建符å·é“¾æŽ¥ %s"
+
+#: src/ln.c:296
+#, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "创建符å·é“¾æŽ¥ %s -> %s"
+
+#: src/ln.c:298
+#, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "创建硬链接 %.0s%s"
+
+#: src/ln.c:301
+#, c-format
+msgid "creating hard link %s"
+msgstr "创建硬链接 %s"
+
+#: src/ln.c:302
+#, c-format
+msgid "creating hard link %s => %s"
+msgstr "创建硬链接 %s => %s"
+
+#: src/ln.c:324
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"用法:%s [选项]... [-T] 目标 链接å称 (第一ç§æ ¼å¼)\n"
+" 或:%s [选项]... 目标 (第二ç§æ ¼å¼)\n"
+" 或:%s [选项]... 目标... 目录 (第三ç§æ ¼å¼)\n"
+" 或:%s [选项]... -t 目录 目标... (第四ç§æ ¼å¼)\n"
+
+#: src/ln.c:331
+#, fuzzy
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"创建指å‘指定<目标>的链接,并å¯é€‰æ‹©æ€§æŒ‡å®š<链接å>。\n"
+"如果没有指定<链接å>,会在目å‰çš„目录中创建一个和<目标>å称一样的链接。\n"
+"当使用第二ç§æ ¼å¼è€Œ<目标>多于一个时,最åŽçš„å‚数必须是目录;这样会在指定的\n"
+"<目录>中分别创建指å‘æ¯ä¸ª<目标>的链接。默认会创建硬链接,若\n"
+"使用 --symbolic 选项则创建符å·é“¾æŽ¥ã€‚当创建硬链接时,æ¯ä¸ª<目标>都必须存\n"
+"在。\n"
+"\n"
+
+#: src/ln.c:342
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup[=CONTROL] 为æ¯ä¸ªå·²å­˜åœ¨çš„目的地文件创建备份文件\n"
+" -b 类似 --backup,但ä¸æŽ¥å—任何å‚æ•°\n"
+" -d, -F, --directory 创建指å‘目录的硬链接 (åªé€‚用于超级用户)\n"
+" -f, --force 强迫删除任何已存在的目的地文件\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference 如果目的地是一个链接至æŸç›®å½•çš„符å·é“¾æŽ¥ï¼Œä¼šå°†\n"
+" 该符å·é“¾æŽ¥å½“作普通文件处ç†ï¼Œå…ˆå°†è¯¥å·²å­˜åœ¨çš„\n"
+" 链接备份或删除\n"
+" -i, --interactive 确认是å¦åˆ é™¤ç›®çš„地文件\n"
+" -s, --symbolic 创建符å·é“¾æŽ¥è€Œä¸æ˜¯ç¡¬é“¾æŽ¥\n"
+
+#: src/ln.c:356
+#, fuzzy
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" -S, --suffix=åŽç¼€ 自行指定备份文件的<åŽç¼€>\n"
+" -t, --target-directory=目录 在指定<目录>中创建链接\n"
+" -T, --no-target-directory 将链接å称当作普通文件\n"
+" -v, --verbose 链接å‰å…ˆåˆ—出æ¯ä¸ªæ–‡ä»¶çš„å称\n"
+
+#: src/ln.c:484
+#, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "无法组åˆä½¿ç”¨ --target-directory å’Œ --no-target-directory"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "用法:%s [选项]\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+"打å°å½“å‰ç”¨æˆ·çš„å称。\n"
+"\n"
+
+#: src/logname.c:89
+#, c-format
+msgid "no login name"
+msgstr "无登录å"
+
+#: src/ls.c:684
+msgid "%b %e %Y"
+msgstr "%Y-%m-%d"
+
+#: src/ls.c:692
+msgid "%b %e %H:%M"
+msgstr "%m-%d %H:%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "忽略无效的环境å˜é‡ QUOTING_STYLE çš„å˜é‡å€¼ï¼š%s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "忽略无效的环境å˜é‡ COLUMNS 的宽度数值:%s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr "忽略无效的环境å˜é‡ TABSIZE çš„ tab 字符定ä½å€¼ï¼š%s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, c-format
+msgid "invalid line width: %s"
+msgstr "无效的行宽:%s"
+
+#: src/ls.c:1704
+#, c-format
+msgid "invalid tab size: %s"
+msgstr "无效的制表ä½å¤§å°ï¼š%s"
+
+#: src/ls.c:1885
+#, c-format
+msgid "invalid time style format %s"
+msgstr "æ— æ•ˆçš„æ—¥æœŸæ—¶é—´æ ¼å¼ %s"
+
+#: src/ls.c:2229
+#, c-format
+msgid "unrecognized prefix: %s"
+msgstr "无法识别的å‰ç¼€ï¼š%s"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "LS_COLORS 环境å˜é‡ä¸­å­˜åœ¨æ— æ³•åˆ†æžçš„值"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, c-format
+msgid "cannot open directory %s"
+msgstr "无法打开目录 %s"
+
+#: src/ls.c:2344
+#, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "无法决定 %s æ‰€åœ¨çš„è®¾å¤‡åŠ inode"
+
+#: src/ls.c:2353
+#, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "%s:ä¸ä¼šå†åˆ—出已ç»åˆ—出的目录"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, c-format
+msgid "reading directory %s"
+msgstr "读å–目录 %s"
+
+#: src/ls.c:2410
+#, c-format
+msgid "closing directory %s"
+msgstr "关闭目录 %s"
+
+#: src/ls.c:2918
+#, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "无法比较文件å %s å’Œ %s"
+
+#: src/ls.c:4277
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"列出<文件>çš„ä¿¡æ¯ (默认为目å‰çš„目录)。\n"
+"如果ä¸æŒ‡å®š -cftuvSUX 或 --sort 任何一个选项,则根æ®å­—æ¯å¤§å°æŽ’åºã€‚\n"
+"\n"
+
+#: src/ls.c:4285
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all ä¸éšè—任何以 . 字符开始的项目\n"
+" -A, --almost-all 列出除了 . åŠ .. 以外的任何项目\n"
+" --author å’Œ -l åŒæ—¶ä½¿ç”¨æ—¶åˆ—出æ¯ä¸ªæ–‡ä»¶çš„作者\n"
+" -b, --escape 以八进制溢出åºåˆ—表示ä¸å¯æ‰“å°çš„字符\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=å¤§å° å—以指定<大å°>的字节为å•ä½\n"
+" -B, --ignore-backups ä¸åˆ—出任何以 ~ 字符结æŸçš„项目\n"
+" -c é…åˆ -ltï¼šæ ¹æ® ctime 排åºåŠæ˜¾ç¤º ctime (文件\n"
+" 状æ€æœ€åŽæ›´æ”¹çš„时间)\n"
+" é…åˆ -l:显示 ctime 但根æ®å称排åº\n"
+" å¦åˆ™ï¼šæ ¹æ® ctime 排åº\n"
+
+#: src/ls.c:4299
+#, fuzzy
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C æ¯æ ç”±ä¸Šè‡³ä¸‹åˆ—出项目\n"
+" --color[=WHEN] 控制是å¦ä½¿ç”¨è‰²å½©åˆ†è¾¨æ–‡ä»¶ã€‚WHEN å¯ä»¥æ˜¯\n"
+" “neverâ€ã€â€œalwaysâ€æˆ–“autoâ€å…¶ä¸­ä¹‹ä¸€\n"
+" -d, --directory 当é‡åˆ°ç›®å½•æ—¶åˆ—出目录本身而éžç›®å½•å†…的文件\n"
+" -D, --dired äº§ç”Ÿé€‚åˆ Emacs çš„ dired 模å¼ä½¿ç”¨çš„结果\n"
+
+#: src/ls.c:4307
+#, fuzzy
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f ä¸è¿›è¡ŒæŽ’åºï¼Œ-aU 选项生效,-lst 选项失效\n"
+" -F, --classify åŠ ä¸Šæ–‡ä»¶ç±»åž‹çš„æŒ‡ç¤ºç¬¦å· (*/=@| 其中一个)\n"
+" --format=关键字 across -x,commas -m,horizontal -x,long -l,\n"
+" single-column -1,verbose -l,vertical -C\n"
+" --full-time å³ -l --time-style=full-iso\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+#, fuzzy
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all 包括大å°ä¸º 0 个å—的文件系统\n"
+" -B, --block-size=å¤§å° å—以指定<大å°>的字节为å•ä½\n"
+" -h, --human-readable 以容易ç†è§£çš„æ ¼å¼å°å‡ºæ–‡ä»¶ç³»ç»Ÿå¤§å° (例如 1K 234M 2G)\n"
+" -H, --si 类似 -hï¼Œä½†å– 1000 的次方而ä¸æ˜¯ 1024\n"
+
+#: src/ls.c:4328
+#, fuzzy
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+" -g 类似 -l,但ä¸åˆ—出所有者\n"
+" -G, --no-group ä¸åˆ—出任何有关组的信æ¯\n"
+" -h, --human-readable 以容易ç†è§£çš„æ ¼å¼å°å‡ºæ–‡ä»¶å¤§å° (例如 1K 234M 2G)\n"
+" --si 类似 -hï¼Œä½†å– 1000 的次方而ä¸æ˜¯ 1024\n"
+" -H, --dereference-command-line 使用命令列中的符å·é“¾æŽ¥æŒ‡ç¤ºçš„真正目的地\n"
+
+#: src/ls.c:4337
+#, fuzzy
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=æ–¹å¼ æŒ‡å®šåœ¨æ¯ä¸ªé¡¹ç›®å称åŽåŠ ä¸ŠæŒ‡ç¤ºç¬¦å·<æ–¹å¼>:\n"
+" none (默认),classify (-F),file-type (-p)\n"
+" -i, --inode å°å‡ºæ¯ä¸ªæ–‡ä»¶çš„ inode å·\n"
+" -I, --ignore=æ ·å¼ ä¸å°å‡ºä»»ä½•ç¬¦åˆ shell 万用字符<æ ·å¼>的项目\n"
+" -k å³ --block-size=1K\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l 使用较长格å¼åˆ—出信æ¯\n"
+" -L, --dereference 当显示符å·é“¾æŽ¥çš„文件信æ¯æ—¶ï¼Œæ˜¾ç¤ºç¬¦å·é“¾æŽ¥æ‰€æŒ‡ç¤º\n"
+" 的对象而并éžç¬¦å·é“¾æŽ¥æœ¬èº«çš„ä¿¡æ¯\n"
+" -m 所有项目以逗å·åˆ†éš”,并填满整行行宽\n"
+
+#: src/ls.c:4352
+#, fuzzy
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid 类似 -l,但列出 UID åŠ GID å·\n"
+" -N, --literal å°å‡ºæœªç»å¤„ç†çš„项目å称 (例如ä¸ç‰¹åˆ«å¤„ç†æŽ§åˆ¶å­—"
+"符)\n"
+" -o 类似 -l,但ä¸åˆ—出有关组的信æ¯\n"
+" -p, --file-type åŠ ä¸Šæ–‡ä»¶ç±»åž‹çš„æŒ‡ç¤ºç¬¦å· (/=@| 其中一个)\n"
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars 以 ? 字符代替无法打å°çš„字符\n"
+" --show-control-chars 直接显示无法打å°çš„字符 (这是默认方å¼ï¼Œé™¤éžè°ƒç”¨\n"
+" 的程åºå称是“lsâ€è€Œä¸”是在终端机画é¢è¾“出结果)\n"
+" -Q, --quote-name 将项目å称括上åŒå¼•å·\n"
+" --quoting-style=æ–¹å¼ ä½¿ç”¨æŒ‡å®šçš„ quoting <æ–¹å¼>显示项目的å称:\n"
+" literalã€localeã€shellã€shell-alwaysã€cã€"
+"escape\n"
+
+#: src/ls.c:4368
+#, fuzzy
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse 逆åºæŽ’åº\n"
+" -R, --recursive 递归列出所有å­ç›®å½•\n"
+" -s, --size å’Œ -l åŒæ—¶ä½¿ç”¨æ—¶ä»¥å—为å•ä½åˆ—出æ¯ä¸ªæ–‡ä»¶çš„大å°\n"
+
+#: src/ls.c:4373
+#, fuzzy
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S æ ¹æ®æ–‡ä»¶å¤§å°æŽ’åº\n"
+" --sort=WORD 以下是å¯é€‰ç”¨çš„ WORD 和它们代表的相应选项:\n"
+" extension -X status -c\n"
+" none -U time -t\n"
+" size -S atime -u\n"
+" time -t access -u\n"
+" version -v use -u\n"
+" --time=WORD å’Œ -l åŒæ—¶ä½¿ç”¨æ—¶æ˜¾ç¤º WORD 所代表的时间而éžä¿®æ”¹"
+"æ—¶\n"
+" 间:atimeã€accessã€useã€ctime 或 status;加上\n"
+" --sort=time 选项时会以指定时间作为排åºå…³é”®å­—\n"
+
+#: src/ls.c:4382
+#, fuzzy
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=STYLE å’Œ -l åŒæ—¶ä½¿ç”¨æ—¶æ ¹æ® STYLE 代表的格å¼æ˜¾ç¤ºæ—¶"
+"间:\n"
+" full-isoã€isoã€localeã€posix-isoã€+FORMAT。\n"
+" FORMAT å³æ˜¯â€œdateâ€æ‰€ç”¨çš„时间格å¼ï¼›å¦‚æžœ FORMAT\n"
+" 是 FORMAT1<新行>FORMAT2,FORMAT1 适用于较旧\n"
+" 的文件而 FORMAT2 适用于较新的文件;如果 STYLE\n"
+" 以“posix-â€å¼€å¤´ï¼Œåˆ™ STYLE 仅在 POSIX 语系之外\n"
+" 生效。\n"
+" -t æ ¹æ®ä¿®æ”¹æ—¶é—´æŽ’åº\n"
+" -T, --tabsize=宽度 自行指定 tab çš„<宽度>ï¼Œè€Œéž 8 个字符\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u é…åˆ -lt:显示访问时间而且ä¾è®¿é—®æ—¶é—´æŽ’åº\n"
+" é…åˆ -l:显示访问时间但根æ®å称排åº\n"
+" å¦åˆ™ï¼šæ ¹æ®è®¿é—®æ—¶é—´æŽ’åº\n"
+" -U ä¸è¿›è¡ŒæŽ’åºï¼›ä¾æ–‡ä»¶ç³»ç»ŸåŽŸæœ‰çš„次åºåˆ—出项目\n"
+" -v æ ¹æ®ç‰ˆæœ¬è¿›è¡ŒæŽ’åº\n"
+
+#: src/ls.c:4402
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -w, --width=COLS 自行指定è¤å¹•å®½åº¦è€Œä¸ä½¿ç”¨ç›®å‰çš„数值\n"
+" -x é€è¡Œåˆ—出项目而ä¸æ˜¯é€æ åˆ—出\n"
+" -X æ ¹æ®æ‰©å±•å排åº\n"
+" -1 æ¯è¡Œåªåˆ—出一个文件\n"
+
+#: src/ls.c:4414
+#, fuzzy
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"默认是ä¸ä¼šä½¿ç”¨è‰²å½©æ¥åŒºåˆ«æ–‡ä»¶çš„。此方å¼ç­‰äºŽä½¿ç”¨äº† --color=none 选项。若使用\n"
+"--color 选项但ä¸æŒ‡å®š WHEN å‚数等于 --color=always。当使用 --color=auto 时,\n"
+"åªå½“è¾“å‡ºè‡³ç»ˆç«¯æœºç”»é¢ (tty) æ—¶æ‰ä¼šæ˜¾ç¤ºè‰²å½©ã€‚\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#: src/md5sum.c:150
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+"\n"
+" -B, --binary 使用二进制写入到控制å°è®¾å¤‡ã€‚\n"
+"\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+
+#: src/md5sum.c:459
+#, c-format
+msgid "%s: too many checksum lines"
+msgstr ""
+
+#: src/md5sum.c:481
+#, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr ""
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr ""
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr ""
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr ""
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, fuzzy, c-format
+msgid "%s: read error"
+msgstr "%s:å称已更改为 %s"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr ""
+
+#: src/md5sum.c:562
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/md5sum.c:574
+#, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] ""
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr ""
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr ""
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr ""
+
+#: src/mkdir.c:59
+#, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "用法:%s [选项] 目录...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"若目录ä¸æ˜¯å·²ç»å­˜åœ¨åˆ™åˆ›å»ºç›®å½•ã€‚\n"
+"\n"
+
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+" -m, --mode=æ¨¡å¼ è®¾å®šæƒé™<模å¼> (类似 chmod),而ä¸æ˜¯ rwxrwxrwx å‡ umask\n"
+" -p, --parents 需è¦æ—¶åˆ›å»ºä¸Šå±‚目录,如目录早已存在则ä¸å½“作错误\n"
+" -v, --verbose æ¯æ¬¡åˆ›å»ºæ–°ç›®å½•éƒ½æ˜¾ç¤ºä¿¡æ¯\n"
+
+#: src/mkdir.c:168
+#, c-format
+msgid "created directory %s"
+msgstr "已创建目录 %s"
+
+#: src/mkfifo.c:54
+#, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "用法:%s [选项] å称...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"以指定的<å称>创建 named pipe (FIFO)。\n"
+"\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr " -m, --mode=æ¨¡å¼ æŒ‡å®šæƒé™æ¨¡å¼ (类似 chmod),而ä¸æ˜¯ a=rw å‡ umask\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, c-format
+msgid "invalid mode"
+msgstr "æƒé™æ¨¡å¼æ— æ•ˆ"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "用法:%s [选项]... å称 类型 [MAJOR MINOR]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"创建指定<类型>å’Œ<å称>的特殊文件。\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+
+#: src/mknod.c:76
+#, fuzzy
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+"当<类型>为 p æ—¶ä¸å¯æŒ‡å®š MAJOR åŠ MINOR,å¦åˆ™å®ƒä»¬æ˜¯å¿…须指定的。\n"
+"<类型>å¯ä»¥æ˜¯ï¼š\n"
+"\n"
+" b 创建(有缓冲的)区å—特殊文件\n"
+" c, u 创建(没有缓冲的)字符特殊文件\n"
+" p 创建 FIFO 特殊文件\n"
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr "创建区å—特殊文件时,必需指定 major å’Œ minor 设备å·"
+
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "无效的 minor è®¾å¤‡å· %s"
+
+#: src/mknod.c:167
+#, c-format
+msgid "block special files not supported"
+msgstr "本系统ä¸æ”¯æŒåŒºå—特殊文件"
+
+#: src/mknod.c:176
+#, c-format
+msgid "character special files not supported"
+msgstr "本系统ä¸æ”¯æŒå­—符特殊文件"
+
+#: src/mknod.c:192
+#, c-format
+msgid "invalid major device number %s"
+msgstr "无效的 major è®¾å¤‡å· %s"
+
+#: src/mknod.c:197
+#, c-format
+msgid "invalid minor device number %s"
+msgstr "无效的 minor è®¾å¤‡å· %s"
+
+#: src/mknod.c:202
+#, c-format
+msgid "invalid device %s %s"
+msgstr "设备文件 %s %s 无效"
+
+#: src/mknod.c:216
+#, fuzzy, c-format
+msgid "invalid device type %s"
+msgstr "设备文件 %s %s 无效"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"å°†<æº>å称é‡å‘½å为<目的地>å称,或将<æº>文件移动至<目录>。\n"
+"\n"
+
+#: src/mv.c:297
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup[=CONTROL] 为æ¯ä¸ªå·²å­˜åœ¨çš„目的地文件创建备份文件\n"
+" -b 类似 --backup,但ä¸æŽ¥å—任何å‚æ•°\n"
+" -f, --force 覆盖文件å‰ä¸ä¼šè¿›è¡Œç¡®è®¤ï¼Œç­‰äºŽ --reply=yes\n"
+" -i, --interactive 覆盖文件å‰å¿…须先确认,等于 --reply=query\n"
+
+#: src/mv.c:303
+#, fuzzy
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --reply={yes,no,query} 指定如何处ç†å·²å­˜åœ¨çš„目的地文件\n"
+" --strip-trailing-slashes 删除å‚数中所有<æº>文件/目录末端的斜æ \n"
+" -S, --suffix=åŽç¼€ 自行指定备份文件的<åŽç¼€>\n"
+
+#: src/mv.c:308
+#, fuzzy
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --target-directory=目录 将所有å‚数指定的<æº>文件/目录移动至<目录>\n"
+" -u, --update åªåœ¨<æº>文件比目的地文件新,或目的地文件\n"
+" ä¸å­˜åœ¨æ—¶æ‰ä¼šç§»åŠ¨\n"
+" -v, --verbose 详细显示进行的步骤\n"
+
+#: src/nice.c:76
+#, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "用法:%s [选项] [命令 [å‚æ•°]...]\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "%2$s çš„å‚æ•° %1$s 无效"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr ""
+
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "无法创建链接 %s"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "stat%s失败"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+
+#: src/nl.c:214
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+
+#: src/nl.c:281
+#, fuzzy, c-format
+msgid "line number overflow"
+msgstr "无效的å·ç  %s"
+
+#: src/nl.c:479
+#, fuzzy, c-format
+msgid "invalid header numbering style: %s"
+msgstr "无效的å·ç  %s"
+
+#: src/nl.c:487
+#, fuzzy, c-format
+msgid "invalid body numbering style: %s"
+msgstr "无效的å·ç  %s"
+
+#: src/nl.c:495
+#, fuzzy, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "无效的å·ç  %s"
+
+#: src/nl.c:504
+#, fuzzy, c-format
+msgid "invalid starting line number: %s"
+msgstr "无效的 major è®¾å¤‡å· %s"
+
+#: src/nl.c:513
+#, fuzzy, c-format
+msgid "invalid line number increment: %s"
+msgstr "无效的行宽数值:%s"
+
+#: src/nl.c:525
+#, fuzzy, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "%s:覆盖次数无效"
+
+#: src/nl.c:539
+#, fuzzy, c-format
+msgid "invalid line number field width: %s"
+msgstr "无效的行宽数值:%s"
+
+#: src/nl.c:558
+#, fuzzy, c-format
+msgid "invalid line numbering format: %s"
+msgstr "无效的行宽数值:%s"
+
+#: src/nohup.c:57
+#, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s 命令 [å‚æ•°]...\n"
+" 或:%s 选项\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "忽略全部å‚æ•°"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, fuzzy, c-format
+msgid "failed to open %s"
+msgstr "无法ä¿ç•™%s的时间"
+
+#: src/nohup.c:161
+#, fuzzy, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "正在更改 %s 的所属组"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr ""
+
+#: src/od.c:307
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"用法:%s [选项]... 组 文件...\n"
+" 或:%s [选项]... --reference=å‚考文件 文件...\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/od.c:320
+#, fuzzy
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr "长选项必须用的å‚数在使用短选项时也是必须的。\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+
+#: src/od.c:327
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+
+#: src/od.c:337
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:345
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+
+#: src/od.c:353
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+
+#: src/od.c:391
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "æƒé™æ¨¡å¼å­—符串无效:%s "
+
+#: src/od.c:693
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+
+#: src/od.c:812
+#, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "æƒé™æ¨¡å¼å­—符串 %2$s 中出现无效的字符 %1$s"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr ""
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr ""
+
+#: src/od.c:1655
+#, fuzzy
+msgid "skip argument"
+msgstr "缺少了文件å‚æ•°"
+
+#: src/od.c:1664
+#, fuzzy
+msgid "limit argument"
+msgstr "有效的å‚数为:"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr ""
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr ""
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr ""
+
+#: src/od.c:1844
+msgid "Compatibility mode supports at most one file."
+msgstr ""
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr ""
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr ""
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr ""
+
+#: src/paste.c:202
+#, fuzzy, c-format
+msgid "standard input is closed"
+msgstr "标准输入"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+
+#: src/pathchk.c:99
+#, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "用法:%s [选项]... å称...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "æƒé™æ¨¡å¼å­—符串 %2$s 中出现无效的字符 %1$s"
+
+#: src/pathchk.c:282
+#, c-format
+msgid "empty file name"
+msgstr "空文件å"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr ""
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr ""
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr "???\n"
+
+#: src/pinky.c:353
+#, c-format
+msgid "Directory: "
+msgstr "目录:"
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr "Shell:"
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr ""
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr ""
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr ""
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr ""
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr ""
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr ""
+
+#: src/pinky.c:427
+msgid "When"
+msgstr ""
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr ""
+
+#: src/pinky.c:510
+#, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "用法:%s [选项]... [用户]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+
+#: src/pinky.c:612
+#, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr ""
+
+#: src/pr.c:807 src/pr.c:817
+#, fuzzy
+msgid "page range"
+msgstr "æƒé™æ¨¡å¼å­—符串无效:%s "
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr ""
+
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "æƒé™æ¨¡å¼å­—符串无效:%s "
+
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "无效的å·ç  %s"
+
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "无效的 minor è®¾å¤‡å· %s"
+
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "无效的行宽数值:%s"
+
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "%s:覆盖次数无效"
+
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "%s:覆盖次数无效"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr ""
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr ""
+
+#: src/pr.c:1202
+#, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr ""
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr ""
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2406
+#, fuzzy, c-format
+msgid "Page number overflow"
+msgstr "无效的å·ç  %s"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+
+#: src/pr.c:2779
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr ""
+
+#: src/pr.c:2846
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s æ ¼å¼ [å‚æ•°]...\n"
+" 或:%s 选项\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr ""
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr ""
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr ""
+
+#: src/printf.c:289
+#, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr ""
+
+#: src/printf.c:550
+#, fuzzy, c-format
+msgid "invalid field width: %s"
+msgstr "无效的行宽数值:%s"
+
+#: src/printf.c:585
+#, fuzzy, c-format
+msgid "invalid precision: %s"
+msgstr "转æ¢æ— æ•ˆï¼š%s"
+
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%s:文件大å°æ— æ•ˆ"
+
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr ""
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr ""
+
+#: src/ptx.c:422
+#, c-format
+msgid "%s (for regexp %s)"
+msgstr ""
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "无效的行宽数值:%s"
+
+#: src/ptx.c:2089
+#, fuzzy, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr ""
+"警告:--version-control (-V) 选项已ç»è¿‡æ—¶ï¼›å°†æ¥çš„版本éšæ—¶å¯èƒ½ä¸å†æ”¯æŒ\n"
+"此选项。请使用 --backup=%s。"
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+"打å°å½“å‰å·¥ä½œç›®å½•çš„完整文件å。\n"
+"\n"
+
+#: src/pwd.c:160
+#, fuzzy, c-format
+msgid "failed to chdir to %s"
+msgstr "无法ä¿ç•™%s的时间"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "无法ä¿ç•™%s的时间"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, fuzzy, c-format
+msgid "ignoring non-option arguments"
+msgstr "忽略任何å‚æ•°"
+
+#: src/readlink.c:67
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "用法:%s [选项]... 文件\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "无法ä¿ç•™%s的时间"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "无法打开目录 %s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, fuzzy, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "%s çš„ dev/ino å˜äº†"
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "无法创建目录 %s"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+" 警告:å‘现循环的目录架构。\n"
+"这几乎å¯ä»¥è‚¯å®šæ–‡ä»¶ç³»ç»Ÿå·²ç»æŸå。\n"
+"** 请告诉系统管ç†å‘˜ã€‚**\n"
+"以下的目录是循环的一部份:\n"
+" %s\n"
+
+#: src/remove.c:854
+#, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "%s:是å¦è¿›å…¥æœ‰å†™ä¿æŠ¤çš„目录%s? "
+
+#: src/remove.c:855
+#, c-format
+msgid "%s: descend into directory %s? "
+msgstr "%s:是å¦è¿›å…¥ç›®å½• %s? "
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s:是å¦åˆ é™¤æœ‰å†™ä¿æŠ¤çš„ %s %s? "
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s:是å¦åˆ é™¤ %s %s? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, c-format
+msgid "removed directory: %s\n"
+msgstr "已删除目录:%s\n"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "无法ä¿ç•™%s的时间"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, c-format
+msgid "cannot remove directory %s"
+msgstr "无法删除目录%s"
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr ""
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "无法删除目录%s"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "无法删除目录%s"
+
+#: src/remove.c:1558
+#, c-format
+msgid "cannot restore current working directory"
+msgstr "无法æ¢å¤å½“å‰å·¥ä½œç›®å½•"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr "请使用“%s ./%sâ€åˆ é™¤æ–‡ä»¶ %s。\n"
+
+#: src/rm.c:160 src/touch.c:233
+#, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "用法:%s [选项]... 文件...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --no-preserve-root ä¸ç‰¹æ®Šå¯¹å¾…“/â€(默认值)\n"
+" --preserve-root ä¸å…许在“/â€ä¸Šé€’å½’æ“作\n"
+" -r, -R, --recursive 递归删除目录åŠå…¶å†…容\n"
+" -v, --verbose 详细显示进行的步骤\n"
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+"\n"
+"默认情况下,rm ä¸åˆ é™¤ç›®å½•ã€‚使用 --recursive (-r 或 -R)选项å¯ä»¥åˆ é™¤æ¯ä¸ªåˆ—出"
+"çš„\n"
+"目录åŠå…¶ä¸‹é¢çš„内容。\n"
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"è¦åˆ é™¤ç¬¬ä¸€ä¸ªå­—符为“-â€çš„文件 (例如“-fooâ€),请使用以下其中一ç§æ–¹æ³•ï¼š\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"请注æ„,如果使用 rm æ¥åˆ é™¤æ–‡ä»¶ï¼Œé€šå¸¸ä»å¯ä»¥å°†è¯¥æ–‡ä»¶æ¢å¤åŽŸçŠ¶ã€‚如果想ä¿è¯\n"
+"该文件的内容无法还原,请考虑使用 shred。\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s:是å¦åˆ é™¤ %s %s? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, c-format
+msgid "removing directory, %s"
+msgstr "删除目录,%s"
+
+#: src/rmdir.c:140
+#, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "用法:%s [选项]... 目录...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"如果<目录>没有数æ®åˆ™åˆ é™¤è¯¥ç›®å½•ã€‚\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" 忽略任何因目录ä»æœ‰æ•°æ®è€Œé€ æˆçš„错误\n"
+
+#: src/rmdir.c:148
+#, fuzzy
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents 删除<目录>,然åŽå°è¯•åˆ é™¤æŒ‡å®šè·¯å¾„中的所有上层目录。例如:\n"
+" “rmdir -p a/b/câ€çš„效果等于“rmdir a/b/c a/b aâ€ã€‚\n"
+" -v, --verbose 处ç†æ¯ä¸ªç›®å½•æ—¶éƒ½æ˜¾ç¤ºä¿¡æ¯\n"
+
+#: src/seq.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"用法:%s [选项]... æ¥æº 目的地\n"
+" 或:%s [选项]... æ¥æº... 目录\n"
+" 或:%s [选项]... --target-directory=目录 æ¥æº...\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+
+#: src/seq.c:88
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, c-format
+msgid "invalid floating point argument: %s"
+msgstr "无效的浮点å‚数:%s"
+
+#: src/seq.c:342
+#, c-format
+msgid "invalid format string: %s"
+msgstr "无效的格å¼å­—符串:%s "
+
+#: src/seq.c:364
+#, fuzzy, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr "安装目录时ä¸èƒ½ç”¨ strip 选项"
+
+#: src/setuidgid.c:51
+#, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s 用户å 命令 [å‚æ•°]...\n"
+" 或:%s 选项\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr "未知的用户 ID:%s"
+
+#: src/setuidgid.c:109
+#, fuzzy, c-format
+msgid "cannot set supplemental group"
+msgstr "无法改å˜æ‰€å±žç»„至没有å称的组"
+
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "无法改å˜æ‰€å±žç»„至没有å称的组"
+
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "stat%s失败"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "用法:%s [选项] 文件 [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr ""
+"é‡å¤è¦†ç›–<文件>,使得å³ä½¿æ˜¯æ˜‚贵的硬件探测仪器也难以将数æ®å¤åŽŸã€‚\n"
+"\n"
+
+#: src/shred.c:174
+#, fuzzy, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force 有需è¦æ—¶å¼ºè¿«ç¨‹åºå¯å†™å…¥æ–‡ä»¶\n"
+" -n, --iterations=N 自行指定é‡å¤è¦†ç›–的次数 (默认为 %d 次)\n"
+" -s, --size=N 覆盖指定的字节数目 (å¯æŽ¥å— Kã€Mã€G 等等的å•ä½)\n"
+
+#: src/shred.c:180
+#, fuzzy
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove 覆盖åŽä¼šæˆªæ–­åŠåˆ é™¤è¯¥æ–‡ä»¶\n"
+" -v, --verbose 显示进度\n"
+" -x, --exact ä¸å°†æ–‡ä»¶å¤§å°å¢žåŠ è‡³æœ€æŽ¥è¿‘çš„å—大å°\n"
+" -z, --zero 最åŽä¸€æ¬¡ä¼šä½¿ç”¨ 0 字节进行覆盖æ¥éšè—覆盖动作\n"
+" - 覆盖标准输出的数æ®\n"
+
+#: src/shred.c:189
+#, fuzzy
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"如果加上 --remove (-u) 选项表示删除<文件>。默认的方å¼æ˜¯ä¸åˆ é™¤æ–‡ä»¶ï¼Œå› ä¸º\n"
+"è¦†ç›–åƒ /dev/hda 等的设备文件是很普é的,而这些文件通常ä¸åº”删除。当覆盖\n"
+"普通文件时,ç»å¤§å¤šæ•°äººéƒ½ä¼šä½¿ç”¨ --remove 选项。\n"
+
+#: src/shred.c:199
+#, fuzzy
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"警告:请注æ„使用 shred 时有一个很é‡è¦çš„æ¡ä»¶ï¼š\n"
+"文件系统会在原æ¥çš„ä½ç½®è¦†ç›–指定的数æ®ã€‚传统的文件系统符åˆæ­¤æ¡ä»¶ï¼Œä½†è®¸å¤šçŽ°ä»£\n"
+"的文件系统都ä¸ç¬¦åˆæ¡ä»¶ã€‚以下是会令 shred 无效的文件系统的例å­ï¼š\n"
+"\n"
+
+#: src/shred.c:207
+#, fuzzy
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"* 有纪录结构或是日志å¼æ–‡ä»¶ç³»ç»Ÿï¼Œåƒ AIX åŠ Solaris 使用的文件系统 (以åŠ\n"
+" JFSã€ReiserFSã€XFSã€Ext3 等等)\n"
+"\n"
+"* 会é‡å¤å†™å…¥æ•°æ®ï¼ŒåŠå³ä½¿ä¸€éƒ¨ä»½å†™å…¥åŠ¨ä½œå¤±è´¥åŽä»å¯ç»§ç»­çš„文件系统,åƒä½¿ç”¨\n"
+" RAID 的文件系统\n"
+"\n"
+"* 会ä¸æ—¶è¿›è¡Œå¿«ç…§çºªå½•çš„æ–‡ä»¶ç³»ç»Ÿï¼Œåƒ Network Applicance çš„ NFS æœåŠ¡å™¨\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+
+#: src/shred.c:303
+#, fuzzy, c-format
+msgid "%s: fdatasync failed"
+msgstr "strip 出现错误"
+
+#: src/shred.c:314
+#, fuzzy, c-format
+msgid "%s: fsync failed"
+msgstr "strip 出现错误"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s:无法å‘åŽæœå¯»"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%1$s:%3$lu 次之第 %2$lu 次 (%4$s)..."
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s:在ä½ç½® %s 写入时出现错误 "
+
+#: src/shred.c:478
+#, fuzzy, c-format
+msgid "%s: lseek failed"
+msgstr "strip 出现错误"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s:文件过大"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%1$s:%3$lu 次之第 %2$lu 次 (%4$s)...%5$s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%1$s:%3$lu 次之第 %2$lu 次 (%4$s)...%5$s/%6$s %7$d%%"
+
+#: src/shred.c:776
+#, fuzzy, c-format
+msgid "%s: fstat failed"
+msgstr "strip 出现错误"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s:文件类型无效"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s:文件的大å°ä¸ºè´Ÿæ•°"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s:截断文件时出现错误"
+
+#: src/shred.c:889
+#, fuzzy, c-format
+msgid "%s: fcntl failed"
+msgstr "strip 出现错误"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s:ä¸èƒ½å°†åªå¯åŠ ä¸Šæ•°æ®çš„文件æ述符 (file descriptor) 进行 shred 动作"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s:删除中"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s:已é‡å‘½å为 %s"
+
+#: src/shred.c:1018
+#, c-format
+msgid "%s: failed to remove"
+msgstr "%s:删除失败"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s:已删除"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, c-format
+msgid "%s: failed to close"
+msgstr "%s:关闭失败"
+
+#: src/shred.c:1065
+#, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s:打开写入失败"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr "%s:覆盖次数无效"
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "正在关闭输出文件 %s"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr "%s:文件大å°æ— æ•ˆ"
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"用法:%s [选项]... æ¥æº 目的地\n"
+" 或:%s [选项]... æ¥æº... 目录\n"
+" 或:%s [选项]... --target-directory=目录 æ¥æº...\n"
+
+#: src/shuf.c:57
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "正在关闭输出文件 %s"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "无效的行宽数值:%s"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "无效的行宽:%s"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, fuzzy, c-format
+msgid "multiple output files specified"
+msgstr "正在关闭输出文件 %s"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "无法决定 %s æ‰€åœ¨çš„è®¾å¤‡åŠ inode"
+
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr "é¢å¤–çš„æ“作数 %s"
+
+#: src/sleep.c:47
+#, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "æ— æ•ˆçš„æ—¥æœŸæ—¶é—´æ ¼å¼ %s"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, fuzzy, c-format
+msgid "cannot read realtime clock"
+msgstr "无法创建链接%s"
+
+#: src/sort.c:310
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+"顺åºé€‰é¡¹ï¼š\n"
+"\n"
+
+#: src/sort.c:321
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+
+#: src/sort.c:326
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+
+#: src/sort.c:351
+#, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/sort.c:363
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "正在写入 %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "无法创建临时文件"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "打开失败"
+
+#: src/sort.c:758
+#, fuzzy
+msgid "fflush failed"
+msgstr "strip 出现错误"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "关闭失败"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "打开失败"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr ""
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "无法创建临时文件"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "无法创建临时文件"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr ""
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "无法创建目录 %s"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "写入失败"
+
+#: src/sort.c:975
+#, c-format
+msgid "warning: cannot remove: %s"
+msgstr "警告:无法删除:%s"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "排åºå¤§å°"
+
+#: src/sort.c:1171
+#, fuzzy
+msgid "stat failed"
+msgstr "strip 出现错误"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "读å–失败"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr ""
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "标准错误"
+
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s:文件大å°æ— æ•ˆ"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s:覆盖次数无效"
+
+#: src/sort.c:2887
+#, fuzzy
+msgid "invalid number after `-'"
+msgstr "无效的å·ç  %s"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+#, fuzzy
+msgid "invalid number after `.'"
+msgstr "无效的å·ç  %s"
+
+#: src/sort.c:2893 src/sort.c:2988
+#, fuzzy
+msgid "stray character in field spec"
+msgstr "字符特殊文件"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "指定了多ç§è¾“出格å¼"
+
+#: src/sort.c:2943
+#, fuzzy
+msgid "invalid number at field start"
+msgstr "无效的å·ç  %s"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "字段编å·ä¸ºé›¶"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "字符å移为零"
+
+#: src/sort.c:2971
+#, fuzzy
+msgid "invalid number after `,'"
+msgstr "无效的å·ç  %s"
+
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "é¢å¤–çš„æ“作数 %s"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "用法:%s [选项] [输入 [å‰ç¼€]]\n"
+
+#: src/split.c:110
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/split.c:119
+#, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr ""
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr ""
+
+#: src/split.c:211
+#, c-format
+msgid "creating file %s\n"
+msgstr "创建文件 %s\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "无法按多ç§æ–¹å¼æ‹†åˆ†"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s:无效的åŽç¼€é•¿åº¦"
+
+#: src/split.c:434 src/split.c:458
+#, fuzzy, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s:覆盖次数无效"
+
+#: src/split.c:446
+#, fuzzy, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s:覆盖次数无效"
+
+#: src/split.c:487
+#, fuzzy, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "%s:文件过大"
+
+#: src/split.c:518
+#, fuzzy, c-format
+msgid "invalid number of lines: 0"
+msgstr "无效的å·ç  %s"
+
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s:无法识别的选项“%c%sâ€\n"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%s:文件类型无效"
+
+#: src/stat.c:726
+#, c-format
+msgid "warning: backslash at end of format"
+msgstr ""
+
+#: src/stat.c:755
+#, fuzzy, c-format
+msgid "cannot read file system information for %s"
+msgstr "无法创建 fifo 文件%s"
+
+#: src/stat.c:831
+#, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "用法:%s [选项] 文件...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+
+#: src/stat.c:857
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+
+#: src/stat.c:865
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+
+#: src/stat.c:875
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+
+#: src/stat.c:887
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+
+#: src/stat.c:896
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+
+#: src/stty.c:789
+#, c-format
+msgid "only one device may be specified"
+msgstr ""
+
+#: src/stty.c:819
+#, fuzzy, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr ""
+"显示 dircolors 内部数æ®åº“的选项和选择 shell 语法的选项\n"
+"是互相抵触的"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr ""
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr ""
+
+#: src/stty.c:885 src/stty.c:995
+#, c-format
+msgid "invalid argument %s"
+msgstr "无效å‚æ•° %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, c-format
+msgid "missing argument to %s"
+msgstr "缺少 %s çš„å‚æ•°"
+
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "无效的 tab 字符定ä½å€¼ï¼š%s"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr ""
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr ""
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr ""
+
+#: src/stty.c:1888
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "无效的整数å‚æ•° %s"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr "密ç ï¼š"
+
+#: src/su.c:245
+#, fuzzy, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "无法打开目录%s"
+
+#: src/su.c:303
+#, fuzzy, c-format
+msgid "cannot set groups"
+msgstr "stat%s失败"
+
+#: src/su.c:307
+#, fuzzy, c-format
+msgid "cannot set group id"
+msgstr "无法改å˜æ‰€å±žç»„至没有å称的组"
+
+#: src/su.c:309
+#, fuzzy, c-format
+msgid "cannot set user id"
+msgstr "stat%s失败"
+
+#: src/su.c:385
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "用法:%s [选项]... [-] [用户 [å‚æ•°]...]\n"
+
+#: src/su.c:386
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+"\n"
+"å•ç‹¬çš„ - 代表 -l。如果未给出[用户],则å‡å®šä¸º root。\n"
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr "用户 %s ä¸å­˜åœ¨"
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr "密ç ä¸æ­£ç¡®"
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr "使用被é™åˆ¶çš„ shell %s"
+
+#: src/su.c:523
+#, fuzzy, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "无法进入目录 %s"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+"强迫将已更改的数æ®å†™å…¥ç£ç›˜ï¼Œå¹¶æ›´æ–° super block。\n"
+"\n"
+
+#: src/sync.c:74
+#, c-format
+msgid "ignoring all arguments"
+msgstr "忽略全部å‚æ•°"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help 显示此帮助信æ¯å¹¶é€€å‡º\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version 输出版本信æ¯å¹¶é€€å‡º\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+
+#: src/tac.c:236 src/tac.c:337
+#, fuzzy, c-format
+msgid "%s: seek failed"
+msgstr "strip 出现错误"
+
+#: src/tac.c:265
+#, c-format
+msgid "record too large"
+msgstr "记录太大"
+
+#: src/tac.c:459
+#, c-format
+msgid "cannot create temporary file %s"
+msgstr "无法创建临时文件 %s"
+
+#: src/tac.c:466
+#, c-format
+msgid "cannot open %s for writing"
+msgstr "无法打开 %s 写入"
+
+#: src/tac.c:487 src/tac.c:494
+#, c-format
+msgid "%s: write error"
+msgstr "%s:写入错误"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "分隔符ä¸èƒ½ä¸ºç©º"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tail.c:229
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+
+#: src/tail.c:244
+#, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+
+#: src/tail.c:256
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+
+#: src/tail.c:265
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+
+#: src/tail.c:336
+#, fuzzy, c-format
+msgid "closing %s (fd=%d)"
+msgstr "正在关闭%s"
+
+#: src/tail.c:411
+#, fuzzy, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "无法创建 fifo 文件%s"
+
+#: src/tail.c:415
+#, fuzzy, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "无法创建 fifo 文件%s"
+
+#: src/tail.c:867
+#, c-format
+msgid "%s has become inaccessible"
+msgstr ""
+
+#: src/tail.c:884
+#, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr ""
+
+#: src/tail.c:905
+#, c-format
+msgid "%s has become accessible"
+msgstr ""
+
+#: src/tail.c:913
+#, c-format
+msgid "%s has appeared; following end of new file"
+msgstr ""
+
+#: src/tail.c:924
+#, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr ""
+
+#: src/tail.c:1025
+#, fuzzy, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "无法更改为空组"
+
+#: src/tail.c:1066
+#, fuzzy, c-format
+msgid "%s: file truncated"
+msgstr "%s:截断文件时出现错误"
+
+#: src/tail.c:1090
+#, fuzzy, c-format
+msgid "no files remaining"
+msgstr "缺少了文件å‚æ•°"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr ""
+
+#: src/tail.c:1439
+#, c-format
+msgid "number in %s is too large"
+msgstr "%s 中的数字太大"
+
+#: src/tail.c:1511
+#, fuzzy, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr "%s:覆盖次数无效"
+
+#: src/tail.c:1523
+#, fuzzy, c-format
+msgid "%s: invalid PID"
+msgstr "%s:文件大å°æ— æ•ˆ"
+
+#: src/tail.c:1542
+#, fuzzy, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s:覆盖次数无效"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr ""
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr ""
+
+#: src/tail.c:1573
+#, fuzzy, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "此系统并ä¸æ”¯æŒç¬¦å·é“¾æŽ¥"
+
+#: src/tail.c:1667
+#, c-format
+msgid "cannot follow %s by name"
+msgstr ""
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+
+#: src/tee.c:71
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+
+#: src/test.c:125
+#, c-format
+msgid "missing argument after %s"
+msgstr "%s åŽç¼ºå°‘å‚æ•°"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "无效的整数 %s\n"
+
+#: src/test.c:242
+msgid "')' expected"
+msgstr ""
+
+#: src/test.c:245
+#, c-format
+msgid "')' expected, found %s"
+msgstr ""
+
+#: src/test.c:261 src/test.c:606
+#, c-format
+msgid "%s: unary operator expected"
+msgstr ""
+
+#: src/test.c:330
+msgid "-nt does not accept -l"
+msgstr ""
+
+#: src/test.c:343
+msgid "-ef does not accept -l"
+msgstr ""
+
+#: src/test.c:359
+msgid "-ot does not accept -l"
+msgstr ""
+
+#: src/test.c:368
+#, fuzzy
+msgid "unknown binary operator"
+msgstr "未知的系统错误"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "未知的系统错误"
+
+#: src/test.c:694
+#, fuzzy
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+"用法:%s 文件\n"
+" 或:%s 选项\n"
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+#, fuzzy
+msgid "missing `]'"
+msgstr "缺少æ“作数"
+
+#: src/test.c:846
+#, c-format
+msgid "extra argument %s"
+msgstr "é¢å¤–å‚æ•° %s"
+
+#: src/touch.c:112 src/touch.c:318
+#, c-format
+msgid "invalid date format %s"
+msgstr "æ—¥æœŸæ ¼å¼ %s 无效"
+
+#: src/touch.c:154
+#, c-format
+msgid "creating %s"
+msgstr "创建 %s"
+
+#: src/touch.c:211
+#, c-format
+msgid "cannot touch %s"
+msgstr "无法触碰 %s"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "设置 %s 的时间"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr ""
+"å°†æ¯ä¸ª<文件>的访问åŠä¿®æ”¹æ—¶é—´éƒ½æ›´æ–°ä¸ºç›®å‰æ—¶é—´ã€‚\n"
+"\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a åªæ›´æ”¹è®¿é—®æ—¶é—´\n"
+" -c, --no-create ä¸åˆ›å»ºä»»ä½•æ–‡ä»¶\n"
+" -d, --date=字符串 使用<字符串>表示的时间而ä¸æ˜¯ç›®å‰çš„时间\n"
+" -f (此选项ä¸ä½œå¤„ç†)\n"
+" -m åªæ›´æ”¹ä¿®æ”¹æ—¶é—´\n"
+
+#: src/touch.c:248
+#, fuzzy
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --reference=文件 使用指定<文件>的时间属性而éžç›®å‰çš„时间\n"
+" -t STAMP 使用 [[CC]YY]MMDDhhmm[.ss] æ ¼å¼çš„时间而éžç›®å‰çš„æ—¶"
+"é—´\n"
+" --time=WORD 使用 WORD 指定的时间:accessã€atimeã€use 都等于 -a\n"
+" 选项的效果,而 modifyã€mtime 等于 -m 选项的效果\n"
+
+#: src/touch.c:257
+#, fuzzy
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"请注æ„,-d å’Œ -t 选项å¯æŽ¥å—ä¸åŒçš„时间/日期格å¼ã€‚\n"
+
+#: src/touch.c:344
+#, c-format
+msgid "cannot specify times from more than one source"
+msgstr "无法由多于一ç§çš„æ¥æºæ¥æŒ‡å®šæ—¶é—´"
+
+#: src/touch.c:389
+#, fuzzy, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr "警告:“touch %sâ€å·²ç»è¿‡æ—¶ï¼›è¯·ä½¿ç”¨â€œtouch -t %04d%02d%02d%02d%02d.%02dâ€"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "用法:%s [选项]... 集åˆ1 [集åˆ2]\n"
+
+#: src/tr.c:294
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+
+#: src/tr.c:519
+#, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr ""
+
+#: src/tr.c:838
+#, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr ""
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr ""
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr ""
+
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "æƒé™æ¨¡å¼å­—符串 %2$s 中出现无效的字符 %1$s"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr ""
+
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr "字符特殊文件"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr ""
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr ""
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr ""
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr ""
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr ""
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr ""
+
+#: src/tr.c:1731
+msgid "Two strings must be given when translating."
+msgstr ""
+
+#: src/tr.c:1741
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr ""
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr ""
+
+#: src/true.c:42
+#, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s [忽略的命令行开关]\n"
+" 或:%s 选项\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/tsort.c:474
+#, fuzzy, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s:覆盖次数无效"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s:输入包å«å¾ªçŽ¯ï¼š"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "用法:%s [选项]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr ""
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+
+#: src/uname.c:236
+#, c-format
+msgid "cannot get system name"
+msgstr ""
+
+#: src/unexpand.c:125
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+
+#: src/unexpand.c:133
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "%s:文件过大"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "用法:%s [选项]... [输入 [输出]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+
+#: src/uniq.c:151
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr ""
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+
+#: src/uniq.c:350
+#, c-format
+msgid "too many repeated lines"
+msgstr "é‡å¤è¡Œå¤ªå¤š"
+
+#: src/uniq.c:512
+#, fuzzy
+msgid "invalid number of fields to skip"
+msgstr "%s:覆盖次数无效"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "è¦è·³è¿‡çš„字节数无效"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "è¦æ¯”较的字节数无效"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr "打å°æ‰€æœ‰é‡å¤è¡Œå’Œé‡å¤è®¡æ•°æ¯«æ— æ„义"
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s 文件\n"
+" 或:%s 选项\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"调用 unlink 函数以便删除指定的[文件]。\n"
+"\n"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "无法解除 %s 的链接"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "无法获得å¯åŠ¨æ—¶é—´"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr ""
+
+#: src/uptime.c:135
+msgid "am"
+msgstr ""
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr ""
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr ""
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr "???? 天 ??:??,"
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%ld 天"
+
+#: src/uptime.c:147
+#, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%lu 个用户"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ",平å‡è´Ÿè½½ï¼š%.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "用法:%s [选项]... [文件]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"打å°å½“å‰æ—¶é—´ã€ç³»ç»Ÿå·²ç»è¿è¡Œçš„时间ã€ç³»ç»Ÿçš„用户数ã€ä»¥åŠåˆšæ‰ä¸€åˆ†é’Ÿã€äº”\n"
+"分钟ã€å五分钟内è¿è¡Œé˜Ÿåˆ—中的平å‡ä»»åŠ¡æ•°ã€‚\n"
+"如果未指定[文件],则使用 %s。%s 作为文件很常è§ã€‚\n"
+"\n"
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+
+#: src/wc.c:121
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr ""
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr ""
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr ""
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr ""
+
+#: src/who.c:497
+msgid "clock change"
+msgstr ""
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr ""
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr ""
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+
+#: src/who.c:551
+msgid "NAME"
+msgstr ""
+
+#: src/who.c:551
+msgid "LINE"
+msgstr ""
+
+#: src/who.c:551
+msgid "TIME"
+msgstr ""
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr ""
+
+#: src/who.c:552
+msgid "PID"
+msgstr ""
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr ""
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr ""
+
+#: src/who.c:633
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "用法:%s [选项]... [文件|å‚æ•°1 å‚æ•°2]\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr " -l, --login 打å°ç³»ç»Ÿç™»å½•è¿›ç¨‹\n"
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr "警告:-i å³å°†åœ¨æœªæ¥çš„版本删除;请æ¢ç”¨ -u"
+
+#: src/whoami.c:51
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+"打å°ä¸Žå½“å‰ç”Ÿæ•ˆçš„用户 ID å…³è”的用户å。\n"
+"与 id -un 相åŒã€‚\n"
+"\n"
+
+#: src/whoami.c:95
+#, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s:找ä¸åˆ° ID %lu 的用户å\n"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s [字符串]...\n"
+" 或:%s 选项\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"é‡å¤è¾“出一行指定的<字符串>,或者é‡å¤â€œyâ€ã€‚\n"
+"\n"
+
+#~ msgid "strip failed"
+#~ msgstr "strip 出现错误"
+
+#~ msgid "-R -h requires -P"
+#~ msgstr "-R -h éœ€è¦ -P"
+
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "此系统并ä¸æ”¯æŒç¬¦å·é“¾æŽ¥"
+
+#~ msgid "fifo files not supported"
+#~ msgstr "ä¸æ”¯æŒ FIFO 文件"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "无法删除“.â€æˆ–“..â€"
+
+#, fuzzy
+#~ msgid "%s: count `%.*s' too large"
+#~ msgstr "%s:文件过大"
diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo
new file mode 100644
index 0000000..f4acc7c
--- /dev/null
+++ b/po/zh_TW.gmo
Binary files differ
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100644
index 0000000..4f5b64d
--- /dev/null
+++ b/po/zh_TW.po
@@ -0,0 +1,9374 @@
+# traditional Chinese translation of coreutils.
+# Copyright (C) 1998, 2002, 2005 Free Software Foundation, Inc.
+#
+# # Merged from textutils, sh-utils and fileutils translation:
+# # Yip Chi Lap <clyip@cs.hku.hk>, 1998.
+# # Yuan-Chung Cheng <platin@ms.ccafps.khc.edu.tw>, 1998.
+# # Abel Cheung <abelcheung@gmail.com>, 2002.
+# # Pofeng Lee <pofeng@linux.org.tw>, 1998, 2002.
+#
+# Abel Cheung <abelcheung@gmail.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: coreutils 5.3.0\n"
+"Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n"
+"POT-Creation-Date: 2007-03-20 08:37+0100\n"
+"PO-Revision-Date: 2005-07-02 04:13+0800\n"
+"Last-Translator: Abel Cheung <abelcheung@gmail.com>\n"
+"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: lib/acl.c:103 lib/acl.c:117 lib/acl.c:134 lib/acl.c:146 lib/acl.c:245
+#: src/copy.c:566 src/copy.c:1886
+#, fuzzy, c-format
+msgid "preserving permissions for %s"
+msgstr "正在更改 %s 的權é™"
+
+#: lib/acl.c:226 lib/acl.c:234 lib/acl.c:253 src/copy.c:1596 src/cp.c:497
+#, c-format
+msgid "setting permissions for %s"
+msgstr "正在更改 %s 的權é™"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "%2$sçš„åƒæ•¸%1$s無效"
+
+#: lib/argmatch.c:135
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "%2$sçš„åƒæ•¸%1$sä¸æ˜Žç¢º"
+
+#: lib/argmatch.c:154
+#, c-format
+msgid "Valid arguments are:"
+msgstr "有效的åƒæ•¸ç‚ºï¼š"
+
+#: lib/closeout.c:74 src/base64.c:116 src/base64.c:128 src/base64.c:134
+#: src/base64.c:175 src/base64.c:231 src/cat.c:193 src/cat.c:209 src/cat.c:293
+#: src/cksum.c:252 src/expand.c:337 src/expand.c:362 src/head.c:300
+#: src/head.c:350 src/head.c:758 src/head.c:799 src/od.c:968 src/paste.c:143
+#: src/shuf.c:408 src/tail.c:307 src/tail.c:1095 src/tr.c:1561 src/tr.c:1784
+#: src/tr.c:1887 src/unexpand.c:434 src/unexpand.c:450
+#, c-format
+msgid "write error"
+msgstr "寫入時發生錯誤"
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr "ä¸æ˜Žçš„系統錯誤"
+
+#: lib/euidaccess-stat.c:137 src/copy.c:1040 src/copy.c:1076 src/copy.c:1584
+#: src/copy.c:1873 src/df.c:512 src/install.c:455 src/stat.c:784
+#, c-format
+msgid "cannot stat %s"
+msgstr "無法 stat %s"
+
+#: lib/file-type.c:39
+msgid "regular empty file"
+msgstr "普通空白檔案"
+
+#: lib/file-type.c:39
+msgid "regular file"
+msgstr "普通檔案"
+
+#: lib/file-type.c:42
+msgid "directory"
+msgstr "目錄"
+
+#: lib/file-type.c:45
+msgid "block special file"
+msgstr "å€å¡Šç‰¹æ®Šæª”案"
+
+#: lib/file-type.c:48
+msgid "character special file"
+msgstr "字元特殊檔案"
+
+#: lib/file-type.c:51
+msgid "fifo"
+msgstr "fifo"
+
+#: lib/file-type.c:54
+msgid "symbolic link"
+msgstr "符號連çµ"
+
+#: lib/file-type.c:57
+msgid "socket"
+msgstr "socket"
+
+#: lib/file-type.c:60
+msgid "message queue"
+msgstr "訊æ¯ä½‡åˆ—"
+
+#: lib/file-type.c:63
+msgid "semaphore"
+msgstr "semaphore"
+
+#: lib/file-type.c:66
+msgid "shared memory object"
+msgstr "共用記憶體物件"
+
+#: lib/file-type.c:69
+#, fuzzy
+msgid "typed memory object"
+msgstr "共用記憶體物件"
+
+#: lib/file-type.c:71
+msgid "weird file"
+msgstr "ä¸æ­£å¸¸çš„檔案"
+
+#: lib/gai_strerror.c:44
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "ä¸æ”¯æ´ FIFO 檔案"
+
+#: lib/gai_strerror.c:45
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:46
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: lib/gai_strerror.c:47
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: lib/gai_strerror.c:48
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "ä¸æ”¯æ´ FIFO 檔案"
+
+#: lib/gai_strerror.c:49
+msgid "Memory allocation failure"
+msgstr ""
+
+#: lib/gai_strerror.c:50
+msgid "No address associated with hostname"
+msgstr ""
+
+#: lib/gai_strerror.c:51
+msgid "Name or service not known"
+msgstr ""
+
+#: lib/gai_strerror.c:52
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: lib/gai_strerror.c:53
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "ä¸æ”¯æ´ FIFO 檔案"
+
+#: lib/gai_strerror.c:54
+#, fuzzy
+msgid "System error"
+msgstr "寫入時發生錯誤"
+
+#: lib/gai_strerror.c:55
+msgid "Argument buffer too small"
+msgstr ""
+
+#: lib/gai_strerror.c:57
+msgid "Processing request in progress"
+msgstr ""
+
+#: lib/gai_strerror.c:58
+msgid "Request canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:59
+msgid "Request not canceled"
+msgstr ""
+
+#: lib/gai_strerror.c:60
+msgid "All requests done"
+msgstr ""
+
+#: lib/gai_strerror.c:61
+msgid "Interrupted by a signal"
+msgstr ""
+
+#: lib/gai_strerror.c:62
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: lib/gai_strerror.c:74
+#, fuzzy
+msgid "Unknown error"
+msgstr "ä¸æ˜Žçš„系統錯誤"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr "%s:é¸é …‘%s’ä¸æ˜Žç¢º\n"
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr "%s:é¸é …‘--%s’ä¸å¯é…åˆåƒæ•¸ä½¿ç”¨\n"
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr "%s:é¸é …‘%c%s’ä¸å¯é…åˆåƒæ•¸ä½¿ç”¨\n"
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr "%s:é¸é …‘%s’需è¦åƒæ•¸\n"
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr "%s:無法識別的é¸é …‘--%s’\n"
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr "%s:無法識別的é¸é …‘%c%s’\n"
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s:ä¸åˆæ³•çš„é¸é … ─ %c\n"
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s:無效的é¸é … ─ %c\n"
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s:é¸é …需è¦åƒæ•¸ ─ %c\n"
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr "%s:é¸é …‘-W %s’ä¸æ˜Žç¢º\n"
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr "%s:é¸é …‘-W %s’ä¸å¯é…åˆåƒæ•¸ä½¿ç”¨\n"
+
+#: lib/human.c:477
+msgid "block size"
+msgstr ""
+
+#: lib/mkdir-p.c:197 src/install.c:522
+#, c-format
+msgid "cannot change permissions of %s"
+msgstr "無法更改%s的權é™"
+
+#: lib/mkdir-p.c:207 src/copy.c:1573 src/install.c:423 src/install.c:436
+#, c-format
+msgid "cannot create directory %s"
+msgstr "無法建立目錄%s"
+
+#: lib/obstack.c:424 lib/obstack.c:426 lib/xalloc-die.c:35 src/csplit.c:237
+msgid "memory exhausted"
+msgstr "記憶體耗盡"
+
+#: lib/openat-die.c:34
+#, fuzzy, c-format
+msgid "unable to record current working directory"
+msgstr "無法建立目錄%s"
+
+#: lib/openat-die.c:47 src/df.c:535
+#, c-format
+msgid "failed to return to initial working directory"
+msgstr ""
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'". If the catalog has no translation,
+#. locale_quoting_style quotes `like this', and
+#. clocale_quoting_style quotes "like this".
+#.
+#. For example, an American English Unicode locale should
+#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
+#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
+#. MARK). A British English Unicode locale should instead
+#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_mark#Glyphs>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:229
+msgid "`"
+msgstr "‘"
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr "’"
+
+#: lib/randread.c:125
+#, fuzzy, c-format
+msgid "%s: end of file"
+msgstr "關閉時發生錯誤"
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "%s:無效的正è¦è¡¨ç¤ºå¼ï¼š%s"
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+#, fuzzy
+msgid "Invalid character class name"
+msgstr "無效的字元種類‘%s’"
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+#, fuzzy
+msgid "Invalid range end"
+msgstr "無效的類型‘%s’"
+
+#: lib/regcomp.c:167
+#, fuzzy
+msgid "Memory exhausted"
+msgstr "記憶體耗盡"
+
+#: lib/regcomp.c:170
+#, fuzzy
+msgid "Invalid preceding regular expression"
+msgstr "%s:無效的正è¦è¡¨ç¤ºå¼ï¼š%s"
+
+#: lib/regcomp.c:173
+#, fuzzy
+msgid "Premature end of regular expression"
+msgstr "在正è¦é‹ç®—å¼æœå°‹æ™‚發生錯誤"
+
+#: lib/regcomp.c:176
+#, fuzzy
+msgid "Regular expression too big"
+msgstr "%s:無效的正è¦è¡¨ç¤ºå¼ï¼š%s"
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+#, fuzzy
+msgid "No previous regular expression"
+msgstr "在正è¦é‹ç®—å¼æœå°‹æ™‚發生錯誤"
+
+#: lib/root-dev-ino.h:40
+#, c-format
+msgid "it is dangerous to operate recursively on %s"
+msgstr ""
+
+#: lib/root-dev-ino.h:44
+#, c-format
+msgid "it is dangerous to operate recursively on %s (same as %s)"
+msgstr ""
+
+#: lib/root-dev-ino.h:46
+#, c-format
+msgid "use --no-preserve-root to override this failsafe"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr "^[yY]"
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+msgstr "^[nN]"
+
+#: lib/unicodeio.c:151
+msgid "iconv function not usable"
+msgstr "iconv 功能無法使用"
+
+#: lib/unicodeio.c:153
+msgid "iconv function not available"
+msgstr "iconv 功能ä¸å­˜åœ¨"
+
+#: lib/unicodeio.c:160
+msgid "character out of range"
+msgstr "字元值超出å¯æŽ¥å—的範åœä»¥å¤–"
+
+#: lib/unicodeio.c:224
+#, c-format
+msgid "cannot convert U+%04X to local character set"
+msgstr "無法將 U+%04X 轉æ›è‡³ä½¿ç”¨è€…的字元集"
+
+#: lib/unicodeio.c:226
+#, c-format
+msgid "cannot convert U+%04X to local character set: %s"
+msgstr "無法將 U+%04X 轉æ›è‡³ä½¿ç”¨è€…的字元集:%s"
+
+#: lib/userspec.c:107
+msgid "invalid user"
+msgstr "無效的使用者"
+
+#: lib/userspec.c:108
+msgid "invalid group"
+msgstr "無效的群組"
+
+#: lib/userspec.c:109
+#, fuzzy
+msgid "invalid spec"
+msgstr "無效的使用者"
+
+#. TRANSLATORS: Translate "(C)" to the copyright symbol
+#. (C-in-a-circle), if this symbol is available in the user's
+#. locale. Otherwise, do not translate "(C)"; leave it as-is.
+#: lib/version-etc.c:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+#, fuzzy
+msgid ""
+"\n"
+"This is free software. You may redistribute copies of it under the terms "
+"of\n"
+"the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+"\n"
+msgstr ""
+"本程å¼æ˜¯è‡ªç”±è»Ÿé«”;你å¯ä»¥æ ¹æ“š Free Software Foundation 所公佈的 GNU\n"
+"General Public License 第二版或(自由é¸æ“‡)較新的版本中的æ¢æ¬¾åŽ»é‡æ–°\n"
+"散佈åŠ/或修改本軟體。\n"
+"\n"
+
+#. TRANSLATORS: %s denotes an author name.
+#: lib/version-etc.c:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr "由 %s 編寫。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr "由 %s 和 %s 編寫。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, c-format
+msgid "Written by %s, %s, and %s.\n"
+msgstr "由 %s, %s 和 %s 編寫。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:98
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"ç”± %s, %s, %s\n"
+"和 %s 編寫。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:104
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"ç”± %s, %s, %s,\n"
+"%s 和 %s 編寫。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:110
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, and %s.\n"
+msgstr ""
+"ç”± %s, %s, %s,\n"
+"%s, %s 和 %s 編寫。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:117
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, and %s.\n"
+msgstr ""
+"ç”± %s, %s, %s, %s,\n"
+"%s, %s 和 %s 編寫。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:124
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"and %s.\n"
+msgstr ""
+"ç”± %s, %s, %s, %s,\n"
+"%s, %s, %s 和 %s 編寫。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:132
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, and %s.\n"
+msgstr ""
+"ç”± %s, %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"和 %s 編寫。\n"
+
+#. TRANSLATORS: Each %s denotes an author name.
+#. You can use line breaks, estimating that each author name occupies
+#. ca. 16 screen columns and that a screen line has ca. 80 columns.
+#: lib/version-etc.c:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+"ç”± %s, %s, %s, %s,\n"
+"%s, %s, %s, %s\n"
+"和 %s 等等編寫。\n"
+
+#: lib/xfts.c:58
+#, c-format
+msgid "invalid argument: %s"
+msgstr "åƒæ•¸ç„¡æ•ˆ: %s"
+
+#: lib/xmemcoll.c:49 src/expr.c:782
+#, c-format
+msgid "string comparison failed"
+msgstr "字串比較出ç¾éŒ¯èª¤"
+
+#: lib/xmemcoll.c:50 lib/xmemxfrm.c:56 src/expr.c:783
+#, c-format
+msgid "Set LC_ALL='C' to work around the problem."
+msgstr "請設定 LC_ALL='C' é¿å…å•é¡Œå‡ºç¾ã€‚"
+
+#: lib/xmemcoll.c:52 src/expr.c:785
+#, c-format
+msgid "The strings compared were %s and %s."
+msgstr "è¦æ¯”較的字串為%såŠ%s。"
+
+#: lib/xmemxfrm.c:55
+#, fuzzy, c-format
+msgid "string transformation failed"
+msgstr "字串比較出ç¾éŒ¯èª¤"
+
+#: lib/xmemxfrm.c:58
+#, c-format
+msgid "The untransformed string was %s."
+msgstr ""
+
+#: lib/xstrtol.h:62
+#, fuzzy, c-format
+msgid "invalid %s `%s'"
+msgstr "日期無效:‘%s’"
+
+#: lib/xstrtol.h:69
+#, fuzzy, c-format
+msgid "invalid character following %s in `%s'"
+msgstr "無效的字元種類‘%s’"
+
+#: lib/xstrtol.h:74
+#, fuzzy, c-format
+msgid "%s `%s' too large"
+msgstr "%s éŽé•·"
+
+#: src/base64.c:61 src/basename.c:50 src/cat.c:91 src/chgrp.c:108
+#: src/chmod.c:341 src/chown.c:89 src/chroot.c:42 src/cksum.c:261
+#: src/comm.c:69 src/cp.c:153 src/csplit.c:1470 src/cut.c:184 src/date.c:128
+#: src/dd.c:400 src/df.c:736 src/dircolors.c:98 src/dirname.c:44 src/du.c:275
+#: src/echo.c:60 src/env.c:114 src/expand.c:107 src/expr.c:98 src/factor.c:70
+#: src/fmt.c:269 src/fold.c:66 src/head.c:105 src/hostid.c:44
+#: src/hostname.c:61 src/id.c:74 src/install.c:647 src/join.c:130
+#: src/kill.c:86 src/link.c:46 src/ln.c:320 src/logname.c:40 src/ls.c:4272
+#: src/md5sum.c:146 src/mkdir.c:55 src/mkfifo.c:50 src/mknod.c:51 src/mv.c:280
+#: src/nice.c:72 src/nl.c:173 src/nohup.c:53 src/od.c:303 src/paste.c:413
+#: src/pathchk.c:95 src/pinky.c:506 src/pr.c:2763 src/printenv.c:57
+#: src/printf.c:89 src/ptx.c:1879 src/pwd.c:50 src/readlink.c:63 src/rm.c:156
+#: src/rmdir.c:136 src/seq.c:70 src/setuidgid.c:47 src/shred.c:161
+#: src/shuf.c:47 src/sleep.c:43 src/sort.c:302 src/split.c:102 src/stat.c:827
+#: src/stty.c:507 src/su.c:381 src/sum.c:55 src/sync.c:41 src/tac.c:129
+#: src/tail.c:212 src/tee.c:58 src/test.c:690 src/touch.c:229 src/tr.c:286
+#: src/tsort.c:82 src/tty.c:65 src/uname.c:113 src/unexpand.c:117
+#: src/uniq.c:131 src/unlink.c:46 src/uptime.c:193 src/users.c:104
+#: src/wc.c:104 src/who.c:629 src/whoami.c:46 src/yes.c:42
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "請嘗試執行‘%s --help’來ç²å–更多資訊。\n"
+
+#: src/base64.c:65
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Base64 encode or decode FILE, or standard input, to standard output.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:69
+msgid ""
+" -w, --wrap=COLS Wrap encoded lines after COLS character (default "
+"76).\n"
+" Use 0 to disable line wrapping.\n"
+"\n"
+" -d, --decode Decode data.\n"
+" -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n"
+"\n"
+msgstr ""
+
+#: src/base64.c:77
+#, fuzzy
+msgid ""
+" --help Display this help and exit.\n"
+" --version Output version information and exit.\n"
+msgstr " --version 顯示版本資訊並離開\n"
+
+#: src/base64.c:80 src/cat.c:117 src/fmt.c:296 src/shuf.c:74 src/sum.c:71
+msgid ""
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"如果沒有指定<檔案>或<檔案>是 -,則由標準輸入讀å–資料。\n"
+
+#: src/base64.c:83
+msgid ""
+"\n"
+"The data are encoded as described for the base64 alphabet in RFC 3548.\n"
+"When decoding, the input may contain newlines in addition to the bytes of\n"
+"the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n"
+"from any other non-alphabet bytes in the encoded stream.\n"
+msgstr ""
+
+#: src/base64.c:90 src/basename.c:73 src/cat.c:128 src/chgrp.c:163
+#: src/chmod.c:372 src/chown.c:158 src/chroot.c:60 src/cksum.c:276
+#: src/comm.c:94 src/cp.c:252 src/csplit.c:1512 src/cut.c:237 src/date.c:248
+#: src/dd.c:510 src/df.c:775 src/dircolors.c:119 src/dirname.c:67 src/du.c:347
+#: src/echo.c:98 src/env.c:133 src/expand.c:132 src/expr.c:166 src/factor.c:90
+#: src/fmt.c:300 src/fold.c:89 src/head.c:140 src/hostid.c:57
+#: src/hostname.c:74 src/id.c:95 src/install.c:705 src/join.c:172
+#: src/kill.c:117 src/link.c:58 src/ln.c:378 src/logname.c:51 src/ls.c:4427
+#: src/md5sum.c:194 src/mkdir.c:74 src/mkfifo.c:67 src/mknod.c:82 src/mv.c:331
+#: src/nice.c:88 src/nl.c:229 src/nohup.c:70 src/od.c:395 src/paste.c:437
+#: src/pathchk.c:109 src/pinky.c:533 src/pr.c:2875 src/printenv.c:71
+#: src/printf.c:138 src/ptx.c:1925 src/pwd.c:62 src/readlink.c:89 src/rm.c:207
+#: src/rmdir.c:155 src/seq.c:101 src/setuidgid.c:67 src/shred.c:239
+#: src/shuf.c:78 src/sleep.c:60 src/sort.c:383 src/split.c:136 src/stat.c:906
+#: src/stty.c:724 src/su.c:402 src/sum.c:75 src/sync.c:52 src/tac.c:152
+#: src/tail.c:285 src/tee.c:75 src/test.c:777 src/touch.c:263 src/tr.c:359
+#: src/true.c:54 src/tsort.c:94 src/tty.c:77 src/uname.c:136
+#: src/unexpand.c:141 src/uniq.c:170 src/unlink.c:57 src/uptime.c:208
+#: src/users.c:117 src/wc.c:129 src/who.c:668 src/whoami.c:58 src/yes.c:58
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"è«‹å‘ <%s> 回報錯誤。\n"
+
+#: src/base64.c:178 src/base64.c:215 src/csplit.c:282 src/csplit.c:1459
+#: src/join.c:243 src/shuf.c:401 src/tac-pipe.c:75 src/tee.c:204 src/tr.c:1585
+#, c-format
+msgid "read error"
+msgstr "讀å–時發生錯誤"
+
+#: src/base64.c:234
+#, fuzzy, c-format
+msgid "invalid input"
+msgstr "輸入旗標無效:%s"
+
+#: src/base64.c:271
+#, fuzzy, c-format
+msgid "invalid wrap size: %s"
+msgstr "無效的類型‘%s’"
+
+#: src/base64.c:290 src/basename.c:123 src/comm.c:278 src/cp.c:586
+#: src/date.c:435 src/dircolors.c:452 src/dirname.c:100 src/du.c:947
+#: src/hostid.c:82 src/hostname.c:120 src/id.c:160 src/install.c:352
+#: src/join.c:738 src/link.c:90 src/ln.c:493 src/logname.c:76 src/mknod.c:152
+#: src/mv.c:444 src/od.c:1842 src/ptx.c:2154 src/readlink.c:156 src/seq.c:333
+#: src/shuf.c:381 src/split.c:532 src/tr.c:1738 src/tsort.c:552 src/tty.c:117
+#: src/uname.c:222 src/uniq.c:444 src/uniq.c:461 src/unlink.c:86
+#: src/uptime.c:240 src/users.c:149 src/wc.c:643 src/who.c:822 src/whoami.c:84
+#, c-format
+msgid "extra operand %s"
+msgstr "出ç¾å¤šé¤˜çš„åƒæ•¸ %s"
+
+#: src/base64.c:316 src/cat.c:785
+#, c-format
+msgid "closing standard input"
+msgstr "關閉標準輸入"
+
+#: src/basename.c:54
+#, c-format
+msgid ""
+"Usage: %s NAME [SUFFIX]\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s 檔案å稱 [末端字元]\n"
+" 或:%s [é¸é …]\n"
+
+#: src/basename.c:59
+msgid ""
+"Print NAME with any leading directory components removed.\n"
+"If specified, also remove a trailing SUFFIX.\n"
+"\n"
+msgstr ""
+"å°å‡º <檔案å稱>,而且減去å‰é¢æ‰€æœ‰ç›®éŒ„çš„å稱。\n"
+"如果指定了 <末端字元> 的話,也會嘗試從 <檔案å稱> 末端清除該等字元。\n"
+
+#: src/basename.c:66
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"sort\".\n"
+" %s include/stdio.h .h Output \"stdio\".\n"
+msgstr ""
+
+#: src/basename.c:117 src/chgrp.c:275 src/chmod.c:492 src/chown.c:288
+#: src/chroot.c:84 src/comm.c:270 src/csplit.c:1388 src/dirname.c:94
+#: src/expr.c:211 src/join.c:904 src/link.c:82 src/mkdir.c:179
+#: src/mkfifo.c:104 src/mknod.c:141 src/nohup.c:101 src/pathchk.c:158
+#: src/printf.c:665 src/readlink.c:148 src/rm.c:344 src/rmdir.c:198
+#: src/seq.c:327 src/setuidgid.c:95 src/sleep.c:122 src/stat.c:969
+#: src/tr.c:1723 src/unlink.c:80
+#, c-format
+msgid "missing operand"
+msgstr ""
+
+#: src/cat.c:95
+#, c-format
+msgid "Usage: %s [OPTION] [FILE]...\n"
+msgstr "用法:%s [é¸é …] [檔案]...\n"
+
+#: src/cat.c:99
+msgid ""
+"Concatenate FILE(s), or standard input, to standard output.\n"
+"\n"
+" -A, --show-all equivalent to -vET\n"
+" -b, --number-nonblank number nonblank output lines\n"
+" -e equivalent to -vE\n"
+" -E, --show-ends display $ at end of each line\n"
+" -n, --number number all output lines\n"
+" -s, --squeeze-blank never more than one single blank line\n"
+msgstr ""
+"將由 <檔案> 或標準輸入讀å–的資料連çµèµ·ä¾†ï¼Œä¸¦åœ¨æ¨™æº–輸出顯示çµæžœã€‚\n"
+"\n"
+" -A, --show-all 等於 -vET\n"
+" -b, --number-nonblank 輸出時在éžç©ºç™½è¡ŒåŠ ä¸Šè¡Œè™Ÿ\n"
+" -e 等於 -vE\n"
+" -E, --show-ends 在æ¯ä¸€è¡Œæœ€å¾Œé¡¯ç¤º $ 記號\n"
+" -n, --number 輸出時加上行號\n"
+" -s, --squeeze-blank ä¸é€£çºŒè¼¸å‡ºè¶…éŽä¸€è¡Œç©ºè¡Œ\n"
+
+#: src/cat.c:109
+msgid ""
+" -t equivalent to -vT\n"
+" -T, --show-tabs display TAB characters as ^I\n"
+" -u (ignored)\n"
+" -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n"
+msgstr ""
+" -t 等於 -vT\n"
+" -T, --show-tabs 將 TAB 字元顯示為 ^I\n"
+" -u (æ­¤é¸é …ä¸ä½œè™•ç†)\n"
+" -v, --show-nonprinting 除了æ›è¡ŒåŠ TAB 字元外,使用 ^ åŠ M- 表示法顯示字"
+"å…ƒ\n"
+
+#: src/cat.c:121
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s f - g Output f's contents, then standard input, then g's contents.\n"
+" %s Copy standard input to standard output.\n"
+msgstr ""
+
+#: src/cat.c:333
+#, fuzzy, c-format
+msgid "cannot do ioctl on %s"
+msgstr "無法å°â€˜%s’執行輸出入控制 (ioctl)"
+
+#: src/cat.c:643 src/dd.c:1680 src/sort.c:294 src/tee.c:163 src/yes.c:92
+#, c-format
+msgid "standard output"
+msgstr "標準輸出"
+
+#: src/cat.c:720
+#, c-format
+msgid "%s: input file is output file"
+msgstr "%s:輸出和輸入檔案是相åŒçš„"
+
+#: src/chgrp.c:95 src/install.c:611
+#, c-format
+msgid "invalid group %s"
+msgstr "群組 %s 無效"
+
+#: src/chgrp.c:112
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... GROUP FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"用法:%s [é¸é …]... 群組 檔案...\n"
+" 或:%s [é¸é …]... --reference=åƒè€ƒæª” 檔案...\n"
+
+#: src/chgrp.c:117
+#, fuzzy
+msgid ""
+"Change the group of each FILE to GROUP.\n"
+"With --reference, change the group of each FILE to that of RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"å°‡æ¯å€‹ <檔案> 的所屬群組設定為 <群組>。\n"
+"加上 --reference 的話,會åƒè€ƒ <åƒè€ƒæª”> 的群組來設定。\n"
+"\n"
+" -c, --changes åƒ --verbose,但åªæœ‰åœ¨æ›´æ”¹å±¬æ€§æ™‚æ‰é¡¯ç¤ºçµæžœ\n"
+" --dereference 會影響符號éˆçµæ‰€æŒ‡å®šçš„目的地檔案,\n"
+" 而éžç¬¦è™Ÿéˆçµæœ¬èº« (é è¨­)\n"
+
+#: src/chgrp.c:125 src/chown.c:106
+msgid ""
+" -h, --no-dereference affect each symbolic link instead of any "
+"referenced\n"
+" file (useful only on systems that can change the\n"
+" ownership of a symlink)\n"
+msgstr ""
+" -h, --no-dereference 影響符號éˆçµæœ¬èº«ï¼Œè€Œä¸æ˜¯ç¬¦è™ŸéˆçµæŒ‡å®šçš„目的地檔案\n"
+" (åªæœ‰ç³»çµ±æ”¯æ´æ›´æ”¹ç¬¦è™Ÿéˆçµçš„æ“有者,這個é¸é …æ‰æœ‰æ•ˆ)\n"
+
+#: src/chgrp.c:130 src/chown.c:118
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+"移除指定的 <檔案>。\n"
+"\n"
+" -d, --directory 移除å¯èƒ½ä»æœ‰è³‡æ–™çš„目錄 (åªé™æœ€å¤§æ¬ŠåŠ›ä½¿ç”¨è€…使用)\n"
+" -f, --force ç•¥éŽä¸å­˜åœ¨çš„檔案,ä¸é¡¯ç¤ºä»»ä½•è¨Šæ¯\n"
+" -i, --interactive 進行任何移除æ“作å‰å¿…須先確èª\n"
+" -r, -R, --recursive åŒæ™‚移除該目錄下的所有目錄層\n"
+" -v, --verbose 詳細顯示進行的步驟\n"
+
+#: src/chgrp.c:134
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's group rather than specifying a\n"
+" GROUP value\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet 去除大部份的錯誤訊æ¯\n"
+" --reference=åƒè€ƒæª” 使用<åƒè€ƒæª”>的所屬群組,而éžè‡ªè¡ŒæŒ‡å®š<群組>\n"
+" -R, --recursive åŒæ™‚處ç†ç›®éŒ„之下的所有的檔案åŠå­ç›®éŒ„\n"
+" -v, --verbose 處ç†æ¯å€‹æª”案時都會顯示訊æ¯\n"
+
+#: src/chgrp.c:142 src/chown.c:130
+msgid ""
+"The following options modify how a hierarchy is traversed when the -R\n"
+"option is also specified. If more than one is specified, only the final\n"
+"one takes effect.\n"
+"\n"
+" -H if a command line argument is a symbolic link\n"
+" to a directory, traverse it\n"
+" -L traverse every symbolic link to a directory\n"
+" encountered\n"
+" -P do not traverse any symbolic links (default)\n"
+"\n"
+msgstr ""
+
+#: src/chgrp.c:156
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s staff /u Change the group of /u to \"staff\".\n"
+" %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n"
+msgstr ""
+
+#: src/chgrp.c:262 src/chown.c:275
+#, c-format
+msgid "-R --dereference requires either -H or -L"
+msgstr "åŒæ™‚使用 -R --dereference æ™‚é‚„éœ€è¦ -H 或 -L é¸é …"
+
+#: src/chgrp.c:277 src/chmod.c:494 src/chown.c:290 src/comm.c:272
+#: src/csplit.c:1390 src/join.c:906 src/link.c:84 src/mknod.c:143
+#: src/setuidgid.c:97 src/tr.c:1726
+#, c-format
+msgid "missing operand after %s"
+msgstr "%s 後é¢ç¼ºå°‘了åƒæ•¸"
+
+#: src/chgrp.c:285 src/chgrp.c:303 src/chmod.c:502 src/chmod.c:521
+#: src/chown.c:298 src/chown.c:327 src/cp.c:296 src/cp.c:433 src/cp.c:472
+#: src/pwd.c:267 src/rm.c:354 src/touch.c:159 src/touch.c:353
+#, c-format
+msgid "failed to get attributes of %s"
+msgstr "無法å–å¾— %s 的屬性"
+
+#: src/chmod.c:128
+#, c-format
+msgid "getting new attributes of %s"
+msgstr "正在檢查 %s 的最新屬性"
+
+#: src/chmod.c:150 src/chown-core.c:121
+#, c-format
+msgid "neither symbolic link %s nor referent has been changed\n"
+msgstr "符號éˆçµ %s 和該éˆçµæ‰€æŒ‡ç¤ºçš„å°è±¡éƒ½æ²’有更改\n"
+
+#: src/chmod.c:160
+#, c-format
+msgid "mode of %s changed to %04lo (%s)\n"
+msgstr "%s 的權é™æ¨¡å¼å·²æ›´æ”¹ç‚º %04lo (%s)\n"
+
+#: src/chmod.c:163
+#, c-format
+msgid "failed to change mode of %s to %04lo (%s)\n"
+msgstr "無法將 %s 的權é™æ¨¡å¼æ›´æ”¹ç‚º %04lo (%s)\n"
+
+#: src/chmod.c:166
+#, c-format
+msgid "mode of %s retained as %04lo (%s)\n"
+msgstr "%s 的權é™æ¨¡å¼ä¿ç•™ç‚º %04lo (%s)\n"
+
+#: src/chmod.c:209 src/chown-core.c:302 src/copy.c:145 src/du.c:498
+#: src/ls.c:2644
+#, c-format
+msgid "cannot access %s"
+msgstr "ç„¡æ³•å­˜å– %s"
+
+#: src/chmod.c:214 src/chown-core.c:307 src/du.c:503
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: src/chmod.c:219 src/chown-core.c:312 src/du.c:509
+#, c-format
+msgid "cannot read directory %s"
+msgstr "無法讀å–目錄 %s 的內容"
+
+#: src/chmod.c:251
+#, c-format
+msgid "changing permissions of %s"
+msgstr "正在更改 %s 的權é™"
+
+#: src/chmod.c:286
+#, fuzzy, c-format
+msgid "%s: new permissions are %s, not %s"
+msgstr "正在更改 %s 的權é™"
+
+#: src/chmod.c:320 src/chown-core.c:498 src/du.c:653
+#, c-format
+msgid "fts_read failed"
+msgstr "fts_read 失敗"
+
+#: src/chmod.c:345
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... MODE[,MODE]... FILE...\n"
+" or: %s [OPTION]... OCTAL-MODE FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"用法:%s [é¸é …]... 模å¼[,模å¼]... 檔案...\n"
+" 或:%s [é¸é …]... 八進ä½æ¨¡å¼ 檔案...\n"
+" 或:%s [é¸é …]... --reference=åƒè€ƒæª” 檔案...\n"
+
+#: src/chmod.c:351
+msgid ""
+"Change the mode of each FILE to MODE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is "
+"made\n"
+msgstr ""
+"更改æ¯å€‹<檔案>的權é™ã€‚\n"
+"\n"
+" -c, --changes åƒ --verbose,但åªæœ‰åœ¨æ›´æ”¹å±¬æ€§æ™‚æ‰é¡¯ç¤ºçµæžœ\n"
+
+#: src/chmod.c:356
+msgid ""
+" --no-preserve-root do not treat `/' specially (the default)\n"
+" --preserve-root fail to operate recursively on `/'\n"
+msgstr ""
+
+#: src/chmod.c:360
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+" --reference=RFILE use RFILE's mode instead of MODE values\n"
+" -R, --recursive change files and directories recursively\n"
+msgstr ""
+" -f, --silent, --quiet 去除大部份的錯誤訊æ¯\n"
+" -v, --verbose 處ç†æ¯å€‹æª”案時都會顯示訊æ¯\n"
+" --reference=åƒè€ƒæª” 使用<åƒè€ƒæª”>的權é™ï¼Œè€Œéžè‡ªè¡ŒæŒ‡å®š<權é™>\n"
+" -R, --recursive åŒæ™‚處ç†ç›®éŒ„之下的所有的檔案åŠå­ç›®éŒ„\n"
+
+#: src/chmod.c:368
+msgid ""
+"\n"
+"Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n"
+msgstr ""
+
+#: src/chmod.c:479
+#, c-format
+msgid "cannot combine mode and --reference options"
+msgstr "如果自行指定權é™ï¼Œä¸å¯åŒæ™‚é…åˆ --reference é¸é …一起使用"
+
+#: src/chmod.c:510
+#, c-format
+msgid "invalid mode: %s"
+msgstr "權é™ç„¡æ•ˆ: %s"
+
+#: src/chown-core.c:147
+#, c-format
+msgid "changed ownership of %s to %s\n"
+msgstr "%s çš„æ“有者已更改為 %s\n"
+
+#: src/chown-core.c:148
+#, c-format
+msgid "changed group of %s to %s\n"
+msgstr "%s 的所屬群組已更改為 %s\n"
+
+#: src/chown-core.c:149
+#, c-format
+msgid "no change to ownership of %s\n"
+msgstr "沒有更改 %s çš„æ“有者\n"
+
+#: src/chown-core.c:152
+#, c-format
+msgid "failed to change ownership of %s to %s\n"
+msgstr "無法將 %s çš„æ“有者更改為 %s\n"
+
+#: src/chown-core.c:153
+#, c-format
+msgid "failed to change group of %s to %s\n"
+msgstr "無法將 %s 的所屬群組更改為 %s\n"
+
+#: src/chown-core.c:154
+#, c-format
+msgid "failed to change ownership of %s\n"
+msgstr "無法更改 %s çš„æ“有者\n"
+
+#: src/chown-core.c:157
+#, c-format
+msgid "ownership of %s retained as %s\n"
+msgstr "%s çš„æ“有者已ä¿ç•™ç‚º %s\n"
+
+#: src/chown-core.c:158
+#, c-format
+msgid "group of %s retained as %s\n"
+msgstr "%s的所屬群組已ä¿ç•™ç‚º %s\n"
+
+#: src/chown-core.c:159
+#, c-format
+msgid "ownership of %s retained\n"
+msgstr "ä¿ç•™ %s çš„æ“有者\n"
+
+#: src/chown-core.c:344
+#, c-format
+msgid "cannot dereference %s"
+msgstr ""
+
+#: src/chown-core.c:432
+#, c-format
+msgid "changing ownership of %s"
+msgstr "正在更改 %s çš„æ“有者"
+
+#: src/chown-core.c:433
+#, c-format
+msgid "changing group of %s"
+msgstr "正在更改 %s 的所屬群組"
+
+#: src/chown.c:93
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n"
+" or: %s [OPTION]... --reference=RFILE FILE...\n"
+msgstr ""
+"用法:%s [é¸é …]... [æ“有者][:[群組]] 檔案...\n"
+" 或:%s [é¸é …]... --reference=åƒè€ƒæª” 檔案...\n"
+
+#: src/chown.c:98
+#, fuzzy
+msgid ""
+"Change the owner and/or group of each FILE to OWNER and/or GROUP.\n"
+"With --reference, change the owner and group of each FILE to those of "
+"RFILE.\n"
+"\n"
+" -c, --changes like verbose but report only when a change is made\n"
+" --dereference affect the referent of each symbolic link (this is\n"
+" the default), rather than the symbolic link itself\n"
+msgstr ""
+"更改æ¯å€‹ <檔案> çš„ <æ“有者> åŠ/或 <所屬群組>。\n"
+"\n"
+" -c, --changes åƒ --verbose,但åªåœ¨æœ‰æ›´æ”¹æ™‚æ‰é¡¯ç¤ºçµæžœ\n"
+" --dereference å—影響的是符號éˆçµæ‰€æŒ‡ç¤ºçš„å°è±¡ï¼Œè€Œéžç¬¦è™Ÿéˆçµæœ¬èº«\n"
+
+#: src/chown.c:111
+msgid ""
+" --from=CURRENT_OWNER:CURRENT_GROUP\n"
+" change the owner and/or group of each file only if\n"
+" its current owner and/or group match those "
+"specified\n"
+" here. Either may be omitted, in which case a "
+"match\n"
+" is not required for the omitted attribute.\n"
+msgstr ""
+" --from=ç›®å‰æ“有者:ç›®å‰ç¾¤çµ„\n"
+" åªç•¶æ¯å€‹æª”案的æ“有者和群組符åˆé¸é …所指定的,\n"
+" æ‰æœƒæ›´æ”¹æ“有者和群組。其中一個å¯ä»¥çœç•¥ï¼Œé€™æ™‚\n"
+" å·²çœç•¥çš„屬性就ä¸éœ€è¦ç¬¦åˆåŽŸæœ‰çš„屬性。\n"
+
+#: src/chown.c:122
+#, fuzzy
+msgid ""
+" -f, --silent, --quiet suppress most error messages\n"
+" --reference=RFILE use RFILE's owner and group rather than\n"
+" specifying OWNER:GROUP values\n"
+" -R, --recursive operate on files and directories recursively\n"
+" -v, --verbose output a diagnostic for every file processed\n"
+"\n"
+msgstr ""
+" -f, --silent, --quiet 去除大部份的錯誤訊æ¯\n"
+" --reference=åƒè€ƒæª” 使用<åƒè€ƒæª”>çš„æ“有者和所屬群組,而éžæŒ‡ä»¤ä¸­æŒ‡å®šçš„\n"
+" -R, --recursive 處ç†æ‰€æœ‰ç›®éŒ„中的檔案åŠå­ç›®éŒ„\n"
+" -v, --verbose 處ç†ä»»ä½•æª”案都會顯示訊æ¯\n"
+
+#: src/chown.c:144
+msgid ""
+"\n"
+"Owner is unchanged if missing. Group is unchanged if missing, but changed\n"
+"to login group if implied by a `:' following a symbolic OWNER.\n"
+"OWNER and GROUP may be numeric as well as symbolic.\n"
+msgstr ""
+"\n"
+"如果沒有指定 <æ“有者>,則ä¸æœƒæ›´æ”¹ã€‚<群組> 也一樣,\n"
+"但如果æ“有者後加上 ‘:’,<群組> 會更改為æ“有者的主è¦ç¾¤çµ„。\n"
+"<æ“有者> åŠ <群組> å¯ä»¥æ˜¯æ•¸å­—或å稱。\n"
+
+#: src/chown.c:150
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s root /u Change the owner of /u to \"root\".\n"
+" %s root:staff /u Likewise, but also change its group to \"staff\".\n"
+" %s -hR root /u Change the owner of /u and subfiles to \"root\".\n"
+msgstr ""
+
+#: src/chroot.c:46
+#, c-format
+msgid ""
+"Usage: %s NEWROOT [COMMAND...]\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s 根目錄 [指令...]\n"
+" 或:%s é¸é …\n"
+
+#: src/chroot.c:50
+msgid ""
+"Run COMMAND with root directory set to NEWROOT.\n"
+"\n"
+msgstr ""
+"以新的目錄作為 <根目錄> 並執行 <指令>。\n"
+"\n"
+
+#: src/chroot.c:56
+msgid ""
+"\n"
+"If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n"
+msgstr ""
+
+#: src/chroot.c:89
+#, c-format
+msgid "cannot change root directory to %s"
+msgstr "無法以 %s 作為根目錄"
+
+#: src/chroot.c:92
+#, c-format
+msgid "cannot chdir to root directory"
+msgstr ""
+
+#: src/chroot.c:115 src/nohup.c:212 src/setuidgid.c:126
+#, c-format
+msgid "cannot run command %s"
+msgstr "無法執行 %s 指令"
+
+#: src/cksum.c:217
+#, c-format
+msgid "%s: file too long"
+msgstr "%s:檔案éŽå¤§"
+
+#: src/cksum.c:265
+#, c-format
+msgid ""
+"Usage: %s [FILE]...\n"
+" or: %s [OPTION]\n"
+msgstr ""
+"用法:%s [檔案]...\n"
+" 或:%s [é¸é …]\n"
+
+#: src/cksum.c:270
+msgid ""
+"Print CRC checksum and byte counts of each FILE.\n"
+"\n"
+msgstr ""
+"å°å‡ºæ¯å€‹ <檔案> çš„ CRC 總和檢查值åŠä½å…ƒçµ„總數。\n"
+"\n"
+
+#: src/comm.c:73 src/join.c:134
+#, c-format
+msgid "Usage: %s [OPTION]... FILE1 FILE2\n"
+msgstr "用法:%s [é¸é …]... 檔案1 檔案2\n"
+
+#: src/comm.c:77
+msgid "Compare sorted files FILE1 and FILE2 line by line.\n"
+msgstr "é€è¡Œæ¯”較兩個已排åºçš„ <檔案1> åŠ <檔案2>。\n"
+
+#: src/comm.c:80
+msgid ""
+"\n"
+"With no options, produce three-column output. Column one contains\n"
+"lines unique to FILE1, column two contains lines unique to FILE2,\n"
+"and column three contains lines common to both files.\n"
+msgstr ""
+"\n"
+"ä¸åŠ é¸é …的話,程å¼æœƒç”¢ç”Ÿä¸‰æ¬„內容。第一欄的內容åªåœ¨ <檔案1> 出ç¾ï¼Œ\n"
+"第二欄的åªåœ¨ <檔案2> 出ç¾ï¼Œç¬¬ä¸‰æ¬„的則åŒæ™‚在兩個檔案內出ç¾ã€‚\n"
+
+#: src/comm.c:86
+msgid ""
+"\n"
+" -1 suppress lines unique to FILE1\n"
+" -2 suppress lines unique to FILE2\n"
+" -3 suppress lines that appear in both files\n"
+msgstr ""
+"\n"
+" -1 ä¸é¡¯ç¤ºä»»ä½•ä¸€è¡Œåªåœ¨ FILE1 出ç¾éŽçš„資料\n"
+" -2 ä¸é¡¯ç¤ºä»»ä½•ä¸€è¡Œåªåœ¨ FILE2 出ç¾éŽçš„資料\n"
+" -3 ä¸é¡¯ç¤ºå…©å€‹æª”案中åŒæ™‚出ç¾çš„任何一行\n"
+
+#: src/copy.c:199 src/copy.c:1776 src/cp.c:325
+#, c-format
+msgid "failed to preserve ownership for %s"
+msgstr "無法ä¿ç•™%sçš„æ“有者åŠæ‰€å±¬ç¾¤çµ„"
+
+#: src/copy.c:222
+#, c-format
+msgid "failed to lookup file %s"
+msgstr ""
+
+#: src/copy.c:227
+#, fuzzy, c-format
+msgid "failed to preserve authorship for %s"
+msgstr "無法ä¿ç•™%s的著作者"
+
+#: src/copy.c:277 src/csplit.c:649 src/du.c:954 src/fmt.c:431 src/head.c:849
+#: src/split.c:539 src/tac.c:544 src/tail.c:1293 src/wc.c:655
+#, c-format
+msgid "cannot open %s for reading"
+msgstr "無法開啟 %s 來讀å–資料"
+
+#: src/copy.c:283 src/copy.c:336 src/dd.c:1724 src/tail.c:1129 src/tail.c:1195
+#, c-format
+msgid "cannot fstat %s"
+msgstr "無法 fstat %s"
+
+#: src/copy.c:293
+#, c-format
+msgid "skipping file %s, as it was replaced while being copied"
+msgstr "ç•¥éŽæª”案 %s,因為準備複製時它已被其它檔案å–代"
+
+#: src/copy.c:309 src/copy.c:1120 src/copy.c:1297 src/copy.c:1404 src/ln.c:271
+#: src/remove.c:839 src/remove.c:1002 src/remove.c:1038 src/remove.c:1064
+#: src/remove.c:1080 src/remove.c:1087 src/remove.c:1251 src/remove.c:1338
+#: src/remove.c:1499
+#, c-format
+msgid "cannot remove %s"
+msgstr "無法移除 %s"
+
+#: src/copy.c:314 src/copy.c:1115 src/copy.c:1302 src/copy.c:1408
+#: src/remove.c:910
+#, c-format
+msgid "removed %s\n"
+msgstr "已移除%s\n"
+
+#: src/copy.c:329
+#, c-format
+msgid "cannot create regular file %s"
+msgstr "無法建立普通檔案 %s"
+
+#: src/copy.c:421 src/dd.c:1172 src/dd.c:1485
+#, c-format
+msgid "reading %s"
+msgstr "è®€å– %s"
+
+#: src/copy.c:467 src/head.c:428
+#, c-format
+msgid "cannot lseek %s"
+msgstr "無法 lseek %s"
+
+#: src/copy.c:480 src/copy.c:508 src/dd.c:1542 src/dd.c:1604
+#, c-format
+msgid "writing %s"
+msgstr "寫入 %s"
+
+#: src/copy.c:523 src/copy.c:1823
+#, c-format
+msgid "preserving times for %s"
+msgstr "ä¿ç•™%s的時間"
+
+#: src/copy.c:576 src/copy.c:582 src/head.c:857 src/touch.c:191
+#, c-format
+msgid "closing %s"
+msgstr "關閉 %s"
+
+#: src/copy.c:805
+#, fuzzy, c-format
+msgid "%s: try to overwrite %s, overriding mode %04lo (%s)? "
+msgstr "%s:是å¦è¦†å¯« %s,而ä¸ç†æœƒæ¬Šé™æ¨¡å¼ %04lo? "
+
+#: src/copy.c:812
+#, c-format
+msgid "%s: overwrite %s? "
+msgstr "%s:是å¦è¦†å¯« %s? "
+
+#: src/copy.c:994
+#, c-format
+msgid " (backup: %s)"
+msgstr " (備份:%s)"
+
+#: src/copy.c:1048
+#, c-format
+msgid "omitting directory %s"
+msgstr "ç•¥éŽ %s 目錄"
+
+#: src/copy.c:1062
+#, c-format
+msgid "warning: source file %s specified more than once"
+msgstr "警告:指定了來æºæª” %s 多於一次"
+
+#: src/copy.c:1093 src/ln.c:209
+#, c-format
+msgid "%s and %s are the same file"
+msgstr "%s åŠ %s 為åŒä¸€æª”案"
+
+#: src/copy.c:1149
+#, c-format
+msgid "cannot overwrite non-directory %s with directory %s"
+msgstr "ä¸å¯ä»¥å°‡ç›®éŒ„ %2$s 覆寫éžç›®éŒ„ %1$s"
+
+#: src/copy.c:1167
+#, c-format
+msgid "will not overwrite just-created %s with %s"
+msgstr "ä¸æœƒä»¥ %2$s 覆寫剛建立的 %1$s"
+
+#: src/copy.c:1185
+#, c-format
+msgid "cannot overwrite directory %s with non-directory"
+msgstr "ä¸å¯ä»¥å°‡ç›®éŒ„ %s 覆寫æˆéžç›®éŒ„"
+
+#: src/copy.c:1223
+#, c-format
+msgid "cannot move directory onto non-directory: %s -> %s"
+msgstr "移動目錄時目的地ä¸å¯ä»¥ä¸æ˜¯ç›®éŒ„:%s -> %s"
+
+#: src/copy.c:1253
+#, c-format
+msgid "backing up %s would destroy source; %s not moved"
+msgstr "å°‡ %s 備份會破壞來æºæª”,因此ä¸ç§»å‹• %s。"
+
+#: src/copy.c:1254
+#, c-format
+msgid "backing up %s would destroy source; %s not copied"
+msgstr "å°‡ %s 備份會破壞來æºæª”,因此ä¸è¤‡è£½ %s。"
+
+#: src/copy.c:1273 src/ln.c:239
+#, c-format
+msgid "cannot backup %s"
+msgstr "無法備份%s"
+
+#: src/copy.c:1372
+#, c-format
+msgid "cannot copy a directory, %s, into itself, %s"
+msgstr "ä¸å¯ä»¥å°‡ç›®éŒ„ %s 複製æˆç‚ºè‡ªèº« (%s)"
+
+#: src/copy.c:1389
+#, c-format
+msgid "will not create hard link %s to directory %s"
+msgstr "ä¸æœƒå»ºç«‹é€£è‡³ç›®éŒ„ %2$s 的實際éˆçµ (hard link) %1$s"
+
+#: src/copy.c:1414
+#, c-format
+msgid "cannot create hard link %s to %s"
+msgstr "ä¸å¯ä»¥å»ºç«‹é€£è‡³ %2$s 的實際éˆçµ (hard link) %1$s"
+
+#: src/copy.c:1459
+#, c-format
+msgid "cannot move %s to a subdirectory of itself, %s"
+msgstr "ä¸å¯ä»¥å°‡ç›®éŒ„ %s 複製至自身的å­ç›®éŒ„ (%s)"
+
+#: src/copy.c:1502
+#, c-format
+msgid "cannot move %s to %s"
+msgstr "無法將 %s 移動至 %s"
+
+#: src/copy.c:1514
+#, c-format
+msgid "inter-device move failed: %s to %s; unable to remove target"
+msgstr "無法進行跨è£ç½®çš„移動 (%s至%s);無法移除目標檔案或目錄"
+
+#: src/copy.c:1553
+#, c-format
+msgid "cannot copy cyclic symbolic link %s"
+msgstr "無法複製循環的符號éˆçµ%s"
+
+#: src/copy.c:1654
+#, c-format
+msgid "%s: can make relative symbolic links only in current directory"
+msgstr "%s:åªèƒ½æ–¼ç›®å‰çš„目錄中建立相å°ç¬¦è™Ÿéˆçµ"
+
+#: src/copy.c:1661
+#, c-format
+msgid "cannot create symbolic link %s to %s"
+msgstr "ä¸å¯ä»¥å»ºç«‹é€£è‡³ %2$s 的符號éˆçµ %1$s"
+
+#: src/copy.c:1686
+#, c-format
+msgid "cannot create link %s"
+msgstr "無法建立 %s éˆçµ"
+
+#: src/copy.c:1713 src/mkfifo.c:124
+#, c-format
+msgid "cannot create fifo %s"
+msgstr "無法建立 FIFO %s"
+
+#: src/copy.c:1722
+#, c-format
+msgid "cannot create special file %s"
+msgstr "無法建立特殊檔案 %s"
+
+#: src/copy.c:1732 src/ls.c:2803 src/stat.c:503
+#, c-format
+msgid "cannot read symbolic link %s"
+msgstr "無法讀å–符號éˆçµ %s"
+
+#: src/copy.c:1759
+#, c-format
+msgid "cannot create symbolic link %s"
+msgstr "無法建立符號éˆçµ %s"
+
+#: src/copy.c:1790
+#, c-format
+msgid "%s has unknown file type"
+msgstr "%s的檔案類型ä¸è©³"
+
+#: src/copy.c:1910 src/ln.c:308
+#, c-format
+msgid "cannot un-backup %s"
+msgstr "無法將 %s 的備份還原"
+
+#: src/copy.c:1914
+#, c-format
+msgid "%s -> %s (unbackup)\n"
+msgstr "%s -> %s (還原備份)\n"
+
+#: src/cp.c:157 src/mv.c:284
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+msgstr ""
+"用法:%s [é¸é …]... [-T] ä¾†æº ç›®çš„åœ°\n"
+" 或:%s [é¸é …]... 來æº... 目錄\n"
+" 或:%s [é¸é …]... -t 目錄 來æº...\n"
+
+#: src/cp.c:163
+msgid ""
+"Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"å°‡ <來æº> 檔案複製至 <目的地>,或將多個 <檔案> 複製至指定 <目錄>。\n"
+"\n"
+
+#: src/cp.c:167 src/csplit.c:1483 src/cut.c:196 src/df.c:746 src/du.c:287
+#: src/expand.c:120 src/fmt.c:279 src/fold.c:79 src/head.c:119
+#: src/install.c:664 src/kill.c:100 src/ln.c:339 src/ls.c:4282 src/mkdir.c:64
+#: src/mkfifo.c:59 src/mknod.c:61 src/mv.c:294 src/nl.c:186 src/paste.c:427
+#: src/pr.c:2776 src/ptx.c:1891 src/shred.c:171 src/shuf.c:61 src/sort.c:314
+#: src/split.c:116 src/tac.c:142 src/tail.c:226 src/touch.c:238
+#: src/unexpand.c:130 src/uniq.c:144
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr "é•·é¸é …必須用的åƒæ•¸åœ¨ä½¿ç”¨çŸ­é¸é …時也是必須的。\n"
+
+#: src/cp.c:170
+#, fuzzy
+msgid ""
+" -a, --archive same as -dpPR\n"
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" --copy-contents copy contents of special files when "
+"recursive\n"
+" -d same as --no-dereference --preserve=link\n"
+msgstr ""
+" -a, --archive 等於 -dpR\n"
+" --backup[=CONTROL] 為æ¯å€‹å·²å­˜åœ¨çš„目的地檔案建立備份檔\n"
+" -b é¡žä¼¼ --backup,但ä¸æŽ¥å—任何åƒæ•¸\n"
+" --copy-contents 當使用éžè¿´æ¨¡å¼æ™‚複製特殊檔案的內容\n"
+" -d 等於 --no-dereference --preserve=link\n"
+
+#: src/cp.c:177
+#, fuzzy
+msgid ""
+" -f, --force if an existing destination file cannot be\n"
+" opened, remove it and try again\n"
+" -i, --interactive prompt before overwrite\n"
+" -H follow command-line symbolic links\n"
+msgstr ""
+" --no-dereference ä¸æœƒæ‰¾å‡ºç¬¦è™ŸéˆçµæŒ‡ç¤ºçš„真正目的地\n"
+" -f, --force 如果無法開啟已存在的檔案,會移除該檔案並å†\n"
+" 嘗試開啟\n"
+" -i, --interactive 覆寫檔案å‰éœ€è¦ç¢ºèª\n"
+" -H 使用指令列中的符號éˆçµæŒ‡ç¤ºçš„真正目的地\n"
+
+#: src/cp.c:183
+msgid ""
+" -l, --link link files instead of copying\n"
+" -L, --dereference always follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:187
+msgid " -P, --no-dereference never follow symbolic links\n"
+msgstr ""
+
+#: src/cp.c:190
+#, fuzzy
+msgid ""
+" -p same as --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] preserve the specified attributes (default:\n"
+" mode,ownership,timestamps), if possible\n"
+" additional attributes: links, all\n"
+msgstr ""
+" -l, --link 連çµè€Œéžè¤‡è£½æª”案\n"
+" -L, --dereference 一定先找出符號éˆçµæŒ‡ç¤ºçš„真正目的地\n"
+" -p 等於 --preserve=mode,ownership,timestamps\n"
+" --preserve[=ATTR_LIST] è‹¥å¯èƒ½ï¼Œä¿ç•™æŒ‡å®šçš„檔案屬性\n"
+" (é è¨­å€¼ç‚ºï¼šmode,ownership,timestamps)\n"
+" é¡å¤–的屬性有:linksã€all\n"
+
+#: src/cp.c:196
+#, fuzzy
+msgid ""
+" --no-preserve=ATTR_LIST don't preserve the specified attributes\n"
+" --parents use full source file name under DIRECTORY\n"
+msgstr ""
+" --no-preserve=ATTR_LIST ä¸ä¿ç•™æŒ‡å®šçš„檔案屬性\n"
+" --parents 複製å‰å…ˆåœ¨ <目錄> 建立來æºè·¯å¾‘中的所有目錄\n"
+" -P 等於 ‘--no-dereference’\n"
+
+#: src/cp.c:200
+msgid ""
+" -R, -r, --recursive copy directories recursively\n"
+" --remove-destination remove each existing destination file before\n"
+" attempting to open it (contrast with --"
+"force)\n"
+msgstr ""
+" -R, -r, --recursive 複製目錄åŠç›®éŒ„內的所有項目\n"
+" --remove-destination 嘗試開啟目的地檔案å‰å…ˆç§»é™¤å·²å­˜åœ¨çš„目的地\n"
+" 檔案 (與 --force é¸é …ä¸åŒ)\n"
+
+#: src/cp.c:205
+#, fuzzy
+msgid ""
+" --sparse=WHEN control creation of sparse files\n"
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+msgstr ""
+" --reply={yes,no,query} 指定如何處ç†å·²å­˜åœ¨çš„目的地檔案\n"
+" --sparse=WHEN 控制建立 sparse 檔案的方å¼\n"
+" --strip-trailing-slashes 移除åƒæ•¸ä¸­æ‰€æœ‰ <來æº> 檔案/目錄末端的斜號\n"
+
+#: src/cp.c:210
+msgid ""
+" -s, --symbolic-link make symbolic links instead of copying\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+msgstr ""
+" -s, --symbolic-link åªå»ºç«‹ç¬¦è™Ÿéˆçµè€Œä¸æ˜¯è¤‡è£½æª”案\n"
+" -S, --suffix=後置字串 自行指定備份檔的 <後置字串>\n"
+" -t, --target-directory=目錄 將所有 <來æº> 檔案/目錄複製至指定的 <目錄>\n"
+" -T, --no-target-directory å°‡ <目的地> 看作普通檔案處ç†\n"
+
+#: src/cp.c:216
+msgid ""
+" -u, --update copy only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+" -x, --one-file-system stay on this file system\n"
+msgstr ""
+" -u, --update åªåœ¨ <來æº> 檔案比目的地檔案新,\n"
+" 或目的地檔案ä¸å­˜åœ¨æ™‚æ‰é€²è¡Œè¤‡è£½\n"
+" -v, --verbose 詳細顯示進行的步驟\n"
+" -x, --one-file-system ä¸æœƒè·¨è¶Šæª”案系統進行æ“作\n"
+
+#: src/cp.c:225
+msgid ""
+"\n"
+"By default, sparse SOURCE files are detected by a crude heuristic and the\n"
+"corresponding DEST file is made sparse as well. That is the behavior\n"
+"selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n"
+"file whenever the SOURCE file contains a long enough sequence of zero "
+"bytes.\n"
+"Use --sparse=never to inhibit creation of sparse files.\n"
+"\n"
+msgstr ""
+"\n"
+"é è¨­æ¨¡å¼ä¸­ï¼Œ<來æº> æª”æ¡ˆæ˜¯å¦ sparse 檔案會經粗略的估計來決定,而且相應\n"
+"çš„ <目的地> 檔案也會是 sparse 檔案。此方å¼ç­‰æ–¼ä½¿ç”¨ --sparse=auto é¸é …。指定\n"
+"--sparse=always 則åªè¦ <來æº> 檔å«æœ‰è¶³å¤ é•·çš„ 0 ä½å…ƒçµ„都會產生 sparse çš„\n"
+"<目的地> 檔案。使用 --sparse=never 會ç¦æ­¢ç”¢ç”Ÿ sparse 檔案。\n"
+"\n"
+
+#: src/cp.c:234
+msgid ""
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"備份檔的後置字串為 ‘~’,除éžä»¥ --suffix é¸é …或是 SIMPLE_BACKUP_SUFFIX\n"
+"環境變數指定。版本控制的方å¼å¯é€éŽ --backup é¸é …或 VERSION_CONTROL 環境\n"
+"變數來é¸æ“‡ã€‚以下是å¯ç”¨çš„變數值:\n"
+"\n"
+
+#: src/cp.c:240 src/install.c:699 src/ln.c:372 src/mv.c:325
+msgid ""
+" none, off never make backups (even if --backup is given)\n"
+" numbered, t make numbered backups\n"
+" existing, nil numbered if numbered backups exist, simple otherwise\n"
+" simple, never always make simple backups\n"
+msgstr ""
+" none, off ä¸æœƒé€²è¡Œå‚™ä»½ (å³ä½¿ä½¿ç”¨äº† --backup é¸é …也ä¸æœƒ)\n"
+" numbered, t 備份檔會加上數字\n"
+" existing, nil 若有數字的備份檔已經存在則使用數字,å¦å‰‡ä½¿ç”¨æ™®é€šæ–¹å¼å‚™ä»½\n"
+" simple, never æ°¸é ä½¿ç”¨æ™®é€šæ–¹å¼å‚™ä»½\n"
+
+#: src/cp.c:246
+msgid ""
+"\n"
+"As a special case, cp makes a backup of SOURCE when the force and backup\n"
+"options are given and SOURCE and DEST are the same name for an existing,\n"
+"regular file.\n"
+msgstr ""
+"\n"
+"有一個特別情æ³ï¼šå¦‚æžœåŒæ™‚指定 --force å’Œ --backup é¸é …,而且 <來æº> å’Œ\n"
+"<目的地> 是åŒä¸€å€‹å·²å­˜åœ¨çš„普通檔案的話,cp 會將 <來æº> 檔案備份。\n"
+
+#: src/cp.c:314
+#, c-format
+msgid "failed to preserve times for %s"
+msgstr "無法ä¿ç•™ %s 的時間"
+
+#: src/cp.c:340
+#, c-format
+msgid "failed to preserve permissions for %s"
+msgstr "無法ä¿ç•™ %s 的權é™"
+
+#: src/cp.c:456
+#, c-format
+msgid "cannot make directory %s"
+msgstr "無法建立目錄 %s"
+
+#: src/cp.c:505 src/cp.c:524
+#, c-format
+msgid "%s exists but is not a directory"
+msgstr "%s已存在但ä¸æ˜¯ç›®éŒ„"
+
+#: src/cp.c:551 src/cp.c:990 src/install.c:192 src/install.c:298 src/ln.c:120
+#: src/ln.c:148 src/ln.c:177 src/ln.c:446 src/mv.c:154 src/mv.c:396
+#, c-format
+msgid "accessing %s"
+msgstr "æ­£åœ¨å­˜å– %s"
+
+#: src/cp.c:571 src/install.c:337 src/ln.c:476 src/mv.c:429 src/shred.c:1186
+#: src/touch.c:412
+#, c-format
+msgid "missing file operand"
+msgstr "缺少了檔案作為åƒæ•¸"
+
+#: src/cp.c:573 src/install.c:339 src/ln.c:490 src/mv.c:431
+#, c-format
+msgid "missing destination file operand after %s"
+msgstr "%s 後缺少了目的地檔案"
+
+#: src/cp.c:582 src/install.c:348 src/mv.c:440
+#, c-format
+msgid "Cannot combine --target-directory (-t) and --no-target-directory (-T)"
+msgstr "--target-directory (-t) å’Œ --no-target-directory (-T) ä¸å¯åŒæ™‚使用"
+
+#: src/cp.c:596 src/cp.c:992 src/install.c:194 src/install.c:300
+#: src/install.c:361 src/ln.c:122 src/ln.c:448 src/ln.c:504 src/mv.c:398
+#: src/mv.c:454
+#, c-format
+msgid "target %s is not a directory"
+msgstr "目的地 %s ä¸æ˜¯ç›®éŒ„"
+
+#: src/cp.c:697
+#, fuzzy, c-format
+msgid "with --parents, the destination must be a directory"
+msgstr "當ä¿ç•™è·¯å¾‘時,目的地必須是目錄"
+
+#: src/cp.c:967 src/mv.c:384
+#, fuzzy, c-format
+msgid "the --reply option is deprecated; use -i or -f instead"
+msgstr ""
+"警告:--version-control (-V) é¸é …已經éŽæ™‚;將來的版本隨時å¯èƒ½ä¸å†æ”¯æ´\n"
+"æ­¤é¸é …。請使用 --backup=%s。"
+
+#: src/cp.c:985 src/install.c:293 src/ln.c:441 src/mv.c:391
+#, c-format
+msgid "multiple target directories specified"
+msgstr "指定了多於一個目的地目錄"
+
+#: src/cp.c:1030
+#, c-format
+msgid "cannot make both hard and symbolic links"
+msgstr "無法åŒæ™‚建立實際åŠç¬¦è™Ÿéˆçµ"
+
+#: src/cp.c:1038 src/install.c:327 src/ln.c:512 src/mv.c:462
+msgid "backup type"
+msgstr "備份方å¼"
+
+#: src/csplit.c:541
+#, c-format
+msgid "input disappeared"
+msgstr "輸入資料消失了"
+
+#: src/csplit.c:669 src/csplit.c:680
+#, c-format
+msgid "%s: line number out of range"
+msgstr "%s:行號超出範åœä»¥å¤–"
+
+#: src/csplit.c:709
+#, fuzzy, c-format
+msgid "%s: %s: line number out of range"
+msgstr "%s:‘%s’:行號超出範åœä»¥å¤–"
+
+#: src/csplit.c:712 src/csplit.c:761
+#, c-format
+msgid " on repetition %s\n"
+msgstr ""
+
+#: src/csplit.c:755
+#, fuzzy, c-format
+msgid "%s: %s: match not found"
+msgstr "%s:‘%s’:找ä¸åˆ°ç¬¦åˆçš„字串"
+
+#: src/csplit.c:819 src/csplit.c:859 src/nl.c:354 src/tac.c:275
+#, c-format
+msgid "error in regular expression search"
+msgstr "在正è¦é‹ç®—å¼æœå°‹æ™‚發生錯誤"
+
+#: src/csplit.c:984
+#, fuzzy, c-format
+msgid "write error for %s"
+msgstr "寫入‘%s’時發生錯誤"
+
+#: src/csplit.c:1060
+#, c-format
+msgid "%s: integer expected after delimiter"
+msgstr "%s:分隔符號後應該是整數"
+
+#: src/csplit.c:1076
+#, c-format
+msgid "%s: `}' is required in repeat count"
+msgstr "%s:é‡è¤‡çš„數目後應該是 ‘}’ å­—å…ƒ"
+
+#: src/csplit.c:1086
+#, c-format
+msgid "%s}: integer required between `{' and `}'"
+msgstr "%s}:‘{’ 和 ‘}’ 之間必須是整數"
+
+#: src/csplit.c:1113
+#, c-format
+msgid "%s: closing delimiter `%c' missing"
+msgstr "%s:缺少了å°é–‰åˆ†éš”符號 ‘%c’"
+
+#: src/csplit.c:1130
+#, c-format
+msgid "%s: invalid regular expression: %s"
+msgstr "%s:無效的正è¦è¡¨ç¤ºå¼ï¼š%s"
+
+#: src/csplit.c:1163
+#, c-format
+msgid "%s: invalid pattern"
+msgstr "%s:無效的樣å¼"
+
+#: src/csplit.c:1166
+#, c-format
+msgid "%s: line number must be greater than zero"
+msgstr "%s:行號必須大於零"
+
+#: src/csplit.c:1172
+#, fuzzy, c-format
+msgid "line number %s is smaller than preceding line number, %s"
+msgstr "行號 ‘%s’ å°æ–¼ä¹‹å‰çš„行號 ‘%s’"
+
+#: src/csplit.c:1178
+#, fuzzy, c-format
+msgid "warning: line number %s is the same as preceding line number"
+msgstr "警告:行號 ‘%s’ 和之å‰çš„行號一樣"
+
+#: src/csplit.c:1231
+#, c-format
+msgid "invalid format width"
+msgstr ""
+
+#: src/csplit.c:1252
+#, c-format
+msgid "invalid format precision"
+msgstr ""
+
+#: src/csplit.c:1273
+#, c-format
+msgid "missing conversion specifier in suffix"
+msgstr "後置字串缺少了字串轉æ›å­—符"
+
+#: src/csplit.c:1279
+#, c-format
+msgid "invalid conversion specifier in suffix: %c"
+msgstr "後置字串的字串轉æ›å­—符無效:%c"
+
+#: src/csplit.c:1282
+#, c-format
+msgid "invalid conversion specifier in suffix: \\%.3o"
+msgstr "後置字串的字串轉æ›å­—符無效:\\%.3o"
+
+#: src/csplit.c:1305
+#, c-format
+msgid "too many %% conversion specifications in suffix"
+msgstr "後置字串å«æœ‰éŽå¤šçš„ %% 字串轉æ›è¦æ ¼"
+
+#: src/csplit.c:1320
+#, c-format
+msgid "missing %% conversion specification in suffix"
+msgstr "後置字串缺少了 %% 字串轉æ›è¦æ ¼"
+
+#: src/csplit.c:1364
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s:無效的號碼"
+
+#: src/csplit.c:1474
+#, c-format
+msgid "Usage: %s [OPTION]... FILE PATTERN...\n"
+msgstr "用法:%s [é¸é …]... 檔案 樣å¼...\n"
+
+#: src/csplit.c:1478
+msgid ""
+"Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n"
+"and output byte counts of each piece to standard output.\n"
+"\n"
+msgstr ""
+"根據 <樣å¼> 分割 <檔案>,並將之輸出至 ‘xx01’ã€â€˜xx02’ 等等的檔案,\n"
+"åŒæ™‚在標準輸出顯示æ¯å€‹åˆ†å‰²éƒ¨ä»½çš„ä½å…ƒçµ„數目。\n"
+
+#: src/csplit.c:1486
+#, fuzzy, c-format
+msgid ""
+" -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n"
+" -f, --prefix=PREFIX use PREFIX instead of `xx'\n"
+" -k, --keep-files do not remove output files on errors\n"
+msgstr ""
+" -b, --suffix-format=æ ¼å¼ ä»¥ sprintf çš„ <æ ¼å¼> 代替 %02d\n"
+" -f, --prefix=å‰ç½®å­—串 以 <å‰ç½®å­—串> 代替 ‘xx’\n"
+" -k, --keep-files é‡åˆ°éŒ¯èª¤æ™‚ä¸ç§»é™¤è¼¸å‡ºæª”\n"
+
+#: src/csplit.c:1491
+msgid ""
+" -n, --digits=DIGITS use specified number of digits instead of 2\n"
+" -s, --quiet, --silent do not print counts of output file sizes\n"
+" -z, --elide-empty-files remove empty output files\n"
+msgstr ""
+" -n, --digits=ä½æ•¸ 使用指定ä½æ•¸çš„數字而ä¸æ˜¯ 2 個ä½\n"
+" -s, --quiet, --silent ä¸å°å‡ºè¼¸å‡ºæª”的大å°\n"
+" -z, --elide-empty-files 移除空白的輸出檔\n"
+
+#: src/csplit.c:1498
+msgid ""
+"\n"
+"Read standard input if FILE is -. Each PATTERN may be:\n"
+msgstr ""
+"\n"
+"è‹¥ <檔案> 是 - 則由標準輸入讀å–資料。æ¯ä¸€å€‹ <樣å¼> å¯ä»¥æ˜¯ï¼š\n"
+
+#: src/csplit.c:1502
+msgid ""
+"\n"
+" INTEGER copy up to but not including specified line number\n"
+" /REGEXP/[OFFSET] copy up to but not including a matching line\n"
+" %REGEXP%[OFFSET] skip to, but not including a matching line\n"
+" {INTEGER} repeat the previous pattern specified number of times\n"
+" {*} repeat the previous pattern as many times as possible\n"
+"\n"
+"A line OFFSET is a required `+' or `-' followed by a positive integer.\n"
+msgstr ""
+"\n"
+" 整數 複製直至指定行數之å‰çš„一行\n"
+" /æ­£è¦è¡¨ç¤ºå¼/[å移值] 複製直至符åˆè¡¨ç¤ºå¼ä¹‹å‰çš„一行\n"
+" %æ­£è¦è¡¨ç¤ºå¼%[å移值] 忽略直至符åˆè¡¨ç¤ºå¼ä¹‹å‰çš„一行\n"
+" {整數} 將之å‰çš„樣å¼é‡è¤‡æŒ‡å®šçš„次數\n"
+" {*} 將之å‰çš„樣å¼é‡è¤‡æœ€å¤§å¯èƒ½çš„次數\n"
+"\n"
+"行號å移值是一個(必須的)‘+’或‘-’字元加上一個正整數。\n"
+
+#: src/cut.c:188 src/df.c:740 src/expand.c:111 src/fold.c:70 src/head.c:109
+#: src/ls.c:4276 src/nl.c:177 src/paste.c:417 src/pr.c:2767 src/sort.c:306
+#: src/sum.c:59 src/tac.c:133 src/tail.c:216 src/tee.c:62 src/unexpand.c:121
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr "用法:%s [é¸é …]... [檔案]...\n"
+
+#: src/cut.c:192
+msgid ""
+"Print selected parts of lines from each FILE to standard output.\n"
+"\n"
+msgstr "在標準輸出中顯示æ¯å€‹ <檔案> æ¯ä¸€è¡Œä¸­æŒ‡å®šçš„部份。\n"
+
+#: src/cut.c:199
+msgid ""
+" -b, --bytes=LIST select only these bytes\n"
+" -c, --characters=LIST select only these characters\n"
+" -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n"
+msgstr ""
+" -b, --bytes=LIST åªé¡¯ç¤ºæŒ‡å®šçš„ä½å…ƒçµ„\n"
+" -c, --characters=LIST åªé¡¯ç¤ºæŒ‡å®šçš„å­—å…ƒ\n"
+" -d, --delimiter=DELIM 以 DELIM 字元代替 TAB 作為欄ä½çš„分隔符號\n"
+
+#: src/cut.c:204
+msgid ""
+" -f, --fields=LIST select only these fields; also print any line\n"
+" that contains no delimiter character, unless\n"
+" the -s option is specified\n"
+" -n (ignored)\n"
+msgstr ""
+" -f, --fields=LIST åªé¡¯ç¤ºæŒ‡å®šçš„欄ä½ï¼›åŒæ™‚也å°å‡ºä¸å«åˆ†éš”符號的\n"
+" æ¯ä¸€è¡Œï¼Œé™¤éžé…åˆ -s é¸é …一起使用\n"
+" -n (ä¸æœƒä½œä»»ä½•è™•ç†)\n"
+
+#: src/cut.c:210
+msgid ""
+" --complement complement the set of selected bytes, characters\n"
+" or fields.\n"
+msgstr ""
+
+#: src/cut.c:214
+msgid ""
+" -s, --only-delimited do not print lines not containing delimiters\n"
+" --output-delimiter=STRING use STRING as the output delimiter\n"
+" the default is to use the input delimiter\n"
+msgstr ""
+" -s, --only-delimited ä¸å°å‡ºä¸å«åˆ†éš”符號的æ¯ä¸€è¡Œ\n"
+" --output-delimiter=字串 以 <字串> 作為輸出資料的分隔符號\n"
+" é è¨­æ˜¯ä½¿ç”¨è¼¸å…¥è³‡æ–™çš„分隔符號\n"
+
+#: src/cut.c:221
+msgid ""
+"\n"
+"Use one, and only one of -b, -c or -f. Each LIST is made up of one\n"
+"range, or many ranges separated by commas. Selected input is written\n"
+"in the same order that it is read, and is written exactly once.\n"
+msgstr ""
+
+#: src/cut.c:227
+#, fuzzy
+msgid ""
+"Each range is one of:\n"
+"\n"
+" N N'th byte, character or field, counted from 1\n"
+" N- from N'th byte, character or field, to end of line\n"
+" N-M from N'th to M'th (included) byte, character or field\n"
+" -M from first to M'th (included) byte, character or field\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"å¿…é ˆæ°å¥½æŒ‡å®š -bã€-c 或 -f 其中一個é¸é …。æ¯å€‹ LIST 是由一個範åœæˆ–\n"
+"多個以逗號分隔的範åœçµ„æˆçš„。輸出çµæžœå’Œè®€å–資料的次åºæ˜¯ä¸€æ¨£çš„,而且åªæœƒ\n"
+"寫一次。æ¯å€‹ç¯„åœå¯ä»¥æ˜¯ï¼š\n"
+"\n"
+" N ç”± 1 開始計算,åªå–第 N 個ä½å…ƒçµ„ã€å­—元或欄ä½\n"
+" N- 由第 N 個ä½å…ƒçµ„ã€å­—元或欄ä½ç›´è‡³è¡Œæœ«\n"
+" N-M 由第 N 至第 M(包括在內)個ä½å…ƒçµ„ã€å­—元或欄ä½\n"
+" -M 由第 1 至第 M(包括在內)個ä½å…ƒçµ„ã€å­—元或欄ä½\n"
+"\n"
+"如果沒有指定 <檔案> 或 <檔案> 是 -,則由標準輸入讀å–資料。\n"
+
+#: src/cut.c:365 src/cut.c:397 src/cut.c:480
+msgid "invalid byte or field list"
+msgstr "無效的ä½å…ƒçµ„或欄ä½é¸é …"
+
+#: src/cut.c:469
+#, c-format
+msgid "byte offset %s is too large"
+msgstr "ä½å…ƒçµ„ä½ç½® %s éŽå¤§"
+
+#: src/cut.c:472
+#, c-format
+msgid "field number %s is too large"
+msgstr "欄ä½æ•¸ç›® %s éŽå¤§"
+
+#: src/cut.c:776 src/cut.c:784
+msgid "only one type of list may be specified"
+msgstr "指定ä½ç½®æ™‚åªèƒ½ä½¿ç”¨ä¸€ç¨®æ ¼å¼"
+
+#: src/cut.c:793
+msgid "the delimiter must be a single character"
+msgstr "分隔符號必須是æ°å¥½ä¸€å€‹å­—å…ƒ"
+
+#: src/cut.c:828
+msgid "you must specify a list of bytes, characters, or fields"
+msgstr "必須指定一系列的ä½å…ƒçµ„ã€å­—元或欄ä½"
+
+#: src/cut.c:831
+msgid "an input delimiter may be specified only when operating on fields"
+msgstr "åªæœ‰åœ¨è™•ç†æ¬„ä½æ™‚æ‰èƒ½æŒ‡å®šåˆ†éš”符號"
+
+#: src/cut.c:835
+msgid ""
+"suppressing non-delimited lines makes sense\n"
+"\tonly when operating on fields"
+msgstr "åªæœ‰åœ¨è™•ç†æ¬„ä½æ™‚æ‰å¯ä»¥åŽ»é™¤æ²’有分隔符號的æ¯ä¸€è¡Œ"
+
+#: src/cut.c:851
+msgid "missing list of fields"
+msgstr "缺少了欄ä½æ•¸å€¼"
+
+#: src/cut.c:853
+msgid "missing list of positions"
+msgstr "缺少了表示ä½ç½®çš„數值"
+
+#: src/date.c:132
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [+FORMAT]\n"
+" or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n"
+msgstr ""
+
+#: src/date.c:137
+msgid ""
+"Display the current time in the given FORMAT, or set the system date.\n"
+"\n"
+" -d, --date=STRING display time described by STRING, not `now'\n"
+" -f, --file=DATEFILE like --date once for each line of DATEFILE\n"
+msgstr ""
+
+#: src/date.c:143
+msgid ""
+" -r, --reference=FILE display the last modification time of FILE\n"
+" -R, --rfc-2822 output date and time in RFC 2822 format.\n"
+" Example: Mon, 07 Aug 2006 12:34:56 -0600\n"
+msgstr ""
+
+#: src/date.c:148
+msgid ""
+" --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n"
+" TIMESPEC=`date', `seconds', or `ns' for\n"
+" date and time to the indicated precision.\n"
+" Date and time components are separated by\n"
+" a single space: 2006-08-07 12:34:56-06:00\n"
+" -s, --set=STRING set time described by STRING\n"
+" -u, --utc, --universal print or set Coordinated Universal Time\n"
+msgstr ""
+
+#: src/date.c:159
+msgid ""
+"\n"
+"FORMAT controls the output. The only valid option for the second form\n"
+"specifies Coordinated Universal Time. Interpreted sequences are:\n"
+"\n"
+" %% a literal %\n"
+" %a locale's abbreviated weekday name (e.g., Sun)\n"
+msgstr ""
+
+#: src/date.c:167
+msgid ""
+" %A locale's full weekday name (e.g., Sunday)\n"
+" %b locale's abbreviated month name (e.g., Jan)\n"
+" %B locale's full month name (e.g., January)\n"
+" %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n"
+msgstr ""
+
+#: src/date.c:173
+msgid ""
+" %C century; like %Y, except omit last two digits (e.g., 21)\n"
+" %d day of month (e.g, 01)\n"
+" %D date; same as %m/%d/%y\n"
+" %e day of month, space padded; same as %_d\n"
+msgstr ""
+
+#: src/date.c:179
+msgid ""
+" %F full date; same as %Y-%m-%d\n"
+" %g last two digits of year of ISO week number (see %G)\n"
+" %G year of ISO week number (see %V); normally useful only with %V\n"
+msgstr ""
+
+#: src/date.c:184
+msgid ""
+" %h same as %b\n"
+" %H hour (00..23)\n"
+" %I hour (01..12)\n"
+" %j day of year (001..366)\n"
+msgstr ""
+
+#: src/date.c:190
+msgid ""
+" %k hour ( 0..23)\n"
+" %l hour ( 1..12)\n"
+" %m month (01..12)\n"
+" %M minute (00..59)\n"
+msgstr ""
+
+#: src/date.c:196
+msgid ""
+" %n a newline\n"
+" %N nanoseconds (000000000..999999999)\n"
+" %p locale's equivalent of either AM or PM; blank if not known\n"
+" %P like %p, but lower case\n"
+" %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n"
+" %R 24-hour hour and minute; same as %H:%M\n"
+" %s seconds since 1970-01-01 00:00:00 UTC\n"
+msgstr ""
+
+#: src/date.c:205
+msgid ""
+" %S second (00..60)\n"
+" %t a tab\n"
+" %T time; same as %H:%M:%S\n"
+" %u day of week (1..7); 1 is Monday\n"
+msgstr ""
+
+#: src/date.c:211
+msgid ""
+" %U week number of year, with Sunday as first day of week (00..53)\n"
+" %V ISO week number, with Monday as first day of week (01..53)\n"
+" %w day of week (0..6); 0 is Sunday\n"
+" %W week number of year, with Monday as first day of week (00..53)\n"
+msgstr ""
+
+#: src/date.c:217
+msgid ""
+" %x locale's date representation (e.g., 12/31/99)\n"
+" %X locale's time representation (e.g., 23:13:48)\n"
+" %y last two digits of year (00..99)\n"
+" %Y year\n"
+msgstr ""
+
+#: src/date.c:223
+msgid ""
+" %z +hhmm numeric timezone (e.g., -0400)\n"
+" %:z +hh:mm numeric timezone (e.g., -04:00)\n"
+" %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n"
+" %:::z numeric time zone with : to necessary precision (e.g., -04, "
+"+05:30)\n"
+" %Z alphabetic time zone abbreviation (e.g., EDT)\n"
+"\n"
+"By default, date pads numeric fields with zeroes.\n"
+msgstr ""
+
+#: src/date.c:232
+msgid ""
+"The following optional flags may follow `%':\n"
+"\n"
+" - (hyphen) do not pad the field\n"
+" _ (underscore) pad with spaces\n"
+" 0 (zero) pad with zeros\n"
+" ^ use upper case if possible\n"
+" # use opposite case if possible\n"
+msgstr ""
+
+#: src/date.c:241
+msgid ""
+"\n"
+"After any flags comes an optional field width, as a decimal number;\n"
+"then an optional modifier, which is either\n"
+"E to use the locale's alternate representations if available, or\n"
+"O to use the locale's alternate numeric symbols if available.\n"
+msgstr ""
+
+#: src/date.c:269 src/dd.c:1664 src/head.c:840 src/md5sum.c:434
+#: src/md5sum.c:720 src/od.c:912 src/od.c:1934 src/pr.c:1178 src/pr.c:1380
+#: src/pr.c:1502 src/stty.c:844 src/tac.c:535 src/tail.c:1652 src/tee.c:126
+#: src/tr.c:1893 src/tsort.c:527 src/wc.c:188
+#, c-format
+msgid "standard input"
+msgstr "標準輸出"
+
+#: src/date.c:297 src/date.c:517
+#, fuzzy, c-format
+msgid "invalid date %s"
+msgstr "日期無效:‘%s’"
+
+#: src/date.c:408 src/date.c:442
+#, fuzzy, c-format
+msgid "multiple output formats specified"
+msgstr "正在關閉輸出檔%s"
+
+#: src/date.c:420
+#, c-format
+msgid "the options to specify dates for printing are mutually exclusive"
+msgstr "å°å‡ºæ—¥æœŸæ‰€ç”¨çš„é¸é …是互相矛盾的"
+
+#: src/date.c:427
+#, c-format
+msgid "the options to print and set the time may not be used together"
+msgstr "å°å‡ºæ—¥æœŸå’Œè¨­å®šæ—¥æœŸçš„é¸é …ä¸å¯ä»¥åŒæ™‚使用"
+
+#: src/date.c:448
+#, c-format
+msgid ""
+"the argument %s lacks a leading `+';\n"
+"When using an option to specify date(s), any non-option\n"
+"argument must be a format string beginning with `+'."
+msgstr ""
+
+#: src/date.c:525
+#, c-format
+msgid "cannot set date"
+msgstr "無法設定時間"
+
+#: src/date.c:548 src/du.c:425
+#, c-format
+msgid "time %s is out of range"
+msgstr "時間 %s 超出å¯æŽ¥å—的範åœ"
+
+#: src/dd.c:404
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPERAND]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s [檔案]...\n"
+" 或:%s [é¸é …]\n"
+
+#: src/dd.c:409
+msgid ""
+"Copy a file, converting and formatting according to the operands.\n"
+"\n"
+" bs=BYTES force ibs=BYTES and obs=BYTES\n"
+" cbs=BYTES convert BYTES bytes at a time\n"
+" conv=CONVS convert the file as per the comma separated symbol list\n"
+" count=BLOCKS copy only BLOCKS input blocks\n"
+" ibs=BYTES read BYTES bytes at a time\n"
+msgstr ""
+"複製檔案,並根據以下的é¸é …將資料轉æ›å’Œæ ¼å¼åŒ–。\n"
+"\n"
+" bs=ä½å…ƒçµ„ å¼·è¿« ibs=<ä½å…ƒçµ„> åŠ obs=<ä½å…ƒçµ„>\n"
+" cbs=ä½å…ƒçµ„ æ¯æ¬¡è½‰æ›æŒ‡å®šçš„ <ä½å…ƒçµ„>\n"
+" conv=é—œéµå­— 根據以逗號分隔的關éµå­—表示的方å¼ä¾†è½‰æ›æª”案\n"
+" count=å€æ®µæ•¸ç›® åªè¤‡è£½æŒ‡å®š <å€æ®µæ•¸ç›®> 的輸入資料\n"
+" ibs=ä½å…ƒçµ„ æ¯æ¬¡è®€å–指定的 <ä½å…ƒçµ„>\n"
+
+#: src/dd.c:418
+#, fuzzy
+msgid ""
+" if=FILE read from FILE instead of stdin\n"
+" iflag=FLAGS read as per the comma separated symbol list\n"
+" obs=BYTES write BYTES bytes at a time\n"
+" of=FILE write to FILE instead of stdout\n"
+" oflag=FLAGS write as per the comma separated symbol list\n"
+" seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n"
+" skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n"
+" status=noxfer suppress transfer statistics\n"
+msgstr ""
+" if=檔案 è®€å– <檔案> 內容而éžæ¨™æº–輸入的資料\n"
+" obs=ä½å…ƒçµ„ æ¯æ¬¡å¯«å…¥æŒ‡å®šçš„ <ä½å…ƒçµ„>\n"
+" of=檔案 將資料寫入 <檔案> 而ä¸åœ¨æ¨™æº–輸出顯示\n"
+" seek=å€æ®µæ•¸ç›® 先略éŽä»¥ obs 為單ä½çš„指定 <å€æ®µæ•¸ç›®> 的輸出資料\n"
+" skip=å€æ®µæ•¸ç›® 先略éŽä»¥ ibs 為單ä½çš„指定 <å€æ®µæ•¸ç›®> 的輸入資料\n"
+" status=noxfer ä¸é¡¯ç¤ºè¼¸å…¥/輸出çµæžœ\n"
+
+#: src/dd.c:428
+msgid ""
+"\n"
+"BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n"
+"xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n"
+"GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n"
+"\n"
+"Each CONV symbol may be:\n"
+"\n"
+msgstr ""
+"\n"
+"<å€æ®µæ•¸ç›®> åŠ <ä½å…ƒçµ„> å¯ä»¥åŠ ä¸Šä»¥ä¸‹çš„å–®ä½ï¼š\n"
+"xM=M,c=1,w=2,b=512,kB=1000,K=1024,MB=1000000,M=1048576,\n"
+"GB=1000*1000*1000,G=1024*1024*1024,還有 T/P/E/Z/Y 如此類推。\n"
+"æ¯å€‹ <é—œéµå­—> å¯ä»¥æ˜¯ï¼š\n"
+
+#: src/dd.c:437
+msgid ""
+" ascii from EBCDIC to ASCII\n"
+" ebcdic from ASCII to EBCDIC\n"
+" ibm from ASCII to alternate EBCDIC\n"
+" block pad newline-terminated records with spaces to cbs-size\n"
+" unblock replace trailing spaces in cbs-size records with newline\n"
+" lcase change upper case to lower case\n"
+msgstr ""
+" ascii ç”± EBCDIC 轉æ›è‡³ ASCII\n"
+" ebcdic ç”± ASCII 轉æ›è‡³ EBCDIC\n"
+" ibm ç”± ASCII 轉æ›è‡³ alternate EBCDIC\n"
+" block 將以 newline 作為çµæŸå­—元的å€æ®µçš„ newline æ›æˆç©ºæ ¼ï¼Œ\n"
+" 直至空格填滿 cbs 表示的大å°\n"
+" unblock 會將 cbs 大å°çš„å€æ®µä¸­æ‰€æœ‰çµæŸçš„空格刪除,\n"
+" 並轉æ›ç‚ºä¸€å€‹ newline å­—å…ƒ\n"
+" lcase 將大寫字元轉æ›ç‚ºå°å¯«\n"
+
+#: src/dd.c:445
+#, fuzzy
+msgid ""
+" nocreat do not create the output file\n"
+" excl fail if the output file already exists\n"
+" notrunc do not truncate the output file\n"
+" ucase change lower case to upper case\n"
+" swab swap every pair of input bytes\n"
+msgstr ""
+" nocreat 輸出檔ä¸å­˜åœ¨çš„話ä¸æœƒå¯«å‡ºçµæžœ\n"
+" excl 如果輸出檔已經存在則作為失敗處ç†\n"
+" notrunc ä¸æˆªæ–·è¼¸å‡ºæª”\n"
+" ucase å°‡å°å¯«å­—元轉æ›ç‚ºå¤§å¯«\n"
+" swab 交æ›æ¯ä¸€å°è¼¸å…¥è³‡æ–™ä½å…ƒçµ„\n"
+" noerror 讀å–資料發生錯誤後ä»ç„¶ç¹¼çºŒ\n"
+" sync å°‡æ¯å€‹è¼¸å…¥è³‡æ–™å€æ®µä»¥ NUL 字元填滿至 ibs 的大å°ï¼›\n"
+" 當é…åˆ block 或 unblock 時,會以空格代替 NUL 字元填充\n"
+" fdatasync 真正將資料寫入ç£ç¢Ÿå¾Œæ‰çµæŸç¨‹å¼\n"
+" fsync 類似 fdatasync,並寫入元資料\n"
+
+#: src/dd.c:452
+#, fuzzy
+msgid ""
+" noerror continue after read errors\n"
+" sync pad every input block with NULs to ibs-size; when used\n"
+" with block or unblock, pad with spaces rather than NULs\n"
+" fdatasync physically write output file data before finishing\n"
+" fsync likewise, but also write metadata\n"
+msgstr ""
+" nocreat 輸出檔ä¸å­˜åœ¨çš„話ä¸æœƒå¯«å‡ºçµæžœ\n"
+" excl 如果輸出檔已經存在則作為失敗處ç†\n"
+" notrunc ä¸æˆªæ–·è¼¸å‡ºæª”\n"
+" ucase å°‡å°å¯«å­—元轉æ›ç‚ºå¤§å¯«\n"
+" swab 交æ›æ¯ä¸€å°è¼¸å…¥è³‡æ–™ä½å…ƒçµ„\n"
+" noerror 讀å–資料發生錯誤後ä»ç„¶ç¹¼çºŒ\n"
+" sync å°‡æ¯å€‹è¼¸å…¥è³‡æ–™å€æ®µä»¥ NUL 字元填滿至 ibs 的大å°ï¼›\n"
+" 當é…åˆ block 或 unblock 時,會以空格代替 NUL 字元填充\n"
+" fdatasync 真正將資料寫入ç£ç¢Ÿå¾Œæ‰çµæŸç¨‹å¼\n"
+" fsync 類似 fdatasync,並寫入元資料\n"
+
+#: src/dd.c:459
+msgid ""
+"\n"
+"Each FLAG symbol may be:\n"
+"\n"
+" append append mode (makes sense only for output; conv=notrunc "
+"suggested)\n"
+msgstr ""
+
+#: src/dd.c:466
+msgid " direct use direct I/O for data\n"
+msgstr ""
+
+#: src/dd.c:468
+#, fuzzy
+msgid " directory fail unless a directory\n"
+msgstr "建立目錄時ä¸èƒ½æŒ‡å®šç›®çš„地目錄"
+
+#: src/dd.c:470
+msgid " dsync use synchronized I/O for data\n"
+msgstr ""
+
+#: src/dd.c:472
+msgid " sync likewise, but also for metadata\n"
+msgstr ""
+
+#: src/dd.c:474
+msgid " nonblock use non-blocking I/O\n"
+msgstr ""
+
+#: src/dd.c:476
+msgid " noatime do not update access time\n"
+msgstr ""
+
+#: src/dd.c:478
+msgid " noctty do not assign controlling terminal from file\n"
+msgstr ""
+
+#: src/dd.c:481
+msgid " nofollow do not follow symlinks\n"
+msgstr ""
+
+#: src/dd.c:483
+msgid " nolinks fail if multiply-linked\n"
+msgstr ""
+
+#: src/dd.c:485
+msgid " binary use binary I/O for data\n"
+msgstr ""
+
+#: src/dd.c:487
+msgid " text use text I/O for data\n"
+msgstr ""
+
+#: src/dd.c:491
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Sending a %s signal to a running `dd' process makes it\n"
+"print I/O statistics to standard error and then resume copying.\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -%s $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"Options are:\n"
+"\n"
+msgstr ""
+"\n"
+"å°‡ SIGUSR1 訊號é€è‡³åŸ·è¡Œä¸­çš„ ‘dd’ 進程時,會在標準錯誤顯示 I/O 統計資料,\n"
+"然後繼續執行程å¼ã€‚\n"
+"\n"
+" $ dd if=/dev/zero of=/dev/null& pid=$!\n"
+" $ kill -USR1 $pid; sleep 1; kill $pid\n"
+" 18335302+0 records in\n"
+" 18335302+0 records out\n"
+" 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n"
+"\n"
+"é¸é …包括:\n"
+"\n"
+
+#: src/dd.c:547
+#, c-format
+msgid ""
+"%<PRIuMAX>+%<PRIuMAX> records in\n"
+"%<PRIuMAX>+%<PRIuMAX> records out\n"
+msgstr ""
+
+#: src/dd.c:553
+#, fuzzy, c-format
+msgid "%<PRIuMAX> truncated record\n"
+msgid_plural "%<PRIuMAX> truncated records\n"
+msgstr[0] "個被截斷了的å€æ®µ"
+
+#: src/dd.c:565
+#, fuzzy, c-format
+msgid "%<PRIuMAX> byte (%s) copied"
+msgid_plural "%<PRIuMAX> bytes (%s) copied"
+msgstr[0] "複製了 %s ä½å…ƒçµ„ (%s)"
+
+#: src/dd.c:583
+#, fuzzy
+msgid "Infinity B"
+msgstr "ç„¡é™"
+
+#. TRANSLATORS: The two instances of "s" in this string are the SI
+#. symbol "s" (meaning second), and should not be translated.
+#.
+#. This format used to be:
+#.
+#. ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+#.
+#. but that was incorrect for languages like Polish. To fix this
+#. bug we now use SI symbols even though they're a bit more
+#. confusing in English.
+#: src/dd.c:596
+#, fuzzy, c-format
+msgid ", %g s, %s/s\n"
+msgstr ",%g 秒,%s/s\n"
+
+#: src/dd.c:604
+#, c-format
+msgid "closing input file %s"
+msgstr "正在關閉輸入檔 %s"
+
+#: src/dd.c:611
+#, c-format
+msgid "closing output file %s"
+msgstr "正在關閉輸出檔%s"
+
+#: src/dd.c:791 src/dd.c:1455
+#, c-format
+msgid "writing to %s"
+msgstr "正在寫入 %s"
+
+#: src/dd.c:886
+#, c-format
+msgid "unrecognized operand %s"
+msgstr "無法識別åƒæ•¸ %s"
+
+#: src/dd.c:897
+#, c-format
+msgid "invalid conversion: %s"
+msgstr "轉æ›ç”¨çš„é—œéµå­—無效:%s"
+
+#: src/dd.c:900
+#, c-format
+msgid "invalid input flag: %s"
+msgstr "輸入旗標無效:%s"
+
+#: src/dd.c:903
+#, c-format
+msgid "invalid output flag: %s"
+msgstr "輸出旗標無效:%s"
+
+#: src/dd.c:906
+#, c-format
+msgid "invalid status flag: %s"
+msgstr "狀態旗標無效:%s"
+
+#: src/dd.c:942
+#, c-format
+msgid "unrecognized operand %s=%s"
+msgstr "無法識別åƒæ•¸ %s=%s"
+
+#: src/dd.c:948
+#, c-format
+msgid "invalid number %s"
+msgstr "數字 %s 無效"
+
+#: src/dd.c:971
+#, c-format
+msgid "cannot combine any two of {ascii,ebcdic,ibm}"
+msgstr "ä¸å¯åŒæ™‚使用 ascii, ebcdic, ibm 中的任何二個"
+
+#: src/dd.c:973
+#, c-format
+msgid "cannot combine block and unblock"
+msgstr "ä¸å¯åŒæ™‚使用 block å’Œ unblock"
+
+#: src/dd.c:975
+#, c-format
+msgid "cannot combine lcase and ucase"
+msgstr "ä¸å¯åŒæ™‚使用 lcase å’Œ ucase"
+
+#: src/dd.c:977
+#, c-format
+msgid "cannot combine excl and nocreat"
+msgstr "ä¸å¯åŒæ™‚使用 excl å’Œ nocreat"
+
+#: src/dd.c:1123
+#, c-format
+msgid ""
+"warning: working around lseek kernel bug for file (%s)\n"
+" of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"
+msgstr ""
+"警告:暫時é¿å…有關檔案 (%s) çš„ lseek 核心錯誤,檔案的 mt_type=0x%0lx ─\n"
+" 有關 mt_type 類型的清單請åƒè€ƒ <sys/mtio.h>"
+
+#: src/dd.c:1180 src/dd.c:1237
+#, c-format
+msgid "%s: cannot seek"
+msgstr "%s:無法æœå°‹"
+
+#: src/dd.c:1217
+#, c-format
+msgid "offset overflow while reading file %s"
+msgstr ""
+
+#: src/dd.c:1229
+#, fuzzy, c-format
+msgid "warning: invalid file offset after failed read"
+msgstr "警告:寬度 %lu 是無效的;以 %d 代替"
+
+#: src/dd.c:1233
+#, c-format
+msgid "cannot work around kernel bug after all"
+msgstr "無法é¿é–‹ç³»çµ±æ ¸å¿ƒçš„錯誤"
+
+#: src/dd.c:1376
+#, c-format
+msgid "setting flags for %s"
+msgstr ""
+
+#: src/dd.c:1613
+#, c-format
+msgid "fdatasync failed for %s"
+msgstr "%s 的 fdatasync 失敗"
+
+#: src/dd.c:1623
+#, c-format
+msgid "fsync failed for %s"
+msgstr "%s 的 fsync 失敗"
+
+#: src/dd.c:1670 src/dd.c:1699
+#, c-format
+msgid "opening %s"
+msgstr "開啟 %s 中"
+
+#: src/dd.c:1709
+#, c-format
+msgid ""
+"offset too large: cannot truncate to a length of seek=%<PRIuMAX> (%lu-byte) "
+"blocks"
+msgstr ""
+
+#: src/dd.c:1730
+#, fuzzy, c-format
+msgid "truncating at %<PRIuMAX> bytes in output file %s"
+msgstr "ç•¥éŽè¼¸å‡ºæª”%2$sçš„æœ€åˆ %1$s 個ä½å…ƒçµ„"
+
+#: src/df.c:151
+msgid "Filesystem Type"
+msgstr "檔案系統 類型"
+
+#: src/df.c:153
+msgid "Filesystem "
+msgstr "檔案系統 "
+
+#: src/df.c:156
+#, c-format
+msgid " Inodes IUsed IFree IUse%%"
+msgstr " Inode I已用 Iå¯ç”¨ I已用%%"
+
+#: src/df.c:160
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " å®¹é‡ å·²ç”¨ å¯ç”¨ 已用%%"
+
+#: src/df.c:162
+#, c-format
+msgid " Size Used Avail Use%%"
+msgstr " å®¹é‡ å·²ç”¨ å¯ç”¨ 已用%%"
+
+#: src/df.c:165
+#, fuzzy, c-format
+msgid " %s-blocks Used Available Capacity"
+msgstr " %4s-å€æ®µ 已用 å¯ç”¨ 容é‡"
+
+#: src/df.c:196
+#, c-format
+msgid " %4s-blocks Used Available Use%%"
+msgstr " %4s-å€æ®µ 已用 å¯ç”¨ 已用%%"
+
+#: src/df.c:200
+#, c-format
+msgid " Mounted on\n"
+msgstr " 掛載點\n"
+
+#: src/df.c:468
+#, c-format
+msgid "cannot get current directory"
+msgstr "無法讀å–ç›®å‰çš„目錄ä½ç½®"
+
+#: src/df.c:478 src/df.c:492 src/df.c:520
+#, c-format
+msgid "cannot change to directory %s"
+msgstr "無法進入 %s 目錄"
+
+#: src/df.c:498
+#, c-format
+msgid "cannot stat current directory (now %s)"
+msgstr "無法 stat ç›®å‰çš„目錄 (ç¾åœ¨æ˜¯ %s)"
+
+#: src/df.c:741
+msgid ""
+"Show information about the file system on which each FILE resides,\n"
+"or all file systems by default.\n"
+"\n"
+msgstr ""
+"顯示æ¯å€‹ <檔案> 所在的檔案系統的資訊,é è¨­æ˜¯é¡¯ç¤ºæ‰€æœ‰æª”案系統。\n"
+"\n"
+
+#: src/df.c:749
+#, fuzzy
+msgid ""
+" -a, --all include dummy file systems\n"
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" -H, --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all 包括大å°ç‚º 0 個å€æ®µçš„檔案系統\n"
+" -B, --block-size=å¤§å° å€æ®µä»¥æŒ‡å®š <大å°> çš„ä½å…ƒçµ„為單ä½\n"
+" -h, --human-readable 以容易ç†è§£çš„æ ¼å¼å°å‡ºæª”æ¡ˆç³»çµ±å¤§å° (例如 1K 234M 2G)\n"
+" -H, --si é¡žä¼¼ -h,但以 1000 為單ä½è€Œä¸æ˜¯ 1024\n"
+
+#: src/df.c:755
+msgid ""
+" -i, --inodes list inode information instead of block usage\n"
+" -k like --block-size=1K\n"
+" -l, --local limit listing to local file systems\n"
+" --no-sync do not invoke sync before getting usage info "
+"(default)\n"
+msgstr ""
+" -i, --inodes 顯示 inode 資訊而éžç©ºé–“使用é‡\n"
+" -k å³ --block-size=1K\n"
+" -l, --local åªé¡¯ç¤ºæœ¬æ©Ÿçš„檔案系統\n"
+" --no-sync å–得使用é‡è³‡æ–™å‰ä¸é€²è¡Œ sync 動作 (é è¨­)\n"
+
+#: src/df.c:761
+msgid ""
+" -P, --portability use the POSIX output format\n"
+" --sync invoke sync before getting usage info\n"
+" -t, --type=TYPE limit listing to file systems of type TYPE\n"
+" -T, --print-type print file system type\n"
+" -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n"
+" -v (ignored)\n"
+msgstr ""
+" -P, --portability 使用 POSIX 輸出格å¼\n"
+" --sync å–得使用é‡è³‡æ–™å‰å…ˆé€²è¡Œ sync 動作\n"
+" -t, --type=é¡žåž‹ åªå°å‡ºæŒ‡å®š <é¡žåž‹> 的檔案系統資訊\n"
+" -T, --print-type å°å‡ºæª”案系統類型\n"
+" -x, --exclude-type=é¡žåž‹ åªå°å‡ºä¸æ˜¯æŒ‡å®š <é¡žåž‹> 的檔案系統資訊\n"
+" -v (æ­¤é¸é …ä¸ä½œè™•ç†)\n"
+
+#: src/df.c:771 src/du.c:343 src/ls.c:4410
+msgid ""
+"\n"
+"SIZE may be (or may be an integer optionally followed by) one of following:\n"
+"kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n"
+msgstr ""
+"\n"
+"<大å°> å¯ä»¥æ˜¯ä»¥ä¸‹çš„å–®ä½ (å–®ä½å‰å¯åŠ ä¸Šæ•´æ•¸):\n"
+"kB=1000,K=1024,MB=1000*1000,M=1024*1024,還有 G/T/P/E/Z/Y 如此類推。\n"
+
+#: src/df.c:829 src/du.c:762 src/ls.c:1570
+#, fuzzy, c-format
+msgid "the --kilobytes option is deprecated; use -k instead"
+msgstr ""
+"警告:--version-control (-V) é¸é …已經éŽæ™‚;將來的版本隨時å¯èƒ½ä¸å†æ”¯æ´\n"
+"æ­¤é¸é …。請使用 --backup=%s。"
+
+#: src/df.c:900
+#, c-format
+msgid "file system type %s both selected and excluded"
+msgstr "ä¸èƒ½åŒæ™‚é¸æ“‡å’ŒæŽ’除檔案系統類型 %s"
+
+#: src/df.c:940
+msgid "Warning: "
+msgstr "警告:"
+
+#: src/df.c:943
+#, c-format
+msgid "%scannot read table of mounted file systems"
+msgstr "%s 無法讀å–已掛載的檔案系統的åå–®"
+
+#: src/df.c:964
+#, c-format
+msgid "no file systems processed"
+msgstr ""
+
+#: src/dircolors.c:102
+#, c-format
+msgid "Usage: %s [OPTION]... [FILE]\n"
+msgstr "用法:%s [é¸é …]... [檔案]\n"
+
+#: src/dircolors.c:103
+msgid ""
+"Output commands to set the LS_COLORS environment variable.\n"
+"\n"
+"Determine format of output:\n"
+" -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n"
+" -c, --csh, --c-shell output C shell code to set LS_COLORS\n"
+" -p, --print-database output defaults\n"
+msgstr ""
+"輸出用來設定 LS_COLORS 環境變數的指令。\n"
+"\n"
+"指定輸出的è¦æ ¼ï¼š\n"
+" -b, --sh, --bourne-shell 輸出設定 LS_COLORS 的 Bourne shell 指令\n"
+" -c, --csh, --c-shell 輸出設定 LS_COLORS 的 C shell 指令\n"
+" -p, --print-database 輸出é è¨­çš„色彩設定\n"
+
+#: src/dircolors.c:113
+msgid ""
+"\n"
+"If FILE is specified, read it to determine which colors to use for which\n"
+"file types and extensions. Otherwise, a precompiled database is used.\n"
+"For details on the format of these files, run `dircolors --print-database'.\n"
+msgstr ""
+"\n"
+"如果指定 <檔案>,則讀å–該檔案的資料來決定檔案類型åŠå»¶ä¼¸æª”å相應的é¡è‰²ã€‚\n"
+"å¦å‰‡ï¼Œæœƒä½¿ç”¨ä¸€å€‹é è¨­çš„資料庫。如è¦çž­è§£æ­¤æª”案格å¼çš„細節,請執行\n"
+"‘dircolors --print-database’。\n"
+
+#: src/dircolors.c:291
+#, c-format
+msgid "%s:%lu: invalid line; missing second token"
+msgstr "%s:%lu:該行內容無效,缺少了第二個åƒæ•¸"
+
+#: src/dircolors.c:363
+#, c-format
+msgid "%s:%lu: unrecognized keyword %s"
+msgstr "%s:%lu:無法識別關éµå­— %s"
+
+#: src/dircolors.c:364
+msgid "<internal>"
+msgstr "<內部資料>"
+
+#: src/dircolors.c:445
+#, c-format
+msgid ""
+"the options to output dircolors' internal database and\n"
+"to select a shell syntax are mutually exclusive"
+msgstr ""
+"顯示 dircolors 內部資料庫的é¸é …å’Œé¸æ“‡ shell 語法的é¸é …\n"
+"是互相抵觸的"
+
+#: src/dircolors.c:455
+msgid "File operands cannot be combined with --print-database (-p)."
+msgstr "加上檔案作為åƒæ•¸çš„話ä¸å¯å’Œ --print-database (-p) 一起使用。"
+
+#: src/dircolors.c:478
+#, c-format
+msgid "no SHELL environment variable, and no shell type option given"
+msgstr "沒有設定 SHELL 環境變數,也沒有指定 shell é¡žåž‹çš„é¸é …"
+
+#: src/dirname.c:48
+#, c-format
+msgid ""
+"Usage: %s NAME\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s 檔案å稱\n"
+" 或:%s é¸é …\n"
+
+#: src/dirname.c:53
+msgid ""
+"Print NAME with its trailing /component removed; if NAME contains no /'s,\n"
+"output `.' (meaning the current directory).\n"
+"\n"
+msgstr ""
+"顯示檔案å稱時減去最後一個 ‘/’ 和之後的內容;如果å稱中沒有 ‘/’,則\n"
+"顯示 ‘.’ (表示當å‰ç›®éŒ„)。\n"
+
+#: src/dirname.c:60
+#, c-format
+msgid ""
+"\n"
+"Examples:\n"
+" %s /usr/bin/sort Output \"/usr/bin\".\n"
+" %s stdio.h Output \".\".\n"
+msgstr ""
+
+#: src/du.c:279 src/wc.c:108
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [OPTION]... --files0-from=F\n"
+msgstr ""
+"用法:%s [é¸é …]... [檔案]...\n"
+" 或:%s [é¸é …]... --files0-from=F\n"
+
+#: src/du.c:283
+msgid ""
+"Summarize disk usage of each FILE, recursively for directories.\n"
+"\n"
+msgstr ""
+"總çµæ¯å€‹ <檔案> çš„ç£ç¢Ÿç”¨é‡ï¼Œç›®éŒ„則å–總用é‡ã€‚\n"
+"\n"
+
+# (Abel) doesn't need to translate into such detail for --apparent-size
+#: src/du.c:290
+#, fuzzy
+msgid ""
+" -a, --all write counts for all files, not just directories\n"
+" --apparent-size print apparent sizes, rather than disk usage; "
+"although\n"
+" the apparent size is usually smaller, it may be\n"
+" larger due to holes in (`sparse') files, internal\n"
+" fragmentation, indirect blocks, and the like\n"
+msgstr ""
+" -a, --all 顯示目錄中所有檔案的佔用é‡ï¼Œä¸¦éžåªæ˜¯ç›®éŒ„的總用é‡\n"
+" --apparent-size 顯示表é¢ä¸Šçš„檔案大å°è€Œä¸æ˜¯çœŸæ­£çš„空間佔用é‡ï¼›é›–然\n"
+" 表é¢ä¸Šæª”案通常比較å°ï¼Œä½†ä¹Ÿæœ‰å¯èƒ½æ¯”較大 (例如 sparse\n"
+" 檔案ã€æª”案分æˆæ•¸æ®µç­‰ç­‰)\n"
+" -B, --block-size=å¤§å° å€æ®µä»¥æŒ‡å®š <大å°> çš„ä½å…ƒçµ„為單ä½\n"
+" -b, --bytes 等於 ‘--apparent-size --block-size=1’\n"
+" -c, --total å°å‡ºæ‰€æœ‰é …目相加後的總用é‡\n"
+" -D, --dereference-args åªæ‰¾å‡ºç¬¦è™Ÿéˆçµæ‰€æŒ‡ç¤ºçš„真正目的地\n"
+
+#: src/du.c:297
+#, fuzzy
+msgid ""
+" -B, --block-size=SIZE use SIZE-byte blocks\n"
+" -b, --bytes equivalent to `--apparent-size --block-size=1'\n"
+" -c, --total produce a grand total\n"
+" -D, --dereference-args dereference FILEs that are symbolic links\n"
+msgstr ""
+" -a, --all 顯示目錄中所有檔案的佔用é‡ï¼Œä¸¦éžåªæ˜¯ç›®éŒ„的總用é‡\n"
+" -B, --block-size=å¤§å° å€æ®µä»¥æŒ‡å®š <大å°> çš„ä½å…ƒçµ„為單ä½\n"
+" -b, --bytes 以ä½å…ƒçµ„為單ä½å°å‡ºä½”用é‡\n"
+" -c, --total å°å‡ºæ‰€æœ‰é …目相加後的總用é‡\n"
+" -D, --dereference-args åªæ‰¾å‡ºæŒ‡ä»¤åˆ—中的符號éˆçµæŒ‡ç¤ºçš„真正目的地\n"
+
+#: src/du.c:303
+#, fuzzy
+msgid ""
+" --files0-from=F summarize disk usage of the NUL-terminated file\n"
+" names specified in file F\n"
+" -H like --si, but also evokes a warning; will soon\n"
+" change to be equivalent to --dereference-args (-"
+"D)\n"
+" -h, --human-readable print sizes in human readable format (e.g., 1K 234M "
+"2G)\n"
+" --si like -h, but use powers of 1000 not 1024\n"
+msgstr ""
+" --files0-from=F 總çµæª”案 F 中所有檔案å稱的使用é‡ï¼Œè€Œä¸”所有檔案å稱\n"
+" 都以 NUL 字元作為çµå°¾\n"
+" -H å³ --si,但會顯示警告訊æ¯ï¼›ç¨å¾Œæœƒå°‡æœ¬é¸é …çš„æ„義更改\n"
+" 為和 --dereference-args (-D) 一樣\n"
+" -h, --human-readable 以容易ç†è§£çš„æ ¼å¼å°å‡ºæª”æ¡ˆå¤§å° (例如 1K 234M 2G)\n"
+" --si é¡žä¼¼ -hï¼Œä½†å– 1000 的次方而ä¸æ˜¯ 1024\n"
+" -k å³ --block-size=1K\n"
+" -l, --count-links 將所有實際éˆçµ (hard link) 的大å°ä¹Ÿè¨ˆç®—在內\n"
+
+#: src/du.c:311
+msgid ""
+" -k like --block-size=1K\n"
+" -l, --count-links count sizes many times if hard linked\n"
+" -m like --block-size=1M\n"
+msgstr ""
+
+#: src/du.c:316
+msgid ""
+" -L, --dereference dereference all symbolic links\n"
+" -P, --no-dereference don't follow any symbolic links (this is the "
+"default)\n"
+" -0, --null end each output line with 0 byte rather than "
+"newline\n"
+" -S, --separate-dirs do not include size of subdirectories\n"
+" -s, --summarize display only a total for each argument\n"
+msgstr ""
+" -L, --dereference 找出任何符號éˆçµæŒ‡ç¤ºçš„真正目的地\n"
+" -P, --no-dereference ä¸è·Ÿéš¨ä»»ä½•ç¬¦è™Ÿéˆçµ (這個是é è¨­æ¨¡å¼)\n"
+" -0, --null æ¯è¡Œéƒ½ä»¥ NUL 字元而ä¸æ˜¯æ›è¡Œä½œç‚ºçµå°¾\n"
+" -S, --separate-dirs ä¸åŒ…括å­ç›®éŒ„的佔用é‡\n"
+" -s, --summarize åªåˆ†åˆ¥è¨ˆç®—æ¯å€‹æª”案åƒæ•¸æ‰€ä½”的總用é‡\n"
+
+#: src/du.c:323
+#, fuzzy
+msgid ""
+" -x, --one-file-system skip directories on different file systems\n"
+" -X FILE, --exclude-from=FILE Exclude files that match any pattern in "
+"FILE.\n"
+" --exclude=PATTERN Exclude files that match PATTERN.\n"
+" --max-depth=N print the total for a directory (or file, with --"
+"all)\n"
+" only if it is N or fewer levels below the command\n"
+" line argument; --max-depth=0 is the same as\n"
+" --summarize\n"
+msgstr ""
+" -x, --one-file-system 忽略屬於其它檔案系統的目錄\n"
+" -X 檔案, --exclude-from=檔案 ç”± <檔案> 讀å–應排除的檔案的樣å¼\n"
+" --exclude=æ¨£å¼ æŽ’é™¤ç¬¦åˆæŒ‡å®š <樣å¼> 的檔案\n"
+" --max-depth=N åªé¡¯ç¤ºåƒæ•¸æŒ‡å®šçš„目錄 N 層或以內的å­ç›®éŒ„的總用é‡\n"
+" (若使用 --all é¸é …,也會顯示檔案的佔用é‡)ï¼›\n"
+" --max-depth=0 的效果等於 --summarize\n"
+
+#: src/du.c:332
+msgid ""
+" --time show time of the last modification of any file in "
+"the\n"
+" directory, or any of its subdirectories\n"
+" --time=WORD show time as WORD instead of modification time:\n"
+" atime, access, use, ctime or status\n"
+" --time-style=STYLE show times using style STYLE:\n"
+" full-iso, long-iso, iso, +FORMAT\n"
+" FORMAT is interpreted like `date'\n"
+msgstr ""
+
+#: src/du.c:670 src/ls.c:2442 src/wc.c:696
+msgid "total"
+msgstr "總計"
+
+#: src/du.c:752
+#, c-format
+msgid ""
+"WARNING: use --si, not -H; the meaning of the -H option will soon\n"
+"change to be the same as that of --dereference-args (-D)"
+msgstr ""
+"警告:請使用 --si 代替 -Hï¼›-H é¸é …çš„æ„義以後會更改為和\n"
+" --dereference-args (-D) 一樣"
+
+#: src/du.c:780
+#, c-format
+msgid "invalid maximum depth %s"
+msgstr "最大深度 %s 無效"
+
+#: src/du.c:789
+#, fuzzy, c-format
+msgid "the --megabytes option is deprecated; use -m instead"
+msgstr ""
+"警告:--version-control (-V) é¸é …已經éŽæ™‚;將來的版本隨時å¯èƒ½ä¸å†æ”¯æ´\n"
+"æ­¤é¸é …。請使用 --backup=%s。"
+
+#: src/du.c:871
+#, c-format
+msgid "cannot both summarize and show all entries"
+msgstr "ä¸èƒ½åªé¡¯ç¤ºç¸½ç”¨é‡ï¼ŒåŒæ™‚åˆé¡¯ç¤ºæ¯å€‹é …ç›®"
+
+#: src/du.c:878
+#, c-format
+msgid "warning: summarizing is the same as using --max-depth=0"
+msgstr "警告:顯示總用é‡ç­‰æ–¼ä½¿ç”¨ --max-depth=0"
+
+#: src/du.c:884
+#, c-format
+msgid "warning: summarizing conflicts with --max-depth=%lu"
+msgstr "警告:顯示總用é‡çš„é¸é …å’Œ --max-depth=%lu 互相抵觸"
+
+#: src/du.c:949 src/wc.c:645
+msgid "File operands cannot be combined with --files0-from."
+msgstr "有檔案作為åƒæ•¸æ™‚ä¸å¯å’Œ --files0-from 一起使用。"
+
+#: src/du.c:960 src/wc.c:662
+#, c-format
+msgid "cannot read file names from %s"
+msgstr "無法從 %s 讀å–檔案å稱"
+
+#: src/du.c:1000 src/du.c:1003
+msgid "invalid zero-length file name"
+msgstr "檔案å稱無效 (長度為零)"
+
+#: src/echo.c:64
+#, c-format
+msgid "Usage: %s [OPTION]... [STRING]...\n"
+msgstr "用法:%s [é¸é …]... [字串]...\n"
+
+#: src/echo.c:65
+msgid ""
+"Echo the STRING(s) to standard output.\n"
+"\n"
+" -n do not output the trailing newline\n"
+msgstr ""
+"在標準輸出顯示指定 <字串>。\n"
+"\n"
+" -n ä¸åŠ ä¸Šæœ€å¾Œçš„æ›è¡Œå­—å…ƒ\n"
+
+#: src/echo.c:71
+msgid ""
+" -e enable interpretation of backslash escapes (default)\n"
+" -E disable interpretation of backslash escapes\n"
+msgstr ""
+" -e 能夠識別加上å斜號 ‘\\’ çš„ç‰¹æ®Šæ ¼å¼ (é è¨­ä½¿ç”¨)\n"
+" -E ä¸èƒ½å¤ è­˜åˆ¥åŠ ä¸Šå斜號 ‘\\’ 的特殊格å¼\n"
+
+#: src/echo.c:80
+msgid ""
+"\n"
+"If -e is in effect, the following sequences are recognized:\n"
+"\n"
+" \\0NNN the character whose ASCII code is NNN (octal)\n"
+" \\\\ backslash\n"
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+msgstr ""
+"\n"
+"使用 -e é¸é …時,程å¼èƒ½å¤ è­˜åˆ¥ä»¥ä¸‹çš„特殊格å¼ï¼š\n"
+"\n"
+" \\0NNN 8 進ä½æ•¸å­— NNN 所代表的 ASCII å­—å…ƒ\n"
+" \\\\ å斜號 ‘\\’\n"
+" \\a éŸ¿è² (BEL)\n"
+" \\b 倒退字元 (backspace)\n"
+
+#: src/echo.c:89
+msgid ""
+" \\c suppress trailing newline\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\c 立刻終止輸出任何內容\n"
+" \\f æ›é å­—å…ƒ (form feed)\n"
+" \\n æ›è¡Œå­—å…ƒ (new line)\n"
+" \\r 復ä½å­—å…ƒ (return)\n"
+" \\t 水平定ä½å­—å…ƒ (tab)\n"
+" \\v 垂直定ä½å­—å…ƒ\n"
+
+#: src/env.c:118
+#, c-format
+msgid "Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"
+msgstr "用法:%s [é¸é …]... [-] [NAME=VALUE]... [指令 [åƒæ•¸]...]\n"
+
+#: src/env.c:121
+msgid ""
+"Set each NAME to VALUE in the environment and run COMMAND.\n"
+"\n"
+" -i, --ignore-environment start with an empty environment\n"
+" -u, --unset=NAME remove variable from the environment\n"
+msgstr ""
+
+#: src/env.c:129
+msgid ""
+"\n"
+"A mere - implies -i. If no COMMAND, print the resulting environment.\n"
+msgstr ""
+"\n"
+"僅用 - 已經等於 -i é¸é …。如果沒有指定 <指令>,則顯示所有環境變數。\n"
+
+#: src/expand.c:115
+msgid ""
+"Convert tabs in each FILE to spaces, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"å°‡æ¯å€‹ <檔案> 中的 tab 轉æ›ç‚ºç©ºæ ¼ï¼Œä¸¦åœ¨æ¨™æº–輸出顯示。\n"
+"如果沒有指定 <檔案> 或 <檔案> 是 -,則由標準輸入讀å–資料。\n"
+
+#: src/expand.c:123
+msgid ""
+" -i, --initial do not convert tabs after non blanks\n"
+" -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n"
+msgstr ""
+" -i, --initial ä¸è½‰æ›éžç©ºç™½å­—元後的 TAB å­—å…ƒ\n"
+" -t, --tabs=數目 å°‡ tab 轉æ›ç‚ºæŒ‡å®š <數目> 的空格而ä¸æ˜¯ 8 個\n"
+
+#: src/expand.c:127
+msgid ""
+" -t, --tabs=LIST use comma separated list of explicit tab positions\n"
+msgstr " -t, --tabs=LIST 用以逗號分隔的數字來指定 tab çš„ä½ç½®\n"
+
+#: src/expand.c:180 src/unexpand.c:199
+#, c-format
+msgid "tab stop is too large %s"
+msgstr "tab 字元寬度 %s éŽé•·"
+
+#: src/expand.c:188 src/unexpand.c:207
+#, c-format
+msgid "tab size contains invalid character(s): %s"
+msgstr "tab 字元寬度å«æœ‰ç„¡æ•ˆçš„字元:%s"
+
+#: src/expand.c:214 src/unexpand.c:233
+#, c-format
+msgid "tab size cannot be 0"
+msgstr "tab 字元寬度ä¸å¯ç‚º 0"
+
+#: src/expand.c:216 src/unexpand.c:235
+#, c-format
+msgid "tab sizes must be ascending"
+msgstr "tab å­—å…ƒä½ç½®å¿…須由å°è‡³å¤§"
+
+#: src/expand.c:333 src/expand.c:352 src/unexpand.c:381 src/unexpand.c:428
+#, c-format
+msgid "input line is too long"
+msgstr "輸入內容éŽé•·"
+
+#: src/expr.c:102
+#, c-format
+msgid ""
+"Usage: %s EXPRESSION\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s 表示å¼\n"
+" 或:%s é¸é …\n"
+
+#: src/expr.c:110
+msgid ""
+"\n"
+"Print the value of EXPRESSION to standard output. A blank line below\n"
+"separates increasing precedence groups. EXPRESSION may be:\n"
+"\n"
+" ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n"
+"\n"
+" ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n"
+msgstr ""
+
+#: src/expr.c:119
+msgid ""
+"\n"
+" ARG1 < ARG2 ARG1 is less than ARG2\n"
+" ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n"
+" ARG1 = ARG2 ARG1 is equal to ARG2\n"
+" ARG1 != ARG2 ARG1 is unequal to ARG2\n"
+" ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n"
+" ARG1 > ARG2 ARG1 is greater than ARG2\n"
+msgstr ""
+
+#: src/expr.c:128
+msgid ""
+"\n"
+" ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n"
+" ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n"
+msgstr ""
+
+#: src/expr.c:133
+#, c-format
+msgid ""
+"\n"
+" ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n"
+" ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n"
+" ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n"
+msgstr ""
+
+#: src/expr.c:139
+msgid ""
+"\n"
+" STRING : REGEXP anchored pattern match of REGEXP in STRING\n"
+"\n"
+" match STRING REGEXP same as STRING : REGEXP\n"
+" substr STRING POS LENGTH substring of STRING, POS counted from 1\n"
+" index STRING CHARS index in STRING where any CHARS is found, or 0\n"
+" length STRING length of STRING\n"
+msgstr ""
+
+#: src/expr.c:148
+msgid ""
+" + TOKEN interpret TOKEN as a string, even if it is a\n"
+" keyword like `match' or an operator like `/'\n"
+"\n"
+" ( EXPRESSION ) value of EXPRESSION\n"
+msgstr ""
+
+#: src/expr.c:154
+msgid ""
+"\n"
+"Beware that many operators need to be escaped or quoted for shells.\n"
+"Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n"
+"Pattern matches return the string matched between \\( and \\) or null; if\n"
+"\\( and \\) are not used, they return the number of characters matched or "
+"0.\n"
+msgstr ""
+
+#: src/expr.c:161
+msgid ""
+"\n"
+"Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is "
+"null\n"
+"or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n"
+msgstr ""
+
+#: src/expr.c:175
+#, c-format
+msgid "syntax error"
+msgstr "æ ¼å¼éŒ¯èª¤"
+
+#: src/expr.c:468 src/ptx.c:292
+#, fuzzy, c-format
+msgid "error in regular expression matcher"
+msgstr "在正è¦é‹ç®—å¼æœå°‹æ™‚發生錯誤"
+
+#: src/expr.c:653 src/expr.c:711
+#, c-format
+msgid "non-numeric argument"
+msgstr "åƒæ•¸çµæžœä¸æ˜¯æ•¸å­—"
+
+#: src/expr.c:665
+#, c-format
+msgid "division by zero"
+msgstr "被 0 整除"
+
+#: src/factor.c:74
+#, c-format
+msgid ""
+"Usage: %s [NUMBER]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s [數字]...\n"
+" 或:%s é¸é …\n"
+
+#: src/factor.c:79
+msgid ""
+"Print the prime factors of each NUMBER.\n"
+"\n"
+msgstr ""
+"顯示æ¯å€‹æ•¸å­—的質因å­ã€‚\n"
+"\n"
+
+#: src/factor.c:85
+#, fuzzy
+msgid ""
+"\n"
+"Print the prime factors of all specified integer NUMBERs. If no arguments\n"
+"are specified on the command line, they are read from standard input.\n"
+msgstr ""
+"\n"
+" 顯示æ¯å€‹æŒ‡å®šæ•´æ•¸çš„質因å­ã€‚如果沒有åƒæ•¸ï¼Œå‰‡æœƒç”±æ¨™æº–輸入讀å–åƒæ•¸ã€‚\n"
+
+#: src/factor.c:156 src/od.c:1680 src/od.c:1749
+#, c-format
+msgid "%s is too large"
+msgstr "%s éŽé•·"
+
+#: src/factor.c:158
+#, fuzzy, c-format
+msgid "%s is not a valid positive integer"
+msgstr "‘%s’ ä¸æ˜¯æœ‰æ•ˆçš„正整數"
+
+#: src/fmt.c:273
+#, c-format
+msgid "Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"
+msgstr "用法:%s [-數字] [é¸é …]... [檔案]...\n"
+
+#: src/fmt.c:274
+msgid ""
+"Reformat each paragraph in the FILE(s), writing to standard output.\n"
+"If no FILE or if FILE is `-', read standard input.\n"
+"\n"
+msgstr ""
+"é‡æ–°ç·¨æŽ’ <檔案> 中的æ¯ä¸€æ®µæ–‡å­—,並在標準輸出顯示çµæžœã€‚\n"
+"如果沒有指定 <檔案> 或 <檔案> 是‘-’,則由標準輸入讀å–資料。\n"
+"\n"
+
+#: src/fmt.c:282
+msgid ""
+" -c, --crown-margin preserve indentation of first two lines\n"
+" -p, --prefix=STRING reformat only lines beginning with STRING,\n"
+" reattaching the prefix to reformatted lines\n"
+" -s, --split-only split long lines, but do not refill\n"
+msgstr ""
+" -c, --crown-margin ä¿ç•™æœ€åˆå…©è¡Œçš„縮排方å¼\n"
+" -p, --prefix=字串 åªè™•ç†å«æœ‰æŒ‡å®šå‰ç½® <字串> çš„æ¯ä¸€è¡Œï¼Œä¸¦å°‡è™•ç†å¥½\n"
+" çš„çµæžœé‡æ–°åŠ ä¸Š <字串>\n"
+" -s, --split-only åªå°‡ä¸€è¡ŒéŽé•·çš„資料分開,而ä¸åˆä½µå¤šæ–¼ä¸€è¡Œçš„資料\n"
+
+#: src/fmt.c:289
+msgid ""
+" -t, --tagged-paragraph indentation of first line different from second\n"
+" -u, --uniform-spacing one space between words, two after sentences\n"
+" -w, --width=WIDTH maximum line width (default of 75 columns)\n"
+msgstr ""
+" -t, --tagged-paragraph 第一和第二行的縮排方å¼ä¸åŒ\n"
+" -u, --uniform-spacing æ¯å…©å€‹å­—之間以一個空格分隔,å¥å­å¾Œå‰‡ç”¨å…©å€‹ç©ºæ ¼\n"
+" -w, --width=數字 最大的行寬 (é è¨­ç‚º 75 個字元)\n"
+
+#: src/fmt.c:358
+#, c-format
+msgid ""
+"invalid option -- %c; -WIDTH is recognized only when it is the first\n"
+"option; use -w N instead"
+msgstr ""
+
+#: src/fmt.c:400
+#, c-format
+msgid "invalid width: %s"
+msgstr "寬度無效:%s"
+
+#: src/fold.c:74
+msgid ""
+"Wrap input lines in each FILE (standard input by default), writing to\n"
+"standard output.\n"
+"\n"
+msgstr ""
+"å°‡ <檔案> (é è¨­ç‚ºæ¨™æº–輸入) 中的æ¯ä¸€è¡Œé€²è¡Œè‡ªå‹•æ›è¡Œï¼Œä¸¦åœ¨æ¨™æº–輸出顯示çµæžœã€‚\n"
+"\n"
+
+#: src/fold.c:82
+msgid ""
+" -b, --bytes count bytes rather than columns\n"
+" -s, --spaces break at spaces\n"
+" -w, --width=WIDTH use WIDTH columns instead of 80\n"
+msgstr ""
+" -b, --bytes 計算ä½å…ƒçµ„總數而éžå­—å…ƒä½ç½®\n"
+" -s, --spaces åªåœ¨ç©ºæ ¼ä½ç½®æ–·é–‹\n"
+" -w, --width=寬度 使用指定的 <寬度> ä½œç‚ºè¡Œå¯¬è€Œéž 80\n"
+
+#: src/fold.c:291 src/pr.c:841
+#, fuzzy, c-format
+msgid "invalid number of columns: %s"
+msgstr "無效的欄ä½æ•¸ç›®ï¼šâ€˜%s’"
+
+#: src/head.c:113
+msgid ""
+"Print the first 10 lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"在標準輸出顯示æ¯å€‹ <檔案> çš„æœ€åˆ 10 行。\n"
+"當多於一個 <檔案> 時,顯示時會先加上表示檔案å稱的標頭。\n"
+"如果沒有指定 <檔案> 或 <檔案> 是 -,則由標準輸入讀å–資料。\n"
+
+#: src/head.c:122
+msgid ""
+" -c, --bytes=[-]N print the first N bytes of each file;\n"
+" with the leading `-', print all but the last\n"
+" N bytes of each file\n"
+" -n, --lines=[-]N print the first N lines instead of the first 10;\n"
+" with the leading `-', print all but the last\n"
+" N lines of each file\n"
+msgstr ""
+" -c, --bytes=[-]N 顯示æ¯å€‹æª”æ¡ˆçš„æœ€åˆ N 個ä½å…ƒçµ„;如果附有 ‘-’ 號,\n"
+" 則顯示整個檔案減去最後 N 個ä½å…ƒçµ„\n"
+" -n, --lines=[-]N 顯示æ¯å€‹æª”æ¡ˆçš„æœ€åˆ N 行;如果附有 ‘-’ 號,\n"
+" 則顯示整個檔案減去最後 N 行\n"
+
+#: src/head.c:130
+msgid ""
+" -q, --quiet, --silent never print headers giving file names\n"
+" -v, --verbose always print headers giving file names\n"
+msgstr ""
+" -q, --quiet, --silent 絕ä¸é¡¯ç¤ºå«æœ‰æª”案å稱的標頭\n"
+" -v, --verbose 一定顯示å«æœ‰æª”案å稱的標頭\n"
+
+#: src/head.c:136
+msgid ""
+"\n"
+"N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n"
+msgstr ""
+"\n"
+"N å¯ä»¥åŠ ä¸Šå–®ä½ï¼šb 表示 512,k 表示 1024,m 表示 1024×1024。\n"
+
+#: src/head.c:151 src/head.c:264 src/head.c:336 src/head.c:540 src/head.c:622
+#: src/head.c:694 src/head.c:752 src/head.c:776 src/tail.c:369 src/tail.c:457
+#: src/tail.c:506 src/tail.c:599 src/tail.c:727 src/tail.c:775 src/tail.c:814
+#: src/tail.c:1319 src/tail.c:1348 src/uniq.c:386
+#, c-format
+msgid "error reading %s"
+msgstr "è®€å– %s 時發生錯誤"
+
+#: src/head.c:154
+#, c-format
+msgid "error writing %s"
+msgstr "寫入 %s 時發生錯誤"
+
+#: src/head.c:157
+#, c-format
+msgid "%s: file has shrunk too much"
+msgstr ""
+
+#: src/head.c:230 src/head.c:1046
+#, c-format
+msgid "%s: number of bytes is too large"
+msgstr "%s:ä½å…ƒçµ„數目éŽå¤§"
+
+#: src/head.c:443
+#, fuzzy, c-format
+msgid "%s: cannot lseek back to original position"
+msgstr "%s:無法æœå°‹è‡³åŽŸä¾†ä½ç½®"
+
+#: src/head.c:615 src/head.c:686 src/tail.c:407
+#, c-format
+msgid "%s: cannot seek to offset %s"
+msgstr "%s:無法æœå°‹è‡³ä½ç½® %s"
+
+#: src/head.c:793
+#, c-format
+msgid "cannot reposition file pointer for %s"
+msgstr "無法將 %s 的檔案指標é‡æ–°å®šä½"
+
+#: src/head.c:880
+#, c-format
+msgid "%s: %s is so large that it is not representable"
+msgstr "%s:%séŽå¤§ï¼Œå› æ­¤ç„¡æ³•è¡¨ç¤º"
+
+#: src/head.c:881
+msgid "number of lines"
+msgstr "行數"
+
+#: src/head.c:881
+msgid "number of bytes"
+msgstr "ä½å…ƒçµ„數目"
+
+#: src/head.c:888 src/tail.c:1483
+msgid "invalid number of lines"
+msgstr "無效的行數"
+
+#: src/head.c:889 src/tail.c:1484
+msgid "invalid number of bytes"
+msgstr "無效的ä½å…ƒçµ„數目"
+
+#: src/head.c:976 src/head.c:1034
+#, fuzzy, c-format
+msgid "invalid trailing option -- %c"
+msgstr "é¸é …無效 ─ %c"
+
+#: src/hostid.c:48
+#, c-format
+msgid ""
+"Usage: %s\n"
+" or: %s OPTION\n"
+"Print the numeric identifier (in hexadecimal) for the current host.\n"
+"\n"
+msgstr ""
+
+#: src/hostname.c:65
+#, c-format
+msgid ""
+"Usage: %s [NAME]\n"
+" or: %s OPTION\n"
+"Print or set the hostname of the current system.\n"
+"\n"
+msgstr ""
+"用法:%s [å稱]\n"
+" 或:%s é¸é …\n"
+"顯示或指定系統的主機å稱。\n"
+
+#: src/hostname.c:103
+#, fuzzy, c-format
+msgid "cannot set name to %s"
+msgstr "無法指定å稱為 ‘%s’"
+
+#: src/hostname.c:106
+#, c-format
+msgid "cannot set hostname; this system lacks the functionality"
+msgstr ""
+
+#: src/hostname.c:114
+#, c-format
+msgid "cannot determine hostname"
+msgstr "無法決定主機å稱"
+
+#: src/id.c:78
+#, c-format
+msgid "Usage: %s [OPTION]... [USERNAME]\n"
+msgstr "用法:%s [é¸é …]... [用戶å稱]\n"
+
+#: src/id.c:79
+msgid ""
+"Print information for USERNAME, or the current user.\n"
+"\n"
+" -a ignore, for compatibility with other versions\n"
+" -g, --group print only the effective group ID\n"
+" -G, --groups print all group IDs\n"
+" -n, --name print a name instead of a number, for -ugG\n"
+" -r, --real print the real ID instead of the effective ID, with -ugG\n"
+" -u, --user print only the effective user ID\n"
+msgstr ""
+"顯示有關 <用戶å稱> 的資訊,沒有指定的話則顯示目å‰çš„用戶的資訊。\n"
+"\n"
+" -a æ­¤é¸é …會被忽略,åªç‚ºäº†å’Œå…¶å®ƒç‰ˆæœ¬å…¼å®¹\n"
+" -g, --group åªé¡¯ç¤º effective group ID\n"
+" -G, --groups 顯示所有群組的 group IDs\n"
+" -n, --name é…åˆ -u/-g/-G é¸é …時,顯示å稱而ä¸æ˜¯æ•¸å­—\n"
+" -r, --real é…åˆ -u/-g/-G é¸é …時,顯示真正的 ID 而ä¸æ˜¯ effective ID\n"
+" -u, --user åªé¡¯ç¤º effective user ID\n"
+
+#: src/id.c:91
+msgid ""
+"\n"
+"Without any OPTION, print some useful set of identified information.\n"
+msgstr ""
+"\n"
+"ä¸åŠ ä¸Šä»»ä½•é¸é …的話,顯示一些有用的身分識別資訊。\n"
+
+#: src/id.c:152
+#, c-format
+msgid "cannot print only user and only group"
+msgstr "ä¸å¯èƒ½åŒæ™‚åªé¡¯ç¤ºç”¨æˆ¶å’Œåªé¡¯ç¤ºç¾¤çµ„"
+
+#: src/id.c:156
+#, c-format
+msgid "cannot print only names or real IDs in default format"
+msgstr "在é è¨­çš„輸出格å¼ä¸­ä¸å¯èƒ½åªé¡¯ç¤ºå稱或者真正的 ID"
+
+#: src/id.c:168
+#, c-format
+msgid "%s: No such user"
+msgstr "%s:此用戶ä¸å­˜åœ¨"
+
+#: src/id.c:205
+#, fuzzy, c-format
+msgid "cannot find name for user ID %lu"
+msgstr "%s: 找ä¸åˆ° UID 為 %lu 的用戶å稱\n"
+
+#: src/id.c:229
+#, fuzzy, c-format
+msgid "cannot find name for group ID %lu"
+msgstr "%s: 找ä¸åˆ° UID 為 %lu 的用戶å稱\n"
+
+#: src/id.c:271
+#, c-format
+msgid "cannot get supplemental group list"
+msgstr ""
+
+#: src/id.c:375
+msgid " groups="
+msgstr ""
+
+#: src/install.c:318
+#, c-format
+msgid "the strip option may not be used when installing a directory"
+msgstr "建立目錄時ä¸èƒ½ç”¨ strip é¸é …"
+
+#: src/install.c:321
+#, c-format
+msgid "target directory not allowed when installing a directory"
+msgstr "建立目錄時ä¸èƒ½æŒ‡å®šç›®çš„地目錄"
+
+#: src/install.c:369 src/mkdir.c:193
+#, c-format
+msgid "invalid mode %s"
+msgstr "權é™æ¨¡å¼ %s 無效"
+
+#: src/install.c:520
+#, c-format
+msgid "cannot change ownership of %s"
+msgstr "無法更改 %s çš„æ“有權"
+
+#: src/install.c:541
+#, c-format
+msgid "cannot set time stamps for %s"
+msgstr "無法設定 %s 的檔案時間"
+
+#: src/install.c:562
+#, c-format
+msgid "fork system call failed"
+msgstr "調用 fork() 系統函å¼å¤±æ•—"
+
+#: src/install.c:566
+#, c-format
+msgid "cannot run strip"
+msgstr "無法執行 strip 指令"
+
+#: src/install.c:570
+#, fuzzy, c-format
+msgid "waiting for strip"
+msgstr "正在寫入 %s"
+
+#: src/install.c:572
+#, c-format
+msgid "strip process terminated abnormally"
+msgstr ""
+
+#: src/install.c:593
+#, c-format
+msgid "invalid user %s"
+msgstr "使用者 %s 無效"
+
+#: src/install.c:628
+#, c-format
+msgid "creating directory %s"
+msgstr "正在建立目錄 %s"
+
+#: src/install.c:651
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] SOURCE DEST\n"
+" or: %s [OPTION]... SOURCE... DIRECTORY\n"
+" or: %s [OPTION]... -t DIRECTORY SOURCE...\n"
+" or: %s [OPTION]... -d DIRECTORY...\n"
+msgstr ""
+"用法:%s [é¸é …]... [-T] ä¾†æº ç›®çš„åœ°\n"
+" 或:%s [é¸é …]... 來æº... 目錄\n"
+" 或:%s [é¸é …]... -t 目錄 來æº...\n"
+" 或:%s [é¸é …]... -d 目錄...\n"
+
+#: src/install.c:658
+msgid ""
+"In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n"
+"the existing DIRECTORY, while setting permission modes and owner/group.\n"
+"In the 4th form, create all components of the given DIRECTORY(ies).\n"
+"\n"
+msgstr ""
+"在最åˆä¸‰ç¨®æ ¼å¼ä¸­ï¼Œæœƒå°‡ <來æº> 複製至 <目的地> 或將多個 <來æº>\n"
+"複製至已存在的 <目錄>,åŒæ™‚設定權é™æ¨¡å¼åŠæ“有者/所屬群組。\n"
+"在第四種格å¼ä¸­ï¼Œæœƒå»ºç«‹æ‰€æœ‰æŒ‡å®šçš„目錄åŠå®ƒå€‘的所有上層目錄。\n"
+"\n"
+
+#: src/install.c:667
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination file\n"
+" -b like --backup but does not accept an argument\n"
+" -c (ignored)\n"
+" -d, --directory treat all arguments as directory names; create all\n"
+" components of the specified directories\n"
+msgstr ""
+" --backup[=CONTROL] 為æ¯å€‹å·²å­˜åœ¨çš„目的地檔案進行備份\n"
+" -b é¡žä¼¼ --backup,但ä¸æŽ¥å—任何åƒæ•¸\n"
+" -c (æ­¤é¸é …ä¸ä½œè™•ç†)\n"
+" -d, --directory 所有åƒæ•¸éƒ½ä½œç‚ºç›®éŒ„處ç†ï¼›è€Œä¸”會建立指定目錄的所有主目"
+"錄\n"
+
+#: src/install.c:674
+msgid ""
+" -D create all leading components of DEST except the "
+"last,\n"
+" then copy SOURCE to DEST\n"
+" -g, --group=GROUP set group ownership, instead of process' current "
+"group\n"
+" -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-"
+"x\n"
+" -o, --owner=OWNER set ownership (super-user only)\n"
+msgstr ""
+" -D 建立 <目的地> 的所有上層目錄,然後將 <來æº> 複製至\n"
+" <目的地>\n"
+" -g, --group=群組 自行指定所屬群組,而ä¸æ˜¯é€²ç¨‹ç›®å‰çš„所屬群組\n"
+" -m, --mode=æ¨¡å¼ è‡ªè¡ŒæŒ‡å®šæ¬Šé™æ¨¡å¼ (åƒ chmod),而ä¸æ˜¯ rwxr-xr-x\n"
+" -o, --owner=æ“有者 自行指定æ“有者 (åªé©ç”¨æ–¼æœ€å¤§æ¬ŠåŠ›ä½¿ç”¨è€…)\n"
+
+#: src/install.c:681
+#, fuzzy
+msgid ""
+" -p, --preserve-timestamps apply access/modification times of SOURCE "
+"files\n"
+" to corresponding destination files\n"
+" -s, --strip strip symbol tables\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY copy all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -v, --verbose print the name of each directory as it is created\n"
+msgstr ""
+" -p, --preserve-timestamps 以 <來æº> 檔案的存å–/修改時間作為相應的目的\n"
+" 地檔案時間屬性\n"
+" -s, --strip 用 strip 指令移除 symbol table\n"
+" -S, --suffix=字串 自行指定備份檔的後置 <字串>\n"
+" -t, --target-directory=目錄 將所有 <來æº> 複製至該目錄\n"
+" -T, --no-target-directory 將目的地看æˆæ™®é€šæª”案\n"
+" -v, --verbose 建立æ¯å€‹ç›®éŒ„時都顯示å稱\n"
+
+#: src/install.c:692 src/ln.c:365 src/mv.c:318
+msgid ""
+"\n"
+"The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n"
+"The version control method may be selected via the --backup option or "
+"through\n"
+"the VERSION_CONTROL environment variable. Here are the values:\n"
+"\n"
+msgstr ""
+"\n"
+"備份檔的後置字串為 ‘~’,除éžä»¥ --suffix é¸é …或是 SIMPLE_BACKUP_SUFFIX\n"
+"環境變數指定。版本控制的方å¼å¯é€éŽ --backup é¸é …或 VERSION_CONTROL 環境\n"
+"變數來é¸æ“‡ã€‚以下是å¯ç”¨çš„變數值:\n"
+"\n"
+
+#: src/join.c:138
+msgid ""
+"For each pair of input lines with identical join fields, write a line to\n"
+"standard output. The default join field is the first, delimited\n"
+"by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n"
+"\n"
+" -a FILENUM print unpairable lines coming from file FILENUM, where\n"
+" FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n"
+" -e EMPTY replace missing input fields with EMPTY\n"
+msgstr ""
+"當兩個檔案指定è¦åˆä½µçš„欄ä½ç›¸åŒæ™‚,åˆä½µå…©è¡Œæˆç‚ºä¸€è¡Œï¼Œä¸¦åœ¨æ¨™æº–輸出顯示çµæžœã€‚\n"
+"é è¨­çš„åˆä½µæ¬„ä½æ˜¯ç¬¬ä¸€å€‹æ¬„ä½(以空格分隔計算)。如果 <檔案1> 或 <檔案2> 是 -\n"
+"(但ä¸èƒ½å…©å€‹éƒ½æ˜¯),則由標準輸入讀å–資料。\n"
+"\n"
+" -a 檔案數字 當æŸè¡Œé‡åˆ°ç„¡æ³•é…å°çš„欄ä½æ™‚,å–其中一個檔案的內容顯示;\n"
+" 其中 <檔案數字> å¯ä»¥æ˜¯ 1 或 2,分別代表 <檔案1> 或 <檔案"
+"2>\n"
+" -e 字串 當缺少輸入欄ä½æ™‚,以 <字串> 代替\n"
+
+#: src/join.c:147
+#, fuzzy
+msgid ""
+" -i, --ignore-case ignore differences in case when comparing fields\n"
+" -j FIELD equivalent to `-1 FIELD -2 FIELD'\n"
+" -o FORMAT obey FORMAT while constructing output line\n"
+" -t CHAR use CHAR as input and output field separator\n"
+msgstr ""
+" -i, --ignore-case 當比較欄ä½æ™‚ä¸ç†æœƒå¤§å°å¯«\n"
+" -j æ¬„ä½ ç­‰æ–¼ ‘-1 æ¬„ä½ -2 欄ä½â€™\n"
+" -o æ ¼å¼ ç•¶è¼¸å‡ºæ™‚éµå¾žæŒ‡å®š <æ ¼å¼>\n"
+" -t å­—å…ƒ 以 <å­—å…ƒ> 作為輸入和輸出的欄ä½åˆ†éš”符號\n"
+
+#: src/join.c:153
+msgid ""
+" -v FILENUM like -a FILENUM, but suppress joined output lines\n"
+" -1 FIELD join on this FIELD of file 1\n"
+" -2 FIELD join on this FIELD of file 2\n"
+msgstr ""
+" -v 檔案數字 é¡žä¼¼ -a <檔案數字>,但ä¸å°å‡ºåˆä½µäº†çš„任何一行\n"
+" -1 æ¬„ä½ ä»¥æª”æ¡ˆ 1 的指定 <欄ä½> 來åˆä½µ\n"
+" -2 æ¬„ä½ ä»¥æª”æ¡ˆ 2 的指定 <欄ä½> 來åˆä½µ\n"
+
+#: src/join.c:160
+#, fuzzy
+msgid ""
+"\n"
+"Unless -t CHAR is given, leading blanks separate fields and are ignored,\n"
+"else fields are separated by CHAR. Any FIELD is a field number counted\n"
+"from 1. FORMAT is one or more comma or blank separated specifications,\n"
+"each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n"
+"the remaining fields from FILE1, the remaining fields from FILE2, all\n"
+"separated by CHAR.\n"
+"\n"
+"Important: FILE1 and FILE2 must be sorted on the join fields.\n"
+"E.g., use `sort -k 1b,1' if `join' has no options.\n"
+msgstr ""
+"\n"
+"除éžä½¿ç”¨äº† ‘-t 字元’ é¸é …,這時會忽略æ¯è¡Œé–‹å§‹çš„空白字元,å¦å‰‡æ¬„ä½æœƒä»¥æŒ‡å®šçš„\n"
+"<å­—å…ƒ> 分隔。<欄ä½> 編號是由 1 開始算起的。<æ ¼å¼> 是一個或多個以逗號分隔的\n"
+"字串,æ¯å€‹å­—串å¯ä»¥æ˜¯ ‘<檔案數字>.<欄ä½>’ 或 ‘0’。é è¨­çš„ <æ ¼å¼>是先輸出用來\n"
+"åˆä½µçš„欄ä½ï¼Œç„¶å¾Œæ˜¯ <檔案1> 的其它欄ä½ï¼Œæœ€å¾Œæ˜¯ <檔案2> 的其它欄ä½ï¼Œå…¨éƒ¨çš†ä»¥\n"
+"<字元> 來分隔。\n"
+
+#: src/join.c:617 src/join.c:812
+#, c-format
+msgid "invalid field number: %s"
+msgstr "無效的欄ä½ç·¨è™Ÿï¼š%s"
+
+#: src/join.c:638 src/join.c:647
+#, fuzzy, c-format
+msgid "invalid field specifier: %s"
+msgstr "無效的欄ä½è¦æ ¼ï¼šâ€˜%s’"
+
+#: src/join.c:654
+#, fuzzy, c-format
+msgid "invalid file number in field spec: %s"
+msgstr "欄ä½è¦æ ¼ä¸­å«æœ‰ç„¡æ•ˆçš„檔案編號:‘%s’"
+
+#: src/join.c:697
+#, c-format
+msgid "incompatible join fields %lu, %lu"
+msgstr ""
+
+#: src/join.c:823
+#, c-format
+msgid "conflicting empty-field replacement strings"
+msgstr ""
+
+#: src/join.c:864 src/sort.c:3020
+#, c-format
+msgid "empty tab"
+msgstr ""
+
+#: src/join.c:870 src/sort.c:3031
+#, fuzzy, c-format
+msgid "multi-character tab %s"
+msgstr "分隔欄ä½å­—元‘%s’多於一個字元"
+
+#: src/join.c:874 src/sort.c:3036
+#, c-format
+msgid "incompatible tabs"
+msgstr ""
+
+#: src/join.c:931
+#, c-format
+msgid "both files cannot be standard input"
+msgstr "兩個檔案ä¸èƒ½éƒ½æ˜¯æ¨™æº–輸入"
+
+#: src/kill.c:90
+#, c-format
+msgid ""
+"Usage: %s [-s SIGNAL | -SIGNAL] PID...\n"
+" or: %s -l [SIGNAL]...\n"
+" or: %s -t [SIGNAL]...\n"
+msgstr ""
+
+#: src/kill.c:96
+msgid ""
+"Send signals to processes, or list signals.\n"
+"\n"
+msgstr ""
+
+#: src/kill.c:103
+msgid ""
+" -s, --signal=SIGNAL, -SIGNAL\n"
+" specify the name or number of the signal to be sent\n"
+" -l, --list list signal names, or convert signal names to/from "
+"numbers\n"
+" -t, --table print a table of signal information\n"
+msgstr ""
+
+#: src/kill.c:111
+msgid ""
+"\n"
+"SIGNAL may be a signal name like `HUP', or a signal number like `1',\n"
+"or an exit status of a process terminated by a signal.\n"
+"PID is an integer; if negative it identifies a process group.\n"
+msgstr ""
+
+#: src/kill.c:161
+#, c-format
+msgid "%s: invalid signal"
+msgstr "%s:訊號無效"
+
+#: src/kill.c:266
+#, c-format
+msgid "%s: invalid process id"
+msgstr "%s:進程編號無效"
+
+#: src/kill.c:320
+#, c-format
+msgid "invalid option -- %c"
+msgstr "é¸é …無效 ─ %c"
+
+#: src/kill.c:329
+#, c-format
+msgid "%s: multiple signals specified"
+msgstr "%s:使用了多於一個訊號"
+
+#: src/kill.c:343
+#, c-format
+msgid "multiple -l or -t options specified"
+msgstr "-l 或 -t é¸é …使用了多於一次"
+
+#: src/kill.c:360
+#, c-format
+msgid "cannot combine signal with -l or -t"
+msgstr "使用 -l 或 -t 時ä¸èƒ½åŒæ™‚指定訊號"
+
+#: src/kill.c:366
+#, c-format
+msgid "no process ID specified"
+msgstr "未指定進程編號"
+
+#: src/link.c:50
+#, fuzzy, c-format
+msgid ""
+"Usage: %s FILE1 FILE2\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s [檔案]...\n"
+" 或:%s [é¸é …]\n"
+
+#: src/link.c:53
+msgid ""
+"Call the link function to create a link named FILE2 to an existing FILE1.\n"
+"\n"
+msgstr ""
+"é€éŽèª¿ç”¨ link 函å¼ï¼Œå»ºç«‹é€£è‡³ <檔案1> çš„éˆçµï¼Œéˆçµå稱為 <檔案2>。\n"
+"\n"
+
+#: src/link.c:95
+#, c-format
+msgid "cannot create link %s to %s"
+msgstr "無法建立連至 %2$s çš„éˆçµ %1$s"
+
+#: src/ln.c:155
+#, c-format
+msgid "%s: warning: making a hard link to a symbolic link is not portable"
+msgstr "%s:警告:將實際éˆçµ (hard link) 連至符號éˆçµä¸æ˜¯æ‰€æœ‰ç³»çµ±éƒ½é©ç”¨çš„功能"
+
+#: src/ln.c:165
+#, c-format
+msgid "%s: hard link not allowed for directory"
+msgstr "%s: ä¸å…許將實際éˆçµ (hard link) 連至目錄"
+
+#: src/ln.c:218
+#, c-format
+msgid "%s: cannot overwrite directory"
+msgstr "%s:ä¸å¯ä»¥è¦†å¯«ç›®éŒ„"
+
+#: src/ln.c:223
+#, c-format
+msgid "%s: replace %s? "
+msgstr "%s:是å¦ç½®æ› %s? "
+
+#: src/ln.c:295
+#, fuzzy, c-format
+msgid "creating symbolic link %s"
+msgstr "正在建立連至%2$s的符號éˆçµ%1$s"
+
+#: src/ln.c:296
+#, fuzzy, c-format
+msgid "creating symbolic link %s -> %s"
+msgstr "正在建立連至%2$s的符號éˆçµ%1$s"
+
+#: src/ln.c:298
+#, fuzzy, c-format
+msgid "creating hard link to %.0s%s"
+msgstr "正在建立連至%2$s的實際éˆçµ (hard link)%1$s"
+
+#: src/ln.c:301
+#, fuzzy, c-format
+msgid "creating hard link %s"
+msgstr "正在建立連至%2$s的實際éˆçµ (hard link)%1$s"
+
+#: src/ln.c:302
+#, fuzzy, c-format
+msgid "creating hard link %s => %s"
+msgstr "正在建立連至%2$s的實際éˆçµ (hard link)%1$s"
+
+#: src/ln.c:324
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n"
+" or: %s [OPTION]... TARGET (2nd form)\n"
+" or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n"
+" or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n"
+msgstr ""
+"用法:%s [é¸é …]... ä¾†æº ç›®çš„åœ° (第一種格å¼)\n"
+" 或:%s [é¸é …]... 來æº... 目錄 (第二種格å¼)\n"
+" 或:%s -d [é¸é …]... 目錄... (第三種格å¼)\n"
+
+#: src/ln.c:331
+#, fuzzy
+msgid ""
+"In the 1st form, create a link to TARGET with the name LINK_NAME.\n"
+"In the 2nd form, create a link to TARGET in the current directory.\n"
+"In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n"
+"Create hard links by default, symbolic links with --symbolic.\n"
+"When creating hard links, each TARGET must exist.\n"
+"\n"
+msgstr ""
+"建立連至指定 <目標> çš„éˆçµï¼Œä¸¦å¯é¸æ“‡æŒ‡å®š <éˆçµå稱>。\n"
+"如果沒有指定 <éˆçµå稱>,會在目å‰çš„目錄中建立一個和 <目標> å稱一樣的éˆçµã€‚\n"
+"當使用第二種格å¼è€Œ <目標> 多於一個時,最後的åƒæ•¸å¿…須是目錄;這樣會在指定的\n"
+"<目錄> 中分別建立連至æ¯å€‹ <目標> çš„éˆçµã€‚é è¨­çš„é‹ä½œæ–¹å¼æ˜¯å»ºç«‹å¯¦éš›éˆçµ (hard\n"
+"link),若使用 --symbolic é¸é …則建立符號éˆçµã€‚當建立實際éˆçµæ™‚,æ¯å€‹ <目標>\n"
+"都必須存在。\n"
+"\n"
+
+#: src/ln.c:342
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an argument\n"
+" -d, -F, --directory allow the superuser to attempt to hard link\n"
+" directories (note: will probably fail due "
+"to\n"
+" system restrictions, even for the "
+"superuser)\n"
+" -f, --force remove existing destination files\n"
+msgstr ""
+" --backup[=CONTROL] 為æ¯å€‹å·²å­˜åœ¨çš„目的地檔案建立備份檔\n"
+" -b é¡žä¼¼ --backup,但ä¸æŽ¥å—任何åƒæ•¸\n"
+" -d, -F, --directory 建立連至目錄的實際éˆçµ (åªé©ç”¨æ–¼æœ€å¤§æ¬ŠåŠ›ä½¿ç”¨"
+"者)\n"
+" -f, --force 強迫移除任何已存在的目的地檔案\n"
+
+#: src/ln.c:350
+msgid ""
+" -n, --no-dereference treat destination that is a symlink to a\n"
+" directory as if it were a normal file\n"
+" -i, --interactive prompt whether to remove destinations\n"
+" -s, --symbolic make symbolic links instead of hard links\n"
+msgstr ""
+" -n, --no-dereference 如果目的地是一個連çµè‡³æŸç›®éŒ„的符號éˆçµï¼Œæœƒå°‡\n"
+" 該符號éˆçµç•¶ä½œæ™®é€šæª”案處ç†ï¼Œæœƒå…ˆå‚™ä»½æˆ–移除該\n"
+" éˆçµ\n"
+" -i, --interactive 確èªæ˜¯å¦ç§»é™¤ç›®çš„地檔案\n"
+" -s, --symbolic 建立符號éˆçµè€Œä¸æ˜¯å¯¦éš›éˆçµ\n"
+
+#: src/ln.c:356
+#, fuzzy
+msgid ""
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+" -t, --target-directory=DIRECTORY specify the DIRECTORY in which to "
+"create\n"
+" the links\n"
+" -T, --no-target-directory treat LINK_NAME as a normal file\n"
+" -v, --verbose print name of each linked file\n"
+msgstr ""
+" -S, --suffix=後置字串 自行指定備份檔的 <後置字串>\n"
+" --target-directory=目錄 在指定 <目錄> 中建立éˆçµ\n"
+" -v, --verbose 連çµå‰å…ˆå°å‡ºæ¯å€‹æª”案的å稱\n"
+
+#: src/ln.c:484
+#, fuzzy, c-format
+msgid "Cannot combine --target-directory and --no-target-directory"
+msgstr "%s已存在但ä¸æ˜¯ç›®éŒ„"
+
+#: src/logname.c:44 src/pwd.c:54 src/sync.c:45
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]\n"
+msgstr "用法:%s [é¸é …] [檔案]...\n"
+
+#: src/logname.c:45
+msgid ""
+"Print the name of the current user.\n"
+"\n"
+msgstr ""
+
+#: src/logname.c:89
+#, fuzzy, c-format
+msgid "no login name"
+msgstr "%s:無效的號碼"
+
+#: src/ls.c:684
+#, fuzzy
+msgid "%b %e %Y"
+msgstr "%Y-%m-%d %H:%M"
+
+#: src/ls.c:692
+#, fuzzy
+msgid "%b %e %H:%M"
+msgstr "%Y-%m-%d %H:%M"
+
+#: src/ls.c:1453
+#, c-format
+msgid "ignoring invalid value of environment variable QUOTING_STYLE: %s"
+msgstr "忽略無效的環境變數 QUOTING_STYLE 的變數值:%s"
+
+#: src/ls.c:1480
+#, c-format
+msgid "ignoring invalid width in environment variable COLUMNS: %s"
+msgstr "忽略無效的環境變數 COLUMNS 的寬度數值:%s"
+
+#: src/ls.c:1510
+#, c-format
+msgid "ignoring invalid tab size in environment variable TABSIZE: %s"
+msgstr "忽略無效的環境變數 TABSIZE çš„ tab 字元定ä½å€¼ï¼š%s"
+
+#: src/ls.c:1630 src/ptx.c:2043
+#, fuzzy, c-format
+msgid "invalid line width: %s"
+msgstr "無效的寬度:‘%s’"
+
+#: src/ls.c:1704
+#, fuzzy, c-format
+msgid "invalid tab size: %s"
+msgstr "無效的類型‘%s’"
+
+#: src/ls.c:1885
+#, fuzzy, c-format
+msgid "invalid time style format %s"
+msgstr "%2$sçš„åƒæ•¸%1$s無效"
+
+#: src/ls.c:2229
+#, fuzzy, c-format
+msgid "unrecognized prefix: %s"
+msgstr "無法識別的é¸é …‘-%c’"
+
+#: src/ls.c:2252
+#, c-format
+msgid "unparsable value for LS_COLORS environment variable"
+msgstr "LS_COLORS 環境變數中存在無法分æžçš„值"
+
+#: src/ls.c:2329 src/pwd.c:155
+#, fuzzy, c-format
+msgid "cannot open directory %s"
+msgstr "無法建立目錄%s"
+
+#: src/ls.c:2344
+#, fuzzy, c-format
+msgid "cannot determine device and inode of %s"
+msgstr "無法將 %s 的檔案指標é‡æ–°å®šä½"
+
+#: src/ls.c:2353
+#, fuzzy, c-format
+msgid "%s: not listing already-listed directory"
+msgstr "無法建立目錄%s"
+
+#: src/ls.c:2400 src/pwd.c:223
+#, fuzzy, c-format
+msgid "reading directory %s"
+msgstr "無法建立目錄%s"
+
+#: src/ls.c:2410
+#, fuzzy, c-format
+msgid "closing directory %s"
+msgstr "無法進入%s目錄"
+
+#: src/ls.c:2918
+#, fuzzy, c-format
+msgid "cannot compare file names %s and %s"
+msgstr "è¦æ¯”較的字串為%såŠ%s。"
+
+#: src/ls.c:4277
+#, fuzzy
+msgid ""
+"List information about the FILEs (the current directory by default).\n"
+"Sort entries alphabetically if none of -cftuvSUX nor --sort.\n"
+"\n"
+msgstr ""
+"列出 <檔案> 的資訊 (é è¨­ç‚ºç›®å‰çš„目錄)。\n"
+"如果ä¸æŒ‡å®š -cftuSUX 或 --sort 任何一個é¸é …,則根據字æ¯å¤§å°æŽ’åºã€‚\n"
+"\n"
+
+#: src/ls.c:4285
+#, fuzzy
+msgid ""
+" -a, --all do not ignore entries starting with .\n"
+" -A, --almost-all do not list implied . and ..\n"
+" --author with -l, print the author of each file\n"
+" -b, --escape print octal escapes for nongraphic characters\n"
+msgstr ""
+" -a, --all ä¸éš±è—任何以 . 字元開始的項目\n"
+" -A, --almost-all 列出除了 . åŠ .. 以外的任何項目\n"
+" --author å°å‡ºæ¯å€‹æª”案的著作者\n"
+" -b, --escape 以八進ä½æº¢å‡ºåºåˆ—表示ä¸å¯åˆ—å°çš„å­—å…ƒ\n"
+
+#: src/ls.c:4291
+msgid ""
+" --block-size=SIZE use SIZE-byte blocks\n"
+" -B, --ignore-backups do not list implied entries ending with ~\n"
+" -c with -lt: sort by, and show, ctime (time of "
+"last\n"
+" modification of file status information)\n"
+" with -l: show ctime and sort by name\n"
+" otherwise: sort by ctime\n"
+msgstr ""
+" --block-size=å¤§å° å€æ®µä»¥æŒ‡å®š <大å°> çš„ä½å…ƒçµ„為單ä½\n"
+" -B, --ignore-backups ä¸åˆ—出任何以 ~ å­—å…ƒçµæŸçš„é …ç›®\n"
+" -c é…åˆ -lt:根據 ctime 排åºåŠé¡¯ç¤º ctime\n"
+" (檔案狀態最後更改的時間)\n"
+" é…åˆ -l :顯示 ctime 但根據å稱排åº\n"
+" å¦å‰‡ :根據 ctime 排åº\n"
+
+#: src/ls.c:4299
+#, fuzzy
+msgid ""
+" -C list entries by columns\n"
+" --color[=WHEN] control whether color is used to distinguish "
+"file\n"
+" types. WHEN may be `never', `always', or "
+"`auto'\n"
+" -d, --directory list directory entries instead of contents,\n"
+" and do not dereference symbolic links\n"
+" -D, --dired generate output designed for Emacs' dired mode\n"
+msgstr ""
+" -C æ¯æ¬„由上至下列出項目\n"
+" --color[=WHEN] 控制是å¦ä½¿ç”¨è‰²å½©åˆ†è¾¨æª”案。WHEN å¯ä»¥æ˜¯\n"
+" ‘never’ã€â€˜always’或‘auto’其中之一\n"
+" -d, --directory 當é‡åˆ°ç›®éŒ„時列出目錄本身而éžç›®éŒ„內的檔案\n"
+" -D, --dired 產生é©åˆ Emacs çš„ dired 模å¼ä½¿ç”¨çš„çµæžœ\n"
+
+#: src/ls.c:4307
+#, fuzzy
+msgid ""
+" -f do not sort, enable -aU, disable -ls --color\n"
+" -F, --classify append indicator (one of */=>@|) to entries\n"
+" --file-type likewise, except do not append `*'\n"
+" --format=WORD across -x, commas -m, horizontal -x, long -l,\n"
+" single-column -1, verbose -l, vertical -C\n"
+" --full-time like -l --time-style=full-iso\n"
+msgstr ""
+" -f ä¸é€²è¡ŒæŽ’åºï¼Œ-aU é¸é …生效,-lst é¸é …失效\n"
+" -F, --classify 加上檔案類型的指示符號 (*/=@| 其中一個)\n"
+" --format=é—œéµå­— across -x,commas -m,horizontal -x,long -l,\n"
+" single-column -1,verbose -l,vertical -C\n"
+" --full-time å³ -l --time-style=full-iso\n"
+
+#: src/ls.c:4315
+msgid " -g like -l, but do not list owner\n"
+msgstr ""
+
+#: src/ls.c:4318
+msgid ""
+" --group-directories-first\n"
+" group directories before files\n"
+msgstr ""
+
+#: src/ls.c:4322
+#, fuzzy
+msgid ""
+" -G, --no-group in a long listing, don't print group names\n"
+" -h, --human-readable with -l, print sizes in human readable format\n"
+" (e.g., 1K 234M 2G)\n"
+" --si likewise, but use powers of 1000 not 1024\n"
+msgstr ""
+" -a, --all 包括大å°ç‚º 0 個å€æ®µçš„檔案系統\n"
+" -B, --block-size=å¤§å° å€æ®µä»¥æŒ‡å®š <大å°> çš„ä½å…ƒçµ„為單ä½\n"
+" -h, --human-readable 以容易ç†è§£çš„æ ¼å¼å°å‡ºæª”æ¡ˆç³»çµ±å¤§å° (例如 1K 234M 2G)\n"
+" -H, --si é¡žä¼¼ -h,但以 1000 為單ä½è€Œä¸æ˜¯ 1024\n"
+
+#: src/ls.c:4328
+#, fuzzy
+msgid ""
+" -H, --dereference-command-line\n"
+" follow symbolic links listed on the command "
+"line\n"
+" --dereference-command-line-symlink-to-dir\n"
+" follow each command line symbolic link\n"
+" that points to a directory\n"
+" --hide=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" (overridden by -a or -A)\n"
+msgstr ""
+" -g é¡žä¼¼ -l,但ä¸åˆ—出æ“有者\n"
+" -G, --no-group ä¸åˆ—出任何有關群組的資訊\n"
+" -h, --human-readable 以容易ç†è§£çš„æ ¼å¼å°å‡ºæª”æ¡ˆå¤§å° (例如 1K 234M 2G)\n"
+" --si é¡žä¼¼ -hï¼Œä½†å– 1000 的次方而ä¸æ˜¯ 1024\n"
+" -H, --dereference-command-line 使用指令列中的符號éˆçµæŒ‡ç¤ºçš„真正目的地\n"
+
+#: src/ls.c:4337
+#, fuzzy
+msgid ""
+" --indicator-style=WORD append indicator with style WORD to entry "
+"names:\n"
+" none (default), slash (-p),\n"
+" file-type (--file-type), classify (-F)\n"
+" -i, --inode print the index number of each file\n"
+" -I, --ignore=PATTERN do not list implied entries matching shell "
+"PATTERN\n"
+" -k like --block-size=1K\n"
+msgstr ""
+" --indicator-style=æ–¹å¼ æŒ‡å®šåœ¨æ¯å€‹é …ç›®å稱後加上指示符號 <æ–¹å¼>:\n"
+" none (é è¨­),classify (-F),file-type (-p)\n"
+" -i, --inode å°å‡ºæ¯å€‹æª”案的 inode 編號\n"
+" -I, --ignore=æ¨£å¼ ä¸å°å‡ºä»»ä½•ç¬¦åˆ shell è¬ç”¨å­—å…ƒ <樣å¼> çš„é …ç›®\n"
+" -k å³ --block-size=1K\n"
+
+#: src/ls.c:4345
+msgid ""
+" -l use a long listing format\n"
+" -L, --dereference when showing file information for a symbolic\n"
+" link, show information for the file the link\n"
+" references rather than for the link itself\n"
+" -m fill width with a comma separated list of "
+"entries\n"
+msgstr ""
+" -l 使用較長格å¼åˆ—出資訊\n"
+" -L, --dereference 當顯示符號éˆçµçš„檔案資訊時,顯示符號éˆçµæ‰€æŒ‡ç¤º\n"
+" 的目標而並éžç¬¦è™Ÿéˆçµæœ¬èº«çš„資訊\n"
+" -m 所有項目以逗號分隔,並填滿整行行寬\n"
+
+#: src/ls.c:4352
+#, fuzzy
+msgid ""
+" -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n"
+" -N, --literal print raw entry names (don't treat e.g. "
+"control\n"
+" characters specially)\n"
+" -o like -l, but do not list group information\n"
+" -p, --indicator-style=slash\n"
+" append / indicator to directories\n"
+msgstr ""
+" -n, --numeric-uid-gid é¡žä¼¼ -l,但列出 UID åŠ GID 編號\n"
+" -N, --literal å°å‡ºæœªç¶“處ç†çš„é …ç›®å稱 (例如ä¸ç‰¹åˆ¥è™•ç†æŽ§åˆ¶å­—"
+"å…ƒ)\n"
+" -o é¡žä¼¼ -l,但ä¸åˆ—出有關群組的資訊\n"
+" -p, --file-type 加上檔案類型的指示符號 (/=@| 其中一個)\n"
+
+#: src/ls.c:4360
+msgid ""
+" -q, --hide-control-chars print ? instead of non graphic characters\n"
+" --show-control-chars show non graphic characters as-is (default\n"
+" unless program is `ls' and output is a "
+"terminal)\n"
+" -Q, --quote-name enclose entry names in double quotes\n"
+" --quoting-style=WORD use quoting style WORD for entry names:\n"
+" literal, locale, shell, shell-always, c, "
+"escape\n"
+msgstr ""
+" -q, --hide-control-chars 以 ? 字元代替無法列å°çš„å­—å…ƒ\n"
+" --show-control-chars 直接顯示無法列å°çš„å­—å…ƒ (這是é è¨­æ–¹å¼ï¼Œé™¤éžèª¿ç”¨\n"
+" 的程å¼å稱是‘ls’而且是在終端機畫é¢è¼¸å‡ºçµæžœ)\n"
+" -Q, --quote-name 將項目å稱括上雙引號\n"
+" --quoting-style=æ–¹å¼ ä½¿ç”¨æŒ‡å®šçš„ quoting <æ–¹å¼>顯示項目的å稱:\n"
+" literalã€localeã€shellã€shell-alwaysã€cã€"
+"escape\n"
+
+#: src/ls.c:4368
+#, fuzzy
+msgid ""
+" -r, --reverse reverse order while sorting\n"
+" -R, --recursive list subdirectories recursively\n"
+" -s, --size print the size of each file, in blocks\n"
+msgstr ""
+" -r, --reverse ä¾ç›¸å次åºæŽ’列\n"
+" -R, --recursive åŒæ™‚列出所有å­ç›®éŒ„層\n"
+" -s, --size 以å€æ®µå¤§å°ç‚ºå–®ä½åˆ—出所有檔案的大å°\n"
+
+#: src/ls.c:4373
+#, fuzzy
+msgid ""
+" -S sort by file size\n"
+" --sort=WORD sort by WORD instead of name: none -U,\n"
+" extension -X, size -S, time -t, version -v\n"
+" --time=WORD with -l, show time as WORD instead of "
+"modification\n"
+" time: atime -u, access -u, use -u, ctime -c,\n"
+" or status -c; use specified time as sort key\n"
+" if --sort=time\n"
+msgstr ""
+" -S 根據檔案大å°æŽ’åº\n"
+" --sort=WORD 以下是å¯é¸ç”¨çš„ WORD 和它們代表的相應é¸é …:\n"
+" extension -X status -c\n"
+" none -U time -t\n"
+" size -S atime -u\n"
+" time -t access -u\n"
+" version -v use -u\n"
+" --time=WORD 顯示 WORD 所代表的時間而éžä¿®æ”¹æ™‚間:\n"
+" atimeã€accessã€useã€ctime 或 status;加上\n"
+" --sort=time é¸é …時會以指定時間作為排åºç´¢å¼•\n"
+
+#: src/ls.c:4382
+#, fuzzy
+msgid ""
+" --time-style=STYLE with -l, show times using style STYLE:\n"
+" full-iso, long-iso, iso, locale, +FORMAT.\n"
+" FORMAT is interpreted like `date'; if FORMAT "
+"is\n"
+" FORMAT1<newline>FORMAT2, FORMAT1 applies to\n"
+" non-recent files and FORMAT2 to recent files;\n"
+" if STYLE is prefixed with `posix-', STYLE\n"
+" takes effect only outside the POSIX locale\n"
+msgstr ""
+" --time-style=æ¨£å¼ æ ¹æ“š <樣å¼> 所代表的格å¼é¡¯ç¤ºæ™‚間:\n"
+" full-isoã€long-isoã€isoã€localeã€+FORMAT\n"
+" FORMAT å³æ˜¯â€˜date’所用的時間格å¼ï¼›å¦‚æžœ FORMAT\n"
+" 是 FORMAT1<newline>FORMAT2,FORMAT1 é©ç”¨æ–¼è¼ƒèˆŠ\n"
+" 的檔案而 FORMAT2 é©ç”¨æ–¼è¼ƒæ–°çš„檔案;\n"
+" 如果 <樣å¼> å‰åŠ ä¸Šâ€˜posix-’,則åªæœƒåœ¨ä¸ä½¿ç”¨\n"
+" POSIX 語系時使用該 <樣å¼>\n"
+" -t 根據修改時間排åº\n"
+" -T, --tabsize=寬度 å¦è¡ŒæŒ‡å®š tab çš„ <寬度>ï¼Œè€Œéž 8 個字元\n"
+
+#: src/ls.c:4391
+msgid ""
+" -t sort by modification time\n"
+" -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n"
+msgstr ""
+
+#: src/ls.c:4395
+msgid ""
+" -u with -lt: sort by, and show, access time\n"
+" with -l: show access time and sort by name\n"
+" otherwise: sort by access time\n"
+" -U do not sort; list entries in directory order\n"
+" -v sort by version\n"
+msgstr ""
+" -u é…åˆ -lt:顯示存å–時間而且ä¾å­˜å–時間排åº\n"
+" é…åˆ -l:顯示存å–時間但根據å稱排åº\n"
+" å¦å‰‡ï¼šæ ¹æ“šå­˜å–時間排åº\n"
+" -U ä¸é€²è¡ŒæŽ’åºï¼›ä¾æª”案系統原有的次åºåˆ—出項目\n"
+" -v 根據版本進行排åº\n"
+
+#: src/ls.c:4402
+#, fuzzy
+msgid ""
+" -w, --width=COLS assume screen width instead of current value\n"
+" -x list entries by lines instead of by columns\n"
+" -X sort alphabetically by entry extension\n"
+" -1 list one file per line\n"
+msgstr ""
+" -f, --fields=LIST åªé¡¯ç¤ºæŒ‡å®šçš„欄ä½ï¼›åŒæ™‚也å°å‡ºä¸å«åˆ†éš”符號的\n"
+" æ¯ä¸€è¡Œï¼Œé™¤éžä½¿ç”¨äº† -s é¸é …\n"
+" -n (ä¸æœƒä½œä»»ä½•è™•ç†)\n"
+
+#: src/ls.c:4414
+#, fuzzy
+msgid ""
+"\n"
+"By default, color is not used to distinguish types of files. That is\n"
+"equivalent to using --color=none. Using the --color option without the\n"
+"optional WHEN argument is equivalent to using --color=always. With\n"
+"--color=auto, color codes are output only if standard output is connected\n"
+"to a terminal (tty). The environment variable LS_COLORS can influence the\n"
+"colors, and can be set easily by the dircolors command.\n"
+msgstr ""
+"\n"
+"é è¨­æ˜¯ä¸æœƒä½¿ç”¨è‰²å½©ä¾†å€åˆ¥æª”案的。此方å¼ç­‰æ–¼ä½¿ç”¨äº† --color=none é¸é …。若使用\n"
+"--color é¸é …但ä¸æŒ‡å®š WHEN åƒæ•¸ç­‰æ–¼ --color=always。當使用 --color=auto 時,\n"
+"åªç•¶è¼¸å‡ºè‡³çµ‚ç«¯æ©Ÿç•«é¢ (tty) 時æ‰æœƒé¡¯ç¤ºè‰²å½©ã€‚\n"
+
+#: src/ls.c:4423
+msgid ""
+"\n"
+"Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n"
+msgstr ""
+
+#: src/md5sum.c:150
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]...\n"
+"Print or check %s (%d-bit) checksums.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"用法:%s [é¸é …] [檔案]...\n"
+" 或:%s [é¸é …] --check [檔案]\n"
+"å°å‡ºæˆ–檢查 %s (%d ä½å…ƒ) 總和檢查值。\n"
+"如果沒有指定 <檔案> 或 <檔案> 是 -,則由標準輸入讀å–資料。\n"
+
+#: src/md5sum.c:160
+msgid ""
+" -b, --binary read in binary mode (default unless reading tty "
+"stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:164
+#, fuzzy
+msgid " -b, --binary read in binary mode\n"
+msgstr ""
+"\n"
+" -B, --binary (DOS/Windows)以二元碼模å¼å°‡è³‡æ–™è¼¸å‡ºè‡³ç•«é¢ã€‚\n"
+"\n"
+
+#: src/md5sum.c:167
+#, c-format
+msgid " -c, --check read %s sums from the FILEs and check them\n"
+msgstr ""
+
+#: src/md5sum.c:171
+msgid ""
+" -t, --text read in text mode (default if reading tty stdin)\n"
+msgstr ""
+
+#: src/md5sum.c:175
+msgid " -t, --text read in text mode (default)\n"
+msgstr ""
+
+#: src/md5sum.c:178
+#, fuzzy
+msgid ""
+"\n"
+"The following two options are useful only when verifying checksums:\n"
+" --status don't output anything, status code shows success\n"
+" -w, --warn warn about improperly formatted checksum lines\n"
+"\n"
+msgstr ""
+"以下的兩個é¸é …åªåœ¨é©—證總和檢查值時有用:\n"
+" --status ä¸é¡¯ç¤ºä»»ä½•çµæžœï¼Œåªç”¨å›žå‚³å€¼è¡¨ç¤ºæ˜¯å¦æˆåŠŸ\n"
+" -w, --warn å°æ–¼æ¯ä¸€è¡Œå«æœ‰ä¸æ­£ç¢ºæ ¼å¼çš„總和檢查值都顯示警告\n"
+
+#: src/md5sum.c:187
+#, c-format
+msgid ""
+"\n"
+"The sums are computed as described in %s. When checking, the input\n"
+"should be a former output of this program. The default mode is to print\n"
+"a line with checksum, a character indicating type (`*' for binary, ` ' for\n"
+"text), and name for each FILE.\n"
+msgstr ""
+"\n"
+"總和檢查是根據 %s æ述的方法計算出來的。當驗證時,輸入資料必須是此程å¼ä»¥å¾€\n"
+"的輸出çµæžœã€‚é è¨­æ¨¡å¼æ˜¯å°å‡ºç¸½å’Œæª¢æŸ¥å€¼ï¼Œä¸€å€‹ä»£è¡¨æª”案類型的字元 (‘*’表示二元\n"
+"碼,‘ ’[空格] 表示文字),åŠæ¯å€‹ <檔案> çš„å稱。\n"
+
+#: src/md5sum.c:459
+#, fuzzy, c-format
+msgid "%s: too many checksum lines"
+msgstr "%s:找ä¸åˆ°æ­£ç¢ºæ ¼å¼çš„ %s 總和檢查值"
+
+#: src/md5sum.c:481
+#, fuzzy, c-format
+msgid "%s: %<PRIuMAX>: improperly formatted %s checksum line"
+msgstr "%s:%lu:該行的 %s 總和檢查值格å¼ä¸æ­£ç¢º"
+
+#: src/md5sum.c:504
+#, c-format
+msgid "%s: FAILED open or read\n"
+msgstr "%s:開啟或讀å–時發生錯誤\n"
+
+#: src/md5sum.c:528
+msgid "FAILED"
+msgstr "錯誤"
+
+#: src/md5sum.c:528
+msgid "OK"
+msgstr "正確"
+
+#: src/md5sum.c:540 src/od.c:952 src/tac.c:240 src/tac.c:351 src/tac.c:481
+#: src/tac.c:557
+#, c-format
+msgid "%s: read error"
+msgstr "%s:讀å–時發生錯誤"
+
+#: src/md5sum.c:553
+#, c-format
+msgid "%s: no properly formatted %s checksum lines found"
+msgstr "%s:找ä¸åˆ°æ­£ç¢ºæ ¼å¼çš„ %s 總和檢查值"
+
+#: src/md5sum.c:562
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> listed file could not be read"
+msgid_plural "WARNING: %<PRIuMAX> of %<PRIuMAX> listed files could not be read"
+msgstr[0] "警告:無法讀入 %2$d 個%3$s的其中 %1$d 個"
+msgstr[1] "警告:無法讀入 %2$d 個%3$s的其中 %1$d 個"
+
+#: src/md5sum.c:574
+#, fuzzy, c-format
+msgid "WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksum did NOT match"
+msgid_plural ""
+"WARNING: %<PRIuMAX> of %<PRIuMAX> computed checksums did NOT match"
+msgstr[0] "警告:%2$d 個計算出來的%3$s的其中 %1$d 個並ä¸åŒ¹é…"
+msgstr[1] "警告:%2$d 個計算出來的%3$s的其中 %1$d 個並ä¸åŒ¹é…"
+
+#: src/md5sum.c:640
+#, c-format
+msgid ""
+"the --binary and --text options are meaningless when verifying checksums"
+msgstr "當驗證總和檢查值時,é¸é … --binary åŠ --text 是沒有æ„義的"
+
+#: src/md5sum.c:648
+#, c-format
+msgid "the --status option is meaningful only when verifying checksums"
+msgstr "é¸é … --status åªæœ‰åœ¨é©—證總和檢查值時æ‰æœ‰æ„義"
+
+#: src/md5sum.c:655
+#, c-format
+msgid "the --warn option is meaningful only when verifying checksums"
+msgstr "é¸é … --warn åªæœ‰åœ¨é©—證總和檢查值時æ‰æœ‰æ„義"
+
+#: src/mkdir.c:59
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] DIRECTORY...\n"
+msgstr "用法:%s [é¸é …] [檔案]...\n"
+
+#: src/mkdir.c:60
+msgid ""
+"Create the DIRECTORY(ies), if they do not already exist.\n"
+"\n"
+msgstr ""
+"若目錄ä¸æ˜¯å·²ç¶“存在則建立目錄。\n"
+"\n"
+
+#: src/mkdir.c:67
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n"
+" -p, --parents no error if existing, make parent directories as needed\n"
+" -v, --verbose print a message for each created directory\n"
+msgstr ""
+" -m, --mode=æ¨¡å¼ è¨­å®šæ¬Šé™ <模å¼> (é¡žä¼¼ chmod),而ä¸æ˜¯ rwxrwxrwx 減 umask\n"
+" -p, --parents 需è¦æ™‚建立上層目錄,如目錄早已存在則ä¸ç•¶ä½œéŒ¯èª¤\n"
+" -v, --verbose æ¯æ¬¡å»ºç«‹æ–°ç›®éŒ„都顯示訊æ¯\n"
+
+#: src/mkdir.c:168
+#, fuzzy, c-format
+msgid "created directory %s"
+msgstr "無法建立目錄%s"
+
+#: src/mkfifo.c:54
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] NAME...\n"
+msgstr "用法:%s [é¸é …] [檔案]...\n"
+
+#: src/mkfifo.c:55
+msgid ""
+"Create named pipes (FIFOs) with the given NAMEs.\n"
+"\n"
+msgstr ""
+"以指定的 <å稱> 建立 named pipe (FIFO)。\n"
+"\n"
+
+#: src/mkfifo.c:62 src/mknod.c:64
+#, fuzzy
+msgid ""
+" -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n"
+msgstr " -m, --mode=æ¨¡å¼ æŒ‡å®šæ¬Šé™æ¨¡å¼ (é¡žä¼¼ chmod),而ä¸æ˜¯ a=rw 減 umask\n"
+
+#: src/mkfifo.c:113 src/mknod.c:123
+#, fuzzy, c-format
+msgid "invalid mode"
+msgstr "無效的數字"
+
+#: src/mkfifo.c:118 src/mknod.c:128
+#, c-format
+msgid "mode must specify only file permission bits"
+msgstr ""
+
+#: src/mknod.c:55
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"
+msgstr "用法:%s [é¸é …]... SET1 [SET2]\n"
+
+#: src/mknod.c:57
+msgid ""
+"Create the special file NAME of the given TYPE.\n"
+"\n"
+msgstr ""
+"建立指定 <é¡žåž‹> åŠ <å稱> 的特殊檔案。\n"
+"\n"
+
+#: src/mknod.c:69
+msgid ""
+"\n"
+"Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n"
+"must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n"
+"it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n"
+"otherwise, as decimal. TYPE may be:\n"
+msgstr ""
+
+#: src/mknod.c:76
+#, fuzzy
+msgid ""
+"\n"
+" b create a block (buffered) special file\n"
+" c, u create a character (unbuffered) special file\n"
+" p create a FIFO\n"
+msgstr ""
+"\n"
+"當 <é¡žåž‹> 為 p 時ä¸å¯æŒ‡å®š MAJOR åŠ MINOR,å¦å‰‡å®ƒå€‘是必須指定的。\n"
+"<é¡žåž‹> å¯ä»¥æ˜¯ï¼š\n"
+"\n"
+" b 建立 (有緩è¡çš„) å€å¡Šç‰¹æ®Šæª”案\n"
+" c, u 建立 (沒有緩è¡çš„) 字元特殊檔案\n"
+" p 建立 FIFO 特殊檔案\n"
+
+#: src/mknod.c:146
+#, fuzzy
+msgid "Special files require major and minor device numbers."
+msgstr "建立å€å¡Šç‰¹æ®Šæª”案時,必需指定 major å’Œ minor è£ç½®ç·¨è™Ÿ"
+
+#: src/mknod.c:156
+#, fuzzy
+msgid "Fifos do not have major and minor device numbers."
+msgstr "無效的開始行號:‘%s’"
+
+#: src/mknod.c:167
+#, fuzzy, c-format
+msgid "block special files not supported"
+msgstr "å€å¡Šç‰¹æ®Šæª”案"
+
+#: src/mknod.c:176
+#, fuzzy, c-format
+msgid "character special files not supported"
+msgstr "字元特殊檔案"
+
+#: src/mknod.c:192
+#, fuzzy, c-format
+msgid "invalid major device number %s"
+msgstr "無效的開始行號:‘%s’"
+
+#: src/mknod.c:197
+#, fuzzy, c-format
+msgid "invalid minor device number %s"
+msgstr "無效的開始行號:‘%s’"
+
+#: src/mknod.c:202
+#, fuzzy, c-format
+msgid "invalid device %s %s"
+msgstr "%2$sçš„åƒæ•¸%1$s無效"
+
+#: src/mknod.c:216
+#, fuzzy, c-format
+msgid "invalid device type %s"
+msgstr "%2$sçš„åƒæ•¸%1$s無效"
+
+#: src/mv.c:290
+msgid ""
+"Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n"
+"\n"
+msgstr ""
+"å°‡ <來æº> å稱更改為 <目的地> å稱,或將 <來æº> 檔案移動至 <目錄>。\n"
+"\n"
+
+#: src/mv.c:297
+#, fuzzy
+msgid ""
+" --backup[=CONTROL] make a backup of each existing destination "
+"file\n"
+" -b like --backup but does not accept an "
+"argument\n"
+" -f, --force do not prompt before overwriting\n"
+" -i, --interactive prompt before overwrite\n"
+msgstr ""
+" --backup[=CONTROL] 為æ¯å€‹å·²å­˜åœ¨çš„目的地檔案建立備份檔\n"
+" -b é¡žä¼¼ --backup,但ä¸æŽ¥å—任何åƒæ•¸\n"
+" -f, --force 覆寫檔案å‰ä¸æœƒé€²è¡Œç¢ºèªï¼Œç­‰æ–¼ --reply=yes\n"
+" -i, --interactive 覆寫檔案å‰å¿…須先確èªï¼Œç­‰æ–¼ --reply=query\n"
+
+#: src/mv.c:303
+#, fuzzy
+msgid ""
+" --strip-trailing-slashes remove any trailing slashes from each "
+"SOURCE\n"
+" argument\n"
+" -S, --suffix=SUFFIX override the usual backup suffix\n"
+msgstr ""
+" --reply={yes,no,query} 指定如何處ç†å·²å­˜åœ¨çš„目的地檔案\n"
+" --strip-trailing-slashes 移除åƒæ•¸ä¸­æ‰€æœ‰ <來æº> 檔案/目錄末端的斜號\n"
+" -S, --suffix=後置字串 自行指定備份檔的 <後置字串>\n"
+
+#: src/mv.c:308
+#, fuzzy
+msgid ""
+" -t, --target-directory=DIRECTORY move all SOURCE arguments into "
+"DIRECTORY\n"
+" -T, --no-target-directory treat DEST as a normal file\n"
+" -u, --update move only when the SOURCE file is newer\n"
+" than the destination file or when the\n"
+" destination file is missing\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+" --target-directory=目錄 將所有 <來æº> 檔案/目錄移動至 <目錄>\n"
+" -u, --update åªåœ¨ <來æº> 檔案比目的地檔案新,或目的地檔案\n"
+" ä¸å­˜åœ¨æ™‚æ‰æœƒç§»å‹•\n"
+" -v, --verbose 詳細顯示進行的步驟\n"
+
+#: src/nice.c:76
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] [COMMAND [ARG]...]\n"
+msgstr "用法:%s [é¸é …] [檔案]...\n"
+
+#: src/nice.c:77
+#, c-format
+msgid ""
+"Run COMMAND with an adjusted niceness, which affects process scheduling.\n"
+"With no COMMAND, print the current niceness. Nicenesses range from\n"
+"%d (most favorable scheduling) to %d (least favorable).\n"
+"\n"
+" -n, --adjustment=N add integer N to the niceness (default 10)\n"
+msgstr ""
+
+#: src/nice.c:155
+#, fuzzy, c-format
+msgid "invalid adjustment %s"
+msgstr "%2$sçš„åƒæ•¸%1$s無效"
+
+#: src/nice.c:164
+#, c-format
+msgid "a command must be given with an adjustment"
+msgstr ""
+
+#: src/nice.c:171 src/nice.c:182
+#, fuzzy, c-format
+msgid "cannot get niceness"
+msgstr "無法建立暫存檔"
+
+#: src/nice.c:186
+#, fuzzy, c-format
+msgid "cannot set niceness"
+msgstr "無法設定時間"
+
+#: src/nl.c:181
+msgid ""
+"Write each FILE to standard output, with line numbers added.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"å°‡æ¯å€‹ <檔案> 的內容在標準輸出顯示,並加上行號。\n"
+"如果沒有指定 <檔案> 或 <檔案> 是 -,則由標準輸入讀å–資料。\n"
+"\n"
+
+#: src/nl.c:189
+msgid ""
+" -b, --body-numbering=STYLE use STYLE for numbering body lines\n"
+" -d, --section-delimiter=CC use CC for separating logical pages\n"
+" -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n"
+msgstr ""
+" -b, --body-numbering=æ–¹å¼ æ±ºå®šå°‡å…§å®¹åŠ ä¸Šè¡Œè™Ÿçš„ <æ–¹å¼>\n"
+" -d, --section-delimiter=CC 使用 CC 字元分辨標頭ã€å…§å®¹å’Œè¨»è…³\n"
+" -f, --footer-numbering=æ–¹å¼ æ±ºå®šå°‡è¨»è…³åŠ ä¸Šè¡Œè™Ÿçš„ <æ–¹å¼>\n"
+
+#: src/nl.c:194
+msgid ""
+" -h, --header-numbering=STYLE use STYLE for numbering header lines\n"
+" -i, --page-increment=NUMBER line number increment at each line\n"
+" -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as "
+"one\n"
+" -n, --number-format=FORMAT insert line numbers according to FORMAT\n"
+" -p, --no-renumber do not reset line numbers at logical "
+"pages\n"
+" -s, --number-separator=STRING add STRING after (possible) line number\n"
+msgstr ""
+" -h, --header-numbering=æ–¹å¼ æ±ºå®šå°‡æ¨™é ­åŠ ä¸Šè¡Œè™Ÿçš„ <æ–¹å¼>\n"
+" -i, --page-increment=數字 æ¯è¡Œçš„行號增加é‡\n"
+" -l, --join-blank-lines=行數 將指定 <行數>的空行åˆä½µæˆä¸€è¡Œ\n"
+" -n, --number-format=æ ¼å¼ æ ¹æ“š <æ ¼å¼> 加上行號\n"
+" -p, --no-renumber æ¯æ¬¡åˆ†é å¾Œä¸é‡è¨­è¡Œè™Ÿ\n"
+" -s, --number-separator=字串 以 <字串> 分隔行號和內容\n"
+
+# I can't imagine manpage and --help output are so outdated -- Abel
+#: src/nl.c:202
+msgid ""
+" -v, --first-page=NUMBER first line number on each logical page\n"
+" -w, --number-width=NUMBER use NUMBER columns for line numbers\n"
+msgstr ""
+" -v, --starting-line-number=數字 æ¯é ç¬¬ä¸€è¡Œçš„行號\n"
+" -w, --number-width=數字 以指定 <數字> 的字元作為顯示行數的寬度\n"
+
+#: src/nl.c:208
+msgid ""
+"\n"
+"By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n"
+"two delimiter characters for separating logical pages, a missing\n"
+"second character implies :. Type \\\\ for \\. STYLE is one of:\n"
+msgstr ""
+"\n"
+"é è¨­çš„é¸é …為 -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn。CC 是兩個用來\n"
+"分辨æ¯é çš„標頭ã€å…§å®¹å’Œè¨»è…³çš„字元;如果沒有指定第二個字元則表示是 :。\n"
+"請輸入 \\\\ 表示 \\ 字元。<æ–¹å¼> å¯ä»¥æ˜¯ä»¥ä¸‹å…¶ä¸­ä¸€å€‹ï¼š\n"
+
+#: src/nl.c:214
+#, fuzzy
+msgid ""
+"\n"
+" a number all lines\n"
+" t number only nonempty lines\n"
+" n number no lines\n"
+" pBRE number only lines that contain a match for the basic regular\n"
+" expression, BRE\n"
+"\n"
+"FORMAT is one of:\n"
+"\n"
+" ln left justified, no leading zeros\n"
+" rn right justified, no leading zeros\n"
+" rz right justified, leading zeros\n"
+"\n"
+msgstr ""
+"\n"
+" a æ¯ä¸€è¡Œéƒ½åŠ ä¸Šè¡Œè™Ÿ\n"
+" t åªæœ‰éžç©ºç™½çš„è¡Œæ‰åŠ ä¸Šè¡Œè™Ÿ\n"
+" n æ¯ä¸€è¡Œéƒ½ä¸åŠ è¡Œè™Ÿ\n"
+" pæ­£è¦è¡¨ç¤ºå¼ åªæœ‰ç¬¦åˆ <æ­£è¦è¡¨ç¤ºå¼> çš„æ¯ä¸€è¡Œæ‰åŠ ä¸Šè¡Œè™Ÿ\n"
+"\n"
+"<æ ¼å¼> å¯ä»¥æ˜¯ä»¥ä¸‹å…¶ä¸­ä¸€å€‹ï¼š\n"
+" ln å‘å·¦å°é½Šï¼Œå‰é¢ä¸åŠ é›¶è£œä½\n"
+" rn å‘å³å°é½Šï¼Œå‰é¢ä¸åŠ é›¶è£œä½\n"
+" rz å‘å³å°é½Šï¼Œå‰é¢åŠ é›¶è£œä½\n"
+
+#: src/nl.c:281
+#, fuzzy, c-format
+msgid "line number overflow"
+msgstr "欄ä½æ˜¯ 0"
+
+#: src/nl.c:479
+#, fuzzy, c-format
+msgid "invalid header numbering style: %s"
+msgstr "無效的欄ä½è™Ÿç¢¼ï¼šâ€˜%s’"
+
+#: src/nl.c:487
+#, fuzzy, c-format
+msgid "invalid body numbering style: %s"
+msgstr "無效的數字"
+
+#: src/nl.c:495
+#, fuzzy, c-format
+msgid "invalid footer numbering style: %s"
+msgstr "欄ä½è¦æ ¼ä¸­å«æœ‰ç„¡æ•ˆçš„檔案編號:‘%s’"
+
+#: src/nl.c:504
+#, fuzzy, c-format
+msgid "invalid starting line number: %s"
+msgstr "無效的開始行號:‘%s’"
+
+#: src/nl.c:513
+#, fuzzy, c-format
+msgid "invalid line number increment: %s"
+msgstr "無效的行號增加值:‘%s’"
+
+#: src/nl.c:525
+#, fuzzy, c-format
+msgid "invalid number of blank lines: %s"
+msgstr "無效的空白行數目:‘%s’"
+
+#: src/nl.c:539
+#, fuzzy, c-format
+msgid "invalid line number field width: %s"
+msgstr "無效的行號欄ä½å¯¬åº¦ï¼šâ€˜%s’"
+
+#: src/nl.c:558
+#, fuzzy, c-format
+msgid "invalid line numbering format: %s"
+msgstr "無效的行號增加值:‘%s’"
+
+#: src/nohup.c:57
+#, fuzzy, c-format
+msgid ""
+"Usage: %s COMMAND [ARG]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s [檔案]...\n"
+" 或:%s [é¸é …]\n"
+
+#: src/nohup.c:63
+msgid ""
+"Run COMMAND, ignoring hangup signals.\n"
+"\n"
+msgstr ""
+
+#: src/nohup.c:117
+#, fuzzy, c-format
+msgid "ignoring input"
+msgstr "åƒæ•¸éŽå¤š"
+
+#: src/nohup.c:149 src/nohup.c:151
+#, fuzzy, c-format
+msgid "failed to open %s"
+msgstr "無法ä¿ç•™%s的時間"
+
+#: src/nohup.c:161
+#, fuzzy, c-format
+msgid "ignoring input and appending output to %s"
+msgstr "無法更改%sçš„æ“有者和/或所屬群組"
+
+#: src/nohup.c:179
+#, c-format
+msgid "failed to set the copy of stderr to close on exec"
+msgstr ""
+
+#: src/nohup.c:184
+#, c-format
+msgid "ignoring input and redirecting stderr to stdout"
+msgstr ""
+
+#: src/nohup.c:188
+#, c-format
+msgid "failed to redirect standard error"
+msgstr ""
+
+#: src/od.c:307
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]...\n"
+" or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n"
+" or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.]"
+"[b]]\n"
+msgstr ""
+"用法:%s [é¸é …]... [檔案]...\n"
+" 或:%s --traditional [檔案] [[+]å移值 [[+]標號]]\n"
+
+#: src/od.c:313
+msgid ""
+"\n"
+"Write an unambiguous representation, octal bytes by default,\n"
+"of FILE to standard output. With more than one FILE argument,\n"
+"concatenate them in the listed order to form the input.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"\n"
+"ä»¥æ˜Žç¢ºæ–¹å¼ (é è¨­ç‚ºå…«é€²ä½æ•¸å­—) 表示 <檔案> 的內容。當指定多於一個 <檔案> "
+"時,\n"
+"會以指定的次åºå°‡æª”案內容åˆä½µã€‚如果沒有指定 <檔案> 或 <檔案> 是 -,則由標準\n"
+"輸入讀å–資料。\n"
+"\n"
+
+#: src/od.c:320
+msgid "All arguments to long options are mandatory for short options.\n"
+msgstr "é•·é¸é …必須用的åƒæ•¸åœ¨ä½¿ç”¨çŸ­é¸é …時也是必須的。\n"
+
+#: src/od.c:323
+msgid ""
+" -A, --address-radix=RADIX decide how file offsets are printed\n"
+" -j, --skip-bytes=BYTES skip BYTES input bytes first\n"
+msgstr ""
+" -A, --address-radix=RADIX 決定基準ä½å€çš„å–®ä½\n"
+" -j, --skip-bytes=ä½å…ƒçµ„ 先略éŽæŒ‡å®š <ä½å…ƒçµ„> 的輸入資料\n"
+
+#: src/od.c:327
+#, fuzzy
+msgid ""
+" -N, --read-bytes=BYTES limit dump to BYTES input bytes\n"
+" -S, --strings[=BYTES] output strings of at least BYTES graphic "
+"chars\n"
+" -t, --format=TYPE select output format or formats\n"
+" -v, --output-duplicates do not use * to mark line suppression\n"
+" -w, --width[=BYTES] output BYTES bytes per output line\n"
+" --traditional accept arguments in traditional form\n"
+msgstr ""
+" -N, --read-bytes=ä½å…ƒçµ„ é™åˆ¶å‚¾å°çš„輸入資料 <ä½å…ƒçµ„> 數目\n"
+" -s, --strings[=ä½å…ƒçµ„] åªå°å‡ºä¸å°‘於指定 <ä½å…ƒçµ„> 大å°çš„字串常數\n"
+" -t, --format=æ ¼å¼ é¸æ“‡è¼¸å‡ºçš„ <æ ¼å¼>\n"
+" -v, --output-duplicates ä¸ä½¿ç”¨ * 表示æ¯è¡Œé‡è¤‡çš„資料\n"
+" -w, --width[=ä½å…ƒçµ„] æ¯è¡Œé¡¯ç¤ºæŒ‡å®šçš„ <ä½å…ƒçµ„> 數目\n"
+" --traditional 接å—舊å¼çš„é¸é …\n"
+
+#: src/od.c:337
+#, fuzzy
+msgid ""
+"\n"
+"Traditional format specifications may be intermixed; they accumulate:\n"
+" -a same as -t a, select named characters, ignoring high-order bit\n"
+" -b same as -t o1, select octal bytes\n"
+" -c same as -t c, select ASCII characters or backslash escapes\n"
+" -d same as -t u2, select unsigned decimal 2-byte units\n"
+msgstr ""
+"\n"
+"舊å¼çš„è¦æ ¼å¯ä»¥æ··åˆä½¿ç”¨ï¼Œè€Œä¸”效果會累ç©ï¼š\n"
+" -a 等於 -t a, 顯示 ASCII 字元或以 ASCII 表示的控制字元\n"
+" -b 等於 -t oC, 顯示八進ä½ä½å…ƒçµ„\n"
+" -c 等於 -t c, 顯示 ASCII 字元或å斜號溢出åºåˆ—\n"
+" -d 等於 -t u2, 顯示åé€²ä½ unsigned short\n"
+
+#: src/od.c:345
+#, fuzzy
+msgid ""
+" -f same as -t fF, select floats\n"
+" -i same as -t dI, select decimal ints\n"
+" -l same as -t dL, select decimal longs\n"
+" -o same as -t o2, select octal 2-byte units\n"
+" -s same as -t d2, select decimal 2-byte units\n"
+" -x same as -t x2, select hexadecimal 2-byte units\n"
+msgstr ""
+" -f 等於 -t fF, 顯示浮點數\n"
+" -h 等於 -t x2, 顯示åå…­é€²ä½ short integer\n"
+" -i 等於 -t d2, 顯示åé€²ä½ short integer\n"
+" -l 等於 -t d4, 顯示åé€²ä½ long integer\n"
+" -o 等於 -t o2, é¡¯ç¤ºå…«é€²ä½ short integer\n"
+" -x 等於 -t x2, 顯示åå…­é€²ä½ short integer\n"
+
+#: src/od.c:353
+#, fuzzy
+msgid ""
+"\n"
+"If first and second call formats both apply, the second format is assumed\n"
+"if the last operand begins with + or (if there are 2 operands) a digit.\n"
+"An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n"
+"at first byte printed, incremented when dump is progressing.\n"
+"For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n"
+"suffixes may be . for octal and b for multiply by 512.\n"
+msgstr ""
+"\n"
+"å°æ–¼èˆŠå¼çš„語法 (第二種調用的格å¼),<å移值> 等於‘-j <å移值>’。<標號>\n"
+"是第一個ä½å…ƒçµ„的虛擬地å€(本來是 0),會在傾å°è³‡æ–™æ™‚相應增加。å°æ–¼ <å移值>\n"
+"å’Œ <標號>,å‰é¢åŠ ä¸Š 0x 或 0X 表示是å六進ä½æ•¸å­—;後é¢åŠ ä¸Š . 表示是八進ä½\n"
+"數字,加上 b 則表示乘以 512。\n"
+"\n"
+"<æ ¼å¼> å¯ä»¥æ˜¯ä¸‹åˆ—一個或多個的è¦æ ¼ï¼š\n"
+"\n"
+" a ASCII 字元或以 ASCII 字元代表的控制字元\n"
+" c ASCII 字兀或å斜號溢出åºåˆ—\n"
+
+#: src/od.c:362
+msgid ""
+"\n"
+"TYPE is made up of one or more of these specifications:\n"
+"\n"
+" a named character, ignoring high-order bit\n"
+" c ASCII character or backslash escape\n"
+msgstr ""
+
+#: src/od.c:369
+msgid ""
+" d[SIZE] signed decimal, SIZE bytes per integer\n"
+" f[SIZE] floating point, SIZE bytes per integer\n"
+" o[SIZE] octal, SIZE bytes per integer\n"
+" u[SIZE] unsigned decimal, SIZE bytes per integer\n"
+" x[SIZE] hexadecimal, SIZE bytes per integer\n"
+msgstr ""
+" d[大å°] 有正負號的å進ä½æ•¸ï¼Œæ¯å€‹æ•´æ•¸ä½”指定 <大å°> çš„ä½å…ƒçµ„\n"
+" f[大å°] 浮點數,æ¯å€‹æ•´æ•¸ä½”指定 <大å°> çš„ä½å…ƒçµ„\n"
+" o[大å°] 八進ä½æ•¸ï¼Œæ¯å€‹æ•´æ•¸ä½”指定 <大å°> çš„ä½å…ƒçµ„\n"
+" u[大å°] 無正負號的å進ä½æ•¸ï¼Œæ¯å€‹æ•´æ•¸ä½”指定 <大å°> çš„ä½å…ƒçµ„\n"
+" x[大å°] å六進ä½æ•¸ï¼Œæ¯å€‹æ•´æ•¸ä½”指定 <大å°> çš„ä½å…ƒçµ„\n"
+
+#: src/od.c:376
+msgid ""
+"\n"
+"SIZE is a number. For TYPE in doux, SIZE may also be C for\n"
+"sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n"
+"sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n"
+"for sizeof(double) or L for sizeof(long double).\n"
+msgstr ""
+"\n"
+"<大å°> 是一個數字。當 <æ ¼å¼> 是 doux 其中之一時,<大å°> 也å¯ä»¥æ˜¯ï¼šè¡¨ç¤º\n"
+"sizeof(char) çš„ Cã€è¡¨ç¤º sizeof(short) çš„ Sã€è¡¨ç¤º sizeof(int) çš„ I 或\n"
+"表示 sizeof(long) çš„ L。如果 <æ ¼å¼> 是 f,<大å°> å¯ä»¥æ˜¯è¡¨ç¤º sizeof(float)\n"
+"çš„ Fã€è¡¨ç¤º sizeof(double) çš„ D 或表示 sizeof(long double) çš„ L。\n"
+
+#: src/od.c:383
+msgid ""
+"\n"
+"RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n"
+"BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n"
+"with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n"
+"any type adds a display of printable characters to the end of each line\n"
+"of output. "
+msgstr ""
+"\n"
+"RADIX çš„é¸æ“‡ç‚ºï¼šd 表示å進ä½ï¼Œo 表示八進ä½ï¼Œh 表示å六進ä½ï¼Œæˆ– n 表示\n"
+"ä¸é¡¯ç¤ºåŸºæº–ä½å€ã€‚<ä½å…ƒçµ„> å¯ä»¥æ˜¯å‰ç½® 0x 或 0X çš„å六進ä½æ•¸å­—;如果 <ä½å…ƒçµ„>\n"
+"後加上 b 字元表示將數字乘以 512,加上 k 表示乘以 1024,加上 m 表示乘以\n"
+"1048576。在任何 <æ ¼å¼> 後加上 z 字元會在æ¯è¡Œè¼¸å‡ºå¾Œé¡¯ç¤ºç›¸æ‡‰çš„å¯åˆ—å°å­—元。"
+
+#: src/od.c:391
+#, fuzzy
+msgid ""
+"--string without a number implies 3. --width without a number\n"
+"implies 32. By default, od uses -A o -t d2 -w16.\n"
+msgstr ""
+" \n"
+"--string ä¸åŠ æ•¸å­—表示字串長度是 3。--width ä¸åŠ æ•¸å­—表示寬度是 32。é è¨­\n"
+"od 使用的é¸é …是 -A o -t d2 -w 16。\n"
+
+#: src/od.c:683 src/od.c:802
+#, fuzzy, c-format
+msgid "invalid type string %s"
+msgstr "無效的類型‘%s’"
+
+#: src/od.c:693
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte integral type"
+msgstr ""
+"‘%s’是無效的類型;\n"
+"此系統ä¸æ”¯æ´ %lu ä½å…ƒçµ„的整數"
+
+#: src/od.c:812
+#, fuzzy, c-format
+msgid ""
+"invalid type string %s;\n"
+"this system doesn't provide a %lu-byte floating point type"
+msgstr ""
+"‘%s’是無效的類型;\n"
+"此系統ä¸æ”¯æ´ %lu ä½å…ƒçµ„的浮點數"
+
+#: src/od.c:871
+#, fuzzy, c-format
+msgid "invalid character `%c' in type string %s"
+msgstr "類型‘%2$s’中å«æœ‰ç„¡æ•ˆçš„字元‘%1$c’。"
+
+#: src/od.c:1096
+#, c-format
+msgid "cannot skip past end of combined input"
+msgstr "無法移至åˆä½µå¾Œçš„輸入資料的末端之後"
+
+#: src/od.c:1644
+#, c-format
+msgid "invalid output address radix `%c'; it must be one character from [doxn]"
+msgstr "輸出ä½å€çš„基數‘%c’是無效的;基數必須是 [doxn] 四個字元其中之一"
+
+#: src/od.c:1655
+msgid "skip argument"
+msgstr "ç•¥éŽåƒæ•¸"
+
+#: src/od.c:1664
+msgid "limit argument"
+msgstr "é™åˆ¶åƒæ•¸"
+
+#: src/od.c:1675
+msgid "minimum string length"
+msgstr "最å°å­—串長度"
+
+#: src/od.c:1747
+msgid "width specification"
+msgstr "寬度è¦æ ¼"
+
+#: src/od.c:1769
+#, c-format
+msgid "no type may be specified when dumping strings"
+msgstr "傾å°å­—串時ä¸èƒ½æŒ‡å®šé¡žåž‹"
+
+#: src/od.c:1844
+#, fuzzy
+msgid "Compatibility mode supports at most one file."
+msgstr "在相容性模å¼ä¸‹ï¼Œæœ€å¤šåªèƒ½æœ‰ä¸‰å€‹åƒæ•¸"
+
+#: src/od.c:1865
+#, c-format
+msgid "skip-bytes + read-bytes is too large"
+msgstr ""
+
+#: src/od.c:1908
+#, c-format
+msgid "warning: invalid width %lu; using %d instead"
+msgstr "警告:寬度 %lu 是無效的;以 %d 代替"
+
+#: src/od.c:1924
+#, c-format
+msgid "%d: fmt=\"%s\" width=%d\n"
+msgstr "%d:格å¼=\"%s\" 寬度=%d\n"
+
+#: src/paste.c:202
+#, c-format
+msgid "standard input is closed"
+msgstr "已關閉標準輸入"
+
+#: src/paste.c:421
+msgid ""
+"Write lines consisting of the sequentially corresponding lines from\n"
+"each FILE, separated by TABs, to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"å°‡æ¯å€‹ <檔案> 相應的æ¯ä¸€è¡Œç”¨ TAB 隔開,在標準輸出中並排顯示。\n"
+"如果沒有指定 <檔案> 或 <檔案> 是 -,則由標準輸入讀å–資料。\n"
+
+#: src/paste.c:430
+msgid ""
+" -d, --delimiters=LIST reuse characters from LIST instead of TABs\n"
+" -s, --serial paste one file at a time instead of in parallel\n"
+msgstr ""
+" -d, --delimiters=列表 å覆使用 <列表> 中的字元代替 TAB\n"
+" -s, --serial æ¯æ¬¡åˆä½µä¸€å€‹æª”案中的æ¯ä¸€è¡Œï¼Œè€Œéžæ‰€æœ‰æª”案的æŸä¸€è¡Œ\n"
+
+#: src/pathchk.c:99
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... NAME...\n"
+msgstr "用法:%s [é¸é …]... [檔案]...\n"
+
+#: src/pathchk.c:100
+msgid ""
+"Diagnose unportable constructs in NAME.\n"
+"\n"
+" -p check for most POSIX systems\n"
+" -P check for empty names and leading \"-\"\n"
+" --portability check for all POSIX systems (equivalent to -p -P)\n"
+msgstr ""
+
+#: src/pathchk.c:180
+#, c-format
+msgid "leading `-' in a component of file name %s"
+msgstr ""
+
+#: src/pathchk.c:206
+#, fuzzy, c-format
+msgid "nonportable character %s in file name %s"
+msgstr "類型‘%2$s’中å«æœ‰ç„¡æ•ˆçš„字元‘%1$c’。"
+
+#: src/pathchk.c:282
+#, fuzzy, c-format
+msgid "empty file name"
+msgstr "普通空白檔案"
+
+#: src/pathchk.c:324
+#, c-format
+msgid "%s: unable to determine maximum file name length"
+msgstr ""
+
+#: src/pathchk.c:335
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name %s"
+msgstr ""
+
+#: src/pathchk.c:421
+#, c-format
+msgid "limit %lu exceeded by length %lu of file name component %s"
+msgstr ""
+
+#: src/pinky.c:327
+#, c-format
+msgid "Login name: "
+msgstr ""
+
+#: src/pinky.c:330
+#, c-format
+msgid "In real life: "
+msgstr ""
+
+#: src/pinky.c:333
+msgid "???\n"
+msgstr ""
+
+#: src/pinky.c:353
+#, fuzzy, c-format
+msgid "Directory: "
+msgstr "目錄"
+
+#: src/pinky.c:355
+#, c-format
+msgid "Shell: "
+msgstr ""
+
+#: src/pinky.c:376
+#, c-format
+msgid "Project: "
+msgstr ""
+
+#: src/pinky.c:402
+#, c-format
+msgid "Plan:\n"
+msgstr ""
+
+#: src/pinky.c:421
+msgid "Login"
+msgstr ""
+
+#: src/pinky.c:423
+msgid "Name"
+msgstr ""
+
+#: src/pinky.c:424
+msgid " TTY"
+msgstr ""
+
+#: src/pinky.c:426
+msgid "Idle"
+msgstr ""
+
+#: src/pinky.c:427
+msgid "When"
+msgstr ""
+
+#: src/pinky.c:430
+msgid "Where"
+msgstr ""
+
+#: src/pinky.c:510
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [USER]...\n"
+msgstr "用法:%s [é¸é …]... [檔案]...\n"
+
+#: src/pinky.c:511
+msgid ""
+"\n"
+" -l produce long format output for the specified USERs\n"
+" -b omit the user's home directory and shell in long format\n"
+" -h omit the user's project file in long format\n"
+" -p omit the user's plan file in long format\n"
+" -s do short format output, this is the default\n"
+msgstr ""
+
+#: src/pinky.c:519
+msgid ""
+" -f omit the line of column headings in short format\n"
+" -w omit the user's full name in short format\n"
+" -i omit the user's full name and remote host in short format\n"
+" -q omit the user's full name, remote host and idle time\n"
+" in short format\n"
+msgstr ""
+
+#: src/pinky.c:528
+#, c-format
+msgid ""
+"\n"
+"A lightweight `finger' program; print user information.\n"
+"The utmp file will be %s.\n"
+msgstr ""
+
+#: src/pinky.c:612
+#, fuzzy, c-format
+msgid "no username specified; at least one must be specified when using -l"
+msgstr "使用é¸é … --string 時ä¸èƒ½å†æŒ‡å®šæª”案"
+
+#: src/pr.c:807 src/pr.c:817
+#, fuzzy
+msgid "page range"
+msgstr "多餘的åƒæ•¸â€˜%s’"
+
+#: src/pr.c:914
+#, c-format
+msgid "`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"
+msgstr "‘--pages=開始é ç¢¼[:çµæŸé ç¢¼]’缺少了åƒæ•¸"
+
+#: src/pr.c:916
+#, fuzzy, c-format
+msgid "Invalid page range %s"
+msgstr "無效的類型‘%s’"
+
+#: src/pr.c:981
+#, fuzzy, c-format
+msgid "`-l PAGE_LENGTH' invalid number of lines: %s"
+msgstr "‘-l æ¯é è¡Œæ•¸â€™çš„行數無效:‘%s’"
+
+#: src/pr.c:1005
+#, fuzzy, c-format
+msgid "`-N NUMBER' invalid starting line number: %s"
+msgstr "‘-N 行號’的開始行號無效:‘%s’"
+
+#: src/pr.c:1017
+#, fuzzy, c-format
+msgid "`-o MARGIN' invalid line offset: %s"
+msgstr "‘-o 邊界’的字元å移值無效:‘%s’"
+
+#: src/pr.c:1058
+#, fuzzy, c-format
+msgid "`-w PAGE_WIDTH' invalid number of characters: %s"
+msgstr "‘-w é å¯¬â€™çš„字元數目無效:‘%s’"
+
+#: src/pr.c:1072
+#, fuzzy, c-format
+msgid "`-W PAGE_WIDTH' invalid number of characters: %s"
+msgstr "‘-W é å¯¬â€™çš„字元數目無效:‘%s’"
+
+#: src/pr.c:1102
+#, c-format
+msgid "Cannot specify number of columns when printing in parallel."
+msgstr "並排列å°æ™‚ä¸èƒ½åŒæ™‚指定欄ä½æ•¸ç›®ã€‚"
+
+#: src/pr.c:1106
+#, c-format
+msgid "Cannot specify both printing across and printing in parallel."
+msgstr "ä¸èƒ½åŒæ™‚指定橫å‘列å°èˆ‡ä¸¦æŽ’列å°ã€‚"
+
+#: src/pr.c:1202
+#, fuzzy, c-format
+msgid "`-%c' extra characters or invalid number in the argument: %s"
+msgstr "åƒæ•¸â€˜%2$s’å«æœ‰å¤šé¤˜çš„字元‘-%1$c’或無效的數字"
+
+#: src/pr.c:1312
+#, c-format
+msgid "page width too narrow"
+msgstr "é é¢å¤ªçª„"
+
+#: src/pr.c:2376
+#, c-format
+msgid "starting page number %<PRIuMAX> exceeds page count %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2406
+#, fuzzy, c-format
+msgid "Page number overflow"
+msgstr "欄ä½æ˜¯ 0"
+
+#: src/pr.c:2411
+#, c-format
+msgid "Page %<PRIuMAX>"
+msgstr ""
+
+#: src/pr.c:2772
+msgid ""
+"Paginate or columnate FILE(s) for printing.\n"
+"\n"
+msgstr ""
+"å°‡ <檔案> 分é æˆ–分欄以便列å°ã€‚\n"
+"\n"
+
+#: src/pr.c:2779
+#, fuzzy
+msgid ""
+" +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n"
+" begin [stop] printing with page FIRST_[LAST_]PAGE\n"
+" -COLUMN, --columns=COLUMN\n"
+" output COLUMN columns and print columns down,\n"
+" unless -a is used. Balance number of lines in the\n"
+" columns on each page.\n"
+msgstr ""
+" +開始é ç¢¼[:çµæŸé ç¢¼], --pages=開始é ç¢¼[:çµæŸé ç¢¼]\n"
+" åªå°å‡ºç”± <開始é ç¢¼> 至 <çµæŸé ç¢¼> çš„æ¯ä¸€é \n"
+" -欄數, --columns=欄數\n"
+" 將輸出分為指定的 <欄數> 顯示,而æ¯ä¸€æ¬„都是å‘下列å°çš„,\n"
+" 除éžä½¿ç”¨ -a é¸é …。它也會平å‡åˆ†ä½ˆæ¯é ä¸­æ‰€æœ‰æ¬„ä½çš„行數。\n"
+
+#: src/pr.c:2787
+msgid ""
+" -a, --across print columns across rather than down, used together\n"
+" with -COLUMN\n"
+" -c, --show-control-chars\n"
+" use hat notation (^G) and octal backslash notation\n"
+" -d, --double-space\n"
+" double space the output\n"
+msgstr ""
+" -a, --across å°å‡ºå…§å®¹æ™‚æœƒå…ˆæ©«è·¨æ‰€æœ‰æ¬„ä½ (æ©«å‘列å°),並éžå°å®Œä¸€æ¬„æ‰\n"
+" 跳至第二欄繼續列å°ï¼›æ­¤é¸é …需è¦é…åˆ -欄數 使用\n"
+" -c, --show-control-chars\n"
+" 使用 ^ 符號 (^G) 或å斜號加八進ä½æ•¸å­—顯示無法列å°çš„å­—å…ƒ\n"
+" -d, --double-space\n"
+" 隔行顯示çµæžœ\n"
+
+# -F and -f are just the same, help text is ambiguous -- maddog
+#: src/pr.c:2795
+msgid ""
+" -D, --date-format=FORMAT\n"
+" use FORMAT for the header date\n"
+" -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n"
+" expand input CHARs (TABs) to tab WIDTH (8)\n"
+" -F, -f, --form-feed\n"
+" use form feeds instead of newlines to separate pages\n"
+" (by a 3-line page header with -F or a 5-line header\n"
+" and trailer without -F)\n"
+msgstr ""
+" -D, --date-format=æ ¼å¼\n"
+" 使用 <æ ¼å¼> 顯示標頭的日期\n"
+" -e[字元[寬度]], --expand-tabs[=字元[寬度]]\n"
+" 將輸入資料中的 <å­—å…ƒ> (é è¨­ç‚º TAB) 轉æ›ç‚ºæŒ‡å®š <寬度> çš„\n"
+" 空格數目 (é è¨­ç‚º 8)\n"
+" -F, -f, --form-feed\n"
+" 使用 form feed 而ä¸æ˜¯ newline å­—å…ƒä¾†åˆ†é  (使用此é¸é …\n"
+" 時åªæœƒå°å‡ºä¸‰è¡Œæ¨™é ­ï¼Œå¦å‰‡æœƒå°å‡ºäº”行標頭å†åŠ è¨»è…³)\n"
+
+#: src/pr.c:2805
+msgid ""
+" -h HEADER, --header=HEADER\n"
+" use a centered HEADER instead of filename in page "
+"header,\n"
+" -h \"\" prints a blank line, don't use -h\"\"\n"
+" -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n"
+" replace spaces with CHARs (TABs) to tab WIDTH (8)\n"
+" -J, --join-lines merge full lines, turns off -W line truncation, no "
+"column\n"
+" alignment, --sep-string[=STRING] sets separators\n"
+msgstr ""
+" -h 標頭文字, --header=標頭文字\n"
+" æ¯é çš„標頭使用置中的 <標頭文字> 代替檔案å稱;-h \"\"\n"
+" 表示空白字串,ä¸è¦ä½¿ç”¨ -h\"\" (ç•™æ„空格)\n"
+" -i[字元[寬度]], --output-tabs[=字元[寬度]]\n"
+" 將指定 <寬度> 的空格轉æ›ç‚º <å­—å…ƒ> (é è¨­ç‚º TAB)\n"
+" -J, --join-lines å°‡æ¯è¡Œè³‡æ–™å®Œæ•´åœ°åˆä½µï¼›æœƒé—œé–‰ -W é¸é …å°‡æ¯è¡Œæˆªæ–·çš„效果;\n"
+" ä¸å°‡æ¯æ¬„å°é½Šï¼›--sep-string[=字串] é¸é …å¯è¨­å®šåˆ†éš”字串\n"
+
+#: src/pr.c:2814
+msgid ""
+" -l PAGE_LENGTH, --length=PAGE_LENGTH\n"
+" set the page length to PAGE_LENGTH (66) lines\n"
+" (default number of lines of text 56, and with -F 63)\n"
+" -m, --merge print all files in parallel, one in each column,\n"
+" truncate lines, but join lines of full length with -J\n"
+msgstr ""
+" -l æ¯é è¡Œæ•¸, --length=æ¯é è¡Œæ•¸\n"
+" 設定æ¯é çš„總行數 (é è¨­ç‚º 66)\n"
+" (é è¨­å¯é¡¯ç¤ºè³‡æ–™å…§å®¹çš„行數為 56,使用 -F é¸é …時為 63)\n"
+" -m, --merge 並排顯示所有檔案 (æ¯æ¬„一個檔案);會將資料截短至符åˆ\n"
+" 欄寬,但使用 -J é¸é …則ä¸æœƒæˆªçŸ­ä»»ä½•ä¸€è¡Œ\n"
+
+#: src/pr.c:2821
+msgid ""
+" -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n"
+" number lines, use DIGITS (5) digits, then SEP (TAB),\n"
+" default counting starts with 1st line of input file\n"
+" -N NUMBER, --first-line-number=NUMBER\n"
+" start counting with NUMBER at 1st line of first\n"
+" page printed (see +FIRST_PAGE)\n"
+msgstr ""
+" -n[SEP[ä½æ•¸]], --number-lines[=SEP[ä½æ•¸]]\n"
+" 加上行號;行號由指定 <ä½æ•¸> 的數字(é è¨­ç‚º 5)加上 SEP å­—\n"
+" å…ƒ (é è¨­ç‚º TAB) 組æˆï¼›è¨ˆç®—行號時會以æ¯å€‹æª”案第一行開始\n"
+" -N 行號, --first-line-number=行號\n"
+" 指定æ¯å€‹æª”案第一行的 <行號> (è«‹åƒè€ƒ +開始é ç¢¼ 的說明)\n"
+
+#: src/pr.c:2829
+msgid ""
+" -o MARGIN, --indent=MARGIN\n"
+" offset each line with MARGIN (zero) spaces, do not\n"
+" affect -w or -W, MARGIN will be added to PAGE_WIDTH\n"
+" -r, --no-file-warnings\n"
+" omit warning when a file cannot be opened\n"
+msgstr ""
+" -o 邊界, --indent=邊界\n"
+" æ¯è¡Œå‰å…ˆåŠ ä¸Š <é‚Šç•Œ> 所指定的空格數目(é è¨­ç‚º 0)ï¼›ä¸æœƒ\n"
+" 影響 -w 或 -W é¸é …ï¼›<é‚Šç•Œ> 空格數目會加至 <é å¯¬> 的數目\n"
+" -r, --no-file-warnings\n"
+" 無法開啟檔案時ä¸æœƒå°å‡ºè­¦å‘Šè¨Šæ¯\n"
+
+#: src/pr.c:2836
+msgid ""
+" -s[CHAR],--separator[=CHAR]\n"
+" separate columns by a single character, default for "
+"CHAR\n"
+" is the <TAB> character without -w and 'no char' with -w\n"
+" -s[CHAR] turns off line truncation of all 3 column\n"
+" options (-COLUMN|-a -COLUMN|-m) except -w is set\n"
+msgstr ""
+" -s[å­—å…ƒ],--separator[=å­—å…ƒ]\n"
+" 以一個字元分隔欄ä½ï¼Œç•¶ä¸ä½¿ç”¨ -w é¸é …時é è¨­å­—元為\n"
+" <TAB>,å¦å‰‡ä¸ä½¿ç”¨ä»»ä½•åˆ†éš”å­—å…ƒ\n"
+" 除éžä½¿ç”¨äº† -w é¸é …,å¦å‰‡ -s[å­—å…ƒ] 會防止以下三種\n"
+" 和欄ä½æœ‰é—œçš„é¸é …截斷æ¯è¡Œçš„資料: -欄ä½ã€-a -欄ä½ã€\n"
+" -m\n"
+
+#: src/pr.c:2843
+msgid " -SSTRING, --sep-string[=STRING]\n"
+msgstr " -S字串, --sep-string[=字串]\n"
+
+#: src/pr.c:2846
+#, fuzzy
+msgid ""
+" separate columns by STRING,\n"
+" without -S: Default separator <TAB> with -J and <space>\n"
+" otherwise (same as -S\" \"), no effect on column "
+"options\n"
+" -t, --omit-header omit page headers and trailers\n"
+msgstr ""
+" 以 <字串> 分隔欄ä½ã€‚\n"
+" ä¸ä½¿ç”¨ -S é¸é …時,é è¨­çš„分隔字串為:使用 -J é¸é …時是\n"
+" <TAB>,å¦å‰‡æ˜¯ <空格> (å³ -S\" \");此é¸é …ä¸æœƒå½±éŸ¿å…¶å®ƒå’Œ\n"
+" 欄ä½æœ‰é—œçš„é¸é …\n"
+" -t, --omit-header ä¸å°å‡ºæ¨™é ­å’Œè¨»è…³\n"
+
+#: src/pr.c:2852
+msgid ""
+" -T, --omit-pagination\n"
+" omit page headers and trailers, eliminate any "
+"pagination\n"
+" by form feeds set in input files\n"
+" -v, --show-nonprinting\n"
+" use octal backslash notation\n"
+" -w PAGE_WIDTH, --width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters for\n"
+" multiple text-column output only, -s[char] turns off "
+"(72)\n"
+msgstr ""
+" -T, --omit-pagination\n"
+" ä¸å°å‡ºä»»ä½•æ¨™é ­å’Œè¨»è…³ï¼Œä¸é€²è¡Œä»»ä½•å› è¼¸å…¥æª”çš„ form feed\n"
+" 字元而起的分é æ“作\n"
+" -v, --show-nonprinting\n"
+" 使用å斜號加八進ä½æ•¸å­—的表示法顯示無法列å°çš„å­—å…ƒ\n"
+" -w é å¯¬, --width=é å¯¬\n"
+" 當顯示多欄的文字時設定 <é å¯¬> (é è¨­ç‚º 72 å­—å…ƒ)ï¼›-s[å­—"
+"å…ƒ]\n"
+" 會關閉此效果\n"
+
+#: src/pr.c:2862
+msgid ""
+" -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n"
+" set page width to PAGE_WIDTH (72) characters always,\n"
+" truncate lines, except -J option is set, no "
+"interference\n"
+" with -S or -s\n"
+msgstr ""
+" -W é å¯¬, --page-width=é å¯¬\n"
+" 設定æ¯é çš„ <é å¯¬> (é è¨­ç‚º 72 個字元);任何一行太長都會\n"
+" 強行截短至符åˆé å¯¬ï¼Œé™¤éžåŒæ™‚使用 -J é¸é …ï¼›ä¸æœƒå½±éŸ¿ -S\n"
+" 或 -s é¸é …\n"
+
+#: src/pr.c:2870
+msgid ""
+"\n"
+"-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n"
+"FILE is -, read standard input.\n"
+msgstr ""
+"\n"
+"當 nn <= 10 (é…åˆ -F é¸é …時 nn <= 3) 的時候,使用 -l nn é¸é …å³è¡¨ç¤º -T é¸é …\n"
+"已生效。如果沒有指定 <檔案> 或 <檔案> 是 -,則由標準輸入讀å–資料。\n"
+
+#: src/printenv.c:61
+#, c-format
+msgid ""
+"Usage: %s [VARIABLE]...\n"
+" or: %s OPTION\n"
+"If no environment VARIABLE specified, print them all.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:80
+#, c-format
+msgid ""
+"warning: %s: character(s) following character constant have been ignored"
+msgstr ""
+
+#: src/printf.c:93
+#, c-format
+msgid ""
+"Usage: %s FORMAT [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s [æ ¼å¼] [åƒæ•¸]...\n"
+" 或:%s [é¸é …]\n"
+
+#: src/printf.c:98
+msgid ""
+"Print ARGUMENT(s) according to FORMAT.\n"
+"\n"
+msgstr ""
+
+#: src/printf.c:104
+msgid ""
+"\n"
+"FORMAT controls the output as in C printf. Interpreted sequences are:\n"
+"\n"
+" \\\" double quote\n"
+" \\NNN character with octal value NNN (1 to 3 digits)\n"
+" \\\\ backslash\n"
+msgstr ""
+
+#: src/printf.c:112
+msgid ""
+" \\a alert (BEL)\n"
+" \\b backspace\n"
+" \\c produce no further output\n"
+" \\f form feed\n"
+msgstr ""
+" \\a éŸ¿è² (BEL)\n"
+" \\b 倒退字元 (backspace)\n"
+" \\c 立刻終止輸出任何內容\n"
+" \\f æ›é å­—å…ƒ (form feed)\n"
+
+#: src/printf.c:118
+msgid ""
+" \\n new line\n"
+" \\r carriage return\n"
+" \\t horizontal tab\n"
+" \\v vertical tab\n"
+msgstr ""
+" \\n æ›è¡Œå­—å…ƒ (new line)\n"
+" \\r 復ä½å­—å…ƒ (return)\n"
+" \\t 水平定ä½å­—å…ƒ (tab)\n"
+" \\v 垂直定ä½å­—å…ƒ\n"
+
+#: src/printf.c:124
+msgid ""
+" \\xHH byte with hexadecimal value HH (1 to 2 digits)\n"
+" \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n"
+" \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n"
+msgstr ""
+
+#: src/printf.c:129
+msgid ""
+" %% a single %\n"
+" %b ARGUMENT as a string with `\\' escapes interpreted,\n"
+" except that octal escapes are of the form \\0 or \\0NNN\n"
+"\n"
+"and all C format specifications ending with one of diouxXfeEgGcs, with\n"
+"ARGUMENTs converted to proper type first. Variable widths are handled.\n"
+msgstr ""
+
+#: src/printf.c:154
+#, c-format
+msgid "%s: expected a numeric value"
+msgstr ""
+
+#: src/printf.c:156
+#, c-format
+msgid "%s: value not completely converted"
+msgstr ""
+
+#: src/printf.c:250 src/printf.c:277
+#, c-format
+msgid "missing hexadecimal number in escape"
+msgstr ""
+
+#: src/printf.c:289
+#, fuzzy, c-format
+msgid "invalid universal character name \\%c%0*x"
+msgstr "無效的字元種類‘%s’"
+
+#: src/printf.c:550
+#, fuzzy, c-format
+msgid "invalid field width: %s"
+msgstr "無效的寬度:‘%s’"
+
+#: src/printf.c:585
+#, fuzzy, c-format
+msgid "invalid precision: %s"
+msgstr "無效的寬度é¸é …:‘%s’"
+
+#: src/printf.c:612
+#, fuzzy, c-format
+msgid "%.*s: invalid conversion specification"
+msgstr "%s:無效的欄ä½è¦æ ¼â€˜%s’"
+
+#: src/printf.c:683
+#, c-format
+msgid "warning: ignoring excess arguments, starting with %s"
+msgstr ""
+
+#: src/ptx.c:41
+msgid "F. Pinard"
+msgstr ""
+
+#: src/ptx.c:422
+#, fuzzy, c-format
+msgid "%s (for regexp %s)"
+msgstr "%s (å°æ–¼æ­£è¦è¡¨ç¤ºå¼â€˜%s’)"
+
+#: src/ptx.c:1883
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... [INPUT]... (without -G)\n"
+" or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr ""
+"用法:%s [é¸é …]... [輸入]... (沒有 -G)\n"
+" 或:%s -G [é¸é …]... [輸入 [輸出]]\n"
+
+#: src/ptx.c:1887
+msgid ""
+"Output a permuted index, including context, of the words in the input "
+"files.\n"
+"\n"
+msgstr ""
+"顯示輸入檔中所有字詞排列後的索引,並包括該字詞å‰å¾Œçš„文字。\n"
+"\n"
+
+#: src/ptx.c:1894
+msgid ""
+" -A, --auto-reference output automatically generated references\n"
+" -G, --traditional behave more like System V `ptx'\n"
+" -F, --flag-truncation=STRING use STRING for flagging line truncations\n"
+msgstr ""
+
+#: src/ptx.c:1899
+msgid ""
+" -M, --macro-name=STRING macro name to use instead of `xx'\n"
+" -O, --format=roff generate output as roff directives\n"
+" -R, --right-side-refs put references at right, not counted in -w\n"
+" -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n"
+" -T, --format=tex generate output as TeX directives\n"
+msgstr ""
+
+#: src/ptx.c:1906
+msgid ""
+" -W, --word-regexp=REGEXP use REGEXP to match each keyword\n"
+" -b, --break-file=FILE word break characters in this FILE\n"
+" -f, --ignore-case fold lower case to upper case for sorting\n"
+" -g, --gap-size=NUMBER gap size in columns between output fields\n"
+" -i, --ignore-file=FILE read ignore word list from FILE\n"
+" -o, --only-file=FILE read only word list from this FILE\n"
+msgstr ""
+
+#: src/ptx.c:1914
+msgid ""
+" -r, --references first field of each line is a reference\n"
+" -t, --typeset-mode - not implemented -\n"
+" -w, --width=NUMBER output width in columns, reference "
+"excluded\n"
+msgstr ""
+
+#: src/ptx.c:1921
+msgid ""
+"\n"
+"With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n"
+msgstr ""
+"\n"
+"如果沒有指定 <檔案> 或 <檔案> 是 -,則由標準輸入讀入資料。\n"
+"é è¨­ä½¿ç”¨â€˜-F /’é¸é …。\n"
+
+#: src/ptx.c:2016
+#, fuzzy, c-format
+msgid "invalid gap width: %s"
+msgstr "無效的寬度:‘%s’"
+
+#: src/ptx.c:2089
+#, fuzzy, c-format
+msgid "the --copyright option is deprecated; use --version instead"
+msgstr ""
+"警告:--version-control (-V) é¸é …已經éŽæ™‚;將來的版本隨時å¯èƒ½ä¸å†æ”¯æ´\n"
+"æ­¤é¸é …。請使用 --backup=%s。"
+
+#: src/pwd.c:55
+msgid ""
+"Print the full filename of the current working directory.\n"
+"\n"
+msgstr ""
+
+#: src/pwd.c:160
+#, fuzzy, c-format
+msgid "failed to chdir to %s"
+msgstr "無法更改%s的所屬群組為 %s\n"
+
+#: src/pwd.c:164 src/pwd.c:271
+#, fuzzy, c-format
+msgid "failed to stat %s"
+msgstr "無法å–å¾—%s的屬性"
+
+#: src/pwd.c:229
+#, c-format
+msgid "couldn't find directory entry in %s with matching i-node"
+msgstr ""
+
+#: src/pwd.c:306
+#, fuzzy, c-format
+msgid "ignoring non-option arguments"
+msgstr "éžé¸é …çš„åƒæ•¸éŽå¤š"
+
+#: src/readlink.c:67
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "用法:%s [é¸é …]... [檔案]...\n"
+
+#: src/readlink.c:68
+msgid ""
+"Display value of a symbolic link on standard output.\n"
+"\n"
+msgstr ""
+
+#: src/readlink.c:70
+msgid ""
+" -f, --canonicalize canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively;\n"
+" all but the last component must exist\n"
+" -e, --canonicalize-existing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" all components must exist\n"
+msgstr ""
+
+#: src/readlink.c:78
+msgid ""
+" -m, --canonicalize-missing canonicalize by following every symlink in\n"
+" every component of the given name "
+"recursively,\n"
+" without requirements on components "
+"existence\n"
+" -n, --no-newline do not output the trailing newline\n"
+" -q, --quiet,\n"
+" -s, --silent suppress most error messages\n"
+" -v, --verbose report error messages\n"
+msgstr ""
+
+#: src/remove.c:481 src/remove.c:525
+#, fuzzy, c-format
+msgid "FATAL: failed to close directory %s"
+msgstr "無法更改%s的所屬群組為 %s\n"
+
+#: src/remove.c:494
+#, fuzzy, c-format
+msgid "FATAL: cannot open .. from %s"
+msgstr "無法建立目錄%s"
+
+#: src/remove.c:502
+#, c-format
+msgid "FATAL: cannot ensure %s (returned to via ..) is safe"
+msgstr ""
+
+#: src/remove.c:510
+#, fuzzy, c-format
+msgid "FATAL: directory %s changed dev/ino"
+msgstr "%s的所在è£ç½®æˆ– inode 改變了"
+
+#: src/remove.c:631
+#, fuzzy, c-format
+msgid "FATAL: cannot enter directory %s"
+msgstr "無法建立目錄%s"
+
+#: src/remove.c:639
+#, c-format
+msgid "FATAL: just-changed-to directory %s changed dev/ino"
+msgstr ""
+
+#: src/remove.c:647
+#, c-format
+msgid ""
+"WARNING: Circular directory structure.\n"
+"This almost certainly means that you have a corrupted file system.\n"
+"NOTIFY YOUR SYSTEM MANAGER.\n"
+"The following directory is part of the cycle:\n"
+" %s\n"
+msgstr ""
+"警告:發ç¾å¾ªç’°çš„目錄架構。\n"
+"這幾乎å¯ä»¥è‚¯å®šæª”案系統已經æ壞。\n"
+"** 請通知系統管ç†å“¡ã€‚**\n"
+"以下的目錄是循環的一部份:\n"
+" %s\n"
+
+#: src/remove.c:854
+#, fuzzy, c-format
+msgid "%s: descend into write-protected directory %s? "
+msgstr "無法建立目錄%s"
+
+#: src/remove.c:855
+#, fuzzy, c-format
+msgid "%s: descend into directory %s? "
+msgstr "無法進入%s目錄"
+
+#: src/remove.c:865
+#, c-format
+msgid "%s: remove write-protected %s %s? "
+msgstr "%s:是å¦ç§»é™¤æœ‰é˜²å¯«ä¿è­·çš„%s%s? "
+
+#: src/remove.c:866
+#, c-format
+msgid "%s: remove %s %s? "
+msgstr "%s:是å¦ç§»é™¤%s%s? "
+
+#: src/remove.c:925 src/remove.c:1429
+#, fuzzy, c-format
+msgid "removed directory: %s\n"
+msgstr "無法建立目錄%s"
+
+#: src/remove.c:1262 src/remove.c:1465
+#, fuzzy, c-format
+msgid "failed to close directory %s"
+msgstr "無法更改%s的所屬群組為 %s\n"
+
+#: src/remove.c:1384
+#, c-format
+msgid "skipping %s, since it's on a different device"
+msgstr ""
+
+#: src/remove.c:1434 src/remove.c:1484
+#, fuzzy, c-format
+msgid "cannot remove directory %s"
+msgstr "無法建立目錄%s"
+
+#: src/remove.c:1450
+#, c-format
+msgid "FATAL: cannot return to .. from %s"
+msgstr ""
+
+#: src/remove.c:1504
+#, fuzzy, c-format
+msgid "cannot remove root directory %s"
+msgstr "無法建立目錄%s"
+
+#: src/remove.c:1544
+#, fuzzy, c-format
+msgid "cannot remove relative-named %s"
+msgstr "無法建立目錄%s"
+
+#: src/remove.c:1558
+#, fuzzy, c-format
+msgid "cannot restore current working directory"
+msgstr "無法建立目錄%s"
+
+#: src/rm.c:143
+#, c-format
+msgid "Try `%s ./%s' to remove the file %s.\n"
+msgstr ""
+
+#: src/rm.c:160 src/touch.c:233
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... FILE...\n"
+msgstr "用法:%s [é¸é …]... [檔案]...\n"
+
+#: src/rm.c:161
+msgid ""
+"Remove (unlink) the FILE(s).\n"
+"\n"
+" -f, --force ignore nonexistent files, never prompt\n"
+" -i prompt before every removal\n"
+msgstr ""
+
+#: src/rm.c:167
+msgid ""
+" -I prompt once before removing more than three files, "
+"or\n"
+" when removing recursively. Less intrusive than -"
+"i,\n"
+" while still giving protection against most "
+"mistakes\n"
+" --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n"
+" always (-i). Without WHEN, prompt always\n"
+msgstr ""
+
+#: src/rm.c:174
+msgid ""
+" --one-file-system when removing a hierarchy recursively, skip any\n"
+" directory that is on a file system different from\n"
+" that of the corresponding command line argument\n"
+msgstr ""
+
+#: src/rm.c:179
+#, fuzzy
+msgid ""
+" --no-preserve-root do not treat `/' specially\n"
+" --preserve-root do not remove `/' (default)\n"
+" -r, -R, --recursive remove directories and their contents recursively\n"
+" -v, --verbose explain what is being done\n"
+msgstr ""
+"移除指定的 <檔案>。\n"
+"\n"
+" -d, --directory 移除å¯èƒ½ä»æœ‰è³‡æ–™çš„目錄 (åªé™æœ€å¤§æ¬ŠåŠ›ä½¿ç”¨è€…使用)\n"
+" -f, --force ç•¥éŽä¸å­˜åœ¨çš„檔案,ä¸é¡¯ç¤ºä»»ä½•è¨Šæ¯\n"
+" -i, --interactive 進行任何移除æ“作å‰å¿…須先確èª\n"
+" -r, -R, --recursive åŒæ™‚移除該目錄下的所有目錄層\n"
+" -v, --verbose 詳細顯示進行的步驟\n"
+
+#: src/rm.c:187
+msgid ""
+"\n"
+"By default, rm does not remove directories. Use the --recursive (-r or -R)\n"
+"option to remove each listed directory, too, along with all of its "
+"contents.\n"
+msgstr ""
+
+#: src/rm.c:192
+#, c-format
+msgid ""
+"\n"
+"To remove a file whose name starts with a `-', for example `-foo',\n"
+"use one of these commands:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+msgstr ""
+"\n"
+"è¦ç§»é™¤ç¬¬ä¸€å€‹å­—元為‘-’的檔案 (例如‘-foo’),請使用以下其中一種方法:\n"
+" %s -- -foo\n"
+"\n"
+" %s ./-foo\n"
+
+#: src/rm.c:201
+msgid ""
+"\n"
+"Note that if you use rm to remove a file, it is usually possible to recover\n"
+"the contents of that file. If you want more assurance that the contents "
+"are\n"
+"truly unrecoverable, consider using shred.\n"
+msgstr ""
+"\n"
+"請注æ„,如果使用 rm 來移除檔案,通常ä»å¯ä»¥å°‡è©²æª”案æ¢å¾©åŽŸç‹€ã€‚如果想ä¿è­‰\n"
+"該檔案的內容無法還原,請考慮使用 shred。\n"
+
+#: src/rm.c:365
+#, c-format
+msgid "%s: remove all arguments recursively? "
+msgstr ""
+
+#: src/rm.c:366
+#, fuzzy, c-format
+msgid "%s: remove all arguments? "
+msgstr "%s:是å¦ç§»é™¤%s%s? "
+
+#: src/rmdir.c:110 src/rmdir.c:208
+#, fuzzy, c-format
+msgid "removing directory, %s"
+msgstr "無法建立目錄%s"
+
+#: src/rmdir.c:140
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... DIRECTORY...\n"
+msgstr "用法:%s [é¸é …]... [檔案]...\n"
+
+#: src/rmdir.c:141
+msgid ""
+"Remove the DIRECTORY(ies), if they are empty.\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" ignore each failure that is solely because a directory\n"
+" is non-empty\n"
+msgstr ""
+"如果 <目錄> 沒有資料則移除該目錄。\n"
+"\n"
+" --ignore-fail-on-non-empty\n"
+" 忽略任何因目錄ä»æœ‰è³‡æ–™è€Œé€ æˆçš„錯誤\n"
+
+#: src/rmdir.c:148
+#, fuzzy
+msgid ""
+" -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/"
+"c' is\n"
+" similar to `rmdir a/b/c a/b a'.\n"
+" -v, --verbose output a diagnostic for every directory processed\n"
+msgstr ""
+" -p, --parents 移除 <目錄>,然後嘗試移除指定路徑中的所有上層目錄。例如:\n"
+" ‘rmdir -p a/b/c’的效果等於‘rmdir a/b/c a/b a’。\n"
+" -v, --verbose 處ç†æ¯å€‹ç›®éŒ„時都顯示訊æ¯\n"
+
+#: src/seq.c:74
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... LAST\n"
+" or: %s [OPTION]... FIRST LAST\n"
+" or: %s [OPTION]... FIRST INCREMENT LAST\n"
+msgstr ""
+"用法:%s [é¸é …]... [輸入]... (沒有 -G)\n"
+" 或:%s -G [é¸é …]... [輸入 [輸出]]\n"
+
+#: src/seq.c:79
+msgid ""
+"Print numbers from FIRST to LAST, in steps of INCREMENT.\n"
+"\n"
+" -f, --format=FORMAT use printf style floating-point FORMAT\n"
+" -s, --separator=STRING use STRING to separate numbers (default: \\n)\n"
+" -w, --equal-width equalize width by padding with leading zeroes\n"
+msgstr ""
+
+#: src/seq.c:88
+msgid ""
+"\n"
+"If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n"
+"omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n"
+"FIRST, INCREMENT, and LAST are interpreted as floating point values.\n"
+"INCREMENT is usually positive if FIRST is smaller than LAST, and\n"
+"INCREMENT is usually negative if FIRST is greater than LAST.\n"
+msgstr ""
+
+#: src/seq.c:96
+msgid ""
+"FORMAT must be suitable for printing one argument of type `double';\n"
+"it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n"
+"decimal numbers with maximum precision PREC, and to %g otherwise.\n"
+msgstr ""
+
+#: src/seq.c:134
+#, fuzzy, c-format
+msgid "invalid floating point argument: %s"
+msgstr "無效的開始行號:‘%s’"
+
+#: src/seq.c:342
+#, fuzzy, c-format
+msgid "invalid format string: %s"
+msgstr "無效的類型‘%s’"
+
+#: src/seq.c:364
+#, fuzzy, c-format
+msgid "format string may not be specified when printing equal width strings"
+msgstr "傾å°å­—串時ä¸èƒ½æŒ‡å®šé¡žåž‹"
+
+#: src/setuidgid.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s USERNAME COMMAND [ARGUMENT]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s [檔案]...\n"
+" 或:%s [é¸é …]\n"
+
+#: src/setuidgid.c:57
+msgid ""
+"Drop any supplemental groups, assume the user-ID and group-ID of\n"
+"the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n"
+"Exit with status 111 if unable to assume the required user and group ID.\n"
+"Otherwise, exit with the exit status of COMMAND.\n"
+"This program is useful only when run by root (user ID zero).\n"
+"\n"
+msgstr ""
+
+#: src/setuidgid.c:105
+#, c-format
+msgid "unknown user-ID: %s"
+msgstr ""
+
+#: src/setuidgid.c:109
+#, fuzzy, c-format
+msgid "cannot set supplemental group"
+msgstr "無法改變所屬群組至沒有å稱的群組"
+
+#: src/setuidgid.c:114
+#, fuzzy, c-format
+msgid "cannot set group-ID to %lu"
+msgstr "ä¸å¯åŒæ™‚çœç•¥ä½¿ç”¨è€…和所屬群組"
+
+#: src/setuidgid.c:118
+#, fuzzy, c-format
+msgid "cannot set user-ID to %lu"
+msgstr "ä¸å¯åŒæ™‚çœç•¥ä½¿ç”¨è€…和所屬群組"
+
+#: src/shred.c:165
+#, c-format
+msgid "Usage: %s [OPTIONS] FILE [...]\n"
+msgstr "用法:%s [é¸é …] 檔案 [...]\n"
+
+#: src/shred.c:166
+msgid ""
+"Overwrite the specified FILE(s) repeatedly, in order to make it harder\n"
+"for even very expensive hardware probing to recover the data.\n"
+"\n"
+msgstr "é‡è¤‡è¦†å¯« <檔案>,使得å³ä½¿æ˜¯æ˜‚貴的硬體åµæ¸¬å„€å™¨ä¹Ÿé›£ä»¥å°‡è³‡æ–™å¾©åŽŸã€‚\n"
+
+#: src/shred.c:174
+#, fuzzy, c-format
+msgid ""
+" -f, --force change permissions to allow writing if necessary\n"
+" -n, --iterations=N Overwrite N times instead of the default (%d)\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n"
+msgstr ""
+" -f, --force 有需è¦æ™‚強迫程å¼å¯å¯«å…¥æª”案\n"
+" -n, --iterations=N 自行指定é‡è¤‡è¦†å¯«çš„次數 (é è¨­ç‚º %d 次)\n"
+" -s, --size=N 覆寫指定的ä½å…ƒçµ„數目 (å¯æŽ¥å— Kã€Mã€G 等等的單ä½)\n"
+
+#: src/shred.c:180
+msgid ""
+" -u, --remove truncate and remove file after overwriting\n"
+" -v, --verbose show progress\n"
+" -x, --exact do not round file sizes up to the next full block;\n"
+" this is the default for non-regular files\n"
+" -z, --zero add a final overwrite with zeros to hide shredding\n"
+msgstr ""
+" -u, --remove 覆寫後會截斷åŠç§»é™¤è©²æª”案\n"
+" -v, --verbose 顯示進度\n"
+" -x, --exact ä¸å°‡æª”案大å°å¢žåŠ è‡³æœ€æŽ¥è¿‘çš„å€æ®µå¤§å°ï¼›å¦‚果檔案ä¸æ˜¯æ™®é€šæª”案,\n"
+" é è¨­æœƒä½¿ç”¨é€™ç¨®æ¨¡å¼\n"
+" -z, --zero 最後一次會使用 0 ä½å…ƒçµ„進行覆寫來隱è—覆寫動作\n"
+
+#: src/shred.c:189
+msgid ""
+"\n"
+"If FILE is -, shred standard output.\n"
+"\n"
+"Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n"
+"the files because it is common to operate on device files like /dev/hda,\n"
+"and those files usually should not be removed. When operating on regular\n"
+"files, most people use the --remove option.\n"
+"\n"
+msgstr ""
+"\n"
+"如果 <檔案> 是 -,會覆寫標準輸入的內容。\n"
+"\n"
+"如果加上 --remove (-u) é¸é …表示移除 <檔案>。é è¨­çš„æ–¹å¼æ˜¯ä¸ç§»é™¤æª”案,\n"
+"å› ç‚ºè¦†å¯«åƒ /dev/hda 等的è£ç½®æª”案是很普é的,而這些檔案通常ä¸æ‡‰ç§»é™¤ã€‚\n"
+"當覆寫普通檔案時,絕大多數人都應該使用 --remove é¸é …。\n"
+
+#: src/shred.c:199
+#, fuzzy
+msgid ""
+"CAUTION: Note that shred relies on a very important assumption:\n"
+"that the file system overwrites data in place. This is the traditional\n"
+"way to do things, but many modern file system designs do not satisfy this\n"
+"assumption. The following are examples of file systems on which shred is\n"
+"not effective, or is not guaranteed to be effective in all file system "
+"modes:\n"
+"\n"
+msgstr ""
+"警告:請注æ„使用 shred 時有一個很é‡è¦çš„æ¢ä»¶ï¼š\n"
+"檔案系統會在原來的ä½ç½®è¦†å¯«æŒ‡å®šçš„資料。傳統的檔案系統符åˆæ­¤æ¢ä»¶ï¼Œä½†è¨±å¤šè¼ƒæ–°\n"
+"的檔案系統都ä¸ç¬¦åˆæ¢ä»¶ã€‚以下是會令 shred 無效的檔案系統的例å­ï¼š\n"
+"\n"
+
+#: src/shred.c:207
+#, fuzzy
+msgid ""
+"* log-structured or journaled file systems, such as those supplied with\n"
+"AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n"
+"\n"
+"* file systems that write redundant data and carry on even if some writes\n"
+"fail, such as RAID-based file systems\n"
+"\n"
+"* file systems that make snapshots, such as Network Appliance's NFS server\n"
+"\n"
+msgstr ""
+"◠有紀錄çµæ§‹æˆ–是日誌å¼æª”案系統,例如 AIX åŠ Solaris 採用的檔案系統 (以åŠ\n"
+" JFSã€ReiserFSã€XFSã€Ext3 等等)\n"
+"\n"
+"◠會é‡è¤‡å¯«å…¥è³‡æ–™ï¼ŒåŠå³ä½¿ä¸€éƒ¨ä»½å¯«å…¥å‹•ä½œå¤±æ•—後ä»å¯ç¹¼çºŒçš„檔案系統,例如使用\n"
+" RAID 的檔案系統\n"
+"\n"
+"◠會ä¸æ™‚進行快照紀錄的檔案系統,例如 Network Applicance çš„ NFS 伺æœå™¨\n"
+"\n"
+
+#: src/shred.c:217
+msgid ""
+"* file systems that cache in temporary locations, such as NFS\n"
+"version 3 clients\n"
+"\n"
+"* compressed file systems\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:224
+msgid ""
+"In the case of ext3 file systems, the above disclaimer applies\n"
+"(and shred is thus of limited effectiveness) only in data=journal mode,\n"
+"which journals file data in addition to just metadata. In both the\n"
+"data=ordered (default) and data=writeback modes, shred works as usual.\n"
+"Ext3 journaling modes can be changed by adding the data=something option\n"
+"to the mount options for a particular file system in the /etc/fstab file,\n"
+"as documented in the mount man page (man mount).\n"
+"\n"
+msgstr ""
+
+#: src/shred.c:234
+#, fuzzy
+msgid ""
+"In addition, file system backups and remote mirrors may contain copies\n"
+"of the file that cannot be removed, and that will allow a shredded file\n"
+"to be recovered later.\n"
+msgstr ""
+"◠會將快å–記憶放入暫存ä½ç½®çš„æª”æ¡ˆç³»çµ±ï¼Œåƒ NFS 第 3 版本的用戶端程å¼\n"
+"\n"
+"◠會壓縮資料的檔案系統\n"
+"\n"
+"å¦å¤–,檔案系統的備份åŠé ç«¯çš„ mirror 都å¯èƒ½æ“有該檔案的複製本,這些複製本\n"
+"都是無法移除的,而且å¯ä»¥ç”¨ä¾†å°‡ä»¥ shred 處ç†éŽçš„檔案æ¢å¾©åŽŸç‹€ã€‚\n"
+
+#: src/shred.c:303
+#, c-format
+msgid "%s: fdatasync failed"
+msgstr "%s:fdatasync 發生錯誤"
+
+#: src/shred.c:314
+#, c-format
+msgid "%s: fsync failed"
+msgstr "%s:fsync 發生錯誤"
+
+#: src/shred.c:391
+#, c-format
+msgid "%s: cannot rewind"
+msgstr "%s:無法å‘後æœå°‹"
+
+#: src/shred.c:410
+#, c-format
+msgid "%s: pass %lu/%lu (%s)..."
+msgstr "%1$s:%3$lu 次之第 %2$lu 次 (%4$s)..."
+
+#: src/shred.c:460
+#, c-format
+msgid "%s: error writing at offset %s"
+msgstr "%s:在 %s ä½ç½®å¯«å…¥è³‡æ–™æ™‚發生錯誤"
+
+#: src/shred.c:478
+#, c-format
+msgid "%s: lseek failed"
+msgstr "%s:lseek 發生錯誤"
+
+#: src/shred.c:489
+#, c-format
+msgid "%s: file too large"
+msgstr "%s:檔案éŽå¤§"
+
+#: src/shred.c:512
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s"
+msgstr "%1$s:%3$lu 次之第 %2$lu 次 (%4$s)...%5$s"
+
+#: src/shred.c:528
+#, c-format
+msgid "%s: pass %lu/%lu (%s)...%s/%s %d%%"
+msgstr "%1$s:%3$lu 次之第 %2$lu 次 (%4$s)...%5$s/%6$s %7$d%%"
+
+#: src/shred.c:776
+#, c-format
+msgid "%s: fstat failed"
+msgstr "%s:fstat 發生錯誤"
+
+#: src/shred.c:787
+#, c-format
+msgid "%s: invalid file type"
+msgstr "%s:檔案類型ä¸æ­£ç¢º"
+
+#: src/shred.c:806
+#, c-format
+msgid "%s: file has negative size"
+msgstr "%s:檔案的大å°ç‚ºè² æ•¸"
+
+#: src/shred.c:873
+#, c-format
+msgid "%s: error truncating"
+msgstr "%s:截斷檔案時發生錯誤"
+
+#: src/shred.c:889
+#, c-format
+msgid "%s: fcntl failed"
+msgstr "%s:fcntl 發生錯誤"
+
+#: src/shred.c:894
+#, c-format
+msgid "%s: cannot shred append-only file descriptor"
+msgstr "%s:ä¸èƒ½å°‡åªå¯åŠ ä¸Šè³‡æ–™çš„檔案æè¿°å­ (file descriptor) 進行 shred 動作"
+
+#: src/shred.c:972
+#, c-format
+msgid "%s: removing"
+msgstr "%s:正在移除"
+
+#: src/shred.c:996
+#, c-format
+msgid "%s: renamed to %s"
+msgstr "%s:更改å稱為 %s"
+
+#: src/shred.c:1018
+#, c-format
+msgid "%s: failed to remove"
+msgstr "%s:無法移除"
+
+#: src/shred.c:1022
+#, c-format
+msgid "%s: removed"
+msgstr "%s:已經移除"
+
+#: src/shred.c:1029 src/shred.c:1072
+#, c-format
+msgid "%s: failed to close"
+msgstr "%s:無法關閉"
+
+#: src/shred.c:1065
+#, c-format
+msgid "%s: failed to open for writing"
+msgstr "%s:無法開啟來寫入資料"
+
+#: src/shred.c:1130
+#, c-format
+msgid "%s: invalid number of passes"
+msgstr ""
+
+#: src/shred.c:1139 src/shuf.c:333 src/sort.c:3004
+#, fuzzy, c-format
+msgid "multiple random sources specified"
+msgstr "正在關閉輸出檔%s"
+
+#: src/shred.c:1153
+#, c-format
+msgid "%s: invalid file size"
+msgstr ""
+
+#: src/shuf.c:51
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [OPTION]... [FILE]\n"
+" or: %s -e [OPTION]... [ARG]...\n"
+" or: %s -i LO-HI [OPTION]...\n"
+msgstr ""
+"用法:%s [é¸é …]... [輸入]... (沒有 -G)\n"
+" 或:%s -G [é¸é …]... [輸入 [輸出]]\n"
+
+#: src/shuf.c:57
+#, fuzzy
+msgid ""
+"Write a random permutation of the input lines to standard output.\n"
+"\n"
+msgstr "在標準輸出中顯示æ¯å€‹ <檔案> æ¯ä¸€è¡Œä¸­æŒ‡å®šçš„部份。\n"
+
+#: src/shuf.c:64
+msgid ""
+" -e, --echo treat each ARG as an input line\n"
+" -i, --input-range=LO-HI treat each number LO through HI as an input "
+"line\n"
+" -n, --head-lines=LINES output at most LINES lines\n"
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+
+#: src/shuf.c:287
+#, fuzzy, c-format
+msgid "multiple -i options specified"
+msgstr "-l 或 -t é¸é …使用了多於一次"
+
+#: src/shuf.c:307
+#, fuzzy, c-format
+msgid "invalid input range %s"
+msgstr "輸入旗標無效:%s"
+
+#: src/shuf.c:320
+#, fuzzy, c-format
+msgid "invalid line count %s"
+msgstr "無效的寬度:‘%s’"
+
+#: src/shuf.c:327 src/sort.c:2998
+#, fuzzy, c-format
+msgid "multiple output files specified"
+msgstr "正在關閉輸出檔%s"
+
+#: src/shuf.c:353
+#, fuzzy, c-format
+msgid "cannot combine -e and -i options"
+msgstr "如果自行指定權é™ï¼Œä¸å¯åŒæ™‚é…åˆ --reference é¸é …一起使用"
+
+#: src/shuf.c:362
+#, fuzzy, c-format
+msgid "extra operand %s\n"
+msgstr "出ç¾å¤šé¤˜çš„åƒæ•¸ %s"
+
+#: src/sleep.c:47
+#, c-format
+msgid ""
+"Usage: %s NUMBER[SUFFIX]...\n"
+" or: %s OPTION\n"
+"Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n"
+"`m' for minutes, `h' for hours or `d' for days. Unlike most "
+"implementations\n"
+"that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n"
+"point number. Given two or more arguments, pause for the amount of time\n"
+"specified by the sum of their values.\n"
+"\n"
+msgstr ""
+
+#: src/sleep.c:138
+#, fuzzy, c-format
+msgid "invalid time interval %s"
+msgstr "無效的欄ä½è™Ÿç¢¼ï¼šâ€˜%s’"
+
+#: src/sleep.c:149 src/tail.c:1104
+#, fuzzy, c-format
+msgid "cannot read realtime clock"
+msgstr "無法建立éˆçµ%s"
+
+#: src/sort.c:310
+#, fuzzy
+msgid ""
+"Write sorted concatenation of all FILE(s) to standard output.\n"
+"\n"
+msgstr ""
+"將所有 <檔案> 內容åˆä½µå’ŒæŽ’åºï¼Œä¸¦åœ¨æ¨™æº–輸出顯示çµæžœã€‚\n"
+"\n"
+"排åºé¸é …:\n"
+"\n"
+
+#: src/sort.c:317
+msgid ""
+"Ordering options:\n"
+"\n"
+msgstr ""
+
+#: src/sort.c:321
+#, fuzzy
+msgid ""
+" -b, --ignore-leading-blanks ignore leading blanks\n"
+" -d, --dictionary-order consider only blanks and alphanumeric "
+"characters\n"
+" -f, --ignore-case fold lower case to upper case characters\n"
+msgstr ""
+" -b, --ignore-leading-blanks 忽略æ¯è¡Œé–‹å§‹çš„空白字元\n"
+" -d, --dictionary-order åªè€ƒæ…®ç©ºç™½å­—å…ƒã€è‹±æ–‡å­—和數字\n"
+" -f, --ignore-case 排åºå‰å…ˆå°‡å°å¯«å­—元轉æ›ç‚ºå¤§å¯«\n"
+
+#: src/sort.c:326
+#, fuzzy
+msgid ""
+" -g, --general-numeric-sort compare according to general numerical value\n"
+" -i, --ignore-nonprinting consider only printable characters\n"
+" -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n"
+" -n, --numeric-sort compare according to string numerical value\n"
+" -R, --random-sort sort by random hash of keys\n"
+" --random-source=FILE get random bytes from FILE (default /dev/"
+"urandom)\n"
+" -r, --reverse reverse the result of comparisons\n"
+"\n"
+msgstr ""
+" -g, --general-numeric-sort 以普通數值的方å¼ä½œæ¯”較\n"
+" -i, --ignore-nonprinting åªè€ƒæ…®å¯åˆ—å°çš„å­—å…ƒ\n"
+" -M, --month-sort 比較月份: (ä¸æ˜Ž) <‘JAN’< ... <‘DEC’\n"
+" -n, --numeric-sort 將字串轉æ›ç‚ºæ•¸å€¼ä¾†ä½œæ¯”較\n"
+" -r, --reverse 以相å的次åºæŽ’列\n"
+"\n"
+
+#: src/sort.c:336
+msgid ""
+"Other options:\n"
+"\n"
+" -c, --check, --check=diagnose-first check for sorted input; do not sort\n"
+" -C, --check=quiet, --check=silent like -c, but do not report first bad "
+"line\n"
+" --compress-program=PROG compress temporaries with PROG;\n"
+" decompress them with PROG -d\n"
+" -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n"
+" -m, --merge merge already sorted files; do not sort\n"
+msgstr ""
+
+#: src/sort.c:346
+#, fuzzy
+msgid ""
+" -o, --output=FILE write result to FILE instead of standard output\n"
+" -s, --stable stabilize sort by disabling last-resort "
+"comparison\n"
+" -S, --buffer-size=SIZE use SIZE for main memory buffer\n"
+msgstr ""
+"其它é¸é …:\n"
+"\n"
+" -c, --check åªæª¢æŸ¥è¼¸å…¥è³‡æ–™æ˜¯å¦æŽ’列好,ä¸æœƒçœŸæ­£å°‡è³‡æ–™æŽ’åº\n"
+" -k, --key=ä½ç½®1[,ä½ç½®2] 排åºç´¢å¼•ç”± <ä½ç½®1> 的欄ä½é–‹å§‹ï¼Œåœ¨ <ä½ç½®2> çš„\n"
+" 欄ä½çµæŸ (1 表示第一個欄ä½)\n"
+" -m, --merge åªåˆä½µå·²ç¶“排åºçš„檔案;ä¸åˆ†åˆ¥æŽ’列æ¯å€‹æª”案的內容\n"
+" -o, --output=FILE å°‡çµæžœå¯«å…¥ <檔案> 而並éžåœ¨æ¨™æº–輸出顯示\n"
+" -s, --stable ä¸é€²è¡Œæœ€å¾Œçš„整行比較排åº\n"
+" -S, --buffer-size=å¤§å° æŒ‡å®šè¨˜æ†¶ç·©è¡å€çš„ <大å°>\n"
+
+#: src/sort.c:351
+#, fuzzy, c-format
+msgid ""
+" -t, --field-separator=SEP use SEP instead of non-blank to blank "
+"transition\n"
+" -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %"
+"s;\n"
+" multiple options specify multiple directories\n"
+" -u, --unique with -c, check for strict ordering;\n"
+" without -c, output only the first of an equal "
+"run\n"
+msgstr ""
+" -t, --field-separator=SEP 使用 SEP 作為分隔字串,而並éžä¸€çµ„空白字元\n"
+" -T, --temporary-directory=目錄 自行指定暫存 <目錄>ï¼Œè€Œéž $TMPDIR 或 %s\n"
+" 多次使用此é¸é …å¯æŒ‡å®šå¤šå€‹ç›®éŒ„\n"
+" -u, --unique é…åˆ -c:嚴格檢查資料是å¦ä¾æ¬¡åºæŽ’列\n"
+" 沒有 -c:é‡åˆ°å¤šè¡Œç›¸åŒçš„資料時åªé¡¯ç¤ºç¬¬ä¸€è¡Œ\n"
+
+#: src/sort.c:358
+msgid " -z, --zero-terminated end lines with 0 byte, not newline\n"
+msgstr ""
+" -z, --zero-terminated 以ä½å…ƒçµ„ 0 è€Œéž newline 字元作為æ¯è¡Œçš„çµæŸå­—å…ƒ\n"
+
+#: src/sort.c:363
+#, fuzzy
+msgid ""
+"\n"
+"POS is F[.C][OPTS], where F is the field number and C the character "
+"position\n"
+"in the field; both are origin 1. If neither -t nor -b is in effect, "
+"characters\n"
+"in a field are counted from the beginning of the preceding whitespace. OPTS "
+"is\n"
+"one or more single-letter ordering options, which override global ordering\n"
+"options for that key. If no key is given, use the entire line as the key.\n"
+"\n"
+"SIZE may be followed by the following multiplicative suffixes:\n"
+msgstr ""
+"\n"
+"<ä½ç½®> çš„æ ¼å¼æ˜¯ F[.C][OPTS],其中 F 是欄ä½ç·¨è™Ÿï¼ŒC 是該欄的字元ä½ç½®ã€‚OPTS\n"
+"是一個或多個單字元的排åºé¸é …,這些專用的é¸é …會å–代該排åºç´¢å¼•çš„一般排åº\n"
+"é¸é …。如果沒有指定排åºç´¢å¼•ï¼Œå‰‡ä»¥æ•´è¡Œçš„內容作為索引。\n"
+"\n"
+"<大å°> å¯ä»¥åŠ ä¸Šå¦‚下的單ä½ï¼š\n"
+
+#: src/sort.c:373
+msgid ""
+"% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n"
+"\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+"*** WARNING ***\n"
+"The locale specified by the environment affects sort order.\n"
+"Set LC_ALL=C to get the traditional sort order that uses\n"
+"native byte values.\n"
+msgstr ""
+"%% = 1%% 記憶體,b=1,K=1024 (é è¨­å€¼),還有 Mã€Gã€Tã€Pã€Eã€Zã€Y 如此類推。\n"
+"\n"
+"如果沒有指定 <檔案> 或 <檔案> 是 -,則由標準輸入讀å–資料。\n"
+"\n"
+"*** 警告 ***\n"
+"和語系有關的環境變數會影響排åºçµæžœã€‚\n"
+"如果è¦ä»¥ä½å…ƒçµ„數值作為排列次åºï¼Œè«‹è¨­å®šç’°å¢ƒè®Šæ•¸ LC_ALL=C。\n"
+
+#: src/sort.c:538
+#, fuzzy, c-format
+msgid "waiting for %s [-d]"
+msgstr "正在寫入 %s"
+
+#: src/sort.c:543
+#, c-format
+msgid "%s [-d] terminated abnormally"
+msgstr ""
+
+#: src/sort.c:708
+msgid "cannot create temporary file"
+msgstr "無法建立暫存檔"
+
+#: src/sort.c:736 src/sort.c:3122
+msgid "open failed"
+msgstr "開啟時發生錯誤"
+
+#: src/sort.c:758
+#, fuzzy
+msgid "fflush failed"
+msgstr "關閉時發生錯誤"
+
+#: src/sort.c:763 src/sort.c:3171
+msgid "close failed"
+msgstr "關閉時發生錯誤"
+
+#: src/sort.c:772
+#, fuzzy, c-format
+msgid "dup2 failed"
+msgstr "開啟時發生錯誤"
+
+#: src/sort.c:871
+#, c-format
+msgid "couldn't execute %s"
+msgstr ""
+
+#: src/sort.c:880 src/sort.c:929
+#, fuzzy
+msgid "couldn't create temporary file"
+msgstr "無法建立暫存檔"
+
+#: src/sort.c:903
+#, fuzzy
+msgid "couldn't open temporary file"
+msgstr "無法建立暫存檔"
+
+#: src/sort.c:920
+#, c-format
+msgid "couldn't execute %s -d"
+msgstr ""
+
+#: src/sort.c:924
+#, fuzzy, c-format
+msgid "couldn't create process for %s -d"
+msgstr "無法建立目錄%s"
+
+#: src/sort.c:938
+msgid "write failed"
+msgstr "寫入時發生錯誤"
+
+#: src/sort.c:975
+#, fuzzy, c-format
+msgid "warning: cannot remove: %s"
+msgstr "無法建立目錄%s"
+
+#: src/sort.c:1092
+msgid "sort size"
+msgstr "排åºè¨˜æ†¶ç·©è¡å€"
+
+#: src/sort.c:1171
+msgid "stat failed"
+msgstr "stat 時發生錯誤"
+
+#: src/sort.c:1435
+msgid "read failed"
+msgstr "讀入時發生錯誤"
+
+#: src/sort.c:1951
+#, c-format
+msgid "%s: %s:%s: disorder: "
+msgstr "%s: %s:%s:次åºä¸æ­£ç¢ºï¼š"
+
+#: src/sort.c:1955
+msgid "standard error"
+msgstr "標準錯誤輸出"
+
+#: src/sort.c:2562
+#, fuzzy, c-format
+msgid "%s: invalid field specification %s"
+msgstr "%s:無效的欄ä½è¦æ ¼â€˜%s’"
+
+#: src/sort.c:2573
+#, c-format
+msgid "options `-%s' are incompatible"
+msgstr ""
+
+#: src/sort.c:2637
+#, fuzzy, c-format
+msgid "%s: invalid count at start of %s"
+msgstr "%s:‘%s’開始部份的數字無效"
+
+#: src/sort.c:2887
+msgid "invalid number after `-'"
+msgstr "‘-’後的數字無效"
+
+#: src/sort.c:2890 src/sort.c:2952 src/sort.c:2979
+msgid "invalid number after `.'"
+msgstr "‘.’後的數字無效"
+
+#: src/sort.c:2893 src/sort.c:2988
+msgid "stray character in field spec"
+msgstr "欄ä½è¦æ ¼å‡ºç¾ä¸åˆæ³•çš„å­—å…ƒ"
+
+#: src/sort.c:2934
+#, fuzzy, c-format
+msgid "multiple compress programs specified"
+msgstr "指定了多於一個目的地目錄"
+
+#: src/sort.c:2943
+msgid "invalid number at field start"
+msgstr "欄ä½è¦æ ¼é–‹å§‹éƒ¨ä»½çš„數字無效"
+
+#: src/sort.c:2947 src/sort.c:2975
+msgid "field number is zero"
+msgstr "欄ä½æ˜¯ 0"
+
+#: src/sort.c:2956
+msgid "character offset is zero"
+msgstr "å­—å…ƒå移值是 0"
+
+#: src/sort.c:2971
+msgid "invalid number after `,'"
+msgstr "‘,’後的數字無效"
+
+#: src/sort.c:3142
+#, fuzzy, c-format
+msgid "extra operand %s not allowed with -%c"
+msgstr "使用 -c 時ä¸å…許指定é¡å¤–çš„åƒæ•¸â€˜%s’"
+
+#: src/split.c:106
+#, c-format
+msgid "Usage: %s [OPTION] [INPUT [PREFIX]]\n"
+msgstr "用法:%s [é¸é …] [輸入 [å‰ç½®å­—串]]\n"
+
+#: src/split.c:110
+#, fuzzy
+msgid ""
+"Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n"
+"size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when "
+"INPUT\n"
+"is -, read standard input.\n"
+"\n"
+msgstr ""
+"å°‡ <輸入> 資料分割為固定大å°çš„部份,並將çµæžœå¯«å…¥â€˜<å‰ç½®å­—串>aa’ã€\n"
+"‘<å‰ç½®å­—串>ab’等等;é è¨­çš„ <å‰ç½®å­—串> 為‘x’。如果沒有指定 <輸入>\n"
+"或 <輸入> 是 -,則由標準輸入讀入資料。\n"
+"\n"
+
+#: src/split.c:119
+#, fuzzy, c-format
+msgid ""
+" -a, --suffix-length=N use suffixes of length N (default %d)\n"
+" -b, --bytes=SIZE put SIZE bytes per output file\n"
+" -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n"
+" -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n"
+" -l, --lines=NUMBER put NUMBER lines per output file\n"
+msgstr ""
+" -a, --suffix-length=N 後置字串的長度為 N (é è¨­å€¼æ˜¯ %d)\n"
+" -b, --bytes=å¤§å° æŒ‡å®šæ¯å€‹è¼¸å‡ºæª”çš„ <大å°>,以ä½å…ƒçµ„為單ä½\n"
+" -C, --line-bytes=å¤§å° æ¯å€‹è¼¸å‡ºæª”放入æŸè¡Œæ•¸çš„完整資料,但 <大å°> ä¸æœƒ\n"
+" 超出指定ä½å…ƒçµ„數目\n"
+" -l, --lines=行數 æ¯å€‹è¼¸å‡ºæª”放入指定 <行數> 的資料\n"
+
+#: src/split.c:126
+msgid ""
+" --verbose print a diagnostic to standard error just\n"
+" before each output file is opened\n"
+msgstr " --verbose é–‹å•Ÿæ¯å€‹è¼¸å‡ºæª”之å‰éƒ½åœ¨æ¨™æº–錯誤輸出顯示訊æ¯\n"
+
+#: src/split.c:132
+msgid ""
+"\n"
+"SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n"
+msgstr ""
+"\n"
+"<大å°> å¯ä»¥åŠ ä¸Šå–®ä½ï¼šb 表示 512,k 表示 1K,m 表示 1M。\n"
+
+#: src/split.c:193
+#, c-format
+msgid "Output file suffixes exhausted"
+msgstr "輸出檔的後置字串已用盡"
+
+#: src/split.c:211
+#, fuzzy, c-format
+msgid "creating file %s\n"
+msgstr "正在建立檔案‘%s’\n"
+
+#: src/split.c:370
+#, c-format
+msgid "cannot split in more than one way"
+msgstr "ä¸èƒ½ç”¨è¶…éŽä¸€ç¨®æ–¹å¼é€²è¡Œåˆ†å‰²"
+
+#: src/split.c:420
+#, c-format
+msgid "%s: invalid suffix length"
+msgstr "%s:無效的後置字串長度"
+
+#: src/split.c:434 src/split.c:458
+#, c-format
+msgid "%s: invalid number of bytes"
+msgstr "%s:無效的ä½å…ƒçµ„數目"
+
+#: src/split.c:446
+#, c-format
+msgid "%s: invalid number of lines"
+msgstr "%s:無效的行數"
+
+#: src/split.c:487
+#, fuzzy, c-format
+msgid "line count option -%s%c... is too large"
+msgstr "%s:數字‘%.*s’éŽå¤§"
+
+#: src/split.c:518
+#, fuzzy, c-format
+msgid "invalid number of lines: 0"
+msgstr "無效的行數"
+
+#: src/stat.c:636
+#, fuzzy, c-format
+msgid "warning: unrecognized escape `\\%c'"
+msgstr "%s:無法識別的é¸é …‘%c%s’\n"
+
+#: src/stat.c:680
+#, fuzzy, c-format
+msgid "%s: invalid directive"
+msgstr "%s:檔案類型ä¸æ­£ç¢º"
+
+#: src/stat.c:726
+#, fuzzy, c-format
+msgid "warning: backslash at end of format"
+msgstr "字串末端的å斜號溢出åºåˆ—無效"
+
+#: src/stat.c:755
+#, fuzzy, c-format
+msgid "cannot read file system information for %s"
+msgstr "無法將 %s 的檔案指標é‡æ–°å®šä½"
+
+#: src/stat.c:831
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION] FILE...\n"
+msgstr "用法:%s [é¸é …] [檔案]...\n"
+
+#: src/stat.c:832
+msgid ""
+"Display file or file system status.\n"
+"\n"
+" -L, --dereference follow links\n"
+" -f, --file-system display file system status instead of file status\n"
+msgstr ""
+
+#: src/stat.c:838
+msgid ""
+" -c --format=FORMAT use the specified FORMAT instead of the default;\n"
+" output a newline after each use of FORMAT\n"
+" --printf=FORMAT like --format, but interpret backslash escapes,\n"
+" and do not output a mandatory trailing newline.\n"
+" If you want a newline, include \\n in FORMAT.\n"
+" -t, --terse print the information in terse form\n"
+msgstr ""
+
+#: src/stat.c:849
+#, fuzzy
+msgid ""
+"\n"
+"The valid format sequences for files (without --file-system):\n"
+"\n"
+" %a Access rights in octal\n"
+" %A Access rights in human readable form\n"
+" %b Number of blocks allocated (see %B)\n"
+" %B The size in bytes of each block reported by %b\n"
+msgstr ""
+"\n"
+"é©ç”¨æ–¼æ“·å–檔案資訊 (å³æ˜¯ä¸ä½¿ç”¨ --filesystem é¸é …) çš„æ ¼å¼ï¼š\n"
+"\n"
+" %A - 以容易ç†è§£çš„æ–¹å¼è¡¨ç¤ºå­˜å–權é™\n"
+" %a - 以八進ä½æ•¸å­—æ–¹å¼è¡¨ç¤ºå­˜å–權é™\n"
+" %b - 佔用的ç£ç¢Ÿå€æ®µæ•¸ç›®\n"
+
+#: src/stat.c:857
+#, fuzzy
+msgid ""
+" %d Device number in decimal\n"
+" %D Device number in hex\n"
+" %f Raw mode in hex\n"
+" %F File type\n"
+" %g Group ID of owner\n"
+" %G Group name of owner\n"
+msgstr ""
+" %D - 以å六進ä½è¡¨ç¤ºçš„è£ç½®è™Ÿç¢¼\n"
+" %d - 以å進ä½è¡¨ç¤ºçš„è£ç½®è™Ÿç¢¼\n"
+" %F - 檔案類型\n"
+" %f - 以å六進ä½è¡¨ç¤ºçš„檔案類型/å­˜å–權é™\n"
+" %G - 所屬群組的å稱\n"
+" %g - 所屬群組的號碼\n"
+
+#: src/stat.c:865
+#, fuzzy
+msgid ""
+" %h Number of hard links\n"
+" %i Inode number\n"
+" %n File name\n"
+" %N Quoted file name with dereference if symbolic link\n"
+" %o I/O block size\n"
+" %s Total size, in bytes\n"
+" %t Major device type in hex\n"
+" %T Minor device type in hex\n"
+msgstr ""
+" %h - å¯¦éš›é€£çµ (hard link) 的數目\n"
+" %i - Inode 號碼\n"
+" %N - 加上引號後的檔案å稱,如果是符號éˆçµå‰‡åŠ ä¸Šéˆçµå¯¦éš›æŒ‡ç¤ºçš„檔案/目錄\n"
+" %n - 檔案å稱\n"
+" %o - 最ç†æƒ³çš„輸出/輸入資料å€å¡Šå¤§å°\n"
+" %s - å¤§å° (以ä½å…ƒçµ„計)\n"
+" %T - 特殊檔案或è£ç½®æª”案的åå…­é€²ä½ minor 號碼\n"
+" %t - 特殊檔案或è£ç½®æª”案的åå…­é€²ä½ major 號碼\n"
+
+#: src/stat.c:875
+#, fuzzy
+msgid ""
+" %u User ID of owner\n"
+" %U User name of owner\n"
+" %x Time of last access\n"
+" %X Time of last access as seconds since Epoch\n"
+" %y Time of last modification\n"
+" %Y Time of last modification as seconds since Epoch\n"
+" %z Time of last change\n"
+" %Z Time of last change as seconds since Epoch\n"
+"\n"
+msgstr ""
+" %U - æ“有者的用戶å稱\n"
+" %u - æ“有者的用戶識別碼\n"
+" %X - ç”± Epoch 時間至最後存å–的時間之間經éŽçš„秒數\n"
+" %x - 最後存å–的時間\n"
+" %Y - ç”± Epoch 時間至最後更改的時間之間經éŽçš„秒數\n"
+" %y - 最後更改的時間\n"
+" %Z - ç”± Epoch 時間至最後更改 inode 資訊的時間之間經éŽçš„秒數\n"
+" %z - 最後更改 inode 資訊的時間\n"
+
+#: src/stat.c:887
+#, fuzzy
+msgid ""
+"Valid format sequences for file systems:\n"
+"\n"
+" %a Free blocks available to non-superuser\n"
+" %b Total data blocks in file system\n"
+" %c Total file nodes in file system\n"
+" %d Free file nodes in file system\n"
+" %f Free blocks in file system\n"
+msgstr ""
+"é©ç”¨æ–¼æ“·å–檔案系統資訊的格å¼ï¼š\n"
+"\n"
+" %a - 最高權力用戶以外的用戶å¯ä½¿ç”¨çš„空間\n"
+" %b - 檔案系統的總容é‡\n"
+" %c - 檔案系統å¯æŽ¥å—的最大檔案數目\n"
+" %d - 檔案系統剩餘å¯ç”¨çš„最大檔案數目\n"
+" %f - 檔案系統的剩餘空間\n"
+
+#: src/stat.c:896
+#, fuzzy
+msgid ""
+" %i File System ID in hex\n"
+" %l Maximum length of filenames\n"
+" %n File name\n"
+" %s Block size (for faster transfers)\n"
+" %S Fundamental block size (for block counts)\n"
+" %t Type in hex\n"
+" %T Type in human readable form\n"
+msgstr ""
+" %i - 以å六進ä½è¡¨ç¤ºçš„檔案系統識別碼\n"
+" %l - å¯æŽ¥å—的檔案å稱最大長度\n"
+" %n - 檔案å稱\n"
+" %s - æ¬ç§»è³‡æ–™æ™‚最ç†æƒ³çš„å€æ®µå¤§å°\n"
+" %T - 以容易ç†è§£çš„æ–¹å¼è¡¨ç¤ºçš„檔案系統類型\n"
+" %t - 以å六進ä½è¡¨ç¤ºçš„檔案系統類型\n"
+
+#: src/stty.c:511
+#, c-format
+msgid ""
+"Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n"
+" or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n"
+msgstr ""
+
+#: src/stty.c:517
+msgid ""
+"Print or change terminal characteristics.\n"
+"\n"
+" -a, --all print all current settings in human-readable form\n"
+" -g, --save print all current settings in a stty-readable form\n"
+" -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n"
+msgstr ""
+
+#: src/stty.c:526
+msgid ""
+"\n"
+"Optional - before SETTING indicates negation. An * marks non-POSIX\n"
+"settings. The underlying system defines which settings are available.\n"
+msgstr ""
+
+#: src/stty.c:531
+msgid ""
+"\n"
+"Special characters:\n"
+" * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n"
+" eof CHAR CHAR will send an end of file (terminate the input)\n"
+" eol CHAR CHAR will end the line\n"
+msgstr ""
+
+#: src/stty.c:538
+msgid ""
+" * eol2 CHAR alternate CHAR for ending the line\n"
+" erase CHAR CHAR will erase the last character typed\n"
+" intr CHAR CHAR will send an interrupt signal\n"
+" kill CHAR CHAR will erase the current line\n"
+msgstr ""
+
+#: src/stty.c:544
+msgid ""
+" * lnext CHAR CHAR will enter the next character quoted\n"
+" quit CHAR CHAR will send a quit signal\n"
+" * rprnt CHAR CHAR will redraw the current line\n"
+" start CHAR CHAR will restart the output after stopping it\n"
+msgstr ""
+
+#: src/stty.c:550
+msgid ""
+" stop CHAR CHAR will stop the output\n"
+" susp CHAR CHAR will send a terminal stop signal\n"
+" * swtch CHAR CHAR will switch to a different shell layer\n"
+" * werase CHAR CHAR will erase the last word typed\n"
+msgstr ""
+
+#: src/stty.c:556
+msgid ""
+"\n"
+"Special settings:\n"
+" N set the input and output speeds to N bauds\n"
+" * cols N tell the kernel that the terminal has N columns\n"
+" * columns N same as cols N\n"
+msgstr ""
+
+#: src/stty.c:563
+msgid ""
+" ispeed N set the input speed to N\n"
+" * line N use line discipline N\n"
+" min N with -icanon, set N characters minimum for a completed "
+"read\n"
+" ospeed N set the output speed to N\n"
+msgstr ""
+
+#: src/stty.c:569
+msgid ""
+" * rows N tell the kernel that the terminal has N rows\n"
+" * size print the number of rows and columns according to the "
+"kernel\n"
+" speed print the terminal speed\n"
+" time N with -icanon, set read timeout of N tenths of a second\n"
+msgstr ""
+
+#: src/stty.c:575
+msgid ""
+"\n"
+"Control settings:\n"
+" [-]clocal disable modem control signals\n"
+" [-]cread allow input to be received\n"
+" * [-]crtscts enable RTS/CTS handshaking\n"
+" csN set character size to N bits, N in [5..8]\n"
+msgstr ""
+
+#: src/stty.c:583
+msgid ""
+" [-]cstopb use two stop bits per character (one with `-')\n"
+" [-]hup send a hangup signal when the last process closes the tty\n"
+" [-]hupcl same as [-]hup\n"
+" [-]parenb generate parity bit in output and expect parity bit in "
+"input\n"
+" [-]parodd set odd parity (even with `-')\n"
+msgstr ""
+
+#: src/stty.c:590
+msgid ""
+"\n"
+"Input settings:\n"
+" [-]brkint breaks cause an interrupt signal\n"
+" [-]icrnl translate carriage return to newline\n"
+" [-]ignbrk ignore break characters\n"
+" [-]igncr ignore carriage return\n"
+msgstr ""
+
+#: src/stty.c:598
+msgid ""
+" [-]ignpar ignore characters with parity errors\n"
+" * [-]imaxbel beep and do not flush a full input buffer on a character\n"
+" [-]inlcr translate newline to carriage return\n"
+" [-]inpck enable input parity checking\n"
+" [-]istrip clear high (8th) bit of input characters\n"
+msgstr ""
+
+#: src/stty.c:605
+msgid " * [-]iutf8 assume input characters are UTF-8 encoded\n"
+msgstr ""
+
+#: src/stty.c:608
+msgid ""
+" * [-]iuclc translate uppercase characters to lowercase\n"
+" * [-]ixany let any character restart output, not only start character\n"
+" [-]ixoff enable sending of start/stop characters\n"
+" [-]ixon enable XON/XOFF flow control\n"
+" [-]parmrk mark parity errors (with a 255-0-character sequence)\n"
+" [-]tandem same as [-]ixoff\n"
+msgstr ""
+
+#: src/stty.c:616
+msgid ""
+"\n"
+"Output settings:\n"
+" * bsN backspace delay style, N in [0..1]\n"
+" * crN carriage return delay style, N in [0..3]\n"
+" * ffN form feed delay style, N in [0..1]\n"
+" * nlN newline delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:624
+msgid ""
+" * [-]ocrnl translate carriage return to newline\n"
+" * [-]ofdel use delete characters for fill instead of null characters\n"
+" * [-]ofill use fill (padding) characters instead of timing for delays\n"
+" * [-]olcuc translate lowercase characters to uppercase\n"
+" * [-]onlcr translate newline to carriage return-newline\n"
+" * [-]onlret newline performs a carriage return\n"
+msgstr ""
+
+#: src/stty.c:632
+msgid ""
+" * [-]onocr do not print carriage returns in the first column\n"
+" [-]opost postprocess output\n"
+" * tabN horizontal tab delay style, N in [0..3]\n"
+" * tabs same as tab0\n"
+" * -tabs same as tab3\n"
+" * vtN vertical tab delay style, N in [0..1]\n"
+msgstr ""
+
+#: src/stty.c:640
+msgid ""
+"\n"
+"Local settings:\n"
+" [-]crterase echo erase characters as backspace-space-backspace\n"
+" * crtkill kill all line by obeying the echoprt and echoe settings\n"
+" * -crtkill kill all line by obeying the echoctl and echok settings\n"
+msgstr ""
+
+#: src/stty.c:647
+msgid ""
+" * [-]ctlecho echo control characters in hat notation (`^c')\n"
+" [-]echo echo input characters\n"
+" * [-]echoctl same as [-]ctlecho\n"
+" [-]echoe same as [-]crterase\n"
+" [-]echok echo a newline after a kill character\n"
+msgstr ""
+
+#: src/stty.c:654
+msgid ""
+" * [-]echoke same as [-]crtkill\n"
+" [-]echonl echo newline even if not echoing other characters\n"
+" * [-]echoprt echo erased characters backward, between `\\' and '/'\n"
+" [-]icanon enable erase, kill, werase, and rprnt special characters\n"
+" [-]iexten enable non-POSIX special characters\n"
+msgstr ""
+
+#: src/stty.c:661
+msgid ""
+" [-]isig enable interrupt, quit, and suspend special characters\n"
+" [-]noflsh disable flushing after interrupt and quit special "
+"characters\n"
+" * [-]prterase same as [-]echoprt\n"
+" * [-]tostop stop background jobs that try to write to the terminal\n"
+" * [-]xcase with icanon, escape with `\\' for uppercase characters\n"
+msgstr ""
+
+#: src/stty.c:668
+msgid ""
+"\n"
+"Combination settings:\n"
+" * [-]LCASE same as [-]lcase\n"
+" cbreak same as -icanon\n"
+" -cbreak same as icanon\n"
+msgstr ""
+
+#: src/stty.c:675
+msgid ""
+" cooked same as brkint ignpar istrip icrnl ixon opost isig\n"
+" icanon, eof and eol characters to their default values\n"
+" -cooked same as raw\n"
+" crt same as echoe echoctl echoke\n"
+msgstr ""
+
+#: src/stty.c:681
+msgid ""
+" dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n"
+" kill ^u\n"
+" * [-]decctlq same as [-]ixany\n"
+" ek erase and kill characters to their default values\n"
+" evenp same as parenb -parodd cs7\n"
+msgstr ""
+
+#: src/stty.c:688
+msgid ""
+" -evenp same as -parenb cs8\n"
+" * [-]lcase same as xcase iuclc olcuc\n"
+" litout same as -parenb -istrip -opost cs8\n"
+" -litout same as parenb istrip opost cs7\n"
+" nl same as -icrnl -onlcr\n"
+" -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n"
+msgstr ""
+
+#: src/stty.c:696
+msgid ""
+" oddp same as parenb parodd cs7\n"
+" -oddp same as -parenb cs8\n"
+" [-]parity same as [-]evenp\n"
+" pass8 same as -parenb -istrip cs8\n"
+" -pass8 same as parenb istrip cs7\n"
+msgstr ""
+
+#: src/stty.c:703
+msgid ""
+" raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n"
+" -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n"
+" -imaxbel -opost -isig -icanon -xcase min 1 time 0\n"
+" -raw same as cooked\n"
+msgstr ""
+
+#: src/stty.c:709
+msgid ""
+" sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n"
+" -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n"
+" -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n"
+" isig icanon iexten echo echoe echok -echonl -noflsh\n"
+" -xcase -tostop -echoprt echoctl echoke, all special\n"
+" characters to their default values.\n"
+msgstr ""
+
+#: src/stty.c:717
+msgid ""
+"\n"
+"Handle the tty line connected to standard input. Without arguments,\n"
+"prints baud rate, line discipline, and deviations from stty sane. In\n"
+"settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n"
+"127; special values ^- or undef used to disable special characters.\n"
+msgstr ""
+
+#: src/stty.c:789
+#, fuzzy, c-format
+msgid "only one device may be specified"
+msgstr "åªèƒ½æŒ‡å®šä¸€å€‹åƒæ•¸"
+
+#: src/stty.c:819
+#, fuzzy, c-format
+msgid ""
+"the options for verbose and stty-readable output styles are\n"
+"mutually exclusive"
+msgstr "ä¸èƒ½åŒæ™‚使用 --string åŠ --check é¸é …"
+
+#: src/stty.c:825
+#, c-format
+msgid "when specifying an output style, modes may not be set"
+msgstr ""
+
+#: src/stty.c:840
+#, c-format
+msgid "%s: couldn't reset non-blocking mode"
+msgstr ""
+
+#: src/stty.c:885 src/stty.c:995
+#, fuzzy, c-format
+msgid "invalid argument %s"
+msgstr "åƒæ•¸ç„¡æ•ˆ: %s"
+
+#: src/stty.c:896 src/stty.c:913 src/stty.c:925 src/stty.c:938 src/stty.c:950
+#: src/stty.c:970
+#, fuzzy, c-format
+msgid "missing argument to %s"
+msgstr "%2$sçš„åƒæ•¸%1$sä¸æ˜Žç¢º"
+
+#: src/stty.c:976
+#, fuzzy, c-format
+msgid "invalid line discipline %s"
+msgstr "無效的欄ä½è¦æ ¼ï¼šâ€˜%s’"
+
+#: src/stty.c:1046
+#, c-format
+msgid "%s: unable to perform all requested operations"
+msgstr ""
+
+#: src/stty.c:1051
+#, c-format
+msgid "new_mode: mode\n"
+msgstr ""
+
+#: src/stty.c:1392
+#, c-format
+msgid "%s: no size information for this device"
+msgstr ""
+
+#: src/stty.c:1888
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "無效的行號增加值:‘%s’"
+
+#: src/su.c:242
+msgid "Password:"
+msgstr ""
+
+#: src/su.c:245
+#, fuzzy, c-format
+msgid "getpass: cannot open /dev/tty"
+msgstr "無法開啟目錄%s"
+
+#: src/su.c:303
+#, fuzzy, c-format
+msgid "cannot set groups"
+msgstr "ä¸å¯åŒæ™‚çœç•¥ä½¿ç”¨è€…和所屬群組"
+
+#: src/su.c:307
+#, fuzzy, c-format
+msgid "cannot set group id"
+msgstr "ä¸å¯åŒæ™‚çœç•¥ä½¿ç”¨è€…和所屬群組"
+
+#: src/su.c:309
+#, fuzzy, c-format
+msgid "cannot set user id"
+msgstr "ä¸å¯åŒæ™‚çœç•¥ä½¿ç”¨è€…和所屬群組"
+
+#: src/su.c:385
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [-] [USER [ARG]...]\n"
+msgstr "用法:%s [é¸é …]... [檔案]...\n"
+
+#: src/su.c:386
+msgid ""
+"Change the effective user id and group id to that of USER.\n"
+"\n"
+" -, -l, --login make the shell a login shell\n"
+" -c, --command=COMMAND pass a single COMMAND to the shell with -c\n"
+" -f, --fast pass -f to the shell (for csh or tcsh)\n"
+" -m, --preserve-environment do not reset environment variables\n"
+" -p same as -m\n"
+" -s, --shell=SHELL run SHELL if /etc/shells allows it\n"
+msgstr ""
+
+#: src/su.c:398
+msgid ""
+"\n"
+"A mere - implies -l. If USER not given, assume root.\n"
+msgstr ""
+
+#: src/su.c:475
+#, c-format
+msgid "user %s does not exist"
+msgstr ""
+
+#: src/su.c:498
+#, c-format
+msgid "incorrect password"
+msgstr ""
+
+#: src/su.c:515
+#, c-format
+msgid "using restricted shell %s"
+msgstr ""
+
+#: src/su.c:523
+#, fuzzy, c-format
+msgid "warning: cannot change directory to %s"
+msgstr "無法建立目錄%s"
+
+#: src/sum.c:63
+msgid ""
+"Print checksum and block counts for each FILE.\n"
+"\n"
+" -r defeat -s, use BSD sum algorithm, use 1K blocks\n"
+" -s, --sysv use System V sum algorithm, use 512 bytes blocks\n"
+msgstr ""
+"å°å‡ºæ¯å€‹ <檔案> 的總和檢查值åŠå€å¡Šæ•¸ç›®ã€‚\n"
+"\n"
+" -r 令 -s é¸é …無效,使用 BSD 的演算法,用 1K çš„å€å¡Šå¤§å°\n"
+" -s, --sysv 使用 System V 的演算法,用 512 個ä½å…ƒçµ„çš„å€å¡Šå¤§å°\n"
+
+#: src/sync.c:46
+msgid ""
+"Force changed blocks to disk, update the super block.\n"
+"\n"
+msgstr ""
+"強迫將已更改的資料寫入ç£ç¢Ÿï¼Œä¸¦æ›´æ–° super block。\n"
+"\n"
+
+#: src/sync.c:74
+#, fuzzy, c-format
+msgid "ignoring all arguments"
+msgstr "åƒæ•¸éŽå¤š"
+
+#: src/system.h:411
+#, c-format
+msgid ""
+"\n"
+"NOTE: your shell may have its own version of %s, which usually supersedes\n"
+"the version described here. Please refer to your shell's documentation\n"
+"for details about the options it supports.\n"
+msgstr ""
+
+#: src/system.h:417
+msgid " --help display this help and exit\n"
+msgstr " --help 顯示此求助說明並離開\n"
+
+#: src/system.h:419
+msgid " --version output version information and exit\n"
+msgstr " --version 顯示版本資訊並離開\n"
+
+#: src/tac.c:137
+msgid ""
+"Write each FILE to standard output, last line first.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"å°‡æ¯å€‹ <檔案> 由最後一行開始在標準輸出顯示出來。\n"
+"如果沒有指定 <檔案> 或 <檔案> 是 -,則由標準輸入讀å–資料。\n"
+"\n"
+
+#: src/tac.c:145
+msgid ""
+" -b, --before attach the separator before instead of after\n"
+" -r, --regex interpret the separator as a regular expression\n"
+" -s, --separator=STRING use STRING as the separator instead of newline\n"
+msgstr ""
+" -b, --before 將分隔字串加在å‰é¢è€Œä¸æ˜¯å¾Œé¢\n"
+" -r, --regex 將分隔字串ç†è§£ç‚ºæ­£è¦è¡¨ç¤ºå¼\n"
+" -s, --separator=字串 用 <字串> 作為分隔字串,而ä¸æ˜¯ newline å­—å…ƒ\n"
+
+#: src/tac.c:236 src/tac.c:337
+#, fuzzy, c-format
+msgid "%s: seek failed"
+msgstr "關閉時發生錯誤"
+
+#: src/tac.c:265
+#, fuzzy, c-format
+msgid "record too large"
+msgstr "%s:檔案éŽå¤§"
+
+#: src/tac.c:459
+#, fuzzy, c-format
+msgid "cannot create temporary file %s"
+msgstr "無法建立暫存檔"
+
+#: src/tac.c:466
+#, fuzzy, c-format
+msgid "cannot open %s for writing"
+msgstr "無法開啟%s來讀å–資料"
+
+#: src/tac.c:487 src/tac.c:494
+#, fuzzy, c-format
+msgid "%s: write error"
+msgstr "寫入時發生錯誤"
+
+#: src/tac.c:601
+#, c-format
+msgid "separator cannot be empty"
+msgstr "分隔字串ä¸å¯ä»¥æ˜¯ç©ºçš„"
+
+#: src/tail.c:220
+#, c-format
+msgid ""
+"Print the last %d lines of each FILE to standard output.\n"
+"With more than one FILE, precede each with a header giving the file name.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"在標準輸出顯示æ¯å€‹ <檔案> 的最後 %d 行。\n"
+"當指定多於一個 <檔案> 時,會先å°å‡ºè¡¨ç¤ºæ¯å€‹æª”案å稱的標頭。\n"
+"如果沒有指定 <檔案> 或 <檔案> 是 -,則由標準輸入讀å–資料。\n"
+"\n"
+
+#: src/tail.c:229
+#, fuzzy
+msgid ""
+" --retry keep trying to open a file even if it is\n"
+" inaccessible when tail starts or if it becomes\n"
+" inaccessible later; useful when following by "
+"name,\n"
+" i.e., with --follow=name\n"
+" -c, --bytes=N output the last N bytes; alternatively, use +N "
+"to\n"
+" output bytes starting with the Nth of each file\n"
+msgstr ""
+" --retry å³ä½¿åŸ·è¡Œ tail 時或一段時間後無法存å–æŸæª”案,ä»ç„¶\n"
+" ä¸æ–·å˜—試開啟該檔案 ─ åªåœ¨é…åˆ -f é¸é …時有用\n"
+" -c, --bytes=N 輸出最後的 N 個ä½å…ƒçµ„\n"
+
+#: src/tail.c:237
+msgid ""
+" -f, --follow[={name|descriptor}]\n"
+" output appended data as the file grows;\n"
+" -f, --follow, and --follow=descriptor are\n"
+" equivalent\n"
+" -F same as --follow=name --retry\n"
+msgstr ""
+" -f, --follow[={name|descriptor}]\n"
+" 當檔案ä¸æ–·è®Šå¤§æ™‚顯示加上的資料;\n"
+" -fã€--follow åŠ --follow=descriptor 是相åŒçš„\n"
+" -F 等於 --follow=name --retry\n"
+
+# --max-consecutive-size-changes is undocumented -- maddog
+#: src/tail.c:244
+#, fuzzy, c-format
+msgid ""
+" -n, --lines=N output the last N lines, instead of the last %d;\n"
+" or use +N to output lines starting with the Nth\n"
+" --max-unchanged-stats=N\n"
+" with --follow=name, reopen a FILE which has not\n"
+" changed size after N (default %d) iterations\n"
+" to see if it has been unlinked or renamed\n"
+" (this is the usual case of rotated log files)\n"
+msgstr ""
+" -n, --lines=N 顯示最後 N 行而ä¸æ˜¯ %d è¡Œ\n"
+" --max-unchanged-stats=N\n"
+" é…åˆ --follow=name 時,如果檢查 <檔案> N 次\n"
+" (é è¨­æ˜¯ %d 次)後檔案大å°ä»æ²’有改變,則會\n"
+" é‡æ–°é–‹å•Ÿ <檔案> 來檢查檔案是å¦å·²è¢«åˆªé™¤æˆ–改å\n"
+" (此情æ³åœ¨å‚™ä»½ç´€éŒ„檔時會較常見)\n"
+" --max-consecutive-size-changes=N\n"
+" é…åˆ --follow=name 時,如果 <檔案> 連續 N 次\n"
+" 改變大å°ï¼Œå‰‡èªå®šæ­¤æª”案已經被改å。\n"
+
+#: src/tail.c:256
+#, fuzzy
+msgid ""
+" --pid=PID with -f, terminate after process ID, PID dies\n"
+" -q, --quiet, --silent never output headers giving file names\n"
+" -s, --sleep-interval=S with -f, sleep for approximately S seconds\n"
+" (default 1.0) between iterations.\n"
+" -v, --verbose always output headers giving file names\n"
+msgstr ""
+" --pid=PID é…åˆ -f é¸é …時,tail æœƒåœ¨æŒ‡å®šçš„ç¨‹åº (識別碼\n"
+" 為 PID) 退出後中止\n"
+" -q, --quiet, --silent ä¸é¡¯ç¤ºä»»ä½•æ¨™æ˜Žæª”案å稱的標頭\n"
+" -s, --sleep-interval=S é…åˆ -f é¸é …時,æ¯å…©æ¬¡æª¢æŸ¥ç›¸éš”ç´„ S 秒\n"
+" (é è¨­ç‚º 1 秒)\n"
+" -v, --verbose 一定顯示任何標明檔案å稱的標頭\n"
+
+#: src/tail.c:265
+#, fuzzy
+msgid ""
+"\n"
+"If the first character of N (the number of bytes or lines) is a `+',\n"
+"print beginning with the Nth item from the start of each file, otherwise,\n"
+"print the last N items in the file. N may have a multiplier suffix:\n"
+"b 512, k 1024, m 1024*1024.\n"
+"\n"
+msgstr ""
+"\n"
+"如果 N (行數或ä½å…ƒçµ„數目) 的第一個字元是‘+’,會由æ¯å€‹æª”案的第 N 行開始\n"
+"顯示,å¦å‰‡æœƒé¡¯ç¤ºæ¯å€‹æª”案的最後 N 行。N å¯ä»¥åŠ ä¸Šå–®ä½ï¼šb 是 512,k 是 1024,\n"
+"m 則是 1048576 (1M)。\n"
+"\n"
+
+#: src/tail.c:273
+msgid ""
+"With --follow (-f), tail defaults to following the file descriptor, which\n"
+"means that even if a tail'ed file is renamed, tail will continue to track\n"
+"its end. "
+msgstr ""
+"è‹¥é…åˆ --follow (-f) é¸é …,tail é è¨­æœƒæª¢æŸ¥æª”案æè¿°å­ (file descriptor)ï¼›\n"
+"å³æ˜¯èªªï¼Œå³ä½¿è¦ tail 的檔案已經改å,tail ä»æœƒç¹¼çºŒæª¢æŸ¥è©²æª”案的末端。"
+
+#: src/tail.c:278
+msgid ""
+"This default behavior is not desirable when you really want to\n"
+"track the actual name of the file, not the file descriptor (e.g., log\n"
+"rotation). Use --follow=name in that case. That causes tail to track the\n"
+"named file by reopening it periodically to see if it has been removed and\n"
+"recreated by some other program.\n"
+msgstr ""
+"如果\n"
+"確實è¦æª¢æŸ¥æª”案å稱而ä¸æ˜¯æª”案æè¿°å­æ™‚ (例如備份紀錄檔時),這種é è¨­çš„處ç†\n"
+"æ–¹å¼ä¸¦ä¸é©ç”¨ã€‚在這情æ³ä¸‹æ‡‰ä½¿ç”¨ --follow=name。這樣會令 tail 檢查指定å稱\n"
+"的檔案,方法是é‡è¤‡åœ°é–‹å•Ÿæª”案,看看它是å¦å·²è¢«ç§»é™¤å’Œå…¶å®ƒç¨‹å¼æœƒå¦å†ç”¢ç”Ÿè©²\n"
+"檔案。\n"
+
+#: src/tail.c:336
+#, c-format
+msgid "closing %s (fd=%d)"
+msgstr "正在關閉 %s (fd=%d)"
+
+#: src/tail.c:411
+#, fuzzy, c-format
+msgid "%s: cannot seek to relative offset %s"
+msgstr "%s:無法æœå°‹è‡³ç›¸å°ä½ç½® %s%s"
+
+#: src/tail.c:415
+#, fuzzy, c-format
+msgid "%s: cannot seek to end-relative offset %s"
+msgstr "%s:無法æœå°‹è‡³æœ«ç«¯ç›¸å°ä½ç½® %s%s"
+
+#: src/tail.c:867
+#, fuzzy, c-format
+msgid "%s has become inaccessible"
+msgstr "已無法存å–‘%s’"
+
+#: src/tail.c:884
+#, fuzzy, c-format
+msgid "%s has been replaced with an untailable file; giving up on this name"
+msgstr "%s:被一個無法 tail 的檔案å–代;ä¸æœƒå†æª¢æŸ¥æ­¤æª”案å稱"
+
+#: src/tail.c:905
+#, fuzzy, c-format
+msgid "%s has become accessible"
+msgstr "已經å¯ä»¥å­˜å–‘%s’"
+
+#: src/tail.c:913
+#, fuzzy, c-format
+msgid "%s has appeared; following end of new file"
+msgstr "‘%s’已出ç¾ï¼›æ­£åœ¨æª¢æŸ¥æ–°æª”案的末端"
+
+#: src/tail.c:924
+#, fuzzy, c-format
+msgid "%s has been replaced; following end of new file"
+msgstr "‘%s’已被å–代;正在檢查新檔案的末端"
+
+#: src/tail.c:1025
+#, fuzzy, c-format
+msgid "%s: cannot change nonblocking mode"
+msgstr "無法更改%sçš„æ“有者和/或所屬群組"
+
+#: src/tail.c:1066
+#, c-format
+msgid "%s: file truncated"
+msgstr "%s:檔案被截斷了"
+
+#: src/tail.c:1090
+#, c-format
+msgid "no files remaining"
+msgstr "已沒有任何剩餘的檔案"
+
+#: src/tail.c:1323
+#, c-format
+msgid "%s: cannot follow end of this type of file; giving up on this name"
+msgstr "%s:無法檢查此類檔案的末端;ä¸æœƒå†æª¢æŸ¥æ­¤æª”案å稱"
+
+#: src/tail.c:1439
+#, fuzzy, c-format
+msgid "number in %s is too large"
+msgstr "%s éŽé•·"
+
+#: src/tail.c:1511
+#, c-format
+msgid "%s: invalid maximum number of unchanged stats between opens"
+msgstr "%sï¼šé–‹å•Ÿæª”æ¡ˆå‰ stat 資料沒有改變的最大次數無效"
+
+#: src/tail.c:1523
+#, c-format
+msgid "%s: invalid PID"
+msgstr "%s:無效的 PID"
+
+#: src/tail.c:1542
+#, c-format
+msgid "%s: invalid number of seconds"
+msgstr "%s:無效的秒數"
+
+#: src/tail.c:1558
+#, c-format
+msgid "option used in invalid context -- %c"
+msgstr ""
+
+#: src/tail.c:1566
+#, fuzzy, c-format
+msgid "warning: --retry is useful mainly when following by name"
+msgstr "警告:åªæœ‰æª¢æŸ¥æª”案å稱時 --retry é¸é …æ‰æœƒæœ‰æ•ˆ"
+
+#: src/tail.c:1570
+#, c-format
+msgid "warning: PID ignored; --pid=PID is useful only when following"
+msgstr "警告:會忽略 PIDï¼›--pid=PID é¸é …åªåœ¨ä¸æ–·æª¢æŸ¥æª”案時æ‰æœƒæœ‰æ•ˆ"
+
+#: src/tail.c:1573
+#, c-format
+msgid "warning: --pid=PID is not supported on this system"
+msgstr "警告:此系統ä¸æ”¯æ´ --pid=PID é¸é …"
+
+#: src/tail.c:1667
+#, fuzzy, c-format
+msgid "cannot follow %s by name"
+msgstr "無法建立暫存檔"
+
+#: src/tail.c:1673
+#, c-format
+msgid "warning: following standard input indefinitely is ineffective"
+msgstr ""
+
+#: src/tee.c:63
+msgid ""
+"Copy standard input to each FILE, and also to standard output.\n"
+"\n"
+" -a, --append append to the given FILEs, do not overwrite\n"
+" -i, --ignore-interrupts ignore interrupt signals\n"
+msgstr ""
+
+#: src/tee.c:71
+#, fuzzy
+msgid ""
+"\n"
+"If a FILE is -, copy again to standard output.\n"
+msgstr ""
+"\n"
+"如果沒有指定<檔案>或<檔案>是 -,則由標準輸入讀å–資料。\n"
+
+#: src/test.c:125
+#, fuzzy, c-format
+msgid "missing argument after %s"
+msgstr "%2$sçš„åƒæ•¸%1$sä¸æ˜Žç¢º"
+
+#: src/test.c:161
+#, fuzzy, c-format
+msgid "invalid integer %s"
+msgstr "數字 %s 無效"
+
+#: src/test.c:242
+msgid "')' expected"
+msgstr ""
+
+#: src/test.c:245
+#, c-format
+msgid "')' expected, found %s"
+msgstr ""
+
+#: src/test.c:261 src/test.c:606
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s:無效的正è¦è¡¨ç¤ºå¼ï¼š%s"
+
+#: src/test.c:330
+msgid "-nt does not accept -l"
+msgstr ""
+
+#: src/test.c:343
+msgid "-ef does not accept -l"
+msgstr ""
+
+#: src/test.c:359
+msgid "-ot does not accept -l"
+msgstr ""
+
+#: src/test.c:368
+#, fuzzy
+msgid "unknown binary operator"
+msgstr "ä¸æ˜Žçš„系統錯誤"
+
+#: src/test.c:634
+#, fuzzy, c-format
+msgid "%s: binary operator expected"
+msgstr "%s:無效的正è¦è¡¨ç¤ºå¼ï¼š%s"
+
+#: src/test.c:694
+msgid ""
+"Usage: test EXPRESSION\n"
+" or: test\n"
+" or: [ EXPRESSION ]\n"
+" or: [ ]\n"
+" or: [ OPTION\n"
+msgstr ""
+
+#: src/test.c:701
+msgid ""
+"Exit with the status determined by EXPRESSION.\n"
+"\n"
+msgstr ""
+
+#: src/test.c:707
+msgid ""
+"\n"
+"An omitted EXPRESSION defaults to false. Otherwise,\n"
+"EXPRESSION is true or false and sets exit status. It is one of:\n"
+msgstr ""
+
+#: src/test.c:712
+msgid ""
+"\n"
+" ( EXPRESSION ) EXPRESSION is true\n"
+" ! EXPRESSION EXPRESSION is false\n"
+" EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n"
+" EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n"
+msgstr ""
+
+#: src/test.c:719
+msgid ""
+"\n"
+" -n STRING the length of STRING is nonzero\n"
+" STRING equivalent to -n STRING\n"
+" -z STRING the length of STRING is zero\n"
+" STRING1 = STRING2 the strings are equal\n"
+" STRING1 != STRING2 the strings are not equal\n"
+msgstr ""
+
+#: src/test.c:727
+msgid ""
+"\n"
+" INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n"
+" INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n"
+" INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n"
+" INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n"
+" INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n"
+" INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n"
+msgstr ""
+
+#: src/test.c:736
+msgid ""
+"\n"
+" FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n"
+" FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n"
+" FILE1 -ot FILE2 FILE1 is older than FILE2\n"
+msgstr ""
+
+#: src/test.c:742
+msgid ""
+"\n"
+" -b FILE FILE exists and is block special\n"
+" -c FILE FILE exists and is character special\n"
+" -d FILE FILE exists and is a directory\n"
+" -e FILE FILE exists\n"
+msgstr ""
+
+#: src/test.c:749
+msgid ""
+" -f FILE FILE exists and is a regular file\n"
+" -g FILE FILE exists and is set-group-ID\n"
+" -G FILE FILE exists and is owned by the effective group ID\n"
+" -h FILE FILE exists and is a symbolic link (same as -L)\n"
+" -k FILE FILE exists and has its sticky bit set\n"
+msgstr ""
+
+#: src/test.c:756
+msgid ""
+" -L FILE FILE exists and is a symbolic link (same as -h)\n"
+" -O FILE FILE exists and is owned by the effective user ID\n"
+" -p FILE FILE exists and is a named pipe\n"
+" -r FILE FILE exists and read permission is granted\n"
+" -s FILE FILE exists and has a size greater than zero\n"
+msgstr ""
+
+#: src/test.c:763
+msgid ""
+" -S FILE FILE exists and is a socket\n"
+" -t FD file descriptor FD is opened on a terminal\n"
+" -u FILE FILE exists and its set-user-ID bit is set\n"
+" -w FILE FILE exists and write permission is granted\n"
+" -x FILE FILE exists and execute (or search) permission is granted\n"
+msgstr ""
+
+#: src/test.c:770
+msgid ""
+"\n"
+"Except for -h and -L, all FILE-related tests dereference symbolic links.\n"
+"Beware that parentheses need to be escaped (e.g., by backslashes) for "
+"shells.\n"
+"INTEGER may also be -l STRING, which evaluates to the length of STRING.\n"
+msgstr ""
+
+#: src/test.c:776
+msgid "test and/or ["
+msgstr ""
+
+#: src/test.c:831
+msgid "missing `]'"
+msgstr ""
+
+#: src/test.c:846
+#, fuzzy, c-format
+msgid "extra argument %s"
+msgstr "åƒæ•¸éŽå¤š"
+
+#: src/touch.c:112 src/touch.c:318
+#, fuzzy, c-format
+msgid "invalid date format %s"
+msgstr "%2$sçš„åƒæ•¸%1$s無效"
+
+#: src/touch.c:154
+#, fuzzy, c-format
+msgid "creating %s"
+msgstr "正在建立檔案‘%s’\n"
+
+#: src/touch.c:211
+#, fuzzy, c-format
+msgid "cannot touch %s"
+msgstr "無法å°â€˜%s’執行輸出入控制 (ioctl)"
+
+#: src/touch.c:217
+#, c-format
+msgid "setting times of %s"
+msgstr "正在設定%s的時間"
+
+#: src/touch.c:234
+msgid ""
+"Update the access and modification times of each FILE to the current time.\n"
+"\n"
+msgstr "å°‡æ¯å€‹ <檔案> çš„å­˜å–åŠä¿®æ”¹æ™‚間都更新為目å‰çš„時間。\n"
+
+#: src/touch.c:241
+msgid ""
+" -a change only the access time\n"
+" -c, --no-create do not create any files\n"
+" -d, --date=STRING parse STRING and use it instead of current time\n"
+" -f (ignored)\n"
+" -m change only the modification time\n"
+msgstr ""
+" -a åªæ›´æ”¹å­˜å–時間\n"
+" -c, --no-create ä¸å»ºç«‹ä»»ä½•æª”案\n"
+" -d, --date=字串 使用 <字串> 所表示的時間而ä¸æ˜¯ç›®å‰çš„時間\n"
+" -f (æ­¤é¸é …ä¸ä½œè™•ç†)\n"
+" -m åªæ›´æ”¹ä¿®æ”¹æ™‚é–“\n"
+
+#: src/touch.c:248
+#, fuzzy
+msgid ""
+" -r, --reference=FILE use this file's times instead of current time\n"
+" -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n"
+" --time=WORD change the specified time:\n"
+" WORD is access, atime, or use: equivalent to -a\n"
+" WORD is modify or mtime: equivalent to -m\n"
+msgstr ""
+" -r, --reference=檔案 使用指定 <檔案> 的時間屬性而éžç›®å‰çš„時間\n"
+" -t STAMP 使用 [[CC]YY]MMDDhhmm[.ss] æ ¼å¼çš„時間而éžç›®å‰çš„時"
+"é–“\n"
+" --time=WORD 使用 WORD 指定的時間:accessã€atimeã€use 都等於 -a\n"
+" é¸é …的效果,而 modifyã€mtime 等於 -m é¸é …的效果\n"
+
+#: src/touch.c:257
+#, fuzzy
+msgid ""
+"\n"
+"Note that the -d and -t options accept different time-date formats.\n"
+"\n"
+"If a FILE is -, touch standard output.\n"
+msgstr ""
+"\n"
+"請注æ„,-d å’Œ -t é¸é …å¯æŽ¥å—ä¸åŒçš„時間/日期格å¼ã€‚\n"
+
+#: src/touch.c:344
+#, fuzzy, c-format
+msgid "cannot specify times from more than one source"
+msgstr "ä¸èƒ½ç”¨è¶…éŽä¸€ç¨®æ–¹å¼é€²è¡Œåˆ†å‰²"
+
+#: src/touch.c:389
+#, fuzzy, c-format
+msgid ""
+"warning: `touch %s' is obsolete; use `touch -t %04ld%02d%02d%02d%02d.%02d'"
+msgstr "警告:‘touch %s’已經éŽæ™‚;請使用‘touch -t %04d%02d%02d%02d%02d.%02d’"
+
+#: src/tr.c:290
+#, c-format
+msgid "Usage: %s [OPTION]... SET1 [SET2]\n"
+msgstr "用法:%s [é¸é …]... SET1 [SET2]\n"
+
+#: src/tr.c:294
+#, fuzzy
+msgid ""
+"Translate, squeeze, and/or delete characters from standard input,\n"
+"writing to standard output.\n"
+"\n"
+" -c, -C, --complement first complement SET1\n"
+" -d, --delete delete characters in SET1, do not translate\n"
+" -s, --squeeze-repeats replace each input sequence of a repeated "
+"character\n"
+" that is listed in SET1 with a single occurrence\n"
+" of that character\n"
+" -t, --truncate-set1 first truncate SET1 to length of SET2\n"
+msgstr ""
+"從標準輸入讀å–資料,將字元置æ›ã€å£“縮ã€åˆªé™¤å¾Œï¼Œåœ¨æ¨™æº–輸出顯示çµæžœã€‚\n"
+"\n"
+" -c, --complement 以所有ä¸å±¬æ–¼ SET1 çš„å­—å…ƒ (SET1 的餘集) å–代 SET1\n"
+" -d, --delete 刪除所有 SET1 裡的字元,ä¸é€²è¡Œç½®æ›\n"
+" -s, --squeeze-repeats å°æ–¼ä»»ä½•åœ¨ SET1 中列出的字元,如果該字元在輸入資"
+"æ–™\n"
+" 中連續é‡è¤‡å‡ºç¾ï¼Œå‰‡å°‡è©²æ®µå­—元刪除至åªå‰©ä¸€å€‹\n"
+" -t, --truncate-set1 先將 SET1 的長度截至跟 SET2 一樣\n"
+
+#: src/tr.c:307
+msgid ""
+"\n"
+"SETs are specified as strings of characters. Most represent themselves.\n"
+"Interpreted sequences are:\n"
+"\n"
+" \\NNN character with octal value NNN (1 to 3 octal digits)\n"
+" \\\\ backslash\n"
+" \\a audible BEL\n"
+" \\b backspace\n"
+" \\f form feed\n"
+" \\n new line\n"
+" \\r return\n"
+" \\t horizontal tab\n"
+msgstr ""
+"\n"
+"SET 是以字串方å¼æŒ‡å®šã€‚大部份字元都會直接處ç†ã€‚è¦è§£è­¯çš„åºåˆ—包括:\n"
+"\n"
+" \\NNN 八進ä½æ•¸å­— NNN (1 至 3 個ä½)所代表的字元\n"
+" \\\\ å斜號\n"
+" \\a éŸ¿è² (BEL)\n"
+" \\b 倒退字元 (backspace)\n"
+" \\f æ›é å­—å…ƒ (form feed)\n"
+" \\n æ›è¡Œå­—å…ƒ (new line)\n"
+" \\r 復ä½å­—å…ƒ (return)\n"
+" \\t 水平定ä½å­—å…ƒ (tab)\n"
+
+#: src/tr.c:321
+msgid ""
+" \\v vertical tab\n"
+" CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n"
+" [CHAR*] in SET2, copies of CHAR until length of SET1\n"
+" [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n"
+" [:alnum:] all letters and digits\n"
+" [:alpha:] all letters\n"
+" [:blank:] all horizontal whitespace\n"
+" [:cntrl:] all control characters\n"
+" [:digit:] all digits\n"
+msgstr ""
+" \\v 垂直定ä½å­—å…ƒ (vertical tab)\n"
+" å­—å…ƒ1-å­—å…ƒ2 ç”± <å­—å…ƒ1> 開始å‡åºæŽ’列至 <å­—å…ƒ2>\n"
+" [å­—å…ƒ*] 在 SET2 裡é‡è¤‡åŠ ä¸Š <å­—å…ƒ>ï¼Œç›´è‡³ç¬¦åˆ SET1 的長度\n"
+" [å­—å…ƒ*é‡è¤‡æ¬¡æ•¸] é‡è¤‡æŒ‡å®š <å­—å…ƒ>,如果 <é‡è¤‡æ¬¡æ•¸> 的第一個字元是 0 則表示\n"
+" <é‡è¤‡æ¬¡æ•¸> 是八進ä½æ•¸å­—\n"
+" [:alnum:] 所有英文字åŠæ•¸å­—\n"
+" [:alpha:] 所有英文字\n"
+" [:blank:] 所有水平的空白字元\n"
+" [:cntrl:] 所有控制字元\n"
+" [:digit:] 所有數字\n"
+
+#: src/tr.c:332
+msgid ""
+" [:graph:] all printable characters, not including space\n"
+" [:lower:] all lower case letters\n"
+" [:print:] all printable characters, including space\n"
+" [:punct:] all punctuation characters\n"
+" [:space:] all horizontal or vertical whitespace\n"
+" [:upper:] all upper case letters\n"
+" [:xdigit:] all hexadecimal digits\n"
+" [=CHAR=] all characters which are equivalent to CHAR\n"
+msgstr ""
+" [:graph:] 所有å¯åˆ—å°çš„字元,ä¸åŒ…括空格\n"
+" [:lower:] 所有å°å¯«è‹±æ–‡å­—æ¯\n"
+" [:print:] 所有å¯åˆ—å°çš„字元,包括空格\n"
+" [:punct:] 所有標點符號\n"
+" [:space:] 所有水平或垂直的空白字元\n"
+" [:upper:] 所有大寫英文字æ¯\n"
+" [:xdigit:] 所有å六進ä½æ•¸å­—\n"
+" [=CHAR=] 所有和 CHAR åŒç­‰çš„å­—å…ƒ\n"
+
+#: src/tr.c:342
+msgid ""
+"\n"
+"Translation occurs if -d is not given and both SET1 and SET2 appear.\n"
+"-t may be used only when translating. SET2 is extended to length of\n"
+"SET1 by repeating its last character as necessary. "
+msgstr ""
+"\n"
+"ç½®æ›æ“作åªåœ¨æ²’有指定 -d é¸é …å’Œ SET1ã€SET2 åŒæ™‚存在的情æ³ä¸‹æœ‰æ•ˆã€‚\n"
+"-t é¸é …åªèƒ½åœ¨ç½®æ›æ“作時使用。有需è¦æ™‚,SET2 會將它的最後一個字元\n"
+"é‡è¤‡ï¼Œç›´è‡³ SET2 的長度和 SET1 的一樣。"
+
+#: src/tr.c:348
+msgid ""
+"Excess characters\n"
+"of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n"
+"expand in ascending order; used in SET2 while translating, they may\n"
+"only be used in pairs to specify case conversion. "
+msgstr ""
+"SET2 中的多餘字元會被忽略。\n"
+"åªæœ‰ [:lower:] åŠ [:upper:] å¯ä¿è­‰å±•é–‹çš„字元以å‡åºæŽ’列;當在 SET2 中\n"
+"使用作為置æ›æ“作的字元時,它們åªèƒ½ä¸€èµ·ä½¿ç”¨ï¼Œè¡¨ç¤ºç½®æ›å¤§å°å¯«ã€‚"
+
+#: src/tr.c:354
+msgid ""
+"-s uses SET1 if not\n"
+"translating nor deleting; else squeezing uses SET2 and occurs after\n"
+"translation or deletion.\n"
+msgstr ""
+"è‹¥ä¸æ˜¯\n"
+"ç½®æ›æˆ–刪除字元,-s é¸é …åªæœƒä½¿ç”¨ SET1ï¼›å¦å¤–壓縮字元會使用 SET2,並在\n"
+"ç½®æ›æˆ–刪除字元後æ‰é€²è¡Œã€‚\n"
+
+#: src/tr.c:519
+#, fuzzy, c-format
+msgid ""
+"warning: the ambiguous octal escape \\%c%c%c is being\n"
+"\tinterpreted as the 2-byte sequence \\0%c%c, %c"
+msgstr ""
+"警告:æ„義ä¸æ˜Žç¢ºçš„八進ä½æº¢å‡ºåºåˆ— \\%c%c%c 會\n"
+"\tç†è§£ç‚ºå…©å€‹ä½å…ƒçµ„çš„åºåˆ— \\0%c%c,‘%c’"
+
+#: src/tr.c:682
+#, c-format
+msgid "range-endpoints of `%s-%s' are in reverse collating sequence order"
+msgstr "‘%s-%s’範åœçš„端點和字元應有的排列次åºç›¸å"
+
+#: src/tr.c:838
+#, fuzzy, c-format
+msgid "invalid repeat count %s in [c*n] construct"
+msgstr "[c*n] çµæ§‹ä¸­çš„é‡è¤‡æ¬¡æ•¸â€˜%s’無效"
+
+#: src/tr.c:919
+#, c-format
+msgid "missing character class name `[::]'"
+msgstr "無效的字元種類å稱‘[::]’"
+
+#: src/tr.c:922
+#, c-format
+msgid "missing equivalence class character `[==]'"
+msgstr "缺少了等價字元種類的字元‘[==]’"
+
+#: src/tr.c:937
+#, fuzzy, c-format
+msgid "invalid character class %s"
+msgstr "無效的字元種類‘%s’"
+
+#: src/tr.c:956
+#, c-format
+msgid "%s: equivalence class operand must be a single character"
+msgstr "%s:等價字元種類中的é‹ç®—符必須是æ°å¥½ä¸€å€‹å­—å…ƒ"
+
+#: src/tr.c:1275
+#, fuzzy, c-format
+msgid "too many characters in set"
+msgstr "欄ä½è¦æ ¼å‡ºç¾ä¸åˆæ³•çš„å­—å…ƒ"
+
+#: src/tr.c:1423
+#, c-format
+msgid "the [c*] repeat construct may not appear in string1"
+msgstr "é‡è¤‡çµæ§‹ [c*] ä¸èƒ½åœ¨å­—串 1 出ç¾"
+
+#: src/tr.c:1433
+#, c-format
+msgid "only one [c*] repeat construct may appear in string2"
+msgstr "é‡è¤‡çµæ§‹ [c*] åªèƒ½åœ¨å­—串 2 出ç¾ä¸€æ¬¡"
+
+#: src/tr.c:1441
+#, c-format
+msgid "[=c=] expressions may not appear in string2 when translating"
+msgstr "進行置æ›æ™‚,[=c=] 表示å¼ä¸èƒ½åœ¨å­—串 2 出ç¾"
+
+#: src/tr.c:1454
+#, c-format
+msgid "when not truncating set1, string2 must be non-empty"
+msgstr "è‹¥ä¸æˆªæ–·(消除) set1,字串 2 ä¸èƒ½æ˜¯ç©ºçš„"
+
+#: src/tr.c:1463
+#, c-format
+msgid ""
+"when translating with complemented character classes,\n"
+"string2 must map all characters in the domain to one"
+msgstr ""
+"å–字元種類的餘集(complement)作置æ›æ™‚,åªèƒ½å°‡æ‰€æœ‰å­—元映射\n"
+"至一個字元,å³å­—串 2 åªå¯å«æœ‰ä¸€å€‹å­—å…ƒ"
+
+#: src/tr.c:1470
+#, c-format
+msgid ""
+"when translating, the only character classes that may appear in\n"
+"string2 are `upper' and `lower'"
+msgstr "ç½®æ›æ™‚,å¯ä»¥åœ¨å­—串 2 出ç¾çš„字元種類åªæœ‰â€˜upper’或‘lower’"
+
+#: src/tr.c:1479
+#, c-format
+msgid "the [c*] construct may appear in string2 only when translating"
+msgstr "[c*] çµæ§‹åªæœ‰åœ¨ç½®æ›æ™‚æ–¹å¯åœ¨å­—串 2 出ç¾"
+
+#: src/tr.c:1731
+#, fuzzy
+msgid "Two strings must be given when translating."
+msgstr "ç½®æ›æ™‚必須指定兩個字串"
+
+#: src/tr.c:1741
+#, fuzzy
+msgid "Only one string may be given when deleting without squeezing repeats."
+msgstr "刪除但ä¸å£“縮é‡è¤‡å­—時åªèƒ½æŒ‡å®šä¸€å€‹å­—串"
+
+#: src/tr.c:1844
+#, c-format
+msgid "misaligned [:upper:] and/or [:lower:] construct"
+msgstr "[:upper:]ã€[:lower:]çµæ§‹çš„ä½ç½®æ²’有å°é½Š"
+
+#: src/true.c:42
+#, fuzzy, c-format
+msgid ""
+"Usage: %s [ignored command line arguments]\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s 檔案å稱\n"
+" 或:%s é¸é …\n"
+
+#: src/true.c:49
+msgid "Exit with a status code indicating success."
+msgstr ""
+
+#: src/tsort.c:86
+#, c-format
+msgid ""
+"Usage: %s [OPTION] [FILE]\n"
+"Write totally ordered list consistent with the partial ordering in FILE.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"用法:%s [é¸é …] [檔案]\n"
+"å°‡ <檔案> 中所有已進行部份排åºçš„é …ç›®è¯ç¹«èµ·ä¾†ï¼Œç”¢ç”Ÿæ–°çš„排列,\n"
+"而該排列å«æœ‰ <檔案> 中的所有項目。如果沒有指定 <檔案> 或\n"
+"<檔案> 是 -,則由標準輸入讀å–資料。\n"
+"\n"
+
+#: src/tsort.c:474
+#, fuzzy, c-format
+msgid "%s: input contains an odd number of tokens"
+msgstr "%s:將輸入資料排åºæ™‚出ç¾è¿´åœˆï¼š"
+
+#: src/tsort.c:515
+#, c-format
+msgid "%s: input contains a loop:"
+msgstr "%s:將輸入資料排åºæ™‚出ç¾è¿´åœˆï¼š"
+
+#: src/tty.c:69 src/uname.c:117 src/whoami.c:50
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]...\n"
+msgstr "用法:%s [é¸é …] [檔案]...\n"
+
+#: src/tty.c:70
+msgid ""
+"Print the file name of the terminal connected to standard input.\n"
+"\n"
+" -s, --silent, --quiet print nothing, only return an exit status\n"
+msgstr ""
+
+#: src/tty.c:125
+msgid "not a tty"
+msgstr ""
+
+#: src/uname.c:118
+msgid ""
+"Print certain system information. With no OPTION, same as -s.\n"
+"\n"
+" -a, --all print all information, in the following order,\n"
+" except omit -p and -i if unknown:\n"
+" -s, --kernel-name print the kernel name\n"
+" -n, --nodename print the network node hostname\n"
+" -r, --kernel-release print the kernel release\n"
+msgstr ""
+
+#: src/uname.c:127
+msgid ""
+" -v, --kernel-version print the kernel version\n"
+" -m, --machine print the machine hardware name\n"
+" -p, --processor print the processor type or \"unknown\"\n"
+" -i, --hardware-platform print the hardware platform or \"unknown\"\n"
+" -o, --operating-system print the operating system\n"
+msgstr ""
+
+#: src/uname.c:236
+#, fuzzy, c-format
+msgid "cannot get system name"
+msgstr "無法建立暫存檔"
+
+#: src/unexpand.c:125
+#, fuzzy
+msgid ""
+"Convert blanks in each FILE to tabs, writing to standard output.\n"
+"With no FILE, or when FILE is -, read standard input.\n"
+"\n"
+msgstr ""
+"å°‡æ¯å€‹ <檔案> 中的空格轉æ›ç‚º tab,並在標準輸出顯示çµæžœã€‚\n"
+"如果沒有指定 <檔案> 或 <檔案> 是 -,則由標準輸入讀å–資料。\n"
+"\n"
+
+#: src/unexpand.c:133
+#, fuzzy
+msgid ""
+" -a, --all convert all blanks, instead of just initial blanks\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n"
+" -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n"
+msgstr ""
+" -a, --all 轉æ›æ‰€æœ‰ç©ºç™½å­—元,並éžåªæ˜¯æ¯è¡Œé–‹å§‹çš„空白字元\n"
+" --first-only convert only leading sequences of blanks (overrides -a)\n"
+" -t, --tabs=數字 將指定 <數字> 的空格轉æ›ç‚º tabï¼Œè€Œéž 8 個\n"
+" -t, --tabs=LIST 用以逗號分隔的數字特別指定 tab çš„ä½ç½®\n"
+
+#: src/unexpand.c:161
+#, c-format
+msgid "tabs are too far apart"
+msgstr ""
+
+#: src/unexpand.c:512
+#, fuzzy, c-format
+msgid "tab stop value is too large"
+msgstr "tab 字元寬度 %s éŽé•·"
+
+#: src/uniq.c:135
+#, c-format
+msgid "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n"
+msgstr "用法:%s [é¸é …]... [輸入 [輸出]]\n"
+
+#: src/uniq.c:139
+msgid ""
+"Discard all but one of successive identical lines from INPUT (or\n"
+"standard input), writing to OUTPUT (or standard output).\n"
+"\n"
+msgstr ""
+"å°‡ <輸入> (é è¨­ç‚ºæ¨™æº–輸入) 的資料中æ¯è¡Œé€£çºŒç›¸åŒçš„資料æ¨æ£„至åªå‰©ä¸€è¡Œï¼Œ\n"
+"並在 <輸出> 顯示çµæžœ (é è¨­æœƒåœ¨æ¨™æº–輸出顯示çµæžœ)。\n"
+
+#: src/uniq.c:147
+msgid ""
+" -c, --count prefix lines by the number of occurrences\n"
+" -d, --repeated only print duplicate lines\n"
+msgstr ""
+" -c, --count æ¯è¡Œå‰åŠ ä¸Šå‡ºç¾æ¬¡æ•¸\n"
+" -d, --repeated åªå°å‡ºé‡è¤‡çš„資料\n"
+
+#: src/uniq.c:151
+#, fuzzy
+msgid ""
+" -D, --all-repeated[=delimit-method] print all duplicate lines\n"
+" delimit-method={none(default),prepend,separate}\n"
+" Delimiting is done with blank lines.\n"
+" -f, --skip-fields=N avoid comparing the first N fields\n"
+" -i, --ignore-case ignore differences in case when comparing\n"
+" -s, --skip-chars=N avoid comparing the first N characters\n"
+" -u, --unique only print unique lines\n"
+msgstr ""
+" -D, --all-repeated[=分隔方å¼]\n"
+" å°å‡ºæ‰€æœ‰é‡è¤‡çš„資料\n"
+" 分隔方å¼={none(é è¨­)ã€prependã€separate}\n"
+" 會使用空行來分隔資料。\n"
+" -f, --skip-fields=N ä¸æ¯”較最åˆçš„ N 個欄ä½\n"
+" -i, --ignore-case 比較時忽略大å°å¯«\n"
+" -s, --skip-chars=N ä¸æ¯”較最åˆçš„ N 個字元\n"
+" -u, --unique åªå°å‡ºæ²’有é‡è¤‡çš„資料\n"
+
+#: src/uniq.c:160
+msgid " -w, --check-chars=N compare no more than N characters in lines\n"
+msgstr " -w, --check-chars=N æ¯è¡Œæ¯”較ä¸å¤šæ–¼ N 個字元\n"
+
+#: src/uniq.c:165
+msgid ""
+"\n"
+"A field is a run of whitespace, then non-whitespace characters.\n"
+"Fields are skipped before chars.\n"
+msgstr ""
+"\n"
+"一個欄ä½æ˜¯ç”±ä¸€çµ„空白字元加上一組éžç©ºç™½çš„字元組æˆçš„。\n"
+"當åŒæ™‚指定略éŽæ¬„ä½å’Œç•¥éŽå­—å…ƒä¸ä½œæ¯”較時,會先略éŽæ¬„ä½ã€‚\n"
+
+#: src/uniq.c:350
+#, c-format
+msgid "too many repeated lines"
+msgstr "é‡è¤‡çš„行數éŽå¤š"
+
+#: src/uniq.c:512
+msgid "invalid number of fields to skip"
+msgstr "è¦ç•¥éŽçš„欄ä½æ•¸ç›®ç„¡æ•ˆ"
+
+#: src/uniq.c:521
+msgid "invalid number of bytes to skip"
+msgstr "è¦ç•¥éŽçš„ä½å…ƒçµ„數目無效"
+
+#: src/uniq.c:530
+msgid "invalid number of bytes to compare"
+msgstr "è¦æ¯”較的ä½å…ƒçµ„數目無效"
+
+#: src/uniq.c:545
+#, c-format
+msgid "printing all duplicated lines and repeat counts is meaningless"
+msgstr "顯示æ¯è¡Œé‡è¤‡çš„資籵åˆè¨ˆç®—該行的é‡è¤‡æ¬¡æ•¸æ˜¯æ²’有æ„義的"
+
+#: src/unlink.c:50
+#, c-format
+msgid ""
+"Usage: %s FILE\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s 檔案\n"
+" 或:%s é¸é …\n"
+
+#: src/unlink.c:53
+msgid ""
+"Call the unlink function to remove the specified FILE.\n"
+"\n"
+msgstr ""
+"é€éŽèª¿ç”¨ unlink 函å¼ä¾†ç§»é™¤æŒ‡å®šçš„ <檔案>。\n"
+"\n"
+
+#: src/unlink.c:91
+#, c-format
+msgid "cannot unlink %s"
+msgstr "無法 unlink %s"
+
+#: src/uptime.c:123
+#, c-format
+msgid "couldn't get boot time"
+msgstr "無法讀å–系統啟動時間"
+
+#: src/uptime.c:131
+#, c-format
+msgid " %2d:%02d%s up "
+msgstr ""
+
+#: src/uptime.c:135
+msgid "am"
+msgstr "上åˆ"
+
+#: src/uptime.c:135
+msgid "pm"
+msgstr "下åˆ"
+
+#: src/uptime.c:137
+#, c-format
+msgid " ??:???? up "
+msgstr ""
+
+#: src/uptime.c:139
+#, c-format
+msgid "???? days ??:??, "
+msgstr ""
+
+#: src/uptime.c:143
+#, c-format
+msgid "%ld day"
+msgid_plural "%ld days"
+msgstr[0] "%ld æ—¥"
+
+#: src/uptime.c:147
+#, c-format
+msgid "%lu user"
+msgid_plural "%lu users"
+msgstr[0] "%lu 個使用者"
+
+#: src/uptime.c:161
+#, c-format
+msgid ", load average: %.2f"
+msgstr ", å¹³å‡è² è¼‰é‡: %.2f"
+
+#: src/uptime.c:197 src/users.c:108
+#, c-format
+msgid "Usage: %s [OPTION]... [ FILE ]\n"
+msgstr "用法:%s [é¸é …]... [檔案]\n"
+
+#: src/uptime.c:198
+#, c-format
+msgid ""
+"Print the current time, the length of time the system has been up,\n"
+"the number of users on the system, and the average number of jobs\n"
+"in the run queue over the last 1, 5 and 15 minutes.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+
+#: src/users.c:109
+#, c-format
+msgid ""
+"Output who is currently logged in according to FILE.\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"\n"
+msgstr ""
+"根據 <檔案> 的內容,顯示哪些人目然已經登入系統。如果沒有指定,\n"
+"é è¨­æœƒä½¿ç”¨ %s。使用 %s 作為檔案也很普é。\n"
+
+#: src/wc.c:113
+msgid ""
+"Print newline, word, and byte counts for each FILE, and a total line if\n"
+"more than one FILE is specified. With no FILE, or when FILE is -,\n"
+"read standard input.\n"
+" -c, --bytes print the byte counts\n"
+" -m, --chars print the character counts\n"
+" -l, --lines print the newline counts\n"
+msgstr ""
+"å°å‡ºæ¯å€‹ <檔案> 的行數ã€å­—數åŠä½å…ƒçµ„數目,指定多個 <檔案> 時還會å°å‡ºç¸½è¨ˆã€‚\n"
+"如果沒有指定 <檔案> 或 <檔案> 是 -,則由標準輸入讀å–資料。\n"
+" -c, --bytes å°å‡ºä½å…ƒçµ„數目\n"
+" -m, --chars å°å‡ºå­—元數目\n"
+" -l, --lines å°å‡ºè¡Œæ•¸\n"
+
+#: src/wc.c:121
+#, fuzzy
+msgid ""
+" --files0-from=F read input from the files specified by\n"
+" NUL-terminated names in file F\n"
+" -L, --max-line-length print the length of the longest line\n"
+" -w, --words print the word counts\n"
+msgstr ""
+" -L, --max-line-length å°å‡ºæœ€é•·ä¸€è¡Œçš„字數\n"
+" -w, --words å°å‡ºä»¥ç©ºæ ¼éš”開為標準的字數\n"
+
+#: src/wc.c:686
+#, c-format
+msgid "when reading file names from stdin, no file name of %s allowed"
+msgstr ""
+
+#: src/who.c:212
+msgid " old "
+msgstr ""
+
+#: src/who.c:439 src/who.c:441
+msgid "id="
+msgstr ""
+
+#: src/who.c:454 src/who.c:459
+msgid "term="
+msgstr ""
+
+#: src/who.c:456 src/who.c:460
+msgid "exit="
+msgstr ""
+
+#: src/who.c:497
+msgid "clock change"
+msgstr ""
+
+#: src/who.c:509 src/who.c:510
+msgid "run-level"
+msgstr ""
+
+#: src/who.c:513 src/who.c:514
+msgid "last="
+msgstr ""
+
+#: src/who.c:545
+#, c-format
+msgid ""
+"\n"
+"# users=%lu\n"
+msgstr ""
+"\n"
+"登入用家數目=%lu\n"
+
+#: src/who.c:551
+msgid "NAME"
+msgstr "å稱"
+
+#: src/who.c:551
+msgid "LINE"
+msgstr ""
+
+#: src/who.c:551
+msgid "TIME"
+msgstr "時間"
+
+#: src/who.c:551
+msgid "IDLE"
+msgstr ""
+
+#: src/who.c:552
+msgid "PID"
+msgstr "PID"
+
+#: src/who.c:552
+msgid "COMMENT"
+msgstr "備註"
+
+#: src/who.c:552
+msgid "EXIT"
+msgstr "離開"
+
+#: src/who.c:633
+#, fuzzy, c-format
+msgid "Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"
+msgstr "用法:%s [é¸é …]... 檔案1 檔案2\n"
+
+#: src/who.c:634
+msgid ""
+"\n"
+" -a, --all same as -b -d --login -p -r -t -T -u\n"
+" -b, --boot time of last system boot\n"
+" -d, --dead print dead processes\n"
+" -H, --heading print line of column headings\n"
+msgstr ""
+
+#: src/who.c:641
+msgid " -l, --login print system login processes\n"
+msgstr ""
+
+#: src/who.c:644
+msgid ""
+" --lookup attempt to canonicalize hostnames via DNS\n"
+" -m only hostname and user associated with stdin\n"
+" -p, --process print active processes spawned by init\n"
+msgstr ""
+
+#: src/who.c:649
+msgid ""
+" -q, --count all login names and number of users logged on\n"
+" -r, --runlevel print current runlevel\n"
+" -s, --short print only name, line, and time (default)\n"
+" -t, --time print last system clock change\n"
+msgstr ""
+
+#: src/who.c:655
+msgid ""
+" -T, -w, --mesg add user's message status as +, - or ?\n"
+" -u, --users list users logged in\n"
+" --message same as -T\n"
+" --writable same as -T\n"
+msgstr ""
+
+#: src/who.c:663
+#, c-format
+msgid ""
+"\n"
+"If FILE is not specified, use %s. %s as FILE is common.\n"
+"If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n"
+msgstr ""
+
+#: src/who.c:763
+#, c-format
+msgid "Warning: -i will be removed in a future release; use -u instead"
+msgstr "警告:以後隨時å¯èƒ½ä¸å†æ”¯æ´ -i é¸é …。請使用 -u。"
+
+#: src/whoami.c:51
+msgid ""
+"Print the user name associated with the current effective user ID.\n"
+"Same as id -un.\n"
+"\n"
+msgstr ""
+
+#: src/whoami.c:95
+#, fuzzy, c-format
+msgid "%s: cannot find name for user ID %lu\n"
+msgstr "%s: 找ä¸åˆ° UID 為 %lu 的用戶å稱\n"
+
+#: src/yes.c:46
+#, c-format
+msgid ""
+"Usage: %s [STRING]...\n"
+" or: %s OPTION\n"
+msgstr ""
+"用法:%s [字串]...\n"
+" 或:%s é¸é …\n"
+
+#: src/yes.c:52
+msgid ""
+"Repeatedly output a line with all specified STRING(s), or `y'.\n"
+"\n"
+msgstr ""
+"é‡è¤‡å°å‡ºåŒä¸€å¥æŒ‡å®šçš„ <字串>,如沒有指定則é è¨­ç‚º ‘y’。\n"
+"\n"
+
+#~ msgid "strip failed"
+#~ msgstr "strip 失敗"
+
+#~ msgid "cannot change owner and/or group of %s"
+#~ msgstr "無法更改%sçš„æ“有者和/或所屬群組"
+
+#~ msgid "cannot chdir to directory %s"
+#~ msgstr "無法進入%s目錄"
+
+#~ msgid "cannot get the login group of a numeric UID"
+#~ msgstr "無法å–å¾— UID 數值所代表的登入群組"
+
+#~ msgid ""
+#~ "This is free software; see the source for copying conditions. There is "
+#~ "NO\n"
+#~ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR "
+#~ "PURPOSE.\n"
+#~ msgstr ""
+#~ "這是自由軟體;請åƒè€ƒåŽŸå§‹ç¢¼çš„版權è²æ˜Žã€‚本軟體ä¸æ供任何ä¿è­‰ï¼Œç”šè‡³ä¸æœƒåŒ…括\n"
+#~ "å¯å”®æ€§æˆ–é©ç”¨æ–¼ä»»ä½•ç‰¹å®šç›®çš„çš„ä¿è­‰ã€‚\n"
+
+#~ msgid "closing standard output"
+#~ msgstr "關閉標準輸出"
+
+#~ msgid "-R -h requires -P"
+#~ msgstr "åŒæ™‚使用 -R -h æ™‚é‚„éœ€è¦ -P é¸é …"
+
+#~ msgid ""
+#~ "\n"
+#~ "Each MODE is one or more of the letters ugoa, one of the symbols +-= and\n"
+#~ "one or more of the letters rwxXstugo.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "<模å¼> 由三部份組æˆï¼šä¸€å€‹æˆ–以上的 ugoa å­—å…ƒã€+-= 符號其中一個ã€\n"
+#~ "和一個或以上的 rwxXstugo 字元。\n"
+
+#~ msgid "cannot overwrite directory %s"
+#~ msgstr "無法覆寫 %s 目錄"
+
+#~ msgid ""
+#~ "warning: --version-control (-V) is obsolete; support for it\n"
+#~ "will be removed in some future release. Use --backup=%s instead."
+#~ msgstr ""
+#~ "警告:--version-control (-V) é¸é …已經éŽæ™‚;將來的版本隨時å¯èƒ½ä¸å†æ”¯æ´\n"
+#~ "æ­¤é¸é …。請使用 --backup=%s。"
+
+#~ msgid "symbolic links are not supported on this system"
+#~ msgstr "此系統ä¸æ”¯æ´ç¬¦è™Ÿéˆçµ"
+
+#~ msgid ""
+#~ "a format string may not be specified when using the --rfc-2822 (-R) option"
+#~ msgstr "使用 --rfc-2822 (-R) é¸é …時ä¸èƒ½å†æŒ‡å®šè¼¸å‡ºæ ¼å¼"
+
+#~ msgid "undefined"
+#~ msgstr "未定義"
+
+#~ msgid "cannot get time of day"
+#~ msgstr "無法讀å–時間"
+
+#~ msgid "%s+%s records in\n"
+#~ msgstr "讀入了 %s+%s 個å€æ®µ\n"
+
+#~ msgid "%s+%s records out\n"
+#~ msgstr "輸出了 %s+%s 個å€æ®µ\n"
+
+#~ msgid "truncated records"
+#~ msgstr "個被截斷了的å€æ®µ"
+
+#~ msgid "file offset out of range"
+#~ msgstr "檔案內容ä½ç½®è¶…出範åœä»¥å¤–"
+
+#~ msgid ""
+#~ " -e enable interpretation of backslash escapes\n"
+#~ " -E disable interpretation of backslash escapes (default)\n"
+#~ msgstr ""
+#~ " -e 能夠識別加上å斜號 ‘\\’ 的特殊格å¼\n"
+#~ " -E ä¸èƒ½å¤ è­˜åˆ¥åŠ ä¸Šå斜號 ‘\\’ çš„ç‰¹æ®Šæ ¼å¼ (é è¨­ä½¿ç”¨)\n"
+
+#~ msgid "`-LIST' option is obsolete; use `-t LIST'"
+#~ msgstr "‘-LIST’ é¸é …已經éŽæ™‚;請改用 ‘-t LIST’"
+
+#~ msgid "`%s' is too large"
+#~ msgstr "‘%s’ éŽå¤§"
+
+#~ msgid ""
+#~ "Usage: %s [ignored command line arguments]\n"
+#~ " or: %s OPTION\n"
+#~ "Exit with a status code indicating failure.\n"
+#~ "\n"
+#~ "These option names may not be abbreviated.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "用法:%s [所有åƒæ•¸çš†æœƒè¢«å¿½ç•¥]\n"
+#~ " 或:%s é¸é …\n"
+#~ "簡單地çµæŸç¨‹å¼ï¼Œä¸¦å›žå‚³éŒ¯èª¤ç¢¼ï¼Œè¡¨ç¤ºç¨‹å¼å¤±æ•—。\n"
+#~ "\n"
+#~ "以下的é¸é …ä¸å¯ä»¥ç”¨ç°¡å¯«ã€‚\n"
+#~ "\n"
+
+#~ msgid "`%s' option is obsolete; use `%s'"
+#~ msgstr "‘%s’é¸é …å·²éŽæ™‚;請改用 ‘%s’"
+
+#~ msgid "%s: number of bytes is large"
+#~ msgstr "%s:ä½å…ƒçµ„數目éŽå¤§"
+
+#~ msgid "unrecognized option `-%c'"
+#~ msgstr "無法識別的é¸é …‘-%c’"
+
+#~ msgid "`-%s' option is obsolete; use `-%c %.*s%.*s%s'"
+#~ msgstr "‘-%s’ é¸é …å·²éŽæ™‚;請改用 ‘-%c %.*s%.*s%s’"
+
+#~ msgid "cannot obtain time stamps for %s"
+#~ msgstr "無法得知 %s 的檔案時間"
+
+#~ msgid "value %s is so large that it is not representable"
+#~ msgstr "因為數值 %s éŽå¤§ï¼Œæ‰€ä»¥ç„¡æ³•è¡¨ç¤º"
+
+#~ msgid "invalid field number: `%s'"
+#~ msgstr "無效的欄ä½è™Ÿç¢¼ï¼šâ€˜%s’"
+
+#~ msgid "invalid field number for file 1: `%s'"
+#~ msgstr "檔案 1 的欄ä½è™Ÿç¢¼æ˜¯ç„¡æ•ˆçš„:‘%s’"
+
+#~ msgid "invalid field number for file 2: `%s'"
+#~ msgstr "檔案 2 的欄ä½è™Ÿç¢¼æ˜¯ç„¡æ•ˆçš„:‘%s’"
+
+#, fuzzy
+#~ msgid "create symbolic link %s to %s"
+#~ msgstr "建立連至 %2$s çš„ç¬¦è™Ÿé€£çµ %1$s"
+
+#~ msgid "create hard link %s to %s"
+#~ msgstr "建立連至%2$s的實際éˆçµ (hard link)%1$s"
+
+#~ msgid ""
+#~ "\n"
+#~ " -b, --binary read files in binary mode (default on DOS/"
+#~ "Windows)\n"
+#~ " -c, --check check %s sums against given list\n"
+#~ " -t, --text read files in text mode (default)\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ " -b, --binary 以二元碼模å¼è®€å…¥æª”案 (DOS/Windows å¹³å°çš„é è¨­æ¨¡"
+#~ "å¼)\n"
+#~ " -c, --check 驗證由指定的清單æ供的 %s 檢查值\n"
+#~ " -t, --text 以文字模å¼è®€å…¥æª”案 (é è¨­æ¨¡å¼)\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid "Only one operand may be specified when using --check."
+#~ msgstr "使用é¸é … --check 時åªèƒ½æŒ‡å®šä¸€å€‹åƒæ•¸"
+
+#, fuzzy
+#~ msgid "cannot set permissions of directory %s"
+#~ msgstr "無法更改%s的權é™"
+
+#, fuzzy
+#~ msgid "cannot set permissions of fifo %s"
+#~ msgstr "無法更改%s的權é™"
+
+#, fuzzy
+#~ msgid "cannot set permissions of %s"
+#~ msgstr "無法更改%s的權é™"
+
+#, fuzzy
+#~ msgid "cannot get priority"
+#~ msgstr "無法建立目錄%s"
+
+#, fuzzy
+#~ msgid "cannot set priority"
+#~ msgstr "無法建立目錄%s"
+
+#, fuzzy
+#~ msgid "failed to redirect standard output"
+#~ msgstr "標準輸出"
+
+#, fuzzy
+#~ msgid "column count too large"
+#~ msgstr "%s:數字‘%.*s’éŽå¤§"
+
+#~ msgid "`--columns=COLUMN' invalid number of columns: `%s'"
+#~ msgstr "‘--columns=欄ä½â€™çš„欄ä½æ•¸ç›®ç„¡æ•ˆï¼šâ€˜%s’"
+
+#~ msgid ""
+#~ "This program is distributed in the hope that it will be useful,\n"
+#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+#~ "GNU General Public License for more details.\n"
+#~ "\n"
+#~ msgstr ""
+#~ "發佈本軟體是希望它會有用,但ä¸æœƒæ供任何ä¿è­‰ï¼Œç”šè‡³ä¸æœƒåŒ…括å¯å”®æ€§æˆ–\n"
+#~ "é©ç”¨æ–¼ä»»ä½•ç‰¹å®šç›®çš„çš„ä¿è­‰ã€‚詳情請åƒè€ƒ GNU General Public License。\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "You should have received a copy of the GNU General Public License\n"
+#~ "along with this program; if not, write to the Free Software Foundation,\n"
+#~ "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+#~ msgstr ""
+#~ "你應該已經隨本軟體收到一份 GNU General Public Licenseï¼›å¦å‰‡è«‹å¯„信至\n"
+#~ "Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,\n"
+#~ "MA 02111-1307, USA.\n"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to .."
+#~ msgstr "無法進入%s目錄"
+
+#~ msgid "cannot lstat `.' in %s"
+#~ msgstr "無法在%s中 lstat‘.’"
+
+#~ msgid "cannot lstat %s"
+#~ msgstr "lstat%s失敗"
+
+#, fuzzy
+#~ msgid "cannot chdir from %s to %s"
+#~ msgstr "無法進入%s目錄"
+
+#~ msgid "cannot remove `.' or `..'"
+#~ msgstr "無法移除‘.’或‘..’"
+
+#, fuzzy
+#~ msgid ""
+#~ "Remove (unlink) the FILE(s).\n"
+#~ "\n"
+#~ " -d, --directory unlink FILE, even if it is a non-empty directory\n"
+#~ " (super-user only; this works only if your "
+#~ "system\n"
+#~ " supports `unlink' for nonempty directories)\n"
+#~ " -f, --force ignore nonexistent files, never prompt\n"
+#~ " -i, --interactive prompt before any removal\n"
+#~ msgstr ""
+#~ "移除指定的 <檔案>。\n"
+#~ "\n"
+#~ " -d, --directory 移除å¯èƒ½ä»æœ‰è³‡æ–™çš„目錄 (åªé™æœ€å¤§æ¬ŠåŠ›ä½¿ç”¨è€…使用)\n"
+#~ " -f, --force ç•¥éŽä¸å­˜åœ¨çš„檔案,ä¸é¡¯ç¤ºä»»ä½•è¨Šæ¯\n"
+#~ " -i, --interactive 進行任何移除æ“作å‰å¿…須先確èª\n"
+#~ " -r, -R, --recursive åŒæ™‚移除該目錄下的所有目錄層\n"
+#~ " -v, --verbose 詳細顯示進行的步驟\n"
+
+#~ msgid "%s: count `%.*s' too large"
+#~ msgstr "%s:數字‘%.*s’éŽå¤§"
+
+#, fuzzy
+#~ msgid "`-%s' option is obsolete; use `-l %s'"
+#~ msgstr "‘-%d’é¸é …å·²éŽæ™‚;請使用‘-l %d’"
+
+# How come the real behavior of -L is exactly the opposite of what docs
+# say? -- Abel
+#, fuzzy
+#~ msgid ""
+#~ "Display file or file system status.\n"
+#~ "\n"
+#~ " -f, --file-system display file system status instead of file "
+#~ "status\n"
+#~ " -c --format=FORMAT use the specified FORMAT instead of the default\n"
+#~ " -L, --dereference follow links\n"
+#~ " -t, --terse print the information in terse form\n"
+#~ msgstr ""
+#~ "顯示檔案或檔案系統的狀態。\n"
+#~ "\n"
+#~ " -f, --filesystem 顯示檔案系統的狀態,而ä¸æ˜¯æª”案的狀態\n"
+#~ " -c --format=æ ¼å¼ ä½¿ç”¨æŒ‡å®šçš„ <æ ¼å¼> 代替é è¨­çš„æ ¼å¼\n"
+#~ " -L, --dereference 讀å–éˆçµæœ¬èº«çš„資訊,而éžéˆçµæŒ‡ç¤ºçš„目標檔案/目錄\n"
+#~ " -t, --terse åªé¡¯ç¤ºç°¡ç•¥çš„資訊\n"
+
+#, fuzzy
+#~ msgid "invalid argument `%s'"
+#~ msgstr "%2$sçš„åƒæ•¸%1$s無效"
+
+#~ msgid "stdin: read error"
+#~ msgstr "標準輸入:讀å–資料時發生錯誤"
+
+#, fuzzy
+#~ msgid "`%s' option is obsolete; use `%s-%c %<PRIuMAX>'"
+#~ msgstr "‘%s’é¸é …å·²éŽæ™‚;請使用‘%s-%c %.*s’"
+
+#~ msgid "`-LIST' option is obsolete; use `--first-only -t LIST'"
+#~ msgstr "‘-LIST’é¸é …å·²éŽæ™‚;請使用‘--first-only -t LIST’"
+
+#~ msgid "`-%lu' option is obsolete; use `-f %lu'"
+#~ msgstr "‘-%lu’é¸é …å·²éŽæ™‚;請使用‘-f %lu’"
+
+#~ msgid "program error"
+#~ msgstr "程å¼éŒ¯èª¤"
+
+#~ msgid "stack overflow"
+#~ msgstr "堆疊溢ä½"
+
+#~ msgid "too few arguments"
+#~ msgstr "åƒæ•¸éŽå°‘"
+
+#~ msgid "Torbjorn Granlund and Richard M. Stallman"
+#~ msgstr "Torbjorn Granlund åŠ Richard M. Stallman"
+
+#~ msgid "group number"
+#~ msgstr "群組代號"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... OWNER[:[GROUP]] FILE...\n"
+#~ " or: %s [OPTION]... :GROUP FILE...\n"
+#~ " or: %s [OPTION]... --reference=RFILE FILE...\n"
+#~ msgstr ""
+#~ "用法:%s [é¸é …]... æ“有者[:[群組]] 檔案...\n"
+#~ " 或:%s [é¸é …]... :群組 檔案...\n"
+#~ " 或:%s [é¸é …]... --reference=åƒè€ƒæª” 檔案...\n"
+
+#~ msgid "Richard Stallman and David MacKenzie"
+#~ msgstr "Richard Stallman åŠ David MacKenzie"
+
+#~ msgid "Usage: %s [OPTION]... LEFT_FILE RIGHT_FILE\n"
+#~ msgstr "用法:%s [é¸é …]... LEFT_FILE RIGHT_FILE\n"
+
+#~ msgid "copying multiple files, but last argument %s is not a directory"
+#~ msgstr "複製多個檔案,但最後的åƒæ•¸%s並éžç›®éŒ„。"
+
+#~ msgid "Stuart Kemp and David MacKenzie"
+#~ msgstr "Stuart Kemp åŠ David MacKenzie"
+
+#~ msgid "%s: `+' or `-' expected after delimeter"
+#~ msgstr "%s:分隔符號後é¢æ‡‰è©²æ˜¯â€˜+’或‘-’字元"
+
+#~ msgid "David Ihnat, David MacKenzie, and Jim Meyering"
+#~ msgstr "David Ihnatã€David MacKenzie åŠ Jim Meyering"
+
+#~ msgid ""
+#~ "only one conv in {ascii,ebcdic,ibm}, {lcase,ucase}, {block,unblock}, "
+#~ "{unblock,sync}"
+#~ msgstr ""
+#~ "æ¯çµ„åªèƒ½é¸ä¸€é …作為 conv çš„é—œéµå­—:\n"
+#~ "{ascii,ebcdic,ibm}ã€{lcase,ucase}ã€{block,unblock}ã€{unblock,sync}"
+
+#~ msgid " Type"
+#~ msgstr " é¡žåž‹"
+
+#~ msgid ""
+#~ "no FILE arguments may be used with the option to output\n"
+#~ "dircolors' internal database"
+#~ msgstr "顯示 dircolors 的內部資料庫時ä¸èƒ½åŠ ä¸Š <檔案> åƒæ•¸"
+
+#~ msgid ""
+#~ "\n"
+#~ "In -wNUMBER, the letter `w' may be omitted.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "使用 -w數字 時,字元‘w’å¯ä»¥çœç•¥ä¸ç”¨ã€‚\n"
+
+#~ msgid "invalid width option: `%s'"
+#~ msgstr "無效的寬度é¸é …:‘%s’"
+
+#~ msgid ""
+#~ " -c, --bytes=SIZE print first SIZE bytes\n"
+#~ " -n, --lines=NUMBER print first NUMBER lines instead of first 10\n"
+#~ msgstr ""
+#~ " -c, --bytes=å¤§å° å°å‡ºæœ€åˆæŒ‡å®š <大å°> çš„ä½å…ƒçµ„\n"
+#~ " -n, --lines=行數 å°å‡ºæœ€åˆæŒ‡å®š <行數> 而éžæœ€åˆ 10 è¡Œ\n"
+
+#~ msgid "installing multiple files, but last argument, %s is not a directory"
+#~ msgstr "正在安è£å¤šå€‹æª”案,但最後的åƒæ•¸%s並éžç›®éŒ„。"
+
+#~ msgid "too many non-option arguments"
+#~ msgstr "éžé¸é …çš„åƒæ•¸éŽå¤š"
+
+#~ msgid "too few non-option arguments"
+#~ msgstr "éžé¸é …çš„åƒæ•¸éŽå°‘"
+
+#~ msgid "%s: File exists"
+#~ msgstr "%s:檔案已存在"
+
+#~ msgid ""
+#~ "Usage: %s [OPTION]... TARGET [LINK_NAME]\n"
+#~ " or: %s [OPTION]... TARGET... DIRECTORY\n"
+#~ " or: %s [OPTION]... --target-directory=DIRECTORY TARGET...\n"
+#~ msgstr ""
+#~ "用法:%s [é¸é …]... 目標 [éˆçµå稱]\n"
+#~ " 或:%s [é¸é …]... 目標... 目錄\n"
+#~ " 或:%s [é¸é …]... --target-directory=目錄 目標...\n"
+
+#~ msgid "when making multiple links, last argument must be a directory"
+#~ msgstr "建立多個éˆçµæ™‚,最後的åƒæ•¸å¿…需為目錄"
+
+#~ msgid "Ulrich Drepper and Scott Miller"
+#~ msgstr "Ulrich Drepper åŠ Scott Miller"
+
+#~ msgid "file"
+#~ msgstr "檔案"
+
+#~ msgid "files"
+#~ msgstr "檔案"
+
+#~ msgid "checksum"
+#~ msgstr "總和檢查值"
+
+#~ msgid "checksums"
+#~ msgstr "總和檢查值"
+
+#~ msgid "the --string and --check options are mutually exclusive"
+#~ msgstr "ä¸èƒ½åŒæ™‚使用 --string åŠ --check é¸é …"
+
+#~ msgid "no files may be specified when using --string"
+#~ msgstr "使用é¸é … --string 時ä¸èƒ½å†æŒ‡å®šæª”案"
+
+#~ msgid "major and minor device numbers may not be specified for fifo files"
+#~ msgstr "ä¸èƒ½ç‚º fifo 檔案指定 major å’Œ minor è£ç½®ç·¨è™Ÿ"
+
+#~ msgid "when moving multiple files, last argument must be a directory"
+#~ msgstr "移動多個檔案時,最後的åƒæ•¸å¿…須為目錄。"
+
+#~ msgid "old-style offset"
+#~ msgstr "舊å¼çš„å移é‡è¡¨ç¤ºæ³•"
+
+#~ msgid "invalid second operand in compatibility mode `%s'"
+#~ msgstr "在相容性模å¼ä¸‹ï¼Œç¬¬äºŒå€‹é‹ç®—符號‘%s’是無效的"
+
+#~ msgid "in compatibility mode, the last two arguments must be offsets"
+#~ msgstr "在相容性模å¼ä¸‹ï¼Œæœ€å¾Œå…©å€‹åƒæ•¸å¿…須是å移值"
+
+#~ msgid "`--pages' invalid range of page numbers: `%s'"
+#~ msgstr "‘--pages’的é ç¢¼ç¯„åœç„¡æ•ˆï¼šâ€˜%s’"
+
+#~ msgid "`--pages' invalid starting page number: `%s'"
+#~ msgstr "‘--pages’的開始é ç¢¼ç„¡æ•ˆï¼šâ€˜%s’"
+
+#~ msgid "`--pages' invalid ending page number: `%s'"
+#~ msgstr "‘--pages’的çµæŸé ç¢¼ç„¡æ•ˆï¼šâ€˜%s’"
+
+#~ msgid "`--pages' starting page number is larger than ending page number"
+#~ msgstr "‘--pages’的開始é ç¢¼å¤§æ–¼çµæŸé ç¢¼"
+
+#~ msgid "%b %e %H:%M %Y"
+#~ msgstr "%Y-%m-%d %H:%M"
+
+#~ msgid "starting page number larger than total number of pages: `%d'"
+#~ msgstr "開始é ç¢¼å¤§æ–¼ç¸½é æ•¸ï¼šâ€˜%d’"
+
+#~ msgid "Page %d"
+#~ msgstr "第 %d é "
+
+#~ msgid "invalid number"
+#~ msgstr "無效的數字"
+
+#~ msgid "%c: invalid suffix character in obsolescent option"
+#~ msgstr "%c:在已éŽæ™‚çš„é¸é …中å«æœ‰ç„¡æ•ˆçš„後置字元"
+
+#~ msgid ""
+#~ "too many arguments; When using tail's obsolescent option syntax (%s)\n"
+#~ "there may be no more than one file argument. Use the equivalent -n or -"
+#~ "c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "åƒæ•¸éŽå¤šï¼›ç•¶ä½¿ç”¨å·²éŽæ™‚çš„ tail é¸é …語法 (%s) 時,ä¸å¯æŒ‡å®šå¤šæ–¼ä¸€å€‹çš„檔案\n"
+#~ "åƒæ•¸ã€‚請使用åŒç­‰çš„ -n 或 -c é¸é …。"
+
+#~ msgid ""
+#~ "Warning: it is not portable to use two or more file arguments with\n"
+#~ "tail's obsolescent option syntax (%s). Use the equivalent -n or -c\n"
+#~ "option instead."
+#~ msgstr ""
+#~ "警告:將兩個或以上的檔案é…åˆå·²éŽæ™‚çš„ tail é¸é …語法 (%s) ä¸æ˜¯åœ¨æ‰€æœ‰ç³»çµ±\n"
+#~ "都通用的。請使用åŒç­‰çš„ -n 或 -c é¸é …。"
+
+#~ msgid "%s is larger than the maximum file size on this system"
+#~ msgstr "%s 大於此系統能接å—的最大檔案大å°"
+
+#~ msgid "%s: invalid maximum number of consecutive size changes"
+#~ msgstr "%s:檔案連續改變大å°çš„最大次數無效"
+
+#~ msgid "invalid backslash escape `\\%c'"
+#~ msgstr "å斜號溢出åºåˆ—‘\\%c’無效"
+
+#~ msgid "two strings must be given when both deleting and squeezing repeats"
+#~ msgstr "åŒæ™‚刪除字元和壓縮é‡è¤‡å­—時必須指定兩個字串"
+
+#~ msgid "at least one string must be given when squeezing repeats"
+#~ msgstr "壓縮é‡è¤‡å­—時至少è¦æŒ‡å®šä¸€å€‹å­—串"
+
+#~ msgid ""
+#~ "invalid identity mapping; when translating, any [:lower:] or [:upper:]\n"
+#~ "construct in string1 must be aligned with a corresponding construct\n"
+#~ "([:upper:] or [:lower:], respectively) in string2"
+#~ msgstr ""
+#~ "無效的æ†ç­‰æ˜ å°„ (identity mapping);進行置æ›æ™‚,å°æ–¼å­—串 1 的任何\n"
+#~ "[:lower:]ã€[:upper:] çµæ§‹ï¼Œåœ¨å­—串 2 裡都必須有一個相應的çµæ§‹ã€‚\n"
+#~ "(分別為 [:upper:]ã€[:lower:]) "
+
+#~ msgid "only one argument may be specified"
+#~ msgstr "åªèƒ½æŒ‡å®šä¸€å€‹åƒæ•¸"
+
+#~ msgid "cannot lstat `.'"
+#~ msgstr "lstat‘.’失敗"
+
+#~ msgid "%s: directory %s is write protected; descend into it anyway? "
+#~ msgstr "%s:目錄%s有防寫ä¿è­·ï¼›æ˜¯å¦ä»ç„¶è¦é€²å…¥? "
+
+#~ msgid "removing all entries of directory %s\n"
+#~ msgstr "正在移除目錄%s中的所有項目\n"
+
+#~ msgid "directory %s was replaced before being removed"
+#~ msgstr "正準備移除目錄%s時目錄已被置æ›"
+
+#~ msgid "subdirectory of %s was moved while being removed"
+#~ msgstr "正準備移除%sçš„å­ç›®éŒ„時該目錄已被移走"
+
+#~ msgid " (might be nonempty)"
+#~ msgstr "(å¯èƒ½ä»æœ‰è³‡æ–™ï¼‰"
+
+#~ msgid "removing the directory itself: %s\n"
+#~ msgstr "移除目錄本身:%s\n"
+
+#~ msgid "continue? "
+#~ msgstr "是å¦ç¹¼çºŒ? "
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..863a32b
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,365 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-
+
+## Copyright (C) 1990, 1991, 1993-2007 Free Software Foundation, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software Foundation,
+## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+EXTRA_PROGRAMS = chroot df hostid nice pinky stty su uname uptime users who
+
+bin_SCRIPTS = groups
+bin_PROGRAMS = [ chgrp chown chmod cp dd dircolors du \
+ ginstall link ln dir vdir ls mkdir \
+ mkfifo mknod mv nohup readlink rm rmdir shred stat sync touch unlink \
+ cat cksum comm csplit cut expand fmt fold head join md5sum \
+ nl od paste pr ptx sha1sum sha224sum sha256sum sha384sum sha512sum \
+ shuf sort split sum tac tail tr tsort unexpand uniq wc \
+ basename date dirname echo env expr factor false \
+ hostname id kill logname pathchk printenv printf pwd seq sleep tee \
+ test true tty whoami yes \
+ base64 \
+ $(OPTIONAL_BIN_PROGS) $(DF_PROG)
+
+noinst_PROGRAMS = setuidgid
+
+noinst_HEADERS = \
+ chown-core.h \
+ copy.h \
+ cp-hash.h \
+ dircolors.h \
+ fs.h \
+ ls.h \
+ remove.h \
+ system.h \
+ wheel-size.h \
+ wheel.h
+
+EXTRA_DIST = dcgen dircolors.hin tac-pipe.c \
+ groups.sh wheel-gen.pl extract-magic c99-to-c89.diff
+BUILT_SOURCES =
+CLEANFILES = $(SCRIPTS) su
+
+AM_CPPFLAGS = -I$(top_srcdir)/lib
+
+# Sometimes, the expansion of $(LIBINTL) includes -lc which may
+# include modules defining variables like `optind', so libcoreutils.a
+# must precede $(LIBINTL) in order to ensure we use GNU getopt.
+# But libcoreutils.a must also follow $(LIBINTL), since libintl uses
+# replacement functions defined in libcoreutils.a.
+LDADD = ../lib/libcoreutils.a $(LIBINTL) ../lib/libcoreutils.a
+
+# for eaccess in lib/euidaccess.c.
+cp_LDADD = $(LDADD) $(LIB_EACCESS)
+ginstall_LDADD = $(LDADD) $(LIB_EACCESS)
+mv_LDADD = $(LDADD) $(LIB_EACCESS)
+pathchk_LDADD = $(LDADD) $(LIB_EACCESS)
+rm_LDADD = $(LDADD) $(LIB_EACCESS)
+test_LDADD = $(LDADD) $(LIB_EACCESS)
+# This is for the '[' program. Automake transliterates '[' to '_'.
+__LDADD = $(LDADD) $(LIB_EACCESS)
+
+# for clock_gettime and fdatasync
+dd_LDADD = $(LDADD) $(LIB_GETHRXTIME) $(LIB_FDATASYNC)
+dir_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
+ls_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
+pr_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
+shred_LDADD = $(LDADD) $(LIB_GETHRXTIME) $(LIB_FDATASYNC)
+shuf_LDADD = $(LDADD) $(LIB_GETHRXTIME)
+vdir_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
+
+## If necessary, add -lm to resolve use of pow in lib/strtod.c.
+sort_LDADD = $(LDADD) $(POW_LIB) $(LIB_GETHRXTIME)
+
+# for get_date and gettime
+date_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
+touch_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
+
+# If necessary, add -lm to resolve use of pow in lib/strtod.c.
+# If necessary, add -liconv to resolve use of iconv in lib/unicodeio.c.
+printf_LDADD = $(LDADD) $(POW_LIB) $(LIBICONV)
+
+# If necessary, add -lm to resolve use of pow in lib/strtod.c.
+seq_LDADD = $(LDADD) $(POW_LIB)
+
+# If necessary, add libraries to resolve the `pow' reference in lib/strtod.c
+# and the `nanosleep' reference in lib/xnanosleep.c.
+nanosec_libs = $(LDADD) $(POW_LIB) $(LIB_NANOSLEEP)
+
+sleep_LDADD = $(nanosec_libs)
+tail_LDADD = $(nanosec_libs)
+
+# If necessary, add -lm to resolve use of pow in lib/strtod.c.
+uptime_LDADD = $(LDADD) $(POW_LIB) $(GETLOADAVG_LIBS)
+
+su_LDADD = $(LDADD) $(LIB_CRYPT)
+
+dir_LDADD += $(LIB_ACL_TRIVIAL) $(LIB_ACL)
+ls_LDADD += $(LIB_ACL_TRIVIAL) $(LIB_ACL)
+vdir_LDADD += $(LIB_ACL_TRIVIAL) $(LIB_ACL)
+cp_LDADD += $(LIB_ACL)
+mv_LDADD += $(LIB_ACL)
+ginstall_LDADD += $(LIB_ACL)
+
+$(PROGRAMS): ../lib/libcoreutils.a
+
+SUFFIXES = .sh
+
+# Get the release year from ../lib/version-etc.c.
+RELEASE_YEAR = \
+ `sed -n '/.*COPYRIGHT_YEAR = \([0-9][0-9][0-9][0-9]\) };/s//\1/p' \
+ $(top_srcdir)/lib/version-etc.c`
+
+.sh:
+ rm -f $@ $@-t
+ sed \
+ -e 's!@''bindir''@!$(bindir)!' \
+ -e 's/@''RELEASE_YEAR'@/$(RELEASE_YEAR)/ \
+ -e 's/@''GNU_PACKAGE''@/$(GNU_PACKAGE)/' \
+ -e 's/@''PACKAGE_BUGREPORT''@/$(PACKAGE_BUGREPORT)/' \
+ -e 's/@''VERSION''@/$(VERSION)/' $< > $@-t
+ chmod +x $@-t
+ mv $@-t $@
+
+all-local: su$(EXEEXT)
+
+installed_su = $(DESTDIR)$(bindir)/`echo su|sed '$(transform)'`
+
+setuid_root_mode = a=rx,u+s
+
+INSTALL_SU = \
+ p=su; \
+ echo " $(INSTALL_PROGRAM) $$p $(installed_su)"; \
+ $(INSTALL_PROGRAM) $$p $(installed_su); \
+ echo " chown root $(installed_su)"; \
+ chown root $(installed_su); \
+ echo " chmod $(setuid_root_mode) $(installed_su)"; \
+ chmod $(setuid_root_mode) $(installed_su)
+
+install-root: su$(EXEEXT)
+ @$(INSTALL_SU)
+
+install-exec-local: su$(EXEEXT)
+ @TMPFILE=$(DESTDIR)$(bindir)/.su-$$$$; \
+ rm -f $$TMPFILE; \
+ echo > $$TMPFILE; \
+## See if we can create a setuid root executable in $(bindir).
+## If not, then don't even try to install su.
+ can_create_suid_root_executable=no; \
+ chown root $$TMPFILE > /dev/null 2>&1 \
+ && chmod $(setuid_root_mode) $$TMPFILE > /dev/null 2>&1 \
+ && can_create_suid_root_executable=yes; \
+ rm -f $$TMPFILE; \
+ if test $$can_create_suid_root_executable = yes; then \
+ $(INSTALL_SU); \
+ else \
+ echo "WARNING: insufficient access; not installing su"; \
+ echo "NOTE: to install su, run 'make install-root' as root"; \
+ fi
+
+uninstall-local:
+# Remove su only if it's one we installed.
+ @if grep '$(GNU_PACKAGE)' $(installed_su) > /dev/null 2>&1; then \
+ echo " rm -f $(installed_su)"; \
+ rm -f $(installed_su); \
+ else :; fi
+
+# Use `ginstall' in the definition of PROGRAMS and in dependencies to avoid
+# confusion with the `install' target. The install rule transforms `ginstall'
+# to install before applying any user-specified name transformations.
+
+transform = s/ginstall/install/; @program_transform_name@
+ginstall_SOURCES = install.c copy.c cp-hash.c
+
+# This is for the '[' program. Automake transliterates '[' to '_'.
+__SOURCES = lbracket.c
+
+cp_SOURCES = cp.c copy.c cp-hash.c
+dir_SOURCES = ls.c ls-dir.c
+vdir_SOURCES = ls.c ls-vdir.c
+ls_SOURCES = ls.c ls-ls.c
+chown_SOURCES = chown.c chown-core.c
+chgrp_SOURCES = chgrp.c chown-core.c
+
+mv_SOURCES = mv.c copy.c cp-hash.c remove.c
+rm_SOURCES = rm.c remove.c
+
+md5sum_SOURCES = md5sum.c
+md5sum_CPPFLAGS = -DHASH_ALGO_MD5=1 $(AM_CPPFLAGS)
+sha1sum_SOURCES = md5sum.c
+sha1sum_CPPFLAGS = -DHASH_ALGO_SHA1=1 $(AM_CPPFLAGS)
+sha224sum_SOURCES = md5sum.c
+sha224sum_CPPFLAGS = -DHASH_ALGO_SHA224=1 $(AM_CPPFLAGS)
+sha256sum_SOURCES = md5sum.c
+sha256sum_CPPFLAGS = -DHASH_ALGO_SHA256=1 $(AM_CPPFLAGS)
+sha384sum_SOURCES = md5sum.c
+sha384sum_CPPFLAGS = -DHASH_ALGO_SHA384=1 $(AM_CPPFLAGS)
+sha512sum_SOURCES = md5sum.c
+sha512sum_CPPFLAGS = -DHASH_ALGO_SHA512=1 $(AM_CPPFLAGS)
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g'
+
+BUILT_SOURCES += dircolors.h
+dircolors.h: dcgen dircolors.hin
+ @rm -f $@ $@-t
+ $(PERL) -w -- $(srcdir)/dcgen $(srcdir)/dircolors.hin > $@-t
+ @chmod a-w $@-t
+ mv $@-t $@
+
+wheel_size = 5
+
+BUILT_SOURCES += wheel-size.h
+wheel-size.h: Makefile.am
+ @rm -f $@ $@-t
+ echo '#define WHEEL_SIZE $(wheel_size)' > $@-t
+ @chmod a-w $@-t
+ mv $@-t $@
+
+BUILT_SOURCES += wheel.h
+wheel.h: wheel-gen.pl Makefile.am
+ @rm -f $@ $@-t
+ $(srcdir)/wheel-gen.pl $(wheel_size) > $@-t
+ @chmod a-w $@-t
+ mv $@-t $@
+
+# false exits nonzero even with --help or --version.
+# test doesn't support --help or --version.
+# Tell automake to exempt then from that installcheck test.
+AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = false test
+
+BUILT_SOURCES += fs.h
+fs.h: stat.c extract-magic
+ rm -f $@
+ $(PERL) $(srcdir)/extract-magic $(srcdir)/stat.c > $@t
+ @chmod a-w $@t
+ mv $@t $@
+
+MAINTAINERCLEANFILES = $(BUILT_SOURCES)
+
+# Sort in traditional ASCII order, regardless of the current locale;
+# otherwise we may get into trouble with distinct strings that the
+# current locale considers to be equal.
+ASSORT = LC_ALL=C sort
+
+all_programs = \
+ $(bin_PROGRAMS) \
+ $(bin_SCRIPTS) \
+ $(EXTRA_PROGRAMS)
+
+all_programs.list:
+ @echo $(all_programs) | tr ' ' '\n' | sed -e 's,$(EXEEXT)$$,,' \
+ | $(ASSORT) -u
+
+pm = progs-makefile
+pr = progs-readme
+# Ensure that the list of programs in README matches the list
+# of programs we can build.
+check: check-README check-misc
+.PHONY: check-README
+check-README:
+ rm -rf $(pr) $(pm)
+ echo $(all_programs) \
+ | tr -s ' ' '\n' | sed -e 's,$(EXEEXT)$$,,' \
+ | $(ASSORT) -u > $(pm) && \
+ sed -n '/^The programs .* are:/,/^[a-zA-Z]/p' $(top_srcdir)/README \
+ | sed -n '/^ */s///p' | tr -s ' ' '\n' > $(pr)
+ diff $(pm) $(pr) && rm -rf $(pr) $(pm)
+
+# Ensure that the list of programs and author names is accurate.
+au_dotdot = authors-dotdot
+au_actual = authors-actual
+.PHONY: check-AUTHORS
+check-AUTHORS: $(all_programs)
+ rm -f $(au_actual) $(au_dotdot)
+ for i in `ls $(all_programs) | sed -e 's,$(EXEEXT)$$,,' \
+ | $(ASSORT) -u`; do \
+ test "$$i" = '[' && continue; \
+ exe=$$i; \
+ if test "$$i" = install; then \
+ exe=ginstall; \
+ elif test "$$i" = test; then \
+ exe='['; \
+ fi; \
+ ./$$exe --version \
+ |sed -n '/Written by /{ s//'"$$i"': /; s/,* and /, /; s/\.$$//; p; }'; \
+ done > $(au_actual)
+ sed -n '/:/p' $(top_srcdir)/AUTHORS > $(au_dotdot)
+ diff $(au_actual) $(au_dotdot) && rm -f $(au_actual) $(au_dotdot)
+
+# Make sure we don't define any S_IS* macros in src/*.c files.
+# Not a big deal, but they're already defined via system.h.
+#
+# Also make sure we don't use st_blocks. Use ST_NBLOCKS instead.
+# This is a bit of a kludge, since it prevents use of the string
+# even in comments, but for now it does the job with no false positives.
+.PHONY: check-misc
+check-misc:
+ cd $(srcdir); grep '^# *define *S_IS' $(SOURCES) && exit 1 || :
+ cd $(srcdir); grep st_blocks $(SOURCES) && exit 1 || :
+ cd $(srcdir); grep '^# *define .*defined' $(SOURCES) && exit 1 || :
+
+# Extract the list of authors from each file.
+sed_filter = s/^ *//;s/N_ (//;s/^"//;s/")*$$//
+# Sometimes the string is on the same line as the #define...
+s1 = '/^\#define AUTHORS \([^\\]\)/{;s//\1/;$(sed_filter);p;q;}'
+# Sometimes the string is on the backslash-continued line after the #define.
+s2 = '/^\#define AUTHORS \\\\/{;n;$(sed_filter);p;q;}'
+# FIXME: handle *.sh; and use $(all_programs), not $(SOURCES)
+../AUTHORS: $(SOURCES)
+ rm -f $@-t
+ ( \
+ set -e; \
+ echo "Here are the names of the programs in this package,"; \
+ echo "each followed by the name(s) of its author(s)."; \
+ echo; \
+ for i in $(SOURCES); do \
+ a=`sed -n $(s1) $$i`; \
+ test "$$a" && : \
+ || a=`sed -n $(s2) $$i`; \
+ if test "$$a"; then \
+ prog=`echo $$i|sed 's/\.c$$//'`; \
+ echo "$$prog: $$a"; \
+ fi; \
+ done | $(ASSORT) -u ) > $@-t
+ chmod a-w $@-t
+ mv $@-t $@
+
+# The following rule is not designed to be portable,
+# and relies on tools that not everyone has.
+
+# Most functions in src/*.c should have static scope.
+# Any that don't must be marked with `extern', but `main'
+# and `usage' are exceptions. They're always extern, but
+# don't need to be marked.
+#
+# The second nm|grep checks for file-scope variables with `extern' scope.
+.PHONY: sc_tight_scope
+sc_tight_scope: $(all_programs)
+ @t=exceptions-$$$$; \
+ trap "s=$$?; rm -f $$t; exit $$s" 0 1 2 13 15; \
+ ( printf '^main$$\n^usage$$\n'; \
+ grep -h -A1 '^extern .*[^;]$$' $(SOURCES) \
+ | grep -vE '^(extern |--)' |sed 's/^/^/;s/ .*/$$/' ) > $$t; \
+ nm -e *.$(OBJEXT) \
+ | sed -n 's/.* T //p' \
+ | grep -Ev -f $$t && \
+ { echo 'the above functions should have static scope' 1>&2; \
+ exit 1; } || : ; \
+ ( printf '^program_name$$\n'; \
+ sed -n 's/^extern int \([^ ][^ ]*\);$$/^\1$$/p' \
+ $(noinst_HEADERS) ) > $$t; \
+ nm -e *.$(OBJEXT) \
+ | sed -n 's/.* [BD] //p' \
+ | grep -Ev -f $$t && \
+ { echo 'the above variables should have static scope' 1>&2; \
+ exit 1; } || :
diff --git a/src/Makefile.in b/src/Makefile.in
new file mode 100644
index 0000000..18965a9
--- /dev/null
+++ b/src/Makefile.in
@@ -0,0 +1,2065 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+EXTRA_PROGRAMS = chroot$(EXEEXT) df$(EXEEXT) hostid$(EXEEXT) \
+ nice$(EXEEXT) pinky$(EXEEXT) stty$(EXEEXT) su$(EXEEXT) \
+ uname$(EXEEXT) uptime$(EXEEXT) users$(EXEEXT) who$(EXEEXT)
+bin_PROGRAMS = [$(EXEEXT) chgrp$(EXEEXT) chown$(EXEEXT) chmod$(EXEEXT) \
+ cp$(EXEEXT) dd$(EXEEXT) dircolors$(EXEEXT) du$(EXEEXT) \
+ ginstall$(EXEEXT) link$(EXEEXT) ln$(EXEEXT) dir$(EXEEXT) \
+ vdir$(EXEEXT) ls$(EXEEXT) mkdir$(EXEEXT) mkfifo$(EXEEXT) \
+ mknod$(EXEEXT) mv$(EXEEXT) nohup$(EXEEXT) readlink$(EXEEXT) \
+ rm$(EXEEXT) rmdir$(EXEEXT) shred$(EXEEXT) stat$(EXEEXT) \
+ sync$(EXEEXT) touch$(EXEEXT) unlink$(EXEEXT) cat$(EXEEXT) \
+ cksum$(EXEEXT) comm$(EXEEXT) csplit$(EXEEXT) cut$(EXEEXT) \
+ expand$(EXEEXT) fmt$(EXEEXT) fold$(EXEEXT) head$(EXEEXT) \
+ join$(EXEEXT) md5sum$(EXEEXT) nl$(EXEEXT) od$(EXEEXT) \
+ paste$(EXEEXT) pr$(EXEEXT) ptx$(EXEEXT) sha1sum$(EXEEXT) \
+ sha224sum$(EXEEXT) sha256sum$(EXEEXT) sha384sum$(EXEEXT) \
+ sha512sum$(EXEEXT) shuf$(EXEEXT) sort$(EXEEXT) split$(EXEEXT) \
+ sum$(EXEEXT) tac$(EXEEXT) tail$(EXEEXT) tr$(EXEEXT) \
+ tsort$(EXEEXT) unexpand$(EXEEXT) uniq$(EXEEXT) wc$(EXEEXT) \
+ basename$(EXEEXT) date$(EXEEXT) dirname$(EXEEXT) echo$(EXEEXT) \
+ env$(EXEEXT) expr$(EXEEXT) factor$(EXEEXT) false$(EXEEXT) \
+ hostname$(EXEEXT) id$(EXEEXT) kill$(EXEEXT) logname$(EXEEXT) \
+ pathchk$(EXEEXT) printenv$(EXEEXT) printf$(EXEEXT) \
+ pwd$(EXEEXT) seq$(EXEEXT) sleep$(EXEEXT) tee$(EXEEXT) \
+ test$(EXEEXT) true$(EXEEXT) tty$(EXEEXT) whoami$(EXEEXT) \
+ yes$(EXEEXT) base64$(EXEEXT) $(OPTIONAL_BIN_PROGS) $(DF_PROG)
+noinst_PROGRAMS = setuidgid$(EXEEXT)
+subdir = src
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
+am___OBJECTS = lbracket.$(OBJEXT)
+__OBJECTS = $(am___OBJECTS)
+am__DEPENDENCIES_1 =
+am__DEPENDENCIES_2 = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+__DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+base64_SOURCES = base64.c
+base64_OBJECTS = base64.$(OBJEXT)
+base64_LDADD = $(LDADD)
+base64_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+basename_SOURCES = basename.c
+basename_OBJECTS = basename.$(OBJEXT)
+basename_LDADD = $(LDADD)
+basename_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+cat_SOURCES = cat.c
+cat_OBJECTS = cat.$(OBJEXT)
+cat_LDADD = $(LDADD)
+cat_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+am_chgrp_OBJECTS = chgrp.$(OBJEXT) chown-core.$(OBJEXT)
+chgrp_OBJECTS = $(am_chgrp_OBJECTS)
+chgrp_LDADD = $(LDADD)
+chgrp_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+chmod_SOURCES = chmod.c
+chmod_OBJECTS = chmod.$(OBJEXT)
+chmod_LDADD = $(LDADD)
+chmod_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+am_chown_OBJECTS = chown.$(OBJEXT) chown-core.$(OBJEXT)
+chown_OBJECTS = $(am_chown_OBJECTS)
+chown_LDADD = $(LDADD)
+chown_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+chroot_SOURCES = chroot.c
+chroot_OBJECTS = chroot.$(OBJEXT)
+chroot_LDADD = $(LDADD)
+chroot_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+cksum_SOURCES = cksum.c
+cksum_OBJECTS = cksum.$(OBJEXT)
+cksum_LDADD = $(LDADD)
+cksum_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+comm_SOURCES = comm.c
+comm_OBJECTS = comm.$(OBJEXT)
+comm_LDADD = $(LDADD)
+comm_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+am_cp_OBJECTS = cp.$(OBJEXT) copy.$(OBJEXT) cp-hash.$(OBJEXT)
+cp_OBJECTS = $(am_cp_OBJECTS)
+cp_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+csplit_SOURCES = csplit.c
+csplit_OBJECTS = csplit.$(OBJEXT)
+csplit_LDADD = $(LDADD)
+csplit_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+cut_SOURCES = cut.c
+cut_OBJECTS = cut.$(OBJEXT)
+cut_LDADD = $(LDADD)
+cut_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+date_SOURCES = date.c
+date_OBJECTS = date.$(OBJEXT)
+date_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+dd_SOURCES = dd.c
+dd_OBJECTS = dd.$(OBJEXT)
+dd_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+df_SOURCES = df.c
+df_OBJECTS = df.$(OBJEXT)
+df_LDADD = $(LDADD)
+df_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+am_dir_OBJECTS = ls.$(OBJEXT) ls-dir.$(OBJEXT)
+dir_OBJECTS = $(am_dir_OBJECTS)
+dir_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+dircolors_SOURCES = dircolors.c
+dircolors_OBJECTS = dircolors.$(OBJEXT)
+dircolors_LDADD = $(LDADD)
+dircolors_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+dirname_SOURCES = dirname.c
+dirname_OBJECTS = dirname.$(OBJEXT)
+dirname_LDADD = $(LDADD)
+dirname_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+du_SOURCES = du.c
+du_OBJECTS = du.$(OBJEXT)
+du_LDADD = $(LDADD)
+du_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+echo_SOURCES = echo.c
+echo_OBJECTS = echo.$(OBJEXT)
+echo_LDADD = $(LDADD)
+echo_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+env_SOURCES = env.c
+env_OBJECTS = env.$(OBJEXT)
+env_LDADD = $(LDADD)
+env_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+expand_SOURCES = expand.c
+expand_OBJECTS = expand.$(OBJEXT)
+expand_LDADD = $(LDADD)
+expand_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+expr_SOURCES = expr.c
+expr_OBJECTS = expr.$(OBJEXT)
+expr_LDADD = $(LDADD)
+expr_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+factor_SOURCES = factor.c
+factor_OBJECTS = factor.$(OBJEXT)
+factor_LDADD = $(LDADD)
+factor_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+false_SOURCES = false.c
+false_OBJECTS = false.$(OBJEXT)
+false_LDADD = $(LDADD)
+false_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+fmt_SOURCES = fmt.c
+fmt_OBJECTS = fmt.$(OBJEXT)
+fmt_LDADD = $(LDADD)
+fmt_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+fold_SOURCES = fold.c
+fold_OBJECTS = fold.$(OBJEXT)
+fold_LDADD = $(LDADD)
+fold_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+am_ginstall_OBJECTS = install.$(OBJEXT) copy.$(OBJEXT) \
+ cp-hash.$(OBJEXT)
+ginstall_OBJECTS = $(am_ginstall_OBJECTS)
+ginstall_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+head_SOURCES = head.c
+head_OBJECTS = head.$(OBJEXT)
+head_LDADD = $(LDADD)
+head_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+hostid_SOURCES = hostid.c
+hostid_OBJECTS = hostid.$(OBJEXT)
+hostid_LDADD = $(LDADD)
+hostid_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+hostname_SOURCES = hostname.c
+hostname_OBJECTS = hostname.$(OBJEXT)
+hostname_LDADD = $(LDADD)
+hostname_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+id_SOURCES = id.c
+id_OBJECTS = id.$(OBJEXT)
+id_LDADD = $(LDADD)
+id_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+join_SOURCES = join.c
+join_OBJECTS = join.$(OBJEXT)
+join_LDADD = $(LDADD)
+join_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+kill_SOURCES = kill.c
+kill_OBJECTS = kill.$(OBJEXT)
+kill_LDADD = $(LDADD)
+kill_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+link_SOURCES = link.c
+link_OBJECTS = link.$(OBJEXT)
+link_LDADD = $(LDADD)
+link_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+ln_SOURCES = ln.c
+ln_OBJECTS = ln.$(OBJEXT)
+ln_LDADD = $(LDADD)
+ln_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+logname_SOURCES = logname.c
+logname_OBJECTS = logname.$(OBJEXT)
+logname_LDADD = $(LDADD)
+logname_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+am_ls_OBJECTS = ls.$(OBJEXT) ls-ls.$(OBJEXT)
+ls_OBJECTS = $(am_ls_OBJECTS)
+ls_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am_md5sum_OBJECTS = md5sum-md5sum.$(OBJEXT)
+md5sum_OBJECTS = $(am_md5sum_OBJECTS)
+md5sum_LDADD = $(LDADD)
+md5sum_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+mkdir_SOURCES = mkdir.c
+mkdir_OBJECTS = mkdir.$(OBJEXT)
+mkdir_LDADD = $(LDADD)
+mkdir_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+mkfifo_SOURCES = mkfifo.c
+mkfifo_OBJECTS = mkfifo.$(OBJEXT)
+mkfifo_LDADD = $(LDADD)
+mkfifo_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+mknod_SOURCES = mknod.c
+mknod_OBJECTS = mknod.$(OBJEXT)
+mknod_LDADD = $(LDADD)
+mknod_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+am_mv_OBJECTS = mv.$(OBJEXT) copy.$(OBJEXT) cp-hash.$(OBJEXT) \
+ remove.$(OBJEXT)
+mv_OBJECTS = $(am_mv_OBJECTS)
+mv_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+nice_SOURCES = nice.c
+nice_OBJECTS = nice.$(OBJEXT)
+nice_LDADD = $(LDADD)
+nice_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+nl_SOURCES = nl.c
+nl_OBJECTS = nl.$(OBJEXT)
+nl_LDADD = $(LDADD)
+nl_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+nohup_SOURCES = nohup.c
+nohup_OBJECTS = nohup.$(OBJEXT)
+nohup_LDADD = $(LDADD)
+nohup_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+od_SOURCES = od.c
+od_OBJECTS = od.$(OBJEXT)
+od_LDADD = $(LDADD)
+od_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+paste_SOURCES = paste.c
+paste_OBJECTS = paste.$(OBJEXT)
+paste_LDADD = $(LDADD)
+paste_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+pathchk_SOURCES = pathchk.c
+pathchk_OBJECTS = pathchk.$(OBJEXT)
+pathchk_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+pinky_SOURCES = pinky.c
+pinky_OBJECTS = pinky.$(OBJEXT)
+pinky_LDADD = $(LDADD)
+pinky_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+pr_SOURCES = pr.c
+pr_OBJECTS = pr.$(OBJEXT)
+pr_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+printenv_SOURCES = printenv.c
+printenv_OBJECTS = printenv.$(OBJEXT)
+printenv_LDADD = $(LDADD)
+printenv_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+printf_SOURCES = printf.c
+printf_OBJECTS = printf.$(OBJEXT)
+printf_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+ptx_SOURCES = ptx.c
+ptx_OBJECTS = ptx.$(OBJEXT)
+ptx_LDADD = $(LDADD)
+ptx_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+pwd_SOURCES = pwd.c
+pwd_OBJECTS = pwd.$(OBJEXT)
+pwd_LDADD = $(LDADD)
+pwd_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+readlink_SOURCES = readlink.c
+readlink_OBJECTS = readlink.$(OBJEXT)
+readlink_LDADD = $(LDADD)
+readlink_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+am_rm_OBJECTS = rm.$(OBJEXT) remove.$(OBJEXT)
+rm_OBJECTS = $(am_rm_OBJECTS)
+rm_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+rmdir_SOURCES = rmdir.c
+rmdir_OBJECTS = rmdir.$(OBJEXT)
+rmdir_LDADD = $(LDADD)
+rmdir_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+seq_SOURCES = seq.c
+seq_OBJECTS = seq.$(OBJEXT)
+seq_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+setuidgid_SOURCES = setuidgid.c
+setuidgid_OBJECTS = setuidgid.$(OBJEXT)
+setuidgid_LDADD = $(LDADD)
+setuidgid_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+am_sha1sum_OBJECTS = sha1sum-md5sum.$(OBJEXT)
+sha1sum_OBJECTS = $(am_sha1sum_OBJECTS)
+sha1sum_LDADD = $(LDADD)
+sha1sum_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+am_sha224sum_OBJECTS = sha224sum-md5sum.$(OBJEXT)
+sha224sum_OBJECTS = $(am_sha224sum_OBJECTS)
+sha224sum_LDADD = $(LDADD)
+sha224sum_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+am_sha256sum_OBJECTS = sha256sum-md5sum.$(OBJEXT)
+sha256sum_OBJECTS = $(am_sha256sum_OBJECTS)
+sha256sum_LDADD = $(LDADD)
+sha256sum_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+am_sha384sum_OBJECTS = sha384sum-md5sum.$(OBJEXT)
+sha384sum_OBJECTS = $(am_sha384sum_OBJECTS)
+sha384sum_LDADD = $(LDADD)
+sha384sum_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+am_sha512sum_OBJECTS = sha512sum-md5sum.$(OBJEXT)
+sha512sum_OBJECTS = $(am_sha512sum_OBJECTS)
+sha512sum_LDADD = $(LDADD)
+sha512sum_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+shred_SOURCES = shred.c
+shred_OBJECTS = shred.$(OBJEXT)
+shred_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+shuf_SOURCES = shuf.c
+shuf_OBJECTS = shuf.$(OBJEXT)
+shuf_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+sleep_SOURCES = sleep.c
+sleep_OBJECTS = sleep.$(OBJEXT)
+am__DEPENDENCIES_3 = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+sleep_DEPENDENCIES = $(am__DEPENDENCIES_3)
+sort_SOURCES = sort.c
+sort_OBJECTS = sort.$(OBJEXT)
+sort_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+split_SOURCES = split.c
+split_OBJECTS = split.$(OBJEXT)
+split_LDADD = $(LDADD)
+split_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+stat_SOURCES = stat.c
+stat_OBJECTS = stat.$(OBJEXT)
+stat_LDADD = $(LDADD)
+stat_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+stty_SOURCES = stty.c
+stty_OBJECTS = stty.$(OBJEXT)
+stty_LDADD = $(LDADD)
+stty_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+su_SOURCES = su.c
+su_OBJECTS = su.$(OBJEXT)
+su_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+sum_SOURCES = sum.c
+sum_OBJECTS = sum.$(OBJEXT)
+sum_LDADD = $(LDADD)
+sum_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+sync_SOURCES = sync.c
+sync_OBJECTS = sync.$(OBJEXT)
+sync_LDADD = $(LDADD)
+sync_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+tac_SOURCES = tac.c
+tac_OBJECTS = tac.$(OBJEXT)
+tac_LDADD = $(LDADD)
+tac_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+tail_SOURCES = tail.c
+tail_OBJECTS = tail.$(OBJEXT)
+tail_DEPENDENCIES = $(am__DEPENDENCIES_3)
+tee_SOURCES = tee.c
+tee_OBJECTS = tee.$(OBJEXT)
+tee_LDADD = $(LDADD)
+tee_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+test_SOURCES = test.c
+test_OBJECTS = test.$(OBJEXT)
+test_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+touch_SOURCES = touch.c
+touch_OBJECTS = touch.$(OBJEXT)
+touch_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
+tr_SOURCES = tr.c
+tr_OBJECTS = tr.$(OBJEXT)
+tr_LDADD = $(LDADD)
+tr_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+true_SOURCES = true.c
+true_OBJECTS = true.$(OBJEXT)
+true_LDADD = $(LDADD)
+true_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+tsort_SOURCES = tsort.c
+tsort_OBJECTS = tsort.$(OBJEXT)
+tsort_LDADD = $(LDADD)
+tsort_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+tty_SOURCES = tty.c
+tty_OBJECTS = tty.$(OBJEXT)
+tty_LDADD = $(LDADD)
+tty_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+uname_SOURCES = uname.c
+uname_OBJECTS = uname.$(OBJEXT)
+uname_LDADD = $(LDADD)
+uname_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+unexpand_SOURCES = unexpand.c
+unexpand_OBJECTS = unexpand.$(OBJEXT)
+unexpand_LDADD = $(LDADD)
+unexpand_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+uniq_SOURCES = uniq.c
+uniq_OBJECTS = uniq.$(OBJEXT)
+uniq_LDADD = $(LDADD)
+uniq_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+unlink_SOURCES = unlink.c
+unlink_OBJECTS = unlink.$(OBJEXT)
+unlink_LDADD = $(LDADD)
+unlink_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+uptime_SOURCES = uptime.c
+uptime_OBJECTS = uptime.$(OBJEXT)
+uptime_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+users_SOURCES = users.c
+users_OBJECTS = users.$(OBJEXT)
+users_LDADD = $(LDADD)
+users_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+am_vdir_OBJECTS = ls.$(OBJEXT) ls-vdir.$(OBJEXT)
+vdir_OBJECTS = $(am_vdir_OBJECTS)
+vdir_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+wc_SOURCES = wc.c
+wc_OBJECTS = wc.$(OBJEXT)
+wc_LDADD = $(LDADD)
+wc_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+who_SOURCES = who.c
+who_OBJECTS = who.$(OBJEXT)
+who_LDADD = $(LDADD)
+who_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+whoami_SOURCES = whoami.c
+whoami_OBJECTS = whoami.$(OBJEXT)
+whoami_LDADD = $(LDADD)
+whoami_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+yes_SOURCES = yes.c
+yes_OBJECTS = yes.$(OBJEXT)
+yes_LDADD = $(LDADD)
+yes_DEPENDENCIES = ../lib/libcoreutils.a $(am__DEPENDENCIES_1) \
+ ../lib/libcoreutils.a
+binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
+SCRIPTS = $(bin_SCRIPTS)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/lib@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(__SOURCES) base64.c basename.c cat.c $(chgrp_SOURCES) \
+ chmod.c $(chown_SOURCES) chroot.c cksum.c comm.c $(cp_SOURCES) \
+ csplit.c cut.c date.c dd.c df.c $(dir_SOURCES) dircolors.c \
+ dirname.c du.c echo.c env.c expand.c expr.c factor.c false.c \
+ fmt.c fold.c $(ginstall_SOURCES) head.c hostid.c hostname.c \
+ id.c join.c kill.c link.c ln.c logname.c $(ls_SOURCES) \
+ $(md5sum_SOURCES) mkdir.c mkfifo.c mknod.c $(mv_SOURCES) \
+ nice.c nl.c nohup.c od.c paste.c pathchk.c pinky.c pr.c \
+ printenv.c printf.c ptx.c pwd.c readlink.c $(rm_SOURCES) \
+ rmdir.c seq.c setuidgid.c $(sha1sum_SOURCES) \
+ $(sha224sum_SOURCES) $(sha256sum_SOURCES) $(sha384sum_SOURCES) \
+ $(sha512sum_SOURCES) shred.c shuf.c sleep.c sort.c split.c \
+ stat.c stty.c su.c sum.c sync.c tac.c tail.c tee.c test.c \
+ touch.c tr.c true.c tsort.c tty.c uname.c unexpand.c uniq.c \
+ unlink.c uptime.c users.c $(vdir_SOURCES) wc.c who.c whoami.c \
+ yes.c
+DIST_SOURCES = $(__SOURCES) base64.c basename.c cat.c $(chgrp_SOURCES) \
+ chmod.c $(chown_SOURCES) chroot.c cksum.c comm.c $(cp_SOURCES) \
+ csplit.c cut.c date.c dd.c df.c $(dir_SOURCES) dircolors.c \
+ dirname.c du.c echo.c env.c expand.c expr.c factor.c false.c \
+ fmt.c fold.c $(ginstall_SOURCES) head.c hostid.c hostname.c \
+ id.c join.c kill.c link.c ln.c logname.c $(ls_SOURCES) \
+ $(md5sum_SOURCES) mkdir.c mkfifo.c mknod.c $(mv_SOURCES) \
+ nice.c nl.c nohup.c od.c paste.c pathchk.c pinky.c pr.c \
+ printenv.c printf.c ptx.c pwd.c readlink.c $(rm_SOURCES) \
+ rmdir.c seq.c setuidgid.c $(sha1sum_SOURCES) \
+ $(sha224sum_SOURCES) $(sha256sum_SOURCES) $(sha384sum_SOURCES) \
+ $(sha512sum_SOURCES) shred.c shuf.c sleep.c sort.c split.c \
+ stat.c stty.c su.c sum.c sync.c tac.c tail.c tee.c test.c \
+ touch.c tr.c true.c tsort.c tty.c uname.c unexpand.c uniq.c \
+ unlink.c uptime.c users.c $(vdir_SOURCES) wc.c who.c whoami.c \
+ yes.c
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+# Use `ginstall' in the definition of PROGRAMS and in dependencies to avoid
+# confusion with the `install' target. The install rule transforms `ginstall'
+# to install before applying any user-specified name transformations.
+transform = s/ginstall/install/; @program_transform_name@
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+bin_SCRIPTS = groups
+noinst_HEADERS = \
+ chown-core.h \
+ copy.h \
+ cp-hash.h \
+ dircolors.h \
+ fs.h \
+ ls.h \
+ remove.h \
+ system.h \
+ wheel-size.h \
+ wheel.h
+
+EXTRA_DIST = dcgen dircolors.hin tac-pipe.c \
+ groups.sh wheel-gen.pl extract-magic c99-to-c89.diff
+
+BUILT_SOURCES = dircolors.h wheel-size.h wheel.h fs.h
+CLEANFILES = $(SCRIPTS) su
+AM_CPPFLAGS = -I$(top_srcdir)/lib
+
+# Sometimes, the expansion of $(LIBINTL) includes -lc which may
+# include modules defining variables like `optind', so libcoreutils.a
+# must precede $(LIBINTL) in order to ensure we use GNU getopt.
+# But libcoreutils.a must also follow $(LIBINTL), since libintl uses
+# replacement functions defined in libcoreutils.a.
+LDADD = ../lib/libcoreutils.a $(LIBINTL) ../lib/libcoreutils.a
+
+# for eaccess in lib/euidaccess.c.
+cp_LDADD = $(LDADD) $(LIB_EACCESS) $(LIB_ACL)
+ginstall_LDADD = $(LDADD) $(LIB_EACCESS) $(LIB_ACL)
+mv_LDADD = $(LDADD) $(LIB_EACCESS) $(LIB_ACL)
+pathchk_LDADD = $(LDADD) $(LIB_EACCESS)
+rm_LDADD = $(LDADD) $(LIB_EACCESS)
+test_LDADD = $(LDADD) $(LIB_EACCESS)
+# This is for the '[' program. Automake transliterates '[' to '_'.
+__LDADD = $(LDADD) $(LIB_EACCESS)
+
+# for clock_gettime and fdatasync
+dd_LDADD = $(LDADD) $(LIB_GETHRXTIME) $(LIB_FDATASYNC)
+dir_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_ACL_TRIVIAL) \
+ $(LIB_ACL)
+ls_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_ACL_TRIVIAL) $(LIB_ACL)
+pr_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
+shred_LDADD = $(LDADD) $(LIB_GETHRXTIME) $(LIB_FDATASYNC)
+shuf_LDADD = $(LDADD) $(LIB_GETHRXTIME)
+vdir_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) $(LIB_ACL_TRIVIAL) \
+ $(LIB_ACL)
+sort_LDADD = $(LDADD) $(POW_LIB) $(LIB_GETHRXTIME)
+
+# for get_date and gettime
+date_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
+touch_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
+
+# If necessary, add -lm to resolve use of pow in lib/strtod.c.
+# If necessary, add -liconv to resolve use of iconv in lib/unicodeio.c.
+printf_LDADD = $(LDADD) $(POW_LIB) $(LIBICONV)
+
+# If necessary, add -lm to resolve use of pow in lib/strtod.c.
+seq_LDADD = $(LDADD) $(POW_LIB)
+
+# If necessary, add libraries to resolve the `pow' reference in lib/strtod.c
+# and the `nanosleep' reference in lib/xnanosleep.c.
+nanosec_libs = $(LDADD) $(POW_LIB) $(LIB_NANOSLEEP)
+sleep_LDADD = $(nanosec_libs)
+tail_LDADD = $(nanosec_libs)
+
+# If necessary, add -lm to resolve use of pow in lib/strtod.c.
+uptime_LDADD = $(LDADD) $(POW_LIB) $(GETLOADAVG_LIBS)
+su_LDADD = $(LDADD) $(LIB_CRYPT)
+SUFFIXES = .sh
+
+# Get the release year from ../lib/version-etc.c.
+RELEASE_YEAR = \
+ `sed -n '/.*COPYRIGHT_YEAR = \([0-9][0-9][0-9][0-9]\) };/s//\1/p' \
+ $(top_srcdir)/lib/version-etc.c`
+
+installed_su = $(DESTDIR)$(bindir)/`echo su|sed '$(transform)'`
+setuid_root_mode = a=rx,u+s
+INSTALL_SU = \
+ p=su; \
+ echo " $(INSTALL_PROGRAM) $$p $(installed_su)"; \
+ $(INSTALL_PROGRAM) $$p $(installed_su); \
+ echo " chown root $(installed_su)"; \
+ chown root $(installed_su); \
+ echo " chmod $(setuid_root_mode) $(installed_su)"; \
+ chmod $(setuid_root_mode) $(installed_su)
+
+ginstall_SOURCES = install.c copy.c cp-hash.c
+
+# This is for the '[' program. Automake transliterates '[' to '_'.
+__SOURCES = lbracket.c
+cp_SOURCES = cp.c copy.c cp-hash.c
+dir_SOURCES = ls.c ls-dir.c
+vdir_SOURCES = ls.c ls-vdir.c
+ls_SOURCES = ls.c ls-ls.c
+chown_SOURCES = chown.c chown-core.c
+chgrp_SOURCES = chgrp.c chown-core.c
+mv_SOURCES = mv.c copy.c cp-hash.c remove.c
+rm_SOURCES = rm.c remove.c
+md5sum_SOURCES = md5sum.c
+md5sum_CPPFLAGS = -DHASH_ALGO_MD5=1 $(AM_CPPFLAGS)
+sha1sum_SOURCES = md5sum.c
+sha1sum_CPPFLAGS = -DHASH_ALGO_SHA1=1 $(AM_CPPFLAGS)
+sha224sum_SOURCES = md5sum.c
+sha224sum_CPPFLAGS = -DHASH_ALGO_SHA224=1 $(AM_CPPFLAGS)
+sha256sum_SOURCES = md5sum.c
+sha256sum_CPPFLAGS = -DHASH_ALGO_SHA256=1 $(AM_CPPFLAGS)
+sha384sum_SOURCES = md5sum.c
+sha384sum_CPPFLAGS = -DHASH_ALGO_SHA384=1 $(AM_CPPFLAGS)
+sha512sum_SOURCES = md5sum.c
+sha512sum_CPPFLAGS = -DHASH_ALGO_SHA512=1 $(AM_CPPFLAGS)
+editpl = sed -e 's,@''PERL''@,$(PERL),g'
+wheel_size = 5
+
+# false exits nonzero even with --help or --version.
+# test doesn't support --help or --version.
+# Tell automake to exempt then from that installcheck test.
+AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = false test
+MAINTAINERCLEANFILES = $(BUILT_SOURCES)
+
+# Sort in traditional ASCII order, regardless of the current locale;
+# otherwise we may get into trouble with distinct strings that the
+# current locale considers to be equal.
+ASSORT = LC_ALL=C sort
+all_programs = \
+ $(bin_PROGRAMS) \
+ $(bin_SCRIPTS) \
+ $(EXTRA_PROGRAMS)
+
+pm = progs-makefile
+pr = progs-readme
+
+# Ensure that the list of programs and author names is accurate.
+au_dotdot = authors-dotdot
+au_actual = authors-actual
+
+# Extract the list of authors from each file.
+sed_filter = s/^ *//;s/N_ (//;s/^"//;s/")*$$//
+# Sometimes the string is on the same line as the #define...
+s1 = '/^\#define AUTHORS \([^\\]\)/{;s//\1/;$(sed_filter);p;q;}'
+# Sometimes the string is on the backslash-continued line after the #define.
+s2 = '/^\#define AUTHORS \\\\/{;n;$(sed_filter);p;q;}'
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .sh .c .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+ else :; fi; \
+ done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
+ done
+
+clean-binPROGRAMS:
+ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) > /dev/null 2>&1 || /bin/rm -f $(bin_PROGRAMS)
+
+clean-noinstPROGRAMS:
+ -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+[$(EXEEXT): $(__OBJECTS) $(__DEPENDENCIES)
+ @rm -f [$(EXEEXT)
+ $(LINK) $(__OBJECTS) $(__LDADD) $(LIBS)
+base64$(EXEEXT): $(base64_OBJECTS) $(base64_DEPENDENCIES)
+ @rm -f base64$(EXEEXT)
+ $(LINK) $(base64_OBJECTS) $(base64_LDADD) $(LIBS)
+basename$(EXEEXT): $(basename_OBJECTS) $(basename_DEPENDENCIES)
+ @rm -f basename$(EXEEXT)
+ $(LINK) $(basename_OBJECTS) $(basename_LDADD) $(LIBS)
+cat$(EXEEXT): $(cat_OBJECTS) $(cat_DEPENDENCIES)
+ @rm -f cat$(EXEEXT)
+ $(LINK) $(cat_OBJECTS) $(cat_LDADD) $(LIBS)
+chgrp$(EXEEXT): $(chgrp_OBJECTS) $(chgrp_DEPENDENCIES)
+ @rm -f chgrp$(EXEEXT)
+ $(LINK) $(chgrp_OBJECTS) $(chgrp_LDADD) $(LIBS)
+chmod$(EXEEXT): $(chmod_OBJECTS) $(chmod_DEPENDENCIES)
+ @rm -f chmod$(EXEEXT)
+ $(LINK) $(chmod_OBJECTS) $(chmod_LDADD) $(LIBS)
+chown$(EXEEXT): $(chown_OBJECTS) $(chown_DEPENDENCIES)
+ @rm -f chown$(EXEEXT)
+ $(LINK) $(chown_OBJECTS) $(chown_LDADD) $(LIBS)
+chroot$(EXEEXT): $(chroot_OBJECTS) $(chroot_DEPENDENCIES)
+ @rm -f chroot$(EXEEXT)
+ $(LINK) $(chroot_OBJECTS) $(chroot_LDADD) $(LIBS)
+cksum$(EXEEXT): $(cksum_OBJECTS) $(cksum_DEPENDENCIES)
+ @rm -f cksum$(EXEEXT)
+ $(LINK) $(cksum_OBJECTS) $(cksum_LDADD) $(LIBS)
+comm$(EXEEXT): $(comm_OBJECTS) $(comm_DEPENDENCIES)
+ @rm -f comm$(EXEEXT)
+ $(LINK) $(comm_OBJECTS) $(comm_LDADD) $(LIBS)
+cp$(EXEEXT): $(cp_OBJECTS) $(cp_DEPENDENCIES)
+ @rm -f cp$(EXEEXT)
+ $(LINK) $(cp_OBJECTS) $(cp_LDADD) $(LIBS)
+csplit$(EXEEXT): $(csplit_OBJECTS) $(csplit_DEPENDENCIES)
+ @rm -f csplit$(EXEEXT)
+ $(LINK) $(csplit_OBJECTS) $(csplit_LDADD) $(LIBS)
+cut$(EXEEXT): $(cut_OBJECTS) $(cut_DEPENDENCIES)
+ @rm -f cut$(EXEEXT)
+ $(LINK) $(cut_OBJECTS) $(cut_LDADD) $(LIBS)
+date$(EXEEXT): $(date_OBJECTS) $(date_DEPENDENCIES)
+ @rm -f date$(EXEEXT)
+ $(LINK) $(date_OBJECTS) $(date_LDADD) $(LIBS)
+dd$(EXEEXT): $(dd_OBJECTS) $(dd_DEPENDENCIES)
+ @rm -f dd$(EXEEXT)
+ $(LINK) $(dd_OBJECTS) $(dd_LDADD) $(LIBS)
+df$(EXEEXT): $(df_OBJECTS) $(df_DEPENDENCIES)
+ @rm -f df$(EXEEXT)
+ $(LINK) $(df_OBJECTS) $(df_LDADD) $(LIBS)
+dir$(EXEEXT): $(dir_OBJECTS) $(dir_DEPENDENCIES)
+ @rm -f dir$(EXEEXT)
+ $(LINK) $(dir_OBJECTS) $(dir_LDADD) $(LIBS)
+dircolors$(EXEEXT): $(dircolors_OBJECTS) $(dircolors_DEPENDENCIES)
+ @rm -f dircolors$(EXEEXT)
+ $(LINK) $(dircolors_OBJECTS) $(dircolors_LDADD) $(LIBS)
+dirname$(EXEEXT): $(dirname_OBJECTS) $(dirname_DEPENDENCIES)
+ @rm -f dirname$(EXEEXT)
+ $(LINK) $(dirname_OBJECTS) $(dirname_LDADD) $(LIBS)
+du$(EXEEXT): $(du_OBJECTS) $(du_DEPENDENCIES)
+ @rm -f du$(EXEEXT)
+ $(LINK) $(du_OBJECTS) $(du_LDADD) $(LIBS)
+echo$(EXEEXT): $(echo_OBJECTS) $(echo_DEPENDENCIES)
+ @rm -f echo$(EXEEXT)
+ $(LINK) $(echo_OBJECTS) $(echo_LDADD) $(LIBS)
+env$(EXEEXT): $(env_OBJECTS) $(env_DEPENDENCIES)
+ @rm -f env$(EXEEXT)
+ $(LINK) $(env_OBJECTS) $(env_LDADD) $(LIBS)
+expand$(EXEEXT): $(expand_OBJECTS) $(expand_DEPENDENCIES)
+ @rm -f expand$(EXEEXT)
+ $(LINK) $(expand_OBJECTS) $(expand_LDADD) $(LIBS)
+expr$(EXEEXT): $(expr_OBJECTS) $(expr_DEPENDENCIES)
+ @rm -f expr$(EXEEXT)
+ $(LINK) $(expr_OBJECTS) $(expr_LDADD) $(LIBS)
+factor$(EXEEXT): $(factor_OBJECTS) $(factor_DEPENDENCIES)
+ @rm -f factor$(EXEEXT)
+ $(LINK) $(factor_OBJECTS) $(factor_LDADD) $(LIBS)
+false$(EXEEXT): $(false_OBJECTS) $(false_DEPENDENCIES)
+ @rm -f false$(EXEEXT)
+ $(LINK) $(false_OBJECTS) $(false_LDADD) $(LIBS)
+fmt$(EXEEXT): $(fmt_OBJECTS) $(fmt_DEPENDENCIES)
+ @rm -f fmt$(EXEEXT)
+ $(LINK) $(fmt_OBJECTS) $(fmt_LDADD) $(LIBS)
+fold$(EXEEXT): $(fold_OBJECTS) $(fold_DEPENDENCIES)
+ @rm -f fold$(EXEEXT)
+ $(LINK) $(fold_OBJECTS) $(fold_LDADD) $(LIBS)
+ginstall$(EXEEXT): $(ginstall_OBJECTS) $(ginstall_DEPENDENCIES)
+ @rm -f ginstall$(EXEEXT)
+ $(LINK) $(ginstall_OBJECTS) $(ginstall_LDADD) $(LIBS)
+head$(EXEEXT): $(head_OBJECTS) $(head_DEPENDENCIES)
+ @rm -f head$(EXEEXT)
+ $(LINK) $(head_OBJECTS) $(head_LDADD) $(LIBS)
+hostid$(EXEEXT): $(hostid_OBJECTS) $(hostid_DEPENDENCIES)
+ @rm -f hostid$(EXEEXT)
+ $(LINK) $(hostid_OBJECTS) $(hostid_LDADD) $(LIBS)
+hostname$(EXEEXT): $(hostname_OBJECTS) $(hostname_DEPENDENCIES)
+ @rm -f hostname$(EXEEXT)
+ $(LINK) $(hostname_OBJECTS) $(hostname_LDADD) $(LIBS)
+id$(EXEEXT): $(id_OBJECTS) $(id_DEPENDENCIES)
+ @rm -f id$(EXEEXT)
+ $(LINK) $(id_OBJECTS) $(id_LDADD) $(LIBS)
+join$(EXEEXT): $(join_OBJECTS) $(join_DEPENDENCIES)
+ @rm -f join$(EXEEXT)
+ $(LINK) $(join_OBJECTS) $(join_LDADD) $(LIBS)
+kill$(EXEEXT): $(kill_OBJECTS) $(kill_DEPENDENCIES)
+ @rm -f kill$(EXEEXT)
+ $(LINK) $(kill_OBJECTS) $(kill_LDADD) $(LIBS)
+link$(EXEEXT): $(link_OBJECTS) $(link_DEPENDENCIES)
+ @rm -f link$(EXEEXT)
+ $(LINK) $(link_OBJECTS) $(link_LDADD) $(LIBS)
+ln$(EXEEXT): $(ln_OBJECTS) $(ln_DEPENDENCIES)
+ @rm -f ln$(EXEEXT)
+ $(LINK) $(ln_OBJECTS) $(ln_LDADD) $(LIBS)
+logname$(EXEEXT): $(logname_OBJECTS) $(logname_DEPENDENCIES)
+ @rm -f logname$(EXEEXT)
+ $(LINK) $(logname_OBJECTS) $(logname_LDADD) $(LIBS)
+ls$(EXEEXT): $(ls_OBJECTS) $(ls_DEPENDENCIES)
+ @rm -f ls$(EXEEXT)
+ $(LINK) $(ls_OBJECTS) $(ls_LDADD) $(LIBS)
+md5sum$(EXEEXT): $(md5sum_OBJECTS) $(md5sum_DEPENDENCIES)
+ @rm -f md5sum$(EXEEXT)
+ $(LINK) $(md5sum_OBJECTS) $(md5sum_LDADD) $(LIBS)
+mkdir$(EXEEXT): $(mkdir_OBJECTS) $(mkdir_DEPENDENCIES)
+ @rm -f mkdir$(EXEEXT)
+ $(LINK) $(mkdir_OBJECTS) $(mkdir_LDADD) $(LIBS)
+mkfifo$(EXEEXT): $(mkfifo_OBJECTS) $(mkfifo_DEPENDENCIES)
+ @rm -f mkfifo$(EXEEXT)
+ $(LINK) $(mkfifo_OBJECTS) $(mkfifo_LDADD) $(LIBS)
+mknod$(EXEEXT): $(mknod_OBJECTS) $(mknod_DEPENDENCIES)
+ @rm -f mknod$(EXEEXT)
+ $(LINK) $(mknod_OBJECTS) $(mknod_LDADD) $(LIBS)
+mv$(EXEEXT): $(mv_OBJECTS) $(mv_DEPENDENCIES)
+ @rm -f mv$(EXEEXT)
+ $(LINK) $(mv_OBJECTS) $(mv_LDADD) $(LIBS)
+nice$(EXEEXT): $(nice_OBJECTS) $(nice_DEPENDENCIES)
+ @rm -f nice$(EXEEXT)
+ $(LINK) $(nice_OBJECTS) $(nice_LDADD) $(LIBS)
+nl$(EXEEXT): $(nl_OBJECTS) $(nl_DEPENDENCIES)
+ @rm -f nl$(EXEEXT)
+ $(LINK) $(nl_OBJECTS) $(nl_LDADD) $(LIBS)
+nohup$(EXEEXT): $(nohup_OBJECTS) $(nohup_DEPENDENCIES)
+ @rm -f nohup$(EXEEXT)
+ $(LINK) $(nohup_OBJECTS) $(nohup_LDADD) $(LIBS)
+od$(EXEEXT): $(od_OBJECTS) $(od_DEPENDENCIES)
+ @rm -f od$(EXEEXT)
+ $(LINK) $(od_OBJECTS) $(od_LDADD) $(LIBS)
+paste$(EXEEXT): $(paste_OBJECTS) $(paste_DEPENDENCIES)
+ @rm -f paste$(EXEEXT)
+ $(LINK) $(paste_OBJECTS) $(paste_LDADD) $(LIBS)
+pathchk$(EXEEXT): $(pathchk_OBJECTS) $(pathchk_DEPENDENCIES)
+ @rm -f pathchk$(EXEEXT)
+ $(LINK) $(pathchk_OBJECTS) $(pathchk_LDADD) $(LIBS)
+pinky$(EXEEXT): $(pinky_OBJECTS) $(pinky_DEPENDENCIES)
+ @rm -f pinky$(EXEEXT)
+ $(LINK) $(pinky_OBJECTS) $(pinky_LDADD) $(LIBS)
+pr$(EXEEXT): $(pr_OBJECTS) $(pr_DEPENDENCIES)
+ @rm -f pr$(EXEEXT)
+ $(LINK) $(pr_OBJECTS) $(pr_LDADD) $(LIBS)
+printenv$(EXEEXT): $(printenv_OBJECTS) $(printenv_DEPENDENCIES)
+ @rm -f printenv$(EXEEXT)
+ $(LINK) $(printenv_OBJECTS) $(printenv_LDADD) $(LIBS)
+printf$(EXEEXT): $(printf_OBJECTS) $(printf_DEPENDENCIES)
+ @rm -f printf$(EXEEXT)
+ $(LINK) $(printf_OBJECTS) $(printf_LDADD) $(LIBS)
+ptx$(EXEEXT): $(ptx_OBJECTS) $(ptx_DEPENDENCIES)
+ @rm -f ptx$(EXEEXT)
+ $(LINK) $(ptx_OBJECTS) $(ptx_LDADD) $(LIBS)
+pwd$(EXEEXT): $(pwd_OBJECTS) $(pwd_DEPENDENCIES)
+ @rm -f pwd$(EXEEXT)
+ $(LINK) $(pwd_OBJECTS) $(pwd_LDADD) $(LIBS)
+readlink$(EXEEXT): $(readlink_OBJECTS) $(readlink_DEPENDENCIES)
+ @rm -f readlink$(EXEEXT)
+ $(LINK) $(readlink_OBJECTS) $(readlink_LDADD) $(LIBS)
+rm$(EXEEXT): $(rm_OBJECTS) $(rm_DEPENDENCIES)
+ @rm -f rm$(EXEEXT)
+ $(LINK) $(rm_OBJECTS) $(rm_LDADD) $(LIBS)
+rmdir$(EXEEXT): $(rmdir_OBJECTS) $(rmdir_DEPENDENCIES)
+ @rm -f rmdir$(EXEEXT)
+ $(LINK) $(rmdir_OBJECTS) $(rmdir_LDADD) $(LIBS)
+seq$(EXEEXT): $(seq_OBJECTS) $(seq_DEPENDENCIES)
+ @rm -f seq$(EXEEXT)
+ $(LINK) $(seq_OBJECTS) $(seq_LDADD) $(LIBS)
+setuidgid$(EXEEXT): $(setuidgid_OBJECTS) $(setuidgid_DEPENDENCIES)
+ @rm -f setuidgid$(EXEEXT)
+ $(LINK) $(setuidgid_OBJECTS) $(setuidgid_LDADD) $(LIBS)
+sha1sum$(EXEEXT): $(sha1sum_OBJECTS) $(sha1sum_DEPENDENCIES)
+ @rm -f sha1sum$(EXEEXT)
+ $(LINK) $(sha1sum_OBJECTS) $(sha1sum_LDADD) $(LIBS)
+sha224sum$(EXEEXT): $(sha224sum_OBJECTS) $(sha224sum_DEPENDENCIES)
+ @rm -f sha224sum$(EXEEXT)
+ $(LINK) $(sha224sum_OBJECTS) $(sha224sum_LDADD) $(LIBS)
+sha256sum$(EXEEXT): $(sha256sum_OBJECTS) $(sha256sum_DEPENDENCIES)
+ @rm -f sha256sum$(EXEEXT)
+ $(LINK) $(sha256sum_OBJECTS) $(sha256sum_LDADD) $(LIBS)
+sha384sum$(EXEEXT): $(sha384sum_OBJECTS) $(sha384sum_DEPENDENCIES)
+ @rm -f sha384sum$(EXEEXT)
+ $(LINK) $(sha384sum_OBJECTS) $(sha384sum_LDADD) $(LIBS)
+sha512sum$(EXEEXT): $(sha512sum_OBJECTS) $(sha512sum_DEPENDENCIES)
+ @rm -f sha512sum$(EXEEXT)
+ $(LINK) $(sha512sum_OBJECTS) $(sha512sum_LDADD) $(LIBS)
+shred$(EXEEXT): $(shred_OBJECTS) $(shred_DEPENDENCIES)
+ @rm -f shred$(EXEEXT)
+ $(LINK) $(shred_OBJECTS) $(shred_LDADD) $(LIBS)
+shuf$(EXEEXT): $(shuf_OBJECTS) $(shuf_DEPENDENCIES)
+ @rm -f shuf$(EXEEXT)
+ $(LINK) $(shuf_OBJECTS) $(shuf_LDADD) $(LIBS)
+sleep$(EXEEXT): $(sleep_OBJECTS) $(sleep_DEPENDENCIES)
+ @rm -f sleep$(EXEEXT)
+ $(LINK) $(sleep_OBJECTS) $(sleep_LDADD) $(LIBS)
+sort$(EXEEXT): $(sort_OBJECTS) $(sort_DEPENDENCIES)
+ @rm -f sort$(EXEEXT)
+ $(LINK) $(sort_OBJECTS) $(sort_LDADD) $(LIBS)
+split$(EXEEXT): $(split_OBJECTS) $(split_DEPENDENCIES)
+ @rm -f split$(EXEEXT)
+ $(LINK) $(split_OBJECTS) $(split_LDADD) $(LIBS)
+stat$(EXEEXT): $(stat_OBJECTS) $(stat_DEPENDENCIES)
+ @rm -f stat$(EXEEXT)
+ $(LINK) $(stat_OBJECTS) $(stat_LDADD) $(LIBS)
+stty$(EXEEXT): $(stty_OBJECTS) $(stty_DEPENDENCIES)
+ @rm -f stty$(EXEEXT)
+ $(LINK) $(stty_OBJECTS) $(stty_LDADD) $(LIBS)
+su$(EXEEXT): $(su_OBJECTS) $(su_DEPENDENCIES)
+ @rm -f su$(EXEEXT)
+ $(LINK) $(su_OBJECTS) $(su_LDADD) $(LIBS)
+sum$(EXEEXT): $(sum_OBJECTS) $(sum_DEPENDENCIES)
+ @rm -f sum$(EXEEXT)
+ $(LINK) $(sum_OBJECTS) $(sum_LDADD) $(LIBS)
+sync$(EXEEXT): $(sync_OBJECTS) $(sync_DEPENDENCIES)
+ @rm -f sync$(EXEEXT)
+ $(LINK) $(sync_OBJECTS) $(sync_LDADD) $(LIBS)
+tac$(EXEEXT): $(tac_OBJECTS) $(tac_DEPENDENCIES)
+ @rm -f tac$(EXEEXT)
+ $(LINK) $(tac_OBJECTS) $(tac_LDADD) $(LIBS)
+tail$(EXEEXT): $(tail_OBJECTS) $(tail_DEPENDENCIES)
+ @rm -f tail$(EXEEXT)
+ $(LINK) $(tail_OBJECTS) $(tail_LDADD) $(LIBS)
+tee$(EXEEXT): $(tee_OBJECTS) $(tee_DEPENDENCIES)
+ @rm -f tee$(EXEEXT)
+ $(LINK) $(tee_OBJECTS) $(tee_LDADD) $(LIBS)
+test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES)
+ @rm -f test$(EXEEXT)
+ $(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS)
+touch$(EXEEXT): $(touch_OBJECTS) $(touch_DEPENDENCIES)
+ @rm -f touch$(EXEEXT)
+ $(LINK) $(touch_OBJECTS) $(touch_LDADD) $(LIBS)
+tr$(EXEEXT): $(tr_OBJECTS) $(tr_DEPENDENCIES)
+ @rm -f tr$(EXEEXT)
+ $(LINK) $(tr_OBJECTS) $(tr_LDADD) $(LIBS)
+true$(EXEEXT): $(true_OBJECTS) $(true_DEPENDENCIES)
+ @rm -f true$(EXEEXT)
+ $(LINK) $(true_OBJECTS) $(true_LDADD) $(LIBS)
+tsort$(EXEEXT): $(tsort_OBJECTS) $(tsort_DEPENDENCIES)
+ @rm -f tsort$(EXEEXT)
+ $(LINK) $(tsort_OBJECTS) $(tsort_LDADD) $(LIBS)
+tty$(EXEEXT): $(tty_OBJECTS) $(tty_DEPENDENCIES)
+ @rm -f tty$(EXEEXT)
+ $(LINK) $(tty_OBJECTS) $(tty_LDADD) $(LIBS)
+uname$(EXEEXT): $(uname_OBJECTS) $(uname_DEPENDENCIES)
+ @rm -f uname$(EXEEXT)
+ $(LINK) $(uname_OBJECTS) $(uname_LDADD) $(LIBS)
+unexpand$(EXEEXT): $(unexpand_OBJECTS) $(unexpand_DEPENDENCIES)
+ @rm -f unexpand$(EXEEXT)
+ $(LINK) $(unexpand_OBJECTS) $(unexpand_LDADD) $(LIBS)
+uniq$(EXEEXT): $(uniq_OBJECTS) $(uniq_DEPENDENCIES)
+ @rm -f uniq$(EXEEXT)
+ $(LINK) $(uniq_OBJECTS) $(uniq_LDADD) $(LIBS)
+unlink$(EXEEXT): $(unlink_OBJECTS) $(unlink_DEPENDENCIES)
+ @rm -f unlink$(EXEEXT)
+ $(LINK) $(unlink_OBJECTS) $(unlink_LDADD) $(LIBS)
+uptime$(EXEEXT): $(uptime_OBJECTS) $(uptime_DEPENDENCIES)
+ @rm -f uptime$(EXEEXT)
+ $(LINK) $(uptime_OBJECTS) $(uptime_LDADD) $(LIBS)
+users$(EXEEXT): $(users_OBJECTS) $(users_DEPENDENCIES)
+ @rm -f users$(EXEEXT)
+ $(LINK) $(users_OBJECTS) $(users_LDADD) $(LIBS)
+vdir$(EXEEXT): $(vdir_OBJECTS) $(vdir_DEPENDENCIES)
+ @rm -f vdir$(EXEEXT)
+ $(LINK) $(vdir_OBJECTS) $(vdir_LDADD) $(LIBS)
+wc$(EXEEXT): $(wc_OBJECTS) $(wc_DEPENDENCIES)
+ @rm -f wc$(EXEEXT)
+ $(LINK) $(wc_OBJECTS) $(wc_LDADD) $(LIBS)
+who$(EXEEXT): $(who_OBJECTS) $(who_DEPENDENCIES)
+ @rm -f who$(EXEEXT)
+ $(LINK) $(who_OBJECTS) $(who_LDADD) $(LIBS)
+whoami$(EXEEXT): $(whoami_OBJECTS) $(whoami_DEPENDENCIES)
+ @rm -f whoami$(EXEEXT)
+ $(LINK) $(whoami_OBJECTS) $(whoami_LDADD) $(LIBS)
+yes$(EXEEXT): $(yes_OBJECTS) $(yes_DEPENDENCIES)
+ @rm -f yes$(EXEEXT)
+ $(LINK) $(yes_OBJECTS) $(yes_LDADD) $(LIBS)
+install-binSCRIPTS: $(bin_SCRIPTS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+ @list='$(bin_SCRIPTS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f $$d$$p; then \
+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+ echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-binSCRIPTS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_SCRIPTS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
+ done
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chgrp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown-core.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chroot.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cksum.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cp-hash.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/csplit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cut.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/date.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/df.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dircolors.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/du.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/echo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/env.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/expand.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/expr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/factor.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/false.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fmt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fold.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/head.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hostid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hostname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/id.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/install.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/join.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lbracket.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ln.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ls-dir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ls-ls.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ls-vdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ls.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5sum-md5sum.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkfifo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mknod.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nice.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nohup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/od.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/paste.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pathchk.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pinky.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printenv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ptx.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pwd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remove.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rmdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seq.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setuidgid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha1sum-md5sum.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha224sum-md5sum.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha256sum-md5sum.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha384sum-md5sum.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha512sum-md5sum.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shred.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shuf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sleep.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sort.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/split.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stty.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/su.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sum.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sync.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tac.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tail.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tee.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/touch.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/true.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tsort.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tty.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unexpand.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uniq.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uptime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/users.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/who.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/whoami.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yes.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+md5sum-md5sum.o: md5sum.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(md5sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT md5sum-md5sum.o -MD -MP -MF $(DEPDIR)/md5sum-md5sum.Tpo -c -o md5sum-md5sum.o `test -f 'md5sum.c' || echo '$(srcdir)/'`md5sum.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/md5sum-md5sum.Tpo $(DEPDIR)/md5sum-md5sum.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5sum.c' object='md5sum-md5sum.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(md5sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o md5sum-md5sum.o `test -f 'md5sum.c' || echo '$(srcdir)/'`md5sum.c
+
+md5sum-md5sum.obj: md5sum.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(md5sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT md5sum-md5sum.obj -MD -MP -MF $(DEPDIR)/md5sum-md5sum.Tpo -c -o md5sum-md5sum.obj `if test -f 'md5sum.c'; then $(CYGPATH_W) 'md5sum.c'; else $(CYGPATH_W) '$(srcdir)/md5sum.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/md5sum-md5sum.Tpo $(DEPDIR)/md5sum-md5sum.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5sum.c' object='md5sum-md5sum.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(md5sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o md5sum-md5sum.obj `if test -f 'md5sum.c'; then $(CYGPATH_W) 'md5sum.c'; else $(CYGPATH_W) '$(srcdir)/md5sum.c'; fi`
+
+sha1sum-md5sum.o: md5sum.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha1sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sha1sum-md5sum.o -MD -MP -MF $(DEPDIR)/sha1sum-md5sum.Tpo -c -o sha1sum-md5sum.o `test -f 'md5sum.c' || echo '$(srcdir)/'`md5sum.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/sha1sum-md5sum.Tpo $(DEPDIR)/sha1sum-md5sum.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5sum.c' object='sha1sum-md5sum.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha1sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha1sum-md5sum.o `test -f 'md5sum.c' || echo '$(srcdir)/'`md5sum.c
+
+sha1sum-md5sum.obj: md5sum.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha1sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sha1sum-md5sum.obj -MD -MP -MF $(DEPDIR)/sha1sum-md5sum.Tpo -c -o sha1sum-md5sum.obj `if test -f 'md5sum.c'; then $(CYGPATH_W) 'md5sum.c'; else $(CYGPATH_W) '$(srcdir)/md5sum.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/sha1sum-md5sum.Tpo $(DEPDIR)/sha1sum-md5sum.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5sum.c' object='sha1sum-md5sum.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha1sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha1sum-md5sum.obj `if test -f 'md5sum.c'; then $(CYGPATH_W) 'md5sum.c'; else $(CYGPATH_W) '$(srcdir)/md5sum.c'; fi`
+
+sha224sum-md5sum.o: md5sum.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha224sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sha224sum-md5sum.o -MD -MP -MF $(DEPDIR)/sha224sum-md5sum.Tpo -c -o sha224sum-md5sum.o `test -f 'md5sum.c' || echo '$(srcdir)/'`md5sum.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/sha224sum-md5sum.Tpo $(DEPDIR)/sha224sum-md5sum.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5sum.c' object='sha224sum-md5sum.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha224sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha224sum-md5sum.o `test -f 'md5sum.c' || echo '$(srcdir)/'`md5sum.c
+
+sha224sum-md5sum.obj: md5sum.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha224sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sha224sum-md5sum.obj -MD -MP -MF $(DEPDIR)/sha224sum-md5sum.Tpo -c -o sha224sum-md5sum.obj `if test -f 'md5sum.c'; then $(CYGPATH_W) 'md5sum.c'; else $(CYGPATH_W) '$(srcdir)/md5sum.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/sha224sum-md5sum.Tpo $(DEPDIR)/sha224sum-md5sum.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5sum.c' object='sha224sum-md5sum.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha224sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha224sum-md5sum.obj `if test -f 'md5sum.c'; then $(CYGPATH_W) 'md5sum.c'; else $(CYGPATH_W) '$(srcdir)/md5sum.c'; fi`
+
+sha256sum-md5sum.o: md5sum.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha256sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sha256sum-md5sum.o -MD -MP -MF $(DEPDIR)/sha256sum-md5sum.Tpo -c -o sha256sum-md5sum.o `test -f 'md5sum.c' || echo '$(srcdir)/'`md5sum.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/sha256sum-md5sum.Tpo $(DEPDIR)/sha256sum-md5sum.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5sum.c' object='sha256sum-md5sum.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha256sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha256sum-md5sum.o `test -f 'md5sum.c' || echo '$(srcdir)/'`md5sum.c
+
+sha256sum-md5sum.obj: md5sum.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha256sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sha256sum-md5sum.obj -MD -MP -MF $(DEPDIR)/sha256sum-md5sum.Tpo -c -o sha256sum-md5sum.obj `if test -f 'md5sum.c'; then $(CYGPATH_W) 'md5sum.c'; else $(CYGPATH_W) '$(srcdir)/md5sum.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/sha256sum-md5sum.Tpo $(DEPDIR)/sha256sum-md5sum.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5sum.c' object='sha256sum-md5sum.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha256sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha256sum-md5sum.obj `if test -f 'md5sum.c'; then $(CYGPATH_W) 'md5sum.c'; else $(CYGPATH_W) '$(srcdir)/md5sum.c'; fi`
+
+sha384sum-md5sum.o: md5sum.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha384sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sha384sum-md5sum.o -MD -MP -MF $(DEPDIR)/sha384sum-md5sum.Tpo -c -o sha384sum-md5sum.o `test -f 'md5sum.c' || echo '$(srcdir)/'`md5sum.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/sha384sum-md5sum.Tpo $(DEPDIR)/sha384sum-md5sum.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5sum.c' object='sha384sum-md5sum.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha384sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha384sum-md5sum.o `test -f 'md5sum.c' || echo '$(srcdir)/'`md5sum.c
+
+sha384sum-md5sum.obj: md5sum.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha384sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sha384sum-md5sum.obj -MD -MP -MF $(DEPDIR)/sha384sum-md5sum.Tpo -c -o sha384sum-md5sum.obj `if test -f 'md5sum.c'; then $(CYGPATH_W) 'md5sum.c'; else $(CYGPATH_W) '$(srcdir)/md5sum.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/sha384sum-md5sum.Tpo $(DEPDIR)/sha384sum-md5sum.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5sum.c' object='sha384sum-md5sum.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha384sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha384sum-md5sum.obj `if test -f 'md5sum.c'; then $(CYGPATH_W) 'md5sum.c'; else $(CYGPATH_W) '$(srcdir)/md5sum.c'; fi`
+
+sha512sum-md5sum.o: md5sum.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha512sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sha512sum-md5sum.o -MD -MP -MF $(DEPDIR)/sha512sum-md5sum.Tpo -c -o sha512sum-md5sum.o `test -f 'md5sum.c' || echo '$(srcdir)/'`md5sum.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/sha512sum-md5sum.Tpo $(DEPDIR)/sha512sum-md5sum.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5sum.c' object='sha512sum-md5sum.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha512sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha512sum-md5sum.o `test -f 'md5sum.c' || echo '$(srcdir)/'`md5sum.c
+
+sha512sum-md5sum.obj: md5sum.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha512sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sha512sum-md5sum.obj -MD -MP -MF $(DEPDIR)/sha512sum-md5sum.Tpo -c -o sha512sum-md5sum.obj `if test -f 'md5sum.c'; then $(CYGPATH_W) 'md5sum.c'; else $(CYGPATH_W) '$(srcdir)/md5sum.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/sha512sum-md5sum.Tpo $(DEPDIR)/sha512sum-md5sum.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5sum.c' object='sha512sum-md5sum.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sha512sum_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha512sum-md5sum.obj `if test -f 'md5sum.c'; then $(CYGPATH_W) 'md5sum.c'; else $(CYGPATH_W) '$(srcdir)/md5sum.c'; fi`
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(HEADERS) all-local
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-noinstPROGRAMS \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am: install-binPROGRAMS install-binSCRIPTS \
+ install-exec-local
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \
+ uninstall-local
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
+ clean-binPROGRAMS clean-generic clean-noinstPROGRAMS ctags \
+ distclean distclean-compile distclean-generic distclean-tags \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-binPROGRAMS install-binSCRIPTS install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-exec-local install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-binPROGRAMS \
+ uninstall-binSCRIPTS uninstall-local
+
+
+$(PROGRAMS): ../lib/libcoreutils.a
+
+.sh:
+ rm -f $@ $@-t
+ sed \
+ -e 's!@''bindir''@!$(bindir)!' \
+ -e 's/@''RELEASE_YEAR'@/$(RELEASE_YEAR)/ \
+ -e 's/@''GNU_PACKAGE''@/$(GNU_PACKAGE)/' \
+ -e 's/@''PACKAGE_BUGREPORT''@/$(PACKAGE_BUGREPORT)/' \
+ -e 's/@''VERSION''@/$(VERSION)/' $< > $@-t
+ chmod +x $@-t
+ mv $@-t $@
+
+all-local: su$(EXEEXT)
+
+install-root: su$(EXEEXT)
+ @$(INSTALL_SU)
+
+install-exec-local: su$(EXEEXT)
+ @TMPFILE=$(DESTDIR)$(bindir)/.su-$$$$; \
+ rm -f $$TMPFILE; \
+ echo > $$TMPFILE; \
+ can_create_suid_root_executable=no; \
+ chown root $$TMPFILE > /dev/null 2>&1 \
+ && chmod $(setuid_root_mode) $$TMPFILE > /dev/null 2>&1 \
+ && can_create_suid_root_executable=yes; \
+ rm -f $$TMPFILE; \
+ if test $$can_create_suid_root_executable = yes; then \
+ $(INSTALL_SU); \
+ else \
+ echo "WARNING: insufficient access; not installing su"; \
+ echo "NOTE: to install su, run 'make install-root' as root"; \
+ fi
+
+uninstall-local:
+# Remove su only if it's one we installed.
+ @if grep '$(GNU_PACKAGE)' $(installed_su) > /dev/null 2>&1; then \
+ echo " rm -f $(installed_su)"; \
+ rm -f $(installed_su); \
+ else :; fi
+dircolors.h: dcgen dircolors.hin
+ @rm -f $@ $@-t
+ $(PERL) -w -- $(srcdir)/dcgen $(srcdir)/dircolors.hin > $@-t
+ @chmod a-w $@-t
+ mv $@-t $@
+wheel-size.h: Makefile.am
+ @rm -f $@ $@-t
+ echo '#define WHEEL_SIZE $(wheel_size)' > $@-t
+ @chmod a-w $@-t
+ mv $@-t $@
+wheel.h: wheel-gen.pl Makefile.am
+ @rm -f $@ $@-t
+ $(srcdir)/wheel-gen.pl $(wheel_size) > $@-t
+ @chmod a-w $@-t
+ mv $@-t $@
+fs.h: stat.c extract-magic
+ rm -f $@
+ $(PERL) $(srcdir)/extract-magic $(srcdir)/stat.c > $@t
+ @chmod a-w $@t
+ mv $@t $@
+
+all_programs.list:
+ @echo $(all_programs) | tr ' ' '\n' | sed -e 's,$(EXEEXT)$$,,' \
+ | $(ASSORT) -u
+# Ensure that the list of programs in README matches the list
+# of programs we can build.
+check: check-README check-misc
+.PHONY: check-README
+check-README:
+ rm -rf $(pr) $(pm)
+ echo $(all_programs) \
+ | tr -s ' ' '\n' | sed -e 's,$(EXEEXT)$$,,' \
+ | $(ASSORT) -u > $(pm) && \
+ sed -n '/^The programs .* are:/,/^[a-zA-Z]/p' $(top_srcdir)/README \
+ | sed -n '/^ */s///p' | tr -s ' ' '\n' > $(pr)
+ diff $(pm) $(pr) && rm -rf $(pr) $(pm)
+.PHONY: check-AUTHORS
+check-AUTHORS: $(all_programs)
+ rm -f $(au_actual) $(au_dotdot)
+ for i in `ls $(all_programs) | sed -e 's,$(EXEEXT)$$,,' \
+ | $(ASSORT) -u`; do \
+ test "$$i" = '[' && continue; \
+ exe=$$i; \
+ if test "$$i" = install; then \
+ exe=ginstall; \
+ elif test "$$i" = test; then \
+ exe='['; \
+ fi; \
+ ./$$exe --version \
+ |sed -n '/Written by /{ s//'"$$i"': /; s/,* and /, /; s/\.$$//; p; }'; \
+ done > $(au_actual)
+ sed -n '/:/p' $(top_srcdir)/AUTHORS > $(au_dotdot)
+ diff $(au_actual) $(au_dotdot) && rm -f $(au_actual) $(au_dotdot)
+
+# Make sure we don't define any S_IS* macros in src/*.c files.
+# Not a big deal, but they're already defined via system.h.
+#
+# Also make sure we don't use st_blocks. Use ST_NBLOCKS instead.
+# This is a bit of a kludge, since it prevents use of the string
+# even in comments, but for now it does the job with no false positives.
+.PHONY: check-misc
+check-misc:
+ cd $(srcdir); grep '^# *define *S_IS' $(SOURCES) && exit 1 || :
+ cd $(srcdir); grep st_blocks $(SOURCES) && exit 1 || :
+ cd $(srcdir); grep '^# *define .*defined' $(SOURCES) && exit 1 || :
+# FIXME: handle *.sh; and use $(all_programs), not $(SOURCES)
+../AUTHORS: $(SOURCES)
+ rm -f $@-t
+ ( \
+ set -e; \
+ echo "Here are the names of the programs in this package,"; \
+ echo "each followed by the name(s) of its author(s)."; \
+ echo; \
+ for i in $(SOURCES); do \
+ a=`sed -n $(s1) $$i`; \
+ test "$$a" && : \
+ || a=`sed -n $(s2) $$i`; \
+ if test "$$a"; then \
+ prog=`echo $$i|sed 's/\.c$$//'`; \
+ echo "$$prog: $$a"; \
+ fi; \
+ done | $(ASSORT) -u ) > $@-t
+ chmod a-w $@-t
+ mv $@-t $@
+
+# The following rule is not designed to be portable,
+# and relies on tools that not everyone has.
+
+# Most functions in src/*.c should have static scope.
+# Any that don't must be marked with `extern', but `main'
+# and `usage' are exceptions. They're always extern, but
+# don't need to be marked.
+#
+# The second nm|grep checks for file-scope variables with `extern' scope.
+.PHONY: sc_tight_scope
+sc_tight_scope: $(all_programs)
+ @t=exceptions-$$$$; \
+ trap "s=$$?; rm -f $$t; exit $$s" 0 1 2 13 15; \
+ ( printf '^main$$\n^usage$$\n'; \
+ grep -h -A1 '^extern .*[^;]$$' $(SOURCES) \
+ | grep -vE '^(extern |--)' |sed 's/^/^/;s/ .*/$$/' ) > $$t; \
+ nm -e *.$(OBJEXT) \
+ | sed -n 's/.* T //p' \
+ | grep -Ev -f $$t && \
+ { echo 'the above functions should have static scope' 1>&2; \
+ exit 1; } || : ; \
+ ( printf '^program_name$$\n'; \
+ sed -n 's/^extern int \([^ ][^ ]*\);$$/^\1$$/p' \
+ $(noinst_HEADERS) ) > $$t; \
+ nm -e *.$(OBJEXT) \
+ | sed -n 's/.* [BD] //p' \
+ | grep -Ev -f $$t && \
+ { echo 'the above variables should have static scope' 1>&2; \
+ exit 1; } || :
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/base64.c b/src/base64.c
new file mode 100644
index 0000000..9f8ff41
--- /dev/null
+++ b/src/base64.c
@@ -0,0 +1,322 @@
+/* Base64 encode/decode strings or files.
+ Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ This file is part of Base64.
+
+ Base64 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.
+
+ Base64 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 Base64; see the file COPYING. If not, write to the Free
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+/* Written by Simon Josefsson <simon@josefsson.org>. */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "error.h"
+#include "xstrtol.h"
+#include "quote.h"
+#include "quotearg.h"
+
+#include "base64.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "base64"
+
+#define AUTHOR "Simon Josefsson"
+
+/* The invocation name of this program. */
+char *program_name;
+
+static const struct option long_options[] = {
+ {"decode", no_argument, 0, 'd'},
+ {"wrap", required_argument, 0, 'w'},
+ {"ignore-garbage", no_argument, 0, 'i'},
+ {"help", no_argument, 0, GETOPT_HELP_CHAR},
+ {"version", no_argument, 0, GETOPT_VERSION_CHAR},
+
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+static void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION] [FILE]\n\
+Base64 encode or decode FILE, or standard input, to standard output.\n\
+\n"), program_name);
+ fputs (_("\
+ -w, --wrap=COLS Wrap encoded lines after COLS character (default 76).\n\
+ Use 0 to disable line wrapping.\n\
+\n\
+ -d, --decode Decode data.\n\
+ -i, --ignore-garbage When decoding, ignore non-alphabet characters.\n\
+\n\
+"), stdout);
+ fputs (_("\
+ --help Display this help and exit.\n\
+ --version Output version information and exit.\n"), stdout);
+ fputs (_("\
+\n\
+With no FILE, or when FILE is -, read standard input.\n"), stdout);
+ fputs (_("\
+\n\
+The data are encoded as described for the base64 alphabet in RFC 3548.\n\
+When decoding, the input may contain newlines in addition to the bytes of\n\
+the formal base64 alphabet. Use --ignore-garbage to attempt to recover\n\
+from any other non-alphabet bytes in the encoded stream.\n"),
+ stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+
+ exit (status);
+}
+
+/* Note that increasing this may decrease performance if --ignore-garbage
+ is used, because of the memmove operation below. */
+#define BLOCKSIZE 3072
+#define B64BLOCKSIZE BASE64_LENGTH (BLOCKSIZE)
+
+/* Ensure that BLOCKSIZE is a multiple of 3 and 4. */
+#if BLOCKSIZE % 12 != 0
+# error "invalid BLOCKSIZE"
+#endif
+
+static void
+wrap_write (const char *buffer, size_t len,
+ uintmax_t wrap_column, size_t *current_column, FILE *out)
+{
+ size_t written;
+
+ if (wrap_column == 0)
+ {
+ /* Simple write. */
+ if (fwrite (buffer, 1, len, stdout) < len)
+ error (EXIT_FAILURE, errno, _("write error"));
+ }
+ else
+ for (written = 0; written < len;)
+ {
+ uintmax_t cols_remaining = wrap_column - *current_column;
+ size_t to_write = MIN (cols_remaining, SIZE_MAX);
+ to_write = MIN (to_write, len - written);
+
+ if (to_write == 0)
+ {
+ if (fputs ("\n", out) < 0)
+ error (EXIT_FAILURE, errno, _("write error"));
+ *current_column = 0;
+ }
+ else
+ {
+ if (fwrite (buffer + written, 1, to_write, stdout) < to_write)
+ error (EXIT_FAILURE, errno, _("write error"));
+ *current_column += to_write;
+ written += to_write;
+ }
+ }
+}
+
+static void
+do_encode (FILE *in, FILE *out, uintmax_t wrap_column)
+{
+ size_t current_column = 0;
+ char inbuf[BLOCKSIZE];
+ char outbuf[B64BLOCKSIZE];
+ size_t sum;
+
+ do
+ {
+ size_t n;
+
+ sum = 0;
+ do
+ {
+ n = fread (inbuf + sum, 1, BLOCKSIZE - sum, in);
+ sum += n;
+ }
+ while (!feof (in) && !ferror (in) && sum < BLOCKSIZE);
+
+ if (sum > 0)
+ {
+ /* Process input one block at a time. Note that BLOCKSIZE %
+ 3 == 0, so that no base64 pads will appear in output. */
+ base64_encode (inbuf, sum, outbuf, BASE64_LENGTH (sum));
+
+ wrap_write (outbuf, BASE64_LENGTH (sum), wrap_column,
+ &current_column, out);
+ }
+ }
+ while (!feof (in) && !ferror (in) && sum == BLOCKSIZE);
+
+ /* When wrapping, terminate last line. */
+ if (wrap_column && current_column > 0 && fputs ("\n", out) < 0)
+ error (EXIT_FAILURE, errno, _("write error"));
+
+ if (ferror (in))
+ error (EXIT_FAILURE, errno, _("read error"));
+}
+
+static void
+do_decode (FILE *in, FILE *out, bool ignore_garbage)
+{
+ char inbuf[B64BLOCKSIZE];
+ char outbuf[BLOCKSIZE];
+ size_t sum;
+ struct base64_decode_context ctx;
+
+ base64_decode_ctx_init (&ctx);
+
+ do
+ {
+ bool ok;
+ size_t n;
+ unsigned int k;
+
+ sum = 0;
+ do
+ {
+ n = fread (inbuf + sum, 1, B64BLOCKSIZE - sum, in);
+
+ if (ignore_garbage)
+ {
+ size_t i;
+ for (i = 0; n > 0 && i < n;)
+ if (isbase64 (inbuf[sum + i]) || inbuf[sum + i] == '=')
+ i++;
+ else
+ memmove (inbuf + sum + i, inbuf + sum + i + 1, --n - i);
+ }
+
+ sum += n;
+
+ if (ferror (in))
+ error (EXIT_FAILURE, errno, _("read error"));
+ }
+ while (sum < B64BLOCKSIZE && !feof (in));
+
+ /* The following "loop" is usually iterated just once.
+ However, when it processes the final input buffer, we want
+ to iterate it one additional time, but with an indicator
+ telling it to flush what is in CTX. */
+ for (k = 0; k < 1 + feof (in); k++)
+ {
+ if (k == 1 && ctx.i == 0)
+ break;
+ n = BLOCKSIZE;
+ ok = base64_decode (&ctx, inbuf, (k == 0 ? sum : 0), outbuf, &n);
+
+ if (fwrite (outbuf, 1, n, out) < n)
+ error (EXIT_FAILURE, errno, _("write error"));
+
+ if (!ok)
+ error (EXIT_FAILURE, 0, _("invalid input"));
+ }
+ }
+ while (!feof (in));
+}
+
+int
+main (int argc, char **argv)
+{
+ int opt;
+ FILE *input_fh;
+ const char *infile;
+
+ /* True if --decode has bene given and we should decode data. */
+ bool decode = false;
+ /* True if we should ignore non-alphabetic characters. */
+ bool ignore_garbage = false;
+ /* Wrap encoded base64 data around the 76:th column, by default. */
+ uintmax_t wrap_column = 76;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ while ((opt = getopt_long (argc, argv, "dqiw:", long_options, NULL)) != -1)
+ switch (opt)
+ {
+ case 'd':
+ decode = true;
+ break;
+
+ case 'w':
+ if (xstrtoumax (optarg, NULL, 0, &wrap_column, NULL) != LONGINT_OK)
+ error (EXIT_FAILURE, 0, _("invalid wrap size: %s"),
+ quotearg (optarg));
+ break;
+
+ case 'i':
+ ignore_garbage = true;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHOR);
+
+ default:
+ usage (EXIT_FAILURE);
+ break;
+ }
+
+ if (argc - optind > 1)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind]));
+ usage (EXIT_FAILURE);
+ }
+
+ if (optind < argc)
+ infile = argv[optind];
+ else
+ infile = "-";
+
+ if (strcmp (infile, "-") == 0)
+ input_fh = stdin;
+ else
+ {
+ input_fh = fopen (infile, "r");
+ if (input_fh == NULL)
+ error (EXIT_FAILURE, errno, "%s", infile);
+ }
+
+ if (decode)
+ do_decode (input_fh, stdout, ignore_garbage);
+ else
+ do_encode (input_fh, stdout, wrap_column);
+
+ if (fclose (input_fh) == EOF)
+ {
+ if (strcmp (infile, "-") == 0)
+ error (EXIT_FAILURE, errno, _("closing standard input"));
+ else
+ error (EXIT_FAILURE, errno, "%s", infile);
+ }
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/basename.c b/src/basename.c
new file mode 100644
index 0000000..f2617b1
--- /dev/null
+++ b/src/basename.c
@@ -0,0 +1,144 @@
+/* basename -- strip directory and suffix from file names
+ Copyright (C) 1990-1997, 1999-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Usage: basename name [suffix]
+ NAME is a file name; SUFFIX is a suffix to strip from it.
+
+ basename /usr/foo/lossage/functions.l
+ => functions.l
+ basename /usr/foo/lossage/functions.l .l
+ => functions
+ basename functions.lisp p
+ => functions.lis */
+
+#include <config.h>
+#include <getopt.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "long-options.h"
+#include "error.h"
+#include "quote.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "basename"
+
+#define AUTHORS "FIXME unknown"
+
+/* The name this program was run with. */
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s NAME [SUFFIX]\n\
+ or: %s OPTION\n\
+"),
+ program_name, program_name);
+ fputs (_("\
+Print NAME with any leading directory components removed.\n\
+If specified, also remove a trailing SUFFIX.\n\
+\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\
+\n\
+Examples:\n\
+ %s /usr/bin/sort Output \"sort\".\n\
+ %s include/stdio.h .h Output \"stdio\".\n\
+"),
+ program_name, program_name);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Remove SUFFIX from the end of NAME if it is there, unless NAME
+ consists entirely of SUFFIX. */
+
+static void
+remove_suffix (char *name, const char *suffix)
+{
+ char *np;
+ const char *sp;
+
+ np = name + strlen (name);
+ sp = suffix + strlen (suffix);
+
+ while (np > name && sp > suffix)
+ if (*--np != *--sp)
+ return;
+ if (np > name)
+ *np = '\0';
+}
+
+int
+main (int argc, char **argv)
+{
+ char *name;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "+", NULL, NULL) != -1)
+ usage (EXIT_FAILURE);
+
+ if (argc < optind + 1)
+ {
+ error (0, 0, _("missing operand"));
+ usage (EXIT_FAILURE);
+ }
+
+ if (optind + 2 < argc)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind + 2]));
+ usage (EXIT_FAILURE);
+ }
+
+ name = base_name (argv[optind]);
+ strip_trailing_slashes (name);
+
+ /* Per POSIX, `basename // /' must return `//' on platforms with
+ distinct //. On platforms with drive letters, this generalizes
+ to making `basename c: :' return `c:'. This rule is captured by
+ skipping suffix stripping if base_name returned an absolute path
+ or a drive letter (only possible if name is a file-system
+ root). */
+ if (argc == optind + 2 && IS_RELATIVE_FILE_NAME (name)
+ && ! FILE_SYSTEM_PREFIX_LEN (name))
+ remove_suffix (name, argv[optind + 1]);
+
+ puts (name);
+ free (name);
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/c99-to-c89.diff b/src/c99-to-c89.diff
new file mode 100644
index 0000000..5545f6a
--- /dev/null
+++ b/src/c99-to-c89.diff
@@ -0,0 +1,118 @@
+Index: src/remove.c
+===================================================================
+RCS file: /fetish/cu/src/remove.c,v
+retrieving revision 1.158
+diff --git a/src/remove.c b/src/remove.c
+index 4728bdd..7477da5 100644
+--- a/src/remove.c
++++ b/src/remove.c
+@@ -236,9 +236,10 @@ pop_dir (Dirstack_state *ds)
+ {
+ size_t n_lengths = obstack_object_size (&ds->len_stack) / sizeof (size_t);
+ size_t *length = obstack_base (&ds->len_stack);
++ size_t top_len;
+
+ assert (n_lengths > 0);
+- size_t top_len = length[n_lengths - 1];
++ top_len = length[n_lengths - 1];
+ assert (top_len >= 2);
+
+ /* Pop the specified length of file name. */
+@@ -370,10 +371,11 @@ AD_stack_top (Dirstack_state const *ds)
+ static void
+ AD_stack_pop (Dirstack_state *ds)
+ {
++ struct AD_ent *top;
+ assert (0 < AD_stack_height (ds));
+
+ /* operate on Active_dir. pop and free top entry */
+- struct AD_ent *top = AD_stack_top (ds);
++ top = AD_stack_top (ds);
+ if (top->unremovable)
+ hash_free (top->unremovable);
+ obstack_blank (&ds->Active_dir, -(int) sizeof (struct AD_ent));
+@@ -815,6 +817,7 @@ prompt (int fd_cwd, Dirstack_state const *ds, char const *filename,
+
+ if (write_protected || x->interactive == RMI_ALWAYS)
+ {
++ char const *quoted_name = quote (full_filename (filename));
+ if (write_protected <= 0
+ && cache_fstatat (fd_cwd, filename, sbuf, AT_SYMLINK_NOFOLLOW) != 0)
+ {
+@@ -832,8 +835,6 @@ prompt (int fd_cwd, Dirstack_state const *ds, char const *filename,
+ write_protected = EISDIR;
+ }
+
+- char const *quoted_name = quote (full_filename (filename));
+-
+ if (0 < write_protected)
+ {
+ error (0, write_protected, _("cannot remove %s"), quoted_name);
+@@ -1487,6 +1488,7 @@ rm_1 (Dirstack_state *ds, char const *filename,
+ return RM_ERROR;
+ }
+
++ {
+ struct stat st;
+ cache_stat_init (&st);
+ cycle_check_init (&ds->cycle_check_state);
+@@ -1509,6 +1511,7 @@ rm_1 (Dirstack_state *ds, char const *filename,
+ AD_push_initial (ds);
+ AD_INIT_OTHER_MEMBERS ();
+
++ {
+ enum RM_status status = remove_entry (AT_FDCWD, ds, filename, &st, x, NULL);
+ if (status == RM_NONEMPTY_DIR)
+ {
+@@ -1525,6 +1528,8 @@ rm_1 (Dirstack_state *ds, char const *filename,
+
+ ds_clear (ds);
+ return status;
++ }
++ }
+ }
+
+ /* Remove all files and/or directories specified by N_FILES and FILE.
+Index: src/rm.c
+===================================================================
+RCS file: /fetish/cu/src/rm.c,v
+retrieving revision 1.140
+diff --git a/src/rm.c b/src/rm.c
+index 364a21c..7a24014 100644
+--- a/src/rm.c
++++ b/src/rm.c
+@@ -355,6 +355,7 @@ main (int argc, char **argv)
+ quote ("/"));
+ }
+
++ {
+ size_t n_files = argc - optind;
+ char const *const *file = (char const *const *) argv + optind;
+
+@@ -368,7 +369,10 @@ main (int argc, char **argv)
+ if (!yesno ())
+ exit (EXIT_SUCCESS);
+ }
++ {
+ enum RM_status status = rm (n_files, file, &x);
+ assert (VALID_STATUS (status));
+ exit (status == RM_ERROR ? EXIT_FAILURE : EXIT_SUCCESS);
++ }
++ }
+ }
+Index: src/shred.c
+===================================================================
+RCS file: /fetish/cu/src/shred.c,v
+retrieving revision 1.130
+diff -u -p -r1.130 shred.c
+--- a/src/shred.c 3 Sep 2006 02:53:16 -0000 1.130
++++ b/src/shred.c 3 Oct 2006 13:48:24 -0000
+@@ -464,7 +464,7 @@ dopass (int fd, char const *qname, off_t
+ out. Thus, it shouldn't give up on bad blocks. This
+ code works because lim is always a multiple of
+ SECTOR_SIZE, except at the end. */
+- verify (sizeof r % SECTOR_SIZE == 0);
++ { verify (sizeof r % SECTOR_SIZE == 0); }
+ if (errnum == EIO && 0 <= size && (soff | SECTOR_MASK) < lim)
+ {
+ size_t soff1 = (soff | SECTOR_MASK) + 1;
diff --git a/src/cat.c b/src/cat.c
new file mode 100644
index 0000000..90a73c2
--- /dev/null
+++ b/src/cat.c
@@ -0,0 +1,788 @@
+/* cat -- concatenate files and print on the standard output.
+ Copyright (C) 88, 90, 91, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Differences from the Unix cat:
+ * Always unbuffered, -u is ignored.
+ * Usually much faster than other versions of cat, the difference
+ is especially apparent when using the -v option.
+
+ By tege@sics.se, Torbjorn Granlund, advised by rms, Richard Stallman. */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+
+#if HAVE_STROPTS_H
+# include <stropts.h>
+#endif
+#if HAVE_SYS_IOCTL_H
+# include <sys/ioctl.h>
+#endif
+
+#include "system.h"
+#include "error.h"
+#include "full-write.h"
+#include "getpagesize.h"
+#include "quote.h"
+#include "safe-read.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "cat"
+
+#define AUTHORS "Torbjorn Granlund", "Richard M. Stallman"
+
+/* Undefine, to avoid warning about redefinition on some systems. */
+#undef max
+#define max(h,i) ((h) > (i) ? (h) : (i))
+
+/* Name under which this program was invoked. */
+char *program_name;
+
+/* Name of input file. May be "-". */
+static char const *infile;
+
+/* Descriptor on which input file is open. */
+static int input_desc;
+
+/* Buffer for line numbers.
+ An 11 digit counter may overflow within an hour on a P2/466,
+ an 18 digit counter needs about 1000y */
+#define LINE_COUNTER_BUF_LEN 20
+static char line_buf[LINE_COUNTER_BUF_LEN] =
+ {
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '0',
+ '\t', '\0'
+ };
+
+/* Position in `line_buf' where printing starts. This will not change
+ unless the number of lines is larger than 999999. */
+static char *line_num_print = line_buf + LINE_COUNTER_BUF_LEN - 8;
+
+/* Position of the first digit in `line_buf'. */
+static char *line_num_start = line_buf + LINE_COUNTER_BUF_LEN - 3;
+
+/* Position of the last digit in `line_buf'. */
+static char *line_num_end = line_buf + LINE_COUNTER_BUF_LEN - 3;
+
+/* Preserves the `cat' function's local `newlines' between invocations. */
+static int newlines2 = 0;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION] [FILE]...\n\
+"),
+ program_name);
+ fputs (_("\
+Concatenate FILE(s), or standard input, to standard output.\n\
+\n\
+ -A, --show-all equivalent to -vET\n\
+ -b, --number-nonblank number nonblank output lines\n\
+ -e equivalent to -vE\n\
+ -E, --show-ends display $ at end of each line\n\
+ -n, --number number all output lines\n\
+ -s, --squeeze-blank never more than one single blank line\n\
+"), stdout);
+ fputs (_("\
+ -t equivalent to -vT\n\
+ -T, --show-tabs display TAB characters as ^I\n\
+ -u (ignored)\n\
+ -v, --show-nonprinting use ^ and M- notation, except for LFD and TAB\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+With no FILE, or when FILE is -, read standard input.\n\
+"), stdout);
+ printf (_("\
+\n\
+Examples:\n\
+ %s f - g Output f's contents, then standard input, then g's contents.\n\
+ %s Copy standard input to standard output.\n\
+"),
+ program_name, program_name);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Compute the next line number. */
+
+static void
+next_line_num (void)
+{
+ char *endp = line_num_end;
+ do
+ {
+ if ((*endp)++ < '9')
+ return;
+ *endp-- = '0';
+ }
+ while (endp >= line_num_start);
+ if (line_num_start > line_buf)
+ *--line_num_start = '1';
+ else
+ *line_buf = '>';
+ if (line_num_start < line_num_print)
+ line_num_print--;
+}
+
+/* Plain cat. Copies the file behind `input_desc' to STDOUT_FILENO.
+ Return true if successful. */
+
+static bool
+simple_cat (
+ /* Pointer to the buffer, used by reads and writes. */
+ char *buf,
+
+ /* Number of characters preferably read or written by each read and write
+ call. */
+ size_t bufsize)
+{
+ /* Actual number of characters read, and therefore written. */
+ size_t n_read;
+
+ /* Loop until the end of the file. */
+
+ for (;;)
+ {
+ /* Read a block of input. */
+
+ n_read = safe_read (input_desc, buf, bufsize);
+ if (n_read == SAFE_READ_ERROR)
+ {
+ error (0, errno, "%s", infile);
+ return false;
+ }
+
+ /* End of this file? */
+
+ if (n_read == 0)
+ return true;
+
+ /* Write this block out. */
+
+ {
+ /* The following is ok, since we know that 0 < n_read. */
+ size_t n = n_read;
+ if (full_write (STDOUT_FILENO, buf, n) != n)
+ error (EXIT_FAILURE, errno, _("write error"));
+ }
+ }
+}
+
+/* Write any pending output to STDOUT_FILENO.
+ Pending is defined to be the *BPOUT - OUTBUF bytes starting at OUTBUF.
+ Then set *BPOUT to OUTPUT if it's not already that value. */
+
+static inline void
+write_pending (char *outbuf, char **bpout)
+{
+ size_t n_write = *bpout - outbuf;
+ if (0 < n_write)
+ {
+ if (full_write (STDOUT_FILENO, outbuf, n_write) != n_write)
+ error (EXIT_FAILURE, errno, _("write error"));
+ *bpout = outbuf;
+ }
+}
+
+/* Cat the file behind INPUT_DESC to the file behind OUTPUT_DESC.
+ Return true if successful.
+ Called if any option more than -u was specified.
+
+ A newline character is always put at the end of the buffer, to make
+ an explicit test for buffer end unnecessary. */
+
+static bool
+cat (
+ /* Pointer to the beginning of the input buffer. */
+ char *inbuf,
+
+ /* Number of characters read in each read call. */
+ size_t insize,
+
+ /* Pointer to the beginning of the output buffer. */
+ char *outbuf,
+
+ /* Number of characters written by each write call. */
+ size_t outsize,
+
+ /* Variables that have values according to the specified options. */
+ bool show_nonprinting,
+ bool show_tabs,
+ bool number,
+ bool number_nonblank,
+ bool show_ends,
+ bool squeeze_blank)
+{
+ /* Last character read from the input buffer. */
+ unsigned char ch;
+
+ /* Pointer to the next character in the input buffer. */
+ char *bpin;
+
+ /* Pointer to the first non-valid byte in the input buffer, i.e. the
+ current end of the buffer. */
+ char *eob;
+
+ /* Pointer to the position where the next character shall be written. */
+ char *bpout;
+
+ /* Number of characters read by the last read call. */
+ size_t n_read;
+
+ /* Determines how many consecutive newlines there have been in the
+ input. 0 newlines makes NEWLINES -1, 1 newline makes NEWLINES 1,
+ etc. Initially 0 to indicate that we are at the beginning of a
+ new line. The "state" of the procedure is determined by
+ NEWLINES. */
+ int newlines = newlines2;
+
+#ifdef FIONREAD
+ /* If nonzero, use the FIONREAD ioctl, as an optimization.
+ (On Ultrix, it is not supported on NFS file systems.) */
+ bool use_fionread = true;
+#endif
+
+ /* The inbuf pointers are initialized so that BPIN > EOB, and thereby input
+ is read immediately. */
+
+ eob = inbuf;
+ bpin = eob + 1;
+
+ bpout = outbuf;
+
+ for (;;)
+ {
+ do
+ {
+ /* Write if there are at least OUTSIZE bytes in OUTBUF. */
+
+ if (outbuf + outsize <= bpout)
+ {
+ char *wp = outbuf;
+ size_t remaining_bytes;
+ do
+ {
+ if (full_write (STDOUT_FILENO, wp, outsize) != outsize)
+ error (EXIT_FAILURE, errno, _("write error"));
+ wp += outsize;
+ remaining_bytes = bpout - wp;
+ }
+ while (outsize <= remaining_bytes);
+
+ /* Move the remaining bytes to the beginning of the
+ buffer. */
+
+ memmove (outbuf, wp, remaining_bytes);
+ bpout = outbuf + remaining_bytes;
+ }
+
+ /* Is INBUF empty? */
+
+ if (bpin > eob)
+ {
+ bool input_pending = false;
+#ifdef FIONREAD
+ int n_to_read = 0;
+
+ /* Is there any input to read immediately?
+ If not, we are about to wait,
+ so write all buffered output before waiting. */
+
+ if (use_fionread
+ && ioctl (input_desc, FIONREAD, &n_to_read) < 0)
+ {
+ /* Ultrix returns EOPNOTSUPP on NFS;
+ HP-UX returns ENOTTY on pipes.
+ SunOS returns EINVAL and
+ More/BSD returns ENODEV on special files
+ like /dev/null.
+ Irix-5 returns ENOSYS on pipes. */
+ if (errno == EOPNOTSUPP || errno == ENOTTY
+ || errno == EINVAL || errno == ENODEV
+ || errno == ENOSYS)
+ use_fionread = false;
+ else
+ {
+ error (0, errno, _("cannot do ioctl on %s"), quote (infile));
+ newlines2 = newlines;
+ return false;
+ }
+ }
+ if (n_to_read != 0)
+ input_pending = true;
+#endif
+
+ if (input_pending)
+ write_pending (outbuf, &bpout);
+
+ /* Read more input into INBUF. */
+
+ n_read = safe_read (input_desc, inbuf, insize);
+ if (n_read == SAFE_READ_ERROR)
+ {
+ error (0, errno, "%s", infile);
+ write_pending (outbuf, &bpout);
+ newlines2 = newlines;
+ return false;
+ }
+ if (n_read == 0)
+ {
+ write_pending (outbuf, &bpout);
+ newlines2 = newlines;
+ return true;
+ }
+
+ /* Update the pointers and insert a sentinel at the buffer
+ end. */
+
+ bpin = inbuf;
+ eob = bpin + n_read;
+ *eob = '\n';
+ }
+ else
+ {
+ /* It was a real (not a sentinel) newline. */
+
+ /* Was the last line empty?
+ (i.e. have two or more consecutive newlines been read?) */
+
+ if (++newlines > 0)
+ {
+ if (newlines >= 2)
+ {
+ /* Limit this to 2 here. Otherwise, with lots of
+ consecutive newlines, the counter could wrap
+ around at INT_MAX. */
+ newlines = 2;
+
+ /* Are multiple adjacent empty lines to be substituted
+ by single ditto (-s), and this was the second empty
+ line? */
+ if (squeeze_blank)
+ {
+ ch = *bpin++;
+ continue;
+ }
+ }
+
+ /* Are line numbers to be written at empty lines (-n)? */
+
+ if (number & !number_nonblank)
+ {
+ next_line_num ();
+ bpout = stpcpy (bpout, line_num_print);
+ }
+ }
+
+ /* Output a currency symbol if requested (-e). */
+
+ if (show_ends)
+ *bpout++ = '$';
+
+ /* Output the newline. */
+
+ *bpout++ = '\n';
+ }
+ ch = *bpin++;
+ }
+ while (ch == '\n');
+
+ /* Are we at the beginning of a line, and line numbers are requested? */
+
+ if (newlines >= 0 && number)
+ {
+ next_line_num ();
+ bpout = stpcpy (bpout, line_num_print);
+ }
+
+ /* Here CH cannot contain a newline character. */
+
+ /* The loops below continue until a newline character is found,
+ which means that the buffer is empty or that a proper newline
+ has been found. */
+
+ /* If quoting, i.e. at least one of -v, -e, or -t specified,
+ scan for chars that need conversion. */
+ if (show_nonprinting)
+ {
+ for (;;)
+ {
+ if (ch >= 32)
+ {
+ if (ch < 127)
+ *bpout++ = ch;
+ else if (ch == 127)
+ {
+ *bpout++ = '^';
+ *bpout++ = '?';
+ }
+ else
+ {
+ *bpout++ = 'M';
+ *bpout++ = '-';
+ if (ch >= 128 + 32)
+ {
+ if (ch < 128 + 127)
+ *bpout++ = ch - 128;
+ else
+ {
+ *bpout++ = '^';
+ *bpout++ = '?';
+ }
+ }
+ else
+ {
+ *bpout++ = '^';
+ *bpout++ = ch - 128 + 64;
+ }
+ }
+ }
+ else if (ch == '\t' && !show_tabs)
+ *bpout++ = '\t';
+ else if (ch == '\n')
+ {
+ newlines = -1;
+ break;
+ }
+ else
+ {
+ *bpout++ = '^';
+ *bpout++ = ch + 64;
+ }
+
+ ch = *bpin++;
+ }
+ }
+ else
+ {
+ /* Not quoting, neither of -v, -e, or -t specified. */
+ for (;;)
+ {
+ if (ch == '\t' && show_tabs)
+ {
+ *bpout++ = '^';
+ *bpout++ = ch + 64;
+ }
+ else if (ch != '\n')
+ *bpout++ = ch;
+ else
+ {
+ newlines = -1;
+ break;
+ }
+
+ ch = *bpin++;
+ }
+ }
+ }
+}
+
+int
+main (int argc, char **argv)
+{
+ /* Optimal size of i/o operations of output. */
+ size_t outsize;
+
+ /* Optimal size of i/o operations of input. */
+ size_t insize;
+
+ size_t page_size = getpagesize ();
+
+ /* Pointer to the input buffer. */
+ char *inbuf;
+
+ /* Pointer to the output buffer. */
+ char *outbuf;
+
+ bool ok = true;
+ int c;
+
+ /* Index in argv to processed argument. */
+ int argind;
+
+ /* Device number of the output (file or whatever). */
+ dev_t out_dev;
+
+ /* I-node number of the output. */
+ ino_t out_ino;
+
+ /* True if the output file should not be the same as any input file. */
+ bool check_redirection = true;
+
+ /* Nonzero if we have ever read standard input. */
+ bool have_read_stdin = false;
+
+ struct stat stat_buf;
+
+ /* Variables that are set according to the specified options. */
+ bool number = false;
+ bool number_nonblank = false;
+ bool squeeze_blank = false;
+ bool show_ends = false;
+ bool show_nonprinting = false;
+ bool show_tabs = false;
+ int file_open_mode = O_RDONLY;
+
+ static struct option const long_options[] =
+ {
+ {"number-nonblank", no_argument, NULL, 'b'},
+ {"number", no_argument, NULL, 'n'},
+ {"squeeze-blank", no_argument, NULL, 's'},
+ {"show-nonprinting", no_argument, NULL, 'v'},
+ {"show-ends", no_argument, NULL, 'E'},
+ {"show-tabs", no_argument, NULL, 'T'},
+ {"show-all", no_argument, NULL, 'A'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+ };
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ /* Arrange to close stdout if we exit via the
+ case_GETOPT_HELP_CHAR or case_GETOPT_VERSION_CHAR code.
+ Normally STDOUT_FILENO is used rather than stdout, so
+ close_stdout does nothing. */
+ atexit (close_stdout);
+
+ /* Parse command line options. */
+
+ while ((c = getopt_long (argc, argv, "benstuvAET", long_options, NULL))
+ != -1)
+ {
+ switch (c)
+ {
+ case 'b':
+ number = true;
+ number_nonblank = true;
+ break;
+
+ case 'e':
+ show_ends = true;
+ show_nonprinting = true;
+ break;
+
+ case 'n':
+ number = true;
+ break;
+
+ case 's':
+ squeeze_blank = true;
+ break;
+
+ case 't':
+ show_tabs = true;
+ show_nonprinting = true;
+ break;
+
+ case 'u':
+ /* We provide the -u feature unconditionally. */
+ break;
+
+ case 'v':
+ show_nonprinting = true;
+ break;
+
+ case 'A':
+ show_nonprinting = true;
+ show_ends = true;
+ show_tabs = true;
+ break;
+
+ case 'E':
+ show_ends = true;
+ break;
+
+ case 'T':
+ show_tabs = true;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ /* Get device, i-node number, and optimal blocksize of output. */
+
+ if (fstat (STDOUT_FILENO, &stat_buf) < 0)
+ error (EXIT_FAILURE, errno, _("standard output"));
+
+ outsize = ST_BLKSIZE (stat_buf);
+ /* Input file can be output file for non-regular files.
+ fstat on pipes returns S_IFSOCK on some systems, S_IFIFO
+ on others, so the checking should not be done for those types,
+ and to allow things like cat < /dev/tty > /dev/tty, checking
+ is not done for device files either. */
+
+ if (S_ISREG (stat_buf.st_mode))
+ {
+ out_dev = stat_buf.st_dev;
+ out_ino = stat_buf.st_ino;
+ }
+ else
+ {
+ check_redirection = false;
+#ifdef lint /* Suppress `used before initialized' warning. */
+ out_dev = 0;
+ out_ino = 0;
+#endif
+ }
+
+ if (! (number | show_ends | squeeze_blank))
+ {
+ file_open_mode |= O_BINARY;
+ if (O_BINARY && ! isatty (STDOUT_FILENO))
+ freopen (NULL, "wb", stdout);
+ }
+
+ /* Check if any of the input files are the same as the output file. */
+
+ /* Main loop. */
+
+ infile = "-";
+ argind = optind;
+
+ do
+ {
+ if (argind < argc)
+ infile = argv[argind];
+
+ if (STREQ (infile, "-"))
+ {
+ have_read_stdin = true;
+ input_desc = STDIN_FILENO;
+ if ((file_open_mode & O_BINARY) && ! isatty (STDIN_FILENO))
+ freopen (NULL, "rb", stdin);
+ }
+ else
+ {
+ input_desc = open (infile, file_open_mode);
+ if (input_desc < 0)
+ {
+ error (0, errno, "%s", infile);
+ ok = false;
+ continue;
+ }
+ }
+
+ if (fstat (input_desc, &stat_buf) < 0)
+ {
+ error (0, errno, "%s", infile);
+ ok = false;
+ goto contin;
+ }
+ insize = ST_BLKSIZE (stat_buf);
+
+ /* Compare the device and i-node numbers of this input file with
+ the corresponding values of the (output file associated with)
+ stdout, and skip this input file if they coincide. Input
+ files cannot be redirected to themselves. */
+
+ if (check_redirection
+ && stat_buf.st_dev == out_dev && stat_buf.st_ino == out_ino
+ && (input_desc != STDIN_FILENO))
+ {
+ error (0, 0, _("%s: input file is output file"), infile);
+ ok = false;
+ goto contin;
+ }
+
+ /* Select which version of `cat' to use. If any format-oriented
+ options were given use `cat'; otherwise use `simple_cat'. */
+
+ if (! (number | show_ends | show_nonprinting
+ | show_tabs | squeeze_blank))
+ {
+ insize = max (insize, outsize);
+ inbuf = xmalloc (insize + page_size - 1);
+
+ ok &= simple_cat (ptr_align (inbuf, page_size), insize);
+ }
+ else
+ {
+ inbuf = xmalloc (insize + 1 + page_size - 1);
+
+ /* Why are
+ (OUTSIZE - 1 + INSIZE * 4 + LINE_COUNTER_BUF_LEN + PAGE_SIZE - 1)
+ bytes allocated for the output buffer?
+
+ A test whether output needs to be written is done when the input
+ buffer empties or when a newline appears in the input. After
+ output is written, at most (OUTSIZE - 1) bytes will remain in the
+ buffer. Now INSIZE bytes of input is read. Each input character
+ may grow by a factor of 4 (by the prepending of M-^). If all
+ characters do, and no newlines appear in this block of input, we
+ will have at most (OUTSIZE - 1 + INSIZE * 4) bytes in the buffer.
+ If the last character in the preceding block of input was a
+ newline, a line number may be written (according to the given
+ options) as the first thing in the output buffer. (Done after the
+ new input is read, but before processing of the input begins.)
+ A line number requires seldom more than LINE_COUNTER_BUF_LEN
+ positions.
+
+ Align the output buffer to a page size boundary, for efficency on
+ some paging implementations, so add PAGE_SIZE - 1 bytes to the
+ request to make room for the alignment. */
+
+ outbuf = xmalloc (outsize - 1 + insize * 4 + LINE_COUNTER_BUF_LEN
+ + page_size - 1);
+
+ ok &= cat (ptr_align (inbuf, page_size), insize,
+ ptr_align (outbuf, page_size), outsize, show_nonprinting,
+ show_tabs, number, number_nonblank, show_ends,
+ squeeze_blank);
+
+ free (outbuf);
+ }
+
+ free (inbuf);
+
+ contin:
+ if (!STREQ (infile, "-") && close (input_desc) < 0)
+ {
+ error (0, errno, "%s", infile);
+ ok = false;
+ }
+ }
+ while (++argind < argc);
+
+ if (have_read_stdin && close (STDIN_FILENO) < 0)
+ error (EXIT_FAILURE, errno, _("closing standard input"));
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/chgrp.c b/src/chgrp.c
new file mode 100644
index 0000000..faf58d3
--- /dev/null
+++ b/src/chgrp.c
@@ -0,0 +1,314 @@
+/* chgrp -- change group ownership of files
+ Copyright (C) 89, 90, 91, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
+
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <grp.h>
+#include <getopt.h>
+
+#include "system.h"
+#include "chown-core.h"
+#include "error.h"
+#include "fts_.h"
+#include "group-member.h"
+#include "quote.h"
+#include "root-dev-ino.h"
+#include "xstrtol.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "chgrp"
+
+#define AUTHORS "David MacKenzie", "Jim Meyering"
+
+#if ! HAVE_ENDGRENT
+# define endgrent() ((void) 0)
+#endif
+
+/* The name the program was run with. */
+char *program_name;
+
+/* The argument to the --reference option. Use the group ID of this file.
+ This file must exist. */
+static char *reference_file;
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ DEREFERENCE_OPTION = CHAR_MAX + 1,
+ NO_PRESERVE_ROOT,
+ PRESERVE_ROOT,
+ REFERENCE_FILE_OPTION
+};
+
+static struct option const long_options[] =
+{
+ {"recursive", no_argument, NULL, 'R'},
+ {"changes", no_argument, NULL, 'c'},
+ {"dereference", no_argument, NULL, DEREFERENCE_OPTION},
+ {"no-dereference", no_argument, NULL, 'h'},
+ {"no-preserve-root", no_argument, NULL, NO_PRESERVE_ROOT},
+ {"preserve-root", no_argument, NULL, PRESERVE_ROOT},
+ {"quiet", no_argument, NULL, 'f'},
+ {"silent", no_argument, NULL, 'f'},
+ {"reference", required_argument, NULL, REFERENCE_FILE_OPTION},
+ {"verbose", no_argument, NULL, 'v'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+/* Return the group ID of NAME, or -1 if no name was specified. */
+
+static gid_t
+parse_group (const char *name)
+{
+ gid_t gid = -1;
+
+ if (*name)
+ {
+ struct group *grp = getgrnam (name);
+ if (grp)
+ gid = grp->gr_gid;
+ else
+ {
+ unsigned long int tmp;
+ if (! (xstrtoul (name, NULL, 10, &tmp, "") == LONGINT_OK
+ && tmp <= GID_T_MAX))
+ error (EXIT_FAILURE, 0, _("invalid group %s"), quote (name));
+ gid = tmp;
+ }
+ endgrent (); /* Save a file descriptor. */
+ }
+
+ return gid;
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... GROUP FILE...\n\
+ or: %s [OPTION]... --reference=RFILE FILE...\n\
+"),
+ program_name, program_name);
+ fputs (_("\
+Change the group of each FILE to GROUP.\n\
+With --reference, change the group of each FILE to that of RFILE.\n\
+\n\
+ -c, --changes like verbose but report only when a change is made\n\
+ --dereference affect the referent of each symbolic link (this is\n\
+ the default), rather than the symbolic link itself\n\
+"), stdout);
+ fputs (_("\
+ -h, --no-dereference affect each symbolic link instead of any referenced\n\
+ file (useful only on systems that can change the\n\
+ ownership of a symlink)\n\
+"), stdout);
+ fputs (_("\
+ --no-preserve-root do not treat `/' specially (the default)\n\
+ --preserve-root fail to operate recursively on `/'\n\
+"), stdout);
+ fputs (_("\
+ -f, --silent, --quiet suppress most error messages\n\
+ --reference=RFILE use RFILE's group rather than specifying a\n\
+ GROUP value\n\
+ -R, --recursive operate on files and directories recursively\n\
+ -v, --verbose output a diagnostic for every file processed\n\
+\n\
+"), stdout);
+ fputs (_("\
+The following options modify how a hierarchy is traversed when the -R\n\
+option is also specified. If more than one is specified, only the final\n\
+one takes effect.\n\
+\n\
+ -H if a command line argument is a symbolic link\n\
+ to a directory, traverse it\n\
+ -L traverse every symbolic link to a directory\n\
+ encountered\n\
+ -P do not traverse any symbolic links (default)\n\
+\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\
+\n\
+Examples:\n\
+ %s staff /u Change the group of /u to \"staff\".\n\
+ %s -hR staff /u Change the group of /u and subfiles to \"staff\".\n\
+"),
+ program_name, program_name);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ bool preserve_root = false;
+ gid_t gid;
+
+ /* Bit flags that control how fts works. */
+ int bit_flags = FTS_PHYSICAL;
+
+ /* 1 if --dereference, 0 if --no-dereference, -1 if neither has been
+ specified. */
+ int dereference = -1;
+
+ struct Chown_option chopt;
+ bool ok;
+ int optc;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ chopt_init (&chopt);
+
+ while ((optc = getopt_long (argc, argv, "HLPRcfhv", long_options, NULL))
+ != -1)
+ {
+ switch (optc)
+ {
+ case 'H': /* Traverse command-line symlinks-to-directories. */
+ bit_flags = FTS_COMFOLLOW | FTS_PHYSICAL;
+ break;
+
+ case 'L': /* Traverse all symlinks-to-directories. */
+ bit_flags = FTS_LOGICAL;
+ break;
+
+ case 'P': /* Traverse no symlinks-to-directories. */
+ bit_flags = FTS_PHYSICAL;
+ break;
+
+ case 'h': /* --no-dereference: affect symlinks */
+ dereference = 0;
+ break;
+
+ case DEREFERENCE_OPTION: /* --dereference: affect the referent
+ of each symlink */
+ dereference = 1;
+ break;
+
+ case NO_PRESERVE_ROOT:
+ preserve_root = false;
+ break;
+
+ case PRESERVE_ROOT:
+ preserve_root = true;
+ break;
+
+ case REFERENCE_FILE_OPTION:
+ reference_file = optarg;
+ break;
+
+ case 'R':
+ chopt.recurse = true;
+ break;
+
+ case 'c':
+ chopt.verbosity = V_changes_only;
+ break;
+
+ case 'f':
+ chopt.force_silent = true;
+ break;
+
+ case 'v':
+ chopt.verbosity = V_high;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (chopt.recurse)
+ {
+ if (bit_flags == FTS_PHYSICAL)
+ {
+ if (dereference == 1)
+ error (EXIT_FAILURE, 0,
+ _("-R --dereference requires either -H or -L"));
+ dereference = 0;
+ }
+ }
+ else
+ {
+ bit_flags = FTS_PHYSICAL;
+ }
+ chopt.affect_symlink_referent = (dereference != 0);
+
+ if (argc - optind < (reference_file ? 1 : 2))
+ {
+ if (argc <= optind)
+ error (0, 0, _("missing operand"));
+ else
+ error (0, 0, _("missing operand after %s"), quote (argv[argc - 1]));
+ usage (EXIT_FAILURE);
+ }
+
+ if (reference_file)
+ {
+ struct stat ref_stats;
+ if (stat (reference_file, &ref_stats))
+ error (EXIT_FAILURE, errno, _("failed to get attributes of %s"),
+ quote (reference_file));
+
+ gid = ref_stats.st_gid;
+ chopt.group_name = gid_to_name (ref_stats.st_gid);
+ }
+ else
+ {
+ char *group_name = argv[optind++];
+ chopt.group_name = (*group_name ? group_name : NULL);
+ gid = parse_group (group_name);
+ }
+
+ if (chopt.recurse & preserve_root)
+ {
+ static struct dev_ino dev_ino_buf;
+ chopt.root_dev_ino = get_root_dev_ino (&dev_ino_buf);
+ if (chopt.root_dev_ino == NULL)
+ error (EXIT_FAILURE, errno, _("failed to get attributes of %s"),
+ quote ("/"));
+ }
+
+ ok = chown_files (argv + optind, bit_flags,
+ (uid_t) -1, gid,
+ (uid_t) -1, (gid_t) -1, &chopt);
+
+ chopt_free (&chopt);
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/chmod.c b/src/chmod.c
new file mode 100644
index 0000000..028c882
--- /dev/null
+++ b/src/chmod.c
@@ -0,0 +1,532 @@
+/* chmod -- change permission modes of files
+ Copyright (C) 89, 90, 91, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David MacKenzie <djm@gnu.ai.mit.edu> */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "dev-ino.h"
+#include "error.h"
+#include "filemode.h"
+#include "modechange.h"
+#include "openat.h"
+#include "quote.h"
+#include "quotearg.h"
+#include "root-dev-ino.h"
+#include "xfts.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "chmod"
+
+#define AUTHORS "David MacKenzie", "Jim Meyering"
+
+enum Change_status
+{
+ CH_NOT_APPLIED,
+ CH_SUCCEEDED,
+ CH_FAILED,
+ CH_NO_CHANGE_REQUESTED
+};
+
+enum Verbosity
+{
+ /* Print a message for each file that is processed. */
+ V_high,
+
+ /* Print a message for each file whose attributes we change. */
+ V_changes_only,
+
+ /* Do not be verbose. This is the default. */
+ V_off
+};
+
+/* The name the program was run with. */
+char *program_name;
+
+/* The desired change to the mode. */
+static struct mode_change *change;
+
+/* The initial umask value, if it might be needed. */
+static mode_t umask_value;
+
+/* If true, change the modes of directories recursively. */
+static bool recurse;
+
+/* If true, force silence (no error messages). */
+static bool force_silent;
+
+/* If true, diagnose surprises from naive misuses like "chmod -r file".
+ POSIX allows diagnostics here, as portable code is supposed to use
+ "chmod -- -r file". */
+static bool diagnose_surprises;
+
+/* Level of verbosity. */
+static enum Verbosity verbosity = V_off;
+
+/* Pointer to the device and inode numbers of `/', when --recursive.
+ Otherwise NULL. */
+static struct dev_ino *root_dev_ino;
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ NO_PRESERVE_ROOT = CHAR_MAX + 1,
+ PRESERVE_ROOT,
+ REFERENCE_FILE_OPTION
+};
+
+static struct option const long_options[] =
+{
+ {"changes", no_argument, NULL, 'c'},
+ {"recursive", no_argument, NULL, 'R'},
+ {"no-preserve-root", no_argument, NULL, NO_PRESERVE_ROOT},
+ {"preserve-root", no_argument, NULL, PRESERVE_ROOT},
+ {"quiet", no_argument, NULL, 'f'},
+ {"reference", required_argument, NULL, REFERENCE_FILE_OPTION},
+ {"silent", no_argument, NULL, 'f'},
+ {"verbose", no_argument, NULL, 'v'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+/* Return true if the chmodable permission bits of FILE changed.
+ The old mode was OLD_MODE, but it was changed to NEW_MODE. */
+
+static bool
+mode_changed (char const *file, mode_t old_mode, mode_t new_mode)
+{
+ if (new_mode & (S_ISUID | S_ISGID | S_ISVTX))
+ {
+ /* The new mode contains unusual bits that the call to chmod may
+ have silently cleared. Check whether they actually changed. */
+
+ struct stat new_stats;
+
+ if (stat (file, &new_stats) != 0)
+ {
+ if (!force_silent)
+ error (0, errno, _("getting new attributes of %s"), quote (file));
+ return false;
+ }
+
+ new_mode = new_stats.st_mode;
+ }
+
+ return ((old_mode ^ new_mode) & CHMOD_MODE_BITS) != 0;
+}
+
+/* Tell the user how/if the MODE of FILE has been changed.
+ CHANGED describes what (if anything) has happened. */
+
+static void
+describe_change (const char *file, mode_t mode,
+ enum Change_status changed)
+{
+ char perms[12]; /* "-rwxrwxrwx" ls-style modes. */
+ const char *fmt;
+
+ if (changed == CH_NOT_APPLIED)
+ {
+ printf (_("neither symbolic link %s nor referent has been changed\n"),
+ quote (file));
+ return;
+ }
+
+ strmode (mode, perms);
+ perms[10] = '\0'; /* Remove trailing space. */
+ switch (changed)
+ {
+ case CH_SUCCEEDED:
+ fmt = _("mode of %s changed to %04lo (%s)\n");
+ break;
+ case CH_FAILED:
+ fmt = _("failed to change mode of %s to %04lo (%s)\n");
+ break;
+ case CH_NO_CHANGE_REQUESTED:
+ fmt = _("mode of %s retained as %04lo (%s)\n");
+ break;
+ default:
+ abort ();
+ }
+ printf (fmt, quote (file),
+ (unsigned long int) (mode & CHMOD_MODE_BITS), &perms[1]);
+}
+
+/* Change the mode of FILE.
+ Return true if successful. This function is called
+ once for every file system object that fts encounters. */
+
+static bool
+process_file (FTS *fts, FTSENT *ent)
+{
+ char const *file_full_name = ent->fts_path;
+ char const *file = ent->fts_accpath;
+ const struct stat *file_stats = ent->fts_statp;
+ mode_t old_mode IF_LINT (= 0);
+ mode_t new_mode IF_LINT (= 0);
+ bool ok = true;
+ bool chmod_succeeded = false;
+
+ switch (ent->fts_info)
+ {
+ case FTS_DP:
+ return true;
+
+ case FTS_NS:
+ /* For a top-level file or directory, this FTS_NS (stat failed)
+ indicator is determined at the time of the initial fts_open call.
+ With programs like chmod, chown, and chgrp, that modify
+ permissions, it is possible that the file in question is
+ accessible when control reaches this point. So, if this is
+ the first time we've seen the FTS_NS for this file, tell
+ fts_read to stat it "again". */
+ if (ent->fts_level == 0 && ent->fts_number == 0)
+ {
+ ent->fts_number = 1;
+ fts_set (fts, ent, FTS_AGAIN);
+ return true;
+ }
+ error (0, ent->fts_errno, _("cannot access %s"), quote (file_full_name));
+ ok = false;
+ break;
+
+ case FTS_ERR:
+ error (0, ent->fts_errno, _("%s"), quote (file_full_name));
+ ok = false;
+ break;
+
+ case FTS_DNR:
+ error (0, ent->fts_errno, _("cannot read directory %s"),
+ quote (file_full_name));
+ ok = false;
+ break;
+
+ default:
+ break;
+ }
+
+ if (ok && ROOT_DEV_INO_CHECK (root_dev_ino, file_stats))
+ {
+ ROOT_DEV_INO_WARN (file_full_name);
+ /* Tell fts not to traverse into this hierarchy. */
+ fts_set (fts, ent, FTS_SKIP);
+ /* Ensure that we do not process "/" on the second visit. */
+ ent = fts_read (fts);
+ ok = false;
+ }
+
+ if (ok)
+ {
+ old_mode = file_stats->st_mode;
+ new_mode = mode_adjust (old_mode, S_ISDIR (old_mode) != 0, umask_value,
+ change, NULL);
+
+ if (! S_ISLNK (old_mode))
+ {
+ if (chmodat (fts->fts_cwd_fd, file, new_mode) == 0)
+ chmod_succeeded = true;
+ else
+ {
+ if (! force_silent)
+ error (0, errno, _("changing permissions of %s"),
+ quote (file_full_name));
+ ok = false;
+ }
+ }
+ }
+
+ if (verbosity != V_off)
+ {
+ bool changed = (chmod_succeeded
+ && mode_changed (file, old_mode, new_mode));
+
+ if (changed || verbosity == V_high)
+ {
+ enum Change_status ch_status =
+ (!ok ? CH_FAILED
+ : !chmod_succeeded ? CH_NOT_APPLIED
+ : !changed ? CH_NO_CHANGE_REQUESTED
+ : CH_SUCCEEDED);
+ describe_change (file_full_name, new_mode, ch_status);
+ }
+ }
+
+ if (chmod_succeeded & diagnose_surprises)
+ {
+ mode_t naively_expected_mode =
+ mode_adjust (old_mode, S_ISDIR (old_mode) != 0, 0, change, NULL);
+ if (new_mode & ~naively_expected_mode)
+ {
+ char new_perms[12];
+ char naively_expected_perms[12];
+ strmode (new_mode, new_perms);
+ strmode (naively_expected_mode, naively_expected_perms);
+ new_perms[10] = naively_expected_perms[10] = '\0';
+ error (0, 0,
+ _("%s: new permissions are %s, not %s"),
+ quotearg_colon (file_full_name),
+ new_perms + 1, naively_expected_perms + 1);
+ ok = false;
+ }
+ }
+
+ if ( ! recurse)
+ fts_set (fts, ent, FTS_SKIP);
+
+ return ok;
+}
+
+/* Recursively change the modes of the specified FILES (the last entry
+ of which is NULL). BIT_FLAGS controls how fts works.
+ Return true if successful. */
+
+static bool
+process_files (char **files, int bit_flags)
+{
+ bool ok = true;
+
+ FTS *fts = xfts_open (files, bit_flags, NULL);
+
+ while (1)
+ {
+ FTSENT *ent;
+
+ ent = fts_read (fts);
+ if (ent == NULL)
+ {
+ if (errno != 0)
+ {
+ /* FIXME: try to give a better message */
+ error (0, errno, _("fts_read failed"));
+ ok = false;
+ }
+ break;
+ }
+
+ ok &= process_file (fts, ent);
+ }
+
+ /* Ignore failure, since the only way it can do so is in failing to
+ return to the original directory, and since we're about to exit,
+ that doesn't matter. */
+ fts_close (fts);
+
+ return ok;
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... MODE[,MODE]... FILE...\n\
+ or: %s [OPTION]... OCTAL-MODE FILE...\n\
+ or: %s [OPTION]... --reference=RFILE FILE...\n\
+"),
+ program_name, program_name, program_name);
+ fputs (_("\
+Change the mode of each FILE to MODE.\n\
+\n\
+ -c, --changes like verbose but report only when a change is made\n\
+"), stdout);
+ fputs (_("\
+ --no-preserve-root do not treat `/' specially (the default)\n\
+ --preserve-root fail to operate recursively on `/'\n\
+"), stdout);
+ fputs (_("\
+ -f, --silent, --quiet suppress most error messages\n\
+ -v, --verbose output a diagnostic for every file processed\n\
+ --reference=RFILE use RFILE's mode instead of MODE values\n\
+ -R, --recursive change files and directories recursively\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Parse the ASCII mode given on the command line into a linked list
+ of `struct mode_change' and apply that to each file argument. */
+
+int
+main (int argc, char **argv)
+{
+ char *mode = NULL;
+ size_t mode_len = 0;
+ size_t mode_alloc = 0;
+ bool ok;
+ bool preserve_root = false;
+ char const *reference_file = NULL;
+ int c;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ recurse = force_silent = diagnose_surprises = false;
+
+ while ((c = getopt_long (argc, argv,
+ "Rcfvr::w::x::X::s::t::u::g::o::a::,::+::=::",
+ long_options, NULL))
+ != -1)
+ {
+ switch (c)
+ {
+ case 'r':
+ case 'w':
+ case 'x':
+ case 'X':
+ case 's':
+ case 't':
+ case 'u':
+ case 'g':
+ case 'o':
+ case 'a':
+ case ',':
+ case '+':
+ case '=':
+ /* Support nonportable uses like "chmod -w", but diagnose
+ surprises due to umask confusion. Even though "--", "--r",
+ etc., are valid modes, there is no "case '-'" here since
+ getopt_long reserves leading "--" for long options. */
+ {
+ /* Allocate a mode string (e.g., "-rwx") by concatenating
+ the argument containing this option. If a previous mode
+ string was given, concatenate the previous string, a
+ comma, and the new string (e.g., "-s,-rwx"). */
+
+ char const *arg = argv[optind - 1];
+ size_t arg_len = strlen (arg);
+ size_t mode_comma_len = mode_len + !!mode_len;
+ size_t new_mode_len = mode_comma_len + arg_len;
+ if (mode_alloc <= new_mode_len)
+ {
+ mode_alloc = new_mode_len + 1;
+ mode = X2REALLOC (mode, &mode_alloc);
+ }
+ mode[mode_len] = ',';
+ strcpy (mode + mode_comma_len, arg);
+ mode_len = new_mode_len;
+
+ diagnose_surprises = true;
+ }
+ break;
+ case NO_PRESERVE_ROOT:
+ preserve_root = false;
+ break;
+ case PRESERVE_ROOT:
+ preserve_root = true;
+ break;
+ case REFERENCE_FILE_OPTION:
+ reference_file = optarg;
+ break;
+ case 'R':
+ recurse = true;
+ break;
+ case 'c':
+ verbosity = V_changes_only;
+ break;
+ case 'f':
+ force_silent = true;
+ break;
+ case 'v':
+ verbosity = V_high;
+ break;
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (reference_file)
+ {
+ if (mode)
+ {
+ error (0, 0, _("cannot combine mode and --reference options"));
+ usage (EXIT_FAILURE);
+ }
+ }
+ else
+ {
+ if (!mode)
+ mode = argv[optind++];
+ }
+
+ if (optind >= argc)
+ {
+ if (!mode || mode != argv[optind - 1])
+ error (0, 0, _("missing operand"));
+ else
+ error (0, 0, _("missing operand after %s"), quote (argv[argc - 1]));
+ usage (EXIT_FAILURE);
+ }
+
+ if (reference_file)
+ {
+ change = mode_create_from_ref (reference_file);
+ if (!change)
+ error (EXIT_FAILURE, errno, _("failed to get attributes of %s"),
+ quote (reference_file));
+ }
+ else
+ {
+ change = mode_compile (mode);
+ if (!change)
+ {
+ error (0, 0, _("invalid mode: %s"), quote (mode));
+ usage (EXIT_FAILURE);
+ }
+ umask_value = umask (0);
+ }
+
+ if (recurse & preserve_root)
+ {
+ static struct dev_ino dev_ino_buf;
+ root_dev_ino = get_root_dev_ino (&dev_ino_buf);
+ if (root_dev_ino == NULL)
+ error (EXIT_FAILURE, errno, _("failed to get attributes of %s"),
+ quote ("/"));
+ }
+ else
+ {
+ root_dev_ino = NULL;
+ }
+
+ ok = process_files (argv + optind, FTS_COMFOLLOW | FTS_PHYSICAL);
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/chown-core.c b/src/chown-core.c
new file mode 100644
index 0000000..bd987a8
--- /dev/null
+++ b/src/chown-core.c
@@ -0,0 +1,514 @@
+/* chown-core.c -- core functions for changing ownership.
+ Copyright (C) 2000, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Extracted from chown.c/chgrp.c and librarified by Jim Meyering. */
+
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <grp.h>
+
+#include "system.h"
+#include "chown-core.h"
+#include "error.h"
+#include "inttostr.h"
+#include "openat.h"
+#include "quote.h"
+#include "root-dev-ino.h"
+#include "xfts.h"
+
+#define FTSENT_IS_DIRECTORY(E) \
+ ((E)->fts_info == FTS_D \
+ || (E)->fts_info == FTS_DC \
+ || (E)->fts_info == FTS_DP \
+ || (E)->fts_info == FTS_DNR)
+
+enum RCH_status
+ {
+ /* we called fchown and close, and both succeeded */
+ RC_ok = 2,
+
+ /* required_uid and/or required_gid are specified, but don't match */
+ RC_excluded,
+
+ /* SAME_INODE check failed */
+ RC_inode_changed,
+
+ /* open/fchown isn't needed, isn't safe, or doesn't work due to
+ permissions problems; fall back on chown */
+ RC_do_ordinary_chown,
+
+ /* open, fstat, fchown, or close failed */
+ RC_error
+ };
+
+extern void
+chopt_init (struct Chown_option *chopt)
+{
+ chopt->verbosity = V_off;
+ chopt->root_dev_ino = NULL;
+ chopt->affect_symlink_referent = true;
+ chopt->recurse = false;
+ chopt->force_silent = false;
+ chopt->user_name = NULL;
+ chopt->group_name = NULL;
+}
+
+extern void
+chopt_free (struct Chown_option *chopt ATTRIBUTE_UNUSED)
+{
+ /* Deliberately do not free chopt->user_name or ->group_name.
+ They're not always allocated. */
+}
+
+/* Convert the numeric group-id, GID, to a string stored in xmalloc'd memory,
+ and return it. If there's no corresponding group name, use the decimal
+ representation of the ID. */
+
+extern char *
+gid_to_name (gid_t gid)
+{
+ char buf[INT_BUFSIZE_BOUND (intmax_t)];
+ struct group *grp = getgrgid (gid);
+ return xstrdup (grp ? grp->gr_name
+ : TYPE_SIGNED (gid_t) ? imaxtostr (gid, buf)
+ : umaxtostr (gid, buf));
+}
+
+/* Convert the numeric user-id, UID, to a string stored in xmalloc'd memory,
+ and return it. If there's no corresponding user name, use the decimal
+ representation of the ID. */
+
+extern char *
+uid_to_name (uid_t uid)
+{
+ char buf[INT_BUFSIZE_BOUND (intmax_t)];
+ struct passwd *pwd = getpwuid (uid);
+ return xstrdup (pwd ? pwd->pw_name
+ : TYPE_SIGNED (uid_t) ? imaxtostr (uid, buf)
+ : umaxtostr (uid, buf));
+}
+
+/* Tell the user how/if the user and group of FILE have been changed.
+ If USER is NULL, give the group-oriented messages.
+ CHANGED describes what (if anything) has happened. */
+
+static void
+describe_change (const char *file, enum Change_status changed,
+ char const *user, char const *group)
+{
+ const char *fmt;
+ char const *spec;
+ char *spec_allocated = NULL;
+
+ if (changed == CH_NOT_APPLIED)
+ {
+ printf (_("neither symbolic link %s nor referent has been changed\n"),
+ quote (file));
+ return;
+ }
+
+ if (user)
+ {
+ if (group)
+ {
+ spec_allocated = xmalloc (strlen (user) + 1 + strlen (group) + 1);
+ stpcpy (stpcpy (stpcpy (spec_allocated, user), ":"), group);
+ spec = spec_allocated;
+ }
+ else
+ {
+ spec = user;
+ }
+ }
+ else
+ {
+ spec = group;
+ }
+
+ switch (changed)
+ {
+ case CH_SUCCEEDED:
+ fmt = (user ? _("changed ownership of %s to %s\n")
+ : group ? _("changed group of %s to %s\n")
+ : _("no change to ownership of %s\n"));
+ break;
+ case CH_FAILED:
+ fmt = (user ? _("failed to change ownership of %s to %s\n")
+ : group ? _("failed to change group of %s to %s\n")
+ : _("failed to change ownership of %s\n"));
+ break;
+ case CH_NO_CHANGE_REQUESTED:
+ fmt = (user ? _("ownership of %s retained as %s\n")
+ : group ? _("group of %s retained as %s\n")
+ : _("ownership of %s retained\n"));
+ break;
+ default:
+ abort ();
+ }
+
+ printf (fmt, quote (file), spec);
+
+ free (spec_allocated);
+}
+
+/* Change the owner and/or group of the FILE to UID and/or GID (safely)
+ only if REQUIRED_UID and REQUIRED_GID match the owner and group IDs
+ of FILE. ORIG_ST must be the result of `stat'ing FILE.
+
+ The `safely' part above means that we can't simply use chown(2),
+ since FILE might be replaced with some other file between the time
+ of the preceding stat/lstat and this chown call. So here we open
+ FILE and do everything else via the resulting file descriptor.
+ We first call fstat and verify that the dev/inode match those from
+ the preceding stat call, and only then, if appropriate (given the
+ required_uid and required_gid constraints) do we call fchown.
+
+ Return RC_do_ordinary_chown if we can't open FILE, or if FILE is a
+ special file that might have undesirable side effects when opening.
+ In this case the caller can use the less-safe ordinary chown.
+
+ Return one of the RCH_status values. */
+
+static enum RCH_status
+restricted_chown (int cwd_fd, char const *file,
+ struct stat const *orig_st,
+ uid_t uid, gid_t gid,
+ uid_t required_uid, gid_t required_gid)
+{
+ enum RCH_status status = RC_ok;
+ struct stat st;
+ int open_flags = O_NONBLOCK | O_NOCTTY;
+ int fd;
+
+ if (required_uid == (uid_t) -1 && required_gid == (gid_t) -1)
+ return RC_do_ordinary_chown;
+
+ if (! S_ISREG (orig_st->st_mode))
+ {
+ if (S_ISDIR (orig_st->st_mode))
+ open_flags |= O_DIRECTORY;
+ else
+ return RC_do_ordinary_chown;
+ }
+
+ fd = openat (cwd_fd, file, O_RDONLY | open_flags);
+ if (! (0 <= fd
+ || (errno == EACCES && S_ISREG (orig_st->st_mode)
+ && 0 <= (fd = openat (cwd_fd, file, O_WRONLY | open_flags)))))
+ return (errno == EACCES ? RC_do_ordinary_chown : RC_error);
+
+ if (fstat (fd, &st) != 0)
+ status = RC_error;
+ else if (! SAME_INODE (*orig_st, st))
+ status = RC_inode_changed;
+ else if ((required_uid == (uid_t) -1 || required_uid == st.st_uid)
+ && (required_gid == (gid_t) -1 || required_gid == st.st_gid))
+ {
+ if (fchown (fd, uid, gid) == 0)
+ {
+ status = (close (fd) == 0
+ ? RC_ok : RC_error);
+ return status;
+ }
+ else
+ {
+ status = RC_error;
+ }
+ }
+
+ { /* FIXME: remove these curly braces when we assume C99. */
+ int saved_errno = errno;
+ close (fd);
+ errno = saved_errno;
+ return status;
+ }
+}
+
+/* Change the owner and/or group of the file specified by FTS and ENT
+ to UID and/or GID as appropriate.
+ If REQUIRED_UID is not -1, then skip files with any other user ID.
+ If REQUIRED_GID is not -1, then skip files with any other group ID.
+ CHOPT specifies additional options.
+ Return true if successful. */
+static bool
+change_file_owner (FTS *fts, FTSENT *ent,
+ uid_t uid, gid_t gid,
+ uid_t required_uid, gid_t required_gid,
+ struct Chown_option const *chopt)
+{
+ char const *file_full_name = ent->fts_path;
+ char const *file = ent->fts_accpath;
+ struct stat const *file_stats;
+ struct stat stat_buf;
+ bool ok = true;
+ bool do_chown;
+ bool symlink_changed = true;
+
+ switch (ent->fts_info)
+ {
+ case FTS_D:
+ if (chopt->recurse)
+ {
+ if (ROOT_DEV_INO_CHECK (chopt->root_dev_ino, ent->fts_statp))
+ {
+ /* This happens e.g., with "chown -R --preserve-root 0 /"
+ and with "chown -RH --preserve-root 0 symlink-to-root". */
+ ROOT_DEV_INO_WARN (file_full_name);
+ /* Tell fts not to traverse into this hierarchy. */
+ fts_set (fts, ent, FTS_SKIP);
+ /* Ensure that we do not process "/" on the second visit. */
+ ent = fts_read (fts);
+ return false;
+ }
+ return true;
+ }
+ break;
+
+ case FTS_DP:
+ if (! chopt->recurse)
+ return true;
+ break;
+
+ case FTS_NS:
+ /* For a top-level file or directory, this FTS_NS (stat failed)
+ indicator is determined at the time of the initial fts_open call.
+ With programs like chmod, chown, and chgrp, that modify
+ permissions, it is possible that the file in question is
+ accessible when control reaches this point. So, if this is
+ the first time we've seen the FTS_NS for this file, tell
+ fts_read to stat it "again". */
+ if (ent->fts_level == 0 && ent->fts_number == 0)
+ {
+ ent->fts_number = 1;
+ fts_set (fts, ent, FTS_AGAIN);
+ return true;
+ }
+ error (0, ent->fts_errno, _("cannot access %s"), quote (file_full_name));
+ ok = false;
+ break;
+
+ case FTS_ERR:
+ error (0, ent->fts_errno, _("%s"), quote (file_full_name));
+ ok = false;
+ break;
+
+ case FTS_DNR:
+ error (0, ent->fts_errno, _("cannot read directory %s"),
+ quote (file_full_name));
+ ok = false;
+ break;
+
+ default:
+ break;
+ }
+
+ if (!ok)
+ {
+ do_chown = false;
+ file_stats = NULL;
+ }
+ else if (required_uid == (uid_t) -1 && required_gid == (gid_t) -1
+ && chopt->verbosity == V_off
+ && ! chopt->root_dev_ino
+ && ! chopt->affect_symlink_referent)
+ {
+ do_chown = true;
+ file_stats = ent->fts_statp;
+ }
+ else
+ {
+ file_stats = ent->fts_statp;
+
+ /* If this is a symlink and we're dereferencing them,
+ stat it to get info on the referent. */
+ if (chopt->affect_symlink_referent && S_ISLNK (file_stats->st_mode))
+ {
+ if (fstatat (fts->fts_cwd_fd, file, &stat_buf, 0) != 0)
+ {
+ error (0, errno, _("cannot dereference %s"),
+ quote (file_full_name));
+ ok = false;
+ }
+
+ file_stats = &stat_buf;
+ }
+
+ do_chown = (ok
+ && (required_uid == (uid_t) -1
+ || required_uid == file_stats->st_uid)
+ && (required_gid == (gid_t) -1
+ || required_gid == file_stats->st_gid));
+ }
+
+ /* This happens when chown -LR --preserve-root encounters a symlink-to-/. */
+ if (ok
+ && FTSENT_IS_DIRECTORY (ent)
+ && ROOT_DEV_INO_CHECK (chopt->root_dev_ino, file_stats))
+ {
+ ROOT_DEV_INO_WARN (file_full_name);
+ return false;
+ }
+
+ if (do_chown)
+ {
+ if ( ! chopt->affect_symlink_referent)
+ {
+ ok = (lchownat (fts->fts_cwd_fd, file, uid, gid) == 0);
+
+ /* Ignore any error due to lack of support; POSIX requires
+ this behavior for top-level symbolic links with -h, and
+ implies that it's required for all symbolic links. */
+ if (!ok && errno == EOPNOTSUPP)
+ {
+ ok = true;
+ symlink_changed = false;
+ }
+ }
+ else
+ {
+ /* If possible, avoid a race condition with --from=O:G and without the
+ (-h) --no-dereference option. If fts's stat call determined
+ that the uid/gid of FILE matched the --from=O:G-selected
+ owner and group IDs, blindly using chown(2) here could lead
+ chown(1) or chgrp(1) mistakenly to dereference a *symlink*
+ to an arbitrary file that an attacker had moved into the
+ place of FILE during the window between the stat and
+ chown(2) calls. If FILE is a regular file or a directory
+ that can be opened, this race condition can be avoided safely. */
+
+ enum RCH_status err
+ = restricted_chown (fts->fts_cwd_fd, file, file_stats, uid, gid,
+ required_uid, required_gid);
+ switch (err)
+ {
+ case RC_ok:
+ break;
+
+ case RC_do_ordinary_chown:
+ ok = (chownat (fts->fts_cwd_fd, file, uid, gid) == 0);
+ break;
+
+ case RC_error:
+ ok = false;
+ break;
+
+ case RC_inode_changed:
+ /* FIXME: give a diagnostic in this case? */
+ case RC_excluded:
+ do_chown = false;
+ ok = false;
+ break;
+
+ default:
+ abort ();
+ }
+ }
+
+ /* On some systems (e.g., Linux-2.4.x),
+ the chown function resets the `special' permission bits.
+ Do *not* restore those bits; doing so would open a window in
+ which a malicious user, M, could subvert a chown command run
+ by some other user and operating on files in a directory
+ where M has write access. */
+
+ if (do_chown && !ok && ! chopt->force_silent)
+ error (0, errno, (uid != (uid_t) -1
+ ? _("changing ownership of %s")
+ : _("changing group of %s")),
+ quote (file_full_name));
+ }
+
+ if (chopt->verbosity != V_off)
+ {
+ bool changed =
+ ((do_chown & ok & symlink_changed)
+ && ! ((uid == (uid_t) -1 || uid == file_stats->st_uid)
+ && (gid == (gid_t) -1 || gid == file_stats->st_gid)));
+
+ if (changed || chopt->verbosity == V_high)
+ {
+ enum Change_status ch_status =
+ (!ok ? CH_FAILED
+ : !symlink_changed ? CH_NOT_APPLIED
+ : !changed ? CH_NO_CHANGE_REQUESTED
+ : CH_SUCCEEDED);
+ describe_change (file_full_name, ch_status,
+ chopt->user_name, chopt->group_name);
+ }
+ }
+
+ if ( ! chopt->recurse)
+ fts_set (fts, ent, FTS_SKIP);
+
+ return ok;
+}
+
+/* Change the owner and/or group of the specified FILES.
+ BIT_FLAGS specifies how to treat each symlink-to-directory
+ that is encountered during a recursive traversal.
+ CHOPT specifies additional options.
+ If UID is not -1, then change the owner id of each file to UID.
+ If GID is not -1, then change the group id of each file to GID.
+ If REQUIRED_UID and/or REQUIRED_GID is not -1, then change only
+ files with user ID and group ID that match the non-(-1) value(s).
+ Return true if successful. */
+extern bool
+chown_files (char **files, int bit_flags,
+ uid_t uid, gid_t gid,
+ uid_t required_uid, gid_t required_gid,
+ struct Chown_option const *chopt)
+{
+ bool ok = true;
+
+ /* Use lstat and stat only if they're needed. */
+ int stat_flags = ((required_uid != (uid_t) -1 || required_gid != (gid_t) -1
+ || chopt->affect_symlink_referent
+ || chopt->verbosity != V_off)
+ ? 0
+ : FTS_NOSTAT);
+
+ FTS *fts = xfts_open (files, bit_flags | stat_flags, NULL);
+
+ while (1)
+ {
+ FTSENT *ent;
+
+ ent = fts_read (fts);
+ if (ent == NULL)
+ {
+ if (errno != 0)
+ {
+ /* FIXME: try to give a better message */
+ error (0, errno, _("fts_read failed"));
+ ok = false;
+ }
+ break;
+ }
+
+ ok &= change_file_owner (fts, ent, uid, gid,
+ required_uid, required_gid, chopt);
+ }
+
+ /* Ignore failure, since the only way it can do so is in failing to
+ return to the original directory, and since we're about to exit,
+ that doesn't matter. */
+ fts_close (fts);
+
+ return ok;
+}
diff --git a/src/chown-core.h b/src/chown-core.h
new file mode 100644
index 0000000..1c83cfc
--- /dev/null
+++ b/src/chown-core.h
@@ -0,0 +1,87 @@
+/* chown-core.h -- types and prototypes shared by chown and chgrp.
+
+ Copyright (C) 2000, 2003, 2004 Free Software Foundation.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef CHOWN_CORE_H
+# define CHOWN_CORE_H
+
+# include "dev-ino.h"
+
+enum Change_status
+{
+ CH_NOT_APPLIED = 1,
+ CH_SUCCEEDED,
+ CH_FAILED,
+ CH_NO_CHANGE_REQUESTED
+};
+
+enum Verbosity
+{
+ /* Print a message for each file that is processed. */
+ V_high,
+
+ /* Print a message for each file whose attributes we change. */
+ V_changes_only,
+
+ /* Do not be verbose. This is the default. */
+ V_off
+};
+
+struct Chown_option
+{
+ /* Level of verbosity. */
+ enum Verbosity verbosity;
+
+ /* If nonzero, change the ownership of directories recursively. */
+ bool recurse;
+
+ /* Pointer to the device and inode numbers of `/', when --recursive.
+ Need not be freed. Otherwise NULL. */
+ struct dev_ino *root_dev_ino;
+
+ /* This corresponds to the --dereference (opposite of -h) option. */
+ bool affect_symlink_referent;
+
+ /* If nonzero, force silence (no error messages). */
+ bool force_silent;
+
+ /* The name of the user to which ownership of the files is being given. */
+ char *user_name;
+
+ /* The name of the group to which ownership of the files is being given. */
+ char *group_name;
+};
+
+void
+chopt_init (struct Chown_option *);
+
+void
+chopt_free (struct Chown_option *);
+
+char *
+gid_to_name (gid_t);
+
+char *
+uid_to_name (uid_t);
+
+bool
+chown_files (char **files, int bit_flags,
+ uid_t uid, gid_t gid,
+ uid_t required_uid, gid_t required_gid,
+ struct Chown_option const *chopt);
+
+#endif /* CHOWN_CORE_H */
diff --git a/src/chown.c b/src/chown.c
new file mode 100644
index 0000000..63a32f5
--- /dev/null
+++ b/src/chown.c
@@ -0,0 +1,338 @@
+/* chown -- change user and group ownership of files
+ Copyright (C) 89, 90, 91, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/*
+ | user
+ | unchanged explicit
+ -------------|-------------------------+-------------------------|
+ g unchanged | --- | chown u |
+ r |-------------------------+-------------------------|
+ o explicit | chgrp g or chown .g | chown u.g |
+ u |-------------------------+-------------------------|
+ p from passwd| --- | chown u. |
+ |-------------------------+-------------------------|
+
+ Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
+
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <getopt.h>
+
+#include "system.h"
+#include "chown-core.h"
+#include "error.h"
+#include "fts_.h"
+#include "quote.h"
+#include "root-dev-ino.h"
+#include "userspec.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "chown"
+
+#define AUTHORS "David MacKenzie", "Jim Meyering"
+
+/* The name the program was run with. */
+char *program_name;
+
+/* The argument to the --reference option. Use the owner and group IDs
+ of this file. This file must exist. */
+static char *reference_file;
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ DEREFERENCE_OPTION = CHAR_MAX + 1,
+ FROM_OPTION,
+ NO_PRESERVE_ROOT,
+ PRESERVE_ROOT,
+ REFERENCE_FILE_OPTION
+};
+
+static struct option const long_options[] =
+{
+ {"recursive", no_argument, NULL, 'R'},
+ {"changes", no_argument, NULL, 'c'},
+ {"dereference", no_argument, NULL, DEREFERENCE_OPTION},
+ {"from", required_argument, NULL, FROM_OPTION},
+ {"no-dereference", no_argument, NULL, 'h'},
+ {"no-preserve-root", no_argument, NULL, NO_PRESERVE_ROOT},
+ {"preserve-root", no_argument, NULL, PRESERVE_ROOT},
+ {"quiet", no_argument, NULL, 'f'},
+ {"silent", no_argument, NULL, 'f'},
+ {"reference", required_argument, NULL, REFERENCE_FILE_OPTION},
+ {"verbose", no_argument, NULL, 'v'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [OWNER][:[GROUP]] FILE...\n\
+ or: %s [OPTION]... --reference=RFILE FILE...\n\
+"),
+ program_name, program_name);
+ fputs (_("\
+Change the owner and/or group of each FILE to OWNER and/or GROUP.\n\
+With --reference, change the owner and group of each FILE to those of RFILE.\n\
+\n\
+ -c, --changes like verbose but report only when a change is made\n\
+ --dereference affect the referent of each symbolic link (this is\n\
+ the default), rather than the symbolic link itself\n\
+"), stdout);
+ fputs (_("\
+ -h, --no-dereference affect each symbolic link instead of any referenced\n\
+ file (useful only on systems that can change the\n\
+ ownership of a symlink)\n\
+"), stdout);
+ fputs (_("\
+ --from=CURRENT_OWNER:CURRENT_GROUP\n\
+ change the owner and/or group of each file only if\n\
+ its current owner and/or group match those specified\n\
+ here. Either may be omitted, in which case a match\n\
+ is not required for the omitted attribute.\n\
+"), stdout);
+ fputs (_("\
+ --no-preserve-root do not treat `/' specially (the default)\n\
+ --preserve-root fail to operate recursively on `/'\n\
+"), stdout);
+ fputs (_("\
+ -f, --silent, --quiet suppress most error messages\n\
+ --reference=RFILE use RFILE's owner and group rather than\n\
+ specifying OWNER:GROUP values\n\
+ -R, --recursive operate on files and directories recursively\n\
+ -v, --verbose output a diagnostic for every file processed\n\
+\n\
+"), stdout);
+ fputs (_("\
+The following options modify how a hierarchy is traversed when the -R\n\
+option is also specified. If more than one is specified, only the final\n\
+one takes effect.\n\
+\n\
+ -H if a command line argument is a symbolic link\n\
+ to a directory, traverse it\n\
+ -L traverse every symbolic link to a directory\n\
+ encountered\n\
+ -P do not traverse any symbolic links (default)\n\
+\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+Owner is unchanged if missing. Group is unchanged if missing, but changed\n\
+to login group if implied by a `:' following a symbolic OWNER.\n\
+OWNER and GROUP may be numeric as well as symbolic.\n\
+"), stdout);
+ printf (_("\
+\n\
+Examples:\n\
+ %s root /u Change the owner of /u to \"root\".\n\
+ %s root:staff /u Likewise, but also change its group to \"staff\".\n\
+ %s -hR root /u Change the owner of /u and subfiles to \"root\".\n\
+"),
+ program_name, program_name, program_name);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ bool preserve_root = false;
+
+ uid_t uid = -1; /* Specified uid; -1 if not to be changed. */
+ gid_t gid = -1; /* Specified gid; -1 if not to be changed. */
+
+ /* Change the owner (group) of a file only if it has this uid (gid).
+ -1 means there's no restriction. */
+ uid_t required_uid = -1;
+ gid_t required_gid = -1;
+
+ /* Bit flags that control how fts works. */
+ int bit_flags = FTS_PHYSICAL;
+
+ /* 1 if --dereference, 0 if --no-dereference, -1 if neither has been
+ specified. */
+ int dereference = -1;
+
+ struct Chown_option chopt;
+ bool ok;
+ int optc;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ chopt_init (&chopt);
+
+ while ((optc = getopt_long (argc, argv, "HLPRcfhv", long_options, NULL))
+ != -1)
+ {
+ switch (optc)
+ {
+ case 'H': /* Traverse command-line symlinks-to-directories. */
+ bit_flags = FTS_COMFOLLOW | FTS_PHYSICAL;
+ break;
+
+ case 'L': /* Traverse all symlinks-to-directories. */
+ bit_flags = FTS_LOGICAL;
+ break;
+
+ case 'P': /* Traverse no symlinks-to-directories. */
+ bit_flags = FTS_PHYSICAL;
+ break;
+
+ case 'h': /* --no-dereference: affect symlinks */
+ dereference = 0;
+ break;
+
+ case DEREFERENCE_OPTION: /* --dereference: affect the referent
+ of each symlink */
+ dereference = 1;
+ break;
+
+ case NO_PRESERVE_ROOT:
+ preserve_root = false;
+ break;
+
+ case PRESERVE_ROOT:
+ preserve_root = true;
+ break;
+
+ case REFERENCE_FILE_OPTION:
+ reference_file = optarg;
+ break;
+
+ case FROM_OPTION:
+ {
+ char *u_dummy, *g_dummy;
+ const char *e = parse_user_spec (optarg,
+ &required_uid, &required_gid,
+ &u_dummy, &g_dummy);
+ if (e)
+ error (EXIT_FAILURE, 0, "%s: %s", quote (optarg), e);
+ break;
+ }
+
+ case 'R':
+ chopt.recurse = true;
+ break;
+
+ case 'c':
+ chopt.verbosity = V_changes_only;
+ break;
+
+ case 'f':
+ chopt.force_silent = true;
+ break;
+
+ case 'v':
+ chopt.verbosity = V_high;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (chopt.recurse)
+ {
+ if (bit_flags == FTS_PHYSICAL)
+ {
+ if (dereference == 1)
+ error (EXIT_FAILURE, 0,
+ _("-R --dereference requires either -H or -L"));
+ dereference = 0;
+ }
+ }
+ else
+ {
+ bit_flags = FTS_PHYSICAL;
+ }
+ chopt.affect_symlink_referent = (dereference != 0);
+
+ if (argc - optind < (reference_file ? 1 : 2))
+ {
+ if (argc <= optind)
+ error (0, 0, _("missing operand"));
+ else
+ error (0, 0, _("missing operand after %s"), quote (argv[argc - 1]));
+ usage (EXIT_FAILURE);
+ }
+
+ if (reference_file)
+ {
+ struct stat ref_stats;
+ if (stat (reference_file, &ref_stats))
+ error (EXIT_FAILURE, errno, _("failed to get attributes of %s"),
+ quote (reference_file));
+
+ uid = ref_stats.st_uid;
+ gid = ref_stats.st_gid;
+ chopt.user_name = uid_to_name (ref_stats.st_uid);
+ chopt.group_name = gid_to_name (ref_stats.st_gid);
+ }
+ else
+ {
+ const char *e = parse_user_spec (argv[optind], &uid, &gid,
+ &chopt.user_name, &chopt.group_name);
+ if (e)
+ error (EXIT_FAILURE, 0, "%s: %s", quote (argv[optind]), e);
+
+ /* If a group is specified but no user, set the user name to the
+ empty string so that diagnostics say "ownership :GROUP"
+ rather than "group GROUP". */
+ if (!chopt.user_name && chopt.group_name)
+ chopt.user_name = "";
+
+ optind++;
+ }
+
+ if (chopt.recurse & preserve_root)
+ {
+ static struct dev_ino dev_ino_buf;
+ chopt.root_dev_ino = get_root_dev_ino (&dev_ino_buf);
+ if (chopt.root_dev_ino == NULL)
+ error (EXIT_FAILURE, errno, _("failed to get attributes of %s"),
+ quote ("/"));
+ }
+
+ ok = chown_files (argv + optind, bit_flags,
+ uid, gid,
+ required_uid, required_gid, &chopt);
+
+ chopt_free (&chopt);
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/chroot.c b/src/chroot.c
new file mode 100644
index 0000000..d2ae0e5
--- /dev/null
+++ b/src/chroot.c
@@ -0,0 +1,118 @@
+/* chroot -- run command or shell with special root directory
+ Copyright (C) 95, 96, 1997, 1999-2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Roland McGrath. */
+
+#include <config.h>
+#include <getopt.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "error.h"
+#include "long-options.h"
+#include "quote.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "chroot"
+
+#define AUTHORS "Roland McGrath"
+
+/* The name this program was run with, for error messages. */
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s NEWROOT [COMMAND...]\n\
+ or: %s OPTION\n\
+"), program_name, program_name);
+ fputs (_("\
+Run COMMAND with root directory set to NEWROOT.\n\
+\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+If no command is given, run ``${SHELL} -i'' (default: /bin/sh).\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ initialize_exit_failure (EXIT_FAIL);
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "+", NULL, NULL) != -1)
+ usage (EXIT_FAIL);
+
+ if (argc <= optind)
+ {
+ error (0, 0, _("missing operand"));
+ usage (EXIT_FAIL);
+ }
+
+ if (chroot (argv[optind]) != 0)
+ error (EXIT_FAIL, errno, _("cannot change root directory to %s"), argv[1]);
+
+ if (chdir ("/"))
+ error (EXIT_FAIL, errno, _("cannot chdir to root directory"));
+
+ if (argc == optind + 1)
+ {
+ /* No command. Run an interactive shell. */
+ char *shell = getenv ("SHELL");
+ if (shell == NULL)
+ shell = "/bin/sh";
+ argv[0] = shell;
+ argv[1] = "-i";
+ argv[2] = NULL;
+ }
+ else
+ {
+ /* The following arguments give the command. */
+ argv += optind + 1;
+ }
+
+ /* Execute the given command. */
+ execvp (argv[0], argv);
+
+ {
+ int exit_status = (errno == ENOENT ? EXIT_ENOENT : EXIT_CANNOT_INVOKE);
+ error (0, errno, _("cannot run command %s"), quote (argv[0]));
+ exit (exit_status);
+ }
+}
diff --git a/src/cksum.c b/src/cksum.c
new file mode 100644
index 0000000..d93877f
--- /dev/null
+++ b/src/cksum.c
@@ -0,0 +1,316 @@
+/* cksum -- calculate and print POSIX checksums and sizes of files
+ Copyright (C) 92, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Q. Frank Xia, qx@math.columbia.edu.
+ Cosmetic changes and reorganization by David MacKenzie, djm@gnu.ai.mit.edu.
+
+ Usage: cksum [file...]
+
+ The code segment between "#ifdef CRCTAB" and "#else" is the code
+ which calculates the "crctab". It is included for those who want
+ verify the correctness of the "crctab". To recreate the "crctab",
+ do something like the following:
+
+ cc -DCRCTAB -o crctab cksum.c
+ crctab > crctab.h
+
+ This software is compatible with neither the System V nor the BSD
+ `sum' program. It is supposed to conform to POSIX, except perhaps
+ for foreign language support. Any inconsistency with the standard
+ (other than foreign language support) is a bug. */
+
+#include <config.h>
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "cksum"
+
+#define AUTHORS "Q. Frank Xia"
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <stdint.h>
+#include "system.h"
+
+#ifdef CRCTAB
+
+# define BIT(x) ((uint_fast32_t) 1 << (x))
+# define SBIT BIT (31)
+
+/* The generating polynomial is
+
+ 32 26 23 22 16 12 11 10 8 7 5 4 2 1
+ G(X)=X + X + X + X + X + X + X + X + X + X + X + X + X + X + 1
+
+ The i bit in GEN is set if X^i is a summand of G(X) except X^32. */
+
+# define GEN (BIT (26) | BIT (23) | BIT (22) | BIT (16) | BIT (12) \
+ | BIT (11) | BIT (10) | BIT (8) | BIT (7) | BIT (5) \
+ | BIT (4) | BIT (2) | BIT (1) | BIT (0))
+
+static uint_fast32_t r[8];
+
+static void
+fill_r (void)
+{
+ int i;
+
+ r[0] = GEN;
+ for (i = 1; i < 8; i++)
+ r[i] = (r[i - 1] << 1) ^ ((r[i - 1] & SBIT) ? GEN : 0);
+}
+
+static uint_fast32_t
+crc_remainder (int m)
+{
+ uint_fast32_t rem = 0;
+ int i;
+
+ for (i = 0; i < 8; i++)
+ if (BIT (i) & m)
+ rem ^= r[i];
+
+ return rem & 0xFFFFFFFF; /* Make it run on 64-bit machine. */
+}
+
+int
+main (void)
+{
+ int i;
+
+ fill_r ();
+ printf ("static uint_fast32_t const crctab[256] =\n{\n 0x00000000");
+ for (i = 0; i < 51; i++)
+ {
+ printf (",\n 0x%08x, 0x%08x, 0x%08x, 0x%08x, 0x%08x",
+ crc_remainder (i * 5 + 1), crc_remainder (i * 5 + 2),
+ crc_remainder (i * 5 + 3), crc_remainder (i * 5 + 4),
+ crc_remainder (i * 5 + 5));
+ }
+ printf ("\n};\n");
+ exit (EXIT_SUCCESS);
+}
+
+#else /* !CRCTAB */
+
+# include <getopt.h>
+# include "long-options.h"
+# include "error.h"
+# include "inttostr.h"
+
+/* Number of bytes to read at once. */
+# define BUFLEN (1 << 16)
+
+/* The name this program was run with. */
+char *program_name;
+
+static uint_fast32_t const crctab[256] =
+{
+ 0x00000000,
+ 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,
+ 0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6,
+ 0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd,
+ 0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, 0x5f15adac,
+ 0x5bd4b01b, 0x569796c2, 0x52568b75, 0x6a1936c8, 0x6ed82b7f,
+ 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, 0x709f7b7a,
+ 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,
+ 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58,
+ 0xbaea46ef, 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033,
+ 0xa4ad16ea, 0xa06c0b5d, 0xd4326d90, 0xd0f37027, 0xddb056fe,
+ 0xd9714b49, 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95,
+ 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, 0xe13ef6f4,
+ 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0,
+ 0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5,
+ 0x2ac12072, 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16,
+ 0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, 0x7897ab07,
+ 0x7c56b6b0, 0x71159069, 0x75d48dde, 0x6b93dddb, 0x6f52c06c,
+ 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1,
+ 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
+ 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b,
+ 0xbb60adfc, 0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698,
+ 0x832f1041, 0x87ee0df6, 0x99a95df3, 0x9d684044, 0x902b669d,
+ 0x94ea7b2a, 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e,
+ 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, 0xc6bcf05f,
+ 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34,
+ 0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80,
+ 0x644fc637, 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb,
+ 0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, 0x5c007b8a,
+ 0x58c1663d, 0x558240e4, 0x51435d53, 0x251d3b9e, 0x21dc2629,
+ 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, 0x3f9b762c,
+ 0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,
+ 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e,
+ 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65,
+ 0xeba91bbc, 0xef68060b, 0xd727bbb6, 0xd3e6a601, 0xdea580d8,
+ 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3,
+ 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, 0xae3afba2,
+ 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71,
+ 0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74,
+ 0x857130c3, 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640,
+ 0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, 0x7b827d21,
+ 0x7f436096, 0x7200464f, 0x76c15bf8, 0x68860bfd, 0x6c47164a,
+ 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, 0x18197087,
+ 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
+ 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d,
+ 0x2056cd3a, 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce,
+ 0xcc2b1d17, 0xc8ea00a0, 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb,
+ 0xdbee767c, 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18,
+ 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, 0x89b8fd09,
+ 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662,
+ 0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf,
+ 0xa2f33668, 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
+};
+
+/* Nonzero if any of the files read were the standard input. */
+static bool have_read_stdin;
+
+/* Calculate and print the checksum and length in bytes
+ of file FILE, or of the standard input if FILE is "-".
+ If PRINT_NAME is true, print FILE next to the checksum and size.
+ Return true if successful. */
+
+static bool
+cksum (const char *file, bool print_name)
+{
+ unsigned char buf[BUFLEN];
+ uint_fast32_t crc = 0;
+ uintmax_t length = 0;
+ size_t bytes_read;
+ FILE *fp;
+ char length_buf[INT_BUFSIZE_BOUND (uintmax_t)];
+ char const *hp;
+
+ if (STREQ (file, "-"))
+ {
+ fp = stdin;
+ have_read_stdin = true;
+ if (O_BINARY && ! isatty (STDIN_FILENO))
+ freopen (NULL, "rb", stdin);
+ }
+ else
+ {
+ fp = fopen (file, (O_BINARY ? "rb" : "r"));
+ if (fp == NULL)
+ {
+ error (0, errno, "%s", file);
+ return false;
+ }
+ }
+
+ while ((bytes_read = fread (buf, 1, BUFLEN, fp)) > 0)
+ {
+ unsigned char *cp = buf;
+
+ if (length + bytes_read < length)
+ error (EXIT_FAILURE, 0, _("%s: file too long"), file);
+ length += bytes_read;
+ while (bytes_read--)
+ crc = (crc << 8) ^ crctab[((crc >> 24) ^ *cp++) & 0xFF];
+ if (feof (fp))
+ break;
+ }
+
+ if (ferror (fp))
+ {
+ error (0, errno, "%s", file);
+ if (!STREQ (file, "-"))
+ fclose (fp);
+ return false;
+ }
+
+ if (!STREQ (file, "-") && fclose (fp) == EOF)
+ {
+ error (0, errno, "%s", file);
+ return false;
+ }
+
+ hp = umaxtostr (length, length_buf);
+
+ for (; length; length >>= 8)
+ crc = (crc << 8) ^ crctab[((crc >> 24) ^ length) & 0xFF];
+
+ crc = ~crc & 0xFFFFFFFF;
+
+ if (print_name)
+ printf ("%u %s %s\n", (unsigned int) crc, hp, file);
+ else
+ printf ("%u %s\n", (unsigned int) crc, hp);
+
+ if (ferror (stdout))
+ error (EXIT_FAILURE, errno, "-: %s", _("write error"));
+
+ return true;
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [FILE]...\n\
+ or: %s [OPTION]\n\
+"),
+ program_name, program_name);
+ fputs (_("\
+Print CRC checksum and byte counts of each FILE.\n\
+\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ int i;
+ bool ok;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "", NULL, NULL) != -1)
+ usage (EXIT_FAILURE);
+
+ have_read_stdin = false;
+
+ if (optind == argc)
+ ok = cksum ("-", false);
+ else
+ {
+ ok = true;
+ for (i = optind; i < argc; i++)
+ ok &= cksum (argv[i], true);
+ }
+
+ if (have_read_stdin && fclose (stdin) == EOF)
+ error (EXIT_FAILURE, errno, "-");
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+
+#endif /* !CRCTAB */
diff --git a/src/comm.c b/src/comm.c
new file mode 100644
index 0000000..9b7e03f
--- /dev/null
+++ b/src/comm.c
@@ -0,0 +1,285 @@
+/* comm -- compare two sorted files line by line.
+ Copyright (C) 86, 90, 91, 1995-2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Richard Stallman and David MacKenzie. */
+
+#include <config.h>
+
+#include <getopt.h>
+#include <sys/types.h>
+#include "system.h"
+#include "linebuffer.h"
+#include "error.h"
+#include "hard-locale.h"
+#include "quote.h"
+#include "stdio--.h"
+#include "xmemcoll.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "comm"
+
+#define AUTHORS "Richard Stallman", "David MacKenzie"
+
+/* Undefine, to avoid warning about redefinition on some systems. */
+#undef min
+#define min(x, y) ((x) < (y) ? (x) : (y))
+
+/* The name this program was run with. */
+char *program_name;
+
+/* True if the LC_COLLATE locale is hard. */
+static bool hard_LC_COLLATE;
+
+/* If true, print lines that are found only in file 1. */
+static bool only_file_1;
+
+/* If true, print lines that are found only in file 2. */
+static bool only_file_2;
+
+/* If true, print lines that are found in both files. */
+static bool both;
+
+static struct option const long_options[] =
+{
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... FILE1 FILE2\n\
+"),
+ program_name);
+ fputs (_("\
+Compare sorted files FILE1 and FILE2 line by line.\n\
+"), stdout);
+ fputs (_("\
+\n\
+With no options, produce three-column output. Column one contains\n\
+lines unique to FILE1, column two contains lines unique to FILE2,\n\
+and column three contains lines common to both files.\n\
+"), stdout);
+ fputs (_("\
+\n\
+ -1 suppress lines unique to FILE1\n\
+ -2 suppress lines unique to FILE2\n\
+ -3 suppress lines that appear in both files\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Output the line in linebuffer LINE to stream STREAM
+ provided the switches say it should be output.
+ CLASS is 1 for a line found only in file 1,
+ 2 for a line only in file 2, 3 for a line in both. */
+
+static void
+writeline (const struct linebuffer *line, FILE *stream, int class)
+{
+ switch (class)
+ {
+ case 1:
+ if (!only_file_1)
+ return;
+ break;
+
+ case 2:
+ if (!only_file_2)
+ return;
+ /* Print a TAB if we are printing lines from file 1. */
+ if (only_file_1)
+ putc ('\t', stream);
+ break;
+
+ case 3:
+ if (!both)
+ return;
+ /* Print a TAB if we are printing lines from file 1. */
+ if (only_file_1)
+ putc ('\t', stream);
+ /* Print a TAB if we are printing lines from file 2. */
+ if (only_file_2)
+ putc ('\t', stream);
+ break;
+ }
+
+ fwrite (line->buffer, sizeof (char), line->length, stream);
+}
+
+/* Compare INFILES[0] and INFILES[1].
+ If either is "-", use the standard input for that file.
+ Assume that each input file is sorted;
+ merge them and output the result. */
+
+static void
+compare_files (char **infiles)
+{
+ /* For each file, we have one linebuffer in lb1. */
+ struct linebuffer lb1[2];
+
+ /* thisline[i] points to the linebuffer holding the next available line
+ in file i, or is NULL if there are no lines left in that file. */
+ struct linebuffer *thisline[2];
+
+ /* streams[i] holds the input stream for file i. */
+ FILE *streams[2];
+
+ int i;
+
+ /* Initialize the storage. */
+ for (i = 0; i < 2; i++)
+ {
+ initbuffer (&lb1[i]);
+ thisline[i] = &lb1[i];
+ streams[i] = (STREQ (infiles[i], "-") ? stdin : fopen (infiles[i], "r"));
+ if (!streams[i])
+ error (EXIT_FAILURE, errno, "%s", infiles[i]);
+
+ thisline[i] = readlinebuffer (thisline[i], streams[i]);
+ if (ferror (streams[i]))
+ error (EXIT_FAILURE, errno, "%s", infiles[i]);
+ }
+
+ while (thisline[0] || thisline[1])
+ {
+ int order;
+
+ /* Compare the next available lines of the two files. */
+
+ if (!thisline[0])
+ order = 1;
+ else if (!thisline[1])
+ order = -1;
+ else
+ {
+ if (hard_LC_COLLATE)
+ order = xmemcoll (thisline[0]->buffer, thisline[0]->length - 1,
+ thisline[1]->buffer, thisline[1]->length - 1);
+ else
+ {
+ size_t len = min (thisline[0]->length, thisline[1]->length) - 1;
+ order = memcmp (thisline[0]->buffer, thisline[1]->buffer, len);
+ if (order == 0)
+ order = (thisline[0]->length < thisline[1]->length
+ ? -1
+ : thisline[0]->length != thisline[1]->length);
+ }
+ }
+
+ /* Output the line that is lesser. */
+ if (order == 0)
+ writeline (thisline[1], stdout, 3);
+ else if (order > 0)
+ writeline (thisline[1], stdout, 2);
+ else
+ writeline (thisline[0], stdout, 1);
+
+ /* Step the file the line came from.
+ If the files match, step both files. */
+ if (order >= 0)
+ {
+ thisline[1] = readlinebuffer (thisline[1], streams[1]);
+ if (ferror (streams[1]))
+ error (EXIT_FAILURE, errno, "%s", infiles[1]);
+ }
+ if (order <= 0)
+ {
+ thisline[0] = readlinebuffer (thisline[0], streams[0]);
+ if (ferror (streams[0]))
+ error (EXIT_FAILURE, errno, "%s", infiles[0]);
+ }
+ }
+
+ for (i = 0; i < 2; i++)
+ if (fclose (streams[i]) != 0)
+ error (EXIT_FAILURE, errno, "%s", infiles[i]);
+}
+
+int
+main (int argc, char **argv)
+{
+ int c;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+ hard_LC_COLLATE = hard_locale (LC_COLLATE);
+
+ atexit (close_stdout);
+
+ only_file_1 = true;
+ only_file_2 = true;
+ both = true;
+
+ while ((c = getopt_long (argc, argv, "123", long_options, NULL)) != -1)
+ switch (c)
+ {
+ case '1':
+ only_file_1 = false;
+ break;
+
+ case '2':
+ only_file_2 = false;
+ break;
+
+ case '3':
+ both = false;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+
+ if (argc - optind < 2)
+ {
+ if (argc <= optind)
+ error (0, 0, _("missing operand"));
+ else
+ error (0, 0, _("missing operand after %s"), quote (argv[argc - 1]));
+ usage (EXIT_FAILURE);
+ }
+
+ if (2 < argc - optind)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind + 2]));
+ usage (EXIT_FAILURE);
+ }
+
+ compare_files (argv + optind);
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/copy.c b/src/copy.c
new file mode 100644
index 0000000..4bdb75c
--- /dev/null
+++ b/src/copy.c
@@ -0,0 +1,2007 @@
+/* copy.c -- core functions for copying files and directories
+ Copyright (C) 89, 90, 91, 1995-2007 Free Software Foundation.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Extracted from cp.c and librarified by Jim Meyering. */
+
+#include <config.h>
+#include <stdio.h>
+#include <assert.h>
+#include <sys/types.h>
+
+#if HAVE_HURD_H
+# include <hurd.h>
+#endif
+#if HAVE_PRIV_H
+# include <priv.h>
+#endif
+
+#include "system.h"
+#include "acl.h"
+#include "backupfile.h"
+#include "buffer-lcm.h"
+#include "copy.h"
+#include "cp-hash.h"
+#include "euidaccess.h"
+#include "error.h"
+#include "fcntl--.h"
+#include "filemode.h"
+#include "filenamecat.h"
+#include "full-write.h"
+#include "getpagesize.h"
+#include "hash.h"
+#include "hash-pjw.h"
+#include "lchmod.h"
+#include "quote.h"
+#include "same.h"
+#include "savedir.h"
+#include "stat-time.h"
+#include "utimecmp.h"
+#include "utimens.h"
+#include "xreadlink.h"
+#include "yesno.h"
+
+#ifndef HAVE_FCHOWN
+# define HAVE_FCHOWN false
+# define fchown(fd, uid, gid) (-1)
+#endif
+
+#define SAME_OWNER(A, B) ((A).st_uid == (B).st_uid)
+#define SAME_GROUP(A, B) ((A).st_gid == (B).st_gid)
+#define SAME_OWNER_AND_GROUP(A, B) (SAME_OWNER (A, B) && SAME_GROUP (A, B))
+
+#define UNWRITABLE(File_name, File_mode) \
+ ( /* euidaccess is not meaningful for symlinks */ \
+ ! S_ISLNK (File_mode) \
+ && euidaccess (File_name, W_OK) != 0)
+
+struct dir_list
+{
+ struct dir_list *parent;
+ ino_t ino;
+ dev_t dev;
+};
+
+/* Describe a just-created or just-renamed destination file. */
+struct F_triple
+{
+ char *name;
+ ino_t st_ino;
+ dev_t st_dev;
+};
+
+/* Initial size of the above hash table. */
+#define DEST_INFO_INITIAL_CAPACITY 61
+
+static bool copy_internal (char const *src_name, char const *dst_name,
+ bool new_dst, dev_t device,
+ struct dir_list *ancestors,
+ const struct cp_options *x,
+ bool command_line_arg,
+ bool *copy_into_self,
+ bool *rename_succeeded);
+
+/* Pointers to the file names: they're used in the diagnostic that is issued
+ when we detect the user is trying to copy a directory into itself. */
+static char const *top_level_src_name;
+static char const *top_level_dst_name;
+
+/* The invocation name of this program. */
+extern char *program_name;
+
+/* FIXME: describe */
+/* FIXME: rewrite this to use a hash table so we avoid the quadratic
+ performance hit that's probably noticeable only on trees deeper
+ than a few hundred levels. See use of active_dir_map in remove.c */
+
+static bool
+is_ancestor (const struct stat *sb, const struct dir_list *ancestors)
+{
+ while (ancestors != 0)
+ {
+ if (ancestors->ino == sb->st_ino && ancestors->dev == sb->st_dev)
+ return true;
+ ancestors = ancestors->parent;
+ }
+ return false;
+}
+
+/* Read the contents of the directory SRC_NAME_IN, and recursively
+ copy the contents to DST_NAME_IN. NEW_DST is true if
+ DST_NAME_IN is a directory that was created previously in the
+ recursion. SRC_SB and ANCESTORS describe SRC_NAME_IN.
+ Set *COPY_INTO_SELF if SRC_NAME_IN is a parent of
+ (or the same as) DST_NAME_IN; otherwise, clear it.
+ Return true if successful. */
+
+static bool
+copy_dir (char const *src_name_in, char const *dst_name_in, bool new_dst,
+ const struct stat *src_sb, struct dir_list *ancestors,
+ const struct cp_options *x, bool *copy_into_self)
+{
+ char *name_space;
+ char *namep;
+ struct cp_options non_command_line_options = *x;
+ bool ok = true;
+
+ name_space = savedir (src_name_in);
+ if (name_space == NULL)
+ {
+ /* This diagnostic is a bit vague because savedir can fail in
+ several different ways. */
+ error (0, errno, _("cannot access %s"), quote (src_name_in));
+ return false;
+ }
+
+ /* For cp's -H option, dereference command line arguments, but do not
+ dereference symlinks that are found via recursive traversal. */
+ if (x->dereference == DEREF_COMMAND_LINE_ARGUMENTS)
+ non_command_line_options.dereference = DEREF_NEVER;
+
+ namep = name_space;
+ while (*namep != '\0')
+ {
+ bool local_copy_into_self;
+ char *src_name = file_name_concat (src_name_in, namep, NULL);
+ char *dst_name = file_name_concat (dst_name_in, namep, NULL);
+
+ ok &= copy_internal (src_name, dst_name, new_dst, src_sb->st_dev,
+ ancestors, &non_command_line_options, false,
+ &local_copy_into_self, NULL);
+ *copy_into_self |= local_copy_into_self;
+
+ free (dst_name);
+ free (src_name);
+
+ namep += strlen (namep) + 1;
+ }
+ free (name_space);
+ return ok;
+}
+
+/* Set the owner and owning group of DEST_DESC to the st_uid and
+ st_gid fields of SRC_SB. If DEST_DESC is undefined (-1), set
+ the owner and owning group of DST_NAME instead. DEST_DESC must
+ refer to the same file as DEST_NAME if defined.
+ Return 1 if the syscall succeeds, 0 if it fails but it's OK
+ not to preserve ownership, -1 otherwise. */
+
+static int
+set_owner (const struct cp_options *x, char const *dst_name, int dest_desc,
+ uid_t uid, gid_t gid)
+{
+ if (HAVE_FCHOWN && dest_desc != -1)
+ {
+ if (fchown (dest_desc, uid, gid) == 0)
+ return 1;
+ }
+ else
+ {
+ if (chown (dst_name, uid, gid) == 0)
+ return 1;
+ }
+
+ if (! chown_failure_ok (x))
+ {
+ error (0, errno, _("failed to preserve ownership for %s"),
+ quote (dst_name));
+ if (x->require_preserve)
+ return -1;
+ }
+
+ return 0;
+}
+
+/* Set the st_author field of DEST_DESC to the st_author field of
+ SRC_SB. If DEST_DESC is undefined (-1), set the st_author field
+ of DST_NAME instead. DEST_DESC must refer to the same file as
+ DEST_NAME if defined. */
+
+static void
+set_author (const char *dst_name, int dest_desc, const struct stat *src_sb)
+{
+#if HAVE_STRUCT_STAT_ST_AUTHOR
+ /* Preserve the st_author field. */
+ file_t file = (dest_desc < 0
+ ? file_name_lookup (dst_name, 0, 0)
+ : getdport (dest_desc));
+ if (file == MACH_PORT_NULL)
+ error (0, errno, _("failed to lookup file %s"), quote (dst_name));
+ else
+ {
+ error_t err = file_chauthor (file, src_sb->st_author);
+ if (err)
+ error (0, err, _("failed to preserve authorship for %s"),
+ quote (dst_name));
+ mach_port_deallocate (mach_task_self (), file);
+ }
+#endif
+}
+
+/* Change the file mode bits of the file identified by DESC or NAME to MODE.
+ Use DESC if DESC is valid and fchmod is available, NAME otherwise. */
+
+static int
+fchmod_or_lchmod (int desc, char const *name, mode_t mode)
+{
+#if HAVE_FCHMOD
+ if (0 <= desc)
+ return fchmod (desc, mode);
+#endif
+ return lchmod (name, mode);
+}
+
+/* Copy a regular file from SRC_NAME to DST_NAME.
+ If the source file contains holes, copies holes and blocks of zeros
+ in the source file as holes in the destination file.
+ (Holes are read as zeroes by the `read' system call.)
+ When creating the destination, use DST_MODE & ~OMITTED_PERMISSIONS
+ as the third argument in the call to open, adding
+ OMITTED_PERMISSIONS after copying as needed.
+ X provides many option settings.
+ Return true if successful.
+ *NEW_DST is as in copy_internal.
+ SRC_SB is the result of calling XSTAT (aka stat) on SRC_NAME. */
+
+static bool
+copy_reg (char const *src_name, char const *dst_name,
+ const struct cp_options *x,
+ mode_t dst_mode, mode_t omitted_permissions, bool *new_dst,
+ struct stat const *src_sb)
+{
+ char *buf;
+ char *buf_alloc = NULL;
+ int dest_desc;
+ int source_desc;
+ mode_t src_mode = src_sb->st_mode;
+ struct stat sb;
+ struct stat src_open_sb;
+ bool return_val = true;
+
+ source_desc = open (src_name, O_RDONLY | O_BINARY);
+ if (source_desc < 0)
+ {
+ error (0, errno, _("cannot open %s for reading"), quote (src_name));
+ return false;
+ }
+
+ if (fstat (source_desc, &src_open_sb) != 0)
+ {
+ error (0, errno, _("cannot fstat %s"), quote (src_name));
+ return_val = false;
+ goto close_src_desc;
+ }
+
+ /* Compare the source dev/ino from the open file to the incoming,
+ saved ones obtained via a previous call to stat. */
+ if (! SAME_INODE (*src_sb, src_open_sb))
+ {
+ error (0, 0,
+ _("skipping file %s, as it was replaced while being copied"),
+ quote (src_name));
+ return_val = false;
+ goto close_src_desc;
+ }
+
+ /* The semantics of the following open calls are mandated
+ by the specs for both cp and mv. */
+ if (! *new_dst)
+ {
+ dest_desc = open (dst_name, O_WRONLY | O_TRUNC | O_BINARY);
+
+ if (dest_desc < 0 && x->unlink_dest_after_failed_open)
+ {
+ if (unlink (dst_name) != 0)
+ {
+ error (0, errno, _("cannot remove %s"), quote (dst_name));
+ return_val = false;
+ goto close_src_desc;
+ }
+ if (x->verbose)
+ printf (_("removed %s\n"), quote (dst_name));
+
+ /* Tell caller that the destination file was unlinked. */
+ *new_dst = true;
+ }
+ }
+
+ if (*new_dst)
+ dest_desc = open (dst_name, O_WRONLY | O_CREAT | O_EXCL | O_BINARY,
+ dst_mode & ~omitted_permissions);
+ else
+ omitted_permissions = 0;
+
+ if (dest_desc < 0)
+ {
+ error (0, errno, _("cannot create regular file %s"), quote (dst_name));
+ return_val = false;
+ goto close_src_desc;
+ }
+
+ if (fstat (dest_desc, &sb) != 0)
+ {
+ error (0, errno, _("cannot fstat %s"), quote (dst_name));
+ return_val = false;
+ goto close_src_and_dst_desc;
+ }
+
+ if (! (S_ISREG (src_open_sb.st_mode) && src_open_sb.st_size == 0))
+ {
+ typedef uintptr_t word;
+ off_t n_read_total = 0;
+
+ /* Choose a suitable buffer size; it may be adjusted later. */
+ size_t buf_alignment = lcm (getpagesize (), sizeof (word));
+ size_t buf_alignment_slop = sizeof (word) + buf_alignment - 1;
+ size_t buf_size = ST_BLKSIZE (sb);
+
+ /* Deal with sparse files. */
+ bool last_write_made_hole = false;
+ bool make_holes = false;
+
+ if (S_ISREG (sb.st_mode))
+ {
+ /* Even with --sparse=always, try to create holes only
+ if the destination is a regular file. */
+ if (x->sparse_mode == SPARSE_ALWAYS)
+ make_holes = true;
+
+#if HAVE_STRUCT_STAT_ST_BLOCKS
+ /* Use a heuristic to determine whether SRC_NAME contains any sparse
+ blocks. If the file has fewer blocks than would normally be
+ needed for a file of its size, then at least one of the blocks in
+ the file is a hole. */
+ if (x->sparse_mode == SPARSE_AUTO && S_ISREG (src_open_sb.st_mode)
+ && ST_NBLOCKS (src_open_sb) < src_open_sb.st_size / ST_NBLOCKSIZE)
+ make_holes = true;
+#endif
+ }
+
+ /* If not making a sparse file, try to use a more-efficient
+ buffer size. */
+ if (! make_holes)
+ {
+ /* These days there's no point ever messing with buffers smaller
+ than 8 KiB. It would be nice to configure SMALL_BUF_SIZE
+ dynamically for this host and pair of files, but there doesn't
+ seem to be a good way to get readahead info portably. */
+ enum { SMALL_BUF_SIZE = 8 * 1024 };
+
+ /* Compute the least common multiple of the input and output
+ buffer sizes, adjusting for outlandish values. */
+ size_t blcm_max = MIN (SIZE_MAX, SSIZE_MAX) - buf_alignment_slop;
+ size_t blcm = buffer_lcm (ST_BLKSIZE (src_open_sb), buf_size,
+ blcm_max);
+
+ /* Do not use a block size that is too small. */
+ buf_size = MAX (SMALL_BUF_SIZE, blcm);
+
+ /* Do not bother with a buffer larger than the input file, plus one
+ byte to make sure the file has not grown while reading it. */
+ if (S_ISREG (src_open_sb.st_mode) && src_open_sb.st_size < buf_size)
+ buf_size = src_open_sb.st_size + 1;
+
+ /* However, stick with a block size that is a positive multiple of
+ blcm, overriding the above adjustments. Watch out for
+ overflow. */
+ buf_size += blcm - 1;
+ buf_size -= buf_size % blcm;
+ if (buf_size == 0 || blcm_max < buf_size)
+ buf_size = blcm;
+ }
+
+ /* Make a buffer with space for a sentinel at the end. */
+ buf_alloc = xmalloc (buf_size + buf_alignment_slop);
+ buf = ptr_align (buf_alloc, buf_alignment);
+
+ for (;;)
+ {
+ word *wp = NULL;
+
+ ssize_t n_read = read (source_desc, buf, buf_size);
+ if (n_read < 0)
+ {
+#ifdef EINTR
+ if (errno == EINTR)
+ continue;
+#endif
+ error (0, errno, _("reading %s"), quote (src_name));
+ return_val = false;
+ goto close_src_and_dst_desc;
+ }
+ if (n_read == 0)
+ break;
+
+ n_read_total += n_read;
+
+ if (make_holes)
+ {
+ char *cp;
+
+ /* Sentinel to stop loop. */
+ buf[n_read] = '\1';
+#ifdef lint
+ /* Usually, buf[n_read] is not the byte just before a "word"
+ (aka uintptr_t) boundary. In that case, the word-oriented
+ test below (*wp++ == 0) would read some uninitialized bytes
+ after the sentinel. To avoid false-positive reports about
+ this condition (e.g., from a tool like valgrind), set the
+ remaining bytes -- to any value. */
+ memset (buf + n_read + 1, 0, sizeof (word) - 1);
+#endif
+
+ /* Find first nonzero *word*, or the word with the sentinel. */
+
+ wp = (word *) buf;
+ while (*wp++ == 0)
+ continue;
+
+ /* Find the first nonzero *byte*, or the sentinel. */
+
+ cp = (char *) (wp - 1);
+ while (*cp++ == 0)
+ continue;
+
+ if (cp <= buf + n_read)
+ /* Clear to indicate that a normal write is needed. */
+ wp = NULL;
+ else
+ {
+ /* We found the sentinel, so the whole input block was zero.
+ Make a hole. */
+ if (lseek (dest_desc, n_read, SEEK_CUR) < 0)
+ {
+ error (0, errno, _("cannot lseek %s"), quote (dst_name));
+ return_val = false;
+ goto close_src_and_dst_desc;
+ }
+ last_write_made_hole = true;
+ }
+ }
+
+ if (!wp)
+ {
+ size_t n = n_read;
+ if (full_write (dest_desc, buf, n) != n)
+ {
+ error (0, errno, _("writing %s"), quote (dst_name));
+ return_val = false;
+ goto close_src_and_dst_desc;
+ }
+ last_write_made_hole = false;
+
+ /* A short read on a regular file means EOF. */
+ if (n_read != buf_size && S_ISREG (src_open_sb.st_mode))
+ break;
+ }
+ }
+
+ /* If the file ends with a `hole', we need to do something to record
+ the length of the file. On modern systems, calling ftruncate does
+ the job. On systems without native ftruncate support, we have to
+ write a byte at the ending position. Otherwise the kernel would
+ truncate the file at the end of the last write operation. */
+
+ if (last_write_made_hole)
+ {
+ if (HAVE_FTRUNCATE
+ ? /* ftruncate sets the file size,
+ so there is no need for a write. */
+ ftruncate (dest_desc, n_read_total) < 0
+ : /* Seek backwards one character and write a null. */
+ (lseek (dest_desc, (off_t) -1, SEEK_CUR) < 0L
+ || full_write (dest_desc, "", 1) != 1))
+ {
+ error (0, errno, _("writing %s"), quote (dst_name));
+ return_val = false;
+ goto close_src_and_dst_desc;
+ }
+ }
+ }
+
+ if (x->preserve_timestamps)
+ {
+ struct timespec timespec[2];
+ timespec[0] = get_stat_atime (src_sb);
+ timespec[1] = get_stat_mtime (src_sb);
+
+ if (futimens (dest_desc, dst_name, timespec) != 0)
+ {
+ error (0, errno, _("preserving times for %s"), quote (dst_name));
+ if (x->require_preserve)
+ {
+ return_val = false;
+ goto close_src_and_dst_desc;
+ }
+ }
+ }
+
+ if (x->preserve_ownership && ! SAME_OWNER_AND_GROUP (*src_sb, sb))
+ {
+ switch (set_owner (x, dst_name, dest_desc,
+ src_sb->st_uid, src_sb->st_gid))
+ {
+ case -1:
+ return_val = false;
+ goto close_src_and_dst_desc;
+
+ case 0:
+ src_mode &= ~ (S_ISUID | S_ISGID | S_ISVTX);
+ break;
+ }
+ }
+
+ set_author (dst_name, dest_desc, src_sb);
+
+ if (x->preserve_mode || x->move_mode)
+ {
+ if (copy_acl (src_name, source_desc, dst_name, dest_desc, src_mode) != 0
+ && x->require_preserve)
+ return_val = false;
+ }
+ else if (x->set_mode)
+ {
+ if (set_acl (dst_name, dest_desc, x->mode) != 0)
+ return_val = false;
+ }
+ else if (omitted_permissions)
+ {
+ omitted_permissions &= ~ cached_umask ();
+ if (omitted_permissions
+ && fchmod_or_lchmod (dest_desc, dst_name, dst_mode) != 0)
+ {
+ error (0, errno, _("preserving permissions for %s"),
+ quote (dst_name));
+ if (x->require_preserve)
+ return_val = false;
+ }
+ }
+
+close_src_and_dst_desc:
+ if (close (dest_desc) < 0)
+ {
+ error (0, errno, _("closing %s"), quote (dst_name));
+ return_val = false;
+ }
+close_src_desc:
+ if (close (source_desc) < 0)
+ {
+ error (0, errno, _("closing %s"), quote (src_name));
+ return_val = false;
+ }
+
+ free (buf_alloc);
+ return return_val;
+}
+
+/* Return true if it's ok that the source and destination
+ files are the `same' by some measure. The goal is to avoid
+ making the `copy' operation remove both copies of the file
+ in that case, while still allowing the user to e.g., move or
+ copy a regular file onto a symlink that points to it.
+ Try to minimize the cost of this function in the common case.
+ Set *RETURN_NOW if we've determined that the caller has no more
+ work to do and should return successfully, right away.
+
+ Set *UNLINK_SRC if we've determined that the caller wants to do
+ `rename (a, b)' where `a' and `b' are distinct hard links to the same
+ file. In that case, the caller should try to unlink `a' and then return
+ successfully. Ideally, we wouldn't have to do that, and we'd be
+ able to rely on rename to remove the source file. However, POSIX
+ mistakenly requires that such a rename call do *nothing* and return
+ successfully. */
+
+static bool
+same_file_ok (char const *src_name, struct stat const *src_sb,
+ char const *dst_name, struct stat const *dst_sb,
+ const struct cp_options *x, bool *return_now, bool *unlink_src)
+{
+ const struct stat *src_sb_link;
+ const struct stat *dst_sb_link;
+ struct stat tmp_dst_sb;
+ struct stat tmp_src_sb;
+
+ bool same_link;
+ bool same = SAME_INODE (*src_sb, *dst_sb);
+
+ *return_now = false;
+ *unlink_src = false;
+
+ /* FIXME: this should (at the very least) be moved into the following
+ if-block. More likely, it should be removed, because it inhibits
+ making backups. But removing it will result in a change in behavior
+ that will probably have to be documented -- and tests will have to
+ be updated. */
+ if (same && x->hard_link)
+ {
+ *return_now = true;
+ return true;
+ }
+
+ if (x->dereference == DEREF_NEVER)
+ {
+ same_link = same;
+
+ /* If both the source and destination files are symlinks (and we'll
+ know this here IFF preserving symlinks), then it's ok -- as long
+ as they are distinct. */
+ if (S_ISLNK (src_sb->st_mode) && S_ISLNK (dst_sb->st_mode))
+ return ! same_name (src_name, dst_name);
+
+ src_sb_link = src_sb;
+ dst_sb_link = dst_sb;
+ }
+ else
+ {
+ if (!same)
+ return true;
+
+ if (lstat (dst_name, &tmp_dst_sb) != 0
+ || lstat (src_name, &tmp_src_sb) != 0)
+ return true;
+
+ src_sb_link = &tmp_src_sb;
+ dst_sb_link = &tmp_dst_sb;
+
+ same_link = SAME_INODE (*src_sb_link, *dst_sb_link);
+
+ /* If both are symlinks, then it's ok, but only if the destination
+ will be unlinked before being opened. This is like the test
+ above, but with the addition of the unlink_dest_before_opening
+ conjunct because otherwise, with two symlinks to the same target,
+ we'd end up truncating the source file. */
+ if (S_ISLNK (src_sb_link->st_mode) && S_ISLNK (dst_sb_link->st_mode)
+ && x->unlink_dest_before_opening)
+ return true;
+ }
+
+ /* The backup code ensures there's a copy, so it's usually ok to
+ remove any destination file. One exception is when both
+ source and destination are the same directory entry. In that
+ case, moving the destination file aside (in making the backup)
+ would also rename the source file and result in an error. */
+ if (x->backup_type != no_backups)
+ {
+ if (!same_link)
+ {
+ /* In copy mode when dereferencing symlinks, if the source is a
+ symlink and the dest is not, then backing up the destination
+ (moving it aside) would make it a dangling symlink, and the
+ subsequent attempt to open it in copy_reg would fail with
+ a misleading diagnostic. Avoid that by returning zero in
+ that case so the caller can make cp (or mv when it has to
+ resort to reading the source file) fail now. */
+
+ /* FIXME-note: even with the following kludge, we can still provoke
+ the offending diagnostic. It's just a little harder to do :-)
+ $ rm -f a b c; touch c; ln -s c b; ln -s b a; cp -b a b
+ cp: cannot open `a' for reading: No such file or directory
+ That's misleading, since a subsequent `ls' shows that `a'
+ is still there.
+ One solution would be to open the source file *before* moving
+ aside the destination, but that'd involve a big rewrite. */
+ if ( ! x->move_mode
+ && x->dereference != DEREF_NEVER
+ && S_ISLNK (src_sb_link->st_mode)
+ && ! S_ISLNK (dst_sb_link->st_mode))
+ return false;
+
+ return true;
+ }
+
+ return ! same_name (src_name, dst_name);
+ }
+
+#if 0
+ /* FIXME: use or remove */
+
+ /* If we're making a backup, we'll detect the problem case in
+ copy_reg because SRC_NAME will no longer exist. Allowing
+ the test to be deferred lets cp do some useful things.
+ But when creating hardlinks and SRC_NAME is a symlink
+ but DST_NAME is not we must test anyway. */
+ if (x->hard_link
+ || !S_ISLNK (src_sb_link->st_mode)
+ || S_ISLNK (dst_sb_link->st_mode))
+ return true;
+
+ if (x->dereference != DEREF_NEVER)
+ return true;
+#endif
+
+ /* They may refer to the same file if we're in move mode and the
+ target is a symlink. That is ok, since we remove any existing
+ destination file before opening it -- via `rename' if they're on
+ the same file system, via `unlink (DST_NAME)' otherwise.
+ It's also ok if they're distinct hard links to the same file. */
+ if (x->move_mode || x->unlink_dest_before_opening)
+ {
+ if (S_ISLNK (dst_sb_link->st_mode))
+ return true;
+
+ if (same_link
+ && 1 < dst_sb_link->st_nlink
+ && ! same_name (src_name, dst_name))
+ {
+ if (x->move_mode)
+ {
+ *unlink_src = true;
+ *return_now = true;
+ }
+ return true;
+ }
+ }
+
+ /* If neither is a symlink, then it's ok as long as they aren't
+ hard links to the same file. */
+ if (!S_ISLNK (src_sb_link->st_mode) && !S_ISLNK (dst_sb_link->st_mode))
+ {
+ if (!SAME_INODE (*src_sb_link, *dst_sb_link))
+ return true;
+
+ /* If they are the same file, it's ok if we're making hard links. */
+ if (x->hard_link)
+ {
+ *return_now = true;
+ return true;
+ }
+ }
+
+ /* It's ok to remove a destination symlink. But that works only when we
+ unlink before opening the destination and when the source and destination
+ files are on the same partition. */
+ if (x->unlink_dest_before_opening
+ && S_ISLNK (dst_sb_link->st_mode))
+ return dst_sb_link->st_dev == src_sb_link->st_dev;
+
+ if (x->dereference == DEREF_NEVER)
+ {
+ if ( ! S_ISLNK (src_sb_link->st_mode))
+ tmp_src_sb = *src_sb_link;
+ else if (stat (src_name, &tmp_src_sb) != 0)
+ return true;
+
+ if ( ! S_ISLNK (dst_sb_link->st_mode))
+ tmp_dst_sb = *dst_sb_link;
+ else if (stat (dst_name, &tmp_dst_sb) != 0)
+ return true;
+
+ if ( ! SAME_INODE (tmp_src_sb, tmp_dst_sb))
+ return true;
+
+ /* FIXME: shouldn't this be testing whether we're making symlinks? */
+ if (x->hard_link)
+ {
+ *return_now = true;
+ return true;
+ }
+ }
+
+ return false;
+}
+
+static void
+overwrite_prompt (char const *dst_name, struct stat const *dst_sb)
+{
+ if (euidaccess (dst_name, W_OK) != 0)
+ {
+ char perms[12]; /* "-rwxrwxrwx " ls-style modes. */
+ strmode (dst_sb->st_mode, perms);
+ perms[10] = '\0';
+ fprintf (stderr,
+ _("%s: try to overwrite %s, overriding mode %04lo (%s)? "),
+ program_name, quote (dst_name),
+ (unsigned long int) (dst_sb->st_mode & CHMOD_MODE_BITS),
+ &perms[1]);
+ }
+ else
+ {
+ fprintf (stderr, _("%s: overwrite %s? "),
+ program_name, quote (dst_name));
+ }
+}
+
+/* Hash an F_triple. */
+static size_t
+triple_hash (void const *x, size_t table_size)
+{
+ struct F_triple const *p = x;
+
+ /* Also take the name into account, so that when moving N hard links to the
+ same file (all listed on the command line) all into the same directory,
+ we don't experience any N^2 behavior. */
+ /* FIXME-maybe: is it worth the overhead of doing this
+ just to avoid N^2 in such an unusual case? N would have
+ to be very large to make the N^2 factor noticable, and
+ one would probably encounter a limit on the length of
+ a command line before it became a problem. */
+ size_t tmp = hash_pjw (p->name, table_size);
+
+ /* Ignoring the device number here should be fine. */
+ return (tmp | p->st_ino) % table_size;
+}
+
+/* Hash an F_triple. */
+static size_t
+triple_hash_no_name (void const *x, size_t table_size)
+{
+ struct F_triple const *p = x;
+
+ /* Ignoring the device number here should be fine. */
+ return p->st_ino % table_size;
+}
+
+/* Compare two F_triple structs. */
+static bool
+triple_compare (void const *x, void const *y)
+{
+ struct F_triple const *a = x;
+ struct F_triple const *b = y;
+ return (SAME_INODE (*a, *b) && same_name (a->name, b->name)) ? true : false;
+}
+
+/* Free an F_triple. */
+static void
+triple_free (void *x)
+{
+ struct F_triple *a = x;
+ free (a->name);
+ free (a);
+}
+
+/* Initialize the hash table implementing a set of F_triple entries
+ corresponding to destination files. */
+extern void
+dest_info_init (struct cp_options *x)
+{
+ x->dest_info
+ = hash_initialize (DEST_INFO_INITIAL_CAPACITY,
+ NULL,
+ triple_hash,
+ triple_compare,
+ triple_free);
+}
+
+/* Initialize the hash table implementing a set of F_triple entries
+ corresponding to source files listed on the command line. */
+extern void
+src_info_init (struct cp_options *x)
+{
+
+ /* Note that we use triple_hash_no_name here.
+ Contrast with the use of triple_hash above.
+ That is necessary because a source file may be specified
+ in many different ways. We want to warn about this
+ cp a a d/
+ as well as this:
+ cp a ./a d/
+ */
+ x->src_info
+ = hash_initialize (DEST_INFO_INITIAL_CAPACITY,
+ NULL,
+ triple_hash_no_name,
+ triple_compare,
+ triple_free);
+}
+
+/* Return true if there is an entry in hash table, HT,
+ for the file described by FILE and STATS. */
+static bool
+seen_file (Hash_table const *ht, char const *file,
+ struct stat const *stats)
+{
+ struct F_triple new_ent;
+
+ if (ht == NULL)
+ return false;
+
+ new_ent.name = (char *) file;
+ new_ent.st_ino = stats->st_ino;
+ new_ent.st_dev = stats->st_dev;
+
+ return !!hash_lookup (ht, &new_ent);
+}
+
+/* Record destination file, FILE, and dev/ino from *STATS,
+ in the hash table, HT. If HT is NULL, return immediately.
+ If STATS is NULL, call lstat on FILE to get the device
+ and inode numbers. If that lstat fails, simply return.
+ If memory allocation fails, exit immediately. */
+static void
+record_file (Hash_table *ht, char const *file,
+ struct stat const *stats)
+{
+ struct F_triple *ent;
+
+ if (ht == NULL)
+ return;
+
+ ent = xmalloc (sizeof *ent);
+ ent->name = xstrdup (file);
+ if (stats)
+ {
+ ent->st_ino = stats->st_ino;
+ ent->st_dev = stats->st_dev;
+ }
+ else
+ {
+ struct stat sb;
+ if (lstat (file, &sb) != 0)
+ return;
+ ent->st_ino = sb.st_ino;
+ ent->st_dev = sb.st_dev;
+ }
+
+ {
+ struct F_triple *ent_from_table = hash_insert (ht, ent);
+ if (ent_from_table == NULL)
+ {
+ /* Insertion failed due to lack of memory. */
+ xalloc_die ();
+ }
+
+ if (ent_from_table != ent)
+ {
+ /* There was alread a matching entry in the table, so ENT was
+ not inserted. Free it. */
+ triple_free (ent);
+ }
+ }
+}
+
+/* When effecting a move (e.g., for mv(1)), and given the name DST_NAME
+ of the destination and a corresponding stat buffer, DST_SB, return
+ true if the logical `move' operation should _not_ proceed.
+ Otherwise, return false.
+ Depending on options specified in X, this code may issue an
+ interactive prompt asking whether it's ok to overwrite DST_NAME. */
+static bool
+abandon_move (const struct cp_options *x,
+ char const *dst_name,
+ struct stat const *dst_sb)
+{
+ assert (x->move_mode);
+ return (x->interactive == I_ALWAYS_NO
+ || ((x->interactive == I_ASK_USER
+ || (x->interactive == I_UNSPECIFIED
+ && x->stdin_tty
+ && UNWRITABLE (dst_name, dst_sb->st_mode)))
+ && (overwrite_prompt (dst_name, dst_sb), 1)
+ && ! yesno ()));
+}
+
+/* Print --verbose output on standard output, e.g. `new' -> `old'.
+ If BACKUP_DST_NAME is non-NULL, then also indicate that it is
+ the name of a backup file. */
+static void
+emit_verbose (char const *src, char const *dst, char const *backup_dst_name)
+{
+ printf ("%s -> %s", quote_n (0, src), quote_n (1, dst));
+ if (backup_dst_name)
+ printf (_(" (backup: %s)"), quote (backup_dst_name));
+ putchar ('\n');
+}
+
+/* Copy the file SRC_NAME to the file DST_NAME. The files may be of
+ any type. NEW_DST should be true if the file DST_NAME cannot
+ exist because its parent directory was just created; NEW_DST should
+ be false if DST_NAME might already exist. DEVICE is the device
+ number of the parent directory, or 0 if the parent of this file is
+ not known. ANCESTORS points to a linked, null terminated list of
+ devices and inodes of parent directories of SRC_NAME. COMMAND_LINE_ARG
+ is true iff SRC_NAME was specified on the command line.
+ Set *COPY_INTO_SELF if SRC_NAME is a parent of (or the
+ same as) DST_NAME; otherwise, clear it.
+ Return true if successful. */
+static bool
+copy_internal (char const *src_name, char const *dst_name,
+ bool new_dst,
+ dev_t device,
+ struct dir_list *ancestors,
+ const struct cp_options *x,
+ bool command_line_arg,
+ bool *copy_into_self,
+ bool *rename_succeeded)
+{
+ struct stat src_sb;
+ struct stat dst_sb;
+ mode_t src_mode;
+ mode_t dst_mode IF_LINT (= 0);
+ mode_t dst_mode_bits;
+ mode_t omitted_permissions;
+ bool restore_dst_mode = false;
+ char *earlier_file = NULL;
+ char *dst_backup = NULL;
+ bool backup_succeeded = false;
+ bool delayed_ok;
+ bool copied_as_regular = false;
+ bool preserve_metadata;
+
+ if (x->move_mode && rename_succeeded)
+ *rename_succeeded = false;
+
+ *copy_into_self = false;
+
+ if (XSTAT (x, src_name, &src_sb) != 0)
+ {
+ error (0, errno, _("cannot stat %s"), quote (src_name));
+ return false;
+ }
+
+ src_mode = src_sb.st_mode;
+
+ if (S_ISDIR (src_mode) && !x->recursive)
+ {
+ error (0, 0, _("omitting directory %s"), quote (src_name));
+ return false;
+ }
+
+ /* Detect the case in which the same source file appears more than
+ once on the command line and no backup option has been selected.
+ If so, simply warn and don't copy it the second time.
+ This check is enabled only if x->src_info is non-NULL. */
+ if (command_line_arg)
+ {
+ if ( ! S_ISDIR (src_sb.st_mode)
+ && x->backup_type == no_backups
+ && seen_file (x->src_info, src_name, &src_sb))
+ {
+ error (0, 0, _("warning: source file %s specified more than once"),
+ quote (src_name));
+ return true;
+ }
+
+ record_file (x->src_info, src_name, &src_sb);
+ }
+
+ if (!new_dst)
+ {
+ if (XSTAT (x, dst_name, &dst_sb) != 0)
+ {
+ if (errno != ENOENT)
+ {
+ error (0, errno, _("cannot stat %s"), quote (dst_name));
+ return false;
+ }
+ else
+ {
+ new_dst = true;
+ }
+ }
+ else
+ { /* Here, we know that dst_name exists, at least to the point
+ that it is XSTAT'able. */
+ bool return_now;
+ bool unlink_src;
+
+ if (! same_file_ok (src_name, &src_sb, dst_name, &dst_sb,
+ x, &return_now, &unlink_src))
+ {
+ error (0, 0, _("%s and %s are the same file"),
+ quote_n (0, src_name), quote_n (1, dst_name));
+ return false;
+ }
+
+ /* When there is an existing destination file, we may end up
+ returning early, and hence not copying/moving the file.
+ This may be due to an interactive `negative' reply to the
+ prompt about the existing file. It may also be due to the
+ use of the --reply=no option.
+
+ cp and mv treat -i and -f differently. */
+ if (x->move_mode)
+ {
+ if (abandon_move (x, dst_name, &dst_sb)
+ || (unlink_src && unlink (src_name) == 0))
+ {
+ /* Pretend the rename succeeded, so the caller (mv)
+ doesn't end up removing the source file. */
+ if (rename_succeeded)
+ *rename_succeeded = true;
+ if (unlink_src && x->verbose)
+ printf (_("removed %s\n"), quote (src_name));
+ return true;
+ }
+ if (unlink_src)
+ {
+ error (0, errno, _("cannot remove %s"), quote (src_name));
+ return false;
+ }
+ }
+ else
+ {
+ if (! S_ISDIR (src_mode)
+ && (x->interactive == I_ALWAYS_NO
+ || (x->interactive == I_ASK_USER
+ && (overwrite_prompt (dst_name, &dst_sb), 1)
+ && ! yesno ())))
+ return true;
+ }
+
+ if (return_now)
+ return true;
+
+ if (!S_ISDIR (dst_sb.st_mode))
+ {
+ if (S_ISDIR (src_mode))
+ {
+ if (x->move_mode && x->backup_type != no_backups)
+ {
+ /* Moving a directory onto an existing
+ non-directory is ok only with --backup. */
+ }
+ else
+ {
+ error (0, 0,
+ _("cannot overwrite non-directory %s with directory %s"),
+ quote_n (0, dst_name), quote_n (1, src_name));
+ return false;
+ }
+ }
+
+ /* Don't let the user destroy their data, even if they try hard:
+ This mv command must fail (likewise for cp):
+ rm -rf a b c; mkdir a b c; touch a/f b/f; mv a/f b/f c
+ Otherwise, the contents of b/f would be lost.
+ In the case of `cp', b/f would be lost if the user simulated
+ a move using cp and rm.
+ Note that it works fine if you use --backup=numbered. */
+ if (command_line_arg
+ && x->backup_type != numbered_backups
+ && seen_file (x->dest_info, dst_name, &dst_sb))
+ {
+ error (0, 0,
+ _("will not overwrite just-created %s with %s"),
+ quote_n (0, dst_name), quote_n (1, src_name));
+ return false;
+ }
+ }
+
+ if (!S_ISDIR (src_mode))
+ {
+ if (S_ISDIR (dst_sb.st_mode))
+ {
+ if (x->move_mode && x->backup_type != no_backups)
+ {
+ /* Moving a non-directory onto an existing
+ directory is ok only with --backup. */
+ }
+ else
+ {
+ error (0, 0,
+ _("cannot overwrite directory %s with non-directory"),
+ quote (dst_name));
+ return false;
+ }
+ }
+
+ if (x->update)
+ {
+ /* When preserving time stamps (but not moving within a file
+ system), don't worry if the destination time stamp is
+ less than the source merely because of time stamp
+ truncation. */
+ int options = ((x->preserve_timestamps
+ && ! (x->move_mode
+ && dst_sb.st_dev == src_sb.st_dev))
+ ? UTIMECMP_TRUNCATE_SOURCE
+ : 0);
+
+ if (0 <= utimecmp (dst_name, &dst_sb, &src_sb, options))
+ {
+ /* We're using --update and the destination is not older
+ than the source, so do not copy or move. Pretend the
+ rename succeeded, so the caller (if it's mv) doesn't
+ end up removing the source file. */
+ if (rename_succeeded)
+ *rename_succeeded = true;
+ return true;
+ }
+ }
+ }
+
+ if (x->move_mode)
+ {
+ /* Don't allow user to move a directory onto a non-directory. */
+ if (S_ISDIR (src_sb.st_mode) && !S_ISDIR (dst_sb.st_mode)
+ && x->backup_type == no_backups)
+ {
+ error (0, 0,
+ _("cannot move directory onto non-directory: %s -> %s"),
+ quote_n (0, src_name), quote_n (0, dst_name));
+ return false;
+ }
+ }
+
+ if (x->backup_type != no_backups
+ /* Don't try to back up a destination if the last
+ component of src_name is "." or "..". */
+ && ! dot_or_dotdot (last_component (src_name))
+ /* Create a backup of each destination directory in move mode,
+ but not in copy mode. FIXME: it might make sense to add an
+ option to suppress backup creation also for move mode.
+ That would let one use mv to merge new content into an
+ existing hierarchy. */
+ && (x->move_mode || ! S_ISDIR (dst_sb.st_mode)))
+ {
+ char *tmp_backup = find_backup_file_name (dst_name,
+ x->backup_type);
+
+ /* Detect (and fail) when creating the backup file would
+ destroy the source file. Before, running the commands
+ cd /tmp; rm -f a a~; : > a; echo A > a~; cp --b=simple a~ a
+ would leave two zero-length files: a and a~. */
+ /* FIXME: but simply change e.g., the final a~ to `./a~'
+ and the source will still be destroyed. */
+ if (STREQ (tmp_backup, src_name))
+ {
+ const char *fmt;
+ fmt = (x->move_mode
+ ? _("backing up %s would destroy source; %s not moved")
+ : _("backing up %s would destroy source; %s not copied"));
+ error (0, 0, fmt,
+ quote_n (0, dst_name),
+ quote_n (1, src_name));
+ free (tmp_backup);
+ return false;
+ }
+
+ /* FIXME: use fts:
+ Using alloca for a file name that may be arbitrarily
+ long is not recommended. In fact, even forming such a name
+ should be discouraged. Eventually, this code will be rewritten
+ to use fts, so using alloca here will be less of a problem. */
+ ASSIGN_STRDUPA (dst_backup, tmp_backup);
+ free (tmp_backup);
+ if (rename (dst_name, dst_backup) != 0)
+ {
+ if (errno != ENOENT)
+ {
+ error (0, errno, _("cannot backup %s"), quote (dst_name));
+ return false;
+ }
+ else
+ {
+ dst_backup = NULL;
+ }
+ }
+ else
+ {
+ backup_succeeded = true;
+ }
+ new_dst = true;
+ }
+ else if (! S_ISDIR (dst_sb.st_mode)
+ && (x->unlink_dest_before_opening
+ || (x->preserve_links && 1 < dst_sb.st_nlink)
+ || (!x->move_mode
+ && x->dereference == DEREF_NEVER
+ && S_ISLNK (src_sb.st_mode))
+ ))
+ {
+ if (unlink (dst_name) != 0 && errno != ENOENT)
+ {
+ error (0, errno, _("cannot remove %s"), quote (dst_name));
+ return false;
+ }
+ new_dst = true;
+ if (x->verbose)
+ printf (_("removed %s\n"), quote (dst_name));
+ }
+ }
+ }
+
+ /* If the source is a directory, we don't always create the destination
+ directory. So --verbose should not announce anything until we're
+ sure we'll create a directory. */
+ if (x->verbose && !S_ISDIR (src_mode))
+ emit_verbose (src_name, dst_name, backup_succeeded ? dst_backup : NULL);
+
+ /* Associate the destination file name with the source device and inode
+ so that if we encounter a matching dev/ino pair in the source tree
+ we can arrange to create a hard link between the corresponding names
+ in the destination tree.
+
+ Sometimes, when preserving links, we have to record dev/ino even
+ though st_nlink == 1:
+ - when in move_mode, since we may be moving a group of N hard-linked
+ files (via two or more command line arguments) to a different
+ partition; the links may be distributed among the command line
+ arguments (possibly hierarchies) so that the link count of
+ the final, once-linked source file is reduced to 1 when it is
+ considered below. But in this case (for mv) we don't need to
+ incur the expense of recording the dev/ino => name mapping; all we
+ really need is a lookup, to see if the dev/ino pair has already
+ been copied.
+ - when using -H and processing a command line argument;
+ that command line argument could be a symlink pointing to another
+ command line argument. With `cp -H --preserve=link', we hard-link
+ those two destination files.
+ - likewise for -L except that it applies to all files, not just
+ command line arguments.
+
+ Also record directory dev/ino when using --recursive. We'll use that
+ info to detect this problem: cp -R dir dir. FIXME-maybe: ideally,
+ directory info would be recorded in a separate hash table, since
+ such entries are useful only while a single command line hierarchy
+ is being copied -- so that separate table could be cleared between
+ command line args. Using the same hash table to preserve hard
+ links means that it may not be cleared. */
+
+ if (x->move_mode && src_sb.st_nlink == 1)
+ {
+ earlier_file = src_to_dest_lookup (src_sb.st_ino, src_sb.st_dev);
+ }
+ else if ((x->preserve_links
+ && (1 < src_sb.st_nlink
+ || (command_line_arg
+ && x->dereference == DEREF_COMMAND_LINE_ARGUMENTS)
+ || x->dereference == DEREF_ALWAYS))
+ || (x->recursive && S_ISDIR (src_mode)))
+ {
+ earlier_file = remember_copied (dst_name, src_sb.st_ino, src_sb.st_dev);
+ }
+
+ /* Did we copy this inode somewhere else (in this command line argument)
+ and therefore this is a second hard link to the inode? */
+
+ if (earlier_file)
+ {
+ /* Avoid damaging the destination file system by refusing to preserve
+ hard-linked directories (which are found at least in Netapp snapshot
+ directories). */
+ if (S_ISDIR (src_mode))
+ {
+ /* If src_name and earlier_file refer to the same directory entry,
+ then warn about copying a directory into itself. */
+ if (same_name (src_name, earlier_file))
+ {
+ error (0, 0, _("cannot copy a directory, %s, into itself, %s"),
+ quote_n (0, top_level_src_name),
+ quote_n (1, top_level_dst_name));
+ *copy_into_self = true;
+ goto un_backup;
+ }
+ else if (x->dereference == DEREF_ALWAYS)
+ {
+ /* This happens when e.g., encountering a directory for the
+ second or subsequent time via symlinks when cp is invoked
+ with -R and -L. E.g.,
+ rm -rf a b c d; mkdir a b c d; ln -s ../c a; ln -s ../c b;
+ cp -RL a b d
+ */
+ }
+ else
+ {
+ error (0, 0, _("will not create hard link %s to directory %s"),
+ quote_n (0, dst_name), quote_n (1, earlier_file));
+ goto un_backup;
+ }
+ }
+ else
+ {
+ bool link_failed = (link (earlier_file, dst_name) != 0);
+
+ /* If the link failed because of an existing destination,
+ remove that file and then call link again. */
+ if (link_failed && errno == EEXIST)
+ {
+ if (unlink (dst_name) != 0)
+ {
+ error (0, errno, _("cannot remove %s"), quote (dst_name));
+ goto un_backup;
+ }
+ if (x->verbose)
+ printf (_("removed %s\n"), quote (dst_name));
+ link_failed = (link (earlier_file, dst_name) != 0);
+ }
+
+ if (link_failed)
+ {
+ error (0, errno, _("cannot create hard link %s to %s"),
+ quote_n (0, dst_name), quote_n (1, earlier_file));
+ goto un_backup;
+ }
+
+ return true;
+ }
+ }
+
+ if (x->move_mode)
+ {
+ if (rename (src_name, dst_name) == 0)
+ {
+ if (x->verbose && S_ISDIR (src_mode))
+ emit_verbose (src_name, dst_name,
+ backup_succeeded ? dst_backup : NULL);
+
+ if (rename_succeeded)
+ *rename_succeeded = true;
+
+ if (command_line_arg)
+ {
+ /* Record destination dev/ino/name, so that if we are asked
+ to overwrite that file again, we can detect it and fail. */
+ /* It's fine to use the _source_ stat buffer (src_sb) to get the
+ _destination_ dev/ino, since the rename above can't have
+ changed those, and `mv' always uses lstat.
+ We could limit it further by operating
+ only on non-directories. */
+ record_file (x->dest_info, dst_name, &src_sb);
+ }
+
+ return true;
+ }
+
+ /* FIXME: someday, consider what to do when moving a directory into
+ itself but when source and destination are on different devices. */
+
+ /* This happens when attempting to rename a directory to a
+ subdirectory of itself. */
+ if (errno == EINVAL)
+ {
+ /* FIXME: this is a little fragile in that it relies on rename(2)
+ failing with a specific errno value. Expect problems on
+ non-POSIX systems. */
+ error (0, 0, _("cannot move %s to a subdirectory of itself, %s"),
+ quote_n (0, top_level_src_name),
+ quote_n (1, top_level_dst_name));
+
+ /* Note that there is no need to call forget_created here,
+ (compare with the other calls in this file) since the
+ destination directory didn't exist before. */
+
+ *copy_into_self = true;
+ /* FIXME-cleanup: Don't return true here; adjust mv.c accordingly.
+ The only caller that uses this code (mv.c) ends up setting its
+ exit status to nonzero when copy_into_self is nonzero. */
+ return true;
+ }
+
+ /* WARNING: there probably exist systems for which an inter-device
+ rename fails with a value of errno not handled here.
+ If/as those are reported, add them to the condition below.
+ If this happens to you, please do the following and send the output
+ to the bug-reporting address (e.g., in the output of cp --help):
+ touch k; perl -e 'rename "k","/tmp/k" or print "$!(",$!+0,")\n"'
+ where your current directory is on one partion and /tmp is the other.
+ Also, please try to find the E* errno macro name corresponding to
+ the diagnostic and parenthesized integer, and include that in your
+ e-mail. One way to do that is to run a command like this
+ find /usr/include/. -type f \
+ | xargs grep 'define.*\<E[A-Z]*\>.*\<18\>' /dev/null
+ where you'd replace `18' with the integer in parentheses that
+ was output from the perl one-liner above.
+ If necessary, of course, change `/tmp' to some other directory. */
+ if (errno != EXDEV)
+ {
+ /* There are many ways this can happen due to a race condition.
+ When something happens between the initial XSTAT and the
+ subsequent rename, we can get many different types of errors.
+ For example, if the destination is initially a non-directory
+ or non-existent, but it is created as a directory, the rename
+ fails. If two `mv' commands try to rename the same file at
+ about the same time, one will succeed and the other will fail.
+ If the permissions on the directory containing the source or
+ destination file are made too restrictive, the rename will
+ fail. Etc. */
+ error (0, errno,
+ _("cannot move %s to %s"),
+ quote_n (0, src_name), quote_n (1, dst_name));
+ forget_created (src_sb.st_ino, src_sb.st_dev);
+ return false;
+ }
+
+ /* The rename attempt has failed. Remove any existing destination
+ file so that a cross-device `mv' acts as if it were really using
+ the rename syscall. */
+ if (unlink (dst_name) != 0 && errno != ENOENT)
+ {
+ error (0, errno,
+ _("inter-device move failed: %s to %s; unable to remove target"),
+ quote_n (0, src_name), quote_n (1, dst_name));
+ forget_created (src_sb.st_ino, src_sb.st_dev);
+ return false;
+ }
+
+ new_dst = true;
+ }
+
+ /* If the ownership might change, or if it is a directory (whose
+ special mode bits may change after the directory is created),
+ omit some permissions at first, so unauthorized users cannot nip
+ in before the file is ready. */
+ dst_mode_bits = (x->set_mode ? x->mode : src_mode) & CHMOD_MODE_BITS;
+ omitted_permissions =
+ (dst_mode_bits
+ & (x->preserve_ownership ? S_IRWXG | S_IRWXO
+ : S_ISDIR (src_mode) ? S_IWGRP | S_IWOTH
+ : 0));
+
+ delayed_ok = true;
+
+ /* In certain modes (cp's --symbolic-link), and for certain file types
+ (symlinks and hard links) it doesn't make sense to preserve metadata,
+ or it's possible to preserve only some of it.
+ In such cases, set this variable to zero. */
+ preserve_metadata = true;
+
+ if (S_ISDIR (src_mode))
+ {
+ struct dir_list *dir;
+
+ /* If this directory has been copied before during the
+ recursion, there is a symbolic link to an ancestor
+ directory of the symbolic link. It is impossible to
+ continue to copy this, unless we've got an infinite disk. */
+
+ if (is_ancestor (&src_sb, ancestors))
+ {
+ error (0, 0, _("cannot copy cyclic symbolic link %s"),
+ quote (src_name));
+ goto un_backup;
+ }
+
+ /* Insert the current directory in the list of parents. */
+
+ dir = alloca (sizeof *dir);
+ dir->parent = ancestors;
+ dir->ino = src_sb.st_ino;
+ dir->dev = src_sb.st_dev;
+
+ if (new_dst || !S_ISDIR (dst_sb.st_mode))
+ {
+ /* POSIX says mkdir's behavior is implementation-defined when
+ (src_mode & ~S_IRWXUGO) != 0. However, common practice is
+ to ask mkdir to copy all the CHMOD_MODE_BITS, letting mkdir
+ decide what to do with S_ISUID | S_ISGID | S_ISVTX. */
+ if (mkdir (dst_name, dst_mode_bits & ~omitted_permissions) != 0)
+ {
+ error (0, errno, _("cannot create directory %s"),
+ quote (dst_name));
+ goto un_backup;
+ }
+
+ /* We need search and write permissions to the new directory
+ for writing the directory's contents. Check if these
+ permissions are there. */
+
+ if (lstat (dst_name, &dst_sb) != 0)
+ {
+ error (0, errno, _("cannot stat %s"), quote (dst_name));
+ goto un_backup;
+ }
+ else if ((dst_sb.st_mode & S_IRWXU) != S_IRWXU)
+ {
+ /* Make the new directory searchable and writable. */
+
+ dst_mode = dst_sb.st_mode;
+ restore_dst_mode = true;
+
+ if (lchmod (dst_name, dst_mode | S_IRWXU) != 0)
+ {
+ error (0, errno, _("setting permissions for %s"),
+ quote (dst_name));
+ goto un_backup;
+ }
+ }
+
+ /* Insert the created directory's inode and device
+ numbers into the search structure, so that we can
+ avoid copying it again. */
+
+ remember_copied (dst_name, dst_sb.st_ino, dst_sb.st_dev);
+
+ if (x->verbose)
+ emit_verbose (src_name, dst_name, NULL);
+ }
+
+ /* Decide whether to copy the contents of the directory. */
+ if (x->one_file_system && device != 0 && device != src_sb.st_dev)
+ {
+ /* Here, we are crossing a file system boundary and cp's -x option
+ is in effect: so don't copy the contents of this directory. */
+ }
+ else
+ {
+ /* Copy the contents of the directory. Don't just return if
+ this fails -- otherwise, the failure to read a single file
+ in a source directory would cause the containing destination
+ directory not to have owner/perms set properly. */
+ delayed_ok = copy_dir (src_name, dst_name, new_dst, &src_sb, dir, x,
+ copy_into_self);
+ }
+ }
+ else if (x->symbolic_link)
+ {
+ preserve_metadata = false;
+
+ if (*src_name != '/')
+ {
+ /* Check that DST_NAME denotes a file in the current directory. */
+ struct stat dot_sb;
+ struct stat dst_parent_sb;
+ char *dst_parent;
+ bool in_current_dir;
+
+ dst_parent = dir_name (dst_name);
+
+ in_current_dir = (STREQ (".", dst_parent)
+ /* If either stat call fails, it's ok not to report
+ the failure and say dst_name is in the current
+ directory. Other things will fail later. */
+ || stat (".", &dot_sb) != 0
+ || stat (dst_parent, &dst_parent_sb) != 0
+ || SAME_INODE (dot_sb, dst_parent_sb));
+ free (dst_parent);
+
+ if (! in_current_dir)
+ {
+ error (0, 0,
+ _("%s: can make relative symbolic links only in current directory"),
+ quote (dst_name));
+ goto un_backup;
+ }
+ }
+ if (symlink (src_name, dst_name) != 0)
+ {
+ error (0, errno, _("cannot create symbolic link %s to %s"),
+ quote_n (0, dst_name), quote_n (1, src_name));
+ goto un_backup;
+ }
+ }
+
+ else if (x->hard_link
+#ifdef LINK_FOLLOWS_SYMLINKS
+ /* A POSIX-conforming link syscall dereferences a symlink, yet cp,
+ invoked with `--link --no-dereference', should not. Thus, with
+ a POSIX-conforming link system call, we can't use link() here,
+ since that would create a hard link to the referent (effectively
+ dereferencing the symlink), rather than to the symlink itself.
+ We can approximate the desired behavior by skipping this hard-link
+ creating block and instead copying the symlink, via the `S_ISLNK'-
+ copying code below.
+ When link operates on the symlinks themselves, we use this block
+ and just call link(). */
+ && !(S_ISLNK (src_mode) && x->dereference == DEREF_NEVER)
+#endif
+ )
+ {
+ preserve_metadata = false;
+ if (link (src_name, dst_name))
+ {
+ error (0, errno, _("cannot create link %s"), quote (dst_name));
+ goto un_backup;
+ }
+ }
+ else if (S_ISREG (src_mode)
+ || (x->copy_as_regular && !S_ISLNK (src_mode)))
+ {
+ copied_as_regular = true;
+ /* POSIX says the permission bits of the source file must be
+ used as the 3rd argument in the open call. Historical
+ practice passed all the source mode bits to 'open', but the extra
+ bits were ignored, so it should be the same either way. */
+ if (! copy_reg (src_name, dst_name, x, src_mode & S_IRWXUGO,
+ omitted_permissions, &new_dst, &src_sb))
+ goto un_backup;
+ }
+ else if (S_ISFIFO (src_mode))
+ {
+ /* Use mknod, rather than mkfifo, because the former preserves
+ the special mode bits of a fifo on Solaris 10, while mkfifo
+ does not. But fall back on mkfifo, because on some BSD systems,
+ mknod always fails when asked to create a FIFO. */
+ if (mknod (dst_name, src_mode & ~omitted_permissions, 0) != 0)
+#if HAVE_MKFIFO
+ if (mkfifo (dst_name, src_mode & ~S_IFIFO & ~omitted_permissions) != 0)
+#endif
+ {
+ error (0, errno, _("cannot create fifo %s"), quote (dst_name));
+ goto un_backup;
+ }
+ }
+ else if (S_ISBLK (src_mode) || S_ISCHR (src_mode) || S_ISSOCK (src_mode))
+ {
+ if (mknod (dst_name, src_mode & ~omitted_permissions, src_sb.st_rdev)
+ != 0)
+ {
+ error (0, errno, _("cannot create special file %s"),
+ quote (dst_name));
+ goto un_backup;
+ }
+ }
+ else if (S_ISLNK (src_mode))
+ {
+ char *src_link_val = xreadlink_with_size (src_name, src_sb.st_size);
+ if (src_link_val == NULL)
+ {
+ error (0, errno, _("cannot read symbolic link %s"), quote (src_name));
+ goto un_backup;
+ }
+
+ if (symlink (src_link_val, dst_name) == 0)
+ free (src_link_val);
+ else
+ {
+ int saved_errno = errno;
+ bool same_link = false;
+ if (x->update && !new_dst && S_ISLNK (dst_sb.st_mode)
+ && dst_sb.st_size == strlen (src_link_val))
+ {
+ /* See if the destination is already the desired symlink.
+ FIXME: This behavior isn't documented, and seems wrong
+ in some cases, e.g., if the destination symlink has the
+ wrong ownership, permissions, or time stamps. */
+ char *dest_link_val =
+ xreadlink_with_size (dst_name, dst_sb.st_size);
+ if (STREQ (dest_link_val, src_link_val))
+ same_link = true;
+ free (dest_link_val);
+ }
+ free (src_link_val);
+
+ if (! same_link)
+ {
+ error (0, saved_errno, _("cannot create symbolic link %s"),
+ quote (dst_name));
+ goto un_backup;
+ }
+ }
+
+ /* There's no need to preserve timestamps or permissions. */
+ preserve_metadata = false;
+
+ if (x->preserve_ownership)
+ {
+ /* Preserve the owner and group of the just-`copied'
+ symbolic link, if possible. */
+#if HAVE_LCHOWN
+ if (lchown (dst_name, src_sb.st_uid, src_sb.st_gid) != 0
+ && ! chown_failure_ok (x))
+ {
+ error (0, errno, _("failed to preserve ownership for %s"),
+ dst_name);
+ goto un_backup;
+ }
+#else
+ /* Can't preserve ownership of symlinks.
+ FIXME: maybe give a warning or even error for symlinks
+ in directories with the sticky bit set -- there, not
+ preserving owner/group is a potential security problem. */
+#endif
+ }
+ }
+ else
+ {
+ error (0, 0, _("%s has unknown file type"), quote (src_name));
+ goto un_backup;
+ }
+
+ if (command_line_arg)
+ record_file (x->dest_info, dst_name, NULL);
+
+ if ( ! preserve_metadata)
+ return true;
+
+ if (copied_as_regular)
+ return delayed_ok;
+
+ /* POSIX says that `cp -p' must restore the following:
+ - permission bits
+ - setuid, setgid bits
+ - owner and group
+ If it fails to restore any of those, we may give a warning but
+ the destination must not be removed.
+ FIXME: implement the above. */
+
+ /* Adjust the times (and if possible, ownership) for the copy.
+ chown turns off set[ug]id bits for non-root,
+ so do the chmod last. */
+
+ if (x->preserve_timestamps)
+ {
+ struct timespec timespec[2];
+ timespec[0] = get_stat_atime (&src_sb);
+ timespec[1] = get_stat_mtime (&src_sb);
+
+ if (utimens (dst_name, timespec) != 0)
+ {
+ error (0, errno, _("preserving times for %s"), quote (dst_name));
+ if (x->require_preserve)
+ return false;
+ }
+ }
+
+ /* Avoid calling chown if we know it's not necessary. */
+ if (x->preserve_ownership
+ && (new_dst || !SAME_OWNER_AND_GROUP (src_sb, dst_sb)))
+ {
+ switch (set_owner (x, dst_name, -1, src_sb.st_uid, src_sb.st_gid))
+ {
+ case -1:
+ return false;
+
+ case 0:
+ src_mode &= ~ (S_ISUID | S_ISGID | S_ISVTX);
+ break;
+ }
+ }
+
+ set_author (dst_name, -1, &src_sb);
+
+ if (x->preserve_mode || x->move_mode)
+ {
+ if (copy_acl (src_name, -1, dst_name, -1, src_mode) != 0
+ && x->require_preserve)
+ return false;
+ }
+ else if (x->set_mode)
+ {
+ if (set_acl (dst_name, -1, x->mode) != 0)
+ return false;
+ }
+ else
+ {
+ if (omitted_permissions)
+ {
+ omitted_permissions &= ~ cached_umask ();
+
+ if (omitted_permissions && !restore_dst_mode)
+ {
+ /* Permissions were deliberately omitted when the file
+ was created due to security concerns. See whether
+ they need to be re-added now. It'd be faster to omit
+ the lstat, but deducing the current destination mode
+ is tricky in the presence of implementation-defined
+ rules for special mode bits. */
+ if (new_dst && lstat (dst_name, &dst_sb) != 0)
+ {
+ error (0, errno, _("cannot stat %s"), quote (dst_name));
+ return false;
+ }
+ dst_mode = dst_sb.st_mode;
+ if (omitted_permissions & ~dst_mode)
+ restore_dst_mode = true;
+ }
+ }
+
+ if (restore_dst_mode)
+ {
+ if (lchmod (dst_name, dst_mode | omitted_permissions) != 0)
+ {
+ error (0, errno, _("preserving permissions for %s"),
+ quote (dst_name));
+ if (x->require_preserve)
+ return false;
+ }
+ }
+ }
+
+ return delayed_ok;
+
+un_backup:
+
+ /* We have failed to create the destination file.
+ If we've just added a dev/ino entry via the remember_copied
+ call above (i.e., unless we've just failed to create a hard link),
+ remove the entry associating the source dev/ino with the
+ destination file name, so we don't try to `preserve' a link
+ to a file we didn't create. */
+ if (earlier_file == NULL)
+ forget_created (src_sb.st_ino, src_sb.st_dev);
+
+ if (dst_backup)
+ {
+ if (rename (dst_backup, dst_name) != 0)
+ error (0, errno, _("cannot un-backup %s"), quote (dst_name));
+ else
+ {
+ if (x->verbose)
+ printf (_("%s -> %s (unbackup)\n"),
+ quote_n (0, dst_backup), quote_n (1, dst_name));
+ }
+ }
+ return false;
+}
+
+static bool
+valid_options (const struct cp_options *co)
+{
+ assert (co != NULL);
+ assert (VALID_BACKUP_TYPE (co->backup_type));
+ assert (VALID_SPARSE_MODE (co->sparse_mode));
+ assert (!(co->hard_link && co->symbolic_link));
+ return true;
+}
+
+/* Copy the file SRC_NAME to the file DST_NAME. The files may be of
+ any type. NONEXISTENT_DST should be true if the file DST_NAME
+ is known not to exist (e.g., because its parent directory was just
+ created); NONEXISTENT_DST should be false if DST_NAME might already
+ exist. OPTIONS is ... FIXME-describe
+ Set *COPY_INTO_SELF if SRC_NAME is a parent of (or the
+ same as) DST_NAME; otherwise, set clear it.
+ Return true if successful. */
+
+extern bool
+copy (char const *src_name, char const *dst_name,
+ bool nonexistent_dst, const struct cp_options *options,
+ bool *copy_into_self, bool *rename_succeeded)
+{
+ assert (valid_options (options));
+
+ /* Record the file names: they're used in case of error, when copying
+ a directory into itself. I don't like to make these tools do *any*
+ extra work in the common case when that work is solely to handle
+ exceptional cases, but in this case, I don't see a way to derive the
+ top level source and destination directory names where they're used.
+ An alternative is to use COPY_INTO_SELF and print the diagnostic
+ from every caller -- but I don't want to do that. */
+ top_level_src_name = src_name;
+ top_level_dst_name = dst_name;
+
+ return copy_internal (src_name, dst_name, nonexistent_dst, 0, NULL,
+ options, true, copy_into_self, rename_succeeded);
+}
+
+/* Return true if this process has appropriate privileges to chown a
+ file whose owner is not the effective user ID. */
+
+extern bool
+chown_privileges (void)
+{
+#ifdef PRIV_FILE_CHOWN
+ bool result;
+ priv_set_t *pset = priv_allocset ();
+ if (!pset)
+ xalloc_die ();
+ result = (getppriv (PRIV_EFFECTIVE, pset) == 0
+ && priv_ismember (pset, PRIV_FILE_CHOWN));
+ priv_freeset (pset);
+ return result;
+#else
+ return (geteuid () == 0);
+#endif
+}
+
+/* Return true if it's OK for chown to fail, where errno is
+ the error number that chown failed with and X is the copying
+ option set. */
+
+extern bool
+chown_failure_ok (struct cp_options const *x)
+{
+ /* If non-root uses -p, it's ok if we can't preserve ownership.
+ But root probably wants to know, e.g. if NFS disallows it,
+ or if the target system doesn't support file ownership. */
+
+ return ((errno == EPERM || errno == EINVAL) && !x->chown_privileges);
+}
+
+/* Return the user's umask, caching the result. */
+
+extern mode_t
+cached_umask (void)
+{
+ static mode_t mask = (mode_t) -1;
+ if (mask == (mode_t) -1)
+ {
+ mask = umask (0);
+ umask (mask);
+ }
+ return mask;
+}
diff --git a/src/copy.h b/src/copy.h
new file mode 100644
index 0000000..c815baf
--- /dev/null
+++ b/src/copy.h
@@ -0,0 +1,218 @@
+/* core functions for copying files and directories
+ Copyright (C) 89, 90, 91, 1995-2005 Free Software Foundation.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Extracted from cp.c and librarified by Jim Meyering. */
+
+#ifndef COPY_H
+# define COPY_H
+
+# include <stdbool.h>
+# include "hash.h"
+# include "lstat.h"
+
+/* Control creation of sparse files (files with holes). */
+enum Sparse_type
+{
+ SPARSE_UNUSED,
+
+ /* Never create holes in DEST. */
+ SPARSE_NEVER,
+
+ /* This is the default. Use a crude (and sometimes inaccurate)
+ heuristic to determine if SOURCE has holes. If so, try to create
+ holes in DEST. */
+ SPARSE_AUTO,
+
+ /* For every sufficiently long sequence of bytes in SOURCE, try to
+ create a corresponding hole in DEST. There is a performance penalty
+ here because CP has to search for holes in SRC. But if the holes are
+ big enough, that penalty can be offset by the decrease in the amount
+ of data written to disk. */
+ SPARSE_ALWAYS
+};
+
+/* This type is used to help mv (via copy.c) distinguish these cases. */
+enum Interactive
+{
+ I_ALWAYS_YES = 1,
+ I_ALWAYS_NO,
+ I_ASK_USER,
+ I_UNSPECIFIED
+};
+
+/* How to handle symbolic links. */
+enum Dereference_symlink
+{
+ DEREF_UNDEFINED = 1,
+
+ /* Copy the symbolic link itself. -P */
+ DEREF_NEVER,
+
+ /* If the symbolic is a command line argument, then copy
+ its referent. Otherwise, copy the symbolic link itself. -H */
+ DEREF_COMMAND_LINE_ARGUMENTS,
+
+ /* Copy the referent of the symbolic link. -L */
+ DEREF_ALWAYS
+};
+
+# define VALID_SPARSE_MODE(Mode) \
+ ((Mode) == SPARSE_NEVER \
+ || (Mode) == SPARSE_AUTO \
+ || (Mode) == SPARSE_ALWAYS)
+
+/* These options control how files are copied by at least the
+ following programs: mv (when rename doesn't work), cp, install.
+ So, if you add a new member, be sure to initialize it in
+ mv.c, cp.c, and install.c. */
+struct cp_options
+{
+ enum backup_type backup_type;
+
+ /* If true, copy all files except (directories and, if not dereferencing
+ them, symbolic links,) as if they were regular files. */
+ bool copy_as_regular;
+
+ /* How to handle symlinks. */
+ enum Dereference_symlink dereference;
+
+ /* If true, remove each existing destination nondirectory before
+ trying to open it. */
+ bool unlink_dest_before_opening;
+
+ /* If true, first try to open each existing destination nondirectory,
+ then, if the open fails, unlink and try again.
+ This option must be set for `cp -f', in case the destination file
+ exists when the open is attempted. It is irrelevant to `mv' since
+ any destination is sure to be removed before the open. */
+ bool unlink_dest_after_failed_open;
+
+ /* If true, create hard links instead of copying files.
+ Create destination directories as usual. */
+ bool hard_link;
+
+ /* This value is used to determine whether to prompt before removing
+ each existing destination file. It works differently depending on
+ whether move_mode is set. See code/comments in copy.c. */
+ enum Interactive interactive;
+
+ /* If true, rather than copying, first attempt to use rename.
+ If that fails, then resort to copying. */
+ bool move_mode;
+
+ /* Whether this process has appropriate privileges to chown a file
+ whose owner is not the effective user ID. */
+ bool chown_privileges;
+
+ /* If true, when copying recursively, skip any subdirectories that are
+ on different file systems from the one we started on. */
+ bool one_file_system;
+
+ /* If true, attempt to give the copies the original files' permissions,
+ owner, group, and timestamps. */
+ bool preserve_ownership;
+ bool preserve_mode;
+ bool preserve_timestamps;
+
+ /* Enabled for mv, and for cp by the --preserve=links option.
+ If true, attempt to preserve in the destination files any
+ logical hard links between the source files. If used with cp's
+ --no-dereference option, and copying two hard-linked files,
+ the two corresponding destination files will also be hard linked.
+
+ If used with cp's --dereference (-L) option, then, as that option implies,
+ hard links are *not* preserved. However, when copying a file F and
+ a symlink S to F, the resulting S and F in the destination directory
+ will be hard links to the same file (a copy of F). */
+ bool preserve_links;
+
+ /* If true and any of the above (for preserve) file attributes cannot
+ be applied to a destination file, treat it as a failure and return
+ nonzero immediately. E.g. cp -p requires this be nonzero, mv requires
+ it be zero. */
+ bool require_preserve;
+
+ /* If true, copy directories recursively and copy special files
+ as themselves rather than copying their contents. */
+ bool recursive;
+
+ /* If true, set file mode to value of MODE. Otherwise,
+ set it based on current umask modified by UMASK_KILL. */
+ bool set_mode;
+
+ /* Set the mode of the destination file to exactly this value
+ if SET_MODE is nonzero. */
+ mode_t mode;
+
+ /* Control creation of sparse files. */
+ enum Sparse_type sparse_mode;
+
+ /* If true, create symbolic links instead of copying files.
+ Create destination directories as usual. */
+ bool symbolic_link;
+
+ /* If true, do not copy a nondirectory that has an existing destination
+ with the same or newer modification time. */
+ bool update;
+
+ /* If true, display the names of the files before copying them. */
+ bool verbose;
+
+ /* If true, stdin is a tty. */
+ bool stdin_tty;
+
+ /* This is a set of destination name/inode/dev triples. Each such triple
+ represents a file we have created corresponding to a source file name
+ that was specified on the command line. Use it to avoid clobbering
+ source files in commands like this:
+ rm -rf a b c; mkdir a b c; touch a/f b/f; mv a/f b/f c
+ For now, it protects only regular files when copying (i.e. not renaming).
+ When renaming, it protects all non-directories.
+ Use dest_info_init to initialize it, or set it to NULL to disable
+ this feature. */
+ Hash_table *dest_info;
+
+ /* FIXME */
+ Hash_table *src_info;
+};
+
+# define XSTAT(X, Src_name, Src_sb) \
+ ((X)->dereference == DEREF_NEVER \
+ ? lstat (Src_name, Src_sb) \
+ : stat (Src_name, Src_sb))
+
+/* Arrange to make rename calls go through the wrapper function
+ on systems with a rename function that fails for a source file name
+ specified with a trailing slash. */
+# if RENAME_TRAILING_SLASH_BUG
+int rpl_rename (const char *, const char *);
+# undef rename
+# define rename rpl_rename
+# endif
+
+bool copy (char const *src_name, char const *dst_name,
+ bool nonexistent_dst, const struct cp_options *options,
+ bool *copy_into_self, bool *rename_succeeded);
+
+void dest_info_init (struct cp_options *);
+void src_info_init (struct cp_options *);
+
+bool chown_privileges (void);
+bool chown_failure_ok (struct cp_options const *);
+mode_t cached_umask (void);
+
+#endif
diff --git a/src/cp-hash.c b/src/cp-hash.c
new file mode 100644
index 0000000..a4b5157
--- /dev/null
+++ b/src/cp-hash.c
@@ -0,0 +1,187 @@
+/* cp-hash.c -- file copying (hash search routines)
+ Copyright (C) 89, 90, 91, 1995-2005 Free Software Foundation.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written by Torbjorn Granlund, Sweden (tege@sics.se).
+ Rewritten to use lib/hash.c by Jim Meyering. */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <sys/types.h>
+#include "system.h"
+
+#include "same.h"
+#include "quote.h"
+#include "hash.h"
+#include "error.h"
+#include "cp-hash.h"
+
+/* Use ST_DEV and ST_INO as the key, FILENAME as the value.
+ These are used e.g., in copy.c to associate the destination name with
+ the source device/inode pair so that if we encounter a matching dev/ino
+ pair in the source tree we can arrange to create a hard link between
+ the corresponding names in the destination tree. */
+struct Src_to_dest
+{
+ ino_t st_ino;
+ dev_t st_dev;
+ /* Destination file name (of non-directory or pre-existing directory)
+ corresponding to the dev/ino of a copied file, or the destination file
+ name corresponding to a dev/ino pair for a newly-created directory. */
+ char *name;
+};
+
+/* This table maps source dev/ino to destination file name.
+ We use it to preserve hard links when copying. */
+static Hash_table *src_to_dest;
+
+/* Initial size of the above hash table. */
+#define INITIAL_TABLE_SIZE 103
+
+static size_t
+src_to_dest_hash (void const *x, size_t table_size)
+{
+ struct Src_to_dest const *p = x;
+
+ /* Ignoring the device number here should be fine. */
+ /* The cast to uintmax_t prevents negative remainders
+ if st_ino is negative. */
+ return (uintmax_t) p->st_ino % table_size;
+}
+
+/* Compare two Src_to_dest entries.
+ Return true if their keys are judged `equal'. */
+static bool
+src_to_dest_compare (void const *x, void const *y)
+{
+ struct Src_to_dest const *a = x;
+ struct Src_to_dest const *b = y;
+ return SAME_INODE (*a, *b) ? true : false;
+}
+
+static void
+src_to_dest_free (void *x)
+{
+ struct Src_to_dest *a = x;
+ free (a->name);
+ free (x);
+}
+
+/* Remove the entry matching INO/DEV from the table
+ that maps source ino/dev to destination file name. */
+extern void
+forget_created (ino_t ino, dev_t dev)
+{
+ struct Src_to_dest probe;
+ struct Src_to_dest *ent;
+
+ probe.st_ino = ino;
+ probe.st_dev = dev;
+ probe.name = NULL;
+
+ ent = hash_delete (src_to_dest, &probe);
+ if (ent)
+ src_to_dest_free (ent);
+}
+
+/* Add FILE to the list of files that we have created.
+ Return true if successful. */
+
+extern bool
+remember_created (char const *file)
+{
+ struct stat sb;
+
+ if (stat (file, &sb) < 0)
+ {
+ error (0, errno, "%s", quote (file));
+ return false;
+ }
+
+ remember_copied (file, sb.st_ino, sb.st_dev);
+ return true;
+}
+
+/* If INO/DEV correspond to an already-copied source file, return the
+ name of the corresponding destination file. Otherwise, return NULL. */
+
+extern char *
+src_to_dest_lookup (ino_t ino, dev_t dev)
+{
+ struct Src_to_dest ent;
+ struct Src_to_dest const *e;
+ ent.st_ino = ino;
+ ent.st_dev = dev;
+ e = hash_lookup (src_to_dest, &ent);
+ return e ? e->name : NULL;
+}
+
+/* Add file NAME, copied from inode number INO and device number DEV,
+ to the list of files we have copied.
+ Return NULL if inserted, otherwise non-NULL. */
+
+extern char *
+remember_copied (const char *name, ino_t ino, dev_t dev)
+{
+ struct Src_to_dest *ent;
+ struct Src_to_dest *ent_from_table;
+
+ ent = xmalloc (sizeof *ent);
+ ent->name = xstrdup (name);
+ ent->st_ino = ino;
+ ent->st_dev = dev;
+
+ ent_from_table = hash_insert (src_to_dest, ent);
+ if (ent_from_table == NULL)
+ {
+ /* Insertion failed due to lack of memory. */
+ xalloc_die ();
+ }
+
+ /* Determine whether there was already an entry in the table
+ with a matching key. If so, free ENT (it wasn't inserted) and
+ return the `name' from the table entry. */
+ if (ent_from_table != ent)
+ {
+ src_to_dest_free (ent);
+ return (char *) ent_from_table->name;
+ }
+
+ /* New key; insertion succeeded. */
+ return NULL;
+}
+
+/* Initialize the hash table. */
+extern void
+hash_init (void)
+{
+ src_to_dest = hash_initialize (INITIAL_TABLE_SIZE, NULL,
+ src_to_dest_hash,
+ src_to_dest_compare,
+ src_to_dest_free);
+ if (src_to_dest == NULL)
+ xalloc_die ();
+}
+
+/* Reset the hash structure in the global variable `htab' to
+ contain no entries. */
+
+extern void
+forget_all (void)
+{
+ hash_free (src_to_dest);
+}
diff --git a/src/cp-hash.h b/src/cp-hash.h
new file mode 100644
index 0000000..d142925
--- /dev/null
+++ b/src/cp-hash.h
@@ -0,0 +1,6 @@
+void hash_init (void);
+void forget_all (void);
+void forget_created (ino_t ino, dev_t dev);
+char *remember_copied (const char *node, ino_t ino, dev_t dev);
+bool remember_created (char const *file);
+char *src_to_dest_lookup (ino_t ino, dev_t dev);
diff --git a/src/cp.c b/src/cp.c
new file mode 100644
index 0000000..5759e0d
--- /dev/null
+++ b/src/cp.c
@@ -0,0 +1,1072 @@
+/* cp.c -- file copying (main routines)
+ Copyright (C) 89, 90, 91, 1995-2007 Free Software Foundation.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written by Torbjorn Granlund, David MacKenzie, and Jim Meyering. */
+
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <getopt.h>
+
+#include "system.h"
+#include "argmatch.h"
+#include "backupfile.h"
+#include "copy.h"
+#include "cp-hash.h"
+#include "error.h"
+#include "filenamecat.h"
+#include "lchmod.h"
+#include "quote.h"
+#include "quotearg.h"
+#include "stat-time.h"
+#include "utimens.h"
+#include "acl.h"
+
+#define ASSIGN_BASENAME_STRDUPA(Dest, File_name) \
+ do \
+ { \
+ char *tmp_abns_; \
+ ASSIGN_STRDUPA (tmp_abns_, (File_name)); \
+ Dest = last_component (tmp_abns_); \
+ strip_trailing_slashes (Dest); \
+ } \
+ while (0)
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "cp"
+
+#define AUTHORS "Torbjorn Granlund", "David MacKenzie", "Jim Meyering"
+
+/* Used by do_copy, make_dir_parents_private, and re_protect
+ to keep a list of leading directories whose protections
+ need to be fixed after copying. */
+struct dir_attr
+{
+ mode_t mode;
+ bool restore_mode;
+ size_t slash_offset;
+ struct dir_attr *next;
+};
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ COPY_CONTENTS_OPTION = CHAR_MAX + 1,
+ NO_PRESERVE_ATTRIBUTES_OPTION,
+ PARENTS_OPTION,
+ PRESERVE_ATTRIBUTES_OPTION,
+ REPLY_OPTION,
+ SPARSE_OPTION,
+ STRIP_TRAILING_SLASHES_OPTION,
+ UNLINK_DEST_BEFORE_OPENING
+};
+
+/* Initial number of entries in each hash table entry's table of inodes. */
+#define INITIAL_HASH_MODULE 100
+
+/* Initial number of entries in the inode hash table. */
+#define INITIAL_ENTRY_TAB_SIZE 70
+
+/* The invocation name of this program. */
+char *program_name;
+
+/* If true, the command "cp x/e_file e_dir" uses "e_dir/x/e_file"
+ as its destination instead of the usual "e_dir/e_file." */
+static bool parents_option = false;
+
+/* Remove any trailing slashes from each SOURCE argument. */
+static bool remove_trailing_slashes;
+
+static char const *const sparse_type_string[] =
+{
+ "never", "auto", "always", NULL
+};
+static enum Sparse_type const sparse_type[] =
+{
+ SPARSE_NEVER, SPARSE_AUTO, SPARSE_ALWAYS
+};
+ARGMATCH_VERIFY (sparse_type_string, sparse_type);
+
+/* Valid arguments to the `--reply' option. */
+static char const* const reply_args[] =
+{
+ "yes", "no", "query", NULL
+};
+/* The values that correspond to the above strings. */
+static int const reply_vals[] =
+{
+ I_ALWAYS_YES, I_ALWAYS_NO, I_ASK_USER
+};
+ARGMATCH_VERIFY (reply_args, reply_vals);
+
+static struct option const long_opts[] =
+{
+ {"archive", no_argument, NULL, 'a'},
+ {"backup", optional_argument, NULL, 'b'},
+ {"copy-contents", no_argument, NULL, COPY_CONTENTS_OPTION},
+ {"dereference", no_argument, NULL, 'L'},
+ {"force", no_argument, NULL, 'f'},
+ {"interactive", no_argument, NULL, 'i'},
+ {"link", no_argument, NULL, 'l'},
+ {"no-dereference", no_argument, NULL, 'P'},
+ {"no-preserve", required_argument, NULL, NO_PRESERVE_ATTRIBUTES_OPTION},
+ {"no-target-directory", no_argument, NULL, 'T'},
+ {"one-file-system", no_argument, NULL, 'x'},
+ {"parents", no_argument, NULL, PARENTS_OPTION},
+ {"path", no_argument, NULL, PARENTS_OPTION}, /* Deprecated. */
+ {"preserve", optional_argument, NULL, PRESERVE_ATTRIBUTES_OPTION},
+ {"recursive", no_argument, NULL, 'R'},
+ {"remove-destination", no_argument, NULL, UNLINK_DEST_BEFORE_OPENING},
+ {"reply", required_argument, NULL, REPLY_OPTION}, /* Deprecated 2005-07-03,
+ remove in 2008. */
+ {"sparse", required_argument, NULL, SPARSE_OPTION},
+ {"strip-trailing-slashes", no_argument, NULL, STRIP_TRAILING_SLASHES_OPTION},
+ {"suffix", required_argument, NULL, 'S'},
+ {"symbolic-link", no_argument, NULL, 's'},
+ {"target-directory", required_argument, NULL, 't'},
+ {"update", no_argument, NULL, 'u'},
+ {"verbose", no_argument, NULL, 'v'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [-T] SOURCE DEST\n\
+ or: %s [OPTION]... SOURCE... DIRECTORY\n\
+ or: %s [OPTION]... -t DIRECTORY SOURCE...\n\
+"),
+ program_name, program_name, program_name);
+ fputs (_("\
+Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -a, --archive same as -dpPR\n\
+ --backup[=CONTROL] make a backup of each existing destination file\n\
+ -b like --backup but does not accept an argument\n\
+ --copy-contents copy contents of special files when recursive\n\
+ -d same as --no-dereference --preserve=link\n\
+"), stdout);
+ fputs (_("\
+ -f, --force if an existing destination file cannot be\n\
+ opened, remove it and try again\n\
+ -i, --interactive prompt before overwrite\n\
+ -H follow command-line symbolic links\n\
+"), stdout);
+ fputs (_("\
+ -l, --link link files instead of copying\n\
+ -L, --dereference always follow symbolic links\n\
+"), stdout);
+ fputs (_("\
+ -P, --no-dereference never follow symbolic links\n\
+"), stdout);
+ fputs (_("\
+ -p same as --preserve=mode,ownership,timestamps\n\
+ --preserve[=ATTR_LIST] preserve the specified attributes (default:\n\
+ mode,ownership,timestamps), if possible\n\
+ additional attributes: links, all\n\
+"), stdout);
+ fputs (_("\
+ --no-preserve=ATTR_LIST don't preserve the specified attributes\n\
+ --parents use full source file name under DIRECTORY\n\
+"), stdout);
+ fputs (_("\
+ -R, -r, --recursive copy directories recursively\n\
+ --remove-destination remove each existing destination file before\n\
+ attempting to open it (contrast with --force)\n\
+"), stdout);
+ fputs (_("\
+ --sparse=WHEN control creation of sparse files\n\
+ --strip-trailing-slashes remove any trailing slashes from each SOURCE\n\
+ argument\n\
+"), stdout);
+ fputs (_("\
+ -s, --symbolic-link make symbolic links instead of copying\n\
+ -S, --suffix=SUFFIX override the usual backup suffix\n\
+ -t, --target-directory=DIRECTORY copy all SOURCE arguments into DIRECTORY\n\
+ -T, --no-target-directory treat DEST as a normal file\n\
+"), stdout);
+ fputs (_("\
+ -u, --update copy only when the SOURCE file is newer\n\
+ than the destination file or when the\n\
+ destination file is missing\n\
+ -v, --verbose explain what is being done\n\
+ -x, --one-file-system stay on this file system\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+By default, sparse SOURCE files are detected by a crude heuristic and the\n\
+corresponding DEST file is made sparse as well. That is the behavior\n\
+selected by --sparse=auto. Specify --sparse=always to create a sparse DEST\n\
+file whenever the SOURCE file contains a long enough sequence of zero bytes.\n\
+Use --sparse=never to inhibit creation of sparse files.\n\
+\n\
+"), stdout);
+ fputs (_("\
+The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n\
+The version control method may be selected via the --backup option or through\n\
+the VERSION_CONTROL environment variable. Here are the values:\n\
+\n\
+"), stdout);
+ fputs (_("\
+ none, off never make backups (even if --backup is given)\n\
+ numbered, t make numbered backups\n\
+ existing, nil numbered if numbered backups exist, simple otherwise\n\
+ simple, never always make simple backups\n\
+"), stdout);
+ fputs (_("\
+\n\
+As a special case, cp makes a backup of SOURCE when the force and backup\n\
+options are given and SOURCE and DEST are the same name for an existing,\n\
+regular file.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Ensure that the parent directories of CONST_DST_NAME have the
+ correct protections, for the --parents option. This is done
+ after all copying has been completed, to allow permissions
+ that don't include user write/execute.
+
+ SRC_OFFSET is the index in CONST_DST_NAME of the beginning of the
+ source directory name.
+
+ ATTR_LIST is a null-terminated linked list of structures that
+ indicates the end of the filename of each intermediate directory
+ in CONST_DST_NAME that may need to have its attributes changed.
+ The command `cp --parents --preserve a/b/c d/e_dir' changes the
+ attributes of the directories d/e_dir/a and d/e_dir/a/b to match
+ the corresponding source directories regardless of whether they
+ existed before the `cp' command was given.
+
+ Return true if the parent of CONST_DST_NAME and any intermediate
+ directories specified by ATTR_LIST have the proper permissions
+ when done. */
+
+static bool
+re_protect (char const *const_dst_name, size_t src_offset,
+ struct dir_attr *attr_list, const struct cp_options *x)
+{
+ struct dir_attr *p;
+ char *dst_name; /* A copy of CONST_DST_NAME we can change. */
+ char *src_name; /* The source name in `dst_name'. */
+
+ ASSIGN_STRDUPA (dst_name, const_dst_name);
+ src_name = dst_name + src_offset;
+
+ for (p = attr_list; p; p = p->next)
+ {
+ struct stat src_sb;
+
+ dst_name[p->slash_offset] = '\0';
+
+ if (XSTAT (x, src_name, &src_sb))
+ {
+ error (0, errno, _("failed to get attributes of %s"),
+ quote (src_name));
+ return false;
+ }
+
+ /* Adjust the times (and if possible, ownership) for the copy.
+ chown turns off set[ug]id bits for non-root,
+ so do the chmod last. */
+
+ if (x->preserve_timestamps)
+ {
+ struct timespec timespec[2];
+
+ timespec[0] = get_stat_atime (&src_sb);
+ timespec[1] = get_stat_mtime (&src_sb);
+
+ if (utimens (dst_name, timespec))
+ {
+ error (0, errno, _("failed to preserve times for %s"),
+ quote (dst_name));
+ return false;
+ }
+ }
+
+ if (x->preserve_ownership)
+ {
+ if (chown (dst_name, src_sb.st_uid, src_sb.st_gid) != 0
+ && ! chown_failure_ok (x))
+ {
+ error (0, errno, _("failed to preserve ownership for %s"),
+ quote (dst_name));
+ return false;
+ }
+ }
+
+ if (x->preserve_mode)
+ {
+ if (copy_acl (src_name, -1, dst_name, -1, src_sb.st_mode))
+ return false;
+ }
+ else if (p->restore_mode)
+ {
+ if (lchmod (dst_name, p->mode) != 0)
+ {
+ error (0, errno, _("failed to preserve permissions for %s"),
+ quote (dst_name));
+ return false;
+ }
+ }
+
+ dst_name[p->slash_offset] = '/';
+ }
+ return true;
+}
+
+/* Ensure that the parent directory of CONST_DIR exists, for
+ the --parents option.
+
+ SRC_OFFSET is the index in CONST_DIR (which is a destination
+ directory) of the beginning of the source directory name.
+ Create any leading directories that don't already exist.
+ If VERBOSE_FMT_STRING is nonzero, use it as a printf format
+ string for printing a message after successfully making a directory.
+ The format should take two string arguments: the names of the
+ source and destination directories.
+ Creates a linked list of attributes of intermediate directories,
+ *ATTR_LIST, for re_protect to use after calling copy.
+ Sets *NEW_DST if this function creates parent of CONST_DIR.
+
+ Return true if parent of CONST_DIR exists as a directory with the proper
+ permissions when done. */
+
+/* FIXME: Synch this function with the one in ../lib/mkdir-p.c. */
+
+static bool
+make_dir_parents_private (char const *const_dir, size_t src_offset,
+ char const *verbose_fmt_string,
+ struct dir_attr **attr_list, bool *new_dst,
+ const struct cp_options *x)
+{
+ struct stat stats;
+ char *dir; /* A copy of CONST_DIR we can change. */
+ char *src; /* Source name in DIR. */
+ char *dst_dir; /* Leading directory of DIR. */
+ size_t dirlen; /* Length of DIR. */
+
+ ASSIGN_STRDUPA (dir, const_dir);
+
+ src = dir + src_offset;
+
+ dirlen = dir_len (dir);
+ dst_dir = alloca (dirlen + 1);
+ memcpy (dst_dir, dir, dirlen);
+ dst_dir[dirlen] = '\0';
+
+ *attr_list = NULL;
+
+ if (XSTAT (x, dst_dir, &stats))
+ {
+ /* A parent of CONST_DIR does not exist.
+ Make all missing intermediate directories. */
+ char *slash;
+
+ slash = src;
+ while (*slash == '/')
+ slash++;
+ while ((slash = strchr (slash, '/')))
+ {
+ /* Add this directory to the list of directories whose modes need
+ fixing later. */
+ struct dir_attr *new = xmalloc (sizeof *new);
+ new->slash_offset = slash - dir;
+ new->restore_mode = false;
+ new->next = *attr_list;
+ *attr_list = new;
+
+ *slash = '\0';
+ if (XSTAT (x, dir, &stats))
+ {
+ mode_t src_mode;
+ mode_t omitted_permissions;
+ mode_t mkdir_mode;
+ int src_errno;
+
+ /* This component does not exist. We must set
+ *new_dst and new->mode inside this loop because,
+ for example, in the command `cp --parents ../a/../b/c e_dir',
+ make_dir_parents_private creates only e_dir/../a if
+ ./b already exists. */
+ *new_dst = true;
+ src_errno = (XSTAT (x, src, &stats) != 0
+ ? errno
+ : S_ISDIR (stats.st_mode)
+ ? 0
+ : ENOTDIR);
+ if (src_errno)
+ {
+ error (0, src_errno, _("failed to get attributes of %s"),
+ quote (src));
+ return false;
+ }
+ src_mode = stats.st_mode;
+
+ /* If the ownership or special mode bits might change,
+ omit some permissions at first, so unauthorized users
+ cannot nip in before the file is ready. */
+ omitted_permissions = (src_mode
+ & (x->preserve_ownership
+ ? S_IRWXG | S_IRWXO
+ : x->preserve_mode
+ ? S_IWGRP | S_IWOTH
+ : 0));
+
+ /* POSIX says mkdir's behavior is implementation-defined when
+ (src_mode & ~S_IRWXUGO) != 0. However, common practice is
+ to ask mkdir to copy all the CHMOD_MODE_BITS, letting mkdir
+ decide what to do with S_ISUID | S_ISGID | S_ISVTX. */
+ mkdir_mode = src_mode & CHMOD_MODE_BITS & ~omitted_permissions;
+ if (mkdir (dir, mkdir_mode) != 0)
+ {
+ error (0, errno, _("cannot make directory %s"),
+ quote (dir));
+ return false;
+ }
+ else
+ {
+ if (verbose_fmt_string != NULL)
+ printf (verbose_fmt_string, src, dir);
+ }
+
+ /* We need search and write permissions to the new directory
+ for writing the directory's contents. Check if these
+ permissions are there. */
+
+ if (lstat (dir, &stats))
+ {
+ error (0, errno, _("failed to get attributes of %s"),
+ quote (dir));
+ return false;
+ }
+
+
+ if (! x->preserve_mode)
+ {
+ if (omitted_permissions & ~stats.st_mode)
+ omitted_permissions &= ~ cached_umask ();
+ if (omitted_permissions & ~stats.st_mode
+ || (stats.st_mode & S_IRWXU) != S_IRWXU)
+ {
+ new->mode = stats.st_mode | omitted_permissions;
+ new->restore_mode = true;
+ }
+ }
+
+ if ((stats.st_mode & S_IRWXU) != S_IRWXU)
+ {
+ /* Make the new directory searchable and writable.
+ The original permissions will be restored later. */
+
+ if (lchmod (dir, stats.st_mode | S_IRWXU) != 0)
+ {
+ error (0, errno, _("setting permissions for %s"),
+ quote (dir));
+ return false;
+ }
+ }
+ }
+ else if (!S_ISDIR (stats.st_mode))
+ {
+ error (0, 0, _("%s exists but is not a directory"),
+ quote (dir));
+ return false;
+ }
+ else
+ *new_dst = false;
+ *slash++ = '/';
+
+ /* Avoid unnecessary calls to `stat' when given
+ file names containing multiple adjacent slashes. */
+ while (*slash == '/')
+ slash++;
+ }
+ }
+
+ /* We get here if the parent of DIR already exists. */
+
+ else if (!S_ISDIR (stats.st_mode))
+ {
+ error (0, 0, _("%s exists but is not a directory"), quote (dst_dir));
+ return false;
+ }
+ else
+ {
+ *new_dst = false;
+ }
+ return true;
+}
+
+/* FILE is the last operand of this command.
+ Return true if FILE is a directory.
+ But report an error and exit if there is a problem accessing FILE,
+ or if FILE does not exist but would have to refer to an existing
+ directory if it referred to anything at all.
+
+ If the file exists, store the file's status into *ST.
+ Otherwise, set *NEW_DST. */
+
+static bool
+target_directory_operand (char const *file, struct stat *st, bool *new_dst)
+{
+ int err = (stat (file, st) == 0 ? 0 : errno);
+ bool is_a_dir = !err && S_ISDIR (st->st_mode);
+ if (err)
+ {
+ if (err != ENOENT)
+ error (EXIT_FAILURE, err, _("accessing %s"), quote (file));
+ *new_dst = true;
+ }
+ return is_a_dir;
+}
+
+/* Scan the arguments, and copy each by calling copy.
+ Return true if successful. */
+
+static bool
+do_copy (int n_files, char **file, const char *target_directory,
+ bool no_target_directory, struct cp_options *x)
+{
+ struct stat sb;
+ bool new_dst = false;
+ bool ok = true;
+
+ if (n_files <= !target_directory)
+ {
+ if (n_files <= 0)
+ error (0, 0, _("missing file operand"));
+ else
+ error (0, 0, _("missing destination file operand after %s"),
+ quote (file[0]));
+ usage (EXIT_FAILURE);
+ }
+
+ if (no_target_directory)
+ {
+ if (target_directory)
+ error (EXIT_FAILURE, 0,
+ _("Cannot combine --target-directory (-t) "
+ "and --no-target-directory (-T)"));
+ if (2 < n_files)
+ {
+ error (0, 0, _("extra operand %s"), quote (file[2]));
+ usage (EXIT_FAILURE);
+ }
+ }
+ else if (!target_directory)
+ {
+ if (2 <= n_files
+ && target_directory_operand (file[n_files - 1], &sb, &new_dst))
+ target_directory = file[--n_files];
+ else if (2 < n_files)
+ error (EXIT_FAILURE, 0, _("target %s is not a directory"),
+ quote (file[n_files - 1]));
+ }
+
+ if (target_directory)
+ {
+ /* cp file1...filen edir
+ Copy the files `file1' through `filen'
+ to the existing directory `edir'. */
+ int i;
+
+ /* Initialize these hash tables only if we'll need them.
+ The problems they're used to detect can arise only if
+ there are two or more files to copy. */
+ if (2 <= n_files)
+ {
+ dest_info_init (x);
+ src_info_init (x);
+ }
+
+ for (i = 0; i < n_files; i++)
+ {
+ char *dst_name;
+ bool parent_exists = true; /* True if dir_name (dst_name) exists. */
+ struct dir_attr *attr_list;
+ char *arg_in_concat = NULL;
+ char *arg = file[i];
+
+ /* Trailing slashes are meaningful (i.e., maybe worth preserving)
+ only in the source file names. */
+ if (remove_trailing_slashes)
+ strip_trailing_slashes (arg);
+
+ if (parents_option)
+ {
+ char *arg_no_trailing_slash;
+
+ /* Use `arg' without trailing slashes in constructing destination
+ file names. Otherwise, we can end up trying to create a
+ directory via `mkdir ("dst/foo/"...', which is not portable.
+ It fails, due to the trailing slash, on at least
+ NetBSD 1.[34] systems. */
+ ASSIGN_STRDUPA (arg_no_trailing_slash, arg);
+ strip_trailing_slashes (arg_no_trailing_slash);
+
+ /* Append all of `arg' (minus any trailing slash) to `dest'. */
+ dst_name = file_name_concat (target_directory,
+ arg_no_trailing_slash,
+ &arg_in_concat);
+
+ /* For --parents, we have to make sure that the directory
+ dir_name (dst_name) exists. We may have to create a few
+ leading directories. */
+ parent_exists =
+ (make_dir_parents_private
+ (dst_name, arg_in_concat - dst_name,
+ (x->verbose ? "%s -> %s\n" : NULL),
+ &attr_list, &new_dst, x));
+ }
+ else
+ {
+ char *arg_base;
+ /* Append the last component of `arg' to `target_directory'. */
+
+ ASSIGN_BASENAME_STRDUPA (arg_base, arg);
+ /* For `cp -R source/.. dest', don't copy into `dest/..'. */
+ dst_name = (STREQ (arg_base, "..")
+ ? xstrdup (target_directory)
+ : file_name_concat (target_directory, arg_base,
+ NULL));
+ }
+
+ if (!parent_exists)
+ {
+ /* make_dir_parents_private failed, so don't even
+ attempt the copy. */
+ ok = false;
+ }
+ else
+ {
+ bool copy_into_self;
+ ok &= copy (arg, dst_name, new_dst, x, &copy_into_self, NULL);
+
+ if (parents_option)
+ ok &= re_protect (dst_name, arg_in_concat - dst_name,
+ attr_list, x);
+ }
+
+ free (dst_name);
+ }
+ }
+ else /* !target_directory */
+ {
+ char const *new_dest;
+ char const *source = file[0];
+ char const *dest = file[1];
+ bool unused;
+
+ if (parents_option)
+ {
+ error (0, 0,
+ _("with --parents, the destination must be a directory"));
+ usage (EXIT_FAILURE);
+ }
+
+ /* When the force and backup options have been specified and
+ the source and destination are the same name for an existing
+ regular file, convert the user's command, e.g.,
+ `cp --force --backup foo foo' to `cp --force foo fooSUFFIX'
+ where SUFFIX is determined by any version control options used. */
+
+ if (x->unlink_dest_after_failed_open
+ && x->backup_type != no_backups
+ && STREQ (source, dest)
+ && !new_dst && S_ISREG (sb.st_mode))
+ {
+ static struct cp_options x_tmp;
+
+ new_dest = find_backup_file_name (dest, x->backup_type);
+ /* Set x->backup_type to `no_backups' so that the normal backup
+ mechanism is not used when performing the actual copy.
+ backup_type must be set to `no_backups' only *after* the above
+ call to find_backup_file_name -- that function uses
+ backup_type to determine the suffix it applies. */
+ x_tmp = *x;
+ x_tmp.backup_type = no_backups;
+ x = &x_tmp;
+ }
+ else
+ {
+ new_dest = dest;
+ }
+
+ ok = copy (source, new_dest, 0, x, &unused, NULL);
+ }
+
+ return ok;
+}
+
+static void
+cp_option_init (struct cp_options *x)
+{
+ x->copy_as_regular = true;
+ x->dereference = DEREF_UNDEFINED;
+ x->unlink_dest_before_opening = false;
+ x->unlink_dest_after_failed_open = false;
+ x->hard_link = false;
+ x->interactive = I_UNSPECIFIED;
+ x->chown_privileges = chown_privileges ();
+ x->move_mode = false;
+ x->one_file_system = false;
+
+ x->preserve_ownership = false;
+ x->preserve_links = false;
+ x->preserve_mode = false;
+ x->preserve_timestamps = false;
+
+ x->require_preserve = false;
+ x->recursive = false;
+ x->sparse_mode = SPARSE_AUTO;
+ x->symbolic_link = false;
+ x->set_mode = false;
+ x->mode = 0;
+
+ /* Not used. */
+ x->stdin_tty = false;
+
+ x->update = false;
+ x->verbose = false;
+ x->dest_info = NULL;
+ x->src_info = NULL;
+}
+
+/* Given a string, ARG, containing a comma-separated list of arguments
+ to the --preserve option, set the appropriate fields of X to ON_OFF. */
+static void
+decode_preserve_arg (char const *arg, struct cp_options *x, bool on_off)
+{
+ enum File_attribute
+ {
+ PRESERVE_MODE,
+ PRESERVE_TIMESTAMPS,
+ PRESERVE_OWNERSHIP,
+ PRESERVE_LINK,
+ PRESERVE_ALL
+ };
+ static enum File_attribute const preserve_vals[] =
+ {
+ PRESERVE_MODE, PRESERVE_TIMESTAMPS,
+ PRESERVE_OWNERSHIP, PRESERVE_LINK, PRESERVE_ALL
+ };
+ /* Valid arguments to the `--preserve' option. */
+ static char const* const preserve_args[] =
+ {
+ "mode", "timestamps",
+ "ownership", "links", "all", NULL
+ };
+ ARGMATCH_VERIFY (preserve_args, preserve_vals);
+
+ char *arg_writable = xstrdup (arg);
+ char *s = arg_writable;
+ do
+ {
+ /* find next comma */
+ char *comma = strchr (s, ',');
+ enum File_attribute val;
+
+ /* If we found a comma, put a NUL in its place and advance. */
+ if (comma)
+ *comma++ = 0;
+
+ /* process S. */
+ val = XARGMATCH ("--preserve", s, preserve_args, preserve_vals);
+ switch (val)
+ {
+ case PRESERVE_MODE:
+ x->preserve_mode = on_off;
+ break;
+
+ case PRESERVE_TIMESTAMPS:
+ x->preserve_timestamps = on_off;
+ break;
+
+ case PRESERVE_OWNERSHIP:
+ x->preserve_ownership = on_off;
+ break;
+
+ case PRESERVE_LINK:
+ x->preserve_links = on_off;
+ break;
+
+ case PRESERVE_ALL:
+ x->preserve_mode = on_off;
+ x->preserve_timestamps = on_off;
+ x->preserve_ownership = on_off;
+ x->preserve_links = on_off;
+ break;
+
+ default:
+ abort ();
+ }
+ s = comma;
+ }
+ while (s);
+
+ free (arg_writable);
+}
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ bool ok;
+ bool make_backups = false;
+ char *backup_suffix_string;
+ char *version_control_string = NULL;
+ struct cp_options x;
+ bool copy_contents = false;
+ char *target_directory = NULL;
+ bool no_target_directory = false;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ cp_option_init (&x);
+
+ /* FIXME: consider not calling getenv for SIMPLE_BACKUP_SUFFIX unless
+ we'll actually use backup_suffix_string. */
+ backup_suffix_string = getenv ("SIMPLE_BACKUP_SUFFIX");
+
+ while ((c = getopt_long (argc, argv, "abdfHilLprst:uvxPRS:T",
+ long_opts, NULL))
+ != -1)
+ {
+ switch (c)
+ {
+ case SPARSE_OPTION:
+ x.sparse_mode = XARGMATCH ("--sparse", optarg,
+ sparse_type_string, sparse_type);
+ break;
+
+ case 'a': /* Like -dpPR. */
+ x.dereference = DEREF_NEVER;
+ x.preserve_links = true;
+ x.preserve_ownership = true;
+ x.preserve_mode = true;
+ x.preserve_timestamps = true;
+ x.require_preserve = true;
+ x.recursive = true;
+ break;
+
+ case 'b':
+ make_backups = true;
+ if (optarg)
+ version_control_string = optarg;
+ break;
+
+ case COPY_CONTENTS_OPTION:
+ copy_contents = true;
+ break;
+
+ case 'd':
+ x.preserve_links = true;
+ x.dereference = DEREF_NEVER;
+ break;
+
+ case 'f':
+ x.unlink_dest_after_failed_open = true;
+ break;
+
+ case 'H':
+ x.dereference = DEREF_COMMAND_LINE_ARGUMENTS;
+ break;
+
+ case 'i':
+ x.interactive = I_ASK_USER;
+ break;
+
+ case 'l':
+ x.hard_link = true;
+ break;
+
+ case 'L':
+ x.dereference = DEREF_ALWAYS;
+ break;
+
+ case 'P':
+ x.dereference = DEREF_NEVER;
+ break;
+
+ case NO_PRESERVE_ATTRIBUTES_OPTION:
+ decode_preserve_arg (optarg, &x, false);
+ break;
+
+ case PRESERVE_ATTRIBUTES_OPTION:
+ if (optarg == NULL)
+ {
+ /* Fall through to the case for `p' below. */
+ }
+ else
+ {
+ decode_preserve_arg (optarg, &x, true);
+ x.require_preserve = true;
+ break;
+ }
+
+ case 'p':
+ x.preserve_ownership = true;
+ x.preserve_mode = true;
+ x.preserve_timestamps = true;
+ x.require_preserve = true;
+ break;
+
+ case PARENTS_OPTION:
+ parents_option = true;
+ break;
+
+ case 'r':
+ case 'R':
+ x.recursive = true;
+ break;
+
+ case REPLY_OPTION: /* Deprecated */
+ x.interactive = XARGMATCH ("--reply", optarg,
+ reply_args, reply_vals);
+ error (0, 0,
+ _("the --reply option is deprecated; use -i or -f instead"));
+ break;
+
+ case UNLINK_DEST_BEFORE_OPENING:
+ x.unlink_dest_before_opening = true;
+ break;
+
+ case STRIP_TRAILING_SLASHES_OPTION:
+ remove_trailing_slashes = true;
+ break;
+
+ case 's':
+ x.symbolic_link = true;
+ break;
+
+ case 't':
+ if (target_directory)
+ error (EXIT_FAILURE, 0,
+ _("multiple target directories specified"));
+ else
+ {
+ struct stat st;
+ if (stat (optarg, &st) != 0)
+ error (EXIT_FAILURE, errno, _("accessing %s"), quote (optarg));
+ if (! S_ISDIR (st.st_mode))
+ error (EXIT_FAILURE, 0, _("target %s is not a directory"),
+ quote (optarg));
+ }
+ target_directory = optarg;
+ break;
+
+ case 'T':
+ no_target_directory = true;
+ break;
+
+ case 'u':
+ x.update = true;
+ break;
+
+ case 'v':
+ x.verbose = true;
+ break;
+
+ case 'x':
+ x.one_file_system = true;
+ break;
+
+ case 'S':
+ make_backups = true;
+ backup_suffix_string = optarg;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (x.hard_link & x.symbolic_link)
+ {
+ error (0, 0, _("cannot make both hard and symbolic links"));
+ usage (EXIT_FAILURE);
+ }
+
+ if (backup_suffix_string)
+ simple_backup_suffix = xstrdup (backup_suffix_string);
+
+ x.backup_type = (make_backups
+ ? xget_version (_("backup type"),
+ version_control_string)
+ : no_backups);
+
+ if (x.dereference == DEREF_UNDEFINED)
+ {
+ if (x.recursive)
+ /* This is compatible with FreeBSD. */
+ x.dereference = DEREF_NEVER;
+ else
+ x.dereference = DEREF_ALWAYS;
+ }
+
+ /* The key difference between -d (--no-dereference) and not is the version
+ of `stat' to call. */
+
+ if (x.recursive)
+ x.copy_as_regular = copy_contents;
+
+ /* If --force (-f) was specified and we're in link-creation mode,
+ first remove any existing destination file. */
+ if (x.unlink_dest_after_failed_open & (x.hard_link | x.symbolic_link))
+ x.unlink_dest_before_opening = true;
+
+ /* Allocate space for remembering copied and created files. */
+
+ hash_init ();
+
+ ok = do_copy (argc - optind, argv + optind,
+ target_directory, no_target_directory, &x);
+
+ forget_all ();
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/csplit.c b/src/csplit.c
new file mode 100644
index 0000000..c2105bc
--- /dev/null
+++ b/src/csplit.c
@@ -0,0 +1,1515 @@
+/* csplit - split a file into sections determined by context lines
+ Copyright (C) 91, 1995-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Stuart Kemp, cpsrk@groper.jcu.edu.au.
+ Modified by David MacKenzie, djm@gnu.ai.mit.edu. */
+
+#include <config.h>
+
+#include <getopt.h>
+#include <sys/types.h>
+#include <signal.h>
+
+#include "system.h"
+
+#include <regex.h>
+
+#include "error.h"
+#include "fd-reopen.h"
+#include "inttostr.h"
+#include "quote.h"
+#include "safe-read.h"
+#include "stdio--.h"
+#include "xstrtol.h"
+
+/* Use SA_NOCLDSTOP as a proxy for whether the sigaction machinery is
+ present. */
+#ifndef SA_NOCLDSTOP
+# define SA_NOCLDSTOP 0
+# define sigprocmask(How, Set, Oset) /* empty */
+# define sigset_t int
+# if ! HAVE_SIGINTERRUPT
+# define siginterrupt(sig, flag) /* empty */
+# endif
+#endif
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "csplit"
+
+#define AUTHORS "Stuart Kemp", "David MacKenzie"
+
+/* Increment size of area for control records. */
+#define ALLOC_SIZE 20
+
+/* The default prefix for output file names. */
+#define DEFAULT_PREFIX "xx"
+
+/* A compiled pattern arg. */
+struct control
+{
+ intmax_t offset; /* Offset from regexp to split at. */
+ uintmax_t lines_required; /* Number of lines required. */
+ uintmax_t repeat; /* Repeat count. */
+ int argnum; /* ARGV index. */
+ bool repeat_forever; /* True if `*' used as a repeat count. */
+ bool ignore; /* If true, produce no output (for regexp). */
+ bool regexpr; /* True if regular expression was used. */
+ struct re_pattern_buffer re_compiled; /* Compiled regular expression. */
+};
+
+/* Initial size of data area in buffers. */
+#define START_SIZE 8191
+
+/* Increment size for data area. */
+#define INCR_SIZE 2048
+
+/* Number of lines kept in each node in line list. */
+#define CTRL_SIZE 80
+
+#ifdef DEBUG
+/* Some small values to test the algorithms. */
+# define START_SIZE 200
+# define INCR_SIZE 10
+# define CTRL_SIZE 1
+#endif
+
+/* A string with a length count. */
+struct cstring
+{
+ size_t len;
+ char *str;
+};
+
+/* Pointers to the beginnings of lines in the buffer area.
+ These structures are linked together if needed. */
+struct line
+{
+ size_t used; /* Number of offsets used in this struct. */
+ size_t insert_index; /* Next offset to use when inserting line. */
+ size_t retrieve_index; /* Next index to use when retrieving line. */
+ struct cstring starts[CTRL_SIZE]; /* Lines in the data area. */
+ struct line *next; /* Next in linked list. */
+};
+
+/* The structure to hold the input lines.
+ Contains a pointer to the data area and a list containing
+ pointers to the individual lines. */
+struct buffer_record
+{
+ size_t bytes_alloc; /* Size of the buffer area. */
+ size_t bytes_used; /* Bytes used in the buffer area. */
+ uintmax_t start_line; /* First line number in this buffer. */
+ uintmax_t first_available; /* First line that can be retrieved. */
+ size_t num_lines; /* Number of complete lines in this buffer. */
+ char *buffer; /* Data area. */
+ struct line *line_start; /* Head of list of pointers to lines. */
+ struct line *curr_line; /* The line start record currently in use. */
+ struct buffer_record *next;
+};
+
+static void close_output_file (void);
+static void create_output_file (void);
+static void delete_all_files (bool);
+static void save_line_to_file (const struct cstring *line);
+void usage (int status);
+
+/* The name this program was run with. */
+char *program_name;
+
+/* Start of buffer list. */
+static struct buffer_record *head = NULL;
+
+/* Partially read line. */
+static char *hold_area = NULL;
+
+/* Number of bytes in `hold_area'. */
+static size_t hold_count = 0;
+
+/* Number of the last line in the buffers. */
+static uintmax_t last_line_number = 0;
+
+/* Number of the line currently being examined. */
+static uintmax_t current_line = 0;
+
+/* If true, we have read EOF. */
+static bool have_read_eof = false;
+
+/* Name of output files. */
+static char *volatile filename_space = NULL;
+
+/* Prefix part of output file names. */
+static char const *volatile prefix = NULL;
+
+/* Suffix part of output file names. */
+static char *volatile suffix = NULL;
+
+/* Number of digits to use in output file names. */
+static int volatile digits = 2;
+
+/* Number of files created so far. */
+static unsigned int volatile files_created = 0;
+
+/* Number of bytes written to current file. */
+static uintmax_t bytes_written;
+
+/* Output file pointer. */
+static FILE *output_stream = NULL;
+
+/* Output file name. */
+static char *output_filename = NULL;
+
+/* Perhaps it would be cleaner to pass arg values instead of indexes. */
+static char **global_argv;
+
+/* If true, do not print the count of bytes in each output file. */
+static bool suppress_count;
+
+/* If true, remove output files on error. */
+static bool volatile remove_files;
+
+/* If true, remove all output files which have a zero length. */
+static bool elide_empty_files;
+
+/* The compiled pattern arguments, which determine how to split
+ the input file. */
+static struct control *controls;
+
+/* Number of elements in `controls'. */
+static size_t control_used;
+
+/* The set of signals that are caught. */
+static sigset_t caught_signals;
+
+static struct option const longopts[] =
+{
+ {"digits", required_argument, NULL, 'n'},
+ {"quiet", no_argument, NULL, 'q'},
+ {"silent", no_argument, NULL, 's'},
+ {"keep-files", no_argument, NULL, 'k'},
+ {"elide-empty-files", no_argument, NULL, 'z'},
+ {"prefix", required_argument, NULL, 'f'},
+ {"suffix-format", required_argument, NULL, 'b'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+/* Optionally remove files created so far; then exit.
+ Called when an error detected. */
+
+static void
+cleanup (void)
+{
+ sigset_t oldset;
+
+ close_output_file ();
+
+ sigprocmask (SIG_BLOCK, &caught_signals, &oldset);
+ delete_all_files (false);
+ sigprocmask (SIG_SETMASK, &oldset, NULL);
+}
+
+static void cleanup_fatal (void) ATTRIBUTE_NORETURN;
+static void
+cleanup_fatal (void)
+{
+ cleanup ();
+ exit (EXIT_FAILURE);
+}
+
+extern void
+xalloc_die (void)
+{
+ error (0, 0, "%s", _("memory exhausted"));
+ cleanup_fatal ();
+}
+
+static void
+interrupt_handler (int sig)
+{
+ if (! SA_NOCLDSTOP)
+ signal (sig, SIG_IGN);
+
+ delete_all_files (true);
+
+ signal (sig, SIG_DFL);
+ raise (sig);
+}
+
+/* Keep track of NUM bytes of a partial line in buffer START.
+ These bytes will be retrieved later when another large buffer is read. */
+
+static void
+save_to_hold_area (char *start, size_t num)
+{
+ free (hold_area);
+ hold_area = start;
+ hold_count = num;
+}
+
+/* Read up to MAX_N_BYTES bytes from the input stream into DEST.
+ Return the number of bytes read. */
+
+static size_t
+read_input (char *dest, size_t max_n_bytes)
+{
+ size_t bytes_read;
+
+ if (max_n_bytes == 0)
+ return 0;
+
+ bytes_read = safe_read (STDIN_FILENO, dest, max_n_bytes);
+
+ if (bytes_read == 0)
+ have_read_eof = true;
+
+ if (bytes_read == SAFE_READ_ERROR)
+ {
+ error (0, errno, _("read error"));
+ cleanup_fatal ();
+ }
+
+ return bytes_read;
+}
+
+/* Initialize existing line record P. */
+
+static void
+clear_line_control (struct line *p)
+{
+ p->used = 0;
+ p->insert_index = 0;
+ p->retrieve_index = 0;
+}
+
+/* Return a new, initialized line record. */
+
+static struct line *
+new_line_control (void)
+{
+ struct line *p = xmalloc (sizeof *p);
+
+ p->next = NULL;
+ clear_line_control (p);
+
+ return p;
+}
+
+/* Record LINE_START, which is the address of the start of a line
+ of length LINE_LEN in the large buffer, in the lines buffer of B. */
+
+static void
+keep_new_line (struct buffer_record *b, char *line_start, size_t line_len)
+{
+ struct line *l;
+
+ /* If there is no existing area to keep line info, get some. */
+ if (b->line_start == NULL)
+ b->line_start = b->curr_line = new_line_control ();
+
+ /* If existing area for lines is full, get more. */
+ if (b->curr_line->used == CTRL_SIZE)
+ {
+ b->curr_line->next = new_line_control ();
+ b->curr_line = b->curr_line->next;
+ }
+
+ l = b->curr_line;
+
+ /* Record the start of the line, and update counters. */
+ l->starts[l->insert_index].str = line_start;
+ l->starts[l->insert_index].len = line_len;
+ l->used++;
+ l->insert_index++;
+}
+
+/* Scan the buffer in B for newline characters
+ and record the line start locations and lengths in B.
+ Return the number of lines found in this buffer.
+
+ There may be an incomplete line at the end of the buffer;
+ a pointer is kept to this area, which will be used when
+ the next buffer is filled. */
+
+static size_t
+record_line_starts (struct buffer_record *b)
+{
+ char *line_start; /* Start of current line. */
+ char *line_end; /* End of each line found. */
+ size_t bytes_left; /* Length of incomplete last line. */
+ size_t lines; /* Number of lines found. */
+ size_t line_length; /* Length of each line found. */
+
+ if (b->bytes_used == 0)
+ return 0;
+
+ lines = 0;
+ line_start = b->buffer;
+ bytes_left = b->bytes_used;
+
+ for (;;)
+ {
+ line_end = memchr (line_start, '\n', bytes_left);
+ if (line_end == NULL)
+ break;
+ line_length = line_end - line_start + 1;
+ keep_new_line (b, line_start, line_length);
+ bytes_left -= line_length;
+ line_start = line_end + 1;
+ lines++;
+ }
+
+ /* Check for an incomplete last line. */
+ if (bytes_left)
+ {
+ if (have_read_eof)
+ {
+ keep_new_line (b, line_start, bytes_left);
+ lines++;
+ }
+ else
+ save_to_hold_area (xmemdup (line_start, bytes_left), bytes_left);
+ }
+
+ b->num_lines = lines;
+ b->first_available = b->start_line = last_line_number + 1;
+ last_line_number += lines;
+
+ return lines;
+}
+
+/* Return a new buffer with room to store SIZE bytes, plus
+ an extra byte for safety. */
+
+static struct buffer_record *
+create_new_buffer (size_t size)
+{
+ struct buffer_record *new_buffer = xmalloc (sizeof *new_buffer);
+
+ new_buffer->buffer = xmalloc (size + 1);
+
+ new_buffer->bytes_alloc = size;
+ new_buffer->line_start = new_buffer->curr_line = NULL;
+
+ return new_buffer;
+}
+
+/* Return a new buffer of at least MINSIZE bytes. If a buffer of at
+ least that size is currently free, use it, otherwise create a new one. */
+
+static struct buffer_record *
+get_new_buffer (size_t min_size)
+{
+ struct buffer_record *new_buffer; /* Buffer to return. */
+ size_t alloc_size; /* Actual size that will be requested. */
+
+ alloc_size = START_SIZE;
+ if (alloc_size < min_size)
+ {
+ size_t s = min_size - alloc_size + INCR_SIZE - 1;
+ alloc_size += s - s % INCR_SIZE;
+ }
+
+ new_buffer = create_new_buffer (alloc_size);
+
+ new_buffer->num_lines = 0;
+ new_buffer->bytes_used = 0;
+ new_buffer->start_line = new_buffer->first_available = last_line_number + 1;
+ new_buffer->next = NULL;
+
+ return new_buffer;
+}
+
+static void
+free_buffer (struct buffer_record *buf)
+{
+ free (buf->buffer);
+ buf->buffer = NULL;
+}
+
+/* Append buffer BUF to the linked list of buffers that contain
+ some data yet to be processed. */
+
+static void
+save_buffer (struct buffer_record *buf)
+{
+ struct buffer_record *p;
+
+ buf->next = NULL;
+ buf->curr_line = buf->line_start;
+
+ if (head == NULL)
+ head = buf;
+ else
+ {
+ for (p = head; p->next; p = p->next)
+ /* Do nothing. */ ;
+ p->next = buf;
+ }
+}
+
+/* Fill a buffer of input.
+
+ Set the initial size of the buffer to a default.
+ Fill the buffer (from the hold area and input stream)
+ and find the individual lines.
+ If no lines are found (the buffer is too small to hold the next line),
+ release the current buffer (whose contents would have been put in the
+ hold area) and repeat the process with another large buffer until at least
+ one entire line has been read.
+
+ Return true if a new buffer was obtained, otherwise false
+ (in which case end-of-file must have been encountered). */
+
+static bool
+load_buffer (void)
+{
+ struct buffer_record *b;
+ size_t bytes_wanted = START_SIZE; /* Minimum buffer size. */
+ size_t bytes_avail; /* Size of new buffer created. */
+ size_t lines_found; /* Number of lines in this new buffer. */
+ char *p; /* Place to load into buffer. */
+
+ if (have_read_eof)
+ return false;
+
+ /* We must make the buffer at least as large as the amount of data
+ in the partial line left over from the last call. */
+ if (bytes_wanted < hold_count)
+ bytes_wanted = hold_count;
+
+ while (1)
+ {
+ b = get_new_buffer (bytes_wanted);
+ bytes_avail = b->bytes_alloc; /* Size of buffer returned. */
+ p = b->buffer;
+
+ /* First check the `holding' area for a partial line. */
+ if (hold_count)
+ {
+ memcpy (p, hold_area, hold_count);
+ p += hold_count;
+ b->bytes_used += hold_count;
+ bytes_avail -= hold_count;
+ hold_count = 0;
+ }
+
+ b->bytes_used += read_input (p, bytes_avail);
+
+ lines_found = record_line_starts (b);
+ if (!lines_found)
+ free_buffer (b);
+
+ if (lines_found || have_read_eof)
+ break;
+
+ if (xalloc_oversized (2, b->bytes_alloc))
+ xalloc_die ();
+ bytes_wanted = 2 * b->bytes_alloc;
+ free_buffer (b);
+ free (b);
+ }
+
+ if (lines_found)
+ save_buffer (b);
+ else
+ free (b);
+
+ return lines_found != 0;
+}
+
+/* Return the line number of the first line that has not yet been retrieved. */
+
+static uintmax_t
+get_first_line_in_buffer (void)
+{
+ if (head == NULL && !load_buffer ())
+ error (EXIT_FAILURE, errno, _("input disappeared"));
+
+ return head->first_available;
+}
+
+/* Return a pointer to the logical first line in the buffer and make the
+ next line the logical first line.
+ Return NULL if there is no more input. */
+
+static struct cstring *
+remove_line (void)
+{
+ /* If non-NULL, this is the buffer for which the previous call
+ returned the final line. So now, presuming that line has been
+ processed, we can free the buffer and reset this pointer. */
+ static struct buffer_record *prev_buf = NULL;
+
+ struct cstring *line; /* Return value. */
+ struct line *l; /* For convenience. */
+
+ if (prev_buf)
+ {
+ free_buffer (prev_buf);
+ prev_buf = NULL;
+ }
+
+ if (head == NULL && !load_buffer ())
+ return NULL;
+
+ if (current_line < head->first_available)
+ current_line = head->first_available;
+
+ ++(head->first_available);
+
+ l = head->curr_line;
+
+ line = &l->starts[l->retrieve_index];
+
+ /* Advance index to next line. */
+ if (++l->retrieve_index == l->used)
+ {
+ /* Go on to the next line record. */
+ head->curr_line = l->next;
+ if (head->curr_line == NULL || head->curr_line->used == 0)
+ {
+ /* Go on to the next data block.
+ but first record the current one so we can free it
+ once the line we're returning has been processed. */
+ prev_buf = head;
+ head = head->next;
+ }
+ }
+
+ return line;
+}
+
+/* Search the buffers for line LINENUM, reading more input if necessary.
+ Return a pointer to the line, or NULL if it is not found in the file. */
+
+static struct cstring *
+find_line (uintmax_t linenum)
+{
+ struct buffer_record *b;
+
+ if (head == NULL && !load_buffer ())
+ return NULL;
+
+ if (linenum < head->start_line)
+ return NULL;
+
+ for (b = head;;)
+ {
+ if (linenum < b->start_line + b->num_lines)
+ {
+ /* The line is in this buffer. */
+ struct line *l;
+ size_t offset; /* How far into the buffer the line is. */
+
+ l = b->line_start;
+ offset = linenum - b->start_line;
+ /* Find the control record. */
+ while (offset >= CTRL_SIZE)
+ {
+ l = l->next;
+ offset -= CTRL_SIZE;
+ }
+ return &l->starts[offset];
+ }
+ if (b->next == NULL && !load_buffer ())
+ return NULL;
+ b = b->next; /* Try the next data block. */
+ }
+}
+
+/* Return true if at least one more line is available for input. */
+
+static bool
+no_more_lines (void)
+{
+ return find_line (current_line + 1) == NULL;
+}
+
+/* Open NAME as standard input. */
+
+static void
+set_input_file (const char *name)
+{
+ if (! STREQ (name, "-") && fd_reopen (STDIN_FILENO, name, O_RDONLY, 0) < 0)
+ error (EXIT_FAILURE, errno, _("cannot open %s for reading"), quote (name));
+}
+
+/* Write all lines from the beginning of the buffer up to, but
+ not including, line LAST_LINE, to the current output file.
+ If IGNORE is true, do not output lines selected here.
+ ARGNUM is the index in ARGV of the current pattern. */
+
+static void
+write_to_file (uintmax_t last_line, bool ignore, int argnum)
+{
+ struct cstring *line;
+ uintmax_t first_line; /* First available input line. */
+ uintmax_t lines; /* Number of lines to output. */
+ uintmax_t i;
+
+ first_line = get_first_line_in_buffer ();
+
+ if (first_line > last_line)
+ {
+ error (0, 0, _("%s: line number out of range"), global_argv[argnum]);
+ cleanup_fatal ();
+ }
+
+ lines = last_line - first_line;
+
+ for (i = 0; i < lines; i++)
+ {
+ line = remove_line ();
+ if (line == NULL)
+ {
+ error (0, 0, _("%s: line number out of range"), global_argv[argnum]);
+ cleanup_fatal ();
+ }
+ if (!ignore)
+ save_line_to_file (line);
+ }
+}
+
+/* Output any lines left after all regexps have been processed. */
+
+static void
+dump_rest_of_file (void)
+{
+ struct cstring *line;
+
+ while ((line = remove_line ()) != NULL)
+ save_line_to_file (line);
+}
+
+/* Handle an attempt to read beyond EOF under the control of record P,
+ on iteration REPETITION if nonzero. */
+
+static void handle_line_error (const struct control *, uintmax_t)
+ ATTRIBUTE_NORETURN;
+static void
+handle_line_error (const struct control *p, uintmax_t repetition)
+{
+ char buf[INT_BUFSIZE_BOUND (uintmax_t)];
+
+ fprintf (stderr, _("%s: %s: line number out of range"),
+ program_name, quote (umaxtostr (p->lines_required, buf)));
+ if (repetition)
+ fprintf (stderr, _(" on repetition %s\n"), umaxtostr (repetition, buf));
+ else
+ fprintf (stderr, "\n");
+
+ cleanup_fatal ();
+}
+
+/* Determine the line number that marks the end of this file,
+ then get those lines and save them to the output file.
+ P is the control record.
+ REPETITION is the repetition number. */
+
+static void
+process_line_count (const struct control *p, uintmax_t repetition)
+{
+ uintmax_t linenum;
+ uintmax_t last_line_to_save = p->lines_required * (repetition + 1);
+ struct cstring *line;
+
+ create_output_file ();
+
+ linenum = get_first_line_in_buffer ();
+
+ while (linenum++ < last_line_to_save)
+ {
+ line = remove_line ();
+ if (line == NULL)
+ handle_line_error (p, repetition);
+ save_line_to_file (line);
+ }
+
+ close_output_file ();
+
+ /* Ensure that the line number specified is not 1 greater than
+ the number of lines in the file. */
+ if (no_more_lines ())
+ handle_line_error (p, repetition);
+}
+
+static void regexp_error (struct control *, uintmax_t, bool) ATTRIBUTE_NORETURN;
+static void
+regexp_error (struct control *p, uintmax_t repetition, bool ignore)
+{
+ fprintf (stderr, _("%s: %s: match not found"),
+ program_name, quote (global_argv[p->argnum]));
+
+ if (repetition)
+ {
+ char buf[INT_BUFSIZE_BOUND (uintmax_t)];
+ fprintf (stderr, _(" on repetition %s\n"), umaxtostr (repetition, buf));
+ }
+ else
+ fprintf (stderr, "\n");
+
+ if (!ignore)
+ {
+ dump_rest_of_file ();
+ close_output_file ();
+ }
+ cleanup_fatal ();
+}
+
+/* Read the input until a line matches the regexp in P, outputting
+ it unless P->IGNORE is true.
+ REPETITION is this repeat-count; 0 means the first time. */
+
+static void
+process_regexp (struct control *p, uintmax_t repetition)
+{
+ struct cstring *line; /* From input file. */
+ size_t line_len; /* To make "$" in regexps work. */
+ uintmax_t break_line; /* First line number of next file. */
+ bool ignore = p->ignore; /* If true, skip this section. */
+ regoff_t ret;
+
+ if (!ignore)
+ create_output_file ();
+
+ /* If there is no offset for the regular expression, or
+ it is positive, then it is not necessary to buffer the lines. */
+
+ if (p->offset >= 0)
+ {
+ for (;;)
+ {
+ line = find_line (++current_line);
+ if (line == NULL)
+ {
+ if (p->repeat_forever)
+ {
+ if (!ignore)
+ {
+ dump_rest_of_file ();
+ close_output_file ();
+ }
+ exit (EXIT_SUCCESS);
+ }
+ else
+ regexp_error (p, repetition, ignore);
+ }
+ line_len = line->len;
+ if (line->str[line_len - 1] == '\n')
+ line_len--;
+ ret = re_search (&p->re_compiled, line->str, line_len,
+ 0, line_len, NULL);
+ if (ret == -2)
+ {
+ error (0, 0, _("error in regular expression search"));
+ cleanup_fatal ();
+ }
+ if (ret == -1)
+ {
+ line = remove_line ();
+ if (!ignore)
+ save_line_to_file (line);
+ }
+ else
+ break;
+ }
+ }
+ else
+ {
+ /* Buffer the lines. */
+ for (;;)
+ {
+ line = find_line (++current_line);
+ if (line == NULL)
+ {
+ if (p->repeat_forever)
+ {
+ if (!ignore)
+ {
+ dump_rest_of_file ();
+ close_output_file ();
+ }
+ exit (EXIT_SUCCESS);
+ }
+ else
+ regexp_error (p, repetition, ignore);
+ }
+ line_len = line->len;
+ if (line->str[line_len - 1] == '\n')
+ line_len--;
+ ret = re_search (&p->re_compiled, line->str, line_len,
+ 0, line_len, NULL);
+ if (ret == -2)
+ {
+ error (0, 0, _("error in regular expression search"));
+ cleanup_fatal ();
+ }
+ if (ret != -1)
+ break;
+ }
+ }
+
+ /* Account for any offset from this regexp. */
+ break_line = current_line + p->offset;
+
+ write_to_file (break_line, ignore, p->argnum);
+
+ if (!ignore)
+ close_output_file ();
+
+ if (p->offset > 0)
+ current_line = break_line;
+}
+
+/* Split the input file according to the control records we have built. */
+
+static void
+split_file (void)
+{
+ size_t i;
+
+ for (i = 0; i < control_used; i++)
+ {
+ uintmax_t j;
+ if (controls[i].regexpr)
+ {
+ for (j = 0; (controls[i].repeat_forever
+ || j <= controls[i].repeat); j++)
+ process_regexp (&controls[i], j);
+ }
+ else
+ {
+ for (j = 0; (controls[i].repeat_forever
+ || j <= controls[i].repeat); j++)
+ process_line_count (&controls[i], j);
+ }
+ }
+
+ create_output_file ();
+ dump_rest_of_file ();
+ close_output_file ();
+}
+
+/* Return the name of output file number NUM.
+
+ This function is called from a signal handler, so it should invoke
+ only reentrant functions that are async-signal-safe. POSIX does
+ not guarantee this for the functions called below, but we don't
+ know of any hosts where this implementation isn't safe. */
+
+static char *
+make_filename (unsigned int num)
+{
+ strcpy (filename_space, prefix);
+ if (suffix)
+ sprintf (filename_space + strlen (prefix), suffix, num);
+ else
+ sprintf (filename_space + strlen (prefix), "%0*u", digits, num);
+ return filename_space;
+}
+
+/* Create the next output file. */
+
+static void
+create_output_file (void)
+{
+ sigset_t oldset;
+ bool fopen_ok;
+ int fopen_errno;
+
+ output_filename = make_filename (files_created);
+
+ /* Create the output file in a critical section, to avoid races. */
+ sigprocmask (SIG_BLOCK, &caught_signals, &oldset);
+ output_stream = fopen (output_filename, "w");
+ fopen_ok = (output_stream != NULL);
+ fopen_errno = errno;
+ files_created += fopen_ok;
+ sigprocmask (SIG_SETMASK, &oldset, NULL);
+
+ if (! fopen_ok)
+ {
+ error (0, fopen_errno, "%s", output_filename);
+ cleanup_fatal ();
+ }
+ bytes_written = 0;
+}
+
+/* If requested, delete all the files we have created. This function
+ must be called only from critical sections. */
+
+static void
+delete_all_files (bool in_signal_handler)
+{
+ unsigned int i;
+
+ if (! remove_files)
+ return;
+
+ for (i = 0; i < files_created; i++)
+ {
+ const char *name = make_filename (i);
+ if (unlink (name) != 0 && !in_signal_handler)
+ error (0, errno, "%s", name);
+ }
+
+ files_created = 0;
+}
+
+/* Close the current output file and print the count
+ of characters in this file. */
+
+static void
+close_output_file (void)
+{
+ if (output_stream)
+ {
+ if (ferror (output_stream))
+ {
+ error (0, 0, _("write error for %s"), quote (output_filename));
+ output_stream = NULL;
+ cleanup_fatal ();
+ }
+ if (fclose (output_stream) != 0)
+ {
+ error (0, errno, "%s", output_filename);
+ output_stream = NULL;
+ cleanup_fatal ();
+ }
+ if (bytes_written == 0 && elide_empty_files)
+ {
+ sigset_t oldset;
+ bool unlink_ok;
+ int unlink_errno;
+
+ /* Remove the output file in a critical section, to avoid races. */
+ sigprocmask (SIG_BLOCK, &caught_signals, &oldset);
+ unlink_ok = (unlink (output_filename) == 0);
+ unlink_errno = errno;
+ files_created -= unlink_ok;
+ sigprocmask (SIG_SETMASK, &oldset, NULL);
+
+ if (! unlink_ok)
+ error (0, unlink_errno, "%s", output_filename);
+ }
+ else
+ {
+ if (!suppress_count)
+ {
+ char buf[INT_BUFSIZE_BOUND (uintmax_t)];
+ fprintf (stdout, "%s\n", umaxtostr (bytes_written, buf));
+ }
+ }
+ output_stream = NULL;
+ }
+}
+
+/* Save line LINE to the output file and
+ increment the character count for the current file. */
+
+static void
+save_line_to_file (const struct cstring *line)
+{
+ fwrite (line->str, sizeof (char), line->len, output_stream);
+ bytes_written += line->len;
+}
+
+/* Return a new, initialized control record. */
+
+static struct control *
+new_control_record (void)
+{
+ static size_t control_allocated = 0; /* Total space allocated. */
+ struct control *p;
+
+ if (control_used == control_allocated)
+ controls = X2NREALLOC (controls, &control_allocated);
+ p = &controls[control_used++];
+ p->regexpr = false;
+ p->repeat = 0;
+ p->repeat_forever = false;
+ p->lines_required = 0;
+ p->offset = 0;
+ return p;
+}
+
+/* Check if there is a numeric offset after a regular expression.
+ STR is the entire command line argument.
+ P is the control record for this regular expression.
+ NUM is the numeric part of STR. */
+
+static void
+check_for_offset (struct control *p, const char *str, const char *num)
+{
+ if (xstrtoimax (num, NULL, 10, &p->offset, "") != LONGINT_OK)
+ error (EXIT_FAILURE, 0, _("%s: integer expected after delimiter"), str);
+}
+
+/* Given that the first character of command line arg STR is '{',
+ make sure that the rest of the string is a valid repeat count
+ and store its value in P.
+ ARGNUM is the ARGV index of STR. */
+
+static void
+parse_repeat_count (int argnum, struct control *p, char *str)
+{
+ uintmax_t val;
+ char *end;
+
+ end = str + strlen (str) - 1;
+ if (*end != '}')
+ error (EXIT_FAILURE, 0, _("%s: `}' is required in repeat count"), str);
+ *end = '\0';
+
+ if (str+1 == end-1 && *(str+1) == '*')
+ p->repeat_forever = true;
+ else
+ {
+ if (xstrtoumax (str + 1, NULL, 10, &val, "") != LONGINT_OK)
+ {
+ error (EXIT_FAILURE, 0,
+ _("%s}: integer required between `{' and `}'"),
+ global_argv[argnum]);
+ }
+ p->repeat = val;
+ }
+
+ *end = '}';
+}
+
+/* Extract the regular expression from STR and check for a numeric offset.
+ STR should start with the regexp delimiter character.
+ Return a new control record for the regular expression.
+ ARGNUM is the ARGV index of STR.
+ Unless IGNORE is true, mark these lines for output. */
+
+static struct control *
+extract_regexp (int argnum, bool ignore, char const *str)
+{
+ size_t len; /* Number of bytes in this regexp. */
+ char delim = *str;
+ char const *closing_delim;
+ struct control *p;
+ const char *err;
+
+ closing_delim = strrchr (str + 1, delim);
+ if (closing_delim == NULL)
+ error (EXIT_FAILURE, 0,
+ _("%s: closing delimiter `%c' missing"), str, delim);
+
+ len = closing_delim - str - 1;
+ p = new_control_record ();
+ p->argnum = argnum;
+ p->ignore = ignore;
+
+ p->regexpr = true;
+ p->re_compiled.buffer = NULL;
+ p->re_compiled.allocated = 0;
+ p->re_compiled.fastmap = xmalloc (UCHAR_MAX + 1);
+ p->re_compiled.translate = NULL;
+ re_syntax_options =
+ RE_SYNTAX_POSIX_BASIC & ~RE_CONTEXT_INVALID_DUP & ~RE_NO_EMPTY_RANGES;
+ err = re_compile_pattern (str + 1, len, &p->re_compiled);
+ if (err)
+ {
+ error (0, 0, _("%s: invalid regular expression: %s"), str, err);
+ cleanup_fatal ();
+ }
+
+ if (closing_delim[1])
+ check_for_offset (p, str, closing_delim + 1);
+
+ return p;
+}
+
+/* Extract the break patterns from args START through ARGC - 1 of ARGV.
+ After each pattern, check if the next argument is a repeat count. */
+
+static void
+parse_patterns (int argc, int start, char **argv)
+{
+ int i; /* Index into ARGV. */
+ struct control *p; /* New control record created. */
+ uintmax_t val;
+ static uintmax_t last_val = 0;
+
+ for (i = start; i < argc; i++)
+ {
+ if (*argv[i] == '/' || *argv[i] == '%')
+ {
+ p = extract_regexp (i, *argv[i] == '%', argv[i]);
+ }
+ else
+ {
+ p = new_control_record ();
+ p->argnum = i;
+
+ if (xstrtoumax (argv[i], NULL, 10, &val, "") != LONGINT_OK)
+ error (EXIT_FAILURE, 0, _("%s: invalid pattern"), argv[i]);
+ if (val == 0)
+ error (EXIT_FAILURE, 0,
+ _("%s: line number must be greater than zero"),
+ argv[i]);
+ if (val < last_val)
+ {
+ char buf[INT_BUFSIZE_BOUND (uintmax_t)];
+ error (EXIT_FAILURE, 0,
+ _("line number %s is smaller than preceding line number, %s"),
+ quote (argv[i]), umaxtostr (last_val, buf));
+ }
+
+ if (val == last_val)
+ error (0, 0,
+ _("warning: line number %s is the same as preceding line number"),
+ quote (argv[i]));
+
+ last_val = val;
+
+ p->lines_required = val;
+ }
+
+ if (i + 1 < argc && *argv[i + 1] == '{')
+ {
+ /* We have a repeat count. */
+ i++;
+ parse_repeat_count (i, p, argv[i]);
+ }
+ }
+}
+
+static unsigned int
+get_format_flags (char **format_ptr)
+{
+ unsigned int count = 0;
+
+ for (; **format_ptr; (*format_ptr)++)
+ {
+ switch (**format_ptr)
+ {
+ case '-':
+ break;
+
+ case '+':
+ case ' ':
+ count |= 1;
+ break;
+
+ case '#':
+ count |= 2; /* Allow for 0x prefix preceding an `x' conversion. */
+ break;
+
+ default:
+ return count;
+ }
+ }
+ return count;
+}
+
+static size_t
+get_format_width (char **format_ptr)
+{
+ unsigned long int val = 0;
+
+ if (ISDIGIT (**format_ptr)
+ && (xstrtoul (*format_ptr, format_ptr, 10, &val, NULL) != LONGINT_OK
+ || SIZE_MAX < val))
+ error (EXIT_FAILURE, 0, _("invalid format width"));
+
+ /* Allow for enough octal digits to represent the value of UINT_MAX,
+ even if the field width is less than that. */
+ return MAX (val, (sizeof (unsigned int) * CHAR_BIT + 2) / 3);
+}
+
+static size_t
+get_format_prec (char **format_ptr)
+{
+ if (**format_ptr != '.')
+ return 0;
+ (*format_ptr)++;
+
+ if (! ISDIGIT (**format_ptr))
+ return 0;
+ else
+ {
+ unsigned long int val;
+ if (xstrtoul (*format_ptr, format_ptr, 10, &val, NULL) != LONGINT_OK
+ || SIZE_MAX < val)
+ error (EXIT_FAILURE, 0, _("invalid format precision"));
+ return val;
+ }
+}
+
+static void
+get_format_conv_type (char **format_ptr)
+{
+ unsigned char ch = *(*format_ptr)++;
+
+ switch (ch)
+ {
+ case 'd':
+ case 'i':
+ case 'o':
+ case 'u':
+ case 'x':
+ case 'X':
+ break;
+
+ case 0:
+ error (EXIT_FAILURE, 0, _("missing conversion specifier in suffix"));
+ break;
+
+ default:
+ if (isprint (ch))
+ error (EXIT_FAILURE, 0,
+ _("invalid conversion specifier in suffix: %c"), ch);
+ else
+ error (EXIT_FAILURE, 0,
+ _("invalid conversion specifier in suffix: \\%.3o"), ch);
+ }
+}
+
+static size_t
+max_out (char *format)
+{
+ size_t out_count = 0;
+ bool percent = false;
+
+ while (*format)
+ {
+ if (*format++ != '%')
+ out_count++;
+ else if (*format == '%')
+ {
+ format++;
+ out_count++;
+ }
+ else
+ {
+ if (percent)
+ error (EXIT_FAILURE, 0,
+ _("too many %% conversion specifications in suffix"));
+ percent = true;
+ out_count += get_format_flags (&format);
+ {
+ size_t width = get_format_width (&format);
+ size_t prec = get_format_prec (&format);
+
+ out_count += MAX (width, prec);
+ }
+ get_format_conv_type (&format);
+ }
+ }
+
+ if (! percent)
+ error (EXIT_FAILURE, 0,
+ _("missing %% conversion specification in suffix"));
+
+ return out_count;
+}
+
+int
+main (int argc, char **argv)
+{
+ int optc;
+ unsigned long int val;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ global_argv = argv;
+ controls = NULL;
+ control_used = 0;
+ suppress_count = false;
+ remove_files = true;
+ prefix = DEFAULT_PREFIX;
+
+ while ((optc = getopt_long (argc, argv, "f:b:kn:sqz", longopts, NULL)) != -1)
+ switch (optc)
+ {
+ case 'f':
+ prefix = optarg;
+ break;
+
+ case 'b':
+ suffix = optarg;
+ break;
+
+ case 'k':
+ remove_files = false;
+ break;
+
+ case 'n':
+ if (xstrtoul (optarg, NULL, 10, &val, "") != LONGINT_OK
+ || val > INT_MAX)
+ error (EXIT_FAILURE, 0, _("%s: invalid number"), optarg);
+ digits = val;
+ break;
+
+ case 's':
+ case 'q':
+ suppress_count = true;
+ break;
+
+ case 'z':
+ elide_empty_files = true;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+
+ if (argc - optind < 2)
+ {
+ if (argc <= optind)
+ error (0, 0, _("missing operand"));
+ else
+ error (0, 0, _("missing operand after %s"), quote (argv[argc - 1]));
+ usage (EXIT_FAILURE);
+ }
+
+ if (suffix)
+ filename_space = xmalloc (strlen (prefix) + max_out (suffix) + 2);
+ else
+ filename_space = xmalloc (strlen (prefix) + digits + 2);
+
+ set_input_file (argv[optind++]);
+
+ parse_patterns (argc, optind, argv);
+
+ {
+ int i;
+ static int const sig[] =
+ {
+ /* The usual suspects. */
+ SIGALRM, SIGHUP, SIGINT, SIGPIPE, SIGQUIT, SIGTERM,
+#ifdef SIGPOLL
+ SIGPOLL,
+#endif
+#ifdef SIGPROF
+ SIGPROF,
+#endif
+#ifdef SIGVTALRM
+ SIGVTALRM,
+#endif
+#ifdef SIGXCPU
+ SIGXCPU,
+#endif
+#ifdef SIGXFSZ
+ SIGXFSZ,
+#endif
+ };
+ enum { nsigs = sizeof sig / sizeof sig[0] };
+
+#if SA_NOCLDSTOP
+ struct sigaction act;
+
+ sigemptyset (&caught_signals);
+ for (i = 0; i < nsigs; i++)
+ {
+ sigaction (sig[i], NULL, &act);
+ if (act.sa_handler != SIG_IGN)
+ sigaddset (&caught_signals, sig[i]);
+ }
+
+ act.sa_handler = interrupt_handler;
+ act.sa_mask = caught_signals;
+ act.sa_flags = 0;
+
+ for (i = 0; i < nsigs; i++)
+ if (sigismember (&caught_signals, sig[i]))
+ sigaction (sig[i], &act, NULL);
+#else
+ for (i = 0; i < nsigs; i++)
+ if (signal (sig[i], SIG_IGN) != SIG_IGN)
+ {
+ signal (sig[i], interrupt_handler);
+ siginterrupt (sig[i], 1);
+ }
+#endif
+ }
+
+ split_file ();
+
+ if (close (STDIN_FILENO) != 0)
+ {
+ error (0, errno, _("read error"));
+ cleanup_fatal ();
+ }
+
+ exit (EXIT_SUCCESS);
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... FILE PATTERN...\n\
+"),
+ program_name);
+ fputs (_("\
+Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,\n\
+and output byte counts of each piece to standard output.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -b, --suffix-format=FORMAT use sprintf FORMAT instead of %02d\n\
+ -f, --prefix=PREFIX use PREFIX instead of `xx'\n\
+ -k, --keep-files do not remove output files on errors\n\
+"), stdout);
+ fputs (_("\
+ -n, --digits=DIGITS use specified number of digits instead of 2\n\
+ -s, --quiet, --silent do not print counts of output file sizes\n\
+ -z, --elide-empty-files remove empty output files\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+Read standard input if FILE is -. Each PATTERN may be:\n\
+"), stdout);
+ fputs (_("\
+\n\
+ INTEGER copy up to but not including specified line number\n\
+ /REGEXP/[OFFSET] copy up to but not including a matching line\n\
+ %REGEXP%[OFFSET] skip to, but not including a matching line\n\
+ {INTEGER} repeat the previous pattern specified number of times\n\
+ {*} repeat the previous pattern as many times as possible\n\
+\n\
+A line OFFSET is a required `+' or `-' followed by a positive integer.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
diff --git a/src/cut.c b/src/cut.c
new file mode 100644
index 0000000..c9b8359
--- /dev/null
+++ b/src/cut.c
@@ -0,0 +1,884 @@
+/* cut - remove parts of lines of files
+ Copyright (C) 1997-2006 Free Software Foundation, Inc.
+ Copyright (C) 1984 David M. Ihnat
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David Ihnat. */
+
+/* POSIX changes, bug fixes, long-named options, and cleanup
+ by David MacKenzie <djm@gnu.ai.mit.edu>.
+
+ Rewrite cut_fields and cut_bytes -- Jim Meyering. */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <assert.h>
+#include <getopt.h>
+#include <sys/types.h>
+#include "system.h"
+
+#include "error.h"
+#include "getndelim2.h"
+#include "hash.h"
+#include "quote.h"
+#include "xstrndup.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "cut"
+
+#define AUTHORS "David Ihnat", "David MacKenzie", "Jim Meyering"
+
+#define FATAL_ERROR(Message) \
+ do \
+ { \
+ error (0, 0, (Message)); \
+ usage (EXIT_FAILURE); \
+ } \
+ while (0)
+
+/* Append LOW, HIGH to the list RP of range pairs, allocating additional
+ space if necessary. Update local variable N_RP. When allocating,
+ update global variable N_RP_ALLOCATED. */
+
+#define ADD_RANGE_PAIR(rp, low, high) \
+ do \
+ { \
+ if (n_rp >= n_rp_allocated) \
+ { \
+ (rp) = X2NREALLOC (rp, &n_rp_allocated); \
+ } \
+ rp[n_rp].lo = (low); \
+ rp[n_rp].hi = (high); \
+ ++n_rp; \
+ } \
+ while (0)
+
+struct range_pair
+ {
+ size_t lo;
+ size_t hi;
+ };
+
+/* This buffer is used to support the semantics of the -s option
+ (or lack of same) when the specified field list includes (does
+ not include) the first field. In both of those cases, the entire
+ first field must be read into this buffer to determine whether it
+ is followed by a delimiter or a newline before any of it may be
+ output. Otherwise, cut_fields can do the job without using this
+ buffer. */
+static char *field_1_buffer;
+
+/* The number of bytes allocated for FIELD_1_BUFFER. */
+static size_t field_1_bufsize;
+
+/* The largest field or byte index used as an endpoint of a closed
+ or degenerate range specification; this doesn't include the starting
+ index of right-open-ended ranges. For example, with either range spec
+ `2-5,9-', `2-3,5,9-' this variable would be set to 5. */
+static size_t max_range_endpoint;
+
+/* If nonzero, this is the index of the first field in a range that goes
+ to end of line. */
+static size_t eol_range_start;
+
+/* This is a bit vector.
+ In byte mode, which bytes to output.
+ In field mode, which DELIM-separated fields to output.
+ Both bytes and fields are numbered starting with 1,
+ so the zeroth bit of this array is unused.
+ A field or byte K has been selected if
+ (K <= MAX_RANGE_ENDPOINT and is_printable_field(K))
+ || (EOL_RANGE_START > 0 && K >= EOL_RANGE_START). */
+static unsigned char *printable_field;
+
+enum operating_mode
+ {
+ undefined_mode,
+
+ /* Output characters that are in the given bytes. */
+ byte_mode,
+
+ /* Output the given delimeter-separated fields. */
+ field_mode
+ };
+
+/* The name this program was run with. */
+char *program_name;
+
+static enum operating_mode operating_mode;
+
+/* If true do not output lines containing no delimeter characters.
+ Otherwise, all such lines are printed. This option is valid only
+ with field mode. */
+static bool suppress_non_delimited;
+
+/* If nonzero, print all bytes, characters, or fields _except_
+ those that were specified. */
+static bool complement;
+
+/* The delimeter character for field mode. */
+static unsigned char delim;
+
+/* True if the --output-delimiter=STRING option was specified. */
+static bool output_delimiter_specified;
+
+/* The length of output_delimiter_string. */
+static size_t output_delimiter_length;
+
+/* The output field separator string. Defaults to the 1-character
+ string consisting of the input delimiter. */
+static char *output_delimiter_string;
+
+/* True if we have ever read standard input. */
+static bool have_read_stdin;
+
+#define HT_RANGE_START_INDEX_INITIAL_CAPACITY 31
+
+/* The set of range-start indices. For example, given a range-spec list like
+ `-b1,3-5,4-9,15-', the following indices will be recorded here: 1, 3, 15.
+ Note that although `4' looks like a range-start index, it is in the middle
+ of the `3-5' range, so it doesn't count.
+ This table is created/used IFF output_delimiter_specified is set. */
+static Hash_table *range_start_ht;
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ OUTPUT_DELIMITER_OPTION = CHAR_MAX + 1,
+ COMPLEMENT_OPTION
+};
+
+static struct option const longopts[] =
+{
+ {"bytes", required_argument, NULL, 'b'},
+ {"characters", required_argument, NULL, 'c'},
+ {"fields", required_argument, NULL, 'f'},
+ {"delimiter", required_argument, NULL, 'd'},
+ {"only-delimited", no_argument, NULL, 's'},
+ {"output-delimiter", required_argument, NULL, OUTPUT_DELIMITER_OPTION},
+ {"complement", no_argument, NULL, COMPLEMENT_OPTION},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [FILE]...\n\
+"),
+ program_name);
+ fputs (_("\
+Print selected parts of lines from each FILE to standard output.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -b, --bytes=LIST select only these bytes\n\
+ -c, --characters=LIST select only these characters\n\
+ -d, --delimiter=DELIM use DELIM instead of TAB for field delimiter\n\
+"), stdout);
+ fputs (_("\
+ -f, --fields=LIST select only these fields; also print any line\n\
+ that contains no delimiter character, unless\n\
+ the -s option is specified\n\
+ -n (ignored)\n\
+"), stdout);
+ fputs (_("\
+ --complement complement the set of selected bytes, characters\n\
+ or fields.\n\
+"), stdout);
+ fputs (_("\
+ -s, --only-delimited do not print lines not containing delimiters\n\
+ --output-delimiter=STRING use STRING as the output delimiter\n\
+ the default is to use the input delimiter\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+Use one, and only one of -b, -c or -f. Each LIST is made up of one\n\
+range, or many ranges separated by commas. Selected input is written\n\
+in the same order that it is read, and is written exactly once.\n\
+"), stdout);
+ fputs (_("\
+Each range is one of:\n\
+\n\
+ N N'th byte, character or field, counted from 1\n\
+ N- from N'th byte, character or field, to end of line\n\
+ N-M from N'th to M'th (included) byte, character or field\n\
+ -M from first to M'th (included) byte, character or field\n\
+\n\
+With no FILE, or when FILE is -, read standard input.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+static inline void
+mark_range_start (size_t i)
+{
+ /* Record the fact that `i' is a range-start index. */
+ void *ent_from_table = hash_insert (range_start_ht, (void*) i);
+ if (ent_from_table == NULL)
+ {
+ /* Insertion failed due to lack of memory. */
+ xalloc_die ();
+ }
+ assert ((size_t) ent_from_table == i);
+}
+
+static inline void
+mark_printable_field (size_t i)
+{
+ size_t n = i / CHAR_BIT;
+ printable_field[n] |= (1 << (i % CHAR_BIT));
+}
+
+static inline bool
+is_printable_field (size_t i)
+{
+ size_t n = i / CHAR_BIT;
+ return (printable_field[n] >> (i % CHAR_BIT)) & 1;
+}
+
+static size_t
+hash_int (const void *x, size_t tablesize)
+{
+#ifdef UINTPTR_MAX
+ uintptr_t y = (uintptr_t) x;
+#else
+ size_t y = (size_t) x;
+#endif
+ return y % tablesize;
+}
+
+static bool
+hash_compare_ints (void const *x, void const *y)
+{
+ return (x == y) ? true : false;
+}
+
+static bool
+is_range_start_index (size_t i)
+{
+ return hash_lookup (range_start_ht, (void *) i) ? true : false;
+}
+
+/* Return nonzero if the K'th field or byte is printable.
+ When returning nonzero, if RANGE_START is non-NULL,
+ set *RANGE_START to true if K is the beginning of a range, and to
+ false otherwise. */
+
+static bool
+print_kth (size_t k, bool *range_start)
+{
+ bool k_selected
+ = ((0 < eol_range_start && eol_range_start <= k)
+ || (k <= max_range_endpoint && is_printable_field (k)));
+
+ bool is_selected = k_selected ^ complement;
+ if (range_start && is_selected)
+ *range_start = is_range_start_index (k);
+
+ return is_selected;
+}
+
+/* Comparison function for qsort to order the list of
+ struct range_pairs. */
+static int
+compare_ranges (const void *a, const void *b)
+{
+ int a_start = ((const struct range_pair *) a)->lo;
+ int b_start = ((const struct range_pair *) b)->lo;
+ return a_start < b_start ? -1 : a_start > b_start;
+}
+
+/* Given the list of field or byte range specifications FIELDSTR, set
+ MAX_RANGE_ENDPOINT and allocate and initialize the PRINTABLE_FIELD
+ array. If there is a right-open-ended range, set EOL_RANGE_START
+ to its starting index. FIELDSTR should be composed of one or more
+ numbers or ranges of numbers, separated by blanks or commas.
+ Incomplete ranges may be given: `-m' means `1-m'; `n-' means `n'
+ through end of line. Return true if FIELDSTR contains at least
+ one field specification, false otherwise. */
+
+/* FIXME-someday: What if the user wants to cut out the 1,000,000-th
+ field of some huge input file? This function shouldn't have to
+ allocate a table of a million bits just so we can test every
+ field < 10^6 with an array dereference. Instead, consider using
+ an adaptive approach: if the range of selected fields is too large,
+ but only a few fields/byte-offsets are actually selected, use a
+ hash table. If the range of selected fields is too large, and
+ too many are selected, then resort to using the range-pairs (the
+ `rp' array) directly. */
+
+static bool
+set_fields (const char *fieldstr)
+{
+ size_t initial = 1; /* Value of first number in a range. */
+ size_t value = 0; /* If nonzero, a number being accumulated. */
+ bool dash_found = false; /* True if a '-' is found in this field. */
+ bool field_found = false; /* True if at least one field spec
+ has been processed. */
+
+ struct range_pair *rp = NULL;
+ size_t n_rp = 0;
+ size_t n_rp_allocated = 0;
+ size_t i;
+ bool in_digits = false;
+
+ /* Collect and store in RP the range end points.
+ It also sets EOL_RANGE_START if appropriate. */
+
+ for (;;)
+ {
+ if (*fieldstr == '-')
+ {
+ in_digits = false;
+ /* Starting a range. */
+ if (dash_found)
+ FATAL_ERROR (_("invalid byte or field list"));
+ dash_found = true;
+ fieldstr++;
+
+ if (value)
+ {
+ initial = value;
+ value = 0;
+ }
+ else
+ initial = 1;
+ }
+ else if (*fieldstr == ',' || isblank (*fieldstr) || *fieldstr == '\0')
+ {
+ in_digits = false;
+ /* Ending the string, or this field/byte sublist. */
+ if (dash_found)
+ {
+ dash_found = false;
+
+ /* A range. Possibilites: -n, m-n, n-.
+ In any case, `initial' contains the start of the range. */
+ if (value == 0)
+ {
+ /* `n-'. From `initial' to end of line. */
+ eol_range_start = initial;
+ field_found = true;
+ }
+ else
+ {
+ /* `m-n' or `-n' (1-n). */
+ if (value < initial)
+ FATAL_ERROR (_("invalid byte or field list"));
+
+ /* Is there already a range going to end of line? */
+ if (eol_range_start != 0)
+ {
+ /* Yes. Is the new sequence already contained
+ in the old one? If so, no processing is
+ necessary. */
+ if (initial < eol_range_start)
+ {
+ /* No, the new sequence starts before the
+ old. Does the old range going to end of line
+ extend into the new range? */
+ if (eol_range_start <= value)
+ {
+ /* Yes. Simply move the end of line marker. */
+ eol_range_start = initial;
+ }
+ else
+ {
+ /* No. A simple range, before and disjoint from
+ the range going to end of line. Fill it. */
+ ADD_RANGE_PAIR (rp, initial, value);
+ }
+
+ /* In any case, some fields were selected. */
+ field_found = true;
+ }
+ }
+ else
+ {
+ /* There is no range going to end of line. */
+ ADD_RANGE_PAIR (rp, initial, value);
+ field_found = true;
+ }
+ value = 0;
+ }
+ }
+ else if (value != 0)
+ {
+ /* A simple field number, not a range. */
+ ADD_RANGE_PAIR (rp, value, value);
+ value = 0;
+ field_found = true;
+ }
+
+ if (*fieldstr == '\0')
+ {
+ break;
+ }
+
+ fieldstr++;
+ }
+ else if (ISDIGIT (*fieldstr))
+ {
+ /* Record beginning of digit string, in case we have to
+ complain about it. */
+ static char const *num_start;
+ if (!in_digits || !num_start)
+ num_start = fieldstr;
+ in_digits = true;
+
+ /* Detect overflow. */
+ if (!DECIMAL_DIGIT_ACCUMULATE (value, *fieldstr - '0', size_t))
+ {
+ /* In case the user specified -c4294967296,22,
+ complain only about the first number. */
+ /* Determine the length of the offending number. */
+ size_t len = strspn (num_start, "0123456789");
+ char *bad_num = xstrndup (num_start, len);
+ if (operating_mode == byte_mode)
+ error (0, 0,
+ _("byte offset %s is too large"), quote (bad_num));
+ else
+ error (0, 0,
+ _("field number %s is too large"), quote (bad_num));
+ free (bad_num);
+ exit (EXIT_FAILURE);
+ }
+
+ fieldstr++;
+ }
+ else
+ FATAL_ERROR (_("invalid byte or field list"));
+ }
+
+ max_range_endpoint = 0;
+ for (i = 0; i < n_rp; i++)
+ {
+ if (rp[i].hi > max_range_endpoint)
+ max_range_endpoint = rp[i].hi;
+ }
+
+ /* Allocate an array large enough so that it may be indexed by
+ the field numbers corresponding to all finite ranges
+ (i.e. `2-6' or `-4', but not `5-') in FIELDSTR. */
+
+ printable_field = xzalloc (max_range_endpoint / CHAR_BIT + 1);
+
+ qsort (rp, n_rp, sizeof (rp[0]), compare_ranges);
+
+ /* Set the array entries corresponding to integers in the ranges of RP. */
+ for (i = 0; i < n_rp; i++)
+ {
+ size_t j;
+ size_t rsi_candidate;
+
+ /* Record the range-start indices, i.e., record each start
+ index that is not part of any other (lo..hi] range. */
+ rsi_candidate = complement ? rp[i].hi + 1 : rp[i].lo;
+ if (output_delimiter_specified
+ && !is_printable_field (rsi_candidate))
+ mark_range_start (rsi_candidate);
+
+ for (j = rp[i].lo; j <= rp[i].hi; j++)
+ mark_printable_field (j);
+ }
+
+ if (output_delimiter_specified
+ && !complement
+ && eol_range_start && !is_printable_field (eol_range_start))
+ mark_range_start (eol_range_start);
+
+ free (rp);
+
+ return field_found;
+}
+
+/* Read from stream STREAM, printing to standard output any selected bytes. */
+
+static void
+cut_bytes (FILE *stream)
+{
+ size_t byte_idx; /* Number of bytes in the line so far. */
+ /* Whether to begin printing delimiters between ranges for the current line.
+ Set after we've begun printing data corresponding to the first range. */
+ bool print_delimiter;
+
+ byte_idx = 0;
+ print_delimiter = false;
+ while (1)
+ {
+ int c; /* Each character from the file. */
+
+ c = getc (stream);
+
+ if (c == '\n')
+ {
+ putchar ('\n');
+ byte_idx = 0;
+ print_delimiter = false;
+ }
+ else if (c == EOF)
+ {
+ if (byte_idx > 0)
+ putchar ('\n');
+ break;
+ }
+ else
+ {
+ bool range_start;
+ bool *rs = output_delimiter_specified ? &range_start : NULL;
+ if (print_kth (++byte_idx, rs))
+ {
+ if (rs && *rs && print_delimiter)
+ {
+ fwrite (output_delimiter_string, sizeof (char),
+ output_delimiter_length, stdout);
+ }
+ print_delimiter = true;
+ putchar (c);
+ }
+ }
+ }
+}
+
+/* Read from stream STREAM, printing to standard output any selected fields. */
+
+static void
+cut_fields (FILE *stream)
+{
+ int c;
+ size_t field_idx = 1;
+ bool found_any_selected_field = false;
+ bool buffer_first_field;
+
+ c = getc (stream);
+ if (c == EOF)
+ return;
+
+ ungetc (c, stream);
+
+ /* To support the semantics of the -s flag, we may have to buffer
+ all of the first field to determine whether it is `delimited.'
+ But that is unnecessary if all non-delimited lines must be printed
+ and the first field has been selected, or if non-delimited lines
+ must be suppressed and the first field has *not* been selected.
+ That is because a non-delimited line has exactly one field. */
+ buffer_first_field = (suppress_non_delimited ^ !print_kth (1, NULL));
+
+ while (1)
+ {
+ if (field_idx == 1 && buffer_first_field)
+ {
+ ssize_t len;
+ size_t n_bytes;
+
+ len = getndelim2 (&field_1_buffer, &field_1_bufsize, 0,
+ GETNLINE_NO_LIMIT, delim, '\n', stream);
+ if (len < 0)
+ {
+ free (field_1_buffer);
+ field_1_buffer = NULL;
+ if (ferror (stream) || feof (stream))
+ break;
+ xalloc_die ();
+ }
+
+ n_bytes = len;
+ assert (n_bytes != 0);
+
+ /* If the first field extends to the end of line (it is not
+ delimited) and we are printing all non-delimited lines,
+ print this one. */
+ if (to_uchar (field_1_buffer[n_bytes - 1]) != delim)
+ {
+ if (suppress_non_delimited)
+ {
+ /* Empty. */
+ }
+ else
+ {
+ fwrite (field_1_buffer, sizeof (char), n_bytes, stdout);
+ /* Make sure the output line is newline terminated. */
+ if (field_1_buffer[n_bytes - 1] != '\n')
+ putchar ('\n');
+ }
+ continue;
+ }
+ if (print_kth (1, NULL))
+ {
+ /* Print the field, but not the trailing delimiter. */
+ fwrite (field_1_buffer, sizeof (char), n_bytes - 1, stdout);
+ found_any_selected_field = true;
+ }
+ ++field_idx;
+ }
+
+ if (c != EOF)
+ {
+ if (print_kth (field_idx, NULL))
+ {
+ if (found_any_selected_field)
+ {
+ fwrite (output_delimiter_string, sizeof (char),
+ output_delimiter_length, stdout);
+ }
+ found_any_selected_field = true;
+
+ while ((c = getc (stream)) != delim && c != '\n' && c != EOF)
+ {
+ putchar (c);
+ }
+ }
+ else
+ {
+ while ((c = getc (stream)) != delim && c != '\n' && c != EOF)
+ {
+ /* Empty. */
+ }
+ }
+ }
+
+ if (c == '\n')
+ {
+ c = getc (stream);
+ if (c != EOF)
+ {
+ ungetc (c, stream);
+ c = '\n';
+ }
+ }
+
+ if (c == delim)
+ ++field_idx;
+ else if (c == '\n' || c == EOF)
+ {
+ if (found_any_selected_field
+ || !(suppress_non_delimited && field_idx == 1))
+ putchar ('\n');
+ if (c == EOF)
+ break;
+ field_idx = 1;
+ found_any_selected_field = false;
+ }
+ }
+}
+
+static void
+cut_stream (FILE *stream)
+{
+ if (operating_mode == byte_mode)
+ cut_bytes (stream);
+ else
+ cut_fields (stream);
+}
+
+/* Process file FILE to standard output.
+ Return true if successful. */
+
+static bool
+cut_file (char const *file)
+{
+ FILE *stream;
+
+ if (STREQ (file, "-"))
+ {
+ have_read_stdin = true;
+ stream = stdin;
+ }
+ else
+ {
+ stream = fopen (file, "r");
+ if (stream == NULL)
+ {
+ error (0, errno, "%s", file);
+ return false;
+ }
+ }
+
+ cut_stream (stream);
+
+ if (ferror (stream))
+ {
+ error (0, errno, "%s", file);
+ return false;
+ }
+ if (STREQ (file, "-"))
+ clearerr (stream); /* Also clear EOF. */
+ else if (fclose (stream) == EOF)
+ {
+ error (0, errno, "%s", file);
+ return false;
+ }
+ return true;
+}
+
+int
+main (int argc, char **argv)
+{
+ int optc;
+ bool ok;
+ bool delim_specified = false;
+ char *spec_list_string IF_LINT(= NULL);
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ operating_mode = undefined_mode;
+
+ /* By default, all non-delimited lines are printed. */
+ suppress_non_delimited = false;
+
+ delim = '\0';
+ have_read_stdin = false;
+
+ while ((optc = getopt_long (argc, argv, "b:c:d:f:ns", longopts, NULL)) != -1)
+ {
+ switch (optc)
+ {
+ case 'b':
+ case 'c':
+ /* Build the byte list. */
+ if (operating_mode != undefined_mode)
+ FATAL_ERROR (_("only one type of list may be specified"));
+ operating_mode = byte_mode;
+ spec_list_string = optarg;
+ break;
+
+ case 'f':
+ /* Build the field list. */
+ if (operating_mode != undefined_mode)
+ FATAL_ERROR (_("only one type of list may be specified"));
+ operating_mode = field_mode;
+ spec_list_string = optarg;
+ break;
+
+ case 'd':
+ /* New delimiter. */
+ /* Interpret -d '' to mean `use the NUL byte as the delimiter.' */
+ if (optarg[0] != '\0' && optarg[1] != '\0')
+ FATAL_ERROR (_("the delimiter must be a single character"));
+ delim = optarg[0];
+ delim_specified = true;
+ break;
+
+ case OUTPUT_DELIMITER_OPTION:
+ output_delimiter_specified = true;
+ /* Interpret --output-delimiter='' to mean
+ `use the NUL byte as the delimiter.' */
+ output_delimiter_length = (optarg[0] == '\0'
+ ? 1 : strlen (optarg));
+ output_delimiter_string = xstrdup (optarg);
+ break;
+
+ case 'n':
+ break;
+
+ case 's':
+ suppress_non_delimited = true;
+ break;
+
+ case COMPLEMENT_OPTION:
+ complement = true;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (operating_mode == undefined_mode)
+ FATAL_ERROR (_("you must specify a list of bytes, characters, or fields"));
+
+ if (delim != '\0' && operating_mode != field_mode)
+ FATAL_ERROR (_("an input delimiter may be specified only\
+ when operating on fields"));
+
+ if (suppress_non_delimited && operating_mode != field_mode)
+ FATAL_ERROR (_("suppressing non-delimited lines makes sense\n\
+\tonly when operating on fields"));
+
+ if (output_delimiter_specified)
+ {
+ range_start_ht = hash_initialize (HT_RANGE_START_INDEX_INITIAL_CAPACITY,
+ NULL, hash_int,
+ hash_compare_ints, NULL);
+ if (range_start_ht == NULL)
+ xalloc_die ();
+
+ }
+
+ if (! set_fields (spec_list_string))
+ {
+ if (operating_mode == field_mode)
+ FATAL_ERROR (_("missing list of fields"));
+ else
+ FATAL_ERROR (_("missing list of positions"));
+ }
+
+ if (!delim_specified)
+ delim = '\t';
+
+ if (output_delimiter_string == NULL)
+ {
+ static char dummy[2];
+ dummy[0] = delim;
+ dummy[1] = '\0';
+ output_delimiter_string = dummy;
+ output_delimiter_length = 1;
+ }
+
+ if (optind == argc)
+ ok = cut_file ("-");
+ else
+ for (ok = true; optind < argc; optind++)
+ ok &= cut_file (argv[optind]);
+
+ if (range_start_ht)
+ hash_free (range_start_ht);
+
+ if (have_read_stdin && fclose (stdin) == EOF)
+ {
+ error (0, errno, "-");
+ ok = false;
+ }
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/date.c b/src/date.c
new file mode 100644
index 0000000..c64ab1c
--- /dev/null
+++ b/src/date.c
@@ -0,0 +1,563 @@
+/* date - print or set the system date and time
+ Copyright (C) 1989-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ David MacKenzie <djm@gnu.ai.mit.edu> */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+
+#include "system.h"
+#include "argmatch.h"
+#include "error.h"
+#include "getdate.h"
+#include "getline.h"
+#include "inttostr.h"
+#include "posixtm.h"
+#include "quote.h"
+#include "stat-time.h"
+#include "fprintftime.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "date"
+
+#define AUTHORS "David MacKenzie"
+
+int putenv ();
+
+static bool show_date (const char *format, struct timespec when);
+
+enum Time_spec
+{
+ /* Display only the date. */
+ TIME_SPEC_DATE,
+ /* Display date, hours, minutes, and seconds. */
+ TIME_SPEC_SECONDS,
+ /* Similar, but display nanoseconds. */
+ TIME_SPEC_NS,
+
+ /* Put these last, since they aren't valid for --rfc-3339. */
+
+ /* Display date and hour. */
+ TIME_SPEC_HOURS,
+ /* Display date, hours, and minutes. */
+ TIME_SPEC_MINUTES
+};
+
+static char const *const time_spec_string[] =
+{
+ /* Put "hours" and "minutes" first, since they aren't valid for
+ --rfc-3339. */
+ "hours", "minutes",
+ "date", "seconds", "ns", NULL
+};
+static enum Time_spec const time_spec[] =
+{
+ TIME_SPEC_HOURS, TIME_SPEC_MINUTES,
+ TIME_SPEC_DATE, TIME_SPEC_SECONDS, TIME_SPEC_NS
+};
+ARGMATCH_VERIFY (time_spec_string, time_spec);
+
+/* A format suitable for Internet RFC 2822. */
+static char const rfc_2822_format[] = "%a, %d %b %Y %H:%M:%S %z";
+
+/* The name this program was run with, for error messages. */
+char *program_name;
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ RFC_3339_OPTION = CHAR_MAX + 1
+};
+
+static char const short_options[] = "d:f:I::r:Rs:u";
+
+static struct option const long_options[] =
+{
+ {"date", required_argument, NULL, 'd'},
+ {"file", required_argument, NULL, 'f'},
+ {"iso-8601", optional_argument, NULL, 'I'}, /* Deprecated. */
+ {"reference", required_argument, NULL, 'r'},
+ {"rfc-822", no_argument, NULL, 'R'},
+ {"rfc-2822", no_argument, NULL, 'R'},
+ {"rfc-3339", required_argument, NULL, RFC_3339_OPTION},
+ {"set", required_argument, NULL, 's'},
+ {"uct", no_argument, NULL, 'u'},
+ {"utc", no_argument, NULL, 'u'},
+ {"universal", no_argument, NULL, 'u'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+#if LOCALTIME_CACHE
+# define TZSET tzset ()
+#else
+# define TZSET /* empty */
+#endif
+
+#ifdef _DATE_FMT
+# define DATE_FMT_LANGINFO() nl_langinfo (_DATE_FMT)
+#else
+# define DATE_FMT_LANGINFO() ""
+#endif
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [+FORMAT]\n\
+ or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n\
+"),
+ program_name, program_name);
+ fputs (_("\
+Display the current time in the given FORMAT, or set the system date.\n\
+\n\
+ -d, --date=STRING display time described by STRING, not `now'\n\
+ -f, --file=DATEFILE like --date once for each line of DATEFILE\n\
+"), stdout);
+ fputs (_("\
+ -r, --reference=FILE display the last modification time of FILE\n\
+ -R, --rfc-2822 output date and time in RFC 2822 format.\n\
+ Example: Mon, 07 Aug 2006 12:34:56 -0600\n\
+"), stdout);
+ fputs (_("\
+ --rfc-3339=TIMESPEC output date and time in RFC 3339 format.\n\
+ TIMESPEC=`date', `seconds', or `ns' for\n\
+ date and time to the indicated precision.\n\
+ Date and time components are separated by\n\
+ a single space: 2006-08-07 12:34:56-06:00\n\
+ -s, --set=STRING set time described by STRING\n\
+ -u, --utc, --universal print or set Coordinated Universal Time\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+FORMAT controls the output. The only valid option for the second form\n\
+specifies Coordinated Universal Time. Interpreted sequences are:\n\
+\n\
+ %% a literal %\n\
+ %a locale's abbreviated weekday name (e.g., Sun)\n\
+"), stdout);
+ fputs (_("\
+ %A locale's full weekday name (e.g., Sunday)\n\
+ %b locale's abbreviated month name (e.g., Jan)\n\
+ %B locale's full month name (e.g., January)\n\
+ %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)\n\
+"), stdout);
+ fputs (_("\
+ %C century; like %Y, except omit last two digits (e.g., 21)\n\
+ %d day of month (e.g, 01)\n\
+ %D date; same as %m/%d/%y\n\
+ %e day of month, space padded; same as %_d\n\
+"), stdout);
+ fputs (_("\
+ %F full date; same as %Y-%m-%d\n\
+ %g last two digits of year of ISO week number (see %G)\n\
+ %G year of ISO week number (see %V); normally useful only with %V\n\
+"), stdout);
+ fputs (_("\
+ %h same as %b\n\
+ %H hour (00..23)\n\
+ %I hour (01..12)\n\
+ %j day of year (001..366)\n\
+"), stdout);
+ fputs (_("\
+ %k hour ( 0..23)\n\
+ %l hour ( 1..12)\n\
+ %m month (01..12)\n\
+ %M minute (00..59)\n\
+"), stdout);
+ fputs (_("\
+ %n a newline\n\
+ %N nanoseconds (000000000..999999999)\n\
+ %p locale's equivalent of either AM or PM; blank if not known\n\
+ %P like %p, but lower case\n\
+ %r locale's 12-hour clock time (e.g., 11:11:04 PM)\n\
+ %R 24-hour hour and minute; same as %H:%M\n\
+ %s seconds since 1970-01-01 00:00:00 UTC\n\
+"), stdout);
+ fputs (_("\
+ %S second (00..60)\n\
+ %t a tab\n\
+ %T time; same as %H:%M:%S\n\
+ %u day of week (1..7); 1 is Monday\n\
+"), stdout);
+ fputs (_("\
+ %U week number of year, with Sunday as first day of week (00..53)\n\
+ %V ISO week number, with Monday as first day of week (01..53)\n\
+ %w day of week (0..6); 0 is Sunday\n\
+ %W week number of year, with Monday as first day of week (00..53)\n\
+"), stdout);
+ fputs (_("\
+ %x locale's date representation (e.g., 12/31/99)\n\
+ %X locale's time representation (e.g., 23:13:48)\n\
+ %y last two digits of year (00..99)\n\
+ %Y year\n\
+"), stdout);
+ fputs (_("\
+ %z +hhmm numeric timezone (e.g., -0400)\n\
+ %:z +hh:mm numeric timezone (e.g., -04:00)\n\
+ %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)\n\
+ %:::z numeric time zone with : to necessary precision (e.g., -04, +05:30)\n\
+ %Z alphabetic time zone abbreviation (e.g., EDT)\n\
+\n\
+By default, date pads numeric fields with zeroes.\n\
+"), stdout);
+ fputs (_("\
+The following optional flags may follow `%':\n\
+\n\
+ - (hyphen) do not pad the field\n\
+ _ (underscore) pad with spaces\n\
+ 0 (zero) pad with zeros\n\
+ ^ use upper case if possible\n\
+ # use opposite case if possible\n\
+"), stdout);
+ fputs (_("\
+\n\
+After any flags comes an optional field width, as a decimal number;\n\
+then an optional modifier, which is either\n\
+E to use the locale's alternate representations if available, or\n\
+O to use the locale's alternate numeric symbols if available.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Parse each line in INPUT_FILENAME as with --date and display each
+ resulting time and date. If the file cannot be opened, tell why
+ then exit. Issue a diagnostic for any lines that cannot be parsed.
+ Return true if successful. */
+
+static bool
+batch_convert (const char *input_filename, const char *format)
+{
+ bool ok;
+ FILE *in_stream;
+ char *line;
+ size_t buflen;
+ struct timespec when;
+
+ if (STREQ (input_filename, "-"))
+ {
+ input_filename = _("standard input");
+ in_stream = stdin;
+ }
+ else
+ {
+ in_stream = fopen (input_filename, "r");
+ if (in_stream == NULL)
+ {
+ error (EXIT_FAILURE, errno, "%s", quote (input_filename));
+ }
+ }
+
+ line = NULL;
+ buflen = 0;
+ ok = true;
+ while (1)
+ {
+ ssize_t line_length = getline (&line, &buflen, in_stream);
+ if (line_length < 0)
+ {
+ /* FIXME: detect/handle error here. */
+ break;
+ }
+
+ if (! get_date (&when, line, NULL))
+ {
+ if (line[line_length - 1] == '\n')
+ line[line_length - 1] = '\0';
+ error (0, 0, _("invalid date %s"), quote (line));
+ ok = false;
+ }
+ else
+ {
+ ok &= show_date (format, when);
+ }
+ }
+
+ if (fclose (in_stream) == EOF)
+ error (EXIT_FAILURE, errno, "%s", quote (input_filename));
+
+ free (line);
+
+ return ok;
+}
+
+int
+main (int argc, char **argv)
+{
+ int optc;
+ const char *datestr = NULL;
+ const char *set_datestr = NULL;
+ struct timespec when;
+ bool set_date = false;
+ char const *format = NULL;
+ char *batch_file = NULL;
+ char *reference = NULL;
+ struct stat refstats;
+ bool ok;
+ int option_specified_date;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ while ((optc = getopt_long (argc, argv, short_options, long_options, NULL))
+ != -1)
+ {
+ char const *new_format = NULL;
+
+ switch (optc)
+ {
+ case 'd':
+ datestr = optarg;
+ break;
+ case 'f':
+ batch_file = optarg;
+ break;
+ case RFC_3339_OPTION:
+ {
+ static char const rfc_3339_format[][32] =
+ {
+ "%Y-%m-%d",
+ "%Y-%m-%d %H:%M:%S%:z",
+ "%Y-%m-%d %H:%M:%S.%N%:z"
+ };
+ enum Time_spec i =
+ XARGMATCH ("--rfc-3339", optarg,
+ time_spec_string + 2, time_spec + 2);
+ new_format = rfc_3339_format[i];
+ break;
+ }
+ case 'I':
+ {
+ static char const iso_8601_format[][32] =
+ {
+ "%Y-%m-%d",
+ "%Y-%m-%dT%H:%M:%S%z",
+ "%Y-%m-%dT%H:%M:%S,%N%z",
+ "%Y-%m-%dT%H%z",
+ "%Y-%m-%dT%H:%M%z"
+ };
+ enum Time_spec i =
+ (optarg
+ ? XARGMATCH ("--iso-8601", optarg, time_spec_string, time_spec)
+ : TIME_SPEC_DATE);
+ new_format = iso_8601_format[i];
+ break;
+ }
+ case 'r':
+ reference = optarg;
+ break;
+ case 'R':
+ new_format = rfc_2822_format;
+ break;
+ case 's':
+ set_datestr = optarg;
+ set_date = true;
+ break;
+ case 'u':
+ /* POSIX says that `date -u' is equivalent to setting the TZ
+ environment variable, so this option should do nothing other
+ than setting TZ. */
+ if (putenv ("TZ=UTC0") != 0)
+ xalloc_die ();
+ TZSET;
+ break;
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ usage (EXIT_FAILURE);
+ }
+
+ if (new_format)
+ {
+ if (format)
+ error (EXIT_FAILURE, 0, _("multiple output formats specified"));
+ format = new_format;
+ }
+ }
+
+ option_specified_date = ((datestr ? 1 : 0)
+ + (batch_file ? 1 : 0)
+ + (reference ? 1 : 0));
+
+ if (option_specified_date > 1)
+ {
+ error (0, 0,
+ _("the options to specify dates for printing are mutually exclusive"));
+ usage (EXIT_FAILURE);
+ }
+
+ if (set_date && option_specified_date)
+ {
+ error (0, 0,
+ _("the options to print and set the time may not be used together"));
+ usage (EXIT_FAILURE);
+ }
+
+ if (optind < argc)
+ {
+ if (optind + 1 < argc)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind + 1]));
+ usage (EXIT_FAILURE);
+ }
+
+ if (argv[optind][0] == '+')
+ {
+ if (format)
+ error (EXIT_FAILURE, 0, _("multiple output formats specified"));
+ format = argv[optind++] + 1;
+ }
+ else if (set_date || option_specified_date)
+ {
+ error (0, 0,
+ _("the argument %s lacks a leading `+';\n"
+ "When using an option to specify date(s), any non-option\n"
+ "argument must be a format string beginning with `+'."),
+ quote (argv[optind]));
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (!format)
+ {
+ format = DATE_FMT_LANGINFO ();
+ if (! *format)
+ {
+ /* Do not wrap the following literal format string with _(...).
+ For example, suppose LC_ALL is unset, LC_TIME="POSIX",
+ and LANG="ko_KR". In that case, POSIX says that LC_TIME
+ determines the format and contents of date and time strings
+ written by date, which means "date" must generate output
+ using the POSIX locale; but adding _() would cause "date"
+ to use a Korean translation of the format. */
+ format = "%a %b %e %H:%M:%S %Z %Y";
+ }
+ }
+
+ if (batch_file != NULL)
+ ok = batch_convert (batch_file, format);
+ else
+ {
+ bool valid_date = true;
+ ok = true;
+
+ if (!option_specified_date && !set_date)
+ {
+ if (optind < argc)
+ {
+ /* Prepare to set system clock to the specified date/time
+ given in the POSIX-format. */
+ set_date = true;
+ datestr = argv[optind];
+ valid_date = posixtime (&when.tv_sec,
+ datestr,
+ (PDS_TRAILING_YEAR
+ | PDS_CENTURY | PDS_SECONDS));
+ when.tv_nsec = 0; /* FIXME: posixtime should set this. */
+ }
+ else
+ {
+ /* Prepare to print the current date/time. */
+ gettime (&when);
+ }
+ }
+ else
+ {
+ /* (option_specified_date || set_date) */
+ if (reference != NULL)
+ {
+ if (stat (reference, &refstats) != 0)
+ error (EXIT_FAILURE, errno, "%s", reference);
+ when = get_stat_mtime (&refstats);
+ }
+ else
+ {
+ if (set_datestr)
+ datestr = set_datestr;
+ valid_date = get_date (&when, datestr, NULL);
+ }
+ }
+
+ if (! valid_date)
+ error (EXIT_FAILURE, 0, _("invalid date %s"), quote (datestr));
+
+ if (set_date)
+ {
+ /* Set the system clock to the specified date, then regardless of
+ the success of that operation, format and print that date. */
+ if (settime (&when) != 0)
+ {
+ error (0, errno, _("cannot set date"));
+ ok = false;
+ }
+ }
+
+ ok &= show_date (format, when);
+ }
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+
+/* Display the date and/or time in WHEN according to the format specified
+ in FORMAT, followed by a newline. Return true if successful. */
+
+static bool
+show_date (const char *format, struct timespec when)
+{
+ struct tm *tm;
+
+ tm = localtime (&when.tv_sec);
+ if (! tm)
+ {
+ char buf[INT_BUFSIZE_BOUND (intmax_t)];
+ error (0, 0, _("time %s is out of range"),
+ (TYPE_SIGNED (time_t)
+ ? imaxtostr (when.tv_sec, buf)
+ : umaxtostr (when.tv_sec, buf)));
+ return false;
+ }
+
+ if (format == rfc_2822_format)
+ setlocale (LC_TIME, "C");
+ fprintftime (stdout, format, tm, 0, when.tv_nsec);
+ fputc ('\n', stdout);
+ if (format == rfc_2822_format)
+ setlocale (LC_TIME, "");
+
+ return true;
+}
diff --git a/src/dcgen b/src/dcgen
new file mode 100755
index 0000000..5df3c56
--- /dev/null
+++ b/src/dcgen
@@ -0,0 +1,57 @@
+#!/usr/bin/perl -w
+# dcgen -- convert dircolors.hin to dircolors.h.
+
+# Copyright (C) 1996, 1998, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# written by Jim Meyering
+
+require 5.002;
+use strict;
+(my $ME = $0) =~ s|.*/||;
+
+# A global destructor to close standard output with error checking.
+sub END
+{
+ defined fileno STDOUT
+ or return;
+ close STDOUT
+ and return;
+ warn "$ME: closing standard output: $!\n";
+ $? ||= 1;
+}
+
+my @line;
+while (<>)
+ {
+ chomp;
+ s/[[:blank:]]+/ /g;
+ $_
+ and push @line, $_;
+ }
+
+my $indent = ' ';
+
+print "static char const G_line[] =\n{\n";
+foreach (@line)
+ {
+ s/./'$&',/g;
+ s/'\\'/'\\\\'/g;
+ s/'''/'\\''/g;
+ print "$indent${_}0,\n";
+ }
+print "};\n";
diff --git a/src/dd.c b/src/dd.c
new file mode 100644
index 0000000..27a4a08
--- /dev/null
+++ b/src/dd.c
@@ -0,0 +1,1744 @@
+/* dd -- convert a file while copying it.
+ Copyright (C) 85, 90, 91, 1995-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Rubin, David MacKenzie, and Stuart Kemp. */
+
+#include <config.h>
+
+#define SWAB_ALIGN_OFFSET 2
+
+#include <sys/types.h>
+#include <signal.h>
+#include <getopt.h>
+
+#include "system.h"
+#include "error.h"
+#include "fd-reopen.h"
+#include "gethrxtime.h"
+#include "getpagesize.h"
+#include "human.h"
+#include "long-options.h"
+#include "quote.h"
+#include "xstrtol.h"
+#include "xtime.h"
+
+static void process_signals (void);
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "dd"
+
+#define AUTHORS "Paul Rubin", "David MacKenzie", "Stuart Kemp"
+
+/* Use SA_NOCLDSTOP as a proxy for whether the sigaction machinery is
+ present. SA_NODEFER and SA_RESETHAND are XSI extensions. */
+#ifndef SA_NOCLDSTOP
+# define SA_NOCLDSTOP 0
+# define sigprocmask(How, Set, Oset) /* empty */
+# define sigset_t int
+# if ! HAVE_SIGINTERRUPT
+# define siginterrupt(sig, flag) /* empty */
+# endif
+#endif
+#ifndef SA_NODEFER
+# define SA_NODEFER 0
+#endif
+#ifndef SA_RESETHAND
+# define SA_RESETHAND 0
+#endif
+
+#ifndef SIGINFO
+# define SIGINFO SIGUSR1
+#endif
+
+#if ! HAVE_FDATASYNC
+# define fdatasync(fd) (errno = ENOSYS, -1)
+#endif
+
+#define max(a, b) ((a) > (b) ? (a) : (b))
+#define output_char(c) \
+ do \
+ { \
+ obuf[oc++] = (c); \
+ if (oc >= output_blocksize) \
+ write_output (); \
+ } \
+ while (0)
+
+/* Default input and output blocksize. */
+#define DEFAULT_BLOCKSIZE 512
+
+/* How many bytes to add to the input and output block sizes before invoking
+ malloc. See dd_copy for details. INPUT_BLOCK_SLOP must be no less than
+ OUTPUT_BLOCK_SLOP. */
+#define INPUT_BLOCK_SLOP (2 * SWAB_ALIGN_OFFSET + 2 * page_size - 1)
+#define OUTPUT_BLOCK_SLOP (page_size - 1)
+
+/* Maximum blocksize for the given SLOP.
+ Keep it smaller than SIZE_MAX - SLOP, so that we can
+ allocate buffers that size. Keep it smaller than SSIZE_MAX, for
+ the benefit of system calls like "read". And keep it smaller than
+ OFF_T_MAX, for the benefit of the large-offset seek code. */
+#define MAX_BLOCKSIZE(slop) MIN (SIZE_MAX - (slop), MIN (SSIZE_MAX, OFF_T_MAX))
+
+/* Conversions bit masks. */
+enum
+ {
+ C_ASCII = 01,
+
+ C_EBCDIC = 02,
+ C_IBM = 04,
+ C_BLOCK = 010,
+ C_UNBLOCK = 020,
+ C_LCASE = 040,
+ C_UCASE = 0100,
+ C_SWAB = 0200,
+ C_NOERROR = 0400,
+ C_NOTRUNC = 01000,
+ C_SYNC = 02000,
+
+ /* Use separate input and output buffers, and combine partial
+ input blocks. */
+ C_TWOBUFS = 04000,
+
+ C_NOCREAT = 010000,
+ C_EXCL = 020000,
+ C_FDATASYNC = 040000,
+ C_FSYNC = 0100000
+ };
+
+/* Status bit masks. */
+enum
+ {
+ STATUS_NOXFER = 01
+ };
+
+/* The name this program was run with. */
+char *program_name;
+
+/* The name of the input file, or NULL for the standard input. */
+static char const *input_file = NULL;
+
+/* The name of the output file, or NULL for the standard output. */
+static char const *output_file = NULL;
+
+/* The page size on this host. */
+static size_t page_size;
+
+/* The number of bytes in which atomic reads are done. */
+static size_t input_blocksize = 0;
+
+/* The number of bytes in which atomic writes are done. */
+static size_t output_blocksize = 0;
+
+/* Conversion buffer size, in bytes. 0 prevents conversions. */
+static size_t conversion_blocksize = 0;
+
+/* Skip this many records of `input_blocksize' bytes before input. */
+static uintmax_t skip_records = 0;
+
+/* Skip this many records of `output_blocksize' bytes before output. */
+static uintmax_t seek_records = 0;
+
+/* Copy only this many records. The default is effectively infinity. */
+static uintmax_t max_records = (uintmax_t) -1;
+
+/* Bit vector of conversions to apply. */
+static int conversions_mask = 0;
+
+/* Open flags for the input and output files. */
+static int input_flags = 0;
+static int output_flags = 0;
+
+/* Status flags for what is printed to stderr. */
+static int status_flags = 0;
+
+/* If nonzero, filter characters through the translation table. */
+static bool translation_needed = false;
+
+/* Number of partial blocks written. */
+static uintmax_t w_partial = 0;
+
+/* Number of full blocks written. */
+static uintmax_t w_full = 0;
+
+/* Number of partial blocks read. */
+static uintmax_t r_partial = 0;
+
+/* Number of full blocks read. */
+static uintmax_t r_full = 0;
+
+/* Number of bytes written. */
+static uintmax_t w_bytes = 0;
+
+/* Time that dd started. */
+static xtime_t start_time;
+
+/* True if input is seekable. */
+static bool input_seekable;
+
+/* Error number corresponding to initial attempt to lseek input.
+ If ESPIPE, do not issue any more diagnostics about it. */
+static int input_seek_errno;
+
+/* File offset of the input, in bytes, along with a flag recording
+ whether it overflowed. The offset is valid only if the input is
+ seekable and if the offset has not overflowed. */
+static uintmax_t input_offset;
+static bool input_offset_overflow;
+
+/* Records truncated by conv=block. */
+static uintmax_t r_truncate = 0;
+
+/* Output representation of newline and space characters.
+ They change if we're converting to EBCDIC. */
+static char newline_character = '\n';
+static char space_character = ' ';
+
+/* Output buffer. */
+static char *obuf;
+
+/* Current index into `obuf'. */
+static size_t oc = 0;
+
+/* Index into current line, for `conv=block' and `conv=unblock'. */
+static size_t col = 0;
+
+/* The set of signals that are caught. */
+static sigset_t caught_signals;
+
+/* If nonzero, the value of the pending fatal signal. */
+static sig_atomic_t volatile interrupt_signal;
+
+/* A count of the number of pending info signals that have been received. */
+static sig_atomic_t volatile info_signal_count;
+
+/* A longest symbol in the struct symbol_values tables below. */
+#define LONGEST_SYMBOL "fdatasync"
+
+/* A symbol and the corresponding integer value. */
+struct symbol_value
+{
+ char symbol[sizeof LONGEST_SYMBOL];
+ int value;
+};
+
+/* Conversion symbols, for conv="...". */
+static struct symbol_value const conversions[] =
+{
+ {"ascii", C_ASCII | C_TWOBUFS}, /* EBCDIC to ASCII. */
+ {"ebcdic", C_EBCDIC | C_TWOBUFS}, /* ASCII to EBCDIC. */
+ {"ibm", C_IBM | C_TWOBUFS}, /* Slightly different ASCII to EBCDIC. */
+ {"block", C_BLOCK | C_TWOBUFS}, /* Variable to fixed length records. */
+ {"unblock", C_UNBLOCK | C_TWOBUFS}, /* Fixed to variable length records. */
+ {"lcase", C_LCASE | C_TWOBUFS}, /* Translate upper to lower case. */
+ {"ucase", C_UCASE | C_TWOBUFS}, /* Translate lower to upper case. */
+ {"swab", C_SWAB | C_TWOBUFS}, /* Swap bytes of input. */
+ {"noerror", C_NOERROR}, /* Ignore i/o errors. */
+ {"nocreat", C_NOCREAT}, /* Do not create output file. */
+ {"excl", C_EXCL}, /* Fail if the output file already exists. */
+ {"notrunc", C_NOTRUNC}, /* Do not truncate output file. */
+ {"sync", C_SYNC}, /* Pad input records to ibs with NULs. */
+ {"fdatasync", C_FDATASYNC}, /* Synchronize output data before finishing. */
+ {"fsync", C_FSYNC}, /* Also synchronize output metadata. */
+ {"", 0}
+};
+
+/* Flags, for iflag="..." and oflag="...". */
+static struct symbol_value const flags[] =
+{
+ {"append", O_APPEND},
+ {"binary", O_BINARY},
+ {"direct", O_DIRECT},
+ {"directory", O_DIRECTORY},
+ {"dsync", O_DSYNC},
+ {"noatime", O_NOATIME},
+ {"noctty", O_NOCTTY},
+ {"nofollow", HAVE_WORKING_O_NOFOLLOW ? O_NOFOLLOW : 0},
+ {"nolinks", O_NOLINKS},
+ {"nonblock", O_NONBLOCK},
+ {"sync", O_SYNC},
+ {"text", O_TEXT},
+ {"", 0}
+};
+
+/* Status, for status="...". */
+static struct symbol_value const statuses[] =
+{
+ {"noxfer", STATUS_NOXFER},
+ {"", 0}
+};
+
+/* Translation table formed by applying successive transformations. */
+static unsigned char trans_table[256];
+
+static char const ascii_to_ebcdic[] =
+{
+ '\000', '\001', '\002', '\003', '\067', '\055', '\056', '\057',
+ '\026', '\005', '\045', '\013', '\014', '\015', '\016', '\017',
+ '\020', '\021', '\022', '\023', '\074', '\075', '\062', '\046',
+ '\030', '\031', '\077', '\047', '\034', '\035', '\036', '\037',
+ '\100', '\117', '\177', '\173', '\133', '\154', '\120', '\175',
+ '\115', '\135', '\134', '\116', '\153', '\140', '\113', '\141',
+ '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
+ '\370', '\371', '\172', '\136', '\114', '\176', '\156', '\157',
+ '\174', '\301', '\302', '\303', '\304', '\305', '\306', '\307',
+ '\310', '\311', '\321', '\322', '\323', '\324', '\325', '\326',
+ '\327', '\330', '\331', '\342', '\343', '\344', '\345', '\346',
+ '\347', '\350', '\351', '\112', '\340', '\132', '\137', '\155',
+ '\171', '\201', '\202', '\203', '\204', '\205', '\206', '\207',
+ '\210', '\211', '\221', '\222', '\223', '\224', '\225', '\226',
+ '\227', '\230', '\231', '\242', '\243', '\244', '\245', '\246',
+ '\247', '\250', '\251', '\300', '\152', '\320', '\241', '\007',
+ '\040', '\041', '\042', '\043', '\044', '\025', '\006', '\027',
+ '\050', '\051', '\052', '\053', '\054', '\011', '\012', '\033',
+ '\060', '\061', '\032', '\063', '\064', '\065', '\066', '\010',
+ '\070', '\071', '\072', '\073', '\004', '\024', '\076', '\341',
+ '\101', '\102', '\103', '\104', '\105', '\106', '\107', '\110',
+ '\111', '\121', '\122', '\123', '\124', '\125', '\126', '\127',
+ '\130', '\131', '\142', '\143', '\144', '\145', '\146', '\147',
+ '\150', '\151', '\160', '\161', '\162', '\163', '\164', '\165',
+ '\166', '\167', '\170', '\200', '\212', '\213', '\214', '\215',
+ '\216', '\217', '\220', '\232', '\233', '\234', '\235', '\236',
+ '\237', '\240', '\252', '\253', '\254', '\255', '\256', '\257',
+ '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',
+ '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',
+ '\312', '\313', '\314', '\315', '\316', '\317', '\332', '\333',
+ '\334', '\335', '\336', '\337', '\352', '\353', '\354', '\355',
+ '\356', '\357', '\372', '\373', '\374', '\375', '\376', '\377'
+};
+
+static char const ascii_to_ibm[] =
+{
+ '\000', '\001', '\002', '\003', '\067', '\055', '\056', '\057',
+ '\026', '\005', '\045', '\013', '\014', '\015', '\016', '\017',
+ '\020', '\021', '\022', '\023', '\074', '\075', '\062', '\046',
+ '\030', '\031', '\077', '\047', '\034', '\035', '\036', '\037',
+ '\100', '\132', '\177', '\173', '\133', '\154', '\120', '\175',
+ '\115', '\135', '\134', '\116', '\153', '\140', '\113', '\141',
+ '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
+ '\370', '\371', '\172', '\136', '\114', '\176', '\156', '\157',
+ '\174', '\301', '\302', '\303', '\304', '\305', '\306', '\307',
+ '\310', '\311', '\321', '\322', '\323', '\324', '\325', '\326',
+ '\327', '\330', '\331', '\342', '\343', '\344', '\345', '\346',
+ '\347', '\350', '\351', '\255', '\340', '\275', '\137', '\155',
+ '\171', '\201', '\202', '\203', '\204', '\205', '\206', '\207',
+ '\210', '\211', '\221', '\222', '\223', '\224', '\225', '\226',
+ '\227', '\230', '\231', '\242', '\243', '\244', '\245', '\246',
+ '\247', '\250', '\251', '\300', '\117', '\320', '\241', '\007',
+ '\040', '\041', '\042', '\043', '\044', '\025', '\006', '\027',
+ '\050', '\051', '\052', '\053', '\054', '\011', '\012', '\033',
+ '\060', '\061', '\032', '\063', '\064', '\065', '\066', '\010',
+ '\070', '\071', '\072', '\073', '\004', '\024', '\076', '\341',
+ '\101', '\102', '\103', '\104', '\105', '\106', '\107', '\110',
+ '\111', '\121', '\122', '\123', '\124', '\125', '\126', '\127',
+ '\130', '\131', '\142', '\143', '\144', '\145', '\146', '\147',
+ '\150', '\151', '\160', '\161', '\162', '\163', '\164', '\165',
+ '\166', '\167', '\170', '\200', '\212', '\213', '\214', '\215',
+ '\216', '\217', '\220', '\232', '\233', '\234', '\235', '\236',
+ '\237', '\240', '\252', '\253', '\254', '\255', '\256', '\257',
+ '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',
+ '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',
+ '\312', '\313', '\314', '\315', '\316', '\317', '\332', '\333',
+ '\334', '\335', '\336', '\337', '\352', '\353', '\354', '\355',
+ '\356', '\357', '\372', '\373', '\374', '\375', '\376', '\377'
+};
+
+static char const ebcdic_to_ascii[] =
+{
+ '\000', '\001', '\002', '\003', '\234', '\011', '\206', '\177',
+ '\227', '\215', '\216', '\013', '\014', '\015', '\016', '\017',
+ '\020', '\021', '\022', '\023', '\235', '\205', '\010', '\207',
+ '\030', '\031', '\222', '\217', '\034', '\035', '\036', '\037',
+ '\200', '\201', '\202', '\203', '\204', '\012', '\027', '\033',
+ '\210', '\211', '\212', '\213', '\214', '\005', '\006', '\007',
+ '\220', '\221', '\026', '\223', '\224', '\225', '\226', '\004',
+ '\230', '\231', '\232', '\233', '\024', '\025', '\236', '\032',
+ '\040', '\240', '\241', '\242', '\243', '\244', '\245', '\246',
+ '\247', '\250', '\133', '\056', '\074', '\050', '\053', '\041',
+ '\046', '\251', '\252', '\253', '\254', '\255', '\256', '\257',
+ '\260', '\261', '\135', '\044', '\052', '\051', '\073', '\136',
+ '\055', '\057', '\262', '\263', '\264', '\265', '\266', '\267',
+ '\270', '\271', '\174', '\054', '\045', '\137', '\076', '\077',
+ '\272', '\273', '\274', '\275', '\276', '\277', '\300', '\301',
+ '\302', '\140', '\072', '\043', '\100', '\047', '\075', '\042',
+ '\303', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
+ '\150', '\151', '\304', '\305', '\306', '\307', '\310', '\311',
+ '\312', '\152', '\153', '\154', '\155', '\156', '\157', '\160',
+ '\161', '\162', '\313', '\314', '\315', '\316', '\317', '\320',
+ '\321', '\176', '\163', '\164', '\165', '\166', '\167', '\170',
+ '\171', '\172', '\322', '\323', '\324', '\325', '\326', '\327',
+ '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337',
+ '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
+ '\173', '\101', '\102', '\103', '\104', '\105', '\106', '\107',
+ '\110', '\111', '\350', '\351', '\352', '\353', '\354', '\355',
+ '\175', '\112', '\113', '\114', '\115', '\116', '\117', '\120',
+ '\121', '\122', '\356', '\357', '\360', '\361', '\362', '\363',
+ '\134', '\237', '\123', '\124', '\125', '\126', '\127', '\130',
+ '\131', '\132', '\364', '\365', '\366', '\367', '\370', '\371',
+ '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067',
+ '\070', '\071', '\372', '\373', '\374', '\375', '\376', '\377'
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPERAND]...\n\
+ or: %s OPTION\n\
+"),
+ program_name, program_name);
+ fputs (_("\
+Copy a file, converting and formatting according to the operands.\n\
+\n\
+ bs=BYTES force ibs=BYTES and obs=BYTES\n\
+ cbs=BYTES convert BYTES bytes at a time\n\
+ conv=CONVS convert the file as per the comma separated symbol list\n\
+ count=BLOCKS copy only BLOCKS input blocks\n\
+ ibs=BYTES read BYTES bytes at a time\n\
+"), stdout);
+ fputs (_("\
+ if=FILE read from FILE instead of stdin\n\
+ iflag=FLAGS read as per the comma separated symbol list\n\
+ obs=BYTES write BYTES bytes at a time\n\
+ of=FILE write to FILE instead of stdout\n\
+ oflag=FLAGS write as per the comma separated symbol list\n\
+ seek=BLOCKS skip BLOCKS obs-sized blocks at start of output\n\
+ skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input\n\
+ status=noxfer suppress transfer statistics\n\
+"), stdout);
+ fputs (_("\
+\n\
+BLOCKS and BYTES may be followed by the following multiplicative suffixes:\n\
+xM M, c 1, w 2, b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,\n\
+GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.\n\
+\n\
+Each CONV symbol may be:\n\
+\n\
+"), stdout);
+ fputs (_("\
+ ascii from EBCDIC to ASCII\n\
+ ebcdic from ASCII to EBCDIC\n\
+ ibm from ASCII to alternate EBCDIC\n\
+ block pad newline-terminated records with spaces to cbs-size\n\
+ unblock replace trailing spaces in cbs-size records with newline\n\
+ lcase change upper case to lower case\n\
+"), stdout);
+ fputs (_("\
+ nocreat do not create the output file\n\
+ excl fail if the output file already exists\n\
+ notrunc do not truncate the output file\n\
+ ucase change lower case to upper case\n\
+ swab swap every pair of input bytes\n\
+"), stdout);
+ fputs (_("\
+ noerror continue after read errors\n\
+ sync pad every input block with NULs to ibs-size; when used\n\
+ with block or unblock, pad with spaces rather than NULs\n\
+ fdatasync physically write output file data before finishing\n\
+ fsync likewise, but also write metadata\n\
+"), stdout);
+ fputs (_("\
+\n\
+Each FLAG symbol may be:\n\
+\n\
+ append append mode (makes sense only for output; conv=notrunc suggested)\n\
+"), stdout);
+ if (O_DIRECT)
+ fputs (_(" direct use direct I/O for data\n"), stdout);
+ if (O_DIRECTORY)
+ fputs (_(" directory fail unless a directory\n"), stdout);
+ if (O_DSYNC)
+ fputs (_(" dsync use synchronized I/O for data\n"), stdout);
+ if (O_SYNC)
+ fputs (_(" sync likewise, but also for metadata\n"), stdout);
+ if (O_NONBLOCK)
+ fputs (_(" nonblock use non-blocking I/O\n"), stdout);
+ if (O_NOATIME)
+ fputs (_(" noatime do not update access time\n"), stdout);
+ if (O_NOCTTY)
+ fputs (_(" noctty do not assign controlling terminal from file\n"),
+ stdout);
+ if (HAVE_WORKING_O_NOFOLLOW)
+ fputs (_(" nofollow do not follow symlinks\n"), stdout);
+ if (O_NOLINKS)
+ fputs (_(" nolinks fail if multiply-linked\n"), stdout);
+ if (O_BINARY)
+ fputs (_(" binary use binary I/O for data\n"), stdout);
+ if (O_TEXT)
+ fputs (_(" text use text I/O for data\n"), stdout);
+
+ {
+ char const *siginfo_name = (SIGINFO == SIGUSR1 ? "USR1" : "INFO");
+ printf (_("\
+\n\
+Sending a %s signal to a running `dd' process makes it\n\
+print I/O statistics to standard error and then resume copying.\n\
+\n\
+ $ dd if=/dev/zero of=/dev/null& pid=$!\n\
+ $ kill -%s $pid; sleep 1; kill $pid\n\
+ 18335302+0 records in\n\
+ 18335302+0 records out\n\
+ 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s\n\
+\n\
+Options are:\n\
+\n\
+"),
+ siginfo_name, siginfo_name);
+ }
+
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+static void
+translate_charset (char const *new_trans)
+{
+ int i;
+
+ for (i = 0; i < 256; i++)
+ trans_table[i] = new_trans[trans_table[i]];
+ translation_needed = true;
+}
+
+/* Return true if I has more than one bit set. I must be nonnegative. */
+
+static inline bool
+multiple_bits_set (int i)
+{
+ return (i & (i - 1)) != 0;
+}
+
+/* Print transfer statistics. */
+
+static void
+print_stats (void)
+{
+ xtime_t now = gethrxtime ();
+ char hbuf[LONGEST_HUMAN_READABLE + 1];
+ int human_opts =
+ (human_autoscale | human_round_to_nearest
+ | human_space_before_unit | human_SI | human_B);
+ double delta_s;
+ char const *bytes_per_second;
+
+ fprintf (stderr,
+ _("%"PRIuMAX"+%"PRIuMAX" records in\n"
+ "%"PRIuMAX"+%"PRIuMAX" records out\n"),
+ r_full, r_partial, w_full, w_partial);
+
+ if (r_truncate != 0)
+ fprintf (stderr,
+ ngettext ("%"PRIuMAX" truncated record\n",
+ "%"PRIuMAX" truncated records\n",
+ select_plural (r_truncate)),
+ r_truncate);
+
+ if (status_flags & STATUS_NOXFER)
+ return;
+
+ /* Use integer arithmetic to compute the transfer rate,
+ since that makes it easy to use SI abbreviations. */
+
+ fprintf (stderr,
+ ngettext ("%"PRIuMAX" byte (%s) copied",
+ "%"PRIuMAX" bytes (%s) copied",
+ select_plural (w_bytes)),
+ w_bytes,
+ human_readable (w_bytes, hbuf, human_opts, 1, 1));
+
+ if (start_time < now)
+ {
+ double XTIME_PRECISIONe0 = XTIME_PRECISION;
+ uintmax_t delta_xtime = now;
+ delta_xtime -= start_time;
+ delta_s = delta_xtime / XTIME_PRECISIONe0;
+ bytes_per_second = human_readable (w_bytes, hbuf, human_opts,
+ XTIME_PRECISION, delta_xtime);
+ }
+ else
+ {
+ delta_s = 0;
+ bytes_per_second = _("Infinity B");
+ }
+
+ /* TRANSLATORS: The two instances of "s" in this string are the SI
+ symbol "s" (meaning second), and should not be translated.
+
+ This format used to be:
+
+ ngettext (", %g second, %s/s\n", ", %g seconds, %s/s\n", delta_s == 1)
+
+ but that was incorrect for languages like Polish. To fix this
+ bug we now use SI symbols even though they're a bit more
+ confusing in English. */
+ fprintf (stderr, _(", %g s, %s/s\n"), delta_s, bytes_per_second);
+}
+
+static void
+cleanup (void)
+{
+ if (close (STDIN_FILENO) < 0)
+ error (EXIT_FAILURE, errno,
+ _("closing input file %s"), quote (input_file));
+
+ /* Don't remove this call to close, even though close_stdout
+ closes standard output. This close is necessary when cleanup
+ is called as part of a signal handler. */
+ if (close (STDOUT_FILENO) < 0)
+ error (EXIT_FAILURE, errno,
+ _("closing output file %s"), quote (output_file));
+}
+
+static inline void ATTRIBUTE_NORETURN
+quit (int code)
+{
+ cleanup ();
+ print_stats ();
+ process_signals ();
+ exit (code);
+}
+
+/* An ordinary signal was received; arrange for the program to exit. */
+
+static void
+interrupt_handler (int sig)
+{
+ if (! SA_RESETHAND)
+ signal (sig, SIG_DFL);
+ interrupt_signal = sig;
+}
+
+/* An info signal was received; arrange for the program to print status. */
+
+static void
+siginfo_handler (int sig)
+{
+ if (! SA_NOCLDSTOP)
+ signal (sig, siginfo_handler);
+ info_signal_count++;
+}
+
+/* Install the signal handlers. */
+
+static void
+install_signal_handlers (void)
+{
+ bool catch_siginfo = ! (SIGINFO == SIGUSR1 && getenv ("POSIXLY_CORRECT"));
+
+#if SA_NOCLDSTOP
+
+ struct sigaction act;
+ sigemptyset (&caught_signals);
+ if (catch_siginfo)
+ {
+ sigaction (SIGINFO, NULL, &act);
+ if (act.sa_handler != SIG_IGN)
+ sigaddset (&caught_signals, SIGINFO);
+ }
+ sigaction (SIGINT, NULL, &act);
+ if (act.sa_handler != SIG_IGN)
+ sigaddset (&caught_signals, SIGINT);
+ act.sa_mask = caught_signals;
+
+ if (sigismember (&caught_signals, SIGINFO))
+ {
+ act.sa_handler = siginfo_handler;
+ act.sa_flags = 0;
+ sigaction (SIGINFO, &act, NULL);
+ }
+
+ if (sigismember (&caught_signals, SIGINT))
+ {
+ /* POSIX 1003.1-2001 says SA_RESETHAND implies SA_NODEFER,
+ but this is not true on Solaris 8 at least. It doesn't
+ hurt to use SA_NODEFER here, so leave it in. */
+ act.sa_handler = interrupt_handler;
+ act.sa_flags = SA_NODEFER | SA_RESETHAND;
+ sigaction (SIGINT, &act, NULL);
+ }
+
+#else
+
+ if (catch_siginfo && signal (SIGINFO, SIG_IGN) != SIG_IGN)
+ {
+ signal (SIGINFO, siginfo_handler);
+ siginterrupt (SIGINFO, 1);
+ }
+ if (signal (SIGINT, SIG_IGN) != SIG_IGN)
+ {
+ signal (SIGINT, interrupt_handler);
+ siginterrupt (SIGINT, 1);
+ }
+#endif
+}
+
+/* Process any pending signals. If signals are caught, this function
+ should be called periodically. Ideally there should never be an
+ unbounded amount of time when signals are not being processed. */
+
+static void
+process_signals (void)
+{
+ while (interrupt_signal | info_signal_count)
+ {
+ int interrupt;
+ int infos;
+ sigset_t oldset;
+
+ sigprocmask (SIG_BLOCK, &caught_signals, &oldset);
+
+ /* Reload interrupt_signal and info_signal_count, in case a new
+ signal was handled before sigprocmask took effect. */
+ interrupt = interrupt_signal;
+ infos = info_signal_count;
+
+ if (infos)
+ info_signal_count = infos - 1;
+
+ sigprocmask (SIG_SETMASK, &oldset, NULL);
+
+ if (interrupt)
+ cleanup ();
+ print_stats ();
+ if (interrupt)
+ raise (interrupt);
+ }
+}
+
+/* Read from FD into the buffer BUF of size SIZE, processing any
+ signals that arrive before bytes are read. Return the number of
+ bytes read if successful, -1 (setting errno) on failure. */
+
+static ssize_t
+iread (int fd, char *buf, size_t size)
+{
+ for (;;)
+ {
+ ssize_t nread;
+ process_signals ();
+ nread = read (fd, buf, size);
+ if (! (nread < 0 && errno == EINTR))
+ return nread;
+ }
+}
+
+/* Write to FD the buffer BUF of size SIZE, processing any signals
+ that arrive. Return the number of bytes written, setting errno if
+ this is less than SIZE. Keep trying if there are partial
+ writes. */
+
+static size_t
+iwrite (int fd, char const *buf, size_t size)
+{
+ size_t total_written = 0;
+
+ while (total_written < size)
+ {
+ ssize_t nwritten;
+ process_signals ();
+ nwritten = write (fd, buf + total_written, size - total_written);
+ if (nwritten < 0)
+ {
+ if (errno != EINTR)
+ break;
+ }
+ else if (nwritten == 0)
+ {
+ /* Some buggy drivers return 0 when one tries to write beyond
+ a device's end. (Example: Linux 1.2.13 on /dev/fd0.)
+ Set errno to ENOSPC so they get a sensible diagnostic. */
+ errno = ENOSPC;
+ break;
+ }
+ else
+ total_written += nwritten;
+ }
+
+ return total_written;
+}
+
+/* Write, then empty, the output buffer `obuf'. */
+
+static void
+write_output (void)
+{
+ size_t nwritten = iwrite (STDOUT_FILENO, obuf, output_blocksize);
+ w_bytes += nwritten;
+ if (nwritten != output_blocksize)
+ {
+ error (0, errno, _("writing to %s"), quote (output_file));
+ if (nwritten != 0)
+ w_partial++;
+ quit (EXIT_FAILURE);
+ }
+ else
+ w_full++;
+ oc = 0;
+}
+
+/* Interpret one "conv=..." or similar operand STR according to the
+ symbols in TABLE, returning the flags specified. If the operand
+ cannot be parsed, use ERROR_MSGID to generate a diagnostic.
+ As a by product, this function replaces each `,' in STR with a NUL byte. */
+
+static int
+parse_symbols (char *str, struct symbol_value const *table,
+ char const *error_msgid)
+{
+ int value = 0;
+
+ do
+ {
+ struct symbol_value const *entry;
+ char *new = strchr (str, ',');
+ if (new != NULL)
+ *new++ = '\0';
+ for (entry = table; ; entry++)
+ {
+ if (! entry->symbol[0])
+ {
+ error (0, 0, _(error_msgid), quote (str));
+ usage (EXIT_FAILURE);
+ }
+ if (STREQ (entry->symbol, str))
+ {
+ if (! entry->value)
+ error (EXIT_FAILURE, 0, _(error_msgid), quote (str));
+ value |= entry->value;
+ break;
+ }
+ }
+ str = new;
+ }
+ while (str);
+
+ return value;
+}
+
+/* Return the value of STR, interpreted as a non-negative decimal integer,
+ optionally multiplied by various values.
+ Set *INVALID if STR does not represent a number in this format. */
+
+static uintmax_t
+parse_integer (const char *str, bool *invalid)
+{
+ uintmax_t n;
+ char *suffix;
+ enum strtol_error e = xstrtoumax (str, &suffix, 10, &n, "bcEGkKMPTwYZ0");
+
+ if (e == LONGINT_INVALID_SUFFIX_CHAR && *suffix == 'x')
+ {
+ uintmax_t multiplier = parse_integer (suffix + 1, invalid);
+
+ if (multiplier != 0 && n * multiplier / multiplier != n)
+ {
+ *invalid = true;
+ return 0;
+ }
+
+ n *= multiplier;
+ }
+ else if (e != LONGINT_OK)
+ {
+ *invalid = true;
+ return 0;
+ }
+
+ return n;
+}
+
+static void
+scanargs (int argc, char **argv)
+{
+ int i;
+ size_t blocksize = 0;
+
+ for (i = optind; i < argc; i++)
+ {
+ char *name, *val;
+
+ name = argv[i];
+ val = strchr (name, '=');
+ if (val == NULL)
+ {
+ error (0, 0, _("unrecognized operand %s"), quote (name));
+ usage (EXIT_FAILURE);
+ }
+ *val++ = '\0';
+
+ if (STREQ (name, "if"))
+ input_file = val;
+ else if (STREQ (name, "of"))
+ output_file = val;
+ else if (STREQ (name, "conv"))
+ conversions_mask |= parse_symbols (val, conversions,
+ N_("invalid conversion: %s"));
+ else if (STREQ (name, "iflag"))
+ input_flags |= parse_symbols (val, flags,
+ N_("invalid input flag: %s"));
+ else if (STREQ (name, "oflag"))
+ output_flags |= parse_symbols (val, flags,
+ N_("invalid output flag: %s"));
+ else if (STREQ (name, "status"))
+ status_flags |= parse_symbols (val, statuses,
+ N_("invalid status flag: %s"));
+ else
+ {
+ bool invalid = false;
+ uintmax_t n = parse_integer (val, &invalid);
+
+ if (STREQ (name, "ibs"))
+ {
+ invalid |= ! (0 < n && n <= MAX_BLOCKSIZE (INPUT_BLOCK_SLOP));
+ input_blocksize = n;
+ conversions_mask |= C_TWOBUFS;
+ }
+ else if (STREQ (name, "obs"))
+ {
+ invalid |= ! (0 < n && n <= MAX_BLOCKSIZE (OUTPUT_BLOCK_SLOP));
+ output_blocksize = n;
+ conversions_mask |= C_TWOBUFS;
+ }
+ else if (STREQ (name, "bs"))
+ {
+ invalid |= ! (0 < n && n <= MAX_BLOCKSIZE (INPUT_BLOCK_SLOP));
+ blocksize = n;
+ }
+ else if (STREQ (name, "cbs"))
+ {
+ invalid |= ! (0 < n && n <= SIZE_MAX);
+ conversion_blocksize = n;
+ }
+ else if (STREQ (name, "skip"))
+ skip_records = n;
+ else if (STREQ (name, "seek"))
+ seek_records = n;
+ else if (STREQ (name, "count"))
+ max_records = n;
+ else
+ {
+ error (0, 0, _("unrecognized operand %s=%s"),
+ quote_n (0, name), quote_n (1, val));
+ usage (EXIT_FAILURE);
+ }
+
+ if (invalid)
+ error (EXIT_FAILURE, 0, _("invalid number %s"), quote (val));
+ }
+ }
+
+ if (blocksize)
+ input_blocksize = output_blocksize = blocksize;
+
+ /* If bs= was given, both `input_blocksize' and `output_blocksize' will
+ have been set to positive values. If either has not been set,
+ bs= was not given, so make sure two buffers are used. */
+ if (input_blocksize == 0 || output_blocksize == 0)
+ conversions_mask |= C_TWOBUFS;
+ if (input_blocksize == 0)
+ input_blocksize = DEFAULT_BLOCKSIZE;
+ if (output_blocksize == 0)
+ output_blocksize = DEFAULT_BLOCKSIZE;
+ if (conversion_blocksize == 0)
+ conversions_mask &= ~(C_BLOCK | C_UNBLOCK);
+
+ if (input_flags & (O_DSYNC | O_SYNC))
+ input_flags |= O_RSYNC;
+
+ if (multiple_bits_set (conversions_mask & (C_ASCII | C_EBCDIC | C_IBM)))
+ error (EXIT_FAILURE, 0, _("cannot combine any two of {ascii,ebcdic,ibm}"));
+ if (multiple_bits_set (conversions_mask & (C_BLOCK | C_UNBLOCK)))
+ error (EXIT_FAILURE, 0, _("cannot combine block and unblock"));
+ if (multiple_bits_set (conversions_mask & (C_LCASE | C_UCASE)))
+ error (EXIT_FAILURE, 0, _("cannot combine lcase and ucase"));
+ if (multiple_bits_set (conversions_mask & (C_EXCL | C_NOCREAT)))
+ error (EXIT_FAILURE, 0, _("cannot combine excl and nocreat"));
+}
+
+/* Fix up translation table. */
+
+static void
+apply_translations (void)
+{
+ int i;
+
+ if (conversions_mask & C_ASCII)
+ translate_charset (ebcdic_to_ascii);
+
+ if (conversions_mask & C_UCASE)
+ {
+ for (i = 0; i < 256; i++)
+ trans_table[i] = toupper (trans_table[i]);
+ translation_needed = true;
+ }
+ else if (conversions_mask & C_LCASE)
+ {
+ for (i = 0; i < 256; i++)
+ trans_table[i] = tolower (trans_table[i]);
+ translation_needed = true;
+ }
+
+ if (conversions_mask & C_EBCDIC)
+ {
+ translate_charset (ascii_to_ebcdic);
+ newline_character = ascii_to_ebcdic['\n'];
+ space_character = ascii_to_ebcdic[' '];
+ }
+ else if (conversions_mask & C_IBM)
+ {
+ translate_charset (ascii_to_ibm);
+ newline_character = ascii_to_ibm['\n'];
+ space_character = ascii_to_ibm[' '];
+ }
+}
+
+/* Apply the character-set translations specified by the user
+ to the NREAD bytes in BUF. */
+
+static void
+translate_buffer (char *buf, size_t nread)
+{
+ char *cp;
+ size_t i;
+
+ for (i = nread, cp = buf; i; i--, cp++)
+ *cp = trans_table[to_uchar (*cp)];
+}
+
+/* If true, the last char from the previous call to `swab_buffer'
+ is saved in `saved_char'. */
+static bool char_is_saved = false;
+
+/* Odd char from previous call. */
+static char saved_char;
+
+/* Swap NREAD bytes in BUF, plus possibly an initial char from the
+ previous call. If NREAD is odd, save the last char for the
+ next call. Return the new start of the BUF buffer. */
+
+static char *
+swab_buffer (char *buf, size_t *nread)
+{
+ char *bufstart = buf;
+ char *cp;
+ size_t i;
+
+ /* Is a char left from last time? */
+ if (char_is_saved)
+ {
+ *--bufstart = saved_char;
+ (*nread)++;
+ char_is_saved = false;
+ }
+
+ if (*nread & 1)
+ {
+ /* An odd number of chars are in the buffer. */
+ saved_char = bufstart[--*nread];
+ char_is_saved = true;
+ }
+
+ /* Do the byte-swapping by moving every second character two
+ positions toward the end, working from the end of the buffer
+ toward the beginning. This way we only move half of the data. */
+
+ cp = bufstart + *nread; /* Start one char past the last. */
+ for (i = *nread / 2; i; i--, cp -= 2)
+ *cp = *(cp - 2);
+
+ return ++bufstart;
+}
+
+/* Add OFFSET to the input offset, setting the overflow flag if
+ necessary. */
+
+static void
+advance_input_offset (uintmax_t offset)
+{
+ input_offset += offset;
+ if (input_offset < offset)
+ input_offset_overflow = true;
+}
+
+/* This is a wrapper for lseek. It detects and warns about a kernel
+ bug that makes lseek a no-op for tape devices, even though the kernel
+ lseek return value suggests that the function succeeded.
+
+ The parameters are the same as those of the lseek function, but
+ with the addition of FILENAME, the name of the file associated with
+ descriptor FDESC. The file name is used solely in the warning that's
+ printed when the bug is detected. Return the same value that lseek
+ would have returned, but when the lseek bug is detected, return -1
+ to indicate that lseek failed.
+
+ The offending behavior has been confirmed with an Exabyte SCSI tape
+ drive accessed via /dev/nst0 on both Linux-2.2.17 and Linux-2.4.16. */
+
+#ifdef __linux__
+
+# include <sys/mtio.h>
+
+# define MT_SAME_POSITION(P, Q) \
+ ((P).mt_resid == (Q).mt_resid \
+ && (P).mt_fileno == (Q).mt_fileno \
+ && (P).mt_blkno == (Q).mt_blkno)
+
+static off_t
+skip_via_lseek (char const *filename, int fdesc, off_t offset, int whence)
+{
+ struct mtget s1;
+ struct mtget s2;
+ bool got_original_tape_position = (ioctl (fdesc, MTIOCGET, &s1) == 0);
+ /* known bad device type */
+ /* && s.mt_type == MT_ISSCSI2 */
+
+ off_t new_position = lseek (fdesc, offset, whence);
+ if (0 <= new_position
+ && got_original_tape_position
+ && ioctl (fdesc, MTIOCGET, &s2) == 0
+ && MT_SAME_POSITION (s1, s2))
+ {
+ error (0, 0, _("warning: working around lseek kernel bug for file (%s)\n\
+ of mt_type=0x%0lx -- see <sys/mtio.h> for the list of types"),
+ filename, s2.mt_type);
+ errno = 0;
+ new_position = -1;
+ }
+
+ return new_position;
+}
+#else
+# define skip_via_lseek(Filename, Fd, Offset, Whence) lseek (Fd, Offset, Whence)
+#endif
+
+/* Throw away RECORDS blocks of BLOCKSIZE bytes on file descriptor FDESC,
+ which is open with read permission for FILE. Store up to BLOCKSIZE
+ bytes of the data at a time in BUF, if necessary. RECORDS must be
+ nonzero. If fdesc is STDIN_FILENO, advance the input offset.
+ Return the number of records remaining, i.e., that were not skipped
+ because EOF was reached. */
+
+static uintmax_t
+skip (int fdesc, char const *file, uintmax_t records, size_t blocksize,
+ char *buf)
+{
+ uintmax_t offset = records * blocksize;
+
+ /* Try lseek and if an error indicates it was an inappropriate operation --
+ or if the file offset is not representable as an off_t --
+ fall back on using read. */
+
+ errno = 0;
+ if (records <= OFF_T_MAX / blocksize
+ && 0 <= skip_via_lseek (file, fdesc, offset, SEEK_CUR))
+ {
+ if (fdesc == STDIN_FILENO)
+ advance_input_offset (offset);
+ return 0;
+ }
+ else
+ {
+ int lseek_errno = errno;
+
+ do
+ {
+ ssize_t nread = iread (fdesc, buf, blocksize);
+ if (nread < 0)
+ {
+ if (fdesc == STDIN_FILENO)
+ {
+ error (0, errno, _("reading %s"), quote (file));
+ if (conversions_mask & C_NOERROR)
+ {
+ print_stats ();
+ continue;
+ }
+ }
+ else
+ error (0, lseek_errno, _("%s: cannot seek"), quote (file));
+ quit (EXIT_FAILURE);
+ }
+
+ if (nread == 0)
+ break;
+ if (fdesc == STDIN_FILENO)
+ advance_input_offset (nread);
+ }
+ while (--records != 0);
+
+ return records;
+ }
+}
+
+/* Advance the input by NBYTES if possible, after a read error.
+ The input file offset may or may not have advanced after the failed
+ read; adjust it to point just after the bad record regardless.
+ Return true if successful, or if the input is already known to not
+ be seekable. */
+
+static bool
+advance_input_after_read_error (size_t nbytes)
+{
+ if (! input_seekable)
+ {
+ if (input_seek_errno == ESPIPE)
+ return true;
+ errno = input_seek_errno;
+ }
+ else
+ {
+ off_t offset;
+ advance_input_offset (nbytes);
+ input_offset_overflow |= (OFF_T_MAX < input_offset);
+ if (input_offset_overflow)
+ {
+ error (0, 0, _("offset overflow while reading file %s"),
+ quote (input_file));
+ return false;
+ }
+ offset = lseek (STDIN_FILENO, 0, SEEK_CUR);
+ if (0 <= offset)
+ {
+ off_t diff;
+ if (offset == input_offset)
+ return true;
+ diff = input_offset - offset;
+ if (! (0 <= diff && diff <= nbytes))
+ error (0, 0, _("warning: invalid file offset after failed read"));
+ if (0 <= skip_via_lseek (input_file, STDIN_FILENO, diff, SEEK_CUR))
+ return true;
+ if (errno == 0)
+ error (0, 0, _("cannot work around kernel bug after all"));
+ }
+ }
+
+ error (0, errno, _("%s: cannot seek"), quote (input_file));
+ return false;
+}
+
+/* Copy NREAD bytes of BUF, with no conversions. */
+
+static void
+copy_simple (char const *buf, size_t nread)
+{
+ const char *start = buf; /* First uncopied char in BUF. */
+
+ do
+ {
+ size_t nfree = MIN (nread, output_blocksize - oc);
+
+ memcpy (obuf + oc, start, nfree);
+
+ nread -= nfree; /* Update the number of bytes left to copy. */
+ start += nfree;
+ oc += nfree;
+ if (oc >= output_blocksize)
+ write_output ();
+ }
+ while (nread != 0);
+}
+
+/* Copy NREAD bytes of BUF, doing conv=block
+ (pad newline-terminated records to `conversion_blocksize',
+ replacing the newline with trailing spaces). */
+
+static void
+copy_with_block (char const *buf, size_t nread)
+{
+ size_t i;
+
+ for (i = nread; i; i--, buf++)
+ {
+ if (*buf == newline_character)
+ {
+ if (col < conversion_blocksize)
+ {
+ size_t j;
+ for (j = col; j < conversion_blocksize; j++)
+ output_char (space_character);
+ }
+ col = 0;
+ }
+ else
+ {
+ if (col == conversion_blocksize)
+ r_truncate++;
+ else if (col < conversion_blocksize)
+ output_char (*buf);
+ col++;
+ }
+ }
+}
+
+/* Copy NREAD bytes of BUF, doing conv=unblock
+ (replace trailing spaces in `conversion_blocksize'-sized records
+ with a newline). */
+
+static void
+copy_with_unblock (char const *buf, size_t nread)
+{
+ size_t i;
+ char c;
+ static size_t pending_spaces = 0;
+
+ for (i = 0; i < nread; i++)
+ {
+ c = buf[i];
+
+ if (col++ >= conversion_blocksize)
+ {
+ col = pending_spaces = 0; /* Wipe out any pending spaces. */
+ i--; /* Push the char back; get it later. */
+ output_char (newline_character);
+ }
+ else if (c == space_character)
+ pending_spaces++;
+ else
+ {
+ /* `c' is the character after a run of spaces that were not
+ at the end of the conversion buffer. Output them. */
+ while (pending_spaces)
+ {
+ output_char (space_character);
+ --pending_spaces;
+ }
+ output_char (c);
+ }
+ }
+}
+
+/* Set the file descriptor flags for FD that correspond to the nonzero bits
+ in ADD_FLAGS. The file's name is NAME. */
+
+static void
+set_fd_flags (int fd, int add_flags, char const *name)
+{
+ /* Ignore file creation flags that are no-ops on file descriptors. */
+ add_flags &= ~ (O_NOCTTY | O_NOFOLLOW);
+
+ if (add_flags)
+ {
+ int old_flags = fcntl (fd, F_GETFL);
+ int new_flags = old_flags | add_flags;
+ bool ok = true;
+ if (old_flags < 0)
+ ok = false;
+ else if (old_flags != new_flags)
+ {
+ if (new_flags & (O_DIRECTORY | O_NOLINKS))
+ {
+ /* NEW_FLAGS contains at least one file creation flag that
+ requires some checking of the open file descriptor. */
+ struct stat st;
+ if (fstat (fd, &st) != 0)
+ ok = false;
+ else if ((new_flags & O_DIRECTORY) && ! S_ISDIR (st.st_mode))
+ {
+ errno = ENOTDIR;
+ ok = false;
+ }
+ else if ((new_flags & O_NOLINKS) && 1 < st.st_nlink)
+ {
+ errno = EMLINK;
+ ok = false;
+ }
+ new_flags &= ~ (O_DIRECTORY | O_NOLINKS);
+ }
+
+ if (ok && old_flags != new_flags
+ && fcntl (fd, F_SETFL, new_flags) == -1)
+ ok = false;
+ }
+
+ if (!ok)
+ error (EXIT_FAILURE, errno, _("setting flags for %s"), quote (name));
+ }
+}
+
+/* The main loop. */
+
+static int
+dd_copy (void)
+{
+ char *ibuf, *bufstart; /* Input buffer. */
+ /* These are declared static so that even though we don't free the
+ buffers, valgrind will recognize that there is no "real" leak. */
+ static char *real_buf; /* real buffer address before alignment */
+ static char *real_obuf;
+ ssize_t nread; /* Bytes read in the current block. */
+
+ /* If nonzero, then the previously read block was partial and
+ PARTREAD was its size. */
+ size_t partread = 0;
+
+ int exit_status = EXIT_SUCCESS;
+ size_t n_bytes_read;
+
+ /* Leave at least one extra byte at the beginning and end of `ibuf'
+ for conv=swab, but keep the buffer address even. But some peculiar
+ device drivers work only with word-aligned buffers, so leave an
+ extra two bytes. */
+
+ /* Some devices require alignment on a sector or page boundary
+ (e.g. character disk devices). Align the input buffer to a
+ page boundary to cover all bases. Note that due to the swab
+ algorithm, we must have at least one byte in the page before
+ the input buffer; thus we allocate 2 pages of slop in the
+ real buffer. 8k above the blocksize shouldn't bother anyone.
+
+ The page alignment is necessary on any linux system that supports
+ either the SGI raw I/O patch or Steven Tweedies raw I/O patch.
+ It is necessary when accessing raw (i.e. character special) disk
+ devices on Unixware or other SVR4-derived system. */
+
+ real_buf = xmalloc (input_blocksize + INPUT_BLOCK_SLOP);
+ ibuf = real_buf;
+ ibuf += SWAB_ALIGN_OFFSET; /* allow space for swab */
+
+ ibuf = ptr_align (ibuf, page_size);
+
+ if (conversions_mask & C_TWOBUFS)
+ {
+ /* Page-align the output buffer, too. */
+ real_obuf = xmalloc (output_blocksize + OUTPUT_BLOCK_SLOP);
+ obuf = ptr_align (real_obuf, page_size);
+ }
+ else
+ {
+ real_obuf = NULL;
+ obuf = ibuf;
+ }
+
+ if (skip_records != 0)
+ {
+ skip (STDIN_FILENO, input_file, skip_records, input_blocksize, ibuf);
+ /* POSIX doesn't say what to do when dd detects it has been
+ asked to skip past EOF, so I assume it's non-fatal if the
+ call to 'skip' returns nonzero. FIXME: maybe give a warning. */
+ }
+
+ if (seek_records != 0)
+ {
+ uintmax_t write_records = skip (STDOUT_FILENO, output_file,
+ seek_records, output_blocksize, obuf);
+
+ if (write_records != 0)
+ {
+ memset (obuf, 0, output_blocksize);
+
+ do
+ if (iwrite (STDOUT_FILENO, obuf, output_blocksize)
+ != output_blocksize)
+ {
+ error (0, errno, _("writing to %s"), quote (output_file));
+ quit (EXIT_FAILURE);
+ }
+ while (--write_records != 0);
+ }
+ }
+
+ if (max_records == 0)
+ return exit_status;
+
+ while (1)
+ {
+ if (r_partial + r_full >= max_records)
+ break;
+
+ /* Zero the buffer before reading, so that if we get a read error,
+ whatever data we are able to read is followed by zeros.
+ This minimizes data loss. */
+ if ((conversions_mask & C_SYNC) && (conversions_mask & C_NOERROR))
+ memset (ibuf,
+ (conversions_mask & (C_BLOCK | C_UNBLOCK)) ? ' ' : '\0',
+ input_blocksize);
+
+ nread = iread (STDIN_FILENO, ibuf, input_blocksize);
+
+ if (nread == 0)
+ break; /* EOF. */
+
+ if (nread < 0)
+ {
+ error (0, errno, _("reading %s"), quote (input_file));
+ if (conversions_mask & C_NOERROR)
+ {
+ print_stats ();
+ /* Seek past the bad block if possible. */
+ if (!advance_input_after_read_error (input_blocksize - partread))
+ {
+ exit_status = EXIT_FAILURE;
+
+ /* Suppress duplicate diagnostics. */
+ input_seekable = false;
+ input_seek_errno = ESPIPE;
+ }
+ if ((conversions_mask & C_SYNC) && !partread)
+ /* Replace the missing input with null bytes and
+ proceed normally. */
+ nread = 0;
+ else
+ continue;
+ }
+ else
+ {
+ /* Write any partial block. */
+ exit_status = EXIT_FAILURE;
+ break;
+ }
+ }
+
+ n_bytes_read = nread;
+ advance_input_offset (nread);
+
+ if (n_bytes_read < input_blocksize)
+ {
+ r_partial++;
+ partread = n_bytes_read;
+ if (conversions_mask & C_SYNC)
+ {
+ if (!(conversions_mask & C_NOERROR))
+ /* If C_NOERROR, we zeroed the block before reading. */
+ memset (ibuf + n_bytes_read,
+ (conversions_mask & (C_BLOCK | C_UNBLOCK)) ? ' ' : '\0',
+ input_blocksize - n_bytes_read);
+ n_bytes_read = input_blocksize;
+ }
+ }
+ else
+ {
+ r_full++;
+ partread = 0;
+ }
+
+ if (ibuf == obuf) /* If not C_TWOBUFS. */
+ {
+ size_t nwritten = iwrite (STDOUT_FILENO, obuf, n_bytes_read);
+ w_bytes += nwritten;
+ if (nwritten != n_bytes_read)
+ {
+ error (0, errno, _("writing %s"), quote (output_file));
+ return EXIT_FAILURE;
+ }
+ else if (n_bytes_read == input_blocksize)
+ w_full++;
+ else
+ w_partial++;
+ continue;
+ }
+
+ /* Do any translations on the whole buffer at once. */
+
+ if (translation_needed)
+ translate_buffer (ibuf, n_bytes_read);
+
+ if (conversions_mask & C_SWAB)
+ bufstart = swab_buffer (ibuf, &n_bytes_read);
+ else
+ bufstart = ibuf;
+
+ if (conversions_mask & C_BLOCK)
+ copy_with_block (bufstart, n_bytes_read);
+ else if (conversions_mask & C_UNBLOCK)
+ copy_with_unblock (bufstart, n_bytes_read);
+ else
+ copy_simple (bufstart, n_bytes_read);
+ }
+
+ /* If we have a char left as a result of conv=swab, output it. */
+ if (char_is_saved)
+ {
+ if (conversions_mask & C_BLOCK)
+ copy_with_block (&saved_char, 1);
+ else if (conversions_mask & C_UNBLOCK)
+ copy_with_unblock (&saved_char, 1);
+ else
+ output_char (saved_char);
+ }
+
+ if ((conversions_mask & C_BLOCK) && col > 0)
+ {
+ /* If the final input line didn't end with a '\n', pad
+ the output block to `conversion_blocksize' chars. */
+ size_t i;
+ for (i = col; i < conversion_blocksize; i++)
+ output_char (space_character);
+ }
+
+ if ((conversions_mask & C_UNBLOCK) && col == conversion_blocksize)
+ /* Add a final '\n' if there are exactly `conversion_blocksize'
+ characters in the final record. */
+ output_char (newline_character);
+
+ /* Write out the last block. */
+ if (oc != 0)
+ {
+ size_t nwritten = iwrite (STDOUT_FILENO, obuf, oc);
+ w_bytes += nwritten;
+ if (nwritten != 0)
+ w_partial++;
+ if (nwritten != oc)
+ {
+ error (0, errno, _("writing %s"), quote (output_file));
+ return EXIT_FAILURE;
+ }
+ }
+
+ if ((conversions_mask & C_FDATASYNC) && fdatasync (STDOUT_FILENO) != 0)
+ {
+ if (errno != ENOSYS && errno != EINVAL)
+ {
+ error (0, errno, _("fdatasync failed for %s"), quote (output_file));
+ exit_status = EXIT_FAILURE;
+ }
+ conversions_mask |= C_FSYNC;
+ }
+
+ if (conversions_mask & C_FSYNC)
+ while (fsync (STDOUT_FILENO) != 0)
+ if (errno != EINTR)
+ {
+ error (0, errno, _("fsync failed for %s"), quote (output_file));
+ return EXIT_FAILURE;
+ }
+
+ return exit_status;
+}
+
+int
+main (int argc, char **argv)
+{
+ int i;
+ int exit_status;
+ off_t offset;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ /* Arrange to close stdout if parse_long_options exits. */
+ atexit (close_stdout);
+
+ page_size = getpagesize ();
+
+ parse_long_options (argc, argv, PROGRAM_NAME, PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "", NULL, NULL) != -1)
+ usage (EXIT_FAILURE);
+
+ /* Initialize translation table to identity translation. */
+ for (i = 0; i < 256; i++)
+ trans_table[i] = i;
+
+ /* Decode arguments. */
+ scanargs (argc, argv);
+
+ apply_translations ();
+
+ if (input_file == NULL)
+ {
+ input_file = _("standard input");
+ set_fd_flags (STDIN_FILENO, input_flags, input_file);
+ }
+ else
+ {
+ if (fd_reopen (STDIN_FILENO, input_file, O_RDONLY | input_flags, 0) < 0)
+ error (EXIT_FAILURE, errno, _("opening %s"), quote (input_file));
+ }
+
+ offset = lseek (STDIN_FILENO, 0, SEEK_CUR);
+ input_seekable = (0 <= offset);
+ input_offset = offset;
+ input_seek_errno = errno;
+
+ if (output_file == NULL)
+ {
+ output_file = _("standard output");
+ set_fd_flags (STDOUT_FILENO, output_flags, output_file);
+ }
+ else
+ {
+ mode_t perms = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
+ int opts
+ = (output_flags
+ | (conversions_mask & C_NOCREAT ? 0 : O_CREAT)
+ | (conversions_mask & C_EXCL ? O_EXCL : 0)
+ | (seek_records || (conversions_mask & C_NOTRUNC) ? 0 : O_TRUNC));
+
+ /* Open the output file with *read* access only if we might
+ need to read to satisfy a `seek=' request. If we can't read
+ the file, go ahead with write-only access; it might work. */
+ if ((! seek_records
+ || fd_reopen (STDOUT_FILENO, output_file, O_RDWR | opts, perms) < 0)
+ && (fd_reopen (STDOUT_FILENO, output_file, O_WRONLY | opts, perms)
+ < 0))
+ error (EXIT_FAILURE, errno, _("opening %s"), quote (output_file));
+
+#if HAVE_FTRUNCATE
+ if (seek_records != 0 && !(conversions_mask & C_NOTRUNC))
+ {
+ uintmax_t size = seek_records * output_blocksize;
+ unsigned long int obs = output_blocksize;
+
+ if (OFF_T_MAX / output_blocksize < seek_records)
+ error (EXIT_FAILURE, 0,
+ _("offset too large: "
+ "cannot truncate to a length of seek=%"PRIuMAX""
+ " (%lu-byte) blocks"),
+ seek_records, obs);
+
+ if (ftruncate (STDOUT_FILENO, size) != 0)
+ {
+ /* Complain only when ftruncate fails on a regular file, a
+ directory, or a shared memory object, as POSIX 1003.1-2004
+ specifies ftruncate's behavior only for these file types.
+ For example, do not complain when Linux 2.4 ftruncate
+ fails on /dev/fd0. */
+ int ftruncate_errno = errno;
+ struct stat stdout_stat;
+ if (fstat (STDOUT_FILENO, &stdout_stat) != 0)
+ error (EXIT_FAILURE, errno, _("cannot fstat %s"),
+ quote (output_file));
+ if (S_ISREG (stdout_stat.st_mode)
+ || S_ISDIR (stdout_stat.st_mode)
+ || S_TYPEISSHM (&stdout_stat))
+ error (EXIT_FAILURE, ftruncate_errno,
+ _("truncating at %"PRIuMAX" bytes in output file %s"),
+ size, quote (output_file));
+ }
+ }
+#endif
+ }
+
+ install_signal_handlers ();
+
+ start_time = gethrxtime ();
+
+ exit_status = dd_copy ();
+
+ quit (exit_status);
+}
diff --git a/src/df.c b/src/df.c
new file mode 100644
index 0000000..609787e
--- /dev/null
+++ b/src/df.c
@@ -0,0 +1,967 @@
+/* df - summarize free disk space
+ Copyright (C) 91, 1995-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David MacKenzie <djm@gnu.ai.mit.edu>.
+ --human-readable and --megabyte options added by lm@sgi.com.
+ --si and large file support added by eggert@twinsun.com. */
+
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <getopt.h>
+
+#include "system.h"
+#include "canonicalize.h"
+#include "error.h"
+#include "fsusage.h"
+#include "human.h"
+#include "inttostr.h"
+#include "mountlist.h"
+#include "quote.h"
+#include "save-cwd.h"
+#include "xgetcwd.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "df"
+
+#define AUTHORS \
+ "Torbjorn Granlund", "David MacKenzie", "Paul Eggert"
+
+/* Name this program was run with. */
+char *program_name;
+
+/* If true, show inode information. */
+static bool inode_format;
+
+/* If true, show even file systems with zero size or
+ uninteresting types. */
+static bool show_all_fs;
+
+/* If true, show only local file systems. */
+static bool show_local_fs;
+
+/* If true, output data for each file system corresponding to a
+ command line argument -- even if it's a dummy (automounter) entry. */
+static bool show_listed_fs;
+
+/* Human-readable options for output. */
+static int human_output_opts;
+
+/* The units to use when printing sizes. */
+static uintmax_t output_block_size;
+
+/* If true, use the POSIX output format. */
+static bool posix_format;
+
+/* True if a file system has been processed for output. */
+static bool file_systems_processed;
+
+/* If true, invoke the `sync' system call before getting any usage data.
+ Using this option can make df very slow, especially with many or very
+ busy disks. Note that this may make a difference on some systems --
+ SunOS 4.1.3, for one. It is *not* necessary on Linux. */
+static bool require_sync;
+
+/* Desired exit status. */
+static int exit_status;
+
+/* A file system type to display. */
+
+struct fs_type_list
+{
+ char *fs_name;
+ struct fs_type_list *fs_next;
+};
+
+/* Linked list of file system types to display.
+ If `fs_select_list' is NULL, list all types.
+ This table is generated dynamically from command-line options,
+ rather than hardcoding into the program what it thinks are the
+ valid file system types; let the user specify any file system type
+ they want to, and if there are any file systems of that type, they
+ will be shown.
+
+ Some file system types:
+ 4.2 4.3 ufs nfs swap ignore io vm efs dbg */
+
+static struct fs_type_list *fs_select_list;
+
+/* Linked list of file system types to omit.
+ If the list is empty, don't exclude any types. */
+
+static struct fs_type_list *fs_exclude_list;
+
+/* Linked list of mounted file systems. */
+static struct mount_entry *mount_list;
+
+/* If true, print file system type as well. */
+static bool print_type;
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ NO_SYNC_OPTION = CHAR_MAX + 1,
+ /* FIXME: --kilobytes is deprecated (but not -k); remove in late 2006 */
+ KILOBYTES_LONG_OPTION,
+ SYNC_OPTION
+};
+
+static struct option const long_options[] =
+{
+ {"all", no_argument, NULL, 'a'},
+ {"block-size", required_argument, NULL, 'B'},
+ {"inodes", no_argument, NULL, 'i'},
+ {"human-readable", no_argument, NULL, 'h'},
+ {"si", no_argument, NULL, 'H'},
+ {"kilobytes", no_argument, NULL, KILOBYTES_LONG_OPTION},
+ {"local", no_argument, NULL, 'l'},
+ {"megabytes", no_argument, NULL, 'm'}, /* obsolescent */
+ {"portability", no_argument, NULL, 'P'},
+ {"print-type", no_argument, NULL, 'T'},
+ {"sync", no_argument, NULL, SYNC_OPTION},
+ {"no-sync", no_argument, NULL, NO_SYNC_OPTION},
+ {"type", required_argument, NULL, 't'},
+ {"exclude-type", required_argument, NULL, 'x'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+static void
+print_header (void)
+{
+ char buf[MAX (LONGEST_HUMAN_READABLE + 1, INT_BUFSIZE_BOUND (uintmax_t))];
+
+ if (print_type)
+ fputs (_("Filesystem Type"), stdout);
+ else
+ fputs (_("Filesystem "), stdout);
+
+ if (inode_format)
+ printf (_(" Inodes IUsed IFree IUse%%"));
+ else if (human_output_opts & human_autoscale)
+ {
+ if (human_output_opts & human_base_1024)
+ printf (_(" Size Used Avail Use%%"));
+ else
+ printf (_(" Size Used Avail Use%%"));
+ }
+ else if (posix_format)
+ printf (_(" %s-blocks Used Available Capacity"),
+ umaxtostr (output_block_size, buf));
+ else
+ {
+ int opts = (human_suppress_point_zero
+ | human_autoscale | human_SI
+ | (human_output_opts
+ & (human_group_digits | human_base_1024 | human_B)));
+
+ /* Prefer the base that makes the human-readable value more exact,
+ if there is a difference. */
+
+ uintmax_t q1000 = output_block_size;
+ uintmax_t q1024 = output_block_size;
+ bool divisible_by_1000;
+ bool divisible_by_1024;
+
+ do
+ {
+ divisible_by_1000 = q1000 % 1000 == 0; q1000 /= 1000;
+ divisible_by_1024 = q1024 % 1024 == 0; q1024 /= 1024;
+ }
+ while (divisible_by_1000 & divisible_by_1024);
+
+ if (divisible_by_1000 < divisible_by_1024)
+ opts |= human_base_1024;
+ if (divisible_by_1024 < divisible_by_1000)
+ opts &= ~human_base_1024;
+ if (! (opts & human_base_1024))
+ opts |= human_B;
+
+ printf (_(" %4s-blocks Used Available Use%%"),
+ human_readable (output_block_size, buf, opts, 1, 1));
+ }
+
+ printf (_(" Mounted on\n"));
+}
+
+/* Is FSTYPE a type of file system that should be listed? */
+
+static bool
+selected_fstype (const char *fstype)
+{
+ const struct fs_type_list *fsp;
+
+ if (fs_select_list == NULL || fstype == NULL)
+ return true;
+ for (fsp = fs_select_list; fsp; fsp = fsp->fs_next)
+ if (STREQ (fstype, fsp->fs_name))
+ return true;
+ return false;
+}
+
+/* Is FSTYPE a type of file system that should be omitted? */
+
+static bool
+excluded_fstype (const char *fstype)
+{
+ const struct fs_type_list *fsp;
+
+ if (fs_exclude_list == NULL || fstype == NULL)
+ return false;
+ for (fsp = fs_exclude_list; fsp; fsp = fsp->fs_next)
+ if (STREQ (fstype, fsp->fs_name))
+ return true;
+ return false;
+}
+
+/* Like human_readable (N, BUF, human_output_opts, INPUT_UNITS, OUTPUT_UNITS),
+ except:
+
+ - If NEGATIVE, then N represents a negative number,
+ expressed in two's complement.
+ - Otherwise, return "-" if N is UINTMAX_MAX. */
+
+static char const *
+df_readable (bool negative, uintmax_t n, char *buf,
+ uintmax_t input_units, uintmax_t output_units)
+{
+ if (n == UINTMAX_MAX && !negative)
+ return "-";
+ else
+ {
+ char *p = human_readable (negative ? -n : n, buf + negative,
+ human_output_opts, input_units, output_units);
+ if (negative)
+ *--p = '-';
+ return p;
+ }
+}
+
+/* Display a space listing for the disk device with absolute file name DISK.
+ If MOUNT_POINT is non-NULL, it is the name of the root of the
+ file system on DISK.
+ If STAT_FILE is non-null, it is the name of a file within the file
+ system that the user originally asked for; this provides better
+ diagnostics, and sometimes it provides better results on networked
+ file systems that give different free-space results depending on
+ where in the file system you probe.
+ If FSTYPE is non-NULL, it is the type of the file system on DISK.
+ If MOUNT_POINT is non-NULL, then DISK may be NULL -- certain systems may
+ not be able to produce statistics in this case.
+ ME_DUMMY and ME_REMOTE are the mount entry flags. */
+
+static void
+show_dev (char const *disk, char const *mount_point,
+ char const *stat_file, char const *fstype,
+ bool me_dummy, bool me_remote)
+{
+ struct fs_usage fsu;
+ char buf[3][LONGEST_HUMAN_READABLE + 2];
+ int width;
+ int col1_adjustment = 0;
+ int use_width;
+ uintmax_t input_units;
+ uintmax_t output_units;
+ uintmax_t total;
+ uintmax_t available;
+ bool negate_available;
+ uintmax_t available_to_root;
+ uintmax_t used;
+ bool negate_used;
+ double pct = -1;
+
+ if (me_remote & show_local_fs)
+ return;
+
+ if (me_dummy & !show_all_fs & !show_listed_fs)
+ return;
+
+ if (!selected_fstype (fstype) || excluded_fstype (fstype))
+ return;
+
+ /* If MOUNT_POINT is NULL, then the file system is not mounted, and this
+ program reports on the file system that the special file is on.
+ It would be better to report on the unmounted file system,
+ but statfs doesn't do that on most systems. */
+ if (!stat_file)
+ stat_file = mount_point ? mount_point : disk;
+
+ if (get_fs_usage (stat_file, disk, &fsu))
+ {
+ error (0, errno, "%s", quote (stat_file));
+ exit_status = EXIT_FAILURE;
+ return;
+ }
+
+ if (fsu.fsu_blocks == 0 && !show_all_fs && !show_listed_fs)
+ return;
+
+ if (! file_systems_processed)
+ {
+ file_systems_processed = true;
+ print_header ();
+ }
+
+ if (! disk)
+ disk = "-"; /* unknown */
+ if (! fstype)
+ fstype = "-"; /* unknown */
+
+ /* df.c reserved 5 positions for fstype,
+ but that does not suffice for type iso9660 */
+ if (print_type)
+ {
+ size_t disk_name_len = strlen (disk);
+ size_t fstype_len = strlen (fstype);
+ if (disk_name_len + fstype_len < 18)
+ printf ("%s%*s ", disk, 18 - (int) disk_name_len, fstype);
+ else if (!posix_format)
+ printf ("%s\n%18s ", disk, fstype);
+ else
+ printf ("%s %s", disk, fstype);
+ }
+ else
+ {
+ if (strlen (disk) > 20 && !posix_format)
+ printf ("%s\n%20s", disk, "");
+ else
+ printf ("%-20s", disk);
+ }
+
+ if (inode_format)
+ {
+ width = 7;
+ use_width = 5;
+ input_units = output_units = 1;
+ total = fsu.fsu_files;
+ available = fsu.fsu_ffree;
+ negate_available = false;
+ available_to_root = available;
+ }
+ else
+ {
+ if (human_output_opts & human_autoscale)
+ width = 5 + ! (human_output_opts & human_base_1024);
+ else
+ {
+ width = 9;
+ if (posix_format)
+ {
+ uintmax_t b;
+ col1_adjustment = -3;
+ for (b = output_block_size; 9 < b; b /= 10)
+ col1_adjustment++;
+ }
+ }
+ use_width = ((posix_format
+ && ! (human_output_opts & human_autoscale))
+ ? 8 : 4);
+ input_units = fsu.fsu_blocksize;
+ output_units = output_block_size;
+ total = fsu.fsu_blocks;
+ available = fsu.fsu_bavail;
+ negate_available = (fsu.fsu_bavail_top_bit_set
+ & (available != UINTMAX_MAX));
+ available_to_root = fsu.fsu_bfree;
+ }
+
+ used = UINTMAX_MAX;
+ negate_used = false;
+ if (total != UINTMAX_MAX && available_to_root != UINTMAX_MAX)
+ {
+ used = total - available_to_root;
+ negate_used = (total < available_to_root);
+ }
+
+ printf (" %*s %*s %*s ",
+ width + col1_adjustment,
+ df_readable (false, total,
+ buf[0], input_units, output_units),
+ width, df_readable (negate_used, used,
+ buf[1], input_units, output_units),
+ width, df_readable (negate_available, available,
+ buf[2], input_units, output_units));
+
+ if (used == UINTMAX_MAX || available == UINTMAX_MAX)
+ ;
+ else if (!negate_used
+ && used <= TYPE_MAXIMUM (uintmax_t) / 100
+ && used + available != 0
+ && (used + available < used) == negate_available)
+ {
+ uintmax_t u100 = used * 100;
+ uintmax_t nonroot_total = used + available;
+ pct = u100 / nonroot_total + (u100 % nonroot_total != 0);
+ }
+ else
+ {
+ /* The calculation cannot be done easily with integer
+ arithmetic. Fall back on floating point. This can suffer
+ from minor rounding errors, but doing it exactly requires
+ multiple precision arithmetic, and it's not worth the
+ aggravation. */
+ double u = negate_used ? - (double) - used : used;
+ double a = negate_available ? - (double) - available : available;
+ double nonroot_total = u + a;
+ if (nonroot_total)
+ {
+ long int lipct = pct = u * 100 / nonroot_total;
+ double ipct = lipct;
+
+ /* Like `pct = ceil (dpct);', but avoid ceil so that
+ the math library needn't be linked. */
+ if (ipct - 1 < pct && pct <= ipct + 1)
+ pct = ipct + (ipct < pct);
+ }
+ }
+
+ if (0 <= pct)
+ printf ("%*.0f%%", use_width - 1, pct);
+ else
+ printf ("%*s", use_width, "- ");
+
+ if (mount_point)
+ {
+#ifdef HIDE_AUTOMOUNT_PREFIX
+ /* Don't print the first directory name in MOUNT_POINT if it's an
+ artifact of an automounter. This is a bit too aggressive to be
+ the default. */
+ if (strncmp ("/auto/", mount_point, 6) == 0)
+ mount_point += 5;
+ else if (strncmp ("/tmp_mnt/", mount_point, 9) == 0)
+ mount_point += 8;
+#endif
+ printf (" %s", mount_point);
+ }
+ putchar ('\n');
+}
+
+/* Return the root mountpoint of the file system on which FILE exists, in
+ malloced storage. FILE_STAT should be the result of stating FILE.
+ Give a diagnostic and return NULL if unable to determine the mount point.
+ Exit if unable to restore current working directory. */
+static char *
+find_mount_point (const char *file, const struct stat *file_stat)
+{
+ struct saved_cwd cwd;
+ struct stat last_stat;
+ char *mp = NULL; /* The malloced mount point. */
+
+ if (save_cwd (&cwd) != 0)
+ {
+ error (0, errno, _("cannot get current directory"));
+ return NULL;
+ }
+
+ if (S_ISDIR (file_stat->st_mode))
+ /* FILE is a directory, so just chdir there directly. */
+ {
+ last_stat = *file_stat;
+ if (chdir (file) < 0)
+ {
+ error (0, errno, _("cannot change to directory %s"), quote (file));
+ return NULL;
+ }
+ }
+ else
+ /* FILE is some other kind of file; use its directory. */
+ {
+ char *xdir = dir_name (file);
+ char *dir;
+ ASSIGN_STRDUPA (dir, xdir);
+ free (xdir);
+
+ if (chdir (dir) < 0)
+ {
+ error (0, errno, _("cannot change to directory %s"), quote (dir));
+ return NULL;
+ }
+
+ if (stat (".", &last_stat) < 0)
+ {
+ error (0, errno, _("cannot stat current directory (now %s)"),
+ quote (dir));
+ goto done;
+ }
+ }
+
+ /* Now walk up FILE's parents until we find another file system or /,
+ chdiring as we go. LAST_STAT holds stat information for the last place
+ we visited. */
+ for (;;)
+ {
+ struct stat st;
+ if (stat ("..", &st) < 0)
+ {
+ error (0, errno, _("cannot stat %s"), quote (".."));
+ goto done;
+ }
+ if (st.st_dev != last_stat.st_dev || st.st_ino == last_stat.st_ino)
+ /* cwd is the mount point. */
+ break;
+ if (chdir ("..") < 0)
+ {
+ error (0, errno, _("cannot change to directory %s"), quote (".."));
+ goto done;
+ }
+ last_stat = st;
+ }
+
+ /* Finally reached a mount point, see what it's called. */
+ mp = xgetcwd ();
+
+done:
+ /* Restore the original cwd. */
+ {
+ int save_errno = errno;
+ if (restore_cwd (&cwd) != 0)
+ error (EXIT_FAILURE, errno,
+ _("failed to return to initial working directory"));
+ free_cwd (&cwd);
+ errno = save_errno;
+ }
+
+ return mp;
+}
+
+/* If DISK corresponds to a mount point, show its usage
+ and return true. Otherwise, return false. */
+static bool
+show_disk (char const *disk)
+{
+ struct mount_entry const *me;
+ struct mount_entry const *best_match = NULL;
+
+ for (me = mount_list; me; me = me->me_next)
+ if (STREQ (disk, me->me_devname))
+ best_match = me;
+
+ if (best_match)
+ {
+ show_dev (best_match->me_devname, best_match->me_mountdir, NULL,
+ best_match->me_type, best_match->me_dummy,
+ best_match->me_remote);
+ return true;
+ }
+
+ return false;
+}
+
+/* Figure out which device file or directory POINT is mounted on
+ and show its disk usage.
+ STATP must be the result of `stat (POINT, STATP)'. */
+static void
+show_point (const char *point, const struct stat *statp)
+{
+ struct stat disk_stats;
+ struct mount_entry *me;
+ struct mount_entry const *best_match = NULL;
+
+ /* If POINT is an absolute file name, see if we can find the
+ mount point without performing any extra stat calls at all. */
+ if (*point == '/')
+ {
+ /* Find the best match: prefer non-dummies, and then prefer the
+ last match if there are ties. */
+
+ for (me = mount_list; me; me = me->me_next)
+ if (STREQ (me->me_mountdir, point) && !STREQ (me->me_type, "lofs")
+ && (!best_match || best_match->me_dummy || !me->me_dummy))
+ best_match = me;
+ }
+
+ /* Calculate the real absolute file name for POINT, and use that to find
+ the mount point. This avoids statting unavailable mount points,
+ which can hang df. */
+ if (! best_match)
+ {
+ char *resolved = canonicalize_file_name (point);
+
+ if (resolved && resolved[0] == '/')
+ {
+ size_t resolved_len = strlen (resolved);
+ size_t best_match_len = 0;
+
+ for (me = mount_list; me; me = me->me_next)
+ if (!STREQ (me->me_type, "lofs")
+ && (!best_match || best_match->me_dummy || !me->me_dummy))
+ {
+ size_t len = strlen (me->me_mountdir);
+ if (best_match_len <= len && len <= resolved_len
+ && (len == 1 /* root file system */
+ || ((len == resolved_len || resolved[len] == '/')
+ && strncmp (me->me_mountdir, resolved, len) == 0)))
+ {
+ best_match = me;
+ best_match_len = len;
+ }
+ }
+ }
+
+ free (resolved);
+
+ if (best_match
+ && (stat (best_match->me_mountdir, &disk_stats) != 0
+ || disk_stats.st_dev != statp->st_dev))
+ best_match = NULL;
+ }
+
+ if (! best_match)
+ for (me = mount_list; me; me = me->me_next)
+ {
+ if (me->me_dev == (dev_t) -1)
+ {
+ if (stat (me->me_mountdir, &disk_stats) == 0)
+ me->me_dev = disk_stats.st_dev;
+ else
+ {
+ /* Report only I/O errors. Other errors might be
+ caused by shadowed mount points, which means POINT
+ can't possibly be on this file system. */
+ if (errno == EIO)
+ {
+ error (0, errno, "%s", quote (me->me_mountdir));
+ exit_status = EXIT_FAILURE;
+ }
+
+ /* So we won't try and fail repeatedly. */
+ me->me_dev = (dev_t) -2;
+ }
+ }
+
+ if (statp->st_dev == me->me_dev
+ && !STREQ (me->me_type, "lofs")
+ && (!best_match || best_match->me_dummy || !me->me_dummy))
+ {
+ /* Skip bogus mtab entries. */
+ if (stat (me->me_mountdir, &disk_stats) != 0
+ || disk_stats.st_dev != me->me_dev)
+ me->me_dev = (dev_t) -2;
+ else
+ best_match = me;
+ }
+ }
+
+ if (best_match)
+ show_dev (best_match->me_devname, best_match->me_mountdir, point,
+ best_match->me_type, best_match->me_dummy, best_match->me_remote);
+ else
+ {
+ /* We couldn't find the mount entry corresponding to POINT. Go ahead and
+ print as much info as we can; methods that require the device to be
+ present will fail at a later point. */
+
+ /* Find the actual mount point. */
+ char *mp = find_mount_point (point, statp);
+ if (mp)
+ {
+ show_dev (NULL, mp, NULL, NULL, false, false);
+ free (mp);
+ }
+ }
+}
+
+/* Determine what kind of node NAME is and show the disk usage
+ for it. STATP is the results of `stat' on NAME. */
+
+static void
+show_entry (char const *name, struct stat const *statp)
+{
+ if ((S_ISBLK (statp->st_mode) || S_ISCHR (statp->st_mode))
+ && show_disk (name))
+ return;
+
+ show_point (name, statp);
+}
+
+/* Show all mounted file systems, except perhaps those that are of
+ an unselected type or are empty. */
+
+static void
+show_all_entries (void)
+{
+ struct mount_entry *me;
+
+ for (me = mount_list; me; me = me->me_next)
+ show_dev (me->me_devname, me->me_mountdir, NULL, me->me_type,
+ me->me_dummy, me->me_remote);
+}
+
+/* Add FSTYPE to the list of file system types to display. */
+
+static void
+add_fs_type (const char *fstype)
+{
+ struct fs_type_list *fsp;
+
+ fsp = xmalloc (sizeof *fsp);
+ fsp->fs_name = (char *) fstype;
+ fsp->fs_next = fs_select_list;
+ fs_select_list = fsp;
+}
+
+/* Add FSTYPE to the list of file system types to be omitted. */
+
+static void
+add_excluded_fs_type (const char *fstype)
+{
+ struct fs_type_list *fsp;
+
+ fsp = xmalloc (sizeof *fsp);
+ fsp->fs_name = (char *) fstype;
+ fsp->fs_next = fs_exclude_list;
+ fs_exclude_list = fsp;
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]... [FILE]...\n"), program_name);
+ fputs (_("\
+Show information about the file system on which each FILE resides,\n\
+or all file systems by default.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -a, --all include dummy file systems\n\
+ -B, --block-size=SIZE use SIZE-byte blocks\n\
+ -h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G)\n\
+ -H, --si likewise, but use powers of 1000 not 1024\n\
+"), stdout);
+ fputs (_("\
+ -i, --inodes list inode information instead of block usage\n\
+ -k like --block-size=1K\n\
+ -l, --local limit listing to local file systems\n\
+ --no-sync do not invoke sync before getting usage info (default)\n\
+"), stdout);
+ fputs (_("\
+ -P, --portability use the POSIX output format\n\
+ --sync invoke sync before getting usage info\n\
+ -t, --type=TYPE limit listing to file systems of type TYPE\n\
+ -T, --print-type print file system type\n\
+ -x, --exclude-type=TYPE limit listing to file systems not of type TYPE\n\
+ -v (ignored)\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\n\
+SIZE may be (or may be an integer optionally followed by) one of following:\n\
+kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ struct stat *stats IF_LINT (= 0);
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ fs_select_list = NULL;
+ fs_exclude_list = NULL;
+ inode_format = false;
+ show_all_fs = false;
+ show_listed_fs = false;
+ human_output_opts = -1;
+ print_type = false;
+ file_systems_processed = false;
+ posix_format = false;
+ exit_status = EXIT_SUCCESS;
+
+ while ((c = getopt_long (argc, argv, "aB:iF:hHklmPTt:vx:", long_options, NULL))
+ != -1)
+ {
+ switch (c)
+ {
+ case 'a':
+ show_all_fs = true;
+ break;
+ case 'B':
+ human_output_opts = human_options (optarg, true, &output_block_size);
+ break;
+ case 'i':
+ inode_format = true;
+ break;
+ case 'h':
+ human_output_opts = human_autoscale | human_SI | human_base_1024;
+ output_block_size = 1;
+ break;
+ case 'H':
+ human_output_opts = human_autoscale | human_SI;
+ output_block_size = 1;
+ break;
+ case KILOBYTES_LONG_OPTION:
+ error (0, 0,
+ _("the --kilobytes option is deprecated; use -k instead"));
+ /* fall through */
+ case 'k':
+ human_output_opts = 0;
+ output_block_size = 1024;
+ break;
+ case 'l':
+ show_local_fs = true;
+ break;
+ case 'm': /* obsolescent */
+ human_output_opts = 0;
+ output_block_size = 1024 * 1024;
+ break;
+ case 'T':
+ print_type = true;
+ break;
+ case 'P':
+ posix_format = true;
+ break;
+ case SYNC_OPTION:
+ require_sync = true;
+ break;
+ case NO_SYNC_OPTION:
+ require_sync = false;
+ break;
+
+ case 'F':
+ /* Accept -F as a synonym for -t for compatibility with Solaris. */
+ case 't':
+ add_fs_type (optarg);
+ break;
+
+ case 'v': /* For SysV compatibility. */
+ /* ignore */
+ break;
+ case 'x':
+ add_excluded_fs_type (optarg);
+ break;
+
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (human_output_opts == -1)
+ {
+ if (posix_format)
+ {
+ human_output_opts = 0;
+ output_block_size = (getenv ("POSIXLY_CORRECT") ? 512 : 1024);
+ }
+ else
+ human_output_opts = human_options (getenv ("DF_BLOCK_SIZE"), false,
+ &output_block_size);
+ }
+
+ /* Fail if the same file system type was both selected and excluded. */
+ {
+ bool match = false;
+ struct fs_type_list *fs_incl;
+ for (fs_incl = fs_select_list; fs_incl; fs_incl = fs_incl->fs_next)
+ {
+ struct fs_type_list *fs_excl;
+ for (fs_excl = fs_exclude_list; fs_excl; fs_excl = fs_excl->fs_next)
+ {
+ if (STREQ (fs_incl->fs_name, fs_excl->fs_name))
+ {
+ error (0, 0,
+ _("file system type %s both selected and excluded"),
+ quote (fs_incl->fs_name));
+ match = true;
+ break;
+ }
+ }
+ }
+ if (match)
+ exit (EXIT_FAILURE);
+ }
+
+ if (optind < argc)
+ {
+ int i;
+
+ /* stat all the given entries to make sure they get automounted,
+ if necessary, before reading the file system table. */
+ stats = xnmalloc (argc - optind, sizeof *stats);
+ for (i = optind; i < argc; ++i)
+ {
+ if (stat (argv[i], &stats[i - optind]))
+ {
+ error (0, errno, "%s", quote (argv[i]));
+ exit_status = EXIT_FAILURE;
+ argv[i] = NULL;
+ }
+ }
+ }
+
+ mount_list =
+ read_file_system_list ((fs_select_list != NULL
+ || fs_exclude_list != NULL
+ || print_type
+ || show_local_fs));
+
+ if (mount_list == NULL)
+ {
+ /* Couldn't read the table of mounted file systems.
+ Fail if df was invoked with no file name arguments;
+ Otherwise, merely give a warning and proceed. */
+ const char *warning = (optind < argc ? _("Warning: ") : "");
+ int status = (optind < argc ? 0 : EXIT_FAILURE);
+ error (status, errno,
+ _("%scannot read table of mounted file systems"), warning);
+ }
+
+ if (require_sync)
+ sync ();
+
+ if (optind < argc)
+ {
+ int i;
+
+ /* Display explicitly requested empty file systems. */
+ show_listed_fs = true;
+
+ for (i = optind; i < argc; ++i)
+ if (argv[i])
+ show_entry (argv[i], &stats[i - optind]);
+ }
+ else
+ show_all_entries ();
+
+ if (! file_systems_processed)
+ error (EXIT_FAILURE, 0, _("no file systems processed"));
+
+ exit (exit_status);
+}
diff --git a/src/dircolors.c b/src/dircolors.c
new file mode 100644
index 0000000..82eb1e0
--- /dev/null
+++ b/src/dircolors.c
@@ -0,0 +1,512 @@
+/* dircolors - output commands to set the LS_COLOR environment variable
+ Copyright (C) 1996-2007 Free Software Foundation, Inc.
+ Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000 H. Peter Anvin
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include <sys/types.h>
+#include <getopt.h>
+#include <stdio.h>
+
+#include "system.h"
+#include "dircolors.h"
+#include "c-strcase.h"
+#include "error.h"
+#include "getline.h"
+#include "obstack.h"
+#include "quote.h"
+#include "xstrndup.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "dircolors"
+
+#define AUTHORS "H. Peter Anvin"
+
+#define obstack_chunk_alloc malloc
+#define obstack_chunk_free free
+
+enum Shell_syntax
+{
+ SHELL_SYNTAX_BOURNE,
+ SHELL_SYNTAX_C,
+ SHELL_SYNTAX_UNKNOWN
+};
+
+#define APPEND_CHAR(C) obstack_1grow (&lsc_obstack, C)
+#define APPEND_TWO_CHAR_STRING(S) \
+ do \
+ { \
+ APPEND_CHAR (S[0]); \
+ APPEND_CHAR (S[1]); \
+ } \
+ while (0)
+
+/* Accumulate in this obstack the value for the LS_COLORS environment
+ variable. */
+static struct obstack lsc_obstack;
+
+static const char *const slack_codes[] =
+{
+ "NORMAL", "NORM", "FILE", "DIR", "LNK", "LINK",
+ "SYMLINK", "ORPHAN", "MISSING", "FIFO", "PIPE", "SOCK", "BLK", "BLOCK",
+ "CHR", "CHAR", "DOOR", "EXEC", "LEFT", "LEFTCODE", "RIGHT", "RIGHTCODE",
+ "END", "ENDCODE", "SUID", "SETUID", "SGID", "SETGID", "STICKY",
+ "OTHER_WRITABLE", "OWR", "STICKY_OTHER_WRITABLE", "OWT", NULL
+};
+
+static const char *const ls_codes[] =
+{
+ "no", "no", "fi", "di", "ln", "ln", "ln", "or", "mi", "pi", "pi",
+ "so", "bd", "bd", "cd", "cd", "do", "ex", "lc", "lc", "rc", "rc", "ec", "ec",
+ "su", "su", "sg", "sg", "st", "ow", "ow", "tw", "tw", NULL
+};
+#define array_len(Array) (sizeof (Array) / sizeof *(Array))
+verify (array_len (slack_codes) == array_len (ls_codes));
+
+static struct option const long_options[] =
+ {
+ {"bourne-shell", no_argument, NULL, 'b'},
+ {"sh", no_argument, NULL, 'b'},
+ {"csh", no_argument, NULL, 'c'},
+ {"c-shell", no_argument, NULL, 'c'},
+ {"print-database", no_argument, NULL, 'p'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+ };
+
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]... [FILE]\n"), program_name);
+ fputs (_("\
+Output commands to set the LS_COLORS environment variable.\n\
+\n\
+Determine format of output:\n\
+ -b, --sh, --bourne-shell output Bourne shell code to set LS_COLORS\n\
+ -c, --csh, --c-shell output C shell code to set LS_COLORS\n\
+ -p, --print-database output defaults\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+If FILE is specified, read it to determine which colors to use for which\n\
+file types and extensions. Otherwise, a precompiled database is used.\n\
+For details on the format of these files, run `dircolors --print-database'.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+
+ exit (status);
+}
+
+/* If the SHELL environment variable is set to `csh' or `tcsh,'
+ assume C shell. Else Bourne shell. */
+
+static enum Shell_syntax
+guess_shell_syntax (void)
+{
+ char *shell;
+
+ shell = getenv ("SHELL");
+ if (shell == NULL || *shell == '\0')
+ return SHELL_SYNTAX_UNKNOWN;
+
+ shell = last_component (shell);
+
+ if (STREQ (shell, "csh") || STREQ (shell, "tcsh"))
+ return SHELL_SYNTAX_C;
+
+ return SHELL_SYNTAX_BOURNE;
+}
+
+static void
+parse_line (char const *line, char **keyword, char **arg)
+{
+ char const *p;
+ char const *keyword_start;
+ char const *arg_start;
+
+ *keyword = NULL;
+ *arg = NULL;
+
+ for (p = line; isspace (to_uchar (*p)); ++p)
+ continue;
+
+ /* Ignore blank lines and shell-style comments. */
+ if (*p == '\0' || *p == '#')
+ return;
+
+ keyword_start = p;
+
+ while (!isspace (to_uchar (*p)) && *p != '\0')
+ {
+ ++p;
+ }
+
+ *keyword = xstrndup (keyword_start, p - keyword_start);
+ if (*p == '\0')
+ return;
+
+ do
+ {
+ ++p;
+ }
+ while (isspace (to_uchar (*p)));
+
+ if (*p == '\0' || *p == '#')
+ return;
+
+ arg_start = p;
+
+ while (*p != '\0' && *p != '#')
+ ++p;
+
+ for (--p; isspace (to_uchar (*p)); --p)
+ continue;
+ ++p;
+
+ *arg = xstrndup (arg_start, p - arg_start);
+}
+
+/* FIXME: Write a string to standard out, while watching for "dangerous"
+ sequences like unescaped : and = characters. */
+
+static void
+append_quoted (const char *str)
+{
+ bool need_backslash = true;
+
+ while (*str != '\0')
+ {
+ switch (*str)
+ {
+ case '\'':
+ APPEND_CHAR ('\'');
+ APPEND_CHAR ('\\');
+ APPEND_CHAR ('\'');
+ need_backslash = true;
+ break;
+
+ case '\\':
+ case '^':
+ need_backslash = !need_backslash;
+ break;
+
+ case ':':
+ case '=':
+ if (need_backslash)
+ APPEND_CHAR ('\\');
+ /* Fall through */
+
+ default:
+ need_backslash = true;
+ break;
+ }
+
+ APPEND_CHAR (*str);
+ ++str;
+ }
+}
+
+/* Read the file open on FP (with name FILENAME). First, look for a
+ `TERM name' directive where name matches the current terminal type.
+ Once found, translate and accumulate the associated directives onto
+ the global obstack LSC_OBSTACK. Give a diagnostic
+ upon failure (unrecognized keyword is the only way to fail here).
+ Return true if successful. */
+
+static bool
+dc_parse_stream (FILE *fp, const char *filename)
+{
+ size_t line_number = 0;
+ char const *next_G_line = G_line;
+ char *input_line = NULL;
+ size_t input_line_size = 0;
+ char const *line;
+ char const *term;
+ bool ok = true;
+
+ /* State for the parser. */
+ enum { ST_TERMNO, ST_TERMYES, ST_TERMSURE, ST_GLOBAL } state = ST_GLOBAL;
+
+ /* Get terminal type */
+ term = getenv ("TERM");
+ if (term == NULL || *term == '\0')
+ term = "none";
+
+ while (1)
+ {
+ char *keywd, *arg;
+ bool unrecognized;
+
+ ++line_number;
+
+ if (fp)
+ {
+ if (getline (&input_line, &input_line_size, fp) <= 0)
+ {
+ free (input_line);
+ break;
+ }
+ line = input_line;
+ }
+ else
+ {
+ if (next_G_line == G_line + sizeof G_line)
+ break;
+ line = next_G_line;
+ next_G_line += strlen (next_G_line) + 1;
+ }
+
+ parse_line (line, &keywd, &arg);
+
+ if (keywd == NULL)
+ continue;
+
+ if (arg == NULL)
+ {
+ error (0, 0, _("%s:%lu: invalid line; missing second token"),
+ filename, (unsigned long int) line_number);
+ ok = false;
+ free (keywd);
+ continue;
+ }
+
+ unrecognized = false;
+ if (c_strcasecmp (keywd, "TERM") == 0)
+ {
+ if (STREQ (arg, term))
+ state = ST_TERMSURE;
+ else if (state != ST_TERMSURE)
+ state = ST_TERMNO;
+ }
+ else
+ {
+ if (state == ST_TERMSURE)
+ state = ST_TERMYES; /* Another TERM can cancel */
+
+ if (state != ST_TERMNO)
+ {
+ if (keywd[0] == '.')
+ {
+ APPEND_CHAR ('*');
+ append_quoted (keywd);
+ APPEND_CHAR ('=');
+ append_quoted (arg);
+ APPEND_CHAR (':');
+ }
+ else if (keywd[0] == '*')
+ {
+ append_quoted (keywd);
+ APPEND_CHAR ('=');
+ append_quoted (arg);
+ APPEND_CHAR (':');
+ }
+ else if (c_strcasecmp (keywd, "OPTIONS") == 0
+ || c_strcasecmp (keywd, "COLOR") == 0
+ || c_strcasecmp (keywd, "EIGHTBIT") == 0)
+ {
+ /* Ignore. */
+ }
+ else
+ {
+ int i;
+
+ for (i = 0; slack_codes[i] != NULL; ++i)
+ if (c_strcasecmp (keywd, slack_codes[i]) == 0)
+ break;
+
+ if (slack_codes[i] != NULL)
+ {
+ APPEND_TWO_CHAR_STRING (ls_codes[i]);
+ APPEND_CHAR ('=');
+ append_quoted (arg);
+ APPEND_CHAR (':');
+ }
+ else
+ {
+ unrecognized = true;
+ }
+ }
+ }
+ else
+ {
+ unrecognized = true;
+ }
+ }
+
+ if (unrecognized && (state == ST_TERMSURE || state == ST_TERMYES))
+ {
+ error (0, 0, _("%s:%lu: unrecognized keyword %s"),
+ (filename ? quote (filename) : _("<internal>")),
+ (unsigned long int) line_number, keywd);
+ ok = false;
+ }
+
+ free (keywd);
+ free (arg);
+ }
+
+ return ok;
+}
+
+static bool
+dc_parse_file (const char *filename)
+{
+ bool ok;
+
+ if (! STREQ (filename, "-") && freopen (filename, "r", stdin) == NULL)
+ {
+ error (0, errno, "%s", filename);
+ return false;
+ }
+
+ ok = dc_parse_stream (stdin, filename);
+
+ if (fclose (stdin) != 0)
+ {
+ error (0, errno, "%s", quote (filename));
+ return false;
+ }
+
+ return ok;
+}
+
+int
+main (int argc, char **argv)
+{
+ bool ok = true;
+ int optc;
+ enum Shell_syntax syntax = SHELL_SYNTAX_UNKNOWN;
+ bool print_database = false;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ while ((optc = getopt_long (argc, argv, "bcp", long_options, NULL)) != -1)
+ switch (optc)
+ {
+ case 'b': /* Bourne shell syntax. */
+ syntax = SHELL_SYNTAX_BOURNE;
+ break;
+
+ case 'c': /* C shell syntax. */
+ syntax = SHELL_SYNTAX_C;
+ break;
+
+ case 'p':
+ print_database = true;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+
+ argc -= optind;
+ argv += optind;
+
+ /* It doesn't make sense to use --print with either of
+ --bourne or --c-shell. */
+ if (print_database && syntax != SHELL_SYNTAX_UNKNOWN)
+ {
+ error (0, 0,
+ _("the options to output dircolors' internal database and\n\
+to select a shell syntax are mutually exclusive"));
+ usage (EXIT_FAILURE);
+ }
+
+ if (!print_database < argc)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[!print_database]));
+ if (print_database)
+ fprintf (stderr, "%s\n",
+ _("File operands cannot be combined with "
+ "--print-database (-p)."));
+ usage (EXIT_FAILURE);
+ }
+
+ if (print_database)
+ {
+ char const *p = G_line;
+ while (p < G_line + sizeof G_line)
+ {
+ puts (p);
+ p += strlen (p) + 1;
+ }
+ }
+ else
+ {
+ /* If shell syntax was not explicitly specified, try to guess it. */
+ if (syntax == SHELL_SYNTAX_UNKNOWN)
+ {
+ syntax = guess_shell_syntax ();
+ if (syntax == SHELL_SYNTAX_UNKNOWN)
+ {
+ error (EXIT_FAILURE, 0,
+ _("no SHELL environment variable, and no shell type option given"));
+ }
+ }
+
+ obstack_init (&lsc_obstack);
+ if (argc == 0)
+ ok = dc_parse_stream (NULL, NULL);
+ else
+ ok = dc_parse_file (argv[0]);
+
+ if (ok)
+ {
+ size_t len = obstack_object_size (&lsc_obstack);
+ char *s = obstack_finish (&lsc_obstack);
+ const char *prefix;
+ const char *suffix;
+
+ if (syntax == SHELL_SYNTAX_BOURNE)
+ {
+ prefix = "LS_COLORS='";
+ suffix = "';\nexport LS_COLORS\n";
+ }
+ else
+ {
+ prefix = "setenv LS_COLORS '";
+ suffix = "'\n";
+ }
+ fputs (prefix, stdout);
+ fwrite (s, 1, len, stdout);
+ fputs (suffix, stdout);
+ }
+ }
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/dircolors.h b/src/dircolors.h
new file mode 100644
index 0000000..c74fb53
--- /dev/null
+++ b/src/dircolors.h
@@ -0,0 +1,164 @@
+static char const G_line[] =
+{
+ '#',' ','C','o','n','f','i','g','u','r','a','t','i','o','n',' ','f','i','l','e',' ','f','o','r',' ','d','i','r','c','o','l','o','r','s',',',' ','a',' ','u','t','i','l','i','t','y',' ','t','o',' ','h','e','l','p',' ','y','o','u',' ','s','e','t',' ','t','h','e',0,
+ '#',' ','L','S','_','C','O','L','O','R','S',' ','e','n','v','i','r','o','n','m','e','n','t',' ','v','a','r','i','a','b','l','e',' ','u','s','e','d',' ','b','y',' ','G','N','U',' ','l','s',' ','w','i','t','h',' ','t','h','e',' ','-','-','c','o','l','o','r',' ','o','p','t','i','o','n','.',0,
+ '#',' ','C','o','p','y','r','i','g','h','t',' ','(','C',')',' ','1','9','9','6',',',' ','1','9','9','9',',',' ','2','0','0','0',',',' ','2','0','0','1',',',' ','2','0','0','2',',',' ','2','0','0','3',',',' ','2','0','0','4',',',' ','2','0','0','5',',',' ','2','0','0','6',0,
+ '#',' ','F','r','e','e',' ','S','o','f','t','w','a','r','e',' ','F','o','u','n','d','a','t','i','o','n',',',' ','I','n','c','.',0,
+ '#',' ','C','o','p','y','i','n','g',' ','a','n','d',' ','d','i','s','t','r','i','b','u','t','i','o','n',' ','o','f',' ','t','h','i','s',' ','f','i','l','e',',',' ','w','i','t','h',' ','o','r',' ','w','i','t','h','o','u','t',' ','m','o','d','i','f','i','c','a','t','i','o','n',',',0,
+ '#',' ','a','r','e',' ','p','e','r','m','i','t','t','e','d',' ','p','r','o','v','i','d','e','d',' ','t','h','e',' ','c','o','p','y','r','i','g','h','t',' ','n','o','t','i','c','e',' ','a','n','d',' ','t','h','i','s',' ','n','o','t','i','c','e',' ','a','r','e',' ','p','r','e','s','e','r','v','e','d','.',0,
+ '#',' ','T','h','e',' ','k','e','y','w','o','r','d','s',' ','C','O','L','O','R',',',' ','O','P','T','I','O','N','S',',',' ','a','n','d',' ','E','I','G','H','T','B','I','T',' ','(','h','o','n','o','r','e','d',' ','b','y',' ','t','h','e',0,
+ '#',' ','s','l','a','c','k','w','a','r','e',' ','v','e','r','s','i','o','n',' ','o','f',' ','d','i','r','c','o','l','o','r','s',')',' ','a','r','e',' ','r','e','c','o','g','n','i','z','e','d',' ','b','u','t',' ','i','g','n','o','r','e','d','.',0,
+ '#',' ','B','e','l','o','w',',',' ','t','h','e','r','e',' ','s','h','o','u','l','d',' ','b','e',' ','o','n','e',' ','T','E','R','M',' ','e','n','t','r','y',' ','f','o','r',' ','e','a','c','h',' ','t','e','r','m','t','y','p','e',' ','t','h','a','t',' ','i','s',' ','c','o','l','o','r','i','z','a','b','l','e',0,
+ 'T','E','R','M',' ','E','t','e','r','m',0,
+ 'T','E','R','M',' ','a','n','s','i',0,
+ 'T','E','R','M',' ','c','o','l','o','r','-','x','t','e','r','m',0,
+ 'T','E','R','M',' ','c','o','n','1','3','2','x','2','5',0,
+ 'T','E','R','M',' ','c','o','n','1','3','2','x','3','0',0,
+ 'T','E','R','M',' ','c','o','n','1','3','2','x','4','3',0,
+ 'T','E','R','M',' ','c','o','n','1','3','2','x','6','0',0,
+ 'T','E','R','M',' ','c','o','n','8','0','x','2','5',0,
+ 'T','E','R','M',' ','c','o','n','8','0','x','2','8',0,
+ 'T','E','R','M',' ','c','o','n','8','0','x','3','0',0,
+ 'T','E','R','M',' ','c','o','n','8','0','x','4','3',0,
+ 'T','E','R','M',' ','c','o','n','8','0','x','5','0',0,
+ 'T','E','R','M',' ','c','o','n','8','0','x','6','0',0,
+ 'T','E','R','M',' ','c','o','n','s','2','5',0,
+ 'T','E','R','M',' ','c','o','n','s','o','l','e',0,
+ 'T','E','R','M',' ','c','y','g','w','i','n',0,
+ 'T','E','R','M',' ','d','t','t','e','r','m',0,
+ 'T','E','R','M',' ','g','n','o','m','e',0,
+ 'T','E','R','M',' ','k','o','n','s','o','l','e',0,
+ 'T','E','R','M',' ','k','t','e','r','m',0,
+ 'T','E','R','M',' ','l','i','n','u','x',0,
+ 'T','E','R','M',' ','l','i','n','u','x','-','c',0,
+ 'T','E','R','M',' ','m','a','c','h','-','c','o','l','o','r',0,
+ 'T','E','R','M',' ','m','l','t','e','r','m',0,
+ 'T','E','R','M',' ','p','u','t','t','y',0,
+ 'T','E','R','M',' ','r','x','v','t',0,
+ 'T','E','R','M',' ','r','x','v','t','-','c','y','g','w','i','n',0,
+ 'T','E','R','M',' ','r','x','v','t','-','c','y','g','w','i','n','-','n','a','t','i','v','e',0,
+ 'T','E','R','M',' ','r','x','v','t','-','u','n','i','c','o','d','e',0,
+ 'T','E','R','M',' ','s','c','r','e','e','n',0,
+ 'T','E','R','M',' ','s','c','r','e','e','n','-','b','c','e',0,
+ 'T','E','R','M',' ','s','c','r','e','e','n','-','w',0,
+ 'T','E','R','M',' ','s','c','r','e','e','n','.','l','i','n','u','x',0,
+ 'T','E','R','M',' ','v','t','1','0','0',0,
+ 'T','E','R','M',' ','x','t','e','r','m',0,
+ 'T','E','R','M',' ','x','t','e','r','m','-','2','5','6','c','o','l','o','r',0,
+ 'T','E','R','M',' ','x','t','e','r','m','-','c','o','l','o','r',0,
+ 'T','E','R','M',' ','x','t','e','r','m','-','d','e','b','i','a','n',0,
+ '#',' ','B','e','l','o','w',' ','a','r','e',' ','t','h','e',' ','c','o','l','o','r',' ','i','n','i','t',' ','s','t','r','i','n','g','s',' ','f','o','r',' ','t','h','e',' ','b','a','s','i','c',' ','f','i','l','e',' ','t','y','p','e','s','.',' ','A',' ','c','o','l','o','r',' ','i','n','i','t',0,
+ '#',' ','s','t','r','i','n','g',' ','c','o','n','s','i','s','t','s',' ','o','f',' ','o','n','e',' ','o','r',' ','m','o','r','e',' ','o','f',' ','t','h','e',' ','f','o','l','l','o','w','i','n','g',' ','n','u','m','e','r','i','c',' ','c','o','d','e','s',':',0,
+ '#',' ','A','t','t','r','i','b','u','t','e',' ','c','o','d','e','s',':',0,
+ '#',' ','0','0','=','n','o','n','e',' ','0','1','=','b','o','l','d',' ','0','4','=','u','n','d','e','r','s','c','o','r','e',' ','0','5','=','b','l','i','n','k',' ','0','7','=','r','e','v','e','r','s','e',' ','0','8','=','c','o','n','c','e','a','l','e','d',0,
+ '#',' ','T','e','x','t',' ','c','o','l','o','r',' ','c','o','d','e','s',':',0,
+ '#',' ','3','0','=','b','l','a','c','k',' ','3','1','=','r','e','d',' ','3','2','=','g','r','e','e','n',' ','3','3','=','y','e','l','l','o','w',' ','3','4','=','b','l','u','e',' ','3','5','=','m','a','g','e','n','t','a',' ','3','6','=','c','y','a','n',' ','3','7','=','w','h','i','t','e',0,
+ '#',' ','B','a','c','k','g','r','o','u','n','d',' ','c','o','l','o','r',' ','c','o','d','e','s',':',0,
+ '#',' ','4','0','=','b','l','a','c','k',' ','4','1','=','r','e','d',' ','4','2','=','g','r','e','e','n',' ','4','3','=','y','e','l','l','o','w',' ','4','4','=','b','l','u','e',' ','4','5','=','m','a','g','e','n','t','a',' ','4','6','=','c','y','a','n',' ','4','7','=','w','h','i','t','e',0,
+ 'N','O','R','M','A','L',' ','0','0',' ','#',' ','g','l','o','b','a','l',' ','d','e','f','a','u','l','t',',',' ','a','l','t','h','o','u','g','h',' ','e','v','e','r','y','t','h','i','n','g',' ','s','h','o','u','l','d',' ','b','e',' ','s','o','m','e','t','h','i','n','g','.',0,
+ 'F','I','L','E',' ','0','0',' ','#',' ','n','o','r','m','a','l',' ','f','i','l','e',0,
+ 'D','I','R',' ','0','1',';','3','4',' ','#',' ','d','i','r','e','c','t','o','r','y',0,
+ 'L','I','N','K',' ','0','1',';','3','6',' ','#',' ','s','y','m','b','o','l','i','c',' ','l','i','n','k','.',' ','(','I','f',' ','y','o','u',' ','s','e','t',' ','t','h','i','s',' ','t','o',' ','\'','t','a','r','g','e','t','\'',' ','i','n','s','t','e','a','d',' ','o','f',' ','a',0,
+ ' ','#',' ','n','u','m','e','r','i','c','a','l',' ','v','a','l','u','e',',',' ','t','h','e',' ','c','o','l','o','r',' ','i','s',' ','a','s',' ','f','o','r',' ','t','h','e',' ','f','i','l','e',' ','p','o','i','n','t','e','d',' ','t','o','.',')',0,
+ 'F','I','F','O',' ','4','0',';','3','3',' ','#',' ','p','i','p','e',0,
+ 'S','O','C','K',' ','0','1',';','3','5',' ','#',' ','s','o','c','k','e','t',0,
+ 'D','O','O','R',' ','0','1',';','3','5',' ','#',' ','d','o','o','r',0,
+ 'B','L','K',' ','4','0',';','3','3',';','0','1',' ','#',' ','b','l','o','c','k',' ','d','e','v','i','c','e',' ','d','r','i','v','e','r',0,
+ 'C','H','R',' ','4','0',';','3','3',';','0','1',' ','#',' ','c','h','a','r','a','c','t','e','r',' ','d','e','v','i','c','e',' ','d','r','i','v','e','r',0,
+ 'O','R','P','H','A','N',' ','4','0',';','3','1',';','0','1',' ','#',' ','s','y','m','l','i','n','k',' ','t','o',' ','n','o','n','e','x','i','s','t','e','n','t',' ','f','i','l','e',',',' ','o','r',' ','n','o','n','-','s','t','a','t','\'','a','b','l','e',' ','f','i','l','e',0,
+ 'S','E','T','U','I','D',' ','3','7',';','4','1',' ','#',' ','f','i','l','e',' ','t','h','a','t',' ','i','s',' ','s','e','t','u','i','d',' ','(','u','+','s',')',0,
+ 'S','E','T','G','I','D',' ','3','0',';','4','3',' ','#',' ','f','i','l','e',' ','t','h','a','t',' ','i','s',' ','s','e','t','g','i','d',' ','(','g','+','s',')',0,
+ 'S','T','I','C','K','Y','_','O','T','H','E','R','_','W','R','I','T','A','B','L','E',' ','3','0',';','4','2',' ','#',' ','d','i','r',' ','t','h','a','t',' ','i','s',' ','s','t','i','c','k','y',' ','a','n','d',' ','o','t','h','e','r','-','w','r','i','t','a','b','l','e',' ','(','+','t',',','o','+','w',')',0,
+ 'O','T','H','E','R','_','W','R','I','T','A','B','L','E',' ','3','4',';','4','2',' ','#',' ','d','i','r',' ','t','h','a','t',' ','i','s',' ','o','t','h','e','r','-','w','r','i','t','a','b','l','e',' ','(','o','+','w',')',' ','a','n','d',' ','n','o','t',' ','s','t','i','c','k','y',0,
+ 'S','T','I','C','K','Y',' ','3','7',';','4','4',' ','#',' ','d','i','r',' ','w','i','t','h',' ','t','h','e',' ','s','t','i','c','k','y',' ','b','i','t',' ','s','e','t',' ','(','+','t',')',' ','a','n','d',' ','n','o','t',' ','o','t','h','e','r','-','w','r','i','t','a','b','l','e',0,
+ '#',' ','T','h','i','s',' ','i','s',' ','f','o','r',' ','f','i','l','e','s',' ','w','i','t','h',' ','e','x','e','c','u','t','e',' ','p','e','r','m','i','s','s','i','o','n',':',0,
+ 'E','X','E','C',' ','0','1',';','3','2',0,
+ '#',' ','L','i','s','t',' ','a','n','y',' ','f','i','l','e',' ','e','x','t','e','n','s','i','o','n','s',' ','l','i','k','e',' ','\'','.','g','z','\'',' ','o','r',' ','\'','.','t','a','r','\'',' ','t','h','a','t',' ','y','o','u',' ','w','o','u','l','d',' ','l','i','k','e',' ','l','s',0,
+ '#',' ','t','o',' ','c','o','l','o','r','i','z','e',' ','b','e','l','o','w','.',' ','P','u','t',' ','t','h','e',' ','e','x','t','e','n','s','i','o','n',',',' ','a',' ','s','p','a','c','e',',',' ','a','n','d',' ','t','h','e',' ','c','o','l','o','r',' ','i','n','i','t',' ','s','t','r','i','n','g','.',0,
+ '#',' ','(','a','n','d',' ','a','n','y',' ','c','o','m','m','e','n','t','s',' ','y','o','u',' ','w','a','n','t',' ','t','o',' ','a','d','d',' ','a','f','t','e','r',' ','a',' ','\'','#','\'',')',0,
+ '#',' ','I','f',' ','y','o','u',' ','u','s','e',' ','D','O','S','-','s','t','y','l','e',' ','s','u','f','f','i','x','e','s',',',' ','y','o','u',' ','m','a','y',' ','w','a','n','t',' ','t','o',' ','u','n','c','o','m','m','e','n','t',' ','t','h','e',' ','f','o','l','l','o','w','i','n','g',':',0,
+ '#','.','c','m','d',' ','0','1',';','3','2',' ','#',' ','e','x','e','c','u','t','a','b','l','e','s',' ','(','b','r','i','g','h','t',' ','g','r','e','e','n',')',0,
+ '#','.','e','x','e',' ','0','1',';','3','2',0,
+ '#','.','c','o','m',' ','0','1',';','3','2',0,
+ '#','.','b','t','m',' ','0','1',';','3','2',0,
+ '#','.','b','a','t',' ','0','1',';','3','2',0,
+ '#',' ','O','r',' ','i','f',' ','y','o','u',' ','w','a','n','t',' ','t','o',' ','c','o','l','o','r','i','z','e',' ','s','c','r','i','p','t','s',' ','e','v','e','n',' ','i','f',' ','t','h','e','y',' ','d','o',' ','n','o','t',' ','h','a','v','e',' ','t','h','e',0,
+ '#',' ','e','x','e','c','u','t','a','b','l','e',' ','b','i','t',' ','a','c','t','u','a','l','l','y',' ','s','e','t','.',0,
+ '#','.','s','h',' ','0','1',';','3','2',0,
+ '#','.','c','s','h',' ','0','1',';','3','2',0,
+ ' ','#',' ','a','r','c','h','i','v','e','s',' ','o','r',' ','c','o','m','p','r','e','s','s','e','d',' ','(','b','r','i','g','h','t',' ','r','e','d',')',0,
+ '.','t','a','r',' ','0','1',';','3','1',0,
+ '.','t','g','z',' ','0','1',';','3','1',0,
+ '.','a','r','j',' ','0','1',';','3','1',0,
+ '.','t','a','z',' ','0','1',';','3','1',0,
+ '.','l','z','h',' ','0','1',';','3','1',0,
+ '.','z','i','p',' ','0','1',';','3','1',0,
+ '.','z',' ','0','1',';','3','1',0,
+ '.','Z',' ','0','1',';','3','1',0,
+ '.','g','z',' ','0','1',';','3','1',0,
+ '.','b','z','2',' ','0','1',';','3','1',0,
+ '.','b','z',' ','0','1',';','3','1',0,
+ '.','t','b','z','2',' ','0','1',';','3','1',0,
+ '.','t','z',' ','0','1',';','3','1',0,
+ '.','d','e','b',' ','0','1',';','3','1',0,
+ '.','r','p','m',' ','0','1',';','3','1',0,
+ '.','j','a','r',' ','0','1',';','3','1',0,
+ '.','r','a','r',' ','0','1',';','3','1',0,
+ '.','a','c','e',' ','0','1',';','3','1',0,
+ '.','z','o','o',' ','0','1',';','3','1',0,
+ '.','c','p','i','o',' ','0','1',';','3','1',0,
+ '.','7','z',' ','0','1',';','3','1',0,
+ '.','r','z',' ','0','1',';','3','1',0,
+ '#',' ','i','m','a','g','e',' ','f','o','r','m','a','t','s',0,
+ '.','j','p','g',' ','0','1',';','3','5',0,
+ '.','j','p','e','g',' ','0','1',';','3','5',0,
+ '.','g','i','f',' ','0','1',';','3','5',0,
+ '.','b','m','p',' ','0','1',';','3','5',0,
+ '.','p','b','m',' ','0','1',';','3','5',0,
+ '.','p','g','m',' ','0','1',';','3','5',0,
+ '.','p','p','m',' ','0','1',';','3','5',0,
+ '.','t','g','a',' ','0','1',';','3','5',0,
+ '.','x','b','m',' ','0','1',';','3','5',0,
+ '.','x','p','m',' ','0','1',';','3','5',0,
+ '.','t','i','f',' ','0','1',';','3','5',0,
+ '.','t','i','f','f',' ','0','1',';','3','5',0,
+ '.','p','n','g',' ','0','1',';','3','5',0,
+ '.','m','n','g',' ','0','1',';','3','5',0,
+ '.','p','c','x',' ','0','1',';','3','5',0,
+ '.','m','o','v',' ','0','1',';','3','5',0,
+ '.','m','p','g',' ','0','1',';','3','5',0,
+ '.','m','p','e','g',' ','0','1',';','3','5',0,
+ '.','m','2','v',' ','0','1',';','3','5',0,
+ '.','m','k','v',' ','0','1',';','3','5',0,
+ '.','o','g','m',' ','0','1',';','3','5',0,
+ '.','m','p','4',' ','0','1',';','3','5',0,
+ '.','m','4','v',' ','0','1',';','3','5',0,
+ '.','m','p','4','v',' ','0','1',';','3','5',0,
+ '.','v','o','b',' ','0','1',';','3','5',0,
+ '.','q','t',' ','0','1',';','3','5',0,
+ '.','n','u','v',' ','0','1',';','3','5',0,
+ '.','w','m','v',' ','0','1',';','3','5',0,
+ '.','a','s','f',' ','0','1',';','3','5',0,
+ '.','r','m',' ','0','1',';','3','5',0,
+ '.','r','m','v','b',' ','0','1',';','3','5',0,
+ '.','f','l','c',' ','0','1',';','3','5',0,
+ '.','a','v','i',' ','0','1',';','3','5',0,
+ '.','f','l','i',' ','0','1',';','3','5',0,
+ '.','g','l',' ','0','1',';','3','5',0,
+ '.','d','l',' ','0','1',';','3','5',0,
+ '.','x','c','f',' ','0','1',';','3','5',0,
+ '.','x','w','d',' ','0','1',';','3','5',0,
+ '.','y','u','v',' ','0','1',';','3','5',0,
+ '#',' ','a','u','d','i','o',' ','f','o','r','m','a','t','s',0,
+ '.','a','a','c',' ','0','0',';','3','6',0,
+ '.','a','u',' ','0','0',';','3','6',0,
+ '.','f','l','a','c',' ','0','0',';','3','6',0,
+ '.','m','i','d',' ','0','0',';','3','6',0,
+ '.','m','i','d','i',' ','0','0',';','3','6',0,
+ '.','m','k','a',' ','0','0',';','3','6',0,
+ '.','m','p','3',' ','0','0',';','3','6',0,
+ '.','m','p','c',' ','0','0',';','3','6',0,
+ '.','o','g','g',' ','0','0',';','3','6',0,
+ '.','r','a',' ','0','0',';','3','6',0,
+ '.','w','a','v',' ','0','0',';','3','6',0,
+};
diff --git a/src/dircolors.hin b/src/dircolors.hin
new file mode 100644
index 0000000..8d550d1
--- /dev/null
+++ b/src/dircolors.hin
@@ -0,0 +1,171 @@
+# Configuration file for dircolors, a utility to help you set the
+# LS_COLORS environment variable used by GNU ls with the --color option.
+
+# Copyright (C) 1996, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+# Copying and distribution of this file, with or without modification,
+# are permitted provided the copyright notice and this notice are preserved.
+
+# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the
+# slackware version of dircolors) are recognized but ignored.
+
+# Below, there should be one TERM entry for each termtype that is colorizable
+TERM Eterm
+TERM ansi
+TERM color-xterm
+TERM con132x25
+TERM con132x30
+TERM con132x43
+TERM con132x60
+TERM con80x25
+TERM con80x28
+TERM con80x30
+TERM con80x43
+TERM con80x50
+TERM con80x60
+TERM cons25
+TERM console
+TERM cygwin
+TERM dtterm
+TERM gnome
+TERM konsole
+TERM kterm
+TERM linux
+TERM linux-c
+TERM mach-color
+TERM mlterm
+TERM putty
+TERM rxvt
+TERM rxvt-cygwin
+TERM rxvt-cygwin-native
+TERM rxvt-unicode
+TERM screen
+TERM screen-bce
+TERM screen-w
+TERM screen.linux
+TERM vt100
+TERM xterm
+TERM xterm-256color
+TERM xterm-color
+TERM xterm-debian
+
+# Below are the color init strings for the basic file types. A color init
+# string consists of one or more of the following numeric codes:
+# Attribute codes:
+# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
+# Text color codes:
+# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
+# Background color codes:
+# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
+NORMAL 00 # global default, although everything should be something.
+FILE 00 # normal file
+DIR 01;34 # directory
+LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
+ # numerical value, the color is as for the file pointed to.)
+FIFO 40;33 # pipe
+SOCK 01;35 # socket
+DOOR 01;35 # door
+BLK 40;33;01 # block device driver
+CHR 40;33;01 # character device driver
+ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file
+SETUID 37;41 # file that is setuid (u+s)
+SETGID 30;43 # file that is setgid (g+s)
+STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w)
+OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
+STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
+
+# This is for files with execute permission:
+EXEC 01;32
+
+# List any file extensions like '.gz' or '.tar' that you would like ls
+# to colorize below. Put the extension, a space, and the color init string.
+# (and any comments you want to add after a '#')
+
+# If you use DOS-style suffixes, you may want to uncomment the following:
+#.cmd 01;32 # executables (bright green)
+#.exe 01;32
+#.com 01;32
+#.btm 01;32
+#.bat 01;32
+# Or if you want to colorize scripts even if they do not have the
+# executable bit actually set.
+#.sh 01;32
+#.csh 01;32
+
+ # archives or compressed (bright red)
+.tar 01;31
+.tgz 01;31
+.arj 01;31
+.taz 01;31
+.lzh 01;31
+.zip 01;31
+.z 01;31
+.Z 01;31
+.gz 01;31
+.bz2 01;31
+.bz 01;31
+.tbz2 01;31
+.tz 01;31
+.deb 01;31
+.rpm 01;31
+.jar 01;31
+.rar 01;31
+.ace 01;31
+.zoo 01;31
+.cpio 01;31
+.7z 01;31
+.rz 01;31
+
+# image formats
+.jpg 01;35
+.jpeg 01;35
+.gif 01;35
+.bmp 01;35
+.pbm 01;35
+.pgm 01;35
+.ppm 01;35
+.tga 01;35
+.xbm 01;35
+.xpm 01;35
+.tif 01;35
+.tiff 01;35
+.png 01;35
+.mng 01;35
+.pcx 01;35
+.mov 01;35
+.mpg 01;35
+.mpeg 01;35
+.m2v 01;35
+.mkv 01;35
+.ogm 01;35
+.mp4 01;35
+.m4v 01;35
+.mp4v 01;35
+.vob 01;35
+.qt 01;35
+.nuv 01;35
+.wmv 01;35
+.asf 01;35
+.rm 01;35
+.rmvb 01;35
+.flc 01;35
+.avi 01;35
+.fli 01;35
+.gl 01;35
+.dl 01;35
+.xcf 01;35
+.xwd 01;35
+.yuv 01;35
+
+# audio formats
+.aac 00;36
+.au 00;36
+.flac 00;36
+.mid 00;36
+.midi 00;36
+.mka 00;36
+.mp3 00;36
+.mpc 00;36
+.ogg 00;36
+.ra 00;36
+.wav 00;36
diff --git a/src/dirname.c b/src/dirname.c
new file mode 100644
index 0000000..2253391
--- /dev/null
+++ b/src/dirname.c
@@ -0,0 +1,117 @@
+/* dirname -- strip suffix from file name
+
+ Copyright (C) 1990-1997, 1999-2002, 2004, 2005, 2006 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David MacKenzie and Jim Meyering. */
+
+#include <config.h>
+#include <getopt.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "long-options.h"
+#include "error.h"
+#include "quote.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "dirname"
+
+#define AUTHORS "David MacKenzie", "Jim Meyering"
+
+/* The name this program was run with. */
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s NAME\n\
+ or: %s OPTION\n\
+"),
+ program_name, program_name);
+ fputs (_("\
+Print NAME with its trailing /component removed; if NAME contains no /'s,\n\
+output `.' (meaning the current directory).\n\
+\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\
+\n\
+Examples:\n\
+ %s /usr/bin/sort Output \"/usr/bin\".\n\
+ %s stdio.h Output \".\".\n\
+"),
+ program_name, program_name);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ static char const dot = '.';
+ char const *result;
+ size_t len;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "+", NULL, NULL) != -1)
+ usage (EXIT_FAILURE);
+
+ if (argc < optind + 1)
+ {
+ error (0, 0, _("missing operand"));
+ usage (EXIT_FAILURE);
+ }
+
+ if (optind + 1 < argc)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind + 1]));
+ usage (EXIT_FAILURE);
+ }
+
+ result = argv[optind];
+ len = dir_len (result);
+
+ if (! len)
+ {
+ result = &dot;
+ len = 1;
+ }
+
+ fwrite (result, 1, len, stdout);
+ putchar ('\n');
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/du.c b/src/du.c
new file mode 100644
index 0000000..206d318
--- /dev/null
+++ b/src/du.c
@@ -0,0 +1,1021 @@
+/* du -- summarize disk usage
+ Copyright (C) 1988-1991, 1995-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Differences from the Unix du:
+ * Doesn't simply ignore the names of regular files given as arguments
+ when -a is given.
+
+ By tege@sics.se, Torbjorn Granlund,
+ and djm@ai.mit.edu, David MacKenzie.
+ Variable blocks added by lm@sgi.com and eggert@twinsun.com.
+ Rewritten to use nftw, then to use fts by Jim Meyering. */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+#include <assert.h>
+#include "system.h"
+#include "argmatch.h"
+#include "error.h"
+#include "exclude.h"
+#include "fprintftime.h"
+#include "hash.h"
+#include "human.h"
+#include "inttostr.h"
+#include "quote.h"
+#include "quotearg.h"
+#include "readtokens0.h"
+#include "same.h"
+#include "stat-time.h"
+#include "xfts.h"
+#include "xstrtol.h"
+
+extern bool fts_debug;
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "du"
+
+#define AUTHORS \
+ "Torbjorn Granlund", "David MacKenzie, Paul Eggert", "Jim Meyering"
+
+#if DU_DEBUG
+# define FTS_CROSS_CHECK(Fts) fts_cross_check (Fts)
+# define DEBUG_OPT "d"
+#else
+# define FTS_CROSS_CHECK(Fts)
+# define DEBUG_OPT
+#endif
+
+/* Initial size of the hash table. */
+#define INITIAL_TABLE_SIZE 103
+
+/* Hash structure for inode and device numbers. The separate entry
+ structure makes it easier to rehash "in place". */
+
+struct entry
+{
+ ino_t st_ino;
+ dev_t st_dev;
+};
+
+/* A set of dev/ino pairs. */
+static Hash_table *htab;
+
+/* Define a class for collecting directory information. */
+
+struct duinfo
+{
+ /* Size of files in directory. */
+ uintmax_t size;
+
+ /* Latest time stamp found. If tmax.tv_sec == TYPE_MINIMUM (time_t)
+ && tmax.tv_nsec < 0, no time stamp has been found. */
+ struct timespec tmax;
+};
+
+/* Initialize directory data. */
+static inline void
+duinfo_init (struct duinfo *a)
+{
+ a->size = 0;
+ a->tmax.tv_sec = TYPE_MINIMUM (time_t);
+ a->tmax.tv_nsec = -1;
+}
+
+/* Set directory data. */
+static inline void
+duinfo_set (struct duinfo *a, uintmax_t size, struct timespec tmax)
+{
+ a->size = size;
+ a->tmax = tmax;
+}
+
+/* Accumulate directory data. */
+static inline void
+duinfo_add (struct duinfo *a, struct duinfo const *b)
+{
+ a->size += b->size;
+ if (timespec_cmp (a->tmax, b->tmax) < 0)
+ a->tmax = b->tmax;
+}
+
+/* A structure for per-directory level information. */
+struct dulevel
+{
+ /* Entries in this directory. */
+ struct duinfo ent;
+
+ /* Total for subdirectories. */
+ struct duinfo subdir;
+};
+
+/* Name under which this program was invoked. */
+char *program_name;
+
+/* If true, display counts for all files, not just directories. */
+static bool opt_all = false;
+
+/* If true, rather than using the disk usage of each file,
+ use the apparent size (a la stat.st_size). */
+static bool apparent_size = false;
+
+/* If true, count each hard link of files with multiple links. */
+static bool opt_count_all = false;
+
+/* If true, output the NUL byte instead of a newline at the end of each line. */
+static bool opt_nul_terminate_output = false;
+
+/* If true, print a grand total at the end. */
+static bool print_grand_total = false;
+
+/* If nonzero, do not add sizes of subdirectories. */
+static bool opt_separate_dirs = false;
+
+/* Show the total for each directory (and file if --all) that is at
+ most MAX_DEPTH levels down from the root of the hierarchy. The root
+ is at level 0, so `du --max-depth=0' is equivalent to `du -s'. */
+static size_t max_depth = SIZE_MAX;
+
+/* Human-readable options for output. */
+static int human_output_opts;
+
+/* If true, print most recently modified date, using the specified format. */
+static bool opt_time = false;
+
+/* Type of time to display. controlled by --time. */
+
+enum time_type
+ {
+ time_mtime, /* default */
+ time_ctime,
+ time_atime
+ };
+
+static enum time_type time_type = time_mtime;
+
+/* User specified date / time style */
+static char const *time_style = NULL;
+
+/* Format used to display date / time. Controlled by --time-style */
+static char const *time_format = NULL;
+
+/* The units to use when printing sizes. */
+static uintmax_t output_block_size;
+
+/* File name patterns to exclude. */
+static struct exclude *exclude;
+
+/* Grand total size of all args, in bytes. Also latest modified date. */
+static struct duinfo tot_dui;
+
+#define IS_DIR_TYPE(Type) \
+ ((Type) == FTS_DP \
+ || (Type) == FTS_DNR)
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ APPARENT_SIZE_OPTION = CHAR_MAX + 1,
+ EXCLUDE_OPTION,
+ FILES0_FROM_OPTION,
+ HUMAN_SI_OPTION,
+
+ /* FIXME: --kilobytes is deprecated (but not -k); remove in late 2006 */
+ KILOBYTES_LONG_OPTION,
+
+ MAX_DEPTH_OPTION,
+
+ /* FIXME: --megabytes is deprecated (but not -m); remove in late 2006 */
+ MEGABYTES_LONG_OPTION,
+
+ TIME_OPTION,
+ TIME_STYLE_OPTION
+};
+
+static struct option const long_options[] =
+{
+ {"all", no_argument, NULL, 'a'},
+ {"apparent-size", no_argument, NULL, APPARENT_SIZE_OPTION},
+ {"block-size", required_argument, NULL, 'B'},
+ {"bytes", no_argument, NULL, 'b'},
+ {"count-links", no_argument, NULL, 'l'},
+ {"dereference", no_argument, NULL, 'L'},
+ {"dereference-args", no_argument, NULL, 'D'},
+ {"exclude", required_argument, NULL, EXCLUDE_OPTION},
+ {"exclude-from", required_argument, NULL, 'X'},
+ {"files0-from", required_argument, NULL, FILES0_FROM_OPTION},
+ {"human-readable", no_argument, NULL, 'h'},
+ {"si", no_argument, NULL, HUMAN_SI_OPTION},
+ {"kilobytes", no_argument, NULL, KILOBYTES_LONG_OPTION},
+ {"max-depth", required_argument, NULL, MAX_DEPTH_OPTION},
+ {"null", no_argument, NULL, '0'},
+ {"megabytes", no_argument, NULL, MEGABYTES_LONG_OPTION},
+ {"no-dereference", no_argument, NULL, 'P'},
+ {"one-file-system", no_argument, NULL, 'x'},
+ {"separate-dirs", no_argument, NULL, 'S'},
+ {"summarize", no_argument, NULL, 's'},
+ {"total", no_argument, NULL, 'c'},
+ {"time", optional_argument, NULL, TIME_OPTION},
+ {"time-style", required_argument, NULL, TIME_STYLE_OPTION},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+static char const *const time_args[] =
+{
+ "atime", "access", "use", "ctime", "status", NULL
+};
+static enum time_type const time_types[] =
+{
+ time_atime, time_atime, time_atime, time_ctime, time_ctime
+};
+ARGMATCH_VERIFY (time_args, time_types);
+
+/* `full-iso' uses full ISO-style dates and times. `long-iso' uses longer
+ ISO-style time stamps, though shorter than `full-iso'. `iso' uses shorter
+ ISO-style time stamps. */
+enum time_style
+ {
+ full_iso_time_style, /* --time-style=full-iso */
+ long_iso_time_style, /* --time-style=long-iso */
+ iso_time_style /* --time-style=iso */
+ };
+
+static char const *const time_style_args[] =
+{
+ "full-iso", "long-iso", "iso", NULL
+};
+static enum time_style const time_style_types[] =
+{
+ full_iso_time_style, long_iso_time_style, iso_time_style
+};
+ARGMATCH_VERIFY (time_style_args, time_style_types);
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [FILE]...\n\
+ or: %s [OPTION]... --files0-from=F\n\
+"), program_name, program_name);
+ fputs (_("\
+Summarize disk usage of each FILE, recursively for directories.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -a, --all write counts for all files, not just directories\n\
+ --apparent-size print apparent sizes, rather than disk usage; although\n\
+ the apparent size is usually smaller, it may be\n\
+ larger due to holes in (`sparse') files, internal\n\
+ fragmentation, indirect blocks, and the like\n\
+"), stdout);
+ fputs (_("\
+ -B, --block-size=SIZE use SIZE-byte blocks\n\
+ -b, --bytes equivalent to `--apparent-size --block-size=1'\n\
+ -c, --total produce a grand total\n\
+ -D, --dereference-args dereference FILEs that are symbolic links\n\
+"), stdout);
+ fputs (_("\
+ --files0-from=F summarize disk usage of the NUL-terminated file\n\
+ names specified in file F\n\
+ -H like --si, but also evokes a warning; will soon\n\
+ change to be equivalent to --dereference-args (-D)\n\
+ -h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G)\n\
+ --si like -h, but use powers of 1000 not 1024\n\
+"), stdout);
+ fputs (_("\
+ -k like --block-size=1K\n\
+ -l, --count-links count sizes many times if hard linked\n\
+ -m like --block-size=1M\n\
+"), stdout);
+ fputs (_("\
+ -L, --dereference dereference all symbolic links\n\
+ -P, --no-dereference don't follow any symbolic links (this is the default)\n\
+ -0, --null end each output line with 0 byte rather than newline\n\
+ -S, --separate-dirs do not include size of subdirectories\n\
+ -s, --summarize display only a total for each argument\n\
+"), stdout);
+ fputs (_("\
+ -x, --one-file-system skip directories on different file systems\n\
+ -X FILE, --exclude-from=FILE Exclude files that match any pattern in FILE.\n\
+ --exclude=PATTERN Exclude files that match PATTERN.\n\
+ --max-depth=N print the total for a directory (or file, with --all)\n\
+ only if it is N or fewer levels below the command\n\
+ line argument; --max-depth=0 is the same as\n\
+ --summarize\n\
+"), stdout);
+ fputs (_("\
+ --time show time of the last modification of any file in the\n\
+ directory, or any of its subdirectories\n\
+ --time=WORD show time as WORD instead of modification time:\n\
+ atime, access, use, ctime or status\n\
+ --time-style=STYLE show times using style STYLE:\n\
+ full-iso, long-iso, iso, +FORMAT\n\
+ FORMAT is interpreted like `date'\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\n\
+SIZE may be (or may be an integer optionally followed by) one of following:\n\
+kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+static size_t
+entry_hash (void const *x, size_t table_size)
+{
+ struct entry const *p = x;
+
+ /* Ignoring the device number here should be fine. */
+ /* The cast to uintmax_t prevents negative remainders
+ if st_ino is negative. */
+ return (uintmax_t) p->st_ino % table_size;
+}
+
+/* Compare two dev/ino pairs. Return true if they are the same. */
+static bool
+entry_compare (void const *x, void const *y)
+{
+ struct entry const *a = x;
+ struct entry const *b = y;
+ return SAME_INODE (*a, *b) ? true : false;
+}
+
+/* Try to insert the INO/DEV pair into the global table, HTAB.
+ Return true if the pair is successfully inserted,
+ false if the pair is already in the table. */
+static bool
+hash_ins (ino_t ino, dev_t dev)
+{
+ struct entry *ent;
+ struct entry *ent_from_table;
+
+ ent = xmalloc (sizeof *ent);
+ ent->st_ino = ino;
+ ent->st_dev = dev;
+
+ ent_from_table = hash_insert (htab, ent);
+ if (ent_from_table == NULL)
+ {
+ /* Insertion failed due to lack of memory. */
+ xalloc_die ();
+ }
+
+ if (ent_from_table == ent)
+ {
+ /* Insertion succeeded. */
+ return true;
+ }
+
+ /* That pair is already in the table, so ENT was not inserted. Free it. */
+ free (ent);
+
+ return false;
+}
+
+/* Initialize the hash table. */
+static void
+hash_init (void)
+{
+ htab = hash_initialize (INITIAL_TABLE_SIZE, NULL,
+ entry_hash, entry_compare, free);
+ if (htab == NULL)
+ xalloc_die ();
+}
+
+/* FIXME: this code is nearly identical to code in date.c */
+/* Display the date and time in WHEN according to the format specified
+ in FORMAT. */
+
+static void
+show_date (const char *format, struct timespec when)
+{
+ struct tm *tm = localtime (&when.tv_sec);
+ if (! tm)
+ {
+ char buf[INT_BUFSIZE_BOUND (intmax_t)];
+ error (0, 0, _("time %s is out of range"),
+ (TYPE_SIGNED (time_t)
+ ? imaxtostr (when.tv_sec, buf)
+ : umaxtostr (when.tv_sec, buf)));
+ fputs (buf, stdout);
+ return;
+ }
+
+ fprintftime (stdout, format, tm, 0, when.tv_nsec);
+}
+
+/* Print N_BYTES. Convert it to a readable value before printing. */
+
+static void
+print_only_size (uintmax_t n_bytes)
+{
+ char buf[LONGEST_HUMAN_READABLE + 1];
+ fputs (human_readable (n_bytes, buf, human_output_opts,
+ 1, output_block_size), stdout);
+}
+
+/* Print size (and optionally time) indicated by *PDUI, followed by STRING. */
+
+static void
+print_size (const struct duinfo *pdui, const char *string)
+{
+ print_only_size (pdui->size);
+ if (opt_time)
+ {
+ putchar ('\t');
+ show_date (time_format, pdui->tmax);
+ }
+ printf ("\t%s%c", string, opt_nul_terminate_output ? '\0' : '\n');
+ fflush (stdout);
+}
+
+/* This function is called once for every file system object that fts
+ encounters. fts does a depth-first traversal. This function knows
+ that and accumulates per-directory totals based on changes in
+ the depth of the current entry. It returns true on success. */
+
+static bool
+process_file (FTS *fts, FTSENT *ent)
+{
+ bool ok;
+ struct duinfo dui;
+ struct duinfo dui_to_print;
+ size_t level;
+ static size_t prev_level;
+ static size_t n_alloc;
+ /* First element of the structure contains:
+ The sum of the st_size values of all entries in the single directory
+ at the corresponding level. Although this does include the st_size
+ corresponding to each subdirectory, it does not include the size of
+ any file in a subdirectory. Also corresponding last modified date.
+ Second element of the structure contains:
+ The sum of the sizes of all entries in the hierarchy at or below the
+ directory at the specified level. */
+ static struct dulevel *dulvl;
+ bool print = true;
+
+ const char *file = ent->fts_path;
+ const struct stat *sb = ent->fts_statp;
+ bool skip;
+
+ /* If necessary, set FTS_SKIP before returning. */
+ skip = excluded_file_name (exclude, ent->fts_path);
+ if (skip)
+ fts_set (fts, ent, FTS_SKIP);
+
+ switch (ent->fts_info)
+ {
+ case FTS_NS:
+ error (0, ent->fts_errno, _("cannot access %s"), quote (file));
+ return false;
+
+ case FTS_ERR:
+ /* if (S_ISDIR (ent->fts_statp->st_mode) && FIXME */
+ error (0, ent->fts_errno, _("%s"), quote (file));
+ return false;
+
+ case FTS_DNR:
+ /* Don't return just yet, since although the directory is not readable,
+ we were able to stat it, so we do have a size. */
+ error (0, ent->fts_errno, _("cannot read directory %s"), quote (file));
+ ok = false;
+ break;
+
+ default:
+ ok = true;
+ break;
+ }
+
+ /* If this is the first (pre-order) encounter with a directory,
+ or if it's the second encounter for a skipped directory, then
+ return right away. */
+ if (ent->fts_info == FTS_D || skip)
+ return ok;
+
+ /* If the file is being excluded or if it has already been counted
+ via a hard link, then don't let it contribute to the sums. */
+ if (skip
+ || (!opt_count_all
+ && ! S_ISDIR (sb->st_mode)
+ && 1 < sb->st_nlink
+ && ! hash_ins (sb->st_ino, sb->st_dev)))
+ {
+ /* Note that we must not simply return here.
+ We still have to update prev_level and maybe propagate
+ some sums up the hierarchy. */
+ duinfo_init (&dui);
+ print = false;
+ }
+ else
+ {
+ duinfo_set (&dui,
+ (apparent_size
+ ? sb->st_size
+ : (uintmax_t) ST_NBLOCKS (*sb) * ST_NBLOCKSIZE),
+ (time_type == time_mtime ? get_stat_mtime (sb)
+ : time_type == time_atime ? get_stat_atime (sb)
+ : get_stat_ctime (sb)));
+ }
+
+ level = ent->fts_level;
+ dui_to_print = dui;
+
+ if (n_alloc == 0)
+ {
+ n_alloc = level + 10;
+ dulvl = xcalloc (n_alloc, sizeof *dulvl);
+ }
+ else
+ {
+ if (level == prev_level)
+ {
+ /* This is usually the most common case. Do nothing. */
+ }
+ else if (level > prev_level)
+ {
+ /* Descending the hierarchy.
+ Clear the accumulators for *all* levels between prev_level
+ and the current one. The depth may change dramatically,
+ e.g., from 1 to 10. */
+ size_t i;
+
+ if (n_alloc <= level)
+ {
+ dulvl = xnrealloc (dulvl, level, 2 * sizeof *dulvl);
+ n_alloc = level * 2;
+ }
+
+ for (i = prev_level + 1; i <= level; i++)
+ {
+ duinfo_init (&dulvl[i].ent);
+ duinfo_init (&dulvl[i].subdir);
+ }
+ }
+ else /* level < prev_level */
+ {
+ /* Ascending the hierarchy.
+ Process a directory only after all entries in that
+ directory have been processed. When the depth decreases,
+ propagate sums from the children (prev_level) to the parent.
+ Here, the current level is always one smaller than the
+ previous one. */
+ assert (level == prev_level - 1);
+ duinfo_add (&dui_to_print, &dulvl[prev_level].ent);
+ if (!opt_separate_dirs)
+ duinfo_add (&dui_to_print, &dulvl[prev_level].subdir);
+ duinfo_add (&dulvl[level].subdir, &dulvl[prev_level].ent);
+ duinfo_add (&dulvl[level].subdir, &dulvl[prev_level].subdir);
+ }
+ }
+
+ prev_level = level;
+
+ /* Let the size of a directory entry contribute to the total for the
+ containing directory, unless --separate-dirs (-S) is specified. */
+ if ( ! (opt_separate_dirs && IS_DIR_TYPE (ent->fts_info)))
+ duinfo_add (&dulvl[level].ent, &dui);
+
+ /* Even if this directory is unreadable or we can't chdir into it,
+ do let its size contribute to the total, ... */
+ duinfo_add (&tot_dui, &dui);
+
+ /* ... but don't print out a total for it, since without the size(s)
+ of any potential entries, it could be very misleading. */
+ if (ent->fts_info == FTS_DNR)
+ return ok;
+
+ /* If we're not counting an entry, e.g., because it's a hard link
+ to a file we've already counted (and --count-links), then don't
+ print a line for it. */
+ if (!print)
+ return ok;
+
+ if ((IS_DIR_TYPE (ent->fts_info) && level <= max_depth)
+ || ((opt_all && level <= max_depth) || level == 0))
+ print_size (&dui_to_print, file);
+
+ return ok;
+}
+
+/* Recursively print the sizes of the directories (and, if selected, files)
+ named in FILES, the last entry of which is NULL.
+ BIT_FLAGS controls how fts works.
+ Return true if successful. */
+
+static bool
+du_files (char **files, int bit_flags)
+{
+ bool ok = true;
+
+ if (*files)
+ {
+ FTS *fts = xfts_open (files, bit_flags, NULL);
+
+ while (1)
+ {
+ FTSENT *ent;
+
+ ent = fts_read (fts);
+ if (ent == NULL)
+ {
+ if (errno != 0)
+ {
+ /* FIXME: try to give a better message */
+ error (0, errno, _("fts_read failed"));
+ ok = false;
+ }
+ break;
+ }
+ FTS_CROSS_CHECK (fts);
+
+ ok &= process_file (fts, ent);
+ }
+
+ /* Ignore failure, since the only way it can do so is in failing to
+ return to the original directory, and since we're about to exit,
+ that doesn't matter. */
+ fts_close (fts);
+ }
+
+ if (print_grand_total)
+ print_size (&tot_dui, _("total"));
+
+ return ok;
+}
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ char *cwd_only[2];
+ bool max_depth_specified = false;
+ char **files;
+ bool ok = true;
+ char *files_from = NULL;
+ struct Tokens tok;
+
+ /* Bit flags that control how fts works. */
+ int bit_flags = FTS_TIGHT_CYCLE_CHECK;
+
+ /* Select one of the three FTS_ options that control if/when
+ to follow a symlink. */
+ int symlink_deref_bits = FTS_PHYSICAL;
+
+ /* If true, display only a total for each argument. */
+ bool opt_summarize_only = false;
+
+ cwd_only[0] = ".";
+ cwd_only[1] = NULL;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ exclude = new_exclude ();
+
+ human_output_opts = human_options (getenv ("DU_BLOCK_SIZE"), false,
+ &output_block_size);
+
+ while ((c = getopt_long (argc, argv, DEBUG_OPT "0abchHklmsxB:DLPSX:",
+ long_options, NULL)) != -1)
+ {
+ switch (c)
+ {
+#if DU_DEBUG
+ case 'd':
+ fts_debug = true;
+ break;
+#endif
+
+ case '0':
+ opt_nul_terminate_output = true;
+ break;
+
+ case 'a':
+ opt_all = true;
+ break;
+
+ case APPARENT_SIZE_OPTION:
+ apparent_size = true;
+ break;
+
+ case 'b':
+ apparent_size = true;
+ human_output_opts = 0;
+ output_block_size = 1;
+ break;
+
+ case 'c':
+ print_grand_total = true;
+ break;
+
+ case 'h':
+ human_output_opts = human_autoscale | human_SI | human_base_1024;
+ output_block_size = 1;
+ break;
+
+ case 'H': /* FIXME: remove warning and move this "case 'H'" to
+ precede --dereference-args in late 2006. */
+ error (0, 0, _("WARNING: use --si, not -H; the meaning of the -H\
+ option will soon\nchange to be the same as that of --dereference-args (-D)"));
+ /* fall through */
+ case HUMAN_SI_OPTION:
+ human_output_opts = human_autoscale | human_SI;
+ output_block_size = 1;
+ break;
+
+ case KILOBYTES_LONG_OPTION:
+ error (0, 0,
+ _("the --kilobytes option is deprecated; use -k instead"));
+ /* fall through */
+ case 'k':
+ human_output_opts = 0;
+ output_block_size = 1024;
+ break;
+
+ case MAX_DEPTH_OPTION: /* --max-depth=N */
+ {
+ unsigned long int tmp_ulong;
+ if (xstrtoul (optarg, NULL, 0, &tmp_ulong, NULL) == LONGINT_OK
+ && tmp_ulong <= SIZE_MAX)
+ {
+ max_depth_specified = true;
+ max_depth = tmp_ulong;
+ }
+ else
+ {
+ error (0, 0, _("invalid maximum depth %s"),
+ quote (optarg));
+ ok = false;
+ }
+ }
+ break;
+
+ case MEGABYTES_LONG_OPTION:
+ error (0, 0,
+ _("the --megabytes option is deprecated; use -m instead"));
+ /* fall through */
+ case 'm':
+ human_output_opts = 0;
+ output_block_size = 1024 * 1024;
+ break;
+
+ case 'l':
+ opt_count_all = true;
+ break;
+
+ case 's':
+ opt_summarize_only = true;
+ break;
+
+ case 'x':
+ bit_flags |= FTS_XDEV;
+ break;
+
+ case 'B':
+ human_output_opts = human_options (optarg, true, &output_block_size);
+ break;
+
+ case 'D': /* This will eventually be 'H' (-H), too. */
+ symlink_deref_bits = FTS_COMFOLLOW | FTS_PHYSICAL;
+ break;
+
+ case 'L': /* --dereference */
+ symlink_deref_bits = FTS_LOGICAL;
+ break;
+
+ case 'P': /* --no-dereference */
+ symlink_deref_bits = FTS_PHYSICAL;
+ break;
+
+ case 'S':
+ opt_separate_dirs = true;
+ break;
+
+ case 'X':
+ if (add_exclude_file (add_exclude, exclude, optarg,
+ EXCLUDE_WILDCARDS, '\n'))
+ {
+ error (0, errno, "%s", quotearg_colon (optarg));
+ ok = false;
+ }
+ break;
+
+ case FILES0_FROM_OPTION:
+ files_from = optarg;
+ break;
+
+ case EXCLUDE_OPTION:
+ add_exclude (exclude, optarg, EXCLUDE_WILDCARDS);
+ break;
+
+ case TIME_OPTION:
+ opt_time = true;
+ time_type =
+ (optarg
+ ? XARGMATCH ("--time", optarg, time_args, time_types)
+ : time_mtime);
+ break;
+
+ case TIME_STYLE_OPTION:
+ time_style = optarg;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ ok = false;
+ }
+ }
+
+ if (!ok)
+ usage (EXIT_FAILURE);
+
+ if (opt_all & opt_summarize_only)
+ {
+ error (0, 0, _("cannot both summarize and show all entries"));
+ usage (EXIT_FAILURE);
+ }
+
+ if (opt_summarize_only && max_depth_specified && max_depth == 0)
+ {
+ error (0, 0,
+ _("warning: summarizing is the same as using --max-depth=0"));
+ }
+
+ if (opt_summarize_only && max_depth_specified && max_depth != 0)
+ {
+ unsigned long int d = max_depth;
+ error (0, 0, _("warning: summarizing conflicts with --max-depth=%lu"), d);
+ usage (EXIT_FAILURE);
+ }
+
+ if (opt_summarize_only)
+ max_depth = 0;
+
+ /* Process time style if printing last times. */
+ if (opt_time)
+ {
+ if (! time_style)
+ {
+ time_style = getenv ("TIME_STYLE");
+
+ /* Ignore TIMESTYLE="locale", for compatibility with ls. */
+ if (! time_style || STREQ (time_style, "locale"))
+ time_style = "long-iso";
+ else if (*time_style == '+')
+ {
+ /* Ignore anything after a newline, for compatibility
+ with ls. */
+ char *p = strchr (time_style, '\n');
+ if (p)
+ *p = '\0';
+ }
+ else
+ {
+ /* Ignore "posix-" prefix, for compatibility with ls. */
+ static char const posix_prefix[] = "posix-";
+ while (strncmp (time_style, posix_prefix, sizeof posix_prefix - 1)
+ == 0)
+ time_style += sizeof posix_prefix - 1;
+ }
+ }
+
+ if (*time_style == '+')
+ time_format = time_style + 1;
+ else
+ {
+ switch (XARGMATCH ("time style", time_style,
+ time_style_args, time_style_types))
+ {
+ case full_iso_time_style:
+ time_format = "%Y-%m-%d %H:%M:%S.%N %z";
+ break;
+
+ case long_iso_time_style:
+ time_format = "%Y-%m-%d %H:%M";
+ break;
+
+ case iso_time_style:
+ time_format = "%Y-%m-%d";
+ break;
+ }
+ }
+ }
+
+ if (files_from)
+ {
+ /* When using --files0-from=F, you may not specify any files
+ on the command-line. */
+ if (optind < argc)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind]));
+ fprintf (stderr, "%s\n",
+ _("File operands cannot be combined with --files0-from."));
+ usage (EXIT_FAILURE);
+ }
+
+ if (! (STREQ (files_from, "-") || freopen (files_from, "r", stdin)))
+ error (EXIT_FAILURE, errno, _("cannot open %s for reading"),
+ quote (files_from));
+
+ readtokens0_init (&tok);
+
+ if (! readtokens0 (stdin, &tok) || fclose (stdin) != 0)
+ error (EXIT_FAILURE, 0, _("cannot read file names from %s"),
+ quote (files_from));
+
+ files = tok.tok;
+ }
+ else
+ {
+ files = (optind < argc ? argv + optind : cwd_only);
+ }
+
+ /* Initialize the hash structure for inode numbers. */
+ hash_init ();
+
+ /* Report and filter out any empty file names before invoking fts.
+ This works around a glitch in fts, which fails immediately
+ (without looking at the other file names) when given an empty
+ file name. */
+ {
+ size_t i = 0;
+ size_t j;
+
+ for (j = 0; ; j++)
+ {
+ if (i != j)
+ files[i] = files[j];
+
+ if ( ! files[i])
+ break;
+
+ if (files[i][0])
+ i++;
+ else
+ {
+ if (files_from)
+ {
+ /* Using the standard `filename:line-number:' prefix here is
+ not totally appropriate, since NUL is the separator, not NL,
+ but it might be better than nothing. */
+ unsigned long int file_number = j + 1;
+ error (0, 0, "%s:%lu: %s", quotearg_colon (files_from),
+ file_number, _("invalid zero-length file name"));
+ }
+ else
+ error (0, 0, "%s", _("invalid zero-length file name"));
+ }
+ }
+
+ ok = (i == j);
+ }
+
+ bit_flags |= symlink_deref_bits;
+ ok &= du_files (files, bit_flags);
+
+ /* This isn't really necessary, but it does ensure we
+ exercise this function. */
+ if (files_from)
+ readtokens0_free (&tok);
+
+ hash_free (htab);
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/echo.c b/src/echo.c
new file mode 100644
index 0000000..5f8582c
--- /dev/null
+++ b/src/echo.c
@@ -0,0 +1,276 @@
+/* echo.c, derived from code echo.c in Bash.
+ Copyright (C) 87,89, 1991-1997, 1999-2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include "system.h"
+#include "long-options.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "echo"
+
+#define AUTHORS "FIXME unknown"
+
+/* echo [-neE] [arg ...]
+Output the ARGs. If -n is specified, the trailing newline is
+suppressed. If the -e option is given, interpretation of the
+following backslash-escaped characters is turned on:
+ \a alert (bell)
+ \b backspace
+ \c suppress trailing newline
+ \f form feed
+ \n new line
+ \r carriage return
+ \t horizontal tab
+ \v vertical tab
+ \\ backslash
+ \0NNN the character whose ASCII code is NNN (octal).
+
+You can explicitly turn off the interpretation of the above characters
+on System V systems with the -E option.
+*/
+
+/* If true, interpret backslash escapes by default. */
+#ifndef DEFAULT_ECHO_TO_XPG
+enum { DEFAULT_ECHO_TO_XPG = false };
+#endif
+
+/* The name this program was run with. */
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]... [STRING]...\n"), program_name);
+ fputs (_("\
+Echo the STRING(s) to standard output.\n\
+\n\
+ -n do not output the trailing newline\n\
+"), stdout);
+ fputs (_(DEFAULT_ECHO_TO_XPG
+ ? "\
+ -e enable interpretation of backslash escapes (default)\n\
+ -E disable interpretation of backslash escapes\n"
+ : "\
+ -e enable interpretation of backslash escapes\n\
+ -E disable interpretation of backslash escapes (default)\n"),
+ stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+If -e is in effect, the following sequences are recognized:\n\
+\n\
+ \\0NNN the character whose ASCII code is NNN (octal)\n\
+ \\\\ backslash\n\
+ \\a alert (BEL)\n\
+ \\b backspace\n\
+"), stdout);
+ fputs (_("\
+ \\c suppress trailing newline\n\
+ \\f form feed\n\
+ \\n new line\n\
+ \\r carriage return\n\
+ \\t horizontal tab\n\
+ \\v vertical tab\n\
+"), stdout);
+ printf (USAGE_BUILTIN_WARNING, PROGRAM_NAME);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Convert C from hexadecimal character to integer. */
+static int
+hextobin (unsigned char c)
+{
+ switch (c)
+ {
+ default: return c - '0';
+ case 'a': case 'A': return 10;
+ case 'b': case 'B': return 11;
+ case 'c': case 'C': return 12;
+ case 'd': case 'D': return 13;
+ case 'e': case 'E': return 14;
+ case 'f': case 'F': return 15;
+ }
+}
+
+/* Print the words in LIST to standard output. If the first word is
+ `-n', then don't print a trailing newline. We also support the
+ echo syntax from Version 9 unix systems. */
+
+int
+main (int argc, char **argv)
+{
+ bool display_return = true;
+ bool allow_options =
+ (! getenv ("POSIXLY_CORRECT")
+ || (! DEFAULT_ECHO_TO_XPG && 1 < argc && STREQ (argv[1], "-n")));
+
+ /* System V machines already have a /bin/sh with a v9 behavior.
+ Use the identical behavior for these machines so that the
+ existing system shell scripts won't barf. */
+ bool do_v9 = DEFAULT_ECHO_TO_XPG;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ if (allow_options)
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+
+ --argc;
+ ++argv;
+
+ if (allow_options)
+ while (argc > 0 && *argv[0] == '-')
+ {
+ char const *temp = argv[0] + 1;
+ size_t i;
+
+ /* If it appears that we are handling options, then make sure that
+ all of the options specified are actually valid. Otherwise, the
+ string should just be echoed. */
+
+ for (i = 0; temp[i]; i++)
+ switch (temp[i])
+ {
+ case 'e': case 'E': case 'n':
+ break;
+ default:
+ goto just_echo;
+ }
+
+ if (i == 0)
+ goto just_echo;
+
+ /* All of the options in TEMP are valid options to ECHO.
+ Handle them. */
+ while (*temp)
+ switch (*temp++)
+ {
+ case 'e':
+ do_v9 = true;
+ break;
+
+ case 'E':
+ do_v9 = false;
+ break;
+
+ case 'n':
+ display_return = false;
+ break;
+ }
+
+ argc--;
+ argv++;
+ }
+
+just_echo:
+
+ if (do_v9)
+ {
+ while (argc > 0)
+ {
+ char const *s = argv[0];
+ unsigned char c;
+
+ while ((c = *s++))
+ {
+ if (c == '\\' && *s)
+ {
+ switch (c = *s++)
+ {
+ case 'a': c = '\a'; break;
+ case 'b': c = '\b'; break;
+ case 'c': exit (EXIT_SUCCESS);
+ case 'f': c = '\f'; break;
+ case 'n': c = '\n'; break;
+ case 'r': c = '\r'; break;
+ case 't': c = '\t'; break;
+ case 'v': c = '\v'; break;
+ case 'x':
+ {
+ unsigned char ch = *s;
+ if (! isxdigit (ch))
+ goto not_an_escape;
+ s++;
+ c = hextobin (ch);
+ ch = *s;
+ if (isxdigit (ch))
+ {
+ s++;
+ c = c * 16 + hextobin (ch);
+ }
+ }
+ break;
+ case '0':
+ c = 0;
+ if (! ('0' <= *s && *s <= '7'))
+ break;
+ c = *s++;
+ /* Fall through. */
+ case '1': case '2': case '3':
+ case '4': case '5': case '6': case '7':
+ c -= '0';
+ if ('0' <= *s && *s <= '7')
+ c = c * 8 + (*s++ - '0');
+ if ('0' <= *s && *s <= '7')
+ c = c * 8 + (*s++ - '0');
+ break;
+ case '\\': break;
+
+ not_an_escape:
+ default: putchar ('\\'); break;
+ }
+ }
+ putchar (c);
+ }
+ argc--;
+ argv++;
+ if (argc > 0)
+ putchar (' ');
+ }
+ }
+ else
+ {
+ while (argc > 0)
+ {
+ fputs (argv[0], stdout);
+ argc--;
+ argv++;
+ if (argc > 0)
+ putchar (' ');
+ }
+ }
+
+ if (display_return)
+ putchar ('\n');
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/env.c b/src/env.c
new file mode 100644
index 0000000..d95ebfd
--- /dev/null
+++ b/src/env.c
@@ -0,0 +1,205 @@
+/* env - run a program in a modified environment
+ Copyright (C) 1986, 1991-2005, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Richard Mlynarik and David MacKenzie */
+
+/* Options:
+ -
+ -i
+ --ignore-environment
+ Construct a new environment from scratch; normally the
+ environment is inherited from the parent process, except as
+ modified by other options.
+
+ -u variable
+ --unset=variable
+ Unset variable VARIABLE (remove it from the environment).
+ If VARIABLE was not set, does nothing.
+
+ variable=value (an arg containing a "=" character)
+ Set the environment variable VARIABLE to value VALUE. VALUE
+ may be of zero length ("variable="). Setting a variable to a
+ zero-length value is different from unsetting it.
+
+ --
+ Indicate that the following argument is the program
+ to invoke. This is necessary when the program's name
+ begins with "-" or contains a "=".
+
+ The first remaining argument specifies a program to invoke;
+ it is searched for according to the specification of the PATH
+ environment variable. Any arguments following that are
+ passed as arguments to that program.
+
+ If no command name is specified following the environment
+ specifications, the resulting environment is printed.
+ This is like specifying a command name of "printenv".
+
+ Examples:
+
+ If the environment passed to "env" is
+ { LOGNAME=rms EDITOR=emacs PATH=.:/gnubin:/hacks }
+
+ env - foo
+ runs "foo" in a null environment.
+
+ env foo
+ runs "foo" in the environment
+ { LOGNAME=rms EDITOR=emacs PATH=.:/gnubin:/hacks }
+
+ env DISPLAY=gnu:0 nemacs
+ runs "nemacs" in the environment
+ { LOGNAME=rms EDITOR=emacs PATH=.:/gnubin:/hacks DISPLAY=gnu:0 }
+
+ env - LOGNAME=foo /hacks/hack bar baz
+ runs the "hack" program on arguments "bar" and "baz" in an
+ environment in which the only variable is "LOGNAME". Note that
+ the "-" option clears out the PATH variable, so one should be
+ careful to specify in which directory to find the program to
+ call.
+
+ env -u EDITOR LOGNAME=foo PATH=/energy -- e=mc2 bar baz
+ runs the program "/energy/e=mc2" with environment
+ { LOGNAME=foo PATH=/energy }
+*/
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+#include <getopt.h>
+
+#include "system.h"
+#include "error.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "env"
+
+#define AUTHORS "Richard Mlynarik", "David MacKenzie"
+
+int putenv ();
+
+extern char **environ;
+
+/* The name by which this program was run. */
+char *program_name;
+
+static struct option const longopts[] =
+{
+ {"ignore-environment", no_argument, NULL, 'i'},
+ {"unset", required_argument, NULL, 'u'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"),
+ program_name);
+ fputs (_("\
+Set each NAME to VALUE in the environment and run COMMAND.\n\
+\n\
+ -i, --ignore-environment start with an empty environment\n\
+ -u, --unset=NAME remove variable from the environment\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+A mere - implies -i. If no COMMAND, print the resulting environment.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ int optc;
+ bool ignore_environment = false;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ initialize_exit_failure (EXIT_FAIL);
+ atexit (close_stdout);
+
+ while ((optc = getopt_long (argc, argv, "+iu:", longopts, NULL)) != -1)
+ {
+ switch (optc)
+ {
+ case 'i':
+ ignore_environment = true;
+ break;
+ case 'u':
+ break;
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ usage (EXIT_FAIL);
+ }
+ }
+
+ if (optind < argc && STREQ (argv[optind], "-"))
+ ignore_environment = true;
+
+ if (ignore_environment)
+ {
+ static char *dummy_environ[] = { NULL };
+ environ = dummy_environ;
+ }
+
+ optind = 0; /* Force GNU getopt to re-initialize. */
+ while ((optc = getopt_long (argc, argv, "+iu:", longopts, NULL)) != -1)
+ if (optc == 'u')
+ putenv (optarg); /* Requires GNU putenv. */
+
+ if (optind < argc && STREQ (argv[optind], "-"))
+ ++optind;
+
+ while (optind < argc && strchr (argv[optind], '='))
+ putenv (argv[optind++]);
+
+ /* If no program is specified, print the environment and exit. */
+ if (argc <= optind)
+ {
+ char *const *e = environ;
+ while (*e)
+ puts (*e++);
+ exit (EXIT_SUCCESS);
+ }
+
+ execvp (argv[optind], &argv[optind]);
+
+ {
+ int exit_status = (errno == ENOENT ? EXIT_ENOENT : EXIT_CANNOT_INVOKE);
+ error (0, errno, "%s", argv[optind]);
+ exit (exit_status);
+ }
+}
diff --git a/src/expand.c b/src/expand.c
new file mode 100644
index 0000000..5645203
--- /dev/null
+++ b/src/expand.c
@@ -0,0 +1,438 @@
+/* expand - convert tabs to spaces
+ Copyright (C) 89, 91, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* By default, convert all tabs to spaces.
+ Preserves backspace characters in the output; they decrement the
+ column count for tab calculations.
+ The default action is equivalent to -8.
+
+ Options:
+ --tabs=tab1[,tab2[,...]]
+ -t tab1[,tab2[,...]]
+ -tab1[,tab2[,...]] If only one tab stop is given, set the tabs tab1
+ columns apart instead of the default 8. Otherwise,
+ set the tabs at columns tab1, tab2, etc. (numbered from
+ 0); replace any tabs beyond the tab stops given with
+ single spaces.
+ --initial
+ -i Only convert initial tabs on each line to spaces.
+
+ David MacKenzie <djm@gnu.ai.mit.edu> */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+#include "system.h"
+#include "error.h"
+#include "quote.h"
+#include "xstrndup.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "expand"
+
+#define AUTHORS "David MacKenzie"
+
+/* The number of bytes added at a time to the amount of memory
+ allocated for the output line. */
+#define OUTPUT_BLOCK 256
+
+/* The name this program was run with. */
+char *program_name;
+
+/* If true, convert blanks even after nonblank characters have been
+ read on the line. */
+static bool convert_entire_line;
+
+/* If nonzero, the size of all tab stops. If zero, use `tab_list' instead. */
+static uintmax_t tab_size;
+
+/* Array of the explicit column numbers of the tab stops;
+ after `tab_list' is exhausted, each additional tab is replaced
+ by a space. The first column is column 0. */
+static uintmax_t *tab_list;
+
+/* The number of allocated entries in `tab_list'. */
+static size_t n_tabs_allocated;
+
+/* The index of the first invalid element of `tab_list',
+ where the next element can be added. */
+static size_t first_free_tab;
+
+/* Null-terminated array of input filenames. */
+static char **file_list;
+
+/* Default for `file_list' if no files are given on the command line. */
+static char *stdin_argv[] =
+{
+ "-", NULL
+};
+
+/* True if we have ever read standard input. */
+static bool have_read_stdin;
+
+/* The desired exit status. */
+static int exit_status;
+
+static char const shortopts[] = "it:0::1::2::3::4::5::6::7::8::9::";
+
+static struct option const longopts[] =
+{
+ {"tabs", required_argument, NULL, 't'},
+ {"initial", no_argument, NULL, 'i'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [FILE]...\n\
+"),
+ program_name);
+ fputs (_("\
+Convert tabs in each FILE to spaces, writing to standard output.\n\
+With no FILE, or when FILE is -, read standard input.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -i, --initial do not convert tabs after non blanks\n\
+ -t, --tabs=NUMBER have tabs NUMBER characters apart, not 8\n\
+"), stdout);
+ fputs (_("\
+ -t, --tabs=LIST use comma separated list of explicit tab positions\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Add tab stop TABVAL to the end of `tab_list'. */
+
+static void
+add_tab_stop (uintmax_t tabval)
+{
+ if (first_free_tab == n_tabs_allocated)
+ tab_list = X2NREALLOC (tab_list, &n_tabs_allocated);
+ tab_list[first_free_tab++] = tabval;
+}
+
+/* Add the comma or blank separated list of tab stops STOPS
+ to the list of tab stops. */
+
+static void
+parse_tab_stops (char const *stops)
+{
+ bool have_tabval = false;
+ uintmax_t tabval IF_LINT (= 0);
+ char const *num_start IF_LINT (= NULL);
+ bool ok = true;
+
+ for (; *stops; stops++)
+ {
+ if (*stops == ',' || isblank (to_uchar (*stops)))
+ {
+ if (have_tabval)
+ add_tab_stop (tabval);
+ have_tabval = false;
+ }
+ else if (ISDIGIT (*stops))
+ {
+ if (!have_tabval)
+ {
+ tabval = 0;
+ have_tabval = true;
+ num_start = stops;
+ }
+
+ /* Detect overflow. */
+ if (!DECIMAL_DIGIT_ACCUMULATE (tabval, *stops - '0', uintmax_t))
+ {
+ size_t len = strspn (num_start, "0123456789");
+ char *bad_num = xstrndup (num_start, len);
+ error (0, 0, _("tab stop is too large %s"), quote (bad_num));
+ free (bad_num);
+ ok = false;
+ stops = num_start + len - 1;
+ }
+ }
+ else
+ {
+ error (0, 0, _("tab size contains invalid character(s): %s"),
+ quote (stops));
+ ok = false;
+ break;
+ }
+ }
+
+ if (!ok)
+ exit (EXIT_FAILURE);
+
+ if (have_tabval)
+ add_tab_stop (tabval);
+}
+
+/* Check that the list of tab stops TABS, with ENTRIES entries,
+ contains only nonzero, ascending values. */
+
+static void
+validate_tab_stops (uintmax_t const *tabs, size_t entries)
+{
+ uintmax_t prev_tab = 0;
+ size_t i;
+
+ for (i = 0; i < entries; i++)
+ {
+ if (tabs[i] == 0)
+ error (EXIT_FAILURE, 0, _("tab size cannot be 0"));
+ if (tabs[i] <= prev_tab)
+ error (EXIT_FAILURE, 0, _("tab sizes must be ascending"));
+ prev_tab = tabs[i];
+ }
+}
+
+/* Close the old stream pointer FP if it is non-NULL,
+ and return a new one opened to read the next input file.
+ Open a filename of `-' as the standard input.
+ Return NULL if there are no more input files. */
+
+static FILE *
+next_file (FILE *fp)
+{
+ static char *prev_file;
+ char *file;
+
+ if (fp)
+ {
+ if (ferror (fp))
+ {
+ error (0, errno, "%s", prev_file);
+ exit_status = EXIT_FAILURE;
+ }
+ if (STREQ (prev_file, "-"))
+ clearerr (fp); /* Also clear EOF. */
+ else if (fclose (fp) != 0)
+ {
+ error (0, errno, "%s", prev_file);
+ exit_status = EXIT_FAILURE;
+ }
+ }
+
+ while ((file = *file_list++) != NULL)
+ {
+ if (STREQ (file, "-"))
+ {
+ have_read_stdin = true;
+ prev_file = file;
+ return stdin;
+ }
+ fp = fopen (file, "r");
+ if (fp)
+ {
+ prev_file = file;
+ return fp;
+ }
+ error (0, errno, "%s", file);
+ exit_status = EXIT_FAILURE;
+ }
+ return NULL;
+}
+
+/* Change tabs to spaces, writing to stdout.
+ Read each file in `file_list', in order. */
+
+static void
+expand (void)
+{
+ /* Input stream. */
+ FILE *fp = next_file (NULL);
+
+ if (!fp)
+ return;
+
+ for (;;)
+ {
+ /* Input character, or EOF. */
+ int c;
+
+ /* If true, perform translations. */
+ bool convert = true;
+
+
+ /* The following variables have valid values only when CONVERT
+ is true: */
+
+ /* Column of next input character. */
+ uintmax_t column = 0;
+
+ /* Index in TAB_LIST of next tab stop to examine. */
+ size_t tab_index = 0;
+
+
+ /* Convert a line of text. */
+
+ do
+ {
+ while ((c = getc (fp)) < 0 && (fp = next_file (fp)))
+ continue;
+
+ if (convert)
+ {
+ if (c == '\t')
+ {
+ /* Column the next input tab stop is on. */
+ uintmax_t next_tab_column;
+
+ if (tab_size)
+ next_tab_column = column + (tab_size - column % tab_size);
+ else
+ for (;;)
+ if (tab_index == first_free_tab)
+ {
+ next_tab_column = column + 1;
+ break;
+ }
+ else
+ {
+ uintmax_t tab = tab_list[tab_index++];
+ if (column < tab)
+ {
+ next_tab_column = tab;
+ break;
+ }
+ }
+
+ if (next_tab_column < column)
+ error (EXIT_FAILURE, 0, _("input line is too long"));
+
+ while (++column < next_tab_column)
+ if (putchar (' ') < 0)
+ error (EXIT_FAILURE, errno, _("write error"));
+
+ c = ' ';
+ }
+ else if (c == '\b')
+ {
+ /* Go back one column, and force recalculation of the
+ next tab stop. */
+ column -= !!column;
+ tab_index -= !!tab_index;
+ }
+ else
+ {
+ column++;
+ if (!column)
+ error (EXIT_FAILURE, 0, _("input line is too long"));
+ }
+
+ convert &= convert_entire_line | !! isblank (c);
+ }
+
+ if (c < 0)
+ return;
+
+ if (putchar (c) < 0)
+ error (EXIT_FAILURE, errno, _("write error"));
+ }
+ while (c != '\n');
+ }
+}
+
+int
+main (int argc, char **argv)
+{
+ int c;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ have_read_stdin = false;
+ exit_status = EXIT_SUCCESS;
+ convert_entire_line = true;
+ tab_list = NULL;
+ first_free_tab = 0;
+
+ while ((c = getopt_long (argc, argv, shortopts, longopts, NULL)) != -1)
+ {
+ switch (c)
+ {
+ case 'i':
+ convert_entire_line = false;
+ break;
+
+ case 't':
+ parse_tab_stops (optarg);
+ break;
+
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ if (optarg)
+ parse_tab_stops (optarg - 1);
+ else
+ {
+ char tab_stop[2];
+ tab_stop[0] = c;
+ tab_stop[1] = '\0';
+ parse_tab_stops (tab_stop);
+ }
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ validate_tab_stops (tab_list, first_free_tab);
+
+ if (first_free_tab == 0)
+ tab_size = 8;
+ else if (first_free_tab == 1)
+ tab_size = tab_list[0];
+ else
+ tab_size = 0;
+
+ file_list = (optind < argc ? &argv[optind] : stdin_argv);
+
+ expand ();
+
+ if (have_read_stdin && fclose (stdin) != 0)
+ error (EXIT_FAILURE, errno, "-");
+
+ exit (exit_status);
+}
diff --git a/src/expr.c b/src/expr.c
new file mode 100644
index 0000000..352c80c
--- /dev/null
+++ b/src/expr.c
@@ -0,0 +1,873 @@
+/* expr -- evaluate expressions.
+ Copyright (C) 86, 1991-1997, 1999-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Author: Mike Parker.
+
+ This program evaluates expressions. Each token (operator, operand,
+ parenthesis) of the expression must be a seperate argument. The
+ parser used is a reasonably general one, though any incarnation of
+ it is language-specific. It is especially nice for expressions.
+
+ No parse tree is needed; a new node is evaluated immediately.
+ One function can handle multiple operators all of equal precedence,
+ provided they all associate ((x op x) op x).
+
+ Define EVAL_TRACE to print an evaluation trace. */
+
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include "system.h"
+
+#include <regex.h>
+#include "long-options.h"
+#include "error.h"
+#include "inttostr.h"
+#include "quote.h"
+#include "quotearg.h"
+#include "strnumcmp.h"
+#include "xstrtol.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "expr"
+
+#define AUTHORS "Mike Parker"
+
+/* Exit statuses. */
+enum
+ {
+ /* Invalid expression: e.g., its form does not conform to the
+ grammar for expressions. Our grammar is an extension of the
+ POSIX grammar. */
+ EXPR_INVALID = 2,
+
+ /* An internal error occurred, e.g., arithmetic overflow, storage
+ exhaustion. */
+ EXPR_FAILURE
+ };
+
+/* The kinds of value we can have. */
+enum valtype
+{
+ integer,
+ string
+};
+typedef enum valtype TYPE;
+
+/* A value is.... */
+struct valinfo
+{
+ TYPE type; /* Which kind. */
+ union
+ { /* The value itself. */
+ intmax_t i;
+ char *s;
+ } u;
+};
+typedef struct valinfo VALUE;
+
+/* The arguments given to the program, minus the program name. */
+static char **args;
+
+/* The name this program was run with. */
+char *program_name;
+
+static VALUE *eval (bool);
+static bool nomoreargs (void);
+static bool null (VALUE *v);
+static void printv (VALUE *v);
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s EXPRESSION\n\
+ or: %s OPTION\n\
+"),
+ program_name, program_name);
+ putchar ('\n');
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+Print the value of EXPRESSION to standard output. A blank line below\n\
+separates increasing precedence groups. EXPRESSION may be:\n\
+\n\
+ ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n\
+\n\
+ ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n\
+"), stdout);
+ fputs (_("\
+\n\
+ ARG1 < ARG2 ARG1 is less than ARG2\n\
+ ARG1 <= ARG2 ARG1 is less than or equal to ARG2\n\
+ ARG1 = ARG2 ARG1 is equal to ARG2\n\
+ ARG1 != ARG2 ARG1 is unequal to ARG2\n\
+ ARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n\
+ ARG1 > ARG2 ARG1 is greater than ARG2\n\
+"), stdout);
+ fputs (_("\
+\n\
+ ARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n\
+ ARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n\
+"), stdout);
+ fputs (_("\
+\n\
+ ARG1 * ARG2 arithmetic product of ARG1 and ARG2\n\
+ ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n\
+ ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n\
+"), stdout);
+ fputs (_("\
+\n\
+ STRING : REGEXP anchored pattern match of REGEXP in STRING\n\
+\n\
+ match STRING REGEXP same as STRING : REGEXP\n\
+ substr STRING POS LENGTH substring of STRING, POS counted from 1\n\
+ index STRING CHARS index in STRING where any CHARS is found, or 0\n\
+ length STRING length of STRING\n\
+"), stdout);
+ fputs (_("\
+ + TOKEN interpret TOKEN as a string, even if it is a\n\
+ keyword like `match' or an operator like `/'\n\
+\n\
+ ( EXPRESSION ) value of EXPRESSION\n\
+"), stdout);
+ fputs (_("\
+\n\
+Beware that many operators need to be escaped or quoted for shells.\n\
+Comparisons are arithmetic if both ARGs are numbers, else lexicographical.\n\
+Pattern matches return the string matched between \\( and \\) or null; if\n\
+\\( and \\) are not used, they return the number of characters matched or 0.\n\
+"), stdout);
+ fputs (_("\
+\n\
+Exit status is 0 if EXPRESSION is neither null nor 0, 1 if EXPRESSION is null\n\
+or 0, 2 if EXPRESSION is syntactically invalid, and 3 if an error occurred.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Report a syntax error and exit. */
+static void
+syntax_error (void)
+{
+ error (EXPR_INVALID, 0, _("syntax error"));
+}
+
+/* Report an integer overflow for operation OP and exit. */
+static void
+integer_overflow (char op)
+{
+ error (EXPR_FAILURE, ERANGE, "%c", op);
+}
+
+int
+main (int argc, char **argv)
+{
+ VALUE *v;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ initialize_exit_failure (EXPR_FAILURE);
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ /* The above handles --help and --version.
+ Since there is no other invocation of getopt, handle `--' here. */
+ if (argc > 1 && STREQ (argv[1], "--"))
+ {
+ --argc;
+ ++argv;
+ }
+
+ if (argc <= 1)
+ {
+ error (0, 0, _("missing operand"));
+ usage (EXPR_INVALID);
+ }
+
+ args = argv + 1;
+
+ v = eval (true);
+ if (!nomoreargs ())
+ syntax_error ();
+ printv (v);
+
+ exit (null (v));
+}
+
+/* Return a VALUE for I. */
+
+static VALUE *
+int_value (intmax_t i)
+{
+ VALUE *v = xmalloc (sizeof *v);
+ v->type = integer;
+ v->u.i = i;
+ return v;
+}
+
+/* Return a VALUE for S. */
+
+static VALUE *
+str_value (char const *s)
+{
+ VALUE *v = xmalloc (sizeof *v);
+ v->type = string;
+ v->u.s = xstrdup (s);
+ return v;
+}
+
+/* Free VALUE V, including structure components. */
+
+static void
+freev (VALUE *v)
+{
+ if (v->type == string)
+ free (v->u.s);
+ free (v);
+}
+
+/* Print VALUE V. */
+
+static void
+printv (VALUE *v)
+{
+ char *p;
+ char buf[INT_BUFSIZE_BOUND (intmax_t)];
+
+ switch (v->type)
+ {
+ case integer:
+ p = imaxtostr (v->u.i, buf);
+ break;
+ case string:
+ p = v->u.s;
+ break;
+ default:
+ abort ();
+ }
+
+ puts (p);
+}
+
+/* Return true if V is a null-string or zero-number. */
+
+static bool
+null (VALUE *v)
+{
+ switch (v->type)
+ {
+ case integer:
+ return v->u.i == 0;
+ case string:
+ {
+ char const *cp = v->u.s;
+ if (*cp == '\0')
+ return true;
+
+ cp += (*cp == '-');
+
+ do
+ {
+ if (*cp != '0')
+ return false;
+ }
+ while (*++cp);
+
+ return true;
+ }
+ default:
+ abort ();
+ }
+}
+
+/* Return true if CP takes the form of an integer. */
+
+static bool
+looks_like_integer (char const *cp)
+{
+ cp += (*cp == '-');
+
+ do
+ if (! ISDIGIT (*cp))
+ return false;
+ while (*++cp);
+
+ return true;
+}
+
+/* Coerce V to a string value (can't fail). */
+
+static void
+tostring (VALUE *v)
+{
+ char buf[INT_BUFSIZE_BOUND (intmax_t)];
+
+ switch (v->type)
+ {
+ case integer:
+ v->u.s = xstrdup (imaxtostr (v->u.i, buf));
+ v->type = string;
+ break;
+ case string:
+ break;
+ default:
+ abort ();
+ }
+}
+
+/* Coerce V to an integer value. Return true on success, false on failure. */
+
+static bool
+toarith (VALUE *v)
+{
+ switch (v->type)
+ {
+ case integer:
+ return true;
+ case string:
+ {
+ intmax_t value;
+
+ if (! looks_like_integer (v->u.s))
+ return false;
+ if (xstrtoimax (v->u.s, NULL, 10, &value, NULL) != LONGINT_OK)
+ error (EXPR_FAILURE, ERANGE, "%s", v->u.s);
+ free (v->u.s);
+ v->u.i = value;
+ v->type = integer;
+ return true;
+ }
+ default:
+ abort ();
+ }
+}
+
+/* Return true and advance if the next token matches STR exactly.
+ STR must not be NULL. */
+
+static bool
+nextarg (char const *str)
+{
+ if (*args == NULL)
+ return false;
+ else
+ {
+ bool r = STREQ (*args, str);
+ args += r;
+ return r;
+ }
+}
+
+/* Return true if there no more tokens. */
+
+static bool
+nomoreargs (void)
+{
+ return *args == 0;
+}
+
+#ifdef EVAL_TRACE
+/* Print evaluation trace and args remaining. */
+
+static void
+trace (fxn)
+ char *fxn;
+{
+ char **a;
+
+ printf ("%s:", fxn);
+ for (a = args; *a; a++)
+ printf (" %s", *a);
+ putchar ('\n');
+}
+#endif
+
+/* Do the : operator.
+ SV is the VALUE for the lhs (the string),
+ PV is the VALUE for the rhs (the pattern). */
+
+static VALUE *
+docolon (VALUE *sv, VALUE *pv)
+{
+ VALUE *v IF_LINT (= NULL);
+ const char *errmsg;
+ struct re_pattern_buffer re_buffer;
+ char fastmap[UCHAR_MAX + 1];
+ struct re_registers re_regs;
+ regoff_t matchlen;
+
+ tostring (sv);
+ tostring (pv);
+
+ re_regs.num_regs = 0;
+ re_regs.start = NULL;
+ re_regs.end = NULL;
+
+ re_buffer.buffer = NULL;
+ re_buffer.allocated = 0;
+ re_buffer.fastmap = fastmap;
+ re_buffer.translate = NULL;
+ re_syntax_options =
+ RE_SYNTAX_POSIX_BASIC & ~RE_CONTEXT_INVALID_DUP & ~RE_NO_EMPTY_RANGES;
+ errmsg = re_compile_pattern (pv->u.s, strlen (pv->u.s), &re_buffer);
+ if (errmsg)
+ error (EXPR_INVALID, 0, "%s", errmsg);
+ re_buffer.newline_anchor = 0;
+
+ matchlen = re_match (&re_buffer, sv->u.s, strlen (sv->u.s), 0, &re_regs);
+ if (0 <= matchlen)
+ {
+ /* Were \(...\) used? */
+ if (re_buffer.re_nsub > 0)
+ {
+ sv->u.s[re_regs.end[1]] = '\0';
+ v = str_value (sv->u.s + re_regs.start[1]);
+ }
+ else
+ v = int_value (matchlen);
+ }
+ else if (matchlen == -1)
+ {
+ /* Match failed -- return the right kind of null. */
+ if (re_buffer.re_nsub > 0)
+ v = str_value ("");
+ else
+ v = int_value (0);
+ }
+ else
+ error (EXPR_FAILURE,
+ (matchlen == -2 ? errno : EOVERFLOW),
+ _("error in regular expression matcher"));
+
+ if (0 < re_regs.num_regs)
+ {
+ free (re_regs.start);
+ free (re_regs.end);
+ }
+ re_buffer.fastmap = NULL;
+ regfree (&re_buffer);
+ return v;
+}
+
+/* Handle bare operands and ( expr ) syntax. */
+
+static VALUE *
+eval7 (bool evaluate)
+{
+ VALUE *v;
+
+#ifdef EVAL_TRACE
+ trace ("eval7");
+#endif
+ if (nomoreargs ())
+ syntax_error ();
+
+ if (nextarg ("("))
+ {
+ v = eval (evaluate);
+ if (!nextarg (")"))
+ syntax_error ();
+ return v;
+ }
+
+ if (nextarg (")"))
+ syntax_error ();
+
+ return str_value (*args++);
+}
+
+/* Handle match, substr, index, and length keywords, and quoting "+". */
+
+static VALUE *
+eval6 (bool evaluate)
+{
+ VALUE *l;
+ VALUE *r;
+ VALUE *v;
+ VALUE *i1;
+ VALUE *i2;
+
+#ifdef EVAL_TRACE
+ trace ("eval6");
+#endif
+ if (nextarg ("+"))
+ {
+ if (nomoreargs ())
+ syntax_error ();
+ return str_value (*args++);
+ }
+ else if (nextarg ("length"))
+ {
+ r = eval6 (evaluate);
+ tostring (r);
+ v = int_value (strlen (r->u.s));
+ freev (r);
+ return v;
+ }
+ else if (nextarg ("match"))
+ {
+ l = eval6 (evaluate);
+ r = eval6 (evaluate);
+ if (evaluate)
+ {
+ v = docolon (l, r);
+ freev (l);
+ }
+ else
+ v = l;
+ freev (r);
+ return v;
+ }
+ else if (nextarg ("index"))
+ {
+ l = eval6 (evaluate);
+ r = eval6 (evaluate);
+ tostring (l);
+ tostring (r);
+ v = int_value (strcspn (l->u.s, r->u.s) + 1);
+ if (v->u.i == strlen (l->u.s) + 1)
+ v->u.i = 0;
+ freev (l);
+ freev (r);
+ return v;
+ }
+ else if (nextarg ("substr"))
+ {
+ size_t llen;
+ l = eval6 (evaluate);
+ i1 = eval6 (evaluate);
+ i2 = eval6 (evaluate);
+ tostring (l);
+ llen = strlen (l->u.s);
+ if (!toarith (i1) || !toarith (i2)
+ || llen < i1->u.i
+ || i1->u.i <= 0 || i2->u.i <= 0)
+ v = str_value ("");
+ else
+ {
+ size_t vlen = MIN (i2->u.i, llen - i1->u.i + 1);
+ char *vlim;
+ v = xmalloc (sizeof *v);
+ v->type = string;
+ v->u.s = xmalloc (vlen + 1);
+ vlim = mempcpy (v->u.s, l->u.s + i1->u.i - 1, vlen);
+ *vlim = '\0';
+ }
+ freev (l);
+ freev (i1);
+ freev (i2);
+ return v;
+ }
+ else
+ return eval7 (evaluate);
+}
+
+/* Handle : operator (pattern matching).
+ Calls docolon to do the real work. */
+
+static VALUE *
+eval5 (bool evaluate)
+{
+ VALUE *l;
+ VALUE *r;
+ VALUE *v;
+
+#ifdef EVAL_TRACE
+ trace ("eval5");
+#endif
+ l = eval6 (evaluate);
+ while (1)
+ {
+ if (nextarg (":"))
+ {
+ r = eval6 (evaluate);
+ if (evaluate)
+ {
+ v = docolon (l, r);
+ freev (l);
+ l = v;
+ }
+ freev (r);
+ }
+ else
+ return l;
+ }
+}
+
+/* Handle *, /, % operators. */
+
+static VALUE *
+eval4 (bool evaluate)
+{
+ VALUE *l;
+ VALUE *r;
+ enum { multiply, divide, mod } fxn;
+ intmax_t val = 0;
+
+#ifdef EVAL_TRACE
+ trace ("eval4");
+#endif
+ l = eval5 (evaluate);
+ while (1)
+ {
+ if (nextarg ("*"))
+ fxn = multiply;
+ else if (nextarg ("/"))
+ fxn = divide;
+ else if (nextarg ("%"))
+ fxn = mod;
+ else
+ return l;
+ r = eval5 (evaluate);
+ if (evaluate)
+ {
+ if (!toarith (l) || !toarith (r))
+ error (EXPR_INVALID, 0, _("non-numeric argument"));
+ if (fxn == multiply)
+ {
+ val = l->u.i * r->u.i;
+ if (! (l->u.i == 0 || r->u.i == 0
+ || ((val < 0) == ((l->u.i < 0) ^ (r->u.i < 0))
+ && val / l->u.i == r->u.i)))
+ integer_overflow ('*');
+ }
+ else
+ {
+ if (r->u.i == 0)
+ error (EXPR_INVALID, 0, _("division by zero"));
+ if (l->u.i < - INTMAX_MAX && r->u.i == -1)
+ {
+ /* Some x86-style hosts raise an exception for
+ INT_MIN / -1 and INT_MIN % -1, so handle these
+ problematic cases specially. */
+ if (fxn == divide)
+ integer_overflow ('/');
+ val = 0;
+ }
+ else
+ val = fxn == divide ? l->u.i / r->u.i : l->u.i % r->u.i;
+ }
+ }
+ freev (l);
+ freev (r);
+ l = int_value (val);
+ }
+}
+
+/* Handle +, - operators. */
+
+static VALUE *
+eval3 (bool evaluate)
+{
+ VALUE *l;
+ VALUE *r;
+ enum { plus, minus } fxn;
+ intmax_t val = 0;
+
+#ifdef EVAL_TRACE
+ trace ("eval3");
+#endif
+ l = eval4 (evaluate);
+ while (1)
+ {
+ if (nextarg ("+"))
+ fxn = plus;
+ else if (nextarg ("-"))
+ fxn = minus;
+ else
+ return l;
+ r = eval4 (evaluate);
+ if (evaluate)
+ {
+ if (!toarith (l) || !toarith (r))
+ error (EXPR_INVALID, 0, _("non-numeric argument"));
+ if (fxn == plus)
+ {
+ val = l->u.i + r->u.i;
+ if ((val < l->u.i) != (r->u.i < 0))
+ integer_overflow ('+');
+ }
+ else
+ {
+ val = l->u.i - r->u.i;
+ if ((l->u.i < val) != (r->u.i < 0))
+ integer_overflow ('-');
+ }
+ }
+ freev (l);
+ freev (r);
+ l = int_value (val);
+ }
+}
+
+/* Handle comparisons. */
+
+static VALUE *
+eval2 (bool evaluate)
+{
+ VALUE *l;
+
+#ifdef EVAL_TRACE
+ trace ("eval2");
+#endif
+ l = eval3 (evaluate);
+ while (1)
+ {
+ VALUE *r;
+ enum
+ {
+ less_than, less_equal, equal, not_equal, greater_equal, greater_than
+ } fxn;
+ bool val = false;
+
+ if (nextarg ("<"))
+ fxn = less_than;
+ else if (nextarg ("<="))
+ fxn = less_equal;
+ else if (nextarg ("=") || nextarg ("=="))
+ fxn = equal;
+ else if (nextarg ("!="))
+ fxn = not_equal;
+ else if (nextarg (">="))
+ fxn = greater_equal;
+ else if (nextarg (">"))
+ fxn = greater_than;
+ else
+ return l;
+ r = eval3 (evaluate);
+
+ if (evaluate)
+ {
+ int cmp;
+ tostring (l);
+ tostring (r);
+
+ if (looks_like_integer (l->u.s) && looks_like_integer (r->u.s))
+ cmp = strintcmp (l->u.s, r->u.s);
+ else
+ {
+ errno = 0;
+ cmp = strcoll (l->u.s, r->u.s);
+
+ if (errno)
+ {
+ error (0, errno, _("string comparison failed"));
+ error (0, 0, _("Set LC_ALL='C' to work around the problem."));
+ error (EXPR_INVALID, 0,
+ _("The strings compared were %s and %s."),
+ quotearg_n_style (0, locale_quoting_style, l->u.s),
+ quotearg_n_style (1, locale_quoting_style, r->u.s));
+ }
+ }
+
+ switch (fxn)
+ {
+ case less_than: val = (cmp < 0); break;
+ case less_equal: val = (cmp <= 0); break;
+ case equal: val = (cmp == 0); break;
+ case not_equal: val = (cmp != 0); break;
+ case greater_equal: val = (cmp >= 0); break;
+ case greater_than: val = (cmp > 0); break;
+ default: abort ();
+ }
+ }
+
+ freev (l);
+ freev (r);
+ l = int_value (val);
+ }
+}
+
+/* Handle &. */
+
+static VALUE *
+eval1 (bool evaluate)
+{
+ VALUE *l;
+ VALUE *r;
+
+#ifdef EVAL_TRACE
+ trace ("eval1");
+#endif
+ l = eval2 (evaluate);
+ while (1)
+ {
+ if (nextarg ("&"))
+ {
+ r = eval2 (evaluate & ~ null (l));
+ if (null (l) || null (r))
+ {
+ freev (l);
+ freev (r);
+ l = int_value (0);
+ }
+ else
+ freev (r);
+ }
+ else
+ return l;
+ }
+}
+
+/* Handle |. */
+
+static VALUE *
+eval (bool evaluate)
+{
+ VALUE *l;
+ VALUE *r;
+
+#ifdef EVAL_TRACE
+ trace ("eval");
+#endif
+ l = eval1 (evaluate);
+ while (1)
+ {
+ if (nextarg ("|"))
+ {
+ r = eval1 (evaluate & null (l));
+ if (null (l))
+ {
+ freev (l);
+ l = r;
+ if (null (l))
+ {
+ freev (l);
+ l = int_value (0);
+ }
+ }
+ else
+ freev (r);
+ }
+ else
+ return l;
+ }
+}
diff --git a/src/extract-magic b/src/extract-magic
new file mode 100644
index 0000000..2e9e871
--- /dev/null
+++ b/src/extract-magic
@@ -0,0 +1,135 @@
+#!/usr/bin/perl -w
+# Derive #define directives from specially formatted `case ...:' statements.
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+use strict;
+
+use Getopt::Long;
+
+(my $VERSION = '$Revision: 1.5 $ ') =~ tr/[0-9].//cd;
+(my $ME = $0) =~ s|.*/||;
+
+END
+{
+ # Nobody ever checks the status of print()s. That's okay, because
+ # if any do fail, we're guaranteed to get an indicator when we close()
+ # the filehandle.
+ #
+ # Close stdout now, and if there were no errors, return happy status.
+ # If stdout has already been closed by the script, though, do nothing.
+ defined fileno STDOUT
+ or return;
+ close STDOUT
+ and return;
+
+ # Errors closing stdout. Indicate that, and hope stderr is OK.
+ warn "$ME: closing standard output: $!\n";
+
+ # Don't be so arrogant as to assume that we're the first END handler
+ # defined, and thus the last one invoked. There may be others yet
+ # to come. $? will be passed on to them, and to the final _exit().
+ #
+ # If it isn't already an error, make it one (and if it _is_ an error,
+ # preserve the value: it might be important).
+ $? ||= 1;
+}
+
+sub usage ($)
+{
+ my ($exit_code) = @_;
+ my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
+ if ($exit_code != 0)
+ {
+ print $STREAM "Try `$ME --help' for more information.\n";
+ }
+ else
+ {
+ print $STREAM <<EOF;
+Usage: $ME [OPTIONS] FILE
+
+FIXME: describe
+
+OPTIONS:
+
+ Derive #define directives from specially formatted `case ...:' statements.
+
+ --help display this help and exit
+ --version output version information and exit
+
+EOF
+ }
+ exit $exit_code;
+}
+
+{
+ GetOptions
+ (
+ help => sub { usage 0 },
+ version => sub { print "$ME version $VERSION\n"; exit },
+ ) or usage 1;
+
+ my $fail = 0;
+
+ @ARGV < 1
+ and (warn "$ME: missing FILE arguments\n"), $fail = 1;
+ 1 < @ARGV
+ and (warn "$ME: too many arguments\n"), $fail = 1;
+ $fail
+ and usage 1;
+
+ my $file = $ARGV[0];
+
+ open FH, $file
+ or die "$ME: can't open `$file' for reading: $!\n";
+
+ # For each line like this:
+ # case S_MAGIC_ROMFS: /* 0x7275 */
+ # emit one like this:
+ # # define S_MAGIC_ROMFS 0x7275
+ # Fail if there is a `case S_MAGIC_.*' line without
+ # a properly formed comment.
+
+ print <<EOF;
+/* Define the magic numbers as given by statfs(2).
+ Please send additions to bug-coreutils\@gnu.org and meskes\@debian.org.
+ This file is generated automatically from $file. */
+
+#if defined __linux__
+EOF
+
+ while (defined (my $line = <FH>))
+ {
+ $line =~ /^[ \t]+case S_MAGIC_/
+ or next;
+ $line =~ m!^[ \t]+case (S_MAGIC_\w+): /\* (0x[0-9A-Fa-f]+) \*/$!
+ or (warn "$ME:$file:$.: malformed case S_MAGIC_... line"),
+ $fail = 1, next;
+ my $name = $1;
+ my $value = $2;
+ print "# define $name $value\n";
+ }
+
+ print <<\EOF;
+#elif defined __GNU__
+# include <hurd/hurd_types.h>
+#endif
+EOF
+ close FH;
+
+ exit $fail;
+}
diff --git a/src/factor.c b/src/factor.c
new file mode 100644
index 0000000..dc8f1cc
--- /dev/null
+++ b/src/factor.c
@@ -0,0 +1,220 @@
+/* factor -- print prime factors of n.
+ Copyright (C) 86, 1995-2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Rubin <phr@ocf.berkeley.edu>.
+ Adapted for GNU, fixed to factor UINT_MAX by Jim Meyering. */
+
+#include <config.h>
+#include <getopt.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+#include <assert.h>
+#define NDEBUG 1
+
+#include "system.h"
+#include "error.h"
+#include "inttostr.h"
+#include "long-options.h"
+#include "quote.h"
+#include "readtokens.h"
+#include "xstrtol.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "factor"
+
+#define AUTHORS "Paul Rubin"
+
+/* Token delimiters when reading from a file. */
+#define DELIM "\n\t "
+
+/* The maximum number of factors, including -1, for negative numbers. */
+#define MAX_N_FACTORS (sizeof (uintmax_t) * CHAR_BIT)
+
+/* The trial divisor increment wheel. Use it to skip over divisors that
+ are composites of 2, 3, 5, 7, or 11. The part from WHEEL_START up to
+ WHEEL_END is reused periodically, while the "lead in" is used to test
+ for those primes and to jump onto the wheel. For more information, see
+ http://www.utm.edu/research/primes/glossary/WheelFactorization.html */
+
+#include "wheel-size.h" /* For the definition of WHEEL_SIZE. */
+static const unsigned char wheel_tab[] =
+ {
+#include "wheel.h"
+ };
+
+#define WHEEL_START (wheel_tab + WHEEL_SIZE)
+#define WHEEL_END (wheel_tab + (sizeof wheel_tab / sizeof wheel_tab[0]))
+
+/* The name this program was run with. */
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [NUMBER]...\n\
+ or: %s OPTION\n\
+"),
+ program_name, program_name);
+ fputs (_("\
+Print the prime factors of each NUMBER.\n\
+\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+Print the prime factors of all specified integer NUMBERs. If no arguments\n\
+are specified on the command line, they are read from standard input.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* FIXME: comment */
+
+static size_t
+factor (uintmax_t n0, size_t max_n_factors, uintmax_t *factors)
+{
+ uintmax_t n = n0, d, q;
+ size_t n_factors = 0;
+ unsigned char const *w = wheel_tab;
+
+ if (n <= 1)
+ return n_factors;
+
+ /* The exit condition in the following loop is correct because
+ any time it is tested one of these 3 conditions holds:
+ (1) d divides n
+ (2) n is prime
+ (3) n is composite but has no factors less than d.
+ If (1) or (2) obviously the right thing happens.
+ If (3), then since n is composite it is >= d^2. */
+
+ d = 2;
+ do
+ {
+ q = n / d;
+ while (n == q * d)
+ {
+ assert (n_factors < max_n_factors);
+ factors[n_factors++] = d;
+ n = q;
+ q = n / d;
+ }
+ d += *(w++);
+ if (w == WHEEL_END)
+ w = WHEEL_START;
+ }
+ while (d <= q);
+
+ if (n != 1 || n0 == 1)
+ {
+ assert (n_factors < max_n_factors);
+ factors[n_factors++] = n;
+ }
+
+ return n_factors;
+}
+
+/* FIXME: comment */
+
+static bool
+print_factors (const char *s)
+{
+ uintmax_t factors[MAX_N_FACTORS];
+ uintmax_t n;
+ size_t n_factors;
+ size_t i;
+ char buf[INT_BUFSIZE_BOUND (uintmax_t)];
+ strtol_error err;
+
+ if ((err = xstrtoumax (s, NULL, 10, &n, "")) != LONGINT_OK)
+ {
+ if (err == LONGINT_OVERFLOW)
+ error (0, 0, _("%s is too large"), quote (s));
+ else
+ error (0, 0, _("%s is not a valid positive integer"), quote (s));
+ return false;
+ }
+ n_factors = factor (n, MAX_N_FACTORS, factors);
+ printf ("%s:", umaxtostr (n, buf));
+ for (i = 0; i < n_factors; i++)
+ printf (" %s", umaxtostr (factors[i], buf));
+ putchar ('\n');
+ return true;
+}
+
+static bool
+do_stdin (void)
+{
+ bool ok = true;
+ token_buffer tokenbuffer;
+
+ init_tokenbuffer (&tokenbuffer);
+
+ for (;;)
+ {
+ size_t token_length = readtoken (stdin, DELIM, sizeof (DELIM) - 1,
+ &tokenbuffer);
+ if (token_length == (size_t) -1)
+ break;
+ ok &= print_factors (tokenbuffer.buffer);
+ }
+ free (tokenbuffer.buffer);
+
+ return ok;
+}
+
+int
+main (int argc, char **argv)
+{
+ bool ok;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "", NULL, NULL) != -1)
+ usage (EXIT_FAILURE);
+
+ if (argc <= optind)
+ ok = do_stdin ();
+ else
+ {
+ int i;
+ ok = true;
+ for (i = optind; i < argc; i++)
+ if (! print_factors (argv[i]))
+ ok = false;
+ }
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/false.c b/src/false.c
new file mode 100644
index 0000000..bc9c703
--- /dev/null
+++ b/src/false.c
@@ -0,0 +1,2 @@
+#define EXIT_STATUS EXIT_FAILURE
+#include "true.c"
diff --git a/src/fmt.c b/src/fmt.c
new file mode 100644
index 0000000..5ccc8c4
--- /dev/null
+++ b/src/fmt.c
@@ -0,0 +1,1015 @@
+/* GNU fmt -- simple text formatter.
+ Copyright (C) 1994-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Ross Paterson <rap@doc.ic.ac.uk>. */
+
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <getopt.h>
+
+/* Redefine. Otherwise, systems (Unicos for one) with headers that define
+ it to be a type get syntax errors for the variable declaration below. */
+#define word unused_word_type
+
+#include "system.h"
+#include "error.h"
+#include "quote.h"
+#include "xstrtol.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "fmt"
+
+#define AUTHORS "Ross Paterson"
+
+/* The following parameters represent the program's idea of what is
+ "best". Adjust to taste, subject to the caveats given. */
+
+/* Default longest permitted line length (max_width). */
+#define WIDTH 75
+
+/* Prefer lines to be LEEWAY % shorter than the maximum width, giving
+ room for optimization. */
+#define LEEWAY 7
+
+/* The default secondary indent of tagged paragraph used for unindented
+ one-line paragraphs not preceded by any multi-line paragraphs. */
+#define DEF_INDENT 3
+
+/* Costs and bonuses are expressed as the equivalent departure from the
+ optimal line length, multiplied by 10. e.g. assigning something a
+ cost of 50 means that it is as bad as a line 5 characters too short
+ or too long. The definition of SHORT_COST(n) should not be changed.
+ However, EQUIV(n) may need tuning. */
+
+/* FIXME: "fmt" misbehaves given large inputs or options. One
+ possible workaround for part of the problem is to change COST to be
+ a floating-point type. There are other problems besides COST,
+ though; see MAXWORDS below. */
+
+typedef long int COST;
+
+#define MAXCOST TYPE_MAXIMUM (COST)
+
+#define SQR(n) ((n) * (n))
+#define EQUIV(n) SQR ((COST) (n))
+
+/* Cost of a filled line n chars longer or shorter than best_width. */
+#define SHORT_COST(n) EQUIV ((n) * 10)
+
+/* Cost of the difference between adjacent filled lines. */
+#define RAGGED_COST(n) (SHORT_COST (n) / 2)
+
+/* Basic cost per line. */
+#define LINE_COST EQUIV (70)
+
+/* Cost of breaking a line after the first word of a sentence, where
+ the length of the word is N. */
+#define WIDOW_COST(n) (EQUIV (200) / ((n) + 2))
+
+/* Cost of breaking a line before the last word of a sentence, where
+ the length of the word is N. */
+#define ORPHAN_COST(n) (EQUIV (150) / ((n) + 2))
+
+/* Bonus for breaking a line at the end of a sentence. */
+#define SENTENCE_BONUS EQUIV (50)
+
+/* Cost of breaking a line after a period not marking end of a sentence.
+ With the definition of sentence we are using (borrowed from emacs, see
+ get_line()) such a break would then look like a sentence break. Hence
+ we assign a very high cost -- it should be avoided unless things are
+ really bad. */
+#define NOBREAK_COST EQUIV (600)
+
+/* Bonus for breaking a line before open parenthesis. */
+#define PAREN_BONUS EQUIV (40)
+
+/* Bonus for breaking a line after other punctuation. */
+#define PUNCT_BONUS EQUIV(40)
+
+/* Credit for breaking a long paragraph one line later. */
+#define LINE_CREDIT EQUIV(3)
+
+/* Size of paragraph buffer, in words and characters. Longer paragraphs
+ are handled neatly (cf. flush_paragraph()), so long as these values
+ are considerably greater than required by the width. These values
+ cannot be extended indefinitely: doing so would run into size limits
+ and/or cause more overflows in cost calculations. FIXME: Remove these
+ arbitrary limits. */
+
+#define MAXWORDS 1000
+#define MAXCHARS 5000
+
+/* Extra ctype(3)-style macros. */
+
+#define isopen(c) (strchr ("([`'\"", c) != NULL)
+#define isclose(c) (strchr (")]'\"", c) != NULL)
+#define isperiod(c) (strchr (".?!", c) != NULL)
+
+/* Size of a tab stop, for expansion on input and re-introduction on
+ output. */
+#define TABWIDTH 8
+
+/* Word descriptor structure. */
+
+typedef struct Word WORD;
+
+struct Word
+ {
+
+ /* Static attributes determined during input. */
+
+ const char *text; /* the text of the word */
+ int length; /* length of this word */
+ int space; /* the size of the following space */
+ unsigned int paren:1; /* starts with open paren */
+ unsigned int period:1; /* ends in [.?!])* */
+ unsigned int punct:1; /* ends in punctuation */
+ unsigned int final:1; /* end of sentence */
+
+ /* The remaining fields are computed during the optimization. */
+
+ int line_length; /* length of the best line starting here */
+ COST best_cost; /* cost of best paragraph starting here */
+ WORD *next_break; /* break which achieves best_cost */
+ };
+
+/* Forward declarations. */
+
+static void set_prefix (char *p);
+static void fmt (FILE *f);
+static bool get_paragraph (FILE *f);
+static int get_line (FILE *f, int c);
+static int get_prefix (FILE *f);
+static int get_space (FILE *f, int c);
+static int copy_rest (FILE *f, int c);
+static bool same_para (int c);
+static void flush_paragraph (void);
+static void fmt_paragraph (void);
+static void check_punctuation (WORD *w);
+static COST base_cost (WORD *this);
+static COST line_cost (WORD *next, int len);
+static void put_paragraph (WORD *finish);
+static void put_line (WORD *w, int indent);
+static void put_word (WORD *w);
+static void put_space (int space);
+
+/* The name this program was run with. */
+const char *program_name;
+
+/* Option values. */
+
+/* If true, first 2 lines may have different indent (default false). */
+static bool crown;
+
+/* If true, first 2 lines _must_ have different indent (default false). */
+static bool tagged;
+
+/* If true, each line is a paragraph on its own (default false). */
+static bool split;
+
+/* If true, don't preserve inter-word spacing (default false). */
+static bool uniform;
+
+/* Prefix minus leading and trailing spaces (default ""). */
+static const char *prefix;
+
+/* User-supplied maximum line width (default WIDTH). The only output
+ lines longer than this will each comprise a single word. */
+static int max_width;
+
+/* Values derived from the option values. */
+
+/* The length of prefix minus leading space. */
+static int prefix_full_length;
+
+/* The length of the leading space trimmed from the prefix. */
+static int prefix_lead_space;
+
+/* The length of prefix minus leading and trailing space. */
+static int prefix_length;
+
+/* The preferred width of text lines, set to LEEWAY % less than max_width. */
+static int best_width;
+
+/* Dynamic variables. */
+
+/* Start column of the character most recently read from the input file. */
+static int in_column;
+
+/* Start column of the next character to be written to stdout. */
+static int out_column;
+
+/* Space for the paragraph text -- longer paragraphs are handled neatly
+ (cf. flush_paragraph()). */
+static char parabuf[MAXCHARS];
+
+/* A pointer into parabuf, indicating the first unused character position. */
+static char *wptr;
+
+/* The words of a paragraph -- longer paragraphs are handled neatly
+ (cf. flush_paragraph()). */
+static WORD word[MAXWORDS];
+
+/* A pointer into the above word array, indicating the first position
+ after the last complete word. Sometimes it will point at an incomplete
+ word. */
+static WORD *word_limit;
+
+/* If true, current input file contains tab characters, and so tabs can be
+ used for white space on output. */
+static bool tabs;
+
+/* Space before trimmed prefix on each line of the current paragraph. */
+static int prefix_indent;
+
+/* Indentation of the first line of the current paragraph. */
+static int first_indent;
+
+/* Indentation of other lines of the current paragraph */
+static int other_indent;
+
+/* To detect the end of a paragraph, we need to look ahead to the first
+ non-blank character after the prefix on the next line, or the first
+ character on the following line that failed to match the prefix.
+ We can reconstruct the lookahead from that character (next_char), its
+ position on the line (in_column) and the amount of space before the
+ prefix (next_prefix_indent). See get_paragraph() and copy_rest(). */
+
+/* The last character read from the input file. */
+static int next_char;
+
+/* The space before the trimmed prefix (or part of it) on the next line
+ after the current paragraph. */
+static int next_prefix_indent;
+
+/* If nonzero, the length of the last line output in the current
+ paragraph, used to charge for raggedness at the split point for long
+ paragraphs chosen by fmt_paragraph(). */
+static int last_line_length;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [-DIGITS] [OPTION]... [FILE]...\n"), program_name);
+ fputs (_("\
+Reformat each paragraph in the FILE(s), writing to standard output.\n\
+If no FILE or if FILE is `-', read standard input.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -c, --crown-margin preserve indentation of first two lines\n\
+ -p, --prefix=STRING reformat only lines beginning with STRING,\n\
+ reattaching the prefix to reformatted lines\n\
+ -s, --split-only split long lines, but do not refill\n\
+"),
+ stdout);
+ fputs (_("\
+ -t, --tagged-paragraph indentation of first line different from second\n\
+ -u, --uniform-spacing one space between words, two after sentences\n\
+ -w, --width=WIDTH maximum line width (default of 75 columns)\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+With no FILE, or when FILE is -, read standard input.\n"),
+ stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Decode options and launch execution. */
+
+static const struct option long_options[] =
+{
+ {"crown-margin", no_argument, NULL, 'c'},
+ {"prefix", required_argument, NULL, 'p'},
+ {"split-only", no_argument, NULL, 's'},
+ {"tagged-paragraph", no_argument, NULL, 't'},
+ {"uniform-spacing", no_argument, NULL, 'u'},
+ {"width", required_argument, NULL, 'w'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0},
+};
+
+int
+main (int argc, char **argv)
+{
+ int optchar;
+ bool ok = true;
+ char const *max_width_option = NULL;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ crown = tagged = split = uniform = false;
+ max_width = WIDTH;
+ prefix = "";
+ prefix_length = prefix_lead_space = prefix_full_length = 0;
+
+ if (argc > 1 && argv[1][0] == '-' && ISDIGIT (argv[1][1]))
+ {
+ /* Old option syntax; a dash followed by one or more digits. */
+ max_width_option = argv[1] + 1;
+
+ /* Make the option we just parsed invisible to getopt. */
+ argv[1] = argv[0];
+ argv++;
+ argc--;
+ }
+
+ while ((optchar = getopt_long (argc, argv, "0123456789cstuw:p:",
+ long_options, NULL))
+ != -1)
+ switch (optchar)
+ {
+ default:
+ if (ISDIGIT (optchar))
+ error (0, 0, _("invalid option -- %c; -WIDTH is recognized\
+ only when it is the first\noption; use -w N instead"),
+ optchar);
+ usage (EXIT_FAILURE);
+
+ case 'c':
+ crown = true;
+ break;
+
+ case 's':
+ split = true;
+ break;
+
+ case 't':
+ tagged = true;
+ break;
+
+ case 'u':
+ uniform = true;
+ break;
+
+ case 'w':
+ max_width_option = optarg;
+ break;
+
+ case 'p':
+ set_prefix (optarg);
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ }
+
+ if (max_width_option)
+ {
+ /* Limit max_width to MAXCHARS / 2; otherwise, the resulting
+ output can be quite ugly. */
+ unsigned long int tmp;
+ if (! (xstrtoul (max_width_option, NULL, 10, &tmp, "") == LONGINT_OK
+ && tmp <= MAXCHARS / 2))
+ error (EXIT_FAILURE, 0, _("invalid width: %s"),
+ quote (max_width_option));
+ max_width = tmp;
+ }
+
+ best_width = max_width * (2 * (100 - LEEWAY) + 1) / 200;
+
+ if (optind == argc)
+ fmt (stdin);
+ else
+ {
+ for (; optind < argc; optind++)
+ {
+ char *file = argv[optind];
+ if (STREQ (file, "-"))
+ fmt (stdin);
+ else
+ {
+ FILE *in_stream;
+ in_stream = fopen (file, "r");
+ if (in_stream != NULL)
+ {
+ fmt (in_stream);
+ if (fclose (in_stream) == EOF)
+ {
+ error (0, errno, "%s", file);
+ ok = false;
+ }
+ }
+ else
+ {
+ error (0, errno, _("cannot open %s for reading"),
+ quote (file));
+ ok = false;
+ }
+ }
+ }
+ }
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+
+/* Trim space from the front and back of the string P, yielding the prefix,
+ and record the lengths of the prefix and the space trimmed. */
+
+static void
+set_prefix (char *p)
+{
+ char *s;
+
+ prefix_lead_space = 0;
+ while (*p == ' ')
+ {
+ prefix_lead_space++;
+ p++;
+ }
+ prefix = p;
+ prefix_full_length = strlen (p);
+ s = p + prefix_full_length;
+ while (s > p && s[-1] == ' ')
+ s--;
+ *s = '\0';
+ prefix_length = s - p;
+}
+
+/* read file F and send formatted output to stdout. */
+
+static void
+fmt (FILE *f)
+{
+ tabs = false;
+ other_indent = 0;
+ next_char = get_prefix (f);
+ while (get_paragraph (f))
+ {
+ fmt_paragraph ();
+ put_paragraph (word_limit);
+ }
+}
+
+/* Set the global variable `other_indent' according to SAME_PARAGRAPH
+ and other global variables. */
+
+static void
+set_other_indent (bool same_paragraph)
+{
+ if (split)
+ other_indent = first_indent;
+ else if (crown)
+ {
+ other_indent = (same_paragraph ? in_column : first_indent);
+ }
+ else if (tagged)
+ {
+ if (same_paragraph && in_column != first_indent)
+ {
+ other_indent = in_column;
+ }
+
+ /* Only one line: use the secondary indent from last time if it
+ splits, or 0 if there have been no multi-line paragraphs in the
+ input so far. But if these rules make the two indents the same,
+ pick a new secondary indent. */
+
+ else if (other_indent == first_indent)
+ other_indent = first_indent == 0 ? DEF_INDENT : 0;
+ }
+ else
+ {
+ other_indent = first_indent;
+ }
+}
+
+/* Read a paragraph from input file F. A paragraph consists of a
+ maximal number of non-blank (excluding any prefix) lines subject to:
+ * In split mode, a paragraph is a single non-blank line.
+ * In crown mode, the second and subsequent lines must have the
+ same indentation, but possibly different from the indent of the
+ first line.
+ * Tagged mode is similar, but the first and second lines must have
+ different indentations.
+ * Otherwise, all lines of a paragraph must have the same indent.
+ If a prefix is in effect, it must be present at the same indent for
+ each line in the paragraph.
+
+ Return false if end-of-file was encountered before the start of a
+ paragraph, else true. */
+
+static bool
+get_paragraph (FILE *f)
+{
+ int c;
+
+ last_line_length = 0;
+ c = next_char;
+
+ /* Scan (and copy) blank lines, and lines not introduced by the prefix. */
+
+ while (c == '\n' || c == EOF
+ || next_prefix_indent < prefix_lead_space
+ || in_column < next_prefix_indent + prefix_full_length)
+ {
+ c = copy_rest (f, c);
+ if (c == EOF)
+ {
+ next_char = EOF;
+ return false;
+ }
+ putchar ('\n');
+ c = get_prefix (f);
+ }
+
+ /* Got a suitable first line for a paragraph. */
+
+ prefix_indent = next_prefix_indent;
+ first_indent = in_column;
+ wptr = parabuf;
+ word_limit = word;
+ c = get_line (f, c);
+ set_other_indent (same_para (c));
+
+ /* Read rest of paragraph (unless split is specified). */
+
+ if (split)
+ {
+ /* empty */
+ }
+ else if (crown)
+ {
+ if (same_para (c))
+ {
+ do
+ { /* for each line till the end of the para */
+ c = get_line (f, c);
+ }
+ while (same_para (c) && in_column == other_indent);
+ }
+ }
+ else if (tagged)
+ {
+ if (same_para (c) && in_column != first_indent)
+ {
+ do
+ { /* for each line till the end of the para */
+ c = get_line (f, c);
+ }
+ while (same_para (c) && in_column == other_indent);
+ }
+ }
+ else
+ {
+ while (same_para (c) && in_column == other_indent)
+ c = get_line (f, c);
+ }
+ (word_limit - 1)->period = (word_limit - 1)->final = true;
+ next_char = c;
+ return true;
+}
+
+/* Copy to the output a line that failed to match the prefix, or that
+ was blank after the prefix. In the former case, C is the character
+ that failed to match the prefix. In the latter, C is \n or EOF.
+ Return the character (\n or EOF) ending the line. */
+
+static int
+copy_rest (FILE *f, int c)
+{
+ const char *s;
+
+ out_column = 0;
+ if (in_column > next_prefix_indent || (c != '\n' && c != EOF))
+ {
+ put_space (next_prefix_indent);
+ for (s = prefix; out_column != in_column && *s; out_column++)
+ putchar (*s++);
+ if (c != EOF && c != '\n')
+ put_space (in_column - out_column);
+ if (c == EOF && in_column >= next_prefix_indent + prefix_length)
+ putchar ('\n');
+ }
+ while (c != '\n' && c != EOF)
+ {
+ putchar (c);
+ c = getc (f);
+ }
+ return c;
+}
+
+/* Return true if a line whose first non-blank character after the
+ prefix (if any) is C could belong to the current paragraph,
+ otherwise false. */
+
+static bool
+same_para (int c)
+{
+ return (next_prefix_indent == prefix_indent
+ && in_column >= next_prefix_indent + prefix_full_length
+ && c != '\n' && c != EOF);
+}
+
+/* Read a line from input file F, given first non-blank character C
+ after the prefix, and the following indent, and break it into words.
+ A word is a maximal non-empty string of non-white characters. A word
+ ending in [.?!]["')\]]* and followed by end-of-line or at least two
+ spaces ends a sentence, as in emacs.
+
+ Return the first non-blank character of the next line. */
+
+static int
+get_line (FILE *f, int c)
+{
+ int start;
+ char *end_of_parabuf;
+ WORD *end_of_word;
+
+ end_of_parabuf = &parabuf[MAXCHARS];
+ end_of_word = &word[MAXWORDS - 2];
+
+ do
+ { /* for each word in a line */
+
+ /* Scan word. */
+
+ word_limit->text = wptr;
+ do
+ {
+ if (wptr == end_of_parabuf)
+ {
+ set_other_indent (true);
+ flush_paragraph ();
+ }
+ *wptr++ = c;
+ c = getc (f);
+ }
+ while (c != EOF && !isspace (c));
+ in_column += word_limit->length = wptr - word_limit->text;
+ check_punctuation (word_limit);
+
+ /* Scan inter-word space. */
+
+ start = in_column;
+ c = get_space (f, c);
+ word_limit->space = in_column - start;
+ word_limit->final = (c == EOF
+ || (word_limit->period
+ && (c == '\n' || word_limit->space > 1)));
+ if (c == '\n' || c == EOF || uniform)
+ word_limit->space = word_limit->final ? 2 : 1;
+ if (word_limit == end_of_word)
+ {
+ set_other_indent (true);
+ flush_paragraph ();
+ }
+ word_limit++;
+ }
+ while (c != '\n' && c != EOF);
+ return get_prefix (f);
+}
+
+/* Read a prefix from input file F. Return either first non-matching
+ character, or first non-blank character after the prefix. */
+
+static int
+get_prefix (FILE *f)
+{
+ int c;
+
+ in_column = 0;
+ c = get_space (f, getc (f));
+ if (prefix_length == 0)
+ next_prefix_indent = prefix_lead_space < in_column ?
+ prefix_lead_space : in_column;
+ else
+ {
+ const char *p;
+ next_prefix_indent = in_column;
+ for (p = prefix; *p != '\0'; p++)
+ {
+ unsigned char pc = *p;
+ if (c != pc)
+ return c;
+ in_column++;
+ c = getc (f);
+ }
+ c = get_space (f, c);
+ }
+ return c;
+}
+
+/* Read blank characters from input file F, starting with C, and keeping
+ in_column up-to-date. Return first non-blank character. */
+
+static int
+get_space (FILE *f, int c)
+{
+ for (;;)
+ {
+ if (c == ' ')
+ in_column++;
+ else if (c == '\t')
+ {
+ tabs = true;
+ in_column = (in_column / TABWIDTH + 1) * TABWIDTH;
+ }
+ else
+ return c;
+ c = getc (f);
+ }
+}
+
+/* Set extra fields in word W describing any attached punctuation. */
+
+static void
+check_punctuation (WORD *w)
+{
+ char const *start = w->text;
+ char const *finish = start + (w->length - 1);
+ unsigned char fin = *finish;
+
+ w->paren = isopen (*start);
+ w->punct = !! ispunct (fin);
+ while (start < finish && isclose (*finish))
+ finish--;
+ w->period = isperiod (*finish);
+}
+
+/* Flush part of the paragraph to make room. This function is called on
+ hitting the limit on the number of words or characters. */
+
+static void
+flush_paragraph (void)
+{
+ WORD *split_point;
+ WORD *w;
+ int shift;
+ COST best_break;
+
+ /* In the special case where it's all one word, just flush it. */
+
+ if (word_limit == word)
+ {
+ fwrite (parabuf, sizeof *parabuf, wptr - parabuf, stdout);
+ wptr = parabuf;
+ return;
+ }
+
+ /* Otherwise:
+ - format what you have so far as a paragraph,
+ - find a low-cost line break near the end,
+ - output to there,
+ - make that the start of the paragraph. */
+
+ fmt_paragraph ();
+
+ /* Choose a good split point. */
+
+ split_point = word_limit;
+ best_break = MAXCOST;
+ for (w = word->next_break; w != word_limit; w = w->next_break)
+ {
+ if (w->best_cost - w->next_break->best_cost < best_break)
+ {
+ split_point = w;
+ best_break = w->best_cost - w->next_break->best_cost;
+ }
+ if (best_break <= MAXCOST - LINE_CREDIT)
+ best_break += LINE_CREDIT;
+ }
+ put_paragraph (split_point);
+
+ /* Copy text of words down to start of parabuf -- we use memmove because
+ the source and target may overlap. */
+
+ memmove (parabuf, split_point->text, wptr - split_point->text);
+ shift = split_point->text - parabuf;
+ wptr -= shift;
+
+ /* Adjust text pointers. */
+
+ for (w = split_point; w <= word_limit; w++)
+ w->text -= shift;
+
+ /* Copy words from split_point down to word -- we use memmove because
+ the source and target may overlap. */
+
+ memmove (word, split_point, (word_limit - split_point + 1) * sizeof *word);
+ word_limit -= split_point - word;
+}
+
+/* Compute the optimal formatting for the whole paragraph by computing
+ and remembering the optimal formatting for each suffix from the empty
+ one to the whole paragraph. */
+
+static void
+fmt_paragraph (void)
+{
+ WORD *start, *w;
+ int len;
+ COST wcost, best;
+ int saved_length;
+
+ word_limit->best_cost = 0;
+ saved_length = word_limit->length;
+ word_limit->length = max_width; /* sentinel */
+
+ for (start = word_limit - 1; start >= word; start--)
+ {
+ best = MAXCOST;
+ len = start == word ? first_indent : other_indent;
+
+ /* At least one word, however long, in the line. */
+
+ w = start;
+ len += w->length;
+ do
+ {
+ w++;
+
+ /* Consider breaking before w. */
+
+ wcost = line_cost (w, len) + w->best_cost;
+ if (start == word && last_line_length > 0)
+ wcost += RAGGED_COST (len - last_line_length);
+ if (wcost < best)
+ {
+ best = wcost;
+ start->next_break = w;
+ start->line_length = len;
+ }
+
+ /* This is a kludge to keep us from computing `len' as the
+ sum of the sentinel length and some non-zero number.
+ Since the sentinel w->length may be INT_MAX, adding
+ to that would give a negative result. */
+ if (w == word_limit)
+ break;
+
+ len += (w - 1)->space + w->length; /* w > start >= word */
+ }
+ while (len < max_width);
+ start->best_cost = best + base_cost (start);
+ }
+
+ word_limit->length = saved_length;
+}
+
+/* Return the constant component of the cost of breaking before the
+ word THIS. */
+
+static COST
+base_cost (WORD *this)
+{
+ COST cost;
+
+ cost = LINE_COST;
+
+ if (this > word)
+ {
+ if ((this - 1)->period)
+ {
+ if ((this - 1)->final)
+ cost -= SENTENCE_BONUS;
+ else
+ cost += NOBREAK_COST;
+ }
+ else if ((this - 1)->punct)
+ cost -= PUNCT_BONUS;
+ else if (this > word + 1 && (this - 2)->final)
+ cost += WIDOW_COST ((this - 1)->length);
+ }
+
+ if (this->paren)
+ cost -= PAREN_BONUS;
+ else if (this->final)
+ cost += ORPHAN_COST (this->length);
+
+ return cost;
+}
+
+/* Return the component of the cost of breaking before word NEXT that
+ depends on LEN, the length of the line beginning there. */
+
+static COST
+line_cost (WORD *next, int len)
+{
+ int n;
+ COST cost;
+
+ if (next == word_limit)
+ return 0;
+ n = best_width - len;
+ cost = SHORT_COST (n);
+ if (next->next_break != word_limit)
+ {
+ n = len - next->line_length;
+ cost += RAGGED_COST (n);
+ }
+ return cost;
+}
+
+/* Output to stdout a paragraph from word up to (but not including)
+ FINISH, which must be in the next_break chain from word. */
+
+static void
+put_paragraph (WORD *finish)
+{
+ WORD *w;
+
+ put_line (word, first_indent);
+ for (w = word->next_break; w != finish; w = w->next_break)
+ put_line (w, other_indent);
+}
+
+/* Output to stdout the line beginning with word W, beginning in column
+ INDENT, including the prefix (if any). */
+
+static void
+put_line (WORD *w, int indent)
+{
+ WORD *endline;
+
+ out_column = 0;
+ put_space (prefix_indent);
+ fputs (prefix, stdout);
+ out_column += prefix_length;
+ put_space (indent - out_column);
+
+ endline = w->next_break - 1;
+ for (; w != endline; w++)
+ {
+ put_word (w);
+ put_space (w->space);
+ }
+ put_word (w);
+ last_line_length = out_column;
+ putchar ('\n');
+}
+
+/* Output to stdout the word W. */
+
+static void
+put_word (WORD *w)
+{
+ const char *s;
+ int n;
+
+ s = w->text;
+ for (n = w->length; n != 0; n--)
+ putchar (*s++);
+ out_column += w->length;
+}
+
+/* Output to stdout SPACE spaces, or equivalent tabs. */
+
+static void
+put_space (int space)
+{
+ int space_target, tab_target;
+
+ space_target = out_column + space;
+ if (tabs)
+ {
+ tab_target = space_target / TABWIDTH * TABWIDTH;
+ if (out_column + 1 < tab_target)
+ while (out_column < tab_target)
+ {
+ putchar ('\t');
+ out_column = (out_column / TABWIDTH + 1) * TABWIDTH;
+ }
+ }
+ while (out_column < space_target)
+ {
+ putchar (' ');
+ out_column++;
+ }
+}
diff --git a/src/fold.c b/src/fold.c
new file mode 100644
index 0000000..0d4ea58
--- /dev/null
+++ b/src/fold.c
@@ -0,0 +1,318 @@
+/* fold -- wrap each input line to fit in specified width.
+ Copyright (C) 91, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David MacKenzie, djm@gnu.ai.mit.edu. */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "error.h"
+#include "quote.h"
+#include "xstrtol.h"
+
+#define TAB_WIDTH 8
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "fold"
+
+#define AUTHORS "David MacKenzie"
+
+/* The name this program was run with. */
+char *program_name;
+
+/* If nonzero, try to break on whitespace. */
+static bool break_spaces;
+
+/* If nonzero, count bytes, not column positions. */
+static bool count_bytes;
+
+/* If nonzero, at least one of the files we read was standard input. */
+static bool have_read_stdin;
+
+static char const shortopts[] = "bsw:0::1::2::3::4::5::6::7::8::9::";
+
+static struct option const longopts[] =
+{
+ {"bytes", no_argument, NULL, 'b'},
+ {"spaces", no_argument, NULL, 's'},
+ {"width", required_argument, NULL, 'w'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [FILE]...\n\
+"),
+ program_name);
+ fputs (_("\
+Wrap input lines in each FILE (standard input by default), writing to\n\
+standard output.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -b, --bytes count bytes rather than columns\n\
+ -s, --spaces break at spaces\n\
+ -w, --width=WIDTH use WIDTH columns instead of 80\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Assuming the current column is COLUMN, return the column that
+ printing C will move the cursor to.
+ The first column is 0. */
+
+static size_t
+adjust_column (size_t column, char c)
+{
+ if (!count_bytes)
+ {
+ if (c == '\b')
+ {
+ if (column > 0)
+ column--;
+ }
+ else if (c == '\r')
+ column = 0;
+ else if (c == '\t')
+ column += TAB_WIDTH - column % TAB_WIDTH;
+ else /* if (isprint (c)) */
+ column++;
+ }
+ else
+ column++;
+ return column;
+}
+
+/* Fold file FILENAME, or standard input if FILENAME is "-",
+ to stdout, with maximum line length WIDTH.
+ Return true if successful. */
+
+static bool
+fold_file (char const *filename, size_t width)
+{
+ FILE *istream;
+ int c;
+ size_t column = 0; /* Screen column where next char will go. */
+ size_t offset_out = 0; /* Index in `line_out' for next char. */
+ static char *line_out = NULL;
+ static size_t allocated_out = 0;
+ int saved_errno;
+
+ if (STREQ (filename, "-"))
+ {
+ istream = stdin;
+ have_read_stdin = true;
+ }
+ else
+ istream = fopen (filename, "r");
+
+ if (istream == NULL)
+ {
+ error (0, errno, "%s", filename);
+ return false;
+ }
+
+ while ((c = getc (istream)) != EOF)
+ {
+ if (offset_out + 1 >= allocated_out)
+ line_out = X2REALLOC (line_out, &allocated_out);
+
+ if (c == '\n')
+ {
+ line_out[offset_out++] = c;
+ fwrite (line_out, sizeof (char), offset_out, stdout);
+ column = offset_out = 0;
+ continue;
+ }
+
+ rescan:
+ column = adjust_column (column, c);
+
+ if (column > width)
+ {
+ /* This character would make the line too long.
+ Print the line plus a newline, and make this character
+ start the next line. */
+ if (break_spaces)
+ {
+ bool found_blank = false;
+ size_t logical_end = offset_out;
+
+ /* Look for the last blank. */
+ while (logical_end)
+ {
+ --logical_end;
+ if (isblank (to_uchar (line_out[logical_end])))
+ {
+ found_blank = true;
+ break;
+ }
+ }
+
+ if (found_blank)
+ {
+ size_t i;
+
+ /* Found a blank. Don't output the part after it. */
+ logical_end++;
+ fwrite (line_out, sizeof (char), (size_t) logical_end,
+ stdout);
+ putchar ('\n');
+ /* Move the remainder to the beginning of the next line.
+ The areas being copied here might overlap. */
+ memmove (line_out, line_out + logical_end,
+ offset_out - logical_end);
+ offset_out -= logical_end;
+ for (column = i = 0; i < offset_out; i++)
+ column = adjust_column (column, line_out[i]);
+ goto rescan;
+ }
+ }
+
+ if (offset_out == 0)
+ {
+ line_out[offset_out++] = c;
+ continue;
+ }
+
+ line_out[offset_out++] = '\n';
+ fwrite (line_out, sizeof (char), (size_t) offset_out, stdout);
+ column = offset_out = 0;
+ goto rescan;
+ }
+
+ line_out[offset_out++] = c;
+ }
+
+ saved_errno = errno;
+
+ if (offset_out)
+ fwrite (line_out, sizeof (char), (size_t) offset_out, stdout);
+
+ if (ferror (istream))
+ {
+ error (0, saved_errno, "%s", filename);
+ if (!STREQ (filename, "-"))
+ fclose (istream);
+ return false;
+ }
+ if (!STREQ (filename, "-") && fclose (istream) == EOF)
+ {
+ error (0, errno, "%s", filename);
+ return false;
+ }
+
+ return true;
+}
+
+int
+main (int argc, char **argv)
+{
+ size_t width = 80;
+ int i;
+ int optc;
+ bool ok;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ break_spaces = count_bytes = have_read_stdin = false;
+
+ while ((optc = getopt_long (argc, argv, shortopts, longopts, NULL)) != -1)
+ {
+ char optargbuf[2];
+
+ switch (optc)
+ {
+ case 'b': /* Count bytes rather than columns. */
+ count_bytes = true;
+ break;
+
+ case 's': /* Break at word boundaries. */
+ break_spaces = true;
+ break;
+
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ if (optarg)
+ optarg--;
+ else
+ {
+ optargbuf[0] = optc;
+ optargbuf[1] = '\0';
+ optarg = optargbuf;
+ }
+ /* Fall through. */
+ case 'w': /* Line width. */
+ {
+ unsigned long int tmp_ulong;
+ if (! (xstrtoul (optarg, NULL, 10, &tmp_ulong, "") == LONGINT_OK
+ && 0 < tmp_ulong && tmp_ulong < SIZE_MAX - TAB_WIDTH))
+ error (EXIT_FAILURE, 0,
+ _("invalid number of columns: %s"), quote (optarg));
+ width = tmp_ulong;
+ }
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (argc == optind)
+ ok = fold_file ("-", width);
+ else
+ {
+ ok = true;
+ for (i = optind; i < argc; i++)
+ ok &= fold_file (argv[i], width);
+ }
+
+ if (have_read_stdin && fclose (stdin) == EOF)
+ error (EXIT_FAILURE, errno, "-");
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/fs.h b/src/fs.h
new file mode 100644
index 0000000..5ceea5b
--- /dev/null
+++ b/src/fs.h
@@ -0,0 +1,43 @@
+/* Define the magic numbers as given by statfs(2).
+ Please send additions to bug-coreutils@gnu.org and meskes@debian.org.
+ This file is generated automatically from ./stat.c. */
+
+#if defined __linux__
+# define S_MAGIC_AFFS 0xADFF
+# define S_MAGIC_DEVPTS 0x1CD1
+# define S_MAGIC_EXT 0x137D
+# define S_MAGIC_EXT2_OLD 0xEF51
+# define S_MAGIC_EXT2 0xEF53
+# define S_MAGIC_JFS 0x3153464a
+# define S_MAGIC_XFS 0x58465342
+# define S_MAGIC_HPFS 0xF995E849
+# define S_MAGIC_ISOFS 0x9660
+# define S_MAGIC_ISOFS_WIN 0x4000
+# define S_MAGIC_ISOFS_R_WIN 0x4004
+# define S_MAGIC_MINIX 0x137F
+# define S_MAGIC_MINIX_30 0x138F
+# define S_MAGIC_MINIX_V2 0x2468
+# define S_MAGIC_MINIX_V2_30 0x2478
+# define S_MAGIC_MSDOS 0x4d44
+# define S_MAGIC_FAT 0x4006
+# define S_MAGIC_NCP 0x564c
+# define S_MAGIC_NFS 0x6969
+# define S_MAGIC_PROC 0x9fa0
+# define S_MAGIC_SMB 0x517B
+# define S_MAGIC_XENIX 0x012FF7B4
+# define S_MAGIC_SYSV4 0x012FF7B5
+# define S_MAGIC_SYSV2 0x012FF7B6
+# define S_MAGIC_COH 0x012FF7B7
+# define S_MAGIC_UFS 0x00011954
+# define S_MAGIC_XIAFS 0x012FD16D
+# define S_MAGIC_NTFS 0x5346544e
+# define S_MAGIC_TMPFS 0x1021994
+# define S_MAGIC_REISERFS 0x52654973
+# define S_MAGIC_CRAMFS 0x28cd3d45
+# define S_MAGIC_ROMFS 0x7275
+# define S_MAGIC_RAMFS 0x858458f6
+# define S_MAGIC_SQUASHFS 0x73717368
+# define S_MAGIC_SYSFS 0x62656572
+#elif defined __GNU__
+# include <hurd/hurd_types.h>
+#endif
diff --git a/src/groups.sh b/src/groups.sh
new file mode 100755
index 0000000..dd32c63
--- /dev/null
+++ b/src/groups.sh
@@ -0,0 +1,83 @@
+#!/bin/sh
+# groups -- print the groups a user is in
+# Copyright (C) 1991, 1997, 2000, 2002, 2004-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Written by David MacKenzie <djm@gnu.ai.mit.edu>.
+
+# Make sure we get GNU id, if possible; also allow
+# it to be somewhere else in PATH if not installed yet.
+PATH=@bindir@:$PATH
+
+usage="Usage: $0 [OPTION]... [USERNAME]...
+
+ --help display this help and exit
+ --version output version information and exit
+
+Same as id -Gn. If no USERNAME, use current process.
+
+Report bugs to <@PACKAGE_BUGREPORT@>."
+
+version='groups (@GNU_PACKAGE@) @VERSION@
+Copyright (C) @RELEASE_YEAR@ Free Software Foundation, Inc.
+This is free software. You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+
+Written by David MacKenzie.'
+
+
+for arg
+do
+ case $arg in
+ --help | --hel | --he | --h)
+ exec echo "$usage" ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v)
+ exec echo "$version" ;;
+ --)
+ shift
+ break ;;
+ -*)
+ echo "$0: invalid option: $arg" >&2
+ exit 1 ;;
+ esac
+done
+
+# With fewer than two arguments, simply exec "id".
+case $# in
+ 0|1) exec id -Gn -- "$@" ;;
+esac
+
+# With more, we need a loop, and be sure to exit nonzero upon failure.
+status=0
+write_error=0
+
+for name
+do
+ if groups=`id -Gn -- "$name"`; then
+ echo "$name : $groups" || {
+ status=$?
+ if test $write_error = 0; then
+ echo "$0: write error" >&2
+ write_error=1
+ fi
+ }
+ else
+ status=$?
+ fi
+done
+
+exit $status
diff --git a/src/head.c b/src/head.c
new file mode 100644
index 0000000..4038722
--- /dev/null
+++ b/src/head.c
@@ -0,0 +1,1064 @@
+/* head -- output first part of file(s)
+ Copyright (C) 89, 90, 91, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Options: (see usage)
+ Reads from standard input if no files are given or when a filename of
+ ``-'' is encountered.
+ By default, filename headers are printed only if more than one file
+ is given.
+ By default, prints the first 10 lines (head -n 10).
+
+ David MacKenzie <djm@gnu.ai.mit.edu> */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+
+#include "system.h"
+
+#include "error.h"
+#include "full-write.h"
+#include "full-read.h"
+#include "inttostr.h"
+#include "quote.h"
+#include "safe-read.h"
+#include "xstrtol.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "head"
+
+#define AUTHORS "David MacKenzie", "Jim Meyering"
+
+/* Number of lines/chars/blocks to head. */
+#define DEFAULT_NUMBER 10
+
+/* Useful only when eliding tail bytes or lines.
+ If true, skip the is-regular-file test used to determine whether
+ to use the lseek optimization. Instead, use the more general (and
+ more expensive) code unconditionally. Intended solely for testing. */
+static bool presume_input_pipe;
+
+/* If true, print filename headers. */
+static bool print_headers;
+
+/* When to print the filename banners. */
+enum header_mode
+{
+ multiple_files, always, never
+};
+
+/* The name this program was run with. */
+char *program_name;
+
+/* Have we ever read standard input? */
+static bool have_read_stdin;
+
+enum Copy_fd_status
+ {
+ COPY_FD_OK = 0,
+ COPY_FD_READ_ERROR,
+ COPY_FD_WRITE_ERROR,
+ COPY_FD_UNEXPECTED_EOF
+ };
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ PRESUME_INPUT_PIPE_OPTION = CHAR_MAX + 1
+};
+
+static struct option const long_options[] =
+{
+ {"bytes", required_argument, NULL, 'c'},
+ {"lines", required_argument, NULL, 'n'},
+ {"-presume-input-pipe", no_argument, NULL,
+ PRESUME_INPUT_PIPE_OPTION}, /* do not document */
+ {"quiet", no_argument, NULL, 'q'},
+ {"silent", no_argument, NULL, 'q'},
+ {"verbose", no_argument, NULL, 'v'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [FILE]...\n\
+"),
+ program_name);
+ fputs (_("\
+Print the first 10 lines of each FILE to standard output.\n\
+With more than one FILE, precede each with a header giving the file name.\n\
+With no FILE, or when FILE is -, read standard input.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -c, --bytes=[-]N print the first N bytes of each file;\n\
+ with the leading `-', print all but the last\n\
+ N bytes of each file\n\
+ -n, --lines=[-]N print the first N lines instead of the first 10;\n\
+ with the leading `-', print all but the last\n\
+ N lines of each file\n\
+"), stdout);
+ fputs (_("\
+ -q, --quiet, --silent never print headers giving file names\n\
+ -v, --verbose always print headers giving file names\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+N may have a multiplier suffix: b 512, k 1024, m 1024*1024.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+static void
+diagnose_copy_fd_failure (enum Copy_fd_status err, char const *filename)
+{
+ switch (err)
+ {
+ case COPY_FD_READ_ERROR:
+ error (0, errno, _("error reading %s"), quote (filename));
+ break;
+ case COPY_FD_WRITE_ERROR:
+ error (0, errno, _("error writing %s"), quote (filename));
+ break;
+ case COPY_FD_UNEXPECTED_EOF:
+ error (0, errno, _("%s: file has shrunk too much"), quote (filename));
+ break;
+ default:
+ abort ();
+ }
+}
+
+static void
+write_header (const char *filename)
+{
+ static bool first_file = true;
+
+ printf ("%s==> %s <==\n", (first_file ? "" : "\n"), filename);
+ first_file = false;
+}
+
+/* Copy no more than N_BYTES from file descriptor SRC_FD to O_STREAM.
+ Return an appropriate indication of success or failure. */
+
+static enum Copy_fd_status
+copy_fd (int src_fd, FILE *o_stream, uintmax_t n_bytes)
+{
+ char buf[BUFSIZ];
+ const size_t buf_size = sizeof (buf);
+
+ /* Copy the file contents. */
+ while (0 < n_bytes)
+ {
+ size_t n_to_read = MIN (buf_size, n_bytes);
+ size_t n_read = safe_read (src_fd, buf, n_to_read);
+ if (n_read == SAFE_READ_ERROR)
+ return COPY_FD_READ_ERROR;
+
+ n_bytes -= n_read;
+
+ if (n_read == 0 && n_bytes != 0)
+ return COPY_FD_UNEXPECTED_EOF;
+
+ if (fwrite (buf, 1, n_read, o_stream) < n_read)
+ return COPY_FD_WRITE_ERROR;
+ }
+
+ return COPY_FD_OK;
+}
+
+/* Print all but the last N_ELIDE lines from the input available via
+ the non-seekable file descriptor FD. Return true upon success.
+ Give a diagnostic and return false upon error. */
+static bool
+elide_tail_bytes_pipe (const char *filename, int fd, uintmax_t n_elide_0)
+{
+ size_t n_elide = n_elide_0;
+
+#ifndef HEAD_TAIL_PIPE_READ_BUFSIZE
+# define HEAD_TAIL_PIPE_READ_BUFSIZE BUFSIZ
+#endif
+#define READ_BUFSIZE HEAD_TAIL_PIPE_READ_BUFSIZE
+
+ /* If we're eliding no more than this many bytes, then it's ok to allocate
+ more memory in order to use a more time-efficient algorithm.
+ FIXME: use a fraction of available memory instead, as in sort.
+ FIXME: is this even worthwhile? */
+#ifndef HEAD_TAIL_PIPE_BYTECOUNT_THRESHOLD
+# define HEAD_TAIL_PIPE_BYTECOUNT_THRESHOLD 1024 * 1024
+#endif
+
+#if HEAD_TAIL_PIPE_BYTECOUNT_THRESHOLD < 2 * READ_BUFSIZE
+ "HEAD_TAIL_PIPE_BYTECOUNT_THRESHOLD must be at least 2 * READ_BUFSIZE"
+#endif
+
+ if (SIZE_MAX < n_elide_0 + READ_BUFSIZE)
+ {
+ char umax_buf[INT_BUFSIZE_BOUND (uintmax_t)];
+ error (EXIT_FAILURE, 0, _("%s: number of bytes is too large"),
+ umaxtostr (n_elide_0, umax_buf));
+ }
+
+ /* Two cases to consider...
+ 1) n_elide is small enough that we can afford to double-buffer:
+ allocate 2 * (READ_BUFSIZE + n_elide) bytes
+ 2) n_elide is too big for that, so we allocate only
+ (READ_BUFSIZE + n_elide) bytes
+
+ FIXME: profile, to see if double-buffering is worthwhile
+
+ CAUTION: do not fail (out of memory) when asked to elide
+ a ridiculous amount, but when given only a small input. */
+
+ if (n_elide <= HEAD_TAIL_PIPE_BYTECOUNT_THRESHOLD)
+ {
+ bool ok = true;
+ bool first = true;
+ bool eof = false;
+ size_t n_to_read = READ_BUFSIZE + n_elide;
+ bool i;
+ char *b[2];
+ b[0] = xnmalloc (2, n_to_read);
+ b[1] = b[0] + n_to_read;
+
+ for (i = false; ! eof ; i = !i)
+ {
+ size_t n_read = full_read (fd, b[i], n_to_read);
+ size_t delta = 0;
+ if (n_read < n_to_read)
+ {
+ if (errno != 0)
+ {
+ error (0, errno, _("error reading %s"), quote (filename));
+ ok = false;
+ break;
+ }
+
+ /* reached EOF */
+ if (n_read <= n_elide)
+ {
+ if (first)
+ {
+ /* The input is no larger than the number of bytes
+ to elide. So there's nothing to output, and
+ we're done. */
+ }
+ else
+ {
+ delta = n_elide - n_read;
+ }
+ }
+ eof = true;
+ }
+
+ /* Output any (but maybe just part of the) elided data from
+ the previous round. */
+ if ( ! first)
+ {
+ /* Don't bother checking for errors here.
+ If there's a failure, the test of the following
+ fwrite or in close_stdout will catch it. */
+ fwrite (b[!i] + READ_BUFSIZE, 1, n_elide - delta, stdout);
+ }
+ first = false;
+
+ if (n_elide < n_read
+ && fwrite (b[i], 1, n_read - n_elide, stdout) < n_read - n_elide)
+ {
+ error (0, errno, _("write error"));
+ ok = false;
+ break;
+ }
+ }
+
+ free (b[0]);
+ return ok;
+ }
+ else
+ {
+ /* Read blocks of size READ_BUFSIZE, until we've read at least n_elide
+ bytes. Then, for each new buffer we read, also write an old one. */
+
+ bool ok = true;
+ bool eof = false;
+ size_t n_read;
+ bool buffered_enough;
+ size_t i, i_next;
+ char **b;
+ /* Round n_elide up to a multiple of READ_BUFSIZE. */
+ size_t rem = READ_BUFSIZE - (n_elide % READ_BUFSIZE);
+ size_t n_elide_round = n_elide + rem;
+ size_t n_bufs = n_elide_round / READ_BUFSIZE + 1;
+ b = xcalloc (n_bufs, sizeof *b);
+
+ buffered_enough = false;
+ for (i = 0, i_next = 1; !eof; i = i_next, i_next = (i_next + 1) % n_bufs)
+ {
+ if (b[i] == NULL)
+ b[i] = xmalloc (READ_BUFSIZE);
+ n_read = full_read (fd, b[i], READ_BUFSIZE);
+ if (n_read < READ_BUFSIZE)
+ {
+ if (errno != 0)
+ {
+ error (0, errno, _("error reading %s"), quote (filename));
+ ok = false;
+ goto free_mem;
+ }
+ eof = true;
+ }
+
+ if (i + 1 == n_bufs)
+ buffered_enough = true;
+
+ if (buffered_enough)
+ {
+ if (fwrite (b[i_next], 1, n_read, stdout) < n_read)
+ {
+ error (0, errno, _("write error"));
+ ok = false;
+ goto free_mem;
+ }
+ }
+ }
+
+ /* Output any remainder: rem bytes from b[i] + n_read. */
+ if (rem)
+ {
+ if (buffered_enough)
+ {
+ size_t n_bytes_left_in_b_i = READ_BUFSIZE - n_read;
+ if (rem < n_bytes_left_in_b_i)
+ {
+ fwrite (b[i] + n_read, 1, rem, stdout);
+ }
+ else
+ {
+ fwrite (b[i] + n_read, 1, n_bytes_left_in_b_i, stdout);
+ fwrite (b[i_next], 1, rem - n_bytes_left_in_b_i, stdout);
+ }
+ }
+ else if (i + 1 == n_bufs)
+ {
+ /* This happens when n_elide < file_size < n_elide_round.
+
+ |READ_BUF.|
+ | | rem |
+ |---------!---------!---------!---------|
+ |---- n_elide ---------|
+ | | x |
+ | |y |
+ |---- file size -----------|
+ | |n_read|
+ |---- n_elide_round ----------|
+ */
+ size_t y = READ_BUFSIZE - rem;
+ size_t x = n_read - y;
+ fwrite (b[i_next], 1, x, stdout);
+ }
+ }
+
+ free_mem:;
+ for (i = 0; i < n_bufs; i++)
+ free (b[i]);
+ free (b);
+
+ return ok;
+ }
+}
+
+/* Print all but the last N_ELIDE lines from the input available
+ via file descriptor FD. Return true upon success.
+ Give a diagnostic and return false upon error. */
+
+/* NOTE: if the input file shrinks by more than N_ELIDE bytes between
+ the length determination and the actual reading, then head fails. */
+
+static bool
+elide_tail_bytes_file (const char *filename, int fd, uintmax_t n_elide)
+{
+ struct stat stats;
+
+ if (presume_input_pipe || fstat (fd, &stats) || ! S_ISREG (stats.st_mode))
+ {
+ return elide_tail_bytes_pipe (filename, fd, n_elide);
+ }
+ else
+ {
+ off_t current_pos, end_pos;
+ uintmax_t bytes_remaining;
+ off_t diff;
+ enum Copy_fd_status err;
+
+ if ((current_pos = lseek (fd, (off_t) 0, SEEK_CUR)) == -1
+ || (end_pos = lseek (fd, (off_t) 0, SEEK_END)) == -1)
+ {
+ error (0, errno, _("cannot lseek %s"), quote (filename));
+ return false;
+ }
+
+ /* Be careful here. The current position may actually be
+ beyond the end of the file. */
+ bytes_remaining = (diff = end_pos - current_pos) < 0 ? 0 : diff;
+
+ if (bytes_remaining <= n_elide)
+ return true;
+
+ /* Seek back to `current' position, then copy the required
+ number of bytes from fd. */
+ if (lseek (fd, (off_t) 0, current_pos) == -1)
+ {
+ error (0, errno, _("%s: cannot lseek back to original position"),
+ quote (filename));
+ return false;
+ }
+
+ err = copy_fd (fd, stdout, bytes_remaining - n_elide);
+ if (err == COPY_FD_OK)
+ return true;
+
+ diagnose_copy_fd_failure (err, filename);
+ return false;
+ }
+}
+
+/* Print all but the last N_ELIDE lines from the input stream
+ open for reading via file descriptor FD.
+ Buffer the specified number of lines as a linked list of LBUFFERs,
+ adding them as needed. Return true if successful. */
+
+static bool
+elide_tail_lines_pipe (const char *filename, int fd, uintmax_t n_elide)
+{
+ struct linebuffer
+ {
+ char buffer[BUFSIZ];
+ size_t nbytes;
+ size_t nlines;
+ struct linebuffer *next;
+ };
+ typedef struct linebuffer LBUFFER;
+ LBUFFER *first, *last, *tmp;
+ size_t total_lines = 0; /* Total number of newlines in all buffers. */
+ bool ok = true;
+ size_t n_read; /* Size in bytes of most recent read */
+
+ first = last = xmalloc (sizeof (LBUFFER));
+ first->nbytes = first->nlines = 0;
+ first->next = NULL;
+ tmp = xmalloc (sizeof (LBUFFER));
+
+ /* Always read into a fresh buffer.
+ Read, (producing no output) until we've accumulated at least
+ n_elide newlines, or until EOF, whichever comes first. */
+ while (1)
+ {
+ n_read = safe_read (fd, tmp->buffer, BUFSIZ);
+ if (n_read == 0 || n_read == SAFE_READ_ERROR)
+ break;
+ tmp->nbytes = n_read;
+ tmp->nlines = 0;
+ tmp->next = NULL;
+
+ /* Count the number of newlines just read. */
+ {
+ char const *buffer_end = tmp->buffer + n_read;
+ char const *p = tmp->buffer;
+ while ((p = memchr (p, '\n', buffer_end - p)))
+ {
+ ++p;
+ ++tmp->nlines;
+ }
+ }
+ total_lines += tmp->nlines;
+
+ /* If there is enough room in the last buffer read, just append the new
+ one to it. This is because when reading from a pipe, `n_read' can
+ often be very small. */
+ if (tmp->nbytes + last->nbytes < BUFSIZ)
+ {
+ memcpy (&last->buffer[last->nbytes], tmp->buffer, tmp->nbytes);
+ last->nbytes += tmp->nbytes;
+ last->nlines += tmp->nlines;
+ }
+ else
+ {
+ /* If there's not enough room, link the new buffer onto the end of
+ the list, then either free up the oldest buffer for the next
+ read if that would leave enough lines, or else malloc a new one.
+ Some compaction mechanism is possible but probably not
+ worthwhile. */
+ last = last->next = tmp;
+ if (n_elide < total_lines - first->nlines)
+ {
+ fwrite (first->buffer, 1, first->nbytes, stdout);
+ tmp = first;
+ total_lines -= first->nlines;
+ first = first->next;
+ }
+ else
+ tmp = xmalloc (sizeof (LBUFFER));
+ }
+ }
+
+ free (tmp);
+
+ if (n_read == SAFE_READ_ERROR)
+ {
+ error (0, errno, _("error reading %s"), quote (filename));
+ ok = false;
+ goto free_lbuffers;
+ }
+
+ /* If we read any bytes at all, count the incomplete line
+ on files that don't end with a newline. */
+ if (last->nbytes && last->buffer[last->nbytes - 1] != '\n')
+ {
+ ++last->nlines;
+ ++total_lines;
+ }
+
+ for (tmp = first; n_elide < total_lines - tmp->nlines; tmp = tmp->next)
+ {
+ fwrite (tmp->buffer, 1, tmp->nbytes, stdout);
+ total_lines -= tmp->nlines;
+ }
+
+ /* Print the first `total_lines - n_elide' lines of tmp->buffer. */
+ if (n_elide < total_lines)
+ {
+ size_t n = total_lines - n_elide;
+ char const *buffer_end = tmp->buffer + tmp->nbytes;
+ char const *p = tmp->buffer;
+ while (n && (p = memchr (p, '\n', buffer_end - p)))
+ {
+ ++p;
+ ++tmp->nlines;
+ --n;
+ }
+ fwrite (tmp->buffer, 1, p - tmp->buffer, stdout);
+ }
+
+free_lbuffers:
+ while (first)
+ {
+ tmp = first->next;
+ free (first);
+ first = tmp;
+ }
+ return ok;
+}
+
+/* Output all but the last N_LINES lines of the input stream defined by
+ FD, START_POS, and END_POS.
+ START_POS is the starting position of the read pointer for the file
+ associated with FD (may be nonzero).
+ END_POS is the file offset of EOF (one larger than offset of last byte).
+ Return true upon success.
+ Give a diagnostic and return false upon error.
+
+ NOTE: this code is very similar to that of tail.c's file_lines function.
+ Unfortunately, factoring out some common core looks like it'd result
+ in a less efficient implementation or a messy interface. */
+static bool
+elide_tail_lines_seekable (const char *pretty_filename, int fd,
+ uintmax_t n_lines,
+ off_t start_pos, off_t end_pos)
+{
+ char buffer[BUFSIZ];
+ size_t bytes_read;
+ off_t pos = end_pos;
+
+ /* Set `bytes_read' to the size of the last, probably partial, buffer;
+ 0 < `bytes_read' <= `BUFSIZ'. */
+ bytes_read = (pos - start_pos) % BUFSIZ;
+ if (bytes_read == 0)
+ bytes_read = BUFSIZ;
+ /* Make `pos' a multiple of `BUFSIZ' (0 if the file is short), so that all
+ reads will be on block boundaries, which might increase efficiency. */
+ pos -= bytes_read;
+ if (lseek (fd, pos, SEEK_SET) < 0)
+ {
+ char offset_buf[INT_BUFSIZE_BOUND (off_t)];
+ error (0, errno, _("%s: cannot seek to offset %s"),
+ pretty_filename, offtostr (pos, offset_buf));
+ return false;
+ }
+ bytes_read = safe_read (fd, buffer, bytes_read);
+ if (bytes_read == SAFE_READ_ERROR)
+ {
+ error (0, errno, _("error reading %s"), quote (pretty_filename));
+ return false;
+ }
+
+ /* Count the incomplete line on files that don't end with a newline. */
+ if (bytes_read && buffer[bytes_read - 1] != '\n')
+ --n_lines;
+
+ while (1)
+ {
+ /* Scan backward, counting the newlines in this bufferfull. */
+
+ size_t n = bytes_read;
+ while (n)
+ {
+ char const *nl;
+ nl = memrchr (buffer, '\n', n);
+ if (nl == NULL)
+ break;
+ n = nl - buffer;
+ if (n_lines-- == 0)
+ {
+ /* Found it. */
+ /* If necessary, restore the file pointer and copy
+ input to output up to position, POS. */
+ if (start_pos < pos)
+ {
+ enum Copy_fd_status err;
+ if (lseek (fd, start_pos, SEEK_SET) < 0)
+ {
+ /* Failed to reposition file pointer. */
+ error (0, errno,
+ "%s: unable to restore file pointer to initial offset",
+ quote (pretty_filename));
+ return false;
+ }
+
+ err = copy_fd (fd, stdout, pos - start_pos);
+ if (err != COPY_FD_OK)
+ {
+ diagnose_copy_fd_failure (err, pretty_filename);
+ return false;
+ }
+ }
+
+ /* Output the initial portion of the buffer
+ in which we found the desired newline byte.
+ Don't bother testing for failure for such a small amount.
+ Any failure will be detected upon close. */
+ fwrite (buffer, 1, n + 1, stdout);
+ return true;
+ }
+ }
+
+ /* Not enough newlines in that bufferfull. */
+ if (pos == start_pos)
+ {
+ /* Not enough lines in the file. */
+ return true;
+ }
+ pos -= BUFSIZ;
+ if (lseek (fd, pos, SEEK_SET) < 0)
+ {
+ char offset_buf[INT_BUFSIZE_BOUND (off_t)];
+ error (0, errno, _("%s: cannot seek to offset %s"),
+ pretty_filename, offtostr (pos, offset_buf));
+ return false;
+ }
+
+ bytes_read = safe_read (fd, buffer, BUFSIZ);
+ if (bytes_read == SAFE_READ_ERROR)
+ {
+ error (0, errno, _("error reading %s"), quote (pretty_filename));
+ return false;
+ }
+
+ /* FIXME: is this dead code?
+ Consider the test, pos == start_pos, above. */
+ if (bytes_read == 0)
+ return true;
+ }
+}
+
+/* Print all but the last N_ELIDE lines from the input available
+ via file descriptor FD. Return true upon success.
+ Give a diagnostic and return nonzero upon error. */
+
+static bool
+elide_tail_lines_file (const char *filename, int fd, uintmax_t n_elide)
+{
+ if (!presume_input_pipe)
+ {
+ /* Find the offset, OFF, of the Nth newline from the end,
+ but not counting the last byte of the file.
+ If found, write from current position to OFF, inclusive.
+ Otherwise, just return true. */
+
+ off_t start_pos = lseek (fd, (off_t) 0, SEEK_CUR);
+ off_t end_pos = lseek (fd, (off_t) 0, SEEK_END);
+ if (0 <= start_pos && start_pos < end_pos)
+ {
+ /* If the file is empty, we're done. */
+ if (end_pos == 0)
+ return true;
+
+ return elide_tail_lines_seekable (filename, fd, n_elide,
+ start_pos, end_pos);
+ }
+
+ /* lseek failed or the end offset precedes start.
+ Fall through. */
+ }
+
+ return elide_tail_lines_pipe (filename, fd, n_elide);
+}
+
+static bool
+head_bytes (const char *filename, int fd, uintmax_t bytes_to_write)
+{
+ char buffer[BUFSIZ];
+ size_t bytes_to_read = BUFSIZ;
+
+ while (bytes_to_write)
+ {
+ size_t bytes_read;
+ if (bytes_to_write < bytes_to_read)
+ bytes_to_read = bytes_to_write;
+ bytes_read = safe_read (fd, buffer, bytes_to_read);
+ if (bytes_read == SAFE_READ_ERROR)
+ {
+ error (0, errno, _("error reading %s"), quote (filename));
+ return false;
+ }
+ if (bytes_read == 0)
+ break;
+ if (fwrite (buffer, 1, bytes_read, stdout) < bytes_read)
+ error (EXIT_FAILURE, errno, _("write error"));
+ bytes_to_write -= bytes_read;
+ }
+ return true;
+}
+
+static bool
+head_lines (const char *filename, int fd, uintmax_t lines_to_write)
+{
+ char buffer[BUFSIZ];
+
+ while (lines_to_write)
+ {
+ size_t bytes_read = safe_read (fd, buffer, BUFSIZ);
+ size_t bytes_to_write = 0;
+
+ if (bytes_read == SAFE_READ_ERROR)
+ {
+ error (0, errno, _("error reading %s"), quote (filename));
+ return false;
+ }
+ if (bytes_read == 0)
+ break;
+ while (bytes_to_write < bytes_read)
+ if (buffer[bytes_to_write++] == '\n' && --lines_to_write == 0)
+ {
+ off_t n_bytes_past_EOL = bytes_read - bytes_to_write;
+ /* If we have read more data than that on the specified number
+ of lines, try to seek back to the position we would have
+ gotten to had we been reading one byte at a time. */
+ if (lseek (fd, -n_bytes_past_EOL, SEEK_CUR) < 0)
+ {
+ int e = errno;
+ struct stat st;
+ if (fstat (fd, &st) != 0 || S_ISREG (st.st_mode))
+ error (0, e, _("cannot reposition file pointer for %s"),
+ quote (filename));
+ }
+ break;
+ }
+ if (fwrite (buffer, 1, bytes_to_write, stdout) < bytes_to_write)
+ error (EXIT_FAILURE, errno, _("write error"));
+ }
+ return true;
+}
+
+static bool
+head (const char *filename, int fd, uintmax_t n_units, bool count_lines,
+ bool elide_from_end)
+{
+ if (print_headers)
+ write_header (filename);
+
+ if (elide_from_end)
+ {
+ if (count_lines)
+ {
+ return elide_tail_lines_file (filename, fd, n_units);
+ }
+ else
+ {
+ return elide_tail_bytes_file (filename, fd, n_units);
+ }
+ }
+ if (count_lines)
+ return head_lines (filename, fd, n_units);
+ else
+ return head_bytes (filename, fd, n_units);
+}
+
+static bool
+head_file (const char *filename, uintmax_t n_units, bool count_lines,
+ bool elide_from_end)
+{
+ int fd;
+ bool ok;
+ bool is_stdin = STREQ (filename, "-");
+
+ if (is_stdin)
+ {
+ have_read_stdin = true;
+ fd = STDIN_FILENO;
+ filename = _("standard input");
+ if (O_BINARY && ! isatty (STDIN_FILENO))
+ freopen (NULL, "rb", stdin);
+ }
+ else
+ {
+ fd = open (filename, O_RDONLY | O_BINARY);
+ if (fd < 0)
+ {
+ error (0, errno, _("cannot open %s for reading"), quote (filename));
+ return false;
+ }
+ }
+
+ ok = head (filename, fd, n_units, count_lines, elide_from_end);
+ if (!is_stdin && close (fd) != 0)
+ {
+ error (0, errno, _("closing %s"), quote (filename));
+ return false;
+ }
+ return ok;
+}
+
+/* Convert a string of decimal digits, N_STRING, with a single, optional suffix
+ character (b, k, or m) to an integral value. Upon successful conversion,
+ return that value. If it cannot be converted, give a diagnostic and exit.
+ COUNT_LINES indicates whether N_STRING is a number of bytes or a number
+ of lines. It is used solely to give a more specific diagnostic. */
+
+static uintmax_t
+string_to_integer (bool count_lines, const char *n_string)
+{
+ strtol_error s_err;
+ uintmax_t n;
+
+ s_err = xstrtoumax (n_string, NULL, 10, &n, "bkm");
+
+ if (s_err == LONGINT_OVERFLOW)
+ {
+ error (EXIT_FAILURE, 0,
+ _("%s: %s is so large that it is not representable"), n_string,
+ count_lines ? _("number of lines") : _("number of bytes"));
+ }
+
+ if (s_err != LONGINT_OK)
+ {
+ error (EXIT_FAILURE, 0, "%s: %s", n_string,
+ (count_lines
+ ? _("invalid number of lines")
+ : _("invalid number of bytes")));
+ }
+
+ return n;
+}
+
+int
+main (int argc, char **argv)
+{
+ enum header_mode header_mode = multiple_files;
+ bool ok = true;
+ int c;
+ size_t i;
+
+ /* Number of items to print. */
+ uintmax_t n_units = DEFAULT_NUMBER;
+
+ /* If true, interpret the numeric argument as the number of lines.
+ Otherwise, interpret it as the number of bytes. */
+ bool count_lines = true;
+
+ /* Elide the specified number of lines or bytes, counting from
+ the end of the file. */
+ bool elide_from_end = false;
+
+ /* Initializer for file_list if no file-arguments
+ were specified on the command line. */
+ static char const *const default_file_list[] = {"-", NULL};
+ char const *const *file_list;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ have_read_stdin = false;
+
+ print_headers = false;
+
+ if (1 < argc && argv[1][0] == '-' && ISDIGIT (argv[1][1]))
+ {
+ char *a = argv[1];
+ char *n_string = ++a;
+ char *end_n_string;
+ char multiplier_char = 0;
+
+ /* Old option syntax; a dash, one or more digits, and one or
+ more option letters. Move past the number. */
+ do ++a;
+ while (ISDIGIT (*a));
+
+ /* Pointer to the byte after the last digit. */
+ end_n_string = a;
+
+ /* Parse any appended option letters. */
+ for (; *a; a++)
+ {
+ switch (*a)
+ {
+ case 'c':
+ count_lines = false;
+ multiplier_char = 0;
+ break;
+
+ case 'b':
+ case 'k':
+ case 'm':
+ count_lines = false;
+ multiplier_char = *a;
+ break;
+
+ case 'l':
+ count_lines = true;
+ break;
+
+ case 'q':
+ header_mode = never;
+ break;
+
+ case 'v':
+ header_mode = always;
+ break;
+
+ default:
+ error (0, 0, _("invalid trailing option -- %c"), *a);
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ /* Append the multiplier character (if any) onto the end of
+ the digit string. Then add NUL byte if necessary. */
+ *end_n_string = multiplier_char;
+ if (multiplier_char)
+ *(++end_n_string) = 0;
+
+ n_units = string_to_integer (count_lines, n_string);
+
+ /* Make the options we just parsed invisible to getopt. */
+ argv[1] = argv[0];
+ argv++;
+ argc--;
+ }
+
+ while ((c = getopt_long (argc, argv, "c:n:qv0123456789", long_options, NULL))
+ != -1)
+ {
+ switch (c)
+ {
+ case PRESUME_INPUT_PIPE_OPTION:
+ presume_input_pipe = true;
+ break;
+
+ case 'c':
+ count_lines = false;
+ elide_from_end = (*optarg == '-');
+ if (elide_from_end)
+ ++optarg;
+ n_units = string_to_integer (count_lines, optarg);
+ break;
+
+ case 'n':
+ count_lines = true;
+ elide_from_end = (*optarg == '-');
+ if (elide_from_end)
+ ++optarg;
+ n_units = string_to_integer (count_lines, optarg);
+ break;
+
+ case 'q':
+ header_mode = never;
+ break;
+
+ case 'v':
+ header_mode = always;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ if (ISDIGIT (c))
+ error (0, 0, _("invalid trailing option -- %c"), c);
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (header_mode == always
+ || (header_mode == multiple_files && optind < argc - 1))
+ print_headers = true;
+
+ if ( ! count_lines && elide_from_end && OFF_T_MAX < n_units)
+ {
+ char umax_buf[INT_BUFSIZE_BOUND (uintmax_t)];
+ error (EXIT_FAILURE, 0, _("%s: number of bytes is too large"),
+ umaxtostr (n_units, umax_buf));
+ }
+
+ file_list = (optind < argc
+ ? (char const *const *) &argv[optind]
+ : default_file_list);
+
+ if (O_BINARY && ! isatty (STDOUT_FILENO))
+ freopen (NULL, "wb", stdout);
+
+ for (i = 0; file_list[i]; ++i)
+ ok &= head_file (file_list[i], n_units, count_lines, elide_from_end);
+
+ if (have_read_stdin && close (STDIN_FILENO) < 0)
+ error (EXIT_FAILURE, errno, "-");
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/hostid.c b/src/hostid.c
new file mode 100644
index 0000000..090b8a0
--- /dev/null
+++ b/src/hostid.c
@@ -0,0 +1,96 @@
+/* print the hexadecimal identifier for the current host
+
+ Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+#include <getopt.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "long-options.h"
+#include "error.h"
+#include "quote.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "hostid"
+
+#define AUTHORS "Jim Meyering"
+
+/* The name this program was run with, for error messages. */
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s\n\
+ or: %s OPTION\n\
+Print the numeric identifier (in hexadecimal) for the current host.\n\
+\n\
+"),
+ program_name, program_name);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ unsigned int id;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "", NULL, NULL) != -1)
+ usage (EXIT_FAILURE);
+
+ if (optind < argc)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind]));
+ usage (EXIT_FAILURE);
+ }
+
+ id = gethostid ();
+
+ /* POSIX says gethostid returns a "32-bit identifier" but is silent
+ whether it's sign-extended. Turn off any sign-extension. This
+ is a no-op unless unsigned int is wider than 32 bits. */
+ id &= 0xffffffff;
+
+ printf ("%08x\n", id);
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/hostname.c b/src/hostname.c
new file mode 100644
index 0000000..f6748a6
--- /dev/null
+++ b/src/hostname.c
@@ -0,0 +1,125 @@
+/* hostname - set or print the name of current host system
+ Copyright (C) 1994-1997, 1999-2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+#include <getopt.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "long-options.h"
+#include "error.h"
+#include "quote.h"
+#include "xgethostname.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "hostname"
+
+#define AUTHORS "Jim Meyering"
+
+#if HAVE_SETHOSTNAME && !defined sethostname
+int sethostname ();
+#endif
+
+#if !defined HAVE_SETHOSTNAME && defined HAVE_SYSINFO && \
+ defined HAVE_SYS_SYSTEMINFO_H
+# include <sys/systeminfo.h>
+
+int
+sethostname (char *name, size_t namelen)
+{
+ /* Using sysinfo() is the SVR4 mechanism to set a hostname. */
+ return (sysinfo (SI_SET_HOSTNAME, name, namelen) < 0 ? -1 : 0);
+}
+
+# define HAVE_SETHOSTNAME 1 /* Now we have it... */
+#endif
+
+/* The name this program was run with. */
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [NAME]\n\
+ or: %s OPTION\n\
+Print or set the hostname of the current system.\n\
+\n\
+"),
+ program_name, program_name);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ char *hostname;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "", NULL, NULL) != -1)
+ usage (EXIT_FAILURE);
+
+ if (argc == optind + 1)
+ {
+#ifdef HAVE_SETHOSTNAME
+ /* Set hostname to operand. */
+ char const *name = argv[optind];
+ if (sethostname (name, strlen (name)) != 0)
+ error (EXIT_FAILURE, errno, _("cannot set name to %s"), quote (name));
+#else
+ error (EXIT_FAILURE, 0,
+ _("cannot set hostname; this system lacks the functionality"));
+#endif
+ }
+
+ if (argc <= optind)
+ {
+ hostname = xgethostname ();
+ if (hostname == NULL)
+ error (EXIT_FAILURE, errno, _("cannot determine hostname"));
+ printf ("%s\n", hostname);
+ }
+
+ if (optind + 1 < argc)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind + 1]));
+ usage (EXIT_FAILURE);
+ }
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/id.c b/src/id.c
new file mode 100644
index 0000000..7abb3e5
--- /dev/null
+++ b/src/id.c
@@ -0,0 +1,388 @@
+/* id -- print real and effective UIDs and GIDs
+ Copyright (C) 1989-2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Arnold Robbins.
+ Major rewrite by David MacKenzie, djm@gnu.ai.mit.edu. */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <grp.h>
+#include <getopt.h>
+
+#include "system.h"
+#include "error.h"
+#include "quote.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "id"
+
+#define AUTHORS "Arnold Robbins", "David MacKenzie"
+
+int getugroups ();
+
+static void print_user (uid_t uid);
+static void print_group (gid_t gid);
+static void print_group_list (const char *username);
+static void print_full_info (const char *username);
+
+/* The name this program was run with. */
+char *program_name;
+
+/* If true, output user/group name instead of ID number. -n */
+static bool use_name = false;
+
+/* The real and effective IDs of the user to print. */
+static uid_t ruid, euid;
+static gid_t rgid, egid;
+
+/* True unless errors have been encountered. */
+static bool ok = true;
+
+static struct option const longopts[] =
+{
+ {"group", no_argument, NULL, 'g'},
+ {"groups", no_argument, NULL, 'G'},
+ {"name", no_argument, NULL, 'n'},
+ {"real", no_argument, NULL, 'r'},
+ {"user", no_argument, NULL, 'u'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]... [USERNAME]\n"), program_name);
+ fputs (_("\
+Print information for USERNAME, or the current user.\n\
+\n\
+ -a ignore, for compatibility with other versions\n\
+ -g, --group print only the effective group ID\n\
+ -G, --groups print all group IDs\n\
+ -n, --name print a name instead of a number, for -ugG\n\
+ -r, --real print the real ID instead of the effective ID, with -ugG\n\
+ -u, --user print only the effective user ID\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+Without any OPTION, print some useful set of identified information.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ int optc;
+
+ /* If true, output the list of all group IDs. -G */
+ bool just_group_list = false;
+ /* If true, output only the group ID(s). -g */
+ bool just_group = false;
+ /* If true, output real UID/GID instead of default effective UID/GID. -r */
+ bool use_real = false;
+ /* If true, output only the user ID(s). -u */
+ bool just_user = false;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ while ((optc = getopt_long (argc, argv, "agnruG", longopts, NULL)) != -1)
+ {
+ switch (optc)
+ {
+ case 'a':
+ /* Ignore -a, for compatibility with SVR4. */
+ break;
+ case 'g':
+ just_group = true;
+ break;
+ case 'n':
+ use_name = true;
+ break;
+ case 'r':
+ use_real = true;
+ break;
+ case 'u':
+ just_user = true;
+ break;
+ case 'G':
+ just_group_list = true;
+ break;
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (just_user + just_group + just_group_list > 1)
+ error (EXIT_FAILURE, 0, _("cannot print only user and only group"));
+
+ if (just_user + just_group + just_group_list == 0 && (use_real | use_name))
+ error (EXIT_FAILURE, 0,
+ _("cannot print only names or real IDs in default format"));
+
+ if (argc - optind > 1)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind + 1]));
+ usage (EXIT_FAILURE);
+ }
+
+ if (argc - optind == 1)
+ {
+ struct passwd *pwd = getpwnam (argv[optind]);
+ if (pwd == NULL)
+ error (EXIT_FAILURE, 0, _("%s: No such user"), argv[optind]);
+ ruid = euid = pwd->pw_uid;
+ rgid = egid = pwd->pw_gid;
+ }
+ else
+ {
+ euid = geteuid ();
+ ruid = getuid ();
+ egid = getegid ();
+ rgid = getgid ();
+ }
+
+ if (just_user)
+ print_user (use_real ? ruid : euid);
+ else if (just_group)
+ print_group (use_real ? rgid : egid);
+ else if (just_group_list)
+ print_group_list (argv[optind]);
+ else
+ print_full_info (argv[optind]);
+ putchar ('\n');
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+
+/* Print the name or value of user ID UID. */
+
+static void
+print_user (uid_t uid)
+{
+ struct passwd *pwd = NULL;
+
+ if (use_name)
+ {
+ pwd = getpwuid (uid);
+ if (pwd == NULL)
+ {
+ error (0, 0, _("cannot find name for user ID %lu"),
+ (unsigned long int) uid);
+ ok = false;
+ }
+ }
+
+ if (pwd == NULL)
+ printf ("%lu", (unsigned long int) uid);
+ else
+ printf ("%s", pwd->pw_name);
+}
+
+/* Print the name or value of group ID GID. */
+
+static void
+print_group (gid_t gid)
+{
+ struct group *grp = NULL;
+
+ if (use_name)
+ {
+ grp = getgrgid (gid);
+ if (grp == NULL)
+ {
+ error (0, 0, _("cannot find name for group ID %lu"),
+ (unsigned long int) gid);
+ ok = false;
+ }
+ }
+
+ if (grp == NULL)
+ printf ("%lu", (unsigned long int) gid);
+ else
+ printf ("%s", grp->gr_name);
+}
+
+#if HAVE_GETGROUPS
+
+/* FIXME: document */
+
+static bool
+xgetgroups (const char *username, gid_t gid, int *n_groups,
+ GETGROUPS_T **groups)
+{
+ int max_n_groups;
+ int ng;
+ GETGROUPS_T *g = NULL;
+
+ if (!username)
+ max_n_groups = getgroups (0, NULL);
+ else
+ max_n_groups = getugroups (0, NULL, username, gid);
+
+ if (max_n_groups < 0)
+ ng = -1;
+ else
+ {
+ g = xnmalloc (max_n_groups, sizeof *g);
+ if (!username)
+ ng = getgroups (max_n_groups, g);
+ else
+ ng = getugroups (max_n_groups, g, username, gid);
+ }
+
+ if (ng < 0)
+ {
+ error (0, errno, _("cannot get supplemental group list"));
+ free (g);
+ return false;
+ }
+ else
+ {
+ *n_groups = ng;
+ *groups = g;
+ return true;
+ }
+}
+
+#endif /* HAVE_GETGROUPS */
+
+/* Print all of the distinct groups the user is in. */
+
+static void
+print_group_list (const char *username)
+{
+ struct passwd *pwd;
+
+ pwd = getpwuid (ruid);
+ if (pwd == NULL)
+ ok = false;
+
+ print_group (rgid);
+ if (egid != rgid)
+ {
+ putchar (' ');
+ print_group (egid);
+ }
+
+#if HAVE_GETGROUPS
+ {
+ int n_groups;
+ GETGROUPS_T *groups;
+ int i;
+
+ if (! xgetgroups (username, (pwd ? pwd->pw_gid : (gid_t) -1),
+ &n_groups, &groups))
+ {
+ ok = false;
+ return;
+ }
+
+ for (i = 0; i < n_groups; i++)
+ if (groups[i] != rgid && groups[i] != egid)
+ {
+ putchar (' ');
+ print_group (groups[i]);
+ }
+ free (groups);
+ }
+#endif /* HAVE_GETGROUPS */
+}
+
+/* Print all of the info about the user's user and group IDs. */
+
+static void
+print_full_info (const char *username)
+{
+ struct passwd *pwd;
+ struct group *grp;
+
+ printf ("uid=%lu", (unsigned long int) ruid);
+ pwd = getpwuid (ruid);
+ if (pwd)
+ printf ("(%s)", pwd->pw_name);
+
+ printf (" gid=%lu", (unsigned long int) rgid);
+ grp = getgrgid (rgid);
+ if (grp)
+ printf ("(%s)", grp->gr_name);
+
+ if (euid != ruid)
+ {
+ printf (" euid=%lu", (unsigned long int) euid);
+ pwd = getpwuid (euid);
+ if (pwd)
+ printf ("(%s)", pwd->pw_name);
+ }
+
+ if (egid != rgid)
+ {
+ printf (" egid=%lu", (unsigned long int) egid);
+ grp = getgrgid (egid);
+ if (grp)
+ printf ("(%s)", grp->gr_name);
+ }
+
+#if HAVE_GETGROUPS
+ {
+ int n_groups;
+ GETGROUPS_T *groups;
+ int i;
+
+ if (! xgetgroups (username, (pwd ? pwd->pw_gid : (gid_t) -1),
+ &n_groups, &groups))
+ {
+ ok = false;
+ return;
+ }
+
+ if (n_groups > 0)
+ fputs (_(" groups="), stdout);
+ for (i = 0; i < n_groups; i++)
+ {
+ if (i > 0)
+ putchar (',');
+ printf ("%lu", (unsigned long int) groups[i]);
+ grp = getgrgid (groups[i]);
+ if (grp)
+ printf ("(%s)", grp->gr_name);
+ }
+ free (groups);
+ }
+#endif /* HAVE_GETGROUPS */
+}
diff --git a/src/install.c b/src/install.c
new file mode 100644
index 0000000..0457751
--- /dev/null
+++ b/src/install.c
@@ -0,0 +1,708 @@
+/* install - copy files and set attributes
+ Copyright (C) 89, 90, 91, 1995-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David MacKenzie <djm@gnu.ai.mit.edu> */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+#include <signal.h>
+#include <pwd.h>
+#include <grp.h>
+
+#include "system.h"
+#include "backupfile.h"
+#include "error.h"
+#include "cp-hash.h"
+#include "copy.h"
+#include "filenamecat.h"
+#include "mkancesdirs.h"
+#include "mkdir-p.h"
+#include "modechange.h"
+#include "quote.h"
+#include "savewd.h"
+#include "stat-time.h"
+#include "utimens.h"
+#include "xstrtol.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "install"
+
+#define AUTHORS "David MacKenzie"
+
+#if HAVE_SYS_WAIT_H
+# include <sys/wait.h>
+#endif
+
+#if ! HAVE_ENDGRENT
+# define endgrent() ((void) 0)
+#endif
+
+#if ! HAVE_ENDPWENT
+# define endpwent() ((void) 0)
+#endif
+
+/* Initial number of entries in each hash table entry's table of inodes. */
+#define INITIAL_HASH_MODULE 100
+
+/* Initial number of entries in the inode hash table. */
+#define INITIAL_ENTRY_TAB_SIZE 70
+
+/* Number of bytes of a file to copy at a time. */
+#define READ_SIZE (32 * 1024)
+
+static bool change_timestamps (struct stat const *from_sb, char const *to);
+static bool change_attributes (char const *name);
+static bool copy_file (const char *from, const char *to,
+ const struct cp_options *x);
+static bool install_file_in_file_parents (char const *from, char *to,
+ struct cp_options *x);
+static bool install_file_in_dir (const char *from, const char *to_dir,
+ const struct cp_options *x);
+static bool install_file_in_file (const char *from, const char *to,
+ const struct cp_options *x);
+static void get_ids (void);
+static void strip (char const *name);
+static void announce_mkdir (char const *dir, void *options);
+static int make_ancestor (char const *dir, char const *component,
+ void *options);
+void usage (int status);
+
+/* The name this program was run with, for error messages. */
+char *program_name;
+
+/* The user name that will own the files, or NULL to make the owner
+ the current user ID. */
+static char *owner_name;
+
+/* The user ID corresponding to `owner_name'. */
+static uid_t owner_id;
+
+/* The group name that will own the files, or NULL to make the group
+ the current group ID. */
+static char *group_name;
+
+/* The group ID corresponding to `group_name'. */
+static gid_t group_id;
+
+#define DEFAULT_MODE (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)
+
+/* The file mode bits to which non-directory files will be set. The umask has
+ no effect. */
+static mode_t mode = DEFAULT_MODE;
+
+/* Similar, but for directories. */
+static mode_t dir_mode = DEFAULT_MODE;
+
+/* The file mode bits that the user cares about. This should be a
+ superset of DIR_MODE and a subset of CHMOD_MODE_BITS. This matters
+ for directories, since otherwise directories may keep their S_ISUID
+ or S_ISGID bits. */
+static mode_t dir_mode_bits = CHMOD_MODE_BITS;
+
+/* If true, strip executable files after copying them. */
+static bool strip_files;
+
+/* If true, install a directory instead of a regular file. */
+static bool dir_arg;
+
+static struct option const long_options[] =
+{
+ {"backup", optional_argument, NULL, 'b'},
+ {"directory", no_argument, NULL, 'd'},
+ {"group", required_argument, NULL, 'g'},
+ {"mode", required_argument, NULL, 'm'},
+ {"no-target-directory", no_argument, NULL, 'T'},
+ {"owner", required_argument, NULL, 'o'},
+ {"preserve-timestamps", no_argument, NULL, 'p'},
+ {"strip", no_argument, NULL, 's'},
+ {"suffix", required_argument, NULL, 'S'},
+ {"target-directory", required_argument, NULL, 't'},
+ {"verbose", no_argument, NULL, 'v'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+static void
+cp_option_init (struct cp_options *x)
+{
+ x->copy_as_regular = true;
+ x->dereference = DEREF_ALWAYS;
+ x->unlink_dest_before_opening = true;
+ x->unlink_dest_after_failed_open = false;
+ x->hard_link = false;
+ x->interactive = I_UNSPECIFIED;
+ x->move_mode = false;
+ x->chown_privileges = chown_privileges ();
+ x->one_file_system = false;
+ x->preserve_ownership = false;
+ x->preserve_links = false;
+ x->preserve_mode = false;
+ x->preserve_timestamps = false;
+ x->require_preserve = false;
+ x->recursive = false;
+ x->sparse_mode = SPARSE_AUTO;
+ x->symbolic_link = false;
+ x->backup_type = no_backups;
+
+ /* Create destination files initially writable so we can run strip on them.
+ Although GNU strip works fine on read-only files, some others
+ would fail. */
+ x->set_mode = true;
+ x->mode = S_IRUSR | S_IWUSR;
+ x->stdin_tty = false;
+
+ x->update = false;
+ x->verbose = false;
+ x->dest_info = NULL;
+ x->src_info = NULL;
+}
+
+/* FILE is the last operand of this command. Return true if FILE is a
+ directory. But report an error there is a problem accessing FILE,
+ or if FILE does not exist but would have to refer to an existing
+ directory if it referred to anything at all. */
+
+static bool
+target_directory_operand (char const *file)
+{
+ char const *b = last_component (file);
+ size_t blen = strlen (b);
+ bool looks_like_a_dir = (blen == 0 || ISSLASH (b[blen - 1]));
+ struct stat st;
+ int err = (stat (file, &st) == 0 ? 0 : errno);
+ bool is_a_dir = !err && S_ISDIR (st.st_mode);
+ if (err && err != ENOENT)
+ error (EXIT_FAILURE, err, _("accessing %s"), quote (file));
+ if (is_a_dir < looks_like_a_dir)
+ error (EXIT_FAILURE, err, _("target %s is not a directory"), quote (file));
+ return is_a_dir;
+}
+
+/* Process a command-line file name, for the -d option. */
+static int
+process_dir (char *dir, struct savewd *wd, void *options)
+{
+ return (make_dir_parents (dir, wd,
+ make_ancestor, options,
+ dir_mode, announce_mkdir,
+ dir_mode_bits, owner_id, group_id, false)
+ ? EXIT_SUCCESS
+ : EXIT_FAILURE);
+}
+
+int
+main (int argc, char **argv)
+{
+ int optc;
+ int exit_status = EXIT_SUCCESS;
+ const char *specified_mode = NULL;
+ bool make_backups = false;
+ char *backup_suffix_string;
+ char *version_control_string = NULL;
+ bool mkdir_and_install = false;
+ struct cp_options x;
+ char const *target_directory = NULL;
+ bool no_target_directory = false;
+ int n_files;
+ char **file;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ cp_option_init (&x);
+
+ owner_name = NULL;
+ group_name = NULL;
+ strip_files = false;
+ dir_arg = false;
+ umask (0);
+
+ /* FIXME: consider not calling getenv for SIMPLE_BACKUP_SUFFIX unless
+ we'll actually use backup_suffix_string. */
+ backup_suffix_string = getenv ("SIMPLE_BACKUP_SUFFIX");
+
+ while ((optc = getopt_long (argc, argv, "bcsDdg:m:o:pt:TvS:", long_options,
+ NULL)) != -1)
+ {
+ switch (optc)
+ {
+ case 'b':
+ make_backups = true;
+ if (optarg)
+ version_control_string = optarg;
+ break;
+ case 'c':
+ break;
+ case 's':
+ strip_files = true;
+#ifdef SIGCHLD
+ /* System V fork+wait does not work if SIGCHLD is ignored. */
+ signal (SIGCHLD, SIG_DFL);
+#endif
+ break;
+ case 'd':
+ dir_arg = true;
+ break;
+ case 'D':
+ mkdir_and_install = true;
+ break;
+ case 'v':
+ x.verbose = true;
+ break;
+ case 'g':
+ group_name = optarg;
+ break;
+ case 'm':
+ specified_mode = optarg;
+ break;
+ case 'o':
+ owner_name = optarg;
+ break;
+ case 'p':
+ x.preserve_timestamps = true;
+ break;
+ case 'S':
+ make_backups = true;
+ backup_suffix_string = optarg;
+ break;
+ case 't':
+ if (target_directory)
+ error (EXIT_FAILURE, 0,
+ _("multiple target directories specified"));
+ else
+ {
+ struct stat st;
+ if (stat (optarg, &st) != 0)
+ error (EXIT_FAILURE, errno, _("accessing %s"), quote (optarg));
+ if (! S_ISDIR (st.st_mode))
+ error (EXIT_FAILURE, 0, _("target %s is not a directory"),
+ quote (optarg));
+ }
+ target_directory = optarg;
+ break;
+ case 'T':
+ no_target_directory = true;
+ break;
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ /* Check for invalid combinations of arguments. */
+ if (dir_arg & strip_files)
+ error (EXIT_FAILURE, 0,
+ _("the strip option may not be used when installing a directory"));
+ if (dir_arg && target_directory)
+ error (EXIT_FAILURE, 0,
+ _("target directory not allowed when installing a directory"));
+
+ if (backup_suffix_string)
+ simple_backup_suffix = xstrdup (backup_suffix_string);
+
+ x.backup_type = (make_backups
+ ? xget_version (_("backup type"),
+ version_control_string)
+ : no_backups);
+
+ n_files = argc - optind;
+ file = argv + optind;
+
+ if (n_files <= ! (dir_arg || target_directory))
+ {
+ if (n_files <= 0)
+ error (0, 0, _("missing file operand"));
+ else
+ error (0, 0, _("missing destination file operand after %s"),
+ quote (file[0]));
+ usage (EXIT_FAILURE);
+ }
+
+ if (no_target_directory)
+ {
+ if (target_directory)
+ error (EXIT_FAILURE, 0,
+ _("Cannot combine --target-directory (-t) "
+ "and --no-target-directory (-T)"));
+ if (2 < n_files)
+ {
+ error (0, 0, _("extra operand %s"), quote (file[2]));
+ usage (EXIT_FAILURE);
+ }
+ }
+ else if (! (dir_arg || target_directory))
+ {
+ if (2 <= n_files && target_directory_operand (file[n_files - 1]))
+ target_directory = file[--n_files];
+ else if (2 < n_files)
+ error (EXIT_FAILURE, 0, _("target %s is not a directory"),
+ quote (file[n_files - 1]));
+ }
+
+ if (specified_mode)
+ {
+ struct mode_change *change = mode_compile (specified_mode);
+ if (!change)
+ error (EXIT_FAILURE, 0, _("invalid mode %s"), quote (specified_mode));
+ mode = mode_adjust (0, false, 0, change, NULL);
+ dir_mode = mode_adjust (0, true, 0, change, &dir_mode_bits);
+ free (change);
+ }
+
+ get_ids ();
+
+ if (dir_arg)
+ exit_status = savewd_process_files (n_files, file, process_dir, &x);
+ else
+ {
+ /* FIXME: it's a little gross that this initialization is
+ required by copy.c::copy. */
+ hash_init ();
+
+ if (!target_directory)
+ {
+ if (! (mkdir_and_install
+ ? install_file_in_file_parents (file[0], file[1], &x)
+ : install_file_in_file (file[0], file[1], &x)))
+ exit_status = EXIT_FAILURE;
+ }
+ else
+ {
+ int i;
+ dest_info_init (&x);
+ for (i = 0; i < n_files; i++)
+ if (! install_file_in_dir (file[i], target_directory, &x))
+ exit_status = EXIT_FAILURE;
+ }
+ }
+
+ exit (exit_status);
+}
+
+/* Copy file FROM onto file TO, creating any missing parent directories of TO.
+ Return true if successful. */
+
+static bool
+install_file_in_file_parents (char const *from, char *to,
+ struct cp_options *x)
+{
+ bool save_working_directory =
+ ! (IS_ABSOLUTE_FILE_NAME (from) && IS_ABSOLUTE_FILE_NAME (to));
+ int status = EXIT_SUCCESS;
+
+ struct savewd wd;
+ savewd_init (&wd);
+ if (! save_working_directory)
+ savewd_finish (&wd);
+
+ if (mkancesdirs (to, &wd, make_ancestor, x) == -1)
+ {
+ error (0, errno, _("cannot create directory %s"), to);
+ status = EXIT_FAILURE;
+ }
+
+ if (save_working_directory)
+ {
+ int restore_result = savewd_restore (&wd, status);
+ int restore_errno = errno;
+ savewd_finish (&wd);
+ if (EXIT_SUCCESS < restore_result)
+ return false;
+ if (restore_result < 0 && status == EXIT_SUCCESS)
+ {
+ error (0, restore_errno, _("cannot create directory %s"), to);
+ return false;
+ }
+ }
+
+ return (status == EXIT_SUCCESS && install_file_in_file (from, to, x));
+}
+
+/* Copy file FROM onto file TO and give TO the appropriate
+ attributes.
+ Return true if successful. */
+
+static bool
+install_file_in_file (const char *from, const char *to,
+ const struct cp_options *x)
+{
+ struct stat from_sb;
+ if (x->preserve_timestamps && stat (from, &from_sb) != 0)
+ {
+ error (0, errno, _("cannot stat %s"), quote (from));
+ return false;
+ }
+ if (! copy_file (from, to, x))
+ return false;
+ if (strip_files)
+ strip (to);
+ if (x->preserve_timestamps && (strip_files || ! S_ISREG (from_sb.st_mode))
+ && ! change_timestamps (&from_sb, to))
+ return false;
+ return change_attributes (to);
+}
+
+/* Copy file FROM into directory TO_DIR, keeping its same name,
+ and give the copy the appropriate attributes.
+ Return true if successful. */
+
+static bool
+install_file_in_dir (const char *from, const char *to_dir,
+ const struct cp_options *x)
+{
+ const char *from_base = last_component (from);
+ char *to = file_name_concat (to_dir, from_base, NULL);
+ bool ret = install_file_in_file (from, to, x);
+ free (to);
+ return ret;
+}
+
+/* Copy file FROM onto file TO, creating TO if necessary.
+ Return true if successful. */
+
+static bool
+copy_file (const char *from, const char *to, const struct cp_options *x)
+{
+ bool copy_into_self;
+
+ /* Allow installing from non-regular files like /dev/null.
+ Charles Karney reported that some Sun version of install allows that
+ and that sendmail's installation process relies on the behavior.
+ However, since !x->recursive, the call to "copy" will fail if FROM
+ is a directory. */
+
+ return copy (from, to, false, x, &copy_into_self, NULL);
+}
+
+/* Set the attributes of file or directory NAME.
+ Return true if successful. */
+
+static bool
+change_attributes (char const *name)
+{
+ /* chown must precede chmod because on some systems,
+ chown clears the set[ug]id bits for non-superusers,
+ resulting in incorrect permissions.
+ On System V, users can give away files with chown and then not
+ be able to chmod them. So don't give files away.
+
+ We don't normally ignore errors from chown because the idea of
+ the install command is that the file is supposed to end up with
+ precisely the attributes that the user specified (or defaulted).
+ If the file doesn't end up with the group they asked for, they'll
+ want to know. */
+
+ if (! (owner_id == (uid_t) -1 && group_id == (gid_t) -1)
+ && chown (name, owner_id, group_id) != 0)
+ error (0, errno, _("cannot change ownership of %s"), quote (name));
+ else if (chmod (name, mode) != 0)
+ error (0, errno, _("cannot change permissions of %s"), quote (name));
+ else
+ return true;
+
+ return false;
+}
+
+/* Set the timestamps of file TO to match those of file FROM.
+ Return true if successful. */
+
+static bool
+change_timestamps (struct stat const *from_sb, char const *to)
+{
+ struct timespec timespec[2];
+ timespec[0] = get_stat_atime (from_sb);
+ timespec[1] = get_stat_mtime (from_sb);
+
+ if (utimens (to, timespec))
+ {
+ error (0, errno, _("cannot set time stamps for %s"), quote (to));
+ return false;
+ }
+ return true;
+}
+
+/* Strip the symbol table from the file NAME.
+ We could dig the magic number out of the file first to
+ determine whether to strip it, but the header files and
+ magic numbers vary so much from system to system that making
+ it portable would be very difficult. Not worth the effort. */
+
+static void
+strip (char const *name)
+{
+ int status;
+ pid_t pid = fork ();
+
+ switch (pid)
+ {
+ case -1:
+ error (EXIT_FAILURE, errno, _("fork system call failed"));
+ break;
+ case 0: /* Child. */
+ execlp ("strip", "strip", name, NULL);
+ error (EXIT_FAILURE, errno, _("cannot run strip"));
+ break;
+ default: /* Parent. */
+ if (waitpid (pid, &status, 0) < 0)
+ error (EXIT_FAILURE, errno, _("waiting for strip"));
+ else if (! WIFEXITED (status) || WEXITSTATUS (status))
+ error (EXIT_FAILURE, 0, _("strip process terminated abnormally"));
+ break;
+ }
+}
+
+/* Initialize the user and group ownership of the files to install. */
+
+static void
+get_ids (void)
+{
+ struct passwd *pw;
+ struct group *gr;
+
+ if (owner_name)
+ {
+ pw = getpwnam (owner_name);
+ if (pw == NULL)
+ {
+ unsigned long int tmp;
+ if (xstrtoul (owner_name, NULL, 0, &tmp, NULL) != LONGINT_OK
+ || UID_T_MAX < tmp)
+ error (EXIT_FAILURE, 0, _("invalid user %s"), quote (owner_name));
+ owner_id = tmp;
+ }
+ else
+ owner_id = pw->pw_uid;
+ endpwent ();
+ }
+ else
+ owner_id = (uid_t) -1;
+
+ if (group_name)
+ {
+ gr = getgrnam (group_name);
+ if (gr == NULL)
+ {
+ unsigned long int tmp;
+ if (xstrtoul (group_name, NULL, 0, &tmp, NULL) != LONGINT_OK
+ || GID_T_MAX < tmp)
+ error (EXIT_FAILURE, 0, _("invalid group %s"), quote (group_name));
+ group_id = tmp;
+ }
+ else
+ group_id = gr->gr_gid;
+ endgrent ();
+ }
+ else
+ group_id = (gid_t) -1;
+}
+
+/* Report that directory DIR was made, if OPTIONS requests this. */
+static void
+announce_mkdir (char const *dir, void *options)
+{
+ struct cp_options const *x = options;
+ if (x->verbose)
+ error (0, 0, _("creating directory %s"), quote (dir));
+}
+
+/* Make ancestor directory DIR, whose last file name component is
+ COMPONENT, with options OPTIONS. Assume the working directory is
+ COMPONENT's parent. */
+static int
+make_ancestor (char const *dir, char const *component, void *options)
+{
+ int r = mkdir (component, DEFAULT_MODE);
+ if (r == 0)
+ announce_mkdir (dir, options);
+ return r;
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [-T] SOURCE DEST\n\
+ or: %s [OPTION]... SOURCE... DIRECTORY\n\
+ or: %s [OPTION]... -t DIRECTORY SOURCE...\n\
+ or: %s [OPTION]... -d DIRECTORY...\n\
+"),
+ program_name, program_name, program_name, program_name);
+ fputs (_("\
+In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to\n\
+the existing DIRECTORY, while setting permission modes and owner/group.\n\
+In the 4th form, create all components of the given DIRECTORY(ies).\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ --backup[=CONTROL] make a backup of each existing destination file\n\
+ -b like --backup but does not accept an argument\n\
+ -c (ignored)\n\
+ -d, --directory treat all arguments as directory names; create all\n\
+ components of the specified directories\n\
+"), stdout);
+ fputs (_("\
+ -D create all leading components of DEST except the last,\n\
+ then copy SOURCE to DEST\n\
+ -g, --group=GROUP set group ownership, instead of process' current group\n\
+ -m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-x\n\
+ -o, --owner=OWNER set ownership (super-user only)\n\
+"), stdout);
+ fputs (_("\
+ -p, --preserve-timestamps apply access/modification times of SOURCE files\n\
+ to corresponding destination files\n\
+ -s, --strip strip symbol tables\n\
+ -S, --suffix=SUFFIX override the usual backup suffix\n\
+ -t, --target-directory=DIRECTORY copy all SOURCE arguments into DIRECTORY\n\
+ -T, --no-target-directory treat DEST as a normal file\n\
+ -v, --verbose print the name of each directory as it is created\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n\
+The version control method may be selected via the --backup option or through\n\
+the VERSION_CONTROL environment variable. Here are the values:\n\
+\n\
+"), stdout);
+ fputs (_("\
+ none, off never make backups (even if --backup is given)\n\
+ numbered, t make numbered backups\n\
+ existing, nil numbered if numbered backups exist, simple otherwise\n\
+ simple, never always make simple backups\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
diff --git a/src/join.c b/src/join.c
new file mode 100644
index 0000000..b113c54
--- /dev/null
+++ b/src/join.c
@@ -0,0 +1,940 @@
+/* join - join lines of two files on a common field
+ Copyright (C) 91, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written by Mike Haertel, mike@gnu.ai.mit.edu. */
+
+#include <config.h>
+
+#include <assert.h>
+#include <sys/types.h>
+#include <getopt.h>
+
+#include "system.h"
+#include "error.h"
+#include "hard-locale.h"
+#include "linebuffer.h"
+#include "memcasecmp.h"
+#include "quote.h"
+#include "stdio--.h"
+#include "xmemcoll.h"
+#include "xstrtol.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "join"
+
+#define AUTHORS "Mike Haertel"
+
+#define join system_join
+
+/* An element of the list identifying which fields to print for each
+ output line. */
+struct outlist
+ {
+ /* File number: 0, 1, or 2. 0 means use the join field.
+ 1 means use the first file argument, 2 the second. */
+ int file;
+
+ /* Field index (zero-based), specified only when FILE is 1 or 2. */
+ size_t field;
+
+ struct outlist *next;
+ };
+
+/* A field of a line. */
+struct field
+ {
+ char *beg; /* First character in field. */
+ size_t len; /* The length of the field. */
+ };
+
+/* A line read from an input file. */
+struct line
+ {
+ struct linebuffer buf; /* The line itself. */
+ size_t nfields; /* Number of elements in `fields'. */
+ size_t nfields_allocated; /* Number of elements allocated for `fields'. */
+ struct field *fields;
+ };
+
+/* One or more consecutive lines read from a file that all have the
+ same join field value. */
+struct seq
+ {
+ size_t count; /* Elements used in `lines'. */
+ size_t alloc; /* Elements allocated in `lines'. */
+ struct line *lines;
+ };
+
+/* The name this program was run with. */
+char *program_name;
+
+/* True if the LC_COLLATE locale is hard. */
+static bool hard_LC_COLLATE;
+
+/* If nonzero, print unpairable lines in file 1 or 2. */
+static bool print_unpairables_1, print_unpairables_2;
+
+/* If nonzero, print pairable lines. */
+static bool print_pairables;
+
+/* Empty output field filler. */
+static char const *empty_filler;
+
+/* Field to join on; SIZE_MAX means they haven't been determined yet. */
+static size_t join_field_1 = SIZE_MAX;
+static size_t join_field_2 = SIZE_MAX;
+
+/* List of fields to print. */
+static struct outlist outlist_head;
+
+/* Last element in `outlist', where a new element can be added. */
+static struct outlist *outlist_end = &outlist_head;
+
+/* Tab character separating fields. If negative, fields are separated
+ by any nonempty string of blanks, otherwise by exactly one
+ tab character whose value (when cast to unsigned char) equals TAB. */
+static int tab = -1;
+
+static struct option const longopts[] =
+{
+ {"ignore-case", no_argument, NULL, 'i'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+/* Used to print non-joining lines */
+static struct line uni_blank;
+
+/* If nonzero, ignore case when comparing join fields. */
+static bool ignore_case;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... FILE1 FILE2\n\
+"),
+ program_name);
+ fputs (_("\
+For each pair of input lines with identical join fields, write a line to\n\
+standard output. The default join field is the first, delimited\n\
+by whitespace. When FILE1 or FILE2 (not both) is -, read standard input.\n\
+\n\
+ -a FILENUM print unpairable lines coming from file FILENUM, where\n\
+ FILENUM is 1 or 2, corresponding to FILE1 or FILE2\n\
+ -e EMPTY replace missing input fields with EMPTY\n\
+"), stdout);
+ fputs (_("\
+ -i, --ignore-case ignore differences in case when comparing fields\n\
+ -j FIELD equivalent to `-1 FIELD -2 FIELD'\n\
+ -o FORMAT obey FORMAT while constructing output line\n\
+ -t CHAR use CHAR as input and output field separator\n\
+"), stdout);
+ fputs (_("\
+ -v FILENUM like -a FILENUM, but suppress joined output lines\n\
+ -1 FIELD join on this FIELD of file 1\n\
+ -2 FIELD join on this FIELD of file 2\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+Unless -t CHAR is given, leading blanks separate fields and are ignored,\n\
+else fields are separated by CHAR. Any FIELD is a field number counted\n\
+from 1. FORMAT is one or more comma or blank separated specifications,\n\
+each being `FILENUM.FIELD' or `0'. Default FORMAT outputs the join field,\n\
+the remaining fields from FILE1, the remaining fields from FILE2, all\n\
+separated by CHAR.\n\
+\n\
+Important: FILE1 and FILE2 must be sorted on the join fields.\n\
+E.g., use `sort -k 1b,1' if `join' has no options.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Record a field in LINE, with location FIELD and size LEN. */
+
+static void
+extract_field (struct line *line, char *field, size_t len)
+{
+ if (line->nfields >= line->nfields_allocated)
+ {
+ line->fields = X2NREALLOC (line->fields, &line->nfields_allocated);
+ }
+ line->fields[line->nfields].beg = field;
+ line->fields[line->nfields].len = len;
+ ++(line->nfields);
+}
+
+/* Fill in the `fields' structure in LINE. */
+
+static void
+xfields (struct line *line)
+{
+ char *ptr = line->buf.buffer;
+ char const *lim = ptr + line->buf.length - 1;
+
+ if (ptr == lim)
+ return;
+
+ if (0 <= tab)
+ {
+ char *sep;
+ for (; (sep = memchr (ptr, tab, lim - ptr)) != NULL; ptr = sep + 1)
+ extract_field (line, ptr, sep - ptr);
+ }
+ else
+ {
+ /* Skip leading blanks before the first field. */
+ while (isblank (to_uchar (*ptr)))
+ if (++ptr == lim)
+ return;
+
+ do
+ {
+ char *sep;
+ for (sep = ptr + 1; sep != lim && ! isblank (to_uchar (*sep)); sep++)
+ continue;
+ extract_field (line, ptr, sep - ptr);
+ if (sep == lim)
+ return;
+ for (ptr = sep + 1; ptr != lim && isblank (to_uchar (*ptr)); ptr++)
+ continue;
+ }
+ while (ptr != lim);
+ }
+
+ extract_field (line, ptr, lim - ptr);
+}
+
+/* Read a line from FP into LINE and split it into fields.
+ Return true if successful. */
+
+static bool
+get_line (FILE *fp, struct line *line)
+{
+ initbuffer (&line->buf);
+
+ if (! readlinebuffer (&line->buf, fp))
+ {
+ if (ferror (fp))
+ error (EXIT_FAILURE, errno, _("read error"));
+ free (line->buf.buffer);
+ line->buf.buffer = NULL;
+ return false;
+ }
+
+ line->nfields_allocated = 0;
+ line->nfields = 0;
+ line->fields = NULL;
+ xfields (line);
+ return true;
+}
+
+static void
+freeline (struct line *line)
+{
+ free (line->fields);
+ free (line->buf.buffer);
+ line->buf.buffer = NULL;
+}
+
+static void
+initseq (struct seq *seq)
+{
+ seq->count = 0;
+ seq->alloc = 0;
+ seq->lines = NULL;
+}
+
+/* Read a line from FP and add it to SEQ. Return true if successful. */
+
+static bool
+getseq (FILE *fp, struct seq *seq)
+{
+ if (seq->count == seq->alloc)
+ seq->lines = X2NREALLOC (seq->lines, &seq->alloc);
+
+ if (get_line (fp, &seq->lines[seq->count]))
+ {
+ ++seq->count;
+ return true;
+ }
+ return false;
+}
+
+static void
+delseq (struct seq *seq)
+{
+ size_t i;
+ for (i = 0; i < seq->count; i++)
+ if (seq->lines[i].buf.buffer)
+ freeline (&seq->lines[i]);
+ free (seq->lines);
+}
+
+/* Return <0 if the join field in LINE1 compares less than the one in LINE2;
+ >0 if it compares greater; 0 if it compares equal.
+ Report an error and exit if the comparison fails. */
+
+static int
+keycmp (struct line const *line1, struct line const *line2)
+{
+ /* Start of field to compare in each file. */
+ char *beg1;
+ char *beg2;
+
+ size_t len1;
+ size_t len2; /* Length of fields to compare. */
+ int diff;
+
+ if (join_field_1 < line1->nfields)
+ {
+ beg1 = line1->fields[join_field_1].beg;
+ len1 = line1->fields[join_field_1].len;
+ }
+ else
+ {
+ beg1 = NULL;
+ len1 = 0;
+ }
+
+ if (join_field_2 < line2->nfields)
+ {
+ beg2 = line2->fields[join_field_2].beg;
+ len2 = line2->fields[join_field_2].len;
+ }
+ else
+ {
+ beg2 = NULL;
+ len2 = 0;
+ }
+
+ if (len1 == 0)
+ return len2 == 0 ? 0 : -1;
+ if (len2 == 0)
+ return 1;
+
+ if (ignore_case)
+ {
+ /* FIXME: ignore_case does not work with NLS (in particular,
+ with multibyte chars). */
+ diff = memcasecmp (beg1, beg2, MIN (len1, len2));
+ }
+ else
+ {
+ if (hard_LC_COLLATE)
+ return xmemcoll (beg1, len1, beg2, len2);
+ diff = memcmp (beg1, beg2, MIN (len1, len2));
+ }
+
+ if (diff)
+ return diff;
+ return len1 < len2 ? -1 : len1 != len2;
+}
+
+/* Print field N of LINE if it exists and is nonempty, otherwise
+ `empty_filler' if it is nonempty. */
+
+static void
+prfield (size_t n, struct line const *line)
+{
+ size_t len;
+
+ if (n < line->nfields)
+ {
+ len = line->fields[n].len;
+ if (len)
+ fwrite (line->fields[n].beg, 1, len, stdout);
+ else if (empty_filler)
+ fputs (empty_filler, stdout);
+ }
+ else if (empty_filler)
+ fputs (empty_filler, stdout);
+}
+
+/* Print the join of LINE1 and LINE2. */
+
+static void
+prjoin (struct line const *line1, struct line const *line2)
+{
+ const struct outlist *outlist;
+ char output_separator = tab < 0 ? ' ' : tab;
+
+ outlist = outlist_head.next;
+ if (outlist)
+ {
+ const struct outlist *o;
+
+ o = outlist;
+ while (1)
+ {
+ size_t field;
+ struct line const *line;
+
+ if (o->file == 0)
+ {
+ if (line1 == &uni_blank)
+ {
+ line = line2;
+ field = join_field_2;
+ }
+ else
+ {
+ line = line1;
+ field = join_field_1;
+ }
+ }
+ else
+ {
+ line = (o->file == 1 ? line1 : line2);
+ field = o->field;
+ }
+ prfield (field, line);
+ o = o->next;
+ if (o == NULL)
+ break;
+ putchar (output_separator);
+ }
+ putchar ('\n');
+ }
+ else
+ {
+ size_t i;
+
+ if (line1 == &uni_blank)
+ {
+ struct line const *t;
+ t = line1;
+ line1 = line2;
+ line2 = t;
+ }
+ prfield (join_field_1, line1);
+ for (i = 0; i < join_field_1 && i < line1->nfields; ++i)
+ {
+ putchar (output_separator);
+ prfield (i, line1);
+ }
+ for (i = join_field_1 + 1; i < line1->nfields; ++i)
+ {
+ putchar (output_separator);
+ prfield (i, line1);
+ }
+
+ for (i = 0; i < join_field_2 && i < line2->nfields; ++i)
+ {
+ putchar (output_separator);
+ prfield (i, line2);
+ }
+ for (i = join_field_2 + 1; i < line2->nfields; ++i)
+ {
+ putchar (output_separator);
+ prfield (i, line2);
+ }
+ putchar ('\n');
+ }
+}
+
+/* Print the join of the files in FP1 and FP2. */
+
+static void
+join (FILE *fp1, FILE *fp2)
+{
+ struct seq seq1, seq2;
+ struct line line;
+ int diff;
+ bool eof1, eof2;
+
+ /* Read the first line of each file. */
+ initseq (&seq1);
+ getseq (fp1, &seq1);
+ initseq (&seq2);
+ getseq (fp2, &seq2);
+
+ while (seq1.count && seq2.count)
+ {
+ size_t i;
+ diff = keycmp (&seq1.lines[0], &seq2.lines[0]);
+ if (diff < 0)
+ {
+ if (print_unpairables_1)
+ prjoin (&seq1.lines[0], &uni_blank);
+ freeline (&seq1.lines[0]);
+ seq1.count = 0;
+ getseq (fp1, &seq1);
+ continue;
+ }
+ if (diff > 0)
+ {
+ if (print_unpairables_2)
+ prjoin (&uni_blank, &seq2.lines[0]);
+ freeline (&seq2.lines[0]);
+ seq2.count = 0;
+ getseq (fp2, &seq2);
+ continue;
+ }
+
+ /* Keep reading lines from file1 as long as they continue to
+ match the current line from file2. */
+ eof1 = false;
+ do
+ if (!getseq (fp1, &seq1))
+ {
+ eof1 = true;
+ ++seq1.count;
+ break;
+ }
+ while (!keycmp (&seq1.lines[seq1.count - 1], &seq2.lines[0]));
+
+ /* Keep reading lines from file2 as long as they continue to
+ match the current line from file1. */
+ eof2 = false;
+ do
+ if (!getseq (fp2, &seq2))
+ {
+ eof2 = true;
+ ++seq2.count;
+ break;
+ }
+ while (!keycmp (&seq1.lines[0], &seq2.lines[seq2.count - 1]));
+
+ if (print_pairables)
+ {
+ for (i = 0; i < seq1.count - 1; ++i)
+ {
+ size_t j;
+ for (j = 0; j < seq2.count - 1; ++j)
+ prjoin (&seq1.lines[i], &seq2.lines[j]);
+ }
+ }
+
+ for (i = 0; i < seq1.count - 1; ++i)
+ freeline (&seq1.lines[i]);
+ if (!eof1)
+ {
+ seq1.lines[0] = seq1.lines[seq1.count - 1];
+ seq1.count = 1;
+ }
+ else
+ seq1.count = 0;
+
+ for (i = 0; i < seq2.count - 1; ++i)
+ freeline (&seq2.lines[i]);
+ if (!eof2)
+ {
+ seq2.lines[0] = seq2.lines[seq2.count - 1];
+ seq2.count = 1;
+ }
+ else
+ seq2.count = 0;
+ }
+
+ if (print_unpairables_1 && seq1.count)
+ {
+ prjoin (&seq1.lines[0], &uni_blank);
+ freeline (&seq1.lines[0]);
+ while (get_line (fp1, &line))
+ {
+ prjoin (&line, &uni_blank);
+ freeline (&line);
+ }
+ }
+
+ if (print_unpairables_2 && seq2.count)
+ {
+ prjoin (&uni_blank, &seq2.lines[0]);
+ freeline (&seq2.lines[0]);
+ while (get_line (fp2, &line))
+ {
+ prjoin (&uni_blank, &line);
+ freeline (&line);
+ }
+ }
+
+ delseq (&seq1);
+ delseq (&seq2);
+}
+
+/* Add a field spec for field FIELD of file FILE to `outlist'. */
+
+static void
+add_field (int file, size_t field)
+{
+ struct outlist *o;
+
+ assert (file == 0 || file == 1 || file == 2);
+ assert (file != 0 || field == 0);
+
+ o = xmalloc (sizeof *o);
+ o->file = file;
+ o->field = field;
+ o->next = NULL;
+
+ /* Add to the end of the list so the fields are in the right order. */
+ outlist_end->next = o;
+ outlist_end = o;
+}
+
+/* Convert a string of decimal digits, STR (the 1-based join field number),
+ to an integral value. Upon successful conversion, return one less
+ (the zero-based field number). Silently convert too-large values
+ to SIZE_MAX - 1. Otherwise, if a value cannot be converted, give a
+ diagnostic and exit. */
+
+static size_t
+string_to_join_field (char const *str)
+{
+ size_t result;
+ unsigned long int val;
+ verify (SIZE_MAX <= ULONG_MAX);
+
+ strtol_error s_err = xstrtoul (str, NULL, 10, &val, "");
+ if (s_err == LONGINT_OVERFLOW || (s_err == LONGINT_OK && SIZE_MAX < val))
+ val = SIZE_MAX;
+ else if (s_err != LONGINT_OK || val == 0)
+ error (EXIT_FAILURE, 0, _("invalid field number: %s"), quote (str));
+
+ result = val - 1;
+
+ return result;
+}
+
+/* Convert a single field specifier string, S, to a *FILE_INDEX, *FIELD_INDEX
+ pair. In S, the field index string is 1-based; *FIELD_INDEX is zero-based.
+ If S is valid, return true. Otherwise, give a diagnostic and exit. */
+
+static void
+decode_field_spec (const char *s, int *file_index, size_t *field_index)
+{
+ /* The first character must be 0, 1, or 2. */
+ switch (s[0])
+ {
+ case '0':
+ if (s[1])
+ {
+ /* `0' must be all alone -- no `.FIELD'. */
+ error (EXIT_FAILURE, 0, _("invalid field specifier: %s"), quote (s));
+ }
+ *file_index = 0;
+ *field_index = 0;
+ break;
+
+ case '1':
+ case '2':
+ if (s[1] != '.')
+ error (EXIT_FAILURE, 0, _("invalid field specifier: %s"), quote (s));
+ *file_index = s[0] - '0';
+ *field_index = string_to_join_field (s + 2);
+ break;
+
+ default:
+ error (EXIT_FAILURE, 0,
+ _("invalid file number in field spec: %s"), quote (s));
+
+ /* Tell gcc -W -Wall that we can't get beyond this point.
+ This avoids a warning (otherwise legit) that the caller's copies
+ of *file_index and *field_index might be used uninitialized. */
+ abort ();
+
+ break;
+ }
+}
+
+/* Add the comma or blank separated field spec(s) in STR to `outlist'. */
+
+static void
+add_field_list (char *str)
+{
+ char *p = str;
+
+ do
+ {
+ int file_index;
+ size_t field_index;
+ char const *spec_item = p;
+
+ p = strpbrk (p, ", \t");
+ if (p)
+ *p++ = '\0';
+ decode_field_spec (spec_item, &file_index, &field_index);
+ add_field (file_index, field_index);
+ }
+ while (p);
+}
+
+/* Set the join field *VAR to VAL, but report an error if *VAR is set
+ more than once to incompatible values. */
+
+static void
+set_join_field (size_t *var, size_t val)
+{
+ if (*var != SIZE_MAX && *var != val)
+ {
+ unsigned long int var1 = *var + 1;
+ unsigned long int val1 = val + 1;
+ error (EXIT_FAILURE, 0, _("incompatible join fields %lu, %lu"),
+ var1, val1);
+ }
+ *var = val;
+}
+
+/* Status of command-line arguments. */
+
+enum operand_status
+ {
+ /* This argument must be an operand, i.e., one of the files to be
+ joined. */
+ MUST_BE_OPERAND,
+
+ /* This might be the argument of the preceding -j1 or -j2 option,
+ or it might be an operand. */
+ MIGHT_BE_J1_ARG,
+ MIGHT_BE_J2_ARG,
+
+ /* This might be the argument of the preceding -o option, or it might be
+ an operand. */
+ MIGHT_BE_O_ARG
+ };
+
+/* Add NAME to the array of input file NAMES with operand statuses
+ OPERAND_STATUS; currently there are NFILES names in the list. */
+
+static void
+add_file_name (char *name, char *names[2],
+ int operand_status[2], int joption_count[2], int *nfiles,
+ int *prev_optc_status, int *optc_status)
+{
+ int n = *nfiles;
+
+ if (n == 2)
+ {
+ bool op0 = (operand_status[0] == MUST_BE_OPERAND);
+ char *arg = names[op0];
+ switch (operand_status[op0])
+ {
+ case MUST_BE_OPERAND:
+ error (0, 0, _("extra operand %s"), quote (name));
+ usage (EXIT_FAILURE);
+
+ case MIGHT_BE_J1_ARG:
+ joption_count[0]--;
+ set_join_field (&join_field_1, string_to_join_field (arg));
+ break;
+
+ case MIGHT_BE_J2_ARG:
+ joption_count[1]--;
+ set_join_field (&join_field_2, string_to_join_field (arg));
+ break;
+
+ case MIGHT_BE_O_ARG:
+ add_field_list (arg);
+ break;
+ }
+ if (!op0)
+ {
+ operand_status[0] = operand_status[1];
+ names[0] = names[1];
+ }
+ n = 1;
+ }
+
+ operand_status[n] = *prev_optc_status;
+ names[n] = name;
+ *nfiles = n + 1;
+ if (*prev_optc_status == MIGHT_BE_O_ARG)
+ *optc_status = MIGHT_BE_O_ARG;
+}
+
+int
+main (int argc, char **argv)
+{
+ int optc_status;
+ int prev_optc_status = MUST_BE_OPERAND;
+ int operand_status[2];
+ int joption_count[2] = { 0, 0 };
+ char *names[2];
+ FILE *fp1, *fp2;
+ int optc;
+ int nfiles = 0;
+ int i;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+ hard_LC_COLLATE = hard_locale (LC_COLLATE);
+
+ atexit (close_stdout);
+
+ print_pairables = true;
+
+ while ((optc = getopt_long (argc, argv, "-a:e:i1:2:j:o:t:v:",
+ longopts, NULL))
+ != -1)
+ {
+ optc_status = MUST_BE_OPERAND;
+
+ switch (optc)
+ {
+ case 'v':
+ print_pairables = false;
+ /* Fall through. */
+
+ case 'a':
+ {
+ unsigned long int val;
+ if (xstrtoul (optarg, NULL, 10, &val, "") != LONGINT_OK
+ || (val != 1 && val != 2))
+ error (EXIT_FAILURE, 0,
+ _("invalid field number: %s"), quote (optarg));
+ if (val == 1)
+ print_unpairables_1 = true;
+ else
+ print_unpairables_2 = true;
+ }
+ break;
+
+ case 'e':
+ if (empty_filler && ! STREQ (empty_filler, optarg))
+ error (EXIT_FAILURE, 0,
+ _("conflicting empty-field replacement strings"));
+ empty_filler = optarg;
+ break;
+
+ case 'i':
+ ignore_case = true;
+ break;
+
+ case '1':
+ set_join_field (&join_field_1, string_to_join_field (optarg));
+ break;
+
+ case '2':
+ set_join_field (&join_field_2, string_to_join_field (optarg));
+ break;
+
+ case 'j':
+ if ((optarg[0] == '1' || optarg[0] == '2') && !optarg[1]
+ && optarg == argv[optind - 1] + 2)
+ {
+ /* The argument was either "-j1" or "-j2". */
+ bool is_j2 = (optarg[0] == '2');
+ joption_count[is_j2]++;
+ optc_status = MIGHT_BE_J1_ARG + is_j2;
+ }
+ else
+ {
+ set_join_field (&join_field_1, string_to_join_field (optarg));
+ set_join_field (&join_field_2, join_field_1);
+ }
+ break;
+
+ case 'o':
+ add_field_list (optarg);
+ optc_status = MIGHT_BE_O_ARG;
+ break;
+
+ case 't':
+ {
+ unsigned char newtab = optarg[0];
+ if (! newtab)
+ error (EXIT_FAILURE, 0, _("empty tab"));
+ if (optarg[1])
+ {
+ if (STREQ (optarg, "\\0"))
+ newtab = '\0';
+ else
+ error (EXIT_FAILURE, 0, _("multi-character tab %s"),
+ quote (optarg));
+ }
+ if (0 <= tab && tab != newtab)
+ error (EXIT_FAILURE, 0, _("incompatible tabs"));
+ tab = newtab;
+ }
+ break;
+
+ case 1: /* Non-option argument. */
+ add_file_name (optarg, names, operand_status, joption_count,
+ &nfiles, &prev_optc_status, &optc_status);
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+
+ prev_optc_status = optc_status;
+ }
+
+ /* Process any operands after "--". */
+ prev_optc_status = MUST_BE_OPERAND;
+ while (optind < argc)
+ add_file_name (argv[optind++], names, operand_status, joption_count,
+ &nfiles, &prev_optc_status, &optc_status);
+
+ if (nfiles != 2)
+ {
+ if (nfiles == 0)
+ error (0, 0, _("missing operand"));
+ else
+ error (0, 0, _("missing operand after %s"), quote (argv[argc - 1]));
+ usage (EXIT_FAILURE);
+ }
+
+ /* If "-j1" was specified and it turns out not to have had an argument,
+ treat it as "-j 1". Likewise for -j2. */
+ for (i = 0; i < 2; i++)
+ if (joption_count[i] != 0)
+ {
+ set_join_field (&join_field_1, i);
+ set_join_field (&join_field_2, i);
+ }
+
+ if (join_field_1 == SIZE_MAX)
+ join_field_1 = 0;
+ if (join_field_2 == SIZE_MAX)
+ join_field_2 = 0;
+
+ fp1 = STREQ (names[0], "-") ? stdin : fopen (names[0], "r");
+ if (!fp1)
+ error (EXIT_FAILURE, errno, "%s", names[0]);
+ fp2 = STREQ (names[1], "-") ? stdin : fopen (names[1], "r");
+ if (!fp2)
+ error (EXIT_FAILURE, errno, "%s", names[1]);
+ if (fp1 == fp2)
+ error (EXIT_FAILURE, errno, _("both files cannot be standard input"));
+ join (fp1, fp2);
+
+ if (fclose (fp1) != 0)
+ error (EXIT_FAILURE, errno, "%s", names[0]);
+ if (fclose (fp2) != 0)
+ error (EXIT_FAILURE, errno, "%s", names[1]);
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/kill.c b/src/kill.c
new file mode 100644
index 0000000..c59025f
--- /dev/null
+++ b/src/kill.c
@@ -0,0 +1,373 @@
+/* kill -- send a signal to a process
+ Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert. */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+#include <signal.h>
+
+#if HAVE_SYS_WAIT_H
+# include <sys/wait.h>
+#endif
+#ifndef WIFSIGNALED
+# define WIFSIGNALED(s) (((s) & 0xFFFF) - 1 < (unsigned int) 0xFF)
+#endif
+#ifndef WTERMSIG
+# define WTERMSIG(s) ((s) & 0x7F)
+#endif
+
+#include "system.h"
+#include "error.h"
+#include "sig2str.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "kill"
+
+#define AUTHORS "Paul Eggert"
+
+#if ! (HAVE_DECL_STRSIGNAL || defined strsignal)
+# if ! (HAVE_DECL_SYS_SIGLIST || defined sys_siglist)
+# if HAVE_DECL__SYS_SIGLIST || defined _sys_siglist
+# define sys_siglist _sys_siglist
+# elif HAVE_DECL___SYS_SIGLIST || defined __sys_siglist
+# define sys_siglist __sys_siglist
+# endif
+# endif
+# if HAVE_DECL_SYS_SIGLIST || defined sys_siglist
+# define strsignal(signum) (0 <= (signum) && (signum) <= SIGNUM_BOUND \
+ ? sys_siglist[signum] \
+ : 0)
+# endif
+# ifndef strsignal
+# define strsignal(signum) 0
+# endif
+#endif
+
+/* The name this program was run with, for error messages. */
+char *program_name;
+
+static char const short_options[] =
+ "0::1::2::3::4::5::6::7::8::9::"
+ "A::B::C::D::E::F::G::H::I::J::K::L::M::"
+ "N::O::P::Q::R::S::T::U::V::W::X::Y::Z::"
+ "ln:s:t";
+
+static struct option const long_options[] =
+{
+ {"list", no_argument, NULL, 'l'},
+ {"signal", required_argument, NULL, 's'},
+ {"table", no_argument, NULL, 't'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [-s SIGNAL | -SIGNAL] PID...\n\
+ or: %s -l [SIGNAL]...\n\
+ or: %s -t [SIGNAL]...\n\
+"),
+ program_name, program_name, program_name);
+ fputs (_("\
+Send signals to processes, or list signals.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -s, --signal=SIGNAL, -SIGNAL\n\
+ specify the name or number of the signal to be sent\n\
+ -l, --list list signal names, or convert signal names to/from numbers\n\
+ -t, --table print a table of signal information\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\n\
+SIGNAL may be a signal name like `HUP', or a signal number like `1',\n\
+or an exit status of a process terminated by a signal.\n\
+PID is an integer; if negative it identifies a process group.\n\
+"), stdout);
+ printf (USAGE_BUILTIN_WARNING, PROGRAM_NAME);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Convert OPERAND to a signal number with printable representation SIGNAME.
+ Return the signal number, or -1 if unsuccessful. */
+
+static int
+operand2sig (char const *operand, char *signame)
+{
+ int signum;
+
+ if (ISDIGIT (*operand))
+ {
+ char *endp;
+ long int l = (errno = 0, strtol (operand, &endp, 10));
+ int i = l;
+ signum = (operand == endp || *endp || errno || i != l ? -1
+ : WIFSIGNALED (i) ? WTERMSIG (i)
+ : i);
+ }
+ else
+ {
+ /* Convert signal to upper case in the C locale, not in the
+ current locale. Don't assume ASCII; it might be EBCDIC. */
+ char *upcased = xstrdup (operand);
+ char *p;
+ for (p = upcased; *p; p++)
+ if (strchr ("abcdefghijklmnopqrstuvwxyz", *p))
+ *p += 'A' - 'a';
+
+ /* Look for the signal name, possibly prefixed by "SIG",
+ and possibly lowercased. */
+ if (! (str2sig (upcased, &signum) == 0
+ || (upcased[0] == 'S' && upcased[1] == 'I' && upcased[2] == 'G'
+ && str2sig (upcased + 3, &signum) == 0)))
+ signum = -1;
+
+ free (upcased);
+ }
+
+ if (signum < 0 || sig2str (signum, signame) != 0)
+ {
+ error (0, 0, _("%s: invalid signal"), operand);
+ return -1;
+ }
+
+ return signum;
+}
+
+/* Print a row of `kill -t' output. NUM_WIDTH is the maximum signal
+ number width, and SIGNUM is the signal number to print. The
+ maximum name width is NAME_WIDTH, and SIGNAME is the name to print. */
+
+static void
+print_table_row (unsigned int num_width, int signum,
+ unsigned int name_width, char const *signame)
+{
+ char const *description = strsignal (signum);
+ printf ("%*d %-*s %s\n", num_width, signum, name_width, signame,
+ description ? description : "?");
+}
+
+/* Print a list of signal names. If TABLE, print a table.
+ Print the names specified by ARGV if nonzero; otherwise,
+ print all known names. Return a suitable exit status. */
+
+static int
+list_signals (bool table, char *const *argv)
+{
+ int signum;
+ int status = EXIT_SUCCESS;
+ char signame[SIG2STR_MAX];
+
+ if (table)
+ {
+ unsigned int name_width = 0;
+
+ /* Compute the maximum width of a signal number. */
+ unsigned int num_width = 1;
+ for (signum = 1; signum <= SIGNUM_BOUND / 10; signum *= 10)
+ num_width++;
+
+ /* Compute the maximum width of a signal name. */
+ for (signum = 1; signum <= SIGNUM_BOUND; signum++)
+ if (sig2str (signum, signame) == 0)
+ {
+ size_t len = strlen (signame);
+ if (name_width < len)
+ name_width = len;
+ }
+
+ if (argv)
+ for (; *argv; argv++)
+ {
+ signum = operand2sig (*argv, signame);
+ if (signum < 0)
+ status = EXIT_FAILURE;
+ else
+ print_table_row (num_width, signum, name_width, signame);
+ }
+ else
+ for (signum = 1; signum <= SIGNUM_BOUND; signum++)
+ if (sig2str (signum, signame) == 0)
+ print_table_row (num_width, signum, name_width, signame);
+ }
+ else
+ {
+ if (argv)
+ for (; *argv; argv++)
+ {
+ signum = operand2sig (*argv, signame);
+ if (signum < 0)
+ status = EXIT_FAILURE;
+ else
+ {
+ if (ISDIGIT (**argv))
+ puts (signame);
+ else
+ printf ("%d\n", signum);
+ }
+ }
+ else
+ for (signum = 1; signum <= SIGNUM_BOUND; signum++)
+ if (sig2str (signum, signame) == 0)
+ puts (signame);
+ }
+
+ return status;
+}
+
+/* Send signal SIGNUM to all the processes or process groups specified
+ by ARGV. Return a suitable exit status. */
+
+static int
+send_signals (int signum, char *const *argv)
+{
+ int status = EXIT_SUCCESS;
+ char const *arg = *argv;
+
+ do
+ {
+ char *endp;
+ intmax_t n = (errno = 0, strtoimax (arg, &endp, 10));
+ pid_t pid = n;
+
+ if (errno == ERANGE || pid != n || arg == endp || *endp)
+ {
+ error (0, 0, _("%s: invalid process id"), arg);
+ status = EXIT_FAILURE;
+ }
+ else if (kill (pid, signum) != 0)
+ {
+ error (0, errno, "%s", arg);
+ status = EXIT_FAILURE;
+ }
+ }
+ while ((arg = *++argv));
+
+ return status;
+}
+
+int
+main (int argc, char **argv)
+{
+ int optc;
+ bool list = false;
+ bool table = false;
+ int signum = -1;
+ char signame[SIG2STR_MAX];
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ while ((optc = getopt_long (argc, argv, short_options, long_options, NULL))
+ != -1)
+ switch (optc)
+ {
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ if (optind != 2)
+ {
+ /* This option is actually a process-id. */
+ optind--;
+ goto no_more_options;
+ }
+ /* Fall through. */
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ if (! optarg)
+ optarg = argv[optind - 1] + strlen (argv[optind - 1]);
+ if (optarg != argv[optind - 1] + 2)
+ {
+ error (0, 0, _("invalid option -- %c"), optc);
+ usage (EXIT_FAILURE);
+ }
+ optarg--;
+ /* Fall through. */
+ case 'n': /* -n is not documented, but is for Bash compatibility. */
+ case 's':
+ if (0 <= signum)
+ {
+ error (0, 0, _("%s: multiple signals specified"), optarg);
+ usage (EXIT_FAILURE);
+ }
+ signum = operand2sig (optarg, signame);
+ if (signum < 0)
+ usage (EXIT_FAILURE);
+ break;
+
+ case 't':
+ table = true;
+ /* Fall through. */
+ case 'l':
+ if (list)
+ {
+ error (0, 0, _("multiple -l or -t options specified"));
+ usage (EXIT_FAILURE);
+ }
+ list = true;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ usage (EXIT_FAILURE);
+ }
+ no_more_options:;
+
+ if (signum < 0)
+ signum = SIGTERM;
+ else if (list)
+ {
+ error (0, 0, _("cannot combine signal with -l or -t"));
+ usage (EXIT_FAILURE);
+ }
+
+ if ( ! list && argc <= optind)
+ {
+ error (0, 0, _("no process ID specified"));
+ usage (EXIT_FAILURE);
+ }
+
+ return (list
+ ? list_signals (table, optind < argc ? argv + optind : NULL)
+ : send_signals (signum, argv + optind));
+}
diff --git a/src/lbracket.c b/src/lbracket.c
new file mode 100644
index 0000000..b57ca9b
--- /dev/null
+++ b/src/lbracket.c
@@ -0,0 +1,2 @@
+#define LBRACKET 1
+#include "test.c"
diff --git a/src/link.c b/src/link.c
new file mode 100644
index 0000000..277cf23
--- /dev/null
+++ b/src/link.c
@@ -0,0 +1,99 @@
+/* link utility for GNU.
+ Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Michael Stone */
+
+/* Implementation overview:
+
+ Simply call the system 'link' function */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "error.h"
+#include "long-options.h"
+#include "quote.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "link"
+
+#define AUTHORS "Michael Stone"
+
+/* Name this program was run with. */
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s FILE1 FILE2\n\
+ or: %s OPTION\n"), program_name, program_name);
+ fputs (_("Call the link function to create a link named FILE2\
+ to an existing FILE1.\n\n"),
+ stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "", NULL, NULL) != -1)
+ usage (EXIT_FAILURE);
+
+ if (argc < optind + 2)
+ {
+ if (argc < optind + 1)
+ error (0, 0, _("missing operand"));
+ else
+ error (0, 0, _("missing operand after %s"), quote (argv[optind]));
+ usage (EXIT_FAILURE);
+ }
+
+ if (optind + 2 < argc)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind + 2]));
+ usage (EXIT_FAILURE);
+ }
+
+ if (link (argv[optind], argv[optind + 1]) != 0)
+ error (EXIT_FAILURE, errno, _("cannot create link %s to %s"),
+ quote_n (0, argv[optind + 1]), quote_n (1, argv[optind]));
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/ln.c b/src/ln.c
new file mode 100644
index 0000000..fae3708
--- /dev/null
+++ b/src/ln.c
@@ -0,0 +1,534 @@
+/* `ln' program to create links between files.
+ Copyright (C) 1986, 1989-1991, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Mike Parker and David MacKenzie. */
+
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <getopt.h>
+
+#include "system.h"
+#include "same.h"
+#include "backupfile.h"
+#include "error.h"
+#include "filenamecat.h"
+#include "quote.h"
+#include "yesno.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "ln"
+
+#define AUTHORS "Mike Parker", "David MacKenzie"
+
+#ifndef ENABLE_HARD_LINK_TO_SYMLINK_WARNING
+# define ENABLE_HARD_LINK_TO_SYMLINK_WARNING 0
+#endif
+
+/* In being careful not even to try to make hard links to directories,
+ we have to know whether link(2) follows symlinks. If it does, then
+ we have to *stat* the `source' to see if the resulting link would be
+ to a directory. Otherwise, we have to use *lstat* so that we allow
+ users to make hard links to symlinks-that-point-to-directories. */
+
+#if LINK_FOLLOWS_SYMLINKS
+# define STAT_LIKE_LINK(File, Stat_buf) \
+ stat (File, Stat_buf)
+#else
+# define STAT_LIKE_LINK(File, Stat_buf) \
+ lstat (File, Stat_buf)
+#endif
+
+/* The name by which the program was run, for error messages. */
+char *program_name;
+
+/* FIXME: document */
+static enum backup_type backup_type;
+
+/* If true, make symbolic links; otherwise, make hard links. */
+static bool symbolic_link;
+
+/* If true, ask the user before removing existing files. */
+static bool interactive;
+
+/* If true, remove existing files unconditionally. */
+static bool remove_existing_files;
+
+/* If true, list each file as it is moved. */
+static bool verbose;
+
+/* If true, allow the superuser to *attempt* to make hard links
+ to directories. However, it appears that this option is not useful
+ in practice, since even the superuser is prohibited from hard-linking
+ directories on most (all?) existing systems. */
+static bool hard_dir_link;
+
+/* If nonzero, and the specified destination is a symbolic link to a
+ directory, treat it just as if it were a directory. Otherwise, the
+ command `ln --force --no-dereference file symlink-to-dir' deletes
+ symlink-to-dir before creating the new link. */
+static bool dereference_dest_dir_symlinks = true;
+
+static struct option const long_options[] =
+{
+ {"backup", optional_argument, NULL, 'b'},
+ {"directory", no_argument, NULL, 'F'},
+ {"no-dereference", no_argument, NULL, 'n'},
+ {"no-target-directory", no_argument, NULL, 'T'},
+ {"force", no_argument, NULL, 'f'},
+ {"interactive", no_argument, NULL, 'i'},
+ {"suffix", required_argument, NULL, 'S'},
+ {"target-directory", required_argument, NULL, 't'},
+ {"symbolic", no_argument, NULL, 's'},
+ {"verbose", no_argument, NULL, 'v'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+/* FILE is the last operand of this command. Return true if FILE is a
+ directory. But report an error there is a problem accessing FILE,
+ or if FILE does not exist but would have to refer to an existing
+ directory if it referred to anything at all. */
+
+static bool
+target_directory_operand (char const *file)
+{
+ char const *b = last_component (file);
+ size_t blen = strlen (b);
+ bool looks_like_a_dir = (blen == 0 || ISSLASH (b[blen - 1]));
+ struct stat st;
+ int stat_result =
+ (dereference_dest_dir_symlinks ? stat (file, &st) : lstat (file, &st));
+ int err = (stat_result == 0 ? 0 : errno);
+ bool is_a_dir = !err && S_ISDIR (st.st_mode);
+ if (err && err != ENOENT)
+ error (EXIT_FAILURE, err, _("accessing %s"), quote (file));
+ if (is_a_dir < looks_like_a_dir)
+ error (EXIT_FAILURE, err, _("target %s is not a directory"), quote (file));
+ return is_a_dir;
+}
+
+/* Make a link DEST to the (usually) existing file SOURCE.
+ Symbolic links to nonexistent files are allowed.
+ Return true if successful. */
+
+static bool
+do_link (const char *source, const char *dest)
+{
+ struct stat source_stats;
+ struct stat dest_stats;
+ char *dest_backup = NULL;
+ bool dest_lstat_ok = false;
+ bool source_is_dir = false;
+ bool ok;
+
+ /* Use stat here instead of lstat.
+ On SVR4, link does not follow symlinks, so this check disallows
+ making hard links to symlinks that point to directories. Big deal.
+ On other systems, link follows symlinks, so this check is right. */
+ if (!symbolic_link)
+ {
+ if (STAT_LIKE_LINK (source, &source_stats) != 0)
+ {
+ error (0, errno, _("accessing %s"), quote (source));
+ return false;
+ }
+
+ if (ENABLE_HARD_LINK_TO_SYMLINK_WARNING
+ && S_ISLNK (source_stats.st_mode))
+ {
+ error (0, 0, _("%s: warning: making a hard link to a symbolic link\
+ is not portable"),
+ quote (source));
+ }
+
+ if (S_ISDIR (source_stats.st_mode))
+ {
+ source_is_dir = true;
+ if (! hard_dir_link)
+ {
+ error (0, 0, _("%s: hard link not allowed for directory"),
+ quote (source));
+ return false;
+ }
+ }
+ }
+
+ if (remove_existing_files || interactive || backup_type != no_backups)
+ {
+ dest_lstat_ok = (lstat (dest, &dest_stats) == 0);
+ if (!dest_lstat_ok && errno != ENOENT)
+ {
+ error (0, errno, _("accessing %s"), quote (dest));
+ return false;
+ }
+ }
+
+ /* If --force (-f) has been specified without --backup, then before
+ making a link ln must remove the destination file if it exists.
+ (with --backup, it just renames any existing destination file)
+ But if the source and destination are the same, don't remove
+ anything and fail right here. */
+ if ((remove_existing_files
+ /* Ensure that "ln --backup f f" fails here, with the
+ "... same file" diagnostic, below. Otherwise, subsequent
+ code would give a misleading "file not found" diagnostic.
+ This case is different than the others handled here, since
+ the command in question doesn't use --force. */
+ || (!symbolic_link && backup_type != no_backups))
+ && dest_lstat_ok
+ /* Allow `ln -sf --backup k k' to succeed in creating the
+ self-referential symlink, but don't allow the hard-linking
+ equivalent: `ln -f k k' (with or without --backup) to get
+ beyond this point, because the error message you'd get is
+ misleading. */
+ && (backup_type == no_backups || !symbolic_link)
+ && (!symbolic_link || stat (source, &source_stats) == 0)
+ && SAME_INODE (source_stats, dest_stats)
+ /* The following detects whether removing DEST will also remove
+ SOURCE. If the file has only one link then both are surely
+ the same link. Otherwise check whether they point to the same
+ name in the same directory. */
+ && (source_stats.st_nlink == 1 || same_name (source, dest)))
+ {
+ error (0, 0, _("%s and %s are the same file"),
+ quote_n (0, source), quote_n (1, dest));
+ return false;
+ }
+
+ if (dest_lstat_ok)
+ {
+ if (S_ISDIR (dest_stats.st_mode))
+ {
+ error (0, 0, _("%s: cannot overwrite directory"), quote (dest));
+ return false;
+ }
+ if (interactive)
+ {
+ fprintf (stderr, _("%s: replace %s? "), program_name, quote (dest));
+ if (!yesno ())
+ return true;
+ remove_existing_files = true;
+ }
+
+ if (backup_type != no_backups)
+ {
+ dest_backup = find_backup_file_name (dest, backup_type);
+ if (rename (dest, dest_backup) != 0)
+ {
+ int rename_errno = errno;
+ free (dest_backup);
+ dest_backup = NULL;
+ if (rename_errno != ENOENT)
+ {
+ error (0, rename_errno, _("cannot backup %s"), quote (dest));
+ return false;
+ }
+ }
+ }
+ }
+
+ ok = ((symbolic_link ? symlink (source, dest) : link (source, dest))
+ == 0);
+
+ /* If the attempt to create a link failed and we are removing or
+ backing up destinations, unlink the destination and try again.
+
+ POSIX 1003.1-2004 requires that ln -f A B must unlink B even on
+ failure (e.g., when A does not exist). This is counterintuitive,
+ and we submitted a defect report
+ <http://www.opengroup.org/austin/mailarchives/ag-review/msg01794.html>
+ (2004-06-24). If the committee does not fix the standard we'll
+ have to change the behavior of ln -f, at least if POSIXLY_CORRECT
+ is set. In the meantime ln -f A B will not unlink B unless the
+ attempt to link A to B failed because B already existed.
+
+ Try to unlink DEST even if we may have backed it up successfully.
+ In some unusual cases (when DEST and DEST_BACKUP are hard-links
+ that refer to the same file), rename succeeds and DEST remains.
+ If we didn't remove DEST in that case, the subsequent symlink or link
+ call would fail. */
+
+ if (!ok && errno == EEXIST && (remove_existing_files || dest_backup))
+ {
+ if (unlink (dest) != 0)
+ {
+ error (0, errno, _("cannot remove %s"), quote (dest));
+ free (dest_backup);
+ return false;
+ }
+
+ ok = ((symbolic_link ? symlink (source, dest) : link (source, dest))
+ == 0);
+ }
+
+ if (ok)
+ {
+ if (verbose)
+ {
+ if (dest_backup)
+ printf ("%s ~ ", quote (dest_backup));
+ printf ("%s %c> %s\n", quote_n (0, dest), (symbolic_link ? '-' : '='),
+ quote_n (1, source));
+ }
+ }
+ else
+ {
+ error (0, errno,
+ (symbolic_link
+ ? (errno != ENAMETOOLONG && *source
+ ? _("creating symbolic link %s")
+ : _("creating symbolic link %s -> %s"))
+ : (errno == EMLINK && !source_is_dir
+ ? _("creating hard link to %.0s%s")
+ : (errno == EDQUOT || errno == EEXIST || errno == ENOSPC
+ || errno == EROFS)
+ ? _("creating hard link %s")
+ : _("creating hard link %s => %s"))),
+ quote_n (0, dest), quote_n (1, source));
+
+ if (dest_backup)
+ {
+ if (rename (dest_backup, dest) != 0)
+ error (0, errno, _("cannot un-backup %s"), quote (dest));
+ }
+ }
+
+ free (dest_backup);
+ return ok;
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [-T] TARGET LINK_NAME (1st form)\n\
+ or: %s [OPTION]... TARGET (2nd form)\n\
+ or: %s [OPTION]... TARGET... DIRECTORY (3rd form)\n\
+ or: %s [OPTION]... -t DIRECTORY TARGET... (4th form)\n\
+"),
+ program_name, program_name, program_name, program_name);
+ fputs (_("\
+In the 1st form, create a link to TARGET with the name LINK_NAME.\n\
+In the 2nd form, create a link to TARGET in the current directory.\n\
+In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.\n\
+Create hard links by default, symbolic links with --symbolic.\n\
+When creating hard links, each TARGET must exist.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ --backup[=CONTROL] make a backup of each existing destination file\n\
+ -b like --backup but does not accept an argument\n\
+ -d, -F, --directory allow the superuser to attempt to hard link\n\
+ directories (note: will probably fail due to\n\
+ system restrictions, even for the superuser)\n\
+ -f, --force remove existing destination files\n\
+"), stdout);
+ fputs (_("\
+ -n, --no-dereference treat destination that is a symlink to a\n\
+ directory as if it were a normal file\n\
+ -i, --interactive prompt whether to remove destinations\n\
+ -s, --symbolic make symbolic links instead of hard links\n\
+"), stdout);
+ fputs (_("\
+ -S, --suffix=SUFFIX override the usual backup suffix\n\
+ -t, --target-directory=DIRECTORY specify the DIRECTORY in which to create\n\
+ the links\n\
+ -T, --no-target-directory treat LINK_NAME as a normal file\n\
+ -v, --verbose print name of each linked file\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n\
+The version control method may be selected via the --backup option or through\n\
+the VERSION_CONTROL environment variable. Here are the values:\n\
+\n\
+"), stdout);
+ fputs (_("\
+ none, off never make backups (even if --backup is given)\n\
+ numbered, t make numbered backups\n\
+ existing, nil numbered if numbered backups exist, simple otherwise\n\
+ simple, never always make simple backups\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ bool ok;
+ bool make_backups = false;
+ char *backup_suffix_string;
+ char *version_control_string = NULL;
+ char const *target_directory = NULL;
+ bool no_target_directory = false;
+ int n_files;
+ char **file;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ /* FIXME: consider not calling getenv for SIMPLE_BACKUP_SUFFIX unless
+ we'll actually use backup_suffix_string. */
+ backup_suffix_string = getenv ("SIMPLE_BACKUP_SUFFIX");
+
+ symbolic_link = remove_existing_files = interactive = verbose
+ = hard_dir_link = false;
+
+ while ((c = getopt_long (argc, argv, "bdfinst:vFS:T", long_options, NULL))
+ != -1)
+ {
+ switch (c)
+ {
+ case 'b':
+ make_backups = true;
+ if (optarg)
+ version_control_string = optarg;
+ break;
+ case 'd':
+ case 'F':
+ hard_dir_link = true;
+ break;
+ case 'f':
+ remove_existing_files = true;
+ interactive = false;
+ break;
+ case 'i':
+ remove_existing_files = false;
+ interactive = true;
+ break;
+ case 'n':
+ dereference_dest_dir_symlinks = false;
+ break;
+ case 's':
+ symbolic_link = true;
+ break;
+ case 't':
+ if (target_directory)
+ error (EXIT_FAILURE, 0, _("multiple target directories specified"));
+ else
+ {
+ struct stat st;
+ if (stat (optarg, &st) != 0)
+ error (EXIT_FAILURE, errno, _("accessing %s"), quote (optarg));
+ if (! S_ISDIR (st.st_mode))
+ error (EXIT_FAILURE, 0, _("target %s is not a directory"),
+ quote (optarg));
+ }
+ target_directory = optarg;
+ break;
+ case 'T':
+ no_target_directory = true;
+ break;
+ case 'v':
+ verbose = true;
+ break;
+ case 'S':
+ make_backups = true;
+ backup_suffix_string = optarg;
+ break;
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ usage (EXIT_FAILURE);
+ break;
+ }
+ }
+
+ n_files = argc - optind;
+ file = argv + optind;
+
+ if (n_files <= 0)
+ {
+ error (0, 0, _("missing file operand"));
+ usage (EXIT_FAILURE);
+ }
+
+ if (no_target_directory)
+ {
+ if (target_directory)
+ error (EXIT_FAILURE, 0,
+ _("Cannot combine --target-directory "
+ "and --no-target-directory"));
+ if (n_files != 2)
+ {
+ if (n_files < 2)
+ error (0, 0,
+ _("missing destination file operand after %s"),
+ quote (file[0]));
+ else
+ error (0, 0, _("extra operand %s"), quote (file[2]));
+ usage (EXIT_FAILURE);
+ }
+ }
+ else if (!target_directory)
+ {
+ if (n_files < 2)
+ target_directory = ".";
+ else if (2 <= n_files && target_directory_operand (file[n_files - 1]))
+ target_directory = file[--n_files];
+ else if (2 < n_files)
+ error (EXIT_FAILURE, 0, _("target %s is not a directory"),
+ quote (file[n_files - 1]));
+ }
+
+ if (backup_suffix_string)
+ simple_backup_suffix = xstrdup (backup_suffix_string);
+
+ backup_type = (make_backups
+ ? xget_version (_("backup type"), version_control_string)
+ : no_backups);
+
+ if (target_directory)
+ {
+ int i;
+ ok = true;
+ for (i = 0; i < n_files; ++i)
+ {
+ char *dest_base;
+ char *dest = file_name_concat (target_directory,
+ last_component (file[i]),
+ &dest_base);
+ strip_trailing_slashes (dest_base);
+ ok &= do_link (file[i], dest);
+ free (dest);
+ }
+ }
+ else
+ ok = do_link (file[0], file[1]);
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/logname.c b/src/logname.c
new file mode 100644
index 0000000..dc82967
--- /dev/null
+++ b/src/logname.c
@@ -0,0 +1,91 @@
+/* logname -- print user's login name
+ Copyright (C) 1990-1997, 1999-2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <getopt.h>
+
+#include "system.h"
+#include "error.h"
+#include "long-options.h"
+#include "quote.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "logname"
+
+#define AUTHORS "FIXME: unknown"
+
+/* The name this program was run with. */
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]\n"), program_name);
+ fputs (_("\
+Print the name of the current user.\n\
+\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ char *cp;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "", NULL, NULL) != -1)
+ usage (EXIT_FAILURE);
+
+ if (optind < argc)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind]));
+ usage (EXIT_FAILURE);
+ }
+
+ /* POSIX requires using getlogin (or equivalent code). */
+ cp = getlogin ();
+ if (cp)
+ {
+ puts (cp);
+ exit (EXIT_SUCCESS);
+ }
+ /* POSIX prohibits using a fallback technique. */
+
+ error (0, 0, _("no login name"));
+ exit (EXIT_FAILURE);
+}
diff --git a/src/ls-dir.c b/src/ls-dir.c
new file mode 100644
index 0000000..85fe242
--- /dev/null
+++ b/src/ls-dir.c
@@ -0,0 +1,2 @@
+#include "ls.h"
+int ls_mode = LS_MULTI_COL;
diff --git a/src/ls-ls.c b/src/ls-ls.c
new file mode 100644
index 0000000..f33fbbc
--- /dev/null
+++ b/src/ls-ls.c
@@ -0,0 +1,2 @@
+#include "ls.h"
+int ls_mode = LS_LS;
diff --git a/src/ls-vdir.c b/src/ls-vdir.c
new file mode 100644
index 0000000..36ebf91
--- /dev/null
+++ b/src/ls-vdir.c
@@ -0,0 +1,2 @@
+#include "ls.h"
+int ls_mode = LS_LONG_FORMAT;
diff --git a/src/ls.c b/src/ls.c
new file mode 100644
index 0000000..3d48900
--- /dev/null
+++ b/src/ls.c
@@ -0,0 +1,4430 @@
+/* `dir', `vdir' and `ls' directory listing programs for GNU.
+ Copyright (C) 85, 88, 90, 91, 1995-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* If ls_mode is LS_MULTI_COL,
+ the multi-column format is the default regardless
+ of the type of output device.
+ This is for the `dir' program.
+
+ If ls_mode is LS_LONG_FORMAT,
+ the long format is the default regardless of the
+ type of output device.
+ This is for the `vdir' program.
+
+ If ls_mode is LS_LS,
+ the output format depends on whether the output
+ device is a terminal.
+ This is for the `ls' program. */
+
+/* Written by Richard Stallman and David MacKenzie. */
+
+/* Color support by Peter Anvin <Peter.Anvin@linux.org> and Dennis
+ Flaherty <dennisf@denix.elk.miles.com> based on original patches by
+ Greg Lee <lee@uhunix.uhcc.hawaii.edu>. */
+
+#include <config.h>
+#include <sys/types.h>
+
+#if HAVE_TERMIOS_H
+# include <termios.h>
+#endif
+#if HAVE_STROPTS_H
+# include <stropts.h>
+#endif
+#if HAVE_SYS_IOCTL_H
+# include <sys/ioctl.h>
+#endif
+
+#ifdef WINSIZE_IN_PTEM
+# include <sys/stream.h>
+# include <sys/ptem.h>
+#endif
+
+#include <stdio.h>
+#include <assert.h>
+#include <setjmp.h>
+#include <grp.h>
+#include <pwd.h>
+#include <getopt.h>
+#include <signal.h>
+
+/* Use SA_NOCLDSTOP as a proxy for whether the sigaction machinery is
+ present. */
+#ifndef SA_NOCLDSTOP
+# define SA_NOCLDSTOP 0
+# define sigprocmask(How, Set, Oset) /* empty */
+# define sigset_t int
+# if ! HAVE_SIGINTERRUPT
+# define siginterrupt(sig, flag) /* empty */
+# endif
+#endif
+#ifndef SA_RESTART
+# define SA_RESTART 0
+#endif
+
+#include "system.h"
+#include <fnmatch.h>
+
+#include "acl.h"
+#include "argmatch.h"
+#include "dev-ino.h"
+#include "dirfd.h"
+#include "error.h"
+#include "filenamecat.h"
+#include "hard-locale.h"
+#include "hash.h"
+#include "human.h"
+#include "filemode.h"
+#include "inttostr.h"
+#include "ls.h"
+#include "lstat.h"
+#include "mbswidth.h"
+#include "mpsort.h"
+#include "obstack.h"
+#include "quote.h"
+#include "quotearg.h"
+#include "same.h"
+#include "stat-time.h"
+#include "strftime.h"
+#include "strverscmp.h"
+#include "wcwidth.h"
+#include "xstrtol.h"
+#include "xreadlink.h"
+
+#define PROGRAM_NAME (ls_mode == LS_LS ? "ls" \
+ : (ls_mode == LS_MULTI_COL \
+ ? "dir" : "vdir"))
+
+#define AUTHORS "Richard Stallman", "David MacKenzie"
+
+#define obstack_chunk_alloc malloc
+#define obstack_chunk_free free
+
+/* Return an int indicating the result of comparing two integers.
+ Subtracting doesn't always work, due to overflow. */
+#define longdiff(a, b) ((a) < (b) ? -1 : (a) > (b))
+
+#if ! HAVE_STRUCT_STAT_ST_AUTHOR
+# define st_author st_uid
+#endif
+
+enum filetype
+ {
+ unknown,
+ fifo,
+ chardev,
+ directory,
+ blockdev,
+ normal,
+ symbolic_link,
+ sock,
+ whiteout,
+ arg_directory
+ };
+
+/* Display letters and indicators for each filetype.
+ Keep these in sync with enum filetype. */
+static char const filetype_letter[] = "?pcdb-lswd";
+
+/* Ensure that filetype and filetype_letter have the same
+ number of elements. */
+verify (sizeof filetype_letter - 1 == arg_directory + 1);
+
+#define FILETYPE_INDICATORS \
+ { \
+ C_ORPHAN, C_FIFO, C_CHR, C_DIR, C_BLK, C_FILE, \
+ C_LINK, C_SOCK, C_FILE, C_DIR \
+ }
+
+
+struct fileinfo
+ {
+ /* The file name. */
+ char *name;
+
+ /* For symbolic link, name of the file linked to, otherwise zero. */
+ char *linkname;
+
+ struct stat stat;
+
+ enum filetype filetype;
+
+ /* For symbolic link and long listing, st_mode of file linked to, otherwise
+ zero. */
+ mode_t linkmode;
+
+ bool stat_ok;
+
+ /* For symbolic link and color printing, true if linked-to file
+ exists, otherwise false. */
+ bool linkok;
+
+#if USE_ACL
+ /* For long listings, true if the file has an access control list. */
+ bool have_acl;
+#endif
+ };
+
+#if USE_ACL
+# define FILE_HAS_ACL(F) ((F)->have_acl)
+#else
+# define FILE_HAS_ACL(F) 0
+#endif
+
+#define LEN_STR_PAIR(s) sizeof (s) - 1, s
+
+/* Null is a valid character in a color indicator (think about Epson
+ printers, for example) so we have to use a length/buffer string
+ type. */
+
+struct bin_str
+ {
+ size_t len; /* Number of bytes */
+ const char *string; /* Pointer to the same */
+ };
+
+char *getgroup ();
+char *getuser ();
+
+#if ! HAVE_TCGETPGRP
+# define tcgetpgrp(Fd) 0
+#endif
+
+static size_t quote_name (FILE *out, const char *name,
+ struct quoting_options const *options,
+ size_t *width);
+static char *make_link_name (char const *name, char const *linkname);
+static int decode_switches (int argc, char **argv);
+static bool file_ignored (char const *name);
+static uintmax_t gobble_file (char const *name, enum filetype type,
+ ino_t inode, bool command_line_arg,
+ char const *dirname);
+static void print_color_indicator (const char *name, mode_t mode, int linkok,
+ bool stat_ok, enum filetype type);
+static void put_indicator (const struct bin_str *ind);
+static void add_ignore_pattern (const char *pattern);
+static void attach (char *dest, const char *dirname, const char *name);
+static void clear_files (void);
+static void extract_dirs_from_files (char const *dirname,
+ bool command_line_arg);
+static void get_link_name (char const *filename, struct fileinfo *f,
+ bool command_line_arg);
+static void indent (size_t from, size_t to);
+static size_t calculate_columns (bool by_columns);
+static void print_current_files (void);
+static void print_dir (char const *name, char const *realname,
+ bool command_line_arg);
+static void print_file_name_and_frills (const struct fileinfo *f);
+static void print_horizontal (void);
+static int format_user_width (uid_t u);
+static int format_group_width (gid_t g);
+static void print_long_format (const struct fileinfo *f);
+static void print_many_per_line (void);
+static void print_name_with_quoting (const char *p, mode_t mode,
+ int linkok, bool stat_ok,
+ enum filetype type,
+ struct obstack *stack);
+static void prep_non_filename_text (void);
+static void print_type_indicator (bool stat_ok, mode_t mode,
+ enum filetype type);
+static void print_with_commas (void);
+static void queue_directory (char const *name, char const *realname,
+ bool command_line_arg);
+static void sort_files (void);
+static void parse_ls_color (void);
+void usage (int status);
+
+/* The name this program was run with. */
+char *program_name;
+
+/* Initial size of hash table.
+ Most hierarchies are likely to be shallower than this. */
+#define INITIAL_TABLE_SIZE 30
+
+/* The set of `active' directories, from the current command-line argument
+ to the level in the hierarchy at which files are being listed.
+ A directory is represented by its device and inode numbers (struct dev_ino).
+ A directory is added to this set when ls begins listing it or its
+ entries, and it is removed from the set just after ls has finished
+ processing it. This set is used solely to detect loops, e.g., with
+ mkdir loop; cd loop; ln -s ../loop sub; ls -RL */
+static Hash_table *active_dir_set;
+
+#define LOOP_DETECT (!!active_dir_set)
+
+/* The table of files in the current directory:
+
+ `cwd_file' points to a vector of `struct fileinfo', one per file.
+ `cwd_n_alloc' is the number of elements space has been allocated for.
+ `cwd_n_used' is the number actually in use. */
+
+/* Address of block containing the files that are described. */
+static struct fileinfo *cwd_file;
+
+/* Length of block that `cwd_file' points to, measured in files. */
+static size_t cwd_n_alloc;
+
+/* Index of first unused slot in `cwd_file'. */
+static size_t cwd_n_used;
+
+/* Vector of pointers to files, in proper sorted order, and the number
+ of entries allocated for it. */
+static void **sorted_file;
+static size_t sorted_file_alloc;
+
+/* When true, in a color listing, color each symlink name according to the
+ type of file it points to. Otherwise, color them according to the `ln'
+ directive in LS_COLORS. Dangling (orphan) symlinks are treated specially,
+ regardless. This is set when `ln=target' appears in LS_COLORS. */
+
+static bool color_symlink_as_referent;
+
+/* mode of appropriate file for colorization */
+#define FILE_OR_LINK_MODE(File) \
+ ((color_symlink_as_referent & (File)->linkok) \
+ ? (File)->linkmode : (File)->stat.st_mode)
+
+
+/* Record of one pending directory waiting to be listed. */
+
+struct pending
+ {
+ char *name;
+ /* If the directory is actually the file pointed to by a symbolic link we
+ were told to list, `realname' will contain the name of the symbolic
+ link, otherwise zero. */
+ char *realname;
+ bool command_line_arg;
+ struct pending *next;
+ };
+
+static struct pending *pending_dirs;
+
+/* Current time in seconds and nanoseconds since 1970, updated as
+ needed when deciding whether a file is recent. */
+
+static time_t current_time = TYPE_MINIMUM (time_t);
+static int current_time_ns = -1;
+
+/* Whether any of the files has an ACL. This affects the width of the
+ mode column. */
+
+#if USE_ACL
+static bool any_has_acl;
+#else
+enum { any_has_acl = false };
+#endif
+
+/* The number of columns to use for columns containing inode numbers,
+ block sizes, link counts, owners, groups, authors, major device
+ numbers, minor device numbers, and file sizes, respectively. */
+
+static int inode_number_width;
+static int block_size_width;
+static int nlink_width;
+static int owner_width;
+static int group_width;
+static int author_width;
+static int major_device_number_width;
+static int minor_device_number_width;
+static int file_size_width;
+
+/* Option flags */
+
+/* long_format for lots of info, one per line.
+ one_per_line for just names, one per line.
+ many_per_line for just names, many per line, sorted vertically.
+ horizontal for just names, many per line, sorted horizontally.
+ with_commas for just names, many per line, separated by commas.
+
+ -l (and other options that imply -l), -1, -C, -x and -m control
+ this parameter. */
+
+enum format
+ {
+ long_format, /* -l and other options that imply -l */
+ one_per_line, /* -1 */
+ many_per_line, /* -C */
+ horizontal, /* -x */
+ with_commas /* -m */
+ };
+
+static enum format format;
+
+/* `full-iso' uses full ISO-style dates and times. `long-iso' uses longer
+ ISO-style time stamps, though shorter than `full-iso'. `iso' uses shorter
+ ISO-style time stamps. `locale' uses locale-dependent time stamps. */
+enum time_style
+ {
+ full_iso_time_style, /* --time-style=full-iso */
+ long_iso_time_style, /* --time-style=long-iso */
+ iso_time_style, /* --time-style=iso */
+ locale_time_style /* --time-style=locale */
+ };
+
+static char const *const time_style_args[] =
+{
+ "full-iso", "long-iso", "iso", "locale", NULL
+};
+static enum time_style const time_style_types[] =
+{
+ full_iso_time_style, long_iso_time_style, iso_time_style,
+ locale_time_style
+};
+ARGMATCH_VERIFY (time_style_args, time_style_types);
+
+/* Type of time to print or sort by. Controlled by -c and -u.
+ The values of each item of this enum are important since they are
+ used as indices in the sort functions array (see sort_files()). */
+
+enum time_type
+ {
+ time_mtime, /* default */
+ time_ctime, /* -c */
+ time_atime, /* -u */
+ time_numtypes /* the number of elements of this enum */
+ };
+
+static enum time_type time_type;
+
+/* The file characteristic to sort by. Controlled by -t, -S, -U, -X, -v.
+ The values of each item of this enum are important since they are
+ used as indices in the sort functions array (see sort_files()). */
+
+enum sort_type
+ {
+ sort_none = -1, /* -U */
+ sort_name, /* default */
+ sort_extension, /* -X */
+ sort_size, /* -S */
+ sort_version, /* -v */
+ sort_time, /* -t */
+ sort_numtypes /* the number of elements of this enum */
+ };
+
+static enum sort_type sort_type;
+
+/* Direction of sort.
+ false means highest first if numeric,
+ lowest first if alphabetic;
+ these are the defaults.
+ true means the opposite order in each case. -r */
+
+static bool sort_reverse;
+
+/* True means to display owner information. -g turns this off. */
+
+static bool print_owner = true;
+
+/* True means to display author information. */
+
+static bool print_author;
+
+/* True means to display group information. -G and -o turn this off. */
+
+static bool print_group = true;
+
+/* True means print the user and group id's as numbers rather
+ than as names. -n */
+
+static bool numeric_ids;
+
+/* True means mention the size in blocks of each file. -s */
+
+static bool print_block_size;
+
+/* Human-readable options for output. */
+static int human_output_opts;
+
+/* The units to use when printing sizes other than file sizes. */
+static uintmax_t output_block_size;
+
+/* Likewise, but for file sizes. */
+static uintmax_t file_output_block_size = 1;
+
+/* Follow the output with a special string. Using this format,
+ Emacs' dired mode starts up twice as fast, and can handle all
+ strange characters in file names. */
+static bool dired;
+
+/* `none' means don't mention the type of files.
+ `slash' means mention directories only, with a '/'.
+ `file_type' means mention file types.
+ `classify' means mention file types and mark executables.
+
+ Controlled by -F, -p, and --indicator-style. */
+
+enum indicator_style
+ {
+ none, /* --indicator-style=none */
+ slash, /* -p, --indicator-style=slash */
+ file_type, /* --indicator-style=file-type */
+ classify /* -F, --indicator-style=classify */
+ };
+
+static enum indicator_style indicator_style;
+
+/* Names of indicator styles. */
+static char const *const indicator_style_args[] =
+{
+ "none", "slash", "file-type", "classify", NULL
+};
+static enum indicator_style const indicator_style_types[] =
+{
+ none, slash, file_type, classify
+};
+ARGMATCH_VERIFY (indicator_style_args, indicator_style_types);
+
+/* True means use colors to mark types. Also define the different
+ colors as well as the stuff for the LS_COLORS environment variable.
+ The LS_COLORS variable is now in a termcap-like format. */
+
+static bool print_with_color;
+
+enum color_type
+ {
+ color_never, /* 0: default or --color=never */
+ color_always, /* 1: --color=always */
+ color_if_tty /* 2: --color=tty */
+ };
+
+enum Dereference_symlink
+ {
+ DEREF_UNDEFINED = 1,
+ DEREF_NEVER,
+ DEREF_COMMAND_LINE_ARGUMENTS, /* -H */
+ DEREF_COMMAND_LINE_SYMLINK_TO_DIR, /* the default, in certain cases */
+ DEREF_ALWAYS /* -L */
+ };
+
+enum indicator_no
+ {
+ C_LEFT, C_RIGHT, C_END, C_NORM, C_FILE, C_DIR, C_LINK, C_FIFO, C_SOCK,
+ C_BLK, C_CHR, C_MISSING, C_ORPHAN, C_EXEC, C_DOOR, C_SETUID, C_SETGID,
+ C_STICKY, C_OTHER_WRITABLE, C_STICKY_OTHER_WRITABLE
+ };
+
+static const char *const indicator_name[]=
+ {
+ "lc", "rc", "ec", "no", "fi", "di", "ln", "pi", "so",
+ "bd", "cd", "mi", "or", "ex", "do", "su", "sg", "st",
+ "ow", "tw", NULL
+ };
+
+struct color_ext_type
+ {
+ struct bin_str ext; /* The extension we're looking for */
+ struct bin_str seq; /* The sequence to output when we do */
+ struct color_ext_type *next; /* Next in list */
+ };
+
+static struct bin_str color_indicator[] =
+ {
+ { LEN_STR_PAIR ("\033[") }, /* lc: Left of color sequence */
+ { LEN_STR_PAIR ("m") }, /* rc: Right of color sequence */
+ { 0, NULL }, /* ec: End color (replaces lc+no+rc) */
+ { LEN_STR_PAIR ("0") }, /* no: Normal */
+ { LEN_STR_PAIR ("0") }, /* fi: File: default */
+ { LEN_STR_PAIR ("01;34") }, /* di: Directory: bright blue */
+ { LEN_STR_PAIR ("01;36") }, /* ln: Symlink: bright cyan */
+ { LEN_STR_PAIR ("33") }, /* pi: Pipe: yellow/brown */
+ { LEN_STR_PAIR ("01;35") }, /* so: Socket: bright magenta */
+ { LEN_STR_PAIR ("01;33") }, /* bd: Block device: bright yellow */
+ { LEN_STR_PAIR ("01;33") }, /* cd: Char device: bright yellow */
+ { 0, NULL }, /* mi: Missing file: undefined */
+ { 0, NULL }, /* or: Orphaned symlink: undefined */
+ { LEN_STR_PAIR ("01;32") }, /* ex: Executable: bright green */
+ { LEN_STR_PAIR ("01;35") }, /* do: Door: bright magenta */
+ { LEN_STR_PAIR ("37;41") }, /* su: setuid: white on red */
+ { LEN_STR_PAIR ("30;43") }, /* sg: setgid: black on yellow */
+ { LEN_STR_PAIR ("37;44") }, /* st: sticky: black on blue */
+ { LEN_STR_PAIR ("34;42") }, /* ow: other-writable: blue on green */
+ { LEN_STR_PAIR ("30;42") }, /* tw: ow w/ sticky: black on green */
+ };
+
+/* FIXME: comment */
+static struct color_ext_type *color_ext_list = NULL;
+
+/* Buffer for color sequences */
+static char *color_buf;
+
+/* True means to check for orphaned symbolic link, for displaying
+ colors. */
+
+static bool check_symlink_color;
+
+/* True means mention the inode number of each file. -i */
+
+static bool print_inode;
+
+/* What to do with symbolic links. Affected by -d, -F, -H, -l (and
+ other options that imply -l), and -L. */
+
+static enum Dereference_symlink dereference;
+
+/* True means when a directory is found, display info on its
+ contents. -R */
+
+static bool recursive;
+
+/* True means when an argument is a directory name, display info
+ on it itself. -d */
+
+static bool immediate_dirs;
+
+/* True means that directories are grouped before files. */
+
+static bool directories_first;
+
+/* Which files to ignore. */
+
+static enum
+{
+ /* Ignore files whose names start with `.', and files specified by
+ --hide and --ignore. */
+ IGNORE_DEFAULT,
+
+ /* Ignore `.', `..', and files specified by --ignore. */
+ IGNORE_DOT_AND_DOTDOT,
+
+ /* Ignore only files specified by --ignore. */
+ IGNORE_MINIMAL
+} ignore_mode;
+
+/* A linked list of shell-style globbing patterns. If a non-argument
+ file name matches any of these patterns, it is ignored.
+ Controlled by -I. Multiple -I options accumulate.
+ The -B option adds `*~' and `.*~' to this list. */
+
+struct ignore_pattern
+ {
+ const char *pattern;
+ struct ignore_pattern *next;
+ };
+
+static struct ignore_pattern *ignore_patterns;
+
+/* Similar to IGNORE_PATTERNS, except that -a or -A causes this
+ variable itself to be ignored. */
+static struct ignore_pattern *hide_patterns;
+
+/* True means output nongraphic chars in file names as `?'.
+ (-q, --hide-control-chars)
+ qmark_funny_chars and the quoting style (-Q, --quoting-style=WORD) are
+ independent. The algorithm is: first, obey the quoting style to get a
+ string representing the file name; then, if qmark_funny_chars is set,
+ replace all nonprintable chars in that string with `?'. It's necessary
+ to replace nonprintable chars even in quoted strings, because we don't
+ want to mess up the terminal if control chars get sent to it, and some
+ quoting methods pass through control chars as-is. */
+static bool qmark_funny_chars;
+
+/* Quoting options for file and dir name output. */
+
+static struct quoting_options *filename_quoting_options;
+static struct quoting_options *dirname_quoting_options;
+
+/* The number of chars per hardware tab stop. Setting this to zero
+ inhibits the use of TAB characters for separating columns. -T */
+static size_t tabsize;
+
+/* True means print each directory name before listing it. */
+
+static bool print_dir_name;
+
+/* The line length to use for breaking lines in many-per-line format.
+ Can be set with -w. */
+
+static size_t line_length;
+
+/* If true, the file listing format requires that stat be called on
+ each file. */
+
+static bool format_needs_stat;
+
+/* Similar to `format_needs_stat', but set if only the file type is
+ needed. */
+
+static bool format_needs_type;
+
+/* An arbitrary limit on the number of bytes in a printed time stamp.
+ This is set to a relatively small value to avoid the need to worry
+ about denial-of-service attacks on servers that run "ls" on behalf
+ of remote clients. 1000 bytes should be enough for any practical
+ time stamp format. */
+
+enum { TIME_STAMP_LEN_MAXIMUM = MAX (1000, INT_STRLEN_BOUND (time_t)) };
+
+/* strftime formats for non-recent and recent files, respectively, in
+ -l output. */
+
+static char const *long_time_format[2] =
+ {
+ /* strftime format for non-recent files (older than 6 months), in
+ -l output. This should contain the year, month and day (at
+ least), in an order that is understood by people in your
+ locale's territory. Please try to keep the number of used
+ screen columns small, because many people work in windows with
+ only 80 columns. But make this as wide as the other string
+ below, for recent files. */
+ N_("%b %e %Y"),
+ /* strftime format for recent files (younger than 6 months), in -l
+ output. This should contain the month, day and time (at
+ least), in an order that is understood by people in your
+ locale's territory. Please try to keep the number of used
+ screen columns small, because many people work in windows with
+ only 80 columns. But make this as wide as the other string
+ above, for non-recent files. */
+ N_("%b %e %H:%M")
+ };
+
+/* The set of signals that are caught. */
+
+static sigset_t caught_signals;
+
+/* If nonzero, the value of the pending fatal signal. */
+
+static sig_atomic_t volatile interrupt_signal;
+
+/* A count of the number of pending stop signals that have been received. */
+
+static sig_atomic_t volatile stop_signal_count;
+
+/* Desired exit status. */
+
+static int exit_status;
+
+/* Exit statuses. */
+enum
+ {
+ /* "ls" had a minor problem (e.g., it could not stat a directory
+ entry). */
+ LS_MINOR_PROBLEM = 1,
+
+ /* "ls" had more serious trouble. */
+ LS_FAILURE = 2
+ };
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ AUTHOR_OPTION = CHAR_MAX + 1,
+ BLOCK_SIZE_OPTION,
+ COLOR_OPTION,
+ DEREFERENCE_COMMAND_LINE_SYMLINK_TO_DIR_OPTION,
+ FILE_TYPE_INDICATOR_OPTION,
+ FORMAT_OPTION,
+ FULL_TIME_OPTION,
+ GROUP_DIRECTORIES_FIRST_OPTION,
+ HIDE_OPTION,
+ INDICATOR_STYLE_OPTION,
+
+ /* FIXME: --kilobytes is deprecated (but not -k); remove in late 2006 */
+ KILOBYTES_LONG_OPTION,
+
+ QUOTING_STYLE_OPTION,
+ SHOW_CONTROL_CHARS_OPTION,
+ SI_OPTION,
+ SORT_OPTION,
+ TIME_OPTION,
+ TIME_STYLE_OPTION
+};
+
+static struct option const long_options[] =
+{
+ {"all", no_argument, NULL, 'a'},
+ {"escape", no_argument, NULL, 'b'},
+ {"directory", no_argument, NULL, 'd'},
+ {"dired", no_argument, NULL, 'D'},
+ {"full-time", no_argument, NULL, FULL_TIME_OPTION},
+ {"group-directories-first", no_argument, NULL,
+ GROUP_DIRECTORIES_FIRST_OPTION},
+ {"human-readable", no_argument, NULL, 'h'},
+ {"inode", no_argument, NULL, 'i'},
+ {"kilobytes", no_argument, NULL, KILOBYTES_LONG_OPTION},
+ {"numeric-uid-gid", no_argument, NULL, 'n'},
+ {"no-group", no_argument, NULL, 'G'},
+ {"hide-control-chars", no_argument, NULL, 'q'},
+ {"reverse", no_argument, NULL, 'r'},
+ {"size", no_argument, NULL, 's'},
+ {"width", required_argument, NULL, 'w'},
+ {"almost-all", no_argument, NULL, 'A'},
+ {"ignore-backups", no_argument, NULL, 'B'},
+ {"classify", no_argument, NULL, 'F'},
+ {"file-type", no_argument, NULL, FILE_TYPE_INDICATOR_OPTION},
+ {"si", no_argument, NULL, SI_OPTION},
+ {"dereference-command-line", no_argument, NULL, 'H'},
+ {"dereference-command-line-symlink-to-dir", no_argument, NULL,
+ DEREFERENCE_COMMAND_LINE_SYMLINK_TO_DIR_OPTION},
+ {"hide", required_argument, NULL, HIDE_OPTION},
+ {"ignore", required_argument, NULL, 'I'},
+ {"indicator-style", required_argument, NULL, INDICATOR_STYLE_OPTION},
+ {"dereference", no_argument, NULL, 'L'},
+ {"literal", no_argument, NULL, 'N'},
+ {"quote-name", no_argument, NULL, 'Q'},
+ {"quoting-style", required_argument, NULL, QUOTING_STYLE_OPTION},
+ {"recursive", no_argument, NULL, 'R'},
+ {"format", required_argument, NULL, FORMAT_OPTION},
+ {"show-control-chars", no_argument, NULL, SHOW_CONTROL_CHARS_OPTION},
+ {"sort", required_argument, NULL, SORT_OPTION},
+ {"tabsize", required_argument, NULL, 'T'},
+ {"time", required_argument, NULL, TIME_OPTION},
+ {"time-style", required_argument, NULL, TIME_STYLE_OPTION},
+ {"color", optional_argument, NULL, COLOR_OPTION},
+ {"block-size", required_argument, NULL, BLOCK_SIZE_OPTION},
+ {"author", no_argument, NULL, AUTHOR_OPTION},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+static char const *const format_args[] =
+{
+ "verbose", "long", "commas", "horizontal", "across",
+ "vertical", "single-column", NULL
+};
+static enum format const format_types[] =
+{
+ long_format, long_format, with_commas, horizontal, horizontal,
+ many_per_line, one_per_line
+};
+ARGMATCH_VERIFY (format_args, format_types);
+
+static char const *const sort_args[] =
+{
+ "none", "time", "size", "extension", "version", NULL
+};
+static enum sort_type const sort_types[] =
+{
+ sort_none, sort_time, sort_size, sort_extension, sort_version
+};
+ARGMATCH_VERIFY (sort_args, sort_types);
+
+static char const *const time_args[] =
+{
+ "atime", "access", "use", "ctime", "status", NULL
+};
+static enum time_type const time_types[] =
+{
+ time_atime, time_atime, time_atime, time_ctime, time_ctime
+};
+ARGMATCH_VERIFY (time_args, time_types);
+
+static char const *const color_args[] =
+{
+ /* force and none are for compatibility with another color-ls version */
+ "always", "yes", "force",
+ "never", "no", "none",
+ "auto", "tty", "if-tty", NULL
+};
+static enum color_type const color_types[] =
+{
+ color_always, color_always, color_always,
+ color_never, color_never, color_never,
+ color_if_tty, color_if_tty, color_if_tty
+};
+ARGMATCH_VERIFY (color_args, color_types);
+
+/* Information about filling a column. */
+struct column_info
+{
+ bool valid_len;
+ size_t line_len;
+ size_t *col_arr;
+};
+
+/* Array with information about column filledness. */
+static struct column_info *column_info;
+
+/* Maximum number of columns ever possible for this display. */
+static size_t max_idx;
+
+/* The minimum width of a column is 3: 1 character for the name and 2
+ for the separating white space. */
+#define MIN_COLUMN_WIDTH 3
+
+
+/* This zero-based index is used solely with the --dired option.
+ When that option is in effect, this counter is incremented for each
+ byte of output generated by this program so that the beginning
+ and ending indices (in that output) of every file name can be recorded
+ and later output themselves. */
+static size_t dired_pos;
+
+#define DIRED_PUTCHAR(c) do {putchar ((c)); ++dired_pos;} while (0)
+
+/* Write S to STREAM and increment DIRED_POS by S_LEN. */
+#define DIRED_FPUTS(s, stream, s_len) \
+ do {fputs (s, stream); dired_pos += s_len;} while (0)
+
+/* Like DIRED_FPUTS, but for use when S is a literal string. */
+#define DIRED_FPUTS_LITERAL(s, stream) \
+ do {fputs (s, stream); dired_pos += sizeof (s) - 1;} while (0)
+
+#define DIRED_INDENT() \
+ do \
+ { \
+ if (dired) \
+ DIRED_FPUTS_LITERAL (" ", stdout); \
+ } \
+ while (0)
+
+/* With --dired, store pairs of beginning and ending indices of filenames. */
+static struct obstack dired_obstack;
+
+/* With --dired, store pairs of beginning and ending indices of any
+ directory names that appear as headers (just before `total' line)
+ for lists of directory entries. Such directory names are seen when
+ listing hierarchies using -R and when a directory is listed with at
+ least one other command line argument. */
+static struct obstack subdired_obstack;
+
+/* Save the current index on the specified obstack, OBS. */
+#define PUSH_CURRENT_DIRED_POS(obs) \
+ do \
+ { \
+ if (dired) \
+ obstack_grow (obs, &dired_pos, sizeof (dired_pos)); \
+ } \
+ while (0)
+
+/* With -R, this stack is used to help detect directory cycles.
+ The device/inode pairs on this stack mirror the pairs in the
+ active_dir_set hash table. */
+static struct obstack dev_ino_obstack;
+
+/* Push a pair onto the device/inode stack. */
+#define DEV_INO_PUSH(Dev, Ino) \
+ do \
+ { \
+ struct dev_ino *di; \
+ obstack_blank (&dev_ino_obstack, sizeof (struct dev_ino)); \
+ di = -1 + (struct dev_ino *) obstack_next_free (&dev_ino_obstack); \
+ di->st_dev = (Dev); \
+ di->st_ino = (Ino); \
+ } \
+ while (0)
+
+/* Pop a dev/ino struct off the global dev_ino_obstack
+ and return that struct. */
+static struct dev_ino
+dev_ino_pop (void)
+{
+ assert (sizeof (struct dev_ino) <= obstack_object_size (&dev_ino_obstack));
+ obstack_blank (&dev_ino_obstack, -(int) (sizeof (struct dev_ino)));
+ return *(struct dev_ino *) obstack_next_free (&dev_ino_obstack);
+}
+
+#define ASSERT_MATCHING_DEV_INO(Name, Di) \
+ do \
+ { \
+ struct stat sb; \
+ assert (Name); \
+ assert (0 <= stat (Name, &sb)); \
+ assert (sb.st_dev == Di.st_dev); \
+ assert (sb.st_ino == Di.st_ino); \
+ } \
+ while (0)
+
+
+/* Write to standard output PREFIX, followed by the quoting style and
+ a space-separated list of the integers stored in OS all on one line. */
+
+static void
+dired_dump_obstack (const char *prefix, struct obstack *os)
+{
+ size_t n_pos;
+
+ n_pos = obstack_object_size (os) / sizeof (dired_pos);
+ if (n_pos > 0)
+ {
+ size_t i;
+ size_t *pos;
+
+ pos = (size_t *) obstack_finish (os);
+ fputs (prefix, stdout);
+ for (i = 0; i < n_pos; i++)
+ printf (" %lu", (unsigned long int) pos[i]);
+ putchar ('\n');
+ }
+}
+
+static size_t
+dev_ino_hash (void const *x, size_t table_size)
+{
+ struct dev_ino const *p = x;
+ return (uintmax_t) p->st_ino % table_size;
+}
+
+static bool
+dev_ino_compare (void const *x, void const *y)
+{
+ struct dev_ino const *a = x;
+ struct dev_ino const *b = y;
+ return SAME_INODE (*a, *b) ? true : false;
+}
+
+static void
+dev_ino_free (void *x)
+{
+ free (x);
+}
+
+/* Add the device/inode pair (P->st_dev/P->st_ino) to the set of
+ active directories. Return true if there is already a matching
+ entry in the table. */
+
+static bool
+visit_dir (dev_t dev, ino_t ino)
+{
+ struct dev_ino *ent;
+ struct dev_ino *ent_from_table;
+ bool found_match;
+
+ ent = xmalloc (sizeof *ent);
+ ent->st_ino = ino;
+ ent->st_dev = dev;
+
+ /* Attempt to insert this entry into the table. */
+ ent_from_table = hash_insert (active_dir_set, ent);
+
+ if (ent_from_table == NULL)
+ {
+ /* Insertion failed due to lack of memory. */
+ xalloc_die ();
+ }
+
+ found_match = (ent_from_table != ent);
+
+ if (found_match)
+ {
+ /* ent was not inserted, so free it. */
+ free (ent);
+ }
+
+ return found_match;
+}
+
+static void
+free_pending_ent (struct pending *p)
+{
+ free (p->name);
+ free (p->realname);
+ free (p);
+}
+
+static bool
+is_colored (enum indicator_no type)
+{
+ size_t len = color_indicator[type].len;
+ char const *s = color_indicator[type].string;
+ return ! (len == 0
+ || (len == 1 && strncmp (s, "0", 1) == 0)
+ || (len == 2 && strncmp (s, "00", 2) == 0));
+}
+
+static void
+restore_default_color (void)
+{
+ put_indicator (&color_indicator[C_LEFT]);
+ put_indicator (&color_indicator[C_RIGHT]);
+}
+
+/* An ordinary signal was received; arrange for the program to exit. */
+
+static void
+sighandler (int sig)
+{
+ if (! SA_NOCLDSTOP)
+ signal (sig, SIG_IGN);
+ if (! interrupt_signal)
+ interrupt_signal = sig;
+}
+
+/* A SIGTSTP was received; arrange for the program to suspend itself. */
+
+static void
+stophandler (int sig)
+{
+ if (! SA_NOCLDSTOP)
+ signal (sig, stophandler);
+ if (! interrupt_signal)
+ stop_signal_count++;
+}
+
+/* Process any pending signals. If signals are caught, this function
+ should be called periodically. Ideally there should never be an
+ unbounded amount of time when signals are not being processed.
+ Signal handling can restore the default colors, so callers must
+ immediately change colors after invoking this function. */
+
+static void
+process_signals (void)
+{
+ while (interrupt_signal | stop_signal_count)
+ {
+ int sig;
+ int stops;
+ sigset_t oldset;
+
+ restore_default_color ();
+ fflush (stdout);
+
+ sigprocmask (SIG_BLOCK, &caught_signals, &oldset);
+
+ /* Reload interrupt_signal and stop_signal_count, in case a new
+ signal was handled before sigprocmask took effect. */
+ sig = interrupt_signal;
+ stops = stop_signal_count;
+
+ /* SIGTSTP is special, since the application can receive that signal
+ more than once. In this case, don't set the signal handler to the
+ default. Instead, just raise the uncatchable SIGSTOP. */
+ if (stops)
+ {
+ stop_signal_count = stops - 1;
+ sig = SIGSTOP;
+ }
+ else
+ signal (sig, SIG_DFL);
+
+ /* Exit or suspend the program. */
+ raise (sig);
+ sigprocmask (SIG_SETMASK, &oldset, NULL);
+
+ /* If execution reaches here, then the program has been
+ continued (after being suspended). */
+ }
+}
+
+int
+main (int argc, char **argv)
+{
+ int i;
+ struct pending *thispend;
+ int n_files;
+
+ /* The signals that are trapped, and the number of such signals. */
+ static int const sig[] =
+ {
+ /* This one is handled specially. */
+ SIGTSTP,
+
+ /* The usual suspects. */
+ SIGALRM, SIGHUP, SIGINT, SIGPIPE, SIGQUIT, SIGTERM,
+#ifdef SIGPOLL
+ SIGPOLL,
+#endif
+#ifdef SIGPROF
+ SIGPROF,
+#endif
+#ifdef SIGVTALRM
+ SIGVTALRM,
+#endif
+#ifdef SIGXCPU
+ SIGXCPU,
+#endif
+#ifdef SIGXFSZ
+ SIGXFSZ,
+#endif
+ };
+ enum { nsigs = sizeof sig / sizeof sig[0] };
+
+#if ! SA_NOCLDSTOP
+ bool caught_sig[nsigs];
+#endif
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ initialize_exit_failure (LS_FAILURE);
+ atexit (close_stdout);
+
+#define N_ENTRIES(Array) (sizeof Array / sizeof *(Array))
+ assert (N_ENTRIES (color_indicator) + 1 == N_ENTRIES (indicator_name));
+
+ exit_status = EXIT_SUCCESS;
+ print_dir_name = true;
+ pending_dirs = NULL;
+
+ i = decode_switches (argc, argv);
+
+ if (print_with_color)
+ parse_ls_color ();
+
+ /* Test print_with_color again, because the call to parse_ls_color
+ may have just reset it -- e.g., if LS_COLORS is invalid. */
+ if (print_with_color)
+ {
+ /* Avoid following symbolic links when possible. */
+ if (is_colored (C_ORPHAN)
+ || is_colored (C_EXEC)
+ || (is_colored (C_MISSING) && format == long_format))
+ check_symlink_color = true;
+
+ /* If the standard output is a controlling terminal, watch out
+ for signals, so that the colors can be restored to the
+ default state if "ls" is suspended or interrupted. */
+
+ if (0 <= tcgetpgrp (STDOUT_FILENO))
+ {
+ int j;
+#if SA_NOCLDSTOP
+ struct sigaction act;
+
+ sigemptyset (&caught_signals);
+ for (j = 0; j < nsigs; j++)
+ {
+ sigaction (sig[j], NULL, &act);
+ if (act.sa_handler != SIG_IGN)
+ sigaddset (&caught_signals, sig[j]);
+ }
+
+ act.sa_mask = caught_signals;
+ act.sa_flags = SA_RESTART;
+
+ for (j = 0; j < nsigs; j++)
+ if (sigismember (&caught_signals, sig[j]))
+ {
+ act.sa_handler = sig[j] == SIGTSTP ? stophandler : sighandler;
+ sigaction (sig[j], &act, NULL);
+ }
+#else
+ for (j = 0; j < nsigs; j++)
+ {
+ caught_sig[j] = (signal (sig[j], SIG_IGN) != SIG_IGN);
+ if (caught_sig[j])
+ {
+ signal (sig[j], sig[j] == SIGTSTP ? stophandler : sighandler);
+ siginterrupt (sig[j], 0);
+ }
+ }
+#endif
+ }
+
+ prep_non_filename_text ();
+ }
+
+ if (dereference == DEREF_UNDEFINED)
+ dereference = ((immediate_dirs
+ || indicator_style == classify
+ || format == long_format)
+ ? DEREF_NEVER
+ : DEREF_COMMAND_LINE_SYMLINK_TO_DIR);
+
+ /* When using -R, initialize a data structure we'll use to
+ detect any directory cycles. */
+ if (recursive)
+ {
+ active_dir_set = hash_initialize (INITIAL_TABLE_SIZE, NULL,
+ dev_ino_hash,
+ dev_ino_compare,
+ dev_ino_free);
+ if (active_dir_set == NULL)
+ xalloc_die ();
+
+ obstack_init (&dev_ino_obstack);
+ }
+
+ format_needs_stat = sort_type == sort_time || sort_type == sort_size
+ || format == long_format
+ || print_block_size;
+ format_needs_type = (! format_needs_stat
+ && (recursive
+ || print_with_color
+ || indicator_style != none
+ || directories_first));
+
+ if (dired)
+ {
+ obstack_init (&dired_obstack);
+ obstack_init (&subdired_obstack);
+ }
+
+ cwd_n_alloc = 100;
+ cwd_file = xnmalloc (cwd_n_alloc, sizeof *cwd_file);
+ cwd_n_used = 0;
+
+ clear_files ();
+
+ n_files = argc - i;
+
+ if (n_files <= 0)
+ {
+ if (immediate_dirs)
+ gobble_file (".", directory, NOT_AN_INODE_NUMBER, true, "");
+ else
+ queue_directory (".", NULL, true);
+ }
+ else
+ do
+ gobble_file (argv[i++], unknown, NOT_AN_INODE_NUMBER, true, "");
+ while (i < argc);
+
+ if (cwd_n_used)
+ {
+ sort_files ();
+ if (!immediate_dirs)
+ extract_dirs_from_files (NULL, true);
+ /* `cwd_n_used' might be zero now. */
+ }
+
+ /* In the following if/else blocks, it is sufficient to test `pending_dirs'
+ (and not pending_dirs->name) because there may be no markers in the queue
+ at this point. A marker may be enqueued when extract_dirs_from_files is
+ called with a non-empty string or via print_dir. */
+ if (cwd_n_used)
+ {
+ print_current_files ();
+ if (pending_dirs)
+ DIRED_PUTCHAR ('\n');
+ }
+ else if (n_files <= 1 && pending_dirs && pending_dirs->next == 0)
+ print_dir_name = false;
+
+ while (pending_dirs)
+ {
+ thispend = pending_dirs;
+ pending_dirs = pending_dirs->next;
+
+ if (LOOP_DETECT)
+ {
+ if (thispend->name == NULL)
+ {
+ /* thispend->name == NULL means this is a marker entry
+ indicating we've finished processing the directory.
+ Use its dev/ino numbers to remove the corresponding
+ entry from the active_dir_set hash table. */
+ struct dev_ino di = dev_ino_pop ();
+ struct dev_ino *found = hash_delete (active_dir_set, &di);
+ /* ASSERT_MATCHING_DEV_INO (thispend->realname, di); */
+ assert (found);
+ dev_ino_free (found);
+ free_pending_ent (thispend);
+ continue;
+ }
+ }
+
+ print_dir (thispend->name, thispend->realname,
+ thispend->command_line_arg);
+
+ free_pending_ent (thispend);
+ print_dir_name = true;
+ }
+
+ if (print_with_color)
+ {
+ int j;
+
+ restore_default_color ();
+ fflush (stdout);
+
+ /* Restore the default signal handling. */
+#if SA_NOCLDSTOP
+ for (j = 0; j < nsigs; j++)
+ if (sigismember (&caught_signals, sig[j]))
+ signal (sig[j], SIG_DFL);
+#else
+ for (j = 0; j < nsigs; j++)
+ if (caught_sig[j])
+ signal (sig[j], SIG_DFL);
+#endif
+
+ /* Act on any signals that arrived before the default was restored.
+ This can process signals out of order, but there doesn't seem to
+ be an easy way to do them in order, and the order isn't that
+ important anyway. */
+ for (j = stop_signal_count; j; j--)
+ raise (SIGSTOP);
+ j = interrupt_signal;
+ if (j)
+ raise (j);
+ }
+
+ if (dired)
+ {
+ /* No need to free these since we're about to exit. */
+ dired_dump_obstack ("//DIRED//", &dired_obstack);
+ dired_dump_obstack ("//SUBDIRED//", &subdired_obstack);
+ printf ("//DIRED-OPTIONS// --quoting-style=%s\n",
+ quoting_style_args[get_quoting_style (filename_quoting_options)]);
+ }
+
+ if (LOOP_DETECT)
+ {
+ assert (hash_get_n_entries (active_dir_set) == 0);
+ hash_free (active_dir_set);
+ }
+
+ exit (exit_status);
+}
+
+/* Set all the option flags according to the switches specified.
+ Return the index of the first non-option argument. */
+
+static int
+decode_switches (int argc, char **argv)
+{
+ int c;
+ char *time_style_option = NULL;
+
+ /* Record whether there is an option specifying sort type. */
+ bool sort_type_specified = false;
+
+ qmark_funny_chars = false;
+
+ /* initialize all switches to default settings */
+
+ switch (ls_mode)
+ {
+ case LS_MULTI_COL:
+ /* This is for the `dir' program. */
+ format = many_per_line;
+ set_quoting_style (NULL, escape_quoting_style);
+ break;
+
+ case LS_LONG_FORMAT:
+ /* This is for the `vdir' program. */
+ format = long_format;
+ set_quoting_style (NULL, escape_quoting_style);
+ break;
+
+ case LS_LS:
+ /* This is for the `ls' program. */
+ if (isatty (STDOUT_FILENO))
+ {
+ format = many_per_line;
+ /* See description of qmark_funny_chars, above. */
+ qmark_funny_chars = true;
+ }
+ else
+ {
+ format = one_per_line;
+ qmark_funny_chars = false;
+ }
+ break;
+
+ default:
+ abort ();
+ }
+
+ time_type = time_mtime;
+ sort_type = sort_name;
+ sort_reverse = false;
+ numeric_ids = false;
+ print_block_size = false;
+ indicator_style = none;
+ print_inode = false;
+ dereference = DEREF_UNDEFINED;
+ recursive = false;
+ immediate_dirs = false;
+ ignore_mode = IGNORE_DEFAULT;
+ ignore_patterns = NULL;
+ hide_patterns = NULL;
+
+ /* FIXME: put this in a function. */
+ {
+ char const *q_style = getenv ("QUOTING_STYLE");
+ if (q_style)
+ {
+ int i = ARGMATCH (q_style, quoting_style_args, quoting_style_vals);
+ if (0 <= i)
+ set_quoting_style (NULL, quoting_style_vals[i]);
+ else
+ error (0, 0,
+ _("ignoring invalid value of environment variable QUOTING_STYLE: %s"),
+ quotearg (q_style));
+ }
+ }
+
+ {
+ char const *ls_block_size = getenv ("LS_BLOCK_SIZE");
+ human_output_opts = human_options (ls_block_size, false,
+ &output_block_size);
+ if (ls_block_size || getenv ("BLOCK_SIZE"))
+ file_output_block_size = output_block_size;
+ }
+
+ line_length = 80;
+ {
+ char const *p = getenv ("COLUMNS");
+ if (p && *p)
+ {
+ unsigned long int tmp_ulong;
+ if (xstrtoul (p, NULL, 0, &tmp_ulong, NULL) == LONGINT_OK
+ && 0 < tmp_ulong && tmp_ulong <= SIZE_MAX)
+ {
+ line_length = tmp_ulong;
+ }
+ else
+ {
+ error (0, 0,
+ _("ignoring invalid width in environment variable COLUMNS: %s"),
+ quotearg (p));
+ }
+ }
+ }
+
+#ifdef TIOCGWINSZ
+ {
+ struct winsize ws;
+
+ if (ioctl (STDOUT_FILENO, TIOCGWINSZ, &ws) != -1
+ && 0 < ws.ws_col && ws.ws_col == (size_t) ws.ws_col)
+ line_length = ws.ws_col;
+ }
+#endif
+
+ {
+ char const *p = getenv ("TABSIZE");
+ tabsize = 8;
+ if (p)
+ {
+ unsigned long int tmp_ulong;
+ if (xstrtoul (p, NULL, 0, &tmp_ulong, NULL) == LONGINT_OK
+ && tmp_ulong <= SIZE_MAX)
+ {
+ tabsize = tmp_ulong;
+ }
+ else
+ {
+ error (0, 0,
+ _("ignoring invalid tab size in environment variable TABSIZE: %s"),
+ quotearg (p));
+ }
+ }
+ }
+
+ while ((c = getopt_long (argc, argv,
+ "abcdfghiklmnopqrstuvw:xABCDFGHI:LNQRST:UX1",
+ long_options, NULL)) != -1)
+ {
+ switch (c)
+ {
+ case 'a':
+ ignore_mode = IGNORE_MINIMAL;
+ break;
+
+ case 'b':
+ set_quoting_style (NULL, escape_quoting_style);
+ break;
+
+ case 'c':
+ time_type = time_ctime;
+ break;
+
+ case 'd':
+ immediate_dirs = true;
+ break;
+
+ case 'f':
+ /* Same as enabling -a -U and disabling -l -s. */
+ ignore_mode = IGNORE_MINIMAL;
+ sort_type = sort_none;
+ sort_type_specified = true;
+ /* disable -l */
+ if (format == long_format)
+ format = (isatty (STDOUT_FILENO) ? many_per_line : one_per_line);
+ print_block_size = false; /* disable -s */
+ print_with_color = false; /* disable --color */
+ break;
+
+ case FILE_TYPE_INDICATOR_OPTION: /* --file-type */
+ indicator_style = file_type;
+ break;
+
+ case 'g':
+ format = long_format;
+ print_owner = false;
+ break;
+
+ case 'h':
+ human_output_opts = human_autoscale | human_SI | human_base_1024;
+ file_output_block_size = output_block_size = 1;
+ break;
+
+ case 'i':
+ print_inode = true;
+ break;
+
+ case KILOBYTES_LONG_OPTION:
+ error (0, 0,
+ _("the --kilobytes option is deprecated; use -k instead"));
+ /* fall through */
+ case 'k':
+ human_output_opts = 0;
+ file_output_block_size = output_block_size = 1024;
+ break;
+
+ case 'l':
+ format = long_format;
+ break;
+
+ case 'm':
+ format = with_commas;
+ break;
+
+ case 'n':
+ numeric_ids = true;
+ format = long_format;
+ break;
+
+ case 'o': /* Just like -l, but don't display group info. */
+ format = long_format;
+ print_group = false;
+ break;
+
+ case 'p':
+ indicator_style = slash;
+ break;
+
+ case 'q':
+ qmark_funny_chars = true;
+ break;
+
+ case 'r':
+ sort_reverse = true;
+ break;
+
+ case 's':
+ print_block_size = true;
+ break;
+
+ case 't':
+ sort_type = sort_time;
+ sort_type_specified = true;
+ break;
+
+ case 'u':
+ time_type = time_atime;
+ break;
+
+ case 'v':
+ sort_type = sort_version;
+ sort_type_specified = true;
+ break;
+
+ case 'w':
+ {
+ unsigned long int tmp_ulong;
+ if (xstrtoul (optarg, NULL, 0, &tmp_ulong, NULL) != LONGINT_OK
+ || ! (0 < tmp_ulong && tmp_ulong <= SIZE_MAX))
+ error (LS_FAILURE, 0, _("invalid line width: %s"),
+ quotearg (optarg));
+ line_length = tmp_ulong;
+ break;
+ }
+
+ case 'x':
+ format = horizontal;
+ break;
+
+ case 'A':
+ if (ignore_mode == IGNORE_DEFAULT)
+ ignore_mode = IGNORE_DOT_AND_DOTDOT;
+ break;
+
+ case 'B':
+ add_ignore_pattern ("*~");
+ add_ignore_pattern (".*~");
+ break;
+
+ case 'C':
+ format = many_per_line;
+ break;
+
+ case 'D':
+ dired = true;
+ break;
+
+ case 'F':
+ indicator_style = classify;
+ break;
+
+ case 'G': /* inhibit display of group info */
+ print_group = false;
+ break;
+
+ case 'H':
+ dereference = DEREF_COMMAND_LINE_ARGUMENTS;
+ break;
+
+ case DEREFERENCE_COMMAND_LINE_SYMLINK_TO_DIR_OPTION:
+ dereference = DEREF_COMMAND_LINE_SYMLINK_TO_DIR;
+ break;
+
+ case 'I':
+ add_ignore_pattern (optarg);
+ break;
+
+ case 'L':
+ dereference = DEREF_ALWAYS;
+ break;
+
+ case 'N':
+ set_quoting_style (NULL, literal_quoting_style);
+ break;
+
+ case 'Q':
+ set_quoting_style (NULL, c_quoting_style);
+ break;
+
+ case 'R':
+ recursive = true;
+ break;
+
+ case 'S':
+ sort_type = sort_size;
+ sort_type_specified = true;
+ break;
+
+ case 'T':
+ {
+ unsigned long int tmp_ulong;
+ if (xstrtoul (optarg, NULL, 0, &tmp_ulong, NULL) != LONGINT_OK
+ || SIZE_MAX < tmp_ulong)
+ error (LS_FAILURE, 0, _("invalid tab size: %s"),
+ quotearg (optarg));
+ tabsize = tmp_ulong;
+ break;
+ }
+
+ case 'U':
+ sort_type = sort_none;
+ sort_type_specified = true;
+ break;
+
+ case 'X':
+ sort_type = sort_extension;
+ sort_type_specified = true;
+ break;
+
+ case '1':
+ /* -1 has no effect after -l. */
+ if (format != long_format)
+ format = one_per_line;
+ break;
+
+ case AUTHOR_OPTION:
+ print_author = true;
+ break;
+
+ case HIDE_OPTION:
+ {
+ struct ignore_pattern *hide = xmalloc (sizeof *hide);
+ hide->pattern = optarg;
+ hide->next = hide_patterns;
+ hide_patterns = hide;
+ }
+ break;
+
+ case SORT_OPTION:
+ sort_type = XARGMATCH ("--sort", optarg, sort_args, sort_types);
+ sort_type_specified = true;
+ break;
+
+ case GROUP_DIRECTORIES_FIRST_OPTION:
+ directories_first = true;
+ break;
+
+ case TIME_OPTION:
+ time_type = XARGMATCH ("--time", optarg, time_args, time_types);
+ break;
+
+ case FORMAT_OPTION:
+ format = XARGMATCH ("--format", optarg, format_args, format_types);
+ break;
+
+ case FULL_TIME_OPTION:
+ format = long_format;
+ time_style_option = "full-iso";
+ break;
+
+ case COLOR_OPTION:
+ {
+ int i;
+ if (optarg)
+ i = XARGMATCH ("--color", optarg, color_args, color_types);
+ else
+ /* Using --color with no argument is equivalent to using
+ --color=always. */
+ i = color_always;
+
+ print_with_color = (i == color_always
+ || (i == color_if_tty
+ && isatty (STDOUT_FILENO)));
+
+ if (print_with_color)
+ {
+ /* Don't use TAB characters in output. Some terminal
+ emulators can't handle the combination of tabs and
+ color codes on the same line. */
+ tabsize = 0;
+ }
+ break;
+ }
+
+ case INDICATOR_STYLE_OPTION:
+ indicator_style = XARGMATCH ("--indicator-style", optarg,
+ indicator_style_args,
+ indicator_style_types);
+ break;
+
+ case QUOTING_STYLE_OPTION:
+ set_quoting_style (NULL,
+ XARGMATCH ("--quoting-style", optarg,
+ quoting_style_args,
+ quoting_style_vals));
+ break;
+
+ case TIME_STYLE_OPTION:
+ time_style_option = optarg;
+ break;
+
+ case SHOW_CONTROL_CHARS_OPTION:
+ qmark_funny_chars = false;
+ break;
+
+ case BLOCK_SIZE_OPTION:
+ human_output_opts = human_options (optarg, true, &output_block_size);
+ file_output_block_size = output_block_size;
+ break;
+
+ case SI_OPTION:
+ human_output_opts = human_autoscale | human_SI;
+ file_output_block_size = output_block_size = 1;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (LS_FAILURE);
+ }
+ }
+
+ max_idx = MAX (1, line_length / MIN_COLUMN_WIDTH);
+
+ filename_quoting_options = clone_quoting_options (NULL);
+ if (get_quoting_style (filename_quoting_options) == escape_quoting_style)
+ set_char_quoting (filename_quoting_options, ' ', 1);
+ if (file_type <= indicator_style)
+ {
+ char const *p;
+ for (p = "*=>@|" + indicator_style - file_type; *p; p++)
+ set_char_quoting (filename_quoting_options, *p, 1);
+ }
+
+ dirname_quoting_options = clone_quoting_options (NULL);
+ set_char_quoting (dirname_quoting_options, ':', 1);
+
+ /* --dired is meaningful only with --format=long (-l).
+ Otherwise, ignore it. FIXME: warn about this?
+ Alternatively, make --dired imply --format=long? */
+ if (dired && format != long_format)
+ dired = false;
+
+ /* If -c or -u is specified and not -l (or any other option that implies -l),
+ and no sort-type was specified, then sort by the ctime (-c) or atime (-u).
+ The behavior of ls when using either -c or -u but with neither -l nor -t
+ appears to be unspecified by POSIX. So, with GNU ls, `-u' alone means
+ sort by atime (this is the one that's not specified by the POSIX spec),
+ -lu means show atime and sort by name, -lut means show atime and sort
+ by atime. */
+
+ if ((time_type == time_ctime || time_type == time_atime)
+ && !sort_type_specified && format != long_format)
+ {
+ sort_type = sort_time;
+ }
+
+ if (format == long_format)
+ {
+ char *style = time_style_option;
+ static char const posix_prefix[] = "posix-";
+
+ if (! style)
+ if (! (style = getenv ("TIME_STYLE")))
+ style = "locale";
+
+ while (strncmp (style, posix_prefix, sizeof posix_prefix - 1) == 0)
+ {
+ if (! hard_locale (LC_TIME))
+ return optind;
+ style += sizeof posix_prefix - 1;
+ }
+
+ if (*style == '+')
+ {
+ char *p0 = style + 1;
+ char *p1 = strchr (p0, '\n');
+ if (! p1)
+ p1 = p0;
+ else
+ {
+ if (strchr (p1 + 1, '\n'))
+ error (LS_FAILURE, 0, _("invalid time style format %s"),
+ quote (p0));
+ *p1++ = '\0';
+ }
+ long_time_format[0] = p0;
+ long_time_format[1] = p1;
+ }
+ else
+ switch (XARGMATCH ("time style", style,
+ time_style_args,
+ time_style_types))
+ {
+ case full_iso_time_style:
+ long_time_format[0] = long_time_format[1] =
+ "%Y-%m-%d %H:%M:%S.%N %z";
+ break;
+
+ case long_iso_time_style:
+ case_long_iso_time_style:
+ long_time_format[0] = long_time_format[1] = "%Y-%m-%d %H:%M";
+ break;
+
+ case iso_time_style:
+ long_time_format[0] = "%Y-%m-%d ";
+ long_time_format[1] = "%m-%d %H:%M";
+ break;
+
+ case locale_time_style:
+ if (hard_locale (LC_TIME))
+ {
+ /* Ensure that the locale has translations for both
+ formats. If not, fall back on long-iso format. */
+ int i;
+ for (i = 0; i < 2; i++)
+ {
+ char const *locale_format =
+ dcgettext (NULL, long_time_format[i], LC_TIME);
+ if (locale_format == long_time_format[i])
+ goto case_long_iso_time_style;
+ long_time_format[i] = locale_format;
+ }
+ }
+ }
+ }
+
+ return optind;
+}
+
+/* Parse a string as part of the LS_COLORS variable; this may involve
+ decoding all kinds of escape characters. If equals_end is set an
+ unescaped equal sign ends the string, otherwise only a : or \0
+ does. Set *OUTPUT_COUNT to the number of bytes output. Return
+ true if successful.
+
+ The resulting string is *not* null-terminated, but may contain
+ embedded nulls.
+
+ Note that both dest and src are char **; on return they point to
+ the first free byte after the array and the character that ended
+ the input string, respectively. */
+
+static bool
+get_funky_string (char **dest, const char **src, bool equals_end,
+ size_t *output_count)
+{
+ char num; /* For numerical codes */
+ size_t count; /* Something to count with */
+ enum {
+ ST_GND, ST_BACKSLASH, ST_OCTAL, ST_HEX, ST_CARET, ST_END, ST_ERROR
+ } state;
+ const char *p;
+ char *q;
+
+ p = *src; /* We don't want to double-indirect */
+ q = *dest; /* the whole darn time. */
+
+ count = 0; /* No characters counted in yet. */
+ num = 0;
+
+ state = ST_GND; /* Start in ground state. */
+ while (state < ST_END)
+ {
+ switch (state)
+ {
+ case ST_GND: /* Ground state (no escapes) */
+ switch (*p)
+ {
+ case ':':
+ case '\0':
+ state = ST_END; /* End of string */
+ break;
+ case '\\':
+ state = ST_BACKSLASH; /* Backslash scape sequence */
+ ++p;
+ break;
+ case '^':
+ state = ST_CARET; /* Caret escape */
+ ++p;
+ break;
+ case '=':
+ if (equals_end)
+ {
+ state = ST_END; /* End */
+ break;
+ }
+ /* else fall through */
+ default:
+ *(q++) = *(p++);
+ ++count;
+ break;
+ }
+ break;
+
+ case ST_BACKSLASH: /* Backslash escaped character */
+ switch (*p)
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ state = ST_OCTAL; /* Octal sequence */
+ num = *p - '0';
+ break;
+ case 'x':
+ case 'X':
+ state = ST_HEX; /* Hex sequence */
+ num = 0;
+ break;
+ case 'a': /* Bell */
+ num = '\a';
+ break;
+ case 'b': /* Backspace */
+ num = '\b';
+ break;
+ case 'e': /* Escape */
+ num = 27;
+ break;
+ case 'f': /* Form feed */
+ num = '\f';
+ break;
+ case 'n': /* Newline */
+ num = '\n';
+ break;
+ case 'r': /* Carriage return */
+ num = '\r';
+ break;
+ case 't': /* Tab */
+ num = '\t';
+ break;
+ case 'v': /* Vtab */
+ num = '\v';
+ break;
+ case '?': /* Delete */
+ num = 127;
+ break;
+ case '_': /* Space */
+ num = ' ';
+ break;
+ case '\0': /* End of string */
+ state = ST_ERROR; /* Error! */
+ break;
+ default: /* Escaped character like \ ^ : = */
+ num = *p;
+ break;
+ }
+ if (state == ST_BACKSLASH)
+ {
+ *(q++) = num;
+ ++count;
+ state = ST_GND;
+ }
+ ++p;
+ break;
+
+ case ST_OCTAL: /* Octal sequence */
+ if (*p < '0' || *p > '7')
+ {
+ *(q++) = num;
+ ++count;
+ state = ST_GND;
+ }
+ else
+ num = (num << 3) + (*(p++) - '0');
+ break;
+
+ case ST_HEX: /* Hex sequence */
+ switch (*p)
+ {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ num = (num << 4) + (*(p++) - '0');
+ break;
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ num = (num << 4) + (*(p++) - 'a') + 10;
+ break;
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ num = (num << 4) + (*(p++) - 'A') + 10;
+ break;
+ default:
+ *(q++) = num;
+ ++count;
+ state = ST_GND;
+ break;
+ }
+ break;
+
+ case ST_CARET: /* Caret escape */
+ state = ST_GND; /* Should be the next state... */
+ if (*p >= '@' && *p <= '~')
+ {
+ *(q++) = *(p++) & 037;
+ ++count;
+ }
+ else if (*p == '?')
+ {
+ *(q++) = 127;
+ ++count;
+ }
+ else
+ state = ST_ERROR;
+ break;
+
+ default:
+ abort ();
+ }
+ }
+
+ *dest = q;
+ *src = p;
+ *output_count = count;
+
+ return state != ST_ERROR;
+}
+
+static void
+parse_ls_color (void)
+{
+ const char *p; /* Pointer to character being parsed */
+ char *buf; /* color_buf buffer pointer */
+ int state; /* State of parser */
+ int ind_no; /* Indicator number */
+ char label[3]; /* Indicator label */
+ struct color_ext_type *ext; /* Extension we are working on */
+
+ if ((p = getenv ("LS_COLORS")) == NULL || *p == '\0')
+ return;
+
+ ext = NULL;
+ strcpy (label, "??");
+
+ /* This is an overly conservative estimate, but any possible
+ LS_COLORS string will *not* generate a color_buf longer than
+ itself, so it is a safe way of allocating a buffer in
+ advance. */
+ buf = color_buf = xstrdup (p);
+
+ state = 1;
+ while (state > 0)
+ {
+ switch (state)
+ {
+ case 1: /* First label character */
+ switch (*p)
+ {
+ case ':':
+ ++p;
+ break;
+
+ case '*':
+ /* Allocate new extension block and add to head of
+ linked list (this way a later definition will
+ override an earlier one, which can be useful for
+ having terminal-specific defs override global). */
+
+ ext = xmalloc (sizeof *ext);
+ ext->next = color_ext_list;
+ color_ext_list = ext;
+
+ ++p;
+ ext->ext.string = buf;
+
+ state = (get_funky_string (&buf, &p, true, &ext->ext.len)
+ ? 4 : -1);
+ break;
+
+ case '\0':
+ state = 0; /* Done! */
+ break;
+
+ default: /* Assume it is file type label */
+ label[0] = *(p++);
+ state = 2;
+ break;
+ }
+ break;
+
+ case 2: /* Second label character */
+ if (*p)
+ {
+ label[1] = *(p++);
+ state = 3;
+ }
+ else
+ state = -1; /* Error */
+ break;
+
+ case 3: /* Equal sign after indicator label */
+ state = -1; /* Assume failure... */
+ if (*(p++) == '=')/* It *should* be... */
+ {
+ for (ind_no = 0; indicator_name[ind_no] != NULL; ++ind_no)
+ {
+ if (STREQ (label, indicator_name[ind_no]))
+ {
+ color_indicator[ind_no].string = buf;
+ state = (get_funky_string (&buf, &p, false,
+ &color_indicator[ind_no].len)
+ ? 1 : -1);
+ break;
+ }
+ }
+ if (state == -1)
+ error (0, 0, _("unrecognized prefix: %s"), quotearg (label));
+ }
+ break;
+
+ case 4: /* Equal sign after *.ext */
+ if (*(p++) == '=')
+ {
+ ext->seq.string = buf;
+ state = (get_funky_string (&buf, &p, false, &ext->seq.len)
+ ? 1 : -1);
+ }
+ else
+ state = -1;
+ break;
+ }
+ }
+
+ if (state < 0)
+ {
+ struct color_ext_type *e;
+ struct color_ext_type *e2;
+
+ error (0, 0,
+ _("unparsable value for LS_COLORS environment variable"));
+ free (color_buf);
+ for (e = color_ext_list; e != NULL; /* empty */)
+ {
+ e2 = e;
+ e = e->next;
+ free (e2);
+ }
+ print_with_color = false;
+ }
+
+ if (color_indicator[C_LINK].len == 6
+ && !strncmp (color_indicator[C_LINK].string, "target", 6))
+ color_symlink_as_referent = true;
+}
+
+/* Set the exit status to report a failure. If SERIOUS, it is a
+ serious failure; otherwise, it is merely a minor problem. */
+
+static void
+set_exit_status (bool serious)
+{
+ if (serious)
+ exit_status = LS_FAILURE;
+ else if (exit_status == EXIT_SUCCESS)
+ exit_status = LS_MINOR_PROBLEM;
+}
+
+/* Assuming a failure is serious if SERIOUS, use the printf-style
+ MESSAGE to report the failure to access a file named FILE. Assume
+ errno is set appropriately for the failure. */
+
+static void
+file_failure (bool serious, char const *message, char const *file)
+{
+ error (0, errno, message, quotearg_colon (file));
+ set_exit_status (serious);
+}
+
+/* Request that the directory named NAME have its contents listed later.
+ If REALNAME is nonzero, it will be used instead of NAME when the
+ directory name is printed. This allows symbolic links to directories
+ to be treated as regular directories but still be listed under their
+ real names. NAME == NULL is used to insert a marker entry for the
+ directory named in REALNAME.
+ If NAME is non-NULL, we use its dev/ino information to save
+ a call to stat -- when doing a recursive (-R) traversal.
+ COMMAND_LINE_ARG means this directory was mentioned on the command line. */
+
+static void
+queue_directory (char const *name, char const *realname, bool command_line_arg)
+{
+ struct pending *new = xmalloc (sizeof *new);
+ new->realname = realname ? xstrdup (realname) : NULL;
+ new->name = name ? xstrdup (name) : NULL;
+ new->command_line_arg = command_line_arg;
+ new->next = pending_dirs;
+ pending_dirs = new;
+}
+
+/* Read directory NAME, and list the files in it.
+ If REALNAME is nonzero, print its name instead of NAME;
+ this is used for symbolic links to directories.
+ COMMAND_LINE_ARG means this directory was mentioned on the command line. */
+
+static void
+print_dir (char const *name, char const *realname, bool command_line_arg)
+{
+ DIR *dirp;
+ struct dirent *next;
+ uintmax_t total_blocks = 0;
+ static bool first = true;
+
+ errno = 0;
+ dirp = opendir (name);
+ if (!dirp)
+ {
+ file_failure (command_line_arg, _("cannot open directory %s"), name);
+ return;
+ }
+
+ if (LOOP_DETECT)
+ {
+ struct stat dir_stat;
+ int fd = dirfd (dirp);
+
+ /* If dirfd failed, endure the overhead of using stat. */
+ if ((0 <= fd
+ ? fstat (fd, &dir_stat)
+ : stat (name, &dir_stat)) < 0)
+ {
+ file_failure (command_line_arg,
+ _("cannot determine device and inode of %s"), name);
+ closedir (dirp);
+ return;
+ }
+
+ /* If we've already visited this dev/inode pair, warn that
+ we've found a loop, and do not process this directory. */
+ if (visit_dir (dir_stat.st_dev, dir_stat.st_ino))
+ {
+ error (0, 0, _("%s: not listing already-listed directory"),
+ quotearg_colon (name));
+ closedir (dirp);
+ return;
+ }
+
+ DEV_INO_PUSH (dir_stat.st_dev, dir_stat.st_ino);
+ }
+
+ /* Read the directory entries, and insert the subfiles into the `cwd_file'
+ table. */
+
+ clear_files ();
+
+ while (1)
+ {
+ /* Set errno to zero so we can distinguish between a readdir failure
+ and when readdir simply finds that there are no more entries. */
+ errno = 0;
+ next = readdir (dirp);
+ if (next)
+ {
+ if (! file_ignored (next->d_name))
+ {
+ enum filetype type = unknown;
+
+#if HAVE_STRUCT_DIRENT_D_TYPE
+ switch (next->d_type)
+ {
+ case DT_BLK: type = blockdev; break;
+ case DT_CHR: type = chardev; break;
+ case DT_DIR: type = directory; break;
+ case DT_FIFO: type = fifo; break;
+ case DT_LNK: type = symbolic_link; break;
+ case DT_REG: type = normal; break;
+ case DT_SOCK: type = sock; break;
+# ifdef DT_WHT
+ case DT_WHT: type = whiteout; break;
+# endif
+ }
+#endif
+ total_blocks += gobble_file (next->d_name, type, D_INO (next),
+ false, name);
+ }
+ }
+ else if (errno != 0)
+ {
+ file_failure (command_line_arg, _("reading directory %s"), name);
+ if (errno != EOVERFLOW)
+ break;
+ }
+ else
+ break;
+ }
+
+ if (closedir (dirp) != 0)
+ {
+ file_failure (command_line_arg, _("closing directory %s"), name);
+ /* Don't return; print whatever we got. */
+ }
+
+ /* Sort the directory contents. */
+ sort_files ();
+
+ /* If any member files are subdirectories, perhaps they should have their
+ contents listed rather than being mentioned here as files. */
+
+ if (recursive)
+ extract_dirs_from_files (name, command_line_arg);
+
+ if (recursive | print_dir_name)
+ {
+ if (!first)
+ DIRED_PUTCHAR ('\n');
+ first = false;
+ DIRED_INDENT ();
+ PUSH_CURRENT_DIRED_POS (&subdired_obstack);
+ dired_pos += quote_name (stdout, realname ? realname : name,
+ dirname_quoting_options, NULL);
+ PUSH_CURRENT_DIRED_POS (&subdired_obstack);
+ DIRED_FPUTS_LITERAL (":\n", stdout);
+ }
+
+ if (format == long_format || print_block_size)
+ {
+ const char *p;
+ char buf[LONGEST_HUMAN_READABLE + 1];
+
+ DIRED_INDENT ();
+ p = _("total");
+ DIRED_FPUTS (p, stdout, strlen (p));
+ DIRED_PUTCHAR (' ');
+ p = human_readable (total_blocks, buf, human_output_opts,
+ ST_NBLOCKSIZE, output_block_size);
+ DIRED_FPUTS (p, stdout, strlen (p));
+ DIRED_PUTCHAR ('\n');
+ }
+
+ if (cwd_n_used)
+ print_current_files ();
+}
+
+/* Add `pattern' to the list of patterns for which files that match are
+ not listed. */
+
+static void
+add_ignore_pattern (const char *pattern)
+{
+ struct ignore_pattern *ignore;
+
+ ignore = xmalloc (sizeof *ignore);
+ ignore->pattern = pattern;
+ /* Add it to the head of the linked list. */
+ ignore->next = ignore_patterns;
+ ignore_patterns = ignore;
+}
+
+/* Return true if one of the PATTERNS matches FILE. */
+
+static bool
+patterns_match (struct ignore_pattern const *patterns, char const *file)
+{
+ struct ignore_pattern const *p;
+ for (p = patterns; p; p = p->next)
+ if (fnmatch (p->pattern, file, FNM_PERIOD) == 0)
+ return true;
+ return false;
+}
+
+/* Return true if FILE should be ignored. */
+
+static bool
+file_ignored (char const *name)
+{
+ return ((ignore_mode != IGNORE_MINIMAL
+ && name[0] == '.'
+ && (ignore_mode == IGNORE_DEFAULT || ! name[1 + (name[1] == '.')]))
+ || (ignore_mode == IGNORE_DEFAULT
+ && patterns_match (hide_patterns, name))
+ || patterns_match (ignore_patterns, name));
+}
+
+/* POSIX requires that a file size be printed without a sign, even
+ when negative. Assume the typical case where negative sizes are
+ actually positive values that have wrapped around. */
+
+static uintmax_t
+unsigned_file_size (off_t size)
+{
+ return size + (size < 0) * ((uintmax_t) OFF_T_MAX - OFF_T_MIN + 1);
+}
+
+/* Enter and remove entries in the table `cwd_file'. */
+
+/* Empty the table of files. */
+
+static void
+clear_files (void)
+{
+ size_t i;
+
+ for (i = 0; i < cwd_n_used; i++)
+ {
+ struct fileinfo *f = sorted_file[i];
+ free (f->name);
+ free (f->linkname);
+ }
+
+ cwd_n_used = 0;
+#if USE_ACL
+ any_has_acl = false;
+#endif
+ inode_number_width = 0;
+ block_size_width = 0;
+ nlink_width = 0;
+ owner_width = 0;
+ group_width = 0;
+ author_width = 0;
+ major_device_number_width = 0;
+ minor_device_number_width = 0;
+ file_size_width = 0;
+}
+
+/* Add a file to the current table of files.
+ Verify that the file exists, and print an error message if it does not.
+ Return the number of blocks that the file occupies. */
+
+static uintmax_t
+gobble_file (char const *name, enum filetype type, ino_t inode,
+ bool command_line_arg, char const *dirname)
+{
+ uintmax_t blocks = 0;
+ struct fileinfo *f;
+
+ /* An inode value prior to gobble_file necessarily came from readdir,
+ which is not used for command line arguments. */
+ assert (! command_line_arg || inode == NOT_AN_INODE_NUMBER);
+
+ if (cwd_n_used == cwd_n_alloc)
+ {
+ cwd_file = xnrealloc (cwd_file, cwd_n_alloc, 2 * sizeof *cwd_file);
+ cwd_n_alloc *= 2;
+ }
+
+ f = &cwd_file[cwd_n_used];
+ memset (f, '\0', sizeof *f);
+ f->stat.st_ino = inode;
+ f->filetype = type;
+
+ if (command_line_arg
+ || format_needs_stat
+ /* When coloring a directory (we may know the type from
+ direct.d_type), we have to stat it in order to indicate
+ sticky and/or other-writable attributes. */
+ || (type == directory && print_with_color)
+ /* When dereferencing symlinks, the inode and type must come from
+ stat, but readdir provides the inode and type of lstat. */
+ || ((print_inode || format_needs_type)
+ && (type == symbolic_link || type == unknown)
+ && (dereference == DEREF_ALWAYS
+ || (command_line_arg && dereference != DEREF_NEVER)))
+ /* Command line dereferences are already taken care of by the above
+ assertion that the inode number is not yet known. */
+ || (print_inode && inode == NOT_AN_INODE_NUMBER)
+ || (format_needs_type
+ && (type == unknown || command_line_arg
+ /* --indicator-style=classify (aka -F)
+ requires that we stat each regular file
+ to see if it's executable. */
+ || (type == normal && (indicator_style == classify
+ /* This is so that --color ends up
+ highlighting files with the executable
+ bit set even when options like -F are
+ not specified. */
+ || (print_with_color
+ && is_colored (C_EXEC))
+ )))))
+
+ {
+ /* Absolute name of this file. */
+ char *absolute_name;
+
+ int err;
+
+ if (name[0] == '/' || dirname[0] == 0)
+ absolute_name = (char *) name;
+ else
+ {
+ absolute_name = alloca (strlen (name) + strlen (dirname) + 2);
+ attach (absolute_name, dirname, name);
+ }
+
+ switch (dereference)
+ {
+ case DEREF_ALWAYS:
+ err = stat (absolute_name, &f->stat);
+ break;
+
+ case DEREF_COMMAND_LINE_ARGUMENTS:
+ case DEREF_COMMAND_LINE_SYMLINK_TO_DIR:
+ if (command_line_arg)
+ {
+ bool need_lstat;
+ err = stat (absolute_name, &f->stat);
+
+ if (dereference == DEREF_COMMAND_LINE_ARGUMENTS)
+ break;
+
+ need_lstat = (err < 0
+ ? errno == ENOENT
+ : ! S_ISDIR (f->stat.st_mode));
+ if (!need_lstat)
+ break;
+
+ /* stat failed because of ENOENT, maybe indicating a dangling
+ symlink. Or stat succeeded, ABSOLUTE_NAME does not refer to a
+ directory, and --dereference-command-line-symlink-to-dir is
+ in effect. Fall through so that we call lstat instead. */
+ }
+
+ default: /* DEREF_NEVER */
+ err = lstat (absolute_name, &f->stat);
+ break;
+ }
+
+ if (err != 0)
+ {
+ /* Failure to stat a command line argument leads to
+ an exit status of 2. For other files, stat failure
+ provokes an exit status of 1. */
+ file_failure (command_line_arg,
+ _("cannot access %s"), absolute_name);
+ if (command_line_arg)
+ return 0;
+
+ f->name = xstrdup (name);
+ cwd_n_used++;
+
+ return 0;
+ }
+
+ f->stat_ok = true;
+
+#if USE_ACL
+ if (format == long_format)
+ {
+ int n = file_has_acl (absolute_name, &f->stat);
+ f->have_acl = (0 < n);
+ any_has_acl |= f->have_acl;
+ if (n < 0)
+ error (0, errno, "%s", quotearg_colon (absolute_name));
+ }
+#endif
+
+ if (S_ISLNK (f->stat.st_mode)
+ && (format == long_format || check_symlink_color))
+ {
+ char *linkname;
+ struct stat linkstats;
+
+ get_link_name (absolute_name, f, command_line_arg);
+ linkname = make_link_name (absolute_name, f->linkname);
+
+ /* Avoid following symbolic links when possible, ie, when
+ they won't be traced and when no indicator is needed. */
+ if (linkname
+ && (file_type <= indicator_style || check_symlink_color)
+ && stat (linkname, &linkstats) == 0)
+ {
+ f->linkok = true;
+
+ /* Symbolic links to directories that are mentioned on the
+ command line are automatically traced if not being
+ listed as files. */
+ if (!command_line_arg || format == long_format
+ || !S_ISDIR (linkstats.st_mode))
+ {
+ /* Get the linked-to file's mode for the filetype indicator
+ in long listings. */
+ f->linkmode = linkstats.st_mode;
+ }
+ }
+ free (linkname);
+ }
+
+ if (S_ISLNK (f->stat.st_mode))
+ f->filetype = symbolic_link;
+ else if (S_ISDIR (f->stat.st_mode))
+ {
+ if (command_line_arg & !immediate_dirs)
+ f->filetype = arg_directory;
+ else
+ f->filetype = directory;
+ }
+ else
+ f->filetype = normal;
+
+ blocks = ST_NBLOCKS (f->stat);
+ {
+ char buf[LONGEST_HUMAN_READABLE + 1];
+ int len = mbswidth (human_readable (blocks, buf, human_output_opts,
+ ST_NBLOCKSIZE, output_block_size),
+ 0);
+ if (block_size_width < len)
+ block_size_width = len;
+ }
+
+ if (print_owner)
+ {
+ int len = format_user_width (f->stat.st_uid);
+ if (owner_width < len)
+ owner_width = len;
+ }
+
+ if (print_group)
+ {
+ int len = format_group_width (f->stat.st_gid);
+ if (group_width < len)
+ group_width = len;
+ }
+
+ if (print_author)
+ {
+ int len = format_user_width (f->stat.st_author);
+ if (author_width < len)
+ author_width = len;
+ }
+
+ {
+ char buf[INT_BUFSIZE_BOUND (uintmax_t)];
+ int len = strlen (umaxtostr (f->stat.st_nlink, buf));
+ if (nlink_width < len)
+ nlink_width = len;
+ }
+
+ if (S_ISCHR (f->stat.st_mode) || S_ISBLK (f->stat.st_mode))
+ {
+ char buf[INT_BUFSIZE_BOUND (uintmax_t)];
+ int len = strlen (umaxtostr (major (f->stat.st_rdev), buf));
+ if (major_device_number_width < len)
+ major_device_number_width = len;
+ len = strlen (umaxtostr (minor (f->stat.st_rdev), buf));
+ if (minor_device_number_width < len)
+ minor_device_number_width = len;
+ len = major_device_number_width + 2 + minor_device_number_width;
+ if (file_size_width < len)
+ file_size_width = len;
+ }
+ else
+ {
+ char buf[LONGEST_HUMAN_READABLE + 1];
+ uintmax_t size = unsigned_file_size (f->stat.st_size);
+ int len = mbswidth (human_readable (size, buf, human_output_opts,
+ 1, file_output_block_size),
+ 0);
+ if (file_size_width < len)
+ file_size_width = len;
+ }
+ }
+
+ if (print_inode)
+ {
+ char buf[INT_BUFSIZE_BOUND (uintmax_t)];
+ int len = strlen (umaxtostr (f->stat.st_ino, buf));
+ if (inode_number_width < len)
+ inode_number_width = len;
+ }
+
+ f->name = xstrdup (name);
+ cwd_n_used++;
+
+ return blocks;
+}
+
+/* Return true if F refers to a directory. */
+static bool
+is_directory (const struct fileinfo *f)
+{
+ return f->filetype == directory || f->filetype == arg_directory;
+}
+
+/* Put the name of the file that FILENAME is a symbolic link to
+ into the LINKNAME field of `f'. COMMAND_LINE_ARG indicates whether
+ FILENAME is a command-line argument. */
+
+static void
+get_link_name (char const *filename, struct fileinfo *f, bool command_line_arg)
+{
+ f->linkname = xreadlink_with_size (filename, f->stat.st_size);
+ if (f->linkname == NULL)
+ file_failure (command_line_arg, _("cannot read symbolic link %s"),
+ filename);
+}
+
+/* If `linkname' is a relative name and `name' contains one or more
+ leading directories, return `linkname' with those directories
+ prepended; otherwise, return a copy of `linkname'.
+ If `linkname' is zero, return zero. */
+
+static char *
+make_link_name (char const *name, char const *linkname)
+{
+ char *linkbuf;
+ size_t bufsiz;
+
+ if (!linkname)
+ return NULL;
+
+ if (*linkname == '/')
+ return xstrdup (linkname);
+
+ /* The link is to a relative name. Prepend any leading directory
+ in `name' to the link name. */
+ linkbuf = strrchr (name, '/');
+ if (linkbuf == 0)
+ return xstrdup (linkname);
+
+ bufsiz = linkbuf - name + 1;
+ linkbuf = xmalloc (bufsiz + strlen (linkname) + 1);
+ strncpy (linkbuf, name, bufsiz);
+ strcpy (linkbuf + bufsiz, linkname);
+ return linkbuf;
+}
+
+/* Return true if the last component of NAME is `.' or `..'
+ This is so we don't try to recurse on `././././. ...' */
+
+static bool
+basename_is_dot_or_dotdot (const char *name)
+{
+ char const *base = last_component (name);
+ return dot_or_dotdot (base);
+}
+
+/* Remove any entries from CWD_FILE that are for directories,
+ and queue them to be listed as directories instead.
+ DIRNAME is the prefix to prepend to each dirname
+ to make it correct relative to ls's working dir;
+ if it is null, no prefix is needed and "." and ".." should not be ignored.
+ If COMMAND_LINE_ARG is true, this directory was mentioned at the top level,
+ This is desirable when processing directories recursively. */
+
+static void
+extract_dirs_from_files (char const *dirname, bool command_line_arg)
+{
+ size_t i;
+ size_t j;
+ bool ignore_dot_and_dot_dot = (dirname != NULL);
+
+ if (dirname && LOOP_DETECT)
+ {
+ /* Insert a marker entry first. When we dequeue this marker entry,
+ we'll know that DIRNAME has been processed and may be removed
+ from the set of active directories. */
+ queue_directory (NULL, dirname, false);
+ }
+
+ /* Queue the directories last one first, because queueing reverses the
+ order. */
+ for (i = cwd_n_used; i-- != 0; )
+ {
+ struct fileinfo *f = sorted_file[i];
+
+ if (is_directory (f)
+ && (! ignore_dot_and_dot_dot
+ || ! basename_is_dot_or_dotdot (f->name)))
+ {
+ if (!dirname || f->name[0] == '/')
+ queue_directory (f->name, f->linkname, command_line_arg);
+ else
+ {
+ char *name = file_name_concat (dirname, f->name, NULL);
+ queue_directory (name, f->linkname, command_line_arg);
+ free (name);
+ }
+ if (f->filetype == arg_directory)
+ free (f->name);
+ }
+ }
+
+ /* Now delete the directories from the table, compacting all the remaining
+ entries. */
+
+ for (i = 0, j = 0; i < cwd_n_used; i++)
+ {
+ struct fileinfo *f = sorted_file[i];
+ sorted_file[j] = f;
+ j += (f->filetype != arg_directory);
+ }
+ cwd_n_used = j;
+}
+
+/* Use strcoll to compare strings in this locale. If an error occurs,
+ report an error and longjmp to failed_strcoll. */
+
+static jmp_buf failed_strcoll;
+
+static int
+xstrcoll (char const *a, char const *b)
+{
+ int diff;
+ errno = 0;
+ diff = strcoll (a, b);
+ if (errno)
+ {
+ error (0, errno, _("cannot compare file names %s and %s"),
+ quote_n (0, a), quote_n (1, b));
+ set_exit_status (false);
+ longjmp (failed_strcoll, 1);
+ }
+ return diff;
+}
+
+/* Comparison routines for sorting the files. */
+
+typedef void const *V;
+typedef int (*qsortFunc)(V a, V b);
+
+/* Used below in DEFINE_SORT_FUNCTIONS for _df_ sort function variants.
+ The do { ... } while(0) makes it possible to use the macro more like
+ a statement, without violating C89 rules: */
+#define DIRFIRST_CHECK(a, b) \
+ do \
+ { \
+ bool a_is_dir = is_directory ((struct fileinfo const *) a); \
+ bool b_is_dir = is_directory ((struct fileinfo const *) b); \
+ if (a_is_dir && !b_is_dir) \
+ return -1; /* a goes before b */ \
+ if (!a_is_dir && b_is_dir) \
+ return 1; /* b goes before a */ \
+ } \
+ while (0)
+
+/* Define the 8 different sort function variants required for each sortkey.
+ KEY_NAME is a token describing the sort key, e.g., ctime, atime, size.
+ KEY_CMP_FUNC is a function to compare records based on that key, e.g.,
+ ctime_cmp, atime_cmp, size_cmp. Append KEY_NAME to the string,
+ '[rev_][x]str{cmp|coll}[_df]_', to create each function name. */
+#define DEFINE_SORT_FUNCTIONS(key_name, key_cmp_func) \
+ /* direct, non-dirfirst versions */ \
+ static int xstrcoll_##key_name (V a, V b) \
+ { return key_cmp_func (a, b, xstrcoll); } \
+ static int strcmp_##key_name (V a, V b) \
+ { return key_cmp_func (a, b, strcmp); } \
+ \
+ /* reverse, non-dirfirst versions */ \
+ static int rev_xstrcoll_##key_name (V a, V b) \
+ { return key_cmp_func (b, a, xstrcoll); } \
+ static int rev_strcmp_##key_name (V a, V b) \
+ { return key_cmp_func (b, a, strcmp); } \
+ \
+ /* direct, dirfirst versions */ \
+ static int xstrcoll_df_##key_name (V a, V b) \
+ { DIRFIRST_CHECK (a, b); return key_cmp_func (a, b, xstrcoll); } \
+ static int strcmp_df_##key_name (V a, V b) \
+ { DIRFIRST_CHECK (a, b); return key_cmp_func (a, b, strcmp); } \
+ \
+ /* reverse, dirfirst versions */ \
+ static int rev_xstrcoll_df_##key_name (V a, V b) \
+ { DIRFIRST_CHECK (a, b); return key_cmp_func (b, a, xstrcoll); } \
+ static int rev_strcmp_df_##key_name (V a, V b) \
+ { DIRFIRST_CHECK (a, b); return key_cmp_func (b, a, strcmp); }
+
+static inline int
+cmp_ctime (struct fileinfo const *a, struct fileinfo const *b,
+ int (*cmp) (char const *, char const *))
+{
+ int diff = timespec_cmp (get_stat_ctime (&b->stat),
+ get_stat_ctime (&a->stat));
+ return diff ? diff : cmp (a->name, b->name);
+}
+
+static inline int
+cmp_mtime (struct fileinfo const *a, struct fileinfo const *b,
+ int (*cmp) (char const *, char const *))
+{
+ int diff = timespec_cmp (get_stat_mtime (&b->stat),
+ get_stat_mtime (&a->stat));
+ return diff ? diff : cmp (a->name, b->name);
+}
+
+static inline int
+cmp_atime (struct fileinfo const *a, struct fileinfo const *b,
+ int (*cmp) (char const *, char const *))
+{
+ int diff = timespec_cmp (get_stat_atime (&b->stat),
+ get_stat_atime (&a->stat));
+ return diff ? diff : cmp (a->name, b->name);
+}
+
+static inline int
+cmp_size (struct fileinfo const *a, struct fileinfo const *b,
+ int (*cmp) (char const *, char const *))
+{
+ int diff = longdiff (b->stat.st_size, a->stat.st_size);
+ return diff ? diff : cmp (a->name, b->name);
+}
+
+static inline int
+cmp_name (struct fileinfo const *a, struct fileinfo const *b,
+ int (*cmp) (char const *, char const *))
+{
+ return cmp (a->name, b->name);
+}
+
+/* Compare file extensions. Files with no extension are `smallest'.
+ If extensions are the same, compare by filenames instead. */
+
+static inline int
+cmp_extension (struct fileinfo const *a, struct fileinfo const *b,
+ int (*cmp) (char const *, char const *))
+{
+ char const *base1 = strrchr (a->name, '.');
+ char const *base2 = strrchr (b->name, '.');
+ int diff = cmp (base1 ? base1 : "", base2 ? base2 : "");
+ return diff ? diff : cmp (a->name, b->name);
+}
+
+DEFINE_SORT_FUNCTIONS (ctime, cmp_ctime)
+DEFINE_SORT_FUNCTIONS (mtime, cmp_mtime)
+DEFINE_SORT_FUNCTIONS (atime, cmp_atime)
+DEFINE_SORT_FUNCTIONS (size, cmp_size)
+DEFINE_SORT_FUNCTIONS (name, cmp_name)
+DEFINE_SORT_FUNCTIONS (extension, cmp_extension)
+
+/* Compare file versions.
+ Unlike all other compare functions above, cmp_version depends only
+ on strverscmp, which does not fail (even for locale reasons), and does not
+ need a secondary sort key.
+ All the other sort options, in fact, need xstrcoll and strcmp variants,
+ because they all use a string comparison (either as the primary or secondary
+ sort key), and xstrcoll has the ability to do a longjmp if strcoll fails for
+ locale reasons. Last, strverscmp is ALWAYS available in coreutils,
+ thanks to the gnulib library. */
+static inline int
+cmp_version (struct fileinfo const *a, struct fileinfo const *b)
+{
+ return strverscmp (a->name, b->name);
+}
+
+static int xstrcoll_version (V a, V b)
+{ return cmp_version (a, b); }
+static int rev_xstrcoll_version (V a, V b)
+{ return cmp_version (b, a); }
+static int xstrcoll_df_version (V a, V b)
+{ DIRFIRST_CHECK (a, b); return cmp_version (a, b); }
+static int rev_xstrcoll_df_version (V a, V b)
+{ DIRFIRST_CHECK (a, b); return cmp_version (b, a); }
+
+
+/* We have 2^3 different variants for each sortkey function
+ (for 3 independent sort modes).
+ The function pointers stored in this array must be dereferenced as:
+
+ sort_variants[sort_key][use_strcmp][reverse][dirs_first]
+
+ Note that the order in which sortkeys are listed in the function pointer
+ array below is defined by the order of the elements in the time_type and
+ sort_type enums! */
+
+#define LIST_SORTFUNCTION_VARIANTS(key_name) \
+ { \
+ { \
+ { xstrcoll_##key_name, xstrcoll_df_##key_name }, \
+ { rev_xstrcoll_##key_name, rev_xstrcoll_df_##key_name }, \
+ }, \
+ { \
+ { strcmp_##key_name, strcmp_df_##key_name }, \
+ { rev_strcmp_##key_name, rev_strcmp_df_##key_name }, \
+ } \
+ }
+
+static qsortFunc sort_functions[][2][2][2] =
+ {
+ LIST_SORTFUNCTION_VARIANTS (name),
+ LIST_SORTFUNCTION_VARIANTS (extension),
+ LIST_SORTFUNCTION_VARIANTS (size),
+
+ {
+ {
+ { xstrcoll_version, xstrcoll_df_version },
+ { rev_xstrcoll_version, rev_xstrcoll_df_version },
+ },
+
+ /* We use NULL for the strcmp variants of version comparison
+ since as explained in cmp_version definition, version comparison
+ does not rely on xstrcoll, so it will never longjmp, and never
+ need to try the strcmp fallback. */
+ {
+ { NULL, NULL },
+ { NULL, NULL },
+ }
+ },
+
+ /* last are time sort functions */
+ LIST_SORTFUNCTION_VARIANTS (mtime),
+ LIST_SORTFUNCTION_VARIANTS (ctime),
+ LIST_SORTFUNCTION_VARIANTS (atime)
+ };
+
+/* The number of sortkeys is calculated as
+ the number of elements in the sort_type enum (i.e. sort_numtypes) +
+ the number of elements in the time_type enum (i.e. time_numtypes) - 1
+ This is because when sort_type==sort_time, we have up to
+ time_numtypes possible sortkeys.
+
+ This line verifies at compile-time that the array of sort functions has been
+ initialized for all possible sortkeys. */
+verify (ARRAY_CARDINALITY (sort_functions)
+ == sort_numtypes + time_numtypes - 1 );
+
+/* Set up SORTED_FILE to point to the in-use entries in CWD_FILE, in order. */
+
+static void
+initialize_ordering_vector (void)
+{
+ size_t i;
+ for (i = 0; i < cwd_n_used; i++)
+ sorted_file[i] = &cwd_file[i];
+}
+
+/* Sort the files now in the table. */
+
+static void
+sort_files (void)
+{
+ bool use_strcmp;
+
+ if (sorted_file_alloc < cwd_n_used + cwd_n_used / 2)
+ {
+ free (sorted_file);
+ sorted_file = xnmalloc (cwd_n_used, 3 * sizeof *sorted_file);
+ sorted_file_alloc = 3 * cwd_n_used;
+ }
+
+ initialize_ordering_vector ();
+
+ if (sort_type == sort_none)
+ return;
+
+ /* Try strcoll. If it fails, fall back on strcmp. We can't safely
+ ignore strcoll failures, as a failing strcoll might be a
+ comparison function that is not a total order, and if we ignored
+ the failure this might cause qsort to dump core. */
+
+ if (! setjmp (failed_strcoll))
+ use_strcmp = false; /* strcoll() succeeded */
+ else
+ {
+ use_strcmp = true;
+ assert (sort_type != sort_version);
+ initialize_ordering_vector ();
+ }
+
+ /* When sort_type == sort_time, use time_type as subindex. */
+ mpsort ((void const **) sorted_file, cwd_n_used,
+ sort_functions[sort_type + (sort_type == sort_time ? time_type : 0)]
+ [use_strcmp][sort_reverse]
+ [directories_first]);
+}
+
+/* List all the files now in the table. */
+
+static void
+print_current_files (void)
+{
+ size_t i;
+
+ switch (format)
+ {
+ case one_per_line:
+ for (i = 0; i < cwd_n_used; i++)
+ {
+ print_file_name_and_frills (sorted_file[i]);
+ putchar ('\n');
+ }
+ break;
+
+ case many_per_line:
+ print_many_per_line ();
+ break;
+
+ case horizontal:
+ print_horizontal ();
+ break;
+
+ case with_commas:
+ print_with_commas ();
+ break;
+
+ case long_format:
+ for (i = 0; i < cwd_n_used; i++)
+ {
+ print_long_format (sorted_file[i]);
+ DIRED_PUTCHAR ('\n');
+ }
+ break;
+ }
+}
+
+/* Return the expected number of columns in a long-format time stamp,
+ or zero if it cannot be calculated. */
+
+static int
+long_time_expected_width (void)
+{
+ static int width = -1;
+
+ if (width < 0)
+ {
+ time_t epoch = 0;
+ struct tm const *tm = localtime (&epoch);
+ char buf[TIME_STAMP_LEN_MAXIMUM + 1];
+
+ /* In case you're wondering if localtime can fail with an input time_t
+ value of 0, let's just say it's very unlikely, but not inconceivable.
+ The TZ environment variable would have to specify a time zone that
+ is 2**31-1900 years or more ahead of UTC. This could happen only on
+ a 64-bit system that blindly accepts e.g., TZ=UTC+20000000000000.
+ However, this is not possible with Solaris 10 or glibc-2.3.5, since
+ their implementations limit the offset to 167:59 and 24:00, resp. */
+ if (tm)
+ {
+ size_t len =
+ nstrftime (buf, sizeof buf, long_time_format[0], tm, 0, 0);
+ if (len != 0)
+ width = mbsnwidth (buf, len, 0);
+ }
+
+ if (width < 0)
+ width = 0;
+ }
+
+ return width;
+}
+
+/* Get the current time. */
+
+static void
+get_current_time (void)
+{
+#if HAVE_CLOCK_GETTIME && defined CLOCK_REALTIME
+ {
+ struct timespec timespec;
+ if (clock_gettime (CLOCK_REALTIME, &timespec) == 0)
+ {
+ current_time = timespec.tv_sec;
+ current_time_ns = timespec.tv_nsec;
+ return;
+ }
+ }
+#endif
+
+ /* The clock does not have nanosecond resolution, so get the maximum
+ possible value for the current time that is consistent with the
+ reported clock. That way, files are not considered to be in the
+ future merely because their time stamps have higher resolution
+ than the clock resolution. */
+
+#if HAVE_GETTIMEOFDAY
+ {
+ struct timeval timeval;
+ gettimeofday (&timeval, NULL);
+ current_time = timeval.tv_sec;
+ current_time_ns = timeval.tv_usec * 1000 + 999;
+ }
+#else
+ current_time = time (NULL);
+ current_time_ns = 999999999;
+#endif
+}
+
+/* Print the user or group name NAME, with numeric id ID, using a
+ print width of WIDTH columns. */
+
+static void
+format_user_or_group (char const *name, unsigned long int id, int width)
+{
+ size_t len;
+
+ if (name)
+ {
+ int width_gap = width - mbswidth (name, 0);
+ int pad = MAX (0, width_gap);
+ fputs (name, stdout);
+ len = strlen (name) + pad;
+
+ do
+ putchar (' ');
+ while (pad--);
+ }
+ else
+ {
+ printf ("%*lu ", width, id);
+ len = width;
+ }
+
+ dired_pos += len + 1;
+}
+
+/* Print the name or id of the user with id U, using a print width of
+ WIDTH. */
+
+static void
+format_user (uid_t u, int width, bool stat_ok)
+{
+ format_user_or_group (! stat_ok ? "?" :
+ (numeric_ids ? NULL : getuser (u)), u, width);
+}
+
+/* Likewise, for groups. */
+
+static void
+format_group (gid_t g, int width, bool stat_ok)
+{
+ format_user_or_group (! stat_ok ? "?" :
+ (numeric_ids ? NULL : getgroup (g)), g, width);
+}
+
+/* Return the number of columns that format_user_or_group will print. */
+
+static int
+format_user_or_group_width (char const *name, unsigned long int id)
+{
+ if (name)
+ {
+ int len = mbswidth (name, 0);
+ return MAX (0, len);
+ }
+ else
+ {
+ char buf[INT_BUFSIZE_BOUND (unsigned long int)];
+ sprintf (buf, "%lu", id);
+ return strlen (buf);
+ }
+}
+
+/* Return the number of columns that format_user will print. */
+
+static int
+format_user_width (uid_t u)
+{
+ return format_user_or_group_width (numeric_ids ? NULL : getuser (u), u);
+}
+
+/* Likewise, for groups. */
+
+static int
+format_group_width (gid_t g)
+{
+ return format_user_or_group_width (numeric_ids ? NULL : getgroup (g), g);
+}
+
+
+/* Print information about F in long format. */
+
+static void
+print_long_format (const struct fileinfo *f)
+{
+ char modebuf[12];
+ char buf
+ [LONGEST_HUMAN_READABLE + 1 /* inode */
+ + LONGEST_HUMAN_READABLE + 1 /* size in blocks */
+ + sizeof (modebuf) - 1 + 1 /* mode string */
+ + INT_BUFSIZE_BOUND (uintmax_t) /* st_nlink */
+ + LONGEST_HUMAN_READABLE + 2 /* major device number */
+ + LONGEST_HUMAN_READABLE + 1 /* minor device number */
+ + TIME_STAMP_LEN_MAXIMUM + 1 /* max length of time/date */
+ ];
+ size_t s;
+ char *p;
+ time_t when;
+ int when_ns;
+ struct timespec when_timespec;
+ struct tm *when_local;
+
+ /* Compute the mode string, except remove the trailing space if no
+ files in this directory have ACLs. */
+ if (f->stat_ok)
+ filemodestring (&f->stat, modebuf);
+ else
+ {
+ modebuf[0] = filetype_letter[f->filetype];
+ memset (modebuf + 1, '?', 10);
+ modebuf[11] = '\0';
+ }
+ if (! any_has_acl)
+ modebuf[10] = '\0';
+ else if (FILE_HAS_ACL (f))
+ modebuf[10] = '+';
+
+ switch (time_type)
+ {
+ case time_ctime:
+ when_timespec = get_stat_ctime (&f->stat);
+ break;
+ case time_mtime:
+ when_timespec = get_stat_mtime (&f->stat);
+ break;
+ case time_atime:
+ when_timespec = get_stat_atime (&f->stat);
+ break;
+ default:
+ abort ();
+ }
+
+ when = when_timespec.tv_sec;
+ when_ns = when_timespec.tv_nsec;
+
+ p = buf;
+
+ if (print_inode)
+ {
+ char hbuf[INT_BUFSIZE_BOUND (uintmax_t)];
+ sprintf (p, "%*s ", inode_number_width,
+ (f->stat.st_ino == NOT_AN_INODE_NUMBER
+ ? "?"
+ : umaxtostr (f->stat.st_ino, hbuf)));
+ /* Increment by strlen (p) here, rather than by inode_number_width + 1.
+ The latter is wrong when inode_number_width is zero. */
+ p += strlen (p);
+ }
+
+ if (print_block_size)
+ {
+ char hbuf[LONGEST_HUMAN_READABLE + 1];
+ char const *blocks =
+ (! f->stat_ok
+ ? "?"
+ : human_readable (ST_NBLOCKS (f->stat), hbuf, human_output_opts,
+ ST_NBLOCKSIZE, output_block_size));
+ int pad;
+ for (pad = block_size_width - mbswidth (blocks, 0); 0 < pad; pad--)
+ *p++ = ' ';
+ while ((*p++ = *blocks++))
+ continue;
+ p[-1] = ' ';
+ }
+
+ /* The last byte of the mode string is the POSIX
+ "optional alternate access method flag". */
+ {
+ char hbuf[INT_BUFSIZE_BOUND (uintmax_t)];
+ sprintf (p, "%s %*s ", modebuf, nlink_width,
+ ! f->stat_ok ? "?" : umaxtostr (f->stat.st_nlink, hbuf));
+ }
+ /* Increment by strlen (p) here, rather than by, e.g.,
+ sizeof modebuf - 2 + any_has_acl + 1 + nlink_width + 1.
+ The latter is wrong when nlink_width is zero. */
+ p += strlen (p);
+
+ DIRED_INDENT ();
+
+ if (print_owner | print_group | print_author)
+ {
+ DIRED_FPUTS (buf, stdout, p - buf);
+
+ if (print_owner)
+ format_user (f->stat.st_uid, owner_width, f->stat_ok);
+
+ if (print_group)
+ format_group (f->stat.st_gid, group_width, f->stat_ok);
+
+ if (print_author)
+ format_user (f->stat.st_author, author_width, f->stat_ok);
+
+ p = buf;
+ }
+
+ if (f->stat_ok
+ && (S_ISCHR (f->stat.st_mode) || S_ISBLK (f->stat.st_mode)))
+ {
+ char majorbuf[INT_BUFSIZE_BOUND (uintmax_t)];
+ char minorbuf[INT_BUFSIZE_BOUND (uintmax_t)];
+ int blanks_width = (file_size_width
+ - (major_device_number_width + 2
+ + minor_device_number_width));
+ sprintf (p, "%*s, %*s ",
+ major_device_number_width + MAX (0, blanks_width),
+ umaxtostr (major (f->stat.st_rdev), majorbuf),
+ minor_device_number_width,
+ umaxtostr (minor (f->stat.st_rdev), minorbuf));
+ p += file_size_width + 1;
+ }
+ else
+ {
+ char hbuf[LONGEST_HUMAN_READABLE + 1];
+ char const *size =
+ (! f->stat_ok
+ ? "?"
+ : human_readable (unsigned_file_size (f->stat.st_size),
+ hbuf, human_output_opts, 1, file_output_block_size));
+ int pad;
+ for (pad = file_size_width - mbswidth (size, 0); 0 < pad; pad--)
+ *p++ = ' ';
+ while ((*p++ = *size++))
+ continue;
+ p[-1] = ' ';
+ }
+
+ when_local = localtime (&when_timespec.tv_sec);
+ s = 0;
+ *p = '\1';
+
+ if (f->stat_ok && when_local)
+ {
+ time_t six_months_ago;
+ bool recent;
+ char const *fmt;
+
+ /* If the file appears to be in the future, update the current
+ time, in case the file happens to have been modified since
+ the last time we checked the clock. */
+ if (current_time < when
+ || (current_time == when && current_time_ns < when_ns))
+ {
+ /* Note that get_current_time calls gettimeofday which, on some non-
+ compliant systems, clobbers the buffer used for localtime's result.
+ But it's ok here, because we use a gettimeofday wrapper that
+ saves and restores the buffer around the gettimeofday call. */
+ get_current_time ();
+ }
+
+ /* Consider a time to be recent if it is within the past six
+ months. A Gregorian year has 365.2425 * 24 * 60 * 60 ==
+ 31556952 seconds on the average. Write this value as an
+ integer constant to avoid floating point hassles. */
+ six_months_ago = current_time - 31556952 / 2;
+ recent = (six_months_ago <= when
+ && (when < current_time
+ || (when == current_time && when_ns <= current_time_ns)));
+ fmt = long_time_format[recent];
+
+ s = nstrftime (p, TIME_STAMP_LEN_MAXIMUM + 1, fmt,
+ when_local, 0, when_ns);
+ }
+
+ if (s || !*p)
+ {
+ p += s;
+ *p++ = ' ';
+
+ /* NUL-terminate the string -- fputs (via DIRED_FPUTS) requires it. */
+ *p = '\0';
+ }
+ else
+ {
+ /* The time cannot be converted using the desired format, so
+ print it as a huge integer number of seconds. */
+ char hbuf[INT_BUFSIZE_BOUND (intmax_t)];
+ sprintf (p, "%*s ", long_time_expected_width (),
+ (! f->stat_ok
+ ? "?"
+ : (TYPE_SIGNED (time_t)
+ ? imaxtostr (when, hbuf)
+ : umaxtostr (when, hbuf))));
+ p += strlen (p);
+ }
+
+ DIRED_FPUTS (buf, stdout, p - buf);
+ print_name_with_quoting (f->name, FILE_OR_LINK_MODE (f), f->linkok,
+ f->stat_ok, f->filetype, &dired_obstack);
+
+ if (f->filetype == symbolic_link)
+ {
+ if (f->linkname)
+ {
+ DIRED_FPUTS_LITERAL (" -> ", stdout);
+ print_name_with_quoting (f->linkname, f->linkmode, f->linkok - 1,
+ f->stat_ok, f->filetype, NULL);
+ if (indicator_style != none)
+ print_type_indicator (true, f->linkmode, unknown);
+ }
+ }
+ else if (indicator_style != none)
+ print_type_indicator (f->stat_ok, f->stat.st_mode, f->filetype);
+}
+
+/* Output to OUT a quoted representation of the file name NAME,
+ using OPTIONS to control quoting. Produce no output if OUT is NULL.
+ Store the number of screen columns occupied by NAME's quoted
+ representation into WIDTH, if non-NULL. Return the number of bytes
+ produced. */
+
+static size_t
+quote_name (FILE *out, const char *name, struct quoting_options const *options,
+ size_t *width)
+{
+ char smallbuf[BUFSIZ];
+ size_t len = quotearg_buffer (smallbuf, sizeof smallbuf, name, -1, options);
+ char *buf;
+ size_t displayed_width IF_LINT (= 0);
+
+ if (len < sizeof smallbuf)
+ buf = smallbuf;
+ else
+ {
+ buf = alloca (len + 1);
+ quotearg_buffer (buf, len + 1, name, -1, options);
+ }
+
+ if (qmark_funny_chars)
+ {
+#if HAVE_MBRTOWC
+ if (MB_CUR_MAX > 1)
+ {
+ char const *p = buf;
+ char const *plimit = buf + len;
+ char *q = buf;
+ displayed_width = 0;
+
+ while (p < plimit)
+ switch (*p)
+ {
+ case ' ': case '!': case '"': case '#': case '%':
+ case '&': case '\'': case '(': case ')': case '*':
+ case '+': case ',': case '-': case '.': case '/':
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ case ':': case ';': case '<': case '=': case '>':
+ case '?':
+ case 'A': case 'B': case 'C': case 'D': case 'E':
+ case 'F': case 'G': case 'H': case 'I': case 'J':
+ case 'K': case 'L': case 'M': case 'N': case 'O':
+ case 'P': case 'Q': case 'R': case 'S': case 'T':
+ case 'U': case 'V': case 'W': case 'X': case 'Y':
+ case 'Z':
+ case '[': case '\\': case ']': case '^': case '_':
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'i': case 'j':
+ case 'k': case 'l': case 'm': case 'n': case 'o':
+ case 'p': case 'q': case 'r': case 's': case 't':
+ case 'u': case 'v': case 'w': case 'x': case 'y':
+ case 'z': case '{': case '|': case '}': case '~':
+ /* These characters are printable ASCII characters. */
+ *q++ = *p++;
+ displayed_width += 1;
+ break;
+ default:
+ /* If we have a multibyte sequence, copy it until we
+ reach its end, replacing each non-printable multibyte
+ character with a single question mark. */
+ {
+ mbstate_t mbstate = { 0, };
+ do
+ {
+ wchar_t wc;
+ size_t bytes;
+ int w;
+
+ bytes = mbrtowc (&wc, p, plimit - p, &mbstate);
+
+ if (bytes == (size_t) -1)
+ {
+ /* An invalid multibyte sequence was
+ encountered. Skip one input byte, and
+ put a question mark. */
+ p++;
+ *q++ = '?';
+ displayed_width += 1;
+ break;
+ }
+
+ if (bytes == (size_t) -2)
+ {
+ /* An incomplete multibyte character
+ at the end. Replace it entirely with
+ a question mark. */
+ p = plimit;
+ *q++ = '?';
+ displayed_width += 1;
+ break;
+ }
+
+ if (bytes == 0)
+ /* A null wide character was encountered. */
+ bytes = 1;
+
+ w = wcwidth (wc);
+ if (w >= 0)
+ {
+ /* A printable multibyte character.
+ Keep it. */
+ for (; bytes > 0; --bytes)
+ *q++ = *p++;
+ displayed_width += w;
+ }
+ else
+ {
+ /* An unprintable multibyte character.
+ Replace it entirely with a question
+ mark. */
+ p += bytes;
+ *q++ = '?';
+ displayed_width += 1;
+ }
+ }
+ while (! mbsinit (&mbstate));
+ }
+ break;
+ }
+
+ /* The buffer may have shrunk. */
+ len = q - buf;
+ }
+ else
+#endif
+ {
+ char *p = buf;
+ char const *plimit = buf + len;
+
+ while (p < plimit)
+ {
+ if (! isprint (to_uchar (*p)))
+ *p = '?';
+ p++;
+ }
+ displayed_width = len;
+ }
+ }
+ else if (width != NULL)
+ {
+#if HAVE_MBRTOWC
+ if (MB_CUR_MAX > 1)
+ displayed_width = mbsnwidth (buf, len, 0);
+ else
+#endif
+ {
+ char const *p = buf;
+ char const *plimit = buf + len;
+
+ displayed_width = 0;
+ while (p < plimit)
+ {
+ if (isprint (to_uchar (*p)))
+ displayed_width++;
+ p++;
+ }
+ }
+ }
+
+ if (out != NULL)
+ fwrite (buf, 1, len, out);
+ if (width != NULL)
+ *width = displayed_width;
+ return len;
+}
+
+static void
+print_name_with_quoting (const char *p, mode_t mode, int linkok,
+ bool stat_ok, enum filetype type,
+ struct obstack *stack)
+{
+ if (print_with_color)
+ print_color_indicator (p, mode, linkok, stat_ok, type);
+
+ if (stack)
+ PUSH_CURRENT_DIRED_POS (stack);
+
+ dired_pos += quote_name (stdout, p, filename_quoting_options, NULL);
+
+ if (stack)
+ PUSH_CURRENT_DIRED_POS (stack);
+
+ if (print_with_color)
+ {
+ process_signals ();
+ prep_non_filename_text ();
+ }
+}
+
+static void
+prep_non_filename_text (void)
+{
+ if (color_indicator[C_END].string != NULL)
+ put_indicator (&color_indicator[C_END]);
+ else
+ {
+ put_indicator (&color_indicator[C_LEFT]);
+ put_indicator (&color_indicator[C_NORM]);
+ put_indicator (&color_indicator[C_RIGHT]);
+ }
+}
+
+/* Print the file name of `f' with appropriate quoting.
+ Also print file size, inode number, and filetype indicator character,
+ as requested by switches. */
+
+static void
+print_file_name_and_frills (const struct fileinfo *f)
+{
+ char buf[MAX (LONGEST_HUMAN_READABLE + 1, INT_BUFSIZE_BOUND (uintmax_t))];
+
+ if (print_inode)
+ printf ("%*s ", format == with_commas ? 0 : inode_number_width,
+ umaxtostr (f->stat.st_ino, buf));
+
+ if (print_block_size)
+ printf ("%*s ", format == with_commas ? 0 : block_size_width,
+ human_readable (ST_NBLOCKS (f->stat), buf, human_output_opts,
+ ST_NBLOCKSIZE, output_block_size));
+
+ print_name_with_quoting (f->name, FILE_OR_LINK_MODE (f), f->linkok,
+ f->stat_ok, f->filetype, NULL);
+
+ if (indicator_style != none)
+ print_type_indicator (f->stat_ok, f->stat.st_mode, f->filetype);
+}
+
+/* Given these arguments describing a file, return the single-byte
+ type indicator, or 0. */
+static char
+get_type_indicator (bool stat_ok, mode_t mode, enum filetype type)
+{
+ char c;
+
+ if (stat_ok ? S_ISREG (mode) : type == normal)
+ {
+ if (stat_ok && indicator_style == classify && (mode & S_IXUGO))
+ c = '*';
+ else
+ c = 0;
+ }
+ else
+ {
+ if (stat_ok ? S_ISDIR (mode) : type == directory || type == arg_directory)
+ c = '/';
+ else if (indicator_style == slash)
+ c = 0;
+ else if (stat_ok ? S_ISLNK (mode) : type == symbolic_link)
+ c = '@';
+ else if (stat_ok ? S_ISFIFO (mode) : type == fifo)
+ c = '|';
+ else if (stat_ok ? S_ISSOCK (mode) : type == sock)
+ c = '=';
+ else if (stat_ok && S_ISDOOR (mode))
+ c = '>';
+ else
+ c = 0;
+ }
+ return c;
+}
+
+static void
+print_type_indicator (bool stat_ok, mode_t mode, enum filetype type)
+{
+ char c = get_type_indicator (stat_ok, mode, type);
+ if (c)
+ DIRED_PUTCHAR (c);
+}
+
+static void
+print_color_indicator (const char *name, mode_t mode, int linkok,
+ bool stat_ok, enum filetype filetype)
+{
+ int type;
+ struct color_ext_type *ext; /* Color extension */
+ size_t len; /* Length of name */
+
+ /* Is this a nonexistent file? If so, linkok == -1. */
+
+ if (linkok == -1 && color_indicator[C_MISSING].string != NULL)
+ type = C_MISSING;
+ else if (! stat_ok)
+ {
+ static enum indicator_no filetype_indicator[] = FILETYPE_INDICATORS;
+ type = filetype_indicator[filetype];
+ }
+ else
+ {
+ if (S_ISREG (mode))
+ {
+ type = C_FILE;
+ if ((mode & S_ISUID) != 0)
+ type = C_SETUID;
+ else if ((mode & S_ISGID) != 0)
+ type = C_SETGID;
+ else if ((mode & S_IXUGO) != 0)
+ type = C_EXEC;
+ }
+ else if (S_ISDIR (mode))
+ {
+ if ((mode & S_ISVTX) && (mode & S_IWOTH))
+ type = C_STICKY_OTHER_WRITABLE;
+ else if ((mode & S_IWOTH) != 0)
+ type = C_OTHER_WRITABLE;
+ else if ((mode & S_ISVTX) != 0)
+ type = C_STICKY;
+ else
+ type = C_DIR;
+ }
+ else if (S_ISLNK (mode))
+ type = ((!linkok && color_indicator[C_ORPHAN].string)
+ ? C_ORPHAN : C_LINK);
+ else if (S_ISFIFO (mode))
+ type = C_FIFO;
+ else if (S_ISSOCK (mode))
+ type = C_SOCK;
+ else if (S_ISBLK (mode))
+ type = C_BLK;
+ else if (S_ISCHR (mode))
+ type = C_CHR;
+ else if (S_ISDOOR (mode))
+ type = C_DOOR;
+ else
+ {
+ /* Classify a file of some other type as C_ORPHAN. */
+ type = C_ORPHAN;
+ }
+ }
+
+ /* Check the file's suffix only if still classified as C_FILE. */
+ ext = NULL;
+ if (type == C_FILE)
+ {
+ /* Test if NAME has a recognized suffix. */
+
+ len = strlen (name);
+ name += len; /* Pointer to final \0. */
+ for (ext = color_ext_list; ext != NULL; ext = ext->next)
+ {
+ if (ext->ext.len <= len
+ && strncmp (name - ext->ext.len, ext->ext.string,
+ ext->ext.len) == 0)
+ break;
+ }
+ }
+
+ put_indicator (&color_indicator[C_LEFT]);
+ put_indicator (ext ? &(ext->seq) : &color_indicator[type]);
+ put_indicator (&color_indicator[C_RIGHT]);
+}
+
+/* Output a color indicator (which may contain nulls). */
+static void
+put_indicator (const struct bin_str *ind)
+{
+ size_t i;
+ const char *p;
+
+ p = ind->string;
+
+ for (i = ind->len; i != 0; --i)
+ putchar (*(p++));
+}
+
+static size_t
+length_of_file_name_and_frills (const struct fileinfo *f)
+{
+ size_t len = 0;
+ size_t name_width;
+ char buf[MAX (LONGEST_HUMAN_READABLE + 1, INT_BUFSIZE_BOUND (uintmax_t))];
+
+ if (print_inode)
+ len += 1 + (format == with_commas
+ ? strlen (umaxtostr (f->stat.st_ino, buf))
+ : inode_number_width);
+
+ if (print_block_size)
+ len += 1 + (format == with_commas
+ ? strlen (human_readable (ST_NBLOCKS (f->stat), buf,
+ human_output_opts, ST_NBLOCKSIZE,
+ output_block_size))
+ : block_size_width);
+
+ quote_name (NULL, f->name, filename_quoting_options, &name_width);
+ len += name_width;
+
+ if (indicator_style != none)
+ {
+ char c = get_type_indicator (f->stat_ok, f->stat.st_mode, f->filetype);
+ len += (c != 0);
+ }
+
+ return len;
+}
+
+static void
+print_many_per_line (void)
+{
+ size_t row; /* Current row. */
+ size_t cols = calculate_columns (true);
+ struct column_info const *line_fmt = &column_info[cols - 1];
+
+ /* Calculate the number of rows that will be in each column except possibly
+ for a short column on the right. */
+ size_t rows = cwd_n_used / cols + (cwd_n_used % cols != 0);
+
+ for (row = 0; row < rows; row++)
+ {
+ size_t col = 0;
+ size_t filesno = row;
+ size_t pos = 0;
+
+ /* Print the next row. */
+ while (1)
+ {
+ struct fileinfo const *f = sorted_file[filesno];
+ size_t name_length = length_of_file_name_and_frills (f);
+ size_t max_name_length = line_fmt->col_arr[col++];
+ print_file_name_and_frills (f);
+
+ filesno += rows;
+ if (filesno >= cwd_n_used)
+ break;
+
+ indent (pos + name_length, pos + max_name_length);
+ pos += max_name_length;
+ }
+ putchar ('\n');
+ }
+}
+
+static void
+print_horizontal (void)
+{
+ size_t filesno;
+ size_t pos = 0;
+ size_t cols = calculate_columns (false);
+ struct column_info const *line_fmt = &column_info[cols - 1];
+ size_t name_length = length_of_file_name_and_frills (cwd_file);
+ size_t max_name_length = line_fmt->col_arr[0];
+
+ /* Print first entry. */
+ print_file_name_and_frills (cwd_file);
+
+ /* Now the rest. */
+ for (filesno = 1; filesno < cwd_n_used; ++filesno)
+ {
+ struct fileinfo const *f;
+ size_t col = filesno % cols;
+
+ if (col == 0)
+ {
+ putchar ('\n');
+ pos = 0;
+ }
+ else
+ {
+ indent (pos + name_length, pos + max_name_length);
+ pos += max_name_length;
+ }
+
+ f = sorted_file[filesno];
+ print_file_name_and_frills (f);
+
+ name_length = length_of_file_name_and_frills (f);
+ max_name_length = line_fmt->col_arr[col];
+ }
+ putchar ('\n');
+}
+
+static void
+print_with_commas (void)
+{
+ size_t filesno;
+ size_t pos = 0;
+
+ for (filesno = 0; filesno < cwd_n_used; filesno++)
+ {
+ struct fileinfo const *f = sorted_file[filesno];
+ size_t len = length_of_file_name_and_frills (f);
+
+ if (filesno != 0)
+ {
+ char separator;
+
+ if (pos + len + 2 < line_length)
+ {
+ pos += 2;
+ separator = ' ';
+ }
+ else
+ {
+ pos = 0;
+ separator = '\n';
+ }
+
+ putchar (',');
+ putchar (separator);
+ }
+
+ print_file_name_and_frills (f);
+ pos += len;
+ }
+ putchar ('\n');
+}
+
+/* Assuming cursor is at position FROM, indent up to position TO.
+ Use a TAB character instead of two or more spaces whenever possible. */
+
+static void
+indent (size_t from, size_t to)
+{
+ while (from < to)
+ {
+ if (tabsize != 0 && to / tabsize > (from + 1) / tabsize)
+ {
+ putchar ('\t');
+ from += tabsize - from % tabsize;
+ }
+ else
+ {
+ putchar (' ');
+ from++;
+ }
+ }
+}
+
+/* Put DIRNAME/NAME into DEST, handling `.' and `/' properly. */
+/* FIXME: maybe remove this function someday. See about using a
+ non-malloc'ing version of file_name_concat. */
+
+static void
+attach (char *dest, const char *dirname, const char *name)
+{
+ const char *dirnamep = dirname;
+
+ /* Copy dirname if it is not ".". */
+ if (dirname[0] != '.' || dirname[1] != 0)
+ {
+ while (*dirnamep)
+ *dest++ = *dirnamep++;
+ /* Add '/' if `dirname' doesn't already end with it. */
+ if (dirnamep > dirname && dirnamep[-1] != '/')
+ *dest++ = '/';
+ }
+ while (*name)
+ *dest++ = *name++;
+ *dest = 0;
+}
+
+/* Allocate enough column info suitable for the current number of
+ files and display columns, and initialize the info to represent the
+ narrowest possible columns. */
+
+static void
+init_column_info (void)
+{
+ size_t i;
+ size_t max_cols = MIN (max_idx, cwd_n_used);
+
+ /* Currently allocated columns in column_info. */
+ static size_t column_info_alloc;
+
+ if (column_info_alloc < max_cols)
+ {
+ size_t new_column_info_alloc;
+ size_t *p;
+
+ if (max_cols < max_idx / 2)
+ {
+ /* The number of columns is far less than the display width
+ allows. Grow the allocation, but only so that it's
+ double the current requirements. If the display is
+ extremely wide, this avoids allocating a lot of memory
+ that is never needed. */
+ column_info = xnrealloc (column_info, max_cols,
+ 2 * sizeof *column_info);
+ new_column_info_alloc = 2 * max_cols;
+ }
+ else
+ {
+ column_info = xnrealloc (column_info, max_idx, sizeof *column_info);
+ new_column_info_alloc = max_idx;
+ }
+
+ /* Allocate the new size_t objects by computing the triangle
+ formula n * (n + 1) / 2, except that we don't need to
+ allocate the part of the triangle that we've already
+ allocated. Check for address arithmetic overflow. */
+ {
+ size_t column_info_growth = new_column_info_alloc - column_info_alloc;
+ size_t s = column_info_alloc + 1 + new_column_info_alloc;
+ size_t t = s * column_info_growth;
+ if (s < new_column_info_alloc || t / column_info_growth != s)
+ xalloc_die ();
+ p = xnmalloc (t / 2, sizeof *p);
+ }
+
+ /* Grow the triangle by parceling out the cells just allocated. */
+ for (i = column_info_alloc; i < new_column_info_alloc; i++)
+ {
+ column_info[i].col_arr = p;
+ p += i + 1;
+ }
+
+ column_info_alloc = new_column_info_alloc;
+ }
+
+ for (i = 0; i < max_cols; ++i)
+ {
+ size_t j;
+
+ column_info[i].valid_len = true;
+ column_info[i].line_len = (i + 1) * MIN_COLUMN_WIDTH;
+ for (j = 0; j <= i; ++j)
+ column_info[i].col_arr[j] = MIN_COLUMN_WIDTH;
+ }
+}
+
+/* Calculate the number of columns needed to represent the current set
+ of files in the current display width. */
+
+static size_t
+calculate_columns (bool by_columns)
+{
+ size_t filesno; /* Index into cwd_file. */
+ size_t cols; /* Number of files across. */
+
+ /* Normally the maximum number of columns is determined by the
+ screen width. But if few files are available this might limit it
+ as well. */
+ size_t max_cols = MIN (max_idx, cwd_n_used);
+
+ init_column_info ();
+
+ /* Compute the maximum number of possible columns. */
+ for (filesno = 0; filesno < cwd_n_used; ++filesno)
+ {
+ struct fileinfo const *f = sorted_file[filesno];
+ size_t name_length = length_of_file_name_and_frills (f);
+ size_t i;
+
+ for (i = 0; i < max_cols; ++i)
+ {
+ if (column_info[i].valid_len)
+ {
+ size_t idx = (by_columns
+ ? filesno / ((cwd_n_used + i) / (i + 1))
+ : filesno % (i + 1));
+ size_t real_length = name_length + (idx == i ? 0 : 2);
+
+ if (column_info[i].col_arr[idx] < real_length)
+ {
+ column_info[i].line_len += (real_length
+ - column_info[i].col_arr[idx]);
+ column_info[i].col_arr[idx] = real_length;
+ column_info[i].valid_len = (column_info[i].line_len
+ < line_length);
+ }
+ }
+ }
+ }
+
+ /* Find maximum allowed columns. */
+ for (cols = max_cols; 1 < cols; --cols)
+ {
+ if (column_info[cols - 1].valid_len)
+ break;
+ }
+
+ return cols;
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]... [FILE]...\n"), program_name);
+ fputs (_("\
+List information about the FILEs (the current directory by default).\n\
+Sort entries alphabetically if none of -cftuvSUX nor --sort.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -a, --all do not ignore entries starting with .\n\
+ -A, --almost-all do not list implied . and ..\n\
+ --author with -l, print the author of each file\n\
+ -b, --escape print octal escapes for nongraphic characters\n\
+"), stdout);
+ fputs (_("\
+ --block-size=SIZE use SIZE-byte blocks\n\
+ -B, --ignore-backups do not list implied entries ending with ~\n\
+ -c with -lt: sort by, and show, ctime (time of last\n\
+ modification of file status information)\n\
+ with -l: show ctime and sort by name\n\
+ otherwise: sort by ctime\n\
+"), stdout);
+ fputs (_("\
+ -C list entries by columns\n\
+ --color[=WHEN] control whether color is used to distinguish file\n\
+ types. WHEN may be `never', `always', or `auto'\n\
+ -d, --directory list directory entries instead of contents,\n\
+ and do not dereference symbolic links\n\
+ -D, --dired generate output designed for Emacs' dired mode\n\
+"), stdout);
+ fputs (_("\
+ -f do not sort, enable -aU, disable -ls --color\n\
+ -F, --classify append indicator (one of */=>@|) to entries\n\
+ --file-type likewise, except do not append `*'\n\
+ --format=WORD across -x, commas -m, horizontal -x, long -l,\n\
+ single-column -1, verbose -l, vertical -C\n\
+ --full-time like -l --time-style=full-iso\n\
+"), stdout);
+ fputs (_("\
+ -g like -l, but do not list owner\n\
+"), stdout);
+ fputs (_("\
+ --group-directories-first\n\
+ group directories before files\n\
+"), stdout);
+ fputs (_("\
+ -G, --no-group in a long listing, don't print group names\n\
+ -h, --human-readable with -l, print sizes in human readable format\n\
+ (e.g., 1K 234M 2G)\n\
+ --si likewise, but use powers of 1000 not 1024\n\
+"), stdout);
+ fputs (_("\
+ -H, --dereference-command-line\n\
+ follow symbolic links listed on the command line\n\
+ --dereference-command-line-symlink-to-dir\n\
+ follow each command line symbolic link\n\
+ that points to a directory\n\
+ --hide=PATTERN do not list implied entries matching shell PATTERN\n\
+ (overridden by -a or -A)\n\
+"), stdout);
+ fputs (_("\
+ --indicator-style=WORD append indicator with style WORD to entry names:\n\
+ none (default), slash (-p),\n\
+ file-type (--file-type), classify (-F)\n\
+ -i, --inode print the index number of each file\n\
+ -I, --ignore=PATTERN do not list implied entries matching shell PATTERN\n\
+ -k like --block-size=1K\n\
+"), stdout);
+ fputs (_("\
+ -l use a long listing format\n\
+ -L, --dereference when showing file information for a symbolic\n\
+ link, show information for the file the link\n\
+ references rather than for the link itself\n\
+ -m fill width with a comma separated list of entries\n\
+"), stdout);
+ fputs (_("\
+ -n, --numeric-uid-gid like -l, but list numeric user and group IDs\n\
+ -N, --literal print raw entry names (don't treat e.g. control\n\
+ characters specially)\n\
+ -o like -l, but do not list group information\n\
+ -p, --indicator-style=slash\n\
+ append / indicator to directories\n\
+"), stdout);
+ fputs (_("\
+ -q, --hide-control-chars print ? instead of non graphic characters\n\
+ --show-control-chars show non graphic characters as-is (default\n\
+ unless program is `ls' and output is a terminal)\n\
+ -Q, --quote-name enclose entry names in double quotes\n\
+ --quoting-style=WORD use quoting style WORD for entry names:\n\
+ literal, locale, shell, shell-always, c, escape\n\
+"), stdout);
+ fputs (_("\
+ -r, --reverse reverse order while sorting\n\
+ -R, --recursive list subdirectories recursively\n\
+ -s, --size print the size of each file, in blocks\n\
+"), stdout);
+ fputs (_("\
+ -S sort by file size\n\
+ --sort=WORD sort by WORD instead of name: none -U,\n\
+ extension -X, size -S, time -t, version -v\n\
+ --time=WORD with -l, show time as WORD instead of modification\n\
+ time: atime -u, access -u, use -u, ctime -c,\n\
+ or status -c; use specified time as sort key\n\
+ if --sort=time\n\
+"), stdout);
+ fputs (_("\
+ --time-style=STYLE with -l, show times using style STYLE:\n\
+ full-iso, long-iso, iso, locale, +FORMAT.\n\
+ FORMAT is interpreted like `date'; if FORMAT is\n\
+ FORMAT1<newline>FORMAT2, FORMAT1 applies to\n\
+ non-recent files and FORMAT2 to recent files;\n\
+ if STYLE is prefixed with `posix-', STYLE\n\
+ takes effect only outside the POSIX locale\n\
+"), stdout);
+ fputs (_("\
+ -t sort by modification time\n\
+ -T, --tabsize=COLS assume tab stops at each COLS instead of 8\n\
+"), stdout);
+ fputs (_("\
+ -u with -lt: sort by, and show, access time\n\
+ with -l: show access time and sort by name\n\
+ otherwise: sort by access time\n\
+ -U do not sort; list entries in directory order\n\
+ -v sort by version\n\
+"), stdout);
+ fputs (_("\
+ -w, --width=COLS assume screen width instead of current value\n\
+ -x list entries by lines instead of by columns\n\
+ -X sort alphabetically by entry extension\n\
+ -1 list one file per line\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\n\
+SIZE may be (or may be an integer optionally followed by) one of following:\n\
+kB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.\n\
+"), stdout);
+ fputs (_("\
+\n\
+By default, color is not used to distinguish types of files. That is\n\
+equivalent to using --color=none. Using the --color option without the\n\
+optional WHEN argument is equivalent to using --color=always. With\n\
+--color=auto, color codes are output only if standard output is connected\n\
+to a terminal (tty). The environment variable LS_COLORS can influence the\n\
+colors, and can be set easily by the dircolors command.\n\
+"), stdout);
+ fputs (_("\
+\n\
+Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
diff --git a/src/ls.h b/src/ls.h
new file mode 100644
index 0000000..028271f
--- /dev/null
+++ b/src/ls.h
@@ -0,0 +1,10 @@
+/* This is for the `ls' program. */
+#define LS_LS 1
+
+/* This is for the `dir' program. */
+#define LS_MULTI_COL 2
+
+/* This is for the `vdir' program. */
+#define LS_LONG_FORMAT 3
+
+extern int ls_mode;
diff --git a/src/md5sum.c b/src/md5sum.c
new file mode 100644
index 0000000..a8ce1cf
--- /dev/null
+++ b/src/md5sum.c
@@ -0,0 +1,723 @@
+/* Compute MD5, SHA1, SHA224, SHA256, SHA384 or SHA512 checksum of files or strings
+ Copyright (C) 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>. */
+
+#include <config.h>
+
+#include <getopt.h>
+#include <sys/types.h>
+
+#include "system.h"
+
+#if HASH_ALGO_MD5
+# include "md5.h"
+#endif
+#if HASH_ALGO_SHA1
+# include "sha1.h"
+#endif
+#if HASH_ALGO_SHA256 || HASH_ALGO_SHA224
+# include "sha256.h"
+#endif
+#if HASH_ALGO_SHA512 || HASH_ALGO_SHA384
+# include "sha512.h"
+#endif
+#include "getline.h"
+#include "error.h"
+#include "quote.h"
+#include "stdio--.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#if HASH_ALGO_MD5
+# define PROGRAM_NAME "md5sum"
+# define DIGEST_TYPE_STRING "MD5"
+# define DIGEST_STREAM md5_stream
+# define DIGEST_BITS 128
+# define DIGEST_REFERENCE "RFC 1321"
+# define DIGEST_ALIGN 4
+#elif HASH_ALGO_SHA1
+# define PROGRAM_NAME "sha1sum"
+# define DIGEST_TYPE_STRING "SHA1"
+# define DIGEST_STREAM sha1_stream
+# define DIGEST_BITS 160
+# define DIGEST_REFERENCE "FIPS-180-1"
+# define DIGEST_ALIGN 4
+#elif HASH_ALGO_SHA256
+# define PROGRAM_NAME "sha256sum"
+# define DIGEST_TYPE_STRING "SHA256"
+# define DIGEST_STREAM sha256_stream
+# define DIGEST_BITS 256
+# define DIGEST_REFERENCE "FIPS-180-2"
+# define DIGEST_ALIGN 4
+#elif HASH_ALGO_SHA224
+# define PROGRAM_NAME "sha224sum"
+# define DIGEST_TYPE_STRING "SHA224"
+# define DIGEST_STREAM sha224_stream
+# define DIGEST_BITS 224
+# define DIGEST_REFERENCE "RFC 3874"
+# define DIGEST_ALIGN 4
+#elif HASH_ALGO_SHA512
+# define PROGRAM_NAME "sha512sum"
+# define DIGEST_TYPE_STRING "SHA512"
+# define DIGEST_STREAM sha512_stream
+# define DIGEST_BITS 512
+# define DIGEST_REFERENCE "FIPS-180-2"
+# define DIGEST_ALIGN 8
+#elif HASH_ALGO_SHA384
+# define PROGRAM_NAME "sha384sum"
+# define DIGEST_TYPE_STRING "SHA384"
+# define DIGEST_STREAM sha384_stream
+# define DIGEST_BITS 384
+# define DIGEST_REFERENCE "FIPS-180-2"
+# define DIGEST_ALIGN 8
+#else
+# error "Can't decide which hash algorithm to compile."
+#endif
+
+#define DIGEST_HEX_BYTES (DIGEST_BITS / 4)
+#define DIGEST_BIN_BYTES (DIGEST_BITS / 8)
+
+#define AUTHORS "Ulrich Drepper", "Scott Miller", "David Madore"
+
+/* The minimum length of a valid digest line. This length does
+ not include any newline character at the end of a line. */
+#define MIN_DIGEST_LINE_LENGTH \
+ (DIGEST_HEX_BYTES /* length of hexadecimal message digest */ \
+ + 2 /* blank and binary indicator */ \
+ + 1 /* minimum filename length */ )
+
+/* True if any of the files read were the standard input. */
+static bool have_read_stdin;
+
+/* The minimum length of a valid checksum line for the selected algorithm. */
+static size_t min_digest_line_length;
+
+/* Set to the length of a digest hex string for the selected algorithm. */
+static size_t digest_hex_bytes;
+
+/* With --check, don't generate any output.
+ The exit code indicates success or failure. */
+static bool status_only = false;
+
+/* With --check, print a message to standard error warning about each
+ improperly formatted checksum line. */
+static bool warn = false;
+
+/* The name this program was run with. */
+char *program_name;
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ STATUS_OPTION = CHAR_MAX + 1
+};
+
+static const struct option long_options[] =
+{
+ { "binary", no_argument, NULL, 'b' },
+ { "check", no_argument, NULL, 'c' },
+ { "status", no_argument, NULL, STATUS_OPTION },
+ { "text", no_argument, NULL, 't' },
+ { "warn", no_argument, NULL, 'w' },
+ { GETOPT_HELP_OPTION_DECL },
+ { GETOPT_VERSION_OPTION_DECL },
+ { NULL, 0, NULL, 0 }
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION] [FILE]...\n\
+Print or check %s (%d-bit) checksums.\n\
+With no FILE, or when FILE is -, read standard input.\n\
+\n\
+"),
+ program_name,
+ DIGEST_TYPE_STRING,
+ DIGEST_BITS);
+ if (O_BINARY)
+ fputs (_("\
+ -b, --binary read in binary mode (default unless reading tty stdin)\n\
+"), stdout);
+ else
+ fputs (_("\
+ -b, --binary read in binary mode\n\
+"), stdout);
+ printf (_("\
+ -c, --check read %s sums from the FILEs and check them\n"),
+ DIGEST_TYPE_STRING);
+ if (O_BINARY)
+ fputs (_("\
+ -t, --text read in text mode (default if reading tty stdin)\n\
+"), stdout);
+ else
+ fputs (_("\
+ -t, --text read in text mode (default)\n\
+"), stdout);
+ fputs (_("\
+\n\
+The following two options are useful only when verifying checksums:\n\
+ --status don't output anything, status code shows success\n\
+ -w, --warn warn about improperly formatted checksum lines\n\
+\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\
+\n\
+The sums are computed as described in %s. When checking, the input\n\
+should be a former output of this program. The default mode is to print\n\
+a line with checksum, a character indicating type (`*' for binary, ` ' for\n\
+text), and name for each FILE.\n"),
+ DIGEST_REFERENCE);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+
+ exit (status);
+}
+
+#define ISWHITE(c) ((c) == ' ' || (c) == '\t')
+
+/* Split the checksum string S (of length S_LEN) from a BSD 'md5' or
+ 'sha1' command into two parts: a hexadecimal digest, and the file
+ name. S is modified. Return true if successful. */
+
+static bool
+bsd_split_3 (char *s, size_t s_len, unsigned char **hex_digest, char **file_name)
+{
+ size_t i;
+
+ *file_name = s;
+
+ /* Find end of filename. The BSD 'md5' and 'sha1' commands do not escape
+ filenames, so search backwards for the last ')'. */
+ i = s_len - 1;
+ while (i && s[i] != ')')
+ i--;
+
+ if (s[i] != ')')
+ return false;
+
+ s[i++] = '\0';
+
+ while (ISWHITE (s[i]))
+ i++;
+
+ if (s[i] != '=')
+ return false;
+
+ i++;
+
+ while (ISWHITE (s[i]))
+ i++;
+
+ *hex_digest = (unsigned char *) &s[i];
+ return true;
+}
+
+/* Split the string S (of length S_LEN) into three parts:
+ a hexadecimal digest, binary flag, and the file name.
+ S is modified. Return true if successful. */
+
+static bool
+split_3 (char *s, size_t s_len,
+ unsigned char **hex_digest, int *binary, char **file_name)
+{
+ size_t i;
+ bool escaped_filename = false;
+ size_t algo_name_len;
+
+ i = 0;
+ while (ISWHITE (s[i]))
+ ++i;
+
+ /* Check for BSD-style checksum line. */
+ algo_name_len = strlen (DIGEST_TYPE_STRING);
+ if (strncmp (s + i, DIGEST_TYPE_STRING, algo_name_len) == 0)
+ {
+ if (strncmp (s + i + algo_name_len, " (", 2) == 0)
+ {
+ *binary = 0;
+ return bsd_split_3 (s + i + algo_name_len + 2,
+ s_len - (i + algo_name_len + 2),
+ hex_digest, file_name);
+ }
+ }
+
+ /* Ignore this line if it is too short.
+ Each line must have at least `min_digest_line_length - 1' (or one more, if
+ the first is a backslash) more characters to contain correct message digest
+ information. */
+ if (s_len - i < min_digest_line_length + (s[i] == '\\'))
+ return false;
+
+ if (s[i] == '\\')
+ {
+ ++i;
+ escaped_filename = true;
+ }
+ *hex_digest = (unsigned char *) &s[i];
+
+ /* The first field has to be the n-character hexadecimal
+ representation of the message digest. If it is not followed
+ immediately by a white space it's an error. */
+ i += digest_hex_bytes;
+ if (!ISWHITE (s[i]))
+ return false;
+
+ s[i++] = '\0';
+
+ if (s[i] != ' ' && s[i] != '*')
+ return false;
+ *binary = (s[i++] == '*');
+
+ /* All characters between the type indicator and end of line are
+ significant -- that includes leading and trailing white space. */
+ *file_name = &s[i];
+
+ if (escaped_filename)
+ {
+ /* Translate each `\n' string in the file name to a NEWLINE,
+ and each `\\' string to a backslash. */
+
+ char *dst = &s[i];
+
+ while (i < s_len)
+ {
+ switch (s[i])
+ {
+ case '\\':
+ if (i == s_len - 1)
+ {
+ /* A valid line does not end with a backslash. */
+ return false;
+ }
+ ++i;
+ switch (s[i++])
+ {
+ case 'n':
+ *dst++ = '\n';
+ break;
+ case '\\':
+ *dst++ = '\\';
+ break;
+ default:
+ /* Only `\' or `n' may follow a backslash. */
+ return false;
+ }
+ break;
+
+ case '\0':
+ /* The file name may not contain a NUL. */
+ return false;
+ break;
+
+ default:
+ *dst++ = s[i++];
+ break;
+ }
+ }
+ *dst = '\0';
+ }
+ return true;
+}
+
+static bool
+hex_digits (unsigned char const *s)
+{
+ while (*s)
+ {
+ if (!isxdigit (*s))
+ return false;
+ ++s;
+ }
+ return true;
+}
+
+/* An interface to the function, DIGEST_STREAM.
+ Operate on FILENAME (it may be "-").
+
+ *BINARY indicates whether the file is binary. BINARY < 0 means it
+ depends on whether binary mode makes any difference and the file is
+ a terminal; in that case, clear *BINARY if the file was treated as
+ text because it was a terminal.
+
+ Put the checksum in *BIN_RESULT, which must be properly aligned.
+ Return true if successful. */
+
+static bool
+digest_file (const char *filename, int *binary, unsigned char *bin_result)
+{
+ FILE *fp;
+ int err;
+ bool is_stdin = STREQ (filename, "-");
+
+ if (is_stdin)
+ {
+ have_read_stdin = true;
+ fp = stdin;
+ if (O_BINARY && *binary)
+ {
+ if (*binary < 0)
+ *binary = ! isatty (STDIN_FILENO);
+ if (*binary)
+ freopen (NULL, "rb", stdin);
+ }
+ }
+ else
+ {
+ fp = fopen (filename, (O_BINARY && *binary ? "rb" : "r"));
+ if (fp == NULL)
+ {
+ error (0, errno, "%s", filename);
+ return false;
+ }
+ }
+
+ err = DIGEST_STREAM (fp, bin_result);
+ if (err)
+ {
+ error (0, errno, "%s", filename);
+ if (fp != stdin)
+ fclose (fp);
+ return false;
+ }
+
+ if (!is_stdin && fclose (fp) != 0)
+ {
+ error (0, errno, "%s", filename);
+ return false;
+ }
+
+ return true;
+}
+
+static bool
+digest_check (const char *checkfile_name)
+{
+ FILE *checkfile_stream;
+ uintmax_t n_properly_formatted_lines = 0;
+ uintmax_t n_mismatched_checksums = 0;
+ uintmax_t n_open_or_read_failures = 0;
+ unsigned char bin_buffer_unaligned[DIGEST_BIN_BYTES + DIGEST_ALIGN];
+ /* Make sure bin_buffer is properly aligned. */
+ unsigned char *bin_buffer = ptr_align (bin_buffer_unaligned, DIGEST_ALIGN);
+ uintmax_t line_number;
+ char *line;
+ size_t line_chars_allocated;
+ bool is_stdin = STREQ (checkfile_name, "-");
+
+ if (is_stdin)
+ {
+ have_read_stdin = true;
+ checkfile_name = _("standard input");
+ checkfile_stream = stdin;
+ }
+ else
+ {
+ checkfile_stream = fopen (checkfile_name, "r");
+ if (checkfile_stream == NULL)
+ {
+ error (0, errno, "%s", checkfile_name);
+ return false;
+ }
+ }
+
+ line_number = 0;
+ line = NULL;
+ line_chars_allocated = 0;
+ do
+ {
+ char *filename;
+ int binary;
+ unsigned char *hex_digest IF_LINT (= NULL);
+ ssize_t line_length;
+
+ ++line_number;
+ if (line_number == 0)
+ error (EXIT_FAILURE, 0, _("%s: too many checksum lines"),
+ checkfile_name);
+
+ line_length = getline (&line, &line_chars_allocated, checkfile_stream);
+ if (line_length <= 0)
+ break;
+
+ /* Ignore comment lines, which begin with a '#' character. */
+ if (line[0] == '#')
+ continue;
+
+ /* Remove any trailing newline. */
+ if (line[line_length - 1] == '\n')
+ line[--line_length] = '\0';
+
+ if (! (split_3 (line, line_length, &hex_digest, &binary, &filename)
+ && ! (is_stdin && STREQ (filename, "-"))
+ && hex_digits (hex_digest)))
+ {
+ if (warn)
+ {
+ error (0, 0,
+ _("%s: %" PRIuMAX
+ ": improperly formatted %s checksum line"),
+ checkfile_name, line_number,
+ DIGEST_TYPE_STRING);
+ }
+ }
+ else
+ {
+ static const char bin2hex[] = { '0', '1', '2', '3',
+ '4', '5', '6', '7',
+ '8', '9', 'a', 'b',
+ 'c', 'd', 'e', 'f' };
+ bool ok;
+
+ ++n_properly_formatted_lines;
+
+ ok = digest_file (filename, &binary, bin_buffer);
+
+ if (!ok)
+ {
+ ++n_open_or_read_failures;
+ if (!status_only)
+ {
+ printf (_("%s: FAILED open or read\n"), filename);
+ fflush (stdout);
+ }
+ }
+ else
+ {
+ size_t digest_bin_bytes = digest_hex_bytes / 2;
+ size_t cnt;
+ /* Compare generated binary number with text representation
+ in check file. Ignore case of hex digits. */
+ for (cnt = 0; cnt < digest_bin_bytes; ++cnt)
+ {
+ if (tolower (hex_digest[2 * cnt])
+ != bin2hex[bin_buffer[cnt] >> 4]
+ || (tolower (hex_digest[2 * cnt + 1])
+ != (bin2hex[bin_buffer[cnt] & 0xf])))
+ break;
+ }
+ if (cnt != digest_bin_bytes)
+ ++n_mismatched_checksums;
+
+ if (!status_only)
+ {
+ printf ("%s: %s\n", filename,
+ (cnt != digest_bin_bytes ? _("FAILED") : _("OK")));
+ fflush (stdout);
+ }
+ }
+ }
+ }
+ while (!feof (checkfile_stream) && !ferror (checkfile_stream));
+
+ free (line);
+
+ if (ferror (checkfile_stream))
+ {
+ error (0, 0, _("%s: read error"), checkfile_name);
+ return false;
+ }
+
+ if (!is_stdin && fclose (checkfile_stream) != 0)
+ {
+ error (0, errno, "%s", checkfile_name);
+ return false;
+ }
+
+ if (n_properly_formatted_lines == 0)
+ {
+ /* Warn if no tests are found. */
+ error (0, 0, _("%s: no properly formatted %s checksum lines found"),
+ checkfile_name, DIGEST_TYPE_STRING);
+ }
+ else
+ {
+ if (!status_only)
+ {
+ if (n_open_or_read_failures != 0)
+ error (0, 0,
+ ngettext ("WARNING: %" PRIuMAX " of %" PRIuMAX
+ " listed file could not be read",
+ "WARNING: %" PRIuMAX " of %" PRIuMAX
+ " listed files could not be read",
+ select_plural (n_properly_formatted_lines)),
+ n_open_or_read_failures, n_properly_formatted_lines);
+
+ if (n_mismatched_checksums != 0)
+ {
+ uintmax_t n_computed_checksums =
+ (n_properly_formatted_lines - n_open_or_read_failures);
+ error (0, 0,
+ ngettext ("WARNING: %" PRIuMAX " of %" PRIuMAX
+ " computed checksum did NOT match",
+ "WARNING: %" PRIuMAX " of %" PRIuMAX
+ " computed checksums did NOT match",
+ select_plural (n_computed_checksums)),
+ n_mismatched_checksums, n_computed_checksums);
+ }
+ }
+ }
+
+ return (n_properly_formatted_lines != 0
+ && n_mismatched_checksums == 0
+ && n_open_or_read_failures == 0);
+}
+
+int
+main (int argc, char **argv)
+{
+ unsigned char bin_buffer_unaligned[DIGEST_BIN_BYTES + DIGEST_ALIGN];
+ /* Make sure bin_buffer is properly aligned. */
+ unsigned char *bin_buffer = ptr_align (bin_buffer_unaligned, DIGEST_ALIGN);
+ bool do_check = false;
+ int opt;
+ bool ok = true;
+ int binary = -1;
+
+ /* Setting values of global variables. */
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ while ((opt = getopt_long (argc, argv, "bctw", long_options, NULL)) != -1)
+ switch (opt)
+ {
+ case 'b':
+ binary = 1;
+ break;
+ case 'c':
+ do_check = true;
+ break;
+ case STATUS_OPTION:
+ status_only = true;
+ warn = false;
+ break;
+ case 't':
+ binary = 0;
+ break;
+ case 'w':
+ status_only = false;
+ warn = true;
+ break;
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ usage (EXIT_FAILURE);
+ }
+
+ min_digest_line_length = MIN_DIGEST_LINE_LENGTH;
+ digest_hex_bytes = DIGEST_HEX_BYTES;
+
+ if (0 <= binary && do_check)
+ {
+ error (0, 0, _("the --binary and --text options are meaningless when "
+ "verifying checksums"));
+ usage (EXIT_FAILURE);
+ }
+
+ if (status_only & !do_check)
+ {
+ error (0, 0,
+ _("the --status option is meaningful only when verifying checksums"));
+ usage (EXIT_FAILURE);
+ }
+
+ if (warn & !do_check)
+ {
+ error (0, 0,
+ _("the --warn option is meaningful only when verifying checksums"));
+ usage (EXIT_FAILURE);
+ }
+
+ if (!O_BINARY && binary < 0)
+ binary = 0;
+
+ if (optind == argc)
+ argv[argc++] = "-";
+
+ for (; optind < argc; ++optind)
+ {
+ char *file = argv[optind];
+
+ if (do_check)
+ ok &= digest_check (file);
+ else
+ {
+ int file_is_binary = binary;
+
+ if (! digest_file (file, &file_is_binary, bin_buffer))
+ ok = false;
+ else
+ {
+ size_t i;
+
+ /* Output a leading backslash if the file name contains
+ a newline or backslash. */
+ if (strchr (file, '\n') || strchr (file, '\\'))
+ putchar ('\\');
+
+ for (i = 0; i < (digest_hex_bytes / 2); ++i)
+ printf ("%02x", bin_buffer[i]);
+
+ putchar (' ');
+ if (file_is_binary)
+ putchar ('*');
+ else
+ putchar (' ');
+
+ /* Translate each NEWLINE byte to the string, "\\n",
+ and each backslash to "\\\\". */
+ for (i = 0; i < strlen (file); ++i)
+ {
+ switch (file[i])
+ {
+ case '\n':
+ fputs ("\\n", stdout);
+ break;
+
+ case '\\':
+ fputs ("\\\\", stdout);
+ break;
+
+ default:
+ putchar (file[i]);
+ break;
+ }
+ }
+ putchar ('\n');
+ }
+ }
+ }
+
+ if (have_read_stdin && fclose (stdin) == EOF)
+ error (EXIT_FAILURE, errno, _("standard input"));
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/mkdir.c b/src/mkdir.c
new file mode 100644
index 0000000..6fa0ac2
--- /dev/null
+++ b/src/mkdir.c
@@ -0,0 +1,205 @@
+/* mkdir -- make directories
+ Copyright (C) 90, 1995-2002, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* David MacKenzie <djm@ai.mit.edu> */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "error.h"
+#include "lchmod.h"
+#include "mkdir-p.h"
+#include "modechange.h"
+#include "quote.h"
+#include "savewd.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "mkdir"
+
+#define AUTHORS "David MacKenzie"
+
+/* The name this program was run with. */
+char *program_name;
+
+static struct option const longopts[] =
+{
+ {"mode", required_argument, NULL, 'm'},
+ {"parents", no_argument, NULL, 'p'},
+ {"verbose", no_argument, NULL, 'v'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION] DIRECTORY...\n"), program_name);
+ fputs (_("\
+Create the DIRECTORY(ies), if they do not already exist.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -m, --mode=MODE set file mode (as in chmod), not a=rwx - umask\n\
+ -p, --parents no error if existing, make parent directories as needed\n\
+ -v, --verbose print a message for each created directory\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Options passed to subsidiary functions. */
+struct mkdir_options
+{
+ /* Function to make an ancestor, or NULL if ancestors should not be
+ made. */
+ int (*make_ancestor_function) (char const *, char const *, void *);
+
+ /* Mode for ancestor directory. */
+ mode_t ancestor_mode;
+
+ /* Mode for directory itself. */
+ mode_t mode;
+
+ /* File mode bits affected by MODE. */
+ mode_t mode_bits;
+
+ /* If not null, format to use when reporting newly made directories. */
+ char const *created_directory_format;
+};
+
+/* Report that directory DIR was made, if OPTIONS requests this. */
+static void
+announce_mkdir (char const *dir, void *options)
+{
+ struct mkdir_options const *o = options;
+ if (o->created_directory_format)
+ error (0, 0, o->created_directory_format, quote (dir));
+}
+
+/* Make ancestor directory DIR, whose last component is COMPONENT,
+ with options OPTIONS. Assume the working directory is COMPONENT's
+ parent. Return 0 if successful and the resulting directory is
+ readable, 1 if successful but the resulting directory is not
+ readable, -1 (setting errno) otherwise. */
+static int
+make_ancestor (char const *dir, char const *component, void *options)
+{
+ struct mkdir_options const *o = options;
+ int r = mkdir (component, o->ancestor_mode);
+ if (r == 0)
+ {
+ r = ! (o->ancestor_mode & S_IRUSR);
+ announce_mkdir (dir, options);
+ }
+ return r;
+}
+
+/* Process a command-line file name. */
+static int
+process_dir (char *dir, struct savewd *wd, void *options)
+{
+ struct mkdir_options const *o = options;
+ return (make_dir_parents (dir, wd, o->make_ancestor_function, options,
+ o->mode, announce_mkdir,
+ o->mode_bits, (uid_t) -1, (gid_t) -1, true)
+ ? EXIT_SUCCESS
+ : EXIT_FAILURE);
+}
+
+int
+main (int argc, char **argv)
+{
+ const char *specified_mode = NULL;
+ int optc;
+ struct mkdir_options options;
+ options.make_ancestor_function = NULL;
+ options.mode = S_IRWXUGO;
+ options.mode_bits = 0;
+ options.created_directory_format = NULL;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ while ((optc = getopt_long (argc, argv, "pm:v", longopts, NULL)) != -1)
+ {
+ switch (optc)
+ {
+ case 'p':
+ options.make_ancestor_function = make_ancestor;
+ break;
+ case 'm':
+ specified_mode = optarg;
+ break;
+ case 'v': /* --verbose */
+ options.created_directory_format = _("created directory %s");
+ break;
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (optind == argc)
+ {
+ error (0, 0, _("missing operand"));
+ usage (EXIT_FAILURE);
+ }
+
+ if (options.make_ancestor_function || specified_mode)
+ {
+ mode_t umask_value = umask (0);
+
+ options.ancestor_mode = (S_IRWXUGO & ~umask_value) | (S_IWUSR | S_IXUSR);
+
+ if (specified_mode)
+ {
+ struct mode_change *change = mode_compile (specified_mode);
+ if (!change)
+ error (EXIT_FAILURE, 0, _("invalid mode %s"),
+ quote (specified_mode));
+ options.mode = mode_adjust (S_IRWXUGO, true, umask_value, change,
+ &options.mode_bits);
+ free (change);
+ }
+ else
+ options.mode = S_IRWXUGO & ~umask_value;
+ }
+
+ exit (savewd_process_files (argc - optind, argv + optind,
+ process_dir, &options));
+}
diff --git a/src/mkfifo.c b/src/mkfifo.c
new file mode 100644
index 0000000..d329b79
--- /dev/null
+++ b/src/mkfifo.c
@@ -0,0 +1,129 @@
+/* mkfifo -- make fifo's (named pipes)
+ Copyright (C) 90, 91, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* David MacKenzie <djm@ai.mit.edu> */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "error.h"
+#include "modechange.h"
+#include "quote.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "mkfifo"
+
+#define AUTHORS "David MacKenzie"
+
+/* The name this program was run with. */
+char *program_name;
+
+static struct option const longopts[] =
+{
+ {"mode", required_argument, NULL, 'm'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION] NAME...\n"), program_name);
+ fputs (_("\
+Create named pipes (FIFOs) with the given NAMEs.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ mode_t newmode;
+ char const *specified_mode = NULL;
+ int exit_status = EXIT_SUCCESS;
+ int optc;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ while ((optc = getopt_long (argc, argv, "m:", longopts, NULL)) != -1)
+ {
+ switch (optc)
+ {
+ case 'm':
+ specified_mode = optarg;
+ break;
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (optind == argc)
+ {
+ error (0, 0, _("missing operand"));
+ usage (EXIT_FAILURE);
+ }
+
+ newmode = (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
+ if (specified_mode)
+ {
+ struct mode_change *change = mode_compile (specified_mode);
+ if (!change)
+ error (EXIT_FAILURE, 0, _("invalid mode"));
+ newmode = mode_adjust (newmode, false, umask (0), change, NULL);
+ free (change);
+ if (newmode & ~S_IRWXUGO)
+ error (EXIT_FAILURE, 0,
+ _("mode must specify only file permission bits"));
+ }
+
+ for (; optind < argc; ++optind)
+ if (mkfifo (argv[optind], newmode) != 0)
+ {
+ error (0, errno, _("cannot create fifo %s"), quote (argv[optind]));
+ exit_status = EXIT_FAILURE;
+ }
+
+ exit (exit_status);
+}
diff --git a/src/mknod.c b/src/mknod.c
new file mode 100644
index 0000000..43a1b9d
--- /dev/null
+++ b/src/mknod.c
@@ -0,0 +1,221 @@
+/* mknod -- make special files
+ Copyright (C) 90, 91, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David MacKenzie <djm@ai.mit.edu> */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "error.h"
+#include "modechange.h"
+#include "quote.h"
+#include "xstrtol.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "mknod"
+
+#define AUTHORS "David MacKenzie"
+
+/* The name this program was run with. */
+char *program_name;
+
+static struct option const longopts[] =
+{
+ {"mode", required_argument, NULL, 'm'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]... NAME TYPE [MAJOR MINOR]\n"),
+ program_name);
+ fputs (_("\
+Create the special file NAME of the given TYPE.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -m, --mode=MODE set file permission bits to MODE, not a=rw - umask\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they\n\
+must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X,\n\
+it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal;\n\
+otherwise, as decimal. TYPE may be:\n\
+"), stdout);
+ fputs (_("\
+\n\
+ b create a block (buffered) special file\n\
+ c, u create a character (unbuffered) special file\n\
+ p create a FIFO\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ mode_t newmode;
+ char const *specified_mode = NULL;
+ int optc;
+ int expected_operands;
+ mode_t node_type;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ while ((optc = getopt_long (argc, argv, "m:", longopts, NULL)) != -1)
+ {
+ switch (optc)
+ {
+ case 'm':
+ specified_mode = optarg;
+ break;
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ newmode = (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
+ if (specified_mode)
+ {
+ struct mode_change *change = mode_compile (specified_mode);
+ if (!change)
+ error (EXIT_FAILURE, 0, _("invalid mode"));
+ newmode = mode_adjust (newmode, false, umask (0), change, NULL);
+ free (change);
+ if (newmode & ~S_IRWXUGO)
+ error (EXIT_FAILURE, 0,
+ _("mode must specify only file permission bits"));
+ }
+
+ /* If the number of arguments is 0 or 1,
+ or (if it's 2 or more and the second one starts with `p'), then there
+ must be exactly two operands. Otherwise, there must be four. */
+ expected_operands = (argc <= optind
+ || (optind + 1 < argc && argv[optind + 1][0] == 'p')
+ ? 2 : 4);
+
+ if (argc - optind < expected_operands)
+ {
+ if (argc <= optind)
+ error (0, 0, _("missing operand"));
+ else
+ error (0, 0, _("missing operand after %s"), quote (argv[argc - 1]));
+ if (expected_operands == 4 && argc - optind == 2)
+ fprintf (stderr, "%s\n",
+ _("Special files require major and minor device numbers."));
+ usage (EXIT_FAILURE);
+ }
+
+ if (expected_operands < argc - optind)
+ {
+ error (0, 0, _("extra operand %s"),
+ quote (argv[optind + expected_operands]));
+ if (expected_operands == 2 && argc - optind == 4)
+ fprintf (stderr, "%s\n",
+ _("Fifos do not have major and minor device numbers."));
+ usage (EXIT_FAILURE);
+ }
+
+ /* Only check the first character, to allow mnemonic usage like
+ `mknod /dev/rst0 character 18 0'. */
+
+ switch (argv[optind + 1][0])
+ {
+ case 'b': /* `block' or `buffered' */
+#ifndef S_IFBLK
+ error (EXIT_FAILURE, 0, _("block special files not supported"));
+#else
+ node_type = S_IFBLK;
+#endif
+ goto block_or_character;
+
+ case 'c': /* `character' */
+ case 'u': /* `unbuffered' */
+#ifndef S_IFCHR
+ error (EXIT_FAILURE, 0, _("character special files not supported"));
+#else
+ node_type = S_IFCHR;
+#endif
+ goto block_or_character;
+
+ block_or_character:
+ {
+ char const *s_major = argv[optind + 2];
+ char const *s_minor = argv[optind + 3];
+ uintmax_t i_major, i_minor;
+ dev_t device;
+
+ if (xstrtoumax (s_major, NULL, 0, &i_major, NULL) != LONGINT_OK
+ || i_major != (major_t) i_major)
+ error (EXIT_FAILURE, 0,
+ _("invalid major device number %s"), quote (s_major));
+
+ if (xstrtoumax (s_minor, NULL, 0, &i_minor, NULL) != LONGINT_OK
+ || i_minor != (minor_t) i_minor)
+ error (EXIT_FAILURE, 0,
+ _("invalid minor device number %s"), quote (s_minor));
+
+ device = makedev (i_major, i_minor);
+#ifdef NODEV
+ if (device == NODEV)
+ error (EXIT_FAILURE, 0, _("invalid device %s %s"), s_major, s_minor);
+#endif
+
+ if (mknod (argv[optind], newmode | node_type, device) != 0)
+ error (EXIT_FAILURE, errno, "%s", quote (argv[optind]));
+ }
+ break;
+
+ case 'p': /* `pipe' */
+ if (mkfifo (argv[optind], newmode) != 0)
+ error (EXIT_FAILURE, errno, "%s", quote (argv[optind]));
+ break;
+
+ default:
+ error (0, 0, _("invalid device type %s"), quote (argv[optind + 1]));
+ usage (EXIT_FAILURE);
+ }
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/mv.c b/src/mv.c
new file mode 100644
index 0000000..1d1ddda
--- /dev/null
+++ b/src/mv.c
@@ -0,0 +1,486 @@
+/* mv -- move or rename files
+ Copyright (C) 86, 89, 90, 91, 1995-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Mike Parker, David MacKenzie, and Jim Meyering */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+#include <assert.h>
+
+#include "system.h"
+#include "argmatch.h"
+#include "backupfile.h"
+#include "copy.h"
+#include "cp-hash.h"
+#include "error.h"
+#include "filenamecat.h"
+#include "quote.h"
+#include "remove.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "mv"
+
+#define AUTHORS "Mike Parker", "David MacKenzie", "Jim Meyering"
+
+/* Initial number of entries in each hash table entry's table of inodes. */
+#define INITIAL_HASH_MODULE 100
+
+/* Initial number of entries in the inode hash table. */
+#define INITIAL_ENTRY_TAB_SIZE 70
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ REPLY_OPTION = CHAR_MAX + 1,
+ STRIP_TRAILING_SLASHES_OPTION
+};
+
+/* The name this program was run with. */
+char *program_name;
+
+/* Remove any trailing slashes from each SOURCE argument. */
+static bool remove_trailing_slashes;
+
+/* Valid arguments to the `--reply' option. */
+static char const* const reply_args[] =
+{
+ "yes", "no", "query", NULL
+};
+
+/* The values that correspond to the above strings. */
+static int const reply_vals[] =
+{
+ I_ALWAYS_YES, I_ALWAYS_NO, I_ASK_USER
+};
+
+static struct option const long_options[] =
+{
+ {"backup", optional_argument, NULL, 'b'},
+ {"force", no_argument, NULL, 'f'},
+ {"interactive", no_argument, NULL, 'i'},
+ {"no-target-directory", no_argument, NULL, 'T'},
+ {"reply", required_argument, NULL, REPLY_OPTION}, /* Deprecated 2005-07-03,
+ remove in 2008. */
+ {"strip-trailing-slashes", no_argument, NULL, STRIP_TRAILING_SLASHES_OPTION},
+ {"suffix", required_argument, NULL, 'S'},
+ {"target-directory", required_argument, NULL, 't'},
+ {"update", no_argument, NULL, 'u'},
+ {"verbose", no_argument, NULL, 'v'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+static void
+rm_option_init (struct rm_options *x)
+{
+ x->ignore_missing_files = false;
+ x->root_dev_ino = NULL;
+ x->recursive = true;
+ x->one_file_system = false;
+
+ /* Should we prompt for removal, too? No. Prompting for the `move'
+ part is enough. It implies removal. */
+ x->interactive = RMI_NEVER;
+ x->stdin_tty = false;
+
+ x->verbose = false;
+
+ /* Since this program may well have to process additional command
+ line arguments after any call to `rm', that function must preserve
+ the initial working directory, in case one of those is a
+ `.'-relative name. */
+ x->require_restore_cwd = true;
+}
+
+static void
+cp_option_init (struct cp_options *x)
+{
+ x->copy_as_regular = false; /* FIXME: maybe make this an option */
+ x->dereference = DEREF_NEVER;
+ x->unlink_dest_before_opening = false;
+ x->unlink_dest_after_failed_open = false;
+ x->hard_link = false;
+ x->interactive = I_UNSPECIFIED;
+ x->move_mode = true;
+ x->chown_privileges = chown_privileges ();
+ x->one_file_system = false;
+ x->preserve_ownership = true;
+ x->preserve_links = true;
+ x->preserve_mode = true;
+ x->preserve_timestamps = true;
+ x->require_preserve = false; /* FIXME: maybe make this an option */
+ x->recursive = true;
+ x->sparse_mode = SPARSE_AUTO; /* FIXME: maybe make this an option */
+ x->symbolic_link = false;
+ x->set_mode = false;
+ x->mode = 0;
+ x->stdin_tty = isatty (STDIN_FILENO);
+
+ x->update = false;
+ x->verbose = false;
+ x->dest_info = NULL;
+ x->src_info = NULL;
+}
+
+/* FILE is the last operand of this command. Return true if FILE is a
+ directory. But report an error if there is a problem accessing FILE, other
+ than nonexistence (errno == ENOENT). */
+
+static bool
+target_directory_operand (char const *file)
+{
+ struct stat st;
+ int err = (stat (file, &st) == 0 ? 0 : errno);
+ bool is_a_dir = !err && S_ISDIR (st.st_mode);
+ if (err && err != ENOENT)
+ error (EXIT_FAILURE, err, _("accessing %s"), quote (file));
+ return is_a_dir;
+}
+
+/* Move SOURCE onto DEST. Handles cross-file-system moves.
+ If SOURCE is a directory, DEST must not exist.
+ Return true if successful. */
+
+static bool
+do_move (const char *source, const char *dest, const struct cp_options *x)
+{
+ bool copy_into_self;
+ bool rename_succeeded;
+ bool ok = copy (source, dest, false, x, &copy_into_self, &rename_succeeded);
+
+ if (ok)
+ {
+ char const *dir_to_remove;
+ if (copy_into_self)
+ {
+ /* In general, when copy returns with copy_into_self set, SOURCE is
+ the same as, or a parent of DEST. In this case we know it's a
+ parent. It doesn't make sense to move a directory into itself, and
+ besides in some situations doing so would give highly nonintuitive
+ results. Run this `mkdir b; touch a c; mv * b' in an empty
+ directory. Here's the result of running echo `find b -print`:
+ b b/a b/b b/b/a b/c. Notice that only file `a' was copied
+ into b/b. Handle this by giving a diagnostic, removing the
+ copied-into-self directory, DEST (`b/b' in the example),
+ and failing. */
+
+ dir_to_remove = NULL;
+ ok = false;
+ }
+ else if (rename_succeeded)
+ {
+ /* No need to remove anything. SOURCE was successfully
+ renamed to DEST. Or the user declined to rename a file. */
+ dir_to_remove = NULL;
+ }
+ else
+ {
+ /* This may mean SOURCE and DEST referred to different devices.
+ It may also conceivably mean that even though they referred
+ to the same device, rename wasn't implemented for that device.
+
+ E.g., (from Joel N. Weber),
+ [...] there might someday be cases where you can't rename
+ but you can copy where the device name is the same, especially
+ on Hurd. Consider an ftpfs with a primitive ftp server that
+ supports uploading, downloading and deleting, but not renaming.
+
+ Also, note that comparing device numbers is not a reliable
+ check for `can-rename'. Some systems can be set up so that
+ files from many different physical devices all have the same
+ st_dev field. This is a feature of some NFS mounting
+ configurations.
+
+ We reach this point if SOURCE has been successfully copied
+ to DEST. Now we have to remove SOURCE.
+
+ This function used to resort to copying only when rename
+ failed and set errno to EXDEV. */
+
+ dir_to_remove = source;
+ }
+
+ if (dir_to_remove != NULL)
+ {
+ struct rm_options rm_options;
+ enum RM_status status;
+
+ rm_option_init (&rm_options);
+ rm_options.verbose = x->verbose;
+
+ status = rm (1, &dir_to_remove, &rm_options);
+ assert (VALID_STATUS (status));
+ if (status == RM_ERROR)
+ ok = false;
+ }
+ }
+
+ return ok;
+}
+
+/* Move file SOURCE onto DEST. Handles the case when DEST is a directory.
+ Treat DEST as a directory if DEST_IS_DIR.
+ Return true if successful. */
+
+static bool
+movefile (char *source, char *dest, bool dest_is_dir,
+ const struct cp_options *x)
+{
+ bool ok;
+
+ /* This code was introduced to handle the ambiguity in the semantics
+ of mv that is induced by the varying semantics of the rename function.
+ Some systems (e.g., Linux) have a rename function that honors a
+ trailing slash, while others (like Solaris 5,6,7) have a rename
+ function that ignores a trailing slash. I believe the Linux
+ rename semantics are POSIX and susv2 compliant. */
+
+ if (remove_trailing_slashes)
+ strip_trailing_slashes (source);
+
+ if (dest_is_dir)
+ {
+ /* Treat DEST as a directory; build the full filename. */
+ char const *src_basename = last_component (source);
+ char *new_dest = file_name_concat (dest, src_basename, NULL);
+ strip_trailing_slashes (new_dest);
+ ok = do_move (source, new_dest, x);
+ free (new_dest);
+ }
+ else
+ {
+ ok = do_move (source, dest, x);
+ }
+
+ return ok;
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [-T] SOURCE DEST\n\
+ or: %s [OPTION]... SOURCE... DIRECTORY\n\
+ or: %s [OPTION]... -t DIRECTORY SOURCE...\n\
+"),
+ program_name, program_name, program_name);
+ fputs (_("\
+Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ --backup[=CONTROL] make a backup of each existing destination file\n\
+ -b like --backup but does not accept an argument\n\
+ -f, --force do not prompt before overwriting\n\
+ -i, --interactive prompt before overwrite\n\
+"), stdout);
+ fputs (_("\
+ --strip-trailing-slashes remove any trailing slashes from each SOURCE\n\
+ argument\n\
+ -S, --suffix=SUFFIX override the usual backup suffix\n\
+"), stdout);
+ fputs (_("\
+ -t, --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY\n\
+ -T, --no-target-directory treat DEST as a normal file\n\
+ -u, --update move only when the SOURCE file is newer\n\
+ than the destination file or when the\n\
+ destination file is missing\n\
+ -v, --verbose explain what is being done\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.\n\
+The version control method may be selected via the --backup option or through\n\
+the VERSION_CONTROL environment variable. Here are the values:\n\
+\n\
+"), stdout);
+ fputs (_("\
+ none, off never make backups (even if --backup is given)\n\
+ numbered, t make numbered backups\n\
+ existing, nil numbered if numbered backups exist, simple otherwise\n\
+ simple, never always make simple backups\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ bool ok;
+ bool make_backups = false;
+ char *backup_suffix_string;
+ char *version_control_string = NULL;
+ struct cp_options x;
+ char *target_directory = NULL;
+ bool no_target_directory = false;
+ int n_files;
+ char **file;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ cp_option_init (&x);
+
+ /* FIXME: consider not calling getenv for SIMPLE_BACKUP_SUFFIX unless
+ we'll actually use backup_suffix_string. */
+ backup_suffix_string = getenv ("SIMPLE_BACKUP_SUFFIX");
+
+ while ((c = getopt_long (argc, argv, "bfit:uvS:T", long_options, NULL))
+ != -1)
+ {
+ switch (c)
+ {
+ case 'b':
+ make_backups = true;
+ if (optarg)
+ version_control_string = optarg;
+ break;
+ case 'f':
+ x.interactive = I_ALWAYS_YES;
+ break;
+ case 'i':
+ x.interactive = I_ASK_USER;
+ break;
+ case REPLY_OPTION: /* Deprecated */
+ x.interactive = XARGMATCH ("--reply", optarg,
+ reply_args, reply_vals);
+ error (0, 0,
+ _("the --reply option is deprecated; use -i or -f instead"));
+ break;
+ case STRIP_TRAILING_SLASHES_OPTION:
+ remove_trailing_slashes = true;
+ break;
+ case 't':
+ if (target_directory)
+ error (EXIT_FAILURE, 0, _("multiple target directories specified"));
+ else
+ {
+ struct stat st;
+ if (stat (optarg, &st) != 0)
+ error (EXIT_FAILURE, errno, _("accessing %s"), quote (optarg));
+ if (! S_ISDIR (st.st_mode))
+ error (EXIT_FAILURE, 0, _("target %s is not a directory"),
+ quote (optarg));
+ }
+ target_directory = optarg;
+ break;
+ case 'T':
+ no_target_directory = true;
+ break;
+ case 'u':
+ x.update = true;
+ break;
+ case 'v':
+ x.verbose = true;
+ break;
+ case 'S':
+ make_backups = true;
+ backup_suffix_string = optarg;
+ break;
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ n_files = argc - optind;
+ file = argv + optind;
+
+ if (n_files <= !target_directory)
+ {
+ if (n_files <= 0)
+ error (0, 0, _("missing file operand"));
+ else
+ error (0, 0, _("missing destination file operand after %s"),
+ quote (file[0]));
+ usage (EXIT_FAILURE);
+ }
+
+ if (no_target_directory)
+ {
+ if (target_directory)
+ error (EXIT_FAILURE, 0,
+ _("Cannot combine --target-directory (-t) "
+ "and --no-target-directory (-T)"));
+ if (2 < n_files)
+ {
+ error (0, 0, _("extra operand %s"), quote (file[2]));
+ usage (EXIT_FAILURE);
+ }
+ }
+ else if (!target_directory)
+ {
+ assert (2 <= n_files);
+ if (target_directory_operand (file[n_files - 1]))
+ target_directory = file[--n_files];
+ else if (2 < n_files)
+ error (EXIT_FAILURE, 0, _("target %s is not a directory"),
+ quote (file[n_files - 1]));
+ }
+
+ if (backup_suffix_string)
+ simple_backup_suffix = xstrdup (backup_suffix_string);
+
+ x.backup_type = (make_backups
+ ? xget_version (_("backup type"),
+ version_control_string)
+ : no_backups);
+
+ hash_init ();
+
+ if (target_directory)
+ {
+ int i;
+
+ /* Initialize the hash table only if we'll need it.
+ The problem it is used to detect can arise only if there are
+ two or more files to move. */
+ if (2 <= n_files)
+ dest_info_init (&x);
+
+ ok = true;
+ for (i = 0; i < n_files; ++i)
+ ok &= movefile (file[i], target_directory, true, &x);
+ }
+ else
+ ok = movefile (file[0], file[1], false, &x);
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/nice.c b/src/nice.c
new file mode 100644
index 0000000..19b38bc
--- /dev/null
+++ b/src/nice.c
@@ -0,0 +1,195 @@
+/* nice -- run a program with modified niceness
+ Copyright (C) 1990-2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* David MacKenzie <djm@gnu.ai.mit.edu> */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+
+#include "system.h"
+
+#if ! HAVE_NICE
+/* Include this after "system.h" so we're sure to have definitions
+ (from time.h or sys/time.h) required for e.g. the ru_utime member. */
+# include <sys/resource.h>
+#endif
+
+#include "error.h"
+#include "long-options.h"
+#include "quote.h"
+#include "xstrtol.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "nice"
+
+#define AUTHORS "David MacKenzie"
+
+#if HAVE_NICE
+# define GET_NICENESS() nice (0)
+#else
+# define GET_NICENESS() getpriority (PRIO_PROCESS, 0)
+#endif
+
+#ifndef NZERO
+# define NZERO 20
+#endif
+
+/* This is required for Darwin Kernel Version 7.7.0. */
+#if NZERO == 0
+# undef NZERO
+# define NZERO 20
+#endif
+
+/* The name this program was run with. */
+char *program_name;
+
+static struct option const longopts[] =
+{
+ {"adjustment", required_argument, NULL, 'n'},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION] [COMMAND [ARG]...]\n"), program_name);
+ printf (_("\
+Run COMMAND with an adjusted niceness, which affects process scheduling.\n\
+With no COMMAND, print the current niceness. Nicenesses range from\n\
+%d (most favorable scheduling) to %d (least favorable).\n\
+\n\
+ -n, --adjustment=N add integer N to the niceness (default 10)\n\
+"),
+ - NZERO, NZERO - 1);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (USAGE_BUILTIN_WARNING, PROGRAM_NAME);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ int current_niceness;
+ int adjustment = 10;
+ char const *adjustment_given = NULL;
+ bool ok;
+ int i;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ initialize_exit_failure (EXIT_FAIL);
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+
+ for (i = 1; i < argc; /* empty */)
+ {
+ char const *s = argv[i];
+
+ if (s[0] == '-' && ISDIGIT (s[1 + (s[1] == '-' || s[1] == '+')]))
+ {
+ adjustment_given = s + 1;
+ ++i;
+ }
+ else
+ {
+ int optc;
+ int fake_argc = argc - (i - 1);
+ char **fake_argv = argv + (i - 1);
+
+ /* Ensure that any getopt diagnostics use the right name. */
+ fake_argv[0] = program_name;
+
+ /* Initialize getopt_long's internal state. */
+ optind = 0;
+
+ optc = getopt_long (fake_argc, fake_argv, "+n:", longopts, NULL);
+ i += optind - 1;
+
+ if (optc == '?')
+ usage (EXIT_FAIL);
+ else if (optc == 'n')
+ adjustment_given = optarg;
+ else /* optc == -1 */
+ break;
+ }
+ }
+
+ if (adjustment_given)
+ {
+ /* If the requested adjustment is outside the valid range,
+ silently bring it to just within range; this mimics what
+ "setpriority" and "nice" do. */
+ enum { MIN_ADJUSTMENT = 1 - 2 * NZERO, MAX_ADJUSTMENT = 2 * NZERO - 1 };
+ long int tmp;
+ if (LONGINT_OVERFLOW < xstrtol (adjustment_given, NULL, 10, &tmp, ""))
+ error (EXIT_FAIL, 0, _("invalid adjustment %s"),
+ quote (adjustment_given));
+ adjustment = MAX (MIN_ADJUSTMENT, MIN (tmp, MAX_ADJUSTMENT));
+ }
+
+ if (i == argc)
+ {
+ if (adjustment_given)
+ {
+ error (0, 0, _("a command must be given with an adjustment"));
+ usage (EXIT_FAIL);
+ }
+ /* No command given; print the niceness. */
+ errno = 0;
+ current_niceness = GET_NICENESS ();
+ if (current_niceness == -1 && errno != 0)
+ error (EXIT_FAIL, errno, _("cannot get niceness"));
+ printf ("%d\n", current_niceness);
+ exit (EXIT_SUCCESS);
+ }
+
+ errno = 0;
+#if HAVE_NICE
+ ok = (nice (adjustment) != -1 || errno == 0);
+#else
+ current_niceness = GET_NICENESS ();
+ if (current_niceness == -1 && errno != 0)
+ error (EXIT_FAIL, errno, _("cannot get niceness"));
+ ok = (setpriority (PRIO_PROCESS, 0, current_niceness + adjustment) == 0);
+#endif
+ if (!ok)
+ error (errno == EPERM ? 0 : EXIT_FAIL, errno, _("cannot set niceness"));
+
+ execvp (argv[i], &argv[i]);
+
+ {
+ int exit_status = (errno == ENOENT ? EXIT_ENOENT : EXIT_CANNOT_INVOKE);
+ error (0, errno, "%s", argv[i]);
+ exit (exit_status);
+ }
+}
diff --git a/src/nl.c b/src/nl.c
new file mode 100644
index 0000000..04c8118
--- /dev/null
+++ b/src/nl.c
@@ -0,0 +1,617 @@
+/* nl -- number lines of files
+ Copyright (C) 89, 92, 1995-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Scott Bartram (nancy!scott@uunet.uu.net)
+ Revised by David MacKenzie (djm@gnu.ai.mit.edu) */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <getopt.h>
+
+#include "system.h"
+
+#include <regex.h>
+
+#include "error.h"
+#include "linebuffer.h"
+#include "quote.h"
+#include "xstrtol.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "nl"
+
+#define AUTHORS "Scott Bartram", "David MacKenzie"
+
+/* Line-number formats. They are given an int width, an intmax_t
+ value, and a string separator. */
+
+/* Right justified, no leading zeroes. */
+static char const FORMAT_RIGHT_NOLZ[] = "%*" PRIdMAX "%s";
+
+/* Right justified, leading zeroes. */
+static char const FORMAT_RIGHT_LZ[] = "%0*" PRIdMAX "%s";
+
+/* Left justified, no leading zeroes. */
+static char const FORMAT_LEFT[] = "%-*" PRIdMAX "%s";
+
+/* Default section delimiter characters. */
+static char const DEFAULT_SECTION_DELIMITERS[] = "\\:";
+
+/* Types of input lines: either one of the section delimiters,
+ or text to output. */
+enum section
+{
+ Header, Body, Footer, Text
+};
+
+/* The name this program was run with. */
+char *program_name;
+
+/* Format of body lines (-b). */
+static char const *body_type = "t";
+
+/* Format of header lines (-h). */
+static char const *header_type = "n";
+
+/* Format of footer lines (-f). */
+static char const *footer_type = "n";
+
+/* Format currently being used (body, header, or footer). */
+static char const *current_type;
+
+/* Regex for body lines to number (-bp). */
+static struct re_pattern_buffer body_regex;
+
+/* Regex for header lines to number (-hp). */
+static struct re_pattern_buffer header_regex;
+
+/* Regex for footer lines to number (-fp). */
+static struct re_pattern_buffer footer_regex;
+
+/* Fastmaps for the above. */
+static char body_fastmap[UCHAR_MAX + 1];
+static char header_fastmap[UCHAR_MAX + 1];
+static char footer_fastmap[UCHAR_MAX + 1];
+
+/* Pointer to current regex, if any. */
+static struct re_pattern_buffer *current_regex = NULL;
+
+/* Separator string to print after line number (-s). */
+static char const *separator_str = "\t";
+
+/* Input section delimiter string (-d). */
+static char const *section_del = DEFAULT_SECTION_DELIMITERS;
+
+/* Header delimiter string. */
+static char *header_del = NULL;
+
+/* Header section delimiter length. */
+static size_t header_del_len;
+
+/* Body delimiter string. */
+static char *body_del = NULL;
+
+/* Body section delimiter length. */
+static size_t body_del_len;
+
+/* Footer delimiter string. */
+static char *footer_del = NULL;
+
+/* Footer section delimiter length. */
+static size_t footer_del_len;
+
+/* Input buffer. */
+static struct linebuffer line_buf;
+
+/* printf format string for unnumbered lines. */
+static char *print_no_line_fmt = NULL;
+
+/* Starting line number on each page (-v). */
+static intmax_t starting_line_number = 1;
+
+/* Line number increment (-i). */
+static intmax_t page_incr = 1;
+
+/* If true, reset line number at start of each page (-p). */
+static bool reset_numbers = true;
+
+/* Number of blank lines to consider to be one line for numbering (-l). */
+static intmax_t blank_join = 1;
+
+/* Width of line numbers (-w). */
+static int lineno_width = 6;
+
+/* Line number format (-n). */
+static char const *lineno_format = FORMAT_RIGHT_NOLZ;
+
+/* Current print line number. */
+static intmax_t line_no;
+
+/* True if we have ever read standard input. */
+static bool have_read_stdin;
+
+static struct option const longopts[] =
+{
+ {"header-numbering", required_argument, NULL, 'h'},
+ {"body-numbering", required_argument, NULL, 'b'},
+ {"footer-numbering", required_argument, NULL, 'f'},
+ {"starting-line-number", required_argument, NULL, 'v'},
+ {"page-increment", required_argument, NULL, 'i'},
+ {"no-renumber", no_argument, NULL, 'p'},
+ {"join-blank-lines", required_argument, NULL, 'l'},
+ {"number-separator", required_argument, NULL, 's'},
+ {"number-width", required_argument, NULL, 'w'},
+ {"number-format", required_argument, NULL, 'n'},
+ {"section-delimiter", required_argument, NULL, 'd'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+/* Print a usage message and quit. */
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [FILE]...\n\
+"),
+ program_name);
+ fputs (_("\
+Write each FILE to standard output, with line numbers added.\n\
+With no FILE, or when FILE is -, read standard input.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -b, --body-numbering=STYLE use STYLE for numbering body lines\n\
+ -d, --section-delimiter=CC use CC for separating logical pages\n\
+ -f, --footer-numbering=STYLE use STYLE for numbering footer lines\n\
+"), stdout);
+ fputs (_("\
+ -h, --header-numbering=STYLE use STYLE for numbering header lines\n\
+ -i, --page-increment=NUMBER line number increment at each line\n\
+ -l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as one\n\
+ -n, --number-format=FORMAT insert line numbers according to FORMAT\n\
+ -p, --no-renumber do not reset line numbers at logical pages\n\
+ -s, --number-separator=STRING add STRING after (possible) line number\n\
+"), stdout);
+ fputs (_("\
+ -v, --first-page=NUMBER first line number on each logical page\n\
+ -w, --number-width=NUMBER use NUMBER columns for line numbers\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are\n\
+two delimiter characters for separating logical pages, a missing\n\
+second character implies :. Type \\\\ for \\. STYLE is one of:\n\
+"), stdout);
+ fputs (_("\
+\n\
+ a number all lines\n\
+ t number only nonempty lines\n\
+ n number no lines\n\
+ pBRE number only lines that contain a match for the basic regular\n\
+ expression, BRE\n\
+\n\
+FORMAT is one of:\n\
+\n\
+ ln left justified, no leading zeros\n\
+ rn right justified, no leading zeros\n\
+ rz right justified, leading zeros\n\
+\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Set the command line flag TYPEP and possibly the regex pointer REGEXP,
+ according to `optarg'. */
+
+static bool
+build_type_arg (char const **typep,
+ struct re_pattern_buffer *regexp, char *fastmap)
+{
+ char const *errmsg;
+ bool rval = true;
+
+ switch (*optarg)
+ {
+ case 'a':
+ case 't':
+ case 'n':
+ *typep = optarg;
+ break;
+ case 'p':
+ *typep = optarg++;
+ regexp->buffer = NULL;
+ regexp->allocated = 0;
+ regexp->fastmap = fastmap;
+ regexp->translate = NULL;
+ re_syntax_options =
+ RE_SYNTAX_POSIX_BASIC & ~RE_CONTEXT_INVALID_DUP & ~RE_NO_EMPTY_RANGES;
+ errmsg = re_compile_pattern (optarg, strlen (optarg), regexp);
+ if (errmsg)
+ error (EXIT_FAILURE, 0, "%s", errmsg);
+ break;
+ default:
+ rval = false;
+ break;
+ }
+ return rval;
+}
+
+/* Print the line number and separator; increment the line number. */
+
+static void
+print_lineno (void)
+{
+ intmax_t next_line_no;
+
+ printf (lineno_format, lineno_width, line_no, separator_str);
+
+ next_line_no = line_no + page_incr;
+ if (next_line_no < line_no)
+ error (EXIT_FAILURE, 0, _("line number overflow"));
+ line_no = next_line_no;
+}
+
+/* Switch to a header section. */
+
+static void
+proc_header (void)
+{
+ current_type = header_type;
+ current_regex = &header_regex;
+ if (reset_numbers)
+ line_no = starting_line_number;
+ putchar ('\n');
+}
+
+/* Switch to a body section. */
+
+static void
+proc_body (void)
+{
+ current_type = body_type;
+ current_regex = &body_regex;
+ putchar ('\n');
+}
+
+/* Switch to a footer section. */
+
+static void
+proc_footer (void)
+{
+ current_type = footer_type;
+ current_regex = &footer_regex;
+ putchar ('\n');
+}
+
+/* Process a regular text line in `line_buf'. */
+
+static void
+proc_text (void)
+{
+ static intmax_t blank_lines = 0; /* Consecutive blank lines so far. */
+
+ switch (*current_type)
+ {
+ case 'a':
+ if (blank_join > 1)
+ {
+ if (1 < line_buf.length || ++blank_lines == blank_join)
+ {
+ print_lineno ();
+ blank_lines = 0;
+ }
+ else
+ fputs (print_no_line_fmt, stdout);
+ }
+ else
+ print_lineno ();
+ break;
+ case 't':
+ if (1 < line_buf.length)
+ print_lineno ();
+ else
+ fputs (print_no_line_fmt, stdout);
+ break;
+ case 'n':
+ fputs (print_no_line_fmt, stdout);
+ break;
+ case 'p':
+ switch (re_search (current_regex, line_buf.buffer, line_buf.length - 1,
+ 0, line_buf.length - 1, NULL))
+ {
+ case -2:
+ error (EXIT_FAILURE, errno, _("error in regular expression search"));
+
+ case -1:
+ fputs (print_no_line_fmt, stdout);
+ break;
+
+ default:
+ print_lineno ();
+ break;
+ }
+ }
+ fwrite (line_buf.buffer, sizeof (char), line_buf.length, stdout);
+}
+
+/* Return the type of line in `line_buf'. */
+
+static enum section
+check_section (void)
+{
+ size_t len = line_buf.length - 1;
+
+ if (len < 2 || memcmp (line_buf.buffer, section_del, 2))
+ return Text;
+ if (len == header_del_len
+ && !memcmp (line_buf.buffer, header_del, header_del_len))
+ return Header;
+ if (len == body_del_len
+ && !memcmp (line_buf.buffer, body_del, body_del_len))
+ return Body;
+ if (len == footer_del_len
+ && !memcmp (line_buf.buffer, footer_del, footer_del_len))
+ return Footer;
+ return Text;
+}
+
+/* Read and process the file pointed to by FP. */
+
+static void
+process_file (FILE *fp)
+{
+ while (readlinebuffer (&line_buf, fp))
+ {
+ switch (check_section ())
+ {
+ case Header:
+ proc_header ();
+ break;
+ case Body:
+ proc_body ();
+ break;
+ case Footer:
+ proc_footer ();
+ break;
+ case Text:
+ proc_text ();
+ break;
+ }
+ }
+}
+
+/* Process file FILE to standard output.
+ Return true if successful. */
+
+static bool
+nl_file (char const *file)
+{
+ FILE *stream;
+
+ if (STREQ (file, "-"))
+ {
+ have_read_stdin = true;
+ stream = stdin;
+ }
+ else
+ {
+ stream = fopen (file, "r");
+ if (stream == NULL)
+ {
+ error (0, errno, "%s", file);
+ return false;
+ }
+ }
+
+ process_file (stream);
+
+ if (ferror (stream))
+ {
+ error (0, errno, "%s", file);
+ return false;
+ }
+ if (STREQ (file, "-"))
+ clearerr (stream); /* Also clear EOF. */
+ else if (fclose (stream) == EOF)
+ {
+ error (0, errno, "%s", file);
+ return false;
+ }
+ return true;
+}
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ size_t len;
+ bool ok = true;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ have_read_stdin = false;
+
+ while ((c = getopt_long (argc, argv, "h:b:f:v:i:pl:s:w:n:d:", longopts,
+ NULL)) != -1)
+ {
+ switch (c)
+ {
+ case 'h':
+ if (! build_type_arg (&header_type, &header_regex, header_fastmap))
+ {
+ error (0, 0, _("invalid header numbering style: %s"),
+ quote (optarg));
+ ok = false;
+ }
+ break;
+ case 'b':
+ if (! build_type_arg (&body_type, &body_regex, body_fastmap))
+ {
+ error (0, 0, _("invalid body numbering style: %s"),
+ quote (optarg));
+ ok = false;
+ }
+ break;
+ case 'f':
+ if (! build_type_arg (&footer_type, &footer_regex, footer_fastmap))
+ {
+ error (0, 0, _("invalid footer numbering style: %s"),
+ quote (optarg));
+ ok = false;
+ }
+ break;
+ case 'v':
+ if (xstrtoimax (optarg, NULL, 10, &starting_line_number, "")
+ != LONGINT_OK)
+ {
+ error (0, 0, _("invalid starting line number: %s"),
+ quote (optarg));
+ ok = false;
+ }
+ break;
+ case 'i':
+ if (! (xstrtoimax (optarg, NULL, 10, &page_incr, "") == LONGINT_OK
+ && 0 < page_incr))
+ {
+ error (0, 0, _("invalid line number increment: %s"),
+ quote (optarg));
+ ok = false;
+ }
+ break;
+ case 'p':
+ reset_numbers = false;
+ break;
+ case 'l':
+ if (! (xstrtoimax (optarg, NULL, 10, &blank_join, "") == LONGINT_OK
+ && 0 < blank_join))
+ {
+ error (0, 0, _("invalid number of blank lines: %s"),
+ quote (optarg));
+ ok = false;
+ }
+ break;
+ case 's':
+ separator_str = optarg;
+ break;
+ case 'w':
+ {
+ long int tmp_long;
+ if (xstrtol (optarg, NULL, 10, &tmp_long, "") != LONGINT_OK
+ || tmp_long <= 0 || tmp_long > INT_MAX)
+ {
+ error (0, 0, _("invalid line number field width: %s"),
+ quote (optarg));
+ ok = false;
+ }
+ else
+ {
+ lineno_width = tmp_long;
+ }
+ }
+ break;
+ case 'n':
+ if (STREQ (optarg, "ln"))
+ lineno_format = FORMAT_LEFT;
+ else if (STREQ (optarg, "rn"))
+ lineno_format = FORMAT_RIGHT_NOLZ;
+ else if (STREQ (optarg, "rz"))
+ lineno_format = FORMAT_RIGHT_LZ;
+ else
+ {
+ error (0, 0, _("invalid line numbering format: %s"),
+ quote (optarg));
+ ok = false;
+ }
+ break;
+ case 'd':
+ section_del = optarg;
+ break;
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ ok = false;
+ break;
+ }
+ }
+
+ if (!ok)
+ usage (EXIT_FAILURE);
+
+ /* Initialize the section delimiters. */
+ len = strlen (section_del);
+
+ header_del_len = len * 3;
+ header_del = xmalloc (header_del_len + 1);
+ strcat (strcat (strcpy (header_del, section_del), section_del), section_del);
+
+ body_del_len = len * 2;
+ body_del = xmalloc (body_del_len + 1);
+ strcat (strcpy (body_del, section_del), section_del);
+
+ footer_del_len = len;
+ footer_del = xmalloc (footer_del_len + 1);
+ strcpy (footer_del, section_del);
+
+ /* Initialize the input buffer. */
+ initbuffer (&line_buf);
+
+ /* Initialize the printf format for unnumbered lines. */
+ len = strlen (separator_str);
+ print_no_line_fmt = xmalloc (lineno_width + len + 1);
+ memset (print_no_line_fmt, ' ', lineno_width + len);
+ print_no_line_fmt[lineno_width + len] = '\0';
+
+ line_no = starting_line_number;
+ current_type = body_type;
+ current_regex = &body_regex;
+
+ /* Main processing. */
+
+ if (optind == argc)
+ ok = nl_file ("-");
+ else
+ for (; optind < argc; optind++)
+ ok &= nl_file (argv[optind]);
+
+ if (have_read_stdin && fclose (stdin) == EOF)
+ error (EXIT_FAILURE, errno, "-");
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/nohup.c b/src/nohup.c
new file mode 100644
index 0000000..1f8e62b
--- /dev/null
+++ b/src/nohup.c
@@ -0,0 +1,216 @@
+/* nohup -- run a command immune to hangups, with output to a non-tty
+ Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering */
+
+#include <config.h>
+#include <getopt.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <signal.h>
+
+#include "system.h"
+
+#include "cloexec.h"
+#include "error.h"
+#include "filenamecat.h"
+#include "fd-reopen.h"
+#include "long-options.h"
+#include "quote.h"
+#include "unistd--.h"
+
+#define PROGRAM_NAME "nohup"
+
+#define AUTHORS "Jim Meyering"
+
+/* Exit statuses. */
+enum
+ {
+ /* `nohup' itself failed. */
+ NOHUP_FAILURE = 127
+ };
+
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s COMMAND [ARG]...\n\
+ or: %s OPTION\n\
+"),
+ program_name, program_name);
+
+ fputs (_("\
+Run COMMAND, ignoring hangup signals.\n\
+\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (USAGE_BUILTIN_WARNING, PROGRAM_NAME);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ int out_fd = STDOUT_FILENO;
+ int saved_stderr_fd = STDERR_FILENO;
+ bool ignoring_input;
+ bool redirecting_stdout;
+ bool stdout_is_closed;
+ bool redirecting_stderr;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ initialize_exit_failure (NOHUP_FAILURE);
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "+", NULL, NULL) != -1)
+ usage (NOHUP_FAILURE);
+
+ if (argc <= optind)
+ {
+ error (0, 0, _("missing operand"));
+ usage (NOHUP_FAILURE);
+ }
+
+ ignoring_input = isatty (STDIN_FILENO);
+ redirecting_stdout = isatty (STDOUT_FILENO);
+ stdout_is_closed = (!redirecting_stdout && errno == EBADF);
+ redirecting_stderr = isatty (STDERR_FILENO);
+
+ /* If standard input is a tty, replace it with /dev/null if possible.
+ Note that it is deliberately opened for *writing*,
+ to ensure any read evokes an error. */
+ if (ignoring_input)
+ {
+ fd_reopen (STDIN_FILENO, "/dev/null", O_WRONLY, 0);
+ if (!redirecting_stdout && !redirecting_stderr)
+ error (0, 0, _("ignoring input"));
+ }
+
+ /* If standard output is a tty, redirect it (appending) to a file.
+ First try nohup.out, then $HOME/nohup.out. If standard error is
+ a tty and standard output is closed, open nohup.out or
+ $HOME/nohup.out without redirecting anything. */
+ if (redirecting_stdout || (redirecting_stderr && stdout_is_closed))
+ {
+ char *in_home = NULL;
+ char const *file = "nohup.out";
+ int flags = O_CREAT | O_WRONLY | O_APPEND;
+ mode_t mode = S_IRUSR | S_IWUSR;
+ mode_t umask_value = umask (~mode);
+ out_fd = (redirecting_stdout
+ ? fd_reopen (STDOUT_FILENO, file, flags, mode)
+ : open (file, flags, mode));
+
+ if (out_fd < 0)
+ {
+ int saved_errno = errno;
+ char const *home = getenv ("HOME");
+ if (home)
+ {
+ in_home = file_name_concat (home, file, NULL);
+ out_fd = (redirecting_stdout
+ ? fd_reopen (STDOUT_FILENO, in_home, flags, mode)
+ : open (in_home, flags, mode));
+ }
+ if (out_fd < 0)
+ {
+ int saved_errno2 = errno;
+ error (0, saved_errno, _("failed to open %s"), quote (file));
+ if (in_home)
+ error (0, saved_errno2, _("failed to open %s"),
+ quote (in_home));
+ exit (NOHUP_FAILURE);
+ }
+ file = in_home;
+ }
+
+ umask (umask_value);
+ error (0, 0,
+ _(ignoring_input
+ ? "ignoring input and appending output to %s"
+ : "appending output to %s"),
+ quote (file));
+ free (in_home);
+ }
+
+ /* If standard error is a tty, redirect it. */
+ if (redirecting_stderr)
+ {
+ /* Save a copy of stderr before redirecting, so we can use the original
+ if execve fails. It's no big deal if this dup fails. It might
+ not change anything, and at worst, it'll lead to suppression of
+ the post-failed-execve diagnostic. */
+ saved_stderr_fd = dup (STDERR_FILENO);
+
+ if (0 <= saved_stderr_fd
+ && set_cloexec_flag (saved_stderr_fd, true) != 0)
+ error (NOHUP_FAILURE, errno,
+ _("failed to set the copy of stderr to close on exec"));
+
+ if (!redirecting_stdout)
+ error (0, 0,
+ _(ignoring_input
+ ? "ignoring input and redirecting stderr to stdout"
+ : "redirecting stderr to stdout"));
+
+ if (dup2 (out_fd, STDERR_FILENO) < 0)
+ error (NOHUP_FAILURE, errno, _("failed to redirect standard error"));
+
+ if (stdout_is_closed)
+ close (out_fd);
+ }
+
+ signal (SIGHUP, SIG_IGN);
+
+ {
+ int exit_status;
+ int saved_errno;
+ char **cmd = argv + optind;
+
+ execvp (*cmd, cmd);
+ exit_status = (errno == ENOENT ? EXIT_ENOENT : EXIT_CANNOT_INVOKE);
+ saved_errno = errno;
+
+ /* The execve failed. Output a diagnostic to stderr only if:
+ - stderr was initially redirected to a non-tty, or
+ - stderr was initially directed to a tty, and we
+ can dup2 it to point back to that same tty.
+ In other words, output the diagnostic if possible, but only if
+ it will go to the original stderr. */
+ if (dup2 (saved_stderr_fd, STDERR_FILENO) == STDERR_FILENO)
+ error (0, saved_errno, _("cannot run command %s"), quote (*cmd));
+
+ exit (exit_status);
+ }
+}
diff --git a/src/od.c b/src/od.c
new file mode 100644
index 0000000..706a469
--- /dev/null
+++ b/src/od.c
@@ -0,0 +1,1937 @@
+/* od -- dump files in octal and other formats
+ Copyright (C) 92, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <assert.h>
+#include <getopt.h>
+#include <sys/types.h>
+#include "system.h"
+#include "error.h"
+#include "quote.h"
+#include "xstrtol.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "od"
+
+#define AUTHORS "Jim Meyering"
+
+#include <float.h>
+
+#ifdef HAVE_LONG_DOUBLE
+typedef long double LONG_DOUBLE;
+#else
+typedef double LONG_DOUBLE;
+#endif
+
+/* The default number of input bytes per output line. */
+#define DEFAULT_BYTES_PER_BLOCK 16
+
+/* The number of decimal digits of precision in a float. */
+#ifndef FLT_DIG
+# define FLT_DIG 7
+#endif
+
+/* The number of decimal digits of precision in a double. */
+#ifndef DBL_DIG
+# define DBL_DIG 15
+#endif
+
+/* The number of decimal digits of precision in a long double. */
+#ifndef LDBL_DIG
+# define LDBL_DIG DBL_DIG
+#endif
+
+#if HAVE_UNSIGNED_LONG_LONG_INT
+typedef unsigned long long int unsigned_long_long_int;
+#else
+/* This is just a place-holder to avoid a few `#if' directives.
+ In this case, the type isn't actually used. */
+typedef unsigned long int unsigned_long_long_int;
+#endif
+
+enum size_spec
+ {
+ NO_SIZE,
+ CHAR,
+ SHORT,
+ INT,
+ LONG,
+ LONG_LONG,
+ /* FIXME: add INTMAX support, too */
+ FLOAT_SINGLE,
+ FLOAT_DOUBLE,
+ FLOAT_LONG_DOUBLE,
+ N_SIZE_SPECS
+ };
+
+enum output_format
+ {
+ SIGNED_DECIMAL,
+ UNSIGNED_DECIMAL,
+ OCTAL,
+ HEXADECIMAL,
+ FLOATING_POINT,
+ NAMED_CHARACTER,
+ CHARACTER
+ };
+
+/* The maximum number of bytes needed for a format string,
+ including the trailing null. */
+enum
+ {
+ FMT_BYTES_ALLOCATED =
+ MAX ((sizeof " %0" - 1 + INT_STRLEN_BOUND (int)
+ + MAX (sizeof "ld",
+ MAX (sizeof PRIdMAX,
+ MAX (sizeof PRIoMAX,
+ MAX (sizeof PRIuMAX,
+ sizeof PRIxMAX))))),
+ sizeof " %.Le" + 2 * INT_STRLEN_BOUND (int))
+ };
+
+/* Each output format specification (from `-t spec' or from
+ old-style options) is represented by one of these structures. */
+struct tspec
+ {
+ enum output_format fmt;
+ enum size_spec size;
+ void (*print_function) (size_t, void const *, char const *);
+ char fmt_string[FMT_BYTES_ALLOCATED];
+ bool hexl_mode_trailer;
+ int field_width;
+ };
+
+/* The name this program was run with. */
+char *program_name;
+
+/* Convert the number of 8-bit bytes of a binary representation to
+ the number of characters (digits + sign if the type is signed)
+ required to represent the same quantity in the specified base/type.
+ For example, a 32-bit (4-byte) quantity may require a field width
+ as wide as the following for these types:
+ 11 unsigned octal
+ 11 signed decimal
+ 10 unsigned decimal
+ 8 unsigned hexadecimal */
+
+static unsigned int const bytes_to_oct_digits[] =
+{0, 3, 6, 8, 11, 14, 16, 19, 22, 25, 27, 30, 32, 35, 38, 41, 43};
+
+static unsigned int const bytes_to_signed_dec_digits[] =
+{1, 4, 6, 8, 11, 13, 16, 18, 20, 23, 25, 28, 30, 33, 35, 37, 40};
+
+static unsigned int const bytes_to_unsigned_dec_digits[] =
+{0, 3, 5, 8, 10, 13, 15, 17, 20, 22, 25, 27, 29, 32, 34, 37, 39};
+
+static unsigned int const bytes_to_hex_digits[] =
+{0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32};
+
+#define MAX_INTEGRAL_TYPE_SIZE sizeof (unsigned_long_long_int)
+
+/* It'll be a while before we see integral types wider than 16 bytes,
+ but if/when it happens, this check will catch it. Without this check,
+ a wider type would provoke a buffer overrun. */
+verify (MAX_INTEGRAL_TYPE_SIZE
+ < sizeof bytes_to_hex_digits / sizeof *bytes_to_hex_digits);
+
+/* Make sure the other arrays have the same length. */
+verify (sizeof bytes_to_oct_digits == sizeof bytes_to_signed_dec_digits);
+verify (sizeof bytes_to_oct_digits == sizeof bytes_to_unsigned_dec_digits);
+verify (sizeof bytes_to_oct_digits == sizeof bytes_to_hex_digits);
+
+/* Convert enum size_spec to the size of the named type. */
+static const int width_bytes[] =
+{
+ -1,
+ sizeof (char),
+ sizeof (short int),
+ sizeof (int),
+ sizeof (long int),
+ sizeof (unsigned_long_long_int),
+ sizeof (float),
+ sizeof (double),
+ sizeof (LONG_DOUBLE)
+};
+
+/* Ensure that for each member of `enum size_spec' there is an
+ initializer in the width_bytes array. */
+verify (sizeof width_bytes / sizeof width_bytes[0] == N_SIZE_SPECS);
+
+/* Names for some non-printing characters. */
+static const char *const charname[33] =
+{
+ "nul", "soh", "stx", "etx", "eot", "enq", "ack", "bel",
+ "bs", "ht", "nl", "vt", "ff", "cr", "so", "si",
+ "dle", "dc1", "dc2", "dc3", "dc4", "nak", "syn", "etb",
+ "can", "em", "sub", "esc", "fs", "gs", "rs", "us",
+ "sp"
+};
+
+/* Address base (8, 10 or 16). */
+static int address_base;
+
+/* The number of octal digits required to represent the largest
+ address value. */
+#define MAX_ADDRESS_LENGTH \
+ ((sizeof (uintmax_t) * CHAR_BIT + CHAR_BIT - 1) / 3)
+
+/* Width of a normal address. */
+static int address_pad_len;
+
+static size_t string_min;
+static bool flag_dump_strings;
+
+/* True if we should recognize the older non-option arguments
+ that specified at most one file and optional arguments specifying
+ offset and pseudo-start address. */
+static bool traditional;
+
+/* True if an old-style `pseudo-address' was specified. */
+static bool flag_pseudo_start;
+
+/* The difference between the old-style pseudo starting address and
+ the number of bytes to skip. */
+static uintmax_t pseudo_offset;
+
+/* Function that accepts an address and an optional following char,
+ and prints the address and char to stdout. */
+static void (*format_address) (uintmax_t, char);
+
+/* The number of input bytes to skip before formatting and writing. */
+static uintmax_t n_bytes_to_skip = 0;
+
+/* When false, MAX_BYTES_TO_FORMAT and END_OFFSET are ignored, and all
+ input is formatted. */
+static bool limit_bytes_to_format = false;
+
+/* The maximum number of bytes that will be formatted. */
+static uintmax_t max_bytes_to_format;
+
+/* The offset of the first byte after the last byte to be formatted. */
+static uintmax_t end_offset;
+
+/* When true and two or more consecutive blocks are equal, format
+ only the first block and output an asterisk alone on the following
+ line to indicate that identical blocks have been elided. */
+static bool abbreviate_duplicate_blocks = true;
+
+/* An array of specs describing how to format each input block. */
+static struct tspec *spec;
+
+/* The number of format specs. */
+static size_t n_specs;
+
+/* The allocated length of SPEC. */
+static size_t n_specs_allocated;
+
+/* The number of input bytes formatted per output line. It must be
+ a multiple of the least common multiple of the sizes associated with
+ the specified output types. It should be as large as possible, but
+ no larger than 16 -- unless specified with the -w option. */
+static size_t bytes_per_block;
+
+/* Human-readable representation of *file_list (for error messages).
+ It differs from file_list[-1] only when file_list[-1] is "-". */
+static char const *input_filename;
+
+/* A NULL-terminated list of the file-arguments from the command line. */
+static char const *const *file_list;
+
+/* Initializer for file_list if no file-arguments
+ were specified on the command line. */
+static char const *const default_file_list[] = {"-", NULL};
+
+/* The input stream associated with the current file. */
+static FILE *in_stream;
+
+/* If true, at least one of the files we read was standard input. */
+static bool have_read_stdin;
+
+/* Map the size in bytes to a type identifier. */
+static enum size_spec integral_type_size[MAX_INTEGRAL_TYPE_SIZE + 1];
+
+#define MAX_FP_TYPE_SIZE sizeof (LONG_DOUBLE)
+static enum size_spec fp_type_size[MAX_FP_TYPE_SIZE + 1];
+
+static char const short_options[] = "A:aBbcDdeFfHhIij:LlN:OoS:st:vw::Xx";
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ TRADITIONAL_OPTION = CHAR_MAX + 1
+};
+
+static struct option const long_options[] =
+{
+ {"skip-bytes", required_argument, NULL, 'j'},
+ {"address-radix", required_argument, NULL, 'A'},
+ {"read-bytes", required_argument, NULL, 'N'},
+ {"format", required_argument, NULL, 't'},
+ {"output-duplicates", no_argument, NULL, 'v'},
+ {"strings", optional_argument, NULL, 'S'},
+ {"traditional", no_argument, NULL, TRADITIONAL_OPTION},
+ {"width", optional_argument, NULL, 'w'},
+
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [FILE]...\n\
+ or: %s [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]\n\
+ or: %s --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.][b]]\n\
+"),
+ program_name, program_name, program_name);
+ fputs (_("\n\
+Write an unambiguous representation, octal bytes by default,\n\
+of FILE to standard output. With more than one FILE argument,\n\
+concatenate them in the listed order to form the input.\n\
+With no FILE, or when FILE is -, read standard input.\n\
+\n\
+"), stdout);
+ fputs (_("\
+All arguments to long options are mandatory for short options.\n\
+"), stdout);
+ fputs (_("\
+ -A, --address-radix=RADIX decide how file offsets are printed\n\
+ -j, --skip-bytes=BYTES skip BYTES input bytes first\n\
+"), stdout);
+ fputs (_("\
+ -N, --read-bytes=BYTES limit dump to BYTES input bytes\n\
+ -S, --strings[=BYTES] output strings of at least BYTES graphic chars\n\
+ -t, --format=TYPE select output format or formats\n\
+ -v, --output-duplicates do not use * to mark line suppression\n\
+ -w, --width[=BYTES] output BYTES bytes per output line\n\
+ --traditional accept arguments in traditional form\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+Traditional format specifications may be intermixed; they accumulate:\n\
+ -a same as -t a, select named characters, ignoring high-order bit\n\
+ -b same as -t o1, select octal bytes\n\
+ -c same as -t c, select ASCII characters or backslash escapes\n\
+ -d same as -t u2, select unsigned decimal 2-byte units\n\
+"), stdout);
+ fputs (_("\
+ -f same as -t fF, select floats\n\
+ -i same as -t dI, select decimal ints\n\
+ -l same as -t dL, select decimal longs\n\
+ -o same as -t o2, select octal 2-byte units\n\
+ -s same as -t d2, select decimal 2-byte units\n\
+ -x same as -t x2, select hexadecimal 2-byte units\n\
+"), stdout);
+ fputs (_("\
+\n\
+If first and second call formats both apply, the second format is assumed\n\
+if the last operand begins with + or (if there are 2 operands) a digit.\n\
+An OFFSET operand means -j OFFSET. LABEL is the pseudo-address\n\
+at first byte printed, incremented when dump is progressing.\n\
+For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal;\n\
+suffixes may be . for octal and b for multiply by 512.\n\
+"), stdout);
+ fputs (_("\
+\n\
+TYPE is made up of one or more of these specifications:\n\
+\n\
+ a named character, ignoring high-order bit\n\
+ c ASCII character or backslash escape\n\
+"), stdout);
+ fputs (_("\
+ d[SIZE] signed decimal, SIZE bytes per integer\n\
+ f[SIZE] floating point, SIZE bytes per integer\n\
+ o[SIZE] octal, SIZE bytes per integer\n\
+ u[SIZE] unsigned decimal, SIZE bytes per integer\n\
+ x[SIZE] hexadecimal, SIZE bytes per integer\n\
+"), stdout);
+ fputs (_("\
+\n\
+SIZE is a number. For TYPE in doux, SIZE may also be C for\n\
+sizeof(char), S for sizeof(short), I for sizeof(int) or L for\n\
+sizeof(long). If TYPE is f, SIZE may also be F for sizeof(float), D\n\
+for sizeof(double) or L for sizeof(long double).\n\
+"), stdout);
+ fputs (_("\
+\n\
+RADIX is d for decimal, o for octal, x for hexadecimal or n for none.\n\
+BYTES is hexadecimal with 0x or 0X prefix, it is multiplied by 512\n\
+with b suffix, by 1024 with k and by 1048576 with m. Adding a z suffix to\n\
+any type adds a display of printable characters to the end of each line\n\
+of output. \
+"), stdout);
+ fputs (_("\
+--string without a number implies 3. --width without a number\n\
+implies 32. By default, od uses -A o -t d2 -w16.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Define the print functions. */
+
+static void
+print_s_char (size_t n_bytes, void const *block, char const *fmt_string)
+{
+ signed char const *p = block;
+ size_t i;
+ for (i = n_bytes / sizeof *p; i != 0; i--)
+ printf (fmt_string, *p++);
+}
+
+static void
+print_char (size_t n_bytes, void const *block, char const *fmt_string)
+{
+ unsigned char const *p = block;
+ size_t i;
+ for (i = n_bytes / sizeof *p; i != 0; i--)
+ printf (fmt_string, *p++);
+}
+
+static void
+print_s_short (size_t n_bytes, void const *block, char const *fmt_string)
+{
+ short int const *p = block;
+ size_t i;
+ for (i = n_bytes / sizeof *p; i != 0; i--)
+ printf (fmt_string, *p++);
+}
+
+static void
+print_short (size_t n_bytes, void const *block, char const *fmt_string)
+{
+ unsigned short int const *p = block;
+ size_t i;
+ for (i = n_bytes / sizeof *p; i != 0; i--)
+ printf (fmt_string, *p++);
+}
+
+static void
+print_int (size_t n_bytes, void const *block, char const *fmt_string)
+{
+ unsigned int const *p = block;
+ size_t i;
+ for (i = n_bytes / sizeof *p; i != 0; i--)
+ printf (fmt_string, *p++);
+}
+
+static void
+print_long (size_t n_bytes, void const *block, char const *fmt_string)
+{
+ unsigned long int const *p = block;
+ size_t i;
+ for (i = n_bytes / sizeof *p; i != 0; i--)
+ printf (fmt_string, *p++);
+}
+
+static void
+print_long_long (size_t n_bytes, void const *block, char const *fmt_string)
+{
+ unsigned_long_long_int const *p = block;
+ size_t i;
+ for (i = n_bytes / sizeof *p; i != 0; i--)
+ printf (fmt_string, *p++);
+}
+
+static void
+print_float (size_t n_bytes, void const *block, char const *fmt_string)
+{
+ float const *p = block;
+ size_t i;
+ for (i = n_bytes / sizeof *p; i != 0; i--)
+ printf (fmt_string, *p++);
+}
+
+static void
+print_double (size_t n_bytes, void const *block, char const *fmt_string)
+{
+ double const *p = block;
+ size_t i;
+ for (i = n_bytes / sizeof *p; i != 0; i--)
+ printf (fmt_string, *p++);
+}
+
+#ifdef HAVE_LONG_DOUBLE
+static void
+print_long_double (size_t n_bytes, void const *block, char const *fmt_string)
+{
+ long double const *p = block;
+ size_t i;
+ for (i = n_bytes / sizeof *p; i != 0; i--)
+ printf (fmt_string, *p++);
+}
+#endif
+
+static void
+dump_hexl_mode_trailer (size_t n_bytes, const char *block)
+{
+ size_t i;
+ fputs (" >", stdout);
+ for (i = n_bytes; i > 0; i--)
+ {
+ unsigned char c = *block++;
+ unsigned char c2 = (isprint (c) ? c : '.');
+ putchar (c2);
+ }
+ putchar ('<');
+}
+
+static void
+print_named_ascii (size_t n_bytes, void const *block,
+ const char *unused_fmt_string ATTRIBUTE_UNUSED)
+{
+ unsigned char const *p = block;
+ size_t i;
+ for (i = n_bytes; i > 0; i--)
+ {
+ int masked_c = *p++ & 0x7f;
+ const char *s;
+ char buf[5];
+
+ if (masked_c == 127)
+ s = "del";
+ else if (masked_c <= 040)
+ s = charname[masked_c];
+ else
+ {
+ sprintf (buf, " %c", masked_c);
+ s = buf;
+ }
+
+ printf (" %3s", s);
+ }
+}
+
+static void
+print_ascii (size_t n_bytes, void const *block,
+ const char *unused_fmt_string ATTRIBUTE_UNUSED)
+{
+ unsigned char const *p = block;
+ size_t i;
+ for (i = n_bytes; i > 0; i--)
+ {
+ unsigned char c = *p++;
+ const char *s;
+ char buf[5];
+
+ switch (c)
+ {
+ case '\0':
+ s = " \\0";
+ break;
+
+ case '\a':
+ s = " \\a";
+ break;
+
+ case '\b':
+ s = " \\b";
+ break;
+
+ case '\f':
+ s = " \\f";
+ break;
+
+ case '\n':
+ s = " \\n";
+ break;
+
+ case '\r':
+ s = " \\r";
+ break;
+
+ case '\t':
+ s = " \\t";
+ break;
+
+ case '\v':
+ s = " \\v";
+ break;
+
+ default:
+ sprintf (buf, (isprint (c) ? " %c" : "%03o"), c);
+ s = buf;
+ }
+
+ printf (" %3s", s);
+ }
+}
+
+/* Convert a null-terminated (possibly zero-length) string S to an
+ unsigned long integer value. If S points to a non-digit set *P to S,
+ *VAL to 0, and return true. Otherwise, accumulate the integer value of
+ the string of digits. If the string of digits represents a value
+ larger than ULONG_MAX, don't modify *VAL or *P and return false.
+ Otherwise, advance *P to the first non-digit after S, set *VAL to
+ the result of the conversion and return true. */
+
+static bool
+simple_strtoul (const char *s, const char **p, unsigned long int *val)
+{
+ unsigned long int sum;
+
+ sum = 0;
+ while (ISDIGIT (*s))
+ {
+ int c = *s++ - '0';
+ if (sum > (ULONG_MAX - c) / 10)
+ return false;
+ sum = sum * 10 + c;
+ }
+ *p = s;
+ *val = sum;
+ return true;
+}
+
+/* If S points to a single valid modern od format string, put
+ a description of that format in *TSPEC, make *NEXT point at the
+ character following the just-decoded format (if *NEXT is non-NULL),
+ and return true. If S is not valid, don't modify *NEXT or *TSPEC,
+ give a diagnostic, and return false. For example, if S were
+ "d4afL" *NEXT would be set to "afL" and *TSPEC would be
+ {
+ fmt = SIGNED_DECIMAL;
+ size = INT or LONG; (whichever integral_type_size[4] resolves to)
+ print_function = print_int; (assuming size == INT)
+ fmt_string = "%011d%c";
+ }
+ S_ORIG is solely for reporting errors. It should be the full format
+ string argument.
+ */
+
+static bool
+decode_one_format (const char *s_orig, const char *s, const char **next,
+ struct tspec *tspec)
+{
+ enum size_spec size_spec;
+ unsigned long int size;
+ enum output_format fmt;
+ const char *pre_fmt_string;
+ void (*print_function) (size_t, void const *, char const *);
+ const char *p;
+ char c;
+ int field_width;
+ int precision;
+
+ assert (tspec != NULL);
+
+ switch (*s)
+ {
+ case 'd':
+ case 'o':
+ case 'u':
+ case 'x':
+ c = *s;
+ ++s;
+ switch (*s)
+ {
+ case 'C':
+ ++s;
+ size = sizeof (char);
+ break;
+
+ case 'S':
+ ++s;
+ size = sizeof (short int);
+ break;
+
+ case 'I':
+ ++s;
+ size = sizeof (int);
+ break;
+
+ case 'L':
+ ++s;
+ size = sizeof (long int);
+ break;
+
+ default:
+ if (! simple_strtoul (s, &p, &size))
+ {
+ /* The integer at P in S would overflow an unsigned long int.
+ A digit string that long is sufficiently odd looking
+ that the following diagnostic is sufficient. */
+ error (0, 0, _("invalid type string %s"), quote (s_orig));
+ return false;
+ }
+ if (p == s)
+ size = sizeof (int);
+ else
+ {
+ if (MAX_INTEGRAL_TYPE_SIZE < size
+ || integral_type_size[size] == NO_SIZE)
+ {
+ error (0, 0, _("invalid type string %s;\n\
+this system doesn't provide a %lu-byte integral type"), quote (s_orig), size);
+ return false;
+ }
+ s = p;
+ }
+ break;
+ }
+
+#define ISPEC_TO_FORMAT(Spec, Min_format, Long_format, Max_format) \
+ ((Spec) == LONG_LONG ? (Max_format) \
+ : ((Spec) == LONG ? (Long_format) \
+ : (Min_format))) \
+
+ size_spec = integral_type_size[size];
+
+ switch (c)
+ {
+ case 'd':
+ fmt = SIGNED_DECIMAL;
+ sprintf (tspec->fmt_string, " %%%d%s",
+ (field_width = bytes_to_signed_dec_digits[size]),
+ ISPEC_TO_FORMAT (size_spec, "d", "ld", PRIdMAX));
+ break;
+
+ case 'o':
+ fmt = OCTAL;
+ sprintf (tspec->fmt_string, " %%0%d%s",
+ (field_width = bytes_to_oct_digits[size]),
+ ISPEC_TO_FORMAT (size_spec, "o", "lo", PRIoMAX));
+ break;
+
+ case 'u':
+ fmt = UNSIGNED_DECIMAL;
+ sprintf (tspec->fmt_string, " %%%d%s",
+ (field_width = bytes_to_unsigned_dec_digits[size]),
+ ISPEC_TO_FORMAT (size_spec, "u", "lu", PRIuMAX));
+ break;
+
+ case 'x':
+ fmt = HEXADECIMAL;
+ sprintf (tspec->fmt_string, " %%0%d%s",
+ (field_width = bytes_to_hex_digits[size]),
+ ISPEC_TO_FORMAT (size_spec, "x", "lx", PRIxMAX));
+ break;
+
+ default:
+ abort ();
+ }
+
+ assert (strlen (tspec->fmt_string) < FMT_BYTES_ALLOCATED);
+
+ switch (size_spec)
+ {
+ case CHAR:
+ print_function = (fmt == SIGNED_DECIMAL
+ ? print_s_char
+ : print_char);
+ break;
+
+ case SHORT:
+ print_function = (fmt == SIGNED_DECIMAL
+ ? print_s_short
+ : print_short);
+ break;
+
+ case INT:
+ print_function = print_int;
+ break;
+
+ case LONG:
+ print_function = print_long;
+ break;
+
+ case LONG_LONG:
+ print_function = print_long_long;
+ break;
+
+ default:
+ abort ();
+ }
+ break;
+
+ case 'f':
+ fmt = FLOATING_POINT;
+ ++s;
+ switch (*s)
+ {
+ case 'F':
+ ++s;
+ size = sizeof (float);
+ break;
+
+ case 'D':
+ ++s;
+ size = sizeof (double);
+ break;
+
+ case 'L':
+ ++s;
+ size = sizeof (LONG_DOUBLE);
+ break;
+
+ default:
+ if (! simple_strtoul (s, &p, &size))
+ {
+ /* The integer at P in S would overflow an unsigned long int.
+ A digit string that long is sufficiently odd looking
+ that the following diagnostic is sufficient. */
+ error (0, 0, _("invalid type string %s"), quote (s_orig));
+ return false;
+ }
+ if (p == s)
+ size = sizeof (double);
+ else
+ {
+ if (size > MAX_FP_TYPE_SIZE
+ || fp_type_size[size] == NO_SIZE)
+ {
+ error (0, 0, _("invalid type string %s;\n\
+this system doesn't provide a %lu-byte floating point type"),
+ quote (s_orig), size);
+ return false;
+ }
+ s = p;
+ }
+ break;
+ }
+ size_spec = fp_type_size[size];
+
+ switch (size_spec)
+ {
+ case FLOAT_SINGLE:
+ print_function = print_float;
+ /* Don't use %#e; not all systems support it. */
+ pre_fmt_string = " %%%d.%de";
+ precision = FLT_DIG;
+ break;
+
+ case FLOAT_DOUBLE:
+ print_function = print_double;
+ pre_fmt_string = " %%%d.%de";
+ precision = DBL_DIG;
+ break;
+
+#ifdef HAVE_LONG_DOUBLE
+ case FLOAT_LONG_DOUBLE:
+ print_function = print_long_double;
+ pre_fmt_string = " %%%d.%dLe";
+ precision = LDBL_DIG;
+ break;
+#endif
+
+ default:
+ abort ();
+ }
+
+ field_width = precision + 8;
+ sprintf (tspec->fmt_string, pre_fmt_string, field_width, precision);
+ break;
+
+ case 'a':
+ ++s;
+ fmt = NAMED_CHARACTER;
+ size_spec = CHAR;
+ print_function = print_named_ascii;
+ field_width = 3;
+ break;
+
+ case 'c':
+ ++s;
+ fmt = CHARACTER;
+ size_spec = CHAR;
+ print_function = print_ascii;
+ field_width = 3;
+ break;
+
+ default:
+ error (0, 0, _("invalid character `%c' in type string %s"),
+ *s, quote (s_orig));
+ return false;
+ }
+
+ tspec->size = size_spec;
+ tspec->fmt = fmt;
+ tspec->print_function = print_function;
+
+ tspec->field_width = field_width;
+ tspec->hexl_mode_trailer = (*s == 'z');
+ if (tspec->hexl_mode_trailer)
+ s++;
+
+ if (next != NULL)
+ *next = s;
+
+ return true;
+}
+
+/* Given a list of one or more input filenames FILE_LIST, set the global
+ file pointer IN_STREAM and the global string INPUT_FILENAME to the
+ first one that can be successfully opened. Modify FILE_LIST to
+ reference the next filename in the list. A file name of "-" is
+ interpreted as standard input. If any file open fails, give an error
+ message and return false. */
+
+static bool
+open_next_file (void)
+{
+ bool ok = true;
+
+ do
+ {
+ input_filename = *file_list;
+ if (input_filename == NULL)
+ return ok;
+ ++file_list;
+
+ if (STREQ (input_filename, "-"))
+ {
+ input_filename = _("standard input");
+ in_stream = stdin;
+ have_read_stdin = true;
+ if (O_BINARY && ! isatty (STDIN_FILENO))
+ freopen (NULL, "rb", stdin);
+ }
+ else
+ {
+ in_stream = fopen (input_filename, (O_BINARY ? "rb" : "r"));
+ if (in_stream == NULL)
+ {
+ error (0, errno, "%s", input_filename);
+ ok = false;
+ }
+ }
+ }
+ while (in_stream == NULL);
+
+ if (limit_bytes_to_format & !flag_dump_strings)
+ setvbuf (in_stream, NULL, _IONBF, 0);
+
+ return ok;
+}
+
+/* Test whether there have been errors on in_stream, and close it if
+ it is not standard input. Return false if there has been an error
+ on in_stream or stdout; return true otherwise. This function will
+ report more than one error only if both a read and a write error
+ have occurred. IN_ERRNO, if nonzero, is the error number
+ corresponding to the most recent action for IN_STREAM. */
+
+static bool
+check_and_close (int in_errno)
+{
+ bool ok = true;
+
+ if (in_stream != NULL)
+ {
+ if (ferror (in_stream))
+ {
+ error (0, in_errno, _("%s: read error"), input_filename);
+ if (! STREQ (file_list[-1], "-"))
+ fclose (in_stream);
+ ok = false;
+ }
+ else if (! STREQ (file_list[-1], "-") && fclose (in_stream) != 0)
+ {
+ error (0, errno, "%s", input_filename);
+ ok = false;
+ }
+
+ in_stream = NULL;
+ }
+
+ if (ferror (stdout))
+ {
+ error (0, 0, _("write error"));
+ ok = false;
+ }
+
+ return ok;
+}
+
+/* Decode the modern od format string S. Append the decoded
+ representation to the global array SPEC, reallocating SPEC if
+ necessary. Return true if S is valid. */
+
+static bool
+decode_format_string (const char *s)
+{
+ const char *s_orig = s;
+ assert (s != NULL);
+
+ while (*s != '\0')
+ {
+ const char *next;
+
+ if (n_specs_allocated <= n_specs)
+ spec = X2NREALLOC (spec, &n_specs_allocated);
+
+ if (! decode_one_format (s_orig, s, &next, &spec[n_specs]))
+ return false;
+
+ assert (s != next);
+ s = next;
+ ++n_specs;
+ }
+
+ return true;
+}
+
+/* Given a list of one or more input filenames FILE_LIST, set the global
+ file pointer IN_STREAM to position N_SKIP in the concatenation of
+ those files. If any file operation fails or if there are fewer than
+ N_SKIP bytes in the combined input, give an error message and return
+ false. When possible, use seek rather than read operations to
+ advance IN_STREAM. */
+
+static bool
+skip (uintmax_t n_skip)
+{
+ bool ok = true;
+ int in_errno = 0;
+
+ if (n_skip == 0)
+ return true;
+
+ while (in_stream != NULL) /* EOF. */
+ {
+ struct stat file_stats;
+
+ /* First try seeking. For large offsets, this extra work is
+ worthwhile. If the offset is below some threshold it may be
+ more efficient to move the pointer by reading. There are two
+ issues when trying to seek:
+ - the file must be seekable.
+ - before seeking to the specified position, make sure
+ that the new position is in the current file.
+ Try to do that by getting file's size using fstat.
+ But that will work only for regular files. */
+
+ if (fstat (fileno (in_stream), &file_stats) == 0)
+ {
+ /* The st_size field is valid only for regular files
+ (and for symbolic links, which cannot occur here).
+ If the number of bytes left to skip is at least
+ as large as the size of the current file, we can
+ decrement n_skip and go on to the next file. */
+
+ if (S_ISREG (file_stats.st_mode) && 0 <= file_stats.st_size)
+ {
+ if ((uintmax_t) file_stats.st_size <= n_skip)
+ n_skip -= file_stats.st_size;
+ else
+ {
+ if (fseeko (in_stream, n_skip, SEEK_CUR) != 0)
+ {
+ in_errno = errno;
+ ok = false;
+ }
+ n_skip = 0;
+ }
+ }
+
+ /* If it's not a regular file with nonnegative size,
+ position the file pointer by reading. */
+
+ else
+ {
+ char buf[BUFSIZ];
+ size_t n_bytes_read, n_bytes_to_read = BUFSIZ;
+
+ while (0 < n_skip)
+ {
+ if (n_skip < n_bytes_to_read)
+ n_bytes_to_read = n_skip;
+ n_bytes_read = fread (buf, 1, n_bytes_to_read, in_stream);
+ n_skip -= n_bytes_read;
+ if (n_bytes_read != n_bytes_to_read)
+ {
+ in_errno = errno;
+ ok = false;
+ n_skip = 0;
+ break;
+ }
+ }
+ }
+
+ if (n_skip == 0)
+ break;
+ }
+
+ else /* cannot fstat() file */
+ {
+ error (0, errno, "%s", input_filename);
+ ok = false;
+ }
+
+ ok &= check_and_close (in_errno);
+
+ ok &= open_next_file ();
+ }
+
+ if (n_skip != 0)
+ error (EXIT_FAILURE, 0, _("cannot skip past end of combined input"));
+
+ return ok;
+}
+
+static void
+format_address_none (uintmax_t address ATTRIBUTE_UNUSED, char c ATTRIBUTE_UNUSED)
+{
+}
+
+static void
+format_address_std (uintmax_t address, char c)
+{
+ char buf[MAX_ADDRESS_LENGTH + 2];
+ char *p = buf + sizeof buf;
+ char const *pbound;
+
+ *--p = '\0';
+ *--p = c;
+ pbound = p - address_pad_len;
+
+ /* Use a special case of the code for each base. This is measurably
+ faster than generic code. */
+ switch (address_base)
+ {
+ case 8:
+ do
+ *--p = '0' + (address & 7);
+ while ((address >>= 3) != 0);
+ break;
+
+ case 10:
+ do
+ *--p = '0' + (address % 10);
+ while ((address /= 10) != 0);
+ break;
+
+ case 16:
+ do
+ *--p = "0123456789abcdef"[address & 15];
+ while ((address >>= 4) != 0);
+ break;
+ }
+
+ while (pbound < p)
+ *--p = '0';
+
+ fputs (p, stdout);
+}
+
+static void
+format_address_paren (uintmax_t address, char c)
+{
+ putchar ('(');
+ format_address_std (address, ')');
+ if (c)
+ putchar (c);
+}
+
+static void
+format_address_label (uintmax_t address, char c)
+{
+ format_address_std (address, ' ');
+ format_address_paren (address + pseudo_offset, c);
+}
+
+/* Write N_BYTES bytes from CURR_BLOCK to standard output once for each
+ of the N_SPEC format specs. CURRENT_OFFSET is the byte address of
+ CURR_BLOCK in the concatenation of input files, and it is printed
+ (optionally) only before the output line associated with the first
+ format spec. When duplicate blocks are being abbreviated, the output
+ for a sequence of identical input blocks is the output for the first
+ block followed by an asterisk alone on a line. It is valid to compare
+ the blocks PREV_BLOCK and CURR_BLOCK only when N_BYTES == BYTES_PER_BLOCK.
+ That condition may be false only for the last input block -- and then
+ only when it has not been padded to length BYTES_PER_BLOCK. */
+
+static void
+write_block (uintmax_t current_offset, size_t n_bytes,
+ const char *prev_block, const char *curr_block)
+{
+ static bool first = true;
+ static bool prev_pair_equal = false;
+
+#define EQUAL_BLOCKS(b1, b2) (memcmp (b1, b2, bytes_per_block) == 0)
+
+ if (abbreviate_duplicate_blocks
+ && !first && n_bytes == bytes_per_block
+ && EQUAL_BLOCKS (prev_block, curr_block))
+ {
+ if (prev_pair_equal)
+ {
+ /* The two preceding blocks were equal, and the current
+ block is the same as the last one, so print nothing. */
+ }
+ else
+ {
+ printf ("*\n");
+ prev_pair_equal = true;
+ }
+ }
+ else
+ {
+ size_t i;
+
+ prev_pair_equal = false;
+ for (i = 0; i < n_specs; i++)
+ {
+ if (i == 0)
+ format_address (current_offset, '\0');
+ else
+ printf ("%*s", address_pad_len, "");
+ (*spec[i].print_function) (n_bytes, curr_block, spec[i].fmt_string);
+ if (spec[i].hexl_mode_trailer)
+ {
+ /* space-pad out to full line width, then dump the trailer */
+ int datum_width = width_bytes[spec[i].size];
+ int blank_fields = (bytes_per_block - n_bytes) / datum_width;
+ int field_width = spec[i].field_width + 1;
+ printf ("%*s", blank_fields * field_width, "");
+ dump_hexl_mode_trailer (n_bytes, curr_block);
+ }
+ putchar ('\n');
+ }
+ }
+ first = false;
+}
+
+/* Read a single byte into *C from the concatenation of the input files
+ named in the global array FILE_LIST. On the first call to this
+ function, the global variable IN_STREAM is expected to be an open
+ stream associated with the input file INPUT_FILENAME. If IN_STREAM
+ is at end-of-file, close it and update the global variables IN_STREAM
+ and INPUT_FILENAME so they correspond to the next file in the list.
+ Then try to read a byte from the newly opened file. Repeat if
+ necessary until EOF is reached for the last file in FILE_LIST, then
+ set *C to EOF and return. Subsequent calls do likewise. Return
+ true if successful. */
+
+static bool
+read_char (int *c)
+{
+ bool ok = true;
+
+ *c = EOF;
+
+ while (in_stream != NULL) /* EOF. */
+ {
+ *c = fgetc (in_stream);
+
+ if (*c != EOF)
+ break;
+
+ ok &= check_and_close (errno);
+
+ ok &= open_next_file ();
+ }
+
+ return ok;
+}
+
+/* Read N bytes into BLOCK from the concatenation of the input files
+ named in the global array FILE_LIST. On the first call to this
+ function, the global variable IN_STREAM is expected to be an open
+ stream associated with the input file INPUT_FILENAME. If all N
+ bytes cannot be read from IN_STREAM, close IN_STREAM and update
+ the global variables IN_STREAM and INPUT_FILENAME. Then try to
+ read the remaining bytes from the newly opened file. Repeat if
+ necessary until EOF is reached for the last file in FILE_LIST.
+ On subsequent calls, don't modify BLOCK and return true. Set
+ *N_BYTES_IN_BUFFER to the number of bytes read. If an error occurs,
+ it will be detected through ferror when the stream is about to be
+ closed. If there is an error, give a message but continue reading
+ as usual and return false. Otherwise return true. */
+
+static bool
+read_block (size_t n, char *block, size_t *n_bytes_in_buffer)
+{
+ bool ok = true;
+
+ assert (0 < n && n <= bytes_per_block);
+
+ *n_bytes_in_buffer = 0;
+
+ if (n == 0)
+ return true;
+
+ while (in_stream != NULL) /* EOF. */
+ {
+ size_t n_needed;
+ size_t n_read;
+
+ n_needed = n - *n_bytes_in_buffer;
+ n_read = fread (block + *n_bytes_in_buffer, 1, n_needed, in_stream);
+
+ *n_bytes_in_buffer += n_read;
+
+ if (n_read == n_needed)
+ break;
+
+ ok &= check_and_close (errno);
+
+ ok &= open_next_file ();
+ }
+
+ return ok;
+}
+
+/* Return the least common multiple of the sizes associated
+ with the format specs. */
+
+static int
+get_lcm (void)
+{
+ size_t i;
+ int l_c_m = 1;
+
+ for (i = 0; i < n_specs; i++)
+ l_c_m = lcm (l_c_m, width_bytes[spec[i].size]);
+ return l_c_m;
+}
+
+/* If S is a valid traditional offset specification with an optional
+ leading '+' return true and set *OFFSET to the offset it denotes. */
+
+static bool
+parse_old_offset (const char *s, uintmax_t *offset)
+{
+ int radix;
+
+ if (*s == '\0')
+ return false;
+
+ /* Skip over any leading '+'. */
+ if (s[0] == '+')
+ ++s;
+
+ /* Determine the radix we'll use to interpret S. If there is a `.',
+ it's decimal, otherwise, if the string begins with `0X'or `0x',
+ it's hexadecimal, else octal. */
+ if (strchr (s, '.') != NULL)
+ radix = 10;
+ else
+ {
+ if (s[0] == '0' && (s[1] == 'x' || s[1] == 'X'))
+ radix = 16;
+ else
+ radix = 8;
+ }
+
+ return xstrtoumax (s, NULL, radix, offset, "Bb") == LONGINT_OK;
+}
+
+/* Read a chunk of size BYTES_PER_BLOCK from the input files, write the
+ formatted block to standard output, and repeat until the specified
+ maximum number of bytes has been read or until all input has been
+ processed. If the last block read is smaller than BYTES_PER_BLOCK
+ and its size is not a multiple of the size associated with a format
+ spec, extend the input block with zero bytes until its length is a
+ multiple of all format spec sizes. Write the final block. Finally,
+ write on a line by itself the offset of the byte after the last byte
+ read. Accumulate return values from calls to read_block and
+ check_and_close, and if any was false, return false.
+ Otherwise, return true. */
+
+static bool
+dump (void)
+{
+ char *block[2];
+ uintmax_t current_offset;
+ bool idx = false;
+ bool ok = true;
+ size_t n_bytes_read;
+
+ block[0] = xnmalloc (2, bytes_per_block);
+ block[1] = block[0] + bytes_per_block;
+
+ current_offset = n_bytes_to_skip;
+
+ if (limit_bytes_to_format)
+ {
+ while (1)
+ {
+ size_t n_needed;
+ if (current_offset >= end_offset)
+ {
+ n_bytes_read = 0;
+ break;
+ }
+ n_needed = MIN (end_offset - current_offset,
+ (uintmax_t) bytes_per_block);
+ ok &= read_block (n_needed, block[idx], &n_bytes_read);
+ if (n_bytes_read < bytes_per_block)
+ break;
+ assert (n_bytes_read == bytes_per_block);
+ write_block (current_offset, n_bytes_read,
+ block[!idx], block[idx]);
+ current_offset += n_bytes_read;
+ idx = !idx;
+ }
+ }
+ else
+ {
+ while (1)
+ {
+ ok &= read_block (bytes_per_block, block[idx], &n_bytes_read);
+ if (n_bytes_read < bytes_per_block)
+ break;
+ assert (n_bytes_read == bytes_per_block);
+ write_block (current_offset, n_bytes_read,
+ block[!idx], block[idx]);
+ current_offset += n_bytes_read;
+ idx = !idx;
+ }
+ }
+
+ if (n_bytes_read > 0)
+ {
+ int l_c_m;
+ size_t bytes_to_write;
+
+ l_c_m = get_lcm ();
+
+ /* Make bytes_to_write the smallest multiple of l_c_m that
+ is at least as large as n_bytes_read. */
+ bytes_to_write = l_c_m * ((n_bytes_read + l_c_m - 1) / l_c_m);
+
+ memset (block[idx] + n_bytes_read, 0, bytes_to_write - n_bytes_read);
+ write_block (current_offset, bytes_to_write,
+ block[!idx], block[idx]);
+ current_offset += n_bytes_read;
+ }
+
+ format_address (current_offset, '\n');
+
+ if (limit_bytes_to_format && current_offset >= end_offset)
+ ok &= check_and_close (0);
+
+ free (block[0]);
+
+ return ok;
+}
+
+/* STRINGS mode. Find each "string constant" in the input.
+ A string constant is a run of at least `string_min' ASCII
+ graphic (or formatting) characters terminated by a null.
+ Based on a function written by Richard Stallman for a
+ traditional version of od. Return true if successful. */
+
+static bool
+dump_strings (void)
+{
+ size_t bufsize = MAX (100, string_min);
+ char *buf = xmalloc (bufsize);
+ uintmax_t address = n_bytes_to_skip;
+ bool ok = true;
+
+ while (1)
+ {
+ size_t i;
+ int c;
+
+ /* See if the next `string_min' chars are all printing chars. */
+ tryline:
+
+ if (limit_bytes_to_format
+ && (end_offset < string_min || end_offset - string_min <= address))
+ break;
+
+ for (i = 0; i < string_min; i++)
+ {
+ ok &= read_char (&c);
+ address++;
+ if (c < 0)
+ {
+ free (buf);
+ return ok;
+ }
+ if (! isprint (c))
+ /* Found a non-printing. Try again starting with next char. */
+ goto tryline;
+ buf[i] = c;
+ }
+
+ /* We found a run of `string_min' printable characters.
+ Now see if it is terminated with a null byte. */
+ while (!limit_bytes_to_format || address < end_offset)
+ {
+ if (i == bufsize)
+ {
+ buf = X2REALLOC (buf, &bufsize);
+ }
+ ok &= read_char (&c);
+ address++;
+ if (c < 0)
+ {
+ free (buf);
+ return ok;
+ }
+ if (c == '\0')
+ break; /* It is; print this string. */
+ if (! isprint (c))
+ goto tryline; /* It isn't; give up on this string. */
+ buf[i++] = c; /* String continues; store it all. */
+ }
+
+ /* If we get here, the string is all printable and null-terminated,
+ so print it. It is all in `buf' and `i' is its length. */
+ buf[i] = 0;
+ format_address (address - i - 1, ' ');
+
+ for (i = 0; (c = buf[i]); i++)
+ {
+ switch (c)
+ {
+ case '\a':
+ fputs ("\\a", stdout);
+ break;
+
+ case '\b':
+ fputs ("\\b", stdout);
+ break;
+
+ case '\f':
+ fputs ("\\f", stdout);
+ break;
+
+ case '\n':
+ fputs ("\\n", stdout);
+ break;
+
+ case '\r':
+ fputs ("\\r", stdout);
+ break;
+
+ case '\t':
+ fputs ("\\t", stdout);
+ break;
+
+ case '\v':
+ fputs ("\\v", stdout);
+ break;
+
+ default:
+ putc (c, stdout);
+ }
+ }
+ putchar ('\n');
+ }
+
+ /* We reach this point only if we search through
+ (max_bytes_to_format - string_min) bytes before reaching EOF. */
+
+ free (buf);
+
+ ok &= check_and_close (0);
+ return ok;
+}
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ int n_files;
+ size_t i;
+ int l_c_m;
+ size_t desired_width IF_LINT (= 0);
+ bool modern = false;
+ bool width_specified = false;
+ bool ok = true;
+
+ /* The old-style `pseudo starting address' to be printed in parentheses
+ after any true address. */
+ uintmax_t pseudo_start IF_LINT (= 0);
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ for (i = 0; i <= MAX_INTEGRAL_TYPE_SIZE; i++)
+ integral_type_size[i] = NO_SIZE;
+
+ integral_type_size[sizeof (char)] = CHAR;
+ integral_type_size[sizeof (short int)] = SHORT;
+ integral_type_size[sizeof (int)] = INT;
+ integral_type_size[sizeof (long int)] = LONG;
+#if HAVE_UNSIGNED_LONG_LONG_INT
+ /* If `long int' and `long long int' have the same size, it's fine
+ to overwrite the entry for `long' with this one. */
+ integral_type_size[sizeof (unsigned_long_long_int)] = LONG_LONG;
+#endif
+
+ for (i = 0; i <= MAX_FP_TYPE_SIZE; i++)
+ fp_type_size[i] = NO_SIZE;
+
+ fp_type_size[sizeof (float)] = FLOAT_SINGLE;
+ /* The array entry for `double' is filled in after that for LONG_DOUBLE
+ so that if `long double' is the same type or if long double isn't
+ supported FLOAT_LONG_DOUBLE will never be used. */
+ fp_type_size[sizeof (LONG_DOUBLE)] = FLOAT_LONG_DOUBLE;
+ fp_type_size[sizeof (double)] = FLOAT_DOUBLE;
+
+ n_specs = 0;
+ n_specs_allocated = 0;
+ spec = NULL;
+
+ format_address = format_address_std;
+ address_base = 8;
+ address_pad_len = 7;
+ flag_dump_strings = false;
+
+ while ((c = getopt_long (argc, argv, short_options, long_options, NULL))
+ != -1)
+ {
+ uintmax_t tmp;
+ enum strtol_error s_err;
+
+ switch (c)
+ {
+ case 'A':
+ modern = true;
+ switch (optarg[0])
+ {
+ case 'd':
+ format_address = format_address_std;
+ address_base = 10;
+ address_pad_len = 7;
+ break;
+ case 'o':
+ format_address = format_address_std;
+ address_base = 8;
+ address_pad_len = 7;
+ break;
+ case 'x':
+ format_address = format_address_std;
+ address_base = 16;
+ address_pad_len = 6;
+ break;
+ case 'n':
+ format_address = format_address_none;
+ address_pad_len = 0;
+ break;
+ default:
+ error (EXIT_FAILURE, 0,
+ _("invalid output address radix `%c'; \
+it must be one character from [doxn]"),
+ optarg[0]);
+ break;
+ }
+ break;
+
+ case 'j':
+ modern = true;
+ s_err = xstrtoumax (optarg, NULL, 0, &n_bytes_to_skip, "bkm");
+ if (s_err != LONGINT_OK)
+ STRTOL_FATAL_ERROR (optarg, _("skip argument"), s_err);
+ break;
+
+ case 'N':
+ modern = true;
+ limit_bytes_to_format = true;
+
+ s_err = xstrtoumax (optarg, NULL, 0, &max_bytes_to_format, "bkm");
+ if (s_err != LONGINT_OK)
+ STRTOL_FATAL_ERROR (optarg, _("limit argument"), s_err);
+ break;
+
+ case 'S':
+ modern = true;
+ if (optarg == NULL)
+ string_min = 3;
+ else
+ {
+ s_err = xstrtoumax (optarg, NULL, 0, &tmp, "bkm");
+ if (s_err != LONGINT_OK)
+ STRTOL_FATAL_ERROR (optarg, _("minimum string length"), s_err);
+
+ /* The minimum string length may be no larger than SIZE_MAX,
+ since we may allocate a buffer of this size. */
+ if (SIZE_MAX < tmp)
+ error (EXIT_FAILURE, 0, _("%s is too large"), optarg);
+
+ string_min = tmp;
+ }
+ flag_dump_strings = true;
+ break;
+
+ case 't':
+ modern = true;
+ ok &= decode_format_string (optarg);
+ break;
+
+ case 'v':
+ modern = true;
+ abbreviate_duplicate_blocks = false;
+ break;
+
+ case TRADITIONAL_OPTION:
+ traditional = true;
+ break;
+
+ /* The next several cases map the traditional format
+ specification options to the corresponding modern format
+ specs. GNU od accepts any combination of old- and
+ new-style options. Format specification options accumulate.
+ The obsolescent and undocumented formats are compatible
+ with FreeBSD 4.10 od. */
+
+#define CASE_OLD_ARG(old_char,new_string) \
+ case old_char: \
+ ok &= decode_format_string (new_string); \
+ break
+
+ CASE_OLD_ARG ('a', "a");
+ CASE_OLD_ARG ('b', "o1");
+ CASE_OLD_ARG ('c', "c");
+ CASE_OLD_ARG ('D', "u4"); /* obsolescent and undocumented */
+ CASE_OLD_ARG ('d', "u2");
+ case 'F': /* obsolescent and undocumented alias */
+ CASE_OLD_ARG ('e', "fD"); /* obsolescent and undocumented */
+ CASE_OLD_ARG ('f', "fF");
+ case 'X': /* obsolescent and undocumented alias */
+ CASE_OLD_ARG ('H', "x4"); /* obsolescent and undocumented */
+ CASE_OLD_ARG ('i', "dI");
+ case 'I': case 'L': /* obsolescent and undocumented aliases */
+ CASE_OLD_ARG ('l', "dL");
+ CASE_OLD_ARG ('O', "o4"); /* obsolesent and undocumented */
+ case 'B': /* obsolescent and undocumented alias */
+ CASE_OLD_ARG ('o', "o2");
+ CASE_OLD_ARG ('s', "d2");
+ case 'h': /* obsolescent and undocumented alias */
+ CASE_OLD_ARG ('x', "x2");
+
+#undef CASE_OLD_ARG
+
+ case 'w':
+ modern = true;
+ width_specified = true;
+ if (optarg == NULL)
+ {
+ desired_width = 32;
+ }
+ else
+ {
+ uintmax_t w_tmp;
+ s_err = xstrtoumax (optarg, NULL, 10, &w_tmp, "");
+ if (s_err != LONGINT_OK)
+ STRTOL_FATAL_ERROR (optarg, _("width specification"), s_err);
+ if (SIZE_MAX < w_tmp)
+ error (EXIT_FAILURE, 0, _("%s is too large"), optarg);
+ desired_width = w_tmp;
+ }
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ break;
+ }
+ }
+
+ if (!ok)
+ exit (EXIT_FAILURE);
+
+ if (flag_dump_strings && n_specs > 0)
+ error (EXIT_FAILURE, 0,
+ _("no type may be specified when dumping strings"));
+
+ n_files = argc - optind;
+
+ /* If the --traditional option is used, there may be from
+ 0 to 3 remaining command line arguments; handle each case
+ separately.
+ od [file] [[+]offset[.][b] [[+]label[.][b]]]
+ The offset and label have the same syntax.
+
+ If --traditional is not given, and if no modern options are
+ given, and if the offset begins with + or (if there are two
+ operands) a digit, accept only this form, as per POSIX:
+ od [file] [[+]offset[.][b]]
+ */
+
+ if (!modern | traditional)
+ {
+ uintmax_t o1;
+ uintmax_t o2;
+
+ switch (n_files)
+ {
+ case 1:
+ if ((traditional || argv[optind][0] == '+')
+ && parse_old_offset (argv[optind], &o1))
+ {
+ n_bytes_to_skip = o1;
+ --n_files;
+ ++argv;
+ }
+ break;
+
+ case 2:
+ if ((traditional || argv[optind + 1][0] == '+'
+ || ISDIGIT (argv[optind + 1][0]))
+ && parse_old_offset (argv[optind + 1], &o2))
+ {
+ if (traditional && parse_old_offset (argv[optind], &o1))
+ {
+ n_bytes_to_skip = o1;
+ flag_pseudo_start = true;
+ pseudo_start = o2;
+ argv += 2;
+ n_files -= 2;
+ }
+ else
+ {
+ n_bytes_to_skip = o2;
+ --n_files;
+ argv[optind + 1] = argv[optind];
+ ++argv;
+ }
+ }
+ break;
+
+ case 3:
+ if (traditional
+ && parse_old_offset (argv[optind + 1], &o1)
+ && parse_old_offset (argv[optind + 2], &o2))
+ {
+ n_bytes_to_skip = o1;
+ flag_pseudo_start = true;
+ pseudo_start = o2;
+ argv[optind + 2] = argv[optind];
+ argv += 2;
+ n_files -= 2;
+ }
+ break;
+ }
+
+ if (traditional && 1 < n_files)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind + 1]));
+ error (0, 0, "%s\n",
+ _("Compatibility mode supports at most one file."));
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (flag_pseudo_start)
+ {
+ if (format_address == format_address_none)
+ {
+ address_base = 8;
+ address_pad_len = 7;
+ format_address = format_address_paren;
+ }
+ else
+ format_address = format_address_label;
+ }
+
+ if (limit_bytes_to_format)
+ {
+ end_offset = n_bytes_to_skip + max_bytes_to_format;
+ if (end_offset < n_bytes_to_skip)
+ error (EXIT_FAILURE, 0, _("skip-bytes + read-bytes is too large"));
+ }
+
+ if (n_specs == 0)
+ decode_format_string ("oS");
+
+ if (n_files > 0)
+ {
+ /* Set the global pointer FILE_LIST so that it
+ references the first file-argument on the command-line. */
+
+ file_list = (char const *const *) &argv[optind];
+ }
+ else
+ {
+ /* No files were listed on the command line.
+ Set the global pointer FILE_LIST so that it
+ references the null-terminated list of one name: "-". */
+
+ file_list = default_file_list;
+ }
+
+ /* open the first input file */
+ ok = open_next_file ();
+ if (in_stream == NULL)
+ goto cleanup;
+
+ /* skip over any unwanted header bytes */
+ ok &= skip (n_bytes_to_skip);
+ if (in_stream == NULL)
+ goto cleanup;
+
+ pseudo_offset = (flag_pseudo_start ? pseudo_start - n_bytes_to_skip : 0);
+
+ /* Compute output block length. */
+ l_c_m = get_lcm ();
+
+ if (width_specified)
+ {
+ if (desired_width != 0 && desired_width % l_c_m == 0)
+ bytes_per_block = desired_width;
+ else
+ {
+ error (0, 0, _("warning: invalid width %lu; using %d instead"),
+ (unsigned long int) desired_width, l_c_m);
+ bytes_per_block = l_c_m;
+ }
+ }
+ else
+ {
+ if (l_c_m < DEFAULT_BYTES_PER_BLOCK)
+ bytes_per_block = l_c_m * (DEFAULT_BYTES_PER_BLOCK / l_c_m);
+ else
+ bytes_per_block = l_c_m;
+ }
+
+#ifdef DEBUG
+ for (i = 0; i < n_specs; i++)
+ {
+ printf (_("%d: fmt=\"%s\" width=%d\n"),
+ i, spec[i].fmt_string, width_bytes[spec[i].size]);
+ }
+#endif
+
+ ok &= (flag_dump_strings ? dump_strings () : dump ());
+
+cleanup:;
+
+ if (have_read_stdin && fclose (stdin) == EOF)
+ error (EXIT_FAILURE, errno, _("standard input"));
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/paste.c b/src/paste.c
new file mode 100644
index 0000000..414fb88
--- /dev/null
+++ b/src/paste.c
@@ -0,0 +1,497 @@
+/* paste - merge lines of files
+ Copyright (C) 1997-2005 Free Software Foundation, Inc.
+ Copyright (C) 1984 David M. Ihnat
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David Ihnat. */
+
+/* The list of valid escape sequences has been expanded over the Unix
+ version, to include \b, \f, \r, and \v.
+
+ POSIX changes, bug fixes, long-named options, and cleanup
+ by David MacKenzie <djm@gnu.ai.mit.edu>.
+
+ Options:
+ --serial
+ -s Paste one file at a time rather than
+ one line from each file.
+ --delimiters=delim-list
+ -d delim-list Consecutively use the characters in
+ DELIM-LIST instead of tab to separate
+ merged lines. When DELIM-LIST is exhausted,
+ start again at its beginning.
+ A FILE of `-' means standard input.
+ If no FILEs are given, standard input is used. */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+#include "system.h"
+#include "error.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "paste"
+
+#define AUTHORS "David M. Ihnat", "David MacKenzie"
+
+/* Indicates that no delimiter should be added in the current position. */
+#define EMPTY_DELIM '\0'
+
+/* Name this program was run with. */
+char *program_name;
+
+/* If nonzero, we have read standard input at some point. */
+static bool have_read_stdin;
+
+/* If nonzero, merge subsequent lines of each file rather than
+ corresponding lines from each file in parallel. */
+static bool serial_merge;
+
+/* The delimeters between lines of input files (used cyclically). */
+static char *delims;
+
+/* A pointer to the character after the end of `delims'. */
+static char const *delim_end;
+
+static struct option const longopts[] =
+{
+ {"serial", no_argument, NULL, 's'},
+ {"delimiters", required_argument, NULL, 'd'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+/* Set globals delims and delim_end. Copy STRPTR to DELIMS, converting
+ backslash representations of special characters in STRPTR to their actual
+ values. The set of possible backslash characters has been expanded beyond
+ that recognized by the Unix version. */
+
+static void
+collapse_escapes (char const *strptr)
+{
+ char *strout = xstrdup (strptr);
+ delims = strout;
+
+ while (*strptr)
+ {
+ if (*strptr != '\\') /* Is it an escape character? */
+ *strout++ = *strptr++; /* No, just transfer it. */
+ else
+ {
+ switch (*++strptr)
+ {
+ case '0':
+ *strout++ = EMPTY_DELIM;
+ break;
+
+ case 'b':
+ *strout++ = '\b';
+ break;
+
+ case 'f':
+ *strout++ = '\f';
+ break;
+
+ case 'n':
+ *strout++ = '\n';
+ break;
+
+ case 'r':
+ *strout++ = '\r';
+ break;
+
+ case 't':
+ *strout++ = '\t';
+ break;
+
+ case 'v':
+ *strout++ = '\v';
+ break;
+
+ default:
+ *strout++ = *strptr;
+ break;
+ }
+ strptr++;
+ }
+ }
+ delim_end = strout;
+}
+
+/* Report a write error and exit. */
+
+static void write_error (void) ATTRIBUTE_NORETURN;
+static void
+write_error (void)
+{
+ error (EXIT_FAILURE, errno, _("write error"));
+ abort ();
+}
+
+/* Output a single byte, reporting any write errors. */
+
+static inline void
+xputchar (char c)
+{
+ if (putchar (c) < 0)
+ write_error ();
+}
+
+/* Perform column paste on the NFILES files named in FNAMPTR.
+ Return true if successful, false if one or more files could not be
+ opened or read. */
+
+static bool
+paste_parallel (size_t nfiles, char **fnamptr)
+{
+ bool ok = true;
+ /* If all files are just ready to be closed, or will be on this
+ round, the string of delimiters must be preserved.
+ delbuf[0] through delbuf[nfiles]
+ store the delimiters for closed files. */
+ char *delbuf = xmalloc (nfiles + 2);
+
+ /* Streams open to the files to process; NULL if the corresponding
+ stream is closed. */
+ FILE **fileptr = xnmalloc (nfiles + 1, sizeof *fileptr);
+
+ /* Number of files still open to process. */
+ size_t files_open;
+
+ /* True if any fopen got fd == STDIN_FILENO. */
+ bool opened_stdin = false;
+
+ /* Attempt to open all files. This could be expanded to an infinite
+ number of files, but at the (considerable) expense of remembering
+ each file and its current offset, then opening/reading/closing. */
+
+ for (files_open = 0; files_open < nfiles; ++files_open)
+ {
+ if (STREQ (fnamptr[files_open], "-"))
+ {
+ have_read_stdin = true;
+ fileptr[files_open] = stdin;
+ }
+ else
+ {
+ fileptr[files_open] = fopen (fnamptr[files_open], "r");
+ if (fileptr[files_open] == NULL)
+ error (EXIT_FAILURE, errno, "%s", fnamptr[files_open]);
+ else if (fileno (fileptr[files_open]) == STDIN_FILENO)
+ opened_stdin = true;
+ }
+ }
+
+ if (opened_stdin && have_read_stdin)
+ error (EXIT_FAILURE, 0, _("standard input is closed"));
+
+ /* Read a line from each file and output it to stdout separated by a
+ delimiter, until we go through the loop without successfully
+ reading from any of the files. */
+
+ while (files_open)
+ {
+ /* Set up for the next line. */
+ bool somedone = false;
+ char const *delimptr = delims;
+ size_t delims_saved = 0; /* Number of delims saved in `delbuf'. */
+ size_t i;
+
+ for (i = 0; i < nfiles && files_open; i++)
+ {
+ int chr IF_LINT (= 0); /* Input character. */
+ int err IF_LINT (= 0); /* Input errno value. */
+ size_t line_length = 0; /* Number of chars in line. */
+
+ if (fileptr[i])
+ {
+ chr = getc (fileptr[i]);
+ err = errno;
+ if (chr != EOF && delims_saved)
+ {
+ if (fwrite (delbuf, 1, delims_saved, stdout) != delims_saved)
+ write_error ();
+ delims_saved = 0;
+ }
+
+ while (chr != EOF)
+ {
+ line_length++;
+ if (chr == '\n')
+ break;
+ xputchar (chr);
+ chr = getc (fileptr[i]);
+ err = errno;
+ }
+ }
+
+ if (line_length == 0)
+ {
+ /* EOF, read error, or closed file.
+ If an EOF or error, close the file. */
+ if (fileptr[i])
+ {
+ if (ferror (fileptr[i]))
+ {
+ error (0, err, "%s", fnamptr[i]);
+ ok = false;
+ }
+ if (fileptr[i] == stdin)
+ clearerr (fileptr[i]); /* Also clear EOF. */
+ else if (fclose (fileptr[i]) == EOF)
+ {
+ error (0, errno, "%s", fnamptr[i]);
+ ok = false;
+ }
+
+ fileptr[i] = NULL;
+ files_open--;
+ }
+
+ if (i + 1 == nfiles)
+ {
+ /* End of this output line.
+ Is this the end of the whole thing? */
+ if (somedone)
+ {
+ /* No. Some files were not closed for this line. */
+ if (delims_saved)
+ {
+ if (fwrite (delbuf, 1, delims_saved, stdout)
+ != delims_saved)
+ write_error ();
+ delims_saved = 0;
+ }
+ xputchar ('\n');
+ }
+ continue; /* Next read of files, or exit. */
+ }
+ else
+ {
+ /* Closed file; add delimiter to `delbuf'. */
+ if (*delimptr != EMPTY_DELIM)
+ delbuf[delims_saved++] = *delimptr;
+ if (++delimptr == delim_end)
+ delimptr = delims;
+ }
+ }
+ else
+ {
+ /* Some data read. */
+ somedone = true;
+
+ /* Except for last file, replace last newline with delim. */
+ if (i + 1 != nfiles)
+ {
+ if (chr != '\n' && chr != EOF)
+ xputchar (chr);
+ if (*delimptr != EMPTY_DELIM)
+ xputchar (*delimptr);
+ if (++delimptr == delim_end)
+ delimptr = delims;
+ }
+ else
+ {
+ /* If the last line of the last file lacks a newline,
+ print one anyhow. POSIX requires this. */
+ char c = (chr == EOF ? '\n' : chr);
+ xputchar (c);
+ }
+ }
+ }
+ }
+ free (fileptr);
+ free (delbuf);
+ return ok;
+}
+
+/* Perform serial paste on the NFILES files named in FNAMPTR.
+ Return true if no errors, false if one or more files could not be
+ opened or read. */
+
+static bool
+paste_serial (size_t nfiles, char **fnamptr)
+{
+ bool ok = true; /* false if open or read errors occur. */
+ int charnew, charold; /* Current and previous char read. */
+ char const *delimptr; /* Current delimiter char. */
+ FILE *fileptr; /* Open for reading current file. */
+
+ for (; nfiles; nfiles--, fnamptr++)
+ {
+ int saved_errno;
+ bool is_stdin = STREQ (*fnamptr, "-");
+ if (is_stdin)
+ {
+ have_read_stdin = true;
+ fileptr = stdin;
+ }
+ else
+ {
+ fileptr = fopen (*fnamptr, "r");
+ if (fileptr == NULL)
+ {
+ error (0, errno, "%s", *fnamptr);
+ ok = false;
+ continue;
+ }
+ }
+
+ delimptr = delims; /* Set up for delimiter string. */
+
+ charold = getc (fileptr);
+ saved_errno = errno;
+ if (charold != EOF)
+ {
+ /* `charold' is set up. Hit it!
+ Keep reading characters, stashing them in `charnew';
+ output `charold', converting to the appropriate delimiter
+ character if needed. After the EOF, output `charold'
+ if it's a newline; otherwise, output it and then a newline. */
+
+ while ((charnew = getc (fileptr)) != EOF)
+ {
+ /* Process the old character. */
+ if (charold == '\n')
+ {
+ if (*delimptr != EMPTY_DELIM)
+ xputchar (*delimptr);
+
+ if (++delimptr == delim_end)
+ delimptr = delims;
+ }
+ else
+ xputchar (charold);
+
+ charold = charnew;
+ }
+ saved_errno = errno;
+
+ /* Hit EOF. Process that last character. */
+ xputchar (charold);
+ }
+
+ if (charold != '\n')
+ xputchar ('\n');
+
+ if (ferror (fileptr))
+ {
+ error (0, saved_errno, "%s", *fnamptr);
+ ok = false;
+ }
+ if (is_stdin)
+ clearerr (fileptr); /* Also clear EOF. */
+ else if (fclose (fileptr) == EOF)
+ {
+ error (0, errno, "%s", *fnamptr);
+ ok = false;
+ }
+ }
+ return ok;
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [FILE]...\n\
+"),
+ program_name);
+ fputs (_("\
+Write lines consisting of the sequentially corresponding lines from\n\
+each FILE, separated by TABs, to standard output.\n\
+With no FILE, or when FILE is -, read standard input.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -d, --delimiters=LIST reuse characters from LIST instead of TABs\n\
+ -s, --serial paste one file at a time instead of in parallel\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ /* FIXME: add a couple of examples. */
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ int optc;
+ bool ok;
+ char const *delim_arg = "\t";
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ have_read_stdin = false;
+ serial_merge = false;
+
+ while ((optc = getopt_long (argc, argv, "d:s", longopts, NULL)) != -1)
+ {
+ switch (optc)
+ {
+ case 'd':
+ /* Delimiter character(s). */
+ delim_arg = (optarg[0] == '\0' ? "\\0" : optarg);
+ break;
+
+ case 's':
+ serial_merge = true;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (optind == argc)
+ argv[argc++] = "-";
+
+ collapse_escapes (delim_arg);
+
+ if (!serial_merge)
+ ok = paste_parallel (argc - optind, &argv[optind]);
+ else
+ ok = paste_serial (argc - optind, &argv[optind]);
+
+ free (delims);
+
+ if (have_read_stdin && fclose (stdin) == EOF)
+ error (EXIT_FAILURE, errno, "-");
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/pathchk.c b/src/pathchk.c
new file mode 100644
index 0000000..2fc55d3
--- /dev/null
+++ b/src/pathchk.c
@@ -0,0 +1,433 @@
+/* pathchk -- check whether file names are valid or portable
+ Copyright (C) 1991-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+#if HAVE_WCHAR_H
+# include <wchar.h>
+#endif
+
+#include "system.h"
+#include "error.h"
+#include "euidaccess.h"
+#include "quote.h"
+#include "quotearg.h"
+
+#if ! (HAVE_MBRLEN && HAVE_MBSTATE_T)
+# define mbrlen(s, n, ps) 1
+# define mbstate_t int
+#endif
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "pathchk"
+
+#define AUTHORS "Paul Eggert", "David MacKenzie", "Jim Meyering"
+
+#ifndef _POSIX_PATH_MAX
+# define _POSIX_PATH_MAX 256
+#endif
+#ifndef _POSIX_NAME_MAX
+# define _POSIX_NAME_MAX 14
+#endif
+
+#ifdef _XOPEN_NAME_MAX
+# define NAME_MAX_MINIMUM _XOPEN_NAME_MAX
+#else
+# define NAME_MAX_MINIMUM _POSIX_NAME_MAX
+#endif
+#ifdef _XOPEN_PATH_MAX
+# define PATH_MAX_MINIMUM _XOPEN_PATH_MAX
+#else
+# define PATH_MAX_MINIMUM _POSIX_PATH_MAX
+#endif
+
+#if ! (HAVE_PATHCONF && defined _PC_NAME_MAX && defined _PC_PATH_MAX)
+# ifndef _PC_NAME_MAX
+# define _PC_NAME_MAX 0
+# define _PC_PATH_MAX 1
+# endif
+# ifndef pathconf
+# define pathconf(file, flag) \
+ (flag == _PC_NAME_MAX ? NAME_MAX_MINIMUM : PATH_MAX_MINIMUM)
+# endif
+#endif
+
+static bool validate_file_name (char *, bool, bool);
+
+/* The name this program was run with. */
+char *program_name;
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ PORTABILITY_OPTION = CHAR_MAX + 1
+};
+
+static struct option const longopts[] =
+{
+ {"portability", no_argument, NULL, PORTABILITY_OPTION},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]... NAME...\n"), program_name);
+ fputs (_("\
+Diagnose unportable constructs in NAME.\n\
+\n\
+ -p check for most POSIX systems\n\
+ -P check for empty names and leading \"-\"\n\
+ --portability check for all POSIX systems (equivalent to -p -P)\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ bool ok = true;
+ bool check_basic_portability = false;
+ bool check_extra_portability = false;
+ int optc;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ while ((optc = getopt_long (argc, argv, "+pP", longopts, NULL)) != -1)
+ {
+ switch (optc)
+ {
+ case PORTABILITY_OPTION:
+ check_basic_portability = true;
+ check_extra_portability = true;
+ break;
+
+ case 'p':
+ check_basic_portability = true;
+ break;
+
+ case 'P':
+ check_extra_portability = true;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (optind == argc)
+ {
+ error (0, 0, _("missing operand"));
+ usage (EXIT_FAILURE);
+ }
+
+ for (; optind < argc; ++optind)
+ ok &= validate_file_name (argv[optind],
+ check_basic_portability, check_extra_portability);
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+
+/* If FILE contains a component with a leading "-", report an error
+ and return false; otherwise, return true. */
+
+static bool
+no_leading_hyphen (char const *file)
+{
+ char const *p;
+
+ for (p = file; (p = strchr (p, '-')); p++)
+ if (p == file || p[-1] == '/')
+ {
+ error (0, 0, _("leading `-' in a component of file name %s"),
+ quote (file));
+ return false;
+ }
+
+ return true;
+}
+
+/* If FILE (of length FILELEN) contains only portable characters,
+ return true, else report an error and return false. */
+
+static bool
+portable_chars_only (char const *file, size_t filelen)
+{
+ size_t validlen = strspn (file,
+ ("/"
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "abcdefghijklmnopqrstuvwxyz"
+ "0123456789._-"));
+ char const *invalid = file + validlen;
+
+ if (*invalid)
+ {
+ mbstate_t mbstate = { 0, };
+ size_t charlen = mbrlen (invalid, filelen - validlen, &mbstate);
+ error (0, 0,
+ _("nonportable character %s in file name %s"),
+ quotearg_n_style_mem (1, locale_quoting_style, invalid,
+ (charlen <= MB_LEN_MAX ? charlen : 1)),
+ quote_n (0, file));
+ return false;
+ }
+
+ return true;
+}
+
+/* Return the address of the start of the next file name component in F. */
+
+static char *
+component_start (char *f)
+{
+ while (*f == '/')
+ f++;
+ return f;
+}
+
+/* Return the size of the file name component F. F must be nonempty. */
+
+static size_t
+component_len (char const *f)
+{
+ size_t len;
+ for (len = 1; f[len] != '/' && f[len]; len++)
+ continue;
+ return len;
+}
+
+/* Make sure that
+ strlen (FILE) <= PATH_MAX
+ && strlen (each-existing-directory-in-FILE) <= NAME_MAX
+
+ If CHECK_BASIC_PORTABILITY is true, compare against _POSIX_PATH_MAX and
+ _POSIX_NAME_MAX instead, and make sure that FILE contains no
+ characters not in the POSIX portable filename character set, which
+ consists of A-Z, a-z, 0-9, ., _, - (plus / for separators).
+
+ If CHECK_BASIC_PORTABILITY is false, make sure that all leading directories
+ along FILE that exist are searchable.
+
+ If CHECK_EXTRA_PORTABILITY is true, check that file name components do not
+ begin with "-".
+
+ If either CHECK_BASIC_PORTABILITY or CHECK_EXTRA_PORTABILITY is true,
+ check that the file name is not empty.
+
+ Return true if all of these tests are successful, false if any fail. */
+
+static bool
+validate_file_name (char *file, bool check_basic_portability,
+ bool check_extra_portability)
+{
+ size_t filelen = strlen (file);
+
+ /* Start of file name component being checked. */
+ char *start;
+
+ /* True if component lengths need to be checked. */
+ bool check_component_lengths;
+
+ /* True if the file is known to exist. */
+ bool file_exists = false;
+
+ if (check_extra_portability && ! no_leading_hyphen (file))
+ return false;
+
+ if ((check_basic_portability | check_extra_portability)
+ && filelen == 0)
+ {
+ /* Fail, since empty names are not portable. As of
+ 2005-01-06 POSIX does not address whether "pathchk -p ''"
+ should (or is allowed to) fail, so this is not a
+ conformance violation. */
+ error (0, 0, _("empty file name"));
+ return false;
+ }
+
+ if (check_basic_portability)
+ {
+ if (! portable_chars_only (file, filelen))
+ return false;
+ }
+ else
+ {
+ /* Check whether a file name component is in a directory that
+ is not searchable, or has some other serious problem.
+ POSIX does not allow "" as a file name, but some non-POSIX
+ hosts do (as an alias for "."), so allow "" if lstat does. */
+
+ struct stat st;
+ if (lstat (file, &st) == 0)
+ file_exists = true;
+ else if (errno != ENOENT || filelen == 0)
+ {
+ error (0, errno, "%s", file);
+ return false;
+ }
+ }
+
+ if (check_basic_portability
+ || (! file_exists && PATH_MAX_MINIMUM <= filelen))
+ {
+ size_t maxsize;
+
+ if (check_basic_portability)
+ maxsize = _POSIX_PATH_MAX;
+ else
+ {
+ long int size;
+ char const *dir = (*file == '/' ? "/" : ".");
+ errno = 0;
+ size = pathconf (dir, _PC_PATH_MAX);
+ if (size < 0 && errno != 0)
+ {
+ error (0, errno,
+ _("%s: unable to determine maximum file name length"),
+ dir);
+ return false;
+ }
+ maxsize = MIN (size, SIZE_MAX);
+ }
+
+ if (maxsize <= filelen)
+ {
+ unsigned long int len = filelen;
+ unsigned long int maxlen = maxsize - 1;
+ error (0, 0, _("limit %lu exceeded by length %lu of file name %s"),
+ maxlen, len, quote (file));
+ return false;
+ }
+ }
+
+ /* Check whether pathconf (..., _PC_NAME_MAX) can be avoided, i.e.,
+ whether all file name components are so short that they are valid
+ in any file system on this platform. If CHECK_BASIC_PORTABILITY, though,
+ it's more convenient to check component lengths below. */
+
+ check_component_lengths = check_basic_portability;
+ if (! check_component_lengths && ! file_exists)
+ {
+ for (start = file; *(start = component_start (start)); )
+ {
+ size_t length = component_len (start);
+
+ if (NAME_MAX_MINIMUM < length)
+ {
+ check_component_lengths = true;
+ break;
+ }
+
+ start += length;
+ }
+ }
+
+ if (check_component_lengths)
+ {
+ /* The limit on file name components for the current component.
+ This defaults to NAME_MAX_MINIMUM, for the sake of non-POSIX
+ systems (NFS, say?) where pathconf fails on "." or "/" with
+ errno == ENOENT. */
+ size_t name_max = NAME_MAX_MINIMUM;
+
+ /* If nonzero, the known limit on file name components. */
+ size_t known_name_max = (check_basic_portability ? _POSIX_NAME_MAX : 0);
+
+ for (start = file; *(start = component_start (start)); )
+ {
+ size_t length;
+
+ if (known_name_max)
+ name_max = known_name_max;
+ else
+ {
+ long int len;
+ char const *dir = (start == file ? "." : file);
+ char c = *start;
+ errno = 0;
+ *start = '\0';
+ len = pathconf (dir, _PC_NAME_MAX);
+ *start = c;
+ if (0 <= len)
+ name_max = MIN (len, SIZE_MAX);
+ else
+ switch (errno)
+ {
+ case 0:
+ /* There is no limit. */
+ name_max = SIZE_MAX;
+ break;
+
+ case ENOENT:
+ /* DIR does not exist; use its parent's maximum. */
+ known_name_max = name_max;
+ break;
+
+ default:
+ *start = '\0';
+ error (0, errno, "%s", dir);
+ *start = c;
+ return false;
+ }
+ }
+
+ length = component_len (start);
+
+ if (name_max < length)
+ {
+ unsigned long int len = length;
+ unsigned long int maxlen = name_max;
+ char c = start[len];
+ start[len] = '\0';
+ error (0, 0,
+ _("limit %lu exceeded by length %lu "
+ "of file name component %s"),
+ maxlen, len, quote (start));
+ start[len] = c;
+ return false;
+ }
+
+ start += length;
+ }
+ }
+
+ return true;
+}
diff --git a/src/pinky.c b/src/pinky.c
new file mode 100644
index 0000000..885012b
--- /dev/null
+++ b/src/pinky.c
@@ -0,0 +1,623 @@
+/* GNU's pinky.
+ Copyright (C) 1992-1997, 1999-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Created by hacking who.c by Kaveh Ghazi ghazi@caip.rutgers.edu */
+
+#include <config.h>
+#include <getopt.h>
+#include <pwd.h>
+#include <stdio.h>
+
+#include <sys/types.h>
+#include "system.h"
+
+#include "canon-host.h"
+#include "error.h"
+#include "hard-locale.h"
+#include "inttostr.h"
+#include "readutmp.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "pinky"
+
+#define AUTHORS "Joseph Arceneaux", "David MacKenzie", "Kaveh Ghazi"
+
+#ifndef MAXHOSTNAMELEN
+# define MAXHOSTNAMELEN 64
+#endif
+
+char *ttyname ();
+
+/* The name this program was run with. */
+const char *program_name;
+
+/* If true, display the hours:minutes since each user has touched
+ the keyboard, or blank if within the last minute, or days followed
+ by a 'd' if not within the last day. */
+static bool include_idle = true;
+
+/* If true, display a line at the top describing each field. */
+static bool include_heading = true;
+
+/* if true, display the user's full name from pw_gecos. */
+static bool include_fullname = true;
+
+/* if true, display the user's ~/.project file when doing long format. */
+static bool include_project = true;
+
+/* if true, display the user's ~/.plan file when doing long format. */
+static bool include_plan = true;
+
+/* if true, display the user's home directory and shell
+ when doing long format. */
+static bool include_home_and_shell = true;
+
+/* if true, use the "short" output format. */
+static bool do_short_format = true;
+
+/* if true, display the ut_host field. */
+#ifdef HAVE_UT_HOST
+static bool include_where = true;
+#endif
+
+/* The strftime format to use for login times, and its expected
+ output width. */
+static char const *time_format;
+static int time_format_width;
+
+static struct option const longopts[] =
+{
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+/* Count and return the number of ampersands in STR. */
+
+static size_t
+count_ampersands (const char *str)
+{
+ size_t count = 0;
+ do
+ {
+ if (*str == '&')
+ count++;
+ } while (*str++);
+ return count;
+}
+
+/* Create a string (via xmalloc) which contains a full name by substituting
+ for each ampersand in GECOS_NAME the USER_NAME string with its first
+ character capitalized. The caller must ensure that GECOS_NAME contains
+ no `,'s. The caller also is responsible for free'ing the return value of
+ this function. */
+
+static char *
+create_fullname (const char *gecos_name, const char *user_name)
+{
+ size_t rsize = strlen (gecos_name) + 1;
+ char *result;
+ char *r;
+ size_t ampersands = count_ampersands (gecos_name);
+
+ if (ampersands != 0)
+ {
+ size_t ulen = strlen (user_name);
+ size_t product = ampersands * ulen;
+ rsize += product - ampersands;
+ if (xalloc_oversized (ulen, ampersands) || rsize < product)
+ xalloc_die ();
+ }
+
+ r = result = xmalloc (rsize);
+
+ while (*gecos_name)
+ {
+ if (*gecos_name == '&')
+ {
+ const char *uname = user_name;
+ if (islower (to_uchar (*uname)))
+ *r++ = toupper (to_uchar (*uname++));
+ while (*uname)
+ *r++ = *uname++;
+ }
+ else
+ {
+ *r++ = *gecos_name;
+ }
+
+ gecos_name++;
+ }
+ *r = 0;
+
+ return result;
+}
+
+/* Return a string representing the time between WHEN and the time
+ that this function is first run. */
+
+static const char *
+idle_string (time_t when)
+{
+ static time_t now = 0;
+ static char buf[INT_STRLEN_BOUND (long int) + 2];
+ time_t seconds_idle;
+
+ if (now == 0)
+ time (&now);
+
+ seconds_idle = now - when;
+ if (seconds_idle < 60) /* One minute. */
+ return " ";
+ if (seconds_idle < (24 * 60 * 60)) /* One day. */
+ {
+ int hours = seconds_idle / (60 * 60);
+ int minutes = (seconds_idle % (60 * 60)) / 60;
+ sprintf (buf, "%02d:%02d", hours, minutes);
+ }
+ else
+ {
+ unsigned long int days = seconds_idle / (24 * 60 * 60);
+ sprintf (buf, "%lud", days);
+ }
+ return buf;
+}
+
+/* Return a time string. */
+static const char *
+time_string (const STRUCT_UTMP *utmp_ent)
+{
+ static char buf[INT_STRLEN_BOUND (intmax_t) + sizeof "-%m-%d %H:%M"];
+
+ /* Don't take the address of UT_TIME_MEMBER directly.
+ Ulrich Drepper wrote:
+ ``... GNU libc (and perhaps other libcs as well) have extended
+ utmp file formats which do not use a simple time_t ut_time field.
+ In glibc, ut_time is a macro which selects for backward compatibility
+ the tv_sec member of a struct timeval value.'' */
+ time_t t = UT_TIME_MEMBER (utmp_ent);
+ struct tm *tmp = localtime (&t);
+
+ if (tmp)
+ {
+ strftime (buf, sizeof buf, time_format, tmp);
+ return buf;
+ }
+ else
+ return TYPE_SIGNED (time_t) ? imaxtostr (t, buf) : umaxtostr (t, buf);
+}
+
+/* Display a line of information about UTMP_ENT. */
+
+static void
+print_entry (const STRUCT_UTMP *utmp_ent)
+{
+ struct stat stats;
+ time_t last_change;
+ char mesg;
+
+#define DEV_DIR_WITH_TRAILING_SLASH "/dev/"
+#define DEV_DIR_LEN (sizeof (DEV_DIR_WITH_TRAILING_SLASH) - 1)
+
+ char line[sizeof (utmp_ent->ut_line) + DEV_DIR_LEN + 1];
+
+ /* Copy ut_line into LINE, prepending `/dev/' if ut_line is not
+ already an absolute file name. Some system may put the full,
+ absolute file name in ut_line. */
+ if (utmp_ent->ut_line[0] == '/')
+ {
+ strncpy (line, utmp_ent->ut_line, sizeof (utmp_ent->ut_line));
+ line[sizeof (utmp_ent->ut_line)] = '\0';
+ }
+ else
+ {
+ strcpy (line, DEV_DIR_WITH_TRAILING_SLASH);
+ strncpy (line + DEV_DIR_LEN, utmp_ent->ut_line, sizeof (utmp_ent->ut_line));
+ line[DEV_DIR_LEN + sizeof (utmp_ent->ut_line)] = '\0';
+ }
+
+ if (stat (line, &stats) == 0)
+ {
+ mesg = (stats.st_mode & S_IWGRP) ? ' ' : '*';
+ last_change = stats.st_atime;
+ }
+ else
+ {
+ mesg = '?';
+ last_change = 0;
+ }
+
+ printf ("%-8.*s", UT_USER_SIZE, UT_USER (utmp_ent));
+
+ if (include_fullname)
+ {
+ struct passwd *pw;
+ char name[UT_USER_SIZE + 1];
+
+ strncpy (name, UT_USER (utmp_ent), UT_USER_SIZE);
+ name[UT_USER_SIZE] = '\0';
+ pw = getpwnam (name);
+ if (pw == NULL)
+ printf (" %19s", " ???");
+ else
+ {
+ char *const comma = strchr (pw->pw_gecos, ',');
+ char *result;
+
+ if (comma)
+ *comma = '\0';
+
+ result = create_fullname (pw->pw_gecos, pw->pw_name);
+ printf (" %-19.19s", result);
+ free (result);
+ }
+ }
+
+ printf (" %c%-8.*s",
+ mesg, (int) sizeof (utmp_ent->ut_line), utmp_ent->ut_line);
+
+ if (include_idle)
+ {
+ if (last_change)
+ printf (" %-6s", idle_string (last_change));
+ else
+ printf (" %-6s", "???");
+ }
+
+ printf (" %s", time_string (utmp_ent));
+
+#ifdef HAVE_UT_HOST
+ if (include_where && utmp_ent->ut_host[0])
+ {
+ char ut_host[sizeof (utmp_ent->ut_host) + 1];
+ char *host = NULL;
+ char *display = NULL;
+
+ /* Copy the host name into UT_HOST, and ensure it's nul terminated. */
+ strncpy (ut_host, utmp_ent->ut_host, (int) sizeof (utmp_ent->ut_host));
+ ut_host[sizeof (utmp_ent->ut_host)] = '\0';
+
+ /* Look for an X display. */
+ display = strchr (ut_host, ':');
+ if (display)
+ *display++ = '\0';
+
+ if (*ut_host)
+ /* See if we can canonicalize it. */
+ host = canon_host (ut_host);
+ if ( ! host)
+ host = ut_host;
+
+ if (display)
+ printf (" %s:%s", host, display);
+ else
+ printf (" %s", host);
+
+ if (host != ut_host)
+ free (host);
+ }
+#endif
+
+ putchar ('\n');
+}
+
+/* Display a verbose line of information about UTMP_ENT. */
+
+static void
+print_long_entry (const char name[])
+{
+ struct passwd *pw;
+
+ pw = getpwnam (name);
+
+ printf (_("Login name: "));
+ printf ("%-28s", name);
+
+ printf (_("In real life: "));
+ if (pw == NULL)
+ {
+ printf (" %s", _("???\n"));
+ return;
+ }
+ else
+ {
+ char *const comma = strchr (pw->pw_gecos, ',');
+ char *result;
+
+ if (comma)
+ *comma = '\0';
+
+ result = create_fullname (pw->pw_gecos, pw->pw_name);
+ printf (" %s", result);
+ free (result);
+ }
+
+ putchar ('\n');
+
+ if (include_home_and_shell)
+ {
+ printf (_("Directory: "));
+ printf ("%-29s", pw->pw_dir);
+ printf (_("Shell: "));
+ printf (" %s", pw->pw_shell);
+ putchar ('\n');
+ }
+
+ if (include_project)
+ {
+ FILE *stream;
+ char buf[1024];
+ const char *const baseproject = "/.project";
+ char *const project =
+ xmalloc (strlen (pw->pw_dir) + strlen (baseproject) + 1);
+
+ strcpy (project, pw->pw_dir);
+ strcat (project, baseproject);
+
+ stream = fopen (project, "r");
+ if (stream)
+ {
+ size_t bytes;
+
+ printf (_("Project: "));
+
+ while ((bytes = fread (buf, 1, sizeof (buf), stream)) > 0)
+ fwrite (buf, 1, bytes, stdout);
+ fclose (stream);
+ }
+
+ free (project);
+ }
+
+ if (include_plan)
+ {
+ FILE *stream;
+ char buf[1024];
+ const char *const baseplan = "/.plan";
+ char *const plan =
+ xmalloc (strlen (pw->pw_dir) + strlen (baseplan) + 1);
+
+ strcpy (plan, pw->pw_dir);
+ strcat (plan, baseplan);
+
+ stream = fopen (plan, "r");
+ if (stream)
+ {
+ size_t bytes;
+
+ printf (_("Plan:\n"));
+
+ while ((bytes = fread (buf, 1, sizeof (buf), stream)) > 0)
+ fwrite (buf, 1, bytes, stdout);
+ fclose (stream);
+ }
+
+ free (plan);
+ }
+
+ putchar ('\n');
+}
+
+/* Print the username of each valid entry and the number of valid entries
+ in UTMP_BUF, which should have N elements. */
+
+static void
+print_heading (void)
+{
+ printf ("%-8s", _("Login"));
+ if (include_fullname)
+ printf (" %-19s", _("Name"));
+ printf (" %-9s", _(" TTY"));
+ if (include_idle)
+ printf (" %-6s", _("Idle"));
+ printf (" %-*s", time_format_width, _("When"));
+#ifdef HAVE_UT_HOST
+ if (include_where)
+ printf (" %s", _("Where"));
+#endif
+ putchar ('\n');
+}
+
+/* Display UTMP_BUF, which should have N entries. */
+
+static void
+scan_entries (size_t n, const STRUCT_UTMP *utmp_buf,
+ const int argc_names, char *const argv_names[])
+{
+ if (hard_locale (LC_TIME))
+ {
+ time_format = "%Y-%m-%d %H:%M";
+ time_format_width = 4 + 1 + 2 + 1 + 2 + 1 + 2 + 1 + 2;
+ }
+ else
+ {
+ time_format = "%b %e %H:%M";
+ time_format_width = 3 + 1 + 2 + 1 + 2 + 1 + 2;
+ }
+
+ if (include_heading)
+ print_heading ();
+
+ while (n--)
+ {
+ if (IS_USER_PROCESS (utmp_buf))
+ {
+ if (argc_names)
+ {
+ int i;
+
+ for (i = 0; i < argc_names; i++)
+ if (strncmp (UT_USER (utmp_buf), argv_names[i], UT_USER_SIZE)
+ == 0)
+ {
+ print_entry (utmp_buf);
+ break;
+ }
+ }
+ else
+ print_entry (utmp_buf);
+ }
+ utmp_buf++;
+ }
+}
+
+/* Display a list of who is on the system, according to utmp file FILENAME. */
+
+static void
+short_pinky (const char *filename,
+ const int argc_names, char *const argv_names[])
+{
+ size_t n_users;
+ STRUCT_UTMP *utmp_buf;
+
+ if (read_utmp (filename, &n_users, &utmp_buf, 0) != 0)
+ error (EXIT_FAILURE, errno, "%s", filename);
+
+ scan_entries (n_users, utmp_buf, argc_names, argv_names);
+}
+
+static void
+long_pinky (const int argc_names, char *const argv_names[])
+{
+ int i;
+
+ for (i = 0; i < argc_names; i++)
+ print_long_entry (argv_names[i]);
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]... [USER]...\n"), program_name);
+ fputs (_("\
+\n\
+ -l produce long format output for the specified USERs\n\
+ -b omit the user's home directory and shell in long format\n\
+ -h omit the user's project file in long format\n\
+ -p omit the user's plan file in long format\n\
+ -s do short format output, this is the default\n\
+"), stdout);
+ fputs (_("\
+ -f omit the line of column headings in short format\n\
+ -w omit the user's full name in short format\n\
+ -i omit the user's full name and remote host in short format\n\
+ -q omit the user's full name, remote host and idle time\n\
+ in short format\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\
+\n\
+A lightweight `finger' program; print user information.\n\
+The utmp file will be %s.\n\
+"), UTMP_FILE);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ int optc;
+ int n_users;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ while ((optc = getopt_long (argc, argv, "sfwiqbhlp", longopts, NULL)) != -1)
+ {
+ switch (optc)
+ {
+ case 's':
+ do_short_format = true;
+ break;
+
+ case 'l':
+ do_short_format = false;
+ break;
+
+ case 'f':
+ include_heading = false;
+ break;
+
+ case 'w':
+ include_fullname = false;
+ break;
+
+ case 'i':
+ include_fullname = false;
+#ifdef HAVE_UT_HOST
+ include_where = false;
+#endif
+ break;
+
+ case 'q':
+ include_fullname = false;
+#ifdef HAVE_UT_HOST
+ include_where = false;
+#endif
+ include_idle = false;
+ break;
+
+ case 'h':
+ include_project = false;
+ break;
+
+ case 'p':
+ include_plan = false;
+ break;
+
+ case 'b':
+ include_home_and_shell = false;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ n_users = argc - optind;
+
+ if (!do_short_format && n_users == 0)
+ {
+ error (0, 0, _("no username specified; at least one must be\
+ specified when using -l"));
+ usage (EXIT_FAILURE);
+ }
+
+ if (do_short_format)
+ short_pinky (UTMP_FILE, n_users, argv + optind);
+ else
+ long_pinky (n_users, argv + optind);
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/pr.c b/src/pr.c
new file mode 100644
index 0000000..e0aea22
--- /dev/null
+++ b/src/pr.c
@@ -0,0 +1,2878 @@
+/* pr -- convert text files for printing.
+ Copyright (C) 88, 91, 1995-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* By Pete TerMaat, with considerable refinement by Roland Huebner. */
+
+/* Things to watch: Sys V screws up on ...
+ pr -n -3 -s: /usr/dict/words
+ pr -m -o10 -n /usr/dict/words{,,,}
+ pr -6 -a -n -o5 /usr/dict/words
+
+ Ideas:
+
+ Keep a things_to_do list of functions to call when we know we have
+ something to print. Cleaner than current series of checks.
+
+ Improve the printing of control prefixes.
+
+ Expand the file name in the centered header line to a full file name.
+
+
+ Concept:
+
+ If the input_tab_char differs from the default value TAB
+ (`-e[CHAR[...]]' is used), any input text tab is expanded to the
+ default width of 8 spaces (compare char_to_clump). - Same as SunOS
+ does.
+
+ The treatment of the number_separator (compare add_line_number):
+ The default value TAB of the number_separator (`-n[SEP[...]]') doesn't
+ be thought to be an input character. An optional `-e'-input has no
+ effect.
+ - With single column output
+ only one POSIX requirement has to be met:
+ The default n-separator should be a TAB. The consequence is a
+ different width between the number and the text if the output position
+ of the separator changes, i.e. it depends upon the left margin used.
+ That's not nice but easy-to-use together with the defaults of other
+ utilities, e.g. sort or cut. - Same as SunOS does.
+ - With multicolumn output
+ two conflicting POSIX requirements exist:
+ First `default n-separator is TAB', second `output text columns shall
+ be of equal width'. Moreover POSIX specifies the number+separator a
+ part of the column, together with `-COLUMN' and `-a -COLUMN'.
+ (With -m output the number shall occupy each line only once. Exactly
+ the same situation as single column output exists.)
+ GNU pr gives priority to the 2nd requirement and observes POSIX
+ column definition. The n-separator TAB is expanded to the same number
+ of spaces in each column using the default value 8. Tabification is
+ only performed if it is compatible with the output position.
+ Consequence: The output text columns are of equal width. The layout
+ of a page does not change if the left margin varies. - Looks better
+ than the SunOS approach.
+ SunOS pr gives priority to the 1st requirement. n-separator TAB
+ width varies with each column. Only the width of text part of the
+ column is fixed.
+ Consequence: The output text columns don't have equal width. The
+ widths and the layout of the whole page varies with the left margin.
+ An overflow of the line length (without margin) over the input value
+ PAGE_WIDTH may occur.
+
+ The interference of the POSIX-compliant small letter options -w and -s:
+ (`interference' means `setting a _separator_ with -s switches off the
+ column sturctur and the default - not generally - page_width,
+ acts on -w option')
+ options: text form / separator: equivalent new options:
+ -w l -s[x]
+ --------------------------------------------------------------------
+ 1. -- -- columns / space --
+ trunc. to page_width = 72
+ 2. -- -s[:] full lines / TAB[:] -J --sep-string[="<TAB>"|:]
+ no truncation
+ 3. -w l -- columns / space -W l
+ trunc. to page_width = l
+ 4. -w l -s[:] columns / no sep.[:] -W l --sep-string[=:]
+ trunc. to page_width = l
+ --------------------------------------------------------------------
+
+
+ Options:
+
+ Including version 1.22i:
+ Some SMALL LETTER options has been redefined with the object of a
+ better POSIX compliance. The output of some further cases has been
+ adapted to other UNIXes. A violation of downward compatibility has to
+ be accepted.
+ Some NEW CAPITAL LETTER options ( -J, -S, -W) has been introduced to
+ turn off unexpected interferences of small letter options (-s and -w
+ together with the three column options).
+ -N option and the second argument LAST_PAGE of +FIRST_PAGE offer more
+ flexibility; The detailed handling of form feeds set in the input
+ files requires -T option.
+
+ Capital letter options dominate small letter ones.
+
+ Some of the option-arguments cannot be specified as separate arguments
+ from the preceding option letter (already stated in POSIX specification).
+
+ Form feeds in the input cause page breaks in the output. Multiple
+ form feeds produce empty pages.
+
+ +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]
+ begin [stop] printing with page FIRST_[LAST_]PAGE
+
+ -COLUMN, --columns=COLUMN
+ Produce output that is COLUMN columns wide and
+ print columns down, unless -a is used. Balance number of
+ lines in the columns on each page.
+
+ -a, --across Print columns across rather than down, used
+ together with -COLUMN. The input
+ one
+ two
+ three
+ four
+ will be printed with `-a -3' as
+ one two three
+ four
+
+ -b Balance columns on the last page.
+ -b is no longer an independent option. It's always used
+ together with -COLUMN (unless -a is used) to get a
+ consistent formulation with "FF set by hand" in input
+ files. Each formfeed found terminates the number of lines
+ to be read with the actual page. The situation for
+ printing columns down is equivalent to that on the last
+ page. So we need a balancing.
+
+ Keeping -b as an underground option guarantees some
+ downward compatibility. Utilities using pr with -b
+ (a most frequently used form) still work as usual.
+
+ -c, --show-control-chars
+ Print unprintable characters as control prefixes.
+ Control-g is printed as ^G (use hat notation) and
+ octal backslash notation.
+
+ -d, --double-space Double space the output.
+
+ -D FORMAT, --date-format=FORMAT Use FORMAT for the header date.
+
+ -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]
+ Expand tabs to spaces on input. Optional argument CHAR
+ is the input TAB character. (Default is TAB). Optional
+ argument WIDTH is the input TAB character's width.
+ (Default is 8.)
+
+ -F, -f, --form-feed Use formfeeds instead of newlines to separate
+ pages. A three line HEADER is used, no TRAILER with -F,
+ without -F both HEADER and TRAILER are made of five lines.
+
+ -h HEADER, --header=HEADER
+ Replace the filename in the header with the string HEADER.
+ A centered header is used.
+
+ -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]
+ Replace spaces with tabs on output. Optional argument
+ CHAR is the output TAB character. (Default is TAB).
+ Optional argument WIDTH is the output TAB character's
+ width. (Default is 8)
+
+ -J, --join-lines Merge lines of full length, turns off -W/-w
+ line truncation, no column alignment, --sep-string[=STRING]
+ sets separators, works with all column options
+ (-COLUMN | -a -COLUMN | -m).
+ -J has been introduced (together with -W and --sep-string) to
+ disentangle the old (POSIX compliant) options -w, -s
+ along with the 3 column options.
+
+ -l PAGE_LENGTH, --length=PAGE_LENGTH
+ Set the page length to PAGE_LENGTH lines. Default is 66,
+ including 5 lines of HEADER and 5 lines of TRAILER
+ without -F, but only 3 lines of HEADER and no TRAILER
+ with -F (i.e the number of text lines defaults to 56 or
+ 63 respectively).
+
+ -m, --merge Print files in parallel; pad_across_to align
+ columns; truncate lines and print separator strings;
+ Do it also with empty columns to get a continuous line
+ numbering and column marking by separators throughout
+ the whole merged file.
+
+ Empty pages in some input files produce empty columns
+ [marked by separators] in the merged pages. Completely
+ empty merged pages show no column separators at all.
+
+ The layout of a merged page is ruled by the largest form
+ feed distance of the single pages at that page. Shorter
+ columns will be filled up with empty lines.
+
+ Together with -J option join lines of full length and
+ set separators when -S option is used.
+
+ -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]
+ Provide DIGITS digit line numbering (default for DIGITS
+ is 5). With multicolumn output the number occupies the
+ first DIGITS column positions of each text column or only
+ each line of -m output.
+ With single column output the number precedes each line
+ just as -m output.
+ Optional argument SEP is the character appended to the
+ line number to separate it from the text followed.
+ The default separator is a TAB. In a strict sense a TAB
+ is always printed with single column output only. The
+ TAB-width varies with the TAB-position, e.g. with the
+ left margin specified by -o option.
+ With multicolumn output priority is given to `equal width
+ of output columns' (a POSIX specification). The TAB-width
+ is fixed to the value of the 1st column and does not
+ change with different values of left margin. That means a
+ fixed number of spaces is always printed in the place of
+ a TAB. The tabification depends upon the output
+ position.
+
+ Default counting of the line numbers starts with 1st
+ line of the input file (not the 1st line printed,
+ compare the --page option and -N option).
+
+ -N NUMBER, --first-line-number=NUMBER
+ Start line counting with the number NUMBER at the 1st
+ line of first page printed (mostly not the 1st line of
+ the input file).
+
+ -o MARGIN, --indent=MARGIN
+ Offset each line with a margin MARGIN spaces wide.
+ Total page width is the size of the margin plus the
+ PAGE_WIDTH set with -W/-w option.
+
+ -r, --no-file-warnings
+ Omit warning when a file cannot be opened.
+
+ -s[CHAR], --separator[=CHAR]
+ Separate columns by a single character CHAR, default for
+ CHAR is the TAB character without -w and 'no char' with -w.
+ Without `-s' default separator `space' is set.
+ -s[CHAR] turns off line truncation of all 3 column options
+ (-COLUMN|-a -COLUMN|-m) except -w is set. That is a POSIX
+ compliant formulation. The source code translates -s into
+ the new options -S and -J, also -W if required.
+
+ -S STRING, --sep-string[=STRING]
+ Separate columns by any string STRING. The -S option
+ doesn't react upon the -W/-w option (unlike -s option
+ does). It defines a separator nothing else.
+ Without -S: Default separator TAB is used with -J and
+ `space' otherwise (same as -S" ").
+ With -S "": No separator is used.
+ Quotes should be used with blanks and some shell active
+ characters.
+ -S is problematic because in its obsolete form you
+ cannot use -S "STRING", but in its standard form you
+ must use -S "STRING" if STRING is empty. Use
+ --sep-string to avoid the ambiguity.
+
+ -t, --omit-header Do not print headers or footers but retain form
+ feeds set in the input files.
+
+ -T, --omit-pagination
+ Do not print headers or footers, eliminate any pagination
+ by form feeds set in the input files.
+
+ -v, --show-nonprinting
+ Print unprintable characters as escape sequences. Use
+ octal backslash notation. Control-G becomes \007.
+
+ -w PAGE_WIDTH, --width=PAGE_WIDTH
+ Set page width to PAGE_WIDTH characters for multiple
+ text-column output only (default for PAGE_WIDTH is 72).
+ -s[CHAR] turns off the default page width and any line
+ truncation. Lines of full length will be merged,
+ regardless of the column options set. A POSIX compliant
+ formulation.
+
+ -W PAGE_WIDTH, --page-width=PAGE_WIDTH
+ Set the page width to PAGE_WIDTH characters. That's valid
+ with and without a column option. Text lines will be
+ truncated, unless -J is used. Together with one of the
+ column options (-COLUMN| -a -COLUMN| -m) column alignment
+ is always used.
+ Default is 72 characters.
+ Without -W PAGE_WIDTH
+ - but with one of the column options default truncation of
+ 72 characters is used (to keep downward compatibility
+ and to simplify most frequently met column tasks).
+ Column alignment and column separators are used.
+ - and without any of the column options NO line truncation
+ is used (to keep downward compatibility and to meet most
+ frequent tasks). That's equivalent to -W 72 -J .
+
+ With/without -W PAGE_WIDTH the header line is always
+ truncated to avoid line overflow.
+
+ (In pr versions newer than 1.14 -S option does no longer
+ affect -W option.)
+
+*/
+
+
+#include <config.h>
+
+#include <getopt.h>
+#include <sys/types.h>
+#include "system.h"
+#include "error.h"
+#include "hard-locale.h"
+#include "inttostr.h"
+#include "mbswidth.h"
+#include "quote.h"
+#include "stat-time.h"
+#include "stdio--.h"
+#include "strftime.h"
+#include "xstrtol.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "pr"
+
+#define AUTHORS "Pete TerMaat", "Roland Huebner"
+
+/* Used with start_position in the struct COLUMN described below.
+ If start_position == ANYWHERE, we aren't truncating columns and
+ can begin printing a column anywhere. Otherwise we must pad to
+ the horizontal position start_position. */
+#define ANYWHERE 0
+
+/* Each column has one of these structures allocated for it.
+ If we're only dealing with one file, fp is the same for all
+ columns.
+
+ The general strategy is to spend time setting up these column
+ structures (storing columns if necessary), after which printing
+ is a matter of flitting from column to column and calling
+ print_func.
+
+ Parallel files, single files printing across in multiple
+ columns, and single files printing down in multiple columns all
+ fit the same printing loop.
+
+ print_func Function used to print lines in this column.
+ If we're storing this column it will be
+ print_stored(), Otherwise it will be read_line().
+
+ char_func Function used to process characters in this column.
+ If we're storing this column it will be store_char(),
+ otherwise it will be print_char().
+
+ current_line Index of the current entry in line_vector, which
+ contains the index of the first character of the
+ current line in buff[].
+
+ lines_stored Number of lines in this column which are stored in
+ buff.
+
+ lines_to_print If we're storing this column, lines_to_print is
+ the number of stored_lines which remain to be
+ printed. Otherwise it is the number of lines
+ we can print without exceeding lines_per_body.
+
+ start_position The horizontal position we want to be in before we
+ print the first character in this column.
+
+ numbered True means precede this column with a line number. */
+
+/* FIXME: There are many unchecked integer overflows in this file,
+ that will cause this command to misbehave given large inputs or
+ options. Many of the "int" values below should be "size_t" or
+ something else like that. */
+
+struct COLUMN;
+struct COLUMN
+ {
+ FILE *fp; /* Input stream for this column. */
+ char const *name; /* File name. */
+ enum
+ {
+ OPEN,
+ FF_FOUND, /* used with -b option, set with \f, changed
+ to ON_HOLD after print_header */
+ ON_HOLD, /* Hit a form feed. */
+ CLOSED
+ }
+ status; /* Status of the file pointer. */
+
+ /* Func to print lines in this col. */
+ bool (*print_func) (struct COLUMN *);
+
+ /* Func to print/store chars in this col. */
+ void (*char_func) (char);
+
+ int current_line; /* Index of current place in line_vector. */
+ int lines_stored; /* Number of lines stored in buff. */
+ int lines_to_print; /* No. lines stored or space left on page. */
+ int start_position; /* Horizontal position of first char. */
+ bool numbered;
+ bool full_page_printed; /* True means printed without a FF found. */
+
+ /* p->full_page_printed controls a special case of "FF set by hand":
+ True means a full page has been printed without FF found. To avoid an
+ additional empty page we have to ignore a FF immediately following in
+ the next line. */
+ };
+
+typedef struct COLUMN COLUMN;
+
+#define NULLCOL (COLUMN *)0
+
+static int char_to_clump (char c);
+static bool read_line (COLUMN *p);
+static bool print_page (void);
+static bool print_stored (COLUMN *p);
+static bool open_file (char *name, COLUMN *p);
+static bool skip_to_page (uintmax_t page);
+static void print_header (void);
+static void pad_across_to (int position);
+static void add_line_number (COLUMN *p);
+static void getoptarg (char *arg, char switch_char, char *character,
+ int *number);
+void usage (int status);
+static void print_files (int number_of_files, char **av);
+static void init_parameters (int number_of_files);
+static void init_header (char const *filename, int desc);
+static bool init_fps (int number_of_files, char **av);
+static void init_funcs (void);
+static void init_store_cols (void);
+static void store_columns (void);
+static void balance (int total_stored);
+static void store_char (char c);
+static void pad_down (int lines);
+static void read_rest_of_line (COLUMN *p);
+static void skip_read (COLUMN *p, int column_number);
+static void print_char (char c);
+static void cleanup (void);
+static void print_sep_string (void);
+static void separator_string (const char *optarg_S);
+
+/* The name under which this program was invoked. */
+char *program_name;
+
+/* All of the columns to print. */
+static COLUMN *column_vector;
+
+/* When printing a single file in multiple downward columns,
+ we store the leftmost columns contiguously in buff.
+ To print a line from buff, get the index of the first character
+ from line_vector[i], and print up to line_vector[i + 1]. */
+static char *buff;
+
+/* Index of the position in buff where the next character
+ will be stored. */
+static int buff_current;
+
+/* The number of characters in buff.
+ Used for allocation of buff and to detect overflow of buff. */
+static size_t buff_allocated;
+
+/* Array of indices into buff.
+ Each entry is an index of the first character of a line.
+ This is used when storing lines to facilitate shuffling when
+ we do column balancing on the last page. */
+static int *line_vector;
+
+/* Array of horizonal positions.
+ For each line in line_vector, end_vector[line] is the horizontal
+ position we are in after printing that line. We keep track of this
+ so that we know how much we need to pad to prepare for the next
+ column. */
+static int *end_vector;
+
+/* (-m) True means we're printing multiple files in parallel. */
+static bool parallel_files = false;
+
+/* (-m) True means a line starts with some empty columns (some files
+ already CLOSED or ON_HOLD) which we have to align. */
+static bool align_empty_cols;
+
+/* (-m) True means we have not yet found any printable column in a line.
+ align_empty_cols = true has to be maintained. */
+static bool empty_line;
+
+/* (-m) False means printable column output precedes a form feed found.
+ Column alignment is done only once. No additional action with that form
+ feed.
+ True means we found only a form feed in a column. Maybe we have to do
+ some column alignment with that form feed. */
+static bool FF_only;
+
+/* (-[0-9]+) True means we're given an option explicitly specifying
+ number of columns. Used to detect when this option is used with -m
+ and when translating old options to new/long options. */
+static bool explicit_columns = false;
+
+/* (-t|-T) False means we aren't printing headers and footers. */
+static bool extremities = true;
+
+/* (-t) True means we retain all FF set by hand in input files.
+ False is set with -T option. */
+static bool keep_FF = false;
+static bool print_a_FF = false;
+
+/* True means we need to print a header as soon as we know we've got input
+ to print after it. */
+static bool print_a_header;
+
+/* (-f) True means use formfeeds instead of newlines to separate pages. */
+static bool use_form_feed = false;
+
+/* True means we have read the standard input. */
+static bool have_read_stdin = false;
+
+/* True means the -a flag has been given. */
+static bool print_across_flag = false;
+
+/* True means we're printing one file in multiple (>1) downward columns. */
+static bool storing_columns = true;
+
+/* (-b) True means balance columns on the last page as Sys V does. */
+/* That's no longer an independent option. With storing_columns = true
+ balance_columns = true is used too (s. function init_parameters).
+ We get a consistent formulation with "FF set by hand" in input files. */
+static bool balance_columns = false;
+
+/* (-l) Number of lines on a page, including header and footer lines. */
+static int lines_per_page = 66;
+
+/* Number of lines in the header and footer can be reset to 0 using
+ the -t flag. */
+static int lines_per_header = 5;
+static int lines_per_body;
+static int lines_per_footer = 5;
+
+/* (-w|-W) Width in characters of the page. Does not include the width of
+ the margin. */
+static int chars_per_line = 72;
+
+/* (-w|W) True means we truncate lines longer than chars_per_column. */
+static bool truncate_lines = false;
+
+/* (-J) True means we join lines without any line truncation. -J
+ dominates -w option. */
+static bool join_lines = false;
+
+/* Number of characters in a column. Based on col_sep_length and
+ page width. */
+static int chars_per_column;
+
+/* (-e) True means convert tabs to spaces on input. */
+static bool untabify_input = false;
+
+/* (-e) The input tab character. */
+static char input_tab_char = '\t';
+
+/* (-e) Tabstops are at chars_per_tab, 2*chars_per_tab, 3*chars_per_tab, ...
+ where the leftmost column is 1. */
+static int chars_per_input_tab = 8;
+
+/* (-i) True means convert spaces to tabs on output. */
+static bool tabify_output = false;
+
+/* (-i) The output tab character. */
+static char output_tab_char = '\t';
+
+/* (-i) The width of the output tab. */
+static int chars_per_output_tab = 8;
+
+/* Keeps track of pending white space. When we hit a nonspace
+ character after some whitespace, we print whitespace, tabbing
+ if necessary to get to output_position + spaces_not_printed. */
+static int spaces_not_printed;
+
+/* (-o) Number of spaces in the left margin (tabs used when possible). */
+static int chars_per_margin = 0;
+
+/* Position where the next character will fall.
+ Leftmost position is 0 + chars_per_margin.
+ Rightmost position is chars_per_margin + chars_per_line - 1.
+ This is important for converting spaces to tabs on output. */
+static int output_position;
+
+/* Horizontal position relative to the current file.
+ (output_position depends on where we are on the page;
+ input_position depends on where we are in the file.)
+ Important for converting tabs to spaces on input. */
+static int input_position;
+
+/* True if there were any failed opens so we can exit with nonzero
+ status. */
+static bool failed_opens = false;
+
+/* The number of spaces taken up if we print a tab character with width
+ c_ from position h_. */
+#define TAB_WIDTH(c_, h_) ((c_) - ((h_) % (c_)))
+
+/* The horizontal position we'll be at after printing a tab character
+ of width c_ from the position h_. */
+#define POS_AFTER_TAB(c_, h_) ((h_) + TAB_WIDTH (c_, h_))
+
+/* (-NNN) Number of columns of text to print. */
+static int columns = 1;
+
+/* (+NNN:MMM) Page numbers on which to begin and stop printing.
+ first_page_number = 0 will be used to check input only. */
+static uintmax_t first_page_number = 0;
+static uintmax_t last_page_number = UINTMAX_MAX;
+
+/* Number of files open (not closed, not on hold). */
+static int files_ready_to_read = 0;
+
+/* Current page number. Displayed in header. */
+static uintmax_t page_number;
+
+/* Current line number. Displayed when -n flag is specified.
+
+ When printing files in parallel (-m flag), line numbering is as follows:
+ 1 foo goo moo
+ 2 hoo too zoo
+
+ When printing files across (-a flag), ...
+ 1 foo 2 moo 3 goo
+ 4 hoo 5 too 6 zoo
+
+ Otherwise, line numbering is as follows:
+ 1 foo 3 goo 5 too
+ 2 moo 4 hoo 6 zoo */
+static int line_number;
+
+/* With line_number overflow, we use power_10 to cut off the higher-order
+ digits of the line_number */
+static int power_10;
+
+/* (-n) True means lines should be preceded by numbers. */
+static bool numbered_lines = false;
+
+/* (-n) Character which follows each line number. */
+static char number_separator = '\t';
+
+/* (-n) line counting starts with 1st line of input file (not with 1st
+ line of 1st page printed). */
+static int line_count = 1;
+
+/* (-n) True means counting of skipped lines starts with 1st line of
+ input file. False means -N option is used in addition, counting of
+ skipped lines not required. */
+static bool skip_count = true;
+
+/* (-N) Counting starts with start_line_number = NUMBER at 1st line of
+ first page printed, usually not 1st page of input file. */
+static int start_line_num = 1;
+
+/* (-n) Width in characters of a line number. */
+static int chars_per_number = 5;
+
+/* Used when widening the first column to accommodate numbers -- only
+ needed when printing files in parallel. Includes width of both the
+ number and the number_separator. */
+static int number_width;
+
+/* Buffer sprintf uses to format a line number. */
+static char *number_buff;
+
+/* (-v) True means unprintable characters are printed as escape sequences.
+ control-g becomes \007. */
+static bool use_esc_sequence = false;
+
+/* (-c) True means unprintable characters are printed as control prefixes.
+ control-g becomes ^G. */
+static bool use_cntrl_prefix = false;
+
+/* (-d) True means output is double spaced. */
+static bool double_space = false;
+
+/* Number of files opened initially in init_files. Should be 1
+ unless we're printing multiple files in parallel. */
+static int total_files = 0;
+
+/* (-r) True means don't complain if we can't open a file. */
+static bool ignore_failed_opens = false;
+
+/* (-S) True means we separate columns with a specified string.
+ -S option does not affect line truncation nor column alignment. */
+static bool use_col_separator = false;
+
+/* String used to separate columns if the -S option has been specified.
+ Default without -S but together with one of the column options
+ -a|COLUMN|-m is a `space' and with the -J option a `tab'. */
+static char *col_sep_string = "";
+static int col_sep_length = 0;
+static char *column_separator = " ";
+static char *line_separator = "\t";
+
+/* Number of separator characters waiting to be printed as soon as we
+ know that we have any input remaining to be printed. */
+static int separators_not_printed;
+
+/* Position we need to pad to, as soon as we know that we have input
+ remaining to be printed. */
+static int padding_not_printed;
+
+/* True means we should pad the end of the page. Remains false until we
+ know we have a page to print. */
+static bool pad_vertically;
+
+/* (-h) String of characters used in place of the filename in the header. */
+static char *custom_header;
+
+/* (-D) Date format for the header. */
+static char const *date_format;
+
+/* Date and file name for the header. */
+static char *date_text;
+static char const *file_text;
+
+/* Output columns available, not counting the date and file name. */
+static int header_width_available;
+
+static char *clump_buff;
+
+/* True means we read the line no. lines_per_body in skip_read
+ called by skip_to_page. That variable controls the coincidence of a
+ "FF set by hand" and "full_page_printed", see above the definition of
+ structure COLUMN. */
+static bool last_line = false;
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ COLUMNS_OPTION = CHAR_MAX + 1,
+ PAGES_OPTION
+};
+
+static char const short_options[] =
+ "-0123456789D:FJN:S::TW:abcde::fh:i::l:mn::o:rs::tvw:";
+
+static struct option const long_options[] =
+{
+ {"pages", required_argument, NULL, PAGES_OPTION},
+ {"columns", required_argument, NULL, COLUMNS_OPTION},
+ {"across", no_argument, NULL, 'a'},
+ {"show-control-chars", no_argument, NULL, 'c'},
+ {"double-space", no_argument, NULL, 'd'},
+ {"date-format", required_argument, NULL, 'D'},
+ {"expand-tabs", optional_argument, NULL, 'e'},
+ {"form-feed", no_argument, NULL, 'f'},
+ {"header", required_argument, NULL, 'h'},
+ {"output-tabs", optional_argument, NULL, 'i'},
+ {"join-lines", no_argument, NULL, 'J'},
+ {"length", required_argument, NULL, 'l'},
+ {"merge", no_argument, NULL, 'm'},
+ {"number-lines", optional_argument, NULL, 'n'},
+ {"first-line-number", required_argument, NULL, 'N'},
+ {"indent", required_argument, NULL, 'o'},
+ {"no-file-warnings", no_argument, NULL, 'r'},
+ {"separator", optional_argument, NULL, 's'},
+ {"sep-string", optional_argument, NULL, 'S'},
+ {"omit-header", no_argument, NULL, 't'},
+ {"omit-pagination", no_argument, NULL, 'T'},
+ {"show-nonprinting", no_argument, NULL, 'v'},
+ {"width", required_argument, NULL, 'w'},
+ {"page-width", required_argument, NULL, 'W'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+/* Return the number of columns that have either an open file or
+ stored lines. */
+
+static int
+cols_ready_to_print (void)
+{
+ COLUMN *q;
+ int i;
+ int n;
+
+ n = 0;
+ for (q = column_vector, i = 0; i < columns; ++q, ++i)
+ if (q->status == OPEN ||
+ q->status == FF_FOUND || /* With -b: To print a header only */
+ (storing_columns && q->lines_stored > 0 && q->lines_to_print > 0))
+ ++n;
+ return n;
+}
+
+/* Estimate first_ / last_page_number
+ using option +FIRST_PAGE:LAST_PAGE */
+
+static bool
+first_last_page (char const *pages)
+{
+ char *p;
+ uintmax_t first;
+ uintmax_t last = UINTMAX_MAX;
+ strtol_error err = xstrtoumax (pages, &p, 10, &first, "");
+ if (err != LONGINT_OK && err != LONGINT_INVALID_SUFFIX_CHAR)
+ _STRTOL_ERROR (EXIT_FAILURE, pages, _("page range"), err);
+
+ if (p == pages || !first)
+ return false;
+
+ if (*p == ':')
+ {
+ char const *p1 = p + 1;
+ err = xstrtoumax (p1, &p, 10, &last, "");
+ if (err != LONGINT_OK)
+ _STRTOL_ERROR (EXIT_FAILURE, pages, _("page range"), err);
+ if (p1 == p || last < first)
+ return false;
+ }
+
+ if (*p)
+ return false;
+
+ first_page_number = first;
+ last_page_number = last;
+ return true;
+}
+
+/* Parse column count string S, and if it's valid (1 or larger and
+ within range of the type of `columns') set the global variables
+ columns and explicit_columns and return true.
+ Otherwise, exit with a diagnostic. */
+static void
+parse_column_count (char const *s)
+{
+ long int tmp_long;
+ if (xstrtol (s, NULL, 10, &tmp_long, "") != LONGINT_OK
+ || !(1 <= tmp_long && tmp_long <= INT_MAX))
+ error (EXIT_FAILURE, 0,
+ _("invalid number of columns: %s"), quote (s));
+
+ columns = tmp_long;
+ explicit_columns = true;
+}
+
+/* Estimate length of col_sep_string with option -S. */
+
+static void
+separator_string (const char *optarg_S)
+{
+ col_sep_length = (int) strlen (optarg_S);
+ col_sep_string = xmalloc (col_sep_length + 1);
+ strcpy (col_sep_string, optarg_S);
+}
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ int n_files;
+ bool old_options = false;
+ bool old_w = false;
+ bool old_s = false;
+ char **file_names;
+
+ /* Accumulate the digits of old-style options like -99. */
+ char *column_count_string = NULL;
+ size_t n_digits = 0;
+ size_t n_alloc = 0;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ n_files = 0;
+ file_names = (argc > 1
+ ? xmalloc ((argc - 1) * sizeof (char *))
+ : NULL);
+
+ while ((c = getopt_long (argc, argv, short_options, long_options, NULL))
+ != -1)
+ {
+ if (ISDIGIT (c))
+ {
+ /* Accumulate column-count digits specified via old-style options. */
+ if (n_digits + 1 >= n_alloc)
+ column_count_string
+ = X2REALLOC (column_count_string, &n_alloc);
+ column_count_string[n_digits++] = c;
+ column_count_string[n_digits] = '\0';
+ continue;
+ }
+
+ n_digits = 0;
+
+ switch (c)
+ {
+ case 1: /* Non-option argument. */
+ /* long option --page dominates old `+FIRST_PAGE ...'. */
+ if (! (first_page_number == 0
+ && *optarg == '+' && first_last_page (optarg + 1)))
+ file_names[n_files++] = optarg;
+ break;
+
+ case PAGES_OPTION: /* --pages=FIRST_PAGE[:LAST_PAGE] */
+ { /* dominates old opt +... */
+ if (! optarg)
+ error (EXIT_FAILURE, 0,
+ _("`--pages=FIRST_PAGE[:LAST_PAGE]' missing argument"));
+ else if (! first_last_page (optarg))
+ error (EXIT_FAILURE, 0, _("Invalid page range %s"),
+ quote (optarg));
+ break;
+ }
+
+ case COLUMNS_OPTION: /* --columns=COLUMN */
+ {
+ parse_column_count (optarg);
+
+ /* If there was a prior column count specified via the
+ short-named option syntax, e.g., -9, ensure that this
+ long-name-specified value overrides it. */
+ free (column_count_string);
+ column_count_string = NULL;
+ n_alloc = 0;
+ break;
+ }
+
+ case 'a':
+ print_across_flag = true;
+ storing_columns = false;
+ break;
+ case 'b':
+ balance_columns = true;
+ break;
+ case 'c':
+ use_cntrl_prefix = true;
+ break;
+ case 'd':
+ double_space = true;
+ break;
+ case 'D':
+ date_format = optarg;
+ break;
+ case 'e':
+ if (optarg)
+ getoptarg (optarg, 'e', &input_tab_char,
+ &chars_per_input_tab);
+ /* Could check tab width > 0. */
+ untabify_input = true;
+ break;
+ case 'f':
+ case 'F':
+ use_form_feed = true;
+ break;
+ case 'h':
+ custom_header = optarg;
+ break;
+ case 'i':
+ if (optarg)
+ getoptarg (optarg, 'i', &output_tab_char,
+ &chars_per_output_tab);
+ /* Could check tab width > 0. */
+ tabify_output = true;
+ break;
+ case 'J':
+ join_lines = true;
+ break;
+ case 'l':
+ {
+ long int tmp_long;
+ if (xstrtol (optarg, NULL, 10, &tmp_long, "") != LONGINT_OK
+ || tmp_long <= 0 || tmp_long > INT_MAX)
+ {
+ error (EXIT_FAILURE, 0,
+ _("`-l PAGE_LENGTH' invalid number of lines: %s"),
+ quote (optarg));
+ }
+ lines_per_page = tmp_long;
+ break;
+ }
+ case 'm':
+ parallel_files = true;
+ storing_columns = false;
+ break;
+ case 'n':
+ numbered_lines = true;
+ if (optarg)
+ getoptarg (optarg, 'n', &number_separator,
+ &chars_per_number);
+ break;
+ case 'N':
+ skip_count = false;
+ {
+ long int tmp_long;
+ if (xstrtol (optarg, NULL, 10, &tmp_long, "") != LONGINT_OK
+ || tmp_long > INT_MAX)
+ {
+ error (EXIT_FAILURE, 0,
+ _("`-N NUMBER' invalid starting line number: %s"),
+ quote (optarg));
+ }
+ start_line_num = tmp_long;
+ break;
+ }
+ case 'o':
+ {
+ long int tmp_long;
+ if (xstrtol (optarg, NULL, 10, &tmp_long, "") != LONGINT_OK
+ || tmp_long < 0 || tmp_long > INT_MAX)
+ error (EXIT_FAILURE, 0,
+ _("`-o MARGIN' invalid line offset: %s"), quote (optarg));
+ chars_per_margin = tmp_long;
+ break;
+ }
+ case 'r':
+ ignore_failed_opens = true;
+ break;
+ case 's':
+ old_options = true;
+ old_s = true;
+ if (!use_col_separator && optarg)
+ separator_string (optarg);
+ break;
+ case 'S':
+ old_s = false;
+ /* Reset an additional input of -s, -S dominates -s */
+ col_sep_string = "";
+ col_sep_length = 0;
+ use_col_separator = true;
+ if (optarg)
+ separator_string (optarg);
+ break;
+ case 't':
+ extremities = false;
+ keep_FF = true;
+ break;
+ case 'T':
+ extremities = false;
+ keep_FF = false;
+ break;
+ case 'v':
+ use_esc_sequence = true;
+ break;
+ case 'w':
+ old_options = true;
+ old_w = true;
+ {
+ long int tmp_long;
+ if (xstrtol (optarg, NULL, 10, &tmp_long, "") != LONGINT_OK
+ || tmp_long <= 0 || tmp_long > INT_MAX)
+ error (EXIT_FAILURE, 0,
+ _("`-w PAGE_WIDTH' invalid number of characters: %s"),
+ quote (optarg));
+ if (!truncate_lines)
+ chars_per_line = tmp_long;
+ break;
+ }
+ case 'W':
+ old_w = false; /* dominates -w */
+ truncate_lines = true;
+ {
+ long int tmp_long;
+ if (xstrtol (optarg, NULL, 10, &tmp_long, "") != LONGINT_OK
+ || tmp_long <= 0 || tmp_long > INT_MAX)
+ error (EXIT_FAILURE, 0,
+ _("`-W PAGE_WIDTH' invalid number of characters: %s"),
+ quote (optarg));
+ chars_per_line = tmp_long;
+ break;
+ }
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ usage (EXIT_FAILURE);
+ break;
+ }
+ }
+
+ if (column_count_string)
+ {
+ parse_column_count (column_count_string);
+ free (column_count_string);
+ }
+
+ if (! date_format)
+ date_format = (getenv ("POSIXLY_CORRECT") && !hard_locale (LC_TIME)
+ ? "%b %e %H:%M %Y"
+ : "%Y-%m-%d %H:%M");
+
+ /* Now we can set a reasonable initial value: */
+ if (first_page_number == 0)
+ first_page_number = 1;
+
+ if (parallel_files & explicit_columns)
+ error (EXIT_FAILURE, 0,
+ _("Cannot specify number of columns when printing in parallel."));
+
+ if (parallel_files & print_across_flag)
+ error (EXIT_FAILURE, 0,
+ _("Cannot specify both printing across and printing in parallel."));
+
+/* Translate some old short options to new/long options.
+ To meet downward compatibility with other UNIX pr utilities
+ and some POSIX specifications. */
+
+ if (old_options)
+ {
+ if (old_w)
+ {
+ if (parallel_files | explicit_columns)
+ {
+ /* activate -W */
+ truncate_lines = true;
+ if (old_s)
+ /* adapt HP-UX and SunOS: -s = no separator;
+ activate -S */
+ use_col_separator = true;
+ }
+ else
+ /* old -w sets width with columns only
+ activate -J */
+ join_lines = true;
+ }
+ else if (!use_col_separator)
+ {
+ /* No -S option read */
+ if (old_s & (parallel_files | explicit_columns))
+ {
+ if (!truncate_lines)
+ {
+ /* old -s (without -w and -W) annuls column alignment,
+ uses fields, activate -J */
+ join_lines = true;
+ if (col_sep_length > 0)
+ /* activate -S */
+ use_col_separator = true;
+ }
+ else
+ /* with -W */
+ /* adapt HP-UX and SunOS: -s = no separator;
+ activate -S */
+ use_col_separator = true;
+ }
+ }
+ }
+
+ for (; optind < argc; optind++)
+ {
+ file_names[n_files++] = argv[optind];
+ }
+
+ if (n_files == 0)
+ {
+ /* No file arguments specified; read from standard input. */
+ print_files (0, NULL);
+ }
+ else
+ {
+ if (parallel_files)
+ print_files (n_files, file_names);
+ else
+ {
+ int i;
+ for (i = 0; i < n_files; i++)
+ print_files (1, &file_names[i]);
+ }
+ }
+
+ cleanup ();
+
+ if (have_read_stdin && fclose (stdin) == EOF)
+ error (EXIT_FAILURE, errno, _("standard input"));
+ if (failed_opens)
+ exit (EXIT_FAILURE);
+ exit (EXIT_SUCCESS);
+}
+
+/* Parse options of the form -scNNN.
+
+ Example: -nck, where 'n' is the option, c is the optional number
+ separator, and k is the optional width of the field used when printing
+ a number. */
+
+static void
+getoptarg (char *arg, char switch_char, char *character, int *number)
+{
+ if (!ISDIGIT (*arg))
+ *character = *arg++;
+ if (*arg)
+ {
+ long int tmp_long;
+ if (xstrtol (arg, NULL, 10, &tmp_long, "") != LONGINT_OK
+ || tmp_long <= 0 || tmp_long > INT_MAX)
+ {
+ error (0, 0,
+ _("`-%c' extra characters or invalid number in the argument: %s"),
+ switch_char, quote (arg));
+ usage (EXIT_FAILURE);
+ }
+ *number = tmp_long;
+ }
+}
+
+/* Set parameters related to formatting. */
+
+static void
+init_parameters (int number_of_files)
+{
+ int chars_used_by_number = 0;
+
+ if (use_form_feed)
+ {
+ lines_per_header = 3;
+ lines_per_footer = 0;
+ }
+
+ lines_per_body = lines_per_page - lines_per_header - lines_per_footer;
+ if (lines_per_body <= 0)
+ {
+ extremities = false;
+ keep_FF = true;
+ }
+ if (extremities == false)
+ lines_per_body = lines_per_page;
+
+ if (double_space)
+ lines_per_body = lines_per_body / 2;
+
+ /* If input is stdin, cannot print parallel files. BSD dumps core
+ on this. */
+ if (number_of_files == 0)
+ parallel_files = false;
+
+ if (parallel_files)
+ columns = number_of_files;
+
+ /* One file, multi columns down: -b option is set to get a consistent
+ formulation with "FF set by hand" in input files. */
+ if (storing_columns)
+ balance_columns = true;
+
+ /* Tabification is assumed for multiple columns. */
+ if (columns > 1)
+ {
+ if (!use_col_separator)
+ {
+ /* Use default separator */
+ if (join_lines)
+ col_sep_string = line_separator;
+ else
+ col_sep_string = column_separator;
+
+ col_sep_length = 1;
+ use_col_separator = true;
+ }
+ /* It's rather pointless to define a TAB separator with column
+ alignment */
+ else if (!join_lines && *col_sep_string == '\t')
+ col_sep_string = column_separator;
+
+ truncate_lines = true;
+ tabify_output = true;
+ }
+ else
+ storing_columns = false;
+
+ /* -J dominates -w in any case */
+ if (join_lines)
+ truncate_lines = false;
+
+ if (numbered_lines)
+ {
+ int tmp_i;
+ int chars_per_default_tab = 8;
+
+ line_count = start_line_num;
+
+ /* To allow input tab-expansion (-e sensitive) use:
+ if (number_separator == input_tab_char)
+ number_width = chars_per_number +
+ TAB_WIDTH (chars_per_input_tab, chars_per_number); */
+
+ /* Estimate chars_per_text without any margin and keep it constant. */
+ if (number_separator == '\t')
+ number_width = chars_per_number +
+ TAB_WIDTH (chars_per_default_tab, chars_per_number);
+ else
+ number_width = chars_per_number + 1;
+
+ /* The number is part of the column width unless we are
+ printing files in parallel. */
+ if (parallel_files)
+ chars_used_by_number = number_width;
+
+ /* We use power_10 to cut off the higher-order digits of the
+ line_number in function add_line_number */
+ tmp_i = chars_per_number;
+ for (power_10 = 1; tmp_i > 0; --tmp_i)
+ power_10 = 10 * power_10;
+ }
+
+ chars_per_column = (chars_per_line - chars_used_by_number -
+ (columns - 1) * col_sep_length) / columns;
+
+ if (chars_per_column < 1)
+ error (EXIT_FAILURE, 0, _("page width too narrow"));
+
+ if (numbered_lines)
+ {
+ free (number_buff);
+ number_buff = xmalloc (2 * chars_per_number);
+ }
+
+ /* Pick the maximum between the tab width and the width of an
+ escape sequence.
+ The width of an escape sequence (4) isn't the lower limit any longer.
+ We've to use 8 as the lower limit, if we use chars_per_default_tab = 8
+ to expand a tab which is not an input_tab-char. */
+ free (clump_buff);
+ clump_buff = xmalloc (MAX (8, chars_per_input_tab));
+}
+
+/* Open the necessary files,
+ maintaining a COLUMN structure for each column.
+
+ With multiple files, each column p has a different p->fp.
+ With single files, each column p has the same p->fp.
+ Return false if (number_of_files > 0) and no files can be opened,
+ true otherwise.
+
+ With each column/file p, p->full_page_printed is initialized,
+ see also open_file. */
+
+static bool
+init_fps (int number_of_files, char **av)
+{
+ int i, files_left;
+ COLUMN *p;
+ FILE *firstfp;
+ char const *firstname;
+
+ total_files = 0;
+
+ free (column_vector);
+ column_vector = xnmalloc (columns, sizeof (COLUMN));
+
+ if (parallel_files)
+ {
+ files_left = number_of_files;
+ for (p = column_vector; files_left--; ++p, ++av)
+ {
+ if (! open_file (*av, p))
+ {
+ --p;
+ --columns;
+ }
+ }
+ if (columns == 0)
+ return false;
+ init_header ("", -1);
+ }
+ else
+ {
+ p = column_vector;
+ if (number_of_files > 0)
+ {
+ if (! open_file (*av, p))
+ return false;
+ init_header (*av, fileno (p->fp));
+ p->lines_stored = 0;
+ }
+ else
+ {
+ p->name = _("standard input");
+ p->fp = stdin;
+ have_read_stdin = true;
+ p->status = OPEN;
+ p->full_page_printed = false;
+ ++total_files;
+ init_header ("", -1);
+ p->lines_stored = 0;
+ }
+
+ firstname = p->name;
+ firstfp = p->fp;
+ for (i = columns - 1, ++p; i; --i, ++p)
+ {
+ p->name = firstname;
+ p->fp = firstfp;
+ p->status = OPEN;
+ p->full_page_printed = false;
+ p->lines_stored = 0;
+ }
+ }
+ files_ready_to_read = total_files;
+ return true;
+}
+
+/* Determine print_func and char_func, the functions
+ used by each column for printing and/or storing.
+
+ Determine the horizontal position desired when we begin
+ printing a column (p->start_position). */
+
+static void
+init_funcs (void)
+{
+ int i, h, h_next;
+ COLUMN *p;
+
+ h = chars_per_margin;
+
+ if (!truncate_lines)
+ h_next = ANYWHERE;
+ else
+ {
+ /* When numbering lines of parallel files, we enlarge the
+ first column to accomodate the number. Looks better than
+ the Sys V approach. */
+ if (parallel_files & numbered_lines)
+ h_next = h + chars_per_column + number_width;
+ else
+ h_next = h + chars_per_column;
+ }
+
+ /* Enlarge p->start_position of first column to use the same form of
+ padding_not_printed with all columns. */
+ h = h + col_sep_length;
+
+ /* This loop takes care of all but the rightmost column. */
+
+ for (p = column_vector, i = 1; i < columns; ++p, ++i)
+ {
+ if (storing_columns) /* One file, multi columns down. */
+ {
+ p->char_func = store_char;
+ p->print_func = print_stored;
+ }
+ else
+ /* One file, multi columns across; or parallel files. */
+ {
+ p->char_func = print_char;
+ p->print_func = read_line;
+ }
+
+ /* Number only the first column when printing files in
+ parallel. */
+ p->numbered = numbered_lines && (!parallel_files || i == 1);
+ p->start_position = h;
+
+ /* If we don't truncate lines, all start_positions are
+ ANYWHERE, except the first column's start_position when
+ using a margin. */
+
+ if (!truncate_lines)
+ {
+ h = ANYWHERE;
+ h_next = ANYWHERE;
+ }
+ else
+ {
+ h = h_next + col_sep_length;
+ h_next = h + chars_per_column;
+ }
+ }
+
+ /* The rightmost column.
+
+ Doesn't need to be stored unless we intend to balance
+ columns on the last page. */
+ if (storing_columns & balance_columns)
+ {
+ p->char_func = store_char;
+ p->print_func = print_stored;
+ }
+ else
+ {
+ p->char_func = print_char;
+ p->print_func = read_line;
+ }
+
+ p->numbered = numbered_lines && (!parallel_files || i == 1);
+ p->start_position = h;
+}
+
+/* Open a file. Return true if successful.
+
+ With each file p, p->full_page_printed is initialized,
+ see also init_fps. */
+
+static bool
+open_file (char *name, COLUMN *p)
+{
+ if (STREQ (name, "-"))
+ {
+ p->name = _("standard input");
+ p->fp = stdin;
+ have_read_stdin = true;
+ }
+ else
+ {
+ p->name = name;
+ p->fp = fopen (name, "r");
+ }
+ if (p->fp == NULL)
+ {
+ failed_opens = true;
+ if (!ignore_failed_opens)
+ error (0, errno, "%s", name);
+ return false;
+ }
+ p->status = OPEN;
+ p->full_page_printed = false;
+ ++total_files;
+ return true;
+}
+
+/* Close the file in P.
+
+ If we aren't dealing with multiple files in parallel, we change
+ the status of all columns in the column list to reflect the close. */
+
+static void
+close_file (COLUMN *p)
+{
+ COLUMN *q;
+ int i;
+
+ if (p->status == CLOSED)
+ return;
+ if (ferror (p->fp))
+ error (EXIT_FAILURE, errno, "%s", p->name);
+ if (fileno (p->fp) != STDIN_FILENO && fclose (p->fp) != 0)
+ error (EXIT_FAILURE, errno, "%s", p->name);
+
+ if (!parallel_files)
+ {
+ for (q = column_vector, i = columns; i; ++q, --i)
+ {
+ q->status = CLOSED;
+ if (q->lines_stored == 0)
+ {
+ q->lines_to_print = 0;
+ }
+ }
+ }
+ else
+ {
+ p->status = CLOSED;
+ p->lines_to_print = 0;
+ }
+
+ --files_ready_to_read;
+}
+
+/* Put a file on hold until we start a new page,
+ since we've hit a form feed.
+
+ If we aren't dealing with parallel files, we must change the
+ status of all columns in the column list. */
+
+static void
+hold_file (COLUMN *p)
+{
+ COLUMN *q;
+ int i;
+
+ if (!parallel_files)
+ for (q = column_vector, i = columns; i; ++q, --i)
+ {
+ if (storing_columns)
+ q->status = FF_FOUND;
+ else
+ q->status = ON_HOLD;
+ }
+ else
+ p->status = ON_HOLD;
+
+ p->lines_to_print = 0;
+ --files_ready_to_read;
+}
+
+/* Undo hold_file -- go through the column list and change any
+ ON_HOLD columns to OPEN. Used at the end of each page. */
+
+static void
+reset_status (void)
+{
+ int i = columns;
+ COLUMN *p;
+
+ for (p = column_vector; i; --i, ++p)
+ if (p->status == ON_HOLD)
+ {
+ p->status = OPEN;
+ files_ready_to_read++;
+ }
+
+ if (storing_columns)
+ {
+ if (column_vector->status == CLOSED)
+ /* We use the info to output an error message in skip_to_page. */
+ files_ready_to_read = 0;
+ else
+ files_ready_to_read = 1;
+ }
+}
+
+/* Print a single file, or multiple files in parallel.
+
+ Set up the list of columns, opening the necessary files.
+ Allocate space for storing columns, if necessary.
+ Skip to first_page_number, if user has asked to skip leading pages.
+ Determine which functions are appropriate to store/print lines
+ in each column.
+ Print the file(s). */
+
+static void
+print_files (int number_of_files, char **av)
+{
+ init_parameters (number_of_files);
+ if (! init_fps (number_of_files, av))
+ return;
+ if (storing_columns)
+ init_store_cols ();
+
+ if (first_page_number > 1)
+ {
+ if (!skip_to_page (first_page_number))
+ return;
+ else
+ page_number = first_page_number;
+ }
+ else
+ page_number = 1;
+
+ init_funcs ();
+
+ line_number = line_count;
+ while (print_page ())
+ ;
+}
+
+/* Initialize header information.
+ If DESC is non-negative, it is a file descriptor open to
+ FILENAME for reading. */
+
+static void
+init_header (char const *filename, int desc)
+{
+ char *buf = NULL;
+ struct stat st;
+ struct timespec t;
+ int ns;
+ struct tm *tm;
+
+ /* If parallel files or standard input, use current date. */
+ if (STREQ (filename, "-"))
+ desc = -1;
+ if (0 <= desc && fstat (desc, &st) == 0)
+ t = get_stat_mtime (&st);
+ else
+ {
+ static struct timespec timespec;
+ if (! timespec.tv_sec)
+ gettime (&timespec);
+ t = timespec;
+ }
+
+ ns = t.tv_nsec;
+ tm = localtime (&t.tv_sec);
+ if (tm == NULL)
+ {
+ buf = xmalloc (INT_BUFSIZE_BOUND (long int)
+ + MAX (10, INT_BUFSIZE_BOUND (int)));
+ sprintf (buf, "%ld.%09d", (long int) t.tv_sec, ns);
+ }
+ else
+ {
+ size_t bufsize = nstrftime (NULL, SIZE_MAX, date_format, tm, 0, ns) + 1;
+ buf = xmalloc (bufsize);
+ nstrftime (buf, bufsize, date_format, tm, 0, ns);
+ }
+
+ free (date_text);
+ date_text = buf;
+ file_text = custom_header ? custom_header : desc < 0 ? "" : filename;
+ header_width_available = (chars_per_line
+ - mbswidth (date_text, 0)
+ - mbswidth (file_text, 0));
+}
+
+/* Set things up for printing a page
+
+ Scan through the columns ...
+ Determine which are ready to print
+ (i.e., which have lines stored or open files)
+ Set p->lines_to_print appropriately
+ (to p->lines_stored if we're storing, or lines_per_body
+ if we're reading straight from the file)
+ Keep track of this total so we know when to stop printing */
+
+static void
+init_page (void)
+{
+ int j;
+ COLUMN *p;
+
+ if (storing_columns)
+ {
+ store_columns ();
+ for (j = columns - 1, p = column_vector; j; --j, ++p)
+ {
+ p->lines_to_print = p->lines_stored;
+ }
+
+ /* Last column. */
+ if (balance_columns)
+ {
+ p->lines_to_print = p->lines_stored;
+ }
+ /* Since we're not balancing columns, we don't need to store
+ the rightmost column. Read it straight from the file. */
+ else
+ {
+ if (p->status == OPEN)
+ {
+ p->lines_to_print = lines_per_body;
+ }
+ else
+ p->lines_to_print = 0;
+ }
+ }
+ else
+ for (j = columns, p = column_vector; j; --j, ++p)
+ if (p->status == OPEN)
+ {
+ p->lines_to_print = lines_per_body;
+ }
+ else
+ p->lines_to_print = 0;
+}
+
+/* Align empty columns and print separators.
+ Empty columns will be formed by files with status ON_HOLD or CLOSED
+ when printing multiple files in parallel. */
+
+static void
+align_column (COLUMN *p)
+{
+ padding_not_printed = p->start_position;
+ if (padding_not_printed - col_sep_length > 0)
+ {
+ pad_across_to (padding_not_printed - col_sep_length);
+ padding_not_printed = ANYWHERE;
+ }
+
+ if (use_col_separator)
+ print_sep_string ();
+
+ if (p->numbered)
+ add_line_number (p);
+}
+
+/* Print one page.
+
+ As long as there are lines left on the page and columns ready to print,
+ Scan across the column list
+ if the column has stored lines or the file is open
+ pad to the appropriate spot
+ print the column
+ pad the remainder of the page with \n or \f as requested
+ reset the status of all files -- any files which where on hold because
+ of formfeeds are now put back into the lineup. */
+
+static bool
+print_page (void)
+{
+ int j;
+ int lines_left_on_page;
+ COLUMN *p;
+
+ /* Used as an accumulator (with | operator) of successive values of
+ pad_vertically. The trick is to set pad_vertically
+ to false before each run through the inner loop, then after that
+ loop, it tells us whether a line was actually printed (whether a
+ newline needs to be output -- or two for double spacing). But those
+ values have to be accumulated (in pv) so we can invoke pad_down
+ properly after the outer loop completes. */
+ bool pv;
+
+ init_page ();
+
+ if (cols_ready_to_print () == 0)
+ return false;
+
+ if (extremities)
+ print_a_header = true;
+
+ /* Don't pad unless we know a page was printed. */
+ pad_vertically = false;
+ pv = false;
+
+ lines_left_on_page = lines_per_body;
+ if (double_space)
+ lines_left_on_page *= 2;
+
+ while (lines_left_on_page > 0 && cols_ready_to_print () > 0)
+ {
+ output_position = 0;
+ spaces_not_printed = 0;
+ separators_not_printed = 0;
+ pad_vertically = false;
+ align_empty_cols = false;
+ empty_line = true;
+
+ for (j = 1, p = column_vector; j <= columns; ++j, ++p)
+ {
+ input_position = 0;
+ if (p->lines_to_print > 0 || p->status == FF_FOUND)
+ {
+ FF_only = false;
+ padding_not_printed = p->start_position;
+ if (!(p->print_func) (p))
+ read_rest_of_line (p);
+ pv |= pad_vertically;
+
+ --p->lines_to_print;
+ if (p->lines_to_print <= 0)
+ {
+ if (cols_ready_to_print () <= 0)
+ break;
+ }
+
+ /* File p changed its status to ON_HOLD or CLOSED */
+ if (parallel_files && p->status != OPEN)
+ {
+ if (empty_line)
+ align_empty_cols = true;
+ else if (p->status == CLOSED ||
+ (p->status == ON_HOLD && FF_only))
+ align_column (p);
+ }
+ }
+ else if (parallel_files)
+ {
+ /* File status ON_HOLD or CLOSED */
+ if (empty_line)
+ align_empty_cols = true;
+ else
+ align_column (p);
+ }
+
+ /* We need it also with an empty column */
+ if (use_col_separator)
+ ++separators_not_printed;
+ }
+
+ if (pad_vertically)
+ {
+ putchar ('\n');
+ --lines_left_on_page;
+ }
+
+ if (cols_ready_to_print () <= 0 && !extremities)
+ break;
+
+ if (double_space & pv)
+ {
+ putchar ('\n');
+ --lines_left_on_page;
+ }
+ }
+
+ if (lines_left_on_page == 0)
+ for (j = 1, p = column_vector; j <= columns; ++j, ++p)
+ if (p->status == OPEN)
+ p->full_page_printed = true;
+
+ pad_vertically = pv;
+
+ if (pad_vertically & extremities)
+ pad_down (lines_left_on_page + lines_per_footer);
+ else if (keep_FF & print_a_FF)
+ {
+ putchar ('\f');
+ print_a_FF = false;
+ }
+
+ if (last_page_number < page_number)
+ return false; /* Stop printing with LAST_PAGE */
+
+ reset_status (); /* Change ON_HOLD to OPEN. */
+
+ return true; /* More pages to go. */
+}
+
+/* Allocate space for storing columns.
+
+ This is necessary when printing multiple columns from a single file.
+ Lines are stored consecutively in buff, separated by '\0'.
+
+ The following doesn't apply any longer - any tuning possible?
+ (We can't use a fixed offset since with the '-s' flag lines aren't
+ truncated.)
+
+ We maintain a list (line_vector) of pointers to the beginnings
+ of lines in buff. We allocate one more than the number of lines
+ because the last entry tells us the index of the last character,
+ which we need to know in order to print the last line in buff. */
+
+static void
+init_store_cols (void)
+{
+ int total_lines = lines_per_body * columns;
+ int chars_if_truncate = total_lines * (chars_per_column + 1);
+
+ free (line_vector);
+ /* FIXME: here's where it was allocated. */
+ line_vector = xmalloc ((total_lines + 1) * sizeof (int *));
+
+ free (end_vector);
+ end_vector = xmalloc (total_lines * sizeof (int *));
+
+ free (buff);
+ buff_allocated = (use_col_separator
+ ? 2 * chars_if_truncate
+ : chars_if_truncate); /* Tune this. */
+ buff = xmalloc (buff_allocated);
+}
+
+/* Store all but the rightmost column.
+ (Used when printing a single file in multiple downward columns)
+
+ For each column
+ set p->current_line to be the index in line_vector of the
+ first line in the column
+ For each line in the column
+ store the line in buff
+ add to line_vector the index of the line's first char
+ buff_start is the index in buff of the first character in the
+ current line. */
+
+static void
+store_columns (void)
+{
+ int i, j;
+ int line = 0;
+ int buff_start;
+ int last_col; /* The rightmost column which will be saved in buff */
+ COLUMN *p;
+
+ buff_current = 0;
+ buff_start = 0;
+
+ if (balance_columns)
+ last_col = columns;
+ else
+ last_col = columns - 1;
+
+ for (i = 1, p = column_vector; i <= last_col; ++i, ++p)
+ p->lines_stored = 0;
+
+ for (i = 1, p = column_vector; i <= last_col && files_ready_to_read;
+ ++i, ++p)
+ {
+ p->current_line = line;
+ for (j = lines_per_body; j && files_ready_to_read; --j)
+
+ if (p->status == OPEN) /* Redundant. Clean up. */
+ {
+ input_position = 0;
+
+ if (!read_line (p))
+ read_rest_of_line (p);
+
+ if (p->status == OPEN
+ || buff_start != buff_current)
+ {
+ ++p->lines_stored;
+ line_vector[line] = buff_start;
+ end_vector[line++] = input_position;
+ buff_start = buff_current;
+ }
+ }
+ }
+
+ /* Keep track of the location of the last char in buff. */
+ line_vector[line] = buff_start;
+
+ if (balance_columns)
+ balance (line);
+}
+
+static void
+balance (int total_stored)
+{
+ COLUMN *p;
+ int i, lines;
+ int first_line = 0;
+
+ for (i = 1, p = column_vector; i <= columns; ++i, ++p)
+ {
+ lines = total_stored / columns;
+ if (i <= total_stored % columns)
+ ++lines;
+
+ p->lines_stored = lines;
+ p->current_line = first_line;
+
+ first_line += lines;
+ }
+}
+
+/* Store a character in the buffer. */
+
+static void
+store_char (char c)
+{
+ if (buff_current >= buff_allocated)
+ {
+ /* May be too generous. */
+ buff = X2REALLOC (buff, &buff_allocated);
+ }
+ buff[buff_current++] = c;
+}
+
+static void
+add_line_number (COLUMN *p)
+{
+ int i;
+ char *s;
+ int left_cut;
+
+ /* Cutting off the higher-order digits is more informative than
+ lower-order cut off*/
+ if (line_number < power_10)
+ sprintf (number_buff, "%*d", chars_per_number, line_number);
+ else
+ {
+ left_cut = line_number % power_10;
+ sprintf (number_buff, "%0*d", chars_per_number, left_cut);
+ }
+ line_number++;
+ s = number_buff;
+ for (i = chars_per_number; i > 0; i--)
+ (p->char_func) (*s++);
+
+ if (columns > 1)
+ {
+ /* Tabification is assumed for multiple columns, also for n-separators,
+ but `default n-separator = TAB' hasn't been given priority over
+ equal column_width also specified by POSIX. */
+ if (number_separator == '\t')
+ {
+ i = number_width - chars_per_number;
+ while (i-- > 0)
+ (p->char_func) (' ');
+ }
+ else
+ (p->char_func) (number_separator);
+ }
+ else
+ /* To comply with POSIX, we avoid any expansion of default TAB
+ separator with a single column output. No column_width requirement
+ has to be considered. */
+ {
+ (p->char_func) (number_separator);
+ if (number_separator == '\t')
+ output_position = POS_AFTER_TAB (chars_per_output_tab,
+ output_position);
+ }
+
+ if (truncate_lines & !parallel_files)
+ input_position += number_width;
+}
+
+/* Print (or store) padding until the current horizontal position
+ is position. */
+
+static void
+pad_across_to (int position)
+{
+ int h = output_position;
+
+ if (tabify_output)
+ spaces_not_printed = position - output_position;
+ else
+ {
+ while (++h <= position)
+ putchar (' ');
+ output_position = position;
+ }
+}
+
+/* Pad to the bottom of the page.
+
+ If the user has requested a formfeed, use one.
+ Otherwise, use newlines. */
+
+static void
+pad_down (int lines)
+{
+ int i;
+
+ if (use_form_feed)
+ putchar ('\f');
+ else
+ for (i = lines; i; --i)
+ putchar ('\n');
+}
+
+/* Read the rest of the line.
+
+ Read from the current column's file until an end of line is
+ hit. Used when we've truncated a line and we no longer need
+ to print or store its characters. */
+
+static void
+read_rest_of_line (COLUMN *p)
+{
+ int c;
+ FILE *f = p->fp;
+
+ while ((c = getc (f)) != '\n')
+ {
+ if (c == '\f')
+ {
+ if ((c = getc (f)) != '\n')
+ ungetc (c, f);
+ if (keep_FF)
+ print_a_FF = true;
+ hold_file (p);
+ break;
+ }
+ else if (c == EOF)
+ {
+ close_file (p);
+ break;
+ }
+ }
+}
+
+/* Read a line with skip_to_page.
+
+ Read from the current column's file until an end of line is
+ hit. Used when we read full lines to skip pages.
+ With skip_to_page we have to check for FF-coincidence which is done
+ in function read_line otherwise.
+ Count lines of skipped pages to find the line number of 1st page
+ printed relative to 1st line of input file (start_line_num). */
+
+static void
+skip_read (COLUMN *p, int column_number)
+{
+ int c;
+ FILE *f = p->fp;
+ int i;
+ bool single_ff = false;
+ COLUMN *q;
+
+ /* Read 1st character in a line or any character succeeding a FF */
+ if ((c = getc (f)) == '\f' && p->full_page_printed)
+ /* A FF-coincidence with a previous full_page_printed.
+ To avoid an additional empty page, eliminate the FF */
+ if ((c = getc (f)) == '\n')
+ c = getc (f);
+
+ p->full_page_printed = false;
+
+ /* 1st character a FF means a single FF without any printable
+ characters. Don't count it as a line with -n option. */
+ if (c == '\f')
+ single_ff = true;
+
+ /* Preparing for a FF-coincidence: Maybe we finish that page
+ without a FF found */
+ if (last_line)
+ p->full_page_printed = true;
+
+ while (c != '\n')
+ {
+ if (c == '\f')
+ {
+ /* No FF-coincidence possible,
+ no catching up of a FF-coincidence with next page */
+ if (last_line)
+ {
+ if (!parallel_files)
+ for (q = column_vector, i = columns; i; ++q, --i)
+ q->full_page_printed = false;
+ else
+ p->full_page_printed = false;
+ }
+
+ if ((c = getc (f)) != '\n')
+ ungetc (c, f);
+ hold_file (p);
+ break;
+ }
+ else if (c == EOF)
+ {
+ close_file (p);
+ break;
+ }
+ c = getc (f);
+ }
+
+ if (skip_count)
+ if ((!parallel_files || column_number == 1) && !single_ff)
+ ++line_count;
+}
+
+/* If we're tabifying output,
+
+ When print_char encounters white space it keeps track
+ of our desired horizontal position and delays printing
+ until this function is called. */
+
+static void
+print_white_space (void)
+{
+ int h_new;
+ int h_old = output_position;
+ int goal = h_old + spaces_not_printed;
+
+ while (goal - h_old > 1
+ && (h_new = POS_AFTER_TAB (chars_per_output_tab, h_old)) <= goal)
+ {
+ putchar (output_tab_char);
+ h_old = h_new;
+ }
+ while (++h_old <= goal)
+ putchar (' ');
+
+ output_position = goal;
+ spaces_not_printed = 0;
+}
+
+/* Print column separators.
+
+ We keep a count until we know that we'll be printing a line,
+ then print_sep_string() is called. */
+
+static void
+print_sep_string (void)
+{
+ char *s;
+ int l = col_sep_length;
+
+ s = col_sep_string;
+
+ if (separators_not_printed <= 0)
+ {
+ /* We'll be starting a line with chars_per_margin, anything else? */
+ if (spaces_not_printed > 0)
+ print_white_space ();
+ }
+ else
+ {
+ for (; separators_not_printed > 0; --separators_not_printed)
+ {
+ while (l-- > 0)
+ {
+ /* 3 types of sep_strings: spaces only, spaces and chars,
+ chars only */
+ if (*s == ' ')
+ {
+ /* We're tabifying output; consecutive spaces in
+ sep_string may have to be converted to tabs */
+ s++;
+ ++spaces_not_printed;
+ }
+ else
+ {
+ if (spaces_not_printed > 0)
+ print_white_space ();
+ putchar (*s++);
+ ++output_position;
+ }
+ }
+ /* sep_string ends with some spaces */
+ if (spaces_not_printed > 0)
+ print_white_space ();
+ }
+ }
+}
+
+/* Print (or store, depending on p->char_func) a clump of N
+ characters. */
+
+static void
+print_clump (COLUMN *p, int n, char *clump)
+{
+ while (n--)
+ (p->char_func) (*clump++);
+}
+
+/* Print a character.
+
+ Update the following comment: process-char hasn't been used any
+ longer.
+ If we're tabifying, all tabs have been converted to spaces by
+ process_char(). Keep a count of consecutive spaces, and when
+ a nonspace is encountered, call print_white_space() to print the
+ required number of tabs and spaces. */
+
+static void
+print_char (char c)
+{
+ if (tabify_output)
+ {
+ if (c == ' ')
+ {
+ ++spaces_not_printed;
+ return;
+ }
+ else if (spaces_not_printed > 0)
+ print_white_space ();
+
+ /* Nonprintables are assumed to have width 0, except '\b'. */
+ if (! isprint (to_uchar (c)))
+ {
+ if (c == '\b')
+ --output_position;
+ }
+ else
+ ++output_position;
+ }
+ putchar (c);
+}
+
+/* Skip to page PAGE before printing.
+ PAGE may be larger than total number of pages. */
+
+static bool
+skip_to_page (uintmax_t page)
+{
+ uintmax_t n;
+ int i;
+ int j;
+ COLUMN *p;
+
+ for (n = 1; n < page; ++n)
+ {
+ for (i = 1; i < lines_per_body; ++i)
+ {
+ for (j = 1, p = column_vector; j <= columns; ++j, ++p)
+ if (p->status == OPEN)
+ skip_read (p, j);
+ }
+ last_line = true;
+ for (j = 1, p = column_vector; j <= columns; ++j, ++p)
+ if (p->status == OPEN)
+ skip_read (p, j);
+
+ if (storing_columns) /* change FF_FOUND to ON_HOLD */
+ for (j = 1, p = column_vector; j <= columns; ++j, ++p)
+ if (p->status != CLOSED)
+ p->status = ON_HOLD;
+
+ reset_status ();
+ last_line = false;
+
+ if (files_ready_to_read < 1)
+ {
+ /* It's very helpful, normally the total number of pages is
+ not known in advance. */
+ error (0, 0,
+ _("starting page number %"PRIuMAX
+ " exceeds page count %"PRIuMAX),
+ page, n);
+ break;
+ }
+ }
+ return files_ready_to_read > 0;
+}
+
+/* Print a header.
+
+ Formfeeds are assumed to use up two lines at the beginning of
+ the page. */
+
+static void
+print_header (void)
+{
+ char page_text[256 + INT_STRLEN_BOUND (page_number)];
+ int available_width;
+ int lhs_spaces;
+ int rhs_spaces;
+
+ if (!use_form_feed)
+ printf ("\n\n");
+
+ output_position = 0;
+ pad_across_to (chars_per_margin);
+ print_white_space ();
+
+ if (page_number == 0)
+ error (EXIT_FAILURE, 0, _("Page number overflow"));
+
+ /* The translator must ensure that formatting the translation of
+ "Page %"PRIuMAX does not generate more than (sizeof page_text - 1)
+ bytes. */
+ sprintf (page_text, _("Page %"PRIuMAX), page_number++);
+ available_width = header_width_available - mbswidth (page_text, 0);
+ available_width = MAX (0, available_width);
+ lhs_spaces = available_width >> 1;
+ rhs_spaces = available_width - lhs_spaces;
+
+ printf ("%s%*s%s%*s%s\n\n\n",
+ date_text, lhs_spaces, " ", file_text, rhs_spaces, " ", page_text);
+
+ print_a_header = false;
+ output_position = 0;
+}
+
+/* Print (or store, if p->char_func is store_char()) a line.
+
+ Read a character to determine whether we have a line or not.
+ (We may hit EOF, \n, or \f)
+
+ Once we know we have a line,
+ set pad_vertically = true, meaning it's safe
+ to pad down at the end of the page, since we do have a page.
+ print a header if needed.
+ pad across to padding_not_printed if needed.
+ print any separators which need to be printed.
+ print a line number if it needs to be printed.
+
+ Print the clump which corresponds to the first character.
+
+ Enter a loop and keep printing until an end of line condition
+ exists, or until we exceed chars_per_column.
+
+ Return false if we exceed chars_per_column before reading
+ an end of line character, true otherwise. */
+
+static bool
+read_line (COLUMN *p)
+{
+ int c;
+ int chars IF_LINT (= 0);
+ int last_input_position;
+ int j, k;
+ COLUMN *q;
+
+ /* read 1st character in each line or any character succeeding a FF: */
+ c = getc (p->fp);
+
+ last_input_position = input_position;
+
+ if (c == '\f' && p->full_page_printed)
+ if ((c = getc (p->fp)) == '\n')
+ c = getc (p->fp);
+ p->full_page_printed = false;
+
+ switch (c)
+ {
+ case '\f':
+ if ((c = getc (p->fp)) != '\n')
+ ungetc (c, p->fp);
+ FF_only = true;
+ if (print_a_header & !storing_columns)
+ {
+ pad_vertically = true;
+ print_header ();
+ }
+ else if (keep_FF)
+ print_a_FF = true;
+ hold_file (p);
+ return true;
+ case EOF:
+ close_file (p);
+ return true;
+ case '\n':
+ break;
+ default:
+ chars = char_to_clump (c);
+ }
+
+ if (truncate_lines && input_position > chars_per_column)
+ {
+ input_position = last_input_position;
+ return false;
+ }
+
+ if (p->char_func != store_char)
+ {
+ pad_vertically = true;
+
+ if (print_a_header & !storing_columns)
+ print_header ();
+
+ if (parallel_files & align_empty_cols)
+ {
+ /* We have to align empty columns at the beginning of a line. */
+ k = separators_not_printed;
+ separators_not_printed = 0;
+ for (j = 1, q = column_vector; j <= k; ++j, ++q)
+ {
+ align_column (q);
+ separators_not_printed += 1;
+ }
+ padding_not_printed = p->start_position;
+ if (truncate_lines)
+ spaces_not_printed = chars_per_column;
+ else
+ spaces_not_printed = 0;
+ align_empty_cols = false;
+ }
+
+ if (padding_not_printed - col_sep_length > 0)
+ {
+ pad_across_to (padding_not_printed - col_sep_length);
+ padding_not_printed = ANYWHERE;
+ }
+
+ if (use_col_separator)
+ print_sep_string ();
+ }
+
+ if (p->numbered)
+ add_line_number (p);
+
+ empty_line = false;
+ if (c == '\n')
+ return true;
+
+ print_clump (p, chars, clump_buff);
+
+ for (;;)
+ {
+ c = getc (p->fp);
+
+ switch (c)
+ {
+ case '\n':
+ return true;
+ case '\f':
+ if ((c = getc (p->fp)) != '\n')
+ ungetc (c, p->fp);
+ if (keep_FF)
+ print_a_FF = true;
+ hold_file (p);
+ return true;
+ case EOF:
+ close_file (p);
+ return true;
+ }
+
+ last_input_position = input_position;
+ chars = char_to_clump (c);
+ if (truncate_lines && input_position > chars_per_column)
+ {
+ input_position = last_input_position;
+ return false;
+ }
+
+ print_clump (p, chars, clump_buff);
+ }
+}
+
+/* Print a line from buff.
+
+ If this function has been called, we know we have "something to
+ print". But it remains to be seen whether we have a real text page
+ or an empty page (a single form feed) with/without a header only.
+ Therefore first we set pad_vertically to true and print a header
+ if necessary.
+ If FF_FOUND and we are using -t|-T option we omit any newline by
+ setting pad_vertically to false (see print_page).
+ Otherwise we pad across if necessary, print separators if necessary
+ and text of COLUMN *p.
+
+ Return true, meaning there is no need to call read_rest_of_line. */
+
+static bool
+print_stored (COLUMN *p)
+{
+ COLUMN *q;
+ int i;
+
+ int line = p->current_line++;
+ char *first = &buff[line_vector[line]];
+ /* FIXME
+ UMR: Uninitialized memory read:
+ * This is occurring while in:
+ print_stored [pr.c:2239]
+ * Reading 4 bytes from 0x5148c in the heap.
+ * Address 0x5148c is 4 bytes into a malloc'd block at 0x51488 of 676 bytes
+ * This block was allocated from:
+ malloc [rtlib.o]
+ xmalloc [xmalloc.c:94]
+ init_store_cols [pr.c:1648]
+ */
+ char *last = &buff[line_vector[line + 1]];
+
+ pad_vertically = true;
+
+ if (print_a_header)
+ print_header ();
+
+ if (p->status == FF_FOUND)
+ {
+ for (i = 1, q = column_vector; i <= columns; ++i, ++q)
+ q->status = ON_HOLD;
+ if (column_vector->lines_to_print <= 0)
+ {
+ if (!extremities)
+ pad_vertically = false;
+ return true; /* print a header only */
+ }
+ }
+
+ if (padding_not_printed - col_sep_length > 0)
+ {
+ pad_across_to (padding_not_printed - col_sep_length);
+ padding_not_printed = ANYWHERE;
+ }
+
+ if (use_col_separator)
+ print_sep_string ();
+
+ while (first != last)
+ print_char (*first++);
+
+ if (spaces_not_printed == 0)
+ {
+ output_position = p->start_position + end_vector[line];
+ if (p->start_position - col_sep_length == chars_per_margin)
+ output_position -= col_sep_length;
+ }
+
+ return true;
+}
+
+/* Convert a character to the proper format and return the number of
+ characters in the resulting clump. Increment input_position by
+ the width of the clump.
+
+ Tabs are converted to clumps of spaces.
+ Nonprintable characters may be converted to clumps of escape
+ sequences or control prefixes.
+
+ Note: the width of a clump is not necessarily equal to the number of
+ characters in clump_buff. (e.g, the width of '\b' is -1, while the
+ number of characters is 1.) */
+
+static int
+char_to_clump (char c)
+{
+ unsigned char uc = c;
+ char *s = clump_buff;
+ int i;
+ char esc_buff[4];
+ int width;
+ int chars;
+ int chars_per_c = 8;
+
+ if (c == input_tab_char)
+ chars_per_c = chars_per_input_tab;
+
+ if (c == input_tab_char || c == '\t')
+ {
+ width = TAB_WIDTH (chars_per_c, input_position);
+
+ if (untabify_input)
+ {
+ for (i = width; i; --i)
+ *s++ = ' ';
+ chars = width;
+ }
+ else
+ {
+ *s = c;
+ chars = 1;
+ }
+
+ }
+ else if (! isprint (uc))
+ {
+ if (use_esc_sequence)
+ {
+ width = 4;
+ chars = 4;
+ *s++ = '\\';
+ sprintf (esc_buff, "%03o", uc);
+ for (i = 0; i <= 2; ++i)
+ *s++ = esc_buff[i];
+ }
+ else if (use_cntrl_prefix)
+ {
+ if (uc < 0200)
+ {
+ width = 2;
+ chars = 2;
+ *s++ = '^';
+ *s++ = c ^ 0100;
+ }
+ else
+ {
+ width = 4;
+ chars = 4;
+ *s++ = '\\';
+ sprintf (esc_buff, "%03o", uc);
+ for (i = 0; i <= 2; ++i)
+ *s++ = esc_buff[i];
+ }
+ }
+ else if (c == '\b')
+ {
+ width = -1;
+ chars = 1;
+ *s = c;
+ }
+ else
+ {
+ width = 0;
+ chars = 1;
+ *s = c;
+ }
+ }
+ else
+ {
+ width = 1;
+ chars = 1;
+ *s = c;
+ }
+
+ input_position += width;
+ return chars;
+}
+
+/* We've just printed some files and need to clean up things before
+ looking for more options and printing the next batch of files.
+
+ Free everything we've xmalloc'ed, except `header'. */
+
+static void
+cleanup (void)
+{
+ free (number_buff);
+ free (clump_buff);
+ free (column_vector);
+ free (line_vector);
+ free (end_vector);
+ free (buff);
+}
+
+/* Complain, print a usage message, and die. */
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [FILE]...\n\
+"),
+ program_name);
+
+ fputs (_("\
+Paginate or columnate FILE(s) for printing.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE]\n\
+ begin [stop] printing with page FIRST_[LAST_]PAGE\n\
+ -COLUMN, --columns=COLUMN\n\
+ output COLUMN columns and print columns down,\n\
+ unless -a is used. Balance number of lines in the\n\
+ columns on each page.\n\
+"), stdout);
+ fputs (_("\
+ -a, --across print columns across rather than down, used together\n\
+ with -COLUMN\n\
+ -c, --show-control-chars\n\
+ use hat notation (^G) and octal backslash notation\n\
+ -d, --double-space\n\
+ double space the output\n\
+"), stdout);
+ fputs (_("\
+ -D, --date-format=FORMAT\n\
+ use FORMAT for the header date\n\
+ -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]]\n\
+ expand input CHARs (TABs) to tab WIDTH (8)\n\
+ -F, -f, --form-feed\n\
+ use form feeds instead of newlines to separate pages\n\
+ (by a 3-line page header with -F or a 5-line header\n\
+ and trailer without -F)\n\
+"), stdout);
+ fputs (_("\
+ -h HEADER, --header=HEADER\n\
+ use a centered HEADER instead of filename in page header,\n\
+ -h \"\" prints a blank line, don't use -h\"\"\n\
+ -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]]\n\
+ replace spaces with CHARs (TABs) to tab WIDTH (8)\n\
+ -J, --join-lines merge full lines, turns off -W line truncation, no column\n\
+ alignment, --sep-string[=STRING] sets separators\n\
+"), stdout);
+ fputs (_("\
+ -l PAGE_LENGTH, --length=PAGE_LENGTH\n\
+ set the page length to PAGE_LENGTH (66) lines\n\
+ (default number of lines of text 56, and with -F 63)\n\
+ -m, --merge print all files in parallel, one in each column,\n\
+ truncate lines, but join lines of full length with -J\n\
+"), stdout);
+ fputs (_("\
+ -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]]\n\
+ number lines, use DIGITS (5) digits, then SEP (TAB),\n\
+ default counting starts with 1st line of input file\n\
+ -N NUMBER, --first-line-number=NUMBER\n\
+ start counting with NUMBER at 1st line of first\n\
+ page printed (see +FIRST_PAGE)\n\
+"), stdout);
+ fputs (_("\
+ -o MARGIN, --indent=MARGIN\n\
+ offset each line with MARGIN (zero) spaces, do not\n\
+ affect -w or -W, MARGIN will be added to PAGE_WIDTH\n\
+ -r, --no-file-warnings\n\
+ omit warning when a file cannot be opened\n\
+"), stdout);
+ fputs (_("\
+ -s[CHAR],--separator[=CHAR]\n\
+ separate columns by a single character, default for CHAR\n\
+ is the <TAB> character without -w and \'no char\' with -w\n\
+ -s[CHAR] turns off line truncation of all 3 column\n\
+ options (-COLUMN|-a -COLUMN|-m) except -w is set\n\
+"), stdout);
+ fputs (_("\
+ -SSTRING, --sep-string[=STRING]\n\
+"), stdout);
+ fputs (_("\
+ separate columns by STRING,\n\
+ without -S: Default separator <TAB> with -J and <space>\n\
+ otherwise (same as -S\" \"), no effect on column options\n\
+ -t, --omit-header omit page headers and trailers\n\
+"), stdout);
+ fputs (_("\
+ -T, --omit-pagination\n\
+ omit page headers and trailers, eliminate any pagination\n\
+ by form feeds set in input files\n\
+ -v, --show-nonprinting\n\
+ use octal backslash notation\n\
+ -w PAGE_WIDTH, --width=PAGE_WIDTH\n\
+ set page width to PAGE_WIDTH (72) characters for\n\
+ multiple text-column output only, -s[char] turns off (72)\n\
+"), stdout);
+ fputs (_("\
+ -W PAGE_WIDTH, --page-width=PAGE_WIDTH\n\
+ set page width to PAGE_WIDTH (72) characters always,\n\
+ truncate lines, except -J option is set, no interference\n\
+ with -S or -s\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+-T implied by -l nn when nn <= 10 or <= 3 with -F. With no FILE, or when\n\
+FILE is -, read standard input.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
diff --git a/src/printenv.c b/src/printenv.c
new file mode 100644
index 0000000..e06b704
--- /dev/null
+++ b/src/printenv.c
@@ -0,0 +1,134 @@
+/* printenv -- print all or part of environment
+ Copyright (C) 1989-1997, 1999-2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Usage: printenv [variable...]
+
+ If no arguments are given, print the entire environment.
+ If one or more variable names are given, print the value of
+ each one that is set, and nothing for ones that are not set.
+
+ Exit status:
+ 0 if all variables specified were found
+ 1 if not
+ 2 if some other error occurred
+
+ David MacKenzie and Richard Mlynarik */
+
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <getopt.h>
+
+#include "system.h"
+#include "error.h"
+#include "long-options.h"
+
+/* Exit status for syntax errors, etc. */
+enum { PRINTENV_FAILURE = 2 };
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "printenv"
+
+#define AUTHORS "David MacKenzie", "Richard Mlynarik"
+
+/* The name this program was run with. */
+char *program_name;
+
+extern char **environ;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [VARIABLE]...\n\
+ or: %s OPTION\n\
+If no environment VARIABLE specified, print them all.\n\
+\n\
+"),
+ program_name, program_name);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (USAGE_BUILTIN_WARNING, PROGRAM_NAME);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ char **env;
+ char *ep, *ap;
+ int i;
+ bool ok;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ initialize_exit_failure (PRINTENV_FAILURE);
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "+", NULL, NULL) != -1)
+ usage (PRINTENV_FAILURE);
+
+ if (optind >= argc)
+ {
+ for (env = environ; *env != NULL; ++env)
+ puts (*env);
+ ok = true;
+ }
+ else
+ {
+ int matches = 0;
+
+ for (i = optind; i < argc; ++i)
+ {
+ bool matched = false;
+
+ for (env = environ; *env; ++env)
+ {
+ ep = *env;
+ ap = argv[i];
+ while (*ep != '\0' && *ap != '\0' && *ep++ == *ap++)
+ {
+ if (*ep == '=' && *ap == '\0')
+ {
+ puts (ep + 1);
+ matched = true;
+ break;
+ }
+ }
+ }
+
+ matches += matched;
+ }
+
+ ok = (matches == argc - optind);
+ }
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/printf.c b/src/printf.c
new file mode 100644
index 0000000..6205153
--- /dev/null
+++ b/src/printf.c
@@ -0,0 +1,687 @@
+/* printf - format and print data
+ Copyright (C) 1990-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Usage: printf format [argument...]
+
+ A front end to the printf function that lets it be used from the shell.
+
+ Backslash escapes:
+
+ \" = double quote
+ \\ = backslash
+ \a = alert (bell)
+ \b = backspace
+ \c = produce no further output
+ \f = form feed
+ \n = new line
+ \r = carriage return
+ \t = horizontal tab
+ \v = vertical tab
+ \ooo = octal number (ooo is 1 to 3 digits)
+ \xhh = hexadecimal number (hhh is 1 to 2 digits)
+ \uhhhh = 16-bit Unicode character (hhhh is 4 digits)
+ \Uhhhhhhhh = 32-bit Unicode character (hhhhhhhh is 8 digits)
+
+ Additional directive:
+
+ %b = print an argument string, interpreting backslash escapes,
+ except that octal escapes are of the form \0 or \0ooo.
+
+ The `format' argument is re-used as many times as necessary
+ to convert all of the given arguments.
+
+ David MacKenzie <djm@gnu.ai.mit.edu> */
+
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <getopt.h>
+
+#include "system.h"
+#include "c-strtod.h"
+#include "error.h"
+#include "long-options.h"
+#include "quote.h"
+#include "unicodeio.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "printf"
+
+#define AUTHORS "David MacKenzie"
+
+#define isodigit(c) ((c) >= '0' && (c) <= '7')
+#define hextobin(c) ((c) >= 'a' && (c) <= 'f' ? (c) - 'a' + 10 : \
+ (c) >= 'A' && (c) <= 'F' ? (c) - 'A' + 10 : (c) - '0')
+#define octtobin(c) ((c) - '0')
+
+/* The value to return to the calling program. */
+static int exit_status;
+
+/* True if the POSIXLY_CORRECT environment variable is set. */
+static bool posixly_correct;
+
+/* This message appears in N_() here rather than just in _() below because
+ the sole use would have been in a #define. */
+static char const *const cfcc_msg =
+ N_("warning: %s: character(s) following character constant have been ignored");
+
+/* The name this program was run with. */
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s FORMAT [ARGUMENT]...\n\
+ or: %s OPTION\n\
+"),
+ program_name, program_name);
+ fputs (_("\
+Print ARGUMENT(s) according to FORMAT.\n\
+\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+FORMAT controls the output as in C printf. Interpreted sequences are:\n\
+\n\
+ \\\" double quote\n\
+ \\NNN character with octal value NNN (1 to 3 digits)\n\
+ \\\\ backslash\n\
+"), stdout);
+ fputs (_("\
+ \\a alert (BEL)\n\
+ \\b backspace\n\
+ \\c produce no further output\n\
+ \\f form feed\n\
+"), stdout);
+ fputs (_("\
+ \\n new line\n\
+ \\r carriage return\n\
+ \\t horizontal tab\n\
+ \\v vertical tab\n\
+"), stdout);
+ fputs (_("\
+ \\xHH byte with hexadecimal value HH (1 to 2 digits)\n\
+ \\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)\n\
+ \\UHHHHHHHH Unicode character with hex value HHHHHHHH (8 digits)\n\
+"), stdout);
+ fputs (_("\
+ %% a single %\n\
+ %b ARGUMENT as a string with `\\' escapes interpreted,\n\
+ except that octal escapes are of the form \\0 or \\0NNN\n\
+\n\
+and all C format specifications ending with one of diouxXfeEgGcs, with\n\
+ARGUMENTs converted to proper type first. Variable widths are handled.\n\
+"), stdout);
+ printf (USAGE_BUILTIN_WARNING, PROGRAM_NAME);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+static void
+verify_numeric (const char *s, const char *end)
+{
+ if (errno)
+ {
+ error (0, errno, "%s", s);
+ exit_status = EXIT_FAILURE;
+ }
+ else if (*end)
+ {
+ if (s == end)
+ error (0, 0, _("%s: expected a numeric value"), s);
+ else
+ error (0, 0, _("%s: value not completely converted"), s);
+ exit_status = EXIT_FAILURE;
+ }
+}
+
+#define STRTOX(TYPE, FUNC_NAME, LIB_FUNC_EXPR) \
+static TYPE \
+FUNC_NAME (char const *s) \
+{ \
+ char *end; \
+ TYPE val; \
+ \
+ if (*s == '\"' || *s == '\'') \
+ { \
+ unsigned char ch = *++s; \
+ val = ch; \
+ /* If POSIXLY_CORRECT is not set, then give a warning that there \
+ are characters following the character constant and that GNU \
+ printf is ignoring those characters. If POSIXLY_CORRECT *is* \
+ set, then don't give the warning. */ \
+ if (*++s != 0 && !posixly_correct) \
+ error (0, 0, _(cfcc_msg), s); \
+ } \
+ else \
+ { \
+ errno = 0; \
+ val = (LIB_FUNC_EXPR); \
+ verify_numeric (s, end); \
+ } \
+ return val; \
+} \
+
+STRTOX (intmax_t, vstrtoimax, strtoimax (s, &end, 0))
+STRTOX (uintmax_t, vstrtoumax, strtoumax (s, &end, 0))
+STRTOX (long double, vstrtold, c_strtold (s, &end))
+
+/* Output a single-character \ escape. */
+
+static void
+print_esc_char (char c)
+{
+ switch (c)
+ {
+ case 'a': /* Alert. */
+ putchar ('\a');
+ break;
+ case 'b': /* Backspace. */
+ putchar ('\b');
+ break;
+ case 'c': /* Cancel the rest of the output. */
+ exit (EXIT_SUCCESS);
+ break;
+ case 'f': /* Form feed. */
+ putchar ('\f');
+ break;
+ case 'n': /* New line. */
+ putchar ('\n');
+ break;
+ case 'r': /* Carriage return. */
+ putchar ('\r');
+ break;
+ case 't': /* Horizontal tab. */
+ putchar ('\t');
+ break;
+ case 'v': /* Vertical tab. */
+ putchar ('\v');
+ break;
+ default:
+ putchar (c);
+ break;
+ }
+}
+
+/* Print a \ escape sequence starting at ESCSTART.
+ Return the number of characters in the escape sequence
+ besides the backslash.
+ If OCTAL_0 is nonzero, octal escapes are of the form \0ooo, where o
+ is an octal digit; otherwise they are of the form \ooo. */
+
+static int
+print_esc (const char *escstart, bool octal_0)
+{
+ const char *p = escstart + 1;
+ int esc_value = 0; /* Value of \nnn escape. */
+ int esc_length; /* Length of \nnn escape. */
+
+ if (*p == 'x')
+ {
+ /* A hexadecimal \xhh escape sequence must have 1 or 2 hex. digits. */
+ for (esc_length = 0, ++p;
+ esc_length < 2 && isxdigit (to_uchar (*p));
+ ++esc_length, ++p)
+ esc_value = esc_value * 16 + hextobin (*p);
+ if (esc_length == 0)
+ error (EXIT_FAILURE, 0, _("missing hexadecimal number in escape"));
+ putchar (esc_value);
+ }
+ else if (isodigit (*p))
+ {
+ /* Parse \0ooo (if octal_0 && *p == '0') or \ooo (otherwise).
+ Allow \ooo if octal_0 && *p != '0'; this is an undocumented
+ extension to POSIX that is compatible with Bash 2.05b. */
+ for (esc_length = 0, p += octal_0 && *p == '0';
+ esc_length < 3 && isodigit (*p);
+ ++esc_length, ++p)
+ esc_value = esc_value * 8 + octtobin (*p);
+ putchar (esc_value);
+ }
+ else if (*p && strchr ("\"\\abcfnrtv", *p))
+ print_esc_char (*p++);
+ else if (*p == 'u' || *p == 'U')
+ {
+ char esc_char = *p;
+ unsigned int uni_value;
+
+ uni_value = 0;
+ for (esc_length = (esc_char == 'u' ? 4 : 8), ++p;
+ esc_length > 0;
+ --esc_length, ++p)
+ {
+ if (! isxdigit (to_uchar (*p)))
+ error (EXIT_FAILURE, 0, _("missing hexadecimal number in escape"));
+ uni_value = uni_value * 16 + hextobin (*p);
+ }
+
+ /* A universal character name shall not specify a character short
+ identifier in the range 00000000 through 00000020, 0000007F through
+ 0000009F, or 0000D800 through 0000DFFF inclusive. A universal
+ character name shall not designate a character in the required
+ character set. */
+ if ((uni_value <= 0x9f
+ && uni_value != 0x24 && uni_value != 0x40 && uni_value != 0x60)
+ || (uni_value >= 0xd800 && uni_value <= 0xdfff))
+ error (EXIT_FAILURE, 0, _("invalid universal character name \\%c%0*x"),
+ esc_char, (esc_char == 'u' ? 4 : 8), uni_value);
+
+ print_unicode_char (stdout, uni_value, 0);
+ }
+ else
+ {
+ putchar ('\\');
+ if (*p)
+ {
+ putchar (*p);
+ p++;
+ }
+ }
+ return p - escstart - 1;
+}
+
+/* Print string STR, evaluating \ escapes. */
+
+static void
+print_esc_string (const char *str)
+{
+ for (; *str; str++)
+ if (*str == '\\')
+ str += print_esc (str, true);
+ else
+ putchar (*str);
+}
+
+/* Evaluate a printf conversion specification. START is the start of
+ the directive, LENGTH is its length, and CONVERSION specifies the
+ type of conversion. LENGTH does not include any length modifier or
+ the conversion specifier itself. FIELD_WIDTH and PRECISION are the
+ field width and precision for '*' values, if HAVE_FIELD_WIDTH and
+ HAVE_PRECISION are true, respectively. ARGUMENT is the argument to
+ be formatted. */
+
+static void
+print_direc (const char *start, size_t length, char conversion,
+ bool have_field_width, int field_width,
+ bool have_precision, int precision,
+ char const *argument)
+{
+ char *p; /* Null-terminated copy of % directive. */
+
+ /* Create a null-terminated copy of the % directive, with an
+ intmax_t-wide length modifier substituted for any existing
+ integer length modifier. */
+ {
+ char *q;
+ char const *length_modifier;
+ size_t length_modifier_len;
+
+ switch (conversion)
+ {
+ case 'd': case 'i': case 'o': case 'u': case 'x': case 'X':
+ length_modifier = PRIdMAX;
+ length_modifier_len = sizeof PRIdMAX - 2;
+ break;
+
+ case 'a': case 'e': case 'f': case 'g':
+ case 'A': case 'E': case 'F': case 'G':
+ length_modifier = "L";
+ length_modifier_len = 1;
+ break;
+
+ default:
+ length_modifier = start; /* Any valid pointer will do. */
+ length_modifier_len = 0;
+ break;
+ }
+
+ p = xmalloc (length + length_modifier_len + 2);
+ q = mempcpy (p, start, length);
+ q = mempcpy (q, length_modifier, length_modifier_len);
+ *q++ = conversion;
+ *q = '\0';
+ }
+
+ switch (conversion)
+ {
+ case 'd':
+ case 'i':
+ {
+ intmax_t arg = vstrtoimax (argument);
+ if (!have_field_width)
+ {
+ if (!have_precision)
+ printf (p, arg);
+ else
+ printf (p, precision, arg);
+ }
+ else
+ {
+ if (!have_precision)
+ printf (p, field_width, arg);
+ else
+ printf (p, field_width, precision, arg);
+ }
+ }
+ break;
+
+ case 'o':
+ case 'u':
+ case 'x':
+ case 'X':
+ {
+ uintmax_t arg = vstrtoumax (argument);
+ if (!have_field_width)
+ {
+ if (!have_precision)
+ printf (p, arg);
+ else
+ printf (p, precision, arg);
+ }
+ else
+ {
+ if (!have_precision)
+ printf (p, field_width, arg);
+ else
+ printf (p, field_width, precision, arg);
+ }
+ }
+ break;
+
+ case 'a':
+ case 'A':
+ case 'e':
+ case 'E':
+ case 'f':
+ case 'F':
+ case 'g':
+ case 'G':
+ {
+ long double arg = vstrtold (argument);
+ if (!have_field_width)
+ {
+ if (!have_precision)
+ printf (p, arg);
+ else
+ printf (p, precision, arg);
+ }
+ else
+ {
+ if (!have_precision)
+ printf (p, field_width, arg);
+ else
+ printf (p, field_width, precision, arg);
+ }
+ }
+ break;
+
+ case 'c':
+ if (!have_field_width)
+ printf (p, *argument);
+ else
+ printf (p, field_width, *argument);
+ break;
+
+ case 's':
+ if (!have_field_width)
+ {
+ if (!have_precision)
+ printf (p, argument);
+ else
+ printf (p, precision, argument);
+ }
+ else
+ {
+ if (!have_precision)
+ printf (p, field_width, argument);
+ else
+ printf (p, field_width, precision, argument);
+ }
+ break;
+ }
+
+ free (p);
+}
+
+/* Print the text in FORMAT, using ARGV (with ARGC elements) for
+ arguments to any `%' directives.
+ Return the number of elements of ARGV used. */
+
+static int
+print_formatted (const char *format, int argc, char **argv)
+{
+ int save_argc = argc; /* Preserve original value. */
+ const char *f; /* Pointer into `format'. */
+ const char *direc_start; /* Start of % directive. */
+ size_t direc_length; /* Length of % directive. */
+ bool have_field_width; /* True if FIELD_WIDTH is valid. */
+ int field_width = 0; /* Arg to first '*'. */
+ bool have_precision; /* True if PRECISION is valid. */
+ int precision = 0; /* Arg to second '*'. */
+ char ok[UCHAR_MAX + 1]; /* ok['x'] is true if %x is allowed. */
+
+ for (f = format; *f; ++f)
+ {
+ switch (*f)
+ {
+ case '%':
+ direc_start = f++;
+ direc_length = 1;
+ have_field_width = have_precision = false;
+ if (*f == '%')
+ {
+ putchar ('%');
+ break;
+ }
+ if (*f == 'b')
+ {
+ /* FIXME: Field width and precision are not supported
+ for %b, even though POSIX requires it. */
+ if (argc > 0)
+ {
+ print_esc_string (*argv);
+ ++argv;
+ --argc;
+ }
+ break;
+ }
+
+ memset (ok, 0, sizeof ok);
+ ok['a'] = ok['A'] = ok['c'] = ok['d'] = ok['e'] = ok['E'] =
+ ok['f'] = ok['F'] = ok['g'] = ok['G'] = ok['i'] = ok['o'] =
+ ok['s'] = ok['u'] = ok['x'] = ok['X'] = 1;
+
+ for (;; f++, direc_length++)
+ switch (*f)
+ {
+#if (__GLIBC__ == 2 && 2 <= __GLIBC_MINOR__) || 3 <= __GLIBC__
+ case 'I':
+#endif
+ case '\'':
+ ok['a'] = ok['A'] = ok['c'] = ok['e'] = ok['E'] =
+ ok['o'] = ok['s'] = ok['x'] = ok['X'] = 0;
+ break;
+ case '-': case '+': case ' ':
+ break;
+ case '#':
+ ok['c'] = ok['d'] = ok['i'] = ok['s'] = ok['u'] = 0;
+ break;
+ case '0':
+ ok['c'] = ok['s'] = 0;
+ break;
+ default:
+ goto no_more_flag_characters;
+ }
+ no_more_flag_characters:;
+
+ if (*f == '*')
+ {
+ ++f;
+ ++direc_length;
+ if (argc > 0)
+ {
+ intmax_t width = vstrtoimax (*argv);
+ if (INT_MIN <= width && width <= INT_MAX)
+ field_width = width;
+ else
+ error (EXIT_FAILURE, 0, _("invalid field width: %s"),
+ *argv);
+ ++argv;
+ --argc;
+ }
+ else
+ field_width = 0;
+ have_field_width = true;
+ }
+ else
+ while (ISDIGIT (*f))
+ {
+ ++f;
+ ++direc_length;
+ }
+ if (*f == '.')
+ {
+ ++f;
+ ++direc_length;
+ ok['c'] = 0;
+ if (*f == '*')
+ {
+ ++f;
+ ++direc_length;
+ if (argc > 0)
+ {
+ intmax_t prec = vstrtoimax (*argv);
+ if (prec < 0)
+ {
+ /* A negative precision is taken as if the
+ precision were omitted, so -1 is safe
+ here even if prec < INT_MIN. */
+ precision = -1;
+ }
+ else if (INT_MAX < prec)
+ error (EXIT_FAILURE, 0, _("invalid precision: %s"),
+ *argv);
+ else
+ precision = prec;
+ ++argv;
+ --argc;
+ }
+ else
+ precision = 0;
+ have_precision = true;
+ }
+ else
+ while (ISDIGIT (*f))
+ {
+ ++f;
+ ++direc_length;
+ }
+ }
+
+ while (*f == 'l' || *f == 'L' || *f == 'h'
+ || *f == 'j' || *f == 't' || *f == 'z')
+ ++f;
+
+ {
+ unsigned char conversion = *f;
+ if (! ok[conversion])
+ error (EXIT_FAILURE, 0,
+ _("%.*s: invalid conversion specification"),
+ (int) (f + 1 - direc_start), direc_start);
+ }
+
+ print_direc (direc_start, direc_length, *f,
+ have_field_width, field_width,
+ have_precision, precision,
+ (argc <= 0 ? "" : (argc--, *argv++)));
+ break;
+
+ case '\\':
+ f += print_esc (f, false);
+ break;
+
+ default:
+ putchar (*f);
+ }
+ }
+
+ return save_argc - argc;
+}
+
+int
+main (int argc, char **argv)
+{
+ char *format;
+ int args_used;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ exit_status = EXIT_SUCCESS;
+
+ posixly_correct = (getenv ("POSIXLY_CORRECT") != NULL);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+
+ /* The above handles --help and --version.
+ Since there is no other invocation of getopt, handle `--' here. */
+ if (1 < argc && STREQ (argv[1], "--"))
+ {
+ --argc;
+ ++argv;
+ }
+
+ if (argc <= 1)
+ {
+ error (0, 0, _("missing operand"));
+ usage (EXIT_FAILURE);
+ }
+
+ format = argv[1];
+ argc -= 2;
+ argv += 2;
+
+ do
+ {
+ args_used = print_formatted (format, argc, argv);
+ argc -= args_used;
+ argv += args_used;
+ }
+ while (args_used > 0 && argc > 0);
+
+ if (argc > 0)
+ error (0, 0,
+ _("warning: ignoring excess arguments, starting with %s"),
+ quote (argv[0]));
+
+ exit (exit_status);
+}
diff --git a/src/ptx.c b/src/ptx.c
new file mode 100644
index 0000000..9c35596
--- /dev/null
+++ b/src/ptx.c
@@ -0,0 +1,2224 @@
+/* Permuted index for GNU, with keywords in their context.
+ Copyright (C) 1990, 1991, 1993, 1998-2006 Free Software Foundation, Inc.
+ François Pinard <pinard@iro.umontreal.ca>, 1988.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ François Pinard <pinard@iro.umontreal.ca> */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+#include "system.h"
+#include "argmatch.h"
+#include "diacrit.h"
+#include "error.h"
+#include "quote.h"
+#include "quotearg.h"
+#include "regex.h"
+#include "xstrtol.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "ptx"
+
+/* Note to translator: Please translate "F. Pinard" to "François
+ Pinard" if "ç" (c-with-cedilla) is available in the
+ translation's character set and encoding. */
+#define AUTHORS _("F. Pinard")
+
+/* Number of possible characters in a byte. */
+#define CHAR_SET_SIZE 256
+
+#define ISODIGIT(C) ((C) >= '0' && (C) <= '7')
+#define HEXTOBIN(C) ((C) >= 'a' && (C) <= 'f' ? (C)-'a'+10 \
+ : (C) >= 'A' && (C) <= 'F' ? (C)-'A'+10 : (C)-'0')
+#define OCTTOBIN(C) ((C) - '0')
+
+/* Debugging the memory allocator. */
+
+#if WITH_DMALLOC
+# define MALLOC_FUNC_CHECK 1
+# include <dmalloc.h>
+#endif
+
+/* Global definitions. */
+
+/* FIXME: There are many unchecked integer overflows in this file,
+ that will cause this command to misbehave given large inputs or
+ options. Many of the "int" values below should be "size_t" or
+ something else like that. */
+
+/* Reallocation step when swallowing non regular files. The value is not
+ the actual reallocation step, but its base two logarithm. */
+#define SWALLOW_REALLOC_LOG 12
+
+/* Imported from "regex.c". */
+#define Sword 1
+
+/* The name this program was run with. */
+char *program_name;
+
+/* Program options. */
+
+enum Format
+{
+ UNKNOWN_FORMAT, /* output format still unknown */
+ DUMB_FORMAT, /* output for a dumb terminal */
+ ROFF_FORMAT, /* output for `troff' or `nroff' */
+ TEX_FORMAT /* output for `TeX' or `LaTeX' */
+};
+
+static bool gnu_extensions = true; /* trigger all GNU extensions */
+static bool auto_reference = false; /* refs are `file_name:line_number:' */
+static bool input_reference = false; /* refs at beginning of input lines */
+static bool right_reference = false; /* output refs after right context */
+static int line_width = 72; /* output line width in characters */
+static int gap_size = 3; /* number of spaces between output fields */
+static const char *truncation_string = "/";
+ /* string used to mark line truncations */
+static const char *macro_name = "xx"; /* macro name for roff or TeX output */
+static enum Format output_format = UNKNOWN_FORMAT;
+ /* output format */
+
+static bool ignore_case = false; /* fold lower to upper for sorting */
+static const char *break_file = NULL; /* name of the `Break characters' file */
+static const char *only_file = NULL; /* name of the `Only words' file */
+static const char *ignore_file = NULL; /* name of the `Ignore words' file */
+
+/* Options that use regular expressions. */
+struct regex_data
+{
+ /* The original regular expression, as a string. */
+ char const *string;
+
+ /* The compiled regular expression, and its fastmap. */
+ struct re_pattern_buffer pattern;
+ char fastmap[UCHAR_MAX + 1];
+};
+
+static struct regex_data context_regex; /* end of context */
+static struct regex_data word_regex; /* keyword */
+
+/* A BLOCK delimit a region in memory of arbitrary size, like the copy of a
+ whole file. A WORD is something smaller, its length should fit in a
+ short integer. A WORD_TABLE may contain several WORDs. */
+
+typedef struct
+ {
+ char *start; /* pointer to beginning of region */
+ char *end; /* pointer to end + 1 of region */
+ }
+BLOCK;
+
+typedef struct
+ {
+ char *start; /* pointer to beginning of region */
+ short int size; /* length of the region */
+ }
+WORD;
+
+typedef struct
+ {
+ WORD *start; /* array of WORDs */
+ size_t alloc; /* allocated length */
+ size_t length; /* number of used entries */
+ }
+WORD_TABLE;
+
+/* Pattern description tables. */
+
+/* For each character, provide its folded equivalent. */
+static unsigned char folded_chars[CHAR_SET_SIZE];
+
+/* End of context pattern register indices. */
+static struct re_registers context_regs;
+
+/* Keyword pattern register indices. */
+static struct re_registers word_regs;
+
+/* A word characters fastmap is used only when no word regexp has been
+ provided. A word is then made up of a sequence of one or more characters
+ allowed by the fastmap. Contains !0 if character allowed in word. Not
+ only this is faster in most cases, but it simplifies the implementation
+ of the Break files. */
+static char word_fastmap[CHAR_SET_SIZE];
+
+/* Maximum length of any word read. */
+static int maximum_word_length;
+
+/* Maximum width of any reference used. */
+static int reference_max_width;
+
+/* Ignore and Only word tables. */
+
+static WORD_TABLE ignore_table; /* table of words to ignore */
+static WORD_TABLE only_table; /* table of words to select */
+
+/* Source text table, and scanning macros. */
+
+static int number_input_files; /* number of text input files */
+static int total_line_count; /* total number of lines seen so far */
+static const char **input_file_name; /* array of text input file names */
+static int *file_line_count; /* array of `total_line_count' values at end */
+
+static BLOCK text_buffer; /* file to study */
+
+/* SKIP_NON_WHITE used only for getting or skipping the reference. */
+
+#define SKIP_NON_WHITE(cursor, limit) \
+ while (cursor < limit && ! isspace (to_uchar (*cursor))) \
+ cursor++
+
+#define SKIP_WHITE(cursor, limit) \
+ while (cursor < limit && isspace (to_uchar (*cursor))) \
+ cursor++
+
+#define SKIP_WHITE_BACKWARDS(cursor, start) \
+ while (cursor > start && isspace (to_uchar (cursor[-1]))) \
+ cursor--
+
+#define SKIP_SOMETHING(cursor, limit) \
+ if (word_regex.string) \
+ { \
+ regoff_t count; \
+ count = re_match (&word_regex.pattern, cursor, limit - cursor, 0, NULL); \
+ if (count == -2) \
+ matcher_error (); \
+ cursor += count == -1 ? 1 : count; \
+ } \
+ else if (word_fastmap[to_uchar (*cursor)]) \
+ while (cursor < limit && word_fastmap[to_uchar (*cursor)]) \
+ cursor++; \
+ else \
+ cursor++
+
+/* Occurrences table.
+
+ The `keyword' pointer provides the central word, which is surrounded
+ by a left context and a right context. The `keyword' and `length'
+ field allow full 8-bit characters keys, even including NULs. At other
+ places in this program, the name `keyafter' refers to the keyword
+ followed by its right context.
+
+ The left context does not extend, towards the beginning of the file,
+ further than a distance given by the `left' value. This value is
+ relative to the keyword beginning, it is usually negative. This
+ insures that, except for white space, we will never have to backward
+ scan the source text, when it is time to generate the final output
+ lines.
+
+ The right context, indirectly attainable through the keyword end, does
+ not extend, towards the end of the file, further than a distance given
+ by the `right' value. This value is relative to the keyword
+ beginning, it is usually positive.
+
+ When automatic references are used, the `reference' value is the
+ overall line number in all input files read so far, in this case, it
+ is of type (int). When input references are used, the `reference'
+ value indicates the distance between the keyword beginning and the
+ start of the reference field, it is of type (DELTA) and usually
+ negative. */
+
+typedef short int DELTA; /* to hold displacement within one context */
+
+typedef struct
+ {
+ WORD key; /* description of the keyword */
+ DELTA left; /* distance to left context start */
+ DELTA right; /* distance to right context end */
+ int reference; /* reference descriptor */
+ }
+OCCURS;
+
+/* The various OCCURS tables are indexed by the language. But the time
+ being, there is no such multiple language support. */
+
+static OCCURS *occurs_table[1]; /* all words retained from the read text */
+static size_t occurs_alloc[1]; /* allocated size of occurs_table */
+static size_t number_of_occurs[1]; /* number of used slots in occurs_table */
+
+
+/* Communication among output routines. */
+
+/* Indicate if special output processing is requested for each character. */
+static char edited_flag[CHAR_SET_SIZE];
+
+static int half_line_width; /* half of line width, reference excluded */
+static int before_max_width; /* maximum width of before field */
+static int keyafter_max_width; /* maximum width of keyword-and-after field */
+static int truncation_string_length;/* length of string used to flag truncation */
+
+/* When context is limited by lines, wraparound may happen on final output:
+ the `head' pointer gives access to some supplementary left context which
+ will be seen at the end of the output line, the `tail' pointer gives
+ access to some supplementary right context which will be seen at the
+ beginning of the output line. */
+
+static BLOCK tail; /* tail field */
+static int tail_truncation; /* flag truncation after the tail field */
+
+static BLOCK before; /* before field */
+static int before_truncation; /* flag truncation before the before field */
+
+static BLOCK keyafter; /* keyword-and-after field */
+static int keyafter_truncation; /* flag truncation after the keyafter field */
+
+static BLOCK head; /* head field */
+static int head_truncation; /* flag truncation before the head field */
+
+static BLOCK reference; /* reference field for input reference mode */
+
+/* Miscellaneous routines. */
+
+/* Diagnose an error in the regular expression matcher. Then exit. */
+
+static void ATTRIBUTE_NORETURN
+matcher_error (void)
+{
+ error (0, errno, _("error in regular expression matcher"));
+ exit (EXIT_FAILURE);
+}
+
+/*------------------------------------------------------.
+| Duplicate string STRING, while evaluating \-escapes. |
+`------------------------------------------------------*/
+
+/* Loosely adapted from GNU sh-utils printf.c code. */
+
+static char *
+copy_unescaped_string (const char *string)
+{
+ char *result; /* allocated result */
+ char *cursor; /* cursor in result */
+ int value; /* value of \nnn escape */
+ int length; /* length of \nnn escape */
+
+ result = xmalloc (strlen (string) + 1);
+ cursor = result;
+
+ while (*string)
+ if (*string == '\\')
+ {
+ string++;
+ switch (*string)
+ {
+ case 'x': /* \xhhh escape, 3 chars maximum */
+ value = 0;
+ for (length = 0, string++;
+ length < 3 && isxdigit (to_uchar (*string));
+ length++, string++)
+ value = value * 16 + HEXTOBIN (*string);
+ if (length == 0)
+ {
+ *cursor++ = '\\';
+ *cursor++ = 'x';
+ }
+ else
+ *cursor++ = value;
+ break;
+
+ case '0': /* \0ooo escape, 3 chars maximum */
+ value = 0;
+ for (length = 0, string++;
+ length < 3 && ISODIGIT (*string);
+ length++, string++)
+ value = value * 8 + OCTTOBIN (*string);
+ *cursor++ = value;
+ break;
+
+ case 'a': /* alert */
+#if __STDC__
+ *cursor++ = '\a';
+#else
+ *cursor++ = 7;
+#endif
+ string++;
+ break;
+
+ case 'b': /* backspace */
+ *cursor++ = '\b';
+ string++;
+ break;
+
+ case 'c': /* cancel the rest of the output */
+ while (*string)
+ string++;
+ break;
+
+ case 'f': /* form feed */
+ *cursor++ = '\f';
+ string++;
+ break;
+
+ case 'n': /* new line */
+ *cursor++ = '\n';
+ string++;
+ break;
+
+ case 'r': /* carriage return */
+ *cursor++ = '\r';
+ string++;
+ break;
+
+ case 't': /* horizontal tab */
+ *cursor++ = '\t';
+ string++;
+ break;
+
+ case 'v': /* vertical tab */
+#if __STDC__
+ *cursor++ = '\v';
+#else
+ *cursor++ = 11;
+#endif
+ string++;
+ break;
+
+ default:
+ *cursor++ = '\\';
+ *cursor++ = *string++;
+ break;
+ }
+ }
+ else
+ *cursor++ = *string++;
+
+ *cursor = '\0';
+ return result;
+}
+
+/*--------------------------------------------------------------------------.
+| Compile the regex represented by REGEX, diagnose and abort if any error. |
+`--------------------------------------------------------------------------*/
+
+static void
+compile_regex (struct regex_data *regex)
+{
+ struct re_pattern_buffer *pattern = &regex->pattern;
+ char const *string = regex->string;
+ char const *message;
+
+ pattern->buffer = NULL;
+ pattern->allocated = 0;
+ pattern->fastmap = regex->fastmap;
+ pattern->translate = ignore_case ? folded_chars : NULL;
+
+ message = re_compile_pattern (string, strlen (string), pattern);
+ if (message)
+ error (EXIT_FAILURE, 0, _("%s (for regexp %s)"), message, quote (string));
+
+ /* The fastmap should be compiled before `re_match'. The following
+ call is not mandatory, because `re_search' is always called sooner,
+ and it compiles the fastmap if this has not been done yet. */
+
+ re_compile_fastmap (pattern);
+}
+
+/*------------------------------------------------------------------------.
+| This will initialize various tables for pattern match and compiles some |
+| regexps. |
+`------------------------------------------------------------------------*/
+
+static void
+initialize_regex (void)
+{
+ int character; /* character value */
+
+ /* Initialize the case folding table. */
+
+ if (ignore_case)
+ for (character = 0; character < CHAR_SET_SIZE; character++)
+ folded_chars[character] = toupper (character);
+
+ /* Unless the user already provided a description of the end of line or
+ end of sentence sequence, select an end of line sequence to compile.
+ If the user provided an empty definition, thus disabling end of line
+ or sentence feature, make it NULL to speed up tests. If GNU
+ extensions are enabled, use end of sentence like in GNU emacs. If
+ disabled, use end of lines. */
+
+ if (context_regex.string)
+ {
+ if (!*context_regex.string)
+ context_regex.string = NULL;
+ }
+ else if (gnu_extensions & !input_reference)
+ context_regex.string = "[.?!][]\"')}]*\\($\\|\t\\| \\)[ \t\n]*";
+ else
+ context_regex.string = "\n";
+
+ if (context_regex.string)
+ compile_regex (&context_regex);
+
+ /* If the user has already provided a non-empty regexp to describe
+ words, compile it. Else, unless this has already been done through
+ a user provided Break character file, construct a fastmap of
+ characters that may appear in a word. If GNU extensions enabled,
+ include only letters of the underlying character set. If disabled,
+ include almost everything, even punctuations; stop only on white
+ space. */
+
+ if (word_regex.string)
+ compile_regex (&word_regex);
+ else if (!break_file)
+ {
+ if (gnu_extensions)
+ {
+
+ /* Simulate \w+. */
+
+ for (character = 0; character < CHAR_SET_SIZE; character++)
+ word_fastmap[character] = !! isalpha (character);
+ }
+ else
+ {
+
+ /* Simulate [^ \t\n]+. */
+
+ memset (word_fastmap, 1, CHAR_SET_SIZE);
+ word_fastmap[' '] = 0;
+ word_fastmap['\t'] = 0;
+ word_fastmap['\n'] = 0;
+ }
+ }
+}
+
+/*------------------------------------------------------------------------.
+| This routine will attempt to swallow a whole file name FILE_NAME into a |
+| contiguous region of memory and return a description of it into BLOCK. |
+| Standard input is assumed whenever FILE_NAME is NULL, empty or "-". |
+| |
+| Previously, in some cases, white space compression was attempted while |
+| inputting text. This was defeating some regexps like default end of |
+| sentence, which checks for two consecutive spaces. If white space |
+| compression is ever reinstated, it should be in output routines. |
+`------------------------------------------------------------------------*/
+
+static void
+swallow_file_in_memory (const char *file_name, BLOCK *block)
+{
+ int file_handle; /* file descriptor number */
+ struct stat stat_block; /* stat block for file */
+ size_t allocated_length; /* allocated length of memory buffer */
+ size_t used_length; /* used length in memory buffer */
+ int read_length; /* number of character gotten on last read */
+
+ /* As special cases, a file name which is NULL or "-" indicates standard
+ input, which is already opened. In all other cases, open the file from
+ its name. */
+ bool using_stdin = !file_name || !*file_name || STREQ (file_name, "-");
+ if (using_stdin)
+ file_handle = STDIN_FILENO;
+ else
+ if ((file_handle = open (file_name, O_RDONLY)) < 0)
+ error (EXIT_FAILURE, errno, "%s", file_name);
+
+ /* If the file is a plain, regular file, allocate the memory buffer all at
+ once and swallow the file in one blow. In other cases, read the file
+ repeatedly in smaller chunks until we have it all, reallocating memory
+ once in a while, as we go. */
+
+ if (fstat (file_handle, &stat_block) < 0)
+ error (EXIT_FAILURE, errno, "%s", file_name);
+
+ if (S_ISREG (stat_block.st_mode))
+ {
+ size_t in_memory_size;
+
+ block->start = xmalloc ((size_t) stat_block.st_size);
+
+ if ((in_memory_size = read (file_handle,
+ block->start, (size_t) stat_block.st_size))
+ != stat_block.st_size)
+ {
+#if MSDOS
+ /* On MSDOS, in memory size may be smaller than the file
+ size, because of end of line conversions. But it can
+ never be smaller than half the file size, because the
+ minimum is when all lines are empty and terminated by
+ CR+LF. */
+ if (in_memory_size != (size_t)-1
+ && in_memory_size >= stat_block.st_size / 2)
+ block->start = xrealloc (block->start, in_memory_size);
+ else
+#endif /* not MSDOS */
+
+ error (EXIT_FAILURE, errno, "%s", file_name);
+ }
+ block->end = block->start + in_memory_size;
+ }
+ else
+ {
+ block->start = xmalloc ((size_t) 1 << SWALLOW_REALLOC_LOG);
+ used_length = 0;
+ allocated_length = (1 << SWALLOW_REALLOC_LOG);
+
+ while (read_length = read (file_handle,
+ block->start + used_length,
+ allocated_length - used_length),
+ read_length > 0)
+ {
+ used_length += read_length;
+ if (used_length == allocated_length)
+ {
+ allocated_length += (1 << SWALLOW_REALLOC_LOG);
+ block->start
+ = xrealloc (block->start, allocated_length);
+ }
+ }
+
+ if (read_length < 0)
+ error (EXIT_FAILURE, errno, "%s", file_name);
+
+ block->end = block->start + used_length;
+ }
+
+ /* Close the file, but only if it was not the standard input. */
+
+ if (! using_stdin && close (file_handle) != 0)
+ error (EXIT_FAILURE, errno, "%s", file_name);
+}
+
+/* Sort and search routines. */
+
+/*--------------------------------------------------------------------------.
+| Compare two words, FIRST and SECOND, and return 0 if they are identical. |
+| Return less than 0 if the first word goes before the second; return |
+| greater than 0 if the first word goes after the second. |
+| |
+| If a word is indeed a prefix of the other, the shorter should go first. |
+`--------------------------------------------------------------------------*/
+
+static int
+compare_words (const void *void_first, const void *void_second)
+{
+#define first ((const WORD *) void_first)
+#define second ((const WORD *) void_second)
+ int length; /* minimum of two lengths */
+ int counter; /* cursor in words */
+ int value; /* value of comparison */
+
+ length = first->size < second->size ? first->size : second->size;
+
+ if (ignore_case)
+ {
+ for (counter = 0; counter < length; counter++)
+ {
+ value = (folded_chars [to_uchar (first->start[counter])]
+ - folded_chars [to_uchar (second->start[counter])]);
+ if (value != 0)
+ return value;
+ }
+ }
+ else
+ {
+ for (counter = 0; counter < length; counter++)
+ {
+ value = (to_uchar (first->start[counter])
+ - to_uchar (second->start[counter]));
+ if (value != 0)
+ return value;
+ }
+ }
+
+ return first->size - second->size;
+#undef first
+#undef second
+}
+
+/*-----------------------------------------------------------------------.
+| Decides which of two OCCURS, FIRST or SECOND, should lexicographically |
+| go first. In case of a tie, preserve the original order through a |
+| pointer comparison. |
+`-----------------------------------------------------------------------*/
+
+static int
+compare_occurs (const void *void_first, const void *void_second)
+{
+#define first ((const OCCURS *) void_first)
+#define second ((const OCCURS *) void_second)
+ int value;
+
+ value = compare_words (&first->key, &second->key);
+ return value == 0 ? first->key.start - second->key.start : value;
+#undef first
+#undef second
+}
+
+/*------------------------------------------------------------.
+| Return !0 if WORD appears in TABLE. Uses a binary search. |
+`------------------------------------------------------------*/
+
+static int
+search_table (WORD *word, WORD_TABLE *table)
+{
+ int lowest; /* current lowest possible index */
+ int highest; /* current highest possible index */
+ int middle; /* current middle index */
+ int value; /* value from last comparison */
+
+ lowest = 0;
+ highest = table->length - 1;
+ while (lowest <= highest)
+ {
+ middle = (lowest + highest) / 2;
+ value = compare_words (word, table->start + middle);
+ if (value < 0)
+ highest = middle - 1;
+ else if (value > 0)
+ lowest = middle + 1;
+ else
+ return 1;
+ }
+ return 0;
+}
+
+/*---------------------------------------------------------------------.
+| Sort the whole occurs table in memory. Presumably, `qsort' does not |
+| take intermediate copies or table elements, so the sort will be |
+| stabilized throughout the comparison routine. |
+`---------------------------------------------------------------------*/
+
+static void
+sort_found_occurs (void)
+{
+
+ /* Only one language for the time being. */
+
+ qsort (occurs_table[0], number_of_occurs[0], sizeof **occurs_table,
+ compare_occurs);
+}
+
+/* Parameter files reading routines. */
+
+/*----------------------------------------------------------------------.
+| Read a file named FILE_NAME, containing a set of break characters. |
+| Build a content to the array word_fastmap in which all characters are |
+| allowed except those found in the file. Characters may be repeated. |
+`----------------------------------------------------------------------*/
+
+static void
+digest_break_file (const char *file_name)
+{
+ BLOCK file_contents; /* to receive a copy of the file */
+ char *cursor; /* cursor in file copy */
+
+ swallow_file_in_memory (file_name, &file_contents);
+
+ /* Make the fastmap and record the file contents in it. */
+
+ memset (word_fastmap, 1, CHAR_SET_SIZE);
+ for (cursor = file_contents.start; cursor < file_contents.end; cursor++)
+ word_fastmap[to_uchar (*cursor)] = 0;
+
+ if (!gnu_extensions)
+ {
+
+ /* If GNU extensions are enabled, the only way to avoid newline as
+ a break character is to write all the break characters in the
+ file with no newline at all, not even at the end of the file.
+ If disabled, spaces, tabs and newlines are always considered as
+ break characters even if not included in the break file. */
+
+ word_fastmap[' '] = 0;
+ word_fastmap['\t'] = 0;
+ word_fastmap['\n'] = 0;
+ }
+
+ /* Return the space of the file, which is no more required. */
+
+ free (file_contents.start);
+}
+
+/*-----------------------------------------------------------------------.
+| Read a file named FILE_NAME, containing one word per line, then |
+| construct in TABLE a table of WORD descriptors for them. The routine |
+| swallows the whole file in memory; this is at the expense of space |
+| needed for newlines, which are useless; however, the reading is fast. |
+`-----------------------------------------------------------------------*/
+
+static void
+digest_word_file (const char *file_name, WORD_TABLE *table)
+{
+ BLOCK file_contents; /* to receive a copy of the file */
+ char *cursor; /* cursor in file copy */
+ char *word_start; /* start of the current word */
+
+ swallow_file_in_memory (file_name, &file_contents);
+
+ table->start = NULL;
+ table->alloc = 0;
+ table->length = 0;
+
+ /* Read the whole file. */
+
+ cursor = file_contents.start;
+ while (cursor < file_contents.end)
+ {
+
+ /* Read one line, and save the word in contains. */
+
+ word_start = cursor;
+ while (cursor < file_contents.end && *cursor != '\n')
+ cursor++;
+
+ /* Record the word in table if it is not empty. */
+
+ if (cursor > word_start)
+ {
+ if (table->length == table->alloc)
+ {
+ if ((SIZE_MAX / sizeof *table->start - 1) / 2 < table->alloc)
+ xalloc_die ();
+ table->alloc = table->alloc * 2 + 1;
+ table->start = xrealloc (table->start,
+ table->alloc * sizeof *table->start);
+ }
+
+ table->start[table->length].start = word_start;
+ table->start[table->length].size = cursor - word_start;
+ table->length++;
+ }
+
+ /* This test allows for an incomplete line at end of file. */
+
+ if (cursor < file_contents.end)
+ cursor++;
+ }
+
+ /* Finally, sort all the words read. */
+
+ qsort (table->start, table->length, sizeof table->start[0], compare_words);
+}
+
+/* Keyword recognition and selection. */
+
+/*----------------------------------------------------------------------.
+| For each keyword in the source text, constructs an OCCURS structure. |
+`----------------------------------------------------------------------*/
+
+static void
+find_occurs_in_text (void)
+{
+ char *cursor; /* for scanning the source text */
+ char *scan; /* for scanning the source text also */
+ char *line_start; /* start of the current input line */
+ char *line_scan; /* newlines scanned until this point */
+ int reference_length; /* length of reference in input mode */
+ WORD possible_key; /* possible key, to ease searches */
+ OCCURS *occurs_cursor; /* current OCCURS under construction */
+
+ char *context_start; /* start of left context */
+ char *context_end; /* end of right context */
+ char *word_start; /* start of word */
+ char *word_end; /* end of word */
+ char *next_context_start; /* next start of left context */
+
+ /* reference_length is always used within `if (input_reference)'.
+ However, GNU C diagnoses that it may be used uninitialized. The
+ following assignment is merely to shut it up. */
+
+ reference_length = 0;
+
+ /* Tracking where lines start is helpful for reference processing. In
+ auto reference mode, this allows counting lines. In input reference
+ mode, this permits finding the beginning of the references.
+
+ The first line begins with the file, skip immediately this very first
+ reference in input reference mode, to help further rejection any word
+ found inside it. Also, unconditionally assigning these variable has
+ the happy effect of shutting up lint. */
+
+ line_start = text_buffer.start;
+ line_scan = line_start;
+ if (input_reference)
+ {
+ SKIP_NON_WHITE (line_scan, text_buffer.end);
+ reference_length = line_scan - line_start;
+ SKIP_WHITE (line_scan, text_buffer.end);
+ }
+
+ /* Process the whole buffer, one line or one sentence at a time. */
+
+ for (cursor = text_buffer.start;
+ cursor < text_buffer.end;
+ cursor = next_context_start)
+ {
+
+ /* `context_start' gets initialized before the processing of each
+ line, or once for the whole buffer if no end of line or sentence
+ sequence separator. */
+
+ context_start = cursor;
+
+ /* If a end of line or end of sentence sequence is defined and
+ non-empty, `next_context_start' will be recomputed to be the end of
+ each line or sentence, before each one is processed. If no such
+ sequence, then `next_context_start' is set at the end of the whole
+ buffer, which is then considered to be a single line or sentence.
+ This test also accounts for the case of an incomplete line or
+ sentence at the end of the buffer. */
+
+ next_context_start = text_buffer.end;
+ if (context_regex.string)
+ switch (re_search (&context_regex.pattern, cursor,
+ text_buffer.end - cursor,
+ 0, text_buffer.end - cursor, &context_regs))
+ {
+ case -2:
+ matcher_error ();
+
+ case -1:
+ break;
+
+ default:
+ next_context_start = cursor + context_regs.end[0];
+ break;
+ }
+
+ /* Include the separator into the right context, but not any suffix
+ white space in this separator; this insures it will be seen in
+ output and will not take more space than necessary. */
+
+ context_end = next_context_start;
+ SKIP_WHITE_BACKWARDS (context_end, context_start);
+
+ /* Read and process a single input line or sentence, one word at a
+ time. */
+
+ while (1)
+ {
+ if (word_regex.string)
+
+ /* If a word regexp has been compiled, use it to skip at the
+ beginning of the next word. If there is no such word, exit
+ the loop. */
+
+ {
+ regoff_t r = re_search (&word_regex.pattern, cursor,
+ context_end - cursor,
+ 0, context_end - cursor, &word_regs);
+ if (r == -2)
+ matcher_error ();
+ if (r == -1)
+ break;
+ word_start = cursor + word_regs.start[0];
+ word_end = cursor + word_regs.end[0];
+ }
+ else
+
+ /* Avoid re_search and use the fastmap to skip to the
+ beginning of the next word. If there is no more word in
+ the buffer, exit the loop. */
+
+ {
+ scan = cursor;
+ while (scan < context_end
+ && !word_fastmap[to_uchar (*scan)])
+ scan++;
+
+ if (scan == context_end)
+ break;
+
+ word_start = scan;
+
+ while (scan < context_end
+ && word_fastmap[to_uchar (*scan)])
+ scan++;
+
+ word_end = scan;
+ }
+
+ /* Skip right to the beginning of the found word. */
+
+ cursor = word_start;
+
+ /* Skip any zero length word. Just advance a single position,
+ then go fetch the next word. */
+
+ if (word_end == word_start)
+ {
+ cursor++;
+ continue;
+ }
+
+ /* This is a genuine, non empty word, so save it as a possible
+ key. Then skip over it. Also, maintain the maximum length of
+ all words read so far. It is mandatory to take the maximum
+ length of all words in the file, without considering if they
+ are actually kept or rejected, because backward jumps at output
+ generation time may fall in *any* word. */
+
+ possible_key.start = cursor;
+ possible_key.size = word_end - word_start;
+ cursor += possible_key.size;
+
+ if (possible_key.size > maximum_word_length)
+ maximum_word_length = possible_key.size;
+
+ /* In input reference mode, update `line_start' from its previous
+ value. Count the lines just in case auto reference mode is
+ also selected. If it happens that the word just matched is
+ indeed part of a reference; just ignore it. */
+
+ if (input_reference)
+ {
+ while (line_scan < possible_key.start)
+ if (*line_scan == '\n')
+ {
+ total_line_count++;
+ line_scan++;
+ line_start = line_scan;
+ SKIP_NON_WHITE (line_scan, text_buffer.end);
+ reference_length = line_scan - line_start;
+ }
+ else
+ line_scan++;
+ if (line_scan > possible_key.start)
+ continue;
+ }
+
+ /* Ignore the word if an `Ignore words' table exists and if it is
+ part of it. Also ignore the word if an `Only words' table and
+ if it is *not* part of it.
+
+ It is allowed that both tables be used at once, even if this
+ may look strange for now. Just ignore a word that would appear
+ in both. If regexps are eventually implemented for these
+ tables, the Ignore table could then reject words that would
+ have been previously accepted by the Only table. */
+
+ if (ignore_file && search_table (&possible_key, &ignore_table))
+ continue;
+ if (only_file && !search_table (&possible_key, &only_table))
+ continue;
+
+ /* A non-empty word has been found. First of all, insure
+ proper allocation of the next OCCURS, and make a pointer to
+ where it will be constructed. */
+
+ if (number_of_occurs[0] == occurs_alloc[0])
+ {
+ if ((SIZE_MAX / sizeof *occurs_table[0] - 1) / 2
+ < occurs_alloc[0])
+ xalloc_die ();
+ occurs_alloc[0] = occurs_alloc[0] * 2 + 1;
+ occurs_table[0] = xrealloc (occurs_table[0],
+ occurs_alloc[0] * sizeof *occurs_table[0]);
+ }
+
+ occurs_cursor = occurs_table[0] + number_of_occurs[0];
+
+ /* Define the refence field, if any. */
+
+ if (auto_reference)
+ {
+
+ /* While auto referencing, update `line_start' from its
+ previous value, counting lines as we go. If input
+ referencing at the same time, `line_start' has been
+ advanced earlier, and the following loop is never really
+ executed. */
+
+ while (line_scan < possible_key.start)
+ if (*line_scan == '\n')
+ {
+ total_line_count++;
+ line_scan++;
+ line_start = line_scan;
+ SKIP_NON_WHITE (line_scan, text_buffer.end);
+ }
+ else
+ line_scan++;
+
+ occurs_cursor->reference = total_line_count;
+ }
+ else if (input_reference)
+ {
+
+ /* If only input referencing, `line_start' has been computed
+ earlier to detect the case the word matched would be part
+ of the reference. The reference position is simply the
+ value of `line_start'. */
+
+ occurs_cursor->reference
+ = (DELTA) (line_start - possible_key.start);
+ if (reference_length > reference_max_width)
+ reference_max_width = reference_length;
+ }
+
+ /* Exclude the reference from the context in simple cases. */
+
+ if (input_reference && line_start == context_start)
+ {
+ SKIP_NON_WHITE (context_start, context_end);
+ SKIP_WHITE (context_start, context_end);
+ }
+
+ /* Completes the OCCURS structure. */
+
+ occurs_cursor->key = possible_key;
+ occurs_cursor->left = context_start - possible_key.start;
+ occurs_cursor->right = context_end - possible_key.start;
+
+ number_of_occurs[0]++;
+ }
+ }
+}
+
+/* Formatting and actual output - service routines. */
+
+/*-----------------------------------------.
+| Prints some NUMBER of spaces on stdout. |
+`-----------------------------------------*/
+
+static void
+print_spaces (int number)
+{
+ int counter;
+
+ for (counter = number; counter > 0; counter--)
+ putchar (' ');
+}
+
+/*-------------------------------------.
+| Prints the field provided by FIELD. |
+`-------------------------------------*/
+
+static void
+print_field (BLOCK field)
+{
+ char *cursor; /* Cursor in field to print */
+ int base; /* Base character, without diacritic */
+ int diacritic; /* Diacritic code for the character */
+
+ /* Whitespace is not really compressed. Instead, each white space
+ character (tab, vt, ht etc.) is printed as one single space. */
+
+ for (cursor = field.start; cursor < field.end; cursor++)
+ {
+ unsigned char character = *cursor;
+ if (edited_flag[character])
+ {
+
+ /* First check if this is a diacriticized character.
+
+ This works only for TeX. I do not know how diacriticized
+ letters work with `roff'. Please someone explain it to me! */
+
+ diacritic = todiac (character);
+ if (diacritic != 0 && output_format == TEX_FORMAT)
+ {
+ base = tobase (character);
+ switch (diacritic)
+ {
+
+ case 1: /* Latin diphthongs */
+ switch (base)
+ {
+ case 'o':
+ fputs ("\\oe{}", stdout);
+ break;
+
+ case 'O':
+ fputs ("\\OE{}", stdout);
+ break;
+
+ case 'a':
+ fputs ("\\ae{}", stdout);
+ break;
+
+ case 'A':
+ fputs ("\\AE{}", stdout);
+ break;
+
+ default:
+ putchar (' ');
+ }
+ break;
+
+ case 2: /* Acute accent */
+ printf ("\\'%s%c", (base == 'i' ? "\\" : ""), base);
+ break;
+
+ case 3: /* Grave accent */
+ printf ("\\`%s%c", (base == 'i' ? "\\" : ""), base);
+ break;
+
+ case 4: /* Circumflex accent */
+ printf ("\\^%s%c", (base == 'i' ? "\\" : ""), base);
+ break;
+
+ case 5: /* Diaeresis */
+ printf ("\\\"%s%c", (base == 'i' ? "\\" : ""), base);
+ break;
+
+ case 6: /* Tilde accent */
+ printf ("\\~%s%c", (base == 'i' ? "\\" : ""), base);
+ break;
+
+ case 7: /* Cedilla */
+ printf ("\\c{%c}", base);
+ break;
+
+ case 8: /* Small circle beneath */
+ switch (base)
+ {
+ case 'a':
+ fputs ("\\aa{}", stdout);
+ break;
+
+ case 'A':
+ fputs ("\\AA{}", stdout);
+ break;
+
+ default:
+ putchar (' ');
+ }
+ break;
+
+ case 9: /* Strike through */
+ switch (base)
+ {
+ case 'o':
+ fputs ("\\o{}", stdout);
+ break;
+
+ case 'O':
+ fputs ("\\O{}", stdout);
+ break;
+
+ default:
+ putchar (' ');
+ }
+ break;
+ }
+ }
+ else
+
+ /* This is not a diacritic character, so handle cases which are
+ really specific to `roff' or TeX. All white space processing
+ is done as the default case of this switch. */
+
+ switch (character)
+ {
+ case '"':
+ /* In roff output format, double any quote. */
+ putchar ('"');
+ putchar ('"');
+ break;
+
+ case '$':
+ case '%':
+ case '&':
+ case '#':
+ case '_':
+ /* In TeX output format, precede these with a backslash. */
+ putchar ('\\');
+ putchar (character);
+ break;
+
+ case '{':
+ case '}':
+ /* In TeX output format, precede these with a backslash and
+ force mathematical mode. */
+ printf ("$\\%c$", character);
+ break;
+
+ case '\\':
+ /* In TeX output mode, request production of a backslash. */
+ fputs ("\\backslash{}", stdout);
+ break;
+
+ default:
+ /* Any other flagged character produces a single space. */
+ putchar (' ');
+ }
+ }
+ else
+ putchar (*cursor);
+ }
+}
+
+/* Formatting and actual output - planning routines. */
+
+/*--------------------------------------------------------------------.
+| From information collected from command line options and input file |
+| readings, compute and fix some output parameter values. |
+`--------------------------------------------------------------------*/
+
+static void
+fix_output_parameters (void)
+{
+ int file_index; /* index in text input file arrays */
+ int line_ordinal; /* line ordinal value for reference */
+ char ordinal_string[12]; /* edited line ordinal for reference */
+ int reference_width; /* width for the whole reference */
+ int character; /* character ordinal */
+ const char *cursor; /* cursor in some constant strings */
+
+ /* In auto reference mode, the maximum width of this field is
+ precomputed and subtracted from the overall line width. Add one for
+ the column which separate the file name from the line number. */
+
+ if (auto_reference)
+ {
+ reference_max_width = 0;
+ for (file_index = 0; file_index < number_input_files; file_index++)
+ {
+ line_ordinal = file_line_count[file_index] + 1;
+ if (file_index > 0)
+ line_ordinal -= file_line_count[file_index - 1];
+ sprintf (ordinal_string, "%d", line_ordinal);
+ reference_width = strlen (ordinal_string);
+ if (input_file_name[file_index])
+ reference_width += strlen (input_file_name[file_index]);
+ if (reference_width > reference_max_width)
+ reference_max_width = reference_width;
+ }
+ reference_max_width++;
+ reference.start = xmalloc ((size_t) reference_max_width + 1);
+ }
+
+ /* If the reference appears to the left of the output line, reserve some
+ space for it right away, including one gap size. */
+
+ if ((auto_reference | input_reference) & !right_reference)
+ line_width -= reference_max_width + gap_size;
+
+ /* The output lines, minimally, will contain from left to right a left
+ context, a gap, and a keyword followed by the right context with no
+ special intervening gap. Half of the line width is dedicated to the
+ left context and the gap, the other half is dedicated to the keyword
+ and the right context; these values are computed once and for all here.
+ There also are tail and head wrap around fields, used when the keyword
+ is near the beginning or the end of the line, or when some long word
+ cannot fit in, but leave place from wrapped around shorter words. The
+ maximum width of these fields are recomputed separately for each line,
+ on a case by case basis. It is worth noting that it cannot happen that
+ both the tail and head fields are used at once. */
+
+ half_line_width = line_width / 2;
+ before_max_width = half_line_width - gap_size;
+ keyafter_max_width = half_line_width;
+
+ /* If truncation_string is the empty string, make it NULL to speed up
+ tests. In this case, truncation_string_length will never get used, so
+ there is no need to set it. */
+
+ if (truncation_string && *truncation_string)
+ truncation_string_length = strlen (truncation_string);
+ else
+ truncation_string = NULL;
+
+ if (gnu_extensions)
+ {
+
+ /* When flagging truncation at the left of the keyword, the
+ truncation mark goes at the beginning of the before field,
+ unless there is a head field, in which case the mark goes at the
+ left of the head field. When flagging truncation at the right
+ of the keyword, the mark goes at the end of the keyafter field,
+ unless there is a tail field, in which case the mark goes at the
+ end of the tail field. Only eight combination cases could arise
+ for truncation marks:
+
+ . None.
+ . One beginning the before field.
+ . One beginning the head field.
+ . One ending the keyafter field.
+ . One ending the tail field.
+ . One beginning the before field, another ending the keyafter field.
+ . One ending the tail field, another beginning the before field.
+ . One ending the keyafter field, another beginning the head field.
+
+ So, there is at most two truncation marks, which could appear both
+ on the left side of the center of the output line, both on the
+ right side, or one on either side. */
+
+ before_max_width -= 2 * truncation_string_length;
+ keyafter_max_width -= 2 * truncation_string_length;
+ }
+ else
+ {
+
+ /* I never figured out exactly how UNIX' ptx plans the output width
+ of its various fields. If GNU extensions are disabled, do not
+ try computing the field widths correctly; instead, use the
+ following formula, which does not completely imitate UNIX' ptx,
+ but almost. */
+
+ keyafter_max_width -= 2 * truncation_string_length + 1;
+ }
+
+ /* Compute which characters need special output processing. Initialize
+ by flagging any white space character. Some systems do not consider
+ form feed as a space character, but we do. */
+
+ for (character = 0; character < CHAR_SET_SIZE; character++)
+ edited_flag[character] = !! isspace (character);
+ edited_flag['\f'] = 1;
+
+ /* Complete the special character flagging according to selected output
+ format. */
+
+ switch (output_format)
+ {
+ case UNKNOWN_FORMAT:
+ /* Should never happen. */
+
+ case DUMB_FORMAT:
+ break;
+
+ case ROFF_FORMAT:
+
+ /* `Quote' characters should be doubled. */
+
+ edited_flag['"'] = 1;
+ break;
+
+ case TEX_FORMAT:
+
+ /* Various characters need special processing. */
+
+ for (cursor = "$%&#_{}\\"; *cursor; cursor++)
+ edited_flag[to_uchar (*cursor)] = 1;
+
+ /* Any character with 8th bit set will print to a single space, unless
+ it is diacriticized. */
+
+ for (character = 0200; character < CHAR_SET_SIZE; character++)
+ edited_flag[character] = todiac (character) != 0;
+ break;
+ }
+}
+
+/*------------------------------------------------------------------.
+| Compute the position and length of all the output fields, given a |
+| pointer to some OCCURS. |
+`------------------------------------------------------------------*/
+
+static void
+define_all_fields (OCCURS *occurs)
+{
+ int tail_max_width; /* allowable width of tail field */
+ int head_max_width; /* allowable width of head field */
+ char *cursor; /* running cursor in source text */
+ char *left_context_start; /* start of left context */
+ char *right_context_end; /* end of right context */
+ char *left_field_start; /* conservative start for `head'/`before' */
+ int file_index; /* index in text input file arrays */
+ const char *file_name; /* file name for reference */
+ int line_ordinal; /* line ordinal for reference */
+
+ /* Define `keyafter', start of left context and end of right context.
+ `keyafter' starts at the saved position for keyword and extend to the
+ right from the end of the keyword, eating separators or full words, but
+ not beyond maximum allowed width for `keyafter' field or limit for the
+ right context. Suffix spaces will be removed afterwards. */
+
+ keyafter.start = occurs->key.start;
+ keyafter.end = keyafter.start + occurs->key.size;
+ left_context_start = keyafter.start + occurs->left;
+ right_context_end = keyafter.start + occurs->right;
+
+ cursor = keyafter.end;
+ while (cursor < right_context_end
+ && cursor <= keyafter.start + keyafter_max_width)
+ {
+ keyafter.end = cursor;
+ SKIP_SOMETHING (cursor, right_context_end);
+ }
+ if (cursor <= keyafter.start + keyafter_max_width)
+ keyafter.end = cursor;
+
+ keyafter_truncation = truncation_string && keyafter.end < right_context_end;
+
+ SKIP_WHITE_BACKWARDS (keyafter.end, keyafter.start);
+
+ /* When the left context is wide, it might take some time to catch up from
+ the left context boundary to the beginning of the `head' or `before'
+ fields. So, in this case, to speed the catchup, we jump back from the
+ keyword, using some secure distance, possibly falling in the middle of
+ a word. A secure backward jump would be at least half the maximum
+ width of a line, plus the size of the longest word met in the whole
+ input. We conclude this backward jump by a skip forward of at least
+ one word. In this manner, we should not inadvertently accept only part
+ of a word. From the reached point, when it will be time to fix the
+ beginning of `head' or `before' fields, we will skip forward words or
+ delimiters until we get sufficiently near. */
+
+ if (-occurs->left > half_line_width + maximum_word_length)
+ {
+ left_field_start
+ = keyafter.start - (half_line_width + maximum_word_length);
+ SKIP_SOMETHING (left_field_start, keyafter.start);
+ }
+ else
+ left_field_start = keyafter.start + occurs->left;
+
+ /* `before' certainly ends at the keyword, but not including separating
+ spaces. It starts after than the saved value for the left context, by
+ advancing it until it falls inside the maximum allowed width for the
+ before field. There will be no prefix spaces either. `before' only
+ advances by skipping single separators or whole words. */
+
+ before.start = left_field_start;
+ before.end = keyafter.start;
+ SKIP_WHITE_BACKWARDS (before.end, before.start);
+
+ while (before.start + before_max_width < before.end)
+ SKIP_SOMETHING (before.start, before.end);
+
+ if (truncation_string)
+ {
+ cursor = before.start;
+ SKIP_WHITE_BACKWARDS (cursor, text_buffer.start);
+ before_truncation = cursor > left_context_start;
+ }
+ else
+ before_truncation = 0;
+
+ SKIP_WHITE (before.start, text_buffer.end);
+
+ /* The tail could not take more columns than what has been left in the
+ left context field, and a gap is mandatory. It starts after the
+ right context, and does not contain prefixed spaces. It ends at
+ the end of line, the end of buffer or when the tail field is full,
+ whichever comes first. It cannot contain only part of a word, and
+ has no suffixed spaces. */
+
+ tail_max_width
+ = before_max_width - (before.end - before.start) - gap_size;
+
+ if (tail_max_width > 0)
+ {
+ tail.start = keyafter.end;
+ SKIP_WHITE (tail.start, text_buffer.end);
+
+ tail.end = tail.start;
+ cursor = tail.end;
+ while (cursor < right_context_end
+ && cursor < tail.start + tail_max_width)
+ {
+ tail.end = cursor;
+ SKIP_SOMETHING (cursor, right_context_end);
+ }
+
+ if (cursor < tail.start + tail_max_width)
+ tail.end = cursor;
+
+ if (tail.end > tail.start)
+ {
+ keyafter_truncation = 0;
+ tail_truncation = truncation_string && tail.end < right_context_end;
+ }
+ else
+ tail_truncation = 0;
+
+ SKIP_WHITE_BACKWARDS (tail.end, tail.start);
+ }
+ else
+ {
+
+ /* No place left for a tail field. */
+
+ tail.start = NULL;
+ tail.end = NULL;
+ tail_truncation = 0;
+ }
+
+ /* `head' could not take more columns than what has been left in the right
+ context field, and a gap is mandatory. It ends before the left
+ context, and does not contain suffixed spaces. Its pointer is advanced
+ until the head field has shrunk to its allowed width. It cannot
+ contain only part of a word, and has no suffixed spaces. */
+
+ head_max_width
+ = keyafter_max_width - (keyafter.end - keyafter.start) - gap_size;
+
+ if (head_max_width > 0)
+ {
+ head.end = before.start;
+ SKIP_WHITE_BACKWARDS (head.end, text_buffer.start);
+
+ head.start = left_field_start;
+ while (head.start + head_max_width < head.end)
+ SKIP_SOMETHING (head.start, head.end);
+
+ if (head.end > head.start)
+ {
+ before_truncation = 0;
+ head_truncation = (truncation_string
+ && head.start > left_context_start);
+ }
+ else
+ head_truncation = 0;
+
+ SKIP_WHITE (head.start, head.end);
+ }
+ else
+ {
+
+ /* No place left for a head field. */
+
+ head.start = NULL;
+ head.end = NULL;
+ head_truncation = 0;
+ }
+
+ if (auto_reference)
+ {
+
+ /* Construct the reference text in preallocated space from the file
+ name and the line number. Find out in which file the reference
+ occurred. Standard input yields an empty file name. Insure line
+ numbers are one based, even if they are computed zero based. */
+
+ file_index = 0;
+ while (file_line_count[file_index] < occurs->reference)
+ file_index++;
+
+ file_name = input_file_name[file_index];
+ if (!file_name)
+ file_name = "";
+
+ line_ordinal = occurs->reference + 1;
+ if (file_index > 0)
+ line_ordinal -= file_line_count[file_index - 1];
+
+ sprintf (reference.start, "%s:%d", file_name, line_ordinal);
+ reference.end = reference.start + strlen (reference.start);
+ }
+ else if (input_reference)
+ {
+
+ /* Reference starts at saved position for reference and extends right
+ until some white space is met. */
+
+ reference.start = keyafter.start + (DELTA) occurs->reference;
+ reference.end = reference.start;
+ SKIP_NON_WHITE (reference.end, right_context_end);
+ }
+}
+
+/* Formatting and actual output - control routines. */
+
+/*----------------------------------------------------------------------.
+| Output the current output fields as one line for `troff' or `nroff'. |
+`----------------------------------------------------------------------*/
+
+static void
+output_one_roff_line (void)
+{
+ /* Output the `tail' field. */
+
+ printf (".%s \"", macro_name);
+ print_field (tail);
+ if (tail_truncation)
+ fputs (truncation_string, stdout);
+ putchar ('"');
+
+ /* Output the `before' field. */
+
+ fputs (" \"", stdout);
+ if (before_truncation)
+ fputs (truncation_string, stdout);
+ print_field (before);
+ putchar ('"');
+
+ /* Output the `keyafter' field. */
+
+ fputs (" \"", stdout);
+ print_field (keyafter);
+ if (keyafter_truncation)
+ fputs (truncation_string, stdout);
+ putchar ('"');
+
+ /* Output the `head' field. */
+
+ fputs (" \"", stdout);
+ if (head_truncation)
+ fputs (truncation_string, stdout);
+ print_field (head);
+ putchar ('"');
+
+ /* Conditionally output the `reference' field. */
+
+ if (auto_reference | input_reference)
+ {
+ fputs (" \"", stdout);
+ print_field (reference);
+ putchar ('"');
+ }
+
+ putchar ('\n');
+}
+
+/*---------------------------------------------------------.
+| Output the current output fields as one line for `TeX'. |
+`---------------------------------------------------------*/
+
+static void
+output_one_tex_line (void)
+{
+ BLOCK key; /* key field, isolated */
+ BLOCK after; /* after field, isolated */
+ char *cursor; /* running cursor in source text */
+
+ printf ("\\%s ", macro_name);
+ putchar ('{');
+ print_field (tail);
+ fputs ("}{", stdout);
+ print_field (before);
+ fputs ("}{", stdout);
+ key.start = keyafter.start;
+ after.end = keyafter.end;
+ cursor = keyafter.start;
+ SKIP_SOMETHING (cursor, keyafter.end);
+ key.end = cursor;
+ after.start = cursor;
+ print_field (key);
+ fputs ("}{", stdout);
+ print_field (after);
+ fputs ("}{", stdout);
+ print_field (head);
+ putchar ('}');
+ if (auto_reference | input_reference)
+ {
+ putchar ('{');
+ print_field (reference);
+ putchar ('}');
+ }
+ putchar ('\n');
+}
+
+/*-------------------------------------------------------------------.
+| Output the current output fields as one line for a dumb terminal. |
+`-------------------------------------------------------------------*/
+
+static void
+output_one_dumb_line (void)
+{
+ if (!right_reference)
+ {
+ if (auto_reference)
+ {
+
+ /* Output the `reference' field, in such a way that GNU emacs
+ next-error will handle it. The ending colon is taken from the
+ gap which follows. */
+
+ print_field (reference);
+ putchar (':');
+ print_spaces (reference_max_width
+ + gap_size
+ - (reference.end - reference.start)
+ - 1);
+ }
+ else
+ {
+
+ /* Output the `reference' field and its following gap. */
+
+ print_field (reference);
+ print_spaces (reference_max_width
+ + gap_size
+ - (reference.end - reference.start));
+ }
+ }
+
+ if (tail.start < tail.end)
+ {
+ /* Output the `tail' field. */
+
+ print_field (tail);
+ if (tail_truncation)
+ fputs (truncation_string, stdout);
+
+ print_spaces (half_line_width - gap_size
+ - (before.end - before.start)
+ - (before_truncation ? truncation_string_length : 0)
+ - (tail.end - tail.start)
+ - (tail_truncation ? truncation_string_length : 0));
+ }
+ else
+ print_spaces (half_line_width - gap_size
+ - (before.end - before.start)
+ - (before_truncation ? truncation_string_length : 0));
+
+ /* Output the `before' field. */
+
+ if (before_truncation)
+ fputs (truncation_string, stdout);
+ print_field (before);
+
+ print_spaces (gap_size);
+
+ /* Output the `keyafter' field. */
+
+ print_field (keyafter);
+ if (keyafter_truncation)
+ fputs (truncation_string, stdout);
+
+ if (head.start < head.end)
+ {
+ /* Output the `head' field. */
+
+ print_spaces (half_line_width
+ - (keyafter.end - keyafter.start)
+ - (keyafter_truncation ? truncation_string_length : 0)
+ - (head.end - head.start)
+ - (head_truncation ? truncation_string_length : 0));
+ if (head_truncation)
+ fputs (truncation_string, stdout);
+ print_field (head);
+ }
+ else
+
+ if ((auto_reference | input_reference) & right_reference)
+ print_spaces (half_line_width
+ - (keyafter.end - keyafter.start)
+ - (keyafter_truncation ? truncation_string_length : 0));
+
+ if ((auto_reference | input_reference) & right_reference)
+ {
+ /* Output the `reference' field. */
+
+ print_spaces (gap_size);
+ print_field (reference);
+ }
+
+ putchar ('\n');
+}
+
+/*------------------------------------------------------------------------.
+| Scan the whole occurs table and, for each entry, output one line in the |
+| appropriate format. |
+`------------------------------------------------------------------------*/
+
+static void
+generate_all_output (void)
+{
+ size_t occurs_index; /* index of keyword entry being processed */
+ OCCURS *occurs_cursor; /* current keyword entry being processed */
+
+ /* The following assignments are useful to provide default values in case
+ line contexts or references are not used, in which case these variables
+ would never be computed. */
+
+ tail.start = NULL;
+ tail.end = NULL;
+ tail_truncation = 0;
+
+ head.start = NULL;
+ head.end = NULL;
+ head_truncation = 0;
+
+ /* Loop over all keyword occurrences. */
+
+ occurs_cursor = occurs_table[0];
+
+ for (occurs_index = 0; occurs_index < number_of_occurs[0]; occurs_index++)
+ {
+ /* Compute the exact size of every field and whenever truncation flags
+ are present or not. */
+
+ define_all_fields (occurs_cursor);
+
+ /* Produce one output line according to selected format. */
+
+ switch (output_format)
+ {
+ case UNKNOWN_FORMAT:
+ /* Should never happen. */
+
+ case DUMB_FORMAT:
+ output_one_dumb_line ();
+ break;
+
+ case ROFF_FORMAT:
+ output_one_roff_line ();
+ break;
+
+ case TEX_FORMAT:
+ output_one_tex_line ();
+ break;
+ }
+
+ /* Advance the cursor into the occurs table. */
+
+ occurs_cursor++;
+ }
+}
+
+/* Option decoding and main program. */
+
+/*------------------------------------------------------.
+| Print program identification and options, then exit. |
+`------------------------------------------------------*/
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [INPUT]... (without -G)\n\
+ or: %s -G [OPTION]... [INPUT [OUTPUT]]\n"),
+ program_name, program_name);
+ fputs (_("\
+Output a permuted index, including context, of the words in the input files.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -A, --auto-reference output automatically generated references\n\
+ -G, --traditional behave more like System V `ptx'\n\
+ -F, --flag-truncation=STRING use STRING for flagging line truncations\n\
+"), stdout);
+ fputs (_("\
+ -M, --macro-name=STRING macro name to use instead of `xx'\n\
+ -O, --format=roff generate output as roff directives\n\
+ -R, --right-side-refs put references at right, not counted in -w\n\
+ -S, --sentence-regexp=REGEXP for end of lines or end of sentences\n\
+ -T, --format=tex generate output as TeX directives\n\
+"), stdout);
+ fputs (_("\
+ -W, --word-regexp=REGEXP use REGEXP to match each keyword\n\
+ -b, --break-file=FILE word break characters in this FILE\n\
+ -f, --ignore-case fold lower case to upper case for sorting\n\
+ -g, --gap-size=NUMBER gap size in columns between output fields\n\
+ -i, --ignore-file=FILE read ignore word list from FILE\n\
+ -o, --only-file=FILE read only word list from this FILE\n\
+"), stdout);
+ fputs (_("\
+ -r, --references first field of each line is a reference\n\
+ -t, --typeset-mode - not implemented -\n\
+ -w, --width=NUMBER output width in columns, reference excluded\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+With no FILE or if FILE is -, read Standard Input. `-F /' by default.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/*----------------------------------------------------------------------.
+| Main program. Decode ARGC arguments passed through the ARGV array of |
+| strings, then launch execution. |
+`----------------------------------------------------------------------*/
+
+/* Long options equivalences. */
+static const struct option long_options[] =
+{
+ {"auto-reference", no_argument, NULL, 'A'},
+ {"break-file", required_argument, NULL, 'b'},
+ {"copyright", no_argument, NULL, 'C'}, /* Deprecated, remove in 2007. */
+ {"flag-truncation", required_argument, NULL, 'F'},
+ {"ignore-case", no_argument, NULL, 'f'},
+ {"gap-size", required_argument, NULL, 'g'},
+ {"ignore-file", required_argument, NULL, 'i'},
+ {"macro-name", required_argument, NULL, 'M'},
+ {"only-file", required_argument, NULL, 'o'},
+ {"references", no_argument, NULL, 'r'},
+ {"right-side-refs", no_argument, NULL, 'R'},
+ {"format", required_argument, NULL, 10},
+ {"sentence-regexp", required_argument, NULL, 'S'},
+ {"traditional", no_argument, NULL, 'G'},
+ {"typeset-mode", no_argument, NULL, 't'},
+ {"width", required_argument, NULL, 'w'},
+ {"word-regexp", required_argument, NULL, 'W'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0},
+};
+
+static char const* const format_args[] =
+{
+ "roff", "tex", NULL
+};
+
+static enum Format const format_vals[] =
+{
+ ROFF_FORMAT, TEX_FORMAT
+};
+
+int
+main (int argc, char **argv)
+{
+ int optchar; /* argument character */
+ int file_index; /* index in text input file arrays */
+
+ /* Decode program options. */
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+#if HAVE_SETCHRCLASS
+ setchrclass (NULL);
+#endif
+
+ while (optchar = getopt_long (argc, argv, "ACF:GM:ORS:TW:b:i:fg:o:trw:",
+ long_options, NULL),
+ optchar != EOF)
+ {
+ switch (optchar)
+ {
+ default:
+ usage (EXIT_FAILURE);
+
+ case 'G':
+ gnu_extensions = false;
+ break;
+
+ case 'b':
+ break_file = optarg;
+ break;
+
+ case 'f':
+ ignore_case = true;
+ break;
+
+ case 'g':
+ {
+ unsigned long int tmp_ulong;
+ if (xstrtoul (optarg, NULL, 0, &tmp_ulong, NULL) != LONGINT_OK
+ || ! (0 < tmp_ulong && tmp_ulong <= INT_MAX))
+ error (EXIT_FAILURE, 0, _("invalid gap width: %s"),
+ quotearg (optarg));
+ gap_size = tmp_ulong;
+ break;
+ }
+
+ case 'i':
+ ignore_file = optarg;
+ break;
+
+ case 'o':
+ only_file = optarg;
+ break;
+
+ case 'r':
+ input_reference = true;
+ break;
+
+ case 't':
+ /* Yet to understand... */
+ break;
+
+ case 'w':
+ {
+ unsigned long int tmp_ulong;
+ if (xstrtoul (optarg, NULL, 0, &tmp_ulong, NULL) != LONGINT_OK
+ || ! (0 < tmp_ulong && tmp_ulong <= INT_MAX))
+ error (EXIT_FAILURE, 0, _("invalid line width: %s"),
+ quotearg (optarg));
+ line_width = tmp_ulong;
+ break;
+ }
+
+ case 'A':
+ auto_reference = true;
+ break;
+
+ case 'F':
+ truncation_string = copy_unescaped_string (optarg);
+ break;
+
+ case 'M':
+ macro_name = optarg;
+ break;
+
+ case 'O':
+ output_format = ROFF_FORMAT;
+ break;
+
+ case 'R':
+ right_reference = true;
+ break;
+
+ case 'S':
+ context_regex.string = copy_unescaped_string (optarg);
+ break;
+
+ case 'T':
+ output_format = TEX_FORMAT;
+ break;
+
+ case 'W':
+ word_regex.string = copy_unescaped_string (optarg);
+ if (!*word_regex.string)
+ word_regex.string = NULL;
+ break;
+
+ case 10:
+ output_format = XARGMATCH ("--format", optarg,
+ format_args, format_vals);
+ case_GETOPT_HELP_CHAR;
+
+ case 'C':
+ error (0, 0, _("\
+the --copyright option is deprecated; use --version instead"));
+ /* fallthrough */
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ }
+ }
+
+ /* Process remaining arguments. If GNU extensions are enabled, process
+ all arguments as input parameters. If disabled, accept at most two
+ arguments, the second of which is an output parameter. */
+
+ if (optind == argc)
+ {
+
+ /* No more argument simply means: read standard input. */
+
+ input_file_name = xmalloc (sizeof *input_file_name);
+ file_line_count = xmalloc (sizeof *file_line_count);
+ number_input_files = 1;
+ input_file_name[0] = NULL;
+ }
+ else if (gnu_extensions)
+ {
+ number_input_files = argc - optind;
+ input_file_name = xmalloc (number_input_files * sizeof *input_file_name);
+ file_line_count = xmalloc (number_input_files * sizeof *file_line_count);
+
+ for (file_index = 0; file_index < number_input_files; file_index++)
+ {
+ input_file_name[file_index] = argv[optind];
+ if (!*argv[optind] || STREQ (argv[optind], "-"))
+ input_file_name[0] = NULL;
+ else
+ input_file_name[0] = argv[optind];
+ optind++;
+ }
+ }
+ else
+ {
+
+ /* There is one necessary input file. */
+
+ number_input_files = 1;
+ input_file_name = xmalloc (sizeof *input_file_name);
+ file_line_count = xmalloc (sizeof *file_line_count);
+ if (!*argv[optind] || STREQ (argv[optind], "-"))
+ input_file_name[0] = NULL;
+ else
+ input_file_name[0] = argv[optind];
+ optind++;
+
+ /* Redirect standard output, only if requested. */
+
+ if (optind < argc)
+ {
+ if (! freopen (argv[optind], "w", stdout))
+ error (EXIT_FAILURE, errno, "%s", argv[optind]);
+ optind++;
+ }
+
+ /* Diagnose any other argument as an error. */
+
+ if (optind < argc)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind]));
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ /* If the output format has not been explicitly selected, choose dumb
+ terminal format if GNU extensions are enabled, else `roff' format. */
+
+ if (output_format == UNKNOWN_FORMAT)
+ output_format = gnu_extensions ? DUMB_FORMAT : ROFF_FORMAT;
+
+ /* Initialize the main tables. */
+
+ initialize_regex ();
+
+ /* Read `Break character' file, if any. */
+
+ if (break_file)
+ digest_break_file (break_file);
+
+ /* Read `Ignore words' file and `Only words' files, if any. If any of
+ these files is empty, reset the name of the file to NULL, to avoid
+ unnecessary calls to search_table. */
+
+ if (ignore_file)
+ {
+ digest_word_file (ignore_file, &ignore_table);
+ if (ignore_table.length == 0)
+ ignore_file = NULL;
+ }
+
+ if (only_file)
+ {
+ digest_word_file (only_file, &only_table);
+ if (only_table.length == 0)
+ only_file = NULL;
+ }
+
+ /* Prepare to study all the input files. */
+
+ number_of_occurs[0] = 0;
+ total_line_count = 0;
+ maximum_word_length = 0;
+ reference_max_width = 0;
+
+ for (file_index = 0; file_index < number_input_files; file_index++)
+ {
+
+ /* Read the file in core, than study it. */
+
+ swallow_file_in_memory (input_file_name[file_index], &text_buffer);
+ find_occurs_in_text ();
+
+ /* Maintain for each file how many lines has been read so far when its
+ end is reached. Incrementing the count first is a simple kludge to
+ handle a possible incomplete line at end of file. */
+
+ total_line_count++;
+ file_line_count[file_index] = total_line_count;
+ }
+
+ /* Do the output process phase. */
+
+ sort_found_occurs ();
+ fix_output_parameters ();
+ generate_all_output ();
+
+ /* All done. */
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/pwd.c b/src/pwd.c
new file mode 100644
index 0000000..4f16b73
--- /dev/null
+++ b/src/pwd.c
@@ -0,0 +1,323 @@
+/* pwd - print current directory
+ Copyright (C) 1994-1997, 1999-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+#include <getopt.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "dirfd.h"
+#include "error.h"
+#include "long-options.h"
+#include "quote.h"
+#include "root-dev-ino.h"
+#include "xgetcwd.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "pwd"
+
+#define AUTHORS "Jim Meyering"
+
+struct file_name
+{
+ char *buf;
+ size_t n_alloc;
+ char *start;
+};
+
+/* The name this program was run with. */
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]\n"), program_name);
+ fputs (_("\
+Print the full filename of the current working directory.\n\
+\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (USAGE_BUILTIN_WARNING, PROGRAM_NAME);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+static void
+file_name_free (struct file_name *p)
+{
+ free (p->buf);
+ free (p);
+}
+
+static struct file_name *
+file_name_init (void)
+{
+ struct file_name *p = xmalloc (sizeof *p);
+
+ /* Start with a buffer larger than PATH_MAX, but beware of systems
+ on which PATH_MAX is very large -- e.g., INT_MAX. */
+ p->n_alloc = MIN (2 * PATH_MAX, 32 * 1024);
+
+ p->buf = xmalloc (p->n_alloc);
+ p->start = p->buf + (p->n_alloc - 1);
+ p->start[0] = '\0';
+ return p;
+}
+
+/* Prepend the name S of length S_LEN, to the growing file_name, P. */
+static void
+file_name_prepend (struct file_name *p, char const *s, size_t s_len)
+{
+ size_t n_free = p->start - p->buf;
+ if (n_free < 1 + s_len)
+ {
+ size_t half = p->n_alloc + 1 + s_len;
+ /* Use xnmalloc+free rather than xnrealloc, since with the latter
+ we'd end up copying the data twice: once via realloc, then again
+ to align it with the end of the new buffer. With xnmalloc, we
+ copy it only once. */
+ char *q = xnmalloc (2, half);
+ size_t n_used = p->n_alloc - n_free;
+ p->start = q + 2 * half - n_used;
+ memcpy (p->start, p->buf + n_free, n_used);
+ free (p->buf);
+ p->buf = q;
+ p->n_alloc = 2 * half;
+ }
+
+ p->start -= 1 + s_len;
+ p->start[0] = '/';
+ memcpy (p->start + 1, s, s_len);
+}
+
+/* Return a string (malloc'd) consisting of N `/'-separated ".." components. */
+static char *
+nth_parent (size_t n)
+{
+ char *buf = xnmalloc (3, n);
+ char *p = buf;
+ size_t i;
+
+ for (i = 0; i < n; i++)
+ {
+ memcpy (p, "../", 3);
+ p += 3;
+ }
+ p[-1] = '\0';
+ return buf;
+}
+
+/* Determine the basename of the current directory, where DOT_SB is the
+ result of lstat'ing "." and prepend that to the file name in *FILE_NAME.
+ Find the directory entry in `..' that matches the dev/i-node of DOT_SB.
+ Upon success, update *DOT_SB with stat information of `..', chdir to `..',
+ and prepend "/basename" to FILE_NAME.
+ Otherwise, exit with a diagnostic.
+ PARENT_HEIGHT is the number of levels `..' is above the starting directory.
+ The first time this function is called (from the initial directory),
+ PARENT_HEIGHT is 1. This is solely for diagnostics.
+ Exit nonzero upon error. */
+
+static void
+find_dir_entry (struct stat *dot_sb, struct file_name *file_name,
+ size_t parent_height)
+{
+ DIR *dirp;
+ int fd;
+ struct stat parent_sb;
+ bool use_lstat;
+ bool found;
+
+ dirp = opendir ("..");
+ if (dirp == NULL)
+ error (EXIT_FAILURE, errno, _("cannot open directory %s"),
+ quote (nth_parent (parent_height)));
+
+ fd = dirfd (dirp);
+ if ((0 <= fd ? fchdir (fd) : chdir ("..")) < 0)
+ error (EXIT_FAILURE, errno, _("failed to chdir to %s"),
+ quote (nth_parent (parent_height)));
+
+ if ((0 <= fd ? fstat (fd, &parent_sb) : stat (".", &parent_sb)) < 0)
+ error (EXIT_FAILURE, errno, _("failed to stat %s"),
+ quote (nth_parent (parent_height)));
+
+ /* If parent and child directory are on different devices, then we
+ can't rely on d_ino for useful i-node numbers; use lstat instead. */
+ use_lstat = (parent_sb.st_dev != dot_sb->st_dev);
+
+ found = false;
+ while (1)
+ {
+ struct dirent const *dp;
+ struct stat ent_sb;
+ ino_t ino;
+
+ errno = 0;
+ if ((dp = readdir_ignoring_dot_and_dotdot (dirp)) == NULL)
+ {
+ if (errno)
+ {
+ /* Save/restore errno across closedir call. */
+ int e = errno;
+ closedir (dirp);
+ errno = e;
+
+ /* Arrange to give a diagnostic after exiting this loop. */
+ dirp = NULL;
+ }
+ break;
+ }
+
+ ino = D_INO (dp);
+
+ if (ino == NOT_AN_INODE_NUMBER || use_lstat)
+ {
+ if (lstat (dp->d_name, &ent_sb) < 0)
+ {
+ /* Skip any entry we can't stat. */
+ continue;
+ }
+ ino = ent_sb.st_ino;
+ }
+
+ if (ino != dot_sb->st_ino)
+ continue;
+
+ /* If we're not crossing a device boundary, then a simple i-node
+ match is enough. */
+ if ( ! use_lstat || ent_sb.st_dev == dot_sb->st_dev)
+ {
+ file_name_prepend (file_name, dp->d_name, _D_EXACT_NAMLEN (dp));
+ found = true;
+ break;
+ }
+ }
+
+ if (dirp == NULL || closedir (dirp) != 0)
+ {
+ /* Note that this diagnostic serves for both readdir
+ and closedir failures. */
+ error (EXIT_FAILURE, errno, _("reading directory %s"),
+ quote (nth_parent (parent_height)));
+ }
+
+ if ( ! found)
+ error (EXIT_FAILURE, 0,
+ _("couldn't find directory entry in %s with matching i-node"),
+ quote (nth_parent (parent_height)));
+
+ *dot_sb = parent_sb;
+}
+
+/* Construct the full, absolute name of the current working
+ directory and store it in *FILE_NAME.
+ The getcwd function performs nearly the same task, but is typically
+ unable to handle names longer than PATH_MAX. This function has
+ no such limitation. However, this function *can* fail due to
+ permission problems or a lack of memory, while Linux's getcwd
+ function works regardless of restricted permissions on parent
+ directories. Upon failure, give a diagnostic and exit nonzero.
+
+ Note: although this function is similar to getcwd, it has a fundamental
+ difference in that it gives a diagnostic and exits upon failure.
+ I would have liked a function that did not exit, and that could be
+ used as a getcwd replacement. Unfortunately, considering all of
+ the information the caller would require in order to produce good
+ diagnostics, it doesn't seem worth the added complexity.
+ In any case, any getcwd replacement must *not* exceed the PATH_MAX
+ limitation. Otherwise, functions like `chdir' would fail with
+ ENAMETOOLONG.
+
+ FIXME-maybe: if find_dir_entry fails due to permissions, try getcwd,
+ in case the unreadable directory is close enough to the root that
+ getcwd works from there. */
+
+static void
+robust_getcwd (struct file_name *file_name)
+{
+ size_t height = 1;
+ struct dev_ino dev_ino_buf;
+ struct dev_ino *root_dev_ino = get_root_dev_ino (&dev_ino_buf);
+ struct stat dot_sb;
+
+ if (root_dev_ino == NULL)
+ error (EXIT_FAILURE, errno, _("failed to get attributes of %s"),
+ quote ("/"));
+
+ if (stat (".", &dot_sb) < 0)
+ error (EXIT_FAILURE, errno, _("failed to stat %s"), quote ("."));
+
+ while (1)
+ {
+ /* If we've reached the root, we're done. */
+ if (SAME_INODE (dot_sb, *root_dev_ino))
+ break;
+
+ find_dir_entry (&dot_sb, file_name, height++);
+ }
+
+ /* See if a leading slash is needed; file_name_prepend adds one. */
+ if (file_name->start[0] == '\0')
+ file_name_prepend (file_name, "", 0);
+}
+
+int
+main (int argc, char **argv)
+{
+ char *wd;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "", NULL, NULL) != -1)
+ usage (EXIT_FAILURE);
+
+ if (optind < argc)
+ error (0, 0, _("ignoring non-option arguments"));
+
+ wd = xgetcwd ();
+ if (wd != NULL)
+ {
+ puts (wd);
+ free (wd);
+ }
+ else
+ {
+ struct file_name *file_name = file_name_init ();
+ robust_getcwd (file_name);
+ puts (file_name->start);
+ file_name_free (file_name);
+ }
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/readlink.c b/src/readlink.c
new file mode 100644
index 0000000..121c7ff
--- /dev/null
+++ b/src/readlink.c
@@ -0,0 +1,174 @@
+/* readlink -- display value of a symbolic link.
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Dmitry V. Levin */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "canonicalize.h"
+#include "error.h"
+#include "xreadlink.h"
+#include "quote.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "readlink"
+
+#define AUTHORS "Dmitry V. Levin"
+
+/* Name this program was run with. */
+char *program_name;
+
+/* If true, do not output the trailing newline. */
+static bool no_newline;
+
+/* If true, report error messages. */
+static bool verbose;
+
+static struct option const longopts[] =
+{
+ {"canonicalize", no_argument, NULL, 'f'},
+ {"canonicalize-existing", no_argument, NULL, 'e'},
+ {"canonicalize-missing", no_argument, NULL, 'm'},
+ {"no-newline", no_argument, NULL, 'n'},
+ {"quiet", no_argument, NULL, 'q'},
+ {"silent", no_argument, NULL, 's'},
+ {"verbose", no_argument, NULL, 'v'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]... FILE\n"), program_name);
+ fputs (_("Display value of a symbolic link on standard output.\n\n"),
+ stdout);
+ fputs (_("\
+ -f, --canonicalize canonicalize by following every symlink in\n\
+ every component of the given name recursively;\n\
+ all but the last component must exist\n\
+ -e, --canonicalize-existing canonicalize by following every symlink in\n\
+ every component of the given name recursively,\n\
+ all components must exist\n\
+"), stdout);
+ fputs (_("\
+ -m, --canonicalize-missing canonicalize by following every symlink in\n\
+ every component of the given name recursively,\n\
+ without requirements on components existence\n\
+ -n, --no-newline do not output the trailing newline\n\
+ -q, --quiet,\n\
+ -s, --silent suppress most error messages\n\
+ -v, --verbose report error messages\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ /* If not -1, use this method to canonicalize. */
+ int can_mode = -1;
+
+ /* File name to canonicalize. */
+ const char *fname;
+
+ /* Result of canonicalize. */
+ char *value;
+
+ int optc;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ while ((optc = getopt_long (argc, argv, "efmnqsv", longopts, NULL)) != -1)
+ {
+ switch (optc)
+ {
+ case 'e':
+ can_mode = CAN_EXISTING;
+ break;
+ case 'f':
+ can_mode = CAN_ALL_BUT_LAST;
+ break;
+ case 'm':
+ can_mode = CAN_MISSING;
+ break;
+ case 'n':
+ no_newline = true;
+ break;
+ case 'q':
+ case 's':
+ verbose = false;
+ break;
+ case 'v':
+ verbose = true;
+ break;
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (optind >= argc)
+ {
+ error (0, 0, _("missing operand"));
+ usage (EXIT_FAILURE);
+ }
+
+ fname = argv[optind++];
+
+ if (optind < argc)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind]));
+ usage (EXIT_FAILURE);
+ }
+
+ value = (can_mode != -1
+ ? canonicalize_filename_mode (fname, can_mode)
+ : xreadlink (fname));
+ if (value)
+ {
+ printf ("%s%s", value, (no_newline ? "" : "\n"));
+ free (value);
+ return EXIT_SUCCESS;
+ }
+
+ if (verbose)
+ error (EXIT_FAILURE, errno, "%s", fname);
+
+ return EXIT_FAILURE;
+}
diff --git a/src/remove.c b/src/remove.c
new file mode 100644
index 0000000..59ee9e5
--- /dev/null
+++ b/src/remove.c
@@ -0,0 +1,1565 @@
+/* remove.c -- core functions for removing files and directories
+ Copyright (C) 88, 90, 91, 1994-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Extracted from rm.c and librarified, then rewritten by Jim Meyering. */
+
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <setjmp.h>
+#include <assert.h>
+
+#include "system.h"
+#include "cycle-check.h"
+#include "dirfd.h"
+#include "error.h"
+#include "euidaccess.h"
+#include "euidaccess-stat.h"
+#include "file-type.h"
+#include "hash.h"
+#include "hash-pjw.h"
+#include "lstat.h"
+#include "obstack.h"
+#include "openat.h"
+#include "quote.h"
+#include "remove.h"
+#include "root-dev-ino.h"
+#include "unlinkdir.h"
+#include "yesno.h"
+
+/* Avoid shadowing warnings because these are functions declared
+ in dirname.h as well as locals used below. */
+#define dir_name rm_dir_name
+#define dir_len rm_dir_len
+
+#define obstack_chunk_alloc malloc
+#define obstack_chunk_free free
+
+/* This is the maximum number of consecutive readdir/unlink calls that
+ can be made (with no intervening rewinddir or closedir/opendir) before
+ triggering a bug that makes readdir return NULL even though some
+ directory entries have not been processed. The bug afflicts SunOS's
+ readdir when applied to ufs file systems and Darwin 6.5's (and OSX
+ v.10.3.8's) HFS+. This maximum is conservative in that demonstrating
+ the problem requires a directory containing at least 16 deletable
+ entries (which doesn't count . and ..).
+ This problem also affects Darwin 7.9.0 (aka MacOS X 10.3.9) on HFS+
+ and NFS-mounted file systems, but not vfat ones. */
+enum
+ {
+ CONSECUTIVE_READDIR_UNLINK_THRESHOLD = 10
+ };
+
+/* FIXME: in 2009, or whenever Darwin 7.9.0 (aka MacOS X 10.3.9) is no
+ longer relevant, remove this work-around code. Then, there will be
+ no need to perform the extra rewinddir call, ever. */
+#define NEED_REWIND(readdir_unlink_count) \
+ (CONSECUTIVE_READDIR_UNLINK_THRESHOLD <= (readdir_unlink_count))
+
+enum Ternary
+ {
+ T_UNKNOWN = 2,
+ T_NO,
+ T_YES
+ };
+typedef enum Ternary Ternary;
+
+/* The prompt function may be called twice for a given directory.
+ The first time, we ask whether to descend into it, and the
+ second time, we ask whether to remove it. */
+enum Prompt_action
+ {
+ PA_DESCEND_INTO_DIR = 2,
+ PA_REMOVE_DIR
+ };
+
+/* Initial capacity of per-directory hash table of entries that have
+ been processed but not been deleted. */
+enum { HT_UNREMOVABLE_INITIAL_CAPACITY = 13 };
+
+/* An entry in the active directory stack.
+ Each entry corresponds to an `active' directory. */
+struct AD_ent
+{
+ /* For a given active directory, this is the set of names of
+ entries in that directory that could/should not be removed.
+ For example, `.' and `..', as well as files/dirs for which
+ unlink/rmdir failed e.g., due to access restrictions. */
+ Hash_table *unremovable;
+
+ /* Record the status for a given active directory; we need to know
+ whether an entry was not removed, either because of an error or
+ because the user declined. */
+ enum RM_status status;
+
+ /* The directory's dev/ino. Used to ensure that a malicious user does
+ not replace a directory we're about to process with a symlink to
+ some other directory. */
+ struct dev_ino dev_ino;
+};
+
+extern char *program_name;
+
+struct dirstack_state
+{
+ /* The name of the directory (starting with and relative to a command
+ line argument) being processed. When a subdirectory is entered, a new
+ component is appended (pushed). Remove (pop) the top component
+ upon chdir'ing out of a directory. This is used to form the full
+ name of the current directory or a file therein, when necessary. */
+ struct obstack dir_stack;
+
+ /* Stack of lengths of directory names (including trailing slash)
+ appended to dir_stack. We have to have a separate stack of lengths
+ (rather than just popping back to previous slash) because the first
+ element pushed onto the dir stack may contain slashes. */
+ struct obstack len_stack;
+
+ /* Stack of active directory entries.
+ The first `active' directory is the initial working directory.
+ Additional active dirs are pushed onto the stack as we `chdir'
+ into each directory to be processed. When finished with the
+ hierarchy under a directory, pop the active dir stack. */
+ struct obstack Active_dir;
+
+ /* Used to detect cycles. */
+ struct cycle_check_state cycle_check_state;
+
+ /* Target of a longjmp in case rm has to stop processing the current
+ command-line argument. This happens 1) when rm detects a directory
+ cycle or 2) when it has processed one or more directories, but then
+ is unable to return to the initial working directory to process
+ additional `.'-relative command-line arguments. */
+ jmp_buf current_arg_jumpbuf;
+};
+typedef struct dirstack_state Dirstack_state;
+
+/* Like fstatat, but cache the result. If ST->st_size is -1, the
+ status has not been gotten yet. If less than -1, fstatat failed
+ with errno == -1 - ST->st_size. Otherwise, the status has already
+ been gotten, so return 0. */
+static int
+cache_fstatat (int fd, char const *file, struct stat *st, int flag)
+{
+ if (st->st_size == -1 && fstatat (fd, file, st, flag) != 0)
+ st->st_size = -1 - errno;
+ if (0 <= st->st_size)
+ return 0;
+ errno = -1 - st->st_size;
+ return -1;
+}
+
+/* Initialize a fstatat cache *ST. Return ST for convenience. */
+static inline struct stat *
+cache_stat_init (struct stat *st)
+{
+ st->st_size = -1;
+ return st;
+}
+
+/* Return true if *ST has been statted. */
+static inline bool
+cache_statted (struct stat *st)
+{
+ return (st->st_size != -1);
+}
+
+/* Return true if *ST has been statted successfully. */
+static inline bool
+cache_stat_ok (struct stat *st)
+{
+ return (0 <= st->st_size);
+}
+
+
+static void
+hash_freer (void *x)
+{
+ free (x);
+}
+
+static bool
+hash_compare_strings (void const *x, void const *y)
+{
+ return STREQ (x, y) ? true : false;
+}
+
+static inline void
+push_dir (Dirstack_state *ds, const char *dir_name)
+{
+ size_t len = strlen (dir_name);
+
+ /* Append the string onto the stack. */
+ obstack_grow (&ds->dir_stack, dir_name, len);
+
+ /* Append a trailing slash. */
+ obstack_1grow (&ds->dir_stack, '/');
+
+ /* Add one for the slash. */
+ ++len;
+
+ /* Push the length (including slash) onto its stack. */
+ obstack_grow (&ds->len_stack, &len, sizeof (len));
+}
+
+/* Return the entry name of the directory on the top of the stack
+ in malloc'd storage. */
+static inline char *
+top_dir (Dirstack_state const *ds)
+{
+ size_t n_lengths = obstack_object_size (&ds->len_stack) / sizeof (size_t);
+ size_t *length = obstack_base (&ds->len_stack);
+ size_t top_len = length[n_lengths - 1];
+ char const *p = obstack_next_free (&ds->dir_stack) - top_len;
+ char *q = xmalloc (top_len);
+ memcpy (q, p, top_len - 1);
+ q[top_len - 1] = 0;
+ return q;
+}
+
+static inline void
+pop_dir (Dirstack_state *ds)
+{
+ size_t n_lengths = obstack_object_size (&ds->len_stack) / sizeof (size_t);
+ size_t *length = obstack_base (&ds->len_stack);
+
+ assert (n_lengths > 0);
+ size_t top_len = length[n_lengths - 1];
+ assert (top_len >= 2);
+
+ /* Pop the specified length of file name. */
+ assert (obstack_object_size (&ds->dir_stack) >= top_len);
+ obstack_blank (&ds->dir_stack, -top_len);
+
+ /* Pop the length stack, too. */
+ assert (obstack_object_size (&ds->len_stack) >= sizeof (size_t));
+ obstack_blank (&ds->len_stack, -(int) sizeof (size_t));
+}
+
+/* Copy the SRC_LEN bytes of data beginning at SRC into the DST_LEN-byte
+ buffer, DST, so that the last source byte is at the end of the destination
+ buffer. If SRC_LEN is longer than DST_LEN, then set *TRUNCATED.
+ Set *RESULT to point to the beginning of (the portion of) the source data
+ in DST. Return the number of bytes remaining in the destination buffer. */
+
+static size_t
+right_justify (char *dst, size_t dst_len, const char *src, size_t src_len,
+ char **result, bool *truncated)
+{
+ const char *sp;
+ char *dp;
+
+ if (src_len <= dst_len)
+ {
+ sp = src;
+ dp = dst + (dst_len - src_len);
+ *truncated = false;
+ }
+ else
+ {
+ sp = src + (src_len - dst_len);
+ dp = dst;
+ src_len = dst_len;
+ *truncated = true;
+ }
+
+ *result = memcpy (dp, sp, src_len);
+ return dst_len - src_len;
+}
+
+/* Using the global directory name obstack, create the full name FILENAME.
+ Return it in sometimes-realloc'd space that should not be freed by the
+ caller. Realloc as necessary. If realloc fails, use a static buffer
+ and put as long a suffix in that buffer as possible. */
+
+#define full_filename(Filename) full_filename_ (ds, Filename)
+static char *
+full_filename_ (Dirstack_state const *ds, const char *filename)
+{
+ static char *buf = NULL;
+ static size_t n_allocated = 0;
+
+ size_t dir_len = obstack_object_size (&ds->dir_stack);
+ char *dir_name = obstack_base (&ds->dir_stack);
+ size_t n_bytes_needed;
+ size_t filename_len;
+
+ filename_len = strlen (filename);
+ n_bytes_needed = dir_len + filename_len + 1;
+
+ if (n_allocated < n_bytes_needed)
+ {
+ /* This code requires that realloc accept NULL as the first arg.
+ This function must not use xrealloc. Otherwise, an out-of-memory
+ error involving a file name to be expanded here wouldn't ever
+ be issued. Use realloc and fall back on using a static buffer
+ if memory allocation fails. */
+ char *new_buf = realloc (buf, n_bytes_needed);
+ n_allocated = n_bytes_needed;
+
+ if (new_buf == NULL)
+ {
+#define SBUF_SIZE 512
+#define ELLIPSES_PREFIX "[...]"
+ static char static_buf[SBUF_SIZE];
+ bool truncated;
+ size_t len;
+ char *p;
+
+ free (buf);
+ len = right_justify (static_buf, SBUF_SIZE, filename,
+ filename_len + 1, &p, &truncated);
+ right_justify (static_buf, len, dir_name, dir_len, &p, &truncated);
+ if (truncated)
+ {
+ memcpy (static_buf, ELLIPSES_PREFIX,
+ sizeof (ELLIPSES_PREFIX) - 1);
+ }
+ return p;
+ }
+
+ buf = new_buf;
+ }
+
+ if (filename_len == 1 && *filename == '.' && dir_len)
+ {
+ /* FILENAME is just `.' and dir_len is nonzero.
+ Copy the directory part, omitting the trailing slash,
+ and append a trailing zero byte. */
+ char *p = mempcpy (buf, dir_name, dir_len - 1);
+ *p = 0;
+ }
+ else
+ {
+ /* Copy the directory part, including trailing slash, and then
+ append the filename part, including a trailing zero byte. */
+ memcpy (mempcpy (buf, dir_name, dir_len), filename, filename_len + 1);
+ assert (strlen (buf) + 1 == n_bytes_needed);
+ }
+
+ return buf;
+}
+
+static inline size_t
+AD_stack_height (Dirstack_state const *ds)
+{
+ return obstack_object_size (&ds->Active_dir) / sizeof (struct AD_ent);
+}
+
+static inline struct AD_ent *
+AD_stack_top (Dirstack_state const *ds)
+{
+ return (struct AD_ent *)
+ ((char *) obstack_next_free (&ds->Active_dir) - sizeof (struct AD_ent));
+}
+
+static void
+AD_stack_pop (Dirstack_state *ds)
+{
+ assert (0 < AD_stack_height (ds));
+
+ /* operate on Active_dir. pop and free top entry */
+ struct AD_ent *top = AD_stack_top (ds);
+ if (top->unremovable)
+ hash_free (top->unremovable);
+ obstack_blank (&ds->Active_dir, -(int) sizeof (struct AD_ent));
+}
+
+static void
+AD_stack_clear (Dirstack_state *ds)
+{
+ while (0 < AD_stack_height (ds))
+ {
+ AD_stack_pop (ds);
+ }
+}
+
+static Dirstack_state *
+ds_init (void)
+{
+ Dirstack_state *ds = xmalloc (sizeof *ds);
+ obstack_init (&ds->dir_stack);
+ obstack_init (&ds->len_stack);
+ obstack_init (&ds->Active_dir);
+ return ds;
+}
+
+static void
+ds_clear (Dirstack_state *ds)
+{
+ obstack_free (&ds->dir_stack, obstack_finish (&ds->dir_stack));
+ obstack_free (&ds->len_stack, obstack_finish (&ds->len_stack));
+ while (0 < AD_stack_height (ds))
+ AD_stack_pop (ds);
+ obstack_free (&ds->Active_dir, obstack_finish (&ds->Active_dir));
+}
+
+static void
+ds_free (Dirstack_state *ds)
+{
+ obstack_free (&ds->dir_stack, NULL);
+ obstack_free (&ds->len_stack, NULL);
+ obstack_free (&ds->Active_dir, NULL);
+ free (ds);
+}
+
+/* Pop the active directory (AD) stack and prepare to move `up' one level,
+ safely. Moving `up' usually means opening `..', but when we've just
+ finished recursively processing a command-line directory argument,
+ there's nothing left on the stack, so set *FDP to AT_FDCWD in that case.
+ The idea is to return with *FDP opened on the parent directory,
+ assuming there are entries in that directory that we need to remove.
+
+ Note that we must not call opendir (or fdopendir) just yet, since
+ the caller must first remove the directory we're coming from.
+ That is because some file system implementations cache readdir
+ results at opendir time; so calling opendir, rmdir, readdir would
+ return an entry for the just-removed directory.
+
+ Whenever using chdir '..' (virtually, now, via openat), verify
+ that the post-chdir dev/ino numbers for `.' match the saved ones.
+ If any system call fails or if dev/ino don't match, then give a
+ diagnostic and longjump out.
+ Return the name (in malloc'd storage) of the
+ directory (usually now empty) from which we're coming, and which
+ corresponds to the input value of DIRP.
+
+ Finally, note that while this function's name is no longer as
+ accurate as it once was (it no longer calls chdir), it does open
+ the destination directory. */
+static char *
+AD_pop_and_chdir (DIR *dirp, int *fdp, Dirstack_state *ds)
+{
+ struct AD_ent *leaf_dir_ent = AD_stack_top(ds);
+ struct dev_ino leaf_dev_ino = leaf_dir_ent->dev_ino;
+ enum RM_status old_status = leaf_dir_ent->status;
+ struct AD_ent *top;
+
+ /* Get the name of the current (but soon to be `previous') directory
+ from the top of the stack. */
+ char *prev_dir = top_dir (ds);
+
+ AD_stack_pop (ds);
+ pop_dir (ds);
+ top = AD_stack_top (ds);
+
+ /* If the directory we're about to leave (and try to rmdir)
+ is the one whose dev_ino is being used to detect a cycle,
+ reset cycle_check_state.dev_ino to that of the parent.
+ Otherwise, once that directory is removed, its dev_ino
+ could be reused in the creation (by some other process)
+ of a directory that this rm process would encounter,
+ which would result in a false-positive cycle indication. */
+ CYCLE_CHECK_REFLECT_CHDIR_UP (&ds->cycle_check_state,
+ top->dev_ino, leaf_dev_ino);
+
+ /* Propagate any failure to parent. */
+ UPDATE_STATUS (top->status, old_status);
+
+ assert (AD_stack_height (ds));
+
+ if (1 < AD_stack_height (ds))
+ {
+ struct stat sb;
+ int fd = openat (dirfd (dirp), "..", O_RDONLY);
+ if (closedir (dirp) != 0)
+ {
+ error (0, errno, _("FATAL: failed to close directory %s"),
+ quote (full_filename (prev_dir)));
+ goto next_cmdline_arg;
+ }
+
+ /* The above fails with EACCES when DIRP is readable but not
+ searchable, when using Solaris' openat. Without this openat
+ call, tests/rm2 would fail to remove directories a/2 and a/3. */
+ if (fd < 0)
+ fd = openat (AT_FDCWD, full_filename ("."), O_RDONLY);
+
+ if (fd < 0)
+ {
+ error (0, errno, _("FATAL: cannot open .. from %s"),
+ quote (full_filename (prev_dir)));
+ goto next_cmdline_arg;
+ }
+
+ if (fstat (fd, &sb))
+ {
+ error (0, errno,
+ _("FATAL: cannot ensure %s (returned to via ..) is safe"),
+ quote (full_filename (".")));
+ goto close_and_next;
+ }
+
+ /* Ensure that post-chdir dev/ino match the stored ones. */
+ if ( ! SAME_INODE (sb, top->dev_ino))
+ {
+ error (0, 0, _("FATAL: directory %s changed dev/ino"),
+ quote (full_filename (".")));
+ close_and_next:;
+ close (fd);
+
+ next_cmdline_arg:;
+ free (prev_dir);
+ longjmp (ds->current_arg_jumpbuf, 1);
+ }
+ *fdp = fd;
+ }
+ else
+ {
+ if (closedir (dirp) != 0)
+ {
+ error (0, errno, _("FATAL: failed to close directory %s"),
+ quote (full_filename (prev_dir)));
+ goto next_cmdline_arg;
+ }
+ *fdp = AT_FDCWD;
+ }
+
+ return prev_dir;
+}
+
+/* Initialize *HT if it is NULL. Return *HT. */
+static Hash_table *
+AD_ensure_initialized (Hash_table **ht)
+{
+ if (*ht == NULL)
+ {
+ *ht = hash_initialize (HT_UNREMOVABLE_INITIAL_CAPACITY, NULL, hash_pjw,
+ hash_compare_strings, hash_freer);
+ if (*ht == NULL)
+ xalloc_die ();
+ }
+
+ return *ht;
+}
+
+/* Initialize *HT if it is NULL.
+ Insert FILENAME into HT. */
+static void
+AD_mark_helper (Hash_table **ht, char *filename)
+{
+ void *ent = hash_insert (AD_ensure_initialized (ht), filename);
+ if (ent == NULL)
+ xalloc_die ();
+ else
+ {
+ if (ent != filename)
+ free (filename);
+ }
+}
+
+/* Mark FILENAME (in current directory) as unremovable. */
+static void
+AD_mark_as_unremovable (Dirstack_state *ds, char const *filename)
+{
+ AD_mark_helper (&AD_stack_top(ds)->unremovable, xstrdup (filename));
+}
+
+/* Mark the current directory as unremovable. I.e., mark the entry
+ in the parent directory corresponding to `.'.
+ This happens e.g., when an opendir fails and the only name
+ the caller has conveniently at hand is `.'. */
+static void
+AD_mark_current_as_unremovable (Dirstack_state *ds)
+{
+ struct AD_ent *top = AD_stack_top (ds);
+ char *curr = top_dir (ds);
+
+ assert (1 < AD_stack_height (ds));
+
+ --top;
+ AD_mark_helper (&top->unremovable, curr);
+}
+
+/* Push an initial dummy entry onto the stack.
+ This will always be the bottommost entry on the stack. */
+static void
+AD_push_initial (Dirstack_state *ds)
+{
+ struct AD_ent *top;
+
+ /* Extend the stack. */
+ obstack_blank (&ds->Active_dir, sizeof (struct AD_ent));
+
+ /* Fill in the new values. */
+ top = AD_stack_top (ds);
+ top->unremovable = NULL;
+
+ /* These should never be used.
+ Give them values that might look suspicious
+ in a debugger or in a diagnostic. */
+ top->dev_ino.st_dev = TYPE_MAXIMUM (dev_t);
+ top->dev_ino.st_ino = TYPE_MAXIMUM (ino_t);
+}
+
+/* Push info about the current working directory (".") onto the
+ active directory stack. DIR is the ./-relative name through
+ which we've just `chdir'd to this directory. DIR_SB_FROM_PARENT
+ is the result of calling lstat on DIR from the parent of DIR.
+ Longjump out (skipping the entire command line argument we're
+ dealing with) if `fstat (FD_CWD, ...' fails or if someone has
+ replaced DIR with e.g., a symlink to some other directory. */
+static void
+AD_push (int fd_cwd, Dirstack_state *ds, char const *dir,
+ struct stat const *dir_sb_from_parent)
+{
+ struct AD_ent *top;
+
+ push_dir (ds, dir);
+
+ /* If our uses of openat are guaranteed not to
+ follow a symlink, then we can skip this check. */
+ if (! HAVE_WORKING_O_NOFOLLOW)
+ {
+ struct stat sb;
+ if (fstat (fd_cwd, &sb) != 0)
+ {
+ error (0, errno, _("FATAL: cannot enter directory %s"),
+ quote (full_filename (".")));
+ longjmp (ds->current_arg_jumpbuf, 1);
+ }
+
+ if ( ! SAME_INODE (sb, *dir_sb_from_parent))
+ {
+ error (0, 0,
+ _("FATAL: just-changed-to directory %s changed dev/ino"),
+ quote (full_filename (".")));
+ longjmp (ds->current_arg_jumpbuf, 1);
+ }
+ }
+
+ if (cycle_check (&ds->cycle_check_state, dir_sb_from_parent))
+ {
+ error (0, 0, _("\
+WARNING: Circular directory structure.\n\
+This almost certainly means that you have a corrupted file system.\n\
+NOTIFY YOUR SYSTEM MANAGER.\n\
+The following directory is part of the cycle:\n %s\n"),
+ quote (full_filename (".")));
+ longjmp (ds->current_arg_jumpbuf, 1);
+ }
+
+ /* Extend the stack. */
+ obstack_blank (&ds->Active_dir, sizeof (struct AD_ent));
+
+ /* The active directory stack must be one larger than the length stack. */
+ assert (AD_stack_height (ds) ==
+ 1 + obstack_object_size (&ds->len_stack) / sizeof (size_t));
+
+ /* Fill in the new values. */
+ top = AD_stack_top (ds);
+ top->dev_ino.st_dev = dir_sb_from_parent->st_dev;
+ top->dev_ino.st_ino = dir_sb_from_parent->st_ino;
+ top->unremovable = NULL;
+}
+
+static inline bool
+AD_is_removable (Dirstack_state const *ds, char const *file)
+{
+ struct AD_ent *top = AD_stack_top (ds);
+ return ! (top->unremovable && hash_lookup (top->unremovable, file));
+}
+
+/* Return true if DIR is determined to be an empty directory. */
+static bool
+is_empty_dir (int fd_cwd, char const *dir)
+{
+ DIR *dirp;
+ struct dirent const *dp;
+ int saved_errno;
+ int fd = openat (fd_cwd, dir,
+ (O_RDONLY | O_DIRECTORY
+ | O_NOCTTY | O_NOFOLLOW | O_NONBLOCK));
+
+ if (fd < 0)
+ return false;
+
+ dirp = fdopendir (fd);
+ if (dirp == NULL)
+ {
+ close (fd);
+ return false;
+ }
+
+ errno = 0;
+ dp = readdir_ignoring_dot_and_dotdot (dirp);
+ saved_errno = errno;
+ closedir (dirp);
+ if (dp != NULL)
+ return false;
+ return saved_errno == 0 ? true : false;
+}
+
+/* Return -1 if FILE is an unwritable non-symlink,
+ 0 if it is writable or some other type of file,
+ a positive error number if there is some problem in determining the answer.
+ Set *BUF to the file status.
+ This is to avoid calling euidaccess when FILE is a symlink. */
+static int
+write_protected_non_symlink (int fd_cwd,
+ char const *file,
+ Dirstack_state const *ds,
+ struct stat *buf)
+{
+ if (cache_fstatat (fd_cwd, file, buf, AT_SYMLINK_NOFOLLOW) != 0)
+ return errno;
+ if (S_ISLNK (buf->st_mode))
+ return 0;
+ /* Here, we know FILE is not a symbolic link. */
+
+ /* In order to be reentrant -- i.e., to avoid changing the working
+ directory, and at the same time to be able to deal with alternate
+ access control mechanisms (ACLs, xattr-style attributes) and
+ arbitrarily deep trees -- we need a function like eaccessat, i.e.,
+ like Solaris' eaccess, but fd-relative, in the spirit of openat. */
+
+ /* In the absence of a native eaccessat function, here are some of
+ the implementation choices [#4 and #5 were suggested by Paul Eggert]:
+ 1) call openat with O_WRONLY|O_NOCTTY
+ Disadvantage: may create the file and doesn't work for directory,
+ may mistakenly report `unwritable' for EROFS or ACLs even though
+ perm bits say the file is writable.
+
+ 2) fake eaccessat (save_cwd, fchdir, call euidaccess, restore_cwd)
+ Disadvantage: changes working directory (not reentrant) and can't
+ work if save_cwd fails.
+
+ 3) if (euidaccess (full_filename (file), W_OK) == 0)
+ Disadvantage: doesn't work if full_filename is too long.
+ Inefficient for very deep trees (O(Depth^2)).
+
+ 4) If the full pathname is sufficiently short (say, less than
+ PATH_MAX or 8192 bytes, whichever is shorter):
+ use method (3) (i.e., euidaccess (full_filename (file), W_OK));
+ Otherwise: vfork, fchdir in the child, run euidaccess in the
+ child, then the child exits with a status that tells the parent
+ whether euidaccess succeeded.
+
+ This avoids the O(N**2) algorithm of method (3), and it also avoids
+ the failure-due-to-too-long-file-names of method (3), but it's fast
+ in the normal shallow case. It also avoids the lack-of-reentrancy
+ and the save_cwd problems.
+ Disadvantage; it uses a process slot for very-long file names,
+ and would be very slow for hierarchies with many such files.
+
+ 5) If the full file name is sufficiently short (say, less than
+ PATH_MAX or 8192 bytes, whichever is shorter):
+ use method (3) (i.e., euidaccess (full_filename (file), W_OK));
+ Otherwise: look just at the file bits. Perhaps issue a warning
+ the first time this occurs.
+
+ This is like (4), except for the "Otherwise" case where it isn't as
+ "perfect" as (4) but is considerably faster. It conforms to current
+ POSIX, and is uniformly better than what Solaris and FreeBSD do (they
+ mess up with long file names). */
+
+ {
+ /* This implements #5: */
+ size_t file_name_len
+ = obstack_object_size (&ds->dir_stack) + strlen (file);
+
+ if (MIN (PATH_MAX, 8192) <= file_name_len)
+ return - euidaccess_stat (buf, W_OK);
+ if (euidaccess (full_filename (file), W_OK) == 0)
+ return 0;
+ if (errno == EACCES)
+ return -1;
+
+ /* Perhaps some other process has removed the file, or perhaps this
+ is a buggy NFS client. */
+ return errno;
+ }
+}
+
+/* Prompt whether to remove FILENAME, if required via a combination of
+ the options specified by X and/or file attributes. If the file may
+ be removed, return RM_OK. If the user declines to remove the file,
+ return RM_USER_DECLINED. If not ignoring missing files and we
+ cannot lstat FILENAME, then return RM_ERROR.
+
+ Depending on MODE, ask whether to `descend into' or to `remove' the
+ directory FILENAME. MODE is ignored when FILENAME is not a directory.
+ Set *IS_EMPTY to T_YES if FILENAME is an empty directory, and it is
+ appropriate to try to remove it with rmdir (e.g. recursive mode).
+ Don't even try to set *IS_EMPTY when MODE == PA_REMOVE_DIR. */
+static enum RM_status
+prompt (int fd_cwd, Dirstack_state const *ds, char const *filename,
+ struct stat *sbuf,
+ struct rm_options const *x, enum Prompt_action mode,
+ Ternary *is_empty)
+{
+ int write_protected = 0;
+
+ *is_empty = T_UNKNOWN;
+
+ if (x->interactive == RMI_NEVER)
+ return RM_OK;
+
+ if (!x->ignore_missing_files
+ & ((x->interactive == RMI_ALWAYS) | x->stdin_tty))
+ write_protected = write_protected_non_symlink (fd_cwd, filename, ds, sbuf);
+
+ if (write_protected || x->interactive == RMI_ALWAYS)
+ {
+ if (write_protected <= 0
+ && cache_fstatat (fd_cwd, filename, sbuf, AT_SYMLINK_NOFOLLOW) != 0)
+ {
+ /* This happens, e.g., with `rm '''. */
+ write_protected = errno;
+ }
+
+ if (write_protected <= 0)
+ {
+ /* Using permissions doesn't make sense for symlinks. */
+ if (S_ISLNK (sbuf->st_mode) && x->interactive != RMI_ALWAYS)
+ return RM_OK;
+
+ if (S_ISDIR (sbuf->st_mode) && !x->recursive)
+ write_protected = EISDIR;
+ }
+
+ char const *quoted_name = quote (full_filename (filename));
+
+ if (0 < write_protected)
+ {
+ error (0, write_protected, _("cannot remove %s"), quoted_name);
+ return RM_ERROR;
+ }
+
+ /* Issue the prompt. */
+ /* FIXME: use a variant of error (instead of fprintf) that doesn't
+ append a newline. Then we won't have to declare program_name in
+ this file. */
+ if (S_ISDIR (sbuf->st_mode)
+ && x->recursive
+ && mode == PA_DESCEND_INTO_DIR
+ && ((*is_empty = (is_empty_dir (fd_cwd, filename) ? T_YES : T_NO))
+ == T_NO))
+ fprintf (stderr,
+ (write_protected
+ ? _("%s: descend into write-protected directory %s? ")
+ : _("%s: descend into directory %s? ")),
+ program_name, quoted_name);
+ else
+ {
+ /* TRANSLATORS: You may find it more convenient to translate
+ the equivalent of _("%s: remove %s (write-protected) %s? ").
+ It should avoid grammatical problems with the output
+ of file_type. */
+ fprintf (stderr,
+ (write_protected
+ ? _("%s: remove write-protected %s %s? ")
+ : _("%s: remove %s %s? ")),
+ program_name, file_type (sbuf), quoted_name);
+ }
+
+ if (!yesno ())
+ return RM_USER_DECLINED;
+ }
+ return RM_OK;
+}
+
+/* Return true if FILENAME is a directory (and not a symlink to a directory).
+ Otherwise, including the case in which lstat fails, return false.
+ *ST is FILENAME's tstatus.
+ Do not modify errno. */
+static inline bool
+is_dir_lstat (char const *filename, struct stat *st)
+{
+ int saved_errno = errno;
+ bool is_dir =
+ (cache_fstatat (AT_FDCWD, filename, st, AT_SYMLINK_NOFOLLOW) == 0
+ && S_ISDIR (st->st_mode));
+ errno = saved_errno;
+ return is_dir;
+}
+
+#if HAVE_STRUCT_DIRENT_D_TYPE
+
+/* True if the type of the directory entry D is known. */
+# define DT_IS_KNOWN(d) ((d)->d_type != DT_UNKNOWN)
+
+/* True if the type of the directory entry D must be T. */
+# define DT_MUST_BE(d, t) ((d)->d_type == (t))
+
+#else
+# define DT_IS_KNOWN(d) false
+# define DT_MUST_BE(d, t) false
+#endif
+
+#define DO_UNLINK(Fd_cwd, Filename, X) \
+ do \
+ { \
+ if (unlinkat (Fd_cwd, Filename, 0) == 0) \
+ { \
+ if ((X)->verbose) \
+ printf (_("removed %s\n"), quote (full_filename (Filename))); \
+ return RM_OK; \
+ } \
+ \
+ if (ignorable_missing (X, errno)) \
+ return RM_OK; \
+ } \
+ while (0)
+
+#define DO_RMDIR(Fd_cwd, Filename, X) \
+ do \
+ { \
+ if (unlinkat (Fd_cwd, Filename, AT_REMOVEDIR) == 0) /* rmdir */ \
+ { \
+ if ((X)->verbose) \
+ printf (_("removed directory: %s\n"), \
+ quote (full_filename (Filename))); \
+ return RM_OK; \
+ } \
+ \
+ if (ignorable_missing (X, errno)) \
+ return RM_OK; \
+ \
+ if (errno == ENOTEMPTY || errno == EEXIST) \
+ return RM_NONEMPTY_DIR; \
+ } \
+ while (0)
+
+/* When a function like unlink, rmdir, or fstatat fails with an errno
+ value of ERRNUM, return true if the specified file system object
+ is guaranteed not to exist; otherwise, return false. */
+static inline bool
+nonexistent_file_errno (int errnum)
+{
+ /* Do not include ELOOP here, since the specified file may indeed
+ exist, but be (in)accessible only via too long a symlink chain.
+ Likewise for ENAMETOOLONG, since rm -f ./././.../foo may fail
+ if the "..." part expands to a long enough sequence of "./"s,
+ even though ./foo does indeed exist. */
+
+ switch (errnum)
+ {
+ case ENOENT:
+ case ENOTDIR:
+ return true;
+ default:
+ return false;
+ }
+}
+
+/* Encapsulate the test for whether the errno value, ERRNUM, is ignorable. */
+static inline bool
+ignorable_missing (struct rm_options const *x, int errnum)
+{
+ return x->ignore_missing_files && nonexistent_file_errno (errnum);
+}
+
+/* Remove the file or directory specified by FILENAME.
+ Return RM_OK if it is removed, and RM_ERROR or RM_USER_DECLINED if not.
+ But if FILENAME specifies a non-empty directory, return RM_NONEMPTY_DIR. */
+
+static enum RM_status
+remove_entry (int fd_cwd, Dirstack_state const *ds, char const *filename,
+ struct stat *st,
+ struct rm_options const *x, struct dirent const *dp)
+{
+ Ternary is_empty_directory;
+ enum RM_status s = prompt (fd_cwd, ds, filename, st, x, PA_DESCEND_INTO_DIR,
+ &is_empty_directory);
+ bool known_to_be_dir = (cache_stat_ok (st) && S_ISDIR (st->st_mode));
+
+ if (s != RM_OK)
+ return s;
+
+ /* Why bother with the following if/else block? Because on systems with
+ an unlink function that *can* unlink directories, we must determine the
+ type of each entry before removing it. Otherwise, we'd risk unlinking
+ an entire directory tree simply by unlinking a single directory; then
+ all the storage associated with that hierarchy would not be freed until
+ the next fsck. Not nice. To avoid that, on such slightly losing
+ systems, we need to call lstat to determine the type of each entry,
+ and that represents extra overhead that -- it turns out -- we can
+ avoid on non-losing systems, since there, unlink will never remove
+ a directory. Also, on systems where unlink may unlink directories,
+ we're forced to allow a race condition: we lstat a non-directory, then
+ go to unlink it, but in the mean time, a malicious someone could have
+ replaced it with a directory. */
+
+ if (cannot_unlink_dir ())
+ {
+ if (known_to_be_dir && ! x->recursive)
+ {
+ error (0, EISDIR, _("cannot remove %s"),
+ quote (full_filename (filename)));
+ return RM_ERROR;
+ }
+
+ /* is_empty_directory is set iff it's ok to use rmdir.
+ Note that it's set only in interactive mode -- in which case it's
+ an optimization that arranges so that the user is asked just
+ once whether to remove the directory. */
+ if (is_empty_directory == T_YES)
+ DO_RMDIR (fd_cwd, filename, x);
+
+ /* If we happen to know that FILENAME is a directory, return now
+ and let the caller remove it -- this saves the overhead of a failed
+ unlink call. If FILENAME is a command-line argument, then dp is NULL,
+ so we'll first try to unlink it. Using unlink here is ok, because it
+ cannot remove a directory. */
+ if ((dp && DT_MUST_BE (dp, DT_DIR)) || known_to_be_dir)
+ return RM_NONEMPTY_DIR;
+
+ DO_UNLINK (fd_cwd, filename, x);
+
+ /* Upon a failed attempt to unlink a directory, most non-Linux systems
+ set errno to the POSIX-required value EPERM. In that case, change
+ errno to EISDIR so that we emit a better diagnostic. */
+ if (! x->recursive && errno == EPERM && is_dir_lstat (filename, st))
+ errno = EISDIR;
+
+ if (! x->recursive
+ || (cache_stat_ok (st) && !S_ISDIR (st->st_mode)))
+ {
+ if (ignorable_missing (x, errno))
+ return RM_OK;
+
+ /* Either --recursive is not in effect, or the file cannot be a
+ directory. Report the unlink problem and fail. */
+ error (0, errno, _("cannot remove %s"),
+ quote (full_filename (filename)));
+ return RM_ERROR;
+ }
+ assert (!cache_stat_ok (st) || S_ISDIR (st->st_mode));
+ }
+ else
+ {
+ /* If we don't already know whether FILENAME is a directory,
+ find out now. Then, if it's a non-directory, we can use
+ unlink on it. */
+ bool is_dir;
+
+ if (cache_statted (st))
+ is_dir = known_to_be_dir;
+ else
+ {
+ if (dp && DT_IS_KNOWN (dp))
+ is_dir = DT_MUST_BE (dp, DT_DIR);
+ else
+ {
+ if (fstatat (fd_cwd, filename, st, AT_SYMLINK_NOFOLLOW))
+ {
+ if (ignorable_missing (x, errno))
+ return RM_OK;
+
+ error (0, errno, _("cannot remove %s"),
+ quote (full_filename (filename)));
+ return RM_ERROR;
+ }
+
+ is_dir = !! S_ISDIR (st->st_mode);
+ }
+ }
+
+ if (! is_dir)
+ {
+ /* At this point, barring race conditions, FILENAME is known
+ to be a non-directory, so it's ok to try to unlink it. */
+ DO_UNLINK (fd_cwd, filename, x);
+
+ /* unlink failed with some other error code. report it. */
+ error (0, errno, _("cannot remove %s"),
+ quote (full_filename (filename)));
+ return RM_ERROR;
+ }
+
+ if (! x->recursive)
+ {
+ error (0, EISDIR, _("cannot remove %s"),
+ quote (full_filename (filename)));
+ return RM_ERROR;
+ }
+
+ if (is_empty_directory == T_YES)
+ {
+ DO_RMDIR (fd_cwd, filename, x);
+ /* Don't diagnose any failure here.
+ It'll be detected when the caller tries another way. */
+ }
+ }
+
+ return RM_NONEMPTY_DIR;
+}
+
+/* Given FD_CWD, the file descriptor for an open directory,
+ open its subdirectory F (F is already `known' to be a directory,
+ so if it is no longer one, someone is playing games), return a DIR*
+ pointer for F, and put F's `stat' data in *SUBDIR_SB.
+ Upon failure give a diagnostic and return NULL.
+ If PREV_ERRNO is nonzero, it is the errno value from a preceding failed
+ unlink- or rmdir-like system call -- use that value instead of ENOTDIR
+ if an opened file turns out not to be a directory. This is important
+ when the preceding non-dir-unlink failed due to e.g., EPERM or EACCES.
+ The caller must use a nonnnull CWD_ERRNO the first
+ time this function is called for each command-line-specified directory.
+ If CWD_ERRNO is not null, set *CWD_ERRNO to the appropriate error number
+ if this function fails to restore the initial working directory.
+ If it is null, report an error and exit if the working directory
+ isn't restored. */
+static DIR *
+fd_to_subdirp (int fd_cwd, char const *f,
+ struct rm_options const *x, int prev_errno,
+ struct stat *subdir_sb,
+ int *cwd_errno ATTRIBUTE_UNUSED)
+{
+ int open_flags = O_RDONLY | O_NOCTTY | O_NOFOLLOW | O_NONBLOCK;
+ int fd_sub = openat_permissive (fd_cwd, f, open_flags, 0, cwd_errno);
+ int saved_errno;
+
+ /* Record dev/ino of F. We may compare them against saved values
+ to thwart any attempt to subvert the traversal. They are also used
+ to detect directory cycles. */
+ if (fd_sub < 0)
+ return NULL;
+ else if (fstat (fd_sub, subdir_sb) != 0)
+ saved_errno = errno;
+ else if (S_ISDIR (subdir_sb->st_mode))
+ {
+ DIR *subdir_dirp = fdopendir (fd_sub);
+ if (subdir_dirp)
+ return subdir_dirp;
+ saved_errno = errno;
+ }
+ else
+ saved_errno = (prev_errno ? prev_errno : ENOTDIR);
+
+ close (fd_sub);
+ errno = saved_errno;
+ return NULL;
+}
+
+/* Remove entries in the directory open on DIRP
+ Upon finding a directory that is both non-empty and that can be chdir'd
+ into, return RM_OK and set *SUBDIR and fill in SUBDIR_SB, where
+ SUBDIR is the malloc'd name of the subdirectory if the chdir succeeded,
+ NULL otherwise (e.g., if opendir failed or if there was no subdirectory).
+ Likewise, SUBDIR_SB is the result of calling lstat on SUBDIR.
+ Return RM_OK if all entries are removed. Return RM_ERROR if any
+ entry cannot be removed. Otherwise, return RM_USER_DECLINED if
+ the user declines to remove at least one entry. Remove as much as
+ possible, continuing even if we fail to remove some entries. */
+static enum RM_status
+remove_cwd_entries (DIR **dirp,
+ Dirstack_state *ds, char **subdir, struct stat *subdir_sb,
+ struct rm_options const *x)
+{
+ struct AD_ent *top = AD_stack_top (ds);
+ enum RM_status status = top->status;
+ size_t n_unlinked_since_opendir_or_last_rewind = 0;
+
+ assert (VALID_STATUS (status));
+ *subdir = NULL;
+
+ while (1)
+ {
+ struct dirent const *dp;
+ enum RM_status tmp_status;
+ const char *f;
+
+ /* Set errno to zero so we can distinguish between a readdir failure
+ and when readdir simply finds that there are no more entries. */
+ errno = 0;
+ dp = readdir_ignoring_dot_and_dotdot (*dirp);
+ if (dp == NULL)
+ {
+ if (errno)
+ {
+ /* fall through */
+ }
+ else if (NEED_REWIND (n_unlinked_since_opendir_or_last_rewind))
+ {
+ /* Call rewinddir if we've called unlink or rmdir so many times
+ (since the opendir or the previous rewinddir) that this
+ NULL-return may be the symptom of a buggy readdir. */
+ rewinddir (*dirp);
+ n_unlinked_since_opendir_or_last_rewind = 0;
+ continue;
+ }
+ break;
+ }
+
+ f = dp->d_name;
+
+ /* Skip files we've already tried/failed to remove. */
+ if ( ! AD_is_removable (ds, f))
+ continue;
+
+ /* Pass dp->d_type info to remove_entry so the non-glibc
+ case can decide whether to use unlink or chdir.
+ Systems without the d_type member will have to endure
+ the performance hit of first calling lstat F. */
+ cache_stat_init (subdir_sb);
+ tmp_status = remove_entry (dirfd (*dirp), ds, f, subdir_sb, x, dp);
+ switch (tmp_status)
+ {
+ case RM_OK:
+ /* Count how many files we've unlinked since the initial
+ opendir or the last rewinddir. On buggy systems, if you
+ remove too many, readdir returns NULL even though there
+ remain unprocessed directory entries. */
+ ++n_unlinked_since_opendir_or_last_rewind;
+ break;
+
+ case RM_ERROR:
+ case RM_USER_DECLINED:
+ AD_mark_as_unremovable (ds, f);
+ UPDATE_STATUS (status, tmp_status);
+ break;
+
+ case RM_NONEMPTY_DIR:
+ {
+ DIR *subdir_dirp = fd_to_subdirp (dirfd (*dirp), f,
+ x, errno, subdir_sb, NULL);
+ if (subdir_dirp == NULL)
+ {
+ status = RM_ERROR;
+
+ /* CAUTION: this test and diagnostic are identical to
+ those following the other use of fd_to_subdirp. */
+ if (ignorable_missing (x, errno))
+ {
+ /* With -f, don't report "file not found". */
+ }
+ else
+ {
+ /* Upon fd_to_subdirp failure, try to remove F directly,
+ in case it's just an empty directory. */
+ int saved_errno = errno;
+ if (unlinkat (dirfd (*dirp), f, AT_REMOVEDIR) == 0)
+ status = RM_OK;
+ else
+ error (0, saved_errno,
+ _("cannot remove %s"), quote (full_filename (f)));
+ }
+
+ if (status == RM_ERROR)
+ AD_mark_as_unremovable (ds, f);
+ break;
+ }
+
+ *subdir = xstrdup (f);
+ if (closedir (*dirp) != 0)
+ {
+ error (0, 0, _("failed to close directory %s"),
+ quote (full_filename (".")));
+ status = RM_ERROR;
+ }
+ *dirp = subdir_dirp;
+
+ break;
+ }
+ }
+
+ /* Record status for this directory. */
+ UPDATE_STATUS (top->status, status);
+
+ if (*subdir)
+ break;
+ }
+
+ /* Ensure that *dirp is not NULL and that its file descriptor is valid. */
+ assert (*dirp != NULL);
+ assert (0 <= fcntl (dirfd (*dirp), F_GETFD));
+
+ return status;
+}
+
+/* Do this after each call to AD_push or AD_push_initial.
+ Because the status = RM_OK bit is too remove-specific to
+ go into the general-purpose AD_* package. */
+#define AD_INIT_OTHER_MEMBERS() \
+ do \
+ { \
+ AD_stack_top(ds)->status = RM_OK; \
+ } \
+ while (0)
+
+/* Remove the hierarchy rooted at DIR.
+ Do that by changing into DIR, then removing its contents, then
+ returning to the original working directory and removing DIR itself.
+ Don't use recursion. Be careful when using chdir ".." that we
+ return to the same directory from which we came, if necessary.
+ Return an RM_status value to indicate success or failure. */
+
+static enum RM_status
+remove_dir (int fd_cwd, Dirstack_state *ds, char const *dir,
+ struct stat *dir_st,
+ struct rm_options const *x, int *cwd_errno)
+{
+ enum RM_status status;
+ dev_t current_dev = dir_st->st_dev;
+
+ /* There is a race condition in that an attacker could replace the nonempty
+ directory, DIR, with a symlink between the preceding call to rmdir
+ (unlinkat, in our caller) and fd_to_subdirp's openat call. But on most
+ systems, even those without openat, this isn't a problem, since we ensure
+ that opening a symlink will fail, when that is possible. Otherwise,
+ fd_to_subdirp's fstat, along with the `fstat' and the dev/ino
+ comparison in AD_push ensure that we detect it and fail. */
+
+ DIR *dirp = fd_to_subdirp (fd_cwd, dir, x, 0, dir_st, cwd_errno);
+
+ if (dirp == NULL)
+ {
+ /* CAUTION: this test and diagnostic are identical to
+ those following the other use of fd_to_subdirp. */
+ if (ignorable_missing (x, errno))
+ {
+ /* With -f, don't report "file not found". */
+ }
+ else
+ {
+ /* Upon fd_to_subdirp failure, try to remove DIR directly,
+ in case it's just an empty directory. */
+ int saved_errno = errno;
+ if (unlinkat (fd_cwd, dir, AT_REMOVEDIR) == 0)
+ return RM_OK;
+
+ error (0, saved_errno,
+ _("cannot remove %s"), quote (full_filename (dir)));
+ }
+
+ return RM_ERROR;
+ }
+
+ if (ROOT_DEV_INO_CHECK (x->root_dev_ino, dir_st))
+ {
+ ROOT_DEV_INO_WARN (full_filename (dir));
+ status = RM_ERROR;
+ goto closedir_and_return;
+ }
+
+ AD_push (dirfd (dirp), ds, dir, dir_st);
+ AD_INIT_OTHER_MEMBERS ();
+
+ status = RM_OK;
+
+ while (1)
+ {
+ char *subdir = NULL;
+ struct stat subdir_sb;
+ enum RM_status tmp_status;
+
+ tmp_status = remove_cwd_entries (&dirp, ds, &subdir, &subdir_sb, x);
+
+ if (tmp_status != RM_OK)
+ {
+ UPDATE_STATUS (status, tmp_status);
+ AD_mark_current_as_unremovable (ds);
+ }
+ if (subdir)
+ {
+ if ( ! x->one_file_system
+ || subdir_sb.st_dev == current_dev)
+ {
+ AD_push (dirfd (dirp), ds, subdir, &subdir_sb);
+ AD_INIT_OTHER_MEMBERS ();
+ free (subdir);
+ continue;
+ }
+
+ /* Here, --one-file-system is in effect, and with remove_cwd_entries'
+ traversal into the current directory, (known as SUBDIR, from ..),
+ DIRP's device number is different from CURRENT_DEV. Arrange not
+ to do anything more with this hierarchy. */
+ error (0, 0, _("skipping %s, since it's on a different device"),
+ quote (full_filename (subdir)));
+ free (subdir);
+ AD_mark_current_as_unremovable (ds);
+ tmp_status = RM_ERROR;
+ UPDATE_STATUS (status, tmp_status);
+ }
+
+ /* Execution reaches this point when we've removed the last
+ removable entry from the current directory -- or, with
+ --one-file-system, when the current directory is on a
+ different file system. */
+ {
+ int fd;
+ /* The name of the directory that we have just processed,
+ nominally removing all of its contents. */
+ char *empty_dir = AD_pop_and_chdir (dirp, &fd, ds);
+ dirp = NULL;
+ assert (fd != AT_FDCWD || AD_stack_height (ds) == 1);
+
+ /* Try to remove EMPTY_DIR only if remove_cwd_entries succeeded. */
+ if (tmp_status == RM_OK)
+ {
+ /* This does a little more work than necessary when it actually
+ prompts the user. E.g., we already know that D is a directory
+ and that it's almost certainly empty, yet we lstat it.
+ But that's no big deal since we're interactive. */
+ struct stat empty_st;
+ Ternary is_empty;
+ enum RM_status s = prompt (fd, ds, empty_dir,
+ cache_stat_init (&empty_st), x,
+ PA_REMOVE_DIR, &is_empty);
+
+ if (s != RM_OK)
+ {
+ free (empty_dir);
+ status = s;
+ if (fd != AT_FDCWD)
+ close (fd);
+ goto closedir_and_return;
+ }
+
+ if (unlinkat (fd, empty_dir, AT_REMOVEDIR) == 0)
+ {
+ if (x->verbose)
+ printf (_("removed directory: %s\n"),
+ quote (full_filename (empty_dir)));
+ }
+ else
+ {
+ error (0, errno, _("cannot remove directory %s"),
+ quote (full_filename (empty_dir)));
+ AD_mark_as_unremovable (ds, empty_dir);
+ status = RM_ERROR;
+ UPDATE_STATUS (AD_stack_top(ds)->status, status);
+ }
+ }
+
+ free (empty_dir);
+
+ if (fd == AT_FDCWD)
+ break;
+
+ dirp = fdopendir (fd);
+ if (dirp == NULL)
+ {
+ error (0, errno, _("FATAL: cannot return to .. from %s"),
+ quote (full_filename (".")));
+ close (fd);
+ longjmp (ds->current_arg_jumpbuf, 1);
+ }
+ }
+ }
+
+ /* If the first/final hash table of unremovable entries was used,
+ free it here. */
+ AD_stack_pop (ds);
+
+ closedir_and_return:;
+ if (dirp != NULL && closedir (dirp) != 0)
+ {
+ error (0, 0, _("failed to close directory %s"),
+ quote (full_filename (".")));
+ status = RM_ERROR;
+ }
+
+ return status;
+}
+
+/* Remove the file or directory specified by FILENAME.
+ Return RM_OK if it is removed, and RM_ERROR or RM_USER_DECLINED if not. */
+
+static enum RM_status
+rm_1 (Dirstack_state *ds, char const *filename,
+ struct rm_options const *x, int *cwd_errno)
+{
+ char const *base = last_component (filename);
+ if (dot_or_dotdot (base))
+ {
+ error (0, 0, _(base == filename
+ ? "cannot remove directory %s"
+ : "cannot remove %s directory %s"),
+ quote_n (0, base), quote_n (1, filename));
+ return RM_ERROR;
+ }
+
+ struct stat st;
+ cache_stat_init (&st);
+ cycle_check_init (&ds->cycle_check_state);
+ if (x->root_dev_ino)
+ {
+ if (cache_fstatat (AT_FDCWD, filename, &st, AT_SYMLINK_NOFOLLOW) != 0)
+ {
+ if (ignorable_missing (x, errno))
+ return RM_OK;
+ error (0, errno, _("cannot remove %s"), quote (filename));
+ return RM_ERROR;
+ }
+ if (SAME_INODE (st, *(x->root_dev_ino)))
+ {
+ error (0, 0, _("cannot remove root directory %s"), quote (filename));
+ return RM_ERROR;
+ }
+ }
+
+ AD_push_initial (ds);
+ AD_INIT_OTHER_MEMBERS ();
+
+ enum RM_status status = remove_entry (AT_FDCWD, ds, filename, &st, x, NULL);
+ if (status == RM_NONEMPTY_DIR)
+ {
+ /* In the event that remove_dir->remove_cwd_entries detects
+ a directory cycle, arrange to fail, give up on this FILE, but
+ continue on with any other arguments. */
+ if (setjmp (ds->current_arg_jumpbuf))
+ status = RM_ERROR;
+ else
+ status = remove_dir (AT_FDCWD, ds, filename, &st, x, cwd_errno);
+
+ AD_stack_clear (ds);
+ }
+
+ ds_clear (ds);
+ return status;
+}
+
+/* Remove all files and/or directories specified by N_FILES and FILE.
+ Apply the options in X. */
+extern enum RM_status
+rm (size_t n_files, char const *const *file, struct rm_options const *x)
+{
+ enum RM_status status = RM_OK;
+ Dirstack_state *ds = ds_init ();
+ int cwd_errno = 0;
+ size_t i;
+
+ for (i = 0; i < n_files; i++)
+ {
+ if (cwd_errno && IS_RELATIVE_FILE_NAME (file[i]))
+ {
+ error (0, 0, _("cannot remove relative-named %s"), quote (file[i]));
+ status = RM_ERROR;
+ }
+ else
+ {
+ enum RM_status s = rm_1 (ds, file[i], x, &cwd_errno);
+ assert (VALID_STATUS (s));
+ UPDATE_STATUS (status, s);
+ }
+ }
+
+ if (x->require_restore_cwd && cwd_errno)
+ {
+ error (0, cwd_errno,
+ _("cannot restore current working directory"));
+ status = RM_ERROR;
+ }
+
+ ds_free (ds);
+
+ return status;
+}
diff --git a/src/remove.h b/src/remove.h
new file mode 100644
index 0000000..ae01e3c
--- /dev/null
+++ b/src/remove.h
@@ -0,0 +1,96 @@
+/* Remove directory entries.
+
+ Copyright (C) 1998, 2000, 2002, 2003, 2004, 2005, 2006, 2007 Free
+ Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef REMOVE_H
+# define REMOVE_H
+
+# include "dev-ino.h"
+
+enum rm_interactive
+{
+ /* Start with any number larger than 1, so that any legacy tests
+ against values of 0 or 1 will fail. */
+ RMI_ALWAYS = 3,
+ RMI_SOMETIMES,
+ RMI_NEVER
+};
+
+struct rm_options
+{
+ /* If true, ignore nonexistent files. */
+ bool ignore_missing_files;
+
+ /* If true, query the user about whether to remove each file. */
+ enum rm_interactive interactive;
+
+ /* If true, do not traverse into (or remove) any directory that is
+ on a file system (i.e., that has a different device number) other
+ than that of the corresponding command line argument. Note that
+ even without this option, rm will fail in the end, due to its
+ probable inability to remove the mount point. But there, the
+ diagnostic comes too late -- after removing all contents. */
+ bool one_file_system;
+
+ /* If true, recursively remove directories. */
+ bool recursive;
+
+ /* Pointer to the device and inode numbers of `/', when --recursive
+ and preserving `/'. Otherwise NULL. */
+ struct dev_ino *root_dev_ino;
+
+ /* If nonzero, stdin is a tty. */
+ bool stdin_tty;
+
+ /* If true, display the name of each file removed. */
+ bool verbose;
+
+ /* If true, treat the failure by the rm function to restore the
+ current working directory as a fatal error. I.e., if this field
+ is true and the rm function cannot restore cwd, it must exit with
+ a nonzero status. Some applications require that the rm function
+ restore cwd (e.g., mv) and some others do not (e.g., rm,
+ in many cases). */
+ bool require_restore_cwd;
+};
+
+enum RM_status
+{
+ /* These must be listed in order of increasing seriousness. */
+ RM_OK = 2,
+ RM_USER_DECLINED,
+ RM_ERROR,
+ RM_NONEMPTY_DIR
+};
+
+# define VALID_STATUS(S) \
+ ((S) == RM_OK || (S) == RM_USER_DECLINED || (S) == RM_ERROR)
+
+# define UPDATE_STATUS(S, New_value) \
+ do \
+ { \
+ if ((New_value) == RM_ERROR \
+ || ((New_value) == RM_USER_DECLINED && (S) == RM_OK)) \
+ (S) = (New_value); \
+ } \
+ while (0)
+
+enum RM_status rm (size_t n_files, char const *const *file,
+ struct rm_options const *x);
+
+#endif
diff --git a/src/rm.c b/src/rm.c
new file mode 100644
index 0000000..81f81ec
--- /dev/null
+++ b/src/rm.c
@@ -0,0 +1,374 @@
+/* `rm' file deletion utility for GNU.
+ Copyright (C) 88, 90, 91, 1994-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Rubin, David MacKenzie, and Richard Stallman.
+ Reworked to use chdir and avoid recursion by Jim Meyering. */
+
+/* Implementation overview:
+
+ In the `usual' case, RM saves no state for directories it is processing.
+ When a removal fails (either due to an error or to an interactive `no'
+ reply), the failure is noted (see description of `ht' in remove.c's
+ remove_cwd_entries function) so that when/if the containing directory
+ is reopened, RM doesn't try to remove the entry again.
+
+ RM may delete arbitrarily deep hierarchies -- even ones in which file
+ names (from root to leaf) are longer than the system-imposed maximum.
+ It does this by using chdir to change to each directory in turn before
+ removing the entries in that directory.
+
+ RM detects directory cycles lazily. See lib/cycle-check.c.
+
+ RM is careful to avoid forming full file names whenever possible.
+ A full file name is formed only when it is about to be used -- e.g.
+ in a diagnostic or in an interactive-mode prompt.
+
+ RM minimizes the number of lstat system calls it makes. On systems
+ that have valid d_type data in directory entries, RM makes only one
+ lstat call per command line argument -- regardless of the depth of
+ the hierarchy. */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+#include <assert.h>
+
+#include "system.h"
+#include "argmatch.h"
+#include "error.h"
+#include "lstat.h"
+#include "quote.h"
+#include "quotearg.h"
+#include "remove.h"
+#include "root-dev-ino.h"
+#include "yesno.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "rm"
+
+#define AUTHORS \
+ "Paul Rubin", "David MacKenzie, Richard Stallman", "Jim Meyering"
+
+/* Name this program was run with. */
+char *program_name;
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ INTERACTIVE_OPTION = CHAR_MAX + 1,
+ ONE_FILE_SYSTEM,
+ NO_PRESERVE_ROOT,
+ PRESERVE_ROOT,
+ PRESUME_INPUT_TTY_OPTION
+};
+
+enum interactive_type
+ {
+ interactive_never, /* 0: no option or --interactive=never */
+ interactive_once, /* 1: -I or --interactive=once */
+ interactive_always /* 2: default, -i or --interactive=always */
+ };
+
+static struct option const long_opts[] =
+{
+ {"directory", no_argument, NULL, 'd'},
+ {"force", no_argument, NULL, 'f'},
+ {"interactive", optional_argument, NULL, INTERACTIVE_OPTION},
+
+ {"one-file-system", no_argument, NULL, ONE_FILE_SYSTEM},
+ {"no-preserve-root", no_argument, NULL, NO_PRESERVE_ROOT},
+ {"preserve-root", no_argument, NULL, PRESERVE_ROOT},
+
+ /* This is solely for testing. Do not document. */
+ /* It is relatively difficult to ensure that there is a tty on stdin.
+ Since rm acts differently depending on that, without this option,
+ it'd be harder to test the parts of rm that depend on that setting. */
+ {"-presume-input-tty", no_argument, NULL, PRESUME_INPUT_TTY_OPTION},
+
+ {"recursive", no_argument, NULL, 'r'},
+ {"verbose", no_argument, NULL, 'v'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+static char const *const interactive_args[] =
+{
+ "never", "no", "none",
+ "once",
+ "always", "yes", NULL
+};
+static enum interactive_type const interactive_types[] =
+{
+ interactive_never, interactive_never, interactive_never,
+ interactive_once,
+ interactive_always, interactive_always
+};
+ARGMATCH_VERIFY (interactive_args, interactive_types);
+
+/* Advise the user about invalid usages like "rm -foo" if the file
+ "-foo" exists, assuming ARGC and ARGV are as with `main'. */
+
+static void
+diagnose_leading_hyphen (int argc, char **argv)
+{
+ /* OPTIND is unreliable, so iterate through the arguments looking
+ for a file name that looks like an option. */
+ int i;
+
+ for (i = 1; i < argc; i++)
+ {
+ char const *arg = argv[i];
+ struct stat st;
+
+ if (arg[0] == '-' && arg[1] && lstat (arg, &st) == 0)
+ {
+ fprintf (stderr,
+ _("Try `%s ./%s' to remove the file %s.\n"),
+ argv[0],
+ quotearg_n_style (1, shell_quoting_style, arg),
+ quote (arg));
+ break;
+ }
+ }
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]... FILE...\n"), program_name);
+ fputs (_("\
+Remove (unlink) the FILE(s).\n\
+\n\
+ -f, --force ignore nonexistent files, never prompt\n\
+ -i prompt before every removal\n\
+"), stdout);
+ fputs (_("\
+ -I prompt once before removing more than three files, or\n\
+ when removing recursively. Less intrusive than -i,\n\
+ while still giving protection against most mistakes\n\
+ --interactive[=WHEN] prompt according to WHEN: never, once (-I), or\n\
+ always (-i). Without WHEN, prompt always\n\
+"), stdout);
+ fputs (_("\
+ --one-file-system when removing a hierarchy recursively, skip any\n\
+ directory that is on a file system different from\n\
+ that of the corresponding command line argument\n\
+"), stdout);
+ fputs (_("\
+ --no-preserve-root do not treat `/' specially\n\
+ --preserve-root do not remove `/' (default)\n\
+ -r, -R, --recursive remove directories and their contents recursively\n\
+ -v, --verbose explain what is being done\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+By default, rm does not remove directories. Use the --recursive (-r or -R)\n\
+option to remove each listed directory, too, along with all of its contents.\n\
+"), stdout);
+ printf (_("\
+\n\
+To remove a file whose name starts with a `-', for example `-foo',\n\
+use one of these commands:\n\
+ %s -- -foo\n\
+\n\
+ %s ./-foo\n\
+"),
+ program_name, program_name);
+ fputs (_("\
+\n\
+Note that if you use rm to remove a file, it is usually possible to recover\n\
+the contents of that file. If you want more assurance that the contents are\n\
+truly unrecoverable, consider using shred.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+static void
+rm_option_init (struct rm_options *x)
+{
+ x->ignore_missing_files = false;
+ x->interactive = RMI_SOMETIMES;
+ x->one_file_system = false;
+ x->recursive = false;
+ x->root_dev_ino = NULL;
+ x->stdin_tty = isatty (STDIN_FILENO);
+ x->verbose = false;
+
+ /* Since this program exits immediately after calling `rm', rm need not
+ expend unnecessary effort to preserve the initial working directory. */
+ x->require_restore_cwd = false;
+}
+
+int
+main (int argc, char **argv)
+{
+ bool preserve_root = true;
+ struct rm_options x;
+ bool prompt_once = false;
+ int c;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ rm_option_init (&x);
+
+ while ((c = getopt_long (argc, argv, "dfirvIR", long_opts, NULL)) != -1)
+ {
+ switch (c)
+ {
+ case 'd':
+ /* Ignore this option, for backward compatibility with
+ coreutils 5.92. FIXME: Some time after 2005, change this
+ to report an error (or perhaps behave like FreeBSD does)
+ instead of ignoring the option. */
+ break;
+
+ case 'f':
+ x.interactive = RMI_NEVER;
+ x.ignore_missing_files = true;
+ prompt_once = false;
+ break;
+
+ case 'i':
+ x.interactive = RMI_ALWAYS;
+ x.ignore_missing_files = false;
+ prompt_once = false;
+ break;
+
+ case 'I':
+ x.interactive = RMI_NEVER;
+ x.ignore_missing_files = false;
+ prompt_once = true;
+ break;
+
+ case 'r':
+ case 'R':
+ x.recursive = true;
+ break;
+
+ case INTERACTIVE_OPTION:
+ {
+ int i;
+ if (optarg)
+ i = XARGMATCH ("--interactive", optarg, interactive_args,
+ interactive_types);
+ else
+ i = interactive_always;
+ switch (i)
+ {
+ case interactive_never:
+ x.interactive = RMI_NEVER;
+ prompt_once = false;
+ break;
+
+ case interactive_once:
+ x.interactive = RMI_SOMETIMES;
+ x.ignore_missing_files = false;
+ prompt_once = true;
+ break;
+
+ case interactive_always:
+ x.interactive = RMI_ALWAYS;
+ x.ignore_missing_files = false;
+ prompt_once = false;
+ break;
+ }
+ break;
+ }
+
+ case ONE_FILE_SYSTEM:
+ x.one_file_system = true;
+ break;
+
+ case NO_PRESERVE_ROOT:
+ preserve_root = false;
+ break;
+
+ case PRESERVE_ROOT:
+ preserve_root = true;
+ break;
+
+ case PRESUME_INPUT_TTY_OPTION:
+ x.stdin_tty = true;
+ break;
+
+ case 'v':
+ x.verbose = true;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ diagnose_leading_hyphen (argc, argv);
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (argc <= optind)
+ {
+ if (x.ignore_missing_files)
+ exit (EXIT_SUCCESS);
+ else
+ {
+ error (0, 0, _("missing operand"));
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (x.recursive & preserve_root)
+ {
+ static struct dev_ino dev_ino_buf;
+ x.root_dev_ino = get_root_dev_ino (&dev_ino_buf);
+ if (x.root_dev_ino == NULL)
+ error (EXIT_FAILURE, errno, _("failed to get attributes of %s"),
+ quote ("/"));
+ }
+
+ size_t n_files = argc - optind;
+ char const *const *file = (char const *const *) argv + optind;
+
+ if (prompt_once && (x.recursive || 3 < n_files))
+ {
+ fprintf (stderr,
+ (x.recursive
+ ? _("%s: remove all arguments recursively? ")
+ : _("%s: remove all arguments? ")),
+ program_name);
+ if (!yesno ())
+ exit (EXIT_SUCCESS);
+ }
+ enum RM_status status = rm (n_files, file, &x);
+ assert (VALID_STATUS (status));
+ exit (status == RM_ERROR ? EXIT_FAILURE : EXIT_SUCCESS);
+}
diff --git a/src/rmdir.c b/src/rmdir.c
new file mode 100644
index 0000000..39063b4
--- /dev/null
+++ b/src/rmdir.c
@@ -0,0 +1,226 @@
+/* rmdir -- remove directories
+
+ Copyright (C) 90, 91, 1995-2002, 2004, 2005, 2006 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Options:
+ -p, --parent Remove any parent dirs that are explicitly mentioned
+ in an argument, if they become empty after the
+ argument file is removed.
+
+ David MacKenzie <djm@ai.mit.edu> */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "error.h"
+#include "quotearg.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "rmdir"
+
+#define AUTHORS "David MacKenzie"
+
+/* The name this program was run with. */
+char *program_name;
+
+/* If true, remove empty parent directories. */
+static bool remove_empty_parents;
+
+/* If true, don't treat failure to remove a nonempty directory
+ as an error. */
+static bool ignore_fail_on_non_empty;
+
+/* If true, output a diagnostic for every directory processed. */
+static bool verbose;
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ IGNORE_FAIL_ON_NON_EMPTY_OPTION = CHAR_MAX + 1
+};
+
+static struct option const longopts[] =
+{
+ /* Don't name this `--force' because it's not close enough in meaning
+ to e.g. rm's -f option. */
+ {"ignore-fail-on-non-empty", no_argument, NULL,
+ IGNORE_FAIL_ON_NON_EMPTY_OPTION},
+
+ {"path", no_argument, NULL, 'p'}, /* Deprecated. */
+ {"parents", no_argument, NULL, 'p'},
+ {"verbose", no_argument, NULL, 'v'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+/* Return true if ERROR_NUMBER is one of the values associated
+ with a failed rmdir due to non-empty target directory. */
+
+static bool
+errno_rmdir_non_empty (int error_number)
+{
+ return (error_number == RMDIR_ERRNO_NOT_EMPTY);
+}
+
+/* Remove any empty parent directories of DIR.
+ If DIR contains slash characters, at least one of them
+ (beginning with the rightmost) is replaced with a NUL byte.
+ Return true if successful. */
+
+static bool
+remove_parents (char *dir)
+{
+ char *slash;
+ bool ok = true;
+
+ strip_trailing_slashes (dir);
+ while (1)
+ {
+ slash = strrchr (dir, '/');
+ if (slash == NULL)
+ break;
+ /* Remove any characters after the slash, skipping any extra
+ slashes in a row. */
+ while (slash > dir && *slash == '/')
+ --slash;
+ slash[1] = 0;
+
+ /* Give a diagnostic for each attempted removal if --verbose. */
+ if (verbose)
+ error (0, 0, _("removing directory, %s"), dir);
+
+ ok = (rmdir (dir) == 0);
+
+ if (!ok)
+ {
+ /* Stop quietly if --ignore-fail-on-non-empty. */
+ if (ignore_fail_on_non_empty
+ && errno_rmdir_non_empty (errno))
+ {
+ ok = true;
+ }
+ else
+ {
+ error (0, errno, "%s", quotearg_colon (dir));
+ }
+ break;
+ }
+ }
+ return ok;
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]... DIRECTORY...\n"), program_name);
+ fputs (_("\
+Remove the DIRECTORY(ies), if they are empty.\n\
+\n\
+ --ignore-fail-on-non-empty\n\
+ ignore each failure that is solely because a directory\n\
+ is non-empty\n\
+"), stdout);
+ fputs (_("\
+ -p, --parents Remove DIRECTORY and its ancestors. E.g., `rmdir -p a/b/c' is\n\
+ similar to `rmdir a/b/c a/b a'.\n\
+ -v, --verbose output a diagnostic for every directory processed\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ bool ok = true;
+ int optc;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ remove_empty_parents = false;
+
+ while ((optc = getopt_long (argc, argv, "pv", longopts, NULL)) != -1)
+ {
+ switch (optc)
+ {
+ case 'p':
+ remove_empty_parents = true;
+ break;
+ case IGNORE_FAIL_ON_NON_EMPTY_OPTION:
+ ignore_fail_on_non_empty = true;
+ break;
+ case 'v':
+ verbose = true;
+ break;
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (optind == argc)
+ {
+ error (0, 0, _("missing operand"));
+ usage (EXIT_FAILURE);
+ }
+
+ for (; optind < argc; ++optind)
+ {
+ char *dir = argv[optind];
+
+ /* Give a diagnostic for each attempted removal if --verbose. */
+ if (verbose)
+ error (0, 0, _("removing directory, %s"), dir);
+
+ if (rmdir (dir) != 0)
+ {
+ if (ignore_fail_on_non_empty
+ && errno_rmdir_non_empty (errno))
+ continue;
+
+ error (0, errno, "%s", quotearg_colon (dir));
+ ok = false;
+ }
+ else if (remove_empty_parents)
+ {
+ ok &= remove_parents (dir);
+ }
+ }
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/seq.c b/src/seq.c
new file mode 100644
index 0000000..59dd318
--- /dev/null
+++ b/src/seq.c
@@ -0,0 +1,375 @@
+/* seq - print sequence of numbers to standard output.
+ Copyright (C) 1994-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Ulrich Drepper. */
+
+#include <config.h>
+#include <getopt.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "c-strtod.h"
+#include "error.h"
+#include "quote.h"
+#include "xstrtod.h"
+
+/* Roll our own isfinite rather than using <math.h>, so that we don't
+ have to worry about linking -lm just for isfinite. */
+#ifndef isfinite
+# define isfinite(x) ((x) * 0 == 0)
+#endif
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "seq"
+
+#define AUTHORS "Ulrich Drepper"
+
+/* If true print all number with equal width. */
+static bool equal_width;
+
+/* The name that this program was run with. */
+char *program_name;
+
+/* The string used to separate two numbers. */
+static char const *separator;
+
+/* The string output after all numbers have been output.
+ Usually "\n" or "\0". */
+/* FIXME: make this an option. */
+static char const terminator[] = "\n";
+
+static struct option const long_options[] =
+{
+ { "equal-width", no_argument, NULL, 'w'},
+ { "format", required_argument, NULL, 'f'},
+ { "separator", required_argument, NULL, 's'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ { NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... LAST\n\
+ or: %s [OPTION]... FIRST LAST\n\
+ or: %s [OPTION]... FIRST INCREMENT LAST\n\
+"), program_name, program_name, program_name);
+ fputs (_("\
+Print numbers from FIRST to LAST, in steps of INCREMENT.\n\
+\n\
+ -f, --format=FORMAT use printf style floating-point FORMAT\n\
+ -s, --separator=STRING use STRING to separate numbers (default: \\n)\n\
+ -w, --equal-width equalize width by padding with leading zeroes\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+If FIRST or INCREMENT is omitted, it defaults to 1. That is, an\n\
+omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.\n\
+FIRST, INCREMENT, and LAST are interpreted as floating point values.\n\
+INCREMENT is usually positive if FIRST is smaller than LAST, and\n\
+INCREMENT is usually negative if FIRST is greater than LAST.\n\
+"), stdout);
+ fputs (_("\
+FORMAT must be suitable for printing one argument of type `double';\n\
+it defaults to %.PRECf if FIRST, INCREMENT, and LAST are all fixed point\n\
+decimal numbers with maximum precision PREC, and to %g otherwise.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* A command-line operand. */
+struct operand
+{
+ /* Its value, converted to 'long double'. */
+ long double value;
+
+ /* Its print width, if it were printed out in a form similar to its
+ input form. An input like "-.1" is treated like "-0.1", and an
+ input like "1." is treated like "1", but otherwise widths are
+ left alone. */
+ size_t width;
+
+ /* Number of digits after the decimal point, or INT_MAX if the
+ number can't easily be expressed as a fixed-point number. */
+ int precision;
+};
+typedef struct operand operand;
+
+/* Read a long double value from the command line.
+ Return if the string is correct else signal error. */
+
+static operand
+scan_arg (const char *arg)
+{
+ operand ret;
+
+ if (! xstrtold (arg, NULL, &ret.value, c_strtold))
+ {
+ error (0, 0, _("invalid floating point argument: %s"), arg);
+ usage (EXIT_FAILURE);
+ }
+
+ ret.width = strlen (arg);
+ ret.precision = INT_MAX;
+
+ if (! arg[strcspn (arg, "eExX")] && isfinite (ret.value))
+ {
+ char const *decimal_point = strchr (arg, '.');
+ if (! decimal_point)
+ ret.precision = 0;
+ else
+ {
+ size_t fraction_len = strlen (decimal_point + 1);
+ if (fraction_len <= INT_MAX)
+ ret.precision = fraction_len;
+ ret.width += (fraction_len == 0
+ ? -1
+ : (decimal_point == arg
+ || ! ISDIGIT (decimal_point[-1])));
+ }
+ }
+
+ return ret;
+}
+
+/* If FORMAT is a valid printf format for a double argument, return
+ its long double equivalent, possibly allocated from dynamic
+ storage; otherwise, return NULL. */
+
+static char const *
+long_double_format (char const *fmt)
+{
+ size_t i;
+ size_t prefix_len;
+ bool has_L;
+
+ for (i = 0; ! (fmt[i] == '%' && fmt[i + 1] != '%'); i++)
+ if (! fmt[i])
+ return NULL;
+
+ i++;
+ i += strspn (fmt + i, "-+#0 '");
+ i += strspn (fmt + i, "0123456789");
+ if (fmt[i] == '.')
+ {
+ i++;
+ i += strspn (fmt + i, "0123456789");
+ }
+
+ prefix_len = i;
+ has_L = (fmt[i] == 'L');
+ i += has_L;
+ if (! strchr ("efgaEFGA", fmt[i]))
+ return NULL;
+
+ for (i++; ! (fmt[i] == '%' && fmt[i + 1] != '%'); i++)
+ if (! fmt[i])
+ {
+ size_t format_size = i + 1;
+ char *ldfmt = xmalloc (format_size + 1);
+ memcpy (ldfmt, fmt, prefix_len);
+ ldfmt[prefix_len] = 'L';
+ strcpy (ldfmt + prefix_len + 1, fmt + prefix_len + has_L);
+ return ldfmt;
+ }
+
+ return NULL;
+}
+
+/* Actually print the sequence of numbers in the specified range, with the
+ given or default stepping and format. */
+
+static void
+print_numbers (char const *fmt,
+ long double first, long double step, long double last)
+{
+ long double i;
+
+ for (i = 0; /* empty */; i++)
+ {
+ long double x = first + i * step;
+ if (step < 0 ? x < last : last < x)
+ break;
+ if (i)
+ fputs (separator, stdout);
+ printf (fmt, x);
+ }
+
+ if (i)
+ fputs (terminator, stdout);
+}
+
+/* Return the default format given FIRST, STEP, and LAST. */
+static char const *
+get_default_format (operand first, operand step, operand last)
+{
+ static char format_buf[sizeof "%0.Lf" + 2 * INT_STRLEN_BOUND (int)];
+
+ int prec = MAX (first.precision, step.precision);
+
+ if (prec != INT_MAX && last.precision != INT_MAX)
+ {
+ if (equal_width)
+ {
+ size_t first_width = first.width + (prec - first.precision);
+ size_t last_width = last.width + (prec - last.precision);
+ if (first.width <= first_width
+ && (last.width < last_width) == (prec < last.precision))
+ {
+ size_t width = MAX (first_width, last_width);
+ if (width <= INT_MAX)
+ {
+ int w = width;
+ sprintf (format_buf, "%%0%d.%dLf", w, prec);
+ return format_buf;
+ }
+ }
+ }
+ else
+ {
+ sprintf (format_buf, "%%.%dLf", prec);
+ return format_buf;
+ }
+ }
+
+ return "%Lg";
+}
+
+int
+main (int argc, char **argv)
+{
+ int optc;
+ operand first = { 1, 1, 0 };
+ operand step = { 1, 1, 0 };
+ operand last;
+
+ /* The printf(3) format used for output. */
+ char const *format_str = NULL;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ equal_width = false;
+ separator = "\n";
+
+ /* We have to handle negative numbers in the command line but this
+ conflicts with the command line arguments. So explicitly check first
+ whether the next argument looks like a negative number. */
+ while (optind < argc)
+ {
+ if (argv[optind][0] == '-'
+ && ((optc = argv[optind][1]) == '.' || ISDIGIT (optc)))
+ {
+ /* means negative number */
+ break;
+ }
+
+ optc = getopt_long (argc, argv, "+f:s:w", long_options, NULL);
+ if (optc == -1)
+ break;
+
+ switch (optc)
+ {
+ case 'f':
+ format_str = optarg;
+ break;
+
+ case 's':
+ separator = optarg;
+ break;
+
+ case 'w':
+ equal_width = true;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (argc - optind < 1)
+ {
+ error (0, 0, _("missing operand"));
+ usage (EXIT_FAILURE);
+ }
+
+ if (3 < argc - optind)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind + 3]));
+ usage (EXIT_FAILURE);
+ }
+
+ if (format_str)
+ {
+ char const *f = long_double_format (format_str);
+ if (! f)
+ {
+ error (0, 0, _("invalid format string: %s"), quote (format_str));
+ usage (EXIT_FAILURE);
+ }
+ format_str = f;
+ }
+
+ last = scan_arg (argv[optind++]);
+
+ if (optind < argc)
+ {
+ first = last;
+ last = scan_arg (argv[optind++]);
+
+ if (optind < argc)
+ {
+ step = last;
+ last = scan_arg (argv[optind++]);
+ }
+ }
+
+ if (format_str != NULL && equal_width)
+ {
+ error (0, 0, _("\
+format string may not be specified when printing equal width strings"));
+ usage (EXIT_FAILURE);
+ }
+
+ if (format_str == NULL)
+ format_str = get_default_format (first, step, last);
+
+ print_numbers (format_str, first.value, step.value, last.value);
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/setuidgid.c b/src/setuidgid.c
new file mode 100644
index 0000000..3a51225
--- /dev/null
+++ b/src/setuidgid.c
@@ -0,0 +1,129 @@
+/* setuidgid - run a command with the UID and GID of a specified user
+ Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering */
+
+#include <config.h>
+#include <getopt.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <grp.h>
+
+#include "system.h"
+
+#include "error.h"
+#include "long-options.h"
+#include "quote.h"
+
+#define PROGRAM_NAME "setuidgid"
+
+/* I wrote this program from scratch, based on the description of
+ D.J. Bernstein's program: http://cr.yp.to/daemontools/setuidgid.html. */
+#define AUTHORS "Jim Meyering"
+
+#define SETUIDGID_FAILURE 111
+
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s USERNAME COMMAND [ARGUMENT]...\n\
+ or: %s OPTION\n\
+"),
+ program_name, program_name);
+
+ fputs (_("\
+Drop any supplemental groups, assume the user-ID and group-ID of\n\
+the specified USERNAME, and run COMMAND with any specified ARGUMENTs.\n\
+Exit with status 111 if unable to assume the required user and group ID.\n\
+Otherwise, exit with the exit status of COMMAND.\n\
+This program is useful only when run by root (user ID zero).\n\
+\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ char const *user_id;
+ struct passwd *pwd;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ initialize_exit_failure (SETUIDGID_FAILURE);
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "+", NULL, NULL) != -1)
+ usage (SETUIDGID_FAILURE);
+
+ if (argc <= optind + 1)
+ {
+ if (argc < optind + 1)
+ error (0, 0, _("missing operand"));
+ else
+ error (0, 0, _("missing operand after %s"), quote (argv[optind]));
+ usage (SETUIDGID_FAILURE);
+ }
+
+ user_id = argv[optind];
+ pwd = getpwnam (user_id);
+ if (pwd == NULL)
+ error (SETUIDGID_FAILURE, errno,
+ _("unknown user-ID: %s"), quote (user_id));
+
+#if HAVE_SETGROUPS
+ if (setgroups (1, &pwd->pw_gid))
+ error (SETUIDGID_FAILURE, errno, _("cannot set supplemental group"));
+#endif
+
+ if (setgid (pwd->pw_gid))
+ error (SETUIDGID_FAILURE, errno,
+ _("cannot set group-ID to %lu"), (unsigned long int) pwd->pw_gid);
+
+ if (setuid (pwd->pw_uid))
+ error (SETUIDGID_FAILURE, errno,
+ _("cannot set user-ID to %lu"), (unsigned long int) pwd->pw_uid);
+
+ {
+ char **cmd = argv + optind + 1;
+ int exit_status;
+ execvp (*cmd, cmd);
+ exit_status = (errno == ENOENT ? EXIT_ENOENT : EXIT_CANNOT_INVOKE);
+
+ error (0, errno, _("cannot run command %s"), quote (*cmd));
+ exit (exit_status);
+ }
+}
diff --git a/src/shred.c b/src/shred.c
new file mode 100644
index 0000000..23a4944
--- /dev/null
+++ b/src/shred.c
@@ -0,0 +1,1214 @@
+/* shred.c - overwrite files and devices to make it harder to recover data
+
+ Copyright (C) 1999-2006 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 1999 Colin Plumb.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written by Colin Plumb. */
+
+/* TODO:
+ - use consistent non-capitalization in error messages
+ - add standard GNU copyleft comment
+
+ - Add -r/-R/--recursive
+ - Add -i/--interactive
+ - Reserve -d
+ - Add -L
+ - Add an unlink-all option to emulate rm.
+ */
+
+/*
+ * Do a more secure overwrite of given files or devices, to make it harder
+ * for even very expensive hardware probing to recover the data.
+ *
+ * Although this process is also known as "wiping", I prefer the longer
+ * name both because I think it is more evocative of what is happening and
+ * because a longer name conveys a more appropriate sense of deliberateness.
+ *
+ * For the theory behind this, see "Secure Deletion of Data from Magnetic
+ * and Solid-State Memory", on line at
+ * http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html
+ *
+ * Just for the record, reversing one or two passes of disk overwrite
+ * is not terribly difficult with hardware help. Hook up a good-quality
+ * digitizing oscilloscope to the output of the head preamplifier and copy
+ * the high-res digitized data to a computer for some off-line analysis.
+ * Read the "current" data and average all the pulses together to get an
+ * "average" pulse on the disk. Subtract this average pulse from all of
+ * the actual pulses and you can clearly see the "echo" of the previous
+ * data on the disk.
+ *
+ * Real hard drives have to balance the cost of the media, the head,
+ * and the read circuitry. They use better-quality media than absolutely
+ * necessary to limit the cost of the read circuitry. By throwing that
+ * assumption out, and the assumption that you want the data processed
+ * as fast as the hard drive can spin, you can do better.
+ *
+ * If asked to wipe a file, this also unlinks it, renaming it to in a
+ * clever way to try to leave no trace of the original filename.
+ *
+ * This was inspired by a desire to improve on some code titled:
+ * Wipe V1.0-- Overwrite and delete files. S. 2/3/96
+ * but I've rewritten everything here so completely that no trace of
+ * the original remains.
+ *
+ * Thanks to:
+ * Bob Jenkins, for his good RNG work and patience with the FSF copyright
+ * paperwork.
+ * Jim Meyering, for his work merging this into the GNU fileutils while
+ * still letting me feel a sense of ownership and pride. Getting me to
+ * tolerate the GNU brace style was quite a feat of diplomacy.
+ * Paul Eggert, for lots of useful discussion and code. I disagree with
+ * an awful lot of his suggestions, but they're disagreements worth having.
+ *
+ * Things to think about:
+ * - Security: Is there any risk to the race
+ * between overwriting and unlinking a file? Will it do anything
+ * drastically bad if told to attack a named pipe or socket?
+ */
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "shred"
+
+#define AUTHORS "Colin Plumb"
+
+#include <config.h>
+
+#include <getopt.h>
+#include <stdio.h>
+#include <assert.h>
+#include <setjmp.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "xstrtol.h"
+#include "error.h"
+#include "fcntl--.h"
+#include "getpagesize.h"
+#include "human.h"
+#include "inttostr.h"
+#include "quotearg.h" /* For quotearg_colon */
+#include "quote.h" /* For quotearg_colon */
+#include "randint.h"
+#include "randread.h"
+
+/* Default number of times to overwrite. */
+enum { DEFAULT_PASSES = 25 };
+
+/* How many seconds to wait before checking whether to output another
+ verbose output line. */
+enum { VERBOSE_UPDATE = 5 };
+
+/* Sector size and corresponding mask, for recovering after write failures.
+ The size must be a power of 2. */
+enum { SECTOR_SIZE = 512 };
+enum { SECTOR_MASK = SECTOR_SIZE - 1 };
+verify (0 < SECTOR_SIZE && (SECTOR_SIZE & SECTOR_MASK) == 0);
+
+struct Options
+{
+ bool force; /* -f flag: chmod files if necessary */
+ size_t n_iterations; /* -n flag: Number of iterations */
+ off_t size; /* -s flag: size of file */
+ bool remove_file; /* -u flag: remove file after shredding */
+ bool verbose; /* -v flag: Print progress */
+ bool exact; /* -x flag: Do not round up file size */
+ bool zero_fill; /* -z flag: Add a final zero pass */
+};
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ RANDOM_SOURCE_OPTION = CHAR_MAX + 1
+};
+
+static struct option const long_opts[] =
+{
+ {"exact", no_argument, NULL, 'x'},
+ {"force", no_argument, NULL, 'f'},
+ {"iterations", required_argument, NULL, 'n'},
+ {"size", required_argument, NULL, 's'},
+ {"random-source", required_argument, NULL, RANDOM_SOURCE_OPTION},
+ {"remove", no_argument, NULL, 'u'},
+ {"verbose", no_argument, NULL, 'v'},
+ {"zero", no_argument, NULL, 'z'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+/* Global variable for error printing purposes */
+char const *program_name; /* Initialized before any possible use */
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTIONS] FILE [...]\n"), program_name);
+ fputs (_("\
+Overwrite the specified FILE(s) repeatedly, in order to make it harder\n\
+for even very expensive hardware probing to recover the data.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ printf (_("\
+ -f, --force change permissions to allow writing if necessary\n\
+ -n, --iterations=N Overwrite N times instead of the default (%d)\n\
+ --random-source=FILE get random bytes from FILE (default /dev/urandom)\n\
+ -s, --size=N shred this many bytes (suffixes like K, M, G accepted)\n\
+"), DEFAULT_PASSES);
+ fputs (_("\
+ -u, --remove truncate and remove file after overwriting\n\
+ -v, --verbose show progress\n\
+ -x, --exact do not round file sizes up to the next full block;\n\
+ this is the default for non-regular files\n\
+ -z, --zero add a final overwrite with zeros to hide shredding\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+If FILE is -, shred standard output.\n\
+\n\
+Delete FILE(s) if --remove (-u) is specified. The default is not to remove\n\
+the files because it is common to operate on device files like /dev/hda,\n\
+and those files usually should not be removed. When operating on regular\n\
+files, most people use the --remove option.\n\
+\n\
+"), stdout);
+ fputs (_("\
+CAUTION: Note that shred relies on a very important assumption:\n\
+that the file system overwrites data in place. This is the traditional\n\
+way to do things, but many modern file system designs do not satisfy this\n\
+assumption. The following are examples of file systems on which shred is\n\
+not effective, or is not guaranteed to be effective in all file system modes:\n\
+\n\
+"), stdout);
+ fputs (_("\
+* log-structured or journaled file systems, such as those supplied with\n\
+AIX and Solaris (and JFS, ReiserFS, XFS, Ext3, etc.)\n\
+\n\
+* file systems that write redundant data and carry on even if some writes\n\
+fail, such as RAID-based file systems\n\
+\n\
+* file systems that make snapshots, such as Network Appliance's NFS server\n\
+\n\
+"), stdout);
+ fputs (_("\
+* file systems that cache in temporary locations, such as NFS\n\
+version 3 clients\n\
+\n\
+* compressed file systems\n\
+\n\
+"), stdout);
+ fputs (_("\
+In the case of ext3 file systems, the above disclaimer applies\n\
+(and shred is thus of limited effectiveness) only in data=journal mode,\n\
+which journals file data in addition to just metadata. In both the\n\
+data=ordered (default) and data=writeback modes, shred works as usual.\n\
+Ext3 journaling modes can be changed by adding the data=something option\n\
+to the mount options for a particular file system in the /etc/fstab file,\n\
+as documented in the mount man page (man mount).\n\
+\n\
+"), stdout);
+ fputs (_("\
+In addition, file system backups and remote mirrors may contain copies\n\
+of the file that cannot be removed, and that will allow a shredded file\n\
+to be recovered later.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+
+/*
+ * Fill a buffer with a fixed pattern.
+ *
+ * The buffer must be at least 3 bytes long, even if
+ * size is less. Larger sizes are filled exactly.
+ */
+static void
+fillpattern (int type, unsigned char *r, size_t size)
+{
+ size_t i;
+ unsigned int bits = type & 0xfff;
+
+ bits |= bits << 12;
+ r[0] = (bits >> 4) & 255;
+ r[1] = (bits >> 8) & 255;
+ r[2] = bits & 255;
+ for (i = 3; i < size / 2; i *= 2)
+ memcpy (r + i, r, i);
+ if (i < size)
+ memcpy (r + i, r, size - i);
+
+ /* Invert the first bit of every sector. */
+ if (type & 0x1000)
+ for (i = 0; i < size; i += SECTOR_SIZE)
+ r[i] ^= 0x80;
+}
+
+/*
+ * Generate a 6-character (+ nul) pass name string
+ * FIXME: allow translation of "random".
+ */
+#define PASS_NAME_SIZE 7
+static void
+passname (unsigned char const *data, char name[PASS_NAME_SIZE])
+{
+ if (data)
+ sprintf (name, "%02x%02x%02x", data[0], data[1], data[2]);
+ else
+ memcpy (name, "random", PASS_NAME_SIZE);
+}
+
+/* Request that all data for FD be transferred to the corresponding
+ storage device. QNAME is the file name (quoted for colons).
+ Report any errors found. Return 0 on success, -1
+ (setting errno) on failure. It is not an error if fdatasync and/or
+ fsync is not supported for this file, or if the file is not a
+ writable file descriptor. */
+static int
+dosync (int fd, char const *qname)
+{
+ int err;
+
+#if HAVE_FDATASYNC
+ if (fdatasync (fd) == 0)
+ return 0;
+ err = errno;
+ if (err != EINVAL && err != EBADF)
+ {
+ error (0, err, _("%s: fdatasync failed"), qname);
+ errno = err;
+ return -1;
+ }
+#endif
+
+ if (fsync (fd) == 0)
+ return 0;
+ err = errno;
+ if (err != EINVAL && err != EBADF)
+ {
+ error (0, err, _("%s: fsync failed"), qname);
+ errno = err;
+ return -1;
+ }
+
+ sync ();
+ return 0;
+}
+
+/* Turn on or off direct I/O mode for file descriptor FD, if possible.
+ Try to turn it on if ENABLE is true. Otherwise, try to turn it off. */
+static void
+direct_mode (int fd, bool enable)
+{
+ if (O_DIRECT)
+ {
+ int fd_flags = fcntl (fd, F_GETFL);
+ if (0 < fd_flags)
+ {
+ int new_flags = (enable
+ ? (fd_flags | O_DIRECT)
+ : (fd_flags & ~O_DIRECT));
+ if (new_flags != fd_flags)
+ fcntl (fd, F_SETFL, new_flags);
+ }
+ }
+
+#if HAVE_DIRECTIO && defined DIRECTIO_ON && defined DIRECTIO_OFF
+ /* This is Solaris-specific. See the following for details:
+ http://docs.sun.com/db/doc/816-0213/6m6ne37so?q=directio&a=view */
+ directio (fd, enable ? DIRECTIO_ON : DIRECTIO_OFF);
+#endif
+}
+
+/*
+ * Do pass number k of n, writing "size" bytes of the given pattern "type"
+ * to the file descriptor fd. Qname, k and n are passed in only for verbose
+ * progress message purposes. If n == 0, no progress messages are printed.
+ *
+ * If *sizep == -1, the size is unknown, and it will be filled in as soon
+ * as writing fails.
+ *
+ * Return 1 on write error, -1 on other error, 0 on success.
+ */
+static int
+dopass (int fd, char const *qname, off_t *sizep, int type,
+ struct randread_source *s, unsigned long int k, unsigned long int n)
+{
+ off_t size = *sizep;
+ off_t offset; /* Current file posiiton */
+ time_t thresh IF_LINT (= 0); /* Time to maybe print next status update */
+ time_t now = 0; /* Current time */
+ size_t lim; /* Amount of data to try writing */
+ size_t soff; /* Offset into buffer for next write */
+ ssize_t ssize; /* Return value from write */
+
+ /* Fill pattern buffer. Aligning it to a 32-bit boundary speeds up randread
+ in some cases. */
+ typedef uint32_t fill_pattern_buffer[3 * 1024];
+ union
+ {
+ fill_pattern_buffer buffer;
+ char c[sizeof (fill_pattern_buffer)];
+ unsigned char u[sizeof (fill_pattern_buffer)];
+ } r;
+
+ off_t sizeof_r = sizeof r;
+ char pass_string[PASS_NAME_SIZE]; /* Name of current pass */
+ bool write_error = false;
+ bool first_write = true;
+
+ /* Printable previous offset into the file */
+ char previous_offset_buf[LONGEST_HUMAN_READABLE + 1];
+ char const *previous_human_offset IF_LINT (= 0);
+
+ if (lseek (fd, 0, SEEK_SET) == -1)
+ {
+ error (0, errno, _("%s: cannot rewind"), qname);
+ return -1;
+ }
+
+ /* Constant fill patterns need only be set up once. */
+ if (type >= 0)
+ {
+ lim = (0 <= size && size < sizeof_r ? size : sizeof r);
+ fillpattern (type, r.u, lim);
+ passname (r.u, pass_string);
+ }
+ else
+ {
+ passname (0, pass_string);
+ }
+
+ /* Set position if first status update */
+ if (n)
+ {
+ error (0, 0, _("%s: pass %lu/%lu (%s)..."), qname, k, n, pass_string);
+ thresh = time (NULL) + VERBOSE_UPDATE;
+ previous_human_offset = "";
+ }
+
+ offset = 0;
+ for (;;)
+ {
+ /* How much to write this time? */
+ lim = sizeof r;
+ if (0 <= size && size - offset < sizeof_r)
+ {
+ if (size < offset)
+ break;
+ lim = size - offset;
+ if (!lim)
+ break;
+ }
+ if (type < 0)
+ randread (s, &r, lim);
+ /* Loop to retry partial writes. */
+ for (soff = 0; soff < lim; soff += ssize, first_write = false)
+ {
+ ssize = write (fd, r.c + soff, lim - soff);
+ if (ssize <= 0)
+ {
+ if (size < 0 && (ssize == 0 || errno == ENOSPC))
+ {
+ /* Ah, we have found the end of the file */
+ *sizep = size = offset + soff;
+ break;
+ }
+ else
+ {
+ int errnum = errno;
+ char buf[INT_BUFSIZE_BOUND (uintmax_t)];
+
+ /* If the first write of the first pass for a given file
+ has just failed with EINVAL, turn off direct mode I/O
+ and try again. This works around a bug in linux-2.4
+ whereby opening with O_DIRECT would succeed for some
+ file system types (e.g., ext3), but any attempt to
+ access a file through the resulting descriptor would
+ fail with EINVAL. */
+ if (k == 1 && first_write && errno == EINVAL)
+ {
+ direct_mode (fd, false);
+ ssize = 0;
+ continue;
+ }
+ error (0, errnum, _("%s: error writing at offset %s"),
+ qname, umaxtostr (offset + soff, buf));
+
+ /* 'shred' is often used on bad media, before throwing it
+ out. Thus, it shouldn't give up on bad blocks. This
+ code works because lim is always a multiple of
+ SECTOR_SIZE, except at the end. */
+ verify (sizeof r % SECTOR_SIZE == 0);
+ if (errnum == EIO && 0 <= size && (soff | SECTOR_MASK) < lim)
+ {
+ size_t soff1 = (soff | SECTOR_MASK) + 1;
+ if (lseek (fd, offset + soff1, SEEK_SET) != -1)
+ {
+ /* Arrange to skip this block. */
+ ssize = soff1 - soff;
+ write_error = true;
+ continue;
+ }
+ error (0, errno, _("%s: lseek failed"), qname);
+ }
+ return -1;
+ }
+ }
+ }
+
+ /* Okay, we have written "soff" bytes. */
+
+ if (offset + soff < offset)
+ {
+ error (0, 0, _("%s: file too large"), qname);
+ return -1;
+ }
+
+ offset += soff;
+
+ /* Time to print progress? */
+ if (n
+ && ((offset == size && *previous_human_offset)
+ || thresh <= (now = time (NULL))))
+ {
+ char offset_buf[LONGEST_HUMAN_READABLE + 1];
+ char size_buf[LONGEST_HUMAN_READABLE + 1];
+ int human_progress_opts = (human_autoscale | human_SI
+ | human_base_1024 | human_B);
+ char const *human_offset
+ = human_readable (offset, offset_buf,
+ human_floor | human_progress_opts, 1, 1);
+
+ if (offset == size
+ || !STREQ (previous_human_offset, human_offset))
+ {
+ if (size < 0)
+ error (0, 0, _("%s: pass %lu/%lu (%s)...%s"),
+ qname, k, n, pass_string, human_offset);
+ else
+ {
+ uintmax_t off = offset;
+ int percent = (size == 0
+ ? 100
+ : (off <= TYPE_MAXIMUM (uintmax_t) / 100
+ ? off * 100 / size
+ : off / (size / 100)));
+ char const *human_size
+ = human_readable (size, size_buf,
+ human_ceiling | human_progress_opts,
+ 1, 1);
+ if (offset == size)
+ human_offset = human_size;
+ error (0, 0, _("%s: pass %lu/%lu (%s)...%s/%s %d%%"),
+ qname, k, n, pass_string, human_offset, human_size,
+ percent);
+ }
+
+ strcpy (previous_offset_buf, human_offset);
+ previous_human_offset = previous_offset_buf;
+ thresh = now + VERBOSE_UPDATE;
+
+ /*
+ * Force periodic syncs to keep displayed progress accurate
+ * FIXME: Should these be present even if -v is not enabled,
+ * to keep the buffer cache from filling with dirty pages?
+ * It's a common problem with programs that do lots of writes,
+ * like mkfs.
+ */
+ if (dosync (fd, qname) != 0)
+ {
+ if (errno != EIO)
+ return -1;
+ write_error = true;
+ }
+ }
+ }
+ }
+
+ /* Force what we just wrote to hit the media. */
+ if (dosync (fd, qname) != 0)
+ {
+ if (errno != EIO)
+ return -1;
+ write_error = true;
+ }
+
+ return write_error;
+}
+
+/*
+ * The passes start and end with a random pass, and the passes in between
+ * are done in random order. The idea is to deprive someone trying to
+ * reverse the process of knowledge of the overwrite patterns, so they
+ * have the additional step of figuring out what was done to the disk
+ * before they can try to reverse or cancel it.
+ *
+ * First, all possible 1-bit patterns. There are two of them.
+ * Then, all possible 2-bit patterns. There are four, but the two
+ * which are also 1-bit patterns can be omitted.
+ * Then, all possible 3-bit patterns. Likewise, 8-2 = 6.
+ * Then, all possible 4-bit patterns. 16-4 = 12.
+ *
+ * The basic passes are:
+ * 1-bit: 0x000, 0xFFF
+ * 2-bit: 0x555, 0xAAA
+ * 3-bit: 0x249, 0x492, 0x924, 0x6DB, 0xB6D, 0xDB6 (+ 1-bit)
+ * 100100100100 110110110110
+ * 9 2 4 D B 6
+ * 4-bit: 0x111, 0x222, 0x333, 0x444, 0x666, 0x777,
+ * 0x888, 0x999, 0xBBB, 0xCCC, 0xDDD, 0xEEE (+ 1-bit, 2-bit)
+ * Adding three random passes at the beginning, middle and end
+ * produces the default 25-pass structure.
+ *
+ * The next extension would be to 5-bit and 6-bit patterns.
+ * There are 30 uncovered 5-bit patterns and 64-8-2 = 46 uncovered
+ * 6-bit patterns, so they would increase the time required
+ * significantly. 4-bit patterns are enough for most purposes.
+ *
+ * The main gotcha is that this would require a trickier encoding,
+ * since lcm(2,3,4) = 12 bits is easy to fit into an int, but
+ * lcm(2,3,4,5) = 60 bits is not.
+ *
+ * One extension that is included is to complement the first bit in each
+ * 512-byte block, to alter the phase of the encoded data in the more
+ * complex encodings. This doesn't apply to MFM, so the 1-bit patterns
+ * are considered part of the 3-bit ones and the 2-bit patterns are
+ * considered part of the 4-bit patterns.
+ *
+ *
+ * How does the generalization to variable numbers of passes work?
+ *
+ * Here's how...
+ * Have an ordered list of groups of passes. Each group is a set.
+ * Take as many groups as will fit, plus a random subset of the
+ * last partial group, and place them into the passes list.
+ * Then shuffle the passes list into random order and use that.
+ *
+ * One extra detail: if we can't include a large enough fraction of the
+ * last group to be interesting, then just substitute random passes.
+ *
+ * If you want more passes than the entire list of groups can
+ * provide, just start repeating from the beginning of the list.
+ */
+static int const
+ patterns[] =
+{
+ -2, /* 2 random passes */
+ 2, 0x000, 0xFFF, /* 1-bit */
+ 2, 0x555, 0xAAA, /* 2-bit */
+ -1, /* 1 random pass */
+ 6, 0x249, 0x492, 0x6DB, 0x924, 0xB6D, 0xDB6, /* 3-bit */
+ 12, 0x111, 0x222, 0x333, 0x444, 0x666, 0x777,
+ 0x888, 0x999, 0xBBB, 0xCCC, 0xDDD, 0xEEE, /* 4-bit */
+ -1, /* 1 random pass */
+ /* The following patterns have the frst bit per block flipped */
+ 8, 0x1000, 0x1249, 0x1492, 0x16DB, 0x1924, 0x1B6D, 0x1DB6, 0x1FFF,
+ 14, 0x1111, 0x1222, 0x1333, 0x1444, 0x1555, 0x1666, 0x1777,
+ 0x1888, 0x1999, 0x1AAA, 0x1BBB, 0x1CCC, 0x1DDD, 0x1EEE,
+ -1, /* 1 random pass */
+ 0 /* End */
+};
+
+/*
+ * Generate a random wiping pass pattern with num passes.
+ * This is a two-stage process. First, the passes to include
+ * are chosen, and then they are shuffled into the desired
+ * order.
+ */
+static void
+genpattern (int *dest, size_t num, struct randint_source *s)
+{
+ size_t randpasses;
+ int const *p;
+ int *d;
+ size_t n;
+ size_t accum, top, swap;
+ int k;
+
+ if (!num)
+ return;
+
+ /* Stage 1: choose the passes to use */
+ p = patterns;
+ randpasses = 0;
+ d = dest; /* Destination for generated pass list */
+ n = num; /* Passes remaining to fill */
+
+ for (;;)
+ {
+ k = *p++; /* Block descriptor word */
+ if (!k)
+ { /* Loop back to the beginning */
+ p = patterns;
+ }
+ else if (k < 0)
+ { /* -k random passes */
+ k = -k;
+ if ((size_t) k >= n)
+ {
+ randpasses += n;
+ n = 0;
+ break;
+ }
+ randpasses += k;
+ n -= k;
+ }
+ else if ((size_t) k <= n)
+ { /* Full block of patterns */
+ memcpy (d, p, k * sizeof (int));
+ p += k;
+ d += k;
+ n -= k;
+ }
+ else if (n < 2 || 3 * n < (size_t) k)
+ { /* Finish with random */
+ randpasses += n;
+ break;
+ }
+ else
+ { /* Pad out with k of the n available */
+ do
+ {
+ if (n == (size_t) k || randint_choose (s, k) < n)
+ {
+ *d++ = *p;
+ n--;
+ }
+ p++;
+ }
+ while (n);
+ break;
+ }
+ }
+ top = num - randpasses; /* Top of initialized data */
+ /* assert (d == dest+top); */
+
+ /*
+ * We now have fixed patterns in the dest buffer up to
+ * "top", and we need to scramble them, with "randpasses"
+ * random passes evenly spaced among them.
+ *
+ * We want one at the beginning, one at the end, and
+ * evenly spaced in between. To do this, we basically
+ * use Bresenham's line draw (a.k.a DDA) algorithm
+ * to draw a line with slope (randpasses-1)/(num-1).
+ * (We use a positive accumulator and count down to
+ * do this.)
+ *
+ * So for each desired output value, we do the following:
+ * - If it should be a random pass, copy the pass type
+ * to top++, out of the way of the other passes, and
+ * set the current pass to -1 (random).
+ * - If it should be a normal pattern pass, choose an
+ * entry at random between here and top-1 (inclusive)
+ * and swap the current entry with that one.
+ */
+ randpasses--; /* To speed up later math */
+ accum = randpasses; /* Bresenham DDA accumulator */
+ for (n = 0; n < num; n++)
+ {
+ if (accum <= randpasses)
+ {
+ accum += num - 1;
+ dest[top++] = dest[n];
+ dest[n] = -1;
+ }
+ else
+ {
+ swap = n + randint_choose (s, top - n);
+ k = dest[n];
+ dest[n] = dest[swap];
+ dest[swap] = k;
+ }
+ accum -= randpasses;
+ }
+ /* assert (top == num); */
+}
+
+/*
+ * The core routine to actually do the work. This overwrites the first
+ * size bytes of the given fd. Return true if successful.
+ */
+static bool
+do_wipefd (int fd, char const *qname, struct randint_source *s,
+ struct Options const *flags)
+{
+ size_t i;
+ struct stat st;
+ off_t size; /* Size to write, size to read */
+ unsigned long int n; /* Number of passes for printing purposes */
+ int *passarray;
+ bool ok = true;
+ struct randread_source *rs;
+
+ n = 0; /* dopass takes n -- 0 to mean "don't print progress" */
+ if (flags->verbose)
+ n = flags->n_iterations + flags->zero_fill;
+
+ if (fstat (fd, &st))
+ {
+ error (0, errno, _("%s: fstat failed"), qname);
+ return false;
+ }
+
+ /* If we know that we can't possibly shred the file, give up now.
+ Otherwise, we may go into a infinite loop writing data before we
+ find that we can't rewind the device. */
+ if ((S_ISCHR (st.st_mode) && isatty (fd))
+ || S_ISFIFO (st.st_mode)
+ || S_ISSOCK (st.st_mode))
+ {
+ error (0, 0, _("%s: invalid file type"), qname);
+ return false;
+ }
+
+ direct_mode (fd, true);
+
+ /* Allocate pass array */
+ passarray = xnmalloc (flags->n_iterations, sizeof *passarray);
+
+ size = flags->size;
+ if (size == -1)
+ {
+ /* Accept a length of zero only if it's a regular file.
+ For any other type of file, try to get the size another way. */
+ if (S_ISREG (st.st_mode))
+ {
+ size = st.st_size;
+ if (size < 0)
+ {
+ error (0, 0, _("%s: file has negative size"), qname);
+ return false;
+ }
+ }
+ else
+ {
+ size = lseek (fd, 0, SEEK_END);
+ if (size <= 0)
+ {
+ /* We are unable to determine the length, up front.
+ Let dopass do that as part of its first iteration. */
+ size = -1;
+ }
+ }
+
+ /* Allow `rounding up' only for regular files. */
+ if (0 <= size && !(flags->exact) && S_ISREG (st.st_mode))
+ {
+ size += ST_BLKSIZE (st) - 1 - (size - 1) % ST_BLKSIZE (st);
+
+ /* If in rounding up, we've just overflowed, use the maximum. */
+ if (size < 0)
+ size = TYPE_MAXIMUM (off_t);
+ }
+ }
+
+ /* Schedule the passes in random order. */
+ genpattern (passarray, flags->n_iterations, s);
+
+ rs = randint_get_source (s);
+
+ /* Do the work */
+ for (i = 0; i < flags->n_iterations; i++)
+ {
+ int err = dopass (fd, qname, &size, passarray[i], rs, i + 1, n);
+ if (err)
+ {
+ if (err < 0)
+ {
+ memset (passarray, 0, flags->n_iterations * sizeof (int));
+ free (passarray);
+ return false;
+ }
+ ok = false;
+ }
+ }
+
+ memset (passarray, 0, flags->n_iterations * sizeof (int));
+ free (passarray);
+
+ if (flags->zero_fill)
+ {
+ int err = dopass (fd, qname, &size, 0, rs, flags->n_iterations + 1, n);
+ if (err)
+ {
+ if (err < 0)
+ return false;
+ ok = false;
+ }
+ }
+
+ /* Okay, now deallocate the data. The effect of ftruncate on
+ non-regular files is unspecified, so don't worry about any
+ errors reported for them. */
+ if (flags->remove_file && ftruncate (fd, 0) != 0
+ && S_ISREG (st.st_mode))
+ {
+ error (0, errno, _("%s: error truncating"), qname);
+ return false;
+ }
+
+ return ok;
+}
+
+/* A wrapper with a little more checking for fds on the command line */
+static bool
+wipefd (int fd, char const *qname, struct randint_source *s,
+ struct Options const *flags)
+{
+ int fd_flags = fcntl (fd, F_GETFL);
+
+ if (fd_flags < 0)
+ {
+ error (0, errno, _("%s: fcntl failed"), qname);
+ return false;
+ }
+ if (fd_flags & O_APPEND)
+ {
+ error (0, 0, _("%s: cannot shred append-only file descriptor"), qname);
+ return false;
+ }
+ return do_wipefd (fd, qname, s, flags);
+}
+
+/* --- Name-wiping code --- */
+
+/* Characters allowed in a file name - a safe universal set. */
+static char const nameset[] =
+"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_.";
+
+/* Increment NAME (with LEN bytes). NAME must be a big-endian base N
+ number with the digits taken from nameset. Return true if
+ successful if not (because NAME already has the greatest possible
+ value. */
+
+static bool
+incname (char *name, size_t len)
+{
+ while (len--)
+ {
+ char const *p = strchr (nameset, name[len]);
+
+ /* If this character has a successor, use it. */
+ if (p[1])
+ {
+ name[len] = p[1];
+ return true;
+ }
+
+ /* Otherwise, set this digit to 0 and increment the prefix. */
+ name[len] = nameset[0];
+ }
+
+ return false;
+}
+
+/*
+ * Repeatedly rename a file with shorter and shorter names,
+ * to obliterate all traces of the file name on any system that
+ * adds a trailing delimiter to on-disk file names and reuses
+ * the same directory slot. Finally, unlink it.
+ * The passed-in filename is modified in place to the new filename.
+ * (Which is unlinked if this function succeeds, but is still present if
+ * it fails for some reason.)
+ *
+ * The main loop is written carefully to not get stuck if all possible
+ * names of a given length are occupied. It counts down the length from
+ * the original to 0. While the length is non-zero, it tries to find an
+ * unused file name of the given length. It continues until either the
+ * name is available and the rename succeeds, or it runs out of names
+ * to try (incname wraps and returns 1). Finally, it unlinks the file.
+ *
+ * The unlink is Unix-specific, as ANSI-standard remove has more
+ * portability problems with C libraries making it "safe". rename
+ * is ANSI-standard.
+ *
+ * To force the directory data out, we try to open the directory and
+ * invoke fdatasync and/or fsync on it. This is non-standard, so don't
+ * insist that it works: just fall back to a global sync in that case.
+ * This is fairly significantly Unix-specific. Of course, on any
+ * file system with synchronous metadata updates, this is unnecessary.
+ */
+static bool
+wipename (char *oldname, char const *qoldname, struct Options const *flags)
+{
+ char *newname = xstrdup (oldname);
+ char *base = last_component (newname);
+ size_t len = base_len (base);
+ char *dir = dir_name (newname);
+ char *qdir = xstrdup (quotearg_colon (dir));
+ bool first = true;
+ bool ok = true;
+
+ int dir_fd = open (dir, O_RDONLY | O_DIRECTORY | O_NOCTTY | O_NONBLOCK);
+
+ if (flags->verbose)
+ error (0, 0, _("%s: removing"), qoldname);
+
+ while (len)
+ {
+ memset (base, nameset[0], len);
+ base[len] = 0;
+ do
+ {
+ struct stat st;
+ if (lstat (newname, &st) < 0)
+ {
+ if (rename (oldname, newname) == 0)
+ {
+ if (0 <= dir_fd && dosync (dir_fd, qdir) != 0)
+ ok = false;
+ if (flags->verbose)
+ {
+ /*
+ * People seem to understand this better than talking
+ * about renaming oldname. newname doesn't need
+ * quoting because we picked it. oldname needs to
+ * be quoted only the first time.
+ */
+ char const *old = (first ? qoldname : oldname);
+ error (0, 0, _("%s: renamed to %s"), old, newname);
+ first = false;
+ }
+ memcpy (oldname + (base - newname), base, len + 1);
+ break;
+ }
+ else
+ {
+ /* The rename failed: give up on this length. */
+ break;
+ }
+ }
+ else
+ {
+ /* newname exists, so increment BASE so we use another */
+ }
+ }
+ while (incname (base, len));
+ len--;
+ }
+ if (unlink (oldname) != 0)
+ {
+ error (0, errno, _("%s: failed to remove"), qoldname);
+ ok = false;
+ }
+ else if (flags->verbose)
+ error (0, 0, _("%s: removed"), qoldname);
+ if (0 <= dir_fd)
+ {
+ if (dosync (dir_fd, qdir) != 0)
+ ok = false;
+ if (close (dir_fd) != 0)
+ {
+ error (0, errno, _("%s: failed to close"), qdir);
+ ok = false;
+ }
+ }
+ free (newname);
+ free (dir);
+ free (qdir);
+ return ok;
+}
+
+/*
+ * Finally, the function that actually takes a filename and grinds
+ * it into hamburger.
+ *
+ * FIXME
+ * Detail to note: since we do not restore errno to EACCES after
+ * a failed chmod, we end up printing the error code from the chmod.
+ * This is actually the error that stopped us from proceeding, so
+ * it's arguably the right one, and in practice it'll be either EACCES
+ * again or EPERM, which both give similar error messages.
+ * Does anyone disagree?
+ */
+static bool
+wipefile (char *name, char const *qname,
+ struct randint_source *s, struct Options const *flags)
+{
+ bool ok;
+ int fd;
+
+ fd = open (name, O_WRONLY | O_NOCTTY | O_BINARY);
+ if (fd < 0
+ && (errno == EACCES && flags->force)
+ && chmod (name, S_IWUSR) == 0)
+ fd = open (name, O_WRONLY | O_NOCTTY | O_BINARY);
+ if (fd < 0)
+ {
+ error (0, errno, _("%s: failed to open for writing"), qname);
+ return false;
+ }
+
+ ok = do_wipefd (fd, qname, s, flags);
+ if (close (fd) != 0)
+ {
+ error (0, errno, _("%s: failed to close"), qname);
+ ok = false;
+ }
+ if (ok && flags->remove_file)
+ ok = wipename (name, qname, flags);
+ return ok;
+}
+
+
+/* Buffers for random data. */
+static struct randint_source *randint_source;
+
+/* Just on general principles, wipe buffers containing information
+ that may be related to the possibly-pseudorandom values used during
+ shredding. */
+static void
+clear_random_data (void)
+{
+ randint_all_free (randint_source);
+}
+
+
+int
+main (int argc, char **argv)
+{
+ bool ok = true;
+ struct Options flags = { 0, };
+ char **file;
+ int n_files;
+ int c;
+ int i;
+ char const *random_source = NULL;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ flags.n_iterations = DEFAULT_PASSES;
+ flags.size = -1;
+
+ while ((c = getopt_long (argc, argv, "fn:s:uvxz", long_opts, NULL)) != -1)
+ {
+ switch (c)
+ {
+ case 'f':
+ flags.force = true;
+ break;
+
+ case 'n':
+ {
+ uintmax_t tmp;
+ if (xstrtoumax (optarg, NULL, 10, &tmp, NULL) != LONGINT_OK
+ || MIN (UINT32_MAX, SIZE_MAX / sizeof (int)) < tmp)
+ {
+ error (EXIT_FAILURE, 0, _("%s: invalid number of passes"),
+ quotearg_colon (optarg));
+ }
+ flags.n_iterations = tmp;
+ }
+ break;
+
+ case RANDOM_SOURCE_OPTION:
+ if (random_source && !STREQ (random_source, optarg))
+ error (EXIT_FAILURE, 0, _("multiple random sources specified"));
+ random_source = optarg;
+ break;
+
+ case 'u':
+ flags.remove_file = true;
+ break;
+
+ case 's':
+ {
+ uintmax_t tmp;
+ if (xstrtoumax (optarg, NULL, 0, &tmp, "cbBkKMGTPEZY0")
+ != LONGINT_OK)
+ {
+ error (EXIT_FAILURE, 0, _("%s: invalid file size"),
+ quotearg_colon (optarg));
+ }
+ flags.size = tmp;
+ }
+ break;
+
+ case 'v':
+ flags.verbose = true;
+ break;
+
+ case 'x':
+ flags.exact = true;
+ break;
+
+ case 'z':
+ flags.zero_fill = true;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ file = argv + optind;
+ n_files = argc - optind;
+
+ if (n_files == 0)
+ {
+ error (0, 0, _("missing file operand"));
+ usage (EXIT_FAILURE);
+ }
+
+ randint_source = randint_all_new (random_source, SIZE_MAX);
+ if (! randint_source)
+ error (EXIT_FAILURE, errno, "%s", quotearg_colon (random_source));
+ atexit (clear_random_data);
+
+ for (i = 0; i < n_files; i++)
+ {
+ char *qname = xstrdup (quotearg_colon (file[i]));
+ if (STREQ (file[i], "-"))
+ {
+ ok &= wipefd (STDOUT_FILENO, qname, randint_source, &flags);
+ }
+ else
+ {
+ /* Plain filename - Note that this overwrites *argv! */
+ ok &= wipefile (file[i], qname, randint_source, &flags);
+ }
+ free (qname);
+ }
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+/*
+ * vim:sw=2:sts=2:
+ */
diff --git a/src/shuf.c b/src/shuf.c
new file mode 100644
index 0000000..bfc9f30
--- /dev/null
+++ b/src/shuf.c
@@ -0,0 +1,421 @@
+/* Shuffle lines of text.
+
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ Written by Paul Eggert. */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <sys/types.h>
+#include "system.h"
+
+#include "error.h"
+#include "getopt.h"
+#include "quote.h"
+#include "quotearg.h"
+#include "randint.h"
+#include "randperm.h"
+#include "xstrtol.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "shuf"
+
+#define AUTHORS "Paul Eggert"
+
+/* The name this program was run with. */
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [FILE]\n\
+ or: %s -e [OPTION]... [ARG]...\n\
+ or: %s -i LO-HI [OPTION]...\n\
+"),
+ program_name, program_name, program_name);
+ fputs (_("\
+Write a random permutation of the input lines to standard output.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -e, --echo treat each ARG as an input line\n\
+ -i, --input-range=LO-HI treat each number LO through HI as an input line\n\
+ -n, --head-lines=LINES output at most LINES lines\n\
+ -o, --output=FILE write result to FILE instead of standard output\n\
+ --random-source=FILE get random bytes from FILE (default /dev/urandom)\n\
+ -z, --zero-terminated end lines with 0 byte, not newline\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+With no FILE, or when FILE is -, read standard input.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+
+ exit (status);
+}
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ RANDOM_SOURCE_OPTION = CHAR_MAX + 1
+};
+
+static struct option const long_opts[] =
+{
+ {"echo", no_argument, NULL, 'e'},
+ {"input-range", required_argument, NULL, 'i'},
+ {"head-count", required_argument, NULL, 'n'},
+ {"output", required_argument, NULL, 'o'},
+ {"random-source", required_argument, NULL, RANDOM_SOURCE_OPTION},
+ {"zero-terminated", no_argument, NULL, 'z'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {0, 0, 0, 0},
+};
+
+static bool
+input_numbers_option_used (size_t lo_input, size_t hi_input)
+{
+ return ! (lo_input == SIZE_MAX && hi_input == 0);
+}
+
+static void
+input_from_argv (char **operand, int n_operands, char eolbyte)
+{
+ char *p;
+ size_t size = n_operands;
+ int i;
+
+ for (i = 0; i < n_operands; i++)
+ size += strlen (operand[i]);
+ p = xmalloc (size);
+
+ for (i = 0; i < n_operands; i++)
+ {
+ char *p1 = stpcpy (p, operand[i]);
+ operand[i] = p;
+ p = p1;
+ *p++ = eolbyte;
+ }
+
+ operand[n_operands] = p;
+}
+
+/* Return the start of the next line after LINE. The current line
+ ends in EOLBYTE, and is guaranteed to end before LINE + N. */
+
+static char *
+next_line (char *line, char eolbyte, size_t n)
+{
+ char *p = memchr (line, eolbyte, n);
+ return p + 1;
+}
+
+/* Read data from file IN. Input lines are delimited by EOLBYTE;
+ silently append a trailing EOLBYTE if the file ends in some other
+ byte. Store a pointer to the resulting array of lines into *PLINE.
+ Return the number of lines read. Report an error and exit on
+ failure. */
+
+static size_t
+read_input (FILE *in, char eolbyte, char ***pline)
+{
+ char *p;
+ char *buf = NULL;
+ char *lim;
+ size_t alloc = 0;
+ size_t used = 0;
+ size_t next_alloc = (1 << 13) + 1;
+ size_t bytes_to_read;
+ size_t nread;
+ char **line;
+ size_t i;
+ size_t n_lines;
+ int fread_errno;
+ struct stat instat;
+
+ if (fstat (fileno (in), &instat) == 0 && S_ISREG (instat.st_mode))
+ {
+ off_t file_size = instat.st_size;
+ off_t current_offset = ftello (in);
+ if (0 <= current_offset)
+ {
+ off_t remaining_size =
+ (current_offset < file_size ? file_size - current_offset : 0);
+ if (SIZE_MAX - 2 < remaining_size)
+ xalloc_die ();
+ next_alloc = remaining_size + 2;
+ }
+ }
+
+ do
+ {
+ if (alloc <= used + 1)
+ {
+ if (alloc == SIZE_MAX)
+ xalloc_die ();
+ alloc = next_alloc;
+ next_alloc = alloc * 2;
+ if (next_alloc < alloc)
+ next_alloc = SIZE_MAX;
+ buf = xrealloc (buf, alloc);
+ }
+
+ bytes_to_read = alloc - used - 1;
+ nread = fread (buf + used, sizeof (char), bytes_to_read, in);
+ used += nread;
+ }
+ while (nread == bytes_to_read);
+
+ fread_errno = errno;
+
+ if (used && buf[used - 1] != eolbyte)
+ buf[used++] = eolbyte;
+
+ lim = buf + used;
+
+ n_lines = 0;
+ for (p = buf; p < lim; p = next_line (p, eolbyte, lim - p))
+ n_lines++;
+
+ *pline = line = xnmalloc (n_lines + 1, sizeof *line);
+
+ line[0] = p = buf;
+ for (i = 1; i <= n_lines; i++)
+ line[i] = p = next_line (p, eolbyte, lim - p);
+
+ errno = fread_errno;
+ return n_lines;
+}
+
+static int
+write_permuted_output (size_t n_lines, char * const *line, size_t lo_input,
+ size_t const *permutation)
+{
+ size_t i;
+
+ if (line)
+ for (i = 0; i < n_lines; i++)
+ {
+ char * const *p = line + permutation[i];
+ size_t len = p[1] - p[0];
+ if (fwrite (p[0], sizeof *p[0], len, stdout) != len)
+ return -1;
+ }
+ else
+ for (i = 0; i < n_lines; i++)
+ {
+ unsigned long int n = lo_input + permutation[i];
+ if (printf ("%lu\n", n) < 0)
+ return -1;
+ }
+
+ return 0;
+}
+
+int
+main (int argc, char **argv)
+{
+ bool echo = false;
+ size_t lo_input = SIZE_MAX;
+ size_t hi_input = 0;
+ size_t head_lines = SIZE_MAX;
+ char const *outfile = NULL;
+ char *random_source = NULL;
+ char eolbyte = '\n';
+ char **input_lines = NULL;
+
+ int optc;
+ int n_operands;
+ char **operand;
+ size_t n_lines;
+ char **line;
+ struct randint_source *randint_source;
+ size_t *permutation;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ while ((optc = getopt_long (argc, argv, "ei:n:o:z", long_opts, NULL)) != -1)
+ switch (optc)
+ {
+ case 'e':
+ echo = true;
+ break;
+
+ case 'i':
+ {
+ unsigned long int argval = 0;
+ char *p = strchr (optarg, '-');
+ char const *hi_optarg = optarg;
+ bool invalid = !p;
+
+ if (input_numbers_option_used (lo_input, hi_input))
+ error (EXIT_FAILURE, 0, _("multiple -i options specified"));
+
+ if (p)
+ {
+ *p = '\0';
+ invalid = ((xstrtoul (optarg, NULL, 10, &argval, NULL)
+ != LONGINT_OK)
+ || SIZE_MAX < argval);
+ *p = '-';
+ lo_input = argval;
+ hi_optarg = p + 1;
+ }
+
+ invalid |= ((xstrtoul (hi_optarg, NULL, 10, &argval, NULL)
+ != LONGINT_OK)
+ || SIZE_MAX < argval);
+ hi_input = argval;
+ n_lines = hi_input - lo_input + 1;
+ invalid |= ((lo_input <= hi_input) == (n_lines == 0));
+ if (invalid)
+ error (EXIT_FAILURE, 0, _("invalid input range %s"),
+ quote (optarg));
+ }
+ break;
+
+ case 'n':
+ {
+ unsigned long int argval;
+ strtol_error e = xstrtoul (optarg, NULL, 10, &argval, NULL);
+
+ if (e == LONGINT_OK)
+ head_lines = MIN (head_lines, argval);
+ else if (e != LONGINT_OVERFLOW)
+ error (EXIT_FAILURE, 0, _("invalid line count %s"),
+ quote (optarg));
+ }
+ break;
+
+ case 'o':
+ if (outfile && !STREQ (outfile, optarg))
+ error (EXIT_FAILURE, 0, _("multiple output files specified"));
+ outfile = optarg;
+ break;
+
+ case RANDOM_SOURCE_OPTION:
+ if (random_source && !STREQ (random_source, optarg))
+ error (EXIT_FAILURE, 0, _("multiple random sources specified"));
+ random_source = optarg;
+ break;
+
+ case 'z':
+ eolbyte = '\0';
+ break;
+
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ usage (EXIT_FAILURE);
+ }
+
+ n_operands = argc - optind;
+ operand = argv + optind;
+
+ if (echo)
+ {
+ if (input_numbers_option_used (lo_input, hi_input))
+ error (EXIT_FAILURE, 0, _("cannot combine -e and -i options"));
+ input_from_argv (operand, n_operands, eolbyte);
+ n_lines = n_operands;
+ line = operand;
+ }
+ else if (input_numbers_option_used (lo_input, hi_input))
+ {
+ if (n_operands)
+ {
+ error (0, 0, _("extra operand %s\n"), quote (operand[0]));
+ usage (EXIT_FAILURE);
+ }
+ n_lines = hi_input - lo_input + 1;
+ line = NULL;
+ }
+ else
+ {
+ switch (n_operands)
+ {
+ case 0:
+ break;
+
+ case 1:
+ if (! (STREQ (operand[0], "-") || freopen (operand[0], "r", stdin)))
+ error (EXIT_FAILURE, errno, "%s", operand[0]);
+ break;
+
+ default:
+ error (0, 0, _("extra operand %s"), quote (operand[1]));
+ usage (EXIT_FAILURE);
+ }
+
+ n_lines = read_input (stdin, eolbyte, &input_lines);
+ line = input_lines;
+ }
+
+ head_lines = MIN (head_lines, n_lines);
+
+ randint_source = randint_all_new (random_source,
+ randperm_bound (head_lines, n_lines));
+ if (! randint_source)
+ error (EXIT_FAILURE, errno, "%s", quotearg_colon (random_source));
+
+ /* Close stdin now, rather than earlier, so that randint_all_new
+ doesn't have to worry about opening something other than
+ stdin. */
+ if (! (echo || input_numbers_option_used (lo_input, hi_input))
+ && (ferror (stdin) || fclose (stdin) != 0))
+ error (EXIT_FAILURE, errno, _("read error"));
+
+ permutation = randperm_new (randint_source, head_lines, n_lines);
+
+ if (outfile && ! freopen (outfile, "w", stdout))
+ error (EXIT_FAILURE, errno, "%s", quotearg_colon (outfile));
+ if (write_permuted_output (head_lines, line, lo_input, permutation) != 0)
+ error (EXIT_FAILURE, errno, _("write error"));
+
+#ifdef lint
+ free (permutation);
+ randint_all_free (randint_source);
+ if (input_lines)
+ {
+ free (input_lines[0]);
+ free (input_lines);
+ }
+#endif
+
+ return EXIT_SUCCESS;
+}
diff --git a/src/sleep.c b/src/sleep.c
new file mode 100644
index 0000000..730b19d
--- /dev/null
+++ b/src/sleep.c
@@ -0,0 +1,152 @@
+/* sleep - delay for a specified amount of time.
+ Copyright (C) 84, 1991-1997, 1999-2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <getopt.h>
+
+#include "system.h"
+#include "c-strtod.h"
+#include "error.h"
+#include "long-options.h"
+#include "quote.h"
+#include "xnanosleep.h"
+#include "xstrtod.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "sleep"
+
+#define AUTHORS "Jim Meyering", "Paul Eggert"
+
+/* The name by which this program was run. */
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s NUMBER[SUFFIX]...\n\
+ or: %s OPTION\n\
+Pause for NUMBER seconds. SUFFIX may be `s' for seconds (the default),\n\
+`m' for minutes, `h' for hours or `d' for days. Unlike most implementations\n\
+that require NUMBER be an integer, here NUMBER may be an arbitrary floating\n\
+point number. Given two or more arguments, pause for the amount of time\n\
+specified by the sum of their values.\n\
+\n\
+"),
+ program_name, program_name);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Given a floating point value *X, and a suffix character, SUFFIX_CHAR,
+ scale *X by the multiplier implied by SUFFIX_CHAR. SUFFIX_CHAR may
+ be the NUL byte or `s' to denote seconds, `m' for minutes, `h' for
+ hours, or `d' for days. If SUFFIX_CHAR is invalid, don't modify *X
+ and return false. Otherwise return true. */
+
+static bool
+apply_suffix (double *x, char suffix_char)
+{
+ int multiplier;
+
+ switch (suffix_char)
+ {
+ case 0:
+ case 's':
+ multiplier = 1;
+ break;
+ case 'm':
+ multiplier = 60;
+ break;
+ case 'h':
+ multiplier = 60 * 60;
+ break;
+ case 'd':
+ multiplier = 60 * 60 * 24;
+ break;
+ default:
+ return false;
+ }
+
+ *x *= multiplier;
+
+ return true;
+}
+
+int
+main (int argc, char **argv)
+{
+ int i;
+ double seconds = 0.0;
+ bool ok = true;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "", NULL, NULL) != -1)
+ usage (EXIT_FAILURE);
+
+ if (argc == 1)
+ {
+ error (0, 0, _("missing operand"));
+ usage (EXIT_FAILURE);
+ }
+
+ for (i = optind; i < argc; i++)
+ {
+ double s;
+ const char *p;
+ if (! xstrtod (argv[i], &p, &s, c_strtod)
+ /* Nonnegative interval. */
+ || ! (0 <= s)
+ /* No extra chars after the number and an optional s,m,h,d char. */
+ || (*p && *(p+1))
+ /* Check any suffix char and update S based on the suffix. */
+ || ! apply_suffix (&s, *p))
+ {
+ error (0, 0, _("invalid time interval %s"), quote (argv[i]));
+ ok = false;
+ }
+
+ seconds += s;
+ }
+
+ if (!ok)
+ usage (EXIT_FAILURE);
+
+ if (xnanosleep (seconds))
+ error (EXIT_FAILURE, errno, _("cannot read realtime clock"));
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/sort.c b/src/sort.c
new file mode 100644
index 0000000..58ca66a
--- /dev/null
+++ b/src/sort.c
@@ -0,0 +1,3174 @@
+/* sort - sort lines of text (with all kinds of options).
+ Copyright (C) 1988, 1991-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written December 1988 by Mike Haertel.
+ The author may be reached (Email) at the address mike@gnu.ai.mit.edu,
+ or (US mail) as Mike Haertel c/o Free Software Foundation.
+
+ Ørn E. Hansen added NLS support in 1997. */
+
+#include <config.h>
+
+#include <getopt.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <signal.h>
+#include "system.h"
+#include "argmatch.h"
+#include "error.h"
+#include "hard-locale.h"
+#include "hash.h"
+#include "inttostr.h"
+#include "md5.h"
+#include "physmem.h"
+#include "posixver.h"
+#include "quote.h"
+#include "randread.h"
+#include "stdio--.h"
+#include "stdlib--.h"
+#include "strnumcmp.h"
+#include "xmemcoll.h"
+#include "xmemxfrm.h"
+#include "xstrtol.h"
+
+#if HAVE_SYS_RESOURCE_H
+# include <sys/resource.h>
+#endif
+#ifndef RLIMIT_DATA
+struct rlimit { size_t rlim_cur; };
+# define getrlimit(Resource, Rlp) (-1)
+#endif
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "sort"
+
+#define AUTHORS "Mike Haertel", "Paul Eggert"
+
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+
+/* Use SA_NOCLDSTOP as a proxy for whether the sigaction machinery is
+ present. */
+#ifndef SA_NOCLDSTOP
+# define SA_NOCLDSTOP 0
+/* No sigprocmask. Always 'return' zero. */
+# define sigprocmask(How, Set, Oset) (0)
+# define sigset_t int
+# if ! HAVE_SIGINTERRUPT
+# define siginterrupt(sig, flag) /* empty */
+# endif
+#endif
+
+#ifndef STDC_HEADERS
+double strtod ();
+#endif
+
+#define UCHAR_LIM (UCHAR_MAX + 1)
+
+#ifndef DEFAULT_TMPDIR
+# define DEFAULT_TMPDIR "/tmp"
+#endif
+
+/* Exit statuses. */
+enum
+ {
+ /* POSIX says to exit with status 1 if invoked with -c and the
+ input is not properly sorted. */
+ SORT_OUT_OF_ORDER = 1,
+
+ /* POSIX says any other irregular exit must exit with a status
+ code greater than 1. */
+ SORT_FAILURE = 2
+ };
+
+enum
+ {
+ /* The number of times we should try to fork a compression process
+ (we retry if the fork call fails). We don't _need_ to compress
+ temp files, this is just to reduce disk access, so this number
+ can be small. */
+ MAX_FORK_TRIES_COMPRESS = 2,
+
+ /* The number of times we should try to fork a decompression process.
+ If we can't fork a decompression process, we can't sort, so this
+ number should be big. */
+ MAX_FORK_TRIES_DECOMPRESS = 8
+ };
+
+/* The representation of the decimal point in the current locale. */
+static int decimal_point;
+
+/* Thousands separator; if -1, then there isn't one. */
+static int thousands_sep;
+
+/* Nonzero if the corresponding locales are hard. */
+static bool hard_LC_COLLATE;
+#if HAVE_NL_LANGINFO
+static bool hard_LC_TIME;
+#endif
+
+#define NONZERO(x) ((x) != 0)
+
+/* The kind of blanks for '-b' to skip in various options. */
+enum blanktype { bl_start, bl_end, bl_both };
+
+/* The character marking end of line. Default to \n. */
+static char eolchar = '\n';
+
+/* Lines are held in core as counted strings. */
+struct line
+{
+ char *text; /* Text of the line. */
+ size_t length; /* Length including final newline. */
+ char *keybeg; /* Start of first key. */
+ char *keylim; /* Limit of first key. */
+};
+
+/* Input buffers. */
+struct buffer
+{
+ char *buf; /* Dynamically allocated buffer,
+ partitioned into 3 regions:
+ - input data;
+ - unused area;
+ - an array of lines, in reverse order. */
+ size_t used; /* Number of bytes used for input data. */
+ size_t nlines; /* Number of lines in the line array. */
+ size_t alloc; /* Number of bytes allocated. */
+ size_t left; /* Number of bytes left from previous reads. */
+ size_t line_bytes; /* Number of bytes to reserve for each line. */
+ bool eof; /* An EOF has been read. */
+};
+
+struct keyfield
+{
+ size_t sword; /* Zero-origin 'word' to start at. */
+ size_t schar; /* Additional characters to skip. */
+ size_t eword; /* Zero-origin first word after field. */
+ size_t echar; /* Additional characters in field. */
+ bool const *ignore; /* Boolean array of characters to ignore. */
+ char const *translate; /* Translation applied to characters. */
+ bool skipsblanks; /* Skip leading blanks when finding start. */
+ bool skipeblanks; /* Skip leading blanks when finding end. */
+ bool numeric; /* Flag for numeric comparison. Handle
+ strings of digits with optional decimal
+ point, but no exponential notation. */
+ bool random; /* Sort by random hash of key. */
+ bool general_numeric; /* Flag for general, numeric comparison.
+ Handle numbers in exponential notation. */
+ bool month; /* Flag for comparison by month name. */
+ bool reverse; /* Reverse the sense of comparison. */
+ struct keyfield *next; /* Next keyfield to try. */
+};
+
+struct month
+{
+ char const *name;
+ int val;
+};
+
+/* The name this program was run with. */
+char *program_name;
+
+/* FIXME: None of these tables work with multibyte character sets.
+ Also, there are many other bugs when handling multibyte characters.
+ One way to fix this is to rewrite `sort' to use wide characters
+ internally, but doing this with good performance is a bit
+ tricky. */
+
+/* Table of blanks. */
+static bool blanks[UCHAR_LIM];
+
+/* Table of non-printing characters. */
+static bool nonprinting[UCHAR_LIM];
+
+/* Table of non-dictionary characters (not letters, digits, or blanks). */
+static bool nondictionary[UCHAR_LIM];
+
+/* Translation table folding lower case to upper. */
+static char fold_toupper[UCHAR_LIM];
+
+#define MONTHS_PER_YEAR 12
+
+/* Table mapping month names to integers.
+ Alphabetic order allows binary search. */
+static struct month monthtab[] =
+{
+ {"APR", 4},
+ {"AUG", 8},
+ {"DEC", 12},
+ {"FEB", 2},
+ {"JAN", 1},
+ {"JUL", 7},
+ {"JUN", 6},
+ {"MAR", 3},
+ {"MAY", 5},
+ {"NOV", 11},
+ {"OCT", 10},
+ {"SEP", 9}
+};
+
+/* During the merge phase, the number of files to merge at once. */
+#define NMERGE 16
+
+/* Minimum size for a merge or check buffer. */
+#define MIN_MERGE_BUFFER_SIZE (2 + sizeof (struct line))
+
+/* Minimum sort size; the code might not work with smaller sizes. */
+#define MIN_SORT_SIZE (NMERGE * MIN_MERGE_BUFFER_SIZE)
+
+/* The number of bytes needed for a merge or check buffer, which can
+ function relatively efficiently even if it holds only one line. If
+ a longer line is seen, this value is increased. */
+static size_t merge_buffer_size = MAX (MIN_MERGE_BUFFER_SIZE, 256 * 1024);
+
+/* The approximate maximum number of bytes of main memory to use, as
+ specified by the user. Zero if the user has not specified a size. */
+static size_t sort_size;
+
+/* The guessed size for non-regular files. */
+#define INPUT_FILE_SIZE_GUESS (1024 * 1024)
+
+/* Array of directory names in which any temporary files are to be created. */
+static char const **temp_dirs;
+
+/* Number of temporary directory names used. */
+static size_t temp_dir_count;
+
+/* Number of allocated slots in temp_dirs. */
+static size_t temp_dir_alloc;
+
+/* Flag to reverse the order of all comparisons. */
+static bool reverse;
+
+/* Flag for stable sort. This turns off the last ditch bytewise
+ comparison of lines, and instead leaves lines in the same order
+ they were read if all keys compare equal. */
+static bool stable;
+
+/* If TAB has this value, blanks separate fields. */
+enum { TAB_DEFAULT = CHAR_MAX + 1 };
+
+/* Tab character separating fields. If TAB_DEFAULT, then fields are
+ separated by the empty string between a non-blank character and a blank
+ character. */
+static int tab = TAB_DEFAULT;
+
+/* Flag to remove consecutive duplicate lines from the output.
+ Only the last of a sequence of equal lines will be output. */
+static bool unique;
+
+/* Nonzero if any of the input files are the standard input. */
+static bool have_read_stdin;
+
+/* List of key field comparisons to be tried. */
+static struct keyfield *keylist;
+
+/* Program used to (de)compress temp files. Must accept -d. */
+static char const *compress_program;
+
+static void sortlines_temp (struct line *, size_t, struct line *);
+
+/* Report MESSAGE for FILE, then clean up and exit.
+ If FILE is null, it represents standard output. */
+
+static void die (char const *, char const *) ATTRIBUTE_NORETURN;
+static void
+die (char const *message, char const *file)
+{
+ error (0, errno, "%s: %s", message, file ? file : _("standard output"));
+ exit (SORT_FAILURE);
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [FILE]...\n\
+"),
+ program_name);
+ fputs (_("\
+Write sorted concatenation of all FILE(s) to standard output.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+Ordering options:\n\
+\n\
+"), stdout);
+ fputs (_("\
+ -b, --ignore-leading-blanks ignore leading blanks\n\
+ -d, --dictionary-order consider only blanks and alphanumeric characters\n\
+ -f, --ignore-case fold lower case to upper case characters\n\
+"), stdout);
+ fputs (_("\
+ -g, --general-numeric-sort compare according to general numerical value\n\
+ -i, --ignore-nonprinting consider only printable characters\n\
+ -M, --month-sort compare (unknown) < `JAN' < ... < `DEC'\n\
+ -n, --numeric-sort compare according to string numerical value\n\
+ -R, --random-sort sort by random hash of keys\n\
+ --random-source=FILE get random bytes from FILE (default /dev/urandom)\n\
+ -r, --reverse reverse the result of comparisons\n\
+\n\
+"), stdout);
+ fputs (_("\
+Other options:\n\
+\n\
+ -c, --check, --check=diagnose-first check for sorted input; do not sort\n\
+ -C, --check=quiet, --check=silent like -c, but do not report first bad line\n\
+ --compress-program=PROG compress temporaries with PROG;\n\
+ decompress them with PROG -d\n\
+ -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)\n\
+ -m, --merge merge already sorted files; do not sort\n\
+"), stdout);
+ fputs (_("\
+ -o, --output=FILE write result to FILE instead of standard output\n\
+ -s, --stable stabilize sort by disabling last-resort comparison\n\
+ -S, --buffer-size=SIZE use SIZE for main memory buffer\n\
+"), stdout);
+ printf (_("\
+ -t, --field-separator=SEP use SEP instead of non-blank to blank transition\n\
+ -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or %s;\n\
+ multiple options specify multiple directories\n\
+ -u, --unique with -c, check for strict ordering;\n\
+ without -c, output only the first of an equal run\n\
+"), DEFAULT_TMPDIR);
+ fputs (_("\
+ -z, --zero-terminated end lines with 0 byte, not newline\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+POS is F[.C][OPTS], where F is the field number and C the character position\n\
+in the field; both are origin 1. If neither -t nor -b is in effect, characters\n\
+in a field are counted from the beginning of the preceding whitespace. OPTS is\n\
+one or more single-letter ordering options, which override global ordering\n\
+options for that key. If no key is given, use the entire line as the key.\n\
+\n\
+SIZE may be followed by the following multiplicative suffixes:\n\
+"), stdout);
+ fputs (_("\
+% 1% of memory, b 1, K 1024 (default), and so on for M, G, T, P, E, Z, Y.\n\
+\n\
+With no FILE, or when FILE is -, read standard input.\n\
+\n\
+*** WARNING ***\n\
+The locale specified by the environment affects sort order.\n\
+Set LC_ALL=C to get the traditional sort order that uses\n\
+native byte values.\n\
+"), stdout );
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+
+ exit (status);
+}
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ CHECK_OPTION = CHAR_MAX + 1,
+ COMPRESS_PROGRAM_OPTION,
+ RANDOM_SOURCE_OPTION
+};
+
+static char const short_options[] = "-bcCdfgik:mMno:rRsS:t:T:uy:z";
+
+static struct option const long_options[] =
+{
+ {"ignore-leading-blanks", no_argument, NULL, 'b'},
+ {"check", optional_argument, NULL, CHECK_OPTION},
+ {"compress-program", required_argument, NULL, COMPRESS_PROGRAM_OPTION},
+ {"dictionary-order", no_argument, NULL, 'd'},
+ {"ignore-case", no_argument, NULL, 'f'},
+ {"general-numeric-sort", no_argument, NULL, 'g'},
+ {"ignore-nonprinting", no_argument, NULL, 'i'},
+ {"key", required_argument, NULL, 'k'},
+ {"merge", no_argument, NULL, 'm'},
+ {"month-sort", no_argument, NULL, 'M'},
+ {"numeric-sort", no_argument, NULL, 'n'},
+ {"random-sort", no_argument, NULL, 'R'},
+ {"random-source", required_argument, NULL, RANDOM_SOURCE_OPTION},
+ {"output", required_argument, NULL, 'o'},
+ {"reverse", no_argument, NULL, 'r'},
+ {"stable", no_argument, NULL, 's'},
+ {"buffer-size", required_argument, NULL, 'S'},
+ {"field-separator", required_argument, NULL, 't'},
+ {"temporary-directory", required_argument, NULL, 'T'},
+ {"unique", no_argument, NULL, 'u'},
+ {"zero-terminated", no_argument, NULL, 'z'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0},
+};
+
+static char const *const check_args[] =
+{
+ "quiet", "silent", "diagnose-first", NULL
+};
+static char const check_types[] =
+{
+ 'C', 'C', 'c'
+};
+ARGMATCH_VERIFY (check_args, check_types);
+
+/* The set of signals that are caught. */
+static sigset_t caught_signals;
+
+/* Critical section status. */
+struct cs_status
+{
+ bool valid;
+ sigset_t sigs;
+};
+
+/* Enter a critical section. */
+static struct cs_status
+cs_enter (void)
+{
+ struct cs_status status;
+ status.valid = (sigprocmask (SIG_BLOCK, &caught_signals, &status.sigs) == 0);
+ return status;
+}
+
+/* Leave a critical section. */
+static void
+cs_leave (struct cs_status status)
+{
+ if (status.valid)
+ {
+ /* Ignore failure when restoring the signal mask. */
+ sigprocmask (SIG_SETMASK, &status.sigs, NULL);
+ }
+}
+
+/* The list of temporary files. */
+struct tempnode
+{
+ struct tempnode *volatile next;
+ pid_t pid; /* If compressed, the pid of compressor, else zero */
+ char name[1]; /* Actual size is 1 + file name length. */
+};
+static struct tempnode *volatile temphead;
+static struct tempnode *volatile *temptail = &temphead;
+
+struct sortfile
+{
+ char const *name;
+ pid_t pid; /* If compressed, the pid of compressor, else zero */
+};
+
+/* A table where we store compression process states. We clean up all
+ processes in a timely manner so as not to exhaust system resources,
+ so we store the info on whether the process is still running, or has
+ been reaped here. */
+static Hash_table *proctab;
+
+enum { INIT_PROCTAB_SIZE = 47 };
+
+enum procstate { ALIVE, ZOMBIE };
+
+/* A proctab entry. The COUNT field is there in case we fork a new
+ compression process that has the same PID as an old zombie process
+ that is still in the table (because the process to decompress the
+ temp file it was associated with hasn't started yet). */
+struct procnode
+{
+ pid_t pid;
+ enum procstate state;
+ size_t count;
+};
+
+static size_t
+proctab_hasher (const void *entry, size_t tabsize)
+{
+ const struct procnode *node = entry;
+ return node->pid % tabsize;
+}
+
+static bool
+proctab_comparator (const void *e1, const void *e2)
+{
+ const struct procnode *n1 = e1, *n2 = e2;
+ return n1->pid == n2->pid;
+}
+
+/* The total number of forked processes (compressors and decompressors)
+ that have not been reaped yet. */
+static size_t nprocs;
+
+/* The number of child processes we'll allow before we try to reap some. */
+enum { MAX_PROCS_BEFORE_REAP = 2 };
+
+/* If 0 < PID, wait for the child process with that PID to exit.
+ If PID is -1, clean up a random child process which has finished and
+ return the process ID of that child. If PID is -1 and no processes
+ have quit yet, return 0 without waiting. */
+
+static pid_t
+reap (pid_t pid)
+{
+ int status;
+ pid_t cpid = waitpid (pid, &status, pid < 0 ? WNOHANG : 0);
+
+ if (cpid < 0)
+ error (SORT_FAILURE, errno, _("waiting for %s [-d]"),
+ compress_program);
+ else if (0 < cpid)
+ {
+ if (! WIFEXITED (status) || WEXITSTATUS (status))
+ error (SORT_FAILURE, 0, _("%s [-d] terminated abnormally"),
+ compress_program);
+ --nprocs;
+ }
+
+ return cpid;
+}
+
+/* Add the PID of a running compression process to proctab, or update
+ the entry COUNT and STATE fields if it's already there. This also
+ creates the table for us the first time it's called. */
+
+static void
+register_proc (pid_t pid)
+{
+ struct procnode test, *node;
+
+ if (! proctab)
+ {
+ proctab = hash_initialize (INIT_PROCTAB_SIZE, NULL,
+ proctab_hasher,
+ proctab_comparator,
+ free);
+ if (! proctab)
+ xalloc_die ();
+ }
+
+ test.pid = pid;
+ node = hash_lookup (proctab, &test);
+ if (node)
+ {
+ node->state = ALIVE;
+ ++node->count;
+ }
+ else
+ {
+ node = xmalloc (sizeof *node);
+ node->pid = pid;
+ node->state = ALIVE;
+ node->count = 1;
+ hash_insert (proctab, node);
+ }
+}
+
+/* This is called when we reap a random process. We don't know
+ whether we have reaped a compression process or a decompression
+ process until we look in the table. If there's an ALIVE entry for
+ it, then we have reaped a compression process, so change the state
+ to ZOMBIE. Otherwise, it's a decompression processes, so ignore it. */
+
+static void
+update_proc (pid_t pid)
+{
+ struct procnode test, *node;
+
+ test.pid = pid;
+ node = hash_lookup (proctab, &test);
+ if (node)
+ node->state = ZOMBIE;
+}
+
+/* This is for when we need to wait for a compression process to exit.
+ If it has a ZOMBIE entry in the table then it's already dead and has
+ been reaped. Note that if there's an ALIVE entry for it, it still may
+ already have died and been reaped if a second process was created with
+ the same PID. This is probably exceedingly rare, but to be on the safe
+ side we will have to wait for any compression process with this PID. */
+
+static void
+wait_proc (pid_t pid)
+{
+ struct procnode test, *node;
+
+ test.pid = pid;
+ node = hash_lookup (proctab, &test);
+ if (node->state == ALIVE)
+ reap (pid);
+
+ node->state = ZOMBIE;
+ if (! --node->count)
+ {
+ hash_delete (proctab, node);
+ free (node);
+ }
+}
+
+/* Keep reaping finished children as long as there are more to reap.
+ This doesn't block waiting for any of them, it only reaps those
+ that are already dead. */
+
+static void
+reap_some (void)
+{
+ pid_t pid;
+
+ while (0 < nprocs && (pid = reap (-1)))
+ update_proc (pid);
+}
+
+/* Clean up any remaining temporary files. */
+
+static void
+cleanup (void)
+{
+ struct tempnode const *node;
+
+ for (node = temphead; node; node = node->next)
+ unlink (node->name);
+ temphead = NULL;
+}
+
+/* Cleanup actions to take when exiting. */
+
+static void
+exit_cleanup (void)
+{
+ if (temphead)
+ {
+ /* Clean up any remaining temporary files in a critical section so
+ that a signal handler does not try to clean them too. */
+ struct cs_status cs = cs_enter ();
+ cleanup ();
+ cs_leave (cs);
+ }
+
+ close_stdout ();
+}
+
+/* Create a new temporary file, returning its newly allocated tempnode.
+ Store into *PFD the file descriptor open for writing. */
+
+static struct tempnode *
+create_temp_file (int *pfd)
+{
+ static char const slashbase[] = "/sortXXXXXX";
+ static size_t temp_dir_index;
+ int fd;
+ int saved_errno;
+ char const *temp_dir = temp_dirs[temp_dir_index];
+ size_t len = strlen (temp_dir);
+ struct tempnode *node =
+ xmalloc (offsetof (struct tempnode, name) + len + sizeof slashbase);
+ char *file = node->name;
+ struct cs_status cs;
+
+ memcpy (file, temp_dir, len);
+ memcpy (file + len, slashbase, sizeof slashbase);
+ node->next = NULL;
+ node->pid = 0;
+ if (++temp_dir_index == temp_dir_count)
+ temp_dir_index = 0;
+
+ /* Create the temporary file in a critical section, to avoid races. */
+ cs = cs_enter ();
+ fd = mkstemp (file);
+ if (0 <= fd)
+ {
+ *temptail = node;
+ temptail = &node->next;
+ }
+ saved_errno = errno;
+ cs_leave (cs);
+ errno = saved_errno;
+
+ if (fd < 0)
+ die (_("cannot create temporary file"), file);
+
+ *pfd = fd;
+ return node;
+}
+
+/* Return a stream for FILE, opened with mode HOW. A null FILE means
+ standard output; HOW should be "w". When opening for input, "-"
+ means standard input. To avoid confusion, do not return file
+ descriptors STDIN_FILENO, STDOUT_FILENO, or STDERR_FILENO when
+ opening an ordinary FILE. */
+
+static FILE *
+xfopen (const char *file, const char *how)
+{
+ FILE *fp;
+
+ if (!file)
+ fp = stdout;
+ else if (STREQ (file, "-") && *how == 'r')
+ {
+ have_read_stdin = true;
+ fp = stdin;
+ }
+ else
+ {
+ fp = fopen (file, how);
+ if (! fp)
+ die (_("open failed"), file);
+ }
+
+ return fp;
+}
+
+/* Close FP, whose name is FILE, and report any errors. */
+
+static void
+xfclose (FILE *fp, char const *file)
+{
+ switch (fileno (fp))
+ {
+ case STDIN_FILENO:
+ /* Allow reading stdin from tty more than once. */
+ if (feof (fp))
+ clearerr (fp);
+ break;
+
+ case STDOUT_FILENO:
+ /* Don't close stdout just yet. close_stdout does that. */
+ if (fflush (fp) != 0)
+ die (_("fflush failed"), file);
+ break;
+
+ default:
+ if (fclose (fp) != 0)
+ die (_("close failed"), file);
+ break;
+ }
+}
+
+static void
+dup2_or_die (int oldfd, int newfd)
+{
+ if (dup2 (oldfd, newfd) < 0)
+ error (SORT_FAILURE, errno, _("dup2 failed"));
+}
+
+/* Fork a child process for piping to and do common cleanup. The
+ TRIES parameter tells us how many times to try to fork before
+ giving up. Return the PID of the child or -1 if fork failed. */
+
+static pid_t
+pipe_fork (int pipefds[2], size_t tries)
+{
+#if HAVE_WORKING_FORK
+ struct tempnode *saved_temphead;
+ int saved_errno;
+ unsigned int wait_retry = 1;
+ pid_t pid IF_LINT (= -1);
+ struct cs_status cs;
+
+ if (pipe (pipefds) < 0)
+ return -1;
+
+ while (tries--)
+ {
+ /* This is so the child process won't delete our temp files
+ if it receives a signal before exec-ing. */
+ cs = cs_enter ();
+ saved_temphead = temphead;
+ temphead = NULL;
+
+ pid = fork ();
+ saved_errno = errno;
+ if (pid)
+ temphead = saved_temphead;
+
+ cs_leave (cs);
+ errno = saved_errno;
+
+ if (0 <= pid || errno != EAGAIN)
+ break;
+ else
+ {
+ sleep (wait_retry);
+ wait_retry *= 2;
+ reap_some ();
+ }
+ }
+
+ if (pid < 0)
+ {
+ close (pipefds[0]);
+ close (pipefds[1]);
+ }
+ else if (pid == 0)
+ {
+ close (STDIN_FILENO);
+ close (STDOUT_FILENO);
+ }
+ else
+ ++nprocs;
+
+ return pid;
+
+#else /* ! HAVE_WORKING_FORK */
+ return -1;
+#endif
+}
+
+/* Create a temporary file and start a compression program to filter output
+ to that file. Set *PFP to the file handle and if *PPID is non-NULL,
+ set it to the PID of the newly-created process. */
+
+static char *
+create_temp (FILE **pfp, pid_t *ppid)
+{
+ int tempfd;
+ struct tempnode *node = create_temp_file (&tempfd);
+ char *name = node->name;
+
+ if (compress_program)
+ {
+ int pipefds[2];
+
+ node->pid = pipe_fork (pipefds, MAX_FORK_TRIES_COMPRESS);
+ if (0 < node->pid)
+ {
+ close (tempfd);
+ close (pipefds[0]);
+ tempfd = pipefds[1];
+
+ register_proc (node->pid);
+ }
+ else if (node->pid == 0)
+ {
+ close (pipefds[1]);
+ dup2_or_die (tempfd, STDOUT_FILENO);
+ close (tempfd);
+ dup2_or_die (pipefds[0], STDIN_FILENO);
+ close (pipefds[0]);
+
+ if (execlp (compress_program, compress_program, (char *) NULL) < 0)
+ error (SORT_FAILURE, errno, _("couldn't execute %s"),
+ compress_program);
+ }
+ else
+ node->pid = 0;
+ }
+
+ *pfp = fdopen (tempfd, "w");
+ if (! *pfp)
+ die (_("couldn't create temporary file"), name);
+
+ if (ppid)
+ *ppid = node->pid;
+
+ return name;
+}
+
+/* Open a compressed temp file and start a decompression process through
+ which to filter the input. PID must be the valid processes ID of the
+ process used to compress the file. */
+
+static FILE *
+open_temp (const char *name, pid_t pid)
+{
+ int tempfd, pipefds[2];
+ pid_t child_pid;
+ FILE *fp;
+
+ wait_proc (pid);
+
+ tempfd = open (name, O_RDONLY);
+ if (tempfd < 0)
+ die (_("couldn't open temporary file"), name);
+
+ child_pid = pipe_fork (pipefds, MAX_FORK_TRIES_DECOMPRESS);
+ if (0 < child_pid)
+ {
+ close (tempfd);
+ close (pipefds[1]);
+ }
+ else if (child_pid == 0)
+ {
+ close (pipefds[0]);
+ dup2_or_die (tempfd, STDIN_FILENO);
+ close (tempfd);
+ dup2_or_die (pipefds[1], STDOUT_FILENO);
+ close (pipefds[1]);
+
+ if (execlp (compress_program, compress_program, "-d", (char *) NULL) < 0)
+ error (SORT_FAILURE, errno, _("couldn't execute %s -d"),
+ compress_program);
+ }
+ else
+ error (SORT_FAILURE, errno, _("couldn't create process for %s -d"),
+ compress_program);
+
+ fp = fdopen (pipefds[0], "r");
+ if (! fp)
+ die (_("couldn't create temporary file"), name);
+
+ return fp;
+}
+
+static void
+write_bytes (const char *buf, size_t n_bytes, FILE *fp, const char *output_file)
+{
+ if (fwrite (buf, 1, n_bytes, fp) != n_bytes)
+ die (_("write failed"), output_file);
+}
+
+/* Append DIR to the array of temporary directory names. */
+static void
+add_temp_dir (char const *dir)
+{
+ if (temp_dir_count == temp_dir_alloc)
+ temp_dirs = X2NREALLOC (temp_dirs, &temp_dir_alloc);
+
+ temp_dirs[temp_dir_count++] = dir;
+}
+
+/* Remove NAME from the list of temporary files. */
+
+static void
+zaptemp (const char *name)
+{
+ struct tempnode *volatile *pnode;
+ struct tempnode *node;
+ struct tempnode *next;
+ int unlink_status;
+ int unlink_errno = 0;
+ struct cs_status cs;
+
+ for (pnode = &temphead; (node = *pnode)->name != name; pnode = &node->next)
+ continue;
+
+ /* Unlink the temporary file in a critical section to avoid races. */
+ next = node->next;
+ cs = cs_enter ();
+ unlink_status = unlink (name);
+ unlink_errno = errno;
+ *pnode = next;
+ cs_leave (cs);
+
+ if (unlink_status != 0)
+ error (0, unlink_errno, _("warning: cannot remove: %s"), name);
+ if (! next)
+ temptail = pnode;
+ free (node);
+}
+
+#if HAVE_NL_LANGINFO
+
+static int
+struct_month_cmp (const void *m1, const void *m2)
+{
+ struct month const *month1 = m1;
+ struct month const *month2 = m2;
+ return strcmp (month1->name, month2->name);
+}
+
+#endif
+
+/* Initialize the character class tables. */
+
+static void
+inittables (void)
+{
+ size_t i;
+
+ for (i = 0; i < UCHAR_LIM; ++i)
+ {
+ blanks[i] = !! isblank (i);
+ nonprinting[i] = ! isprint (i);
+ nondictionary[i] = ! isalnum (i) && ! isblank (i);
+ fold_toupper[i] = toupper (i);
+ }
+
+#if HAVE_NL_LANGINFO
+ /* If we're not in the "C" locale, read different names for months. */
+ if (hard_LC_TIME)
+ {
+ for (i = 0; i < MONTHS_PER_YEAR; i++)
+ {
+ char const *s;
+ size_t s_len;
+ size_t j;
+ char *name;
+
+ s = (char *) nl_langinfo (ABMON_1 + i);
+ s_len = strlen (s);
+ monthtab[i].name = name = xmalloc (s_len + 1);
+ monthtab[i].val = i + 1;
+
+ for (j = 0; j < s_len; j++)
+ name[j] = fold_toupper[to_uchar (s[j])];
+ name[j] = '\0';
+ }
+ qsort ((void *) monthtab, MONTHS_PER_YEAR,
+ sizeof *monthtab, struct_month_cmp);
+ }
+#endif
+}
+
+/* Specify the amount of main memory to use when sorting. */
+static void
+specify_sort_size (char const *s)
+{
+ uintmax_t n;
+ char *suffix;
+ enum strtol_error e = xstrtoumax (s, &suffix, 10, &n, "EgGkKmMPtTYZ");
+
+ /* The default unit is KiB. */
+ if (e == LONGINT_OK && ISDIGIT (suffix[-1]))
+ {
+ if (n <= UINTMAX_MAX / 1024)
+ n *= 1024;
+ else
+ e = LONGINT_OVERFLOW;
+ }
+
+ /* A 'b' suffix means bytes; a '%' suffix means percent of memory. */
+ if (e == LONGINT_INVALID_SUFFIX_CHAR && ISDIGIT (suffix[-1]) && ! suffix[1])
+ switch (suffix[0])
+ {
+ case 'b':
+ e = LONGINT_OK;
+ break;
+
+ case '%':
+ {
+ double mem = physmem_total () * n / 100;
+
+ /* Use "<", not "<=", to avoid problems with rounding. */
+ if (mem < UINTMAX_MAX)
+ {
+ n = mem;
+ e = LONGINT_OK;
+ }
+ else
+ e = LONGINT_OVERFLOW;
+ }
+ break;
+ }
+
+ if (e == LONGINT_OK)
+ {
+ /* If multiple sort sizes are specified, take the maximum, so
+ that option order does not matter. */
+ if (n < sort_size)
+ return;
+
+ sort_size = n;
+ if (sort_size == n)
+ {
+ sort_size = MAX (sort_size, MIN_SORT_SIZE);
+ return;
+ }
+
+ e = LONGINT_OVERFLOW;
+ }
+
+ STRTOL_FATAL_ERROR (s, _("sort size"), e);
+}
+
+/* Return the default sort size. */
+static size_t
+default_sort_size (void)
+{
+ /* Let MEM be available memory or 1/8 of total memory, whichever
+ is greater. */
+ double avail = physmem_available ();
+ double total = physmem_total ();
+ double mem = MAX (avail, total / 8);
+ struct rlimit rlimit;
+
+ /* Let SIZE be MEM, but no more than the maximum object size or
+ system resource limits. Avoid the MIN macro here, as it is not
+ quite right when only one argument is floating point. Don't
+ bother to check for values like RLIM_INFINITY since in practice
+ they are not much less than SIZE_MAX. */
+ size_t size = SIZE_MAX;
+ if (mem < size)
+ size = mem;
+ if (getrlimit (RLIMIT_DATA, &rlimit) == 0 && rlimit.rlim_cur < size)
+ size = rlimit.rlim_cur;
+#ifdef RLIMIT_AS
+ if (getrlimit (RLIMIT_AS, &rlimit) == 0 && rlimit.rlim_cur < size)
+ size = rlimit.rlim_cur;
+#endif
+
+ /* Leave a large safety margin for the above limits, as failure can
+ occur when they are exceeded. */
+ size /= 2;
+
+#ifdef RLIMIT_RSS
+ /* Leave a 1/16 margin for RSS to leave room for code, stack, etc.
+ Exceeding RSS is not fatal, but can be quite slow. */
+ if (getrlimit (RLIMIT_RSS, &rlimit) == 0 && rlimit.rlim_cur / 16 * 15 < size)
+ size = rlimit.rlim_cur / 16 * 15;
+#endif
+
+ /* Use no less than the minimum. */
+ return MAX (size, MIN_SORT_SIZE);
+}
+
+/* Return the sort buffer size to use with the input files identified
+ by FPS and FILES, which are alternate names of the same files.
+ NFILES gives the number of input files; NFPS may be less. Assume
+ that each input line requires LINE_BYTES extra bytes' worth of line
+ information. Do not exceed the size bound specified by the user
+ (or a default size bound, if the user does not specify one). */
+
+static size_t
+sort_buffer_size (FILE *const *fps, size_t nfps,
+ char *const *files, size_t nfiles,
+ size_t line_bytes)
+{
+ /* A bound on the input size. If zero, the bound hasn't been
+ determined yet. */
+ static size_t size_bound;
+
+ /* In the worst case, each input byte is a newline. */
+ size_t worst_case_per_input_byte = line_bytes + 1;
+
+ /* Keep enough room for one extra input line and an extra byte.
+ This extra room might be needed when preparing to read EOF. */
+ size_t size = worst_case_per_input_byte + 1;
+
+ size_t i;
+
+ for (i = 0; i < nfiles; i++)
+ {
+ struct stat st;
+ off_t file_size;
+ size_t worst_case;
+
+ if ((i < nfps ? fstat (fileno (fps[i]), &st)
+ : STREQ (files[i], "-") ? fstat (STDIN_FILENO, &st)
+ : stat (files[i], &st))
+ != 0)
+ die (_("stat failed"), files[i]);
+
+ if (S_ISREG (st.st_mode))
+ file_size = st.st_size;
+ else
+ {
+ /* The file has unknown size. If the user specified a sort
+ buffer size, use that; otherwise, guess the size. */
+ if (sort_size)
+ return sort_size;
+ file_size = INPUT_FILE_SIZE_GUESS;
+ }
+
+ if (! size_bound)
+ {
+ size_bound = sort_size;
+ if (! size_bound)
+ size_bound = default_sort_size ();
+ }
+
+ /* Add the amount of memory needed to represent the worst case
+ where the input consists entirely of newlines followed by a
+ single non-newline. Check for overflow. */
+ worst_case = file_size * worst_case_per_input_byte + 1;
+ if (file_size != worst_case / worst_case_per_input_byte
+ || size_bound - size <= worst_case)
+ return size_bound;
+ size += worst_case;
+ }
+
+ return size;
+}
+
+/* Initialize BUF. Reserve LINE_BYTES bytes for each line; LINE_BYTES
+ must be at least sizeof (struct line). Allocate ALLOC bytes
+ initially. */
+
+static void
+initbuf (struct buffer *buf, size_t line_bytes, size_t alloc)
+{
+ /* Ensure that the line array is properly aligned. If the desired
+ size cannot be allocated, repeatedly halve it until allocation
+ succeeds. The smaller allocation may hurt overall performance,
+ but that's better than failing. */
+ for (;;)
+ {
+ alloc += sizeof (struct line) - alloc % sizeof (struct line);
+ buf->buf = malloc (alloc);
+ if (buf->buf)
+ break;
+ alloc /= 2;
+ if (alloc <= line_bytes + 1)
+ xalloc_die ();
+ }
+
+ buf->line_bytes = line_bytes;
+ buf->alloc = alloc;
+ buf->used = buf->left = buf->nlines = 0;
+ buf->eof = false;
+}
+
+/* Return one past the limit of the line array. */
+
+static inline struct line *
+buffer_linelim (struct buffer const *buf)
+{
+ return (struct line *) (buf->buf + buf->alloc);
+}
+
+/* Return a pointer to the first character of the field specified
+ by KEY in LINE. */
+
+static char *
+begfield (const struct line *line, const struct keyfield *key)
+{
+ char *ptr = line->text, *lim = ptr + line->length - 1;
+ size_t sword = key->sword;
+ size_t schar = key->schar;
+ size_t remaining_bytes;
+
+ /* The leading field separator itself is included in a field when -t
+ is absent. */
+
+ if (tab != TAB_DEFAULT)
+ while (ptr < lim && sword--)
+ {
+ while (ptr < lim && *ptr != tab)
+ ++ptr;
+ if (ptr < lim)
+ ++ptr;
+ }
+ else
+ while (ptr < lim && sword--)
+ {
+ while (ptr < lim && blanks[to_uchar (*ptr)])
+ ++ptr;
+ while (ptr < lim && !blanks[to_uchar (*ptr)])
+ ++ptr;
+ }
+
+ if (key->skipsblanks)
+ while (ptr < lim && blanks[to_uchar (*ptr)])
+ ++ptr;
+
+ /* Advance PTR by SCHAR (if possible), but no further than LIM. */
+ remaining_bytes = lim - ptr;
+ if (schar < remaining_bytes)
+ ptr += schar;
+ else
+ ptr = lim;
+
+ return ptr;
+}
+
+/* Return the limit of (a pointer to the first character after) the field
+ in LINE specified by KEY. */
+
+static char *
+limfield (const struct line *line, const struct keyfield *key)
+{
+ char *ptr = line->text, *lim = ptr + line->length - 1;
+ size_t eword = key->eword, echar = key->echar;
+ size_t remaining_bytes;
+
+ /* Move PTR past EWORD fields or to one past the last byte on LINE,
+ whichever comes first. If there are more than EWORD fields, leave
+ PTR pointing at the beginning of the field having zero-based index,
+ EWORD. If a delimiter character was specified (via -t), then that
+ `beginning' is the first character following the delimiting TAB.
+ Otherwise, leave PTR pointing at the first `blank' character after
+ the preceding field. */
+ if (tab != TAB_DEFAULT)
+ while (ptr < lim && eword--)
+ {
+ while (ptr < lim && *ptr != tab)
+ ++ptr;
+ if (ptr < lim && (eword | echar))
+ ++ptr;
+ }
+ else
+ while (ptr < lim && eword--)
+ {
+ while (ptr < lim && blanks[to_uchar (*ptr)])
+ ++ptr;
+ while (ptr < lim && !blanks[to_uchar (*ptr)])
+ ++ptr;
+ }
+
+#ifdef POSIX_UNSPECIFIED
+ /* The following block of code makes GNU sort incompatible with
+ standard Unix sort, so it's ifdef'd out for now.
+ The POSIX spec isn't clear on how to interpret this.
+ FIXME: request clarification.
+
+ From: kwzh@gnu.ai.mit.edu (Karl Heuer)
+ Date: Thu, 30 May 96 12:20:41 -0400
+ [Translated to POSIX 1003.1-2001 terminology by Paul Eggert.]
+
+ [...]I believe I've found another bug in `sort'.
+
+ $ cat /tmp/sort.in
+ a b c 2 d
+ pq rs 1 t
+ $ textutils-1.15/src/sort -k1.7,1.7 </tmp/sort.in
+ a b c 2 d
+ pq rs 1 t
+ $ /bin/sort -k1.7,1.7 </tmp/sort.in
+ pq rs 1 t
+ a b c 2 d
+
+ Unix sort produced the answer I expected: sort on the single character
+ in column 7. GNU sort produced different results, because it disagrees
+ on the interpretation of the key-end spec "M.N". Unix sort reads this
+ as "skip M-1 fields, then N-1 characters"; but GNU sort wants it to mean
+ "skip M-1 fields, then either N-1 characters or the rest of the current
+ field, whichever comes first". This extra clause applies only to
+ key-ends, not key-starts.
+ */
+
+ /* Make LIM point to the end of (one byte past) the current field. */
+ if (tab != TAB_DEFAULT)
+ {
+ char *newlim;
+ newlim = memchr (ptr, tab, lim - ptr);
+ if (newlim)
+ lim = newlim;
+ }
+ else
+ {
+ char *newlim;
+ newlim = ptr;
+ while (newlim < lim && blanks[to_uchar (*newlim)])
+ ++newlim;
+ while (newlim < lim && !blanks[to_uchar (*newlim)])
+ ++newlim;
+ lim = newlim;
+ }
+#endif
+
+ /* If we're ignoring leading blanks when computing the End
+ of the field, don't start counting bytes until after skipping
+ past any leading blanks. */
+ if (key->skipeblanks)
+ while (ptr < lim && blanks[to_uchar (*ptr)])
+ ++ptr;
+
+ /* Advance PTR by ECHAR (if possible), but no further than LIM. */
+ remaining_bytes = lim - ptr;
+ if (echar < remaining_bytes)
+ ptr += echar;
+ else
+ ptr = lim;
+
+ return ptr;
+}
+
+/* Fill BUF reading from FP, moving buf->left bytes from the end
+ of buf->buf to the beginning first. If EOF is reached and the
+ file wasn't terminated by a newline, supply one. Set up BUF's line
+ table too. FILE is the name of the file corresponding to FP.
+ Return true if some input was read. */
+
+static bool
+fillbuf (struct buffer *buf, FILE *fp, char const *file)
+{
+ struct keyfield const *key = keylist;
+ char eol = eolchar;
+ size_t line_bytes = buf->line_bytes;
+ size_t mergesize = merge_buffer_size - MIN_MERGE_BUFFER_SIZE;
+
+ if (buf->eof)
+ return false;
+
+ if (buf->used != buf->left)
+ {
+ memmove (buf->buf, buf->buf + buf->used - buf->left, buf->left);
+ buf->used = buf->left;
+ buf->nlines = 0;
+ }
+
+ for (;;)
+ {
+ char *ptr = buf->buf + buf->used;
+ struct line *linelim = buffer_linelim (buf);
+ struct line *line = linelim - buf->nlines;
+ size_t avail = (char *) linelim - buf->nlines * line_bytes - ptr;
+ char *line_start = buf->nlines ? line->text + line->length : buf->buf;
+
+ while (line_bytes + 1 < avail)
+ {
+ /* Read as many bytes as possible, but do not read so many
+ bytes that there might not be enough room for the
+ corresponding line array. The worst case is when the
+ rest of the input file consists entirely of newlines,
+ except that the last byte is not a newline. */
+ size_t readsize = (avail - 1) / (line_bytes + 1);
+ size_t bytes_read = fread (ptr, 1, readsize, fp);
+ char *ptrlim = ptr + bytes_read;
+ char *p;
+ avail -= bytes_read;
+
+ if (bytes_read != readsize)
+ {
+ if (ferror (fp))
+ die (_("read failed"), file);
+ if (feof (fp))
+ {
+ buf->eof = true;
+ if (buf->buf == ptrlim)
+ return false;
+ if (ptrlim[-1] != eol)
+ *ptrlim++ = eol;
+ }
+ }
+
+ /* Find and record each line in the just-read input. */
+ while ((p = memchr (ptr, eol, ptrlim - ptr)))
+ {
+ ptr = p + 1;
+ line--;
+ line->text = line_start;
+ line->length = ptr - line_start;
+ mergesize = MAX (mergesize, line->length);
+ avail -= line_bytes;
+
+ if (key)
+ {
+ /* Precompute the position of the first key for
+ efficiency. */
+ line->keylim = (key->eword == SIZE_MAX
+ ? p
+ : limfield (line, key));
+
+ if (key->sword != SIZE_MAX)
+ line->keybeg = begfield (line, key);
+ else
+ {
+ if (key->skipsblanks)
+ while (blanks[to_uchar (*line_start)])
+ line_start++;
+ line->keybeg = line_start;
+ }
+ }
+
+ line_start = ptr;
+ }
+
+ ptr = ptrlim;
+ if (buf->eof)
+ break;
+ }
+
+ buf->used = ptr - buf->buf;
+ buf->nlines = buffer_linelim (buf) - line;
+ if (buf->nlines != 0)
+ {
+ buf->left = ptr - line_start;
+ merge_buffer_size = mergesize + MIN_MERGE_BUFFER_SIZE;
+ return true;
+ }
+
+ /* The current input line is too long to fit in the buffer.
+ Double the buffer size and try again. */
+ buf->buf = X2REALLOC (buf->buf, &buf->alloc);
+ }
+}
+
+/* Compare strings A and B as numbers without explicitly converting them to
+ machine numbers. Comparatively slow for short strings, but asymptotically
+ hideously fast. */
+
+static int
+numcompare (const char *a, const char *b)
+{
+ while (blanks[to_uchar (*a)])
+ a++;
+ while (blanks[to_uchar (*b)])
+ b++;
+
+ return strnumcmp (a, b, decimal_point, thousands_sep);
+}
+
+static int
+general_numcompare (const char *sa, const char *sb)
+{
+ /* FIXME: add option to warn about failed conversions. */
+ /* FIXME: maybe add option to try expensive FP conversion
+ only if A and B can't be compared more cheaply/accurately. */
+
+ char *ea;
+ char *eb;
+ double a = strtod (sa, &ea);
+ double b = strtod (sb, &eb);
+
+ /* Put conversion errors at the start of the collating sequence. */
+ if (sa == ea)
+ return sb == eb ? 0 : -1;
+ if (sb == eb)
+ return 1;
+
+ /* Sort numbers in the usual way, where -0 == +0. Put NaNs after
+ conversion errors but before numbers; sort them by internal
+ bit-pattern, for lack of a more portable alternative. */
+ return (a < b ? -1
+ : a > b ? 1
+ : a == b ? 0
+ : b == b ? -1
+ : a == a ? 1
+ : memcmp ((char *) &a, (char *) &b, sizeof a));
+}
+
+/* Return an integer in 1..12 of the month name MONTH with length LEN.
+ Return 0 if the name in S is not recognized. */
+
+static int
+getmonth (char const *month, size_t len)
+{
+ size_t lo = 0;
+ size_t hi = MONTHS_PER_YEAR;
+ char const *monthlim = month + len;
+
+ for (;;)
+ {
+ if (month == monthlim)
+ return 0;
+ if (!blanks[to_uchar (*month)])
+ break;
+ ++month;
+ }
+
+ do
+ {
+ size_t ix = (lo + hi) / 2;
+ char const *m = month;
+ char const *n = monthtab[ix].name;
+
+ for (;; m++, n++)
+ {
+ if (!*n)
+ return monthtab[ix].val;
+ if (m == monthlim || fold_toupper[to_uchar (*m)] < to_uchar (*n))
+ {
+ hi = ix;
+ break;
+ }
+ else if (fold_toupper[to_uchar (*m)] > to_uchar (*n))
+ {
+ lo = ix + 1;
+ break;
+ }
+ }
+ }
+ while (lo < hi);
+
+ return 0;
+}
+
+/* A source of random data. */
+static struct randread_source *randread_source;
+
+/* Return the Ith randomly-generated state. The caller must invoke
+ random_state (H) for all H less than I before invoking random_state
+ (I). */
+
+static struct md5_ctx
+random_state (size_t i)
+{
+ /* An array of states resulting from the random data, and counts of
+ its used and allocated members. */
+ static struct md5_ctx *state;
+ static size_t used;
+ static size_t allocated;
+
+ struct md5_ctx *s = &state[i];
+
+ if (used <= i)
+ {
+ unsigned char buf[MD5_DIGEST_SIZE];
+
+ used++;
+
+ if (allocated <= i)
+ {
+ state = X2NREALLOC (state, &allocated);
+ s = &state[i];
+ }
+
+ randread (randread_source, buf, sizeof buf);
+ md5_init_ctx (s);
+ md5_process_bytes (buf, sizeof buf, s);
+ }
+
+ return *s;
+}
+
+/* Compare the hashes of TEXTA with length LENGTHA to those of TEXTB
+ with length LENGTHB. Return negative if less, zero if equal,
+ positive if greater. */
+
+static int
+cmp_hashes (char const *texta, size_t lena,
+ char const *textb, size_t lenb)
+{
+ /* Try random hashes until a pair of hashes disagree. But if the
+ first pair of random hashes agree, check whether the keys are
+ identical and if so report no difference. */
+ int diff;
+ size_t i;
+ for (i = 0; ; i++)
+ {
+ uint32_t dig[2][MD5_DIGEST_SIZE / sizeof (uint32_t)];
+ struct md5_ctx s[2];
+ s[0] = s[1] = random_state (i);
+ md5_process_bytes (texta, lena, &s[0]); md5_finish_ctx (&s[0], dig[0]);
+ md5_process_bytes (textb, lenb, &s[1]); md5_finish_ctx (&s[1], dig[1]);
+ diff = memcmp (dig[0], dig[1], sizeof dig[0]);
+ if (diff != 0)
+ break;
+ if (i == 0 && lena == lenb && memcmp (texta, textb, lena) == 0)
+ break;
+ }
+
+ return diff;
+}
+
+/* Compare the keys TEXTA (of length LENA) and TEXTB (of length LENB)
+ using one or more random hash functions. */
+
+static int
+compare_random (char *restrict texta, size_t lena,
+ char *restrict textb, size_t lenb)
+{
+ int diff;
+
+ if (! hard_LC_COLLATE)
+ diff = cmp_hashes (texta, lena, textb, lenb);
+ else
+ {
+ /* Transform the text into the basis of comparison, so that byte
+ strings that would otherwise considered to be equal are
+ considered equal here even if their bytes differ. */
+
+ char *buf = NULL;
+ char stackbuf[4000];
+ size_t tlena = xmemxfrm (stackbuf, sizeof stackbuf, texta, lena);
+ bool a_fits = tlena <= sizeof stackbuf;
+ size_t tlenb = xmemxfrm ((a_fits ? stackbuf + tlena : NULL),
+ (a_fits ? sizeof stackbuf - tlena : 0),
+ textb, lenb);
+
+ if (a_fits && tlena + tlenb <= sizeof stackbuf)
+ buf = stackbuf;
+ else
+ {
+ /* Adding 1 to the buffer size lets xmemxfrm run a bit
+ faster by avoiding the need for an extra buffer copy. */
+ buf = xmalloc (tlena + tlenb + 1);
+ xmemxfrm (buf, tlena + 1, texta, lena);
+ xmemxfrm (buf + tlena, tlenb + 1, textb, lenb);
+ }
+
+ diff = cmp_hashes (buf, tlena, buf + tlena, tlenb);
+
+ if (buf != stackbuf)
+ free (buf);
+ }
+
+ return diff;
+}
+
+/* Compare two lines A and B trying every key in sequence until there
+ are no more keys or a difference is found. */
+
+static int
+keycompare (const struct line *a, const struct line *b)
+{
+ struct keyfield const *key = keylist;
+
+ /* For the first iteration only, the key positions have been
+ precomputed for us. */
+ char *texta = a->keybeg;
+ char *textb = b->keybeg;
+ char *lima = a->keylim;
+ char *limb = b->keylim;
+
+ int diff;
+
+ for (;;)
+ {
+ char const *translate = key->translate;
+ bool const *ignore = key->ignore;
+
+ /* Find the lengths. */
+ size_t lena = lima <= texta ? 0 : lima - texta;
+ size_t lenb = limb <= textb ? 0 : limb - textb;
+
+ /* Actually compare the fields. */
+
+ if (key->random)
+ diff = compare_random (texta, lena, textb, lenb);
+ else if (key->numeric | key->general_numeric)
+ {
+ char savea = *lima, saveb = *limb;
+
+ *lima = *limb = '\0';
+ diff = ((key->numeric ? numcompare : general_numcompare)
+ (texta, textb));
+ *lima = savea, *limb = saveb;
+ }
+ else if (key->month)
+ diff = getmonth (texta, lena) - getmonth (textb, lenb);
+ /* Sorting like this may become slow, so in a simple locale the user
+ can select a faster sort that is similar to ascii sort. */
+ else if (hard_LC_COLLATE)
+ {
+ if (ignore || translate)
+ {
+ char buf[4000];
+ size_t size = lena + 1 + lenb + 1;
+ char *copy_a = (size <= sizeof buf ? buf : xmalloc (size));
+ char *copy_b = copy_a + lena + 1;
+ size_t new_len_a, new_len_b, i;
+
+ /* Ignore and/or translate chars before comparing. */
+ for (new_len_a = new_len_b = i = 0; i < MAX (lena, lenb); i++)
+ {
+ if (i < lena)
+ {
+ copy_a[new_len_a] = (translate
+ ? translate[to_uchar (texta[i])]
+ : texta[i]);
+ if (!ignore || !ignore[to_uchar (texta[i])])
+ ++new_len_a;
+ }
+ if (i < lenb)
+ {
+ copy_b[new_len_b] = (translate
+ ? translate[to_uchar (textb[i])]
+ : textb [i]);
+ if (!ignore || !ignore[to_uchar (textb[i])])
+ ++new_len_b;
+ }
+ }
+
+ diff = xmemcoll (copy_a, new_len_a, copy_b, new_len_b);
+
+ if (sizeof buf < size)
+ free (copy_a);
+ }
+ else if (lena == 0)
+ diff = - NONZERO (lenb);
+ else if (lenb == 0)
+ goto greater;
+ else
+ diff = xmemcoll (texta, lena, textb, lenb);
+ }
+ else if (ignore)
+ {
+#define CMP_WITH_IGNORE(A, B) \
+ do \
+ { \
+ for (;;) \
+ { \
+ while (texta < lima && ignore[to_uchar (*texta)]) \
+ ++texta; \
+ while (textb < limb && ignore[to_uchar (*textb)]) \
+ ++textb; \
+ if (! (texta < lima && textb < limb)) \
+ break; \
+ diff = to_uchar (A) - to_uchar (B); \
+ if (diff) \
+ goto not_equal; \
+ ++texta; \
+ ++textb; \
+ } \
+ \
+ diff = (texta < lima) - (textb < limb); \
+ } \
+ while (0)
+
+ if (translate)
+ CMP_WITH_IGNORE (translate[to_uchar (*texta)],
+ translate[to_uchar (*textb)]);
+ else
+ CMP_WITH_IGNORE (*texta, *textb);
+ }
+ else if (lena == 0)
+ diff = - NONZERO (lenb);
+ else if (lenb == 0)
+ goto greater;
+ else
+ {
+ if (translate)
+ {
+ while (texta < lima && textb < limb)
+ {
+ diff = (to_uchar (translate[to_uchar (*texta++)])
+ - to_uchar (translate[to_uchar (*textb++)]));
+ if (diff)
+ goto not_equal;
+ }
+ }
+ else
+ {
+ diff = memcmp (texta, textb, MIN (lena, lenb));
+ if (diff)
+ goto not_equal;
+ }
+ diff = lena < lenb ? -1 : lena != lenb;
+ }
+
+ if (diff)
+ goto not_equal;
+
+ key = key->next;
+ if (! key)
+ break;
+
+ /* Find the beginning and limit of the next field. */
+ if (key->eword != SIZE_MAX)
+ lima = limfield (a, key), limb = limfield (b, key);
+ else
+ lima = a->text + a->length - 1, limb = b->text + b->length - 1;
+
+ if (key->sword != SIZE_MAX)
+ texta = begfield (a, key), textb = begfield (b, key);
+ else
+ {
+ texta = a->text, textb = b->text;
+ if (key->skipsblanks)
+ {
+ while (texta < lima && blanks[to_uchar (*texta)])
+ ++texta;
+ while (textb < limb && blanks[to_uchar (*textb)])
+ ++textb;
+ }
+ }
+ }
+
+ return 0;
+
+ greater:
+ diff = 1;
+ not_equal:
+ return key->reverse ? -diff : diff;
+}
+
+/* Compare two lines A and B, returning negative, zero, or positive
+ depending on whether A compares less than, equal to, or greater than B. */
+
+static int
+compare (const struct line *a, const struct line *b)
+{
+ int diff;
+ size_t alen, blen;
+
+ /* First try to compare on the specified keys (if any).
+ The only two cases with no key at all are unadorned sort,
+ and unadorned sort -r. */
+ if (keylist)
+ {
+ diff = keycompare (a, b);
+ if (diff | unique | stable)
+ return diff;
+ }
+
+ /* If the keys all compare equal (or no keys were specified)
+ fall through to the default comparison. */
+ alen = a->length - 1, blen = b->length - 1;
+
+ if (alen == 0)
+ diff = - NONZERO (blen);
+ else if (blen == 0)
+ diff = 1;
+ else if (hard_LC_COLLATE)
+ diff = xmemcoll (a->text, alen, b->text, blen);
+ else if (! (diff = memcmp (a->text, b->text, MIN (alen, blen))))
+ diff = alen < blen ? -1 : alen != blen;
+
+ return reverse ? -diff : diff;
+}
+
+/* Check that the lines read from FILE_NAME come in order. Return
+ true if they are in order. If CHECKONLY == 'c', also print a
+ diagnostic (FILE_NAME, line number, contents of line) to stderr if
+ they are not in order. */
+
+static bool
+check (char const *file_name, char checkonly)
+{
+ FILE *fp = xfopen (file_name, "r");
+ struct buffer buf; /* Input buffer. */
+ struct line temp; /* Copy of previous line. */
+ size_t alloc = 0;
+ uintmax_t line_number = 0;
+ struct keyfield const *key = keylist;
+ bool nonunique = ! unique;
+ bool ordered = true;
+
+ initbuf (&buf, sizeof (struct line),
+ MAX (merge_buffer_size, sort_size));
+ temp.text = NULL;
+
+ while (fillbuf (&buf, fp, file_name))
+ {
+ struct line const *line = buffer_linelim (&buf);
+ struct line const *linebase = line - buf.nlines;
+
+ /* Make sure the line saved from the old buffer contents is
+ less than or equal to the first line of the new buffer. */
+ if (alloc && nonunique <= compare (&temp, line - 1))
+ {
+ found_disorder:
+ {
+ if (checkonly == 'c')
+ {
+ struct line const *disorder_line = line - 1;
+ uintmax_t disorder_line_number =
+ buffer_linelim (&buf) - disorder_line + line_number;
+ char hr_buf[INT_BUFSIZE_BOUND (uintmax_t)];
+ fprintf (stderr, _("%s: %s:%s: disorder: "),
+ program_name, file_name,
+ umaxtostr (disorder_line_number, hr_buf));
+ write_bytes (disorder_line->text, disorder_line->length,
+ stderr, _("standard error"));
+ }
+
+ ordered = false;
+ break;
+ }
+ }
+
+ /* Compare each line in the buffer with its successor. */
+ while (linebase < --line)
+ if (nonunique <= compare (line, line - 1))
+ goto found_disorder;
+
+ line_number += buf.nlines;
+
+ /* Save the last line of the buffer. */
+ if (alloc < line->length)
+ {
+ do
+ {
+ alloc *= 2;
+ if (! alloc)
+ {
+ alloc = line->length;
+ break;
+ }
+ }
+ while (alloc < line->length);
+
+ temp.text = xrealloc (temp.text, alloc);
+ }
+ memcpy (temp.text, line->text, line->length);
+ temp.length = line->length;
+ if (key)
+ {
+ temp.keybeg = temp.text + (line->keybeg - line->text);
+ temp.keylim = temp.text + (line->keylim - line->text);
+ }
+ }
+
+ xfclose (fp, file_name);
+ free (buf.buf);
+ free (temp.text);
+ return ordered;
+}
+
+/* Merge lines from FILES onto OFP. NTEMPS is the number of temporary
+ files (all of which are at the start of the FILES array), and
+ NFILES is the number of files; 0 <= NTEMPS <= NFILES <= NMERGE.
+ Close input and output files before returning.
+ OUTPUT_FILE gives the name of the output file. If it is NULL,
+ the output file is standard output. If OFP is NULL, the output
+ file has not been opened yet (or written to, if standard output). */
+
+static void
+mergefps (struct sortfile *files, size_t ntemps, size_t nfiles,
+ FILE *ofp, char const *output_file)
+{
+ FILE *fps[NMERGE]; /* Input streams for each file. */
+ struct buffer buffer[NMERGE]; /* Input buffers for each file. */
+ struct line saved; /* Saved line storage for unique check. */
+ struct line const *savedline = NULL;
+ /* &saved if there is a saved line. */
+ size_t savealloc = 0; /* Size allocated for the saved line. */
+ struct line const *cur[NMERGE]; /* Current line in each line table. */
+ struct line const *base[NMERGE]; /* Base of each line table. */
+ size_t ord[NMERGE]; /* Table representing a permutation of fps,
+ such that cur[ord[0]] is the smallest line
+ and will be next output. */
+ size_t i;
+ size_t j;
+ size_t t;
+ struct keyfield const *key = keylist;
+ saved.text = NULL;
+
+ /* Read initial lines from each input file. */
+ for (i = 0; i < nfiles; )
+ {
+ fps[i] = (files[i].pid
+ ? open_temp (files[i].name, files[i].pid)
+ : xfopen (files[i].name, "r"));
+ initbuf (&buffer[i], sizeof (struct line),
+ MAX (merge_buffer_size, sort_size / nfiles));
+ if (fillbuf (&buffer[i], fps[i], files[i].name))
+ {
+ struct line const *linelim = buffer_linelim (&buffer[i]);
+ cur[i] = linelim - 1;
+ base[i] = linelim - buffer[i].nlines;
+ i++;
+ }
+ else
+ {
+ /* fps[i] is empty; eliminate it from future consideration. */
+ xfclose (fps[i], files[i].name);
+ if (i < ntemps)
+ {
+ ntemps--;
+ zaptemp (files[i].name);
+ }
+ free (buffer[i].buf);
+ --nfiles;
+ for (j = i; j < nfiles; ++j)
+ files[j] = files[j + 1];
+ }
+ }
+
+ if (! ofp)
+ ofp = xfopen (output_file, "w");
+
+ /* Set up the ord table according to comparisons among input lines.
+ Since this only reorders two items if one is strictly greater than
+ the other, it is stable. */
+ for (i = 0; i < nfiles; ++i)
+ ord[i] = i;
+ for (i = 1; i < nfiles; ++i)
+ if (0 < compare (cur[ord[i - 1]], cur[ord[i]]))
+ t = ord[i - 1], ord[i - 1] = ord[i], ord[i] = t, i = 0;
+
+ /* Repeatedly output the smallest line until no input remains. */
+ while (nfiles)
+ {
+ struct line const *smallest = cur[ord[0]];
+
+ /* If uniquified output is turned on, output only the first of
+ an identical series of lines. */
+ if (unique)
+ {
+ if (savedline && compare (savedline, smallest))
+ {
+ savedline = NULL;
+ write_bytes (saved.text, saved.length, ofp, output_file);
+ }
+ if (!savedline)
+ {
+ savedline = &saved;
+ if (savealloc < smallest->length)
+ {
+ do
+ if (! savealloc)
+ {
+ savealloc = smallest->length;
+ break;
+ }
+ while ((savealloc *= 2) < smallest->length);
+
+ saved.text = xrealloc (saved.text, savealloc);
+ }
+ saved.length = smallest->length;
+ memcpy (saved.text, smallest->text, saved.length);
+ if (key)
+ {
+ saved.keybeg =
+ saved.text + (smallest->keybeg - smallest->text);
+ saved.keylim =
+ saved.text + (smallest->keylim - smallest->text);
+ }
+ }
+ }
+ else
+ write_bytes (smallest->text, smallest->length, ofp, output_file);
+
+ /* Check if we need to read more lines into core. */
+ if (base[ord[0]] < smallest)
+ cur[ord[0]] = smallest - 1;
+ else
+ {
+ if (fillbuf (&buffer[ord[0]], fps[ord[0]], files[ord[0]].name))
+ {
+ struct line const *linelim = buffer_linelim (&buffer[ord[0]]);
+ cur[ord[0]] = linelim - 1;
+ base[ord[0]] = linelim - buffer[ord[0]].nlines;
+ }
+ else
+ {
+ /* We reached EOF on fps[ord[0]]. */
+ for (i = 1; i < nfiles; ++i)
+ if (ord[i] > ord[0])
+ --ord[i];
+ --nfiles;
+ xfclose (fps[ord[0]], files[ord[0]].name);
+ if (ord[0] < ntemps)
+ {
+ ntemps--;
+ zaptemp (files[ord[0]].name);
+ }
+ free (buffer[ord[0]].buf);
+ for (i = ord[0]; i < nfiles; ++i)
+ {
+ fps[i] = fps[i + 1];
+ files[i] = files[i + 1];
+ buffer[i] = buffer[i + 1];
+ cur[i] = cur[i + 1];
+ base[i] = base[i + 1];
+ }
+ for (i = 0; i < nfiles; ++i)
+ ord[i] = ord[i + 1];
+ continue;
+ }
+ }
+
+ /* The new line just read in may be larger than other lines
+ already in main memory; push it back in the queue until we
+ encounter a line larger than it. Optimize for the common
+ case where the new line is smallest. */
+ {
+ size_t lo = 1;
+ size_t hi = nfiles;
+ size_t probe = lo;
+ size_t ord0 = ord[0];
+ size_t count_of_smaller_lines;
+
+ while (lo < hi)
+ {
+ int cmp = compare (cur[ord0], cur[ord[probe]]);
+ if (cmp < 0 || (cmp == 0 && ord0 < ord[probe]))
+ hi = probe;
+ else
+ lo = probe + 1;
+ probe = (lo + hi) / 2;
+ }
+
+ count_of_smaller_lines = lo - 1;
+ for (j = 0; j < count_of_smaller_lines; j++)
+ ord[j] = ord[j + 1];
+ ord[count_of_smaller_lines] = ord0;
+ }
+
+ /* Free up some resources every once in a while. */
+ if (MAX_PROCS_BEFORE_REAP < nprocs)
+ reap_some ();
+ }
+
+ if (unique && savedline)
+ {
+ write_bytes (saved.text, saved.length, ofp, output_file);
+ free (saved.text);
+ }
+
+ xfclose (ofp, output_file);
+}
+
+/* Merge into T the two sorted arrays of lines LO (with NLO members)
+ and HI (with NHI members). T, LO, and HI point just past their
+ respective arrays, and the arrays are in reverse order. NLO and
+ NHI must be positive, and HI - NHI must equal T - (NLO + NHI). */
+
+static inline void
+mergelines (struct line *t,
+ struct line const *lo, size_t nlo,
+ struct line const *hi, size_t nhi)
+{
+ for (;;)
+ if (compare (lo - 1, hi - 1) <= 0)
+ {
+ *--t = *--lo;
+ if (! --nlo)
+ {
+ /* HI - NHI equalled T - (NLO + NHI) when this function
+ began. Therefore HI must equal T now, and there is no
+ need to copy from HI to T. */
+ return;
+ }
+ }
+ else
+ {
+ *--t = *--hi;
+ if (! --nhi)
+ {
+ do
+ *--t = *--lo;
+ while (--nlo);
+
+ return;
+ }
+ }
+}
+
+/* Sort the array LINES with NLINES members, using TEMP for temporary space.
+ NLINES must be at least 2.
+ The input and output arrays are in reverse order, and LINES and
+ TEMP point just past the end of their respective arrays.
+
+ Use a recursive divide-and-conquer algorithm, in the style
+ suggested by Knuth volume 3 (2nd edition), exercise 5.2.4-23. Use
+ the optimization suggested by exercise 5.2.4-10; this requires room
+ for only 1.5*N lines, rather than the usual 2*N lines. Knuth
+ writes that this memory optimization was originally published by
+ D. A. Bell, Comp J. 1 (1958), 75. */
+
+static void
+sortlines (struct line *lines, size_t nlines, struct line *temp)
+{
+ if (nlines == 2)
+ {
+ if (0 < compare (&lines[-1], &lines[-2]))
+ {
+ struct line tmp = lines[-1];
+ lines[-1] = lines[-2];
+ lines[-2] = tmp;
+ }
+ }
+ else
+ {
+ size_t nlo = nlines / 2;
+ size_t nhi = nlines - nlo;
+ struct line *lo = lines;
+ struct line *hi = lines - nlo;
+ struct line *sorted_lo = temp;
+
+ sortlines (hi, nhi, temp);
+ if (1 < nlo)
+ sortlines_temp (lo, nlo, sorted_lo);
+ else
+ sorted_lo[-1] = lo[-1];
+
+ mergelines (lines, sorted_lo, nlo, hi, nhi);
+ }
+}
+
+/* Like sortlines (LINES, NLINES, TEMP), except output into TEMP
+ rather than sorting in place. */
+
+static void
+sortlines_temp (struct line *lines, size_t nlines, struct line *temp)
+{
+ if (nlines == 2)
+ {
+ /* Declare `swap' as int, not bool, to work around a bug
+ <http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html>
+ in the IBM xlc 6.0.0.0 compiler in 64-bit mode. */
+ int swap = (0 < compare (&lines[-1], &lines[-2]));
+ temp[-1] = lines[-1 - swap];
+ temp[-2] = lines[-2 + swap];
+ }
+ else
+ {
+ size_t nlo = nlines / 2;
+ size_t nhi = nlines - nlo;
+ struct line *lo = lines;
+ struct line *hi = lines - nlo;
+ struct line *sorted_hi = temp - nlo;
+
+ sortlines_temp (hi, nhi, sorted_hi);
+ if (1 < nlo)
+ sortlines (lo, nlo, temp);
+
+ mergelines (temp, lo, nlo, sorted_hi, nhi);
+ }
+}
+
+/* Scan through FILES[NTEMPS .. NFILES-1] looking for a file that is
+ the same as OUTFILE. If found, merge the found instances (and perhaps
+ some other files) into a temporary file so that it can in turn be
+ merged into OUTFILE without destroying OUTFILE before it is completely
+ read. Return the new value of NFILES, which differs from the old if
+ some merging occurred.
+
+ This test ensures that an otherwise-erroneous use like
+ "sort -m -o FILE ... FILE ..." copies FILE before writing to it.
+ It's not clear that POSIX requires this nicety.
+ Detect common error cases, but don't try to catch obscure cases like
+ "cat ... FILE ... | sort -m -o FILE"
+ where traditional "sort" doesn't copy the input and where
+ people should know that they're getting into trouble anyway.
+ Catching these obscure cases would slow down performance in
+ common cases. */
+
+static size_t
+avoid_trashing_input (struct sortfile *files, size_t ntemps,
+ size_t nfiles, char const *outfile)
+{
+ size_t i;
+ bool got_outstat = false;
+ struct stat outstat;
+
+ for (i = ntemps; i < nfiles; i++)
+ {
+ bool is_stdin = STREQ (files[i].name, "-");
+ bool same;
+ struct stat instat;
+
+ if (outfile && STREQ (outfile, files[i].name) && !is_stdin)
+ same = true;
+ else
+ {
+ if (! got_outstat)
+ {
+ if ((outfile
+ ? stat (outfile, &outstat)
+ : fstat (STDOUT_FILENO, &outstat))
+ != 0)
+ break;
+ got_outstat = true;
+ }
+
+ same = (((is_stdin
+ ? fstat (STDIN_FILENO, &instat)
+ : stat (files[i].name, &instat))
+ == 0)
+ && SAME_INODE (instat, outstat));
+ }
+
+ if (same)
+ {
+ FILE *tftp;
+ pid_t pid;
+ char *temp = create_temp (&tftp, &pid);
+ mergefps (&files[i],0, nfiles - i, tftp, temp);
+ files[i].name = temp;
+ files[i].pid = pid;
+ return i + 1;
+ }
+ }
+
+ return nfiles;
+}
+
+/* Merge the input FILES. NTEMPS is the number of files at the
+ start of FILES that are temporary; it is zero at the top level.
+ NFILES is the total number of files. Put the output in
+ OUTPUT_FILE; a null OUTPUT_FILE stands for standard output. */
+
+static void
+merge (struct sortfile *files, size_t ntemps, size_t nfiles,
+ char const *output_file)
+{
+ while (NMERGE < nfiles)
+ {
+ /* Number of input files processed so far. */
+ size_t in;
+
+ /* Number of output files generated so far. */
+ size_t out;
+
+ /* nfiles % NMERGE; this counts input files that are left over
+ after all full-sized merges have been done. */
+ size_t remainder;
+
+ /* Number of easily-available slots at the next loop iteration. */
+ size_t cheap_slots;
+
+ /* Do as many NMERGE-size merges as possible. */
+ for (out = in = 0; out < nfiles / NMERGE; out++, in += NMERGE)
+ {
+ FILE *tfp;
+ pid_t pid;
+ char *temp = create_temp (&tfp, &pid);
+ size_t nt = MIN (ntemps, NMERGE);
+ ntemps -= nt;
+ mergefps (&files[in], nt, NMERGE, tfp, temp);
+ files[out].name = temp;
+ files[out].pid = pid;
+ }
+
+ remainder = nfiles - in;
+ cheap_slots = NMERGE - out % NMERGE;
+
+ if (cheap_slots < remainder)
+ {
+ /* So many files remain that they can't all be put into the last
+ NMERGE-sized output window. Do one more merge. Merge as few
+ files as possible, to avoid needless I/O. */
+ size_t nshortmerge = remainder - cheap_slots + 1;
+ FILE *tfp;
+ pid_t pid;
+ char *temp = create_temp (&tfp, &pid);
+ size_t nt = MIN (ntemps, nshortmerge);
+ ntemps -= nt;
+ mergefps (&files[in], nt, nshortmerge, tfp, temp);
+ files[out].name = temp;
+ files[out++].pid = pid;
+ in += nshortmerge;
+ }
+
+ /* Put the remaining input files into the last NMERGE-sized output
+ window, so they will be merged in the next pass. */
+ memmove(&files[out], &files[in], (nfiles - in) * sizeof *files);
+ ntemps += out;
+ nfiles -= in - out;
+ }
+
+ nfiles = avoid_trashing_input (files, ntemps, nfiles, output_file);
+ mergefps (files, ntemps, nfiles, NULL, output_file);
+}
+
+/* Sort NFILES FILES onto OUTPUT_FILE. */
+
+static void
+sort (char * const *files, size_t nfiles, char const *output_file)
+{
+ struct buffer buf;
+ size_t ntemps = 0;
+ bool output_file_created = false;
+
+ buf.alloc = 0;
+
+ while (nfiles)
+ {
+ char const *temp_output;
+ char const *file = *files;
+ FILE *fp = xfopen (file, "r");
+ FILE *tfp;
+ size_t bytes_per_line = (2 * sizeof (struct line)
+ - sizeof (struct line) / 2);
+
+ if (! buf.alloc)
+ initbuf (&buf, bytes_per_line,
+ sort_buffer_size (&fp, 1, files, nfiles, bytes_per_line));
+ buf.eof = false;
+ files++;
+ nfiles--;
+
+ while (fillbuf (&buf, fp, file))
+ {
+ struct line *line;
+ struct line *linebase;
+
+ if (buf.eof && nfiles
+ && (bytes_per_line + 1
+ < (buf.alloc - buf.used - bytes_per_line * buf.nlines)))
+ {
+ /* End of file, but there is more input and buffer room.
+ Concatenate the next input file; this is faster in
+ the usual case. */
+ buf.left = buf.used;
+ break;
+ }
+
+ line = buffer_linelim (&buf);
+ linebase = line - buf.nlines;
+ if (1 < buf.nlines)
+ sortlines (line, buf.nlines, linebase);
+ if (buf.eof && !nfiles && !ntemps && !buf.left)
+ {
+ xfclose (fp, file);
+ tfp = xfopen (output_file, "w");
+ temp_output = output_file;
+ output_file_created = true;
+ }
+ else
+ {
+ ++ntemps;
+ temp_output = create_temp (&tfp, NULL);
+ }
+
+ do
+ {
+ line--;
+ write_bytes (line->text, line->length, tfp, temp_output);
+ if (unique)
+ while (linebase < line && compare (line, line - 1) == 0)
+ line--;
+ }
+ while (linebase < line);
+
+ xfclose (tfp, temp_output);
+
+ /* Free up some resources every once in a while. */
+ if (MAX_PROCS_BEFORE_REAP < nprocs)
+ reap_some ();
+
+ if (output_file_created)
+ goto finish;
+ }
+ xfclose (fp, file);
+ }
+
+ finish:
+ free (buf.buf);
+
+ if (! output_file_created)
+ {
+ size_t i;
+ struct tempnode *node = temphead;
+ struct sortfile *tempfiles = xnmalloc (ntemps, sizeof *tempfiles);
+ for (i = 0; node; i++)
+ {
+ tempfiles[i].name = node->name;
+ tempfiles[i].pid = node->pid;
+ node = node->next;
+ }
+ merge (tempfiles, ntemps, ntemps, output_file);
+ free (tempfiles);
+ }
+}
+
+/* Insert a malloc'd copy of key KEY_ARG at the end of the key list. */
+
+static void
+insertkey (struct keyfield *key_arg)
+{
+ struct keyfield **p;
+ struct keyfield *key = xmemdup (key_arg, sizeof *key);
+
+ for (p = &keylist; *p; p = &(*p)->next)
+ continue;
+ *p = key;
+ key->next = NULL;
+}
+
+/* Report a bad field specification SPEC, with extra info MSGID. */
+
+static void badfieldspec (char const *, char const *)
+ ATTRIBUTE_NORETURN;
+static void
+badfieldspec (char const *spec, char const *msgid)
+{
+ error (SORT_FAILURE, 0, _("%s: invalid field specification %s"),
+ _(msgid), quote (spec));
+ abort ();
+}
+
+/* Report incompatible options. */
+
+static void incompatible_options (char const *) ATTRIBUTE_NORETURN;
+static void
+incompatible_options (char const *opts)
+{
+ error (SORT_FAILURE, 0, _("options `-%s' are incompatible"), opts);
+ abort ();
+}
+
+/* Check compatibility of ordering options. */
+
+static void
+check_ordering_compatibility (void)
+{
+ struct keyfield const *key;
+
+ for (key = keylist; key; key = key->next)
+ if ((1 < (key->random + key->numeric + key->general_numeric + key->month
+ + !!key->ignore))
+ || (key->random && key->translate))
+ {
+ char opts[7];
+ char *p = opts;
+ if (key->ignore == nondictionary)
+ *p++ = 'd';
+ if (key->translate)
+ *p++ = 'f';
+ if (key->general_numeric)
+ *p++ = 'g';
+ if (key->ignore == nonprinting)
+ *p++ = 'i';
+ if (key->month)
+ *p++ = 'M';
+ if (key->numeric)
+ *p++ = 'n';
+ if (key->random)
+ *p++ = 'R';
+ *p = '\0';
+ incompatible_options (opts);
+ }
+}
+
+/* Parse the leading integer in STRING and store the resulting value
+ (which must fit into size_t) into *VAL. Return the address of the
+ suffix after the integer. If the value is too large, silently
+ substitute SIZE_MAX. If MSGID is NULL, return NULL after
+ failure; otherwise, report MSGID and exit on failure. */
+
+static char const *
+parse_field_count (char const *string, size_t *val, char const *msgid)
+{
+ char *suffix;
+ uintmax_t n;
+
+ switch (xstrtoumax (string, &suffix, 10, &n, ""))
+ {
+ case LONGINT_OK:
+ case LONGINT_INVALID_SUFFIX_CHAR:
+ *val = n;
+ if (*val == n)
+ break;
+ /* Fall through. */
+ case LONGINT_OVERFLOW:
+ case LONGINT_OVERFLOW | LONGINT_INVALID_SUFFIX_CHAR:
+ *val = SIZE_MAX;
+ break;
+
+ case LONGINT_INVALID:
+ if (msgid)
+ error (SORT_FAILURE, 0, _("%s: invalid count at start of %s"),
+ _(msgid), quote (string));
+ return NULL;
+ }
+
+ return suffix;
+}
+
+/* Handle interrupts and hangups. */
+
+static void
+sighandler (int sig)
+{
+ if (! SA_NOCLDSTOP)
+ signal (sig, SIG_IGN);
+
+ cleanup ();
+
+ signal (sig, SIG_DFL);
+ raise (sig);
+}
+
+/* Set the ordering options for KEY specified in S.
+ Return the address of the first character in S that
+ is not a valid ordering option.
+ BLANKTYPE is the kind of blanks that 'b' should skip. */
+
+static char *
+set_ordering (const char *s, struct keyfield *key, enum blanktype blanktype)
+{
+ while (*s)
+ {
+ switch (*s)
+ {
+ case 'b':
+ if (blanktype == bl_start || blanktype == bl_both)
+ key->skipsblanks = true;
+ if (blanktype == bl_end || blanktype == bl_both)
+ key->skipeblanks = true;
+ break;
+ case 'd':
+ key->ignore = nondictionary;
+ break;
+ case 'f':
+ key->translate = fold_toupper;
+ break;
+ case 'g':
+ key->general_numeric = true;
+ break;
+ case 'i':
+ /* Option order should not matter, so don't let -i override
+ -d. -d implies -i, but -i does not imply -d. */
+ if (! key->ignore)
+ key->ignore = nonprinting;
+ break;
+ case 'M':
+ key->month = true;
+ break;
+ case 'n':
+ key->numeric = true;
+ break;
+ case 'R':
+ key->random = true;
+ break;
+ case 'r':
+ key->reverse = true;
+ break;
+ default:
+ return (char *) s;
+ }
+ ++s;
+ }
+ return (char *) s;
+}
+
+static struct keyfield *
+key_init (struct keyfield *key)
+{
+ memset (key, 0, sizeof *key);
+ key->eword = SIZE_MAX;
+ return key;
+}
+
+int
+main (int argc, char **argv)
+{
+ struct keyfield *key;
+ struct keyfield key_buf;
+ struct keyfield gkey;
+ char const *s;
+ int c = 0;
+ char checkonly = 0;
+ bool mergeonly = false;
+ char *random_source = NULL;
+ bool need_random = false;
+ size_t nfiles = 0;
+ bool posixly_correct = (getenv ("POSIXLY_CORRECT") != NULL);
+ bool obsolete_usage = (posix2_version () < 200112);
+ char **files;
+ char const *outfile = NULL;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ initialize_exit_failure (SORT_FAILURE);
+
+ hard_LC_COLLATE = hard_locale (LC_COLLATE);
+#if HAVE_NL_LANGINFO
+ hard_LC_TIME = hard_locale (LC_TIME);
+#endif
+
+ /* Get locale's representation of the decimal point. */
+ {
+ struct lconv const *locale = localeconv ();
+
+ /* If the locale doesn't define a decimal point, or if the decimal
+ point is multibyte, use the C locale's decimal point. FIXME:
+ add support for multibyte decimal points. */
+ decimal_point = to_uchar (locale->decimal_point[0]);
+ if (! decimal_point || locale->decimal_point[1])
+ decimal_point = '.';
+
+ /* FIXME: add support for multibyte thousands separators. */
+ thousands_sep = to_uchar (*locale->thousands_sep);
+ if (! thousands_sep || locale->thousands_sep[1])
+ thousands_sep = -1;
+ }
+
+ have_read_stdin = false;
+ inittables ();
+
+ {
+ size_t i;
+ static int const sig[] =
+ {
+ /* The usual suspects. */
+ SIGALRM, SIGHUP, SIGINT, SIGPIPE, SIGQUIT, SIGTERM,
+#ifdef SIGPOLL
+ SIGPOLL,
+#endif
+#ifdef SIGPROF
+ SIGPROF,
+#endif
+#ifdef SIGVTALRM
+ SIGVTALRM,
+#endif
+#ifdef SIGXCPU
+ SIGXCPU,
+#endif
+#ifdef SIGXFSZ
+ SIGXFSZ,
+#endif
+ };
+ enum { nsigs = sizeof sig / sizeof sig[0] };
+
+#if SA_NOCLDSTOP
+ struct sigaction act;
+
+ sigemptyset (&caught_signals);
+ for (i = 0; i < nsigs; i++)
+ {
+ sigaction (sig[i], NULL, &act);
+ if (act.sa_handler != SIG_IGN)
+ sigaddset (&caught_signals, sig[i]);
+ }
+
+ act.sa_handler = sighandler;
+ act.sa_mask = caught_signals;
+ act.sa_flags = 0;
+
+ for (i = 0; i < nsigs; i++)
+ if (sigismember (&caught_signals, sig[i]))
+ sigaction (sig[i], &act, NULL);
+#else
+ for (i = 0; i < nsigs; i++)
+ if (signal (sig[i], SIG_IGN) != SIG_IGN)
+ {
+ signal (sig[i], sighandler);
+ siginterrupt (sig[i], 1);
+ }
+#endif
+ }
+
+ /* The signal mask is known, so it is safe to invoke exit_cleanup. */
+ atexit (exit_cleanup);
+
+ gkey.sword = gkey.eword = SIZE_MAX;
+ gkey.ignore = NULL;
+ gkey.translate = NULL;
+ gkey.numeric = gkey.general_numeric = gkey.random = false;
+ gkey.month = gkey.reverse = false;
+ gkey.skipsblanks = gkey.skipeblanks = false;
+
+ files = xnmalloc (argc, sizeof *files);
+
+ for (;;)
+ {
+ /* Parse an operand as a file after "--" was seen; or if
+ pedantic and a file was seen, unless the POSIX version
+ predates 1003.1-2001 and -c was not seen and the operand is
+ "-o FILE" or "-oFILE". */
+
+ if (c == -1
+ || (posixly_correct && nfiles != 0
+ && ! (obsolete_usage
+ && ! checkonly
+ && optind != argc
+ && argv[optind][0] == '-' && argv[optind][1] == 'o'
+ && (argv[optind][2] || optind + 1 != argc)))
+ || ((c = getopt_long (argc, argv, short_options,
+ long_options, NULL))
+ == -1))
+ {
+ if (argc <= optind)
+ break;
+ files[nfiles++] = argv[optind++];
+ }
+ else switch (c)
+ {
+ case 1:
+ key = NULL;
+ if (optarg[0] == '+')
+ {
+ bool minus_pos_usage = (optind != argc && argv[optind][0] == '-'
+ && ISDIGIT (argv[optind][1]));
+ obsolete_usage |= minus_pos_usage & ~posixly_correct;
+ if (obsolete_usage)
+ {
+ /* Treat +POS1 [-POS2] as a key if possible; but silently
+ treat an operand as a file if it is not a valid +POS1. */
+ key = key_init (&key_buf);
+ s = parse_field_count (optarg + 1, &key->sword, NULL);
+ if (s && *s == '.')
+ s = parse_field_count (s + 1, &key->schar, NULL);
+ if (! (key->sword | key->schar))
+ key->sword = SIZE_MAX;
+ if (! s || *set_ordering (s, key, bl_start))
+ {
+ free (key);
+ key = NULL;
+ }
+ else
+ {
+ if (minus_pos_usage)
+ {
+ char const *optarg1 = argv[optind++];
+ s = parse_field_count (optarg1 + 1, &key->eword,
+ N_("invalid number after `-'"));
+ if (*s == '.')
+ s = parse_field_count (s + 1, &key->echar,
+ N_("invalid number after `.'"));
+ if (*set_ordering (s, key, bl_end))
+ badfieldspec (optarg1,
+ N_("stray character in field spec"));
+ }
+ insertkey (key);
+ }
+ }
+ }
+ if (! key)
+ files[nfiles++] = optarg;
+ break;
+
+ case 'b':
+ case 'd':
+ case 'f':
+ case 'g':
+ case 'i':
+ case 'M':
+ case 'n':
+ case 'r':
+ case 'R':
+ {
+ char str[2];
+ str[0] = c;
+ str[1] = '\0';
+ set_ordering (str, &gkey, bl_both);
+ }
+ break;
+
+ case CHECK_OPTION:
+ c = (optarg
+ ? XARGMATCH ("--check", optarg, check_args, check_types)
+ : 'c');
+ /* Fall through. */
+ case 'c':
+ case 'C':
+ if (checkonly && checkonly != c)
+ incompatible_options ("cC");
+ checkonly = c;
+ break;
+
+ case COMPRESS_PROGRAM_OPTION:
+ if (compress_program && strcmp (compress_program, optarg) != 0)
+ error (SORT_FAILURE, 0, _("multiple compress programs specified"));
+ compress_program = optarg;
+ break;
+
+ case 'k':
+ key = key_init (&key_buf);
+
+ /* Get POS1. */
+ s = parse_field_count (optarg, &key->sword,
+ N_("invalid number at field start"));
+ if (! key->sword--)
+ {
+ /* Provoke with `sort -k0' */
+ badfieldspec (optarg, N_("field number is zero"));
+ }
+ if (*s == '.')
+ {
+ s = parse_field_count (s + 1, &key->schar,
+ N_("invalid number after `.'"));
+ if (! key->schar--)
+ {
+ /* Provoke with `sort -k1.0' */
+ badfieldspec (optarg, N_("character offset is zero"));
+ }
+ }
+ if (! (key->sword | key->schar))
+ key->sword = SIZE_MAX;
+ s = set_ordering (s, key, bl_start);
+ if (*s != ',')
+ {
+ key->eword = SIZE_MAX;
+ key->echar = 0;
+ }
+ else
+ {
+ /* Get POS2. */
+ s = parse_field_count (s + 1, &key->eword,
+ N_("invalid number after `,'"));
+ if (! key->eword--)
+ {
+ /* Provoke with `sort -k1,0' */
+ badfieldspec (optarg, N_("field number is zero"));
+ }
+ if (*s == '.')
+ s = parse_field_count (s + 1, &key->echar,
+ N_("invalid number after `.'"));
+ else
+ {
+ /* `-k 2,3' is equivalent to `+1 -3'. */
+ key->eword++;
+ }
+ s = set_ordering (s, key, bl_end);
+ }
+ if (*s)
+ badfieldspec (optarg, N_("stray character in field spec"));
+ insertkey (key);
+ break;
+
+ case 'm':
+ mergeonly = true;
+ break;
+
+ case 'o':
+ if (outfile && !STREQ (outfile, optarg))
+ error (SORT_FAILURE, 0, _("multiple output files specified"));
+ outfile = optarg;
+ break;
+
+ case RANDOM_SOURCE_OPTION:
+ if (random_source && !STREQ (random_source, optarg))
+ error (SORT_FAILURE, 0, _("multiple random sources specified"));
+ random_source = optarg;
+ break;
+
+ case 's':
+ stable = true;
+ break;
+
+ case 'S':
+ specify_sort_size (optarg);
+ break;
+
+ case 't':
+ {
+ char newtab = optarg[0];
+ if (! newtab)
+ error (SORT_FAILURE, 0, _("empty tab"));
+ if (optarg[1])
+ {
+ if (STREQ (optarg, "\\0"))
+ newtab = '\0';
+ else
+ {
+ /* Provoke with `sort -txx'. Complain about
+ "multi-character tab" instead of "multibyte tab", so
+ that the diagnostic's wording does not need to be
+ changed once multibyte characters are supported. */
+ error (SORT_FAILURE, 0, _("multi-character tab %s"),
+ quote (optarg));
+ }
+ }
+ if (tab != TAB_DEFAULT && tab != newtab)
+ error (SORT_FAILURE, 0, _("incompatible tabs"));
+ tab = newtab;
+ }
+ break;
+
+ case 'T':
+ add_temp_dir (optarg);
+ break;
+
+ case 'u':
+ unique = true;
+ break;
+
+ case 'y':
+ /* Accept and ignore e.g. -y0 for compatibility with Solaris 2.x
+ through Solaris 7. It is also accepted by many non-Solaris
+ "sort" implementations, e.g., AIX 5.2, HP-UX 11i v2, IRIX 6.5.
+ -y is marked as obsolete starting with Solaris 8 (1999), but is
+ still accepted as of Solaris 10 prerelease (2004).
+
+ Solaris 2.5.1 "sort -y 100" reads the input file "100", but
+ emulate Solaris 8 and 9 "sort -y 100" which ignores the "100",
+ and which in general ignores the argument after "-y" if it
+ consists entirely of digits (it can even be empty). */
+ if (optarg == argv[optind - 1])
+ {
+ char const *p;
+ for (p = optarg; ISDIGIT (*p); p++)
+ continue;
+ optind -= (*p != '\0');
+ }
+ break;
+
+ case 'z':
+ eolchar = 0;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (SORT_FAILURE);
+ }
+ }
+
+ /* Inheritance of global options to individual keys. */
+ for (key = keylist; key; key = key->next)
+ {
+ if (! (key->ignore || key->translate
+ || (key->skipsblanks | key->reverse
+ | key->skipeblanks | key->month | key->numeric
+ | key->general_numeric
+ | key->random)))
+ {
+ key->ignore = gkey.ignore;
+ key->translate = gkey.translate;
+ key->skipsblanks = gkey.skipsblanks;
+ key->skipeblanks = gkey.skipeblanks;
+ key->month = gkey.month;
+ key->numeric = gkey.numeric;
+ key->general_numeric = gkey.general_numeric;
+ key->random = gkey.random;
+ key->reverse = gkey.reverse;
+ }
+
+ need_random |= key->random;
+ }
+
+ if (!keylist && (gkey.ignore || gkey.translate
+ || (gkey.skipsblanks | gkey.skipeblanks | gkey.month
+ | gkey.numeric | gkey.general_numeric
+ | gkey.random)))
+ {
+ insertkey (&gkey);
+ need_random |= gkey.random;
+ }
+
+ check_ordering_compatibility ();
+
+ reverse = gkey.reverse;
+
+ if (need_random)
+ {
+ randread_source = randread_new (random_source, MD5_DIGEST_SIZE);
+ if (! randread_source)
+ die (_("open failed"), random_source);
+ }
+
+ if (temp_dir_count == 0)
+ {
+ char const *tmp_dir = getenv ("TMPDIR");
+ add_temp_dir (tmp_dir ? tmp_dir : DEFAULT_TMPDIR);
+ }
+
+ if (nfiles == 0)
+ {
+ static char *minus = "-";
+ nfiles = 1;
+ free (files);
+ files = &minus;
+ }
+
+ if (checkonly)
+ {
+ if (nfiles > 1)
+ error (SORT_FAILURE, 0, _("extra operand %s not allowed with -%c"),
+ quote (files[1]), checkonly);
+
+ if (outfile)
+ {
+ static char opts[] = {0, 'o', 0};
+ opts[0] = checkonly;
+ incompatible_options (opts);
+ }
+
+ /* POSIX requires that sort return 1 IFF invoked with -c or -C and the
+ input is not properly sorted. */
+ exit (check (files[0], checkonly) ? EXIT_SUCCESS : SORT_OUT_OF_ORDER);
+ }
+
+ if (mergeonly)
+ {
+ struct sortfile *sortfiles = xcalloc (nfiles, sizeof *sortfiles);
+ size_t i;
+
+ for (i = 0; i < nfiles; ++i)
+ sortfiles[i].name = files[i];
+
+ merge (sortfiles, 0, nfiles, outfile);
+ }
+ else
+ sort (files, nfiles, outfile);
+
+ if (have_read_stdin && fclose (stdin) == EOF)
+ die (_("close failed"), "-");
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/split.c b/src/split.c
new file mode 100644
index 0000000..1f0f3d7
--- /dev/null
+++ b/src/split.c
@@ -0,0 +1,582 @@
+/* split.c -- split a file into pieces.
+ Copyright (C) 1988, 1991, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* By tege@sics.se, with rms.
+
+ To do:
+ * Implement -t CHAR or -t REGEX to specify break characters other
+ than newline. */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "error.h"
+#include "fd-reopen.h"
+#include "fcntl--.h"
+#include "getpagesize.h"
+#include "full-read.h"
+#include "full-write.h"
+#include "inttostr.h"
+#include "quote.h"
+#include "safe-read.h"
+#include "xstrtol.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "split"
+
+#define AUTHORS "Torbjorn Granlund", "Richard M. Stallman"
+
+#define DEFAULT_SUFFIX_LENGTH 2
+
+/* The name this program was run with. */
+char *program_name;
+
+/* Base name of output files. */
+static char const *outbase;
+
+/* Name of output files. */
+static char *outfile;
+
+/* Pointer to the end of the prefix in OUTFILE.
+ Suffixes are inserted here. */
+static char *outfile_mid;
+
+/* Length of OUTFILE's suffix. */
+static size_t suffix_length = DEFAULT_SUFFIX_LENGTH;
+
+/* Alphabet of characters to use in suffix. */
+static char const *suffix_alphabet = "abcdefghijklmnopqrstuvwxyz";
+
+/* Name of input file. May be "-". */
+static char *infile;
+
+/* Descriptor on which output file is open. */
+static int output_desc;
+
+/* If true, print a diagnostic on standard error just before each
+ output file is opened. */
+static bool verbose;
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ VERBOSE_OPTION = CHAR_MAX + 1
+};
+
+static struct option const longopts[] =
+{
+ {"bytes", required_argument, NULL, 'b'},
+ {"lines", required_argument, NULL, 'l'},
+ {"line-bytes", required_argument, NULL, 'C'},
+ {"suffix-length", required_argument, NULL, 'a'},
+ {"numeric-suffixes", no_argument, NULL, 'd'},
+ {"verbose", no_argument, NULL, VERBOSE_OPTION},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION] [INPUT [PREFIX]]\n\
+"),
+ program_name);
+ fputs (_("\
+Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default\n\
+size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when INPUT\n\
+is -, read standard input.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fprintf (stdout, _("\
+ -a, --suffix-length=N use suffixes of length N (default %d)\n\
+ -b, --bytes=SIZE put SIZE bytes per output file\n\
+ -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file\n\
+ -d, --numeric-suffixes use numeric suffixes instead of alphabetic\n\
+ -l, --lines=NUMBER put NUMBER lines per output file\n\
+"), DEFAULT_SUFFIX_LENGTH);
+ fputs (_("\
+ --verbose print a diagnostic to standard error just\n\
+ before each output file is opened\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+SIZE may have a multiplier suffix: b for 512, k for 1K, m for 1 Meg.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Compute the next sequential output file name and store it into the
+ string `outfile'. */
+
+static void
+next_file_name (void)
+{
+ /* Index in suffix_alphabet of each character in the suffix. */
+ static size_t *sufindex;
+
+ if (! outfile)
+ {
+ /* Allocate and initialize the first file name. */
+
+ size_t outbase_length = strlen (outbase);
+ size_t outfile_length = outbase_length + suffix_length;
+ if (outfile_length + 1 < outbase_length)
+ xalloc_die ();
+ outfile = xmalloc (outfile_length + 1);
+ outfile_mid = outfile + outbase_length;
+ memcpy (outfile, outbase, outbase_length);
+ memset (outfile_mid, suffix_alphabet[0], suffix_length);
+ outfile[outfile_length] = 0;
+ sufindex = xcalloc (suffix_length, sizeof *sufindex);
+
+#if ! _POSIX_NO_TRUNC && HAVE_PATHCONF && defined _PC_NAME_MAX
+ /* POSIX requires that if the output file name is too long for
+ its directory, `split' must fail without creating any files.
+ This must be checked for explicitly on operating systems that
+ silently truncate file names. */
+ {
+ char *dir = dir_name (outfile);
+ long name_max = pathconf (dir, _PC_NAME_MAX);
+ if (0 <= name_max && name_max < base_len (last_component (outfile)))
+ error (EXIT_FAILURE, ENAMETOOLONG, "%s", outfile);
+ free (dir);
+ }
+#endif
+ }
+ else
+ {
+ /* Increment the suffix in place, if possible. */
+
+ size_t i = suffix_length;
+ while (i-- != 0)
+ {
+ sufindex[i]++;
+ outfile_mid[i] = suffix_alphabet[sufindex[i]];
+ if (outfile_mid[i])
+ return;
+ sufindex[i] = 0;
+ outfile_mid[i] = suffix_alphabet[sufindex[i]];
+ }
+ error (EXIT_FAILURE, 0, _("Output file suffixes exhausted"));
+ }
+}
+
+/* Write BYTES bytes at BP to an output file.
+ If NEW_FILE_FLAG is true, open the next output file.
+ Otherwise add to the same output file already in use. */
+
+static void
+cwrite (bool new_file_flag, const char *bp, size_t bytes)
+{
+ if (new_file_flag)
+ {
+ if (output_desc >= 0 && close (output_desc) < 0)
+ error (EXIT_FAILURE, errno, "%s", outfile);
+
+ next_file_name ();
+ if (verbose)
+ fprintf (stderr, _("creating file %s\n"), quote (outfile));
+ output_desc = open (outfile,
+ O_WRONLY | O_CREAT | O_TRUNC | O_BINARY,
+ (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP
+ | S_IROTH | S_IWOTH));
+ if (output_desc < 0)
+ error (EXIT_FAILURE, errno, "%s", outfile);
+ }
+ if (full_write (output_desc, bp, bytes) != bytes)
+ error (EXIT_FAILURE, errno, "%s", outfile);
+}
+
+/* Split into pieces of exactly N_BYTES bytes.
+ Use buffer BUF, whose size is BUFSIZE. */
+
+static void
+bytes_split (uintmax_t n_bytes, char *buf, size_t bufsize)
+{
+ size_t n_read;
+ bool new_file_flag = true;
+ size_t to_read;
+ uintmax_t to_write = n_bytes;
+ char *bp_out;
+
+ do
+ {
+ n_read = full_read (STDIN_FILENO, buf, bufsize);
+ if (n_read == SAFE_READ_ERROR)
+ error (EXIT_FAILURE, errno, "%s", infile);
+ bp_out = buf;
+ to_read = n_read;
+ for (;;)
+ {
+ if (to_read < to_write)
+ {
+ if (to_read) /* do not write 0 bytes! */
+ {
+ cwrite (new_file_flag, bp_out, to_read);
+ to_write -= to_read;
+ new_file_flag = false;
+ }
+ break;
+ }
+ else
+ {
+ size_t w = to_write;
+ cwrite (new_file_flag, bp_out, w);
+ bp_out += w;
+ to_read -= w;
+ new_file_flag = true;
+ to_write = n_bytes;
+ }
+ }
+ }
+ while (n_read == bufsize);
+}
+
+/* Split into pieces of exactly N_LINES lines.
+ Use buffer BUF, whose size is BUFSIZE. */
+
+static void
+lines_split (uintmax_t n_lines, char *buf, size_t bufsize)
+{
+ size_t n_read;
+ char *bp, *bp_out, *eob;
+ bool new_file_flag = true;
+ uintmax_t n = 0;
+
+ do
+ {
+ n_read = full_read (STDIN_FILENO, buf, bufsize);
+ if (n_read == SAFE_READ_ERROR)
+ error (EXIT_FAILURE, errno, "%s", infile);
+ bp = bp_out = buf;
+ eob = bp + n_read;
+ *eob = '\n';
+ for (;;)
+ {
+ bp = memchr (bp, '\n', eob - bp + 1);
+ if (bp == eob)
+ {
+ if (eob != bp_out) /* do not write 0 bytes! */
+ {
+ size_t len = eob - bp_out;
+ cwrite (new_file_flag, bp_out, len);
+ new_file_flag = false;
+ }
+ break;
+ }
+
+ ++bp;
+ if (++n >= n_lines)
+ {
+ cwrite (new_file_flag, bp_out, bp - bp_out);
+ bp_out = bp;
+ new_file_flag = true;
+ n = 0;
+ }
+ }
+ }
+ while (n_read == bufsize);
+}
+
+/* Split into pieces that are as large as possible while still not more
+ than N_BYTES bytes, and are split on line boundaries except
+ where lines longer than N_BYTES bytes occur.
+ FIXME: Allow N_BYTES to be any uintmax_t value, and don't require a
+ buffer of size N_BYTES, in case N_BYTES is very large. */
+
+static void
+line_bytes_split (size_t n_bytes)
+{
+ size_t n_read;
+ char *bp;
+ bool eof = false;
+ size_t n_buffered = 0;
+ char *buf = xmalloc (n_bytes);
+
+ do
+ {
+ /* Fill up the full buffer size from the input file. */
+
+ n_read = full_read (STDIN_FILENO, buf + n_buffered, n_bytes - n_buffered);
+ if (n_read == SAFE_READ_ERROR)
+ error (EXIT_FAILURE, errno, "%s", infile);
+
+ n_buffered += n_read;
+ if (n_buffered != n_bytes)
+ eof = true;
+
+ /* Find where to end this chunk. */
+ bp = buf + n_buffered;
+ if (n_buffered == n_bytes)
+ {
+ while (bp > buf && bp[-1] != '\n')
+ bp--;
+ }
+
+ /* If chunk has no newlines, use all the chunk. */
+ if (bp == buf)
+ bp = buf + n_buffered;
+
+ /* Output the chars as one output file. */
+ cwrite (true, buf, bp - buf);
+
+ /* Discard the chars we just output; move rest of chunk
+ down to be the start of the next chunk. Source and
+ destination probably overlap. */
+ n_buffered -= bp - buf;
+ if (n_buffered > 0)
+ memmove (buf, bp, n_buffered);
+ }
+ while (!eof);
+ free (buf);
+}
+
+#define FAIL_ONLY_ONE_WAY() \
+ do \
+ { \
+ error (0, 0, _("cannot split in more than one way")); \
+ usage (EXIT_FAILURE); \
+ } \
+ while (0)
+
+int
+main (int argc, char **argv)
+{
+ struct stat stat_buf;
+ enum
+ {
+ type_undef, type_bytes, type_byteslines, type_lines, type_digits
+ } split_type = type_undef;
+ size_t in_blk_size; /* optimal block size of input file device */
+ char *buf; /* file i/o buffer */
+ size_t page_size = getpagesize ();
+ uintmax_t n_units;
+ int c;
+ int digits_optind = 0;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ /* Parse command line options. */
+
+ infile = "-";
+ outbase = "x";
+
+ while (1)
+ {
+ /* This is the argv-index of the option we will read next. */
+ int this_optind = optind ? optind : 1;
+
+ c = getopt_long (argc, argv, "0123456789C:a:b:dl:", longopts, NULL);
+ if (c == -1)
+ break;
+
+ switch (c)
+ {
+ case 'a':
+ {
+ unsigned long tmp;
+ if (xstrtoul (optarg, NULL, 10, &tmp, "") != LONGINT_OK
+ || SIZE_MAX / sizeof (size_t) < tmp)
+ {
+ error (0, 0, _("%s: invalid suffix length"), optarg);
+ usage (EXIT_FAILURE);
+ }
+ suffix_length = tmp;
+ }
+ break;
+
+ case 'b':
+ if (split_type != type_undef)
+ FAIL_ONLY_ONE_WAY ();
+ split_type = type_bytes;
+ if (xstrtoumax (optarg, NULL, 10, &n_units, "bkm") != LONGINT_OK
+ || n_units == 0)
+ {
+ error (0, 0, _("%s: invalid number of bytes"), optarg);
+ usage (EXIT_FAILURE);
+ }
+ break;
+
+ case 'l':
+ if (split_type != type_undef)
+ FAIL_ONLY_ONE_WAY ();
+ split_type = type_lines;
+ if (xstrtoumax (optarg, NULL, 10, &n_units, "") != LONGINT_OK
+ || n_units == 0)
+ {
+ error (0, 0, _("%s: invalid number of lines"), optarg);
+ usage (EXIT_FAILURE);
+ }
+ break;
+
+ case 'C':
+ if (split_type != type_undef)
+ FAIL_ONLY_ONE_WAY ();
+ split_type = type_byteslines;
+ if (xstrtoumax (optarg, NULL, 10, &n_units, "bkm") != LONGINT_OK
+ || n_units == 0 || SIZE_MAX < n_units)
+ {
+ error (0, 0, _("%s: invalid number of bytes"), optarg);
+ usage (EXIT_FAILURE);
+ }
+ break;
+
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ if (split_type == type_undef)
+ {
+ split_type = type_digits;
+ n_units = 0;
+ }
+ if (split_type != type_undef && split_type != type_digits)
+ FAIL_ONLY_ONE_WAY ();
+ if (digits_optind != 0 && digits_optind != this_optind)
+ n_units = 0; /* More than one number given; ignore other. */
+ digits_optind = this_optind;
+ if (!DECIMAL_DIGIT_ACCUMULATE (n_units, c - '0', uintmax_t))
+ {
+ char buffer[INT_BUFSIZE_BOUND (uintmax_t)];
+ error (EXIT_FAILURE, 0,
+ _("line count option -%s%c... is too large"),
+ umaxtostr (n_units, buffer), c);
+ }
+ break;
+
+ case 'd':
+ suffix_alphabet = "0123456789";
+ break;
+
+ case VERBOSE_OPTION:
+ verbose = true;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ /* Handle default case. */
+ if (split_type == type_undef)
+ {
+ split_type = type_lines;
+ n_units = 1000;
+ }
+
+ if (n_units == 0)
+ {
+ error (0, 0, _("invalid number of lines: 0"));
+ usage (EXIT_FAILURE);
+ }
+
+ /* Get out the filename arguments. */
+
+ if (optind < argc)
+ infile = argv[optind++];
+
+ if (optind < argc)
+ outbase = argv[optind++];
+
+ if (optind < argc)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind]));
+ usage (EXIT_FAILURE);
+ }
+
+ /* Open the input file. */
+ if (! STREQ (infile, "-")
+ && fd_reopen (STDIN_FILENO, infile, O_RDONLY, 0) < 0)
+ error (EXIT_FAILURE, errno, _("cannot open %s for reading"),
+ quote (infile));
+
+ /* Binary I/O is safer when bytecounts are used. */
+ if (O_BINARY && ! isatty (STDIN_FILENO))
+ freopen (NULL, "rb", stdin);
+
+ /* No output file is open now. */
+ output_desc = -1;
+
+ /* Get the optimal block size of input device and make a buffer. */
+
+ if (fstat (STDIN_FILENO, &stat_buf) != 0)
+ error (EXIT_FAILURE, errno, "%s", infile);
+ in_blk_size = ST_BLKSIZE (stat_buf);
+
+ buf = ptr_align (xmalloc (in_blk_size + 1 + page_size - 1), page_size);
+
+ switch (split_type)
+ {
+ case type_digits:
+ case type_lines:
+ lines_split (n_units, buf, in_blk_size);
+ break;
+
+ case type_bytes:
+ bytes_split (n_units, buf, in_blk_size);
+ break;
+
+ case type_byteslines:
+ line_bytes_split (n_units);
+ break;
+
+ default:
+ abort ();
+ }
+
+ if (close (STDIN_FILENO) != 0)
+ error (EXIT_FAILURE, errno, "%s", infile);
+ if (output_desc >= 0 && close (output_desc) < 0)
+ error (EXIT_FAILURE, errno, "%s", outfile);
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/stat.c b/src/stat.c
new file mode 100644
index 0000000..ca84236
--- /dev/null
+++ b/src/stat.c
@@ -0,0 +1,979 @@
+/* stat.c -- display file or file system status
+ Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ Written by Michael Meskes. */
+
+#include <config.h>
+
+/* Keep this conditional in sync with the similar conditional in
+ ../m4/stat-prog.m4. */
+#if (STAT_STATVFS \
+ && (HAVE_STRUCT_STATVFS_F_BASETYPE || HAVE_STRUCT_STATVFS_F_FSTYPENAME \
+ || (! HAVE_STRUCT_STATFS_F_FSTYPENAME && HAVE_STRUCT_STATVFS_F_TYPE)))
+# define USE_STATVFS 1
+#else
+# define USE_STATVFS 0
+#endif
+
+#include <stddef.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <grp.h>
+#if USE_STATVFS
+# include <sys/statvfs.h>
+#elif HAVE_SYS_VFS_H
+# include <sys/vfs.h>
+#elif HAVE_SYS_MOUNT_H && HAVE_SYS_PARAM_H
+/* NOTE: freebsd5.0 needs sys/param.h and sys/mount.h for statfs.
+ It does have statvfs.h, but shouldn't use it, since it doesn't
+ HAVE_STRUCT_STATVFS_F_BASETYPE. So find a clean way to fix it. */
+/* NetBSD 1.5.2 needs these, for the declaration of struct statfs. */
+# include <sys/param.h>
+# include <sys/mount.h>
+# if HAVE_NETINET_IN_H && HAVE_NFS_NFS_CLNT_H && HAVE_NFS_VFS_H
+/* Ultrix 4.4 needs these for the declaration of struct statfs. */
+# include <netinet/in.h>
+# include <nfs/nfs_clnt.h>
+# include <nfs/vfs.h>
+# endif
+#elif HAVE_OS_H /* BeOS */
+# include <fs_info.h>
+#endif
+
+#include "system.h"
+
+#include "error.h"
+#include "filemode.h"
+#include "file-type.h"
+#include "fs.h"
+#include "getopt.h"
+#include "inttostr.h"
+#include "quote.h"
+#include "quotearg.h"
+#include "stat-time.h"
+#include "strftime.h"
+#include "xreadlink.h"
+
+#define alignof(type) offsetof (struct { char c; type x; }, x)
+
+#if USE_STATVFS
+# define STRUCT_STATVFS struct statvfs
+# define STRUCT_STATXFS_F_FSID_IS_INTEGER STRUCT_STATVFS_F_FSID_IS_INTEGER
+# define HAVE_STRUCT_STATXFS_F_TYPE HAVE_STRUCT_STATVFS_F_TYPE
+# if HAVE_STRUCT_STATVFS_F_NAMEMAX
+# define SB_F_NAMEMAX(S) ((S)->f_namemax)
+# endif
+# define STATFS statvfs
+# define STATFS_FRSIZE(S) ((S)->f_frsize)
+#else
+# define HAVE_STRUCT_STATXFS_F_TYPE HAVE_STRUCT_STATFS_F_TYPE
+# if HAVE_STRUCT_STATFS_F_NAMELEN
+# define SB_F_NAMEMAX(S) ((S)->f_namelen)
+# endif
+# define STATFS statfs
+# if HAVE_OS_H /* BeOS */
+/* BeOS has a statvfs function, but it does not return sensible values
+ for f_files, f_ffree and f_favail, and lacks f_type, f_basetype and
+ f_fstypename. Use 'struct fs_info' instead. */
+static int
+statfs (char const *filename, struct fs_info *buf)
+{
+ dev_t device = dev_for_path (filename);
+ if (device < 0)
+ {
+ errno = (device == B_ENTRY_NOT_FOUND ? ENOENT
+ : device == B_BAD_VALUE ? EINVAL
+ : device == B_NAME_TOO_LONG ? ENAMETOOLONG
+ : device == B_NO_MEMORY ? ENOMEM
+ : device == B_FILE_ERROR ? EIO
+ : 0);
+ return -1;
+ }
+ /* If successful, buf->dev will be == device. */
+ return fs_stat_dev (device, buf);
+}
+# define f_fsid dev
+# define f_blocks total_blocks
+# define f_bfree free_blocks
+# define f_bavail free_blocks
+# define f_bsize io_size
+# define f_files total_nodes
+# define f_ffree free_nodes
+# define STRUCT_STATVFS struct fs_info
+# define STRUCT_STATXFS_F_FSID_IS_INTEGER true
+# define STATFS_FRSIZE(S) ((S)->block_size)
+# else
+# define STRUCT_STATVFS struct statfs
+# define STRUCT_STATXFS_F_FSID_IS_INTEGER STRUCT_STATFS_F_FSID_IS_INTEGER
+# define STATFS_FRSIZE(S) 0
+# endif
+#endif
+
+#ifdef SB_F_NAMEMAX
+# define OUT_NAMEMAX out_uint
+#else
+/* NetBSD 1.5.2 has neither f_namemax nor f_namelen. */
+# define SB_F_NAMEMAX(S) "*"
+# define OUT_NAMEMAX out_string
+#endif
+
+#if HAVE_STRUCT_STATVFS_F_BASETYPE
+# define STATXFS_FILE_SYSTEM_TYPE_MEMBER_NAME f_basetype
+#else
+# if HAVE_STRUCT_STATVFS_F_FSTYPENAME || HAVE_STRUCT_STATFS_F_FSTYPENAME
+# define STATXFS_FILE_SYSTEM_TYPE_MEMBER_NAME f_fstypename
+# elif HAVE_OS_H /* BeOS */
+# define STATXFS_FILE_SYSTEM_TYPE_MEMBER_NAME fsh_name
+# endif
+#endif
+
+/* FIXME: these are used by printf.c, too */
+#define isodigit(c) ('0' <= (c) && (c) <= '7')
+#define octtobin(c) ((c) - '0')
+#define hextobin(c) ((c) >= 'a' && (c) <= 'f' ? (c) - 'a' + 10 : \
+ (c) >= 'A' && (c) <= 'F' ? (c) - 'A' + 10 : (c) - '0')
+
+#define PROGRAM_NAME "stat"
+
+#define AUTHORS "Michael Meskes"
+
+enum
+{
+ PRINTF_OPTION = CHAR_MAX + 1
+};
+
+static struct option const long_options[] = {
+ {"dereference", no_argument, NULL, 'L'},
+ {"file-system", no_argument, NULL, 'f'},
+ {"filesystem", no_argument, NULL, 'f'}, /* obsolete and undocumented alias */
+ {"format", required_argument, NULL, 'c'},
+ {"printf", required_argument, NULL, PRINTF_OPTION},
+ {"terse", no_argument, NULL, 't'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+char *program_name;
+
+/* Whether to interpret backslash-escape sequences.
+ True for --printf=FMT, not for --format=FMT (-c). */
+static bool interpret_backslash_escapes;
+
+/* The trailing delimiter string:
+ "" for --printf=FMT, "\n" for --format=FMT (-c). */
+static char const *trailing_delim = "";
+
+/* Return the type of the specified file system.
+ Some systems have statfvs.f_basetype[FSTYPSZ] (AIX, HP-UX, and Solaris).
+ Others have statvfs.f_fstypename[_VFS_NAMELEN] (NetBSD 3.0).
+ Others have statfs.f_fstypename[MFSNAMELEN] (NetBSD 1.5.2).
+ Still others have neither and have to get by with f_type (Linux).
+ But f_type may only exist in statfs (Cygwin). */
+static char const *
+human_fstype (STRUCT_STATVFS const *statfsbuf)
+{
+#ifdef STATXFS_FILE_SYSTEM_TYPE_MEMBER_NAME
+ return statfsbuf->STATXFS_FILE_SYSTEM_TYPE_MEMBER_NAME;
+#else
+ switch (statfsbuf->f_type)
+ {
+# if defined __linux__
+
+ /* IMPORTANT NOTE: Each of the following `case S_MAGIC_...:'
+ statements must be followed by a hexadecimal constant in
+ a comment. The S_MAGIC_... name and constant are automatically
+ combined to produce the #define directives in fs.h. */
+
+ case S_MAGIC_AFFS: /* 0xADFF */
+ return "affs";
+ case S_MAGIC_DEVPTS: /* 0x1CD1 */
+ return "devpts";
+ case S_MAGIC_EXT: /* 0x137D */
+ return "ext";
+ case S_MAGIC_EXT2_OLD: /* 0xEF51 */
+ return "ext2";
+ case S_MAGIC_EXT2: /* 0xEF53 */
+ return "ext2/ext3";
+ case S_MAGIC_JFS: /* 0x3153464a */
+ return "jfs";
+ case S_MAGIC_XFS: /* 0x58465342 */
+ return "xfs";
+ case S_MAGIC_HPFS: /* 0xF995E849 */
+ return "hpfs";
+ case S_MAGIC_ISOFS: /* 0x9660 */
+ return "isofs";
+ case S_MAGIC_ISOFS_WIN: /* 0x4000 */
+ return "isofs";
+ case S_MAGIC_ISOFS_R_WIN: /* 0x4004 */
+ return "isofs";
+ case S_MAGIC_MINIX: /* 0x137F */
+ return "minix";
+ case S_MAGIC_MINIX_30: /* 0x138F */
+ return "minix (30 char.)";
+ case S_MAGIC_MINIX_V2: /* 0x2468 */
+ return "minix v2";
+ case S_MAGIC_MINIX_V2_30: /* 0x2478 */
+ return "minix v2 (30 char.)";
+ case S_MAGIC_MSDOS: /* 0x4d44 */
+ return "msdos";
+ case S_MAGIC_FAT: /* 0x4006 */
+ return "fat";
+ case S_MAGIC_NCP: /* 0x564c */
+ return "novell";
+ case S_MAGIC_NFS: /* 0x6969 */
+ return "nfs";
+ case S_MAGIC_PROC: /* 0x9fa0 */
+ return "proc";
+ case S_MAGIC_SMB: /* 0x517B */
+ return "smb";
+ case S_MAGIC_XENIX: /* 0x012FF7B4 */
+ return "xenix";
+ case S_MAGIC_SYSV4: /* 0x012FF7B5 */
+ return "sysv4";
+ case S_MAGIC_SYSV2: /* 0x012FF7B6 */
+ return "sysv2";
+ case S_MAGIC_COH: /* 0x012FF7B7 */
+ return "coh";
+ case S_MAGIC_UFS: /* 0x00011954 */
+ return "ufs";
+ case S_MAGIC_XIAFS: /* 0x012FD16D */
+ return "xia";
+ case S_MAGIC_NTFS: /* 0x5346544e */
+ return "ntfs";
+ case S_MAGIC_TMPFS: /* 0x1021994 */
+ return "tmpfs";
+ case S_MAGIC_REISERFS: /* 0x52654973 */
+ return "reiserfs";
+ case S_MAGIC_CRAMFS: /* 0x28cd3d45 */
+ return "cramfs";
+ case S_MAGIC_ROMFS: /* 0x7275 */
+ return "romfs";
+ case S_MAGIC_RAMFS: /* 0x858458f6 */
+ return "ramfs";
+ case S_MAGIC_SQUASHFS: /* 0x73717368 */
+ return "squashfs";
+ case S_MAGIC_SYSFS: /* 0x62656572 */
+ return "sysfs";
+# elif __GNU__
+ case FSTYPE_UFS:
+ return "ufs";
+ case FSTYPE_NFS:
+ return "nfs";
+ case FSTYPE_GFS:
+ return "gfs";
+ case FSTYPE_LFS:
+ return "lfs";
+ case FSTYPE_SYSV:
+ return "sysv";
+ case FSTYPE_FTP:
+ return "ftp";
+ case FSTYPE_TAR:
+ return "tar";
+ case FSTYPE_AR:
+ return "ar";
+ case FSTYPE_CPIO:
+ return "cpio";
+ case FSTYPE_MSLOSS:
+ return "msloss";
+ case FSTYPE_CPM:
+ return "cpm";
+ case FSTYPE_HFS:
+ return "hfs";
+ case FSTYPE_DTFS:
+ return "dtfs";
+ case FSTYPE_GRFS:
+ return "grfs";
+ case FSTYPE_TERM:
+ return "term";
+ case FSTYPE_DEV:
+ return "dev";
+ case FSTYPE_PROC:
+ return "proc";
+ case FSTYPE_IFSOCK:
+ return "ifsock";
+ case FSTYPE_AFS:
+ return "afs";
+ case FSTYPE_DFS:
+ return "dfs";
+ case FSTYPE_PROC9:
+ return "proc9";
+ case FSTYPE_SOCKET:
+ return "socket";
+ case FSTYPE_MISC:
+ return "misc";
+ case FSTYPE_EXT2FS:
+ return "ext2/ext3";
+ case FSTYPE_HTTP:
+ return "http";
+ case FSTYPE_MEMFS:
+ return "memfs";
+ case FSTYPE_ISO9660:
+ return "iso9660";
+# endif
+ default:
+ {
+ unsigned long int type = statfsbuf->f_type;
+ static char buf[sizeof "UNKNOWN (0x%lx)" - 3
+ + (sizeof type * CHAR_BIT + 3) / 4];
+ sprintf (buf, "UNKNOWN (0x%lx)", type);
+ return buf;
+ }
+ }
+#endif
+}
+
+static char *
+human_access (struct stat const *statbuf)
+{
+ static char modebuf[12];
+ filemodestring (statbuf, modebuf);
+ modebuf[10] = 0;
+ return modebuf;
+}
+
+static char *
+human_time (struct timespec t)
+{
+ static char str[MAX (INT_BUFSIZE_BOUND (intmax_t),
+ (INT_STRLEN_BOUND (int) /* YYYY */
+ + 1 /* because YYYY might equal INT_MAX + 1900 */
+ + sizeof "-MM-DD HH:MM:SS.NNNNNNNNN +ZZZZ"))];
+ struct tm const *tm = localtime (&t.tv_sec);
+ if (tm == NULL)
+ return (TYPE_SIGNED (time_t)
+ ? imaxtostr (t.tv_sec, str)
+ : umaxtostr (t.tv_sec, str));
+ nstrftime (str, sizeof str, "%Y-%m-%d %H:%M:%S.%N %z", tm, 0, t.tv_nsec);
+ return str;
+}
+
+static void
+out_string (char *pformat, size_t prefix_len, char const *arg)
+{
+ strcpy (pformat + prefix_len, "s");
+ printf (pformat, arg);
+}
+static void
+out_int (char *pformat, size_t prefix_len, intmax_t arg)
+{
+ strcpy (pformat + prefix_len, PRIdMAX);
+ printf (pformat, arg);
+}
+static void
+out_uint (char *pformat, size_t prefix_len, uintmax_t arg)
+{
+ strcpy (pformat + prefix_len, PRIuMAX);
+ printf (pformat, arg);
+}
+static void
+out_uint_o (char *pformat, size_t prefix_len, uintmax_t arg)
+{
+ strcpy (pformat + prefix_len, PRIoMAX);
+ printf (pformat, arg);
+}
+static void
+out_uint_x (char *pformat, size_t prefix_len, uintmax_t arg)
+{
+ strcpy (pformat + prefix_len, PRIxMAX);
+ printf (pformat, arg);
+}
+
+/* print statfs info */
+static void
+print_statfs (char *pformat, size_t prefix_len, char m, char const *filename,
+ void const *data)
+{
+ STRUCT_STATVFS const *statfsbuf = data;
+
+ switch (m)
+ {
+ case 'n':
+ out_string (pformat, prefix_len, filename);
+ break;
+
+ case 'i':
+ {
+#if STRUCT_STATXFS_F_FSID_IS_INTEGER
+ uintmax_t fsid = statfsbuf->f_fsid;
+#else
+ typedef unsigned int fsid_word;
+ verify (alignof (STRUCT_STATVFS) % alignof (fsid_word) == 0);
+ verify (offsetof (STRUCT_STATVFS, f_fsid) % alignof (fsid_word) == 0);
+ verify (sizeof statfsbuf->f_fsid % alignof (fsid_word) == 0);
+ fsid_word const *p = (fsid_word *) &statfsbuf->f_fsid;
+
+ /* Assume a little-endian word order, as that is compatible
+ with glibc's statvfs implementation. */
+ uintmax_t fsid = 0;
+ int words = sizeof statfsbuf->f_fsid / sizeof *p;
+ int i;
+ for (i = 0; i < words && i * sizeof *p < sizeof fsid; i++)
+ {
+ uintmax_t u = p[words - 1 - i];
+ fsid |= u << (i * CHAR_BIT * sizeof *p);
+ }
+#endif
+ out_uint_x (pformat, prefix_len, fsid);
+ }
+ break;
+
+ case 'l':
+ OUT_NAMEMAX (pformat, prefix_len, SB_F_NAMEMAX (statfsbuf));
+ break;
+ case 't':
+#if HAVE_STRUCT_STATXFS_F_TYPE
+ out_uint_x (pformat, prefix_len, statfsbuf->f_type);
+#else
+ fputc ('?', stdout);
+#endif
+ break;
+ case 'T':
+ out_string (pformat, prefix_len, human_fstype (statfsbuf));
+ break;
+ case 'b':
+ out_int (pformat, prefix_len, statfsbuf->f_blocks);
+ break;
+ case 'f':
+ out_int (pformat, prefix_len, statfsbuf->f_bfree);
+ break;
+ case 'a':
+ out_int (pformat, prefix_len, statfsbuf->f_bavail);
+ break;
+ case 's':
+ out_uint (pformat, prefix_len, statfsbuf->f_bsize);
+ break;
+ case 'S':
+ {
+ uintmax_t frsize = STATFS_FRSIZE (statfsbuf);
+ if (! frsize)
+ frsize = statfsbuf->f_bsize;
+ out_uint (pformat, prefix_len, frsize);
+ }
+ break;
+ case 'c':
+ out_int (pformat, prefix_len, statfsbuf->f_files);
+ break;
+ case 'd':
+ out_int (pformat, prefix_len, statfsbuf->f_ffree);
+ break;
+
+ default:
+ fputc ('?', stdout);
+ break;
+ }
+}
+
+/* print stat info */
+static void
+print_stat (char *pformat, size_t prefix_len, char m,
+ char const *filename, void const *data)
+{
+ struct stat *statbuf = (struct stat *) data;
+ struct passwd *pw_ent;
+ struct group *gw_ent;
+
+ switch (m)
+ {
+ case 'n':
+ out_string (pformat, prefix_len, filename);
+ break;
+ case 'N':
+ out_string (pformat, prefix_len, quote (filename));
+ if (S_ISLNK (statbuf->st_mode))
+ {
+ char *linkname = xreadlink_with_size (filename, statbuf->st_size);
+ if (linkname == NULL)
+ {
+ error (0, errno, _("cannot read symbolic link %s"),
+ quote (filename));
+ return;
+ }
+ printf (" -> ");
+ out_string (pformat, prefix_len, quote (linkname));
+ }
+ break;
+ case 'd':
+ out_uint (pformat, prefix_len, statbuf->st_dev);
+ break;
+ case 'D':
+ out_uint_x (pformat, prefix_len, statbuf->st_dev);
+ break;
+ case 'i':
+ out_uint (pformat, prefix_len, statbuf->st_ino);
+ break;
+ case 'a':
+ out_uint_o (pformat, prefix_len, statbuf->st_mode & CHMOD_MODE_BITS);
+ break;
+ case 'A':
+ out_string (pformat, prefix_len, human_access (statbuf));
+ break;
+ case 'f':
+ out_uint_x (pformat, prefix_len, statbuf->st_mode);
+ break;
+ case 'F':
+ out_string (pformat, prefix_len, file_type (statbuf));
+ break;
+ case 'h':
+ out_uint (pformat, prefix_len, statbuf->st_nlink);
+ break;
+ case 'u':
+ out_uint (pformat, prefix_len, statbuf->st_uid);
+ break;
+ case 'U':
+ setpwent ();
+ pw_ent = getpwuid (statbuf->st_uid);
+ out_string (pformat, prefix_len,
+ pw_ent ? pw_ent->pw_name : "UNKNOWN");
+ break;
+ case 'g':
+ out_uint (pformat, prefix_len, statbuf->st_gid);
+ break;
+ case 'G':
+ setgrent ();
+ gw_ent = getgrgid (statbuf->st_gid);
+ out_string (pformat, prefix_len,
+ gw_ent ? gw_ent->gr_name : "UNKNOWN");
+ break;
+ case 't':
+ out_uint_x (pformat, prefix_len, major (statbuf->st_rdev));
+ break;
+ case 'T':
+ out_uint_x (pformat, prefix_len, minor (statbuf->st_rdev));
+ break;
+ case 's':
+ out_uint (pformat, prefix_len, statbuf->st_size);
+ break;
+ case 'B':
+ out_uint (pformat, prefix_len, ST_NBLOCKSIZE);
+ break;
+ case 'b':
+ out_uint (pformat, prefix_len, ST_NBLOCKS (*statbuf));
+ break;
+ case 'o':
+ out_uint (pformat, prefix_len, statbuf->st_blksize);
+ break;
+ case 'x':
+ out_string (pformat, prefix_len, human_time (get_stat_atime (statbuf)));
+ break;
+ case 'X':
+ if (TYPE_SIGNED (time_t))
+ out_int (pformat, prefix_len, statbuf->st_atime);
+ else
+ out_uint (pformat, prefix_len, statbuf->st_atime);
+ break;
+ case 'y':
+ out_string (pformat, prefix_len, human_time (get_stat_mtime (statbuf)));
+ break;
+ case 'Y':
+ if (TYPE_SIGNED (time_t))
+ out_int (pformat, prefix_len, statbuf->st_mtime);
+ else
+ out_uint (pformat, prefix_len, statbuf->st_mtime);
+ break;
+ case 'z':
+ out_string (pformat, prefix_len, human_time (get_stat_ctime (statbuf)));
+ break;
+ case 'Z':
+ if (TYPE_SIGNED (time_t))
+ out_int (pformat, prefix_len, statbuf->st_ctime);
+ else
+ out_uint (pformat, prefix_len, statbuf->st_ctime);
+ break;
+ default:
+ fputc ('?', stdout);
+ break;
+ }
+}
+
+/* Output a single-character \ escape. */
+
+static void
+print_esc_char (char c)
+{
+ switch (c)
+ {
+ case 'a': /* Alert. */
+ c ='\a';
+ break;
+ case 'b': /* Backspace. */
+ c ='\b';
+ break;
+ case 'f': /* Form feed. */
+ c ='\f';
+ break;
+ case 'n': /* New line. */
+ c ='\n';
+ break;
+ case 'r': /* Carriage return. */
+ c ='\r';
+ break;
+ case 't': /* Horizontal tab. */
+ c ='\t';
+ break;
+ case 'v': /* Vertical tab. */
+ c ='\v';
+ break;
+ case '"':
+ case '\\':
+ break;
+ default:
+ error (0, 0, _("warning: unrecognized escape `\\%c'"), c);
+ break;
+ }
+ putchar (c);
+}
+
+static void
+print_it (char const *format, char const *filename,
+ void (*print_func) (char *, size_t, char, char const *, void const *),
+ void const *data)
+{
+ /* Add 2 to accommodate our conversion of the stat `%s' format string
+ to the longer printf `%llu' one. */
+ enum
+ {
+ MAX_ADDITIONAL_BYTES =
+ (MAX (sizeof PRIdMAX,
+ MAX (sizeof PRIoMAX, MAX (sizeof PRIuMAX, sizeof PRIxMAX)))
+ - 1)
+ };
+ size_t n_alloc = strlen (format) + MAX_ADDITIONAL_BYTES + 1;
+ char *dest = xmalloc (n_alloc);
+ char const *b;
+ for (b = format; *b; b++)
+ {
+ switch (*b)
+ {
+ case '%':
+ {
+ size_t len = strspn (b + 1, "#-+.I 0123456789");
+ char const *fmt_char = b + len + 1;
+ memcpy (dest, b, len + 1);
+
+ b = fmt_char;
+ switch (*fmt_char)
+ {
+ case '\0':
+ --b;
+ /* fall through */
+ case '%':
+ if (0 < len)
+ {
+ dest[len + 1] = *fmt_char;
+ dest[len + 2] = '\0';
+ error (EXIT_FAILURE, 0, _("%s: invalid directive"),
+ quotearg_colon (dest));
+ }
+ putchar ('%');
+ break;
+ default:
+ print_func (dest, len + 1, *fmt_char, filename, data);
+ break;
+ }
+ break;
+ }
+
+ case '\\':
+ if ( ! interpret_backslash_escapes)
+ {
+ putchar ('\\');
+ break;
+ }
+ ++b;
+ if (isodigit (*b))
+ {
+ int esc_value = octtobin (*b);
+ int esc_length = 1; /* number of octal digits */
+ for (++b; esc_length < 3 && isodigit (*b);
+ ++esc_length, ++b)
+ {
+ esc_value = esc_value * 8 + octtobin (*b);
+ }
+ putchar (esc_value);
+ --b;
+ }
+ else if (*b == 'x' && isxdigit (to_uchar (b[1])))
+ {
+ int esc_value = hextobin (b[1]); /* Value of \xhh escape. */
+ /* A hexadecimal \xhh escape sequence must have
+ 1 or 2 hex. digits. */
+ ++b;
+ if (isxdigit (to_uchar (b[1])))
+ {
+ ++b;
+ esc_value = esc_value * 16 + hextobin (*b);
+ }
+ putchar (esc_value);
+ }
+ else if (*b == '\0')
+ {
+ error (0, 0, _("warning: backslash at end of format"));
+ putchar ('\\');
+ /* Arrange to exit the loop. */
+ --b;
+ }
+ else
+ {
+ print_esc_char (*b);
+ }
+ break;
+
+ default:
+ putchar (*b);
+ break;
+ }
+ }
+ free (dest);
+
+ fputs (trailing_delim, stdout);
+}
+
+/* Stat the file system and print what we find. */
+static bool
+do_statfs (char const *filename, bool terse, char const *format)
+{
+ STRUCT_STATVFS statfsbuf;
+
+ if (STATFS (filename, &statfsbuf) != 0)
+ {
+ error (0, errno, _("cannot read file system information for %s"),
+ quote (filename));
+ return false;
+ }
+
+ if (format == NULL)
+ {
+ format = (terse
+ ? "%n %i %l %t %s %S %b %f %a %c %d\n"
+ : " File: \"%n\"\n"
+ " ID: %-8i Namelen: %-7l Type: %T\n"
+ "Block size: %-10s Fundamental block size: %S\n"
+ "Blocks: Total: %-10b Free: %-10f Available: %a\n"
+ "Inodes: Total: %-10c Free: %d\n");
+ }
+
+ print_it (format, filename, print_statfs, &statfsbuf);
+ return true;
+}
+
+/* stat the file and print what we find */
+static bool
+do_stat (char const *filename, bool follow_links, bool terse,
+ char const *format)
+{
+ struct stat statbuf;
+
+ if ((follow_links ? stat : lstat) (filename, &statbuf) != 0)
+ {
+ error (0, errno, _("cannot stat %s"), quote (filename));
+ return false;
+ }
+
+ if (format == NULL)
+ {
+ if (terse)
+ {
+ format = "%n %s %b %f %u %g %D %i %h %t %T %X %Y %Z %o\n";
+ }
+ else
+ {
+ /* Temporary hack to match original output until conditional
+ implemented. */
+ if (S_ISBLK (statbuf.st_mode) || S_ISCHR (statbuf.st_mode))
+ {
+ format =
+ " File: %N\n"
+ " Size: %-10s\tBlocks: %-10b IO Block: %-6o %F\n"
+ "Device: %Dh/%dd\tInode: %-10i Links: %-5h"
+ " Device type: %t,%T\n"
+ "Access: (%04a/%10.10A) Uid: (%5u/%8U) Gid: (%5g/%8G)\n"
+ "Access: %x\n" "Modify: %y\n" "Change: %z\n";
+ }
+ else
+ {
+ format =
+ " File: %N\n"
+ " Size: %-10s\tBlocks: %-10b IO Block: %-6o %F\n"
+ "Device: %Dh/%dd\tInode: %-10i Links: %h\n"
+ "Access: (%04a/%10.10A) Uid: (%5u/%8U) Gid: (%5g/%8G)\n"
+ "Access: %x\n" "Modify: %y\n" "Change: %z\n";
+ }
+ }
+ }
+ print_it (format, filename, print_stat, &statbuf);
+ return true;
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION] FILE...\n"), program_name);
+ fputs (_("\
+Display file or file system status.\n\
+\n\
+ -L, --dereference follow links\n\
+ -f, --file-system display file system status instead of file status\n\
+"), stdout);
+ fputs (_("\
+ -c --format=FORMAT use the specified FORMAT instead of the default;\n\
+ output a newline after each use of FORMAT\n\
+ --printf=FORMAT like --format, but interpret backslash escapes,\n\
+ and do not output a mandatory trailing newline.\n\
+ If you want a newline, include \\n in FORMAT.\n\
+ -t, --terse print the information in terse form\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+
+ fputs (_("\n\
+The valid format sequences for files (without --file-system):\n\
+\n\
+ %a Access rights in octal\n\
+ %A Access rights in human readable form\n\
+ %b Number of blocks allocated (see %B)\n\
+ %B The size in bytes of each block reported by %b\n\
+"), stdout);
+ fputs (_("\
+ %d Device number in decimal\n\
+ %D Device number in hex\n\
+ %f Raw mode in hex\n\
+ %F File type\n\
+ %g Group ID of owner\n\
+ %G Group name of owner\n\
+"), stdout);
+ fputs (_("\
+ %h Number of hard links\n\
+ %i Inode number\n\
+ %n File name\n\
+ %N Quoted file name with dereference if symbolic link\n\
+ %o I/O block size\n\
+ %s Total size, in bytes\n\
+ %t Major device type in hex\n\
+ %T Minor device type in hex\n\
+"), stdout);
+ fputs (_("\
+ %u User ID of owner\n\
+ %U User name of owner\n\
+ %x Time of last access\n\
+ %X Time of last access as seconds since Epoch\n\
+ %y Time of last modification\n\
+ %Y Time of last modification as seconds since Epoch\n\
+ %z Time of last change\n\
+ %Z Time of last change as seconds since Epoch\n\
+\n\
+"), stdout);
+
+ fputs (_("\
+Valid format sequences for file systems:\n\
+\n\
+ %a Free blocks available to non-superuser\n\
+ %b Total data blocks in file system\n\
+ %c Total file nodes in file system\n\
+ %d Free file nodes in file system\n\
+ %f Free blocks in file system\n\
+"), stdout);
+ fputs (_("\
+ %i File System ID in hex\n\
+ %l Maximum length of filenames\n\
+ %n File name\n\
+ %s Block size (for faster transfers)\n\
+ %S Fundamental block size (for block counts)\n\
+ %t Type in hex\n\
+ %T Type in human readable form\n\
+"), stdout);
+ printf (USAGE_BUILTIN_WARNING, PROGRAM_NAME);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char *argv[])
+{
+ int c;
+ int i;
+ bool follow_links = false;
+ bool fs = false;
+ bool terse = false;
+ char *format = NULL;
+ bool ok = true;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ while ((c = getopt_long (argc, argv, "c:fLt", long_options, NULL)) != -1)
+ {
+ switch (c)
+ {
+ case PRINTF_OPTION:
+ format = optarg;
+ interpret_backslash_escapes = true;
+ trailing_delim = "";
+ break;
+
+ case 'c':
+ format = optarg;
+ interpret_backslash_escapes = false;
+ trailing_delim = "\n";
+ break;
+
+ case 'L':
+ follow_links = true;
+ break;
+
+ case 'f':
+ fs = true;
+ break;
+
+ case 't':
+ terse = true;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (argc == optind)
+ {
+ error (0, 0, _("missing operand"));
+ usage (EXIT_FAILURE);
+ }
+
+ for (i = optind; i < argc; i++)
+ ok &= (fs
+ ? do_statfs (argv[i], terse, format)
+ : do_stat (argv[i], follow_links, terse, format));
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/stty.c b/src/stty.c
new file mode 100644
index 0000000..33a821d
--- /dev/null
+++ b/src/stty.c
@@ -0,0 +1,1892 @@
+/* stty -- change and print terminal line settings
+ Copyright (C) 1990-2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Usage: stty [-ag] [--all] [--save] [-F device] [--file=device] [setting...]
+
+ Options:
+ -a, --all Write all current settings to stdout in human-readable form.
+ -g, --save Write all current settings to stdout in stty-readable form.
+ -F, --file Open and use the specified device instead of stdin
+
+ If no args are given, write to stdout the baud rate and settings that
+ have been changed from their defaults. Mode reading and changes
+ are done on the specified device, or stdin if none was specified.
+
+ David MacKenzie <djm@gnu.ai.mit.edu> */
+
+#include <config.h>
+
+#ifdef TERMIOS_NEEDS_XOPEN_SOURCE
+# define _XOPEN_SOURCE
+#endif
+
+#include <stdio.h>
+#include <sys/types.h>
+
+#if HAVE_TERMIOS_H
+# include <termios.h>
+#endif
+#if HAVE_STROPTS_H
+# include <stropts.h>
+#endif
+#ifdef HAVE_SYS_IOCTL_H
+# include <sys/ioctl.h>
+#endif
+
+#ifdef WINSIZE_IN_PTEM
+# include <sys/stream.h>
+# include <sys/ptem.h>
+#endif
+#ifdef GWINSZ_IN_SYS_PTY
+# include <sys/tty.h>
+# include <sys/pty.h>
+#endif
+#include <getopt.h>
+#include <stdarg.h>
+
+#include "system.h"
+#include "error.h"
+#include "fd-reopen.h"
+#include "quote.h"
+#include "vasprintf.h"
+#include "xstrtol.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "stty"
+
+#define AUTHORS "David MacKenzie"
+
+#ifndef _POSIX_VDISABLE
+# define _POSIX_VDISABLE 0
+#endif
+
+#define Control(c) ((c) & 0x1f)
+/* Canonical values for control characters. */
+#ifndef CINTR
+# define CINTR Control ('c')
+#endif
+#ifndef CQUIT
+# define CQUIT 28
+#endif
+#ifndef CERASE
+# define CERASE 127
+#endif
+#ifndef CKILL
+# define CKILL Control ('u')
+#endif
+#ifndef CEOF
+# define CEOF Control ('d')
+#endif
+#ifndef CEOL
+# define CEOL _POSIX_VDISABLE
+#endif
+#ifndef CSTART
+# define CSTART Control ('q')
+#endif
+#ifndef CSTOP
+# define CSTOP Control ('s')
+#endif
+#ifndef CSUSP
+# define CSUSP Control ('z')
+#endif
+#if defined VEOL2 && !defined CEOL2
+# define CEOL2 _POSIX_VDISABLE
+#endif
+/* Some platforms have VSWTC, others VSWTCH. In both cases, this control
+ character is initialized by CSWTCH, if present. */
+#if defined VSWTC && !defined VSWTCH
+# define VSWTCH VSWTC
+#endif
+/* ISC renamed swtch to susp for termios, but we'll accept either name. */
+#if defined VSUSP && !defined VSWTCH
+# define VSWTCH VSUSP
+# if defined CSUSP && !defined CSWTCH
+# define CSWTCH CSUSP
+# endif
+#endif
+#if defined VSWTCH && !defined CSWTCH
+# define CSWTCH _POSIX_VDISABLE
+#endif
+
+/* SunOS 5.3 loses (^Z doesn't work) if `swtch' is the same as `susp'.
+ So the default is to disable `swtch.' */
+#if defined __sparc__ && defined __svr4__
+# undef CSWTCH
+# define CSWTCH _POSIX_VDISABLE
+#endif
+
+#if defined VWERSE && !defined VWERASE /* AIX-3.2.5 */
+# define VWERASE VWERSE
+#endif
+#if defined VDSUSP && !defined CDSUSP
+# define CDSUSP Control ('y')
+#endif
+#if !defined VREPRINT && defined VRPRNT /* Irix 4.0.5 */
+# define VREPRINT VRPRNT
+#endif
+#if defined VREPRINT && !defined CRPRNT
+# define CRPRNT Control ('r')
+#endif
+#if defined CREPRINT && !defined CRPRNT
+# define CRPRNT Control ('r')
+#endif
+#if defined VWERASE && !defined CWERASE
+# define CWERASE Control ('w')
+#endif
+#if defined VLNEXT && !defined CLNEXT
+# define CLNEXT Control ('v')
+#endif
+#if defined VDISCARD && !defined VFLUSHO
+# define VFLUSHO VDISCARD
+#endif
+#if defined VFLUSH && !defined VFLUSHO /* Ultrix 4.2 */
+# define VFLUSHO VFLUSH
+#endif
+#if defined CTLECH && !defined ECHOCTL /* Ultrix 4.3 */
+# define ECHOCTL CTLECH
+#endif
+#if defined TCTLECH && !defined ECHOCTL /* Ultrix 4.2 */
+# define ECHOCTL TCTLECH
+#endif
+#if defined CRTKIL && !defined ECHOKE /* Ultrix 4.2 and 4.3 */
+# define ECHOKE CRTKIL
+#endif
+#if defined VFLUSHO && !defined CFLUSHO
+# define CFLUSHO Control ('o')
+#endif
+#if defined VSTATUS && !defined CSTATUS
+# define CSTATUS Control ('t')
+#endif
+
+/* Which speeds to set. */
+enum speed_setting
+ {
+ input_speed, output_speed, both_speeds
+ };
+
+/* What to output and how. */
+enum output_type
+ {
+ changed, all, recoverable /* Default, -a, -g. */
+ };
+
+/* Which member(s) of `struct termios' a mode uses. */
+enum mode_type
+ {
+ control, input, output, local, combination
+ };
+
+/* Flags for `struct mode_info'. */
+#define SANE_SET 1 /* Set in `sane' mode. */
+#define SANE_UNSET 2 /* Unset in `sane' mode. */
+#define REV 4 /* Can be turned off by prepending `-'. */
+#define OMIT 8 /* Don't display value. */
+
+/* Each mode. */
+struct mode_info
+ {
+ const char *name; /* Name given on command line. */
+ enum mode_type type; /* Which structure element to change. */
+ char flags; /* Setting and display options. */
+ unsigned long bits; /* Bits to set for this mode. */
+ unsigned long mask; /* Other bits to turn off for this mode. */
+ };
+
+static struct mode_info mode_info[] =
+{
+ {"parenb", control, REV, PARENB, 0},
+ {"parodd", control, REV, PARODD, 0},
+ {"cs5", control, 0, CS5, CSIZE},
+ {"cs6", control, 0, CS6, CSIZE},
+ {"cs7", control, 0, CS7, CSIZE},
+ {"cs8", control, 0, CS8, CSIZE},
+ {"hupcl", control, REV, HUPCL, 0},
+ {"hup", control, REV | OMIT, HUPCL, 0},
+ {"cstopb", control, REV, CSTOPB, 0},
+ {"cread", control, SANE_SET | REV, CREAD, 0},
+ {"clocal", control, REV, CLOCAL, 0},
+#ifdef CRTSCTS
+ {"crtscts", control, REV, CRTSCTS, 0},
+#endif
+
+ {"ignbrk", input, SANE_UNSET | REV, IGNBRK, 0},
+ {"brkint", input, SANE_SET | REV, BRKINT, 0},
+ {"ignpar", input, REV, IGNPAR, 0},
+ {"parmrk", input, REV, PARMRK, 0},
+ {"inpck", input, REV, INPCK, 0},
+ {"istrip", input, REV, ISTRIP, 0},
+ {"inlcr", input, SANE_UNSET | REV, INLCR, 0},
+ {"igncr", input, SANE_UNSET | REV, IGNCR, 0},
+ {"icrnl", input, SANE_SET | REV, ICRNL, 0},
+ {"ixon", input, REV, IXON, 0},
+ {"ixoff", input, SANE_UNSET | REV, IXOFF, 0},
+ {"tandem", input, REV | OMIT, IXOFF, 0},
+#ifdef IUCLC
+ {"iuclc", input, SANE_UNSET | REV, IUCLC, 0},
+#endif
+#ifdef IXANY
+ {"ixany", input, SANE_UNSET | REV, IXANY, 0},
+#endif
+#ifdef IMAXBEL
+ {"imaxbel", input, SANE_SET | REV, IMAXBEL, 0},
+#endif
+#ifdef IUTF8
+ {"iutf8", input, SANE_UNSET | REV, IUTF8, 0},
+#endif
+
+ {"opost", output, SANE_SET | REV, OPOST, 0},
+#ifdef OLCUC
+ {"olcuc", output, SANE_UNSET | REV, OLCUC, 0},
+#endif
+#ifdef OCRNL
+ {"ocrnl", output, SANE_UNSET | REV, OCRNL, 0},
+#endif
+#ifdef ONLCR
+ {"onlcr", output, SANE_SET | REV, ONLCR, 0},
+#endif
+#ifdef ONOCR
+ {"onocr", output, SANE_UNSET | REV, ONOCR, 0},
+#endif
+#ifdef ONLRET
+ {"onlret", output, SANE_UNSET | REV, ONLRET, 0},
+#endif
+#ifdef OFILL
+ {"ofill", output, SANE_UNSET | REV, OFILL, 0},
+#endif
+#ifdef OFDEL
+ {"ofdel", output, SANE_UNSET | REV, OFDEL, 0},
+#endif
+#ifdef NLDLY
+ {"nl1", output, SANE_UNSET, NL1, NLDLY},
+ {"nl0", output, SANE_SET, NL0, NLDLY},
+#endif
+#ifdef CRDLY
+ {"cr3", output, SANE_UNSET, CR3, CRDLY},
+ {"cr2", output, SANE_UNSET, CR2, CRDLY},
+ {"cr1", output, SANE_UNSET, CR1, CRDLY},
+ {"cr0", output, SANE_SET, CR0, CRDLY},
+#endif
+#ifdef TABDLY
+ {"tab3", output, SANE_UNSET, TAB3, TABDLY},
+ {"tab2", output, SANE_UNSET, TAB2, TABDLY},
+ {"tab1", output, SANE_UNSET, TAB1, TABDLY},
+ {"tab0", output, SANE_SET, TAB0, TABDLY},
+#else
+# ifdef OXTABS
+ {"tab3", output, SANE_UNSET, OXTABS, 0},
+# endif
+#endif
+#ifdef BSDLY
+ {"bs1", output, SANE_UNSET, BS1, BSDLY},
+ {"bs0", output, SANE_SET, BS0, BSDLY},
+#endif
+#ifdef VTDLY
+ {"vt1", output, SANE_UNSET, VT1, VTDLY},
+ {"vt0", output, SANE_SET, VT0, VTDLY},
+#endif
+#ifdef FFDLY
+ {"ff1", output, SANE_UNSET, FF1, FFDLY},
+ {"ff0", output, SANE_SET, FF0, FFDLY},
+#endif
+
+ {"isig", local, SANE_SET | REV, ISIG, 0},
+ {"icanon", local, SANE_SET | REV, ICANON, 0},
+#ifdef IEXTEN
+ {"iexten", local, SANE_SET | REV, IEXTEN, 0},
+#endif
+ {"echo", local, SANE_SET | REV, ECHO, 0},
+ {"echoe", local, SANE_SET | REV, ECHOE, 0},
+ {"crterase", local, REV | OMIT, ECHOE, 0},
+ {"echok", local, SANE_SET | REV, ECHOK, 0},
+ {"echonl", local, SANE_UNSET | REV, ECHONL, 0},
+ {"noflsh", local, SANE_UNSET | REV, NOFLSH, 0},
+#ifdef XCASE
+ {"xcase", local, SANE_UNSET | REV, XCASE, 0},
+#endif
+#ifdef TOSTOP
+ {"tostop", local, SANE_UNSET | REV, TOSTOP, 0},
+#endif
+#ifdef ECHOPRT
+ {"echoprt", local, SANE_UNSET | REV, ECHOPRT, 0},
+ {"prterase", local, REV | OMIT, ECHOPRT, 0},
+#endif
+#ifdef ECHOCTL
+ {"echoctl", local, SANE_SET | REV, ECHOCTL, 0},
+ {"ctlecho", local, REV | OMIT, ECHOCTL, 0},
+#endif
+#ifdef ECHOKE
+ {"echoke", local, SANE_SET | REV, ECHOKE, 0},
+ {"crtkill", local, REV | OMIT, ECHOKE, 0},
+#endif
+
+ {"evenp", combination, REV | OMIT, 0, 0},
+ {"parity", combination, REV | OMIT, 0, 0},
+ {"oddp", combination, REV | OMIT, 0, 0},
+ {"nl", combination, REV | OMIT, 0, 0},
+ {"ek", combination, OMIT, 0, 0},
+ {"sane", combination, OMIT, 0, 0},
+ {"cooked", combination, REV | OMIT, 0, 0},
+ {"raw", combination, REV | OMIT, 0, 0},
+ {"pass8", combination, REV | OMIT, 0, 0},
+ {"litout", combination, REV | OMIT, 0, 0},
+ {"cbreak", combination, REV | OMIT, 0, 0},
+#ifdef IXANY
+ {"decctlq", combination, REV | OMIT, 0, 0},
+#endif
+#if defined TABDLY || defined OXTABS
+ {"tabs", combination, REV | OMIT, 0, 0},
+#endif
+#if defined XCASE && defined IUCLC && defined OLCUC
+ {"lcase", combination, REV | OMIT, 0, 0},
+ {"LCASE", combination, REV | OMIT, 0, 0},
+#endif
+ {"crt", combination, OMIT, 0, 0},
+ {"dec", combination, OMIT, 0, 0},
+
+ {NULL, control, 0, 0, 0}
+};
+
+/* Control character settings. */
+struct control_info
+ {
+ const char *name; /* Name given on command line. */
+ cc_t saneval; /* Value to set for `stty sane'. */
+ size_t offset; /* Offset in c_cc. */
+ };
+
+/* Control characters. */
+
+static struct control_info control_info[] =
+{
+ {"intr", CINTR, VINTR},
+ {"quit", CQUIT, VQUIT},
+ {"erase", CERASE, VERASE},
+ {"kill", CKILL, VKILL},
+ {"eof", CEOF, VEOF},
+ {"eol", CEOL, VEOL},
+#ifdef VEOL2
+ {"eol2", CEOL2, VEOL2},
+#endif
+#ifdef VSWTCH
+ {"swtch", CSWTCH, VSWTCH},
+#endif
+ {"start", CSTART, VSTART},
+ {"stop", CSTOP, VSTOP},
+ {"susp", CSUSP, VSUSP},
+#ifdef VDSUSP
+ {"dsusp", CDSUSP, VDSUSP},
+#endif
+#ifdef VREPRINT
+ {"rprnt", CRPRNT, VREPRINT},
+#else
+# ifdef CREPRINT /* HPUX 10.20 needs this */
+ {"rprnt", CRPRNT, CREPRINT},
+# endif
+#endif
+#ifdef VWERASE
+ {"werase", CWERASE, VWERASE},
+#endif
+#ifdef VLNEXT
+ {"lnext", CLNEXT, VLNEXT},
+#endif
+#ifdef VFLUSHO
+ {"flush", CFLUSHO, VFLUSHO},
+#endif
+#ifdef VSTATUS
+ {"status", CSTATUS, VSTATUS},
+#endif
+
+ /* These must be last because of the display routines. */
+ {"min", 1, VMIN},
+ {"time", 0, VTIME},
+ {NULL, 0, 0}
+};
+
+static char const *visible (cc_t ch);
+static unsigned long int baud_to_value (speed_t speed);
+static bool recover_mode (char const *arg, struct termios *mode);
+static int screen_columns (void);
+static bool set_mode (struct mode_info *info, bool reversed,
+ struct termios *mode);
+static unsigned long int integer_arg (const char *s, unsigned long int max);
+static speed_t string_to_baud (const char *arg);
+static tcflag_t *mode_type_flag (enum mode_type type, struct termios *mode);
+static void display_all (struct termios *mode, char const *device_name);
+static void display_changed (struct termios *mode);
+static void display_recoverable (struct termios *mode);
+static void display_settings (enum output_type output_type,
+ struct termios *mode,
+ const char *device_name);
+static void display_speed (struct termios *mode, bool fancy);
+static void display_window_size (bool fancy, char const *device_name);
+static void sane_mode (struct termios *mode);
+static void set_control_char (struct control_info *info,
+ const char *arg,
+ struct termios *mode);
+static void set_speed (enum speed_setting type, const char *arg,
+ struct termios *mode);
+static void set_window_size (int rows, int cols, char const *device_name);
+
+/* The width of the screen, for output wrapping. */
+static int max_col;
+
+/* Current position, to know when to wrap. */
+static int current_col;
+
+static struct option longopts[] =
+{
+ {"all", no_argument, NULL, 'a'},
+ {"save", no_argument, NULL, 'g'},
+ {"file", required_argument, NULL, 'F'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+/* The name this program was run with. */
+char *program_name;
+
+static void wrapf (const char *message, ...)
+ __attribute__ ((__format__ (__printf__, 1, 2)));
+
+/* Print format string MESSAGE and optional args.
+ Wrap to next line first if it won't fit.
+ Print a space first unless MESSAGE will start a new line. */
+
+static void
+wrapf (const char *message,...)
+{
+ va_list args;
+ char *buf;
+ int buflen;
+
+ va_start (args, message);
+ buflen = vasprintf (&buf, message, args);
+ va_end (args);
+
+ if (buflen < 0)
+ xalloc_die ();
+
+ if (0 < current_col)
+ {
+ if (max_col - current_col < buflen)
+ {
+ putchar ('\n');
+ current_col = 0;
+ }
+ else
+ {
+ putchar (' ');
+ current_col++;
+ }
+ }
+
+ fputs (buf, stdout);
+ free (buf);
+ current_col += buflen;
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [-F DEVICE] [--file=DEVICE] [SETTING]...\n\
+ or: %s [-F DEVICE] [--file=DEVICE] [-a|--all]\n\
+ or: %s [-F DEVICE] [--file=DEVICE] [-g|--save]\n\
+"),
+ program_name, program_name, program_name);
+ fputs (_("\
+Print or change terminal characteristics.\n\
+\n\
+ -a, --all print all current settings in human-readable form\n\
+ -g, --save print all current settings in a stty-readable form\n\
+ -F, --file=DEVICE open and use the specified DEVICE instead of stdin\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+Optional - before SETTING indicates negation. An * marks non-POSIX\n\
+settings. The underlying system defines which settings are available.\n\
+"), stdout);
+ fputs (_("\
+\n\
+Special characters:\n\
+ * dsusp CHAR CHAR will send a terminal stop signal once input flushed\n\
+ eof CHAR CHAR will send an end of file (terminate the input)\n\
+ eol CHAR CHAR will end the line\n\
+"), stdout);
+ fputs (_("\
+ * eol2 CHAR alternate CHAR for ending the line\n\
+ erase CHAR CHAR will erase the last character typed\n\
+ intr CHAR CHAR will send an interrupt signal\n\
+ kill CHAR CHAR will erase the current line\n\
+"), stdout);
+ fputs (_("\
+ * lnext CHAR CHAR will enter the next character quoted\n\
+ quit CHAR CHAR will send a quit signal\n\
+ * rprnt CHAR CHAR will redraw the current line\n\
+ start CHAR CHAR will restart the output after stopping it\n\
+"), stdout);
+ fputs (_("\
+ stop CHAR CHAR will stop the output\n\
+ susp CHAR CHAR will send a terminal stop signal\n\
+ * swtch CHAR CHAR will switch to a different shell layer\n\
+ * werase CHAR CHAR will erase the last word typed\n\
+"), stdout);
+ fputs (_("\
+\n\
+Special settings:\n\
+ N set the input and output speeds to N bauds\n\
+ * cols N tell the kernel that the terminal has N columns\n\
+ * columns N same as cols N\n\
+"), stdout);
+ fputs (_("\
+ ispeed N set the input speed to N\n\
+ * line N use line discipline N\n\
+ min N with -icanon, set N characters minimum for a completed read\n\
+ ospeed N set the output speed to N\n\
+"), stdout);
+ fputs (_("\
+ * rows N tell the kernel that the terminal has N rows\n\
+ * size print the number of rows and columns according to the kernel\n\
+ speed print the terminal speed\n\
+ time N with -icanon, set read timeout of N tenths of a second\n\
+"), stdout);
+ fputs (_("\
+\n\
+Control settings:\n\
+ [-]clocal disable modem control signals\n\
+ [-]cread allow input to be received\n\
+ * [-]crtscts enable RTS/CTS handshaking\n\
+ csN set character size to N bits, N in [5..8]\n\
+"), stdout);
+ fputs (_("\
+ [-]cstopb use two stop bits per character (one with `-')\n\
+ [-]hup send a hangup signal when the last process closes the tty\n\
+ [-]hupcl same as [-]hup\n\
+ [-]parenb generate parity bit in output and expect parity bit in input\n\
+ [-]parodd set odd parity (even with `-')\n\
+"), stdout);
+ fputs (_("\
+\n\
+Input settings:\n\
+ [-]brkint breaks cause an interrupt signal\n\
+ [-]icrnl translate carriage return to newline\n\
+ [-]ignbrk ignore break characters\n\
+ [-]igncr ignore carriage return\n\
+"), stdout);
+ fputs (_("\
+ [-]ignpar ignore characters with parity errors\n\
+ * [-]imaxbel beep and do not flush a full input buffer on a character\n\
+ [-]inlcr translate newline to carriage return\n\
+ [-]inpck enable input parity checking\n\
+ [-]istrip clear high (8th) bit of input characters\n\
+"), stdout);
+ fputs (_("\
+ * [-]iutf8 assume input characters are UTF-8 encoded\n\
+"), stdout);
+ fputs (_("\
+ * [-]iuclc translate uppercase characters to lowercase\n\
+ * [-]ixany let any character restart output, not only start character\n\
+ [-]ixoff enable sending of start/stop characters\n\
+ [-]ixon enable XON/XOFF flow control\n\
+ [-]parmrk mark parity errors (with a 255-0-character sequence)\n\
+ [-]tandem same as [-]ixoff\n\
+"), stdout);
+ fputs (_("\
+\n\
+Output settings:\n\
+ * bsN backspace delay style, N in [0..1]\n\
+ * crN carriage return delay style, N in [0..3]\n\
+ * ffN form feed delay style, N in [0..1]\n\
+ * nlN newline delay style, N in [0..1]\n\
+"), stdout);
+ fputs (_("\
+ * [-]ocrnl translate carriage return to newline\n\
+ * [-]ofdel use delete characters for fill instead of null characters\n\
+ * [-]ofill use fill (padding) characters instead of timing for delays\n\
+ * [-]olcuc translate lowercase characters to uppercase\n\
+ * [-]onlcr translate newline to carriage return-newline\n\
+ * [-]onlret newline performs a carriage return\n\
+"), stdout);
+ fputs (_("\
+ * [-]onocr do not print carriage returns in the first column\n\
+ [-]opost postprocess output\n\
+ * tabN horizontal tab delay style, N in [0..3]\n\
+ * tabs same as tab0\n\
+ * -tabs same as tab3\n\
+ * vtN vertical tab delay style, N in [0..1]\n\
+"), stdout);
+ fputs (_("\
+\n\
+Local settings:\n\
+ [-]crterase echo erase characters as backspace-space-backspace\n\
+ * crtkill kill all line by obeying the echoprt and echoe settings\n\
+ * -crtkill kill all line by obeying the echoctl and echok settings\n\
+"), stdout);
+ fputs (_("\
+ * [-]ctlecho echo control characters in hat notation (`^c')\n\
+ [-]echo echo input characters\n\
+ * [-]echoctl same as [-]ctlecho\n\
+ [-]echoe same as [-]crterase\n\
+ [-]echok echo a newline after a kill character\n\
+"), stdout);
+ fputs (_("\
+ * [-]echoke same as [-]crtkill\n\
+ [-]echonl echo newline even if not echoing other characters\n\
+ * [-]echoprt echo erased characters backward, between `\\' and '/'\n\
+ [-]icanon enable erase, kill, werase, and rprnt special characters\n\
+ [-]iexten enable non-POSIX special characters\n\
+"), stdout);
+ fputs (_("\
+ [-]isig enable interrupt, quit, and suspend special characters\n\
+ [-]noflsh disable flushing after interrupt and quit special characters\n\
+ * [-]prterase same as [-]echoprt\n\
+ * [-]tostop stop background jobs that try to write to the terminal\n\
+ * [-]xcase with icanon, escape with `\\' for uppercase characters\n\
+"), stdout);
+ fputs (_("\
+\n\
+Combination settings:\n\
+ * [-]LCASE same as [-]lcase\n\
+ cbreak same as -icanon\n\
+ -cbreak same as icanon\n\
+"), stdout);
+ fputs (_("\
+ cooked same as brkint ignpar istrip icrnl ixon opost isig\n\
+ icanon, eof and eol characters to their default values\n\
+ -cooked same as raw\n\
+ crt same as echoe echoctl echoke\n\
+"), stdout);
+ fputs (_("\
+ dec same as echoe echoctl echoke -ixany intr ^c erase 0177\n\
+ kill ^u\n\
+ * [-]decctlq same as [-]ixany\n\
+ ek erase and kill characters to their default values\n\
+ evenp same as parenb -parodd cs7\n\
+"), stdout);
+ fputs (_("\
+ -evenp same as -parenb cs8\n\
+ * [-]lcase same as xcase iuclc olcuc\n\
+ litout same as -parenb -istrip -opost cs8\n\
+ -litout same as parenb istrip opost cs7\n\
+ nl same as -icrnl -onlcr\n\
+ -nl same as icrnl -inlcr -igncr onlcr -ocrnl -onlret\n\
+"), stdout);
+ fputs (_("\
+ oddp same as parenb parodd cs7\n\
+ -oddp same as -parenb cs8\n\
+ [-]parity same as [-]evenp\n\
+ pass8 same as -parenb -istrip cs8\n\
+ -pass8 same as parenb istrip cs7\n\
+"), stdout);
+ fputs (_("\
+ raw same as -ignbrk -brkint -ignpar -parmrk -inpck -istrip\n\
+ -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany\n\
+ -imaxbel -opost -isig -icanon -xcase min 1 time 0\n\
+ -raw same as cooked\n\
+"), stdout);
+ fputs (_("\
+ sane same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8\n\
+ -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr\n\
+ -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0\n\
+ isig icanon iexten echo echoe echok -echonl -noflsh\n\
+ -xcase -tostop -echoprt echoctl echoke, all special\n\
+ characters to their default values.\n\
+"), stdout);
+ fputs (_("\
+\n\
+Handle the tty line connected to standard input. Without arguments,\n\
+prints baud rate, line discipline, and deviations from stty sane. In\n\
+settings, CHAR is taken literally, or coded as in ^c, 0x37, 0177 or\n\
+127; special values ^- or undef used to disable special characters.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ /* Initialize to all zeroes so there is no risk memcmp will report a
+ spurious difference in an uninitialized portion of the structure. */
+ struct termios mode = { 0, };
+
+ enum output_type output_type;
+ int optc;
+ int argi = 0;
+ int opti = 1;
+ bool require_set_attr;
+ bool speed_was_set;
+ bool verbose_output;
+ bool recoverable_output;
+ int k;
+ bool noargs = true;
+ char *file_name = NULL;
+ const char *device_name;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ output_type = changed;
+ verbose_output = false;
+ recoverable_output = false;
+
+ /* Don't print error messages for unrecognized options. */
+ opterr = 0;
+
+ /* If any new options are ever added to stty, the short options MUST
+ NOT allow any ambiguity with the stty settings. For example, the
+ stty setting "-gagFork" would not be feasible, since it will be
+ parsed as "-g -a -g -F ork". If you change anything about how
+ stty parses options, be sure it still works with combinations of
+ short and long options, --, POSIXLY_CORRECT, etc. */
+
+ while ((optc = getopt_long (argc - argi, argv + argi, "-agF:",
+ longopts, NULL))
+ != -1)
+ {
+ switch (optc)
+ {
+ case 'a':
+ verbose_output = true;
+ output_type = all;
+ break;
+
+ case 'g':
+ recoverable_output = true;
+ output_type = recoverable;
+ break;
+
+ case 'F':
+ if (file_name)
+ error (EXIT_FAILURE, 0, _("only one device may be specified"));
+ file_name = optarg;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ noargs = false;
+
+ /* Skip the argument containing this unrecognized option;
+ the 2nd pass will analyze it. */
+ argi += opti;
+
+ /* Restart getopt_long from the first unskipped argument. */
+ opti = 1;
+ optind = 0;
+
+ break;
+ }
+
+ /* Clear fully-parsed arguments, so they don't confuse the 2nd pass. */
+ while (opti < optind)
+ argv[argi + opti++] = NULL;
+ }
+
+ /* Specifying both -a and -g gets an error. */
+ if (verbose_output & recoverable_output)
+ error (EXIT_FAILURE, 0,
+ _("the options for verbose and stty-readable output styles are\n"
+ "mutually exclusive"));
+
+ /* Specifying any other arguments with -a or -g gets an error. */
+ if (!noargs & (verbose_output | recoverable_output))
+ error (EXIT_FAILURE, 0,
+ _("when specifying an output style, modes may not be set"));
+
+ /* FIXME: it'd be better not to open the file until we've verified
+ that all arguments are valid. Otherwise, we could end up doing
+ only some of the requested operations and then failing, probably
+ leaving things in an undesirable state. */
+
+ if (file_name)
+ {
+ int fdflags;
+ device_name = file_name;
+ if (fd_reopen (STDIN_FILENO, device_name, O_RDONLY | O_NONBLOCK, 0) < 0)
+ error (EXIT_FAILURE, errno, "%s", device_name);
+ if ((fdflags = fcntl (STDIN_FILENO, F_GETFL)) == -1
+ || fcntl (STDIN_FILENO, F_SETFL, fdflags & ~O_NONBLOCK) < 0)
+ error (EXIT_FAILURE, errno, _("%s: couldn't reset non-blocking mode"),
+ device_name);
+ }
+ else
+ device_name = _("standard input");
+
+ if (tcgetattr (STDIN_FILENO, &mode))
+ error (EXIT_FAILURE, errno, "%s", device_name);
+
+ if (verbose_output | recoverable_output | noargs)
+ {
+ max_col = screen_columns ();
+ current_col = 0;
+ display_settings (output_type, &mode, device_name);
+ exit (EXIT_SUCCESS);
+ }
+
+ speed_was_set = false;
+ require_set_attr = false;
+ for (k = 1; k < argc; k++)
+ {
+ char const *arg = argv[k];
+ bool match_found = false;
+ bool reversed = false;
+ int i;
+
+ if (! arg)
+ continue;
+
+ if (arg[0] == '-')
+ {
+ ++arg;
+ reversed = true;
+ }
+ for (i = 0; mode_info[i].name != NULL; ++i)
+ {
+ if (STREQ (arg, mode_info[i].name))
+ {
+ match_found = set_mode (&mode_info[i], reversed, &mode);
+ require_set_attr = true;
+ break;
+ }
+ }
+ if (!match_found & reversed)
+ {
+ error (0, 0, _("invalid argument %s"), quote (arg - 1));
+ usage (EXIT_FAILURE);
+ }
+ if (!match_found)
+ {
+ for (i = 0; control_info[i].name != NULL; ++i)
+ {
+ if (STREQ (arg, control_info[i].name))
+ {
+ if (k == argc - 1)
+ {
+ error (0, 0, _("missing argument to %s"), quote (arg));
+ usage (EXIT_FAILURE);
+ }
+ match_found = true;
+ ++k;
+ set_control_char (&control_info[i], argv[k], &mode);
+ require_set_attr = true;
+ break;
+ }
+ }
+ }
+ if (!match_found)
+ {
+ if (STREQ (arg, "ispeed"))
+ {
+ if (k == argc - 1)
+ {
+ error (0, 0, _("missing argument to %s"), quote (arg));
+ usage (EXIT_FAILURE);
+ }
+ ++k;
+ set_speed (input_speed, argv[k], &mode);
+ speed_was_set = true;
+ require_set_attr = true;
+ }
+ else if (STREQ (arg, "ospeed"))
+ {
+ if (k == argc - 1)
+ {
+ error (0, 0, _("missing argument to %s"), quote (arg));
+ usage (EXIT_FAILURE);
+ }
+ ++k;
+ set_speed (output_speed, argv[k], &mode);
+ speed_was_set = true;
+ require_set_attr = true;
+ }
+#ifdef TIOCGWINSZ
+ else if (STREQ (arg, "rows"))
+ {
+ if (k == argc - 1)
+ {
+ error (0, 0, _("missing argument to %s"), quote (arg));
+ usage (EXIT_FAILURE);
+ }
+ ++k;
+ set_window_size (integer_arg (argv[k], INT_MAX), -1,
+ device_name);
+ }
+ else if (STREQ (arg, "cols")
+ || STREQ (arg, "columns"))
+ {
+ if (k == argc - 1)
+ {
+ error (0, 0, _("missing argument to %s"), quote (arg));
+ usage (EXIT_FAILURE);
+ }
+ ++k;
+ set_window_size (-1, integer_arg (argv[k], INT_MAX),
+ device_name);
+ }
+ else if (STREQ (arg, "size"))
+ {
+ max_col = screen_columns ();
+ current_col = 0;
+ display_window_size (false, device_name);
+ }
+#endif
+#ifdef HAVE_C_LINE
+ else if (STREQ (arg, "line"))
+ {
+ unsigned long int value;
+ if (k == argc - 1)
+ {
+ error (0, 0, _("missing argument to %s"), quote (arg));
+ usage (EXIT_FAILURE);
+ }
+ ++k;
+ mode.c_line = value = integer_arg (argv[k], ULONG_MAX);
+ if (mode.c_line != value)
+ error (0, 0, _("invalid line discipline %s"), quote (argv[k]));
+ require_set_attr = true;
+ }
+#endif
+ else if (STREQ (arg, "speed"))
+ {
+ max_col = screen_columns ();
+ display_speed (&mode, false);
+ }
+ else if (string_to_baud (arg) != (speed_t) -1)
+ {
+ set_speed (both_speeds, arg, &mode);
+ speed_was_set = true;
+ require_set_attr = true;
+ }
+ else
+ {
+ if (! recover_mode (arg, &mode))
+ {
+ error (0, 0, _("invalid argument %s"), quote (arg));
+ usage (EXIT_FAILURE);
+ }
+ require_set_attr = true;
+ }
+ }
+ }
+
+ if (require_set_attr)
+ {
+ /* Initialize to all zeroes so there is no risk memcmp will report a
+ spurious difference in an uninitialized portion of the structure. */
+ struct termios new_mode = { 0, };
+
+ if (tcsetattr (STDIN_FILENO, TCSADRAIN, &mode))
+ error (EXIT_FAILURE, errno, "%s", device_name);
+
+ /* POSIX (according to Zlotnick's book) tcsetattr returns zero if
+ it performs *any* of the requested operations. This means it
+ can report `success' when it has actually failed to perform
+ some proper subset of the requested operations. To detect
+ this partial failure, get the current terminal attributes and
+ compare them to the requested ones. */
+
+ if (tcgetattr (STDIN_FILENO, &new_mode))
+ error (EXIT_FAILURE, errno, "%s", device_name);
+
+ /* Normally, one shouldn't use memcmp to compare structures that
+ may have `holes' containing uninitialized data, but we have been
+ careful to initialize the storage of these two variables to all
+ zeroes. One might think it more efficient simply to compare the
+ modified fields, but that would require enumerating those fields --
+ and not all systems have the same fields in this structure. */
+
+ if (memcmp (&mode, &new_mode, sizeof (mode)) != 0)
+ {
+#ifdef CIBAUD
+ /* SunOS 4.1.3 (at least) has the problem that after this sequence,
+ tcgetattr (&m1); tcsetattr (&m1); tcgetattr (&m2);
+ sometimes (m1 != m2). The only difference is in the four bits
+ of the c_cflag field corresponding to the baud rate. To save
+ Sun users a little confusion, don't report an error if this
+ happens. But suppress the error only if we haven't tried to
+ set the baud rate explicitly -- otherwise we'd never give an
+ error for a true failure to set the baud rate. */
+
+ new_mode.c_cflag &= (~CIBAUD);
+ if (speed_was_set || memcmp (&mode, &new_mode, sizeof (mode)) != 0)
+#endif
+ {
+ error (EXIT_FAILURE, 0,
+ _("%s: unable to perform all requested operations"),
+ device_name);
+#ifdef TESTING
+ {
+ size_t i;
+ printf (_("new_mode: mode\n"));
+ for (i = 0; i < sizeof (new_mode); i++)
+ printf ("0x%02x: 0x%02x\n",
+ *(((unsigned char *) &new_mode) + i),
+ *(((unsigned char *) &mode) + i));
+ }
+#endif
+ }
+ }
+ }
+
+ exit (EXIT_SUCCESS);
+}
+
+/* Return false if not applied because not reversible; otherwise
+ return true. */
+
+static bool
+set_mode (struct mode_info *info, bool reversed, struct termios *mode)
+{
+ tcflag_t *bitsp;
+
+ if (reversed && (info->flags & REV) == 0)
+ return false;
+
+ bitsp = mode_type_flag (info->type, mode);
+
+ if (bitsp == NULL)
+ {
+ /* Combination mode. */
+ if (STREQ (info->name, "evenp") || STREQ (info->name, "parity"))
+ {
+ if (reversed)
+ mode->c_cflag = (mode->c_cflag & ~PARENB & ~CSIZE) | CS8;
+ else
+ mode->c_cflag = (mode->c_cflag & ~PARODD & ~CSIZE) | PARENB | CS7;
+ }
+ else if (STREQ (info->name, "oddp"))
+ {
+ if (reversed)
+ mode->c_cflag = (mode->c_cflag & ~PARENB & ~CSIZE) | CS8;
+ else
+ mode->c_cflag = (mode->c_cflag & ~CSIZE) | CS7 | PARODD | PARENB;
+ }
+ else if (STREQ (info->name, "nl"))
+ {
+ if (reversed)
+ {
+ mode->c_iflag = (mode->c_iflag | ICRNL) & ~INLCR & ~IGNCR;
+ mode->c_oflag = (mode->c_oflag
+#ifdef ONLCR
+ | ONLCR
+#endif
+ )
+#ifdef OCRNL
+ & ~OCRNL
+#endif
+#ifdef ONLRET
+ & ~ONLRET
+#endif
+ ;
+ }
+ else
+ {
+ mode->c_iflag = mode->c_iflag & ~ICRNL;
+#ifdef ONLCR
+ mode->c_oflag = mode->c_oflag & ~ONLCR;
+#endif
+ }
+ }
+ else if (STREQ (info->name, "ek"))
+ {
+ mode->c_cc[VERASE] = CERASE;
+ mode->c_cc[VKILL] = CKILL;
+ }
+ else if (STREQ (info->name, "sane"))
+ sane_mode (mode);
+ else if (STREQ (info->name, "cbreak"))
+ {
+ if (reversed)
+ mode->c_lflag |= ICANON;
+ else
+ mode->c_lflag &= ~ICANON;
+ }
+ else if (STREQ (info->name, "pass8"))
+ {
+ if (reversed)
+ {
+ mode->c_cflag = (mode->c_cflag & ~CSIZE) | CS7 | PARENB;
+ mode->c_iflag |= ISTRIP;
+ }
+ else
+ {
+ mode->c_cflag = (mode->c_cflag & ~PARENB & ~CSIZE) | CS8;
+ mode->c_iflag &= ~ISTRIP;
+ }
+ }
+ else if (STREQ (info->name, "litout"))
+ {
+ if (reversed)
+ {
+ mode->c_cflag = (mode->c_cflag & ~CSIZE) | CS7 | PARENB;
+ mode->c_iflag |= ISTRIP;
+ mode->c_oflag |= OPOST;
+ }
+ else
+ {
+ mode->c_cflag = (mode->c_cflag & ~PARENB & ~CSIZE) | CS8;
+ mode->c_iflag &= ~ISTRIP;
+ mode->c_oflag &= ~OPOST;
+ }
+ }
+ else if (STREQ (info->name, "raw") || STREQ (info->name, "cooked"))
+ {
+ if ((info->name[0] == 'r' && reversed)
+ || (info->name[0] == 'c' && !reversed))
+ {
+ /* Cooked mode. */
+ mode->c_iflag |= BRKINT | IGNPAR | ISTRIP | ICRNL | IXON;
+ mode->c_oflag |= OPOST;
+ mode->c_lflag |= ISIG | ICANON;
+#if VMIN == VEOF
+ mode->c_cc[VEOF] = CEOF;
+#endif
+#if VTIME == VEOL
+ mode->c_cc[VEOL] = CEOL;
+#endif
+ }
+ else
+ {
+ /* Raw mode. */
+ mode->c_iflag = 0;
+ mode->c_oflag &= ~OPOST;
+ mode->c_lflag &= ~(ISIG | ICANON
+#ifdef XCASE
+ | XCASE
+#endif
+ );
+ mode->c_cc[VMIN] = 1;
+ mode->c_cc[VTIME] = 0;
+ }
+ }
+#ifdef IXANY
+ else if (STREQ (info->name, "decctlq"))
+ {
+ if (reversed)
+ mode->c_iflag |= IXANY;
+ else
+ mode->c_iflag &= ~IXANY;
+ }
+#endif
+#ifdef TABDLY
+ else if (STREQ (info->name, "tabs"))
+ {
+ if (reversed)
+ mode->c_oflag = (mode->c_oflag & ~TABDLY) | TAB3;
+ else
+ mode->c_oflag = (mode->c_oflag & ~TABDLY) | TAB0;
+ }
+#else
+# ifdef OXTABS
+ else if (STREQ (info->name, "tabs"))
+ {
+ if (reversed)
+ mode->c_oflag = mode->c_oflag | OXTABS;
+ else
+ mode->c_oflag = mode->c_oflag & ~OXTABS;
+ }
+# endif
+#endif
+#if defined XCASE && defined IUCLC && defined OLCUC
+ else if (STREQ (info->name, "lcase")
+ || STREQ (info->name, "LCASE"))
+ {
+ if (reversed)
+ {
+ mode->c_lflag &= ~XCASE;
+ mode->c_iflag &= ~IUCLC;
+ mode->c_oflag &= ~OLCUC;
+ }
+ else
+ {
+ mode->c_lflag |= XCASE;
+ mode->c_iflag |= IUCLC;
+ mode->c_oflag |= OLCUC;
+ }
+ }
+#endif
+ else if (STREQ (info->name, "crt"))
+ mode->c_lflag |= ECHOE
+#ifdef ECHOCTL
+ | ECHOCTL
+#endif
+#ifdef ECHOKE
+ | ECHOKE
+#endif
+ ;
+ else if (STREQ (info->name, "dec"))
+ {
+ mode->c_cc[VINTR] = 3; /* ^C */
+ mode->c_cc[VERASE] = 127; /* DEL */
+ mode->c_cc[VKILL] = 21; /* ^U */
+ mode->c_lflag |= ECHOE
+#ifdef ECHOCTL
+ | ECHOCTL
+#endif
+#ifdef ECHOKE
+ | ECHOKE
+#endif
+ ;
+#ifdef IXANY
+ mode->c_iflag &= ~IXANY;
+#endif
+ }
+ }
+ else if (reversed)
+ *bitsp = *bitsp & ~info->mask & ~info->bits;
+ else
+ *bitsp = (*bitsp & ~info->mask) | info->bits;
+
+ return true;
+}
+
+static void
+set_control_char (struct control_info *info, const char *arg,
+ struct termios *mode)
+{
+ unsigned long int value;
+
+ if (STREQ (info->name, "min") || STREQ (info->name, "time"))
+ value = integer_arg (arg, TYPE_MAXIMUM (cc_t));
+ else if (arg[0] == '\0' || arg[1] == '\0')
+ value = to_uchar (arg[0]);
+ else if (STREQ (arg, "^-") || STREQ (arg, "undef"))
+ value = _POSIX_VDISABLE;
+ else if (arg[0] == '^' && arg[1] != '\0') /* Ignore any trailing junk. */
+ {
+ if (arg[1] == '?')
+ value = 127;
+ else
+ value = to_uchar (arg[1]) & ~0140; /* Non-letters get weird results. */
+ }
+ else
+ value = integer_arg (arg, TYPE_MAXIMUM (cc_t));
+ mode->c_cc[info->offset] = value;
+}
+
+static void
+set_speed (enum speed_setting type, const char *arg, struct termios *mode)
+{
+ speed_t baud;
+
+ baud = string_to_baud (arg);
+ if (type == input_speed || type == both_speeds)
+ cfsetispeed (mode, baud);
+ if (type == output_speed || type == both_speeds)
+ cfsetospeed (mode, baud);
+}
+
+#ifdef TIOCGWINSZ
+
+static int
+get_win_size (int fd, struct winsize *win)
+{
+ int err = ioctl (fd, TIOCGWINSZ, (char *) win);
+ return err;
+}
+
+static void
+set_window_size (int rows, int cols, char const *device_name)
+{
+ struct winsize win;
+
+ if (get_win_size (STDIN_FILENO, &win))
+ {
+ if (errno != EINVAL)
+ error (EXIT_FAILURE, errno, "%s", device_name);
+ memset (&win, 0, sizeof (win));
+ }
+
+ if (rows >= 0)
+ win.ws_row = rows;
+ if (cols >= 0)
+ win.ws_col = cols;
+
+# ifdef TIOCSSIZE
+ /* Alexander Dupuy <dupuy@cs.columbia.edu> wrote:
+ The following code deals with a bug in the SunOS 4.x (and 3.x?) kernel.
+ This comment from sys/ttold.h describes Sun's twisted logic - a better
+ test would have been (ts_lines > 64k || ts_cols > 64k || ts_cols == 0).
+ At any rate, the problem is gone in Solaris 2.x.
+
+ Unfortunately, the old TIOCSSIZE code does collide with TIOCSWINSZ,
+ but they can be disambiguated by checking whether a "struct ttysize"
+ structure's "ts_lines" field is greater than 64K or not. If so,
+ it's almost certainly a "struct winsize" instead.
+
+ At any rate, the bug manifests itself when ws_row == 0; the symptom is
+ that ws_row is set to ws_col, and ws_col is set to (ws_xpixel<<16) +
+ ws_ypixel. Since GNU stty sets rows and columns separately, this bug
+ caused "stty rows 0 cols 0" to set rows to cols and cols to 0, while
+ "stty cols 0 rows 0" would do the right thing. On a little-endian
+ machine like the sun386i, the problem is the same, but for ws_col == 0.
+
+ The workaround is to do the ioctl once with row and col = 1 to set the
+ pixel info, and then do it again using a TIOCSSIZE to set rows/cols. */
+
+ if (win.ws_row == 0 || win.ws_col == 0)
+ {
+ struct ttysize ttysz;
+
+ ttysz.ts_lines = win.ws_row;
+ ttysz.ts_cols = win.ws_col;
+
+ win.ws_row = 1;
+ win.ws_col = 1;
+
+ if (ioctl (STDIN_FILENO, TIOCSWINSZ, (char *) &win))
+ error (EXIT_FAILURE, errno, "%s", device_name);
+
+ if (ioctl (STDIN_FILENO, TIOCSSIZE, (char *) &ttysz))
+ error (EXIT_FAILURE, errno, "%s", device_name);
+ return;
+ }
+# endif
+
+ if (ioctl (STDIN_FILENO, TIOCSWINSZ, (char *) &win))
+ error (EXIT_FAILURE, errno, "%s", device_name);
+}
+
+static void
+display_window_size (bool fancy, char const *device_name)
+{
+ struct winsize win;
+
+ if (get_win_size (STDIN_FILENO, &win))
+ {
+ if (errno != EINVAL)
+ error (EXIT_FAILURE, errno, "%s", device_name);
+ if (!fancy)
+ error (EXIT_FAILURE, 0,
+ _("%s: no size information for this device"), device_name);
+ }
+ else
+ {
+ wrapf (fancy ? "rows %d; columns %d;" : "%d %d\n",
+ win.ws_row, win.ws_col);
+ if (!fancy)
+ current_col = 0;
+ }
+}
+#endif
+
+static int
+screen_columns (void)
+{
+#ifdef TIOCGWINSZ
+ struct winsize win;
+
+ /* With Solaris 2.[123], this ioctl fails and errno is set to
+ EINVAL for telnet (but not rlogin) sessions.
+ On ISC 3.0, it fails for the console and the serial port
+ (but it works for ptys).
+ It can also fail on any system when stdout isn't a tty.
+ In case of any failure, just use the default. */
+ if (get_win_size (STDOUT_FILENO, &win) == 0 && 0 < win.ws_col)
+ return win.ws_col;
+#endif
+ {
+ /* Use $COLUMNS if it's in [1..INT_MAX]. */
+ char *col_string = getenv ("COLUMNS");
+ long int n_columns;
+ if (!(col_string != NULL
+ && xstrtol (col_string, NULL, 0, &n_columns, "") == LONGINT_OK
+ && 0 < n_columns
+ && n_columns <= INT_MAX))
+ n_columns = 80;
+ return n_columns;
+ }
+}
+
+static tcflag_t *
+mode_type_flag (enum mode_type type, struct termios *mode)
+{
+ switch (type)
+ {
+ case control:
+ return &mode->c_cflag;
+
+ case input:
+ return &mode->c_iflag;
+
+ case output:
+ return &mode->c_oflag;
+
+ case local:
+ return &mode->c_lflag;
+
+ case combination:
+ return NULL;
+
+ default:
+ abort ();
+ }
+}
+
+static void
+display_settings (enum output_type output_type, struct termios *mode,
+ char const *device_name)
+{
+ switch (output_type)
+ {
+ case changed:
+ display_changed (mode);
+ break;
+
+ case all:
+ display_all (mode, device_name);
+ break;
+
+ case recoverable:
+ display_recoverable (mode);
+ break;
+ }
+}
+
+static void
+display_changed (struct termios *mode)
+{
+ int i;
+ bool empty_line;
+ tcflag_t *bitsp;
+ unsigned long mask;
+ enum mode_type prev_type = control;
+
+ display_speed (mode, true);
+#ifdef HAVE_C_LINE
+ wrapf ("line = %d;", mode->c_line);
+#endif
+ putchar ('\n');
+ current_col = 0;
+
+ empty_line = true;
+ for (i = 0; !STREQ (control_info[i].name, "min"); ++i)
+ {
+ if (mode->c_cc[control_info[i].offset] == control_info[i].saneval)
+ continue;
+ /* If swtch is the same as susp, don't print both. */
+#if VSWTCH == VSUSP
+ if (STREQ (control_info[i].name, "swtch"))
+ continue;
+#endif
+ /* If eof uses the same slot as min, only print whichever applies. */
+#if VEOF == VMIN
+ if ((mode->c_lflag & ICANON) == 0
+ && (STREQ (control_info[i].name, "eof")
+ || STREQ (control_info[i].name, "eol")))
+ continue;
+#endif
+
+ empty_line = false;
+ wrapf ("%s = %s;", control_info[i].name,
+ visible (mode->c_cc[control_info[i].offset]));
+ }
+ if ((mode->c_lflag & ICANON) == 0)
+ {
+ wrapf ("min = %lu; time = %lu;\n",
+ (unsigned long int) mode->c_cc[VMIN],
+ (unsigned long int) mode->c_cc[VTIME]);
+ }
+ else if (!empty_line)
+ putchar ('\n');
+ current_col = 0;
+
+ empty_line = true;
+ for (i = 0; mode_info[i].name != NULL; ++i)
+ {
+ if (mode_info[i].flags & OMIT)
+ continue;
+ if (mode_info[i].type != prev_type)
+ {
+ if (!empty_line)
+ {
+ putchar ('\n');
+ current_col = 0;
+ empty_line = true;
+ }
+ prev_type = mode_info[i].type;
+ }
+
+ bitsp = mode_type_flag (mode_info[i].type, mode);
+ mask = mode_info[i].mask ? mode_info[i].mask : mode_info[i].bits;
+ if ((*bitsp & mask) == mode_info[i].bits)
+ {
+ if (mode_info[i].flags & SANE_UNSET)
+ {
+ wrapf ("%s", mode_info[i].name);
+ empty_line = false;
+ }
+ }
+ else if ((mode_info[i].flags & (SANE_SET | REV)) == (SANE_SET | REV))
+ {
+ wrapf ("-%s", mode_info[i].name);
+ empty_line = false;
+ }
+ }
+ if (!empty_line)
+ putchar ('\n');
+ current_col = 0;
+}
+
+static void
+display_all (struct termios *mode, char const *device_name)
+{
+ int i;
+ tcflag_t *bitsp;
+ unsigned long mask;
+ enum mode_type prev_type = control;
+
+ display_speed (mode, true);
+#ifdef TIOCGWINSZ
+ display_window_size (true, device_name);
+#endif
+#ifdef HAVE_C_LINE
+ wrapf ("line = %d;", mode->c_line);
+#endif
+ putchar ('\n');
+ current_col = 0;
+
+ for (i = 0; ! STREQ (control_info[i].name, "min"); ++i)
+ {
+ /* If swtch is the same as susp, don't print both. */
+#if VSWTCH == VSUSP
+ if (STREQ (control_info[i].name, "swtch"))
+ continue;
+#endif
+ /* If eof uses the same slot as min, only print whichever applies. */
+#if VEOF == VMIN
+ if ((mode->c_lflag & ICANON) == 0
+ && (STREQ (control_info[i].name, "eof")
+ || STREQ (control_info[i].name, "eol")))
+ continue;
+#endif
+ wrapf ("%s = %s;", control_info[i].name,
+ visible (mode->c_cc[control_info[i].offset]));
+ }
+#if VEOF == VMIN
+ if ((mode->c_lflag & ICANON) == 0)
+#endif
+ wrapf ("min = %lu; time = %lu;",
+ (unsigned long int) mode->c_cc[VMIN],
+ (unsigned long int) mode->c_cc[VTIME]);
+ if (current_col != 0)
+ putchar ('\n');
+ current_col = 0;
+
+ for (i = 0; mode_info[i].name != NULL; ++i)
+ {
+ if (mode_info[i].flags & OMIT)
+ continue;
+ if (mode_info[i].type != prev_type)
+ {
+ putchar ('\n');
+ current_col = 0;
+ prev_type = mode_info[i].type;
+ }
+
+ bitsp = mode_type_flag (mode_info[i].type, mode);
+ mask = mode_info[i].mask ? mode_info[i].mask : mode_info[i].bits;
+ if ((*bitsp & mask) == mode_info[i].bits)
+ wrapf ("%s", mode_info[i].name);
+ else if (mode_info[i].flags & REV)
+ wrapf ("-%s", mode_info[i].name);
+ }
+ putchar ('\n');
+ current_col = 0;
+}
+
+static void
+display_speed (struct termios *mode, bool fancy)
+{
+ if (cfgetispeed (mode) == 0 || cfgetispeed (mode) == cfgetospeed (mode))
+ wrapf (fancy ? "speed %lu baud;" : "%lu\n",
+ baud_to_value (cfgetospeed (mode)));
+ else
+ wrapf (fancy ? "ispeed %lu baud; ospeed %lu baud;" : "%lu %lu\n",
+ baud_to_value (cfgetispeed (mode)),
+ baud_to_value (cfgetospeed (mode)));
+ if (!fancy)
+ current_col = 0;
+}
+
+static void
+display_recoverable (struct termios *mode)
+{
+ size_t i;
+
+ printf ("%lx:%lx:%lx:%lx",
+ (unsigned long int) mode->c_iflag,
+ (unsigned long int) mode->c_oflag,
+ (unsigned long int) mode->c_cflag,
+ (unsigned long int) mode->c_lflag);
+ for (i = 0; i < NCCS; ++i)
+ printf (":%lx", (unsigned long int) mode->c_cc[i]);
+ putchar ('\n');
+}
+
+static bool
+recover_mode (char const *arg, struct termios *mode)
+{
+ size_t i;
+ int n;
+ unsigned long int chr;
+ unsigned long int iflag, oflag, cflag, lflag;
+
+ /* Scan into temporaries since it is too much trouble to figure out
+ the right format for `tcflag_t'. */
+ if (sscanf (arg, "%lx:%lx:%lx:%lx%n",
+ &iflag, &oflag, &cflag, &lflag, &n) != 4)
+ return false;
+ mode->c_iflag = iflag;
+ mode->c_oflag = oflag;
+ mode->c_cflag = cflag;
+ mode->c_lflag = lflag;
+ if (mode->c_iflag != iflag
+ || mode->c_oflag != oflag
+ || mode->c_cflag != cflag
+ || mode->c_lflag != lflag)
+ return false;
+ arg += n;
+ for (i = 0; i < NCCS; ++i)
+ {
+ if (sscanf (arg, ":%lx%n", &chr, &n) != 1)
+ return false;
+ mode->c_cc[i] = chr;
+ if (mode->c_cc[i] != chr)
+ return false;
+ arg += n;
+ }
+
+ /* Fail if there are too many fields. */
+ if (*arg != '\0')
+ return false;
+
+ return true;
+}
+
+struct speed_map
+{
+ const char *string; /* ASCII representation. */
+ speed_t speed; /* Internal form. */
+ unsigned long int value; /* Numeric value. */
+};
+
+static struct speed_map speeds[] =
+{
+ {"0", B0, 0},
+ {"50", B50, 50},
+ {"75", B75, 75},
+ {"110", B110, 110},
+ {"134", B134, 134},
+ {"134.5", B134, 134},
+ {"150", B150, 150},
+ {"200", B200, 200},
+ {"300", B300, 300},
+ {"600", B600, 600},
+ {"1200", B1200, 1200},
+ {"1800", B1800, 1800},
+ {"2400", B2400, 2400},
+ {"4800", B4800, 4800},
+ {"9600", B9600, 9600},
+ {"19200", B19200, 19200},
+ {"38400", B38400, 38400},
+ {"exta", B19200, 19200},
+ {"extb", B38400, 38400},
+#ifdef B57600
+ {"57600", B57600, 57600},
+#endif
+#ifdef B115200
+ {"115200", B115200, 115200},
+#endif
+#ifdef B230400
+ {"230400", B230400, 230400},
+#endif
+#ifdef B460800
+ {"460800", B460800, 460800},
+#endif
+#ifdef B500000
+ {"500000", B500000, 500000},
+#endif
+#ifdef B576000
+ {"576000", B576000, 576000},
+#endif
+#ifdef B921600
+ {"921600", B921600, 921600},
+#endif
+#ifdef B1000000
+ {"1000000", B1000000, 1000000},
+#endif
+#ifdef B1152000
+ {"1152000", B1152000, 1152000},
+#endif
+#ifdef B1500000
+ {"1500000", B1500000, 1500000},
+#endif
+#ifdef B2000000
+ {"2000000", B2000000, 2000000},
+#endif
+#ifdef B2500000
+ {"2500000", B2500000, 2500000},
+#endif
+#ifdef B3000000
+ {"3000000", B3000000, 3000000},
+#endif
+#ifdef B3500000
+ {"3500000", B3500000, 3500000},
+#endif
+#ifdef B4000000
+ {"4000000", B4000000, 4000000},
+#endif
+ {NULL, 0, 0}
+};
+
+static speed_t
+string_to_baud (const char *arg)
+{
+ int i;
+
+ for (i = 0; speeds[i].string != NULL; ++i)
+ if (STREQ (arg, speeds[i].string))
+ return speeds[i].speed;
+ return (speed_t) -1;
+}
+
+static unsigned long int
+baud_to_value (speed_t speed)
+{
+ int i;
+
+ for (i = 0; speeds[i].string != NULL; ++i)
+ if (speed == speeds[i].speed)
+ return speeds[i].value;
+ return 0;
+}
+
+static void
+sane_mode (struct termios *mode)
+{
+ int i;
+ tcflag_t *bitsp;
+
+ for (i = 0; control_info[i].name; ++i)
+ {
+#if VMIN == VEOF
+ if (STREQ (control_info[i].name, "min"))
+ break;
+#endif
+ mode->c_cc[control_info[i].offset] = control_info[i].saneval;
+ }
+
+ for (i = 0; mode_info[i].name != NULL; ++i)
+ {
+ if (mode_info[i].flags & SANE_SET)
+ {
+ bitsp = mode_type_flag (mode_info[i].type, mode);
+ *bitsp = (*bitsp & ~mode_info[i].mask) | mode_info[i].bits;
+ }
+ else if (mode_info[i].flags & SANE_UNSET)
+ {
+ bitsp = mode_type_flag (mode_info[i].type, mode);
+ *bitsp = *bitsp & ~mode_info[i].mask & ~mode_info[i].bits;
+ }
+ }
+}
+
+/* Return a string that is the printable representation of character CH. */
+/* Adapted from `cat' by Torbjorn Granlund. */
+
+static const char *
+visible (cc_t ch)
+{
+ static char buf[10];
+ char *bpout = buf;
+
+ if (ch == _POSIX_VDISABLE)
+ return "<undef>";
+
+ if (ch >= 32)
+ {
+ if (ch < 127)
+ *bpout++ = ch;
+ else if (ch == 127)
+ {
+ *bpout++ = '^';
+ *bpout++ = '?';
+ }
+ else
+ {
+ *bpout++ = 'M',
+ *bpout++ = '-';
+ if (ch >= 128 + 32)
+ {
+ if (ch < 128 + 127)
+ *bpout++ = ch - 128;
+ else
+ {
+ *bpout++ = '^';
+ *bpout++ = '?';
+ }
+ }
+ else
+ {
+ *bpout++ = '^';
+ *bpout++ = ch - 128 + 64;
+ }
+ }
+ }
+ else
+ {
+ *bpout++ = '^';
+ *bpout++ = ch + 64;
+ }
+ *bpout = '\0';
+ return (const char *) buf;
+}
+
+/* Parse string S as an integer, using decimal radix by default,
+ but allowing octal and hex numbers as in C. Reject values
+ larger than MAXVAL. */
+
+static unsigned long int
+integer_arg (const char *s, unsigned long int maxval)
+{
+ unsigned long int value;
+ if (xstrtoul (s, NULL, 0, &value, "bB") != LONGINT_OK
+ || maxval < value)
+ {
+ error (0, 0, _("invalid integer argument %s"), quote (s));
+ usage (EXIT_FAILURE);
+ }
+ return value;
+}
diff --git a/src/su.c b/src/su.c
new file mode 100644
index 0000000..70828b8
--- /dev/null
+++ b/src/su.c
@@ -0,0 +1,526 @@
+/* su for GNU. Run a shell with substitute user and group IDs.
+ Copyright (C) 1992-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Run a shell with the real and effective UID and GID and groups
+ of USER, default `root'.
+
+ The shell run is taken from USER's password entry, /bin/sh if
+ none is specified there. If the account has a password, su
+ prompts for a password unless run by a user with real UID 0.
+
+ Does not change the current directory.
+ Sets `HOME' and `SHELL' from the password entry for USER, and if
+ USER is not root, sets `USER' and `LOGNAME' to USER.
+ The subshell is not a login shell.
+
+ If one or more ARGs are given, they are passed as additional
+ arguments to the subshell.
+
+ Does not handle /bin/sh or other shells specially
+ (setting argv[0] to "-su", passing -c only to certain shells, etc.).
+ I don't see the point in doing that, and it's ugly.
+
+ This program intentionally does not support a "wheel group" that
+ restricts who can su to UID 0 accounts. RMS considers that to
+ be fascist.
+
+ Compile-time options:
+ -DSYSLOG_SUCCESS Log successful su's (by default, to root) with syslog.
+ -DSYSLOG_FAILURE Log failed su's (by default, to root) with syslog.
+
+ -DSYSLOG_NON_ROOT Log all su's, not just those to root (UID 0).
+ Never logs attempted su's to nonexistent accounts.
+
+ Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <grp.h>
+
+/* Hide any system prototype for getusershell.
+ This is necessary because some Cray systems have a conflicting
+ prototype (returning `int') in <unistd.h>. */
+#define getusershell _getusershell_sys_proto_
+
+#include "system.h"
+#include "getpass.h"
+
+#undef getusershell
+
+#if HAVE_SYSLOG_H && HAVE_SYSLOG
+# include <syslog.h>
+#else
+# undef SYSLOG_SUCCESS
+# undef SYSLOG_FAILURE
+# undef SYSLOG_NON_ROOT
+#endif
+
+#if HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+
+#ifndef HAVE_ENDGRENT
+# define endgrent() ((void) 0)
+#endif
+
+#ifndef HAVE_ENDPWENT
+# define endpwent() ((void) 0)
+#endif
+
+#if HAVE_SHADOW_H
+# include <shadow.h>
+#endif
+
+#include "error.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "su"
+
+#define AUTHORS "David MacKenzie"
+
+#if HAVE_PATHS_H
+# include <paths.h>
+#endif
+
+/* The default PATH for simulated logins to non-superuser accounts. */
+#ifdef _PATH_DEFPATH
+# define DEFAULT_LOGIN_PATH _PATH_DEFPATH
+#else
+# define DEFAULT_LOGIN_PATH ":/usr/ucb:/bin:/usr/bin"
+#endif
+
+/* The default PATH for simulated logins to superuser accounts. */
+#ifdef _PATH_DEFPATH_ROOT
+# define DEFAULT_ROOT_LOGIN_PATH _PATH_DEFPATH_ROOT
+#else
+# define DEFAULT_ROOT_LOGIN_PATH "/usr/ucb:/bin:/usr/bin:/etc"
+#endif
+
+/* The shell to run if none is given in the user's passwd entry. */
+#define DEFAULT_SHELL "/bin/sh"
+
+/* The user to become if none is specified. */
+#define DEFAULT_USER "root"
+
+char *crypt ();
+char *getusershell ();
+void endusershell ();
+void setusershell ();
+
+extern char **environ;
+
+static void run_shell (char const *, char const *, char **, size_t)
+ ATTRIBUTE_NORETURN;
+
+/* The name this program was run with. */
+char *program_name;
+
+/* If true, pass the `-f' option to the subshell. */
+static bool fast_startup;
+
+/* If true, simulate a login instead of just starting a shell. */
+static bool simulate_login;
+
+/* If true, change some environment vars to indicate the user su'd to. */
+static bool change_environment;
+
+static struct option const longopts[] =
+{
+ {"command", required_argument, NULL, 'c'},
+ {"fast", no_argument, NULL, 'f'},
+ {"login", no_argument, NULL, 'l'},
+ {"preserve-environment", no_argument, NULL, 'p'},
+ {"shell", required_argument, NULL, 's'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+/* Add NAME=VAL to the environment, checking for out of memory errors. */
+
+static void
+xsetenv (char const *name, char const *val)
+{
+ size_t namelen = strlen (name);
+ size_t vallen = strlen (val);
+ char *string = xmalloc (namelen + 1 + vallen + 1);
+ strcpy (string, name);
+ string[namelen] = '=';
+ strcpy (string + namelen + 1, val);
+ if (putenv (string) != 0)
+ xalloc_die ();
+}
+
+#if defined SYSLOG_SUCCESS || defined SYSLOG_FAILURE
+/* Log the fact that someone has run su to the user given by PW;
+ if SUCCESSFUL is true, they gave the correct password, etc. */
+
+static void
+log_su (struct passwd const *pw, bool successful)
+{
+ const char *new_user, *old_user, *tty;
+
+# ifndef SYSLOG_NON_ROOT
+ if (pw->pw_uid)
+ return;
+# endif
+ new_user = pw->pw_name;
+ /* The utmp entry (via getlogin) is probably the best way to identify
+ the user, especially if someone su's from a su-shell. */
+ old_user = getlogin ();
+ if (!old_user)
+ {
+ /* getlogin can fail -- usually due to lack of utmp entry.
+ Resort to getpwuid. */
+ struct passwd *pwd = getpwuid (getuid ());
+ old_user = (pwd ? pwd->pw_name : "");
+ }
+ tty = ttyname (STDERR_FILENO);
+ if (!tty)
+ tty = "none";
+ /* 4.2BSD openlog doesn't have the third parameter. */
+ openlog (last_component (program_name), 0
+# ifdef LOG_AUTH
+ , LOG_AUTH
+# endif
+ );
+ syslog (LOG_NOTICE,
+# ifdef SYSLOG_NON_ROOT
+ "%s(to %s) %s on %s",
+# else
+ "%s%s on %s",
+# endif
+ successful ? "" : "FAILED SU ",
+# ifdef SYSLOG_NON_ROOT
+ new_user,
+# endif
+ old_user, tty);
+ closelog ();
+}
+#endif
+
+/* Ask the user for a password.
+ Return true if the user gives the correct password for entry PW,
+ false if not. Return true without asking for a password if run by UID 0
+ or if PW has an empty password. */
+
+static bool
+correct_password (const struct passwd *pw)
+{
+ char *unencrypted, *encrypted, *correct;
+#if HAVE_GETSPNAM && HAVE_STRUCT_SPWD_SP_PWDP
+ /* Shadow passwd stuff for SVR3 and maybe other systems. */
+ struct spwd *sp = getspnam (pw->pw_name);
+
+ endspent ();
+ if (sp)
+ correct = sp->sp_pwdp;
+ else
+#endif
+ correct = pw->pw_passwd;
+
+ if (getuid () == 0 || !correct || correct[0] == '\0')
+ return true;
+
+ unencrypted = getpass (_("Password:"));
+ if (!unencrypted)
+ {
+ error (0, 0, _("getpass: cannot open /dev/tty"));
+ return false;
+ }
+ encrypted = crypt (unencrypted, correct);
+ memset (unencrypted, 0, strlen (unencrypted));
+ return STREQ (encrypted, correct);
+}
+
+/* Update `environ' for the new shell based on PW, with SHELL being
+ the value for the SHELL environment variable. */
+
+static void
+modify_environment (const struct passwd *pw, const char *shell)
+{
+ if (simulate_login)
+ {
+ /* Leave TERM unchanged. Set HOME, SHELL, USER, LOGNAME, PATH.
+ Unset all other environment variables. */
+ char const *term = getenv ("TERM");
+ if (term)
+ term = xstrdup (term);
+ environ = xmalloc ((6 + !!term) * sizeof (char *));
+ environ[0] = NULL;
+ if (term)
+ xsetenv ("TERM", term);
+ xsetenv ("HOME", pw->pw_dir);
+ xsetenv ("SHELL", shell);
+ xsetenv ("USER", pw->pw_name);
+ xsetenv ("LOGNAME", pw->pw_name);
+ xsetenv ("PATH", (pw->pw_uid
+ ? DEFAULT_LOGIN_PATH
+ : DEFAULT_ROOT_LOGIN_PATH));
+ }
+ else
+ {
+ /* Set HOME, SHELL, and if not becoming a super-user,
+ USER and LOGNAME. */
+ if (change_environment)
+ {
+ xsetenv ("HOME", pw->pw_dir);
+ xsetenv ("SHELL", shell);
+ if (pw->pw_uid)
+ {
+ xsetenv ("USER", pw->pw_name);
+ xsetenv ("LOGNAME", pw->pw_name);
+ }
+ }
+ }
+}
+
+/* Become the user and group(s) specified by PW. */
+
+static void
+change_identity (const struct passwd *pw)
+{
+#ifdef HAVE_INITGROUPS
+ errno = 0;
+ if (initgroups (pw->pw_name, pw->pw_gid) == -1)
+ error (EXIT_FAIL, errno, _("cannot set groups"));
+ endgrent ();
+#endif
+ if (setgid (pw->pw_gid))
+ error (EXIT_FAIL, errno, _("cannot set group id"));
+ if (setuid (pw->pw_uid))
+ error (EXIT_FAIL, errno, _("cannot set user id"));
+}
+
+/* Run SHELL, or DEFAULT_SHELL if SHELL is empty.
+ If COMMAND is nonzero, pass it to the shell with the -c option.
+ Pass ADDITIONAL_ARGS to the shell as more arguments; there
+ are N_ADDITIONAL_ARGS extra arguments. */
+
+static void
+run_shell (char const *shell, char const *command, char **additional_args,
+ size_t n_additional_args)
+{
+ size_t n_args = 1 + fast_startup + 2 * !!command + n_additional_args + 1;
+ char const **args = xnmalloc (n_args, sizeof *args);
+ size_t argno = 1;
+
+ if (simulate_login)
+ {
+ char *arg0;
+ char *shell_basename;
+
+ shell_basename = last_component (shell);
+ arg0 = xmalloc (strlen (shell_basename) + 2);
+ arg0[0] = '-';
+ strcpy (arg0 + 1, shell_basename);
+ args[0] = arg0;
+ }
+ else
+ args[0] = last_component (shell);
+ if (fast_startup)
+ args[argno++] = "-f";
+ if (command)
+ {
+ args[argno++] = "-c";
+ args[argno++] = command;
+ }
+ memcpy (args + argno, additional_args, n_additional_args * sizeof *args);
+ args[argno + n_additional_args] = NULL;
+ execv (shell, (char **) args);
+
+ {
+ int exit_status = (errno == ENOENT ? EXIT_ENOENT : EXIT_CANNOT_INVOKE);
+ error (0, errno, "%s", shell);
+ exit (exit_status);
+ }
+}
+
+/* Return true if SHELL is a restricted shell (one not returned by
+ getusershell), else false, meaning it is a standard shell. */
+
+static bool
+restricted_shell (const char *shell)
+{
+ char *line;
+
+ setusershell ();
+ while ((line = getusershell ()) != NULL)
+ {
+ if (*line != '#' && STREQ (line, shell))
+ {
+ endusershell ();
+ return false;
+ }
+ }
+ endusershell ();
+ return true;
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]... [-] [USER [ARG]...]\n"), program_name);
+ fputs (_("\
+Change the effective user id and group id to that of USER.\n\
+\n\
+ -, -l, --login make the shell a login shell\n\
+ -c, --command=COMMAND pass a single COMMAND to the shell with -c\n\
+ -f, --fast pass -f to the shell (for csh or tcsh)\n\
+ -m, --preserve-environment do not reset environment variables\n\
+ -p same as -m\n\
+ -s, --shell=SHELL run SHELL if /etc/shells allows it\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+A mere - implies -l. If USER not given, assume root.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ int optc;
+ const char *new_user = DEFAULT_USER;
+ char *command = NULL;
+ char *shell = NULL;
+ struct passwd *pw;
+ struct passwd pw_copy;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ initialize_exit_failure (EXIT_FAIL);
+ atexit (close_stdout);
+
+ fast_startup = false;
+ simulate_login = false;
+ change_environment = true;
+
+ while ((optc = getopt_long (argc, argv, "c:flmps:", longopts, NULL)) != -1)
+ {
+ switch (optc)
+ {
+ case 'c':
+ command = optarg;
+ break;
+
+ case 'f':
+ fast_startup = true;
+ break;
+
+ case 'l':
+ simulate_login = true;
+ break;
+
+ case 'm':
+ case 'p':
+ change_environment = false;
+ break;
+
+ case 's':
+ shell = optarg;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAIL);
+ }
+ }
+
+ if (optind < argc && STREQ (argv[optind], "-"))
+ {
+ simulate_login = true;
+ ++optind;
+ }
+ if (optind < argc)
+ new_user = argv[optind++];
+
+ pw = getpwnam (new_user);
+ if (! (pw && pw->pw_name && pw->pw_name[0] && pw->pw_dir && pw->pw_dir[0]
+ && pw->pw_passwd))
+ error (EXIT_FAIL, 0, _("user %s does not exist"), new_user);
+
+ /* Make a copy of the password information and point pw at the local
+ copy instead. Otherwise, some systems (e.g. Linux) would clobber
+ the static data through the getlogin call from log_su.
+ Also, make sure pw->pw_shell is a nonempty string.
+ It may be NULL when NEW_USER is a username that is retrieved via NIS (YP),
+ but that doesn't have a default shell listed. */
+ pw_copy = *pw;
+ pw = &pw_copy;
+ pw->pw_name = xstrdup (pw->pw_name);
+ pw->pw_passwd = xstrdup (pw->pw_passwd);
+ pw->pw_dir = xstrdup (pw->pw_dir);
+ pw->pw_shell = xstrdup (pw->pw_shell && pw->pw_shell[0]
+ ? pw->pw_shell
+ : DEFAULT_SHELL);
+ endpwent ();
+
+ if (!correct_password (pw))
+ {
+#ifdef SYSLOG_FAILURE
+ log_su (pw, false);
+#endif
+ error (EXIT_FAIL, 0, _("incorrect password"));
+ }
+#ifdef SYSLOG_SUCCESS
+ else
+ {
+ log_su (pw, true);
+ }
+#endif
+
+ if (!shell && !change_environment)
+ shell = getenv ("SHELL");
+ if (shell && getuid () != 0 && restricted_shell (pw->pw_shell))
+ {
+ /* The user being su'd to has a nonstandard shell, and so is
+ probably a uucp account or has restricted access. Don't
+ compromise the account by allowing access with a standard
+ shell. */
+ error (0, 0, _("using restricted shell %s"), pw->pw_shell);
+ shell = NULL;
+ }
+ shell = xstrdup (shell ? shell : pw->pw_shell);
+ modify_environment (pw, shell);
+
+ change_identity (pw);
+ if (simulate_login && chdir (pw->pw_dir) != 0)
+ error (0, errno, _("warning: cannot change directory to %s"), pw->pw_dir);
+
+ run_shell (shell, command, argv + optind, MAX (0, argc - optind));
+}
diff --git a/src/sum.c b/src/sum.c
new file mode 100644
index 0000000..92e4126
--- /dev/null
+++ b/src/sum.c
@@ -0,0 +1,269 @@
+/* sum -- checksum and count the blocks in a file
+ Copyright (C) 86, 89, 91, 1995-2002, 2004, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Like BSD sum or SysV sum -r, except like SysV sum if -s option is given. */
+
+/* Written by Kayvan Aghaiepour and David MacKenzie. */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <getopt.h>
+#include "system.h"
+#include "error.h"
+#include "human.h"
+#include "safe-read.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "sum"
+
+#define AUTHORS "Kayvan Aghaiepour", "David MacKenzie"
+
+/* The name this program was run with. */
+char *program_name;
+
+/* True if any of the files read were the standard input. */
+static bool have_read_stdin;
+
+static struct option const longopts[] =
+{
+ {"sysv", no_argument, NULL, 's'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [FILE]...\n\
+"),
+ program_name);
+ fputs (_("\
+Print checksum and block counts for each FILE.\n\
+\n\
+ -r defeat -s, use BSD sum algorithm, use 1K blocks\n\
+ -s, --sysv use System V sum algorithm, use 512 bytes blocks\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+With no FILE, or when FILE is -, read standard input.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Calculate and print the rotated checksum and the size in 1K blocks
+ of file FILE, or of the standard input if FILE is "-".
+ If PRINT_NAME is >1, print FILE next to the checksum and size.
+ The checksum varies depending on sizeof (int).
+ Return true if successful. */
+
+static bool
+bsd_sum_file (const char *file, int print_name)
+{
+ FILE *fp;
+ int checksum = 0; /* The checksum mod 2^16. */
+ uintmax_t total_bytes = 0; /* The number of bytes. */
+ int ch; /* Each character read. */
+ char hbuf[LONGEST_HUMAN_READABLE + 1];
+ bool is_stdin = STREQ (file, "-");
+
+ if (is_stdin)
+ {
+ fp = stdin;
+ have_read_stdin = true;
+ if (O_BINARY && ! isatty (STDIN_FILENO))
+ freopen (NULL, "rb", stdin);
+ }
+ else
+ {
+ fp = fopen (file, (O_BINARY ? "rb" : "r"));
+ if (fp == NULL)
+ {
+ error (0, errno, "%s", file);
+ return false;
+ }
+ }
+
+ while ((ch = getc (fp)) != EOF)
+ {
+ total_bytes++;
+ checksum = (checksum >> 1) + ((checksum & 1) << 15);
+ checksum += ch;
+ checksum &= 0xffff; /* Keep it within bounds. */
+ }
+
+ if (ferror (fp))
+ {
+ error (0, errno, "%s", file);
+ if (!is_stdin)
+ fclose (fp);
+ return false;
+ }
+
+ if (!is_stdin && fclose (fp) != 0)
+ {
+ error (0, errno, "%s", file);
+ return false;
+ }
+
+ printf ("%05d %5s", checksum,
+ human_readable (total_bytes, hbuf, human_ceiling, 1, 1024));
+ if (print_name > 1)
+ printf (" %s", file);
+ putchar ('\n');
+
+ return true;
+}
+
+/* Calculate and print the checksum and the size in 512-byte blocks
+ of file FILE, or of the standard input if FILE is "-".
+ If PRINT_NAME is >0, print FILE next to the checksum and size.
+ Return true if successful. */
+
+static bool
+sysv_sum_file (const char *file, int print_name)
+{
+ int fd;
+ unsigned char buf[8192];
+ uintmax_t total_bytes = 0;
+ char hbuf[LONGEST_HUMAN_READABLE + 1];
+ int r;
+ int checksum;
+
+ /* The sum of all the input bytes, modulo (UINT_MAX + 1). */
+ unsigned int s = 0;
+
+ bool is_stdin = STREQ (file, "-");
+
+ if (is_stdin)
+ {
+ fd = STDIN_FILENO;
+ have_read_stdin = true;
+ if (O_BINARY && ! isatty (STDIN_FILENO))
+ freopen (NULL, "rb", stdin);
+ }
+ else
+ {
+ fd = open (file, O_RDONLY | O_BINARY);
+ if (fd == -1)
+ {
+ error (0, errno, "%s", file);
+ return false;
+ }
+ }
+
+ while (1)
+ {
+ size_t i;
+ size_t bytes_read = safe_read (fd, buf, sizeof buf);
+
+ if (bytes_read == 0)
+ break;
+
+ if (bytes_read == SAFE_READ_ERROR)
+ {
+ error (0, errno, "%s", file);
+ if (!is_stdin)
+ close (fd);
+ return false;
+ }
+
+ for (i = 0; i < bytes_read; i++)
+ s += buf[i];
+ total_bytes += bytes_read;
+ }
+
+ if (!is_stdin && close (fd) != 0)
+ {
+ error (0, errno, "%s", file);
+ return false;
+ }
+
+ r = (s & 0xffff) + ((s & 0xffffffff) >> 16);
+ checksum = (r & 0xffff) + (r >> 16);
+
+ printf ("%d %s", checksum,
+ human_readable (total_bytes, hbuf, human_ceiling, 1, 512));
+ if (print_name)
+ printf (" %s", file);
+ putchar ('\n');
+
+ return true;
+}
+
+int
+main (int argc, char **argv)
+{
+ bool ok;
+ int optc;
+ int files_given;
+ bool (*sum_func) (const char *, int) = bsd_sum_file;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ have_read_stdin = false;
+
+ while ((optc = getopt_long (argc, argv, "rs", longopts, NULL)) != -1)
+ {
+ switch (optc)
+ {
+ case 'r': /* For SysV compatibility. */
+ sum_func = bsd_sum_file;
+ break;
+
+ case 's':
+ sum_func = sysv_sum_file;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ files_given = argc - optind;
+ if (files_given <= 0)
+ ok = sum_func ("-", files_given);
+ else
+ for (ok = true; optind < argc; optind++)
+ ok &= sum_func (argv[optind], files_given);
+
+ if (have_read_stdin && fclose (stdin) == EOF)
+ error (EXIT_FAILURE, errno, "-");
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/sync.c b/src/sync.c
new file mode 100644
index 0000000..5e94afb
--- /dev/null
+++ b/src/sync.c
@@ -0,0 +1,78 @@
+/* sync - update the super block
+ Copyright (C) 1994-2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering */
+
+#include <config.h>
+#include <getopt.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "error.h"
+#include "long-options.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "sync"
+
+#define AUTHORS "Jim Meyering"
+
+/* The name this program was run with. */
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]\n"), program_name);
+ fputs (_("\
+Force changed blocks to disk, update the super block.\n\
+\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "", NULL, NULL) != -1)
+ usage (EXIT_FAILURE);
+
+ if (optind < argc)
+ error (0, 0, _("ignoring all arguments"));
+
+ sync ();
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/system.h b/src/system.h
new file mode 100644
index 0000000..763909b
--- /dev/null
+++ b/src/system.h
@@ -0,0 +1,583 @@
+/* system-dependent definitions for coreutils
+ Copyright (C) 1989, 1991-2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <alloca.h>
+
+/* Include sys/types.h before this file. */
+
+#if 2 <= __GLIBC__ && 2 <= __GLIBC_MINOR__
+# if ! defined _SYS_TYPES_H
+you must include <sys/types.h> before including this file
+# endif
+#endif
+
+#include <sys/stat.h>
+
+#if !defined HAVE_MKFIFO
+# define mkfifo(name, mode) mknod (name, (mode) | S_IFIFO, 0)
+#endif
+
+#if HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+
+#include <unistd.h>
+
+#ifndef STDIN_FILENO
+# define STDIN_FILENO 0
+#endif
+
+#ifndef STDOUT_FILENO
+# define STDOUT_FILENO 1
+#endif
+
+#ifndef STDERR_FILENO
+# define STDERR_FILENO 2
+#endif
+
+
+/* limits.h must come before pathmax.h because limits.h on some systems
+ undefs PATH_MAX, whereas pathmax.h sets PATH_MAX. */
+#include <limits.h>
+
+#include "pathmax.h"
+
+#include "configmake.h"
+
+#if TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# if HAVE_SYS_TIME_H
+# include <sys/time.h>
+# else
+# include <time.h>
+# endif
+#endif
+
+/* Since major is a function on SVR4, we can't use `ifndef major'. */
+#if MAJOR_IN_MKDEV
+# include <sys/mkdev.h>
+# define HAVE_MAJOR
+#endif
+#if MAJOR_IN_SYSMACROS
+# include <sys/sysmacros.h>
+# define HAVE_MAJOR
+#endif
+#ifdef major /* Might be defined in sys/types.h. */
+# define HAVE_MAJOR
+#endif
+
+#ifndef HAVE_MAJOR
+# define major(dev) (((dev) >> 8) & 0xff)
+# define minor(dev) ((dev) & 0xff)
+# define makedev(maj, min) (((maj) << 8) | (min))
+#endif
+#undef HAVE_MAJOR
+
+#if ! defined makedev && defined mkdev
+# define makedev(maj, min) mkdev (maj, min)
+#endif
+
+/* Don't use bcopy! Use memmove if source and destination may overlap,
+ memcpy otherwise. */
+
+#include <string.h>
+
+#include <errno.h>
+
+/* Some systems don't define the following symbols. */
+#ifndef EDQUOT
+# define EDQUOT (-1)
+#endif
+#ifndef EISDIR
+# define EISDIR (-1)
+#endif
+#ifndef ENOSYS
+# define ENOSYS (-1)
+#endif
+
+#include <stdbool.h>
+#include <stdlib.h>
+
+/* Exit statuses for programs like 'env' that exec other programs.
+ EXIT_FAILURE might not be 1, so use EXIT_FAIL in such programs. */
+enum
+{
+ EXIT_FAIL = 1,
+ EXIT_CANNOT_INVOKE = 126,
+ EXIT_ENOENT = 127
+};
+
+#include "exitfail.h"
+
+/* Set exit_failure to STATUS if that's not the default already. */
+static inline void
+initialize_exit_failure (int status)
+{
+ if (status != EXIT_FAILURE)
+ exit_failure = status;
+}
+
+#include <fcntl.h>
+
+#ifndef F_OK
+# define F_OK 0
+# define X_OK 1
+# define W_OK 2
+# define R_OK 4
+#endif
+
+#include <dirent.h>
+#ifndef _D_EXACT_NAMLEN
+# define _D_EXACT_NAMLEN(dp) strlen ((dp)->d_name)
+#endif
+
+enum
+{
+ NOT_AN_INODE_NUMBER = 0
+};
+
+#ifdef D_INO_IN_DIRENT
+# define D_INO(dp) (dp)->d_ino
+#else
+/* Some systems don't have inodes, so fake them to avoid lots of ifdefs. */
+# define D_INO(dp) NOT_AN_INODE_NUMBER
+#endif
+
+/* Get or fake the disk device blocksize.
+ Usually defined by sys/param.h (if at all). */
+#if !defined DEV_BSIZE && defined BSIZE
+# define DEV_BSIZE BSIZE
+#endif
+#if !defined DEV_BSIZE && defined BBSIZE /* SGI */
+# define DEV_BSIZE BBSIZE
+#endif
+#ifndef DEV_BSIZE
+# define DEV_BSIZE 4096
+#endif
+
+/* Extract or fake data from a `struct stat'.
+ ST_BLKSIZE: Preferred I/O blocksize for the file, in bytes.
+ ST_NBLOCKS: Number of blocks in the file, including indirect blocks.
+ ST_NBLOCKSIZE: Size of blocks used when calculating ST_NBLOCKS. */
+#ifndef HAVE_STRUCT_STAT_ST_BLOCKS
+# define ST_BLKSIZE(statbuf) DEV_BSIZE
+# if defined _POSIX_SOURCE || !defined BSIZE /* fileblocks.c uses BSIZE. */
+# define ST_NBLOCKS(statbuf) \
+ ((statbuf).st_size / ST_NBLOCKSIZE + ((statbuf).st_size % ST_NBLOCKSIZE != 0))
+# else /* !_POSIX_SOURCE && BSIZE */
+# define ST_NBLOCKS(statbuf) \
+ (S_ISREG ((statbuf).st_mode) \
+ || S_ISDIR ((statbuf).st_mode) \
+ ? st_blocks ((statbuf).st_size) : 0)
+# endif /* !_POSIX_SOURCE && BSIZE */
+#else /* HAVE_STRUCT_STAT_ST_BLOCKS */
+/* Some systems, like Sequents, return st_blksize of 0 on pipes.
+ Also, when running `rsh hpux11-system cat any-file', cat would
+ determine that the output stream had an st_blksize of 2147421096.
+ Conversely st_blksize can be 2 GiB (or maybe even larger) with XFS
+ on 64-bit hosts. Somewhat arbitrarily, limit the `optimal' block
+ size to SIZE_MAX / 8 + 1. (Dividing SIZE_MAX by only 4 wouldn't
+ suffice, since "cat" sometimes multiplies the result by 4.) If
+ anyone knows of a system for which this limit is too small, please
+ report it as a bug in this code. */
+# define ST_BLKSIZE(statbuf) ((0 < (statbuf).st_blksize \
+ && (statbuf).st_blksize <= SIZE_MAX / 8 + 1) \
+ ? (statbuf).st_blksize : DEV_BSIZE)
+# if defined hpux || defined __hpux__ || defined __hpux
+/* HP-UX counts st_blocks in 1024-byte units.
+ This loses when mixing HP-UX and BSD file systems with NFS. */
+# define ST_NBLOCKSIZE 1024
+# else /* !hpux */
+# if defined _AIX && defined _I386
+/* AIX PS/2 counts st_blocks in 4K units. */
+# define ST_NBLOCKSIZE (4 * 1024)
+# else /* not AIX PS/2 */
+# if defined _CRAY
+# define ST_NBLOCKS(statbuf) \
+ (S_ISREG ((statbuf).st_mode) \
+ || S_ISDIR ((statbuf).st_mode) \
+ ? (statbuf).st_blocks * ST_BLKSIZE(statbuf)/ST_NBLOCKSIZE : 0)
+# endif /* _CRAY */
+# endif /* not AIX PS/2 */
+# endif /* !hpux */
+#endif /* HAVE_STRUCT_STAT_ST_BLOCKS */
+
+#ifndef ST_NBLOCKS
+# define ST_NBLOCKS(statbuf) ((statbuf).st_blocks)
+#endif
+
+#ifndef ST_NBLOCKSIZE
+# ifdef S_BLKSIZE
+# define ST_NBLOCKSIZE S_BLKSIZE
+# else
+# define ST_NBLOCKSIZE 512
+# endif
+#endif
+
+/* Redirection and wildcarding when done by the utility itself.
+ Generally a noop, but used in particular for native VMS. */
+#ifndef initialize_main
+# define initialize_main(ac, av)
+#endif
+
+#include "stat-macros.h"
+
+#include "timespec.h"
+
+#include <inttypes.h>
+
+#include <ctype.h>
+
+#if ! (defined isblank || HAVE_DECL_ISBLANK)
+# define isblank(c) ((c) == ' ' || (c) == '\t')
+#endif
+
+/* ISDIGIT differs from isdigit, as follows:
+ - Its arg may be any int or unsigned int; it need not be an unsigned char
+ or EOF.
+ - It's typically faster.
+ POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
+ isdigit unless it's important to use the locale's definition
+ of `digit' even when the host does not conform to POSIX. */
+#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
+
+/* Convert a possibly-signed character to an unsigned character. This is
+ a bit safer than casting to unsigned char, since it catches some type
+ errors that the cast doesn't. */
+static inline unsigned char to_uchar (char ch) { return ch; }
+
+#include <locale.h>
+
+/* Take care of NLS matters. */
+
+#include "gettext.h"
+#if ! ENABLE_NLS
+# undef textdomain
+# define textdomain(Domainname) /* empty */
+# undef bindtextdomain
+# define bindtextdomain(Domainname, Dirname) /* empty */
+#endif
+
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
+/* Return a value that pluralizes the same way that N does, in all
+ languages we know of. */
+static inline unsigned long int
+select_plural (uintmax_t n)
+{
+ /* Reduce by a power of ten, but keep it away from zero. The
+ gettext manual says 1000000 should be safe. */
+ enum { PLURAL_REDUCER = 1000000 };
+ return (n <= ULONG_MAX ? n : n % PLURAL_REDUCER + PLURAL_REDUCER);
+}
+
+#define STREQ(a, b) (strcmp (a, b) == 0)
+
+#if !HAVE_DECL_FREE
+void free ();
+#endif
+
+#if !HAVE_DECL_MALLOC
+char *malloc ();
+#endif
+
+#if !HAVE_DECL_MEMCHR
+char *memchr ();
+#endif
+
+#if !HAVE_DECL_REALLOC
+char *realloc ();
+#endif
+
+#if !HAVE_DECL_GETENV
+char *getenv ();
+#endif
+
+#if !HAVE_DECL_LSEEK
+off_t lseek ();
+#endif
+
+#if !HAVE_DECL_GETLOGIN
+char *getlogin ();
+#endif
+
+#if !HAVE_DECL_TTYNAME
+char *ttyname ();
+#endif
+
+#if !HAVE_DECL_GETEUID
+uid_t geteuid ();
+#endif
+
+#if !HAVE_DECL_GETPWUID
+struct passwd *getpwuid ();
+#endif
+
+#if !HAVE_DECL_GETGRGID
+struct group *getgrgid ();
+#endif
+
+#if !HAVE_DECL_GETUID
+uid_t getuid ();
+#endif
+
+#include "xalloc.h"
+#include "verify.h"
+
+/* This is simply a shorthand for the common case in which
+ the third argument to x2nrealloc would be `sizeof *(P)'.
+ Ensure that sizeof *(P) is *not* 1. In that case, it'd be
+ better to use X2REALLOC, although not strictly necessary. */
+#define X2NREALLOC(P, PN) ((void) verify_true (sizeof *(P) != 1), \
+ x2nrealloc (P, PN, sizeof *(P)))
+
+/* Using x2realloc (when appropriate) usually makes your code more
+ readable than using x2nrealloc, but it also makes it so your
+ code will malfunction if sizeof *(P) ever becomes 2 or greater.
+ So use this macro instead of using x2realloc directly. */
+#define X2REALLOC(P, PN) ((void) verify_true (sizeof *(P) == 1), \
+ x2realloc (P, PN))
+
+#include "unlocked-io.h"
+#include "same-inode.h"
+
+#include "dirname.h"
+
+static inline bool
+dot_or_dotdot (char const *file_name)
+{
+ if (file_name[0] == '.')
+ {
+ char sep = file_name[(file_name[1] == '.') + 1];
+ return (! sep || ISSLASH (sep));
+ }
+ else
+ return false;
+}
+
+/* A wrapper for readdir so that callers don't see entries for `.' or `..'. */
+static inline struct dirent const *
+readdir_ignoring_dot_and_dotdot (DIR *dirp)
+{
+ while (1)
+ {
+ struct dirent const *dp = readdir (dirp);
+ if (dp == NULL || ! dot_or_dotdot (dp->d_name))
+ return dp;
+ }
+}
+
+/* Factor out some of the common --help and --version processing code. */
+
+/* These enum values cannot possibly conflict with the option values
+ ordinarily used by commands, including CHAR_MAX + 1, etc. Avoid
+ CHAR_MIN - 1, as it may equal -1, the getopt end-of-options value. */
+enum
+{
+ GETOPT_HELP_CHAR = (CHAR_MIN - 2),
+ GETOPT_VERSION_CHAR = (CHAR_MIN - 3)
+};
+
+#define GETOPT_HELP_OPTION_DECL \
+ "help", no_argument, NULL, GETOPT_HELP_CHAR
+#define GETOPT_VERSION_OPTION_DECL \
+ "version", no_argument, NULL, GETOPT_VERSION_CHAR
+
+#define case_GETOPT_HELP_CHAR \
+ case GETOPT_HELP_CHAR: \
+ usage (EXIT_SUCCESS); \
+ break;
+
+/* Program_name must be a literal string.
+ Usually it is just PROGRAM_NAME. */
+#define USAGE_BUILTIN_WARNING \
+ _("\n" \
+"NOTE: your shell may have its own version of %s, which usually supersedes\n" \
+"the version described here. Please refer to your shell's documentation\n" \
+"for details about the options it supports.\n")
+
+#define HELP_OPTION_DESCRIPTION \
+ _(" --help display this help and exit\n")
+#define VERSION_OPTION_DESCRIPTION \
+ _(" --version output version information and exit\n")
+
+#include "closeout.h"
+#include "version-etc.h"
+
+#define case_GETOPT_VERSION_CHAR(Program_name, Authors) \
+ case GETOPT_VERSION_CHAR: \
+ version_etc (stdout, Program_name, GNU_PACKAGE, VERSION, Authors, \
+ (char *) NULL); \
+ exit (EXIT_SUCCESS); \
+ break;
+
+#ifndef MAX
+# define MAX(a, b) ((a) > (b) ? (a) : (b))
+#endif
+
+#ifndef MIN
+# define MIN(a,b) (((a) < (b)) ? (a) : (b))
+#endif
+
+#include "intprops.h"
+
+#ifndef SSIZE_MAX
+# define SSIZE_MAX TYPE_MAXIMUM (ssize_t)
+#endif
+
+#ifndef OFF_T_MIN
+# define OFF_T_MIN TYPE_MINIMUM (off_t)
+#endif
+
+#ifndef OFF_T_MAX
+# define OFF_T_MAX TYPE_MAXIMUM (off_t)
+#endif
+
+#ifndef UID_T_MAX
+# define UID_T_MAX TYPE_MAXIMUM (uid_t)
+#endif
+
+#ifndef GID_T_MAX
+# define GID_T_MAX TYPE_MAXIMUM (gid_t)
+#endif
+
+#ifndef PID_T_MAX
+# define PID_T_MAX TYPE_MAXIMUM (pid_t)
+#endif
+
+/* Use this to suppress gcc's `...may be used before initialized' warnings. */
+#ifdef lint
+# define IF_LINT(Code) Code
+#else
+# define IF_LINT(Code) /* empty */
+#endif
+
+#ifndef __attribute__
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
+# define __attribute__(x) /* empty */
+# endif
+#endif
+
+#ifndef ATTRIBUTE_NORETURN
+# define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
+#endif
+
+#ifndef ATTRIBUTE_UNUSED
+# define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+#endif
+
+#if defined strdupa
+# define ASSIGN_STRDUPA(DEST, S) \
+ do { DEST = strdupa (S); } while (0)
+#else
+# define ASSIGN_STRDUPA(DEST, S) \
+ do \
+ { \
+ const char *s_ = (S); \
+ size_t len_ = strlen (s_) + 1; \
+ char *tmp_dest_ = alloca (len_); \
+ DEST = memcpy (tmp_dest_, s_, len_); \
+ } \
+ while (0)
+#endif
+
+#ifndef EOVERFLOW
+# define EOVERFLOW EINVAL
+#endif
+
+#if ! HAVE_FSEEKO
+# if ! defined fseeko
+# define fseeko(s, o, w) ((o) == (long int) (o) \
+ ? fseek (s, o, w) \
+ : (errno = EOVERFLOW, -1))
+# endif
+# if ! defined ftello
+static inline off_t ftello (FILE *stream)
+{
+ verify (sizeof (long int) <= sizeof (off_t));
+ return ftell (stream);
+}
+# endif
+#endif
+
+#if ! HAVE_SYNC
+# define sync() /* empty */
+#endif
+
+/* Compute the greatest common divisor of U and V using Euclid's
+ algorithm. U and V must be nonzero. */
+
+static inline size_t
+gcd (size_t u, size_t v)
+{
+ do
+ {
+ size_t t = u % v;
+ u = v;
+ v = t;
+ }
+ while (v);
+
+ return u;
+}
+
+/* Compute the least common multiple of U and V. U and V must be
+ nonzero. There is no overflow checking, so callers should not
+ specify outlandish sizes. */
+
+static inline size_t
+lcm (size_t u, size_t v)
+{
+ return u * (v / gcd (u, v));
+}
+
+/* Return PTR, aligned upward to the next multiple of ALIGNMENT.
+ ALIGNMENT must be nonzero. The caller must arrange for ((char *)
+ PTR) through ((char *) PTR + ALIGNMENT - 1) to be addressable
+ locations. */
+
+static inline void *
+ptr_align (void const *ptr, size_t alignment)
+{
+ char const *p0 = ptr;
+ char const *p1 = p0 + alignment - 1;
+ return (void *) (p1 - (size_t) p1 % alignment);
+}
+
+/* If 10*Accum + Digit_val is larger than the maximum value for Type,
+ then don't update Accum and return false to indicate it would
+ overflow. Otherwise, set Accum to that new value and return true.
+ Verify at compile-time that Type is Accum's type, and that Type is
+ unsigned. Accum must be an object, so that we can take its
+ address. Accum and Digit_val may be evaluated multiple times.
+
+ The "Added check" below is not strictly required, but it causes GCC
+ to return a nonzero exit status instead of merely a warning
+ diagnostic, and that is more useful. */
+
+#define DECIMAL_DIGIT_ACCUMULATE(Accum, Digit_val, Type) \
+ ( \
+ (void) (&(Accum) == (Type *) NULL), /* The type matches. */ \
+ (void) verify_true (! TYPE_SIGNED (Type)), /* The type is unsigned. */ \
+ (void) verify_true (sizeof (Accum) == sizeof (Type)), /* Added check. */ \
+ (((Type) -1 / 10 < (Accum) \
+ || (Type) ((Accum) * 10 + (Digit_val)) < (Accum)) \
+ ? false : (((Accum) = (Accum) * 10 + (Digit_val)), true)) \
+ )
diff --git a/src/tac-pipe.c b/src/tac-pipe.c
new file mode 100644
index 0000000..d2c6f67
--- /dev/null
+++ b/src/tac-pipe.c
@@ -0,0 +1,263 @@
+/* tac from a pipe.
+
+ Copyright (C) 1997, 1998, 2002, 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* FIXME */
+#include <assert.h>
+
+/* FIXME: this is small for testing */
+#define BUFFER_SIZE (8)
+
+#define LEN(X, I) ((X)->p[(I)].one_past_end - (X)->p[(I)].start)
+#define EMPTY(X) ((X)->n_bufs == 1 && LEN (X, 0) == 0)
+
+#define ONE_PAST_END(X, I) ((X)->p[(I)].one_past_end)
+
+struct Line_ptr
+{
+ size_t i;
+ char *ptr;
+};
+typedef struct Line_ptr Line_ptr;
+
+struct B_pair
+{
+ char *start;
+ char *one_past_end;
+};
+
+struct Buf
+{
+ size_t n_bufs;
+ struct obstack obs;
+ struct B_pair *p;
+};
+typedef struct Buf Buf;
+
+static bool
+buf_init_from_stdin (Buf *x, char eol_byte)
+{
+ bool last_byte_is_eol_byte = true;
+ bool ok = true;
+
+#define OBS (&(x->obs))
+ obstack_init (OBS);
+
+ while (1)
+ {
+ char *buf = (char *) malloc (BUFFER_SIZE);
+ size_t bytes_read;
+
+ if (buf == NULL)
+ {
+ /* Fall back on the code that relies on a temporary file.
+ Write all buffers to that file and free them. */
+ /* FIXME */
+ ok = false;
+ break;
+ }
+ bytes_read = full_read (STDIN_FILENO, buf, BUFFER_SIZE);
+ if (bytes_read != buffer_size && errno != 0)
+ error (EXIT_FAILURE, errno, _("read error"));
+
+ {
+ struct B_pair bp;
+ bp.start = buf;
+ bp.one_past_end = buf + bytes_read;
+ obstack_grow (OBS, &bp, sizeof (bp));
+ }
+
+ if (bytes_read != 0)
+ last_byte_is_eol_byte = (buf[bytes_read - 1] == eol_byte);
+
+ if (bytes_read < BUFFER_SIZE)
+ break;
+ }
+
+ if (ok)
+ {
+ /* If the file was non-empty and lacked an EOL_BYTE at its end,
+ then add a buffer containing just that one byte. */
+ if (!last_byte_is_eol_byte)
+ {
+ char *buf = malloc (1);
+ if (buf == NULL)
+ {
+ /* FIXME: just like above */
+ ok = false;
+ }
+ else
+ {
+ struct B_pair bp;
+ *buf = eol_byte;
+ bp.start = buf;
+ bp.one_past_end = buf + 1;
+ obstack_grow (OBS, &bp, sizeof (bp));
+ }
+ }
+ }
+
+ x->n_bufs = obstack_object_size (OBS) / sizeof (x->p[0]);
+ x->p = (struct B_pair *) obstack_finish (OBS);
+
+ /* If there are two or more buffers and the last buffer is empty,
+ then free the last one and decrement the buffer count. */
+ if (x->n_bufs >= 2
+ && x->p[x->n_bufs - 1].start == x->p[x->n_bufs - 1].one_past_end)
+ free (x->p[--(x->n_bufs)].start);
+
+ return ok;
+}
+
+static void
+buf_free (Buf *x)
+{
+ size_t i;
+ for (i = 0; i < x->n_bufs; i++)
+ free (x->p[i].start);
+ obstack_free (OBS, NULL);
+}
+
+Line_ptr
+line_ptr_decrement (const Buf *x, const Line_ptr *lp)
+{
+ Line_ptr lp_new;
+
+ if (lp->ptr > x->p[lp->i].start)
+ {
+ lp_new.i = lp->i;
+ lp_new.ptr = lp->ptr - 1;
+ }
+ else
+ {
+ assert (lp->i > 0);
+ lp_new.i = lp->i - 1;
+ lp_new.ptr = ONE_PAST_END (x, lp->i - 1) - 1;
+ }
+ return lp_new;
+}
+
+Line_ptr
+line_ptr_increment (const Buf *x, const Line_ptr *lp)
+{
+ Line_ptr lp_new;
+
+ assert (lp->ptr <= ONE_PAST_END (x, lp->i) - 1);
+ if (lp->ptr < ONE_PAST_END (x, lp->i) - 1)
+ {
+ lp_new.i = lp->i;
+ lp_new.ptr = lp->ptr + 1;
+ }
+ else
+ {
+ assert (lp->i < x->n_bufs - 1);
+ lp_new.i = lp->i + 1;
+ lp_new.ptr = x->p[lp->i + 1].start;
+ }
+ return lp_new;
+}
+
+static bool
+find_bol (const Buf *x,
+ const Line_ptr *last_bol, Line_ptr *new_bol, char eol_byte)
+{
+ size_t i;
+ Line_ptr tmp;
+ char *last_bol_ptr;
+
+ if (last_bol->ptr == x->p[0].start)
+ return false;
+
+ tmp = line_ptr_decrement (x, last_bol);
+ last_bol_ptr = tmp.ptr;
+ i = tmp.i;
+ while (1)
+ {
+ char *nl = memrchr (x->p[i].start, last_bol_ptr, eol_byte);
+ if (nl)
+ {
+ Line_ptr nl_pos;
+ nl_pos.i = i;
+ nl_pos.ptr = nl;
+ *new_bol = line_ptr_increment (x, &nl_pos);
+ return true;
+ }
+
+ if (i == 0)
+ break;
+
+ --i;
+ last_bol_ptr = ONE_PAST_END (x, i);
+ }
+
+ /* If last_bol->ptr didn't point at the first byte of X, then reaching
+ this point means that we're about to return the line that is at the
+ beginning of X. */
+ if (last_bol->ptr != x->p[0].start)
+ {
+ new_bol->i = 0;
+ new_bol->ptr = x->p[0].start;
+ return true;
+ }
+
+ return false;
+}
+
+static void
+print_line (FILE *out_stream, const Buf *x,
+ const Line_ptr *bol, const Line_ptr *bol_next)
+{
+ size_t i;
+ for (i = bol->i; i <= bol_next->i; i++)
+ {
+ char *a = (i == bol->i ? bol->ptr : x->p[i].start);
+ char *b = (i == bol_next->i ? bol_next->ptr : ONE_PAST_END (x, i));
+ fwrite (a, 1, b - a, out_stream);
+ }
+}
+
+static bool
+tac_mem ()
+{
+ Buf x;
+ Line_ptr bol;
+ char eol_byte = '\n';
+
+ if (! buf_init_from_stdin (&x, eol_byte))
+ {
+ buf_free (&x);
+ return false;
+ }
+
+ /* Special case the empty file. */
+ if (EMPTY (&x))
+ return true;
+
+ /* Initially, point at one past the last byte of the file. */
+ bol.i = x.n_bufs - 1;
+ bol.ptr = ONE_PAST_END (&x, bol.i);
+
+ while (1)
+ {
+ Line_ptr new_bol;
+ if (! find_bol (&x, &bol, &new_bol, eol_byte))
+ break;
+ print_line (stdout, &x, &new_bol, &bol);
+ bol = new_bol;
+ }
+ return true;
+}
diff --git a/src/tac.c b/src/tac.c
new file mode 100644
index 0000000..dc166aa
--- /dev/null
+++ b/src/tac.c
@@ -0,0 +1,666 @@
+/* tac - concatenate and print files in reverse
+ Copyright (C) 1988-1991, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jay Lepreau (lepreau@cs.utah.edu).
+ GNU enhancements by David MacKenzie (djm@gnu.ai.mit.edu). */
+
+/* Copy each FILE, or the standard input if none are given or when a
+ FILE name of "-" is encountered, to the standard output with the
+ order of the records reversed. The records are separated by
+ instances of a string, or a newline if none is given. By default, the
+ separator string is attached to the end of the record that it
+ follows in the file.
+
+ Options:
+ -b, --before The separator is attached to the beginning
+ of the record that it precedes in the file.
+ -r, --regex The separator is a regular expression.
+ -s, --separator=separator Use SEPARATOR as the record separator.
+
+ To reverse a file byte by byte, use (in bash, ksh, or sh):
+tac -r -s '.\|
+' file */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+#include "system.h"
+
+#include <regex.h>
+
+#include "error.h"
+#include "quote.h"
+#include "quotearg.h"
+#include "safe-read.h"
+#include "stdlib--.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "tac"
+
+#define AUTHORS "Jay Lepreau", "David MacKenzie"
+
+#if defined __MSDOS__ || defined _WIN32
+/* Define this to non-zero on systems for which the regular mechanism
+ (of unlinking an open file and expecting to be able to write, seek
+ back to the beginning, then reread it) doesn't work. E.g., on Windows
+ and DOS systems. */
+# define DONT_UNLINK_WHILE_OPEN 1
+#endif
+
+
+#ifndef DEFAULT_TMPDIR
+# define DEFAULT_TMPDIR "/tmp"
+#endif
+
+/* The number of bytes per atomic read. */
+#define INITIAL_READSIZE 8192
+
+/* The number of bytes per atomic write. */
+#define WRITESIZE 8192
+
+/* The name this program was run with. */
+char *program_name;
+
+/* The string that separates the records of the file. */
+static char const *separator;
+
+/* True if we have ever read standard input. */
+static bool have_read_stdin = false;
+
+/* If true, print `separator' along with the record preceding it
+ in the file; otherwise with the record following it. */
+static bool separator_ends_record;
+
+/* 0 if `separator' is to be matched as a regular expression;
+ otherwise, the length of `separator', used as a sentinel to
+ stop the search. */
+static size_t sentinel_length;
+
+/* The length of a match with `separator'. If `sentinel_length' is 0,
+ `match_length' is computed every time a match succeeds;
+ otherwise, it is simply the length of `separator'. */
+static size_t match_length;
+
+/* The input buffer. */
+static char *G_buffer;
+
+/* The number of bytes to read at once into `buffer'. */
+static size_t read_size;
+
+/* The size of `buffer'. This is read_size * 2 + sentinel_length + 2.
+ The extra 2 bytes allow `past_end' to have a value beyond the
+ end of `G_buffer' and `match_start' to run off the front of `G_buffer'. */
+static size_t G_buffer_size;
+
+/* The compiled regular expression representing `separator'. */
+static struct re_pattern_buffer compiled_separator;
+static char compiled_separator_fastmap[UCHAR_MAX + 1];
+
+static struct option const longopts[] =
+{
+ {"before", no_argument, NULL, 'b'},
+ {"regex", no_argument, NULL, 'r'},
+ {"separator", required_argument, NULL, 's'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [FILE]...\n\
+"),
+ program_name);
+ fputs (_("\
+Write each FILE to standard output, last line first.\n\
+With no FILE, or when FILE is -, read standard input.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -b, --before attach the separator before instead of after\n\
+ -r, --regex interpret the separator as a regular expression\n\
+ -s, --separator=STRING use STRING as the separator instead of newline\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Print the characters from START to PAST_END - 1.
+ If START is NULL, just flush the buffer. */
+
+static void
+output (const char *start, const char *past_end)
+{
+ static char buffer[WRITESIZE];
+ static size_t bytes_in_buffer = 0;
+ size_t bytes_to_add = past_end - start;
+ size_t bytes_available = WRITESIZE - bytes_in_buffer;
+
+ if (start == 0)
+ {
+ fwrite (buffer, 1, bytes_in_buffer, stdout);
+ bytes_in_buffer = 0;
+ return;
+ }
+
+ /* Write out as many full buffers as possible. */
+ while (bytes_to_add >= bytes_available)
+ {
+ memcpy (buffer + bytes_in_buffer, start, bytes_available);
+ bytes_to_add -= bytes_available;
+ start += bytes_available;
+ fwrite (buffer, 1, WRITESIZE, stdout);
+ bytes_in_buffer = 0;
+ bytes_available = WRITESIZE;
+ }
+
+ memcpy (buffer + bytes_in_buffer, start, bytes_to_add);
+ bytes_in_buffer += bytes_to_add;
+}
+
+/* Print in reverse the file open on descriptor FD for reading FILE.
+ Return true if successful. */
+
+static bool
+tac_seekable (int input_fd, const char *file)
+{
+ /* Pointer to the location in `G_buffer' where the search for
+ the next separator will begin. */
+ char *match_start;
+
+ /* Pointer to one past the rightmost character in `G_buffer' that
+ has not been printed yet. */
+ char *past_end;
+
+ /* Length of the record growing in `G_buffer'. */
+ size_t saved_record_size;
+
+ /* Offset in the file of the next read. */
+ off_t file_pos;
+
+ /* True if `output' has not been called yet for any file.
+ Only used when the separator is attached to the preceding record. */
+ bool first_time = true;
+ char first_char = *separator; /* Speed optimization, non-regexp. */
+ char const *separator1 = separator + 1; /* Speed optimization, non-regexp. */
+ size_t match_length1 = match_length - 1; /* Speed optimization, non-regexp. */
+ struct re_registers regs;
+
+ /* Find the size of the input file. */
+ file_pos = lseek (input_fd, (off_t) 0, SEEK_END);
+ if (file_pos < 1)
+ return true; /* It's an empty file. */
+
+ /* Arrange for the first read to lop off enough to leave the rest of the
+ file a multiple of `read_size'. Since `read_size' can change, this may
+ not always hold during the program run, but since it usually will, leave
+ it here for i/o efficiency (page/sector boundaries and all that).
+ Note: the efficiency gain has not been verified. */
+ saved_record_size = file_pos % read_size;
+ if (saved_record_size == 0)
+ saved_record_size = read_size;
+ file_pos -= saved_record_size;
+ /* `file_pos' now points to the start of the last (probably partial) block
+ in the input file. */
+
+ if (lseek (input_fd, file_pos, SEEK_SET) < 0)
+ error (0, errno, _("%s: seek failed"), quotearg_colon (file));
+
+ if (safe_read (input_fd, G_buffer, saved_record_size) != saved_record_size)
+ {
+ error (0, errno, _("%s: read error"), quotearg_colon (file));
+ return false;
+ }
+
+ match_start = past_end = G_buffer + saved_record_size;
+ /* For non-regexp search, move past impossible positions for a match. */
+ if (sentinel_length)
+ match_start -= match_length1;
+
+ for (;;)
+ {
+ /* Search backward from `match_start' - 1 to `G_buffer' for a match
+ with `separator'; for speed, use strncmp if `separator' contains no
+ metacharacters.
+ If the match succeeds, set `match_start' to point to the start of
+ the match and `match_length' to the length of the match.
+ Otherwise, make `match_start' < `G_buffer'. */
+ if (sentinel_length == 0)
+ {
+ size_t i = match_start - G_buffer;
+ regoff_t ri = i;
+ regoff_t range = 1 - ri;
+ regoff_t ret;
+
+ if (1 < range)
+ error (EXIT_FAILURE, 0, _("record too large"));
+
+ if (range == 1
+ || ((ret = re_search (&compiled_separator, G_buffer,
+ i, i - 1, range, &regs))
+ == -1))
+ match_start = G_buffer - 1;
+ else if (ret == -2)
+ {
+ error (EXIT_FAILURE, 0,
+ _("error in regular expression search"));
+ }
+ else
+ {
+ match_start = G_buffer + regs.start[0];
+ match_length = regs.end[0] - regs.start[0];
+ }
+ }
+ else
+ {
+ /* `match_length' is constant for non-regexp boundaries. */
+ while (*--match_start != first_char
+ || (match_length1 && strncmp (match_start + 1, separator1,
+ match_length1)))
+ /* Do nothing. */ ;
+ }
+
+ /* Check whether we backed off the front of `G_buffer' without finding
+ a match for `separator'. */
+ if (match_start < G_buffer)
+ {
+ if (file_pos == 0)
+ {
+ /* Hit the beginning of the file; print the remaining record. */
+ output (G_buffer, past_end);
+ return true;
+ }
+
+ saved_record_size = past_end - G_buffer;
+ if (saved_record_size > read_size)
+ {
+ /* `G_buffer_size' is about twice `read_size', so since
+ we want to read in another `read_size' bytes before
+ the data already in `G_buffer', we need to increase
+ `G_buffer_size'. */
+ char *newbuffer;
+ size_t offset = sentinel_length ? sentinel_length : 1;
+ ptrdiff_t match_start_offset = match_start - G_buffer;
+ ptrdiff_t past_end_offset = past_end - G_buffer;
+ size_t old_G_buffer_size = G_buffer_size;
+
+ read_size *= 2;
+ G_buffer_size = read_size * 2 + sentinel_length + 2;
+ if (G_buffer_size < old_G_buffer_size)
+ xalloc_die ();
+ newbuffer = xrealloc (G_buffer - offset, G_buffer_size);
+ newbuffer += offset;
+ /* Adjust the pointers for the new buffer location. */
+ match_start = newbuffer + match_start_offset;
+ past_end = newbuffer + past_end_offset;
+ G_buffer = newbuffer;
+ }
+
+ /* Back up to the start of the next bufferfull of the file. */
+ if (file_pos >= read_size)
+ file_pos -= read_size;
+ else
+ {
+ read_size = file_pos;
+ file_pos = 0;
+ }
+ if (lseek (input_fd, file_pos, SEEK_SET) < 0)
+ error (0, errno, _("%s: seek failed"), quotearg_colon (file));
+
+ /* Shift the pending record data right to make room for the new.
+ The source and destination regions probably overlap. */
+ memmove (G_buffer + read_size, G_buffer, saved_record_size);
+ past_end = G_buffer + read_size + saved_record_size;
+ /* For non-regexp searches, avoid unneccessary scanning. */
+ if (sentinel_length)
+ match_start = G_buffer + read_size;
+ else
+ match_start = past_end;
+
+ if (safe_read (input_fd, G_buffer, read_size) != read_size)
+ {
+ error (0, errno, _("%s: read error"), quotearg_colon (file));
+ return false;
+ }
+ }
+ else
+ {
+ /* Found a match of `separator'. */
+ if (separator_ends_record)
+ {
+ char *match_end = match_start + match_length;
+
+ /* If this match of `separator' isn't at the end of the
+ file, print the record. */
+ if (!first_time || match_end != past_end)
+ output (match_end, past_end);
+ past_end = match_end;
+ first_time = false;
+ }
+ else
+ {
+ output (match_start, past_end);
+ past_end = match_start;
+ }
+
+ /* For non-regex matching, we can back up. */
+ if (sentinel_length > 0)
+ match_start -= match_length - 1;
+ }
+ }
+}
+
+#if DONT_UNLINK_WHILE_OPEN
+
+/* FIXME-someday: remove all of this DONT_UNLINK_WHILE_OPEN junk.
+ Using atexit like this is wrong, since it can fail
+ when called e.g. 32 or more times.
+ But this isn't a big deal, since the code is used only on WOE/DOS
+ systems, and few people invoke tac on that many nonseekable files. */
+
+static const char *file_to_remove;
+static FILE *fp_to_close;
+
+static void
+unlink_tempfile (void)
+{
+ fclose (fp_to_close);
+ unlink (file_to_remove);
+}
+
+static void
+record_or_unlink_tempfile (char const *fn, FILE *fp)
+{
+ if (!file_to_remove)
+ {
+ file_to_remove = fn;
+ fp_to_close = fp;
+ atexit (unlink_tempfile);
+ }
+}
+
+#else
+
+static void
+record_or_unlink_tempfile (char const *fn, FILE *fp ATTRIBUTE_UNUSED)
+{
+ unlink (fn);
+}
+
+#endif
+
+/* Copy from file descriptor INPUT_FD (corresponding to the named FILE) to
+ a temporary file, and set *G_TMP and *G_TEMPFILE to the resulting stream
+ and file name. Return true if successful. */
+
+static bool
+copy_to_temp (FILE **g_tmp, char **g_tempfile, int input_fd, char const *file)
+{
+ static char *template = NULL;
+ static char const *tempdir;
+ char *tempfile;
+ FILE *tmp;
+ int fd;
+
+ if (template == NULL)
+ {
+ char const * const Template = "%s/tacXXXXXX";
+ tempdir = getenv ("TMPDIR");
+ if (tempdir == NULL)
+ tempdir = DEFAULT_TMPDIR;
+
+ /* Subtract 2 for `%s' and add 1 for the trailing NUL byte. */
+ template = xmalloc (strlen (tempdir) + strlen (Template) - 2 + 1);
+ sprintf (template, Template, tempdir);
+ }
+
+ /* FIXME: there's a small window between a successful mkstemp call
+ and the unlink that's performed by record_or_unlink_tempfile.
+ If we're interrupted in that interval, this code fails to remove
+ the temporary file. On systems that define DONT_UNLINK_WHILE_OPEN,
+ the window is much larger -- it extends to the atexit-called
+ unlink_tempfile.
+ FIXME: clean up upon fatal signal. Don't block them, in case
+ $TMPFILE is a remote file system. */
+
+ tempfile = template;
+ fd = mkstemp (template);
+ if (fd < 0)
+ {
+ error (0, errno, _("cannot create temporary file %s"), quote (tempfile));
+ return false;
+ }
+
+ tmp = fdopen (fd, (O_BINARY ? "w+b" : "w+"));
+ if (! tmp)
+ {
+ error (0, errno, _("cannot open %s for writing"), quote (tempfile));
+ close (fd);
+ unlink (tempfile);
+ return false;
+ }
+
+ record_or_unlink_tempfile (tempfile, tmp);
+
+ while (1)
+ {
+ size_t bytes_read = safe_read (input_fd, G_buffer, read_size);
+ if (bytes_read == 0)
+ break;
+ if (bytes_read == SAFE_READ_ERROR)
+ {
+ error (0, errno, _("%s: read error"), quotearg_colon (file));
+ goto Fail;
+ }
+
+ if (fwrite (G_buffer, 1, bytes_read, tmp) != bytes_read)
+ {
+ error (0, errno, _("%s: write error"), quotearg_colon (tempfile));
+ goto Fail;
+ }
+ }
+
+ if (fflush (tmp) != 0)
+ {
+ error (0, errno, _("%s: write error"), quotearg_colon (tempfile));
+ goto Fail;
+ }
+
+ *g_tmp = tmp;
+ *g_tempfile = tempfile;
+ return true;
+
+ Fail:
+ fclose (tmp);
+ return false;
+}
+
+/* Copy INPUT_FD to a temporary, then tac that file.
+ Return true if successful. */
+
+static bool
+tac_nonseekable (int input_fd, const char *file)
+{
+ FILE *tmp_stream;
+ char *tmp_file;
+ return (copy_to_temp (&tmp_stream, &tmp_file, input_fd, file)
+ && tac_seekable (fileno (tmp_stream), tmp_file));
+}
+
+/* Print FILE in reverse, copying it to a temporary
+ file first if it is not seekable.
+ Return true if successful. */
+
+static bool
+tac_file (const char *filename)
+{
+ bool ok;
+ off_t file_size;
+ int fd;
+ bool is_stdin = STREQ (filename, "-");
+
+ if (is_stdin)
+ {
+ have_read_stdin = true;
+ fd = STDIN_FILENO;
+ filename = _("standard input");
+ if (O_BINARY && ! isatty (STDIN_FILENO))
+ freopen (NULL, "rb", stdin);
+ }
+ else
+ {
+ fd = open (filename, O_RDONLY | O_BINARY);
+ if (fd < 0)
+ {
+ error (0, errno, _("cannot open %s for reading"), quote (filename));
+ return false;
+ }
+ }
+
+ file_size = lseek (fd, (off_t) 0, SEEK_END);
+
+ ok = (file_size < 0 || isatty (fd)
+ ? tac_nonseekable (fd, filename)
+ : tac_seekable (fd, filename));
+
+ if (!is_stdin && close (fd) != 0)
+ {
+ error (0, errno, _("%s: read error"), quotearg_colon (filename));
+ ok = false;
+ }
+ return ok;
+}
+
+int
+main (int argc, char **argv)
+{
+ const char *error_message; /* Return value from re_compile_pattern. */
+ int optc;
+ bool ok;
+ size_t half_buffer_size;
+
+ /* Initializer for file_list if no file-arguments
+ were specified on the command line. */
+ static char const *const default_file_list[] = {"-", NULL};
+ char const *const *file;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ separator = "\n";
+ sentinel_length = 1;
+ separator_ends_record = true;
+
+ while ((optc = getopt_long (argc, argv, "brs:", longopts, NULL)) != -1)
+ {
+ switch (optc)
+ {
+ case 'b':
+ separator_ends_record = false;
+ break;
+ case 'r':
+ sentinel_length = 0;
+ break;
+ case 's':
+ separator = optarg;
+ if (*separator == 0)
+ error (EXIT_FAILURE, 0, _("separator cannot be empty"));
+ break;
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (sentinel_length == 0)
+ {
+ compiled_separator.buffer = NULL;
+ compiled_separator.allocated = 0;
+ compiled_separator.fastmap = compiled_separator_fastmap;
+ compiled_separator.translate = NULL;
+ error_message = re_compile_pattern (separator, strlen (separator),
+ &compiled_separator);
+ if (error_message)
+ error (EXIT_FAILURE, 0, "%s", error_message);
+ }
+ else
+ match_length = sentinel_length = strlen (separator);
+
+ read_size = INITIAL_READSIZE;
+ while (sentinel_length >= read_size / 2)
+ {
+ if (SIZE_MAX / 2 < read_size)
+ xalloc_die ();
+ read_size *= 2;
+ }
+ half_buffer_size = read_size + sentinel_length + 1;
+ G_buffer_size = 2 * half_buffer_size;
+ if (! (read_size < half_buffer_size && half_buffer_size < G_buffer_size))
+ xalloc_die ();
+ G_buffer = xmalloc (G_buffer_size);
+ if (sentinel_length)
+ {
+ strcpy (G_buffer, separator);
+ G_buffer += sentinel_length;
+ }
+ else
+ {
+ ++G_buffer;
+ }
+
+ file = (optind < argc
+ ? (char const *const *) &argv[optind]
+ : default_file_list);
+
+ if (O_BINARY && ! isatty (STDOUT_FILENO))
+ freopen (NULL, "wb", stdout);
+
+ {
+ size_t i;
+ ok = true;
+ for (i = 0; file[i]; ++i)
+ ok &= tac_file (file[i]);
+ }
+
+ /* Flush the output buffer. */
+ output ((char *) NULL, (char *) NULL);
+
+ if (have_read_stdin && close (STDIN_FILENO) < 0)
+ error (EXIT_FAILURE, errno, "-");
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/tail.c b/src/tail.c
new file mode 100644
index 0000000..2582b9d
--- /dev/null
+++ b/src/tail.c
@@ -0,0 +1,1697 @@
+/* tail -- output the last part of file(s)
+ Copyright (C) 1989, 90, 91, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Can display any amount of data, unlike the Unix version, which uses
+ a fixed size buffer and therefore can only deliver a limited number
+ of lines.
+
+ Original version by Paul Rubin <phr@ocf.berkeley.edu>.
+ Extensions by David MacKenzie <djm@gnu.ai.mit.edu>.
+ tail -f for multiple files by Ian Lance Taylor <ian@airs.com>. */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <assert.h>
+#include <getopt.h>
+#include <sys/types.h>
+#include <signal.h>
+
+#include "system.h"
+#include "argmatch.h"
+#include "c-strtod.h"
+#include "error.h"
+#include "fcntl--.h"
+#include "inttostr.h"
+#include "isapipe.h"
+#include "posixver.h"
+#include "quote.h"
+#include "safe-read.h"
+#include "stat-time.h"
+#include "xnanosleep.h"
+#include "xstrtol.h"
+#include "xstrtod.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "tail"
+
+#define AUTHORS \
+ "Paul Rubin", "David MacKenzie, Ian Lance Taylor", "Jim Meyering"
+
+/* Number of items to tail. */
+#define DEFAULT_N_LINES 10
+
+/* Special values for dump_remainder's N_BYTES parameter. */
+#define COPY_TO_EOF UINTMAX_MAX
+#define COPY_A_BUFFER (UINTMAX_MAX - 1)
+
+/* FIXME: make Follow_name the default? */
+#define DEFAULT_FOLLOW_MODE Follow_descriptor
+
+enum Follow_mode
+{
+ /* Follow the name of each file: if the file is renamed, try to reopen
+ that name and track the end of the new file if/when it's recreated.
+ This is useful for tracking logs that are occasionally rotated. */
+ Follow_name = 1,
+
+ /* Follow each descriptor obtained upon opening a file.
+ That means we'll continue to follow the end of a file even after
+ it has been renamed or unlinked. */
+ Follow_descriptor = 2
+};
+
+/* The types of files for which tail works. */
+#define IS_TAILABLE_FILE_TYPE(Mode) \
+ (S_ISREG (Mode) || S_ISFIFO (Mode) || S_ISSOCK (Mode) || S_ISCHR (Mode))
+
+static char const *const follow_mode_string[] =
+{
+ "descriptor", "name", NULL
+};
+
+static enum Follow_mode const follow_mode_map[] =
+{
+ Follow_descriptor, Follow_name,
+};
+
+struct File_spec
+{
+ /* The actual file name, or "-" for stdin. */
+ char *name;
+
+ /* File descriptor on which the file is open; -1 if it's not open. */
+ int fd;
+
+ /* Attributes of the file the last time we checked. */
+ off_t size;
+ struct timespec mtime;
+ dev_t dev;
+ ino_t ino;
+ mode_t mode;
+
+ /* 1 if O_NONBLOCK is clear, 0 if set, -1 if not known. */
+ int blocking;
+
+ /* The specified name initially referred to a directory or some other
+ type for which tail isn't meaningful. Unlike for a permission problem
+ (tailable, below) once this is set, the name is not checked ever again. */
+ bool ignore;
+
+ /* See description of DEFAULT_MAX_N_... below. */
+ uintmax_t n_unchanged_stats;
+
+ /* A file is tailable if it exists, is readable, and is of type
+ IS_TAILABLE_FILE_TYPE. */
+ bool tailable;
+
+ /* The value of errno seen last time we checked this file. */
+ int errnum;
+
+};
+
+/* Keep trying to open a file even if it is inaccessible when tail starts
+ or if it becomes inaccessible later -- useful only with -f. */
+static bool reopen_inaccessible_files;
+
+/* If true, interpret the numeric argument as the number of lines.
+ Otherwise, interpret it as the number of bytes. */
+static bool count_lines;
+
+/* Whether we follow the name of each file or the file descriptor
+ that is initially associated with each name. */
+static enum Follow_mode follow_mode = Follow_descriptor;
+
+/* If true, read from the ends of all specified files until killed. */
+static bool forever;
+
+/* If true, count from start of file instead of end. */
+static bool from_start;
+
+/* If true, print filename headers. */
+static bool print_headers;
+
+/* When to print the filename banners. */
+enum header_mode
+{
+ multiple_files, always, never
+};
+
+/* When tailing a file by name, if there have been this many consecutive
+ iterations for which the file has not changed, then open/fstat
+ the file to determine if that file name is still associated with the
+ same device/inode-number pair as before. This option is meaningful only
+ when following by name. --max-unchanged-stats=N */
+#define DEFAULT_MAX_N_UNCHANGED_STATS_BETWEEN_OPENS 5
+static uintmax_t max_n_unchanged_stats_between_opens =
+ DEFAULT_MAX_N_UNCHANGED_STATS_BETWEEN_OPENS;
+
+/* The name this program was run with. */
+char *program_name;
+
+/* The process ID of the process (presumably on the current host)
+ that is writing to all followed files. */
+static pid_t pid;
+
+/* True if we have ever read standard input. */
+static bool have_read_stdin;
+
+/* If nonzero, skip the is-regular-file test used to determine whether
+ to use the lseek optimization. Instead, use the more general (and
+ more expensive) code unconditionally. Intended solely for testing. */
+static bool presume_input_pipe;
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ RETRY_OPTION = CHAR_MAX + 1,
+ MAX_UNCHANGED_STATS_OPTION,
+ PID_OPTION,
+ PRESUME_INPUT_PIPE_OPTION,
+ LONG_FOLLOW_OPTION
+};
+
+static struct option const long_options[] =
+{
+ {"bytes", required_argument, NULL, 'c'},
+ {"follow", optional_argument, NULL, LONG_FOLLOW_OPTION},
+ {"lines", required_argument, NULL, 'n'},
+ {"max-unchanged-stats", required_argument, NULL, MAX_UNCHANGED_STATS_OPTION},
+ {"pid", required_argument, NULL, PID_OPTION},
+ {"-presume-input-pipe", no_argument, NULL,
+ PRESUME_INPUT_PIPE_OPTION}, /* do not document */
+ {"quiet", no_argument, NULL, 'q'},
+ {"retry", no_argument, NULL, RETRY_OPTION},
+ {"silent", no_argument, NULL, 'q'},
+ {"sleep-interval", required_argument, NULL, 's'},
+ {"verbose", no_argument, NULL, 'v'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [FILE]...\n\
+"),
+ program_name);
+ printf (_("\
+Print the last %d lines of each FILE to standard output.\n\
+With more than one FILE, precede each with a header giving the file name.\n\
+With no FILE, or when FILE is -, read standard input.\n\
+\n\
+"), DEFAULT_N_LINES);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ --retry keep trying to open a file even if it is\n\
+ inaccessible when tail starts or if it becomes\n\
+ inaccessible later; useful when following by name,\n\
+ i.e., with --follow=name\n\
+ -c, --bytes=N output the last N bytes; alternatively, use +N to\n\
+ output bytes starting with the Nth of each file\n\
+"), stdout);
+ fputs (_("\
+ -f, --follow[={name|descriptor}]\n\
+ output appended data as the file grows;\n\
+ -f, --follow, and --follow=descriptor are\n\
+ equivalent\n\
+ -F same as --follow=name --retry\n\
+"), stdout);
+ printf (_("\
+ -n, --lines=N output the last N lines, instead of the last %d;\n\
+ or use +N to output lines starting with the Nth\n\
+ --max-unchanged-stats=N\n\
+ with --follow=name, reopen a FILE which has not\n\
+ changed size after N (default %d) iterations\n\
+ to see if it has been unlinked or renamed\n\
+ (this is the usual case of rotated log files)\n\
+"),
+ DEFAULT_N_LINES,
+ DEFAULT_MAX_N_UNCHANGED_STATS_BETWEEN_OPENS
+ );
+ fputs (_("\
+ --pid=PID with -f, terminate after process ID, PID dies\n\
+ -q, --quiet, --silent never output headers giving file names\n\
+ -s, --sleep-interval=S with -f, sleep for approximately S seconds\n\
+ (default 1.0) between iterations.\n\
+ -v, --verbose always output headers giving file names\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+If the first character of N (the number of bytes or lines) is a `+',\n\
+print beginning with the Nth item from the start of each file, otherwise,\n\
+print the last N items in the file. N may have a multiplier suffix:\n\
+b 512, k 1024, m 1024*1024.\n\
+\n\
+"), stdout);
+ fputs (_("\
+With --follow (-f), tail defaults to following the file descriptor, which\n\
+means that even if a tail'ed file is renamed, tail will continue to track\n\
+its end. \
+"), stdout);
+ fputs (_("\
+This default behavior is not desirable when you really want to\n\
+track the actual name of the file, not the file descriptor (e.g., log\n\
+rotation). Use --follow=name in that case. That causes tail to track the\n\
+named file by reopening it periodically to see if it has been removed and\n\
+recreated by some other program.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+static bool
+valid_file_spec (struct File_spec const *f)
+{
+ /* Exactly one of the following subexpressions must be true. */
+ return ((f->fd == -1) ^ (f->errnum == 0));
+}
+
+static char const *
+pretty_name (struct File_spec const *f)
+{
+ return (STREQ (f->name, "-") ? "standard input" : f->name);
+}
+
+static void
+xwrite_stdout (char const *buffer, size_t n_bytes)
+{
+ if (n_bytes > 0 && fwrite (buffer, 1, n_bytes, stdout) == 0)
+ error (EXIT_FAILURE, errno, _("write error"));
+}
+
+/* Record a file F with descriptor FD, size SIZE, status ST, and
+ blocking status BLOCKING. */
+
+static void
+record_open_fd (struct File_spec *f, int fd,
+ off_t size, struct stat const *st,
+ int blocking)
+{
+ f->fd = fd;
+ f->size = size;
+ f->mtime = get_stat_mtime (st);
+ f->dev = st->st_dev;
+ f->ino = st->st_ino;
+ f->mode = st->st_mode;
+ f->blocking = blocking;
+ f->n_unchanged_stats = 0;
+ f->ignore = 0;
+}
+
+/* Close the file with descriptor FD and name FILENAME. */
+
+static void
+close_fd (int fd, const char *filename)
+{
+ if (fd != -1 && fd != STDIN_FILENO && close (fd))
+ {
+ error (0, errno, _("closing %s (fd=%d)"), filename, fd);
+ }
+}
+
+static void
+write_header (const char *pretty_filename)
+{
+ static bool first_file = true;
+
+ printf ("%s==> %s <==\n", (first_file ? "" : "\n"), pretty_filename);
+ first_file = false;
+}
+
+/* Read and output N_BYTES of file PRETTY_FILENAME starting at the current
+ position in FD. If N_BYTES is COPY_TO_EOF, then copy until end of file.
+ If N_BYTES is COPY_A_BUFFER, then copy at most one buffer's worth.
+ Return the number of bytes read from the file. */
+
+static uintmax_t
+dump_remainder (const char *pretty_filename, int fd, uintmax_t n_bytes)
+{
+ uintmax_t n_written;
+ uintmax_t n_remaining = n_bytes;
+
+ n_written = 0;
+ while (1)
+ {
+ char buffer[BUFSIZ];
+ size_t n = MIN (n_remaining, BUFSIZ);
+ size_t bytes_read = safe_read (fd, buffer, n);
+ if (bytes_read == SAFE_READ_ERROR)
+ {
+ if (errno != EAGAIN)
+ error (EXIT_FAILURE, errno, _("error reading %s"),
+ quote (pretty_filename));
+ break;
+ }
+ if (bytes_read == 0)
+ break;
+ xwrite_stdout (buffer, bytes_read);
+ n_written += bytes_read;
+ if (n_bytes != COPY_TO_EOF)
+ {
+ n_remaining -= bytes_read;
+ if (n_remaining == 0 || n_bytes == COPY_A_BUFFER)
+ break;
+ }
+ }
+
+ return n_written;
+}
+
+/* Call lseek with the specified arguments, where file descriptor FD
+ corresponds to the file, FILENAME.
+ Give a diagnostic and exit nonzero if lseek fails.
+ Otherwise, return the resulting offset. */
+
+static off_t
+xlseek (int fd, off_t offset, int whence, char const *filename)
+{
+ off_t new_offset = lseek (fd, offset, whence);
+ char buf[INT_BUFSIZE_BOUND (off_t)];
+ char *s;
+
+ if (0 <= new_offset)
+ return new_offset;
+
+ s = offtostr (offset, buf);
+ switch (whence)
+ {
+ case SEEK_SET:
+ error (0, errno, _("%s: cannot seek to offset %s"),
+ filename, s);
+ break;
+ case SEEK_CUR:
+ error (0, errno, _("%s: cannot seek to relative offset %s"),
+ filename, s);
+ break;
+ case SEEK_END:
+ error (0, errno, _("%s: cannot seek to end-relative offset %s"),
+ filename, s);
+ break;
+ default:
+ abort ();
+ }
+
+ exit (EXIT_FAILURE);
+}
+
+/* Print the last N_LINES lines from the end of file FD.
+ Go backward through the file, reading `BUFSIZ' bytes at a time (except
+ probably the first), until we hit the start of the file or have
+ read NUMBER newlines.
+ START_POS is the starting position of the read pointer for the file
+ associated with FD (may be nonzero).
+ END_POS is the file offset of EOF (one larger than offset of last byte).
+ Return true if successful. */
+
+static bool
+file_lines (const char *pretty_filename, int fd, uintmax_t n_lines,
+ off_t start_pos, off_t end_pos, uintmax_t *read_pos)
+{
+ char buffer[BUFSIZ];
+ size_t bytes_read;
+ off_t pos = end_pos;
+
+ if (n_lines == 0)
+ return true;
+
+ /* Set `bytes_read' to the size of the last, probably partial, buffer;
+ 0 < `bytes_read' <= `BUFSIZ'. */
+ bytes_read = (pos - start_pos) % BUFSIZ;
+ if (bytes_read == 0)
+ bytes_read = BUFSIZ;
+ /* Make `pos' a multiple of `BUFSIZ' (0 if the file is short), so that all
+ reads will be on block boundaries, which might increase efficiency. */
+ pos -= bytes_read;
+ xlseek (fd, pos, SEEK_SET, pretty_filename);
+ bytes_read = safe_read (fd, buffer, bytes_read);
+ if (bytes_read == SAFE_READ_ERROR)
+ {
+ error (0, errno, _("error reading %s"), quote (pretty_filename));
+ return false;
+ }
+ *read_pos = pos + bytes_read;
+
+ /* Count the incomplete line on files that don't end with a newline. */
+ if (bytes_read && buffer[bytes_read - 1] != '\n')
+ --n_lines;
+
+ do
+ {
+ /* Scan backward, counting the newlines in this bufferfull. */
+
+ size_t n = bytes_read;
+ while (n)
+ {
+ char const *nl;
+ nl = memrchr (buffer, '\n', n);
+ if (nl == NULL)
+ break;
+ n = nl - buffer;
+ if (n_lines-- == 0)
+ {
+ /* If this newline isn't the last character in the buffer,
+ output the part that is after it. */
+ if (n != bytes_read - 1)
+ xwrite_stdout (nl + 1, bytes_read - (n + 1));
+ *read_pos += dump_remainder (pretty_filename, fd,
+ end_pos - (pos + bytes_read));
+ return true;
+ }
+ }
+
+ /* Not enough newlines in that bufferfull. */
+ if (pos == start_pos)
+ {
+ /* Not enough lines in the file; print everything from
+ start_pos to the end. */
+ xlseek (fd, start_pos, SEEK_SET, pretty_filename);
+ *read_pos = start_pos + dump_remainder (pretty_filename, fd,
+ end_pos);
+ return true;
+ }
+ pos -= BUFSIZ;
+ xlseek (fd, pos, SEEK_SET, pretty_filename);
+
+ bytes_read = safe_read (fd, buffer, BUFSIZ);
+ if (bytes_read == SAFE_READ_ERROR)
+ {
+ error (0, errno, _("error reading %s"), quote (pretty_filename));
+ return false;
+ }
+
+ *read_pos = pos + bytes_read;
+ }
+ while (bytes_read > 0);
+
+ return true;
+}
+
+/* Print the last N_LINES lines from the end of the standard input,
+ open for reading as pipe FD.
+ Buffer the text as a linked list of LBUFFERs, adding them as needed.
+ Return true if successful. */
+
+static bool
+pipe_lines (const char *pretty_filename, int fd, uintmax_t n_lines,
+ uintmax_t *read_pos)
+{
+ struct linebuffer
+ {
+ char buffer[BUFSIZ];
+ size_t nbytes;
+ size_t nlines;
+ struct linebuffer *next;
+ };
+ typedef struct linebuffer LBUFFER;
+ LBUFFER *first, *last, *tmp;
+ size_t total_lines = 0; /* Total number of newlines in all buffers. */
+ bool ok = true;
+ size_t n_read; /* Size in bytes of most recent read */
+
+ first = last = xmalloc (sizeof (LBUFFER));
+ first->nbytes = first->nlines = 0;
+ first->next = NULL;
+ tmp = xmalloc (sizeof (LBUFFER));
+
+ /* Input is always read into a fresh buffer. */
+ while (1)
+ {
+ n_read = safe_read (fd, tmp->buffer, BUFSIZ);
+ if (n_read == 0 || n_read == SAFE_READ_ERROR)
+ break;
+ tmp->nbytes = n_read;
+ *read_pos += n_read;
+ tmp->nlines = 0;
+ tmp->next = NULL;
+
+ /* Count the number of newlines just read. */
+ {
+ char const *buffer_end = tmp->buffer + n_read;
+ char const *p = tmp->buffer;
+ while ((p = memchr (p, '\n', buffer_end - p)))
+ {
+ ++p;
+ ++tmp->nlines;
+ }
+ }
+ total_lines += tmp->nlines;
+
+ /* If there is enough room in the last buffer read, just append the new
+ one to it. This is because when reading from a pipe, `n_read' can
+ often be very small. */
+ if (tmp->nbytes + last->nbytes < BUFSIZ)
+ {
+ memcpy (&last->buffer[last->nbytes], tmp->buffer, tmp->nbytes);
+ last->nbytes += tmp->nbytes;
+ last->nlines += tmp->nlines;
+ }
+ else
+ {
+ /* If there's not enough room, link the new buffer onto the end of
+ the list, then either free up the oldest buffer for the next
+ read if that would leave enough lines, or else malloc a new one.
+ Some compaction mechanism is possible but probably not
+ worthwhile. */
+ last = last->next = tmp;
+ if (total_lines - first->nlines > n_lines)
+ {
+ tmp = first;
+ total_lines -= first->nlines;
+ first = first->next;
+ }
+ else
+ tmp = xmalloc (sizeof (LBUFFER));
+ }
+ }
+
+ free (tmp);
+
+ if (n_read == SAFE_READ_ERROR)
+ {
+ error (0, errno, _("error reading %s"), quote (pretty_filename));
+ ok = false;
+ goto free_lbuffers;
+ }
+
+ /* If the file is empty, then bail out. */
+ if (last->nbytes == 0)
+ goto free_lbuffers;
+
+ /* This prevents a core dump when the pipe contains no newlines. */
+ if (n_lines == 0)
+ goto free_lbuffers;
+
+ /* Count the incomplete line on files that don't end with a newline. */
+ if (last->buffer[last->nbytes - 1] != '\n')
+ {
+ ++last->nlines;
+ ++total_lines;
+ }
+
+ /* Run through the list, printing lines. First, skip over unneeded
+ buffers. */
+ for (tmp = first; total_lines - tmp->nlines > n_lines; tmp = tmp->next)
+ total_lines -= tmp->nlines;
+
+ /* Find the correct beginning, then print the rest of the file. */
+ {
+ char const *beg = tmp->buffer;
+ char const *buffer_end = tmp->buffer + tmp->nbytes;
+ if (total_lines > n_lines)
+ {
+ /* Skip `total_lines' - `n_lines' newlines. We made sure that
+ `total_lines' - `n_lines' <= `tmp->nlines'. */
+ size_t j;
+ for (j = total_lines - n_lines; j; --j)
+ {
+ beg = memchr (beg, '\n', buffer_end - beg);
+ assert (beg);
+ ++beg;
+ }
+ }
+
+ xwrite_stdout (beg, buffer_end - beg);
+ }
+
+ for (tmp = tmp->next; tmp; tmp = tmp->next)
+ xwrite_stdout (tmp->buffer, tmp->nbytes);
+
+free_lbuffers:
+ while (first)
+ {
+ tmp = first->next;
+ free (first);
+ first = tmp;
+ }
+ return ok;
+}
+
+/* Print the last N_BYTES characters from the end of pipe FD.
+ This is a stripped down version of pipe_lines.
+ Return true if successful. */
+
+static bool
+pipe_bytes (const char *pretty_filename, int fd, uintmax_t n_bytes,
+ uintmax_t *read_pos)
+{
+ struct charbuffer
+ {
+ char buffer[BUFSIZ];
+ size_t nbytes;
+ struct charbuffer *next;
+ };
+ typedef struct charbuffer CBUFFER;
+ CBUFFER *first, *last, *tmp;
+ size_t i; /* Index into buffers. */
+ size_t total_bytes = 0; /* Total characters in all buffers. */
+ bool ok = true;
+ size_t n_read;
+
+ first = last = xmalloc (sizeof (CBUFFER));
+ first->nbytes = 0;
+ first->next = NULL;
+ tmp = xmalloc (sizeof (CBUFFER));
+
+ /* Input is always read into a fresh buffer. */
+ while (1)
+ {
+ n_read = safe_read (fd, tmp->buffer, BUFSIZ);
+ if (n_read == 0 || n_read == SAFE_READ_ERROR)
+ break;
+ *read_pos += n_read;
+ tmp->nbytes = n_read;
+ tmp->next = NULL;
+
+ total_bytes += tmp->nbytes;
+ /* If there is enough room in the last buffer read, just append the new
+ one to it. This is because when reading from a pipe, `nbytes' can
+ often be very small. */
+ if (tmp->nbytes + last->nbytes < BUFSIZ)
+ {
+ memcpy (&last->buffer[last->nbytes], tmp->buffer, tmp->nbytes);
+ last->nbytes += tmp->nbytes;
+ }
+ else
+ {
+ /* If there's not enough room, link the new buffer onto the end of
+ the list, then either free up the oldest buffer for the next
+ read if that would leave enough characters, or else malloc a new
+ one. Some compaction mechanism is possible but probably not
+ worthwhile. */
+ last = last->next = tmp;
+ if (total_bytes - first->nbytes > n_bytes)
+ {
+ tmp = first;
+ total_bytes -= first->nbytes;
+ first = first->next;
+ }
+ else
+ {
+ tmp = xmalloc (sizeof (CBUFFER));
+ }
+ }
+ }
+
+ free (tmp);
+
+ if (n_read == SAFE_READ_ERROR)
+ {
+ error (0, errno, _("error reading %s"), quote (pretty_filename));
+ ok = false;
+ goto free_cbuffers;
+ }
+
+ /* Run through the list, printing characters. First, skip over unneeded
+ buffers. */
+ for (tmp = first; total_bytes - tmp->nbytes > n_bytes; tmp = tmp->next)
+ total_bytes -= tmp->nbytes;
+
+ /* Find the correct beginning, then print the rest of the file.
+ We made sure that `total_bytes' - `n_bytes' <= `tmp->nbytes'. */
+ if (total_bytes > n_bytes)
+ i = total_bytes - n_bytes;
+ else
+ i = 0;
+ xwrite_stdout (&tmp->buffer[i], tmp->nbytes - i);
+
+ for (tmp = tmp->next; tmp; tmp = tmp->next)
+ xwrite_stdout (tmp->buffer, tmp->nbytes);
+
+free_cbuffers:
+ while (first)
+ {
+ tmp = first->next;
+ free (first);
+ first = tmp;
+ }
+ return ok;
+}
+
+/* Skip N_BYTES characters from the start of pipe FD, and print
+ any extra characters that were read beyond that.
+ Return 1 on error, 0 if ok, -1 if EOF. */
+
+static int
+start_bytes (const char *pretty_filename, int fd, uintmax_t n_bytes,
+ uintmax_t *read_pos)
+{
+ char buffer[BUFSIZ];
+
+ while (0 < n_bytes)
+ {
+ size_t bytes_read = safe_read (fd, buffer, BUFSIZ);
+ if (bytes_read == 0)
+ return -1;
+ if (bytes_read == SAFE_READ_ERROR)
+ {
+ error (0, errno, _("error reading %s"), quote (pretty_filename));
+ return 1;
+ }
+ read_pos += bytes_read;
+ if (bytes_read <= n_bytes)
+ n_bytes -= bytes_read;
+ else
+ {
+ size_t n_remaining = bytes_read - n_bytes;
+ if (n_remaining)
+ xwrite_stdout (&buffer[n_bytes], n_remaining);
+ break;
+ }
+ }
+
+ return 0;
+}
+
+/* Skip N_LINES lines at the start of file or pipe FD, and print
+ any extra characters that were read beyond that.
+ Return 1 on error, 0 if ok, -1 if EOF. */
+
+static int
+start_lines (const char *pretty_filename, int fd, uintmax_t n_lines,
+ uintmax_t *read_pos)
+{
+ if (n_lines == 0)
+ return 0;
+
+ while (1)
+ {
+ char buffer[BUFSIZ];
+ char *p = buffer;
+ size_t bytes_read = safe_read (fd, buffer, BUFSIZ);
+ char *buffer_end = buffer + bytes_read;
+ if (bytes_read == 0) /* EOF */
+ return -1;
+ if (bytes_read == SAFE_READ_ERROR) /* error */
+ {
+ error (0, errno, _("error reading %s"), quote (pretty_filename));
+ return 1;
+ }
+
+ *read_pos += bytes_read;
+
+ while ((p = memchr (p, '\n', buffer_end - p)))
+ {
+ ++p;
+ if (--n_lines == 0)
+ {
+ if (p < buffer_end)
+ xwrite_stdout (p, buffer_end - p);
+ return 0;
+ }
+ }
+ }
+}
+
+/* FIXME: describe */
+
+static void
+recheck (struct File_spec *f, bool blocking)
+{
+ /* open/fstat the file and announce if dev/ino have changed */
+ struct stat new_stats;
+ bool ok = true;
+ bool is_stdin = (STREQ (f->name, "-"));
+ bool was_tailable = f->tailable;
+ int prev_errnum = f->errnum;
+ bool new_file;
+ int fd = (is_stdin
+ ? STDIN_FILENO
+ : open (f->name, O_RDONLY | (blocking ? 0 : O_NONBLOCK)));
+
+ assert (valid_file_spec (f));
+
+ /* If the open fails because the file doesn't exist,
+ then mark the file as not tailable. */
+ f->tailable = !(reopen_inaccessible_files && fd == -1);
+
+ if (fd == -1 || fstat (fd, &new_stats) < 0)
+ {
+ ok = false;
+ f->errnum = errno;
+ if (!f->tailable)
+ {
+ if (was_tailable)
+ {
+ /* FIXME-maybe: detect the case in which the file first becomes
+ unreadable (perms), and later becomes readable again and can
+ be seen to be the same file (dev/ino). Otherwise, tail prints
+ the entire contents of the file when it becomes readable. */
+ error (0, f->errnum, _("%s has become inaccessible"),
+ quote (pretty_name (f)));
+ }
+ else
+ {
+ /* say nothing... it's still not tailable */
+ }
+ }
+ else if (prev_errnum != errno)
+ {
+ error (0, errno, "%s", pretty_name (f));
+ }
+ }
+ else if (!IS_TAILABLE_FILE_TYPE (new_stats.st_mode))
+ {
+ ok = false;
+ f->errnum = -1;
+ error (0, 0, _("%s has been replaced with an untailable file;\
+ giving up on this name"),
+ quote (pretty_name (f)));
+ f->ignore = true;
+ }
+ else
+ {
+ f->errnum = 0;
+ }
+
+ new_file = false;
+ if (!ok)
+ {
+ close_fd (fd, pretty_name (f));
+ close_fd (f->fd, pretty_name (f));
+ f->fd = -1;
+ }
+ else if (prev_errnum && prev_errnum != ENOENT)
+ {
+ new_file = true;
+ assert (f->fd == -1);
+ error (0, 0, _("%s has become accessible"), quote (pretty_name (f)));
+ }
+ else if (f->ino != new_stats.st_ino || f->dev != new_stats.st_dev)
+ {
+ new_file = true;
+ if (f->fd == -1)
+ {
+ error (0, 0,
+ _("%s has appeared; following end of new file"),
+ quote (pretty_name (f)));
+ }
+ else
+ {
+ /* Close the old one. */
+ close_fd (f->fd, pretty_name (f));
+
+ /* File has been replaced (e.g., via log rotation) --
+ tail the new one. */
+ error (0, 0,
+ _("%s has been replaced; following end of new file"),
+ quote (pretty_name (f)));
+ }
+ }
+ else
+ {
+ if (f->fd == -1)
+ {
+ /* This happens when one iteration finds the file missing,
+ then the preceding <dev,inode> pair is reused as the
+ file is recreated. */
+ new_file = true;
+ }
+ else
+ {
+ close_fd (fd, pretty_name (f));
+ }
+ }
+
+ if (new_file)
+ {
+ /* Start at the beginning of the file. */
+ record_open_fd (f, fd, 0, &new_stats, (is_stdin ? -1 : blocking));
+ xlseek (fd, 0, SEEK_SET, pretty_name (f));
+ }
+}
+
+/* Return true if any of the N_FILES files in F are live, i.e., have
+ open file descriptors. */
+
+static bool
+any_live_files (const struct File_spec *f, int n_files)
+{
+ int i;
+
+ for (i = 0; i < n_files; i++)
+ if (0 <= f[i].fd)
+ return true;
+ return false;
+}
+
+/* Tail NFILES files forever, or until killed.
+ The pertinent information for each file is stored in an entry of F.
+ Loop over each of them, doing an fstat to see if they have changed size,
+ and an occasional open/fstat to see if any dev/ino pair has changed.
+ If none of them have changed size in one iteration, sleep for a
+ while and try again. Continue until the user interrupts us. */
+
+static void
+tail_forever (struct File_spec *f, int nfiles, double sleep_interval)
+{
+ /* Use blocking I/O as an optimization, when it's easy. */
+ bool blocking = (pid == 0 && follow_mode == Follow_descriptor
+ && nfiles == 1 && ! S_ISREG (f[0].mode));
+ int last;
+ bool writer_is_dead = false;
+
+ last = nfiles - 1;
+
+ while (1)
+ {
+ int i;
+ bool any_input = false;
+
+ for (i = 0; i < nfiles; i++)
+ {
+ int fd;
+ char const *name;
+ mode_t mode;
+ struct stat stats;
+ uintmax_t bytes_read;
+
+ if (f[i].ignore)
+ continue;
+
+ if (f[i].fd < 0)
+ {
+ recheck (&f[i], blocking);
+ continue;
+ }
+
+ fd = f[i].fd;
+ name = pretty_name (&f[i]);
+ mode = f[i].mode;
+
+ if (f[i].blocking != blocking)
+ {
+ int old_flags = fcntl (fd, F_GETFL);
+ int new_flags = old_flags | (blocking ? 0 : O_NONBLOCK);
+ if (old_flags < 0
+ || (new_flags != old_flags
+ && fcntl (fd, F_SETFL, new_flags) == -1))
+ {
+ /* Don't update f[i].blocking if fcntl fails. */
+ if (S_ISREG (f[i].mode) && errno == EPERM)
+ {
+ /* This happens when using tail -f on a file with
+ the append-only attribute. */
+ }
+ else
+ error (EXIT_FAILURE, errno,
+ _("%s: cannot change nonblocking mode"), name);
+ }
+ else
+ f[i].blocking = blocking;
+ }
+
+ if (!f[i].blocking)
+ {
+ if (fstat (fd, &stats) != 0)
+ {
+ f[i].fd = -1;
+ f[i].errnum = errno;
+ error (0, errno, "%s", name);
+ continue;
+ }
+
+ if (f[i].mode == stats.st_mode
+ && (! S_ISREG (stats.st_mode) || f[i].size == stats.st_size)
+ && timespec_cmp (f[i].mtime, get_stat_mtime (&stats)) == 0)
+ {
+ if ((max_n_unchanged_stats_between_opens
+ <= f[i].n_unchanged_stats++)
+ && follow_mode == Follow_name)
+ {
+ recheck (&f[i], f[i].blocking);
+ f[i].n_unchanged_stats = 0;
+ }
+ continue;
+ }
+
+ /* This file has changed. Print out what we can, and
+ then keep looping. */
+
+ f[i].mtime = get_stat_mtime (&stats);
+ f[i].mode = stats.st_mode;
+
+ /* reset counter */
+ f[i].n_unchanged_stats = 0;
+
+ if (S_ISREG (mode) && stats.st_size < f[i].size)
+ {
+ error (0, 0, _("%s: file truncated"), name);
+ last = i;
+ xlseek (fd, stats.st_size, SEEK_SET, name);
+ f[i].size = stats.st_size;
+ continue;
+ }
+
+ if (i != last)
+ {
+ if (print_headers)
+ write_header (name);
+ last = i;
+ }
+ }
+
+ bytes_read = dump_remainder (name, fd,
+ (f[i].blocking
+ ? COPY_A_BUFFER : COPY_TO_EOF));
+ any_input |= (bytes_read != 0);
+ f[i].size += bytes_read;
+ }
+
+ if (! any_live_files (f, nfiles) && ! reopen_inaccessible_files)
+ {
+ error (0, 0, _("no files remaining"));
+ break;
+ }
+
+ if ((!any_input | blocking) && fflush (stdout) != 0)
+ error (EXIT_FAILURE, errno, _("write error"));
+
+ /* If nothing was read, sleep and/or check for dead writers. */
+ if (!any_input)
+ {
+ if (writer_is_dead)
+ break;
+
+ if (xnanosleep (sleep_interval))
+ error (EXIT_FAILURE, errno, _("cannot read realtime clock"));
+
+ /* Once the writer is dead, read the files once more to
+ avoid a race condition. */
+ writer_is_dead = (pid != 0
+ && kill (pid, 0) != 0
+ /* Handle the case in which you cannot send a
+ signal to the writer, so kill fails and sets
+ errno to EPERM. */
+ && errno != EPERM);
+ }
+ }
+}
+
+/* Output the last N_BYTES bytes of file FILENAME open for reading in FD.
+ Return true if successful. */
+
+static bool
+tail_bytes (const char *pretty_filename, int fd, uintmax_t n_bytes,
+ uintmax_t *read_pos)
+{
+ struct stat stats;
+
+ if (fstat (fd, &stats))
+ {
+ error (0, errno, _("cannot fstat %s"), quote (pretty_filename));
+ return false;
+ }
+
+ if (from_start)
+ {
+ if ( ! presume_input_pipe
+ && S_ISREG (stats.st_mode) && n_bytes <= OFF_T_MAX)
+ {
+ xlseek (fd, n_bytes, SEEK_CUR, pretty_filename);
+ *read_pos += n_bytes;
+ }
+ else
+ {
+ int t = start_bytes (pretty_filename, fd, n_bytes, read_pos);
+ if (t)
+ return t < 0;
+ }
+ *read_pos += dump_remainder (pretty_filename, fd, COPY_TO_EOF);
+ }
+ else
+ {
+ if ( ! presume_input_pipe
+ && S_ISREG (stats.st_mode) && n_bytes <= OFF_T_MAX)
+ {
+ off_t current_pos = xlseek (fd, 0, SEEK_CUR, pretty_filename);
+ off_t end_pos = xlseek (fd, 0, SEEK_END, pretty_filename);
+ off_t diff = end_pos - current_pos;
+ /* Be careful here. The current position may actually be
+ beyond the end of the file. */
+ off_t bytes_remaining = (diff = end_pos - current_pos) < 0 ? 0 : diff;
+ off_t nb = n_bytes;
+
+ if (bytes_remaining <= nb)
+ {
+ /* From the current position to end of file, there are no
+ more bytes than have been requested. So reposition the
+ file pointer to the incoming current position and print
+ everything after that. */
+ *read_pos = xlseek (fd, current_pos, SEEK_SET, pretty_filename);
+ }
+ else
+ {
+ /* There are more bytes remaining than were requested.
+ Back up. */
+ *read_pos = xlseek (fd, -nb, SEEK_END, pretty_filename);
+ }
+ *read_pos += dump_remainder (pretty_filename, fd, n_bytes);
+ }
+ else
+ return pipe_bytes (pretty_filename, fd, n_bytes, read_pos);
+ }
+ return true;
+}
+
+/* Output the last N_LINES lines of file FILENAME open for reading in FD.
+ Return true if successful. */
+
+static bool
+tail_lines (const char *pretty_filename, int fd, uintmax_t n_lines,
+ uintmax_t *read_pos)
+{
+ struct stat stats;
+
+ if (fstat (fd, &stats))
+ {
+ error (0, errno, _("cannot fstat %s"), quote (pretty_filename));
+ return false;
+ }
+
+ if (from_start)
+ {
+ int t = start_lines (pretty_filename, fd, n_lines, read_pos);
+ if (t)
+ return t < 0;
+ *read_pos += dump_remainder (pretty_filename, fd, COPY_TO_EOF);
+ }
+ else
+ {
+ off_t start_pos = -1;
+ off_t end_pos;
+
+ /* Use file_lines only if FD refers to a regular file for
+ which lseek (... SEEK_END) works. */
+ if ( ! presume_input_pipe
+ && S_ISREG (stats.st_mode)
+ && (start_pos = lseek (fd, 0, SEEK_CUR)) != -1
+ && start_pos < (end_pos = lseek (fd, 0, SEEK_END)))
+ {
+ *read_pos = end_pos;
+ if (end_pos != 0
+ && ! file_lines (pretty_filename, fd, n_lines,
+ start_pos, end_pos, read_pos))
+ return false;
+ }
+ else
+ {
+ /* Under very unlikely circumstances, it is possible to reach
+ this point after positioning the file pointer to end of file
+ via the `lseek (...SEEK_END)' above. In that case, reposition
+ the file pointer back to start_pos before calling pipe_lines. */
+ if (start_pos != -1)
+ xlseek (fd, start_pos, SEEK_SET, pretty_filename);
+
+ return pipe_lines (pretty_filename, fd, n_lines, read_pos);
+ }
+ }
+ return true;
+}
+
+/* Display the last N_UNITS units of file FILENAME, open for reading
+ via FD. Set *READ_POS to the position of the input stream pointer.
+ *READ_POS is usually the number of bytes read and corresponds to an
+ offset from the beginning of a file. However, it may be larger than
+ OFF_T_MAX (as for an input pipe), and may also be larger than the
+ number of bytes read (when an input pointer is initially not at
+ beginning of file), and may be far greater than the number of bytes
+ actually read for an input file that is seekable.
+ Return true if successful. */
+
+static bool
+tail (const char *filename, int fd, uintmax_t n_units,
+ uintmax_t *read_pos)
+{
+ *read_pos = 0;
+ if (count_lines)
+ return tail_lines (filename, fd, n_units, read_pos);
+ else
+ return tail_bytes (filename, fd, n_units, read_pos);
+}
+
+/* Display the last N_UNITS units of the file described by F.
+ Return true if successful. */
+
+static bool
+tail_file (struct File_spec *f, uintmax_t n_units)
+{
+ int fd;
+ bool ok;
+
+ bool is_stdin = (STREQ (f->name, "-"));
+
+ if (is_stdin)
+ {
+ have_read_stdin = true;
+ fd = STDIN_FILENO;
+ if (O_BINARY && ! isatty (STDIN_FILENO))
+ freopen (NULL, "rb", stdin);
+ }
+ else
+ fd = open (f->name, O_RDONLY | O_BINARY);
+
+ f->tailable = !(reopen_inaccessible_files && fd == -1);
+
+ if (fd == -1)
+ {
+ if (forever)
+ {
+ f->fd = -1;
+ f->errnum = errno;
+ f->ignore = false;
+ f->ino = 0;
+ f->dev = 0;
+ }
+ error (0, errno, _("cannot open %s for reading"),
+ quote (pretty_name (f)));
+ ok = false;
+ }
+ else
+ {
+ uintmax_t read_pos;
+
+ if (print_headers)
+ write_header (pretty_name (f));
+ ok = tail (pretty_name (f), fd, n_units, &read_pos);
+ if (forever)
+ {
+ struct stat stats;
+
+#if TEST_RACE_BETWEEN_FINAL_READ_AND_INITIAL_FSTAT
+ /* Before the tail function provided `read_pos', there was
+ a race condition described in the URL below. This sleep
+ call made the window big enough to exercise the problem. */
+ sleep (1);
+#endif
+ f->errnum = ok - 1;
+ if (fstat (fd, &stats) < 0)
+ {
+ ok = false;
+ f->errnum = errno;
+ error (0, errno, _("error reading %s"), quote (pretty_name (f)));
+ }
+ else if (!IS_TAILABLE_FILE_TYPE (stats.st_mode))
+ {
+ error (0, 0, _("%s: cannot follow end of this type of file;\
+ giving up on this name"),
+ pretty_name (f));
+ ok = false;
+ f->errnum = -1;
+ f->ignore = true;
+ }
+
+ if (!ok)
+ {
+ close_fd (fd, pretty_name (f));
+ f->fd = -1;
+ }
+ else
+ {
+ /* Note: we must use read_pos here, not stats.st_size,
+ to avoid a race condition described by Ken Raeburn:
+ http://mail.gnu.org/archive/html/bug-textutils/2003-05/msg00007.html */
+ record_open_fd (f, fd, read_pos, &stats, (is_stdin ? -1 : 1));
+ }
+ }
+ else
+ {
+ if (!is_stdin && close (fd))
+ {
+ error (0, errno, _("error reading %s"), quote (pretty_name (f)));
+ ok = false;
+ }
+ }
+ }
+
+ return ok;
+}
+
+/* If obsolete usage is allowed, and the command line arguments are of
+ the obsolete form and the option string is well-formed, set
+ *N_UNITS, the globals COUNT_LINES, FOREVER, and FROM_START, and
+ return true. If the command line arguments are obviously incorrect
+ (e.g., because obsolete usage is not allowed and the arguments are
+ incorrect for non-obsolete usage), report an error and exit.
+ Otherwise, return false and don't modify any parameter or global
+ variable. */
+
+static bool
+parse_obsolete_option (int argc, char * const *argv, uintmax_t *n_units)
+{
+ const char *p;
+ const char *n_string;
+ const char *n_string_end;
+ bool obsolete_usage;
+ int default_count = DEFAULT_N_LINES;
+ bool t_from_start;
+ bool t_count_lines = true;
+ bool t_forever = false;
+
+ /* With the obsolete form, there is one option string and at most
+ one file argument. Watch out for "-" and "--", though. */
+ if (! (argc == 2
+ || (argc == 3 && ! (argv[2][0] == '-' && argv[2][1]))
+ || (3 <= argc && argc <= 4 && STREQ (argv[2], "--"))))
+ return false;
+
+ obsolete_usage = (posix2_version () < 200112);
+ p = argv[1];
+
+ switch (*p++)
+ {
+ default:
+ return false;
+
+ case '+':
+ /* Leading "+" is a file name in the non-obsolete form. */
+ if (!obsolete_usage)
+ return false;
+
+ t_from_start = true;
+ break;
+
+ case '-':
+ /* In the non-obsolete form, "-" is standard input and "-c"
+ requires an option-argument. The obsolete multidigit options
+ are supported as a GNU extension even when conforming to
+ POSIX 1003.1-2001, so don't complain about them. */
+ if (!obsolete_usage && !p[p[0] == 'c'])
+ return false;
+
+ t_from_start = false;
+ break;
+ }
+
+ n_string = p;
+ while (ISDIGIT (*p))
+ p++;
+ n_string_end = p;
+
+ switch (*p)
+ {
+ case 'b': default_count *= 512; /* Fall through. */
+ case 'c': t_count_lines = false; /* Fall through. */
+ case 'l': p++; break;
+ }
+
+ if (*p == 'f')
+ {
+ t_forever = true;
+ ++p;
+ }
+
+ if (*p)
+ return false;
+
+ if (n_string == n_string_end)
+ *n_units = default_count;
+ else if ((xstrtoumax (n_string, NULL, 10, n_units, "b")
+ & ~LONGINT_INVALID_SUFFIX_CHAR)
+ != LONGINT_OK)
+ error (EXIT_FAILURE, 0, _("number in %s is too large"), quote (argv[1]));
+
+ /* Set globals. */
+ from_start = t_from_start;
+ count_lines = t_count_lines;
+ forever = t_forever;
+
+ return true;
+}
+
+static void
+parse_options (int argc, char **argv,
+ uintmax_t *n_units, enum header_mode *header_mode,
+ double *sleep_interval)
+{
+ int c;
+
+ while ((c = getopt_long (argc, argv, "c:n:fFqs:v0123456789",
+ long_options, NULL))
+ != -1)
+ {
+ switch (c)
+ {
+ case 'F':
+ forever = true;
+ follow_mode = Follow_name;
+ reopen_inaccessible_files = true;
+ break;
+
+ case 'c':
+ case 'n':
+ count_lines = (c == 'n');
+ if (*optarg == '+')
+ from_start = true;
+ else if (*optarg == '-')
+ ++optarg;
+
+ {
+ strtol_error s_err;
+ s_err = xstrtoumax (optarg, NULL, 10, n_units, "bkm");
+ if (s_err != LONGINT_OK)
+ {
+ error (EXIT_FAILURE, 0, "%s: %s", optarg,
+ (c == 'n'
+ ? _("invalid number of lines")
+ : _("invalid number of bytes")));
+ }
+ }
+ break;
+
+ case 'f':
+ case LONG_FOLLOW_OPTION:
+ forever = true;
+ if (optarg == NULL)
+ follow_mode = DEFAULT_FOLLOW_MODE;
+ else
+ follow_mode = XARGMATCH ("--follow", optarg,
+ follow_mode_string, follow_mode_map);
+ break;
+
+ case RETRY_OPTION:
+ reopen_inaccessible_files = true;
+ break;
+
+ case MAX_UNCHANGED_STATS_OPTION:
+ /* --max-unchanged-stats=N */
+ if (xstrtoumax (optarg, NULL, 10,
+ &max_n_unchanged_stats_between_opens,
+ "")
+ != LONGINT_OK)
+ {
+ error (EXIT_FAILURE, 0,
+ _("%s: invalid maximum number of unchanged stats between opens"),
+ optarg);
+ }
+ break;
+
+ case PID_OPTION:
+ {
+ strtol_error s_err;
+ unsigned long int tmp_ulong;
+ s_err = xstrtoul (optarg, NULL, 10, &tmp_ulong, "");
+ if (s_err != LONGINT_OK || tmp_ulong > PID_T_MAX)
+ {
+ error (EXIT_FAILURE, 0, _("%s: invalid PID"), optarg);
+ }
+ pid = tmp_ulong;
+ }
+ break;
+
+ case PRESUME_INPUT_PIPE_OPTION:
+ presume_input_pipe = true;
+ break;
+
+ case 'q':
+ *header_mode = never;
+ break;
+
+ case 's':
+ {
+ double s;
+ if (! (xstrtod (optarg, NULL, &s, c_strtod) && 0 <= s))
+ error (EXIT_FAILURE, 0,
+ _("%s: invalid number of seconds"), optarg);
+ *sleep_interval = s;
+ }
+ break;
+
+ case 'v':
+ *header_mode = always;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ error (EXIT_FAILURE, 0,
+ _("option used in invalid context -- %c"), c);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (reopen_inaccessible_files && follow_mode != Follow_name)
+ error (0, 0, _("warning: --retry is useful mainly when following by name"));
+
+ if (pid && !forever)
+ error (0, 0,
+ _("warning: PID ignored; --pid=PID is useful only when following"));
+ else if (pid && kill (pid, 0) != 0 && errno == ENOSYS)
+ {
+ error (0, 0, _("warning: --pid=PID is not supported on this system"));
+ pid = 0;
+ }
+}
+
+int
+main (int argc, char **argv)
+{
+ enum header_mode header_mode = multiple_files;
+ bool ok = true;
+ /* If from_start, the number of items to skip before printing; otherwise,
+ the number of items at the end of the file to print. Although the type
+ is signed, the value is never negative. */
+ uintmax_t n_units = DEFAULT_N_LINES;
+ int n_files;
+ char **file;
+ struct File_spec *F;
+ int i;
+ bool obsolete_option;
+
+ /* The number of seconds to sleep between iterations.
+ During one iteration, every file name or descriptor is checked to
+ see if it has changed. */
+ double sleep_interval = 1.0;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ have_read_stdin = false;
+
+ count_lines = true;
+ forever = from_start = print_headers = false;
+ obsolete_option = parse_obsolete_option (argc, argv, &n_units);
+ argc -= obsolete_option;
+ argv += obsolete_option;
+ parse_options (argc, argv, &n_units, &header_mode, &sleep_interval);
+
+ /* To start printing with item N_UNITS from the start of the file, skip
+ N_UNITS - 1 items. `tail -n +0' is actually meaningless, but for Unix
+ compatibility it's treated the same as `tail -n +1'. */
+ if (from_start)
+ {
+ if (n_units)
+ --n_units;
+ }
+
+ if (optind < argc)
+ {
+ n_files = argc - optind;
+ file = argv + optind;
+ }
+ else
+ {
+ static char *dummy_stdin = "-";
+ n_files = 1;
+ file = &dummy_stdin;
+
+ /* POSIX says that -f is ignored if no file operand is specified
+ and standard input is a pipe. However, the GNU coding
+ standards say that program behavior should not depend on
+ device type, because device independence is an important
+ principle of the system's design.
+
+ Follow the POSIX requirement only if POSIXLY_CORRECT is set. */
+
+ if (forever && getenv ("POSIXLY_CORRECT"))
+ {
+ struct stat st;
+ int is_a_fifo_or_pipe =
+ (fstat (STDIN_FILENO, &st) != 0 ? -1
+ : S_ISFIFO (st.st_mode) ? 1
+ : HAVE_FIFO_PIPES == 1 ? 0
+ : isapipe (STDIN_FILENO));
+ if (is_a_fifo_or_pipe < 0)
+ error (EXIT_FAILURE, errno, _("standard input"));
+ if (is_a_fifo_or_pipe)
+ forever = false;
+ }
+ }
+
+ {
+ bool found_hyphen = false;
+
+ for (i = 0; i < n_files; i++)
+ if (STREQ (file[i], "-"))
+ found_hyphen = true;
+
+ /* When following by name, there must be a name. */
+ if (found_hyphen && follow_mode == Follow_name)
+ error (EXIT_FAILURE, 0, _("cannot follow %s by name"), quote ("-"));
+
+ /* When following forever, warn if any file is `-'.
+ This is only a warning, since tail's output (before a failing seek,
+ and that from any non-stdin files) might still be useful. */
+ if (forever && found_hyphen && isatty (STDIN_FILENO))
+ error (0, 0, _("warning: following standard input"
+ " indefinitely is ineffective"));
+ }
+
+ F = xnmalloc (n_files, sizeof *F);
+ for (i = 0; i < n_files; i++)
+ F[i].name = file[i];
+
+ if (header_mode == always
+ || (header_mode == multiple_files && n_files > 1))
+ print_headers = true;
+
+ if (O_BINARY && ! isatty (STDOUT_FILENO))
+ freopen (NULL, "wb", stdout);
+
+ for (i = 0; i < n_files; i++)
+ ok &= tail_file (&F[i], n_units);
+
+ if (forever)
+ tail_forever (F, n_files, sleep_interval);
+
+ if (have_read_stdin && close (STDIN_FILENO) < 0)
+ error (EXIT_FAILURE, errno, "-");
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/tee.c b/src/tee.c
new file mode 100644
index 0000000..d21edbc
--- /dev/null
+++ b/src/tee.c
@@ -0,0 +1,220 @@
+/* tee - read from standard input and write to standard output and files.
+ Copyright (C) 85,1990-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Mike Parker, Richard M. Stallman, and David MacKenzie */
+
+#include <config.h>
+#include <sys/types.h>
+#include <signal.h>
+#include <getopt.h>
+
+#include "system.h"
+#include "error.h"
+#include "stdio--.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "tee"
+
+#define AUTHORS "Mike Parker", "Richard M. Stallman", "David MacKenzie"
+
+static bool tee_files (int nfiles, const char **files);
+
+/* If true, append to output files rather than truncating them. */
+static bool append;
+
+/* If true, ignore interrupts. */
+static bool ignore_interrupts;
+
+/* The name that this program was run with. */
+char *program_name;
+
+static struct option const long_options[] =
+{
+ {"append", no_argument, NULL, 'a'},
+ {"ignore-interrupts", no_argument, NULL, 'i'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]... [FILE]...\n"), program_name);
+ fputs (_("\
+Copy standard input to each FILE, and also to standard output.\n\
+\n\
+ -a, --append append to the given FILEs, do not overwrite\n\
+ -i, --ignore-interrupts ignore interrupt signals\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+If a FILE is -, copy again to standard output.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ bool ok;
+ int optc;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ append = false;
+ ignore_interrupts = false;
+
+ while ((optc = getopt_long (argc, argv, "ai", long_options, NULL)) != -1)
+ {
+ switch (optc)
+ {
+ case 'a':
+ append = true;
+ break;
+
+ case 'i':
+ ignore_interrupts = true;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (ignore_interrupts)
+ signal (SIGINT, SIG_IGN);
+
+ /* Do *not* warn if tee is given no file arguments.
+ POSIX requires that it work when given no arguments. */
+
+ ok = tee_files (argc - optind, (const char **) &argv[optind]);
+ if (close (STDIN_FILENO) != 0)
+ error (EXIT_FAILURE, errno, _("standard input"));
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+
+/* Copy the standard input into each of the NFILES files in FILES
+ and into the standard output.
+ Return true if successful. */
+
+static bool
+tee_files (int nfiles, const char **files)
+{
+ FILE **descriptors;
+ char buffer[BUFSIZ];
+ ssize_t bytes_read;
+ int i;
+ bool ok = true;
+ char const *mode_string =
+ (O_BINARY
+ ? (append ? "ab" : "wb")
+ : (append ? "a" : "w"));
+
+ descriptors = xnmalloc (nfiles + 1, sizeof *descriptors);
+
+ /* Move all the names `up' one in the argv array to make room for
+ the entry for standard output. This writes into argv[argc]. */
+ for (i = nfiles; i >= 1; i--)
+ files[i] = files[i - 1];
+
+ if (O_BINARY && ! isatty (STDIN_FILENO))
+ freopen (NULL, "rb", stdin);
+ if (O_BINARY && ! isatty (STDOUT_FILENO))
+ freopen (NULL, "wb", stdout);
+
+ /* In the array of NFILES + 1 descriptors, make
+ the first one correspond to standard output. */
+ descriptors[0] = stdout;
+ files[0] = _("standard output");
+ setvbuf (stdout, NULL, _IONBF, 0);
+
+ for (i = 1; i <= nfiles; i++)
+ {
+ descriptors[i] = (STREQ (files[i], "-")
+ ? stdout
+ : fopen (files[i], mode_string));
+ if (descriptors[i] == NULL)
+ {
+ error (0, errno, "%s", files[i]);
+ ok = false;
+ }
+ else
+ setvbuf (descriptors[i], NULL, _IONBF, 0);
+ }
+
+ while (1)
+ {
+ bytes_read = read (0, buffer, sizeof buffer);
+#ifdef EINTR
+ if (bytes_read < 0 && errno == EINTR)
+ continue;
+#endif
+ if (bytes_read <= 0)
+ break;
+
+ /* Write to all NFILES + 1 descriptors.
+ Standard output is the first one. */
+ for (i = 0; i <= nfiles; i++)
+ if (descriptors[i]
+ && fwrite (buffer, 1, bytes_read, descriptors[i]) != bytes_read)
+ {
+ error (0, errno, "%s", files[i]);
+ descriptors[i] = NULL;
+ ok = false;
+ }
+ }
+
+ if (bytes_read == -1)
+ {
+ error (0, errno, _("read error"));
+ ok = false;
+ }
+
+ /* Close the files, but not standard output. */
+ for (i = 1; i <= nfiles; i++)
+ if (!STREQ (files[i], "-")
+ && descriptors[i] && fclose (descriptors[i]) != 0)
+ {
+ error (0, errno, "%s", files[i]);
+ ok = false;
+ }
+
+ free (descriptors);
+
+ return ok;
+}
diff --git a/src/test.c b/src/test.c
new file mode 100644
index 0000000..b25436b
--- /dev/null
+++ b/src/test.c
@@ -0,0 +1,849 @@
+/* GNU test program (ksb and mjb) */
+
+/* Modified to run with the GNU shell by bfox. */
+
+/* Copyright (C) 1987-2005 Free Software Foundation, Inc.
+
+ This file is part of GNU Bash, the Bourne Again SHell.
+
+ Bash 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.
+
+ Bash is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Define TEST_STANDALONE to get the /bin/test version. Otherwise, you get
+ the shell builtin version. */
+
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+#define TEST_STANDALONE 1
+
+#ifndef LBRACKET
+# define LBRACKET 0
+#endif
+
+/* The official name of this program (e.g., no `g' prefix). */
+#if LBRACKET
+# define PROGRAM_NAME "["
+#else
+# define PROGRAM_NAME "test"
+#endif
+
+#include "system.h"
+#include "error.h"
+#include "euidaccess.h"
+#include "inttostr.h"
+#include "quote.h"
+#include "stat-time.h"
+#include "strnumcmp.h"
+
+#if HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+
+char *program_name;
+
+/* Exit status for syntax errors, etc. */
+enum { TEST_TRUE, TEST_FALSE, TEST_FAILURE };
+
+#if defined TEST_STANDALONE
+# define test_exit(val) exit (val)
+#else
+ static jmp_buf test_exit_buf;
+ static int test_error_return = 0;
+# define test_exit(val) test_error_return = val, longjmp (test_exit_buf, 1)
+#endif /* !TEST_STANDALONE */
+
+static int pos; /* The offset of the current argument in ARGV. */
+static int argc; /* The number of arguments present in ARGV. */
+static char **argv; /* The argument list. */
+
+static bool test_unop (char const *s);
+static bool unary_operator (void);
+static bool binary_operator (bool);
+static bool two_arguments (void);
+static bool three_arguments (void);
+static bool posixtest (int);
+
+static bool expr (void);
+static bool term (void);
+static bool and (void);
+static bool or (void);
+
+static void test_syntax_error (char const *format, char const *arg)
+ ATTRIBUTE_NORETURN;
+static void beyond (void) ATTRIBUTE_NORETURN;
+
+static void
+test_syntax_error (char const *format, char const *arg)
+{
+ fprintf (stderr, "%s: ", argv[0]);
+ fprintf (stderr, format, arg);
+ fputc ('\n', stderr);
+ fflush (stderr);
+ test_exit (TEST_FAILURE);
+}
+
+/* Increment our position in the argument list. Check that we're not
+ past the end of the argument list. This check is supressed if the
+ argument is false. */
+
+static inline void
+advance (bool f)
+{
+ ++pos;
+
+ if (f && pos >= argc)
+ beyond ();
+}
+
+static inline void
+unary_advance (void)
+{
+ advance (true);
+ ++pos;
+}
+
+/*
+ * beyond - call when we're beyond the end of the argument list (an
+ * error condition)
+ */
+static void
+beyond (void)
+{
+ test_syntax_error (_("missing argument after %s"), quote (argv[argc - 1]));
+}
+
+/* If the characters pointed to by STRING constitute a valid number,
+ return a pointer to the start of the number, skipping any blanks or
+ leading '+'. Otherwise, report an error and exit. */
+static char const *
+find_int (char const *string)
+{
+ char const *p;
+ char const *number_start;
+
+ for (p = string; isblank (to_uchar (*p)); p++)
+ continue;
+
+ if (*p == '+')
+ {
+ p++;
+ number_start = p;
+ }
+ else
+ {
+ number_start = p;
+ p += (*p == '-');
+ }
+
+ if (ISDIGIT (*p++))
+ {
+ while (ISDIGIT (*p))
+ p++;
+ while (isblank (to_uchar (*p)))
+ p++;
+ if (!*p)
+ return number_start;
+ }
+
+ test_syntax_error (_("invalid integer %s"), quote (string));
+}
+
+/* Find the modification time of FILE, and stuff it into *MTIME.
+ Return true if successful. */
+static bool
+get_mtime (char const *filename, struct timespec *mtime)
+{
+ struct stat finfo;
+ bool ok = (stat (filename, &finfo) == 0);
+#ifdef lint
+ static struct timespec const zero;
+ *mtime = zero;
+#endif
+ if (ok)
+ *mtime = get_stat_mtime (&finfo);
+ return ok;
+}
+
+/* Return true if S is one of the test command's binary operators. */
+static bool
+binop (char const *s)
+{
+ return ((STREQ (s, "=")) || (STREQ (s, "!=")) || (STREQ (s, "-nt")) ||
+ (STREQ (s, "-ot")) || (STREQ (s, "-ef")) || (STREQ (s, "-eq")) ||
+ (STREQ (s, "-ne")) || (STREQ (s, "-lt")) || (STREQ (s, "-le")) ||
+ (STREQ (s, "-gt")) || (STREQ (s, "-ge")));
+}
+
+/*
+ * term - parse a term and return 1 or 0 depending on whether the term
+ * evaluates to true or false, respectively.
+ *
+ * term ::=
+ * '-'('h'|'d'|'f'|'r'|'s'|'w'|'c'|'b'|'p'|'u'|'g'|'k') filename
+ * '-'('L'|'x') filename
+ * '-t' int
+ * '-'('z'|'n') string
+ * string
+ * string ('!='|'=') string
+ * <int> '-'(eq|ne|le|lt|ge|gt) <int>
+ * file '-'(nt|ot|ef) file
+ * '(' <expr> ')'
+ * int ::=
+ * '-l' string
+ * positive and negative integers
+ */
+static bool
+term (void)
+{
+ bool value;
+ bool negated = false;
+
+ /* Deal with leading `not's. */
+ while (pos < argc && argv[pos][0] == '!' && argv[pos][1] == '\0')
+ {
+ advance (true);
+ negated = !negated;
+ }
+
+ if (pos >= argc)
+ beyond ();
+
+ /* A paren-bracketed argument. */
+ if (argv[pos][0] == '(' && argv[pos][1] == '\0')
+ {
+ int nargs;
+
+ advance (true);
+
+ for (nargs = 1;
+ pos + nargs < argc && ! STREQ (argv[pos + nargs], ")");
+ nargs++)
+ if (nargs == 4)
+ {
+ nargs = argc - pos;
+ break;
+ }
+
+ value = posixtest (nargs);
+ if (argv[pos] == 0)
+ test_syntax_error (_("')' expected"), NULL);
+ else
+ if (argv[pos][0] != ')' || argv[pos][1])
+ test_syntax_error (_("')' expected, found %s"), argv[pos]);
+ advance (false);
+ }
+
+ /* Are there enough arguments left that this could be dyadic? */
+ else if (4 <= argc - pos && STREQ (argv[pos], "-l") && binop (argv[pos + 2]))
+ value = binary_operator (true);
+ else if (3 <= argc - pos && binop (argv[pos + 1]))
+ value = binary_operator (false);
+
+ /* It might be a switch type argument. */
+ else if (argv[pos][0] == '-' && argv[pos][1] && argv[pos][2] == '\0')
+ {
+ if (test_unop (argv[pos]))
+ value = unary_operator ();
+ else
+ test_syntax_error (_("%s: unary operator expected"), argv[pos]);
+ }
+ else
+ {
+ value = (argv[pos][0] != '\0');
+ advance (false);
+ }
+
+ return negated ^ value;
+}
+
+static bool
+binary_operator (bool l_is_l)
+{
+ int op;
+ struct stat stat_buf, stat_spare;
+ /* Is the right integer expression of the form '-l string'? */
+ bool r_is_l;
+
+ if (l_is_l)
+ advance (false);
+ op = pos + 1;
+
+ if ((op < argc - 2) && STREQ (argv[op + 1], "-l"))
+ {
+ r_is_l = true;
+ advance (false);
+ }
+ else
+ r_is_l = false;
+
+ if (argv[op][0] == '-')
+ {
+ /* check for eq, nt, and stuff */
+ if ((((argv[op][1] == 'l' || argv[op][1] == 'g')
+ && (argv[op][2] == 'e' || argv[op][2] == 't'))
+ || (argv[op][1] == 'e' && argv[op][2] == 'q')
+ || (argv[op][1] == 'n' && argv[op][2] == 'e'))
+ && !argv[op][3])
+ {
+ char lbuf[INT_BUFSIZE_BOUND (uintmax_t)];
+ char rbuf[INT_BUFSIZE_BOUND (uintmax_t)];
+ char const *l = (l_is_l
+ ? umaxtostr (strlen (argv[op - 1]), lbuf)
+ : find_int (argv[op - 1]));
+ char const *r = (r_is_l
+ ? umaxtostr (strlen (argv[op + 2]), rbuf)
+ : find_int (argv[op + 1]));
+ int cmp = strintcmp (l, r);
+ bool xe_operator = (argv[op][2] == 'e');
+ pos += 3;
+ return (argv[op][1] == 'l' ? cmp < xe_operator
+ : argv[op][1] == 'g' ? cmp > - xe_operator
+ : (cmp != 0) == xe_operator);
+ }
+
+ switch (argv[op][1])
+ {
+ default:
+ break;
+
+ case 'n':
+ if (argv[op][2] == 't' && !argv[op][3])
+ {
+ /* nt - newer than */
+ struct timespec lt, rt;
+ bool le, re;
+ pos += 3;
+ if (l_is_l | r_is_l)
+ test_syntax_error (_("-nt does not accept -l"), NULL);
+ le = get_mtime (argv[op - 1], &lt);
+ re = get_mtime (argv[op + 1], &rt);
+ return le && (!re || timespec_cmp (lt, rt) > 0);
+ }
+ break;
+
+ case 'e':
+ if (argv[op][2] == 'f' && !argv[op][3])
+ {
+ /* ef - hard link? */
+ pos += 3;
+ if (l_is_l | r_is_l)
+ test_syntax_error (_("-ef does not accept -l"), NULL);
+ return (stat (argv[op - 1], &stat_buf) == 0
+ && stat (argv[op + 1], &stat_spare) == 0
+ && stat_buf.st_dev == stat_spare.st_dev
+ && stat_buf.st_ino == stat_spare.st_ino);
+ }
+ break;
+
+ case 'o':
+ if ('t' == argv[op][2] && '\000' == argv[op][3])
+ {
+ /* ot - older than */
+ struct timespec lt, rt;
+ bool le, re;
+ pos += 3;
+ if (l_is_l | r_is_l)
+ test_syntax_error (_("-ot does not accept -l"), NULL);
+ le = get_mtime (argv[op - 1], &lt);
+ re = get_mtime (argv[op + 1], &rt);
+ return re && (!le || timespec_cmp (lt, rt) < 0);
+ }
+ break;
+ }
+
+ /* FIXME: is this dead code? */
+ test_syntax_error (_("unknown binary operator"), argv[op]);
+ }
+
+ if (argv[op][0] == '=' && !argv[op][1])
+ {
+ bool value = STREQ (argv[pos], argv[pos + 2]);
+ pos += 3;
+ return value;
+ }
+
+ if (STREQ (argv[op], "!="))
+ {
+ bool value = !STREQ (argv[pos], argv[pos + 2]);
+ pos += 3;
+ return value;
+ }
+
+ /* Not reached. */
+ abort ();
+}
+
+static bool
+unary_operator (void)
+{
+ struct stat stat_buf;
+
+ switch (argv[pos][1])
+ {
+ default:
+ return false;
+
+ /* All of the following unary operators use unary_advance (), which
+ checks to make sure that there is an argument, and then advances
+ pos right past it. This means that pos - 1 is the location of the
+ argument. */
+
+ case 'a': /* file exists in the file system? */
+ case 'e':
+ unary_advance ();
+ return stat (argv[pos - 1], &stat_buf) == 0;
+
+ case 'r': /* file is readable? */
+ unary_advance ();
+ return euidaccess (argv[pos - 1], R_OK) == 0;
+
+ case 'w': /* File is writable? */
+ unary_advance ();
+ return euidaccess (argv[pos - 1], W_OK) == 0;
+
+ case 'x': /* File is executable? */
+ unary_advance ();
+ return euidaccess (argv[pos - 1], X_OK) == 0;
+
+ case 'O': /* File is owned by you? */
+ unary_advance ();
+ return (stat (argv[pos - 1], &stat_buf) == 0
+ && (geteuid () == stat_buf.st_uid));
+
+ case 'G': /* File is owned by your group? */
+ unary_advance ();
+ return (stat (argv[pos - 1], &stat_buf) == 0
+ && (getegid () == stat_buf.st_gid));
+
+ case 'f': /* File is a file? */
+ unary_advance ();
+ /* Under POSIX, -f is true if the given file exists
+ and is a regular file. */
+ return (stat (argv[pos - 1], &stat_buf) == 0
+ && S_ISREG (stat_buf.st_mode));
+
+ case 'd': /* File is a directory? */
+ unary_advance ();
+ return (stat (argv[pos - 1], &stat_buf) == 0
+ && S_ISDIR (stat_buf.st_mode));
+
+ case 's': /* File has something in it? */
+ unary_advance ();
+ return (stat (argv[pos - 1], &stat_buf) == 0
+ && 0 < stat_buf.st_size);
+
+ case 'S': /* File is a socket? */
+ unary_advance ();
+ return (stat (argv[pos - 1], &stat_buf) == 0
+ && S_ISSOCK (stat_buf.st_mode));
+
+ case 'c': /* File is character special? */
+ unary_advance ();
+ return (stat (argv[pos - 1], &stat_buf) == 0
+ && S_ISCHR (stat_buf.st_mode));
+
+ case 'b': /* File is block special? */
+ unary_advance ();
+ return (stat (argv[pos - 1], &stat_buf) == 0
+ && S_ISBLK (stat_buf.st_mode));
+
+ case 'p': /* File is a named pipe? */
+ unary_advance ();
+ return (stat (argv[pos - 1], &stat_buf) == 0
+ && S_ISFIFO (stat_buf.st_mode));
+
+ case 'L': /* Same as -h */
+ /*FALLTHROUGH*/
+
+ case 'h': /* File is a symbolic link? */
+ unary_advance ();
+ return (lstat (argv[pos - 1], &stat_buf) == 0
+ && S_ISLNK (stat_buf.st_mode));
+
+ case 'u': /* File is setuid? */
+ unary_advance ();
+ return (stat (argv[pos - 1], &stat_buf) == 0
+ && (stat_buf.st_mode & S_ISUID));
+
+ case 'g': /* File is setgid? */
+ unary_advance ();
+ return (stat (argv[pos - 1], &stat_buf) == 0
+ && (stat_buf.st_mode & S_ISGID));
+
+ case 'k': /* File has sticky bit set? */
+ unary_advance ();
+ return (stat (argv[pos - 1], &stat_buf) == 0
+ && (stat_buf.st_mode & S_ISVTX));
+
+ case 't': /* File (fd) is a terminal? */
+ {
+ long int fd;
+ char const *arg;
+ unary_advance ();
+ arg = find_int (argv[pos - 1]);
+ errno = 0;
+ fd = strtol (arg, NULL, 10);
+ return (errno != ERANGE && 0 <= fd && fd <= INT_MAX && isatty (fd));
+ }
+
+ case 'n': /* True if arg has some length. */
+ unary_advance ();
+ return argv[pos - 1][0] != 0;
+
+ case 'z': /* True if arg has no length. */
+ unary_advance ();
+ return argv[pos - 1][0] == '\0';
+ }
+}
+
+/*
+ * and:
+ * term
+ * term '-a' and
+ */
+static bool
+and (void)
+{
+ bool value = true;
+
+ for (;;)
+ {
+ value &= term ();
+ if (! (pos < argc && STREQ (argv[pos], "-a")))
+ return value;
+ advance (false);
+ }
+}
+
+/*
+ * or:
+ * and
+ * and '-o' or
+ */
+static bool
+or (void)
+{
+ bool value = false;
+
+ for (;;)
+ {
+ value |= and ();
+ if (! (pos < argc && STREQ (argv[pos], "-o")))
+ return value;
+ advance (false);
+ }
+}
+
+/*
+ * expr:
+ * or
+ */
+static bool
+expr (void)
+{
+ if (pos >= argc)
+ beyond ();
+
+ return or (); /* Same with this. */
+}
+
+/* Return true if OP is one of the test command's unary operators. */
+static bool
+test_unop (char const *op)
+{
+ if (op[0] != '-')
+ return false;
+
+ switch (op[1])
+ {
+ case 'a': case 'b': case 'c': case 'd': case 'e':
+ case 'f': case 'g': case 'h': case 'k': case 'n':
+ case 'o': case 'p': case 'r': case 's': case 't':
+ case 'u': case 'w': case 'x': case 'z':
+ case 'G': case 'L': case 'O': case 'S': case 'N':
+ return true;
+ }
+
+ return false;
+}
+
+static bool
+one_argument (void)
+{
+ return argv[pos++][0] != '\0';
+}
+
+static bool
+two_arguments (void)
+{
+ bool value;
+
+ if (STREQ (argv[pos], "!"))
+ {
+ advance (false);
+ value = ! one_argument ();
+ }
+ else if (argv[pos][0] == '-'
+ && argv[pos][1] != '\0'
+ && argv[pos][2] == '\0')
+ {
+ if (test_unop (argv[pos]))
+ value = unary_operator ();
+ else
+ test_syntax_error (_("%s: unary operator expected"), argv[pos]);
+ }
+ else
+ beyond ();
+ return (value);
+}
+
+static bool
+three_arguments (void)
+{
+ bool value;
+
+ if (binop (argv[pos + 1]))
+ value = binary_operator (false);
+ else if (STREQ (argv[pos], "!"))
+ {
+ advance (true);
+ value = !two_arguments ();
+ }
+ else if (STREQ (argv[pos], "(") && STREQ (argv[pos + 2], ")"))
+ {
+ advance (false);
+ value = one_argument ();
+ advance (false);
+ }
+ else if (STREQ (argv[pos + 1], "-a") || STREQ (argv[pos + 1], "-o"))
+ value = expr ();
+ else
+ test_syntax_error (_("%s: binary operator expected"), argv[pos+1]);
+ return (value);
+}
+
+/* This is an implementation of a Posix.2 proposal by David Korn. */
+static bool
+posixtest (int nargs)
+{
+ bool value;
+
+ switch (nargs)
+ {
+ case 1:
+ value = one_argument ();
+ break;
+
+ case 2:
+ value = two_arguments ();
+ break;
+
+ case 3:
+ value = three_arguments ();
+ break;
+
+ case 4:
+ if (STREQ (argv[pos], "!"))
+ {
+ advance (true);
+ value = !three_arguments ();
+ break;
+ }
+ if (STREQ (argv[pos], "(") && STREQ (argv[pos + 3], ")"))
+ {
+ advance (false);
+ value = two_arguments ();
+ advance (false);
+ break;
+ }
+ /* FALLTHROUGH */
+ case 5:
+ default:
+ if (nargs <= 0)
+ abort ();
+ value = expr ();
+ }
+
+ return (value);
+}
+
+#if defined TEST_STANDALONE
+# include "long-options.h"
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ fputs (_("\
+Usage: test EXPRESSION\n\
+ or: test\n\
+ or: [ EXPRESSION ]\n\
+ or: [ ]\n\
+ or: [ OPTION\n\
+"), stdout);
+ fputs (_("\
+Exit with the status determined by EXPRESSION.\n\
+\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+An omitted EXPRESSION defaults to false. Otherwise,\n\
+EXPRESSION is true or false and sets exit status. It is one of:\n\
+"), stdout);
+ fputs (_("\
+\n\
+ ( EXPRESSION ) EXPRESSION is true\n\
+ ! EXPRESSION EXPRESSION is false\n\
+ EXPRESSION1 -a EXPRESSION2 both EXPRESSION1 and EXPRESSION2 are true\n\
+ EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true\n\
+"), stdout);
+ fputs (_("\
+\n\
+ -n STRING the length of STRING is nonzero\n\
+ STRING equivalent to -n STRING\n\
+ -z STRING the length of STRING is zero\n\
+ STRING1 = STRING2 the strings are equal\n\
+ STRING1 != STRING2 the strings are not equal\n\
+"), stdout);
+ fputs (_("\
+\n\
+ INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2\n\
+ INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2\n\
+ INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2\n\
+ INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2\n\
+ INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2\n\
+ INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2\n\
+"), stdout);
+ fputs (_("\
+\n\
+ FILE1 -ef FILE2 FILE1 and FILE2 have the same device and inode numbers\n\
+ FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2\n\
+ FILE1 -ot FILE2 FILE1 is older than FILE2\n\
+"), stdout);
+ fputs (_("\
+\n\
+ -b FILE FILE exists and is block special\n\
+ -c FILE FILE exists and is character special\n\
+ -d FILE FILE exists and is a directory\n\
+ -e FILE FILE exists\n\
+"), stdout);
+ fputs (_("\
+ -f FILE FILE exists and is a regular file\n\
+ -g FILE FILE exists and is set-group-ID\n\
+ -G FILE FILE exists and is owned by the effective group ID\n\
+ -h FILE FILE exists and is a symbolic link (same as -L)\n\
+ -k FILE FILE exists and has its sticky bit set\n\
+"), stdout);
+ fputs (_("\
+ -L FILE FILE exists and is a symbolic link (same as -h)\n\
+ -O FILE FILE exists and is owned by the effective user ID\n\
+ -p FILE FILE exists and is a named pipe\n\
+ -r FILE FILE exists and read permission is granted\n\
+ -s FILE FILE exists and has a size greater than zero\n\
+"), stdout);
+ fputs (_("\
+ -S FILE FILE exists and is a socket\n\
+ -t FD file descriptor FD is opened on a terminal\n\
+ -u FILE FILE exists and its set-user-ID bit is set\n\
+ -w FILE FILE exists and write permission is granted\n\
+ -x FILE FILE exists and execute (or search) permission is granted\n\
+"), stdout);
+ fputs (_("\
+\n\
+Except for -h and -L, all FILE-related tests dereference symbolic links.\n\
+Beware that parentheses need to be escaped (e.g., by backslashes) for shells.\n\
+INTEGER may also be -l STRING, which evaluates to the length of STRING.\n\
+"), stdout);
+ printf (USAGE_BUILTIN_WARNING, _("test and/or ["));
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+#endif /* TEST_STANDALONE */
+
+#if !defined TEST_STANDALONE
+# define main test_command
+#endif
+
+#define AUTHORS "Kevin Braunsdorf", "Matthew Bradburn"
+
+/*
+ * [:
+ * '[' expr ']'
+ * test:
+ * test expr
+ */
+int
+main (int margc, char **margv)
+{
+ bool value;
+
+#if !defined TEST_STANDALONE
+ int code;
+
+ code = setjmp (test_exit_buf);
+
+ if (code)
+ return (test_error_return);
+#else /* TEST_STANDALONE */
+ initialize_main (&margc, &margv);
+ program_name = margv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ initialize_exit_failure (TEST_FAILURE);
+ atexit (close_stdout);
+#endif /* TEST_STANDALONE */
+
+ argv = margv;
+
+ if (LBRACKET)
+ {
+ /* Recognize --help or --version, but only when invoked in the
+ "[" form, and when the last argument is not "]". POSIX
+ allows "[ --help" and "[ --version" to have the usual GNU
+ behavior, but it requires "test --help" and "test --version"
+ to exit silently with status 0. */
+ if (margc < 2 || !STREQ (margv[margc - 1], "]"))
+ {
+ parse_long_options (margc, margv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ test_syntax_error (_("missing `]'"), NULL);
+ }
+
+ --margc;
+ }
+
+ argc = margc;
+ pos = 1;
+
+ if (pos >= argc)
+ test_exit (TEST_FALSE);
+
+ value = posixtest (argc - 1);
+
+ if (pos != argc)
+ test_syntax_error (_("extra argument %s"), quote (argv[pos]));
+
+ test_exit (value ? TEST_TRUE : TEST_FALSE);
+}
diff --git a/src/touch.c b/src/touch.c
new file mode 100644
index 0000000..a79c26d
--- /dev/null
+++ b/src/touch.c
@@ -0,0 +1,420 @@
+/* touch -- change modification and access times of files
+ Copyright (C) 87, 1989-1991, 1995-2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie,
+ and Randy Smith. */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "argmatch.h"
+#include "error.h"
+#include "fd-reopen.h"
+#include "getdate.h"
+#include "posixtm.h"
+#include "posixver.h"
+#include "quote.h"
+#include "safe-read.h"
+#include "stat-time.h"
+#include "utimens.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "touch"
+
+#define AUTHORS \
+"Paul Rubin", "Arnold Robbins, Jim Kingdon, David MacKenzie", "Randy Smith"
+
+/* Bitmasks for `change_times'. */
+#define CH_ATIME 1
+#define CH_MTIME 2
+
+/* The name by which this program was run. */
+char *program_name;
+
+/* Which timestamps to change. */
+static int change_times;
+
+/* (-c) If true, don't create if not already there. */
+static bool no_create;
+
+/* (-r) If true, use times from a reference file. */
+static bool use_ref;
+
+/* If true, the only thing we have to do is change both the
+ modification and access time to the current time, so we don't
+ have to own the file, just be able to read and write it.
+ On some systems, we can do this if we own the file, even though
+ we have neither read nor write access to it. */
+static bool amtime_now;
+
+/* New access and modification times to use when setting time. */
+static struct timespec newtime[2];
+
+/* File to use for -r. */
+static char *ref_file;
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ TIME_OPTION = CHAR_MAX + 1
+};
+
+static struct option const longopts[] =
+{
+ {"time", required_argument, NULL, TIME_OPTION},
+ {"no-create", no_argument, NULL, 'c'},
+ {"date", required_argument, NULL, 'd'},
+ {"file", required_argument, NULL, 'r'}, /* FIXME: remove --file in 2006 */
+ {"reference", required_argument, NULL, 'r'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+/* Valid arguments to the `--time' option. */
+static char const* const time_args[] =
+{
+ "atime", "access", "use", "mtime", "modify", NULL
+};
+
+/* The bits in `change_times' that those arguments set. */
+static int const time_masks[] =
+{
+ CH_ATIME, CH_ATIME, CH_ATIME, CH_MTIME, CH_MTIME
+};
+
+/* Store into *RESULT the result of interpreting FLEX_DATE as a date,
+ relative to NOW. If NOW is null, use the current time. */
+
+static void
+get_reldate (struct timespec *result,
+ char const *flex_date, struct timespec const *now)
+{
+ if (! get_date (result, flex_date, now))
+ error (EXIT_FAILURE, 0, _("invalid date format %s"), quote (flex_date));
+}
+
+/* Update the time of file FILE according to the options given.
+ Return true if successful. */
+
+static bool
+touch (const char *file)
+{
+ bool ok;
+ struct stat sbuf;
+ int fd = -1;
+ int open_errno = 0;
+ struct timespec timespec[2];
+ struct timespec const *t;
+
+ if (STREQ (file, "-"))
+ fd = STDOUT_FILENO;
+ else if (! no_create)
+ {
+ /* Try to open FILE, creating it if necessary. */
+ fd = fd_reopen (STDIN_FILENO, file,
+ O_WRONLY | O_CREAT | O_NONBLOCK | O_NOCTTY,
+ S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
+
+ /* Don't save a copy of errno if it's EISDIR, since that would lead
+ touch to give a bogus diagnostic for e.g., `touch /' (assuming
+ we don't own / or have write access to it). On Solaris 5.6,
+ and probably other systems, it is EINVAL. On SunOS4, it's EPERM. */
+ if (fd == -1 && errno != EISDIR && errno != EINVAL && errno != EPERM)
+ open_errno = errno;
+ }
+
+ if (change_times != (CH_ATIME | CH_MTIME))
+ {
+ /* We're setting only one of the time values. stat the target to get
+ the other one. If we have the file descriptor already, use fstat.
+ Otherwise, either we're in no-create mode (and hence didn't call open)
+ or FILE is inaccessible or a directory, so we have to use stat. */
+ if (fd != -1 ? fstat (fd, &sbuf) : stat (file, &sbuf))
+ {
+ if (open_errno)
+ error (0, open_errno, _("creating %s"), quote (file));
+ else
+ {
+ if (no_create && (errno == ENOENT || errno == EBADF))
+ return true;
+ error (0, errno, _("failed to get attributes of %s"),
+ quote (file));
+ }
+ if (fd == STDIN_FILENO)
+ close (fd);
+ return false;
+ }
+ }
+
+ if (amtime_now)
+ {
+ /* Pass NULL to futimens so it will not fail if we have
+ write access to the file, but don't own it. */
+ t = NULL;
+ }
+ else
+ {
+ timespec[0] = (change_times & CH_ATIME
+ ? newtime[0]
+ : get_stat_atime (&sbuf));
+ timespec[1] = (change_times & CH_MTIME
+ ? newtime[1]
+ : get_stat_mtime (&sbuf));
+ t = timespec;
+ }
+
+ ok = (futimens (fd, (fd == STDOUT_FILENO ? NULL : file), t) == 0);
+
+ if (fd == STDIN_FILENO)
+ {
+ if (close (STDIN_FILENO) != 0)
+ {
+ error (0, errno, _("closing %s"), quote (file));
+ return false;
+ }
+ }
+ else if (fd == STDOUT_FILENO)
+ {
+ /* Do not diagnose "touch -c - >&-". */
+ if (!ok && errno == EBADF && no_create
+ && change_times == (CH_ATIME | CH_MTIME))
+ return true;
+ }
+
+ if (!ok)
+ {
+ if (open_errno)
+ {
+ /* The wording of this diagnostic should cover at least two cases:
+ - the file does not exist, but the parent directory is unwritable
+ - the file exists, but it isn't writable
+ I think it's not worth trying to distinguish them. */
+ error (0, open_errno, _("cannot touch %s"), quote (file));
+ }
+ else
+ {
+ if (no_create && errno == ENOENT)
+ return true;
+ error (0, errno, _("setting times of %s"), quote (file));
+ }
+ return false;
+ }
+
+ return true;
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]... FILE...\n"), program_name);
+ fputs (_("\
+Update the access and modification times of each FILE to the current time.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -a change only the access time\n\
+ -c, --no-create do not create any files\n\
+ -d, --date=STRING parse STRING and use it instead of current time\n\
+ -f (ignored)\n\
+ -m change only the modification time\n\
+"), stdout);
+ fputs (_("\
+ -r, --reference=FILE use this file's times instead of current time\n\
+ -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time\n\
+ --time=WORD change the specified time:\n\
+ WORD is access, atime, or use: equivalent to -a\n\
+ WORD is modify or mtime: equivalent to -m\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+Note that the -d and -t options accept different time-date formats.\n\
+\n\
+If a FILE is -, touch standard output.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ bool date_set = false;
+ bool ok = true;
+ char const *flex_date = NULL;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ change_times = 0;
+ no_create = use_ref = false;
+
+ while ((c = getopt_long (argc, argv, "acd:fmr:t:", longopts, NULL)) != -1)
+ {
+ switch (c)
+ {
+ case 'a':
+ change_times |= CH_ATIME;
+ break;
+
+ case 'c':
+ no_create = true;
+ break;
+
+ case 'd':
+ flex_date = optarg;
+ break;
+
+ case 'f':
+ break;
+
+ case 'm':
+ change_times |= CH_MTIME;
+ break;
+
+ case 'r':
+ use_ref = true;
+ ref_file = optarg;
+ break;
+
+ case 't':
+ if (! posixtime (&newtime[0].tv_sec, optarg,
+ PDS_LEADING_YEAR | PDS_CENTURY | PDS_SECONDS))
+ error (EXIT_FAILURE, 0, _("invalid date format %s"),
+ quote (optarg));
+ newtime[0].tv_nsec = 0;
+ newtime[1] = newtime[0];
+ date_set = true;
+ break;
+
+ case TIME_OPTION: /* --time */
+ change_times |= XARGMATCH ("--time", optarg,
+ time_args, time_masks);
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (change_times == 0)
+ change_times = CH_ATIME | CH_MTIME;
+
+ if (date_set && (use_ref || flex_date))
+ {
+ error (0, 0, _("cannot specify times from more than one source"));
+ usage (EXIT_FAILURE);
+ }
+
+ if (use_ref)
+ {
+ struct stat ref_stats;
+ if (stat (ref_file, &ref_stats))
+ error (EXIT_FAILURE, errno,
+ _("failed to get attributes of %s"), quote (ref_file));
+ newtime[0] = get_stat_atime (&ref_stats);
+ newtime[1] = get_stat_mtime (&ref_stats);
+ date_set = true;
+ if (flex_date)
+ {
+ if (change_times & CH_ATIME)
+ get_reldate (&newtime[0], flex_date, &newtime[0]);
+ if (change_times & CH_MTIME)
+ get_reldate (&newtime[1], flex_date, &newtime[1]);
+ }
+ }
+ else
+ {
+ if (flex_date)
+ {
+ get_reldate (&newtime[0], flex_date, NULL);
+ newtime[1] = newtime[0];
+ date_set = true;
+ }
+ }
+
+ /* The obsolete `MMDDhhmm[YY]' form is valid IFF there are
+ two or more non-option arguments. */
+ if (!date_set && 2 <= argc - optind && posix2_version () < 200112
+ && posixtime (&newtime[0].tv_sec, argv[optind],
+ PDS_TRAILING_YEAR | PDS_PRE_2000))
+ {
+ newtime[0].tv_nsec = 0;
+ newtime[1] = newtime[0];
+ date_set = true;
+
+ if (! getenv ("POSIXLY_CORRECT"))
+ {
+ struct tm const *tm = localtime (&newtime[0].tv_sec);
+ error (0, 0,
+ _("warning: `touch %s' is obsolete; use "
+ "`touch -t %04ld%02d%02d%02d%02d.%02d'"),
+ argv[optind],
+ tm->tm_year + 1900L, tm->tm_mon + 1, tm->tm_mday,
+ tm->tm_hour, tm->tm_min, tm->tm_sec);
+ }
+
+ optind++;
+ }
+
+ if (!date_set)
+ {
+ if (change_times == (CH_ATIME | CH_MTIME))
+ amtime_now = true;
+ else
+ {
+ gettime (&newtime[0]);
+ newtime[1] = newtime[0];
+ }
+ }
+
+ if (optind == argc)
+ {
+ error (0, 0, _("missing file operand"));
+ usage (EXIT_FAILURE);
+ }
+
+ for (; optind < argc; ++optind)
+ ok &= touch (argv[optind]);
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/tr.c b/src/tr.c
new file mode 100644
index 0000000..214eb2b
--- /dev/null
+++ b/src/tr.c
@@ -0,0 +1,1896 @@
+/* tr -- a filter to translate characters
+ Copyright (C) 91, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <assert.h>
+#include <sys/types.h>
+#include <getopt.h>
+
+#include "system.h"
+#include "error.h"
+#include "quote.h"
+#include "safe-read.h"
+#include "xstrtol.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "tr"
+
+#define AUTHORS "Jim Meyering"
+
+enum { N_CHARS = UCHAR_MAX + 1 };
+
+/* An unsigned integer type big enough to hold a repeat count or an
+ unsigned character. POSIX requires support for repeat counts as
+ high as 2**31 - 1. Since repeat counts might need to expand to
+ match the length of an argument string, we need at least size_t to
+ avoid arbitrary internal limits. It doesn't cost much to use
+ uintmax_t, though. */
+typedef uintmax_t count;
+
+/* The value for Spec_list->state that indicates to
+ get_next that it should initialize the tail pointer.
+ Its value should be as large as possible to avoid conflict
+ a valid value for the state field -- and that may be as
+ large as any valid repeat_count. */
+#define BEGIN_STATE (UINTMAX_MAX - 1)
+
+/* The value for Spec_list->state that indicates to
+ get_next that the element pointed to by Spec_list->tail is
+ being considered for the first time on this pass through the
+ list -- it indicates that get_next should make any necessary
+ initializations. */
+#define NEW_ELEMENT (BEGIN_STATE + 1)
+
+/* The maximum possible repeat count. Due to how the states are
+ implemented, it can be as much as BEGIN_STATE. */
+#define REPEAT_COUNT_MAXIMUM BEGIN_STATE
+
+/* The following (but not CC_NO_CLASS) are indices into the array of
+ valid character class strings. */
+enum Char_class
+ {
+ CC_ALNUM = 0, CC_ALPHA = 1, CC_BLANK = 2, CC_CNTRL = 3,
+ CC_DIGIT = 4, CC_GRAPH = 5, CC_LOWER = 6, CC_PRINT = 7,
+ CC_PUNCT = 8, CC_SPACE = 9, CC_UPPER = 10, CC_XDIGIT = 11,
+ CC_NO_CLASS = 9999
+ };
+
+/* Character class to which a character (returned by get_next) belonged;
+ but it is set only if the construct from which the character was obtained
+ was one of the character classes [:upper:] or [:lower:]. The value
+ is used only when translating and then, only to make sure that upper
+ and lower class constructs have the same relative positions in string1
+ and string2. */
+enum Upper_Lower_class
+ {
+ UL_LOWER,
+ UL_UPPER,
+ UL_NONE
+ };
+
+/* The type of a List_element. See build_spec_list for more details. */
+enum Range_element_type
+ {
+ RE_NORMAL_CHAR,
+ RE_RANGE,
+ RE_CHAR_CLASS,
+ RE_EQUIV_CLASS,
+ RE_REPEATED_CHAR
+ };
+
+/* One construct in one of tr's argument strings.
+ For example, consider the POSIX version of the classic tr command:
+ tr -cs 'a-zA-Z_' '[\n*]'
+ String1 has 3 constructs, two of which are ranges (a-z and A-Z),
+ and a single normal character, `_'. String2 has one construct. */
+struct List_element
+ {
+ enum Range_element_type type;
+ struct List_element *next;
+ union
+ {
+ unsigned char normal_char;
+ struct /* unnamed */
+ {
+ unsigned char first_char;
+ unsigned char last_char;
+ }
+ range;
+ enum Char_class char_class;
+ unsigned char equiv_code;
+ struct /* unnamed */
+ {
+ unsigned char the_repeated_char;
+ count repeat_count;
+ }
+ repeated_char;
+ }
+ u;
+ };
+
+/* Each of tr's argument strings is parsed into a form that is easier
+ to work with: a linked list of constructs (struct List_element).
+ Each Spec_list structure also encapsulates various attributes of
+ the corresponding argument string. The attributes are used mainly
+ to verify that the strings are valid in the context of any options
+ specified (like -s, -d, or -c). The main exception is the member
+ `tail', which is first used to construct the list. After construction,
+ it is used by get_next to save its state when traversing the list.
+ The member `state' serves a similar function. */
+struct Spec_list
+ {
+ /* Points to the head of the list of range elements.
+ The first struct is a dummy; its members are never used. */
+ struct List_element *head;
+
+ /* When appending, points to the last element. When traversing via
+ get_next(), points to the element to process next. Setting
+ Spec_list.state to the value BEGIN_STATE before calling get_next
+ signals get_next to initialize tail to point to head->next. */
+ struct List_element *tail;
+
+ /* Used to save state between calls to get_next. */
+ count state;
+
+ /* Length, in the sense that length ('a-z[:digit:]123abc')
+ is 42 ( = 26 + 10 + 6). */
+ count length;
+
+ /* The number of [c*] and [c*0] constructs that appear in this spec. */
+ size_t n_indefinite_repeats;
+
+ /* If n_indefinite_repeats is nonzero, this points to the List_element
+ corresponding to the last [c*] or [c*0] construct encountered in
+ this spec. Otherwise it is undefined. */
+ struct List_element *indefinite_repeat_element;
+
+ /* True if this spec contains at least one equivalence
+ class construct e.g. [=c=]. */
+ bool has_equiv_class;
+
+ /* True if this spec contains at least one character class
+ construct. E.g. [:digit:]. */
+ bool has_char_class;
+
+ /* True if this spec contains at least one of the character class
+ constructs (all but upper and lower) that aren't allowed in s2. */
+ bool has_restricted_char_class;
+ };
+
+/* A representation for escaped string1 or string2. As a string is parsed,
+ any backslash-escaped characters (other than octal or \a, \b, \f, \n,
+ etc.) are marked as such in this structure by setting the corresponding
+ entry in the ESCAPED vector. */
+struct E_string
+{
+ char *s;
+ bool *escaped;
+ size_t len;
+};
+
+/* Return nonzero if the Ith character of escaped string ES matches C
+ and is not escaped itself. */
+static inline bool
+es_match (struct E_string const *es, size_t i, char c)
+{
+ return es->s[i] == c && !es->escaped[i];
+}
+
+/* The name by which this program was run. */
+char *program_name;
+
+/* When true, each sequence in the input of a repeated character
+ (call it c) is replaced (in the output) by a single occurrence of c
+ for every c in the squeeze set. */
+static bool squeeze_repeats = false;
+
+/* When true, removes characters in the delete set from input. */
+static bool delete = false;
+
+/* Use the complement of set1 in place of set1. */
+static bool complement = false;
+
+/* When tr is performing translation and string1 is longer than string2,
+ POSIX says that the result is unspecified. That gives the implementor
+ of a POSIX conforming version of tr two reasonable choices for the
+ semantics of this case.
+
+ * The BSD tr pads string2 to the length of string1 by
+ repeating the last character in string2.
+
+ * System V tr ignores characters in string1 that have no
+ corresponding character in string2. That is, string1 is effectively
+ truncated to the length of string2.
+
+ When nonzero, this flag causes GNU tr to imitate the behavior
+ of System V tr when translating with string1 longer than string2.
+ The default is to emulate BSD tr. This flag is ignored in modes where
+ no translation is performed. Emulating the System V tr
+ in this exceptional case causes the relatively common BSD idiom:
+
+ tr -cs A-Za-z0-9 '\012'
+
+ to break (it would convert only zero bytes, rather than all
+ non-alphanumerics, to newlines).
+
+ WARNING: This switch does not provide general BSD or System V
+ compatibility. For example, it doesn't disable the interpretation
+ of the POSIX constructs [:alpha:], [=c=], and [c*10], so if by
+ some unfortunate coincidence you use such constructs in scripts
+ expecting to use some other version of tr, the scripts will break. */
+static bool truncate_set1 = false;
+
+/* An alias for (!delete && non_option_args == 2).
+ It is set in main and used there and in validate(). */
+static bool translating;
+
+static char io_buf[BUFSIZ];
+
+static char const *const char_class_name[] =
+{
+ "alnum", "alpha", "blank", "cntrl", "digit", "graph",
+ "lower", "print", "punct", "space", "upper", "xdigit"
+};
+enum { N_CHAR_CLASSES = sizeof char_class_name / sizeof char_class_name[0] };
+
+/* Array of boolean values. A character `c' is a member of the
+ squeeze set if and only if in_squeeze_set[c] is true. The squeeze
+ set is defined by the last (possibly, the only) string argument
+ on the command line when the squeeze option is given. */
+static bool in_squeeze_set[N_CHARS];
+
+/* Array of boolean values. A character `c' is a member of the
+ delete set if and only if in_delete_set[c] is true. The delete
+ set is defined by the first (or only) string argument on the
+ command line when the delete option is given. */
+static bool in_delete_set[N_CHARS];
+
+/* Array of character values defining the translation (if any) that
+ tr is to perform. Translation is performed only when there are
+ two specification strings and the delete switch is not given. */
+static char xlate[N_CHARS];
+
+static struct option const long_options[] =
+{
+ {"complement", no_argument, NULL, 'c'},
+ {"delete", no_argument, NULL, 'd'},
+ {"squeeze-repeats", no_argument, NULL, 's'},
+ {"truncate-set1", no_argument, NULL, 't'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... SET1 [SET2]\n\
+"),
+ program_name);
+ fputs (_("\
+Translate, squeeze, and/or delete characters from standard input,\n\
+writing to standard output.\n\
+\n\
+ -c, -C, --complement first complement SET1\n\
+ -d, --delete delete characters in SET1, do not translate\n\
+ -s, --squeeze-repeats replace each input sequence of a repeated character\n\
+ that is listed in SET1 with a single occurrence\n\
+ of that character\n\
+ -t, --truncate-set1 first truncate SET1 to length of SET2\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+SETs are specified as strings of characters. Most represent themselves.\n\
+Interpreted sequences are:\n\
+\n\
+ \\NNN character with octal value NNN (1 to 3 octal digits)\n\
+ \\\\ backslash\n\
+ \\a audible BEL\n\
+ \\b backspace\n\
+ \\f form feed\n\
+ \\n new line\n\
+ \\r return\n\
+ \\t horizontal tab\n\
+"), stdout);
+ fputs (_("\
+ \\v vertical tab\n\
+ CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order\n\
+ [CHAR*] in SET2, copies of CHAR until length of SET1\n\
+ [CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0\n\
+ [:alnum:] all letters and digits\n\
+ [:alpha:] all letters\n\
+ [:blank:] all horizontal whitespace\n\
+ [:cntrl:] all control characters\n\
+ [:digit:] all digits\n\
+"), stdout);
+ fputs (_("\
+ [:graph:] all printable characters, not including space\n\
+ [:lower:] all lower case letters\n\
+ [:print:] all printable characters, including space\n\
+ [:punct:] all punctuation characters\n\
+ [:space:] all horizontal or vertical whitespace\n\
+ [:upper:] all upper case letters\n\
+ [:xdigit:] all hexadecimal digits\n\
+ [=CHAR=] all characters which are equivalent to CHAR\n\
+"), stdout);
+ fputs (_("\
+\n\
+Translation occurs if -d is not given and both SET1 and SET2 appear.\n\
+-t may be used only when translating. SET2 is extended to length of\n\
+SET1 by repeating its last character as necessary. \
+"), stdout);
+ fputs (_("\
+Excess characters\n\
+of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to\n\
+expand in ascending order; used in SET2 while translating, they may\n\
+only be used in pairs to specify case conversion. \
+"), stdout);
+ fputs (_("\
+-s uses SET1 if not\n\
+translating nor deleting; else squeezing uses SET2 and occurs after\n\
+translation or deletion.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Return nonzero if the character C is a member of the
+ equivalence class containing the character EQUIV_CLASS. */
+
+static inline bool
+is_equiv_class_member (unsigned char equiv_class, unsigned char c)
+{
+ return (equiv_class == c);
+}
+
+/* Return true if the character C is a member of the
+ character class CHAR_CLASS. */
+
+static bool
+is_char_class_member (enum Char_class char_class, unsigned char c)
+{
+ int result;
+
+ switch (char_class)
+ {
+ case CC_ALNUM:
+ result = isalnum (c);
+ break;
+ case CC_ALPHA:
+ result = isalpha (c);
+ break;
+ case CC_BLANK:
+ result = isblank (c);
+ break;
+ case CC_CNTRL:
+ result = iscntrl (c);
+ break;
+ case CC_DIGIT:
+ result = isdigit (c);
+ break;
+ case CC_GRAPH:
+ result = isgraph (c);
+ break;
+ case CC_LOWER:
+ result = islower (c);
+ break;
+ case CC_PRINT:
+ result = isprint (c);
+ break;
+ case CC_PUNCT:
+ result = ispunct (c);
+ break;
+ case CC_SPACE:
+ result = isspace (c);
+ break;
+ case CC_UPPER:
+ result = isupper (c);
+ break;
+ case CC_XDIGIT:
+ result = isxdigit (c);
+ break;
+ default:
+ abort ();
+ break;
+ }
+
+ return !! result;
+}
+
+static void
+es_free (struct E_string *es)
+{
+ free (es->s);
+ free (es->escaped);
+}
+
+/* Perform the first pass over each range-spec argument S, converting all
+ \c and \ddd escapes to their one-byte representations. If an invalid
+ quote sequence is found print an error message and return false;
+ Otherwise set *ES to the resulting string and return true.
+ The resulting array of characters may contain zero-bytes;
+ however, on input, S is assumed to be null-terminated, and hence
+ cannot contain actual (non-escaped) zero bytes. */
+
+static bool
+unquote (char const *s, struct E_string *es)
+{
+ size_t i, j;
+ size_t len = strlen (s);
+
+ es->s = xmalloc (len);
+ es->escaped = xcalloc (len, sizeof es->escaped[0]);
+
+ j = 0;
+ for (i = 0; s[i]; i++)
+ {
+ unsigned char c;
+ int oct_digit;
+
+ switch (s[i])
+ {
+ case '\\':
+ es->escaped[j] = true;
+ switch (s[i + 1])
+ {
+ case '\\':
+ c = '\\';
+ break;
+ case 'a':
+ c = '\a';
+ break;
+ case 'b':
+ c = '\b';
+ break;
+ case 'f':
+ c = '\f';
+ break;
+ case 'n':
+ c = '\n';
+ break;
+ case 'r':
+ c = '\r';
+ break;
+ case 't':
+ c = '\t';
+ break;
+ case 'v':
+ c = '\v';
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ c = s[i + 1] - '0';
+ oct_digit = s[i + 2] - '0';
+ if (0 <= oct_digit && oct_digit <= 7)
+ {
+ c = 8 * c + oct_digit;
+ ++i;
+ oct_digit = s[i + 2] - '0';
+ if (0 <= oct_digit && oct_digit <= 7)
+ {
+ if (8 * c + oct_digit < N_CHARS)
+ {
+ c = 8 * c + oct_digit;
+ ++i;
+ }
+ else
+ {
+ /* A 3-digit octal number larger than \377 won't
+ fit in 8 bits. So we stop when adding the
+ next digit would put us over the limit and
+ give a warning about the ambiguity. POSIX
+ isn't clear on this, and we interpret this
+ lack of clarity as meaning the resulting behavior
+ is undefined, which means we're allowed to issue
+ a warning. */
+ error (0, 0, _("warning: the ambiguous octal escape \
+\\%c%c%c is being\n\tinterpreted as the 2-byte sequence \\0%c%c, %c"),
+ s[i], s[i + 1], s[i + 2],
+ s[i], s[i + 1], s[i + 2]);
+ }
+ }
+ }
+ break;
+ case '\0':
+ /* POSIX seems to require that a trailing backslash must
+ stand for itself. Weird. */
+ es->escaped[j] = false;
+ i--;
+ c = '\\';
+ break;
+ default:
+ c = s[i + 1];
+ break;
+ }
+ ++i;
+ es->s[j++] = c;
+ break;
+ default:
+ es->s[j++] = s[i];
+ break;
+ }
+ }
+ es->len = j;
+ return true;
+}
+
+/* If CLASS_STR is a valid character class string, return its index
+ in the global char_class_name array. Otherwise, return CC_NO_CLASS. */
+
+static enum Char_class
+look_up_char_class (char const *class_str, size_t len)
+{
+ enum Char_class i;
+
+ for (i = 0; i < N_CHAR_CLASSES; i++)
+ if (strncmp (class_str, char_class_name[i], len) == 0
+ && strlen (char_class_name[i]) == len)
+ return i;
+ return CC_NO_CLASS;
+}
+
+/* Return a newly allocated string with a printable version of C.
+ This function is used solely for formatting error messages. */
+
+static char *
+make_printable_char (unsigned char c)
+{
+ char *buf = xmalloc (5);
+
+ if (isprint (c))
+ {
+ buf[0] = c;
+ buf[1] = '\0';
+ }
+ else
+ {
+ sprintf (buf, "\\%03o", c);
+ }
+ return buf;
+}
+
+/* Return a newly allocated copy of S which is suitable for printing.
+ LEN is the number of characters in S. Most non-printing
+ (isprint) characters are represented by a backslash followed by
+ 3 octal digits. However, the characters represented by \c escapes
+ where c is one of [abfnrtv] are represented by their 2-character \c
+ sequences. This function is used solely for printing error messages. */
+
+static char *
+make_printable_str (char const *s, size_t len)
+{
+ /* Worst case is that every character expands to a backslash
+ followed by a 3-character octal escape sequence. */
+ char *printable_buf = xnmalloc (len + 1, 4);
+ char *p = printable_buf;
+ size_t i;
+
+ for (i = 0; i < len; i++)
+ {
+ char buf[5];
+ char const *tmp = NULL;
+ unsigned char c = s[i];
+
+ switch (c)
+ {
+ case '\\':
+ tmp = "\\";
+ break;
+ case '\a':
+ tmp = "\\a";
+ break;
+ case '\b':
+ tmp = "\\b";
+ break;
+ case '\f':
+ tmp = "\\f";
+ break;
+ case '\n':
+ tmp = "\\n";
+ break;
+ case '\r':
+ tmp = "\\r";
+ break;
+ case '\t':
+ tmp = "\\t";
+ break;
+ case '\v':
+ tmp = "\\v";
+ break;
+ default:
+ if (isprint (c))
+ {
+ buf[0] = c;
+ buf[1] = '\0';
+ }
+ else
+ sprintf (buf, "\\%03o", c);
+ tmp = buf;
+ break;
+ }
+ p = stpcpy (p, tmp);
+ }
+ return printable_buf;
+}
+
+/* Append a newly allocated structure representing a
+ character C to the specification list LIST. */
+
+static void
+append_normal_char (struct Spec_list *list, unsigned char c)
+{
+ struct List_element *new;
+
+ new = xmalloc (sizeof *new);
+ new->next = NULL;
+ new->type = RE_NORMAL_CHAR;
+ new->u.normal_char = c;
+ assert (list->tail);
+ list->tail->next = new;
+ list->tail = new;
+}
+
+/* Append a newly allocated structure representing the range
+ of characters from FIRST to LAST to the specification list LIST.
+ Return false if LAST precedes FIRST in the collating sequence,
+ true otherwise. This means that '[c-c]' is acceptable. */
+
+static bool
+append_range (struct Spec_list *list, unsigned char first, unsigned char last)
+{
+ struct List_element *new;
+
+ if (last < first)
+ {
+ char *tmp1 = make_printable_char (first);
+ char *tmp2 = make_printable_char (last);
+
+ error (0, 0,
+ _("range-endpoints of `%s-%s' are in reverse collating sequence order"),
+ tmp1, tmp2);
+ free (tmp1);
+ free (tmp2);
+ return false;
+ }
+ new = xmalloc (sizeof *new);
+ new->next = NULL;
+ new->type = RE_RANGE;
+ new->u.range.first_char = first;
+ new->u.range.last_char = last;
+ assert (list->tail);
+ list->tail->next = new;
+ list->tail = new;
+ return true;
+}
+
+/* If CHAR_CLASS_STR is a valid character class string, append a
+ newly allocated structure representing that character class to the end
+ of the specification list LIST and return true. If CHAR_CLASS_STR is not
+ a valid string return false. */
+
+static bool
+append_char_class (struct Spec_list *list,
+ char const *char_class_str, size_t len)
+{
+ enum Char_class char_class;
+ struct List_element *new;
+
+ char_class = look_up_char_class (char_class_str, len);
+ if (char_class == CC_NO_CLASS)
+ return false;
+ new = xmalloc (sizeof *new);
+ new->next = NULL;
+ new->type = RE_CHAR_CLASS;
+ new->u.char_class = char_class;
+ assert (list->tail);
+ list->tail->next = new;
+ list->tail = new;
+ return true;
+}
+
+/* Append a newly allocated structure representing a [c*n]
+ repeated character construct to the specification list LIST.
+ THE_CHAR is the single character to be repeated, and REPEAT_COUNT
+ is a non-negative repeat count. */
+
+static void
+append_repeated_char (struct Spec_list *list, unsigned char the_char,
+ count repeat_count)
+{
+ struct List_element *new;
+
+ new = xmalloc (sizeof *new);
+ new->next = NULL;
+ new->type = RE_REPEATED_CHAR;
+ new->u.repeated_char.the_repeated_char = the_char;
+ new->u.repeated_char.repeat_count = repeat_count;
+ assert (list->tail);
+ list->tail->next = new;
+ list->tail = new;
+}
+
+/* Given a string, EQUIV_CLASS_STR, from a [=str=] context and
+ the length of that string, LEN, if LEN is exactly one, append
+ a newly allocated structure representing the specified
+ equivalence class to the specification list, LIST and return true.
+ If LEN is not 1, return false. */
+
+static bool
+append_equiv_class (struct Spec_list *list,
+ char const *equiv_class_str, size_t len)
+{
+ struct List_element *new;
+
+ if (len != 1)
+ return false;
+ new = xmalloc (sizeof *new);
+ new->next = NULL;
+ new->type = RE_EQUIV_CLASS;
+ new->u.equiv_code = *equiv_class_str;
+ assert (list->tail);
+ list->tail->next = new;
+ list->tail = new;
+ return true;
+}
+
+/* Search forward starting at START_IDX for the 2-char sequence
+ (PRE_BRACKET_CHAR,']') in the string P of length P_LEN. If such
+ a sequence is found, set *RESULT_IDX to the index of the first
+ character and return true. Otherwise return false. P may contain
+ zero bytes. */
+
+static bool
+find_closing_delim (const struct E_string *es, size_t start_idx,
+ char pre_bracket_char, size_t *result_idx)
+{
+ size_t i;
+
+ for (i = start_idx; i < es->len - 1; i++)
+ if (es->s[i] == pre_bracket_char && es->s[i + 1] == ']'
+ && !es->escaped[i] && !es->escaped[i + 1])
+ {
+ *result_idx = i;
+ return true;
+ }
+ return false;
+}
+
+/* Parse the bracketed repeat-char syntax. If the P_LEN characters
+ beginning with P[ START_IDX ] comprise a valid [c*n] construct,
+ then set *CHAR_TO_REPEAT, *REPEAT_COUNT, and *CLOSING_BRACKET_IDX
+ and return zero. If the second character following
+ the opening bracket is not `*' or if no closing bracket can be
+ found, return -1. If a closing bracket is found and the
+ second char is `*', but the string between the `*' and `]' isn't
+ empty, an octal number, or a decimal number, print an error message
+ and return -2. */
+
+static int
+find_bracketed_repeat (const struct E_string *es, size_t start_idx,
+ unsigned char *char_to_repeat, count *repeat_count,
+ size_t *closing_bracket_idx)
+{
+ size_t i;
+
+ assert (start_idx + 1 < es->len);
+ if (!es_match (es, start_idx + 1, '*'))
+ return -1;
+
+ for (i = start_idx + 2; i < es->len && !es->escaped[i]; i++)
+ {
+ if (es->s[i] == ']')
+ {
+ size_t digit_str_len = i - start_idx - 2;
+
+ *char_to_repeat = es->s[start_idx];
+ if (digit_str_len == 0)
+ {
+ /* We've matched [c*] -- no explicit repeat count. */
+ *repeat_count = 0;
+ }
+ else
+ {
+ /* Here, we have found [c*s] where s should be a string
+ of octal (if it starts with `0') or decimal digits. */
+ char const *digit_str = &es->s[start_idx + 2];
+ char *d_end;
+ if ((xstrtoumax (digit_str, &d_end, *digit_str == '0' ? 8 : 10,
+ repeat_count, NULL)
+ != LONGINT_OK)
+ || REPEAT_COUNT_MAXIMUM < *repeat_count
+ || digit_str + digit_str_len != d_end)
+ {
+ char *tmp = make_printable_str (digit_str, digit_str_len);
+ error (0, 0,
+ _("invalid repeat count %s in [c*n] construct"),
+ quote (tmp));
+ free (tmp);
+ return -2;
+ }
+ }
+ *closing_bracket_idx = i;
+ return 0;
+ }
+ }
+ return -1; /* No bracket found. */
+}
+
+/* Return true if the string at ES->s[IDX] matches the regular
+ expression `\*[0-9]*\]', false otherwise. The string does not
+ match if any of its characters are escaped. */
+
+static bool
+star_digits_closebracket (const struct E_string *es, size_t idx)
+{
+ size_t i;
+
+ if (!es_match (es, idx, '*'))
+ return false;
+
+ for (i = idx + 1; i < es->len; i++)
+ if (!ISDIGIT (to_uchar (es->s[i])) || es->escaped[i])
+ return es_match (es, i, ']');
+ return false;
+}
+
+/* Convert string UNESCAPED_STRING (which has been preprocessed to
+ convert backslash-escape sequences) of length LEN characters into
+ a linked list of the following 5 types of constructs:
+ - [:str:] Character class where `str' is one of the 12 valid strings.
+ - [=c=] Equivalence class where `c' is any single character.
+ - [c*n] Repeat the single character `c' `n' times. n may be omitted.
+ However, if `n' is present, it must be a non-negative octal or
+ decimal integer.
+ - r-s Range of characters from `r' to `s'. The second endpoint must
+ not precede the first in the current collating sequence.
+ - c Any other character is interpreted as itself. */
+
+static bool
+build_spec_list (const struct E_string *es, struct Spec_list *result)
+{
+ char const *p;
+ size_t i;
+
+ p = es->s;
+
+ /* The main for-loop below recognizes the 4 multi-character constructs.
+ A character that matches (in its context) none of the multi-character
+ constructs is classified as `normal'. Since all multi-character
+ constructs have at least 3 characters, any strings of length 2 or
+ less are composed solely of normal characters. Hence, the index of
+ the outer for-loop runs only as far as LEN-2. */
+
+ for (i = 0; i + 2 < es->len; /* empty */)
+ {
+ if (es_match (es, i, '['))
+ {
+ bool matched_multi_char_construct;
+ size_t closing_bracket_idx;
+ unsigned char char_to_repeat;
+ count repeat_count;
+ int err;
+
+ matched_multi_char_construct = true;
+ if (es_match (es, i + 1, ':') || es_match (es, i + 1, '='))
+ {
+ size_t closing_delim_idx;
+
+ if (find_closing_delim (es, i + 2, p[i + 1], &closing_delim_idx))
+ {
+ size_t opnd_str_len = closing_delim_idx - 1 - (i + 2) + 1;
+ char const *opnd_str = p + i + 2;
+
+ if (opnd_str_len == 0)
+ {
+ if (p[i + 1] == ':')
+ error (0, 0, _("missing character class name `[::]'"));
+ else
+ error (0, 0,
+ _("missing equivalence class character `[==]'"));
+ return false;
+ }
+
+ if (p[i + 1] == ':')
+ {
+ /* FIXME: big comment. */
+ if (!append_char_class (result, opnd_str, opnd_str_len))
+ {
+ if (star_digits_closebracket (es, i + 2))
+ goto try_bracketed_repeat;
+ else
+ {
+ char *tmp = make_printable_str (opnd_str,
+ opnd_str_len);
+ error (0, 0, _("invalid character class %s"),
+ quote (tmp));
+ free (tmp);
+ return false;
+ }
+ }
+ }
+ else
+ {
+ /* FIXME: big comment. */
+ if (!append_equiv_class (result, opnd_str, opnd_str_len))
+ {
+ if (star_digits_closebracket (es, i + 2))
+ goto try_bracketed_repeat;
+ else
+ {
+ char *tmp = make_printable_str (opnd_str,
+ opnd_str_len);
+ error (0, 0,
+ _("%s: equivalence class operand must be a single character"),
+ tmp);
+ free (tmp);
+ return false;
+ }
+ }
+ }
+
+ i = closing_delim_idx + 2;
+ continue;
+ }
+ /* Else fall through. This could be [:*] or [=*]. */
+ }
+
+ try_bracketed_repeat:
+
+ /* Determine whether this is a bracketed repeat range
+ matching the RE \[.\*(dec_or_oct_number)?\]. */
+ err = find_bracketed_repeat (es, i + 1, &char_to_repeat,
+ &repeat_count,
+ &closing_bracket_idx);
+ if (err == 0)
+ {
+ append_repeated_char (result, char_to_repeat, repeat_count);
+ i = closing_bracket_idx + 1;
+ }
+ else if (err == -1)
+ {
+ matched_multi_char_construct = false;
+ }
+ else
+ {
+ /* Found a string that looked like [c*n] but the
+ numeric part was invalid. */
+ return false;
+ }
+
+ if (matched_multi_char_construct)
+ continue;
+
+ /* We reach this point if P does not match [:str:], [=c=],
+ [c*n], or [c*]. Now, see if P looks like a range `[-c'
+ (from `[' to `c'). */
+ }
+
+ /* Look ahead one char for ranges like a-z. */
+ if (es_match (es, i + 1, '-'))
+ {
+ if (!append_range (result, p[i], p[i + 2]))
+ return false;
+ i += 3;
+ }
+ else
+ {
+ append_normal_char (result, p[i]);
+ ++i;
+ }
+ }
+
+ /* Now handle the (2 or fewer) remaining characters p[i]..p[es->len - 1]. */
+ for (; i < es->len; i++)
+ append_normal_char (result, p[i]);
+
+ return true;
+}
+
+/* Given a Spec_list S (with its saved state implicit in the values
+ of its members `tail' and `state'), return the next single character
+ in the expansion of S's constructs. If the last character of S was
+ returned on the previous call or if S was empty, this function
+ returns -1. For example, successive calls to get_next where S
+ represents the spec-string 'a-d[y*3]' will return the sequence
+ of values a, b, c, d, y, y, y, -1. Finally, if the construct from
+ which the returned character comes is [:upper:] or [:lower:], the
+ parameter CLASS is given a value to indicate which it was. Otherwise
+ CLASS is set to UL_NONE. This value is used only when constructing
+ the translation table to verify that any occurrences of upper and
+ lower class constructs in the spec-strings appear in the same relative
+ positions. */
+
+static int
+get_next (struct Spec_list *s, enum Upper_Lower_class *class)
+{
+ struct List_element *p;
+ int return_val;
+ int i;
+
+ if (class)
+ *class = UL_NONE;
+
+ if (s->state == BEGIN_STATE)
+ {
+ s->tail = s->head->next;
+ s->state = NEW_ELEMENT;
+ }
+
+ p = s->tail;
+ if (p == NULL)
+ return -1;
+
+ switch (p->type)
+ {
+ case RE_NORMAL_CHAR:
+ return_val = p->u.normal_char;
+ s->state = NEW_ELEMENT;
+ s->tail = p->next;
+ break;
+
+ case RE_RANGE:
+ if (s->state == NEW_ELEMENT)
+ s->state = p->u.range.first_char;
+ else
+ ++(s->state);
+ return_val = s->state;
+ if (s->state == p->u.range.last_char)
+ {
+ s->tail = p->next;
+ s->state = NEW_ELEMENT;
+ }
+ break;
+
+ case RE_CHAR_CLASS:
+ if (class)
+ {
+ bool upper_or_lower;
+ switch (p->u.char_class)
+ {
+ case CC_LOWER:
+ *class = UL_LOWER;
+ upper_or_lower = true;
+ break;
+ case CC_UPPER:
+ *class = UL_UPPER;
+ upper_or_lower = true;
+ break;
+ default:
+ upper_or_lower = false;
+ break;
+ }
+
+ if (upper_or_lower)
+ {
+ s->tail = p->next;
+ s->state = NEW_ELEMENT;
+ return_val = 0;
+ break;
+ }
+ }
+
+ if (s->state == NEW_ELEMENT)
+ {
+ for (i = 0; i < N_CHARS; i++)
+ if (is_char_class_member (p->u.char_class, i))
+ break;
+ assert (i < N_CHARS);
+ s->state = i;
+ }
+ assert (is_char_class_member (p->u.char_class, s->state));
+ return_val = s->state;
+ for (i = s->state + 1; i < N_CHARS; i++)
+ if (is_char_class_member (p->u.char_class, i))
+ break;
+ if (i < N_CHARS)
+ s->state = i;
+ else
+ {
+ s->tail = p->next;
+ s->state = NEW_ELEMENT;
+ }
+ break;
+
+ case RE_EQUIV_CLASS:
+ /* FIXME: this assumes that each character is alone in its own
+ equivalence class (which appears to be correct for my
+ LC_COLLATE. But I don't know of any function that allows
+ one to determine a character's equivalence class. */
+
+ return_val = p->u.equiv_code;
+ s->state = NEW_ELEMENT;
+ s->tail = p->next;
+ break;
+
+ case RE_REPEATED_CHAR:
+ /* Here, a repeat count of n == 0 means don't repeat at all. */
+ if (p->u.repeated_char.repeat_count == 0)
+ {
+ s->tail = p->next;
+ s->state = NEW_ELEMENT;
+ return_val = get_next (s, class);
+ }
+ else
+ {
+ if (s->state == NEW_ELEMENT)
+ {
+ s->state = 0;
+ }
+ ++(s->state);
+ return_val = p->u.repeated_char.the_repeated_char;
+ if (s->state == p->u.repeated_char.repeat_count)
+ {
+ s->tail = p->next;
+ s->state = NEW_ELEMENT;
+ }
+ }
+ break;
+
+ default:
+ abort ();
+ break;
+ }
+
+ return return_val;
+}
+
+/* This is a minor kludge. This function is called from
+ get_spec_stats to determine the cardinality of a set derived
+ from a complemented string. It's a kludge in that some of the
+ same operations are (duplicated) performed in set_initialize. */
+
+static int
+card_of_complement (struct Spec_list *s)
+{
+ int c;
+ int cardinality = N_CHARS;
+ bool in_set[N_CHARS] = { 0, };
+
+ s->state = BEGIN_STATE;
+ while ((c = get_next (s, NULL)) != -1)
+ {
+ cardinality -= (!in_set[c]);
+ in_set[c] = true;
+ }
+ return cardinality;
+}
+
+/* Gather statistics about the spec-list S in preparation for the tests
+ in validate that determine the consistency of the specs. This function
+ is called at most twice; once for string1, and again for any string2.
+ LEN_S1 < 0 indicates that this is the first call and that S represents
+ string1. When LEN_S1 >= 0, it is the length of the expansion of the
+ constructs in string1, and we can use its value to resolve any
+ indefinite repeat construct in S (which represents string2). Hence,
+ this function has the side-effect that it converts a valid [c*]
+ construct in string2 to [c*n] where n is large enough (or 0) to give
+ string2 the same length as string1. For example, with the command
+ tr a-z 'A[\n*]Z' on the second call to get_spec_stats, LEN_S1 would
+ be 26 and S (representing string2) would be converted to 'A[\n*24]Z'. */
+
+static void
+get_spec_stats (struct Spec_list *s)
+{
+ struct List_element *p;
+ count length = 0;
+
+ s->n_indefinite_repeats = 0;
+ s->has_equiv_class = false;
+ s->has_restricted_char_class = false;
+ s->has_char_class = false;
+ for (p = s->head->next; p; p = p->next)
+ {
+ int i;
+ count len = 0;
+ count new_length;
+
+ switch (p->type)
+ {
+ case RE_NORMAL_CHAR:
+ len = 1;
+ break;
+
+ case RE_RANGE:
+ assert (p->u.range.last_char >= p->u.range.first_char);
+ len = p->u.range.last_char - p->u.range.first_char + 1;
+ break;
+
+ case RE_CHAR_CLASS:
+ s->has_char_class = true;
+ for (i = 0; i < N_CHARS; i++)
+ if (is_char_class_member (p->u.char_class, i))
+ ++len;
+ switch (p->u.char_class)
+ {
+ case CC_UPPER:
+ case CC_LOWER:
+ break;
+ default:
+ s->has_restricted_char_class = true;
+ break;
+ }
+ break;
+
+ case RE_EQUIV_CLASS:
+ for (i = 0; i < N_CHARS; i++)
+ if (is_equiv_class_member (p->u.equiv_code, i))
+ ++len;
+ s->has_equiv_class = true;
+ break;
+
+ case RE_REPEATED_CHAR:
+ if (p->u.repeated_char.repeat_count > 0)
+ len = p->u.repeated_char.repeat_count;
+ else
+ {
+ s->indefinite_repeat_element = p;
+ ++(s->n_indefinite_repeats);
+ }
+ break;
+
+ default:
+ abort ();
+ break;
+ }
+
+ /* Check for arithmetic overflow in computing length. Also, reject
+ any length greater than the maximum repeat count, in case the
+ length is later used to compute the repeat count for an
+ indefinite element. */
+ new_length = length + len;
+ if (! (length <= new_length && new_length <= REPEAT_COUNT_MAXIMUM))
+ error (EXIT_FAILURE, 0, _("too many characters in set"));
+ length = new_length;
+ }
+
+ s->length = length;
+}
+
+static void
+get_s1_spec_stats (struct Spec_list *s1)
+{
+ get_spec_stats (s1);
+ if (complement)
+ s1->length = card_of_complement (s1);
+}
+
+static void
+get_s2_spec_stats (struct Spec_list *s2, count len_s1)
+{
+ get_spec_stats (s2);
+ if (len_s1 >= s2->length && s2->n_indefinite_repeats == 1)
+ {
+ s2->indefinite_repeat_element->u.repeated_char.repeat_count =
+ len_s1 - s2->length;
+ s2->length = len_s1;
+ }
+}
+
+static void
+spec_init (struct Spec_list *spec_list)
+{
+ struct List_element *new = xmalloc (sizeof *new);
+ spec_list->head = spec_list->tail = new;
+ spec_list->head->next = NULL;
+}
+
+/* This function makes two passes over the argument string S. The first
+ one converts all \c and \ddd escapes to their one-byte representations.
+ The second constructs a linked specification list, SPEC_LIST, of the
+ characters and constructs that comprise the argument string. If either
+ of these passes detects an error, this function returns false. */
+
+static bool
+parse_str (char const *s, struct Spec_list *spec_list)
+{
+ struct E_string es;
+ bool ok = unquote (s, &es) && build_spec_list (&es, spec_list);
+ es_free (&es);
+ return ok;
+}
+
+/* Given two specification lists, S1 and S2, and assuming that
+ S1->length > S2->length, append a single [c*n] element to S2 where c
+ is the last character in the expansion of S2 and n is the difference
+ between the two lengths.
+ Upon successful completion, S2->length is set to S1->length. The only
+ way this function can fail to make S2 as long as S1 is when S2 has
+ zero-length, since in that case, there is no last character to repeat.
+ So S2->length is required to be at least 1.
+
+ Providing this functionality allows the user to do some pretty
+ non-BSD (and non-portable) things: For example, the command
+ tr -cs '[:upper:]0-9' '[:lower:]'
+ is almost guaranteed to give results that depend on your collating
+ sequence. */
+
+static void
+string2_extend (const struct Spec_list *s1, struct Spec_list *s2)
+{
+ struct List_element *p;
+ unsigned char char_to_repeat;
+ int i;
+
+ assert (translating);
+ assert (s1->length > s2->length);
+ assert (s2->length > 0);
+
+ p = s2->tail;
+ switch (p->type)
+ {
+ case RE_NORMAL_CHAR:
+ char_to_repeat = p->u.normal_char;
+ break;
+ case RE_RANGE:
+ char_to_repeat = p->u.range.last_char;
+ break;
+ case RE_CHAR_CLASS:
+ for (i = N_CHARS - 1; i >= 0; i--)
+ if (is_char_class_member (p->u.char_class, i))
+ break;
+ assert (i >= 0);
+ char_to_repeat = i;
+ break;
+
+ case RE_REPEATED_CHAR:
+ char_to_repeat = p->u.repeated_char.the_repeated_char;
+ break;
+
+ case RE_EQUIV_CLASS:
+ /* This shouldn't happen, because validate exits with an error
+ if it finds an equiv class in string2 when translating. */
+ abort ();
+ break;
+
+ default:
+ abort ();
+ break;
+ }
+
+ append_repeated_char (s2, char_to_repeat, s1->length - s2->length);
+ s2->length = s1->length;
+}
+
+/* Return true if S is a non-empty list in which exactly one
+ character (but potentially, many instances of it) appears.
+ E.g., [X*] or xxxxxxxx. */
+
+static bool
+homogeneous_spec_list (struct Spec_list *s)
+{
+ int b, c;
+
+ s->state = BEGIN_STATE;
+
+ if ((b = get_next (s, NULL)) == -1)
+ return false;
+
+ while ((c = get_next (s, NULL)) != -1)
+ if (c != b)
+ return false;
+
+ return true;
+}
+
+/* Die with an error message if S1 and S2 describe strings that
+ are not valid with the given command line switches.
+ A side effect of this function is that if a valid [c*] or
+ [c*0] construct appears in string2, it is converted to [c*n]
+ with a value for n that makes s2->length == s1->length. By
+ the same token, if the --truncate-set1 option is not
+ given, S2 may be extended. */
+
+static void
+validate (struct Spec_list *s1, struct Spec_list *s2)
+{
+ get_s1_spec_stats (s1);
+ if (s1->n_indefinite_repeats > 0)
+ {
+ error (EXIT_FAILURE, 0,
+ _("the [c*] repeat construct may not appear in string1"));
+ }
+
+ if (s2)
+ {
+ get_s2_spec_stats (s2, s1->length);
+
+ if (s2->n_indefinite_repeats > 1)
+ {
+ error (EXIT_FAILURE, 0,
+ _("only one [c*] repeat construct may appear in string2"));
+ }
+
+ if (translating)
+ {
+ if (s2->has_equiv_class)
+ {
+ error (EXIT_FAILURE, 0,
+ _("[=c=] expressions may not appear in string2 \
+when translating"));
+ }
+
+ if (s1->length > s2->length)
+ {
+ if (!truncate_set1)
+ {
+ /* string2 must be non-empty unless --truncate-set1 is
+ given or string1 is empty. */
+
+ if (s2->length == 0)
+ error (EXIT_FAILURE, 0,
+ _("when not truncating set1, string2 must be non-empty"));
+ string2_extend (s1, s2);
+ }
+ }
+
+ if (complement && s1->has_char_class
+ && ! (s2->length == s1->length && homogeneous_spec_list (s2)))
+ {
+ error (EXIT_FAILURE, 0,
+ _("when translating with complemented character classes,\
+\nstring2 must map all characters in the domain to one"));
+ }
+
+ if (s2->has_restricted_char_class)
+ {
+ error (EXIT_FAILURE, 0,
+ _("when translating, the only character classes that may \
+appear in\nstring2 are `upper' and `lower'"));
+ }
+ }
+ else
+ /* Not translating. */
+ {
+ if (s2->n_indefinite_repeats > 0)
+ error (EXIT_FAILURE, 0,
+ _("the [c*] construct may appear in string2 only \
+when translating"));
+ }
+ }
+}
+
+/* Read buffers of SIZE bytes via the function READER (if READER is
+ NULL, read from stdin) until EOF. When non-NULL, READER is either
+ read_and_delete or read_and_xlate. After each buffer is read, it is
+ processed and written to stdout. The buffers are processed so that
+ multiple consecutive occurrences of the same character in the input
+ stream are replaced by a single occurrence of that character if the
+ character is in the squeeze set. */
+
+static void
+squeeze_filter (char *buf, size_t size, size_t (*reader) (char *, size_t))
+{
+ /* A value distinct from any character that may have been stored in a
+ buffer as the result of a block-read in the function squeeze_filter. */
+ enum { NOT_A_CHAR = CHAR_MAX + 1 };
+
+ int char_to_squeeze = NOT_A_CHAR;
+ size_t i = 0;
+ size_t nr = 0;
+
+ for (;;)
+ {
+ size_t begin;
+
+ if (i >= nr)
+ {
+ nr = reader (buf, size);
+ if (nr == 0)
+ break;
+ i = 0;
+ }
+
+ begin = i;
+
+ if (char_to_squeeze == NOT_A_CHAR)
+ {
+ size_t out_len;
+ /* Here, by being a little tricky, we can get a significant
+ performance increase in most cases when the input is
+ reasonably large. Since tr will modify the input only
+ if two consecutive (and identical) input characters are
+ in the squeeze set, we can step by two through the data
+ when searching for a character in the squeeze set. This
+ means there may be a little more work in a few cases and
+ perhaps twice as much work in the worst cases where most
+ of the input is removed by squeezing repeats. But most
+ uses of this functionality seem to remove less than 20-30%
+ of the input. */
+ for (; i < nr && !in_squeeze_set[to_uchar (buf[i])]; i += 2)
+ continue;
+
+ /* There is a special case when i == nr and we've just
+ skipped a character (the last one in buf) that is in
+ the squeeze set. */
+ if (i == nr && in_squeeze_set[to_uchar (buf[i - 1])])
+ --i;
+
+ if (i >= nr)
+ out_len = nr - begin;
+ else
+ {
+ char_to_squeeze = buf[i];
+ /* We're about to output buf[begin..i]. */
+ out_len = i - begin + 1;
+
+ /* But since we stepped by 2 in the loop above,
+ out_len may be one too large. */
+ if (i > 0 && buf[i - 1] == char_to_squeeze)
+ --out_len;
+
+ /* Advance i to the index of first character to be
+ considered when looking for a char different from
+ char_to_squeeze. */
+ ++i;
+ }
+ if (out_len > 0
+ && fwrite (&buf[begin], 1, out_len, stdout) != out_len)
+ error (EXIT_FAILURE, errno, _("write error"));
+ }
+
+ if (char_to_squeeze != NOT_A_CHAR)
+ {
+ /* Advance i to index of first char != char_to_squeeze
+ (or to nr if all the rest of the characters in this
+ buffer are the same as char_to_squeeze). */
+ for (; i < nr && buf[i] == char_to_squeeze; i++)
+ continue;
+ if (i < nr)
+ char_to_squeeze = NOT_A_CHAR;
+ /* If (i >= nr) we've squeezed the last character in this buffer.
+ So now we have to read a new buffer and continue comparing
+ characters against char_to_squeeze. */
+ }
+ }
+}
+
+static size_t
+plain_read (char *buf, size_t size)
+{
+ size_t nr = safe_read (STDIN_FILENO, buf, size);
+ if (nr == SAFE_READ_ERROR)
+ error (EXIT_FAILURE, errno, _("read error"));
+ return nr;
+}
+
+/* Read buffers of SIZE bytes from stdin until one is found that
+ contains at least one character not in the delete set. Store
+ in the array BUF, all characters from that buffer that are not
+ in the delete set, and return the number of characters saved
+ or 0 upon EOF. */
+
+static size_t
+read_and_delete (char *buf, size_t size)
+{
+ size_t n_saved;
+
+ /* This enclosing do-while loop is to make sure that
+ we don't return zero (indicating EOF) when we've
+ just deleted all the characters in a buffer. */
+ do
+ {
+ size_t i;
+ size_t nr = plain_read (buf, size);
+
+ if (nr == 0)
+ return 0;
+
+ /* This first loop may be a waste of code, but gives much
+ better performance when no characters are deleted in
+ the beginning of a buffer. It just avoids the copying
+ of buf[i] into buf[n_saved] when it would be a NOP. */
+
+ for (i = 0; i < nr && !in_delete_set[to_uchar (buf[i])]; i++)
+ continue;
+ n_saved = i;
+
+ for (++i; i < nr; i++)
+ if (!in_delete_set[to_uchar (buf[i])])
+ buf[n_saved++] = buf[i];
+ }
+ while (n_saved == 0);
+
+ return n_saved;
+}
+
+/* Read at most SIZE bytes from stdin into the array BUF. Then
+ perform the in-place and one-to-one mapping specified by the global
+ array `xlate'. Return the number of characters read, or 0 upon EOF. */
+
+static size_t
+read_and_xlate (char *buf, size_t size)
+{
+ size_t bytes_read = plain_read (buf, size);
+ size_t i;
+
+ for (i = 0; i < bytes_read; i++)
+ buf[i] = xlate[to_uchar (buf[i])];
+
+ return bytes_read;
+}
+
+/* Initialize a boolean membership set, IN_SET, with the character
+ values obtained by traversing the linked list of constructs S
+ using the function `get_next'. IN_SET is expected to have been
+ initialized to all zeros by the caller. If COMPLEMENT_THIS_SET
+ is true the resulting set is complemented. */
+
+static void
+set_initialize (struct Spec_list *s, bool complement_this_set, bool *in_set)
+{
+ int c;
+ size_t i;
+
+ s->state = BEGIN_STATE;
+ while ((c = get_next (s, NULL)) != -1)
+ in_set[c] = true;
+ if (complement_this_set)
+ for (i = 0; i < N_CHARS; i++)
+ in_set[i] = (!in_set[i]);
+}
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ int non_option_args;
+ int min_operands;
+ int max_operands;
+ struct Spec_list buf1, buf2;
+ struct Spec_list *s1 = &buf1;
+ struct Spec_list *s2 = &buf2;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ while ((c = getopt_long (argc, argv, "+cCdst", long_options, NULL)) != -1)
+ {
+ switch (c)
+ {
+ case 'c':
+ case 'C':
+ complement = true;
+ break;
+
+ case 'd':
+ delete = true;
+ break;
+
+ case 's':
+ squeeze_repeats = true;
+ break;
+
+ case 't':
+ truncate_set1 = true;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ break;
+ }
+ }
+
+ non_option_args = argc - optind;
+ translating = (non_option_args == 2 && !delete);
+ min_operands = 1 + (delete == squeeze_repeats);
+ max_operands = 1 + (delete <= squeeze_repeats);
+
+ if (non_option_args < min_operands)
+ {
+ if (non_option_args == 0)
+ error (0, 0, _("missing operand"));
+ else
+ {
+ error (0, 0, _("missing operand after %s"), quote (argv[argc - 1]));
+ fprintf (stderr, "%s\n",
+ _(squeeze_repeats
+ ? ("Two strings must be given when "
+ "both deleting and squeezing repeats.")
+ : "Two strings must be given when translating."));
+ }
+ usage (EXIT_FAILURE);
+ }
+
+ if (max_operands < non_option_args)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind + max_operands]));
+ if (non_option_args == 2)
+ fprintf (stderr, "%s\n",
+ _("Only one string may be given when "
+ "deleting without squeezing repeats."));
+ usage (EXIT_FAILURE);
+ }
+
+ spec_init (s1);
+ if (!parse_str (argv[optind], s1))
+ exit (EXIT_FAILURE);
+
+ if (non_option_args == 2)
+ {
+ spec_init (s2);
+ if (!parse_str (argv[optind + 1], s2))
+ exit (EXIT_FAILURE);
+ }
+ else
+ s2 = NULL;
+
+ validate (s1, s2);
+
+ /* Use binary I/O, since `tr' is sometimes used to transliterate
+ non-printable characters, or characters which are stripped away
+ by text-mode reads (like CR and ^Z). */
+ if (O_BINARY && ! isatty (STDIN_FILENO))
+ freopen (NULL, "rb", stdin);
+ if (O_BINARY && ! isatty (STDOUT_FILENO))
+ freopen (NULL, "wb", stdout);
+
+ if (squeeze_repeats && non_option_args == 1)
+ {
+ set_initialize (s1, complement, in_squeeze_set);
+ squeeze_filter (io_buf, sizeof io_buf, plain_read);
+ }
+ else if (delete && non_option_args == 1)
+ {
+ set_initialize (s1, complement, in_delete_set);
+
+ for (;;)
+ {
+ size_t nr = read_and_delete (io_buf, sizeof io_buf);
+ if (nr == 0)
+ break;
+ if (fwrite (io_buf, 1, nr, stdout) != nr)
+ error (EXIT_FAILURE, errno, _("write error"));
+ }
+ }
+ else if (squeeze_repeats && delete && non_option_args == 2)
+ {
+ set_initialize (s1, complement, in_delete_set);
+ set_initialize (s2, false, in_squeeze_set);
+ squeeze_filter (io_buf, sizeof io_buf, read_and_delete);
+ }
+ else if (translating)
+ {
+ if (complement)
+ {
+ int i;
+ bool *in_s1 = in_delete_set;
+
+ set_initialize (s1, false, in_s1);
+ s2->state = BEGIN_STATE;
+ for (i = 0; i < N_CHARS; i++)
+ xlate[i] = i;
+ for (i = 0; i < N_CHARS; i++)
+ {
+ if (!in_s1[i])
+ {
+ int ch = get_next (s2, NULL);
+ assert (ch != -1 || truncate_set1);
+ if (ch == -1)
+ {
+ /* This will happen when tr is invoked like e.g.
+ tr -cs A-Za-z0-9 '\012'. */
+ break;
+ }
+ xlate[i] = ch;
+ }
+ }
+ assert (get_next (s2, NULL) == -1 || truncate_set1);
+ }
+ else
+ {
+ int c1, c2;
+ int i;
+ enum Upper_Lower_class class_s1;
+ enum Upper_Lower_class class_s2;
+
+ for (i = 0; i < N_CHARS; i++)
+ xlate[i] = i;
+ s1->state = BEGIN_STATE;
+ s2->state = BEGIN_STATE;
+ for (;;)
+ {
+ c1 = get_next (s1, &class_s1);
+ c2 = get_next (s2, &class_s2);
+
+ /* When constructing the translation array, either one of the
+ values returned by paired calls to get_next must be from
+ [:upper:] and the other is [:lower:], or neither can be from
+ upper or lower. */
+
+ if ((class_s1 == UL_NONE) != (class_s2 == UL_NONE))
+ error (EXIT_FAILURE, 0,
+ _("misaligned [:upper:] and/or [:lower:] construct"));
+
+ if (class_s1 == UL_LOWER && class_s2 == UL_UPPER)
+ {
+ for (i = 0; i < N_CHARS; i++)
+ if (islower (i))
+ xlate[i] = toupper (i);
+ }
+ else if (class_s1 == UL_UPPER && class_s2 == UL_LOWER)
+ {
+ for (i = 0; i < N_CHARS; i++)
+ if (isupper (i))
+ xlate[i] = tolower (i);
+ }
+ else if ((class_s1 == UL_LOWER && class_s2 == UL_LOWER)
+ || (class_s1 == UL_UPPER && class_s2 == UL_UPPER))
+ {
+ /* POSIX says the behavior of `tr "[:upper:]" "[:upper:]"'
+ is undefined. Treat it as a no-op. */
+ }
+ else
+ {
+ /* The following should have been checked by validate... */
+ if (c1 == -1 || c2 == -1)
+ break;
+ xlate[c1] = c2;
+ }
+ }
+ assert (c1 == -1 || truncate_set1);
+ }
+ if (squeeze_repeats)
+ {
+ set_initialize (s2, false, in_squeeze_set);
+ squeeze_filter (io_buf, sizeof io_buf, read_and_xlate);
+ }
+ else
+ {
+ for (;;)
+ {
+ size_t bytes_read = read_and_xlate (io_buf, sizeof io_buf);
+ if (bytes_read == 0)
+ break;
+ if (fwrite (io_buf, 1, bytes_read, stdout) != bytes_read)
+ error (EXIT_FAILURE, errno, _("write error"));
+ }
+ }
+ }
+
+ if (close (STDIN_FILENO) != 0)
+ error (EXIT_FAILURE, errno, _("standard input"));
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/true.c b/src/true.c
new file mode 100644
index 0000000..55490f9
--- /dev/null
+++ b/src/true.c
@@ -0,0 +1,82 @@
+/* Exit with a status code indicating success.
+ Copyright (C) 1999-2003, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include "system.h"
+
+/* Act like "true" by default; false.c overrides this. */
+#ifndef EXIT_STATUS
+# define EXIT_STATUS EXIT_SUCCESS
+#endif
+
+#if EXIT_STATUS == EXIT_SUCCESS
+# define PROGRAM_NAME "true"
+#else
+# define PROGRAM_NAME "false"
+#endif
+
+#define AUTHORS "Jim Meyering"
+
+/* The name this program was run with. */
+char *program_name;
+
+void
+usage (int status)
+{
+ printf (_("\
+Usage: %s [ignored command line arguments]\n\
+ or: %s OPTION\n\
+"),
+ program_name, program_name);
+ printf ("%s\n\n",
+ _(EXIT_STATUS == EXIT_SUCCESS
+ ? "Exit with a status code indicating success."
+ : "Exit with a status code indicating failure."));
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (USAGE_BUILTIN_WARNING, PROGRAM_NAME);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ /* Recognize --help or --version only if it's the only command-line
+ argument. */
+ if (argc == 2)
+ {
+ if (STREQ (argv[1], "--help"))
+ usage (EXIT_STATUS);
+
+ if (STREQ (argv[1], "--version"))
+ version_etc (stdout, PROGRAM_NAME, GNU_PACKAGE, VERSION, AUTHORS,
+ (char *) NULL);
+ }
+
+ exit (EXIT_STATUS);
+}
diff --git a/src/tsort.c b/src/tsort.c
new file mode 100644
index 0000000..9393232
--- /dev/null
+++ b/src/tsort.c
@@ -0,0 +1,559 @@
+/* tsort - topological sort.
+ Copyright (C) 1998-2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Mark Kettenis <kettenis@phys.uva.nl>. */
+
+/* The topological sort is done according to Algorithm T (Topological
+ sort) in Donald E. Knuth, The Art of Computer Programming, Volume
+ 1/Fundamental Algorithms, page 262. */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <assert.h>
+#include <getopt.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "long-options.h"
+#include "error.h"
+#include "quote.h"
+#include "readtokens.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "tsort"
+
+#define AUTHORS "Mark Kettenis"
+
+/* Token delimiters when reading from a file. */
+#define DELIM " \t\n"
+
+/* Members of the list of successors. */
+struct successor
+{
+ struct item *suc;
+ struct successor *next;
+};
+
+/* Each string is held in core as the head of a list of successors. */
+struct item
+{
+ const char *str;
+ struct item *left, *right;
+ int balance; /* -1, 0, or +1 */
+ size_t count;
+ struct item *qlink;
+ struct successor *top;
+};
+
+/* The name this program was run with. */
+char *program_name;
+
+/* The head of the sorted list. */
+static struct item *head = NULL;
+
+/* The tail of the list of `zeros', strings that have no predecessors. */
+static struct item *zeros = NULL;
+
+/* Used for loop detection. */
+static struct item *loop = NULL;
+
+/* The number of strings to sort. */
+static size_t n_strings = 0;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION] [FILE]\n\
+Write totally ordered list consistent with the partial ordering in FILE.\n\
+With no FILE, or when FILE is -, read standard input.\n\
+\n\
+"), program_name);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+
+ exit (status);
+}
+
+/* Create a new item/node for STR. */
+static struct item *
+new_item (const char *str)
+{
+ struct item *k = xmalloc (sizeof *k);
+
+ k->str = (str ? xstrdup (str): NULL);
+ k->left = k->right = NULL;
+ k->balance = 0;
+
+ /* T1. Initialize (COUNT[k] <- 0 and TOP[k] <- ^). */
+ k->count = 0;
+ k->qlink = NULL;
+ k->top = NULL;
+
+ return k;
+}
+
+/* Search binary tree rooted at *ROOT for STR. Allocate a new tree if
+ *ROOT is NULL. Insert a node/item for STR if not found. Return
+ the node/item found/created for STR.
+
+ This is done according to Algorithm A (Balanced tree search and
+ insertion) in Donald E. Knuth, The Art of Computer Programming,
+ Volume 3/Searching and Sorting, pages 455--457. */
+
+static struct item *
+search_item (struct item *root, const char *str)
+{
+ struct item *p, *q, *r, *s, *t;
+ int a;
+
+ assert (root);
+
+ /* Make sure the tree is not empty, since that is what the algorithm
+ below expects. */
+ if (root->right == NULL)
+ return (root->right = new_item (str));
+
+ /* A1. Initialize. */
+ t = root;
+ s = p = root->right;
+
+ for (;;)
+ {
+ /* A2. Compare. */
+ a = strcmp (str, p->str);
+ if (a == 0)
+ return p;
+
+ /* A3 & A4. Move left & right. */
+ if (a < 0)
+ q = p->left;
+ else
+ q = p->right;
+
+ if (q == NULL)
+ {
+ /* A5. Insert. */
+ q = new_item (str);
+
+ /* A3 & A4. (continued). */
+ if (a < 0)
+ p->left = q;
+ else
+ p->right = q;
+
+ /* A6. Adjust balance factors. */
+ assert (!STREQ (str, s->str));
+ if (strcmp (str, s->str) < 0)
+ {
+ r = p = s->left;
+ a = -1;
+ }
+ else
+ {
+ r = p = s->right;
+ a = 1;
+ }
+
+ while (p != q)
+ {
+ assert (!STREQ (str, p->str));
+ if (strcmp (str, p->str) < 0)
+ {
+ p->balance = -1;
+ p = p->left;
+ }
+ else
+ {
+ p->balance = 1;
+ p = p->right;
+ }
+ }
+
+ /* A7. Balancing act. */
+ if (s->balance == 0 || s->balance == -a)
+ {
+ s->balance += a;
+ return q;
+ }
+
+ if (r->balance == a)
+ {
+ /* A8. Single Rotation. */
+ p = r;
+ if (a < 0)
+ {
+ s->left = r->right;
+ r->right = s;
+ }
+ else
+ {
+ s->right = r->left;
+ r->left = s;
+ }
+ s->balance = r->balance = 0;
+ }
+ else
+ {
+ /* A9. Double rotation. */
+ if (a < 0)
+ {
+ p = r->right;
+ r->right = p->left;
+ p->left = r;
+ s->left = p->right;
+ p->right = s;
+ }
+ else
+ {
+ p = r->left;
+ r->left = p->right;
+ p->right = r;
+ s->right = p->left;
+ p->left = s;
+ }
+
+ s->balance = 0;
+ r->balance = 0;
+ if (p->balance == a)
+ s->balance = -a;
+ else if (p->balance == -a)
+ r->balance = a;
+ p->balance = 0;
+ }
+
+ /* A10. Finishing touch. */
+ if (s == t->right)
+ t->right = p;
+ else
+ t->left = p;
+
+ return q;
+ }
+
+ /* A3 & A4. (continued). */
+ if (q->balance)
+ {
+ t = p;
+ s = q;
+ }
+
+ p = q;
+ }
+
+ /* NOTREACHED */
+}
+
+/* Record the fact that J precedes K. */
+
+static void
+record_relation (struct item *j, struct item *k)
+{
+ struct successor *p;
+
+ if (!STREQ (j->str, k->str))
+ {
+ k->count++;
+ p = xmalloc (sizeof *p);
+ p->suc = k;
+ p->next = j->top;
+ j->top = p;
+ }
+}
+
+static bool
+count_items (struct item *unused ATTRIBUTE_UNUSED)
+{
+ n_strings++;
+ return false;
+}
+
+static bool
+scan_zeros (struct item *k)
+{
+ /* Ignore strings that have already been printed. */
+ if (k->count == 0 && k->str)
+ {
+ if (head == NULL)
+ head = k;
+ else
+ zeros->qlink = k;
+
+ zeros = k;
+ }
+
+ return false;
+}
+
+/* Try to detect the loop. If we have detected that K is part of a
+ loop, print the loop on standard error, remove a relation to break
+ the loop, and return true.
+
+ The loop detection strategy is as follows: Realise that what we're
+ dealing with is essentially a directed graph. If we find an item
+ that is part of a graph that contains a cycle we traverse the graph
+ in backwards direction. In general there is no unique way to do
+ this, but that is no problem. If we encounter an item that we have
+ encountered before, we know that we've found a cycle. All we have
+ to do now is retrace our steps, printing out the items until we
+ encounter that item again. (This is not necessarily the item that
+ we started from originally.) Since the order in which the items
+ are stored in the tree is not related to the specified partial
+ ordering, we may need to walk the tree several times before the
+ loop has completely been constructed. If the loop was found, the
+ global variable LOOP will be NULL. */
+
+static bool
+detect_loop (struct item *k)
+{
+ if (k->count > 0)
+ {
+ /* K does not have to be part of a cycle. It is however part of
+ a graph that contains a cycle. */
+
+ if (loop == NULL)
+ /* Start traversing the graph at K. */
+ loop = k;
+ else
+ {
+ struct successor **p = &k->top;
+
+ while (*p)
+ {
+ if ((*p)->suc == loop)
+ {
+ if (k->qlink)
+ {
+ /* We have found a loop. Retrace our steps. */
+ while (loop)
+ {
+ struct item *tmp = loop->qlink;
+
+ fprintf (stderr, "%s: %s\n", program_name,
+ loop->str);
+
+ /* Until we encounter K again. */
+ if (loop == k)
+ {
+ /* Remove relation. */
+ (*p)->suc->count--;
+ *p = (*p)->next;
+ break;
+ }
+
+ /* Tidy things up since we might have to
+ detect another loop. */
+ loop->qlink = NULL;
+ loop = tmp;
+ }
+
+ while (loop)
+ {
+ struct item *tmp = loop->qlink;
+
+ loop->qlink = NULL;
+ loop = tmp;
+ }
+
+ /* Since we have found the loop, stop walking
+ the tree. */
+ return true;
+ }
+ else
+ {
+ k->qlink = loop;
+ loop = k;
+ break;
+ }
+ }
+
+ p = &(*p)->next;
+ }
+ }
+ }
+
+ return false;
+}
+
+/* Recurse (sub)tree rooted at ROOT, calling ACTION for each node.
+ Stop when ACTION returns true. */
+
+static bool
+recurse_tree (struct item *root, bool (*action) (struct item *))
+{
+ if (root->left == NULL && root->right == NULL)
+ return (*action) (root);
+ else
+ {
+ if (root->left != NULL)
+ if (recurse_tree (root->left, action))
+ return true;
+ if ((*action) (root))
+ return true;
+ if (root->right != NULL)
+ if (recurse_tree (root->right, action))
+ return true;
+ }
+
+ return false;
+}
+
+/* Walk the tree specified by the head ROOT, calling ACTION for
+ each node. */
+
+static void
+walk_tree (struct item *root, bool (*action) (struct item *))
+{
+ if (root->right)
+ recurse_tree (root->right, action);
+}
+
+/* Do a topological sort on FILE. Return true if successful. */
+
+static bool
+tsort (const char *file)
+{
+ bool ok = true;
+ struct item *root;
+ struct item *j = NULL;
+ struct item *k = NULL;
+ token_buffer tokenbuffer;
+ bool is_stdin = STREQ (file, "-");
+
+ /* Intialize the head of the tree will hold the strings we're sorting. */
+ root = new_item (NULL);
+
+ if (!is_stdin && ! freopen (file, "r", stdin))
+ error (EXIT_FAILURE, errno, "%s", file);
+
+ init_tokenbuffer (&tokenbuffer);
+
+ while (1)
+ {
+ /* T2. Next Relation. */
+ size_t len = readtoken (stdin, DELIM, sizeof (DELIM) - 1, &tokenbuffer);
+ if (len == (size_t) -1)
+ break;
+
+ assert (len != 0);
+
+ k = search_item (root, tokenbuffer.buffer);
+ if (j)
+ {
+ /* T3. Record the relation. */
+ record_relation (j, k);
+ k = NULL;
+ }
+
+ j = k;
+ }
+
+ if (k != NULL)
+ error (EXIT_FAILURE, 0, _("%s: input contains an odd number of tokens"),
+ file);
+
+ /* T1. Initialize (N <- n). */
+ walk_tree (root, count_items);
+
+ while (n_strings > 0)
+ {
+ /* T4. Scan for zeros. */
+ walk_tree (root, scan_zeros);
+
+ while (head)
+ {
+ struct successor *p = head->top;
+
+ /* T5. Output front of queue. */
+ printf ("%s\n", head->str);
+ head->str = NULL; /* Avoid printing the same string twice. */
+ n_strings--;
+
+ /* T6. Erase relations. */
+ while (p)
+ {
+ p->suc->count--;
+ if (p->suc->count == 0)
+ {
+ zeros->qlink = p->suc;
+ zeros = p->suc;
+ }
+
+ p = p->next;
+ }
+
+ /* T7. Remove from queue. */
+ head = head->qlink;
+ }
+
+ /* T8. End of process. */
+ if (n_strings > 0)
+ {
+ /* The input contains a loop. */
+ error (0, 0, _("%s: input contains a loop:"), file);
+ ok = false;
+
+ /* Print the loop and remove a relation to break it. */
+ do
+ walk_tree (root, detect_loop);
+ while (loop);
+ }
+ }
+
+ if (fclose (stdin) != 0)
+ error (EXIT_FAILURE, errno, "%s",
+ is_stdin ? _("standard input") : quote (file));
+
+ return ok;
+}
+
+int
+main (int argc, char **argv)
+{
+ bool ok;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "", NULL, NULL) != -1)
+ usage (EXIT_FAILURE);
+
+ if (1 < argc - optind)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind + 1]));
+ usage (EXIT_FAILURE);
+ }
+
+ ok = tsort (optind == argc ? "-" : argv[optind]);
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/tty.c b/src/tty.c
new file mode 100644
index 0000000..5228e7a
--- /dev/null
+++ b/src/tty.c
@@ -0,0 +1,129 @@
+/* tty -- print the name of the terminal connected to standard input
+ Copyright (C) 1990-2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Displays "not a tty" if stdin is not a terminal.
+ Displays nothing if -s option is given.
+ Exit status 0 if stdin is a tty, 1 if not, 2 if usage error,
+ 3 if write error.
+
+ Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "error.h"
+#include "quote.h"
+
+/* Exit statuses. */
+enum
+ {
+ TTY_FAILURE = 2,
+ TTY_WRITE_ERROR = 3
+ };
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "tty"
+
+#define AUTHORS "David MacKenzie"
+
+/* The name under which this program was run. */
+char *program_name;
+
+/* If true, return an exit status but produce no output. */
+static bool silent;
+
+static struct option const longopts[] =
+{
+ {"silent", no_argument, NULL, 's'},
+ {"quiet", no_argument, NULL, 's'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]...\n"), program_name);
+ fputs (_("\
+Print the file name of the terminal connected to standard input.\n\
+\n\
+ -s, --silent, --quiet print nothing, only return an exit status\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ char *tty;
+ int optc;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ initialize_exit_failure (TTY_WRITE_ERROR);
+ atexit (close_stdout);
+
+ silent = false;
+
+ while ((optc = getopt_long (argc, argv, "s", longopts, NULL)) != -1)
+ {
+ switch (optc)
+ {
+ case 's':
+ silent = true;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (TTY_FAILURE);
+ }
+ }
+
+ if (optind < argc)
+ error (0, 0, _("extra operand %s"), quote (argv[optind]));
+
+ tty = ttyname (STDIN_FILENO);
+ if (!silent)
+ {
+ if (tty)
+ puts (tty);
+ else
+ puts (_("not a tty"));
+ }
+
+ exit (isatty (STDIN_FILENO) ? EXIT_SUCCESS : EXIT_FAIL);
+}
diff --git a/src/uname.c b/src/uname.c
new file mode 100644
index 0000000..0715e07
--- /dev/null
+++ b/src/uname.c
@@ -0,0 +1,325 @@
+/* uname -- print system information
+
+ Copyright (C) 1989, 1992, 1993, 1996, 1997, 1999, 2000, 2001, 2002,
+ 2003, 2004, 2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by David MacKenzie <djm@gnu.ai.mit.edu> */
+
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/utsname.h>
+#include <getopt.h>
+
+#if HAVE_SYSINFO && HAVE_SYS_SYSTEMINFO_H
+# include <sys/systeminfo.h>
+#endif
+
+#if HAVE_SYS_SYSCTL_H
+# if HAVE_SYS_PARAM_H
+# include <sys/param.h> /* needed for OpenBSD 3.0 */
+# endif
+# include <sys/sysctl.h>
+# ifdef HW_MODEL
+# ifdef HW_MACHINE_ARCH
+/* E.g., FreeBSD 4.5, NetBSD 1.5.2 */
+# define UNAME_HARDWARE_PLATFORM HW_MODEL
+# define UNAME_PROCESSOR HW_MACHINE_ARCH
+# else
+/* E.g., OpenBSD 3.0 */
+# define UNAME_PROCESSOR HW_MODEL
+# endif
+# endif
+#endif
+
+#ifdef __APPLE__
+# include <mach/machine.h>
+# include <mach-o/arch.h>
+#endif
+
+#include "system.h"
+#include "error.h"
+#include "quote.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "uname"
+
+#define AUTHORS "David MacKenzie"
+
+/* Values that are bitwise or'd into `toprint'. */
+/* Kernel name. */
+#define PRINT_KERNEL_NAME 1
+
+/* Node name on a communications network. */
+#define PRINT_NODENAME 2
+
+/* Kernel release. */
+#define PRINT_KERNEL_RELEASE 4
+
+/* Kernel version. */
+#define PRINT_KERNEL_VERSION 8
+
+/* Machine hardware name. */
+#define PRINT_MACHINE 16
+
+/* Processor type. */
+#define PRINT_PROCESSOR 32
+
+/* Hardware platform. */
+#define PRINT_HARDWARE_PLATFORM 64
+
+/* Operating system. */
+#define PRINT_OPERATING_SYSTEM 128
+
+/* The name this program was run with, for error messages. */
+char *program_name;
+
+static struct option const long_options[] =
+{
+ {"all", no_argument, NULL, 'a'},
+ {"kernel-name", no_argument, NULL, 's'},
+ {"sysname", no_argument, NULL, 's'}, /* Obsolescent. */
+ {"nodename", no_argument, NULL, 'n'},
+ {"kernel-release", no_argument, NULL, 'r'},
+ {"release", no_argument, NULL, 'r'}, /* Obsolescent. */
+ {"kernel-version", no_argument, NULL, 'v'},
+ {"machine", no_argument, NULL, 'm'},
+ {"processor", no_argument, NULL, 'p'},
+ {"hardware-platform", no_argument, NULL, 'i'},
+ {"operating-system", no_argument, NULL, 'o'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]...\n"), program_name);
+ fputs (_("\
+Print certain system information. With no OPTION, same as -s.\n\
+\n\
+ -a, --all print all information, in the following order,\n\
+ except omit -p and -i if unknown:\n\
+ -s, --kernel-name print the kernel name\n\
+ -n, --nodename print the network node hostname\n\
+ -r, --kernel-release print the kernel release\n\
+"), stdout);
+ fputs (_("\
+ -v, --kernel-version print the kernel version\n\
+ -m, --machine print the machine hardware name\n\
+ -p, --processor print the processor type or \"unknown\"\n\
+ -i, --hardware-platform print the hardware platform or \"unknown\"\n\
+ -o, --operating-system print the operating system\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Print ELEMENT, preceded by a space if something has already been
+ printed. */
+
+static void
+print_element (char const *element)
+{
+ static bool printed;
+ if (printed)
+ putchar (' ');
+ printed = true;
+ fputs (element, stdout);
+}
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ static char const unknown[] = "unknown";
+
+ /* Mask indicating which elements to print. */
+ unsigned int toprint = 0;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ while ((c = getopt_long (argc, argv, "asnrvmpio", long_options, NULL)) != -1)
+ {
+ switch (c)
+ {
+ case 'a':
+ toprint = UINT_MAX;
+ break;
+
+ case 's':
+ toprint |= PRINT_KERNEL_NAME;
+ break;
+
+ case 'n':
+ toprint |= PRINT_NODENAME;
+ break;
+
+ case 'r':
+ toprint |= PRINT_KERNEL_RELEASE;
+ break;
+
+ case 'v':
+ toprint |= PRINT_KERNEL_VERSION;
+ break;
+
+ case 'm':
+ toprint |= PRINT_MACHINE;
+ break;
+
+ case 'p':
+ toprint |= PRINT_PROCESSOR;
+ break;
+
+ case 'i':
+ toprint |= PRINT_HARDWARE_PLATFORM;
+ break;
+
+ case 'o':
+ toprint |= PRINT_OPERATING_SYSTEM;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (argc != optind)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind]));
+ usage (EXIT_FAILURE);
+ }
+
+ if (toprint == 0)
+ toprint = PRINT_KERNEL_NAME;
+
+ if (toprint
+ & (PRINT_KERNEL_NAME | PRINT_NODENAME | PRINT_KERNEL_RELEASE
+ | PRINT_KERNEL_VERSION | PRINT_MACHINE))
+ {
+ struct utsname name;
+
+ if (uname (&name) == -1)
+ error (EXIT_FAILURE, errno, _("cannot get system name"));
+
+ if (toprint & PRINT_KERNEL_NAME)
+ print_element (name.sysname);
+ if (toprint & PRINT_NODENAME)
+ print_element (name.nodename);
+ if (toprint & PRINT_KERNEL_RELEASE)
+ print_element (name.release);
+ if (toprint & PRINT_KERNEL_VERSION)
+ print_element (name.version);
+ if (toprint & PRINT_MACHINE)
+ print_element (name.machine);
+ }
+
+ if (toprint & PRINT_PROCESSOR)
+ {
+ char const *element = unknown;
+#if HAVE_SYSINFO && defined SI_ARCHITECTURE
+ {
+ static char processor[257];
+ if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor))
+ element = processor;
+ }
+#endif
+#ifdef UNAME_PROCESSOR
+ if (element == unknown)
+ {
+ static char processor[257];
+ size_t s = sizeof processor;
+ static int mib[] = { CTL_HW, UNAME_PROCESSOR };
+ if (sysctl (mib, 2, processor, &s, 0, 0) >= 0)
+ element = processor;
+
+# ifdef __APPLE__
+ /* This kludge works around a bug in Mac OS X. */
+ if (element == unknown)
+ {
+ cpu_type_t cputype;
+ size_t s = sizeof cputype;
+ NXArchInfo const *ai;
+ if (sysctlbyname ("hw.cputype", &cputype, &s, NULL, 0) == 0
+ && (ai = NXGetArchInfoFromCpuType (cputype,
+ CPU_SUBTYPE_MULTIPLE))
+ != NULL)
+ element = ai->name;
+
+ /* Hack "safely" around the ppc vs. powerpc return value. */
+ if (cputype == CPU_TYPE_POWERPC
+ && strncmp (element, "ppc", 3) == 0)
+ element = "powerpc";
+ }
+# endif
+ }
+#endif
+ if (! (toprint == UINT_MAX && element == unknown))
+ print_element (element);
+ }
+
+ if (toprint & PRINT_HARDWARE_PLATFORM)
+ {
+ char const *element = unknown;
+#if HAVE_SYSINFO && defined SI_PLATFORM
+ {
+ static char hardware_platform[257];
+ if (0 <= sysinfo (SI_PLATFORM,
+ hardware_platform, sizeof hardware_platform))
+ element = hardware_platform;
+ }
+#endif
+#ifdef UNAME_HARDWARE_PLATFORM
+ if (element == unknown)
+ {
+ static char hardware_platform[257];
+ size_t s = sizeof hardware_platform;
+ static int mib[] = { CTL_HW, UNAME_HARDWARE_PLATFORM };
+ if (sysctl (mib, 2, hardware_platform, &s, 0, 0) >= 0)
+ element = hardware_platform;
+ }
+#endif
+ if (! (toprint == UINT_MAX && element == unknown))
+ print_element (element);
+ }
+
+ if (toprint & PRINT_OPERATING_SYSTEM)
+ print_element (HOST_OPERATING_SYSTEM);
+
+ putchar ('\n');
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/unexpand.c b/src/unexpand.c
new file mode 100644
index 0000000..cbceca0
--- /dev/null
+++ b/src/unexpand.c
@@ -0,0 +1,540 @@
+/* unexpand - convert blanks to tabs
+ Copyright (C) 89, 91, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* By default, convert only maximal strings of initial blanks and tabs
+ into tabs.
+ Preserves backspace characters in the output; they decrement the
+ column count for tab calculations.
+ The default action is equivalent to -8.
+
+ Options:
+ --tabs=tab1[,tab2[,...]]
+ -t tab1[,tab2[,...]]
+ -tab1[,tab2[,...]] If only one tab stop is given, set the tabs tab1
+ columns apart instead of the default 8. Otherwise,
+ set the tabs at columns tab1, tab2, etc. (numbered from
+ 0); preserve any blanks beyond the tab stops given.
+ --all
+ -a Use tabs wherever they would replace 2 or more blanks,
+ not just at the beginnings of lines.
+
+ David MacKenzie <djm@gnu.ai.mit.edu> */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+#include "system.h"
+#include "error.h"
+#include "quote.h"
+#include "xstrndup.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "unexpand"
+
+#define AUTHORS "David MacKenzie"
+
+/* The number of bytes added at a time to the amount of memory
+ allocated for the output line. */
+#define OUTPUT_BLOCK 256
+
+/* The name this program was run with. */
+char *program_name;
+
+/* If true, convert blanks even after nonblank characters have been
+ read on the line. */
+static bool convert_entire_line;
+
+/* If nonzero, the size of all tab stops. If zero, use `tab_list' instead. */
+static size_t tab_size;
+
+/* The maximum distance between tab stops. */
+static size_t max_column_width;
+
+/* Array of the explicit column numbers of the tab stops;
+ after `tab_list' is exhausted, the rest of the line is printed
+ unchanged. The first column is column 0. */
+static uintmax_t *tab_list;
+
+/* The number of allocated entries in `tab_list'. */
+static size_t n_tabs_allocated;
+
+/* The index of the first invalid element of `tab_list',
+ where the next element can be added. */
+static size_t first_free_tab;
+
+/* Null-terminated array of input filenames. */
+static char **file_list;
+
+/* Default for `file_list' if no files are given on the command line. */
+static char *stdin_argv[] =
+{
+ "-", NULL
+};
+
+/* True if we have ever read standard input. */
+static bool have_read_stdin;
+
+/* The desired exit status. */
+static int exit_status;
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ CONVERT_FIRST_ONLY_OPTION = CHAR_MAX + 1
+};
+
+static struct option const longopts[] =
+{
+ {"tabs", required_argument, NULL, 't'},
+ {"all", no_argument, NULL, 'a'},
+ {"first-only", no_argument, NULL, CONVERT_FIRST_ONLY_OPTION},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [FILE]...\n\
+"),
+ program_name);
+ fputs (_("\
+Convert blanks in each FILE to tabs, writing to standard output.\n\
+With no FILE, or when FILE is -, read standard input.\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -a, --all convert all blanks, instead of just initial blanks\n\
+ --first-only convert only leading sequences of blanks (overrides -a)\n\
+ -t, --tabs=N have tabs N characters apart instead of 8 (enables -a)\n\
+ -t, --tabs=LIST use comma separated LIST of tab positions (enables -a)\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Add tab stop TABVAL to the end of `tab_list'. */
+
+static void
+add_tab_stop (uintmax_t tabval)
+{
+ uintmax_t prev_column = first_free_tab ? tab_list[first_free_tab - 1] : 0;
+ uintmax_t column_width = prev_column <= tabval ? tabval - prev_column : 0;
+
+ if (first_free_tab == n_tabs_allocated)
+ tab_list = X2NREALLOC (tab_list, &n_tabs_allocated);
+ tab_list[first_free_tab++] = tabval;
+
+ if (max_column_width < column_width)
+ {
+ if (SIZE_MAX < column_width)
+ error (EXIT_FAILURE, 0, _("tabs are too far apart"));
+ max_column_width = column_width;
+ }
+}
+
+/* Add the comma or blank separated list of tab stops STOPS
+ to the list of tab stops. */
+
+static void
+parse_tab_stops (char const *stops)
+{
+ bool have_tabval = false;
+ uintmax_t tabval IF_LINT (= 0);
+ char const *num_start IF_LINT (= NULL);
+ bool ok = true;
+
+ for (; *stops; stops++)
+ {
+ if (*stops == ',' || isblank (to_uchar (*stops)))
+ {
+ if (have_tabval)
+ add_tab_stop (tabval);
+ have_tabval = false;
+ }
+ else if (ISDIGIT (*stops))
+ {
+ if (!have_tabval)
+ {
+ tabval = 0;
+ have_tabval = true;
+ num_start = stops;
+ }
+
+ /* Detect overflow. */
+ if (!DECIMAL_DIGIT_ACCUMULATE (tabval, *stops - '0', uintmax_t))
+ {
+ size_t len = strspn (num_start, "0123456789");
+ char *bad_num = xstrndup (num_start, len);
+ error (0, 0, _("tab stop is too large %s"), quote (bad_num));
+ free (bad_num);
+ ok = false;
+ stops = num_start + len - 1;
+ }
+ }
+ else
+ {
+ error (0, 0, _("tab size contains invalid character(s): %s"),
+ quote (stops));
+ ok = false;
+ break;
+ }
+ }
+
+ if (!ok)
+ exit (EXIT_FAILURE);
+
+ if (have_tabval)
+ add_tab_stop (tabval);
+}
+
+/* Check that the list of tab stops TABS, with ENTRIES entries,
+ contains only nonzero, ascending values. */
+
+static void
+validate_tab_stops (uintmax_t const *tabs, size_t entries)
+{
+ uintmax_t prev_tab = 0;
+ size_t i;
+
+ for (i = 0; i < entries; i++)
+ {
+ if (tabs[i] == 0)
+ error (EXIT_FAILURE, 0, _("tab size cannot be 0"));
+ if (tabs[i] <= prev_tab)
+ error (EXIT_FAILURE, 0, _("tab sizes must be ascending"));
+ prev_tab = tabs[i];
+ }
+}
+
+/* Close the old stream pointer FP if it is non-NULL,
+ and return a new one opened to read the next input file.
+ Open a filename of `-' as the standard input.
+ Return NULL if there are no more input files. */
+
+static FILE *
+next_file (FILE *fp)
+{
+ static char *prev_file;
+ char *file;
+
+ if (fp)
+ {
+ if (ferror (fp))
+ {
+ error (0, errno, "%s", prev_file);
+ exit_status = EXIT_FAILURE;
+ }
+ if (STREQ (prev_file, "-"))
+ clearerr (fp); /* Also clear EOF. */
+ else if (fclose (fp) != 0)
+ {
+ error (0, errno, "%s", prev_file);
+ exit_status = EXIT_FAILURE;
+ }
+ }
+
+ while ((file = *file_list++) != NULL)
+ {
+ if (STREQ (file, "-"))
+ {
+ have_read_stdin = true;
+ prev_file = file;
+ return stdin;
+ }
+ fp = fopen (file, "r");
+ if (fp)
+ {
+ prev_file = file;
+ return fp;
+ }
+ error (0, errno, "%s", file);
+ exit_status = EXIT_FAILURE;
+ }
+ return NULL;
+}
+
+/* Change blanks to tabs, writing to stdout.
+ Read each file in `file_list', in order. */
+
+static void
+unexpand (void)
+{
+ /* Input stream. */
+ FILE *fp = next_file (NULL);
+
+ /* The array of pending blanks. In non-POSIX locales, blanks can
+ include characters other than spaces, so the blanks must be
+ stored, not merely counted. */
+ char *pending_blank;
+
+ if (!fp)
+ return;
+
+ /* The worst case is a non-blank character, then one blank, then a
+ tab stop, then MAX_COLUMN_WIDTH - 1 blanks, then a non-blank; so
+ allocate MAX_COLUMN_WIDTH bytes to store the blanks. */
+ pending_blank = xmalloc (max_column_width);
+
+ for (;;)
+ {
+ /* Input character, or EOF. */
+ int c;
+
+ /* If true, perform translations. */
+ bool convert = true;
+
+
+ /* The following variables have valid values only when CONVERT
+ is true: */
+
+ /* Column of next input character. */
+ uintmax_t column = 0;
+
+ /* Column the next input tab stop is on. */
+ uintmax_t next_tab_column = 0;
+
+ /* Index in TAB_LIST of next tab stop to examine. */
+ size_t tab_index = 0;
+
+ /* If true, the first pending blank came just before a tab stop. */
+ bool one_blank_before_tab_stop = false;
+
+ /* If true, the previous input character was a blank. This is
+ initially true, since initial strings of blanks are treated
+ as if the line was preceded by a blank. */
+ bool prev_blank = true;
+
+ /* Number of pending columns of blanks. */
+ size_t pending = 0;
+
+
+ /* Convert a line of text. */
+
+ do
+ {
+ while ((c = getc (fp)) < 0 && (fp = next_file (fp)))
+ continue;
+
+ if (convert)
+ {
+ bool blank = !! isblank (c);
+
+ if (blank)
+ {
+ if (next_tab_column <= column)
+ {
+ if (tab_size)
+ next_tab_column =
+ column + (tab_size - column % tab_size);
+ else
+ for (;;)
+ if (tab_index == first_free_tab)
+ {
+ convert = false;
+ break;
+ }
+ else
+ {
+ uintmax_t tab = tab_list[tab_index++];
+ if (column < tab)
+ {
+ next_tab_column = tab;
+ break;
+ }
+ }
+ }
+
+ if (convert)
+ {
+ if (next_tab_column < column)
+ error (EXIT_FAILURE, 0, _("input line is too long"));
+
+ if (c == '\t')
+ {
+ column = next_tab_column;
+
+ /* Discard pending blanks, unless it was a single
+ blank just before the previous tab stop. */
+ if (! (pending == 1 && one_blank_before_tab_stop))
+ {
+ pending = 0;
+ one_blank_before_tab_stop = false;
+ }
+ }
+ else
+ {
+ column++;
+
+ if (! (prev_blank && column == next_tab_column))
+ {
+ /* It is not yet known whether the pending blanks
+ will be replaced by tabs. */
+ if (column == next_tab_column)
+ one_blank_before_tab_stop = true;
+ pending_blank[pending++] = c;
+ prev_blank = true;
+ continue;
+ }
+
+ /* Replace the pending blanks by a tab or two. */
+ pending_blank[0] = c = '\t';
+ pending = one_blank_before_tab_stop;
+ }
+ }
+ }
+ else if (c == '\b')
+ {
+ /* Go back one column, and force recalculation of the
+ next tab stop. */
+ column -= !!column;
+ next_tab_column = column;
+ tab_index -= !!tab_index;
+ }
+ else
+ {
+ column++;
+ if (!column)
+ error (EXIT_FAILURE, 0, _("input line is too long"));
+ }
+
+ if (pending)
+ {
+ if (fwrite (pending_blank, 1, pending, stdout) != pending)
+ error (EXIT_FAILURE, errno, _("write error"));
+ pending = 0;
+ one_blank_before_tab_stop = false;
+ }
+
+ prev_blank = blank;
+ convert &= convert_entire_line | blank;
+ }
+
+ if (c < 0)
+ {
+ free (pending_blank);
+ return;
+ }
+
+ if (putchar (c) < 0)
+ error (EXIT_FAILURE, errno, _("write error"));
+ }
+ while (c != '\n');
+ }
+}
+
+int
+main (int argc, char **argv)
+{
+ bool have_tabval = false;
+ uintmax_t tabval IF_LINT (= 0);
+ int c;
+
+ /* If true, cancel the effect of any -a (explicit or implicit in -t),
+ so that only leading blanks will be considered. */
+ bool convert_first_only = false;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ have_read_stdin = false;
+ exit_status = EXIT_SUCCESS;
+ convert_entire_line = false;
+ tab_list = NULL;
+ first_free_tab = 0;
+
+ while ((c = getopt_long (argc, argv, ",0123456789at:", longopts, NULL))
+ != -1)
+ {
+ switch (c)
+ {
+ case '?':
+ usage (EXIT_FAILURE);
+ case 'a':
+ convert_entire_line = true;
+ break;
+ case 't':
+ convert_entire_line = true;
+ parse_tab_stops (optarg);
+ break;
+ case CONVERT_FIRST_ONLY_OPTION:
+ convert_first_only = true;
+ break;
+ case ',':
+ if (have_tabval)
+ add_tab_stop (tabval);
+ have_tabval = false;
+ break;
+ case_GETOPT_HELP_CHAR;
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+ default:
+ if (!have_tabval)
+ {
+ tabval = 0;
+ have_tabval = true;
+ }
+ if (!DECIMAL_DIGIT_ACCUMULATE (tabval, c - '0', uintmax_t))
+ error (EXIT_FAILURE, 0, _("tab stop value is too large"));
+ break;
+ }
+ }
+
+ if (convert_first_only)
+ convert_entire_line = false;
+
+ if (have_tabval)
+ add_tab_stop (tabval);
+
+ validate_tab_stops (tab_list, first_free_tab);
+
+ if (first_free_tab == 0)
+ tab_size = max_column_width = 8;
+ else if (first_free_tab == 1)
+ tab_size = tab_list[0];
+ else
+ tab_size = 0;
+
+ file_list = (optind < argc ? &argv[optind] : stdin_argv);
+
+ unexpand ();
+
+ if (have_read_stdin && fclose (stdin) != 0)
+ error (EXIT_FAILURE, errno, "-");
+
+ exit (exit_status);
+}
diff --git a/src/uniq.c b/src/uniq.c
new file mode 100644
index 0000000..6c38ed8
--- /dev/null
+++ b/src/uniq.c
@@ -0,0 +1,552 @@
+/* uniq -- remove duplicate lines from a sorted file
+ Copyright (C) 86, 91, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Richard Stallman and David MacKenzie. */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "argmatch.h"
+#include "linebuffer.h"
+#include "error.h"
+#include "hard-locale.h"
+#include "posixver.h"
+#include "quote.h"
+#include "xmemcoll.h"
+#include "xstrtol.h"
+#include "memcasecmp.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "uniq"
+
+#define AUTHORS "Richard Stallman", "David MacKenzie"
+
+#define SWAP_LINES(A, B) \
+ do \
+ { \
+ struct linebuffer *_tmp; \
+ _tmp = (A); \
+ (A) = (B); \
+ (B) = _tmp; \
+ } \
+ while (0)
+
+/* The name this program was run with. */
+char *program_name;
+
+/* True if the LC_COLLATE locale is hard. */
+static bool hard_LC_COLLATE;
+
+/* Number of fields to skip on each line when doing comparisons. */
+static size_t skip_fields;
+
+/* Number of chars to skip after skipping any fields. */
+static size_t skip_chars;
+
+/* Number of chars to compare. */
+static size_t check_chars;
+
+enum countmode
+{
+ count_occurrences, /* -c Print count before output lines. */
+ count_none /* Default. Do not print counts. */
+};
+
+/* Whether and how to precede the output lines with a count of the number of
+ times they occurred in the input. */
+static enum countmode countmode;
+
+/* Which lines to output: unique lines, the first of a group of
+ repeated lines, and the second and subsequented of a group of
+ repeated lines. */
+static bool output_unique;
+static bool output_first_repeated;
+static bool output_later_repeated;
+
+/* If true, ignore case when comparing. */
+static bool ignore_case;
+
+enum delimit_method
+{
+ /* No delimiters output. --all-repeated[=none] */
+ DM_NONE,
+
+ /* Delimiter precedes all groups. --all-repeated=prepend */
+ DM_PREPEND,
+
+ /* Delimit all groups. --all-repeated=separate */
+ DM_SEPARATE
+};
+
+static char const *const delimit_method_string[] =
+{
+ "none", "prepend", "separate", NULL
+};
+
+static enum delimit_method const delimit_method_map[] =
+{
+ DM_NONE, DM_PREPEND, DM_SEPARATE
+};
+
+/* Select whether/how to delimit groups of duplicate lines. */
+static enum delimit_method delimit_groups;
+
+static struct option const longopts[] =
+{
+ {"count", no_argument, NULL, 'c'},
+ {"repeated", no_argument, NULL, 'd'},
+ {"all-repeated", optional_argument, NULL, 'D'},
+ {"ignore-case", no_argument, NULL, 'i'},
+ {"unique", no_argument, NULL, 'u'},
+ {"skip-fields", required_argument, NULL, 'f'},
+ {"skip-chars", required_argument, NULL, 's'},
+ {"check-chars", required_argument, NULL, 'w'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [INPUT [OUTPUT]]\n\
+"),
+ program_name);
+ fputs (_("\
+Discard all but one of successive identical lines from INPUT (or\n\
+standard input), writing to OUTPUT (or standard output).\n\
+\n\
+"), stdout);
+ fputs (_("\
+Mandatory arguments to long options are mandatory for short options too.\n\
+"), stdout);
+ fputs (_("\
+ -c, --count prefix lines by the number of occurrences\n\
+ -d, --repeated only print duplicate lines\n\
+"), stdout);
+ fputs (_("\
+ -D, --all-repeated[=delimit-method] print all duplicate lines\n\
+ delimit-method={none(default),prepend,separate}\n\
+ Delimiting is done with blank lines.\n\
+ -f, --skip-fields=N avoid comparing the first N fields\n\
+ -i, --ignore-case ignore differences in case when comparing\n\
+ -s, --skip-chars=N avoid comparing the first N characters\n\
+ -u, --unique only print unique lines\n\
+"), stdout);
+ fputs (_("\
+ -w, --check-chars=N compare no more than N characters in lines\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ fputs (_("\
+\n\
+A field is a run of whitespace, then non-whitespace characters.\n\
+Fields are skipped before chars.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* Convert OPT to size_t, reporting an error using MSGID if OPT is
+ invalid. Silently convert too-large values to SIZE_MAX. */
+
+static size_t
+size_opt (char const *opt, char const *msgid)
+{
+ unsigned long int size;
+ verify (SIZE_MAX <= ULONG_MAX);
+
+ switch (xstrtoul (opt, NULL, 10, &size, ""))
+ {
+ case LONGINT_OK:
+ case LONGINT_OVERFLOW:
+ break;
+
+ default:
+ error (EXIT_FAILURE, 0, "%s: %s", opt, _(msgid));
+ }
+
+ return MIN (size, SIZE_MAX);
+}
+
+/* Given a linebuffer LINE,
+ return a pointer to the beginning of the line's field to be compared. */
+
+static char *
+find_field (const struct linebuffer *line)
+{
+ size_t count;
+ char *lp = line->buffer;
+ size_t size = line->length - 1;
+ size_t i = 0;
+
+ for (count = 0; count < skip_fields && i < size; count++)
+ {
+ while (i < size && isblank (lp[i]))
+ i++;
+ while (i < size && !isblank (lp[i]))
+ i++;
+ }
+
+ for (count = 0; count < skip_chars && i < size; count++)
+ i++;
+
+ return lp + i;
+}
+
+/* Return false if two strings OLD and NEW match, true if not.
+ OLD and NEW point not to the beginnings of the lines
+ but rather to the beginnings of the fields to compare.
+ OLDLEN and NEWLEN are their lengths. */
+
+static bool
+different (char *old, char *new, size_t oldlen, size_t newlen)
+{
+ if (check_chars < oldlen)
+ oldlen = check_chars;
+ if (check_chars < newlen)
+ newlen = check_chars;
+
+ if (ignore_case)
+ {
+ /* FIXME: This should invoke strcoll somehow. */
+ return oldlen != newlen || memcasecmp (old, new, oldlen);
+ }
+ else if (hard_LC_COLLATE)
+ return xmemcoll (old, oldlen, new, newlen) != 0;
+ else
+ return oldlen != newlen || memcmp (old, new, oldlen);
+}
+
+/* Output the line in linebuffer LINE to standard output
+ provided that the switches say it should be output.
+ MATCH is true if the line matches the previous line.
+ If requested, print the number of times it occurred, as well;
+ LINECOUNT + 1 is the number of times that the line occurred. */
+
+static void
+writeline (struct linebuffer const *line,
+ bool match, uintmax_t linecount)
+{
+ if (! (linecount == 0 ? output_unique
+ : !match ? output_first_repeated
+ : output_later_repeated))
+ return;
+
+ if (countmode == count_occurrences)
+ printf ("%7" PRIuMAX " ", linecount + 1);
+
+ fwrite (line->buffer, sizeof (char), line->length, stdout);
+}
+
+/* Process input file INFILE with output to OUTFILE.
+ If either is "-", use the standard I/O stream for it instead. */
+
+static void
+check_file (const char *infile, const char *outfile)
+{
+ struct linebuffer lb1, lb2;
+ struct linebuffer *thisline, *prevline;
+
+ if (! (STREQ (infile, "-") || freopen (infile, "r", stdin)))
+ error (EXIT_FAILURE, errno, "%s", infile);
+ if (! (STREQ (outfile, "-") || freopen (outfile, "w", stdout)))
+ error (EXIT_FAILURE, errno, "%s", outfile);
+
+ thisline = &lb1;
+ prevline = &lb2;
+
+ initbuffer (thisline);
+ initbuffer (prevline);
+
+ /* The duplication in the following `if' and `else' blocks is an
+ optimization to distinguish the common case (in which none of
+ the following options has been specified: --count, -repeated,
+ --all-repeated, --unique) from the others. In the common case,
+ this optimization lets uniq output each different line right away,
+ without waiting to see if the next one is different. */
+
+ if (output_unique && output_first_repeated && countmode == count_none)
+ {
+ char *prevfield IF_LINT (= NULL);
+ size_t prevlen IF_LINT (= 0);
+
+ while (!feof (stdin))
+ {
+ char *thisfield;
+ size_t thislen;
+ if (readlinebuffer (thisline, stdin) == 0)
+ break;
+ thisfield = find_field (thisline);
+ thislen = thisline->length - 1 - (thisfield - thisline->buffer);
+ if (prevline->length == 0
+ || different (thisfield, prevfield, thislen, prevlen))
+ {
+ fwrite (thisline->buffer, sizeof (char),
+ thisline->length, stdout);
+
+ SWAP_LINES (prevline, thisline);
+ prevfield = thisfield;
+ prevlen = thislen;
+ }
+ }
+ }
+ else
+ {
+ char *prevfield;
+ size_t prevlen;
+ uintmax_t match_count = 0;
+ bool first_delimiter = true;
+
+ if (readlinebuffer (prevline, stdin) == 0)
+ goto closefiles;
+ prevfield = find_field (prevline);
+ prevlen = prevline->length - 1 - (prevfield - prevline->buffer);
+
+ while (!feof (stdin))
+ {
+ bool match;
+ char *thisfield;
+ size_t thislen;
+ if (readlinebuffer (thisline, stdin) == 0)
+ {
+ if (ferror (stdin))
+ goto closefiles;
+ break;
+ }
+ thisfield = find_field (thisline);
+ thislen = thisline->length - 1 - (thisfield - thisline->buffer);
+ match = !different (thisfield, prevfield, thislen, prevlen);
+ match_count += match;
+
+ if (match_count == UINTMAX_MAX)
+ {
+ if (count_occurrences)
+ error (EXIT_FAILURE, 0, _("too many repeated lines"));
+ match_count--;
+ }
+
+ if (delimit_groups != DM_NONE)
+ {
+ if (!match)
+ {
+ if (match_count) /* a previous match */
+ first_delimiter = false; /* Only used when DM_SEPARATE */
+ }
+ else if (match_count == 1)
+ {
+ if ((delimit_groups == DM_PREPEND)
+ || (delimit_groups == DM_SEPARATE
+ && !first_delimiter))
+ putchar ('\n');
+ }
+ }
+
+ if (!match || output_later_repeated)
+ {
+ writeline (prevline, match, match_count);
+ SWAP_LINES (prevline, thisline);
+ prevfield = thisfield;
+ prevlen = thislen;
+ if (!match)
+ match_count = 0;
+ }
+ }
+
+ writeline (prevline, false, match_count);
+ }
+
+ closefiles:
+ if (ferror (stdin) || fclose (stdin) != 0)
+ error (EXIT_FAILURE, 0, _("error reading %s"), infile);
+
+ /* stdout is handled via the atexit-invoked close_stdout function. */
+
+ free (lb1.buffer);
+ free (lb2.buffer);
+}
+
+enum Skip_field_option_type
+ {
+ SFO_NONE,
+ SFO_OBSOLETE,
+ SFO_NEW
+ };
+
+int
+main (int argc, char **argv)
+{
+ int optc = 0;
+ bool posixly_correct = (getenv ("POSIXLY_CORRECT") != NULL);
+ enum Skip_field_option_type skip_field_option_type = SFO_NONE;
+ int nfiles = 0;
+ char const *file[2];
+
+ file[0] = file[1] = "-";
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+ hard_LC_COLLATE = hard_locale (LC_COLLATE);
+
+ atexit (close_stdout);
+
+ skip_chars = 0;
+ skip_fields = 0;
+ check_chars = SIZE_MAX;
+ output_unique = output_first_repeated = true;
+ output_later_repeated = false;
+ countmode = count_none;
+ delimit_groups = DM_NONE;
+
+ for (;;)
+ {
+ /* Parse an operand with leading "+" as a file after "--" was
+ seen; or if pedantic and a file was seen; or if not
+ obsolete. */
+
+ if (optc == -1
+ || (posixly_correct && nfiles != 0)
+ || ((optc = getopt_long (argc, argv,
+ "-0123456789Dcdf:is:uw:", longopts, NULL))
+ == -1))
+ {
+ if (argc <= optind)
+ break;
+ if (nfiles == 2)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind]));
+ usage (EXIT_FAILURE);
+ }
+ file[nfiles++] = argv[optind++];
+ }
+ else switch (optc)
+ {
+ case 1:
+ {
+ unsigned long int size;
+ if (optarg[0] == '+'
+ && posix2_version () < 200112
+ && xstrtoul (optarg, NULL, 10, &size, "") == LONGINT_OK
+ && size <= SIZE_MAX)
+ skip_chars = size;
+ else if (nfiles == 2)
+ {
+ error (0, 0, _("extra operand %s"), quote (optarg));
+ usage (EXIT_FAILURE);
+ }
+ else
+ file[nfiles++] = optarg;
+ }
+ break;
+
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ {
+ if (skip_field_option_type == SFO_NEW)
+ skip_fields = 0;
+
+ if (!DECIMAL_DIGIT_ACCUMULATE (skip_fields, optc - '0', size_t))
+ skip_fields = SIZE_MAX;
+
+ skip_field_option_type = SFO_OBSOLETE;
+ }
+ break;
+
+ case 'c':
+ countmode = count_occurrences;
+ break;
+
+ case 'd':
+ output_unique = false;
+ break;
+
+ case 'D':
+ output_unique = false;
+ output_later_repeated = true;
+ if (optarg == NULL)
+ delimit_groups = DM_NONE;
+ else
+ delimit_groups = XARGMATCH ("--all-repeated", optarg,
+ delimit_method_string,
+ delimit_method_map);
+ break;
+
+ case 'f':
+ skip_field_option_type = SFO_NEW;
+ skip_fields = size_opt (optarg,
+ N_("invalid number of fields to skip"));
+ break;
+
+ case 'i':
+ ignore_case = true;
+ break;
+
+ case 's':
+ skip_chars = size_opt (optarg,
+ N_("invalid number of bytes to skip"));
+ break;
+
+ case 'u':
+ output_first_repeated = false;
+ break;
+
+ case 'w':
+ check_chars = size_opt (optarg,
+ N_("invalid number of bytes to compare"));
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (countmode == count_occurrences && output_later_repeated)
+ {
+ error (0, 0,
+ _("printing all duplicated lines and repeat counts is meaningless"));
+ usage (EXIT_FAILURE);
+ }
+
+ check_file (file[0], file[1]);
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/unlink.c b/src/unlink.c
new file mode 100644
index 0000000..7255076
--- /dev/null
+++ b/src/unlink.c
@@ -0,0 +1,94 @@
+/* unlink utility for GNU.
+ Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Michael Stone */
+
+/* Implementation overview:
+
+ Simply call the system 'unlink' function */
+
+#include <config.h>
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "error.h"
+#include "long-options.h"
+#include "quote.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "unlink"
+
+#define AUTHORS "Michael Stone"
+
+/* Name this program was run with. */
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s FILE\n\
+ or: %s OPTION\n"), program_name, program_name);
+ fputs (_("Call the unlink function to remove the specified FILE.\n\n"),
+ stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "", NULL, NULL) != -1)
+ usage (EXIT_FAILURE);
+
+ if (argc < optind + 1)
+ {
+ error (0, 0, _("missing operand"));
+ usage (EXIT_FAILURE);
+ }
+
+ if (optind + 1 < argc)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind + 1]));
+ usage (EXIT_FAILURE);
+ }
+
+ if (unlink (argv[optind]) != 0)
+ error (EXIT_FAILURE, errno, _("cannot unlink %s"), quote (argv[optind]));
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/uptime.c b/src/uptime.c
new file mode 100644
index 0000000..6b2a724
--- /dev/null
+++ b/src/uptime.c
@@ -0,0 +1,245 @@
+/* GNU's uptime.
+ Copyright (C) 1992-2002, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Created by hacking who.c by Kaveh Ghazi ghazi@caip.rutgers.edu. */
+
+#include <config.h>
+#include <getopt.h>
+#include <stdio.h>
+
+#include <sys/types.h>
+#include "system.h"
+
+#if HAVE_SYSCTL && HAVE_SYS_SYSCTL_H
+# include <sys/sysctl.h>
+#endif
+
+#if HAVE_OS_H
+# include <OS.h>
+#endif
+
+#include "c-strtod.h"
+#include "error.h"
+#include "long-options.h"
+#include "quote.h"
+#include "readutmp.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "uptime"
+
+#define AUTHORS "Joseph Arceneaux", "David MacKenzie", "Kaveh Ghazi"
+
+int getloadavg ();
+
+/* The name this program was run with. */
+char *program_name;
+
+static void
+print_uptime (size_t n, const STRUCT_UTMP *this)
+{
+ size_t entries = 0;
+ time_t boot_time = 0;
+ time_t time_now;
+ time_t uptime = 0;
+ long int updays;
+ int uphours;
+ int upmins;
+ struct tm *tmn;
+ double avg[3];
+ int loads;
+#ifdef HAVE_PROC_UPTIME
+ FILE *fp;
+
+ fp = fopen ("/proc/uptime", "r");
+ if (fp != NULL)
+ {
+ char buf[BUFSIZ];
+ char *b = fgets (buf, BUFSIZ, fp);
+ if (b == buf)
+ {
+ char *end_ptr;
+ double upsecs = c_strtod (buf, &end_ptr);
+ if (buf != end_ptr)
+ uptime = (0 <= upsecs && upsecs < TYPE_MAXIMUM (time_t)
+ ? upsecs : -1);
+ }
+
+ fclose (fp);
+ }
+#endif /* HAVE_PROC_UPTIME */
+
+#if HAVE_SYSCTL && defined CTL_KERN && defined KERN_BOOTTIME
+ {
+ /* FreeBSD specific: fetch sysctl "kern.boottime". */
+ static int request[2] = { CTL_KERN, KERN_BOOTTIME };
+ struct timeval result;
+ size_t result_len = sizeof result;
+
+ if (sysctl (request, 2, &result, &result_len, NULL, 0) >= 0)
+ boot_time = result.tv_sec;
+ }
+#endif
+
+#if HAVE_OS_H /* BeOS */
+ {
+ system_info si;
+
+ get_system_info (&si);
+ boot_time = si.boot_time / 1000000;
+ }
+#endif
+
+#if HAVE_UTMPX_H || HAVE_UTMP_H
+ /* Loop through all the utmp entries we just read and count up the valid
+ ones, also in the process possibly gleaning boottime. */
+ while (n--)
+ {
+ entries += IS_USER_PROCESS (this);
+ if (UT_TYPE_BOOT_TIME (this))
+ boot_time = UT_TIME_MEMBER (this);
+ ++this;
+ }
+#endif
+ time_now = time (NULL);
+#if defined HAVE_PROC_UPTIME
+ if (uptime == 0)
+#endif
+ {
+ if (boot_time == 0)
+ error (EXIT_FAILURE, errno, _("couldn't get boot time"));
+ uptime = time_now - boot_time;
+ }
+ updays = uptime / 86400;
+ uphours = (uptime - (updays * 86400)) / 3600;
+ upmins = (uptime - (updays * 86400) - (uphours * 3600)) / 60;
+ tmn = localtime (&time_now);
+ if (tmn)
+ printf (_(" %2d:%02d%s up "),
+ ((tmn->tm_hour % 12) == 0 ? 12 : tmn->tm_hour % 12),
+ /* FIXME: use strftime, not am, pm. Uli reports that
+ the german translation is meaningless. */
+ tmn->tm_min, (tmn->tm_hour < 12 ? _("am") : _("pm")));
+ else
+ printf (_(" ??:???? up "));
+ if (uptime == (time_t) -1)
+ printf (_("???? days ??:??, "));
+ else
+ {
+ if (0 < updays)
+ printf (ngettext ("%ld day", "%ld days", select_plural (updays)),
+ updays);
+ printf (" %2d:%02d, ", uphours, upmins);
+ }
+ printf (ngettext ("%lu user", "%lu users", entries),
+ (unsigned long int) entries);
+
+#if defined HAVE_GETLOADAVG || defined C_GETLOADAVG
+ loads = getloadavg (avg, 3);
+#else
+ loads = -1;
+#endif
+
+ if (loads == -1)
+ putchar ('\n');
+ else
+ {
+ if (loads > 0)
+ printf (_(", load average: %.2f"), avg[0]);
+ if (loads > 1)
+ printf (", %.2f", avg[1]);
+ if (loads > 2)
+ printf (", %.2f", avg[2]);
+ if (loads > 0)
+ putchar ('\n');
+ }
+}
+
+/* Display the system uptime and the number of users on the system,
+ according to utmp file FILENAME. Use read_utmp OPTIONS to read the
+ utmp file. */
+
+static void
+uptime (const char *filename, int options)
+{
+ size_t n_users;
+ STRUCT_UTMP *utmp_buf;
+
+#if HAVE_UTMPX_H || HAVE_UTMP_H
+ if (read_utmp (filename, &n_users, &utmp_buf, options) != 0)
+ error (EXIT_FAILURE, errno, "%s", filename);
+#endif
+
+ print_uptime (n_users, utmp_buf);
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]... [ FILE ]\n"), program_name);
+ printf (_("\
+Print the current time, the length of time the system has been up,\n\
+the number of users on the system, and the average number of jobs\n\
+in the run queue over the last 1, 5 and 15 minutes.\n\
+If FILE is not specified, use %s. %s as FILE is common.\n\
+\n\
+"),
+ UTMP_FILE, WTMP_FILE);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "", NULL, NULL) != -1)
+ usage (EXIT_FAILURE);
+
+ switch (argc - optind)
+ {
+ case 0: /* uptime */
+ uptime (UTMP_FILE, READ_UTMP_CHECK_PIDS);
+ break;
+
+ case 1: /* uptime <utmp file> */
+ uptime (argv[optind], 0);
+ break;
+
+ default: /* lose */
+ error (0, 0, _("extra operand %s"), quote (argv[optind + 1]));
+ usage (EXIT_FAILURE);
+ }
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/users.c b/src/users.c
new file mode 100644
index 0000000..dba4701
--- /dev/null
+++ b/src/users.c
@@ -0,0 +1,154 @@
+/* GNU's users.
+ Copyright (C) 1992-2005 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by jla; revised by djm */
+
+#include <config.h>
+#include <getopt.h>
+#include <stdio.h>
+
+#include <sys/types.h>
+#include "system.h"
+
+#include "error.h"
+#include "long-options.h"
+#include "quote.h"
+#include "readutmp.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "users"
+
+#define AUTHORS "Joseph Arceneaux", "David MacKenzie"
+
+/* The name this program was run with. */
+char *program_name;
+
+static int
+userid_compare (const void *v_a, const void *v_b)
+{
+ char **a = (char **) v_a;
+ char **b = (char **) v_b;
+ return strcmp (*a, *b);
+}
+
+static void
+list_entries_users (size_t n, const STRUCT_UTMP *this)
+{
+ char **u = xnmalloc (n, sizeof *u);
+ size_t i;
+ size_t n_entries = 0;
+
+ while (n--)
+ {
+ if (IS_USER_PROCESS (this))
+ {
+ char *trimmed_name;
+
+ trimmed_name = extract_trimmed_name (this);
+
+ u[n_entries] = trimmed_name;
+ ++n_entries;
+ }
+ this++;
+ }
+
+ qsort (u, n_entries, sizeof (u[0]), userid_compare);
+
+ for (i = 0; i < n_entries; i++)
+ {
+ char c = (i < n_entries - 1 ? ' ' : '\n');
+ fputs (u[i], stdout);
+ putchar (c);
+ }
+
+ for (i = 0; i < n_entries; i++)
+ free (u[i]);
+ free (u);
+}
+
+/* Display a list of users on the system, according to utmp file FILENAME.
+ Use read_utmp OPTIONS to read FILENAME. */
+
+static void
+users (const char *filename, int options)
+{
+ size_t n_users;
+ STRUCT_UTMP *utmp_buf;
+
+ if (read_utmp (filename, &n_users, &utmp_buf, options) != 0)
+ error (EXIT_FAILURE, errno, "%s", filename);
+
+ list_entries_users (n_users, utmp_buf);
+
+ free (utmp_buf);
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]... [ FILE ]\n"), program_name);
+ printf (_("\
+Output who is currently logged in according to FILE.\n\
+If FILE is not specified, use %s. %s as FILE is common.\n\
+\n\
+"),
+ UTMP_FILE, WTMP_FILE);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "", NULL, NULL) != -1)
+ usage (EXIT_FAILURE);
+
+ switch (argc - optind)
+ {
+ case 0: /* users */
+ users (UTMP_FILE, READ_UTMP_CHECK_PIDS);
+ break;
+
+ case 1: /* users <utmp file> */
+ users (argv[optind], 0);
+ break;
+
+ default: /* lose */
+ error (0, 0, _("extra operand %s"), quote (argv[optind + 1]));
+ usage (EXIT_FAILURE);
+ }
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/wc.c b/src/wc.c
new file mode 100644
index 0000000..332f32d
--- /dev/null
+++ b/src/wc.c
@@ -0,0 +1,704 @@
+/* wc - print the number of lines, words, and bytes in files
+ Copyright (C) 85, 91, 1995-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Rubin, phr@ocf.berkeley.edu
+ and David MacKenzie, djm@gnu.ai.mit.edu. */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <getopt.h>
+#include <sys/types.h>
+
+#include "system.h"
+#include "error.h"
+#include "inttostr.h"
+#include "quote.h"
+#include "readtokens0.h"
+#include "safe-read.h"
+#include "wcwidth.h"
+
+#if !defined iswspace && !HAVE_ISWSPACE
+# define iswspace(wc) \
+ ((wc) == to_uchar (wc) && isspace (to_uchar (wc)))
+#endif
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "wc"
+
+#define AUTHORS "Paul Rubin", "David MacKenzie"
+
+/* Size of atomic reads. */
+#define BUFFER_SIZE (16 * 1024)
+
+/* The name this program was run with. */
+char *program_name;
+
+/* Cumulative number of lines, words, chars and bytes in all files so far.
+ max_line_length is the maximum over all files processed so far. */
+static uintmax_t total_lines;
+static uintmax_t total_words;
+static uintmax_t total_chars;
+static uintmax_t total_bytes;
+static uintmax_t max_line_length;
+
+/* Which counts to print. */
+static bool print_lines, print_words, print_chars, print_bytes;
+static bool print_linelength;
+
+/* The print width of each count. */
+static int number_width;
+
+/* True if we have ever read the standard input. */
+static bool have_read_stdin;
+
+/* The result of calling fstat or stat on a file descriptor or file. */
+struct fstatus
+{
+ /* If positive, fstat or stat has not been called yet. Otherwise,
+ this is the value returned from fstat or stat. */
+ int failed;
+
+ /* If FAILED is zero, this is the file's status. */
+ struct stat st;
+};
+
+/* For long options that have no equivalent short option, use a
+ non-character as a pseudo short option, starting with CHAR_MAX + 1. */
+enum
+{
+ FILES0_FROM_OPTION = CHAR_MAX + 1
+};
+
+static struct option const longopts[] =
+{
+ {"bytes", no_argument, NULL, 'c'},
+ {"chars", no_argument, NULL, 'm'},
+ {"lines", no_argument, NULL, 'l'},
+ {"words", no_argument, NULL, 'w'},
+ {"files0-from", required_argument, NULL, FILES0_FROM_OPTION},
+ {"max-line-length", no_argument, NULL, 'L'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]... [FILE]...\n\
+ or: %s [OPTION]... --files0-from=F\n\
+"),
+ program_name, program_name);
+ fputs (_("\
+Print newline, word, and byte counts for each FILE, and a total line if\n\
+more than one FILE is specified. With no FILE, or when FILE is -,\n\
+read standard input.\n\
+ -c, --bytes print the byte counts\n\
+ -m, --chars print the character counts\n\
+ -l, --lines print the newline counts\n\
+"), stdout);
+ fputs (_("\
+ --files0-from=F read input from the files specified by\n\
+ NUL-terminated names in file F\n\
+ -L, --max-line-length print the length of the longest line\n\
+ -w, --words print the word counts\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+/* FILE is the name of the file (or NULL for standard input)
+ associated with the specified counters. */
+static void
+write_counts (uintmax_t lines,
+ uintmax_t words,
+ uintmax_t chars,
+ uintmax_t bytes,
+ uintmax_t linelength,
+ const char *file)
+{
+ static char const format_sp_int[] = " %*s";
+ char const *format_int = format_sp_int + 1;
+ char buf[INT_BUFSIZE_BOUND (uintmax_t)];
+
+ if (print_lines)
+ {
+ printf (format_int, number_width, umaxtostr (lines, buf));
+ format_int = format_sp_int;
+ }
+ if (print_words)
+ {
+ printf (format_int, number_width, umaxtostr (words, buf));
+ format_int = format_sp_int;
+ }
+ if (print_chars)
+ {
+ printf (format_int, number_width, umaxtostr (chars, buf));
+ format_int = format_sp_int;
+ }
+ if (print_bytes)
+ {
+ printf (format_int, number_width, umaxtostr (bytes, buf));
+ format_int = format_sp_int;
+ }
+ if (print_linelength)
+ {
+ printf (format_int, number_width, umaxtostr (linelength, buf));
+ }
+ if (file)
+ printf (" %s", file);
+ putchar ('\n');
+}
+
+/* Count words. FILE_X is the name of the file (or NULL for standard
+ input) that is open on descriptor FD. *FSTATUS is its status.
+ Return true if successful. */
+static bool
+wc (int fd, char const *file_x, struct fstatus *fstatus)
+{
+ bool ok = true;
+ char buf[BUFFER_SIZE + 1];
+ size_t bytes_read;
+ uintmax_t lines, words, chars, bytes, linelength;
+ bool count_bytes, count_chars, count_complicated;
+ char const *file = file_x ? file_x : _("standard input");
+
+ lines = words = chars = bytes = linelength = 0;
+
+ /* If in the current locale, chars are equivalent to bytes, we prefer
+ counting bytes, because that's easier. */
+#if HAVE_MBRTOWC && (MB_LEN_MAX > 1)
+ if (MB_CUR_MAX > 1)
+ {
+ count_bytes = print_bytes;
+ count_chars = print_chars;
+ }
+ else
+#endif
+ {
+ count_bytes = print_bytes | print_chars;
+ count_chars = false;
+ }
+ count_complicated = print_words | print_linelength;
+
+ /* When counting only bytes, save some line- and word-counting
+ overhead. If FD is a `regular' Unix file, using lseek is enough
+ to get its `size' in bytes. Otherwise, read blocks of BUFFER_SIZE
+ bytes at a time until EOF. Note that the `size' (number of bytes)
+ that wc reports is smaller than stats.st_size when the file is not
+ positioned at its beginning. That's why the lseek calls below are
+ necessary. For example the command
+ `(dd ibs=99k skip=1 count=0; ./wc -c) < /etc/group'
+ should make wc report `0' bytes. */
+
+ if (count_bytes & !count_chars & !print_lines & !count_complicated)
+ {
+ off_t current_pos, end_pos;
+
+ if (0 < fstatus->failed)
+ fstatus->failed = fstat (fd, &fstatus->st);
+
+ if (! fstatus->failed && S_ISREG (fstatus->st.st_mode)
+ && (current_pos = lseek (fd, (off_t) 0, SEEK_CUR)) != -1
+ && (end_pos = lseek (fd, (off_t) 0, SEEK_END)) != -1)
+ {
+ /* Be careful here. The current position may actually be
+ beyond the end of the file. As in the example above. */
+ bytes = end_pos < current_pos ? 0 : end_pos - current_pos;
+ }
+ else
+ {
+ while ((bytes_read = safe_read (fd, buf, BUFFER_SIZE)) > 0)
+ {
+ if (bytes_read == SAFE_READ_ERROR)
+ {
+ error (0, errno, "%s", file);
+ ok = false;
+ break;
+ }
+ bytes += bytes_read;
+ }
+ }
+ }
+ else if (!count_chars & !count_complicated)
+ {
+ /* Use a separate loop when counting only lines or lines and bytes --
+ but not chars or words. */
+ while ((bytes_read = safe_read (fd, buf, BUFFER_SIZE)) > 0)
+ {
+ char *p = buf;
+
+ if (bytes_read == SAFE_READ_ERROR)
+ {
+ error (0, errno, "%s", file);
+ ok = false;
+ break;
+ }
+
+ while ((p = memchr (p, '\n', (buf + bytes_read) - p)))
+ {
+ ++p;
+ ++lines;
+ }
+ bytes += bytes_read;
+ }
+ }
+#if HAVE_MBRTOWC && (MB_LEN_MAX > 1)
+# define SUPPORT_OLD_MBRTOWC 1
+ else if (MB_CUR_MAX > 1)
+ {
+ bool in_word = false;
+ uintmax_t linepos = 0;
+ mbstate_t state = { 0, };
+ uintmax_t last_error_line = 0;
+ int last_error_errno = 0;
+# if SUPPORT_OLD_MBRTOWC
+ /* Back-up the state before each multibyte character conversion and
+ move the last incomplete character of the buffer to the front
+ of the buffer. This is needed because we don't know whether
+ the `mbrtowc' function updates the state when it returns -2, -
+ this is the ISO C 99 and glibc-2.2 behaviour - or not - amended
+ ANSI C, glibc-2.1 and Solaris 5.7 behaviour. We don't have an
+ autoconf test for this, yet. */
+ size_t prev = 0; /* number of bytes carried over from previous round */
+# else
+ const size_t prev = 0;
+# endif
+
+ while ((bytes_read = safe_read (fd, buf + prev, BUFFER_SIZE - prev)) > 0)
+ {
+ const char *p;
+# if SUPPORT_OLD_MBRTOWC
+ mbstate_t backup_state;
+# endif
+ if (bytes_read == SAFE_READ_ERROR)
+ {
+ error (0, errno, "%s", file);
+ ok = false;
+ break;
+ }
+
+ bytes += bytes_read;
+ p = buf;
+ bytes_read += prev;
+ do
+ {
+ wchar_t wide_char;
+ size_t n;
+
+# if SUPPORT_OLD_MBRTOWC
+ backup_state = state;
+# endif
+ n = mbrtowc (&wide_char, p, bytes_read, &state);
+ if (n == (size_t) -2)
+ {
+# if SUPPORT_OLD_MBRTOWC
+ state = backup_state;
+# endif
+ break;
+ }
+ if (n == (size_t) -1)
+ {
+ /* Signal repeated errors only once per line. */
+ if (!(lines + 1 == last_error_line
+ && errno == last_error_errno))
+ {
+ char line_number_buf[INT_BUFSIZE_BOUND (uintmax_t)];
+ last_error_line = lines + 1;
+ last_error_errno = errno;
+ error (0, errno, "%s:%s", file,
+ umaxtostr (last_error_line, line_number_buf));
+ ok = false;
+ }
+ p++;
+ bytes_read--;
+ }
+ else
+ {
+ if (n == 0)
+ {
+ wide_char = 0;
+ n = 1;
+ }
+ p += n;
+ bytes_read -= n;
+ chars++;
+ switch (wide_char)
+ {
+ case '\n':
+ lines++;
+ /* Fall through. */
+ case '\r':
+ case '\f':
+ if (linepos > linelength)
+ linelength = linepos;
+ linepos = 0;
+ goto mb_word_separator;
+ case '\t':
+ linepos += 8 - (linepos % 8);
+ goto mb_word_separator;
+ case ' ':
+ linepos++;
+ /* Fall through. */
+ case '\v':
+ mb_word_separator:
+ words += in_word;
+ in_word = false;
+ break;
+ default:
+ if (iswprint (wide_char))
+ {
+ int width = wcwidth (wide_char);
+ if (width > 0)
+ linepos += width;
+ if (iswspace (wide_char))
+ goto mb_word_separator;
+ in_word = true;
+ }
+ break;
+ }
+ }
+ }
+ while (bytes_read > 0);
+
+# if SUPPORT_OLD_MBRTOWC
+ if (bytes_read > 0)
+ {
+ if (bytes_read == BUFFER_SIZE)
+ {
+ /* Encountered a very long redundant shift sequence. */
+ p++;
+ bytes_read--;
+ }
+ memmove (buf, p, bytes_read);
+ }
+ prev = bytes_read;
+# endif
+ }
+ if (linepos > linelength)
+ linelength = linepos;
+ words += in_word;
+ }
+#endif
+ else
+ {
+ bool in_word = false;
+ uintmax_t linepos = 0;
+
+ while ((bytes_read = safe_read (fd, buf, BUFFER_SIZE)) > 0)
+ {
+ const char *p = buf;
+ if (bytes_read == SAFE_READ_ERROR)
+ {
+ error (0, errno, "%s", file);
+ ok = false;
+ break;
+ }
+
+ bytes += bytes_read;
+ do
+ {
+ switch (*p++)
+ {
+ case '\n':
+ lines++;
+ /* Fall through. */
+ case '\r':
+ case '\f':
+ if (linepos > linelength)
+ linelength = linepos;
+ linepos = 0;
+ goto word_separator;
+ case '\t':
+ linepos += 8 - (linepos % 8);
+ goto word_separator;
+ case ' ':
+ linepos++;
+ /* Fall through. */
+ case '\v':
+ word_separator:
+ words += in_word;
+ in_word = false;
+ break;
+ default:
+ if (isprint (to_uchar (p[-1])))
+ {
+ linepos++;
+ if (isspace (to_uchar (p[-1])))
+ goto word_separator;
+ in_word = true;
+ }
+ break;
+ }
+ }
+ while (--bytes_read);
+ }
+ if (linepos > linelength)
+ linelength = linepos;
+ words += in_word;
+ }
+
+ if (count_chars < print_chars)
+ chars = bytes;
+
+ write_counts (lines, words, chars, bytes, linelength, file_x);
+ total_lines += lines;
+ total_words += words;
+ total_chars += chars;
+ total_bytes += bytes;
+ if (linelength > max_line_length)
+ max_line_length = linelength;
+
+ return ok;
+}
+
+static bool
+wc_file (char const *file, struct fstatus *fstatus)
+{
+ if (! file || STREQ (file, "-"))
+ {
+ have_read_stdin = true;
+ if (O_BINARY && ! isatty (STDIN_FILENO))
+ freopen (NULL, "rb", stdin);
+ return wc (STDIN_FILENO, file, fstatus);
+ }
+ else
+ {
+ int fd = open (file, O_RDONLY | O_BINARY);
+ if (fd == -1)
+ {
+ error (0, errno, "%s", file);
+ return false;
+ }
+ else
+ {
+ bool ok = wc (fd, file, fstatus);
+ if (close (fd) != 0)
+ {
+ error (0, errno, "%s", file);
+ return false;
+ }
+ return ok;
+ }
+ }
+}
+
+/* Return the file status for the NFILES files addressed by FILE.
+ Optimize the case where only one number is printed, for just one
+ file; in that case we can use a print width of 1, so we don't need
+ to stat the file. */
+
+static struct fstatus *
+get_input_fstatus (int nfiles, char * const *file)
+{
+ struct fstatus *fstatus = xnmalloc (nfiles, sizeof *fstatus);
+
+ if (nfiles == 1
+ && ((print_lines + print_words + print_chars
+ + print_bytes + print_linelength)
+ == 1))
+ fstatus[0].failed = 1;
+ else
+ {
+ int i;
+
+ for (i = 0; i < nfiles; i++)
+ fstatus[i].failed = (! file[i] || STREQ (file[i], "-")
+ ? fstat (STDIN_FILENO, &fstatus[i].st)
+ : stat (file[i], &fstatus[i].st));
+ }
+
+ return fstatus;
+}
+
+/* Return a print width suitable for the NFILES files whose status is
+ recorded in FSTATUS. Optimize the same special case that
+ get_input_fstatus optimizes. */
+
+static int
+compute_number_width (int nfiles, struct fstatus const *fstatus)
+{
+ int width = 1;
+
+ if (0 < nfiles && fstatus[0].failed <= 0)
+ {
+ int minimum_width = 1;
+ uintmax_t regular_total = 0;
+ int i;
+
+ for (i = 0; i < nfiles; i++)
+ if (! fstatus[i].failed)
+ {
+ if (S_ISREG (fstatus[i].st.st_mode))
+ regular_total += fstatus[i].st.st_size;
+ else
+ minimum_width = 7;
+ }
+
+ for (; 10 <= regular_total; regular_total /= 10)
+ width++;
+ if (width < minimum_width)
+ width = minimum_width;
+ }
+
+ return width;
+}
+
+
+int
+main (int argc, char **argv)
+{
+ int i;
+ bool ok;
+ int optc;
+ int nfiles;
+ char **files;
+ char *files_from = NULL;
+ struct fstatus *fstatus;
+ struct Tokens tok;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ print_lines = print_words = print_chars = print_bytes = false;
+ print_linelength = false;
+ total_lines = total_words = total_chars = total_bytes = max_line_length = 0;
+
+ while ((optc = getopt_long (argc, argv, "clLmw", longopts, NULL)) != -1)
+ switch (optc)
+ {
+ case 'c':
+ print_bytes = true;
+ break;
+
+ case 'm':
+ print_chars = true;
+ break;
+
+ case 'l':
+ print_lines = true;
+ break;
+
+ case 'w':
+ print_words = true;
+ break;
+
+ case 'L':
+ print_linelength = true;
+ break;
+
+ case FILES0_FROM_OPTION:
+ files_from = optarg;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+
+ if (! (print_lines | print_words | print_chars | print_bytes
+ | print_linelength))
+ print_lines = print_words = print_bytes = true;
+
+ if (files_from)
+ {
+ FILE *stream;
+
+ /* When using --files0-from=F, you may not specify any files
+ on the command-line. */
+ if (optind < argc)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind]));
+ fprintf (stderr, "%s\n",
+ _("File operands cannot be combined with --files0-from."));
+ usage (EXIT_FAILURE);
+ }
+
+ if (STREQ (files_from, "-"))
+ stream = stdin;
+ else
+ {
+ stream = fopen (files_from, "r");
+ if (stream == NULL)
+ error (EXIT_FAILURE, errno, _("cannot open %s for reading"),
+ quote (files_from));
+ }
+
+ readtokens0_init (&tok);
+
+ if (! readtokens0 (stream, &tok) || fclose (stream) != 0)
+ error (EXIT_FAILURE, 0, _("cannot read file names from %s"),
+ quote (files_from));
+
+ files = tok.tok;
+ nfiles = tok.n_tok;
+ }
+ else
+ {
+ static char *stdin_only[2];
+ files = (optind < argc ? argv + optind : stdin_only);
+ nfiles = (optind < argc ? argc - optind : 1);
+ stdin_only[0] = NULL;
+ }
+
+ fstatus = get_input_fstatus (nfiles, files);
+ number_width = compute_number_width (nfiles, fstatus);
+
+ ok = true;
+ for (i = 0; i < nfiles; i++)
+ {
+ if (files_from && STREQ (files_from, "-") && STREQ (files[i], "-"))
+ {
+ ok = false;
+ error (0, 0,
+ _("when reading file names from stdin, "
+ "no file name of %s allowed"),
+ quote ("-"));
+ continue;
+ }
+ ok &= wc_file (files[i], &fstatus[i]);
+ }
+
+ if (1 < nfiles)
+ write_counts (total_lines, total_words, total_chars, total_bytes,
+ max_line_length, _("total"));
+
+ free (fstatus);
+
+ if (have_read_stdin && close (STDIN_FILENO) != 0)
+ error (EXIT_FAILURE, errno, "-");
+
+ exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
diff --git a/src/wheel-gen.pl b/src/wheel-gen.pl
new file mode 100755
index 0000000..a225830
--- /dev/null
+++ b/src/wheel-gen.pl
@@ -0,0 +1,115 @@
+#!/usr/bin/perl -w
+# Generate the spokes of a wheel, for wheel factorization.
+
+# Copyright (C) 2001, 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
+ if 0;
+
+use strict;
+(my $ME = $0) =~ s|.*/||;
+
+# A global destructor to close standard output with error checking.
+sub END
+{
+ defined fileno STDOUT
+ or return;
+ close STDOUT
+ and return;
+ warn "$ME: closing standard output: $!\n";
+ $? ||= 1;
+}
+
+sub is_prime ($)
+{
+ my ($n) = @_;
+ use integer;
+
+ $n == 2
+ and return 1;
+
+ my $d = 2;
+ my $w = 1;
+ while (1)
+ {
+ my $q = $n / $d;
+ $n == $q * $d
+ and return 0;
+ $d += $w;
+ $q < $d
+ and last;
+ $w = 2;
+ }
+ return 1;
+}
+
+{
+ @ARGV == 1
+ or die "$ME: missing argument\n";
+
+ my $wheel_size = $ARGV[0];
+
+ my @primes = (2);
+ my $product = $primes[0];
+ my $n_primes = 1;
+ for (my $i = 3; ; $i += 2)
+ {
+ if (is_prime $i)
+ {
+ push @primes, $i;
+ $product *= $i;
+ ++$n_primes == $wheel_size
+ and last;
+ }
+ }
+
+ my $ws_m1 = $wheel_size - 1;
+ print <<EOF;
+/* The first $ws_m1 elements correspond to the incremental offsets of the
+ first $wheel_size primes (@primes). The $wheel_size(th) element is the
+ difference between that last prime and the next largest integer
+ that is not a multiple of those primes. The remaining numbers
+ define the wheel. For more information, see
+ http://www.utm.edu/research/primes/glossary/WheelFactorization.html. */
+EOF
+
+ my @increments;
+ my $prev = 2;
+ for (my $i = 3; ; $i += 2)
+ {
+ my $rel_prime = 1;
+ foreach my $divisor (@primes)
+ {
+ $i != $divisor && $i % $divisor == 0
+ and $rel_prime = 0;
+ }
+
+ if ($rel_prime)
+ {
+ #warn $i, ' ', $i - $prev, "\n";
+ push @increments, $i - $prev;
+ $prev = $i;
+
+ $product + 1 < $i
+ and last;
+ }
+ }
+
+ print join (",\n", @increments), "\n";
+
+ exit 0;
+}
diff --git a/src/wheel-size.h b/src/wheel-size.h
new file mode 100644
index 0000000..1f2d609
--- /dev/null
+++ b/src/wheel-size.h
@@ -0,0 +1 @@
+#define WHEEL_SIZE 5
diff --git a/src/wheel.h b/src/wheel.h
new file mode 100644
index 0000000..1c04d59
--- /dev/null
+++ b/src/wheel.h
@@ -0,0 +1,491 @@
+/* The first 4 elements correspond to the incremental offsets of the
+ first 5 primes (2 3 5 7 11). The 5(th) element is the
+ difference between that last prime and the next largest integer
+ that is not a multiple of those primes. The remaining numbers
+ define the wheel. For more information, see
+ http://www.utm.edu/research/primes/glossary/WheelFactorization.html. */
+1,
+2,
+2,
+4,
+2,
+4,
+2,
+4,
+6,
+2,
+6,
+4,
+2,
+4,
+6,
+6,
+2,
+6,
+4,
+2,
+6,
+4,
+6,
+8,
+4,
+2,
+4,
+2,
+4,
+14,
+4,
+6,
+2,
+10,
+2,
+6,
+6,
+4,
+2,
+4,
+6,
+2,
+10,
+2,
+4,
+2,
+12,
+10,
+2,
+4,
+2,
+4,
+6,
+2,
+6,
+4,
+6,
+6,
+6,
+2,
+6,
+4,
+2,
+6,
+4,
+6,
+8,
+4,
+2,
+4,
+6,
+8,
+6,
+10,
+2,
+4,
+6,
+2,
+6,
+6,
+4,
+2,
+4,
+6,
+2,
+6,
+4,
+2,
+6,
+10,
+2,
+10,
+2,
+4,
+2,
+4,
+6,
+8,
+4,
+2,
+4,
+12,
+2,
+6,
+4,
+2,
+6,
+4,
+6,
+12,
+2,
+4,
+2,
+4,
+8,
+6,
+4,
+6,
+2,
+4,
+6,
+2,
+6,
+10,
+2,
+4,
+6,
+2,
+6,
+4,
+2,
+4,
+2,
+10,
+2,
+10,
+2,
+4,
+6,
+6,
+2,
+6,
+6,
+4,
+6,
+6,
+2,
+6,
+4,
+2,
+6,
+4,
+6,
+8,
+4,
+2,
+6,
+4,
+8,
+6,
+4,
+6,
+2,
+4,
+6,
+8,
+6,
+4,
+2,
+10,
+2,
+6,
+4,
+2,
+4,
+2,
+10,
+2,
+10,
+2,
+4,
+2,
+4,
+8,
+6,
+4,
+2,
+4,
+6,
+6,
+2,
+6,
+4,
+8,
+4,
+6,
+8,
+4,
+2,
+4,
+2,
+4,
+8,
+6,
+4,
+6,
+6,
+6,
+2,
+6,
+6,
+4,
+2,
+4,
+6,
+2,
+6,
+4,
+2,
+4,
+2,
+10,
+2,
+10,
+2,
+6,
+4,
+6,
+2,
+6,
+4,
+2,
+4,
+6,
+6,
+8,
+4,
+2,
+6,
+10,
+8,
+4,
+2,
+4,
+2,
+4,
+8,
+10,
+6,
+2,
+4,
+8,
+6,
+6,
+4,
+2,
+4,
+6,
+2,
+6,
+4,
+6,
+2,
+10,
+2,
+10,
+2,
+4,
+2,
+4,
+6,
+2,
+6,
+4,
+2,
+4,
+6,
+6,
+2,
+6,
+6,
+6,
+4,
+6,
+8,
+4,
+2,
+4,
+2,
+4,
+8,
+6,
+4,
+8,
+4,
+6,
+2,
+6,
+6,
+4,
+2,
+4,
+6,
+8,
+4,
+2,
+4,
+2,
+10,
+2,
+10,
+2,
+4,
+2,
+4,
+6,
+2,
+10,
+2,
+4,
+6,
+8,
+6,
+4,
+2,
+6,
+4,
+6,
+8,
+4,
+6,
+2,
+4,
+8,
+6,
+4,
+6,
+2,
+4,
+6,
+2,
+6,
+6,
+4,
+6,
+6,
+2,
+6,
+6,
+4,
+2,
+10,
+2,
+10,
+2,
+4,
+2,
+4,
+6,
+2,
+6,
+4,
+2,
+10,
+6,
+2,
+6,
+4,
+2,
+6,
+4,
+6,
+8,
+4,
+2,
+4,
+2,
+12,
+6,
+4,
+6,
+2,
+4,
+6,
+2,
+12,
+4,
+2,
+4,
+8,
+6,
+4,
+2,
+4,
+2,
+10,
+2,
+10,
+6,
+2,
+4,
+6,
+2,
+6,
+4,
+2,
+4,
+6,
+6,
+2,
+6,
+4,
+2,
+10,
+6,
+8,
+6,
+4,
+2,
+4,
+8,
+6,
+4,
+6,
+2,
+4,
+6,
+2,
+6,
+6,
+6,
+4,
+6,
+2,
+6,
+4,
+2,
+4,
+2,
+10,
+12,
+2,
+4,
+2,
+10,
+2,
+6,
+4,
+2,
+4,
+6,
+6,
+2,
+10,
+2,
+6,
+4,
+14,
+4,
+2,
+4,
+2,
+4,
+8,
+6,
+4,
+6,
+2,
+4,
+6,
+2,
+6,
+6,
+4,
+2,
+4,
+6,
+2,
+6,
+4,
+2,
+4,
+12,
+2,
+12
diff --git a/src/who.c b/src/who.c
new file mode 100644
index 0000000..db3af6e
--- /dev/null
+++ b/src/who.c
@@ -0,0 +1,827 @@
+/* GNU's who.
+ Copyright (C) 1992-2006 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by jla; revised by djm; revised again by mstone */
+
+/* Output format:
+ name [state] line time [activity] [pid] [comment] [exit]
+ state: -T
+ name, line, time: not -q
+ idle: -u
+*/
+
+#include <config.h>
+#include <getopt.h>
+#include <stdio.h>
+
+#include <sys/types.h>
+#include "system.h"
+
+#include "canon-host.h"
+#include "readutmp.h"
+#include "error.h"
+#include "hard-locale.h"
+#include "inttostr.h"
+#include "quote.h"
+#include "vasprintf.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "who"
+
+#define AUTHORS "Joseph Arceneaux", "David MacKenzie", "Michael Stone"
+
+#ifndef MAXHOSTNAMELEN
+# define MAXHOSTNAMELEN 64
+#endif
+
+#ifdef RUN_LVL
+# define UT_TYPE_RUN_LVL(U) UT_TYPE_EQ (U, RUN_LVL)
+#else
+# define UT_TYPE_RUN_LVL(U) false
+#endif
+
+#ifdef INIT_PROCESS
+# define UT_TYPE_INIT_PROCESS(U) UT_TYPE_EQ (U, INIT_PROCESS)
+#else
+# define UT_TYPE_INIT_PROCESS(U) false
+#endif
+
+#ifdef LOGIN_PROCESS
+# define UT_TYPE_LOGIN_PROCESS(U) UT_TYPE_EQ (U, LOGIN_PROCESS)
+#else
+# define UT_TYPE_LOGIN_PROCESS(U) false
+#endif
+
+#ifdef DEAD_PROCESS
+# define UT_TYPE_DEAD_PROCESS(U) UT_TYPE_EQ (U, DEAD_PROCESS)
+#else
+# define UT_TYPE_DEAD_PROCESS(U) false
+#endif
+
+#ifdef NEW_TIME
+# define UT_TYPE_NEW_TIME(U) UT_TYPE_EQ (U, NEW_TIME)
+#else
+# define UT_TYPE_NEW_TIME(U) false
+#endif
+
+#define IDLESTR_LEN 6
+
+#if HAVE_STRUCT_XTMP_UT_PID
+# define PIDSTR_DECL_AND_INIT(Var, Utmp_ent) \
+ char Var[INT_STRLEN_BOUND (Utmp_ent->ut_pid) + 1]; \
+ sprintf (Var, "%ld", (long int) (Utmp_ent->ut_pid))
+#else
+# define PIDSTR_DECL_AND_INIT(Var, Utmp_ent) \
+ const char *Var = ""
+#endif
+
+#if HAVE_STRUCT_XTMP_UT_ID
+# define UT_ID(U) ((U)->ut_id)
+#else
+# define UT_ID(U) "??"
+#endif
+
+char *ttyname ();
+
+/* The name this program was run with. */
+char *program_name;
+
+/* If true, attempt to canonicalize hostnames via a DNS lookup. */
+static bool do_lookup;
+
+/* If true, display only a list of usernames and count of
+ the users logged on.
+ Ignored for `who am i'. */
+static bool short_list;
+
+/* If true, display only name, line, and time fields. */
+static bool short_output;
+
+/* If true, display the hours:minutes since each user has touched
+ the keyboard, or "." if within the last minute, or "old" if
+ not within the last day. */
+static bool include_idle;
+
+/* If true, display a line at the top describing each field. */
+static bool include_heading;
+
+/* If true, display a `+' for each user if mesg y, a `-' if mesg n,
+ or a `?' if their tty cannot be statted. */
+static bool include_mesg;
+
+/* If true, display process termination & exit status. */
+static bool include_exit;
+
+/* If true, display the last boot time. */
+static bool need_boottime;
+
+/* If true, display dead processes. */
+static bool need_deadprocs;
+
+/* If true, display processes waiting for user login. */
+static bool need_login;
+
+/* If true, display processes started by init. */
+static bool need_initspawn;
+
+/* If true, display the last clock change. */
+static bool need_clockchange;
+
+/* If true, display the current runlevel. */
+static bool need_runlevel;
+
+/* If true, display user processes. */
+static bool need_users;
+
+/* If true, display info only for the controlling tty. */
+static bool my_line_only;
+
+/* The strftime format to use for login times, and its expected
+ output width. */
+static char const *time_format;
+static int time_format_width;
+
+/* for long options with no corresponding short option, use enum */
+enum
+{
+ LOOKUP_OPTION = CHAR_MAX + 1
+};
+
+static struct option const longopts[] = {
+ {"all", no_argument, NULL, 'a'},
+ {"boot", no_argument, NULL, 'b'},
+ {"count", no_argument, NULL, 'q'},
+ {"dead", no_argument, NULL, 'd'},
+ {"heading", no_argument, NULL, 'H'},
+ {"idle", no_argument, NULL, 'i'}, /* FIXME: deprecated: remove in late 2006 */
+ {"login", no_argument, NULL, 'l'},
+ {"lookup", no_argument, NULL, LOOKUP_OPTION},
+ {"message", no_argument, NULL, 'T'},
+ {"mesg", no_argument, NULL, 'T'},
+ {"process", no_argument, NULL, 'p'},
+ {"runlevel", no_argument, NULL, 'r'},
+ {"short", no_argument, NULL, 's'},
+ {"time", no_argument, NULL, 't'},
+ {"users", no_argument, NULL, 'u'},
+ {"writable", no_argument, NULL, 'T'},
+ {GETOPT_HELP_OPTION_DECL},
+ {GETOPT_VERSION_OPTION_DECL},
+ {NULL, 0, NULL, 0}
+};
+
+/* Return a string representing the time between WHEN and now.
+ BOOTTIME is the time of last reboot.
+ FIXME: locale? */
+static const char *
+idle_string (time_t when, time_t boottime)
+{
+ static time_t now = TYPE_MINIMUM (time_t);
+
+ if (now == TYPE_MINIMUM (time_t))
+ time (&now);
+
+ if (boottime < when && now - 24 * 60 * 60 < when && when <= now)
+ {
+ int seconds_idle = now - when;
+ if (seconds_idle < 60)
+ return " . ";
+ else
+ {
+ static char idle_hhmm[IDLESTR_LEN];
+ sprintf (idle_hhmm, "%02d:%02d",
+ seconds_idle / (60 * 60),
+ (seconds_idle % (60 * 60)) / 60);
+ return idle_hhmm;
+ }
+ }
+
+ return _(" old ");
+}
+
+/* Return a time string. */
+static const char *
+time_string (const STRUCT_UTMP *utmp_ent)
+{
+ static char buf[INT_STRLEN_BOUND (intmax_t) + sizeof "-%m-%d %H:%M"];
+
+ /* Don't take the address of UT_TIME_MEMBER directly.
+ Ulrich Drepper wrote:
+ ``... GNU libc (and perhaps other libcs as well) have extended
+ utmp file formats which do not use a simple time_t ut_time field.
+ In glibc, ut_time is a macro which selects for backward compatibility
+ the tv_sec member of a struct timeval value.'' */
+ time_t t = UT_TIME_MEMBER (utmp_ent);
+ struct tm *tmp = localtime (&t);
+
+ if (tmp)
+ {
+ strftime (buf, sizeof buf, time_format, tmp);
+ return buf;
+ }
+ else
+ return TYPE_SIGNED (time_t) ? imaxtostr (t, buf) : umaxtostr (t, buf);
+}
+
+/* Print formatted output line. Uses mostly arbitrary field sizes, probably
+ will need tweaking if any of the localization stuff is done, or for 64 bit
+ pids, etc. */
+static void
+print_line (int userlen, const char *user, const char state,
+ int linelen, const char *line,
+ const char *time_str, const char *idle, const char *pid,
+ const char *comment, const char *exitstr)
+{
+ static char mesg[3] = { ' ', 'x', '\0' };
+ char *buf;
+ char x_idle[1 + IDLESTR_LEN + 1];
+ char x_pid[1 + INT_STRLEN_BOUND (pid_t) + 1];
+ char *x_exitstr;
+ int err;
+
+ mesg[1] = state;
+
+ if (include_idle && !short_output && strlen (idle) < sizeof x_idle - 1)
+ sprintf (x_idle, " %-6s", idle);
+ else
+ *x_idle = '\0';
+
+ if (!short_output && strlen (pid) < sizeof x_pid - 1)
+ sprintf (x_pid, " %10s", pid);
+ else
+ *x_pid = '\0';
+
+ x_exitstr = xmalloc (include_exit ? 1 + MAX (12, strlen (exitstr)) + 1 : 1);
+ if (include_exit)
+ sprintf (x_exitstr, " %-12s", exitstr);
+ else
+ *x_exitstr = '\0';
+
+ err = asprintf (&buf,
+ "%-8.*s"
+ "%s"
+ " %-12.*s"
+ " %-*s"
+ "%s"
+ "%s"
+ " %-8s"
+ "%s"
+ ,
+ userlen, user ? user : " .",
+ include_mesg ? mesg : "",
+ linelen, line,
+ time_format_width,
+ time_str,
+ x_idle,
+ x_pid,
+ /* FIXME: it's not really clear whether the following
+ field should be in the short_output. A strict reading
+ of SUSv2 would suggest not, but I haven't seen any
+ implementations that actually work that way... */
+ comment,
+ x_exitstr
+ );
+ if (err == -1)
+ xalloc_die ();
+
+ {
+ /* Remove any trailing spaces. */
+ char *p = buf + strlen (buf);
+ while (*--p == ' ')
+ /* empty */;
+ *(p + 1) = '\0';
+ }
+
+ puts (buf);
+ free (buf);
+ free (x_exitstr);
+}
+
+/* Send properly parsed USER_PROCESS info to print_line. The most
+ recent boot time is BOOTTIME. */
+static void
+print_user (const STRUCT_UTMP *utmp_ent, time_t boottime)
+{
+ struct stat stats;
+ time_t last_change;
+ char mesg;
+ char idlestr[IDLESTR_LEN + 1];
+ static char *hoststr;
+#if HAVE_UT_HOST
+ static size_t hostlen;
+#endif
+
+#define DEV_DIR_WITH_TRAILING_SLASH "/dev/"
+#define DEV_DIR_LEN (sizeof (DEV_DIR_WITH_TRAILING_SLASH) - 1)
+
+ char line[sizeof (utmp_ent->ut_line) + DEV_DIR_LEN + 1];
+ PIDSTR_DECL_AND_INIT (pidstr, utmp_ent);
+
+ /* Copy ut_line into LINE, prepending `/dev/' if ut_line is not
+ already an absolute file name. Some systems may put the full,
+ absolute file name in ut_line. */
+ if (utmp_ent->ut_line[0] == '/')
+ {
+ strncpy (line, utmp_ent->ut_line, sizeof (utmp_ent->ut_line));
+ line[sizeof (utmp_ent->ut_line)] = '\0';
+ }
+ else
+ {
+ strcpy (line, DEV_DIR_WITH_TRAILING_SLASH);
+ strncpy (line + DEV_DIR_LEN, utmp_ent->ut_line,
+ sizeof (utmp_ent->ut_line));
+ line[DEV_DIR_LEN + sizeof (utmp_ent->ut_line)] = '\0';
+ }
+
+ if (stat (line, &stats) == 0)
+ {
+ mesg = (stats.st_mode & S_IWGRP) ? '+' : '-';
+ last_change = stats.st_atime;
+ }
+ else
+ {
+ mesg = '?';
+ last_change = 0;
+ }
+
+ if (last_change)
+ sprintf (idlestr, "%.*s", IDLESTR_LEN, idle_string (last_change, boottime));
+ else
+ sprintf (idlestr, " ?");
+
+#if HAVE_UT_HOST
+ if (utmp_ent->ut_host[0])
+ {
+ char ut_host[sizeof (utmp_ent->ut_host) + 1];
+ char *host = NULL;
+ char *display = NULL;
+
+ /* Copy the host name into UT_HOST, and ensure it's nul terminated. */
+ strncpy (ut_host, utmp_ent->ut_host, sizeof (utmp_ent->ut_host));
+ ut_host[sizeof (utmp_ent->ut_host)] = '\0';
+
+ /* Look for an X display. */
+ display = strchr (ut_host, ':');
+ if (display)
+ *display++ = '\0';
+
+ if (*ut_host && do_lookup)
+ {
+ /* See if we can canonicalize it. */
+ host = canon_host (ut_host);
+ }
+
+ if (! host)
+ host = ut_host;
+
+ if (display)
+ {
+ if (hostlen < strlen (host) + strlen (display) + 4)
+ {
+ hostlen = strlen (host) + strlen (display) + 4;
+ hoststr = xrealloc (hoststr, hostlen);
+ }
+ sprintf (hoststr, "(%s:%s)", host, display);
+ }
+ else
+ {
+ if (hostlen < strlen (host) + 3)
+ {
+ hostlen = strlen (host) + 3;
+ hoststr = xrealloc (hoststr, hostlen);
+ }
+ sprintf (hoststr, "(%s)", host);
+ }
+
+ if (host != ut_host)
+ free (host);
+ }
+ else
+ {
+ if (hostlen < 1)
+ {
+ hostlen = 1;
+ hoststr = xrealloc (hoststr, hostlen);
+ }
+ *hoststr = '\0';
+ }
+#endif
+
+ print_line (sizeof UT_USER (utmp_ent), UT_USER (utmp_ent), mesg,
+ sizeof utmp_ent->ut_line, utmp_ent->ut_line,
+ time_string (utmp_ent), idlestr, pidstr,
+ hoststr ? hoststr : "", "");
+}
+
+static void
+print_boottime (const STRUCT_UTMP *utmp_ent)
+{
+ print_line (-1, "", ' ', -1, "system boot",
+ time_string (utmp_ent), "", "", "", "");
+}
+
+static char *
+make_id_equals_comment (STRUCT_UTMP const *utmp_ent)
+{
+ char *comment = xmalloc (strlen (_("id=")) + sizeof UT_ID (utmp_ent) + 1);
+
+ strcpy (comment, _("id="));
+ strncat (comment, UT_ID (utmp_ent), sizeof UT_ID (utmp_ent));
+ return comment;
+}
+
+static void
+print_deadprocs (const STRUCT_UTMP *utmp_ent)
+{
+ static char *exitstr;
+ char *comment = make_id_equals_comment (utmp_ent);
+ PIDSTR_DECL_AND_INIT (pidstr, utmp_ent);
+
+ if (!exitstr)
+ exitstr = xmalloc (strlen (_("term="))
+ + INT_STRLEN_BOUND (UT_EXIT_E_TERMINATION (utmp_ent)) + 1
+ + strlen (_("exit="))
+ + INT_STRLEN_BOUND (UT_EXIT_E_EXIT (utmp_ent))
+ + 1);
+ sprintf (exitstr, "%s%d %s%d", _("term="), UT_EXIT_E_TERMINATION (utmp_ent),
+ _("exit="), UT_EXIT_E_EXIT (utmp_ent));
+
+ /* FIXME: add idle time? */
+
+ print_line (-1, "", ' ', sizeof utmp_ent->ut_line, utmp_ent->ut_line,
+ time_string (utmp_ent), "", pidstr, comment, exitstr);
+ free (comment);
+}
+
+static void
+print_login (const STRUCT_UTMP *utmp_ent)
+{
+ char *comment = make_id_equals_comment (utmp_ent);
+ PIDSTR_DECL_AND_INIT (pidstr, utmp_ent);
+
+ /* FIXME: add idle time? */
+
+ print_line (-1, "LOGIN", ' ', sizeof utmp_ent->ut_line, utmp_ent->ut_line,
+ time_string (utmp_ent), "", pidstr, comment, "");
+ free (comment);
+}
+
+static void
+print_initspawn (const STRUCT_UTMP *utmp_ent)
+{
+ char *comment = make_id_equals_comment (utmp_ent);
+ PIDSTR_DECL_AND_INIT (pidstr, utmp_ent);
+
+ print_line (-1, "", ' ', sizeof utmp_ent->ut_line, utmp_ent->ut_line,
+ time_string (utmp_ent), "", pidstr, comment, "");
+ free (comment);
+}
+
+static void
+print_clockchange (const STRUCT_UTMP *utmp_ent)
+{
+ /* FIXME: handle NEW_TIME & OLD_TIME both */
+ print_line (-1, "", ' ', -1, _("clock change"),
+ time_string (utmp_ent), "", "", "", "");
+}
+
+static void
+print_runlevel (const STRUCT_UTMP *utmp_ent)
+{
+ static char *runlevline, *comment;
+ unsigned char last = UT_PID (utmp_ent) / 256;
+ unsigned char curr = UT_PID (utmp_ent) % 256;
+
+ if (!runlevline)
+ runlevline = xmalloc (strlen (_("run-level")) + 3);
+ sprintf (runlevline, "%s %c", _("run-level"), curr);
+
+ if (!comment)
+ comment = xmalloc (strlen (_("last=")) + 2);
+ sprintf (comment, "%s%c", _("last="), (last == 'N') ? 'S' : last);
+
+ print_line (-1, "", ' ', -1, runlevline, time_string (utmp_ent),
+ "", "", comment, "");
+
+ return;
+}
+
+/* Print the username of each valid entry and the number of valid entries
+ in UTMP_BUF, which should have N elements. */
+static void
+list_entries_who (size_t n, const STRUCT_UTMP *utmp_buf)
+{
+ unsigned long int entries = 0;
+ char const *separator = "";
+
+ while (n--)
+ {
+ if (IS_USER_PROCESS (utmp_buf))
+ {
+ char *trimmed_name;
+
+ trimmed_name = extract_trimmed_name (utmp_buf);
+
+ printf ("%s%s", separator, trimmed_name);
+ free (trimmed_name);
+ separator = " ";
+ entries++;
+ }
+ utmp_buf++;
+ }
+ printf (_("\n# users=%lu\n"), entries);
+}
+
+static void
+print_heading (void)
+{
+ print_line (-1, _("NAME"), ' ', -1, _("LINE"), _("TIME"), _("IDLE"),
+ _("PID"), _("COMMENT"), _("EXIT"));
+}
+
+/* Display UTMP_BUF, which should have N entries. */
+static void
+scan_entries (size_t n, const STRUCT_UTMP *utmp_buf)
+{
+ char *ttyname_b IF_LINT ( = NULL);
+ time_t boottime = TYPE_MINIMUM (time_t);
+
+ if (include_heading)
+ print_heading ();
+
+ if (my_line_only)
+ {
+ ttyname_b = ttyname (STDIN_FILENO);
+ if (!ttyname_b)
+ return;
+ if (strncmp (ttyname_b, DEV_DIR_WITH_TRAILING_SLASH, DEV_DIR_LEN) == 0)
+ ttyname_b += DEV_DIR_LEN; /* Discard /dev/ prefix. */
+ }
+
+ while (n--)
+ {
+ if (!my_line_only ||
+ strncmp (ttyname_b, utmp_buf->ut_line,
+ sizeof (utmp_buf->ut_line)) == 0)
+ {
+ if (need_users && IS_USER_PROCESS (utmp_buf))
+ print_user (utmp_buf, boottime);
+ else if (need_runlevel && UT_TYPE_RUN_LVL (utmp_buf))
+ print_runlevel (utmp_buf);
+ else if (need_boottime && UT_TYPE_BOOT_TIME (utmp_buf))
+ print_boottime (utmp_buf);
+ /* I've never seen one of these, so I don't know what it should
+ look like :^)
+ FIXME: handle OLD_TIME also, perhaps show the delta? */
+ else if (need_clockchange && UT_TYPE_NEW_TIME (utmp_buf))
+ print_clockchange (utmp_buf);
+ else if (need_initspawn && UT_TYPE_INIT_PROCESS (utmp_buf))
+ print_initspawn (utmp_buf);
+ else if (need_login && UT_TYPE_LOGIN_PROCESS (utmp_buf))
+ print_login (utmp_buf);
+ else if (need_deadprocs && UT_TYPE_DEAD_PROCESS (utmp_buf))
+ print_deadprocs (utmp_buf);
+ }
+
+ if (UT_TYPE_BOOT_TIME (utmp_buf))
+ boottime = UT_TIME_MEMBER (utmp_buf);
+
+ utmp_buf++;
+ }
+}
+
+/* Display a list of who is on the system, according to utmp file FILENAME.
+ Use read_utmp OPTIONS to read the file. */
+static void
+who (const char *filename, int options)
+{
+ size_t n_users;
+ STRUCT_UTMP *utmp_buf;
+
+ if (read_utmp (filename, &n_users, &utmp_buf, options) != 0)
+ error (EXIT_FAILURE, errno, "%s", filename);
+
+ if (short_list)
+ list_entries_who (n_users, utmp_buf);
+ else
+ scan_entries (n_users, utmp_buf);
+
+ free (utmp_buf);
+}
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]... [ FILE | ARG1 ARG2 ]\n"), program_name);
+ fputs (_("\
+\n\
+ -a, --all same as -b -d --login -p -r -t -T -u\n\
+ -b, --boot time of last system boot\n\
+ -d, --dead print dead processes\n\
+ -H, --heading print line of column headings\n\
+"), stdout);
+ fputs (_("\
+ -l, --login print system login processes\n\
+"), stdout);
+ fputs (_("\
+ --lookup attempt to canonicalize hostnames via DNS\n\
+ -m only hostname and user associated with stdin\n\
+ -p, --process print active processes spawned by init\n\
+"), stdout);
+ fputs (_("\
+ -q, --count all login names and number of users logged on\n\
+ -r, --runlevel print current runlevel\n\
+ -s, --short print only name, line, and time (default)\n\
+ -t, --time print last system clock change\n\
+"), stdout);
+ fputs (_("\
+ -T, -w, --mesg add user's message status as +, - or ?\n\
+ -u, --users list users logged in\n\
+ --message same as -T\n\
+ --writable same as -T\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\
+\n\
+If FILE is not specified, use %s. %s as FILE is common.\n\
+If ARG1 ARG2 given, -m presumed: `am i' or `mom likes' are usual.\n\
+"), UTMP_FILE, WTMP_FILE);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ int optc;
+ bool assumptions = true;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ while ((optc = getopt_long (argc, argv, "abdilmpqrstuwHT", longopts, NULL))
+ != -1)
+ {
+ switch (optc)
+ {
+ case 'a':
+ need_boottime = true;
+ need_deadprocs = true;
+ need_login = true;
+ need_initspawn = true;
+ need_runlevel = true;
+ need_clockchange = true;
+ need_users = true;
+ include_mesg = true;
+ include_idle = true;
+ include_exit = true;
+ assumptions = false;
+ break;
+
+ case 'b':
+ need_boottime = true;
+ assumptions = false;
+ break;
+
+ case 'd':
+ need_deadprocs = true;
+ include_idle = true;
+ include_exit = true;
+ assumptions = false;
+ break;
+
+ case 'H':
+ include_heading = true;
+ break;
+
+ case 'l':
+ need_login = true;
+ include_idle = true;
+ assumptions = false;
+ break;
+
+ case 'm':
+ my_line_only = true;
+ break;
+
+ case 'p':
+ need_initspawn = true;
+ assumptions = false;
+ break;
+
+ case 'q':
+ short_list = true;
+ break;
+
+ case 'r':
+ need_runlevel = true;
+ include_idle = true;
+ assumptions = false;
+ break;
+
+ case 's':
+ short_output = true;
+ break;
+
+ case 't':
+ need_clockchange = true;
+ assumptions = false;
+ break;
+
+ case 'T':
+ case 'w':
+ include_mesg = true;
+ break;
+
+ case 'i':
+ error (0, 0,
+ _("Warning: -i will be removed in a future release; \
+ use -u instead"));
+ /* Fall through. */
+ case 'u':
+ need_users = true;
+ include_idle = true;
+ assumptions = false;
+ break;
+
+ case LOOKUP_OPTION:
+ do_lookup = true;
+ break;
+
+ case_GETOPT_HELP_CHAR;
+
+ case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+
+ default:
+ usage (EXIT_FAILURE);
+ }
+ }
+
+ if (assumptions)
+ {
+ need_users = true;
+ short_output = true;
+ }
+
+ if (include_exit)
+ {
+ short_output = false;
+ }
+
+ if (hard_locale (LC_TIME))
+ {
+ time_format = "%Y-%m-%d %H:%M";
+ time_format_width = 4 + 1 + 2 + 1 + 2 + 1 + 2 + 1 + 2;
+ }
+ else
+ {
+ time_format = "%b %e %H:%M";
+ time_format_width = 3 + 1 + 2 + 1 + 2 + 1 + 2;
+ }
+
+ switch (argc - optind)
+ {
+ case 2: /* who <blurf> <glop> */
+ my_line_only = true;
+ /* Fall through. */
+ case -1:
+ case 0: /* who */
+ who (UTMP_FILE, READ_UTMP_CHECK_PIDS);
+ break;
+
+ case 1: /* who <utmp file> */
+ who (argv[optind], 0);
+ break;
+
+ default: /* lose */
+ error (0, 0, _("extra operand %s"), quote (argv[optind + 2]));
+ usage (EXIT_FAILURE);
+ }
+
+ exit (EXIT_SUCCESS);
+}
diff --git a/src/whoami.c b/src/whoami.c
new file mode 100644
index 0000000..c4a2b5e
--- /dev/null
+++ b/src/whoami.c
@@ -0,0 +1,98 @@
+/* whoami -- print effective userid
+
+ Copyright (C) 89,90, 1991-1997, 1999-2002, 2004, 2005 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Equivalent to `id -un'. */
+/* Written by Richard Mlynarik. */
+
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <getopt.h>
+
+#include "system.h"
+#include "error.h"
+#include "long-options.h"
+#include "quote.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "whoami"
+
+#define AUTHORS "Richard Mlynarik"
+
+/* The name this program was run with. */
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("Usage: %s [OPTION]...\n"), program_name);
+ fputs (_("\
+Print the user name associated with the current effective user ID.\n\
+Same as id -un.\n\
+\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ struct passwd *pw;
+ uid_t uid;
+
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "", NULL, NULL) != -1)
+ usage (EXIT_FAILURE);
+
+ if (optind != argc)
+ {
+ error (0, 0, _("extra operand %s"), quote (argv[optind]));
+ usage (EXIT_FAILURE);
+ }
+
+ uid = geteuid ();
+ pw = getpwuid (uid);
+ if (pw)
+ {
+ puts (pw->pw_name);
+ exit (EXIT_SUCCESS);
+ }
+ fprintf (stderr, _("%s: cannot find name for user ID %lu\n"),
+ program_name, (unsigned long int) uid);
+ exit (EXIT_FAILURE);
+}
diff --git a/src/yes.c b/src/yes.c
new file mode 100644
index 0000000..4f09f68
--- /dev/null
+++ b/src/yes.c
@@ -0,0 +1,96 @@
+/* yes - output a string repeatedly until killed
+ Copyright (C) 1991-1997, 1999-2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* David MacKenzie <djm@gnu.ai.mit.edu> */
+
+#include <config.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <getopt.h>
+
+#include "system.h"
+
+#include "error.h"
+#include "long-options.h"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "yes"
+
+#define AUTHORS "David MacKenzie"
+
+/* The name this program was run with. */
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [STRING]...\n\
+ or: %s OPTION\n\
+"),
+ program_name, program_name);
+
+ fputs (_("\
+Repeatedly output a line with all specified STRING(s), or `y'.\n\
+\n\
+"), stdout);
+ fputs (HELP_OPTION_DESCRIPTION, stdout);
+ fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char **argv)
+{
+ initialize_main (&argc, &argv);
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, GNU_PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "+", NULL, NULL) != -1)
+ usage (EXIT_FAILURE);
+
+ if (argc <= optind)
+ {
+ optind = argc;
+ argv[argc++] = "y";
+ }
+
+ for (;;)
+ {
+ int i;
+ for (i = optind; i < argc; i++)
+ if (fputs (argv[i], stdout) == EOF
+ || putchar (i == argc - 1 ? '\n' : ' ') == EOF)
+ {
+ error (0, errno, _("standard output"));
+ exit (EXIT_FAILURE);
+ }
+ }
+}
diff --git a/tests/Coreutils.pm b/tests/Coreutils.pm
new file mode 100644
index 0000000..dd90a30
--- /dev/null
+++ b/tests/Coreutils.pm
@@ -0,0 +1,541 @@
+package Coreutils;
+# This is a testing framework.
+
+# Copyright (C) 1998, 2000, 2001, 2002, 2004, 2005, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+require 5.003;
+use strict;
+use vars qw($VERSION @ISA @EXPORT);
+
+use FileHandle;
+use File::Compare qw(compare);
+
+@ISA = qw(Exporter);
+($VERSION = '$Revision: 1.5 $ ') =~ tr/[0-9].//cd;
+@EXPORT = qw (run_tests);
+
+my $debug = $ENV{DEBUG};
+
+my @Types = qw (IN IN_PIPE OUT ERR AUX CMP EXIT PRE POST OUT_SUBST
+ ERR_SUBST ENV ENV_DEL);
+my %Types = map {$_ => 1} @Types;
+my %Zero_one_type = map {$_ => 1}
+ qw (OUT ERR EXIT PRE POST OUT_SUBST ERR_SUBST ENV);
+my $srcdir = $ENV{srcdir};
+my $Global_count = 1;
+
+# When running in a DJGPP environment, make $ENV{SHELL} point to bash.
+# Otherwise, a bad shell might be used (e.g. command.com) and many
+# tests would fail.
+defined $ENV{DJDIR}
+ and $ENV{SHELL} = "$ENV{DJDIR}/bin/bash.exe";
+
+# A file spec: a scalar or a reference to a single-keyed hash
+# ================
+# 'contents' contents only (file name is derived from test name)
+# {filename => 'contents'} filename and contents
+# {filename => undef} filename only -- $(srcdir)/filename must exist
+#
+# FIXME: If there is more than one input file, then you can't specify `REDIR'.
+# PIPE is still ok.
+#
+# I/O spec: a hash ref with the following properties
+# ================
+# - one key/value pair
+# - the key must be one of these strings: IN, OUT, ERR, AUX, CMP, EXIT
+# - the value must be a file spec
+# {OUT => 'data'} put data in a temp file and compare it to stdout from cmd
+# {OUT => {'filename'=>undef}} compare contents of existing filename to
+# stdout from cmd
+# {OUT => {'filename'=>[$CTOR, $DTOR]}} $CTOR and $DTOR are references to
+# functions, each which is passed the single argument `filename'.
+# $CTOR must create `filename'.
+# DTOR may be omitted in which case `sub{unlink @_[0]}' is used.
+# FIXME: implement this
+# {ERR => ...}
+# Same as for OUT, but compare with stderr, not stdout.
+# {OUT_SUBST => 's/variable_output/expected_output/'}
+# Transform actual standard output before comparing it against expected output.
+# This is useful e.g. for programs like du that produce output that
+# varies a lot from system. E.g., an empty file may consume zero file
+# blocks, or more, depending on the OS and on the file system type.
+# {ERR_SUBST => 's/variable_output/expected_output/'}
+# Transform actual stderr output before comparing it against expected.
+# This is useful when verifying that we get a meaningful diagnostic.
+# For example, in rm/fail-2eperm, we have to account for three different
+# diagnostics: Operation not permitted, Not owner, and Permission denied.
+# {EXIT => N} expect exit status of cmd to be N
+# {ENV => 'VAR=val ...'}
+# Prepend 'VAR=val ...' to the command that we execute via `system'.
+# {ENV_DEL => 'VAR'}
+# Remove VAR from the environment just before running the corresponding
+# command, and restore any value just afterwards.
+#
+# There may be many input file specs. File names from the input specs
+# are concatenated in order on the command line.
+# There may be at most one of the OUT-, ERR-, and EXIT-keyed specs.
+# If the OUT-(or ERR)-keyed hash ref is omitted, then expect no output
+# on stdout (or stderr).
+# If the EXIT-keyed one is omitted, then expect the exit status to be zero.
+
+# FIXME: Make sure that no junkfile is also listed as a
+# non-junkfile (i.e. with undef for contents)
+
+sub _shell_quote ($)
+{
+ my ($string) = @_;
+ $string =~ s/\'/\'\\\'\'/g;
+ return "'$string'";
+}
+
+sub _create_file ($$$$)
+{
+ my ($program_name, $test_name, $file_name, $data) = @_;
+ my $file;
+ if (defined $file_name)
+ {
+ $file = $file_name;
+ }
+ else
+ {
+ $file = "$test_name.$Global_count";
+ ++$Global_count;
+ }
+
+ warn "creating file `$file' with contents `$data'\n" if $debug;
+
+ # The test spec gave a string.
+ # Write it to a temp file and return tempfile name.
+ my $fh = new FileHandle "> $file";
+ die "$program_name: $file: $!\n" if ! $fh;
+ print $fh $data;
+ $fh->close || die "$program_name: $file: $!\n";
+
+ return $file;
+}
+
+sub _compare_files ($$$$$)
+{
+ my ($program_name, $test_name, $in_or_out, $actual, $expected) = @_;
+
+ my $differ = compare ($expected, $actual);
+ if ($differ)
+ {
+ my $info = (defined $in_or_out ? "std$in_or_out " : '');
+ warn "$program_name: test $test_name: ${info}mismatch, comparing "
+ . "$actual (actual) and $expected (expected)\n";
+ # Ignore any failure, discard stderr.
+ system "diff -c $actual $expected 2>/dev/null";
+ }
+
+ return $differ;
+}
+
+sub _process_file_spec ($$$$$)
+{
+ my ($program_name, $test_name, $file_spec, $type, $junk_files) = @_;
+
+ my ($file_name, $contents);
+ if (!ref $file_spec)
+ {
+ ($file_name, $contents) = (undef, $file_spec);
+ }
+ elsif (ref $file_spec eq 'HASH')
+ {
+ my $n = keys %$file_spec;
+ die "$program_name: $test_name: $type spec has $n elements --"
+ . " expected 1\n"
+ if $n != 1;
+ ($file_name, $contents) = each %$file_spec;
+
+ # This happens for the AUX hash in an io_spec like this:
+ # {CMP=> ['zy123utsrqponmlkji', {'@AUX@'=> undef}]},
+ defined $contents
+ or return $file_name;
+ }
+ else
+ {
+ die "$program_name: $test_name: invalid RHS in $type-spec\n"
+ }
+
+ my $is_junk_file = (! defined $file_name
+ || (($type eq 'IN' || $type eq 'AUX' || $type eq 'CMP')
+ && defined $contents));
+ my $file = _create_file ($program_name, $test_name,
+ $file_name, $contents);
+
+ if ($is_junk_file)
+ {
+ push @$junk_files, $file
+ }
+ else
+ {
+ # FIXME: put $srcdir in here somewhere
+ warn "$program_name: $test_name: specified file `$file' does"
+ . " not exist\n"
+ if ! -f "$srcdir/$file";
+ }
+
+ return $file;
+}
+
+sub _at_replace ($$)
+{
+ my ($map, $s) = @_;
+ foreach my $eo (qw (AUX OUT ERR))
+ {
+ my $f = $map->{$eo};
+ $f
+ and $s =~ /\@$eo\@/
+ and $s =~ s/\@$eo\@/$f/g;
+ }
+ return $s;
+}
+
+# FIXME: cleanup on interrupt
+# FIXME: extract `do_1_test' function
+
+# FIXME: having to include $program_name here is an expedient kludge.
+# Library code doesn't `die'.
+sub run_tests ($$$$$)
+{
+ my ($program_name, $prog, $t_spec, $save_temps, $verbose) = @_;
+
+ # Warn about empty t_spec.
+ # FIXME
+
+ # Remove all temp files upon interrupt.
+ # FIXME
+
+ # Verify that test names are distinct.
+ my $bad_test_name = 0;
+ my %seen;
+ my %seen_8dot3;
+ my $t;
+ foreach $t (@$t_spec)
+ {
+ my $test_name = $t->[0];
+ if ($seen{$test_name})
+ {
+ warn "$program_name: $test_name: duplicate test name\n";
+ $bad_test_name = 1;
+ }
+ $seen{$test_name} = 1;
+
+ if (0)
+ {
+ my $t8 = lc substr $test_name, 0, 8;
+ if ($seen_8dot3{$t8})
+ {
+ warn "$program_name: 8.3 test name conflict: "
+ . "$test_name, $seen_8dot3{$t8}\n";
+ $bad_test_name = 1;
+ }
+ $seen_8dot3{$t8} = $test_name;
+ }
+
+ # The test name may be no longer than 12 bytes,
+ # so that we can add a two-byte suffix without exceeding
+ # the maximum of 14 imposed on some old file systems.
+ if (14 < (length $test_name) + 2)
+ {
+ warn "$program_name: $test_name: test name is too long (> 12)\n";
+ $bad_test_name = 1;
+ }
+ }
+ return 1 if $bad_test_name;
+
+ # FIXME check exit status
+ system ($prog, '--version') if $verbose;
+
+ my @junk_files;
+ my $fail = 0;
+ foreach $t (@$t_spec)
+ {
+ my @post_compare;
+ my $test_name = shift @$t;
+ my $expect = {};
+ my ($pre, $post);
+
+ # FIXME: maybe don't reset this.
+ $Global_count = 1;
+ my @args;
+ my $io_spec;
+ my %seen_type;
+ my @env_delete;
+ my $env_prefix = '';
+ my $input_pipe_cmd;
+ foreach $io_spec (@$t)
+ {
+ if (!ref $io_spec)
+ {
+ push @args, $io_spec;
+ next;
+ }
+
+ die "$program_name: $test_name: invalid test spec\n"
+ if ref $io_spec ne 'HASH';
+
+ my $n = keys %$io_spec;
+ die "$program_name: $test_name: spec has $n elements --"
+ . " expected 1\n"
+ if $n != 1;
+ my ($type, $val) = each %$io_spec;
+ die "$program_name: $test_name: invalid key `$type' in test spec\n"
+ if ! $Types{$type};
+
+ # Make sure there's no more than one of OUT, ERR, EXIT, etc.
+ die "$program_name: $test_name: more than one $type spec\n"
+ if $Zero_one_type{$type} and $seen_type{$type}++;
+
+ if ($type eq 'PRE' or $type eq 'POST')
+ {
+ $expect->{$type} = $val;
+ next;
+ }
+
+ if ($type eq 'CMP')
+ {
+ my $t = ref $val;
+ $t && $t eq 'ARRAY'
+ or die "$program_name: $test_name: invalid CMP spec\n";
+ @$val == 2
+ or die "$program_name: $test_name: invalid CMP list; must have"
+ . " exactly 2 elements\n";
+ my @cmp_files;
+ foreach my $e (@$val)
+ {
+ my $r = ref $e;
+ $r && $r ne 'HASH'
+ and die "$program_name: $test_name: invalid element ($r)"
+ . " in CMP list; only scalars and hash references "
+ . "are allowed\n";
+ if ($r && $r eq 'HASH')
+ {
+ my $n = keys %$e;
+ $n == 1
+ or die "$program_name: $test_name: CMP spec has $n "
+ . "elements -- expected 1\n";
+
+ # Replace any `@AUX@' in the key of %$e.
+ my ($ff, $val) = each %$e;
+ my $new_ff = _at_replace $expect, $ff;
+ if ($new_ff ne $ff)
+ {
+ $e->{$new_ff} = $val;
+ delete $e->{$ff};
+ }
+ }
+ my $cmp_file = _process_file_spec ($program_name, $test_name,
+ $e, $type, \@junk_files);
+ push @cmp_files, $cmp_file;
+ }
+ push @post_compare, [@cmp_files];
+
+ $expect->{$type} = $val;
+ next;
+ }
+
+ if ($type eq 'EXIT')
+ {
+ die "$program_name: $test_name: invalid EXIT code\n"
+ if $val !~ /^\d+$/;
+ # FIXME: make sure $data is numeric
+ $expect->{EXIT} = $val;
+ next;
+ }
+
+ if ($type =~ /^(OUT|ERR)_SUBST$/)
+ {
+ $expect->{RESULT_SUBST} ||= {};
+ $expect->{RESULT_SUBST}->{$1} = $val;
+ next;
+ }
+
+ if ($type eq 'ENV')
+ {
+ $env_prefix = "$val ";
+ next;
+ }
+
+ if ($type eq 'ENV_DEL')
+ {
+ push @env_delete, $val;
+ next;
+ }
+
+ my $file = _process_file_spec ($program_name, $test_name, $val,
+ $type, \@junk_files);
+
+ if ($type eq 'IN' || $type eq 'IN_PIPE')
+ {
+ my $quoted_file = _shell_quote $file;
+ if ($type eq 'IN_PIPE')
+ {
+ defined $input_pipe_cmd
+ and die "$program_name: $test_name: only one input"
+ . " may be specified with IN_PIPE\n";
+ $input_pipe_cmd = "cat $quoted_file |";
+ }
+ else
+ {
+ push @args, $quoted_file;
+ }
+ }
+ elsif ($type eq 'AUX' || $type eq 'OUT' || $type eq 'ERR')
+ {
+ $expect->{$type} = $file;
+ }
+ else
+ {
+ die "$program_name: $test_name: invalid type: $type\n"
+ }
+ }
+
+ # Expect an exit status of zero if it's not specified.
+ $expect->{EXIT} ||= 0;
+
+ # Allow ERR to be omitted -- in that case, expect no error output.
+ foreach my $eo (qw (OUT ERR))
+ {
+ if (!exists $expect->{$eo})
+ {
+ $expect->{$eo} = _create_file ($program_name, $test_name,
+ undef, '');
+ push @junk_files, $expect->{$eo};
+ }
+ }
+
+ # FIXME: Does it ever make sense to specify a filename *and* contents
+ # in OUT or ERR spec?
+
+ # FIXME: this is really suboptimal...
+ my @new_args;
+ foreach my $a (@args)
+ {
+ $a = _at_replace $expect, $a;
+ push @new_args, $a;
+ }
+ @args = @new_args;
+
+ warn "$test_name...\n" if $verbose;
+ &{$expect->{PRE}} if $expect->{PRE};
+ my %actual;
+ $actual{OUT} = "$test_name.O";
+ $actual{ERR} = "$test_name.E";
+ push @junk_files, $actual{OUT}, $actual{ERR};
+ my @cmd = ($prog, @args, "> $actual{OUT}", "2> $actual{ERR}");
+ defined $input_pipe_cmd
+ and unshift @cmd, $input_pipe_cmd;
+ my $cmd_str = $env_prefix . join (' ', @cmd);
+
+ # Delete from the environment any symbols specified by syntax
+ # like this: {ENV_DEL => 'TZ'}.
+ my %pushed_env;
+ foreach my $env_sym (@env_delete)
+ {
+ my $val = delete $ENV{$env_sym};
+ defined $val
+ and $pushed_env{$env_sym} = $val;
+ }
+
+ warn "Running command: `$cmd_str'\n" if $debug;
+ my $rc = 0xffff & system $cmd_str;
+
+ # Restore any environment setting we changed via a deletion.
+ foreach my $env_sym (keys %pushed_env)
+ {
+ $ENV{$env_sym} = $pushed_env{$env_sym};
+ }
+
+ if ($rc == 0xff00)
+ {
+ warn "$program_name: test $test_name failed: command failed:\n"
+ . " `$cmd_str': $!\n";
+ $fail = 1;
+ goto cleanup;
+ }
+ $rc >>= 8 if $rc > 0x80;
+ if ($expect->{EXIT} != $rc)
+ {
+ warn "$program_name: test $test_name failed: exit status mismatch:"
+ . " expected $expect->{EXIT}, got $rc\n";
+ $fail = 1;
+ goto cleanup;
+ }
+
+ foreach my $eo (qw (OUT ERR))
+ {
+ my $subst_expr = $expect->{RESULT_SUBST}->{$eo};
+ if (defined $subst_expr)
+ {
+ my $out = $actual{$eo};
+ my $orig = "$out.orig";
+
+ # Move $out aside (to $orig), then recreate $out
+ # by transforming each line of $orig via $subst_expr.
+ rename $out, $orig
+ or (warn "$program_name: cannot rename $out to $orig: $!\n"),
+ $fail = 1, next;
+ open IN, $orig
+ or (warn "$program_name: cannot open $orig for reading: $!\n"),
+ $fail = 1, (unlink $orig), next;
+ unlink $orig
+ or (warn "$program_name: cannot unlink $orig: $!\n"),
+ $fail = 1;
+ open OUT, ">$out"
+ or (warn "$program_name: cannot open $out for writing: $!\n"),
+ $fail = 1, next;
+ while (defined (my $line = <IN>))
+ {
+ eval "\$_ = \$line; $subst_expr; \$line = \$_";
+ print OUT $line;
+ }
+ close IN;
+ close OUT
+ or (warn "$program_name: failed to write $out: $!\n"),
+ $fail = 1, next;
+ }
+
+ my $eo_lower = lc $eo;
+ _compare_files ($program_name, $test_name, $eo_lower,
+ $actual{$eo}, $expect->{$eo})
+ and $fail = 1;
+ }
+
+ foreach my $pair (@post_compare)
+ {
+ my ($expected, $actual) = @$pair;
+ _compare_files $program_name, $test_name, undef, $actual, $expected
+ and $fail = 1;
+ }
+
+ cleanup:
+ &{$expect->{POST}} if $expect->{POST};
+
+ }
+
+ # FIXME: maybe unlink files inside the big foreach loop?
+ unlink @junk_files if ! $save_temps;
+
+ return $fail;
+}
+
+## package return
+1;
diff --git a/tests/Makefile.am b/tests/Makefile.am
new file mode 100644
index 0000000..aaf0a29
--- /dev/null
+++ b/tests/Makefile.am
@@ -0,0 +1,60 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+
+# Sort in traditional ASCII order, regardless of the current locale;
+# otherwise we may get into trouble with distinct strings that the
+# current locale considers to be equal.
+ASSORT = LC_ALL=C sort
+
+all_programs = (cd ../src && MAKEFLAGS= $(MAKE) -s all_programs.list)
+
+TESTS = help-version
+TESTS_ENVIRONMENT = \
+ all_programs="`$(all_programs)`" \
+ PACKAGE_BUGREPORT=$(PACKAGE_BUGREPORT) \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../src$(PATH_SEPARATOR)$$PATH"
+
+EXTRA_DIST = \
+ $(TESTS) Coreutils.pm Makefile.am.in README acl envvar-check \
+ expensive group-names input-tty lang-default mk-script \
+ other-fs-tmpdir priv-check \
+ rwx-to-mode sample-test setgid-check sparse-file \
+ umask-check very-expensive
+
+## N O T E :: Please do not add new tests/ directories.
+## There are too many already. Put new tests in misc/.
+SUBDIRS = \
+ chgrp chmod chown cp cut dd dircolors du expr factor fmt head \
+ install join ln ls ls-2 md5sum misc mkdir mv od pr readlink rm rmdir \
+ seq sha1sum shred sort stty sum tac tail tail-2 tee test touch tr \
+ tsort unexpand uniq wc
+## N O T E :: Please do not add new directories.
+
+all_t = t1 t2 t3 t4 t5 t6 t7
+.PHONY: check-root $(all_t)
+check-root: $(all_t)
+
+t1:
+ cd chown && $(MAKE) check TESTS=basic
+t2:
+ cd cp && $(MAKE) check TESTS=special-bits
+t3:
+ cd rm && $(MAKE) check TESTS=no-give-up
+t4:
+ cd rm && $(MAKE) check TESTS=fail-2eperm
+t5:
+ cd tail-2 && $(MAKE) check TESTS=append-only
+t6:
+ cd rm && $(MAKE) check TESTS=one-file-system
+t7:
+ cd ls && $(MAKE) check TESTS=nameless-uid
+
+check-recursive: root-hint
+
+# Advertise `check-root' target.
+.PHONY: root-hint
+root-hint:
+ @echo '***********************************************************'
+ @echo "NOTICE: Some tests may be run only as root."
+ @echo " Do \`make check-root' as \`root' to run these tests."
+ @echo '***********************************************************'
diff --git a/tests/Makefile.am.in b/tests/Makefile.am.in
new file mode 100644
index 0000000..084db44
--- /dev/null
+++ b/tests/Makefile.am.in
@@ -0,0 +1,54 @@
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+##test-files-begin
+##test-files-end
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+
+TESTS = $x-tests
+
+mk_script = $(srcdir)/../mk-script
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
diff --git a/tests/Makefile.in b/tests/Makefile.in
new file mode 100644
index 0000000..9628757
--- /dev/null
+++ b/tests/Makefile.in
@@ -0,0 +1,922 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# Sort in traditional ASCII order, regardless of the current locale;
+# otherwise we may get into trouble with distinct strings that the
+# current locale considers to be equal.
+ASSORT = LC_ALL=C sort
+all_programs = (cd ../src && MAKEFLAGS= $(MAKE) -s all_programs.list)
+TESTS = help-version
+TESTS_ENVIRONMENT = \
+ all_programs="`$(all_programs)`" \
+ PACKAGE_BUGREPORT=$(PACKAGE_BUGREPORT) \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../src$(PATH_SEPARATOR)$$PATH"
+
+EXTRA_DIST = \
+ $(TESTS) Coreutils.pm Makefile.am.in README acl envvar-check \
+ expensive group-names input-tty lang-default mk-script \
+ other-fs-tmpdir priv-check \
+ rwx-to-mode sample-test setgid-check sparse-file \
+ umask-check very-expensive
+
+SUBDIRS = \
+ chgrp chmod chown cp cut dd dircolors du expr factor fmt head \
+ install join ln ls ls-2 md5sum misc mkdir mv od pr readlink rm rmdir \
+ seq sha1sum shred sort stty sum tac tail tail-2 tee test touch tr \
+ tsort unexpand uniq wc
+
+all_t = t1 t2 t3 t4 t5 t6 t7
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
+ install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-TESTS check-am clean clean-generic \
+ ctags ctags-recursive distclean distclean-generic \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
+ tags-recursive uninstall uninstall-am
+
+.PHONY: check-root $(all_t)
+check-root: $(all_t)
+
+t1:
+ cd chown && $(MAKE) check TESTS=basic
+t2:
+ cd cp && $(MAKE) check TESTS=special-bits
+t3:
+ cd rm && $(MAKE) check TESTS=no-give-up
+t4:
+ cd rm && $(MAKE) check TESTS=fail-2eperm
+t5:
+ cd tail-2 && $(MAKE) check TESTS=append-only
+t6:
+ cd rm && $(MAKE) check TESTS=one-file-system
+t7:
+ cd ls && $(MAKE) check TESTS=nameless-uid
+
+check-recursive: root-hint
+
+# Advertise `check-root' target.
+.PHONY: root-hint
+root-hint:
+ @echo '***********************************************************'
+ @echo "NOTICE: Some tests may be run only as root."
+ @echo " Do \`make check-root' as \`root' to run these tests."
+ @echo '***********************************************************'
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/README b/tests/README
new file mode 100644
index 0000000..58b11b4
--- /dev/null
+++ b/tests/README
@@ -0,0 +1,3 @@
+A note about Makefile.am.in.
+It is used (usually only by the maintainer) to generate some of the
+Makefile.am files in these subdirectories.
diff --git a/tests/acl b/tests/acl
new file mode 100644
index 0000000..5c958ea
--- /dev/null
+++ b/tests/acl
@@ -0,0 +1,37 @@
+# Test whether acl tests can be done.
+
+# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+getfacl --version < /dev/null > /dev/null 2>&1 \
+ && setfacl --version < /dev/null > /dev/null 2>&1 || {
+ cat <<EOF 1>&2
+**************************************
+$0: This test requires getfacl and setfacl.
+**************************************
+EOF
+ (exit 77); exit 77
+}
+
+id -u bin > /dev/null 2>&1 || {
+ cat <<EOF 1>&2
+**************************************
+$0: This test requires a local user named bin.
+**************************************
+EOF
+ (exit 77); exit 77
+}
diff --git a/tests/chgrp/Makefile.am b/tests/chgrp/Makefile.am
new file mode 100644
index 0000000..8dffd01
--- /dev/null
+++ b/tests/chgrp/Makefile.am
@@ -0,0 +1,14 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+TESTS = \
+ default-no-deref \
+ basic \
+ deref \
+ no-x \
+ posix-H \
+ recurse
+
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ host_triplet=$(host_triplet) \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
diff --git a/tests/chgrp/Makefile.in b/tests/chgrp/Makefile.in
new file mode 100644
index 0000000..7afc0a0
--- /dev/null
+++ b/tests/chgrp/Makefile.in
@@ -0,0 +1,724 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/chgrp
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = \
+ default-no-deref \
+ basic \
+ deref \
+ no-x \
+ posix-H \
+ recurse
+
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ host_triplet=$(host_triplet) \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/chgrp/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/chgrp/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/chgrp/basic b/tests/chgrp/basic
new file mode 100755
index 0000000..475f12f
--- /dev/null
+++ b/tests/chgrp/basic
@@ -0,0 +1,132 @@
+#!/bin/sh
+# make sure chgrp is reasonable
+
+# Copyright (C) 2000-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ chgrp --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+. $srcdir/../group-names
+
+pwd=`pwd`
+tmp=basic.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+set _ $groups; shift
+g1=$1
+g2=$2
+mkdir d
+touch f f2 d/f3
+chgrp $g1 f || fail=1
+chgrp $g2 f || fail=1
+chgrp $g2 f2 || fail=1
+chgrp -R $g1 d || fail=1
+
+d_files='d d/f3'
+
+chgrp $g1 f || fail=1 ; test `stat --p=%g f` = $g1 || fail=1
+chgrp $g2 f || fail=1 ; test `stat --p=%g f` = $g2 || fail=1
+chgrp $g2 f || fail=1 ; test `stat --p=%g f` = $g2 || fail=1
+chgrp '' f || fail=1 ; test `stat --p=%g f` = $g2 || fail=1
+chgrp $g1 f || fail=1 ; test `stat --p=%g f` = $g1 || fail=1
+chgrp $g1 f || fail=1 ; test `stat --p=%g f` = $g1 || fail=1
+chgrp --reference=f2 f ; test `stat --p=%g f` = $g2 || fail=1
+
+chgrp -R $g2 d ||fail=1; test `stat --p=%g: $d_files` = "$g2:$g2:" || fail=1
+chgrp -R $g1 d ||fail=1; test `stat --p=%g: $d_files` = "$g1:$g1:" || fail=1
+chgrp -R $g2 d ||fail=1; test `stat --p=%g: $d_files` = "$g2:$g2:" || fail=1
+chgrp -R $g1 d ||fail=1; test `stat --p=%g: $d_files` = "$g1:$g1:" || fail=1
+chgrp $g2 d ||fail=1; test `stat --p=%g: $d_files` = "$g2:$g1:" || fail=1
+
+rm -f f
+touch f
+ln -s f symlink
+chgrp $g1 f
+test `stat --printf=%g f` = $g1 || fail=1
+
+# This should not change the group of f.
+chgrp -h $g2 symlink
+test `stat --printf=%g f` = $g1 || fail=1
+
+# Don't fail if chgrp failed to set the group of a symlink.
+# Some systems don't support that.
+test `stat --printf=%g symlink` = $g2 ||
+ echo 'info: failed to set group of symlink' 1>&2
+
+chown --from=:$g1 :$g2 f; test `stat --printf=%g f` = $g2 || fail=1
+
+# This *should* change the group of f.
+# Though note that the diagnostic is misleading in that
+# it says the `group of `symlink'' has been changed.
+chgrp $g1 symlink; test `stat --printf=%g f` = $g1 || fail=1
+chown --from=:$g1 :$g2 f; test `stat --printf=%g f` = $g2 || fail=1
+
+# If -R is specified without -H or L, -h is assumed.
+chgrp -h $g1 f symlink; test `stat --printf=%g symlink` = $g1 || fail=1
+chgrp -R $g2 symlink
+chown --from=:$g1 :$g2 f; test `stat --printf=%g f` = $g2 || fail=1
+
+# Make sure we can change the group of inaccessible files.
+chmod a-r f
+chown --from=:$g2 :$g1 f; test `stat --printf=%g f` = $g1 || fail=1
+chmod 0 f
+chown --from=:$g1 :$g2 f; test `stat --printf=%g f` = $g2 || fail=1
+
+# chown() must not be optimized away even when
+# the file's owner and group already have the desired value.
+rm -f f g
+touch f g
+chgrp $g1 f g
+chgrp $g2 g
+sleep 1
+chgrp $g1 f
+
+# The following no-change chgrp command is supposed to update f's ctime,
+# but on OpenBSD and Darwin 7.9.0 and 8.8.0 (aka MacOS X 10.3.9 and 10.4),
+# it appears to be a no-op for some file system types (at least NFS) so g's
+# ctime is more recent. This is not a big deal;
+# this test works fine when the files are on a local file system (/tmp).
+chgrp '' f
+test "`ls -C -c -t f g`" = 'f g' || \
+ {
+ case $host_triplet in
+ *openbsd*) echo ignoring known OpenBSD-specific chgrp failure 1>&2 ;;
+ *darwin7.9.*|*darwin8.8.*)
+ echo ignoring known MacOS X-specific chgrp failure 1>&2 ;;
+ *) echo $host_triplet: no-change chgrp failed to update ctime 1>&2;
+ fail=1 ;;
+ esac
+ }
+
+(exit $fail); exit $fail
diff --git a/tests/chgrp/default-no-deref b/tests/chgrp/default-no-deref
new file mode 100755
index 0000000..d2b6753
--- /dev/null
+++ b/tests/chgrp/default-no-deref
@@ -0,0 +1,51 @@
+#!/bin/sh
+# Ensure that chgrp -R does not dereference symlinks.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ chgrp --version
+fi
+
+. $srcdir/../group-names
+set _ $groups; shift
+g2=$2
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir d && touch f && ln -s ../f d/s || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+g_init=`stat --printf=%g f`
+chgrp -R $g2 d || fail=1
+test `stat --printf=%g f` = $g_init || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/chgrp/deref b/tests/chgrp/deref
new file mode 100755
index 0000000..413ae22
--- /dev/null
+++ b/tests/chgrp/deref
@@ -0,0 +1,84 @@
+#!/bin/sh
+# see if chgrp can change the group of a symlink
+
+# Copyright (C) 2000, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ chgrp --version
+fi
+
+. $srcdir/../group-names
+
+pwd=`pwd`
+tmp=slink.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ (exit 1); exit 1
+fi
+
+set _ $groups; shift
+g1=$1
+g2=$2
+
+touch f
+ln -s f symlink
+
+chgrp -h $g2 symlink 2> /dev/null
+set _ `ls -ln symlink`
+g=$5
+test "$g" = $g2 || {
+ cat <<EOF 1>&2
+$0: skipping this test; your system doesn't support changing
+the owner or group of a symbolic link.
+EOF
+ (exit 77); exit 77
+}
+
+fail=0
+
+chgrp $g1 f
+set _ `ls -ln f`; g=$5; test "$g" = $g1 || fail=1
+
+chgrp -h $g2 symlink || fail=1
+set _ `ls -ln f`; g=$5; test "$g" = $g1 || fail=1
+set _ `ls -ln symlink`; g=$5; test "$g" = $g2 || fail=1
+
+# This should not change the group of f.
+chgrp -h $g2 symlink || fail=1
+set _ `ls -ln f`; g=$5; test "$g" = $g1 || fail=1
+set _ `ls -ln symlink`; g=$5; test "$g" = $g2 || fail=1
+
+chgrp $g2 f
+set _ `ls -ln f`; g=$5; test "$g" = $g2 || fail=1
+
+# This *should* change the group of f.
+# Though note that the diagnostic you'd get with -c is misleading in that
+# it says the `group of `symlink'' has been changed.
+chgrp --dereference $g1 symlink
+set _ `ls -ln f`; g=$5; test "$g" = $g1 || fail=1
+set _ `ls -ln symlink`; g=$5; test "$g" = $g2 || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/chgrp/no-x b/tests/chgrp/no-x
new file mode 100755
index 0000000..e9c702d
--- /dev/null
+++ b/tests/chgrp/no-x
@@ -0,0 +1,76 @@
+#!/bin/sh
+# Make sure chgrp gives the right diagnostic for a readable,
+# but inaccessible directory.
+
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ chgrp --version
+fi
+
+. $srcdir/../group-names
+set _ $groups; shift
+g1=$1
+g2=$2
+
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p d/no-x/y || framework_failure=1
+chmod u=rw d/no-x || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# This must exit nonzero.
+chgrp -R $g2 d >/dev/null 2>out && fail=1
+cat <<\EOF > exp
+chgrp: `d/no-x': Permission denied
+EOF
+
+# With native fdopendir, du uses a different code path.
+cat <<\EOF > exp-native-fdopendir
+chgrp: cannot access `d/no-x/y': Permission denied
+EOF
+
+if cmp out exp >/dev/null 2>&1; then
+ :
+else
+ if cmp out exp-native-fdopendir; then
+ :
+ else
+ fail=1
+ fi
+fi
+
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/chgrp/posix-H b/tests/chgrp/posix-H
new file mode 100755
index 0000000..b8d1a8e
--- /dev/null
+++ b/tests/chgrp/posix-H
@@ -0,0 +1,89 @@
+#!/bin/sh
+# Test POSIX-mandated -H option.
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ chgrp --version
+fi
+
+. $srcdir/../group-names
+set _ $groups; shift
+g1=$1
+g2=$2
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir 1 2 3 || framework_failure=1
+touch 1/1F 2/2F 3/3F || framework_failure=1
+ln -s 1 1s || framework_failure=1
+ln -s ../3 2/2s || framework_failure=1
+chgrp -R $g1 1 2 3 || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+chgrp --preserve-root -H -R $g2 1s 2 || fail=1
+
+# These must have group $g2.
+# =========================
+changed='
+1
+1/1F
+2
+2/2F
+3
+'
+for i in $changed; do
+ # Filter out symlinks (entries that end in `s'), since it's not
+ # possible to change their group/owner information on some systems.
+ case $i in *s) continue;; esac
+ set _ `ls -dgn $i`; shift
+ group=$3
+ test $group = $g2 || fail=1
+done
+
+# These must have group $g1.
+# =========================
+not_changed='
+1s
+2/2s
+3/3F
+'
+for i in $not_changed; do
+ # Filter out symlinks (entries that end in `s'), since it's not
+ # possible to change their group/owner information on some systems.
+ case $i in *s) continue;; esac
+ set _ `ls -dgn $i`; shift
+ group=$3
+ test $group = $g1 || fail=1
+done
+
+(exit $fail); exit $fail
diff --git a/tests/chgrp/recurse b/tests/chgrp/recurse
new file mode 100755
index 0000000..871388c
--- /dev/null
+++ b/tests/chgrp/recurse
@@ -0,0 +1,73 @@
+#!/bin/sh
+# ad-hoc tests of chgrp with -R and -H or -L and symlinks
+
+# Copyright (C) 2000, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ chgrp --version
+fi
+
+. $srcdir/../group-names
+
+pwd=`pwd`
+tmp=recurse.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ (exit 1); exit 1
+fi
+
+set _ $groups; shift
+g1=$1
+g2=$2
+
+fail=0
+
+# chgrp -R should not traverse a symlink to a directory.
+mkdir d e
+touch d/dd e/ee
+ln -s ../e d/s
+chgrp -R $g1 e/ee || fail=1
+# This should not should change the group of e/ee
+chgrp -R $g2 d
+set _ `ls -ln e/ee`; g=$5; test "$g" = $g1 || fail=1
+# This must change the group of e/ee, since -L makes
+# chgrp traverse the symlink from d/s into e.
+chgrp -L -R $g2 d
+set _ `ls -ln e/ee`; g=$5; test "$g" = $g2 || fail=1
+
+# This must *not* change the group of e/ee
+chgrp -H -R $g1 d
+set _ `ls -ln e/ee`; g=$5; test "$g" = $g2 || fail=1
+
+ln -s d link
+
+# This shouldn't change the group of e/ee either.
+chgrp -H -R $g1 link || fail=1
+set _ `ls -ln e/ee`; g=$5; test "$g" = $g2 || fail=1
+# But it *should* change d/dd.
+set _ `ls -ln d/dd`; g=$5; test "$g" = $g1 || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/chmod/Makefile.am b/tests/chmod/Makefile.am
new file mode 100644
index 0000000..1388961
--- /dev/null
+++ b/tests/chmod/Makefile.am
@@ -0,0 +1,16 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+TESTS = \
+ inaccessible \
+ c-option \
+ equal-x \
+ equals \
+ no-x \
+ octal \
+ setgid \
+ umask-x \
+ usage
+
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
diff --git a/tests/chmod/Makefile.in b/tests/chmod/Makefile.in
new file mode 100644
index 0000000..a3bea9d
--- /dev/null
+++ b/tests/chmod/Makefile.in
@@ -0,0 +1,726 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/chmod
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = \
+ inaccessible \
+ c-option \
+ equal-x \
+ equals \
+ no-x \
+ octal \
+ setgid \
+ umask-x \
+ usage
+
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/chmod/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/chmod/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/chmod/c-option b/tests/chmod/c-option
new file mode 100755
index 0000000..bf2c4a9
--- /dev/null
+++ b/tests/chmod/c-option
@@ -0,0 +1,67 @@
+#!/bin/sh
+# Verify that chmod's --changes (-c) option works.
+
+# Copyright (C) 2000, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ chmod --version
+fi
+
+. $srcdir/../lang-default
+
+pwd=`pwd`
+tmp=c-option.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+
+# Record absolute path of srcdir.
+cd $srcdir || framework_failure=1
+abs_srcdir=`pwd`
+
+cd "$pwd" || framework_failure=1
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+umask 0
+file=f
+touch $file || framework_failure=1
+chmod 444 $file || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+. "$abs_srcdir/../setgid-check"
+
+fail=0
+
+chmod u=rwx $file || fail=1
+chmod -c g=rwx $file > out || fail=1
+chmod -c g=rwx $file > empty || fail=1
+
+test -s empty && fail=1
+case "`cat out`" in
+ "mode of \`f' changed to 0774 "?rwxrwxr--?) ;;
+ *) fail=1 ;;
+esac
+
+(exit $fail); exit $fail
diff --git a/tests/chmod/equal-x b/tests/chmod/equal-x
new file mode 100755
index 0000000..3e16ce5
--- /dev/null
+++ b/tests/chmod/equal-x
@@ -0,0 +1,54 @@
+#!/bin/sh
+# Test "chmod =x" and the like.
+
+# Copyright (C) 1999, 2000, 2002, 2004, 2005, 2006 Free Software Foundation,
+# Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ chmod --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+file=f
+touch $file || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+fail=0
+umask 005
+for mode in =x =xX =Xx =x,=X =X,=x; do
+ chmod a=r,$mode $file || fail=1
+ case "`ls -l $file`" in
+ ---x--x---*) ;;
+ *) fail=1; echo "after \`chmod $mode $file':"; ls -l $file ;;
+ esac
+done
+
+(exit $fail); exit $fail
diff --git a/tests/chmod/equals b/tests/chmod/equals
new file mode 100755
index 0000000..dfaad17
--- /dev/null
+++ b/tests/chmod/equals
@@ -0,0 +1,65 @@
+#!/bin/sh
+# Make sure chmod mode arguments of the form A=B work properly.
+# Before fileutils-4.1.2, some of them didn't.
+# Also, before coreutils-5.3.1, =[ugo] sometimes didn't work.
+
+# Copyright (C) 2001, 2002, 2004, 2005, 2006 Free Software Foundation,
+# Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ chmod --version
+fi
+
+pwd=`pwd`
+tmp=equals.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+touch f || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+expected_u=-rwx------
+expected_g=----rwx---
+expected_o=-------rwx
+
+for src in u g o; do
+ for dest in u g o; do
+ test $dest = $src && continue
+ chmod a=,$src=rwx,$dest=$src,$src= f || fail=1
+ set _ `ls -l f`; shift; actual_perms=$1
+ expected_perms=`eval 'echo \$expected_'$dest`
+ test "$actual_perms" = "$expected_perms" || fail=1
+ done
+done
+
+umask 027
+chmod a=,u=rwx,=u f || fail=1
+set _ `ls -l f`; shift; actual_perms=$1
+test "$actual_perms" = "-rwxr-x---" || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/chmod/inaccessible b/tests/chmod/inaccessible
new file mode 100755
index 0000000..95e91c5
--- /dev/null
+++ b/tests/chmod/inaccessible
@@ -0,0 +1,47 @@
+#!/bin/sh
+# Test for the bug fixed on 2006-09-20.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ chmod --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir -p d/e
+chmod 0 d/e d
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+chmod u+rwx d d/e || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/chmod/no-x b/tests/chmod/no-x
new file mode 100755
index 0000000..34b3952
--- /dev/null
+++ b/tests/chmod/no-x
@@ -0,0 +1,81 @@
+#!/bin/sh
+# Make sure chmod gives the right diagnostic for a readable,
+# but inaccessible directory.
+
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ chmod --version
+fi
+
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p d/no-x/y || framework_failure=1
+chmod u=rw d/no-x || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# This must exit nonzero.
+chmod -R o=r d >/dev/null 2>out && fail=1
+
+cat <<\EOF > exp
+chmod: `d/no-x': Permission denied
+EOF
+
+# With native fdopendir, du uses a different code path.
+cat <<\EOF > exp-native-fdopendir
+chmod: cannot access `d/no-x/y': Permission denied
+EOF
+
+if cmp out exp >/dev/null 2>&1; then
+ :
+else
+ if cmp out exp-native-fdopendir; then
+ :
+ else
+ fail=1
+ fi
+fi
+
+test $fail = 1 && diff out exp 2> /dev/null
+
+mkdir -p a/b
+cd a
+# This will fail with ``chmod: fts_read failed: Permission denied''
+chmod a-x . b 2> /dev/null && fail=1
+# chmod must exit with status 1.
+# Due to a bug in coreutils-5.93's fts.c, chmod would provoke
+# an abort (exit with status 134) on recent glibc-based systems.
+test $? = 1 || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/chmod/octal b/tests/chmod/octal
new file mode 100755
index 0000000..b727f84
--- /dev/null
+++ b/tests/chmod/octal
@@ -0,0 +1,48 @@
+#!/bin/sh
+# ensure that chmod diagnoses a certain type of invalid mode string
+
+# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ chmod --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Before coreutils-5.92, this would mistakenly succeed,
+# and act like `chmod 0 .'.
+chmod 0-followed-by-anything . 2> /dev/null && fail=1
+chmod 7-followed-by-anything . 2> /dev/null && fail=1
+chmod 8 . 2> /dev/null && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/chmod/setgid b/tests/chmod/setgid
new file mode 100755
index 0000000..d2868f9
--- /dev/null
+++ b/tests/chmod/setgid
@@ -0,0 +1,76 @@
+#!/bin/sh
+# Make sure GNU chmod works the same way as those of Solaris, HPUX, AIX
+# wrt directories with the setgid bit set.
+
+# Copyright (C) 2001, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ chmod --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+tmp=setgid.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+test=../../../src/test
+
+umask 0
+mkdir d || framework_failure=1
+
+chmod g+s d 2> /dev/null && $test -g d ||
+ {
+ # This is required because on some systems (at least NetBSD 1.4.2A),
+ # it may happen that when you create a directory, its group isn't one
+ # to which you belong. When that happens, the above chmod fails. So
+ # here, upon failure, we try to set the group, then rerun the chmod command.
+
+ id_g=`id -g` &&
+ test -n "$id_g" &&
+ chgrp "$id_g" d &&
+ chmod g+s d || framework_failure=1
+ }
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ (exit 1); exit 1
+fi
+
+# "chmod g+s d" does nothing on some NFS file systems.
+$test -g d || {
+ echo 1>&2 "$0: cannot create setgid directories," \
+ "so can't run this test"
+ exit 77
+}
+
+fail=0
+
+chmod 755 d
+
+case `ls -ld d` in drwxr-sr-x*);; *) fail=1;; esac
+
+(exit $fail); exit $fail
diff --git a/tests/chmod/umask-x b/tests/chmod/umask-x
new file mode 100755
index 0000000..6bd1e08
--- /dev/null
+++ b/tests/chmod/umask-x
@@ -0,0 +1,53 @@
+#!/bin/sh
+# Test that chmod -x file reports an error if the result is executable.
+
+# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ chmod --version
+fi
+
+. $srcdir/../lang-default
+
+pwd=`pwd`
+tmp=minus.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+touch file
+chmod 755 file
+(umask 77 && chmod -x file) 2>/dev/null && fail=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ fail=1
+fi
+
+(exit $fail); exit $fail
diff --git a/tests/chmod/usage b/tests/chmod/usage
new file mode 100755
index 0000000..a823063
--- /dev/null
+++ b/tests/chmod/usage
@@ -0,0 +1,112 @@
+#!/bin/sh
+# Verify that chmod works correctly with odd option combinations.
+
+# Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ chmod --version
+fi
+
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Each line in this list is a set of arguments, followed by :,
+# followed by the set of files it will attempt to chmod,
+# or empty if the usage is erroneous.
+# Many of these test cases are due to Glenn Fowler.
+# These test cases assume GNU behavior for "options" like -w.
+cases='
+ -- :
+ -- -- :
+ -- -- -- f : -- f
+ -- -- -w f : -w f
+ -- -- f : f
+ -- -w :
+ -- -w -- f : -- f
+ -- -w -w f : -w f
+ -- -w f : f
+ -- f :
+ -w :
+ -w -- :
+ -w -- -- f : -- f
+ -w -- -w f : -w f
+ -w -- f : f
+ -w -w :
+ -w -w -- f : f
+ -w -w -w f : f
+ -w -w f : f
+ -w f : f
+ f :
+ f -- :
+ f -w : f
+ f f :
+ u+gr f :
+ ug,+x f :
+'
+
+all_files=`echo "$cases" | sed 's/.*://'|sort -u`
+
+old_IFS=$IFS
+IFS='
+'
+for case in $cases; do
+ IFS=$old_IFS
+ args=`expr "$case" : ' *\(.*[^ ]\) *:'`
+ files=`expr "$case" : '.*: *\(.*\)'`
+
+ case $files in
+ '')
+ touch -- $all_files || framework_failure=1
+ chmod $args 2>/dev/null && fail=1
+ ;;
+ ?*)
+ touch -- $files || framework_failure=1
+ chmod $args || fail=1
+ for file in $files; do
+ # Test for misparsing args by creating all $files but $file.
+ # chmod has a bug if it succeeds even though $file is absent.
+ rm -f -- $all_files && touch -- $files && rm -- $file \
+ || framework_failure=1
+ chmod $args 2>/dev/null && fail=1
+ done
+ ;;
+ esac
+done
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ fail=1
+fi
+
+(exit $fail); exit $fail
diff --git a/tests/chown/Makefile.am b/tests/chown/Makefile.am
new file mode 100644
index 0000000..61e6581
--- /dev/null
+++ b/tests/chown/Makefile.am
@@ -0,0 +1,10 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+TESTS = \
+ preserve-root \
+ basic \
+ deref \
+ separator
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
diff --git a/tests/chown/Makefile.in b/tests/chown/Makefile.in
new file mode 100644
index 0000000..fb774f7
--- /dev/null
+++ b/tests/chown/Makefile.in
@@ -0,0 +1,721 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/chown
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = \
+ preserve-root \
+ basic \
+ deref \
+ separator
+
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/chown/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/chown/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/chown/basic b/tests/chown/basic
new file mode 100755
index 0000000..39fad14
--- /dev/null
+++ b/tests/chown/basic
@@ -0,0 +1,69 @@
+#!/bin/sh
+# make sure chown --from=... works
+
+# Copyright (C) 2001, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ chgrp --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
+
+pwd=`pwd`
+tmp=basic.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+touch f || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+chown -R --preserve-root 0:1 f
+
+# Make sure the owner and group are 0 and 1 respectively.
+set _ `ls -n f`; shift; test "$3:$4" = 0:1 || fail=1
+
+chown --from=0:1 2:010 f || fail=1
+
+# And now they should be 2 and 10 respectively.
+set _ `ls -n f`; shift; test "$3:$4" = 2:10 || fail=1
+
+ln -s f slink
+# Applying chown to a symlink with --no-dereference
+# should change only the link.
+chown --no-dereference 0:1 slink || fail=1
+# owner/group on the symlink should be set
+set _ `ls -n slink`; shift; test "$3:$4" = 0:1 || fail=1
+# owner/group on the referent should remain unchanged
+set _ `ls -n f`; shift; test "$3:$4" = 2:10 || fail=1
+
+chown --no-dereference --from=0:1 2:010 slink || fail=1
+# owner/group on the symlink should be changed
+set _ `ls -n slink`; shift; test "$3:$4" = 2:10 || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/chown/deref b/tests/chown/deref
new file mode 100755
index 0000000..e3da3eb
--- /dev/null
+++ b/tests/chown/deref
@@ -0,0 +1,60 @@
+#!/bin/sh
+# For coreutils-5.2.1 and earlier, chown --dereference would skip
+# symlinks having owner/group matching the specified owner/group.
+
+# Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ chown --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+ln -s no-such dangle || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+set _ `ls -ldo dangle`; shift; user=$3
+
+# With 5.2.1 and earlier, this command would mistakenly succeed.
+chown --dereference $user dangle 2> out1 && fail=1
+sed 's/: [^:]*$//' out1 > out
+
+cat <<\EOF > exp || fail=1
+chown: cannot dereference `dangle'
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/chown/preserve-root b/tests/chown/preserve-root
new file mode 100755
index 0000000..4f8fe4f
--- /dev/null
+++ b/tests/chown/preserve-root
@@ -0,0 +1,88 @@
+#!/bin/sh
+# Verify that --preserve-root works.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ chown --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir d && ln -s / d/slink-to-root
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Even if --preserve-root were to malfunction, allowing the chown or
+# chgrp to traverse through "/", since we're running as non-root,
+# they would be very unlikely to cause any changes.
+chown -R --preserve-root 0 / > out 2>&1 && fail=1
+chgrp -R --preserve-root 0 / >> out 2>&1 && fail=1
+
+# Here, if --preserve-root were to malfunction, chmod could make changes,
+# but only to files owned and unreadable by the user running this test,
+# and then, only to make them readable by owner.
+chmod -R --preserve-root u+r / >> out 2>&1 && fail=1
+
+# With -RHh, --preserve-root should trigger nothing,
+# since the symlink in question is not a command line argument.
+# Contrary to the above commands, these two should succeed.
+echo '==== test -RHh' >> out
+chown -RHh --preserve-root `id -u` d >> out 2>&1 || fail=1
+chgrp -RHh --preserve-root `id -g` d >> out 2>&1 || fail=1
+
+# These must fail.
+echo '==== test -RLh' >> out
+chown -RLh --preserve-root `id -u` d >> out 2>&1 && fail=1
+chgrp -RLh --preserve-root `id -g` d >> out 2>&1 && fail=1
+
+cat <<\EOF > exp || fail=1
+chown: it is dangerous to operate recursively on `/'
+chown: use --no-preserve-root to override this failsafe
+chgrp: it is dangerous to operate recursively on `/'
+chgrp: use --no-preserve-root to override this failsafe
+chmod: it is dangerous to operate recursively on `/'
+chmod: use --no-preserve-root to override this failsafe
+==== test -RHh
+==== test -RLh
+chown: it is dangerous to operate recursively on `d/slink-to-root' (same as `/')
+chown: use --no-preserve-root to override this failsafe
+chgrp: it is dangerous to operate recursively on `d/slink-to-root' (same as `/')
+chgrp: use --no-preserve-root to override this failsafe
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/chown/separator b/tests/chown/separator
new file mode 100755
index 0000000..d65b371
--- /dev/null
+++ b/tests/chown/separator
@@ -0,0 +1,72 @@
+#!/bin/sh
+# Make sure "chown USER:GROUP FILE" works, and similar tests with separators.
+
+# Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ chown --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0" |sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap 'status=$?; (exit $status); exit $status' 1 2 13 15
+
+framework_failure=0
+
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+id_u=`id -u` || framework_failure=1
+test -n "$id_u" || framework_failure=1
+
+id_un=`id -un` || framework_failure=1
+test -n "$id_un" || framework_failure=1
+
+id_g=`id -g` || framework_failure=1
+test -n "$id_g" || framework_failure=1
+
+id_gn=`id -gn` || framework_failure=1
+test -n "$id_gn" || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 77); exit 77
+fi
+
+fail=0
+
+chown '' . || fail=1
+
+for u in $id_u "$id_un" ''; do
+ for g in $id_g "$id_gn" ''; do
+ case $u$g in
+ *.*) seps=':' ;;
+ *) seps=': .' ;;
+ esac
+ for sep in $seps; do
+ case $u$sep$g in
+ [0-9]*$sep) chown "$u$sep$g" . 2> /dev/null && fail=1 ;;
+ *) chown "$u$sep$g" . || fail=1 ;;
+ esac
+ done
+ done
+done
+
+(exit $fail); exit $fail
diff --git a/tests/cp/Makefile.am b/tests/cp/Makefile.am
new file mode 100644
index 0000000..f9925db
--- /dev/null
+++ b/tests/cp/Makefile.am
@@ -0,0 +1,39 @@
+# Make coreutils tests for cp. -*-Makefile-*-
+
+# Copyright (C) 1997-2001, 2003, 2005-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+TESTS = \
+ file-perm-race parent-perm-race \
+ backup-dir \
+ src-base-dot \
+ sparse \
+ link-no-deref \
+ cp-deref \
+ acl \
+ preserve-2 r-vs-symlink link-preserve \
+ backup-1 no-deref-link1 no-deref-link2 no-deref-link3 backup-is-src \
+ same-file cp-mv-backup symlink-slash slink-2-slink fail-perm dir-slash \
+ perm cp-HL cp-i special-bits link dir-rm-dest cp-parents deref-slink \
+ dir-vs-file into-self
+EXTRA_DIST = $(TESTS) trailing-slash
+TESTS_ENVIRONMENT = \
+ MAKE=$(MAKE) \
+ abs_top_builddir=$(abs_top_builddir) \
+ CONFIG_HEADER=$(CONFIG_HEADER) \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
diff --git a/tests/cp/Makefile.in b/tests/cp/Makefile.in
new file mode 100644
index 0000000..f87e056
--- /dev/null
+++ b/tests/cp/Makefile.in
@@ -0,0 +1,751 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils tests for cp. -*-Makefile-*-
+
+# Copyright (C) 1997-2001, 2003, 2005-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/cp
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = \
+ file-perm-race parent-perm-race \
+ backup-dir \
+ src-base-dot \
+ sparse \
+ link-no-deref \
+ cp-deref \
+ acl \
+ preserve-2 r-vs-symlink link-preserve \
+ backup-1 no-deref-link1 no-deref-link2 no-deref-link3 backup-is-src \
+ same-file cp-mv-backup symlink-slash slink-2-slink fail-perm dir-slash \
+ perm cp-HL cp-i special-bits link dir-rm-dest cp-parents deref-slink \
+ dir-vs-file into-self
+
+EXTRA_DIST = $(TESTS) trailing-slash
+TESTS_ENVIRONMENT = \
+ MAKE=$(MAKE) \
+ abs_top_builddir=$(abs_top_builddir) \
+ CONFIG_HEADER=$(CONFIG_HEADER) \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/cp/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/cp/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/cp/acl b/tests/cp/acl
new file mode 100755
index 0000000..3a5eb33
--- /dev/null
+++ b/tests/cp/acl
@@ -0,0 +1,90 @@
+#!/bin/sh
+# copy files/directories across file system boundaries
+# and make sure acls are preserved appropriately
+
+# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+. $srcdir/../acl
+# Make sure we get English translations.
+. $srcdir/../lang-default
+
+# Skip this test if cp was built without ACL support:
+grep '^#define USE_ACL 0' $CONFIG_HEADER > /dev/null && \
+ {
+ echo 1>&2 "$0: insufficient ACL support, so skipping this test"
+ (exit 77); exit 77
+ }
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+ getfacl --version
+ setfacl --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir -p a b || framework_failure=1
+touch a/file || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+skip=no
+# Ensure that setfacl and getfacl work on this file system.
+setfacl -m user:bin:rw a/file 2> /dev/null || skip=yes
+acl1=`cd a && getfacl file | grep -v ':bin:' | grep -v 'mask::'` \
+ || skip=yes
+
+test $skip = yes &&
+ {
+ echo "$0: '.' is not on a suitable file system for this test" 1>&2
+ echo "$0: skipping this test" 1>&2
+ (exit 77); exit 77
+ }
+
+# copy a file without preserving permissions
+cp a/file b/ || fail=1
+
+acl2=`cd b && getfacl file` || framework_failure=1
+test "$acl1" = "$acl2" || fail=1
+rm a/file || framework_failure=1
+
+# copy a file, preserving permissions
+touch a/file || framework_failure=1
+setfacl -m user:bin:rw a/file || framework_failure=1
+acl1=`cd a && getfacl file` || framework_failure=1
+cp -p a/file b/ || fail=1
+acl2=`cd b && getfacl file` || framework_failure=1
+test "$acl1" = "$acl2" || fail=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+exit $fail
diff --git a/tests/cp/backup-1 b/tests/cp/backup-1
new file mode 100755
index 0000000..befce00
--- /dev/null
+++ b/tests/cp/backup-1
@@ -0,0 +1,58 @@
+#!/bin/sh
+# Test cp backup.
+
+# Copyright (C) 1997, 1999, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+suffix=.b
+file=b1.$$
+file_backup="$file$suffix"
+temp_files="$file $file_backup"
+rm -f $temp_files
+
+fail=0
+echo test > $file || fail=1
+
+# Specify both version control and suffix so the environment variables
+# (possibly set by the user running these tests) aren't used.
+cp --force --backup=simple --suffix=$suffix $file $file \
+ || fail=1
+
+test -f $file || fail=1
+test -f $file_backup || fail=1
+cmp $file $file_backup > /dev/null || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/backup-dir b/tests/cp/backup-dir
new file mode 100755
index 0000000..9bbae3d
--- /dev/null
+++ b/tests/cp/backup-dir
@@ -0,0 +1,52 @@
+#!/bin/sh
+# Ensure that cp -b doesn't back up directories.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir x y || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+cp -a x y || fail=1
+
+# This would mistakenly create a backup of y/x (y/x~) in coreutils-6.3.
+cp -ab x y || fail=1
+test -d y/x || fail=1
+test -d y/x~ && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/backup-is-src b/tests/cp/backup-is-src
new file mode 100755
index 0000000..b4f90c8
--- /dev/null
+++ b/tests/cp/backup-is-src
@@ -0,0 +1,58 @@
+#!/bin/sh
+# Test cp backup to source file.
+
+# Copyright (C) 1998, 1999, 2000, 2002, 2004, 2006 Free Software Foundation,
+# Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+. $srcdir/../lang-default
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+echo a > a || framework_failure=1
+echo a-tilde > a~ || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+# This cp command should exit nonzero.
+cp --b=simple a~ a > out 2>&1 && fail=1
+
+sed "s,cp:,XXX:," out > out2
+
+cat > exp <<\EOF
+XXX: backing up `a' would destroy source; `a~' not copied
+EOF
+
+cmp out2 exp || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/cp-HL b/tests/cp/cp-HL
new file mode 100755
index 0000000..2d5fff2
--- /dev/null
+++ b/tests/cp/cp-HL
@@ -0,0 +1,61 @@
+#!/bin/sh
+# test cp's -H and -L options
+
+# Copyright (C) 2000, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap 'exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir src-dir dest-dir || framework_failure=1
+echo f > f || framework_failure=1
+ln -s f slink || framework_failure=1
+ln -s no-such-file src-dir/slink || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+
+cp -H -R slink src-dir dest-dir || fail=1
+test -d src-dir || fail=1
+test -d dest-dir/src-dir || fail=1
+
+# Expect this to succeed since this slink is not a symlink
+cat dest-dir/slink > /dev/null 2>&1 || fail=1
+
+# Expect this to fail since *this* slink is a dangling symlink.
+cat dest-dir/src-dir/slink > /dev/null 2>&1 && fail=1
+
+# FIXME: test -L, too.
+
+(exit $fail); exit $fail
diff --git a/tests/cp/cp-deref b/tests/cp/cp-deref
new file mode 100755
index 0000000..d90139d
--- /dev/null
+++ b/tests/cp/cp-deref
@@ -0,0 +1,52 @@
+#!/bin/sh
+# cp -RL dir1 dir2' must handle the case in which each of dir1 and dir2
+# contain a symlink pointing to some third directory.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir a b c d || framework_failure=1
+ln -s ../c a || framework_failure=1
+ln -s ../c b || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Before coreutils-5.94, the following would fail with this message:
+# cp: will not create hard link `d/b/c' to directory `d/a/c'
+cp -RL a b d || fail=1
+test -d a/c || fail=1
+test -d b/c || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/cp-i b/tests/cp/cp-i
new file mode 100755
index 0000000..896b051
--- /dev/null
+++ b/tests/cp/cp-i
@@ -0,0 +1,51 @@
+#!/bin/sh
+# Test whether cp -i prompts in the right place.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir -p a b/a/c || framework_failure=1
+touch a/c || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# coreutils 6.2 cp would neglect to prompt in this case.
+echo n | cp -iR a b 2>/dev/null || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/cp-mv-backup b/tests/cp/cp-mv-backup
new file mode 100755
index 0000000..cfbee41
--- /dev/null
+++ b/tests/cp/cp-mv-backup
@@ -0,0 +1,117 @@
+#!/bin/sh
+# Test basic --backup functionality for both cp and mv.
+
+# Copyright (C) 1999, 2000, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+# Ensure that ls sorts the same way for everyone.
+. $srcdir/../lang-default
+
+. $srcdir/../envvar-check
+
+umask 022
+
+# Be careful to close $actual before removing the containing directory.
+# Use `1>&2' rather than `1<&-' since the latter appears not to work
+# with /bin/sh from powerpc-ibm-aix4.2.0.0.
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && exec 1>&2; rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+actual=actual
+expected=expected
+
+exec 1> $actual
+
+fail=0
+for prog in cp mv; do
+ for initial_files in 'x' 'x y' 'x y y~' 'x y y.~1~' 'x y y~ y.~1~'; do
+ for opt in none off numbered t existing nil simple never; do
+ touch $initial_files
+ $prog --backup=$opt x y || fail=1
+ echo $initial_files $opt: `ls [xy]*`; rm -f x y y~ y.~?~
+ done
+ done
+done
+
+cat <<\EOF > $expected-tmp
+x none: x y
+x off: x y
+x numbered: x y
+x t: x y
+x existing: x y
+x nil: x y
+x simple: x y
+x never: x y
+x y none: x y
+x y off: x y
+x y numbered: x y y.~1~
+x y t: x y y.~1~
+x y existing: x y y~
+x y nil: x y y~
+x y simple: x y y~
+x y never: x y y~
+x y y~ none: x y y~
+x y y~ off: x y y~
+x y y~ numbered: x y y.~1~ y~
+x y y~ t: x y y.~1~ y~
+x y y~ existing: x y y~
+x y y~ nil: x y y~
+x y y~ simple: x y y~
+x y y~ never: x y y~
+x y y.~1~ none: x y y.~1~
+x y y.~1~ off: x y y.~1~
+x y y.~1~ numbered: x y y.~1~ y.~2~
+x y y.~1~ t: x y y.~1~ y.~2~
+x y y.~1~ existing: x y y.~1~ y.~2~
+x y y.~1~ nil: x y y.~1~ y.~2~
+x y y.~1~ simple: x y y.~1~ y~
+x y y.~1~ never: x y y.~1~ y~
+x y y~ y.~1~ none: x y y.~1~ y~
+x y y~ y.~1~ off: x y y.~1~ y~
+x y y~ y.~1~ numbered: x y y.~1~ y.~2~ y~
+x y y~ y.~1~ t: x y y.~1~ y.~2~ y~
+x y y~ y.~1~ existing: x y y.~1~ y.~2~ y~
+x y y~ y.~1~ nil: x y y.~1~ y.~2~ y~
+x y y~ y.~1~ simple: x y y.~1~ y~
+x y y~ y.~1~ never: x y y.~1~ y~
+EOF
+
+sed 's/: x/:/' $expected-tmp |cat $expected-tmp - > $expected
+
+cmp $expected $actual || fail=1
+
+# Uncomment this if you see a failure and want to try to diagnose it.
+test $fail = 1 && diff -c $expected $actual 1>&2
+
+(exit $fail); exit $fail
diff --git a/tests/cp/cp-parents b/tests/cp/cp-parents
new file mode 100755
index 0000000..6c123d2
--- /dev/null
+++ b/tests/cp/cp-parents
@@ -0,0 +1,82 @@
+#!/bin/sh
+# cp -R --parents dir-specified-with-trailing-slash/ other-dir
+# would get a failed assertion.
+
+# Copyright (C) 2000, 2002, 2004, 2005, 2006, 2007 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+umask 022
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && exec 1>&2; rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+
+# Record absolute path of srcdir and cd back to current dir.
+cd $srcdir || framework_failure=1
+abs_srcdir=`pwd`
+cd "$pwd" || framework_failure=1
+
+. $srcdir/../envvar-check
+. $srcdir/../umask-check
+
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+. "$abs_srcdir/../setgid-check"
+
+mkdir foo bar || framework_failure=1
+mkdir -p a/b/c d e || framework_failure=1
+touch f || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+
+# With 4.0.37 and earlier (back to when?), this would fail
+# with the failed assertion from dirname.c.
+cp -R --parents foo/ bar || fail=1
+
+# Exercise the make_path and re_protect code in cp.c.
+# FIXME: compare verbose output with expected output.
+cp --verbose -a --parents a/b/c d > /dev/null 2>&1 || fail=1
+test -d d/a/b/c || fail=1
+
+# With 6.7 and earlier, cp --parents f/g d would mistakenly create a
+# directory d/f, even though f is a regular file.
+cp --parents f/g d 2>/dev/null && fail=1
+test -d d/f && fail=1
+
+# Check that re_protect works.
+chmod go=w d/a
+cp -a --parents d/a/b/c e || fail=1
+p=`ls -ld e/d|sed 's/ .*//'`; case $p in drwxr-xr-x);; *) fail=1;; esac
+p=`ls -ld e/d/a|sed 's/ .*//'`; case $p in drwx-w--w-);; *) fail=1;; esac
+p=`ls -ld e/d/a/b/c|sed 's/ .*//'`; case $p in drwxr-xr-x);; *) fail=1;; esac
+
+(exit $fail); exit $fail
diff --git a/tests/cp/deref-slink b/tests/cp/deref-slink
new file mode 100755
index 0000000..6034af6
--- /dev/null
+++ b/tests/cp/deref-slink
@@ -0,0 +1,49 @@
+#!/bin/sh
+# Demonstrate bug when using -d with an existing destination file
+# that is a symlink.
+
+# Copyright (C) 2000, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+touch f slink-target || framework_failure=1
+ln -s slink-target slink || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+cp -d f slink || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/dir-rm-dest b/tests/cp/dir-rm-dest
new file mode 100755
index 0000000..325b40c
--- /dev/null
+++ b/tests/cp/dir-rm-dest
@@ -0,0 +1,49 @@
+#!/bin/sh
+# verify that cp's --remove-destination option works with -R
+
+# Copyright (C) 2000, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir d e || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+
+# Do it once with no destination...
+cp -R --remove-destination d e || fail=1
+
+# ...and again, with an existing destination.
+cp -R --remove-destination d e || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/dir-slash b/tests/cp/dir-slash
new file mode 100755
index 0000000..2c5a0bc
--- /dev/null
+++ b/tests/cp/dir-slash
@@ -0,0 +1,54 @@
+#!/bin/sh
+# Make sure that cp -R DIR1 DIR2 does the right thing
+# when DIR1 is written with a trailing slash.
+
+# Copyright (C) 2000, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 || exit $?; exit $status' 0
+trap 'exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir dir1 dir2 || framework_failure=1
+touch dir1/file || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+cp -R dir1/ dir2 || fail=1
+
+# This file should not exist, but it did with fileutils-4.0w.
+test -r dir2/file && fail=1
+
+# These two should.
+test -r dir2/dir1/file || fail=1
+test -r dir1/file || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/dir-vs-file b/tests/cp/dir-vs-file
new file mode 100755
index 0000000..612e297
--- /dev/null
+++ b/tests/cp/dir-vs-file
@@ -0,0 +1,54 @@
+#!/bin/sh
+# A directory may not replace an existing file.
+
+# Copyright (C) 2001, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir dir || framework_failure=1
+touch file || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# In 4.0.35, this cp invocation silently succeeded.
+cp -R dir file 2>/dev/null && fail=1
+
+# Make sure file is not replaced with a directory.
+# In 4.0.35, it was.
+test -f file || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/fail-perm b/tests/cp/fail-perm
new file mode 100755
index 0000000..5fff090
--- /dev/null
+++ b/tests/cp/fail-perm
@@ -0,0 +1,80 @@
+#!/bin/sh
+
+# Copyright (C) 2000, 2002, 2003, 2004, 2005, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir D D/D || framework_failure=1
+touch D/a || framework_failure=1
+chmod 0 D/a || framework_failure=1
+chmod u=rx,go=,-st D || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+
+# This is expected to exit non-zero, because it can't read D/a.
+cp -pR D DD > /dev/null 2>&1 && fail=1
+
+# Permissions on DD must be `dr-x------'
+
+set X `ls -ld DD`
+shift
+test "$1" = dr-x------ || fail=1
+
+chmod 0 D
+ln -s D/D symlink
+touch F
+cat > exp <<\EOF
+cp: accessing `symlink': Permission denied
+EOF
+
+cp F symlink 2> out && fail=1
+# HPUX appears to fail with EACCES rather than EPERM.
+# Transform their diagnostic
+# ...: The file access permissions do not allow the specified action.
+# to the expected one:
+sed 's/: The file access permissions.*/: Permission denied/'<out>o1;mv o1 out
+cmp out exp || { (diff -c out exp) 2> /dev/null; fail=1; }
+
+cp --target-directory=symlink F 2> out && fail=1
+sed 's/: The file access permissions.*/: Permission denied/'<out>o1;mv o1 out
+cmp out exp || { (diff -c out exp) 2> /dev/null; fail=1; }
+
+chmod 700 D
+
+(exit $fail); exit $fail
diff --git a/tests/cp/file-perm-race b/tests/cp/file-perm-race
new file mode 100755
index 0000000..e16dd64
--- /dev/null
+++ b/tests/cp/file-perm-race
@@ -0,0 +1,71 @@
+#!/bin/sh
+# Make sure cp -p isn't too generous with file permissions.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+umask 022
+mkfifo fifo || {
+ echo "$0: fifos not supported; skipping this test." 1>&2
+ (exit 77); exit 77
+}
+
+# Copy a fifo's contents. That way, we can examine the
+# destination permissions before they're finalized.
+cp -p --copy-contents fifo fifo-copy &
+cp_pid=$!
+
+(
+ # Now 'cp' is reading the fifo. Wait for the destination file to
+ # be created, encouraging things along by echoing to the fifo.
+ while test ! -f fifo-copy; do
+ echo foo
+ done
+
+ # Check the permissions of the destination.
+ ls -l fifo-copy >ls.out
+
+ # Close the fifo so that "cp" can continue. But output first,
+ # before exiting, otherwise some shells would optimize away the file
+ # descriptor that holds the fifo open.
+ echo foo
+) >fifo
+
+case `cat ls.out` in
+-???------*)
+ fail=0;;
+*)
+ fail=1;;
+esac
+
+wait $cp_pid || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/into-self b/tests/cp/into-self
new file mode 100755
index 0000000..79c727a
--- /dev/null
+++ b/tests/cp/into-self
@@ -0,0 +1,63 @@
+#!/bin/sh
+# Confirm that copying a directory into itself gets a proper diagnostic.
+
+# Copyright (C) 2001, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# In 4.0.35 and earlier, `mkdir dir && cp -R dir dir' would produce this:
+# cp: won't create hard link `dir/dir/dir' to directory `'
+# Now it gives this:
+# cp: can't copy a directory `dir' into itself `dir/dir'
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir dir || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# This command should exit nonzero.
+cp -R dir dir 2> out && fail=1
+
+cat > exp <<\EOF
+cp: cannot copy a directory, `dir', into itself, `dir/dir'
+EOF
+#'
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/cp/link b/tests/cp/link
new file mode 100755
index 0000000..f448b5e
--- /dev/null
+++ b/tests/cp/link
@@ -0,0 +1,50 @@
+#!/bin/sh
+# Make sure cp --link -f works when the target exists.
+# This failed for 4.0z (due to a bug introduced in that test release).
+
+# Copyright (C) 2000, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+touch src || framework_failure=1
+touch dest || framework_failure=1
+touch dest2 || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+
+cp -f --link src dest || fail=1
+cp -f --symbolic-link src dest2 || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/link-no-deref b/tests/cp/link-no-deref
new file mode 100755
index 0000000..39f8bb9
--- /dev/null
+++ b/tests/cp/link-no-deref
@@ -0,0 +1,48 @@
+#!/bin/sh
+# Ensure that cp --link --no-dereference works properly
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+ln -s no-such-file dangling-slink || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Prior to coreutils-6.0, this would fail on non-Linux kernels,
+# with link being applied to the dangling symlink.
+cp --link --no-dereference dangling-slink d2 || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/link-preserve b/tests/cp/link-preserve
new file mode 100755
index 0000000..8fec65d
--- /dev/null
+++ b/tests/cp/link-preserve
@@ -0,0 +1,106 @@
+#!/bin/sh
+# ensure that `cp -d' preserves hard-links between command line arguments
+# ensure that --preserve=links works with -RH and -RL
+
+# Copyright (C) 2001, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+touch a || framework_failure=1
+ln a b || framework_failure=1
+mkdir c || framework_failure=1
+cp -d a b c || framework_failure=1
+test -f c/a || framework_failure=1
+test -f c/b || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+a_inode=`ls -i c/a|sed 's,c/.*,,'`
+b_inode=`ls -i c/b|sed 's,c/.*,,'`
+test "$a_inode" = "$b_inode" || fail=1
+# --------------------------------------
+
+rm -rf a b c
+touch a
+ln -s a b
+mkdir c
+cp --preserve=links -R -H a b c
+a_inode=`ls -i c/a|sed 's,c/.*,,'`
+b_inode=`ls -i c/b|sed 's,c/.*,,'`
+test "$a_inode" = "$b_inode" || fail=1
+# --------------------------------------
+
+rm -rf a b c d
+mkdir d
+(cd d; touch a; ln -s a b)
+cp --preserve=links -R -L d c
+a_inode=`ls -i c/a|sed 's,c/.*,,'`
+b_inode=`ls -i c/b|sed 's,c/.*,,'`
+test "$a_inode" = "$b_inode" || fail=1
+# --------------------------------------
+
+# Ensure that --no-preserve=links works.
+rm -rf a b c d
+mkdir d
+(cd d; touch a; ln a b)
+cp -dR --no-preserve=links d c
+a_inode=`ls -i c/a|sed 's,c/.*,,'`
+b_inode=`ls -i c/b|sed 's,c/.*,,'`
+test "$a_inode" = "$b_inode" && fail=1
+# --------------------------------------
+
+# Ensure that -d still preserves hard links.
+rm -rf a b c d
+touch a; ln a b
+mkdir c
+cp -d a b c
+a_inode=`ls -i c/a|sed 's,c/.*,,'`
+b_inode=`ls -i c/b|sed 's,c/.*,,'`
+test "$a_inode" = "$b_inode" || fail=1
+# --------------------------------------
+
+# Ensure that --no-preserve=mode works
+rm -rf a b c d
+touch a; chmod 731 a
+umask 077
+cp -a --no-preserve=mode a b
+set _ `ls -l b`; shift; mode=$1
+test "$mode" = "-rwx------" || fail=1
+umask 022
+# --------------------------------------
+
+(exit $fail); exit $fail
diff --git a/tests/cp/no-deref-link1 b/tests/cp/no-deref-link1
new file mode 100755
index 0000000..a8c499e
--- /dev/null
+++ b/tests/cp/no-deref-link1
@@ -0,0 +1,59 @@
+#!/bin/sh
+# FIXME: This test requires ln -s.
+# cp from 3.16 fails this test
+
+# Copyright (C) 1997, 1999, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+mkdir a b
+msg=bar
+echo $msg > a/foo
+cd b
+ln -s ../a/foo .
+cd ..
+
+fail=0
+
+# It should fail with a message something like this:
+# ./cp: `a/foo' and `b/foo' are the same file
+cp -d a/foo b 2>/dev/null
+
+# Fail this test if the exit status is not 1
+test $? = 1 || fail=1
+
+test "`cat a/foo`" = $msg || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/no-deref-link2 b/tests/cp/no-deref-link2
new file mode 100755
index 0000000..57b4f41
--- /dev/null
+++ b/tests/cp/no-deref-link2
@@ -0,0 +1,59 @@
+#!/bin/sh
+# FIXME: This test requires ln -s.
+# cp from 3.16 fails this test
+
+# Copyright (C) 1997, 1999, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+mkdir b
+msg=bar
+echo $msg > a
+cd b
+ln -s ../a .
+cd ..
+
+fail=0
+
+# It should fail with a message something like this:
+# cp: `a' and `b/foo' are the same file
+cp -d a b 2>/dev/null
+
+# Fail this test if the exit status is not 1
+test $? = 1 || fail=1
+
+test "`cat a`" = $msg || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/no-deref-link3 b/tests/cp/no-deref-link3
new file mode 100755
index 0000000..98e2ae9
--- /dev/null
+++ b/tests/cp/no-deref-link3
@@ -0,0 +1,56 @@
+#!/bin/sh
+# FIXME: This test requires ln -s.
+# cp from 3.16 fails this test
+
+# Copyright (C) 1997, 1999, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+msg=bar
+echo $msg > a
+ln -s a b
+
+fail=0
+
+# It should fail with a message something like this:
+# cp: `a' and `b' are the same file
+cp -d a b 2>/dev/null
+
+# Fail this test if the exit status is not 1
+test $? = 1 || fail=1
+
+test "`cat a`" = $msg || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/parent-perm-race b/tests/cp/parent-perm-race
new file mode 100755
index 0000000..d2870bc
--- /dev/null
+++ b/tests/cp/parent-perm-race
@@ -0,0 +1,78 @@
+#!/bin/sh
+# Make sure cp -pR --parents isn't too generous with parent permissions.
+
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+umask 002
+mkdir mode ownership d || framework_failure=1
+chmod g+s d 2>/dev/null # The cp test is valid either way.
+
+fail=0
+
+for attr in mode ownership
+do
+ mkfifo $attr/fifo || {
+ echo "$0: fifos not supported; skipping this test." 1>&2
+ (exit 77); exit 77
+ }
+
+ # Copy a fifo's contents. That way, we can examine d/$attr's
+ # state while cp is running.
+ cp --preserve=$attr -R --copy-contents --parents $attr d &
+ cp_pid=$!
+
+ (
+ # Now 'cp' is reading the fifo.
+ # Check the permissions of the temporary destination
+ # directory that 'cp' has made.
+ ls -ld d/$attr >d/$attr.ls
+
+ # Close the fifo so that "cp" can continue. But output first,
+ # before exiting, otherwise some shells would optimize away the file
+ # descriptor that holds the fifo open.
+ echo foo
+ ) >$attr/fifo
+
+ ls_output=`cat d/$attr.ls` || fail=1
+ case $attr,$ls_output in
+ ownership,d???--[-S]--[-S]* | \
+ mode,d????-??-?* | \
+ mode,d??[-x]?w[-x]?-[-x]* )
+ ;;
+ *)
+ fail=1;;
+ esac
+
+ wait $cp_pid || fail=1
+done
+
+(exit $fail); exit $fail
diff --git a/tests/cp/perm b/tests/cp/perm
new file mode 100755
index 0000000..502ce70
--- /dev/null
+++ b/tests/cp/perm
@@ -0,0 +1,98 @@
+#!/bin/sh
+# Make sure the permission-preserving code in copy.c (mv, cp, install) works.
+
+# Copyright (C) 2000, 2002, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+. $srcdir/../very-expensive
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+ mv --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+umask 037
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+
+# Now, try it with `mv', with combinations of --force, no-f and
+# existing-destination and not.
+for u in 31 37 2; do
+ echo umask: $u
+ umask $u
+ for cmd in mv 'cp -p' cp; do
+ for force in '' -f; do
+ for existing_dest in yes no; do
+ for g_perm in r w x rw wx xr rwx; do
+ for o_perm in r w x rw wx xr rwx; do
+ touch src || exit 1
+ chmod u=r,g=rx,o= src || exit 1
+ set _ `ls -l src`
+ shift
+ expected_perms=$1
+ rm -f dest
+ test $existing_dest = yes && {
+ touch dest || exit 1
+ chmod u=rw,g=$g_perm,o=$o_perm dest || exit 1
+ }
+ $cmd $force src dest || exit 1
+ test "$cmd" = mv && test -f src && exit 1
+ test "$cmd" = cp && { test -f src || exit 1; }
+ set _ `ls -l dest`
+ shift
+
+ case "$cmd:$force:$existing_dest" in
+ cp:*:yes)
+ _g_perm=`echo rwx|sed 's/[^'$g_perm']/-/g'`
+ _o_perm=`echo rwx|sed 's/[^'$o_perm']/-/g'`
+ expected_perms=-rw-$_g_perm$_o_perm
+ ;;
+ cp:*:no)
+ test $u = 37 &&
+ expected_perms=`echo $expected_perms|sed 's/.....$/-----/'`
+ test $u = 31 &&
+ expected_perms=`echo $expected_perms|sed 's/..\(..\).$/--\1-/'`
+ ;;
+ esac
+ test _$1 = _$expected_perms || exit 1
+ # Perform only one iteration when there's no existing destination.
+ test $existing_dest = no && break 3
+ done
+ done
+ done
+ done
+ done
+done
+
+(exit $fail); exit $fail
diff --git a/tests/cp/preserve-2 b/tests/cp/preserve-2
new file mode 100755
index 0000000..85f9e1e
--- /dev/null
+++ b/tests/cp/preserve-2
@@ -0,0 +1,45 @@
+#!/bin/sh
+# ensure that cp's --preserve=X,Y option is parsed properly
+
+# Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+touch f || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+cp --preserve=mode,links f g || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/r-vs-symlink b/tests/cp/r-vs-symlink
new file mode 100755
index 0000000..9601fb6
--- /dev/null
+++ b/tests/cp/r-vs-symlink
@@ -0,0 +1,61 @@
+#!/bin/sh
+# cp -r should not create symlinks. Fixed in fileutils-4.1.5.
+
+# Copyright (C) 2001, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# Restored old behavior (whereby cp -r preserves symlinks) in 4.1.6,
+# though now such usage evokes a warning:
+# cp: `slink': WARNING: using -r to copy symbolic links is not portable
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+echo abc > foo || framework_failure=1
+ln -s foo slink || framework_failure=1
+ln -s no-such-file no-file || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# This would fail in 4.1.5, not in 4.1.6.
+cp -r no-file junk 2>/dev/null || fail=1
+
+cp -r slink bar 2>/dev/null || fail=1
+set x `ls -l bar`; shift; mode=$1
+case $mode in
+ l*) ;;
+ *) fail=1;;
+esac
+
+(exit $fail); exit $fail
diff --git a/tests/cp/same-file b/tests/cp/same-file
new file mode 100755
index 0000000..44d5dd7
--- /dev/null
+++ b/tests/cp/same-file
@@ -0,0 +1,213 @@
+#!/bin/sh
+# Test some of cp's options and how cp handles situations in
+# which a naive implementation might overwrite the source file.
+
+# Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+. $srcdir/../lang-default
+. $srcdir/../envvar-check
+
+# Unset CDPATH. Otherwise, output from the `cd dir' command
+# can make this test fail.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+VERSION_CONTROL=numbered; export VERSION_CONTROL
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && exec 1>&2; rm -rf $t0 && exit $status' 0
+trap 'exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+actual=actual-$$
+expected=expected-$$
+
+exec 1> $actual
+
+# FIXME: This should be bigger: like more than 8k
+contents=XYZ
+
+for args in 'foo symlink' 'symlink foo' 'foo foo' 'sl1 sl2' 'foo hardlink'; do
+ for options in '' -d -f -df --rem -b -bd -bf -bdf \
+ -l -dl -fl -dfl -bl -bdl -bfl -bdfl; do
+ case $args$options in
+ # These tests are not portable.
+ # They all involve making a hard link to a symbolic link.
+ 'symlink foo'-dfl)
+ continue;;
+ 'symlink foo'-bdl)
+ continue;;
+ 'symlink foo'-bdfl)
+ continue;;
+ 'sl1 sl2'-dfl)
+ continue;;
+ 'sl1 sl2'-bd*l)
+ continue;;
+ 'sl1 sl2'-dl)
+ continue;;
+ esac
+ rm -rf dir
+ mkdir dir
+ cd dir
+ echo $contents > foo
+ case "$args" in *symlink*) ln -s foo symlink ;; esac
+ case "$args" in *hardlink*) ln foo hardlink ;; esac
+ case "$args" in *sl1*) ln -s foo sl1;; esac
+ case "$args" in *sl2*) ln -s foo sl2;; esac
+ (
+ (
+ # echo 1>&2 cp $options $args
+ cp $options $args 2>_err
+ echo $? $options
+
+ # Normalize the program name in the error output,
+ # and put brackets around the output.
+ test -s _err && echo "[`sed 's/^[^:][^:]*:/cp:/' _err`]"
+ # Strip off all but the file names.
+ ls="`ls -gG --ignore=_err . \
+ | sed \
+ -e '/^total /d' \
+ -e 's/^[^ ]* *[^ ]* *[^ ]* *[^ ]* *[^ ]* *[^ ]* *//'`"
+ echo "($ls)"
+ # Make sure the original is unchanged and that
+ # the destination is a copy.
+ for f in $args; do
+ if test -f $f; then
+ case "`cat $f`" in
+ "$contents") ;;
+ *) echo cp FAILED;;
+ esac
+ else
+ echo symlink-loop
+ fi
+ done
+ ) | tr '\n' ' '
+ echo
+ ) | sed 's/ *$//'
+ cd ..
+ done
+ echo
+done
+
+cat <<\EOF > $expected
+1 [cp: `foo' and `symlink' are the same file] (foo symlink -> foo)
+1 -d [cp: `foo' and `symlink' are the same file] (foo symlink -> foo)
+1 -f [cp: `foo' and `symlink' are the same file] (foo symlink -> foo)
+1 -df [cp: `foo' and `symlink' are the same file] (foo symlink -> foo)
+0 --rem (foo symlink)
+0 -b (foo symlink symlink.~1~ -> foo)
+0 -bd (foo symlink symlink.~1~ -> foo)
+0 -bf (foo symlink symlink.~1~ -> foo)
+0 -bdf (foo symlink symlink.~1~ -> foo)
+0 -l (foo symlink -> foo)
+0 -dl (foo symlink -> foo)
+0 -fl (foo symlink -> foo)
+0 -dfl (foo symlink)
+0 -bl (foo symlink -> foo)
+0 -bdl (foo symlink symlink.~1~ -> foo)
+0 -bfl (foo symlink -> foo)
+0 -bdfl (foo symlink symlink.~1~ -> foo)
+
+1 [cp: `symlink' and `foo' are the same file] (foo symlink -> foo)
+1 -d [cp: `symlink' and `foo' are the same file] (foo symlink -> foo)
+1 -f [cp: `symlink' and `foo' are the same file] (foo symlink -> foo)
+1 -df [cp: `symlink' and `foo' are the same file] (foo symlink -> foo)
+1 --rem [cp: `symlink' and `foo' are the same file] (foo symlink -> foo)
+1 -b [cp: `symlink' and `foo' are the same file] (foo symlink -> foo)
+0 -bd (foo -> foo foo.~1~ symlink -> foo) symlink-loop symlink-loop
+1 -bf [cp: `symlink' and `foo' are the same file] (foo symlink -> foo)
+0 -bdf (foo -> foo foo.~1~ symlink -> foo) symlink-loop symlink-loop
+0 -l (foo symlink -> foo)
+0 -dl (foo symlink -> foo)
+0 -fl (foo symlink -> foo)
+0 -bl (foo symlink -> foo)
+0 -bfl (foo symlink -> foo)
+
+1 [cp: `foo' and `foo' are the same file] (foo)
+1 -d [cp: `foo' and `foo' are the same file] (foo)
+1 -f [cp: `foo' and `foo' are the same file] (foo)
+1 -df [cp: `foo' and `foo' are the same file] (foo)
+1 --rem [cp: `foo' and `foo' are the same file] (foo)
+1 -b [cp: `foo' and `foo' are the same file] (foo)
+1 -bd [cp: `foo' and `foo' are the same file] (foo)
+0 -bf (foo foo.~1~)
+0 -bdf (foo foo.~1~)
+0 -l (foo)
+0 -dl (foo)
+0 -fl (foo)
+0 -dfl (foo)
+0 -bl (foo)
+0 -bdl (foo)
+0 -bfl (foo foo.~1~)
+0 -bdfl (foo foo.~1~)
+
+1 [cp: `sl1' and `sl2' are the same file] (foo sl1 -> foo sl2 -> foo)
+0 -d (foo sl1 -> foo sl2 -> foo)
+1 -f [cp: `sl1' and `sl2' are the same file] (foo sl1 -> foo sl2 -> foo)
+0 -df (foo sl1 -> foo sl2 -> foo)
+0 --rem (foo sl1 -> foo sl2)
+0 -b (foo sl1 -> foo sl2 sl2.~1~ -> foo)
+0 -bd (foo sl1 -> foo sl2 -> foo sl2.~1~ -> foo)
+0 -bf (foo sl1 -> foo sl2 sl2.~1~ -> foo)
+0 -bdf (foo sl1 -> foo sl2 -> foo sl2.~1~ -> foo)
+0 -l (foo sl1 -> foo sl2 -> foo)
+0 -fl (foo sl1 -> foo sl2 -> foo)
+0 -bl (foo sl1 -> foo sl2 -> foo)
+0 -bfl (foo sl1 -> foo sl2 -> foo)
+
+1 [cp: `foo' and `hardlink' are the same file] (foo hardlink)
+1 -d [cp: `foo' and `hardlink' are the same file] (foo hardlink)
+1 -f [cp: `foo' and `hardlink' are the same file] (foo hardlink)
+1 -df [cp: `foo' and `hardlink' are the same file] (foo hardlink)
+0 --rem (foo hardlink)
+0 -b (foo hardlink hardlink.~1~)
+0 -bd (foo hardlink hardlink.~1~)
+0 -bf (foo hardlink hardlink.~1~)
+0 -bdf (foo hardlink hardlink.~1~)
+0 -l (foo hardlink)
+0 -dl (foo hardlink)
+0 -fl (foo hardlink)
+0 -dfl (foo hardlink)
+0 -bl (foo hardlink)
+0 -bdl (foo hardlink)
+0 -bfl (foo hardlink)
+0 -bdfl (foo hardlink)
+
+EOF
+
+fail=0;
+
+# Some folks don't have diff.
+cmp $expected $actual \
+ || { diff -c $expected $actual 1>&2; fail=1; }
+
+(exit $fail); exit $fail
diff --git a/tests/cp/slink-2-slink b/tests/cp/slink-2-slink
new file mode 100755
index 0000000..c36b882
--- /dev/null
+++ b/tests/cp/slink-2-slink
@@ -0,0 +1,56 @@
+#!/bin/sh
+# `test cp --update A B' where A and B are both symlinks that point
+# to the same file
+
+# Copyright (C) 2000, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+. $srcdir/../envvar-check
+
+# Make sure we get English translations.
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap 'exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp
+
+touch file || framework_failure=1
+ln -s file a || framework_failure=1
+ln -s file b || framework_failure=1
+ln -s no-such-file c || framework_failure=1
+ln -s no-such-file d || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+cp --update --no-dereference a b || fail=1
+cp --update --no-dereference c d || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/sparse b/tests/cp/sparse
new file mode 100755
index 0000000..b2e940e
--- /dev/null
+++ b/tests/cp/sparse
@@ -0,0 +1,57 @@
+#!/bin/sh
+# Test cp --sparse=always
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../sparse-file
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+# Create a sparse file.
+# It has to be at least 128K in order to be sparse on some systems.
+# Make its size one larger than 128K, in order to tickle the
+# bug in coreutils-6.0.
+size=`expr 128 \* 1024 + 1`
+dd bs=1 seek=$size of=sparse < /dev/null 2> /dev/null || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+cp --sparse=always sparse copy || fail=1
+
+# Ensure that the copy has the same block count as the original.
+test `stat --printf %b copy` -le `stat --printf %b sparse` || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/special-bits b/tests/cp/special-bits
new file mode 100755
index 0000000..96dbf3d
--- /dev/null
+++ b/tests/cp/special-bits
@@ -0,0 +1,70 @@
+#!/bin/sh
+# make sure `cp -p' preserves special bits
+# This works only when run as root.
+
+# Copyright (C) 2000, 2001, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# This test would fail due to a bug introduced in 4.0y.
+# The bug was fixed in 4.0z.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+touch a b c || framework_failure=1
+chmod u+sx,go= a || framework_failure=1
+chmod u=rwx,g=sx,o= b || framework_failure=1
+chmod a=r,ug+sx c || framework_failure=1
+chown $NON_ROOT_USERNAME . || framework_failure=1
+chmod u=rwx,g=rx,o=rx . || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+
+cp -p a a2 || fail=1
+set _ `ls -l a`; shift; p1=$1
+set _ `ls -l a2`; shift; p2=$1
+test $p1 = $p2 || fail=1
+
+cp -p b b2 || fail=1
+set _ `ls -l b`; shift; p1=$1
+set _ `ls -l b2`; shift; p2=$1
+test $p1 = $p2 || fail=1
+
+setuidgid $NON_ROOT_USERNAME env PATH="$PATH" cp -p c c2 || fail=1
+set _ `ls -l c`; shift; p1=$1
+set _ `ls -l c2`; shift; p2=$1
+test $p1 = $p2 && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/src-base-dot b/tests/cp/src-base-dot
new file mode 100755
index 0000000..1af0e57
--- /dev/null
+++ b/tests/cp/src-base-dot
@@ -0,0 +1,54 @@
+#!/bin/sh
+# Ensure that "mkdir x y; cd y; cp -ab ../x/. ." is a successful, silent, no-op.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir x y || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+cd y
+cp --verbose -ab ../x/. . > out 2>&1 || fail=1
+cat <<\EOF > exp || fail=1
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/cp/symlink-slash b/tests/cp/symlink-slash
new file mode 100755
index 0000000..311775a
--- /dev/null
+++ b/tests/cp/symlink-slash
@@ -0,0 +1,58 @@
+#!/bin/sh
+# Make sure that cp -dR dereferences a symlink arg if its name is
+# written with a trailing slash.
+
+# Copyright (C) 2000, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir dir || framework_failure=1
+ln -s dir symlink || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+cp -dR symlink/ s || fail=1
+set `ls -l s`
+
+# Prior to fileutils-4.0q, the following would have output ...`s -> dir'
+# because the trailing slash was removed unconditionally (now you have to
+# use the new --strip-trailing-slash option) causing cp to reproduce the
+# symlink. Now, the trailing slash is interpreted by the stat library
+# call and so cp ends up dereferencing the symlink and copying the directory.
+test "$*" = 'total 0' && : || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/cp/trailing-slash b/tests/cp/trailing-slash
new file mode 100644
index 0000000..0cdbfa7
--- /dev/null
+++ b/tests/cp/trailing-slash
@@ -0,0 +1,2 @@
+# this is just a place-holder.
+# For trailing-slash-related tests, see ../mv/trailing-slash.
diff --git a/tests/cut/1.I b/tests/cut/1.I
new file mode 100644
index 0000000..af0abb2
--- /dev/null
+++ b/tests/cut/1.I
@@ -0,0 +1 @@
+a:b:c
diff --git a/tests/cut/1.X b/tests/cut/1.X
new file mode 100644
index 0000000..7098509
--- /dev/null
+++ b/tests/cut/1.X
@@ -0,0 +1 @@
+a:c
diff --git a/tests/cut/2.I b/tests/cut/2.I
new file mode 100644
index 0000000..af0abb2
--- /dev/null
+++ b/tests/cut/2.I
@@ -0,0 +1 @@
+a:b:c
diff --git a/tests/cut/2.X b/tests/cut/2.X
new file mode 100644
index 0000000..7098509
--- /dev/null
+++ b/tests/cut/2.X
@@ -0,0 +1 @@
+a:c
diff --git a/tests/cut/3.I b/tests/cut/3.I
new file mode 100644
index 0000000..af0abb2
--- /dev/null
+++ b/tests/cut/3.I
@@ -0,0 +1 @@
+a:b:c
diff --git a/tests/cut/3.X b/tests/cut/3.X
new file mode 100644
index 0000000..f0c9a09
--- /dev/null
+++ b/tests/cut/3.X
@@ -0,0 +1 @@
+b:c
diff --git a/tests/cut/4.I b/tests/cut/4.I
new file mode 100644
index 0000000..af0abb2
--- /dev/null
+++ b/tests/cut/4.I
@@ -0,0 +1 @@
+a:b:c
diff --git a/tests/cut/4.X b/tests/cut/4.X
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/tests/cut/4.X
@@ -0,0 +1 @@
+
diff --git a/tests/cut/5.I b/tests/cut/5.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/5.I
diff --git a/tests/cut/5.X b/tests/cut/5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/5.X
diff --git a/tests/cut/6.I b/tests/cut/6.I
new file mode 100644
index 0000000..190a180
--- /dev/null
+++ b/tests/cut/6.I
@@ -0,0 +1 @@
+123
diff --git a/tests/cut/6.X b/tests/cut/6.X
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/tests/cut/6.X
@@ -0,0 +1 @@
+
diff --git a/tests/cut/7.I b/tests/cut/7.I
new file mode 100644
index 0000000..d800886
--- /dev/null
+++ b/tests/cut/7.I
@@ -0,0 +1 @@
+123 \ No newline at end of file
diff --git a/tests/cut/7.X b/tests/cut/7.X
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/tests/cut/7.X
@@ -0,0 +1 @@
+
diff --git a/tests/cut/8.I b/tests/cut/8.I
new file mode 100644
index 0000000..8202b4f
--- /dev/null
+++ b/tests/cut/8.I
@@ -0,0 +1,2 @@
+123
+1 \ No newline at end of file
diff --git a/tests/cut/8.X b/tests/cut/8.X
new file mode 100644
index 0000000..139597f
--- /dev/null
+++ b/tests/cut/8.X
@@ -0,0 +1,2 @@
+
+
diff --git a/tests/cut/8bit-delim.I b/tests/cut/8bit-delim.I
new file mode 100644
index 0000000..2312c91
--- /dev/null
+++ b/tests/cut/8bit-delim.I
@@ -0,0 +1 @@
+a­b­c
diff --git a/tests/cut/8bit-delim.X b/tests/cut/8bit-delim.X
new file mode 100644
index 0000000..01b7680
--- /dev/null
+++ b/tests/cut/8bit-delim.X
@@ -0,0 +1 @@
+b_c
diff --git a/tests/cut/9.I b/tests/cut/9.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/9.I
diff --git a/tests/cut/9.X b/tests/cut/9.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/9.X
diff --git a/tests/cut/Makefile.am b/tests/cut/Makefile.am
new file mode 100644
index 0000000..e0ba2cc
--- /dev/null
+++ b/tests/cut/Makefile.am
@@ -0,0 +1,82 @@
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+##test-files-begin
+x = cut
+explicit =
+maint_gen = 1.I 1.X 2.I 2.X 3.I 3.X 4.I 4.X 5.I 5.X 6.I 6.X 7.I 7.X 8.I 8.X \
+9.I 9.X a.I a.X b.I b.X c.I c.X d.I d.X e.I e.X f.I f.X g.I g.X h.I h.X i.I \
+i.X j.I j.X k.I k.X l.I l.X m.I m.X n.I n.X o.I o.X p.I p.X q.I q.X r.I r.X \
+s.I s.X t.I t.X u.I u.X v.I v.X w.I w.X x.I x.X y.I y.X z.I z.X empty-fl.I \
+empty-fl.X missing-fl.I missing-fl.X empty-bl.I empty-bl.X missing-bl.I \
+missing-bl.X empty-f1.I empty-f1.X empty-f2.I empty-f2.X o-delim.I o-delim.X \
+nul-idelim.I nul-idelim.X nul-odelim.I nul-odelim.X multichar-od.I \
+multichar-od.X 8bit-delim.I 8bit-delim.X out-delim1.I out-delim1.X \
+out-delim2.I out-delim2.X out-delim3.I out-delim3.X out-delim3a.I \
+out-delim3a.X out-delim4.I out-delim4.X out-delim5.I out-delim5.X \
+out-delim6.I out-delim6.X od-abut.I od-abut.X od-overlap.I od-overlap.X \
+od-overlap2.I od-overlap2.X od-overlap3.I od-overlap3.X od-overlap4.I \
+od-overlap4.X od-overlap5.I od-overlap5.X
+run_gen = 1.O 1.E 2.O 2.E 3.O 3.E 4.O 4.E 5.O 5.E 6.O 6.E 7.O 7.E 8.O 8.E 9.O \
+9.E a.O a.E b.O b.E c.O c.E d.O d.E e.O e.E f.O f.E g.O g.E h.O h.E i.O i.E \
+j.O j.E k.O k.E l.O l.E m.O m.E n.O n.E o.O o.E p.O p.E q.O q.E r.O r.E s.O \
+s.E t.O t.E u.O u.E v.O v.E w.O w.E x.O x.E y.O y.E z.O z.E empty-fl.O \
+empty-fl.E missing-fl.O missing-fl.E empty-bl.O empty-bl.E missing-bl.O \
+missing-bl.E empty-f1.O empty-f1.E empty-f2.O empty-f2.E o-delim.O o-delim.E \
+nul-idelim.O nul-idelim.E nul-odelim.O nul-odelim.E multichar-od.O \
+multichar-od.E 8bit-delim.O 8bit-delim.E out-delim1.O out-delim1.E \
+out-delim2.O out-delim2.E out-delim3.O out-delim3.E out-delim3a.O \
+out-delim3a.E out-delim4.O out-delim4.E out-delim5.O out-delim5.E \
+out-delim6.O out-delim6.E od-abut.O od-abut.E od-overlap.O od-overlap.E \
+od-overlap2.O od-overlap2.E od-overlap3.O od-overlap3.E od-overlap4.O \
+od-overlap4.E od-overlap5.O od-overlap5.E
+##test-files-end
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+
+TESTS = $x-tests
+
+mk_script = $(srcdir)/../mk-script
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
diff --git a/tests/cut/Makefile.in b/tests/cut/Makefile.in
new file mode 100644
index 0000000..33f6404
--- /dev/null
+++ b/tests/cut/Makefile.in
@@ -0,0 +1,792 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/cut
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SCRIPTS = $(noinst_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+x = cut
+explicit =
+maint_gen = 1.I 1.X 2.I 2.X 3.I 3.X 4.I 4.X 5.I 5.X 6.I 6.X 7.I 7.X 8.I 8.X \
+9.I 9.X a.I a.X b.I b.X c.I c.X d.I d.X e.I e.X f.I f.X g.I g.X h.I h.X i.I \
+i.X j.I j.X k.I k.X l.I l.X m.I m.X n.I n.X o.I o.X p.I p.X q.I q.X r.I r.X \
+s.I s.X t.I t.X u.I u.X v.I v.X w.I w.X x.I x.X y.I y.X z.I z.X empty-fl.I \
+empty-fl.X missing-fl.I missing-fl.X empty-bl.I empty-bl.X missing-bl.I \
+missing-bl.X empty-f1.I empty-f1.X empty-f2.I empty-f2.X o-delim.I o-delim.X \
+nul-idelim.I nul-idelim.X nul-odelim.I nul-odelim.X multichar-od.I \
+multichar-od.X 8bit-delim.I 8bit-delim.X out-delim1.I out-delim1.X \
+out-delim2.I out-delim2.X out-delim3.I out-delim3.X out-delim3a.I \
+out-delim3a.X out-delim4.I out-delim4.X out-delim5.I out-delim5.X \
+out-delim6.I out-delim6.X od-abut.I od-abut.X od-overlap.I od-overlap.X \
+od-overlap2.I od-overlap2.X od-overlap3.I od-overlap3.X od-overlap4.I \
+od-overlap4.X od-overlap5.I od-overlap5.X
+
+run_gen = 1.O 1.E 2.O 2.E 3.O 3.E 4.O 4.E 5.O 5.E 6.O 6.E 7.O 7.E 8.O 8.E 9.O \
+9.E a.O a.E b.O b.E c.O c.E d.O d.E e.O e.E f.O f.E g.O g.E h.O h.E i.O i.E \
+j.O j.E k.O k.E l.O l.E m.O m.E n.O n.E o.O o.E p.O p.E q.O q.E r.O r.E s.O \
+s.E t.O t.E u.O u.E v.O v.E w.O w.E x.O x.E y.O y.E z.O z.E empty-fl.O \
+empty-fl.E missing-fl.O missing-fl.E empty-bl.O empty-bl.E missing-bl.O \
+missing-bl.E empty-f1.O empty-f1.E empty-f2.O empty-f2.E o-delim.O o-delim.E \
+nul-idelim.O nul-idelim.E nul-odelim.O nul-odelim.E multichar-od.O \
+multichar-od.E 8bit-delim.O 8bit-delim.E out-delim1.O out-delim1.E \
+out-delim2.O out-delim2.E out-delim3.O out-delim3.E out-delim3a.O \
+out-delim3a.E out-delim4.O out-delim4.E out-delim5.O out-delim5.E \
+out-delim6.O out-delim6.E od-abut.O od-abut.E od-overlap.O od-overlap.E \
+od-overlap2.O od-overlap2.E od-overlap3.O od-overlap3.E od-overlap4.O \
+od-overlap4.E od-overlap5.O od-overlap5.E
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+TESTS = $x-tests
+mk_script = $(srcdir)/../mk-script
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/cut/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/cut/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(SCRIPTS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/cut/Test.pm b/tests/cut/Test.pm
new file mode 100755
index 0000000..b4cd4e5
--- /dev/null
+++ b/tests/cut/Test.pm
@@ -0,0 +1,132 @@
+# Test 'cut'.
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2003, 2004 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+package Test;
+require 5.002;
+use strict;
+
+$Test::input_via_default = {REDIR => 0, FILE => 0, PIPE => 0};
+
+my @tv = (
+# test flags input expected output expected return code
+#
+['1', '-d: -f1,3-', "a:b:c\n", "a:c\n", 0],
+['2', '-d: -f1,3-', "a:b:c\n", "a:c\n", 0],
+['3', '-d: -f2-', "a:b:c\n", "b:c\n", 0],
+['4', '-d: -f4', "a:b:c\n", "\n", 0],
+['5', '-d: -f4', "", "", 0],
+['6', '-c4', "123\n", "\n", 0],
+['7', '-c4', "123", "\n", 0],
+['8', '-c4', "123\n1", "\n\n", 0],
+['9', '-c4', "", "", 0],
+['a', '-s -d: -f3-', "a:b:c\n", "c\n", 0],
+['b', '-s -d: -f2,3', "a:b:c\n", "b:c\n", 0],
+['c', '-s -d: -f1,3', "a:b:c\n", "a:c\n", 0],
+# Trailing colon should not be output
+['d', '-s -d: -f1,3', "a:b:c:\n", "a:c\n", 0],
+['e', '-s -d: -f3-', "a:b:c:\n", "c:\n", 0],
+['f', '-s -d: -f3-4', "a:b:c:\n", "c:\n", 0],
+['g', '-s -d: -f3,4', "a:b:c:\n", "c:\n", 0],
+# Make sure -s suppresses non-delimited lines
+['h', '-s -d: -f2,3', "abc\n", "", 0],
+#
+['i', '-d: -f1-3', ":::\n", "::\n", 0],
+['j', '-d: -f1-4', ":::\n", ":::\n", 0],
+['k', '-d: -f2-3', ":::\n", ":\n", 0],
+['l', '-d: -f2-4', ":::\n", "::\n", 0],
+['m', '-s -d: -f1-3', ":::\n", "::\n", 0],
+['n', '-s -d: -f1-4', ":::\n", ":::\n", 0],
+['o', '-s -d: -f2-3', ":::\n", ":\n", 0],
+['p', '-s -d: -f2-4', ":::\n", "::\n", 0],
+['q', '-s -d: -f2-4', ":::\n:\n", "::\n\n", 0],
+['r', '-s -d: -f2-4', ":::\n:1\n", "::\n1\n", 0],
+['s', '-s -d: -f1-4', ":::\n:a\n", ":::\n:a\n", 0],
+['t', '-s -d: -f3-', ":::\n:1\n", ":\n\n", 0],
+# Make sure it handles empty input properly, with and without -s.
+['u', '-s -f3-', "", "", 0],
+['v', '-f3-', "", "", 0],
+# Make sure it handles empty input properly.
+['w', '-b 1', "", "", 0],
+['x', '-s -d: -f2-4', ":\n", "\n", 0],
+# Errors
+# -s may be used only with -f
+['y', '-s -b4', ":\n", "", 1],
+# You must specify bytes or fields (or chars)
+['z', '', ":\n", "", 1],
+# Empty field list
+['empty-fl', '-f \'\'', ":\n", "", 1],
+# Missing field list
+['missing-fl', '-f', ":\n", "", 1],
+# Empty byte list
+['empty-bl', '-b \'\'', ":\n", "", 1],
+# Missing byte list
+['missing-bl', '-b', ":\n", "", 1],
+
+# This test fails with cut from textutils-1.22.
+['empty-f1', '-f1', "", "", 0],
+
+['empty-f2', '-f2', "", "", 0],
+
+['o-delim', '-d: -f2,3 --out=_', "a:b:c\n", "b_c\n", 0],
+['nul-idelim', "-d '' -f2,3 --out=_", "a\0b\0c\n", "b_c\n", 0],
+['nul-odelim', "-d: -f2,3 --out=", "a:b:c\n", "b\0c\n", 0],
+['multichar-od', "-d: -f2,3 --out=_._", "a:b:c\n", "b_._c\n", 0],
+
+# Prior to 1.22i, you couldn't use a delimiter that would sign-extend.
+['8bit-delim', "'-d\255' -f2,3 --out=_", "a\255b\255c\n", "b_c\n", 0],
+
+# New functionality:
+['out-delim1', '-c1-3,5- --output-d=:', "abcdefg\n", "abc:efg\n", 0],
+# A totally overlapped field shouldn't change anything:
+['out-delim2', '-c1-3,2,5- --output-d=:', "abcdefg\n", "abc:efg\n", 0],
+# Partial overlap: index `2' is not at the start of a range.
+['out-delim3', '-c1-3,2-4,6 --output-d=:', "abcdefg\n", "abcd:f\n", 0],
+['out-delim3a', '-c1-3,2-4,6- --output-d=:', "abcdefg\n", "abcd:fg\n", 0],
+# Ensure that the following two commands produce the same output.
+# Before an off-by-one fix, the output from the former would not contain a `:'.
+['out-delim4', '-c4-,2-3 --output-d=:', "abcdefg\n", "bc:defg\n", 0],
+['out-delim5', '-c2-3,4- --output-d=:', "abcdefg\n", "bc:defg\n", 0],
+# This test would fail for cut from coreutils-5.0.1 and earlier.
+['out-delim6', '-c2,1-3 --output-d=:', "abc\n", "abc\n", 0],
+#
+['od-abut', '-b1-2,3-4 --output-d=:', "abcd\n", "ab:cd\n", 0],
+['od-overlap', '-b1-2,2 --output-d=:', "abc\n", "ab\n", 0],
+['od-overlap2', '-b1-2,2- --output-d=:', "abc\n", "abc\n", 0],
+['od-overlap3', '-b1-3,2- --output-d=:', "abcd\n", "abcd\n", 0],
+['od-overlap4', '-b1-3,2-3 --output-d=:', "abcd\n", "abc\n", 0],
+['od-overlap5', '-b1-3,1-4 --output-d=:', "abcde\n", "abcd\n", 0],
+
+);
+
+# Don't use a pipe for failing tests. Otherwise, sometimes they
+# fail so early they'd evoke the `Broken pipe' message.
+my $t;
+foreach $t (@tv)
+ {
+ my ($test_name, $flags, $in, $exp, $ret) = @$t;
+ $Test::input_via{$test_name} = {REDIR => 0, FILE => 0} if $ret;
+ }
+
+sub test_vector
+{
+ return @tv;
+}
+
+1;
diff --git a/tests/cut/a.I b/tests/cut/a.I
new file mode 100644
index 0000000..af0abb2
--- /dev/null
+++ b/tests/cut/a.I
@@ -0,0 +1 @@
+a:b:c
diff --git a/tests/cut/a.X b/tests/cut/a.X
new file mode 100644
index 0000000..f2ad6c7
--- /dev/null
+++ b/tests/cut/a.X
@@ -0,0 +1 @@
+c
diff --git a/tests/cut/b.I b/tests/cut/b.I
new file mode 100644
index 0000000..af0abb2
--- /dev/null
+++ b/tests/cut/b.I
@@ -0,0 +1 @@
+a:b:c
diff --git a/tests/cut/b.X b/tests/cut/b.X
new file mode 100644
index 0000000..f0c9a09
--- /dev/null
+++ b/tests/cut/b.X
@@ -0,0 +1 @@
+b:c
diff --git a/tests/cut/c.I b/tests/cut/c.I
new file mode 100644
index 0000000..af0abb2
--- /dev/null
+++ b/tests/cut/c.I
@@ -0,0 +1 @@
+a:b:c
diff --git a/tests/cut/c.X b/tests/cut/c.X
new file mode 100644
index 0000000..7098509
--- /dev/null
+++ b/tests/cut/c.X
@@ -0,0 +1 @@
+a:c
diff --git a/tests/cut/cut-tests b/tests/cut/cut-tests
new file mode 100755
index 0000000..af553e8
--- /dev/null
+++ b/tests/cut/cut-tests
@@ -0,0 +1,3105 @@
+#! /bin/sh
+# This script was generated automatically by mk-script.
+case $# in
+ 0) xx='cut';;
+ *) xx="$1";;
+esac
+test "$VERBOSE" && echo=echo || echo=:
+$echo testing program: $xx
+errors=0
+test "$srcdir" || srcdir=.
+test "$VERBOSE" && $xx --version 2> /dev/null
+
+# Make sure we get English translations.
+LANGUAGE=C
+export LANGUAGE
+LC_ALL=C
+export LC_ALL
+LANG=C
+export LANG
+
+$xx -d: -f1,3- $srcdir/1.I > 1.O 2> 1.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1.O $srcdir/1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1(F)"; fi;;
+ 1) $echo "Test 1(F) failed: files 1.O and $srcdir/1.X differ" 1>&2
+ (diff -c 1.O $srcdir/1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1(F) may have failed." 1>&2
+ $echo The command "cmp 1.O $srcdir/1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1.E || rm -f 1.E
+cat $srcdir/1.I | $xx -d: -f1,3- > 1.O 2> 1.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1.O $srcdir/1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1(|)"; fi;;
+ 1) $echo "Test 1(|) failed: files 1.O and $srcdir/1.X differ" 1>&2
+ (diff -c 1.O $srcdir/1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1(|) may have failed." 1>&2
+ $echo The command "cmp 1.O $srcdir/1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1.E || rm -f 1.E
+$xx -d: -f1,3- < $srcdir/1.I > 1.O 2> 1.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1.O $srcdir/1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1(<)"; fi;;
+ 1) $echo "Test 1(<) failed: files 1.O and $srcdir/1.X differ" 1>&2
+ (diff -c 1.O $srcdir/1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1(<) may have failed." 1>&2
+ $echo The command "cmp 1.O $srcdir/1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1.E || rm -f 1.E
+$xx -d: -f1,3- $srcdir/2.I > 2.O 2> 2.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2.O $srcdir/2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2(F)"; fi;;
+ 1) $echo "Test 2(F) failed: files 2.O and $srcdir/2.X differ" 1>&2
+ (diff -c 2.O $srcdir/2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2(F) may have failed." 1>&2
+ $echo The command "cmp 2.O $srcdir/2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2.E || rm -f 2.E
+cat $srcdir/2.I | $xx -d: -f1,3- > 2.O 2> 2.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2.O $srcdir/2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2(|)"; fi;;
+ 1) $echo "Test 2(|) failed: files 2.O and $srcdir/2.X differ" 1>&2
+ (diff -c 2.O $srcdir/2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2(|) may have failed." 1>&2
+ $echo The command "cmp 2.O $srcdir/2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2.E || rm -f 2.E
+$xx -d: -f1,3- < $srcdir/2.I > 2.O 2> 2.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2.O $srcdir/2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2(<)"; fi;;
+ 1) $echo "Test 2(<) failed: files 2.O and $srcdir/2.X differ" 1>&2
+ (diff -c 2.O $srcdir/2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2(<) may have failed." 1>&2
+ $echo The command "cmp 2.O $srcdir/2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2.E || rm -f 2.E
+$xx -d: -f2- $srcdir/3.I > 3.O 2> 3.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3.O $srcdir/3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3(F)"; fi;;
+ 1) $echo "Test 3(F) failed: files 3.O and $srcdir/3.X differ" 1>&2
+ (diff -c 3.O $srcdir/3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3(F) may have failed." 1>&2
+ $echo The command "cmp 3.O $srcdir/3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3.E || rm -f 3.E
+cat $srcdir/3.I | $xx -d: -f2- > 3.O 2> 3.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3.O $srcdir/3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3(|)"; fi;;
+ 1) $echo "Test 3(|) failed: files 3.O and $srcdir/3.X differ" 1>&2
+ (diff -c 3.O $srcdir/3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3(|) may have failed." 1>&2
+ $echo The command "cmp 3.O $srcdir/3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3.E || rm -f 3.E
+$xx -d: -f2- < $srcdir/3.I > 3.O 2> 3.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3.O $srcdir/3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3(<)"; fi;;
+ 1) $echo "Test 3(<) failed: files 3.O and $srcdir/3.X differ" 1>&2
+ (diff -c 3.O $srcdir/3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3(<) may have failed." 1>&2
+ $echo The command "cmp 3.O $srcdir/3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3.E || rm -f 3.E
+$xx -d: -f4 $srcdir/4.I > 4.O 2> 4.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4.O $srcdir/4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4(F)"; fi;;
+ 1) $echo "Test 4(F) failed: files 4.O and $srcdir/4.X differ" 1>&2
+ (diff -c 4.O $srcdir/4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4(F) may have failed." 1>&2
+ $echo The command "cmp 4.O $srcdir/4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4.E || rm -f 4.E
+cat $srcdir/4.I | $xx -d: -f4 > 4.O 2> 4.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4.O $srcdir/4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4(|)"; fi;;
+ 1) $echo "Test 4(|) failed: files 4.O and $srcdir/4.X differ" 1>&2
+ (diff -c 4.O $srcdir/4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4(|) may have failed." 1>&2
+ $echo The command "cmp 4.O $srcdir/4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4.E || rm -f 4.E
+$xx -d: -f4 < $srcdir/4.I > 4.O 2> 4.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4.O $srcdir/4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4(<)"; fi;;
+ 1) $echo "Test 4(<) failed: files 4.O and $srcdir/4.X differ" 1>&2
+ (diff -c 4.O $srcdir/4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4(<) may have failed." 1>&2
+ $echo The command "cmp 4.O $srcdir/4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4.E || rm -f 4.E
+$xx -d: -f4 $srcdir/5.I > 5.O 2> 5.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5.O $srcdir/5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5(F)"; fi;;
+ 1) $echo "Test 5(F) failed: files 5.O and $srcdir/5.X differ" 1>&2
+ (diff -c 5.O $srcdir/5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5(F) may have failed." 1>&2
+ $echo The command "cmp 5.O $srcdir/5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5.E || rm -f 5.E
+cat $srcdir/5.I | $xx -d: -f4 > 5.O 2> 5.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5.O $srcdir/5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5(|)"; fi;;
+ 1) $echo "Test 5(|) failed: files 5.O and $srcdir/5.X differ" 1>&2
+ (diff -c 5.O $srcdir/5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5(|) may have failed." 1>&2
+ $echo The command "cmp 5.O $srcdir/5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5.E || rm -f 5.E
+$xx -d: -f4 < $srcdir/5.I > 5.O 2> 5.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5.O $srcdir/5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5(<)"; fi;;
+ 1) $echo "Test 5(<) failed: files 5.O and $srcdir/5.X differ" 1>&2
+ (diff -c 5.O $srcdir/5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5(<) may have failed." 1>&2
+ $echo The command "cmp 5.O $srcdir/5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5.E || rm -f 5.E
+$xx -c4 $srcdir/6.I > 6.O 2> 6.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6.O $srcdir/6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6(F)"; fi;;
+ 1) $echo "Test 6(F) failed: files 6.O and $srcdir/6.X differ" 1>&2
+ (diff -c 6.O $srcdir/6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6(F) may have failed." 1>&2
+ $echo The command "cmp 6.O $srcdir/6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6.E || rm -f 6.E
+cat $srcdir/6.I | $xx -c4 > 6.O 2> 6.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6.O $srcdir/6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6(|)"; fi;;
+ 1) $echo "Test 6(|) failed: files 6.O and $srcdir/6.X differ" 1>&2
+ (diff -c 6.O $srcdir/6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6(|) may have failed." 1>&2
+ $echo The command "cmp 6.O $srcdir/6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6.E || rm -f 6.E
+$xx -c4 < $srcdir/6.I > 6.O 2> 6.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6.O $srcdir/6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6(<)"; fi;;
+ 1) $echo "Test 6(<) failed: files 6.O and $srcdir/6.X differ" 1>&2
+ (diff -c 6.O $srcdir/6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6(<) may have failed." 1>&2
+ $echo The command "cmp 6.O $srcdir/6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6.E || rm -f 6.E
+$xx -c4 $srcdir/7.I > 7.O 2> 7.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7.O $srcdir/7.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7(F)"; fi;;
+ 1) $echo "Test 7(F) failed: files 7.O and $srcdir/7.X differ" 1>&2
+ (diff -c 7.O $srcdir/7.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7(F) may have failed." 1>&2
+ $echo The command "cmp 7.O $srcdir/7.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7.E || rm -f 7.E
+cat $srcdir/7.I | $xx -c4 > 7.O 2> 7.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7.O $srcdir/7.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7(|)"; fi;;
+ 1) $echo "Test 7(|) failed: files 7.O and $srcdir/7.X differ" 1>&2
+ (diff -c 7.O $srcdir/7.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7(|) may have failed." 1>&2
+ $echo The command "cmp 7.O $srcdir/7.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7.E || rm -f 7.E
+$xx -c4 < $srcdir/7.I > 7.O 2> 7.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7.O $srcdir/7.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7(<)"; fi;;
+ 1) $echo "Test 7(<) failed: files 7.O and $srcdir/7.X differ" 1>&2
+ (diff -c 7.O $srcdir/7.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7(<) may have failed." 1>&2
+ $echo The command "cmp 7.O $srcdir/7.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7.E || rm -f 7.E
+$xx -c4 $srcdir/8.I > 8.O 2> 8.E
+code=$?
+if test $code != 0; then
+ $echo "Test 8(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 8.O $srcdir/8.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 8(F)"; fi;;
+ 1) $echo "Test 8(F) failed: files 8.O and $srcdir/8.X differ" 1>&2
+ (diff -c 8.O $srcdir/8.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 8(F) may have failed." 1>&2
+ $echo The command "cmp 8.O $srcdir/8.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 8.E || rm -f 8.E
+cat $srcdir/8.I | $xx -c4 > 8.O 2> 8.E
+code=$?
+if test $code != 0; then
+ $echo "Test 8(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 8.O $srcdir/8.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 8(|)"; fi;;
+ 1) $echo "Test 8(|) failed: files 8.O and $srcdir/8.X differ" 1>&2
+ (diff -c 8.O $srcdir/8.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 8(|) may have failed." 1>&2
+ $echo The command "cmp 8.O $srcdir/8.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 8.E || rm -f 8.E
+$xx -c4 < $srcdir/8.I > 8.O 2> 8.E
+code=$?
+if test $code != 0; then
+ $echo "Test 8(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 8.O $srcdir/8.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 8(<)"; fi;;
+ 1) $echo "Test 8(<) failed: files 8.O and $srcdir/8.X differ" 1>&2
+ (diff -c 8.O $srcdir/8.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 8(<) may have failed." 1>&2
+ $echo The command "cmp 8.O $srcdir/8.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 8.E || rm -f 8.E
+$xx -c4 $srcdir/9.I > 9.O 2> 9.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9.O $srcdir/9.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9(F)"; fi;;
+ 1) $echo "Test 9(F) failed: files 9.O and $srcdir/9.X differ" 1>&2
+ (diff -c 9.O $srcdir/9.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9(F) may have failed." 1>&2
+ $echo The command "cmp 9.O $srcdir/9.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9.E || rm -f 9.E
+cat $srcdir/9.I | $xx -c4 > 9.O 2> 9.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9.O $srcdir/9.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9(|)"; fi;;
+ 1) $echo "Test 9(|) failed: files 9.O and $srcdir/9.X differ" 1>&2
+ (diff -c 9.O $srcdir/9.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9(|) may have failed." 1>&2
+ $echo The command "cmp 9.O $srcdir/9.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9.E || rm -f 9.E
+$xx -c4 < $srcdir/9.I > 9.O 2> 9.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9.O $srcdir/9.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9(<)"; fi;;
+ 1) $echo "Test 9(<) failed: files 9.O and $srcdir/9.X differ" 1>&2
+ (diff -c 9.O $srcdir/9.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9(<) may have failed." 1>&2
+ $echo The command "cmp 9.O $srcdir/9.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9.E || rm -f 9.E
+$xx -s -d: -f3- $srcdir/a.I > a.O 2> a.E
+code=$?
+if test $code != 0; then
+ $echo "Test a(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a.O $srcdir/a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a(F)"; fi;;
+ 1) $echo "Test a(F) failed: files a.O and $srcdir/a.X differ" 1>&2
+ (diff -c a.O $srcdir/a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a(F) may have failed." 1>&2
+ $echo The command "cmp a.O $srcdir/a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a.E || rm -f a.E
+cat $srcdir/a.I | $xx -s -d: -f3- > a.O 2> a.E
+code=$?
+if test $code != 0; then
+ $echo "Test a(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a.O $srcdir/a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a(|)"; fi;;
+ 1) $echo "Test a(|) failed: files a.O and $srcdir/a.X differ" 1>&2
+ (diff -c a.O $srcdir/a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a(|) may have failed." 1>&2
+ $echo The command "cmp a.O $srcdir/a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a.E || rm -f a.E
+$xx -s -d: -f3- < $srcdir/a.I > a.O 2> a.E
+code=$?
+if test $code != 0; then
+ $echo "Test a(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a.O $srcdir/a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a(<)"; fi;;
+ 1) $echo "Test a(<) failed: files a.O and $srcdir/a.X differ" 1>&2
+ (diff -c a.O $srcdir/a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a(<) may have failed." 1>&2
+ $echo The command "cmp a.O $srcdir/a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a.E || rm -f a.E
+$xx -s -d: -f2,3 $srcdir/b.I > b.O 2> b.E
+code=$?
+if test $code != 0; then
+ $echo "Test b(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp b.O $srcdir/b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed b(F)"; fi;;
+ 1) $echo "Test b(F) failed: files b.O and $srcdir/b.X differ" 1>&2
+ (diff -c b.O $srcdir/b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test b(F) may have failed." 1>&2
+ $echo The command "cmp b.O $srcdir/b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s b.E || rm -f b.E
+cat $srcdir/b.I | $xx -s -d: -f2,3 > b.O 2> b.E
+code=$?
+if test $code != 0; then
+ $echo "Test b(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp b.O $srcdir/b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed b(|)"; fi;;
+ 1) $echo "Test b(|) failed: files b.O and $srcdir/b.X differ" 1>&2
+ (diff -c b.O $srcdir/b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test b(|) may have failed." 1>&2
+ $echo The command "cmp b.O $srcdir/b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s b.E || rm -f b.E
+$xx -s -d: -f2,3 < $srcdir/b.I > b.O 2> b.E
+code=$?
+if test $code != 0; then
+ $echo "Test b(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp b.O $srcdir/b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed b(<)"; fi;;
+ 1) $echo "Test b(<) failed: files b.O and $srcdir/b.X differ" 1>&2
+ (diff -c b.O $srcdir/b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test b(<) may have failed." 1>&2
+ $echo The command "cmp b.O $srcdir/b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s b.E || rm -f b.E
+$xx -s -d: -f1,3 $srcdir/c.I > c.O 2> c.E
+code=$?
+if test $code != 0; then
+ $echo "Test c(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c.O $srcdir/c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c(F)"; fi;;
+ 1) $echo "Test c(F) failed: files c.O and $srcdir/c.X differ" 1>&2
+ (diff -c c.O $srcdir/c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c(F) may have failed." 1>&2
+ $echo The command "cmp c.O $srcdir/c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c.E || rm -f c.E
+cat $srcdir/c.I | $xx -s -d: -f1,3 > c.O 2> c.E
+code=$?
+if test $code != 0; then
+ $echo "Test c(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c.O $srcdir/c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c(|)"; fi;;
+ 1) $echo "Test c(|) failed: files c.O and $srcdir/c.X differ" 1>&2
+ (diff -c c.O $srcdir/c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c(|) may have failed." 1>&2
+ $echo The command "cmp c.O $srcdir/c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c.E || rm -f c.E
+$xx -s -d: -f1,3 < $srcdir/c.I > c.O 2> c.E
+code=$?
+if test $code != 0; then
+ $echo "Test c(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c.O $srcdir/c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c(<)"; fi;;
+ 1) $echo "Test c(<) failed: files c.O and $srcdir/c.X differ" 1>&2
+ (diff -c c.O $srcdir/c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c(<) may have failed." 1>&2
+ $echo The command "cmp c.O $srcdir/c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c.E || rm -f c.E
+$xx -s -d: -f1,3 $srcdir/d.I > d.O 2> d.E
+code=$?
+if test $code != 0; then
+ $echo "Test d(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp d.O $srcdir/d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed d(F)"; fi;;
+ 1) $echo "Test d(F) failed: files d.O and $srcdir/d.X differ" 1>&2
+ (diff -c d.O $srcdir/d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test d(F) may have failed." 1>&2
+ $echo The command "cmp d.O $srcdir/d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s d.E || rm -f d.E
+cat $srcdir/d.I | $xx -s -d: -f1,3 > d.O 2> d.E
+code=$?
+if test $code != 0; then
+ $echo "Test d(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp d.O $srcdir/d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed d(|)"; fi;;
+ 1) $echo "Test d(|) failed: files d.O and $srcdir/d.X differ" 1>&2
+ (diff -c d.O $srcdir/d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test d(|) may have failed." 1>&2
+ $echo The command "cmp d.O $srcdir/d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s d.E || rm -f d.E
+$xx -s -d: -f1,3 < $srcdir/d.I > d.O 2> d.E
+code=$?
+if test $code != 0; then
+ $echo "Test d(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp d.O $srcdir/d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed d(<)"; fi;;
+ 1) $echo "Test d(<) failed: files d.O and $srcdir/d.X differ" 1>&2
+ (diff -c d.O $srcdir/d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test d(<) may have failed." 1>&2
+ $echo The command "cmp d.O $srcdir/d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s d.E || rm -f d.E
+$xx -s -d: -f3- $srcdir/e.I > e.O 2> e.E
+code=$?
+if test $code != 0; then
+ $echo "Test e(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp e.O $srcdir/e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed e(F)"; fi;;
+ 1) $echo "Test e(F) failed: files e.O and $srcdir/e.X differ" 1>&2
+ (diff -c e.O $srcdir/e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test e(F) may have failed." 1>&2
+ $echo The command "cmp e.O $srcdir/e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s e.E || rm -f e.E
+cat $srcdir/e.I | $xx -s -d: -f3- > e.O 2> e.E
+code=$?
+if test $code != 0; then
+ $echo "Test e(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp e.O $srcdir/e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed e(|)"; fi;;
+ 1) $echo "Test e(|) failed: files e.O and $srcdir/e.X differ" 1>&2
+ (diff -c e.O $srcdir/e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test e(|) may have failed." 1>&2
+ $echo The command "cmp e.O $srcdir/e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s e.E || rm -f e.E
+$xx -s -d: -f3- < $srcdir/e.I > e.O 2> e.E
+code=$?
+if test $code != 0; then
+ $echo "Test e(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp e.O $srcdir/e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed e(<)"; fi;;
+ 1) $echo "Test e(<) failed: files e.O and $srcdir/e.X differ" 1>&2
+ (diff -c e.O $srcdir/e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test e(<) may have failed." 1>&2
+ $echo The command "cmp e.O $srcdir/e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s e.E || rm -f e.E
+$xx -s -d: -f3-4 $srcdir/f.I > f.O 2> f.E
+code=$?
+if test $code != 0; then
+ $echo "Test f(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp f.O $srcdir/f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed f(F)"; fi;;
+ 1) $echo "Test f(F) failed: files f.O and $srcdir/f.X differ" 1>&2
+ (diff -c f.O $srcdir/f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test f(F) may have failed." 1>&2
+ $echo The command "cmp f.O $srcdir/f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s f.E || rm -f f.E
+cat $srcdir/f.I | $xx -s -d: -f3-4 > f.O 2> f.E
+code=$?
+if test $code != 0; then
+ $echo "Test f(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp f.O $srcdir/f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed f(|)"; fi;;
+ 1) $echo "Test f(|) failed: files f.O and $srcdir/f.X differ" 1>&2
+ (diff -c f.O $srcdir/f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test f(|) may have failed." 1>&2
+ $echo The command "cmp f.O $srcdir/f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s f.E || rm -f f.E
+$xx -s -d: -f3-4 < $srcdir/f.I > f.O 2> f.E
+code=$?
+if test $code != 0; then
+ $echo "Test f(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp f.O $srcdir/f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed f(<)"; fi;;
+ 1) $echo "Test f(<) failed: files f.O and $srcdir/f.X differ" 1>&2
+ (diff -c f.O $srcdir/f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test f(<) may have failed." 1>&2
+ $echo The command "cmp f.O $srcdir/f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s f.E || rm -f f.E
+$xx -s -d: -f3,4 $srcdir/g.I > g.O 2> g.E
+code=$?
+if test $code != 0; then
+ $echo "Test g(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp g.O $srcdir/g.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed g(F)"; fi;;
+ 1) $echo "Test g(F) failed: files g.O and $srcdir/g.X differ" 1>&2
+ (diff -c g.O $srcdir/g.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test g(F) may have failed." 1>&2
+ $echo The command "cmp g.O $srcdir/g.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s g.E || rm -f g.E
+cat $srcdir/g.I | $xx -s -d: -f3,4 > g.O 2> g.E
+code=$?
+if test $code != 0; then
+ $echo "Test g(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp g.O $srcdir/g.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed g(|)"; fi;;
+ 1) $echo "Test g(|) failed: files g.O and $srcdir/g.X differ" 1>&2
+ (diff -c g.O $srcdir/g.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test g(|) may have failed." 1>&2
+ $echo The command "cmp g.O $srcdir/g.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s g.E || rm -f g.E
+$xx -s -d: -f3,4 < $srcdir/g.I > g.O 2> g.E
+code=$?
+if test $code != 0; then
+ $echo "Test g(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp g.O $srcdir/g.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed g(<)"; fi;;
+ 1) $echo "Test g(<) failed: files g.O and $srcdir/g.X differ" 1>&2
+ (diff -c g.O $srcdir/g.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test g(<) may have failed." 1>&2
+ $echo The command "cmp g.O $srcdir/g.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s g.E || rm -f g.E
+$xx -s -d: -f2,3 $srcdir/h.I > h.O 2> h.E
+code=$?
+if test $code != 0; then
+ $echo "Test h(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp h.O $srcdir/h.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed h(F)"; fi;;
+ 1) $echo "Test h(F) failed: files h.O and $srcdir/h.X differ" 1>&2
+ (diff -c h.O $srcdir/h.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test h(F) may have failed." 1>&2
+ $echo The command "cmp h.O $srcdir/h.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s h.E || rm -f h.E
+cat $srcdir/h.I | $xx -s -d: -f2,3 > h.O 2> h.E
+code=$?
+if test $code != 0; then
+ $echo "Test h(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp h.O $srcdir/h.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed h(|)"; fi;;
+ 1) $echo "Test h(|) failed: files h.O and $srcdir/h.X differ" 1>&2
+ (diff -c h.O $srcdir/h.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test h(|) may have failed." 1>&2
+ $echo The command "cmp h.O $srcdir/h.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s h.E || rm -f h.E
+$xx -s -d: -f2,3 < $srcdir/h.I > h.O 2> h.E
+code=$?
+if test $code != 0; then
+ $echo "Test h(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp h.O $srcdir/h.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed h(<)"; fi;;
+ 1) $echo "Test h(<) failed: files h.O and $srcdir/h.X differ" 1>&2
+ (diff -c h.O $srcdir/h.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test h(<) may have failed." 1>&2
+ $echo The command "cmp h.O $srcdir/h.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s h.E || rm -f h.E
+$xx -d: -f1-3 $srcdir/i.I > i.O 2> i.E
+code=$?
+if test $code != 0; then
+ $echo "Test i(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp i.O $srcdir/i.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed i(F)"; fi;;
+ 1) $echo "Test i(F) failed: files i.O and $srcdir/i.X differ" 1>&2
+ (diff -c i.O $srcdir/i.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test i(F) may have failed." 1>&2
+ $echo The command "cmp i.O $srcdir/i.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s i.E || rm -f i.E
+cat $srcdir/i.I | $xx -d: -f1-3 > i.O 2> i.E
+code=$?
+if test $code != 0; then
+ $echo "Test i(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp i.O $srcdir/i.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed i(|)"; fi;;
+ 1) $echo "Test i(|) failed: files i.O and $srcdir/i.X differ" 1>&2
+ (diff -c i.O $srcdir/i.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test i(|) may have failed." 1>&2
+ $echo The command "cmp i.O $srcdir/i.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s i.E || rm -f i.E
+$xx -d: -f1-3 < $srcdir/i.I > i.O 2> i.E
+code=$?
+if test $code != 0; then
+ $echo "Test i(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp i.O $srcdir/i.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed i(<)"; fi;;
+ 1) $echo "Test i(<) failed: files i.O and $srcdir/i.X differ" 1>&2
+ (diff -c i.O $srcdir/i.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test i(<) may have failed." 1>&2
+ $echo The command "cmp i.O $srcdir/i.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s i.E || rm -f i.E
+$xx -d: -f1-4 $srcdir/j.I > j.O 2> j.E
+code=$?
+if test $code != 0; then
+ $echo "Test j(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp j.O $srcdir/j.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed j(F)"; fi;;
+ 1) $echo "Test j(F) failed: files j.O and $srcdir/j.X differ" 1>&2
+ (diff -c j.O $srcdir/j.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test j(F) may have failed." 1>&2
+ $echo The command "cmp j.O $srcdir/j.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s j.E || rm -f j.E
+cat $srcdir/j.I | $xx -d: -f1-4 > j.O 2> j.E
+code=$?
+if test $code != 0; then
+ $echo "Test j(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp j.O $srcdir/j.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed j(|)"; fi;;
+ 1) $echo "Test j(|) failed: files j.O and $srcdir/j.X differ" 1>&2
+ (diff -c j.O $srcdir/j.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test j(|) may have failed." 1>&2
+ $echo The command "cmp j.O $srcdir/j.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s j.E || rm -f j.E
+$xx -d: -f1-4 < $srcdir/j.I > j.O 2> j.E
+code=$?
+if test $code != 0; then
+ $echo "Test j(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp j.O $srcdir/j.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed j(<)"; fi;;
+ 1) $echo "Test j(<) failed: files j.O and $srcdir/j.X differ" 1>&2
+ (diff -c j.O $srcdir/j.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test j(<) may have failed." 1>&2
+ $echo The command "cmp j.O $srcdir/j.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s j.E || rm -f j.E
+$xx -d: -f2-3 $srcdir/k.I > k.O 2> k.E
+code=$?
+if test $code != 0; then
+ $echo "Test k(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp k.O $srcdir/k.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed k(F)"; fi;;
+ 1) $echo "Test k(F) failed: files k.O and $srcdir/k.X differ" 1>&2
+ (diff -c k.O $srcdir/k.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test k(F) may have failed." 1>&2
+ $echo The command "cmp k.O $srcdir/k.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s k.E || rm -f k.E
+cat $srcdir/k.I | $xx -d: -f2-3 > k.O 2> k.E
+code=$?
+if test $code != 0; then
+ $echo "Test k(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp k.O $srcdir/k.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed k(|)"; fi;;
+ 1) $echo "Test k(|) failed: files k.O and $srcdir/k.X differ" 1>&2
+ (diff -c k.O $srcdir/k.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test k(|) may have failed." 1>&2
+ $echo The command "cmp k.O $srcdir/k.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s k.E || rm -f k.E
+$xx -d: -f2-3 < $srcdir/k.I > k.O 2> k.E
+code=$?
+if test $code != 0; then
+ $echo "Test k(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp k.O $srcdir/k.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed k(<)"; fi;;
+ 1) $echo "Test k(<) failed: files k.O and $srcdir/k.X differ" 1>&2
+ (diff -c k.O $srcdir/k.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test k(<) may have failed." 1>&2
+ $echo The command "cmp k.O $srcdir/k.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s k.E || rm -f k.E
+$xx -d: -f2-4 $srcdir/l.I > l.O 2> l.E
+code=$?
+if test $code != 0; then
+ $echo "Test l(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp l.O $srcdir/l.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed l(F)"; fi;;
+ 1) $echo "Test l(F) failed: files l.O and $srcdir/l.X differ" 1>&2
+ (diff -c l.O $srcdir/l.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test l(F) may have failed." 1>&2
+ $echo The command "cmp l.O $srcdir/l.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s l.E || rm -f l.E
+cat $srcdir/l.I | $xx -d: -f2-4 > l.O 2> l.E
+code=$?
+if test $code != 0; then
+ $echo "Test l(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp l.O $srcdir/l.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed l(|)"; fi;;
+ 1) $echo "Test l(|) failed: files l.O and $srcdir/l.X differ" 1>&2
+ (diff -c l.O $srcdir/l.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test l(|) may have failed." 1>&2
+ $echo The command "cmp l.O $srcdir/l.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s l.E || rm -f l.E
+$xx -d: -f2-4 < $srcdir/l.I > l.O 2> l.E
+code=$?
+if test $code != 0; then
+ $echo "Test l(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp l.O $srcdir/l.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed l(<)"; fi;;
+ 1) $echo "Test l(<) failed: files l.O and $srcdir/l.X differ" 1>&2
+ (diff -c l.O $srcdir/l.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test l(<) may have failed." 1>&2
+ $echo The command "cmp l.O $srcdir/l.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s l.E || rm -f l.E
+$xx -s -d: -f1-3 $srcdir/m.I > m.O 2> m.E
+code=$?
+if test $code != 0; then
+ $echo "Test m(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp m.O $srcdir/m.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed m(F)"; fi;;
+ 1) $echo "Test m(F) failed: files m.O and $srcdir/m.X differ" 1>&2
+ (diff -c m.O $srcdir/m.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test m(F) may have failed." 1>&2
+ $echo The command "cmp m.O $srcdir/m.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s m.E || rm -f m.E
+cat $srcdir/m.I | $xx -s -d: -f1-3 > m.O 2> m.E
+code=$?
+if test $code != 0; then
+ $echo "Test m(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp m.O $srcdir/m.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed m(|)"; fi;;
+ 1) $echo "Test m(|) failed: files m.O and $srcdir/m.X differ" 1>&2
+ (diff -c m.O $srcdir/m.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test m(|) may have failed." 1>&2
+ $echo The command "cmp m.O $srcdir/m.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s m.E || rm -f m.E
+$xx -s -d: -f1-3 < $srcdir/m.I > m.O 2> m.E
+code=$?
+if test $code != 0; then
+ $echo "Test m(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp m.O $srcdir/m.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed m(<)"; fi;;
+ 1) $echo "Test m(<) failed: files m.O and $srcdir/m.X differ" 1>&2
+ (diff -c m.O $srcdir/m.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test m(<) may have failed." 1>&2
+ $echo The command "cmp m.O $srcdir/m.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s m.E || rm -f m.E
+$xx -s -d: -f1-4 $srcdir/n.I > n.O 2> n.E
+code=$?
+if test $code != 0; then
+ $echo "Test n(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n.O $srcdir/n.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n(F)"; fi;;
+ 1) $echo "Test n(F) failed: files n.O and $srcdir/n.X differ" 1>&2
+ (diff -c n.O $srcdir/n.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n(F) may have failed." 1>&2
+ $echo The command "cmp n.O $srcdir/n.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n.E || rm -f n.E
+cat $srcdir/n.I | $xx -s -d: -f1-4 > n.O 2> n.E
+code=$?
+if test $code != 0; then
+ $echo "Test n(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n.O $srcdir/n.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n(|)"; fi;;
+ 1) $echo "Test n(|) failed: files n.O and $srcdir/n.X differ" 1>&2
+ (diff -c n.O $srcdir/n.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n(|) may have failed." 1>&2
+ $echo The command "cmp n.O $srcdir/n.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n.E || rm -f n.E
+$xx -s -d: -f1-4 < $srcdir/n.I > n.O 2> n.E
+code=$?
+if test $code != 0; then
+ $echo "Test n(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n.O $srcdir/n.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n(<)"; fi;;
+ 1) $echo "Test n(<) failed: files n.O and $srcdir/n.X differ" 1>&2
+ (diff -c n.O $srcdir/n.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n(<) may have failed." 1>&2
+ $echo The command "cmp n.O $srcdir/n.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n.E || rm -f n.E
+$xx -s -d: -f2-3 $srcdir/o.I > o.O 2> o.E
+code=$?
+if test $code != 0; then
+ $echo "Test o(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp o.O $srcdir/o.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed o(F)"; fi;;
+ 1) $echo "Test o(F) failed: files o.O and $srcdir/o.X differ" 1>&2
+ (diff -c o.O $srcdir/o.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test o(F) may have failed." 1>&2
+ $echo The command "cmp o.O $srcdir/o.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s o.E || rm -f o.E
+cat $srcdir/o.I | $xx -s -d: -f2-3 > o.O 2> o.E
+code=$?
+if test $code != 0; then
+ $echo "Test o(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp o.O $srcdir/o.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed o(|)"; fi;;
+ 1) $echo "Test o(|) failed: files o.O and $srcdir/o.X differ" 1>&2
+ (diff -c o.O $srcdir/o.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test o(|) may have failed." 1>&2
+ $echo The command "cmp o.O $srcdir/o.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s o.E || rm -f o.E
+$xx -s -d: -f2-3 < $srcdir/o.I > o.O 2> o.E
+code=$?
+if test $code != 0; then
+ $echo "Test o(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp o.O $srcdir/o.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed o(<)"; fi;;
+ 1) $echo "Test o(<) failed: files o.O and $srcdir/o.X differ" 1>&2
+ (diff -c o.O $srcdir/o.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test o(<) may have failed." 1>&2
+ $echo The command "cmp o.O $srcdir/o.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s o.E || rm -f o.E
+$xx -s -d: -f2-4 $srcdir/p.I > p.O 2> p.E
+code=$?
+if test $code != 0; then
+ $echo "Test p(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp p.O $srcdir/p.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed p(F)"; fi;;
+ 1) $echo "Test p(F) failed: files p.O and $srcdir/p.X differ" 1>&2
+ (diff -c p.O $srcdir/p.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test p(F) may have failed." 1>&2
+ $echo The command "cmp p.O $srcdir/p.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s p.E || rm -f p.E
+cat $srcdir/p.I | $xx -s -d: -f2-4 > p.O 2> p.E
+code=$?
+if test $code != 0; then
+ $echo "Test p(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp p.O $srcdir/p.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed p(|)"; fi;;
+ 1) $echo "Test p(|) failed: files p.O and $srcdir/p.X differ" 1>&2
+ (diff -c p.O $srcdir/p.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test p(|) may have failed." 1>&2
+ $echo The command "cmp p.O $srcdir/p.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s p.E || rm -f p.E
+$xx -s -d: -f2-4 < $srcdir/p.I > p.O 2> p.E
+code=$?
+if test $code != 0; then
+ $echo "Test p(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp p.O $srcdir/p.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed p(<)"; fi;;
+ 1) $echo "Test p(<) failed: files p.O and $srcdir/p.X differ" 1>&2
+ (diff -c p.O $srcdir/p.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test p(<) may have failed." 1>&2
+ $echo The command "cmp p.O $srcdir/p.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s p.E || rm -f p.E
+$xx -s -d: -f2-4 $srcdir/q.I > q.O 2> q.E
+code=$?
+if test $code != 0; then
+ $echo "Test q(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp q.O $srcdir/q.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed q(F)"; fi;;
+ 1) $echo "Test q(F) failed: files q.O and $srcdir/q.X differ" 1>&2
+ (diff -c q.O $srcdir/q.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test q(F) may have failed." 1>&2
+ $echo The command "cmp q.O $srcdir/q.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s q.E || rm -f q.E
+cat $srcdir/q.I | $xx -s -d: -f2-4 > q.O 2> q.E
+code=$?
+if test $code != 0; then
+ $echo "Test q(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp q.O $srcdir/q.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed q(|)"; fi;;
+ 1) $echo "Test q(|) failed: files q.O and $srcdir/q.X differ" 1>&2
+ (diff -c q.O $srcdir/q.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test q(|) may have failed." 1>&2
+ $echo The command "cmp q.O $srcdir/q.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s q.E || rm -f q.E
+$xx -s -d: -f2-4 < $srcdir/q.I > q.O 2> q.E
+code=$?
+if test $code != 0; then
+ $echo "Test q(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp q.O $srcdir/q.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed q(<)"; fi;;
+ 1) $echo "Test q(<) failed: files q.O and $srcdir/q.X differ" 1>&2
+ (diff -c q.O $srcdir/q.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test q(<) may have failed." 1>&2
+ $echo The command "cmp q.O $srcdir/q.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s q.E || rm -f q.E
+$xx -s -d: -f2-4 $srcdir/r.I > r.O 2> r.E
+code=$?
+if test $code != 0; then
+ $echo "Test r(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp r.O $srcdir/r.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed r(F)"; fi;;
+ 1) $echo "Test r(F) failed: files r.O and $srcdir/r.X differ" 1>&2
+ (diff -c r.O $srcdir/r.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test r(F) may have failed." 1>&2
+ $echo The command "cmp r.O $srcdir/r.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s r.E || rm -f r.E
+cat $srcdir/r.I | $xx -s -d: -f2-4 > r.O 2> r.E
+code=$?
+if test $code != 0; then
+ $echo "Test r(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp r.O $srcdir/r.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed r(|)"; fi;;
+ 1) $echo "Test r(|) failed: files r.O and $srcdir/r.X differ" 1>&2
+ (diff -c r.O $srcdir/r.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test r(|) may have failed." 1>&2
+ $echo The command "cmp r.O $srcdir/r.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s r.E || rm -f r.E
+$xx -s -d: -f2-4 < $srcdir/r.I > r.O 2> r.E
+code=$?
+if test $code != 0; then
+ $echo "Test r(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp r.O $srcdir/r.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed r(<)"; fi;;
+ 1) $echo "Test r(<) failed: files r.O and $srcdir/r.X differ" 1>&2
+ (diff -c r.O $srcdir/r.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test r(<) may have failed." 1>&2
+ $echo The command "cmp r.O $srcdir/r.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s r.E || rm -f r.E
+$xx -s -d: -f1-4 $srcdir/s.I > s.O 2> s.E
+code=$?
+if test $code != 0; then
+ $echo "Test s(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp s.O $srcdir/s.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed s(F)"; fi;;
+ 1) $echo "Test s(F) failed: files s.O and $srcdir/s.X differ" 1>&2
+ (diff -c s.O $srcdir/s.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test s(F) may have failed." 1>&2
+ $echo The command "cmp s.O $srcdir/s.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s s.E || rm -f s.E
+cat $srcdir/s.I | $xx -s -d: -f1-4 > s.O 2> s.E
+code=$?
+if test $code != 0; then
+ $echo "Test s(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp s.O $srcdir/s.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed s(|)"; fi;;
+ 1) $echo "Test s(|) failed: files s.O and $srcdir/s.X differ" 1>&2
+ (diff -c s.O $srcdir/s.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test s(|) may have failed." 1>&2
+ $echo The command "cmp s.O $srcdir/s.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s s.E || rm -f s.E
+$xx -s -d: -f1-4 < $srcdir/s.I > s.O 2> s.E
+code=$?
+if test $code != 0; then
+ $echo "Test s(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp s.O $srcdir/s.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed s(<)"; fi;;
+ 1) $echo "Test s(<) failed: files s.O and $srcdir/s.X differ" 1>&2
+ (diff -c s.O $srcdir/s.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test s(<) may have failed." 1>&2
+ $echo The command "cmp s.O $srcdir/s.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s s.E || rm -f s.E
+$xx -s -d: -f3- $srcdir/t.I > t.O 2> t.E
+code=$?
+if test $code != 0; then
+ $echo "Test t(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp t.O $srcdir/t.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed t(F)"; fi;;
+ 1) $echo "Test t(F) failed: files t.O and $srcdir/t.X differ" 1>&2
+ (diff -c t.O $srcdir/t.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test t(F) may have failed." 1>&2
+ $echo The command "cmp t.O $srcdir/t.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s t.E || rm -f t.E
+cat $srcdir/t.I | $xx -s -d: -f3- > t.O 2> t.E
+code=$?
+if test $code != 0; then
+ $echo "Test t(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp t.O $srcdir/t.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed t(|)"; fi;;
+ 1) $echo "Test t(|) failed: files t.O and $srcdir/t.X differ" 1>&2
+ (diff -c t.O $srcdir/t.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test t(|) may have failed." 1>&2
+ $echo The command "cmp t.O $srcdir/t.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s t.E || rm -f t.E
+$xx -s -d: -f3- < $srcdir/t.I > t.O 2> t.E
+code=$?
+if test $code != 0; then
+ $echo "Test t(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp t.O $srcdir/t.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed t(<)"; fi;;
+ 1) $echo "Test t(<) failed: files t.O and $srcdir/t.X differ" 1>&2
+ (diff -c t.O $srcdir/t.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test t(<) may have failed." 1>&2
+ $echo The command "cmp t.O $srcdir/t.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s t.E || rm -f t.E
+$xx -s -f3- $srcdir/u.I > u.O 2> u.E
+code=$?
+if test $code != 0; then
+ $echo "Test u(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp u.O $srcdir/u.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed u(F)"; fi;;
+ 1) $echo "Test u(F) failed: files u.O and $srcdir/u.X differ" 1>&2
+ (diff -c u.O $srcdir/u.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test u(F) may have failed." 1>&2
+ $echo The command "cmp u.O $srcdir/u.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s u.E || rm -f u.E
+cat $srcdir/u.I | $xx -s -f3- > u.O 2> u.E
+code=$?
+if test $code != 0; then
+ $echo "Test u(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp u.O $srcdir/u.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed u(|)"; fi;;
+ 1) $echo "Test u(|) failed: files u.O and $srcdir/u.X differ" 1>&2
+ (diff -c u.O $srcdir/u.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test u(|) may have failed." 1>&2
+ $echo The command "cmp u.O $srcdir/u.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s u.E || rm -f u.E
+$xx -s -f3- < $srcdir/u.I > u.O 2> u.E
+code=$?
+if test $code != 0; then
+ $echo "Test u(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp u.O $srcdir/u.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed u(<)"; fi;;
+ 1) $echo "Test u(<) failed: files u.O and $srcdir/u.X differ" 1>&2
+ (diff -c u.O $srcdir/u.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test u(<) may have failed." 1>&2
+ $echo The command "cmp u.O $srcdir/u.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s u.E || rm -f u.E
+$xx -f3- $srcdir/v.I > v.O 2> v.E
+code=$?
+if test $code != 0; then
+ $echo "Test v(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp v.O $srcdir/v.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed v(F)"; fi;;
+ 1) $echo "Test v(F) failed: files v.O and $srcdir/v.X differ" 1>&2
+ (diff -c v.O $srcdir/v.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test v(F) may have failed." 1>&2
+ $echo The command "cmp v.O $srcdir/v.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s v.E || rm -f v.E
+cat $srcdir/v.I | $xx -f3- > v.O 2> v.E
+code=$?
+if test $code != 0; then
+ $echo "Test v(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp v.O $srcdir/v.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed v(|)"; fi;;
+ 1) $echo "Test v(|) failed: files v.O and $srcdir/v.X differ" 1>&2
+ (diff -c v.O $srcdir/v.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test v(|) may have failed." 1>&2
+ $echo The command "cmp v.O $srcdir/v.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s v.E || rm -f v.E
+$xx -f3- < $srcdir/v.I > v.O 2> v.E
+code=$?
+if test $code != 0; then
+ $echo "Test v(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp v.O $srcdir/v.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed v(<)"; fi;;
+ 1) $echo "Test v(<) failed: files v.O and $srcdir/v.X differ" 1>&2
+ (diff -c v.O $srcdir/v.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test v(<) may have failed." 1>&2
+ $echo The command "cmp v.O $srcdir/v.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s v.E || rm -f v.E
+$xx -b 1 $srcdir/w.I > w.O 2> w.E
+code=$?
+if test $code != 0; then
+ $echo "Test w(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp w.O $srcdir/w.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed w(F)"; fi;;
+ 1) $echo "Test w(F) failed: files w.O and $srcdir/w.X differ" 1>&2
+ (diff -c w.O $srcdir/w.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test w(F) may have failed." 1>&2
+ $echo The command "cmp w.O $srcdir/w.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s w.E || rm -f w.E
+cat $srcdir/w.I | $xx -b 1 > w.O 2> w.E
+code=$?
+if test $code != 0; then
+ $echo "Test w(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp w.O $srcdir/w.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed w(|)"; fi;;
+ 1) $echo "Test w(|) failed: files w.O and $srcdir/w.X differ" 1>&2
+ (diff -c w.O $srcdir/w.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test w(|) may have failed." 1>&2
+ $echo The command "cmp w.O $srcdir/w.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s w.E || rm -f w.E
+$xx -b 1 < $srcdir/w.I > w.O 2> w.E
+code=$?
+if test $code != 0; then
+ $echo "Test w(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp w.O $srcdir/w.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed w(<)"; fi;;
+ 1) $echo "Test w(<) failed: files w.O and $srcdir/w.X differ" 1>&2
+ (diff -c w.O $srcdir/w.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test w(<) may have failed." 1>&2
+ $echo The command "cmp w.O $srcdir/w.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s w.E || rm -f w.E
+$xx -s -d: -f2-4 $srcdir/x.I > x.O 2> x.E
+code=$?
+if test $code != 0; then
+ $echo "Test x(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp x.O $srcdir/x.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed x(F)"; fi;;
+ 1) $echo "Test x(F) failed: files x.O and $srcdir/x.X differ" 1>&2
+ (diff -c x.O $srcdir/x.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test x(F) may have failed." 1>&2
+ $echo The command "cmp x.O $srcdir/x.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s x.E || rm -f x.E
+cat $srcdir/x.I | $xx -s -d: -f2-4 > x.O 2> x.E
+code=$?
+if test $code != 0; then
+ $echo "Test x(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp x.O $srcdir/x.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed x(|)"; fi;;
+ 1) $echo "Test x(|) failed: files x.O and $srcdir/x.X differ" 1>&2
+ (diff -c x.O $srcdir/x.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test x(|) may have failed." 1>&2
+ $echo The command "cmp x.O $srcdir/x.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s x.E || rm -f x.E
+$xx -s -d: -f2-4 < $srcdir/x.I > x.O 2> x.E
+code=$?
+if test $code != 0; then
+ $echo "Test x(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp x.O $srcdir/x.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed x(<)"; fi;;
+ 1) $echo "Test x(<) failed: files x.O and $srcdir/x.X differ" 1>&2
+ (diff -c x.O $srcdir/x.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test x(<) may have failed." 1>&2
+ $echo The command "cmp x.O $srcdir/x.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s x.E || rm -f x.E
+$xx -s -b4 $srcdir/y.I > y.O 2> y.E
+code=$?
+if test $code != 1; then
+ $echo "Test y(F) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp y.O $srcdir/y.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed y(F)"; fi;;
+ 1) $echo "Test y(F) failed: files y.O and $srcdir/y.X differ" 1>&2
+ (diff -c y.O $srcdir/y.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test y(F) may have failed." 1>&2
+ $echo The command "cmp y.O $srcdir/y.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s y.E || rm -f y.E
+$xx -s -b4 < $srcdir/y.I > y.O 2> y.E
+code=$?
+if test $code != 1; then
+ $echo "Test y(<) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp y.O $srcdir/y.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed y(<)"; fi;;
+ 1) $echo "Test y(<) failed: files y.O and $srcdir/y.X differ" 1>&2
+ (diff -c y.O $srcdir/y.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test y(<) may have failed." 1>&2
+ $echo The command "cmp y.O $srcdir/y.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s y.E || rm -f y.E
+$xx $srcdir/z.I > z.O 2> z.E
+code=$?
+if test $code != 1; then
+ $echo "Test z(F) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp z.O $srcdir/z.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed z(F)"; fi;;
+ 1) $echo "Test z(F) failed: files z.O and $srcdir/z.X differ" 1>&2
+ (diff -c z.O $srcdir/z.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test z(F) may have failed." 1>&2
+ $echo The command "cmp z.O $srcdir/z.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s z.E || rm -f z.E
+$xx < $srcdir/z.I > z.O 2> z.E
+code=$?
+if test $code != 1; then
+ $echo "Test z(<) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp z.O $srcdir/z.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed z(<)"; fi;;
+ 1) $echo "Test z(<) failed: files z.O and $srcdir/z.X differ" 1>&2
+ (diff -c z.O $srcdir/z.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test z(<) may have failed." 1>&2
+ $echo The command "cmp z.O $srcdir/z.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s z.E || rm -f z.E
+$xx -f '' $srcdir/empty-fl.I > empty-fl.O 2> empty-fl.E
+code=$?
+if test $code != 1; then
+ $echo "Test empty-fl(F) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp empty-fl.O $srcdir/empty-fl.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed empty-fl(F)"; fi;;
+ 1) $echo "Test empty-fl(F) failed: files empty-fl.O and $srcdir/empty-fl.X differ" 1>&2
+ (diff -c empty-fl.O $srcdir/empty-fl.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test empty-fl(F) may have failed." 1>&2
+ $echo The command "cmp empty-fl.O $srcdir/empty-fl.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s empty-fl.E || rm -f empty-fl.E
+$xx -f '' < $srcdir/empty-fl.I > empty-fl.O 2> empty-fl.E
+code=$?
+if test $code != 1; then
+ $echo "Test empty-fl(<) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp empty-fl.O $srcdir/empty-fl.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed empty-fl(<)"; fi;;
+ 1) $echo "Test empty-fl(<) failed: files empty-fl.O and $srcdir/empty-fl.X differ" 1>&2
+ (diff -c empty-fl.O $srcdir/empty-fl.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test empty-fl(<) may have failed." 1>&2
+ $echo The command "cmp empty-fl.O $srcdir/empty-fl.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s empty-fl.E || rm -f empty-fl.E
+$xx -f $srcdir/missing-fl.I > missing-fl.O 2> missing-fl.E
+code=$?
+if test $code != 1; then
+ $echo "Test missing-fl(F) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp missing-fl.O $srcdir/missing-fl.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed missing-fl(F)"; fi;;
+ 1) $echo "Test missing-fl(F) failed: files missing-fl.O and $srcdir/missing-fl.X differ" 1>&2
+ (diff -c missing-fl.O $srcdir/missing-fl.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test missing-fl(F) may have failed." 1>&2
+ $echo The command "cmp missing-fl.O $srcdir/missing-fl.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s missing-fl.E || rm -f missing-fl.E
+$xx -f < $srcdir/missing-fl.I > missing-fl.O 2> missing-fl.E
+code=$?
+if test $code != 1; then
+ $echo "Test missing-fl(<) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp missing-fl.O $srcdir/missing-fl.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed missing-fl(<)"; fi;;
+ 1) $echo "Test missing-fl(<) failed: files missing-fl.O and $srcdir/missing-fl.X differ" 1>&2
+ (diff -c missing-fl.O $srcdir/missing-fl.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test missing-fl(<) may have failed." 1>&2
+ $echo The command "cmp missing-fl.O $srcdir/missing-fl.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s missing-fl.E || rm -f missing-fl.E
+$xx -b '' $srcdir/empty-bl.I > empty-bl.O 2> empty-bl.E
+code=$?
+if test $code != 1; then
+ $echo "Test empty-bl(F) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp empty-bl.O $srcdir/empty-bl.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed empty-bl(F)"; fi;;
+ 1) $echo "Test empty-bl(F) failed: files empty-bl.O and $srcdir/empty-bl.X differ" 1>&2
+ (diff -c empty-bl.O $srcdir/empty-bl.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test empty-bl(F) may have failed." 1>&2
+ $echo The command "cmp empty-bl.O $srcdir/empty-bl.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s empty-bl.E || rm -f empty-bl.E
+$xx -b '' < $srcdir/empty-bl.I > empty-bl.O 2> empty-bl.E
+code=$?
+if test $code != 1; then
+ $echo "Test empty-bl(<) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp empty-bl.O $srcdir/empty-bl.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed empty-bl(<)"; fi;;
+ 1) $echo "Test empty-bl(<) failed: files empty-bl.O and $srcdir/empty-bl.X differ" 1>&2
+ (diff -c empty-bl.O $srcdir/empty-bl.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test empty-bl(<) may have failed." 1>&2
+ $echo The command "cmp empty-bl.O $srcdir/empty-bl.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s empty-bl.E || rm -f empty-bl.E
+$xx -b $srcdir/missing-bl.I > missing-bl.O 2> missing-bl.E
+code=$?
+if test $code != 1; then
+ $echo "Test missing-bl(F) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp missing-bl.O $srcdir/missing-bl.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed missing-bl(F)"; fi;;
+ 1) $echo "Test missing-bl(F) failed: files missing-bl.O and $srcdir/missing-bl.X differ" 1>&2
+ (diff -c missing-bl.O $srcdir/missing-bl.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test missing-bl(F) may have failed." 1>&2
+ $echo The command "cmp missing-bl.O $srcdir/missing-bl.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s missing-bl.E || rm -f missing-bl.E
+$xx -b < $srcdir/missing-bl.I > missing-bl.O 2> missing-bl.E
+code=$?
+if test $code != 1; then
+ $echo "Test missing-bl(<) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp missing-bl.O $srcdir/missing-bl.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed missing-bl(<)"; fi;;
+ 1) $echo "Test missing-bl(<) failed: files missing-bl.O and $srcdir/missing-bl.X differ" 1>&2
+ (diff -c missing-bl.O $srcdir/missing-bl.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test missing-bl(<) may have failed." 1>&2
+ $echo The command "cmp missing-bl.O $srcdir/missing-bl.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s missing-bl.E || rm -f missing-bl.E
+$xx -f1 $srcdir/empty-f1.I > empty-f1.O 2> empty-f1.E
+code=$?
+if test $code != 0; then
+ $echo "Test empty-f1(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp empty-f1.O $srcdir/empty-f1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed empty-f1(F)"; fi;;
+ 1) $echo "Test empty-f1(F) failed: files empty-f1.O and $srcdir/empty-f1.X differ" 1>&2
+ (diff -c empty-f1.O $srcdir/empty-f1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test empty-f1(F) may have failed." 1>&2
+ $echo The command "cmp empty-f1.O $srcdir/empty-f1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s empty-f1.E || rm -f empty-f1.E
+cat $srcdir/empty-f1.I | $xx -f1 > empty-f1.O 2> empty-f1.E
+code=$?
+if test $code != 0; then
+ $echo "Test empty-f1(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp empty-f1.O $srcdir/empty-f1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed empty-f1(|)"; fi;;
+ 1) $echo "Test empty-f1(|) failed: files empty-f1.O and $srcdir/empty-f1.X differ" 1>&2
+ (diff -c empty-f1.O $srcdir/empty-f1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test empty-f1(|) may have failed." 1>&2
+ $echo The command "cmp empty-f1.O $srcdir/empty-f1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s empty-f1.E || rm -f empty-f1.E
+$xx -f1 < $srcdir/empty-f1.I > empty-f1.O 2> empty-f1.E
+code=$?
+if test $code != 0; then
+ $echo "Test empty-f1(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp empty-f1.O $srcdir/empty-f1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed empty-f1(<)"; fi;;
+ 1) $echo "Test empty-f1(<) failed: files empty-f1.O and $srcdir/empty-f1.X differ" 1>&2
+ (diff -c empty-f1.O $srcdir/empty-f1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test empty-f1(<) may have failed." 1>&2
+ $echo The command "cmp empty-f1.O $srcdir/empty-f1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s empty-f1.E || rm -f empty-f1.E
+$xx -f2 $srcdir/empty-f2.I > empty-f2.O 2> empty-f2.E
+code=$?
+if test $code != 0; then
+ $echo "Test empty-f2(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp empty-f2.O $srcdir/empty-f2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed empty-f2(F)"; fi;;
+ 1) $echo "Test empty-f2(F) failed: files empty-f2.O and $srcdir/empty-f2.X differ" 1>&2
+ (diff -c empty-f2.O $srcdir/empty-f2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test empty-f2(F) may have failed." 1>&2
+ $echo The command "cmp empty-f2.O $srcdir/empty-f2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s empty-f2.E || rm -f empty-f2.E
+cat $srcdir/empty-f2.I | $xx -f2 > empty-f2.O 2> empty-f2.E
+code=$?
+if test $code != 0; then
+ $echo "Test empty-f2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp empty-f2.O $srcdir/empty-f2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed empty-f2(|)"; fi;;
+ 1) $echo "Test empty-f2(|) failed: files empty-f2.O and $srcdir/empty-f2.X differ" 1>&2
+ (diff -c empty-f2.O $srcdir/empty-f2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test empty-f2(|) may have failed." 1>&2
+ $echo The command "cmp empty-f2.O $srcdir/empty-f2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s empty-f2.E || rm -f empty-f2.E
+$xx -f2 < $srcdir/empty-f2.I > empty-f2.O 2> empty-f2.E
+code=$?
+if test $code != 0; then
+ $echo "Test empty-f2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp empty-f2.O $srcdir/empty-f2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed empty-f2(<)"; fi;;
+ 1) $echo "Test empty-f2(<) failed: files empty-f2.O and $srcdir/empty-f2.X differ" 1>&2
+ (diff -c empty-f2.O $srcdir/empty-f2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test empty-f2(<) may have failed." 1>&2
+ $echo The command "cmp empty-f2.O $srcdir/empty-f2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s empty-f2.E || rm -f empty-f2.E
+$xx -d: -f2,3 --out=_ $srcdir/o-delim.I > o-delim.O 2> o-delim.E
+code=$?
+if test $code != 0; then
+ $echo "Test o-delim(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp o-delim.O $srcdir/o-delim.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed o-delim(F)"; fi;;
+ 1) $echo "Test o-delim(F) failed: files o-delim.O and $srcdir/o-delim.X differ" 1>&2
+ (diff -c o-delim.O $srcdir/o-delim.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test o-delim(F) may have failed." 1>&2
+ $echo The command "cmp o-delim.O $srcdir/o-delim.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s o-delim.E || rm -f o-delim.E
+cat $srcdir/o-delim.I | $xx -d: -f2,3 --out=_ > o-delim.O 2> o-delim.E
+code=$?
+if test $code != 0; then
+ $echo "Test o-delim(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp o-delim.O $srcdir/o-delim.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed o-delim(|)"; fi;;
+ 1) $echo "Test o-delim(|) failed: files o-delim.O and $srcdir/o-delim.X differ" 1>&2
+ (diff -c o-delim.O $srcdir/o-delim.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test o-delim(|) may have failed." 1>&2
+ $echo The command "cmp o-delim.O $srcdir/o-delim.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s o-delim.E || rm -f o-delim.E
+$xx -d: -f2,3 --out=_ < $srcdir/o-delim.I > o-delim.O 2> o-delim.E
+code=$?
+if test $code != 0; then
+ $echo "Test o-delim(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp o-delim.O $srcdir/o-delim.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed o-delim(<)"; fi;;
+ 1) $echo "Test o-delim(<) failed: files o-delim.O and $srcdir/o-delim.X differ" 1>&2
+ (diff -c o-delim.O $srcdir/o-delim.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test o-delim(<) may have failed." 1>&2
+ $echo The command "cmp o-delim.O $srcdir/o-delim.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s o-delim.E || rm -f o-delim.E
+$xx -d '' -f2,3 --out=_ $srcdir/nul-idelim.I > nul-idelim.O 2> nul-idelim.E
+code=$?
+if test $code != 0; then
+ $echo "Test nul-idelim(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp nul-idelim.O $srcdir/nul-idelim.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed nul-idelim(F)"; fi;;
+ 1) $echo "Test nul-idelim(F) failed: files nul-idelim.O and $srcdir/nul-idelim.X differ" 1>&2
+ (diff -c nul-idelim.O $srcdir/nul-idelim.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test nul-idelim(F) may have failed." 1>&2
+ $echo The command "cmp nul-idelim.O $srcdir/nul-idelim.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s nul-idelim.E || rm -f nul-idelim.E
+cat $srcdir/nul-idelim.I | $xx -d '' -f2,3 --out=_ > nul-idelim.O 2> nul-idelim.E
+code=$?
+if test $code != 0; then
+ $echo "Test nul-idelim(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp nul-idelim.O $srcdir/nul-idelim.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed nul-idelim(|)"; fi;;
+ 1) $echo "Test nul-idelim(|) failed: files nul-idelim.O and $srcdir/nul-idelim.X differ" 1>&2
+ (diff -c nul-idelim.O $srcdir/nul-idelim.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test nul-idelim(|) may have failed." 1>&2
+ $echo The command "cmp nul-idelim.O $srcdir/nul-idelim.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s nul-idelim.E || rm -f nul-idelim.E
+$xx -d '' -f2,3 --out=_ < $srcdir/nul-idelim.I > nul-idelim.O 2> nul-idelim.E
+code=$?
+if test $code != 0; then
+ $echo "Test nul-idelim(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp nul-idelim.O $srcdir/nul-idelim.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed nul-idelim(<)"; fi;;
+ 1) $echo "Test nul-idelim(<) failed: files nul-idelim.O and $srcdir/nul-idelim.X differ" 1>&2
+ (diff -c nul-idelim.O $srcdir/nul-idelim.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test nul-idelim(<) may have failed." 1>&2
+ $echo The command "cmp nul-idelim.O $srcdir/nul-idelim.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s nul-idelim.E || rm -f nul-idelim.E
+$xx -d: -f2,3 --out= $srcdir/nul-odelim.I > nul-odelim.O 2> nul-odelim.E
+code=$?
+if test $code != 0; then
+ $echo "Test nul-odelim(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp nul-odelim.O $srcdir/nul-odelim.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed nul-odelim(F)"; fi;;
+ 1) $echo "Test nul-odelim(F) failed: files nul-odelim.O and $srcdir/nul-odelim.X differ" 1>&2
+ (diff -c nul-odelim.O $srcdir/nul-odelim.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test nul-odelim(F) may have failed." 1>&2
+ $echo The command "cmp nul-odelim.O $srcdir/nul-odelim.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s nul-odelim.E || rm -f nul-odelim.E
+cat $srcdir/nul-odelim.I | $xx -d: -f2,3 --out= > nul-odelim.O 2> nul-odelim.E
+code=$?
+if test $code != 0; then
+ $echo "Test nul-odelim(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp nul-odelim.O $srcdir/nul-odelim.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed nul-odelim(|)"; fi;;
+ 1) $echo "Test nul-odelim(|) failed: files nul-odelim.O and $srcdir/nul-odelim.X differ" 1>&2
+ (diff -c nul-odelim.O $srcdir/nul-odelim.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test nul-odelim(|) may have failed." 1>&2
+ $echo The command "cmp nul-odelim.O $srcdir/nul-odelim.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s nul-odelim.E || rm -f nul-odelim.E
+$xx -d: -f2,3 --out= < $srcdir/nul-odelim.I > nul-odelim.O 2> nul-odelim.E
+code=$?
+if test $code != 0; then
+ $echo "Test nul-odelim(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp nul-odelim.O $srcdir/nul-odelim.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed nul-odelim(<)"; fi;;
+ 1) $echo "Test nul-odelim(<) failed: files nul-odelim.O and $srcdir/nul-odelim.X differ" 1>&2
+ (diff -c nul-odelim.O $srcdir/nul-odelim.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test nul-odelim(<) may have failed." 1>&2
+ $echo The command "cmp nul-odelim.O $srcdir/nul-odelim.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s nul-odelim.E || rm -f nul-odelim.E
+$xx -d: -f2,3 --out=_._ $srcdir/multichar-od.I > multichar-od.O 2> multichar-od.E
+code=$?
+if test $code != 0; then
+ $echo "Test multichar-od(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp multichar-od.O $srcdir/multichar-od.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed multichar-od(F)"; fi;;
+ 1) $echo "Test multichar-od(F) failed: files multichar-od.O and $srcdir/multichar-od.X differ" 1>&2
+ (diff -c multichar-od.O $srcdir/multichar-od.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test multichar-od(F) may have failed." 1>&2
+ $echo The command "cmp multichar-od.O $srcdir/multichar-od.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s multichar-od.E || rm -f multichar-od.E
+cat $srcdir/multichar-od.I | $xx -d: -f2,3 --out=_._ > multichar-od.O 2> multichar-od.E
+code=$?
+if test $code != 0; then
+ $echo "Test multichar-od(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp multichar-od.O $srcdir/multichar-od.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed multichar-od(|)"; fi;;
+ 1) $echo "Test multichar-od(|) failed: files multichar-od.O and $srcdir/multichar-od.X differ" 1>&2
+ (diff -c multichar-od.O $srcdir/multichar-od.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test multichar-od(|) may have failed." 1>&2
+ $echo The command "cmp multichar-od.O $srcdir/multichar-od.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s multichar-od.E || rm -f multichar-od.E
+$xx -d: -f2,3 --out=_._ < $srcdir/multichar-od.I > multichar-od.O 2> multichar-od.E
+code=$?
+if test $code != 0; then
+ $echo "Test multichar-od(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp multichar-od.O $srcdir/multichar-od.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed multichar-od(<)"; fi;;
+ 1) $echo "Test multichar-od(<) failed: files multichar-od.O and $srcdir/multichar-od.X differ" 1>&2
+ (diff -c multichar-od.O $srcdir/multichar-od.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test multichar-od(<) may have failed." 1>&2
+ $echo The command "cmp multichar-od.O $srcdir/multichar-od.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s multichar-od.E || rm -f multichar-od.E
+$xx '-d­' -f2,3 --out=_ $srcdir/8bit-delim.I > 8bit-delim.O 2> 8bit-delim.E
+code=$?
+if test $code != 0; then
+ $echo "Test 8bit-delim(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 8bit-delim.O $srcdir/8bit-delim.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 8bit-delim(F)"; fi;;
+ 1) $echo "Test 8bit-delim(F) failed: files 8bit-delim.O and $srcdir/8bit-delim.X differ" 1>&2
+ (diff -c 8bit-delim.O $srcdir/8bit-delim.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 8bit-delim(F) may have failed." 1>&2
+ $echo The command "cmp 8bit-delim.O $srcdir/8bit-delim.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 8bit-delim.E || rm -f 8bit-delim.E
+cat $srcdir/8bit-delim.I | $xx '-d­' -f2,3 --out=_ > 8bit-delim.O 2> 8bit-delim.E
+code=$?
+if test $code != 0; then
+ $echo "Test 8bit-delim(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 8bit-delim.O $srcdir/8bit-delim.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 8bit-delim(|)"; fi;;
+ 1) $echo "Test 8bit-delim(|) failed: files 8bit-delim.O and $srcdir/8bit-delim.X differ" 1>&2
+ (diff -c 8bit-delim.O $srcdir/8bit-delim.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 8bit-delim(|) may have failed." 1>&2
+ $echo The command "cmp 8bit-delim.O $srcdir/8bit-delim.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 8bit-delim.E || rm -f 8bit-delim.E
+$xx '-d­' -f2,3 --out=_ < $srcdir/8bit-delim.I > 8bit-delim.O 2> 8bit-delim.E
+code=$?
+if test $code != 0; then
+ $echo "Test 8bit-delim(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 8bit-delim.O $srcdir/8bit-delim.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 8bit-delim(<)"; fi;;
+ 1) $echo "Test 8bit-delim(<) failed: files 8bit-delim.O and $srcdir/8bit-delim.X differ" 1>&2
+ (diff -c 8bit-delim.O $srcdir/8bit-delim.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 8bit-delim(<) may have failed." 1>&2
+ $echo The command "cmp 8bit-delim.O $srcdir/8bit-delim.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 8bit-delim.E || rm -f 8bit-delim.E
+$xx -c1-3,5- --output-d=: $srcdir/out-delim1.I > out-delim1.O 2> out-delim1.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim1(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim1.O $srcdir/out-delim1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim1(F)"; fi;;
+ 1) $echo "Test out-delim1(F) failed: files out-delim1.O and $srcdir/out-delim1.X differ" 1>&2
+ (diff -c out-delim1.O $srcdir/out-delim1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim1(F) may have failed." 1>&2
+ $echo The command "cmp out-delim1.O $srcdir/out-delim1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim1.E || rm -f out-delim1.E
+cat $srcdir/out-delim1.I | $xx -c1-3,5- --output-d=: > out-delim1.O 2> out-delim1.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim1(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim1.O $srcdir/out-delim1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim1(|)"; fi;;
+ 1) $echo "Test out-delim1(|) failed: files out-delim1.O and $srcdir/out-delim1.X differ" 1>&2
+ (diff -c out-delim1.O $srcdir/out-delim1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim1(|) may have failed." 1>&2
+ $echo The command "cmp out-delim1.O $srcdir/out-delim1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim1.E || rm -f out-delim1.E
+$xx -c1-3,5- --output-d=: < $srcdir/out-delim1.I > out-delim1.O 2> out-delim1.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim1(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim1.O $srcdir/out-delim1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim1(<)"; fi;;
+ 1) $echo "Test out-delim1(<) failed: files out-delim1.O and $srcdir/out-delim1.X differ" 1>&2
+ (diff -c out-delim1.O $srcdir/out-delim1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim1(<) may have failed." 1>&2
+ $echo The command "cmp out-delim1.O $srcdir/out-delim1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim1.E || rm -f out-delim1.E
+$xx -c1-3,2,5- --output-d=: $srcdir/out-delim2.I > out-delim2.O 2> out-delim2.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim2(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim2.O $srcdir/out-delim2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim2(F)"; fi;;
+ 1) $echo "Test out-delim2(F) failed: files out-delim2.O and $srcdir/out-delim2.X differ" 1>&2
+ (diff -c out-delim2.O $srcdir/out-delim2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim2(F) may have failed." 1>&2
+ $echo The command "cmp out-delim2.O $srcdir/out-delim2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim2.E || rm -f out-delim2.E
+cat $srcdir/out-delim2.I | $xx -c1-3,2,5- --output-d=: > out-delim2.O 2> out-delim2.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim2.O $srcdir/out-delim2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim2(|)"; fi;;
+ 1) $echo "Test out-delim2(|) failed: files out-delim2.O and $srcdir/out-delim2.X differ" 1>&2
+ (diff -c out-delim2.O $srcdir/out-delim2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim2(|) may have failed." 1>&2
+ $echo The command "cmp out-delim2.O $srcdir/out-delim2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim2.E || rm -f out-delim2.E
+$xx -c1-3,2,5- --output-d=: < $srcdir/out-delim2.I > out-delim2.O 2> out-delim2.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim2.O $srcdir/out-delim2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim2(<)"; fi;;
+ 1) $echo "Test out-delim2(<) failed: files out-delim2.O and $srcdir/out-delim2.X differ" 1>&2
+ (diff -c out-delim2.O $srcdir/out-delim2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim2(<) may have failed." 1>&2
+ $echo The command "cmp out-delim2.O $srcdir/out-delim2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim2.E || rm -f out-delim2.E
+$xx -c1-3,2-4,6 --output-d=: $srcdir/out-delim3.I > out-delim3.O 2> out-delim3.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim3(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim3.O $srcdir/out-delim3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim3(F)"; fi;;
+ 1) $echo "Test out-delim3(F) failed: files out-delim3.O and $srcdir/out-delim3.X differ" 1>&2
+ (diff -c out-delim3.O $srcdir/out-delim3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim3(F) may have failed." 1>&2
+ $echo The command "cmp out-delim3.O $srcdir/out-delim3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim3.E || rm -f out-delim3.E
+cat $srcdir/out-delim3.I | $xx -c1-3,2-4,6 --output-d=: > out-delim3.O 2> out-delim3.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim3(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim3.O $srcdir/out-delim3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim3(|)"; fi;;
+ 1) $echo "Test out-delim3(|) failed: files out-delim3.O and $srcdir/out-delim3.X differ" 1>&2
+ (diff -c out-delim3.O $srcdir/out-delim3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim3(|) may have failed." 1>&2
+ $echo The command "cmp out-delim3.O $srcdir/out-delim3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim3.E || rm -f out-delim3.E
+$xx -c1-3,2-4,6 --output-d=: < $srcdir/out-delim3.I > out-delim3.O 2> out-delim3.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim3(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim3.O $srcdir/out-delim3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim3(<)"; fi;;
+ 1) $echo "Test out-delim3(<) failed: files out-delim3.O and $srcdir/out-delim3.X differ" 1>&2
+ (diff -c out-delim3.O $srcdir/out-delim3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim3(<) may have failed." 1>&2
+ $echo The command "cmp out-delim3.O $srcdir/out-delim3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim3.E || rm -f out-delim3.E
+$xx -c1-3,2-4,6- --output-d=: $srcdir/out-delim3a.I > out-delim3a.O 2> out-delim3a.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim3a(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim3a.O $srcdir/out-delim3a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim3a(F)"; fi;;
+ 1) $echo "Test out-delim3a(F) failed: files out-delim3a.O and $srcdir/out-delim3a.X differ" 1>&2
+ (diff -c out-delim3a.O $srcdir/out-delim3a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim3a(F) may have failed." 1>&2
+ $echo The command "cmp out-delim3a.O $srcdir/out-delim3a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim3a.E || rm -f out-delim3a.E
+cat $srcdir/out-delim3a.I | $xx -c1-3,2-4,6- --output-d=: > out-delim3a.O 2> out-delim3a.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim3a(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim3a.O $srcdir/out-delim3a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim3a(|)"; fi;;
+ 1) $echo "Test out-delim3a(|) failed: files out-delim3a.O and $srcdir/out-delim3a.X differ" 1>&2
+ (diff -c out-delim3a.O $srcdir/out-delim3a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim3a(|) may have failed." 1>&2
+ $echo The command "cmp out-delim3a.O $srcdir/out-delim3a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim3a.E || rm -f out-delim3a.E
+$xx -c1-3,2-4,6- --output-d=: < $srcdir/out-delim3a.I > out-delim3a.O 2> out-delim3a.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim3a(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim3a.O $srcdir/out-delim3a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim3a(<)"; fi;;
+ 1) $echo "Test out-delim3a(<) failed: files out-delim3a.O and $srcdir/out-delim3a.X differ" 1>&2
+ (diff -c out-delim3a.O $srcdir/out-delim3a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim3a(<) may have failed." 1>&2
+ $echo The command "cmp out-delim3a.O $srcdir/out-delim3a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim3a.E || rm -f out-delim3a.E
+$xx -c4-,2-3 --output-d=: $srcdir/out-delim4.I > out-delim4.O 2> out-delim4.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim4(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim4.O $srcdir/out-delim4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim4(F)"; fi;;
+ 1) $echo "Test out-delim4(F) failed: files out-delim4.O and $srcdir/out-delim4.X differ" 1>&2
+ (diff -c out-delim4.O $srcdir/out-delim4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim4(F) may have failed." 1>&2
+ $echo The command "cmp out-delim4.O $srcdir/out-delim4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim4.E || rm -f out-delim4.E
+cat $srcdir/out-delim4.I | $xx -c4-,2-3 --output-d=: > out-delim4.O 2> out-delim4.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim4(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim4.O $srcdir/out-delim4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim4(|)"; fi;;
+ 1) $echo "Test out-delim4(|) failed: files out-delim4.O and $srcdir/out-delim4.X differ" 1>&2
+ (diff -c out-delim4.O $srcdir/out-delim4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim4(|) may have failed." 1>&2
+ $echo The command "cmp out-delim4.O $srcdir/out-delim4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim4.E || rm -f out-delim4.E
+$xx -c4-,2-3 --output-d=: < $srcdir/out-delim4.I > out-delim4.O 2> out-delim4.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim4(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim4.O $srcdir/out-delim4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim4(<)"; fi;;
+ 1) $echo "Test out-delim4(<) failed: files out-delim4.O and $srcdir/out-delim4.X differ" 1>&2
+ (diff -c out-delim4.O $srcdir/out-delim4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim4(<) may have failed." 1>&2
+ $echo The command "cmp out-delim4.O $srcdir/out-delim4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim4.E || rm -f out-delim4.E
+$xx -c2-3,4- --output-d=: $srcdir/out-delim5.I > out-delim5.O 2> out-delim5.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim5(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim5.O $srcdir/out-delim5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim5(F)"; fi;;
+ 1) $echo "Test out-delim5(F) failed: files out-delim5.O and $srcdir/out-delim5.X differ" 1>&2
+ (diff -c out-delim5.O $srcdir/out-delim5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim5(F) may have failed." 1>&2
+ $echo The command "cmp out-delim5.O $srcdir/out-delim5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim5.E || rm -f out-delim5.E
+cat $srcdir/out-delim5.I | $xx -c2-3,4- --output-d=: > out-delim5.O 2> out-delim5.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim5(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim5.O $srcdir/out-delim5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim5(|)"; fi;;
+ 1) $echo "Test out-delim5(|) failed: files out-delim5.O and $srcdir/out-delim5.X differ" 1>&2
+ (diff -c out-delim5.O $srcdir/out-delim5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim5(|) may have failed." 1>&2
+ $echo The command "cmp out-delim5.O $srcdir/out-delim5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim5.E || rm -f out-delim5.E
+$xx -c2-3,4- --output-d=: < $srcdir/out-delim5.I > out-delim5.O 2> out-delim5.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim5(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim5.O $srcdir/out-delim5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim5(<)"; fi;;
+ 1) $echo "Test out-delim5(<) failed: files out-delim5.O and $srcdir/out-delim5.X differ" 1>&2
+ (diff -c out-delim5.O $srcdir/out-delim5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim5(<) may have failed." 1>&2
+ $echo The command "cmp out-delim5.O $srcdir/out-delim5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim5.E || rm -f out-delim5.E
+$xx -c2,1-3 --output-d=: $srcdir/out-delim6.I > out-delim6.O 2> out-delim6.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim6(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim6.O $srcdir/out-delim6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim6(F)"; fi;;
+ 1) $echo "Test out-delim6(F) failed: files out-delim6.O and $srcdir/out-delim6.X differ" 1>&2
+ (diff -c out-delim6.O $srcdir/out-delim6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim6(F) may have failed." 1>&2
+ $echo The command "cmp out-delim6.O $srcdir/out-delim6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim6.E || rm -f out-delim6.E
+cat $srcdir/out-delim6.I | $xx -c2,1-3 --output-d=: > out-delim6.O 2> out-delim6.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim6(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim6.O $srcdir/out-delim6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim6(|)"; fi;;
+ 1) $echo "Test out-delim6(|) failed: files out-delim6.O and $srcdir/out-delim6.X differ" 1>&2
+ (diff -c out-delim6.O $srcdir/out-delim6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim6(|) may have failed." 1>&2
+ $echo The command "cmp out-delim6.O $srcdir/out-delim6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim6.E || rm -f out-delim6.E
+$xx -c2,1-3 --output-d=: < $srcdir/out-delim6.I > out-delim6.O 2> out-delim6.E
+code=$?
+if test $code != 0; then
+ $echo "Test out-delim6(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp out-delim6.O $srcdir/out-delim6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed out-delim6(<)"; fi;;
+ 1) $echo "Test out-delim6(<) failed: files out-delim6.O and $srcdir/out-delim6.X differ" 1>&2
+ (diff -c out-delim6.O $srcdir/out-delim6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test out-delim6(<) may have failed." 1>&2
+ $echo The command "cmp out-delim6.O $srcdir/out-delim6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s out-delim6.E || rm -f out-delim6.E
+$xx -b1-2,3-4 --output-d=: $srcdir/od-abut.I > od-abut.O 2> od-abut.E
+code=$?
+if test $code != 0; then
+ $echo "Test od-abut(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp od-abut.O $srcdir/od-abut.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed od-abut(F)"; fi;;
+ 1) $echo "Test od-abut(F) failed: files od-abut.O and $srcdir/od-abut.X differ" 1>&2
+ (diff -c od-abut.O $srcdir/od-abut.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test od-abut(F) may have failed." 1>&2
+ $echo The command "cmp od-abut.O $srcdir/od-abut.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s od-abut.E || rm -f od-abut.E
+cat $srcdir/od-abut.I | $xx -b1-2,3-4 --output-d=: > od-abut.O 2> od-abut.E
+code=$?
+if test $code != 0; then
+ $echo "Test od-abut(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp od-abut.O $srcdir/od-abut.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed od-abut(|)"; fi;;
+ 1) $echo "Test od-abut(|) failed: files od-abut.O and $srcdir/od-abut.X differ" 1>&2
+ (diff -c od-abut.O $srcdir/od-abut.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test od-abut(|) may have failed." 1>&2
+ $echo The command "cmp od-abut.O $srcdir/od-abut.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s od-abut.E || rm -f od-abut.E
+$xx -b1-2,3-4 --output-d=: < $srcdir/od-abut.I > od-abut.O 2> od-abut.E
+code=$?
+if test $code != 0; then
+ $echo "Test od-abut(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp od-abut.O $srcdir/od-abut.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed od-abut(<)"; fi;;
+ 1) $echo "Test od-abut(<) failed: files od-abut.O and $srcdir/od-abut.X differ" 1>&2
+ (diff -c od-abut.O $srcdir/od-abut.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test od-abut(<) may have failed." 1>&2
+ $echo The command "cmp od-abut.O $srcdir/od-abut.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s od-abut.E || rm -f od-abut.E
+$xx -b1-2,2 --output-d=: $srcdir/od-overlap.I > od-overlap.O 2> od-overlap.E
+code=$?
+if test $code != 0; then
+ $echo "Test od-overlap(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp od-overlap.O $srcdir/od-overlap.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed od-overlap(F)"; fi;;
+ 1) $echo "Test od-overlap(F) failed: files od-overlap.O and $srcdir/od-overlap.X differ" 1>&2
+ (diff -c od-overlap.O $srcdir/od-overlap.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test od-overlap(F) may have failed." 1>&2
+ $echo The command "cmp od-overlap.O $srcdir/od-overlap.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s od-overlap.E || rm -f od-overlap.E
+cat $srcdir/od-overlap.I | $xx -b1-2,2 --output-d=: > od-overlap.O 2> od-overlap.E
+code=$?
+if test $code != 0; then
+ $echo "Test od-overlap(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp od-overlap.O $srcdir/od-overlap.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed od-overlap(|)"; fi;;
+ 1) $echo "Test od-overlap(|) failed: files od-overlap.O and $srcdir/od-overlap.X differ" 1>&2
+ (diff -c od-overlap.O $srcdir/od-overlap.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test od-overlap(|) may have failed." 1>&2
+ $echo The command "cmp od-overlap.O $srcdir/od-overlap.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s od-overlap.E || rm -f od-overlap.E
+$xx -b1-2,2 --output-d=: < $srcdir/od-overlap.I > od-overlap.O 2> od-overlap.E
+code=$?
+if test $code != 0; then
+ $echo "Test od-overlap(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp od-overlap.O $srcdir/od-overlap.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed od-overlap(<)"; fi;;
+ 1) $echo "Test od-overlap(<) failed: files od-overlap.O and $srcdir/od-overlap.X differ" 1>&2
+ (diff -c od-overlap.O $srcdir/od-overlap.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test od-overlap(<) may have failed." 1>&2
+ $echo The command "cmp od-overlap.O $srcdir/od-overlap.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s od-overlap.E || rm -f od-overlap.E
+$xx -b1-2,2- --output-d=: $srcdir/od-overlap2.I > od-overlap2.O 2> od-overlap2.E
+code=$?
+if test $code != 0; then
+ $echo "Test od-overlap2(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp od-overlap2.O $srcdir/od-overlap2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed od-overlap2(F)"; fi;;
+ 1) $echo "Test od-overlap2(F) failed: files od-overlap2.O and $srcdir/od-overlap2.X differ" 1>&2
+ (diff -c od-overlap2.O $srcdir/od-overlap2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test od-overlap2(F) may have failed." 1>&2
+ $echo The command "cmp od-overlap2.O $srcdir/od-overlap2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s od-overlap2.E || rm -f od-overlap2.E
+cat $srcdir/od-overlap2.I | $xx -b1-2,2- --output-d=: > od-overlap2.O 2> od-overlap2.E
+code=$?
+if test $code != 0; then
+ $echo "Test od-overlap2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp od-overlap2.O $srcdir/od-overlap2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed od-overlap2(|)"; fi;;
+ 1) $echo "Test od-overlap2(|) failed: files od-overlap2.O and $srcdir/od-overlap2.X differ" 1>&2
+ (diff -c od-overlap2.O $srcdir/od-overlap2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test od-overlap2(|) may have failed." 1>&2
+ $echo The command "cmp od-overlap2.O $srcdir/od-overlap2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s od-overlap2.E || rm -f od-overlap2.E
+$xx -b1-2,2- --output-d=: < $srcdir/od-overlap2.I > od-overlap2.O 2> od-overlap2.E
+code=$?
+if test $code != 0; then
+ $echo "Test od-overlap2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp od-overlap2.O $srcdir/od-overlap2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed od-overlap2(<)"; fi;;
+ 1) $echo "Test od-overlap2(<) failed: files od-overlap2.O and $srcdir/od-overlap2.X differ" 1>&2
+ (diff -c od-overlap2.O $srcdir/od-overlap2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test od-overlap2(<) may have failed." 1>&2
+ $echo The command "cmp od-overlap2.O $srcdir/od-overlap2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s od-overlap2.E || rm -f od-overlap2.E
+$xx -b1-3,2- --output-d=: $srcdir/od-overlap3.I > od-overlap3.O 2> od-overlap3.E
+code=$?
+if test $code != 0; then
+ $echo "Test od-overlap3(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp od-overlap3.O $srcdir/od-overlap3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed od-overlap3(F)"; fi;;
+ 1) $echo "Test od-overlap3(F) failed: files od-overlap3.O and $srcdir/od-overlap3.X differ" 1>&2
+ (diff -c od-overlap3.O $srcdir/od-overlap3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test od-overlap3(F) may have failed." 1>&2
+ $echo The command "cmp od-overlap3.O $srcdir/od-overlap3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s od-overlap3.E || rm -f od-overlap3.E
+cat $srcdir/od-overlap3.I | $xx -b1-3,2- --output-d=: > od-overlap3.O 2> od-overlap3.E
+code=$?
+if test $code != 0; then
+ $echo "Test od-overlap3(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp od-overlap3.O $srcdir/od-overlap3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed od-overlap3(|)"; fi;;
+ 1) $echo "Test od-overlap3(|) failed: files od-overlap3.O and $srcdir/od-overlap3.X differ" 1>&2
+ (diff -c od-overlap3.O $srcdir/od-overlap3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test od-overlap3(|) may have failed." 1>&2
+ $echo The command "cmp od-overlap3.O $srcdir/od-overlap3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s od-overlap3.E || rm -f od-overlap3.E
+$xx -b1-3,2- --output-d=: < $srcdir/od-overlap3.I > od-overlap3.O 2> od-overlap3.E
+code=$?
+if test $code != 0; then
+ $echo "Test od-overlap3(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp od-overlap3.O $srcdir/od-overlap3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed od-overlap3(<)"; fi;;
+ 1) $echo "Test od-overlap3(<) failed: files od-overlap3.O and $srcdir/od-overlap3.X differ" 1>&2
+ (diff -c od-overlap3.O $srcdir/od-overlap3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test od-overlap3(<) may have failed." 1>&2
+ $echo The command "cmp od-overlap3.O $srcdir/od-overlap3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s od-overlap3.E || rm -f od-overlap3.E
+$xx -b1-3,2-3 --output-d=: $srcdir/od-overlap4.I > od-overlap4.O 2> od-overlap4.E
+code=$?
+if test $code != 0; then
+ $echo "Test od-overlap4(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp od-overlap4.O $srcdir/od-overlap4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed od-overlap4(F)"; fi;;
+ 1) $echo "Test od-overlap4(F) failed: files od-overlap4.O and $srcdir/od-overlap4.X differ" 1>&2
+ (diff -c od-overlap4.O $srcdir/od-overlap4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test od-overlap4(F) may have failed." 1>&2
+ $echo The command "cmp od-overlap4.O $srcdir/od-overlap4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s od-overlap4.E || rm -f od-overlap4.E
+cat $srcdir/od-overlap4.I | $xx -b1-3,2-3 --output-d=: > od-overlap4.O 2> od-overlap4.E
+code=$?
+if test $code != 0; then
+ $echo "Test od-overlap4(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp od-overlap4.O $srcdir/od-overlap4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed od-overlap4(|)"; fi;;
+ 1) $echo "Test od-overlap4(|) failed: files od-overlap4.O and $srcdir/od-overlap4.X differ" 1>&2
+ (diff -c od-overlap4.O $srcdir/od-overlap4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test od-overlap4(|) may have failed." 1>&2
+ $echo The command "cmp od-overlap4.O $srcdir/od-overlap4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s od-overlap4.E || rm -f od-overlap4.E
+$xx -b1-3,2-3 --output-d=: < $srcdir/od-overlap4.I > od-overlap4.O 2> od-overlap4.E
+code=$?
+if test $code != 0; then
+ $echo "Test od-overlap4(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp od-overlap4.O $srcdir/od-overlap4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed od-overlap4(<)"; fi;;
+ 1) $echo "Test od-overlap4(<) failed: files od-overlap4.O and $srcdir/od-overlap4.X differ" 1>&2
+ (diff -c od-overlap4.O $srcdir/od-overlap4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test od-overlap4(<) may have failed." 1>&2
+ $echo The command "cmp od-overlap4.O $srcdir/od-overlap4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s od-overlap4.E || rm -f od-overlap4.E
+$xx -b1-3,1-4 --output-d=: $srcdir/od-overlap5.I > od-overlap5.O 2> od-overlap5.E
+code=$?
+if test $code != 0; then
+ $echo "Test od-overlap5(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp od-overlap5.O $srcdir/od-overlap5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed od-overlap5(F)"; fi;;
+ 1) $echo "Test od-overlap5(F) failed: files od-overlap5.O and $srcdir/od-overlap5.X differ" 1>&2
+ (diff -c od-overlap5.O $srcdir/od-overlap5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test od-overlap5(F) may have failed." 1>&2
+ $echo The command "cmp od-overlap5.O $srcdir/od-overlap5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s od-overlap5.E || rm -f od-overlap5.E
+cat $srcdir/od-overlap5.I | $xx -b1-3,1-4 --output-d=: > od-overlap5.O 2> od-overlap5.E
+code=$?
+if test $code != 0; then
+ $echo "Test od-overlap5(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp od-overlap5.O $srcdir/od-overlap5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed od-overlap5(|)"; fi;;
+ 1) $echo "Test od-overlap5(|) failed: files od-overlap5.O and $srcdir/od-overlap5.X differ" 1>&2
+ (diff -c od-overlap5.O $srcdir/od-overlap5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test od-overlap5(|) may have failed." 1>&2
+ $echo The command "cmp od-overlap5.O $srcdir/od-overlap5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s od-overlap5.E || rm -f od-overlap5.E
+$xx -b1-3,1-4 --output-d=: < $srcdir/od-overlap5.I > od-overlap5.O 2> od-overlap5.E
+code=$?
+if test $code != 0; then
+ $echo "Test od-overlap5(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp od-overlap5.O $srcdir/od-overlap5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed od-overlap5(<)"; fi;;
+ 1) $echo "Test od-overlap5(<) failed: files od-overlap5.O and $srcdir/od-overlap5.X differ" 1>&2
+ (diff -c od-overlap5.O $srcdir/od-overlap5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test od-overlap5(<) may have failed." 1>&2
+ $echo The command "cmp od-overlap5.O $srcdir/od-overlap5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s od-overlap5.E || rm -f od-overlap5.E
+if test $errors = 0; then
+ $echo Passed all 171 tests. 1>&2
+else
+ $echo Failed $errors tests. 1>&2
+fi
+test $errors = 0 || errors=1
+exit $errors
diff --git a/tests/cut/d.I b/tests/cut/d.I
new file mode 100644
index 0000000..c997d50
--- /dev/null
+++ b/tests/cut/d.I
@@ -0,0 +1 @@
+a:b:c:
diff --git a/tests/cut/d.X b/tests/cut/d.X
new file mode 100644
index 0000000..7098509
--- /dev/null
+++ b/tests/cut/d.X
@@ -0,0 +1 @@
+a:c
diff --git a/tests/cut/e.I b/tests/cut/e.I
new file mode 100644
index 0000000..c997d50
--- /dev/null
+++ b/tests/cut/e.I
@@ -0,0 +1 @@
+a:b:c:
diff --git a/tests/cut/e.X b/tests/cut/e.X
new file mode 100644
index 0000000..b3112be
--- /dev/null
+++ b/tests/cut/e.X
@@ -0,0 +1 @@
+c:
diff --git a/tests/cut/empty-bl.I b/tests/cut/empty-bl.I
new file mode 100644
index 0000000..397db75
--- /dev/null
+++ b/tests/cut/empty-bl.I
@@ -0,0 +1 @@
+:
diff --git a/tests/cut/empty-bl.X b/tests/cut/empty-bl.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/empty-bl.X
diff --git a/tests/cut/empty-f1.I b/tests/cut/empty-f1.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/empty-f1.I
diff --git a/tests/cut/empty-f1.X b/tests/cut/empty-f1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/empty-f1.X
diff --git a/tests/cut/empty-f2.I b/tests/cut/empty-f2.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/empty-f2.I
diff --git a/tests/cut/empty-f2.X b/tests/cut/empty-f2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/empty-f2.X
diff --git a/tests/cut/empty-fl.I b/tests/cut/empty-fl.I
new file mode 100644
index 0000000..397db75
--- /dev/null
+++ b/tests/cut/empty-fl.I
@@ -0,0 +1 @@
+:
diff --git a/tests/cut/empty-fl.X b/tests/cut/empty-fl.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/empty-fl.X
diff --git a/tests/cut/f.I b/tests/cut/f.I
new file mode 100644
index 0000000..c997d50
--- /dev/null
+++ b/tests/cut/f.I
@@ -0,0 +1 @@
+a:b:c:
diff --git a/tests/cut/f.X b/tests/cut/f.X
new file mode 100644
index 0000000..b3112be
--- /dev/null
+++ b/tests/cut/f.X
@@ -0,0 +1 @@
+c:
diff --git a/tests/cut/g.I b/tests/cut/g.I
new file mode 100644
index 0000000..c997d50
--- /dev/null
+++ b/tests/cut/g.I
@@ -0,0 +1 @@
+a:b:c:
diff --git a/tests/cut/g.X b/tests/cut/g.X
new file mode 100644
index 0000000..b3112be
--- /dev/null
+++ b/tests/cut/g.X
@@ -0,0 +1 @@
+c:
diff --git a/tests/cut/h.I b/tests/cut/h.I
new file mode 100644
index 0000000..8baef1b
--- /dev/null
+++ b/tests/cut/h.I
@@ -0,0 +1 @@
+abc
diff --git a/tests/cut/h.X b/tests/cut/h.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/h.X
diff --git a/tests/cut/i.I b/tests/cut/i.I
new file mode 100644
index 0000000..2d2bfd3
--- /dev/null
+++ b/tests/cut/i.I
@@ -0,0 +1 @@
+:::
diff --git a/tests/cut/i.X b/tests/cut/i.X
new file mode 100644
index 0000000..bef3763
--- /dev/null
+++ b/tests/cut/i.X
@@ -0,0 +1 @@
+::
diff --git a/tests/cut/j.I b/tests/cut/j.I
new file mode 100644
index 0000000..2d2bfd3
--- /dev/null
+++ b/tests/cut/j.I
@@ -0,0 +1 @@
+:::
diff --git a/tests/cut/j.X b/tests/cut/j.X
new file mode 100644
index 0000000..2d2bfd3
--- /dev/null
+++ b/tests/cut/j.X
@@ -0,0 +1 @@
+:::
diff --git a/tests/cut/k.I b/tests/cut/k.I
new file mode 100644
index 0000000..2d2bfd3
--- /dev/null
+++ b/tests/cut/k.I
@@ -0,0 +1 @@
+:::
diff --git a/tests/cut/k.X b/tests/cut/k.X
new file mode 100644
index 0000000..397db75
--- /dev/null
+++ b/tests/cut/k.X
@@ -0,0 +1 @@
+:
diff --git a/tests/cut/l.I b/tests/cut/l.I
new file mode 100644
index 0000000..2d2bfd3
--- /dev/null
+++ b/tests/cut/l.I
@@ -0,0 +1 @@
+:::
diff --git a/tests/cut/l.X b/tests/cut/l.X
new file mode 100644
index 0000000..bef3763
--- /dev/null
+++ b/tests/cut/l.X
@@ -0,0 +1 @@
+::
diff --git a/tests/cut/m.I b/tests/cut/m.I
new file mode 100644
index 0000000..2d2bfd3
--- /dev/null
+++ b/tests/cut/m.I
@@ -0,0 +1 @@
+:::
diff --git a/tests/cut/m.X b/tests/cut/m.X
new file mode 100644
index 0000000..bef3763
--- /dev/null
+++ b/tests/cut/m.X
@@ -0,0 +1 @@
+::
diff --git a/tests/cut/missing-bl.I b/tests/cut/missing-bl.I
new file mode 100644
index 0000000..397db75
--- /dev/null
+++ b/tests/cut/missing-bl.I
@@ -0,0 +1 @@
+:
diff --git a/tests/cut/missing-bl.X b/tests/cut/missing-bl.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/missing-bl.X
diff --git a/tests/cut/missing-fl.I b/tests/cut/missing-fl.I
new file mode 100644
index 0000000..397db75
--- /dev/null
+++ b/tests/cut/missing-fl.I
@@ -0,0 +1 @@
+:
diff --git a/tests/cut/missing-fl.X b/tests/cut/missing-fl.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/missing-fl.X
diff --git a/tests/cut/multichar-od.I b/tests/cut/multichar-od.I
new file mode 100644
index 0000000..af0abb2
--- /dev/null
+++ b/tests/cut/multichar-od.I
@@ -0,0 +1 @@
+a:b:c
diff --git a/tests/cut/multichar-od.X b/tests/cut/multichar-od.X
new file mode 100644
index 0000000..c345002
--- /dev/null
+++ b/tests/cut/multichar-od.X
@@ -0,0 +1 @@
+b_._c
diff --git a/tests/cut/n.I b/tests/cut/n.I
new file mode 100644
index 0000000..2d2bfd3
--- /dev/null
+++ b/tests/cut/n.I
@@ -0,0 +1 @@
+:::
diff --git a/tests/cut/n.X b/tests/cut/n.X
new file mode 100644
index 0000000..2d2bfd3
--- /dev/null
+++ b/tests/cut/n.X
@@ -0,0 +1 @@
+:::
diff --git a/tests/cut/nul-idelim.I b/tests/cut/nul-idelim.I
new file mode 100644
index 0000000..5892d4f
--- /dev/null
+++ b/tests/cut/nul-idelim.I
Binary files differ
diff --git a/tests/cut/nul-idelim.X b/tests/cut/nul-idelim.X
new file mode 100644
index 0000000..01b7680
--- /dev/null
+++ b/tests/cut/nul-idelim.X
@@ -0,0 +1 @@
+b_c
diff --git a/tests/cut/nul-odelim.I b/tests/cut/nul-odelim.I
new file mode 100644
index 0000000..af0abb2
--- /dev/null
+++ b/tests/cut/nul-odelim.I
@@ -0,0 +1 @@
+a:b:c
diff --git a/tests/cut/nul-odelim.X b/tests/cut/nul-odelim.X
new file mode 100644
index 0000000..ef4b99c
--- /dev/null
+++ b/tests/cut/nul-odelim.X
Binary files differ
diff --git a/tests/cut/o-delim.I b/tests/cut/o-delim.I
new file mode 100644
index 0000000..af0abb2
--- /dev/null
+++ b/tests/cut/o-delim.I
@@ -0,0 +1 @@
+a:b:c
diff --git a/tests/cut/o-delim.X b/tests/cut/o-delim.X
new file mode 100644
index 0000000..01b7680
--- /dev/null
+++ b/tests/cut/o-delim.X
@@ -0,0 +1 @@
+b_c
diff --git a/tests/cut/o.I b/tests/cut/o.I
new file mode 100644
index 0000000..2d2bfd3
--- /dev/null
+++ b/tests/cut/o.I
@@ -0,0 +1 @@
+:::
diff --git a/tests/cut/o.X b/tests/cut/o.X
new file mode 100644
index 0000000..397db75
--- /dev/null
+++ b/tests/cut/o.X
@@ -0,0 +1 @@
+:
diff --git a/tests/cut/od-abut.I b/tests/cut/od-abut.I
new file mode 100644
index 0000000..acbe86c
--- /dev/null
+++ b/tests/cut/od-abut.I
@@ -0,0 +1 @@
+abcd
diff --git a/tests/cut/od-abut.X b/tests/cut/od-abut.X
new file mode 100644
index 0000000..9f61020
--- /dev/null
+++ b/tests/cut/od-abut.X
@@ -0,0 +1 @@
+ab:cd
diff --git a/tests/cut/od-overlap.I b/tests/cut/od-overlap.I
new file mode 100644
index 0000000..8baef1b
--- /dev/null
+++ b/tests/cut/od-overlap.I
@@ -0,0 +1 @@
+abc
diff --git a/tests/cut/od-overlap.X b/tests/cut/od-overlap.X
new file mode 100644
index 0000000..81bf396
--- /dev/null
+++ b/tests/cut/od-overlap.X
@@ -0,0 +1 @@
+ab
diff --git a/tests/cut/od-overlap2.I b/tests/cut/od-overlap2.I
new file mode 100644
index 0000000..8baef1b
--- /dev/null
+++ b/tests/cut/od-overlap2.I
@@ -0,0 +1 @@
+abc
diff --git a/tests/cut/od-overlap2.X b/tests/cut/od-overlap2.X
new file mode 100644
index 0000000..8baef1b
--- /dev/null
+++ b/tests/cut/od-overlap2.X
@@ -0,0 +1 @@
+abc
diff --git a/tests/cut/od-overlap3.I b/tests/cut/od-overlap3.I
new file mode 100644
index 0000000..acbe86c
--- /dev/null
+++ b/tests/cut/od-overlap3.I
@@ -0,0 +1 @@
+abcd
diff --git a/tests/cut/od-overlap3.X b/tests/cut/od-overlap3.X
new file mode 100644
index 0000000..acbe86c
--- /dev/null
+++ b/tests/cut/od-overlap3.X
@@ -0,0 +1 @@
+abcd
diff --git a/tests/cut/od-overlap4.I b/tests/cut/od-overlap4.I
new file mode 100644
index 0000000..acbe86c
--- /dev/null
+++ b/tests/cut/od-overlap4.I
@@ -0,0 +1 @@
+abcd
diff --git a/tests/cut/od-overlap4.X b/tests/cut/od-overlap4.X
new file mode 100644
index 0000000..8baef1b
--- /dev/null
+++ b/tests/cut/od-overlap4.X
@@ -0,0 +1 @@
+abc
diff --git a/tests/cut/od-overlap5.I b/tests/cut/od-overlap5.I
new file mode 100644
index 0000000..00dedf6
--- /dev/null
+++ b/tests/cut/od-overlap5.I
@@ -0,0 +1 @@
+abcde
diff --git a/tests/cut/od-overlap5.X b/tests/cut/od-overlap5.X
new file mode 100644
index 0000000..acbe86c
--- /dev/null
+++ b/tests/cut/od-overlap5.X
@@ -0,0 +1 @@
+abcd
diff --git a/tests/cut/out-delim1.I b/tests/cut/out-delim1.I
new file mode 100644
index 0000000..b5b9ef6
--- /dev/null
+++ b/tests/cut/out-delim1.I
@@ -0,0 +1 @@
+abcdefg
diff --git a/tests/cut/out-delim1.X b/tests/cut/out-delim1.X
new file mode 100644
index 0000000..5f776fc
--- /dev/null
+++ b/tests/cut/out-delim1.X
@@ -0,0 +1 @@
+abc:efg
diff --git a/tests/cut/out-delim2.I b/tests/cut/out-delim2.I
new file mode 100644
index 0000000..b5b9ef6
--- /dev/null
+++ b/tests/cut/out-delim2.I
@@ -0,0 +1 @@
+abcdefg
diff --git a/tests/cut/out-delim2.X b/tests/cut/out-delim2.X
new file mode 100644
index 0000000..5f776fc
--- /dev/null
+++ b/tests/cut/out-delim2.X
@@ -0,0 +1 @@
+abc:efg
diff --git a/tests/cut/out-delim3.I b/tests/cut/out-delim3.I
new file mode 100644
index 0000000..b5b9ef6
--- /dev/null
+++ b/tests/cut/out-delim3.I
@@ -0,0 +1 @@
+abcdefg
diff --git a/tests/cut/out-delim3.X b/tests/cut/out-delim3.X
new file mode 100644
index 0000000..0ba7adf
--- /dev/null
+++ b/tests/cut/out-delim3.X
@@ -0,0 +1 @@
+abcd:f
diff --git a/tests/cut/out-delim3a.I b/tests/cut/out-delim3a.I
new file mode 100644
index 0000000..b5b9ef6
--- /dev/null
+++ b/tests/cut/out-delim3a.I
@@ -0,0 +1 @@
+abcdefg
diff --git a/tests/cut/out-delim3a.X b/tests/cut/out-delim3a.X
new file mode 100644
index 0000000..0d93097
--- /dev/null
+++ b/tests/cut/out-delim3a.X
@@ -0,0 +1 @@
+abcd:fg
diff --git a/tests/cut/out-delim4.I b/tests/cut/out-delim4.I
new file mode 100644
index 0000000..b5b9ef6
--- /dev/null
+++ b/tests/cut/out-delim4.I
@@ -0,0 +1 @@
+abcdefg
diff --git a/tests/cut/out-delim4.X b/tests/cut/out-delim4.X
new file mode 100644
index 0000000..3478d45
--- /dev/null
+++ b/tests/cut/out-delim4.X
@@ -0,0 +1 @@
+bc:defg
diff --git a/tests/cut/out-delim5.I b/tests/cut/out-delim5.I
new file mode 100644
index 0000000..b5b9ef6
--- /dev/null
+++ b/tests/cut/out-delim5.I
@@ -0,0 +1 @@
+abcdefg
diff --git a/tests/cut/out-delim5.X b/tests/cut/out-delim5.X
new file mode 100644
index 0000000..3478d45
--- /dev/null
+++ b/tests/cut/out-delim5.X
@@ -0,0 +1 @@
+bc:defg
diff --git a/tests/cut/out-delim6.I b/tests/cut/out-delim6.I
new file mode 100644
index 0000000..8baef1b
--- /dev/null
+++ b/tests/cut/out-delim6.I
@@ -0,0 +1 @@
+abc
diff --git a/tests/cut/out-delim6.X b/tests/cut/out-delim6.X
new file mode 100644
index 0000000..8baef1b
--- /dev/null
+++ b/tests/cut/out-delim6.X
@@ -0,0 +1 @@
+abc
diff --git a/tests/cut/p.I b/tests/cut/p.I
new file mode 100644
index 0000000..2d2bfd3
--- /dev/null
+++ b/tests/cut/p.I
@@ -0,0 +1 @@
+:::
diff --git a/tests/cut/p.X b/tests/cut/p.X
new file mode 100644
index 0000000..bef3763
--- /dev/null
+++ b/tests/cut/p.X
@@ -0,0 +1 @@
+::
diff --git a/tests/cut/q.I b/tests/cut/q.I
new file mode 100644
index 0000000..23a7be9
--- /dev/null
+++ b/tests/cut/q.I
@@ -0,0 +1,2 @@
+:::
+:
diff --git a/tests/cut/q.X b/tests/cut/q.X
new file mode 100644
index 0000000..3044d1f
--- /dev/null
+++ b/tests/cut/q.X
@@ -0,0 +1,2 @@
+::
+
diff --git a/tests/cut/r.I b/tests/cut/r.I
new file mode 100644
index 0000000..cd58b76
--- /dev/null
+++ b/tests/cut/r.I
@@ -0,0 +1,2 @@
+:::
+:1
diff --git a/tests/cut/r.X b/tests/cut/r.X
new file mode 100644
index 0000000..6218391
--- /dev/null
+++ b/tests/cut/r.X
@@ -0,0 +1,2 @@
+::
+1
diff --git a/tests/cut/s.I b/tests/cut/s.I
new file mode 100644
index 0000000..44d25e6
--- /dev/null
+++ b/tests/cut/s.I
@@ -0,0 +1,2 @@
+:::
+:a
diff --git a/tests/cut/s.X b/tests/cut/s.X
new file mode 100644
index 0000000..44d25e6
--- /dev/null
+++ b/tests/cut/s.X
@@ -0,0 +1,2 @@
+:::
+:a
diff --git a/tests/cut/t.I b/tests/cut/t.I
new file mode 100644
index 0000000..cd58b76
--- /dev/null
+++ b/tests/cut/t.I
@@ -0,0 +1,2 @@
+:::
+:1
diff --git a/tests/cut/t.X b/tests/cut/t.X
new file mode 100644
index 0000000..8710642
--- /dev/null
+++ b/tests/cut/t.X
@@ -0,0 +1,2 @@
+:
+
diff --git a/tests/cut/u.I b/tests/cut/u.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/u.I
diff --git a/tests/cut/u.X b/tests/cut/u.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/u.X
diff --git a/tests/cut/v.I b/tests/cut/v.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/v.I
diff --git a/tests/cut/v.X b/tests/cut/v.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/v.X
diff --git a/tests/cut/w.I b/tests/cut/w.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/w.I
diff --git a/tests/cut/w.X b/tests/cut/w.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/w.X
diff --git a/tests/cut/x.I b/tests/cut/x.I
new file mode 100644
index 0000000..397db75
--- /dev/null
+++ b/tests/cut/x.I
@@ -0,0 +1 @@
+:
diff --git a/tests/cut/x.X b/tests/cut/x.X
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/tests/cut/x.X
@@ -0,0 +1 @@
+
diff --git a/tests/cut/y.I b/tests/cut/y.I
new file mode 100644
index 0000000..397db75
--- /dev/null
+++ b/tests/cut/y.I
@@ -0,0 +1 @@
+:
diff --git a/tests/cut/y.X b/tests/cut/y.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/y.X
diff --git a/tests/cut/z.I b/tests/cut/z.I
new file mode 100644
index 0000000..397db75
--- /dev/null
+++ b/tests/cut/z.I
@@ -0,0 +1 @@
+:
diff --git a/tests/cut/z.X b/tests/cut/z.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/cut/z.X
diff --git a/tests/dd/Makefile.am b/tests/dd/Makefile.am
new file mode 100644
index 0000000..91ba05d
--- /dev/null
+++ b/tests/dd/Makefile.am
@@ -0,0 +1,13 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+
+EXTRA_DIST = $(TESTS)
+
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=dd
+
+TESTS = misc not-rewound skip-seek skip-seek2 unblock-sync
diff --git a/tests/dd/Makefile.in b/tests/dd/Makefile.in
new file mode 100644
index 0000000..f76aae6
--- /dev/null
+++ b/tests/dd/Makefile.in
@@ -0,0 +1,720 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/dd
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=dd
+
+TESTS = misc not-rewound skip-seek skip-seek2 unblock-sync
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/dd/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/dd/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/dd/misc b/tests/dd/misc
new file mode 100755
index 0000000..fa5cfbe
--- /dev/null
+++ b/tests/dd/misc
@@ -0,0 +1,92 @@
+#!/bin/sh
+# Ensure dd treats `--' properly.
+# Also test some flag values.
+
+# Copyright (C) 1999, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+tmp_in=dd-in.$$
+tmp_in2=dd-in2.$$
+tmp_sym=dd-sym.$$
+tmp_out=dd-out.$$
+
+if test "$VERBOSE" = yes; then
+ set -x
+ dd --version
+fi
+
+fail=0
+warn=0
+test_failure=0
+echo data > $tmp_in || test_failure=1
+ln $tmp_in $tmp_in2 || test_failure=1
+ln -s $tmp_in $tmp_sym || test_failure=1
+if test $test_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+dd if=$tmp_in of=$tmp_out 2> /dev/null || fail=1
+cmp $tmp_in $tmp_out || fail=1
+
+rm $tmp_out
+dd -- if=$tmp_in of=$tmp_out 2> /dev/null || fail=1
+cmp $tmp_in $tmp_out || fail=1
+
+if dd oflag=append if=$tmp_in of=$tmp_out 2> /dev/null; then
+ cmp $tmp_in $tmp_out || fail=1
+fi
+
+if dd iflag=nofollow if=$tmp_in count=0 2> /dev/null; then
+ dd iflag=nofollow if=$tmp_sym count=0 2> /dev/null && fail=1
+fi
+
+if dd iflag=directory if=. count=0 2> /dev/null; then
+ dd iflag=directory count=0 <. 2> /dev/null || fail=1
+ dd iflag=directory count=0 <$tmp_in 2> /dev/null && fail=1
+fi
+
+old_ls=`ls -u --full-time $tmp_in`
+sleep 1
+if dd iflag=noatime if=$tmp_in of=$tmp_out 2> /dev/null; then
+ new_ls=`ls -u --full-time $tmp_in`
+ if test "x$old_ls" != "x$new_ls"; then
+ cat >&2 <<EOF
+=================================================================
+$0: WARNING!!!
+This operating system has the O_NOATIME file status flag,
+but it is silently ignored in some cases.
+Therefore, dd options like iflag=noatime may be silently ignored.
+=================================================================
+EOF
+ warn=77
+ fi
+fi
+
+if dd oflag=nolinks if=$tmp_in of=$tmp_out 2> /dev/null; then
+ dd iflag=nolinks if=$tmp_in > /dev/null 2>&1 && fail=1
+ dd iflag=nolinks < $tmp_in > /dev/null 2>&1 && fail=1
+ dd oflag=nolinks < $tmp_in > $tmp_out 2>&1 || fail=1
+fi
+
+outbytes=`echo x | dd bs=3 ibs=10 obs=10 conv=sync 2>/dev/null | wc -c`
+test "$outbytes" -eq 3 || fail=1
+
+rm -f $tmp_in $tmp_in2 $tmp_sym $tmp_out || fail=1
+
+test $fail -eq 0 && fail=$warn
+exit $fail
diff --git a/tests/dd/not-rewound b/tests/dd/not-rewound
new file mode 100755
index 0000000..6caccd0
--- /dev/null
+++ b/tests/dd/not-rewound
@@ -0,0 +1,50 @@
+#!/bin/sh
+# Make sure dd does the right thing when the input file descriptor
+# is not rewound.
+
+# Copyright (C) 2000, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ dd --version
+fi
+
+pwd=`pwd`
+tmp=dd-rw.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+
+echo abcde > in
+(dd skip=1 count=1 bs=1; dd skip=1 bs=1) < in > out 2> /dev/null || fail=1
+case `cat out` in
+ bde) ;;
+ *) fail=1 ;;
+esac
+
+(exit $fail); exit $fail
diff --git a/tests/dd/skip-seek b/tests/dd/skip-seek
new file mode 100755
index 0000000..e6123cf
--- /dev/null
+++ b/tests/dd/skip-seek
@@ -0,0 +1,98 @@
+#!/bin/sh
+# -*- perl -*-
+# Test dd's skip and seek options.
+
+# Copyright (C) 2000, 2001, 2003, 2004, 2005 Free Software Foundation,
+# Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+SCRIPT_NAME=$0
+export SCRIPT_NAME
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+my $out = 'out';
+my $script_name = $ENV{SCRIPT_NAME};
+
+my @Tests =
+ (
+ [
+ 'sk-seek1',
+ qw (bs=1 skip=1 seek=2 conv=notrunc count=3 status=noxfer of=@AUX@ < ),
+ {IN=> '0123456789abcdef'},
+ {AUX=> 'zyxwvutsrqponmlkji'},
+ {OUT=> ''},
+ {ERR=> "3+0 records in\n3+0 records out\n"},
+ {CMP=> ['zy123utsrqponmlkji', {'@AUX@'=> undef}]},
+ ],
+ [
+ 'sk-seek2',
+ qw (bs=5 skip=1 seek=1 conv=notrunc count=1 status=noxfer of=@AUX@ < ),
+ {IN=> '0123456789abcdef'},
+ {AUX=> 'zyxwvutsrqponmlkji'},
+ {OUT=> ''},
+ {ERR=> "1+0 records in\n1+0 records out\n"},
+ {CMP=> ['zyxwv56789ponmlkji', {'@AUX@'=> undef}]},
+ ],
+ [
+ 'sk-seek3',
+ qw (bs=5 skip=1 seek=1 count=1 status=noxfer of=@AUX@ < ),
+ {IN=> '0123456789abcdef'},
+ {AUX=> 'zyxwvutsrqponmlkji'},
+ {OUT=> ''},
+ {ERR=> "1+0 records in\n1+0 records out\n"},
+ {CMP=> ['zyxwv56789', {'@AUX@'=> undef}]},
+ ],
+ [
+ # Before fileutils-4.0.45, the last 10 bytes of output
+ # were these "\0\0\0\0\0\0\0\0 ".
+ 'block-sync-1', qw(ibs=10 cbs=10 status=noxfer), 'conv=block,sync', '<',
+ {IN=> "01234567\nabcdefghijkl\n"},
+ {OUT=> "01234567 abcdefghij "},
+ {ERR=> "2+1 records in\n0+1 records out\n1 truncated record\n"},
+ ],
+ [
+ # Before coreutils-5.93, this would output just "c\n".
+ 'sk-seek4', qw(bs=1 skip=1 status=noxfer),
+ {IN_PIPE=> "abc\n"},
+ {OUT=> "bc\n"},
+ {ERR=> "3+0 records in\n3+0 records out\n"},
+ ],
+ );
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/dd/skip-seek2 b/tests/dd/skip-seek2
new file mode 100755
index 0000000..a4fc9ab
--- /dev/null
+++ b/tests/dd/skip-seek2
@@ -0,0 +1,57 @@
+#!/bin/sh
+# show how to skip an amount that is smaller than the nominal block size.
+# There's a more realistic example in the documentation.
+
+# Copyright (C) 2000, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ dd --version
+fi
+
+pwd=`pwd`
+tmp=skip-seek.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+fail=0
+
+echo LA:3456789abcdef > in || fail=1
+(dd bs=1 skip=3 count=0 && dd bs=5) < in > out 2> /dev/null || fail=1
+case `cat out` in
+ 3456789abcdef) ;;
+ *) fail=1 ;;
+esac
+
+echo LA:3456789abcdef > in || fail=1
+(dd bs=1 skip=3 count=0 && dd bs=5 count=2) < in > out 2> /dev/null || fail=1
+case `cat out` in
+ 3456789abc) ;;
+ *) fail=1 ;;
+esac
+
+(exit $fail); exit $fail
diff --git a/tests/dd/unblock-sync b/tests/dd/unblock-sync
new file mode 100755
index 0000000..d425091
--- /dev/null
+++ b/tests/dd/unblock-sync
@@ -0,0 +1,56 @@
+#!/bin/sh
+# Ensure that dd conv=unblock,sync works.
+
+# Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ dd --version
+fi
+
+# . $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+printf 000100020003xx > in || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+dd cbs=4 ibs=4 conv=unblock,sync < in > out 2> /dev/null || fail=1
+cat <<\EOF > exp || fail=1
+0001
+0002
+0003
+xx
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/dircolors/Makefile.am b/tests/dircolors/Makefile.am
new file mode 100644
index 0000000..41e754e
--- /dev/null
+++ b/tests/dircolors/Makefile.am
@@ -0,0 +1,13 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+
+EXTRA_DIST = $(TESTS)
+
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=dircolors
+
+TESTS = simple
diff --git a/tests/dircolors/Makefile.in b/tests/dircolors/Makefile.in
new file mode 100644
index 0000000..9908cbf
--- /dev/null
+++ b/tests/dircolors/Makefile.in
@@ -0,0 +1,720 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/dircolors
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=dircolors
+
+TESTS = simple
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/dircolors/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/dircolors/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/dircolors/simple b/tests/dircolors/simple
new file mode 100755
index 0000000..2e5f110
--- /dev/null
+++ b/tests/dircolors/simple
@@ -0,0 +1,60 @@
+#!/bin/sh
+# Simple dircolors tests.
+
+# Copyright (C) 1998, 2003, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my @Tests =
+ (
+ ['a', '-b', {IN => {k => "exec\n"}},
+ {ERR => "dircolors: k:1: invalid line; missing second token\n"},
+ {EXIT => 1}],
+ ['quote', '-b', {IN => "exec 'echo Hello;:'\n"},
+ {OUT => "LS_COLORS='ex='\\''echo Hello;\\:'\\'':';\n"
+ . "export LS_COLORS\n"}],
+ ['other-wr', '-b', {IN => "owt 40;33\n"},
+ {OUT => "LS_COLORS='tw=40;33:';\nexport LS_COLORS\n"}],
+
+ # CAREFUL: always specify the -b option, unless explicitly testing
+ # for csh syntax output.
+ );
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/du/2g b/tests/du/2g
new file mode 100755
index 0000000..5ed11e7
--- /dev/null
+++ b/tests/du/2g
@@ -0,0 +1,93 @@
+#!/bin/sh
+# Ensure that du can handle a 2GB file (i.e., a file of size 2^31 bytes)
+# Before coreutils-5.93, on systems with a signed, 32-bit stat.st_blocks
+# one of du's computations would overflow.
+
+# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+. $srcdir/../envvar-check
+
+# Creating a 2GB file counts as `very expensive'.
+. $srcdir/../very-expensive
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Get number of free kilobytes on current partition, so we can
+# skip this test if there is insufficient free space.
+
+# This technique relies on the fact that the `Available' kilobyte
+# count is the number just before the one with a trailing `%'.
+free_kb=`df -kP .|tail -1|sed 's/ [0-9][0-9]*%.*//;s/ *$//;s/.* //'`
+case "$free_kb" in
+ [0-9]*) ;;
+ *) echo "invalid size from df: $free_kb" 1>&2; (exit 77); exit 77;;
+esac
+
+# Require about 3GB free.
+min_kb=3000000
+test $min_kb -lt $free_kb ||
+{
+ echo "$0: skipping this test:"
+ echo "too little free space on current partition: $free_kb (need $min_kb KB)" \
+ 1>&2;
+ (exit 77); exit 77
+}
+
+big=big
+rm -f $big
+test -t 1 || printf 'creating a 2GB file...\n'
+for i in `seq 100`; do
+ # Note: 2147483648 == 2^31. Print floor(2^31/100) per iteration.
+ printf %21474836s x >> $big || fail=1
+ # On the final iteration, append the remaining 48 bytes.
+ test $i = 100 && { printf %48s x >> $big || fail=1; }
+ test -t 1 && printf 'creating a 2GB file: %d%% complete\r' $i
+done
+echo
+
+du -k $big > out1 || fail=1
+rm -f $big
+sed 's/^2[0-9][0-9][0-9][0-9][0-9][0-9] '$big'$/~2M/' out1 > out
+
+cat <<\EOF > exp || fail=1
+~2M
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/du/8gb b/tests/du/8gb
new file mode 100755
index 0000000..400c29d
--- /dev/null
+++ b/tests/du/8gb
@@ -0,0 +1,77 @@
+#!/bin/sh
+# Ensure that du does not rely on narrow types like size_t for
+# file sizes or sums.
+
+# Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../sparse-file
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+dd bs=1 seek=8G of=big < /dev/null 2> /dev/null
+if test $? != 0; then
+ echo "$0: cannot create a file large enough for this test; possibly" 1>&2
+ echo "$0: because file offsets are only 32 bits on this file system" 1>&2
+ (exit 77); exit 77
+fi
+
+# FIXME: this should be a test of dd.
+# On some systems (at least linux-2.4.18 + NFS to disks on a Solaris system)
+# the `dd' command above mistakenly creates a file of length `0', yet
+# doesn't fail. The root of that failure is that the ftruncate call
+# returns zero but doesn't do its job. Detect this failure.
+set x `ls -gG big`
+size=$4
+if test "$size" = 0; then
+ echo "$0: cannot create a file large enough for this test;" 1>&2
+ echo "$0: possibly because this system's NFS support is buggy;" 1>&2
+ echo "$0: Consider rerunning this test on a different file system." 1>&2
+ (exit 77); exit 77
+fi
+
+fail=0
+
+# This would print `0 big' with coreutils-4.5.8.
+du -ab big > out || fail=1
+
+cat <<\EOF > exp
+8589934592 big
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/du/Makefile.am b/tests/du/Makefile.am
new file mode 100644
index 0000000..3149cfa
--- /dev/null
+++ b/tests/du/Makefile.am
@@ -0,0 +1,37 @@
+# Make coreutils tests for "du". -*-Makefile-*-
+
+# Copyright (C) 2000, 2002-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+TESTS = \
+ one-file-system \
+ inacc-dest \
+ long-from-unreadable \
+ long-sloop \
+ 2g \
+ files0-from \
+ inaccessible-cwd \
+ deref-args \
+ slash \
+ fd-leak \
+ hard-link 8gb basic restore-wd \
+ exclude no-x no-deref trailing-slash deref two-args slink
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
diff --git a/tests/du/Makefile.in b/tests/du/Makefile.in
new file mode 100644
index 0000000..b68e6b4
--- /dev/null
+++ b/tests/du/Makefile.in
@@ -0,0 +1,749 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils tests for "du". -*-Makefile-*-
+
+# Copyright (C) 2000, 2002-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/du
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = \
+ one-file-system \
+ inacc-dest \
+ long-from-unreadable \
+ long-sloop \
+ 2g \
+ files0-from \
+ inaccessible-cwd \
+ deref-args \
+ slash \
+ fd-leak \
+ hard-link 8gb basic restore-wd \
+ exclude no-x no-deref trailing-slash deref two-args slink
+
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/du/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/du/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/du/basic b/tests/du/basic
new file mode 100755
index 0000000..665a416
--- /dev/null
+++ b/tests/du/basic
@@ -0,0 +1,113 @@
+#!/bin/sh
+# Compare actual numbers from du, assuming block size matches mine.
+
+# Copyright (C) 2003, 2006-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+# DU_BLOCK_SIZE could cause problems
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p a/b d d/sub || framework_failure=1
+
+# Ensure that these files contain more than 64 bytes, so that we don't
+# immediately disqualify file systems (e.g., NetApp) on which smaller
+# files take up zero disk blocks.
+printf '%*s' 257 make-sure-the-file-is-non-empty > a/b/F || framework_failure=1
+printf %4096s x > d/1
+cp d/1 d/sub/2
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+B=`stat --format=%B a/b/F`
+
+du --block-size=$B -a a > out || fail=1
+echo === >> out
+du --block-size=$B -a -S a >> out || fail=1
+echo === >> out
+du --block-size=$B -s a >> out || fail=1
+
+f=`stat --format=%b a/b/F`
+b=`stat --format=%b a/b`
+a=`stat --format=%b a`
+bf=`expr $b + $f`
+tot=`expr $bf + $a`
+
+cat <<EOF | sed 's/ *#.*//' > exp
+$f a/b/F
+$bf a/b
+$tot a
+===
+$f a/b/F # size of file, a/b/F
+$bf a/b # size of dir entry, a/b, + size of file, a/b/F
+$a a # size of dir entry, a
+===
+$tot a
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff -u out exp 2> /dev/null
+
+# Perform this test only if "." is on a local file system.
+# Otherwise, it would fail e.g., on an NFS-mounted Solaris ZFS file system.
+if df --local . >/dev/null 2>&1; then
+ rm -f out exp
+ du --block-size=$B -a d | sort -r -k2,2 > out || fail=1
+ echo === >> out
+ du --block-size=$B -S d | sort -r -k2,2 >> out || fail=1
+
+ t2=`stat --format=%b d/sub/2`
+ ts=`stat --format=%b d/sub`
+ t1=`stat --format=%b d/1`
+ td=`stat --format=%b d`
+ tot=`expr $t1 + $t2 + $ts + $td`
+ d1=`expr $td + $t1`
+ s2=`expr $ts + $t2`
+
+ cat <<EOF | sed 's/ *#.*//' > exp
+$t2 d/sub/2
+$s2 d/sub
+$t1 d/1
+$tot d
+===
+$s2 d/sub
+$d1 d # d + d/1; don't count the dir. entry for d/sub
+EOF
+
+ cmp out exp || fail=1
+ test $fail = 1 && diff out exp 2> /dev/null
+fi
+
+(exit $fail); exit $fail
diff --git a/tests/du/deref b/tests/du/deref
new file mode 100755
index 0000000..407797a
--- /dev/null
+++ b/tests/du/deref
@@ -0,0 +1,50 @@
+#!/bin/sh
+# prior to coreutils-4.5.3, du -D didn't work in some cases
+# Based on an example from Andreas Schwab and/or Michal Svec.
+
+# Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p a/sub || framework_failure=1
+ln -s a/sub slink || framework_failure=1
+touch b || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# This used to fail with the following diagnostic:
+# du: `b': No such file or directory
+du -sD slink b > /dev/null 2>&1 || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/du/deref-args b/tests/du/deref-args
new file mode 100755
index 0000000..79225f5
--- /dev/null
+++ b/tests/du/deref-args
@@ -0,0 +1,69 @@
+#!/bin/sh
+# Ensure that --dereference-args (-D) gives reasonable names.
+# This test would fail for coreutils-5.0.91.
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p dir/a
+ln -s dir slink
+printf %65536s x > 64k
+ln -s 64k slink-to-64k
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+du -D slink | sed 's/^[0-9][0-9]* //' > out
+# Ensure that the trailing slash is preserved and handled properly.
+du -D slink/ | sed 's/^[0-9][0-9]* //' >> out
+
+# Ensure that -D makes du dereference even symlinks to non-directories.
+# Be sure to use --apparent-size. Otherwise, we'd get varying block counts
+# depending on file system type (e.g. 68 on ext3 vs. 64 on tmpfs and 72
+# on SELinux-enabled systems).
+du --apparent-size --block-size=1K -D slink-to-64k >> out
+cat <<\EOF > exp
+slink/a
+slink
+slink/a
+slink/
+64 slink-to-64k
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/du/exclude b/tests/du/exclude
new file mode 100755
index 0000000..e197fcd
--- /dev/null
+++ b/tests/du/exclude
@@ -0,0 +1,79 @@
+#!/bin/sh
+# make sure du's --exclude option works
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p a/b/c a/x/y a/u/v
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+du --exclude=x a | sed 's/^[0-9][0-9]* //' | sort > out || fail=1
+printf '===\n' >> out
+printf 'b\n' > excl
+du --exclude-from=excl a | sed 's/^[0-9][0-9]* //' | sort >> out || fail=1
+printf '===\n' >> out
+# Make sure that we can exclude an entire hierarchy.
+du --exclude=a a >> out || fail=1
+# Make sure that we can exclude based on more than one component.
+# Before coreutils-5.3.0, this part would fail.
+printf '===\n' >> out
+du --exclude=a/u --exclude=a/b a \
+ | sed 's/^[0-9][0-9]* //' | sort >> out || fail=1
+cat <<\EOF > exp
+a
+a/b
+a/b/c
+a/u
+a/u/v
+===
+a
+a/u
+a/u/v
+a/x
+a/x/y
+===
+===
+a
+a/x
+a/x/y
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/du/fd-leak b/tests/du/fd-leak
new file mode 100755
index 0000000..465fcae
--- /dev/null
+++ b/tests/du/fd-leak
@@ -0,0 +1,61 @@
+#!/bin/sh
+# check for file descriptor leak
+
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+# Call this an expensive test. It's not that expensive, but command line
+# limitations might induce failure on some losing systems.
+. $srcdir/../expensive
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+# Create 1296 (36^2) files.
+# Their names and separating spaces take up 3887 bytes.
+x='a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9'
+f=
+for i in $x; do
+ for j in $x; do
+ f="$f $i$j"
+ done
+done
+
+# This may fail due to command line limitations.
+touch $f || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# With coreutils-5.0, this would fail due to a file descriptor leak.
+du $f > out || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/du/files0-from b/tests/du/files0-from
new file mode 100755
index 0000000..fdcb595
--- /dev/null
+++ b/tests/du/files0-from
@@ -0,0 +1,107 @@
+#!/bin/sh
+# -*- perl -*-
+# Exercise du's --files0-from option.
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+. $srcdir/../envvar-check
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+#/
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+$ENV{PROG} = 'du';
+
+# Turn off localization of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my @Tests =
+ (
+ # invalid extra command line argument
+ ['f-extra-arg', '--files0-from=- no-such', {IN=>"a"}, {EXIT=>1},
+ {ERR => "du: extra operand `no-such'\n"
+ . "File operands cannot be combined with --files0-from.\n"
+ . "Try `du --help' for more information.\n"}
+ ],
+
+ # missing input file
+ ['missing', '--files0-from=missing', {EXIT=>1},
+ {ERR => "du: cannot open `missing' for reading: "
+ . "No such file or directory\n"}],
+
+ # empty input
+ ['empty', '--files0-from=-'],
+
+ # empty input, from non-regular file
+ ['empty-nonreg', '--files0-from=/dev/null'],
+
+ # one NUL
+ ['nul-1', '--files0-from=-', '<', {IN=>"\0"}, {EXIT=>1},
+ {ERR => "du: -:1: invalid zero-length file name\n"}],
+
+ # two NULs
+ ['nul-2', '--files0-from=-', '<', {IN=>"\0\0"}, {EXIT=>1},
+ {ERR => "du: -:1: invalid zero-length file name\n"
+ . "du: -:2: invalid zero-length file name\n"}],
+
+ # one file name, no NUL
+ ['1', '--files0-from=-', '<',
+ {IN=>{f=>"g"}}, {AUX=>{g=>''}},
+ {OUT=>"0\tg\n"}, {OUT_SUBST=>'s/^\d+/0/'} ],
+
+ # one file name, with NUL
+ ['1a', '--files0-from=-', '<',
+ {IN=>{f=>"g\0"}}, {AUX=>{g=>''}},
+ {OUT=>"0\tg\n"}, {OUT_SUBST=>'s/^\d+/0/'} ],
+
+ # two file names, no final NUL
+ ['2', '--files0-from=-', '<',
+ {IN=>{f=>"g\0g"}}, {AUX=>{g=>''}},
+ {OUT=>"0\tg\n0\tg\n"}, {OUT_SUBST=>'s/^\d+/0/'} ],
+
+ # two file names, with final NUL
+ ['2a', '--files0-from=-', '<',
+ {IN=>{f=>"g\0g\0"}}, {AUX=>{g=>''}},
+ {OUT=>"0\tg\n0\tg\n"}, {OUT_SUBST=>'s/^\d+/0/'} ],
+
+ # Ensure that du processes FILEs following a zero-length name.
+ ['zero-len', '--files0-from=-', '<',
+ {IN=>{f=>"\0g\0"}}, {AUX=>{g=>''}},
+ {OUT=>"0\tg\n"}, {OUT_SUBST=>'s/^\d+/0/'},
+ {ERR => "du: -:1: invalid zero-length file name\n"}, {EXIT=>1} ],
+ );
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/du/hard-link b/tests/du/hard-link
new file mode 100755
index 0000000..1e7a5f9
--- /dev/null
+++ b/tests/du/hard-link
@@ -0,0 +1,71 @@
+#!/bin/sh
+# Ensure that hard-linked files are counted (and listed) only once.
+# Likewise for excluded directories.
+# Ensure that hard links _are_ listed twice when using --count-links.
+
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir -p dir/sub
+( cd dir && { echo non-empty > f1; ln f1 f2; echo non-empty > sub/F; } )
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Note that for this first test, we transform f1 or f2
+# (whichever name we find first) to f_. That is necessary because,
+# depending on the type of file system, du could encounter either of those
+# two hard-linked files first, thus listing that one and not the other.
+du -a --exclude=sub dir \
+ | sed 's/^[0-9][0-9]* //' | sed 's/f[12]/f_/' > out || fail=1
+echo === >> out
+du -a --exclude=sub --count-links dir \
+ | sed 's/^[0-9][0-9]* //' | sort -r >> out || fail=1
+cat <<\EOF > exp
+dir/f_
+dir
+===
+dir/f2
+dir/f1
+dir
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff -u out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/du/inacc-dest b/tests/du/inacc-dest
new file mode 100755
index 0000000..0ff6b96
--- /dev/null
+++ b/tests/du/inacc-dest
@@ -0,0 +1,83 @@
+#!/bin/sh
+# Prior to coreutils-6.5, an inaccessible destination dir (chmod a-x)
+# would cause du to exit prematurely on systems with native openat support.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir f && cd f && mkdir a b c d e && touch c/j && chmod a-x c \
+ || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+du > ../t 2>&1 && fail=1
+
+# Accept either of the following outputs.
+# You get the first from a system with openat _emulation_ (via /proc),
+# the second from a system with native openat support.
+# FIXME: there may well be a third output, for systems with neither
+# /proc support, nor native openat support.
+
+sed 's/^[0-9][0-9]* //' ../t | sort -u > out
+cat <<\EOF > exp || fail=1
+.
+./a
+./b
+./d
+./e
+du: `./c': Permission denied
+EOF
+
+cat <<\EOF > exp2 || fail=1
+.
+./a
+./b
+./c
+./d
+./e
+du: cannot access `./c/j': Permission denied
+EOF
+
+cmp out exp > /dev/null 2>&1 || {
+ cmp out exp2 || fail=1
+ }
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/du/inaccessible-cwd b/tests/du/inaccessible-cwd
new file mode 100755
index 0000000..0f9f9b7
--- /dev/null
+++ b/tests/du/inaccessible-cwd
@@ -0,0 +1,53 @@
+#!/bin/sh
+# Ensure that even when run from an inaccessible directory, du can still
+# operate on accessible directories elsewhere.
+
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# Before the switch to an fts-based implementation in coreutils 5.0.92,
+# this test would fail.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p no-x a/b || framework_failure=1
+cd no-x || framework_failure=1
+chmod 0 . || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+du "$pwd/$tmp/a" > /dev/null || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/du/long-from-unreadable b/tests/du/long-from-unreadable
new file mode 100755
index 0000000..f43a6db
--- /dev/null
+++ b/tests/du/long-from-unreadable
@@ -0,0 +1,89 @@
+#!/bin/sh
+# Show fts fails on old-fashioned systems.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# Show that fts (hence du, chmod, chgrp, chown) fails when all of the
+# following are true:
+# - `.' is not readable
+# - operating on a hierarchy containing a relative name longer than PATH_MAX
+# - run on a system where gnulib's openat emulation must resort to using
+# save_cwd and restore_cwd (which fail if `.' is not readable).
+# Thus, the following du invocation should succeed on newer Linux and
+# Solaris systems, yet it must fail on systems lacking both openat and
+# /proc support. However, before coreutils-6.0 this test would fail even
+# on Linux+PROC_FS systems because its fts implementation would revert
+# unnecessarily to using FTS_NOCHDIR mode in this corner case.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+. $srcdir/../envvar-check
+
+proc_file=/proc/self/fd
+if test ! -d $proc_file; then
+ cat <<EOF >&2
+$0: Skipping this test.
+It would fail, since your system lacks /proc support.
+EOF
+ (exit 77); exit 77
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+dir=`printf '%200s\n' ' '|tr ' ' x`
+
+# Construct a hierarchy containing a relative file with a name
+# longer than PATH_MAX.
+# for i in `seq 52`; do
+# mkdir $dir || framework_failure=1
+# cd $dir || framework_failure=1
+# done
+# cd $tmp || framework_failure=1
+
+# Sheesh. Bash 3.1.5 can't create this hierarchy. I get
+# cd: error retrieving current directory: getcwd: cannot access parent directories:
+# Use perl instead:
+: ${PERL=perl}
+$PERL \
+ -e 'my $d = '$dir'; foreach my $i (1..52)' \
+ -e ' { mkdir ($d, 0700) && chdir $d or die "$!" }' \
+ || framework_failure=1
+
+mkdir inaccessible || framework_failure=1
+cd inaccessible || framework_failure=1
+chmod 0 . || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+du -s "$pwd/$tmp/$dir" > /dev/null || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/du/long-sloop b/tests/du/long-sloop
new file mode 100755
index 0000000..f5f9423
--- /dev/null
+++ b/tests/du/long-sloop
@@ -0,0 +1,99 @@
+#!/bin/sh
+# Use du to exercise a corner of fts's FTS_LOGICAL code.
+# Show that du fails with ELOOP (Too many levels of symbolic links)
+# when it encounters that condition.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+# Create lots of directories, each containing a single symlink
+# pointing at the next directory in the list.
+
+# This number should be larger than the number of symlinks allowed in
+# file name resolution, but not too large as a number of entries
+# in a single directory.
+n=400
+
+dir_list=`seq $n`
+mkdir $dir_list || framework_failure=1
+file=1
+i_minus_1=0
+for i in $dir_list `expr $n + 1`; do
+ case $i_minus_1 in
+ 0) ;;
+ *)
+ ln -s ../$i $i_minus_1/s || framework_failure=1
+ file=$file/s;;
+ esac
+ i_minus_1=$i
+done
+echo foo > $i
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+# If a system can handle this many symlinks in a file name,
+# just skip this test.
+
+# The following also serves to record in `err' the string
+# corresponding to strerror (ELOOP). This is necessary because while
+# Linux/libc gives `Too many levels of symbolic links', Solaris
+# renders it as `Number of symbolic links encountered during path
+# name traversal exceeds MAXSYMLINKS'.
+
+cat $file > /dev/null 2> err && \
+ {
+ cat <<EOF >&2
+$0: Your system appears to be able to handle more than $n symlinks
+in file name resolution, so skipping this test.
+EOF
+ (exit 77); exit 77
+ }
+too_many=`sed 's/.*: //' err`
+
+fail=0
+
+# With coreutils-5.93 there was no failure.
+# With coreutils-5.94 we get the desired diagnostic:
+# du: cannot access `1/s/s/s/.../s': Too many levels of symbolic links
+du -L 1 > /dev/null 2> out1 && fail=1
+sed "s, .1/s/s/s/[/s]*',," out1 > out || fail=1
+
+echo "du: cannot access: $too_many" > exp || fail=1
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/du/no-deref b/tests/du/no-deref
new file mode 100755
index 0000000..167f9c2
--- /dev/null
+++ b/tests/du/no-deref
@@ -0,0 +1,54 @@
+#!/bin/sh
+# Ensure that by default, du doesn't dereference command-line symlinks.
+
+# Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p dir/a/b
+ln -s dir slink
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+du slink | sed 's/^[0-9][0-9]* //' > out
+cat <<\EOF > exp
+slink
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/du/no-x b/tests/du/no-x
new file mode 100755
index 0000000..fa93e97
--- /dev/null
+++ b/tests/du/no-x
@@ -0,0 +1,72 @@
+#!/bin/sh
+# Make sure du gives the right diagnostic for a readable,
+# but inaccessible directory.
+
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p d/no-x/y || framework_failure=1
+chmod u=rw d/no-x || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# This must exit nonzero.
+du d >/dev/null 2>out && fail=1
+
+cat <<\EOF > exp
+du: `d/no-x': Permission denied
+EOF
+
+# With native fdopendir, du uses a different code path.
+cat <<\EOF > exp-native-fdopendir
+du: cannot access `d/no-x/y': Permission denied
+EOF
+
+if cmp out exp >/dev/null 2>&1; then
+ :
+else
+ if cmp out exp-native-fdopendir; then
+ :
+ else
+ fail=1
+ fi
+fi
+
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/du/one-file-system b/tests/du/one-file-system
new file mode 100755
index 0000000..b595dc6
--- /dev/null
+++ b/tests/du/one-file-system
@@ -0,0 +1,61 @@
+#!/bin/sh
+# Test for a bug in fts's handling of FTS_XDEV, the flag behind
+# du's --one-file-system (-x) option.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p b/c y/z || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Due to a used-uninitialized variable, the "du -x" from coreutils-6.6
+# would not traverse into second and subsequent directories listed
+# on the command line.
+du -ax b y > t || fail=1
+sed 's/^[0-9][0-9]* //' t > out
+cat <<\EOF > exp || fail=1
+b/c
+b
+y/z
+y
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/du/restore-wd b/tests/du/restore-wd
new file mode 100755
index 0000000..3b8a3c9
--- /dev/null
+++ b/tests/du/restore-wd
@@ -0,0 +1,49 @@
+#!/bin/sh
+# due to a bug in glibc's ftw.c, in some cases, nftw w/FTW_CHDIR
+# would not restore the working directory.
+
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir a b || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# With du from coreutils-4.5.5 and 4.5.6, this would fail with
+# du: `b': No such file or directory
+
+du a b > out || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/du/slash b/tests/du/slash
new file mode 100755
index 0000000..d3e1335
--- /dev/null
+++ b/tests/du/slash
@@ -0,0 +1,54 @@
+#!/bin/sh
+# `du /' would omit the `/' on the last line.
+
+# Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+du --exclude='[^/]*' -x / > out-t || fail=1
+sed 's/^[0-9][0-9]* //' out-t > out
+rm -f out-t
+cat <<\EOF > exp
+/
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/du/slink b/tests/du/slink
new file mode 100755
index 0000000..8be1a30
--- /dev/null
+++ b/tests/du/slink
@@ -0,0 +1,79 @@
+#!/bin/sh
+# Ensure that the size of a long-named-symlink is > 0.
+
+# Copyright (C) 2002-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+# Determine if `.' is on a local (would non-NFS be sufficient?) file system.
+# On at least some NFS implementations, symlinks never take up space,
+
+# So if this is a non-local file system, skip the test.
+if df --local . >/dev/null 2>&1; then
+ : # Ok.
+else
+ echo "$0: skipping this test, since \`.' is on a non-local file system" 1>&2
+ (exit 77); exit 77
+fi
+
+if df --type=xfs . >/dev/null 2>&1; then
+ # At least on Irix-6.5.19, when using an xfs file system,
+ # each created symlink (name lengths up to 255) would have a size of `0'.
+ echo "$0: skipping this test, since \`.' is on an XFS file system" 1>&2
+ (exit 77); exit 77
+fi
+
+if df --type=nfsv3 . >/dev/null 2>&1; then
+ # At least on OSF/1 4.0d, when using an nfsv3 file system,
+ # each created symlink can end up having a size of 0.
+ echo "$0: skipping this test, since \`.' is on an NFS file system" 1>&2
+ (exit 77); exit 77
+fi
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+symlink_name_lengths='1 15 16 31 32 59 60 63 64 127 128 255 256 511 512 1024'
+for len in $symlink_name_lengths; do
+ name=`seq 1 $len|tr -c x y |head -c$len`
+ # Record the names of symlinks that are successfully created.
+ ln -fs $name $len > /dev/null 2>&1 \
+ && symlinks="$symlinks $len"
+done
+
+du -a $symlinks > out || fail=1
+
+# Require that at least one of these symlinks has a non-zero size.
+grep '^[1-9]' out > /dev/null || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/du/trailing-slash b/tests/du/trailing-slash
new file mode 100755
index 0000000..4d607cd
--- /dev/null
+++ b/tests/du/trailing-slash
@@ -0,0 +1,68 @@
+#!/bin/sh
+# Ensure that du works properly for an argument that refers to a
+# symbolic link, and that is specified with a trailing slash.
+
+# Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# Before coreutils-4.5.3, it would remove a single trailing slash.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p dir/1/2 || framework_failure=1
+ln -s dir slink || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+du slink/ | sed 's/^[0-9][0-9]* //' > out
+echo === >> out
+
+# Ensure that with -L we get the same results (modulo the trailing slash
+# on the third line) even without the trailing slash on the command line.
+du -L slink | sed 's/^[0-9][0-9]* //' >> out
+cat <<\EOF > exp
+slink/1/2
+slink/1
+slink/
+===
+slink/1/2
+slink/1
+slink
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/du/two-args b/tests/du/two-args
new file mode 100755
index 0000000..93700a0
--- /dev/null
+++ b/tests/du/two-args
@@ -0,0 +1,51 @@
+#!/bin/sh
+# Make sure `du d/1 d/2' works.
+# That command failed with du from fileutils-4.0q.
+
+# Copyright (C) 2000, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ du --version
+fi
+
+pwd=`pwd`
+tmp=du2-$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+mkdir -p $tmp/1 $tmp/2
+
+test -d $tmp || fail=1
+du $tmp/1 $tmp/2 > /dev/null || fail=1
+
+# Make sure `du . $tmp' and `du .. $tmp' work.
+# These would fail prior to fileutils-4.0y.
+du . $tmp > /dev/null || fail=1
+du .. $tmp > /dev/null || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/envvar-check b/tests/envvar-check
new file mode 100644
index 0000000..ff5927f
--- /dev/null
+++ b/tests/envvar-check
@@ -0,0 +1,58 @@
+# -*- sh -*-
+# Check environment variables for sane values while testing.
+
+# Copyright (C) 2000, 2001, 2003, 2004, 2006 Free Software Foundation,
+# Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+envvar_check_failed=0
+vars='
+ _POSIX2_VERSION
+ BLOCKSIZE
+ BLOCK_SIZE
+ CDPATH
+ COLUMNS
+ DF_BLOCK_SIZE
+ DU_BLOCK_SIZE
+ LS_BLOCK_SIZE
+ LS_COLORS
+ POSIXLY_CORRECT
+ QUOTING_STYLE
+ SIMPLE_BACKUP_SUFFIX
+ TABSIZE
+ TERM
+ TIME_STYLE
+ TMPDIR
+ VERSION_CONTROL
+'
+for var in $vars
+do
+ $as_unset $var
+ if eval test \"\${$var+set}\" = set; then
+ echo "$0: the $var environment variable is set --" \
+ ' unset it and rerun this test' >&2
+ envvar_check_failed=1
+ fi
+done
+
+test "$envvar_check_fail" = 1 && exit 1
diff --git a/tests/expensive b/tests/expensive
new file mode 100644
index 0000000..cc3f40d
--- /dev/null
+++ b/tests/expensive
@@ -0,0 +1,30 @@
+# Is a test expensive?
+
+# Copyright (C) 2000, 2004 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$RUN_EXPENSIVE_TESTS" != yes; then
+ cat <<EOF >&2
+$0: This test is relatively expensive, so it is disabled by default.
+To run it anyway, rerun make check with the RUN_EXPENSIVE_TESTS
+environment variable set to yes. E.g.,
+
+ env RUN_EXPENSIVE_TESTS=yes make check
+
+EOF
+ (exit 77); exit 77
+fi
diff --git a/tests/expr/Makefile.am b/tests/expr/Makefile.am
new file mode 100644
index 0000000..7440c74
--- /dev/null
+++ b/tests/expr/Makefile.am
@@ -0,0 +1,10 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+TESTS = basic
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=expr
diff --git a/tests/expr/Makefile.in b/tests/expr/Makefile.in
new file mode 100644
index 0000000..e853c76
--- /dev/null
+++ b/tests/expr/Makefile.in
@@ -0,0 +1,720 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/expr
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = basic
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=expr
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/expr/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/expr/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/expr/basic b/tests/expr/basic
new file mode 100755
index 0000000..ee264d9
--- /dev/null
+++ b/tests/expr/basic
@@ -0,0 +1,189 @@
+#!/bin/sh
+# -*-perl-*-
+# Basic tests for "expr".
+
+# Copyright (C) 2001, 2003, 2004, 2005, 2006 Free Software Foundation,
+# Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+d=$srcdir/..
+exec $PERL -w -I$d -MCoreutils -- - << \EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+
+my @Tests =
+ (
+ ['a', '5 + 6', {OUT => '11'}],
+ ['b', '5 - 6', {OUT => '-1'}],
+ ['c', '5 \* 6', {OUT => '30'}],
+ ['d', '100 / 6', {OUT => '16'}],
+ ['e', '100 % 6', {OUT => '4'}],
+ ['f', '3 + -2', {OUT => '1'}],
+ ['g', '-2 + -2', {OUT => '-4'}],
+
+ ['paren1', '\( 100 % 6 \)', {OUT => '4'}],
+ ['paren2', '\( 100 % 6 \) - 8', {OUT => '-4'}],
+ ['paren3', '9 / \( 100 % 6 \) - 8', {OUT => '-6'}],
+ ['paren4', '9 / \( \( 100 % 6 \) - 8 \)', {OUT => '-2'}],
+ ['paren5', '9 + \( 100 % 6 \)', {OUT => '13'}],
+
+ # Before 2.0.12, this would output `1'.
+ ['0bang', '00 \< 0!', {OUT => '0'}, {EXIT => 1}],
+
+ # In 5.1.3 and earlier, these would exit with status 0.
+ ['00', '00', {OUT => '00'}, {EXIT => 1}],
+ ['minus0', '-0', {OUT => '-0'}, {EXIT => 1}],
+
+ # In 5.1.3 and earlier, these would report errors.
+ ['andand', '0 \& 1 / 0', {OUT => '0'}, {EXIT => 1}],
+ ['oror', '1 \| 1 / 0', {OUT => '1'}, {EXIT => 0}],
+
+ # In 5.1.3 and earlier, this would output the empty string.
+ ['orempty', '"" \| ""', {OUT => '0'}, {EXIT => 1}],
+
+ # This evoked a syntax error diagnostic before 2.0.12.
+ ['minus2', '-- 2 + 2', {OUT => '4'}],
+
+ # This erroneously succeeded and output `3' before 2.0.12.
+ ['fail-a', '3 + -', {ERR => "$prog: non-numeric argument\n"},
+ {EXIT => 2}],
+
+ # This erroneously succeeded before 5.3.1.
+ ['bigcmp', '-- -2417851639229258349412352 \< 2417851639229258349412352',
+ {OUT => '1'}, {EXIT => 0}],
+
+ # In 5.94 and earlier, anchors incorrectly matched newlines.
+ ['anchor', "'a\nb' : 'a\$'", {OUT => '0'}, {EXIT => 1}],
+
+ # These tests are taken from grep/tests/bre.tests.
+ ['bre1', '"abc" : "a\\(b\\)c"', {OUT => 'b'}],
+ ['bre2', '"a(" : "a("', {OUT => '2'}],
+ ['bre3', '_ : "a\\("',
+ {ERR => "$prog: Unmatched ( or \\(\n"}, {EXIT => 2}],
+ ['bre4', '_ : "a\\(b"',
+ {ERR => "$prog: Unmatched ( or \\(\n"}, {EXIT => 2}],
+ ['bre5', '"a(b" : "a(b"', {OUT => '3'}],
+ ['bre6', '"a)" : "a)"', {OUT => '2'}],
+ ['bre7', '_ : "a\\)"',
+ {ERR => "$prog: Unmatched ) or \\)\n"}, {EXIT => 2}],
+ ['bre8', '_ : "\\)"',
+ {ERR => "$prog: Unmatched ) or \\)\n"}, {EXIT => 2}],
+ ['bre9', '"ab" : "a\\(\\)b"', {OUT => ''}, {EXIT => 1}],
+ ['bre10', '"a^b" : "a^b"', {OUT => '3'}],
+ ['bre11', '"a\$b" : "a\$b"', {OUT => '3'}],
+ ['bre12', '"" : "\\($\\)\\(^\\)"', {OUT => ''}, {EXIT => 1}],
+ ['bre13', '"b" : "a*\\(^b\$\\)c*"', {OUT => 'b'}],
+ ['bre14', '"X|" : "X\\(|\\)" : "(" "X|" : "X\\(|\\)" ")"', {OUT => '1'}],
+ ['bre15', '"X*" : "X\\(*\\)" : "(" "X*" : "X\\(*\\)" ")"', {OUT => '1'}],
+ ['bre16', '"abc" : "\\(\\)"', {OUT => ''}, {EXIT => 1}],
+ ['bre17', '"{1}a" : "\\(\\{1\\}a\\)"', {OUT => '{1}a'}],
+ ['bre18', '"X*" : "X\\(*\\)" : "^*"', {OUT => '1'}],
+ ['bre19', '"{1}" : "^\\{1\\}"', {OUT => '3'}],
+ ['bre20', '"{" : "{"', {OUT => '1'}],
+ ['bre21', '"abbcbd" : "a\\(b*\\)c\\1d"', {OUT => ''}, {EXIT => 1}],
+ ['bre22', '"abbcbbbd" : "a\\(b*\\)c\\1d"', {OUT => ''}, {EXIT => 1}],
+ ['bre23', '"abc" : "\\(.\\)\\1"', {OUT => ''}, {EXIT => 1}],
+ ['bre24', '"abbccd" : "a\\(\\([bc]\\)\\2\\)*d"', {OUT => 'cc'}],
+ ['bre25', '"abbcbd" : "a\\(\\([bc]\\)\\2\\)*d"',
+ {OUT => ''}, {EXIT => 1}],
+ ['bre26', '"abbbd" : "a\\(\\(b\\)*\\2\\)*d"', {OUT => 'bbb'}],
+ ['bre27', '"aabcd" : "\\(a\\)\\1bcd"', {OUT => 'a'}],
+ ['bre28', '"aabcd" : "\\(a\\)\\1bc*d"', {OUT => 'a'}],
+ ['bre29', '"aabd" : "\\(a\\)\\1bc*d"', {OUT => 'a'}],
+ ['bre30', '"aabcccd" : "\\(a\\)\\1bc*d"', {OUT => 'a'}],
+ ['bre31', '"aabcccd" : "\\(a\\)\\1bc*[ce]d"', {OUT => 'a'}],
+ ['bre32', '"aabcccd" : "\\(a\\)\\1b\\(c\\)*cd\$"', {OUT => 'a'}],
+ ['bre33', '"a*b" : "a\\(*\\)b"', {OUT => '*'}],
+ ['bre34', '"ab" : "a\\(**\\)b"', {OUT => ''}, {EXIT => 1}],
+ ['bre35', '"ab" : "a\\(***\\)b"', {OUT => ''}, {EXIT => 1}],
+ ['bre36', '"*a" : "*a"', {OUT => '2'}],
+ ['bre37', '"a" : "**a"', {OUT => '1'}],
+ ['bre38', '"a" : "***a"', {OUT => '1'}],
+ ['bre39', '"ab" : "a\\{1\\}b"', {OUT => '2'}],
+ ['bre40', '"ab" : "a\\{1,\\}b"', {OUT => '2'}],
+ ['bre41', '"aab" : "a\\{1,2\\}b"', {OUT => '3'}],
+ ['bre42', '_ : "a\\{1"',
+ {ERR => "$prog: Unmatched \\{\n"}, {EXIT => 2}],
+ ['bre43', '_ : "a\\{1a"',
+ {ERR => "$prog: Unmatched \\{\n"}, {EXIT => 2}],
+ ['bre44', '_ : "a\\{1a\\}"',
+ {ERR => "$prog: Invalid content of \\{\\}\n"}, {EXIT => 2}],
+ ['bre45', '"a" : "a\\{,2\\}"', {OUT => '1'}],
+ ['bre46', '"a" : "a\\{,\\}"', {OUT => '1'}],
+ ['bre47', '_ : "a\\{1,x\\}"',
+ {ERR => "$prog: Invalid content of \\{\\}\n"}, {EXIT => 2}],
+ ['bre48', '_ : "a\\{1,x"',
+ {ERR => "$prog: Unmatched \\{\n"}, {EXIT => 2}],
+ ['bre49', '_ : "a\\{32768\\}"',
+ {ERR => "$prog: Invalid content of \\{\\}\n"}, {EXIT => 2}],
+ ['bre50', '_ : "a\\{1,0\\}"',
+ {ERR => "$prog: Invalid content of \\{\\}\n"}, {EXIT => 2}],
+ ['bre51', '"acabc" : ".*ab\\{0,0\\}c"', {OUT => '2'}],
+ ['bre52', '"abcac" : "ab\\{0,1\\}c"', {OUT => '3'}],
+ ['bre53', '"abbcac" : "ab\\{0,3\\}c"', {OUT => '4'}],
+ ['bre54', '"abcac" : ".*ab\\{1,1\\}c"', {OUT => '3'}],
+ ['bre55', '"abcac" : ".*ab\\{1,3\\}c"', {OUT => '3'}],
+ ['bre56', '"abbcabc" : ".*ab\{2,2\}c"', {OUT => '4'}],
+ ['bre57', '"abbcabc" : ".*ab\{2,4\}c"', {OUT => '4'}],
+ ['bre58', '"aa" : "a\\{1\\}\\{1\\}"', {OUT => '1'}],
+ ['bre59', '"aa" : "a*\\{1\\}"', {OUT => '2'}],
+ ['bre60', '"aa" : "a\\{1\\}*"', {OUT => '2'}],
+ ['bre61', '"acd" : "a\\(b\\)?c\\1d"', {OUT => ''}, {EXIT => 1}],
+ ['bre62', '-- "-5" : "-\\{0,1\\}[0-9]*\$"', {OUT => '2'}],
+
+ ['fail-b', '9 9', {ERR => "$prog: syntax error\n"},
+ {EXIT => 2}],
+ ['fail-c', {ERR => "$prog: missing operand\n"
+ . "Try `$prog --help' for more information.\n"},
+ {EXIT => 2}],
+ );
+
+# Append a newline to end of each expected `OUT' string.
+my $t;
+foreach $t (@Tests)
+ {
+ my $arg1 = $t->[1];
+ my $e;
+ foreach $e (@$t)
+ {
+ $e->{OUT} .= "\n"
+ if ref $e eq 'HASH' and exists $e->{OUT};
+ }
+ }
+
+my $save_temps = $ENV{SAVE_TEMPS};
+my $verbose = $ENV{VERBOSE};
+
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/factor/Makefile.am b/tests/factor/Makefile.am
new file mode 100644
index 0000000..dedc143
--- /dev/null
+++ b/tests/factor/Makefile.am
@@ -0,0 +1,10 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+TESTS = basic
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=factor
diff --git a/tests/factor/Makefile.in b/tests/factor/Makefile.in
new file mode 100644
index 0000000..dead356
--- /dev/null
+++ b/tests/factor/Makefile.in
@@ -0,0 +1,720 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/factor
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = basic
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=factor
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/factor/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/factor/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/factor/basic b/tests/factor/basic
new file mode 100755
index 0000000..8b91cce
--- /dev/null
+++ b/tests/factor/basic
@@ -0,0 +1,114 @@
+#!/bin/sh
+# -*-perl-*-
+# Basic tests for "factor".
+
+# Copyright (C) 1998, 1999, 2000, 2003, 2004, 2005 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+d=$srcdir/..
+exec $PERL -w -I$d -MCoreutils -- - << \EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+
+my @Tests =
+ (
+ ['1', '9', {OUT => '3 3'}],
+ ['1a', '7', {OUT => '7'}],
+ ['2', '4294967291', {OUT => '4294967291'}],
+ ['3', '4294967292', {OUT => '2 2 3 3 7 11 31 151 331'}],
+ ['4', '4294967293', {OUT => '9241 464773'}],
+
+ ['a', '4294966201', {OUT => '12197 352133'}],
+ ['b', '4294966339', {OUT => '13187 325697'}],
+ ['c', '4294966631', {OUT => '13729 312839'}],
+ ['d', '4294966457', {OUT => '14891 288427'}],
+ ['e', '4294966759', {OUT => '21649 198391'}],
+ ['f', '4294966573', {OUT => '23071 186163'}],
+ ['g', '4294967101', {OUT => '23603 181967'}],
+ ['h', '4294966519', {OUT => '34583 124193'}],
+ ['i', '4294966561', {OUT => '36067 119083'}],
+ ['j', '4294966901', {OUT => '37747 113783'}],
+ ['k', '4294966691', {OUT => '39241 109451'}],
+ ['l', '4294966969', {OUT => '44201 97169'}],
+ ['m', '4294967099', {OUT => '44483 96553'}],
+ ['n', '4294966271', {OUT => '44617 96263'}],
+ ['o', '4294966789', {OUT => '50411 85199'}],
+ ['p', '4294966189', {OUT => '53197 80737'}],
+ ['q', '4294967213', {OUT => '57139 75167'}],
+ ['s', '4294967071', {OUT => '65521 65551'}],
+ ['t', '4294966194', {OUT => '2 3 3 3 3 3 3 3 53 97 191'}],
+ ['u', '4294966272', {OUT => '2 2 2 2 2 2 2 2 2 2 3 23 89 683'}],
+ ['v', '4294966400', {OUT => '2 2 2 2 2 2 2 5 5 1342177'}],
+ ['w', '4294966464', {OUT => '2 2 2 2 2 2 3 3 3 2485513'}],
+ ['x', '4294966896', {OUT => '2 2 2 2 3 3 3 11 607 1489'}],
+ ['y', '4294966998', {OUT => '2 3 7 3917 26107'}],
+ ['z', '-1',
+ {ERR => "$prog: invalid option -- 1\n"
+ . "Try `$prog --help' for more information.\n"},
+ {EXIT => 1}],
+ ['cont', 'a 4',
+ {OUT => "4: 2 2\n"},
+ {ERR => "$prog: `a' is not a valid positive integer\n"},
+ {EXIT => 1}],
+ );
+
+# Prepend the command line argument and append a newline to end
+# of each expected `OUT' string.
+my $t;
+
+Test:
+foreach $t (@Tests)
+ {
+ my $arg1 = $t->[1];
+
+ # Don't fiddle with expected OUT string if there's a nonzero exit status.
+ foreach my $e (@$t)
+ {
+ ref $e eq 'HASH' && exists $e->{EXIT} && $e->{EXIT}
+ and next Test;
+ }
+
+ foreach my $e (@$t)
+ {
+ ref $e eq 'HASH' && exists $e->{OUT}
+ and $e->{OUT} = "$arg1: $e->{OUT}\n"
+ }
+ }
+
+my $save_temps = $ENV{SAVE_TEMPS};
+my $verbose = $ENV{VERBOSE};
+
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/fmt/Makefile.am b/tests/fmt/Makefile.am
new file mode 100644
index 0000000..3ed6f72
--- /dev/null
+++ b/tests/fmt/Makefile.am
@@ -0,0 +1,13 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+
+EXTRA_DIST = $(TESTS)
+
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=fmt
+
+TESTS = basic long-line
diff --git a/tests/fmt/Makefile.in b/tests/fmt/Makefile.in
new file mode 100644
index 0000000..cef5c9a
--- /dev/null
+++ b/tests/fmt/Makefile.in
@@ -0,0 +1,720 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/fmt
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=fmt
+
+TESTS = basic long-line
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/fmt/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/fmt/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/fmt/basic b/tests/fmt/basic
new file mode 100755
index 0000000..66abe13
--- /dev/null
+++ b/tests/fmt/basic
@@ -0,0 +1,87 @@
+#!/bin/sh
+# -*- perl -*-
+# Basic tests for "fmt".
+
+# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+# Export this to avoid hassles when run in a UTF-8 locale,
+# since we use 8-bit characters below, and those values are
+# interpolated into strings (to perform substitution) in Coreutils.pm.
+LC_ALL=C
+export LC_ALL
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+my @Tests =
+ (
+ ['8-bit-pfx', qw (-p 'ç'),
+ {IN=> "ça\nçb\n"},
+ {OUT=>"ça b\n"}],
+ ['wide-1', '-w 32768',
+ {ERR => "fmt: invalid width: `32768'\n"}, {EXIT => 1}],
+ ['wide-2', '-w 2147483647',
+ {ERR => "fmt: invalid width: `2147483647'\n"}, {EXIT => 1}],
+ ['bad-suffix', '-72x', {IN=> ''},
+ {ERR => "fmt: invalid width: `72x'\n"}, {EXIT => 1}],
+ ['no-file', 'no-such-file',
+ {ERR => "fmt: cannot open `no-such-file' for reading:"
+ . " No such file or directory\n"}, {EXIT => 1}],
+ ['obs-1', '-c -72',
+ {ERR => "fmt: invalid option -- 7; -WIDTH is recognized only when it"
+ . " is the first\noption; use -w N instead\n"
+ . "Try `fmt --help' for more information.\n" }, {EXIT => 1}],
+
+ # With --prefix=P, do not remove leading space on lines without the prefix.
+ ['pfx-1', qw (-p '>'),
+ {IN=> " 1\n 2\n\t3\n\t\t4\n> quoted\n> text\n"},
+ {OUT=> " 1\n 2\n\t3\n\t\t4\n> quoted text\n"}],
+
+ # Don't remove prefix from a prefix-only line.
+ ['pfx-only', qw (-p '>'),
+ {IN=> ">\n"},
+ {OUT=> ">\n"}],
+
+ # With a multi-byte prefix, say, "foo", don't empty a line that
+ # starts with a strict prefix (e.g. "fo") of that prefix.
+ # With fmt from coreutils-6.7, it would mistakenly output an empty line.
+ ['pfx-of-pfx', qw (-p 'foo'),
+ {IN=> "fo\n"},
+ {OUT=> "fo\n"}],
+);
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/fmt/long-line b/tests/fmt/long-line
new file mode 100755
index 0000000..f7e74c8
--- /dev/null
+++ b/tests/fmt/long-line
@@ -0,0 +1,81 @@
+#!/bin/sh
+# make sure fmt -s works even on long lines
+
+# Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ fmt --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+(echo ' '; yes) | head -n1000 | tr '\n' ' ' > in || framework_failure=1
+
+cat <<\EOF > exp || framework_failure=1
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
+ y y
+EOF
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+fmt -s in > out || fail=1
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/group-names b/tests/group-names
new file mode 100644
index 0000000..eb57160
--- /dev/null
+++ b/tests/group-names
@@ -0,0 +1,37 @@
+# -*- sh -*-
+# Set `groups' to a space-separated list of at least two groups of which
+# the user is a member.
+
+# Copyright (C) 2000, 2004, 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+groups=${COREUTILS_GROUPS-`(id -G || /usr/xpg4/bin/id -G) 2>/dev/null`}
+case "$groups" in
+ *' '*) ;;
+ *) cat <<EOF 1>&2
+$0: this test requires that you be a member of more than one group,
+but running \`id -G' either failed or found just one. If you really
+are a member of at least two groups, then rerun this test with
+COREUTILS_GROUPS set in your environment to the space-separated list
+of group names or numbers. E.g.,
+
+ env COREUTILS_GROUPS='users cdrom' make check
+
+EOF
+ (exit 77); exit 77
+ ;;
+esac
diff --git a/tests/head/Makefile.am b/tests/head/Makefile.am
new file mode 100644
index 0000000..eb6e6ce
--- /dev/null
+++ b/tests/head/Makefile.am
@@ -0,0 +1,69 @@
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+##test-files-begin
+x = head
+explicit = in in-1024
+maint_gen = idem-0.I idem-0.X idem-1.I idem-1.X idem-2.I idem-2.X idem-3.I \
+idem-3.X basic-0-10.I basic-0-10.X basic-0-09.I basic-0-09.X basic-0-11.I \
+basic-0-11.X obs-0.I obs-0.X obs-1.I obs-1.X obs-2.I obs-2.X obs-3.I obs-3.X \
+fail-1.I fail-1.X null-1.I null-1.X no-oct-1.I no-oct-1.X no-oct-2.I \
+no-oct-2.X no-oct-3.I no-oct-3.X no-oct-4.I no-oct-4.X posix-0.I posix-0.X \
+posix-1.I posix-1.X posix-2.I posix-2.X posix-3.I posix-3.X
+run_gen = idem-0.O idem-0.E idem-1.O idem-1.E idem-2.O idem-2.E idem-3.O \
+idem-3.E basic-0-10.O basic-0-10.E basic-0-09.O basic-0-09.E basic-0-11.O \
+basic-0-11.E obs-0.O obs-0.E obs-1.O obs-1.E obs-2.O obs-2.E obs-3.O obs-3.E \
+obs-4.O obs-4.E obs-5.O obs-5.E fail-1.O fail-1.E null-1.O null-1.E \
+no-oct-1.O no-oct-1.E no-oct-2.O no-oct-2.E no-oct-3.O no-oct-3.E no-oct-4.O \
+no-oct-4.E posix-0.O posix-0.E posix-1.O posix-1.E posix-2.O posix-2.E \
+posix-3.O posix-3.E posix-4.O posix-4.E posix-5.O posix-5.E
+##test-files-end
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+
+TESTS = $x-tests
+
+mk_script = $(srcdir)/../mk-script
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
diff --git a/tests/head/Makefile.in b/tests/head/Makefile.in
new file mode 100644
index 0000000..a5d6e56
--- /dev/null
+++ b/tests/head/Makefile.in
@@ -0,0 +1,779 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/head
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SCRIPTS = $(noinst_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+x = head
+explicit = in in-1024
+maint_gen = idem-0.I idem-0.X idem-1.I idem-1.X idem-2.I idem-2.X idem-3.I \
+idem-3.X basic-0-10.I basic-0-10.X basic-0-09.I basic-0-09.X basic-0-11.I \
+basic-0-11.X obs-0.I obs-0.X obs-1.I obs-1.X obs-2.I obs-2.X obs-3.I obs-3.X \
+fail-1.I fail-1.X null-1.I null-1.X no-oct-1.I no-oct-1.X no-oct-2.I \
+no-oct-2.X no-oct-3.I no-oct-3.X no-oct-4.I no-oct-4.X posix-0.I posix-0.X \
+posix-1.I posix-1.X posix-2.I posix-2.X posix-3.I posix-3.X
+
+run_gen = idem-0.O idem-0.E idem-1.O idem-1.E idem-2.O idem-2.E idem-3.O \
+idem-3.E basic-0-10.O basic-0-10.E basic-0-09.O basic-0-09.E basic-0-11.O \
+basic-0-11.E obs-0.O obs-0.E obs-1.O obs-1.E obs-2.O obs-2.E obs-3.O obs-3.E \
+obs-4.O obs-4.E obs-5.O obs-5.E fail-1.O fail-1.E null-1.O null-1.E \
+no-oct-1.O no-oct-1.E no-oct-2.O no-oct-2.E no-oct-3.O no-oct-3.E no-oct-4.O \
+no-oct-4.E posix-0.O posix-0.E posix-1.O posix-1.E posix-2.O posix-2.E \
+posix-3.O posix-3.E posix-4.O posix-4.E posix-5.O posix-5.E
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+TESTS = $x-tests
+mk_script = $(srcdir)/../mk-script
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/head/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/head/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(SCRIPTS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/head/Test.pm b/tests/head/Test.pm
new file mode 100644
index 0000000..263ccaf
--- /dev/null
+++ b/tests/head/Test.pm
@@ -0,0 +1,110 @@
+# Test "head".
+
+# Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2005 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+package Test;
+require 5.002;
+use strict;
+
+my @tv = (
+# test name, options, input, expected output, expected return code
+#
+['idem-0', '', "", "", 0],
+['idem-1', '', "a", "a", 0],
+['idem-2', '', "\n", "\n", 0],
+['idem-3', '', "a\n", "a\n", 0],
+
+['basic-0-10', '',
+ "1\n2\n3\n4\n5\n6\n7\n8\n9\n0\n",
+ "1\n2\n3\n4\n5\n6\n7\n8\n9\n0\n", 0],
+
+['basic-0-09', '',
+ "1\n2\n3\n4\n5\n6\n7\n8\n9\n",
+ "1\n2\n3\n4\n5\n6\n7\n8\n9\n", 0],
+
+['basic-0-11', '',
+ "1\n2\n3\n4\n5\n6\n7\n8\n9\n0\nb\n",
+ "1\n2\n3\n4\n5\n6\n7\n8\n9\n0\n", 0],
+
+['obs-0', '-1', "1\n2\n", "1\n", 0],
+['obs-1', '-1c', "", "", 0],
+['obs-2', '-1c', "12", "1", 0],
+['obs-3', '-14c', "1234567890abcdefg", "1234567890abcd", 0],
+['obs-4', '-2b', [\'in'], [\'in-1024'], 0],
+['obs-5', '-1k', [\'in'], [\'in-1024'], 0],
+
+# This test fails for textutils-1.22, because head let 4096m overflow to 0
+# and did not fail. Now head fails with a diagnostic.
+
+# Disable this test because it fails on systems with 64-bit longs.
+# ['fail-0', '-n 4096m', "a\n", "", 1],
+
+# In spite of its name, this test passes -- just to contrast with the above.
+['fail-1', '-n 2048m', "a\n", "a\n", 0],
+
+# Make sure we don't break like AIX 4.3.1 on files with \0 in them.
+['null-1', '', "a\0a\n", "a\0a\n", 0],
+
+# Make sure counts are interpreted as decimal.
+# Before 2.0f, these would have been interpreted as octal
+['no-oct-1', '-08', "\n"x12, "\n"x8, 0],
+['no-oct-2', '-010', "\n"x12, "\n"x10, 0],
+['no-oct-3', '-n 08', "\n"x12, "\n"x8, 0],
+['no-oct-4', '-c 08', "\n"x12, "\n"x8, 0],
+
+);
+
+sub test_vector
+{
+ my @derived_tests;
+ foreach my $t (@tv)
+ {
+ my ($test_name, $flags, $in, $exp, $ret) = @$t;
+
+ # Derive equivalent, posix-style tests from the obsolescent ones.
+ next if $test_name !~ /^obs-/;
+
+ $test_name =~ s/^obs-/posix-/;
+ if ($flags =~ /-(\d+)$/)
+ {
+ $flags = "-n $1";
+ }
+ elsif ($flags =~ /-(\d+)([cbk])$/)
+ {
+ my $suffix = $2;
+ $suffix = '' if $suffix eq 'c';
+ $flags = "-c $1$suffix";
+ }
+ else
+ {
+ $flags = "-l $`";
+ }
+ push (@derived_tests, [$test_name, $flags, $in, $exp, $ret]);
+ }
+
+ foreach my $t (@tv, @derived_tests)
+ {
+ my ($test_name) = @$t;
+ $Test::input_via{$test_name} = {REDIR => 0, FILE => 0, PIPE => 0}
+ }
+
+ return (@tv, @derived_tests);
+}
+
+1;
diff --git a/tests/head/basic-0-09.I b/tests/head/basic-0-09.I
new file mode 100644
index 0000000..0719398
--- /dev/null
+++ b/tests/head/basic-0-09.I
@@ -0,0 +1,9 @@
+1
+2
+3
+4
+5
+6
+7
+8
+9
diff --git a/tests/head/basic-0-09.X b/tests/head/basic-0-09.X
new file mode 100644
index 0000000..0719398
--- /dev/null
+++ b/tests/head/basic-0-09.X
@@ -0,0 +1,9 @@
+1
+2
+3
+4
+5
+6
+7
+8
+9
diff --git a/tests/head/basic-0-10.I b/tests/head/basic-0-10.I
new file mode 100644
index 0000000..e53eaa1
--- /dev/null
+++ b/tests/head/basic-0-10.I
@@ -0,0 +1,10 @@
+1
+2
+3
+4
+5
+6
+7
+8
+9
+0
diff --git a/tests/head/basic-0-10.X b/tests/head/basic-0-10.X
new file mode 100644
index 0000000..e53eaa1
--- /dev/null
+++ b/tests/head/basic-0-10.X
@@ -0,0 +1,10 @@
+1
+2
+3
+4
+5
+6
+7
+8
+9
+0
diff --git a/tests/head/basic-0-11.I b/tests/head/basic-0-11.I
new file mode 100644
index 0000000..6424b5d
--- /dev/null
+++ b/tests/head/basic-0-11.I
@@ -0,0 +1,11 @@
+1
+2
+3
+4
+5
+6
+7
+8
+9
+0
+b
diff --git a/tests/head/basic-0-11.X b/tests/head/basic-0-11.X
new file mode 100644
index 0000000..e53eaa1
--- /dev/null
+++ b/tests/head/basic-0-11.X
@@ -0,0 +1,10 @@
+1
+2
+3
+4
+5
+6
+7
+8
+9
+0
diff --git a/tests/head/fail-1.I b/tests/head/fail-1.I
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/tests/head/fail-1.I
@@ -0,0 +1 @@
+a
diff --git a/tests/head/fail-1.X b/tests/head/fail-1.X
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/tests/head/fail-1.X
@@ -0,0 +1 @@
+a
diff --git a/tests/head/head-tests b/tests/head/head-tests
new file mode 100755
index 0000000..3b2d37d
--- /dev/null
+++ b/tests/head/head-tests
@@ -0,0 +1,1377 @@
+#! /bin/sh
+# This script was generated automatically by mk-script.
+case $# in
+ 0) xx='head';;
+ *) xx="$1";;
+esac
+test "$VERBOSE" && echo=echo || echo=:
+$echo testing program: $xx
+errors=0
+test "$srcdir" || srcdir=.
+test "$VERBOSE" && $xx --version 2> /dev/null
+
+# Make sure we get English translations.
+LANGUAGE=C
+export LANGUAGE
+LC_ALL=C
+export LC_ALL
+LANG=C
+export LANG
+
+$xx $srcdir/idem-0.I > idem-0.O 2> idem-0.E
+code=$?
+if test $code != 0; then
+ $echo "Test idem-0(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp idem-0.O $srcdir/idem-0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed idem-0(F)"; fi;;
+ 1) $echo "Test idem-0(F) failed: files idem-0.O and $srcdir/idem-0.X differ" 1>&2
+ (diff -c idem-0.O $srcdir/idem-0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test idem-0(F) may have failed." 1>&2
+ $echo The command "cmp idem-0.O $srcdir/idem-0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s idem-0.E || rm -f idem-0.E
+cat $srcdir/idem-0.I | $xx > idem-0.O 2> idem-0.E
+code=$?
+if test $code != 0; then
+ $echo "Test idem-0(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp idem-0.O $srcdir/idem-0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed idem-0(|)"; fi;;
+ 1) $echo "Test idem-0(|) failed: files idem-0.O and $srcdir/idem-0.X differ" 1>&2
+ (diff -c idem-0.O $srcdir/idem-0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test idem-0(|) may have failed." 1>&2
+ $echo The command "cmp idem-0.O $srcdir/idem-0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s idem-0.E || rm -f idem-0.E
+$xx < $srcdir/idem-0.I > idem-0.O 2> idem-0.E
+code=$?
+if test $code != 0; then
+ $echo "Test idem-0(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp idem-0.O $srcdir/idem-0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed idem-0(<)"; fi;;
+ 1) $echo "Test idem-0(<) failed: files idem-0.O and $srcdir/idem-0.X differ" 1>&2
+ (diff -c idem-0.O $srcdir/idem-0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test idem-0(<) may have failed." 1>&2
+ $echo The command "cmp idem-0.O $srcdir/idem-0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s idem-0.E || rm -f idem-0.E
+$xx $srcdir/idem-1.I > idem-1.O 2> idem-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test idem-1(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp idem-1.O $srcdir/idem-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed idem-1(F)"; fi;;
+ 1) $echo "Test idem-1(F) failed: files idem-1.O and $srcdir/idem-1.X differ" 1>&2
+ (diff -c idem-1.O $srcdir/idem-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test idem-1(F) may have failed." 1>&2
+ $echo The command "cmp idem-1.O $srcdir/idem-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s idem-1.E || rm -f idem-1.E
+cat $srcdir/idem-1.I | $xx > idem-1.O 2> idem-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test idem-1(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp idem-1.O $srcdir/idem-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed idem-1(|)"; fi;;
+ 1) $echo "Test idem-1(|) failed: files idem-1.O and $srcdir/idem-1.X differ" 1>&2
+ (diff -c idem-1.O $srcdir/idem-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test idem-1(|) may have failed." 1>&2
+ $echo The command "cmp idem-1.O $srcdir/idem-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s idem-1.E || rm -f idem-1.E
+$xx < $srcdir/idem-1.I > idem-1.O 2> idem-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test idem-1(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp idem-1.O $srcdir/idem-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed idem-1(<)"; fi;;
+ 1) $echo "Test idem-1(<) failed: files idem-1.O and $srcdir/idem-1.X differ" 1>&2
+ (diff -c idem-1.O $srcdir/idem-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test idem-1(<) may have failed." 1>&2
+ $echo The command "cmp idem-1.O $srcdir/idem-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s idem-1.E || rm -f idem-1.E
+$xx $srcdir/idem-2.I > idem-2.O 2> idem-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test idem-2(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp idem-2.O $srcdir/idem-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed idem-2(F)"; fi;;
+ 1) $echo "Test idem-2(F) failed: files idem-2.O and $srcdir/idem-2.X differ" 1>&2
+ (diff -c idem-2.O $srcdir/idem-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test idem-2(F) may have failed." 1>&2
+ $echo The command "cmp idem-2.O $srcdir/idem-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s idem-2.E || rm -f idem-2.E
+cat $srcdir/idem-2.I | $xx > idem-2.O 2> idem-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test idem-2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp idem-2.O $srcdir/idem-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed idem-2(|)"; fi;;
+ 1) $echo "Test idem-2(|) failed: files idem-2.O and $srcdir/idem-2.X differ" 1>&2
+ (diff -c idem-2.O $srcdir/idem-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test idem-2(|) may have failed." 1>&2
+ $echo The command "cmp idem-2.O $srcdir/idem-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s idem-2.E || rm -f idem-2.E
+$xx < $srcdir/idem-2.I > idem-2.O 2> idem-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test idem-2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp idem-2.O $srcdir/idem-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed idem-2(<)"; fi;;
+ 1) $echo "Test idem-2(<) failed: files idem-2.O and $srcdir/idem-2.X differ" 1>&2
+ (diff -c idem-2.O $srcdir/idem-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test idem-2(<) may have failed." 1>&2
+ $echo The command "cmp idem-2.O $srcdir/idem-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s idem-2.E || rm -f idem-2.E
+$xx $srcdir/idem-3.I > idem-3.O 2> idem-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test idem-3(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp idem-3.O $srcdir/idem-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed idem-3(F)"; fi;;
+ 1) $echo "Test idem-3(F) failed: files idem-3.O and $srcdir/idem-3.X differ" 1>&2
+ (diff -c idem-3.O $srcdir/idem-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test idem-3(F) may have failed." 1>&2
+ $echo The command "cmp idem-3.O $srcdir/idem-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s idem-3.E || rm -f idem-3.E
+cat $srcdir/idem-3.I | $xx > idem-3.O 2> idem-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test idem-3(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp idem-3.O $srcdir/idem-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed idem-3(|)"; fi;;
+ 1) $echo "Test idem-3(|) failed: files idem-3.O and $srcdir/idem-3.X differ" 1>&2
+ (diff -c idem-3.O $srcdir/idem-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test idem-3(|) may have failed." 1>&2
+ $echo The command "cmp idem-3.O $srcdir/idem-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s idem-3.E || rm -f idem-3.E
+$xx < $srcdir/idem-3.I > idem-3.O 2> idem-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test idem-3(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp idem-3.O $srcdir/idem-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed idem-3(<)"; fi;;
+ 1) $echo "Test idem-3(<) failed: files idem-3.O and $srcdir/idem-3.X differ" 1>&2
+ (diff -c idem-3.O $srcdir/idem-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test idem-3(<) may have failed." 1>&2
+ $echo The command "cmp idem-3.O $srcdir/idem-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s idem-3.E || rm -f idem-3.E
+$xx $srcdir/basic-0-10.I > basic-0-10.O 2> basic-0-10.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-0-10(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-0-10.O $srcdir/basic-0-10.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-0-10(F)"; fi;;
+ 1) $echo "Test basic-0-10(F) failed: files basic-0-10.O and $srcdir/basic-0-10.X differ" 1>&2
+ (diff -c basic-0-10.O $srcdir/basic-0-10.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-0-10(F) may have failed." 1>&2
+ $echo The command "cmp basic-0-10.O $srcdir/basic-0-10.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-0-10.E || rm -f basic-0-10.E
+cat $srcdir/basic-0-10.I | $xx > basic-0-10.O 2> basic-0-10.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-0-10(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-0-10.O $srcdir/basic-0-10.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-0-10(|)"; fi;;
+ 1) $echo "Test basic-0-10(|) failed: files basic-0-10.O and $srcdir/basic-0-10.X differ" 1>&2
+ (diff -c basic-0-10.O $srcdir/basic-0-10.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-0-10(|) may have failed." 1>&2
+ $echo The command "cmp basic-0-10.O $srcdir/basic-0-10.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-0-10.E || rm -f basic-0-10.E
+$xx < $srcdir/basic-0-10.I > basic-0-10.O 2> basic-0-10.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-0-10(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-0-10.O $srcdir/basic-0-10.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-0-10(<)"; fi;;
+ 1) $echo "Test basic-0-10(<) failed: files basic-0-10.O and $srcdir/basic-0-10.X differ" 1>&2
+ (diff -c basic-0-10.O $srcdir/basic-0-10.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-0-10(<) may have failed." 1>&2
+ $echo The command "cmp basic-0-10.O $srcdir/basic-0-10.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-0-10.E || rm -f basic-0-10.E
+$xx $srcdir/basic-0-09.I > basic-0-09.O 2> basic-0-09.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-0-09(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-0-09.O $srcdir/basic-0-09.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-0-09(F)"; fi;;
+ 1) $echo "Test basic-0-09(F) failed: files basic-0-09.O and $srcdir/basic-0-09.X differ" 1>&2
+ (diff -c basic-0-09.O $srcdir/basic-0-09.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-0-09(F) may have failed." 1>&2
+ $echo The command "cmp basic-0-09.O $srcdir/basic-0-09.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-0-09.E || rm -f basic-0-09.E
+cat $srcdir/basic-0-09.I | $xx > basic-0-09.O 2> basic-0-09.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-0-09(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-0-09.O $srcdir/basic-0-09.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-0-09(|)"; fi;;
+ 1) $echo "Test basic-0-09(|) failed: files basic-0-09.O and $srcdir/basic-0-09.X differ" 1>&2
+ (diff -c basic-0-09.O $srcdir/basic-0-09.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-0-09(|) may have failed." 1>&2
+ $echo The command "cmp basic-0-09.O $srcdir/basic-0-09.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-0-09.E || rm -f basic-0-09.E
+$xx < $srcdir/basic-0-09.I > basic-0-09.O 2> basic-0-09.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-0-09(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-0-09.O $srcdir/basic-0-09.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-0-09(<)"; fi;;
+ 1) $echo "Test basic-0-09(<) failed: files basic-0-09.O and $srcdir/basic-0-09.X differ" 1>&2
+ (diff -c basic-0-09.O $srcdir/basic-0-09.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-0-09(<) may have failed." 1>&2
+ $echo The command "cmp basic-0-09.O $srcdir/basic-0-09.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-0-09.E || rm -f basic-0-09.E
+$xx $srcdir/basic-0-11.I > basic-0-11.O 2> basic-0-11.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-0-11(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-0-11.O $srcdir/basic-0-11.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-0-11(F)"; fi;;
+ 1) $echo "Test basic-0-11(F) failed: files basic-0-11.O and $srcdir/basic-0-11.X differ" 1>&2
+ (diff -c basic-0-11.O $srcdir/basic-0-11.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-0-11(F) may have failed." 1>&2
+ $echo The command "cmp basic-0-11.O $srcdir/basic-0-11.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-0-11.E || rm -f basic-0-11.E
+cat $srcdir/basic-0-11.I | $xx > basic-0-11.O 2> basic-0-11.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-0-11(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-0-11.O $srcdir/basic-0-11.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-0-11(|)"; fi;;
+ 1) $echo "Test basic-0-11(|) failed: files basic-0-11.O and $srcdir/basic-0-11.X differ" 1>&2
+ (diff -c basic-0-11.O $srcdir/basic-0-11.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-0-11(|) may have failed." 1>&2
+ $echo The command "cmp basic-0-11.O $srcdir/basic-0-11.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-0-11.E || rm -f basic-0-11.E
+$xx < $srcdir/basic-0-11.I > basic-0-11.O 2> basic-0-11.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-0-11(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-0-11.O $srcdir/basic-0-11.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-0-11(<)"; fi;;
+ 1) $echo "Test basic-0-11(<) failed: files basic-0-11.O and $srcdir/basic-0-11.X differ" 1>&2
+ (diff -c basic-0-11.O $srcdir/basic-0-11.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-0-11(<) may have failed." 1>&2
+ $echo The command "cmp basic-0-11.O $srcdir/basic-0-11.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-0-11.E || rm -f basic-0-11.E
+$xx -1 $srcdir/obs-0.I > obs-0.O 2> obs-0.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-0(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-0.O $srcdir/obs-0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-0(F)"; fi;;
+ 1) $echo "Test obs-0(F) failed: files obs-0.O and $srcdir/obs-0.X differ" 1>&2
+ (diff -c obs-0.O $srcdir/obs-0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-0(F) may have failed." 1>&2
+ $echo The command "cmp obs-0.O $srcdir/obs-0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-0.E || rm -f obs-0.E
+cat $srcdir/obs-0.I | $xx -1 > obs-0.O 2> obs-0.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-0(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-0.O $srcdir/obs-0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-0(|)"; fi;;
+ 1) $echo "Test obs-0(|) failed: files obs-0.O and $srcdir/obs-0.X differ" 1>&2
+ (diff -c obs-0.O $srcdir/obs-0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-0(|) may have failed." 1>&2
+ $echo The command "cmp obs-0.O $srcdir/obs-0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-0.E || rm -f obs-0.E
+$xx -1 < $srcdir/obs-0.I > obs-0.O 2> obs-0.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-0(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-0.O $srcdir/obs-0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-0(<)"; fi;;
+ 1) $echo "Test obs-0(<) failed: files obs-0.O and $srcdir/obs-0.X differ" 1>&2
+ (diff -c obs-0.O $srcdir/obs-0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-0(<) may have failed." 1>&2
+ $echo The command "cmp obs-0.O $srcdir/obs-0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-0.E || rm -f obs-0.E
+$xx -1c $srcdir/obs-1.I > obs-1.O 2> obs-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-1(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-1.O $srcdir/obs-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-1(F)"; fi;;
+ 1) $echo "Test obs-1(F) failed: files obs-1.O and $srcdir/obs-1.X differ" 1>&2
+ (diff -c obs-1.O $srcdir/obs-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-1(F) may have failed." 1>&2
+ $echo The command "cmp obs-1.O $srcdir/obs-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-1.E || rm -f obs-1.E
+cat $srcdir/obs-1.I | $xx -1c > obs-1.O 2> obs-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-1(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-1.O $srcdir/obs-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-1(|)"; fi;;
+ 1) $echo "Test obs-1(|) failed: files obs-1.O and $srcdir/obs-1.X differ" 1>&2
+ (diff -c obs-1.O $srcdir/obs-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-1(|) may have failed." 1>&2
+ $echo The command "cmp obs-1.O $srcdir/obs-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-1.E || rm -f obs-1.E
+$xx -1c < $srcdir/obs-1.I > obs-1.O 2> obs-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-1(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-1.O $srcdir/obs-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-1(<)"; fi;;
+ 1) $echo "Test obs-1(<) failed: files obs-1.O and $srcdir/obs-1.X differ" 1>&2
+ (diff -c obs-1.O $srcdir/obs-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-1(<) may have failed." 1>&2
+ $echo The command "cmp obs-1.O $srcdir/obs-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-1.E || rm -f obs-1.E
+$xx -1c $srcdir/obs-2.I > obs-2.O 2> obs-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-2(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-2.O $srcdir/obs-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-2(F)"; fi;;
+ 1) $echo "Test obs-2(F) failed: files obs-2.O and $srcdir/obs-2.X differ" 1>&2
+ (diff -c obs-2.O $srcdir/obs-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-2(F) may have failed." 1>&2
+ $echo The command "cmp obs-2.O $srcdir/obs-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-2.E || rm -f obs-2.E
+cat $srcdir/obs-2.I | $xx -1c > obs-2.O 2> obs-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-2.O $srcdir/obs-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-2(|)"; fi;;
+ 1) $echo "Test obs-2(|) failed: files obs-2.O and $srcdir/obs-2.X differ" 1>&2
+ (diff -c obs-2.O $srcdir/obs-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-2(|) may have failed." 1>&2
+ $echo The command "cmp obs-2.O $srcdir/obs-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-2.E || rm -f obs-2.E
+$xx -1c < $srcdir/obs-2.I > obs-2.O 2> obs-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-2.O $srcdir/obs-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-2(<)"; fi;;
+ 1) $echo "Test obs-2(<) failed: files obs-2.O and $srcdir/obs-2.X differ" 1>&2
+ (diff -c obs-2.O $srcdir/obs-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-2(<) may have failed." 1>&2
+ $echo The command "cmp obs-2.O $srcdir/obs-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-2.E || rm -f obs-2.E
+$xx -14c $srcdir/obs-3.I > obs-3.O 2> obs-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-3(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-3.O $srcdir/obs-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-3(F)"; fi;;
+ 1) $echo "Test obs-3(F) failed: files obs-3.O and $srcdir/obs-3.X differ" 1>&2
+ (diff -c obs-3.O $srcdir/obs-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-3(F) may have failed." 1>&2
+ $echo The command "cmp obs-3.O $srcdir/obs-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-3.E || rm -f obs-3.E
+cat $srcdir/obs-3.I | $xx -14c > obs-3.O 2> obs-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-3(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-3.O $srcdir/obs-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-3(|)"; fi;;
+ 1) $echo "Test obs-3(|) failed: files obs-3.O and $srcdir/obs-3.X differ" 1>&2
+ (diff -c obs-3.O $srcdir/obs-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-3(|) may have failed." 1>&2
+ $echo The command "cmp obs-3.O $srcdir/obs-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-3.E || rm -f obs-3.E
+$xx -14c < $srcdir/obs-3.I > obs-3.O 2> obs-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-3(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-3.O $srcdir/obs-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-3(<)"; fi;;
+ 1) $echo "Test obs-3(<) failed: files obs-3.O and $srcdir/obs-3.X differ" 1>&2
+ (diff -c obs-3.O $srcdir/obs-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-3(<) may have failed." 1>&2
+ $echo The command "cmp obs-3.O $srcdir/obs-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-3.E || rm -f obs-3.E
+$xx -2b $srcdir/in > obs-4.O 2> obs-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-4(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-4.O $srcdir/in-1024 > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-4(F)"; fi;;
+ 1) $echo "Test obs-4(F) failed: files obs-4.O and $srcdir/in-1024 differ" 1>&2
+ (diff -c obs-4.O $srcdir/in-1024) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-4(F) may have failed." 1>&2
+ $echo The command "cmp obs-4.O $srcdir/in-1024" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-4.E || rm -f obs-4.E
+cat $srcdir/in | $xx -2b > obs-4.O 2> obs-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-4(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-4.O $srcdir/in-1024 > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-4(|)"; fi;;
+ 1) $echo "Test obs-4(|) failed: files obs-4.O and $srcdir/in-1024 differ" 1>&2
+ (diff -c obs-4.O $srcdir/in-1024) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-4(|) may have failed." 1>&2
+ $echo The command "cmp obs-4.O $srcdir/in-1024" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-4.E || rm -f obs-4.E
+$xx -2b < $srcdir/in > obs-4.O 2> obs-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-4(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-4.O $srcdir/in-1024 > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-4(<)"; fi;;
+ 1) $echo "Test obs-4(<) failed: files obs-4.O and $srcdir/in-1024 differ" 1>&2
+ (diff -c obs-4.O $srcdir/in-1024) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-4(<) may have failed." 1>&2
+ $echo The command "cmp obs-4.O $srcdir/in-1024" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-4.E || rm -f obs-4.E
+$xx -1k $srcdir/in > obs-5.O 2> obs-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-5(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-5.O $srcdir/in-1024 > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-5(F)"; fi;;
+ 1) $echo "Test obs-5(F) failed: files obs-5.O and $srcdir/in-1024 differ" 1>&2
+ (diff -c obs-5.O $srcdir/in-1024) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-5(F) may have failed." 1>&2
+ $echo The command "cmp obs-5.O $srcdir/in-1024" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-5.E || rm -f obs-5.E
+cat $srcdir/in | $xx -1k > obs-5.O 2> obs-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-5(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-5.O $srcdir/in-1024 > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-5(|)"; fi;;
+ 1) $echo "Test obs-5(|) failed: files obs-5.O and $srcdir/in-1024 differ" 1>&2
+ (diff -c obs-5.O $srcdir/in-1024) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-5(|) may have failed." 1>&2
+ $echo The command "cmp obs-5.O $srcdir/in-1024" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-5.E || rm -f obs-5.E
+$xx -1k < $srcdir/in > obs-5.O 2> obs-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-5(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-5.O $srcdir/in-1024 > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-5(<)"; fi;;
+ 1) $echo "Test obs-5(<) failed: files obs-5.O and $srcdir/in-1024 differ" 1>&2
+ (diff -c obs-5.O $srcdir/in-1024) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-5(<) may have failed." 1>&2
+ $echo The command "cmp obs-5.O $srcdir/in-1024" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-5.E || rm -f obs-5.E
+$xx -n 2048m $srcdir/fail-1.I > fail-1.O 2> fail-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test fail-1(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp fail-1.O $srcdir/fail-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed fail-1(F)"; fi;;
+ 1) $echo "Test fail-1(F) failed: files fail-1.O and $srcdir/fail-1.X differ" 1>&2
+ (diff -c fail-1.O $srcdir/fail-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test fail-1(F) may have failed." 1>&2
+ $echo The command "cmp fail-1.O $srcdir/fail-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s fail-1.E || rm -f fail-1.E
+cat $srcdir/fail-1.I | $xx -n 2048m > fail-1.O 2> fail-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test fail-1(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp fail-1.O $srcdir/fail-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed fail-1(|)"; fi;;
+ 1) $echo "Test fail-1(|) failed: files fail-1.O and $srcdir/fail-1.X differ" 1>&2
+ (diff -c fail-1.O $srcdir/fail-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test fail-1(|) may have failed." 1>&2
+ $echo The command "cmp fail-1.O $srcdir/fail-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s fail-1.E || rm -f fail-1.E
+$xx -n 2048m < $srcdir/fail-1.I > fail-1.O 2> fail-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test fail-1(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp fail-1.O $srcdir/fail-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed fail-1(<)"; fi;;
+ 1) $echo "Test fail-1(<) failed: files fail-1.O and $srcdir/fail-1.X differ" 1>&2
+ (diff -c fail-1.O $srcdir/fail-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test fail-1(<) may have failed." 1>&2
+ $echo The command "cmp fail-1.O $srcdir/fail-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s fail-1.E || rm -f fail-1.E
+$xx $srcdir/null-1.I > null-1.O 2> null-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test null-1(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp null-1.O $srcdir/null-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed null-1(F)"; fi;;
+ 1) $echo "Test null-1(F) failed: files null-1.O and $srcdir/null-1.X differ" 1>&2
+ (diff -c null-1.O $srcdir/null-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test null-1(F) may have failed." 1>&2
+ $echo The command "cmp null-1.O $srcdir/null-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s null-1.E || rm -f null-1.E
+cat $srcdir/null-1.I | $xx > null-1.O 2> null-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test null-1(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp null-1.O $srcdir/null-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed null-1(|)"; fi;;
+ 1) $echo "Test null-1(|) failed: files null-1.O and $srcdir/null-1.X differ" 1>&2
+ (diff -c null-1.O $srcdir/null-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test null-1(|) may have failed." 1>&2
+ $echo The command "cmp null-1.O $srcdir/null-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s null-1.E || rm -f null-1.E
+$xx < $srcdir/null-1.I > null-1.O 2> null-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test null-1(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp null-1.O $srcdir/null-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed null-1(<)"; fi;;
+ 1) $echo "Test null-1(<) failed: files null-1.O and $srcdir/null-1.X differ" 1>&2
+ (diff -c null-1.O $srcdir/null-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test null-1(<) may have failed." 1>&2
+ $echo The command "cmp null-1.O $srcdir/null-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s null-1.E || rm -f null-1.E
+$xx -08 $srcdir/no-oct-1.I > no-oct-1.O 2> no-oct-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test no-oct-1(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp no-oct-1.O $srcdir/no-oct-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed no-oct-1(F)"; fi;;
+ 1) $echo "Test no-oct-1(F) failed: files no-oct-1.O and $srcdir/no-oct-1.X differ" 1>&2
+ (diff -c no-oct-1.O $srcdir/no-oct-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test no-oct-1(F) may have failed." 1>&2
+ $echo The command "cmp no-oct-1.O $srcdir/no-oct-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s no-oct-1.E || rm -f no-oct-1.E
+cat $srcdir/no-oct-1.I | $xx -08 > no-oct-1.O 2> no-oct-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test no-oct-1(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp no-oct-1.O $srcdir/no-oct-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed no-oct-1(|)"; fi;;
+ 1) $echo "Test no-oct-1(|) failed: files no-oct-1.O and $srcdir/no-oct-1.X differ" 1>&2
+ (diff -c no-oct-1.O $srcdir/no-oct-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test no-oct-1(|) may have failed." 1>&2
+ $echo The command "cmp no-oct-1.O $srcdir/no-oct-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s no-oct-1.E || rm -f no-oct-1.E
+$xx -08 < $srcdir/no-oct-1.I > no-oct-1.O 2> no-oct-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test no-oct-1(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp no-oct-1.O $srcdir/no-oct-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed no-oct-1(<)"; fi;;
+ 1) $echo "Test no-oct-1(<) failed: files no-oct-1.O and $srcdir/no-oct-1.X differ" 1>&2
+ (diff -c no-oct-1.O $srcdir/no-oct-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test no-oct-1(<) may have failed." 1>&2
+ $echo The command "cmp no-oct-1.O $srcdir/no-oct-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s no-oct-1.E || rm -f no-oct-1.E
+$xx -010 $srcdir/no-oct-2.I > no-oct-2.O 2> no-oct-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test no-oct-2(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp no-oct-2.O $srcdir/no-oct-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed no-oct-2(F)"; fi;;
+ 1) $echo "Test no-oct-2(F) failed: files no-oct-2.O and $srcdir/no-oct-2.X differ" 1>&2
+ (diff -c no-oct-2.O $srcdir/no-oct-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test no-oct-2(F) may have failed." 1>&2
+ $echo The command "cmp no-oct-2.O $srcdir/no-oct-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s no-oct-2.E || rm -f no-oct-2.E
+cat $srcdir/no-oct-2.I | $xx -010 > no-oct-2.O 2> no-oct-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test no-oct-2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp no-oct-2.O $srcdir/no-oct-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed no-oct-2(|)"; fi;;
+ 1) $echo "Test no-oct-2(|) failed: files no-oct-2.O and $srcdir/no-oct-2.X differ" 1>&2
+ (diff -c no-oct-2.O $srcdir/no-oct-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test no-oct-2(|) may have failed." 1>&2
+ $echo The command "cmp no-oct-2.O $srcdir/no-oct-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s no-oct-2.E || rm -f no-oct-2.E
+$xx -010 < $srcdir/no-oct-2.I > no-oct-2.O 2> no-oct-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test no-oct-2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp no-oct-2.O $srcdir/no-oct-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed no-oct-2(<)"; fi;;
+ 1) $echo "Test no-oct-2(<) failed: files no-oct-2.O and $srcdir/no-oct-2.X differ" 1>&2
+ (diff -c no-oct-2.O $srcdir/no-oct-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test no-oct-2(<) may have failed." 1>&2
+ $echo The command "cmp no-oct-2.O $srcdir/no-oct-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s no-oct-2.E || rm -f no-oct-2.E
+$xx -n 08 $srcdir/no-oct-3.I > no-oct-3.O 2> no-oct-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test no-oct-3(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp no-oct-3.O $srcdir/no-oct-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed no-oct-3(F)"; fi;;
+ 1) $echo "Test no-oct-3(F) failed: files no-oct-3.O and $srcdir/no-oct-3.X differ" 1>&2
+ (diff -c no-oct-3.O $srcdir/no-oct-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test no-oct-3(F) may have failed." 1>&2
+ $echo The command "cmp no-oct-3.O $srcdir/no-oct-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s no-oct-3.E || rm -f no-oct-3.E
+cat $srcdir/no-oct-3.I | $xx -n 08 > no-oct-3.O 2> no-oct-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test no-oct-3(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp no-oct-3.O $srcdir/no-oct-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed no-oct-3(|)"; fi;;
+ 1) $echo "Test no-oct-3(|) failed: files no-oct-3.O and $srcdir/no-oct-3.X differ" 1>&2
+ (diff -c no-oct-3.O $srcdir/no-oct-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test no-oct-3(|) may have failed." 1>&2
+ $echo The command "cmp no-oct-3.O $srcdir/no-oct-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s no-oct-3.E || rm -f no-oct-3.E
+$xx -n 08 < $srcdir/no-oct-3.I > no-oct-3.O 2> no-oct-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test no-oct-3(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp no-oct-3.O $srcdir/no-oct-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed no-oct-3(<)"; fi;;
+ 1) $echo "Test no-oct-3(<) failed: files no-oct-3.O and $srcdir/no-oct-3.X differ" 1>&2
+ (diff -c no-oct-3.O $srcdir/no-oct-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test no-oct-3(<) may have failed." 1>&2
+ $echo The command "cmp no-oct-3.O $srcdir/no-oct-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s no-oct-3.E || rm -f no-oct-3.E
+$xx -c 08 $srcdir/no-oct-4.I > no-oct-4.O 2> no-oct-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test no-oct-4(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp no-oct-4.O $srcdir/no-oct-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed no-oct-4(F)"; fi;;
+ 1) $echo "Test no-oct-4(F) failed: files no-oct-4.O and $srcdir/no-oct-4.X differ" 1>&2
+ (diff -c no-oct-4.O $srcdir/no-oct-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test no-oct-4(F) may have failed." 1>&2
+ $echo The command "cmp no-oct-4.O $srcdir/no-oct-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s no-oct-4.E || rm -f no-oct-4.E
+cat $srcdir/no-oct-4.I | $xx -c 08 > no-oct-4.O 2> no-oct-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test no-oct-4(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp no-oct-4.O $srcdir/no-oct-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed no-oct-4(|)"; fi;;
+ 1) $echo "Test no-oct-4(|) failed: files no-oct-4.O and $srcdir/no-oct-4.X differ" 1>&2
+ (diff -c no-oct-4.O $srcdir/no-oct-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test no-oct-4(|) may have failed." 1>&2
+ $echo The command "cmp no-oct-4.O $srcdir/no-oct-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s no-oct-4.E || rm -f no-oct-4.E
+$xx -c 08 < $srcdir/no-oct-4.I > no-oct-4.O 2> no-oct-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test no-oct-4(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp no-oct-4.O $srcdir/no-oct-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed no-oct-4(<)"; fi;;
+ 1) $echo "Test no-oct-4(<) failed: files no-oct-4.O and $srcdir/no-oct-4.X differ" 1>&2
+ (diff -c no-oct-4.O $srcdir/no-oct-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test no-oct-4(<) may have failed." 1>&2
+ $echo The command "cmp no-oct-4.O $srcdir/no-oct-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s no-oct-4.E || rm -f no-oct-4.E
+$xx -n 1 $srcdir/posix-0.I > posix-0.O 2> posix-0.E
+code=$?
+if test $code != 0; then
+ $echo "Test posix-0(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp posix-0.O $srcdir/posix-0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed posix-0(F)"; fi;;
+ 1) $echo "Test posix-0(F) failed: files posix-0.O and $srcdir/posix-0.X differ" 1>&2
+ (diff -c posix-0.O $srcdir/posix-0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test posix-0(F) may have failed." 1>&2
+ $echo The command "cmp posix-0.O $srcdir/posix-0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s posix-0.E || rm -f posix-0.E
+cat $srcdir/posix-0.I | $xx -n 1 > posix-0.O 2> posix-0.E
+code=$?
+if test $code != 0; then
+ $echo "Test posix-0(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp posix-0.O $srcdir/posix-0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed posix-0(|)"; fi;;
+ 1) $echo "Test posix-0(|) failed: files posix-0.O and $srcdir/posix-0.X differ" 1>&2
+ (diff -c posix-0.O $srcdir/posix-0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test posix-0(|) may have failed." 1>&2
+ $echo The command "cmp posix-0.O $srcdir/posix-0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s posix-0.E || rm -f posix-0.E
+$xx -n 1 < $srcdir/posix-0.I > posix-0.O 2> posix-0.E
+code=$?
+if test $code != 0; then
+ $echo "Test posix-0(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp posix-0.O $srcdir/posix-0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed posix-0(<)"; fi;;
+ 1) $echo "Test posix-0(<) failed: files posix-0.O and $srcdir/posix-0.X differ" 1>&2
+ (diff -c posix-0.O $srcdir/posix-0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test posix-0(<) may have failed." 1>&2
+ $echo The command "cmp posix-0.O $srcdir/posix-0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s posix-0.E || rm -f posix-0.E
+$xx -c 1 $srcdir/posix-1.I > posix-1.O 2> posix-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test posix-1(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp posix-1.O $srcdir/posix-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed posix-1(F)"; fi;;
+ 1) $echo "Test posix-1(F) failed: files posix-1.O and $srcdir/posix-1.X differ" 1>&2
+ (diff -c posix-1.O $srcdir/posix-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test posix-1(F) may have failed." 1>&2
+ $echo The command "cmp posix-1.O $srcdir/posix-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s posix-1.E || rm -f posix-1.E
+cat $srcdir/posix-1.I | $xx -c 1 > posix-1.O 2> posix-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test posix-1(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp posix-1.O $srcdir/posix-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed posix-1(|)"; fi;;
+ 1) $echo "Test posix-1(|) failed: files posix-1.O and $srcdir/posix-1.X differ" 1>&2
+ (diff -c posix-1.O $srcdir/posix-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test posix-1(|) may have failed." 1>&2
+ $echo The command "cmp posix-1.O $srcdir/posix-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s posix-1.E || rm -f posix-1.E
+$xx -c 1 < $srcdir/posix-1.I > posix-1.O 2> posix-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test posix-1(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp posix-1.O $srcdir/posix-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed posix-1(<)"; fi;;
+ 1) $echo "Test posix-1(<) failed: files posix-1.O and $srcdir/posix-1.X differ" 1>&2
+ (diff -c posix-1.O $srcdir/posix-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test posix-1(<) may have failed." 1>&2
+ $echo The command "cmp posix-1.O $srcdir/posix-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s posix-1.E || rm -f posix-1.E
+$xx -c 1 $srcdir/posix-2.I > posix-2.O 2> posix-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test posix-2(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp posix-2.O $srcdir/posix-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed posix-2(F)"; fi;;
+ 1) $echo "Test posix-2(F) failed: files posix-2.O and $srcdir/posix-2.X differ" 1>&2
+ (diff -c posix-2.O $srcdir/posix-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test posix-2(F) may have failed." 1>&2
+ $echo The command "cmp posix-2.O $srcdir/posix-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s posix-2.E || rm -f posix-2.E
+cat $srcdir/posix-2.I | $xx -c 1 > posix-2.O 2> posix-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test posix-2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp posix-2.O $srcdir/posix-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed posix-2(|)"; fi;;
+ 1) $echo "Test posix-2(|) failed: files posix-2.O and $srcdir/posix-2.X differ" 1>&2
+ (diff -c posix-2.O $srcdir/posix-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test posix-2(|) may have failed." 1>&2
+ $echo The command "cmp posix-2.O $srcdir/posix-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s posix-2.E || rm -f posix-2.E
+$xx -c 1 < $srcdir/posix-2.I > posix-2.O 2> posix-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test posix-2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp posix-2.O $srcdir/posix-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed posix-2(<)"; fi;;
+ 1) $echo "Test posix-2(<) failed: files posix-2.O and $srcdir/posix-2.X differ" 1>&2
+ (diff -c posix-2.O $srcdir/posix-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test posix-2(<) may have failed." 1>&2
+ $echo The command "cmp posix-2.O $srcdir/posix-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s posix-2.E || rm -f posix-2.E
+$xx -c 14 $srcdir/posix-3.I > posix-3.O 2> posix-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test posix-3(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp posix-3.O $srcdir/posix-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed posix-3(F)"; fi;;
+ 1) $echo "Test posix-3(F) failed: files posix-3.O and $srcdir/posix-3.X differ" 1>&2
+ (diff -c posix-3.O $srcdir/posix-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test posix-3(F) may have failed." 1>&2
+ $echo The command "cmp posix-3.O $srcdir/posix-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s posix-3.E || rm -f posix-3.E
+cat $srcdir/posix-3.I | $xx -c 14 > posix-3.O 2> posix-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test posix-3(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp posix-3.O $srcdir/posix-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed posix-3(|)"; fi;;
+ 1) $echo "Test posix-3(|) failed: files posix-3.O and $srcdir/posix-3.X differ" 1>&2
+ (diff -c posix-3.O $srcdir/posix-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test posix-3(|) may have failed." 1>&2
+ $echo The command "cmp posix-3.O $srcdir/posix-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s posix-3.E || rm -f posix-3.E
+$xx -c 14 < $srcdir/posix-3.I > posix-3.O 2> posix-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test posix-3(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp posix-3.O $srcdir/posix-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed posix-3(<)"; fi;;
+ 1) $echo "Test posix-3(<) failed: files posix-3.O and $srcdir/posix-3.X differ" 1>&2
+ (diff -c posix-3.O $srcdir/posix-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test posix-3(<) may have failed." 1>&2
+ $echo The command "cmp posix-3.O $srcdir/posix-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s posix-3.E || rm -f posix-3.E
+$xx -c 2b $srcdir/in > posix-4.O 2> posix-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test posix-4(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp posix-4.O $srcdir/in-1024 > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed posix-4(F)"; fi;;
+ 1) $echo "Test posix-4(F) failed: files posix-4.O and $srcdir/in-1024 differ" 1>&2
+ (diff -c posix-4.O $srcdir/in-1024) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test posix-4(F) may have failed." 1>&2
+ $echo The command "cmp posix-4.O $srcdir/in-1024" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s posix-4.E || rm -f posix-4.E
+cat $srcdir/in | $xx -c 2b > posix-4.O 2> posix-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test posix-4(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp posix-4.O $srcdir/in-1024 > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed posix-4(|)"; fi;;
+ 1) $echo "Test posix-4(|) failed: files posix-4.O and $srcdir/in-1024 differ" 1>&2
+ (diff -c posix-4.O $srcdir/in-1024) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test posix-4(|) may have failed." 1>&2
+ $echo The command "cmp posix-4.O $srcdir/in-1024" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s posix-4.E || rm -f posix-4.E
+$xx -c 2b < $srcdir/in > posix-4.O 2> posix-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test posix-4(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp posix-4.O $srcdir/in-1024 > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed posix-4(<)"; fi;;
+ 1) $echo "Test posix-4(<) failed: files posix-4.O and $srcdir/in-1024 differ" 1>&2
+ (diff -c posix-4.O $srcdir/in-1024) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test posix-4(<) may have failed." 1>&2
+ $echo The command "cmp posix-4.O $srcdir/in-1024" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s posix-4.E || rm -f posix-4.E
+$xx -c 1k $srcdir/in > posix-5.O 2> posix-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test posix-5(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp posix-5.O $srcdir/in-1024 > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed posix-5(F)"; fi;;
+ 1) $echo "Test posix-5(F) failed: files posix-5.O and $srcdir/in-1024 differ" 1>&2
+ (diff -c posix-5.O $srcdir/in-1024) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test posix-5(F) may have failed." 1>&2
+ $echo The command "cmp posix-5.O $srcdir/in-1024" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s posix-5.E || rm -f posix-5.E
+cat $srcdir/in | $xx -c 1k > posix-5.O 2> posix-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test posix-5(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp posix-5.O $srcdir/in-1024 > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed posix-5(|)"; fi;;
+ 1) $echo "Test posix-5(|) failed: files posix-5.O and $srcdir/in-1024 differ" 1>&2
+ (diff -c posix-5.O $srcdir/in-1024) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test posix-5(|) may have failed." 1>&2
+ $echo The command "cmp posix-5.O $srcdir/in-1024" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s posix-5.E || rm -f posix-5.E
+$xx -c 1k < $srcdir/in > posix-5.O 2> posix-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test posix-5(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp posix-5.O $srcdir/in-1024 > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed posix-5(<)"; fi;;
+ 1) $echo "Test posix-5(<) failed: files posix-5.O and $srcdir/in-1024 differ" 1>&2
+ (diff -c posix-5.O $srcdir/in-1024) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test posix-5(<) may have failed." 1>&2
+ $echo The command "cmp posix-5.O $srcdir/in-1024" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s posix-5.E || rm -f posix-5.E
+if test $errors = 0; then
+ $echo Passed all 75 tests. 1>&2
+else
+ $echo Failed $errors tests. 1>&2
+fi
+test $errors = 0 || errors=1
+exit $errors
diff --git a/tests/head/idem-0.I b/tests/head/idem-0.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/head/idem-0.I
diff --git a/tests/head/idem-0.X b/tests/head/idem-0.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/head/idem-0.X
diff --git a/tests/head/idem-1.I b/tests/head/idem-1.I
new file mode 100644
index 0000000..2e65efe
--- /dev/null
+++ b/tests/head/idem-1.I
@@ -0,0 +1 @@
+a \ No newline at end of file
diff --git a/tests/head/idem-1.X b/tests/head/idem-1.X
new file mode 100644
index 0000000..2e65efe
--- /dev/null
+++ b/tests/head/idem-1.X
@@ -0,0 +1 @@
+a \ No newline at end of file
diff --git a/tests/head/idem-2.I b/tests/head/idem-2.I
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/tests/head/idem-2.I
@@ -0,0 +1 @@
+
diff --git a/tests/head/idem-2.X b/tests/head/idem-2.X
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/tests/head/idem-2.X
@@ -0,0 +1 @@
+
diff --git a/tests/head/idem-3.I b/tests/head/idem-3.I
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/tests/head/idem-3.I
@@ -0,0 +1 @@
+a
diff --git a/tests/head/idem-3.X b/tests/head/idem-3.X
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/tests/head/idem-3.X
@@ -0,0 +1 @@
+a
diff --git a/tests/head/in b/tests/head/in
new file mode 100644
index 0000000..d5b2b75
--- /dev/null
+++ b/tests/head/in
@@ -0,0 +1,15 @@
+8ca240627bbeaa9066aa9ba0ce6de080db8d19a6e26c423663c7a6e0185207841a467de16d80db
+c5a4a1ee35a8b13d4cc26cb47e05686db78cc71bc8c1e0769245988dd58d03974600b59872857c
+934cd484c093949db0676a3ac679a8bae4d41256959874c02ab792cb42ca33de72469a69d521aa
+060877520abad96725a85ace28072cd566b5b189e58331288d92e601c393ddad1eb60cddc46bb7
+4b7666dd9b8c36688cd3d0e6c4b091c5c6926b4468b19a40018d655d1840ed11da6a360bdc0e3c
+75355ad402c13a9c49228e11980eadb65a32070c1716b07074422534029bc6941981e65ae774e7
+6762616d66391aa2be539d2c2853e324429859ca998410ee54cc1521001804e5811bde40439d29
+bc8a304a58b823a69d1a2d5351993d1642b17398c031c8b7e78b451735e6326bb949141d3d5736
+2b03ad03c1ab427076be6e785722a18cc6846248e6b35483ec3aa85b2ae22bbb6e2919686a5a95
+a71785d1e1e12e1412cb14334dc7a591b83ed785474132993e69377ac4c1747a0db2a8cb1811ac
+722e7aa3e5c3d21c885bc6eeb2b0eb502476abe2d77691ce42587dd0934b44b568d2b113e12a39
+eb1853ec3a5c9ed7321b127422da35451a2e289c09ed2b19857922099275a0dd14ba2487180a85
+8d5e9796ad1c5c44d3a910a7623363718684b667a48a26e3ad85b008ce5a20e94ebe57da18edc6
+b661009a8a113ed6a922840da8d51c13ca4973b9a76dc05c142496c3083adcd8ba24686b471a77
+77ca4bb8
diff --git a/tests/head/in-1024 b/tests/head/in-1024
new file mode 100644
index 0000000..448aeaa
--- /dev/null
+++ b/tests/head/in-1024
@@ -0,0 +1,13 @@
+8ca240627bbeaa9066aa9ba0ce6de080db8d19a6e26c423663c7a6e0185207841a467de16d80db
+c5a4a1ee35a8b13d4cc26cb47e05686db78cc71bc8c1e0769245988dd58d03974600b59872857c
+934cd484c093949db0676a3ac679a8bae4d41256959874c02ab792cb42ca33de72469a69d521aa
+060877520abad96725a85ace28072cd566b5b189e58331288d92e601c393ddad1eb60cddc46bb7
+4b7666dd9b8c36688cd3d0e6c4b091c5c6926b4468b19a40018d655d1840ed11da6a360bdc0e3c
+75355ad402c13a9c49228e11980eadb65a32070c1716b07074422534029bc6941981e65ae774e7
+6762616d66391aa2be539d2c2853e324429859ca998410ee54cc1521001804e5811bde40439d29
+bc8a304a58b823a69d1a2d5351993d1642b17398c031c8b7e78b451735e6326bb949141d3d5736
+2b03ad03c1ab427076be6e785722a18cc6846248e6b35483ec3aa85b2ae22bbb6e2919686a5a95
+a71785d1e1e12e1412cb14334dc7a591b83ed785474132993e69377ac4c1747a0db2a8cb1811ac
+722e7aa3e5c3d21c885bc6eeb2b0eb502476abe2d77691ce42587dd0934b44b568d2b113e12a39
+eb1853ec3a5c9ed7321b127422da35451a2e289c09ed2b19857922099275a0dd14ba2487180a85
+8d5e9796ad1c5c44d3a910a7623363718684b667a48a26e3ad85b008ce5a20e94ebe57da18ed \ No newline at end of file
diff --git a/tests/head/no-oct-1.I b/tests/head/no-oct-1.I
new file mode 100644
index 0000000..1901ba9
--- /dev/null
+++ b/tests/head/no-oct-1.I
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/head/no-oct-1.X b/tests/head/no-oct-1.X
new file mode 100644
index 0000000..12a6f48
--- /dev/null
+++ b/tests/head/no-oct-1.X
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/tests/head/no-oct-2.I b/tests/head/no-oct-2.I
new file mode 100644
index 0000000..1901ba9
--- /dev/null
+++ b/tests/head/no-oct-2.I
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/head/no-oct-2.X b/tests/head/no-oct-2.X
new file mode 100644
index 0000000..584ba87
--- /dev/null
+++ b/tests/head/no-oct-2.X
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/head/no-oct-3.I b/tests/head/no-oct-3.I
new file mode 100644
index 0000000..1901ba9
--- /dev/null
+++ b/tests/head/no-oct-3.I
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/head/no-oct-3.X b/tests/head/no-oct-3.X
new file mode 100644
index 0000000..12a6f48
--- /dev/null
+++ b/tests/head/no-oct-3.X
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/tests/head/no-oct-4.I b/tests/head/no-oct-4.I
new file mode 100644
index 0000000..1901ba9
--- /dev/null
+++ b/tests/head/no-oct-4.I
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/head/no-oct-4.X b/tests/head/no-oct-4.X
new file mode 100644
index 0000000..12a6f48
--- /dev/null
+++ b/tests/head/no-oct-4.X
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/tests/head/null-1.I b/tests/head/null-1.I
new file mode 100644
index 0000000..1574677
--- /dev/null
+++ b/tests/head/null-1.I
Binary files differ
diff --git a/tests/head/null-1.X b/tests/head/null-1.X
new file mode 100644
index 0000000..1574677
--- /dev/null
+++ b/tests/head/null-1.X
Binary files differ
diff --git a/tests/head/obs-0.I b/tests/head/obs-0.I
new file mode 100644
index 0000000..1191247
--- /dev/null
+++ b/tests/head/obs-0.I
@@ -0,0 +1,2 @@
+1
+2
diff --git a/tests/head/obs-0.X b/tests/head/obs-0.X
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/head/obs-0.X
@@ -0,0 +1 @@
+1
diff --git a/tests/head/obs-1.I b/tests/head/obs-1.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/head/obs-1.I
diff --git a/tests/head/obs-1.X b/tests/head/obs-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/head/obs-1.X
diff --git a/tests/head/obs-2.I b/tests/head/obs-2.I
new file mode 100644
index 0000000..3cacc0b
--- /dev/null
+++ b/tests/head/obs-2.I
@@ -0,0 +1 @@
+12 \ No newline at end of file
diff --git a/tests/head/obs-2.X b/tests/head/obs-2.X
new file mode 100644
index 0000000..56a6051
--- /dev/null
+++ b/tests/head/obs-2.X
@@ -0,0 +1 @@
+1 \ No newline at end of file
diff --git a/tests/head/obs-3.I b/tests/head/obs-3.I
new file mode 100644
index 0000000..d44e770
--- /dev/null
+++ b/tests/head/obs-3.I
@@ -0,0 +1 @@
+1234567890abcdefg \ No newline at end of file
diff --git a/tests/head/obs-3.X b/tests/head/obs-3.X
new file mode 100644
index 0000000..41f3900
--- /dev/null
+++ b/tests/head/obs-3.X
@@ -0,0 +1 @@
+1234567890abcd \ No newline at end of file
diff --git a/tests/head/posix-0.I b/tests/head/posix-0.I
new file mode 100644
index 0000000..1191247
--- /dev/null
+++ b/tests/head/posix-0.I
@@ -0,0 +1,2 @@
+1
+2
diff --git a/tests/head/posix-0.X b/tests/head/posix-0.X
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/head/posix-0.X
@@ -0,0 +1 @@
+1
diff --git a/tests/head/posix-1.I b/tests/head/posix-1.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/head/posix-1.I
diff --git a/tests/head/posix-1.X b/tests/head/posix-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/head/posix-1.X
diff --git a/tests/head/posix-2.I b/tests/head/posix-2.I
new file mode 100644
index 0000000..3cacc0b
--- /dev/null
+++ b/tests/head/posix-2.I
@@ -0,0 +1 @@
+12 \ No newline at end of file
diff --git a/tests/head/posix-2.X b/tests/head/posix-2.X
new file mode 100644
index 0000000..56a6051
--- /dev/null
+++ b/tests/head/posix-2.X
@@ -0,0 +1 @@
+1 \ No newline at end of file
diff --git a/tests/head/posix-3.I b/tests/head/posix-3.I
new file mode 100644
index 0000000..d44e770
--- /dev/null
+++ b/tests/head/posix-3.I
@@ -0,0 +1 @@
+1234567890abcdefg \ No newline at end of file
diff --git a/tests/head/posix-3.X b/tests/head/posix-3.X
new file mode 100644
index 0000000..41f3900
--- /dev/null
+++ b/tests/head/posix-3.X
@@ -0,0 +1 @@
+1234567890abcd \ No newline at end of file
diff --git a/tests/help-version b/tests/help-version
new file mode 100755
index 0000000..c17cc49
--- /dev/null
+++ b/tests/help-version
@@ -0,0 +1,222 @@
+#! /bin/sh
+# Make sure all these programs work properly
+# when invoked with --help or --version.
+
+# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+test "$VERBOSE" = yes && set -x
+
+# Ensure that $SHELL is set to *some* value and exported.
+# This is required for dircolors, which would fail e.g., when
+# invoked via debuild (which removes SHELL from the environment).
+test "x$SHELL" = x && SHELL=/bin/sh
+export SHELL
+
+. $srcdir/envvar-check
+
+expected_failure_status_nohup=127
+expected_failure_status_printenv=2
+expected_failure_status_tty=3
+expected_failure_status_sort=2
+expected_failure_status_expr=3
+expected_failure_status_lbracket=2
+expected_failure_status_dir=2
+expected_failure_status_ls=2
+expected_failure_status_vdir=2
+
+case "$all_programs" in
+ *groups*)
+ if test -w /dev/full && test -c /dev/full \
+ && echo > /dev/full 2>/dev/null; then
+ cat 1>&2 <<\EOF
+************************************************
+WARNING: On this system, the built-in echo function of /bin/sh
+does not report failure when writing to a full device.
+To demonstrate, run this command:
+
+ /bin/sh -c 'echo hello > /dev/full; echo status=$?'
+
+Notice that the failing echo leaves its exit status set to zero
+and does not produce a diagnostic.
+
+That bug in /bin/sh would cause the test of the groups
+scripts to fail, so it is being removed from the list of
+programs checked by this test.
+************************************************
+EOF
+ all_programs=`echo $all_programs | tr ' ' '\n' | grep -v '^groups$'`
+ fi
+ ;;
+esac
+
+fail=0
+
+for lang in C fr da; do
+ for i in $all_programs; do
+
+ # Skip `test'; it doesn't accept --help or --version.
+ test $i = test && continue;
+
+ # false fails even when invoked with --help or --version.
+ if test $i = false; then
+ env LC_MESSAGES=$lang ../src/$i --help >/dev/null && fail=1
+ env LC_MESSAGES=$lang ../src/$i --version >/dev/null && fail=1
+ continue
+ fi
+
+ # The just-built install executable is always named `ginstall'.
+ test $i = install && i=ginstall
+
+ # Make sure they exit successfully, under normal conditions.
+ ../src/$i --help > h-$i || fail=1
+ ../src/$i --version >/dev/null || fail=1
+
+ # Make sure they mention the bug-reporting address in --help output.
+ grep "$PACKAGE_BUGREPORT" h-$i > /dev/null || fail=1
+ rm -f h-$i
+
+ # Make sure they fail upon `disk full' error.
+ if test -w /dev/full && test -c /dev/full; then
+ ../src/$i --help >/dev/full 2>/dev/null && fail=1
+ ../src/$i --version >/dev/full 2>/dev/null && fail=1
+ status=$?
+ test $i = [ && prog=lbracket || prog=$i
+ eval "expected=\$expected_failure_status_$prog"
+ test x$expected = x && expected=1
+ if test $status = $expected; then
+ : # ok
+ else
+ fail=1
+ echo "*** $i: bad exit status \`$status' (expected $expected)," 1>&2
+ echo " with --help or --version output redirected to /dev/full" 1>&2
+ fi
+ fi
+ done
+done
+
+tmp=tmp-$$
+tmp_in=in-$$
+tmp_in2=in2-$$
+tmp_dir=dir-$$
+tmp_out=out-$$
+mkdir $tmp || fail=1
+cd $tmp || fail=1
+
+comm_args="$tmp_in $tmp_in"
+csplit_args="$tmp_in //"
+cut_args='-f 1'
+join_args="$tmp_in $tmp_in"
+tr_args='a a'
+
+chmod_args="a+x $tmp_in"
+# Punt on these.
+chgrp_args=--version
+chown_args=--version
+mkfifo_args=--version
+mknod_args=--version
+# Punt on uptime, since it fails (e.g., failing to get boot time)
+# on some systems, and we shouldn't let that stop `make check'.
+uptime_args=--version
+
+cmp_args="$tmp_in $tmp_in2"
+
+# Tell dd not to print the line with transfer rate and total.
+# The transfer rate would vary between runs.
+dd_args=status=noxfer
+
+diff_args="$tmp_in $tmp_in2"
+sdiff_args="$tmp_in $tmp_in2"
+diff3_args="$tmp_in $tmp_in2 $tmp_in2"
+cp_args="$tmp_in $tmp_in2"
+ln_args="$tmp_in ln-target"
+ginstall_args="$tmp_in $tmp_in2"
+mv_args="$tmp_in $tmp_in2"
+mkdir_args=$tmp_dir/subdir
+rmdir_args=$tmp_dir
+rm_args=$tmp_in
+shred_args=$tmp_in
+touch_args=$tmp_in2
+
+basename_args=$tmp_in
+dirname_args=$tmp_in
+expr_args=foo
+
+# Punt, in case GNU `id' hasn't been installed yet.
+groups_args=--version
+
+pathchk_args=$tmp_in
+yes_args=--version
+logname_args=--version
+nohup_args=--version
+printf_args=foo
+seq_args=10
+sleep_args=0
+su_args=--version
+
+# I'd rather not run sync, since it spins up disks that I've
+# deliberately caused to spin down (but not unmounted).
+sync_args=--version
+
+test_args=foo
+
+# This is necessary in the unusual event that there is
+# no valid entry in /etc/mtab.
+df_args=/
+
+# This is necessary in the unusual event that getpwuid (getuid ()) fails.
+id_args=-u
+
+sleep 10m &
+kill_args=$!
+
+link_args="$tmp_in link-target"
+unlink_args=$tmp_in
+
+ln -s . slink
+readlink_args=slink
+
+stat_args=$tmp_in
+unlink_args=$tmp_in
+lbracket_args=": ]"
+
+for i in $all_programs; do
+ # Skip these.
+ case $i in chroot|stty|tty|false) continue;; esac
+
+ rm -rf $tmp_in $tmp_in2 $tmp_dir $tmp_out
+ echo > $tmp_in
+ echo > $tmp_in2
+ mkdir $tmp_dir
+ # echo ================== $i
+ test $i = [ && prog=lbracket || prog=$i
+ eval "args=\$${prog}_args"
+ if ../../src/$i $args < $tmp_in > $tmp_out; then
+ : # ok
+ else
+ echo FAIL: $i
+ fail=1
+ fi
+ rm -rf $tmp_in $tmp_in2 $tmp_out $tmp_dir
+done
+
+# FIXME: trap
+cd ..
+rm -rf $tmp
+
+exit $fail
diff --git a/tests/input-tty b/tests/input-tty
new file mode 100644
index 0000000..7df1515
--- /dev/null
+++ b/tests/input-tty
@@ -0,0 +1,10 @@
+# Require a controlling input `terminal'.
+
+tty -s || have_input_tty=no
+test -t 1 || have_input_tty=no
+if test "$have_input_tty" = no; then
+ echo "$0: This test must have a controlling input \`terminal'," 1>&2
+ echo " so it may not be run via \`batch', \`at', or \`rsh'." 1>&2
+ echo " On some systems, it may not even be run in the background." 1>&2
+ (exit 77); exit 77
+fi
diff --git a/tests/install/Makefile.am b/tests/install/Makefile.am
new file mode 100644
index 0000000..5544d7d
--- /dev/null
+++ b/tests/install/Makefile.am
@@ -0,0 +1,7 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+TESTS = trap basic-1 create-leading d-slashdot
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ EXEEXT='$(EXEEXT)' \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
diff --git a/tests/install/Makefile.in b/tests/install/Makefile.in
new file mode 100644
index 0000000..4828378
--- /dev/null
+++ b/tests/install/Makefile.in
@@ -0,0 +1,717 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/install
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = trap basic-1 create-leading d-slashdot
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ EXEEXT='$(EXEEXT)' \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/install/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/install/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/install/basic-1 b/tests/install/basic-1
new file mode 100755
index 0000000..3270604
--- /dev/null
+++ b/tests/install/basic-1
@@ -0,0 +1,154 @@
+#! /bin/sh
+# Basic tests for "install".
+
+# Copyright (C) 1998, 2000-2002, 2004-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ginstall --version
+fi
+
+# Make sure we get English translations.
+LANGUAGE=C
+export LANGUAGE
+LC_ALL=C
+export LC_ALL
+LANG=C
+export LANG
+
+. $srcdir/../envvar-check
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+dir=dir
+file=file
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+rm -rf $dir $file || framework_failure=1
+mkdir -p $dir || framework_failure=1
+echo foo > $file || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+ginstall $file $dir || fail=1
+# Make sure the source file still exists.
+test -f $file || fail=1
+# Make sure the dest file has been created.
+test -f $dir/$file || fail=1
+
+# Make sure strip works.
+dd=dd$EXEEXT
+dd2=dd2$EXEEXT
+
+just_built_dd=$pwd/../../src/$dd
+
+test -r "$just_built_dd" || \
+ {
+ cat 1>&2 <<EOF
+$0: WARNING!!!
+Your just-built dd binary, $just_built_dd
+is not readable, so skipping the remaining tests in this file.
+EOF
+ exit 77
+ }
+
+cp "$just_built_dd" . || fail=1
+cp $dd $dd2 || fail=1
+
+strip $dd2 || \
+ {
+ cat 1>&2 <<EOF
+$0: WARNING!!!
+Your strip command doesn't seem to work, so skipping
+the test of install's --strip option.
+EOF
+ exit 77
+ }
+
+# This test would fail with 3.16s when using versions of strip that
+# don't work on read-only files (the one from binutils works fine).
+ginstall -s -c -m 555 $dd $dir || fail=1
+# Make sure the source file is still around.
+test -f $dd || fail=1
+
+# Make sure that the destination file has the requested permissions.
+set X `ls -l $dir/$dd`
+shift
+test "$1" = -r-xr-xr-x || fail=1
+
+# These failed in coreutils CVS from 2004-06-25 to 2004-08-11.
+ginstall -d . || fail=1
+ginstall -d newdir || fail=1
+test -d newdir || fail=1
+ginstall -d newdir1 newdir2 newdir3 || fail=1
+test -d newdir1 || fail=1
+test -d newdir2 || fail=1
+test -d newdir3 || fail=1
+
+# This fails because mkdir-p.c's make_dir_parents fails to return to its
+# initial working directory ($abs) after creating the first argument, and
+# hence cannot do anything meaningful with the following relative-named dirs.
+abs=$pwd/$tmp
+mkdir sub || fail=1
+(cd sub && chmod 0 . && ginstall -d "$abs/xx/yy" rel/sub1 rel/sub2 2> /dev/null) && fail=1
+chmod 755 sub
+
+# Ensure that the first argument-dir has been created.
+test -d xx/yy || fail=1
+
+# Make sure that the `rel' directory was not created...
+test -d sub/rel && fail=1
+# and make sure it was not created in the wrong place.
+test -d xx/rel && fail=1
+
+# Test that we can install from an unreadable directory with an
+# inaccessible parent. coreutils 5.97 fails this test.
+# Perform this test only if "." is on a local file system.
+# Otherwise, it would fail e.g., on an NFS-mounted file system.
+if df --local . >/dev/null 2>&1; then
+ mkdir -p sub1/d || fail=1
+ (cd sub1/d && chmod a-r . && chmod a-rx .. &&
+ ginstall -d "$abs/xx/zz" rel/a rel/b) || fail=1
+ chmod 755 sub1 sub1/d || fail=1
+ test -d xx/zz || fail=1
+ test -d sub1/d/rel/a || fail=1
+ test -d sub1/d/rel/b || fail=1
+fi
+
+touch file || fail=1
+ginstall -Dv file sub3/a/b/c/file >out 2>&1 || fail=1
+diff - out <<\EOF || fail=1
+ginstall: creating directory `sub3'
+ginstall: creating directory `sub3/a'
+ginstall: creating directory `sub3/a/b'
+ginstall: creating directory `sub3/a/b/c'
+`file' -> `sub3/a/b/c/file'
+EOF
+
+(exit $fail); exit $fail
diff --git a/tests/install/create-leading b/tests/install/create-leading
new file mode 100755
index 0000000..fd7a5f7
--- /dev/null
+++ b/tests/install/create-leading
@@ -0,0 +1,49 @@
+#! /bin/sh
+# Test -D option.
+
+# Copyright (C) 2000, 2001, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# Note that the tests below use `ginstall', not install, because
+# that's the name of the binary in ../../src.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ginstall --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+dir=install-D$$
+
+trap 'cd "$pwd" && rm -rf $dir' 0 1 2 3 15
+
+mkdir $dir
+
+fail=0
+cd $dir
+file=file
+echo foo > $file
+
+# Before 4.0q, this would mistakenly create $file, not `dest'
+# in no-dir1/no-dir2/.
+ginstall -D $file no-dir1/no-dir2/dest || fail=1
+test -d no-dir1/no-dir2 || fail=1
+test -r no-dir1/no-dir2/dest || fail=1
+
+exit $fail
diff --git a/tests/install/d-slashdot b/tests/install/d-slashdot
new file mode 100755
index 0000000..7bf7c5d
--- /dev/null
+++ b/tests/install/d-slashdot
@@ -0,0 +1,48 @@
+#!/bin/sh
+# Ensure that ginstall -d works with arguments specified with a trailing "/.".
+
+# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ install --version
+fi
+
+pwd=`pwd`
+tmp=`echo "$0"|sed 's,.*/,,'`.tmp
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+fail=0
+
+ginstall -d d1/. || fail=1
+test -d d1 || fail=1
+
+ginstall -d d2/.. || fail=1
+test -d d2 || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/install/trap b/tests/install/trap
new file mode 100755
index 0000000..aaf0a33
--- /dev/null
+++ b/tests/install/trap
@@ -0,0 +1,52 @@
+#!/bin/sh
+# Ensure that `install -s' doesn't infloop when its parent
+# process traps CHLD signal.
+
+# Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ginstall --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Use a subshell and an exec to work around a bug in FreeBSD 5.0 /bin/sh.
+(
+ # ash doesn't support "trap '' CHLD"; it knows only signal numbers.
+ sig=`"$pwd/../../src/kill" -l CHLD 2>/dev/null` && trap '' $sig
+
+ # Before 2004-04-21, install would infloop, in the `while (wait...' loop:
+ exec ginstall -s "$pwd/../../src/ginstall$EXEEXT" .
+)
+
+(exit $fail); exit $fail
diff --git a/tests/join/1a.I1 b/tests/join/1a.I1
new file mode 100644
index 0000000..8f6edfd
--- /dev/null
+++ b/tests/join/1a.I1
@@ -0,0 +1 @@
+a 1
diff --git a/tests/join/1a.I2 b/tests/join/1a.I2
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/tests/join/1a.I2
@@ -0,0 +1 @@
+b
diff --git a/tests/join/1a.X b/tests/join/1a.X
new file mode 100644
index 0000000..8f6edfd
--- /dev/null
+++ b/tests/join/1a.X
@@ -0,0 +1 @@
+a 1
diff --git a/tests/join/1b.I1 b/tests/join/1b.I1
new file mode 100644
index 0000000..8f6edfd
--- /dev/null
+++ b/tests/join/1b.I1
@@ -0,0 +1 @@
+a 1
diff --git a/tests/join/1b.I2 b/tests/join/1b.I2
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/tests/join/1b.I2
@@ -0,0 +1 @@
+b
diff --git a/tests/join/1b.X b/tests/join/1b.X
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/tests/join/1b.X
@@ -0,0 +1 @@
+b
diff --git a/tests/join/1c.I1 b/tests/join/1c.I1
new file mode 100644
index 0000000..8f6edfd
--- /dev/null
+++ b/tests/join/1c.I1
@@ -0,0 +1 @@
+a 1
diff --git a/tests/join/1c.I2 b/tests/join/1c.I2
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/tests/join/1c.I2
@@ -0,0 +1 @@
+b
diff --git a/tests/join/1c.X b/tests/join/1c.X
new file mode 100644
index 0000000..58991da
--- /dev/null
+++ b/tests/join/1c.X
@@ -0,0 +1,2 @@
+a 1
+b
diff --git a/tests/join/1d.I1 b/tests/join/1d.I1
new file mode 100644
index 0000000..58991da
--- /dev/null
+++ b/tests/join/1d.I1
@@ -0,0 +1,2 @@
+a 1
+b
diff --git a/tests/join/1d.I2 b/tests/join/1d.I2
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/tests/join/1d.I2
@@ -0,0 +1 @@
+b
diff --git a/tests/join/1d.X b/tests/join/1d.X
new file mode 100644
index 0000000..58991da
--- /dev/null
+++ b/tests/join/1d.X
@@ -0,0 +1,2 @@
+a 1
+b
diff --git a/tests/join/1e.I1 b/tests/join/1e.I1
new file mode 100644
index 0000000..58991da
--- /dev/null
+++ b/tests/join/1e.I1
@@ -0,0 +1,2 @@
+a 1
+b
diff --git a/tests/join/1e.I2 b/tests/join/1e.I2
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/tests/join/1e.I2
@@ -0,0 +1 @@
+b
diff --git a/tests/join/1e.X b/tests/join/1e.X
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/tests/join/1e.X
@@ -0,0 +1 @@
+b
diff --git a/tests/join/1f.I1 b/tests/join/1f.I1
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/tests/join/1f.I1
@@ -0,0 +1 @@
+b
diff --git a/tests/join/1f.I2 b/tests/join/1f.I2
new file mode 100644
index 0000000..422c2b7
--- /dev/null
+++ b/tests/join/1f.I2
@@ -0,0 +1,2 @@
+a
+b
diff --git a/tests/join/1f.X b/tests/join/1f.X
new file mode 100644
index 0000000..422c2b7
--- /dev/null
+++ b/tests/join/1f.X
@@ -0,0 +1,2 @@
+a
+b
diff --git a/tests/join/2a.I1 b/tests/join/2a.I1
new file mode 100644
index 0000000..de98044
--- /dev/null
+++ b/tests/join/2a.I1
@@ -0,0 +1,3 @@
+a
+b
+c
diff --git a/tests/join/2a.I2 b/tests/join/2a.I2
new file mode 100644
index 0000000..d357ea7
--- /dev/null
+++ b/tests/join/2a.I2
@@ -0,0 +1,3 @@
+a x y
+b
+c
diff --git a/tests/join/2a.X b/tests/join/2a.X
new file mode 100644
index 0000000..d357ea7
--- /dev/null
+++ b/tests/join/2a.X
@@ -0,0 +1,3 @@
+a x y
+b
+c
diff --git a/tests/join/2b.I1 b/tests/join/2b.I1
new file mode 100644
index 0000000..de98044
--- /dev/null
+++ b/tests/join/2b.I1
@@ -0,0 +1,3 @@
+a
+b
+c
diff --git a/tests/join/2b.I2 b/tests/join/2b.I2
new file mode 100644
index 0000000..d357ea7
--- /dev/null
+++ b/tests/join/2b.I2
@@ -0,0 +1,3 @@
+a x y
+b
+c
diff --git a/tests/join/2b.X b/tests/join/2b.X
new file mode 100644
index 0000000..ae4364b
--- /dev/null
+++ b/tests/join/2b.X
@@ -0,0 +1,3 @@
+a x y
+b . .
+c . .
diff --git a/tests/join/2c.I1 b/tests/join/2c.I1
new file mode 100644
index 0000000..d68dd40
--- /dev/null
+++ b/tests/join/2c.I1
@@ -0,0 +1,4 @@
+a
+b
+c
+d
diff --git a/tests/join/2c.I2 b/tests/join/2c.I2
new file mode 100644
index 0000000..d357ea7
--- /dev/null
+++ b/tests/join/2c.I2
@@ -0,0 +1,3 @@
+a x y
+b
+c
diff --git a/tests/join/2c.X b/tests/join/2c.X
new file mode 100644
index 0000000..c3e9632
--- /dev/null
+++ b/tests/join/2c.X
@@ -0,0 +1,4 @@
+a x y
+b . .
+c . .
+. . .
diff --git a/tests/join/3a.I1 b/tests/join/3a.I1
new file mode 100644
index 0000000..052c29c
--- /dev/null
+++ b/tests/join/3a.I1
@@ -0,0 +1,2 @@
+a:1
+b:1
diff --git a/tests/join/3a.I2 b/tests/join/3a.I2
new file mode 100644
index 0000000..8591468
--- /dev/null
+++ b/tests/join/3a.I2
@@ -0,0 +1,2 @@
+a:2:
+b:2:
diff --git a/tests/join/3a.X b/tests/join/3a.X
new file mode 100644
index 0000000..18e1ee8
--- /dev/null
+++ b/tests/join/3a.X
@@ -0,0 +1,2 @@
+a:1:2:
+b:1:2:
diff --git a/tests/join/4a.I1 b/tests/join/4a.I1
new file mode 100644
index 0000000..8f6edfd
--- /dev/null
+++ b/tests/join/4a.I1
@@ -0,0 +1 @@
+a 1
diff --git a/tests/join/4a.I2 b/tests/join/4a.I2
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/tests/join/4a.I2
@@ -0,0 +1 @@
+b
diff --git a/tests/join/4a.X b/tests/join/4a.X
new file mode 100644
index 0000000..8f6edfd
--- /dev/null
+++ b/tests/join/4a.X
@@ -0,0 +1 @@
+a 1
diff --git a/tests/join/4b.I1 b/tests/join/4b.I1
new file mode 100644
index 0000000..8f6edfd
--- /dev/null
+++ b/tests/join/4b.I1
@@ -0,0 +1 @@
+a 1
diff --git a/tests/join/4b.I2 b/tests/join/4b.I2
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/tests/join/4b.I2
@@ -0,0 +1 @@
+b
diff --git a/tests/join/4b.X b/tests/join/4b.X
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/tests/join/4b.X
@@ -0,0 +1 @@
+b
diff --git a/tests/join/4c.I1 b/tests/join/4c.I1
new file mode 100644
index 0000000..58991da
--- /dev/null
+++ b/tests/join/4c.I1
@@ -0,0 +1,2 @@
+a 1
+b
diff --git a/tests/join/4c.I2 b/tests/join/4c.I2
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/tests/join/4c.I2
@@ -0,0 +1 @@
+b
diff --git a/tests/join/4c.X b/tests/join/4c.X
new file mode 100644
index 0000000..8f6edfd
--- /dev/null
+++ b/tests/join/4c.X
@@ -0,0 +1 @@
+a 1
diff --git a/tests/join/4d.I1 b/tests/join/4d.I1
new file mode 100644
index 0000000..58991da
--- /dev/null
+++ b/tests/join/4d.I1
@@ -0,0 +1,2 @@
+a 1
+b
diff --git a/tests/join/4d.I2 b/tests/join/4d.I2
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/tests/join/4d.I2
@@ -0,0 +1 @@
+b
diff --git a/tests/join/4d.X b/tests/join/4d.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/join/4d.X
diff --git a/tests/join/4e.I1 b/tests/join/4e.I1
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/tests/join/4e.I1
@@ -0,0 +1 @@
+b
diff --git a/tests/join/4e.I2 b/tests/join/4e.I2
new file mode 100644
index 0000000..58991da
--- /dev/null
+++ b/tests/join/4e.I2
@@ -0,0 +1,2 @@
+a 1
+b
diff --git a/tests/join/4e.X b/tests/join/4e.X
new file mode 100644
index 0000000..8f6edfd
--- /dev/null
+++ b/tests/join/4e.X
@@ -0,0 +1 @@
+a 1
diff --git a/tests/join/5a.I1 b/tests/join/5a.I1
new file mode 100644
index 0000000..ddbfef7
--- /dev/null
+++ b/tests/join/5a.I1
@@ -0,0 +1,2 @@
+a 1
+b 2
diff --git a/tests/join/5a.I2 b/tests/join/5a.I2
new file mode 100644
index 0000000..78ea278
--- /dev/null
+++ b/tests/join/5a.I2
@@ -0,0 +1,2 @@
+a 11
+b
diff --git a/tests/join/5a.X b/tests/join/5a.X
new file mode 100644
index 0000000..2dc6c6d
--- /dev/null
+++ b/tests/join/5a.X
@@ -0,0 +1,2 @@
+a 11
+b -
diff --git a/tests/join/5b.I1 b/tests/join/5b.I1
new file mode 100644
index 0000000..8a2bc05
--- /dev/null
+++ b/tests/join/5b.I1
@@ -0,0 +1,4 @@
+apr 15
+aug 20
+dec 18
+feb 05
diff --git a/tests/join/5b.I2 b/tests/join/5b.I2
new file mode 100644
index 0000000..e0b6a06
--- /dev/null
+++ b/tests/join/5b.I2
@@ -0,0 +1,4 @@
+apr 06
+aug 14
+date
+feb 15 \ No newline at end of file
diff --git a/tests/join/5b.X b/tests/join/5b.X
new file mode 100644
index 0000000..4e72fd7
--- /dev/null
+++ b/tests/join/5b.X
@@ -0,0 +1,4 @@
+apr 06
+aug 14
+dec -
+feb 15
diff --git a/tests/join/5c.I1 b/tests/join/5c.I1
new file mode 100644
index 0000000..0dfe9fc
--- /dev/null
+++ b/tests/join/5c.I1
@@ -0,0 +1,2 @@
+aug 20
+dec 18
diff --git a/tests/join/5c.I2 b/tests/join/5c.I2
new file mode 100644
index 0000000..134df69
--- /dev/null
+++ b/tests/join/5c.I2
@@ -0,0 +1,3 @@
+aug 14
+date
+feb 15 \ No newline at end of file
diff --git a/tests/join/5c.X b/tests/join/5c.X
new file mode 100644
index 0000000..0ff0307
--- /dev/null
+++ b/tests/join/5c.X
@@ -0,0 +1,2 @@
+aug 14
+dec -
diff --git a/tests/join/5d.I1 b/tests/join/5d.I1
new file mode 100644
index 0000000..804d3d0
--- /dev/null
+++ b/tests/join/5d.I1
@@ -0,0 +1 @@
+dec 18
diff --git a/tests/join/5d.I2 b/tests/join/5d.I2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/join/5d.I2
diff --git a/tests/join/5d.X b/tests/join/5d.X
new file mode 100644
index 0000000..4713c1a
--- /dev/null
+++ b/tests/join/5d.X
@@ -0,0 +1 @@
+dec -
diff --git a/tests/join/5e.I1 b/tests/join/5e.I1
new file mode 100644
index 0000000..8a2bc05
--- /dev/null
+++ b/tests/join/5e.I1
@@ -0,0 +1,4 @@
+apr 15
+aug 20
+dec 18
+feb 05
diff --git a/tests/join/5e.I2 b/tests/join/5e.I2
new file mode 100644
index 0000000..8c0c3a6
--- /dev/null
+++ b/tests/join/5e.I2
@@ -0,0 +1,4 @@
+apr 06
+aug 14
+date
+feb 15
diff --git a/tests/join/5e.X b/tests/join/5e.X
new file mode 100644
index 0000000..817fecd
--- /dev/null
+++ b/tests/join/5e.X
@@ -0,0 +1,4 @@
+apr 06
+aug 14
+- -
+feb 15
diff --git a/tests/join/5f.I1 b/tests/join/5f.I1
new file mode 100644
index 0000000..8a2bc05
--- /dev/null
+++ b/tests/join/5f.I1
@@ -0,0 +1,4 @@
+apr 15
+aug 20
+dec 18
+feb 05
diff --git a/tests/join/5f.I2 b/tests/join/5f.I2
new file mode 100644
index 0000000..8c0c3a6
--- /dev/null
+++ b/tests/join/5f.I2
@@ -0,0 +1,4 @@
+apr 06
+aug 14
+date
+feb 15
diff --git a/tests/join/5f.X b/tests/join/5f.X
new file mode 100644
index 0000000..e524722
--- /dev/null
+++ b/tests/join/5f.X
@@ -0,0 +1,4 @@
+06 apr
+14 aug
+- -
+15 feb
diff --git a/tests/join/5g.I1 b/tests/join/5g.I1
new file mode 100644
index 0000000..8a2bc05
--- /dev/null
+++ b/tests/join/5g.I1
@@ -0,0 +1,4 @@
+apr 15
+aug 20
+dec 18
+feb 05
diff --git a/tests/join/5g.I2 b/tests/join/5g.I2
new file mode 100644
index 0000000..8c0c3a6
--- /dev/null
+++ b/tests/join/5g.I2
@@ -0,0 +1,4 @@
+apr 06
+aug 14
+date
+feb 15
diff --git a/tests/join/5g.X b/tests/join/5g.X
new file mode 100644
index 0000000..7b73724
--- /dev/null
+++ b/tests/join/5g.X
@@ -0,0 +1,4 @@
+06 apr
+14 aug
+- dec
+15 feb
diff --git a/tests/join/5h.I1 b/tests/join/5h.I1
new file mode 100644
index 0000000..8a2bc05
--- /dev/null
+++ b/tests/join/5h.I1
@@ -0,0 +1,4 @@
+apr 15
+aug 20
+dec 18
+feb 05
diff --git a/tests/join/5h.I2 b/tests/join/5h.I2
new file mode 100644
index 0000000..b1a2541
--- /dev/null
+++ b/tests/join/5h.I2
@@ -0,0 +1,3 @@
+apr 06
+aug 14
+date
diff --git a/tests/join/5h.X b/tests/join/5h.X
new file mode 100644
index 0000000..0541c87
--- /dev/null
+++ b/tests/join/5h.X
@@ -0,0 +1,4 @@
+06 apr
+14 aug
+- dec
+- feb
diff --git a/tests/join/5i.I1 b/tests/join/5i.I1
new file mode 100644
index 0000000..8a2bc05
--- /dev/null
+++ b/tests/join/5i.I1
@@ -0,0 +1,4 @@
+apr 15
+aug 20
+dec 18
+feb 05
diff --git a/tests/join/5i.I2 b/tests/join/5i.I2
new file mode 100644
index 0000000..b1a2541
--- /dev/null
+++ b/tests/join/5i.I2
@@ -0,0 +1,3 @@
+apr 06
+aug 14
+date
diff --git a/tests/join/5i.X b/tests/join/5i.X
new file mode 100644
index 0000000..93a107b
--- /dev/null
+++ b/tests/join/5i.X
@@ -0,0 +1,4 @@
+apr 06
+aug 14
+dec -
+feb -
diff --git a/tests/join/5j.I1 b/tests/join/5j.I1
new file mode 100644
index 0000000..8a2bc05
--- /dev/null
+++ b/tests/join/5j.I1
@@ -0,0 +1,4 @@
+apr 15
+aug 20
+dec 18
+feb 05
diff --git a/tests/join/5j.I2 b/tests/join/5j.I2
new file mode 100644
index 0000000..b1a2541
--- /dev/null
+++ b/tests/join/5j.I2
@@ -0,0 +1,3 @@
+apr 06
+aug 14
+date
diff --git a/tests/join/5j.X b/tests/join/5j.X
new file mode 100644
index 0000000..fc56438
--- /dev/null
+++ b/tests/join/5j.X
@@ -0,0 +1,3 @@
+06 apr
+14 aug
+- -
diff --git a/tests/join/5k.I1 b/tests/join/5k.I1
new file mode 100644
index 0000000..8a2bc05
--- /dev/null
+++ b/tests/join/5k.I1
@@ -0,0 +1,4 @@
+apr 15
+aug 20
+dec 18
+feb 05
diff --git a/tests/join/5k.I2 b/tests/join/5k.I2
new file mode 100644
index 0000000..b1a2541
--- /dev/null
+++ b/tests/join/5k.I2
@@ -0,0 +1,3 @@
+apr 06
+aug 14
+date
diff --git a/tests/join/5k.X b/tests/join/5k.X
new file mode 100644
index 0000000..fc56438
--- /dev/null
+++ b/tests/join/5k.X
@@ -0,0 +1,3 @@
+06 apr
+14 aug
+- -
diff --git a/tests/join/5l.I1 b/tests/join/5l.I1
new file mode 100644
index 0000000..a08fbc1
--- /dev/null
+++ b/tests/join/5l.I1
@@ -0,0 +1,3 @@
+apr 15
+aug 20
+dec 18
diff --git a/tests/join/5l.I2 b/tests/join/5l.I2
new file mode 100644
index 0000000..8c0c3a6
--- /dev/null
+++ b/tests/join/5l.I2
@@ -0,0 +1,4 @@
+apr 06
+aug 14
+date
+feb 15
diff --git a/tests/join/5l.X b/tests/join/5l.X
new file mode 100644
index 0000000..85a7d60
--- /dev/null
+++ b/tests/join/5l.X
@@ -0,0 +1,3 @@
+06 apr
+14 aug
+- dec
diff --git a/tests/join/5m.I1 b/tests/join/5m.I1
new file mode 100644
index 0000000..a08fbc1
--- /dev/null
+++ b/tests/join/5m.I1
@@ -0,0 +1,3 @@
+apr 15
+aug 20
+dec 18
diff --git a/tests/join/5m.I2 b/tests/join/5m.I2
new file mode 100644
index 0000000..8c0c3a6
--- /dev/null
+++ b/tests/join/5m.I2
@@ -0,0 +1,4 @@
+apr 06
+aug 14
+date
+feb 15
diff --git a/tests/join/5m.X b/tests/join/5m.X
new file mode 100644
index 0000000..f62d2c6
--- /dev/null
+++ b/tests/join/5m.X
@@ -0,0 +1,4 @@
+06 apr
+14 aug
+- -
+15 -
diff --git a/tests/join/6a.I1 b/tests/join/6a.I1
new file mode 100644
index 0000000..1f07036
--- /dev/null
+++ b/tests/join/6a.I1
@@ -0,0 +1,3 @@
+a 1
+b 2
+d 4
diff --git a/tests/join/6a.I2 b/tests/join/6a.I2
new file mode 100644
index 0000000..77da603
--- /dev/null
+++ b/tests/join/6a.I2
@@ -0,0 +1,4 @@
+a 21
+b 22
+c 23
+f 26
diff --git a/tests/join/6a.X b/tests/join/6a.X
new file mode 100644
index 0000000..8903d61
--- /dev/null
+++ b/tests/join/6a.X
@@ -0,0 +1,2 @@
+a 1 21
+b 2 22
diff --git a/tests/join/6b.I1 b/tests/join/6b.I1
new file mode 100644
index 0000000..1f07036
--- /dev/null
+++ b/tests/join/6b.I1
@@ -0,0 +1,3 @@
+a 1
+b 2
+d 4
diff --git a/tests/join/6b.I2 b/tests/join/6b.I2
new file mode 100644
index 0000000..77da603
--- /dev/null
+++ b/tests/join/6b.I2
@@ -0,0 +1,4 @@
+a 21
+b 22
+c 23
+f 26
diff --git a/tests/join/6b.X b/tests/join/6b.X
new file mode 100644
index 0000000..c71cd04
--- /dev/null
+++ b/tests/join/6b.X
@@ -0,0 +1,3 @@
+a 1 21
+b 2 22
+d 4
diff --git a/tests/join/6c.I1 b/tests/join/6c.I1
new file mode 100644
index 0000000..77da603
--- /dev/null
+++ b/tests/join/6c.I1
@@ -0,0 +1,4 @@
+a 21
+b 22
+c 23
+f 26
diff --git a/tests/join/6c.I2 b/tests/join/6c.I2
new file mode 100644
index 0000000..1f07036
--- /dev/null
+++ b/tests/join/6c.I2
@@ -0,0 +1,3 @@
+a 1
+b 2
+d 4
diff --git a/tests/join/6c.X b/tests/join/6c.X
new file mode 100644
index 0000000..3ae4f65
--- /dev/null
+++ b/tests/join/6c.X
@@ -0,0 +1,4 @@
+a 21 1
+b 22 2
+c 23
+f 26
diff --git a/tests/join/7a.I1 b/tests/join/7a.I1
new file mode 100644
index 0000000..de98044
--- /dev/null
+++ b/tests/join/7a.I1
@@ -0,0 +1,3 @@
+a
+b
+c
diff --git a/tests/join/7a.I2 b/tests/join/7a.I2
new file mode 100644
index 0000000..d357ea7
--- /dev/null
+++ b/tests/join/7a.I2
@@ -0,0 +1,3 @@
+a x y
+b
+c
diff --git a/tests/join/7a.X b/tests/join/7a.X
new file mode 100644
index 0000000..bd812ad
--- /dev/null
+++ b/tests/join/7a.X
@@ -0,0 +1,3 @@
+.
+.
+.
diff --git a/tests/join/8-bit-t.I1 b/tests/join/8-bit-t.I1
new file mode 100644
index 0000000..92f6a0d
--- /dev/null
+++ b/tests/join/8-bit-t.I1
@@ -0,0 +1,2 @@
+a§1
+b§1
diff --git a/tests/join/8-bit-t.I2 b/tests/join/8-bit-t.I2
new file mode 100644
index 0000000..2dba960
--- /dev/null
+++ b/tests/join/8-bit-t.I2
@@ -0,0 +1,2 @@
+a§2§
+b§2§
diff --git a/tests/join/8-bit-t.X b/tests/join/8-bit-t.X
new file mode 100644
index 0000000..8fef844
--- /dev/null
+++ b/tests/join/8-bit-t.X
@@ -0,0 +1,2 @@
+a§1§2§
+b§1§2§
diff --git a/tests/join/8a.I1 b/tests/join/8a.I1
new file mode 100644
index 0000000..1a57375
--- /dev/null
+++ b/tests/join/8a.I1
@@ -0,0 +1,4 @@
+a
+b
+c
+d G
diff --git a/tests/join/8a.I2 b/tests/join/8a.I2
new file mode 100644
index 0000000..f489109
--- /dev/null
+++ b/tests/join/8a.I2
@@ -0,0 +1,4 @@
+a x y
+b
+c
+e
diff --git a/tests/join/8a.X b/tests/join/8a.X
new file mode 100644
index 0000000..c0d471a
--- /dev/null
+++ b/tests/join/8a.X
@@ -0,0 +1,4 @@
+a .
+b .
+c .
+d G
diff --git a/tests/join/8b.I1 b/tests/join/8b.I1
new file mode 100644
index 0000000..1a57375
--- /dev/null
+++ b/tests/join/8b.I1
@@ -0,0 +1,4 @@
+a
+b
+c
+d G
diff --git a/tests/join/8b.I2 b/tests/join/8b.I2
new file mode 100644
index 0000000..f489109
--- /dev/null
+++ b/tests/join/8b.I2
@@ -0,0 +1,4 @@
+a x y
+b
+c
+e
diff --git a/tests/join/8b.X b/tests/join/8b.X
new file mode 100644
index 0000000..d41b2fd
--- /dev/null
+++ b/tests/join/8b.X
@@ -0,0 +1,5 @@
+a .
+b .
+c .
+d G
+e .
diff --git a/tests/join/9a.I1 b/tests/join/9a.I1
new file mode 100644
index 0000000..f170a3b
--- /dev/null
+++ b/tests/join/9a.I1
@@ -0,0 +1,2 @@
+ a 1
+ b 2
diff --git a/tests/join/9a.I2 b/tests/join/9a.I2
new file mode 100644
index 0000000..2c9897a
--- /dev/null
+++ b/tests/join/9a.I2
@@ -0,0 +1,2 @@
+ a Y
+ b Z
diff --git a/tests/join/9a.X b/tests/join/9a.X
new file mode 100644
index 0000000..6f1fef3
--- /dev/null
+++ b/tests/join/9a.X
@@ -0,0 +1,2 @@
+a 1 Y
+b 2 Z
diff --git a/tests/join/Makefile.am b/tests/join/Makefile.am
new file mode 100644
index 0000000..fe2d5cd
--- /dev/null
+++ b/tests/join/Makefile.am
@@ -0,0 +1,74 @@
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+##test-files-begin
+x = join
+explicit =
+maint_gen = 1a.I1 1a.I2 1a.X 1b.I1 1b.I2 1b.X 1c.I1 1c.I2 1c.X 1d.I1 1d.I2 \
+1d.X 1e.I1 1e.I2 1e.X 1f.I1 1f.I2 1f.X 2a.I1 2a.I2 2a.X 2b.I1 2b.I2 2b.X \
+2c.I1 2c.I2 2c.X 3a.I1 3a.I2 3a.X 4a.I1 4a.I2 4a.X 4b.I1 4b.I2 4b.X 4c.I1 \
+4c.I2 4c.X 4d.I1 4d.I2 4d.X 4e.I1 4e.I2 4e.X 5a.I1 5a.I2 5a.X 5b.I1 5b.I2 \
+5b.X 5c.I1 5c.I2 5c.X 5d.I1 5d.I2 5d.X 5e.I1 5e.I2 5e.X 5f.I1 5f.I2 5f.X \
+5g.I1 5g.I2 5g.X 5h.I1 5h.I2 5h.X 5i.I1 5i.I2 5i.X 5j.I1 5j.I2 5j.X 5k.I1 \
+5k.I2 5k.X 5l.I1 5l.I2 5l.X 5m.I1 5m.I2 5m.X 6a.I1 6a.I2 6a.X 6b.I1 6b.I2 \
+6b.X 6c.I1 6c.I2 6c.X 7a.I1 7a.I2 7a.X 8a.I1 8a.I2 8a.X 8b.I1 8b.I2 8b.X \
+9a.I1 9a.I2 9a.X trailing-sp.I1 trailing-sp.I2 trailing-sp.X sp-vs-blank.I1 \
+sp-vs-blank.I2 sp-vs-blank.X 8-bit-t.I1 8-bit-t.I2 8-bit-t.X bigfield.I1 \
+bigfield.I2 bigfield.X invalid-j.X
+run_gen = 1a.O 1a.E 1b.O 1b.E 1c.O 1c.E 1d.O 1d.E 1e.O 1e.E 1f.O 1f.E 2a.O \
+2a.E 2b.O 2b.E 2c.O 2c.E 3a.O 3a.E 4a.O 4a.E 4b.O 4b.E 4c.O 4c.E 4d.O 4d.E \
+4e.O 4e.E 5a.O 5a.E 5b.O 5b.E 5c.O 5c.E 5d.O 5d.E 5e.O 5e.E 5f.O 5f.E 5g.O \
+5g.E 5h.O 5h.E 5i.O 5i.E 5j.O 5j.E 5k.O 5k.E 5l.O 5l.E 5m.O 5m.E 6a.O 6a.E \
+6b.O 6b.E 6c.O 6c.E 7a.O 7a.E 8a.O 8a.E 8b.O 8b.E 9a.O 9a.E trailing-sp.O \
+trailing-sp.E sp-vs-blank.O sp-vs-blank.E 8-bit-t.O 8-bit-t.E bigfield.O \
+bigfield.E invalid-j.O invalid-j.E
+##test-files-end
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+
+TESTS = $x-tests
+
+mk_script = $(srcdir)/../mk-script
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
diff --git a/tests/join/Makefile.in b/tests/join/Makefile.in
new file mode 100644
index 0000000..b114a9b
--- /dev/null
+++ b/tests/join/Makefile.in
@@ -0,0 +1,784 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/join
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in TODO
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SCRIPTS = $(noinst_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+x = join
+explicit =
+maint_gen = 1a.I1 1a.I2 1a.X 1b.I1 1b.I2 1b.X 1c.I1 1c.I2 1c.X 1d.I1 1d.I2 \
+1d.X 1e.I1 1e.I2 1e.X 1f.I1 1f.I2 1f.X 2a.I1 2a.I2 2a.X 2b.I1 2b.I2 2b.X \
+2c.I1 2c.I2 2c.X 3a.I1 3a.I2 3a.X 4a.I1 4a.I2 4a.X 4b.I1 4b.I2 4b.X 4c.I1 \
+4c.I2 4c.X 4d.I1 4d.I2 4d.X 4e.I1 4e.I2 4e.X 5a.I1 5a.I2 5a.X 5b.I1 5b.I2 \
+5b.X 5c.I1 5c.I2 5c.X 5d.I1 5d.I2 5d.X 5e.I1 5e.I2 5e.X 5f.I1 5f.I2 5f.X \
+5g.I1 5g.I2 5g.X 5h.I1 5h.I2 5h.X 5i.I1 5i.I2 5i.X 5j.I1 5j.I2 5j.X 5k.I1 \
+5k.I2 5k.X 5l.I1 5l.I2 5l.X 5m.I1 5m.I2 5m.X 6a.I1 6a.I2 6a.X 6b.I1 6b.I2 \
+6b.X 6c.I1 6c.I2 6c.X 7a.I1 7a.I2 7a.X 8a.I1 8a.I2 8a.X 8b.I1 8b.I2 8b.X \
+9a.I1 9a.I2 9a.X trailing-sp.I1 trailing-sp.I2 trailing-sp.X sp-vs-blank.I1 \
+sp-vs-blank.I2 sp-vs-blank.X 8-bit-t.I1 8-bit-t.I2 8-bit-t.X bigfield.I1 \
+bigfield.I2 bigfield.X invalid-j.X
+
+run_gen = 1a.O 1a.E 1b.O 1b.E 1c.O 1c.E 1d.O 1d.E 1e.O 1e.E 1f.O 1f.E 2a.O \
+2a.E 2b.O 2b.E 2c.O 2c.E 3a.O 3a.E 4a.O 4a.E 4b.O 4b.E 4c.O 4c.E 4d.O 4d.E \
+4e.O 4e.E 5a.O 5a.E 5b.O 5b.E 5c.O 5c.E 5d.O 5d.E 5e.O 5e.E 5f.O 5f.E 5g.O \
+5g.E 5h.O 5h.E 5i.O 5i.E 5j.O 5j.E 5k.O 5k.E 5l.O 5l.E 5m.O 5m.E 6a.O 6a.E \
+6b.O 6b.E 6c.O 6c.E 7a.O 7a.E 8a.O 8a.E 8b.O 8b.E 9a.O 9a.E trailing-sp.O \
+trailing-sp.E sp-vs-blank.O sp-vs-blank.E 8-bit-t.O 8-bit-t.E bigfield.O \
+bigfield.E invalid-j.O invalid-j.E
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+TESTS = $x-tests
+mk_script = $(srcdir)/../mk-script
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/join/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/join/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(SCRIPTS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/join/TODO b/tests/join/TODO
new file mode 100644
index 0000000..265ea47
--- /dev/null
+++ b/tests/join/TODO
@@ -0,0 +1,2 @@
+rename tr-tests
+make sure all test_names are distinct!
diff --git a/tests/join/Test.pm b/tests/join/Test.pm
new file mode 100644
index 0000000..3d60ce3
--- /dev/null
+++ b/tests/join/Test.pm
@@ -0,0 +1,153 @@
+# Test "join".
+
+# Copyright (C) 1996, 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+package Test;
+require 5.002;
+use strict;
+
+my $delim = chr 0247;
+sub t_subst ($)
+{
+ (my $s = $_[0]) =~ s/:/$delim/g;
+ return $s;
+}
+
+my @tv = (
+# test name
+# flags file-1 file-2 expected output expected return code
+#
+['1a', '-a1', ["a 1\n", "b\n"], "a 1\n", 0],
+['1b', '-a2', ["a 1\n", "b\n"], "b\n", 0], # Got "\n"
+['1c', '-a1 -a2', ["a 1\n", "b\n"], "a 1\nb\n", 0], # Got "a 1\n\n"
+['1d', '-a1', ["a 1\nb\n", "b\n"], "a 1\nb\n", 0],
+['1e', '-a2', ["a 1\nb\n", "b\n"], "b\n", 0],
+['1f', '-a2', ["b\n", "a\nb\n"], "a\nb\n", 0],
+
+['2a', '-a1 -e .', ["a\nb\nc\n", "a x y\nb\nc\n"], "a x y\nb\nc\n", 0],
+['2b', '-a1 -e . -o 2.1,2.2,2.3', ["a\nb\nc\n", "a x y\nb\nc\n"],
+ "a x y\nb . .\nc . .\n", 0],
+['2c', '-a1 -e . -o 2.1,2.2,2.3', ["a\nb\nc\nd\n", "a x y\nb\nc\n"],
+ "a x y\nb . .\nc . .\n. . .\n", 0],
+
+['3a', '-t:', ["a:1\nb:1\n", "a:2:\nb:2:\n"], "a:1:2:\nb:1:2:\n", 0],
+
+# Just like -a1 and -a2 when there are no pairable lines
+['4a', '-v 1', ["a 1\n", "b\n"], "a 1\n", 0],
+['4b', '-v 2', ["a 1\n", "b\n"], "b\n", 0],
+
+['4c', '-v 1', ["a 1\nb\n", "b\n"], "a 1\n", 0],
+['4d', '-v 2', ["a 1\nb\n", "b\n"], "", 0],
+['4e', '-v 2', ["b\n", "a 1\nb\n"], "a 1\n", 0],
+['5a', '-a1 -e - -o 1.1,2.2',
+ ["a 1\nb 2\n", "a 11\nb\n"], "a 11\nb -\n", 0],
+['5b', '-a1 -e - -o 1.1,2.2',
+ ["apr 15\naug 20\ndec 18\nfeb 05\n", "apr 06\naug 14\ndate\nfeb 15"],
+ "apr 06\naug 14\ndec -\nfeb 15\n", 0],
+['5c', '-a1 -e - -o 1.1,2.2',
+ ["aug 20\ndec 18\n", "aug 14\ndate\nfeb 15"],
+ "aug 14\ndec -\n", 0],
+['5d', '-a1 -e - -o 1.1,2.2',
+ ["dec 18\n", ""], "dec -\n", 0],
+['5e', '-a2 -e - -o 1.1,2.2',
+ ["apr 15\naug 20\ndec 18\nfeb 05\n", "apr 06\naug 14\ndate\nfeb 15\n"],
+ "apr 06\naug 14\n- -\nfeb 15\n", 0],
+['5f', '-a2 -e - -o 2.2,1.1',
+ ["apr 15\naug 20\ndec 18\nfeb 05\n", "apr 06\naug 14\ndate\nfeb 15\n"],
+ "06 apr\n14 aug\n- -\n15 feb\n", 0],
+['5g', '-a1 -e - -o 2.2,1.1',
+ ["apr 15\naug 20\ndec 18\nfeb 05\n", "apr 06\naug 14\ndate\nfeb 15\n"],
+ "06 apr\n14 aug\n- dec\n15 feb\n", 0],
+
+['5h', '-a1 -e - -o 2.2,1.1',
+ ["apr 15\naug 20\ndec 18\nfeb 05\n", "apr 06\naug 14\ndate\n"],
+ "06 apr\n14 aug\n- dec\n- feb\n", 0],
+['5i', '-a1 -e - -o 1.1,2.2',
+ ["apr 15\naug 20\ndec 18\nfeb 05\n", "apr 06\naug 14\ndate\n"],
+ "apr 06\naug 14\ndec -\nfeb -\n", 0],
+
+['5j', '-a2 -e - -o 2.2,1.1',
+ ["apr 15\naug 20\ndec 18\nfeb 05\n", "apr 06\naug 14\ndate\n"],
+ "06 apr\n14 aug\n- -\n", 0],
+['5k', '-a2 -e - -o 2.2,1.1',
+ ["apr 15\naug 20\ndec 18\nfeb 05\n", "apr 06\naug 14\ndate\n"],
+ "06 apr\n14 aug\n- -\n", 0],
+
+['5l', '-a1 -e - -o 2.2,1.1',
+ ["apr 15\naug 20\ndec 18\n", "apr 06\naug 14\ndate\nfeb 15\n"],
+ "06 apr\n14 aug\n- dec\n", 0],
+['5m', '-a2 -e - -o 2.2,1.1',
+ ["apr 15\naug 20\ndec 18\n", "apr 06\naug 14\ndate\nfeb 15\n"],
+ "06 apr\n14 aug\n- -\n15 -\n", 0],
+
+['6a', '-e -',
+ ["a 1\nb 2\nd 4\n", "a 21\nb 22\nc 23\nf 26\n"],
+ "a 1 21\nb 2 22\n", 0],
+['6b', '-a1 -e -',
+ ["a 1\nb 2\nd 4\n", "a 21\nb 22\nc 23\nf 26\n"],
+ "a 1 21\nb 2 22\nd 4\n", 0],
+['6c', '-a1 -e -',
+ ["a 21\nb 22\nc 23\nf 26\n", "a 1\nb 2\nd 4\n"],
+ "a 21 1\nb 22 2\nc 23\nf 26\n", 0],
+
+['7a', '-a1 -e . -o 2.7',
+ ["a\nb\nc\n", "a x y\nb\nc\n"], ".\n.\n.\n", 0],
+
+['8a', '-a1 -e . -o 0,1.2',
+ ["a\nb\nc\nd G\n", "a x y\nb\nc\ne\n"],
+ "a .\nb .\nc .\nd G\n", 0],
+['8b', '-a1 -a2 -e . -o 0,1.2',
+ ["a\nb\nc\nd G\n", "a x y\nb\nc\ne\n"],
+ "a .\nb .\nc .\nd G\ne .\n", 0],
+
+# From David Dyck
+['9a', '', [" a 1\n b 2\n", " a Y\n b Z\n"], "a 1 Y\nb 2 Z\n", 0],
+
+# From Tim Smithers: fixed in 1.22l
+['trailing-sp', '-t: -1 1 -2 1', ["a:x \n", "a:y \n"], "a:x :y \n", 0],
+
+# From Paul Eggert: fixed in 1.22n
+['sp-vs-blank', '', ["\f 1\n", "\f 2\n"], "\f 1 2\n", 0],
+
+# From Paul Eggert: fixed in 1.22n (this would fail on Solaris7,
+# with LC_ALL set to en_US).
+# Unfortunately, that Solaris7's en_US local folds case (making
+# the first input file sorted) is not portable, so this test would
+# fail on e.g. Linux systems, because the input to join isn't sorted.
+# ['lc-collate', '', ["a 1a\nB 1B\n", "B 2B\n"], "B 1B 2B\n", 0],
+
+# Based on a report from Antonio Rendas. Fixed in 2.0.9.
+['8-bit-t', t_subst "-t:",
+ [t_subst "a:1\nb:1\n", t_subst "a:2:\nb:2:\n"],
+ t_subst "a:1:2:\nb:1:2:\n", 0],
+
+['bigfield', '-1 340282366920938463463374607431768211456 -2 2',
+ ["a\n", "b\n"], " a b\n", 0],
+
+# FIXME: change this to ensure the diagnostic makes sense
+['invalid-j', '-j x', {}, "", 1],
+
+);
+
+
+sub test_vector
+{
+ return @tv;
+}
+
+1;
diff --git a/tests/join/bigfield.I1 b/tests/join/bigfield.I1
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/tests/join/bigfield.I1
@@ -0,0 +1 @@
+a
diff --git a/tests/join/bigfield.I2 b/tests/join/bigfield.I2
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/tests/join/bigfield.I2
@@ -0,0 +1 @@
+b
diff --git a/tests/join/bigfield.X b/tests/join/bigfield.X
new file mode 100644
index 0000000..bb5aeea
--- /dev/null
+++ b/tests/join/bigfield.X
@@ -0,0 +1 @@
+ a b
diff --git a/tests/join/invalid-j.X b/tests/join/invalid-j.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/join/invalid-j.X
diff --git a/tests/join/join-tests b/tests/join/join-tests
new file mode 100755
index 0000000..1c49c21
--- /dev/null
+++ b/tests/join/join-tests
@@ -0,0 +1,747 @@
+#! /bin/sh
+# This script was generated automatically by mk-script.
+case $# in
+ 0) xx='join';;
+ *) xx="$1";;
+esac
+test "$VERBOSE" && echo=echo || echo=:
+$echo testing program: $xx
+errors=0
+test "$srcdir" || srcdir=.
+test "$VERBOSE" && $xx --version 2> /dev/null
+
+# Make sure we get English translations.
+LANGUAGE=C
+export LANGUAGE
+LC_ALL=C
+export LC_ALL
+LANG=C
+export LANG
+
+$xx -a1 $srcdir/1a.I1 $srcdir/1a.I2 > 1a.O 2> 1a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1a.O $srcdir/1a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1a"; fi;;
+ 1) $echo "Test 1a failed: files 1a.O and $srcdir/1a.X differ" 1>&2
+ (diff -c 1a.O $srcdir/1a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1a may have failed." 1>&2
+ $echo The command "cmp 1a.O $srcdir/1a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1a.E || rm -f 1a.E
+$xx -a2 $srcdir/1b.I1 $srcdir/1b.I2 > 1b.O 2> 1b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1b.O $srcdir/1b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1b"; fi;;
+ 1) $echo "Test 1b failed: files 1b.O and $srcdir/1b.X differ" 1>&2
+ (diff -c 1b.O $srcdir/1b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1b may have failed." 1>&2
+ $echo The command "cmp 1b.O $srcdir/1b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1b.E || rm -f 1b.E
+$xx -a1 -a2 $srcdir/1c.I1 $srcdir/1c.I2 > 1c.O 2> 1c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1c failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1c.O $srcdir/1c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1c"; fi;;
+ 1) $echo "Test 1c failed: files 1c.O and $srcdir/1c.X differ" 1>&2
+ (diff -c 1c.O $srcdir/1c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1c may have failed." 1>&2
+ $echo The command "cmp 1c.O $srcdir/1c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1c.E || rm -f 1c.E
+$xx -a1 $srcdir/1d.I1 $srcdir/1d.I2 > 1d.O 2> 1d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1d failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1d.O $srcdir/1d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1d"; fi;;
+ 1) $echo "Test 1d failed: files 1d.O and $srcdir/1d.X differ" 1>&2
+ (diff -c 1d.O $srcdir/1d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1d may have failed." 1>&2
+ $echo The command "cmp 1d.O $srcdir/1d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1d.E || rm -f 1d.E
+$xx -a2 $srcdir/1e.I1 $srcdir/1e.I2 > 1e.O 2> 1e.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1e failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1e.O $srcdir/1e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1e"; fi;;
+ 1) $echo "Test 1e failed: files 1e.O and $srcdir/1e.X differ" 1>&2
+ (diff -c 1e.O $srcdir/1e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1e may have failed." 1>&2
+ $echo The command "cmp 1e.O $srcdir/1e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1e.E || rm -f 1e.E
+$xx -a2 $srcdir/1f.I1 $srcdir/1f.I2 > 1f.O 2> 1f.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1f failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1f.O $srcdir/1f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1f"; fi;;
+ 1) $echo "Test 1f failed: files 1f.O and $srcdir/1f.X differ" 1>&2
+ (diff -c 1f.O $srcdir/1f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1f may have failed." 1>&2
+ $echo The command "cmp 1f.O $srcdir/1f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1f.E || rm -f 1f.E
+$xx -a1 -e . $srcdir/2a.I1 $srcdir/2a.I2 > 2a.O 2> 2a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2a.O $srcdir/2a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2a"; fi;;
+ 1) $echo "Test 2a failed: files 2a.O and $srcdir/2a.X differ" 1>&2
+ (diff -c 2a.O $srcdir/2a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2a may have failed." 1>&2
+ $echo The command "cmp 2a.O $srcdir/2a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2a.E || rm -f 2a.E
+$xx -a1 -e . -o 2.1,2.2,2.3 $srcdir/2b.I1 $srcdir/2b.I2 > 2b.O 2> 2b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2b.O $srcdir/2b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2b"; fi;;
+ 1) $echo "Test 2b failed: files 2b.O and $srcdir/2b.X differ" 1>&2
+ (diff -c 2b.O $srcdir/2b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2b may have failed." 1>&2
+ $echo The command "cmp 2b.O $srcdir/2b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2b.E || rm -f 2b.E
+$xx -a1 -e . -o 2.1,2.2,2.3 $srcdir/2c.I1 $srcdir/2c.I2 > 2c.O 2> 2c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2c failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2c.O $srcdir/2c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2c"; fi;;
+ 1) $echo "Test 2c failed: files 2c.O and $srcdir/2c.X differ" 1>&2
+ (diff -c 2c.O $srcdir/2c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2c may have failed." 1>&2
+ $echo The command "cmp 2c.O $srcdir/2c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2c.E || rm -f 2c.E
+$xx -t: $srcdir/3a.I1 $srcdir/3a.I2 > 3a.O 2> 3a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3a.O $srcdir/3a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3a"; fi;;
+ 1) $echo "Test 3a failed: files 3a.O and $srcdir/3a.X differ" 1>&2
+ (diff -c 3a.O $srcdir/3a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3a may have failed." 1>&2
+ $echo The command "cmp 3a.O $srcdir/3a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3a.E || rm -f 3a.E
+$xx -v 1 $srcdir/4a.I1 $srcdir/4a.I2 > 4a.O 2> 4a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4a.O $srcdir/4a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4a"; fi;;
+ 1) $echo "Test 4a failed: files 4a.O and $srcdir/4a.X differ" 1>&2
+ (diff -c 4a.O $srcdir/4a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4a may have failed." 1>&2
+ $echo The command "cmp 4a.O $srcdir/4a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4a.E || rm -f 4a.E
+$xx -v 2 $srcdir/4b.I1 $srcdir/4b.I2 > 4b.O 2> 4b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4b.O $srcdir/4b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4b"; fi;;
+ 1) $echo "Test 4b failed: files 4b.O and $srcdir/4b.X differ" 1>&2
+ (diff -c 4b.O $srcdir/4b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4b may have failed." 1>&2
+ $echo The command "cmp 4b.O $srcdir/4b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4b.E || rm -f 4b.E
+$xx -v 1 $srcdir/4c.I1 $srcdir/4c.I2 > 4c.O 2> 4c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4c failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4c.O $srcdir/4c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4c"; fi;;
+ 1) $echo "Test 4c failed: files 4c.O and $srcdir/4c.X differ" 1>&2
+ (diff -c 4c.O $srcdir/4c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4c may have failed." 1>&2
+ $echo The command "cmp 4c.O $srcdir/4c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4c.E || rm -f 4c.E
+$xx -v 2 $srcdir/4d.I1 $srcdir/4d.I2 > 4d.O 2> 4d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4d failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4d.O $srcdir/4d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4d"; fi;;
+ 1) $echo "Test 4d failed: files 4d.O and $srcdir/4d.X differ" 1>&2
+ (diff -c 4d.O $srcdir/4d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4d may have failed." 1>&2
+ $echo The command "cmp 4d.O $srcdir/4d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4d.E || rm -f 4d.E
+$xx -v 2 $srcdir/4e.I1 $srcdir/4e.I2 > 4e.O 2> 4e.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4e failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4e.O $srcdir/4e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4e"; fi;;
+ 1) $echo "Test 4e failed: files 4e.O and $srcdir/4e.X differ" 1>&2
+ (diff -c 4e.O $srcdir/4e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4e may have failed." 1>&2
+ $echo The command "cmp 4e.O $srcdir/4e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4e.E || rm -f 4e.E
+$xx -a1 -e - -o 1.1,2.2 $srcdir/5a.I1 $srcdir/5a.I2 > 5a.O 2> 5a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5a.O $srcdir/5a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5a"; fi;;
+ 1) $echo "Test 5a failed: files 5a.O and $srcdir/5a.X differ" 1>&2
+ (diff -c 5a.O $srcdir/5a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5a may have failed." 1>&2
+ $echo The command "cmp 5a.O $srcdir/5a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5a.E || rm -f 5a.E
+$xx -a1 -e - -o 1.1,2.2 $srcdir/5b.I1 $srcdir/5b.I2 > 5b.O 2> 5b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5b.O $srcdir/5b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5b"; fi;;
+ 1) $echo "Test 5b failed: files 5b.O and $srcdir/5b.X differ" 1>&2
+ (diff -c 5b.O $srcdir/5b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5b may have failed." 1>&2
+ $echo The command "cmp 5b.O $srcdir/5b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5b.E || rm -f 5b.E
+$xx -a1 -e - -o 1.1,2.2 $srcdir/5c.I1 $srcdir/5c.I2 > 5c.O 2> 5c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5c failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5c.O $srcdir/5c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5c"; fi;;
+ 1) $echo "Test 5c failed: files 5c.O and $srcdir/5c.X differ" 1>&2
+ (diff -c 5c.O $srcdir/5c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5c may have failed." 1>&2
+ $echo The command "cmp 5c.O $srcdir/5c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5c.E || rm -f 5c.E
+$xx -a1 -e - -o 1.1,2.2 $srcdir/5d.I1 $srcdir/5d.I2 > 5d.O 2> 5d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5d failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5d.O $srcdir/5d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5d"; fi;;
+ 1) $echo "Test 5d failed: files 5d.O and $srcdir/5d.X differ" 1>&2
+ (diff -c 5d.O $srcdir/5d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5d may have failed." 1>&2
+ $echo The command "cmp 5d.O $srcdir/5d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5d.E || rm -f 5d.E
+$xx -a2 -e - -o 1.1,2.2 $srcdir/5e.I1 $srcdir/5e.I2 > 5e.O 2> 5e.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5e failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5e.O $srcdir/5e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5e"; fi;;
+ 1) $echo "Test 5e failed: files 5e.O and $srcdir/5e.X differ" 1>&2
+ (diff -c 5e.O $srcdir/5e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5e may have failed." 1>&2
+ $echo The command "cmp 5e.O $srcdir/5e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5e.E || rm -f 5e.E
+$xx -a2 -e - -o 2.2,1.1 $srcdir/5f.I1 $srcdir/5f.I2 > 5f.O 2> 5f.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5f failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5f.O $srcdir/5f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5f"; fi;;
+ 1) $echo "Test 5f failed: files 5f.O and $srcdir/5f.X differ" 1>&2
+ (diff -c 5f.O $srcdir/5f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5f may have failed." 1>&2
+ $echo The command "cmp 5f.O $srcdir/5f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5f.E || rm -f 5f.E
+$xx -a1 -e - -o 2.2,1.1 $srcdir/5g.I1 $srcdir/5g.I2 > 5g.O 2> 5g.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5g failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5g.O $srcdir/5g.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5g"; fi;;
+ 1) $echo "Test 5g failed: files 5g.O and $srcdir/5g.X differ" 1>&2
+ (diff -c 5g.O $srcdir/5g.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5g may have failed." 1>&2
+ $echo The command "cmp 5g.O $srcdir/5g.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5g.E || rm -f 5g.E
+$xx -a1 -e - -o 2.2,1.1 $srcdir/5h.I1 $srcdir/5h.I2 > 5h.O 2> 5h.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5h failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5h.O $srcdir/5h.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5h"; fi;;
+ 1) $echo "Test 5h failed: files 5h.O and $srcdir/5h.X differ" 1>&2
+ (diff -c 5h.O $srcdir/5h.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5h may have failed." 1>&2
+ $echo The command "cmp 5h.O $srcdir/5h.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5h.E || rm -f 5h.E
+$xx -a1 -e - -o 1.1,2.2 $srcdir/5i.I1 $srcdir/5i.I2 > 5i.O 2> 5i.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5i failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5i.O $srcdir/5i.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5i"; fi;;
+ 1) $echo "Test 5i failed: files 5i.O and $srcdir/5i.X differ" 1>&2
+ (diff -c 5i.O $srcdir/5i.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5i may have failed." 1>&2
+ $echo The command "cmp 5i.O $srcdir/5i.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5i.E || rm -f 5i.E
+$xx -a2 -e - -o 2.2,1.1 $srcdir/5j.I1 $srcdir/5j.I2 > 5j.O 2> 5j.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5j failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5j.O $srcdir/5j.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5j"; fi;;
+ 1) $echo "Test 5j failed: files 5j.O and $srcdir/5j.X differ" 1>&2
+ (diff -c 5j.O $srcdir/5j.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5j may have failed." 1>&2
+ $echo The command "cmp 5j.O $srcdir/5j.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5j.E || rm -f 5j.E
+$xx -a2 -e - -o 2.2,1.1 $srcdir/5k.I1 $srcdir/5k.I2 > 5k.O 2> 5k.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5k failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5k.O $srcdir/5k.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5k"; fi;;
+ 1) $echo "Test 5k failed: files 5k.O and $srcdir/5k.X differ" 1>&2
+ (diff -c 5k.O $srcdir/5k.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5k may have failed." 1>&2
+ $echo The command "cmp 5k.O $srcdir/5k.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5k.E || rm -f 5k.E
+$xx -a1 -e - -o 2.2,1.1 $srcdir/5l.I1 $srcdir/5l.I2 > 5l.O 2> 5l.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5l failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5l.O $srcdir/5l.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5l"; fi;;
+ 1) $echo "Test 5l failed: files 5l.O and $srcdir/5l.X differ" 1>&2
+ (diff -c 5l.O $srcdir/5l.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5l may have failed." 1>&2
+ $echo The command "cmp 5l.O $srcdir/5l.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5l.E || rm -f 5l.E
+$xx -a2 -e - -o 2.2,1.1 $srcdir/5m.I1 $srcdir/5m.I2 > 5m.O 2> 5m.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5m failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5m.O $srcdir/5m.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5m"; fi;;
+ 1) $echo "Test 5m failed: files 5m.O and $srcdir/5m.X differ" 1>&2
+ (diff -c 5m.O $srcdir/5m.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5m may have failed." 1>&2
+ $echo The command "cmp 5m.O $srcdir/5m.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5m.E || rm -f 5m.E
+$xx -e - $srcdir/6a.I1 $srcdir/6a.I2 > 6a.O 2> 6a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6a.O $srcdir/6a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6a"; fi;;
+ 1) $echo "Test 6a failed: files 6a.O and $srcdir/6a.X differ" 1>&2
+ (diff -c 6a.O $srcdir/6a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6a may have failed." 1>&2
+ $echo The command "cmp 6a.O $srcdir/6a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6a.E || rm -f 6a.E
+$xx -a1 -e - $srcdir/6b.I1 $srcdir/6b.I2 > 6b.O 2> 6b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6b.O $srcdir/6b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6b"; fi;;
+ 1) $echo "Test 6b failed: files 6b.O and $srcdir/6b.X differ" 1>&2
+ (diff -c 6b.O $srcdir/6b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6b may have failed." 1>&2
+ $echo The command "cmp 6b.O $srcdir/6b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6b.E || rm -f 6b.E
+$xx -a1 -e - $srcdir/6c.I1 $srcdir/6c.I2 > 6c.O 2> 6c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6c failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6c.O $srcdir/6c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6c"; fi;;
+ 1) $echo "Test 6c failed: files 6c.O and $srcdir/6c.X differ" 1>&2
+ (diff -c 6c.O $srcdir/6c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6c may have failed." 1>&2
+ $echo The command "cmp 6c.O $srcdir/6c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6c.E || rm -f 6c.E
+$xx -a1 -e . -o 2.7 $srcdir/7a.I1 $srcdir/7a.I2 > 7a.O 2> 7a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7a.O $srcdir/7a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7a"; fi;;
+ 1) $echo "Test 7a failed: files 7a.O and $srcdir/7a.X differ" 1>&2
+ (diff -c 7a.O $srcdir/7a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7a may have failed." 1>&2
+ $echo The command "cmp 7a.O $srcdir/7a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7a.E || rm -f 7a.E
+$xx -a1 -e . -o 0,1.2 $srcdir/8a.I1 $srcdir/8a.I2 > 8a.O 2> 8a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 8a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 8a.O $srcdir/8a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 8a"; fi;;
+ 1) $echo "Test 8a failed: files 8a.O and $srcdir/8a.X differ" 1>&2
+ (diff -c 8a.O $srcdir/8a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 8a may have failed." 1>&2
+ $echo The command "cmp 8a.O $srcdir/8a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 8a.E || rm -f 8a.E
+$xx -a1 -a2 -e . -o 0,1.2 $srcdir/8b.I1 $srcdir/8b.I2 > 8b.O 2> 8b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 8b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 8b.O $srcdir/8b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 8b"; fi;;
+ 1) $echo "Test 8b failed: files 8b.O and $srcdir/8b.X differ" 1>&2
+ (diff -c 8b.O $srcdir/8b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 8b may have failed." 1>&2
+ $echo The command "cmp 8b.O $srcdir/8b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 8b.E || rm -f 8b.E
+$xx $srcdir/9a.I1 $srcdir/9a.I2 > 9a.O 2> 9a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9a.O $srcdir/9a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9a"; fi;;
+ 1) $echo "Test 9a failed: files 9a.O and $srcdir/9a.X differ" 1>&2
+ (diff -c 9a.O $srcdir/9a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9a may have failed." 1>&2
+ $echo The command "cmp 9a.O $srcdir/9a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9a.E || rm -f 9a.E
+$xx -t: -1 1 -2 1 $srcdir/trailing-sp.I1 $srcdir/trailing-sp.I2 > trailing-sp.O 2> trailing-sp.E
+code=$?
+if test $code != 0; then
+ $echo "Test trailing-sp failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp trailing-sp.O $srcdir/trailing-sp.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed trailing-sp"; fi;;
+ 1) $echo "Test trailing-sp failed: files trailing-sp.O and $srcdir/trailing-sp.X differ" 1>&2
+ (diff -c trailing-sp.O $srcdir/trailing-sp.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test trailing-sp may have failed." 1>&2
+ $echo The command "cmp trailing-sp.O $srcdir/trailing-sp.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s trailing-sp.E || rm -f trailing-sp.E
+$xx $srcdir/sp-vs-blank.I1 $srcdir/sp-vs-blank.I2 > sp-vs-blank.O 2> sp-vs-blank.E
+code=$?
+if test $code != 0; then
+ $echo "Test sp-vs-blank failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp sp-vs-blank.O $srcdir/sp-vs-blank.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed sp-vs-blank"; fi;;
+ 1) $echo "Test sp-vs-blank failed: files sp-vs-blank.O and $srcdir/sp-vs-blank.X differ" 1>&2
+ (diff -c sp-vs-blank.O $srcdir/sp-vs-blank.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test sp-vs-blank may have failed." 1>&2
+ $echo The command "cmp sp-vs-blank.O $srcdir/sp-vs-blank.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s sp-vs-blank.E || rm -f sp-vs-blank.E
+$xx -t§ $srcdir/8-bit-t.I1 $srcdir/8-bit-t.I2 > 8-bit-t.O 2> 8-bit-t.E
+code=$?
+if test $code != 0; then
+ $echo "Test 8-bit-t failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 8-bit-t.O $srcdir/8-bit-t.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 8-bit-t"; fi;;
+ 1) $echo "Test 8-bit-t failed: files 8-bit-t.O and $srcdir/8-bit-t.X differ" 1>&2
+ (diff -c 8-bit-t.O $srcdir/8-bit-t.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 8-bit-t may have failed." 1>&2
+ $echo The command "cmp 8-bit-t.O $srcdir/8-bit-t.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 8-bit-t.E || rm -f 8-bit-t.E
+$xx -1 340282366920938463463374607431768211456 -2 2 $srcdir/bigfield.I1 $srcdir/bigfield.I2 > bigfield.O 2> bigfield.E
+code=$?
+if test $code != 0; then
+ $echo "Test bigfield failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp bigfield.O $srcdir/bigfield.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed bigfield"; fi;;
+ 1) $echo "Test bigfield failed: files bigfield.O and $srcdir/bigfield.X differ" 1>&2
+ (diff -c bigfield.O $srcdir/bigfield.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test bigfield may have failed." 1>&2
+ $echo The command "cmp bigfield.O $srcdir/bigfield.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s bigfield.E || rm -f bigfield.E
+$xx -j x > invalid-j.O 2> invalid-j.E
+code=$?
+if test $code != 1; then
+ $echo "Test invalid-j failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp invalid-j.O $srcdir/invalid-j.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed invalid-j"; fi;;
+ 1) $echo "Test invalid-j failed: files invalid-j.O and $srcdir/invalid-j.X differ" 1>&2
+ (diff -c invalid-j.O $srcdir/invalid-j.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test invalid-j may have failed." 1>&2
+ $echo The command "cmp invalid-j.O $srcdir/invalid-j.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s invalid-j.E || rm -f invalid-j.E
+if test $errors = 0; then
+ $echo Passed all 40 tests. 1>&2
+else
+ $echo Failed $errors tests. 1>&2
+fi
+test $errors = 0 || errors=1
+exit $errors
diff --git a/tests/join/sp-vs-blank.I1 b/tests/join/sp-vs-blank.I1
new file mode 100644
index 0000000..3ae5da9
--- /dev/null
+++ b/tests/join/sp-vs-blank.I1
@@ -0,0 +1 @@
+ 1
diff --git a/tests/join/sp-vs-blank.I2 b/tests/join/sp-vs-blank.I2
new file mode 100644
index 0000000..30bc757
--- /dev/null
+++ b/tests/join/sp-vs-blank.I2
@@ -0,0 +1 @@
+ 2
diff --git a/tests/join/sp-vs-blank.X b/tests/join/sp-vs-blank.X
new file mode 100644
index 0000000..d5b2a3b
--- /dev/null
+++ b/tests/join/sp-vs-blank.X
@@ -0,0 +1 @@
+ 1 2
diff --git a/tests/join/trailing-sp.I1 b/tests/join/trailing-sp.I1
new file mode 100644
index 0000000..6d034ed
--- /dev/null
+++ b/tests/join/trailing-sp.I1
@@ -0,0 +1 @@
+a:x
diff --git a/tests/join/trailing-sp.I2 b/tests/join/trailing-sp.I2
new file mode 100644
index 0000000..6ca8c65
--- /dev/null
+++ b/tests/join/trailing-sp.I2
@@ -0,0 +1 @@
+a:y
diff --git a/tests/join/trailing-sp.X b/tests/join/trailing-sp.X
new file mode 100644
index 0000000..2969d5a
--- /dev/null
+++ b/tests/join/trailing-sp.X
@@ -0,0 +1 @@
+a:x :y
diff --git a/tests/lang-default b/tests/lang-default
new file mode 100644
index 0000000..882672f
--- /dev/null
+++ b/tests/lang-default
@@ -0,0 +1,10 @@
+#!/bin/sh
+# Set locale-related environment variables so we get consistent
+# message translations, time formats, sort orderings, etc.
+
+LC_ALL=C
+export LC_ALL
+unset LANGUAGE NLSPATH
+
+# These settings shouldn't matter, but unset them anyway just in case.
+unset LANG LC_COLLATE LC_CTYPE LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME
diff --git a/tests/ln/Makefile.am b/tests/ln/Makefile.am
new file mode 100644
index 0000000..7ae15a7
--- /dev/null
+++ b/tests/ln/Makefile.am
@@ -0,0 +1,6 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+TESTS = hard-backup target-1 sf-1 misc backup-1
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
diff --git a/tests/ln/Makefile.in b/tests/ln/Makefile.in
new file mode 100644
index 0000000..d59ce9a
--- /dev/null
+++ b/tests/ln/Makefile.in
@@ -0,0 +1,716 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/ln
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = hard-backup target-1 sf-1 misc backup-1
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/ln/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/ln/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/ln/backup-1 b/tests/ln/backup-1
new file mode 100755
index 0000000..b246693
--- /dev/null
+++ b/tests/ln/backup-1
@@ -0,0 +1,42 @@
+#!/bin/sh
+# Try to create a symlink with backup where the destination file exists
+# and the backup file name is a hard link to the destination file.
+
+# Copyright (C) 1999 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# Based on a problem report from Jamie Lokier.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ln --version
+fi
+
+trap "rm -rf a b b~" 0 1 2 3 15
+
+framework_failure=0
+touch a b || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+ln b b~ || fail=1
+ln -f --b=simple a b || fail=1
+
+exit $fail
diff --git a/tests/ln/hard-backup b/tests/ln/hard-backup
new file mode 100755
index 0000000..e37938d
--- /dev/null
+++ b/tests/ln/hard-backup
@@ -0,0 +1,54 @@
+#!/bin/sh
+# Ensure that 'ln --backup F F' gives a proper diagnostic.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ln --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+touch f || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+ln --backup f f 2> out && fail=1
+cat <<\EOF > exp || fail=1
+ln: `f' and `f' are the same file
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/ln/misc b/tests/ln/misc
new file mode 100755
index 0000000..9fc348a
--- /dev/null
+++ b/tests/ln/misc
@@ -0,0 +1,166 @@
+#!/bin/sh
+# Miscellaneous tests for "ln".
+
+# Copyright (C) 1998, 1999, 2000, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ln --version
+fi
+
+pwd=`pwd`
+tmp=t2-ln.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+t=tln-symlink
+d=tln-subdir
+ld=tln-symlink-to-subdir
+f=tln-file
+fail=0
+
+# Create a simple symlink with both source and destination files
+# in current directory.
+touch $f || framework_failure=1
+rm -f $t || framework_failure=1
+ln -s $f $t || fail=1
+test -f $t || fail=1
+rm $t $f
+
+# Create a symlink with source file and explicit destination directory/file.
+touch $f || framework_failure=1
+rm -rf $d || framework_failure=1
+mkdir $d || framework_failure=1
+ln -s ../$f $d/$t || fail=1
+test -f $d/$t || fail=1
+rm -rf $d $f
+
+# Create a symlink with source file and destination directory.
+touch $f || framework_failure=1
+rm -rf $d || framework_failure=1
+mkdir $d || framework_failure=1
+ln -s ../$f $d || fail=1
+test -f $d/$f || fail=1
+rm -rf $d $f
+
+# See whether a trailing slash is followed too far.
+touch $f || framework_failure=1
+rm -rf $d || framework_failure=1
+mkdir $d $d/$f || framework_failure=1
+ln $f $d/ 2> /dev/null && fail=1
+ln -s $f $d/ 2> /dev/null && fail=1
+rm -rf $d $f
+
+# Make sure we get a failure with existing dest without -f option
+touch $t || framework_failure=1
+# FIXME: don't ignore the error message but rather test
+# it to make sure it's the right one.
+ln -s $t $t 2> /dev/null && fail=1
+rm $t
+
+# Make sure -sf fails when src and dest are the same
+touch $t || framework_failure=1
+ln -sf $t $t 2> /dev/null && fail=1
+rm $t
+
+# Create a symlink with source file and no explicit directory
+rm -rf $d || framework_failure=1
+mkdir $d || framework_failure=1
+touch $d/$f || framework_failure=1
+ln -s $d/$f || fail=1
+test -f $f || fail=1
+rm -rf $d $f
+
+# Create a symlink with source file and destination symlink-to-directory.
+rm -rf $d $f $ld || framework_failure=1
+touch $f || framework_failure=1
+mkdir $d || framework_failure=1
+ln -s $d $ld
+ln -s ../$f $ld || fail=1
+test -f $d/$f || fail=1
+rm -rf $d $f $ld
+
+# Create a symlink with source file and destination symlink-to-directory.
+# BUT use the new --no-dereference option.
+rm -rf $d $f $ld || framework_failure=1
+touch $f || framework_failure=1
+mkdir $d || framework_failure=1
+ln -s $d $ld
+af=`pwd`/$f
+ln --no-dereference -fs "$af" $ld || fail=1
+test -f $ld || fail=1
+rm -rf $d $f $ld
+
+# Try to create a symlink with backup where the destination file exists
+# and the backup file name is a hard link to the destination file.
+touch a b || framework_failure=1
+ln b b~ || framework_failure=1
+ln -f --b=simple a b || fail=1
+
+# ===================================================
+# determine if link(2) follows symlinks on this system
+touch a || framework_failure=1
+ln -s a symlink || framework_failure=1
+ln symlink hard-to-sym > /dev/null 2>&1 || framework_failure=1
+ls=`ls -lG hard-to-sym`x
+case "$ls" in
+ *'hard-to-symx') link_follows_symlink=yes ;;
+ *'hard-to-sym -> ax') link_follows_symlink=no ;;
+ *) framework_failure=1 ;;
+esac
+
+if test $link_follows_symlink = no; then
+ # Create a hard link to a dangling symlink.
+ # This is not portable. At least sunos4.1.4 and OpenBSD 2.3 fail this test.
+ # They get this:
+ # ln: cannot create hard link `hard-to-dangle' to `no-such-dir': \
+ # No such file or directory
+ #
+ ln -s /no-such-dir || fail=1
+ ln no-such-dir hard-to-dangle > /dev/null 2>&1 || fail=1
+fi
+rm -rf a symlink hard-to-sym hard-to-dangle
+# ===================================================
+
+# Make sure ln can make simple backups.
+# This was fixed in 4.0.34. Broken in 4.0r.
+for cmd in ln cp mv ginstall; do
+ rm -rf a x a.orig
+ touch a x || framework_failure=1
+ $cmd --backup=simple --suffix=.orig x a || fail=1
+ test -f a.orig || fail=1
+done
+
+# ===================================================
+# With coreutils-5.2.1, this would mistakenly access argv[1][-1].
+# I'm including it here, in case some day programs like valgrind detect that.
+# Purify probably would have done so.
+ln foo '' 2> /dev/null
+
+# ===================================================
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ exit 1
+fi
+
+exit $fail
diff --git a/tests/ln/sf-1 b/tests/ln/sf-1
new file mode 100755
index 0000000..971c25b
--- /dev/null
+++ b/tests/ln/sf-1
@@ -0,0 +1,54 @@
+#!/bin/sh
+# Test "ln -sf".
+
+# Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+test=sf-1
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ln --version
+fi
+
+# Make sure we get English translations.
+. $srcdir/../lang-default
+
+tmp=t-ln.$$
+
+test_failure=0
+mkdir $tmp || test_failure=1
+cd $tmp || test_failure=1
+echo foo > a || test_failure=1
+ln -s . b || test_failure=1
+
+if test $test_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+ln -sf a b > err 2>&1 && fail=1
+case `cat err` in
+ *'are the same file') ;;
+ *) fail=1 ;;
+esac
+
+cd ..
+rm -rf $tmp
+
+exit $fail
diff --git a/tests/ln/target-1 b/tests/ln/target-1
new file mode 100755
index 0000000..3efb987
--- /dev/null
+++ b/tests/ln/target-1
@@ -0,0 +1,50 @@
+#!/bin/sh
+# Test "ln --target-dir" with one file.
+
+# Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# Before coreutils-4.5.3, --target-dir didn't work with one file.
+# It would create the desired link, but would fail with a diagnosis like this:
+# ln: `d/.': cannot overwrite directory
+# Based on a test case from Dmitry V. Levin.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ln --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir d || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+ln -s --target-dir=d ../f || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/ls-2/Makefile.am b/tests/ls-2/Makefile.am
new file mode 100644
index 0000000..5ea746e
--- /dev/null
+++ b/tests/ls-2/Makefile.am
@@ -0,0 +1,13 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+
+EXTRA_DIST = $(TESTS)
+
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=ls
+
+TESTS = tests
diff --git a/tests/ls-2/Makefile.in b/tests/ls-2/Makefile.in
new file mode 100644
index 0000000..98146a7
--- /dev/null
+++ b/tests/ls-2/Makefile.in
@@ -0,0 +1,720 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/ls-2
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=ls
+
+TESTS = tests
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/ls-2/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/ls-2/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/ls-2/tests b/tests/ls-2/tests
new file mode 100755
index 0000000..d0257a6
--- /dev/null
+++ b/tests/ls-2/tests
@@ -0,0 +1,164 @@
+#!/bin/sh
+# -*- perl -*-
+
+# Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free
+# Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+# Set up files used by the setuid-etc tests; skip this entire test if
+# that cannot be done for some reason.
+test=../../src/test
+touch setuid && chmod u+s setuid && $test -u setuid &&
+touch setgid && chmod g+s setgid && $test -g setgid &&
+mkdir sticky && chmod +t sticky && $test -k sticky &&
+mkdir owt && chmod +t,o+w owt && $test -k owt &&
+mkdir owr && chmod o+w owr || {
+ echo 1>&2 "$0: cannot create setuid/setgid/sticky files," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - << \EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my $mkdir = {PRE => sub {mkdir 'd',0755 or die "d: $!\n"}};
+my $rmdir = {POST => sub {rmdir 'd' or die "d: $!\n"}};
+
+my $mkdir2 = {PRE => sub {mkdir 'd',0755 or die "d: $!\n";
+ mkdir 'd/e',0755 or die "d/e: $!\n" }};
+my $rmdir2 = {POST => sub {rmdir 'd/e' or die "d/e: $!\n";
+ rmdir 'd' or die "d: $!\n" }};
+
+my $slink_d = {PRE => sub {symlink '/', 'd' or die "d: $!\n";
+ $ENV{LS_COLORS}='ln=01;36:di=01;34:or=40;31;01'
+ }};
+my $unlink_d = {POST => sub {unlink 'd' or die "d: $!\n"}};
+
+my $mkdir_d_slink = {PRE => sub {mkdir 'd',0755 or die "d: $!\n";
+ symlink '/', 'd/s' or die "d/s: $!\n" }};
+my $rmdir_d_slink = {POST => sub {unlink 'd/s' or die "d/s: $!\n";
+ rmdir 'd' or die "d: $!\n" }};
+
+sub make_j_d ()
+{
+ mkdir 'j', 0700 or die "creating j: $!\n";
+ (open F, '>j/d') && close F or die "creating j/d: $!\n";
+ chmod 0555, 'j/d' or die "making j/d executable: $!\n";
+}
+
+my $exe_in_subdir = {PRE => sub { make_j_d (); $ENV{LS_COLORS}='ex=01;32' }};
+my $remove_j = {POST => sub {unlink 'j/d' or die "j/d: $!\n";
+ rmdir 'j' or die "j: $!\n" }};
+
+my $q_bell = {IN => {"q\a" => ''}};
+my @Tests =
+ (
+ # test-name options input expected-output
+ #
+ # quoting tests............................................
+ ['q-', $q_bell, {OUT => "q\a\n"}, {EXIT => 0}],
+ ['q-N', '-N', $q_bell, {OUT => "q\a\n"}, {ERR => ''}],
+ ['q-q', '-q', $q_bell, {OUT => "q?\n"}],
+ ['q-Q', '-Q', $q_bell, {OUT => "\"q\\a\"\n"}],
+
+ ['q-lit-q', '--quoting=literal -q', $q_bell, {OUT => "q?\n"}],
+ ['q-qs-lit', '--quoting=literal', $q_bell, {OUT => "q\a\n"}],
+ ['q-qs-sh', '--quoting=shell', $q_bell, {OUT => "q\a\n"}],
+ ['q-qs-sh-a', '--quoting=shell-always', $q_bell, {OUT => "'q\a'\n"}],
+ ['q-qs-c', '--quoting=c', $q_bell, {OUT => "\"q\\a\"\n"}],
+ ['q-qs-esc', '--quoting=escape', $q_bell, {OUT => "q\\a\n"}],
+ ['q-qs-c-1', '--quoting=c',
+ {IN => {"t\004" => ''}}, {OUT => "\"t\\004\"\n"}],
+
+ ['emptydir', 'd', {OUT => ''}, $mkdir, $rmdir],
+ ['emptydir-x2', 'd d', {OUT => "d:\n\nd:\n"}, $mkdir, $rmdir],
+ ['emptydir-R', '-R d', {OUT => "d:\n"}, $mkdir, $rmdir],
+
+ # test `ls -R .' ............................................
+ ['R-dot', '--ignore="[a-ce-zA-Z]*" -R .', {OUT => ".:\nd\n\n\./d:\n"},
+ $mkdir, $rmdir],
+
+ ['slink-dir-F', '-F d', {OUT => "d@\n"}, $slink_d, $unlink_d],
+ ['slink-dir-dF', '-dF d', {OUT => "d@\n"}, $slink_d, $unlink_d],
+ ['slinkdir-dFH', '-dFH d', {OUT => "d/\n"}, $slink_d, $unlink_d],
+ ['slinkdir-dFL', '-dFL d', {OUT => "d/\n"}, $slink_d, $unlink_d],
+
+ # Test for a bug that was fixed in coreutils-4.5.4.
+ ['sl-F-color', '-F --color=always d',
+ {OUT => "\e[0m\e[01;36md\e[0m\@\n\e[m"},
+ $slink_d, $unlink_d],
+ ['sl-dF-color', '-dF --color=always d',
+ {OUT => "\e[0m\e[01;36md\e[0m\@\n\e[m"},
+ $slink_d, $unlink_d],
+
+ # Test for a bug that was introduced in coreutils-4.5.4; fixed in 4.5.5.
+ # To demonstrate it, the file in question (with executable bit set)
+ # must not be a command line argument.
+ ['color-exe1', '--color=always j',
+ {OUT => "\e[0m\e[01;32md\e[0m\n\e[m"},
+ $exe_in_subdir, $remove_j],
+
+ # From Stéphane Chazelas.
+ ['no-a-isdir-b', 'no-dir d',
+ {OUT => "d:\n"},
+ {ERR => "ls: cannot access no-dir: No such file or directory\n"},
+ $mkdir, $rmdir, {EXIT => 2}],
+
+ ['recursive-2', '-R d', {OUT => "d:\ne\n\nd/e:\n"}, $mkdir2, $rmdir2],
+
+ ['setuid-etc', '-1 -d --color=always owr owt setgid setuid sticky',
+ {OUT =>
+ "\e[0m\e[34;42mowr\e[0m\n"
+ . "\e[30;42mowt\e[0m\n"
+ . "\e[30;43msetgid\e[0m\n"
+ . "\e[37;41msetuid\e[0m\n"
+ . "\e[37;44msticky\e[0m\n"
+ . "\e[m"
+ },
+
+ {POST => sub {
+ unlink qw(setuid setgid);
+ foreach my $dir (qw(owr owt sticky)) {rmdir $dir} }},
+ ],
+
+ # For 5.97 and earlier, --file-type acted like --indicator-style=slash.
+ ['file-type', '--file-type d', {OUT => "s@\n"},
+ $mkdir_d_slink, $rmdir_d_slink],
+ );
+
+my $save_temps = $ENV{SAVE_TEMPS};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/ls/Makefile.am b/tests/ls/Makefile.am
new file mode 100644
index 0000000..461ba07
--- /dev/null
+++ b/tests/ls/Makefile.am
@@ -0,0 +1,36 @@
+# Make coreutils tests for "ls". -*-Makefile-*-
+
+# Copyright (C) 1997-2003, 2006-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+TESTS = \
+ nameless-uid \
+ color-dtype-dir \
+ stat-failed \
+ stat-dtype \
+ inode dangle file-type recursive dired infloop \
+ rt-1 time-1 symlink-slash follow-slink no-arg m-option \
+ stat-vs-dirent
+
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PERL="$(PERL)" \
+ PROG=ls
diff --git a/tests/ls/Makefile.in b/tests/ls/Makefile.in
new file mode 100644
index 0000000..a77a08a
--- /dev/null
+++ b/tests/ls/Makefile.in
@@ -0,0 +1,747 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils tests for "ls". -*-Makefile-*-
+
+# Copyright (C) 1997-2003, 2006-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/ls
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = \
+ nameless-uid \
+ color-dtype-dir \
+ stat-failed \
+ stat-dtype \
+ inode dangle file-type recursive dired infloop \
+ rt-1 time-1 symlink-slash follow-slink no-arg m-option \
+ stat-vs-dirent
+
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PERL="$(PERL)" \
+ PROG=ls
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/ls/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/ls/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/ls/color-dtype-dir b/tests/ls/color-dtype-dir
new file mode 100755
index 0000000..f3f9ee9
--- /dev/null
+++ b/tests/ls/color-dtype-dir
@@ -0,0 +1,67 @@
+#!/bin/sh
+# Ensure "ls --color" properly colors other-writable and sticky directories.
+# Before coreutils-6.2, this test would fail, coloring all three
+# directories the same as the first one -- but only on a file system
+# with dirent.d_type support.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ls --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir d other-writable sticky || framework_failure=1
+chmod o+w other-writable || framework_failure=1
+chmod o+t sticky || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+ls --color=always > out || fail=1
+cat -A out > o1 || fail=1
+echo >> o1 || fail=1
+mv o1 out || fail=1
+
+cat <<\EOF > exp || fail=1
+^[[0m^[[01;34md^[[0m$
+^[[34;42mother-writable^[[0m$
+^[[0mout^[[0m$
+^[[37;44msticky^[[0m$
+^[[m
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/ls/dangle b/tests/ls/dangle
new file mode 100755
index 0000000..a3bc0d2
--- /dev/null
+++ b/tests/ls/dangle
@@ -0,0 +1,67 @@
+#!/bin/sh
+# Make sure ls properly handles dangling symlinks vs. ls's -L, -H, options.
+
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ls --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+ln -s no-such-file dangle || framework_failure=1
+mkdir -p dir/sub || framework_failure=1
+ln -s dir slink-to-dir || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# This must exit nonzero.
+ls -L dangle > /dev/null 2>&1 && fail=1
+# So must this.
+ls -H dangle > /dev/null 2>&1 && fail=1
+
+# This must exit successfully.
+ls dangle >> out || fail=1
+
+ls slink-to-dir >> out 2>&1 || fail=1
+ls -H slink-to-dir >> out 2>&1 || fail=1
+ls -L slink-to-dir >> out 2>&1 || fail=1
+
+cat <<\EOF > exp
+dangle
+sub
+sub
+sub
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/ls/dired b/tests/ls/dired
new file mode 100755
index 0000000..d6f32b4
--- /dev/null
+++ b/tests/ls/dired
@@ -0,0 +1,56 @@
+#!/bin/sh
+# make sure --dired option works
+
+# Copyright (C) 2001, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ls --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+tmp=dired.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir dir || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+LC_MESSAGES=C ls -lR --dired dir > out || fail=1
+cat <<EOF > exp
+ dir:
+ total 0
+//SUBDIRED// 2 5
+//DIRED-OPTIONS// --quoting-style=literal
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/ls/file-type b/tests/ls/file-type
new file mode 100755
index 0000000..80d778a
--- /dev/null
+++ b/tests/ls/file-type
@@ -0,0 +1,90 @@
+#!/bin/sh
+# contrast ls -F, ls -p, and ls --indicator-style=file-type
+
+# Copyright (C) 2002, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ls --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir sub
+cd sub
+mkdir dir
+touch regular executable
+chmod a+x executable
+ln -s regular slink-reg
+ln -s dir slink-dir
+ln -s nowhere slink-dangle
+mknod block b 20 20 2> /dev/null && block="block
+"
+mknod char c 10 10 2> /dev/null && char="char
+"
+mkfifo fifo
+cd ..
+
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+ls -F sub > out || fail=1
+cat <<EOF > exp
+$block${char}dir/
+executable*
+fifo|
+regular
+slink-dangle@
+slink-dir@
+slink-reg@
+EOF
+
+sed 's/\*//' exp > exp2
+ls --indicator-style=file-type sub > out2 || fail=1
+
+sed 's/[@|]$//' exp2 > exp3
+ls -p sub > out3 || fail=1
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+cmp out2 exp2 || fail=1
+test $fail = 1 && diff out2 exp2 2> /dev/null
+
+cmp out3 exp3 || fail=1
+test $fail = 1 && diff out3 exp3 2> /dev/null
+
+ls --color=auto -F sub > out || fail=1
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/ls/follow-slink b/tests/ls/follow-slink
new file mode 100755
index 0000000..00e9b1b
--- /dev/null
+++ b/tests/ls/follow-slink
@@ -0,0 +1,86 @@
+#!/bin/sh
+# make sure ls -L always follows symlinks
+
+# Copyright (C) 2000, 2002, 2004, 2006, 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ls --version
+fi
+
+pwd=`pwd`
+tmp=follow-sl.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+# Isolate output files from directory being listed
+mkdir dir dir/sub dir1 || framework_failure=1
+cd dir || framework_failure=1
+ln -s link link || framework_failure=1
+ln -s ../../dir1 sub/link-to-dir || framework_failure=1
+
+# Make sure the symlink was created.
+# `ln -s link link' succeeds, but creates no file on
+# systems running some DJGPP-2.03 libc.
+ls -F link > /dev/null || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# When explicitly listing a broken link, the command must fail.
+ls -L link 2> /dev/null && fail=1
+
+# When encountering a broken link implicitly, Solaris 9 and OpenBSD 3.4
+# list the link, provided no further information about the link needed
+# to be printed. Since POSIX does not specify one way or the other, we
+# opt for compatibility (this was broken in 5.3.0 through 5.94).
+LC_ALL=C ls -L > ../out-L || fail=1
+LC_ALL=C ls -FLR sub > ../out-FLR-sub || fail=1
+
+cd .. || fail=1
+
+cat <<\EOF > exp-L
+link
+sub
+EOF
+
+cat <<\EOF > exp-FLR-sub
+sub:
+link-to-dir/
+
+sub/link-to-dir:
+EOF
+
+cmp out-L exp-L || {
+ fail=1
+ diff out-L exp-L
+}
+cmp out-FLR-sub exp-FLR-sub || {
+ fail=1
+ diff out-FLR-sub exp-FLR-sub
+}
+
+(exit $fail); exit $fail
diff --git a/tests/ls/infloop b/tests/ls/infloop
new file mode 100755
index 0000000..f7790b8
--- /dev/null
+++ b/tests/ls/infloop
@@ -0,0 +1,61 @@
+#!/bin/sh
+# show that the following no longer makes ls infloop
+# mkdir loop; cd loop; ln -s ../loop sub; ls -RL
+
+# Copyright (C) 2001, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ls --version
+fi
+
+. $srcdir/../lang-default
+
+pwd=`pwd`
+tmp=infloop.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir loop || framework_failure=1
+ln -s ../loop loop/sub || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+ls -RL loop 2>err | head -n 7 > out
+# With an inf-looping ls, out will contain these 7 lines:
+cat <<EOF > bad
+loop:
+sub
+
+loop/sub:
+sub
+
+loop/sub/sub:
+EOF
+
+cmp out bad 2>/dev/null && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/ls/inode b/tests/ls/inode
new file mode 100755
index 0000000..305eb22
--- /dev/null
+++ b/tests/ls/inode
@@ -0,0 +1,83 @@
+#!/bin/sh
+# Make sure that ls -i works properly on symlinks.
+
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ls --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+touch f || framework_failure=1
+ln -s f slink || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# When listed explicitly:
+
+set x `ls -Ci f slink`; shift
+test $# = 4 || fail=1
+# The inode numbers should differ.
+test "$1" != "$3" || fail=1
+
+set x `ls -CLi f slink`; shift
+test $# = 4 || fail=1
+# With -L, they must be the same.
+test "$1" = "$3" || fail=1
+
+set x `ls -CHi f slink`; shift
+test $# = 4 || fail=1
+# With -H, they must be the same, too, from the command line.
+# Note that POSIX says -H must make ls dereference only
+# symlinks (specified on the command line) to directories,
+# but the historical BSD meaning of -H is to dereference
+# any symlink given on the command line. For compatibility GNU ls
+# implements the BSD semantics.
+test "$1" = "$3" || fail=1
+
+# When listed from a directory:
+
+set x `ls -Ci`; shift
+test $# = 4 || fail=1
+# The inode numbers should differ.
+test "$1" != "$3" || fail=1
+
+set x `ls -CLi`; shift
+test $# = 4 || fail=1
+# With -L, they must be the same.
+test "$1" = "$3" || fail=1
+
+set x `ls -CHi`; shift
+test $# = 4 || fail=1
+# With -H, they must be different from inside a directory.
+test "$1" != "$3" || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/ls/m-option b/tests/ls/m-option
new file mode 100755
index 0000000..e002fc4
--- /dev/null
+++ b/tests/ls/m-option
@@ -0,0 +1,61 @@
+#!/bin/sh
+# exercise the -m option
+
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ls --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+seq 2000 > b || framework_failure=1
+touch a || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Before coreutils-5.1.1, the following would output a space after the comma.
+ls -w2 -m a b > out || fail=1
+
+# Before coreutils-5.1.1, the following would produce leading white space.
+# All of the sed business is because the sizes are not portable.
+ls -sm a b | sed 's/^[0-9]/0/;s/, [0-9][0-9]* b/, 12 b/' >> out || fail=1
+cat <<\EOF > exp || fail=1
+a,
+b
+0 a, 12 b
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/ls/nameless-uid b/tests/ls/nameless-uid
new file mode 100755
index 0000000..70b0613
--- /dev/null
+++ b/tests/ls/nameless-uid
@@ -0,0 +1,65 @@
+#!/bin/sh
+# Ensure that ls -l works on files with nameless uid and/or gid
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ls --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ (exit 77); exit 77
+}
+
+nameless_uid=`$PERL -e 'foreach my $i (1000..16*1024) { getpwuid $i or (print "$i\n"), exit }'`
+
+if test x$nameless_uid = x; then
+ echo "$0: couldn't find a nameless UID" 1>&2
+ (exit 77); exit 77
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+touch f || framework_failure=1
+chown $nameless_uid f || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+set -- `ls -o f` || fail=1
+test $3 = $nameless_uid || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/ls/no-arg b/tests/ls/no-arg
new file mode 100755
index 0000000..0c56e03
--- /dev/null
+++ b/tests/ls/no-arg
@@ -0,0 +1,76 @@
+#!/bin/sh
+# make sure ls and `ls -R' do the right thing when invoked with no arguments.
+
+# Copyright (C) 2001, 2003, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ls --version
+fi
+
+pwd=`pwd`
+tmp=no-args.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p dir/subdir || framework_failure=1
+touch dir/subdir/file2 || framework_failure=1
+ln -s f symlink || framework_failure=1
+
+cat > exp <<\EOF || framework_failure=1
+dir
+exp
+out
+symlink
+EOF
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+fail=0
+
+ls -1 > out || fail=1
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+cat > exp <<\EOF
+.:
+dir
+exp
+out
+symlink
+
+./dir:
+subdir
+
+./dir/subdir:
+file2
+EOF
+
+ls -R1 > out || fail=1
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/ls/recursive b/tests/ls/recursive
new file mode 100755
index 0000000..c4a2725
--- /dev/null
+++ b/tests/ls/recursive
@@ -0,0 +1,85 @@
+#!/bin/sh
+# 4.1.1 and 4.1.2 had a bug whereby some recursive listings
+# didn't include a blank line between per-directory groups of files.
+
+# Copyright (C) 2001, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ls --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+tmp=recursive.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir x y a b c a/1 a/2 a/3 || framework_failure=1
+touch f a/1/I a/1/II || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# This first example is from Andreas Schwab's bug report.
+ls -R1 a b c > out || fail=1
+cat <<EOF > exp
+a:
+1
+2
+3
+
+a/1:
+I
+II
+
+a/2:
+
+a/3:
+
+b:
+
+c:
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+rm -rf out exp
+ls -R1 x y f > out || fail=1
+cat <<EOF > exp
+f
+
+x:
+
+y:
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/ls/rt-1 b/tests/ls/rt-1
new file mode 100755
index 0000000..5c0f3c8
--- /dev/null
+++ b/tests/ls/rt-1
@@ -0,0 +1,71 @@
+#!/bin/sh
+# Make sure name is used as secondary key when sorting on mtime or ctime.
+
+# Copyright (C) 1998, 2001, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ls --version
+ touch --version
+fi
+
+pwd=`pwd`
+tmp=t-ls.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+date=1998-01-15
+
+touch -d "$date" c || framework_failure=1
+touch -d "$date" a || framework_failure=1
+touch -d "$date" b || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+ls -1t a b c > out || fail=1
+cat <<EOF > exp
+a
+b
+c
+EOF
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+rm -rf out exp
+ls -1rt a b c > out || fail=1
+cat <<EOF > exp
+c
+b
+a
+EOF
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/ls/stat-dtype b/tests/ls/stat-dtype
new file mode 100755
index 0000000..9e903ac
--- /dev/null
+++ b/tests/ls/stat-dtype
@@ -0,0 +1,86 @@
+#!/bin/sh
+# Ensure that ls --file-type does not call stat unnecessarily.
+# Also check for the dtype-related (and fs-type dependent) bug
+# in coreutils-6.0 that made ls -CF columns misaligned.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# The trick is to create an un-stat'able symlink and to see if ls
+# can report its type nonetheless, using dirent.d_type.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ls --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+# Skip this test unless "." is on a file system with useful d_type info.
+# FIXME: This uses "ls -p" to decide whether to test "ls" with other options,
+# but if ls's d_type code is buggy then "ls -p" might be buggy too.
+mkdir -p c/d || framework_failure=1
+chmod a-x c || framework_failure=1
+if test "X`ls -p c 2>&1`" != Xd/; then
+ echo "$0: '.' is not on a suitable file system for this test" 1>&2
+ echo "$0: skipping this test" 1>&2
+ (exit 77); exit 77
+fi
+
+mkdir d || framework_failure=1
+ln -s / d/s || framework_failure=1
+chmod 600 d || framework_failure=1
+
+mkdir -p e/a2345 e/b || framework_failure=1
+chmod 600 e || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+ls --file-type d > out || fail=1
+cat <<\EOF > exp || fail=1
+s@
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+rm -f out exp
+# Check for the ls -CF misaligned-columns bug:
+ls -CF e > out || fail=1
+
+# coreutils-6.0 would print two spaces after the first slash,
+# rather than the appropriate TAB.
+printf 'a2345/\tb/\n' > exp || fail=1
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/ls/stat-failed b/tests/ls/stat-failed
new file mode 100755
index 0000000..fb1cff8
--- /dev/null
+++ b/tests/ls/stat-failed
@@ -0,0 +1,75 @@
+#!/bin/sh
+# Verify that ls works properly when it fails to stat a file that is
+# not mentioned on the command line.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ls --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir d || framework_failure=1
+ln -s / d/s || framework_failure=1
+chmod 600 d || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+ls -Log d > out 2> err
+test $? = 1 || fail=1
+
+cat <<\EOF > exp || fail=1
+total 0
+?????????? ? ? ? s
+EOF
+
+sed 's/^l/?/' out | cmp - exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+# Ensure that the offsets in --dired output are accurate.
+rm -f out exp
+ls --dired -l d > out 2> /dev/null && fail=1
+
+cat <<\EOF > exp || fail=1
+ total 0
+ ?????????? ? ? ? ? ? s
+//DIRED// 44 45
+//DIRED-OPTIONS// --quoting-style=literal
+EOF
+
+sed 's/^ l/ ?/' out | cmp - exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/ls/stat-vs-dirent b/tests/ls/stat-vs-dirent
new file mode 100755
index 0000000..b71d7dd
--- /dev/null
+++ b/tests/ls/stat-vs-dirent
@@ -0,0 +1,83 @@
+#!/bin/sh
+# Ensure that d_ino (from ls -di) and st_ino (from stat --format=%i) match.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ls --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+root_dev_ino=`stat --format=%d-%i /`
+t=`pwd`
+while :; do
+ ls -i1 "$t" > tmp
+ if test $? = 0; then
+ # Extract the inode number from the first line of output from ls -i1.
+ # This value comes from dirent.d_ino, on systems with d_ino support.
+ d_ino=`sed -n '1s/^ *\([0-9][0-9]*\) .*/\1/p;q' tmp`
+
+ # Extract the name of the corresponding directory entry.
+ file=`sed -n '1s/^ *[0-9][0-9]* *//p;q' tmp`
+
+ # Get its inode number (stat.st_ino) via stat(1)'s call to lstat.
+ st_ino=`stat --format=%i "$t/$file"`
+
+ # Make sure that they are the same.
+ # We know from experience that there may be mismatches on some
+ # buggy file systems, at mount points.
+ if test "$d_ino" != "$st_ino"; then
+ echo "$0: test failed: $t/$file: d_ino($d_ino) != st_ino($st_ino)
+ This may indicate a flaw in your kernel or file system implementation.
+ The flaw isn't serious for coreutils, but it might break other tools,
+ so you should report it to your operating system vendor." 1>&2
+
+ # This test fails too often, and we don't want to be distracted
+ # with reports, since the code that could be affected by the losing
+ # behavior (pwd and getcwd) works around any mismatch.
+ # So do continue to issue the warning, but don't count it as a
+ # real failure.
+ # fail=1
+ break
+ fi
+ fi
+
+ t=`(cd "$t/.."; pwd)`
+ dev_ino=`stat --format=%d-%i "$t"`
+ test $dev_ino = $root_dev_ino && break
+done
+
+(exit $fail); exit $fail
diff --git a/tests/ls/symlink-slash b/tests/ls/symlink-slash
new file mode 100755
index 0000000..1caa221
--- /dev/null
+++ b/tests/ls/symlink-slash
@@ -0,0 +1,52 @@
+#!/bin/sh
+# Do dereference a symlink arg if its name is written with a trailing slash.
+
+# Copyright (C) 1999, 2000, 2004 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ls --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+tmp=t-ls.$$
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir dir || framework_failure=1
+ln -s dir symlink || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+set `ls -l symlink/`
+
+# Prior to fileutils-4.0k, the following would have output `... symlink -> dir'.
+test "$*" = 'total 0' && : || fail=1
+
+cd ..
+rm -rf $tmp
+
+exit $fail
diff --git a/tests/ls/time-1 b/tests/ls/time-1
new file mode 100755
index 0000000..aaaf04a
--- /dev/null
+++ b/tests/ls/time-1
@@ -0,0 +1,145 @@
+#!/bin/sh
+# Test some of ls's sorting options.
+
+# Copyright (C) 1998, 1999, 2000, 2001, 2004 Free Software Foundation,
+# Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ls --version
+fi
+
+# Avoid any possible glitches due to daylight-saving changes near the
+# time stamps used during the test.
+TZ=UTC0
+export TZ
+
+# Avoid glitches due to the environment specifying `ls' styles.
+unset QUOTING_STYLE
+unset TIME_STYLE
+
+tmp=t-ls.$$
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+t1='1998-01-15 21:00'
+t2='1998-01-15 22:00'
+t3='1998-01-15 23:00'
+
+u1='1998-01-14 11:00'
+u2='1998-01-14 12:00'
+u3='1998-01-14 13:00'
+
+touch -m -d "$t3" a || framework_failure=1
+touch -m -d "$t2" b || framework_failure=1
+touch -m -d "$t1" c || framework_failure=1
+
+touch -a -d "$u3" c || framework_failure=1
+touch -a -d "$u2" b || framework_failure=1
+# Make sure A has ctime at least 1 second more recent than C's.
+sleep 2
+touch -a -d "$u1" a || framework_failure=1
+
+fail=0
+
+# A has ctime more recent than C.
+set `ls -c a c`
+test "$*" = 'a c' || fail=1
+
+# Sleep so long in an attempt to avoid spurious failures
+# due to NFS caching and/or clock skew.
+sleep 2
+
+# Create a link, updating c's ctime.
+ln c d || framework_failure=1
+
+# Before we go any further, verify that touch's -m option works.
+set -- `ls --full -l a`
+case "$*" in
+ *" $t3:00.000000000 +0000 a") ;;
+ *)
+ # This might be what's making HPUX 11 systems fail this test.
+ cat >&2 << EOF
+A basic test of touch -m has just failed, so the subsequent
+tests in this file will not be run.
+
+In the output below, the date of last modification for \`a' should
+have been $t3.
+EOF
+ #`
+ ls --full -l a
+ framework_failure=1
+ ;;
+esac
+
+# Now test touch's -a option.
+set -- `ls --full -lu a`
+case "$*" in
+ *" $u1:00.000000000 +0000 a") ;;
+ *)
+ # This might be what's making HPUX 11 systems fail this test.
+ cat >&2 << EOF
+A basic test of touch -a has just failed, so the subsequent
+tests in this file will not be run.
+
+In the output below, the date of last access for \`a' should
+have been $u1.
+EOF
+ ls --full -lu a
+ (exit 77); exit 77
+ ;;
+esac
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+set `ls -ut a b c`
+test "$*" = 'c b a' && : || fail=1
+test $fail = 1 && ls -l --full-time --time=access a b c
+
+set `ls -t a b c`
+test "$*" = 'a b c' && : || fail=1
+test $fail = 1 && ls -l --full-time a b c
+
+# Now, C should have ctime more recent than A.
+set `ls -ct a c`
+if test "$*" = 'c a'; then
+ : ok
+else
+ # In spite of documentation, (e.g., stat(2)), neither link nor chmod
+ # update a file's st_ctime on SunOS4.1.4.
+ cat >&2 << \EOF
+failed ls ctime test -- this failure is expected at least for SunOS4.1.4
+and for tmpfs file systems on Solaris 5.5.1.
+
+In the output below, `c' should have had a ctime more recent than
+that of `a', but does not.
+EOF
+ #'
+ ls -ctl --full-time a c
+ fail=1
+fi
+
+cd ..
+rm -rf $tmp
+
+exit $fail
diff --git a/tests/md5sum/Makefile.am b/tests/md5sum/Makefile.am
new file mode 100644
index 0000000..0ed74e0
--- /dev/null
+++ b/tests/md5sum/Makefile.am
@@ -0,0 +1,13 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+
+EXTRA_DIST = $(TESTS)
+
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=md5sum
+
+TESTS = basic-1 newline-1
diff --git a/tests/md5sum/Makefile.in b/tests/md5sum/Makefile.in
new file mode 100644
index 0000000..bfb9447
--- /dev/null
+++ b/tests/md5sum/Makefile.in
@@ -0,0 +1,720 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/md5sum
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=md5sum
+
+TESTS = basic-1 newline-1
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/md5sum/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/md5sum/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/md5sum/basic-1 b/tests/md5sum/basic-1
new file mode 100755
index 0000000..5f02af2
--- /dev/null
+++ b/tests/md5sum/basic-1
@@ -0,0 +1,89 @@
+#!/bin/sh
+# Basic tests for "md5sum".
+
+# Copyright (C) 1998, 1999, 2003, 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my $degenerate = "d41d8cd98f00b204e9800998ecf8427e";
+
+my @Tests =
+ (
+ ['1', {IN=> {f=> ''}}, {OUT=>"$degenerate f\n"}],
+ ['2', {IN=> {f=> 'a'}}, {OUT=>"0cc175b9c0f1b6a831c399e269772661 f\n"}],
+ ['3', {IN=> {f=> 'abc'}}, {OUT=>"900150983cd24fb0d6963f7d28e17f72 f\n"}],
+ ['4', {IN=> {f=> 'message digest'}},
+ {OUT=>"f96b697d7cb7938d525a2f31aaf161d0 f\n"}],
+ ['5', {IN=> {f=> 'abcdefghijklmnopqrstuvwxyz'}},
+ {OUT=>"c3fcd3d76192e4007dfb496cca67e13b f\n"}],
+ ['6', {IN=> {f=> join ('', 'A'..'Z', 'a'..'z', '0'..'9')}},
+ {OUT=>"d174ab98d277d9f5a5611c2c9f419d9f f\n"}],
+ ['7', {IN=> {f=> '1234567890' x 8}},
+ {OUT=>"57edf4a22be3c955ac49da2e2107b67a f\n"}],
+ ['backslash', {IN=> {".\\foo"=> ''}},
+ {OUT=>"\\$degenerate .\\\\foo\n"}],
+ ['check-1', '--check', {AUX=> {f=> ''}},
+ {IN=> {'f.md5' => "$degenerate f\n"}},
+ {OUT=>"f: OK\n"}],
+ ['check-2', '--check', '--status', {IN=>{'f.md5' => "$degenerate f\n"}},
+ {AUX=> {f=> 'foo'}}, {EXIT=> 1}],
+ # The sha1sum and md5sum drivers share a lot of code.
+ # Ensure that md5sum does *not* share the part that makes
+ # sha1sum accept BSD format.
+ ['check-bsd', '--check', {IN=> {'f.sha1' => "SHA1 (f) = $degenerate\n"}},
+ {AUX=> {f=> ''}},
+ {ERR=>"md5sum: f.sha1: no properly formatted "
+ . "MD5 checksum lines found\n"},
+ {EXIT=> 1}],
+ ['check-bsd2', '--check', {IN=> {'f.md5' => "MD5 (f) = $degenerate\n"}},
+ {AUX=> {f=> ''}}, {OUT=>"f: OK\n"}],
+ ['check-bsd3', '--check', '--status',
+ {IN=> {'f.md5' => "MD5 (f) = $degenerate\n"}},
+ {AUX=> {f=> 'bar'}}, {EXIT=> 1}],
+ );
+
+# Insert the `--text' argument for each test.
+my $t;
+foreach $t (@Tests)
+ {
+ splice @$t, 1, 0, '--text' unless @$t[1] =~ /--check/;
+ }
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/md5sum/newline-1 b/tests/md5sum/newline-1
new file mode 100755
index 0000000..5a4506f
--- /dev/null
+++ b/tests/md5sum/newline-1
@@ -0,0 +1,69 @@
+#!/bin/sh
+# Newline tests for "md5sum".
+
+# Copyright (C) 1999, 2000, 2003, 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+# See if we can create a filename that contains a newline.
+# Be careful to do it in a subshell so that we can redirect the
+# error output if it fails.
+(> 'a
+b') 2> /dev/null \
+ && filename_may_contain_newline=yes \
+ || filename_may_contain_newline=no
+rm -f 'a
+b'
+
+if test $filename_may_contain_newline = no; then
+ echo 1>&2 "$0: can't create newline-containing file name," \
+ "so can't run this test"
+ exit 77
+fi
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my $degenerate = "d41d8cd98f00b204e9800998ecf8427e";
+my $t = '--text';
+
+my @Tests =
+ (
+ ['newline', $t, {IN=> {"a\nb"=> ''}}, {OUT=>"\\$degenerate a\\nb\n"}],
+ );
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/misc/Makefile.am b/tests/misc/Makefile.am
new file mode 100644
index 0000000..4d6a754
--- /dev/null
+++ b/tests/misc/Makefile.am
@@ -0,0 +1,88 @@
+# Make miscellaneous coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 200-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+EXTRA_DIST = $(TESTS)
+
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ abs_top_builddir=$(abs_top_builddir) \
+ srcdir=$(srcdir) \
+ PACKAGE_VERSION=$(PACKAGE_VERSION) \
+ PERL="$(PERL)" \
+ BUILD_SRC_DIR="`pwd`/../../src" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ CONFIG_HEADER=$(CONFIG_HEADER) \
+ REPLACE_GETCWD=$(REPLACE_GETCWD) \
+ host_os=$(host_os) \
+ PROG=`../../src/basename -- "$$tst"`
+
+# Do not choose a name that is a shell keyword like 'if', or a
+# commonly-used utility like 'cat' or 'test', as the name of a test.
+# Otherwise, VPATH builds will fail on hosts like Solaris, since they
+# will expand 'if test ...' to 'if .../test ...', and the '.../test'
+# will execute the test script rather than the standard utility.
+
+TESTS = \
+ pr \
+ df-P \
+ pwd-unreadable-parent \
+ cut \
+ wc-files0-from \
+ wc-files0 \
+ cat-proc \
+ base64 \
+ basename \
+ close-stdout \
+ csplit \
+ date \
+ date-sec \
+ df \
+ dirname \
+ expand \
+ false-status \
+ fold \
+ head-c \
+ head-elide-tail \
+ head-pos \
+ mknod \
+ nice \
+ nl \
+ nohup \
+ paste-no-nl \
+ pathchk1 \
+ printf \
+ printf-hex \
+ pwd-long \
+ sha224sum \
+ sha256sum \
+ sha384sum \
+ sha512sum \
+ shuf \
+ sort-compress \
+ sort-merge \
+ sort-rand \
+ split-a \
+ split-fail \
+ split-l \
+ stat-fmt \
+ stat-printf \
+ tac-continue \
+ test-diag \
+ tty-eof
diff --git a/tests/misc/Makefile.in b/tests/misc/Makefile.in
new file mode 100644
index 0000000..357d695
--- /dev/null
+++ b/tests/misc/Makefile.in
@@ -0,0 +1,798 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make miscellaneous coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 200-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/misc
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ abs_top_builddir=$(abs_top_builddir) \
+ srcdir=$(srcdir) \
+ PACKAGE_VERSION=$(PACKAGE_VERSION) \
+ PERL="$(PERL)" \
+ BUILD_SRC_DIR="`pwd`/../../src" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ CONFIG_HEADER=$(CONFIG_HEADER) \
+ REPLACE_GETCWD=$(REPLACE_GETCWD) \
+ host_os=$(host_os) \
+ PROG=`../../src/basename -- "$$tst"`
+
+
+# Do not choose a name that is a shell keyword like 'if', or a
+# commonly-used utility like 'cat' or 'test', as the name of a test.
+# Otherwise, VPATH builds will fail on hosts like Solaris, since they
+# will expand 'if test ...' to 'if .../test ...', and the '.../test'
+# will execute the test script rather than the standard utility.
+TESTS = \
+ pr \
+ df-P \
+ pwd-unreadable-parent \
+ cut \
+ wc-files0-from \
+ wc-files0 \
+ cat-proc \
+ base64 \
+ basename \
+ close-stdout \
+ csplit \
+ date \
+ date-sec \
+ df \
+ dirname \
+ expand \
+ false-status \
+ fold \
+ head-c \
+ head-elide-tail \
+ head-pos \
+ mknod \
+ nice \
+ nl \
+ nohup \
+ paste-no-nl \
+ pathchk1 \
+ printf \
+ printf-hex \
+ pwd-long \
+ sha224sum \
+ sha256sum \
+ sha384sum \
+ sha512sum \
+ shuf \
+ sort-compress \
+ sort-merge \
+ sort-rand \
+ split-a \
+ split-fail \
+ split-l \
+ stat-fmt \
+ stat-printf \
+ tac-continue \
+ test-diag \
+ tty-eof
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/misc/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/misc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/misc/base64 b/tests/misc/base64
new file mode 100755
index 0000000..70295fb
--- /dev/null
+++ b/tests/misc/base64
@@ -0,0 +1,169 @@
+#!/bin/sh
+# -*- perl -*-
+# Exercise base64.
+
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+# Return the encoding of a string of N 'a's.
+sub enc($)
+{
+ my ($n) = @_;
+ my %remainder = ( 0 => '', 1 => 'YQ==', 2 => 'YWE=' );
+ return 'YWFh' x ($n / 3) . $remainder{$n % 3};
+}
+
+# Construct an encoded string of length 4KB, using 3K "a"s.
+my $a3k = enc 3072;
+my @a3k_nl;
+# A few copies, each with different number of newlines at the start.
+for my $k (0..3)
+ {
+ (my $t = $a3k) =~ s/^/"\n"x $k/e;
+ push @a3k_nl, $t;
+ }
+
+# Return a copy of S, with newlines inserted every WIDTH bytes.
+# Ensure that the result (if not the empty string) is newline-terminated.
+sub wrap($$)
+{
+ my ($s, $width) = @_;
+ $s =~ s/(.{$width})/$1\n/g;
+ substr ($s, -1, 1) ne "\n"
+ and $s .= "\n";
+ return $s;
+}
+
+my @Tests =
+ (
+ ['empty', {IN=>''}, {OUT=>""}],
+ ['inout', {IN=>'a'}, {OUT=>"YQ==\n"}],
+ ['wrap', '--wrap 0', {IN=>'foo'}, {OUT=>'Zm9v'}],
+ ['wrap5-39', '--wrap=5', {IN=>'a' x 39}, {OUT=>wrap enc(39),5}],
+ ['wrap5-40', '--wrap=5', {IN=>'a' x 40}, {OUT=>wrap enc(40),5}],
+ ['wrap5-41', '--wrap=5', {IN=>'a' x 41}, {OUT=>wrap enc(41),5}],
+ ['wrap5-42', '--wrap=5', {IN=>'a' x 42}, {OUT=>wrap enc(42),5}],
+ ['wrap5-43', '--wrap=5', {IN=>'a' x 43}, {OUT=>wrap enc(43),5}],
+ ['wrap5-44', '--wrap=5', {IN=>'a' x 44}, {OUT=>wrap enc(44),5}],
+ ['wrap5-45', '--wrap=5', {IN=>'a' x 45}, {OUT=>wrap enc(45),5}],
+ ['wrap5-46', '--wrap=5', {IN=>'a' x 46}, {OUT=>wrap enc(46),5}],
+
+ ['buf-1', '--decode', {IN=>enc 1}, {OUT=>'a' x 1}],
+ ['buf-2', '--decode', {IN=>enc 2}, {OUT=>'a' x 2}],
+ ['buf-3', '--decode', {IN=>enc 3}, {OUT=>'a' x 3}],
+ ['buf-4', '--decode', {IN=>enc 4}, {OUT=>'a' x 4}],
+ # 4KB worth of input.
+ ['buf-4k0', '--decode', {IN=>enc 3072+0}, {OUT=>'a' x (3072+0)}],
+ ['buf-4k1', '--decode', {IN=>enc 3072+1}, {OUT=>'a' x (3072+1)}],
+ ['buf-4k2', '--decode', {IN=>enc 3072+2}, {OUT=>'a' x (3072+2)}],
+ ['buf-4k3', '--decode', {IN=>enc 3072+3}, {OUT=>'a' x (3072+3)}],
+ ['buf-4km1','--decode', {IN=>enc 3072-1}, {OUT=>'a' x (3072-1)}],
+ ['buf-4km2','--decode', {IN=>enc 3072-2}, {OUT=>'a' x (3072-2)}],
+ ['buf-4km3','--decode', {IN=>enc 3072-3}, {OUT=>'a' x (3072-3)}],
+ ['buf-4km4','--decode', {IN=>enc 3072-4}, {OUT=>'a' x (3072-4)}],
+
+ # Exercise the case in which the final base-64 byte is
+ # in a buffer all by itself.
+ ['b4k-1', '--decode', {IN=>$a3k_nl[1]}, {OUT=>'a' x (3072+0)}],
+ ['b4k-2', '--decode', {IN=>$a3k_nl[2]}, {OUT=>'a' x (3072+0)}],
+ ['b4k-3', '--decode', {IN=>$a3k_nl[3]}, {OUT=>'a' x (3072+0)}],
+
+ ['baddecode', '--decode', {IN=>'a'}, {OUT=>""},
+ {ERR_SUBST => 's/.*: invalid input//'}, {ERR => "\n"}, {EXIT => 1}],
+ ['baddecode2', '--decode', {IN=>'ab'}, {OUT=>"i"},
+ {ERR_SUBST => 's/.*: invalid input//'}, {ERR => "\n"}, {EXIT => 1}],
+ ['baddecode3', '--decode', {IN=>'Zzz'}, {OUT=>"g<"},
+ {ERR_SUBST => 's/.*: invalid input//'}, {ERR => "\n"}, {EXIT => 1}],
+ ['baddecode4', '--decode', {IN=>'Zz='}, {OUT=>"g"},
+ {ERR_SUBST => 's/.*: invalid input//'}, {ERR => "\n"}, {EXIT => 1}],
+ ['baddecode5', '--decode', {IN=>'Z==='}, {OUT=>""},
+ {ERR_SUBST => 's/.*: invalid input//'}, {ERR => "\n"}, {EXIT => 1}]
+ );
+
+# For each non-failing test, create a --decode test using the
+# expected output as input. Also, add tests inserting newlines.
+my @new;
+foreach my $t (@Tests)
+ {
+ my $exit_val;
+ my $in;
+ my @out;
+
+ # If the test has a single option of "--decode", then skip it.
+ !ref $t->[1] && $t->[1] eq '--decode'
+ and next;
+
+ foreach my $e (@$t)
+ {
+ ref $e && ref $e eq 'HASH'
+ or next;
+ defined $e->{EXIT}
+ and $exit_val = $e->{EXIT};
+ defined $e->{IN}
+ and $in = $e->{IN};
+ if (defined $e->{OUT})
+ {
+ my $t = $e->{OUT};
+ push @out, $t;
+ my $len = length $t;
+ foreach my $i (0..$len)
+ {
+ my $u = $t;
+ substr ($u, $i, 0) = "\n";
+ push @out, $u;
+ 10 <= $i
+ and last;
+ }
+ }
+ }
+ $exit_val
+ and next;
+
+ my $i = 0;
+ foreach my $o (@out)
+ {
+ push @new, ["d$i-$t->[0]", '--decode', {IN => $o}, {OUT => $in}];
+ ++$i;
+ }
+ }
+push @Tests, @new;
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/misc/basename b/tests/misc/basename
new file mode 100755
index 0000000..89d96ff
--- /dev/null
+++ b/tests/misc/basename
@@ -0,0 +1,95 @@
+#!/bin/sh
+# -*-perl-*-
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+d=$srcdir/..
+exec $PERL -w -I$d -MCoreutils -- - << \EOF
+require 5.003;
+use strict;
+use File::stat;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my $stat_single = stat('/');
+my $stat_double = stat('//');
+my $double_slash = ($stat_single->dev == $stat_double->dev
+ && $stat_single->ino == $stat_double->ino) ? '/' : '//';
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+
+my @Tests =
+ (
+ ['fail-1', {ERR => "$prog: missing operand\n"
+ . "Try `$prog --help' for more information.\n"}, {EXIT => '1'}],
+ ['fail-2', qw(a b c), {ERR => "$prog: extra operand `c'\n"
+ . "Try `$prog --help' for more information.\n"}, {EXIT => '1'}],
+
+ ['a', qw(d/f), {OUT => 'f'}],
+ ['b', qw(/d/f), {OUT => 'f'}],
+ ['c', qw(d/f/), {OUT => 'f'}],
+ ['d', qw(d/f//), {OUT => 'f'}],
+ ['e', qw(f), {OUT => 'f'}],
+ ['f', qw(/), {OUT => '/'}],
+ ['g', qw(//), {OUT => "$double_slash"}],
+ ['h', qw(///), {OUT => '/'}],
+ ['i', qw(///a///), {OUT => 'a'}],
+ ['j', qw(''), {OUT => ''}],
+ ['1', qw(f.s .s), {OUT => 'f'}],
+ ['2', qw(fs s), {OUT => 'f'}],
+ ['3', qw(fs fs), {OUT => 'fs'}],
+ ['4', qw(fs/ s), {OUT => 'f'}],
+ ['5', qw(dir/file.suf .suf), {OUT => 'file'}],
+ ['6', qw(// /), {OUT => "$double_slash"}],
+ ['7', qw(// //), {OUT => "$double_slash"}],
+ ['8', qw(fs x), {OUT => 'fs'}],
+ ['9', qw(fs ''), {OUT => 'fs'}],
+ ['10', qw(fs/ s/), {OUT => 'fs'}],
+ );
+
+# Append a newline to end of each expected `OUT' string.
+my $t;
+foreach $t (@Tests)
+ {
+ my $arg1 = $t->[1];
+ my $e;
+ foreach $e (@$t)
+ {
+ $e->{OUT} = "$e->{OUT}\n"
+ if ref $e eq 'HASH' and exists $e->{OUT};
+ }
+ }
+
+my $save_temps = $ENV{SAVE_TEMPS};
+my $verbose = $ENV{VERBOSE};
+
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/misc/cat-proc b/tests/misc/cat-proc
new file mode 100755
index 0000000..22f3847
--- /dev/null
+++ b/tests/misc/cat-proc
@@ -0,0 +1,60 @@
+#!/bin/sh
+# Ensure that cat -E produces same output as cat, module `$'s,
+# even when applied to a file in /proc.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cat --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+f=/proc/cpuinfo
+test -f $f \
+ || {
+ echo "$0: no $f skipping this test" 1>&2
+ (exit 77); exit 77
+ }
+
+fail=0
+
+# Yes, parts of /proc/cpuinfo might change between cat runs.
+# If that happens, consider choosing a file that's less likely to change,
+# or just filter out the changing lines. The sed filter should help
+# to avoid any spurious numeric differences.
+cat -E $f | sed 's/[0-9][0-9]*/D/g' | tr -d '$' > out || fail=1
+cat $f | sed 's/[0-9][0-9]*/D/g' | tr -d '$' > exp || fail=1
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/misc/close-stdout b/tests/misc/close-stdout
new file mode 100755
index 0000000..dd8bbc5
--- /dev/null
+++ b/tests/misc/close-stdout
@@ -0,0 +1,77 @@
+#!/bin/sh
+# Ensure that several programs work fine, even with stdout initially closed.
+# This is effectively a test of closeout.c's close_stdout function.
+
+# Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+PATH="$pwd/../..:$PATH"
+export PATH
+
+fail=0
+
+# Ensure these exit successfully, even though stdout is closed,
+# because they generate no output.
+touch a
+cp a b >&- || fail=1
+test -f b || fail=1
+chmod o-w . >&- || fail=1
+ln a c >&- || fail=1
+rm c >&- || fail=1
+mkdir d >&- || fail=1
+mv d e >&- || fail=1
+rmdir e >&- || fail=1
+touch e >&- || fail=1
+sleep 0 >&- || fail=1
+"$pwd/../../src/true" >&- || fail=1
+"$pwd/../../src/printf" '' >&- || fail=1
+
+# If >&- works, ensure these fail, because stdout is closed and they
+# *do* generate output. >&- apparently does not work in HP-UX 11.23.
+# This test is ineffective unless /dev/stdout also works.
+if "$pwd/../../src/test" -w /dev/stdout >/dev/null &&
+ "$pwd/../../src/test" ! -w /dev/stdout >&-; then
+ "$pwd/../../src/printf" 'foo' >&- 2>/dev/null && fail=1
+ cp --verbose a b >&- 2>/dev/null && fail=1
+fi
+
+# Likewise for /dev/full, if /dev/full works.
+if test -w /dev/full && test -c /dev/full; then
+ "$pwd/../../src/printf" 'foo' >/dev/full 2>/dev/null && fail=1
+ cp --verbose a b >/dev/full 2>/dev/null && fail=1
+fi
+
+(exit $fail); exit $fail
diff --git a/tests/misc/csplit b/tests/misc/csplit
new file mode 100755
index 0000000..885d692
--- /dev/null
+++ b/tests/misc/csplit
@@ -0,0 +1,116 @@
+#!/bin/sh
+# various csplit tests
+
+# Copyright (C) 2001, 2002, 2003, 2004, 2005 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ csplit --version
+fi
+
+. $srcdir/../lang-default
+
+pwd=`pwd`
+tmp=csplit.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# csplit could get a failed assertion to 2.0.17
+(echo a; echo; echo) > in
+csplit in '/^$/' 2 > out || fail=1
+cat <<EOF > exp
+2
+0
+2
+EOF
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+rm -f in out exp
+
+# Ensure that xx02 contains just two newlines.
+# This would fail due to reading from freed buffer with coreutils-5.0.91.
+printf '\n\n' > exp
+cp xx02 out || fail=1
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+rm -f in out exp
+
+# csplit would infloop
+(echo; echo a) > in
+csplit in '/a/-1' '{*}' > out || fail=1
+cat <<EOF > exp
+0
+3
+EOF
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+rm -f in out exp
+
+# `echo |csplit - 1 1' used to abort.
+echo > in
+csplit in 1 1 > out 2> err || fail=1
+cat <<EOF > exp
+0
+0
+1
+EOF
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+cat <<\EOF > experr
+csplit: warning: line number `1' is the same as preceding line number
+EOF
+cmp err experr || fail=1
+test $fail = 1 && diff err experr 2> /dev/null
+rm -f in out exp err experr
+
+# make sure `csplit FILE 0' fails.
+echo > in
+csplit in 0 > out 2> err && fail=1
+csplit in 2 1 > out 2>> err && fail=1
+csplit in 3 3 > out 2>> err && fail=1
+cat <<\EOF > experr
+csplit: 0: line number must be greater than zero
+csplit: line number `1' is smaller than preceding line number, 2
+csplit: warning: line number `3' is the same as preceding line number
+csplit: `3': line number out of range
+EOF
+cmp err experr || fail=1
+test $fail = 1 && diff err experr 2> /dev/null
+
+# Ensure that lines longer than the initial buffer length don't cause
+# trouble (e.g. reading from freed memory, resulting in corrupt output).
+# This test failed at least in coreutils-5.2.1 and 5.3.0, and was fixed
+# in 5.3.1.
+rm -f in out exp err experr xx??
+printf 'x%8199s\nx\n%8199s\nx\n' x x > in
+csplit in '/x\{1\}/' '{*}' > /dev/null || fail=1
+cat xx?? | cmp - in || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/misc/cut b/tests/misc/cut
new file mode 100755
index 0000000..3db4c9b
--- /dev/null
+++ b/tests/misc/cut
@@ -0,0 +1,51 @@
+#!/bin/sh
+# Test "cut". -*- perl -*-
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $ME = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my @Tests =
+ (
+ # Provoke a double-free in cut from coreutils-6.7.
+ ['dbl-free', '-f2-', {IN=>{f=>'x'}}, {IN=>{g=>'y'}}, {OUT=>"x\ny\n"}],
+ );
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = 'cut';
+my $fail = run_tests ($ME, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/misc/date b/tests/misc/date
new file mode 100755
index 0000000..0ff8345
--- /dev/null
+++ b/tests/misc/date
@@ -0,0 +1,323 @@
+#!/bin/sh
+# Test "date".
+
+# Copyright (C) 2005-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $ME = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+# Export TZ=UTC0 so that zone-dependent strings match.
+$ENV{TZ} = 'UTC0';
+
+my $t0 = '08:17:48';
+my $d0 = '1997-01-19';
+my $d1 = "$d0 $t0 +0";
+
+my $ts = '08:17:49'; # next second
+my $tm = '08:18:48'; # next minute
+my $th = '09:17:48'; # next hour
+
+my $dd = '1997-01-20'; # next day
+my $dw = '1997-01-26'; # next week
+my $dm = '1997-02-19'; # next month
+my $dy = '1998-01-19'; # next month
+
+my $fmt = "'+%Y-%m-%d %T'";
+
+# Determine a number of seconds that will provoke an invalid
+# time diagnostic from date. If possible, use a number that
+# is less than 2^64, yet so large that it would cause the resulting
+# tm_year value to be too large for a 32-bit int. But some systems
+# (Solaris 8) have a buggy localtime that mistakenly accepts such
+# invalid times and give garbage in tm_year. Other systems might
+# have an int type that is wider than 32. So if this localtime
+# call succeeds, use 2^64 as the number of seconds.
+my $n_seconds = 72057594037927935;
+my @d = localtime ($n_seconds);
+my $year = $d[5];
+defined $year
+ and $n_seconds = '18446744073709551616';
+
+my @Tests =
+ (
+ # test-name, [option, option, ...] {OUT=>"expected-output"}
+ #
+ ['1', "-d '$d1' +'%% %a %A %b %B'", {OUT=>"% Sun Sunday Jan January"}],
+
+ # [Actually, skip it on *all* systems. -- this Perl code is run at
+ # distribution-build-time, not at configure/test time. ]
+
+ # Skip the test of %c on SunOS4 systems. Such systems would fail this
+ # test because their underlying strftime doesn't handle the %c format
+ # properly. GNU strftime must rely on the underlying host library
+ # function to get locale-dependent behavior, as strftime is the only
+ # portable interface to that behavior.
+ # ['2', "-d '$d1' +'%c'", {OUT=>"Sun Jan 19 $t0 1997"}],
+
+ ['3', "-d '$d1' +'%d_%D_%e_%h_%H'", {OUT=>"19_01/19/97_19_Jan_08"}],
+ ['4', "-d '$d1' +'%I_%j_%k_%l_%m'", {OUT=>"08_019_ 8_ 8_01"}],
+ ['5', "-d '$d1' +'%M_%n_%p_%r'", {OUT=>"17_\n_AM_$t0 AM"}],
+ ['6', "-d '$d1' +'%s_%S_%t_%T'", {OUT=>"853661868_48_\t_$t0"}],
+ ['7', "-d '$d1' +'%U_%V_%w_%W'", {OUT=>"03_03_0_02"}],
+ ['8', "-d '$d1' +'%x_%X_%y_%Y'", {OUT=>"01/19/97_${t0}_97_1997"}],
+ ['9', "-d '$d1' +'%z'", {OUT=>"+0000"}],
+
+ ['leap-1', "--date '02/29/1996 1 year' +%Y-%m-%d", {OUT=>"1997-03-01"}],
+
+ ['U95-1', "--date '1995-1-1' +%U", {OUT=>"01"}],
+ ['U95-2', "--date '1995-1-7' +%U", {OUT=>"01"}],
+ ['U95-3', "--date '1995-1-8' +%U", {OUT=>"02"}],
+
+ ['U92-1', "--date '1992-1-1' +%U", {OUT=>"00"}],
+ ['U92-2', "--date '1992-1-4' +%U", {OUT=>"00"}],
+ ['U92-3', "--date '1992-1-5' +%U", {OUT=>"01"}],
+
+ ['V92-1', "--date '1992-1-1' +%V", {OUT=>"01"}],
+ ['V92-2', "--date '1992-1-5' +%V", {OUT=>"01"}],
+ ['V92-3', "--date '1992-1-6' +%V", {OUT=>"02"}],
+
+ ['W92-1', "--date '1992-1-1' +%W", {OUT=>"00"}],
+ ['W92-2', "--date '1992-1-5' +%W", {OUT=>"00"}],
+ ['W92-3', "--date '1992-1-6' +%W", {OUT=>"01"}],
+
+ ['millen-1', "--date '1998-1-1 3 years' +%Y", {OUT=>"2001"}],
+
+ ['rel-0', "-d '$d1 now' '+%Y-%m-%d %T'", {OUT=>"$d0 $t0"}],
+
+ ['rel-1a', "-d '$d1 yesterday' $fmt", {OUT=>"1997-01-18 $t0"}],
+ ['rel-1b', "-d '$d1 tomorrow' $fmt", {OUT=>"1997-01-20 $t0"}],
+
+ ['rel-2a', "-d '$d1 6 years ago' $fmt", {OUT=>"1991-01-19 $t0"}],
+ ['rel-2b', "-d '$d1 7 months ago' $fmt", {OUT=>"1996-06-19 $t0"}],
+ ['rel-2c', "-d '$d1 8 weeks ago' $fmt", {OUT=>"1996-11-24 $t0"}],
+ ['rel-2d', "-d '$d1 1 day ago' $fmt", {OUT=>"1997-01-18 $t0"}],
+ ['rel-2e', "-d '$d1 2 hours ago' $fmt", {OUT=>"$d0 06:17:48"}],
+ ['rel-2f', "-d '$d1 3 minutes ago' $fmt", {OUT=>"$d0 08:14:48"}],
+ ['rel-2g', "-d '$d1 4 seconds ago' $fmt", {OUT=>"$d0 08:17:44"}],
+
+ ['rel-3a', "-d '$d1 4 seconds ago' $fmt", {OUT=>"$d0 08:17:44"}],
+
+ ['next-s', "-d '$d1 next second' '+%Y-%m-%d %T'", {OUT=>"$d0 $ts"}],
+ ['next-m', "-d '$d1 next minute' '+%Y-%m-%d %T'", {OUT=>"$d0 $tm"}],
+ ['next-h', "-d '$d1 next hour' '+%Y-%m-%d %T'", {OUT=>"$d0 $th"}],
+ ['next-d', "-d '$d1 next day' '+%Y-%m-%d %T'", {OUT=>"$dd $t0"}],
+ ['next-w', "-d '$d1 next week' '+%Y-%m-%d %T'", {OUT=>"$dw $t0"}],
+ ['next-mo', "-d '$d1 next month' '+%Y-%m-%d %T'", {OUT=>"$dm $t0"}],
+ ['next-y', "-d '$d1 next year' '+%Y-%m-%d %T'", {OUT=>"$dy $t0"}],
+
+ ['utc-0', "-u -d '08/01/97 6:00' '+%D,%H:%M'", {OUT=>"08/01/97,06:00"},
+ {ENV => 'TZ=UTC+4'}],
+
+ ['utc-0a', "-u -d '08/01/97 6:00 UTC +4 hours' '+%D,%H:%M'",
+ {OUT=>"08/01/97,10:00"}],
+ # Make sure --file=FILE works with -u.
+ ['utc-1', "-u --file=f '+%Y-%m-%d %T'",
+ {AUX=>{f=>"$d0 $t0\n$d0 $t0"}},
+ {OUT=>"$d0 $t0\n$d0 $t0"},
+ {ENV => 'TZ=UTC+1'}],
+
+ ['utc-1a', "-u --file=f '+%Y-%m-%d %T'",
+ {AUX=>{f=>"$d0 $t0 UTC +1 hour\n$d0 $t0 UTC +1 hour"}},
+ {OUT=>"$d0 $th\n$d0 $th"}],
+
+ # From the examples in the documentation.
+ ['date2sec-0', "-d '1970-01-01 00:00:01' +%s", {OUT=>"7201"},
+ {ENV => 'TZ=UTC+2'}],
+
+ # Same as above, but don't rely on TZ in environment.
+ ['date2sec-0a', "-d '1970-01-01 00:00:01 UTC +2 hours' +%s",
+ {OUT=>"7201"}],
+
+ ['date2sec-1', "-d 2000-01-01 +%s", {OUT=>"946684800"}],
+ ['sec2date-0', "-d '1970-01-01 UTC 946684800 sec' +'%Y-%m-%d %T %z'",
+ {OUT=>"2000-01-01 00:00:00 +0000"}],
+
+ ['this-m', "-d '$d0 $t0 this minute' $fmt", {OUT=>"$d0 $t0"}],
+ ['this-h', "-d '$d0 $t0 this hour' $fmt", {OUT=>"$d0 $t0"}],
+ ['this-w', "-d '$d0 $t0 this week' $fmt", {OUT=>"$d0 $t0"}],
+ ['this-mo', "-d '$d0 $t0 this month' $fmt", {OUT=>"$d0 $t0"}],
+ ['this-y', "-d '$d0 $t0 this year' $fmt", {OUT=>"$d0 $t0"}],
+
+ ['risks-1', "-d 'Nov 10 1996' $fmt", {OUT=>"1996-11-10 00:00:00"}],
+
+ # This one would pass if TZ (with any, or even no, value) were in
+ # the environment.
+ ['regress-1', "-u -d '1996-11-10 0:00:00 +0' $fmt",
+ {OUT=>"1996-11-10 00:00:00"},
+ {ENV =>'LANG=C'}],
+
+
+ ['datevtime-1', "-d 000909 $fmt", {OUT=>"2000-09-09 00:00:00"}],
+
+ # test for RFC-822 conformance
+ ['rfc822-1', "-R -d '$d1'", {OUT=>"Sun, 19 Jan 1997 08:17:48 +0000"},
+ # Solaris 5.9's /bin/sh emits this diagnostic to stderr
+ # if you don't have support for the named locale.
+ {ERR_SUBST => q!s/^couldn't set locale correctly\n//!},
+ {ENV => 'LC_ALL=de_DE TZ=UTC0'}],
+
+ # Relative seconds, with time. fixed in 2.0j
+ ['relative-1', "--utc -d '1970-01-01 00:00:00 UTC +961062237 sec' $fmt",
+ {OUT=>"2000-06-15 09:43:57"}],
+
+ # Relative seconds, no time.
+ ['relative-2', "--utc -d '1970-01-01 UTC +961062237 sec' $fmt",
+ {OUT=>"2000-06-15 09:43:57"},
+ {ENV => 'TZ=UTC+1'}],
+
+ # Relative days, no time, across time zones.
+ ['relative-3', "-I -d '2006-04-23 21 days ago'", {OUT=>"2006-04-02"},
+ {ENV=>'TZ=PST8PDT,M4.1.0,M10.5.0'}],
+
+ # This would infloop (or appear to) prior to coreutils-4.5.5,
+ # due to a bug in strftime.c.
+ ['wide-fmt', "-d '1999-06-01'", '+%3004Y', {OUT=>'0' x 3000 . "1999"}],
+
+ # Ensure that we can parse MONTHNAME-DAY-YEAR.
+ ['moname-d-y', '--iso -d May-23-2003', {OUT=>"2003-05-23"}],
+ ['moname-d-y-r', '--rfc-3339=date -d May-23-2003', {OUT=>"2003-05-23"}],
+
+ ['epoch', '--iso=sec -d @31536000',
+ {OUT=>"1971-01-01T00:00:00+0000"}],
+ ['epoch-r', '--rfc-3339=sec -d @31536000',
+ {OUT=>"1971-01-01 00:00:00+00:00"}],
+
+ ['ns-10', '--iso=ns', '-d "1969-12-31 13:00:00.00000001-1100"',
+ {OUT=>"1970-01-01T00:00:00,000000010+0000"}],
+ ['ns-10-r', '--rfc-3339=ns', '-d "1969-12-31 13:00:00.00000001-1100"',
+ {OUT=>"1970-01-01 00:00:00.000000010+00:00"}],
+
+ ['ns-max32', '--iso=ns', '-d "2038-01-19 03:14:07.999999999"',
+ {OUT=>"2038-01-19T03:14:07,999999999+0000"}],
+ ['ns-max32-r', '--rfc-3339=ns', '-d "2038-01-19 03:14:07.999999999"',
+ {OUT=>"2038-01-19 03:14:07.999999999+00:00"}],
+
+ ['tz-1', '+%:::z', {OUT=>"-12:34:56"}, {ENV=>'TZ=XXX12:34:56'}],
+
+ ['tz-2', '+%:::z', {OUT=>"+12:34:56"}, {ENV=>'TZ=XXX-12:34:56'}],
+
+ ['tz-3', '+%::z', {OUT=>"+01:02:03"}, {ENV=>'TZ=XXX-1:02:03'}],
+
+ ['tz-4', '+%:::z', {OUT=>"+12"}, {ENV=>'TZ=XXX-12'}],
+
+ ['tz-5', '+%:z', {OUT=>"-00:01"}, {ENV=>'TZ=XXX0:01'}],
+
+ # Accept %:z with a field width before the `:'.
+ ['tz-5w','+%8:z', {OUT=>"-0000:01"}, {ENV=>'TZ=XXX0:01'}],
+ # Don't recognize %:z with a field width between the `:' and the `z'.
+ ['tz-5wf', '+%:8z', {OUT=>"%:8z"}, {ENV=>'TZ=XXX0:01'}],
+
+ ['ns-relative',
+ '--iso=ns', "-d'1970-01-01 00:00:00.1234567 UTC +961062237.987654321 sec'",
+ {OUT=>"2000-06-15T09:43:58,111111021+0000"}],
+ ['ns-relativer', '--rfc-3339=ns',
+ "-d'1970-01-01 00:00:00.1234567 UTC +961062237.987654321 sec'",
+ {OUT=>"2000-06-15 09:43:58.111111021+00:00"}],
+
+ # Since coreutils/lib/getdate.y revision 1.96 (post-coreutils-5.3.0),
+ # a command like the following would mistakenly exit nonzero with an
+ # `invalid date ...' diagnostic, but when run in a time zone for
+ # which daylight savings time is in effect for the starting date.
+ # Unfortunately (for ease of testing), if you set TZ at all, this
+ # failure is not triggered, hence the removal of TZ from the environment.
+ ['cross-dst', "-d'2005-03-27 +1 day'", '+%Y', {OUT=>"2005"},
+ {ENV_DEL => 'TZ'},
+ ],
+
+ ['empty-fmt', '+', {OUT=>""}],
+
+ ['neg-secs', '-d @-22 +%05s', {OUT=>"-0022"}],
+ ['neg-secs2', '-d @-22 +%_5s', {OUT=>" -22"}],
+
+ # Before today's fix, date would print uninitialized data
+ # to standard output for an out-of-range date:
+ # $ date -d @$(echo 2^56-1|bc) 2> /dev/null | od -a -N3
+ # 0000000 p 4 6
+ # 0000003
+ ['uninit-64', "-d \@$n_seconds",
+ {OUT=>''},
+ # Use ERR_SUBST to get around fact that the diagnostic
+ # you get on a system with 32-bit time_t is not the same as
+ # the one you get for a system where it's 64 bits wide:
+ # - date: time 72057594037927935 is out of range
+ # + date: invalid date `@72057594037927935'
+ {ERR_SUBST => 's/.*//'},
+ {ERR => "\n"},
+ {EXIT => 1},
+ ],
+
+ ['fill-1', '-d 1999-12-08 +%_3d', {OUT=>' 8'}],
+ ['fill-2', '-d 1999-12-08 +%03d', {OUT=>'008'}],
+
+ # Test the combination of the to-upper-case modifier (^) and a conversion
+ # specifier that expands to a string containing lower case characters.
+ ['subfmt-up1', '-d "1999-12-08 7:30" "+%^c"',
+ # Solaris 5.9 prints 'WED DEC 08 07:30:00 1999', while
+ # most others print 'WED DEC 8 07:30:00 1999'.
+ {OUT_SUBST => 's/ [ 0]8.*//'},
+ {OUT=>'WED DEC'}],
+ );
+
+# Repeat the cross-dst test, using Jan 1, 2005 and every interval from 1..364.
+foreach my $i (1..364)
+ {
+ push @Tests, ["cross-dst$i",
+ "-d'2005-01-01 +$i day'", '+%Y', {OUT=>"2005"},
+ {ENV_DEL => 'TZ'},
+ ];
+ }
+
+# Append "\n" to each OUT=> RHS if the expected exit value is either
+# zero or not specified (defaults to zero).
+foreach my $t (@Tests)
+ {
+ my $exit_val;
+ foreach my $e (@$t)
+ {
+ ref $e && ref $e eq 'HASH' && defined $e->{EXIT}
+ and $exit_val = $e->{EXIT};
+ }
+ foreach my $e (@$t)
+ {
+ ref $e && ref $e eq 'HASH' && defined $e->{OUT} && ! $exit_val
+ and $e->{OUT} .= "\n";
+ }
+ }
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = 'date';
+my $fail = run_tests ($ME, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/misc/date-sec b/tests/misc/date-sec
new file mode 100755
index 0000000..6852c87
--- /dev/null
+++ b/tests/misc/date-sec
@@ -0,0 +1,67 @@
+#!/bin/sh
+# Ensure that a command like
+# `date --date="21:04 +0100" +%S' always prints `00'.
+# Before coreutils-5.2.1, it would print the seconds from the current time.
+
+# Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ date --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# It would be easier simply to sleep for two seconds between two runs
+# of `date --date="21:04 +0100" +%S` and ensure that both outputs
+# are `00', but I prefer not to sleep unconditionally. `make check'
+# takes long enough as it is.
+
+n=0
+# See if the current number of seconds is `00' or just before.
+s=`date +%S`
+case "$s" in
+ 58) n=3;;
+ 59) n=2;;
+ 00) n=1;;
+esac
+
+# If necessary, wait for the system clock to pass the minute mark.
+test $n = 0 || sleep $n
+
+s=`date --date="21:04 +0100" +%S`
+case "$s" in
+ 00) ;;
+ *) fail=1;;
+esac
+
+(exit $fail); exit $fail
diff --git a/tests/misc/df b/tests/misc/df
new file mode 100755
index 0000000..31040ca
--- /dev/null
+++ b/tests/misc/df
@@ -0,0 +1,34 @@
+#!/bin/sh
+# Ensure that "df ." outputs a header.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ df --version
+fi
+
+case `df .` in
+*'
+'*)
+ fail=0;;
+*)
+ fail=1;;
+esac
+
+(exit $fail); exit $fail
diff --git a/tests/misc/df-P b/tests/misc/df-P
new file mode 100755
index 0000000..3a5ec9b
--- /dev/null
+++ b/tests/misc/df-P
@@ -0,0 +1,60 @@
+#!/bin/sh
+# Ensure that df -P is not affected by BLOCK_SIZE settings
+
+# Copyright (C) 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ df --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+ df -P . > t1 || fail=1
+BLOCK_SIZE=1M df -P . > t2 || fail=1
+
+# Since disk utilization may be changing, compare only df's header line.
+# That records the block size. E.g., for "1M", it would be:
+# Filesystem 1048576-blocks Used Available Capacity Mounted on
+# while for 1K, it would be
+# Filesystem 1024-blocks Used Available Capacity Mounted on
+
+head -n1 t1 > exp || fail=1
+head -n1 t2 > out || fail=1
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/misc/dirname b/tests/misc/dirname
new file mode 100755
index 0000000..c217d9a
--- /dev/null
+++ b/tests/misc/dirname
@@ -0,0 +1,89 @@
+#!/bin/sh
+# -*-perl-*-
+# Test "dirname".
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+d=$srcdir/..
+exec $PERL -w -I$d -MCoreutils -- - << \EOF
+require 5.003;
+use strict;
+use File::stat;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my $stat_single = stat('/');
+my $stat_double = stat('//');
+my $double_slash = ($stat_single->dev == $stat_double->dev
+ && $stat_single->ino == $stat_double->ino) ? '/' : '//';
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+
+my @Tests =
+ (
+ ['fail-1', {ERR => "$prog: missing operand\n"
+ . "Try `$prog --help' for more information.\n"}, {EXIT => '1'}],
+ ['fail-2', qw(a b), {ERR => "$prog: extra operand `b'\n"
+ . "Try `$prog --help' for more information.\n"}, {EXIT => '1'}],
+
+ ['a', qw(d/f), {OUT => 'd'}],
+ ['b', qw(/d/f), {OUT => '/d'}],
+ ['c', qw(d/f/), {OUT => 'd'}],
+ ['d', qw(d/f//), {OUT => 'd'}],
+ ['e', qw(f), {OUT => '.'}],
+ ['f', qw(/), {OUT => '/'}],
+ ['g', qw(//), {OUT => "$double_slash"}],
+ ['h', qw(///), {OUT => '/'}],
+ ['i', qw(//a//), {OUT => "$double_slash"}],
+ ['j', qw(///a///), {OUT => '/'}],
+ ['k', qw(///a///b), {OUT => '///a'}],
+ ['l', qw(///a//b/), {OUT => '///a'}],
+ ['m', qw(''), {OUT => '.'}],
+ );
+
+# Append a newline to end of each expected `OUT' string.
+my $t;
+foreach $t (@Tests)
+ {
+ my $arg1 = $t->[1];
+ my $e;
+ foreach $e (@$t)
+ {
+ $e->{OUT} = "$e->{OUT}\n"
+ if ref $e eq 'HASH' and exists $e->{OUT};
+ }
+ }
+
+my $save_temps = $ENV{SAVE_TEMPS};
+my $verbose = $ENV{VERBOSE};
+
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/misc/expand b/tests/misc/expand
new file mode 100755
index 0000000..dcf0681
--- /dev/null
+++ b/tests/misc/expand
@@ -0,0 +1,54 @@
+#!/bin/sh
+# -*- perl -*-
+# Exercise expand.
+
+# Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+#/
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localization of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my @Tests =
+ (
+ ['t1', '--tabs=3', {IN=>"a\tb"}, {OUT=>"a b"}],
+ ['t2', '--tabs=3,6,9', {IN=>"a\tb\tc\td\te"}, {OUT=>"a b c d e"}],
+ ['i1', '--tabs=3 -i', {IN=>"\ta\tb"}, {OUT=>" a\tb"}],
+ );
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/misc/false-status b/tests/misc/false-status
new file mode 100755
index 0000000..612b5f9
--- /dev/null
+++ b/tests/misc/false-status
@@ -0,0 +1,45 @@
+#!/bin/sh
+# ensure that false exits nonzero even with --help or --version
+
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ false --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+false --version > /dev/null && fail=1
+false --help > /dev/null && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/misc/fold b/tests/misc/fold
new file mode 100755
index 0000000..ceab2e9
--- /dev/null
+++ b/tests/misc/fold
@@ -0,0 +1,68 @@
+#!/bin/sh
+# -*- perl -*-
+# Exercise fold.
+
+# Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+# Ensure that we don't run an older version of fold.
+# Prior to 5.0.91, some of the tests below would cause fold to infloop,
+# and since `make check' might be run even after a build failure, it'd
+# expose just such an older version.
+ver=`fold --version|sed 1q`
+case $ver in
+ *" $PACKAGE_VERSION") ;;
+ *) echo 1>&2 \
+ "$0: found unexpected version of fold, \`$ver'"
+ "(expected $PACKAGE_VERSION)"
+ exit 1;;
+esac
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+#/
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localization of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my @Tests =
+ (
+ ['s1', '-w2 -s', {IN=>"a\t"}, {OUT=>"a\n\t"}],
+ ['s2', '-w4 -s', {IN=>"abcdef d\n"}, {OUT=>"abcd\nef d\n"}],
+ ['s3', '-w4 -s', {IN=>"a cd fgh\n"}, {OUT=>"a \ncd \nfgh\n"}],
+ ['s4', '-w4 -s', {IN=>"abc ef\n"}, {OUT=>"abc \nef\n"}],
+ );
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/misc/head-c b/tests/misc/head-c
new file mode 100755
index 0000000..ba13c32
--- /dev/null
+++ b/tests/misc/head-c
@@ -0,0 +1,49 @@
+#!/bin/sh
+# exercise the fix of 2001-08-18, based on test case from Ian Bruce
+
+# Copyright (C) 2001, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ head --version
+fi
+
+pwd=`pwd`
+tmp=head-c.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+echo abc > in || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+(head -c1; head -c1) < in > out || fail=1
+case "`cat out`" in
+ ab) ;;
+ *) fail=1 ;;
+esac
+
+(exit $fail); exit $fail
diff --git a/tests/misc/head-elide-tail b/tests/misc/head-elide-tail
new file mode 100755
index 0000000..911ca61
--- /dev/null
+++ b/tests/misc/head-elide-tail
@@ -0,0 +1,123 @@
+#!/bin/sh
+# -*- perl -*-
+# Exercise head's --bytes=-N option.
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+#/
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+$ENV{PROG} = 'head';
+
+# Turn off localization of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+# This should match the definition in head.c.
+my $READ_BUFSIZE = 4096;
+
+my @Tests =
+ (
+ # Elide the exact size of the file.
+ ['elide-b1', "--bytes=-2", {IN=>"a\n"}, {OUT=>''}],
+ # Elide more than the size of the file.
+ ['elide-b2', "--bytes=-2", {IN=>"a"}, {OUT=>''}],
+ # Leave just one byte.
+ ['elide-b3', "--bytes=-2", {IN=>"abc"}, {OUT=>'a'}],
+ # Make it so the elided bytes straddle the end of the first
+ # $READ_BUFSIZE block.
+ ['elide-b4', "--bytes=-2",
+ {IN=> 'a' x ($READ_BUFSIZE-3) . "\nbcd"},
+ {OUT=>'a' x ($READ_BUFSIZE-3) . "\nb"}],
+ # Make it so the elided bytes straddle the end of the 2nd
+ # $READ_BUFSIZE block.
+ ['elide-b5', "--bytes=-2",
+ {IN=> 'a' x (2 * $READ_BUFSIZE - 2) . 'bcd'},
+ {OUT=>'a' x (2 * $READ_BUFSIZE - 2) . 'b'}],
+
+ ['elide-l0', "--lines=-1", {IN=>''}, {OUT=>''}],
+ ['elide-l1', "--lines=-1", {IN=>"a\n"}, {OUT=>''}],
+ ['elide-l2', "--lines=-1", {IN=>"a"}, {OUT=>''}],
+ ['elide-l3', "--lines=-1", {IN=>"a\nb"}, {OUT=>"a\n"}],
+ ['elide-l4', "--lines=-1", {IN=>"a\nb\n"}, {OUT=>"a\n"}],
+ );
+
+if ($ENV{RUN_EXPENSIVE_TESTS})
+ {
+ # Brute force: use all combinations of file sizes [0..20] and
+ # number of bytes to elide [0..20]. For better coverage, recompile
+ # head with -DHEAD_TAIL_PIPE_READ_BUFSIZE=4 and
+ # -DHEAD_TAIL_PIPE_BYTECOUNT_THRESHOLD=8
+ my $s = "abcdefghijklmnopqrst";
+ for my $file_size (0..20)
+ {
+ for my $n_elide (0..20)
+ {
+ my $input = substr $s, 0, $file_size;
+ my $out_len = $n_elide < $file_size ? $file_size - $n_elide : 0;
+ my $output = substr $input, 0, $out_len;
+ my $t = ["elideb$file_size-$n_elide", "--bytes=-$n_elide",
+ {IN=>$input}, {OUT=>$output}];
+ push @Tests, $t;
+ my @u = @$t;
+ # Insert the ---presume-input-pipe option.
+ $u[0] .= 'p';
+ $u[1] .= ' ---presume-input-pipe';
+ push @Tests, \@u;
+ }
+ }
+
+ $s =~ s/(.)/$1\n/g;
+ for my $file_size (0..20)
+ {
+ for my $n_elide (0..20)
+ {
+ my $input = substr $s, 0, 2 * $file_size;
+ my $out_len = $n_elide < $file_size ? $file_size - $n_elide : 0;
+ my $output = substr $input, 0, 2 * $out_len;
+ my $t = ["elidel$file_size-$n_elide", "--lines=-$n_elide",
+ {IN=>$input}, {OUT=>$output}];
+ push @Tests, $t;
+ my @u = @$t;
+ # Insert the ---presume-input-pipe option.
+ $u[0] .= 'p';
+ $u[1] .= ' ---presume-input-pipe';
+ push @Tests, \@u;
+ }
+ }
+ }
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/misc/head-pos b/tests/misc/head-pos
new file mode 100755
index 0000000..9069feb
--- /dev/null
+++ b/tests/misc/head-pos
@@ -0,0 +1,51 @@
+#!/bin/sh
+# When reading a specified number of lines, ensure that the output
+# file pointer is positioned just after those lines.
+
+# Copyright (C) 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ head --version
+fi
+
+pwd=`pwd`
+tmp=head-pos.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+(echo a; echo b) > in || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+(head -n 1 >/dev/null; cat) < in > out || fail=1
+cat <<EOF > exp
+b
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/misc/mknod b/tests/misc/mknod
new file mode 100755
index 0000000..12cb0a6
--- /dev/null
+++ b/tests/misc/mknod
@@ -0,0 +1,56 @@
+#!/bin/sh
+# Ensure that mknod, mkfifo, mkdir -m MODE work with a restrictive umask
+
+# Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mknod --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+umask 777
+
+mknod -m 734 f1 p || fail=1
+set _ `ls -dgo f1`; shift; mode=$1
+test $mode = prwx-wxr-- || fail=1
+
+mkfifo -m 734 f2 || fail=1
+set _ `ls -dgo f2`; shift; mode=$1
+test $mode = prwx-wxr-- || fail=1
+
+mkdir -m 734 f3 || fail=1
+set _ `ls -dgo f3`; shift; mode=$1
+test $mode = drwx-wxr-- || test $mode = drwx-wsr-- || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/misc/nice b/tests/misc/nice
new file mode 100755
index 0000000..02c10b5
--- /dev/null
+++ b/tests/misc/nice
@@ -0,0 +1,86 @@
+#! /bin/sh
+# Test "nice".
+
+# Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# This script takes no arguments.
+
+if test -n "$DJDIR"; then
+ echo "$0: cannot test nice on DJGPP" >&2
+ exit 77
+fi
+
+tests='
+0 empty 10
+1 -1 1
+2 -12 12
+3 -1:-2 2
+4 -n:1 1
+5 -n:1:-2 2
+6 -n:1:-+12 12
+7 -2:-n:1 1
+8 -2:-n:12 12
+9 -+1 1
+10 -+12 12
+11 -+1:-+12 12
+12 -n:+1 1
+13 --1:-2 2
+14 --1:-2:-13 13
+15 --1:-n:2 2
+16 --1:-n:2:-3 3
+17 --1:-n:2:-13 13
+18 -n:-1:-12 12
+19 --1:-12 12
+NA LAST NA
+'
+set $tests
+
+if test "$VERBOSE" = yes; then
+ nice --version
+ set -x
+fi
+
+# Require that this test be run at `nice' level 0.
+niceness=`nice`
+if test "$niceness" = 0; then
+ : ok
+else
+ echo "$0: this test must be run at nice level 0" 1>&2
+ exit 77
+fi
+
+fail=0
+while :; do
+ test_name=$1
+ args=$2
+ expected_result=$3
+ test $args = empty && args=''
+ test x$args = xLAST && break
+ args=`echo x$args|tr : ' '|sed 's/^x//'`
+ if test "$VERBOSE" = yes; then
+ #echo "testing \`nice $args nice\` = $expected_result ..."
+ echo "test $test_name... " | tr -d '\n'
+ fi
+ test x`nice $args nice 2> /dev/null` = x$expected_result \
+ && ok=ok || ok=FAIL fail=1
+ test "$VERBOSE" = yes && echo $ok
+ test x`nice $args nice 2> /dev/null` = x$expected_result || fail=1
+ shift; shift; shift
+done
+
+exit $fail
diff --git a/tests/misc/nl b/tests/misc/nl
new file mode 100755
index 0000000..72d2c21
--- /dev/null
+++ b/tests/misc/nl
@@ -0,0 +1,63 @@
+#!/bin/sh
+# exercise nl functionality
+
+# Copyright (C) 2002, 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ nl --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+echo a | nl > out || fail=1
+echo b | nl -s%n >> out || fail=1
+echo c | nl -n ln >> out || fail=1
+echo d | nl -n rn >> out || fail=1
+echo e | nl -n rz >> out || fail=1
+echo === >> out
+printf 'a\n\n' | nl > t || fail=1; cat -A t >> out
+cat <<\EOF > exp
+ 1 a
+ 1%nb
+1 c
+ 1 d
+000001 e
+===
+ 1^Ia$
+ $
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/misc/nohup b/tests/misc/nohup
new file mode 100755
index 0000000..6166473
--- /dev/null
+++ b/tests/misc/nohup
@@ -0,0 +1,128 @@
+#!/bin/sh
+# test nohup
+
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ nohup --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+nohup sh -c 'echo stdout; echo stderr 1>&2' 2>err || fail=1
+
+# Be careful. The results of the above nohup command
+# change depending on whether stdin and stdout are redirected.
+if test -t 1; then
+ test "`cat nohup.out`" = stdout || fail=1
+ if test -t 0; then
+ echo 'nohup: ignoring input and appending output to `nohup.out'\'
+ else
+ echo 'nohup: appending output to `nohup.out'\'
+ fi >exp || fail=1
+else
+ # Here it should not even exist.
+ test -f nohup.out && fail=1
+ if test -t 0; then
+ echo 'nohup: ignoring input' >exp
+ else
+ rm -f exp
+ fi || fail=1
+fi
+echo 'stderr' >> exp || fail=1
+
+cmp exp err || fail=1
+test $fail = 1 && diff exp err 2> /dev/null
+rm -f nohup.out err exp
+# ----------------------
+
+# Be careful. The results of the following nohup command
+# change depending on whether stderr is redirected.
+nohup sh -c 'echo stdout; echo stderr 1>&2' >out || fail=1
+if test -t 2; then
+ test "`cat out|tr '\n' -`" = stdout-stderr- || fail=1
+else
+ test "`cat out|tr '\n' -`" = stdout- || fail=1
+fi
+# It must *not* exist.
+test -f nohup.out && fail=1
+rm -f nohup.out err
+# ----------------------
+
+nohup no-such-command 2> err
+errno=$?
+if test -t 1; then
+ test $errno = 127 || fail=1
+ # It must exist.
+ test -f nohup.out || fail=1
+ # It must be empty.
+ test -s nohup.out && fail=1
+fi
+
+cat <<\EOF > exp || fail=1
+nohup: appending output to `nohup.out'
+nohup: cannot run command `no-such-command': No such file or directory
+EOF
+# Disable these comparisons. Too much variation in 2nd line.
+# cmp exp err || fail=1
+# test $fail = 1 && diff exp err 2> /dev/null
+rm -f nohup.out err exp
+# ----------------------
+
+touch k; chmod 0 k
+nohup ./k 2> err
+errno=$?
+test $errno = 126 || fail=1
+if test -t 1; then
+ # It must exist.
+ test -f nohup.out || fail=1
+ # It must be empty.
+ test -s nohup.out && fail=1
+fi
+
+cat <<\EOF > exp || fail=1
+nohup: appending output to `nohup.out'
+nohup: cannot run command `./k': Permission denied
+EOF
+# Disable these comparisons. Too much variation in 2nd line.
+# cmp exp err || fail=1
+# test $fail = 1 && diff exp err 2> /dev/null
+
+# Make sure it fails with exit status of 127 when given too few arguments.
+nohup >/dev/null 2>&1
+test $? = 127 || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/misc/paste-no-nl b/tests/misc/paste-no-nl
new file mode 100755
index 0000000..6fafb08
--- /dev/null
+++ b/tests/misc/paste-no-nl
@@ -0,0 +1,64 @@
+#!/bin/sh
+# -*- perl -*-
+# Ensure that paste properly handles files lacking a final newline.
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+#/
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+$ENV{PROG} = 'paste';
+
+# Turn off localization of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my @Tests =
+ (
+ ['no-nl-1', {IN=>"a"}, {IN=>"b"}, {OUT=>"a\tb\n"}],
+ ['no-nl-2', {IN=>"a\n"}, {IN=>"b"}, {OUT=>"a\tb\n"}],
+ ['no-nl-3', {IN=>"a"}, {IN=>"b\n"}, {OUT=>"a\tb\n"}],
+ ['no-nl-4', {IN=>"a\n"}, {IN=>"b\n"}, {OUT=>"a\tb\n"}],
+
+ # Same as above, but with a two lines in each input file and
+ # the addition of the -d option to make SPACE be the output delimiter.
+ ['no-nla1', '-d" "', {IN=>"1\na"}, {IN=>"2\nb"}, {OUT=>"1 2\na b\n"}],
+ ['no-nla2', '-d" "', {IN=>"1\na\n"}, {IN=>"2\nb"}, {OUT=>"1 2\na b\n"}],
+ ['no-nla3', '-d" "', {IN=>"1\na"}, {IN=>"2\nb\n"}, {OUT=>"1 2\na b\n"}],
+ ['no-nla4', '-d" "', {IN=>"1\na\n"}, {IN=>"2\nb\n"}, {OUT=>"1 2\na b\n"}],
+ );
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/misc/pathchk1 b/tests/misc/pathchk1
new file mode 100755
index 0000000..9305f0c
--- /dev/null
+++ b/tests/misc/pathchk1
@@ -0,0 +1,57 @@
+#!/bin/sh
+# pathchk tests
+
+# Copyright (C) 2002, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ pathchk --version
+fi
+
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+touch file || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# This should exit nonzero. Before 2.0.13, it gave a diagnostic,
+# but exited successfully.
+pathchk file/x > /dev/null 2>&1 && fail=1
+
+# This should exit nonzero. Through 5.3.0 it exited with status zero.
+pathchk -p '' > /dev/null 2>&1 && fail=1
+
+# This tests the new -P option.
+pathchk -P '' > /dev/null 2>&1 && fail=1
+pathchk -P -- - > /dev/null 2>&1 && fail=1
+pathchk -p -P x/- > /dev/null 2>&1 && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/misc/pr b/tests/misc/pr
new file mode 100755
index 0000000..a40ea31
--- /dev/null
+++ b/tests/misc/pr
@@ -0,0 +1,61 @@
+#!/bin/sh
+# -*- perl -*-
+# Exercise a bug with pr -m -s
+
+# Copyright (C) 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+. $srcdir/../envvar-check
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+#/
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+$ENV{PROG} = 'pr';
+my $ME = $ENV{PROG};
+
+# Turn off localization of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my @Tests =
+ (
+ ['merge-w-tabs', '-m -s -t',
+ {IN=>{1=>"a\tb\tc\n"}},
+ {IN=>{2=>"m\tn\to\n"}},
+ {IN=>{3=>"x\ty\tz\n"}},
+ {OUT=>join("\t", qw(a b c m n o x y z)) . "\n"} ],
+ );
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/misc/printf b/tests/misc/printf
new file mode 100755
index 0000000..481cb37
--- /dev/null
+++ b/tests/misc/printf
@@ -0,0 +1,114 @@
+#!/bin/sh
+# basic tests for printf
+
+# Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+prog=`pwd`/../../src/printf
+
+if test "$VERBOSE" = yes; then
+ set -x
+ "$prog" --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# This would fail (by printing the `--') for printf in sh-utils
+# and in coreutils 4.5.1.
+"$prog" -- 'foo\n' > out || fail=1
+cat <<\EOF > exp
+foo
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+rm -f out exp
+# Until coreutils-4.5.10, this would elicit a segfault.
+"$prog" '1 %*sy\n' -3 x > out || fail=1
+
+# Until coreutils 5.2.2, this would succeed.
+if POSIXLY_CORRECT=1 "$prog" '2 \x' >/dev/null 2>&1; then
+ fail=1
+else
+ echo '2 failed, as expected' >> out
+fi
+
+# Until coreutils-4.5.12, these would fail.
+"$prog" '3 \x40\n' >> out || fail=1
+POSIXLY_CORRECT=1 \
+"$prog" '4 \x40\n' >> out || fail=1
+"$prog" '5 % +d\n' 234 >> out || fail=1
+
+# This should print "6 !\n", but don't rely on `!' being the
+# one-byte representation of octal 041. With printf prior to
+# coreutils-5.0.1, it would print six bytes: "6 \41\n".
+"$prog" '6 \41\n' | tr '\41' '!' >> out
+
+# Note that as of coreutils-5.0.1, printf with a format of '\0002x'
+# prints a NUL byte followed by the digit `2' and an `x'.
+# By contrast bash's printf outputs the same thing as $(printf '\2x') does.
+"$prog" '7 \2y \02y \002y \0002y\n' |tr '\0\2' '*=' >> out
+
+"$prog" '8 %b %b %b %b\n' '\1y' '\01y' '\001y' '\0001y'|tr '\1' = >> out
+
+"$prog" '9 %*dx\n' -2 0 >>out || fail=1
+
+"$prog" '10 %.*dx\n' -2147483648 0 >>out || fail=1
+
+"$prog" '11 %*c\n' 2 x >>out || fail=1
+
+"$prog" '%#d\n' 0 >>out 2> /dev/null && fail=1
+
+"$prog" '%0s\n' 0 >>out 2> /dev/null && fail=1
+
+"$prog" '%.9c\n' 0 >>out 2> /dev/null && fail=1
+
+"$prog" '%'\''s\n' 0 >>out 2> /dev/null && fail=1
+
+cat <<\EOF > exp
+1 x y
+2 failed, as expected
+3 @
+4 @
+5 +234
+6 !
+7 =y =y =y *2y
+8 =y =y =y =y
+9 0 x
+10 0x
+11 x
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff -au out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/misc/printf-hex b/tests/misc/printf-hex
new file mode 100755
index 0000000..d3d5d04
--- /dev/null
+++ b/tests/misc/printf-hex
@@ -0,0 +1,52 @@
+#!/bin/sh
+# make sure that only two hex. digits are consumed in a \xHHH sequence
+
+# Copyright (C) 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+prog=`pwd`/../../src/printf
+
+if test "$VERBOSE" = yes; then
+ set -x
+ "$prog" --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+"$prog" '\x7e3\n' > out || fail=1
+cat <<\EOF > exp
+~3
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/misc/pwd-long b/tests/misc/pwd-long
new file mode 100755
index 0000000..6fc83e2
--- /dev/null
+++ b/tests/misc/pwd-long
@@ -0,0 +1,132 @@
+#!/bin/sh
+# Ensure that pwd works even when run from a very deep directory.
+
+# Copyright (C) 2006-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+framework_failure=0
+pwd=`"${BUILD_SRC_DIR?}"/pwd` || framework_failure=1
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+ARGV_0=$0
+export ARGV_0
+
+CWD=$pwd/$tmp
+export CWD
+
+$PERL -Tw -- - <<\EOF
+
+# Show that pwd works even when the length of the resulting
+# directory name is longer than PATH_MAX.
+use strict;
+
+(my $ME = $ENV{ARGV_0}) =~ s|.*/||;
+
+sub normalize_to_cwd_relative ($$$)
+{
+ my ($dir, $dev, $ino) = @_;
+ my $slash = -1;
+ my $next_slash;
+ while (1)
+ {
+ $slash = index $dir, '/', $slash + 1;
+ $slash <= -1
+ and die "$ME: $dir does not contain old CWD\n";
+ my $dir_prefix = $slash ? substr ($dir, 0, $slash) : '/';
+ my ($d, $i) = (stat $dir_prefix)[0, 1];
+ $d == $dev && $i == $ino
+ and return substr $dir, $slash + 1;
+ }
+}
+
+# Set up a safe, well-known environment
+delete @ENV{qw(BASH_ENV CDPATH ENV PATH)};
+$ENV{IFS} = '';
+
+# Save CWD's device and inode numbers.
+my ($dev, $ino) = (stat '.')[0, 1];
+
+# Construct the expected "."-relative part of pwd's output.
+my $z = 'z' x 31;
+my $n = 256;
+my $expected = "/$z" x $n;
+# Remove the leading "/".
+substr ($expected, 0, 1) = '';
+
+my $i = 0;
+do
+ {
+ mkdir $z, 0700
+ or die "$ME: at depth $i: $!\n";
+ chdir $z;
+ }
+until (++$i == $n);
+
+my $build_src_dir = $ENV{BUILD_SRC_DIR};
+$build_src_dir
+ or die "$ME: envvar BUILD_SRC_DIR not defined\n";
+if ($build_src_dir !~ m!^([-+.:/\w]+)$!)
+ {
+ warn "$0: skipping this test; odd build source directory name:\n"
+ . "$build_src_dir\n";
+ exit 77;
+ }
+$build_src_dir = $1;
+
+my $pwd_binary = "$build_src_dir/pwd";
+
+-x $pwd_binary
+ or die "$ME: $pwd_binary is not an executable file\n";
+chomp (my $actual = `$pwd_binary`);
+
+# Convert the absolute name from pwd into a $CWD-relative name.
+# This is necessary in order to avoid a spurious failure when run
+# from a directory in a bind-mounted partition. What happens is
+# pwd reads a ".." that contains two or more entries with identical
+# dev,ino that match the ones we're looking for, and it chooses a
+# name that does not correspond to the one already recorded in $CWD.
+$actual = normalize_to_cwd_relative $actual, $dev, $ino;
+
+if ($expected ne $actual)
+ {
+ my $e_len = length $expected;
+ my $a_len = length $actual;
+ warn "expected len: $e_len\n";
+ warn "actual len: $a_len\n";
+ warn "expected: $expected\n";
+ warn "actual: $actual\n";
+ exit 1;
+ }
+EOF
diff --git a/tests/misc/pwd-unreadable-parent b/tests/misc/pwd-unreadable-parent
new file mode 100755
index 0000000..72c666e
--- /dev/null
+++ b/tests/misc/pwd-unreadable-parent
@@ -0,0 +1,70 @@
+#!/bin/sh
+# Ensure that pwd and "readlink -e ." work even when a parent directory
+# is unreadable. Perform this test only on systems with a usable getcwd
+# function that has this capability.
+
+# Copyright (C) 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ pwd --version
+ readlink --version
+fi
+
+test $host_os != linux-gnu &&
+ {
+ echo 1>&2 "$0: vendor getcwd may be inadequate; skipping this test"
+ (exit 77); exit 77
+ }
+
+# Linux ia64 has the gl_FUNC_GETCWD_ABORT_BUG, so we can't use
+# the system getcwd.
+test $REPLACE_GETCWD = 1 &&
+ {
+ echo 1>&2 "$0: can't use buggy system getcwd; skipping this test"
+ (exit 77); exit 77
+ }
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir -p a/b || framework_failure=1
+cd a/b || framework_failure=1
+chmod a=x .. || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+pwd_exe=$pwd/../../src/pwd
+
+fail=0
+$pwd_exe > exp || fail=1
+readlink -ev . > out || fail=1
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/misc/sha224sum b/tests/misc/sha224sum
new file mode 100755
index 0000000..2b3c402
--- /dev/null
+++ b/tests/misc/sha224sum
@@ -0,0 +1,63 @@
+#!/bin/sh
+# Test "sha224sum".
+
+# Copyright (C) 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my @Tests =
+ (
+ ['s3', {IN=> {f=> 'abc'}},
+ {OUT=>"23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7 f\n"}],
+ ['s4',
+ {IN=> {f=> 'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq'}},
+ {OUT=>"75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525 f\n"}],
+ ['s8', {IN=> {f=> 'a' x 1000000}},
+ {OUT=>"20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67 f\n"}],
+ );
+
+# Insert the `--text' argument for each test.
+my $t;
+foreach $t (@Tests)
+ {
+ splice @$t, 1, 0, '--text' unless @$t[1] =~ /--check/;
+ }
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/misc/sha256sum b/tests/misc/sha256sum
new file mode 100755
index 0000000..59ee072
--- /dev/null
+++ b/tests/misc/sha256sum
@@ -0,0 +1,69 @@
+#!/bin/sh
+# Test "sha256sum".
+
+# Copyright (C) 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my $sha_degenerate = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";
+
+my @Tests =
+ (
+ ['s1', {IN=> {f=> ''}},
+ {OUT=>"$sha_degenerate f\n"}],
+ ['s2', {IN=> {f=> 'a'}},
+ {OUT=>"ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb f\n"}],
+ ['s3', {IN=> {f=> 'abc'}},
+ {OUT=>"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad f\n"}],
+ ['s4',
+ {IN=> {f=> 'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq'}},
+ {OUT=>"248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1 f\n"}],
+ ['s8', {IN=> {f=> 'a' x 1000000}},
+ {OUT=>"cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0 f\n"}],
+ );
+
+# Insert the `--text' argument for each test.
+my $t;
+foreach $t (@Tests)
+ {
+ splice @$t, 1, 0, '--text' unless @$t[1] =~ /--check/;
+ }
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/misc/sha384sum b/tests/misc/sha384sum
new file mode 100755
index 0000000..8236104
--- /dev/null
+++ b/tests/misc/sha384sum
@@ -0,0 +1,69 @@
+#!/bin/sh
+# Test "sha384sum".
+
+# Copyright (C) 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my $sha_degenerate = "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b";
+
+my @Tests =
+ (
+ ['s1', {IN=> {f=> ''}},
+ {OUT=>"$sha_degenerate f\n"}],
+ ['s2', {IN=> {f=> 'a'}},
+ {OUT=>"54a59b9f22b0b80880d8427e548b7c23abd873486e1f035dce9cd697e85175033caa88e6d57bc35efae0b5afd3145f31 f\n"}],
+ ['s3', {IN=> {f=> 'abc'}},
+ {OUT=>"cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7 f\n"}],
+ ['s4',
+ {IN=> {f=> 'abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu'}},
+ {OUT=>"09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712fcc7c71a557e2db966c3e9fa91746039 f\n"}],
+ ['s8', {IN=> {f=> 'a' x 1000000}},
+ {OUT=>"9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5b07b8b3dc38ecc4ebae97ddd87f3d8985 f\n"}],
+ );
+
+# Insert the `--text' argument for each test.
+my $t;
+foreach $t (@Tests)
+ {
+ splice @$t, 1, 0, '--text' unless @$t[1] =~ /--check/;
+ }
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/misc/sha512sum b/tests/misc/sha512sum
new file mode 100755
index 0000000..84f4cfb
--- /dev/null
+++ b/tests/misc/sha512sum
@@ -0,0 +1,69 @@
+#!/bin/sh
+# Test "sha512sum".
+
+# Copyright (C) 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my $sha_degenerate = "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e";
+
+my @Tests =
+ (
+ ['s1', {IN=> {f=> ''}},
+ {OUT=>"$sha_degenerate f\n"}],
+ ['s2', {IN=> {f=> 'a'}},
+ {OUT=>"1f40fc92da241694750979ee6cf582f2d5d7d28e18335de05abc54d0560e0f5302860c652bf08d560252aa5e74210546f369fbbbce8c12cfc7957b2652fe9a75 f\n"}],
+ ['s3', {IN=> {f=> 'abc'}},
+ {OUT=>"ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f f\n"}],
+ ['s4',
+ {IN=> {f=> 'abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu'}},
+ {OUT=>"8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909 f\n"}],
+ ['s8', {IN=> {f=> 'a' x 1000000}},
+ {OUT=>"e718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973ebde0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b f\n"}],
+ );
+
+# Insert the `--text' argument for each test.
+my $t;
+foreach $t (@Tests)
+ {
+ splice @$t, 1, 0, '--text' unless @$t[1] =~ /--check/;
+ }
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/misc/shuf b/tests/misc/shuf
new file mode 100755
index 0000000..a2d5891
--- /dev/null
+++ b/tests/misc/shuf
@@ -0,0 +1,68 @@
+#!/bin/sh
+# Ensure that shuf randomizes its input.
+
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ shuf --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+seq 100 > in || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+shuf in >out || fail=1
+
+# Fail if the input is the same as the output.
+# This is a probabilistic test :-)
+# However, the odds of failure are very low: 1 in 100! (~ 1 in 10^158)
+cmp in out > /dev/null && { fail=1; echo "not random?" 1>&2; }
+
+# Fail if the sorted output is not the same as the input.
+sort -n out > out1
+cmp in out1 || { fail=1; echo "not a permutation" 1>&2; }
+
+# Exercise shuf's -i option.
+shuf -i 1-100 > out || fail=1
+cmp in out > /dev/null && { fail=1; echo "not random?" 1>&2; }
+sort -n out > out1
+cmp in out1 || { fail=1; echo "not a permutation" 1>&2; }
+
+# Exercise shuf's -e option.
+t=`shuf -e a b c d e | sort | fmt`
+test "$t" = 'a b c d e' || { fail=1; echo "not a permutation" 1>&2; }
+
+# Before coreutils-6.3, this would infloop.
+# "seq 1860" produces 8193 (8K + 1) bytes of output.
+seq 1860 | shuf > /dev/null || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/misc/sort-compress b/tests/misc/sort-compress
new file mode 100755
index 0000000..0cafb2e
--- /dev/null
+++ b/tests/misc/sort-compress
@@ -0,0 +1,92 @@
+#!/bin/sh
+# Test use of compression by sort
+
+# Copyright (C) 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ sort --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+seq -w 2000 > exp || framework_failure=1
+tac exp > in || framework_failure=1
+SORT=$abs_top_builddir/src/sort
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# This should force the use of temp files compressed with the default gzip
+sort -S 1k in > out || fail=1
+cmp exp out || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+# Create our own gzip program that will be used as the default
+cat <<\EOF > gzip || fail=1
+#!/bin/sh
+tr 41 14
+touch ok
+EOF
+
+chmod +x gzip
+
+# This will find our new gzip in PATH
+PATH=.:$PATH sort -S 1k --compress-program=gzip in > out || fail=1
+cmp exp out || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+test -f ok || fail=1
+rm -f ok
+
+# This is to make sure it works with no compression.
+PATH=.:$PATH sort -S 1k in > out || fail=1
+cmp exp out || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+test -f ok && fail=1
+
+# This is to make sure we can use something other than gzip
+mv gzip dzip || fail=1
+sort --compress-program=./dzip -S 1k in > out || fail=1
+cmp exp out || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+test -f ok || fail=1
+rm -f ok
+
+# Make sure it can find other programs in PATH correctly
+PATH=.:$PATH sort --compress-program=dzip -S 1k in > out || fail=1
+cmp exp out || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+test -f ok || fail=1
+rm -f dzip ok
+
+# This is to make sure sort functions if it can't find the default gzip
+PATH=. "$SORT" -S 1k in > out || fail=1
+cmp exp out || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/misc/sort-merge b/tests/misc/sort-merge
new file mode 100755
index 0000000..a737e4d
--- /dev/null
+++ b/tests/misc/sort-merge
@@ -0,0 +1,50 @@
+#!/bin/sh
+# Test "sort -m".
+
+# Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my @Tests =
+ (
+ ['m1', '-m', {IN=> {empty=> ''}}, {IN=> {f=> "foo\n"}}, {OUT=>"foo\n"}],
+ );
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = 'sort';
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/misc/sort-rand b/tests/misc/sort-rand
new file mode 100755
index 0000000..f997318
--- /dev/null
+++ b/tests/misc/sort-rand
@@ -0,0 +1,54 @@
+#!/bin/sh
+# Ensure that sort --sort-random doesn't sort.
+
+# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ sort --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+seq 100 > in || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+sort --random-sort in > out || fail=1
+
+# Fail if the input is the same as the output.
+# This is a probabilistic test :-)
+# However, the odds of failure are very low: 1 in 100! (~ 1 in 10^158)
+cmp in out > /dev/null && { fail=1; echo "not random?" 1>&2; }
+
+# Fail if the sorted output is not the same as the input.
+sort -n out > out1
+cmp in out1 || { fail=1; echo "not a permutation" 1>&2; }
+
+(exit $fail); exit $fail
diff --git a/tests/misc/split-a b/tests/misc/split-a
new file mode 100755
index 0000000..3026aac
--- /dev/null
+++ b/tests/misc/split-a
@@ -0,0 +1,96 @@
+#!/bin/sh
+# Show that split -a works.
+
+# Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ split --version
+fi
+
+. $srcdir/../lang-default
+
+pwd=`pwd`
+tmp=split-a.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Generate a 27-byte file
+# yes|tr -d y|head -n27 > in
+echo abcdefghijklmnopqrstuvwxyz > in
+
+# This should fail.
+split -b 1 -a 1 in 2> err && fail=1
+test -f xa || fail=1
+test -f xz || fail=1
+test -f xaa && fail=1
+test -f xaz && fail=1
+rm -f x*
+
+# With a longer suffix, it must succeed.
+split --verbose -b 1 -a 2 in 2> err || fail=1
+test -f xaa || fail=1
+test -f xaz || fail=1
+test -f xba || fail=1
+test -f xbb && fail=1
+
+cat <<\EOF > exp
+creating file `xaa'
+creating file `xab'
+creating file `xac'
+creating file `xad'
+creating file `xae'
+creating file `xaf'
+creating file `xag'
+creating file `xah'
+creating file `xai'
+creating file `xaj'
+creating file `xak'
+creating file `xal'
+creating file `xam'
+creating file `xan'
+creating file `xao'
+creating file `xap'
+creating file `xaq'
+creating file `xar'
+creating file `xas'
+creating file `xat'
+creating file `xau'
+creating file `xav'
+creating file `xaw'
+creating file `xax'
+creating file `xay'
+creating file `xaz'
+creating file `xba'
+EOF
+
+cmp err exp || fail=1
+test $fail = 1 && diff err exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/misc/split-fail b/tests/misc/split-fail
new file mode 100755
index 0000000..70435b4
--- /dev/null
+++ b/tests/misc/split-fail
@@ -0,0 +1,88 @@
+#!/bin/sh
+# split must fail when given length/count of zero.
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ split --version
+fi
+
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+touch in || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+split -a 0 in 2> /dev/null || fail=1
+split -b 0 in 2> /dev/null && fail=1
+split -C 0 in 2> /dev/null && fail=1
+split -l 0 in 2> /dev/null && fail=1
+
+# Make sure that the obsolete -N notation still works
+split -1 in 2> /dev/null || fail=1
+
+# Then make sure that -0 evokes a failure.
+split -0 in 2> /dev/null && fail=1
+
+# Ensure that split --lines=N and --bytes=N work for N=2^32,
+# assuming our host supports integers that wide.
+if _4gb=`expr 4294967296 + 0 2>/dev/null`; then
+ split --lines=$_4gb in || fail=1
+ split --bytes=$_4gb in || fail=1
+fi
+
+# Currently (coreutils-5.0.1) split --line-bytes=M fails
+# with `invalid number of bytes' for M=2^32 or larger. Actually,
+# the limit is SIZE_MAX, which is 2^32 on 32-bit systems.
+# On 64-bit systems, there's no problem with a count of 2^32,
+# So disable this test in order to avoid the `failure' on 64-bit systems.
+#split --line-bytes=$_4gb 2> /dev/null in && fail=1
+
+# Make sure that a huge obsolete option evokes the right failure.
+split -99999999999999999991 2> out && fail=1
+
+# On losing systems (x86 Solaris 5.9 c89), we get a message like this:
+# split: line count option -9999999999... is too large
+# while on most, we get this:
+# split: line count option -99999999999999999991... is too large
+# so map them both to -99*.
+sed 's/99[19]*/99*/' out > out-t
+mv -f out-t out
+
+cat <<\EOF > exp
+split: line count option -99*... is too large
+EOF
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+
+(exit $fail); exit $fail
diff --git a/tests/misc/split-l b/tests/misc/split-l
new file mode 100755
index 0000000..4491683
--- /dev/null
+++ b/tests/misc/split-l
@@ -0,0 +1,64 @@
+#!/bin/sh
+# show that `split --lines=2' works.
+
+# Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ ln --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+printf '1\n2\n3\n4\n5\n' > in || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+split --lines=2 in > out || fail=1
+cat <<\EOF > exp-1
+1
+2
+EOF
+cat <<\EOF > exp-2
+3
+4
+EOF
+cat <<\EOF > exp-3
+5
+EOF
+
+cmp xaa exp-1 || fail=1
+test $fail = 1 && diff xaa exp 2> /dev/null
+cmp xab exp-2 || fail=1
+test $fail = 2 && diff xab exp 2> /dev/null
+cmp xac exp-3 || fail=1
+test $fail = 3 && diff xac exp 2> /dev/null
+test -f xad && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/misc/stat-fmt b/tests/misc/stat-fmt
new file mode 100755
index 0000000..435fbbb
--- /dev/null
+++ b/tests/misc/stat-fmt
@@ -0,0 +1,48 @@
+#!/bin/sh
+# ensure that stat properly handles a format string ending with %
+
+# Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ stat --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+for i in `seq 50`; do
+ fmt=`printf "%${i}s" %`
+ out=`stat --form="$fmt" .`
+ test "$out" = "$fmt" || fail=1
+done
+
+(exit $fail); exit $fail
diff --git a/tests/misc/stat-printf b/tests/misc/stat-printf
new file mode 100755
index 0000000..ecd4940
--- /dev/null
+++ b/tests/misc/stat-printf
@@ -0,0 +1,78 @@
+#!/bin/sh
+# Test "stat --printf".
+
+# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $ME = $0) =~ s|.*/||;
+my $prog = 'stat';
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my @Tests =
+ (
+ # test-name, [option, option, ...] {OUT=>"expected-output"}
+ #
+ ['nl', q!--printf='\n' .!, {OUT=>"\n"}],
+ ['no-nl', "--printf=%n .", {OUT=>"."}],
+ ['pct-and-esc', q!--printf='\0%n\0' .!, {OUT=>"\0.\0"}],
+ ['backslash', q!--printf='\\\\' .!, {OUT=>"\\"}],
+ ['nul', q!--printf='\0' .!, {OUT=>"\0"}],
+ # Don't bother testing \v, since Perl doesn't handle it.
+ ['bel-etc', q!--printf='\a\b\f\n\r\t' .!, {OUT=>"\a\b\f\n\r\t"}],
+ ['octal-1', q!--printf='\012\377' .!, {OUT=>"\012\377"}],
+ ['octal-2', q!--printf='.\012a\377b' .!, {OUT=>".\012a\377b"}],
+ ['hex-1', q!--printf='\x34\xf' .!, {OUT=>"\x34\xf"}],
+ ['hex-2', q!--printf='.\x18p\xfq' .!, {OUT=>".\x18p\x0fq"}],
+ ['hex-3', q!--printf='\x' .!, {OUT=>'x'},
+ {ERR=>"$prog: warning: unrecognized escape `\\x'\n"}],
+
+ # With --format, there *is* a trailing newline.
+ ['f-nl', "--format=%n .", {OUT=>".\n"}],
+ ['f-nl2', "--format=%n . .", {OUT=>".\n.\n"}],
+
+ ['end-pct', "--printf=% .", {OUT=>"%"}],
+ ['pct-pct', "--printf=%% .", {OUT=>"%"}],
+ ['end-bs', "--printf='\\' .", {OUT=>'\\'},
+ {ERR=>"$prog: warning: backslash at end of format\n"}],
+
+ ['err-1', "--printf=%9% .", {EXIT => 1},
+ {ERR=>"$prog: %9%: invalid directive\n"}],
+ ['err-2', "--printf=%9 .", {EXIT => 1},
+ {ERR=>"$prog: %9: invalid directive\n"}],
+ );
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $fail = run_tests ($ME, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/misc/tac-continue b/tests/misc/tac-continue
new file mode 100755
index 0000000..d8f50ff
--- /dev/null
+++ b/tests/misc/tac-continue
@@ -0,0 +1,92 @@
+#!/bin/sh
+# Ensure that tac processes all command line arguments, even
+# when it encounters an error with say the first one.
+# With coreutils-5.2.1 and earlier, this test would fail.
+
+# Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ tac --version
+fi
+
+. $srcdir/../lang-default
+
+# See if the envvar is defined.
+if test x = "x$FULL_PARTITION_TMPDIR"; then
+ echo "$0: FULL_PARTITION_TMPDIR not defined; skipping this test" 1>&2
+ (exit 77); exit 77
+fi
+
+if ! test -d "$FULL_PARTITION_TMPDIR"; then
+ echo "$0: $FULL_PARTITION_TMPDIR:" \
+ "\$FULL_PARTITION_TMPDIR does not specify a directory" 1>&2
+ (exit 1); exit 1
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+fp_tmp="$FULL_PARTITION_TMPDIR/tac-cont-$$"
+t0="$t0 $fp_tmp"
+# Make sure we can create an empty file there (i.e. no shortage of inodes).
+if ! touch $fp_tmp; then
+ echo "$0: $fp_tmp: cannot create empty file" 1>&2
+ (exit 1); exit 1
+fi
+
+# Make sure that we fail when trying to create a file large enough
+# to consume a non-inode block.
+if seq 1000 > $fp_tmp 2>/dev/null; then
+ echo "$0: $FULL_PARTITION_TMPDIR: not a full partition" 1>&2
+ (exit 1); exit 1
+fi
+
+seq 5 > in
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Give tac a fifo command line argument.
+# This makes it try to create a temporary file in $TMPDIR.
+mkfifo fifo
+seq 1000 > fifo &
+TMPDIR=$FULL_PARTITION_TMPDIR tac fifo in >out 2>err && fail=1
+
+cat <<\EOF > exp || fail=1
+5
+4
+3
+2
+1
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/misc/test-diag b/tests/misc/test-diag
new file mode 100755
index 0000000..d2a40fa
--- /dev/null
+++ b/tests/misc/test-diag
@@ -0,0 +1,53 @@
+#!/bin/sh
+# Test the diagnostics of "test".
+
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my $prog = '../../src/test';
+my @Tests =
+ (
+ # In coreutils-5.93, this diagnostic lacked the newline.
+ ['o', '-o arg', {ERR => "test: extra argument `-o'\n"},
+ {ERR_SUBST => 's!^$prog:!test:!'},
+ {EXIT => 2}],
+ );
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/misc/tty-eof b/tests/misc/tty-eof
new file mode 100755
index 0000000..dca154e
--- /dev/null
+++ b/tests/misc/tty-eof
@@ -0,0 +1,128 @@
+#!/bin/sh
+# -*- perl -*-
+# Test whether programs exit upon a single EOF from a tty.
+
+# Copyright (C) 2003, 2006, 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+ARGV_0=$0
+export ARGV_0
+
+exec $PERL -w -- - <<\EOF
+
+# Ensure that cat exits upon a single EOF (^D) from a tty.
+# Do the same for all programs that can read stdin,
+# require no arguments and that write to standard output.
+use strict;
+
+(my $ME = $ENV{ARGV_0}) =~ s|.*/||;
+
+# Some older versions of Expect.pm (e.g. 1.07) lack the log_user method,
+# so check for that, too.
+eval { require Expect; Expect->require_version('1.11') };
+$@ and (warn "$ME: this script requires Perl's Expect package >=1.11\n"),
+ exit 77;
+
+{
+ my $fail = 0;
+ my @stdin_reading_commands = qw(
+ base64
+ cat
+ cksum
+ dd
+ expand
+ fmt
+ fold
+ head
+ md5sum
+ nl
+ od
+ paste
+ pr
+ ptx
+ sha1sum
+ sha224sum
+ sha256sum
+ sha384sum
+ sha512sum
+ shuf
+ sort
+ sum
+ tac
+ tail
+ tee
+ tsort
+ unexpand
+ uniq
+ wc
+ );
+ my $stderr = 'tty-eof.err';
+ foreach my $cmd ((@stdin_reading_commands), 'cut -f2')
+ {
+ my $exp = new Expect;
+ $exp->log_user(0);
+ $exp->spawn("$cmd 2> $stderr")
+ or (warn "$ME: cannot run `$cmd': $!\n"), $fail=1, next;
+ # No input for cut -f2.
+ $cmd =~ /^cut/
+ or $exp->send("a b\n");
+ $exp->send("\cD"); # This is Control-D. FIXME: what if that's not EOF?
+ $exp->expect (0, '-re', "^a b\\r?\$");
+ my $found = $exp->expect (1, '-re', "^.+\$");
+ # $found and warn "F: $found: " . $exp->exp_match () . "\n";
+ $exp->expect(1, 'eof');
+ # Expect no output from cut, since we gave it no input.
+ defined $found || $cmd =~ /^cut/
+ or (warn "$ME: $cmd didn't produce expected output\n"),
+ $fail=1, next;
+ defined $exp->exitstatus
+ or (warn "$ME: $cmd didn't exit after ^D from standard input\n"),
+ $fail=1, next;
+ my $s = $exp->exitstatus;
+ $s == 0
+ or (warn "$ME: $cmd exited with status $s (expected 0)\n"),
+ $fail=1;
+ $exp->hard_close();
+
+ # dd normally writes to stderr. If it exits successfully, we're done.
+ $cmd eq 'dd' && $s == 0
+ and next;
+
+ if (-s $stderr)
+ {
+ warn "$ME: $cmd wrote to stderr:\n";
+ system "cat $stderr";
+ $fail = 1;
+ }
+ }
+ continue
+ {
+ unlink $stderr
+ or warn "$ME: failed to remove stderr file from $cmd, $stderr: $!\n";
+ }
+
+ exit $fail
+}
+EOF
diff --git a/tests/misc/wc-files0 b/tests/misc/wc-files0
new file mode 100755
index 0000000..8991e7e
--- /dev/null
+++ b/tests/misc/wc-files0
@@ -0,0 +1,66 @@
+#!/bin/sh
+# Show that wc's new --files0-from option works.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ wc --version
+fi
+
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+echo 2 > 2b || framework_failure=1
+echo 2 words > 2w || framework_failure=1
+printf '2b\n2w\n' |tr '\n' '\0' > names || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+wc --files0-from=names > out || fail=1
+cat <<\EOF > exp || fail=1
+ 1 1 2 2b
+ 1 2 8 2w
+ 2 3 10 total
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+if test "$fail" = ''; then
+ # Repeat the above test, but read the file name list from stdin.
+ rm -f out
+ wc --files0-from=- < names > out || fail=1
+ cmp out exp || fail=1
+ test $fail = 1 && diff out exp 2> /dev/null
+fi
+
+(exit $fail); exit $fail
diff --git a/tests/misc/wc-files0-from b/tests/misc/wc-files0-from
new file mode 100755
index 0000000..72f1bdf
--- /dev/null
+++ b/tests/misc/wc-files0-from
@@ -0,0 +1,108 @@
+#!/bin/sh
+# -*- perl -*-
+# Exercise wc's --files0-from option.
+# This file bears a striking resemblance to tests/du/files0-from.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+. $srcdir/../envvar-check
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+#/
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+$ENV{PROG} = 'wc';
+my $ME = $ENV{PROG};
+
+# Turn off localization of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my @Tests =
+ (
+ # invalid extra command line argument
+ ['f-extra-arg', '--files0-from=- no-such', {IN=>"a"}, {EXIT=>1},
+ {ERR => "$ME: extra operand `no-such'\n"
+ . "File operands cannot be combined with --files0-from.\n"
+ . "Try `$ME --help' for more information.\n"}
+ ],
+
+ # missing input file
+ ['missing', '--files0-from=missing', {EXIT=>1},
+ {ERR => "$ME: cannot open `missing' for reading: "
+ . "No such file or directory\n"}],
+
+ # empty input
+ ['empty', '--files0-from=-'],
+
+ # empty input, from non-regular file
+ ['empty-nonreg', '--files0-from=/dev/null'],
+
+ # one NUL
+ ['nul-1', '--files0-from=-', '<', {IN=>"\0"}, {EXIT=>1},
+ {ERR => "$ME: : No such file or directory\n"}],
+
+ # two NULs
+ ['nul-2', '--files0-from=-', '<', {IN=>"\0\0"}, {EXIT=>1},
+ {OUT=>"0 0 0 total\n"},
+ {ERR => "$ME: : No such file or directory\n"
+ . "$ME: : No such file or directory\n"}],
+
+ # one file name, no NUL
+ ['1', '--files0-from=-', '<',
+ {IN=>{f=>"g"}}, {AUX=>{g=>''}}, {OUT=>"0 0 0 g\n"} ],
+
+ # one file name, with NUL
+ ['1a', '--files0-from=-', '<',
+ {IN=>{f=>"g\0"}}, {AUX=>{g=>''}}, {OUT=>"0 0 0 g\n"} ],
+
+ # two file names, no final NUL
+ ['2', '--files0-from=-', '<',
+ {IN=>{f=>"g\0g"}}, {AUX=>{g=>''}},
+ {OUT=>"0 0 0 g\n0 0 0 g\n0 0 0 total\n"} ],
+
+ # two file names, with final NUL
+ ['2a', '--files0-from=-', '<',
+ {IN=>{f=>"g\0g\0"}}, {AUX=>{g=>''}},
+ {OUT=>"0 0 0 g\n0 0 0 g\n0 0 0 total\n"} ],
+
+ # Ensure that wc processes FILEs following a zero-length name.
+ ['zero-len', '--files0-from=-', '<',
+ {IN=>{f=>"\0g\0"}}, {AUX=>{g=>''}},
+ {OUT=>"0 0 0 g\n0 0 0 total\n"},
+ {ERR => "$ME: : No such file or directory\n"}, {EXIT=>1} ],
+ );
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/mk-script b/tests/mk-script
new file mode 100755
index 0000000..d3de016
--- /dev/null
+++ b/tests/mk-script
@@ -0,0 +1,382 @@
+#! /usr/bin/perl -w
+# -*- perl -*-
+# Make test scripts.
+
+# Copyright (C) 1998, 2000, 2001, 2002, 2003, 2005 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+my $In = '.I';
+my $Out = '.O';
+my $Exp = '.X';
+my $Err = '.E';
+
+require 5.002;
+use strict;
+use POSIX qw (assert);
+
+(my $ME = $0) =~ s|.*/||;
+
+BEGIN { push @INC, '.' if '.' ne '.'; }
+use Test;
+
+my $srcdir = shift;
+
+sub validate
+{
+ my %seen;
+ my %seen_8dot3;
+
+ my $bad_test_name;
+ my $test_vector;
+ foreach $test_vector (Test::test_vector ())
+ {
+ my ($test_name, $flags, $in_spec, $expected, $e_ret_code, $rest) =
+ @$test_vector;
+ die "$0: wrong number of elements in test $test_name\n"
+ if (!defined $e_ret_code || defined $rest);
+ assert (!ref $test_name);
+ assert (!ref $flags);
+ assert (!ref $e_ret_code);
+
+ die "$0: duplicate test name \`$test_name'\n"
+ if (defined $seen{$test_name});
+ $seen{$test_name} = 1;
+
+ if (0)
+ {
+ my $t8 = lc substr $test_name, 0, 8;
+ if ($seen_8dot3{$t8})
+ {
+ warn "$ME: 8.3 test name conflict: "
+ . "$test_name, $seen_8dot3{$t8}\n";
+ $bad_test_name = 1;
+ }
+ $seen_8dot3{$t8} = $test_name;
+ }
+ }
+
+ $bad_test_name
+ and exit 1;
+}
+
+# Given a spec for the input file(s) or expected output file of a single
+# test, create a file for any string. A file is created for each literal
+# string -- not for named files. Whether a perl `string' is treated as
+# a string to be put in a file for a test or the name of an existing file
+# depends on how many references have to be traversed to get from
+# the top level variable to the actual string literal.
+# If $SPEC is a literal Perl string (not a reference), then treat $SPEC
+# as the contents of a file.
+# If $SPEC is a hash reference, then there are no inputs.
+# If $SPEC is an array reference, consider each element of the array.
+# If the element is a string reference, treat the string as the name of
+# an existing file. Otherwise, the element must be a string and is treated
+# just like a scalar $SPEC. When a file is created, its name is derived
+# from the name TEST_NAME of the corresponding test and the TYPE of file.
+# E.g., the inputs for test `3a' would be named t3a.in1 and t3a.in2, and
+# the expected output for test `7c' would be named t7c.exp.
+#
+# Also, return two lists of file names:
+# - maintainer-generated files -- names of files created by this function
+# - files named explicitly in Test.pm
+
+sub spec_to_list ($$$)
+{
+ my ($spec, $test_name, $type) = @_;
+
+ assert ($type eq $In || $type eq $Exp);
+
+ my @explicit_file;
+ my @maint_gen_file;
+ my @content_string;
+
+ # If SPEC is a hash reference, return empty lists.
+ if (ref $spec eq 'HASH')
+ {
+ assert ($type eq $In);
+ return {
+ EXPLICIT => \@explicit_file,
+ MAINT_GEN => \@maint_gen_file
+ };
+ }
+
+ if (ref $spec)
+ {
+ assert (ref $spec eq 'ARRAY' || ref $spec eq 'HASH');
+ my $file_spec;
+ foreach $file_spec (@$spec)
+ {
+ # A file spec may be a string or a reference.
+ # If it's a string, that string is to be the contents of a
+ # generated (by this script) file with name derived from the
+ # name of this test.
+ # If it's a reference, then it must be the name of an existing
+ # file.
+ if (ref $file_spec)
+ {
+ my $r = ref $file_spec;
+ die "bad test: $test_name is $r\n"
+ if ref $file_spec ne 'SCALAR';
+ my $existing_file = $$file_spec;
+ # FIXME: make sure $existing_file exists somewhere.
+ push (@explicit_file, $existing_file);
+ }
+ else
+ {
+ push (@content_string, $file_spec);
+ }
+ }
+ }
+ else
+ {
+ push (@content_string, $spec);
+ }
+
+ my $i = 1;
+ my $file_contents;
+ foreach $file_contents (@content_string)
+ {
+ my $suffix = (@content_string > 1 ? $i : '');
+ my $maint_gen_file = "$test_name$type$suffix";
+ push (@maint_gen_file, $maint_gen_file);
+ open (F, ">$srcdir/$maint_gen_file") || die "$0: $maint_gen_file: $!\n";
+ print F $file_contents;
+ close (F) || die "$0: $maint_gen_file: $!\n";
+ ++$i;
+ }
+
+ my $n_fail = 0;
+ foreach $i (@explicit_file, @maint_gen_file)
+ {
+ my $max_len = 14;
+ if (length ($i) > $max_len)
+ {
+ warn "$0: $i: generated test file name would be longer than"
+ . " $max_len characters\n";
+ ++$n_fail;
+ }
+ }
+ exit (1) if $n_fail;
+
+ my %h = (
+ EXPLICIT => \@explicit_file,
+ MAINT_GEN => \@maint_gen_file
+ );
+
+ return \%h;
+}
+
+sub wrap
+{
+ my ($preferred_line_len, @tok) = @_;
+ assert ($preferred_line_len > 0);
+ my @lines;
+ my $line = '';
+ my $word;
+ foreach $word (@tok)
+ {
+ if ($line && length ($line) + 1 + length ($word) > $preferred_line_len)
+ {
+ push (@lines, $line);
+ $line = $word;
+ next;
+ }
+ my $sp = ($line ? ' ' : '');
+ $line .= "$sp$word";
+ }
+ push (@lines, $line);
+ return @lines;
+}
+
+# ~~~~~~~ main ~~~~~~~~
+{
+ $| = 1;
+
+ die "Usage: $0: srcdir program-name\n" if @ARGV != 1;
+
+ my $xx = $ARGV[0];
+
+ if ($xx eq '--list')
+ {
+ validate ();
+ # Output three lists of files:
+ # EXPLICIT -- file names specified in Test.pm
+ # MAINT_GEN -- maintainer-generated files
+ # RUN_GEN -- files created when running the tests
+ my $test_vector;
+ my @exp;
+ my @maint;
+ my @run;
+ foreach $test_vector (Test::test_vector ())
+ {
+ my ($test_name, $flags, $in_spec, $exp_spec, $e_ret_code)
+ = @$test_vector;
+
+ push (@run, ("$test_name$Out", "$test_name$Err"));
+
+ my $in = spec_to_list ($in_spec, $test_name, $In);
+ push (@exp, @{$in->{EXPLICIT}});
+ push (@maint, @{$in->{MAINT_GEN}});
+
+ my $e = spec_to_list ($exp_spec, $test_name, $Exp);
+ push (@exp, @{$e->{EXPLICIT}});
+ push (@maint, @{$e->{MAINT_GEN}});
+ }
+
+ # The list of explicitly mentioned files may contain duplicates.
+ # Eliminated any duplicates.
+ my %e = map {$_ => 1} @exp;
+ @exp = sort keys %e;
+
+ my $len = 77;
+ print join (" \\\n", wrap ($len, 'explicit =', @exp)), "\n";
+ print join (" \\\n", wrap ($len, 'maint_gen =', @maint)), "\n";
+ print join (" \\\n", wrap ($len, 'run_gen =', @run)), "\n";
+
+ exit 0;
+ }
+
+ print <<EOF1;
+#! /bin/sh
+# This script was generated automatically by $ME.
+case \$# in
+ 0\) xx='$xx';;
+ *\) xx="\$1";;
+esac
+test "\$VERBOSE" && echo=echo || echo=:
+\$echo testing program: \$xx
+errors=0
+test "\$srcdir" || srcdir=.
+test "\$VERBOSE" && \$xx --version 2> /dev/null
+
+# Make sure we get English translations.
+LANGUAGE=C
+export LANGUAGE
+LC_ALL=C
+export LC_ALL
+LANG=C
+export LANG
+
+EOF1
+
+ validate ();
+
+ my $n_tests = 0;
+ my $test_vector;
+ foreach $test_vector (Test::test_vector ())
+ {
+ my ($test_name, $flags, $in_spec, $exp_spec, $e_ret_code)
+ = @$test_vector;
+
+ my $in = spec_to_list ($in_spec, $test_name, $In);
+
+ my @srcdir_rel_in_file;
+ my $f;
+ foreach $f (@{$in->{EXPLICIT}}, @{$in->{MAINT_GEN}})
+ {
+ push (@srcdir_rel_in_file, "\$srcdir/$f");
+ }
+
+ my $exp = spec_to_list ($exp_spec, $test_name, $Exp);
+ my @all = (@{$exp->{EXPLICIT}}, @{$exp->{MAINT_GEN}});
+ assert (@all == 1);
+ my $exp_name = "\$srcdir/$all[0]";
+ my $out = "$test_name$Out";
+ my $err_output = "$test_name$Err";
+
+ my %valid_via = map {$_ => 1} qw (REDIR FILE PIPE);
+ my %via_msg_string = (REDIR => '<', FILE => 'F', PIPE => '|');
+
+ # Inhibit warnings about `used only once'.
+ die if 0 && $Test::input_via{$test_name} && $Test::input_via_default;
+ die if 0 && $Test::env{$test_name} && $Test::env_default;
+
+ my $vias = $Test::input_via{$test_name} || $Test::input_via_default
+ || {FILE => 0};
+
+ my $n_vias = keys %$vias;
+ my $via;
+ foreach $via (sort keys %$vias)
+ {
+ my $cmd;
+ my $val = $vias->{$via};
+ my $via_msg = ($n_vias == 1 ? '' : $via_msg_string{$via});
+ my $file_args = join (' ', @srcdir_rel_in_file);
+
+ my $env = $Test::env{$test_name} || $Test::env_default || [''];
+ @$env == 1
+ or die "$ME: unexpected environment: @$env\n";
+ $env = $env->[0];
+ my $env_prefix = ($env ? "$env " : '');
+
+ if ($via eq 'FILE')
+ {
+ $cmd = "$env_prefix\$xx $flags $file_args > $out 2> $err_output";
+ }
+ elsif ($via eq 'PIPE')
+ {
+ $via_msg = "|$val" if $val;
+ $val ||= 'cat';
+ $cmd = "$val $file_args | $env_prefix\$xx $flags"
+ . " > $out 2> $err_output";
+ }
+ else
+ {
+ assert (@srcdir_rel_in_file == 1);
+ $cmd = "$env_prefix\$xx $flags"
+ . " < $file_args > $out 2> $err_output";
+ }
+
+ my $e = $env;
+ my $sep = ($via_msg && $e ? ':' : '');
+ my $msg = "$e$sep$via_msg";
+ $msg = "($msg)" if $msg;
+ my $t_name = "$test_name$msg";
+ ++$n_tests;
+ print <<EOF;
+$cmd
+code=\$?
+if test \$code != $e_ret_code; then
+ \$echo "Test $t_name failed: \$xx return code \$code differs from expected value $e_ret_code" 1>&2
+ errors=`expr \$errors + 1`
+else
+ cmp $out $exp_name > /dev/null 2>&1
+ case \$? in
+ 0) if test "\$VERBOSE"; then \$echo "passed $t_name"; fi;;
+ 1) \$echo "Test $t_name failed: files $out and $exp_name differ" 1>&2
+ (diff -c $out $exp_name) 2> /dev/null
+ errors=`expr \$errors + 1`;;
+ 2) \$echo "Test $t_name may have failed." 1>&2
+ \$echo The command \"cmp $out $exp_name\" failed. 1>&2
+ errors=`expr \$errors + 1`;;
+ esac
+fi
+test -s $err_output || rm -f $err_output
+EOF
+ }
+ }
+ print <<EOF3
+if test \$errors = 0; then
+ \$echo Passed all $n_tests tests. 1>&2
+else
+ \$echo Failed \$errors tests. 1>&2
+fi
+test \$errors = 0 || errors=1
+exit \$errors
+EOF3
+}
diff --git a/tests/mkdir/Makefile.am b/tests/mkdir/Makefile.am
new file mode 100644
index 0000000..fc2ab77
--- /dev/null
+++ b/tests/mkdir/Makefile.am
@@ -0,0 +1,9 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+TESTS = \
+ p-thru-slink \
+ p-3 p-1 p-2 p-v special-1 perm parents t-slash p-slashdot
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ srcdir=$(srcdir) \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
diff --git a/tests/mkdir/Makefile.in b/tests/mkdir/Makefile.in
new file mode 100644
index 0000000..78efc69
--- /dev/null
+++ b/tests/mkdir/Makefile.in
@@ -0,0 +1,720 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/mkdir
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = \
+ p-thru-slink \
+ p-3 p-1 p-2 p-v special-1 perm parents t-slash p-slashdot
+
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ srcdir=$(srcdir) \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/mkdir/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/mkdir/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/mkdir/p-1 b/tests/mkdir/p-1
new file mode 100755
index 0000000..7e384e4
--- /dev/null
+++ b/tests/mkdir/p-1
@@ -0,0 +1,35 @@
+#!/bin/sh
+# Test "mkdir -p".
+
+# Copyright (C) 1997, 2000, 2002, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mkdir --version
+fi
+
+pwd=`pwd`
+tmp=`echo "$0"|sed 's,.*/,,'`.tmp
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+mkdir --parents "$pwd/$tmp" || fail=1
+
+test -d $tmp || fail=1
+
+exit $fail
diff --git a/tests/mkdir/p-2 b/tests/mkdir/p-2
new file mode 100755
index 0000000..53ad876
--- /dev/null
+++ b/tests/mkdir/p-2
@@ -0,0 +1,35 @@
+#!/bin/sh
+# Just like p-1, but with an absolute path.
+
+# Copyright (C) 1997, 2000, 2002, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mkdir --version
+fi
+
+pwd=`pwd`
+tmp=`echo "$0"|sed 's,.*/,,'`.tmp
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+mkdir --parents $tmp || fail=1
+
+test -d $tmp || fail=1
+
+exit $fail
diff --git a/tests/mkdir/p-3 b/tests/mkdir/p-3
new file mode 100755
index 0000000..54e99e1
--- /dev/null
+++ b/tests/mkdir/p-3
@@ -0,0 +1,69 @@
+#!/bin/sh
+# Ensure that mkdir-p.c's fail-to-return-to-initial-working-directory
+# causes immediate failure. Also, ensure that we don't create
+# subsequent, relative command-line arguments in the wrong place.
+
+# Copyright (C) 2005-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mkdir --version
+fi
+
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir no-access || framework_failure=1
+mkdir no-acce2s || framework_failure=1
+mkdir -p no-acce3s/d || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+p=$pwd/$tmp
+(cd no-access && chmod 0 . && mkdir -p "$p/a/b" u/v) 2> /dev/null && fail=1
+test -d "$p/a/b" || fail=1
+
+# Same as above, but with a following *absolute* name, it should succeed
+(cd no-acce2s && chmod 0 . && mkdir -p "$p/b/b" "$p/z") || fail=1
+test -d "$p/b/b" && test -d "$p/z" || fail=1
+
+# Same as above, but a trailing relative name in an unreadable directory
+# whose parent is inaccessible. coreutils 5.97 fails this test.
+# Perform this test only if "." is on a local file system.
+# Otherwise, it would fail e.g., on an NFS-mounted file system.
+if df --local . >/dev/null 2>&1; then
+ (cd no-acce3s/d && chmod a-r . && chmod a-rx .. &&
+ mkdir -p a/b "$p/b/c" d/e && test -d a/b && test -d d/e) || fail=1
+ test -d "$p/b/c" || fail=1
+fi
+
+b=`ls "$p/a" | tr -d '\n'`
+# With coreutils-5.3.0, this would fail with $b=bu.
+test "x$b" = xb || fail=1
+
+exit $fail
diff --git a/tests/mkdir/p-slashdot b/tests/mkdir/p-slashdot
new file mode 100755
index 0000000..5a3561d
--- /dev/null
+++ b/tests/mkdir/p-slashdot
@@ -0,0 +1,48 @@
+#!/bin/sh
+# Ensure that mkdir -p works with arguments specified with a trailing "/.".
+
+# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mkdir --version
+fi
+
+pwd=`pwd`
+tmp=`echo "$0"|sed 's,.*/,,'`.tmp
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+fail=0
+
+mkdir -p d1/. || fail=1
+test -d d1 || fail=1
+
+mkdir -p d2/.. || fail=1
+test -d d2 || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/mkdir/p-thru-slink b/tests/mkdir/p-thru-slink
new file mode 100755
index 0000000..f44be66
--- /dev/null
+++ b/tests/mkdir/p-thru-slink
@@ -0,0 +1,46 @@
+#!/bin/sh
+# Ensure that mkdir -p foo/bar works when foo is a symbolic link to a directory
+
+# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mkdir --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+ln -s . slink || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+mkdir -p slink/x || fail=1
+test -d x || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/mkdir/p-v b/tests/mkdir/p-v
new file mode 100755
index 0000000..2675423
--- /dev/null
+++ b/tests/mkdir/p-v
@@ -0,0 +1,56 @@
+#!/bin/sh
+# Test mkdir -pv.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mkdir --version
+fi
+
+# Make sure we get English translations.
+LANGUAGE=C
+export LANGUAGE
+LC_ALL=C
+export LC_ALL
+LANG=C
+export LANG
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+mkdir -pv foo/a/b/c/d 2>out || exit
+
+diff - out <<\EOF
+mkdir: created directory `foo'
+mkdir: created directory `foo/a'
+mkdir: created directory `foo/a/b'
+mkdir: created directory `foo/a/b/c'
+mkdir: created directory `foo/a/b/c/d'
+EOF
diff --git a/tests/mkdir/parents b/tests/mkdir/parents
new file mode 100755
index 0000000..f0ead6e
--- /dev/null
+++ b/tests/mkdir/parents
@@ -0,0 +1,76 @@
+#!/bin/sh
+# make sure mkdir's -p options works properly
+
+# Copyright (C) 2000, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mkdir --version
+fi
+
+pwd=`pwd`
+tmp=parents-$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+
+# Record absolute path of srcdir.
+cd $srcdir || framework_failure=1
+abs_srcdir=`pwd`
+
+cd "$pwd" || framework_failure=1
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -m 700 e-dir || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+. "$abs_srcdir/../setgid-check"
+
+fail=0
+
+# Make sure `mkdir -p existing-dir' succeeds
+# and that `mkdir existing-dir' fails.
+mkdir -p e-dir || fail=1
+mkdir e-dir > /dev/null 2>&1 && fail=1
+
+# Create an existing directory.
+umask 077
+mode_str=drwxr-x-wx
+mode_arg=`"$abs_srcdir/../rwx-to-mode" $mode_str`
+mkdir -m $mode_arg a || fail=1
+
+# this `mkdir -p ...' shouldn't change perms of existing dir `a'.
+d_mode_str=drwx-w--wx
+d_mode_arg=`"$abs_srcdir/../rwx-to-mode" $d_mode_str`
+mkdir -p -m $d_mode_arg a/b/c/d
+
+# Make sure the permissions of `a' haven't been changed.
+p=`ls -ld a|sed 's/ .*//'`; case $p in $mode_str);; *) fail=1;; esac
+# `b's and `c's should reflect the umask
+p=`ls -ld a/b|sed 's/ .*//'`; case $p in drwx------);; *) fail=1;; esac
+p=`ls -ld a/b/c|sed 's/ .*//'`; case $p in drwx------);; *) fail=1;; esac
+
+# `d's perms are determined by the -m argument.
+p=`ls -ld a/b/c/d|sed 's/ .*//'`; case $p in $d_mode_str);; *) fail=1;; esac
+
+(exit $fail); exit $fail
diff --git a/tests/mkdir/perm b/tests/mkdir/perm
new file mode 100755
index 0000000..3853f2a
--- /dev/null
+++ b/tests/mkdir/perm
@@ -0,0 +1,109 @@
+#!/bin/sh
+# Verify that mkdir's `-m MODE' option works properly
+# with various umask settings.
+
+# Copyright (C) 2000, 2002, 2003, 2004, 2005, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mkdir --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+
+# Record absolute path of srcdir and cd back to current dir.
+cd $srcdir || framework_failure=1
+abs_srcdir=`pwd`
+cd "$pwd" || framework_failure=1
+
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+. "$abs_srcdir/../setgid-check"
+. "$abs_srcdir/../umask-check"
+
+fail=0
+
+# parent parent/dir
+# umask -m option resulting perm resulting perm
+tests='
+ 000 : empty : drwxrwxrwx : drwxrwxrwx :
+ 000 : -m 016 : drwxrwxrwx : d-----xrw- :
+ 077 : empty : drwx------ : drwx------ :
+ 050 : empty : drwx-w-rwx : drwx-w-rwx :
+ 050 : -m 312 : drwx-w-rwx : d-wx--x-w- :
+ 160 : empty : drwx--xrwx : drw---xrwx :
+ 160 : -m 743 : drwx--xrwx : drwxr---wx :
+ 027 : -m =+x : drwxr-x--- : d--x--x--- :
+ 027 : -m =+X : drwxr-x--- : d--x--x--- :
+ - : - : last : last :
+ '
+colon_tests=`echo $tests | sed 's/^ *//; s/ *: */:/g'`
+
+for p in empty -p; do
+ test _$p = _empty && p=
+
+ old_IFS=$IFS
+ IFS=':'
+ set $colon_tests
+ IFS=$old_IFS
+
+ while :; do
+ test "$VERBOSE" = yes && set -x
+ umask=$1 mode=$2 parent_perms=$3 sub_perms=$4
+ test "_$mode" = _empty && mode=
+ test $sub_perms = last && break
+ # echo p=$p umask=$1 mode=$2 parent_perms=$3 sub_perms=$4
+ shift; shift; shift; shift
+ umask $umask
+
+ # If we're not using -p, then create the parent manually,
+ # and adjust expectations accordingly.
+ test x$p = x && \
+ {
+ mkdir -m =,u=rwx parent || fail=1
+ parent_perms=drwx------
+ }
+
+ mkdir $p $mode parent/sub || fail=1
+
+ perms=`ls -ld parent | sed 's/ .*//; s/+$//'`
+ test "$parent_perms" = "$perms" \
+ || { fail=1; echo parent: expected $parent_perms, got $perms; }
+
+ perms=`ls -ld parent/sub | sed 's/ .*//; s/+$//'`
+ test "$sub_perms" = "$perms" \
+ || { fail=1; echo parent/sub: expected $sub_perms, got $perms; }
+
+ chmod -R u+rwx parent
+ rm -rf parent || fail=1
+ done
+done
+
+(exit $fail); exit $fail
diff --git a/tests/mkdir/special-1 b/tests/mkdir/special-1
new file mode 100755
index 0000000..a5b6504
--- /dev/null
+++ b/tests/mkdir/special-1
@@ -0,0 +1,58 @@
+#!/bin/sh
+# verify that mkdir honors special bits in MODE
+
+# Copyright (C) 2000, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mkdir --version
+fi
+
+tmp=mkdir-sp-$$
+trap 'status=$?; rm -rf $tmp && exit $status' 0
+trap 'exit $?' 1 2 13 15
+
+set_mode_string=u=rwx,g=rx,o=w,-s,+t
+output_mode_string=drwxr-x-wT
+
+mkdir -m$set_mode_string $tmp || fail=1
+
+test -d $tmp || fail=1
+set -- `ls -ld $tmp`
+case "$1" in
+ $output_mode_string) ;;
+ *) fail=1 ;;
+esac
+
+rmdir $tmp || fail=1
+tmp2=$tmp/sub
+
+# This should fail.
+mkdir -m$set_mode_string $tmp2 2> /dev/null && fail=1
+
+# Now test the --parents option.
+mkdir --parents -m$set_mode_string $tmp2 || fail=1
+
+test -d $tmp2 || fail=1
+set -- `ls -ld $tmp2`
+case "$1" in
+ $output_mode_string) ;;
+ *) fail=1 ;;
+esac
+
+exit $fail
diff --git a/tests/mkdir/t-slash b/tests/mkdir/t-slash
new file mode 100755
index 0000000..e002ab2
--- /dev/null
+++ b/tests/mkdir/t-slash
@@ -0,0 +1,50 @@
+#!/bin/sh
+# Ensure that mkdir works with arguments specified with and without
+# a trailing slash.
+
+# Copyright (C) 2000, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mkdir --version
+fi
+
+pwd=`pwd`
+tmp=t-slash.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+fail=0
+
+mkdir -p dir/ || fail=1
+test -d dir || fail=1
+
+# This failed on NetBSD for fileutils-4.0.33.
+mkdir d2/ || fail=1
+test -d d2 || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/mv/Makefile.am b/tests/mv/Makefile.am
new file mode 100644
index 0000000..71c9119
--- /dev/null
+++ b/tests/mv/Makefile.am
@@ -0,0 +1,50 @@
+# Make coreutils tests for "mv". -*-Makefile-*-
+
+# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+TESTS = \
+ hard-verbose \
+ backup-dir \
+ dir2dir \
+ no-target-dir \
+ atomic \
+ acl \
+ reply-no \
+ leak-fd \
+ part-hardlink \
+ hard-4 \
+ hard-3 \
+ hard-2 \
+ perm-1 \
+ i-link-no \
+ part-fail \
+ dup-source childproof i-4 i-5 update i-2 mv-special-1 \
+ into-self into-self-2 into-self-3 into-self-4 \
+ backup-is-src \
+ i-1 hard-link-1 force partition-perm to-symlink dir-file diag \
+ part-symlink part-rename trailing-slash
+
+EXTRA_DIST = $(TESTS) vfat
+TESTS_ENVIRONMENT = \
+ PERL="$(PERL)" \
+ EGREP="$(EGREP)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ CONFIG_HEADER=$(CONFIG_HEADER) \
+ PROG=mv
diff --git a/tests/mv/Makefile.in b/tests/mv/Makefile.in
new file mode 100644
index 0000000..b86230a
--- /dev/null
+++ b/tests/mv/Makefile.in
@@ -0,0 +1,761 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils tests for "mv". -*-Makefile-*-
+
+# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/mv
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = \
+ hard-verbose \
+ backup-dir \
+ dir2dir \
+ no-target-dir \
+ atomic \
+ acl \
+ reply-no \
+ leak-fd \
+ part-hardlink \
+ hard-4 \
+ hard-3 \
+ hard-2 \
+ perm-1 \
+ i-link-no \
+ part-fail \
+ dup-source childproof i-4 i-5 update i-2 mv-special-1 \
+ into-self into-self-2 into-self-3 into-self-4 \
+ backup-is-src \
+ i-1 hard-link-1 force partition-perm to-symlink dir-file diag \
+ part-symlink part-rename trailing-slash
+
+EXTRA_DIST = $(TESTS) vfat
+TESTS_ENVIRONMENT = \
+ PERL="$(PERL)" \
+ EGREP="$(EGREP)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ CONFIG_HEADER=$(CONFIG_HEADER) \
+ PROG=mv
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/mv/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/mv/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/mv/acl b/tests/mv/acl
new file mode 100755
index 0000000..9128686
--- /dev/null
+++ b/tests/mv/acl
@@ -0,0 +1,105 @@
+#!/bin/sh
+# move files/directories across file system boundaries
+# and make sure acls are preserved
+
+# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+. $srcdir/../acl
+. $srcdir/../other-fs-tmpdir
+# Make sure we get English translations.
+. $srcdir/../lang-default
+
+# Skip this test if cp was built without ACL support:
+grep '^#define USE_ACL 0' $CONFIG_HEADER > /dev/null && \
+ {
+ echo 1>&2 "$0: insufficient ACL support, so skipping this test"
+ (exit 77); exit 77
+ }
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+ getfacl --version
+ setfacl --version
+fi
+
+if test -z "$other_partition_tmpdir"; then
+ (exit 77); exit 77
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+t0="$t0 $other_partition_tmpdir"
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+touch file || framework_failure=1
+t1=$other_partition_tmpdir/t1
+touch $t1 || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+skip=no
+# Ensure that setfacl and getfacl work on this file system.
+setfacl -m user:bin:rw file 2> /dev/null || skip=.
+# And on the destination file system.
+setfacl -m user:bin:rw $t1 || skip=$other_partition_tmpdir
+acl1=`getfacl file` || skip=yes
+
+test $skip != no &&
+ {
+ echo "$0: '$skip' is not on a suitable file system for this test" 1>&2
+ echo "$0: skipping this test" 1>&2
+ (exit 77); exit 77
+ }
+
+# move the access acl of a file
+mv file $other_partition_tmpdir || fail=1
+acl2=`cd $other_partition_tmpdir && getfacl file` || framework_failure=1
+test "$acl1" = "$acl2" || fail=1
+
+# move the access acl of a directory
+mkdir dir || framework_failure=1
+setfacl -m user:bin:rw dir || framework_failure=1
+acl1=`getfacl dir` || framework_failure=1
+mv dir $other_partition_tmpdir || fail=1
+acl2=`cd $other_partition_tmpdir && getfacl dir` || framework_failure=1
+test "$acl1" = "$acl2" || fail=1
+
+# move the default acl of a directory
+mkdir dir2 || framework_failure=1
+setfacl -d -m user:bin:rw dir2 || framework_failure=1
+acl1=`getfacl dir2` || framework_failure=1
+mv dir2 $other_partition_tmpdir || fail=1
+acl2=`cd $other_partition_tmpdir && getfacl dir2` || framework_failure=1
+test "$acl1" = "$acl2" || fail=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+exit $fail
diff --git a/tests/mv/atomic b/tests/mv/atomic
new file mode 100755
index 0000000..1fa0736
--- /dev/null
+++ b/tests/mv/atomic
@@ -0,0 +1,69 @@
+#!/bin/sh
+# ensure that mv doesn't first unlink its destination in one particular case
+
+# Copyright (C) 2006, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+# Before the fix, mv would unnecessarily unlink the destination symlink:
+# $ rm -rf s[12]; ln -s / s1; ln -s /tmp s2; strace -qe unlink /bin/mv -T s1 s2
+# unlink("s2") = 0
+#
+# With the fix, it doesn't call unlink:
+# $ rm -rf s[12]; ln -s / s1; ln -s /tmp s2; strace -qe unlink ./mv -T s1 s2
+# $
+
+ln -s t1 s1 || framework_failure=1
+ln -s t2 s2 || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+# Skip this test on systems without strace.
+strace -V < /dev/null > ver 2>&1 || skip=1
+if test "$skip" = 1; then
+ echo "$0: no strace program, so skipping this test" 1>&2
+ (exit 77); exit 77
+fi
+
+fail=0
+
+strace -qe unlink mv -T s1 s2 > out 2>&1 || fail=1
+$EGREP 'unlink.*"s1"' out && fail=1
+
+# Ensure that the source, s1, is gone.
+ls -dl s1 > /dev/null 2>&1 && fail=1
+
+# Ensure that the destination, s2, contains the link from s1.
+test "`readlink s2`" = t1 || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/mv/backup-dir b/tests/mv/backup-dir
new file mode 100755
index 0000000..72ffce1
--- /dev/null
+++ b/tests/mv/backup-dir
@@ -0,0 +1,57 @@
+#!/bin/sh
+# Ensure "mv --verbose --backup" works the same for dirs and non-dirs.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir A B || framework_failure=1
+touch X Y || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Before coreutils-6.2, the " (backup: `B.~1~')" suffix was not printed.
+mv --verbose --backup=numbered -T A B > out || fail=1
+cat <<\EOF > exp || fail=1
+`A' -> `B' (backup: `B.~1~')
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/mv/backup-is-src b/tests/mv/backup-is-src
new file mode 100755
index 0000000..8d5c69d
--- /dev/null
+++ b/tests/mv/backup-is-src
@@ -0,0 +1,66 @@
+#!/bin/sh
+# Force mv to use the copying code.
+
+# Copyright (C) 1998, 1999, 2000, 2004 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+. $srcdir/../other-fs-tmpdir
+. $srcdir/../envvar-check
+
+if test -z "$other_partition_tmpdir"; then
+ exit 77
+fi
+
+a="$other_partition_tmpdir/a"
+a2="$other_partition_tmpdir/a~"
+
+framework_failure=0
+rm -f $a $a2 || framework_failure=1
+echo a > $a || framework_failure=1
+echo a2 > $a2 || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+# Make sure we get English translations.
+. $srcdir/../lang-default
+
+# This mv command should exit nonzero.
+mv --b=simple $a2 $a > out 2>&1 && fail=1
+
+sed \
+ -e "s,mv:,XXX:," \
+ -e "s,$a,YYY," \
+ -e "s,$a2,ZZZ," \
+ out > out2
+
+cat > exp <<\EOF
+XXX: backing up `YYY' would destroy source; `ZZZ' not moved
+EOF
+
+cmp out2 exp || fail=1
+
+rm -fr out out2 exp $a $a2 $other_partition_tmpdir
+
+exit $fail
diff --git a/tests/mv/childproof b/tests/mv/childproof
new file mode 100755
index 0000000..41cdfce
--- /dev/null
+++ b/tests/mv/childproof
@@ -0,0 +1,92 @@
+#!/bin/sh
+# Ensure that cp/mv don't clobber a just-copied file.
+# With fileutils-4.1 and earlier, this test would fail.
+
+# Copyright (C) 2001, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+ mv --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+tmp=childproof.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir a b c || framework_failure=1
+echo a > a/f || framework_failure=1
+echo b > b/f || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+cp a/f b/f c 2> /dev/null && fail=1
+test -f a/f || fail=1
+test -f b/f || fail=1
+test -f c/f || fail=1
+test "`cat c/f`" = a || fail=1
+rm -f c/f
+
+# With --backup=numbered, it should succeed
+cp --backup=numbered a/f b/f c || fail=1
+test -f a/f || fail=1
+test -f b/f || fail=1
+test -f c/f || fail=1
+test -f c/f.~1~ || fail=1
+rm -f c/f*
+
+mv a/f b/f c 2> /dev/null && fail=1
+test -f a/f && fail=1
+test -f b/f || fail=1
+test -f c/f || fail=1
+test "`cat c/f`" = a || fail=1
+
+# Make sure mv still works when moving hard links.
+# This is where the same_file test is necessary, and why
+# we save file names in addition to dev/ino.
+rm -f c/f* b/f
+touch a/f
+ln a/f b/g
+mv a/f b/g c || fail=1
+test -f a/f && fail=1
+test -f b/g && fail=1
+test -f c/f || fail=1
+test -f c/g || fail=1
+
+touch a/f b/f b/g
+mv a/f b/f b/g c 2> /dev/null && fail=1
+test -f a/f && fail=1 # a/f should have been moved
+test -f b/f || fail=1 # b/f should remain
+test -f b/g && fail=1 # b/g should have been moved
+test -f c/f || fail=1
+test -f c/g || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/mv/diag b/tests/mv/diag
new file mode 100755
index 0000000..63eb3c6
--- /dev/null
+++ b/tests/mv/diag
@@ -0,0 +1,70 @@
+#!/bin/sh
+# make sure we get proper diagnostics: e.g., with --target-dir=d but no args
+
+# Copyright (C) 2000, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+# Make sure we get English translations.
+. $srcdir/../lang-default
+
+pwd=`pwd`
+tmp=diag-$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap 'exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+touch f1 || framework_failure=1
+touch f2 || framework_failure=1
+touch d || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+# These mv commands should all exit nonzero.
+
+# Too few args. This first one did fail, but with an incorrect diagnostic
+# until fileutils-4.0u.
+mv --target=. >> out 2>&1 && fail=1
+mv no-file >> out 2>&1 && fail=1
+
+# Target is not a directory.
+mv f1 f2 f1 >> out 2>&1 && fail=1
+mv --target=f2 f1 >> out 2>&1 && fail=1
+
+cat > exp <<\EOF
+mv: missing file operand
+Try `mv --help' for more information.
+mv: missing destination file operand after `no-file'
+Try `mv --help' for more information.
+mv: target `f1' is not a directory
+mv: target `f2' is not a directory
+EOF
+
+cmp out exp || fail=1
+
+(exit $fail)
+exit $fail
diff --git a/tests/mv/dir-file b/tests/mv/dir-file
new file mode 100755
index 0000000..9c540b2
--- /dev/null
+++ b/tests/mv/dir-file
@@ -0,0 +1,47 @@
+#!/bin/sh
+# mv must fail when src and dest are mismatched directory/non-directory.
+
+# Copyright (C) 2000, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+tmp=mv-mismatch-$$
+pwd=`pwd`
+trap 'cd "$pwd" && rm -rf $tmp' 0 1 2 3 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp
+mkdir -p dir/file || framework_failure=1
+> file || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+
+# These should both fail, but until fileutils-4.0q only the second one did.
+mv dir file > /dev/null 2>&1 && fail=1
+mv file dir > /dev/null 2>&1 && fail=1
+
+exit $fail
diff --git a/tests/mv/dir2dir b/tests/mv/dir2dir
new file mode 100755
index 0000000..11ae26e
--- /dev/null
+++ b/tests/mv/dir2dir
@@ -0,0 +1,66 @@
+#!/bin/sh
+# Ensure that mv prints the right diagnostic for a dir->dir move
+# where the destination directory is not empty.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir -p a/t b/t || framework_failure=1
+touch a/t/f || framework_failure=1
+
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Expect this to fail with the expected diagnostic.
+# For an interrim (pre-6.0) release, it would give an erroneous
+# diagnostic about moving one directory to a subdirectory of itself.
+mv b/t a 2> out && fail=1
+
+# Accept any of these: EEXIST, ENOTEMPTY, EBUSY.
+sed 's/: File exists/: Directory not empty/'<out>o1;mv o1 out
+sed 's/: Device or resource busy/: Directory not empty/'<out>o1;mv o1 out
+
+cat <<\EOF > exp || fail=1
+mv: cannot move `b/t' to `a/t': Directory not empty
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/mv/dup-source b/tests/mv/dup-source
new file mode 100755
index 0000000..7965c91
--- /dev/null
+++ b/tests/mv/dup-source
@@ -0,0 +1,90 @@
+#!/bin/sh
+# Ensure that cp merely warns when a non-directory source file is
+# listed on the command line more than once. fileutils-4.1.1
+# made this fail: cp a a d/
+# Ensure that mv fails with a similar command.
+
+# Copyright (C) 2001, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+ mv --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+tmp=dup-src.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+for i in cp; do
+
+ # cp may not fail in this case.
+
+ rm -fr a d; touch a; mkdir d
+ $i a a d/ 2> out || fail=1
+ rm -fr a d; touch a; mkdir d
+ $i ./a a d/ 2>> out || fail=1
+
+ # cp succeeds with --backup=numbered.
+ rm -fr a d; touch a; mkdir d
+ $i --backup=numbered a a d/ 2>> out || fail=1
+
+ # But not with plain `--backup'
+ rm -fr a d; touch a; mkdir d
+ $i --backup a a d/ 2>> out && fail=1
+ cat <<EOF > exp
+$i: warning: source file \`a' specified more than once
+$i: warning: source file \`a' specified more than once
+$i: will not overwrite just-created \`d/a' with \`a'
+EOF
+ cmp out exp || fail=1
+ test $fail = 1 && diff out exp 2> /dev/null
+done
+
+for i in mv; do
+ # But mv *does* fail in this case (it has to).
+
+ rm -fr a d; touch a; mkdir d
+ $i a a d/ 2> out && fail=1
+ rm -fr a d; touch a; mkdir d
+ $i ./a a d/ 2>> out && fail=1
+ cat <<EOF > exp
+$i: cannot stat \`a': No such file or directory
+$i: cannot stat \`a': No such file or directory
+EOF
+ cmp out exp || fail=1
+ test $fail = 1 && diff out exp 2> /dev/null
+done
+
+(exit $fail); exit $fail
diff --git a/tests/mv/force b/tests/mv/force
new file mode 100755
index 0000000..3836ec0
--- /dev/null
+++ b/tests/mv/force
@@ -0,0 +1,58 @@
+#!/bin/sh
+# move a file onto itself
+
+# Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+ff=mvforce
+ff2=mvforce2
+
+framework_failure=0
+rm -f $ff $ff2 || framework_failure=1
+echo force-contents > $ff || framework_failure=1
+ln $ff $ff2 || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+# Make sure we get English translations.
+. $srcdir/../lang-default
+
+# This mv command should exit nonzero.
+mv $ff $ff > out 2>&1 && fail=1
+
+cat > exp <<EOF
+mv: \`$ff' and \`$ff' are the same file
+EOF
+
+cmp out exp || fail=1
+test `cat $ff` = force-contents || fail=1
+
+# This should succeed, even though the source and destination
+# device and inodes are the same.
+mv $ff $ff2 || fail=1
+
+rm -fr out exp $ff $ff2
+
+exit $fail
diff --git a/tests/mv/hard-2 b/tests/mv/hard-2
new file mode 100755
index 0000000..101f334
--- /dev/null
+++ b/tests/mv/hard-2
@@ -0,0 +1,97 @@
+#!/bin/sh
+# Ensure that moving hard-linked arguments onto existing destinations works.
+# Likewise when using cp --preserve=link.
+
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+ cp --version
+fi
+
+. $srcdir/../envvar-check
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir dst || framework_failure=1
+(cd dst && touch a b c) || framework_failure=1
+touch a || framework_failure=1
+ln a b || framework_failure=1
+ln a c || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# ======================================
+cp --preserve=link a b c dst || fail=1
+# The source files must remain.
+test -f a || fail=1
+test -f b || fail=1
+test -f c || fail=1
+cd dst
+
+# Three destination files must exist.
+test -f a || fail=1
+test -f b || fail=1
+test -f c || fail=1
+
+# The three i-node numbers must be the same.
+ia=`ls -i a|sed 's/ a//'`
+ib=`ls -i b|sed 's/ b//'`
+ic=`ls -i c|sed 's/ c//'`
+test $ia = $ib || fail=1
+test $ia = $ic || fail=1
+
+cd ..
+rm -f dst/[abc]
+(cd dst && touch a b c)
+
+# ======================================
+mv a b c dst || fail=1
+
+# The source files must be gone.
+test -f a && fail=1
+test -f b && fail=1
+test -f c && fail=1
+cd dst
+
+# Three destination files must exist.
+test -f a || fail=1
+test -f b || fail=1
+test -f c || fail=1
+
+# The three i-node numbers must be the same.
+ia=`ls -i a|sed 's/ a//'`
+ib=`ls -i b|sed 's/ b//'`
+ic=`ls -i c|sed 's/ c//'`
+test $ia = $ib || fail=1
+test $ia = $ic || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/mv/hard-3 b/tests/mv/hard-3
new file mode 100755
index 0000000..ce83728
--- /dev/null
+++ b/tests/mv/hard-3
@@ -0,0 +1,89 @@
+#!/bin/sh
+# Ensure that using `cp --preserve=link' to copy hard-linked arguments
+# onto existing destinations works, even when one of the link operations fails.
+
+# Copyright (C) 2003, 2006, 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+
+# This bug was fixed in coreutils-4.5.9.
+# To exercise this bug is non-trivial:
+# Set-up requires at least three hard-linked files. In copying them,
+# while preserving links, the initial copy must succeed, the attempt
+# to create the second file via `link' must fail, and the final `link'
+# (to create the third) must succeed. Before the corresponding fix,
+# the first and third destination files would not be linked.
+#
+# Note that this is nominally a test of `cp', yet it is in the tests/mv
+# directory, because it requires use of the --preserve=link option that
+# mv enables by default.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+fi
+
+. $srcdir/../envvar-check
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p x dst/x || framework_failure=1
+touch dst/x/b || framework_failure=1
+chmod a-w dst/x
+touch a || framework_failure=1
+ln a x/b || framework_failure=1
+ln a c || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# ======================================
+# This must fail -- because x/b cannot be unlinked.
+cp --preserve=link --parents a x/b c dst 2> /dev/null && fail=1
+
+# Source files must remain.
+test -f a || fail=1
+test -f x/b || fail=1
+test -f c || fail=1
+cd dst
+
+# Three destination files must exist.
+test -f a || fail=1
+test -f x/b || fail=1
+test -f c || fail=1
+
+# The i-node numbers of a and c must be the same.
+ia=`ls -i a` || fail=1; set x $ia; ia=$2
+ic=`ls -i c` || fail=1; set x $ic; ic=$2
+test "$ia" = "$ic" || fail=1
+
+# The i-node number of x/b must be different.
+ib=`ls -i x/b` || fail=1; set x $ib; ib=$2
+test "$ia" = "$ib" && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/mv/hard-4 b/tests/mv/hard-4
new file mode 100755
index 0000000..118479a
--- /dev/null
+++ b/tests/mv/hard-4
@@ -0,0 +1,59 @@
+#!/bin/sh
+# ensure that mv removes a in this case: touch a; ln a b; mv a b
+
+# Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+touch a || framework_failure=1
+ln a b || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+mv a b || fail=1
+
+# In coreutils-5.0 and earlier, a would not be removed.
+test -r a && fail=1
+test -r b || fail=1
+
+# Make sure it works also with --backup.
+ln b a
+mv --backup=simple a b || fail=1
+test -r a && fail=1
+test -r b || fail=1
+test -r b~ || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/mv/hard-link-1 b/tests/mv/hard-link-1
new file mode 100755
index 0000000..7ce9176
--- /dev/null
+++ b/tests/mv/hard-link-1
@@ -0,0 +1,68 @@
+#!/bin/sh
+# move a directory containing hard-linked files and
+# make sure the links are preserved
+
+# Copyright (C) 1998, 1999, 2000, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+. $srcdir/../other-fs-tmpdir
+# Make sure we get English translations.
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test -z "$other_partition_tmpdir"; then
+ (exit 77); exit 77
+fi
+
+dir=hlink
+
+framework_failure=0
+mkdir $dir || framework_failure=1
+> $dir/a || framework_failure=1
+ln $dir/a $dir/b || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+mv $dir $other_partition_tmpdir || fail=1
+
+# Display inode numbers, one per line.
+ls -1i $other_partition_tmpdir/$dir > out || fail=1
+
+# Make sure the inode numbers are the same.
+a=`sed -n 's/ a$//p' out`
+b=`sed -n 's/ b$//p' out`
+test "$a" = "$b" || fail=1
+
+rm -fr out $dir $other_partition_tmpdir
+
+exit $fail
diff --git a/tests/mv/hard-verbose b/tests/mv/hard-verbose
new file mode 100755
index 0000000..9c02ac1
--- /dev/null
+++ b/tests/mv/hard-verbose
@@ -0,0 +1,56 @@
+#!/bin/sh
+# ensure that mv's --verbose options works even in this unusual case
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+touch x || framework_failure=1
+ln x y || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+mv --verbose x y > out || fail=1
+cat <<\EOF > exp || fail=1
+removed `x'
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/mv/i-1 b/tests/mv/i-1
new file mode 100755
index 0000000..3ab73c0
--- /dev/null
+++ b/tests/mv/i-1
@@ -0,0 +1,58 @@
+#!/bin/sh
+# Make sure a `n' reply to `mv -i...' aborts the move operation.
+
+# Copyright (C) 2001, 2003, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my $test_a = 'a';
+
+my @Tests =
+ (
+ # Make sure a `n' reply to `mv -i...' aborts the move operation.
+ [$test_a, '-i',
+ {IN => {src => "a\n"}}, {IN => {dst => "b\n"}}, '<', {IN => "n\n"},
+ {ERR => "mv: overwrite `dst'? "},
+ {POST => sub { -r 'src' or die "test $test_a failed\n"}},
+ {EXIT => 0},
+ ],
+ );
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/mv/i-2 b/tests/mv/i-2
new file mode 100755
index 0000000..36d1ce4
--- /dev/null
+++ b/tests/mv/i-2
@@ -0,0 +1,77 @@
+#!/bin/sh
+# Test both cp and mv for their behavior with -if and -fi
+# The standards (POSIX and SuS) dictate annoyingly inconsistent behavior.
+
+# Copyright (C) 2000, 2001, 2006, 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+ cp --version
+fi
+
+. $srcdir/../envvar-check
+
+# Make sure we get English translations.
+. $srcdir/../lang-default
+
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+tmp=cp-mv-if-$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap 'exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+for i in a b c d e f g h; do
+ echo $i > $i || framework_failure=1
+done
+chmod 0 b d f h || framework_failure=1
+echo y > y || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+mv -if a b || fail=1
+mv -fi c d < y >/dev/null 2>&1 || fail=1
+
+# Before 4.0s, this would not prompt.
+cp -if e f < y > out 2>&1 || fail=1
+
+# Make sure out contains the prompt.
+case "`cat out`" in
+ "cp: try to overwrite \`f', overriding mode 0000 (---------)?"*) ;;
+ *) fail=1 ;;
+esac
+
+test -f e || fail=1
+test -f f || fail=1
+cmp e f || fail=1
+
+cp -fi g h < y > out 2>&1 || fail=1
+test -f g || fail=1
+test -f h || fail=1
+cmp g h || fail=1
+
+exit $fail
diff --git a/tests/mv/i-4 b/tests/mv/i-4
new file mode 100755
index 0000000..594c155
--- /dev/null
+++ b/tests/mv/i-4
@@ -0,0 +1,72 @@
+#!/bin/sh
+# make sure `mv -i a b' does its job with a positive response
+
+# Copyright (C) 2001, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+tmp=mv-i4-$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap 'exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+
+for i in a b; do
+ echo $i > $i || framework_failure=1
+done
+echo y > y || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+mv -i a b < y >/dev/null 2>&1 || fail=1
+
+# Make sure out contains the prompt.
+case "`cat b`" in
+ a) ;;
+ *) fail=1 ;;
+esac
+
+# Ensure that mv -i a b works properly with `n' and `y'
+# responses, even when a and b are hard links to the same file.
+# This `n' test would fail (no prompt) for coreutils-5.0.1 through 5.3.0.
+echo n > n
+rm -f a b
+echo a > a
+ln a b
+mv -i a b < n >/dev/null 2>&1 || fail=1
+test -r a || fail=1
+test -r b || fail=1
+mv -i a b < y >/dev/null 2>&1 || fail=1
+test -r a && fail=1
+test -r b || fail=1
+
+exit $fail
diff --git a/tests/mv/i-5 b/tests/mv/i-5
new file mode 100755
index 0000000..2fec7ed
--- /dev/null
+++ b/tests/mv/i-5
@@ -0,0 +1,51 @@
+#!/bin/sh
+# Make sure `mv -i dir file' prompts before failing.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir a || framework_failure=1
+touch b || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+
+# coreutils 6.2 mv would neglect to prompt in this case.
+echo n | mv -i a b 2>/dev/null || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/mv/i-link-no b/tests/mv/i-link-no
new file mode 100755
index 0000000..2931af6
--- /dev/null
+++ b/tests/mv/i-link-no
@@ -0,0 +1,70 @@
+#!/bin/sh
+# Show that mv doesn't preserve links to files the user has declined to move.
+
+# Copyright (C) 2002, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+tmp=i-link-no.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir a b || framework_failure=1
+echo foo > a/foo || framework_failure=1
+ln a/foo a/bar || framework_failure=1
+echo FUBAR > b/FUBAR || framework_failure=1
+ln b/FUBAR b/bar || framework_failure=1
+chmod a-w b/bar || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+mv --reply=no a/bar a/foo b > out 2> err || fail=1
+cat <<EOF > exp
+EOF
+
+cat <<EOF > exp_err
+mv: the --reply option is deprecated; use -i or -f instead
+EOF
+
+cmp err exp_err || fail=1
+test $fail = 1 && diff err exp_err 2> /dev/null
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+case "`cat b/foo`" in
+ foo) ;;
+ *) fail=1;;
+esac
+
+(exit $fail); exit $fail
diff --git a/tests/mv/into-self b/tests/mv/into-self
new file mode 100755
index 0000000..69f0e5d
--- /dev/null
+++ b/tests/mv/into-self
@@ -0,0 +1,69 @@
+#! /bin/sh
+# Demonstrate how mv fails when it tries to move a directory into itself.
+
+# Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+dir=toself-dir
+file=toself-file
+
+test_failure=0
+
+rm -rf $dir $file || test_failure=1
+mkdir -p $dir/a/b || test_failure=1
+touch $file || test_failure=1
+
+if test $test_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+
+# Make sure we get English translations.
+. $srcdir/../lang-default
+
+# This mv command should fail.
+mv $dir $file $dir > out 2>&1 && fail=1
+
+sed \
+ -e "s,mv:,XXX:," \
+ -e "s,$dir,SRC," \
+ -e "s,$dir/$dir,DEST," \
+ out > out2
+
+cat > exp <<\EOF
+XXX: cannot move `SRC' to a subdirectory of itself, `DEST'
+EOF
+
+cmp out2 exp || fail=1
+
+# Make sure the file is gone.
+test -f $file && fail=1
+# Make sure the directory is *not* moved.
+test -d $dir || fail=1
+test -d $dir/$dir && fail=1
+# Make sure the file has been moved to the right place.
+test -f $dir/$file || fail=1
+rm -rf $dir $file out out2 exp
+
+exit $fail
diff --git a/tests/mv/into-self-2 b/tests/mv/into-self-2
new file mode 100755
index 0000000..11fddf2
--- /dev/null
+++ b/tests/mv/into-self-2
@@ -0,0 +1,76 @@
+#!/bin/sh
+# Force mv to use the copying code.
+# Consider the case where SRC and DEST are on different
+# partitions and DEST is a symlink to SRC.
+
+# Copyright (C) 1998, 1999, 200 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+. $srcdir/../other-fs-tmpdir
+. $srcdir/../envvar-check
+
+if test -z "$other_partition_tmpdir"; then
+ exit 77
+fi
+
+file="$other_partition_tmpdir/file"
+symlink=symlink
+
+fail=0
+
+trap 'rm -fr out out2 exp $file $symlink $other_partition_tmpdir; exit $fail' \
+ 0 1 2 3 15
+
+framework_failure=0
+rm -f $file $symlink || framework_failure=1
+echo whatever > $file || framework_failure=1
+ln -s $file $symlink || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+# Make sure we get English translations.
+. $srcdir/../lang-default
+
+# This mv command should exit nonzero.
+mv $symlink $file > out 2>&1 && fail=1
+
+# This should succeed.
+mv $file $symlink || fail=1
+
+sed \
+ -e "s,mv:,XXX:," \
+ -e "s,$file,YYY," \
+ -e "s,$symlink,ZZZ," \
+ out > out2
+
+cat > exp <<\EOF
+XXX: `ZZZ' and `YYY' are the same file
+EOF
+#'
+
+cmp out2 exp || fail=1
+test $fail = 1 && diff out2 exp 2> /dev/null
+
+exit $fail
diff --git a/tests/mv/into-self-3 b/tests/mv/into-self-3
new file mode 100755
index 0000000..6b08d31
--- /dev/null
+++ b/tests/mv/into-self-3
@@ -0,0 +1,57 @@
+#!/bin/sh
+# move a directory into itself, with a twist
+
+# Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+dir1=is3-dir1
+dir2=is3-dir2
+
+framework_failure=0
+rm -rf $dir1 $dir2 || framework_failure=1
+mkdir $dir1 $dir2 || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+# Make sure we get English translations.
+. $srcdir/../lang-default
+
+# This mv command should exit nonzero.
+mv $dir1 $dir2 $dir2 > out 2>&1 && fail=1
+
+sed \
+ -e "s,mv:,XXX:,g" \
+ -e "s,$dir2,ZZZ,g" \
+ out > out2
+
+cat > exp <<\EOF
+XXX: cannot move `ZZZ' to a subdirectory of itself, `ZZZ/ZZZ'
+EOF
+
+cmp out2 exp || fail=1
+
+rm -fr out out2 exp $dir1 $dir2
+
+exit $fail
diff --git a/tests/mv/into-self-4 b/tests/mv/into-self-4
new file mode 100755
index 0000000..13357b7
--- /dev/null
+++ b/tests/mv/into-self-4
@@ -0,0 +1,54 @@
+#!/bin/sh
+# confirm that `mv symlink symlink' doesn't remove symlink
+# Based on an example from David Luyer.
+
+# Copyright (C) 2001, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+tmp=mv-slink2.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+touch file || framework_failure=1
+ln -s file s || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# This must fail.
+mv s s 2> /dev/null && fail=1
+
+# But the symlink, s, must not be removed.
+# Before 4.0.36, `s' would have been removed.
+test -f s || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/mv/leak-fd b/tests/mv/leak-fd
new file mode 100755
index 0000000..1592e0c
--- /dev/null
+++ b/tests/mv/leak-fd
@@ -0,0 +1,81 @@
+#!/bin/sh
+# Exercise mv's file-descriptor-leak bug, reported against coreutils-5.2.1
+# and fixed (properly) on 2004-10-21.
+
+# Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+
+# This test is relatively expensive, and might well evoke a
+# framework-failure on systems with a smaller command-line length
+# limit so don't run it by default.
+. $srcdir/../expensive
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+. $srcdir/../other-fs-tmpdir
+. $srcdir/../envvar-check
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+if test -z "$other_partition_tmpdir"; then
+ (exit 77); exit 77
+fi
+t0="$t0 $other_partition_tmpdir"
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+b="0 1 2 3 4 5 6 7 8 9
+a b c d e f g h i j k l m n o p q r s t u v w x y z
+_A _B _C _D _E _F _G _H _I _J _K _L _M _N _O _P _Q _R _S _T _U _V _W _X _Y _Z"
+
+for i in `echo $b`; do
+ echo $i
+ for j in $b; do
+ echo $i$j
+ done
+done > .dirs
+mkdir `cat .dirs` || framework_failure=1
+sed 's,$,/f,' .dirs | xargs touch
+
+last_file=`tail -n1 .dirs`/f
+test -f $last_file || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+mv * $other_partition_tmpdir || fail=1
+test -f $last_file/f && fail=1
+rm .dirs
+
+ls -A > ../out || fail=1
+test -s ../out && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/mv/mv-special-1 b/tests/mv/mv-special-1
new file mode 100755
index 0000000..4d7c697
--- /dev/null
+++ b/tests/mv/mv-special-1
@@ -0,0 +1,97 @@
+#! /bin/sh
+# Test "mv" with special files.
+
+# Copyright (C) 1998, 1999, 2000, 2002, 2004, 2005, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+pwd=`pwd`
+tmp=mv-spec.$$
+trap 'status=$?; cd "$pwd" && exec 1>&2; rm -rf $tmp $other_partition_tmpdir && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+. $srcdir/../other-fs-tmpdir
+. $srcdir/../envvar-check
+# Make sure we get English translations.
+. $srcdir/../lang-default
+
+if test -z "$other_partition_tmpdir"; then
+ (exit 77); exit 77
+fi
+
+null=mv-null
+dir=mv-dir
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+rm -f $null || framework_failure=1
+mknod $null p || framework_failure=1
+test -p $null || framework_failure=1
+mkdir -p $dir/a/b/c $dir/d/e/f || framework_failure=1
+touch $dir/a/b/c/file1 $dir/d/e/f/file2 || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo '********************************************'
+ echo 'NOTICE: unable to create test prerequisites'
+ echo '********************************************'
+ # exit 77 here to indicate that we couldn't run the test.
+ # At least running on SunOS 4.1.4, using a directory NFS mounted
+ # from an OpenBSD system, the above mknod fails.
+ (exit 77); exit 77
+fi
+
+fail=0
+mv --verbose $null $dir $other_partition_tmpdir > out || fail=1
+# Make sure the files are gone.
+test -p $null && fail=1
+test -d $dir && fail=1
+# Make sure they were moved.
+test -p $other_partition_tmpdir/$null || fail=1
+test -d $other_partition_tmpdir/$dir/a/b/c || fail=1
+
+# POSIX says rename (A, B) can succeed if A and B are on different file systems,
+# so ignore chatter about when files are removed and copied rather than renamed.
+sed "
+ /^removed /d
+ s,$other_partition_tmpdir,XXX,
+" out | sort > out2
+
+cat <<EOF | sort > exp
+\`$null' -> \`XXX/$null'
+\`$dir' -> \`XXX/$dir'
+\`$dir/a' -> \`XXX/$dir/a'
+\`$dir/a/b' -> \`XXX/$dir/a/b'
+\`$dir/a/b/c' -> \`XXX/$dir/a/b/c'
+\`$dir/a/b/c/file1' -> \`XXX/$dir/a/b/c/file1'
+\`$dir/d' -> \`XXX/$dir/d'
+\`$dir/d/e' -> \`XXX/$dir/d/e'
+\`$dir/d/e/f' -> \`XXX/$dir/d/e/f'
+\`$dir/d/e/f/file2' -> \`XXX/$dir/d/e/f/file2'
+EOF
+
+cmp out2 exp || fail=1
+
+# cd $other_partition_tmpdir
+# ls -l -A -R $other_partition_tmpdir
+
+(exit $fail); exit $fail
diff --git a/tests/mv/no-target-dir b/tests/mv/no-target-dir
new file mode 100755
index 0000000..db7fe94
--- /dev/null
+++ b/tests/mv/no-target-dir
@@ -0,0 +1,70 @@
+#!/bin/sh
+# ensure that --no-target-directory (-T) works when the destination is
+# an empty directory.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p d/sub empty src d2/sub e2 || framework_failure=1
+touch f || framework_failure=1
+
+# Skip this test if there's an underlying kernel bug.
+mkdir a b b/a || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+mv a b || {
+ echo "$0: skipping this test: your kernel's rename syscall is buggy" 1>&2
+ (exit 77); exit 77
+}
+
+fail=0
+
+# This should succeed, since both src and dest are directories,
+# and the dest dir is empty.
+mv -fT d empty || fail=1
+
+# Ensure that the source, d, is gone.
+ls -d d > /dev/null 2>&1 && fail=1
+
+# Ensure that the dest dir now has a subdirectory.
+test -d empty/sub || fail=1
+
+
+# rename must fail, since the dest is non-empty.
+mv -fT src d2 2> /dev/null && fail=1
+
+# rename must fail, since the src is not a directory.
+mv -fT f e2 2> /dev/null && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/mv/part-fail b/tests/mv/part-fail
new file mode 100755
index 0000000..e4c5dc9
--- /dev/null
+++ b/tests/mv/part-fail
@@ -0,0 +1,79 @@
+#!/bin/sh
+# Make sure we give a sensible diagnostic when a cross-device `mv'
+# fails, e.g., because the destination cannot be unlinked.
+# This is a bit fragile since it relies on the string used
+# for EPERM: `permission denied'.
+
+# Copyright (C) 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+. $srcdir/../other-fs-tmpdir
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+if test -z "$other_partition_tmpdir"; then
+ (exit 77); exit 77
+fi
+t0="$t0 $other_partition_tmpdir"
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+touch k $other_partition_tmpdir/k || framework_failure=1
+chmod u-w $other_partition_tmpdir || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+mv -f k $other_partition_tmpdir 2> out && fail=1
+cat <<EOF > exp
+mv: inter-device move failed: \`k' to \`$other_partition_tmpdir/k'; unable to remove target: Permission denied
+EOF
+
+# On some (less-compliant) systems, we get EPERM in this case.
+# Accept either diagnostic.
+cat <<EOF > exp2
+mv: cannot move \`k' to \`$other_partition_tmpdir/k': Permission denied
+EOF
+
+if cmp out exp >/dev/null 2>&1; then
+ :
+else
+ if cmp out exp2; then
+ :
+ else
+ fail=1
+ fi
+fi
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/mv/part-hardlink b/tests/mv/part-hardlink
new file mode 100755
index 0000000..66cfe0d
--- /dev/null
+++ b/tests/mv/part-hardlink
@@ -0,0 +1,67 @@
+#!/bin/sh
+# Ensure that hard links are preserved when moving between partitions
+# and when the links are in separate command line arguments.
+# For additional constraints, see the comment in copy.c.
+# Before coreutils-5.2.1, this test would fail.
+
+# Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+. $srcdir/../other-fs-tmpdir
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+if test -z "$other_partition_tmpdir"; then
+ (exit 77); exit 77
+fi
+t0="$t0 $other_partition_tmpdir"
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+touch f || framework_failure=1
+ln f g || framework_failure=1
+mkdir a b || framework_failure=1
+touch a/1 || framework_failure=1
+ln a/1 b/1 || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+mv f g $other_partition_tmpdir || fail=1
+mv a b $other_partition_tmpdir || fail=1
+
+cd $other_partition_tmpdir
+set `ls -Ci f g`
+test $1 = $3 || fail=1
+set `ls -Ci a/1 b/1`
+test $1 = $3 || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/mv/part-rename b/tests/mv/part-rename
new file mode 100755
index 0000000..b8c03e0
--- /dev/null
+++ b/tests/mv/part-rename
@@ -0,0 +1,55 @@
+#!/bin/sh
+# Moving a directory specified with a trailing slash from one partition to
+# another, and giving it a different name at the destination would cause mv
+# to get a failed assertion.
+
+# Copyright (C) 2000, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+. $srcdir/../other-fs-tmpdir
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+if test -z "$other_partition_tmpdir"; then
+ (exit 77); exit 77
+fi
+t0="$t0 $other_partition_tmpdir"
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir foo || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+mv foo/ $other_partition_tmpdir/bar || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/mv/part-symlink b/tests/mv/part-symlink
new file mode 100755
index 0000000..5cd198c
--- /dev/null
+++ b/tests/mv/part-symlink
@@ -0,0 +1,229 @@
+#!/bin/sh
+# make sure cp and mv can handle many combinations of local and
+# other-partition regular/symlink'd files.
+
+# Copyright (C) 2000, 2003, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+ cp --version
+fi
+
+pwd=`pwd`
+tmp=part-sl.$$
+trap 'status=$?; cd "$pwd" && exec 1>&2; rm -rf $tmp $other_partition_tmpdir && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+pwd_tmp=$pwd/$tmp
+
+. $srcdir/../other-fs-tmpdir
+. $srcdir/../envvar-check
+# Make sure the programs use C-locale formats/translations.
+. $srcdir/../lang-default
+
+# Unset CDPATH. Otherwise, output from the `cd dir' command
+# can make this test fail.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$other_partition_tmpdir"; then
+ (exit 77); exit 77
+fi
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+
+# Four cases:
+# local regular file w/symlink on another partition
+# (loc_reg, rem_sl)
+# (rem_sl, loc_reg)
+# local symlink to regular file on another partition
+# (loc_sl, rem_reg)
+# (rem_reg, loc_sl)
+
+# Exercise those four cases for each of
+# cp and mv, with lots of combinations of options.
+
+actual=actual-$$
+expected=expected-$$
+
+exec 1> $actual
+
+# FIXME: This should be bigger: like more than 8k
+contents=XYZ
+
+loc_reg=loc_reg
+loc_sl=loc_sl
+rem_reg=$other_partition_tmpdir/rem_reg
+rem_sl=$other_partition_tmpdir/rem_sl
+
+for copy in cp mv; do
+ for args in \
+ 'loc_reg rem_sl' \
+ 'rem_sl loc_reg' \
+ 'loc_sl rem_reg' \
+ 'rem_reg loc_sl' \
+ ; do
+ for options in '' --rem '--rem -d' '--rem -b' -b -bd -d; do
+ case "$options" in *d*|*--rem*) test $copy = mv && continue;; esac
+ rm -rf dir || fail=1
+ rm -f $other_partition_tmpdir/* || fail=1
+ mkdir dir || fail=1
+ cd dir || fail=1
+ case "$args" in *loc_reg*) reg_abs="`pwd`/$loc_reg" ;; esac
+ case "$args" in *rem_reg*) reg_abs=$rem_reg ;; esac
+ case "$args" in *loc_sl*) slink=$loc_sl ;; esac
+ case "$args" in *rem_sl*) slink=$rem_sl ;; esac
+
+ echo $contents > "$reg_abs" || fail=1
+ ln -nsf "$reg_abs" $slink || fail=1
+ actual_args=`echo $args|sed 's,^,$,;s/ / $/'`
+ actual_args=`eval echo $actual_args`
+
+ (
+ (
+ # echo 1>&2 cp $options $args
+ $copy $options $actual_args 2>.err
+ copy_status=$?
+ echo $copy_status $copy $options $args
+
+ # Normalize the program name in the error output,
+ # remove any site-dependent part of other-partition file name,
+ # and put brackets around the output.
+ test -s .err && {
+ echo '[' | tr -d '\n'
+ sed 's/^[^:][^:]*\(..\):/\1:/;s,'$other_partition_tmpdir/,, .err
+ echo ']' | tr -d '\n'
+ }
+ # Strip off all but the file names.
+ # Remove any site-dependent part of each file name.
+ ls="`ls -gG --ignore=.err . \
+ | sed \
+ -e '/^total /d' \
+ -e s,$other_partition_tmpdir/,, \
+ -e "s,$pwd_tmp/,," \
+ -e 's/^[^ ]* *[^ ]* *[^ ]* *[^ ]* *[^ ]* *[^ ]* *//'`"
+ ls2="`cd $other_partition_tmpdir && ls -gG --ignore=.err . \
+ | sed \
+ -e '/^total /d' \
+ -e s,$other_partition_tmpdir/,, \
+ -e "s,$pwd_tmp/,," \
+ -e 's/^[^ ]* *[^ ]* *[^ ]* *[^ ]* *[^ ]* *[^ ]* *//'`"
+ echo "($ls) ($ls2)"
+
+ # If the command failed, then it must not have changed the files.
+ if test $copy_status != 0; then
+ for f in $actual_args; do
+ test -f $f ||
+ { echo "$copy FAILED but removed $f"; continue; }
+ case "`cat $f`" in
+ "$contents") ;;
+ *) echo "$copy FAILED but modified $f";;
+ esac
+ done
+ fi
+
+ if test $copy = cp; then
+ # Make sure the original is unchanged and that
+ # the destination is a copy.
+ for f in $actual_args; do
+ if test -f $f; then
+ if test $copy_status != 0; then
+ test
+ fi
+ case "`cat $f`" in
+ "$contents") ;;
+ *) echo $copy FAILED;;
+ esac
+ else
+ echo symlink-loop
+ fi
+ done
+ fi
+ ) | tr '\n' ' '
+ echo
+ ) | sed 's/ *$//'
+ cd ..
+ done
+ echo
+ done
+done
+
+test $fail = 1 &&
+ { (exit 1); exit; }
+
+cat <<\EOF > $expected
+1 cp loc_reg rem_sl [cp: `loc_reg' and `rem_sl' are the same file ](loc_reg) (rem_sl -> dir/loc_reg)
+0 cp --rem loc_reg rem_sl (loc_reg) (rem_sl)
+0 cp --rem -d loc_reg rem_sl (loc_reg) (rem_sl)
+0 cp --rem -b loc_reg rem_sl (loc_reg) (rem_sl rem_sl~ -> dir/loc_reg)
+0 cp -b loc_reg rem_sl (loc_reg) (rem_sl rem_sl~ -> dir/loc_reg)
+0 cp -bd loc_reg rem_sl (loc_reg) (rem_sl rem_sl~ -> dir/loc_reg)
+1 cp -d loc_reg rem_sl [cp: `loc_reg' and `rem_sl' are the same file ](loc_reg) (rem_sl -> dir/loc_reg)
+
+1 cp rem_sl loc_reg [cp: `rem_sl' and `loc_reg' are the same file ](loc_reg) (rem_sl -> dir/loc_reg)
+1 cp --rem rem_sl loc_reg [cp: `rem_sl' and `loc_reg' are the same file ](loc_reg) (rem_sl -> dir/loc_reg)
+1 cp --rem -d rem_sl loc_reg [cp: `rem_sl' and `loc_reg' are the same file ](loc_reg) (rem_sl -> dir/loc_reg)
+1 cp --rem -b rem_sl loc_reg [cp: `rem_sl' and `loc_reg' are the same file ](loc_reg) (rem_sl -> dir/loc_reg)
+1 cp -b rem_sl loc_reg [cp: `rem_sl' and `loc_reg' are the same file ](loc_reg) (rem_sl -> dir/loc_reg)
+0 cp -bd rem_sl loc_reg (loc_reg -> dir/loc_reg loc_reg~) (rem_sl -> dir/loc_reg) symlink-loop symlink-loop
+1 cp -d rem_sl loc_reg [cp: `rem_sl' and `loc_reg' are the same file ](loc_reg) (rem_sl -> dir/loc_reg)
+
+1 cp loc_sl rem_reg [cp: `loc_sl' and `rem_reg' are the same file ](loc_sl -> rem_reg) (rem_reg)
+1 cp --rem loc_sl rem_reg [cp: `loc_sl' and `rem_reg' are the same file ](loc_sl -> rem_reg) (rem_reg)
+1 cp --rem -d loc_sl rem_reg [cp: `loc_sl' and `rem_reg' are the same file ](loc_sl -> rem_reg) (rem_reg)
+1 cp --rem -b loc_sl rem_reg [cp: `loc_sl' and `rem_reg' are the same file ](loc_sl -> rem_reg) (rem_reg)
+1 cp -b loc_sl rem_reg [cp: `loc_sl' and `rem_reg' are the same file ](loc_sl -> rem_reg) (rem_reg)
+0 cp -bd loc_sl rem_reg (loc_sl -> rem_reg) (rem_reg -> rem_reg rem_reg~) symlink-loop symlink-loop
+1 cp -d loc_sl rem_reg [cp: `loc_sl' and `rem_reg' are the same file ](loc_sl -> rem_reg) (rem_reg)
+
+1 cp rem_reg loc_sl [cp: `rem_reg' and `loc_sl' are the same file ](loc_sl -> rem_reg) (rem_reg)
+0 cp --rem rem_reg loc_sl (loc_sl) (rem_reg)
+0 cp --rem -d rem_reg loc_sl (loc_sl) (rem_reg)
+0 cp --rem -b rem_reg loc_sl (loc_sl loc_sl~ -> rem_reg) (rem_reg)
+0 cp -b rem_reg loc_sl (loc_sl loc_sl~ -> rem_reg) (rem_reg)
+0 cp -bd rem_reg loc_sl (loc_sl loc_sl~ -> rem_reg) (rem_reg)
+1 cp -d rem_reg loc_sl [cp: `rem_reg' and `loc_sl' are the same file ](loc_sl -> rem_reg) (rem_reg)
+
+0 mv loc_reg rem_sl () (rem_sl)
+0 mv -b loc_reg rem_sl () (rem_sl rem_sl~ -> dir/loc_reg)
+
+1 mv rem_sl loc_reg [mv: `rem_sl' and `loc_reg' are the same file ](loc_reg) (rem_sl -> dir/loc_reg)
+0 mv -b rem_sl loc_reg (loc_reg -> dir/loc_reg loc_reg~) ()
+
+1 mv loc_sl rem_reg [mv: `loc_sl' and `rem_reg' are the same file ](loc_sl -> rem_reg) (rem_reg)
+0 mv -b loc_sl rem_reg () (rem_reg -> rem_reg rem_reg~)
+
+0 mv rem_reg loc_sl (loc_sl) ()
+0 mv -b rem_reg loc_sl (loc_sl loc_sl~ -> rem_reg) ()
+
+EOF
+
+# Some folks may don't have diff.
+cmp $expected $actual \
+ || { diff -c $expected $actual 1>&2; fail=1; }
+
+(exit $fail); exit $fail
diff --git a/tests/mv/partition-perm b/tests/mv/partition-perm
new file mode 100755
index 0000000..969dc74
--- /dev/null
+++ b/tests/mv/partition-perm
@@ -0,0 +1,55 @@
+#!/bin/sh
+# Make sure permissions are preserved when moving from one partition to another.
+
+# Copyright (C) 1999, 2000, 2001, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+. $srcdir/../other-fs-tmpdir
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+if test -z "$other_partition_tmpdir"; then
+ exit 77
+fi
+
+pwd=`pwd`
+dir=p-perm-$$
+trap 'cd "$pwd" && rm -rf $dir $other_partition_tmpdir' 0 1 2 3 15
+
+mkdir $dir
+
+cd $dir
+: > file
+chmod a=rwx file
+
+umask 077
+mv file $other_partition_tmpdir
+
+fail=0
+test -f file && fail=1
+test -f $other_partition_tmpdir/file || fail=1
+
+# This would have failed with the mv from fileutils-4.0i.
+set _ `ls -l $other_partition_tmpdir/file`; shift; mode=$1
+test "$mode" = "-rwxrwxrwx" || fail=1
+
+exit $fail
diff --git a/tests/mv/perm-1 b/tests/mv/perm-1
new file mode 100755
index 0000000..1b9ab28
--- /dev/null
+++ b/tests/mv/perm-1
@@ -0,0 +1,57 @@
+#!/bin/sh
+# ensure that mv gives one diagnostic, not two, when failing
+# due to lack of permissions
+
+# Copyright (C) 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p no-write/dir || framework_failure=1
+chmod u-w no-write || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+mv no-write/dir . > out 2>&1 && fail=1
+cat <<\EOF > exp
+mv: cannot move `no-write/dir' to `./dir': Permission denied
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/mv/reply-no b/tests/mv/reply-no
new file mode 100755
index 0000000..ae0a3cd
--- /dev/null
+++ b/tests/mv/reply-no
@@ -0,0 +1,58 @@
+#!/bin/sh
+# Ensure that `mv --reply=no f1 f2' works.
+
+# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+touch a b || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+mv --interactive --reply=no a b > out 2>&1 || fail=1
+
+# Both files must remain.
+test -f a || fail=1
+test -f b || fail=1
+
+cat <<EOF > exp_err
+mv: the --reply option is deprecated; use -i or -f instead
+EOF
+
+cmp out exp_err || fail=1
+test $fail = 1 && diff out exp_err 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/mv/to-symlink b/tests/mv/to-symlink
new file mode 100755
index 0000000..6473cfb
--- /dev/null
+++ b/tests/mv/to-symlink
@@ -0,0 +1,63 @@
+#!/bin/sh
+# Make sure that the copying code used in an inter-partition
+# move unlinks a destination symlink before opening it.
+
+# Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+. $srcdir/../other-fs-tmpdir
+. $srcdir/../envvar-check
+
+if test -z "$other_partition_tmpdir"; then
+ exit 77
+fi
+
+rem_file="$other_partition_tmpdir/file"
+rem_symlink="$other_partition_tmpdir/symlink"
+file=to-sym-$$
+
+fail=0
+
+trap 'rm -fr $file $other_partition_tmpdir; exit $fail' 0 1 2 3 15
+
+framework_failure=0
+rm -f $file || framework_failure=1
+echo local > $file || framework_failure=1
+echo remote > $rem_file || framework_failure=1
+ln -s $rem_file $rem_symlink || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+# This mv command should succeed, unlinking the symlink
+# before copying.
+mv $file $rem_symlink || fail=1
+
+# Make sure $file is gone.
+test -f $file && fail=1
+
+# Make sure $rem_file is unmodified.
+test `cat $rem_file` = remote || fail=1
+
+exit $fail
diff --git a/tests/mv/trailing-slash b/tests/mv/trailing-slash
new file mode 100755
index 0000000..b734624
--- /dev/null
+++ b/tests/mv/trailing-slash
@@ -0,0 +1,77 @@
+#!/bin/sh
+# On some operating systems, e.g. SunOS-4.1.1_U1 on sun3x,
+# rename() doesn't accept trailing slashes.
+# Also, ensure that "mv dir non-exist-dir/" works.
+# Also, ensure that "cp dir non-exist-dir/" works.
+
+# Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mv --version
+fi
+
+pwd=`pwd`
+tmp=mv-tslash.$$
+trap 'status=$?; cd "$pwd" && exec 1>&2; rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+. $srcdir/../envvar-check
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir foo || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ exit 1
+fi
+
+fail=0
+
+mv foo/ bar || fail=1
+
+# mv and cp would misbehave for coreutils versions [5.3.0..5.97], 6.0 and 6.1
+for cmd in mv 'cp -r'; do
+ for opt in '' -T -u; do
+ rm -rf d e || framework_failure=1
+ mkdir d || framework_failure=1
+ if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+ fi
+
+ $cmd $opt d e/ || fail=1
+ if test "$cmd" = mv; then
+ test -d d && fail=1
+ else
+ test -d d || fail=1
+ fi
+ test -d e || fail=1
+ done
+done
+
+# We would like the erroneous-looking "mv any non-dir/" to fail,
+# but with the current implementation, it depends on how the
+# underlying rename syscall handles the trailing slash.
+# It does fail, as desired, on recent Linux and Solaris systems.
+#touch a a2
+#mv a a2/ && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/mv/update b/tests/mv/update
new file mode 100755
index 0000000..6bf161e
--- /dev/null
+++ b/tests/mv/update
@@ -0,0 +1,71 @@
+#!/bin/sh
+# make sure --update works as advertised
+
+# Copyright (C) 2001, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ cp --version
+ mv --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+tmp=mv-update.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+echo old > old || framework_failure=1
+touch -d yesterday old || framework_failure=1
+echo new > new || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+for cp_or_mv in cp mv; do
+ # This is a no-op.
+ $cp_or_mv --update old new || fail=1
+ case "`cat new`" in new) ;; *) fail=1 ;; esac
+ case "`cat old`" in old) ;; *) fail=1 ;; esac
+done
+
+# This will actually perform the rename.
+mv --update new old || fail=1
+test -f new && fail=1
+case "`cat old`" in new) ;; *) fail=1 ;; esac
+
+# Restore initial conditions.
+echo old > old || fail=1
+touch -d yesterday old || fail=1
+echo new > new || fail=1
+
+# This will actually perform the copy.
+cp --update new old || fail=1
+case "`cat old`" in new) ;; *) fail=1 ;; esac
+case "`cat new`" in new) ;; *) fail=1 ;; esac
+
+(exit $fail); exit $fail
diff --git a/tests/mv/vfat b/tests/mv/vfat
new file mode 100644
index 0000000..20b10e2
--- /dev/null
+++ b/tests/mv/vfat
@@ -0,0 +1,66 @@
+#!/bin/sh
+# This is just for the record.
+# This test is not run.
+
+# Copyright (C) 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+exit 0
+
+cat <<\EOF
+
+Prior to 5.0.91, ...
+
+The problem:
+ On a VFAT file system with coreutils-5.0.90, `mv FOO foo' removes the
+ sole copy of the file named by both the source and destination arguments.
+
+Demonstrate the problem, as root:
+
+cd /tmp \
+ && dd if=/dev/zero of=1 bs=8192 count=50 \
+ && mkdir mnt && mkfs -t vfat 1 \
+ && mount -oloop 1 mnt && cd mnt \
+ && printf something important > foo \
+ && mv foo FOO
+test -f FOO && echo PASS-1 || echo FAIL-1
+ln foo bar
+mv foo FOO
+test -f FOO && echo PASS-2 || echo FAIL-2
+
+And in case you actually do the above, you can do this to clean up:
+
+ cd /tmp && umount /tmp/mnt && rm -r 1 mnt
+
+Hey! Can't create hard links on vfat.
+The above `ln' evokes an `operation not permitted' failure.
+
+This demonstrates the same thing with file system type `umsdos'
+No hard links:
+
+cd /tmp \
+ && dd if=/dev/zero of=1 bs=8192 count=50 \
+ && mkdir mnt && mkfs -t msdos 1 \
+ && mount -t umsdos -oloop 1 mnt && cd mnt \
+ && printf something important > foo \
+ && mv foo FOO
+test -f FOO && echo PASS-1 || echo FAIL-1
+ln foo bar
+mv foo FOO
+test -f FOO && echo PASS-2 || echo FAIL-2
+
+EOF
diff --git a/tests/od/Makefile.am b/tests/od/Makefile.am
new file mode 100644
index 0000000..21396a9
--- /dev/null
+++ b/tests/od/Makefile.am
@@ -0,0 +1,12 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+
+EXTRA_DIST = $(TESTS)
+
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+TESTS = od-N x8
diff --git a/tests/od/Makefile.in b/tests/od/Makefile.in
new file mode 100644
index 0000000..90f34eb
--- /dev/null
+++ b/tests/od/Makefile.in
@@ -0,0 +1,719 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/od
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+TESTS = od-N x8
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/od/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/od/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/od/od-N b/tests/od/od-N
new file mode 100755
index 0000000..0fbe3ea
--- /dev/null
+++ b/tests/od/od-N
@@ -0,0 +1,53 @@
+#!/bin/sh
+# Verify that `od -N N' reads no more than N bytes of input.
+
+# Copyright (C) 2001, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ od --version
+fi
+
+pwd=`pwd`
+tmp=od-N.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+echo abcdefg > in || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+(od -An -N3 -c; od -An -N3 -c) < in > out
+cat <<EOF > exp || fail=1
+ a b c
+ d e f
+EOF
+cmp out exp || {
+ fail=1
+ diff out exp 2> /dev/null
+ }
+
+(exit $fail); exit $fail
diff --git a/tests/od/x8 b/tests/od/x8
new file mode 100755
index 0000000..c92fcab
--- /dev/null
+++ b/tests/od/x8
@@ -0,0 +1,64 @@
+#!/bin/sh
+# verify that od -t x8 works properly
+# This would fail before coreutils-4.5.2.
+
+# Copyright (C) 2002, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ od --version
+fi
+
+od -t x8 /dev/null >/dev/null || {
+ echo >&2 "$0: 8-byte test skipped"
+ exit 77
+}
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+echo abcdefgh |tr -d '\n' > in || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+od -An -t x8 in > out-raw || fail=1
+sed 's/^ //;s/\(..\)/\1 /g;s/ $//' out-raw \
+ | tr ' ' '\n' \
+ | sort -n \
+ > out
+
+od -An -t x1 in \
+ | sed 's/^ //' \
+ | tr ' ' '\n' \
+ | sort -n \
+ > exp
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/other-fs-tmpdir b/tests/other-fs-tmpdir
new file mode 100755
index 0000000..0886437
--- /dev/null
+++ b/tests/other-fs-tmpdir
@@ -0,0 +1,61 @@
+#! /bin/sh
+
+# Use stat to find a writable directory on a file system different from that
+# of the current directory. If one is found, create a temporary directory
+# inside it.
+
+# Copyright (C) 1998, 1999, 2001, 2002, 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+test "${CANDIDATE_TMP_DIRS+set}" = set \
+ || CANDIDATE_TMP_DIRS="$TMPDIR /tmp /var/tmp /usr/tmp $HOME"
+
+other_partition_tmpdir=
+
+dot_mount_point=`stat -c %d .`
+for d in $CANDIDATE_TMP_DIRS; do
+
+ # Skip nonexistent directories.
+ test -d $d || continue
+
+ d_mount_point=`stat -L -c %d $d`
+
+ # Same partition? Skip it.
+ test x$d_mount_point = x$dot_mount_point && continue
+
+ # See if we can create a directory in it.
+ if mkdir "$d/tmp$$" > /dev/null 2>&1; then
+ other_partition_tmpdir="$d/tmp$$"
+ break
+ fi
+
+done
+
+if test -z "$other_partition_tmpdir"; then
+ cat <<EOF 1>&2
+**************************************
+This test requires a writable directory on a different
+disk partition, and I couldn't find one. I tried these:
+ $CANDIDATE_TMP_DIRS
+Set your environment variable CANDIDATE_TMP_DIRS to make
+this test use a different list.
+**************************************
+EOF
+ #'
+fi
+
+test "$VERBOSE" = yes && set -x
diff --git a/tests/pr/0F b/tests/pr/0F
new file mode 100644
index 0000000..680117c
--- /dev/null
+++ b/tests/pr/0F
@@ -0,0 +1,330 @@
+
+
+-- Date/Time -- x Page 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 2
+
+
+1 FF-Test: FF's at Start of File V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: Empty Pages at start
+7 \ftext; \f\ntext;
+8 \f\ftext; \f\f\ntext; \f\n\ftext; \f\n\f\n;
+9 3456789 123456789 123456789
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/0FF b/tests/pr/0FF
new file mode 100644
index 0000000..934512b
--- /dev/null
+++ b/tests/pr/0FF
@@ -0,0 +1,396 @@
+
+
+-- Date/Time -- x Page 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 3
+
+
+1 FF-Test: FF's at Start of File V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: Empty Pages at start
+7 \ftext; \f\ntext;
+8 \f\ftext; \f\f\ntext; \f\n\ftext; \f\n\f\n;
+9 3456789 123456789 123456789
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 6
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/0FFnt b/tests/pr/0FFnt
new file mode 100644
index 0000000..19ecc4f
--- /dev/null
+++ b/tests/pr/0FFnt
@@ -0,0 +1,36 @@
+
+1 FF-Test: FF's at Start of File V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: Empty Pages at start
+7 \ftext; \f\ntext;
+8 \f\ftext; \f\f\ntext; \f\n\ftext; \f\n\f\n;
+9 3456789 123456789 123456789
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
diff --git a/tests/pr/0FFt b/tests/pr/0FFt
new file mode 100644
index 0000000..38e91e2
--- /dev/null
+++ b/tests/pr/0FFt
@@ -0,0 +1,35 @@
+ 1 FF-Test: FF's at Start of File V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: Empty Pages at start
+7 \ftext; \f\ntext;
+8 \f\ftext; \f\f\ntext; \f\n\ftext; \f\n\f\n;
+9 3456789 123456789 123456789
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
diff --git a/tests/pr/0FnFnt b/tests/pr/0FnFnt
new file mode 100644
index 0000000..364bd94
--- /dev/null
+++ b/tests/pr/0FnFnt
@@ -0,0 +1,37 @@
+
+
+1 FF-Test: FF's at Start of File V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: Empty Pages at start
+7 \ftext; \f\ntext;
+8 \f\ftext; \f\f\ntext; \f\n\ftext; \f\n\f\n;
+9 3456789 123456789 123456789
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
diff --git a/tests/pr/0FnFt b/tests/pr/0FnFt
new file mode 100644
index 0000000..eb01651
--- /dev/null
+++ b/tests/pr/0FnFt
@@ -0,0 +1,36 @@
+
+ 1 FF-Test: FF's at Start of File V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: Empty Pages at start
+7 \ftext; \f\ntext;
+8 \f\ftext; \f\f\ntext; \f\n\ftext; \f\n\f\n;
+9 3456789 123456789 123456789
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
diff --git a/tests/pr/0Fnt b/tests/pr/0Fnt
new file mode 100644
index 0000000..9ba3a90
--- /dev/null
+++ b/tests/pr/0Fnt
@@ -0,0 +1,36 @@
+
+1 FF-Test: FF's at Start of File V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: Empty Pages at start
+7 \ftext; \f\ntext;
+8 \f\ftext; \f\f\ntext; \f\n\ftext; \f\n\f\n;
+9 3456789 123456789 123456789
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
diff --git a/tests/pr/0Ft b/tests/pr/0Ft
new file mode 100644
index 0000000..bdd599d
--- /dev/null
+++ b/tests/pr/0Ft
@@ -0,0 +1,35 @@
+ 1 FF-Test: FF's at Start of File V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: Empty Pages at start
+7 \ftext; \f\ntext;
+8 \f\ftext; \f\f\ntext; \f\n\ftext; \f\n\f\n;
+9 3456789 123456789 123456789
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
diff --git a/tests/pr/2-S_f-t_notab b/tests/pr/2-S_f-t_notab
new file mode 100644
index 0000000..043af01
--- /dev/null
+++ b/tests/pr/2-S_f-t_notab
@@ -0,0 +1,7 @@
+-- Date/Time -- x Page 1
+
+
+aaaa.bcde-fghijklmn-opqrstuvw-xyzzz:dddd.bcde-fghijklmn-opqrstuvw-xyzzz
+bbbb.bcde-fghijklmn-opqrstuvw-xyzzz:eeee.bcde-fghijklmn-opqrstuvw-xyzzz
+cccc.bcde-fghijklmn-opqrstuvw-xyzzz
+ \ No newline at end of file
diff --git a/tests/pr/2-Sf-t_notab b/tests/pr/2-Sf-t_notab
new file mode 100644
index 0000000..ac4922f
--- /dev/null
+++ b/tests/pr/2-Sf-t_notab
@@ -0,0 +1,7 @@
+-- Date/Time -- x Page 1
+
+
+aaaa.bcde-fghijklmn-opqrstuvw-xyzzzzdddd.bcde-fghijklmn-opqrstuvw-xyzzzz
+bbbb.bcde-fghijklmn-opqrstuvw-xyzzzzeeee.bcde-fghijklmn-opqrstuvw-xyzzzz
+cccc.bcde-fghijklmn-opqrstuvw-xyzzzz
+ \ No newline at end of file
diff --git a/tests/pr/2f-t_notab b/tests/pr/2f-t_notab
new file mode 100644
index 0000000..d6256e8
--- /dev/null
+++ b/tests/pr/2f-t_notab
@@ -0,0 +1,7 @@
+-- Date/Time -- x Page 1
+
+
+aaaa.bcde-fghijklmn-opqrstuvw-xyzzz dddd.bcde-fghijklmn-opqrstuvw-xyzzz
+bbbb.bcde-fghijklmn-opqrstuvw-xyzzz eeee.bcde-fghijklmn-opqrstuvw-xyzzz
+cccc.bcde-fghijklmn-opqrstuvw-xyzzz
+ \ No newline at end of file
diff --git a/tests/pr/2s_f-t_notab b/tests/pr/2s_f-t_notab
new file mode 100644
index 0000000..20c3fcf
--- /dev/null
+++ b/tests/pr/2s_f-t_notab
@@ -0,0 +1,7 @@
+-- Date/Time -- x Page 1
+
+
+aaaa.bcde-fghijklmn-opqrstuvw-xyzzzzzzz-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:dddd.bcde-fghijklmn-opqrstuvw-xyzzzzzzz-dddddddddddddddddddddddddddddddddddddddd
+bbbb.bcde-fghijklmn-opqrstuvw-xyzzzzzzz-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb:eeee.bcde-fghijklmn-opqrstuvw-xyzzzzzzz-eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
+cccc.bcde-fghijklmn-opqrstuvw-xyzzzzzzz-cccccccccccccccccccccccccccccccccccccccc
+ \ No newline at end of file
diff --git a/tests/pr/2s_w60f-t_nota b/tests/pr/2s_w60f-t_nota
new file mode 100644
index 0000000..a143222
--- /dev/null
+++ b/tests/pr/2s_w60f-t_nota
@@ -0,0 +1,7 @@
+-- Date/Time -- x Page 1
+
+
+aaaa.bcde-fghijklmn-opqrstuvw:dddd.bcde-fghijklmn-opqrstuvw
+bbbb.bcde-fghijklmn-opqrstuvw:eeee.bcde-fghijklmn-opqrstuvw
+cccc.bcde-fghijklmn-opqrstuvw
+ \ No newline at end of file
diff --git a/tests/pr/2sf-t_notab b/tests/pr/2sf-t_notab
new file mode 100644
index 0000000..da24c8f
--- /dev/null
+++ b/tests/pr/2sf-t_notab
@@ -0,0 +1,7 @@
+-- Date/Time -- x Page 1
+
+
+aaaa.bcde-fghijklmn-opqrstuvw-xyzzzzzzz-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dddd.bcde-fghijklmn-opqrstuvw-xyzzzzzzz-dddddddddddddddddddddddddddddddddddddddd
+bbbb.bcde-fghijklmn-opqrstuvw-xyzzzzzzz-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb eeee.bcde-fghijklmn-opqrstuvw-xyzzzzzzz-eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
+cccc.bcde-fghijklmn-opqrstuvw-xyzzzzzzz-cccccccccccccccccccccccccccccccccccccccc
+ \ No newline at end of file
diff --git a/tests/pr/2sw60f-t_notab b/tests/pr/2sw60f-t_notab
new file mode 100644
index 0000000..0528e28
--- /dev/null
+++ b/tests/pr/2sw60f-t_notab
@@ -0,0 +1,7 @@
+-- Date/Time -- x Page 1
+
+
+aaaa.bcde-fghijklmn-opqrstuvw-dddd.bcde-fghijklmn-opqrstuvw-
+bbbb.bcde-fghijklmn-opqrstuvw-eeee.bcde-fghijklmn-opqrstuvw-
+cccc.bcde-fghijklmn-opqrstuvw-
+ \ No newline at end of file
diff --git a/tests/pr/2w60f-t_notab b/tests/pr/2w60f-t_notab
new file mode 100644
index 0000000..82acd01
--- /dev/null
+++ b/tests/pr/2w60f-t_notab
@@ -0,0 +1,7 @@
+-- Date/Time -- x Page 1
+
+
+aaaa.bcde-fghijklmn-opqrstuvw dddd.bcde-fghijklmn-opqrstuvw
+bbbb.bcde-fghijklmn-opqrstuvw eeee.bcde-fghijklmn-opqrstuvw
+cccc.bcde-fghijklmn-opqrstuvw
+ \ No newline at end of file
diff --git a/tests/pr/3-0F b/tests/pr/3-0F
new file mode 100644
index 0000000..eff257a
--- /dev/null
+++ b/tests/pr/3-0F
@@ -0,0 +1,198 @@
+
+
+-- Date/Time -- x Page 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/3-5l17f-t b/tests/pr/3-5l17f-t
new file mode 100644
index 0000000..30e25aa
--- /dev/null
+++ b/tests/pr/3-5l17f-t
@@ -0,0 +1,45 @@
+-- Date/Time -- x Page 3
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 4
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 5
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
+1
+2
+3 ------- EOF -------- EOF -------- EOF -------
+ \ No newline at end of file
diff --git a/tests/pr/3-FF b/tests/pr/3-FF
new file mode 100644
index 0000000..b7afab0
--- /dev/null
+++ b/tests/pr/3-FF
@@ -0,0 +1,462 @@
+
+
+-- Date/Time -- x Page 3
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 8
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 9
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/3a2l17-FF b/tests/pr/3a2l17-FF
new file mode 100644
index 0000000..b019823
--- /dev/null
+++ b/tests/pr/3a2l17-FF
@@ -0,0 +1,119 @@
+
+
+-- Date/Time -- x Page 3
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab 16 456789 123456789 xyzxyzxyz XYZXY
+7 8
+9 3456789 ab 20 DEFGHI 123
+1 2
+3 4
+5 6
+27 no truncation before FF; (r_l-te 28 no trunc
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab 30 456789 123456789 xyzxyzxyz XYZXY
+1 2 3456789 abcdefghi
+3 4
+5 6
+7 8
+9 3456789 abcdefghi 40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab 42 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 8
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab 44 456789 123456789 xyzxyzxyz XYZXY
+5 6
+7 8
+9 50
+1 2
+3 4
+55 yzxyzxyz XYZXYZXYZ abcabcab 56 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 9
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab 58 456789 123456789 xyzxyzxyz XYZXY
+9 60 DEFGHI 123456789
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/3a3f-0F b/tests/pr/3a3f-0F
new file mode 100644
index 0000000..11d4327
--- /dev/null
+++ b/tests/pr/3a3f-0F
@@ -0,0 +1,18 @@
+-- Date/Time -- x Page 3
+
+
+
+ -- Date/Time -- x Page 4
+
+
+15 xyzxyzxyz XYZXYZXYZ 16 456789 123456789 xyz 7
+8 9 3456789 ab 20 DEFGHI 123
+1 2 3
+4 5 6
+27 no truncation before 28 no trunc
+ -- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ 30 456789 123456789 xyz 1
+2 3456789 abcdefghi 3
+ \ No newline at end of file
diff --git a/tests/pr/3a3l15-t b/tests/pr/3a3l15-t
new file mode 100644
index 0000000..9d555f1
--- /dev/null
+++ b/tests/pr/3a3l15-t
@@ -0,0 +1,45 @@
+
+
+-- Date/Time -- x Page 3
+
+
+1 2 3456789 abcdefghi 3
+4 5 6
+7 8 9 3456789 abcdefghi
+40 DEFGHI 123456789 41 yzxyzxyz XYZXYZXYZ a 42 456789 123456789 abc
+43 xyzxyzxyz XYZXYZXYZ 44 456789 123456789 xyz 5
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+6 7 8
+9 50 1
+2 3 4
+55 yzxyzxyz XYZXYZXYZ a 56 456789 123456789 abc 57 xyzxyzxyz XYZXYZXYZ
+58 456789 123456789 xyz 9 60 DEFGHI 123456789
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+1 2 3 ------- EOF --------
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/3a3l8f-t b/tests/pr/3a3l8f-t
new file mode 100644
index 0000000..ef7cfcd
--- /dev/null
+++ b/tests/pr/3a3l8f-t
@@ -0,0 +1,21 @@
+-- Date/Time -- x Page 3
+
+
+1 2 3456789 abcdefghi 3
+4 5 6
+7 8 9 3456789 abcdefghi
+40 DEFGHI 123456789 41 yzxyzxyz XYZXYZXYZ a 42 456789 123456789 abc
+43 xyzxyzxyz XYZXYZXYZ 44 456789 123456789 xyz 5
+ -- Date/Time -- x Page 4
+
+
+6 7 8
+9 50 1
+2 3 4
+55 yzxyzxyz XYZXYZXYZ a 56 456789 123456789 abc 57 xyzxyzxyz XYZXYZXYZ
+58 456789 123456789 xyz 9 60 DEFGHI 123456789
+ -- Date/Time -- x Page 5
+
+
+1 2 3 ------- EOF --------
+ \ No newline at end of file
diff --git a/tests/pr/3b2l17-FF b/tests/pr/3b2l17-FF
new file mode 100644
index 0000000..0ec3097
--- /dev/null
+++ b/tests/pr/3b2l17-FF
@@ -0,0 +1,119 @@
+
+
+-- Date/Time -- x Page 3
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab 2
+16 456789 123456789 xyzxyzxyz XYZXY 3
+7 4
+8 5
+9 3456789 ab 6
+20 DEFGHI 123 27 no truncation before FF; (r_l-te
+1 28 no trunc
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab 6
+30 456789 123456789 xyzxyzxyz XYZXY 7
+1 8
+2 3456789 abcdefghi 9 3456789 abcdefghi
+3 40 DEFGHI 123456789
+4 41 yzxyzxyz XYZXYZXYZ abcabcab
+5 42 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 8
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab 50
+44 456789 123456789 xyzxyzxyz XYZXY 1
+5 2
+6 3
+7 4
+8 55 yzxyzxyz XYZXYZXYZ abcabcab
+9 56 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 9
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab 9
+58 456789 123456789 xyzxyzxyz XYZXY 60 DEFGHI 123456789
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/3b3f-0F b/tests/pr/3b3f-0F
new file mode 100644
index 0000000..a7b6886
--- /dev/null
+++ b/tests/pr/3b3f-0F
@@ -0,0 +1,18 @@
+-- Date/Time -- x Page 3
+
+
+
+ -- Date/Time -- x Page 4
+
+
+15 xyzxyzxyz XYZXYZXYZ 20 DEFGHI 123 5
+16 456789 123456789 xyz 1 6
+7 2 27 no truncation before
+8 3 28 no trunc
+9 3456789 ab 4
+ -- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ 1 3
+30 456789 123456789 xyz 2 3456789 abcdefghi
+ \ No newline at end of file
diff --git a/tests/pr/3b3f-0FF b/tests/pr/3b3f-0FF
new file mode 100644
index 0000000..1cc025f
--- /dev/null
+++ b/tests/pr/3b3f-0FF
@@ -0,0 +1,26 @@
+-- Date/Time -- x Page 3
+
+
+1 FF-Test: FF's at St 6 FF-Arangements: Emp 1
+2 Options -b -3 / -a 7 \ftext; \f\ntext; 2
+3 ------------------- 8 \f\ftext; \f\f\ntex 3 line truncation befor
+4 3456789 123456789 123 9 3456789 123456789 123 14 456789 123456789 123
+5 3 Columns downwards 10 zzzzzzzzzzzzzzzzzzz
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+15 xyzxyzxyz XYZXYZXYZ 20 DEFGHI 123 5
+16 456789 123456789 xyz 1 6
+7 2 27 no truncation before
+8 3 28 no trunc
+9 3456789 ab 4
+ -- Date/Time -- x Page 6
+
+
+29 xyzxyzxyz XYZXYZXYZ 1 3
+30 456789 123456789 xyz 2 3456789 abcdefghi
+ \ No newline at end of file
diff --git a/tests/pr/3b3f-FF b/tests/pr/3b3f-FF
new file mode 100644
index 0000000..e44433f
--- /dev/null
+++ b/tests/pr/3b3f-FF
@@ -0,0 +1,42 @@
+-- Date/Time -- x Page 3
+
+
+15 xyzxyzxyz XYZXYZXYZ 20 DEFGHI 123 5
+16 456789 123456789 xyz 1 6
+7 2 27 no truncation before
+8 3 28 no trunc
+9 3456789 ab 4
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ 4 9 3456789 abcdefghi
+30 456789 123456789 xyz 5 40 DEFGHI 123456789
+1 6 41 yzxyzxyz XYZXYZXYZ a
+2 3456789 abcdefghi 7 42 456789 123456789 abc
+3 8
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43 xyzxyzxyz XYZXYZXYZ 8 3
+44 456789 123456789 xyz 9 4
+5 50 55 yzxyzxyz XYZXYZXYZ a
+6 1 56 456789 123456789 abc
+7 2
+ -- Date/Time -- x Page 9
+
+
+57 xyzxyzxyz XYZXYZXYZ 9 60 DEFGHI 123456789
+58 456789 123456789 xyz
+ \ No newline at end of file
diff --git a/tests/pr/3b3l15-t b/tests/pr/3b3l15-t
new file mode 100644
index 0000000..dbec31d
--- /dev/null
+++ b/tests/pr/3b3l15-t
@@ -0,0 +1,45 @@
+
+
+-- Date/Time -- x Page 3
+
+
+1 6 41 yzxyzxyz XYZXYZXYZ a
+2 3456789 abcdefghi 7 42 456789 123456789 abc
+3 8 43 xyzxyzxyz XYZXYZXYZ
+4 9 3456789 abcdefghi 44 456789 123456789 xyz
+5 40 DEFGHI 123456789 5
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+6 1 56 456789 123456789 abc
+7 2 57 xyzxyzxyz XYZXYZXYZ
+8 3 58 456789 123456789 xyz
+9 4 9
+50 55 yzxyzxyz XYZXYZXYZ a 60 DEFGHI 123456789
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+1 2 3 ------- EOF --------
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/3b3l8f-t b/tests/pr/3b3l8f-t
new file mode 100644
index 0000000..91d6c50
--- /dev/null
+++ b/tests/pr/3b3l8f-t
@@ -0,0 +1,21 @@
+-- Date/Time -- x Page 3
+
+
+1 6 41 yzxyzxyz XYZXYZXYZ a
+2 3456789 abcdefghi 7 42 456789 123456789 abc
+3 8 43 xyzxyzxyz XYZXYZXYZ
+4 9 3456789 abcdefghi 44 456789 123456789 xyz
+5 40 DEFGHI 123456789 5
+ -- Date/Time -- x Page 4
+
+
+6 1 56 456789 123456789 abc
+7 2 57 xyzxyzxyz XYZXYZXYZ
+8 3 58 456789 123456789 xyz
+9 4 9
+50 55 yzxyzxyz XYZXYZXYZ a 60 DEFGHI 123456789
+ -- Date/Time -- x Page 5
+
+
+1 2 3 ------- EOF --------
+ \ No newline at end of file
diff --git a/tests/pr/3f-0F b/tests/pr/3f-0F
new file mode 100644
index 0000000..e827c4b
--- /dev/null
+++ b/tests/pr/3f-0F
@@ -0,0 +1,30 @@
+-- Date/Time -- x Page 3
+
+
+
+ -- Date/Time -- x Page 4
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+ -- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+ \ No newline at end of file
diff --git a/tests/pr/3f-FF b/tests/pr/3f-FF
new file mode 100644
index 0000000..ff7fa6e
--- /dev/null
+++ b/tests/pr/3f-FF
@@ -0,0 +1,71 @@
+-- Date/Time -- x Page 3
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 9
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
+ \ No newline at end of file
diff --git a/tests/pr/3l17f-t b/tests/pr/3l17f-t
new file mode 100644
index 0000000..30e25aa
--- /dev/null
+++ b/tests/pr/3l17f-t
@@ -0,0 +1,45 @@
+-- Date/Time -- x Page 3
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 4
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 5
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
+1
+2
+3 ------- EOF -------- EOF -------- EOF -------
+ \ No newline at end of file
diff --git a/tests/pr/3l24-t b/tests/pr/3l24-t
new file mode 100644
index 0000000..6645155
--- /dev/null
+++ b/tests/pr/3l24-t
@@ -0,0 +1,72 @@
+
+
+-- Date/Time -- x Page 3
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
+1
+2
+3 ------- EOF -------- EOF -------- EOF -------
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/3ml17f-t b/tests/pr/3ml17f-t
new file mode 100644
index 0000000..684c455
--- /dev/null
+++ b/tests/pr/3ml17f-t
@@ -0,0 +1,45 @@
+-- Date/Time -- x Page 3
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab 29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXY 30 456789 123456789 xyzxyzxyz XYZXY
+1 1
+2 3456789 abcdefghi 2 3456789 abcdefghi
+3 3
+4 4
+5 5
+6 6
+7 7
+8 8
+9 3456789 abcdefghi 9 3456789 abcdefghi
+40 DEFGHI 123456789 40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab 41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDE 42 456789 123456789 abcdefghi ABCDE
+ -- Date/Time -- x Page 4
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab 43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXY 44 456789 123456789 xyzxyzxyz XYZXY
+5 5
+6 6
+7 7
+8 8
+9 9
+50 50
+1 1
+2 2
+3 3
+4 4
+55 yzxyzxyz XYZXYZXYZ abcabcab 55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDE 56 456789 123456789 abcdefghi ABCDE
+ -- Date/Time -- x Page 5
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab 57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXY 58 456789 123456789 xyzxyzxyz XYZXY
+9 9
+60 DEFGHI 123456789 60 DEFGHI 123456789
+1 1
+2 2
+3 ------- EOF -------- EOF ------- 3 ------- EOF -------- EOF -------
+ \ No newline at end of file
diff --git a/tests/pr/3ml24-FF b/tests/pr/3ml24-FF
new file mode 100644
index 0000000..6939741
--- /dev/null
+++ b/tests/pr/3ml24-FF
@@ -0,0 +1,168 @@
+
+
+-- Date/Time -- x Page 3
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab 15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXY 16 456789 123456789 xyzxyzxyz XYZXY
+7 7
+8 8
+9 3456789 ab 9 3456789 ab
+20 DEFGHI 123 20 DEFGHI 123
+1 1
+2 2
+3 3
+4 4
+5 5
+6 6
+27 no truncation before FF; (r_l-te 27 no truncation before FF; (r_l-te
+28 no trunc 28 no trunc
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab 29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXY 30 456789 123456789 xyzxyzxyz XYZXY
+1 1
+2 3456789 abcdefghi 2 3456789 abcdefghi
+3 3
+4 4
+5 5
+6 6
+7 7
+8 8
+9 3456789 abcdefghi 9 3456789 abcdefghi
+40 DEFGHI 123456789 40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab 41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDE 42 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 8
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab 43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXY 44 456789 123456789 xyzxyzxyz XYZXY
+5 5
+6 6
+7 7
+8 8
+9 9
+50 50
+1 1
+2 2
+3 3
+4 4
+55 yzxyzxyz XYZXYZXYZ abcabcab 55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDE 56 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 9
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab 57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXY 58 456789 123456789 xyzxyzxyz XYZXY
+9 9
+60 DEFGHI 123456789 60 DEFGHI 123456789
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/3ml24-t b/tests/pr/3ml24-t
new file mode 100644
index 0000000..1b58463
--- /dev/null
+++ b/tests/pr/3ml24-t
@@ -0,0 +1,72 @@
+
+
+-- Date/Time -- x Page 3
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab 29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXY 30 456789 123456789 xyzxyzxyz XYZXY
+1 1
+2 3456789 abcdefghi 2 3456789 abcdefghi
+3 3
+4 4
+5 5
+6 6
+7 7
+8 8
+9 3456789 abcdefghi 9 3456789 abcdefghi
+40 DEFGHI 123456789 40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab 41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDE 42 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab 43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXY 44 456789 123456789 xyzxyzxyz XYZXY
+5 5
+6 6
+7 7
+8 8
+9 9
+50 50
+1 1
+2 2
+3 3
+4 4
+55 yzxyzxyz XYZXYZXYZ abcabcab 55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDE 56 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab 57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXY 58 456789 123456789 xyzxyzxyz XYZXY
+9 9
+60 DEFGHI 123456789 60 DEFGHI 123456789
+1 1
+2 2
+3 ------- EOF -------- EOF ------- 3 ------- EOF -------- EOF -------
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/3ml24-t-FF b/tests/pr/3ml24-t-FF
new file mode 100644
index 0000000..0bf5d5f
--- /dev/null
+++ b/tests/pr/3ml24-t-FF
@@ -0,0 +1,168 @@
+
+
+-- Date/Time -- x Page 3
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab 15 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXY 16 456789 123456789 xyzxyzxyz XYZXY
+1 7
+2 3456789 abcdefghi 8
+3 9 3456789 ab
+4 20 DEFGHI 123
+5 1
+6 2
+7 3
+8 4
+9 3456789 abcdefghi 5
+40 DEFGHI 123456789 6
+41 yzxyzxyz XYZXYZXYZ abcabcab 27 no truncation before FF; (r_l-te
+42 456789 123456789 abcdefghi ABCDE 28 no trunc
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXY
+5
+6
+7
+8
+9
+50
+1
+2
+3
+4
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab 29 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXY 30 456789 123456789 xyzxyzxyz XYZXY
+9 1
+60 DEFGHI 123456789 2 3456789 abcdefghi
+1 3
+2 4
+3 ------- EOF -------- EOF ------- 5
+ 6
+ 7
+ 8
+ 9 3456789 abcdefghi
+ 40 DEFGHI 123456789
+ 41 yzxyzxyz XYZXYZXYZ abcabcab
+ 42 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 8
+
+
+ 43 xyzxyzxyz XYZXYZXYZ abcabcab
+ 44 456789 123456789 xyzxyzxyz XYZXY
+ 5
+ 6
+ 7
+ 8
+ 9
+ 50
+ 1
+ 2
+ 3
+ 4
+ 55 yzxyzxyz XYZXYZXYZ abcabcab
+ 56 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 9
+
+
+ 57 xyzxyzxyz XYZXYZXYZ abcabcab
+ 58 456789 123456789 xyzxyzxyz XYZXY
+ 9
+ 60 DEFGHI 123456789
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/4-7l24-FF b/tests/pr/4-7l24-FF
new file mode 100644
index 0000000..13b106e
--- /dev/null
+++ b/tests/pr/4-7l24-FF
@@ -0,0 +1,96 @@
+
+
+-- Date/Time -- x Page 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+
+
+
+
+
+
+
+-- Date/Time -- x Page 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/4l24-FF b/tests/pr/4l24-FF
new file mode 100644
index 0000000..7bd96a5
--- /dev/null
+++ b/tests/pr/4l24-FF
@@ -0,0 +1,144 @@
+
+
+-- Date/Time -- x Page 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+
+
+
+
+
+
+
+-- Date/Time -- x Page 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 8
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+
+
+
+
+
+
+
+-- Date/Time -- x Page 9
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/FF b/tests/pr/FF
new file mode 100644
index 0000000..6fc2703
--- /dev/null
+++ b/tests/pr/FF
@@ -0,0 +1,594 @@
+
+
+-- Date/Time -- x Page 1
+
+
+1 FF-Test: FF's in Text V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: One Empty Page
+7 text\f\f\n; text\f\n\ftext; \f\ftext;
+8 \f\f\n; \f\n\f\n;
+9
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 3
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 8
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 9
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/FFn b/tests/pr/FFn
new file mode 100644
index 0000000..ab7c036
--- /dev/null
+++ b/tests/pr/FFn
@@ -0,0 +1,64 @@
+1 FF-Test: FF's in Text V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: One Empty Page
+7 text\f\f\n; text\f\n\ftext; \f\ftext;
+8 \f\f\n; \f\n\f\n;
+9
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
diff --git a/tests/pr/FFtn b/tests/pr/FFtn
new file mode 100644
index 0000000..dfd229b
--- /dev/null
+++ b/tests/pr/FFtn
@@ -0,0 +1,60 @@
+1 FF-Test: FF's in Text V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: One Empty Page
+7 text\f\f\n; text\f\n\ftext; \f\ftext;
+8 \f\f\n; \f\n\f\n;
+9
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+ 15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+ 29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+ 43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+ 57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
diff --git a/tests/pr/FnFn b/tests/pr/FnFn
new file mode 100644
index 0000000..fa91aba
--- /dev/null
+++ b/tests/pr/FnFn
@@ -0,0 +1,68 @@
+1 FF-Test: FF's in Text V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: One Empty Page
+7 text\f\f\n; text\f\n\ftext; \f\ftext;
+8 \f\f\n; \f\n\f\n;
+9
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
diff --git a/tests/pr/Ja3l17f-lm b/tests/pr/Ja3l17f-lm
new file mode 100644
index 0000000..60b45ac
--- /dev/null
+++ b/tests/pr/Ja3l17f-lm
@@ -0,0 +1,54 @@
+-- Date/Time -- x Page 1
+
+
+1<<< -Test: FF's in Text >>> 2<<< -b -3 / -a -3 / ... >>> 3<<< >>>
+4<<< 123456789 123456789 123456789 12345678 >>> 6<<< -Arangements: One Empty Page >>>
+7<<< \f\f\n; text\f\n\ftext; \f\ftext; >>> 8<<< f\f\n; \f\n\f\n; >>> 9<<< >>>
+10<<< >>> 1<<< >>> 2<<< >>>
+3<<< truncation before FF; r_r_o_l-test: >>> 14<<< 123456789 123456789 123456789 >>>
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+15<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 16<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 7<<< >>>
+8<<< >>> 9<<< >>> 20<<< >>>
+1<<< >>>
+4<<< >>> 5<<< >>> 6<<< >>>
+27<<< truncation before FF; (r_l-test): >>> 28<<< trunc
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+29<<<xyzxyzxyz XYZXYZXYZ abcabcab >>> 30<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 1<<< >>>
+2<<< abcdefghi >>> 3<<< >>> 4<<< >>>
+5<<< >>> 6<<< >>> 7<<< >>>
+8<<< >>> 9<<< abcdefghi >>> 40<<< 123456789 >>>
+41<<< XYZXYZXYZ abcabcab >>> 42<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 44<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 5<<< >>>
+6<<< >>> 7<<< >>> 8<<< >>>
+9<<< >>> 50<<< >>> 1<<< >>>
+2<<< >>> 3<<< >>> 4<<< >>>
+55<<< XYZXYZXYZ abcabcab >>> 56<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 9
+
+
+57<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 58<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 9<<< >>>
+60<<< 123456789 >>>
+ \ No newline at end of file
diff --git a/tests/pr/Jb3l17f-lm b/tests/pr/Jb3l17f-lm
new file mode 100644
index 0000000..4736554
--- /dev/null
+++ b/tests/pr/Jb3l17f-lm
@@ -0,0 +1,54 @@
+-- Date/Time -- x Page 1
+
+
+1<<< -Test: FF's in Text >>> 6<<< -Arangements: One Empty Page >>> 1<<< >>>
+2<<< -b -3 / -a -3 / ... >>> 7<<< \f\f\n; text\f\n\ftext; \f\ftext; >>> 2<<< >>>
+3<<< >>> 8<<< f\f\n; \f\n\f\n; >>> 3<<< truncation before FF; r_r_o_l-test: >>>
+4<<< 123456789 123456789 123456789 12345678 >>> 9<<< >>> 14<<< 123456789 123456789 123456789 >>>
+ 10<<< >>>
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+15<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 20<<< >>> 5<<< >>>
+16<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 1<<< >>> 6<<< >>>
+7<<< >>> 27<<< truncation before FF; (r_l-test): >>>
+8<<< >>> 28<<< trunc
+9<<< >>> 4<<< >>>
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+29<<<xyzxyzxyz XYZXYZXYZ abcabcab >>> 4<<< >>> 9<<< abcdefghi >>>
+30<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 5<<< >>> 40<<< 123456789 >>>
+1<<< >>> 6<<< >>> 41<<< XYZXYZXYZ abcabcab >>>
+2<<< abcdefghi >>> 7<<< >>> 42<<< 123456789 abcdefghi ABCDEDFHI >>>
+3<<< >>> 8<<< >>>
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 8<<< >>> 3<<< >>>
+44<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 9<<< >>> 4<<< >>>
+5<<< >>> 50<<< >>> 55<<< XYZXYZXYZ abcabcab >>>
+6<<< >>> 1<<< >>> 56<<< 123456789 abcdefghi ABCDEDFHI >>>
+7<<< >>> 2<<< >>>
+ -- Date/Time -- x Page 9
+
+
+57<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 9<<< >>> 60<<< 123456789 >>>
+58<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+ \ No newline at end of file
diff --git a/tests/pr/Jml17f-lm-lo b/tests/pr/Jml17f-lm-lo
new file mode 100644
index 0000000..84c107e
--- /dev/null
+++ b/tests/pr/Jml17f-lm-lo
@@ -0,0 +1,118 @@
+-- Date/Time -- x Page 1
+
+
+1<<< -Test: FF's in Text >>> 1::: Test-INPUT: "Without FF set by Hand" :::
+2<<< -b -3 / -a -3 / ... >>> 2::: Options -b -3 [+2|+3] [-l 15|8] [-f] :::
+3<<< >>> 3::: Options -a -3 [+2|+3] [-l 15|8] [-f] :::
+4<<< 123456789 123456789 123456789 12345678 >>> 4::: Options [+2|+3] [-l 24|17] [-f] :::
+ 5::: :::
+6<<< -Arangements: One Empty Page >>> 6::: -------------------------------------------- :::
+7<<< \f\f\n; text\f\n\ftext; \f\ftext; >>> 7::: 789 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+8<<< f\f\n; \f\n\f\n; >>> 8::: 3 Columns downwards, across, ...: :::
+9<<< >>> 9::: With columns use <= 5 text lines/page, :::
+10<<< >>> 10::: without -f e.g.: -l 15 = total lines/page, :::
+1<<< >>> 1::: with -f e.g. : -l 8 -f :::
+2<<< >>> 2::: :::
+3<<< truncation before FF; r_r_o_l-test: >>> 3::: line truncation before new page; r_r_o_l-test: :::
+14<<< 123456789 123456789 123456789 >>> 14::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ -- Date/Time -- x Page 2
+
+
+ 15::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+ 16::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+ 7::: 12345678 :::
+ 8::: 12345678 :::
+ 9::: 3456789 ab :::
+ 20::: DEFGHI 123 :::
+ 21::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ 2::: 12345678 :::
+ 3::: 12345678 :::
+ 4::: 12345678 :::
+ 5::: 12345678 :::
+ 6::: 12345678 :::
+ 27::: no truncation before nwe page; (r_l-test): :::
+ 28::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ -- Date/Time -- x Page 3
+
+
+15<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 29::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+16<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 30::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+7<<< >>> 1::: 12345678 :::
+8<<< >>> 2::: 3456789 abcdefghi :::
+9<<< >>> 3::: 12345678 :::
+20<<< >>> 4::: 12345678 :::
+1<<< >>> 35::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ 6::: 12345678 :::
+ 7::: 12345678 :::
+4<<< >>> 8::: 12345678 :::
+5<<< >>> 9::: 3456789 abcdefghi :::
+6<<< >>> 40::: DEFGHI 123456789 :::
+27<<< truncation before FF; (r_l-test): >>> 41::: yzxyzxyz XYZXYZXYZ abcabcab :::
+28<<< trunc 42::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ -- Date/Time -- x Page 4
+
+
+ 43::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+ 44::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+ 5::: 12345678 :::
+ 6::: 12345678 :::
+ 7::: 12345678 :::
+ 8::: 12345678 :::
+ 49::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ 50::: 12345678 :::
+ 1::: 12345678 :::
+ 2::: 12345678 :::
+ 3::: 12345678 :::
+ 4::: 12345678 :::
+ 55::: yzxyzxyz XYZXYZXYZ abcabcab :::
+ 56::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ -- Date/Time -- x Page 5
+
+
+29<<<xyzxyzxyz XYZXYZXYZ abcabcab >>> 57::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+30<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 58::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+1<<< >>> 9::: 12345678 :::
+2<<< abcdefghi >>> 60::: DEFGHI 123456789 :::
+3<<< >>> 1::: :::
+4<<< >>> 2::: :::
+5<<< >>> 3::: ------- EOF -------- EOF -------- EOF ------- EOF ------- EOF ------- EOF :::
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< abcdefghi >>>
+40<<< 123456789 >>>
+41<<< XYZXYZXYZ abcabcab >>>
+42<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+44<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< >>>
+50<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< >>>
+4<<< >>>
+55<<< XYZXYZXYZ abcabcab >>>
+56<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 9
+
+
+57<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+58<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+9<<< >>>
+60<<< 123456789 >>>
+ \ No newline at end of file
diff --git a/tests/pr/Makefile.am b/tests/pr/Makefile.am
new file mode 100644
index 0000000..f24cc94
--- /dev/null
+++ b/tests/pr/Makefile.am
@@ -0,0 +1,157 @@
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+##test-files-begin
+x = pr
+explicit = 0F 0FF 0FFnt 0FFt 0FnFnt 0FnFt 0Fnt 0Ft 2-S_f-t_notab 2-Sf-t_notab \
+2f-t_notab 2s_f-t_notab 2s_w60f-t_nota 2sf-t_notab 2sw60f-t_notab \
+2w60f-t_notab 3-0F 3-5l17f-t 3-FF 3a2l17-FF 3a3f-0F 3a3l15-t 3a3l8f-t \
+3b2l17-FF 3b3f-0F 3b3f-0FF 3b3f-FF 3b3l15-t 3b3l8f-t 3f-0F 3f-FF 3l17f-t \
+3l24-t 3ml17f-t 3ml24-FF 3ml24-t 3ml24-t-FF 4-7l24-FF 4l24-FF FF FFn FFtn \
+FnFn Ja3l17f-lm Jb3l17f-lm Jml17f-lm-lo W-72l17f-ll W20l17f-ll W26l17f-ll \
+W27l17f-ll W28l17f-ll W35Ja3l17f-lm W35Jb3l17f-lm W35Jml17f-lmlo W35a3l17f-lm \
+W35b3l17f-lm W35ml17f-lm-lo W72Jl17f-ll a2l15-FF a2l17-FF a3-0F a3f-0F \
+a3f-0FF a3f-FF a3l15-t a3l17f-lm a3l8f-t b2l15-FF b2l17-FF b3-0F b3f-0F \
+b3f-0FF b3f-FF b3l15-t b3l17f-lm b3l8f-t l17f-t l24-FF l24-t loli ml17f-0F \
+ml17f-lm-lo ml17f-t ml17f-t-0F ml20-FF-t ml24-FF ml24-t ml24-t-FF \
+n+2-5l17f-0FF n+2l17f-0FF n+2l17f-bl n+3-7l24-FF n+3l17f-0FF n+3l17f-bl \
+n+3ml13f-bl-FF n+3ml17f-bl-tn n+3ml17f-tn-bl n+4-8a2l17-FF n+4b2l10f-0FF \
+n+5-8b3l10f-FF n+5a3l6f-0FF n+6a2l17-FF n+6b3l6f-FF n+7l24-FF n+8l20-FF \
+nJml17f-lmlmlo nJml17f-lmlolm nN1+3l17f-bl nN15l17f-bl nSml13-bl-FF \
+nSml13-t-t-FF nSml13-t-tFFFF nSml17-bl-FF nSml17-t-t-FF nSml17-t-tFFFF \
+nl17f-bl o3Jml17f-lm-lo o3a3Sl17f-tn o3a3Snl17f-tn o3a3l17f-tn o3b3Sl17f-tn \
+o3b3Snl17f-tn o3b3l17f-tn o3mSl17f-bl-tn o3mSnl17fbltn o3ml17f-bl-tn t-0FF \
+t-FF t-bl t-t tFFn tFFt tFFt-bl tFFt-ll tFFt-lm tFnFt t_notab t_tab t_tab_ \
+ta3-0FF ta3-FF tb3-0FF tb3-FF tn tn2e5o3-t_tab tn2e8-t_tab tn2e8o3-t_tab \
+tn_2e8-t_tab tn_2e8S-t_tab tne8-t_tab tne8o3-t_tab tt-0FF tt-FF tt-bl tt-t \
+tta3-0FF tta3-FF ttb3-0FF ttb3-FF w72l17f-ll
+maint_gen = i-opt-a.I i-opt-a.X i-opt-b.I i-opt-b.X ncut-a.I ncut-a.X \
+ncut-b.I ncut-b.X margin-0.I margin-0.X dbl-sp-a.I dbl-sp-a.X dbl-sp-b.I \
+dbl-sp-b.X narrow-1.I narrow-1.X col-last.I col-last.X col-02.I col-02.X \
+col-02.C.I col-02.C.X col-2.I col-2.X col-2.C.I col-2.C.X col-long.I \
+col-long.X col-long.C.I col-long.C.X col-0.I col-0.X col-0.C.I col-0.C.X \
+col-inval.I col-inval.X col-inval.C.I col-inval.C.X neg-page.I neg-page.X
+run_gen = 1a.O 1a.E 1b.O 1b.E 1c.O 1c.E 1d.O 1d.E 1e.O 1e.E 1e.C.O 1e.C.E \
+1f.O 1f.E 1f.C.O 1f.C.E 1g.O 1g.E 1g.C.O 1g.C.E 1h.O 1h.E 1h.C.O 1h.C.E 1i.O \
+1i.E 1i.C.O 1i.C.E 1j.O 1j.E 1j.C.O 1j.C.E 1k.O 1k.E 1k.C.O 1k.C.E 1l.O 1l.E \
+1l.C.O 1l.C.E 2a.O 2a.E 2b.O 2b.E 2c.O 2c.E 2c.C.O 2c.C.E 2d.O 2d.E 2d.C.O \
+2d.C.E 2e.O 2e.E 2e.C.O 2e.C.E 2f.O 2f.E 2f.C.O 2f.C.E 2g.O 2g.E 2g.C.O \
+2g.C.E 2h.O 2h.E 2h.C.O 2h.C.E 2i.O 2i.E 2i.C.O 2i.C.E 2j.O 2j.E 2j.C.O \
+2j.C.E 3a.O 3a.E 3b.O 3b.E 3c.O 3c.E 3d.O 3d.E 3e.O 3e.E 3e.C.O 3e.C.E 3f.O \
+3f.E 3f.C.O 3f.C.E 3g.O 3g.E 3g.C.O 3g.C.E 3h.O 3h.E 3h.C.O 3h.C.E 3i.O 3i.E \
+3i.C.O 3i.C.E 3j.O 3j.E 3j.C.O 3j.C.E 3k.O 3k.E 3k.C.O 3k.C.E 3l.O 3l.E \
+3l.C.O 3l.C.E 3m.O 3m.E 3m.C.O 3m.C.E 3la.O 3la.E 3lb.O 3lb.E 3lc.O 3lc.E \
+3ld.O 3ld.E 3le.O 3le.E 3lf.O 3lf.E 3aa.O 3aa.E 3aa.C.O 3aa.C.E 3ab.O 3ab.E \
+3ab.C.O 3ab.C.E 3ac.O 3ac.E 3ac.C.O 3ac.C.E 3ad.O 3ad.E 3ad.C.O 3ad.C.E 3ae.O \
+3ae.E 3ae.C.O 3ae.C.E 3af.O 3af.E 3af.C.O 3af.C.E 3ag.O 3ag.E 3ag.C.O 3ag.C.E \
+3ah.O 3ah.E 3ah.C.O 3ah.C.E 3ai.O 3ai.E 3ai.C.O 3ai.C.E 3aj.O 3aj.E 3aj.C.O \
+3aj.C.E 3ak.O 3ak.E 3ak.C.O 3ak.C.E 3ba.O 3ba.E 3ba.C.O 3ba.C.E 3bb.O 3bb.E \
+3bb.C.O 3bb.C.E 3bc.O 3bc.E 3bc.C.O 3bc.C.E 3bd.O 3bd.E 3bd.C.O 3bd.C.E 3be.O \
+3be.E 3be.C.O 3be.C.E 3bf.O 3bf.E 3bf.C.O 3bf.C.E 3bg.O 3bg.E 3bg.C.O 3bg.C.E \
+3bh.O 3bh.E 3bh.C.O 3bh.C.E 3bi.O 3bi.E 3bi.C.O 3bi.C.E 3bj.O 3bj.E 3bj.C.O \
+3bj.C.E 3bk.O 3bk.E 3bk.C.O 3bk.C.E 3Pa.O 3Pa.E 3Pb.O 3Pb.E 3Pc.O 3Pc.E 3Pd.O \
+3Pd.E 3Pe.O 3Pe.E 3Pf.O 3Pf.E 3Pg.O 3Pg.E 3Paa.O 3Paa.E 3Paa.C.O 3Paa.C.E \
+3Pab.O 3Pab.E 3Pab.C.O 3Pab.C.E 3Pac.O 3Pac.E 3Pac.C.O 3Pac.C.E 3Pad.O 3Pad.E \
+3Pad.C.O 3Pad.C.E 3Pae.O 3Pae.E 3Pae.C.O 3Pae.C.E 3Paf.O 3Paf.E 3Paf.C.O \
+3Paf.C.E 3Pba.O 3Pba.E 3Pba.C.O 3Pba.C.E 3Pbb.O 3Pbb.E 3Pbb.C.O 3Pbb.C.E \
+3Pbc.O 3Pbc.E 3Pbc.C.O 3Pbc.C.E 3Pbd.O 3Pbd.E 3Pbd.C.O 3Pbd.C.E 3Pbe.O 3Pbe.E \
+3Pbe.C.O 3Pbe.C.E 3Pbf.O 3Pbf.E 3Pbf.C.O 3Pbf.C.E 4a.O 4a.E 4b.O 4b.E 4c.O \
+4c.E 4d.O 4d.E 4e.O 4e.E 4f.O 4f.E 4f.C.O 4f.C.E 4g.O 4g.E 4g.C.O 4g.C.E 4h.O \
+4h.E 4h.C.O 4h.C.E 4i.O 4i.E 4i.C.O 4i.C.E 4j.O 4j.E 4j.C.O 4j.C.E 4k.O 4k.E \
+4k.C.O 4k.C.E 4l.O 4l.E 4l.C.O 4l.C.E 4m.O 4m.E 4m.C.O 4m.C.E 5a.O 5a.E 5b.O \
+5b.E 5c.O 5c.E 5d.O 5d.E 5e.O 5e.E 5f.O 5f.E 5g.O 5g.E 5ma.O 5ma.E 5mb.O \
+5mb.E 5mc.O 5mc.E 5md.O 5md.E 5Pma.O 5Pma.E 5Pmb.O 5Pmb.E 5Pmc.O 5Pmc.E 6a.O \
+6a.E 6b.O 6b.E 6c.O 6c.E 6d.O 6d.E 6e.O 6e.E 6f.O 6f.E 6g.O 6g.E 6aa.O 6aa.E \
+6aa.C.O 6aa.C.E 6ab.O 6ab.E 6ab.C.O 6ab.C.E 6ac.O 6ac.E 6ac.C.O 6ac.C.E 6ba.O \
+6ba.E 6ba.C.O 6ba.C.E 6bb.O 6bb.E 6bb.C.O 6bb.C.E 6bc.O 6bc.E 6bc.C.O 6bc.C.E \
+7a.O 7a.E 7b.O 7b.E 7c.O 7c.E 7d.O 7d.E 7e.O 7e.E 7f.O 7f.E 7g.O 7g.E 7aa.O \
+7aa.E 7aa.C.O 7aa.C.E 7ab.O 7ab.E 7ab.C.O 7ab.C.E 7ac.O 7ac.E 7ac.C.O 7ac.C.E \
+7ba.O 7ba.E 7ba.C.O 7ba.C.E 7bb.O 7bb.E 7bb.C.O 7bb.C.E 7bc.O 7bc.E 7bc.C.O \
+7bc.C.E 9a.O 9a.E 9b.O 9b.E 9Pa.O 9Pa.E 9Pb.O 9Pb.E 9Pc.O 9Pc.E 9Pe.O 9Pe.E \
+9Pf.O 9Pf.E 9Pg.O 9Pg.E 9Ph.O 9Ph.E 9Pi.O 9Pi.E 9Pj.O 9Pj.E 9Pk.O 9Pk.E 9Pl.O \
+9Pl.E 9Pm.O 9Pm.E 9Pn.O 9Pn.E 9Po.O 9Po.E 9Pp.O 9Pp.E 9Pq.O 9Pq.E 9Pr.O 9Pr.E \
+9Ps.O 9Ps.E 9Pt.O 9Pt.E 9Paa.O 9Paa.E 9Paa.C.O 9Paa.C.E 9Pab.O 9Pab.E \
+9Pab.C.O 9Pab.C.E 9Pac.O 9Pac.E 9Pac.C.O 9Pac.C.E 9Pad.O 9Pad.E 9Pad.C.O \
+9Pad.C.E 9Pae.O 9Pae.E 9Pae.C.O 9Pae.C.E 9Paf.O 9Paf.E 9Paf.C.O 9Paf.C.E \
+9Pag.O 9Pag.E 9Pag.C.O 9Pag.C.E 9Pah.O 9Pah.E 9Pah.C.O 9Pah.C.E 9Pai.O 9Pai.E \
+9Pai.C.O 9Pai.C.E 9Paj.O 9Paj.E 9Paj.C.O 9Paj.C.E 9Pak.O 9Pak.E 9Pak.C.O \
+9Pak.C.E 9Pba.O 9Pba.E 9Pba.C.O 9Pba.C.E 9Pbb.O 9Pbb.E 9Pbb.C.O 9Pbb.C.E \
+9Pbc.O 9Pbc.E 9Pbc.C.O 9Pbc.C.E 9Pbd.O 9Pbd.E 9Pbd.C.O 9Pbd.C.E 9Pbe.O 9Pbe.E \
+9Pbe.C.O 9Pbe.C.E 9Pbf.O 9Pbf.E 9Pbf.C.O 9Pbf.C.E 9Pbg.O 9Pbg.E 9Pbg.C.O \
+9Pbg.C.E 9Pbh.O 9Pbh.E 9Pbh.C.O 9Pbh.C.E 9Pbi.O 9Pbi.E 9Pbi.C.O 9Pbi.C.E \
+9Pbj.O 9Pbj.E 9Pbj.C.O 9Pbj.C.E 9Pbk.O 9Pbk.E 9Pbk.C.O 9Pbk.C.E 9Pma.O 9Pma.E \
+9Pmb.O 9Pmb.E 9Pmc.O 9Pmc.E 10wa.O 10wa.E 10wb.O 10wb.E 10wc.O 10wc.E 10wd.O \
+10wd.E 10we.O 10we.E 10wf.O 10wf.E 10wg.O 10wg.E 10wh.O 10wh.E 10ma.O 10ma.E \
+10mb.O 10mb.E 10mc.O 10mc.E 10md.O 10md.E 10me.O 10me.E 10mf.O 10mf.E 10mg.O \
+10mg.E 10mh.O 10mh.E 10aa.O 10aa.E 10aa.C.O 10aa.C.E 10ab.O 10ab.E 10ab.C.O \
+10ab.C.E 10ac.O 10ac.E 10ac.C.O 10ac.C.E 10ad.O 10ad.E 10ad.C.O 10ad.C.E \
+10ba.O 10ba.E 10ba.C.O 10ba.C.E 10bb.O 10bb.E 10bb.C.O 10bb.C.E 10bc.O 10bc.E \
+10bc.C.O 10bc.C.E 10bd.O 10bd.E 10bd.C.O 10bd.C.E 11sa.O 11sa.E 11sb.O 11sb.E \
+11se.O 11se.E 11sf.O 11sf.E 11sg.O 11sg.E 11sh.O 11sh.E 12aa.O 12aa.E \
+12aa.C.O 12aa.C.E 12ab.O 12ab.E 12ab.C.O 12ab.C.E 12ac.O 12ac.E 12ac.C.O \
+12ac.C.E 12ba.O 12ba.E 12ba.C.O 12ba.C.E 12bb.O 12bb.E 12bb.C.O 12bb.C.E \
+12bc.O 12bc.E 12bc.C.O 12bc.C.E 12ma.O 12ma.E 12mb.O 12mb.E 12mc.O 12mc.E \
+12md.O 12md.E 13a.O 13a.E 13b.O 13b.E 13ba.O 13ba.E 13ba.C.O 13ba.C.E 13bb.O \
+13bb.E 13bb.C.O 13bb.C.E 13bc.O 13bc.E 13bc.C.O 13bc.C.E 13bd.O 13bd.E \
+13bd.C.O 13bd.C.E 13be.O 13be.E 13be.C.O 13be.C.E 13bf.O 13bf.E 13bf.C.O \
+13bf.C.E 14a.O 14a.E 14a.C.O 14a.C.E 14b.O 14b.E 14b.C.O 14b.C.E 14c.O 14c.E \
+14c.C.O 14c.C.E 14d.O 14d.E 14d.C.O 14d.C.E 14e.O 14e.E 14e.C.O 14e.C.E 14f.O \
+14f.E 14f.C.O 14f.C.E 14g.O 14g.E 14g.C.O 14g.C.E 14h.O 14h.E 14h.C.O 14h.C.E \
+14i.O 14i.E 14i.C.O 14i.C.E 14j.O 14j.E 14j.C.O 14j.C.E 14k.O 14k.E 14k.C.O \
+14k.C.E 14l.O 14l.E 14l.C.O 14l.C.E 14m.O 14m.E 14m.C.O 14m.C.E i-opt-a.O \
+i-opt-a.E i-opt-b.O i-opt-b.E ncut-a.O ncut-a.E ncut-b.O ncut-b.E margin-0.O \
+margin-0.E dbl-sp-a.O dbl-sp-a.E dbl-sp-b.O dbl-sp-b.E narrow-1.O narrow-1.E \
+col-last.O col-last.E col-02.O col-02.E col-02.C.O col-02.C.E col-2.O col-2.E \
+col-2.C.O col-2.C.E col-long.O col-long.E col-long.C.O col-long.C.E col-0.O \
+col-0.E col-0.C.O col-0.C.E col-inval.O col-inval.E col-inval.C.O \
+col-inval.C.E neg-page.O neg-page.E
+##test-files-end
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+
+TESTS = $x-tests
+
+mk_script = $(srcdir)/../mk-script
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
diff --git a/tests/pr/Makefile.in b/tests/pr/Makefile.in
new file mode 100644
index 0000000..da0078a
--- /dev/null
+++ b/tests/pr/Makefile.in
@@ -0,0 +1,868 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/pr
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SCRIPTS = $(noinst_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+x = pr
+explicit = 0F 0FF 0FFnt 0FFt 0FnFnt 0FnFt 0Fnt 0Ft 2-S_f-t_notab 2-Sf-t_notab \
+2f-t_notab 2s_f-t_notab 2s_w60f-t_nota 2sf-t_notab 2sw60f-t_notab \
+2w60f-t_notab 3-0F 3-5l17f-t 3-FF 3a2l17-FF 3a3f-0F 3a3l15-t 3a3l8f-t \
+3b2l17-FF 3b3f-0F 3b3f-0FF 3b3f-FF 3b3l15-t 3b3l8f-t 3f-0F 3f-FF 3l17f-t \
+3l24-t 3ml17f-t 3ml24-FF 3ml24-t 3ml24-t-FF 4-7l24-FF 4l24-FF FF FFn FFtn \
+FnFn Ja3l17f-lm Jb3l17f-lm Jml17f-lm-lo W-72l17f-ll W20l17f-ll W26l17f-ll \
+W27l17f-ll W28l17f-ll W35Ja3l17f-lm W35Jb3l17f-lm W35Jml17f-lmlo W35a3l17f-lm \
+W35b3l17f-lm W35ml17f-lm-lo W72Jl17f-ll a2l15-FF a2l17-FF a3-0F a3f-0F \
+a3f-0FF a3f-FF a3l15-t a3l17f-lm a3l8f-t b2l15-FF b2l17-FF b3-0F b3f-0F \
+b3f-0FF b3f-FF b3l15-t b3l17f-lm b3l8f-t l17f-t l24-FF l24-t loli ml17f-0F \
+ml17f-lm-lo ml17f-t ml17f-t-0F ml20-FF-t ml24-FF ml24-t ml24-t-FF \
+n+2-5l17f-0FF n+2l17f-0FF n+2l17f-bl n+3-7l24-FF n+3l17f-0FF n+3l17f-bl \
+n+3ml13f-bl-FF n+3ml17f-bl-tn n+3ml17f-tn-bl n+4-8a2l17-FF n+4b2l10f-0FF \
+n+5-8b3l10f-FF n+5a3l6f-0FF n+6a2l17-FF n+6b3l6f-FF n+7l24-FF n+8l20-FF \
+nJml17f-lmlmlo nJml17f-lmlolm nN1+3l17f-bl nN15l17f-bl nSml13-bl-FF \
+nSml13-t-t-FF nSml13-t-tFFFF nSml17-bl-FF nSml17-t-t-FF nSml17-t-tFFFF \
+nl17f-bl o3Jml17f-lm-lo o3a3Sl17f-tn o3a3Snl17f-tn o3a3l17f-tn o3b3Sl17f-tn \
+o3b3Snl17f-tn o3b3l17f-tn o3mSl17f-bl-tn o3mSnl17fbltn o3ml17f-bl-tn t-0FF \
+t-FF t-bl t-t tFFn tFFt tFFt-bl tFFt-ll tFFt-lm tFnFt t_notab t_tab t_tab_ \
+ta3-0FF ta3-FF tb3-0FF tb3-FF tn tn2e5o3-t_tab tn2e8-t_tab tn2e8o3-t_tab \
+tn_2e8-t_tab tn_2e8S-t_tab tne8-t_tab tne8o3-t_tab tt-0FF tt-FF tt-bl tt-t \
+tta3-0FF tta3-FF ttb3-0FF ttb3-FF w72l17f-ll
+
+maint_gen = i-opt-a.I i-opt-a.X i-opt-b.I i-opt-b.X ncut-a.I ncut-a.X \
+ncut-b.I ncut-b.X margin-0.I margin-0.X dbl-sp-a.I dbl-sp-a.X dbl-sp-b.I \
+dbl-sp-b.X narrow-1.I narrow-1.X col-last.I col-last.X col-02.I col-02.X \
+col-02.C.I col-02.C.X col-2.I col-2.X col-2.C.I col-2.C.X col-long.I \
+col-long.X col-long.C.I col-long.C.X col-0.I col-0.X col-0.C.I col-0.C.X \
+col-inval.I col-inval.X col-inval.C.I col-inval.C.X neg-page.I neg-page.X
+
+run_gen = 1a.O 1a.E 1b.O 1b.E 1c.O 1c.E 1d.O 1d.E 1e.O 1e.E 1e.C.O 1e.C.E \
+1f.O 1f.E 1f.C.O 1f.C.E 1g.O 1g.E 1g.C.O 1g.C.E 1h.O 1h.E 1h.C.O 1h.C.E 1i.O \
+1i.E 1i.C.O 1i.C.E 1j.O 1j.E 1j.C.O 1j.C.E 1k.O 1k.E 1k.C.O 1k.C.E 1l.O 1l.E \
+1l.C.O 1l.C.E 2a.O 2a.E 2b.O 2b.E 2c.O 2c.E 2c.C.O 2c.C.E 2d.O 2d.E 2d.C.O \
+2d.C.E 2e.O 2e.E 2e.C.O 2e.C.E 2f.O 2f.E 2f.C.O 2f.C.E 2g.O 2g.E 2g.C.O \
+2g.C.E 2h.O 2h.E 2h.C.O 2h.C.E 2i.O 2i.E 2i.C.O 2i.C.E 2j.O 2j.E 2j.C.O \
+2j.C.E 3a.O 3a.E 3b.O 3b.E 3c.O 3c.E 3d.O 3d.E 3e.O 3e.E 3e.C.O 3e.C.E 3f.O \
+3f.E 3f.C.O 3f.C.E 3g.O 3g.E 3g.C.O 3g.C.E 3h.O 3h.E 3h.C.O 3h.C.E 3i.O 3i.E \
+3i.C.O 3i.C.E 3j.O 3j.E 3j.C.O 3j.C.E 3k.O 3k.E 3k.C.O 3k.C.E 3l.O 3l.E \
+3l.C.O 3l.C.E 3m.O 3m.E 3m.C.O 3m.C.E 3la.O 3la.E 3lb.O 3lb.E 3lc.O 3lc.E \
+3ld.O 3ld.E 3le.O 3le.E 3lf.O 3lf.E 3aa.O 3aa.E 3aa.C.O 3aa.C.E 3ab.O 3ab.E \
+3ab.C.O 3ab.C.E 3ac.O 3ac.E 3ac.C.O 3ac.C.E 3ad.O 3ad.E 3ad.C.O 3ad.C.E 3ae.O \
+3ae.E 3ae.C.O 3ae.C.E 3af.O 3af.E 3af.C.O 3af.C.E 3ag.O 3ag.E 3ag.C.O 3ag.C.E \
+3ah.O 3ah.E 3ah.C.O 3ah.C.E 3ai.O 3ai.E 3ai.C.O 3ai.C.E 3aj.O 3aj.E 3aj.C.O \
+3aj.C.E 3ak.O 3ak.E 3ak.C.O 3ak.C.E 3ba.O 3ba.E 3ba.C.O 3ba.C.E 3bb.O 3bb.E \
+3bb.C.O 3bb.C.E 3bc.O 3bc.E 3bc.C.O 3bc.C.E 3bd.O 3bd.E 3bd.C.O 3bd.C.E 3be.O \
+3be.E 3be.C.O 3be.C.E 3bf.O 3bf.E 3bf.C.O 3bf.C.E 3bg.O 3bg.E 3bg.C.O 3bg.C.E \
+3bh.O 3bh.E 3bh.C.O 3bh.C.E 3bi.O 3bi.E 3bi.C.O 3bi.C.E 3bj.O 3bj.E 3bj.C.O \
+3bj.C.E 3bk.O 3bk.E 3bk.C.O 3bk.C.E 3Pa.O 3Pa.E 3Pb.O 3Pb.E 3Pc.O 3Pc.E 3Pd.O \
+3Pd.E 3Pe.O 3Pe.E 3Pf.O 3Pf.E 3Pg.O 3Pg.E 3Paa.O 3Paa.E 3Paa.C.O 3Paa.C.E \
+3Pab.O 3Pab.E 3Pab.C.O 3Pab.C.E 3Pac.O 3Pac.E 3Pac.C.O 3Pac.C.E 3Pad.O 3Pad.E \
+3Pad.C.O 3Pad.C.E 3Pae.O 3Pae.E 3Pae.C.O 3Pae.C.E 3Paf.O 3Paf.E 3Paf.C.O \
+3Paf.C.E 3Pba.O 3Pba.E 3Pba.C.O 3Pba.C.E 3Pbb.O 3Pbb.E 3Pbb.C.O 3Pbb.C.E \
+3Pbc.O 3Pbc.E 3Pbc.C.O 3Pbc.C.E 3Pbd.O 3Pbd.E 3Pbd.C.O 3Pbd.C.E 3Pbe.O 3Pbe.E \
+3Pbe.C.O 3Pbe.C.E 3Pbf.O 3Pbf.E 3Pbf.C.O 3Pbf.C.E 4a.O 4a.E 4b.O 4b.E 4c.O \
+4c.E 4d.O 4d.E 4e.O 4e.E 4f.O 4f.E 4f.C.O 4f.C.E 4g.O 4g.E 4g.C.O 4g.C.E 4h.O \
+4h.E 4h.C.O 4h.C.E 4i.O 4i.E 4i.C.O 4i.C.E 4j.O 4j.E 4j.C.O 4j.C.E 4k.O 4k.E \
+4k.C.O 4k.C.E 4l.O 4l.E 4l.C.O 4l.C.E 4m.O 4m.E 4m.C.O 4m.C.E 5a.O 5a.E 5b.O \
+5b.E 5c.O 5c.E 5d.O 5d.E 5e.O 5e.E 5f.O 5f.E 5g.O 5g.E 5ma.O 5ma.E 5mb.O \
+5mb.E 5mc.O 5mc.E 5md.O 5md.E 5Pma.O 5Pma.E 5Pmb.O 5Pmb.E 5Pmc.O 5Pmc.E 6a.O \
+6a.E 6b.O 6b.E 6c.O 6c.E 6d.O 6d.E 6e.O 6e.E 6f.O 6f.E 6g.O 6g.E 6aa.O 6aa.E \
+6aa.C.O 6aa.C.E 6ab.O 6ab.E 6ab.C.O 6ab.C.E 6ac.O 6ac.E 6ac.C.O 6ac.C.E 6ba.O \
+6ba.E 6ba.C.O 6ba.C.E 6bb.O 6bb.E 6bb.C.O 6bb.C.E 6bc.O 6bc.E 6bc.C.O 6bc.C.E \
+7a.O 7a.E 7b.O 7b.E 7c.O 7c.E 7d.O 7d.E 7e.O 7e.E 7f.O 7f.E 7g.O 7g.E 7aa.O \
+7aa.E 7aa.C.O 7aa.C.E 7ab.O 7ab.E 7ab.C.O 7ab.C.E 7ac.O 7ac.E 7ac.C.O 7ac.C.E \
+7ba.O 7ba.E 7ba.C.O 7ba.C.E 7bb.O 7bb.E 7bb.C.O 7bb.C.E 7bc.O 7bc.E 7bc.C.O \
+7bc.C.E 9a.O 9a.E 9b.O 9b.E 9Pa.O 9Pa.E 9Pb.O 9Pb.E 9Pc.O 9Pc.E 9Pe.O 9Pe.E \
+9Pf.O 9Pf.E 9Pg.O 9Pg.E 9Ph.O 9Ph.E 9Pi.O 9Pi.E 9Pj.O 9Pj.E 9Pk.O 9Pk.E 9Pl.O \
+9Pl.E 9Pm.O 9Pm.E 9Pn.O 9Pn.E 9Po.O 9Po.E 9Pp.O 9Pp.E 9Pq.O 9Pq.E 9Pr.O 9Pr.E \
+9Ps.O 9Ps.E 9Pt.O 9Pt.E 9Paa.O 9Paa.E 9Paa.C.O 9Paa.C.E 9Pab.O 9Pab.E \
+9Pab.C.O 9Pab.C.E 9Pac.O 9Pac.E 9Pac.C.O 9Pac.C.E 9Pad.O 9Pad.E 9Pad.C.O \
+9Pad.C.E 9Pae.O 9Pae.E 9Pae.C.O 9Pae.C.E 9Paf.O 9Paf.E 9Paf.C.O 9Paf.C.E \
+9Pag.O 9Pag.E 9Pag.C.O 9Pag.C.E 9Pah.O 9Pah.E 9Pah.C.O 9Pah.C.E 9Pai.O 9Pai.E \
+9Pai.C.O 9Pai.C.E 9Paj.O 9Paj.E 9Paj.C.O 9Paj.C.E 9Pak.O 9Pak.E 9Pak.C.O \
+9Pak.C.E 9Pba.O 9Pba.E 9Pba.C.O 9Pba.C.E 9Pbb.O 9Pbb.E 9Pbb.C.O 9Pbb.C.E \
+9Pbc.O 9Pbc.E 9Pbc.C.O 9Pbc.C.E 9Pbd.O 9Pbd.E 9Pbd.C.O 9Pbd.C.E 9Pbe.O 9Pbe.E \
+9Pbe.C.O 9Pbe.C.E 9Pbf.O 9Pbf.E 9Pbf.C.O 9Pbf.C.E 9Pbg.O 9Pbg.E 9Pbg.C.O \
+9Pbg.C.E 9Pbh.O 9Pbh.E 9Pbh.C.O 9Pbh.C.E 9Pbi.O 9Pbi.E 9Pbi.C.O 9Pbi.C.E \
+9Pbj.O 9Pbj.E 9Pbj.C.O 9Pbj.C.E 9Pbk.O 9Pbk.E 9Pbk.C.O 9Pbk.C.E 9Pma.O 9Pma.E \
+9Pmb.O 9Pmb.E 9Pmc.O 9Pmc.E 10wa.O 10wa.E 10wb.O 10wb.E 10wc.O 10wc.E 10wd.O \
+10wd.E 10we.O 10we.E 10wf.O 10wf.E 10wg.O 10wg.E 10wh.O 10wh.E 10ma.O 10ma.E \
+10mb.O 10mb.E 10mc.O 10mc.E 10md.O 10md.E 10me.O 10me.E 10mf.O 10mf.E 10mg.O \
+10mg.E 10mh.O 10mh.E 10aa.O 10aa.E 10aa.C.O 10aa.C.E 10ab.O 10ab.E 10ab.C.O \
+10ab.C.E 10ac.O 10ac.E 10ac.C.O 10ac.C.E 10ad.O 10ad.E 10ad.C.O 10ad.C.E \
+10ba.O 10ba.E 10ba.C.O 10ba.C.E 10bb.O 10bb.E 10bb.C.O 10bb.C.E 10bc.O 10bc.E \
+10bc.C.O 10bc.C.E 10bd.O 10bd.E 10bd.C.O 10bd.C.E 11sa.O 11sa.E 11sb.O 11sb.E \
+11se.O 11se.E 11sf.O 11sf.E 11sg.O 11sg.E 11sh.O 11sh.E 12aa.O 12aa.E \
+12aa.C.O 12aa.C.E 12ab.O 12ab.E 12ab.C.O 12ab.C.E 12ac.O 12ac.E 12ac.C.O \
+12ac.C.E 12ba.O 12ba.E 12ba.C.O 12ba.C.E 12bb.O 12bb.E 12bb.C.O 12bb.C.E \
+12bc.O 12bc.E 12bc.C.O 12bc.C.E 12ma.O 12ma.E 12mb.O 12mb.E 12mc.O 12mc.E \
+12md.O 12md.E 13a.O 13a.E 13b.O 13b.E 13ba.O 13ba.E 13ba.C.O 13ba.C.E 13bb.O \
+13bb.E 13bb.C.O 13bb.C.E 13bc.O 13bc.E 13bc.C.O 13bc.C.E 13bd.O 13bd.E \
+13bd.C.O 13bd.C.E 13be.O 13be.E 13be.C.O 13be.C.E 13bf.O 13bf.E 13bf.C.O \
+13bf.C.E 14a.O 14a.E 14a.C.O 14a.C.E 14b.O 14b.E 14b.C.O 14b.C.E 14c.O 14c.E \
+14c.C.O 14c.C.E 14d.O 14d.E 14d.C.O 14d.C.E 14e.O 14e.E 14e.C.O 14e.C.E 14f.O \
+14f.E 14f.C.O 14f.C.E 14g.O 14g.E 14g.C.O 14g.C.E 14h.O 14h.E 14h.C.O 14h.C.E \
+14i.O 14i.E 14i.C.O 14i.C.E 14j.O 14j.E 14j.C.O 14j.C.E 14k.O 14k.E 14k.C.O \
+14k.C.E 14l.O 14l.E 14l.C.O 14l.C.E 14m.O 14m.E 14m.C.O 14m.C.E i-opt-a.O \
+i-opt-a.E i-opt-b.O i-opt-b.E ncut-a.O ncut-a.E ncut-b.O ncut-b.E margin-0.O \
+margin-0.E dbl-sp-a.O dbl-sp-a.E dbl-sp-b.O dbl-sp-b.E narrow-1.O narrow-1.E \
+col-last.O col-last.E col-02.O col-02.E col-02.C.O col-02.C.E col-2.O col-2.E \
+col-2.C.O col-2.C.E col-long.O col-long.E col-long.C.O col-long.C.E col-0.O \
+col-0.E col-0.C.O col-0.C.E col-inval.O col-inval.E col-inval.C.O \
+col-inval.C.E neg-page.O neg-page.E
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+TESTS = $x-tests
+mk_script = $(srcdir)/../mk-script
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/pr/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/pr/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(SCRIPTS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/pr/Test.pm b/tests/pr/Test.pm
new file mode 100644
index 0000000..c1fc49a
--- /dev/null
+++ b/tests/pr/Test.pm
@@ -0,0 +1,405 @@
+# -*-perl-*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+package Test;
+require 5.002;
+use strict;
+
+my @tv = (
+
+# -b option is no longer an official option. But it's still working to
+# get a downward compatibility. Now (version 1.19m or newer) -COLUMN
+# only is equivalent to -b -COLUMN.
+#
+# test_name options input-file-name(s) expected-output-group-file-name
+# expected-return-code
+# -------------------------------------------------------------------------
+# Following tests with "FF set" don't contain a complete set of all
+# combinations of options and FF-arrangements
+#
+# One FF at start of file (one empty page)
+['1a', '', [\'0Ft'], [\'0F'], 0],
+['1b', '', [\'0Fnt'], [\'0F'], 0],
+['1c', '+3', [\'0Ft'], [\'3-0F'], 0],
+['1d', '+3 -f', [\'0Ft'], [\'3f-0F'], 0],
+['1e', '-a -3', [\'0Ft'], [\'a3-0F'], 0],
+['1f', '-a -3 -f', [\'0Ft'], [\'a3f-0F'], 0],
+['1g', '-a -3 -f', [\'0Fnt'], [\'a3f-0F'], 0],
+['1h', '+3 -a -3 -f', [\'0Ft'], [\'3a3f-0F'], 0],
+['1i', '-b -3', [\'0Ft'], [\'b3-0F'], 0],
+['1j', '-b -3 -f', [\'0Ft'], [\'b3f-0F'], 0],
+['1k', '-b -3 -f', [\'0Fnt'], [\'b3f-0F'], 0],
+['1l', '+3 -b -3 -f', [\'0Ft'], [\'3b3f-0F'], 0],
+# Two FF at start of file (two empty page)
+['2a', '', [\'0FFt'], [\'0FF'], 0],
+['2b', '', [\'0FnFnt'], [\'0FF'], 0],
+['2c', '-a -3 -f', [\'0FFt'], [\'a3f-0FF'], 0],
+['2d', '-a -3 -f', [\'0FFnt'], [\'a3f-0FF'], 0],
+['2e', '-b -3 -f', [\'0FFt'], [\'b3f-0FF'], 0],
+['2f', '-b -3 -f', [\'0FFnt'], [\'b3f-0FF'], 0],
+['2g', '-b -3 -f', [\'0FnFt'], [\'b3f-0FF'], 0],
+['2h', '-b -3 -f', [\'0FnFnt'], [\'b3f-0FF'], 0],
+['2i', '+3 -b -3 -f', [\'0FFt'], [\'3b3f-0FF'], 0],
+['2j', '+3 -b -3 -f', [\'0FFnt'], [\'3b3f-0FF'], 0],
+#
+# FFs in text (none / one / two empty page(s))
+['3a', '', [\'FFn'], [\'FF'], 0],
+['3b', '', [\'FnFn'], [\'FF'], 0],
+['3c', '+3', [\'FFn'], [\'3-FF'], 0],
+['3d', '+3 -f', [\'FFn'], [\'3f-FF'], 0],
+['3e', '-a -3 -f', [\'FFn'], [\'a3f-FF'], 0],
+['3f', '-a -3 -f', [\'FFtn'], [\'a3f-FF'], 0],
+['3g', '-b -3 -f', [\'FFn'], [\'b3f-FF'], 0],
+['3h', '-b -3 -f', [\'FFtn'], [\'b3f-FF'], 0],
+['3i', '-b -3 -f', [\'FnFn'], [\'b3f-FF'], 0],
+['3j', '-b -3 -f', [\'tFFn'], [\'b3f-FF'], 0],
+['3k', '-b -3 -f', [\'tFnFt'], [\'b3f-FF'], 0],
+['3l', '+3 -b -3 -f', [\'FFn'], [\'3b3f-FF'], 0],
+['3m', '+3 -b -3 -f', [\'FFtn'], [\'3b3f-FF'], 0],
+# A full page printed (lines_left_on_page = 0) without a FF found.
+# Avoid an extra empty page if a FF follows in the next input line.
+['3la', '-l 24', [\'FFn'], [\'l24-FF'], 0],
+['3lb', '-l 24', [\'FFtn'], [\'l24-FF'], 0],
+['3lc', '-l 24', [\'FnFn'], [\'l24-FF'], 0],
+['3ld', '-l 24', [\'tFFn'], [\'l24-FF'], 0],
+['3le', '-l 24', [\'tFnFt'], [\'l24-FF'], 0],
+['3lf', '-l 24', [\'tFFt'], [\'l24-FF'], 0],
+['3aa', '-a -2 -l 17', [\'FFn'], [\'a2l17-FF'], 0],
+['3ab', '-a -2 -l 17', [\'FFtn'], [\'a2l17-FF'], 0],
+['3ac', '-a -2 -l 17', [\'FnFn'], [\'a2l17-FF'], 0],
+['3ad', '-a -2 -l 17', [\'tFFn'], [\'a2l17-FF'], 0],
+['3ae', '-a -2 -l 17', [\'tFnFt'], [\'a2l17-FF'], 0],
+['3af', '-a -2 -l 17', [\'tFFt'], [\'a2l17-FF'], 0],
+['3ag', '-a -2 -l 15', [\'FFn'], [\'a2l15-FF'], 0],
+['3ah', '-a -2 -l 15', [\'FFtn'], [\'a2l15-FF'], 0],
+['3ai', '-a -2 -l 15', [\'FnFn'], [\'a2l15-FF'], 0],
+['3aj', '-a -2 -l 15', [\'tFFn'], [\'a2l15-FF'], 0],
+['3ak', '-a -2 -l 15', [\'tFnFt'], [\'a2l15-FF'], 0],
+['3ba', '-b -2 -l 17', [\'FFn'], [\'b2l17-FF'], 0],
+['3bb', '-b -2 -l 17', [\'FFtn'], [\'b2l17-FF'], 0],
+['3bc', '-b -2 -l 17', [\'FnFn'], [\'b2l17-FF'], 0],
+['3bd', '-b -2 -l 17', [\'tFFn'], [\'b2l17-FF'], 0],
+['3be', '-b -2 -l 17', [\'tFnFt'], [\'b2l17-FF'], 0],
+['3bf', '-b -2 -l 17', [\'tFFt'], [\'b2l17-FF'], 0],
+['3bg', '-b -2 -l 15', [\'FFn'], [\'b2l15-FF'], 0],
+['3bh', '-b -2 -l 15', [\'FFtn'], [\'b2l15-FF'], 0],
+['3bi', '-b -2 -l 15', [\'FnFn'], [\'b2l15-FF'], 0],
+['3bj', '-b -2 -l 15', [\'tFFn'], [\'b2l15-FF'], 0],
+['3bk', '-b -2 -l 15', [\'tFnFt'], [\'b2l15-FF'], 0],
+['3Pa', '+4 -l 24', [\'FFn'], [\'4l24-FF'], 0],
+['3Pb', '+4 -l 24', [\'FFtn'], [\'4l24-FF'], 0],
+['3Pc', '+4 -l 24', [\'FnFn'], [\'4l24-FF'], 0],
+['3Pd', '+4 -l 24', [\'tFFn'], [\'4l24-FF'], 0],
+['3Pe', '+4 -l 24', [\'tFnFt'], [\'4l24-FF'], 0],
+['3Pf', '+4 -l 24', [\'tFFt'], [\'4l24-FF'], 0],
+['3Pg', '+4:7 -l 24', [\'tFFt'], [\'4-7l24-FF'], 0],
+['3Paa', '+3 -a -2 -l 17', [\'FFn'], [\'3a2l17-FF'], 0],
+['3Pab', '+3 -a -2 -l 17', [\'FFtn'], [\'3a2l17-FF'], 0],
+['3Pac', '+3 -a -2 -l 17', [\'FnFn'], [\'3a2l17-FF'], 0],
+['3Pad', '+3 -a -2 -l 17', [\'tFFn'], [\'3a2l17-FF'], 0],
+['3Pae', '+3 -a -2 -l 17', [\'tFnFt'], [\'3a2l17-FF'], 0],
+['3Paf', '+3 -a -2 -l 17', [\'tFFt'], [\'3a2l17-FF'], 0],
+['3Pba', '+3 -b -2 -l 17', [\'FFn'], [\'3b2l17-FF'], 0],
+['3Pbb', '+3 -b -2 -l 17', [\'FFtn'], [\'3b2l17-FF'], 0],
+['3Pbc', '+3 -b -2 -l 17', [\'FnFn'], [\'3b2l17-FF'], 0],
+['3Pbd', '+3 -b -2 -l 17', [\'tFFn'], [\'3b2l17-FF'], 0],
+['3Pbe', '+3 -b -2 -l 17', [\'tFnFt'], [\'3b2l17-FF'], 0],
+['3Pbf', '+3 -b -2 -l 17', [\'tFFt'], [\'3b2l17-FF'], 0],
+#
+# Without "FF set by hand"
+['4a', '-l 24', [\'tn'], [\'l24-t'], 0],
+['4b', '-l 17 -f', [\'tn'], [\'l17f-t'], 0],
+['4c', '+3 -l 24', [\'tn'], [\'3l24-t'], 0],
+['4d', '+3 -l 17 -f', [\'tn'], [\'3l17f-t'], 0],
+['4e', '+3:5 -l 17 -f', [\'tn'], [\'3-5l17f-t'], 0],
+['4f', '-a -3 -l 15', [\'tn'], [\'a3l15-t'], 0],
+['4g', '-a -3 -l 8 -f', [\'tn'], [\'a3l8f-t'], 0],
+['4h', '+3 -a -3 -l 15', [\'tn'], [\'3a3l15-t'], 0],
+['4i', '+3 -a -3 -l 8 -f', [\'tn'], [\'3a3l8f-t'], 0],
+['4j', '-b -3 -l 15', [\'tn'], [\'b3l15-t'], 0],
+['4k', '-b -3 -l 8 -f', [\'tn'], [\'b3l8f-t'], 0],
+['4l', '+3 -b -3 -l 15', [\'tn'], [\'3b3l15-t'], 0],
+['4m', '+3 -b -3 -l 8 -f', [\'tn'], [\'3b3l8f-t'], 0],
+#
+# Merge input files (-m option)
+['5a', '-m -l 24', [\'tn', \'tn'], [\'ml24-t'], 0],
+['5b', '-m -l 17 -f', [\'tn', \'tn'], [\'ml17f-t'], 0],
+['5c', '+3 -m -l 24', [\'tn', \'tn'], [\'3ml24-t'], 0],
+['5d', '+3 -m -l 17 -f', [\'tn', \'tn'], [\'3ml17f-t'], 0],
+['5e', '-m -l 17 -f', [\'0Ft', \'0Ft'], [\'ml17f-0F'], 0],
+['5f', '-m -l 17 -f', [\'0Ft', \'0Fnt'], [\'ml17f-0F'], 0],
+['5g', '-m -l 17 -f', [\'tn', \'0Ft'], [\'ml17f-t-0F'], 0],
+# A full page printed (lines_left_on_page = 0) without a FF found.
+# Avoid an extra empty page if a FF follows in the next input line.
+['5ma', '-m -l 24', [\'tFFn', \'tFnFt'], [\'ml24-FF'], 0],
+['5mb', '-m -l 24', [\'tFFn', \'FFn'], [\'ml24-FF'], 0],
+['5mc', '-m -l 24', [\'tn', \'FFn'], [\'ml24-t-FF'], 0],
+['5md', '-m -l 20', [\'FFn', \'tn'], [\'ml20-FF-t'], 0],
+['5Pma', '+3 -m -l 24', [\'FFn', \'FnFn'], [\'3ml24-FF'], 0],
+['5Pmb', '+3 -m -l 24', [\'tFFn', \'FFn'], [\'3ml24-FF'], 0],
+['5Pmc', '+3 -m -l 24', [\'tn', \'FFn'], [\'3ml24-t-FF'], 0],
+#
+# Do not print header and footer but retain "FF set by Hand"
+# (-t option)
+['6a', '-t -l 24', [\'tn'], [\'t-t'], 0],
+['6b', '-t -l 17 -f', [\'tn'], [\'t-t'], 0],
+['6c', '-t -l 17 -f', [\'tFFt-bl'], [\'t-bl'], 0],
+['6d', '-t -l 24', [\'0FnFnt'], [\'t-0FF'], 0],
+['6e', '-t -l 24', [\'FFn'], [\'t-FF'], 0],
+['6f', '-t -l 24', [\'FnFn'], [\'t-FF'], 0],
+['6g', '-t -l 17 -f', [\'FFn'], [\'t-FF'], 0],
+['6aa', '-t -a -3', [\'0FnFnt'], [\'ta3-0FF'], 0],
+['6ab', '-t -a -3', [\'FFn'], [\'ta3-FF'], 0],
+['6ac', '-t -a -3 -l 24', [\'FnFn'], [\'ta3-FF'], 0],
+['6ba', '-t -b -3', [\'0FnFnt'], [\'tb3-0FF'], 0],
+['6bb', '-t -b -3', [\'FFn'], [\'tb3-FF'], 0],
+['6bc', '-t -b -3 -l 24', [\'FnFn'], [\'tb3-FF'], 0],
+#
+# Do not print header and footer nor "FF set by Hand" (-T option)
+['7a', '-T -l 24', [\'tn'], [\'tt-t'], 0],
+['7b', '-T -l 17 -f', [\'tn'], [\'tt-t'], 0],
+['7c', '-T -l 17 -f', [\'tFFt-bl'], [\'tt-bl'], 0],
+['7d', '-T -l 24', [\'0FnFnt'], [\'tt-0FF'], 0],
+['7e', '-T -l 24', [\'FFn'], [\'tt-FF'], 0],
+['7f', '-T -l 24', [\'FnFn'], [\'tt-FF'], 0],
+['7g', '-T -l 17 -f', [\'FFn'], [\'tt-FF'], 0],
+['7aa', '-T -a -3', [\'0FnFnt'], [\'tta3-0FF'], 0],
+['7ab', '-T -a -3', [\'FFn'], [\'tta3-FF'], 0],
+['7ac', '-T -a -3 -l 24', [\'FnFn'], [\'tta3-FF'], 0],
+['7ba', '-T -b -3', [\'0FnFnt'], [\'ttb3-0FF'], 0],
+['7bb', '-T -b -3', [\'FFn'], [\'ttb3-FF'], 0],
+['7bc', '-T -b -3 -l 24', [\'FnFn'], [\'ttb3-FF'], 0],
+#
+# lhs-truncation of header
+# pr-1.19m: Text line truncation only with column output
+#
+# numbering lines (-n -N option)
+# skip pages (+FIRST_PAGE[:LAST_PAGE] option)
+['9a', '-n.3 -l 17 -f', [\'tFFt-bl'], [\'nl17f-bl'], 0],
+['9b', '-n.3 -N 15 -l 17 -f', [\'tFFt-bl'], [\'nN15l17f-bl'], 0],
+['9Pa', '-n.3 +2 -l 17 -f', [\'tFFt-bl'], [\'n+2l17f-bl'], 0],
+['9Pb', '-n.3 +3 -l 17 -f', [\'tFFt-bl'], [\'n+3l17f-bl'], 0],
+['9Pc', '-n.3 -N 1 +3 -l 17 -f', [\'tFFt-bl'], [\'nN1+3l17f-bl'], 0],
+['9Pe', '-n.3 +2 -l 17 -f', [\'0FFt'], [\'n+2l17f-0FF'], 0],
+['9Pf', '-n.3 +2 -l 17 -f', [\'0FFnt'], [\'n+2l17f-0FF'], 0],
+['9Pg', '-n.3 +2 -l 17 -f', [\'0FnFt'], [\'n+2l17f-0FF'], 0],
+['9Ph', '-n.3 +2 -l 17 -f', [\'0FnFnt'], [\'n+2l17f-0FF'], 0],
+['9Pi', '-n.3 +2:5 -l 17 -f', [\'0FFt'], [\'n+2-5l17f-0FF'], 0],
+['9Pj', '-n.3 +3 -l 17 -f', [\'0FFt'], [\'n+3l17f-0FF'], 0],
+['9Pk', '-n.3 +3 -l 17 -f', [\'0FFnt'], [\'n+3l17f-0FF'], 0],
+['9Pl', '-n.3 +3 -l 17 -f', [\'0FnFt'], [\'n+3l17f-0FF'], 0],
+['9Pm', '-n.3 +3 -l 17 -f', [\'0FnFnt'], [\'n+3l17f-0FF'], 0],
+['9Pn', '-n.3 +7 -l 24', [\'FFn'], [\'n+7l24-FF'], 0],
+['9Po', '-n.3 +7 -l 24', [\'FFtn'], [\'n+7l24-FF'], 0],
+['9Pp', '-n.3 +7 -l 24', [\'FnFn'], [\'n+7l24-FF'], 0],
+['9Pq', '-n.3 +3:7 -l 24', [\'FnFn'], [\'n+3-7l24-FF'], 0],
+['9Pr', '-n.3 +8 -l 20', [\'tFFn'], [\'n+8l20-FF'], 0],
+['9Ps', '-n.3 +8 -l 20', [\'tFnFt'], [\'n+8l20-FF'], 0],
+['9Pt', '-n.3 +8 -l 20', [\'tFFt'], [\'n+8l20-FF'], 0],
+['9Paa', '-n.3 +5 -a -3 -l 6 -f', [\'0FFt'], [\'n+5a3l6f-0FF'], 0],
+['9Pab', '-n.3 +5 -a -3 -l 6 -f', [\'0FFnt'], [\'n+5a3l6f-0FF'], 0],
+['9Pac', '-n.3 +5 -a -3 -l 6 -f', [\'0FnFt'], [\'n+5a3l6f-0FF'], 0],
+['9Pad', '-n.3 +5 -a -3 -l 6 -f', [\'0FnFnt'], [\'n+5a3l6f-0FF'], 0],
+['9Pae', '-n.3 +6 -a -2 -l 17', [\'FFn'], [\'n+6a2l17-FF'], 0],
+['9Paf', '-n.3 +6 -a -2 -l 17', [\'FFtn'], [\'n+6a2l17-FF'], 0],
+['9Pag', '-n.3 +6 -a -2 -l 17', [\'FnFn'], [\'n+6a2l17-FF'], 0],
+['9Pah', '-n.3 +6 -a -2 -l 17', [\'tFFn'], [\'n+6a2l17-FF'], 0],
+['9Pai', '-n.3 +6 -a -2 -l 17', [\'tFnFt'], [\'n+6a2l17-FF'], 0],
+['9Paj', '-n.3 +6 -a -2 -l 17', [\'tFFt'], [\'n+6a2l17-FF'], 0],
+['9Pak', '-n.3 +4:8 -a -2 -l 17', [\'tFFt'], [\'n+4-8a2l17-FF'], 0],
+['9Pba', '-n.3 +4 -b -2 -l 10 -f', [\'0FFt'], [\'n+4b2l10f-0FF'], 0],
+['9Pbb', '-n.3 +4 -b -2 -l 10 -f', [\'0FFnt'], [\'n+4b2l10f-0FF'], 0],
+['9Pbc', '-n.3 +4 -b -2 -l 10 -f', [\'0FnFt'], [\'n+4b2l10f-0FF'], 0],
+['9Pbd', '-n.3 +4 -b -2 -l 10 -f', [\'0FnFnt'], [\'n+4b2l10f-0FF'], 0],
+['9Pbe', '-n.3 +6 -b -3 -l 6 -f', [\'FFn'], [\'n+6b3l6f-FF'], 0],
+['9Pbf', '-n.3 +6 -b -3 -l 6 -f', [\'FFtn'], [\'n+6b3l6f-FF'], 0],
+['9Pbg', '-n.3 +6 -b -3 -l 6 -f', [\'FnFn'], [\'n+6b3l6f-FF'], 0],
+['9Pbh', '-n.3 +6 -b -3 -l 6 -f', [\'tFFn'], [\'n+6b3l6f-FF'], 0],
+['9Pbi', '-n.3 +6 -b -3 -l 6 -f', [\'tFnFt'], [\'n+6b3l6f-FF'], 0],
+['9Pbj', '-n.3 +6 -b -3 -l 6 -f', [\'tFFt'], [\'n+6b3l6f-FF'], 0],
+['9Pbk', '-n.3 +5:8 -b -3 -l 10 -f', [\'FnFn'], [\'n+5-8b3l10f-FF'], 0],
+['9Pma', '-n.3 +3 -m -l 13 -f', [\'tFFt-bl', \'FnFn'], [\'n+3ml13f-bl-FF'], 0],
+['9Pmb', '-n.3 +3 -m -l 17 -f', [\'tFFt-bl', \'tn'], [\'n+3ml17f-bl-tn'], 0],
+['9Pmc', '-n.3 +3 -m -l 17 -f', [\'tn', \'tFFt-bl'], [\'n+3ml17f-tn-bl'], 0],
+#
+# line truncation column alignment; header line truncation
+# -w/W PAGE_WIDTH [-J] options
+['10wa', '-W 72 -J -l17 -f', [\'tFFt-ll'], [\'W72Jl17f-ll'], 0],
+['10wb', '-w 72 -J -l17 -f', [\'tFFt-ll'], [\'W72Jl17f-ll'], 0],
+['10wc', '-W 72 -l17 -f', [\'tFFt-ll'], [\'W-72l17f-ll'], 0],
+['10wd', '-w 72 -l17 -f', [\'tFFt-ll'], [\'w72l17f-ll'], 0],
+['10we', '-W 28 -l17 -f', [\'tFFt-ll'], [\'W28l17f-ll'], 0],
+['10wf', '-W 27 -l17 -f', [\'tFFt-ll'], [\'W27l17f-ll'], 0],
+['10wg', '-W 26 -l17 -f', [\'tFFt-ll'], [\'W26l17f-ll'], 0],
+['10wh', '-W 20 -l17 -f', [\'tFFt-ll'], [\'W20l17f-ll'], 0],
+['10ma', '-m -l 17 -f', [\'tFFt-lm', \'loli'], [\'ml17f-lm-lo'], 0],
+['10mb', '-W 35 -m -l 17 -f', [\'tFFt-lm', \'loli'], [\'W35ml17f-lm-lo'], 0],
+['10mc', '-w 35 -m -l 17 -f', [\'tFFt-lm', \'loli'], [\'W35ml17f-lm-lo'], 0],
+['10md', '-J -m -l 17 -f', [\'tFFt-lm', \'loli'], [\'Jml17f-lm-lo'], 0],
+['10me', '-W 35 -J -m -l 17 -f', [\'tFFt-lm', \'loli'], [\'W35Jml17f-lmlo'], 0],
+['10mf', '-w 35 -J -m -l 17 -f', [\'tFFt-lm', \'loli'], [\'W35Jml17f-lmlo'], 0],
+['10mg', '-n.3 -J -m -l 17 -f', [\'tFFt-lm', \'tFFt-lm', \'loli'], [\'nJml17f-lmlmlo'], 0],
+['10mh', '-n.3 -J -m -l 17 -f', [\'tFFt-lm', \'loli', \'tFFt-lm'], [\'nJml17f-lmlolm'], 0],
+['10aa', '-a -3 -l 17 -f', [\'tFFt-lm'], [\'a3l17f-lm'], 0],
+['10ab', '-W 35 -a -3 -l 17 -f', [\'tFFt-lm'], [\'W35a3l17f-lm'], 0],
+['10ac', '-J -a -3 -l 17 -f', [\'tFFt-lm'], [\'Ja3l17f-lm'], 0],
+['10ad', '-W 35 -J -a -3 -l 17 -f', [\'tFFt-lm'], [\'W35Ja3l17f-lm'], 0],
+['10ba', '-b -3 -l 17 -f', [\'tFFt-lm'], [\'b3l17f-lm'], 0],
+['10bb', '-W 35 -b -3 -l 17 -f', [\'tFFt-lm'], [\'W35b3l17f-lm'], 0],
+['10bc', '-J -b -3 -l 17 -f', [\'tFFt-lm'], [\'Jb3l17f-lm'], 0],
+['10bd', '-W 35 -J -b -3 -l 17 -f', [\'tFFt-lm'], [\'W35Jb3l17f-lm'], 0],
+#
+# merge files (-m option) use separator string (-S option)
+['11sa', '-n.3 -S:--: -m -l 13 -f', [\'tFFt-bl', \'FnFn'], [\'nSml13-bl-FF'], 0],
+['11sb', '-n.3 -S:--: -m -l 17 -f', [\'tFFt-bl', \'FnFn'], [\'nSml17-bl-FF'], 0],
+['11se', '-n.3 -S:--: -m -l 13 -f', [\'tn', \'tn', \'FnFn'], [\'nSml13-t-t-FF'], 0],
+['11sf', '-n.3 -S:--: -m -l 17 -f', [\'tn', \'tn', \'FnFn'], [\'nSml17-t-t-FF'], 0],
+['11sg', '-n.3 -S:--: -m -l 13 -f', [\'tn', \'tn', \'FnFn', \'FnFn'], [\'nSml13-t-tFFFF'], 0],
+['11sh', '-n.3 -S:--: -m -l 17 -f', [\'tn', \'tn', \'FnFn', \'FnFn'], [\'nSml17-t-tFFFF'], 0],
+#
+# left margin (-o option) and separator string (-S option)
+['12aa', '-o3 -a -3 -l17 -f', [\'tn'], [\'o3a3l17f-tn'], 0],
+['12ab', '-o3 -a -3 -S:--: -l17 -f', [\'tn'], [\'o3a3Sl17f-tn'], 0],
+['12ac', '-o3 -a -3 -S:--: -n. -l17 -f', [\'tn'], [\'o3a3Snl17f-tn'], 0],
+['12ba', '-o3 -b -3 -l17 -f', [\'tn'], [\'o3b3l17f-tn'], 0],
+['12bb', '-o3 -b -3 -S:--: -l17 -f', [\'tn'], [\'o3b3Sl17f-tn'], 0],
+['12bc', '-o3 -b -3 -S:--: -n. -l17 -f', [\'tn'], [\'o3b3Snl17f-tn'], 0],
+['12ma', '-o3 -m -l17 -f', [\'tFFt-bl', \'tn'], [\'o3ml17f-bl-tn'], 0],
+['12mb', '-o3 -m -S:--: -l17 -f', [\'tFFt-bl', \'tn'], [\'o3mSl17f-bl-tn'], 0],
+['12mc', '-o3 -m -S:--: -n. -l17 -f', [\'tFFt-bl', \'tn'], [\'o3mSnl17fbltn'], 0],
+['12md', '-o3 -J -m -l17 -f', [\'tFFt-lm', \'loli'], [\'o3Jml17f-lm-lo'], 0],
+#
+#
+# Single column output: POSIX compliant, adapt other UNIXes (SunOS.5.5.1 e.g.)
+# number-separator TAB always an output TAB --> varying number/text-spacing
+['13a', '-t -n -e8', [\'t_tab'], [\'tne8-t_tab'], 0],
+['13b', '-t -n -e8 -o3', [\'t_tab'], [\'tne8o3-t_tab'], 0],
+#
+# POSIX compliant: multi-columns of equal width (unlike SunOS.5.5.1 e.g.)
+# text-tab handling
+['13ba', '-t -n -2 -e8', [\'t_tab'], [\'tn2e8-t_tab'], 0],
+['13bb', '-t -n: -2 -e8', [\'t_tab'], [\'tn_2e8-t_tab'], 0],
+['13bc', '-t -n: -2 -e8 -S----', [\'t_tab'], [\'tn_2e8S-t_tab'], 0],
+['13bd', '-t -n -2 -e8 -o3', [\'t_tab'], [\'tn2e8o3-t_tab'], 0],
+# number-separator TAB not treated as input text-tab, no `-e' expansion
+['13be', '-t -n -2 -e5 -o3', [\'t_tab'], [\'tn2e5o3-t_tab'], 0],
+# input-tab-char `:' not equal default (text) TABs
+['13bf', '-t -n -2 -e:8', [\'t_tab_'], [\'tn2e8-t_tab'], 0],
+#
+# options -w/-s: POSIX-compliant, means adapting the interference of -w/-s
+# with multi-column output from other UNIXes (SunOS e.g.);
+# columns, truncated = 72 / separator = space :
+['14a', '-2 -f', [\'t_notab'], [\'2f-t_notab'], 0],
+# full lines, no truncation / separator = TAB :
+['14b', '-2 -s -f', [\'t_notab'], [\'2sf-t_notab'], 0],
+# full lines, no truncation / separator = `:' :
+['14c', '-2 -s: -f', [\'t_notab'], [\'2s_f-t_notab'], 0],
+# columns, truncated = 60 / separator = space :
+['14d', '-2 -w60 -f', [\'t_notab'], [\'2w60f-t_notab'], 0],
+# columns, truncated = 60 / no separator (SunOS-BUG: line width to small):
+['14e', '-2 -s -w60 -f', [\'t_notab'], [\'2sw60f-t_notab'], 0],
+# columns, truncated = 60 / separator = `:' (HP-UX.10.20-2-BUG:
+# `:' missing with -m option):
+['14f', '-2 -s: -w60 -f', [\'t_notab'], [\'2s_w60f-t_nota'], 0],
+#
+# new long-options -W/-S/-J disentangle those options (see also No.`10*')
+# columns, truncated = 72 / no separator :
+['14g', '-2 -S -f', [\'t_notab'], [\'2-Sf-t_notab'], 0],
+# full lines, no truncation / separator = TAB : (Input: -S"<TAB>")
+['14h', '-2 -S" " -J -f', [\'t_notab'], [\'2sf-t_notab'], 0],
+# columns, truncated = 72 / separator `:' :
+['14i', '-2 -S: -f', [\'t_notab'], [\'2-S_f-t_notab'], 0],
+# full lines, no truncation / separator = `:' :
+['14j', '-2 -S: -J -f', [\'t_notab'], [\'2s_f-t_notab'], 0],
+# columns, truncated = 60 / separator = space:
+['14k', '-2 -W60 -f', [\'t_notab'], [\'2w60f-t_notab'], 0],
+# columns, truncated = 60 / no separator :
+['14l', '-2 -S -W60 -f', [\'t_notab'], [\'2sw60f-t_notab'], 0],
+# columns, truncated = 60 / separator = `:' :
+['14m', '-2 -S: -W60 -f', [\'t_notab'], [\'2s_w60f-t_nota'], 0],
+#
+# Tabify multiple spaces, -i option
+# number of input spaces between a and b must not change; be careful
+# comparing with other UNIXes (some other SunOS examples are OK !?)
+# SunOS.5.5.1-BUG: 8 input spaces --> 11 output spaces between a and b;
+['i-opt-a', '-tn -i5 -h ""', "a b\n", " 1 a b\n", 0],
+# SunOS.5.5.1-BUG: 8 input spaces --> 9 output spaces between a and b;
+['i-opt-b', '-tn -i5 -o9 -h ""', "a b\n", " 1 a b\n", 0],
+#
+# line number overflow not allowed: cut off leading digits;
+# don't adapt other UNIXes, no real standard to follow, a consequent
+# programming of column handling may change the GNU pr concept.
+['ncut-a', '-tn2 -N98', "y\ny\ny\ny\ny\n", "98 y\n99 y\n00 y\n01 y\n02 y\n", 0],
+['ncut-b', '-tn:2 -N98', "y\ny\ny\ny\ny\n", "98:y\n99:y\n00:y\n01:y\n02:y\n", 0],
+
+['margin-0', '-o 0', '', '', 0],
+
+# BUG fixed: that leading space on 3rd line of output should not be there
+['dbl-sp-a', '-d -l 14 -h ""', "1\n2\n", "\n\n-- Date/Time -- Page 1\n\n\n1\n\n2\n\n\n\n\n\n\n", 0],
+# This test failed with 1.22e and earlier.
+['dbl-sp-b', '-d -t', "1\n2\n", "1\n\n2\n\n", 0],
+
+# This test would segfault with 2.0f and earlier.
+['narrow-1', '-W1 -t', "12345\n", "1\n", 0],
+
+# This test would fail with textutils-2.1 and earlier.
+['col-last', '-W3 -t2', "a\nb\nc\n", "a c\nb\n", 0],
+
+# Make sure that -02 is treated just like -2.
+['col-02', '-W3 -t -02', "a\nb\nc\n", "a c\nb\n", 0],
+# The -2 must override preceding column-count-specifying options.
+['col-2', '-W3 -t -4 --columns=1 -2', "a\nb\nc\n", "a c\nb\n", 0],
+# The --columns=2 must override preceding column-count-specifying options.
+['col-long', '-W3 -t -1 --columns=2', "a\nb\nc\n", "a c\nb\n", 0],
+# Make sure these fail.
+['col-0', '-0', '', '', 1],
+['col-inval', '-'.'9'x100, '', '', 1],
+
+# Before coreutils-5.3.1, --pages=1:-1 would be treated like
+# --pages=1:18446744073709551615.
+['neg-page', '--pages=1:-1', '', '', 1],
+);
+#']]);
+
+sub test_vector
+{
+ my $common_option_prefix = '--date-format="-- Date/Time --" -h x';
+
+ my @new_tv;
+ my $t;
+ foreach $t (@tv)
+ {
+ my ($test_name, $flags, $in, $exp, $ret) = @$t;
+
+ # Prepend the common options to $FLAGS.
+ my $sep = ($flags ? ' ' : '');
+ $flags = "$common_option_prefix$sep$flags";
+ push (@new_tv, [$test_name, $flags, $in, $exp, $ret]);
+
+ # For any use of -N, create an identical test with --columns=N.
+ (my $new_flags = $flags) =~ s/(^| )-(\d+)( |$)/$1--columns=$2$3/g;
+ $new_flags ne $flags
+ and push (@new_tv, ["$test_name.C", $new_flags, $in, $exp, $ret]);
+ }
+
+ return @new_tv;
+}
+
+1;
diff --git a/tests/pr/W-72l17f-ll b/tests/pr/W-72l17f-ll
new file mode 100644
index 0000000..41f8bfc
--- /dev/null
+++ b/tests/pr/W-72l17f-ll
@@ -0,0 +1,92 @@
+-- Date/Time -- x Page 1
+
+
+1<<< -Test: FF's in Text >>>
+2<<< -b -3 / -a -3 / ... >>>
+3<<< >>>
+4<<< 123456789 123456789 123456789 123456789 123456789 123456789 123456
+
+6<<< -Arangements: One Empty Page >>>
+7<<< \f\f\n; text\f\n\ftext; \f\ftext; >>>
+8<<< f\f\n; \f\n\f\n; >>>
+9<<< >>>
+10<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< truncation before FF; r_r_o_l-test: >>>
+14<<< 123456789 123456789 123456789 >>>
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+15<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+16<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+7<<< >>>
+8<<< >>>
+9<<< >>>
+20<<< >>>
+1<<< >>>
+
+
+4<<< >>>
+5<<< >>>
+6<<< >>>
+27<<< truncation before FF; (r_l-test): >>>
+28<<< trunc
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+29<<<xyzxyzxyz XYZXYZXYZ abcabcab >>>
+30<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+1<<< >>>
+2<<< abcdefghi >>>
+3<<< >>>
+4<<< >>>
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< abcdefghi >>>
+40<<< 123456789 >>>
+41<<< XYZXYZXYZ abcabcab >>>
+42<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+44<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< >>>
+50<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< >>>
+4<<< >>>
+55<<< XYZXYZXYZ abcabcab >>>
+56<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 9
+
+
+57<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+58<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+9<<< >>>
+60<<< 123456789 >>>
+ \ No newline at end of file
diff --git a/tests/pr/W20l17f-ll b/tests/pr/W20l17f-ll
new file mode 100644
index 0000000..4ebb5b2
--- /dev/null
+++ b/tests/pr/W20l17f-ll
@@ -0,0 +1,92 @@
+-- Date/Time -- x Page 1
+
+
+1<<< -Test: FF's in
+2<<< -b -3 / -a -3
+3<<< >>>
+4<<< 123456789 1234
+
+6<<< -Arangements:
+7<<< \f\f\n; text\f
+8<<< f\f\n; \f\n\f\
+9<<< >>>
+10<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< truncation bef
+14<<< 123456789 123
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+15<<< xyzxyzxyz XYZ
+16<<< 123456789 xyz
+7<<< >>>
+8<<< >>>
+9<<< >>>
+20<<< >>>
+1<<< >>>
+
+
+4<<< >>>
+5<<< >>>
+6<<< >>>
+27<<< truncation be
+28<<< trunc
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+29<<<xyzxyzxyz XYZXY
+30<<< 123456789 xyz
+1<<< >>>
+2<<< abcdefghi >>>
+3<<< >>>
+4<<< >>>
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< abcdefghi >>>
+40<<< 123456789 >>
+41<<< XYZXYZXYZ abc
+42<<< 123456789 abc
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43<<< xyzxyzxyz XYZ
+44<<< 123456789 xyz
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< >>>
+50<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< >>>
+4<<< >>>
+55<<< XYZXYZXYZ abc
+56<<< 123456789 abc
+ -- Date/Time -- x Page 9
+
+
+57<<< xyzxyzxyz XYZ
+58<<< 123456789 xyz
+9<<< >>>
+60<<< 123456789 >>
+ \ No newline at end of file
diff --git a/tests/pr/W26l17f-ll b/tests/pr/W26l17f-ll
new file mode 100644
index 0000000..ee0ed91
--- /dev/null
+++ b/tests/pr/W26l17f-ll
@@ -0,0 +1,92 @@
+-- Date/Time -- x Page 1
+
+
+1<<< -Test: FF's in Text
+2<<< -b -3 / -a -3 / ...
+3<<< >>>
+4<<< 123456789 123456789
+
+6<<< -Arangements: One Em
+7<<< \f\f\n; text\f\n\fte
+8<<< f\f\n; \f\n\f\n; >>
+9<<< >>>
+10<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< truncation before FF
+14<<< 123456789 123456789
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+15<<< xyzxyzxyz XYZXYZXYZ
+16<<< 123456789 xyzxyzxyz
+7<<< >>>
+8<<< >>>
+9<<< >>>
+20<<< >>>
+1<<< >>>
+
+
+4<<< >>>
+5<<< >>>
+6<<< >>>
+27<<< truncation before F
+28<<< trunc
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+29<<<xyzxyzxyz XYZXYZXYZ a
+30<<< 123456789 xyzxyzxyz
+1<<< >>>
+2<<< abcdefghi >>>
+3<<< >>>
+4<<< >>>
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< abcdefghi >>>
+40<<< 123456789 >>>
+41<<< XYZXYZXYZ abcabcab
+42<<< 123456789 abcdefghi
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43<<< xyzxyzxyz XYZXYZXYZ
+44<<< 123456789 xyzxyzxyz
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< >>>
+50<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< >>>
+4<<< >>>
+55<<< XYZXYZXYZ abcabcab
+56<<< 123456789 abcdefghi
+ -- Date/Time -- x Page 9
+
+
+57<<< xyzxyzxyz XYZXYZXYZ
+58<<< 123456789 xyzxyzxyz
+9<<< >>>
+60<<< 123456789 >>>
+ \ No newline at end of file
diff --git a/tests/pr/W27l17f-ll b/tests/pr/W27l17f-ll
new file mode 100644
index 0000000..fe65325
--- /dev/null
+++ b/tests/pr/W27l17f-ll
@@ -0,0 +1,92 @@
+-- Date/Time -- x Page 1
+
+
+1<<< -Test: FF's in Text
+2<<< -b -3 / -a -3 / ...
+3<<< >>>
+4<<< 123456789 123456789 1
+
+6<<< -Arangements: One Emp
+7<<< \f\f\n; text\f\n\ftex
+8<<< f\f\n; \f\n\f\n; >>>
+9<<< >>>
+10<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< truncation before FF;
+14<<< 123456789 123456789
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+15<<< xyzxyzxyz XYZXYZXYZ
+16<<< 123456789 xyzxyzxyz
+7<<< >>>
+8<<< >>>
+9<<< >>>
+20<<< >>>
+1<<< >>>
+
+
+4<<< >>>
+5<<< >>>
+6<<< >>>
+27<<< truncation before FF
+28<<< trunc
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+29<<<xyzxyzxyz XYZXYZXYZ ab
+30<<< 123456789 xyzxyzxyz
+1<<< >>>
+2<<< abcdefghi >>>
+3<<< >>>
+4<<< >>>
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< abcdefghi >>>
+40<<< 123456789 >>>
+41<<< XYZXYZXYZ abcabcab
+42<<< 123456789 abcdefghi
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43<<< xyzxyzxyz XYZXYZXYZ
+44<<< 123456789 xyzxyzxyz
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< >>>
+50<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< >>>
+4<<< >>>
+55<<< XYZXYZXYZ abcabcab
+56<<< 123456789 abcdefghi
+ -- Date/Time -- x Page 9
+
+
+57<<< xyzxyzxyz XYZXYZXYZ
+58<<< 123456789 xyzxyzxyz
+9<<< >>>
+60<<< 123456789 >>>
+ \ No newline at end of file
diff --git a/tests/pr/W28l17f-ll b/tests/pr/W28l17f-ll
new file mode 100644
index 0000000..0109eba
--- /dev/null
+++ b/tests/pr/W28l17f-ll
@@ -0,0 +1,92 @@
+-- Date/Time -- x Page 1
+
+
+1<<< -Test: FF's in Text
+2<<< -b -3 / -a -3 / ... >
+3<<< >>>
+4<<< 123456789 123456789 12
+
+6<<< -Arangements: One Empt
+7<<< \f\f\n; text\f\n\ftext
+8<<< f\f\n; \f\n\f\n; >>>
+9<<< >>>
+10<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< truncation before FF;
+14<<< 123456789 123456789 1
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+15<<< xyzxyzxyz XYZXYZXYZ a
+16<<< 123456789 xyzxyzxyz X
+7<<< >>>
+8<<< >>>
+9<<< >>>
+20<<< >>>
+1<<< >>>
+
+
+4<<< >>>
+5<<< >>>
+6<<< >>>
+27<<< truncation before FF;
+28<<< trunc
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+29<<<xyzxyzxyz XYZXYZXYZ abc
+30<<< 123456789 xyzxyzxyz X
+1<<< >>>
+2<<< abcdefghi >>>
+3<<< >>>
+4<<< >>>
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< abcdefghi >>>
+40<<< 123456789 >>>
+41<<< XYZXYZXYZ abcabcab
+42<<< 123456789 abcdefghi A
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43<<< xyzxyzxyz XYZXYZXYZ a
+44<<< 123456789 xyzxyzxyz X
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< >>>
+50<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< >>>
+4<<< >>>
+55<<< XYZXYZXYZ abcabcab >
+56<<< 123456789 abcdefghi A
+ -- Date/Time -- x Page 9
+
+
+57<<< xyzxyzxyz XYZXYZXYZ a
+58<<< 123456789 xyzxyzxyz X
+9<<< >>>
+60<<< 123456789 >>>
+ \ No newline at end of file
diff --git a/tests/pr/W35Ja3l17f-lm b/tests/pr/W35Ja3l17f-lm
new file mode 100644
index 0000000..4c73df8
--- /dev/null
+++ b/tests/pr/W35Ja3l17f-lm
@@ -0,0 +1,54 @@
+-- Date/Time -- x Page 1
+
+
+1<<< -Test: FF's in Text >>> 2<<< -b -3 / -a -3 / ... >>> 3<<< >>>
+4<<< 123456789 123456789 123456789 12345678 >>> 6<<< -Arangements: One Empty Page >>>
+7<<< \f\f\n; text\f\n\ftext; \f\ftext; >>> 8<<< f\f\n; \f\n\f\n; >>> 9<<< >>>
+10<<< >>> 1<<< >>> 2<<< >>>
+3<<< truncation before FF; r_r_o_l-test: >>> 14<<< 123456789 123456789 123456789 >>>
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+15<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 16<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 7<<< >>>
+8<<< >>> 9<<< >>> 20<<< >>>
+1<<< >>>
+4<<< >>> 5<<< >>> 6<<< >>>
+27<<< truncation before FF; (r_l-test): >>> 28<<< trunc
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+29<<<xyzxyzxyz XYZXYZXYZ abcabcab >>> 30<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 1<<< >>>
+2<<< abcdefghi >>> 3<<< >>> 4<<< >>>
+5<<< >>> 6<<< >>> 7<<< >>>
+8<<< >>> 9<<< abcdefghi >>> 40<<< 123456789 >>>
+41<<< XYZXYZXYZ abcabcab >>> 42<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 44<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 5<<< >>>
+6<<< >>> 7<<< >>> 8<<< >>>
+9<<< >>> 50<<< >>> 1<<< >>>
+2<<< >>> 3<<< >>> 4<<< >>>
+55<<< XYZXYZXYZ abcabcab >>> 56<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 9
+
+
+57<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 58<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 9<<< >>>
+60<<< 123456789 >>>
+ \ No newline at end of file
diff --git a/tests/pr/W35Jb3l17f-lm b/tests/pr/W35Jb3l17f-lm
new file mode 100644
index 0000000..7600568
--- /dev/null
+++ b/tests/pr/W35Jb3l17f-lm
@@ -0,0 +1,54 @@
+-- Date/Time -- x Page 1
+
+
+1<<< -Test: FF's in Text >>> 6<<< -Arangements: One Empty Page >>> 1<<< >>>
+2<<< -b -3 / -a -3 / ... >>> 7<<< \f\f\n; text\f\n\ftext; \f\ftext; >>> 2<<< >>>
+3<<< >>> 8<<< f\f\n; \f\n\f\n; >>> 3<<< truncation before FF; r_r_o_l-test: >>>
+4<<< 123456789 123456789 123456789 12345678 >>> 9<<< >>> 14<<< 123456789 123456789 123456789 >>>
+ 10<<< >>>
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+15<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 20<<< >>> 5<<< >>>
+16<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 1<<< >>> 6<<< >>>
+7<<< >>> 27<<< truncation before FF; (r_l-test): >>>
+8<<< >>> 28<<< trunc
+9<<< >>> 4<<< >>>
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+29<<<xyzxyzxyz XYZXYZXYZ abcabcab >>> 4<<< >>> 9<<< abcdefghi >>>
+30<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 5<<< >>> 40<<< 123456789 >>>
+1<<< >>> 6<<< >>> 41<<< XYZXYZXYZ abcabcab >>>
+2<<< abcdefghi >>> 7<<< >>> 42<<< 123456789 abcdefghi ABCDEDFHI >>>
+3<<< >>> 8<<< >>>
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 8<<< >>> 3<<< >>>
+44<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 9<<< >>> 4<<< >>>
+5<<< >>> 50<<< >>> 55<<< XYZXYZXYZ abcabcab >>>
+6<<< >>> 1<<< >>> 56<<< 123456789 abcdefghi ABCDEDFHI >>>
+7<<< >>> 2<<< >>>
+ -- Date/Time -- x Page 9
+
+
+57<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 9<<< >>> 60<<< 123456789 >>>
+58<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+ \ No newline at end of file
diff --git a/tests/pr/W35Jml17f-lmlo b/tests/pr/W35Jml17f-lmlo
new file mode 100644
index 0000000..6d01a9d
--- /dev/null
+++ b/tests/pr/W35Jml17f-lmlo
@@ -0,0 +1,118 @@
+-- Date/Time -- x Page 1
+
+
+1<<< -Test: FF's in Text >>> 1::: Test-INPUT: "Without FF set by Hand" :::
+2<<< -b -3 / -a -3 / ... >>> 2::: Options -b -3 [+2|+3] [-l 15|8] [-f] :::
+3<<< >>> 3::: Options -a -3 [+2|+3] [-l 15|8] [-f] :::
+4<<< 123456789 123456789 123456789 12345678 >>> 4::: Options [+2|+3] [-l 24|17] [-f] :::
+ 5::: :::
+6<<< -Arangements: One Empty Page >>> 6::: -------------------------------------------- :::
+7<<< \f\f\n; text\f\n\ftext; \f\ftext; >>> 7::: 789 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+8<<< f\f\n; \f\n\f\n; >>> 8::: 3 Columns downwards, across, ...: :::
+9<<< >>> 9::: With columns use <= 5 text lines/page, :::
+10<<< >>> 10::: without -f e.g.: -l 15 = total lines/page, :::
+1<<< >>> 1::: with -f e.g. : -l 8 -f :::
+2<<< >>> 2::: :::
+3<<< truncation before FF; r_r_o_l-test: >>> 3::: line truncation before new page; r_r_o_l-test: :::
+14<<< 123456789 123456789 123456789 >>> 14::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ -- Date/Time -- x Page 2
+
+
+ 15::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+ 16::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+ 7::: 12345678 :::
+ 8::: 12345678 :::
+ 9::: 3456789 ab :::
+ 20::: DEFGHI 123 :::
+ 21::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ 2::: 12345678 :::
+ 3::: 12345678 :::
+ 4::: 12345678 :::
+ 5::: 12345678 :::
+ 6::: 12345678 :::
+ 27::: no truncation before nwe page; (r_l-test): :::
+ 28::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ -- Date/Time -- x Page 3
+
+
+15<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 29::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+16<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 30::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+7<<< >>> 1::: 12345678 :::
+8<<< >>> 2::: 3456789 abcdefghi :::
+9<<< >>> 3::: 12345678 :::
+20<<< >>> 4::: 12345678 :::
+1<<< >>> 35::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ 6::: 12345678 :::
+ 7::: 12345678 :::
+4<<< >>> 8::: 12345678 :::
+5<<< >>> 9::: 3456789 abcdefghi :::
+6<<< >>> 40::: DEFGHI 123456789 :::
+27<<< truncation before FF; (r_l-test): >>> 41::: yzxyzxyz XYZXYZXYZ abcabcab :::
+28<<< trunc 42::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ -- Date/Time -- x Page 4
+
+
+ 43::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+ 44::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+ 5::: 12345678 :::
+ 6::: 12345678 :::
+ 7::: 12345678 :::
+ 8::: 12345678 :::
+ 49::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ 50::: 12345678 :::
+ 1::: 12345678 :::
+ 2::: 12345678 :::
+ 3::: 12345678 :::
+ 4::: 12345678 :::
+ 55::: yzxyzxyz XYZXYZXYZ abcabcab :::
+ 56::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ -- Date/Time -- x Page 5
+
+
+29<<<xyzxyzxyz XYZXYZXYZ abcabcab >>> 57::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+30<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 58::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+1<<< >>> 9::: 12345678 :::
+2<<< abcdefghi >>> 60::: DEFGHI 123456789 :::
+3<<< >>> 1::: :::
+4<<< >>> 2::: :::
+5<<< >>> 3::: ------- EOF -------- EOF -------- EOF ------- EOF ------- EOF ------- EOF :::
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< abcdefghi >>>
+40<<< 123456789 >>>
+41<<< XYZXYZXYZ abcabcab >>>
+42<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+44<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< >>>
+50<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< >>>
+4<<< >>>
+55<<< XYZXYZXYZ abcabcab >>>
+56<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 9
+
+
+57<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+58<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+9<<< >>>
+60<<< 123456789 >>>
+ \ No newline at end of file
diff --git a/tests/pr/W35a3l17f-lm b/tests/pr/W35a3l17f-lm
new file mode 100644
index 0000000..8db0976
--- /dev/null
+++ b/tests/pr/W35a3l17f-lm
@@ -0,0 +1,54 @@
+-- Date/Time -- x Page 1
+
+
+1<<< -Test 2<<< -b -3 3<<< >>>
+4<<< 12345 6<<< -Aran
+7<<< \f\f\ 8<<< f\f\n 9<<< >>>
+10<<< >>> 1<<< >>> 2<<< >>>
+3<<< trunc 14<<< 1234
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+15<<< xyzx 16<<< 1234 7<<< >>>
+8<<< >>> 9<<< >>> 20<<< >>>
+1<<< >>>
+4<<< >>> 5<<< >>> 6<<< >>>
+27<<< trun 28<<< trun
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+29<<<xyzxyz 30<<< 1234 1<<< >>>
+2<<< abcde 3<<< >>> 4<<< >>>
+5<<< >>> 6<<< >>> 7<<< >>>
+8<<< >>> 9<<< abcde 40<<< 1234
+41<<< XYZX 42<<< 1234
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43<<< xyzx 44<<< 1234 5<<< >>>
+6<<< >>> 7<<< >>> 8<<< >>>
+9<<< >>> 50<<< >>> 1<<< >>>
+2<<< >>> 3<<< >>> 4<<< >>>
+55<<< XYZX 56<<< 1234
+ -- Date/Time -- x Page 9
+
+
+57<<< xyzx 58<<< 1234 9<<< >>>
+60<<< 1234
+ \ No newline at end of file
diff --git a/tests/pr/W35b3l17f-lm b/tests/pr/W35b3l17f-lm
new file mode 100644
index 0000000..a53ac72
--- /dev/null
+++ b/tests/pr/W35b3l17f-lm
@@ -0,0 +1,54 @@
+-- Date/Time -- x Page 1
+
+
+1<<< -Test 6<<< -Aran 1<<< >>>
+2<<< -b -3 7<<< \f\f\ 2<<< >>>
+3<<< >>> 8<<< f\f\n 3<<< trunc
+4<<< 12345 9<<< >>> 14<<< 1234
+ 10<<< >>>
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+15<<< xyzx 20<<< >>> 5<<< >>>
+16<<< 1234 1<<< >>> 6<<< >>>
+7<<< >>> 27<<< trun
+8<<< >>> 28<<< trun
+9<<< >>> 4<<< >>>
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+29<<<xyzxyz 4<<< >>> 9<<< abcde
+30<<< 1234 5<<< >>> 40<<< 1234
+1<<< >>> 6<<< >>> 41<<< XYZX
+2<<< abcde 7<<< >>> 42<<< 1234
+3<<< >>> 8<<< >>>
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43<<< xyzx 8<<< >>> 3<<< >>>
+44<<< 1234 9<<< >>> 4<<< >>>
+5<<< >>> 50<<< >>> 55<<< XYZX
+6<<< >>> 1<<< >>> 56<<< 1234
+7<<< >>> 2<<< >>>
+ -- Date/Time -- x Page 9
+
+
+57<<< xyzx 9<<< >>> 60<<< 1234
+58<<< 1234
+ \ No newline at end of file
diff --git a/tests/pr/W35ml17f-lm-lo b/tests/pr/W35ml17f-lm-lo
new file mode 100644
index 0000000..4c9c9d7
--- /dev/null
+++ b/tests/pr/W35ml17f-lm-lo
@@ -0,0 +1,118 @@
+-- Date/Time -- x Page 1
+
+
+1<<< -Test: FF's 1::: Test-INPUT:
+2<<< -b -3 / -a 2::: Options -b
+3<<< >>> 3::: Options -a
+4<<< 123456789 1 4::: Options
+ 5::: :::
+6<<< -Arangement 6::: -----------
+7<<< \f\f\n; tex 7::: 789 1234567
+8<<< f\f\n; \f\n 8::: 3 Columns d
+9<<< >>> 9::: With column
+10<<< >>> 10::: without -f
+1<<< >>> 1::: with -f e.g
+2<<< >>> 2::: :::
+3<<< truncation 3::: line trunca
+14<<< 123456789 14::: 89 1234567
+ -- Date/Time -- x Page 2
+
+
+ 15::: xyzxyzxyz
+ 16::: 456789 123
+ 7::: 12345678 :
+ 8::: 12345678 :
+ 9::: 3456789 ab
+ 20::: DEFGHI 123
+ 21::: 89 1234567
+ 2::: 12345678 :
+ 3::: 12345678 :
+ 4::: 12345678 :
+ 5::: 12345678 :
+ 6::: 12345678 :
+ 27::: no truncat
+ 28::: 89 1234567
+ -- Date/Time -- x Page 3
+
+
+15<<< xyzxyzxyz 29::: xyzxyzxyz
+16<<< 123456789 30::: 456789 123
+7<<< >>> 1::: 12345678 :
+8<<< >>> 2::: 3456789 abc
+9<<< >>> 3::: 12345678 :
+20<<< >>> 4::: 12345678 :
+1<<< >>> 35::: 89 1234567
+ 6::: 12345678 :
+ 7::: 12345678 :
+4<<< >>> 8::: 12345678 :
+5<<< >>> 9::: 3456789 abc
+6<<< >>> 40::: DEFGHI 123
+27<<< truncation 41::: yzxyzxyz X
+28<<< trunc 42::: 89 1234567
+ -- Date/Time -- x Page 4
+
+
+ 43::: xyzxyzxyz
+ 44::: 456789 123
+ 5::: 12345678 :
+ 6::: 12345678 :
+ 7::: 12345678 :
+ 8::: 12345678 :
+ 49::: 89 1234567
+ 50::: 12345678
+ 1::: 12345678 :
+ 2::: 12345678 :
+ 3::: 12345678 :
+ 4::: 12345678 :
+ 55::: yzxyzxyz X
+ 56::: 89 1234567
+ -- Date/Time -- x Page 5
+
+
+29<<<xyzxyzxyz XY 57::: xyzxyzxyz
+30<<< 123456789 58::: 456789 123
+1<<< >>> 9::: 12345678 :
+2<<< abcdefghi 60::: DEFGHI 123
+3<<< >>> 1::: :::
+4<<< >>> 2::: :::
+5<<< >>> 3::: ------- EOF
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< abcdefghi
+40<<< 123456789
+41<<< XYZXYZXYZ
+42<<< 123456789
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43<<< xyzxyzxyz
+44<<< 123456789
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< >>>
+50<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< >>>
+4<<< >>>
+55<<< XYZXYZXYZ
+56<<< 123456789
+ -- Date/Time -- x Page 9
+
+
+57<<< xyzxyzxyz
+58<<< 123456789
+9<<< >>>
+60<<< 123456789
+ \ No newline at end of file
diff --git a/tests/pr/W72Jl17f-ll b/tests/pr/W72Jl17f-ll
new file mode 100644
index 0000000..1cbbf4e
--- /dev/null
+++ b/tests/pr/W72Jl17f-ll
@@ -0,0 +1,92 @@
+-- Date/Time -- x Page 1
+
+
+1<<< -Test: FF's in Text >>>
+2<<< -b -3 / -a -3 / ... >>>
+3<<< >>>
+4<<< 123456789 123456789 123456789 123456789 123456789 123456789 123456789 >>>
+
+6<<< -Arangements: One Empty Page >>>
+7<<< \f\f\n; text\f\n\ftext; \f\ftext; >>>
+8<<< f\f\n; \f\n\f\n; >>>
+9<<< >>>
+10<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< truncation before FF; r_r_o_l-test: >>>
+14<<< 123456789 123456789 123456789 >>>
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+15<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+16<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+7<<< >>>
+8<<< >>>
+9<<< >>>
+20<<< >>>
+1<<< >>>
+
+
+4<<< >>>
+5<<< >>>
+6<<< >>>
+27<<< truncation before FF; (r_l-test): >>>
+28<<< trunc
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+29<<<xyzxyzxyz XYZXYZXYZ abcabcab >>>
+30<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+1<<< >>>
+2<<< abcdefghi >>>
+3<<< >>>
+4<<< >>>
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< abcdefghi >>>
+40<<< 123456789 >>>
+41<<< XYZXYZXYZ abcabcab >>>
+42<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+44<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< >>>
+50<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< >>>
+4<<< >>>
+55<<< XYZXYZXYZ abcabcab >>>
+56<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 9
+
+
+57<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+58<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+9<<< >>>
+60<<< 123456789 >>>
+ \ No newline at end of file
diff --git a/tests/pr/a2l15-FF b/tests/pr/a2l15-FF
new file mode 100644
index 0000000..d3bc77f
--- /dev/null
+++ b/tests/pr/a2l15-FF
@@ -0,0 +1,195 @@
+
+
+-- Date/Time -- x Page 1
+
+
+1 FF-Test: FF's in Text 2 Options -b -3 / -a -3 / ...
+3 ------------------------------- 4 3456789 123456789 123456789 12345
+5 3 Columns downwards ..., <= 5 l 6 FF-Arangements: One Empty Page
+7 text\f\f\n; text\f\n\ftext; \f\ 8 \f\f\n; \f\n\f\n;
+9 10 zzzzzzzzzzzzzzzzzzzzzzzzzz12345
+
+
+
+
+
+
+
+-- Date/Time -- x Page 2
+
+
+1 2
+3 line truncation before FF; r_r_o_ 14 456789 123456789 123456789 12345
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab 16 456789 123456789 xyzxyzxyz XYZXY
+7 8
+9 3456789 ab 20 DEFGHI 123
+1 2
+3 4
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+5 6
+27 no truncation before FF; (r_l-te 28 no trunc
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 7
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab 30 456789 123456789 xyzxyzxyz XYZXY
+1 2 3456789 abcdefghi
+3 4
+5 6
+7 8
+
+
+
+
+
+
+
+-- Date/Time -- x Page 8
+
+
+9 3456789 abcdefghi 40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab 42 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 9
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 11
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab 44 456789 123456789 xyzxyzxyz XYZXY
+5 6
+7 8
+9 50
+1 2
+
+
+
+
+
+
+
+-- Date/Time -- x Page 12
+
+
+3 4
+55 yzxyzxyz XYZXYZXYZ abcabcab 56 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 13
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab 58 456789 123456789 xyzxyzxyz XYZXY
+9 60 DEFGHI 123456789
+
+
+
+
+
+
+
+
diff --git a/tests/pr/a2l17-FF b/tests/pr/a2l17-FF
new file mode 100644
index 0000000..c6700e6
--- /dev/null
+++ b/tests/pr/a2l17-FF
@@ -0,0 +1,153 @@
+
+
+-- Date/Time -- x Page 1
+
+
+1 FF-Test: FF's in Text 2 Options -b -3 / -a -3 / ...
+3 ------------------------------- 4 3456789 123456789 123456789 12345
+5 3 Columns downwards ..., <= 5 l 6 FF-Arangements: One Empty Page
+7 text\f\f\n; text\f\n\ftext; \f\ 8 \f\f\n; \f\n\f\n;
+9 10 zzzzzzzzzzzzzzzzzzzzzzzzzz12345
+1 2
+3 line truncation before FF; r_r_o_ 14 456789 123456789 123456789 12345
+
+
+
+
+
+
+
+-- Date/Time -- x Page 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 3
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab 16 456789 123456789 xyzxyzxyz XYZXY
+7 8
+9 3456789 ab 20 DEFGHI 123
+1 2
+3 4
+5 6
+27 no truncation before FF; (r_l-te 28 no trunc
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab 30 456789 123456789 xyzxyzxyz XYZXY
+1 2 3456789 abcdefghi
+3 4
+5 6
+7 8
+9 3456789 abcdefghi 40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab 42 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 8
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab 44 456789 123456789 xyzxyzxyz XYZXY
+5 6
+7 8
+9 50
+1 2
+3 4
+55 yzxyzxyz XYZXYZXYZ abcabcab 56 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 9
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab 58 456789 123456789 xyzxyzxyz XYZXY
+9 60 DEFGHI 123456789
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/a3-0F b/tests/pr/a3-0F
new file mode 100644
index 0000000..0cb5573
--- /dev/null
+++ b/tests/pr/a3-0F
@@ -0,0 +1,330 @@
+
+
+-- Date/Time -- x Page 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 2
+
+
+1 FF-Test: FF's at St 2 Options -b -3 / -a 3 -------------------
+4 3456789 123456789 123 5 3 Columns downwards 6 FF-Arangements: Emp
+7 \ftext; \f\ntext; 8 \f\ftext; \f\f\ntex 9 3456789 123456789 123
+10 zzzzzzzzzzzzzzzzzzz 1 2
+3 line truncation befor 14 456789 123456789 123
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+15 xyzxyzxyz XYZXYZXYZ 16 456789 123456789 xyz 7
+8 9 3456789 ab 20 DEFGHI 123
+1 2 3
+4 5 6
+27 no truncation before 28 no trunc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ 30 456789 123456789 xyz 1
+2 3456789 abcdefghi 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/a3f-0F b/tests/pr/a3f-0F
new file mode 100644
index 0000000..b7d0123
--- /dev/null
+++ b/tests/pr/a3f-0F
@@ -0,0 +1,30 @@
+-- Date/Time -- x Page 1
+
+
+
+ -- Date/Time -- x Page 2
+
+
+1 FF-Test: FF's at St 2 Options -b -3 / -a 3 -------------------
+4 3456789 123456789 123 5 3 Columns downwards 6 FF-Arangements: Emp
+7 \ftext; \f\ntext; 8 \f\ftext; \f\f\ntex 9 3456789 123456789 123
+10 zzzzzzzzzzzzzzzzzzz 1 2
+3 line truncation befor 14 456789 123456789 123
+ -- Date/Time -- x Page 3
+
+
+
+ -- Date/Time -- x Page 4
+
+
+15 xyzxyzxyz XYZXYZXYZ 16 456789 123456789 xyz 7
+8 9 3456789 ab 20 DEFGHI 123
+1 2 3
+4 5 6
+27 no truncation before 28 no trunc
+ -- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ 30 456789 123456789 xyz 1
+2 3456789 abcdefghi 3
+ \ No newline at end of file
diff --git a/tests/pr/a3f-0FF b/tests/pr/a3f-0FF
new file mode 100644
index 0000000..ec257d6
--- /dev/null
+++ b/tests/pr/a3f-0FF
@@ -0,0 +1,34 @@
+-- Date/Time -- x Page 1
+
+
+
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+1 FF-Test: FF's at St 2 Options -b -3 / -a 3 -------------------
+4 3456789 123456789 123 5 3 Columns downwards 6 FF-Arangements: Emp
+7 \ftext; \f\ntext; 8 \f\ftext; \f\f\ntex 9 3456789 123456789 123
+10 zzzzzzzzzzzzzzzzzzz 1 2
+3 line truncation befor 14 456789 123456789 123
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+15 xyzxyzxyz XYZXYZXYZ 16 456789 123456789 xyz 7
+8 9 3456789 ab 20 DEFGHI 123
+1 2 3
+4 5 6
+27 no truncation before 28 no trunc
+ -- Date/Time -- x Page 6
+
+
+29 xyzxyzxyz XYZXYZXYZ 30 456789 123456789 xyz 1
+2 3456789 abcdefghi 3
+ \ No newline at end of file
diff --git a/tests/pr/a3f-FF b/tests/pr/a3f-FF
new file mode 100644
index 0000000..45d1f82
--- /dev/null
+++ b/tests/pr/a3f-FF
@@ -0,0 +1,54 @@
+-- Date/Time -- x Page 1
+
+
+1 FF-Test: FF's in Te 2 Options -b -3 / -a 3 -------------------
+4 3456789 123456789 123 5 3 Columns downwards 6 FF-Arangements: One
+7 text\f\f\n; text\f\ 8 \f\f\n; \f\n\f\n; 9
+10 zzzzzzzzzzzzzzzzzzz 1 2
+3 line truncation befor 14 456789 123456789 123
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+15 xyzxyzxyz XYZXYZXYZ 16 456789 123456789 xyz 7
+8 9 3456789 ab 20 DEFGHI 123
+1 2 3
+4 5 6
+27 no truncation before 28 no trunc
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ 30 456789 123456789 xyz 1
+2 3456789 abcdefghi 3 4
+5 6 7
+8 9 3456789 abcdefghi 40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ a 42 456789 123456789 abc
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43 xyzxyzxyz XYZXYZXYZ 44 456789 123456789 xyz 5
+6 7 8
+9 50 1
+2 3 4
+55 yzxyzxyz XYZXYZXYZ a 56 456789 123456789 abc
+ -- Date/Time -- x Page 9
+
+
+57 xyzxyzxyz XYZXYZXYZ 58 456789 123456789 xyz 9
+60 DEFGHI 123456789
+ \ No newline at end of file
diff --git a/tests/pr/a3l15-t b/tests/pr/a3l15-t
new file mode 100644
index 0000000..7bd4b52
--- /dev/null
+++ b/tests/pr/a3l15-t
@@ -0,0 +1,75 @@
+
+
+-- Date/Time -- x Page 1
+
+
+1 Test-INPUT: "Withou 2 Options -b -3 [+2|+ 3 Options -a -3 [+2|+
+4 Options [+2|+ 5 6 -------------------
+7 3456789 123456789 123 8 3 Columns downwards 9 With columns use <
+10 without -f e.g.: - 1 with -f e.g. : - 2
+3 line truncation befor 14 456789 123456789 123 15 xyzxyzxyz XYZXYZXYZ
+
+
+
+
+
+
+
+-- Date/Time -- x Page 2
+
+
+16 456789 123456789 xyz 7 8
+9 3456789 ab 20 DEFGHI 123 1
+2 3 4
+5 6 27 no truncation before
+28 no trunc 29 xyzxyzxyz XYZXYZXYZ 30 456789 123456789 xyz
+
+
+
+
+
+
+
+-- Date/Time -- x Page 3
+
+
+1 2 3456789 abcdefghi 3
+4 5 6
+7 8 9 3456789 abcdefghi
+40 DEFGHI 123456789 41 yzxyzxyz XYZXYZXYZ a 42 456789 123456789 abc
+43 xyzxyzxyz XYZXYZXYZ 44 456789 123456789 xyz 5
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+6 7 8
+9 50 1
+2 3 4
+55 yzxyzxyz XYZXYZXYZ a 56 456789 123456789 abc 57 xyzxyzxyz XYZXYZXYZ
+58 456789 123456789 xyz 9 60 DEFGHI 123456789
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+1 2 3 ------- EOF --------
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/a3l17f-lm b/tests/pr/a3l17f-lm
new file mode 100644
index 0000000..833f3ec
--- /dev/null
+++ b/tests/pr/a3l17f-lm
@@ -0,0 +1,54 @@
+-- Date/Time -- x Page 1
+
+
+1<<< -Test: FF's in Te 2<<< -b -3 / -a -3 / . 3<<< >>>
+4<<< 123456789 1234567 6<<< -Arangements: One
+7<<< \f\f\n; text\f\n\ 8<<< f\f\n; \f\n\f\n; 9<<< >>>
+10<<< >>> 1<<< >>> 2<<< >>>
+3<<< truncation before 14<<< 123456789 123456
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+15<<< xyzxyzxyz XYZXYZ 16<<< 123456789 xyzxyz 7<<< >>>
+8<<< >>> 9<<< >>> 20<<< >>>
+1<<< >>>
+4<<< >>> 5<<< >>> 6<<< >>>
+27<<< truncation befor 28<<< trunc
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+29<<<xyzxyzxyz XYZXYZXY 30<<< 123456789 xyzxyz 1<<< >>>
+2<<< abcdefghi >>> 3<<< >>> 4<<< >>>
+5<<< >>> 6<<< >>> 7<<< >>>
+8<<< >>> 9<<< abcdefghi >>> 40<<< 123456789 >>>
+41<<< XYZXYZXYZ abcabc 42<<< 123456789 abcdef
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43<<< xyzxyzxyz XYZXYZ 44<<< 123456789 xyzxyz 5<<< >>>
+6<<< >>> 7<<< >>> 8<<< >>>
+9<<< >>> 50<<< >>> 1<<< >>>
+2<<< >>> 3<<< >>> 4<<< >>>
+55<<< XYZXYZXYZ abcabc 56<<< 123456789 abcdef
+ -- Date/Time -- x Page 9
+
+
+57<<< xyzxyzxyz XYZXYZ 58<<< 123456789 xyzxyz 9<<< >>>
+60<<< 123456789 >>>
+ \ No newline at end of file
diff --git a/tests/pr/a3l8f-t b/tests/pr/a3l8f-t
new file mode 100644
index 0000000..53b6aa2
--- /dev/null
+++ b/tests/pr/a3l8f-t
@@ -0,0 +1,37 @@
+-- Date/Time -- x Page 1
+
+
+1 Test-INPUT: "Withou 2 Options -b -3 [+2|+ 3 Options -a -3 [+2|+
+4 Options [+2|+ 5 6 -------------------
+7 3456789 123456789 123 8 3 Columns downwards 9 With columns use <
+10 without -f e.g.: - 1 with -f e.g. : - 2
+3 line truncation befor 14 456789 123456789 123 15 xyzxyzxyz XYZXYZXYZ
+ -- Date/Time -- x Page 2
+
+
+16 456789 123456789 xyz 7 8
+9 3456789 ab 20 DEFGHI 123 1
+2 3 4
+5 6 27 no truncation before
+28 no trunc 29 xyzxyzxyz XYZXYZXYZ 30 456789 123456789 xyz
+ -- Date/Time -- x Page 3
+
+
+1 2 3456789 abcdefghi 3
+4 5 6
+7 8 9 3456789 abcdefghi
+40 DEFGHI 123456789 41 yzxyzxyz XYZXYZXYZ a 42 456789 123456789 abc
+43 xyzxyzxyz XYZXYZXYZ 44 456789 123456789 xyz 5
+ -- Date/Time -- x Page 4
+
+
+6 7 8
+9 50 1
+2 3 4
+55 yzxyzxyz XYZXYZXYZ a 56 456789 123456789 abc 57 xyzxyzxyz XYZXYZXYZ
+58 456789 123456789 xyz 9 60 DEFGHI 123456789
+ -- Date/Time -- x Page 5
+
+
+1 2 3 ------- EOF --------
+ \ No newline at end of file
diff --git a/tests/pr/b2l15-FF b/tests/pr/b2l15-FF
new file mode 100644
index 0000000..c3008c1
--- /dev/null
+++ b/tests/pr/b2l15-FF
@@ -0,0 +1,195 @@
+
+
+-- Date/Time -- x Page 1
+
+
+1 FF-Test: FF's in Text 6 FF-Arangements: One Empty Page
+2 Options -b -3 / -a -3 / ... 7 text\f\f\n; text\f\n\ftext; \f\
+3 ------------------------------- 8 \f\f\n; \f\n\f\n;
+4 3456789 123456789 123456789 12345 9
+5 3 Columns downwards ..., <= 5 l 10 zzzzzzzzzzzzzzzzzzzzzzzzzz12345
+
+
+
+
+
+
+
+-- Date/Time -- x Page 2
+
+
+1 3 line truncation before FF; r_r_o_
+2 14 456789 123456789 123456789 12345
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab 20 DEFGHI 123
+16 456789 123456789 xyzxyzxyz XYZXY 1
+7 2
+8 3
+9 3456789 ab 4
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+5 27 no truncation before FF; (r_l-te
+6 28 no trunc
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 7
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab 4
+30 456789 123456789 xyzxyzxyz XYZXY 5
+1 6
+2 3456789 abcdefghi 7
+3 8
+
+
+
+
+
+
+
+-- Date/Time -- x Page 8
+
+
+9 3456789 abcdefghi 41 yzxyzxyz XYZXYZXYZ abcabcab
+40 DEFGHI 123456789 42 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 9
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 11
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab 8
+44 456789 123456789 xyzxyzxyz XYZXY 9
+5 50
+6 1
+7 2
+
+
+
+
+
+
+
+-- Date/Time -- x Page 12
+
+
+3 55 yzxyzxyz XYZXYZXYZ abcabcab
+4 56 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 13
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab 9
+58 456789 123456789 xyzxyzxyz XYZXY 60 DEFGHI 123456789
+
+
+
+
+
+
+
+
diff --git a/tests/pr/b2l17-FF b/tests/pr/b2l17-FF
new file mode 100644
index 0000000..1eec2e7
--- /dev/null
+++ b/tests/pr/b2l17-FF
@@ -0,0 +1,153 @@
+
+
+-- Date/Time -- x Page 1
+
+
+1 FF-Test: FF's in Text 8 \f\f\n; \f\n\f\n;
+2 Options -b -3 / -a -3 / ... 9
+3 ------------------------------- 10 zzzzzzzzzzzzzzzzzzzzzzzzzz12345
+4 3456789 123456789 123456789 12345 1
+5 3 Columns downwards ..., <= 5 l 2
+6 FF-Arangements: One Empty Page 3 line truncation before FF; r_r_o_
+7 text\f\f\n; text\f\n\ftext; \f\ 14 456789 123456789 123456789 12345
+
+
+
+
+
+
+
+-- Date/Time -- x Page 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 3
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab 2
+16 456789 123456789 xyzxyzxyz XYZXY 3
+7 4
+8 5
+9 3456789 ab 6
+20 DEFGHI 123 27 no truncation before FF; (r_l-te
+1 28 no trunc
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab 6
+30 456789 123456789 xyzxyzxyz XYZXY 7
+1 8
+2 3456789 abcdefghi 9 3456789 abcdefghi
+3 40 DEFGHI 123456789
+4 41 yzxyzxyz XYZXYZXYZ abcabcab
+5 42 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 8
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab 50
+44 456789 123456789 xyzxyzxyz XYZXY 1
+5 2
+6 3
+7 4
+8 55 yzxyzxyz XYZXYZXYZ abcabcab
+9 56 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 9
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab 9
+58 456789 123456789 xyzxyzxyz XYZXY 60 DEFGHI 123456789
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/b3-0F b/tests/pr/b3-0F
new file mode 100644
index 0000000..a75b6b3
--- /dev/null
+++ b/tests/pr/b3-0F
@@ -0,0 +1,330 @@
+
+
+-- Date/Time -- x Page 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 2
+
+
+1 FF-Test: FF's at St 6 FF-Arangements: Emp 1
+2 Options -b -3 / -a 7 \ftext; \f\ntext; 2
+3 ------------------- 8 \f\ftext; \f\f\ntex 3 line truncation befor
+4 3456789 123456789 123 9 3456789 123456789 123 14 456789 123456789 123
+5 3 Columns downwards 10 zzzzzzzzzzzzzzzzzzz
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+15 xyzxyzxyz XYZXYZXYZ 20 DEFGHI 123 5
+16 456789 123456789 xyz 1 6
+7 2 27 no truncation before
+8 3 28 no trunc
+9 3456789 ab 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ 1 3
+30 456789 123456789 xyz 2 3456789 abcdefghi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/b3f-0F b/tests/pr/b3f-0F
new file mode 100644
index 0000000..676912e
--- /dev/null
+++ b/tests/pr/b3f-0F
@@ -0,0 +1,30 @@
+-- Date/Time -- x Page 1
+
+
+
+ -- Date/Time -- x Page 2
+
+
+1 FF-Test: FF's at St 6 FF-Arangements: Emp 1
+2 Options -b -3 / -a 7 \ftext; \f\ntext; 2
+3 ------------------- 8 \f\ftext; \f\f\ntex 3 line truncation befor
+4 3456789 123456789 123 9 3456789 123456789 123 14 456789 123456789 123
+5 3 Columns downwards 10 zzzzzzzzzzzzzzzzzzz
+ -- Date/Time -- x Page 3
+
+
+
+ -- Date/Time -- x Page 4
+
+
+15 xyzxyzxyz XYZXYZXYZ 20 DEFGHI 123 5
+16 456789 123456789 xyz 1 6
+7 2 27 no truncation before
+8 3 28 no trunc
+9 3456789 ab 4
+ -- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ 1 3
+30 456789 123456789 xyz 2 3456789 abcdefghi
+ \ No newline at end of file
diff --git a/tests/pr/b3f-0FF b/tests/pr/b3f-0FF
new file mode 100644
index 0000000..41f07ea
--- /dev/null
+++ b/tests/pr/b3f-0FF
@@ -0,0 +1,34 @@
+-- Date/Time -- x Page 1
+
+
+
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+1 FF-Test: FF's at St 6 FF-Arangements: Emp 1
+2 Options -b -3 / -a 7 \ftext; \f\ntext; 2
+3 ------------------- 8 \f\ftext; \f\f\ntex 3 line truncation befor
+4 3456789 123456789 123 9 3456789 123456789 123 14 456789 123456789 123
+5 3 Columns downwards 10 zzzzzzzzzzzzzzzzzzz
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+15 xyzxyzxyz XYZXYZXYZ 20 DEFGHI 123 5
+16 456789 123456789 xyz 1 6
+7 2 27 no truncation before
+8 3 28 no trunc
+9 3456789 ab 4
+ -- Date/Time -- x Page 6
+
+
+29 xyzxyzxyz XYZXYZXYZ 1 3
+30 456789 123456789 xyz 2 3456789 abcdefghi
+ \ No newline at end of file
diff --git a/tests/pr/b3f-FF b/tests/pr/b3f-FF
new file mode 100644
index 0000000..70629f2
--- /dev/null
+++ b/tests/pr/b3f-FF
@@ -0,0 +1,54 @@
+-- Date/Time -- x Page 1
+
+
+1 FF-Test: FF's in Te 6 FF-Arangements: One 1
+2 Options -b -3 / -a 7 text\f\f\n; text\f\ 2
+3 ------------------- 8 \f\f\n; \f\n\f\n; 3 line truncation befor
+4 3456789 123456789 123 9 14 456789 123456789 123
+5 3 Columns downwards 10 zzzzzzzzzzzzzzzzzzz
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+15 xyzxyzxyz XYZXYZXYZ 20 DEFGHI 123 5
+16 456789 123456789 xyz 1 6
+7 2 27 no truncation before
+8 3 28 no trunc
+9 3456789 ab 4
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ 4 9 3456789 abcdefghi
+30 456789 123456789 xyz 5 40 DEFGHI 123456789
+1 6 41 yzxyzxyz XYZXYZXYZ a
+2 3456789 abcdefghi 7 42 456789 123456789 abc
+3 8
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43 xyzxyzxyz XYZXYZXYZ 8 3
+44 456789 123456789 xyz 9 4
+5 50 55 yzxyzxyz XYZXYZXYZ a
+6 1 56 456789 123456789 abc
+7 2
+ -- Date/Time -- x Page 9
+
+
+57 xyzxyzxyz XYZXYZXYZ 9 60 DEFGHI 123456789
+58 456789 123456789 xyz
+ \ No newline at end of file
diff --git a/tests/pr/b3l15-t b/tests/pr/b3l15-t
new file mode 100644
index 0000000..a2ee3fd
--- /dev/null
+++ b/tests/pr/b3l15-t
@@ -0,0 +1,75 @@
+
+
+-- Date/Time -- x Page 1
+
+
+1 Test-INPUT: "Withou 6 ------------------- 1 with -f e.g. : -
+2 Options -b -3 [+2|+ 7 3456789 123456789 123 2
+3 Options -a -3 [+2|+ 8 3 Columns downwards 3 line truncation befor
+4 Options [+2|+ 9 With columns use < 14 456789 123456789 123
+5 10 without -f e.g.: - 15 xyzxyzxyz XYZXYZXYZ
+
+
+
+
+
+
+
+-- Date/Time -- x Page 2
+
+
+16 456789 123456789 xyz 1 6
+7 2 27 no truncation before
+8 3 28 no trunc
+9 3456789 ab 4 29 xyzxyzxyz XYZXYZXYZ
+20 DEFGHI 123 5 30 456789 123456789 xyz
+
+
+
+
+
+
+
+-- Date/Time -- x Page 3
+
+
+1 6 41 yzxyzxyz XYZXYZXYZ a
+2 3456789 abcdefghi 7 42 456789 123456789 abc
+3 8 43 xyzxyzxyz XYZXYZXYZ
+4 9 3456789 abcdefghi 44 456789 123456789 xyz
+5 40 DEFGHI 123456789 5
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+6 1 56 456789 123456789 abc
+7 2 57 xyzxyzxyz XYZXYZXYZ
+8 3 58 456789 123456789 xyz
+9 4 9
+50 55 yzxyzxyz XYZXYZXYZ a 60 DEFGHI 123456789
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+1 2 3 ------- EOF --------
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/b3l17f-lm b/tests/pr/b3l17f-lm
new file mode 100644
index 0000000..dbb6484
--- /dev/null
+++ b/tests/pr/b3l17f-lm
@@ -0,0 +1,54 @@
+-- Date/Time -- x Page 1
+
+
+1<<< -Test: FF's in Te 6<<< -Arangements: One 1<<< >>>
+2<<< -b -3 / -a -3 / . 7<<< \f\f\n; text\f\n\ 2<<< >>>
+3<<< >>> 8<<< f\f\n; \f\n\f\n; 3<<< truncation before
+4<<< 123456789 1234567 9<<< >>> 14<<< 123456789 123456
+ 10<<< >>>
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+15<<< xyzxyzxyz XYZXYZ 20<<< >>> 5<<< >>>
+16<<< 123456789 xyzxyz 1<<< >>> 6<<< >>>
+7<<< >>> 27<<< truncation befor
+8<<< >>> 28<<< trunc
+9<<< >>> 4<<< >>>
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+29<<<xyzxyzxyz XYZXYZXY 4<<< >>> 9<<< abcdefghi >>>
+30<<< 123456789 xyzxyz 5<<< >>> 40<<< 123456789 >>>
+1<<< >>> 6<<< >>> 41<<< XYZXYZXYZ abcabc
+2<<< abcdefghi >>> 7<<< >>> 42<<< 123456789 abcdef
+3<<< >>> 8<<< >>>
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43<<< xyzxyzxyz XYZXYZ 8<<< >>> 3<<< >>>
+44<<< 123456789 xyzxyz 9<<< >>> 4<<< >>>
+5<<< >>> 50<<< >>> 55<<< XYZXYZXYZ abcabc
+6<<< >>> 1<<< >>> 56<<< 123456789 abcdef
+7<<< >>> 2<<< >>>
+ -- Date/Time -- x Page 9
+
+
+57<<< xyzxyzxyz XYZXYZ 9<<< >>> 60<<< 123456789 >>>
+58<<< 123456789 xyzxyz
+ \ No newline at end of file
diff --git a/tests/pr/b3l8f-t b/tests/pr/b3l8f-t
new file mode 100644
index 0000000..a0ca0fb
--- /dev/null
+++ b/tests/pr/b3l8f-t
@@ -0,0 +1,37 @@
+-- Date/Time -- x Page 1
+
+
+1 Test-INPUT: "Withou 6 ------------------- 1 with -f e.g. : -
+2 Options -b -3 [+2|+ 7 3456789 123456789 123 2
+3 Options -a -3 [+2|+ 8 3 Columns downwards 3 line truncation befor
+4 Options [+2|+ 9 With columns use < 14 456789 123456789 123
+5 10 without -f e.g.: - 15 xyzxyzxyz XYZXYZXYZ
+ -- Date/Time -- x Page 2
+
+
+16 456789 123456789 xyz 1 6
+7 2 27 no truncation before
+8 3 28 no trunc
+9 3456789 ab 4 29 xyzxyzxyz XYZXYZXYZ
+20 DEFGHI 123 5 30 456789 123456789 xyz
+ -- Date/Time -- x Page 3
+
+
+1 6 41 yzxyzxyz XYZXYZXYZ a
+2 3456789 abcdefghi 7 42 456789 123456789 abc
+3 8 43 xyzxyzxyz XYZXYZXYZ
+4 9 3456789 abcdefghi 44 456789 123456789 xyz
+5 40 DEFGHI 123456789 5
+ -- Date/Time -- x Page 4
+
+
+6 1 56 456789 123456789 abc
+7 2 57 xyzxyzxyz XYZXYZXYZ
+8 3 58 456789 123456789 xyz
+9 4 9
+50 55 yzxyzxyz XYZXYZXYZ a 60 DEFGHI 123456789
+ -- Date/Time -- x Page 5
+
+
+1 2 3 ------- EOF --------
+ \ No newline at end of file
diff --git a/tests/pr/col-0.C.I b/tests/pr/col-0.C.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/pr/col-0.C.I
diff --git a/tests/pr/col-0.C.X b/tests/pr/col-0.C.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/pr/col-0.C.X
diff --git a/tests/pr/col-0.I b/tests/pr/col-0.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/pr/col-0.I
diff --git a/tests/pr/col-0.X b/tests/pr/col-0.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/pr/col-0.X
diff --git a/tests/pr/col-02.C.I b/tests/pr/col-02.C.I
new file mode 100644
index 0000000..de98044
--- /dev/null
+++ b/tests/pr/col-02.C.I
@@ -0,0 +1,3 @@
+a
+b
+c
diff --git a/tests/pr/col-02.C.X b/tests/pr/col-02.C.X
new file mode 100644
index 0000000..2363f52
--- /dev/null
+++ b/tests/pr/col-02.C.X
@@ -0,0 +1,2 @@
+a c
+b
diff --git a/tests/pr/col-02.I b/tests/pr/col-02.I
new file mode 100644
index 0000000..de98044
--- /dev/null
+++ b/tests/pr/col-02.I
@@ -0,0 +1,3 @@
+a
+b
+c
diff --git a/tests/pr/col-02.X b/tests/pr/col-02.X
new file mode 100644
index 0000000..2363f52
--- /dev/null
+++ b/tests/pr/col-02.X
@@ -0,0 +1,2 @@
+a c
+b
diff --git a/tests/pr/col-2.C.I b/tests/pr/col-2.C.I
new file mode 100644
index 0000000..de98044
--- /dev/null
+++ b/tests/pr/col-2.C.I
@@ -0,0 +1,3 @@
+a
+b
+c
diff --git a/tests/pr/col-2.C.X b/tests/pr/col-2.C.X
new file mode 100644
index 0000000..2363f52
--- /dev/null
+++ b/tests/pr/col-2.C.X
@@ -0,0 +1,2 @@
+a c
+b
diff --git a/tests/pr/col-2.I b/tests/pr/col-2.I
new file mode 100644
index 0000000..de98044
--- /dev/null
+++ b/tests/pr/col-2.I
@@ -0,0 +1,3 @@
+a
+b
+c
diff --git a/tests/pr/col-2.X b/tests/pr/col-2.X
new file mode 100644
index 0000000..2363f52
--- /dev/null
+++ b/tests/pr/col-2.X
@@ -0,0 +1,2 @@
+a c
+b
diff --git a/tests/pr/col-inval.C.I b/tests/pr/col-inval.C.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/pr/col-inval.C.I
diff --git a/tests/pr/col-inval.C.X b/tests/pr/col-inval.C.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/pr/col-inval.C.X
diff --git a/tests/pr/col-inval.I b/tests/pr/col-inval.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/pr/col-inval.I
diff --git a/tests/pr/col-inval.X b/tests/pr/col-inval.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/pr/col-inval.X
diff --git a/tests/pr/col-last.I b/tests/pr/col-last.I
new file mode 100644
index 0000000..de98044
--- /dev/null
+++ b/tests/pr/col-last.I
@@ -0,0 +1,3 @@
+a
+b
+c
diff --git a/tests/pr/col-last.X b/tests/pr/col-last.X
new file mode 100644
index 0000000..2363f52
--- /dev/null
+++ b/tests/pr/col-last.X
@@ -0,0 +1,2 @@
+a c
+b
diff --git a/tests/pr/col-long.C.I b/tests/pr/col-long.C.I
new file mode 100644
index 0000000..de98044
--- /dev/null
+++ b/tests/pr/col-long.C.I
@@ -0,0 +1,3 @@
+a
+b
+c
diff --git a/tests/pr/col-long.C.X b/tests/pr/col-long.C.X
new file mode 100644
index 0000000..2363f52
--- /dev/null
+++ b/tests/pr/col-long.C.X
@@ -0,0 +1,2 @@
+a c
+b
diff --git a/tests/pr/col-long.I b/tests/pr/col-long.I
new file mode 100644
index 0000000..de98044
--- /dev/null
+++ b/tests/pr/col-long.I
@@ -0,0 +1,3 @@
+a
+b
+c
diff --git a/tests/pr/col-long.X b/tests/pr/col-long.X
new file mode 100644
index 0000000..2363f52
--- /dev/null
+++ b/tests/pr/col-long.X
@@ -0,0 +1,2 @@
+a c
+b
diff --git a/tests/pr/dbl-sp-a.I b/tests/pr/dbl-sp-a.I
new file mode 100644
index 0000000..1191247
--- /dev/null
+++ b/tests/pr/dbl-sp-a.I
@@ -0,0 +1,2 @@
+1
+2
diff --git a/tests/pr/dbl-sp-a.X b/tests/pr/dbl-sp-a.X
new file mode 100644
index 0000000..eefbf3f
--- /dev/null
+++ b/tests/pr/dbl-sp-a.X
@@ -0,0 +1,14 @@
+
+
+-- Date/Time -- Page 1
+
+
+1
+
+2
+
+
+
+
+
+
diff --git a/tests/pr/dbl-sp-b.I b/tests/pr/dbl-sp-b.I
new file mode 100644
index 0000000..1191247
--- /dev/null
+++ b/tests/pr/dbl-sp-b.I
@@ -0,0 +1,2 @@
+1
+2
diff --git a/tests/pr/dbl-sp-b.X b/tests/pr/dbl-sp-b.X
new file mode 100644
index 0000000..c8a8bb0
--- /dev/null
+++ b/tests/pr/dbl-sp-b.X
@@ -0,0 +1,4 @@
+1
+
+2
+
diff --git a/tests/pr/i-opt-a.I b/tests/pr/i-opt-a.I
new file mode 100644
index 0000000..e314bf1
--- /dev/null
+++ b/tests/pr/i-opt-a.I
@@ -0,0 +1 @@
+a b
diff --git a/tests/pr/i-opt-a.X b/tests/pr/i-opt-a.X
new file mode 100644
index 0000000..e49a99d
--- /dev/null
+++ b/tests/pr/i-opt-a.X
@@ -0,0 +1 @@
+ 1 a b
diff --git a/tests/pr/i-opt-b.I b/tests/pr/i-opt-b.I
new file mode 100644
index 0000000..e314bf1
--- /dev/null
+++ b/tests/pr/i-opt-b.I
@@ -0,0 +1 @@
+a b
diff --git a/tests/pr/i-opt-b.X b/tests/pr/i-opt-b.X
new file mode 100644
index 0000000..a797ffe
--- /dev/null
+++ b/tests/pr/i-opt-b.X
@@ -0,0 +1 @@
+ 1 a b
diff --git a/tests/pr/l17f-t b/tests/pr/l17f-t
new file mode 100644
index 0000000..a6d1463
--- /dev/null
+++ b/tests/pr/l17f-t
@@ -0,0 +1,79 @@
+-- Date/Time -- x Page 1
+
+
+1 Test-INPUT: "Without FF set by Hand" V
+2 Options -b -3 [+2|+3] [-l 15|8] [-f]
+3 Options -a -3 [+2|+3] [-l 15|8] [-f]
+4 Options [+2|+3] [-l 24|17] [-f]
+5
+6 --------------------------------------------
+7 3456789 123456789 123456789 123456789 12345678
+8 3 Columns downwards, across, ...:
+9 With columns use <= 5 text lines/page,
+10 without -f e.g.: -l 15 = total lines/page,
+1 with -f e.g. : -l 8 -f
+2
+3 line truncation before new page; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+ -- Date/Time -- x Page 2
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before nwe page; (r_l-test):
+28 no trunc
+ -- Date/Time -- x Page 3
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 4
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 5
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
+1
+2
+3 ------- EOF -------- EOF -------- EOF -------
+ \ No newline at end of file
diff --git a/tests/pr/l24-FF b/tests/pr/l24-FF
new file mode 100644
index 0000000..e9f3154
--- /dev/null
+++ b/tests/pr/l24-FF
@@ -0,0 +1,216 @@
+
+
+-- Date/Time -- x Page 1
+
+
+1 FF-Test: FF's in Text V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: One Empty Page
+7 text\f\f\n; text\f\n\ftext; \f\ftext;
+8 \f\f\n; \f\n\f\n;
+9
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+
+
+
+
+
+
+
+-- Date/Time -- x Page 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 3
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+
+
+
+
+
+
+
+-- Date/Time -- x Page 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 8
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+
+
+
+
+
+
+
+-- Date/Time -- x Page 9
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/l24-t b/tests/pr/l24-t
new file mode 100644
index 0000000..d07b88d
--- /dev/null
+++ b/tests/pr/l24-t
@@ -0,0 +1,120 @@
+
+
+-- Date/Time -- x Page 1
+
+
+1 Test-INPUT: "Without FF set by Hand" V
+2 Options -b -3 [+2|+3] [-l 15|8] [-f]
+3 Options -a -3 [+2|+3] [-l 15|8] [-f]
+4 Options [+2|+3] [-l 24|17] [-f]
+5
+6 --------------------------------------------
+7 3456789 123456789 123456789 123456789 12345678
+8 3 Columns downwards, across, ...:
+9 With columns use <= 5 text lines/page,
+10 without -f e.g.: -l 15 = total lines/page,
+1 with -f e.g. : -l 8 -f
+2
+3 line truncation before new page; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+
+
+
+
+
+
+
+-- Date/Time -- x Page 2
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before nwe page; (r_l-test):
+28 no trunc
+
+
+
+
+
+
+
+-- Date/Time -- x Page 3
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
+1
+2
+3 ------- EOF -------- EOF -------- EOF -------
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/loli b/tests/pr/loli
new file mode 100644
index 0000000..08120c0
--- /dev/null
+++ b/tests/pr/loli
@@ -0,0 +1,63 @@
+1::: Test-INPUT: "Without FF set by Hand" :::
+2::: Options -b -3 [+2|+3] [-l 15|8] [-f] :::
+3::: Options -a -3 [+2|+3] [-l 15|8] [-f] :::
+4::: Options [+2|+3] [-l 24|17] [-f] :::
+5::: :::
+6::: -------------------------------------------- :::
+7::: 789 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+8::: 3 Columns downwards, across, ...: :::
+9::: With columns use <= 5 text lines/page, :::
+10::: without -f e.g.: -l 15 = total lines/page, :::
+1::: with -f e.g. : -l 8 -f :::
+2::: :::
+3::: line truncation before new page; r_r_o_l-test: :::
+14::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+15::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+16::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+7::: 12345678 :::
+8::: 12345678 :::
+9::: 3456789 ab :::
+20::: DEFGHI 123 :::
+21::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+2::: 12345678 :::
+3::: 12345678 :::
+4::: 12345678 :::
+5::: 12345678 :::
+6::: 12345678 :::
+27::: no truncation before nwe page; (r_l-test): :::
+28::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+29::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+30::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+1::: 12345678 :::
+2::: 3456789 abcdefghi :::
+3::: 12345678 :::
+4::: 12345678 :::
+35::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+6::: 12345678 :::
+7::: 12345678 :::
+8::: 12345678 :::
+9::: 3456789 abcdefghi :::
+40::: DEFGHI 123456789 :::
+41::: yzxyzxyz XYZXYZXYZ abcabcab :::
+42::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+43::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+44::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+5::: 12345678 :::
+6::: 12345678 :::
+7::: 12345678 :::
+8::: 12345678 :::
+49::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+50::: 12345678 :::
+1::: 12345678 :::
+2::: 12345678 :::
+3::: 12345678 :::
+4::: 12345678 :::
+55::: yzxyzxyz XYZXYZXYZ abcabcab :::
+56::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+57::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+58::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+9::: 12345678 :::
+60::: DEFGHI 123456789 :::
+1::: :::
+2::: :::
+3::: ------- EOF -------- EOF -------- EOF ------- EOF ------- EOF ------- EOF :::
diff --git a/tests/pr/margin-0.I b/tests/pr/margin-0.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/pr/margin-0.I
diff --git a/tests/pr/margin-0.X b/tests/pr/margin-0.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/pr/margin-0.X
diff --git a/tests/pr/ml17f-0F b/tests/pr/ml17f-0F
new file mode 100644
index 0000000..0fc93bd
--- /dev/null
+++ b/tests/pr/ml17f-0F
@@ -0,0 +1,51 @@
+-- Date/Time -- x Page 1
+
+
+
+ -- Date/Time -- x Page 2
+
+
+1 FF-Test: FF's at Start of File 1 FF-Test: FF's at Start of File
+2 Options -b -3 / -a -3 / ... 2 Options -b -3 / -a -3 / ...
+3 ------------------------------- 3 -------------------------------
+4 3456789 123456789 123456789 12345 4 3456789 123456789 123456789 12345
+5 3 Columns downwards ..., <= 5 l 5 3 Columns downwards ..., <= 5 l
+6 FF-Arangements: Empty Pages at 6 FF-Arangements: Empty Pages at
+7 \ftext; \f\ntext; 7 \ftext; \f\ntext;
+8 \f\ftext; \f\f\ntext; \f\n\ftex 8 \f\ftext; \f\f\ntext; \f\n\ftex
+9 3456789 123456789 123456789 9 3456789 123456789 123456789
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz12345 10 zzzzzzzzzzzzzzzzzzzzzzzzzz12345
+1 1
+2 2
+3 line truncation before FF; r_r_o_ 3 line truncation before FF; r_r_o_
+14 456789 123456789 123456789 12345 14 456789 123456789 123456789 12345
+ -- Date/Time -- x Page 3
+
+
+
+ -- Date/Time -- x Page 4
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab 15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXY 16 456789 123456789 xyzxyzxyz XYZXY
+7 7
+8 8
+9 3456789 ab 9 3456789 ab
+20 DEFGHI 123 20 DEFGHI 123
+1 1
+2 2
+3 3
+4 4
+5 5
+6 6
+27 no truncation before FF; (r_l-te 27 no truncation before FF; (r_l-te
+28 no trunc 28 no trunc
+ -- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab 29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXY 30 456789 123456789 xyzxyzxyz XYZXY
+1 1
+2 3456789 abcdefghi 2 3456789 abcdefghi
+3 3
+ \ No newline at end of file
diff --git a/tests/pr/ml17f-lm-lo b/tests/pr/ml17f-lm-lo
new file mode 100644
index 0000000..d8a4ddd
--- /dev/null
+++ b/tests/pr/ml17f-lm-lo
@@ -0,0 +1,118 @@
+-- Date/Time -- x Page 1
+
+
+1<<< -Test: FF's in Text 1::: Test-INPUT: "Without FF set b
+2<<< -b -3 / -a -3 / ... >>> 2::: Options -b -3 [+2|+3] [-l 15|
+3<<< >>> 3::: Options -a -3 [+2|+3] [-l 15|
+4<<< 123456789 123456789 123456789 4::: Options [+2|+3] [-l 24|
+ 5::: :::
+6<<< -Arangements: One Empty Page 6::: -----------------------------
+7<<< \f\f\n; text\f\n\ftext; \f\ft 7::: 789 123456789 123456789 12345
+8<<< f\f\n; \f\n\f\n; >>> 8::: 3 Columns downwards, across,
+9<<< >>> 9::: With columns use <= 5 text l
+10<<< >>> 10::: without -f e.g.: -l 15 = to
+1<<< >>> 1::: with -f e.g. : -l 8 -f ::
+2<<< >>> 2::: :::
+3<<< truncation before FF; r_r_o_l 3::: line truncation before new pa
+14<<< 123456789 123456789 12345678 14::: 89 123456789 123456789 12345
+ -- Date/Time -- x Page 2
+
+
+ 15::: xyzxyzxyz XYZXYZXYZ abcabcab
+ 16::: 456789 123456789 xyzxyzxyz X
+ 7::: 12345678 :::
+ 8::: 12345678 :::
+ 9::: 3456789 ab :::
+ 20::: DEFGHI 123 :::
+ 21::: 89 123456789 123456789 12345
+ 2::: 12345678 :::
+ 3::: 12345678 :::
+ 4::: 12345678 :::
+ 5::: 12345678 :::
+ 6::: 12345678 :::
+ 27::: no truncation before nwe pag
+ 28::: 89 123456789 123456789 12345
+ -- Date/Time -- x Page 3
+
+
+15<<< xyzxyzxyz XYZXYZXYZ abcabcab 29::: xyzxyzxyz XYZXYZXYZ abcabcab
+16<<< 123456789 xyzxyzxyz XYZXYZXY 30::: 456789 123456789 xyzxyzxyz X
+7<<< >>> 1::: 12345678 :::
+8<<< >>> 2::: 3456789 abcdefghi :::
+9<<< >>> 3::: 12345678 :::
+20<<< >>> 4::: 12345678 :::
+1<<< >>> 35::: 89 123456789 123456789 12345
+ 6::: 12345678 :::
+ 7::: 12345678 :::
+4<<< >>> 8::: 12345678 :::
+5<<< >>> 9::: 3456789 abcdefghi :::
+6<<< >>> 40::: DEFGHI 123456789 :::
+27<<< truncation before FF; (r_l-t 41::: yzxyzxyz XYZXYZXYZ abcabcab
+28<<< trunc 42::: 89 123456789 123456789 12345
+ -- Date/Time -- x Page 4
+
+
+ 43::: xyzxyzxyz XYZXYZXYZ abcabcab
+ 44::: 456789 123456789 xyzxyzxyz X
+ 5::: 12345678 :::
+ 6::: 12345678 :::
+ 7::: 12345678 :::
+ 8::: 12345678 :::
+ 49::: 89 123456789 123456789 12345
+ 50::: 12345678 :::
+ 1::: 12345678 :::
+ 2::: 12345678 :::
+ 3::: 12345678 :::
+ 4::: 12345678 :::
+ 55::: yzxyzxyz XYZXYZXYZ abcabcab
+ 56::: 89 123456789 123456789 12345
+ -- Date/Time -- x Page 5
+
+
+29<<<xyzxyzxyz XYZXYZXYZ abcabcab 57::: xyzxyzxyz XYZXYZXYZ abcabcab
+30<<< 123456789 xyzxyzxyz XYZXYZXY 58::: 456789 123456789 xyzxyzxyz X
+1<<< >>> 9::: 12345678 :::
+2<<< abcdefghi >>> 60::: DEFGHI 123456789 :::
+3<<< >>> 1::: :::
+4<<< >>> 2::: :::
+5<<< >>> 3::: ------- EOF -------- EOF ----
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< abcdefghi >>>
+40<<< 123456789 >>>
+41<<< XYZXYZXYZ abcabcab >>>
+42<<< 123456789 abcdefghi ABCDEDFH
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43<<< xyzxyzxyz XYZXYZXYZ abcabcab
+44<<< 123456789 xyzxyzxyz XYZXYZXY
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< >>>
+50<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< >>>
+4<<< >>>
+55<<< XYZXYZXYZ abcabcab >>>
+56<<< 123456789 abcdefghi ABCDEDFH
+ -- Date/Time -- x Page 9
+
+
+57<<< xyzxyzxyz XYZXYZXYZ abcabcab
+58<<< 123456789 xyzxyzxyz XYZXYZXY
+9<<< >>>
+60<<< 123456789 >>>
+ \ No newline at end of file
diff --git a/tests/pr/ml17f-t b/tests/pr/ml17f-t
new file mode 100644
index 0000000..1f35bc2
--- /dev/null
+++ b/tests/pr/ml17f-t
@@ -0,0 +1,79 @@
+-- Date/Time -- x Page 1
+
+
+1 Test-INPUT: "Without FF set by 1 Test-INPUT: "Without FF set by
+2 Options -b -3 [+2|+3] [-l 15|8] 2 Options -b -3 [+2|+3] [-l 15|8]
+3 Options -a -3 [+2|+3] [-l 15|8] 3 Options -a -3 [+2|+3] [-l 15|8]
+4 Options [+2|+3] [-l 24|17 4 Options [+2|+3] [-l 24|17
+5 5
+6 ------------------------------- 6 -------------------------------
+7 3456789 123456789 123456789 12345 7 3456789 123456789 123456789 12345
+8 3 Columns downwards, across, .. 8 3 Columns downwards, across, ..
+9 With columns use <= 5 text lin 9 With columns use <= 5 text lin
+10 without -f e.g.: -l 15 = total 10 without -f e.g.: -l 15 = total
+1 with -f e.g. : -l 8 -f 1 with -f e.g. : -l 8 -f
+2 2
+3 line truncation before new page; 3 line truncation before new page;
+14 456789 123456789 123456789 12345 14 456789 123456789 123456789 12345
+ -- Date/Time -- x Page 2
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab 15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXY 16 456789 123456789 xyzxyzxyz XYZXY
+7 7
+8 8
+9 3456789 ab 9 3456789 ab
+20 DEFGHI 123 20 DEFGHI 123
+1 1
+2 2
+3 3
+4 4
+5 5
+6 6
+27 no truncation before nwe page; ( 27 no truncation before nwe page; (
+28 no trunc 28 no trunc
+ -- Date/Time -- x Page 3
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab 29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXY 30 456789 123456789 xyzxyzxyz XYZXY
+1 1
+2 3456789 abcdefghi 2 3456789 abcdefghi
+3 3
+4 4
+5 5
+6 6
+7 7
+8 8
+9 3456789 abcdefghi 9 3456789 abcdefghi
+40 DEFGHI 123456789 40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab 41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDE 42 456789 123456789 abcdefghi ABCDE
+ -- Date/Time -- x Page 4
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab 43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXY 44 456789 123456789 xyzxyzxyz XYZXY
+5 5
+6 6
+7 7
+8 8
+9 9
+50 50
+1 1
+2 2
+3 3
+4 4
+55 yzxyzxyz XYZXYZXYZ abcabcab 55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDE 56 456789 123456789 abcdefghi ABCDE
+ -- Date/Time -- x Page 5
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab 57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXY 58 456789 123456789 xyzxyzxyz XYZXY
+9 9
+60 DEFGHI 123456789 60 DEFGHI 123456789
+1 1
+2 2
+3 ------- EOF -------- EOF ------- 3 ------- EOF -------- EOF -------
+ \ No newline at end of file
diff --git a/tests/pr/ml17f-t-0F b/tests/pr/ml17f-t-0F
new file mode 100644
index 0000000..b0eba43
--- /dev/null
+++ b/tests/pr/ml17f-t-0F
@@ -0,0 +1,79 @@
+-- Date/Time -- x Page 1
+
+
+1 Test-INPUT: "Without FF set by
+2 Options -b -3 [+2|+3] [-l 15|8]
+3 Options -a -3 [+2|+3] [-l 15|8]
+4 Options [+2|+3] [-l 24|17
+5
+6 -------------------------------
+7 3456789 123456789 123456789 12345
+8 3 Columns downwards, across, ..
+9 With columns use <= 5 text lin
+10 without -f e.g.: -l 15 = total
+1 with -f e.g. : -l 8 -f
+2
+3 line truncation before new page;
+14 456789 123456789 123456789 12345
+ -- Date/Time -- x Page 2
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab 1 FF-Test: FF's at Start of File
+16 456789 123456789 xyzxyzxyz XYZXY 2 Options -b -3 / -a -3 / ...
+7 3 -------------------------------
+8 4 3456789 123456789 123456789 12345
+9 3456789 ab 5 3 Columns downwards ..., <= 5 l
+20 DEFGHI 123 6 FF-Arangements: Empty Pages at
+1 7 \ftext; \f\ntext;
+2 8 \f\ftext; \f\f\ntext; \f\n\ftex
+3 9 3456789 123456789 123456789
+4 10 zzzzzzzzzzzzzzzzzzzzzzzzzz12345
+5 1
+6 2
+27 no truncation before nwe page; ( 3 line truncation before FF; r_r_o_
+28 no trunc 14 456789 123456789 123456789 12345
+ -- Date/Time -- x Page 3
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXY
+1
+2 3456789 abcdefghi
+3
+4
+5
+6
+7
+8
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDE
+ -- Date/Time -- x Page 4
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab 15 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXY 16 456789 123456789 xyzxyzxyz XYZXY
+5 7
+6 8
+7 9 3456789 ab
+8 20 DEFGHI 123
+9 1
+50 2
+1 3
+2 4
+3 5
+4 6
+55 yzxyzxyz XYZXYZXYZ abcabcab 27 no truncation before FF; (r_l-te
+56 456789 123456789 abcdefghi ABCDE 28 no trunc
+ -- Date/Time -- x Page 5
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab 29 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXY 30 456789 123456789 xyzxyzxyz XYZXY
+9 1
+60 DEFGHI 123456789 2 3456789 abcdefghi
+1 3
+2
+3 ------- EOF -------- EOF -------
+ \ No newline at end of file
diff --git a/tests/pr/ml20-FF-t b/tests/pr/ml20-FF-t
new file mode 100644
index 0000000..53cb6eb
--- /dev/null
+++ b/tests/pr/ml20-FF-t
@@ -0,0 +1,260 @@
+
+
+-- Date/Time -- x Page 1
+
+
+1 FF-Test: FF's in Text 1 Test-INPUT: "Without FF set by
+2 Options -b -3 / -a -3 / ... 2 Options -b -3 [+2|+3] [-l 15|8]
+3 ------------------------------- 3 Options -a -3 [+2|+3] [-l 15|8]
+4 3456789 123456789 123456789 12345 4 Options [+2|+3] [-l 24|17
+5 3 Columns downwards ..., <= 5 l 5
+6 FF-Arangements: One Empty Page 6 -------------------------------
+7 text\f\f\n; text\f\n\ftext; \f\ 7 3456789 123456789 123456789 12345
+8 \f\f\n; \f\n\f\n; 8 3 Columns downwards, across, ..
+9 9 With columns use <= 5 text lin
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz12345 10 without -f e.g.: -l 15 = total
+
+
+
+
+
+
+
+-- Date/Time -- x Page 2
+
+
+1 1 with -f e.g. : -l 8 -f
+2 2
+3 line truncation before FF; r_r_o_ 3 line truncation before new page;
+14 456789 123456789 123456789 12345 14 456789 123456789 123456789 12345
+ 15 xyzxyzxyz XYZXYZXYZ abcabcab
+ 16 456789 123456789 xyzxyzxyz XYZXY
+ 7
+ 8
+ 9 3456789 ab
+ 20 DEFGHI 123
+
+
+
+
+
+
+
+-- Date/Time -- x Page 3
+
+
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 27 no truncation before nwe page; (
+ 28 no trunc
+ 29 xyzxyzxyz XYZXYZXYZ abcabcab
+ 30 456789 123456789 xyzxyzxyz XYZXY
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab 1
+16 456789 123456789 xyzxyzxyz XYZXY 2 3456789 abcdefghi
+7 3
+8 4
+9 3456789 ab 5
+20 DEFGHI 123 6
+1 7
+2 8
+3 9 3456789 abcdefghi
+4 40 DEFGHI 123456789
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+5 41 yzxyzxyz XYZXYZXYZ abcabcab
+6 42 456789 123456789 abcdefghi ABCDE
+27 no truncation before FF; (r_l-te 43 xyzxyzxyz XYZXYZXYZ abcabcab
+28 no trunc 44 456789 123456789 xyzxyzxyz XYZXY
+ 5
+ 6
+ 7
+ 8
+ 9
+ 50
+
+
+
+
+
+
+
+-- Date/Time -- x Page 6
+
+
+ 1
+ 2
+ 3
+ 4
+ 55 yzxyzxyz XYZXYZXYZ abcabcab
+ 56 456789 123456789 abcdefghi ABCDE
+ 57 xyzxyzxyz XYZXYZXYZ abcabcab
+ 58 456789 123456789 xyzxyzxyz XYZXY
+ 9
+ 60 DEFGHI 123456789
+
+
+
+
+
+
+
+-- Date/Time -- x Page 7
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab 1
+30 456789 123456789 xyzxyzxyz XYZXY 2
+1 3 ------- EOF -------- EOF -------
+2 3456789 abcdefghi
+3
+4
+5
+6
+7
+8
+
+
+
+
+
+
+
+-- Date/Time -- x Page 8
+
+
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 9
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 11
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXY
+5
+6
+7
+8
+9
+50
+1
+2
+
+
+
+
+
+
+
+-- Date/Time -- x Page 12
+
+
+3
+4
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 13
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXY
+9
+60 DEFGHI 123456789
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/ml24-FF b/tests/pr/ml24-FF
new file mode 100644
index 0000000..c36edb7
--- /dev/null
+++ b/tests/pr/ml24-FF
@@ -0,0 +1,216 @@
+
+
+-- Date/Time -- x Page 1
+
+
+1 FF-Test: FF's in Text 1 FF-Test: FF's in Text
+2 Options -b -3 / -a -3 / ... 2 Options -b -3 / -a -3 / ...
+3 ------------------------------- 3 -------------------------------
+4 3456789 123456789 123456789 12345 4 3456789 123456789 123456789 12345
+5 3 Columns downwards ..., <= 5 l 5 3 Columns downwards ..., <= 5 l
+6 FF-Arangements: One Empty Page 6 FF-Arangements: One Empty Page
+7 text\f\f\n; text\f\n\ftext; \f\ 7 text\f\f\n; text\f\n\ftext; \f\
+8 \f\f\n; \f\n\f\n; 8 \f\f\n; \f\n\f\n;
+9 9
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz12345 10 zzzzzzzzzzzzzzzzzzzzzzzzzz12345
+1 1
+2 2
+3 line truncation before FF; r_r_o_ 3 line truncation before FF; r_r_o_
+14 456789 123456789 123456789 12345 14 456789 123456789 123456789 12345
+
+
+
+
+
+
+
+-- Date/Time -- x Page 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 3
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab 15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXY 16 456789 123456789 xyzxyzxyz XYZXY
+7 7
+8 8
+9 3456789 ab 9 3456789 ab
+20 DEFGHI 123 20 DEFGHI 123
+1 1
+2 2
+3 3
+4 4
+5 5
+6 6
+27 no truncation before FF; (r_l-te 27 no truncation before FF; (r_l-te
+28 no trunc 28 no trunc
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab 29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXY 30 456789 123456789 xyzxyzxyz XYZXY
+1 1
+2 3456789 abcdefghi 2 3456789 abcdefghi
+3 3
+4 4
+5 5
+6 6
+7 7
+8 8
+9 3456789 abcdefghi 9 3456789 abcdefghi
+40 DEFGHI 123456789 40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab 41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDE 42 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 8
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab 43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXY 44 456789 123456789 xyzxyzxyz XYZXY
+5 5
+6 6
+7 7
+8 8
+9 9
+50 50
+1 1
+2 2
+3 3
+4 4
+55 yzxyzxyz XYZXYZXYZ abcabcab 55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDE 56 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 9
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab 57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXY 58 456789 123456789 xyzxyzxyz XYZXY
+9 9
+60 DEFGHI 123456789 60 DEFGHI 123456789
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/ml24-t b/tests/pr/ml24-t
new file mode 100644
index 0000000..392adbf
--- /dev/null
+++ b/tests/pr/ml24-t
@@ -0,0 +1,120 @@
+
+
+-- Date/Time -- x Page 1
+
+
+1 Test-INPUT: "Without FF set by 1 Test-INPUT: "Without FF set by
+2 Options -b -3 [+2|+3] [-l 15|8] 2 Options -b -3 [+2|+3] [-l 15|8]
+3 Options -a -3 [+2|+3] [-l 15|8] 3 Options -a -3 [+2|+3] [-l 15|8]
+4 Options [+2|+3] [-l 24|17 4 Options [+2|+3] [-l 24|17
+5 5
+6 ------------------------------- 6 -------------------------------
+7 3456789 123456789 123456789 12345 7 3456789 123456789 123456789 12345
+8 3 Columns downwards, across, .. 8 3 Columns downwards, across, ..
+9 With columns use <= 5 text lin 9 With columns use <= 5 text lin
+10 without -f e.g.: -l 15 = total 10 without -f e.g.: -l 15 = total
+1 with -f e.g. : -l 8 -f 1 with -f e.g. : -l 8 -f
+2 2
+3 line truncation before new page; 3 line truncation before new page;
+14 456789 123456789 123456789 12345 14 456789 123456789 123456789 12345
+
+
+
+
+
+
+
+-- Date/Time -- x Page 2
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab 15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXY 16 456789 123456789 xyzxyzxyz XYZXY
+7 7
+8 8
+9 3456789 ab 9 3456789 ab
+20 DEFGHI 123 20 DEFGHI 123
+1 1
+2 2
+3 3
+4 4
+5 5
+6 6
+27 no truncation before nwe page; ( 27 no truncation before nwe page; (
+28 no trunc 28 no trunc
+
+
+
+
+
+
+
+-- Date/Time -- x Page 3
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab 29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXY 30 456789 123456789 xyzxyzxyz XYZXY
+1 1
+2 3456789 abcdefghi 2 3456789 abcdefghi
+3 3
+4 4
+5 5
+6 6
+7 7
+8 8
+9 3456789 abcdefghi 9 3456789 abcdefghi
+40 DEFGHI 123456789 40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab 41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDE 42 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab 43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXY 44 456789 123456789 xyzxyzxyz XYZXY
+5 5
+6 6
+7 7
+8 8
+9 9
+50 50
+1 1
+2 2
+3 3
+4 4
+55 yzxyzxyz XYZXYZXYZ abcabcab 55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDE 56 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab 57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXY 58 456789 123456789 xyzxyzxyz XYZXY
+9 9
+60 DEFGHI 123456789 60 DEFGHI 123456789
+1 1
+2 2
+3 ------- EOF -------- EOF ------- 3 ------- EOF -------- EOF -------
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/ml24-t-FF b/tests/pr/ml24-t-FF
new file mode 100644
index 0000000..08c6f05
--- /dev/null
+++ b/tests/pr/ml24-t-FF
@@ -0,0 +1,216 @@
+
+
+-- Date/Time -- x Page 1
+
+
+1 Test-INPUT: "Without FF set by 1 FF-Test: FF's in Text
+2 Options -b -3 [+2|+3] [-l 15|8] 2 Options -b -3 / -a -3 / ...
+3 Options -a -3 [+2|+3] [-l 15|8] 3 -------------------------------
+4 Options [+2|+3] [-l 24|17 4 3456789 123456789 123456789 12345
+5 5 3 Columns downwards ..., <= 5 l
+6 ------------------------------- 6 FF-Arangements: One Empty Page
+7 3456789 123456789 123456789 12345 7 text\f\f\n; text\f\n\ftext; \f\
+8 3 Columns downwards, across, .. 8 \f\f\n; \f\n\f\n;
+9 With columns use <= 5 text lin 9
+10 without -f e.g.: -l 15 = total 10 zzzzzzzzzzzzzzzzzzzzzzzzzz12345
+1 with -f e.g. : -l 8 -f 1
+2 2
+3 line truncation before new page; 3 line truncation before FF; r_r_o_
+14 456789 123456789 123456789 12345 14 456789 123456789 123456789 12345
+
+
+
+
+
+
+
+-- Date/Time -- x Page 2
+
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXY
+7
+8
+9 3456789 ab
+20 DEFGHI 123
+1
+2
+3
+4
+5
+6
+27 no truncation before nwe page; (
+28 no trunc
+
+
+
+
+
+
+
+-- Date/Time -- x Page 3
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab 15 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXY 16 456789 123456789 xyzxyzxyz XYZXY
+1 7
+2 3456789 abcdefghi 8
+3 9 3456789 ab
+4 20 DEFGHI 123
+5 1
+6 2
+7 3
+8 4
+9 3456789 abcdefghi 5
+40 DEFGHI 123456789 6
+41 yzxyzxyz XYZXYZXYZ abcabcab 27 no truncation before FF; (r_l-te
+42 456789 123456789 abcdefghi ABCDE 28 no trunc
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXY
+5
+6
+7
+8
+9
+50
+1
+2
+3
+4
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+57 xyzxyzxyz XYZXYZXYZ abcabcab 29 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXY 30 456789 123456789 xyzxyzxyz XYZXY
+9 1
+60 DEFGHI 123456789 2 3456789 abcdefghi
+1 3
+2 4
+3 ------- EOF -------- EOF ------- 5
+ 6
+ 7
+ 8
+ 9 3456789 abcdefghi
+ 40 DEFGHI 123456789
+ 41 yzxyzxyz XYZXYZXYZ abcabcab
+ 42 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 8
+
+
+ 43 xyzxyzxyz XYZXYZXYZ abcabcab
+ 44 456789 123456789 xyzxyzxyz XYZXY
+ 5
+ 6
+ 7
+ 8
+ 9
+ 50
+ 1
+ 2
+ 3
+ 4
+ 55 yzxyzxyz XYZXYZXYZ abcabcab
+ 56 456789 123456789 abcdefghi ABCDE
+
+
+
+
+
+
+
+-- Date/Time -- x Page 9
+
+
+ 57 xyzxyzxyz XYZXYZXYZ abcabcab
+ 58 456789 123456789 xyzxyzxyz XYZXY
+ 9
+ 60 DEFGHI 123456789
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/n+2-5l17f-0FF b/tests/pr/n+2-5l17f-0FF
new file mode 100644
index 0000000..43c2fb4
--- /dev/null
+++ b/tests/pr/n+2-5l17f-0FF
@@ -0,0 +1,43 @@
+-- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+ 1.1 FF-Test: FF's at Start of File V
+ 2.2 Options -b -3 / -a -3 / ...
+ 3.3 --------------------------------------------
+ 4.4 3456789 123456789 123456789 123456789 12345678
+ 5.5 3 Columns downwards ..., <= 5 lines per page
+ 6.6 FF-Arangements: Empty Pages at start
+ 7.7 \ftext; \f\ntext;
+ 8.8 \f\ftext; \f\f\ntext; \f\n\ftext; \f\n\f\n;
+ 9.9 3456789 123456789 123456789
+ 10.10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+ 11.1 12345678
+ 12.2 12345678
+ 13.3 line truncation before FF; r_r_o_l-test:
+ 14.14 456789 123456789 123456789 123456789
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+ 15.15 xyzxyzxyz XYZXYZXYZ abcabcab
+ 16.16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 17.7 12345678
+ 18.8 12345678
+ 19.9 3456789 ab
+ 20.20 DEFGHI 123
+ 21.1 12345678
+ 22.2 12345678
+ 23.3 12345678
+ 24.4 12345678
+ 25.5 12345678
+ 26.6 12345678
+ 27.27 no truncation before FF; (r_l-test):
+ 28.28 no trunc
+ \ No newline at end of file
diff --git a/tests/pr/n+2l17f-0FF b/tests/pr/n+2l17f-0FF
new file mode 100644
index 0000000..6b714de
--- /dev/null
+++ b/tests/pr/n+2l17f-0FF
@@ -0,0 +1,51 @@
+-- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+ 1.1 FF-Test: FF's at Start of File V
+ 2.2 Options -b -3 / -a -3 / ...
+ 3.3 --------------------------------------------
+ 4.4 3456789 123456789 123456789 123456789 12345678
+ 5.5 3 Columns downwards ..., <= 5 lines per page
+ 6.6 FF-Arangements: Empty Pages at start
+ 7.7 \ftext; \f\ntext;
+ 8.8 \f\ftext; \f\f\ntext; \f\n\ftext; \f\n\f\n;
+ 9.9 3456789 123456789 123456789
+ 10.10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+ 11.1 12345678
+ 12.2 12345678
+ 13.3 line truncation before FF; r_r_o_l-test:
+ 14.14 456789 123456789 123456789 123456789
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+ 15.15 xyzxyzxyz XYZXYZXYZ abcabcab
+ 16.16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 17.7 12345678
+ 18.8 12345678
+ 19.9 3456789 ab
+ 20.20 DEFGHI 123
+ 21.1 12345678
+ 22.2 12345678
+ 23.3 12345678
+ 24.4 12345678
+ 25.5 12345678
+ 26.6 12345678
+ 27.27 no truncation before FF; (r_l-test):
+ 28.28 no trunc
+ -- Date/Time -- x Page 6
+
+
+ 29.29 xyzxyzxyz XYZXYZXYZ abcabcab
+ 30.30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 31.1 12345678
+ 32.2 3456789 abcdefghi
+ 33.3 12345678
+ \ No newline at end of file
diff --git a/tests/pr/n+2l17f-bl b/tests/pr/n+2l17f-bl
new file mode 100644
index 0000000..c038f9a
--- /dev/null
+++ b/tests/pr/n+2l17f-bl
@@ -0,0 +1,94 @@
+-- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+ 15.15 xyzxyzxyz XYZXYZXYZ abcabcab
+ 16.16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 17.7 12345678
+ 18.8 12345678
+ 19.9 3456789 ab
+ 20.20 DEFGHI 123
+ 21.1 12345678
+ 22.
+ 23.
+ 24.4 12345678
+ 25.5 12345678
+ 26.6 12345678
+ 27.27 no truncation before FF; (r_l-test):
+ 28.
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+ 29.29 xyzxyzxyz XYZXYZXYZ abcabcab
+ 30.30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 31.1 12345678
+ 32.2 3456789 abcdefghi
+ 33.3 12345678
+ 34.4 12345678
+ 35.
+ 36.6 12345678
+ 37.7 12345678
+ 38.8 12345678
+ 39.9 3456789 abcdefghi
+ 40.40 DEFGHI 123456789
+ 41.41 yzxyzxyz XYZXYZXYZ abcabcab
+ 42.42 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+ 43.43 xyzxyzxyz XYZXYZXYZ abcabcab
+ 44.44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 45.5 12345678
+ 46.6 12345678
+ 47.7 12345678
+ 48.8 12345678
+ 49.9 12345678
+ 50.50 12345678
+ 51.1 12345678
+ 52.
+ 53.
+ 54.
+ 55.55 yzxyzxyz XYZXYZXYZ abcabcab
+ 56.56 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 9
+
+
+ 57.
+ 58.58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 59.9 12345678
+ 60.60 DEFGHI 123456789
+ 61.61 yzxyzxyz XYZXYZXYZ abcabcab
+ 62.62 456789 123456789 abcdefghi ABCDEDFHI
+ 63.63 xyzxyzxyz XYZXYZXYZ abcabcab
+ 64.64 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 65.5 12345678
+ 66.6 12345678
+ 67.7 12345678
+ 68.8 12345678
+ 69.9 12345678
+ 70.70 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 10
+
+
+ 71.1 12345678
+ 72.
+ 73.
+ 74.
+ 75.74 yzxyzxyz XYZXYZXYZ abcabcab
+ 76.75 456789 123456789 abcdefghi ABCDEDFHI
+ \ No newline at end of file
diff --git a/tests/pr/n+3-7l24-FF b/tests/pr/n+3-7l24-FF
new file mode 100644
index 0000000..b2cc15f
--- /dev/null
+++ b/tests/pr/n+3-7l24-FF
@@ -0,0 +1,120 @@
+
+
+-- Date/Time -- x Page 3
+
+
+ 15.15 xyzxyzxyz XYZXYZXYZ abcabcab
+ 16.16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 17.7 12345678
+ 18.8 12345678
+ 19.9 3456789 ab
+ 20.20 DEFGHI 123
+ 21.1 12345678
+ 22.2 12345678
+ 23.3 12345678
+ 24.4 12345678
+ 25.5 12345678
+ 26.6 12345678
+ 27.27 no truncation before FF; (r_l-test):
+ 28.28 no trunc
+
+
+
+
+
+
+
+-- Date/Time -- x Page 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+ 29.29 xyzxyzxyz XYZXYZXYZ abcabcab
+ 30.30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 31.1 12345678
+ 32.2 3456789 abcdefghi
+ 33.3 12345678
+ 34.4 12345678
+ 35.5 12345678
+ 36.6 12345678
+ 37.7 12345678
+ 38.8 12345678
+ 39.9 3456789 abcdefghi
+ 40.40 DEFGHI 123456789
+ 41.41 yzxyzxyz XYZXYZXYZ abcabcab
+ 42.42 456789 123456789 abcdefghi ABCDEDFHI
+
+
+
+
+
+
+
+-- Date/Time -- x Page 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/n+3l17f-0FF b/tests/pr/n+3l17f-0FF
new file mode 100644
index 0000000..dd89ffc
--- /dev/null
+++ b/tests/pr/n+3l17f-0FF
@@ -0,0 +1,47 @@
+-- Date/Time -- x Page 3
+
+
+ 1.1 FF-Test: FF's at Start of File V
+ 2.2 Options -b -3 / -a -3 / ...
+ 3.3 --------------------------------------------
+ 4.4 3456789 123456789 123456789 123456789 12345678
+ 5.5 3 Columns downwards ..., <= 5 lines per page
+ 6.6 FF-Arangements: Empty Pages at start
+ 7.7 \ftext; \f\ntext;
+ 8.8 \f\ftext; \f\f\ntext; \f\n\ftext; \f\n\f\n;
+ 9.9 3456789 123456789 123456789
+ 10.10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+ 11.1 12345678
+ 12.2 12345678
+ 13.3 line truncation before FF; r_r_o_l-test:
+ 14.14 456789 123456789 123456789 123456789
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+ 15.15 xyzxyzxyz XYZXYZXYZ abcabcab
+ 16.16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 17.7 12345678
+ 18.8 12345678
+ 19.9 3456789 ab
+ 20.20 DEFGHI 123
+ 21.1 12345678
+ 22.2 12345678
+ 23.3 12345678
+ 24.4 12345678
+ 25.5 12345678
+ 26.6 12345678
+ 27.27 no truncation before FF; (r_l-test):
+ 28.28 no trunc
+ -- Date/Time -- x Page 6
+
+
+ 29.29 xyzxyzxyz XYZXYZXYZ abcabcab
+ 30.30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 31.1 12345678
+ 32.2 3456789 abcdefghi
+ 33.3 12345678
+ \ No newline at end of file
diff --git a/tests/pr/n+3l17f-bl b/tests/pr/n+3l17f-bl
new file mode 100644
index 0000000..7c063b8
--- /dev/null
+++ b/tests/pr/n+3l17f-bl
@@ -0,0 +1,90 @@
+-- Date/Time -- x Page 3
+
+
+ 15.15 xyzxyzxyz XYZXYZXYZ abcabcab
+ 16.16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 17.7 12345678
+ 18.8 12345678
+ 19.9 3456789 ab
+ 20.20 DEFGHI 123
+ 21.1 12345678
+ 22.
+ 23.
+ 24.4 12345678
+ 25.5 12345678
+ 26.6 12345678
+ 27.27 no truncation before FF; (r_l-test):
+ 28.
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+ 29.29 xyzxyzxyz XYZXYZXYZ abcabcab
+ 30.30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 31.1 12345678
+ 32.2 3456789 abcdefghi
+ 33.3 12345678
+ 34.4 12345678
+ 35.
+ 36.6 12345678
+ 37.7 12345678
+ 38.8 12345678
+ 39.9 3456789 abcdefghi
+ 40.40 DEFGHI 123456789
+ 41.41 yzxyzxyz XYZXYZXYZ abcabcab
+ 42.42 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+ 43.43 xyzxyzxyz XYZXYZXYZ abcabcab
+ 44.44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 45.5 12345678
+ 46.6 12345678
+ 47.7 12345678
+ 48.8 12345678
+ 49.9 12345678
+ 50.50 12345678
+ 51.1 12345678
+ 52.
+ 53.
+ 54.
+ 55.55 yzxyzxyz XYZXYZXYZ abcabcab
+ 56.56 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 9
+
+
+ 57.
+ 58.58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 59.9 12345678
+ 60.60 DEFGHI 123456789
+ 61.61 yzxyzxyz XYZXYZXYZ abcabcab
+ 62.62 456789 123456789 abcdefghi ABCDEDFHI
+ 63.63 xyzxyzxyz XYZXYZXYZ abcabcab
+ 64.64 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 65.5 12345678
+ 66.6 12345678
+ 67.7 12345678
+ 68.8 12345678
+ 69.9 12345678
+ 70.70 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 10
+
+
+ 71.1 12345678
+ 72.
+ 73.
+ 74.
+ 75.74 yzxyzxyz XYZXYZXYZ abcabcab
+ 76.75 456789 123456789 abcdefghi ABCDEDFHI
+ \ No newline at end of file
diff --git a/tests/pr/n+3ml13f-bl-FF b/tests/pr/n+3ml13f-bl-FF
new file mode 100644
index 0000000..d417e44
--- /dev/null
+++ b/tests/pr/n+3ml13f-bl-FF
@@ -0,0 +1,103 @@
+-- Date/Time -- x Page 3
+
+
+
+ -- Date/Time -- x Page 4
+
+
+ 15.15 xyzxyzxyz XYZXYZXYZ abcabcab 15 xyzxyzxyz XYZXYZXYZ abcabcab
+ 16.16 456789 123456789 xyzxyzxyz XYZ 16 456789 123456789 xyzxyzxyz XYZ
+ 17.7 7
+ 18.8 8
+ 19.9 3456789 ab 9 3456789 ab
+ 20.20 DEFGHI 123 20 DEFGHI 123
+ 21.1 1
+ 22. 2
+ 23. 3
+ 24.4 4
+ -- Date/Time -- x Page 5
+
+
+ 25.5 5
+ 26.6 6
+ 27.27 no truncation before FF; (r_l- 27 no truncation before FF; (r_l-
+ 28. 28 no trunc
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+ 29.29 xyzxyzxyz XYZXYZXYZ abcabcab 29 xyzxyzxyz XYZXYZXYZ abcabcab
+ 30.30 456789 123456789 xyzxyzxyz XYZ 30 456789 123456789 xyzxyzxyz XYZ
+ 31.1 1
+ 32.2 3456789 abcdefghi 2 3456789 abcdefghi
+ 33.3 3
+ 34.4 4
+ 35. 5
+ 36.6 6
+ 37.7 7
+ 38.8 8
+ -- Date/Time -- x Page 8
+
+
+ 39.9 3456789 abcdefghi 9 3456789 abcdefghi
+ 40.40 DEFGHI 123456789 40 DEFGHI 123456789
+ 41.41 yzxyzxyz XYZXYZXYZ abcabcab 41 yzxyzxyz XYZXYZXYZ abcabcab
+ 42.42 456789 123456789 abcdefghi ABC 42 456789 123456789 abcdefghi ABC
+ -- Date/Time -- x Page 9
+
+
+
+ -- Date/Time -- x Page 10
+
+
+
+ -- Date/Time -- x Page 11
+
+
+ 43.43 xyzxyzxyz XYZXYZXYZ abcabcab 43 xyzxyzxyz XYZXYZXYZ abcabcab
+ 44.44 456789 123456789 xyzxyzxyz XYZ 44 456789 123456789 xyzxyzxyz XYZ
+ 45.5 5
+ 46.6 6
+ 47.7 7
+ 48.8 8
+ 49.9 9
+ 50.50 50
+ 51.1 1
+ 52. 2
+ -- Date/Time -- x Page 12
+
+
+ 53. 3
+ 54. 4
+ 55.55 yzxyzxyz XYZXYZXYZ abcabcab 55 yzxyzxyz XYZXYZXYZ abcabcab
+ 56.56 456789 123456789 abcdefghi ABC 56 456789 123456789 abcdefghi ABC
+ -- Date/Time -- x Page 13
+
+
+ 57. 57 xyzxyzxyz XYZXYZXYZ abcabcab
+ 58.58 456789 123456789 xyzxyzxyz XYZ 58 456789 123456789 xyzxyzxyz XYZ
+ 59.9 9
+ 60.60 DEFGHI 123456789 60 DEFGHI 123456789
+ 61.61 yzxyzxyz XYZXYZXYZ abcabcab
+ 62.62 456789 123456789 abcdefghi ABC
+ 63.63 xyzxyzxyz XYZXYZXYZ abcabcab
+ 64.64 456789 123456789 xyzxyzxyz XYZ
+ 65.5
+ 66.6
+ -- Date/Time -- x Page 14
+
+
+ 67.7
+ 68.8
+ 69.9
+ 70.70 456789 123456789 abcdefghi AB
+ 71.1
+ 72.
+ 73.
+ 74.
+ 75.74 yzxyzxyz XYZXYZXYZ abcabcab
+ 76.75 456789 123456789 abcdefghi ABC
+ \ No newline at end of file
diff --git a/tests/pr/n+3ml17f-bl-tn b/tests/pr/n+3ml17f-bl-tn
new file mode 100644
index 0000000..1431165
--- /dev/null
+++ b/tests/pr/n+3ml17f-bl-tn
@@ -0,0 +1,103 @@
+-- Date/Time -- x Page 3
+
+
+ 15.15 xyzxyzxyz XYZXYZXYZ abcabcab 29 xyzxyzxyz XYZXYZXYZ abcabcab
+ 16.16 456789 123456789 xyzxyzxyz XYZ 30 456789 123456789 xyzxyzxyz XYZ
+ 17.7 1
+ 18.8 2 3456789 abcdefghi
+ 19.9 3456789 ab 3
+ 20.20 DEFGHI 123 4
+ 21.1 5
+ 22. 6
+ 23. 7
+ 24.4 8
+ 25.5 9 3456789 abcdefghi
+ 26.6 40 DEFGHI 123456789
+ 27.27 no truncation before FF; (r_l- 41 yzxyzxyz XYZXYZXYZ abcabcab
+ 28. 42 456789 123456789 abcdefghi ABC
+ -- Date/Time -- x Page 4
+
+
+ 29. 43 xyzxyzxyz XYZXYZXYZ abcabcab
+ 30. 44 456789 123456789 xyzxyzxyz XYZ
+ 31. 5
+ 32. 6
+ 33. 7
+ 34. 8
+ 35. 9
+ 36. 50
+ 37. 1
+ 38. 2
+ 39. 3
+ 40. 4
+ 41. 55 yzxyzxyz XYZXYZXYZ abcabcab
+ 42. 56 456789 123456789 abcdefghi ABC
+ -- Date/Time -- x Page 5
+
+
+ 43.29 xyzxyzxyz XYZXYZXYZ abcabcab 57 xyzxyzxyz XYZXYZXYZ abcabcab
+ 44.30 456789 123456789 xyzxyzxyz XYZ 58 456789 123456789 xyzxyzxyz XYZ
+ 45.1 9
+ 46.2 3456789 abcdefghi 60 DEFGHI 123456789
+ 47.3 1
+ 48.4 2
+ 49. 3 ------- EOF -------- EOF -----
+ 50.6
+ 51.7
+ 52.8
+ 53.9 3456789 abcdefghi
+ 54.40 DEFGHI 123456789
+ 55.41 yzxyzxyz XYZXYZXYZ abcabcab
+ 56.42 456789 123456789 abcdefghi ABC
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+ 57.43 xyzxyzxyz XYZXYZXYZ abcabcab
+ 58.44 456789 123456789 xyzxyzxyz XYZ
+ 59.5
+ 60.6
+ 61.7
+ 62.8
+ 63.9
+ 64.50
+ 65.1
+ 66.
+ 67.
+ 68.
+ 69.55 yzxyzxyz XYZXYZXYZ abcabcab
+ 70.56 456789 123456789 abcdefghi ABC
+ -- Date/Time -- x Page 9
+
+
+ 71.
+ 72.58 456789 123456789 xyzxyzxyz XYZ
+ 73.9
+ 74.60 DEFGHI 123456789
+ 75.61 yzxyzxyz XYZXYZXYZ abcabcab
+ 76.62 456789 123456789 abcdefghi ABC
+ 77.63 xyzxyzxyz XYZXYZXYZ abcabcab
+ 78.64 456789 123456789 xyzxyzxyz XYZ
+ 79.5
+ 80.6
+ 81.7
+ 82.8
+ 83.9
+ 84.70 456789 123456789 abcdefghi AB
+ -- Date/Time -- x Page 10
+
+
+ 85.1
+ 86.
+ 87.
+ 88.
+ 89.74 yzxyzxyz XYZXYZXYZ abcabcab
+ 90.75 456789 123456789 abcdefghi ABC
+ \ No newline at end of file
diff --git a/tests/pr/n+3ml17f-tn-bl b/tests/pr/n+3ml17f-tn-bl
new file mode 100644
index 0000000..efe0059
--- /dev/null
+++ b/tests/pr/n+3ml17f-tn-bl
@@ -0,0 +1,103 @@
+-- Date/Time -- x Page 3
+
+
+ 29.29 xyzxyzxyz XYZXYZXYZ abcabcab 15 xyzxyzxyz XYZXYZXYZ abcabcab
+ 30.30 456789 123456789 xyzxyzxyz XYZ 16 456789 123456789 xyzxyzxyz XYZ
+ 31.1 7
+ 32.2 3456789 abcdefghi 8
+ 33.3 9 3456789 ab
+ 34.4 20 DEFGHI 123
+ 35.5 1
+ 36.6
+ 37.7
+ 38.8 4
+ 39.9 3456789 abcdefghi 5
+ 40.40 DEFGHI 123456789 6
+ 41.41 yzxyzxyz XYZXYZXYZ abcabcab 27 no truncation before FF; (r_l-
+ 42.42 456789 123456789 abcdefghi ABC
+ -- Date/Time -- x Page 4
+
+
+ 43.43 xyzxyzxyz XYZXYZXYZ abcabcab
+ 44.44 456789 123456789 xyzxyzxyz XYZ
+ 45.5
+ 46.6
+ 47.7
+ 48.8
+ 49.9
+ 50.50
+ 51.1
+ 52.2
+ 53.3
+ 54.4
+ 55.55 yzxyzxyz XYZXYZXYZ abcabcab
+ 56.56 456789 123456789 abcdefghi ABC
+ -- Date/Time -- x Page 5
+
+
+ 57.57 xyzxyzxyz XYZXYZXYZ abcabcab 29 xyzxyzxyz XYZXYZXYZ abcabcab
+ 58.58 456789 123456789 xyzxyzxyz XYZ 30 456789 123456789 xyzxyzxyz XYZ
+ 59.9 1
+ 60.60 DEFGHI 123456789 2 3456789 abcdefghi
+ 61.1 3
+ 62.2 4
+ 63.3 ------- EOF -------- EOF -----
+ 64. 6
+ 65. 7
+ 66. 8
+ 67. 9 3456789 abcdefghi
+ 68. 40 DEFGHI 123456789
+ 69. 41 yzxyzxyz XYZXYZXYZ abcabcab
+ 70. 42 456789 123456789 abcdefghi ABC
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+ 71. 43 xyzxyzxyz XYZXYZXYZ abcabcab
+ 72. 44 456789 123456789 xyzxyzxyz XYZ
+ 73. 5
+ 74. 6
+ 75. 7
+ 76. 8
+ 77. 9
+ 78. 50
+ 79. 1
+ 80.
+ 81.
+ 82.
+ 83. 55 yzxyzxyz XYZXYZXYZ abcabcab
+ 84. 56 456789 123456789 abcdefghi ABC
+ -- Date/Time -- x Page 9
+
+
+ 85.
+ 86. 58 456789 123456789 xyzxyzxyz XYZ
+ 87. 9
+ 88. 60 DEFGHI 123456789
+ 89. 61 yzxyzxyz XYZXYZXYZ abcabcab
+ 90. 62 456789 123456789 abcdefghi ABC
+ 91. 63 xyzxyzxyz XYZXYZXYZ abcabcab
+ 92. 64 456789 123456789 xyzxyzxyz XYZ
+ 93. 5
+ 94. 6
+ 95. 7
+ 96. 8
+ 97. 9
+ 98. 70 456789 123456789 abcdefghi AB
+ -- Date/Time -- x Page 10
+
+
+ 99. 1
+100.
+101.
+102.
+103. 74 yzxyzxyz XYZXYZXYZ abcabcab
+104. 75 456789 123456789 abcdefghi ABC
+ \ No newline at end of file
diff --git a/tests/pr/n+4-8a2l17-FF b/tests/pr/n+4-8a2l17-FF
new file mode 100644
index 0000000..09b76fc
--- /dev/null
+++ b/tests/pr/n+4-8a2l17-FF
@@ -0,0 +1,85 @@
+
+
+-- Date/Time -- x Page 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 5
+
+
+ 29.29 xyzxyzxyz XYZXYZXYZ abcabcab 30.30 456789 123456789 xyzxyzxyz X
+ 31.1 32.2 3456789 abcdefghi
+ 33.3 34.4
+ 35.5 36.6
+ 37.7 38.8
+ 39.9 3456789 abcdefghi 40.40 DEFGHI 123456789
+ 41.41 yzxyzxyz XYZXYZXYZ abcabcab 42.42 456789 123456789 abcdefghi A
+
+
+
+
+
+
+
+-- Date/Time -- x Page 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 8
+
+
+ 43.43 xyzxyzxyz XYZXYZXYZ abcabcab 44.44 456789 123456789 xyzxyzxyz X
+ 45.5 46.6
+ 47.7 48.8
+ 49.9 50.50
+ 51.1 52.2
+ 53.3 54.4
+ 55.55 yzxyzxyz XYZXYZXYZ abcabcab 56.56 456789 123456789 abcdefghi A
+
+
+
+
+
diff --git a/tests/pr/n+4b2l10f-0FF b/tests/pr/n+4b2l10f-0FF
new file mode 100644
index 0000000..2285c04
--- /dev/null
+++ b/tests/pr/n+4b2l10f-0FF
@@ -0,0 +1,21 @@
+-- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+ 15.15 xyzxyzxyz XYZXYZXYZ abcabcab 22.2
+ 16.16 456789 123456789 xyzxyzxyz X 23.3
+ 17.7 24.4
+ 18.8 25.5
+ 19.9 3456789 ab 26.6
+ 20.20 DEFGHI 123 27.27 no truncation before FF; (r_
+ 21.1 28.28 no trunc
+ -- Date/Time -- x Page 6
+
+
+ 29.29 xyzxyzxyz XYZXYZXYZ abcabcab 32.2 3456789 abcdefghi
+ 30.30 456789 123456789 xyzxyzxyz X 33.3
+ 31.1
+ \ No newline at end of file
diff --git a/tests/pr/n+5-8b3l10f-FF b/tests/pr/n+5-8b3l10f-FF
new file mode 100644
index 0000000..301220a
--- /dev/null
+++ b/tests/pr/n+5-8b3l10f-FF
@@ -0,0 +1,25 @@
+-- Date/Time -- x Page 5
+
+
+ 29.29 xyzxyzxyz XYZXYZ 34.4 39.9 3456789 abcdefghi
+ 30.30 456789 123456789 35.5 40.40 DEFGHI 123456789
+ 31.1 36.6 41.41 yzxyzxyz XYZXYZX
+ 32.2 3456789 abcdefghi 37.7 42.42 456789 123456789
+ 33.3 38.8
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+ 43.43 xyzxyzxyz XYZXYZ 48.8 53.3
+ 44.44 456789 123456789 49.9 54.4
+ 45.5 50.50 55.55 yzxyzxyz XYZXYZX
+ 46.6 51.1 56.56 456789 123456789
+ 47.7 52.2
+ \ No newline at end of file
diff --git a/tests/pr/n+5a3l6f-0FF b/tests/pr/n+5a3l6f-0FF
new file mode 100644
index 0000000..b2cd7c4
--- /dev/null
+++ b/tests/pr/n+5a3l6f-0FF
@@ -0,0 +1,21 @@
+-- Date/Time -- x Page 5
+
+
+
+ -- Date/Time -- x Page 6
+
+
+ 15.15 xyzxyzxyz XYZXYZ 16.16 456789 123456789 17.7
+ 18.8 19.9 3456789 ab 20.20 DEFGHI 123
+ 21.1 22.2 23.3
+ -- Date/Time -- x Page 7
+
+
+ 24.4 25.5 26.6
+ 27.27 no truncation be 28.28 no trunc
+ -- Date/Time -- x Page 8
+
+
+ 29.29 xyzxyzxyz XYZXYZ 30.30 456789 123456789 31.1
+ 32.2 3456789 abcdefghi 33.3
+ \ No newline at end of file
diff --git a/tests/pr/n+6a2l17-FF b/tests/pr/n+6a2l17-FF
new file mode 100644
index 0000000..1cd68f7
--- /dev/null
+++ b/tests/pr/n+6a2l17-FF
@@ -0,0 +1,68 @@
+
+
+-- Date/Time -- x Page 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 8
+
+
+ 43.43 xyzxyzxyz XYZXYZXYZ abcabcab 44.44 456789 123456789 xyzxyzxyz X
+ 45.5 46.6
+ 47.7 48.8
+ 49.9 50.50
+ 51.1 52.2
+ 53.3 54.4
+ 55.55 yzxyzxyz XYZXYZXYZ abcabcab 56.56 456789 123456789 abcdefghi A
+
+
+
+
+
+
+
+-- Date/Time -- x Page 9
+
+
+ 57.57 xyzxyzxyz XYZXYZXYZ abcabcab 58.58 456789 123456789 xyzxyzxyz X
+ 59.9 60.60 DEFGHI 123456789
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/n+6b3l6f-FF b/tests/pr/n+6b3l6f-FF
new file mode 100644
index 0000000..5e0d55a
--- /dev/null
+++ b/tests/pr/n+6b3l6f-FF
@@ -0,0 +1,40 @@
+-- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+ 29.29 xyzxyzxyz XYZXYZ 32.2 3456789 abcdefghi 35.5
+ 30.30 456789 123456789 33.3 36.6
+ 31.1 34.4 37.7
+ -- Date/Time -- x Page 8
+
+
+ 38.8 40.40 DEFGHI 123456789 42.42 456789 123456789
+ 39.9 3456789 abcdefghi 41.41 yzxyzxyz XYZXYZX
+ -- Date/Time -- x Page 9
+
+
+
+ -- Date/Time -- x Page 10
+
+
+
+ -- Date/Time -- x Page 11
+
+
+ 43.43 xyzxyzxyz XYZXYZ 46.6 49.9
+ 44.44 456789 123456789 47.7 50.50
+ 45.5 48.8 51.1
+ -- Date/Time -- x Page 12
+
+
+ 52.2 54.4 56.56 456789 123456789
+ 53.3 55.55 yzxyzxyz XYZXYZX
+ -- Date/Time -- x Page 13
+
+
+ 57.57 xyzxyzxyz XYZXYZ 59.9 60.60 DEFGHI 123456789
+ 58.58 456789 123456789
+ \ No newline at end of file
diff --git a/tests/pr/n+7l24-FF b/tests/pr/n+7l24-FF
new file mode 100644
index 0000000..e4a6e01
--- /dev/null
+++ b/tests/pr/n+7l24-FF
@@ -0,0 +1,72 @@
+
+
+-- Date/Time -- x Page 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 8
+
+
+ 43.43 xyzxyzxyz XYZXYZXYZ abcabcab
+ 44.44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 45.5 12345678
+ 46.6 12345678
+ 47.7 12345678
+ 48.8 12345678
+ 49.9 12345678
+ 50.50 12345678
+ 51.1 12345678
+ 52.2 12345678
+ 53.3 12345678
+ 54.4 12345678
+ 55.55 yzxyzxyz XYZXYZXYZ abcabcab
+ 56.56 456789 123456789 abcdefghi ABCDEDFHI
+
+
+
+
+
+
+
+-- Date/Time -- x Page 9
+
+
+ 57.57 xyzxyzxyz XYZXYZXYZ abcabcab
+ 58.58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 59.9 12345678
+ 60.60 DEFGHI 123456789
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/n+8l20-FF b/tests/pr/n+8l20-FF
new file mode 100644
index 0000000..cad0470
--- /dev/null
+++ b/tests/pr/n+8l20-FF
@@ -0,0 +1,120 @@
+
+
+-- Date/Time -- x Page 8
+
+
+ 39.9 3456789 abcdefghi
+ 40.40 DEFGHI 123456789
+ 41.41 yzxyzxyz XYZXYZXYZ abcabcab
+ 42.42 456789 123456789 abcdefghi ABCDEDFHI
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 9
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 11
+
+
+ 43.43 xyzxyzxyz XYZXYZXYZ abcabcab
+ 44.44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 45.5 12345678
+ 46.6 12345678
+ 47.7 12345678
+ 48.8 12345678
+ 49.9 12345678
+ 50.50 12345678
+ 51.1 12345678
+ 52.2 12345678
+
+
+
+
+
+
+
+-- Date/Time -- x Page 12
+
+
+ 53.3 12345678
+ 54.4 12345678
+ 55.55 yzxyzxyz XYZXYZXYZ abcabcab
+ 56.56 456789 123456789 abcdefghi ABCDEDFHI
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Date/Time -- x Page 13
+
+
+ 57.57 xyzxyzxyz XYZXYZXYZ abcabcab
+ 58.58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 59.9 12345678
+ 60.60 DEFGHI 123456789
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/pr/nJml17f-lmlmlo b/tests/pr/nJml17f-lmlmlo
new file mode 100644
index 0000000..c3a8244
--- /dev/null
+++ b/tests/pr/nJml17f-lmlmlo
@@ -0,0 +1,118 @@
+-- Date/Time -- x Page 1
+
+
+ 1.1<<< -Test: FF's in Text >>> 1<<< -Test: FF's in Text >>> 1::: Test-INPUT: "Without FF set by Hand" :::
+ 2.2<<< -b -3 / -a -3 / ... >>> 2<<< -b -3 / -a -3 / ... >>> 2::: Options -b -3 [+2|+3] [-l 15|8] [-f] :::
+ 3.3<<< >>> 3<<< >>> 3::: Options -a -3 [+2|+3] [-l 15|8] [-f] :::
+ 4.4<<< 123456789 123456789 123456789 12345678 >>> 4<<< 123456789 123456789 123456789 12345678 >>> 4::: Options [+2|+3] [-l 24|17] [-f] :::
+ 5. 5::: :::
+ 6.6<<< -Arangements: One Empty Page >>> 6<<< -Arangements: One Empty Page >>> 6::: -------------------------------------------- :::
+ 7.7<<< \f\f\n; text\f\n\ftext; \f\ftext; >>> 7<<< \f\f\n; text\f\n\ftext; \f\ftext; >>> 7::: 789 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ 8.8<<< f\f\n; \f\n\f\n; >>> 8<<< f\f\n; \f\n\f\n; >>> 8::: 3 Columns downwards, across, ...: :::
+ 9.9<<< >>> 9<<< >>> 9::: With columns use <= 5 text lines/page, :::
+ 10.10<<< >>> 10<<< >>> 10::: without -f e.g.: -l 15 = total lines/page, :::
+ 11.1<<< >>> 1<<< >>> 1::: with -f e.g. : -l 8 -f :::
+ 12.2<<< >>> 2<<< >>> 2::: :::
+ 13.3<<< truncation before FF; r_r_o_l-test: >>> 3<<< truncation before FF; r_r_o_l-test: >>> 3::: line truncation before new page; r_r_o_l-test: :::
+ 14.14<<< 123456789 123456789 123456789 >>> 14<<< 123456789 123456789 123456789 >>> 14::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ -- Date/Time -- x Page 2
+
+
+ 15. 15::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+ 16. 16::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+ 17. 7::: 12345678 :::
+ 18. 8::: 12345678 :::
+ 19. 9::: 3456789 ab :::
+ 20. 20::: DEFGHI 123 :::
+ 21. 21::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ 22. 2::: 12345678 :::
+ 23. 3::: 12345678 :::
+ 24. 4::: 12345678 :::
+ 25. 5::: 12345678 :::
+ 26. 6::: 12345678 :::
+ 27. 27::: no truncation before nwe page; (r_l-test): :::
+ 28. 28::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ -- Date/Time -- x Page 3
+
+
+ 29.15<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 15<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 29::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+ 30.16<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 16<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 30::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+ 31.7<<< >>> 7<<< >>> 1::: 12345678 :::
+ 32.8<<< >>> 8<<< >>> 2::: 3456789 abcdefghi :::
+ 33.9<<< >>> 9<<< >>> 3::: 12345678 :::
+ 34.20<<< >>> 20<<< >>> 4::: 12345678 :::
+ 35.1<<< >>> 1<<< >>> 35::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ 36. 6::: 12345678 :::
+ 37. 7::: 12345678 :::
+ 38.4<<< >>> 4<<< >>> 8::: 12345678 :::
+ 39.5<<< >>> 5<<< >>> 9::: 3456789 abcdefghi :::
+ 40.6<<< >>> 6<<< >>> 40::: DEFGHI 123456789 :::
+ 41.27<<< truncation before FF; (r_l-test): >>> 27<<< truncation before FF; (r_l-test): >>> 41::: yzxyzxyz XYZXYZXYZ abcabcab :::
+ 42.28<<< trunc 28<<< trunc 42::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ -- Date/Time -- x Page 4
+
+
+ 43. 43::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+ 44. 44::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+ 45. 5::: 12345678 :::
+ 46. 6::: 12345678 :::
+ 47. 7::: 12345678 :::
+ 48. 8::: 12345678 :::
+ 49. 49::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ 50. 50::: 12345678 :::
+ 51. 1::: 12345678 :::
+ 52. 2::: 12345678 :::
+ 53. 3::: 12345678 :::
+ 54. 4::: 12345678 :::
+ 55. 55::: yzxyzxyz XYZXYZXYZ abcabcab :::
+ 56. 56::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ -- Date/Time -- x Page 5
+
+
+ 57.29<<<xyzxyzxyz XYZXYZXYZ abcabcab >>> 29<<<xyzxyzxyz XYZXYZXYZ abcabcab >>> 57::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+ 58.30<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 30<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 58::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+ 59.1<<< >>> 1<<< >>> 9::: 12345678 :::
+ 60.2<<< abcdefghi >>> 2<<< abcdefghi >>> 60::: DEFGHI 123456789 :::
+ 61.3<<< >>> 3<<< >>> 1::: :::
+ 62.4<<< >>> 4<<< >>> 2::: :::
+ 63.5<<< >>> 5<<< >>> 3::: ------- EOF -------- EOF -------- EOF ------- EOF ------- EOF ------- EOF :::
+ 64.6<<< >>> 6<<< >>>
+ 65.7<<< >>> 7<<< >>>
+ 66.8<<< >>> 8<<< >>>
+ 67.9<<< abcdefghi >>> 9<<< abcdefghi >>>
+ 68.40<<< 123456789 >>> 40<<< 123456789 >>>
+ 69.41<<< XYZXYZXYZ abcabcab >>> 41<<< XYZXYZXYZ abcabcab >>>
+ 70.42<<< 123456789 abcdefghi ABCDEDFHI >>> 42<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+ 71.43<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 43<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+ 72.44<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 44<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+ 73.5<<< >>> 5<<< >>>
+ 74.6<<< >>> 6<<< >>>
+ 75.7<<< >>> 7<<< >>>
+ 76.8<<< >>> 8<<< >>>
+ 77.9<<< >>> 9<<< >>>
+ 78.50<<< >>> 50<<< >>>
+ 79.1<<< >>> 1<<< >>>
+ 80.2<<< >>> 2<<< >>>
+ 81.3<<< >>> 3<<< >>>
+ 82.4<<< >>> 4<<< >>>
+ 83.55<<< XYZXYZXYZ abcabcab >>> 55<<< XYZXYZXYZ abcabcab >>>
+ 84.56<<< 123456789 abcdefghi ABCDEDFHI >>> 56<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 9
+
+
+ 85.57<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 57<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+ 86.58<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 58<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+ 87.9<<< >>> 9<<< >>>
+ 88.60<<< 123456789 >>> 60<<< 123456789 >>>
+ \ No newline at end of file
diff --git a/tests/pr/nJml17f-lmlolm b/tests/pr/nJml17f-lmlolm
new file mode 100644
index 0000000..93cea0a
--- /dev/null
+++ b/tests/pr/nJml17f-lmlolm
@@ -0,0 +1,118 @@
+-- Date/Time -- x Page 1
+
+
+ 1.1<<< -Test: FF's in Text >>> 1::: Test-INPUT: "Without FF set by Hand" ::: 1<<< -Test: FF's in Text >>>
+ 2.2<<< -b -3 / -a -3 / ... >>> 2::: Options -b -3 [+2|+3] [-l 15|8] [-f] ::: 2<<< -b -3 / -a -3 / ... >>>
+ 3.3<<< >>> 3::: Options -a -3 [+2|+3] [-l 15|8] [-f] ::: 3<<< >>>
+ 4.4<<< 123456789 123456789 123456789 12345678 >>> 4::: Options [+2|+3] [-l 24|17] [-f] ::: 4<<< 123456789 123456789 123456789 12345678 >>>
+ 5. 5::: :::
+ 6.6<<< -Arangements: One Empty Page >>> 6::: -------------------------------------------- ::: 6<<< -Arangements: One Empty Page >>>
+ 7.7<<< \f\f\n; text\f\n\ftext; \f\ftext; >>> 7::: 789 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 ::: 7<<< \f\f\n; text\f\n\ftext; \f\ftext; >>>
+ 8.8<<< f\f\n; \f\n\f\n; >>> 8::: 3 Columns downwards, across, ...: ::: 8<<< f\f\n; \f\n\f\n; >>>
+ 9.9<<< >>> 9::: With columns use <= 5 text lines/page, ::: 9<<< >>>
+ 10.10<<< >>> 10::: without -f e.g.: -l 15 = total lines/page, ::: 10<<< >>>
+ 11.1<<< >>> 1::: with -f e.g. : -l 8 -f ::: 1<<< >>>
+ 12.2<<< >>> 2::: ::: 2<<< >>>
+ 13.3<<< truncation before FF; r_r_o_l-test: >>> 3::: line truncation before new page; r_r_o_l-test: ::: 3<<< truncation before FF; r_r_o_l-test: >>>
+ 14.14<<< 123456789 123456789 123456789 >>> 14::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 ::: 14<<< 123456789 123456789 123456789 >>>
+ -- Date/Time -- x Page 2
+
+
+ 15. 15::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+ 16. 16::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+ 17. 7::: 12345678 :::
+ 18. 8::: 12345678 :::
+ 19. 9::: 3456789 ab :::
+ 20. 20::: DEFGHI 123 :::
+ 21. 21::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ 22. 2::: 12345678 :::
+ 23. 3::: 12345678 :::
+ 24. 4::: 12345678 :::
+ 25. 5::: 12345678 :::
+ 26. 6::: 12345678 :::
+ 27. 27::: no truncation before nwe page; (r_l-test): :::
+ 28. 28::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ -- Date/Time -- x Page 3
+
+
+ 29.15<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 29::: xyzxyzxyz XYZXYZXYZ abcabcab ::: 15<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+ 30.16<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 30::: 456789 123456789 xyzxyzxyz XYZXYZXYZ ::: 16<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+ 31.7<<< >>> 1::: 12345678 ::: 7<<< >>>
+ 32.8<<< >>> 2::: 3456789 abcdefghi ::: 8<<< >>>
+ 33.9<<< >>> 3::: 12345678 ::: 9<<< >>>
+ 34.20<<< >>> 4::: 12345678 ::: 20<<< >>>
+ 35.1<<< >>> 35::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 ::: 1<<< >>>
+ 36. 6::: 12345678 :::
+ 37. 7::: 12345678 :::
+ 38.4<<< >>> 8::: 12345678 ::: 4<<< >>>
+ 39.5<<< >>> 9::: 3456789 abcdefghi ::: 5<<< >>>
+ 40.6<<< >>> 40::: DEFGHI 123456789 ::: 6<<< >>>
+ 41.27<<< truncation before FF; (r_l-test): >>> 41::: yzxyzxyz XYZXYZXYZ abcabcab ::: 27<<< truncation before FF; (r_l-test): >>>
+ 42.28<<< trunc 42::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 ::: 28<<< trunc
+ -- Date/Time -- x Page 4
+
+
+ 43. 43::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+ 44. 44::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+ 45. 5::: 12345678 :::
+ 46. 6::: 12345678 :::
+ 47. 7::: 12345678 :::
+ 48. 8::: 12345678 :::
+ 49. 49::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ 50. 50::: 12345678 :::
+ 51. 1::: 12345678 :::
+ 52. 2::: 12345678 :::
+ 53. 3::: 12345678 :::
+ 54. 4::: 12345678 :::
+ 55. 55::: yzxyzxyz XYZXYZXYZ abcabcab :::
+ 56. 56::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ -- Date/Time -- x Page 5
+
+
+ 57.29<<<xyzxyzxyz XYZXYZXYZ abcabcab >>> 57::: xyzxyzxyz XYZXYZXYZ abcabcab ::: 29<<<xyzxyzxyz XYZXYZXYZ abcabcab >>>
+ 58.30<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 58::: 456789 123456789 xyzxyzxyz XYZXYZXYZ ::: 30<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+ 59.1<<< >>> 9::: 12345678 ::: 1<<< >>>
+ 60.2<<< abcdefghi >>> 60::: DEFGHI 123456789 ::: 2<<< abcdefghi >>>
+ 61.3<<< >>> 1::: ::: 3<<< >>>
+ 62.4<<< >>> 2::: ::: 4<<< >>>
+ 63.5<<< >>> 3::: ------- EOF -------- EOF -------- EOF ------- EOF ------- EOF ------- EOF ::: 5<<< >>>
+ 64.6<<< >>> 6<<< >>>
+ 65.7<<< >>> 7<<< >>>
+ 66.8<<< >>> 8<<< >>>
+ 67.9<<< abcdefghi >>> 9<<< abcdefghi >>>
+ 68.40<<< 123456789 >>> 40<<< 123456789 >>>
+ 69.41<<< XYZXYZXYZ abcabcab >>> 41<<< XYZXYZXYZ abcabcab >>>
+ 70.42<<< 123456789 abcdefghi ABCDEDFHI >>> 42<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+ 71.43<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 43<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+ 72.44<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 44<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+ 73.5<<< >>> 5<<< >>>
+ 74.6<<< >>> 6<<< >>>
+ 75.7<<< >>> 7<<< >>>
+ 76.8<<< >>> 8<<< >>>
+ 77.9<<< >>> 9<<< >>>
+ 78.50<<< >>> 50<<< >>>
+ 79.1<<< >>> 1<<< >>>
+ 80.2<<< >>> 2<<< >>>
+ 81.3<<< >>> 3<<< >>>
+ 82.4<<< >>> 4<<< >>>
+ 83.55<<< XYZXYZXYZ abcabcab >>> 55<<< XYZXYZXYZ abcabcab >>>
+ 84.56<<< 123456789 abcdefghi ABCDEDFHI >>> 56<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 9
+
+
+ 85.57<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 57<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+ 86.58<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 58<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+ 87.9<<< >>> 9<<< >>>
+ 88.60<<< 123456789 >>> 60<<< 123456789 >>>
+ \ No newline at end of file
diff --git a/tests/pr/nN1+3l17f-bl b/tests/pr/nN1+3l17f-bl
new file mode 100644
index 0000000..b7eb524
--- /dev/null
+++ b/tests/pr/nN1+3l17f-bl
@@ -0,0 +1,90 @@
+-- Date/Time -- x Page 3
+
+
+ 1.15 xyzxyzxyz XYZXYZXYZ abcabcab
+ 2.16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 3.7 12345678
+ 4.8 12345678
+ 5.9 3456789 ab
+ 6.20 DEFGHI 123
+ 7.1 12345678
+ 8.
+ 9.
+ 10.4 12345678
+ 11.5 12345678
+ 12.6 12345678
+ 13.27 no truncation before FF; (r_l-test):
+ 14.
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+ 15.29 xyzxyzxyz XYZXYZXYZ abcabcab
+ 16.30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 17.1 12345678
+ 18.2 3456789 abcdefghi
+ 19.3 12345678
+ 20.4 12345678
+ 21.
+ 22.6 12345678
+ 23.7 12345678
+ 24.8 12345678
+ 25.9 3456789 abcdefghi
+ 26.40 DEFGHI 123456789
+ 27.41 yzxyzxyz XYZXYZXYZ abcabcab
+ 28.42 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+ 29.43 xyzxyzxyz XYZXYZXYZ abcabcab
+ 30.44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 31.5 12345678
+ 32.6 12345678
+ 33.7 12345678
+ 34.8 12345678
+ 35.9 12345678
+ 36.50 12345678
+ 37.1 12345678
+ 38.
+ 39.
+ 40.
+ 41.55 yzxyzxyz XYZXYZXYZ abcabcab
+ 42.56 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 9
+
+
+ 43.
+ 44.58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 45.9 12345678
+ 46.60 DEFGHI 123456789
+ 47.61 yzxyzxyz XYZXYZXYZ abcabcab
+ 48.62 456789 123456789 abcdefghi ABCDEDFHI
+ 49.63 xyzxyzxyz XYZXYZXYZ abcabcab
+ 50.64 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 51.5 12345678
+ 52.6 12345678
+ 53.7 12345678
+ 54.8 12345678
+ 55.9 12345678
+ 56.70 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 10
+
+
+ 57.1 12345678
+ 58.
+ 59.
+ 60.
+ 61.74 yzxyzxyz XYZXYZXYZ abcabcab
+ 62.75 456789 123456789 abcdefghi ABCDEDFHI
+ \ No newline at end of file
diff --git a/tests/pr/nN15l17f-bl b/tests/pr/nN15l17f-bl
new file mode 100644
index 0000000..35b48f2
--- /dev/null
+++ b/tests/pr/nN15l17f-bl
@@ -0,0 +1,111 @@
+-- Date/Time -- x Page 1
+
+
+ 15.1 FF-Test: FF's in Text V
+ 16.2 Options -n;
+ 17.3 numbering lines with skiped pages;
+ 18.4 numbering blanc lines (no. 5,12,13,23,28)
+ 19.
+ 20.6 3456789 123456789 123456789 123456789 12345678
+ 21.7 3 Columns downwards ..., <= 5 lines per page
+ 22.8
+ 23.9
+ 24.10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+ 25.1 12345678
+ 26.
+ 27.
+ 28.14 456789 123456789 123456789 123456789
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+ 29.15 xyzxyzxyz XYZXYZXYZ abcabcab
+ 30.16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 31.7 12345678
+ 32.8 12345678
+ 33.9 3456789 ab
+ 34.20 DEFGHI 123
+ 35.1 12345678
+ 36.
+ 37.
+ 38.4 12345678
+ 39.5 12345678
+ 40.6 12345678
+ 41.27 no truncation before FF; (r_l-test):
+ 42.
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+ 43.29 xyzxyzxyz XYZXYZXYZ abcabcab
+ 44.30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 45.1 12345678
+ 46.2 3456789 abcdefghi
+ 47.3 12345678
+ 48.4 12345678
+ 49.
+ 50.6 12345678
+ 51.7 12345678
+ 52.8 12345678
+ 53.9 3456789 abcdefghi
+ 54.40 DEFGHI 123456789
+ 55.41 yzxyzxyz XYZXYZXYZ abcabcab
+ 56.42 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+ 57.43 xyzxyzxyz XYZXYZXYZ abcabcab
+ 58.44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 59.5 12345678
+ 60.6 12345678
+ 61.7 12345678
+ 62.8 12345678
+ 63.9 12345678
+ 64.50 12345678
+ 65.1 12345678
+ 66.
+ 67.
+ 68.
+ 69.55 yzxyzxyz XYZXYZXYZ abcabcab
+ 70.56 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 9
+
+
+ 71.
+ 72.58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 73.9 12345678
+ 74.60 DEFGHI 123456789
+ 75.61 yzxyzxyz XYZXYZXYZ abcabcab
+ 76.62 456789 123456789 abcdefghi ABCDEDFHI
+ 77.63 xyzxyzxyz XYZXYZXYZ abcabcab
+ 78.64 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 79.5 12345678
+ 80.6 12345678
+ 81.7 12345678
+ 82.8 12345678
+ 83.9 12345678
+ 84.70 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 10
+
+
+ 85.1 12345678
+ 86.
+ 87.
+ 88.
+ 89.74 yzxyzxyz XYZXYZXYZ abcabcab
+ 90.75 456789 123456789 abcdefghi ABCDEDFHI
+ \ No newline at end of file
diff --git a/tests/pr/nSml13-bl-FF b/tests/pr/nSml13-bl-FF
new file mode 100644
index 0000000..ddf379f
--- /dev/null
+++ b/tests/pr/nSml13-bl-FF
@@ -0,0 +1,123 @@
+-- Date/Time -- x Page 1
+
+
+ 1.1 FF-Test: FF's in Text :--:1 FF-Test: FF's in Text
+ 2.2 Options -n; :--:2 Options -b -3 / -a -3 / ...
+ 3.3 numbering lines with skiped :--:3 ----------------------------
+ 4.4 numbering blanc lines (no. 5:--:4 3456789 123456789 123456789 12
+ 5. :--:5 3 Columns downwards ..., <=
+ 6.6 3456789 123456789 123456789 12:--:6 FF-Arangements: One Empty Pa
+ 7.7 3 Columns downwards ..., <= :--:7 text\f\f\n; text\f\n\ftext;
+ 8.8 :--:8 \f\f\n; \f\n\f\n;
+ 9.9 :--:9
+ 10.10 zzzzzzzzzzzzzzzzzzzzzzzzzz12:--:10 zzzzzzzzzzzzzzzzzzzzzzzzzz12
+ -- Date/Time -- x Page 2
+
+
+ 11.1 :--:1
+ 12. :--:2
+ 13. :--:3 line truncation before FF; r_r
+ 14.14 456789 123456789 123456789 12:--:14 456789 123456789 123456789 12
+ -- Date/Time -- x Page 3
+
+
+
+ -- Date/Time -- x Page 4
+
+
+ 15.15 xyzxyzxyz XYZXYZXYZ abcabcab :--:15 xyzxyzxyz XYZXYZXYZ abcabcab
+ 16.16 456789 123456789 xyzxyzxyz XY:--:16 456789 123456789 xyzxyzxyz XY
+ 17.7 :--:7
+ 18.8 :--:8
+ 19.9 3456789 ab :--:9 3456789 ab
+ 20.20 DEFGHI 123 :--:20 DEFGHI 123
+ 21.1 :--:1
+ 22. :--:2
+ 23. :--:3
+ 24.4 :--:4
+ -- Date/Time -- x Page 5
+
+
+ 25.5 :--:5
+ 26.6 :--:6
+ 27.27 no truncation before FF; (r_l:--:27 no truncation before FF; (r_l
+ 28. :--:28 no trunc
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+ 29.29 xyzxyzxyz XYZXYZXYZ abcabcab :--:29 xyzxyzxyz XYZXYZXYZ abcabcab
+ 30.30 456789 123456789 xyzxyzxyz XY:--:30 456789 123456789 xyzxyzxyz XY
+ 31.1 :--:1
+ 32.2 3456789 abcdefghi :--:2 3456789 abcdefghi
+ 33.3 :--:3
+ 34.4 :--:4
+ 35. :--:5
+ 36.6 :--:6
+ 37.7 :--:7
+ 38.8 :--:8
+ -- Date/Time -- x Page 8
+
+
+ 39.9 3456789 abcdefghi :--:9 3456789 abcdefghi
+ 40.40 DEFGHI 123456789 :--:40 DEFGHI 123456789
+ 41.41 yzxyzxyz XYZXYZXYZ abcabcab :--:41 yzxyzxyz XYZXYZXYZ abcabcab
+ 42.42 456789 123456789 abcdefghi AB:--:42 456789 123456789 abcdefghi AB
+ -- Date/Time -- x Page 9
+
+
+
+ -- Date/Time -- x Page 10
+
+
+
+ -- Date/Time -- x Page 11
+
+
+ 43.43 xyzxyzxyz XYZXYZXYZ abcabcab :--:43 xyzxyzxyz XYZXYZXYZ abcabcab
+ 44.44 456789 123456789 xyzxyzxyz XY:--:44 456789 123456789 xyzxyzxyz XY
+ 45.5 :--:5
+ 46.6 :--:6
+ 47.7 :--:7
+ 48.8 :--:8
+ 49.9 :--:9
+ 50.50 :--:50
+ 51.1 :--:1
+ 52. :--:2
+ -- Date/Time -- x Page 12
+
+
+ 53. :--:3
+ 54. :--:4
+ 55.55 yzxyzxyz XYZXYZXYZ abcabcab :--:55 yzxyzxyz XYZXYZXYZ abcabcab
+ 56.56 456789 123456789 abcdefghi AB:--:56 456789 123456789 abcdefghi AB
+ -- Date/Time -- x Page 13
+
+
+ 57. :--:57 xyzxyzxyz XYZXYZXYZ abcabcab
+ 58.58 456789 123456789 xyzxyzxyz XY:--:58 456789 123456789 xyzxyzxyz XY
+ 59.9 :--:9
+ 60.60 DEFGHI 123456789 :--:60 DEFGHI 123456789
+ 61.61 yzxyzxyz XYZXYZXYZ abcabcab :--:
+ 62.62 456789 123456789 abcdefghi AB:--:
+ 63.63 xyzxyzxyz XYZXYZXYZ abcabcab :--:
+ 64.64 456789 123456789 xyzxyzxyz XY:--:
+ 65.5 :--:
+ 66.6 :--:
+ -- Date/Time -- x Page 14
+
+
+ 67.7 :--:
+ 68.8 :--:
+ 69.9 :--:
+ 70.70 456789 123456789 abcdefghi A:--:
+ 71.1 :--:
+ 72. :--:
+ 73. :--:
+ 74. :--:
+ 75.74 yzxyzxyz XYZXYZXYZ abcabcab :--:
+ 76.75 456789 123456789 abcdefghi AB
+ \ No newline at end of file
diff --git a/tests/pr/nSml13-t-t-FF b/tests/pr/nSml13-t-t-FF
new file mode 100644
index 0000000..fbb5438
--- /dev/null
+++ b/tests/pr/nSml13-t-t-FF
@@ -0,0 +1,134 @@
+-- Date/Time -- x Page 1
+
+
+ 1.1 Test-INPUT: "Wit:--:1 Test-INPUT: "Wit:--:1 FF-Test: FF's in
+ 2.2 Options -b -3 [+:--:2 Options -b -3 [+:--:2 Options -b -3 /
+ 3.3 Options -a -3 [+:--:3 Options -a -3 [+:--:3 ----------------
+ 4.4 Options [+:--:4 Options [+:--:4 3456789 123456789
+ 5.5 :--:5 :--:5 3 Columns downwa
+ 6.6 ----------------:--:6 ----------------:--:6 FF-Arangements:
+ 7.7 3456789 123456789 :--:7 3456789 123456789 :--:7 text\f\f\n; text
+ 8.8 3 Columns downwa:--:8 3 Columns downwa:--:8 \f\f\n; \f\n\f\n
+ 9.9 With columns use:--:9 With columns use:--:9
+ 10.10 without -f e.g.::--:10 without -f e.g.::--:10 zzzzzzzzzzzzzzzz
+ -- Date/Time -- x Page 2
+
+
+ 11.1 with -f e.g. ::--:1 with -f e.g. ::--:1
+ 12.2 :--:2 :--:2
+ 13.3 line truncation be:--:3 line truncation be:--:3 line truncation be
+ 14.14 456789 123456789 :--:14 456789 123456789 :--:14 456789 123456789
+ 15.15 xyzxyzxyz XYZXYZX:--:15 xyzxyzxyz XYZXYZX:--:
+ 16.16 456789 123456789 :--:16 456789 123456789 :--:
+ 17.7 :--:7 :--:
+ 18.8 :--:8 :--:
+ 19.9 3456789 ab :--:9 3456789 ab :--:
+ 20.20 DEFGHI 123 :--:20 DEFGHI 123 :--:
+ -- Date/Time -- x Page 3
+
+
+ 21.1 :--:1 :--:
+ 22.2 :--:2 :--:
+ 23.3 :--:3 :--:
+ 24.4 :--:4 :--:
+ 25.5 :--:5 :--:
+ 26.6 :--:6 :--:
+ 27.27 no truncation bef:--:27 no truncation bef:--:
+ 28.28 no trunc :--:28 no trunc :--:
+ 29.29 xyzxyzxyz XYZXYZX:--:29 xyzxyzxyz XYZXYZX:--:
+ 30.30 456789 123456789 :--:30 456789 123456789 :--:
+ -- Date/Time -- x Page 4
+
+
+ 31.1 :--:1 :--:15 xyzxyzxyz XYZXYZX
+ 32.2 3456789 abcdefghi :--:2 3456789 abcdefghi :--:16 456789 123456789
+ 33.3 :--:3 :--:7
+ 34.4 :--:4 :--:8
+ 35.5 :--:5 :--:9 3456789 ab
+ 36.6 :--:6 :--:20 DEFGHI 123
+ 37.7 :--:7 :--:1
+ 38.8 :--:8 :--:2
+ 39.9 3456789 abcdefghi :--:9 3456789 abcdefghi :--:3
+ 40.40 DEFGHI 123456789 :--:40 DEFGHI 123456789 :--:4
+ -- Date/Time -- x Page 5
+
+
+ 41.41 yzxyzxyz XYZXYZXY:--:41 yzxyzxyz XYZXYZXY:--:5
+ 42.42 456789 123456789 :--:42 456789 123456789 :--:6
+ 43.43 xyzxyzxyz XYZXYZX:--:43 xyzxyzxyz XYZXYZX:--:27 no truncation bef
+ 44.44 456789 123456789 :--:44 456789 123456789 :--:28 no trunc
+ 45.5 :--:5 :--:
+ 46.6 :--:6 :--:
+ 47.7 :--:7 :--:
+ 48.8 :--:8 :--:
+ 49.9 :--:9 :--:
+ 50.50 :--:50 :--:
+ -- Date/Time -- x Page 6
+
+
+ 51.1 :--:1 :--:
+ 52.2 :--:2 :--:
+ 53.3 :--:3 :--:
+ 54.4 :--:4 :--:
+ 55.55 yzxyzxyz XYZXYZXY:--:55 yzxyzxyz XYZXYZXY:--:
+ 56.56 456789 123456789 :--:56 456789 123456789 :--:
+ 57.57 xyzxyzxyz XYZXYZX:--:57 xyzxyzxyz XYZXYZX:--:
+ 58.58 456789 123456789 :--:58 456789 123456789 :--:
+ 59.9 :--:9 :--:
+ 60.60 DEFGHI 123456789 :--:60 DEFGHI 123456789 :--:
+ -- Date/Time -- x Page 7
+
+
+ 61.1 :--:1 :--:29 xyzxyzxyz XYZXYZX
+ 62.2 :--:2 :--:30 456789 123456789
+ 63.3 ------- EOF -----:--:3 ------- EOF -----:--:1
+ 64. :--: :--:2 3456789 abcdefghi
+ 65. :--: :--:3
+ 66. :--: :--:4
+ 67. :--: :--:5
+ 68. :--: :--:6
+ 69. :--: :--:7
+ 70. :--: :--:8
+ -- Date/Time -- x Page 8
+
+
+ 71. :--: :--:9 3456789 abcdefghi
+ 72. :--: :--:40 DEFGHI 123456789
+ 73. :--: :--:41 yzxyzxyz XYZXYZXY
+ 74. :--: :--:42 456789 123456789
+ -- Date/Time -- x Page 9
+
+
+
+ -- Date/Time -- x Page 10
+
+
+
+ -- Date/Time -- x Page 11
+
+
+ 75. :--: :--:43 xyzxyzxyz XYZXYZX
+ 76. :--: :--:44 456789 123456789
+ 77. :--: :--:5
+ 78. :--: :--:6
+ 79. :--: :--:7
+ 80. :--: :--:8
+ 81. :--: :--:9
+ 82. :--: :--:50
+ 83. :--: :--:1
+ 84. :--: :--:2
+ -- Date/Time -- x Page 12
+
+
+ 85. :--: :--:3
+ 86. :--: :--:4
+ 87. :--: :--:55 yzxyzxyz XYZXYZXY
+ 88. :--: :--:56 456789 123456789
+ -- Date/Time -- x Page 13
+
+
+ 89. :--: :--:57 xyzxyzxyz XYZXYZX
+ 90. :--: :--:58 456789 123456789
+ 91. :--: :--:9
+ 92. :--: :--:60 DEFGHI 123456789
+ \ No newline at end of file
diff --git a/tests/pr/nSml13-t-tFFFF b/tests/pr/nSml13-t-tFFFF
new file mode 100644
index 0000000..b4916d5
--- /dev/null
+++ b/tests/pr/nSml13-t-tFFFF
@@ -0,0 +1,134 @@
+-- Date/Time -- x Page 1
+
+
+ 1.1 Test-INPUT:--:1 Test-INPUT:--:1 FF-Test: F:--:1 FF-Test: F
+ 2.2 Options -b:--:2 Options -b:--:2 Options -b:--:2 Options -b
+ 3.3 Options -a:--:3 Options -a:--:3 ----------:--:3 ----------
+ 4.4 Options :--:4 Options :--:4 3456789 1234:--:4 3456789 1234
+ 5.5 :--:5 :--:5 3 Columns :--:5 3 Columns
+ 6.6 ----------:--:6 ----------:--:6 FF-Arangem:--:6 FF-Arangem
+ 7.7 3456789 1234:--:7 3456789 1234:--:7 text\f\f\n:--:7 text\f\f\n
+ 8.8 3 Columns :--:8 3 Columns :--:8 \f\f\n; \f:--:8 \f\f\n; \f
+ 9.9 With colum:--:9 With colum:--:9 :--:9
+ 10.10 without -f:--:10 without -f:--:10 zzzzzzzzzz:--:10 zzzzzzzzzz
+ -- Date/Time -- x Page 2
+
+
+ 11.1 with -f e.:--:1 with -f e.:--:1 :--:1
+ 12.2 :--:2 :--:2 :--:2
+ 13.3 line truncat:--:3 line truncat:--:3 line truncat:--:3 line truncat
+ 14.14 456789 1234:--:14 456789 1234:--:14 456789 1234:--:14 456789 1234
+ 15.15 xyzxyzxyz X:--:15 xyzxyzxyz X:--: :--:
+ 16.16 456789 1234:--:16 456789 1234:--: :--:
+ 17.7 :--:7 :--: :--:
+ 18.8 :--:8 :--: :--:
+ 19.9 3456789 ab :--:9 3456789 ab :--: :--:
+ 20.20 DEFGHI 123 :--:20 DEFGHI 123 :--: :--:
+ -- Date/Time -- x Page 3
+
+
+ 21.1 :--:1 :--: :--:
+ 22.2 :--:2 :--: :--:
+ 23.3 :--:3 :--: :--:
+ 24.4 :--:4 :--: :--:
+ 25.5 :--:5 :--: :--:
+ 26.6 :--:6 :--: :--:
+ 27.27 no truncati:--:27 no truncati:--: :--:
+ 28.28 no trunc :--:28 no trunc :--: :--:
+ 29.29 xyzxyzxyz X:--:29 xyzxyzxyz X:--: :--:
+ 30.30 456789 1234:--:30 456789 1234:--: :--:
+ -- Date/Time -- x Page 4
+
+
+ 31.1 :--:1 :--:15 xyzxyzxyz X:--:15 xyzxyzxyz X
+ 32.2 3456789 abcd:--:2 3456789 abcd:--:16 456789 1234:--:16 456789 1234
+ 33.3 :--:3 :--:7 :--:7
+ 34.4 :--:4 :--:8 :--:8
+ 35.5 :--:5 :--:9 3456789 ab :--:9 3456789 ab
+ 36.6 :--:6 :--:20 DEFGHI 123 :--:20 DEFGHI 123
+ 37.7 :--:7 :--:1 :--:1
+ 38.8 :--:8 :--:2 :--:2
+ 39.9 3456789 abcd:--:9 3456789 abcd:--:3 :--:3
+ 40.40 DEFGHI 1234:--:40 DEFGHI 1234:--:4 :--:4
+ -- Date/Time -- x Page 5
+
+
+ 41.41 yzxyzxyz XY:--:41 yzxyzxyz XY:--:5 :--:5
+ 42.42 456789 1234:--:42 456789 1234:--:6 :--:6
+ 43.43 xyzxyzxyz X:--:43 xyzxyzxyz X:--:27 no truncati:--:27 no truncati
+ 44.44 456789 1234:--:44 456789 1234:--:28 no trunc :--:28 no trunc
+ 45.5 :--:5 :--: :--:
+ 46.6 :--:6 :--: :--:
+ 47.7 :--:7 :--: :--:
+ 48.8 :--:8 :--: :--:
+ 49.9 :--:9 :--: :--:
+ 50.50 :--:50 :--: :--:
+ -- Date/Time -- x Page 6
+
+
+ 51.1 :--:1 :--: :--:
+ 52.2 :--:2 :--: :--:
+ 53.3 :--:3 :--: :--:
+ 54.4 :--:4 :--: :--:
+ 55.55 yzxyzxyz XY:--:55 yzxyzxyz XY:--: :--:
+ 56.56 456789 1234:--:56 456789 1234:--: :--:
+ 57.57 xyzxyzxyz X:--:57 xyzxyzxyz X:--: :--:
+ 58.58 456789 1234:--:58 456789 1234:--: :--:
+ 59.9 :--:9 :--: :--:
+ 60.60 DEFGHI 1234:--:60 DEFGHI 1234:--: :--:
+ -- Date/Time -- x Page 7
+
+
+ 61.1 :--:1 :--:29 xyzxyzxyz X:--:29 xyzxyzxyz X
+ 62.2 :--:2 :--:30 456789 1234:--:30 456789 1234
+ 63.3 ------- EOF:--:3 ------- EOF:--:1 :--:1
+ 64. :--: :--:2 3456789 abcd:--:2 3456789 abcd
+ 65. :--: :--:3 :--:3
+ 66. :--: :--:4 :--:4
+ 67. :--: :--:5 :--:5
+ 68. :--: :--:6 :--:6
+ 69. :--: :--:7 :--:7
+ 70. :--: :--:8 :--:8
+ -- Date/Time -- x Page 8
+
+
+ 71. :--: :--:9 3456789 abcd:--:9 3456789 abcd
+ 72. :--: :--:40 DEFGHI 1234:--:40 DEFGHI 1234
+ 73. :--: :--:41 yzxyzxyz XY:--:41 yzxyzxyz XY
+ 74. :--: :--:42 456789 1234:--:42 456789 1234
+ -- Date/Time -- x Page 9
+
+
+
+ -- Date/Time -- x Page 10
+
+
+
+ -- Date/Time -- x Page 11
+
+
+ 75. :--: :--:43 xyzxyzxyz X:--:43 xyzxyzxyz X
+ 76. :--: :--:44 456789 1234:--:44 456789 1234
+ 77. :--: :--:5 :--:5
+ 78. :--: :--:6 :--:6
+ 79. :--: :--:7 :--:7
+ 80. :--: :--:8 :--:8
+ 81. :--: :--:9 :--:9
+ 82. :--: :--:50 :--:50
+ 83. :--: :--:1 :--:1
+ 84. :--: :--:2 :--:2
+ -- Date/Time -- x Page 12
+
+
+ 85. :--: :--:3 :--:3
+ 86. :--: :--:4 :--:4
+ 87. :--: :--:55 yzxyzxyz XY:--:55 yzxyzxyz XY
+ 88. :--: :--:56 456789 1234:--:56 456789 1234
+ -- Date/Time -- x Page 13
+
+
+ 89. :--: :--:57 xyzxyzxyz X:--:57 xyzxyzxyz X
+ 90. :--: :--:58 456789 1234:--:58 456789 1234
+ 91. :--: :--:9 :--:9
+ 92. :--: :--:60 DEFGHI 1234:--:60 DEFGHI 1234
+ \ No newline at end of file
diff --git a/tests/pr/nSml17-bl-FF b/tests/pr/nSml17-bl-FF
new file mode 100644
index 0000000..4abcc71
--- /dev/null
+++ b/tests/pr/nSml17-bl-FF
@@ -0,0 +1,111 @@
+-- Date/Time -- x Page 1
+
+
+ 1.1 FF-Test: FF's in Text :--:1 FF-Test: FF's in Text
+ 2.2 Options -n; :--:2 Options -b -3 / -a -3 / ...
+ 3.3 numbering lines with skiped :--:3 ----------------------------
+ 4.4 numbering blanc lines (no. 5:--:4 3456789 123456789 123456789 12
+ 5. :--:5 3 Columns downwards ..., <=
+ 6.6 3456789 123456789 123456789 12:--:6 FF-Arangements: One Empty Pa
+ 7.7 3 Columns downwards ..., <= :--:7 text\f\f\n; text\f\n\ftext;
+ 8.8 :--:8 \f\f\n; \f\n\f\n;
+ 9.9 :--:9
+ 10.10 zzzzzzzzzzzzzzzzzzzzzzzzzz12:--:10 zzzzzzzzzzzzzzzzzzzzzzzzzz12
+ 11.1 :--:1
+ 12. :--:2
+ 13. :--:3 line truncation before FF; r_r
+ 14.14 456789 123456789 123456789 12:--:14 456789 123456789 123456789 12
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+ 15.15 xyzxyzxyz XYZXYZXYZ abcabcab :--:15 xyzxyzxyz XYZXYZXYZ abcabcab
+ 16.16 456789 123456789 xyzxyzxyz XY:--:16 456789 123456789 xyzxyzxyz XY
+ 17.7 :--:7
+ 18.8 :--:8
+ 19.9 3456789 ab :--:9 3456789 ab
+ 20.20 DEFGHI 123 :--:20 DEFGHI 123
+ 21.1 :--:1
+ 22. :--:2
+ 23. :--:3
+ 24.4 :--:4
+ 25.5 :--:5
+ 26.6 :--:6
+ 27.27 no truncation before FF; (r_l:--:27 no truncation before FF; (r_l
+ 28. :--:28 no trunc
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+ 29.29 xyzxyzxyz XYZXYZXYZ abcabcab :--:29 xyzxyzxyz XYZXYZXYZ abcabcab
+ 30.30 456789 123456789 xyzxyzxyz XY:--:30 456789 123456789 xyzxyzxyz XY
+ 31.1 :--:1
+ 32.2 3456789 abcdefghi :--:2 3456789 abcdefghi
+ 33.3 :--:3
+ 34.4 :--:4
+ 35. :--:5
+ 36.6 :--:6
+ 37.7 :--:7
+ 38.8 :--:8
+ 39.9 3456789 abcdefghi :--:9 3456789 abcdefghi
+ 40.40 DEFGHI 123456789 :--:40 DEFGHI 123456789
+ 41.41 yzxyzxyz XYZXYZXYZ abcabcab :--:41 yzxyzxyz XYZXYZXYZ abcabcab
+ 42.42 456789 123456789 abcdefghi AB:--:42 456789 123456789 abcdefghi AB
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+ 43.43 xyzxyzxyz XYZXYZXYZ abcabcab :--:43 xyzxyzxyz XYZXYZXYZ abcabcab
+ 44.44 456789 123456789 xyzxyzxyz XY:--:44 456789 123456789 xyzxyzxyz XY
+ 45.5 :--:5
+ 46.6 :--:6
+ 47.7 :--:7
+ 48.8 :--:8
+ 49.9 :--:9
+ 50.50 :--:50
+ 51.1 :--:1
+ 52. :--:2
+ 53. :--:3
+ 54. :--:4
+ 55.55 yzxyzxyz XYZXYZXYZ abcabcab :--:55 yzxyzxyz XYZXYZXYZ abcabcab
+ 56.56 456789 123456789 abcdefghi AB:--:56 456789 123456789 abcdefghi AB
+ -- Date/Time -- x Page 9
+
+
+ 57. :--:57 xyzxyzxyz XYZXYZXYZ abcabcab
+ 58.58 456789 123456789 xyzxyzxyz XY:--:58 456789 123456789 xyzxyzxyz XY
+ 59.9 :--:9
+ 60.60 DEFGHI 123456789 :--:60 DEFGHI 123456789
+ 61.61 yzxyzxyz XYZXYZXYZ abcabcab :--:
+ 62.62 456789 123456789 abcdefghi AB:--:
+ 63.63 xyzxyzxyz XYZXYZXYZ abcabcab :--:
+ 64.64 456789 123456789 xyzxyzxyz XY:--:
+ 65.5 :--:
+ 66.6 :--:
+ 67.7 :--:
+ 68.8 :--:
+ 69.9 :--:
+ 70.70 456789 123456789 abcdefghi A:--:
+ -- Date/Time -- x Page 10
+
+
+ 71.1 :--:
+ 72. :--:
+ 73. :--:
+ 74. :--:
+ 75.74 yzxyzxyz XYZXYZXYZ abcabcab :--:
+ 76.75 456789 123456789 abcdefghi AB
+ \ No newline at end of file
diff --git a/tests/pr/nSml17-t-t-FF b/tests/pr/nSml17-t-t-FF
new file mode 100644
index 0000000..f43e335
--- /dev/null
+++ b/tests/pr/nSml17-t-t-FF
@@ -0,0 +1,118 @@
+-- Date/Time -- x Page 1
+
+
+ 1.1 Test-INPUT: "Wit:--:1 Test-INPUT: "Wit:--:1 FF-Test: FF's in
+ 2.2 Options -b -3 [+:--:2 Options -b -3 [+:--:2 Options -b -3 /
+ 3.3 Options -a -3 [+:--:3 Options -a -3 [+:--:3 ----------------
+ 4.4 Options [+:--:4 Options [+:--:4 3456789 123456789
+ 5.5 :--:5 :--:5 3 Columns downwa
+ 6.6 ----------------:--:6 ----------------:--:6 FF-Arangements:
+ 7.7 3456789 123456789 :--:7 3456789 123456789 :--:7 text\f\f\n; text
+ 8.8 3 Columns downwa:--:8 3 Columns downwa:--:8 \f\f\n; \f\n\f\n
+ 9.9 With columns use:--:9 With columns use:--:9
+ 10.10 without -f e.g.::--:10 without -f e.g.::--:10 zzzzzzzzzzzzzzzz
+ 11.1 with -f e.g. ::--:1 with -f e.g. ::--:1
+ 12.2 :--:2 :--:2
+ 13.3 line truncation be:--:3 line truncation be:--:3 line truncation be
+ 14.14 456789 123456789 :--:14 456789 123456789 :--:14 456789 123456789
+ -- Date/Time -- x Page 2
+
+
+ 15.15 xyzxyzxyz XYZXYZX:--:15 xyzxyzxyz XYZXYZX:--:
+ 16.16 456789 123456789 :--:16 456789 123456789 :--:
+ 17.7 :--:7 :--:
+ 18.8 :--:8 :--:
+ 19.9 3456789 ab :--:9 3456789 ab :--:
+ 20.20 DEFGHI 123 :--:20 DEFGHI 123 :--:
+ 21.1 :--:1 :--:
+ 22.2 :--:2 :--:
+ 23.3 :--:3 :--:
+ 24.4 :--:4 :--:
+ 25.5 :--:5 :--:
+ 26.6 :--:6 :--:
+ 27.27 no truncation bef:--:27 no truncation bef:--:
+ 28.28 no trunc :--:28 no trunc :--:
+ -- Date/Time -- x Page 3
+
+
+ 29.29 xyzxyzxyz XYZXYZX:--:29 xyzxyzxyz XYZXYZX:--:15 xyzxyzxyz XYZXYZX
+ 30.30 456789 123456789 :--:30 456789 123456789 :--:16 456789 123456789
+ 31.1 :--:1 :--:7
+ 32.2 3456789 abcdefghi :--:2 3456789 abcdefghi :--:8
+ 33.3 :--:3 :--:9 3456789 ab
+ 34.4 :--:4 :--:20 DEFGHI 123
+ 35.5 :--:5 :--:1
+ 36.6 :--:6 :--:2
+ 37.7 :--:7 :--:3
+ 38.8 :--:8 :--:4
+ 39.9 3456789 abcdefghi :--:9 3456789 abcdefghi :--:5
+ 40.40 DEFGHI 123456789 :--:40 DEFGHI 123456789 :--:6
+ 41.41 yzxyzxyz XYZXYZXY:--:41 yzxyzxyz XYZXYZXY:--:27 no truncation bef
+ 42.42 456789 123456789 :--:42 456789 123456789 :--:28 no trunc
+ -- Date/Time -- x Page 4
+
+
+ 43.43 xyzxyzxyz XYZXYZX:--:43 xyzxyzxyz XYZXYZX:--:
+ 44.44 456789 123456789 :--:44 456789 123456789 :--:
+ 45.5 :--:5 :--:
+ 46.6 :--:6 :--:
+ 47.7 :--:7 :--:
+ 48.8 :--:8 :--:
+ 49.9 :--:9 :--:
+ 50.50 :--:50 :--:
+ 51.1 :--:1 :--:
+ 52.2 :--:2 :--:
+ 53.3 :--:3 :--:
+ 54.4 :--:4 :--:
+ 55.55 yzxyzxyz XYZXYZXY:--:55 yzxyzxyz XYZXYZXY:--:
+ 56.56 456789 123456789 :--:56 456789 123456789 :--:
+ -- Date/Time -- x Page 5
+
+
+ 57.57 xyzxyzxyz XYZXYZX:--:57 xyzxyzxyz XYZXYZX:--:29 xyzxyzxyz XYZXYZX
+ 58.58 456789 123456789 :--:58 456789 123456789 :--:30 456789 123456789
+ 59.9 :--:9 :--:1
+ 60.60 DEFGHI 123456789 :--:60 DEFGHI 123456789 :--:2 3456789 abcdefghi
+ 61.1 :--:1 :--:3
+ 62.2 :--:2 :--:4
+ 63.3 ------- EOF -----:--:3 ------- EOF -----:--:5
+ 64. :--: :--:6
+ 65. :--: :--:7
+ 66. :--: :--:8
+ 67. :--: :--:9 3456789 abcdefghi
+ 68. :--: :--:40 DEFGHI 123456789
+ 69. :--: :--:41 yzxyzxyz XYZXYZXY
+ 70. :--: :--:42 456789 123456789
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+ 71. :--: :--:43 xyzxyzxyz XYZXYZX
+ 72. :--: :--:44 456789 123456789
+ 73. :--: :--:5
+ 74. :--: :--:6
+ 75. :--: :--:7
+ 76. :--: :--:8
+ 77. :--: :--:9
+ 78. :--: :--:50
+ 79. :--: :--:1
+ 80. :--: :--:2
+ 81. :--: :--:3
+ 82. :--: :--:4
+ 83. :--: :--:55 yzxyzxyz XYZXYZXY
+ 84. :--: :--:56 456789 123456789
+ -- Date/Time -- x Page 9
+
+
+ 85. :--: :--:57 xyzxyzxyz XYZXYZX
+ 86. :--: :--:58 456789 123456789
+ 87. :--: :--:9
+ 88. :--: :--:60 DEFGHI 123456789
+ \ No newline at end of file
diff --git a/tests/pr/nSml17-t-tFFFF b/tests/pr/nSml17-t-tFFFF
new file mode 100644
index 0000000..c52e8b0
--- /dev/null
+++ b/tests/pr/nSml17-t-tFFFF
@@ -0,0 +1,118 @@
+-- Date/Time -- x Page 1
+
+
+ 1.1 Test-INPUT:--:1 Test-INPUT:--:1 FF-Test: F:--:1 FF-Test: F
+ 2.2 Options -b:--:2 Options -b:--:2 Options -b:--:2 Options -b
+ 3.3 Options -a:--:3 Options -a:--:3 ----------:--:3 ----------
+ 4.4 Options :--:4 Options :--:4 3456789 1234:--:4 3456789 1234
+ 5.5 :--:5 :--:5 3 Columns :--:5 3 Columns
+ 6.6 ----------:--:6 ----------:--:6 FF-Arangem:--:6 FF-Arangem
+ 7.7 3456789 1234:--:7 3456789 1234:--:7 text\f\f\n:--:7 text\f\f\n
+ 8.8 3 Columns :--:8 3 Columns :--:8 \f\f\n; \f:--:8 \f\f\n; \f
+ 9.9 With colum:--:9 With colum:--:9 :--:9
+ 10.10 without -f:--:10 without -f:--:10 zzzzzzzzzz:--:10 zzzzzzzzzz
+ 11.1 with -f e.:--:1 with -f e.:--:1 :--:1
+ 12.2 :--:2 :--:2 :--:2
+ 13.3 line truncat:--:3 line truncat:--:3 line truncat:--:3 line truncat
+ 14.14 456789 1234:--:14 456789 1234:--:14 456789 1234:--:14 456789 1234
+ -- Date/Time -- x Page 2
+
+
+ 15.15 xyzxyzxyz X:--:15 xyzxyzxyz X:--: :--:
+ 16.16 456789 1234:--:16 456789 1234:--: :--:
+ 17.7 :--:7 :--: :--:
+ 18.8 :--:8 :--: :--:
+ 19.9 3456789 ab :--:9 3456789 ab :--: :--:
+ 20.20 DEFGHI 123 :--:20 DEFGHI 123 :--: :--:
+ 21.1 :--:1 :--: :--:
+ 22.2 :--:2 :--: :--:
+ 23.3 :--:3 :--: :--:
+ 24.4 :--:4 :--: :--:
+ 25.5 :--:5 :--: :--:
+ 26.6 :--:6 :--: :--:
+ 27.27 no truncati:--:27 no truncati:--: :--:
+ 28.28 no trunc :--:28 no trunc :--: :--:
+ -- Date/Time -- x Page 3
+
+
+ 29.29 xyzxyzxyz X:--:29 xyzxyzxyz X:--:15 xyzxyzxyz X:--:15 xyzxyzxyz X
+ 30.30 456789 1234:--:30 456789 1234:--:16 456789 1234:--:16 456789 1234
+ 31.1 :--:1 :--:7 :--:7
+ 32.2 3456789 abcd:--:2 3456789 abcd:--:8 :--:8
+ 33.3 :--:3 :--:9 3456789 ab :--:9 3456789 ab
+ 34.4 :--:4 :--:20 DEFGHI 123 :--:20 DEFGHI 123
+ 35.5 :--:5 :--:1 :--:1
+ 36.6 :--:6 :--:2 :--:2
+ 37.7 :--:7 :--:3 :--:3
+ 38.8 :--:8 :--:4 :--:4
+ 39.9 3456789 abcd:--:9 3456789 abcd:--:5 :--:5
+ 40.40 DEFGHI 1234:--:40 DEFGHI 1234:--:6 :--:6
+ 41.41 yzxyzxyz XY:--:41 yzxyzxyz XY:--:27 no truncati:--:27 no truncati
+ 42.42 456789 1234:--:42 456789 1234:--:28 no trunc :--:28 no trunc
+ -- Date/Time -- x Page 4
+
+
+ 43.43 xyzxyzxyz X:--:43 xyzxyzxyz X:--: :--:
+ 44.44 456789 1234:--:44 456789 1234:--: :--:
+ 45.5 :--:5 :--: :--:
+ 46.6 :--:6 :--: :--:
+ 47.7 :--:7 :--: :--:
+ 48.8 :--:8 :--: :--:
+ 49.9 :--:9 :--: :--:
+ 50.50 :--:50 :--: :--:
+ 51.1 :--:1 :--: :--:
+ 52.2 :--:2 :--: :--:
+ 53.3 :--:3 :--: :--:
+ 54.4 :--:4 :--: :--:
+ 55.55 yzxyzxyz XY:--:55 yzxyzxyz XY:--: :--:
+ 56.56 456789 1234:--:56 456789 1234:--: :--:
+ -- Date/Time -- x Page 5
+
+
+ 57.57 xyzxyzxyz X:--:57 xyzxyzxyz X:--:29 xyzxyzxyz X:--:29 xyzxyzxyz X
+ 58.58 456789 1234:--:58 456789 1234:--:30 456789 1234:--:30 456789 1234
+ 59.9 :--:9 :--:1 :--:1
+ 60.60 DEFGHI 1234:--:60 DEFGHI 1234:--:2 3456789 abcd:--:2 3456789 abcd
+ 61.1 :--:1 :--:3 :--:3
+ 62.2 :--:2 :--:4 :--:4
+ 63.3 ------- EOF:--:3 ------- EOF:--:5 :--:5
+ 64. :--: :--:6 :--:6
+ 65. :--: :--:7 :--:7
+ 66. :--: :--:8 :--:8
+ 67. :--: :--:9 3456789 abcd:--:9 3456789 abcd
+ 68. :--: :--:40 DEFGHI 1234:--:40 DEFGHI 1234
+ 69. :--: :--:41 yzxyzxyz XY:--:41 yzxyzxyz XY
+ 70. :--: :--:42 456789 1234:--:42 456789 1234
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+ 71. :--: :--:43 xyzxyzxyz X:--:43 xyzxyzxyz X
+ 72. :--: :--:44 456789 1234:--:44 456789 1234
+ 73. :--: :--:5 :--:5
+ 74. :--: :--:6 :--:6
+ 75. :--: :--:7 :--:7
+ 76. :--: :--:8 :--:8
+ 77. :--: :--:9 :--:9
+ 78. :--: :--:50 :--:50
+ 79. :--: :--:1 :--:1
+ 80. :--: :--:2 :--:2
+ 81. :--: :--:3 :--:3
+ 82. :--: :--:4 :--:4
+ 83. :--: :--:55 yzxyzxyz XY:--:55 yzxyzxyz XY
+ 84. :--: :--:56 456789 1234:--:56 456789 1234
+ -- Date/Time -- x Page 9
+
+
+ 85. :--: :--:57 xyzxyzxyz X:--:57 xyzxyzxyz X
+ 86. :--: :--:58 456789 1234:--:58 456789 1234
+ 87. :--: :--:9 :--:9
+ 88. :--: :--:60 DEFGHI 1234:--:60 DEFGHI 1234
+ \ No newline at end of file
diff --git a/tests/pr/narrow-1.I b/tests/pr/narrow-1.I
new file mode 100644
index 0000000..e56e15b
--- /dev/null
+++ b/tests/pr/narrow-1.I
@@ -0,0 +1 @@
+12345
diff --git a/tests/pr/narrow-1.X b/tests/pr/narrow-1.X
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/pr/narrow-1.X
@@ -0,0 +1 @@
+1
diff --git a/tests/pr/ncut-a.I b/tests/pr/ncut-a.I
new file mode 100644
index 0000000..57dc54c
--- /dev/null
+++ b/tests/pr/ncut-a.I
@@ -0,0 +1,5 @@
+y
+y
+y
+y
+y
diff --git a/tests/pr/ncut-a.X b/tests/pr/ncut-a.X
new file mode 100644
index 0000000..7fef0bd
--- /dev/null
+++ b/tests/pr/ncut-a.X
@@ -0,0 +1,5 @@
+98 y
+99 y
+00 y
+01 y
+02 y
diff --git a/tests/pr/ncut-b.I b/tests/pr/ncut-b.I
new file mode 100644
index 0000000..57dc54c
--- /dev/null
+++ b/tests/pr/ncut-b.I
@@ -0,0 +1,5 @@
+y
+y
+y
+y
+y
diff --git a/tests/pr/ncut-b.X b/tests/pr/ncut-b.X
new file mode 100644
index 0000000..8365d60
--- /dev/null
+++ b/tests/pr/ncut-b.X
@@ -0,0 +1,5 @@
+98:y
+99:y
+00:y
+01:y
+02:y
diff --git a/tests/pr/neg-page.I b/tests/pr/neg-page.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/pr/neg-page.I
diff --git a/tests/pr/neg-page.X b/tests/pr/neg-page.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/pr/neg-page.X
diff --git a/tests/pr/nl17f-bl b/tests/pr/nl17f-bl
new file mode 100644
index 0000000..374cd2d
--- /dev/null
+++ b/tests/pr/nl17f-bl
@@ -0,0 +1,111 @@
+-- Date/Time -- x Page 1
+
+
+ 1.1 FF-Test: FF's in Text V
+ 2.2 Options -n;
+ 3.3 numbering lines with skiped pages;
+ 4.4 numbering blanc lines (no. 5,12,13,23,28)
+ 5.
+ 6.6 3456789 123456789 123456789 123456789 12345678
+ 7.7 3 Columns downwards ..., <= 5 lines per page
+ 8.8
+ 9.9
+ 10.10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+ 11.1 12345678
+ 12.
+ 13.
+ 14.14 456789 123456789 123456789 123456789
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+ 15.15 xyzxyzxyz XYZXYZXYZ abcabcab
+ 16.16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 17.7 12345678
+ 18.8 12345678
+ 19.9 3456789 ab
+ 20.20 DEFGHI 123
+ 21.1 12345678
+ 22.
+ 23.
+ 24.4 12345678
+ 25.5 12345678
+ 26.6 12345678
+ 27.27 no truncation before FF; (r_l-test):
+ 28.
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+ 29.29 xyzxyzxyz XYZXYZXYZ abcabcab
+ 30.30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 31.1 12345678
+ 32.2 3456789 abcdefghi
+ 33.3 12345678
+ 34.4 12345678
+ 35.
+ 36.6 12345678
+ 37.7 12345678
+ 38.8 12345678
+ 39.9 3456789 abcdefghi
+ 40.40 DEFGHI 123456789
+ 41.41 yzxyzxyz XYZXYZXYZ abcabcab
+ 42.42 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+ 43.43 xyzxyzxyz XYZXYZXYZ abcabcab
+ 44.44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 45.5 12345678
+ 46.6 12345678
+ 47.7 12345678
+ 48.8 12345678
+ 49.9 12345678
+ 50.50 12345678
+ 51.1 12345678
+ 52.
+ 53.
+ 54.
+ 55.55 yzxyzxyz XYZXYZXYZ abcabcab
+ 56.56 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 9
+
+
+ 57.
+ 58.58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 59.9 12345678
+ 60.60 DEFGHI 123456789
+ 61.61 yzxyzxyz XYZXYZXYZ abcabcab
+ 62.62 456789 123456789 abcdefghi ABCDEDFHI
+ 63.63 xyzxyzxyz XYZXYZXYZ abcabcab
+ 64.64 456789 123456789 xyzxyzxyz XYZXYZXYZ
+ 65.5 12345678
+ 66.6 12345678
+ 67.7 12345678
+ 68.8 12345678
+ 69.9 12345678
+ 70.70 456789 123456789 abcdefghi ABCDEDFHI
+ -- Date/Time -- x Page 10
+
+
+ 71.1 12345678
+ 72.
+ 73.
+ 74.
+ 75.74 yzxyzxyz XYZXYZXYZ abcabcab
+ 76.75 456789 123456789 abcdefghi ABCDEDFHI
+ \ No newline at end of file
diff --git a/tests/pr/o3Jml17f-lm-lo b/tests/pr/o3Jml17f-lm-lo
new file mode 100644
index 0000000..c171988
--- /dev/null
+++ b/tests/pr/o3Jml17f-lm-lo
@@ -0,0 +1,118 @@
+ -- Date/Time -- x Page 1
+
+
+ 1<<< -Test: FF's in Text >>> 1::: Test-INPUT: "Without FF set by Hand" :::
+ 2<<< -b -3 / -a -3 / ... >>> 2::: Options -b -3 [+2|+3] [-l 15|8] [-f] :::
+ 3<<< >>> 3::: Options -a -3 [+2|+3] [-l 15|8] [-f] :::
+ 4<<< 123456789 123456789 123456789 12345678 >>> 4::: Options [+2|+3] [-l 24|17] [-f] :::
+ 5::: :::
+ 6<<< -Arangements: One Empty Page >>> 6::: -------------------------------------------- :::
+ 7<<< \f\f\n; text\f\n\ftext; \f\ftext; >>> 7::: 789 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ 8<<< f\f\n; \f\n\f\n; >>> 8::: 3 Columns downwards, across, ...: :::
+ 9<<< >>> 9::: With columns use <= 5 text lines/page, :::
+ 10<<< >>> 10::: without -f e.g.: -l 15 = total lines/page, :::
+ 1<<< >>> 1::: with -f e.g. : -l 8 -f :::
+ 2<<< >>> 2::: :::
+ 3<<< truncation before FF; r_r_o_l-test: >>> 3::: line truncation before new page; r_r_o_l-test: :::
+ 14<<< 123456789 123456789 123456789 >>> 14::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ -- Date/Time -- x Page 2
+
+
+ 15::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+ 16::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+ 7::: 12345678 :::
+ 8::: 12345678 :::
+ 9::: 3456789 ab :::
+ 20::: DEFGHI 123 :::
+ 21::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ 2::: 12345678 :::
+ 3::: 12345678 :::
+ 4::: 12345678 :::
+ 5::: 12345678 :::
+ 6::: 12345678 :::
+ 27::: no truncation before nwe page; (r_l-test): :::
+ 28::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ -- Date/Time -- x Page 3
+
+
+ 15<<< xyzxyzxyz XYZXYZXYZ abcabcab >>> 29::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+ 16<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 30::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+ 7<<< >>> 1::: 12345678 :::
+ 8<<< >>> 2::: 3456789 abcdefghi :::
+ 9<<< >>> 3::: 12345678 :::
+ 20<<< >>> 4::: 12345678 :::
+ 1<<< >>> 35::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ 6::: 12345678 :::
+ 7::: 12345678 :::
+ 4<<< >>> 8::: 12345678 :::
+ 5<<< >>> 9::: 3456789 abcdefghi :::
+ 6<<< >>> 40::: DEFGHI 123456789 :::
+ 27<<< truncation before FF; (r_l-test): >>> 41::: yzxyzxyz XYZXYZXYZ abcabcab :::
+ 28<<< trunc 42::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ -- Date/Time -- x Page 4
+
+
+ 43::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+ 44::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+ 5::: 12345678 :::
+ 6::: 12345678 :::
+ 7::: 12345678 :::
+ 8::: 12345678 :::
+ 49::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ 50::: 12345678 :::
+ 1::: 12345678 :::
+ 2::: 12345678 :::
+ 3::: 12345678 :::
+ 4::: 12345678 :::
+ 55::: yzxyzxyz XYZXYZXYZ abcabcab :::
+ 56::: 89 123456789 123456789 123456789 123456789 123456789 123456789 1234567890 :::
+ -- Date/Time -- x Page 5
+
+
+ 29<<<xyzxyzxyz XYZXYZXYZ abcabcab >>> 57::: xyzxyzxyz XYZXYZXYZ abcabcab :::
+ 30<<< 123456789 xyzxyzxyz XYZXYZXYZ >>> 58::: 456789 123456789 xyzxyzxyz XYZXYZXYZ :::
+ 1<<< >>> 9::: 12345678 :::
+ 2<<< abcdefghi >>> 60::: DEFGHI 123456789 :::
+ 3<<< >>> 1::: :::
+ 4<<< >>> 2::: :::
+ 5<<< >>> 3::: ------- EOF -------- EOF -------- EOF ------- EOF ------- EOF ------- EOF :::
+ 6<<< >>>
+ 7<<< >>>
+ 8<<< >>>
+ 9<<< abcdefghi >>>
+ 40<<< 123456789 >>>
+ 41<<< XYZXYZXYZ abcabcab >>>
+ 42<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+ 43<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+ 44<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+ 5<<< >>>
+ 6<<< >>>
+ 7<<< >>>
+ 8<<< >>>
+ 9<<< >>>
+ 50<<< >>>
+ 1<<< >>>
+ 2<<< >>>
+ 3<<< >>>
+ 4<<< >>>
+ 55<<< XYZXYZXYZ abcabcab >>>
+ 56<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 9
+
+
+ 57<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+ 58<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+ 9<<< >>>
+ 60<<< 123456789 >>>
+ \ No newline at end of file
diff --git a/tests/pr/o3a3Sl17f-tn b/tests/pr/o3a3Sl17f-tn
new file mode 100644
index 0000000..586ed55
--- /dev/null
+++ b/tests/pr/o3a3Sl17f-tn
@@ -0,0 +1,28 @@
+ -- Date/Time -- x Page 1
+
+
+ 1 Test-INPUT: "With:--:2 Options -b -3 [+2:--:3 Options -a -3 [+2
+ 4 Options [+2:--:5 :--:6 -----------------
+ 7 3456789 123456789 1:--:8 3 Columns downwar:--:9 With columns use
+ 10 without -f e.g.: :--:1 with -f e.g. : :--:2
+ 3 line truncation bef:--:14 456789 123456789 1:--:15 xyzxyzxyz XYZXYZXY
+ 16 456789 123456789 x:--:7 :--:8
+ 9 3456789 ab :--:20 DEFGHI 123 :--:1
+ 2 :--:3 :--:4
+ 5 :--:6 :--:27 no truncation befo
+ 28 no trunc :--:29 xyzxyzxyz XYZXYZXY:--:30 456789 123456789 x
+ 1 :--:2 3456789 abcdefghi :--:3
+ 4 :--:5 :--:6
+ 7 :--:8 :--:9 3456789 abcdefghi
+ 40 DEFGHI 123456789 :--:41 yzxyzxyz XYZXYZXYZ:--:42 456789 123456789 a
+ -- Date/Time -- x Page 2
+
+
+ 43 xyzxyzxyz XYZXYZXY:--:44 456789 123456789 x:--:5
+ 6 :--:7 :--:8
+ 9 :--:50 :--:1
+ 2 :--:3 :--:4
+ 55 yzxyzxyz XYZXYZXYZ:--:56 456789 123456789 a:--:57 xyzxyzxyz XYZXYZXY
+ 58 456789 123456789 x:--:9 :--:60 DEFGHI 123456789
+ 1 :--:2 :--:3 ------- EOF ------
+ \ No newline at end of file
diff --git a/tests/pr/o3a3Snl17f-tn b/tests/pr/o3a3Snl17f-tn
new file mode 100644
index 0000000..cc437ad
--- /dev/null
+++ b/tests/pr/o3a3Snl17f-tn
@@ -0,0 +1,28 @@
+ -- Date/Time -- x Page 1
+
+
+ 1.1 Test-INPUT::--: 2.2 Options -b :--: 3.3 Options -a
+ 4.4 Options :--: 5.5 :--: 6.6 -----------
+ 7.7 3456789 12345:--: 8.8 3 Columns d:--: 9.9 With column
+ 10.10 without -f :--: 11.1 with -f e.g:--: 12.2
+ 13.3 line truncati:--: 14.14 456789 12345:--: 15.15 xyzxyzxyz XY
+ 16.16 456789 12345:--: 17.7 :--: 18.8
+ 19.9 3456789 ab :--: 20.20 DEFGHI 123 :--: 21.1
+ 22.2 :--: 23.3 :--: 24.4
+ 25.5 :--: 26.6 :--: 27.27 no truncatio
+ 28.28 no trunc :--: 29.29 xyzxyzxyz XY:--: 30.30 456789 12345
+ 31.1 :--: 32.2 3456789 abcde:--: 33.3
+ 34.4 :--: 35.5 :--: 36.6
+ 37.7 :--: 38.8 :--: 39.9 3456789 abcde
+ 40.40 DEFGHI 12345:--: 41.41 yzxyzxyz XYZ:--: 42.42 456789 12345
+ -- Date/Time -- x Page 2
+
+
+ 43.43 xyzxyzxyz XY:--: 44.44 456789 12345:--: 45.5
+ 46.6 :--: 47.7 :--: 48.8
+ 49.9 :--: 50.50 :--: 51.1
+ 52.2 :--: 53.3 :--: 54.4
+ 55.55 yzxyzxyz XYZ:--: 56.56 456789 12345:--: 57.57 xyzxyzxyz XY
+ 58.58 456789 12345:--: 59.9 :--: 60.60 DEFGHI 12345
+ 61.1 :--: 62.2 :--: 63.3 ------- EOF
+ \ No newline at end of file
diff --git a/tests/pr/o3a3l17f-tn b/tests/pr/o3a3l17f-tn
new file mode 100644
index 0000000..7991b6f
--- /dev/null
+++ b/tests/pr/o3a3l17f-tn
@@ -0,0 +1,28 @@
+ -- Date/Time -- x Page 1
+
+
+ 1 Test-INPUT: "Withou 2 Options -b -3 [+2|+ 3 Options -a -3 [+2|+
+ 4 Options [+2|+ 5 6 -------------------
+ 7 3456789 123456789 123 8 3 Columns downwards 9 With columns use <
+ 10 without -f e.g.: - 1 with -f e.g. : - 2
+ 3 line truncation befor 14 456789 123456789 123 15 xyzxyzxyz XYZXYZXYZ
+ 16 456789 123456789 xyz 7 8
+ 9 3456789 ab 20 DEFGHI 123 1
+ 2 3 4
+ 5 6 27 no truncation before
+ 28 no trunc 29 xyzxyzxyz XYZXYZXYZ 30 456789 123456789 xyz
+ 1 2 3456789 abcdefghi 3
+ 4 5 6
+ 7 8 9 3456789 abcdefghi
+ 40 DEFGHI 123456789 41 yzxyzxyz XYZXYZXYZ a 42 456789 123456789 abc
+ -- Date/Time -- x Page 2
+
+
+ 43 xyzxyzxyz XYZXYZXYZ 44 456789 123456789 xyz 5
+ 6 7 8
+ 9 50 1
+ 2 3 4
+ 55 yzxyzxyz XYZXYZXYZ a 56 456789 123456789 abc 57 xyzxyzxyz XYZXYZXYZ
+ 58 456789 123456789 xyz 9 60 DEFGHI 123456789
+ 1 2 3 ------- EOF --------
+ \ No newline at end of file
diff --git a/tests/pr/o3b3Sl17f-tn b/tests/pr/o3b3Sl17f-tn
new file mode 100644
index 0000000..aa103ae
--- /dev/null
+++ b/tests/pr/o3b3Sl17f-tn
@@ -0,0 +1,28 @@
+ -- Date/Time -- x Page 1
+
+
+ 1 Test-INPUT: "With:--:15 xyzxyzxyz XYZXYZXY:--:29 xyzxyzxyz XYZXYZXY
+ 2 Options -b -3 [+2:--:16 456789 123456789 x:--:30 456789 123456789 x
+ 3 Options -a -3 [+2:--:7 :--:1
+ 4 Options [+2:--:8 :--:2 3456789 abcdefghi
+ 5 :--:9 3456789 ab :--:3
+ 6 -----------------:--:20 DEFGHI 123 :--:4
+ 7 3456789 123456789 1:--:1 :--:5
+ 8 3 Columns downwar:--:2 :--:6
+ 9 With columns use :--:3 :--:7
+ 10 without -f e.g.: :--:4 :--:8
+ 1 with -f e.g. : :--:5 :--:9 3456789 abcdefghi
+ 2 :--:6 :--:40 DEFGHI 123456789
+ 3 line truncation bef:--:27 no truncation befo:--:41 yzxyzxyz XYZXYZXYZ
+ 14 456789 123456789 1:--:28 no trunc :--:42 456789 123456789 a
+ -- Date/Time -- x Page 2
+
+
+ 43 xyzxyzxyz XYZXYZXY:--:50 :--:57 xyzxyzxyz XYZXYZXY
+ 44 456789 123456789 x:--:1 :--:58 456789 123456789 x
+ 5 :--:2 :--:9
+ 6 :--:3 :--:60 DEFGHI 123456789
+ 7 :--:4 :--:1
+ 8 :--:55 yzxyzxyz XYZXYZXYZ:--:2
+ 9 :--:56 456789 123456789 a:--:3 ------- EOF ------
+ \ No newline at end of file
diff --git a/tests/pr/o3b3Snl17f-tn b/tests/pr/o3b3Snl17f-tn
new file mode 100644
index 0000000..09c1917
--- /dev/null
+++ b/tests/pr/o3b3Snl17f-tn
@@ -0,0 +1,28 @@
+ -- Date/Time -- x Page 1
+
+
+ 1.1 Test-INPUT::--: 15.15 xyzxyzxyz XY:--: 29.29 xyzxyzxyz XY
+ 2.2 Options -b :--: 16.16 456789 12345:--: 30.30 456789 12345
+ 3.3 Options -a :--: 17.7 :--: 31.1
+ 4.4 Options :--: 18.8 :--: 32.2 3456789 abcde
+ 5.5 :--: 19.9 3456789 ab :--: 33.3
+ 6.6 -----------:--: 20.20 DEFGHI 123 :--: 34.4
+ 7.7 3456789 12345:--: 21.1 :--: 35.5
+ 8.8 3 Columns d:--: 22.2 :--: 36.6
+ 9.9 With column:--: 23.3 :--: 37.7
+ 10.10 without -f :--: 24.4 :--: 38.8
+ 11.1 with -f e.g:--: 25.5 :--: 39.9 3456789 abcde
+ 12.2 :--: 26.6 :--: 40.40 DEFGHI 12345
+ 13.3 line truncati:--: 27.27 no truncatio:--: 41.41 yzxyzxyz XYZ
+ 14.14 456789 12345:--: 28.28 no trunc :--: 42.42 456789 12345
+ -- Date/Time -- x Page 2
+
+
+ 43.43 xyzxyzxyz XY:--: 50.50 :--: 57.57 xyzxyzxyz XY
+ 44.44 456789 12345:--: 51.1 :--: 58.58 456789 12345
+ 45.5 :--: 52.2 :--: 59.9
+ 46.6 :--: 53.3 :--: 60.60 DEFGHI 12345
+ 47.7 :--: 54.4 :--: 61.1
+ 48.8 :--: 55.55 yzxyzxyz XYZ:--: 62.2
+ 49.9 :--: 56.56 456789 12345:--: 63.3 ------- EOF
+ \ No newline at end of file
diff --git a/tests/pr/o3b3l17f-tn b/tests/pr/o3b3l17f-tn
new file mode 100644
index 0000000..61b690d
--- /dev/null
+++ b/tests/pr/o3b3l17f-tn
@@ -0,0 +1,28 @@
+ -- Date/Time -- x Page 1
+
+
+ 1 Test-INPUT: "Withou 15 xyzxyzxyz XYZXYZXYZ 29 xyzxyzxyz XYZXYZXYZ
+ 2 Options -b -3 [+2|+ 16 456789 123456789 xyz 30 456789 123456789 xyz
+ 3 Options -a -3 [+2|+ 7 1
+ 4 Options [+2|+ 8 2 3456789 abcdefghi
+ 5 9 3456789 ab 3
+ 6 ------------------- 20 DEFGHI 123 4
+ 7 3456789 123456789 123 1 5
+ 8 3 Columns downwards 2 6
+ 9 With columns use < 3 7
+ 10 without -f e.g.: - 4 8
+ 1 with -f e.g. : - 5 9 3456789 abcdefghi
+ 2 6 40 DEFGHI 123456789
+ 3 line truncation befor 27 no truncation before 41 yzxyzxyz XYZXYZXYZ a
+ 14 456789 123456789 123 28 no trunc 42 456789 123456789 abc
+ -- Date/Time -- x Page 2
+
+
+ 43 xyzxyzxyz XYZXYZXYZ 50 57 xyzxyzxyz XYZXYZXYZ
+ 44 456789 123456789 xyz 1 58 456789 123456789 xyz
+ 5 2 9
+ 6 3 60 DEFGHI 123456789
+ 7 4 1
+ 8 55 yzxyzxyz XYZXYZXYZ a 2
+ 9 56 456789 123456789 abc 3 ------- EOF --------
+ \ No newline at end of file
diff --git a/tests/pr/o3mSl17f-bl-tn b/tests/pr/o3mSl17f-bl-tn
new file mode 100644
index 0000000..2e2d8df
--- /dev/null
+++ b/tests/pr/o3mSl17f-bl-tn
@@ -0,0 +1,137 @@
+ -- Date/Time -- x Page 1
+
+
+ 1 FF-Test: FF's in Text :--:1 Test-INPUT: "Without FF set by
+ 2 Options -n; :--:2 Options -b -3 [+2|+3] [-l 15|8
+ 3 numbering lines with skiped pa:--:3 Options -a -3 [+2|+3] [-l 15|8
+ 4 numbering blanc lines (no. 5,1:--:4 Options [+2|+3] [-l 24|1
+ :--:5
+ 6 3456789 123456789 123456789 1234:--:6 ------------------------------
+ 7 3 Columns downwards ..., <= 5 :--:7 3456789 123456789 123456789 1234
+ 8 :--:8 3 Columns downwards, across, .
+ 9 :--:9 With columns use <= 5 text li
+ 10 zzzzzzzzzzzzzzzzzzzzzzzzzz1234:--:10 without -f e.g.: -l 15 = tota
+ 1 :--:1 with -f e.g. : -l 8 -f
+ :--:2
+ :--:3 line truncation before new page;
+ 14 456789 123456789 123456789 1234:--:14 456789 123456789 123456789 1234
+ -- Date/Time -- x Page 2
+
+
+ :--:15 xyzxyzxyz XYZXYZXYZ abcabcab
+ :--:16 456789 123456789 xyzxyzxyz XYZX
+ :--:7
+ :--:8
+ :--:9 3456789 ab
+ :--:20 DEFGHI 123
+ :--:1
+ :--:2
+ :--:3
+ :--:4
+ :--:5
+ :--:6
+ :--:27 no truncation before nwe page;
+ :--:28 no trunc
+ -- Date/Time -- x Page 3
+
+
+ 15 xyzxyzxyz XYZXYZXYZ abcabcab :--:29 xyzxyzxyz XYZXYZXYZ abcabcab
+ 16 456789 123456789 xyzxyzxyz XYZX:--:30 456789 123456789 xyzxyzxyz XYZX
+ 7 :--:1
+ 8 :--:2 3456789 abcdefghi
+ 9 3456789 ab :--:3
+ 20 DEFGHI 123 :--:4
+ 1 :--:5
+ :--:6
+ :--:7
+ 4 :--:8
+ 5 :--:9 3456789 abcdefghi
+ 6 :--:40 DEFGHI 123456789
+ 27 no truncation before FF; (r_l-t:--:41 yzxyzxyz XYZXYZXYZ abcabcab
+ :--:42 456789 123456789 abcdefghi ABCD
+ -- Date/Time -- x Page 4
+
+
+ :--:43 xyzxyzxyz XYZXYZXYZ abcabcab
+ :--:44 456789 123456789 xyzxyzxyz XYZX
+ :--:5
+ :--:6
+ :--:7
+ :--:8
+ :--:9
+ :--:50
+ :--:1
+ :--:2
+ :--:3
+ :--:4
+ :--:55 yzxyzxyz XYZXYZXYZ abcabcab
+ :--:56 456789 123456789 abcdefghi ABCD
+ -- Date/Time -- x Page 5
+
+
+ 29 xyzxyzxyz XYZXYZXYZ abcabcab :--:57 xyzxyzxyz XYZXYZXYZ abcabcab
+ 30 456789 123456789 xyzxyzxyz XYZX:--:58 456789 123456789 xyzxyzxyz XYZX
+ 1 :--:9
+ 2 3456789 abcdefghi :--:60 DEFGHI 123456789
+ 3 :--:1
+ 4 :--:2
+ :--:3 ------- EOF -------- EOF ------
+ 6 :--:
+ 7 :--:
+ 8 :--:
+ 9 3456789 abcdefghi :--:
+ 40 DEFGHI 123456789 :--:
+ 41 yzxyzxyz XYZXYZXYZ abcabcab :--:
+ 42 456789 123456789 abcdefghi ABCD
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+ 43 xyzxyzxyz XYZXYZXYZ abcabcab :--:
+ 44 456789 123456789 xyzxyzxyz XYZX:--:
+ 5 :--:
+ 6 :--:
+ 7 :--:
+ 8 :--:
+ 9 :--:
+ 50 :--:
+ 1 :--:
+ :--:
+ :--:
+ :--:
+ 55 yzxyzxyz XYZXYZXYZ abcabcab :--:
+ 56 456789 123456789 abcdefghi ABCD
+ -- Date/Time -- x Page 9
+
+
+ :--:
+ 58 456789 123456789 xyzxyzxyz XYZX:--:
+ 9 :--:
+ 60 DEFGHI 123456789 :--:
+ 61 yzxyzxyz XYZXYZXYZ abcabcab :--:
+ 62 456789 123456789 abcdefghi ABCD:--:
+ 63 xyzxyzxyz XYZXYZXYZ abcabcab :--:
+ 64 456789 123456789 xyzxyzxyz XYZX:--:
+ 5 :--:
+ 6 :--:
+ 7 :--:
+ 8 :--:
+ 9 :--:
+ 70 456789 123456789 abcdefghi ABC:--:
+ -- Date/Time -- x Page 10
+
+
+ 1 :--:
+ :--:
+ :--:
+ :--:
+ 74 yzxyzxyz XYZXYZXYZ abcabcab :--:
+ 75 456789 123456789 abcdefghi ABCD
+ \ No newline at end of file
diff --git a/tests/pr/o3mSnl17fbltn b/tests/pr/o3mSnl17fbltn
new file mode 100644
index 0000000..8148bb2
--- /dev/null
+++ b/tests/pr/o3mSnl17fbltn
@@ -0,0 +1,137 @@
+ -- Date/Time -- x Page 1
+
+
+ 1.1 FF-Test: FF's in Text :--:1 Test-INPUT: "Without FF set
+ 2.2 Options -n; :--:2 Options -b -3 [+2|+3] [-l 1
+ 3.3 numbering lines with skiped:--:3 Options -a -3 [+2|+3] [-l 1
+ 4.4 numbering blanc lines (no. :--:4 Options [+2|+3] [-l 2
+ 5. :--:5
+ 6.6 3456789 123456789 123456789 1:--:6 ---------------------------
+ 7.7 3 Columns downwards ..., <=:--:7 3456789 123456789 123456789 1
+ 8.8 :--:8 3 Columns downwards, across
+ 9.9 :--:9 With columns use <= 5 text
+ 10.10 zzzzzzzzzzzzzzzzzzzzzzzzzz1:--:10 without -f e.g.: -l 15 = t
+ 11.1 :--:1 with -f e.g. : -l 8 -f
+ 12. :--:2
+ 13. :--:3 line truncation before new pa
+ 14.14 456789 123456789 123456789 1:--:14 456789 123456789 123456789 1
+ -- Date/Time -- x Page 2
+
+
+ 15. :--:15 xyzxyzxyz XYZXYZXYZ abcabcab
+ 16. :--:16 456789 123456789 xyzxyzxyz X
+ 17. :--:7
+ 18. :--:8
+ 19. :--:9 3456789 ab
+ 20. :--:20 DEFGHI 123
+ 21. :--:1
+ 22. :--:2
+ 23. :--:3
+ 24. :--:4
+ 25. :--:5
+ 26. :--:6
+ 27. :--:27 no truncation before nwe pag
+ 28. :--:28 no trunc
+ -- Date/Time -- x Page 3
+
+
+ 29.15 xyzxyzxyz XYZXYZXYZ abcabcab:--:29 xyzxyzxyz XYZXYZXYZ abcabcab
+ 30.16 456789 123456789 xyzxyzxyz X:--:30 456789 123456789 xyzxyzxyz X
+ 31.7 :--:1
+ 32.8 :--:2 3456789 abcdefghi
+ 33.9 3456789 ab :--:3
+ 34.20 DEFGHI 123 :--:4
+ 35.1 :--:5
+ 36. :--:6
+ 37. :--:7
+ 38.4 :--:8
+ 39.5 :--:9 3456789 abcdefghi
+ 40.6 :--:40 DEFGHI 123456789
+ 41.27 no truncation before FF; (r_:--:41 yzxyzxyz XYZXYZXYZ abcabcab
+ 42. :--:42 456789 123456789 abcdefghi A
+ -- Date/Time -- x Page 4
+
+
+ 43. :--:43 xyzxyzxyz XYZXYZXYZ abcabcab
+ 44. :--:44 456789 123456789 xyzxyzxyz X
+ 45. :--:5
+ 46. :--:6
+ 47. :--:7
+ 48. :--:8
+ 49. :--:9
+ 50. :--:50
+ 51. :--:1
+ 52. :--:2
+ 53. :--:3
+ 54. :--:4
+ 55. :--:55 yzxyzxyz XYZXYZXYZ abcabcab
+ 56. :--:56 456789 123456789 abcdefghi A
+ -- Date/Time -- x Page 5
+
+
+ 57.29 xyzxyzxyz XYZXYZXYZ abcabcab:--:57 xyzxyzxyz XYZXYZXYZ abcabcab
+ 58.30 456789 123456789 xyzxyzxyz X:--:58 456789 123456789 xyzxyzxyz X
+ 59.1 :--:9
+ 60.2 3456789 abcdefghi :--:60 DEFGHI 123456789
+ 61.3 :--:1
+ 62.4 :--:2
+ 63. :--:3 ------- EOF -------- EOF ---
+ 64.6 :--:
+ 65.7 :--:
+ 66.8 :--:
+ 67.9 3456789 abcdefghi :--:
+ 68.40 DEFGHI 123456789 :--:
+ 69.41 yzxyzxyz XYZXYZXYZ abcabcab :--:
+ 70.42 456789 123456789 abcdefghi A
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+ 71.43 xyzxyzxyz XYZXYZXYZ abcabcab:--:
+ 72.44 456789 123456789 xyzxyzxyz X:--:
+ 73.5 :--:
+ 74.6 :--:
+ 75.7 :--:
+ 76.8 :--:
+ 77.9 :--:
+ 78.50 :--:
+ 79.1 :--:
+ 80. :--:
+ 81. :--:
+ 82. :--:
+ 83.55 yzxyzxyz XYZXYZXYZ abcabcab :--:
+ 84.56 456789 123456789 abcdefghi A
+ -- Date/Time -- x Page 9
+
+
+ 85. :--:
+ 86.58 456789 123456789 xyzxyzxyz X:--:
+ 87.9 :--:
+ 88.60 DEFGHI 123456789 :--:
+ 89.61 yzxyzxyz XYZXYZXYZ abcabcab :--:
+ 90.62 456789 123456789 abcdefghi A:--:
+ 91.63 xyzxyzxyz XYZXYZXYZ abcabcab:--:
+ 92.64 456789 123456789 xyzxyzxyz X:--:
+ 93.5 :--:
+ 94.6 :--:
+ 95.7 :--:
+ 96.8 :--:
+ 97.9 :--:
+ 98.70 456789 123456789 abcdefghi :--:
+ -- Date/Time -- x Page 10
+
+
+ 99.1 :--:
+ 100. :--:
+ 101. :--:
+ 102. :--:
+ 103.74 yzxyzxyz XYZXYZXYZ abcabcab :--:
+ 104.75 456789 123456789 abcdefghi A
+ \ No newline at end of file
diff --git a/tests/pr/o3ml17f-bl-tn b/tests/pr/o3ml17f-bl-tn
new file mode 100644
index 0000000..ee496cb
--- /dev/null
+++ b/tests/pr/o3ml17f-bl-tn
@@ -0,0 +1,137 @@
+ -- Date/Time -- x Page 1
+
+
+ 1 FF-Test: FF's in Text 1 Test-INPUT: "Without FF set by
+ 2 Options -n; 2 Options -b -3 [+2|+3] [-l 15|8]
+ 3 numbering lines with skiped pag 3 Options -a -3 [+2|+3] [-l 15|8]
+ 4 numbering blanc lines (no. 5,12 4 Options [+2|+3] [-l 24|17
+ 5
+ 6 3456789 123456789 123456789 12345 6 -------------------------------
+ 7 3 Columns downwards ..., <= 5 l 7 3456789 123456789 123456789 12345
+ 8 8 3 Columns downwards, across, ..
+ 9 9 With columns use <= 5 text lin
+ 10 zzzzzzzzzzzzzzzzzzzzzzzzzz12345 10 without -f e.g.: -l 15 = total
+ 1 1 with -f e.g. : -l 8 -f
+ 2
+ 3 line truncation before new page;
+ 14 456789 123456789 123456789 12345 14 456789 123456789 123456789 12345
+ -- Date/Time -- x Page 2
+
+
+ 15 xyzxyzxyz XYZXYZXYZ abcabcab
+ 16 456789 123456789 xyzxyzxyz XYZXY
+ 7
+ 8
+ 9 3456789 ab
+ 20 DEFGHI 123
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 27 no truncation before nwe page; (
+ 28 no trunc
+ -- Date/Time -- x Page 3
+
+
+ 15 xyzxyzxyz XYZXYZXYZ abcabcab 29 xyzxyzxyz XYZXYZXYZ abcabcab
+ 16 456789 123456789 xyzxyzxyz XYZXY 30 456789 123456789 xyzxyzxyz XYZXY
+ 7 1
+ 8 2 3456789 abcdefghi
+ 9 3456789 ab 3
+ 20 DEFGHI 123 4
+ 1 5
+ 6
+ 7
+ 4 8
+ 5 9 3456789 abcdefghi
+ 6 40 DEFGHI 123456789
+ 27 no truncation before FF; (r_l-te 41 yzxyzxyz XYZXYZXYZ abcabcab
+ 42 456789 123456789 abcdefghi ABCDE
+ -- Date/Time -- x Page 4
+
+
+ 43 xyzxyzxyz XYZXYZXYZ abcabcab
+ 44 456789 123456789 xyzxyzxyz XYZXY
+ 5
+ 6
+ 7
+ 8
+ 9
+ 50
+ 1
+ 2
+ 3
+ 4
+ 55 yzxyzxyz XYZXYZXYZ abcabcab
+ 56 456789 123456789 abcdefghi ABCDE
+ -- Date/Time -- x Page 5
+
+
+ 29 xyzxyzxyz XYZXYZXYZ abcabcab 57 xyzxyzxyz XYZXYZXYZ abcabcab
+ 30 456789 123456789 xyzxyzxyz XYZXY 58 456789 123456789 xyzxyzxyz XYZXY
+ 1 9
+ 2 3456789 abcdefghi 60 DEFGHI 123456789
+ 3 1
+ 4 2
+ 3 ------- EOF -------- EOF -------
+ 6
+ 7
+ 8
+ 9 3456789 abcdefghi
+ 40 DEFGHI 123456789
+ 41 yzxyzxyz XYZXYZXYZ abcabcab
+ 42 456789 123456789 abcdefghi ABCDE
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+ 43 xyzxyzxyz XYZXYZXYZ abcabcab
+ 44 456789 123456789 xyzxyzxyz XYZXY
+ 5
+ 6
+ 7
+ 8
+ 9
+ 50
+ 1
+
+
+
+ 55 yzxyzxyz XYZXYZXYZ abcabcab
+ 56 456789 123456789 abcdefghi ABCDE
+ -- Date/Time -- x Page 9
+
+
+
+ 58 456789 123456789 xyzxyzxyz XYZXY
+ 9
+ 60 DEFGHI 123456789
+ 61 yzxyzxyz XYZXYZXYZ abcabcab
+ 62 456789 123456789 abcdefghi ABCDE
+ 63 xyzxyzxyz XYZXYZXYZ abcabcab
+ 64 456789 123456789 xyzxyzxyz XYZXY
+ 5
+ 6
+ 7
+ 8
+ 9
+ 70 456789 123456789 abcdefghi ABCD
+ -- Date/Time -- x Page 10
+
+
+ 1
+
+
+
+ 74 yzxyzxyz XYZXYZXYZ abcabcab
+ 75 456789 123456789 abcdefghi ABCDE
+ \ No newline at end of file
diff --git a/tests/pr/pr-tests b/tests/pr/pr-tests
new file mode 100755
index 0000000..e3ff10d
--- /dev/null
+++ b/tests/pr/pr-tests
@@ -0,0 +1,7155 @@
+#! /bin/sh
+# This script was generated automatically by mk-script.
+case $# in
+ 0) xx='pr';;
+ *) xx="$1";;
+esac
+test "$VERBOSE" && echo=echo || echo=:
+$echo testing program: $xx
+errors=0
+test "$srcdir" || srcdir=.
+test "$VERBOSE" && $xx --version 2> /dev/null
+
+# Make sure we get English translations.
+LANGUAGE=C
+export LANGUAGE
+LC_ALL=C
+export LC_ALL
+LANG=C
+export LANG
+
+$xx --date-format="-- Date/Time --" -h x $srcdir/0Ft > 1a.O 2> 1a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1a.O $srcdir/0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1a"; fi;;
+ 1) $echo "Test 1a failed: files 1a.O and $srcdir/0F differ" 1>&2
+ (diff -c 1a.O $srcdir/0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1a may have failed." 1>&2
+ $echo The command "cmp 1a.O $srcdir/0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1a.E || rm -f 1a.E
+$xx --date-format="-- Date/Time --" -h x $srcdir/0Fnt > 1b.O 2> 1b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1b.O $srcdir/0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1b"; fi;;
+ 1) $echo "Test 1b failed: files 1b.O and $srcdir/0F differ" 1>&2
+ (diff -c 1b.O $srcdir/0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1b may have failed." 1>&2
+ $echo The command "cmp 1b.O $srcdir/0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1b.E || rm -f 1b.E
+$xx --date-format="-- Date/Time --" -h x +3 $srcdir/0Ft > 1c.O 2> 1c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1c failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1c.O $srcdir/3-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1c"; fi;;
+ 1) $echo "Test 1c failed: files 1c.O and $srcdir/3-0F differ" 1>&2
+ (diff -c 1c.O $srcdir/3-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1c may have failed." 1>&2
+ $echo The command "cmp 1c.O $srcdir/3-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1c.E || rm -f 1c.E
+$xx --date-format="-- Date/Time --" -h x +3 -f $srcdir/0Ft > 1d.O 2> 1d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1d failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1d.O $srcdir/3f-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1d"; fi;;
+ 1) $echo "Test 1d failed: files 1d.O and $srcdir/3f-0F differ" 1>&2
+ (diff -c 1d.O $srcdir/3f-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1d may have failed." 1>&2
+ $echo The command "cmp 1d.O $srcdir/3f-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1d.E || rm -f 1d.E
+$xx --date-format="-- Date/Time --" -h x -a -3 $srcdir/0Ft > 1e.O 2> 1e.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1e failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1e.O $srcdir/a3-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1e"; fi;;
+ 1) $echo "Test 1e failed: files 1e.O and $srcdir/a3-0F differ" 1>&2
+ (diff -c 1e.O $srcdir/a3-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1e may have failed." 1>&2
+ $echo The command "cmp 1e.O $srcdir/a3-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1e.E || rm -f 1e.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=3 $srcdir/0Ft > 1e.C.O 2> 1e.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1e.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1e.C.O $srcdir/a3-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1e.C"; fi;;
+ 1) $echo "Test 1e.C failed: files 1e.C.O and $srcdir/a3-0F differ" 1>&2
+ (diff -c 1e.C.O $srcdir/a3-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1e.C may have failed." 1>&2
+ $echo The command "cmp 1e.C.O $srcdir/a3-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1e.C.E || rm -f 1e.C.E
+$xx --date-format="-- Date/Time --" -h x -a -3 -f $srcdir/0Ft > 1f.O 2> 1f.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1f failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1f.O $srcdir/a3f-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1f"; fi;;
+ 1) $echo "Test 1f failed: files 1f.O and $srcdir/a3f-0F differ" 1>&2
+ (diff -c 1f.O $srcdir/a3f-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1f may have failed." 1>&2
+ $echo The command "cmp 1f.O $srcdir/a3f-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1f.E || rm -f 1f.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=3 -f $srcdir/0Ft > 1f.C.O 2> 1f.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1f.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1f.C.O $srcdir/a3f-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1f.C"; fi;;
+ 1) $echo "Test 1f.C failed: files 1f.C.O and $srcdir/a3f-0F differ" 1>&2
+ (diff -c 1f.C.O $srcdir/a3f-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1f.C may have failed." 1>&2
+ $echo The command "cmp 1f.C.O $srcdir/a3f-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1f.C.E || rm -f 1f.C.E
+$xx --date-format="-- Date/Time --" -h x -a -3 -f $srcdir/0Fnt > 1g.O 2> 1g.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1g failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1g.O $srcdir/a3f-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1g"; fi;;
+ 1) $echo "Test 1g failed: files 1g.O and $srcdir/a3f-0F differ" 1>&2
+ (diff -c 1g.O $srcdir/a3f-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1g may have failed." 1>&2
+ $echo The command "cmp 1g.O $srcdir/a3f-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1g.E || rm -f 1g.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=3 -f $srcdir/0Fnt > 1g.C.O 2> 1g.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1g.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1g.C.O $srcdir/a3f-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1g.C"; fi;;
+ 1) $echo "Test 1g.C failed: files 1g.C.O and $srcdir/a3f-0F differ" 1>&2
+ (diff -c 1g.C.O $srcdir/a3f-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1g.C may have failed." 1>&2
+ $echo The command "cmp 1g.C.O $srcdir/a3f-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1g.C.E || rm -f 1g.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -a -3 -f $srcdir/0Ft > 1h.O 2> 1h.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1h failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1h.O $srcdir/3a3f-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1h"; fi;;
+ 1) $echo "Test 1h failed: files 1h.O and $srcdir/3a3f-0F differ" 1>&2
+ (diff -c 1h.O $srcdir/3a3f-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1h may have failed." 1>&2
+ $echo The command "cmp 1h.O $srcdir/3a3f-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1h.E || rm -f 1h.E
+$xx --date-format="-- Date/Time --" -h x +3 -a --columns=3 -f $srcdir/0Ft > 1h.C.O 2> 1h.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1h.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1h.C.O $srcdir/3a3f-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1h.C"; fi;;
+ 1) $echo "Test 1h.C failed: files 1h.C.O and $srcdir/3a3f-0F differ" 1>&2
+ (diff -c 1h.C.O $srcdir/3a3f-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1h.C may have failed." 1>&2
+ $echo The command "cmp 1h.C.O $srcdir/3a3f-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1h.C.E || rm -f 1h.C.E
+$xx --date-format="-- Date/Time --" -h x -b -3 $srcdir/0Ft > 1i.O 2> 1i.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1i failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1i.O $srcdir/b3-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1i"; fi;;
+ 1) $echo "Test 1i failed: files 1i.O and $srcdir/b3-0F differ" 1>&2
+ (diff -c 1i.O $srcdir/b3-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1i may have failed." 1>&2
+ $echo The command "cmp 1i.O $srcdir/b3-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1i.E || rm -f 1i.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=3 $srcdir/0Ft > 1i.C.O 2> 1i.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1i.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1i.C.O $srcdir/b3-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1i.C"; fi;;
+ 1) $echo "Test 1i.C failed: files 1i.C.O and $srcdir/b3-0F differ" 1>&2
+ (diff -c 1i.C.O $srcdir/b3-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1i.C may have failed." 1>&2
+ $echo The command "cmp 1i.C.O $srcdir/b3-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1i.C.E || rm -f 1i.C.E
+$xx --date-format="-- Date/Time --" -h x -b -3 -f $srcdir/0Ft > 1j.O 2> 1j.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1j failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1j.O $srcdir/b3f-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1j"; fi;;
+ 1) $echo "Test 1j failed: files 1j.O and $srcdir/b3f-0F differ" 1>&2
+ (diff -c 1j.O $srcdir/b3f-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1j may have failed." 1>&2
+ $echo The command "cmp 1j.O $srcdir/b3f-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1j.E || rm -f 1j.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=3 -f $srcdir/0Ft > 1j.C.O 2> 1j.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1j.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1j.C.O $srcdir/b3f-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1j.C"; fi;;
+ 1) $echo "Test 1j.C failed: files 1j.C.O and $srcdir/b3f-0F differ" 1>&2
+ (diff -c 1j.C.O $srcdir/b3f-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1j.C may have failed." 1>&2
+ $echo The command "cmp 1j.C.O $srcdir/b3f-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1j.C.E || rm -f 1j.C.E
+$xx --date-format="-- Date/Time --" -h x -b -3 -f $srcdir/0Fnt > 1k.O 2> 1k.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1k failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1k.O $srcdir/b3f-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1k"; fi;;
+ 1) $echo "Test 1k failed: files 1k.O and $srcdir/b3f-0F differ" 1>&2
+ (diff -c 1k.O $srcdir/b3f-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1k may have failed." 1>&2
+ $echo The command "cmp 1k.O $srcdir/b3f-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1k.E || rm -f 1k.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=3 -f $srcdir/0Fnt > 1k.C.O 2> 1k.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1k.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1k.C.O $srcdir/b3f-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1k.C"; fi;;
+ 1) $echo "Test 1k.C failed: files 1k.C.O and $srcdir/b3f-0F differ" 1>&2
+ (diff -c 1k.C.O $srcdir/b3f-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1k.C may have failed." 1>&2
+ $echo The command "cmp 1k.C.O $srcdir/b3f-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1k.C.E || rm -f 1k.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -b -3 -f $srcdir/0Ft > 1l.O 2> 1l.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1l failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1l.O $srcdir/3b3f-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1l"; fi;;
+ 1) $echo "Test 1l failed: files 1l.O and $srcdir/3b3f-0F differ" 1>&2
+ (diff -c 1l.O $srcdir/3b3f-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1l may have failed." 1>&2
+ $echo The command "cmp 1l.O $srcdir/3b3f-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1l.E || rm -f 1l.E
+$xx --date-format="-- Date/Time --" -h x +3 -b --columns=3 -f $srcdir/0Ft > 1l.C.O 2> 1l.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1l.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1l.C.O $srcdir/3b3f-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1l.C"; fi;;
+ 1) $echo "Test 1l.C failed: files 1l.C.O and $srcdir/3b3f-0F differ" 1>&2
+ (diff -c 1l.C.O $srcdir/3b3f-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1l.C may have failed." 1>&2
+ $echo The command "cmp 1l.C.O $srcdir/3b3f-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1l.C.E || rm -f 1l.C.E
+$xx --date-format="-- Date/Time --" -h x $srcdir/0FFt > 2a.O 2> 2a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2a.O $srcdir/0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2a"; fi;;
+ 1) $echo "Test 2a failed: files 2a.O and $srcdir/0FF differ" 1>&2
+ (diff -c 2a.O $srcdir/0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2a may have failed." 1>&2
+ $echo The command "cmp 2a.O $srcdir/0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2a.E || rm -f 2a.E
+$xx --date-format="-- Date/Time --" -h x $srcdir/0FnFnt > 2b.O 2> 2b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2b.O $srcdir/0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2b"; fi;;
+ 1) $echo "Test 2b failed: files 2b.O and $srcdir/0FF differ" 1>&2
+ (diff -c 2b.O $srcdir/0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2b may have failed." 1>&2
+ $echo The command "cmp 2b.O $srcdir/0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2b.E || rm -f 2b.E
+$xx --date-format="-- Date/Time --" -h x -a -3 -f $srcdir/0FFt > 2c.O 2> 2c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2c failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2c.O $srcdir/a3f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2c"; fi;;
+ 1) $echo "Test 2c failed: files 2c.O and $srcdir/a3f-0FF differ" 1>&2
+ (diff -c 2c.O $srcdir/a3f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2c may have failed." 1>&2
+ $echo The command "cmp 2c.O $srcdir/a3f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2c.E || rm -f 2c.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=3 -f $srcdir/0FFt > 2c.C.O 2> 2c.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2c.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2c.C.O $srcdir/a3f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2c.C"; fi;;
+ 1) $echo "Test 2c.C failed: files 2c.C.O and $srcdir/a3f-0FF differ" 1>&2
+ (diff -c 2c.C.O $srcdir/a3f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2c.C may have failed." 1>&2
+ $echo The command "cmp 2c.C.O $srcdir/a3f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2c.C.E || rm -f 2c.C.E
+$xx --date-format="-- Date/Time --" -h x -a -3 -f $srcdir/0FFnt > 2d.O 2> 2d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2d failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2d.O $srcdir/a3f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2d"; fi;;
+ 1) $echo "Test 2d failed: files 2d.O and $srcdir/a3f-0FF differ" 1>&2
+ (diff -c 2d.O $srcdir/a3f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2d may have failed." 1>&2
+ $echo The command "cmp 2d.O $srcdir/a3f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2d.E || rm -f 2d.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=3 -f $srcdir/0FFnt > 2d.C.O 2> 2d.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2d.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2d.C.O $srcdir/a3f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2d.C"; fi;;
+ 1) $echo "Test 2d.C failed: files 2d.C.O and $srcdir/a3f-0FF differ" 1>&2
+ (diff -c 2d.C.O $srcdir/a3f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2d.C may have failed." 1>&2
+ $echo The command "cmp 2d.C.O $srcdir/a3f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2d.C.E || rm -f 2d.C.E
+$xx --date-format="-- Date/Time --" -h x -b -3 -f $srcdir/0FFt > 2e.O 2> 2e.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2e failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2e.O $srcdir/b3f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2e"; fi;;
+ 1) $echo "Test 2e failed: files 2e.O and $srcdir/b3f-0FF differ" 1>&2
+ (diff -c 2e.O $srcdir/b3f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2e may have failed." 1>&2
+ $echo The command "cmp 2e.O $srcdir/b3f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2e.E || rm -f 2e.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=3 -f $srcdir/0FFt > 2e.C.O 2> 2e.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2e.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2e.C.O $srcdir/b3f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2e.C"; fi;;
+ 1) $echo "Test 2e.C failed: files 2e.C.O and $srcdir/b3f-0FF differ" 1>&2
+ (diff -c 2e.C.O $srcdir/b3f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2e.C may have failed." 1>&2
+ $echo The command "cmp 2e.C.O $srcdir/b3f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2e.C.E || rm -f 2e.C.E
+$xx --date-format="-- Date/Time --" -h x -b -3 -f $srcdir/0FFnt > 2f.O 2> 2f.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2f failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2f.O $srcdir/b3f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2f"; fi;;
+ 1) $echo "Test 2f failed: files 2f.O and $srcdir/b3f-0FF differ" 1>&2
+ (diff -c 2f.O $srcdir/b3f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2f may have failed." 1>&2
+ $echo The command "cmp 2f.O $srcdir/b3f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2f.E || rm -f 2f.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=3 -f $srcdir/0FFnt > 2f.C.O 2> 2f.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2f.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2f.C.O $srcdir/b3f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2f.C"; fi;;
+ 1) $echo "Test 2f.C failed: files 2f.C.O and $srcdir/b3f-0FF differ" 1>&2
+ (diff -c 2f.C.O $srcdir/b3f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2f.C may have failed." 1>&2
+ $echo The command "cmp 2f.C.O $srcdir/b3f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2f.C.E || rm -f 2f.C.E
+$xx --date-format="-- Date/Time --" -h x -b -3 -f $srcdir/0FnFt > 2g.O 2> 2g.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2g failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2g.O $srcdir/b3f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2g"; fi;;
+ 1) $echo "Test 2g failed: files 2g.O and $srcdir/b3f-0FF differ" 1>&2
+ (diff -c 2g.O $srcdir/b3f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2g may have failed." 1>&2
+ $echo The command "cmp 2g.O $srcdir/b3f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2g.E || rm -f 2g.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=3 -f $srcdir/0FnFt > 2g.C.O 2> 2g.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2g.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2g.C.O $srcdir/b3f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2g.C"; fi;;
+ 1) $echo "Test 2g.C failed: files 2g.C.O and $srcdir/b3f-0FF differ" 1>&2
+ (diff -c 2g.C.O $srcdir/b3f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2g.C may have failed." 1>&2
+ $echo The command "cmp 2g.C.O $srcdir/b3f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2g.C.E || rm -f 2g.C.E
+$xx --date-format="-- Date/Time --" -h x -b -3 -f $srcdir/0FnFnt > 2h.O 2> 2h.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2h failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2h.O $srcdir/b3f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2h"; fi;;
+ 1) $echo "Test 2h failed: files 2h.O and $srcdir/b3f-0FF differ" 1>&2
+ (diff -c 2h.O $srcdir/b3f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2h may have failed." 1>&2
+ $echo The command "cmp 2h.O $srcdir/b3f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2h.E || rm -f 2h.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=3 -f $srcdir/0FnFnt > 2h.C.O 2> 2h.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2h.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2h.C.O $srcdir/b3f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2h.C"; fi;;
+ 1) $echo "Test 2h.C failed: files 2h.C.O and $srcdir/b3f-0FF differ" 1>&2
+ (diff -c 2h.C.O $srcdir/b3f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2h.C may have failed." 1>&2
+ $echo The command "cmp 2h.C.O $srcdir/b3f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2h.C.E || rm -f 2h.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -b -3 -f $srcdir/0FFt > 2i.O 2> 2i.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2i failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2i.O $srcdir/3b3f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2i"; fi;;
+ 1) $echo "Test 2i failed: files 2i.O and $srcdir/3b3f-0FF differ" 1>&2
+ (diff -c 2i.O $srcdir/3b3f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2i may have failed." 1>&2
+ $echo The command "cmp 2i.O $srcdir/3b3f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2i.E || rm -f 2i.E
+$xx --date-format="-- Date/Time --" -h x +3 -b --columns=3 -f $srcdir/0FFt > 2i.C.O 2> 2i.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2i.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2i.C.O $srcdir/3b3f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2i.C"; fi;;
+ 1) $echo "Test 2i.C failed: files 2i.C.O and $srcdir/3b3f-0FF differ" 1>&2
+ (diff -c 2i.C.O $srcdir/3b3f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2i.C may have failed." 1>&2
+ $echo The command "cmp 2i.C.O $srcdir/3b3f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2i.C.E || rm -f 2i.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -b -3 -f $srcdir/0FFnt > 2j.O 2> 2j.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2j failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2j.O $srcdir/3b3f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2j"; fi;;
+ 1) $echo "Test 2j failed: files 2j.O and $srcdir/3b3f-0FF differ" 1>&2
+ (diff -c 2j.O $srcdir/3b3f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2j may have failed." 1>&2
+ $echo The command "cmp 2j.O $srcdir/3b3f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2j.E || rm -f 2j.E
+$xx --date-format="-- Date/Time --" -h x +3 -b --columns=3 -f $srcdir/0FFnt > 2j.C.O 2> 2j.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2j.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2j.C.O $srcdir/3b3f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2j.C"; fi;;
+ 1) $echo "Test 2j.C failed: files 2j.C.O and $srcdir/3b3f-0FF differ" 1>&2
+ (diff -c 2j.C.O $srcdir/3b3f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2j.C may have failed." 1>&2
+ $echo The command "cmp 2j.C.O $srcdir/3b3f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2j.C.E || rm -f 2j.C.E
+$xx --date-format="-- Date/Time --" -h x $srcdir/FFn > 3a.O 2> 3a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3a.O $srcdir/FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3a"; fi;;
+ 1) $echo "Test 3a failed: files 3a.O and $srcdir/FF differ" 1>&2
+ (diff -c 3a.O $srcdir/FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3a may have failed." 1>&2
+ $echo The command "cmp 3a.O $srcdir/FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3a.E || rm -f 3a.E
+$xx --date-format="-- Date/Time --" -h x $srcdir/FnFn > 3b.O 2> 3b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3b.O $srcdir/FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3b"; fi;;
+ 1) $echo "Test 3b failed: files 3b.O and $srcdir/FF differ" 1>&2
+ (diff -c 3b.O $srcdir/FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3b may have failed." 1>&2
+ $echo The command "cmp 3b.O $srcdir/FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3b.E || rm -f 3b.E
+$xx --date-format="-- Date/Time --" -h x +3 $srcdir/FFn > 3c.O 2> 3c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3c failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3c.O $srcdir/3-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3c"; fi;;
+ 1) $echo "Test 3c failed: files 3c.O and $srcdir/3-FF differ" 1>&2
+ (diff -c 3c.O $srcdir/3-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3c may have failed." 1>&2
+ $echo The command "cmp 3c.O $srcdir/3-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3c.E || rm -f 3c.E
+$xx --date-format="-- Date/Time --" -h x +3 -f $srcdir/FFn > 3d.O 2> 3d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3d failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3d.O $srcdir/3f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3d"; fi;;
+ 1) $echo "Test 3d failed: files 3d.O and $srcdir/3f-FF differ" 1>&2
+ (diff -c 3d.O $srcdir/3f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3d may have failed." 1>&2
+ $echo The command "cmp 3d.O $srcdir/3f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3d.E || rm -f 3d.E
+$xx --date-format="-- Date/Time --" -h x -a -3 -f $srcdir/FFn > 3e.O 2> 3e.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3e failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3e.O $srcdir/a3f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3e"; fi;;
+ 1) $echo "Test 3e failed: files 3e.O and $srcdir/a3f-FF differ" 1>&2
+ (diff -c 3e.O $srcdir/a3f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3e may have failed." 1>&2
+ $echo The command "cmp 3e.O $srcdir/a3f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3e.E || rm -f 3e.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=3 -f $srcdir/FFn > 3e.C.O 2> 3e.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3e.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3e.C.O $srcdir/a3f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3e.C"; fi;;
+ 1) $echo "Test 3e.C failed: files 3e.C.O and $srcdir/a3f-FF differ" 1>&2
+ (diff -c 3e.C.O $srcdir/a3f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3e.C may have failed." 1>&2
+ $echo The command "cmp 3e.C.O $srcdir/a3f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3e.C.E || rm -f 3e.C.E
+$xx --date-format="-- Date/Time --" -h x -a -3 -f $srcdir/FFtn > 3f.O 2> 3f.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3f failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3f.O $srcdir/a3f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3f"; fi;;
+ 1) $echo "Test 3f failed: files 3f.O and $srcdir/a3f-FF differ" 1>&2
+ (diff -c 3f.O $srcdir/a3f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3f may have failed." 1>&2
+ $echo The command "cmp 3f.O $srcdir/a3f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3f.E || rm -f 3f.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=3 -f $srcdir/FFtn > 3f.C.O 2> 3f.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3f.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3f.C.O $srcdir/a3f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3f.C"; fi;;
+ 1) $echo "Test 3f.C failed: files 3f.C.O and $srcdir/a3f-FF differ" 1>&2
+ (diff -c 3f.C.O $srcdir/a3f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3f.C may have failed." 1>&2
+ $echo The command "cmp 3f.C.O $srcdir/a3f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3f.C.E || rm -f 3f.C.E
+$xx --date-format="-- Date/Time --" -h x -b -3 -f $srcdir/FFn > 3g.O 2> 3g.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3g failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3g.O $srcdir/b3f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3g"; fi;;
+ 1) $echo "Test 3g failed: files 3g.O and $srcdir/b3f-FF differ" 1>&2
+ (diff -c 3g.O $srcdir/b3f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3g may have failed." 1>&2
+ $echo The command "cmp 3g.O $srcdir/b3f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3g.E || rm -f 3g.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=3 -f $srcdir/FFn > 3g.C.O 2> 3g.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3g.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3g.C.O $srcdir/b3f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3g.C"; fi;;
+ 1) $echo "Test 3g.C failed: files 3g.C.O and $srcdir/b3f-FF differ" 1>&2
+ (diff -c 3g.C.O $srcdir/b3f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3g.C may have failed." 1>&2
+ $echo The command "cmp 3g.C.O $srcdir/b3f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3g.C.E || rm -f 3g.C.E
+$xx --date-format="-- Date/Time --" -h x -b -3 -f $srcdir/FFtn > 3h.O 2> 3h.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3h failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3h.O $srcdir/b3f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3h"; fi;;
+ 1) $echo "Test 3h failed: files 3h.O and $srcdir/b3f-FF differ" 1>&2
+ (diff -c 3h.O $srcdir/b3f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3h may have failed." 1>&2
+ $echo The command "cmp 3h.O $srcdir/b3f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3h.E || rm -f 3h.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=3 -f $srcdir/FFtn > 3h.C.O 2> 3h.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3h.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3h.C.O $srcdir/b3f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3h.C"; fi;;
+ 1) $echo "Test 3h.C failed: files 3h.C.O and $srcdir/b3f-FF differ" 1>&2
+ (diff -c 3h.C.O $srcdir/b3f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3h.C may have failed." 1>&2
+ $echo The command "cmp 3h.C.O $srcdir/b3f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3h.C.E || rm -f 3h.C.E
+$xx --date-format="-- Date/Time --" -h x -b -3 -f $srcdir/FnFn > 3i.O 2> 3i.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3i failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3i.O $srcdir/b3f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3i"; fi;;
+ 1) $echo "Test 3i failed: files 3i.O and $srcdir/b3f-FF differ" 1>&2
+ (diff -c 3i.O $srcdir/b3f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3i may have failed." 1>&2
+ $echo The command "cmp 3i.O $srcdir/b3f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3i.E || rm -f 3i.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=3 -f $srcdir/FnFn > 3i.C.O 2> 3i.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3i.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3i.C.O $srcdir/b3f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3i.C"; fi;;
+ 1) $echo "Test 3i.C failed: files 3i.C.O and $srcdir/b3f-FF differ" 1>&2
+ (diff -c 3i.C.O $srcdir/b3f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3i.C may have failed." 1>&2
+ $echo The command "cmp 3i.C.O $srcdir/b3f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3i.C.E || rm -f 3i.C.E
+$xx --date-format="-- Date/Time --" -h x -b -3 -f $srcdir/tFFn > 3j.O 2> 3j.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3j failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3j.O $srcdir/b3f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3j"; fi;;
+ 1) $echo "Test 3j failed: files 3j.O and $srcdir/b3f-FF differ" 1>&2
+ (diff -c 3j.O $srcdir/b3f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3j may have failed." 1>&2
+ $echo The command "cmp 3j.O $srcdir/b3f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3j.E || rm -f 3j.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=3 -f $srcdir/tFFn > 3j.C.O 2> 3j.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3j.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3j.C.O $srcdir/b3f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3j.C"; fi;;
+ 1) $echo "Test 3j.C failed: files 3j.C.O and $srcdir/b3f-FF differ" 1>&2
+ (diff -c 3j.C.O $srcdir/b3f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3j.C may have failed." 1>&2
+ $echo The command "cmp 3j.C.O $srcdir/b3f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3j.C.E || rm -f 3j.C.E
+$xx --date-format="-- Date/Time --" -h x -b -3 -f $srcdir/tFnFt > 3k.O 2> 3k.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3k failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3k.O $srcdir/b3f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3k"; fi;;
+ 1) $echo "Test 3k failed: files 3k.O and $srcdir/b3f-FF differ" 1>&2
+ (diff -c 3k.O $srcdir/b3f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3k may have failed." 1>&2
+ $echo The command "cmp 3k.O $srcdir/b3f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3k.E || rm -f 3k.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=3 -f $srcdir/tFnFt > 3k.C.O 2> 3k.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3k.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3k.C.O $srcdir/b3f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3k.C"; fi;;
+ 1) $echo "Test 3k.C failed: files 3k.C.O and $srcdir/b3f-FF differ" 1>&2
+ (diff -c 3k.C.O $srcdir/b3f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3k.C may have failed." 1>&2
+ $echo The command "cmp 3k.C.O $srcdir/b3f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3k.C.E || rm -f 3k.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -b -3 -f $srcdir/FFn > 3l.O 2> 3l.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3l failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3l.O $srcdir/3b3f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3l"; fi;;
+ 1) $echo "Test 3l failed: files 3l.O and $srcdir/3b3f-FF differ" 1>&2
+ (diff -c 3l.O $srcdir/3b3f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3l may have failed." 1>&2
+ $echo The command "cmp 3l.O $srcdir/3b3f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3l.E || rm -f 3l.E
+$xx --date-format="-- Date/Time --" -h x +3 -b --columns=3 -f $srcdir/FFn > 3l.C.O 2> 3l.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3l.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3l.C.O $srcdir/3b3f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3l.C"; fi;;
+ 1) $echo "Test 3l.C failed: files 3l.C.O and $srcdir/3b3f-FF differ" 1>&2
+ (diff -c 3l.C.O $srcdir/3b3f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3l.C may have failed." 1>&2
+ $echo The command "cmp 3l.C.O $srcdir/3b3f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3l.C.E || rm -f 3l.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -b -3 -f $srcdir/FFtn > 3m.O 2> 3m.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3m failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3m.O $srcdir/3b3f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3m"; fi;;
+ 1) $echo "Test 3m failed: files 3m.O and $srcdir/3b3f-FF differ" 1>&2
+ (diff -c 3m.O $srcdir/3b3f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3m may have failed." 1>&2
+ $echo The command "cmp 3m.O $srcdir/3b3f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3m.E || rm -f 3m.E
+$xx --date-format="-- Date/Time --" -h x +3 -b --columns=3 -f $srcdir/FFtn > 3m.C.O 2> 3m.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3m.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3m.C.O $srcdir/3b3f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3m.C"; fi;;
+ 1) $echo "Test 3m.C failed: files 3m.C.O and $srcdir/3b3f-FF differ" 1>&2
+ (diff -c 3m.C.O $srcdir/3b3f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3m.C may have failed." 1>&2
+ $echo The command "cmp 3m.C.O $srcdir/3b3f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3m.C.E || rm -f 3m.C.E
+$xx --date-format="-- Date/Time --" -h x -l 24 $srcdir/FFn > 3la.O 2> 3la.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3la failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3la.O $srcdir/l24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3la"; fi;;
+ 1) $echo "Test 3la failed: files 3la.O and $srcdir/l24-FF differ" 1>&2
+ (diff -c 3la.O $srcdir/l24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3la may have failed." 1>&2
+ $echo The command "cmp 3la.O $srcdir/l24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3la.E || rm -f 3la.E
+$xx --date-format="-- Date/Time --" -h x -l 24 $srcdir/FFtn > 3lb.O 2> 3lb.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3lb failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3lb.O $srcdir/l24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3lb"; fi;;
+ 1) $echo "Test 3lb failed: files 3lb.O and $srcdir/l24-FF differ" 1>&2
+ (diff -c 3lb.O $srcdir/l24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3lb may have failed." 1>&2
+ $echo The command "cmp 3lb.O $srcdir/l24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3lb.E || rm -f 3lb.E
+$xx --date-format="-- Date/Time --" -h x -l 24 $srcdir/FnFn > 3lc.O 2> 3lc.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3lc failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3lc.O $srcdir/l24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3lc"; fi;;
+ 1) $echo "Test 3lc failed: files 3lc.O and $srcdir/l24-FF differ" 1>&2
+ (diff -c 3lc.O $srcdir/l24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3lc may have failed." 1>&2
+ $echo The command "cmp 3lc.O $srcdir/l24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3lc.E || rm -f 3lc.E
+$xx --date-format="-- Date/Time --" -h x -l 24 $srcdir/tFFn > 3ld.O 2> 3ld.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3ld failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3ld.O $srcdir/l24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3ld"; fi;;
+ 1) $echo "Test 3ld failed: files 3ld.O and $srcdir/l24-FF differ" 1>&2
+ (diff -c 3ld.O $srcdir/l24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3ld may have failed." 1>&2
+ $echo The command "cmp 3ld.O $srcdir/l24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3ld.E || rm -f 3ld.E
+$xx --date-format="-- Date/Time --" -h x -l 24 $srcdir/tFnFt > 3le.O 2> 3le.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3le failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3le.O $srcdir/l24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3le"; fi;;
+ 1) $echo "Test 3le failed: files 3le.O and $srcdir/l24-FF differ" 1>&2
+ (diff -c 3le.O $srcdir/l24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3le may have failed." 1>&2
+ $echo The command "cmp 3le.O $srcdir/l24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3le.E || rm -f 3le.E
+$xx --date-format="-- Date/Time --" -h x -l 24 $srcdir/tFFt > 3lf.O 2> 3lf.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3lf failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3lf.O $srcdir/l24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3lf"; fi;;
+ 1) $echo "Test 3lf failed: files 3lf.O and $srcdir/l24-FF differ" 1>&2
+ (diff -c 3lf.O $srcdir/l24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3lf may have failed." 1>&2
+ $echo The command "cmp 3lf.O $srcdir/l24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3lf.E || rm -f 3lf.E
+$xx --date-format="-- Date/Time --" -h x -a -2 -l 17 $srcdir/FFn > 3aa.O 2> 3aa.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3aa failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3aa.O $srcdir/a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3aa"; fi;;
+ 1) $echo "Test 3aa failed: files 3aa.O and $srcdir/a2l17-FF differ" 1>&2
+ (diff -c 3aa.O $srcdir/a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3aa may have failed." 1>&2
+ $echo The command "cmp 3aa.O $srcdir/a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3aa.E || rm -f 3aa.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=2 -l 17 $srcdir/FFn > 3aa.C.O 2> 3aa.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3aa.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3aa.C.O $srcdir/a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3aa.C"; fi;;
+ 1) $echo "Test 3aa.C failed: files 3aa.C.O and $srcdir/a2l17-FF differ" 1>&2
+ (diff -c 3aa.C.O $srcdir/a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3aa.C may have failed." 1>&2
+ $echo The command "cmp 3aa.C.O $srcdir/a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3aa.C.E || rm -f 3aa.C.E
+$xx --date-format="-- Date/Time --" -h x -a -2 -l 17 $srcdir/FFtn > 3ab.O 2> 3ab.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3ab failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3ab.O $srcdir/a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3ab"; fi;;
+ 1) $echo "Test 3ab failed: files 3ab.O and $srcdir/a2l17-FF differ" 1>&2
+ (diff -c 3ab.O $srcdir/a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3ab may have failed." 1>&2
+ $echo The command "cmp 3ab.O $srcdir/a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3ab.E || rm -f 3ab.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=2 -l 17 $srcdir/FFtn > 3ab.C.O 2> 3ab.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3ab.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3ab.C.O $srcdir/a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3ab.C"; fi;;
+ 1) $echo "Test 3ab.C failed: files 3ab.C.O and $srcdir/a2l17-FF differ" 1>&2
+ (diff -c 3ab.C.O $srcdir/a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3ab.C may have failed." 1>&2
+ $echo The command "cmp 3ab.C.O $srcdir/a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3ab.C.E || rm -f 3ab.C.E
+$xx --date-format="-- Date/Time --" -h x -a -2 -l 17 $srcdir/FnFn > 3ac.O 2> 3ac.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3ac failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3ac.O $srcdir/a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3ac"; fi;;
+ 1) $echo "Test 3ac failed: files 3ac.O and $srcdir/a2l17-FF differ" 1>&2
+ (diff -c 3ac.O $srcdir/a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3ac may have failed." 1>&2
+ $echo The command "cmp 3ac.O $srcdir/a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3ac.E || rm -f 3ac.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=2 -l 17 $srcdir/FnFn > 3ac.C.O 2> 3ac.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3ac.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3ac.C.O $srcdir/a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3ac.C"; fi;;
+ 1) $echo "Test 3ac.C failed: files 3ac.C.O and $srcdir/a2l17-FF differ" 1>&2
+ (diff -c 3ac.C.O $srcdir/a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3ac.C may have failed." 1>&2
+ $echo The command "cmp 3ac.C.O $srcdir/a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3ac.C.E || rm -f 3ac.C.E
+$xx --date-format="-- Date/Time --" -h x -a -2 -l 17 $srcdir/tFFn > 3ad.O 2> 3ad.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3ad failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3ad.O $srcdir/a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3ad"; fi;;
+ 1) $echo "Test 3ad failed: files 3ad.O and $srcdir/a2l17-FF differ" 1>&2
+ (diff -c 3ad.O $srcdir/a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3ad may have failed." 1>&2
+ $echo The command "cmp 3ad.O $srcdir/a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3ad.E || rm -f 3ad.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=2 -l 17 $srcdir/tFFn > 3ad.C.O 2> 3ad.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3ad.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3ad.C.O $srcdir/a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3ad.C"; fi;;
+ 1) $echo "Test 3ad.C failed: files 3ad.C.O and $srcdir/a2l17-FF differ" 1>&2
+ (diff -c 3ad.C.O $srcdir/a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3ad.C may have failed." 1>&2
+ $echo The command "cmp 3ad.C.O $srcdir/a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3ad.C.E || rm -f 3ad.C.E
+$xx --date-format="-- Date/Time --" -h x -a -2 -l 17 $srcdir/tFnFt > 3ae.O 2> 3ae.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3ae failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3ae.O $srcdir/a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3ae"; fi;;
+ 1) $echo "Test 3ae failed: files 3ae.O and $srcdir/a2l17-FF differ" 1>&2
+ (diff -c 3ae.O $srcdir/a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3ae may have failed." 1>&2
+ $echo The command "cmp 3ae.O $srcdir/a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3ae.E || rm -f 3ae.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=2 -l 17 $srcdir/tFnFt > 3ae.C.O 2> 3ae.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3ae.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3ae.C.O $srcdir/a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3ae.C"; fi;;
+ 1) $echo "Test 3ae.C failed: files 3ae.C.O and $srcdir/a2l17-FF differ" 1>&2
+ (diff -c 3ae.C.O $srcdir/a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3ae.C may have failed." 1>&2
+ $echo The command "cmp 3ae.C.O $srcdir/a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3ae.C.E || rm -f 3ae.C.E
+$xx --date-format="-- Date/Time --" -h x -a -2 -l 17 $srcdir/tFFt > 3af.O 2> 3af.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3af failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3af.O $srcdir/a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3af"; fi;;
+ 1) $echo "Test 3af failed: files 3af.O and $srcdir/a2l17-FF differ" 1>&2
+ (diff -c 3af.O $srcdir/a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3af may have failed." 1>&2
+ $echo The command "cmp 3af.O $srcdir/a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3af.E || rm -f 3af.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=2 -l 17 $srcdir/tFFt > 3af.C.O 2> 3af.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3af.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3af.C.O $srcdir/a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3af.C"; fi;;
+ 1) $echo "Test 3af.C failed: files 3af.C.O and $srcdir/a2l17-FF differ" 1>&2
+ (diff -c 3af.C.O $srcdir/a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3af.C may have failed." 1>&2
+ $echo The command "cmp 3af.C.O $srcdir/a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3af.C.E || rm -f 3af.C.E
+$xx --date-format="-- Date/Time --" -h x -a -2 -l 15 $srcdir/FFn > 3ag.O 2> 3ag.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3ag failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3ag.O $srcdir/a2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3ag"; fi;;
+ 1) $echo "Test 3ag failed: files 3ag.O and $srcdir/a2l15-FF differ" 1>&2
+ (diff -c 3ag.O $srcdir/a2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3ag may have failed." 1>&2
+ $echo The command "cmp 3ag.O $srcdir/a2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3ag.E || rm -f 3ag.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=2 -l 15 $srcdir/FFn > 3ag.C.O 2> 3ag.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3ag.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3ag.C.O $srcdir/a2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3ag.C"; fi;;
+ 1) $echo "Test 3ag.C failed: files 3ag.C.O and $srcdir/a2l15-FF differ" 1>&2
+ (diff -c 3ag.C.O $srcdir/a2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3ag.C may have failed." 1>&2
+ $echo The command "cmp 3ag.C.O $srcdir/a2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3ag.C.E || rm -f 3ag.C.E
+$xx --date-format="-- Date/Time --" -h x -a -2 -l 15 $srcdir/FFtn > 3ah.O 2> 3ah.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3ah failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3ah.O $srcdir/a2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3ah"; fi;;
+ 1) $echo "Test 3ah failed: files 3ah.O and $srcdir/a2l15-FF differ" 1>&2
+ (diff -c 3ah.O $srcdir/a2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3ah may have failed." 1>&2
+ $echo The command "cmp 3ah.O $srcdir/a2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3ah.E || rm -f 3ah.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=2 -l 15 $srcdir/FFtn > 3ah.C.O 2> 3ah.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3ah.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3ah.C.O $srcdir/a2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3ah.C"; fi;;
+ 1) $echo "Test 3ah.C failed: files 3ah.C.O and $srcdir/a2l15-FF differ" 1>&2
+ (diff -c 3ah.C.O $srcdir/a2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3ah.C may have failed." 1>&2
+ $echo The command "cmp 3ah.C.O $srcdir/a2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3ah.C.E || rm -f 3ah.C.E
+$xx --date-format="-- Date/Time --" -h x -a -2 -l 15 $srcdir/FnFn > 3ai.O 2> 3ai.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3ai failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3ai.O $srcdir/a2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3ai"; fi;;
+ 1) $echo "Test 3ai failed: files 3ai.O and $srcdir/a2l15-FF differ" 1>&2
+ (diff -c 3ai.O $srcdir/a2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3ai may have failed." 1>&2
+ $echo The command "cmp 3ai.O $srcdir/a2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3ai.E || rm -f 3ai.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=2 -l 15 $srcdir/FnFn > 3ai.C.O 2> 3ai.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3ai.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3ai.C.O $srcdir/a2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3ai.C"; fi;;
+ 1) $echo "Test 3ai.C failed: files 3ai.C.O and $srcdir/a2l15-FF differ" 1>&2
+ (diff -c 3ai.C.O $srcdir/a2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3ai.C may have failed." 1>&2
+ $echo The command "cmp 3ai.C.O $srcdir/a2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3ai.C.E || rm -f 3ai.C.E
+$xx --date-format="-- Date/Time --" -h x -a -2 -l 15 $srcdir/tFFn > 3aj.O 2> 3aj.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3aj failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3aj.O $srcdir/a2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3aj"; fi;;
+ 1) $echo "Test 3aj failed: files 3aj.O and $srcdir/a2l15-FF differ" 1>&2
+ (diff -c 3aj.O $srcdir/a2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3aj may have failed." 1>&2
+ $echo The command "cmp 3aj.O $srcdir/a2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3aj.E || rm -f 3aj.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=2 -l 15 $srcdir/tFFn > 3aj.C.O 2> 3aj.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3aj.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3aj.C.O $srcdir/a2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3aj.C"; fi;;
+ 1) $echo "Test 3aj.C failed: files 3aj.C.O and $srcdir/a2l15-FF differ" 1>&2
+ (diff -c 3aj.C.O $srcdir/a2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3aj.C may have failed." 1>&2
+ $echo The command "cmp 3aj.C.O $srcdir/a2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3aj.C.E || rm -f 3aj.C.E
+$xx --date-format="-- Date/Time --" -h x -a -2 -l 15 $srcdir/tFnFt > 3ak.O 2> 3ak.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3ak failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3ak.O $srcdir/a2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3ak"; fi;;
+ 1) $echo "Test 3ak failed: files 3ak.O and $srcdir/a2l15-FF differ" 1>&2
+ (diff -c 3ak.O $srcdir/a2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3ak may have failed." 1>&2
+ $echo The command "cmp 3ak.O $srcdir/a2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3ak.E || rm -f 3ak.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=2 -l 15 $srcdir/tFnFt > 3ak.C.O 2> 3ak.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3ak.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3ak.C.O $srcdir/a2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3ak.C"; fi;;
+ 1) $echo "Test 3ak.C failed: files 3ak.C.O and $srcdir/a2l15-FF differ" 1>&2
+ (diff -c 3ak.C.O $srcdir/a2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3ak.C may have failed." 1>&2
+ $echo The command "cmp 3ak.C.O $srcdir/a2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3ak.C.E || rm -f 3ak.C.E
+$xx --date-format="-- Date/Time --" -h x -b -2 -l 17 $srcdir/FFn > 3ba.O 2> 3ba.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3ba failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3ba.O $srcdir/b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3ba"; fi;;
+ 1) $echo "Test 3ba failed: files 3ba.O and $srcdir/b2l17-FF differ" 1>&2
+ (diff -c 3ba.O $srcdir/b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3ba may have failed." 1>&2
+ $echo The command "cmp 3ba.O $srcdir/b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3ba.E || rm -f 3ba.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=2 -l 17 $srcdir/FFn > 3ba.C.O 2> 3ba.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3ba.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3ba.C.O $srcdir/b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3ba.C"; fi;;
+ 1) $echo "Test 3ba.C failed: files 3ba.C.O and $srcdir/b2l17-FF differ" 1>&2
+ (diff -c 3ba.C.O $srcdir/b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3ba.C may have failed." 1>&2
+ $echo The command "cmp 3ba.C.O $srcdir/b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3ba.C.E || rm -f 3ba.C.E
+$xx --date-format="-- Date/Time --" -h x -b -2 -l 17 $srcdir/FFtn > 3bb.O 2> 3bb.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3bb failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3bb.O $srcdir/b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3bb"; fi;;
+ 1) $echo "Test 3bb failed: files 3bb.O and $srcdir/b2l17-FF differ" 1>&2
+ (diff -c 3bb.O $srcdir/b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3bb may have failed." 1>&2
+ $echo The command "cmp 3bb.O $srcdir/b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3bb.E || rm -f 3bb.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=2 -l 17 $srcdir/FFtn > 3bb.C.O 2> 3bb.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3bb.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3bb.C.O $srcdir/b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3bb.C"; fi;;
+ 1) $echo "Test 3bb.C failed: files 3bb.C.O and $srcdir/b2l17-FF differ" 1>&2
+ (diff -c 3bb.C.O $srcdir/b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3bb.C may have failed." 1>&2
+ $echo The command "cmp 3bb.C.O $srcdir/b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3bb.C.E || rm -f 3bb.C.E
+$xx --date-format="-- Date/Time --" -h x -b -2 -l 17 $srcdir/FnFn > 3bc.O 2> 3bc.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3bc failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3bc.O $srcdir/b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3bc"; fi;;
+ 1) $echo "Test 3bc failed: files 3bc.O and $srcdir/b2l17-FF differ" 1>&2
+ (diff -c 3bc.O $srcdir/b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3bc may have failed." 1>&2
+ $echo The command "cmp 3bc.O $srcdir/b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3bc.E || rm -f 3bc.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=2 -l 17 $srcdir/FnFn > 3bc.C.O 2> 3bc.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3bc.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3bc.C.O $srcdir/b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3bc.C"; fi;;
+ 1) $echo "Test 3bc.C failed: files 3bc.C.O and $srcdir/b2l17-FF differ" 1>&2
+ (diff -c 3bc.C.O $srcdir/b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3bc.C may have failed." 1>&2
+ $echo The command "cmp 3bc.C.O $srcdir/b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3bc.C.E || rm -f 3bc.C.E
+$xx --date-format="-- Date/Time --" -h x -b -2 -l 17 $srcdir/tFFn > 3bd.O 2> 3bd.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3bd failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3bd.O $srcdir/b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3bd"; fi;;
+ 1) $echo "Test 3bd failed: files 3bd.O and $srcdir/b2l17-FF differ" 1>&2
+ (diff -c 3bd.O $srcdir/b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3bd may have failed." 1>&2
+ $echo The command "cmp 3bd.O $srcdir/b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3bd.E || rm -f 3bd.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=2 -l 17 $srcdir/tFFn > 3bd.C.O 2> 3bd.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3bd.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3bd.C.O $srcdir/b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3bd.C"; fi;;
+ 1) $echo "Test 3bd.C failed: files 3bd.C.O and $srcdir/b2l17-FF differ" 1>&2
+ (diff -c 3bd.C.O $srcdir/b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3bd.C may have failed." 1>&2
+ $echo The command "cmp 3bd.C.O $srcdir/b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3bd.C.E || rm -f 3bd.C.E
+$xx --date-format="-- Date/Time --" -h x -b -2 -l 17 $srcdir/tFnFt > 3be.O 2> 3be.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3be failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3be.O $srcdir/b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3be"; fi;;
+ 1) $echo "Test 3be failed: files 3be.O and $srcdir/b2l17-FF differ" 1>&2
+ (diff -c 3be.O $srcdir/b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3be may have failed." 1>&2
+ $echo The command "cmp 3be.O $srcdir/b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3be.E || rm -f 3be.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=2 -l 17 $srcdir/tFnFt > 3be.C.O 2> 3be.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3be.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3be.C.O $srcdir/b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3be.C"; fi;;
+ 1) $echo "Test 3be.C failed: files 3be.C.O and $srcdir/b2l17-FF differ" 1>&2
+ (diff -c 3be.C.O $srcdir/b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3be.C may have failed." 1>&2
+ $echo The command "cmp 3be.C.O $srcdir/b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3be.C.E || rm -f 3be.C.E
+$xx --date-format="-- Date/Time --" -h x -b -2 -l 17 $srcdir/tFFt > 3bf.O 2> 3bf.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3bf failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3bf.O $srcdir/b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3bf"; fi;;
+ 1) $echo "Test 3bf failed: files 3bf.O and $srcdir/b2l17-FF differ" 1>&2
+ (diff -c 3bf.O $srcdir/b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3bf may have failed." 1>&2
+ $echo The command "cmp 3bf.O $srcdir/b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3bf.E || rm -f 3bf.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=2 -l 17 $srcdir/tFFt > 3bf.C.O 2> 3bf.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3bf.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3bf.C.O $srcdir/b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3bf.C"; fi;;
+ 1) $echo "Test 3bf.C failed: files 3bf.C.O and $srcdir/b2l17-FF differ" 1>&2
+ (diff -c 3bf.C.O $srcdir/b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3bf.C may have failed." 1>&2
+ $echo The command "cmp 3bf.C.O $srcdir/b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3bf.C.E || rm -f 3bf.C.E
+$xx --date-format="-- Date/Time --" -h x -b -2 -l 15 $srcdir/FFn > 3bg.O 2> 3bg.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3bg failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3bg.O $srcdir/b2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3bg"; fi;;
+ 1) $echo "Test 3bg failed: files 3bg.O and $srcdir/b2l15-FF differ" 1>&2
+ (diff -c 3bg.O $srcdir/b2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3bg may have failed." 1>&2
+ $echo The command "cmp 3bg.O $srcdir/b2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3bg.E || rm -f 3bg.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=2 -l 15 $srcdir/FFn > 3bg.C.O 2> 3bg.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3bg.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3bg.C.O $srcdir/b2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3bg.C"; fi;;
+ 1) $echo "Test 3bg.C failed: files 3bg.C.O and $srcdir/b2l15-FF differ" 1>&2
+ (diff -c 3bg.C.O $srcdir/b2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3bg.C may have failed." 1>&2
+ $echo The command "cmp 3bg.C.O $srcdir/b2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3bg.C.E || rm -f 3bg.C.E
+$xx --date-format="-- Date/Time --" -h x -b -2 -l 15 $srcdir/FFtn > 3bh.O 2> 3bh.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3bh failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3bh.O $srcdir/b2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3bh"; fi;;
+ 1) $echo "Test 3bh failed: files 3bh.O and $srcdir/b2l15-FF differ" 1>&2
+ (diff -c 3bh.O $srcdir/b2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3bh may have failed." 1>&2
+ $echo The command "cmp 3bh.O $srcdir/b2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3bh.E || rm -f 3bh.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=2 -l 15 $srcdir/FFtn > 3bh.C.O 2> 3bh.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3bh.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3bh.C.O $srcdir/b2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3bh.C"; fi;;
+ 1) $echo "Test 3bh.C failed: files 3bh.C.O and $srcdir/b2l15-FF differ" 1>&2
+ (diff -c 3bh.C.O $srcdir/b2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3bh.C may have failed." 1>&2
+ $echo The command "cmp 3bh.C.O $srcdir/b2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3bh.C.E || rm -f 3bh.C.E
+$xx --date-format="-- Date/Time --" -h x -b -2 -l 15 $srcdir/FnFn > 3bi.O 2> 3bi.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3bi failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3bi.O $srcdir/b2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3bi"; fi;;
+ 1) $echo "Test 3bi failed: files 3bi.O and $srcdir/b2l15-FF differ" 1>&2
+ (diff -c 3bi.O $srcdir/b2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3bi may have failed." 1>&2
+ $echo The command "cmp 3bi.O $srcdir/b2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3bi.E || rm -f 3bi.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=2 -l 15 $srcdir/FnFn > 3bi.C.O 2> 3bi.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3bi.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3bi.C.O $srcdir/b2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3bi.C"; fi;;
+ 1) $echo "Test 3bi.C failed: files 3bi.C.O and $srcdir/b2l15-FF differ" 1>&2
+ (diff -c 3bi.C.O $srcdir/b2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3bi.C may have failed." 1>&2
+ $echo The command "cmp 3bi.C.O $srcdir/b2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3bi.C.E || rm -f 3bi.C.E
+$xx --date-format="-- Date/Time --" -h x -b -2 -l 15 $srcdir/tFFn > 3bj.O 2> 3bj.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3bj failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3bj.O $srcdir/b2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3bj"; fi;;
+ 1) $echo "Test 3bj failed: files 3bj.O and $srcdir/b2l15-FF differ" 1>&2
+ (diff -c 3bj.O $srcdir/b2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3bj may have failed." 1>&2
+ $echo The command "cmp 3bj.O $srcdir/b2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3bj.E || rm -f 3bj.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=2 -l 15 $srcdir/tFFn > 3bj.C.O 2> 3bj.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3bj.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3bj.C.O $srcdir/b2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3bj.C"; fi;;
+ 1) $echo "Test 3bj.C failed: files 3bj.C.O and $srcdir/b2l15-FF differ" 1>&2
+ (diff -c 3bj.C.O $srcdir/b2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3bj.C may have failed." 1>&2
+ $echo The command "cmp 3bj.C.O $srcdir/b2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3bj.C.E || rm -f 3bj.C.E
+$xx --date-format="-- Date/Time --" -h x -b -2 -l 15 $srcdir/tFnFt > 3bk.O 2> 3bk.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3bk failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3bk.O $srcdir/b2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3bk"; fi;;
+ 1) $echo "Test 3bk failed: files 3bk.O and $srcdir/b2l15-FF differ" 1>&2
+ (diff -c 3bk.O $srcdir/b2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3bk may have failed." 1>&2
+ $echo The command "cmp 3bk.O $srcdir/b2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3bk.E || rm -f 3bk.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=2 -l 15 $srcdir/tFnFt > 3bk.C.O 2> 3bk.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3bk.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3bk.C.O $srcdir/b2l15-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3bk.C"; fi;;
+ 1) $echo "Test 3bk.C failed: files 3bk.C.O and $srcdir/b2l15-FF differ" 1>&2
+ (diff -c 3bk.C.O $srcdir/b2l15-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3bk.C may have failed." 1>&2
+ $echo The command "cmp 3bk.C.O $srcdir/b2l15-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3bk.C.E || rm -f 3bk.C.E
+$xx --date-format="-- Date/Time --" -h x +4 -l 24 $srcdir/FFn > 3Pa.O 2> 3Pa.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pa failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pa.O $srcdir/4l24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pa"; fi;;
+ 1) $echo "Test 3Pa failed: files 3Pa.O and $srcdir/4l24-FF differ" 1>&2
+ (diff -c 3Pa.O $srcdir/4l24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pa may have failed." 1>&2
+ $echo The command "cmp 3Pa.O $srcdir/4l24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pa.E || rm -f 3Pa.E
+$xx --date-format="-- Date/Time --" -h x +4 -l 24 $srcdir/FFtn > 3Pb.O 2> 3Pb.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pb failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pb.O $srcdir/4l24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pb"; fi;;
+ 1) $echo "Test 3Pb failed: files 3Pb.O and $srcdir/4l24-FF differ" 1>&2
+ (diff -c 3Pb.O $srcdir/4l24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pb may have failed." 1>&2
+ $echo The command "cmp 3Pb.O $srcdir/4l24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pb.E || rm -f 3Pb.E
+$xx --date-format="-- Date/Time --" -h x +4 -l 24 $srcdir/FnFn > 3Pc.O 2> 3Pc.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pc failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pc.O $srcdir/4l24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pc"; fi;;
+ 1) $echo "Test 3Pc failed: files 3Pc.O and $srcdir/4l24-FF differ" 1>&2
+ (diff -c 3Pc.O $srcdir/4l24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pc may have failed." 1>&2
+ $echo The command "cmp 3Pc.O $srcdir/4l24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pc.E || rm -f 3Pc.E
+$xx --date-format="-- Date/Time --" -h x +4 -l 24 $srcdir/tFFn > 3Pd.O 2> 3Pd.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pd failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pd.O $srcdir/4l24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pd"; fi;;
+ 1) $echo "Test 3Pd failed: files 3Pd.O and $srcdir/4l24-FF differ" 1>&2
+ (diff -c 3Pd.O $srcdir/4l24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pd may have failed." 1>&2
+ $echo The command "cmp 3Pd.O $srcdir/4l24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pd.E || rm -f 3Pd.E
+$xx --date-format="-- Date/Time --" -h x +4 -l 24 $srcdir/tFnFt > 3Pe.O 2> 3Pe.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pe failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pe.O $srcdir/4l24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pe"; fi;;
+ 1) $echo "Test 3Pe failed: files 3Pe.O and $srcdir/4l24-FF differ" 1>&2
+ (diff -c 3Pe.O $srcdir/4l24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pe may have failed." 1>&2
+ $echo The command "cmp 3Pe.O $srcdir/4l24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pe.E || rm -f 3Pe.E
+$xx --date-format="-- Date/Time --" -h x +4 -l 24 $srcdir/tFFt > 3Pf.O 2> 3Pf.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pf failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pf.O $srcdir/4l24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pf"; fi;;
+ 1) $echo "Test 3Pf failed: files 3Pf.O and $srcdir/4l24-FF differ" 1>&2
+ (diff -c 3Pf.O $srcdir/4l24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pf may have failed." 1>&2
+ $echo The command "cmp 3Pf.O $srcdir/4l24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pf.E || rm -f 3Pf.E
+$xx --date-format="-- Date/Time --" -h x +4:7 -l 24 $srcdir/tFFt > 3Pg.O 2> 3Pg.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pg failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pg.O $srcdir/4-7l24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pg"; fi;;
+ 1) $echo "Test 3Pg failed: files 3Pg.O and $srcdir/4-7l24-FF differ" 1>&2
+ (diff -c 3Pg.O $srcdir/4-7l24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pg may have failed." 1>&2
+ $echo The command "cmp 3Pg.O $srcdir/4-7l24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pg.E || rm -f 3Pg.E
+$xx --date-format="-- Date/Time --" -h x +3 -a -2 -l 17 $srcdir/FFn > 3Paa.O 2> 3Paa.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Paa failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Paa.O $srcdir/3a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Paa"; fi;;
+ 1) $echo "Test 3Paa failed: files 3Paa.O and $srcdir/3a2l17-FF differ" 1>&2
+ (diff -c 3Paa.O $srcdir/3a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Paa may have failed." 1>&2
+ $echo The command "cmp 3Paa.O $srcdir/3a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Paa.E || rm -f 3Paa.E
+$xx --date-format="-- Date/Time --" -h x +3 -a --columns=2 -l 17 $srcdir/FFn > 3Paa.C.O 2> 3Paa.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Paa.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Paa.C.O $srcdir/3a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Paa.C"; fi;;
+ 1) $echo "Test 3Paa.C failed: files 3Paa.C.O and $srcdir/3a2l17-FF differ" 1>&2
+ (diff -c 3Paa.C.O $srcdir/3a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Paa.C may have failed." 1>&2
+ $echo The command "cmp 3Paa.C.O $srcdir/3a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Paa.C.E || rm -f 3Paa.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -a -2 -l 17 $srcdir/FFtn > 3Pab.O 2> 3Pab.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pab failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pab.O $srcdir/3a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pab"; fi;;
+ 1) $echo "Test 3Pab failed: files 3Pab.O and $srcdir/3a2l17-FF differ" 1>&2
+ (diff -c 3Pab.O $srcdir/3a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pab may have failed." 1>&2
+ $echo The command "cmp 3Pab.O $srcdir/3a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pab.E || rm -f 3Pab.E
+$xx --date-format="-- Date/Time --" -h x +3 -a --columns=2 -l 17 $srcdir/FFtn > 3Pab.C.O 2> 3Pab.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pab.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pab.C.O $srcdir/3a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pab.C"; fi;;
+ 1) $echo "Test 3Pab.C failed: files 3Pab.C.O and $srcdir/3a2l17-FF differ" 1>&2
+ (diff -c 3Pab.C.O $srcdir/3a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pab.C may have failed." 1>&2
+ $echo The command "cmp 3Pab.C.O $srcdir/3a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pab.C.E || rm -f 3Pab.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -a -2 -l 17 $srcdir/FnFn > 3Pac.O 2> 3Pac.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pac failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pac.O $srcdir/3a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pac"; fi;;
+ 1) $echo "Test 3Pac failed: files 3Pac.O and $srcdir/3a2l17-FF differ" 1>&2
+ (diff -c 3Pac.O $srcdir/3a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pac may have failed." 1>&2
+ $echo The command "cmp 3Pac.O $srcdir/3a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pac.E || rm -f 3Pac.E
+$xx --date-format="-- Date/Time --" -h x +3 -a --columns=2 -l 17 $srcdir/FnFn > 3Pac.C.O 2> 3Pac.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pac.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pac.C.O $srcdir/3a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pac.C"; fi;;
+ 1) $echo "Test 3Pac.C failed: files 3Pac.C.O and $srcdir/3a2l17-FF differ" 1>&2
+ (diff -c 3Pac.C.O $srcdir/3a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pac.C may have failed." 1>&2
+ $echo The command "cmp 3Pac.C.O $srcdir/3a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pac.C.E || rm -f 3Pac.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -a -2 -l 17 $srcdir/tFFn > 3Pad.O 2> 3Pad.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pad failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pad.O $srcdir/3a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pad"; fi;;
+ 1) $echo "Test 3Pad failed: files 3Pad.O and $srcdir/3a2l17-FF differ" 1>&2
+ (diff -c 3Pad.O $srcdir/3a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pad may have failed." 1>&2
+ $echo The command "cmp 3Pad.O $srcdir/3a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pad.E || rm -f 3Pad.E
+$xx --date-format="-- Date/Time --" -h x +3 -a --columns=2 -l 17 $srcdir/tFFn > 3Pad.C.O 2> 3Pad.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pad.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pad.C.O $srcdir/3a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pad.C"; fi;;
+ 1) $echo "Test 3Pad.C failed: files 3Pad.C.O and $srcdir/3a2l17-FF differ" 1>&2
+ (diff -c 3Pad.C.O $srcdir/3a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pad.C may have failed." 1>&2
+ $echo The command "cmp 3Pad.C.O $srcdir/3a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pad.C.E || rm -f 3Pad.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -a -2 -l 17 $srcdir/tFnFt > 3Pae.O 2> 3Pae.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pae failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pae.O $srcdir/3a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pae"; fi;;
+ 1) $echo "Test 3Pae failed: files 3Pae.O and $srcdir/3a2l17-FF differ" 1>&2
+ (diff -c 3Pae.O $srcdir/3a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pae may have failed." 1>&2
+ $echo The command "cmp 3Pae.O $srcdir/3a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pae.E || rm -f 3Pae.E
+$xx --date-format="-- Date/Time --" -h x +3 -a --columns=2 -l 17 $srcdir/tFnFt > 3Pae.C.O 2> 3Pae.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pae.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pae.C.O $srcdir/3a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pae.C"; fi;;
+ 1) $echo "Test 3Pae.C failed: files 3Pae.C.O and $srcdir/3a2l17-FF differ" 1>&2
+ (diff -c 3Pae.C.O $srcdir/3a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pae.C may have failed." 1>&2
+ $echo The command "cmp 3Pae.C.O $srcdir/3a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pae.C.E || rm -f 3Pae.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -a -2 -l 17 $srcdir/tFFt > 3Paf.O 2> 3Paf.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Paf failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Paf.O $srcdir/3a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Paf"; fi;;
+ 1) $echo "Test 3Paf failed: files 3Paf.O and $srcdir/3a2l17-FF differ" 1>&2
+ (diff -c 3Paf.O $srcdir/3a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Paf may have failed." 1>&2
+ $echo The command "cmp 3Paf.O $srcdir/3a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Paf.E || rm -f 3Paf.E
+$xx --date-format="-- Date/Time --" -h x +3 -a --columns=2 -l 17 $srcdir/tFFt > 3Paf.C.O 2> 3Paf.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Paf.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Paf.C.O $srcdir/3a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Paf.C"; fi;;
+ 1) $echo "Test 3Paf.C failed: files 3Paf.C.O and $srcdir/3a2l17-FF differ" 1>&2
+ (diff -c 3Paf.C.O $srcdir/3a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Paf.C may have failed." 1>&2
+ $echo The command "cmp 3Paf.C.O $srcdir/3a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Paf.C.E || rm -f 3Paf.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -b -2 -l 17 $srcdir/FFn > 3Pba.O 2> 3Pba.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pba failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pba.O $srcdir/3b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pba"; fi;;
+ 1) $echo "Test 3Pba failed: files 3Pba.O and $srcdir/3b2l17-FF differ" 1>&2
+ (diff -c 3Pba.O $srcdir/3b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pba may have failed." 1>&2
+ $echo The command "cmp 3Pba.O $srcdir/3b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pba.E || rm -f 3Pba.E
+$xx --date-format="-- Date/Time --" -h x +3 -b --columns=2 -l 17 $srcdir/FFn > 3Pba.C.O 2> 3Pba.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pba.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pba.C.O $srcdir/3b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pba.C"; fi;;
+ 1) $echo "Test 3Pba.C failed: files 3Pba.C.O and $srcdir/3b2l17-FF differ" 1>&2
+ (diff -c 3Pba.C.O $srcdir/3b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pba.C may have failed." 1>&2
+ $echo The command "cmp 3Pba.C.O $srcdir/3b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pba.C.E || rm -f 3Pba.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -b -2 -l 17 $srcdir/FFtn > 3Pbb.O 2> 3Pbb.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pbb failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pbb.O $srcdir/3b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pbb"; fi;;
+ 1) $echo "Test 3Pbb failed: files 3Pbb.O and $srcdir/3b2l17-FF differ" 1>&2
+ (diff -c 3Pbb.O $srcdir/3b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pbb may have failed." 1>&2
+ $echo The command "cmp 3Pbb.O $srcdir/3b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pbb.E || rm -f 3Pbb.E
+$xx --date-format="-- Date/Time --" -h x +3 -b --columns=2 -l 17 $srcdir/FFtn > 3Pbb.C.O 2> 3Pbb.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pbb.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pbb.C.O $srcdir/3b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pbb.C"; fi;;
+ 1) $echo "Test 3Pbb.C failed: files 3Pbb.C.O and $srcdir/3b2l17-FF differ" 1>&2
+ (diff -c 3Pbb.C.O $srcdir/3b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pbb.C may have failed." 1>&2
+ $echo The command "cmp 3Pbb.C.O $srcdir/3b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pbb.C.E || rm -f 3Pbb.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -b -2 -l 17 $srcdir/FnFn > 3Pbc.O 2> 3Pbc.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pbc failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pbc.O $srcdir/3b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pbc"; fi;;
+ 1) $echo "Test 3Pbc failed: files 3Pbc.O and $srcdir/3b2l17-FF differ" 1>&2
+ (diff -c 3Pbc.O $srcdir/3b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pbc may have failed." 1>&2
+ $echo The command "cmp 3Pbc.O $srcdir/3b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pbc.E || rm -f 3Pbc.E
+$xx --date-format="-- Date/Time --" -h x +3 -b --columns=2 -l 17 $srcdir/FnFn > 3Pbc.C.O 2> 3Pbc.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pbc.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pbc.C.O $srcdir/3b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pbc.C"; fi;;
+ 1) $echo "Test 3Pbc.C failed: files 3Pbc.C.O and $srcdir/3b2l17-FF differ" 1>&2
+ (diff -c 3Pbc.C.O $srcdir/3b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pbc.C may have failed." 1>&2
+ $echo The command "cmp 3Pbc.C.O $srcdir/3b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pbc.C.E || rm -f 3Pbc.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -b -2 -l 17 $srcdir/tFFn > 3Pbd.O 2> 3Pbd.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pbd failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pbd.O $srcdir/3b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pbd"; fi;;
+ 1) $echo "Test 3Pbd failed: files 3Pbd.O and $srcdir/3b2l17-FF differ" 1>&2
+ (diff -c 3Pbd.O $srcdir/3b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pbd may have failed." 1>&2
+ $echo The command "cmp 3Pbd.O $srcdir/3b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pbd.E || rm -f 3Pbd.E
+$xx --date-format="-- Date/Time --" -h x +3 -b --columns=2 -l 17 $srcdir/tFFn > 3Pbd.C.O 2> 3Pbd.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pbd.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pbd.C.O $srcdir/3b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pbd.C"; fi;;
+ 1) $echo "Test 3Pbd.C failed: files 3Pbd.C.O and $srcdir/3b2l17-FF differ" 1>&2
+ (diff -c 3Pbd.C.O $srcdir/3b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pbd.C may have failed." 1>&2
+ $echo The command "cmp 3Pbd.C.O $srcdir/3b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pbd.C.E || rm -f 3Pbd.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -b -2 -l 17 $srcdir/tFnFt > 3Pbe.O 2> 3Pbe.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pbe failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pbe.O $srcdir/3b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pbe"; fi;;
+ 1) $echo "Test 3Pbe failed: files 3Pbe.O and $srcdir/3b2l17-FF differ" 1>&2
+ (diff -c 3Pbe.O $srcdir/3b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pbe may have failed." 1>&2
+ $echo The command "cmp 3Pbe.O $srcdir/3b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pbe.E || rm -f 3Pbe.E
+$xx --date-format="-- Date/Time --" -h x +3 -b --columns=2 -l 17 $srcdir/tFnFt > 3Pbe.C.O 2> 3Pbe.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pbe.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pbe.C.O $srcdir/3b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pbe.C"; fi;;
+ 1) $echo "Test 3Pbe.C failed: files 3Pbe.C.O and $srcdir/3b2l17-FF differ" 1>&2
+ (diff -c 3Pbe.C.O $srcdir/3b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pbe.C may have failed." 1>&2
+ $echo The command "cmp 3Pbe.C.O $srcdir/3b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pbe.C.E || rm -f 3Pbe.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -b -2 -l 17 $srcdir/tFFt > 3Pbf.O 2> 3Pbf.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pbf failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pbf.O $srcdir/3b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pbf"; fi;;
+ 1) $echo "Test 3Pbf failed: files 3Pbf.O and $srcdir/3b2l17-FF differ" 1>&2
+ (diff -c 3Pbf.O $srcdir/3b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pbf may have failed." 1>&2
+ $echo The command "cmp 3Pbf.O $srcdir/3b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pbf.E || rm -f 3Pbf.E
+$xx --date-format="-- Date/Time --" -h x +3 -b --columns=2 -l 17 $srcdir/tFFt > 3Pbf.C.O 2> 3Pbf.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3Pbf.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3Pbf.C.O $srcdir/3b2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3Pbf.C"; fi;;
+ 1) $echo "Test 3Pbf.C failed: files 3Pbf.C.O and $srcdir/3b2l17-FF differ" 1>&2
+ (diff -c 3Pbf.C.O $srcdir/3b2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3Pbf.C may have failed." 1>&2
+ $echo The command "cmp 3Pbf.C.O $srcdir/3b2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3Pbf.C.E || rm -f 3Pbf.C.E
+$xx --date-format="-- Date/Time --" -h x -l 24 $srcdir/tn > 4a.O 2> 4a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4a.O $srcdir/l24-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4a"; fi;;
+ 1) $echo "Test 4a failed: files 4a.O and $srcdir/l24-t differ" 1>&2
+ (diff -c 4a.O $srcdir/l24-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4a may have failed." 1>&2
+ $echo The command "cmp 4a.O $srcdir/l24-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4a.E || rm -f 4a.E
+$xx --date-format="-- Date/Time --" -h x -l 17 -f $srcdir/tn > 4b.O 2> 4b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4b.O $srcdir/l17f-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4b"; fi;;
+ 1) $echo "Test 4b failed: files 4b.O and $srcdir/l17f-t differ" 1>&2
+ (diff -c 4b.O $srcdir/l17f-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4b may have failed." 1>&2
+ $echo The command "cmp 4b.O $srcdir/l17f-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4b.E || rm -f 4b.E
+$xx --date-format="-- Date/Time --" -h x +3 -l 24 $srcdir/tn > 4c.O 2> 4c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4c failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4c.O $srcdir/3l24-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4c"; fi;;
+ 1) $echo "Test 4c failed: files 4c.O and $srcdir/3l24-t differ" 1>&2
+ (diff -c 4c.O $srcdir/3l24-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4c may have failed." 1>&2
+ $echo The command "cmp 4c.O $srcdir/3l24-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4c.E || rm -f 4c.E
+$xx --date-format="-- Date/Time --" -h x +3 -l 17 -f $srcdir/tn > 4d.O 2> 4d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4d failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4d.O $srcdir/3l17f-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4d"; fi;;
+ 1) $echo "Test 4d failed: files 4d.O and $srcdir/3l17f-t differ" 1>&2
+ (diff -c 4d.O $srcdir/3l17f-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4d may have failed." 1>&2
+ $echo The command "cmp 4d.O $srcdir/3l17f-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4d.E || rm -f 4d.E
+$xx --date-format="-- Date/Time --" -h x +3:5 -l 17 -f $srcdir/tn > 4e.O 2> 4e.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4e failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4e.O $srcdir/3-5l17f-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4e"; fi;;
+ 1) $echo "Test 4e failed: files 4e.O and $srcdir/3-5l17f-t differ" 1>&2
+ (diff -c 4e.O $srcdir/3-5l17f-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4e may have failed." 1>&2
+ $echo The command "cmp 4e.O $srcdir/3-5l17f-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4e.E || rm -f 4e.E
+$xx --date-format="-- Date/Time --" -h x -a -3 -l 15 $srcdir/tn > 4f.O 2> 4f.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4f failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4f.O $srcdir/a3l15-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4f"; fi;;
+ 1) $echo "Test 4f failed: files 4f.O and $srcdir/a3l15-t differ" 1>&2
+ (diff -c 4f.O $srcdir/a3l15-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4f may have failed." 1>&2
+ $echo The command "cmp 4f.O $srcdir/a3l15-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4f.E || rm -f 4f.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=3 -l 15 $srcdir/tn > 4f.C.O 2> 4f.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4f.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4f.C.O $srcdir/a3l15-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4f.C"; fi;;
+ 1) $echo "Test 4f.C failed: files 4f.C.O and $srcdir/a3l15-t differ" 1>&2
+ (diff -c 4f.C.O $srcdir/a3l15-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4f.C may have failed." 1>&2
+ $echo The command "cmp 4f.C.O $srcdir/a3l15-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4f.C.E || rm -f 4f.C.E
+$xx --date-format="-- Date/Time --" -h x -a -3 -l 8 -f $srcdir/tn > 4g.O 2> 4g.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4g failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4g.O $srcdir/a3l8f-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4g"; fi;;
+ 1) $echo "Test 4g failed: files 4g.O and $srcdir/a3l8f-t differ" 1>&2
+ (diff -c 4g.O $srcdir/a3l8f-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4g may have failed." 1>&2
+ $echo The command "cmp 4g.O $srcdir/a3l8f-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4g.E || rm -f 4g.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=3 -l 8 -f $srcdir/tn > 4g.C.O 2> 4g.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4g.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4g.C.O $srcdir/a3l8f-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4g.C"; fi;;
+ 1) $echo "Test 4g.C failed: files 4g.C.O and $srcdir/a3l8f-t differ" 1>&2
+ (diff -c 4g.C.O $srcdir/a3l8f-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4g.C may have failed." 1>&2
+ $echo The command "cmp 4g.C.O $srcdir/a3l8f-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4g.C.E || rm -f 4g.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -a -3 -l 15 $srcdir/tn > 4h.O 2> 4h.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4h failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4h.O $srcdir/3a3l15-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4h"; fi;;
+ 1) $echo "Test 4h failed: files 4h.O and $srcdir/3a3l15-t differ" 1>&2
+ (diff -c 4h.O $srcdir/3a3l15-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4h may have failed." 1>&2
+ $echo The command "cmp 4h.O $srcdir/3a3l15-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4h.E || rm -f 4h.E
+$xx --date-format="-- Date/Time --" -h x +3 -a --columns=3 -l 15 $srcdir/tn > 4h.C.O 2> 4h.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4h.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4h.C.O $srcdir/3a3l15-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4h.C"; fi;;
+ 1) $echo "Test 4h.C failed: files 4h.C.O and $srcdir/3a3l15-t differ" 1>&2
+ (diff -c 4h.C.O $srcdir/3a3l15-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4h.C may have failed." 1>&2
+ $echo The command "cmp 4h.C.O $srcdir/3a3l15-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4h.C.E || rm -f 4h.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -a -3 -l 8 -f $srcdir/tn > 4i.O 2> 4i.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4i failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4i.O $srcdir/3a3l8f-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4i"; fi;;
+ 1) $echo "Test 4i failed: files 4i.O and $srcdir/3a3l8f-t differ" 1>&2
+ (diff -c 4i.O $srcdir/3a3l8f-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4i may have failed." 1>&2
+ $echo The command "cmp 4i.O $srcdir/3a3l8f-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4i.E || rm -f 4i.E
+$xx --date-format="-- Date/Time --" -h x +3 -a --columns=3 -l 8 -f $srcdir/tn > 4i.C.O 2> 4i.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4i.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4i.C.O $srcdir/3a3l8f-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4i.C"; fi;;
+ 1) $echo "Test 4i.C failed: files 4i.C.O and $srcdir/3a3l8f-t differ" 1>&2
+ (diff -c 4i.C.O $srcdir/3a3l8f-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4i.C may have failed." 1>&2
+ $echo The command "cmp 4i.C.O $srcdir/3a3l8f-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4i.C.E || rm -f 4i.C.E
+$xx --date-format="-- Date/Time --" -h x -b -3 -l 15 $srcdir/tn > 4j.O 2> 4j.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4j failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4j.O $srcdir/b3l15-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4j"; fi;;
+ 1) $echo "Test 4j failed: files 4j.O and $srcdir/b3l15-t differ" 1>&2
+ (diff -c 4j.O $srcdir/b3l15-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4j may have failed." 1>&2
+ $echo The command "cmp 4j.O $srcdir/b3l15-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4j.E || rm -f 4j.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=3 -l 15 $srcdir/tn > 4j.C.O 2> 4j.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4j.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4j.C.O $srcdir/b3l15-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4j.C"; fi;;
+ 1) $echo "Test 4j.C failed: files 4j.C.O and $srcdir/b3l15-t differ" 1>&2
+ (diff -c 4j.C.O $srcdir/b3l15-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4j.C may have failed." 1>&2
+ $echo The command "cmp 4j.C.O $srcdir/b3l15-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4j.C.E || rm -f 4j.C.E
+$xx --date-format="-- Date/Time --" -h x -b -3 -l 8 -f $srcdir/tn > 4k.O 2> 4k.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4k failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4k.O $srcdir/b3l8f-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4k"; fi;;
+ 1) $echo "Test 4k failed: files 4k.O and $srcdir/b3l8f-t differ" 1>&2
+ (diff -c 4k.O $srcdir/b3l8f-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4k may have failed." 1>&2
+ $echo The command "cmp 4k.O $srcdir/b3l8f-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4k.E || rm -f 4k.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=3 -l 8 -f $srcdir/tn > 4k.C.O 2> 4k.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4k.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4k.C.O $srcdir/b3l8f-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4k.C"; fi;;
+ 1) $echo "Test 4k.C failed: files 4k.C.O and $srcdir/b3l8f-t differ" 1>&2
+ (diff -c 4k.C.O $srcdir/b3l8f-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4k.C may have failed." 1>&2
+ $echo The command "cmp 4k.C.O $srcdir/b3l8f-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4k.C.E || rm -f 4k.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -b -3 -l 15 $srcdir/tn > 4l.O 2> 4l.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4l failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4l.O $srcdir/3b3l15-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4l"; fi;;
+ 1) $echo "Test 4l failed: files 4l.O and $srcdir/3b3l15-t differ" 1>&2
+ (diff -c 4l.O $srcdir/3b3l15-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4l may have failed." 1>&2
+ $echo The command "cmp 4l.O $srcdir/3b3l15-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4l.E || rm -f 4l.E
+$xx --date-format="-- Date/Time --" -h x +3 -b --columns=3 -l 15 $srcdir/tn > 4l.C.O 2> 4l.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4l.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4l.C.O $srcdir/3b3l15-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4l.C"; fi;;
+ 1) $echo "Test 4l.C failed: files 4l.C.O and $srcdir/3b3l15-t differ" 1>&2
+ (diff -c 4l.C.O $srcdir/3b3l15-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4l.C may have failed." 1>&2
+ $echo The command "cmp 4l.C.O $srcdir/3b3l15-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4l.C.E || rm -f 4l.C.E
+$xx --date-format="-- Date/Time --" -h x +3 -b -3 -l 8 -f $srcdir/tn > 4m.O 2> 4m.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4m failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4m.O $srcdir/3b3l8f-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4m"; fi;;
+ 1) $echo "Test 4m failed: files 4m.O and $srcdir/3b3l8f-t differ" 1>&2
+ (diff -c 4m.O $srcdir/3b3l8f-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4m may have failed." 1>&2
+ $echo The command "cmp 4m.O $srcdir/3b3l8f-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4m.E || rm -f 4m.E
+$xx --date-format="-- Date/Time --" -h x +3 -b --columns=3 -l 8 -f $srcdir/tn > 4m.C.O 2> 4m.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4m.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4m.C.O $srcdir/3b3l8f-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4m.C"; fi;;
+ 1) $echo "Test 4m.C failed: files 4m.C.O and $srcdir/3b3l8f-t differ" 1>&2
+ (diff -c 4m.C.O $srcdir/3b3l8f-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4m.C may have failed." 1>&2
+ $echo The command "cmp 4m.C.O $srcdir/3b3l8f-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4m.C.E || rm -f 4m.C.E
+$xx --date-format="-- Date/Time --" -h x -m -l 24 $srcdir/tn $srcdir/tn > 5a.O 2> 5a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5a.O $srcdir/ml24-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5a"; fi;;
+ 1) $echo "Test 5a failed: files 5a.O and $srcdir/ml24-t differ" 1>&2
+ (diff -c 5a.O $srcdir/ml24-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5a may have failed." 1>&2
+ $echo The command "cmp 5a.O $srcdir/ml24-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5a.E || rm -f 5a.E
+$xx --date-format="-- Date/Time --" -h x -m -l 17 -f $srcdir/tn $srcdir/tn > 5b.O 2> 5b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5b.O $srcdir/ml17f-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5b"; fi;;
+ 1) $echo "Test 5b failed: files 5b.O and $srcdir/ml17f-t differ" 1>&2
+ (diff -c 5b.O $srcdir/ml17f-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5b may have failed." 1>&2
+ $echo The command "cmp 5b.O $srcdir/ml17f-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5b.E || rm -f 5b.E
+$xx --date-format="-- Date/Time --" -h x +3 -m -l 24 $srcdir/tn $srcdir/tn > 5c.O 2> 5c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5c failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5c.O $srcdir/3ml24-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5c"; fi;;
+ 1) $echo "Test 5c failed: files 5c.O and $srcdir/3ml24-t differ" 1>&2
+ (diff -c 5c.O $srcdir/3ml24-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5c may have failed." 1>&2
+ $echo The command "cmp 5c.O $srcdir/3ml24-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5c.E || rm -f 5c.E
+$xx --date-format="-- Date/Time --" -h x +3 -m -l 17 -f $srcdir/tn $srcdir/tn > 5d.O 2> 5d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5d failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5d.O $srcdir/3ml17f-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5d"; fi;;
+ 1) $echo "Test 5d failed: files 5d.O and $srcdir/3ml17f-t differ" 1>&2
+ (diff -c 5d.O $srcdir/3ml17f-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5d may have failed." 1>&2
+ $echo The command "cmp 5d.O $srcdir/3ml17f-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5d.E || rm -f 5d.E
+$xx --date-format="-- Date/Time --" -h x -m -l 17 -f $srcdir/0Ft $srcdir/0Ft > 5e.O 2> 5e.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5e failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5e.O $srcdir/ml17f-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5e"; fi;;
+ 1) $echo "Test 5e failed: files 5e.O and $srcdir/ml17f-0F differ" 1>&2
+ (diff -c 5e.O $srcdir/ml17f-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5e may have failed." 1>&2
+ $echo The command "cmp 5e.O $srcdir/ml17f-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5e.E || rm -f 5e.E
+$xx --date-format="-- Date/Time --" -h x -m -l 17 -f $srcdir/0Ft $srcdir/0Fnt > 5f.O 2> 5f.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5f failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5f.O $srcdir/ml17f-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5f"; fi;;
+ 1) $echo "Test 5f failed: files 5f.O and $srcdir/ml17f-0F differ" 1>&2
+ (diff -c 5f.O $srcdir/ml17f-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5f may have failed." 1>&2
+ $echo The command "cmp 5f.O $srcdir/ml17f-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5f.E || rm -f 5f.E
+$xx --date-format="-- Date/Time --" -h x -m -l 17 -f $srcdir/tn $srcdir/0Ft > 5g.O 2> 5g.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5g failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5g.O $srcdir/ml17f-t-0F > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5g"; fi;;
+ 1) $echo "Test 5g failed: files 5g.O and $srcdir/ml17f-t-0F differ" 1>&2
+ (diff -c 5g.O $srcdir/ml17f-t-0F) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5g may have failed." 1>&2
+ $echo The command "cmp 5g.O $srcdir/ml17f-t-0F" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5g.E || rm -f 5g.E
+$xx --date-format="-- Date/Time --" -h x -m -l 24 $srcdir/tFFn $srcdir/tFnFt > 5ma.O 2> 5ma.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5ma failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5ma.O $srcdir/ml24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5ma"; fi;;
+ 1) $echo "Test 5ma failed: files 5ma.O and $srcdir/ml24-FF differ" 1>&2
+ (diff -c 5ma.O $srcdir/ml24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5ma may have failed." 1>&2
+ $echo The command "cmp 5ma.O $srcdir/ml24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5ma.E || rm -f 5ma.E
+$xx --date-format="-- Date/Time --" -h x -m -l 24 $srcdir/tFFn $srcdir/FFn > 5mb.O 2> 5mb.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5mb failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5mb.O $srcdir/ml24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5mb"; fi;;
+ 1) $echo "Test 5mb failed: files 5mb.O and $srcdir/ml24-FF differ" 1>&2
+ (diff -c 5mb.O $srcdir/ml24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5mb may have failed." 1>&2
+ $echo The command "cmp 5mb.O $srcdir/ml24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5mb.E || rm -f 5mb.E
+$xx --date-format="-- Date/Time --" -h x -m -l 24 $srcdir/tn $srcdir/FFn > 5mc.O 2> 5mc.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5mc failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5mc.O $srcdir/ml24-t-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5mc"; fi;;
+ 1) $echo "Test 5mc failed: files 5mc.O and $srcdir/ml24-t-FF differ" 1>&2
+ (diff -c 5mc.O $srcdir/ml24-t-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5mc may have failed." 1>&2
+ $echo The command "cmp 5mc.O $srcdir/ml24-t-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5mc.E || rm -f 5mc.E
+$xx --date-format="-- Date/Time --" -h x -m -l 20 $srcdir/FFn $srcdir/tn > 5md.O 2> 5md.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5md failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5md.O $srcdir/ml20-FF-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5md"; fi;;
+ 1) $echo "Test 5md failed: files 5md.O and $srcdir/ml20-FF-t differ" 1>&2
+ (diff -c 5md.O $srcdir/ml20-FF-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5md may have failed." 1>&2
+ $echo The command "cmp 5md.O $srcdir/ml20-FF-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5md.E || rm -f 5md.E
+$xx --date-format="-- Date/Time --" -h x +3 -m -l 24 $srcdir/FFn $srcdir/FnFn > 5Pma.O 2> 5Pma.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5Pma failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5Pma.O $srcdir/3ml24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5Pma"; fi;;
+ 1) $echo "Test 5Pma failed: files 5Pma.O and $srcdir/3ml24-FF differ" 1>&2
+ (diff -c 5Pma.O $srcdir/3ml24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5Pma may have failed." 1>&2
+ $echo The command "cmp 5Pma.O $srcdir/3ml24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5Pma.E || rm -f 5Pma.E
+$xx --date-format="-- Date/Time --" -h x +3 -m -l 24 $srcdir/tFFn $srcdir/FFn > 5Pmb.O 2> 5Pmb.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5Pmb failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5Pmb.O $srcdir/3ml24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5Pmb"; fi;;
+ 1) $echo "Test 5Pmb failed: files 5Pmb.O and $srcdir/3ml24-FF differ" 1>&2
+ (diff -c 5Pmb.O $srcdir/3ml24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5Pmb may have failed." 1>&2
+ $echo The command "cmp 5Pmb.O $srcdir/3ml24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5Pmb.E || rm -f 5Pmb.E
+$xx --date-format="-- Date/Time --" -h x +3 -m -l 24 $srcdir/tn $srcdir/FFn > 5Pmc.O 2> 5Pmc.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5Pmc failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5Pmc.O $srcdir/3ml24-t-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5Pmc"; fi;;
+ 1) $echo "Test 5Pmc failed: files 5Pmc.O and $srcdir/3ml24-t-FF differ" 1>&2
+ (diff -c 5Pmc.O $srcdir/3ml24-t-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5Pmc may have failed." 1>&2
+ $echo The command "cmp 5Pmc.O $srcdir/3ml24-t-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5Pmc.E || rm -f 5Pmc.E
+$xx --date-format="-- Date/Time --" -h x -t -l 24 $srcdir/tn > 6a.O 2> 6a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6a.O $srcdir/t-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6a"; fi;;
+ 1) $echo "Test 6a failed: files 6a.O and $srcdir/t-t differ" 1>&2
+ (diff -c 6a.O $srcdir/t-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6a may have failed." 1>&2
+ $echo The command "cmp 6a.O $srcdir/t-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6a.E || rm -f 6a.E
+$xx --date-format="-- Date/Time --" -h x -t -l 17 -f $srcdir/tn > 6b.O 2> 6b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6b.O $srcdir/t-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6b"; fi;;
+ 1) $echo "Test 6b failed: files 6b.O and $srcdir/t-t differ" 1>&2
+ (diff -c 6b.O $srcdir/t-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6b may have failed." 1>&2
+ $echo The command "cmp 6b.O $srcdir/t-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6b.E || rm -f 6b.E
+$xx --date-format="-- Date/Time --" -h x -t -l 17 -f $srcdir/tFFt-bl > 6c.O 2> 6c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6c failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6c.O $srcdir/t-bl > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6c"; fi;;
+ 1) $echo "Test 6c failed: files 6c.O and $srcdir/t-bl differ" 1>&2
+ (diff -c 6c.O $srcdir/t-bl) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6c may have failed." 1>&2
+ $echo The command "cmp 6c.O $srcdir/t-bl" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6c.E || rm -f 6c.E
+$xx --date-format="-- Date/Time --" -h x -t -l 24 $srcdir/0FnFnt > 6d.O 2> 6d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6d failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6d.O $srcdir/t-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6d"; fi;;
+ 1) $echo "Test 6d failed: files 6d.O and $srcdir/t-0FF differ" 1>&2
+ (diff -c 6d.O $srcdir/t-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6d may have failed." 1>&2
+ $echo The command "cmp 6d.O $srcdir/t-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6d.E || rm -f 6d.E
+$xx --date-format="-- Date/Time --" -h x -t -l 24 $srcdir/FFn > 6e.O 2> 6e.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6e failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6e.O $srcdir/t-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6e"; fi;;
+ 1) $echo "Test 6e failed: files 6e.O and $srcdir/t-FF differ" 1>&2
+ (diff -c 6e.O $srcdir/t-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6e may have failed." 1>&2
+ $echo The command "cmp 6e.O $srcdir/t-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6e.E || rm -f 6e.E
+$xx --date-format="-- Date/Time --" -h x -t -l 24 $srcdir/FnFn > 6f.O 2> 6f.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6f failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6f.O $srcdir/t-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6f"; fi;;
+ 1) $echo "Test 6f failed: files 6f.O and $srcdir/t-FF differ" 1>&2
+ (diff -c 6f.O $srcdir/t-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6f may have failed." 1>&2
+ $echo The command "cmp 6f.O $srcdir/t-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6f.E || rm -f 6f.E
+$xx --date-format="-- Date/Time --" -h x -t -l 17 -f $srcdir/FFn > 6g.O 2> 6g.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6g failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6g.O $srcdir/t-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6g"; fi;;
+ 1) $echo "Test 6g failed: files 6g.O and $srcdir/t-FF differ" 1>&2
+ (diff -c 6g.O $srcdir/t-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6g may have failed." 1>&2
+ $echo The command "cmp 6g.O $srcdir/t-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6g.E || rm -f 6g.E
+$xx --date-format="-- Date/Time --" -h x -t -a -3 $srcdir/0FnFnt > 6aa.O 2> 6aa.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6aa failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6aa.O $srcdir/ta3-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6aa"; fi;;
+ 1) $echo "Test 6aa failed: files 6aa.O and $srcdir/ta3-0FF differ" 1>&2
+ (diff -c 6aa.O $srcdir/ta3-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6aa may have failed." 1>&2
+ $echo The command "cmp 6aa.O $srcdir/ta3-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6aa.E || rm -f 6aa.E
+$xx --date-format="-- Date/Time --" -h x -t -a --columns=3 $srcdir/0FnFnt > 6aa.C.O 2> 6aa.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6aa.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6aa.C.O $srcdir/ta3-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6aa.C"; fi;;
+ 1) $echo "Test 6aa.C failed: files 6aa.C.O and $srcdir/ta3-0FF differ" 1>&2
+ (diff -c 6aa.C.O $srcdir/ta3-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6aa.C may have failed." 1>&2
+ $echo The command "cmp 6aa.C.O $srcdir/ta3-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6aa.C.E || rm -f 6aa.C.E
+$xx --date-format="-- Date/Time --" -h x -t -a -3 $srcdir/FFn > 6ab.O 2> 6ab.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6ab failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6ab.O $srcdir/ta3-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6ab"; fi;;
+ 1) $echo "Test 6ab failed: files 6ab.O and $srcdir/ta3-FF differ" 1>&2
+ (diff -c 6ab.O $srcdir/ta3-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6ab may have failed." 1>&2
+ $echo The command "cmp 6ab.O $srcdir/ta3-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6ab.E || rm -f 6ab.E
+$xx --date-format="-- Date/Time --" -h x -t -a --columns=3 $srcdir/FFn > 6ab.C.O 2> 6ab.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6ab.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6ab.C.O $srcdir/ta3-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6ab.C"; fi;;
+ 1) $echo "Test 6ab.C failed: files 6ab.C.O and $srcdir/ta3-FF differ" 1>&2
+ (diff -c 6ab.C.O $srcdir/ta3-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6ab.C may have failed." 1>&2
+ $echo The command "cmp 6ab.C.O $srcdir/ta3-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6ab.C.E || rm -f 6ab.C.E
+$xx --date-format="-- Date/Time --" -h x -t -a -3 -l 24 $srcdir/FnFn > 6ac.O 2> 6ac.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6ac failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6ac.O $srcdir/ta3-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6ac"; fi;;
+ 1) $echo "Test 6ac failed: files 6ac.O and $srcdir/ta3-FF differ" 1>&2
+ (diff -c 6ac.O $srcdir/ta3-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6ac may have failed." 1>&2
+ $echo The command "cmp 6ac.O $srcdir/ta3-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6ac.E || rm -f 6ac.E
+$xx --date-format="-- Date/Time --" -h x -t -a --columns=3 -l 24 $srcdir/FnFn > 6ac.C.O 2> 6ac.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6ac.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6ac.C.O $srcdir/ta3-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6ac.C"; fi;;
+ 1) $echo "Test 6ac.C failed: files 6ac.C.O and $srcdir/ta3-FF differ" 1>&2
+ (diff -c 6ac.C.O $srcdir/ta3-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6ac.C may have failed." 1>&2
+ $echo The command "cmp 6ac.C.O $srcdir/ta3-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6ac.C.E || rm -f 6ac.C.E
+$xx --date-format="-- Date/Time --" -h x -t -b -3 $srcdir/0FnFnt > 6ba.O 2> 6ba.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6ba failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6ba.O $srcdir/tb3-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6ba"; fi;;
+ 1) $echo "Test 6ba failed: files 6ba.O and $srcdir/tb3-0FF differ" 1>&2
+ (diff -c 6ba.O $srcdir/tb3-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6ba may have failed." 1>&2
+ $echo The command "cmp 6ba.O $srcdir/tb3-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6ba.E || rm -f 6ba.E
+$xx --date-format="-- Date/Time --" -h x -t -b --columns=3 $srcdir/0FnFnt > 6ba.C.O 2> 6ba.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6ba.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6ba.C.O $srcdir/tb3-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6ba.C"; fi;;
+ 1) $echo "Test 6ba.C failed: files 6ba.C.O and $srcdir/tb3-0FF differ" 1>&2
+ (diff -c 6ba.C.O $srcdir/tb3-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6ba.C may have failed." 1>&2
+ $echo The command "cmp 6ba.C.O $srcdir/tb3-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6ba.C.E || rm -f 6ba.C.E
+$xx --date-format="-- Date/Time --" -h x -t -b -3 $srcdir/FFn > 6bb.O 2> 6bb.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6bb failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6bb.O $srcdir/tb3-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6bb"; fi;;
+ 1) $echo "Test 6bb failed: files 6bb.O and $srcdir/tb3-FF differ" 1>&2
+ (diff -c 6bb.O $srcdir/tb3-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6bb may have failed." 1>&2
+ $echo The command "cmp 6bb.O $srcdir/tb3-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6bb.E || rm -f 6bb.E
+$xx --date-format="-- Date/Time --" -h x -t -b --columns=3 $srcdir/FFn > 6bb.C.O 2> 6bb.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6bb.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6bb.C.O $srcdir/tb3-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6bb.C"; fi;;
+ 1) $echo "Test 6bb.C failed: files 6bb.C.O and $srcdir/tb3-FF differ" 1>&2
+ (diff -c 6bb.C.O $srcdir/tb3-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6bb.C may have failed." 1>&2
+ $echo The command "cmp 6bb.C.O $srcdir/tb3-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6bb.C.E || rm -f 6bb.C.E
+$xx --date-format="-- Date/Time --" -h x -t -b -3 -l 24 $srcdir/FnFn > 6bc.O 2> 6bc.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6bc failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6bc.O $srcdir/tb3-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6bc"; fi;;
+ 1) $echo "Test 6bc failed: files 6bc.O and $srcdir/tb3-FF differ" 1>&2
+ (diff -c 6bc.O $srcdir/tb3-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6bc may have failed." 1>&2
+ $echo The command "cmp 6bc.O $srcdir/tb3-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6bc.E || rm -f 6bc.E
+$xx --date-format="-- Date/Time --" -h x -t -b --columns=3 -l 24 $srcdir/FnFn > 6bc.C.O 2> 6bc.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6bc.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6bc.C.O $srcdir/tb3-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6bc.C"; fi;;
+ 1) $echo "Test 6bc.C failed: files 6bc.C.O and $srcdir/tb3-FF differ" 1>&2
+ (diff -c 6bc.C.O $srcdir/tb3-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6bc.C may have failed." 1>&2
+ $echo The command "cmp 6bc.C.O $srcdir/tb3-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6bc.C.E || rm -f 6bc.C.E
+$xx --date-format="-- Date/Time --" -h x -T -l 24 $srcdir/tn > 7a.O 2> 7a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7a.O $srcdir/tt-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7a"; fi;;
+ 1) $echo "Test 7a failed: files 7a.O and $srcdir/tt-t differ" 1>&2
+ (diff -c 7a.O $srcdir/tt-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7a may have failed." 1>&2
+ $echo The command "cmp 7a.O $srcdir/tt-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7a.E || rm -f 7a.E
+$xx --date-format="-- Date/Time --" -h x -T -l 17 -f $srcdir/tn > 7b.O 2> 7b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7b.O $srcdir/tt-t > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7b"; fi;;
+ 1) $echo "Test 7b failed: files 7b.O and $srcdir/tt-t differ" 1>&2
+ (diff -c 7b.O $srcdir/tt-t) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7b may have failed." 1>&2
+ $echo The command "cmp 7b.O $srcdir/tt-t" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7b.E || rm -f 7b.E
+$xx --date-format="-- Date/Time --" -h x -T -l 17 -f $srcdir/tFFt-bl > 7c.O 2> 7c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7c failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7c.O $srcdir/tt-bl > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7c"; fi;;
+ 1) $echo "Test 7c failed: files 7c.O and $srcdir/tt-bl differ" 1>&2
+ (diff -c 7c.O $srcdir/tt-bl) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7c may have failed." 1>&2
+ $echo The command "cmp 7c.O $srcdir/tt-bl" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7c.E || rm -f 7c.E
+$xx --date-format="-- Date/Time --" -h x -T -l 24 $srcdir/0FnFnt > 7d.O 2> 7d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7d failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7d.O $srcdir/tt-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7d"; fi;;
+ 1) $echo "Test 7d failed: files 7d.O and $srcdir/tt-0FF differ" 1>&2
+ (diff -c 7d.O $srcdir/tt-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7d may have failed." 1>&2
+ $echo The command "cmp 7d.O $srcdir/tt-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7d.E || rm -f 7d.E
+$xx --date-format="-- Date/Time --" -h x -T -l 24 $srcdir/FFn > 7e.O 2> 7e.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7e failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7e.O $srcdir/tt-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7e"; fi;;
+ 1) $echo "Test 7e failed: files 7e.O and $srcdir/tt-FF differ" 1>&2
+ (diff -c 7e.O $srcdir/tt-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7e may have failed." 1>&2
+ $echo The command "cmp 7e.O $srcdir/tt-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7e.E || rm -f 7e.E
+$xx --date-format="-- Date/Time --" -h x -T -l 24 $srcdir/FnFn > 7f.O 2> 7f.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7f failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7f.O $srcdir/tt-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7f"; fi;;
+ 1) $echo "Test 7f failed: files 7f.O and $srcdir/tt-FF differ" 1>&2
+ (diff -c 7f.O $srcdir/tt-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7f may have failed." 1>&2
+ $echo The command "cmp 7f.O $srcdir/tt-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7f.E || rm -f 7f.E
+$xx --date-format="-- Date/Time --" -h x -T -l 17 -f $srcdir/FFn > 7g.O 2> 7g.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7g failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7g.O $srcdir/tt-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7g"; fi;;
+ 1) $echo "Test 7g failed: files 7g.O and $srcdir/tt-FF differ" 1>&2
+ (diff -c 7g.O $srcdir/tt-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7g may have failed." 1>&2
+ $echo The command "cmp 7g.O $srcdir/tt-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7g.E || rm -f 7g.E
+$xx --date-format="-- Date/Time --" -h x -T -a -3 $srcdir/0FnFnt > 7aa.O 2> 7aa.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7aa failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7aa.O $srcdir/tta3-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7aa"; fi;;
+ 1) $echo "Test 7aa failed: files 7aa.O and $srcdir/tta3-0FF differ" 1>&2
+ (diff -c 7aa.O $srcdir/tta3-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7aa may have failed." 1>&2
+ $echo The command "cmp 7aa.O $srcdir/tta3-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7aa.E || rm -f 7aa.E
+$xx --date-format="-- Date/Time --" -h x -T -a --columns=3 $srcdir/0FnFnt > 7aa.C.O 2> 7aa.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7aa.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7aa.C.O $srcdir/tta3-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7aa.C"; fi;;
+ 1) $echo "Test 7aa.C failed: files 7aa.C.O and $srcdir/tta3-0FF differ" 1>&2
+ (diff -c 7aa.C.O $srcdir/tta3-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7aa.C may have failed." 1>&2
+ $echo The command "cmp 7aa.C.O $srcdir/tta3-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7aa.C.E || rm -f 7aa.C.E
+$xx --date-format="-- Date/Time --" -h x -T -a -3 $srcdir/FFn > 7ab.O 2> 7ab.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7ab failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7ab.O $srcdir/tta3-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7ab"; fi;;
+ 1) $echo "Test 7ab failed: files 7ab.O and $srcdir/tta3-FF differ" 1>&2
+ (diff -c 7ab.O $srcdir/tta3-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7ab may have failed." 1>&2
+ $echo The command "cmp 7ab.O $srcdir/tta3-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7ab.E || rm -f 7ab.E
+$xx --date-format="-- Date/Time --" -h x -T -a --columns=3 $srcdir/FFn > 7ab.C.O 2> 7ab.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7ab.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7ab.C.O $srcdir/tta3-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7ab.C"; fi;;
+ 1) $echo "Test 7ab.C failed: files 7ab.C.O and $srcdir/tta3-FF differ" 1>&2
+ (diff -c 7ab.C.O $srcdir/tta3-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7ab.C may have failed." 1>&2
+ $echo The command "cmp 7ab.C.O $srcdir/tta3-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7ab.C.E || rm -f 7ab.C.E
+$xx --date-format="-- Date/Time --" -h x -T -a -3 -l 24 $srcdir/FnFn > 7ac.O 2> 7ac.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7ac failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7ac.O $srcdir/tta3-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7ac"; fi;;
+ 1) $echo "Test 7ac failed: files 7ac.O and $srcdir/tta3-FF differ" 1>&2
+ (diff -c 7ac.O $srcdir/tta3-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7ac may have failed." 1>&2
+ $echo The command "cmp 7ac.O $srcdir/tta3-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7ac.E || rm -f 7ac.E
+$xx --date-format="-- Date/Time --" -h x -T -a --columns=3 -l 24 $srcdir/FnFn > 7ac.C.O 2> 7ac.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7ac.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7ac.C.O $srcdir/tta3-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7ac.C"; fi;;
+ 1) $echo "Test 7ac.C failed: files 7ac.C.O and $srcdir/tta3-FF differ" 1>&2
+ (diff -c 7ac.C.O $srcdir/tta3-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7ac.C may have failed." 1>&2
+ $echo The command "cmp 7ac.C.O $srcdir/tta3-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7ac.C.E || rm -f 7ac.C.E
+$xx --date-format="-- Date/Time --" -h x -T -b -3 $srcdir/0FnFnt > 7ba.O 2> 7ba.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7ba failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7ba.O $srcdir/ttb3-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7ba"; fi;;
+ 1) $echo "Test 7ba failed: files 7ba.O and $srcdir/ttb3-0FF differ" 1>&2
+ (diff -c 7ba.O $srcdir/ttb3-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7ba may have failed." 1>&2
+ $echo The command "cmp 7ba.O $srcdir/ttb3-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7ba.E || rm -f 7ba.E
+$xx --date-format="-- Date/Time --" -h x -T -b --columns=3 $srcdir/0FnFnt > 7ba.C.O 2> 7ba.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7ba.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7ba.C.O $srcdir/ttb3-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7ba.C"; fi;;
+ 1) $echo "Test 7ba.C failed: files 7ba.C.O and $srcdir/ttb3-0FF differ" 1>&2
+ (diff -c 7ba.C.O $srcdir/ttb3-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7ba.C may have failed." 1>&2
+ $echo The command "cmp 7ba.C.O $srcdir/ttb3-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7ba.C.E || rm -f 7ba.C.E
+$xx --date-format="-- Date/Time --" -h x -T -b -3 $srcdir/FFn > 7bb.O 2> 7bb.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7bb failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7bb.O $srcdir/ttb3-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7bb"; fi;;
+ 1) $echo "Test 7bb failed: files 7bb.O and $srcdir/ttb3-FF differ" 1>&2
+ (diff -c 7bb.O $srcdir/ttb3-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7bb may have failed." 1>&2
+ $echo The command "cmp 7bb.O $srcdir/ttb3-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7bb.E || rm -f 7bb.E
+$xx --date-format="-- Date/Time --" -h x -T -b --columns=3 $srcdir/FFn > 7bb.C.O 2> 7bb.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7bb.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7bb.C.O $srcdir/ttb3-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7bb.C"; fi;;
+ 1) $echo "Test 7bb.C failed: files 7bb.C.O and $srcdir/ttb3-FF differ" 1>&2
+ (diff -c 7bb.C.O $srcdir/ttb3-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7bb.C may have failed." 1>&2
+ $echo The command "cmp 7bb.C.O $srcdir/ttb3-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7bb.C.E || rm -f 7bb.C.E
+$xx --date-format="-- Date/Time --" -h x -T -b -3 -l 24 $srcdir/FnFn > 7bc.O 2> 7bc.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7bc failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7bc.O $srcdir/ttb3-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7bc"; fi;;
+ 1) $echo "Test 7bc failed: files 7bc.O and $srcdir/ttb3-FF differ" 1>&2
+ (diff -c 7bc.O $srcdir/ttb3-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7bc may have failed." 1>&2
+ $echo The command "cmp 7bc.O $srcdir/ttb3-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7bc.E || rm -f 7bc.E
+$xx --date-format="-- Date/Time --" -h x -T -b --columns=3 -l 24 $srcdir/FnFn > 7bc.C.O 2> 7bc.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7bc.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7bc.C.O $srcdir/ttb3-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7bc.C"; fi;;
+ 1) $echo "Test 7bc.C failed: files 7bc.C.O and $srcdir/ttb3-FF differ" 1>&2
+ (diff -c 7bc.C.O $srcdir/ttb3-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7bc.C may have failed." 1>&2
+ $echo The command "cmp 7bc.C.O $srcdir/ttb3-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7bc.C.E || rm -f 7bc.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 -l 17 -f $srcdir/tFFt-bl > 9a.O 2> 9a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9a.O $srcdir/nl17f-bl > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9a"; fi;;
+ 1) $echo "Test 9a failed: files 9a.O and $srcdir/nl17f-bl differ" 1>&2
+ (diff -c 9a.O $srcdir/nl17f-bl) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9a may have failed." 1>&2
+ $echo The command "cmp 9a.O $srcdir/nl17f-bl" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9a.E || rm -f 9a.E
+$xx --date-format="-- Date/Time --" -h x -n.3 -N 15 -l 17 -f $srcdir/tFFt-bl > 9b.O 2> 9b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9b.O $srcdir/nN15l17f-bl > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9b"; fi;;
+ 1) $echo "Test 9b failed: files 9b.O and $srcdir/nN15l17f-bl differ" 1>&2
+ (diff -c 9b.O $srcdir/nN15l17f-bl) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9b may have failed." 1>&2
+ $echo The command "cmp 9b.O $srcdir/nN15l17f-bl" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9b.E || rm -f 9b.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +2 -l 17 -f $srcdir/tFFt-bl > 9Pa.O 2> 9Pa.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pa failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pa.O $srcdir/n+2l17f-bl > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pa"; fi;;
+ 1) $echo "Test 9Pa failed: files 9Pa.O and $srcdir/n+2l17f-bl differ" 1>&2
+ (diff -c 9Pa.O $srcdir/n+2l17f-bl) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pa may have failed." 1>&2
+ $echo The command "cmp 9Pa.O $srcdir/n+2l17f-bl" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pa.E || rm -f 9Pa.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +3 -l 17 -f $srcdir/tFFt-bl > 9Pb.O 2> 9Pb.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pb failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pb.O $srcdir/n+3l17f-bl > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pb"; fi;;
+ 1) $echo "Test 9Pb failed: files 9Pb.O and $srcdir/n+3l17f-bl differ" 1>&2
+ (diff -c 9Pb.O $srcdir/n+3l17f-bl) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pb may have failed." 1>&2
+ $echo The command "cmp 9Pb.O $srcdir/n+3l17f-bl" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pb.E || rm -f 9Pb.E
+$xx --date-format="-- Date/Time --" -h x -n.3 -N 1 +3 -l 17 -f $srcdir/tFFt-bl > 9Pc.O 2> 9Pc.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pc failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pc.O $srcdir/nN1+3l17f-bl > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pc"; fi;;
+ 1) $echo "Test 9Pc failed: files 9Pc.O and $srcdir/nN1+3l17f-bl differ" 1>&2
+ (diff -c 9Pc.O $srcdir/nN1+3l17f-bl) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pc may have failed." 1>&2
+ $echo The command "cmp 9Pc.O $srcdir/nN1+3l17f-bl" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pc.E || rm -f 9Pc.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +2 -l 17 -f $srcdir/0FFt > 9Pe.O 2> 9Pe.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pe failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pe.O $srcdir/n+2l17f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pe"; fi;;
+ 1) $echo "Test 9Pe failed: files 9Pe.O and $srcdir/n+2l17f-0FF differ" 1>&2
+ (diff -c 9Pe.O $srcdir/n+2l17f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pe may have failed." 1>&2
+ $echo The command "cmp 9Pe.O $srcdir/n+2l17f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pe.E || rm -f 9Pe.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +2 -l 17 -f $srcdir/0FFnt > 9Pf.O 2> 9Pf.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pf failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pf.O $srcdir/n+2l17f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pf"; fi;;
+ 1) $echo "Test 9Pf failed: files 9Pf.O and $srcdir/n+2l17f-0FF differ" 1>&2
+ (diff -c 9Pf.O $srcdir/n+2l17f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pf may have failed." 1>&2
+ $echo The command "cmp 9Pf.O $srcdir/n+2l17f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pf.E || rm -f 9Pf.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +2 -l 17 -f $srcdir/0FnFt > 9Pg.O 2> 9Pg.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pg failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pg.O $srcdir/n+2l17f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pg"; fi;;
+ 1) $echo "Test 9Pg failed: files 9Pg.O and $srcdir/n+2l17f-0FF differ" 1>&2
+ (diff -c 9Pg.O $srcdir/n+2l17f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pg may have failed." 1>&2
+ $echo The command "cmp 9Pg.O $srcdir/n+2l17f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pg.E || rm -f 9Pg.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +2 -l 17 -f $srcdir/0FnFnt > 9Ph.O 2> 9Ph.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Ph failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Ph.O $srcdir/n+2l17f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Ph"; fi;;
+ 1) $echo "Test 9Ph failed: files 9Ph.O and $srcdir/n+2l17f-0FF differ" 1>&2
+ (diff -c 9Ph.O $srcdir/n+2l17f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Ph may have failed." 1>&2
+ $echo The command "cmp 9Ph.O $srcdir/n+2l17f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Ph.E || rm -f 9Ph.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +2:5 -l 17 -f $srcdir/0FFt > 9Pi.O 2> 9Pi.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pi failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pi.O $srcdir/n+2-5l17f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pi"; fi;;
+ 1) $echo "Test 9Pi failed: files 9Pi.O and $srcdir/n+2-5l17f-0FF differ" 1>&2
+ (diff -c 9Pi.O $srcdir/n+2-5l17f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pi may have failed." 1>&2
+ $echo The command "cmp 9Pi.O $srcdir/n+2-5l17f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pi.E || rm -f 9Pi.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +3 -l 17 -f $srcdir/0FFt > 9Pj.O 2> 9Pj.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pj failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pj.O $srcdir/n+3l17f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pj"; fi;;
+ 1) $echo "Test 9Pj failed: files 9Pj.O and $srcdir/n+3l17f-0FF differ" 1>&2
+ (diff -c 9Pj.O $srcdir/n+3l17f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pj may have failed." 1>&2
+ $echo The command "cmp 9Pj.O $srcdir/n+3l17f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pj.E || rm -f 9Pj.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +3 -l 17 -f $srcdir/0FFnt > 9Pk.O 2> 9Pk.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pk failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pk.O $srcdir/n+3l17f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pk"; fi;;
+ 1) $echo "Test 9Pk failed: files 9Pk.O and $srcdir/n+3l17f-0FF differ" 1>&2
+ (diff -c 9Pk.O $srcdir/n+3l17f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pk may have failed." 1>&2
+ $echo The command "cmp 9Pk.O $srcdir/n+3l17f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pk.E || rm -f 9Pk.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +3 -l 17 -f $srcdir/0FnFt > 9Pl.O 2> 9Pl.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pl failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pl.O $srcdir/n+3l17f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pl"; fi;;
+ 1) $echo "Test 9Pl failed: files 9Pl.O and $srcdir/n+3l17f-0FF differ" 1>&2
+ (diff -c 9Pl.O $srcdir/n+3l17f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pl may have failed." 1>&2
+ $echo The command "cmp 9Pl.O $srcdir/n+3l17f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pl.E || rm -f 9Pl.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +3 -l 17 -f $srcdir/0FnFnt > 9Pm.O 2> 9Pm.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pm failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pm.O $srcdir/n+3l17f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pm"; fi;;
+ 1) $echo "Test 9Pm failed: files 9Pm.O and $srcdir/n+3l17f-0FF differ" 1>&2
+ (diff -c 9Pm.O $srcdir/n+3l17f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pm may have failed." 1>&2
+ $echo The command "cmp 9Pm.O $srcdir/n+3l17f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pm.E || rm -f 9Pm.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +7 -l 24 $srcdir/FFn > 9Pn.O 2> 9Pn.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pn failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pn.O $srcdir/n+7l24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pn"; fi;;
+ 1) $echo "Test 9Pn failed: files 9Pn.O and $srcdir/n+7l24-FF differ" 1>&2
+ (diff -c 9Pn.O $srcdir/n+7l24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pn may have failed." 1>&2
+ $echo The command "cmp 9Pn.O $srcdir/n+7l24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pn.E || rm -f 9Pn.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +7 -l 24 $srcdir/FFtn > 9Po.O 2> 9Po.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Po failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Po.O $srcdir/n+7l24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Po"; fi;;
+ 1) $echo "Test 9Po failed: files 9Po.O and $srcdir/n+7l24-FF differ" 1>&2
+ (diff -c 9Po.O $srcdir/n+7l24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Po may have failed." 1>&2
+ $echo The command "cmp 9Po.O $srcdir/n+7l24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Po.E || rm -f 9Po.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +7 -l 24 $srcdir/FnFn > 9Pp.O 2> 9Pp.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pp failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pp.O $srcdir/n+7l24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pp"; fi;;
+ 1) $echo "Test 9Pp failed: files 9Pp.O and $srcdir/n+7l24-FF differ" 1>&2
+ (diff -c 9Pp.O $srcdir/n+7l24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pp may have failed." 1>&2
+ $echo The command "cmp 9Pp.O $srcdir/n+7l24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pp.E || rm -f 9Pp.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +3:7 -l 24 $srcdir/FnFn > 9Pq.O 2> 9Pq.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pq failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pq.O $srcdir/n+3-7l24-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pq"; fi;;
+ 1) $echo "Test 9Pq failed: files 9Pq.O and $srcdir/n+3-7l24-FF differ" 1>&2
+ (diff -c 9Pq.O $srcdir/n+3-7l24-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pq may have failed." 1>&2
+ $echo The command "cmp 9Pq.O $srcdir/n+3-7l24-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pq.E || rm -f 9Pq.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +8 -l 20 $srcdir/tFFn > 9Pr.O 2> 9Pr.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pr failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pr.O $srcdir/n+8l20-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pr"; fi;;
+ 1) $echo "Test 9Pr failed: files 9Pr.O and $srcdir/n+8l20-FF differ" 1>&2
+ (diff -c 9Pr.O $srcdir/n+8l20-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pr may have failed." 1>&2
+ $echo The command "cmp 9Pr.O $srcdir/n+8l20-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pr.E || rm -f 9Pr.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +8 -l 20 $srcdir/tFnFt > 9Ps.O 2> 9Ps.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Ps failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Ps.O $srcdir/n+8l20-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Ps"; fi;;
+ 1) $echo "Test 9Ps failed: files 9Ps.O and $srcdir/n+8l20-FF differ" 1>&2
+ (diff -c 9Ps.O $srcdir/n+8l20-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Ps may have failed." 1>&2
+ $echo The command "cmp 9Ps.O $srcdir/n+8l20-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Ps.E || rm -f 9Ps.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +8 -l 20 $srcdir/tFFt > 9Pt.O 2> 9Pt.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pt failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pt.O $srcdir/n+8l20-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pt"; fi;;
+ 1) $echo "Test 9Pt failed: files 9Pt.O and $srcdir/n+8l20-FF differ" 1>&2
+ (diff -c 9Pt.O $srcdir/n+8l20-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pt may have failed." 1>&2
+ $echo The command "cmp 9Pt.O $srcdir/n+8l20-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pt.E || rm -f 9Pt.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +5 -a -3 -l 6 -f $srcdir/0FFt > 9Paa.O 2> 9Paa.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Paa failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Paa.O $srcdir/n+5a3l6f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Paa"; fi;;
+ 1) $echo "Test 9Paa failed: files 9Paa.O and $srcdir/n+5a3l6f-0FF differ" 1>&2
+ (diff -c 9Paa.O $srcdir/n+5a3l6f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Paa may have failed." 1>&2
+ $echo The command "cmp 9Paa.O $srcdir/n+5a3l6f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Paa.E || rm -f 9Paa.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +5 -a --columns=3 -l 6 -f $srcdir/0FFt > 9Paa.C.O 2> 9Paa.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Paa.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Paa.C.O $srcdir/n+5a3l6f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Paa.C"; fi;;
+ 1) $echo "Test 9Paa.C failed: files 9Paa.C.O and $srcdir/n+5a3l6f-0FF differ" 1>&2
+ (diff -c 9Paa.C.O $srcdir/n+5a3l6f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Paa.C may have failed." 1>&2
+ $echo The command "cmp 9Paa.C.O $srcdir/n+5a3l6f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Paa.C.E || rm -f 9Paa.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +5 -a -3 -l 6 -f $srcdir/0FFnt > 9Pab.O 2> 9Pab.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pab failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pab.O $srcdir/n+5a3l6f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pab"; fi;;
+ 1) $echo "Test 9Pab failed: files 9Pab.O and $srcdir/n+5a3l6f-0FF differ" 1>&2
+ (diff -c 9Pab.O $srcdir/n+5a3l6f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pab may have failed." 1>&2
+ $echo The command "cmp 9Pab.O $srcdir/n+5a3l6f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pab.E || rm -f 9Pab.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +5 -a --columns=3 -l 6 -f $srcdir/0FFnt > 9Pab.C.O 2> 9Pab.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pab.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pab.C.O $srcdir/n+5a3l6f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pab.C"; fi;;
+ 1) $echo "Test 9Pab.C failed: files 9Pab.C.O and $srcdir/n+5a3l6f-0FF differ" 1>&2
+ (diff -c 9Pab.C.O $srcdir/n+5a3l6f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pab.C may have failed." 1>&2
+ $echo The command "cmp 9Pab.C.O $srcdir/n+5a3l6f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pab.C.E || rm -f 9Pab.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +5 -a -3 -l 6 -f $srcdir/0FnFt > 9Pac.O 2> 9Pac.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pac failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pac.O $srcdir/n+5a3l6f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pac"; fi;;
+ 1) $echo "Test 9Pac failed: files 9Pac.O and $srcdir/n+5a3l6f-0FF differ" 1>&2
+ (diff -c 9Pac.O $srcdir/n+5a3l6f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pac may have failed." 1>&2
+ $echo The command "cmp 9Pac.O $srcdir/n+5a3l6f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pac.E || rm -f 9Pac.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +5 -a --columns=3 -l 6 -f $srcdir/0FnFt > 9Pac.C.O 2> 9Pac.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pac.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pac.C.O $srcdir/n+5a3l6f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pac.C"; fi;;
+ 1) $echo "Test 9Pac.C failed: files 9Pac.C.O and $srcdir/n+5a3l6f-0FF differ" 1>&2
+ (diff -c 9Pac.C.O $srcdir/n+5a3l6f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pac.C may have failed." 1>&2
+ $echo The command "cmp 9Pac.C.O $srcdir/n+5a3l6f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pac.C.E || rm -f 9Pac.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +5 -a -3 -l 6 -f $srcdir/0FnFnt > 9Pad.O 2> 9Pad.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pad failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pad.O $srcdir/n+5a3l6f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pad"; fi;;
+ 1) $echo "Test 9Pad failed: files 9Pad.O and $srcdir/n+5a3l6f-0FF differ" 1>&2
+ (diff -c 9Pad.O $srcdir/n+5a3l6f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pad may have failed." 1>&2
+ $echo The command "cmp 9Pad.O $srcdir/n+5a3l6f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pad.E || rm -f 9Pad.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +5 -a --columns=3 -l 6 -f $srcdir/0FnFnt > 9Pad.C.O 2> 9Pad.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pad.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pad.C.O $srcdir/n+5a3l6f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pad.C"; fi;;
+ 1) $echo "Test 9Pad.C failed: files 9Pad.C.O and $srcdir/n+5a3l6f-0FF differ" 1>&2
+ (diff -c 9Pad.C.O $srcdir/n+5a3l6f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pad.C may have failed." 1>&2
+ $echo The command "cmp 9Pad.C.O $srcdir/n+5a3l6f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pad.C.E || rm -f 9Pad.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -a -2 -l 17 $srcdir/FFn > 9Pae.O 2> 9Pae.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pae failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pae.O $srcdir/n+6a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pae"; fi;;
+ 1) $echo "Test 9Pae failed: files 9Pae.O and $srcdir/n+6a2l17-FF differ" 1>&2
+ (diff -c 9Pae.O $srcdir/n+6a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pae may have failed." 1>&2
+ $echo The command "cmp 9Pae.O $srcdir/n+6a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pae.E || rm -f 9Pae.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -a --columns=2 -l 17 $srcdir/FFn > 9Pae.C.O 2> 9Pae.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pae.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pae.C.O $srcdir/n+6a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pae.C"; fi;;
+ 1) $echo "Test 9Pae.C failed: files 9Pae.C.O and $srcdir/n+6a2l17-FF differ" 1>&2
+ (diff -c 9Pae.C.O $srcdir/n+6a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pae.C may have failed." 1>&2
+ $echo The command "cmp 9Pae.C.O $srcdir/n+6a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pae.C.E || rm -f 9Pae.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -a -2 -l 17 $srcdir/FFtn > 9Paf.O 2> 9Paf.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Paf failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Paf.O $srcdir/n+6a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Paf"; fi;;
+ 1) $echo "Test 9Paf failed: files 9Paf.O and $srcdir/n+6a2l17-FF differ" 1>&2
+ (diff -c 9Paf.O $srcdir/n+6a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Paf may have failed." 1>&2
+ $echo The command "cmp 9Paf.O $srcdir/n+6a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Paf.E || rm -f 9Paf.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -a --columns=2 -l 17 $srcdir/FFtn > 9Paf.C.O 2> 9Paf.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Paf.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Paf.C.O $srcdir/n+6a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Paf.C"; fi;;
+ 1) $echo "Test 9Paf.C failed: files 9Paf.C.O and $srcdir/n+6a2l17-FF differ" 1>&2
+ (diff -c 9Paf.C.O $srcdir/n+6a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Paf.C may have failed." 1>&2
+ $echo The command "cmp 9Paf.C.O $srcdir/n+6a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Paf.C.E || rm -f 9Paf.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -a -2 -l 17 $srcdir/FnFn > 9Pag.O 2> 9Pag.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pag failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pag.O $srcdir/n+6a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pag"; fi;;
+ 1) $echo "Test 9Pag failed: files 9Pag.O and $srcdir/n+6a2l17-FF differ" 1>&2
+ (diff -c 9Pag.O $srcdir/n+6a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pag may have failed." 1>&2
+ $echo The command "cmp 9Pag.O $srcdir/n+6a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pag.E || rm -f 9Pag.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -a --columns=2 -l 17 $srcdir/FnFn > 9Pag.C.O 2> 9Pag.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pag.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pag.C.O $srcdir/n+6a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pag.C"; fi;;
+ 1) $echo "Test 9Pag.C failed: files 9Pag.C.O and $srcdir/n+6a2l17-FF differ" 1>&2
+ (diff -c 9Pag.C.O $srcdir/n+6a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pag.C may have failed." 1>&2
+ $echo The command "cmp 9Pag.C.O $srcdir/n+6a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pag.C.E || rm -f 9Pag.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -a -2 -l 17 $srcdir/tFFn > 9Pah.O 2> 9Pah.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pah failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pah.O $srcdir/n+6a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pah"; fi;;
+ 1) $echo "Test 9Pah failed: files 9Pah.O and $srcdir/n+6a2l17-FF differ" 1>&2
+ (diff -c 9Pah.O $srcdir/n+6a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pah may have failed." 1>&2
+ $echo The command "cmp 9Pah.O $srcdir/n+6a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pah.E || rm -f 9Pah.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -a --columns=2 -l 17 $srcdir/tFFn > 9Pah.C.O 2> 9Pah.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pah.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pah.C.O $srcdir/n+6a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pah.C"; fi;;
+ 1) $echo "Test 9Pah.C failed: files 9Pah.C.O and $srcdir/n+6a2l17-FF differ" 1>&2
+ (diff -c 9Pah.C.O $srcdir/n+6a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pah.C may have failed." 1>&2
+ $echo The command "cmp 9Pah.C.O $srcdir/n+6a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pah.C.E || rm -f 9Pah.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -a -2 -l 17 $srcdir/tFnFt > 9Pai.O 2> 9Pai.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pai failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pai.O $srcdir/n+6a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pai"; fi;;
+ 1) $echo "Test 9Pai failed: files 9Pai.O and $srcdir/n+6a2l17-FF differ" 1>&2
+ (diff -c 9Pai.O $srcdir/n+6a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pai may have failed." 1>&2
+ $echo The command "cmp 9Pai.O $srcdir/n+6a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pai.E || rm -f 9Pai.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -a --columns=2 -l 17 $srcdir/tFnFt > 9Pai.C.O 2> 9Pai.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pai.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pai.C.O $srcdir/n+6a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pai.C"; fi;;
+ 1) $echo "Test 9Pai.C failed: files 9Pai.C.O and $srcdir/n+6a2l17-FF differ" 1>&2
+ (diff -c 9Pai.C.O $srcdir/n+6a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pai.C may have failed." 1>&2
+ $echo The command "cmp 9Pai.C.O $srcdir/n+6a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pai.C.E || rm -f 9Pai.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -a -2 -l 17 $srcdir/tFFt > 9Paj.O 2> 9Paj.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Paj failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Paj.O $srcdir/n+6a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Paj"; fi;;
+ 1) $echo "Test 9Paj failed: files 9Paj.O and $srcdir/n+6a2l17-FF differ" 1>&2
+ (diff -c 9Paj.O $srcdir/n+6a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Paj may have failed." 1>&2
+ $echo The command "cmp 9Paj.O $srcdir/n+6a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Paj.E || rm -f 9Paj.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -a --columns=2 -l 17 $srcdir/tFFt > 9Paj.C.O 2> 9Paj.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Paj.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Paj.C.O $srcdir/n+6a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Paj.C"; fi;;
+ 1) $echo "Test 9Paj.C failed: files 9Paj.C.O and $srcdir/n+6a2l17-FF differ" 1>&2
+ (diff -c 9Paj.C.O $srcdir/n+6a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Paj.C may have failed." 1>&2
+ $echo The command "cmp 9Paj.C.O $srcdir/n+6a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Paj.C.E || rm -f 9Paj.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +4:8 -a -2 -l 17 $srcdir/tFFt > 9Pak.O 2> 9Pak.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pak failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pak.O $srcdir/n+4-8a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pak"; fi;;
+ 1) $echo "Test 9Pak failed: files 9Pak.O and $srcdir/n+4-8a2l17-FF differ" 1>&2
+ (diff -c 9Pak.O $srcdir/n+4-8a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pak may have failed." 1>&2
+ $echo The command "cmp 9Pak.O $srcdir/n+4-8a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pak.E || rm -f 9Pak.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +4:8 -a --columns=2 -l 17 $srcdir/tFFt > 9Pak.C.O 2> 9Pak.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pak.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pak.C.O $srcdir/n+4-8a2l17-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pak.C"; fi;;
+ 1) $echo "Test 9Pak.C failed: files 9Pak.C.O and $srcdir/n+4-8a2l17-FF differ" 1>&2
+ (diff -c 9Pak.C.O $srcdir/n+4-8a2l17-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pak.C may have failed." 1>&2
+ $echo The command "cmp 9Pak.C.O $srcdir/n+4-8a2l17-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pak.C.E || rm -f 9Pak.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +4 -b -2 -l 10 -f $srcdir/0FFt > 9Pba.O 2> 9Pba.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pba failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pba.O $srcdir/n+4b2l10f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pba"; fi;;
+ 1) $echo "Test 9Pba failed: files 9Pba.O and $srcdir/n+4b2l10f-0FF differ" 1>&2
+ (diff -c 9Pba.O $srcdir/n+4b2l10f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pba may have failed." 1>&2
+ $echo The command "cmp 9Pba.O $srcdir/n+4b2l10f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pba.E || rm -f 9Pba.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +4 -b --columns=2 -l 10 -f $srcdir/0FFt > 9Pba.C.O 2> 9Pba.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pba.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pba.C.O $srcdir/n+4b2l10f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pba.C"; fi;;
+ 1) $echo "Test 9Pba.C failed: files 9Pba.C.O and $srcdir/n+4b2l10f-0FF differ" 1>&2
+ (diff -c 9Pba.C.O $srcdir/n+4b2l10f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pba.C may have failed." 1>&2
+ $echo The command "cmp 9Pba.C.O $srcdir/n+4b2l10f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pba.C.E || rm -f 9Pba.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +4 -b -2 -l 10 -f $srcdir/0FFnt > 9Pbb.O 2> 9Pbb.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbb failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbb.O $srcdir/n+4b2l10f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbb"; fi;;
+ 1) $echo "Test 9Pbb failed: files 9Pbb.O and $srcdir/n+4b2l10f-0FF differ" 1>&2
+ (diff -c 9Pbb.O $srcdir/n+4b2l10f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbb may have failed." 1>&2
+ $echo The command "cmp 9Pbb.O $srcdir/n+4b2l10f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbb.E || rm -f 9Pbb.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +4 -b --columns=2 -l 10 -f $srcdir/0FFnt > 9Pbb.C.O 2> 9Pbb.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbb.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbb.C.O $srcdir/n+4b2l10f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbb.C"; fi;;
+ 1) $echo "Test 9Pbb.C failed: files 9Pbb.C.O and $srcdir/n+4b2l10f-0FF differ" 1>&2
+ (diff -c 9Pbb.C.O $srcdir/n+4b2l10f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbb.C may have failed." 1>&2
+ $echo The command "cmp 9Pbb.C.O $srcdir/n+4b2l10f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbb.C.E || rm -f 9Pbb.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +4 -b -2 -l 10 -f $srcdir/0FnFt > 9Pbc.O 2> 9Pbc.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbc failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbc.O $srcdir/n+4b2l10f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbc"; fi;;
+ 1) $echo "Test 9Pbc failed: files 9Pbc.O and $srcdir/n+4b2l10f-0FF differ" 1>&2
+ (diff -c 9Pbc.O $srcdir/n+4b2l10f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbc may have failed." 1>&2
+ $echo The command "cmp 9Pbc.O $srcdir/n+4b2l10f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbc.E || rm -f 9Pbc.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +4 -b --columns=2 -l 10 -f $srcdir/0FnFt > 9Pbc.C.O 2> 9Pbc.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbc.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbc.C.O $srcdir/n+4b2l10f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbc.C"; fi;;
+ 1) $echo "Test 9Pbc.C failed: files 9Pbc.C.O and $srcdir/n+4b2l10f-0FF differ" 1>&2
+ (diff -c 9Pbc.C.O $srcdir/n+4b2l10f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbc.C may have failed." 1>&2
+ $echo The command "cmp 9Pbc.C.O $srcdir/n+4b2l10f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbc.C.E || rm -f 9Pbc.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +4 -b -2 -l 10 -f $srcdir/0FnFnt > 9Pbd.O 2> 9Pbd.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbd failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbd.O $srcdir/n+4b2l10f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbd"; fi;;
+ 1) $echo "Test 9Pbd failed: files 9Pbd.O and $srcdir/n+4b2l10f-0FF differ" 1>&2
+ (diff -c 9Pbd.O $srcdir/n+4b2l10f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbd may have failed." 1>&2
+ $echo The command "cmp 9Pbd.O $srcdir/n+4b2l10f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbd.E || rm -f 9Pbd.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +4 -b --columns=2 -l 10 -f $srcdir/0FnFnt > 9Pbd.C.O 2> 9Pbd.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbd.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbd.C.O $srcdir/n+4b2l10f-0FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbd.C"; fi;;
+ 1) $echo "Test 9Pbd.C failed: files 9Pbd.C.O and $srcdir/n+4b2l10f-0FF differ" 1>&2
+ (diff -c 9Pbd.C.O $srcdir/n+4b2l10f-0FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbd.C may have failed." 1>&2
+ $echo The command "cmp 9Pbd.C.O $srcdir/n+4b2l10f-0FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbd.C.E || rm -f 9Pbd.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -b -3 -l 6 -f $srcdir/FFn > 9Pbe.O 2> 9Pbe.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbe failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbe.O $srcdir/n+6b3l6f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbe"; fi;;
+ 1) $echo "Test 9Pbe failed: files 9Pbe.O and $srcdir/n+6b3l6f-FF differ" 1>&2
+ (diff -c 9Pbe.O $srcdir/n+6b3l6f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbe may have failed." 1>&2
+ $echo The command "cmp 9Pbe.O $srcdir/n+6b3l6f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbe.E || rm -f 9Pbe.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -b --columns=3 -l 6 -f $srcdir/FFn > 9Pbe.C.O 2> 9Pbe.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbe.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbe.C.O $srcdir/n+6b3l6f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbe.C"; fi;;
+ 1) $echo "Test 9Pbe.C failed: files 9Pbe.C.O and $srcdir/n+6b3l6f-FF differ" 1>&2
+ (diff -c 9Pbe.C.O $srcdir/n+6b3l6f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbe.C may have failed." 1>&2
+ $echo The command "cmp 9Pbe.C.O $srcdir/n+6b3l6f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbe.C.E || rm -f 9Pbe.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -b -3 -l 6 -f $srcdir/FFtn > 9Pbf.O 2> 9Pbf.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbf failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbf.O $srcdir/n+6b3l6f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbf"; fi;;
+ 1) $echo "Test 9Pbf failed: files 9Pbf.O and $srcdir/n+6b3l6f-FF differ" 1>&2
+ (diff -c 9Pbf.O $srcdir/n+6b3l6f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbf may have failed." 1>&2
+ $echo The command "cmp 9Pbf.O $srcdir/n+6b3l6f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbf.E || rm -f 9Pbf.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -b --columns=3 -l 6 -f $srcdir/FFtn > 9Pbf.C.O 2> 9Pbf.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbf.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbf.C.O $srcdir/n+6b3l6f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbf.C"; fi;;
+ 1) $echo "Test 9Pbf.C failed: files 9Pbf.C.O and $srcdir/n+6b3l6f-FF differ" 1>&2
+ (diff -c 9Pbf.C.O $srcdir/n+6b3l6f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbf.C may have failed." 1>&2
+ $echo The command "cmp 9Pbf.C.O $srcdir/n+6b3l6f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbf.C.E || rm -f 9Pbf.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -b -3 -l 6 -f $srcdir/FnFn > 9Pbg.O 2> 9Pbg.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbg failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbg.O $srcdir/n+6b3l6f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbg"; fi;;
+ 1) $echo "Test 9Pbg failed: files 9Pbg.O and $srcdir/n+6b3l6f-FF differ" 1>&2
+ (diff -c 9Pbg.O $srcdir/n+6b3l6f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbg may have failed." 1>&2
+ $echo The command "cmp 9Pbg.O $srcdir/n+6b3l6f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbg.E || rm -f 9Pbg.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -b --columns=3 -l 6 -f $srcdir/FnFn > 9Pbg.C.O 2> 9Pbg.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbg.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbg.C.O $srcdir/n+6b3l6f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbg.C"; fi;;
+ 1) $echo "Test 9Pbg.C failed: files 9Pbg.C.O and $srcdir/n+6b3l6f-FF differ" 1>&2
+ (diff -c 9Pbg.C.O $srcdir/n+6b3l6f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbg.C may have failed." 1>&2
+ $echo The command "cmp 9Pbg.C.O $srcdir/n+6b3l6f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbg.C.E || rm -f 9Pbg.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -b -3 -l 6 -f $srcdir/tFFn > 9Pbh.O 2> 9Pbh.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbh failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbh.O $srcdir/n+6b3l6f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbh"; fi;;
+ 1) $echo "Test 9Pbh failed: files 9Pbh.O and $srcdir/n+6b3l6f-FF differ" 1>&2
+ (diff -c 9Pbh.O $srcdir/n+6b3l6f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbh may have failed." 1>&2
+ $echo The command "cmp 9Pbh.O $srcdir/n+6b3l6f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbh.E || rm -f 9Pbh.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -b --columns=3 -l 6 -f $srcdir/tFFn > 9Pbh.C.O 2> 9Pbh.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbh.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbh.C.O $srcdir/n+6b3l6f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbh.C"; fi;;
+ 1) $echo "Test 9Pbh.C failed: files 9Pbh.C.O and $srcdir/n+6b3l6f-FF differ" 1>&2
+ (diff -c 9Pbh.C.O $srcdir/n+6b3l6f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbh.C may have failed." 1>&2
+ $echo The command "cmp 9Pbh.C.O $srcdir/n+6b3l6f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbh.C.E || rm -f 9Pbh.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -b -3 -l 6 -f $srcdir/tFnFt > 9Pbi.O 2> 9Pbi.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbi failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbi.O $srcdir/n+6b3l6f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbi"; fi;;
+ 1) $echo "Test 9Pbi failed: files 9Pbi.O and $srcdir/n+6b3l6f-FF differ" 1>&2
+ (diff -c 9Pbi.O $srcdir/n+6b3l6f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbi may have failed." 1>&2
+ $echo The command "cmp 9Pbi.O $srcdir/n+6b3l6f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbi.E || rm -f 9Pbi.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -b --columns=3 -l 6 -f $srcdir/tFnFt > 9Pbi.C.O 2> 9Pbi.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbi.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbi.C.O $srcdir/n+6b3l6f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbi.C"; fi;;
+ 1) $echo "Test 9Pbi.C failed: files 9Pbi.C.O and $srcdir/n+6b3l6f-FF differ" 1>&2
+ (diff -c 9Pbi.C.O $srcdir/n+6b3l6f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbi.C may have failed." 1>&2
+ $echo The command "cmp 9Pbi.C.O $srcdir/n+6b3l6f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbi.C.E || rm -f 9Pbi.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -b -3 -l 6 -f $srcdir/tFFt > 9Pbj.O 2> 9Pbj.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbj failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbj.O $srcdir/n+6b3l6f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbj"; fi;;
+ 1) $echo "Test 9Pbj failed: files 9Pbj.O and $srcdir/n+6b3l6f-FF differ" 1>&2
+ (diff -c 9Pbj.O $srcdir/n+6b3l6f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbj may have failed." 1>&2
+ $echo The command "cmp 9Pbj.O $srcdir/n+6b3l6f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbj.E || rm -f 9Pbj.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +6 -b --columns=3 -l 6 -f $srcdir/tFFt > 9Pbj.C.O 2> 9Pbj.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbj.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbj.C.O $srcdir/n+6b3l6f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbj.C"; fi;;
+ 1) $echo "Test 9Pbj.C failed: files 9Pbj.C.O and $srcdir/n+6b3l6f-FF differ" 1>&2
+ (diff -c 9Pbj.C.O $srcdir/n+6b3l6f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbj.C may have failed." 1>&2
+ $echo The command "cmp 9Pbj.C.O $srcdir/n+6b3l6f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbj.C.E || rm -f 9Pbj.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +5:8 -b -3 -l 10 -f $srcdir/FnFn > 9Pbk.O 2> 9Pbk.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbk failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbk.O $srcdir/n+5-8b3l10f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbk"; fi;;
+ 1) $echo "Test 9Pbk failed: files 9Pbk.O and $srcdir/n+5-8b3l10f-FF differ" 1>&2
+ (diff -c 9Pbk.O $srcdir/n+5-8b3l10f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbk may have failed." 1>&2
+ $echo The command "cmp 9Pbk.O $srcdir/n+5-8b3l10f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbk.E || rm -f 9Pbk.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +5:8 -b --columns=3 -l 10 -f $srcdir/FnFn > 9Pbk.C.O 2> 9Pbk.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pbk.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pbk.C.O $srcdir/n+5-8b3l10f-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pbk.C"; fi;;
+ 1) $echo "Test 9Pbk.C failed: files 9Pbk.C.O and $srcdir/n+5-8b3l10f-FF differ" 1>&2
+ (diff -c 9Pbk.C.O $srcdir/n+5-8b3l10f-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pbk.C may have failed." 1>&2
+ $echo The command "cmp 9Pbk.C.O $srcdir/n+5-8b3l10f-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pbk.C.E || rm -f 9Pbk.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +3 -m -l 13 -f $srcdir/tFFt-bl $srcdir/FnFn > 9Pma.O 2> 9Pma.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pma failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pma.O $srcdir/n+3ml13f-bl-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pma"; fi;;
+ 1) $echo "Test 9Pma failed: files 9Pma.O and $srcdir/n+3ml13f-bl-FF differ" 1>&2
+ (diff -c 9Pma.O $srcdir/n+3ml13f-bl-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pma may have failed." 1>&2
+ $echo The command "cmp 9Pma.O $srcdir/n+3ml13f-bl-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pma.E || rm -f 9Pma.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +3 -m -l 17 -f $srcdir/tFFt-bl $srcdir/tn > 9Pmb.O 2> 9Pmb.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pmb failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pmb.O $srcdir/n+3ml17f-bl-tn > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pmb"; fi;;
+ 1) $echo "Test 9Pmb failed: files 9Pmb.O and $srcdir/n+3ml17f-bl-tn differ" 1>&2
+ (diff -c 9Pmb.O $srcdir/n+3ml17f-bl-tn) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pmb may have failed." 1>&2
+ $echo The command "cmp 9Pmb.O $srcdir/n+3ml17f-bl-tn" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pmb.E || rm -f 9Pmb.E
+$xx --date-format="-- Date/Time --" -h x -n.3 +3 -m -l 17 -f $srcdir/tn $srcdir/tFFt-bl > 9Pmc.O 2> 9Pmc.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9Pmc failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9Pmc.O $srcdir/n+3ml17f-tn-bl > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9Pmc"; fi;;
+ 1) $echo "Test 9Pmc failed: files 9Pmc.O and $srcdir/n+3ml17f-tn-bl differ" 1>&2
+ (diff -c 9Pmc.O $srcdir/n+3ml17f-tn-bl) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9Pmc may have failed." 1>&2
+ $echo The command "cmp 9Pmc.O $srcdir/n+3ml17f-tn-bl" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9Pmc.E || rm -f 9Pmc.E
+$xx --date-format="-- Date/Time --" -h x -W 72 -J -l17 -f $srcdir/tFFt-ll > 10wa.O 2> 10wa.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10wa failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10wa.O $srcdir/W72Jl17f-ll > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10wa"; fi;;
+ 1) $echo "Test 10wa failed: files 10wa.O and $srcdir/W72Jl17f-ll differ" 1>&2
+ (diff -c 10wa.O $srcdir/W72Jl17f-ll) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10wa may have failed." 1>&2
+ $echo The command "cmp 10wa.O $srcdir/W72Jl17f-ll" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10wa.E || rm -f 10wa.E
+$xx --date-format="-- Date/Time --" -h x -w 72 -J -l17 -f $srcdir/tFFt-ll > 10wb.O 2> 10wb.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10wb failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10wb.O $srcdir/W72Jl17f-ll > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10wb"; fi;;
+ 1) $echo "Test 10wb failed: files 10wb.O and $srcdir/W72Jl17f-ll differ" 1>&2
+ (diff -c 10wb.O $srcdir/W72Jl17f-ll) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10wb may have failed." 1>&2
+ $echo The command "cmp 10wb.O $srcdir/W72Jl17f-ll" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10wb.E || rm -f 10wb.E
+$xx --date-format="-- Date/Time --" -h x -W 72 -l17 -f $srcdir/tFFt-ll > 10wc.O 2> 10wc.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10wc failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10wc.O $srcdir/W-72l17f-ll > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10wc"; fi;;
+ 1) $echo "Test 10wc failed: files 10wc.O and $srcdir/W-72l17f-ll differ" 1>&2
+ (diff -c 10wc.O $srcdir/W-72l17f-ll) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10wc may have failed." 1>&2
+ $echo The command "cmp 10wc.O $srcdir/W-72l17f-ll" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10wc.E || rm -f 10wc.E
+$xx --date-format="-- Date/Time --" -h x -w 72 -l17 -f $srcdir/tFFt-ll > 10wd.O 2> 10wd.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10wd failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10wd.O $srcdir/w72l17f-ll > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10wd"; fi;;
+ 1) $echo "Test 10wd failed: files 10wd.O and $srcdir/w72l17f-ll differ" 1>&2
+ (diff -c 10wd.O $srcdir/w72l17f-ll) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10wd may have failed." 1>&2
+ $echo The command "cmp 10wd.O $srcdir/w72l17f-ll" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10wd.E || rm -f 10wd.E
+$xx --date-format="-- Date/Time --" -h x -W 28 -l17 -f $srcdir/tFFt-ll > 10we.O 2> 10we.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10we failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10we.O $srcdir/W28l17f-ll > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10we"; fi;;
+ 1) $echo "Test 10we failed: files 10we.O and $srcdir/W28l17f-ll differ" 1>&2
+ (diff -c 10we.O $srcdir/W28l17f-ll) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10we may have failed." 1>&2
+ $echo The command "cmp 10we.O $srcdir/W28l17f-ll" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10we.E || rm -f 10we.E
+$xx --date-format="-- Date/Time --" -h x -W 27 -l17 -f $srcdir/tFFt-ll > 10wf.O 2> 10wf.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10wf failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10wf.O $srcdir/W27l17f-ll > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10wf"; fi;;
+ 1) $echo "Test 10wf failed: files 10wf.O and $srcdir/W27l17f-ll differ" 1>&2
+ (diff -c 10wf.O $srcdir/W27l17f-ll) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10wf may have failed." 1>&2
+ $echo The command "cmp 10wf.O $srcdir/W27l17f-ll" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10wf.E || rm -f 10wf.E
+$xx --date-format="-- Date/Time --" -h x -W 26 -l17 -f $srcdir/tFFt-ll > 10wg.O 2> 10wg.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10wg failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10wg.O $srcdir/W26l17f-ll > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10wg"; fi;;
+ 1) $echo "Test 10wg failed: files 10wg.O and $srcdir/W26l17f-ll differ" 1>&2
+ (diff -c 10wg.O $srcdir/W26l17f-ll) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10wg may have failed." 1>&2
+ $echo The command "cmp 10wg.O $srcdir/W26l17f-ll" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10wg.E || rm -f 10wg.E
+$xx --date-format="-- Date/Time --" -h x -W 20 -l17 -f $srcdir/tFFt-ll > 10wh.O 2> 10wh.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10wh failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10wh.O $srcdir/W20l17f-ll > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10wh"; fi;;
+ 1) $echo "Test 10wh failed: files 10wh.O and $srcdir/W20l17f-ll differ" 1>&2
+ (diff -c 10wh.O $srcdir/W20l17f-ll) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10wh may have failed." 1>&2
+ $echo The command "cmp 10wh.O $srcdir/W20l17f-ll" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10wh.E || rm -f 10wh.E
+$xx --date-format="-- Date/Time --" -h x -m -l 17 -f $srcdir/tFFt-lm $srcdir/loli > 10ma.O 2> 10ma.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10ma failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10ma.O $srcdir/ml17f-lm-lo > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10ma"; fi;;
+ 1) $echo "Test 10ma failed: files 10ma.O and $srcdir/ml17f-lm-lo differ" 1>&2
+ (diff -c 10ma.O $srcdir/ml17f-lm-lo) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10ma may have failed." 1>&2
+ $echo The command "cmp 10ma.O $srcdir/ml17f-lm-lo" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10ma.E || rm -f 10ma.E
+$xx --date-format="-- Date/Time --" -h x -W 35 -m -l 17 -f $srcdir/tFFt-lm $srcdir/loli > 10mb.O 2> 10mb.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10mb failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10mb.O $srcdir/W35ml17f-lm-lo > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10mb"; fi;;
+ 1) $echo "Test 10mb failed: files 10mb.O and $srcdir/W35ml17f-lm-lo differ" 1>&2
+ (diff -c 10mb.O $srcdir/W35ml17f-lm-lo) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10mb may have failed." 1>&2
+ $echo The command "cmp 10mb.O $srcdir/W35ml17f-lm-lo" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10mb.E || rm -f 10mb.E
+$xx --date-format="-- Date/Time --" -h x -w 35 -m -l 17 -f $srcdir/tFFt-lm $srcdir/loli > 10mc.O 2> 10mc.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10mc failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10mc.O $srcdir/W35ml17f-lm-lo > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10mc"; fi;;
+ 1) $echo "Test 10mc failed: files 10mc.O and $srcdir/W35ml17f-lm-lo differ" 1>&2
+ (diff -c 10mc.O $srcdir/W35ml17f-lm-lo) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10mc may have failed." 1>&2
+ $echo The command "cmp 10mc.O $srcdir/W35ml17f-lm-lo" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10mc.E || rm -f 10mc.E
+$xx --date-format="-- Date/Time --" -h x -J -m -l 17 -f $srcdir/tFFt-lm $srcdir/loli > 10md.O 2> 10md.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10md failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10md.O $srcdir/Jml17f-lm-lo > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10md"; fi;;
+ 1) $echo "Test 10md failed: files 10md.O and $srcdir/Jml17f-lm-lo differ" 1>&2
+ (diff -c 10md.O $srcdir/Jml17f-lm-lo) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10md may have failed." 1>&2
+ $echo The command "cmp 10md.O $srcdir/Jml17f-lm-lo" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10md.E || rm -f 10md.E
+$xx --date-format="-- Date/Time --" -h x -W 35 -J -m -l 17 -f $srcdir/tFFt-lm $srcdir/loli > 10me.O 2> 10me.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10me failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10me.O $srcdir/W35Jml17f-lmlo > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10me"; fi;;
+ 1) $echo "Test 10me failed: files 10me.O and $srcdir/W35Jml17f-lmlo differ" 1>&2
+ (diff -c 10me.O $srcdir/W35Jml17f-lmlo) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10me may have failed." 1>&2
+ $echo The command "cmp 10me.O $srcdir/W35Jml17f-lmlo" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10me.E || rm -f 10me.E
+$xx --date-format="-- Date/Time --" -h x -w 35 -J -m -l 17 -f $srcdir/tFFt-lm $srcdir/loli > 10mf.O 2> 10mf.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10mf failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10mf.O $srcdir/W35Jml17f-lmlo > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10mf"; fi;;
+ 1) $echo "Test 10mf failed: files 10mf.O and $srcdir/W35Jml17f-lmlo differ" 1>&2
+ (diff -c 10mf.O $srcdir/W35Jml17f-lmlo) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10mf may have failed." 1>&2
+ $echo The command "cmp 10mf.O $srcdir/W35Jml17f-lmlo" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10mf.E || rm -f 10mf.E
+$xx --date-format="-- Date/Time --" -h x -n.3 -J -m -l 17 -f $srcdir/tFFt-lm $srcdir/tFFt-lm $srcdir/loli > 10mg.O 2> 10mg.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10mg failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10mg.O $srcdir/nJml17f-lmlmlo > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10mg"; fi;;
+ 1) $echo "Test 10mg failed: files 10mg.O and $srcdir/nJml17f-lmlmlo differ" 1>&2
+ (diff -c 10mg.O $srcdir/nJml17f-lmlmlo) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10mg may have failed." 1>&2
+ $echo The command "cmp 10mg.O $srcdir/nJml17f-lmlmlo" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10mg.E || rm -f 10mg.E
+$xx --date-format="-- Date/Time --" -h x -n.3 -J -m -l 17 -f $srcdir/tFFt-lm $srcdir/loli $srcdir/tFFt-lm > 10mh.O 2> 10mh.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10mh failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10mh.O $srcdir/nJml17f-lmlolm > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10mh"; fi;;
+ 1) $echo "Test 10mh failed: files 10mh.O and $srcdir/nJml17f-lmlolm differ" 1>&2
+ (diff -c 10mh.O $srcdir/nJml17f-lmlolm) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10mh may have failed." 1>&2
+ $echo The command "cmp 10mh.O $srcdir/nJml17f-lmlolm" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10mh.E || rm -f 10mh.E
+$xx --date-format="-- Date/Time --" -h x -a -3 -l 17 -f $srcdir/tFFt-lm > 10aa.O 2> 10aa.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10aa failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10aa.O $srcdir/a3l17f-lm > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10aa"; fi;;
+ 1) $echo "Test 10aa failed: files 10aa.O and $srcdir/a3l17f-lm differ" 1>&2
+ (diff -c 10aa.O $srcdir/a3l17f-lm) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10aa may have failed." 1>&2
+ $echo The command "cmp 10aa.O $srcdir/a3l17f-lm" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10aa.E || rm -f 10aa.E
+$xx --date-format="-- Date/Time --" -h x -a --columns=3 -l 17 -f $srcdir/tFFt-lm > 10aa.C.O 2> 10aa.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10aa.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10aa.C.O $srcdir/a3l17f-lm > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10aa.C"; fi;;
+ 1) $echo "Test 10aa.C failed: files 10aa.C.O and $srcdir/a3l17f-lm differ" 1>&2
+ (diff -c 10aa.C.O $srcdir/a3l17f-lm) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10aa.C may have failed." 1>&2
+ $echo The command "cmp 10aa.C.O $srcdir/a3l17f-lm" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10aa.C.E || rm -f 10aa.C.E
+$xx --date-format="-- Date/Time --" -h x -W 35 -a -3 -l 17 -f $srcdir/tFFt-lm > 10ab.O 2> 10ab.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10ab failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10ab.O $srcdir/W35a3l17f-lm > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10ab"; fi;;
+ 1) $echo "Test 10ab failed: files 10ab.O and $srcdir/W35a3l17f-lm differ" 1>&2
+ (diff -c 10ab.O $srcdir/W35a3l17f-lm) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10ab may have failed." 1>&2
+ $echo The command "cmp 10ab.O $srcdir/W35a3l17f-lm" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10ab.E || rm -f 10ab.E
+$xx --date-format="-- Date/Time --" -h x -W 35 -a --columns=3 -l 17 -f $srcdir/tFFt-lm > 10ab.C.O 2> 10ab.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10ab.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10ab.C.O $srcdir/W35a3l17f-lm > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10ab.C"; fi;;
+ 1) $echo "Test 10ab.C failed: files 10ab.C.O and $srcdir/W35a3l17f-lm differ" 1>&2
+ (diff -c 10ab.C.O $srcdir/W35a3l17f-lm) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10ab.C may have failed." 1>&2
+ $echo The command "cmp 10ab.C.O $srcdir/W35a3l17f-lm" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10ab.C.E || rm -f 10ab.C.E
+$xx --date-format="-- Date/Time --" -h x -J -a -3 -l 17 -f $srcdir/tFFt-lm > 10ac.O 2> 10ac.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10ac failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10ac.O $srcdir/Ja3l17f-lm > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10ac"; fi;;
+ 1) $echo "Test 10ac failed: files 10ac.O and $srcdir/Ja3l17f-lm differ" 1>&2
+ (diff -c 10ac.O $srcdir/Ja3l17f-lm) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10ac may have failed." 1>&2
+ $echo The command "cmp 10ac.O $srcdir/Ja3l17f-lm" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10ac.E || rm -f 10ac.E
+$xx --date-format="-- Date/Time --" -h x -J -a --columns=3 -l 17 -f $srcdir/tFFt-lm > 10ac.C.O 2> 10ac.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10ac.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10ac.C.O $srcdir/Ja3l17f-lm > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10ac.C"; fi;;
+ 1) $echo "Test 10ac.C failed: files 10ac.C.O and $srcdir/Ja3l17f-lm differ" 1>&2
+ (diff -c 10ac.C.O $srcdir/Ja3l17f-lm) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10ac.C may have failed." 1>&2
+ $echo The command "cmp 10ac.C.O $srcdir/Ja3l17f-lm" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10ac.C.E || rm -f 10ac.C.E
+$xx --date-format="-- Date/Time --" -h x -W 35 -J -a -3 -l 17 -f $srcdir/tFFt-lm > 10ad.O 2> 10ad.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10ad failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10ad.O $srcdir/W35Ja3l17f-lm > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10ad"; fi;;
+ 1) $echo "Test 10ad failed: files 10ad.O and $srcdir/W35Ja3l17f-lm differ" 1>&2
+ (diff -c 10ad.O $srcdir/W35Ja3l17f-lm) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10ad may have failed." 1>&2
+ $echo The command "cmp 10ad.O $srcdir/W35Ja3l17f-lm" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10ad.E || rm -f 10ad.E
+$xx --date-format="-- Date/Time --" -h x -W 35 -J -a --columns=3 -l 17 -f $srcdir/tFFt-lm > 10ad.C.O 2> 10ad.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10ad.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10ad.C.O $srcdir/W35Ja3l17f-lm > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10ad.C"; fi;;
+ 1) $echo "Test 10ad.C failed: files 10ad.C.O and $srcdir/W35Ja3l17f-lm differ" 1>&2
+ (diff -c 10ad.C.O $srcdir/W35Ja3l17f-lm) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10ad.C may have failed." 1>&2
+ $echo The command "cmp 10ad.C.O $srcdir/W35Ja3l17f-lm" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10ad.C.E || rm -f 10ad.C.E
+$xx --date-format="-- Date/Time --" -h x -b -3 -l 17 -f $srcdir/tFFt-lm > 10ba.O 2> 10ba.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10ba failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10ba.O $srcdir/b3l17f-lm > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10ba"; fi;;
+ 1) $echo "Test 10ba failed: files 10ba.O and $srcdir/b3l17f-lm differ" 1>&2
+ (diff -c 10ba.O $srcdir/b3l17f-lm) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10ba may have failed." 1>&2
+ $echo The command "cmp 10ba.O $srcdir/b3l17f-lm" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10ba.E || rm -f 10ba.E
+$xx --date-format="-- Date/Time --" -h x -b --columns=3 -l 17 -f $srcdir/tFFt-lm > 10ba.C.O 2> 10ba.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10ba.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10ba.C.O $srcdir/b3l17f-lm > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10ba.C"; fi;;
+ 1) $echo "Test 10ba.C failed: files 10ba.C.O and $srcdir/b3l17f-lm differ" 1>&2
+ (diff -c 10ba.C.O $srcdir/b3l17f-lm) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10ba.C may have failed." 1>&2
+ $echo The command "cmp 10ba.C.O $srcdir/b3l17f-lm" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10ba.C.E || rm -f 10ba.C.E
+$xx --date-format="-- Date/Time --" -h x -W 35 -b -3 -l 17 -f $srcdir/tFFt-lm > 10bb.O 2> 10bb.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10bb failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10bb.O $srcdir/W35b3l17f-lm > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10bb"; fi;;
+ 1) $echo "Test 10bb failed: files 10bb.O and $srcdir/W35b3l17f-lm differ" 1>&2
+ (diff -c 10bb.O $srcdir/W35b3l17f-lm) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10bb may have failed." 1>&2
+ $echo The command "cmp 10bb.O $srcdir/W35b3l17f-lm" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10bb.E || rm -f 10bb.E
+$xx --date-format="-- Date/Time --" -h x -W 35 -b --columns=3 -l 17 -f $srcdir/tFFt-lm > 10bb.C.O 2> 10bb.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10bb.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10bb.C.O $srcdir/W35b3l17f-lm > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10bb.C"; fi;;
+ 1) $echo "Test 10bb.C failed: files 10bb.C.O and $srcdir/W35b3l17f-lm differ" 1>&2
+ (diff -c 10bb.C.O $srcdir/W35b3l17f-lm) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10bb.C may have failed." 1>&2
+ $echo The command "cmp 10bb.C.O $srcdir/W35b3l17f-lm" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10bb.C.E || rm -f 10bb.C.E
+$xx --date-format="-- Date/Time --" -h x -J -b -3 -l 17 -f $srcdir/tFFt-lm > 10bc.O 2> 10bc.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10bc failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10bc.O $srcdir/Jb3l17f-lm > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10bc"; fi;;
+ 1) $echo "Test 10bc failed: files 10bc.O and $srcdir/Jb3l17f-lm differ" 1>&2
+ (diff -c 10bc.O $srcdir/Jb3l17f-lm) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10bc may have failed." 1>&2
+ $echo The command "cmp 10bc.O $srcdir/Jb3l17f-lm" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10bc.E || rm -f 10bc.E
+$xx --date-format="-- Date/Time --" -h x -J -b --columns=3 -l 17 -f $srcdir/tFFt-lm > 10bc.C.O 2> 10bc.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10bc.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10bc.C.O $srcdir/Jb3l17f-lm > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10bc.C"; fi;;
+ 1) $echo "Test 10bc.C failed: files 10bc.C.O and $srcdir/Jb3l17f-lm differ" 1>&2
+ (diff -c 10bc.C.O $srcdir/Jb3l17f-lm) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10bc.C may have failed." 1>&2
+ $echo The command "cmp 10bc.C.O $srcdir/Jb3l17f-lm" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10bc.C.E || rm -f 10bc.C.E
+$xx --date-format="-- Date/Time --" -h x -W 35 -J -b -3 -l 17 -f $srcdir/tFFt-lm > 10bd.O 2> 10bd.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10bd failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10bd.O $srcdir/W35Jb3l17f-lm > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10bd"; fi;;
+ 1) $echo "Test 10bd failed: files 10bd.O and $srcdir/W35Jb3l17f-lm differ" 1>&2
+ (diff -c 10bd.O $srcdir/W35Jb3l17f-lm) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10bd may have failed." 1>&2
+ $echo The command "cmp 10bd.O $srcdir/W35Jb3l17f-lm" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10bd.E || rm -f 10bd.E
+$xx --date-format="-- Date/Time --" -h x -W 35 -J -b --columns=3 -l 17 -f $srcdir/tFFt-lm > 10bd.C.O 2> 10bd.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10bd.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10bd.C.O $srcdir/W35Jb3l17f-lm > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10bd.C"; fi;;
+ 1) $echo "Test 10bd.C failed: files 10bd.C.O and $srcdir/W35Jb3l17f-lm differ" 1>&2
+ (diff -c 10bd.C.O $srcdir/W35Jb3l17f-lm) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10bd.C may have failed." 1>&2
+ $echo The command "cmp 10bd.C.O $srcdir/W35Jb3l17f-lm" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10bd.C.E || rm -f 10bd.C.E
+$xx --date-format="-- Date/Time --" -h x -n.3 -S:--: -m -l 13 -f $srcdir/tFFt-bl $srcdir/FnFn > 11sa.O 2> 11sa.E
+code=$?
+if test $code != 0; then
+ $echo "Test 11sa failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 11sa.O $srcdir/nSml13-bl-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 11sa"; fi;;
+ 1) $echo "Test 11sa failed: files 11sa.O and $srcdir/nSml13-bl-FF differ" 1>&2
+ (diff -c 11sa.O $srcdir/nSml13-bl-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 11sa may have failed." 1>&2
+ $echo The command "cmp 11sa.O $srcdir/nSml13-bl-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 11sa.E || rm -f 11sa.E
+$xx --date-format="-- Date/Time --" -h x -n.3 -S:--: -m -l 17 -f $srcdir/tFFt-bl $srcdir/FnFn > 11sb.O 2> 11sb.E
+code=$?
+if test $code != 0; then
+ $echo "Test 11sb failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 11sb.O $srcdir/nSml17-bl-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 11sb"; fi;;
+ 1) $echo "Test 11sb failed: files 11sb.O and $srcdir/nSml17-bl-FF differ" 1>&2
+ (diff -c 11sb.O $srcdir/nSml17-bl-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 11sb may have failed." 1>&2
+ $echo The command "cmp 11sb.O $srcdir/nSml17-bl-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 11sb.E || rm -f 11sb.E
+$xx --date-format="-- Date/Time --" -h x -n.3 -S:--: -m -l 13 -f $srcdir/tn $srcdir/tn $srcdir/FnFn > 11se.O 2> 11se.E
+code=$?
+if test $code != 0; then
+ $echo "Test 11se failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 11se.O $srcdir/nSml13-t-t-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 11se"; fi;;
+ 1) $echo "Test 11se failed: files 11se.O and $srcdir/nSml13-t-t-FF differ" 1>&2
+ (diff -c 11se.O $srcdir/nSml13-t-t-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 11se may have failed." 1>&2
+ $echo The command "cmp 11se.O $srcdir/nSml13-t-t-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 11se.E || rm -f 11se.E
+$xx --date-format="-- Date/Time --" -h x -n.3 -S:--: -m -l 17 -f $srcdir/tn $srcdir/tn $srcdir/FnFn > 11sf.O 2> 11sf.E
+code=$?
+if test $code != 0; then
+ $echo "Test 11sf failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 11sf.O $srcdir/nSml17-t-t-FF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 11sf"; fi;;
+ 1) $echo "Test 11sf failed: files 11sf.O and $srcdir/nSml17-t-t-FF differ" 1>&2
+ (diff -c 11sf.O $srcdir/nSml17-t-t-FF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 11sf may have failed." 1>&2
+ $echo The command "cmp 11sf.O $srcdir/nSml17-t-t-FF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 11sf.E || rm -f 11sf.E
+$xx --date-format="-- Date/Time --" -h x -n.3 -S:--: -m -l 13 -f $srcdir/tn $srcdir/tn $srcdir/FnFn $srcdir/FnFn > 11sg.O 2> 11sg.E
+code=$?
+if test $code != 0; then
+ $echo "Test 11sg failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 11sg.O $srcdir/nSml13-t-tFFFF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 11sg"; fi;;
+ 1) $echo "Test 11sg failed: files 11sg.O and $srcdir/nSml13-t-tFFFF differ" 1>&2
+ (diff -c 11sg.O $srcdir/nSml13-t-tFFFF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 11sg may have failed." 1>&2
+ $echo The command "cmp 11sg.O $srcdir/nSml13-t-tFFFF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 11sg.E || rm -f 11sg.E
+$xx --date-format="-- Date/Time --" -h x -n.3 -S:--: -m -l 17 -f $srcdir/tn $srcdir/tn $srcdir/FnFn $srcdir/FnFn > 11sh.O 2> 11sh.E
+code=$?
+if test $code != 0; then
+ $echo "Test 11sh failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 11sh.O $srcdir/nSml17-t-tFFFF > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 11sh"; fi;;
+ 1) $echo "Test 11sh failed: files 11sh.O and $srcdir/nSml17-t-tFFFF differ" 1>&2
+ (diff -c 11sh.O $srcdir/nSml17-t-tFFFF) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 11sh may have failed." 1>&2
+ $echo The command "cmp 11sh.O $srcdir/nSml17-t-tFFFF" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 11sh.E || rm -f 11sh.E
+$xx --date-format="-- Date/Time --" -h x -o3 -a -3 -l17 -f $srcdir/tn > 12aa.O 2> 12aa.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12aa failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12aa.O $srcdir/o3a3l17f-tn > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12aa"; fi;;
+ 1) $echo "Test 12aa failed: files 12aa.O and $srcdir/o3a3l17f-tn differ" 1>&2
+ (diff -c 12aa.O $srcdir/o3a3l17f-tn) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12aa may have failed." 1>&2
+ $echo The command "cmp 12aa.O $srcdir/o3a3l17f-tn" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12aa.E || rm -f 12aa.E
+$xx --date-format="-- Date/Time --" -h x -o3 -a --columns=3 -l17 -f $srcdir/tn > 12aa.C.O 2> 12aa.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12aa.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12aa.C.O $srcdir/o3a3l17f-tn > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12aa.C"; fi;;
+ 1) $echo "Test 12aa.C failed: files 12aa.C.O and $srcdir/o3a3l17f-tn differ" 1>&2
+ (diff -c 12aa.C.O $srcdir/o3a3l17f-tn) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12aa.C may have failed." 1>&2
+ $echo The command "cmp 12aa.C.O $srcdir/o3a3l17f-tn" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12aa.C.E || rm -f 12aa.C.E
+$xx --date-format="-- Date/Time --" -h x -o3 -a -3 -S:--: -l17 -f $srcdir/tn > 12ab.O 2> 12ab.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12ab failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12ab.O $srcdir/o3a3Sl17f-tn > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12ab"; fi;;
+ 1) $echo "Test 12ab failed: files 12ab.O and $srcdir/o3a3Sl17f-tn differ" 1>&2
+ (diff -c 12ab.O $srcdir/o3a3Sl17f-tn) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12ab may have failed." 1>&2
+ $echo The command "cmp 12ab.O $srcdir/o3a3Sl17f-tn" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12ab.E || rm -f 12ab.E
+$xx --date-format="-- Date/Time --" -h x -o3 -a --columns=3 -S:--: -l17 -f $srcdir/tn > 12ab.C.O 2> 12ab.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12ab.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12ab.C.O $srcdir/o3a3Sl17f-tn > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12ab.C"; fi;;
+ 1) $echo "Test 12ab.C failed: files 12ab.C.O and $srcdir/o3a3Sl17f-tn differ" 1>&2
+ (diff -c 12ab.C.O $srcdir/o3a3Sl17f-tn) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12ab.C may have failed." 1>&2
+ $echo The command "cmp 12ab.C.O $srcdir/o3a3Sl17f-tn" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12ab.C.E || rm -f 12ab.C.E
+$xx --date-format="-- Date/Time --" -h x -o3 -a -3 -S:--: -n. -l17 -f $srcdir/tn > 12ac.O 2> 12ac.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12ac failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12ac.O $srcdir/o3a3Snl17f-tn > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12ac"; fi;;
+ 1) $echo "Test 12ac failed: files 12ac.O and $srcdir/o3a3Snl17f-tn differ" 1>&2
+ (diff -c 12ac.O $srcdir/o3a3Snl17f-tn) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12ac may have failed." 1>&2
+ $echo The command "cmp 12ac.O $srcdir/o3a3Snl17f-tn" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12ac.E || rm -f 12ac.E
+$xx --date-format="-- Date/Time --" -h x -o3 -a --columns=3 -S:--: -n. -l17 -f $srcdir/tn > 12ac.C.O 2> 12ac.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12ac.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12ac.C.O $srcdir/o3a3Snl17f-tn > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12ac.C"; fi;;
+ 1) $echo "Test 12ac.C failed: files 12ac.C.O and $srcdir/o3a3Snl17f-tn differ" 1>&2
+ (diff -c 12ac.C.O $srcdir/o3a3Snl17f-tn) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12ac.C may have failed." 1>&2
+ $echo The command "cmp 12ac.C.O $srcdir/o3a3Snl17f-tn" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12ac.C.E || rm -f 12ac.C.E
+$xx --date-format="-- Date/Time --" -h x -o3 -b -3 -l17 -f $srcdir/tn > 12ba.O 2> 12ba.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12ba failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12ba.O $srcdir/o3b3l17f-tn > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12ba"; fi;;
+ 1) $echo "Test 12ba failed: files 12ba.O and $srcdir/o3b3l17f-tn differ" 1>&2
+ (diff -c 12ba.O $srcdir/o3b3l17f-tn) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12ba may have failed." 1>&2
+ $echo The command "cmp 12ba.O $srcdir/o3b3l17f-tn" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12ba.E || rm -f 12ba.E
+$xx --date-format="-- Date/Time --" -h x -o3 -b --columns=3 -l17 -f $srcdir/tn > 12ba.C.O 2> 12ba.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12ba.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12ba.C.O $srcdir/o3b3l17f-tn > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12ba.C"; fi;;
+ 1) $echo "Test 12ba.C failed: files 12ba.C.O and $srcdir/o3b3l17f-tn differ" 1>&2
+ (diff -c 12ba.C.O $srcdir/o3b3l17f-tn) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12ba.C may have failed." 1>&2
+ $echo The command "cmp 12ba.C.O $srcdir/o3b3l17f-tn" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12ba.C.E || rm -f 12ba.C.E
+$xx --date-format="-- Date/Time --" -h x -o3 -b -3 -S:--: -l17 -f $srcdir/tn > 12bb.O 2> 12bb.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12bb failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12bb.O $srcdir/o3b3Sl17f-tn > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12bb"; fi;;
+ 1) $echo "Test 12bb failed: files 12bb.O and $srcdir/o3b3Sl17f-tn differ" 1>&2
+ (diff -c 12bb.O $srcdir/o3b3Sl17f-tn) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12bb may have failed." 1>&2
+ $echo The command "cmp 12bb.O $srcdir/o3b3Sl17f-tn" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12bb.E || rm -f 12bb.E
+$xx --date-format="-- Date/Time --" -h x -o3 -b --columns=3 -S:--: -l17 -f $srcdir/tn > 12bb.C.O 2> 12bb.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12bb.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12bb.C.O $srcdir/o3b3Sl17f-tn > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12bb.C"; fi;;
+ 1) $echo "Test 12bb.C failed: files 12bb.C.O and $srcdir/o3b3Sl17f-tn differ" 1>&2
+ (diff -c 12bb.C.O $srcdir/o3b3Sl17f-tn) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12bb.C may have failed." 1>&2
+ $echo The command "cmp 12bb.C.O $srcdir/o3b3Sl17f-tn" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12bb.C.E || rm -f 12bb.C.E
+$xx --date-format="-- Date/Time --" -h x -o3 -b -3 -S:--: -n. -l17 -f $srcdir/tn > 12bc.O 2> 12bc.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12bc failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12bc.O $srcdir/o3b3Snl17f-tn > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12bc"; fi;;
+ 1) $echo "Test 12bc failed: files 12bc.O and $srcdir/o3b3Snl17f-tn differ" 1>&2
+ (diff -c 12bc.O $srcdir/o3b3Snl17f-tn) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12bc may have failed." 1>&2
+ $echo The command "cmp 12bc.O $srcdir/o3b3Snl17f-tn" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12bc.E || rm -f 12bc.E
+$xx --date-format="-- Date/Time --" -h x -o3 -b --columns=3 -S:--: -n. -l17 -f $srcdir/tn > 12bc.C.O 2> 12bc.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12bc.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12bc.C.O $srcdir/o3b3Snl17f-tn > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12bc.C"; fi;;
+ 1) $echo "Test 12bc.C failed: files 12bc.C.O and $srcdir/o3b3Snl17f-tn differ" 1>&2
+ (diff -c 12bc.C.O $srcdir/o3b3Snl17f-tn) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12bc.C may have failed." 1>&2
+ $echo The command "cmp 12bc.C.O $srcdir/o3b3Snl17f-tn" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12bc.C.E || rm -f 12bc.C.E
+$xx --date-format="-- Date/Time --" -h x -o3 -m -l17 -f $srcdir/tFFt-bl $srcdir/tn > 12ma.O 2> 12ma.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12ma failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12ma.O $srcdir/o3ml17f-bl-tn > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12ma"; fi;;
+ 1) $echo "Test 12ma failed: files 12ma.O and $srcdir/o3ml17f-bl-tn differ" 1>&2
+ (diff -c 12ma.O $srcdir/o3ml17f-bl-tn) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12ma may have failed." 1>&2
+ $echo The command "cmp 12ma.O $srcdir/o3ml17f-bl-tn" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12ma.E || rm -f 12ma.E
+$xx --date-format="-- Date/Time --" -h x -o3 -m -S:--: -l17 -f $srcdir/tFFt-bl $srcdir/tn > 12mb.O 2> 12mb.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12mb failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12mb.O $srcdir/o3mSl17f-bl-tn > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12mb"; fi;;
+ 1) $echo "Test 12mb failed: files 12mb.O and $srcdir/o3mSl17f-bl-tn differ" 1>&2
+ (diff -c 12mb.O $srcdir/o3mSl17f-bl-tn) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12mb may have failed." 1>&2
+ $echo The command "cmp 12mb.O $srcdir/o3mSl17f-bl-tn" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12mb.E || rm -f 12mb.E
+$xx --date-format="-- Date/Time --" -h x -o3 -m -S:--: -n. -l17 -f $srcdir/tFFt-bl $srcdir/tn > 12mc.O 2> 12mc.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12mc failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12mc.O $srcdir/o3mSnl17fbltn > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12mc"; fi;;
+ 1) $echo "Test 12mc failed: files 12mc.O and $srcdir/o3mSnl17fbltn differ" 1>&2
+ (diff -c 12mc.O $srcdir/o3mSnl17fbltn) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12mc may have failed." 1>&2
+ $echo The command "cmp 12mc.O $srcdir/o3mSnl17fbltn" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12mc.E || rm -f 12mc.E
+$xx --date-format="-- Date/Time --" -h x -o3 -J -m -l17 -f $srcdir/tFFt-lm $srcdir/loli > 12md.O 2> 12md.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12md failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12md.O $srcdir/o3Jml17f-lm-lo > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12md"; fi;;
+ 1) $echo "Test 12md failed: files 12md.O and $srcdir/o3Jml17f-lm-lo differ" 1>&2
+ (diff -c 12md.O $srcdir/o3Jml17f-lm-lo) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12md may have failed." 1>&2
+ $echo The command "cmp 12md.O $srcdir/o3Jml17f-lm-lo" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12md.E || rm -f 12md.E
+$xx --date-format="-- Date/Time --" -h x -t -n -e8 $srcdir/t_tab > 13a.O 2> 13a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 13a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 13a.O $srcdir/tne8-t_tab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 13a"; fi;;
+ 1) $echo "Test 13a failed: files 13a.O and $srcdir/tne8-t_tab differ" 1>&2
+ (diff -c 13a.O $srcdir/tne8-t_tab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 13a may have failed." 1>&2
+ $echo The command "cmp 13a.O $srcdir/tne8-t_tab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 13a.E || rm -f 13a.E
+$xx --date-format="-- Date/Time --" -h x -t -n -e8 -o3 $srcdir/t_tab > 13b.O 2> 13b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 13b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 13b.O $srcdir/tne8o3-t_tab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 13b"; fi;;
+ 1) $echo "Test 13b failed: files 13b.O and $srcdir/tne8o3-t_tab differ" 1>&2
+ (diff -c 13b.O $srcdir/tne8o3-t_tab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 13b may have failed." 1>&2
+ $echo The command "cmp 13b.O $srcdir/tne8o3-t_tab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 13b.E || rm -f 13b.E
+$xx --date-format="-- Date/Time --" -h x -t -n -2 -e8 $srcdir/t_tab > 13ba.O 2> 13ba.E
+code=$?
+if test $code != 0; then
+ $echo "Test 13ba failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 13ba.O $srcdir/tn2e8-t_tab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 13ba"; fi;;
+ 1) $echo "Test 13ba failed: files 13ba.O and $srcdir/tn2e8-t_tab differ" 1>&2
+ (diff -c 13ba.O $srcdir/tn2e8-t_tab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 13ba may have failed." 1>&2
+ $echo The command "cmp 13ba.O $srcdir/tn2e8-t_tab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 13ba.E || rm -f 13ba.E
+$xx --date-format="-- Date/Time --" -h x -t -n --columns=2 -e8 $srcdir/t_tab > 13ba.C.O 2> 13ba.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 13ba.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 13ba.C.O $srcdir/tn2e8-t_tab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 13ba.C"; fi;;
+ 1) $echo "Test 13ba.C failed: files 13ba.C.O and $srcdir/tn2e8-t_tab differ" 1>&2
+ (diff -c 13ba.C.O $srcdir/tn2e8-t_tab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 13ba.C may have failed." 1>&2
+ $echo The command "cmp 13ba.C.O $srcdir/tn2e8-t_tab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 13ba.C.E || rm -f 13ba.C.E
+$xx --date-format="-- Date/Time --" -h x -t -n: -2 -e8 $srcdir/t_tab > 13bb.O 2> 13bb.E
+code=$?
+if test $code != 0; then
+ $echo "Test 13bb failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 13bb.O $srcdir/tn_2e8-t_tab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 13bb"; fi;;
+ 1) $echo "Test 13bb failed: files 13bb.O and $srcdir/tn_2e8-t_tab differ" 1>&2
+ (diff -c 13bb.O $srcdir/tn_2e8-t_tab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 13bb may have failed." 1>&2
+ $echo The command "cmp 13bb.O $srcdir/tn_2e8-t_tab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 13bb.E || rm -f 13bb.E
+$xx --date-format="-- Date/Time --" -h x -t -n: --columns=2 -e8 $srcdir/t_tab > 13bb.C.O 2> 13bb.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 13bb.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 13bb.C.O $srcdir/tn_2e8-t_tab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 13bb.C"; fi;;
+ 1) $echo "Test 13bb.C failed: files 13bb.C.O and $srcdir/tn_2e8-t_tab differ" 1>&2
+ (diff -c 13bb.C.O $srcdir/tn_2e8-t_tab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 13bb.C may have failed." 1>&2
+ $echo The command "cmp 13bb.C.O $srcdir/tn_2e8-t_tab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 13bb.C.E || rm -f 13bb.C.E
+$xx --date-format="-- Date/Time --" -h x -t -n: -2 -e8 -S---- $srcdir/t_tab > 13bc.O 2> 13bc.E
+code=$?
+if test $code != 0; then
+ $echo "Test 13bc failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 13bc.O $srcdir/tn_2e8S-t_tab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 13bc"; fi;;
+ 1) $echo "Test 13bc failed: files 13bc.O and $srcdir/tn_2e8S-t_tab differ" 1>&2
+ (diff -c 13bc.O $srcdir/tn_2e8S-t_tab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 13bc may have failed." 1>&2
+ $echo The command "cmp 13bc.O $srcdir/tn_2e8S-t_tab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 13bc.E || rm -f 13bc.E
+$xx --date-format="-- Date/Time --" -h x -t -n: --columns=2 -e8 -S---- $srcdir/t_tab > 13bc.C.O 2> 13bc.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 13bc.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 13bc.C.O $srcdir/tn_2e8S-t_tab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 13bc.C"; fi;;
+ 1) $echo "Test 13bc.C failed: files 13bc.C.O and $srcdir/tn_2e8S-t_tab differ" 1>&2
+ (diff -c 13bc.C.O $srcdir/tn_2e8S-t_tab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 13bc.C may have failed." 1>&2
+ $echo The command "cmp 13bc.C.O $srcdir/tn_2e8S-t_tab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 13bc.C.E || rm -f 13bc.C.E
+$xx --date-format="-- Date/Time --" -h x -t -n -2 -e8 -o3 $srcdir/t_tab > 13bd.O 2> 13bd.E
+code=$?
+if test $code != 0; then
+ $echo "Test 13bd failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 13bd.O $srcdir/tn2e8o3-t_tab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 13bd"; fi;;
+ 1) $echo "Test 13bd failed: files 13bd.O and $srcdir/tn2e8o3-t_tab differ" 1>&2
+ (diff -c 13bd.O $srcdir/tn2e8o3-t_tab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 13bd may have failed." 1>&2
+ $echo The command "cmp 13bd.O $srcdir/tn2e8o3-t_tab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 13bd.E || rm -f 13bd.E
+$xx --date-format="-- Date/Time --" -h x -t -n --columns=2 -e8 -o3 $srcdir/t_tab > 13bd.C.O 2> 13bd.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 13bd.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 13bd.C.O $srcdir/tn2e8o3-t_tab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 13bd.C"; fi;;
+ 1) $echo "Test 13bd.C failed: files 13bd.C.O and $srcdir/tn2e8o3-t_tab differ" 1>&2
+ (diff -c 13bd.C.O $srcdir/tn2e8o3-t_tab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 13bd.C may have failed." 1>&2
+ $echo The command "cmp 13bd.C.O $srcdir/tn2e8o3-t_tab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 13bd.C.E || rm -f 13bd.C.E
+$xx --date-format="-- Date/Time --" -h x -t -n -2 -e5 -o3 $srcdir/t_tab > 13be.O 2> 13be.E
+code=$?
+if test $code != 0; then
+ $echo "Test 13be failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 13be.O $srcdir/tn2e5o3-t_tab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 13be"; fi;;
+ 1) $echo "Test 13be failed: files 13be.O and $srcdir/tn2e5o3-t_tab differ" 1>&2
+ (diff -c 13be.O $srcdir/tn2e5o3-t_tab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 13be may have failed." 1>&2
+ $echo The command "cmp 13be.O $srcdir/tn2e5o3-t_tab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 13be.E || rm -f 13be.E
+$xx --date-format="-- Date/Time --" -h x -t -n --columns=2 -e5 -o3 $srcdir/t_tab > 13be.C.O 2> 13be.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 13be.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 13be.C.O $srcdir/tn2e5o3-t_tab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 13be.C"; fi;;
+ 1) $echo "Test 13be.C failed: files 13be.C.O and $srcdir/tn2e5o3-t_tab differ" 1>&2
+ (diff -c 13be.C.O $srcdir/tn2e5o3-t_tab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 13be.C may have failed." 1>&2
+ $echo The command "cmp 13be.C.O $srcdir/tn2e5o3-t_tab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 13be.C.E || rm -f 13be.C.E
+$xx --date-format="-- Date/Time --" -h x -t -n -2 -e:8 $srcdir/t_tab_ > 13bf.O 2> 13bf.E
+code=$?
+if test $code != 0; then
+ $echo "Test 13bf failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 13bf.O $srcdir/tn2e8-t_tab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 13bf"; fi;;
+ 1) $echo "Test 13bf failed: files 13bf.O and $srcdir/tn2e8-t_tab differ" 1>&2
+ (diff -c 13bf.O $srcdir/tn2e8-t_tab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 13bf may have failed." 1>&2
+ $echo The command "cmp 13bf.O $srcdir/tn2e8-t_tab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 13bf.E || rm -f 13bf.E
+$xx --date-format="-- Date/Time --" -h x -t -n --columns=2 -e:8 $srcdir/t_tab_ > 13bf.C.O 2> 13bf.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 13bf.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 13bf.C.O $srcdir/tn2e8-t_tab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 13bf.C"; fi;;
+ 1) $echo "Test 13bf.C failed: files 13bf.C.O and $srcdir/tn2e8-t_tab differ" 1>&2
+ (diff -c 13bf.C.O $srcdir/tn2e8-t_tab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 13bf.C may have failed." 1>&2
+ $echo The command "cmp 13bf.C.O $srcdir/tn2e8-t_tab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 13bf.C.E || rm -f 13bf.C.E
+$xx --date-format="-- Date/Time --" -h x -2 -f $srcdir/t_notab > 14a.O 2> 14a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14a.O $srcdir/2f-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14a"; fi;;
+ 1) $echo "Test 14a failed: files 14a.O and $srcdir/2f-t_notab differ" 1>&2
+ (diff -c 14a.O $srcdir/2f-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14a may have failed." 1>&2
+ $echo The command "cmp 14a.O $srcdir/2f-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14a.E || rm -f 14a.E
+$xx --date-format="-- Date/Time --" -h x --columns=2 -f $srcdir/t_notab > 14a.C.O 2> 14a.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14a.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14a.C.O $srcdir/2f-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14a.C"; fi;;
+ 1) $echo "Test 14a.C failed: files 14a.C.O and $srcdir/2f-t_notab differ" 1>&2
+ (diff -c 14a.C.O $srcdir/2f-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14a.C may have failed." 1>&2
+ $echo The command "cmp 14a.C.O $srcdir/2f-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14a.C.E || rm -f 14a.C.E
+$xx --date-format="-- Date/Time --" -h x -2 -s -f $srcdir/t_notab > 14b.O 2> 14b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14b.O $srcdir/2sf-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14b"; fi;;
+ 1) $echo "Test 14b failed: files 14b.O and $srcdir/2sf-t_notab differ" 1>&2
+ (diff -c 14b.O $srcdir/2sf-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14b may have failed." 1>&2
+ $echo The command "cmp 14b.O $srcdir/2sf-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14b.E || rm -f 14b.E
+$xx --date-format="-- Date/Time --" -h x --columns=2 -s -f $srcdir/t_notab > 14b.C.O 2> 14b.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14b.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14b.C.O $srcdir/2sf-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14b.C"; fi;;
+ 1) $echo "Test 14b.C failed: files 14b.C.O and $srcdir/2sf-t_notab differ" 1>&2
+ (diff -c 14b.C.O $srcdir/2sf-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14b.C may have failed." 1>&2
+ $echo The command "cmp 14b.C.O $srcdir/2sf-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14b.C.E || rm -f 14b.C.E
+$xx --date-format="-- Date/Time --" -h x -2 -s: -f $srcdir/t_notab > 14c.O 2> 14c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14c failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14c.O $srcdir/2s_f-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14c"; fi;;
+ 1) $echo "Test 14c failed: files 14c.O and $srcdir/2s_f-t_notab differ" 1>&2
+ (diff -c 14c.O $srcdir/2s_f-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14c may have failed." 1>&2
+ $echo The command "cmp 14c.O $srcdir/2s_f-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14c.E || rm -f 14c.E
+$xx --date-format="-- Date/Time --" -h x --columns=2 -s: -f $srcdir/t_notab > 14c.C.O 2> 14c.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14c.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14c.C.O $srcdir/2s_f-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14c.C"; fi;;
+ 1) $echo "Test 14c.C failed: files 14c.C.O and $srcdir/2s_f-t_notab differ" 1>&2
+ (diff -c 14c.C.O $srcdir/2s_f-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14c.C may have failed." 1>&2
+ $echo The command "cmp 14c.C.O $srcdir/2s_f-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14c.C.E || rm -f 14c.C.E
+$xx --date-format="-- Date/Time --" -h x -2 -w60 -f $srcdir/t_notab > 14d.O 2> 14d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14d failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14d.O $srcdir/2w60f-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14d"; fi;;
+ 1) $echo "Test 14d failed: files 14d.O and $srcdir/2w60f-t_notab differ" 1>&2
+ (diff -c 14d.O $srcdir/2w60f-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14d may have failed." 1>&2
+ $echo The command "cmp 14d.O $srcdir/2w60f-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14d.E || rm -f 14d.E
+$xx --date-format="-- Date/Time --" -h x --columns=2 -w60 -f $srcdir/t_notab > 14d.C.O 2> 14d.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14d.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14d.C.O $srcdir/2w60f-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14d.C"; fi;;
+ 1) $echo "Test 14d.C failed: files 14d.C.O and $srcdir/2w60f-t_notab differ" 1>&2
+ (diff -c 14d.C.O $srcdir/2w60f-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14d.C may have failed." 1>&2
+ $echo The command "cmp 14d.C.O $srcdir/2w60f-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14d.C.E || rm -f 14d.C.E
+$xx --date-format="-- Date/Time --" -h x -2 -s -w60 -f $srcdir/t_notab > 14e.O 2> 14e.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14e failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14e.O $srcdir/2sw60f-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14e"; fi;;
+ 1) $echo "Test 14e failed: files 14e.O and $srcdir/2sw60f-t_notab differ" 1>&2
+ (diff -c 14e.O $srcdir/2sw60f-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14e may have failed." 1>&2
+ $echo The command "cmp 14e.O $srcdir/2sw60f-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14e.E || rm -f 14e.E
+$xx --date-format="-- Date/Time --" -h x --columns=2 -s -w60 -f $srcdir/t_notab > 14e.C.O 2> 14e.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14e.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14e.C.O $srcdir/2sw60f-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14e.C"; fi;;
+ 1) $echo "Test 14e.C failed: files 14e.C.O and $srcdir/2sw60f-t_notab differ" 1>&2
+ (diff -c 14e.C.O $srcdir/2sw60f-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14e.C may have failed." 1>&2
+ $echo The command "cmp 14e.C.O $srcdir/2sw60f-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14e.C.E || rm -f 14e.C.E
+$xx --date-format="-- Date/Time --" -h x -2 -s: -w60 -f $srcdir/t_notab > 14f.O 2> 14f.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14f failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14f.O $srcdir/2s_w60f-t_nota > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14f"; fi;;
+ 1) $echo "Test 14f failed: files 14f.O and $srcdir/2s_w60f-t_nota differ" 1>&2
+ (diff -c 14f.O $srcdir/2s_w60f-t_nota) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14f may have failed." 1>&2
+ $echo The command "cmp 14f.O $srcdir/2s_w60f-t_nota" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14f.E || rm -f 14f.E
+$xx --date-format="-- Date/Time --" -h x --columns=2 -s: -w60 -f $srcdir/t_notab > 14f.C.O 2> 14f.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14f.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14f.C.O $srcdir/2s_w60f-t_nota > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14f.C"; fi;;
+ 1) $echo "Test 14f.C failed: files 14f.C.O and $srcdir/2s_w60f-t_nota differ" 1>&2
+ (diff -c 14f.C.O $srcdir/2s_w60f-t_nota) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14f.C may have failed." 1>&2
+ $echo The command "cmp 14f.C.O $srcdir/2s_w60f-t_nota" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14f.C.E || rm -f 14f.C.E
+$xx --date-format="-- Date/Time --" -h x -2 -S -f $srcdir/t_notab > 14g.O 2> 14g.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14g failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14g.O $srcdir/2-Sf-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14g"; fi;;
+ 1) $echo "Test 14g failed: files 14g.O and $srcdir/2-Sf-t_notab differ" 1>&2
+ (diff -c 14g.O $srcdir/2-Sf-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14g may have failed." 1>&2
+ $echo The command "cmp 14g.O $srcdir/2-Sf-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14g.E || rm -f 14g.E
+$xx --date-format="-- Date/Time --" -h x --columns=2 -S -f $srcdir/t_notab > 14g.C.O 2> 14g.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14g.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14g.C.O $srcdir/2-Sf-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14g.C"; fi;;
+ 1) $echo "Test 14g.C failed: files 14g.C.O and $srcdir/2-Sf-t_notab differ" 1>&2
+ (diff -c 14g.C.O $srcdir/2-Sf-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14g.C may have failed." 1>&2
+ $echo The command "cmp 14g.C.O $srcdir/2-Sf-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14g.C.E || rm -f 14g.C.E
+$xx --date-format="-- Date/Time --" -h x -2 -S" " -J -f $srcdir/t_notab > 14h.O 2> 14h.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14h failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14h.O $srcdir/2sf-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14h"; fi;;
+ 1) $echo "Test 14h failed: files 14h.O and $srcdir/2sf-t_notab differ" 1>&2
+ (diff -c 14h.O $srcdir/2sf-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14h may have failed." 1>&2
+ $echo The command "cmp 14h.O $srcdir/2sf-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14h.E || rm -f 14h.E
+$xx --date-format="-- Date/Time --" -h x --columns=2 -S" " -J -f $srcdir/t_notab > 14h.C.O 2> 14h.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14h.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14h.C.O $srcdir/2sf-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14h.C"; fi;;
+ 1) $echo "Test 14h.C failed: files 14h.C.O and $srcdir/2sf-t_notab differ" 1>&2
+ (diff -c 14h.C.O $srcdir/2sf-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14h.C may have failed." 1>&2
+ $echo The command "cmp 14h.C.O $srcdir/2sf-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14h.C.E || rm -f 14h.C.E
+$xx --date-format="-- Date/Time --" -h x -2 -S: -f $srcdir/t_notab > 14i.O 2> 14i.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14i failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14i.O $srcdir/2-S_f-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14i"; fi;;
+ 1) $echo "Test 14i failed: files 14i.O and $srcdir/2-S_f-t_notab differ" 1>&2
+ (diff -c 14i.O $srcdir/2-S_f-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14i may have failed." 1>&2
+ $echo The command "cmp 14i.O $srcdir/2-S_f-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14i.E || rm -f 14i.E
+$xx --date-format="-- Date/Time --" -h x --columns=2 -S: -f $srcdir/t_notab > 14i.C.O 2> 14i.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14i.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14i.C.O $srcdir/2-S_f-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14i.C"; fi;;
+ 1) $echo "Test 14i.C failed: files 14i.C.O and $srcdir/2-S_f-t_notab differ" 1>&2
+ (diff -c 14i.C.O $srcdir/2-S_f-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14i.C may have failed." 1>&2
+ $echo The command "cmp 14i.C.O $srcdir/2-S_f-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14i.C.E || rm -f 14i.C.E
+$xx --date-format="-- Date/Time --" -h x -2 -S: -J -f $srcdir/t_notab > 14j.O 2> 14j.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14j failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14j.O $srcdir/2s_f-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14j"; fi;;
+ 1) $echo "Test 14j failed: files 14j.O and $srcdir/2s_f-t_notab differ" 1>&2
+ (diff -c 14j.O $srcdir/2s_f-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14j may have failed." 1>&2
+ $echo The command "cmp 14j.O $srcdir/2s_f-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14j.E || rm -f 14j.E
+$xx --date-format="-- Date/Time --" -h x --columns=2 -S: -J -f $srcdir/t_notab > 14j.C.O 2> 14j.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14j.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14j.C.O $srcdir/2s_f-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14j.C"; fi;;
+ 1) $echo "Test 14j.C failed: files 14j.C.O and $srcdir/2s_f-t_notab differ" 1>&2
+ (diff -c 14j.C.O $srcdir/2s_f-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14j.C may have failed." 1>&2
+ $echo The command "cmp 14j.C.O $srcdir/2s_f-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14j.C.E || rm -f 14j.C.E
+$xx --date-format="-- Date/Time --" -h x -2 -W60 -f $srcdir/t_notab > 14k.O 2> 14k.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14k failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14k.O $srcdir/2w60f-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14k"; fi;;
+ 1) $echo "Test 14k failed: files 14k.O and $srcdir/2w60f-t_notab differ" 1>&2
+ (diff -c 14k.O $srcdir/2w60f-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14k may have failed." 1>&2
+ $echo The command "cmp 14k.O $srcdir/2w60f-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14k.E || rm -f 14k.E
+$xx --date-format="-- Date/Time --" -h x --columns=2 -W60 -f $srcdir/t_notab > 14k.C.O 2> 14k.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14k.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14k.C.O $srcdir/2w60f-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14k.C"; fi;;
+ 1) $echo "Test 14k.C failed: files 14k.C.O and $srcdir/2w60f-t_notab differ" 1>&2
+ (diff -c 14k.C.O $srcdir/2w60f-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14k.C may have failed." 1>&2
+ $echo The command "cmp 14k.C.O $srcdir/2w60f-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14k.C.E || rm -f 14k.C.E
+$xx --date-format="-- Date/Time --" -h x -2 -S -W60 -f $srcdir/t_notab > 14l.O 2> 14l.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14l failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14l.O $srcdir/2sw60f-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14l"; fi;;
+ 1) $echo "Test 14l failed: files 14l.O and $srcdir/2sw60f-t_notab differ" 1>&2
+ (diff -c 14l.O $srcdir/2sw60f-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14l may have failed." 1>&2
+ $echo The command "cmp 14l.O $srcdir/2sw60f-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14l.E || rm -f 14l.E
+$xx --date-format="-- Date/Time --" -h x --columns=2 -S -W60 -f $srcdir/t_notab > 14l.C.O 2> 14l.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14l.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14l.C.O $srcdir/2sw60f-t_notab > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14l.C"; fi;;
+ 1) $echo "Test 14l.C failed: files 14l.C.O and $srcdir/2sw60f-t_notab differ" 1>&2
+ (diff -c 14l.C.O $srcdir/2sw60f-t_notab) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14l.C may have failed." 1>&2
+ $echo The command "cmp 14l.C.O $srcdir/2sw60f-t_notab" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14l.C.E || rm -f 14l.C.E
+$xx --date-format="-- Date/Time --" -h x -2 -S: -W60 -f $srcdir/t_notab > 14m.O 2> 14m.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14m failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14m.O $srcdir/2s_w60f-t_nota > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14m"; fi;;
+ 1) $echo "Test 14m failed: files 14m.O and $srcdir/2s_w60f-t_nota differ" 1>&2
+ (diff -c 14m.O $srcdir/2s_w60f-t_nota) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14m may have failed." 1>&2
+ $echo The command "cmp 14m.O $srcdir/2s_w60f-t_nota" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14m.E || rm -f 14m.E
+$xx --date-format="-- Date/Time --" -h x --columns=2 -S: -W60 -f $srcdir/t_notab > 14m.C.O 2> 14m.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14m.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14m.C.O $srcdir/2s_w60f-t_nota > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14m.C"; fi;;
+ 1) $echo "Test 14m.C failed: files 14m.C.O and $srcdir/2s_w60f-t_nota differ" 1>&2
+ (diff -c 14m.C.O $srcdir/2s_w60f-t_nota) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14m.C may have failed." 1>&2
+ $echo The command "cmp 14m.C.O $srcdir/2s_w60f-t_nota" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14m.C.E || rm -f 14m.C.E
+$xx --date-format="-- Date/Time --" -h x -tn -i5 -h "" $srcdir/i-opt-a.I > i-opt-a.O 2> i-opt-a.E
+code=$?
+if test $code != 0; then
+ $echo "Test i-opt-a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp i-opt-a.O $srcdir/i-opt-a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed i-opt-a"; fi;;
+ 1) $echo "Test i-opt-a failed: files i-opt-a.O and $srcdir/i-opt-a.X differ" 1>&2
+ (diff -c i-opt-a.O $srcdir/i-opt-a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test i-opt-a may have failed." 1>&2
+ $echo The command "cmp i-opt-a.O $srcdir/i-opt-a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s i-opt-a.E || rm -f i-opt-a.E
+$xx --date-format="-- Date/Time --" -h x -tn -i5 -o9 -h "" $srcdir/i-opt-b.I > i-opt-b.O 2> i-opt-b.E
+code=$?
+if test $code != 0; then
+ $echo "Test i-opt-b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp i-opt-b.O $srcdir/i-opt-b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed i-opt-b"; fi;;
+ 1) $echo "Test i-opt-b failed: files i-opt-b.O and $srcdir/i-opt-b.X differ" 1>&2
+ (diff -c i-opt-b.O $srcdir/i-opt-b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test i-opt-b may have failed." 1>&2
+ $echo The command "cmp i-opt-b.O $srcdir/i-opt-b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s i-opt-b.E || rm -f i-opt-b.E
+$xx --date-format="-- Date/Time --" -h x -tn2 -N98 $srcdir/ncut-a.I > ncut-a.O 2> ncut-a.E
+code=$?
+if test $code != 0; then
+ $echo "Test ncut-a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ncut-a.O $srcdir/ncut-a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ncut-a"; fi;;
+ 1) $echo "Test ncut-a failed: files ncut-a.O and $srcdir/ncut-a.X differ" 1>&2
+ (diff -c ncut-a.O $srcdir/ncut-a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ncut-a may have failed." 1>&2
+ $echo The command "cmp ncut-a.O $srcdir/ncut-a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ncut-a.E || rm -f ncut-a.E
+$xx --date-format="-- Date/Time --" -h x -tn:2 -N98 $srcdir/ncut-b.I > ncut-b.O 2> ncut-b.E
+code=$?
+if test $code != 0; then
+ $echo "Test ncut-b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ncut-b.O $srcdir/ncut-b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ncut-b"; fi;;
+ 1) $echo "Test ncut-b failed: files ncut-b.O and $srcdir/ncut-b.X differ" 1>&2
+ (diff -c ncut-b.O $srcdir/ncut-b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ncut-b may have failed." 1>&2
+ $echo The command "cmp ncut-b.O $srcdir/ncut-b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ncut-b.E || rm -f ncut-b.E
+$xx --date-format="-- Date/Time --" -h x -o 0 $srcdir/margin-0.I > margin-0.O 2> margin-0.E
+code=$?
+if test $code != 0; then
+ $echo "Test margin-0 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp margin-0.O $srcdir/margin-0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed margin-0"; fi;;
+ 1) $echo "Test margin-0 failed: files margin-0.O and $srcdir/margin-0.X differ" 1>&2
+ (diff -c margin-0.O $srcdir/margin-0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test margin-0 may have failed." 1>&2
+ $echo The command "cmp margin-0.O $srcdir/margin-0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s margin-0.E || rm -f margin-0.E
+$xx --date-format="-- Date/Time --" -h x -d -l 14 -h "" $srcdir/dbl-sp-a.I > dbl-sp-a.O 2> dbl-sp-a.E
+code=$?
+if test $code != 0; then
+ $echo "Test dbl-sp-a failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp dbl-sp-a.O $srcdir/dbl-sp-a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed dbl-sp-a"; fi;;
+ 1) $echo "Test dbl-sp-a failed: files dbl-sp-a.O and $srcdir/dbl-sp-a.X differ" 1>&2
+ (diff -c dbl-sp-a.O $srcdir/dbl-sp-a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test dbl-sp-a may have failed." 1>&2
+ $echo The command "cmp dbl-sp-a.O $srcdir/dbl-sp-a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s dbl-sp-a.E || rm -f dbl-sp-a.E
+$xx --date-format="-- Date/Time --" -h x -d -t $srcdir/dbl-sp-b.I > dbl-sp-b.O 2> dbl-sp-b.E
+code=$?
+if test $code != 0; then
+ $echo "Test dbl-sp-b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp dbl-sp-b.O $srcdir/dbl-sp-b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed dbl-sp-b"; fi;;
+ 1) $echo "Test dbl-sp-b failed: files dbl-sp-b.O and $srcdir/dbl-sp-b.X differ" 1>&2
+ (diff -c dbl-sp-b.O $srcdir/dbl-sp-b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test dbl-sp-b may have failed." 1>&2
+ $echo The command "cmp dbl-sp-b.O $srcdir/dbl-sp-b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s dbl-sp-b.E || rm -f dbl-sp-b.E
+$xx --date-format="-- Date/Time --" -h x -W1 -t $srcdir/narrow-1.I > narrow-1.O 2> narrow-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test narrow-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp narrow-1.O $srcdir/narrow-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed narrow-1"; fi;;
+ 1) $echo "Test narrow-1 failed: files narrow-1.O and $srcdir/narrow-1.X differ" 1>&2
+ (diff -c narrow-1.O $srcdir/narrow-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test narrow-1 may have failed." 1>&2
+ $echo The command "cmp narrow-1.O $srcdir/narrow-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s narrow-1.E || rm -f narrow-1.E
+$xx --date-format="-- Date/Time --" -h x -W3 -t2 $srcdir/col-last.I > col-last.O 2> col-last.E
+code=$?
+if test $code != 0; then
+ $echo "Test col-last failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp col-last.O $srcdir/col-last.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed col-last"; fi;;
+ 1) $echo "Test col-last failed: files col-last.O and $srcdir/col-last.X differ" 1>&2
+ (diff -c col-last.O $srcdir/col-last.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test col-last may have failed." 1>&2
+ $echo The command "cmp col-last.O $srcdir/col-last.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s col-last.E || rm -f col-last.E
+$xx --date-format="-- Date/Time --" -h x -W3 -t -02 $srcdir/col-02.I > col-02.O 2> col-02.E
+code=$?
+if test $code != 0; then
+ $echo "Test col-02 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp col-02.O $srcdir/col-02.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed col-02"; fi;;
+ 1) $echo "Test col-02 failed: files col-02.O and $srcdir/col-02.X differ" 1>&2
+ (diff -c col-02.O $srcdir/col-02.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test col-02 may have failed." 1>&2
+ $echo The command "cmp col-02.O $srcdir/col-02.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s col-02.E || rm -f col-02.E
+$xx --date-format="-- Date/Time --" -h x -W3 -t --columns=02 $srcdir/col-02.C.I > col-02.C.O 2> col-02.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test col-02.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp col-02.C.O $srcdir/col-02.C.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed col-02.C"; fi;;
+ 1) $echo "Test col-02.C failed: files col-02.C.O and $srcdir/col-02.C.X differ" 1>&2
+ (diff -c col-02.C.O $srcdir/col-02.C.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test col-02.C may have failed." 1>&2
+ $echo The command "cmp col-02.C.O $srcdir/col-02.C.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s col-02.C.E || rm -f col-02.C.E
+$xx --date-format="-- Date/Time --" -h x -W3 -t -4 --columns=1 -2 $srcdir/col-2.I > col-2.O 2> col-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test col-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp col-2.O $srcdir/col-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed col-2"; fi;;
+ 1) $echo "Test col-2 failed: files col-2.O and $srcdir/col-2.X differ" 1>&2
+ (diff -c col-2.O $srcdir/col-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test col-2 may have failed." 1>&2
+ $echo The command "cmp col-2.O $srcdir/col-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s col-2.E || rm -f col-2.E
+$xx --date-format="-- Date/Time --" -h x -W3 -t --columns=4 --columns=1 --columns=2 $srcdir/col-2.C.I > col-2.C.O 2> col-2.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test col-2.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp col-2.C.O $srcdir/col-2.C.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed col-2.C"; fi;;
+ 1) $echo "Test col-2.C failed: files col-2.C.O and $srcdir/col-2.C.X differ" 1>&2
+ (diff -c col-2.C.O $srcdir/col-2.C.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test col-2.C may have failed." 1>&2
+ $echo The command "cmp col-2.C.O $srcdir/col-2.C.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s col-2.C.E || rm -f col-2.C.E
+$xx --date-format="-- Date/Time --" -h x -W3 -t -1 --columns=2 $srcdir/col-long.I > col-long.O 2> col-long.E
+code=$?
+if test $code != 0; then
+ $echo "Test col-long failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp col-long.O $srcdir/col-long.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed col-long"; fi;;
+ 1) $echo "Test col-long failed: files col-long.O and $srcdir/col-long.X differ" 1>&2
+ (diff -c col-long.O $srcdir/col-long.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test col-long may have failed." 1>&2
+ $echo The command "cmp col-long.O $srcdir/col-long.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s col-long.E || rm -f col-long.E
+$xx --date-format="-- Date/Time --" -h x -W3 -t --columns=1 --columns=2 $srcdir/col-long.C.I > col-long.C.O 2> col-long.C.E
+code=$?
+if test $code != 0; then
+ $echo "Test col-long.C failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp col-long.C.O $srcdir/col-long.C.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed col-long.C"; fi;;
+ 1) $echo "Test col-long.C failed: files col-long.C.O and $srcdir/col-long.C.X differ" 1>&2
+ (diff -c col-long.C.O $srcdir/col-long.C.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test col-long.C may have failed." 1>&2
+ $echo The command "cmp col-long.C.O $srcdir/col-long.C.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s col-long.C.E || rm -f col-long.C.E
+$xx --date-format="-- Date/Time --" -h x -0 $srcdir/col-0.I > col-0.O 2> col-0.E
+code=$?
+if test $code != 1; then
+ $echo "Test col-0 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp col-0.O $srcdir/col-0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed col-0"; fi;;
+ 1) $echo "Test col-0 failed: files col-0.O and $srcdir/col-0.X differ" 1>&2
+ (diff -c col-0.O $srcdir/col-0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test col-0 may have failed." 1>&2
+ $echo The command "cmp col-0.O $srcdir/col-0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s col-0.E || rm -f col-0.E
+$xx --date-format="-- Date/Time --" -h x --columns=0 $srcdir/col-0.C.I > col-0.C.O 2> col-0.C.E
+code=$?
+if test $code != 1; then
+ $echo "Test col-0.C failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp col-0.C.O $srcdir/col-0.C.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed col-0.C"; fi;;
+ 1) $echo "Test col-0.C failed: files col-0.C.O and $srcdir/col-0.C.X differ" 1>&2
+ (diff -c col-0.C.O $srcdir/col-0.C.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test col-0.C may have failed." 1>&2
+ $echo The command "cmp col-0.C.O $srcdir/col-0.C.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s col-0.C.E || rm -f col-0.C.E
+$xx --date-format="-- Date/Time --" -h x -9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 $srcdir/col-inval.I > col-inval.O 2> col-inval.E
+code=$?
+if test $code != 1; then
+ $echo "Test col-inval failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp col-inval.O $srcdir/col-inval.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed col-inval"; fi;;
+ 1) $echo "Test col-inval failed: files col-inval.O and $srcdir/col-inval.X differ" 1>&2
+ (diff -c col-inval.O $srcdir/col-inval.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test col-inval may have failed." 1>&2
+ $echo The command "cmp col-inval.O $srcdir/col-inval.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s col-inval.E || rm -f col-inval.E
+$xx --date-format="-- Date/Time --" -h x --columns=9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 $srcdir/col-inval.C.I > col-inval.C.O 2> col-inval.C.E
+code=$?
+if test $code != 1; then
+ $echo "Test col-inval.C failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp col-inval.C.O $srcdir/col-inval.C.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed col-inval.C"; fi;;
+ 1) $echo "Test col-inval.C failed: files col-inval.C.O and $srcdir/col-inval.C.X differ" 1>&2
+ (diff -c col-inval.C.O $srcdir/col-inval.C.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test col-inval.C may have failed." 1>&2
+ $echo The command "cmp col-inval.C.O $srcdir/col-inval.C.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s col-inval.C.E || rm -f col-inval.C.E
+$xx --date-format="-- Date/Time --" -h x --pages=1:-1 $srcdir/neg-page.I > neg-page.O 2> neg-page.E
+code=$?
+if test $code != 1; then
+ $echo "Test neg-page failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp neg-page.O $srcdir/neg-page.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed neg-page"; fi;;
+ 1) $echo "Test neg-page failed: files neg-page.O and $srcdir/neg-page.X differ" 1>&2
+ (diff -c neg-page.O $srcdir/neg-page.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test neg-page may have failed." 1>&2
+ $echo The command "cmp neg-page.O $srcdir/neg-page.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s neg-page.E || rm -f neg-page.E
+if test $errors = 0; then
+ $echo Passed all 396 tests. 1>&2
+else
+ $echo Failed $errors tests. 1>&2
+fi
+test $errors = 0 || errors=1
+exit $errors
diff --git a/tests/pr/t-0FF b/tests/pr/t-0FF
new file mode 100644
index 0000000..7ce1144
--- /dev/null
+++ b/tests/pr/t-0FF
@@ -0,0 +1,33 @@
+ 1 FF-Test: FF's at Start of File V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: Empty Pages at start
+7 \ftext; \f\ntext;
+8 \f\ftext; \f\f\ntext; \f\n\ftext; \f\n\f\n;
+9 3456789 123456789 123456789
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+ 15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+ 29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
diff --git a/tests/pr/t-FF b/tests/pr/t-FF
new file mode 100644
index 0000000..dfd229b
--- /dev/null
+++ b/tests/pr/t-FF
@@ -0,0 +1,60 @@
+1 FF-Test: FF's in Text V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: One Empty Page
+7 text\f\f\n; text\f\n\ftext; \f\ftext;
+8 \f\f\n; \f\n\f\n;
+9
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+ 15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+ 29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+ 43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+ 57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
diff --git a/tests/pr/t-bl b/tests/pr/t-bl
new file mode 100644
index 0000000..a7da0a6
--- /dev/null
+++ b/tests/pr/t-bl
@@ -0,0 +1,77 @@
+1 FF-Test: FF's in Text V
+2 Options -n;
+3 numbering lines with skiped pages;
+4 numbering blanc lines (no. 5,12,13,23,28)
+
+6 3456789 123456789 123456789 123456789 12345678
+7 3 Columns downwards ..., <= 5 lines per page
+8
+9
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+
+
+14 456789 123456789 123456789 123456789
+ 15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+
+
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+
+ 29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+ 43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+
+
+
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
+61 yzxyzxyz XYZXYZXYZ abcabcab
+62 456789 123456789 abcdefghi ABCDEDFHI
+63 xyzxyzxyz XYZXYZXYZ abcabcab
+64 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+70 456789 123456789 abcdefghi ABCDEDFHI
+1 12345678
+
+
+
+74 yzxyzxyz XYZXYZXYZ abcabcab
+75 456789 123456789 abcdefghi ABCDEDFHI
+ \ No newline at end of file
diff --git a/tests/pr/t-t b/tests/pr/t-t
new file mode 100644
index 0000000..8bd50ba
--- /dev/null
+++ b/tests/pr/t-t
@@ -0,0 +1,63 @@
+1 Test-INPUT: "Without FF set by Hand" V
+2 Options -b -3 [+2|+3] [-l 15|8] [-f]
+3 Options -a -3 [+2|+3] [-l 15|8] [-f]
+4 Options [+2|+3] [-l 24|17] [-f]
+5
+6 --------------------------------------------
+7 3456789 123456789 123456789 123456789 12345678
+8 3 Columns downwards, across, ...:
+9 With columns use <= 5 text lines/page,
+10 without -f e.g.: -l 15 = total lines/page,
+1 with -f e.g. : -l 8 -f
+2
+3 line truncation before new page; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before nwe page; (r_l-test):
+28 no trunc
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
+1
+2
+3 ------- EOF -------- EOF -------- EOF -------
diff --git a/tests/pr/tFFn b/tests/pr/tFFn
new file mode 100644
index 0000000..779e260
--- /dev/null
+++ b/tests/pr/tFFn
@@ -0,0 +1,60 @@
+1 FF-Test: FF's in Text V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: One Empty Page
+7 text\f\f\n; text\f\n\ftext; \f\ftext;
+8 \f\f\n; \f\n\f\n;
+9
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
diff --git a/tests/pr/tFFt b/tests/pr/tFFt
new file mode 100644
index 0000000..6a8682c
--- /dev/null
+++ b/tests/pr/tFFt
@@ -0,0 +1,56 @@
+1 FF-Test: FF's in Text V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: One Empty Page
+7 text\f\f\n; text\f\n\ftext; \f\ftext;
+8 \f\f\n; \f\n\f\n;
+9
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789 15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc 29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI 43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI 57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
diff --git a/tests/pr/tFFt-bl b/tests/pr/tFFt-bl
new file mode 100644
index 0000000..25bcf67
--- /dev/null
+++ b/tests/pr/tFFt-bl
@@ -0,0 +1,74 @@
+1 FF-Test: FF's in Text V
+2 Options -n;
+3 numbering lines with skiped pages;
+4 numbering blanc lines (no. 5,12,13,23,28)
+
+6 3456789 123456789 123456789 123456789 12345678
+7 3 Columns downwards ..., <= 5 lines per page
+8
+9
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+
+
+14 456789 123456789 123456789 123456789 15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+
+
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI 43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+
+
+
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
+61 yzxyzxyz XYZXYZXYZ abcabcab
+62 456789 123456789 abcdefghi ABCDEDFHI
+63 xyzxyzxyz XYZXYZXYZ abcabcab
+64 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+70 456789 123456789 abcdefghi ABCDEDFHI
+1 12345678
+
+
+
+74 yzxyzxyz XYZXYZXYZ abcabcab
+75 456789 123456789 abcdefghi ABCDEDFHI
diff --git a/tests/pr/tFFt-ll b/tests/pr/tFFt-ll
new file mode 100644
index 0000000..39eca65
--- /dev/null
+++ b/tests/pr/tFFt-ll
@@ -0,0 +1,56 @@
+1<<< -Test: FF's in Text >>>
+2<<< -b -3 / -a -3 / ... >>>
+3<<< >>>
+4<<< 123456789 123456789 123456789 123456789 123456789 123456789 123456789 >>>
+
+6<<< -Arangements: One Empty Page >>>
+7<<< \f\f\n; text\f\n\ftext; \f\ftext; >>>
+8<<< f\f\n; \f\n\f\n; >>>
+9<<< >>>
+10<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< truncation before FF; r_r_o_l-test: >>>
+14<<< 123456789 123456789 123456789 >>> 15<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+16<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+7<<< >>>
+8<<< >>>
+9<<< >>>
+20<<< >>>
+1<<< >>>
+
+
+4<<< >>>
+5<<< >>>
+6<<< >>>
+27<<< truncation before FF; (r_l-test): >>>
+28<<< trunc 29<<<xyzxyzxyz XYZXYZXYZ abcabcab >>>
+30<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+1<<< >>>
+2<<< abcdefghi >>>
+3<<< >>>
+4<<< >>>
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< abcdefghi >>>
+40<<< 123456789 >>>
+41<<< XYZXYZXYZ abcabcab >>>
+42<<< 123456789 abcdefghi ABCDEDFHI >>> 43<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+44<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< >>>
+50<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< >>>
+4<<< >>>
+55<<< XYZXYZXYZ abcabcab >>>
+56<<< 123456789 abcdefghi ABCDEDFHI >>> 57<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+58<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+9<<< >>>
+60<<< 123456789 >>>
diff --git a/tests/pr/tFFt-lm b/tests/pr/tFFt-lm
new file mode 100644
index 0000000..3fb566d
--- /dev/null
+++ b/tests/pr/tFFt-lm
@@ -0,0 +1,56 @@
+1<<< -Test: FF's in Text >>>
+2<<< -b -3 / -a -3 / ... >>>
+3<<< >>>
+4<<< 123456789 123456789 123456789 12345678 >>>
+
+6<<< -Arangements: One Empty Page >>>
+7<<< \f\f\n; text\f\n\ftext; \f\ftext; >>>
+8<<< f\f\n; \f\n\f\n; >>>
+9<<< >>>
+10<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< truncation before FF; r_r_o_l-test: >>>
+14<<< 123456789 123456789 123456789 >>> 15<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+16<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+7<<< >>>
+8<<< >>>
+9<<< >>>
+20<<< >>>
+1<<< >>>
+
+
+4<<< >>>
+5<<< >>>
+6<<< >>>
+27<<< truncation before FF; (r_l-test): >>>
+28<<< trunc 29<<<xyzxyzxyz XYZXYZXYZ abcabcab >>>
+30<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+1<<< >>>
+2<<< abcdefghi >>>
+3<<< >>>
+4<<< >>>
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< abcdefghi >>>
+40<<< 123456789 >>>
+41<<< XYZXYZXYZ abcabcab >>>
+42<<< 123456789 abcdefghi ABCDEDFHI >>> 43<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+44<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< >>>
+50<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< >>>
+4<<< >>>
+55<<< XYZXYZXYZ abcabcab >>>
+56<<< 123456789 abcdefghi ABCDEDFHI >>> 57<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+58<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+9<<< >>>
+60<<< 123456789 >>>
diff --git a/tests/pr/tFnFt b/tests/pr/tFnFt
new file mode 100644
index 0000000..46965cd
--- /dev/null
+++ b/tests/pr/tFnFt
@@ -0,0 +1,63 @@
+1 FF-Test: FF's in Text V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: One Empty Page
+7 text\f\f\n; text\f\n\ftext; \f\ftext;
+8 \f\f\n; \f\n\f\n;
+9
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
diff --git a/tests/pr/t_notab b/tests/pr/t_notab
new file mode 100644
index 0000000..e5d39f2
--- /dev/null
+++ b/tests/pr/t_notab
@@ -0,0 +1,5 @@
+aaaa.bcde-fghijklmn-opqrstuvw-xyzzzzzzz-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+bbbb.bcde-fghijklmn-opqrstuvw-xyzzzzzzz-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+cccc.bcde-fghijklmn-opqrstuvw-xyzzzzzzz-cccccccccccccccccccccccccccccccccccccccc
+dddd.bcde-fghijklmn-opqrstuvw-xyzzzzzzz-dddddddddddddddddddddddddddddddddddddddd
+eeee.bcde-fghijklmn-opqrstuvw-xyzzzzzzz-eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
diff --git a/tests/pr/t_tab b/tests/pr/t_tab
new file mode 100644
index 0000000..5ff2d46
--- /dev/null
+++ b/tests/pr/t_tab
@@ -0,0 +1,4 @@
+aaa abcde fghijklmnopqrstuvw
+bbb abcde fghijklmnopqrstuvw
+ccc abcde fghijklmnopqrstuvw
+ddd abcde fghijklmnopqrstuvw
diff --git a/tests/pr/t_tab_ b/tests/pr/t_tab_
new file mode 100644
index 0000000..8463899
--- /dev/null
+++ b/tests/pr/t_tab_
@@ -0,0 +1,4 @@
+aaa:abcde fghijklmnopqrstuvw
+bbb:abcde fghijklmnopqrstuvw
+ccc abcde fghijklmnopqrstuvw
+ddd abcde fghijklmnopqrstuvw
diff --git a/tests/pr/ta3-0FF b/tests/pr/ta3-0FF
new file mode 100644
index 0000000..ead4067
--- /dev/null
+++ b/tests/pr/ta3-0FF
@@ -0,0 +1,12 @@
+ 1 FF-Test: FF's at St 2 Options -b -3 / -a 3 -------------------
+4 3456789 123456789 123 5 3 Columns downwards 6 FF-Arangements: Emp
+7 \ftext; \f\ntext; 8 \f\ftext; \f\f\ntex 9 3456789 123456789 123
+10 zzzzzzzzzzzzzzzzzzz 1 2
+3 line truncation befor 14 456789 123456789 123
+ 15 xyzxyzxyz XYZXYZXYZ 16 456789 123456789 xyz 7
+8 9 3456789 ab 20 DEFGHI 123
+1 2 3
+4 5 6
+27 no truncation before 28 no trunc
+ 29 xyzxyzxyz XYZXYZXYZ 30 456789 123456789 xyz 1
+2 3456789 abcdefghi 3
diff --git a/tests/pr/ta3-FF b/tests/pr/ta3-FF
new file mode 100644
index 0000000..d4485c7
--- /dev/null
+++ b/tests/pr/ta3-FF
@@ -0,0 +1,22 @@
+1 FF-Test: FF's in Te 2 Options -b -3 / -a 3 -------------------
+4 3456789 123456789 123 5 3 Columns downwards 6 FF-Arangements: One
+7 text\f\f\n; text\f\ 8 \f\f\n; \f\n\f\n; 9
+10 zzzzzzzzzzzzzzzzzzz 1 2
+3 line truncation befor 14 456789 123456789 123
+ 15 xyzxyzxyz XYZXYZXYZ 16 456789 123456789 xyz 7
+8 9 3456789 ab 20 DEFGHI 123
+1 2 3
+4 5 6
+27 no truncation before 28 no trunc
+ 29 xyzxyzxyz XYZXYZXYZ 30 456789 123456789 xyz 1
+2 3456789 abcdefghi 3 4
+5 6 7
+8 9 3456789 abcdefghi 40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ a 42 456789 123456789 abc
+ 43 xyzxyzxyz XYZXYZXYZ 44 456789 123456789 xyz 5
+6 7 8
+9 50 1
+2 3 4
+55 yzxyzxyz XYZXYZXYZ a 56 456789 123456789 abc
+ 57 xyzxyzxyz XYZXYZXYZ 58 456789 123456789 xyz 9
+60 DEFGHI 123456789
diff --git a/tests/pr/tb3-0FF b/tests/pr/tb3-0FF
new file mode 100644
index 0000000..c9f0a6e
--- /dev/null
+++ b/tests/pr/tb3-0FF
@@ -0,0 +1,12 @@
+ 1 FF-Test: FF's at St 6 FF-Arangements: Emp 1
+2 Options -b -3 / -a 7 \ftext; \f\ntext; 2
+3 ------------------- 8 \f\ftext; \f\f\ntex 3 line truncation befor
+4 3456789 123456789 123 9 3456789 123456789 123 14 456789 123456789 123
+5 3 Columns downwards 10 zzzzzzzzzzzzzzzzzzz
+ 15 xyzxyzxyz XYZXYZXYZ 20 DEFGHI 123 5
+16 456789 123456789 xyz 1 6
+7 2 27 no truncation before
+8 3 28 no trunc
+9 3456789 ab 4
+ 29 xyzxyzxyz XYZXYZXYZ 1 3
+30 456789 123456789 xyz 2 3456789 abcdefghi
diff --git a/tests/pr/tb3-FF b/tests/pr/tb3-FF
new file mode 100644
index 0000000..a439f22
--- /dev/null
+++ b/tests/pr/tb3-FF
@@ -0,0 +1,22 @@
+1 FF-Test: FF's in Te 6 FF-Arangements: One 1
+2 Options -b -3 / -a 7 text\f\f\n; text\f\ 2
+3 ------------------- 8 \f\f\n; \f\n\f\n; 3 line truncation befor
+4 3456789 123456789 123 9 14 456789 123456789 123
+5 3 Columns downwards 10 zzzzzzzzzzzzzzzzzzz
+ 15 xyzxyzxyz XYZXYZXYZ 20 DEFGHI 123 5
+16 456789 123456789 xyz 1 6
+7 2 27 no truncation before
+8 3 28 no trunc
+9 3456789 ab 4
+ 29 xyzxyzxyz XYZXYZXYZ 4 9 3456789 abcdefghi
+30 456789 123456789 xyz 5 40 DEFGHI 123456789
+1 6 41 yzxyzxyz XYZXYZXYZ a
+2 3456789 abcdefghi 7 42 456789 123456789 abc
+3 8
+ 43 xyzxyzxyz XYZXYZXYZ 8 3
+44 456789 123456789 xyz 9 4
+5 50 55 yzxyzxyz XYZXYZXYZ a
+6 1 56 456789 123456789 abc
+7 2
+ 57 xyzxyzxyz XYZXYZXYZ 9 60 DEFGHI 123456789
+58 456789 123456789 xyz
diff --git a/tests/pr/tn b/tests/pr/tn
new file mode 100644
index 0000000..8bd50ba
--- /dev/null
+++ b/tests/pr/tn
@@ -0,0 +1,63 @@
+1 Test-INPUT: "Without FF set by Hand" V
+2 Options -b -3 [+2|+3] [-l 15|8] [-f]
+3 Options -a -3 [+2|+3] [-l 15|8] [-f]
+4 Options [+2|+3] [-l 24|17] [-f]
+5
+6 --------------------------------------------
+7 3456789 123456789 123456789 123456789 12345678
+8 3 Columns downwards, across, ...:
+9 With columns use <= 5 text lines/page,
+10 without -f e.g.: -l 15 = total lines/page,
+1 with -f e.g. : -l 8 -f
+2
+3 line truncation before new page; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before nwe page; (r_l-test):
+28 no trunc
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
+1
+2
+3 ------- EOF -------- EOF -------- EOF -------
diff --git a/tests/pr/tn2e5o3-t_tab b/tests/pr/tn2e5o3-t_tab
new file mode 100644
index 0000000..5d9207e
--- /dev/null
+++ b/tests/pr/tn2e5o3-t_tab
@@ -0,0 +1,2 @@
+ 1 aaa abcde fghij 3 ccc abcde fghij
+ 2 bbb abcde fghij 4 ddd abcde fghij
diff --git a/tests/pr/tn2e8-t_tab b/tests/pr/tn2e8-t_tab
new file mode 100644
index 0000000..c8ddb6d
--- /dev/null
+++ b/tests/pr/tn2e8-t_tab
@@ -0,0 +1,2 @@
+ 1 aaa abcde fgh 3 ccc abcde fgh
+ 2 bbb abcde fgh 4 ddd abcde fgh
diff --git a/tests/pr/tn2e8o3-t_tab b/tests/pr/tn2e8o3-t_tab
new file mode 100644
index 0000000..e901d5f
--- /dev/null
+++ b/tests/pr/tn2e8o3-t_tab
@@ -0,0 +1,2 @@
+ 1 aaa abcde fgh 3 ccc abcde fgh
+ 2 bbb abcde fgh 4 ddd abcde fgh
diff --git a/tests/pr/tn_2e8-t_tab b/tests/pr/tn_2e8-t_tab
new file mode 100644
index 0000000..c0b85a0
--- /dev/null
+++ b/tests/pr/tn_2e8-t_tab
@@ -0,0 +1,2 @@
+ 1:aaa abcde fgh 3:ccc abcde fgh
+ 2:bbb abcde fgh 4:ddd abcde fgh
diff --git a/tests/pr/tn_2e8S-t_tab b/tests/pr/tn_2e8S-t_tab
new file mode 100644
index 0000000..debb335
--- /dev/null
+++ b/tests/pr/tn_2e8S-t_tab
@@ -0,0 +1,2 @@
+ 1:aaa abcde fg---- 3:ccc abcde fg
+ 2:bbb abcde fg---- 4:ddd abcde fg
diff --git a/tests/pr/tne8-t_tab b/tests/pr/tne8-t_tab
new file mode 100644
index 0000000..a38d0c5
--- /dev/null
+++ b/tests/pr/tne8-t_tab
@@ -0,0 +1,4 @@
+ 1 aaa abcde fghijklmnopqrstuvw
+ 2 bbb abcde fghijklmnopqrstuvw
+ 3 ccc abcde fghijklmnopqrstuvw
+ 4 ddd abcde fghijklmnopqrstuvw
diff --git a/tests/pr/tne8o3-t_tab b/tests/pr/tne8o3-t_tab
new file mode 100644
index 0000000..69aff8f
--- /dev/null
+++ b/tests/pr/tne8o3-t_tab
@@ -0,0 +1,4 @@
+ 1 aaa abcde fghijklmnopqrstuvw
+ 2 bbb abcde fghijklmnopqrstuvw
+ 3 ccc abcde fghijklmnopqrstuvw
+ 4 ddd abcde fghijklmnopqrstuvw
diff --git a/tests/pr/tt-0FF b/tests/pr/tt-0FF
new file mode 100644
index 0000000..67802ac
--- /dev/null
+++ b/tests/pr/tt-0FF
@@ -0,0 +1,33 @@
+1 FF-Test: FF's at Start of File V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: Empty Pages at start
+7 \ftext; \f\ntext;
+8 \f\ftext; \f\f\ntext; \f\n\ftext; \f\n\f\n;
+9 3456789 123456789 123456789
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
diff --git a/tests/pr/tt-FF b/tests/pr/tt-FF
new file mode 100644
index 0000000..b60ab95
--- /dev/null
+++ b/tests/pr/tt-FF
@@ -0,0 +1,60 @@
+1 FF-Test: FF's in Text V
+2 Options -b -3 / -a -3 / ...
+3 --------------------------------------------
+4 3456789 123456789 123456789 123456789 12345678
+5 3 Columns downwards ..., <= 5 lines per page
+6 FF-Arangements: One Empty Page
+7 text\f\f\n; text\f\n\ftext; \f\ftext;
+8 \f\f\n; \f\n\f\n;
+9
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+2 12345678
+3 line truncation before FF; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+28 no trunc
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
diff --git a/tests/pr/tt-bl b/tests/pr/tt-bl
new file mode 100644
index 0000000..0195727
--- /dev/null
+++ b/tests/pr/tt-bl
@@ -0,0 +1,76 @@
+1 FF-Test: FF's in Text V
+2 Options -n;
+3 numbering lines with skiped pages;
+4 numbering blanc lines (no. 5,12,13,23,28)
+
+6 3456789 123456789 123456789 123456789 12345678
+7 3 Columns downwards ..., <= 5 lines per page
+8
+9
+10 zzzzzzzzzzzzzzzzzzzzzzzzzz123456789
+1 12345678
+
+
+14 456789 123456789 123456789 123456789
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+
+
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before FF; (r_l-test):
+
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+
+
+
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
+61 yzxyzxyz XYZXYZXYZ abcabcab
+62 456789 123456789 abcdefghi ABCDEDFHI
+63 xyzxyzxyz XYZXYZXYZ abcabcab
+64 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+70 456789 123456789 abcdefghi ABCDEDFHI
+1 12345678
+
+
+
+74 yzxyzxyz XYZXYZXYZ abcabcab
+75 456789 123456789 abcdefghi ABCDEDFHI
diff --git a/tests/pr/tt-t b/tests/pr/tt-t
new file mode 100644
index 0000000..8bd50ba
--- /dev/null
+++ b/tests/pr/tt-t
@@ -0,0 +1,63 @@
+1 Test-INPUT: "Without FF set by Hand" V
+2 Options -b -3 [+2|+3] [-l 15|8] [-f]
+3 Options -a -3 [+2|+3] [-l 15|8] [-f]
+4 Options [+2|+3] [-l 24|17] [-f]
+5
+6 --------------------------------------------
+7 3456789 123456789 123456789 123456789 12345678
+8 3 Columns downwards, across, ...:
+9 With columns use <= 5 text lines/page,
+10 without -f e.g.: -l 15 = total lines/page,
+1 with -f e.g. : -l 8 -f
+2
+3 line truncation before new page; r_r_o_l-test:
+14 456789 123456789 123456789 123456789
+15 xyzxyzxyz XYZXYZXYZ abcabcab
+16 456789 123456789 xyzxyzxyz XYZXYZXYZ
+7 12345678
+8 12345678
+9 3456789 ab
+20 DEFGHI 123
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+27 no truncation before nwe page; (r_l-test):
+28 no trunc
+29 xyzxyzxyz XYZXYZXYZ abcabcab
+30 456789 123456789 xyzxyzxyz XYZXYZXYZ
+1 12345678
+2 3456789 abcdefghi
+3 12345678
+4 12345678
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 3456789 abcdefghi
+40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ abcabcab
+42 456789 123456789 abcdefghi ABCDEDFHI
+43 xyzxyzxyz XYZXYZXYZ abcabcab
+44 456789 123456789 xyzxyzxyz XYZXYZXYZ
+5 12345678
+6 12345678
+7 12345678
+8 12345678
+9 12345678
+50 12345678
+1 12345678
+2 12345678
+3 12345678
+4 12345678
+55 yzxyzxyz XYZXYZXYZ abcabcab
+56 456789 123456789 abcdefghi ABCDEDFHI
+57 xyzxyzxyz XYZXYZXYZ abcabcab
+58 456789 123456789 xyzxyzxyz XYZXYZXYZ
+9 12345678
+60 DEFGHI 123456789
+1
+2
+3 ------- EOF -------- EOF -------- EOF -------
diff --git a/tests/pr/tta3-0FF b/tests/pr/tta3-0FF
new file mode 100644
index 0000000..bbddda1
--- /dev/null
+++ b/tests/pr/tta3-0FF
@@ -0,0 +1,12 @@
+1 FF-Test: FF's at St 2 Options -b -3 / -a 3 -------------------
+4 3456789 123456789 123 5 3 Columns downwards 6 FF-Arangements: Emp
+7 \ftext; \f\ntext; 8 \f\ftext; \f\f\ntex 9 3456789 123456789 123
+10 zzzzzzzzzzzzzzzzzzz 1 2
+3 line truncation befor 14 456789 123456789 123
+15 xyzxyzxyz XYZXYZXYZ 16 456789 123456789 xyz 7
+8 9 3456789 ab 20 DEFGHI 123
+1 2 3
+4 5 6
+27 no truncation before 28 no trunc
+29 xyzxyzxyz XYZXYZXYZ 30 456789 123456789 xyz 1
+2 3456789 abcdefghi 3
diff --git a/tests/pr/tta3-FF b/tests/pr/tta3-FF
new file mode 100644
index 0000000..42b6ee2
--- /dev/null
+++ b/tests/pr/tta3-FF
@@ -0,0 +1,22 @@
+1 FF-Test: FF's in Te 2 Options -b -3 / -a 3 -------------------
+4 3456789 123456789 123 5 3 Columns downwards 6 FF-Arangements: One
+7 text\f\f\n; text\f\ 8 \f\f\n; \f\n\f\n; 9
+10 zzzzzzzzzzzzzzzzzzz 1 2
+3 line truncation befor 14 456789 123456789 123
+15 xyzxyzxyz XYZXYZXYZ 16 456789 123456789 xyz 7
+8 9 3456789 ab 20 DEFGHI 123
+1 2 3
+4 5 6
+27 no truncation before 28 no trunc
+29 xyzxyzxyz XYZXYZXYZ 30 456789 123456789 xyz 1
+2 3456789 abcdefghi 3 4
+5 6 7
+8 9 3456789 abcdefghi 40 DEFGHI 123456789
+41 yzxyzxyz XYZXYZXYZ a 42 456789 123456789 abc
+43 xyzxyzxyz XYZXYZXYZ 44 456789 123456789 xyz 5
+6 7 8
+9 50 1
+2 3 4
+55 yzxyzxyz XYZXYZXYZ a 56 456789 123456789 abc
+57 xyzxyzxyz XYZXYZXYZ 58 456789 123456789 xyz 9
+60 DEFGHI 123456789
diff --git a/tests/pr/ttb3-0FF b/tests/pr/ttb3-0FF
new file mode 100644
index 0000000..cc953a5
--- /dev/null
+++ b/tests/pr/ttb3-0FF
@@ -0,0 +1,12 @@
+1 FF-Test: FF's at St 6 FF-Arangements: Emp 1
+2 Options -b -3 / -a 7 \ftext; \f\ntext; 2
+3 ------------------- 8 \f\ftext; \f\f\ntex 3 line truncation befor
+4 3456789 123456789 123 9 3456789 123456789 123 14 456789 123456789 123
+5 3 Columns downwards 10 zzzzzzzzzzzzzzzzzzz
+15 xyzxyzxyz XYZXYZXYZ 20 DEFGHI 123 5
+16 456789 123456789 xyz 1 6
+7 2 27 no truncation before
+8 3 28 no trunc
+9 3456789 ab 4
+29 xyzxyzxyz XYZXYZXYZ 1 3
+30 456789 123456789 xyz 2 3456789 abcdefghi
diff --git a/tests/pr/ttb3-FF b/tests/pr/ttb3-FF
new file mode 100644
index 0000000..eda20a4
--- /dev/null
+++ b/tests/pr/ttb3-FF
@@ -0,0 +1,22 @@
+1 FF-Test: FF's in Te 6 FF-Arangements: One 1
+2 Options -b -3 / -a 7 text\f\f\n; text\f\ 2
+3 ------------------- 8 \f\f\n; \f\n\f\n; 3 line truncation befor
+4 3456789 123456789 123 9 14 456789 123456789 123
+5 3 Columns downwards 10 zzzzzzzzzzzzzzzzzzz
+15 xyzxyzxyz XYZXYZXYZ 20 DEFGHI 123 5
+16 456789 123456789 xyz 1 6
+7 2 27 no truncation before
+8 3 28 no trunc
+9 3456789 ab 4
+29 xyzxyzxyz XYZXYZXYZ 4 9 3456789 abcdefghi
+30 456789 123456789 xyz 5 40 DEFGHI 123456789
+1 6 41 yzxyzxyz XYZXYZXYZ a
+2 3456789 abcdefghi 7 42 456789 123456789 abc
+3 8
+43 xyzxyzxyz XYZXYZXYZ 8 3
+44 456789 123456789 xyz 9 4
+5 50 55 yzxyzxyz XYZXYZXYZ a
+6 1 56 456789 123456789 abc
+7 2
+57 xyzxyzxyz XYZXYZXYZ 9 60 DEFGHI 123456789
+58 456789 123456789 xyz
diff --git a/tests/pr/w72l17f-ll b/tests/pr/w72l17f-ll
new file mode 100644
index 0000000..1cbbf4e
--- /dev/null
+++ b/tests/pr/w72l17f-ll
@@ -0,0 +1,92 @@
+-- Date/Time -- x Page 1
+
+
+1<<< -Test: FF's in Text >>>
+2<<< -b -3 / -a -3 / ... >>>
+3<<< >>>
+4<<< 123456789 123456789 123456789 123456789 123456789 123456789 123456789 >>>
+
+6<<< -Arangements: One Empty Page >>>
+7<<< \f\f\n; text\f\n\ftext; \f\ftext; >>>
+8<<< f\f\n; \f\n\f\n; >>>
+9<<< >>>
+10<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< truncation before FF; r_r_o_l-test: >>>
+14<<< 123456789 123456789 123456789 >>>
+ -- Date/Time -- x Page 2
+
+
+
+ -- Date/Time -- x Page 3
+
+
+15<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+16<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+7<<< >>>
+8<<< >>>
+9<<< >>>
+20<<< >>>
+1<<< >>>
+
+
+4<<< >>>
+5<<< >>>
+6<<< >>>
+27<<< truncation before FF; (r_l-test): >>>
+28<<< trunc
+ -- Date/Time -- x Page 4
+
+
+
+ -- Date/Time -- x Page 5
+
+
+29<<<xyzxyzxyz XYZXYZXYZ abcabcab >>>
+30<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+1<<< >>>
+2<<< abcdefghi >>>
+3<<< >>>
+4<<< >>>
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< abcdefghi >>>
+40<<< 123456789 >>>
+41<<< XYZXYZXYZ abcabcab >>>
+42<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 6
+
+
+
+ -- Date/Time -- x Page 7
+
+
+
+ -- Date/Time -- x Page 8
+
+
+43<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+44<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+5<<< >>>
+6<<< >>>
+7<<< >>>
+8<<< >>>
+9<<< >>>
+50<<< >>>
+1<<< >>>
+2<<< >>>
+3<<< >>>
+4<<< >>>
+55<<< XYZXYZXYZ abcabcab >>>
+56<<< 123456789 abcdefghi ABCDEDFHI >>>
+ -- Date/Time -- x Page 9
+
+
+57<<< xyzxyzxyz XYZXYZXYZ abcabcab >>>
+58<<< 123456789 xyzxyzxyz XYZXYZXYZ >>>
+9<<< >>>
+60<<< 123456789 >>>
+ \ No newline at end of file
diff --git a/tests/priv-check b/tests/priv-check
new file mode 100644
index 0000000..b0d6c92
--- /dev/null
+++ b/tests/priv-check
@@ -0,0 +1,94 @@
+# -*- sh -*-
+# Source this file at the beginning of a test that works
+# only when run as root or as non-root.
+
+# Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+case "$PRIV_CHECK_ARG" in
+ require-root) who='as root';;
+ require-non-root) who='by an unprivileged user';;
+ *) echo "Usage: PRIV_CHECK_ARG={require-root|require-non-root} . priv-check"\
+ 1>&2; exit 1;;
+esac
+
+# Make sure id -u succeeds.
+my_uid=`id -u`
+test $? = 0 || {
+ echo "$0: cannot run \`id -u'" 1>&2
+ (exit 1); exit 1
+}
+
+# Make sure it gives valid output.
+case $my_uid in
+ *[!0-9]*)
+ echo "$0: invalid output (\`$my_uid') from \`id -u'" 1>&2
+ (exit 1); exit 1
+ ;;
+ *) ;;
+esac
+
+test $my_uid = 0 && \
+{
+ # When running as root, always ensure that we have a valid non-root username.
+ # As non-root, don't do anything, since we won't be running setuidgid.
+ : ${NON_ROOT_USERNAME=nobody}
+
+ # Ensure that the supplied username is valid and with UID != 0.
+ coreutils_non_root_uid=`id -u $NON_ROOT_USERNAME`
+ test $? = 0 || \
+ {
+ echo "$0: This command failed: \`id -u $NON_ROOT_USERNAME'" 1>&2
+ echo "$0: Skipping this test. To enable it, set the envvar" 1>&2
+ echo "$0: NON_ROOT_USERNAME to a non-root user name." 1>&2
+ (exit 77); exit 77
+ }
+ test "$coreutils_non_root_uid" = 0 && \
+ {
+ echo "$0: The specified NON_ROOT_USERNAME ($NON_ROOT_USERNAME)" 1>&2
+ echo "$0: is invalid because its UID is 0." 1>&2
+ (exit 1); exit 1
+ }
+}
+
+give_msg=no
+case $PRIV_CHECK_ARG:$my_uid in
+ require-root:0) ;;
+ require-root:*) give_msg=yes ;;
+ require-non-root:0)
+ # `.' must be writable by $NON_ROOT_USERNAME
+ setuidgid $NON_ROOT_USERNAME test -w . ||
+ {
+ echo "$0: `pwd`: not writable by user \`$NON_ROOT_USERNAME'" 1>&2
+ echo "$0: skipping this test" 1>&2
+ (exit 77); exit 77
+ }
+ exec setuidgid $NON_ROOT_USERNAME env PATH="$PATH" $0
+ ;;
+ require-non-root:*) ;;
+esac
+
+test $give_msg = yes && {
+ cat <<EOF
+***************************
+NOTICE:
+$0: This test is being skipped, since it works only
+when run $who.
+***************************
+EOF
+ (exit 77); exit 77
+}
diff --git a/tests/readlink/Makefile.am b/tests/readlink/Makefile.am
new file mode 100644
index 0000000..4ff7ef3
--- /dev/null
+++ b/tests/readlink/Makefile.am
@@ -0,0 +1,6 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+TESTS = rl-1 can-e can-f can-m
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
diff --git a/tests/readlink/Makefile.in b/tests/readlink/Makefile.in
new file mode 100644
index 0000000..e2d7264
--- /dev/null
+++ b/tests/readlink/Makefile.in
@@ -0,0 +1,716 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/readlink
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = rl-1 can-e can-f can-m
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/readlink/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/readlink/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/readlink/can-e b/tests/readlink/can-e
new file mode 100755
index 0000000..5e30ffc
--- /dev/null
+++ b/tests/readlink/can-e
@@ -0,0 +1,136 @@
+#!/bin/sh
+# tests for canonicalize-existing mode (readlink -e).
+
+# Copyright (C) 2004, 2006, 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ readlink --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0" |sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap 'status=$?; (exit $status); exit $status' 1 2 13 15
+
+fail=1
+while :; do
+ bindir=`cd ../../src && pwd`|| break
+ my_pwd=`"$bindir/pwd"` || break
+
+ mkdir -p $tmp || break
+ cd $tmp || break
+
+ mkdir subdir removed || break
+ touch regfile || break
+
+ ln -s regfile link1 || break
+ ln -s subdir link2 || break
+ ln -s missing link3 || break
+ ln -s subdir/missing link4 || break
+
+ fail=0
+ break
+done
+
+if test $fail = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=1
+while :; do
+ cd "$pwd/$tmp/removed" || break
+
+ # Skip this test if the system doesn't let you remove the working directory.
+ if rmdir ../removed 2>/dev/null; then
+ v=`readlink -e .` && break
+ test -z "$v" || break
+ fi
+
+ cd "$pwd/$tmp" || break
+
+ fail=0
+ break
+done
+
+if test $fail = 1; then
+ (exit $fail); exit $fail
+fi
+
+for p in "" "$pwd/$tmp/"; do
+ fail=1
+
+ v=`readlink -e "${p}regfile"` || break
+ test "$v" = "$my_pwd/$tmp/regfile" || break
+
+ v=`readlink -e "${p}./regfile/"` && break
+ test -z "$v" || break
+
+ v=`readlink -e "${p}subdir"` || break
+ test "$v" = "$my_pwd/$tmp/subdir" || break
+
+ v=`readlink -e "${p}./subdir/"` || break
+ test "$v" = "$my_pwd/$tmp/subdir" || break
+
+ v=`readlink -e "${p}missing"` && break
+ test -z "$v" || break
+
+ v=`readlink -e "${p}./missing/"` && break
+ test -z "$v" || break
+
+ v=`readlink -e "${p}link1"` || break
+ test "$v" = "$my_pwd/$tmp/regfile" || break
+
+ v=`readlink -e "${p}./link1/"` && break
+ test -z "$v" || break
+
+ v=`readlink -e "${p}link1/more"` && break
+ test -z "$v" || break
+
+ v=`readlink -e "${p}link2"` || break
+ test "$v" = "$my_pwd/$tmp/subdir" || break
+
+ v=`readlink -e "${p}./link2/"` || break
+ test "$v" = "$my_pwd/$tmp/subdir" || break
+
+ v=`readlink -e "${p}link2/more"` && break
+ test -z "$v" || break
+
+ v=`readlink -e "${p}link3"` && break
+ test -z "$v" || break
+
+ v=`readlink -e "${p}./link3/"` && break
+ test -z "$v" || break
+
+ v=`readlink -e "${p}link3/more"` && break
+ test -z "$v" || break
+
+ v=`readlink -e "${p}link4"` && break
+ test -z "$v" || break
+
+ v=`readlink -e "${p}./link4/"` && break
+ test -z "$v" || break
+
+ v=`readlink -e "${p}link4/more"` && break
+ test -z "$v" || break
+
+ fail=0
+done
+
+(exit $fail); exit $fail
diff --git a/tests/readlink/can-f b/tests/readlink/can-f
new file mode 100755
index 0000000..c83e0ed
--- /dev/null
+++ b/tests/readlink/can-f
@@ -0,0 +1,169 @@
+#!/bin/sh
+# tests for canonicalize mode (readlink -f).
+
+# Copyright (C) 2004, 2006, 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ readlink --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0" |sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap 'status=$?; (exit $status); exit $status' 1 2 13 15
+
+fail=1
+while :; do
+ bindir=`cd ../../src && pwd`|| break
+ my_pwd=`"$bindir/pwd"` || break
+
+ mkdir -p $tmp || break
+ cd $tmp || break
+
+ mkdir subdir removed || break
+ touch regfile || break
+
+ ln -s regfile link1 || break
+ ln -s subdir link2 || break
+ ln -s missing link3 || break
+ ln -s subdir/missing link4 || break
+
+ fail=0
+ break
+done
+
+if test $fail = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=1
+while :; do
+ cd "$pwd/$tmp/removed" || break
+
+ # Skip this test if the system doesn't let you remove the working directory.
+ if rmdir ../removed 2>/dev/null; then
+ v=`readlink -f .` && break
+ test -z "$v" || break
+ fi
+
+ cd "$pwd/$tmp" || break
+
+ fail=0
+ break
+done
+
+if test $fail = 1; then
+ (exit $fail); exit $fail
+fi
+
+for p in "" "$pwd/$tmp/"; do
+ fail=1
+
+ v=`readlink -f "${p}regfile"` || break
+ test "$v" = "$my_pwd/$tmp/regfile" || break
+
+ v=`readlink -f "${p}./regfile/"` && break
+ test -z "$v" || break
+
+ v=`readlink -f "${p}regfile/more"` && break
+ test -z "$v" || break
+
+ v=`readlink -f "${p}./regfile/more/"` && break
+ test -z "$v" || break
+
+ v=`readlink -f "${p}subdir"` || break
+ test "$v" = "$my_pwd/$tmp/subdir" || break
+
+ v=`readlink -f "${p}./subdir/"` || break
+ test "$v" = "$my_pwd/$tmp/subdir" || break
+
+ v=`readlink -f "${p}subdir/more"` || break
+ test "$v" = "$my_pwd/$tmp/subdir/more" || break
+
+ v=`readlink -f "${p}./subdir/more/"` && break
+ test -z "$v" || break
+
+ v=`readlink -f "${p}missing"` || break
+ test "$v" = "$my_pwd/$tmp/missing" || break
+
+ v=`readlink -f "${p}./missing/"` && break
+ test -z "$v" || break
+
+ v=`readlink -f "${p}missing/more"` && break
+ test -z "$v" || break
+
+ v=`readlink -f "${p}./missing/more/"` && break
+ test -z "$v" || break
+
+ v=`readlink -f "${p}link1"` || break
+ test "$v" = "$my_pwd/$tmp/regfile" || break
+
+ v=`readlink -f "${p}./link1/"` && break
+ test -z "$v" || break
+
+ v=`readlink -f "${p}link1/more"` && break
+ test -z "$v" || break
+
+ v=`readlink -f "${p}./link1/more/"` && break
+ test -z "$v" || break
+
+ v=`readlink -f "${p}link2"` || break
+ test "$v" = "$my_pwd/$tmp/subdir" || break
+
+ v=`readlink -f "${p}./link2/"` || break
+ test "$v" = "$my_pwd/$tmp/subdir" || break
+
+ v=`readlink -f "${p}link2/more"` || break
+ test "$v" = "$my_pwd/$tmp/subdir/more" || break
+
+ v=`readlink -f "${p}./link2/more/"` && break
+ test -z "$v" || break
+
+ v=`readlink -f "${p}link2/more/more2"` && break
+ test -z "$v" || break
+
+ v=`readlink -f "${p}./link2/more/more2/"` && break
+ test -z "$v" || break
+
+ v=`readlink -f "${p}link3"` || break
+ test "$v" = "$my_pwd/$tmp/missing" || break
+
+ v=`readlink -f "${p}./link3/"` && break
+ test -z "$v" || break
+
+ v=`readlink -f "${p}link3/more"` && break
+ test -z "$v" || break
+
+ v=`readlink -f "${p}./link3/more/"` && break
+ test -z "$v" || break
+
+ v=`readlink -f "${p}link4"` || break
+ test "$v" = "$my_pwd/$tmp/subdir/missing" || break
+
+ v=`readlink -f "${p}./link4/"` && break
+ test -z "$v" || break
+
+ v=`readlink -f "${p}link4/more"` && break
+ test -z "$v" || break
+
+ fail=0
+done
+
+(exit $fail); exit $fail
diff --git a/tests/readlink/can-m b/tests/readlink/can-m
new file mode 100755
index 0000000..1d67c65
--- /dev/null
+++ b/tests/readlink/can-m
@@ -0,0 +1,172 @@
+#!/bin/sh
+# tests for canonicalize-missing mode (readlink -m).
+
+# Copyright (C) 2004, 2006, 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ readlink --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0" |sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap 'status=$?; (exit $status); exit $status' 1 2 13 15
+
+fail=1
+while :; do
+ bindir=`cd ../../src && pwd`|| break
+ my_pwd=`"$bindir/pwd"` || break
+
+ mkdir -p $tmp || break
+ cd $tmp || break
+
+ mkdir subdir removed || break
+ touch regfile || break
+
+ ln -s regfile link1 || break
+ ln -s subdir link2 || break
+ ln -s missing link3 || break
+ ln -s subdir/missing link4 || break
+
+ fail=0
+ break
+done
+
+if test $fail = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=1
+while :; do
+ cd "$pwd/$tmp/removed" || break
+
+ # Skip this test if the system doesn't let you remove the working directory.
+ if rmdir ../removed 2>/dev/null; then
+ v=`readlink -m .` && break
+ test -z "$v" || break
+ fi
+
+ cd "$pwd/$tmp" || break
+
+ fail=0
+ break
+done
+
+if test $fail = 1; then
+ (exit $fail); exit $fail
+fi
+
+for p in "" "$pwd/$tmp/"; do
+ fail=1
+
+ v=`readlink -m "${p}regfile"` || break
+ test "$v" = "$my_pwd/$tmp/regfile" || break
+
+ v=`readlink -m "${p}./regfile/"` || break
+ test "$v" = "$my_pwd/$tmp/regfile" || break
+
+ v=`readlink -m "${p}regfile/more"` || break
+ test "$v" = "$my_pwd/$tmp/regfile/more" || break
+
+ v=`readlink -m "${p}./regfile/more/"` || break
+ test "$v" = "$my_pwd/$tmp/regfile/more" || break
+
+ v=`readlink -m "${p}subdir"` || break
+ test "$v" = "$my_pwd/$tmp/subdir" || break
+
+ v=`readlink -m "${p}./subdir/"` || break
+ test "$v" = "$my_pwd/$tmp/subdir" || break
+
+ v=`readlink -m "${p}subdir/more"` || break
+ test "$v" = "$my_pwd/$tmp/subdir/more" || break
+
+ v=`readlink -m "${p}./subdir/more/"` || break
+ test "$v" = "$my_pwd/$tmp/subdir/more" || break
+
+ v=`readlink -m "${p}missing"` || break
+ test "$v" = "$my_pwd/$tmp/missing" || break
+
+ v=`readlink -m "${p}./missing/"` || break
+ test "$v" = "$my_pwd/$tmp/missing" || break
+
+ v=`readlink -m "${p}missing/more"` || break
+ test "$v" = "$my_pwd/$tmp/missing/more" || break
+
+ v=`readlink -m "${p}./missing/more/"` || break
+ test "$v" = "$my_pwd/$tmp/missing/more" || break
+
+ v=`readlink -m "${p}link1"` || break
+ test "$v" = "$my_pwd/$tmp/regfile" || break
+
+ v=`readlink -m "${p}./link1/"` || break
+ test "$v" = "$my_pwd/$tmp/regfile" || break
+
+ v=`readlink -m "${p}link1/more"` || break
+ test "$v" = "$my_pwd/$tmp/regfile/more" || break
+
+ v=`readlink -m "${p}./link1/more/"` || break
+ test "$v" = "$my_pwd/$tmp/regfile/more" || break
+
+ v=`readlink -m "${p}link2"` || break
+ test "$v" = "$my_pwd/$tmp/subdir" || break
+
+ v=`readlink -m "${p}./link2/"` || break
+ test "$v" = "$my_pwd/$tmp/subdir" || break
+
+ v=`readlink -m "${p}link2/more"` || break
+ test "$v" = "$my_pwd/$tmp/subdir/more" || break
+
+ v=`readlink -m "${p}./link2/more/"` || break
+ test "$v" = "$my_pwd/$tmp/subdir/more" || break
+
+ v=`readlink -m "${p}link2/more/more2"` || break
+ test "$v" = "$my_pwd/$tmp/subdir/more/more2" || break
+
+ v=`readlink -m "${p}./link2/more/more2/"` || break
+ test "$v" = "$my_pwd/$tmp/subdir/more/more2" || break
+
+ v=`readlink -m "${p}link3"` || break
+ test "$v" = "$my_pwd/$tmp/missing" || break
+
+ v=`readlink -m "${p}./link3/"` || break
+ test "$v" = "$my_pwd/$tmp/missing" || break
+
+ v=`readlink -m "${p}link3/more"` || break
+ test "$v" = "$my_pwd/$tmp/missing/more" || break
+
+ v=`readlink -m "${p}./link3/more/"` || break
+ test "$v" = "$my_pwd/$tmp/missing/more" || break
+
+ v=`readlink -m "${p}link4"` || break
+ test "$v" = "$my_pwd/$tmp/subdir/missing" || break
+
+ v=`readlink -m "${p}./link4/"` || break
+ test "$v" = "$my_pwd/$tmp/subdir/missing" || break
+
+ v=`readlink -m "${p}link4/more"` || break
+ test "$v" = "$my_pwd/$tmp/subdir/missing/more" || break
+
+ v=`readlink -m "${p}./link4/more/"` || break
+ test "$v" = "$my_pwd/$tmp/subdir/missing/more" || break
+
+ fail=0
+done
+
+(exit $fail); exit $fail
diff --git a/tests/readlink/rl-1 b/tests/readlink/rl-1
new file mode 100755
index 0000000..d9c8913
--- /dev/null
+++ b/tests/readlink/rl-1
@@ -0,0 +1,71 @@
+#!/bin/sh
+# test for readlink mode.
+
+# Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ readlink --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0" |sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap 'status=$?; (exit $status); exit $status' 1 2 13 15
+
+fail=1
+while :; do
+ mkdir -p $tmp || break
+ cd $tmp || break
+
+ mkdir subdir || break
+ touch regfile || break
+ ln -s regfile link1 || break
+ ln -s missing link2 || break
+
+ fail=0
+ break
+done
+
+if test $fail = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=1
+while :; do
+ v=`readlink link1` || break
+ test "$v" = regfile || break
+
+ v=`readlink link2` || break
+ test "$v" = missing || break
+
+ v=`readlink subdir` && break
+ test -z "$v" || break
+
+ v=`readlink regfile` && break
+ test -z "$v" || break
+
+ v=`readlink missing` && break
+ test -z "$v" || break
+
+ fail=0
+ break
+done
+
+(exit $fail); exit $fail
diff --git a/tests/rm/Makefile.am b/tests/rm/Makefile.am
new file mode 100644
index 0000000..e946489
--- /dev/null
+++ b/tests/rm/Makefile.am
@@ -0,0 +1,51 @@
+# Make coreutils tests for "rm". -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+TESTS = \
+ i-never \
+ fail-eacces \
+ one-file-system \
+ ignorable \
+ readdir-bug \
+ empty-inacc \
+ dir-nonrecur \
+ dot-rel \
+ inaccessible \
+ unread3 \
+ no-give-up \
+ dir-no-w \
+ fail-2eperm \
+ cycle i-no-r fail-eperm \
+ dangling-symlink rm1 rm2 rm3 rm4 rm5 \
+ unread2 r-1 r-2 r-3 r-4 i-1 ir-1 f-1 sunos-1 deep-1 hash \
+ interactive-always interactive-once \
+ isatty # unreadable empty-name
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ RM=../../src/rm \
+ MKDIR=../../src/mkdir \
+ CONFIG_HEADER=$(CONFIG_HEADER) \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PACKAGE_VERSION=$(PACKAGE_VERSION) \
+ PROG=rm
diff --git a/tests/rm/Makefile.in b/tests/rm/Makefile.in
new file mode 100644
index 0000000..391f4e1
--- /dev/null
+++ b/tests/rm/Makefile.in
@@ -0,0 +1,763 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils tests for "rm". -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/rm
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = \
+ i-never \
+ fail-eacces \
+ one-file-system \
+ ignorable \
+ readdir-bug \
+ empty-inacc \
+ dir-nonrecur \
+ dot-rel \
+ inaccessible \
+ unread3 \
+ no-give-up \
+ dir-no-w \
+ fail-2eperm \
+ cycle i-no-r fail-eperm \
+ dangling-symlink rm1 rm2 rm3 rm4 rm5 \
+ unread2 r-1 r-2 r-3 r-4 i-1 ir-1 f-1 sunos-1 deep-1 hash \
+ interactive-always interactive-once \
+ isatty # unreadable empty-name
+
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ RM=../../src/rm \
+ MKDIR=../../src/mkdir \
+ CONFIG_HEADER=$(CONFIG_HEADER) \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PACKAGE_VERSION=$(PACKAGE_VERSION) \
+ PROG=rm
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/rm/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/rm/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/rm/cycle b/tests/rm/cycle
new file mode 100755
index 0000000..22936ee
--- /dev/null
+++ b/tests/rm/cycle
@@ -0,0 +1,57 @@
+#!/bin/sh
+# rm (coreutils-4.5.4) could be tricked into mistakenly reporting a cycle.
+
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p a/b
+touch a/b/file
+chmod u-w a/b
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+rm -rf a a 2>&1 | sed 's/:[^:]*$//' > out || fail=1
+cat <<\EOF > exp
+rm: cannot remove `a/b/file'
+rm: cannot remove `a/b/file'
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/rm/dangling-symlink b/tests/rm/dangling-symlink
new file mode 100755
index 0000000..17794e0
--- /dev/null
+++ b/tests/rm/dangling-symlink
@@ -0,0 +1,60 @@
+#!/bin/sh
+# rm should not prompt before removing a dangling symlink.
+# Likewise for a non-dangling symlink.
+# But for fileutils-4.1.9, it would do the former and
+# for fileutils-4.1.10 the latter.
+
+# Copyright (C) 2002, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+ln -s no-file dangle
+ln -s / symlink
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+rm ---presume-input-tty dangle symlink &
+pid=$!
+# The buggy rm (fileutils-4.1.9) would hang here, waiting for input.
+
+# Give the working rm a chance to remove the file.
+sleep 1
+
+# The file must no longer exist.
+ls -l dangle > /dev/null 2>&1 && fail=1
+ls -l symlink > /dev/null 2>&1 && fail=1
+
+kill $pid > /dev/null 2>&1
+
+(exit $fail); exit $fail
diff --git a/tests/rm/deep-1 b/tests/rm/deep-1
new file mode 100755
index 0000000..4192886
--- /dev/null
+++ b/tests/rm/deep-1
@@ -0,0 +1,63 @@
+#!/bin/sh
+# Test "rm" with a deep hierarchy.
+
+# Copyright (C) 1997, 2002, 2003, 2004, 2006 Free Software Foundation,
+# Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# This is a bit of a torture test for mkdir -p, too.
+# GNU rm performs *much* better on systems that have a d_type member
+# in the directory structure because then it does only one stat per
+# command line argument.
+
+# If this test takes too long on your system, blame the OS.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+umask 022
+
+fail=0
+
+k20=/k/k/k/k/k/k/k/k/k/k/k/k/k/k/k/k/k/k/k/k
+k200=$k20$k20$k20$k20$k20$k20$k20$k20$k20$k20
+
+# Be careful not to exceed max file name length (usu 512?).
+# Doing so wouldn't affect GNU mkdir or GNU rm, but any tool that
+# operates on the full pathname (like `test') would choke.
+k_deep=$k200$k200
+
+# Create a directory in $tmp with lots of `k' components.
+deep=$tmp$k_deep
+mkdir -p $deep || fail=1
+
+# Make sure the deep dir was created.
+test -d $deep || fail=1
+
+rm -r $tmp || fail=1
+
+# Make sure all of $tmp was deleted.
+test -d $tmp && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/rm/dir-no-w b/tests/rm/dir-no-w
new file mode 100755
index 0000000..27aba6a
--- /dev/null
+++ b/tests/rm/dir-no-w
@@ -0,0 +1,64 @@
+#!/bin/sh
+# rm (without -r) must give a diagnostic for any directory.
+# It must not prompt, even if that directory is unwritable.
+
+# Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir --mode=0500 unwritable-dir || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# For rm from coreutils-5.0.1, this would prompt.
+rm ---presume-input-tty unwritable-dir < /dev/null > out-t 2>&1 && fail=1
+cat <<\EOF > exp || fail=1
+rm: cannot remove `unwritable-dir': Is a directory
+EOF
+
+# When run by a non-privileged user we get this:
+# rm: cannot remove directory `unwritable-dir': Is a directory
+# When run by root we get this:
+# rm: cannot remove `unwritable-dir': Is a directory
+# Normalize the message.
+sed 's/remove directory/remove/' out-t > out
+rm -f out-t
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/rm/dir-nonrecur b/tests/rm/dir-nonrecur
new file mode 100755
index 0000000..5b09821
--- /dev/null
+++ b/tests/rm/dir-nonrecur
@@ -0,0 +1,55 @@
+#!/bin/sh
+# Ensure that `rm dir' (i.e., without --recursive) gives a reasonable
+# diagnostic when failing.
+
+# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir d || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+rm d 2> out && fail=1
+cat <<\EOF > exp || fail=1
+rm: cannot remove `d': Is a directory
+EOF
+
+# Before coreutils-5.93 this test would fail on Solaris 9 and newer.
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/rm/dot-rel b/tests/rm/dot-rel
new file mode 100755
index 0000000..2ffa49e
--- /dev/null
+++ b/tests/rm/dot-rel
@@ -0,0 +1,48 @@
+#!/bin/sh
+# Use rm -r to remove two non-empty dot-relative directories.
+# This would have failed between 2004-10-18 and 2004-10-21.
+
+# Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir a b || framework_failure=1
+touch a/f b/f || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+rm -r a b || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/rm/empty-inacc b/tests/rm/empty-inacc
new file mode 100755
index 0000000..bc04068
--- /dev/null
+++ b/tests/rm/empty-inacc
@@ -0,0 +1,57 @@
+#!/bin/sh
+# Ensure that rm -rf removes an empty-and-inaccessible directory.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -m0 inacc || framework_failure=1
+
+# Also exercise the different code path that's taken for a directory
+# that is empty (hence removable) and unreadable.
+mkdir -m a-r -p a/unreadable
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# This would fail for e.g., coreutils-5.93.
+rm -rf inacc || fail=1
+test -d inacc && fail=1
+
+# This would fail for e.g., coreutils-5.97.
+rm -rf a || fail=1
+test -d a && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/rm/f-1 b/tests/rm/f-1
new file mode 100755
index 0000000..33041a3
--- /dev/null
+++ b/tests/rm/f-1
@@ -0,0 +1,44 @@
+#!/bin/sh
+# Test "rm -f" with a nonexistent file.
+
+# Copyright (C) 1997, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+test=f-1
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+test_failure=0
+mkdir -p $tmp || test_failure=1
+
+if test $test_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+rm -f $tmp/no-such-file || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/rm/fail-2eperm b/tests/rm/fail-2eperm
new file mode 100755
index 0000000..0761950
--- /dev/null
+++ b/tests/rm/fail-2eperm
@@ -0,0 +1,75 @@
+#!/bin/sh
+# Like fail-eperm, but the failure must be for a file encountered
+# while trying to remove the containing directory with the sticky bit set.
+
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+# The containing directory must be owned by the user who eventually runs rm.
+chown $NON_ROOT_USERNAME .
+
+mkdir a || framework_failure=1
+chmod 1777 a || framework_failure=1
+touch a/b || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Try to ensure that $NON_ROOT_USERNAME can access
+# the required version of rm.
+rm_version=`setuidgid $NON_ROOT_USERNAME rm --version|sed -n '1s/.* //p'`
+case $rm_version in
+ $PACKAGE_VERSION) ;;
+ *) echo "$0: cannot access required version ($PACKAGE_VERSION) of rm" 1>&2
+ fail=1 ;;
+esac
+setuidgid $NON_ROOT_USERNAME rm -rf a 2> out-t && fail=1
+
+# On some systems, we get `Not owner'. Convert it.
+# On other systems (HPUX), we get `Permission denied'. Convert it, too.
+onp='Operation not permitted'
+sed "s/Not owner/$onp/;s/Permission denied/$onp/" out-t > out
+
+cat <<\EOF > exp
+rm: cannot remove `a/b': Operation not permitted
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/rm/fail-eacces b/tests/rm/fail-eacces
new file mode 100755
index 0000000..b322848
--- /dev/null
+++ b/tests/rm/fail-eacces
@@ -0,0 +1,54 @@
+#!/bin/sh
+# Ensure that rm -rf unremovable-non-dir gives a diagnostic.
+
+# Copyright (C) 2006-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir d && touch d/f && chmod a-w d || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+rm -rf d/f 2> out && fail=1
+cat <<\EOF > exp
+rm: cannot remove `d/f': Permission denied
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/rm/fail-eperm b/tests/rm/fail-eperm
new file mode 100755
index 0000000..8801aba
--- /dev/null
+++ b/tests/rm/fail-eperm
@@ -0,0 +1,160 @@
+#!/bin/sh
+# -*- perl -*-
+# Ensure that rm gives the expected diagnostic when failing to remove a file
+# owned by some other user in a directory with the sticky bit set.
+
+# Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+# FIXME-someday: when run as root we don't need all of the
+# searching below. root can simply create the required
+# dir/files and run the test as someone else.
+
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ (exit 77); exit 77
+}
+
+ARGV_0=$0
+export ARGV_0
+
+exec $PERL -Tw -- - << \EOP
+require 5.003;
+use strict;
+
+(my $ME = $ENV{ARGV_0}) =~ s|.*/||;
+
+my $verbose = $ENV{VERBOSE} && $ENV{VERBOSE} eq 'yes';
+
+# Ensure that the diagnostics are in English.
+$ENV{LC_ALL} = 'C';
+
+# Set up a safe, well-known environment
+delete @ENV{qw(BASH_ENV CDPATH ENV PATH)};
+$ENV{IFS} = '';
+
+my @dir_list = qw(/tmp /var/tmp /usr/tmp);
+my $rm = '../../src/rm';
+
+# Find a directory with the sticky bit set.
+my $found_dir;
+my $found_file;
+foreach my $dir (@dir_list)
+ {
+ if (-d $dir && -k _ && -r _ && -w _ && -x _)
+ {
+ $found_dir = 1;
+
+ # Find a non-directory there that is owned by some other user.
+ opendir DIR_HANDLE, $dir
+ or die "$ME: couldn't open $dir: $!\n";
+
+ foreach my $f (readdir DIR_HANDLE)
+ {
+ # Consider only names containing "safe" characters.
+ $f =~ /^([-\@\w.]+)$/
+ or next;
+ $f = $1; # untaint $f
+
+ my $target_file = "$dir/$f";
+ $verbose
+ and warn "$ME: considering $target_file\n";
+
+ # Skip files owned by self, symlinks, and directories.
+ # It's not technically necessary to skip symlinks, but it's simpler.
+ # SVR4-like systems (e.g., Solaris 9) let you unlink files that
+ # you can write, so skip writable files too.
+ -l $target_file || -o _ || -d _ || -w _
+ and next;
+
+ $found_file = 1;
+
+ # Invoke rm on this file and ensure that we get the
+ # expected exit code and diagnostic.
+ my $cmd = "$rm -f -- $target_file";
+ open RM, "$cmd 2>&1 |"
+ or die "$ME: cannot execute `$cmd'\n";
+
+ my $line = <RM>;
+
+ close RM;
+ my $rc = $?;
+ if (0x80 < $rc)
+ {
+ my $status = $rc >> 8;
+ $status == 1
+ or die "$ME: unexpected exit status from `$cmd';\n"
+ . " got $status, expected 1\n";
+ }
+ else
+ {
+ # Terminated by a signal.
+ my $sig_num = $rc & 0x7F;
+ die "$ME: command `$cmd' died with signal $sig_num\n";
+ }
+
+ my $exp = "rm: cannot remove `$target_file':";
+ $line
+ or die "$ME: no output from `$cmd';\n"
+ . "expected something like `$exp ...'\n";
+
+ # Transform the actual diagnostic so that it starts with "rm:".
+ # Depending on your system, it might be "rm:" already, or
+ # "../../src/rm:".
+ $line =~ s,^\Q$rm\E:,rm:,;
+
+ my $regex = quotemeta $exp;
+ $line =~ /^$regex/
+ or die "$ME: unexpected diagnostic from `$cmd';\n"
+ . " got $line"
+ . " expected $exp ...\n";
+
+ last;
+ }
+
+ closedir DIR_HANDLE;
+ $found_file
+ and last;
+ }
+ }
+
+if ( ! $found_dir)
+ {
+ warn "$ME: couldn't find a directory with the sticky bit set;"
+ . " skipping this test\n";
+ exit 77;
+ }
+
+if ( ! $found_file)
+ {
+ warn "$ME: couldn't find a file not owned by you\n"
+ . " in any of the following directories:\n @dir_list\n"
+ . "...so, skipping this test\n";
+ exit 77;
+ }
+EOP
diff --git a/tests/rm/hash b/tests/rm/hash
new file mode 100755
index 0000000..036240c
--- /dev/null
+++ b/tests/rm/hash
@@ -0,0 +1,57 @@
+#!/bin/sh
+# Exercise a bug that was fixed in 4.0s.
+# Before then, rm would fail occasionally, sometimes via
+# a failed assertion, others with a seg fault.
+
+# Copyright (C) 2000, 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+. $srcdir/../expensive
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 || exit $?; exit $status' 0
+trap 'exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp
+
+# Create a hierarchy with 3*26 leaf directories, each at depth 153.
+echo "$0: creating 78 trees, each of depth 153; this will take a while..." >&2
+y=`seq 1 150|tr -sc '\n' y|tr '\n' /`
+for i in 1 2 3; do
+ for j in a b c d e f g h i j k l m n o p q r s t u v w x y z; do
+ mkdir -p t/$i/$j/$y || framework_failure=1
+ done
+done
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+
+rm -r t || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/rm/i-1 b/tests/rm/i-1
new file mode 100755
index 0000000..214292b
--- /dev/null
+++ b/tests/rm/i-1
@@ -0,0 +1,57 @@
+#!/bin/sh
+# Test "rm -i".
+
+# Copyright (C) 1997, 1998, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+test=i-1
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+test_failure=0
+mkdir -p $tmp || test_failure=1
+echo > $tmp/a || test_failure=1
+test -f $tmp/a || test_failure=1
+
+if test $test_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+echo y > $tmp/$test.Iy
+echo n > $tmp/$test.In
+
+fail=0
+rm -i $tmp/a < $tmp/$test.In > /dev/null 2>&1 || fail=1
+# The file should not have been removed.
+test -f $tmp/a || fail=1
+
+rm -i $tmp/a < $tmp/$test.Iy > /dev/null 2>&1 || fail=1
+# The file should have been removed this time.
+test -f $tmp/a && fail=1
+
+rm -rf $tmp
+
+(exit $fail); exit $fail
diff --git a/tests/rm/i-never b/tests/rm/i-never
new file mode 100755
index 0000000..f20e90e
--- /dev/null
+++ b/tests/rm/i-never
@@ -0,0 +1,53 @@
+#!/bin/sh
+# Ensure that rm --interactive=never works does not prompt, even for
+# an unwritable file.
+
+# Copyright (C) 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+touch f || framework_failure=1
+chmod 0 f || framework_failure=1
+touch exp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+rm --interactive=never f > out || fail=1
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/rm/i-no-r b/tests/rm/i-no-r
new file mode 100755
index 0000000..b23ff5e
--- /dev/null
+++ b/tests/rm/i-no-r
@@ -0,0 +1,52 @@
+#!/bin/sh
+# Since the rewrite for fileutils-4.1.9, `rm -i DIR' would mistakenly
+# recurse into directory DIR. rm -i (without -r) must fail in that case.
+# Fixed in coreutils-4.5.2.
+
+# Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir dir || framework_failure=1
+echo y > y || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# This must fail.
+rm -i dir < y > /dev/null 2>&1 && fail=1
+
+# The directory must remain.
+test -d dir || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/rm/ignorable b/tests/rm/ignorable
new file mode 100755
index 0000000..6036dd9
--- /dev/null
+++ b/tests/rm/ignorable
@@ -0,0 +1,49 @@
+#!/bin/sh
+# Ensure that rm -f existing-non-dir/anything exits successfully
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+touch existing-non-dir || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# With coreutils-6.3, this would exit nonzero. It should not.
+# Example from Andreas Schwab.
+rm -f existing-non-dir/f > out 2>&1 || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/rm/inaccessible b/tests/rm/inaccessible
new file mode 100755
index 0000000..02128d7
--- /dev/null
+++ b/tests/rm/inaccessible
@@ -0,0 +1,76 @@
+#!/bin/sh
+# Ensure that rm works even when run from a directory
+# for which the user has no access at all.
+
+# Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+. $srcdir/../lang-default
+
+# Skip this test if your system has neither the openat-style functions
+# nor /proc/self/fd support with which to emulate them.
+skip=yes
+grep '^#define HAVE_OPENAT' $CONFIG_HEADER > /dev/null && skip=no
+test -d /proc/self/fd && skip=no
+if test $skip = yes; then
+ echo 1>&2 "$0: no openat support, so skipping this test"
+ (exit 77); exit 77
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir abs1 abs2 no-access || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+p=$pwd/$tmp
+set +x
+(cd no-access; chmod 0 . && rm -r "$p/abs1" rel "$p/abs2") 2> out && fail=1
+test -d "$p/abs1" && fail=1
+test -d "$p/abs2" && fail=1
+
+cat <<\EOF > exp || fail=1
+rm: cannot remove `rel': Permission denied
+EOF
+
+# AIX 4.3.3 fails with a different diagnostic.
+# Transform their diagnostic
+# ...: The file access permissions do not allow the specified action.
+# to the expected one:
+sed 's/: The file access permissions.*/: Permission denied/'<out>o1;mv o1 out
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/rm/interactive-always b/tests/rm/interactive-always
new file mode 100755
index 0000000..7b81664
--- /dev/null
+++ b/tests/rm/interactive-always
@@ -0,0 +1,113 @@
+#!/bin/sh
+# Test the --interactive[=WHEN] changes added to coreutils 6.0
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+test=interactive-always
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+touch file1-1 file1-2 file2-1 file2-2 file3-1 file3-2 file4-1 file4-2 \
+ || framework_failure=1
+# If asked, answer no to first question, then yes to second.
+echo 'n
+y' > $test.I || framework_failure=1
+rm -f out err || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# The prompt has a trailing space, and no newline, so an extra
+# 'echo .' is inserted after each rm to make it obvious what was asked.
+
+echo 'no WHEN' > err || fail=1
+rm -R --interactive file1-* < $test.I >> out 2>> err || fail=1
+echo . >> err || fail=1
+test -f file1-1 || fail=1
+test -f file1-2 && fail=1
+
+echo 'WHEN=never' >> err || fail=1
+rm -R --interactive=never file2-* < $test.I >> out 2>> err || fail=1
+echo . >> err || fail=1
+test -f file2-1 && fail=1
+test -f file2-2 && fail=1
+
+echo 'WHEN=once' >> err || fail=1
+rm -R --interactive=once file3-* < $test.I >> out 2>> err || fail=1
+echo . >> err || fail=1
+test -f file3-1 || fail=1
+test -f file3-2 || fail=1
+
+echo 'WHEN=always' >> err || fail=1
+rm -R --interactive=always file4-* < $test.I >> out 2>> err || fail=1
+echo . >> err || fail=1
+test -f file4-1 || fail=1
+test -f file4-2 && fail=1
+
+echo '-f overrides --interactive' >> err || fail=1
+rm -R --interactive=once -f file1-* < $test.I >> out 2>> err || fail=1
+echo . >> err || fail=1
+test -f file1-1 && fail=1
+
+echo '--interactive overrides -f' >> err || fail=1
+rm -R -f --interactive=once file4-* < $test.I >> out 2>> err || fail=1
+echo . >> err || fail=1
+test -f file4-1 || fail=1
+
+cat <<\EOF > expout || fail=1
+EOF
+cat <<\EOF > experr || fail=1
+no WHEN
+rm: remove regular empty file `file1-1'? rm: remove regular empty file `file1-2'? .
+WHEN=never
+.
+WHEN=once
+rm: remove all arguments recursively? .
+WHEN=always
+rm: remove regular empty file `file4-1'? rm: remove regular empty file `file4-2'? .
+-f overrides --interactive
+.
+--interactive overrides -f
+rm: remove all arguments recursively? .
+EOF
+
+cmp out expout || fail=1
+cmp err experr || fail=1
+test $fail = 1 && {
+ diff out expout 2> /dev/null; diff err experr 2> /dev/null
+}
+
+(exit $fail); exit $fail
diff --git a/tests/rm/interactive-once b/tests/rm/interactive-once
new file mode 100755
index 0000000..9325e8e
--- /dev/null
+++ b/tests/rm/interactive-once
@@ -0,0 +1,133 @@
+#!/bin/sh
+# Test the -I option added to coreutils 6.0
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+test=interactive-once
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir -p dir1-1 dir2-1 dir2-2 || framework_failure=1
+touch file1-1 file2-1 file2-2 file2-3 file3-1 file3-2 file3-3 file3-4 \
+ || framework_failure=1
+echo y > $test.Iy || framework_failure=1
+echo n > $test.In || framework_failure=1
+rm -f out err || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# The prompt has a trailing space, and no newline, so an extra
+# 'echo .' is inserted after each rm to make it obvious what was asked.
+
+echo 'one file, no recursion' > err || fail=1
+rm -I file1-* < $test.In >> out 2>> err || fail=1
+echo . >> err || fail=1
+test -f file1-1 && fail=1
+
+echo 'three files, no recursion' >> err || fail=1
+rm -I file2-* < $test.In >> out 2>> err || fail=1
+echo . >> err || fail=1
+test -f file2-1 && fail=1
+test -f file2-2 && fail=1
+test -f file2-3 && fail=1
+
+echo 'four files, no recursion, answer no' >> err || fail=1
+rm -I file3-* < $test.In >> out 2>> err || fail=1
+echo . >> err || fail=1
+test -f file3-1 || fail=1
+test -f file3-2 || fail=1
+test -f file3-3 || fail=1
+test -f file3-4 || fail=1
+
+echo 'four files, no recursion, answer yes' >> err || fail=1
+rm -I file3-* < $test.Iy >> out 2>> err || fail=1
+echo . >> err || fail=1
+test -f file3-1 && fail=1
+test -f file3-2 && fail=1
+test -f file3-3 && fail=1
+test -f file3-4 && fail=1
+
+echo 'one file, recursion, answer no' >> err || fail=1
+rm -I -R dir1-* < $test.In >> out 2>> err || fail=1
+echo . >> err || fail=1
+test -d dir1-1 || fail=1
+
+echo 'one file, recursion, answer yes' >> err || fail=1
+rm -I -R dir1-* < $test.Iy >> out 2>> err || fail=1
+echo . >> err || fail=1
+test -d dir1-1 && fail=1
+
+echo 'multiple files, recursion, answer no' >> err || fail=1
+rm -I -R dir2-* < $test.In >> out 2>> err || fail=1
+echo . >> err || fail=1
+test -d dir2-1 || fail=1
+test -d dir2-2 || fail=1
+
+echo 'multiple files, recursion, answer yes' >> err || fail=1
+rm -I -R dir2-* < $test.Iy >> out 2>> err || fail=1
+echo . >> err || fail=1
+test -d dir2-1 && fail=1
+test -d dir2-2 && fail=1
+
+cat <<\EOF > expout || fail=1
+EOF
+cat <<\EOF > experr || fail=1
+one file, no recursion
+.
+three files, no recursion
+.
+four files, no recursion, answer no
+rm: remove all arguments? .
+four files, no recursion, answer yes
+rm: remove all arguments? .
+one file, recursion, answer no
+rm: remove all arguments recursively? .
+one file, recursion, answer yes
+rm: remove all arguments recursively? .
+multiple files, recursion, answer no
+rm: remove all arguments recursively? .
+multiple files, recursion, answer yes
+rm: remove all arguments recursively? .
+EOF
+
+cmp out expout || fail=1
+cmp err experr || fail=1
+test $fail = 1 && {
+ diff out expout 2> /dev/null; diff err experr 2> /dev/null
+}
+
+(exit $fail); exit $fail
diff --git a/tests/rm/ir-1 b/tests/rm/ir-1
new file mode 100755
index 0000000..71f1420
--- /dev/null
+++ b/tests/rm/ir-1
@@ -0,0 +1,76 @@
+#!/bin/sh
+# Test "rm -ir".
+
+# Copyright (C) 1997, 1998, 2002, 2004, 2006 Free Software Foundation,
+# Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+test=ir-1
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+test_failure=0
+mkdir -p $tmp $tmp/a $tmp/b $tmp/c || test_failure=1
+> $tmp/a/a || test_failure=1
+> $tmp/b/bb || test_failure=1
+> $tmp/c/cc || test_failure=1
+
+if test $test_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+cat <<EOF > $test.I
+y
+y
+y
+y
+y
+y
+y
+y
+n
+n
+n
+EOF
+
+# Remove all but one of a, b, c -- I doubt that this test can portably
+# determine which one was removed based on order of dir entries.
+# This is a good argument for switching to a dejagnu-style test suite.
+fail=0
+rm --verbose -i -r $tmp < $test.I > /dev/null 2>&1 || fail=1
+
+# $tmp should not have been removed.
+test -d $tmp || fail=1
+
+# There should be only one directory left.
+case `echo $tmp/*` in
+ $tmp/[abc]) ;;
+ *) fail=1 ;;
+esac
+
+rm -rf $tmp $test.I
+
+(exit $fail); exit $fail
diff --git a/tests/rm/isatty b/tests/rm/isatty
new file mode 100755
index 0000000..202dc01
--- /dev/null
+++ b/tests/rm/isatty
@@ -0,0 +1,77 @@
+#!/bin/sh
+# Make sure `chown 0 f; rm f' prompts before removing f.
+
+# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+# Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Skip this test if there is no /dev/stdin file.
+ls /dev/stdin >/dev/null 2>&1 \
+ || { (exit 77); exit; }
+
+touch f
+chmod 0 f
+rm ---presume-input-tty f > out 2>&1 &
+pid=$!
+
+# Wait a second, to give a buggy rm (as in fileutils-4.0.40)
+# enough time to remove the file.
+sleep 1
+
+# The file must still exist.
+test -f f || fail=1
+
+kill $pid > /dev/null 2>&1
+
+# Note the trailing `x' -- so I don't have to have a trailing
+# blank in this file :-)
+cat > exp <<\EOF
+rm: remove write-protected regular empty file `f'? x
+EOF
+#`
+
+# Append an `x' and a newline.
+echo x >> out
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/rm/no-give-up b/tests/rm/no-give-up
new file mode 100755
index 0000000..b85132b
--- /dev/null
+++ b/tests/rm/no-give-up
@@ -0,0 +1,58 @@
+#!/bin/sh
+# With rm from coreutils-5.2.1 and earlier, `rm -r' would mistakenly
+# give up too early under some conditions.
+
+# Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir d
+touch d/f
+chown -R $NON_ROOT_USERNAME d
+chmod u=rwx .
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# This must fail, since `.' is not writable by $NON_ROOT_USERNAME.
+setuidgid $NON_ROOT_USERNAME env PATH="$PATH" rm -rf d 2>/dev/null && fail=1
+
+# d must remain.
+test -d d || fail=1
+
+# f must have been removed.
+test -f d/f && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/rm/one-file-system b/tests/rm/one-file-system
new file mode 100755
index 0000000..66c04d5
--- /dev/null
+++ b/tests/rm/one-file-system
@@ -0,0 +1,67 @@
+#!/bin/sh
+# Demonstrate rm's new --one-file-system option.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
+. $srcdir/../lang-default
+. $srcdir/../other-fs-tmpdir
+
+if test -z "$other_partition_tmpdir"; then
+ (exit 77); exit 77
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd $pwd; chmod -R u+rwx $t0; rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+t0="$t0 $other_partition_tmpdir"
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+t=$other_partition_tmpdir
+mkdir -p a/b $t/y
+mount --bind $t a/b || framework_failure=1
+
+cat <<\EOF > exp || framework_failure=1
+rm: skipping `a/b', since it's on a different device
+EOF
+
+if test $framework_failure = 1; then
+ echo "$0: setup failed; skipping this test" 1>&2
+ (exit 77); exit 77
+fi
+
+fail=0
+
+rm --one-file-system -rf a 2> out && fail=1
+test -d $t/y || fail=1
+umount $t
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/rm/r-1 b/tests/rm/r-1
new file mode 100755
index 0000000..7b6f187
--- /dev/null
+++ b/tests/rm/r-1
@@ -0,0 +1,67 @@
+#!/bin/sh
+# Test "rm -r --verbose".
+
+# Copyright (C) 1997, 1998, 2000, 2002, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+test=r-1
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+mkdir a a/a || framework_failure=1
+> b || framework_failure=1
+
+cat <<\EOF > $test.E || framework_failure=1
+removed directory: `a/a'
+removed directory: `a'
+removed `b'
+EOF
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+rm --verbose -r a b > $test.O || fail=1
+
+for d in $dirs; do
+ if test -d $d; then
+ fail=1
+ fi
+done
+
+# Compare expected and actual output.
+cmp $test.E $test.O || fail=1
+test $fail = 1 && diff $test.E $test.O 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/rm/r-2 b/tests/rm/r-2
new file mode 100755
index 0000000..68e6187
--- /dev/null
+++ b/tests/rm/r-2
@@ -0,0 +1,68 @@
+#!/bin/sh
+# Test "rm -r --verbose".
+
+# Copyright (C) 1997, 1998, 2000, 2002, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ rm --version
+ set -x
+fi
+
+. $srcdir/../lang-default
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 || exit $?; exit $status' 0
+trap 'exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp
+
+mkdir t t/a t/a/b || framework_failure=1
+> t/a/f || framework_failure=1
+> t/a/b/g || framework_failure=1
+
+# FIXME: if this fails, it's a framework failure
+cat <<\EOF | sort > t/E || framework_failure=1
+removed directory: `t/a'
+removed directory: `t/a/b'
+removed `t/a/b/g'
+removed `t/a/f'
+EOF
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+# Note that both the expected output (above) and the actual output lines
+# are sorted, because directory entries may be processed in arbitrary order.
+fail=0
+rm --verbose -r t/a | sort > t/O || fail=1
+
+if test -d t/a; then
+ fail=1
+fi
+
+# Compare expected and actual output.
+cmp t/E t/O || fail=1
+test $fail = 1 && diff t/E t/O 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/rm/r-3 b/tests/rm/r-3
new file mode 100755
index 0000000..0d85f64
--- /dev/null
+++ b/tests/rm/r-3
@@ -0,0 +1,65 @@
+#!/bin/sh
+# Create and remove a directory with more than 254 files.
+
+# Copyright (C) 1997, 2001, 2002, 2003, 2004, 2006 Free Software Foundation,
+# Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+
+# An early version of my rewritten rm failed to remove all of
+# the files on SunOS4 when there were 254 or more in a directory.
+
+# And the rm from coreutils-5.0 exposes the same problem when there
+# are 338 or more files in a directory on a Darwin-6.5 system
+
+if test "$VERBOSE" = yes; then
+ rm --version
+ set -x
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp;tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_fail=0
+mkdir -p $tmp || framework_fail=1
+cd $tmp || framework_fail=1
+
+# Create 500 files (20 * 25).
+for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j; do
+ files=
+ for j in a b c d e f g h i j k l m n o p q r s t u v w x y; do
+ files="$files $i$j"
+ done
+ touch $files || framework_fail=1
+done
+
+test -f 0a || framework_fail=1
+test -f by || framework_fail=1
+cd "$pwd" || framework_fail=1
+
+if test $framework_fail = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+fail=0
+rm -rf $tmp || fail=1
+test -d $tmp && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/rm/r-4 b/tests/rm/r-4
new file mode 100755
index 0000000..3551335
--- /dev/null
+++ b/tests/rm/r-4
@@ -0,0 +1,56 @@
+#!/bin/sh
+# Try to remove '.' and '..' recursively.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+
+if test "$VERBOSE" = yes; then
+ rm --version
+ set -x
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+touch a || framework_failure=1
+cd "$pwd" || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+fail=0
+rm -fr $tmp/. 2>/dev/null && fail=1
+rm -fr $tmp/./ 2>/dev/null && fail=1
+rm -fr $tmp/.//// 2>/dev/null && fail=1
+rm -fr $tmp/.. 2>/dev/null && fail=1
+rm -fr $tmp/../ 2>/dev/null && fail=1
+
+# This test is too dangerous -- if there's a bug you're wiped out!
+# rm -fr / 2>/dev/null && fail=1
+
+test -f $tmp/a || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/rm/readdir-bug b/tests/rm/readdir-bug
new file mode 100755
index 0000000..a82aa95
--- /dev/null
+++ b/tests/rm/readdir-bug
@@ -0,0 +1,60 @@
+#!/bin/sh
+# Exercise the Darwin/MacOS bug worked around on 2006-09-29,
+# whereby rm would fail to remove all entries in a directory.
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+# Create a directory containing many files.
+# What counts is a combination of the number of files and
+# the lengths of their names. For details, see
+# http://lists.gnu.org/archive/html/bug-coreutils/2006-09/msg00326.html
+mkdir b || framework_failure=1
+cd b || framework_failure=1
+for i in `seq 1 250`; do
+ touch `printf %040d $i` || framework_failure=1
+done
+cd .. || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# On a buggy system, this would fail with the diagnostic,
+# "cannot remove directory `b': Directory not empty"
+rm -rf b || fail=1
+
+test -d b && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/rm/rm1 b/tests/rm/rm1
new file mode 100755
index 0000000..8987cd2
--- /dev/null
+++ b/tests/rm/rm1
@@ -0,0 +1,69 @@
+#!/bin/sh
+# exercise another small part of remove.c
+
+# Copyright (C) 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p b/a/p b/c b/d || framework_failure=1
+chmod u-w b/a || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# This should fail.
+rm -rf b > out 2>&1 && fail=1
+cat <<\EOF > exp
+rm: cannot remove directory `b/a/p': Permission denied
+EOF
+
+# On some systems, rm doesn't have enough information to
+# say it's a directory.
+cat <<\EOF > exp2
+rm: cannot remove `b/a/p': Permission denied
+EOF
+
+cmp out exp > /dev/null 2>&1 || {
+ cmp out exp2 || fail=1
+ }
+test $fail = 1 && diff out exp 2> /dev/null
+
+test -d b/a/p || fail=1
+test -d b/c && fail=1
+test -d b/d && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/rm/rm2 b/tests/rm/rm2
new file mode 100755
index 0000000..c64a9f3
--- /dev/null
+++ b/tests/rm/rm2
@@ -0,0 +1,76 @@
+#!/bin/sh
+# exercise another small part of remove.c
+
+# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+# Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p a/0 || framework_failure=1
+mkdir -p a/1/2 b/3 || framework_failure=1
+mkdir a/2 a/3 || framework_failure=1
+chmod u-x a/1 b || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Exercise two separate code paths -- though both result
+# in the same sort of diagnostic.
+# Both of these should fail.
+rm -rf a b > out 2>&1 && fail=1
+cat <<\EOF > exp
+rm: cannot remove `a/1': Permission denied
+rm: cannot remove `b': Permission denied
+EOF
+
+cat <<\EOF > exp-solaris
+rm: cannot remove `a/1/2': Permission denied
+rm: cannot remove `b/3': Permission denied
+EOF
+
+cmp out exp > /dev/null 2>&1 || { cmp out exp-solaris > /dev/null 2>&1 || fail=1; }
+test $fail = 1 && diff out exp 2> /dev/null
+
+test -d a/0 && fail=1
+test -d a/1 || fail=1
+test -d a/2 && fail=1
+test -d a/3 && fail=1
+
+chmod u+x b
+test -d b/3 || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/rm/rm3 b/tests/rm/rm3
new file mode 100755
index 0000000..b3caf49
--- /dev/null
+++ b/tests/rm/rm3
@@ -0,0 +1,95 @@
+#!/bin/sh
+# exercise another small part of remove.c
+
+# Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p z || framework_failure=1
+cd z || framework_failure=1
+touch empty empty-u || framework_failure=1
+echo not-empty > fu
+ln -s empty-f slink
+ln -s . slinkdot
+mkdir d du || framework_failure=1
+chmod u-w fu du empty-u || framework_failure=1
+cd ..
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+cat <<EOF > in
+y
+y
+y
+y
+y
+y
+y
+y
+y
+EOF
+
+# Both of these should fail.
+rm -ir z < in > out 2>&1 || fail=1
+
+# Given input like `rm: ...? rm: ...? ' (no trailing newline),
+# the `head...' part of the pipeline below removes the trailing space, so
+# that sed doesn't have to deal with a line lacking a terminating newline.
+# This avoids a bug whereby some vendor-provided (Tru64) versions of sed
+# would mistakenly tack a newline onto the end of the output.
+tr '?' '\n' < out | head --bytes=-1 | sed 's/^ //' |sort > o2
+mv o2 out
+
+sort <<EOF > exp || fail=1
+rm: descend into directory \`z'
+rm: remove regular empty file \`z/empty'
+rm: remove write-protected regular file \`z/fu'
+rm: remove write-protected regular empty file \`z/empty-u'
+rm: remove symbolic link \`z/slink'
+rm: remove symbolic link \`z/slinkdot'
+rm: remove directory \`z/d'
+rm: remove write-protected directory \`z/du'
+rm: remove directory \`z'
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff -u out exp 2> /dev/null
+
+test -d z && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/rm/rm4 b/tests/rm/rm4
new file mode 100755
index 0000000..944aaec
--- /dev/null
+++ b/tests/rm/rm4
@@ -0,0 +1,52 @@
+#!/bin/sh
+# ensure that `rm dir' fails without --recursive
+
+# Copyright (C) 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir dir || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# This should fail.
+rm dir > /dev/null 2>&1 && fail=1
+
+test -d dir || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/rm/rm5 b/tests/rm/rm5
new file mode 100755
index 0000000..297d02a
--- /dev/null
+++ b/tests/rm/rm5
@@ -0,0 +1,74 @@
+#!/bin/sh
+# a basic test of rm -ri
+
+# Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p d/e || framework_failure=1
+cat <<EOF > in || framework_failure=1
+y
+y
+y
+EOF
+
+cat <<\EOF > exp || framework_failure=1
+rm: descend into directory `d'
+rm: remove directory `d/e'
+rm: remove directory `d'
+EOF
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+rm -ir d < in > out 2>&1 || fail=1
+
+# Given input like `rm: ...? rm: ...? ' (no trailing newline),
+# the `head...' part of the pipeline below removes the trailing space, so
+# that sed doesn't have to deal with a line lacking a terminating newline.
+# This avoids a bug whereby some vendor-provided (Tru64) versions of sed
+# would mistakenly tack a newline onto the end of the output.
+tr '?' '\n' < out | head --bytes=-1 | sed 's/^ //' > o2
+mv o2 out
+
+# Make sure it's been removed.
+test -d d && fail=1
+
+cmp out exp || fail=1
+test $fail = 1 && diff -u out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/rm/sunos-1 b/tests/rm/sunos-1
new file mode 100755
index 0000000..1f6a09c
--- /dev/null
+++ b/tests/rm/sunos-1
@@ -0,0 +1,48 @@
+#!/bin/sh
+# Make sure that rm -r '' fails.
+
+# Copyright (C) 1997, 1998, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+
+# On SunOS 4.1.3, running rm -r '' in a nonempty directory may
+# actually remove files with names of entries in the current directory
+# but relative to `/' rather than relative to the current directory.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+rm -r '' > /dev/null 2>&1 && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/rm/unread2 b/tests/rm/unread2
new file mode 100755
index 0000000..e67c9ae
--- /dev/null
+++ b/tests/rm/unread2
@@ -0,0 +1,57 @@
+#!/bin/sh
+# exercise one small part of remove.c
+
+# Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p a/b || framework_failure=1
+chmod u-r a
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# This should fail.
+rm -rf a > out 2>&1 && fail=1
+cat <<\EOF > exp
+rm: cannot remove `a': Permission denied
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/rm/unread3 b/tests/rm/unread3
new file mode 100755
index 0000000..4021a39
--- /dev/null
+++ b/tests/rm/unread3
@@ -0,0 +1,62 @@
+#!/bin/sh
+# Ensure that rm works even from an unreadable working directory.
+
+# Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir -p a/1 b c d/2 e/3 || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+cd c
+chmod u=x,go= .
+t=$pwd/$tmp
+
+# With coreutils-5.2.1, this would get a failed assertion.
+rm -r "$t/a" "$t/b" || fail=1
+
+# With coreutils-5.2.1, this would get the following:
+# rm: cannot get current directory: Permission denied
+# rm: failed to return to initial working directory: Bad file descriptor
+rm -r "$t/d" "$t/e" || fail=1
+
+test -d "$t/a" && fail=1
+test -d "$t/b" && fail=1
+test -d "$t/d" && fail=1
+test -d "$t/e" && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/rmdir/Makefile.am b/tests/rmdir/Makefile.am
new file mode 100644
index 0000000..eadbaba
--- /dev/null
+++ b/tests/rmdir/Makefile.am
@@ -0,0 +1,11 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+TESTS = fail-perm ignore t-slash
+
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=rmdir
diff --git a/tests/rmdir/Makefile.in b/tests/rmdir/Makefile.in
new file mode 100644
index 0000000..7104588
--- /dev/null
+++ b/tests/rmdir/Makefile.in
@@ -0,0 +1,720 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/rmdir
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = fail-perm ignore t-slash
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=rmdir
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/rmdir/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/rmdir/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/rmdir/fail-perm b/tests/rmdir/fail-perm
new file mode 100755
index 0000000..3b4440f
--- /dev/null
+++ b/tests/rmdir/fail-perm
@@ -0,0 +1,52 @@
+#!/bin/sh
+# For unwritable directory `d', `rmdir -p d d/e/f' would emit
+# diagnostics but would not fail. Fixed in 5.1.2.
+
+# Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rmdir --version
+fi
+
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir d d/e d/e/f || framework_failure=1
+chmod a-w d || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# This rmdir command outputs two diagnostics.
+# Before coreutils-5.1.2, it would mistakenly exit successfully.
+# As of coreutils-5.1.2, it fails, as required.
+rmdir -p d d/e/f 2> /dev/null && fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/rmdir/ignore b/tests/rmdir/ignore
new file mode 100755
index 0000000..ba6db02
--- /dev/null
+++ b/tests/rmdir/ignore
@@ -0,0 +1,45 @@
+#!/bin/sh
+# make sure rmdir's --ignore-fail-on-non-empty option works
+
+# Copyright (C) 1999 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rmdir --version
+fi
+
+tmp=rmdir.$$
+trap "rm -rf $tmp" 0 1 2 3 15
+
+test_failure=0
+mkdir -p $tmp/a/b $tmp/x || test_failure=1
+
+if test $test_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ exit 1
+fi
+
+fail=0
+rmdir -p --ignore-fail-on-non-empty $tmp/a/b || fail=1
+# $tmp/x should remain
+test -d $tmp/x || fail=1
+# $tmp/{a,b} should be gone
+test -d $tmp/a && fail=1
+test -d $tmp/a/b && fail=1
+
+exit $fail
diff --git a/tests/rmdir/t-slash b/tests/rmdir/t-slash
new file mode 100755
index 0000000..e81c4db
--- /dev/null
+++ b/tests/rmdir/t-slash
@@ -0,0 +1,47 @@
+#!/bin/sh
+# make sure rmdir -p works on a directory specified with a trailing slash
+
+# Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rmdir --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+mkdir dir || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Prior to coreutils-4.5.2, this would fail with the following:
+# rmdir: `dir': No such file or directory
+rmdir -p dir/ || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/rwx-to-mode b/tests/rwx-to-mode
new file mode 100755
index 0000000..fbeb670
--- /dev/null
+++ b/tests/rwx-to-mode
@@ -0,0 +1,49 @@
+#!/bin/sh
+# Convert an ls-style permission string, like drwxr----x and -rw-r-x-wx
+# to the equivalent chmod --mode (-m) argument, (=,u=rwx,g=r,o=x and
+# =,u=rw,g=rx,o=wx). Ignore ACLs.
+
+# Copyright (C) 2000, 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+case $# in
+ 1) rwx=$1;;
+ *) echo "$0: wrong number of arguments" 1>&2
+ echo "Usage: $0 ls-style-mode-string" 1>&2
+ exit 1;;
+esac
+
+case $rwx in
+ [ld-][rwx-][rwx-][rwxsS-][rwx-][rwx-][rwxsS-][rwx-][rwx-][rwxtT-]) ;;
+ [ld-][rwx-][rwx-][rwxsS-][rwx-][rwx-][rwxsS-][rwx-][rwx-][rwxtT-]+) ;;
+ *) echo "$0: invalid mode string: $rwx" 1>&2; exit 1;;
+esac
+
+# Perform these conversions:
+# S s
+# s xs
+# T t
+# t xt
+# The `T' and `t' ones are only valid for `other'.
+s='s/S/@/;s/s/x@/;s/@/s/'
+t='s/T/@/;s/t/x@/;s/@/t/'
+
+u=`echo $rwx|sed 's/^.\(...\).*/,u=\1/;s/-//g;s/^,u=$//;'$s`
+g=`echo $rwx|sed 's/^....\(...\).*/,g=\1/;s/-//g;s/^,g=$//;'$s`
+o=`echo $rwx|sed 's/^.......\(...\).*/,o=\1/;s/-//g;s/^,o=$//;'$s';'$t`
+echo "=$u$g$o"
+exit 0
diff --git a/tests/sample-test b/tests/sample-test
new file mode 100644
index 0000000..87e16ff
--- /dev/null
+++ b/tests/sample-test
@@ -0,0 +1,55 @@
+#!/bin/sh
+# FIXME
+
+# Copyright (C) 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ FIXME --version
+fi
+
+# FIXME: . $srcdir/../envvar-check
+# FIXME: . $srcdir/../lang-default
+# FIXME: PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
+# FIXME: PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+FIXME > out || fail=1
+cat <<\EOF > exp || fail=1
+FIXME
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/seq/Makefile.am b/tests/seq/Makefile.am
new file mode 100644
index 0000000..7463a5d
--- /dev/null
+++ b/tests/seq/Makefile.am
@@ -0,0 +1,10 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+TESTS = basic
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=seq
diff --git a/tests/seq/Makefile.in b/tests/seq/Makefile.in
new file mode 100644
index 0000000..056150e
--- /dev/null
+++ b/tests/seq/Makefile.in
@@ -0,0 +1,720 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/seq
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = basic
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=seq
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/seq/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/seq/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/seq/basic b/tests/seq/basic
new file mode 100755
index 0000000..7070652
--- /dev/null
+++ b/tests/seq/basic
@@ -0,0 +1,90 @@
+#!/bin/sh
+# -*- perl -*-
+# Test "seq".
+
+# Copyright (C) 1999, 2000, 2003, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+d=$srcdir/..
+exec $PERL -w -I$d -MCoreutils -- - << \EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+
+my @Tests =
+ (
+ ['onearg-1', qw(10), {OUT => [(1..10)]}],
+ ['onearg-2', qw(-1)],
+ ['neg-1', qw(-10 10 10), {OUT => [qw(-10 0 10)]}],
+ # ['neg-2', qw(-.1 .1 .11), {OUT => [qw(-0.1 0.0 0.1)]}],
+ ['neg-3', qw(1 -1 0), {OUT => [qw(1 0)]}],
+ ['neg-4', qw(1 -1 -1), {OUT => [qw(1 0 -1)]}],
+
+ ['eq-wid-1', qw(-w 1 -1 -1), {OUT => [qw(01 00 -1)]}],
+
+ # Prior to 2.0g, this test would fail on e.g., HPUX systems
+ # because it'd end up using %3.1f as the format instead of %4.1f.
+ # ['eq-wid-2', qw(-w -.1 .1 .11),{OUT => [qw(-0.1 00.0 00.1)]}],
+ # ['eq-wid-3', qw(-w 1 3.0), {OUT => [qw(1 2 3)]}],
+
+ # Prior to coreutils-4.5.11, some of these were not accepted.
+ ['fmt-1', qw(-f %2.1f 1.5 .5 2),{OUT => [qw(1.5 2.0)]}],
+ ['fmt-2', qw(-f %0.1f 1.5 .5 2),{OUT => [qw(1.5 2.0)]}],
+ ['fmt-3', qw(-f %.1f 1.5 .5 2),{OUT => [qw(1.5 2.0)]}],
+
+ ['fmt-4', qw(-f %3.0f 1 2), {OUT => [' 1', ' 2']}],
+ ['fmt-5', qw(-f %-3.0f 1 2), {OUT => ['1 ', '2 ']}],
+ ['fmt-6', qw(-f %+3.0f 1 2), {OUT => [' +1', ' +2']}],
+ ['fmt-7', qw(-f %0+3.0f 1 2), {OUT => [qw(+01 +02)]}],
+ ['fmt-8', qw(-f %0+.0f 1 2), {OUT => [qw(+1 +2)]}],
+ ['fmt-9', '-f "% -3.0f"', qw(-1 0), {OUT => ['-1 ', ' 0 ']}],
+ ['fmt-a', '-f "% -.0f"',qw(-1 0), {OUT => ['-1', ' 0']}],
+ );
+
+# Append a newline to each entry in the OUT array.
+my $t;
+foreach $t (@Tests)
+ {
+ my $e;
+ foreach $e (@$t)
+ {
+ $e->{OUT} = join ("\n", @{$e->{OUT}}) . "\n"
+ if ref $e eq 'HASH' and exists $e->{OUT};
+ }
+ }
+
+my $save_temps = $ENV{SAVE_TEMPS};
+my $verbose = $ENV{VERBOSE};
+
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/setgid-check b/tests/setgid-check
new file mode 100644
index 0000000..adeefb6
--- /dev/null
+++ b/tests/setgid-check
@@ -0,0 +1,43 @@
+# -*- sh -*-
+# Disable the current test if the working directory seems to have
+# the setgid bit set.
+
+# Copyright (C) 2000, 2002, 2004, 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# This test should be run in the temporary directory that ends
+# up being removed via the trap commands.
+
+cwd_is_setgid=no
+
+setgid_tmpdir=setgid-$$
+(umask 77; mkdir $setgid_tmpdir)
+p=`ls -ld $setgid_tmpdir|sed 's/ .*//'`
+rmdir $setgid_tmpdir
+case $p in
+ drwx------);;
+ drwx------+);;
+ drwxr-xr-x);; # Windows98 + DJGPP 2.03 + fileutils-4.1 does this.
+ *) cwd_is_setgid=yes;;
+esac
+if test $cwd_is_setgid = yes; then
+ cat <<EOF >&2
+$0: Since it looks like you're running this test in a directory with
+the setgid bit set, we're skipping this test.
+EOF
+ (exit 77); exit 77
+fi
diff --git a/tests/sha1sum/Makefile.am b/tests/sha1sum/Makefile.am
new file mode 100644
index 0000000..920dd1a
--- /dev/null
+++ b/tests/sha1sum/Makefile.am
@@ -0,0 +1,13 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+
+EXTRA_DIST = $(TESTS)
+
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=sha1sum
+
+TESTS = basic-1 sample-vec
diff --git a/tests/sha1sum/Makefile.in b/tests/sha1sum/Makefile.in
new file mode 100644
index 0000000..a016355
--- /dev/null
+++ b/tests/sha1sum/Makefile.in
@@ -0,0 +1,720 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/sha1sum
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=sha1sum
+
+TESTS = basic-1 sample-vec
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/sha1sum/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/sha1sum/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/sha1sum/basic-1 b/tests/sha1sum/basic-1
new file mode 100755
index 0000000..35562bd
--- /dev/null
+++ b/tests/sha1sum/basic-1
@@ -0,0 +1,91 @@
+#!/bin/sh
+# Test "sha1sum".
+
+# Copyright (C) 2000, 2003, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my $sha_degenerate = "da39a3ee5e6b4b0d3255bfef95601890afd80709";
+
+my @Tests =
+ (
+ ['s1', {IN=> {f=> ''}},
+ {OUT=>"$sha_degenerate f\n"}],
+ ['s2', {IN=> {f=> 'a'}},
+ {OUT=>"86f7e437faa5a7fce15d1ddcb9eaeaea377667b8 f\n"}],
+ ['s3', {IN=> {f=> 'abc'}},
+ {OUT=>"a9993e364706816aba3e25717850c26c9cd0d89d f\n"}],
+ ['s4',
+ {IN=> {f=> 'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq'}},
+ {OUT=>"84983e441c3bd26ebaae4aa1f95129e5e54670f1 f\n"}],
+ ['s5', {IN=> {f=> 'abcdefghijklmnopqrstuvwxyz'}},
+ {OUT=>"32d10c7b8cf96570ca04ce37f2a19d84240d3a89 f\n"}],
+ ['s6', {IN=> {f=> join ('', 'A'..'Z', 'a'..'z', '0'..'9')}},
+ {OUT=>"761c457bf73b14d27e9e9265c46f4b4dda11f940 f\n"}],
+ ['s7', {IN=> {f=> '1234567890' x 8}},
+ {OUT=>"50abf5706a150990a08b2c5ea40fa0e585554732 f\n"}],
+ ['million-a', {IN=> {f=> 'a' x 1000000}},
+ {OUT=>"34aa973cd4c4daa4f61eeb2bdbad27316534016f f\n"}],
+ ['bs-sha', {IN=> {".\\foo"=> ''}},
+ {OUT=>"\\$sha_degenerate .\\\\foo\n"}],
+ # The sha1sum and md5sum drivers share a lot of code.
+ # Ensure that sha1sum does *not* share the part that makes
+ # md5sum accept BSD format.
+ ['check-bsd', '--check', {IN=> {'f.md5' => "MD5 (f) = $sha_degenerate\n"}},
+ {AUX=> {f=> ''}},
+ {ERR=>"sha1sum: f.md5: no properly formatted "
+ . "SHA1 checksum lines found\n"},
+ {EXIT=> 1}],
+ ['check-bsd2', '--check',
+ {IN=> {'f.sha1' => "SHA1 (f) = $sha_degenerate\n"}},
+ {AUX=> {f=> ''}}, {OUT=>"f: OK\n"}],
+ ['check-bsd3', '--check', '--status',
+ {IN=> {'f.sha1' => "SHA1 (f) = $sha_degenerate\n"}},
+ {AUX=> {f=> 'bar'}}, {EXIT=> 1}],
+ );
+
+# Insert the `--text' argument for each test.
+my $t;
+foreach $t (@Tests)
+ {
+ splice @$t, 1, 0, '--text' unless @$t[1] =~ /--check/;
+ }
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/sha1sum/sample-vec b/tests/sha1sum/sample-vec
new file mode 100755
index 0000000..86dfd4b
--- /dev/null
+++ b/tests/sha1sum/sample-vec
@@ -0,0 +1,548 @@
+#!/bin/sh
+# Sample vectors for "sha1sum".
+
+# Copyright (C) 2000, 2001, 2003, 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+# The data from which these tests were derived came from here:
+# http://csrc.nist.gov/cryptval/shs/sha1-vectors.zip
+
+my @Tests =
+ (
+ ['1', {IN=> {f=> '0 1 ^'}},
+ {OUT=>'DA39A3EE5E6B4B0D3255BFEF95601890AFD80709'}],
+ ['2', {IN=> {f=> '5 0 2 1 2 1 2 ^'}},
+ {OUT=>'3CDF2936DA2FC556BFA533AB1EB59CE710AC80E5'}],
+ ['3', {IN=> {f=> '5 0 1 3 4 4 4 ^'}},
+ {OUT=>'19C1E2048FA7393CFBF2D310AD8209EC11D996E5'}],
+ ['4', {IN=> {f=> '7 0 4 3 4 4 1 4 4 ^'}},
+ {OUT=>'CA775D8C80FAA6F87FA62BECA6CA6089D63B56E5'}],
+ ['5', {IN=> {f=> '10 0 4 1 5 3 4 4 3 1 3 4 ^'}},
+ {OUT=>'71AC973D0E4B50AE9E5043FF4D615381120A25A0'}],
+ ['6', {IN=> {f=> '10 0 3 1 6 5 5 1 3 6 6 4 ^'}},
+ {OUT=>'A6B5B9F854CFB76701C3BDDBF374B3094EA49CBA'}],
+ ['7', {IN=> {f=> '13 1 3 2 5 3 3 3 4 6 6 1 4 6 2 ^'}},
+ {OUT=>'D87A0EE74E4B9AD72E6847C87BDEEB3D07844380'}],
+ ['8', {IN=> {f=> '16 1 3 5 5 1 2 1 3 3 6 3 5 2 3 5 7 2 ^'}},
+ {OUT=>'1976B8DD509FE66BF09C9A8D33534D4EF4F63BFD'}],
+ ['9', {IN=> {f=> '15 1 8 1 5 3 2 7 4 5 6 7 3 3 1 6 3 ^'}},
+ {OUT=>'5A78F439B6DB845BB8A558E4CEB106CD7B7FF783'}],
+ ['10', {IN=> {f=> '15 1 4 6 8 2 1 4 2 5 1 6 8 8 6 4 7 ^'}},
+ {OUT=>'F871BCE62436C1E280357416695EE2EF9B83695C'}],
+ ['11', {IN=> {f=> '18 1 1 2 7 3 8 6 7 5 4 3 4 3 5 3 3 2 6 8 ^'}},
+ {OUT=>'62B243D1B780E1D31CF1BA2DE3F01C72AEEA0E47'}],
+ ['12', {IN=> {f=> '16 0 9 8 1 8 1 7 6 7 7 1 2 6 9 5 4 7 ^'}},
+ {OUT=>'1698994A273404848E56E7FDA4457B5900DE1342'}],
+ ['13', {IN=> {f=> '18 0 7 1 7 3 9 4 7 7 5 2 8 1 7 8 2 7 2 9 ^'}},
+ {OUT=>'056F4CDC02791DA7ED1EB2303314F7667518DEEF'}],
+ ['14', {IN=> {f=> '19 1 2 3 1 8 8 6 9 10 3 10 8 9 2 4 1 5 1 5 9 ^'}},
+ {OUT=>'9FE2DA967BD8441EEA1C32DF68DDAA9DC1FC8E4B'}],
+ ['15', {IN=> {f=> '19 1 8 5 4 8 1 3 9 5 7 7 2 7 2 7 8 7 4 8 10 ^'}},
+ {OUT=>'73A31777B4ACE9384EFA8BBEAD45C51A71ABA6DD'}],
+ ['16', {IN=> {f=> '20 1 1 9 7 4 1 4 5 1 10 8 6 4 4 9 9 9 8 2 9 10 ^'}},
+ {OUT=>'3F9D7C4E2384EDDABFF5DD8A31E23DE3D03F42AC'}],
+ ['17', {IN=> {f=> '19 1 11 6 7 7 2 6 2 6 10 6 9 10 5 11 1 6 8 11 4 ^'}},
+ {OUT=>'4814908F72B93FFD011135BEE347DE9A08DA838F'}],
+ ['18', {IN=> {f=> '22 0 10 5 10 3 7 8 9 9 1 1 1 10 2 1 5 10 2 9 9 9 7 8 ^'}},
+ {OUT=>'0978374B67A412A3102C5AA0B10E1A6596FC68EB'}],
+ ['19', {IN=> {f=> '21 0 1 10 1 6 9 4 2 5 2 11 8 12 12 9 8 1 3 10 7 11 12 ^'}},
+ {OUT=>'44AD6CB618BD935460D46D3F921D87B99AB91C1E'}],
+ ['20', {IN=> {f=> '24 1 3 9 5 12 3 4 2 9 12 11 6 6 1 1 9 5 9 1 4 9 4 10 8 9 ^'}},
+ {OUT=>'02DC989AF265B09CF8485640842128DCF95E9F39'}],
+ ['21', {IN=> {f=> '25 1 3 2 3 11 1 12 5 6 2 7 8 4 8 8 9 9 8 4 9 1 4 8 10 9 9 ^'}},
+ {OUT=>'67507B8D497B35D6E99FC01976D73F54AECA75CF'}],
+ ['22', {IN=> {f=> '23 0 11 10 7 10 10 6 10 9 4 5 10 5 8 4 1 10 12 4 6 1 8 11 6 ^'}},
+ {OUT=>'1EAE0373C1317CB60C36A42A867B716039D441F5'}],
+ ['23', {IN=> {f=> '22 0 12 8 10 4 3 8 5 5 7 11 13 11 12 11 4 12 3 6 5 11 10 5 ^'}},
+ {OUT=>'9C3834589E5BFFAC9F50950E0199B3EC2620BEC8'}],
+ ['24', {IN=> {f=> '26 1 10 9 6 9 7 2 10 4 4 5 5 2 12 13 5 3 1 10 1 4 7 8 13 13 12 9 ^'}},
+ {OUT=>'209F7ABC7F3B878EE46CDF3A1FBB9C21C3474F32'}],
+ ['25', {IN=> {f=> '31 0 2 6 5 4 7 3 10 6 13 6 3 9 6 2 10 5 3 8 4 1 11 3 5 3 7 11 1 12 9 12 5 ^'}},
+ {OUT=>'05FC054B00D97753A9B3E2DA8FBBA3EE808CEF22'}],
+ ['26', {IN=> {f=> '27 1 14 5 1 3 7 2 3 9 3 4 14 4 4 10 8 5 14 1 11 12 12 10 4 13 7 11 9 ^'}},
+ {OUT=>'0C4980EA3A46C757DFBFC5BAA38AC6C8E72DDCE7'}],
+ ['27', {IN=> {f=> '30 1 4 9 5 5 8 9 5 10 4 2 4 7 9 9 6 3 5 1 8 3 2 13 3 14 9 8 9 10 14 10 ^'}},
+ {OUT=>'96A460D2972D276928B69864445BEA353BDCFFD2'}],
+ ['28', {IN=> {f=> '27 0 12 9 5 8 7 2 14 12 3 8 14 6 6 4 7 5 7 10 7 11 10 1 9 6 7 12 14 ^'}},
+ {OUT=>'F3EF04D8FA8C6FA9850F394A4554C080956FA64B'}],
+ ['29', {IN=> {f=> '24 0 12 9 9 2 11 13 12 11 11 6 14 13 10 5 6 8 10 4 3 11 11 14 5 14 ^'}},
+ {OUT=>'F2A31D875D1D7B30874D416C4D2EA6BAF0FFBAFE'}],
+ ['30', {IN=> {f=> '24 0 15 4 5 3 8 12 15 8 14 15 9 12 12 3 10 13 6 11 10 4 13 14 8 8 ^'}},
+ {OUT=>'F4942D3B9E9588DCFDC6312A84DF75D05F111C20'}],
+ ['31', {IN=> {f=> '28 1 1 8 1 5 11 4 9 12 4 13 15 5 9 11 7 14 11 1 11 7 8 8 11 1 13 15 12 13 ^'}},
+ {OUT=>'310207DF35B014E4676D30806FA34424813734DD'}],
+ ['32', {IN=> {f=> '32 1 5 8 3 8 10 7 8 1 5 13 12 14 5 3 6 4 12 15 6 6 10 11 13 9 1 11 6 10 3 7 14 2 ^'}},
+ {OUT=>'4DA1955B2FA7C7E74E3F47D7360CE530BBF57CA3'}],
+ ['33', {IN=> {f=> '31 0 10 3 5 1 14 11 11 16 1 2 2 11 6 13 15 12 6 5 16 2 14 2 10 12 2 5 5 6 10 13 15 ^'}},
+ {OUT=>'74C4BC5B26FB4A08602D40CCEC6C6161B6C11478'}],
+ ['34', {IN=> {f=> '34 0 3 10 8 16 9 5 12 15 4 11 13 3 6 5 10 8 1 3 9 3 11 1 2 16 12 10 6 1 9 1 16 5 6 14 ^'}},
+ {OUT=>'0B103CE297338DFC7395F7715EE47539B556DDB6'}],
+ ['35', {IN=> {f=> '30 1 1 12 4 4 2 15 13 15 11 15 5 11 9 7 15 16 6 16 12 3 2 10 16 5 5 7 1 7 11 16 ^'}},
+ {OUT=>'EFC72D99E3D2311CE14190C0B726BDC68F4B0821'}],
+ ['36', {IN=> {f=> '34 0 7 9 11 2 5 5 5 4 13 13 14 4 7 12 6 4 8 2 9 9 13 13 3 3 6 7 16 7 6 15 5 8 15 14 ^'}},
+ {OUT=>'660EDAC0A8F4CE33DA0D8DBAE597650E97687250'}],
+ ['37', {IN=> {f=> '36 1 4 6 16 15 11 14 14 4 7 10 3 4 10 3 6 7 14 4 6 6 5 2 7 8 16 2 12 16 10 14 3 2 3 7 14 3 ^'}},
+ {OUT=>'FE0A55A988B3B93946A63EB36B23785A5E6EFC3E'}],
+ ['38', {IN=> {f=> '32 0 15 10 9 1 14 10 14 6 6 16 3 2 3 8 3 12 8 11 17 3 9 7 16 14 4 11 15 5 13 9 5 17 ^'}},
+ {OUT=>'0CBDF2A5781C59F907513147A0DE3CC774B54BF3'}],
+ ['39', {IN=> {f=> '30 0 17 17 13 8 2 6 8 16 1 12 5 17 2 9 8 10 13 14 11 17 12 5 14 9 11 9 11 4 11 12 ^'}},
+ {OUT=>'663E40FEE5A44BFCB1C99EA5935A6B5BC9F583B0'}],
+ ['40', {IN=> {f=> '30 1 16 6 10 5 8 3 17 16 14 1 15 15 15 6 13 2 11 6 13 11 13 4 6 7 11 11 12 16 13 16 ^'}},
+ {OUT=>'00162134256952DD9AE6B51EFB159B35C3C138C7'}],
+ ['41', {IN=> {f=> '33 1 16 16 14 16 2 4 16 11 6 15 7 4 17 6 5 7 6 3 14 16 5 17 11 13 1 1 14 13 3 6 14 5 16 ^'}},
+ {OUT=>'CEB88E4736E354416E2010FC1061B3B53B81664B'}],
+ ['42', {IN=> {f=> '39 1 2 16 13 7 8 6 2 15 1 9 12 4 4 11 13 7 2 11 9 18 4 5 4 8 2 14 9 9 1 8 13 11 15 8 5 9 10 16 7 ^'}},
+ {OUT=>'A6A2C4B6BCC41DDC67278F3DF4D8D0B9DD7784EF'}],
+ ['43', {IN=> {f=> '34 0 2 7 1 1 17 13 6 11 10 8 5 12 15 6 15 10 12 4 18 1 2 8 11 12 16 10 12 18 11 16 12 11 17 6 ^'}},
+ {OUT=>'C23D083CD8820B57800A869F5F261D45E02DC55D'}],
+ ['44', {IN=> {f=> '34 1 4 7 13 7 10 7 10 6 1 12 7 18 11 18 2 10 15 10 14 8 18 9 9 12 12 3 13 12 6 4 9 17 13 17 ^'}},
+ {OUT=>'E8AC31927B78DDEC41A31CA7A44EB7177165E7AB'}],
+ ['45', {IN=> {f=> '40 0 5 7 3 2 1 17 14 4 16 6 13 1 13 6 6 10 1 3 18 3 11 7 9 5 7 11 17 1 9 16 5 15 10 17 3 8 15 17 8 12 ^'}},
+ {OUT=>'E864EC5DBAB0F9FF6984AB6AD43A8C9B81CC9F9C'}],
+ ['46', {IN=> {f=> '40 0 11 3 15 17 11 1 1 4 3 14 18 4 2 18 8 15 6 4 6 3 15 11 16 10 17 17 9 6 3 2 6 16 4 9 12 6 8 1 11 17 ^'}},
+ {OUT=>'CFED6269069417A84D6DE2347220F4B858BCD530'}],
+ ['47', {IN=> {f=> '37 1 2 19 12 8 16 14 2 9 16 2 6 6 7 9 10 9 11 9 14 11 15 5 16 9 2 17 2 8 15 8 4 3 14 14 16 16 12 ^'}},
+ {OUT=>'D9217BFB46C96348722C3783D29D4B1A3FEDA38C'}],
+ ['48', {IN=> {f=> '37 1 11 10 16 12 11 7 14 14 14 6 10 10 1 6 13 19 5 6 4 7 12 12 10 5 10 15 15 8 5 13 17 13 5 6 14 1 19 ^'}},
+ {OUT=>'DEC24E5554F79697218D317315FA986229CE3350'}],
+ ['49', {IN=> {f=> '38 1 2 6 5 17 9 11 18 18 8 6 13 15 3 3 15 5 13 18 3 2 5 5 14 7 13 4 17 7 2 17 3 18 15 7 15 16 18 11 ^'}},
+ {OUT=>'83A099DF7071437BA5495A5B0BFBFEFE1C0EF7F3'}],
+ ['50', {IN=> {f=> '38 1 12 8 6 3 17 12 13 19 15 9 7 17 16 15 3 11 11 5 2 13 19 16 2 4 16 7 8 1 2 9 17 12 3 5 18 19 11 9 ^'}},
+ {OUT=>'AA3198E30891A83E33CE3BFA0587D86A197D4F80'}],
+ ['51', {IN=> {f=> '39 1 14 16 14 8 9 16 5 1 6 3 17 18 16 9 1 15 9 10 9 19 1 3 3 20 11 13 17 1 19 8 3 4 3 7 1 14 19 19 19 ^'}},
+ {OUT=>'9B6ACBEB4989CBEE7015C7D515A75672FFDE3442'}],
+ ['52', {IN=> {f=> '37 1 18 13 11 5 18 4 19 10 6 19 11 17 10 10 7 9 13 16 9 10 18 4 12 5 16 5 20 12 3 8 10 1 18 1 6 20 14 ^'}},
+ {OUT=>'B021EB08A436B02658EAA7BA3C88D49F1219C035'}],
+ ['53', {IN=> {f=> '36 0 8 9 6 12 11 7 7 3 17 13 6 20 17 9 20 16 10 12 17 8 11 8 11 10 5 10 14 18 8 19 9 12 12 2 20 19 ^'}},
+ {OUT=>'CAE36DAB8AEA29F62E0855D9CB3CD8E7D39094B1'}],
+ ['54', {IN=> {f=> '39 0 12 16 20 3 9 9 19 17 13 13 4 17 2 11 7 14 3 6 16 13 10 13 5 16 10 2 8 2 17 19 4 17 7 19 6 9 15 15 6 ^'}},
+ {OUT=>'02DE8BA699F3C1B0CB5AD89A01F2346E630459D7'}],
+ ['55', {IN=> {f=> '43 0 7 2 18 5 7 18 5 2 15 7 11 10 9 3 2 14 19 3 11 8 18 15 5 3 5 12 15 16 10 17 7 19 16 2 1 16 6 3 19 12 5 18 16 ^'}},
+ {OUT=>'88021458847DD39B4495368F7254941859FAD44B'}],
+ ['56', {IN=> {f=> '49 1 9 11 2 1 12 11 14 12 14 10 4 11 6 8 16 7 5 11 20 8 17 4 14 4 15 3 2 2 4 3 2 3 14 15 10 2 12 7 3 7 20 20 19 10 2 3 1 10 20 ^'}},
+ {OUT=>'91A165295C666FE85C2ADBC5A10329DAF0CB81A0'}],
+ ['57', {IN=> {f=> '36 0 19 20 12 5 19 21 5 21 11 14 19 1 17 8 9 4 19 3 17 1 14 21 14 7 6 5 20 14 21 20 4 6 21 7 11 12 ^'}},
+ {OUT=>'4B31312EAF8B506811151A9DBD162961F7548C4B'}],
+ ['58', {IN=> {f=> '41 0 12 9 11 6 16 18 18 10 11 20 6 12 11 5 7 21 19 18 6 15 21 10 4 14 9 19 10 3 3 5 13 1 8 12 3 13 9 7 10 17 14 ^'}},
+ {OUT=>'3FE70971B20558F7E9BAC303ED2BC14BDE659A62'}],
+ ['59', {IN=> {f=> '45 0 10 6 8 3 17 18 3 21 19 6 17 15 4 9 15 9 15 14 4 7 14 8 10 13 4 11 10 7 6 21 1 14 5 11 7 7 2 13 13 3 9 13 8 14 20 ^'}},
+ {OUT=>'93FB769D5BF49D6C563685954E2AECC024DC02D6'}],
+ ['60', {IN=> {f=> '39 1 3 7 18 4 9 9 5 15 13 17 10 15 16 20 8 19 9 10 9 1 19 14 21 2 18 13 10 4 18 16 4 21 15 10 18 19 3 12 18 ^'}},
+ {OUT=>'BC8827C3E614D515E83DEA503989DEA4FDA6EA13'}],
+ ['61', {IN=> {f=> '41 0 14 4 13 11 1 11 1 10 2 12 4 21 10 21 18 9 2 16 7 20 6 7 12 19 20 1 13 12 10 8 21 15 7 19 13 6 8 19 20 18 19 ^'}},
+ {OUT=>'E83868DBE4A389AB48E61CFC4ED894F32AE112AC'}],
+ ['62', {IN=> {f=> '37 0 11 18 1 17 14 15 20 16 20 8 2 17 10 4 21 5 19 19 14 22 21 18 13 14 1 3 12 11 11 4 22 13 5 18 7 21 21 ^'}},
+ {OUT=>'55C95459CDE4B33791B4B2BCAAF840930AF3F3BD'}],
+ ['63', {IN=> {f=> '48 0 9 22 19 12 8 16 5 17 5 9 1 2 9 6 12 6 1 7 4 3 15 1 14 1 12 3 10 2 10 14 21 13 17 6 6 17 1 21 2 14 16 17 9 11 20 21 11 18 ^'}},
+ {OUT=>'36BB0E2BA438A3E03214D9ED2B28A4D5C578FCAA'}],
+ ['64', {IN=> {f=> '50 1 12 8 20 13 2 9 20 9 14 10 1 16 2 22 6 4 16 14 15 1 12 4 14 9 21 3 3 9 8 21 15 14 8 4 14 4 2 3 8 12 8 6 1 2 18 20 15 3 19 10 ^'}},
+ {OUT=>'3ACBF874199763EBA20F3789DFC59572ACA4CF33'}],
+ ['65', {IN=> {f=> '44 0 10 20 14 6 3 4 21 1 12 4 18 2 6 7 6 9 20 14 10 10 19 17 21 12 15 17 7 10 11 8 10 12 1 19 19 9 18 21 4 18 11 9 22 5 ^'}},
+ {OUT=>'86BE037C4D509C9202020767D860DAB039CADACE'}],
+ ['66', {IN=> {f=> '47 0 15 8 15 3 5 6 2 19 12 17 4 20 8 11 20 2 18 4 16 20 12 9 9 6 16 21 16 3 16 18 3 19 5 16 2 4 2 12 11 15 11 14 17 2 10 18 8 ^'}},
+ {OUT=>'51B57D7080A87394EEC3EB2E0B242E553F2827C9'}],
+ ['67', {IN=> {f=> '48 1 5 13 3 21 5 3 6 18 18 10 1 21 21 7 1 13 12 19 1 14 6 8 21 19 21 11 19 13 2 13 4 1 10 22 16 4 9 4 10 16 3 7 15 11 9 13 17 12 ^'}},
+ {OUT=>'1EFBFA78866315CE6A71E457F3A750A38FACAB41'}],
+ ['68', {IN=> {f=> '45 0 14 7 6 2 20 3 6 19 19 10 2 22 12 17 12 1 20 7 7 15 20 6 18 8 3 14 23 18 15 4 7 5 23 15 7 14 10 10 19 17 2 4 15 17 21 ^'}},
+ {OUT=>'57D6CB41AEEC20236F365B3A490C61D0CFA39611'}],
+ ['69', {IN=> {f=> '45 1 15 11 8 9 17 5 12 18 14 6 20 17 21 12 16 9 22 9 20 15 2 22 11 2 6 11 9 8 2 4 14 19 3 21 21 23 8 2 11 4 8 4 20 22 11 ^'}},
+ {OUT=>'C532CB64B4BA826372BCCF2B4B5793D5B88BB715'}],
+ ['70', {IN=> {f=> '38 0 21 18 22 10 19 9 14 17 23 21 10 7 15 13 16 5 4 10 13 14 20 23 12 20 23 18 10 12 8 21 11 6 12 7 19 14 18 17 ^'}},
+ {OUT=>'15833B5631032663E783686A209C6A2B47A1080E'}],
+ ['71', {IN=> {f=> '40 0 18 22 6 9 22 5 23 13 6 8 23 20 22 5 22 15 19 20 9 9 1 13 13 10 14 13 5 22 14 21 9 21 19 14 14 4 18 13 12 14 ^'}},
+ {OUT=>'D04F2043C96E10CD83B574B1E1C217052CD4A6B2'}],
+ ['72', {IN=> {f=> '48 1 7 3 15 5 17 14 23 14 5 17 22 11 1 8 13 23 6 21 3 6 11 7 23 8 6 21 4 4 22 19 13 8 5 19 7 5 23 1 4 19 11 23 11 21 14 1 3 21 ^'}},
+ {OUT=>'E8882627C64DB743F7DB8B4413DD033FC63BEB20'}],
+ ['73', {IN=> {f=> '43 0 22 14 11 7 18 16 17 24 12 12 3 13 19 16 22 4 16 4 6 23 8 18 11 2 3 20 22 9 21 8 23 1 23 20 7 16 13 23 4 13 3 7 22 ^'}},
+ {OUT=>'CD2D32286B8867BC124A0AF2236FC74BE3622199'}],
+ ['74', {IN=> {f=> '47 1 23 6 13 19 2 3 7 2 9 9 15 6 13 4 22 6 19 20 1 9 7 14 1 15 3 23 24 22 18 12 12 17 19 10 8 11 22 12 10 2 20 15 18 17 18 7 19 ^'}},
+ {OUT=>'019B70D745375091ED5C7B218445EC986D0F5A82'}],
+ ['75', {IN=> {f=> '47 1 12 21 6 12 4 7 18 17 3 2 14 24 14 1 23 1 11 15 10 6 18 20 7 1 8 1 16 6 20 23 23 21 10 10 12 24 10 11 23 2 12 23 9 3 24 24 10 ^'}},
+ {OUT=>'E5FF5FEC1DADBAED02BF2DAD4026BE6A96B3F2AF'}],
+ ['76', {IN=> {f=> '52 0 14 10 18 15 14 5 16 11 22 2 15 24 8 22 1 4 24 9 10 15 3 9 5 4 17 15 9 12 19 19 1 3 10 6 8 3 17 8 18 24 19 3 4 15 4 9 2 24 5 20 13 13 ^'}},
+ {OUT=>'6F4E23B3F2E2C068D13921FE4E5E053FFED4E146'}],
+ ['77', {IN=> {f=> '42 0 20 17 19 22 13 8 10 19 15 11 1 14 17 20 22 10 7 11 16 9 21 22 17 23 12 15 4 24 7 21 18 2 21 16 1 19 18 20 11 3 15 17 ^'}},
+ {OUT=>'25E179602A575C915067566FBA6DA930E97F8678'}],
+ ['78', {IN=> {f=> '50 0 18 1 6 14 5 5 5 19 13 10 24 19 16 24 15 13 2 19 15 24 21 17 4 13 17 1 1 9 1 10 2 18 1 21 19 5 18 12 2 22 16 23 15 19 6 18 9 1 23 5 ^'}},
+ {OUT=>'67DED0E68E235C8A523E051E86108EEB757EFBFD'}],
+ ['79', {IN=> {f=> '51 0 21 13 14 11 18 12 13 3 19 9 20 22 20 2 11 12 6 1 12 16 18 2 9 8 4 3 11 17 11 5 4 19 16 11 23 13 18 1 20 8 2 16 16 21 4 19 5 5 20 24 16 ^'}},
+ {OUT=>'AF78536EA83C822796745556D62A3EE82C7BE098'}],
+ ['80', {IN=> {f=> '53 1 20 25 17 11 8 4 19 25 17 7 16 21 6 4 8 2 15 9 2 9 19 3 6 3 3 10 25 13 15 7 8 20 21 12 10 12 5 24 11 20 3 13 13 16 9 13 10 3 9 16 3 7 25 ^'}},
+ {OUT=>'64D7AC52E47834BE72455F6C64325F9C358B610D'}],
+ ['81', {IN=> {f=> '49 1 9 9 14 2 13 17 25 2 18 5 19 23 9 25 9 10 23 12 12 7 13 8 15 7 1 6 21 2 8 7 6 16 14 14 12 15 13 24 10 15 11 10 8 14 15 21 25 21 25 ^'}},
+ {OUT=>'9D4866BAA3639C13E541F250FFA3D8BC157A491F'}],
+ ['82', {IN=> {f=> '47 0 9 18 20 22 21 20 11 14 23 22 10 13 14 8 19 12 2 11 20 23 13 4 10 6 5 7 23 11 3 16 8 21 4 8 18 5 12 14 8 6 20 19 24 8 23 17 23 ^'}},
+ {OUT=>'2E258811961D3EB876F30E7019241A01F9517BEC'}],
+ ['83', {IN=> {f=> '48 1 7 19 1 18 1 14 22 13 14 5 8 22 18 14 25 17 11 12 22 2 12 12 16 12 13 18 17 12 17 14 18 8 25 9 23 5 3 8 14 24 17 7 3 3 23 17 22 19 ^'}},
+ {OUT=>'8E0EBC487146F83BC9077A1630E0FB3AB3C89E63'}],
+ ['84', {IN=> {f=> '51 1 19 17 16 22 24 14 16 20 23 20 9 19 16 7 12 16 5 8 9 7 10 21 24 10 11 19 1 21 14 14 19 3 22 8 12 20 1 18 5 6 5 12 14 1 1 11 9 22 3 24 4 ^'}},
+ {OUT=>'CE8953741FFF3425D2311FBBF4AB481B669DEF70'}],
+ ['85', {IN=> {f=> '52 1 6 1 11 16 1 12 8 11 11 17 10 22 7 3 10 2 6 4 24 16 24 19 4 5 18 11 12 9 20 21 25 2 21 18 10 20 25 21 3 17 17 5 8 22 25 19 8 10 19 7 11 18 ^'}},
+ {OUT=>'789D1D2DAB52086BD90C0E137E2515ED9C6B59B5'}],
+ ['86', {IN=> {f=> '44 0 26 14 21 25 25 4 9 13 5 8 9 21 8 12 26 24 9 24 15 1 23 22 16 14 8 22 15 19 24 20 7 8 15 24 12 4 4 23 21 13 19 15 21 12 ^'}},
+ {OUT=>'B76CE7472700DD68D6328B7AA8437FB051D15745'}],
+ ['87', {IN=> {f=> '59 1 15 7 3 21 20 8 22 14 23 26 19 2 10 18 3 5 3 1 9 15 15 3 7 13 23 9 7 1 13 17 14 25 9 16 2 2 6 13 7 19 25 17 1 5 21 2 7 22 5 6 25 3 12 19 6 2 4 24 17 ^'}},
+ {OUT=>'F218669B596C5FFB0B1C14BD03C467FC873230A0'}],
+ ['88', {IN=> {f=> '60 0 9 18 20 19 4 11 14 1 6 8 26 6 9 22 4 10 2 7 21 9 8 24 25 14 22 12 22 3 23 3 3 20 6 11 23 6 1 7 5 18 5 15 25 26 1 1 10 11 11 4 12 11 20 3 14 2 3 2 23 15 ^'}},
+ {OUT=>'1FF3BDBE0D504CB0CDFAB17E6C37ABA6B3CFFDED'}],
+ ['89', {IN=> {f=> '49 0 12 17 24 11 8 6 24 16 15 22 21 14 6 12 20 19 5 5 12 11 6 23 2 16 23 7 24 6 21 2 17 17 5 25 11 25 20 25 24 18 6 12 19 25 7 6 5 2 25 ^'}},
+ {OUT=>'2F3CBACBB14405A4652ED52793C1814FD8C4FCE0'}],
+ ['90', {IN=> {f=> '54 1 12 16 1 15 7 1 26 19 19 13 20 11 17 6 20 5 24 24 1 21 11 9 20 21 15 10 19 26 3 2 6 7 12 9 10 8 14 10 15 5 17 8 21 1 20 25 6 19 8 3 22 16 16 20 ^'}},
+ {OUT=>'982C8AB6CE164F481915AF59AAED9FFF2A391752'}],
+ ['91', {IN=> {f=> '63 0 17 13 11 10 17 15 12 6 13 14 17 4 12 10 24 5 13 24 3 5 2 5 11 14 8 5 10 17 16 8 4 14 21 15 3 6 17 25 8 2 3 3 19 10 13 22 22 8 2 13 25 17 2 1 19 1 14 20 2 5 4 15 24 ^'}},
+ {OUT=>'5CD92012D488A07ECE0E47901D0E083B6BD93E3F'}],
+ ['92', {IN=> {f=> '49 0 14 20 7 25 20 26 20 16 7 17 17 22 1 13 6 5 1 18 14 15 23 15 10 5 19 18 18 26 12 13 3 25 12 21 16 24 4 16 3 6 26 26 10 20 13 1 20 24 15 ^'}},
+ {OUT=>'69603FEC02920851D4B3B8782E07B92BB2963009'}],
+ ['93', {IN=> {f=> '56 0 3 8 14 5 5 7 11 13 11 26 11 4 26 17 20 19 11 10 3 10 14 9 6 9 7 16 10 4 4 19 19 2 26 13 19 17 15 24 15 4 21 22 13 13 12 22 2 14 20 5 18 7 17 24 20 20 ^'}},
+ {OUT=>'3E90F76437B1EA44CF98A08D83EA24CECF6E6191'}],
+ ['94', {IN=> {f=> '58 1 6 17 9 20 2 10 19 3 22 4 1 11 3 5 3 21 11 15 12 23 26 5 2 27 6 5 16 6 3 2 23 5 3 20 20 4 24 2 18 21 7 14 10 27 23 6 24 6 19 23 3 9 22 16 21 17 19 23 ^'}},
+ {OUT=>'34C09F107C42D990EB4881D4BF2DDDCAB01563AE'}],
+ ['95', {IN=> {f=> '58 1 17 7 21 19 6 16 15 15 20 14 2 25 19 14 18 19 7 9 1 14 11 10 16 3 23 14 26 10 11 1 18 1 12 24 19 19 1 7 2 3 24 7 12 9 2 8 16 20 24 5 26 26 4 9 2 7 25 17 ^'}},
+ {OUT=>'474BE0E5892EB2382109BFC5E3C8249A9283B03D'}],
+ ['96', {IN=> {f=> '54 1 8 12 18 14 26 7 17 18 4 20 1 16 14 21 26 4 6 8 24 11 25 15 24 16 23 4 10 23 21 24 15 10 9 26 7 14 24 21 6 20 5 17 16 17 1 3 12 1 4 13 3 9 21 26 ^'}},
+ {OUT=>'A04B4F75051786682483252438F6A75BF4705EC6'}],
+ ['97', {IN=> {f=> '56 1 7 18 11 1 19 20 23 12 12 27 13 13 15 16 13 1 16 15 12 26 3 16 16 8 17 13 21 4 6 5 19 14 16 4 16 11 14 18 18 27 9 13 21 3 26 22 3 7 6 4 26 3 15 8 25 21 ^'}},
+ {OUT=>'BE88A6716083EB50ED9416719D6A247661299383'}],
+ ['98', {IN=> {f=> '50 1 20 13 9 11 20 6 11 21 27 25 20 7 4 18 26 16 27 5 12 19 7 23 6 25 25 2 11 13 25 21 18 17 6 12 14 13 24 11 14 19 26 27 25 6 1 15 4 7 27 15 ^'}},
+ {OUT=>'C67E38717FEE1A5F65EC6C7C7C42AFC00CD37F04'}],
+ ['99', {IN=> {f=> '51 0 15 16 26 27 23 14 12 28 22 15 8 19 2 20 13 1 24 2 25 1 6 19 19 8 11 24 24 21 13 27 5 11 28 17 7 25 6 23 24 14 25 12 5 13 26 2 5 8 10 16 17 ^'}},
+ {OUT=>'959AC4082388E19E9BE5DE571C047EF10C174A8D'}],
+ ['100', {IN=> {f=> '58 1 5 26 18 19 21 3 12 11 13 4 14 22 22 14 16 13 3 22 16 23 5 19 6 13 10 26 17 27 26 4 3 25 6 14 2 3 5 7 23 11 22 8 25 2 9 25 18 17 8 2 14 4 19 1 5 27 13 24 ^'}},
+ {OUT=>'BAA7AA7B7753FA0ABDC4A541842B5D238D949F0A'}],
+ ['101', {IN=> {f=> '53 0 2 27 28 2 17 23 10 27 18 26 7 22 16 3 27 1 26 21 28 10 3 6 2 2 10 17 13 16 6 17 21 23 13 20 22 5 6 11 12 12 8 23 13 17 9 23 20 3 28 27 12 17 22 ^'}},
+ {OUT=>'351394DCEBC08155D100FCD488578E6AE71D0E9C'}],
+ ['102', {IN=> {f=> '59 0 28 19 5 21 4 27 8 1 19 14 20 6 7 9 1 6 22 3 19 26 14 8 6 7 19 15 23 1 17 16 6 26 14 5 22 25 4 7 10 16 21 10 18 19 24 16 23 8 3 17 28 18 10 2 5 3 21 21 15 ^'}},
+ {OUT=>'AB8BE94C5AF60D9477EF1252D604E58E27B2A9EE'}],
+ ['103', {IN=> {f=> '58 0 6 24 1 4 24 18 10 22 1 21 12 5 4 4 20 25 24 26 8 25 11 2 7 27 22 19 4 18 27 10 28 4 12 24 8 16 12 11 16 17 25 8 12 16 1 9 9 10 5 24 23 18 5 14 18 8 4 28 ^'}},
+ {OUT=>'3429EC74A695FDD3228F152564952308AFE0680A'}],
+ ['104', {IN=> {f=> '61 0 5 17 8 28 1 22 4 11 3 2 17 3 14 9 27 13 18 24 9 8 7 28 25 14 21 27 24 6 18 16 2 12 15 9 14 10 1 8 17 4 6 15 26 11 15 2 28 20 26 16 3 7 5 8 9 26 10 12 25 11 22 ^'}},
+ {OUT=>'907FA46C029BC67EAA8E4F46E3C2A232F85BD122'}],
+ ['105', {IN=> {f=> '53 0 9 13 24 15 20 2 4 8 2 22 20 19 4 15 14 28 13 25 10 10 12 28 24 22 26 28 15 9 11 26 19 22 27 2 21 8 20 23 26 12 10 21 9 15 13 25 7 26 1 13 5 9 20 ^'}},
+ {OUT=>'2644C87D1FBBBC0FC8D65F64BCA2492DA15BAAE4'}],
+ ['106', {IN=> {f=> '58 0 3 9 21 22 7 1 23 28 1 2 8 22 12 18 28 5 18 14 7 11 17 20 20 7 21 13 8 28 21 22 2 16 20 15 28 9 3 22 13 10 23 4 16 11 14 1 10 8 14 14 15 18 13 12 21 18 25 28 ^'}},
+ {OUT=>'110A3EEB408756E2E81ABAF4C5DCD4D4C6AFCF6D'}],
+ ['107', {IN=> {f=> '60 1 29 20 2 29 22 8 16 20 4 12 9 6 12 16 16 7 9 20 29 11 9 4 1 15 25 16 29 10 22 7 2 8 5 18 14 23 24 4 6 26 3 11 6 12 1 7 14 24 14 6 10 21 16 23 29 25 6 14 17 24 ^'}},
+ {OUT=>'CD4FDC35FAC7E1ADB5DE40F47F256EF74D584959'}],
+ ['108', {IN=> {f=> '64 0 12 10 5 10 15 25 8 15 3 7 13 25 16 14 1 29 22 26 15 27 9 1 8 8 28 6 13 5 13 3 15 5 23 8 23 2 5 5 4 17 13 14 7 17 12 27 3 18 5 7 5 26 18 15 22 28 16 13 7 2 23 19 25 15 ^'}},
+ {OUT=>'8E6E273208AC256F9ECCF296F3F5A37BC8A0F9F7'}],
+ ['109', {IN=> {f=> '56 1 17 7 16 25 23 11 11 15 2 13 9 26 2 24 26 7 28 11 2 29 7 22 23 5 28 19 1 27 29 1 24 11 18 20 3 13 11 7 3 15 17 24 1 18 13 6 3 25 27 16 28 18 24 8 23 22 ^'}},
+ {OUT=>'FE0606100BDBC268DB39B503E0FDFE3766185828'}],
+ ['110', {IN=> {f=> '51 1 29 28 6 28 14 12 28 27 22 4 14 25 1 3 9 7 11 14 15 16 10 19 12 19 11 20 13 28 4 27 28 7 27 12 4 28 21 17 22 20 17 15 15 23 22 13 12 21 22 21 29 ^'}},
+ {OUT=>'6C63C3E58047BCDB35A17F74EEBA4E9B14420809'}],
+ ['111', {IN=> {f=> '64 1 12 14 12 18 27 8 7 4 9 14 16 15 8 11 21 20 10 10 21 23 20 2 11 23 1 11 1 5 3 23 16 15 27 14 5 16 3 22 2 3 24 3 19 29 4 4 10 8 20 14 15 1 26 12 27 25 4 28 22 11 19 19 24 9 ^'}},
+ {OUT=>'BCC2BD305F0BCDA8CF2D478EF9FE080486CB265F'}],
+ ['112', {IN=> {f=> '60 1 20 8 9 5 25 19 17 19 15 7 24 24 21 3 20 16 8 3 17 28 18 29 9 23 9 10 29 4 12 24 15 5 8 22 17 29 12 3 8 29 15 21 21 4 7 20 7 10 7 26 10 16 24 6 7 12 8 12 15 17 ^'}},
+ {OUT=>'CE5223FD3DD920A3B666481D5625B16457DCB5E8'}],
+ ['113', {IN=> {f=> '60 0 9 17 11 28 12 26 26 6 29 13 10 20 6 23 10 4 3 26 26 14 20 20 25 14 13 15 24 14 11 4 23 27 24 20 9 16 17 24 13 12 6 1 14 26 25 7 8 21 1 19 3 2 2 17 21 13 5 9 21 11 ^'}},
+ {OUT=>'948886776E42E4F5FAE1B2D0C906AC3759E3F8B0'}],
+ ['114', {IN=> {f=> '54 0 25 1 27 24 6 23 16 5 1 20 29 22 25 9 25 10 3 28 28 25 19 18 16 24 14 15 5 28 12 28 26 29 2 15 15 9 5 18 19 22 12 15 4 6 15 24 16 9 4 26 25 18 27 12 ^'}},
+ {OUT=>'4C12A51FCFE242F832E3D7329304B11B75161EFB'}],
+ ['115', {IN=> {f=> '61 1 20 4 26 12 3 22 1 22 30 3 28 10 9 24 14 29 6 30 3 10 20 14 6 3 19 21 21 28 16 18 11 30 11 20 30 1 9 8 11 5 19 10 24 4 22 4 2 26 5 15 20 8 3 13 30 18 8 1 25 28 19 ^'}},
+ {OUT=>'C54BDD2050504D92F551D378AD5FC72C9ED03932'}],
+ ['116', {IN=> {f=> '56 1 20 15 21 18 18 12 16 13 24 9 21 2 28 6 1 23 9 18 27 27 4 9 13 10 8 14 16 15 12 11 14 21 14 10 11 25 17 17 30 21 13 27 26 26 22 14 13 17 21 19 9 9 20 23 13 28 ^'}},
+ {OUT=>'8F53E8FA79EA09FD1B682AF5ED1515ECA965604C'}],
+ ['117', {IN=> {f=> '59 1 10 28 24 10 22 27 23 27 8 17 14 6 4 21 26 15 1 8 29 27 6 28 15 3 27 25 25 14 19 13 29 8 24 2 8 2 4 12 19 11 10 6 26 14 22 24 30 10 11 12 2 12 17 23 8 8 12 28 12 ^'}},
+ {OUT=>'2D7E17F6294524CE78B33EAB72CDD08E5FF6E313'}],
+ ['118', {IN=> {f=> '56 0 14 28 2 17 4 8 3 26 9 23 21 30 30 20 4 13 28 29 9 3 17 7 19 30 28 1 2 20 9 12 24 15 30 20 27 3 23 11 6 29 25 23 26 17 20 10 22 15 23 6 25 5 4 30 2 29 ^'}},
+ {OUT=>'64582B4B57F782C9302BFE7D07F74AA176627A3A'}],
+ ['119', {IN=> {f=> '63 1 23 15 27 14 26 1 1 7 19 12 7 6 20 18 14 4 15 17 28 7 11 7 8 9 22 17 12 5 23 18 25 18 6 12 26 30 12 30 14 3 1 18 10 20 27 21 8 6 24 26 20 11 24 7 2 4 18 15 14 30 16 19 14 ^'}},
+ {OUT=>'6D88795B71D3E386BBD1EB830FB9F161BA98869F'}],
+ ['120', {IN=> {f=> '52 0 27 15 4 19 25 29 29 7 14 18 9 11 9 27 11 15 29 9 28 20 2 30 26 21 17 8 28 17 22 29 24 8 11 18 29 15 6 7 27 27 17 24 18 23 11 19 8 30 5 24 22 24 ^'}},
+ {OUT=>'86AD34A6463F12CEE6DE9596ABA72F0DF1397FD1'}],
+ ['121', {IN=> {f=> '66 1 25 15 28 23 5 10 21 5 8 7 3 10 19 17 6 9 15 29 10 7 4 1 16 21 16 29 13 18 5 3 8 15 8 21 29 20 5 27 2 13 27 7 7 30 2 18 26 10 2 5 29 21 15 25 26 24 8 12 20 3 9 10 30 7 12 29 ^'}},
+ {OUT=>'7EB46685A57C0D466152DC339C8122548C757ED1'}],
+ ['122', {IN=> {f=> '53 1 30 26 20 11 22 19 27 2 16 10 6 4 24 17 20 25 20 15 8 23 23 20 30 18 16 3 30 15 26 23 28 7 21 8 7 31 31 14 26 18 3 1 26 28 15 25 11 31 3 25 9 21 30 ^'}},
+ {OUT=>'E7A98FB0692684054407CC221ABC60C199D6F52A'}],
+ ['123', {IN=> {f=> '67 0 2 6 14 4 9 5 28 8 17 22 1 4 8 7 10 14 19 10 14 8 27 9 24 26 4 30 11 8 19 5 21 7 2 27 20 16 20 20 22 14 13 16 26 14 10 3 25 22 25 23 21 10 15 15 29 8 13 4 2 13 22 20 7 4 20 31 23 ^'}},
+ {OUT=>'34DF1306662206FD0A5FC2969A4BEEC4EB0197F7'}],
+ ['124', {IN=> {f=> '65 0 2 2 28 13 19 14 12 23 27 6 2 14 2 22 6 25 30 29 31 13 14 16 31 12 16 30 5 14 31 11 4 1 1 25 21 13 26 22 21 5 22 14 29 1 21 3 14 30 4 2 29 12 15 23 3 15 5 1 6 23 22 13 1 14 23 ^'}},
+ {OUT=>'56CF7EBF08D10F0CB9FE7EE3B63A5C3A02BCB450'}],
+ ['125', {IN=> {f=> '59 1 25 5 15 6 13 3 22 11 23 31 24 6 5 20 4 14 3 29 8 29 19 7 29 23 25 28 19 11 15 27 21 14 1 19 20 26 12 7 12 1 18 13 29 28 23 29 14 23 7 1 9 29 24 5 30 18 5 25 30 ^'}},
+ {OUT=>'3BAE5CB8226642088DA760A6F78B0CF8EDDEA9F1'}],
+ ['126', {IN=> {f=> '55 1 31 25 13 7 24 25 24 1 12 19 9 7 6 28 20 14 28 21 19 31 20 20 6 24 18 27 24 4 18 21 1 31 15 1 15 2 27 4 26 25 4 23 19 2 31 22 30 21 22 5 27 12 30 28 31 ^'}},
+ {OUT=>'6475DF681E061FA506672C27CBABFA9AA6DDFF62'}],
+ ['127', {IN=> {f=> '62 0 27 15 18 14 25 15 17 7 28 11 28 29 30 1 17 12 10 2 18 20 21 2 11 12 5 4 12 25 14 5 5 24 22 18 31 15 22 29 11 3 21 31 21 27 3 28 7 10 25 2 15 30 9 30 7 22 15 9 3 20 24 14 ^'}},
+ {OUT=>'79D81991FA4E4957C8062753439DBFD47BBB277D'}],
+ ['128', {IN=> {f=> '60 0 28 14 18 9 27 14 22 27 31 10 8 14 7 15 7 20 5 26 1 29 7 17 17 8 3 13 27 18 8 31 27 28 22 22 17 19 18 18 11 19 13 25 10 19 6 28 4 31 23 10 18 26 31 5 10 13 12 8 15 27 ^'}},
+ {OUT=>'BAE224477B20302E881F5249F52EC6C34DA8ECEF'}],
+ ['129', {IN=> {f=> '60 1 24 22 4 29 22 31 28 20 4 16 21 3 1 15 5 15 6 30 3 29 29 7 27 20 2 20 31 22 26 9 29 16 4 26 32 17 20 14 28 17 19 6 24 11 26 28 5 18 15 8 16 20 21 4 9 12 4 8 17 29 ^'}},
+ {OUT=>'EDE4DEB4293CFE4138C2C056B7C46FF821CC0ACC'}],
+ ['130', {IN=> {f=> '69 1 5 3 11 15 12 24 31 23 1 6 28 2 8 31 6 7 30 5 19 23 12 6 9 31 19 17 24 25 22 6 12 16 3 7 9 9 11 29 4 11 2 5 13 29 10 12 30 32 18 28 18 27 3 30 4 4 26 6 13 31 13 2 11 7 24 4 17 29 12 ^'}},
+ {OUT=>'A771FA5C812BD0C9596D869EC99E4F4AC988B13F'}],
+ ['131', {IN=> {f=> '95 0 21 19 21 23 11 42 36 2 13 4 1 33 22 16 27 9 4 33 16 3 30 15 11 32 13 17 38 32 9 38 4 36 15 32 27 19 42 18 6 36 22 10 29 12 25 40 15 29 23 28 30 4 8 11 24 9 10 31 28 43 23 16 29 33 5 40 26 3 19 12 36 43 5 35 37 5 14 11 45 35 16 10 8 32 4 15 35 26 2 39 22 37 22 30 29 ^'}},
+ {OUT=>'E99D566212BBBCEEE903946F6100C9C96039A8F4'}],
+ ['132', {IN=> {f=> '106 1 18 14 51 2 6 32 51 9 32 50 44 46 51 8 11 53 45 55 16 10 3 52 8 20 20 46 46 13 32 2 46 50 43 25 54 9 31 29 2 47 15 29 24 45 44 18 37 14 28 39 36 44 47 16 50 10 44 24 53 35 22 40 20 15 51 22 18 22 42 6 54 49 38 21 7 13 30 16 7 52 16 22 13 38 7 11 44 33 9 25 13 37 42 14 45 53 30 38 5 25 5 35 38 22 28 53 ^'}},
+ {OUT=>'B48CE6B1D13903E3925AE0C88CB931388C013F9C'}],
+ ['133', {IN=> {f=> '127 0 58 35 43 28 5 28 63 8 12 25 9 47 53 29 62 7 37 2 3 48 5 12 55 56 28 35 12 63 6 58 27 27 48 44 35 14 17 22 56 10 8 1 16 15 42 63 14 51 57 19 41 7 8 56 47 34 52 22 48 60 43 9 1 52 4 21 49 61 18 50 23 13 46 62 23 45 62 9 56 18 23 31 8 30 27 36 13 38 4 58 53 47 24 18 41 58 19 12 18 52 42 29 44 45 26 63 34 32 41 64 15 26 55 19 2 49 6 30 53 13 54 12 53 37 12 37 43 ^'}},
+ {OUT=>'E647D5BAF670D4BF3AFC0A6B72A2424B0C64F194'}],
+ ['134', {IN=> {f=> '148 0 60 4 51 47 58 38 17 63 33 23 28 43 12 69 70 33 17 12 50 18 18 36 45 2 67 4 45 20 4 33 38 29 45 8 22 58 39 71 38 32 53 35 19 53 31 29 51 35 4 63 18 33 26 47 70 9 64 62 63 30 15 1 35 28 16 40 20 14 50 33 19 38 30 27 55 10 16 46 47 7 55 12 53 26 56 33 29 55 25 17 48 43 21 43 18 24 63 27 68 46 38 33 35 10 18 11 27 5 9 58 35 70 36 36 39 47 2 10 66 47 5 18 21 44 71 51 57 3 22 7 56 55 28 25 14 40 16 24 48 37 66 50 24 45 18 39 53 55 ^'}},
+ {OUT=>'65C1CD932A06B05CD0B43AFB3BC7891F6BCEF45C'}],
+ ['135', {IN=> {f=> '165 1 15 62 35 29 15 40 19 76 67 4 5 71 46 61 26 8 77 48 1 23 12 60 40 24 44 33 29 42 73 66 49 61 20 30 1 54 52 42 39 64 23 65 37 24 20 11 26 66 22 77 22 57 7 38 57 33 61 73 7 64 1 49 35 76 14 27 21 45 68 38 58 73 13 72 47 73 33 8 66 23 38 4 56 77 47 10 71 13 20 31 41 6 51 3 18 17 61 47 14 48 76 46 28 34 43 1 56 4 25 7 65 41 1 34 37 23 59 59 27 26 13 15 14 75 60 14 1 28 59 26 65 61 16 23 17 28 6 19 2 35 49 30 29 48 2 63 73 59 1 3 76 41 11 19 18 43 54 63 67 51 4 9 78 60 66 ^'}},
+ {OUT=>'70FFAE353A5CD0F8A65A8B2746D0F16281B25EC7'}],
+ ['136', {IN=> {f=> '181 0 18 19 84 17 12 10 57 18 77 51 52 16 39 74 49 52 63 38 72 2 15 64 83 62 49 56 11 26 68 58 83 33 23 50 63 71 53 27 84 22 39 41 52 58 11 64 7 60 45 70 22 5 73 38 30 30 48 21 75 80 40 21 8 53 9 26 30 34 81 71 71 51 23 75 33 41 23 32 5 8 66 40 72 40 16 66 45 14 48 34 21 41 27 3 55 27 37 23 41 65 4 57 51 74 22 19 75 42 16 19 46 16 10 48 20 19 37 41 14 57 9 17 55 38 5 60 7 46 20 43 36 39 52 20 10 62 45 23 46 7 35 75 29 70 35 36 34 25 12 15 84 26 10 6 71 29 79 33 32 25 59 76 82 64 58 7 8 19 41 74 2 53 65 24 1 55 51 36 21 79 7 ^'}},
+ {OUT=>'CC8221F2B829B8CF39646BF46888317C3EB378EA'}],
+ ['137', {IN=> {f=> '184 1 60 66 66 6 3 9 73 12 7 40 70 18 71 70 65 51 14 14 27 50 9 87 81 50 22 19 40 37 16 79 12 34 37 76 82 10 61 7 81 49 67 26 45 82 50 81 63 45 69 31 31 76 51 9 59 34 51 54 34 83 10 33 51 86 81 82 69 18 8 22 64 19 86 62 58 33 37 17 34 5 29 83 42 76 50 54 66 39 9 1 36 43 17 65 6 35 56 72 71 83 88 10 1 8 87 22 6 21 78 25 89 43 62 40 55 85 31 89 74 63 46 28 24 26 31 17 7 8 27 19 12 85 17 20 27 77 10 2 54 80 17 52 74 76 69 78 11 20 80 4 29 24 85 75 18 39 23 70 83 29 57 67 72 70 33 4 15 46 42 2 69 13 53 33 69 64 33 64 14 40 69 59 78 54 ^'}},
+ {OUT=>'26ACCC2D6D51FF7BF3E5895588907765111BB69B'}],
+ ['138', {IN=> {f=> '193 1 68 43 95 53 38 58 55 28 20 16 67 48 17 86 32 44 68 67 28 16 14 79 25 15 72 67 50 80 18 30 10 75 1 60 45 87 78 28 95 49 63 70 59 26 6 51 73 60 65 18 26 8 87 5 58 31 25 57 40 46 78 57 34 78 61 36 66 57 38 80 22 32 68 71 30 74 37 81 66 77 66 55 2 51 24 93 61 40 68 45 61 12 63 24 89 59 52 72 43 20 20 69 36 40 88 46 9 62 55 77 84 20 18 6 77 15 52 39 75 3 26 4 85 17 62 29 11 92 46 58 29 59 28 42 80 71 96 2 49 85 37 63 4 61 14 2 53 87 25 86 6 75 76 93 41 39 93 92 42 56 41 63 26 28 18 77 11 50 78 79 1 12 12 91 29 13 58 5 56 92 66 59 4 39 47 95 5 5 62 33 13 80 27 ^'}},
+ {OUT=>'01072915B8E868D9B28E759CF2BC1AEA4BB92165'}],
+ ['139', {IN=> {f=> '203 1 35 28 11 7 20 7 17 3 3 30 89 13 65 56 66 63 22 82 16 31 55 56 77 91 91 71 101 13 10 85 101 95 17 99 98 91 33 14 20 48 32 7 64 29 38 35 25 4 95 23 34 1 85 81 23 31 96 71 84 50 15 79 47 25 51 45 35 66 19 61 60 9 31 93 64 70 30 42 86 53 1 71 46 42 22 38 96 10 99 34 76 26 55 73 63 63 97 23 92 81 64 46 1 30 31 35 86 91 88 64 87 16 37 69 84 94 60 100 3 47 52 8 71 87 57 29 76 43 18 45 46 15 65 12 44 42 66 60 15 68 19 58 39 62 76 9 92 101 57 32 4 34 15 41 62 32 89 71 43 35 31 41 21 17 82 33 96 27 62 29 82 57 46 62 15 24 99 37 83 40 52 46 56 80 98 3 91 74 6 27 7 58 94 10 41 79 97 84 77 74 26 99 35 ^'}},
+ {OUT=>'3016115711D74236ADF0C371E47992F87A428598'}],
+ ['140', {IN=> {f=> '212 1 26 101 17 91 45 97 80 59 102 30 68 4 85 9 4 39 16 18 85 70 11 87 62 72 78 38 3 41 53 82 82 35 18 13 94 64 52 39 77 59 26 9 65 46 64 98 32 29 86 79 16 63 54 76 56 98 16 98 78 22 72 33 103 104 52 84 12 65 15 85 101 97 84 31 51 26 100 100 38 80 13 2 78 7 24 44 84 103 27 7 28 16 33 99 25 103 54 14 42 62 87 92 27 22 42 5 52 100 84 73 72 63 24 48 56 52 23 5 17 76 31 1 95 58 43 60 50 62 30 23 35 79 20 35 3 72 32 45 51 87 41 84 27 79 77 70 102 15 54 15 100 8 52 69 105 3 30 84 42 93 66 89 69 74 24 33 42 97 4 38 99 106 13 93 6 106 74 100 54 45 21 59 56 37 9 50 32 75 79 31 77 9 61 1 8 68 6 60 81 7 100 99 14 61 48 25 73 26 70 72 94 34 ^'}},
+ {OUT=>'BF30417999C1368F008C1F19FECA4D18A5E1C3C9'}],
+ ['141', {IN=> {f=> '233 0 11 98 110 88 35 110 35 64 49 88 93 28 85 6 78 65 90 52 24 97 51 39 51 59 23 1 3 49 33 11 78 27 35 55 64 5 102 4 70 25 56 58 38 66 11 31 96 66 104 59 41 86 58 29 79 41 40 72 51 12 92 34 52 44 69 104 21 97 89 96 48 21 4 61 40 28 67 34 23 85 44 22 62 52 33 84 23 30 73 74 4 79 12 81 47 80 53 47 89 40 19 80 62 34 61 29 41 95 43 1 70 63 55 53 18 19 13 48 10 19 89 49 4 52 53 56 76 10 8 104 77 15 28 38 75 109 3 85 90 8 40 8 93 90 43 39 14 60 17 36 78 56 105 80 35 75 36 58 82 50 100 98 45 74 13 66 95 72 71 95 34 14 98 72 33 38 37 52 6 14 107 59 3 29 61 67 98 92 5 93 17 98 36 87 41 75 71 57 88 17 25 91 84 3 58 20 92 69 51 50 36 31 14 25 18 30 18 1 41 104 30 82 59 87 70 34 96 28 47 62 81 103 48 ^'}},
+ {OUT=>'62BA49087185F2742C26E1C1F4844112178BF673'}],
+ ['142', {IN=> {f=> '234 1 63 90 108 108 102 64 82 88 4 111 76 97 22 1 108 41 34 91 33 20 25 24 26 8 83 11 31 7 85 109 106 4 105 85 68 28 33 99 53 8 16 12 11 74 17 83 66 70 16 30 9 67 68 34 24 81 47 92 72 47 37 33 38 92 17 8 28 88 22 62 69 32 89 75 3 72 96 85 13 105 24 38 37 94 115 83 72 108 114 24 93 76 103 60 99 102 9 43 10 59 95 46 33 93 15 26 69 44 2 86 107 55 45 61 65 92 66 9 55 39 70 83 29 98 67 13 111 15 20 31 62 8 2 51 20 19 33 44 14 115 71 112 97 10 41 28 53 51 26 57 15 38 98 55 106 22 56 31 50 95 107 110 84 70 10 108 96 73 100 25 36 55 88 71 63 96 30 90 96 79 22 7 30 23 28 59 89 8 51 99 47 86 34 18 43 65 98 104 107 49 7 79 71 8 57 21 29 80 2 74 78 44 57 9 61 22 13 68 52 91 74 98 43 30 58 68 95 101 72 102 76 42 99 61 ^'}},
+ {OUT=>'E1F6B9536F384DD3098285BBFD495A474140DC5A'}],
+ ['143', {IN=> {f=> '249 0 27 117 45 119 80 2 59 52 8 76 20 94 102 69 96 42 46 106 67 9 110 89 71 69 34 31 15 85 16 29 100 82 37 62 68 95 108 44 23 114 34 36 56 93 11 30 96 12 31 67 14 114 14 66 70 30 81 46 53 119 85 6 104 47 92 72 70 5 70 15 115 68 105 33 97 13 85 106 14 61 29 22 86 45 57 69 91 38 38 28 66 13 60 95 103 3 15 5 113 38 23 62 5 65 94 107 73 104 37 47 102 117 3 78 35 7 95 56 78 45 52 28 46 43 37 32 53 19 55 29 47 97 76 115 83 71 11 45 62 73 99 116 2 24 116 7 28 41 2 29 37 52 23 5 118 79 31 57 89 61 24 101 78 50 93 73 41 7 33 45 47 24 1 48 73 36 3 25 87 46 28 108 54 68 53 67 119 28 36 118 104 42 88 27 112 4 74 85 1 63 39 97 71 74 75 76 10 49 12 79 11 50 103 118 94 117 118 37 27 12 94 60 28 51 47 82 110 17 15 105 23 52 43 12 21 22 81 41 12 74 90 42 108 117 98 67 4 69 85 ^'}},
+ {OUT=>'B522DAE1D67726EBA7C4136D4E2F6D6D645AC43E'}],
+ ['144', {IN=> {f=> '243 0 76 81 26 101 13 68 62 106 87 19 98 32 81 63 79 93 31 121 123 75 52 11 66 41 54 87 38 5 104 62 51 38 55 29 31 120 44 16 48 94 46 105 91 66 78 27 43 6 64 2 55 79 75 84 113 22 4 113 109 31 33 17 96 11 29 63 98 103 107 116 34 14 9 95 38 18 51 75 33 109 118 55 66 4 76 7 75 70 82 74 23 1 26 69 40 112 99 47 65 31 70 119 52 103 88 85 86 28 16 12 76 25 22 78 64 21 86 27 61 77 72 108 2 18 106 119 121 54 16 85 72 2 73 26 88 66 60 80 35 24 117 63 24 44 67 52 122 119 33 72 16 99 98 69 54 19 42 28 53 114 32 117 81 100 57 49 123 56 21 68 80 53 95 1 45 95 107 98 87 1 27 24 99 116 16 67 1 113 91 84 25 40 25 72 3 28 90 87 112 80 16 117 45 77 36 90 105 59 88 122 64 108 108 71 98 18 50 115 93 105 77 35 6 46 55 47 102 4 26 87 111 120 81 113 4 57 105 3 84 94 115 61 73 ^'}},
+ {OUT=>'E9A021C3EB0B9F2C710554D4BF21B19F78E09478'}],
+ ['145', {IN=> {f=> '255 1 91 47 51 9 57 9 55 94 61 61 68 46 107 6 35 81 114 78 96 74 14 89 73 67 67 69 113 107 11 98 113 109 20 92 17 67 70 88 57 10 124 9 60 122 93 91 45 7 15 24 51 5 98 115 24 49 90 104 117 66 128 94 64 80 12 43 91 46 111 59 58 77 30 14 88 60 123 68 41 44 68 40 104 118 41 43 93 90 105 92 16 127 26 54 125 114 79 71 24 48 21 25 118 40 103 49 91 44 67 65 25 119 109 18 48 23 69 112 38 61 64 87 84 104 119 110 122 92 22 1 8 83 34 100 32 62 41 46 112 34 102 76 56 39 4 127 30 13 19 110 124 7 16 128 95 4 124 11 104 116 126 49 95 3 55 96 70 90 101 4 122 96 75 118 39 128 99 92 18 42 20 87 83 35 75 111 61 67 71 28 101 9 56 34 105 95 71 23 73 71 26 57 15 23 76 55 99 89 128 98 117 68 43 88 62 38 62 39 2 83 36 15 26 60 128 96 73 74 10 1 12 42 22 2 77 33 33 32 57 13 14 82 57 12 39 3 58 80 14 87 85 44 69 109 119 ^'}},
+ {OUT=>'DF13573188F3BF705E697A3E1F580145F2183377'}],
+ ['146', {IN=> {f=> '283 0 102 55 53 41 60 88 25 67 58 76 44 22 68 118 108 40 95 96 81 90 85 28 77 18 11 37 72 93 60 110 124 119 95 131 91 37 109 126 8 73 69 72 80 17 83 5 76 20 32 15 10 1 103 18 22 116 98 9 51 104 102 44 33 15 12 24 31 89 1 6 28 101 8 64 72 106 30 5 52 89 111 39 108 64 85 17 57 124 22 105 78 115 3 40 108 66 108 77 128 103 44 35 38 13 95 10 111 63 98 117 61 51 126 69 96 70 70 59 39 13 97 33 112 2 77 7 123 70 83 29 66 67 49 79 19 104 115 14 60 2 55 40 71 33 28 114 51 91 17 46 45 128 57 87 62 25 115 38 50 55 90 74 8 51 102 79 43 94 36 122 94 12 41 36 25 104 91 24 7 99 80 30 126 32 63 122 107 114 27 28 79 41 12 35 51 115 122 70 22 79 65 2 88 27 17 59 15 23 44 57 5 65 6 26 78 80 125 93 84 100 45 22 129 68 36 111 74 118 11 50 42 120 47 21 8 86 112 26 67 60 99 45 93 47 8 38 59 52 56 124 20 82 18 117 24 18 46 106 19 117 26 41 47 45 130 7 15 1 4 5 100 10 85 50 44 11 48 92 119 108 42 118 125 ^'}},
+ {OUT=>'188835CFE52ECFA0C4135C2825F245DC29973970'}],
+ ['147', {IN=> {f=> '272 0 8 61 99 70 96 20 87 123 134 82 22 2 110 118 33 86 5 7 5 94 56 15 60 96 54 13 22 55 99 4 25 105 17 37 69 10 38 117 117 30 70 13 9 109 115 62 94 52 66 117 100 135 7 75 23 5 81 110 31 118 29 1 62 11 41 88 109 119 102 37 3 30 123 47 31 56 134 29 124 116 118 99 21 56 77 91 23 37 135 81 44 51 67 95 51 133 30 57 67 116 122 48 100 7 132 97 106 69 93 4 95 125 102 103 119 81 57 133 96 37 118 50 117 113 81 127 17 45 103 32 121 129 60 43 65 127 30 36 132 110 52 53 35 71 12 76 22 72 130 112 99 76 26 21 73 63 63 97 23 58 115 132 114 1 132 31 35 18 23 54 30 53 118 37 35 84 94 60 100 3 47 18 110 105 87 57 63 76 43 52 45 46 49 65 12 10 42 66 60 117 34 19 92 5 28 76 9 126 101 125 32 38 34 15 7 62 32 21 3 43 69 31 109 123 51 116 135 130 129 130 63 14 57 80 62 15 126 31 105 83 108 120 80 124 46 98 105 91 6 6 27 7 58 128 78 7 79 63 84 77 74 128 65 61 95 121 17 24 123 117 51 122 ^'}},
+ {OUT=>'41B615A34EE2CEC9D84A91B141CFAB115821950B'}],
+ ['148', {IN=> {f=> '284 0 44 71 43 20 126 58 53 47 98 18 19 119 93 29 70 39 94 112 44 115 135 98 82 10 67 29 102 113 68 80 19 75 1 91 114 87 80 7 40 37 86 120 16 104 136 117 82 138 32 65 114 119 137 121 8 12 46 126 26 119 73 130 60 76 113 100 14 133 26 116 34 120 80 95 84 53 15 24 44 51 4 10 23 77 24 99 66 37 54 63 42 136 21 34 76 5 17 128 101 1 59 40 113 112 32 97 31 93 105 79 91 18 39 1 103 132 51 68 124 111 13 97 43 128 69 84 85 72 15 12 26 87 16 16 92 101 13 77 4 118 89 103 56 42 16 60 44 39 126 46 18 83 93 41 105 3 82 106 115 91 6 4 54 115 15 120 109 113 48 41 9 95 20 62 67 105 111 25 132 7 116 46 138 44 83 61 124 131 35 107 6 109 81 114 67 41 137 77 56 74 73 34 12 14 69 52 11 98 47 54 83 81 6 1 15 88 35 139 80 83 49 89 27 47 130 92 133 87 51 112 76 49 109 49 57 93 73 22 117 50 64 58 97 139 36 131 111 133 58 33 8 88 55 38 90 46 30 118 57 29 82 74 41 117 38 46 94 92 5 105 15 117 70 103 68 60 120 48 21 110 85 40 81 66 ^'}},
+ {OUT=>'AB3DD6221D2AFE6613B815DA1C389EEC74AA0337'}],
+ ['149', {IN=> {f=> '291 0 46 113 52 134 79 74 64 57 18 23 9 52 8 16 103 57 138 59 59 65 92 2 7 130 92 8 34 40 86 131 140 100 112 4 42 1 110 108 43 37 15 67 19 35 94 61 130 98 35 88 34 65 104 56 126 118 50 87 10 81 109 90 86 118 32 6 114 88 39 38 39 62 3 12 134 72 137 35 75 81 115 106 140 112 11 123 41 103 45 95 84 71 107 13 26 110 96 62 16 109 84 59 53 38 27 8 28 13 32 137 17 138 41 122 36 99 65 99 83 36 112 29 49 70 96 126 136 131 116 3 18 17 126 142 14 37 141 141 123 42 13 20 83 42 139 83 54 49 58 42 7 137 29 48 16 121 127 34 52 140 106 128 58 36 124 83 24 69 54 61 112 17 6 95 97 24 57 86 124 59 71 119 67 1 109 54 68 49 57 132 32 5 71 113 40 80 104 75 106 133 31 126 130 104 62 9 39 44 66 116 141 135 96 132 19 41 121 126 124 77 8 4 60 82 6 101 124 89 51 123 48 40 85 77 21 112 10 69 66 115 87 16 108 30 84 65 80 103 32 131 134 73 47 10 63 39 50 93 37 135 114 69 48 34 58 23 27 133 37 9 40 98 41 115 99 70 83 29 42 67 133 55 79 80 91 122 12 2 115 112 47 ^'}},
+ {OUT=>'0706D414B4AA7FB4A9051AA70D6856A7264054FB'}],
+ ['150', {IN=> {f=> '293 1 33 13 99 138 1 42 89 118 87 113 99 12 134 142 100 38 5 55 75 14 110 108 42 64 130 79 138 62 64 69 57 11 123 25 59 16 111 94 24 65 30 51 119 48 107 92 84 69 28 136 143 54 20 6 70 47 142 64 4 65 59 73 99 134 146 102 125 116 57 137 137 72 48 128 78 5 80 63 54 85 30 22 129 68 21 21 74 28 128 107 27 60 2 93 95 71 37 11 37 15 39 102 3 104 65 80 59 52 113 34 20 67 60 27 81 135 46 106 106 102 68 128 17 15 100 124 15 43 136 122 100 67 142 35 14 53 120 2 89 93 99 73 9 122 39 77 15 96 90 43 79 134 60 92 105 55 96 31 119 77 97 72 23 140 38 30 43 83 136 88 107 117 72 109 118 58 91 119 73 95 100 59 138 123 54 49 143 50 133 66 106 45 80 88 42 93 5 59 77 101 74 110 104 40 92 19 77 76 86 102 129 3 144 101 139 134 56 90 18 91 94 85 55 10 137 11 58 1 107 113 70 22 7 56 29 143 111 8 46 45 116 122 129 89 7 121 53 95 14 49 118 62 125 91 37 97 15 35 100 63 140 63 50 51 58 26 127 6 45 59 102 121 114 85 141 135 10 72 19 106 66 66 41 53 13 38 1 21 103 50 108 46 119 ^'}},
+ {OUT=>'3CBF8151F3A00B1D5A809CBB8C4F3135055A6BD1'}],
+ ['151', {IN=> {f=> '297 1 46 31 132 112 28 63 124 97 129 43 40 72 99 107 132 137 96 139 99 145 121 144 118 37 81 39 94 60 55 109 47 109 110 75 42 12 139 137 43 128 106 107 19 126 12 101 148 127 15 117 125 125 62 96 13 76 70 96 101 110 138 8 95 76 143 17 32 97 79 149 39 31 94 123 21 41 135 55 84 70 33 135 118 50 62 121 81 1 45 144 93 60 5 64 137 8 105 91 82 67 27 113 119 53 18 98 79 48 84 32 135 128 5 1 20 76 17 85 108 72 36 141 140 49 150 105 104 3 149 14 54 18 148 64 49 125 37 28 28 101 22 104 91 32 82 117 12 114 69 58 2 58 115 9 108 47 59 65 14 92 7 4 86 98 16 82 92 95 38 94 10 10 48 97 104 66 115 97 142 115 122 119 40 97 16 32 47 34 88 89 26 50 12 76 80 51 40 9 133 24 44 40 122 84 108 22 142 140 99 44 15 54 8 42 125 150 130 21 79 124 62 46 119 15 29 91 57 150 42 138 71 61 68 80 114 6 1 70 121 18 35 113 56 87 86 10 73 14 29 41 72 89 1 133 87 101 123 59 90 142 77 133 52 78 48 34 138 134 27 17 60 131 147 61 93 148 39 132 49 62 71 36 91 4 139 49 100 120 43 113 144 30 94 73 127 40 125 ^'}},
+ {OUT=>'DA5D6A0319272BBCCEA63ACFA6799756FFDA6840'}],
+ ['152', {IN=> {f=> '313 1 35 97 95 76 105 88 32 138 30 69 61 40 47 21 107 6 39 81 114 53 125 53 147 14 4 73 146 96 98 13 136 11 98 117 138 153 67 146 71 99 88 7 139 24 13 35 47 97 145 74 36 119 3 51 84 48 119 53 49 15 79 17 120 103 148 64 30 41 97 120 75 111 63 58 131 134 18 13 10 48 18 16 48 43 15 54 18 41 47 122 144 80 92 145 77 1 33 89 54 46 78 48 21 54 43 40 53 24 16 73 42 94 29 44 34 151 152 23 123 12 142 140 43 37 88 29 19 35 72 96 151 130 62 112 34 36 91 120 50 112 138 2 105 60 68 137 131 5 17 19 139 74 11 120 78 149 58 128 15 104 16 126 78 20 57 134 71 49 90 76 108 126 100 54 68 39 132 153 42 147 146 124 62 87 35 75 61 65 46 100 82 105 113 31 63 5 95 54 71 77 127 150 80 36 144 2 130 59 74 39 3 152 121 122 18 117 12 117 141 118 135 62 36 69 5 39 53 150 52 153 143 30 66 96 126 131 56 137 8 7 86 142 14 7 111 141 93 136 137 134 43 12 89 23 44 9 152 146 121 97 19 38 110 91 67 14 32 110 66 68 8 130 84 73 118 59 24 41 72 121 150 55 37 138 27 104 66 124 9 51 109 47 125 109 148 8 29 47 72 146 149 61 93 10 20 54 15 76 133 125 106 110 67 ^'}},
+ {OUT=>'FB4429C95F6277B346D3B389413758DFFFEEDC98'}],
+ ['153', {IN=> {f=> '330 0 23 9 26 136 27 51 115 122 44 106 6 146 108 113 85 51 8 96 47 56 137 62 59 89 143 71 140 14 85 156 139 99 154 30 53 115 35 147 108 148 58 52 28 103 19 92 95 152 152 10 11 13 155 67 11 83 101 69 153 152 45 141 14 120 129 140 119 59 2 89 73 70 83 29 16 67 81 29 1 54 65 96 117 2 37 47 128 33 3 89 108 98 139 49 78 27 103 39 119 94 132 90 38 132 55 65 131 90 58 2 54 100 69 118 22 44 19 7 148 93 25 29 123 81 64 131 55 30 1 89 38 97 82 64 9 28 86 123 151 10 133 40 154 102 4 111 65 9 63 59 124 116 72 105 76 57 137 97 32 145 108 78 112 50 43 34 75 20 22 129 68 11 118 74 125 118 57 17 20 129 53 65 61 144 1 17 142 156 52 100 54 15 20 59 52 63 131 20 57 124 31 125 46 106 76 92 8 98 154 152 80 114 15 140 136 112 100 17 92 25 151 150 80 99 69 83 49 43 156 102 19 57 122 96 30 3 39 134 40 32 75 5 76 127 138 99 17 57 52 150 130 18 127 33 23 116 107 78 77 77 42 69 68 48 41 69 33 75 40 49 128 103 4 146 93 10 83 66 96 152 30 38 12 33 5 39 47 41 34 60 74 20 42 156 67 46 56 102 89 3 124 81 99 104 56 50 8 61 74 55 15 87 108 28 138 47 93 60 2 124 46 126 103 91 145 36 25 116 122 51 ^'}},
+ {OUT=>'2C6E30D9C895B42DCCCFC84C906EC88C09B20DE1'}],
+ ['154', {IN=> {f=> '322 0 75 7 107 158 81 105 154 90 20 125 77 114 69 92 7 58 21 98 154 50 128 149 117 127 153 45 3 18 121 86 29 71 79 101 2 5 22 143 10 27 53 146 157 148 112 33 22 80 123 24 147 1 112 82 159 63 74 97 109 33 151 32 89 87 132 117 46 129 59 115 91 114 118 37 21 9 94 60 25 89 47 79 110 55 12 143 99 87 43 88 56 57 160 76 12 71 128 77 146 117 95 105 42 66 3 76 20 76 101 100 118 149 45 26 143 148 32 57 39 129 19 31 84 123 1 152 135 5 54 30 13 125 68 30 62 101 51 142 5 94 83 20 116 24 107 109 105 91 42 17 27 93 69 3 139 68 79 38 84 2 85 128 126 122 131 46 17 35 98 42 26 111 100 29 120 55 84 114 109 145 14 18 138 14 9 85 7 18 129 91 2 94 51 133 82 87 123 64 39 8 103 38 75 110 78 7 9 45 115 42 138 135 86 78 16 62 52 75 159 54 151 121 149 77 74 16 85 47 102 105 82 119 10 67 137 153 148 135 28 49 26 151 153 36 80 11 130 113 24 44 30 102 24 58 133 122 140 99 24 156 54 119 42 115 140 90 132 19 94 2 157 99 136 19 71 7 130 153 108 51 21 58 70 74 137 1 40 111 149 5 103 6 27 76 141 23 125 140 1 72 29 152 103 87 51 93 29 80 132 77 123 153 68 159 14 98 114 158 121 158 81 131 ^'}},
+ {OUT=>'3DE3189A5E19F225CDCE254DFF23DACD22C61363'}],
+ ['155', {IN=> {f=> '322 0 35 93 109 125 119 10 10 19 135 26 4 74 135 35 120 129 113 92 17 29 47 88 14 159 149 87 45 36 75 68 22 138 20 59 61 144 151 11 107 6 153 81 114 43 85 157 97 148 118 73 126 56 58 137 96 11 98 67 98 103 57 146 21 59 88 151 139 148 127 25 17 47 115 34 160 109 107 51 64 28 69 13 49 149 69 141 90 93 118 64 10 1 67 80 35 111 13 58 101 124 132 147 154 18 162 6 162 33 5 34 142 41 161 82 114 70 92 145 57 155 137 114 79 44 36 48 48 21 14 13 40 33 14 150 33 32 54 143 14 4 101 142 23 93 136 132 120 147 17 38 163 143 5 52 46 151 130 32 72 34 124 150 51 100 112 128 126 65 10 28 87 81 159 131 19 99 54 125 110 58 119 28 78 129 104 140 126 38 154 27 114 61 153 90 66 98 76 50 158 48 39 82 123 22 147 136 114 52 37 35 75 41 15 150 60 52 55 103 21 23 129 95 24 71 47 97 130 50 140 144 106 100 9 64 19 117 122 71 92 8 77 156 97 121 98 85 2 36 39 109 143 23 120 156 133 93 154 36 66 116 131 160 127 162 161 46 142 14 141 81 141 63 86 117 104 3 146 39 127 34 133 102 106 91 57 9 28 60 61 7 158 12 80 26 8 122 80 44 63 68 49 158 21 32 81 150 15 141 108 161 64 46 124 123 31 99 27 105 109 98 112 144 ^'}},
+ {OUT=>'93530A9BC9A817F6922518A73A1505C411D05DA2'}],
+ ['156', {IN=> {f=> '336 1 34 161 107 149 48 67 138 109 156 104 37 133 60 80 84 81 160 9 16 96 164 1 95 112 4 86 163 116 98 103 55 31 8 56 37 36 127 32 9 89 103 31 100 161 85 106 119 89 154 43 115 162 137 108 128 38 42 155 103 9 62 65 102 122 10 138 160 125 47 158 43 91 69 123 132 35 121 4 110 89 130 69 29 139 69 53 70 83 29 163 67 41 9 108 34 45 76 87 2 144 164 98 33 160 79 78 48 89 9 38 134 93 146 79 54 122 80 38 112 55 55 101 70 8 129 44 70 59 98 149 24 136 124 138 63 25 166 83 51 34 91 45 30 118 59 28 87 72 44 116 28 36 103 101 113 10 114 62 111 71 65 126 53 19 114 86 42 85 36 57 137 57 159 95 88 78 72 20 23 14 65 10 22 129 68 1 68 74 75 108 7 7 147 109 13 35 51 104 158 164 122 126 2 50 4 132 127 59 52 13 81 20 47 107 74 148 115 46 106 46 82 115 68 144 142 60 104 15 90 136 102 100 134 42 15 141 100 40 49 49 73 166 13 156 82 166 37 82 96 137 130 166 134 20 139 45 122 56 107 98 79 124 17 32 130 120 165 77 23 130 96 67 68 47 37 12 29 18 38 158 19 160 55 147 39 118 83 121 96 43 137 33 66 86 112 147 155 149 140 5 19 17 148 161 10 44 159 146 57 16 26 102 49 3 104 61 59 74 56 10 165 31 54 25 142 157 37 58 165 128 154 73 50 149 94 137 ^'}},
+ {OUT=>'E31354345F832D31E05C1B842D405D4BD4588EC8'}],
+ ['157', {IN=> {f=> '330 1 61 51 65 132 23 169 116 122 14 66 7 98 131 72 69 127 72 163 125 68 69 51 47 159 31 164 71 118 50 83 113 81 127 153 45 137 134 121 68 163 26 43 65 127 166 138 98 144 18 53 137 139 148 76 158 4 62 78 167 102 144 94 55 141 63 29 97 91 24 115 166 80 69 132 99 1 120 23 88 64 87 118 37 137 152 94 60 168 71 47 52 110 37 155 125 63 42 43 52 11 12 151 31 12 44 110 32 128 117 68 87 24 39 164 76 145 58 101 91 100 140 151 143 130 32 21 3 111 1 31 75 123 153 116 135 130 27 164 165 116 23 12 62 83 24 133 139 49 74 154 80 158 80 64 105 91 6 142 27 75 24 128 112 41 79 29 84 145 40 128 99 95 95 19 17 160 89 15 17 84 64 11 93 10 66 78 73 127 148 18 129 139 143 49 150 9 84 82 154 85 15 88 82 60 87 19 12 133 58 20 39 65 51 141 134 27 70 167 120 117 86 60 16 44 16 57 132 18 142 85 104 59 47 141 58 2 66 96 46 119 153 40 110 126 103 90 144 13 26 106 144 80 145 134 103 95 24 44 21 84 140 13 97 104 140 99 6 147 54 83 42 106 131 54 96 135 67 118 121 81 109 10 53 132 112 117 81 33 155 49 61 38 119 1 13 102 131 148 94 131 143 67 123 148 89 104 135 72 145 152 76 87 6 66 2 71 123 77 114 108 59 123 166 62 96 140 94 149 116 169 ^'}},
+ {OUT=>'3FF76957E80B60CF74D015AD431FCA147B3AF232'}],
+ ['158', {IN=> {f=> '349 0 125 17 93 82 80 110 156 147 156 99 154 4 29 90 163 120 84 113 56 8 157 29 61 169 141 113 78 48 50 13 138 11 50 61 99 106 2 107 6 117 81 114 34 49 112 52 130 82 73 108 20 22 110 60 11 98 22 62 58 48 146 149 23 88 142 139 121 91 16 163 2 88 171 133 100 62 51 46 10 24 150 49 131 60 114 63 84 91 64 165 138 40 44 172 111 141 58 74 115 96 129 145 164 153 170 126 24 169 16 115 41 125 46 87 61 92 145 39 155 92 78 70 35 27 21 48 21 151 159 40 15 5 132 170 23 18 107 160 150 56 133 23 66 109 123 102 102 172 166 145 116 151 34 1 151 130 5 36 34 97 114 15 82 128 112 119 99 29 138 165 42 36 159 95 19 63 36 89 101 40 92 1 33 93 104 113 126 2 136 96 52 108 90 57 89 31 5 113 30 39 37 96 4 147 127 105 43 165 35 75 23 143 105 24 25 10 94 12 160 102 95 170 71 20 70 112 23 95 144 61 73 137 55 1 81 95 26 65 172 41 147 79 103 80 40 121 36 12 64 98 169 93 111 115 48 127 9 39 107 131 115 118 162 161 10 142 14 123 54 141 36 41 99 77 140 128 167 82 25 106 57 70 64 21 19 15 34 126 149 167 53 163 127 86 35 8 54 23 40 140 3 169 45 150 152 96 81 143 28 28 124 87 13 90 9 87 109 53 67 164 28 131 89 149 42 55 126 79 132 74 19 133 30 68 72 75 148 9 10 72 152 144 83 106 153 74 163 98 152 ^'}},
+ {OUT=>'34AE3B806BE143A84DCE82E4B830EB7D3D2BAC69'}],
+ ['159', {IN=> {f=> '375 1 94 28 13 8 20 28 18 118 5 140 89 67 171 64 152 85 61 101 80 154 149 34 115 135 128 108 110 20 33 128 103 35 38 57 95 10 111 151 98 29 149 7 82 69 96 114 26 103 171 101 53 121 24 2 121 51 35 70 83 29 154 67 5 167 63 16 27 58 60 2 99 128 71 33 160 70 51 3 44 149 2 89 84 101 43 18 113 71 38 94 55 46 74 52 139 102 35 43 50 80 122 6 100 88 129 36 25 148 47 24 7 55 36 30 82 32 19 78 63 26 71 28 167 85 56 167 95 159 78 26 66 35 65 90 44 159 105 59 15 67 57 137 21 132 50 70 78 36 169 5 172 56 1 22 129 68 168 23 74 30 99 138 174 120 91 153 8 42 68 158 155 104 99 133 5 135 96 82 59 52 144 36 20 38 62 29 112 106 46 106 19 73 70 41 135 133 42 95 15 45 136 93 100 98 173 6 132 55 4 4 31 64 130 162 156 64 157 19 46 96 92 103 139 134 2 94 18 86 38 89 62 61 79 157 14 112 111 156 32 14 85 78 31 59 20 1 161 169 149 29 122 150 133 37 102 30 109 65 85 51 174 110 164 66 77 76 111 119 131 95 5 1 166 103 134 141 17 158 123 137 48 165 175 102 13 3 86 43 23 47 56 150 165 4 36 174 115 157 168 13 147 119 109 55 41 140 67 27 31 27 53 126 17 163 116 122 160 60 7 92 113 66 45 109 60 151 125 62 39 39 17 153 13 152 53 94 50 53 89 57 127 153 45 119 104 121 56 145 172 19 41 103 166 108 68 126 12 53 131 127 148 52 134 168 50 48 155 72 132 82 37 129 63 175 160 ^'}},
+ {OUT=>'D7447E53D66BB5E4C26E8B41F83EFD107BF4ADDA'}],
+ ['160', {IN=> {f=> '366 1 73 15 79 139 71 51 132 81 135 111 166 61 37 60 118 37 92 134 94 60 150 53 47 25 110 19 137 107 27 176 43 16 145 146 142 165 12 17 92 166 110 117 41 69 6 12 164 76 109 40 101 82 82 131 134 115 143 112 32 164 146 93 162 31 66 123 144 80 135 94 137 156 107 157 173 62 65 176 124 112 4 65 127 44 131 53 19 105 91 149 106 27 57 158 92 85 14 79 20 84 127 174 128 72 68 59 171 17 124 80 167 8 57 28 172 66 144 48 42 37 109 121 18 120 103 116 13 132 39 73 145 76 158 43 82 33 51 153 164 97 13 2 3 20 24 114 98 9 25 131 102 99 86 42 16 26 159 39 105 161 133 49 59 41 20 105 31 136 30 87 10 119 135 13 83 99 58 45 99 156 26 61 135 143 80 118 107 76 77 24 44 12 66 95 147 61 86 140 99 167 138 54 47 42 97 122 18 60 90 40 73 85 63 82 1 35 96 94 81 54 15 128 40 52 2 101 1 165 93 113 130 85 95 98 58 105 112 53 68 108 72 100 152 49 87 140 39 154 62 114 77 105 63 50 87 157 26 78 122 67 140 71 170 119 5 93 64 50 104 144 129 138 75 130 4 178 60 139 120 54 113 32 2 133 17 43 163 129 89 72 149 155 30 38 7 138 5 44 61 69 76 175 107 6 93 81 114 28 25 82 22 118 58 73 96 175 177 92 36 11 98 171 38 28 42 146 125 178 88 136 139 103 67 10 151 151 70 153 115 94 32 51 34 177 173 132 49 119 54 96 45 78 73 64 159 120 22 20 154 111 117 58 56 109 72 143 ^'}},
+ {OUT=>'77DD2A4482705BC2E9DC96EC0A13395771AC850C'}],
+ ['161', {IN=> {f=> '372 1 136 146 144 170 90 15 169 180 88 41 89 10 60 52 92 145 21 155 47 42 61 26 18 176 48 21 124 141 40 179 178 114 143 14 164 71 142 132 11 124 23 39 82 114 84 57 163 130 127 89 133 16 138 151 130 160 34 70 78 161 64 92 112 110 72 175 102 138 179 173 159 59 19 27 18 53 92 22 65 156 170 57 104 86 126 148 118 155 78 43 63 90 48 80 168 142 68 12 39 174 69 168 147 118 96 34 129 35 75 5 107 60 170 180 147 85 3 133 75 95 152 71 175 43 94 178 50 144 16 46 101 46 165 45 68 163 38 172 5 138 61 85 62 177 76 36 167 19 53 151 66 66 97 3 100 164 12 98 131 70 109 162 161 156 142 14 105 27 141 9 178 81 50 113 110 131 37 16 79 12 34 37 167 173 10 152 7 81 140 158 26 136 82 50 172 154 45 160 31 122 167 142 9 150 125 51 54 125 174 10 124 51 177 81 173 69 109 8 22 155 19 86 62 149 33 37 108 34 96 29 174 133 167 50 54 66 130 9 1 36 134 108 65 97 126 56 163 71 83 88 10 1 8 178 22 6 112 169 116 89 43 153 40 146 85 31 89 74 154 137 28 115 117 122 108 98 8 27 110 103 176 17 20 27 77 10 93 145 80 17 143 165 76 69 78 102 20 91 171 95 29 115 176 166 109 39 23 70 83 29 148 67 163 161 33 4 15 46 42 2 69 104 53 33 160 64 33 155 14 131 160 59 78 71 19 176 107 65 38 82 55 40 56 40 115 84 29 25 44 68 104 176 76 64 123 18 25 136 23 6 171 31 30 30 58 14 13 72 57 14 41 177 ^'}},
+ {OUT=>'EAA1465DB1F59DE3F25EB8629602B568E693BB57'}],
+ ['162', {IN=> {f=> '363 0 135 69 16 167 79 143 46 178 26 3 65 58 36 135 97 35 175 51 152 57 137 173 108 10 54 78 4 153 173 164 48 177 22 129 68 168 167 74 174 91 106 174 96 75 129 168 34 36 158 147 88 75 101 149 103 64 42 59 52 112 180 20 30 22 173 80 98 46 106 179 65 30 17 127 125 26 87 15 5 136 85 100 66 141 182 124 15 156 148 15 56 98 146 156 48 149 3 14 96 52 79 115 134 170 54 178 54 22 73 30 45 39 133 182 96 103 148 176 6 45 62 183 51 180 153 145 145 117 21 90 118 109 21 62 22 101 49 53 11 142 86 132 66 69 44 79 87 115 55 5 169 150 63 110 109 177 150 91 129 40 149 159 102 165 3 70 27 175 23 56 126 165 164 20 158 91 157 136 157 131 111 69 39 33 132 43 19 175 179 37 118 9 155 116 122 128 52 7 84 89 58 13 85 44 135 125 54 183 23 161 145 173 136 29 62 50 13 57 25 127 153 45 95 64 121 40 121 140 171 9 71 166 68 28 102 4 53 123 111 148 20 102 160 34 8 139 32 116 66 13 113 63 143 97 63 10 59 124 66 41 132 71 115 106 151 46 22 45 118 37 67 124 94 60 140 43 47 10 110 9 127 97 7 156 43 180 125 126 137 145 12 2 82 146 100 117 26 59 180 181 164 76 89 30 101 77 72 126 114 95 143 102 32 149 131 83 157 31 61 123 139 60 135 74 169 122 151 102 137 168 62 55 166 119 97 163 60 112 24 116 38 178 105 91 134 86 27 47 138 72 70 183 79 15 84 117 154 128 57 53 39 161 88 ^'}},
+ {OUT=>'9329D5B40E0DC43AA25FED69A0FA9C211A948411'}],
+ ['163', {IN=> {f=> '393 1 92 72 151 33 183 164 42 112 32 10 5 93 97 18 112 71 92 168 116 179 186 65 137 68 134 3 82 9 19 121 148 65 160 173 158 167 90 66 180 172 99 86 83 86 26 16 10 135 23 81 137 125 17 19 25 183 73 7 104 185 79 165 119 119 176 59 75 18 5 59 132 26 21 127 119 80 94 83 52 61 24 44 4 50 55 115 29 70 140 99 159 130 54 15 42 89 114 173 28 50 16 33 53 47 58 180 19 64 78 49 30 186 104 32 44 157 85 1 149 85 97 114 77 63 58 50 89 80 21 36 84 72 60 152 25 87 108 15 138 54 106 77 97 23 42 55 149 181 62 106 43 132 31 138 111 176 93 40 10 96 128 105 114 43 98 4 146 20 107 120 14 113 181 101 1 19 155 113 57 64 117 131 6 22 186 138 184 36 61 29 36 175 107 6 61 81 114 20 180 42 169 102 26 73 80 151 153 68 4 11 98 139 6 175 34 146 93 154 88 128 139 79 35 2 135 119 46 129 91 86 179 51 18 169 141 108 49 103 46 72 21 70 49 64 151 96 185 175 130 111 85 58 32 101 40 101 131 136 139 170 70 10 169 175 73 41 69 177 45 47 92 145 11 155 22 22 56 21 13 166 48 21 109 131 40 174 178 104 128 9 149 51 132 122 173 119 23 24 67 109 74 32 158 110 117 74 123 6 118 151 130 150 167 34 55 58 146 54 72 112 105 57 160 82 123 159 153 159 39 19 7 8 33 87 12 50 146 150 37 104 71 126 133 108 145 68 38 38 90 43 75 148 122 43 2 39 154 54 163 147 113 91 29 109 35 75 182 87 35 155 170 127 80 185 118 60 95 142 71 165 28 84 168 25 144 178 31 81 41 160 25 53 143 ^'}},
+ {OUT=>'E94C0B6AA62AA08C625FAF817DDF8F51EC645273'}],
+ ['164', {IN=> {f=> '381 1 14 172 163 130 45 69 46 145 36 36 151 169 13 135 42 26 81 153 76 148 178 90 131 30 101 162 161 132 142 14 89 3 141 175 146 65 26 89 94 99 187 8 55 162 2 13 143 173 2 120 173 41 132 150 2 112 42 18 140 130 37 128 23 106 159 118 167 150 101 11 30 109 150 184 124 19 169 73 165 53 109 158 172 147 11 46 38 149 25 21 92 184 64 179 158 133 135 34 38 58 114 9 183 4 118 76 49 89 102 40 163 47 75 80 176 175 8 154 14 180 104 153 84 89 11 129 8 138 85 181 73 66 154 121 20 115 93 114 108 82 182 19 86 103 176 183 186 177 53 10 69 137 56 1 135 141 68 69 54 86 12 75 171 87 187 107 144 150 93 23 7 70 83 29 140 67 139 153 183 178 189 30 18 2 29 72 29 33 160 56 9 123 164 107 136 19 70 31 177 152 99 57 38 66 55 32 32 24 83 60 21 1 36 52 80 168 44 32 115 184 25 120 181 172 155 189 22 30 26 180 5 64 49 188 1 28 111 57 176 167 67 131 22 160 186 169 65 34 30 117 91 17 163 39 134 57 137 155 90 170 42 78 170 141 167 158 42 177 22 129 68 168 143 74 150 85 82 174 78 63 111 156 28 12 158 141 76 57 77 125 79 40 12 59 52 88 156 20 24 182 149 56 92 46 106 167 59 189 121 119 14 81 15 165 136 79 100 42 117 182 118 175 138 124 3 50 74 134 156 36 143 181 180 96 22 61 97 134 164 24 166 30 10 61 6 33 9 115 176 84 97 142 152 15 50 165 45 168 135 133 127 93 15 66 94 91 9 32 16 95 37 29 171 118 68 108 66 63 20 55 186 ^'}},
+ {OUT=>'7FF02B909D82AD668E31E547E0FB66CB8E213771'}],
+ ['165', {IN=> {f=> '396 1 97 10 5 160 132 18 83 73 159 141 55 120 31 131 141 102 138 3 52 9 148 189 56 99 165 146 2 140 64 157 100 121 113 102 24 21 24 123 16 10 139 152 19 109 146 116 122 92 43 7 75 62 49 170 58 26 117 125 45 147 5 125 136 155 118 2 26 50 161 21 182 127 153 45 68 19 121 22 94 104 144 166 35 166 23 176 75 188 53 114 93 148 177 66 151 16 156 121 180 98 48 179 95 63 107 97 45 1 23 97 57 23 132 53 79 97 124 19 188 18 118 37 22 106 94 60 122 25 47 176 110 184 109 79 164 120 43 153 89 90 128 109 12 168 64 110 82 117 192 41 171 163 164 76 53 12 101 68 54 117 78 59 143 84 32 122 104 65 148 31 52 123 130 24 135 38 151 95 142 93 101 159 62 37 148 110 70 127 51 85 181 89 11 142 105 91 107 50 27 29 102 36 43 165 79 6 84 99 118 128 30 26 3 143 17 68 66 139 187 15 165 158 24 88 20 179 174 81 79 18 106 47 74 150 104 179 162 59 131 62 116 166 82 184 188 97 136 41 136 167 140 143 175 72 42 174 148 75 74 71 86 14 16 191 117 11 63 119 119 186 182 13 171 49 182 80 167 73 147 119 107 164 41 57 181 168 29 114 26 184 121 101 80 76 65 34 49 24 44 191 38 25 91 5 58 140 99 153 124 54 184 42 83 108 155 4 20 191 3 29 35 40 180 7 40 66 25 12 180 86 26 38 139 73 1 137 79 85 102 71 39 28 44 77 56 190 12 66 72 30 152 7 87 84 190 126 48 100 77 91 186 36 31 143 163 50 94 25 126 1 114 105 170 93 22 173 90 116 87 96 19 74 4 122 183 83 120 177 113 169 181 77 182 1 149 186 ^'}},
+ {OUT=>'5BB3570858FA1744123BAC2873B0BB9810F53FA1'}],
+ ['166', {IN=> {f=> '384 1 25 56 85 107 177 6 186 138 184 28 61 184 191 175 107 6 29 81 114 12 156 2 137 86 189 73 64 127 129 44 167 11 98 107 169 143 26 146 61 130 88 120 139 55 3 189 119 87 22 105 67 78 147 51 2 161 109 84 49 87 38 48 192 62 25 64 143 72 169 151 106 111 53 58 8 93 8 85 123 120 131 170 38 2 169 167 49 41 37 153 21 39 92 145 190 155 177 185 48 13 5 150 48 21 85 115 40 166 178 88 104 1 125 19 116 106 141 111 23 43 101 58 187 150 78 101 50 107 185 86 151 130 134 143 34 31 26 122 38 40 112 97 33 136 50 99 127 121 159 7 19 170 187 1 79 191 26 130 118 5 104 47 126 109 92 129 52 30 193 90 35 67 116 90 3 181 39 122 30 155 147 105 83 21 77 35 75 174 55 190 131 154 95 72 185 94 36 95 126 71 149 4 68 152 180 144 146 7 49 33 152 188 29 111 194 172 148 125 35 59 36 125 11 36 141 149 183 125 27 1 71 133 61 138 168 85 131 5 96 162 161 117 142 14 79 183 141 165 126 55 11 74 84 79 167 3 40 142 177 193 128 173 192 100 163 16 127 145 182 97 17 193 120 115 32 108 18 96 154 103 152 150 86 181 15 99 135 179 124 194 164 68 160 43 109 138 152 142 6 21 23 149 20 11 82 164 44 159 148 133 115 24 28 53 104 9 183 179 108 56 39 84 87 30 163 32 70 75 166 170 8 139 9 175 99 143 64 89 186 114 183 133 85 161 63 61 154 111 15 115 78 109 108 72 177 14 71 103 176 173 176 157 38 10 54 132 41 186 130 126 63 69 39 76 7 65 171 82 172 102 124 140 83 113 ^'}},
+ {OUT=>'905F43940B3591CE39D1145ACB1ECA80AB5E43CD'}],
+ ['167', {IN=> {f=> '396 1 189 70 83 29 132 67 115 145 151 170 181 14 192 2 187 40 5 33 160 48 183 91 132 83 112 177 62 189 153 128 91 49 38 50 55 24 8 8 51 36 13 175 28 36 56 160 12 107 168 25 104 157 156 139 165 14 30 192 164 195 56 41 180 159 28 79 41 144 167 51 115 188 136 154 145 65 2 22 93 83 191 147 23 110 57 137 131 66 138 26 78 146 125 159 150 34 177 22 129 68 168 111 74 118 77 50 174 54 47 87 140 20 178 158 133 60 33 45 93 47 8 170 59 52 56 124 20 16 150 117 24 84 46 106 151 51 158 173 113 111 196 73 15 133 136 71 100 10 85 182 110 143 114 92 185 42 42 118 156 20 135 173 156 96 180 37 73 134 156 182 150 196 192 45 172 17 167 91 168 68 89 134 120 190 173 34 141 37 152 111 117 103 61 7 34 62 67 191 190 8 87 21 195 139 86 44 76 66 55 186 23 31 87 183 5 155 122 191 68 53 149 136 35 115 26 121 131 102 123 3 42 197 133 179 56 84 165 136 190 130 49 157 80 101 103 97 197 11 19 118 1 5 119 137 9 104 193 141 116 122 72 38 7 70 47 44 155 43 16 107 125 40 127 193 105 131 145 108 185 6 50 141 1 167 127 153 45 53 192 121 12 79 84 129 151 15 166 196 156 60 188 53 109 83 148 162 46 146 6 136 111 160 88 38 169 85 63 87 97 35 194 3 82 52 13 132 43 59 92 109 4 178 3 118 37 195 96 94 60 112 15 47 166 110 179 99 69 149 100 43 138 69 70 123 89 12 158 54 90 72 117 182 31 166 153 164 76 33 2 101 63 44 112 58 39 143 74 32 107 89 55 143 31 47 123 125 4 135 18 141 80 137 88 81 154 187 ^'}},
+ {OUT=>'336C79FBD82F33E490C577E3F791C3CBFE842AFF'}],
+ ['168', {IN=> {f=> '406 0 23 134 103 49 99 44 64 160 68 190 114 105 91 86 22 27 15 74 8 22 151 79 199 84 85 90 128 9 5 175 129 17 40 59 125 187 194 144 151 3 60 6 158 153 67 58 18 99 19 53 129 90 179 134 52 124 55 95 138 82 170 167 69 122 13 108 160 119 115 161 51 14 167 120 47 60 57 86 16 184 96 197 42 98 112 165 154 199 157 21 168 52 146 66 126 119 93 150 20 36 153 140 194 93 26 156 114 80 80 55 44 13 35 24 44 191 24 190 63 177 44 140 99 146 117 54 163 42 76 101 134 176 185 177 168 1 21 19 180 193 12 52 197 191 173 65 19 31 118 59 1 123 72 71 88 64 11 193 37 63 28 169 184 45 72 195 152 186 87 56 176 112 41 93 77 84 158 29 3 136 142 36 80 4 119 166 86 98 163 93 1 145 83 102 66 75 191 46 4 94 155 55 120 149 113 148 181 49 175 180 142 87 5 51 65 92 167 196 186 138 184 23 61 164 171 175 107 6 9 81 114 7 141 177 117 76 174 73 54 112 114 29 152 11 98 87 154 123 21 146 41 115 88 115 139 40 183 189 109 67 7 90 52 73 127 51 192 156 89 69 49 77 33 33 182 57 10 64 138 57 159 136 91 111 33 58 193 88 188 75 118 110 126 170 18 197 169 162 34 41 17 138 6 34 92 145 185 155 157 170 43 8 140 48 21 70 105 40 161 178 78 89 196 110 199 106 96 121 106 23 185 28 96 48 167 145 58 91 35 97 180 66 151 130 124 128 34 16 6 107 28 20 112 92 18 121 30 84 107 101 159 187 19 155 182 181 74 186 11 120 98 185 104 32 126 94 82 119 42 25 173 90 30 62 96 70 178 176 39 102 15 150 147 100 78 16 57 35 75 169 35 170 116 144 75 146 ^'}},
+ {OUT=>'5C6D07A6B44F7A75A64F6CE592F3BAE91E022210'}],
+ ['169', {IN=> {f=> '409 1 185 70 12 95 110 71 133 183 52 136 148 144 114 186 17 25 144 164 5 79 178 172 124 117 19 43 20 93 174 36 125 117 151 109 3 164 55 101 37 122 152 77 131 168 88 162 161 93 142 14 63 167 141 149 94 39 190 50 68 47 135 198 16 110 153 177 104 173 192 68 147 179 119 137 166 73 180 169 88 91 24 76 10 80 146 79 128 150 62 149 194 83 111 171 124 170 156 60 152 27 109 106 120 134 201 184 202 149 12 198 66 132 12 127 132 133 83 8 12 45 88 9 183 155 92 24 23 76 63 14 163 8 62 67 150 162 8 115 1 167 91 127 32 89 162 90 159 125 85 129 47 53 154 95 7 115 54 101 108 56 169 6 47 103 176 157 160 125 14 10 30 124 17 178 122 102 55 69 15 60 202 49 171 74 148 94 92 124 67 200 184 70 83 29 127 67 100 140 131 165 176 4 182 2 167 20 193 33 160 43 173 71 112 68 97 157 57 169 138 113 86 44 38 40 55 19 196 201 31 21 8 165 23 26 41 155 195 183 102 158 25 94 142 146 129 150 9 30 177 154 195 51 36 175 139 28 59 31 124 167 41 105 173 121 134 130 65 185 17 78 78 181 137 13 95 57 137 116 51 118 16 78 131 115 154 145 29 177 22 129 68 168 91 74 98 72 30 174 39 37 72 130 15 163 158 128 50 18 25 73 27 191 150 59 52 36 104 20 11 130 97 4 79 46 106 141 46 138 163 108 106 191 68 15 113 136 66 100 193 65 182 105 123 99 72 180 37 22 108 156 10 130 168 141 96 160 22 58 134 151 162 140 181 187 35 157 7 147 76 163 58 84 129 100 190 153 24 126 32 142 96 107 88 41 2 14 42 52 186 170 3 82 11 180 119 66 29 56 66 50 171 3 11 77 163 5 150 112 128 ^'}},
+ {OUT=>'7E0D3E9D33127F4A30EB8D9C134A58409FA8695B'}],
+ ['170', {IN=> {f=> '413 1 47 25 135 129 7 108 19 107 117 102 102 3 28 190 112 165 56 63 165 122 183 116 28 157 52 73 89 90 169 202 12 111 185 203 91 116 200 97 193 134 116 122 44 31 7 63 26 37 134 22 2 93 125 33 99 186 77 124 131 94 171 183 50 113 178 146 127 153 45 32 164 121 203 58 56 108 130 192 166 168 128 39 188 53 102 69 148 141 18 139 197 108 97 132 74 24 155 71 63 59 97 21 194 180 61 45 204 132 29 31 85 88 188 164 187 118 37 167 82 94 60 98 1 47 152 110 172 85 55 128 72 43 117 41 42 116 61 12 144 40 62 58 117 168 17 159 139 164 76 5 193 101 56 30 105 30 11 143 60 32 86 68 41 136 31 40 123 118 181 135 195 127 59 130 81 53 147 62 13 124 98 34 79 39 49 145 53 180 94 105 91 71 2 27 5 54 193 7 141 79 199 84 75 70 128 199 195 160 119 17 20 54 115 187 184 129 146 193 40 201 143 138 57 43 18 94 204 38 114 80 179 114 47 119 50 80 118 82 160 152 49 112 198 88 155 104 95 151 36 199 162 100 27 50 47 86 195 16 179 81 192 27 83 107 150 134 194 147 1 158 32 131 61 111 119 83 140 5 21 133 120 174 78 26 136 109 65 80 40 29 203 25 24 44 191 14 170 43 162 34 140 99 141 112 54 148 42 71 96 119 161 165 167 148 186 11 4 180 188 197 42 182 181 168 50 14 26 103 49 1 113 67 61 78 59 196 173 32 53 8 154 169 30 72 175 152 176 87 36 166 102 36 88 77 79 138 24 188 131 127 26 70 194 114 146 66 93 158 93 191 125 78 92 51 60 176 26 4 74 135 35 120 129 113 133 181 29 170 170 137 77 190 46 45 77 157 191 186 138 184 18 61 144 151 175 107 6 194 81 114 2 126 110 ^'}},
+ {OUT=>'9A5F50DFCFB19286206C229019F0ABF25283028C'}],
+ ['171', {IN=> {f=> '427 1 85 60 150 73 38 88 90 5 128 11 98 55 130 91 13 146 9 91 88 107 139 16 159 189 93 35 191 66 28 65 95 51 184 148 57 45 49 61 25 9 166 49 194 64 130 33 143 112 67 111 1 58 177 80 164 59 110 94 118 170 194 197 169 154 10 41 193 114 190 26 92 145 177 155 125 146 35 200 124 48 21 46 89 40 153 178 62 65 196 86 175 90 80 89 98 23 169 4 88 32 135 137 26 75 11 81 172 34 151 130 108 104 34 200 182 83 12 196 112 84 202 97 206 60 75 69 159 163 19 131 174 157 66 178 195 104 66 161 104 8 126 70 66 103 26 17 141 90 22 54 64 38 146 168 39 70 199 142 147 92 70 8 25 35 75 161 3 138 92 128 43 59 185 55 205 95 100 71 123 173 42 126 128 144 94 176 205 20 139 149 198 59 168 172 109 112 9 33 10 73 154 36 115 97 131 99 196 144 45 81 22 112 142 72 131 148 83 162 161 78 142 14 53 157 141 139 74 29 180 35 58 27 115 198 1 90 138 167 89 173 192 48 137 159 114 132 156 58 160 154 68 76 19 56 5 70 141 64 113 150 47 129 184 73 96 166 124 155 151 55 147 17 109 86 100 129 201 164 192 149 7 193 56 112 200 107 122 133 63 206 2 40 78 9 183 140 82 4 13 71 48 4 163 201 57 62 140 157 8 100 204 162 86 117 12 89 147 75 144 120 85 109 37 48 154 85 2 115 39 96 108 46 164 1 32 103 176 147 150 105 207 10 15 119 2 173 117 87 50 69 50 202 39 171 69 133 89 72 114 57 195 179 70 83 29 122 67 85 135 111 160 171 202 172 2 147 183 33 160 38 163 51 92 53 82 137 52 149 123 98 81 39 38 30 55 14 186 196 11 6 3 155 18 16 26 150 180 168 97 148 25 84 127 136 119 135 4 30 162 144 195 46 31 170 119 28 190 ^'}},
+ {OUT=>'DCA737E269F9D8626D488988C996E06B352C0708'}],
+ ['172', {IN=> {f=> '443 1 17 96 167 27 91 152 100 106 109 65 164 10 57 71 167 123 209 74 57 137 95 30 90 2 78 110 101 147 138 22 177 22 129 68 168 63 74 70 65 2 174 18 23 51 116 8 142 158 121 36 207 207 45 209 170 122 59 52 8 76 20 4 102 69 186 72 46 106 127 39 110 149 101 99 184 61 15 85 136 59 100 172 37 182 98 95 78 44 173 30 204 94 156 206 123 161 120 96 132 1 37 134 144 134 126 160 180 21 136 203 119 55 156 44 77 122 72 190 125 10 105 25 128 75 93 67 13 205 196 14 31 179 142 206 75 207 159 91 38 8 28 66 43 150 185 193 63 135 5 143 98 143 32 5 125 124 197 103 14 97 107 102 87 3 18 185 97 155 56 48 165 112 178 106 13 157 32 53 79 85 149 197 7 106 175 203 71 101 195 92 193 129 116 122 24 26 7 58 11 32 119 7 202 83 125 28 79 181 57 119 121 84 161 168 50 93 163 131 127 153 45 17 144 121 198 43 36 93 115 177 166 148 108 24 188 53 97 59 148 126 208 134 192 88 87 112 64 14 145 61 63 39 97 11 194 165 46 40 199 132 19 11 80 73 178 154 177 118 37 147 72 94 60 88 201 47 142 110 167 75 45 113 52 43 102 21 22 111 41 12 134 30 42 48 117 158 7 154 129 164 76 195 188 101 51 20 100 10 201 143 50 32 71 53 31 131 31 35 123 113 166 135 180 117 44 125 76 33 142 62 3 114 93 19 59 34 34 130 38 170 74 105 91 56 192 27 205 34 178 202 131 79 199 84 65 50 128 189 185 145 109 17 49 105 187 174 114 141 183 20 196 128 123 47 28 18 89 189 23 99 70 179 94 42 114 45 65 98 82 150 137 29 102 183 68 150 89 75 141 21 184 157 80 7 40 37 86 190 16 174 66 187 12 68 102 135 114 189 137 191 148 12 116 56 96 119 73 130 200 6 113 100 154 63 26 116 104 50 80 25 14 193 83 ^'}},
+ {OUT=>'B8FFC1D4972FCE63241E0E77850AC46DDE75DBFA'}],
+ ['173', {IN=> {f=> '436 1 24 44 191 211 138 11 138 18 140 99 133 104 54 124 42 63 88 95 137 133 151 116 162 208 193 180 180 173 26 158 165 160 26 6 18 79 33 1 97 59 45 62 51 172 141 24 37 189 130 145 6 72 143 152 160 87 4 150 86 28 80 77 71 106 16 164 123 103 10 54 178 106 114 34 85 150 93 175 93 70 76 27 36 152 207 4 42 103 3 120 97 113 109 181 210 162 154 129 61 166 38 13 53 141 183 186 138 184 10 61 112 119 175 107 6 170 81 114 207 102 125 65 50 135 73 28 73 75 203 113 11 98 35 115 71 8 146 202 76 88 102 139 1 144 189 83 15 181 51 13 60 75 51 179 143 37 30 49 51 20 207 156 44 184 64 125 18 133 97 52 111 194 58 167 75 149 49 105 84 113 170 179 197 169 149 208 41 178 99 180 21 92 145 172 155 105 131 30 208 200 114 48 21 31 79 40 148 178 52 50 196 71 160 80 70 69 93 23 159 202 83 22 115 132 6 65 209 71 167 14 151 130 98 89 34 190 167 68 2 181 112 79 192 82 191 45 55 49 159 148 19 116 169 142 61 173 185 94 46 146 104 206 126 55 56 93 16 12 121 90 17 49 44 18 126 163 39 50 189 137 147 87 65 3 5 35 75 156 196 118 77 118 23 54 185 40 195 95 90 71 113 163 32 116 108 144 74 166 190 15 134 134 188 39 158 172 94 107 212 23 53 134 36 105 77 111 89 186 124 35 61 7 102 132 67 131 128 78 162 161 63 142 14 43 147 141 129 54 19 170 20 48 7 95 198 199 70 123 157 74 173 192 28 127 139 109 127 146 43 140 139 48 61 14 36 60 136 49 98 150 32 109 174 63 81 161 124 140 146 50 142 7 109 66 80 124 201 144 182 149 2 188 46 92 185 87 112 133 43 201 205 35 68 9 183 125 72 197 3 66 33 207 163 191 52 57 130 152 8 85 204 157 81 107 205 187 ^'}},
+ {OUT=>'E9C9BF41C8549354151B977003CE1D830BE667DB'}],
+ ['174', {IN=> {f=> '462 1 126 54 123 113 85 81 23 41 154 71 210 115 18 89 108 32 157 209 11 103 176 133 136 77 193 10 209 112 196 166 110 66 43 69 194 36 202 25 171 62 112 82 44 100 43 188 172 70 83 29 115 67 64 128 83 153 164 195 158 2 119 187 169 33 160 31 149 23 64 32 61 109 45 121 102 77 74 32 38 16 55 7 172 189 198 200 211 141 11 2 5 143 159 147 90 134 25 70 106 122 105 114 212 30 141 130 195 39 24 163 91 28 11 7 76 167 17 81 137 85 86 94 65 149 5 42 66 157 113 204 59 57 137 80 15 70 207 78 95 91 142 133 17 177 22 129 68 168 43 74 50 60 197 174 3 13 36 106 3 127 158 116 26 197 192 25 194 155 102 59 52 203 56 20 214 82 49 171 67 46 106 117 34 90 139 96 94 179 56 15 65 136 54 100 157 17 182 93 75 63 24 168 25 189 84 156 201 118 156 105 96 112 201 22 134 139 114 116 145 175 11 121 198 99 40 151 34 72 117 52 190 105 90 20 118 60 83 52 208 205 181 209 16 174 122 206 70 202 144 71 18 208 8 66 38 135 170 178 53 115 5 138 88 123 17 200 115 119 182 98 9 87 97 102 72 3 8 180 82 145 56 33 165 102 173 96 213 157 12 33 69 80 129 192 2 101 165 203 51 86 190 87 193 124 116 122 4 21 7 53 211 27 104 207 197 73 125 23 59 176 37 114 111 74 151 153 50 73 148 116 127 153 45 2 124 121 193 28 16 78 100 162 166 128 88 9 188 53 92 49 148 111 193 129 187 68 77 92 54 4 135 51 63 19 97 1 194 150 31 35 194 132 9 206 75 58 168 144 167 118 37 127 62 94 60 78 196 47 132 110 162 65 35 98 32 43 87 1 2 106 21 12 124 20 22 38 117 148 212 149 119 164 76 180 183 101 46 10 95 205 186 143 40 32 56 38 21 126 31 30 123 108 151 135 165 107 29 120 71 13 137 62 208 104 88 4 39 29 19 115 23 160 54 105 91 41 177 27 200 14 163 124 ^'}},
+ {OUT=>'0942908960B54F96CB43452E583F4F9CB66E398A'}],
+ ['175', {IN=> {f=> '453 0 115 79 199 84 49 18 128 173 169 121 93 17 186 41 89 187 158 90 133 167 206 188 104 99 31 4 18 81 165 217 75 54 179 62 34 106 37 41 66 82 134 113 215 86 159 36 142 65 43 125 215 160 149 48 193 24 21 86 182 16 166 42 179 206 44 94 111 82 181 121 167 132 198 92 48 72 119 57 114 184 200 81 68 122 39 26 84 96 26 80 1 208 177 217 24 44 191 206 118 209 123 8 140 99 128 99 54 109 42 58 83 80 122 113 141 96 147 203 183 180 175 158 16 143 155 155 11 1 13 64 23 1 87 54 35 52 46 157 121 19 27 174 115 130 209 72 123 152 150 87 202 140 76 23 75 77 66 86 11 149 118 88 44 168 101 94 14 80 145 93 165 73 65 66 12 21 137 192 4 22 83 201 120 77 113 94 181 195 157 144 124 51 151 33 211 38 131 178 186 138 184 5 61 92 99 175 107 6 155 81 114 207 87 105 45 40 120 73 18 58 60 193 98 11 98 15 100 51 3 146 187 61 88 97 139 204 129 189 73 213 171 36 216 55 55 51 174 138 17 15 49 41 15 197 146 39 174 64 120 3 123 82 37 111 179 58 157 70 134 39 100 74 108 170 164 197 169 144 198 41 163 84 170 16 92 145 167 155 85 116 25 208 200 104 48 21 16 69 40 143 178 42 35 196 56 145 70 60 49 88 23 149 192 78 12 95 127 204 55 199 61 162 212 151 130 88 74 34 180 152 53 210 166 112 74 182 67 176 30 35 29 159 133 19 101 164 127 56 168 175 84 26 131 104 196 126 40 46 83 6 7 101 90 12 44 24 216 106 158 39 30 179 132 147 82 60 216 203 35 75 151 181 98 62 108 3 49 185 25 185 95 80 71 103 153 22 106 88 144 54 156 175 10 129 119 178 19 148 172 79 102 207 13 208 33 114 36 95 57 91 79 176 104 25 41 210 92 122 62 131 108 73 162 161 48 142 14 33 137 141 119 34 9 160 5 38 205 75 198 189 50 108 112 ^'}},
+ {OUT=>'FCE34051C34D4B81B85DDC4B543CDE8007E284B3'}],
+ ['176', {IN=> {f=> '454 1 53 173 192 113 111 102 120 132 22 112 118 20 40 7 8 213 46 129 28 77 150 11 81 160 49 60 154 124 119 139 43 135 213 109 38 52 117 201 116 168 149 215 181 32 64 164 59 98 133 15 194 198 28 54 9 183 104 58 176 209 59 12 200 163 177 45 50 116 145 8 64 204 150 74 93 184 89 111 39 108 108 85 61 13 36 154 61 210 115 3 84 108 22 152 209 216 103 176 123 126 57 183 10 199 107 186 161 105 51 38 69 184 26 202 15 171 57 97 77 24 90 33 183 167 70 83 29 110 67 49 123 63 148 159 190 148 2 99 172 159 33 160 26 139 3 44 17 46 89 40 101 87 62 69 27 38 6 55 2 162 184 183 190 211 131 6 212 210 138 144 132 85 124 25 60 91 112 95 99 212 30 126 120 195 34 19 158 71 28 211 217 56 167 7 71 122 70 66 79 65 134 27 61 147 103 199 44 57 137 65 50 202 78 80 81 137 128 12 177 22 129 68 168 23 74 30 55 182 174 208 3 21 96 218 112 158 111 16 187 177 5 179 140 82 59 52 188 36 20 214 62 29 156 62 46 106 107 29 70 129 91 89 174 51 15 45 136 49 100 142 217 182 88 55 48 4 163 20 174 74 156 196 113 151 90 96 92 191 7 134 134 94 106 130 170 1 106 193 79 25 146 24 67 112 32 190 85 210 75 15 108 45 73 37 193 205 166 194 1 169 102 206 65 197 129 51 218 198 208 66 33 120 155 163 43 95 5 133 78 103 2 185 105 114 167 93 4 77 87 102 57 3 218 175 67 135 56 18 165 92 168 86 203 157 212 13 59 75 109 187 217 96 155 203 31 71 185 82 193 119 116 122 204 16 7 48 201 22 89 197 192 63 125 18 39 171 17 109 101 64 141 138 50 53 133 101 127 153 45 207 104 121 188 13 216 63 85 147 166 108 68 214 188 53 87 39 148 96 178 124 182 48 67 72 44 214 125 41 63 219 97 211 194 135 16 30 189 132 219 191 70 43 158 181 ^'}},
+ {OUT=>'61E8916532503627F4024D13884640A46F1D61D4'}],
+ ['177', {IN=> {f=> '475 0 153 118 37 99 48 94 60 64 189 47 118 110 155 51 21 77 4 43 66 195 196 99 215 12 110 6 216 24 117 134 205 142 105 164 76 159 176 101 39 218 88 184 165 143 26 32 35 17 7 119 31 23 123 101 130 135 144 93 8 113 64 207 130 62 201 90 81 205 11 22 220 94 2 146 26 105 91 20 156 27 193 208 142 178 107 79 199 84 41 2 128 165 161 109 85 17 174 37 81 187 150 78 129 159 194 184 92 87 23 214 18 77 153 209 63 46 179 46 30 102 33 29 50 82 126 101 203 78 147 20 138 53 27 117 207 148 145 32 181 16 13 86 178 16 162 30 175 198 32 90 99 66 177 113 155 124 186 80 44 60 119 49 106 176 192 65 52 106 27 26 68 92 14 80 211 200 169 213 24 44 191 202 102 197 111 140 99 124 95 54 97 42 54 79 68 110 97 133 80 135 199 175 180 171 146 8 131 147 151 221 219 9 52 15 1 79 50 27 44 42 145 105 15 19 162 103 118 201 72 107 152 142 87 190 132 68 19 71 77 62 70 7 137 114 76 214 36 160 97 78 220 76 141 93 157 57 61 58 9 125 180 4 6 67 189 120 61 113 82 181 183 153 136 120 43 139 29 199 26 123 174 186 138 184 1 61 76 83 175 107 6 143 81 114 207 75 89 29 32 108 73 10 46 48 185 86 11 98 221 88 35 221 146 175 49 88 93 139 196 117 189 65 201 163 24 208 51 39 51 170 134 1 3 49 33 11 189 138 35 166 64 116 213 115 70 25 111 167 58 149 66 122 31 96 66 104 170 152 197 169 140 190 41 151 72 162 12 92 145 163 155 69 104 21 208 200 96 48 21 4 61 40 139 178 34 23 196 44 133 62 52 33 84 23 141 184 74 4 79 123 192 47 191 53 158 200 151 130 80 62 34 172 140 41 206 154 112 70 174 55 164 18 19 13 159 121 19 89 160 115 52 164 167 76 10 119 104 188 126 28 38 75 220 3 85 90 8 40 8 204 90 154 39 14 171 128 147 78 56 216 191 35 75 147 169 82 50 100 209 45 185 13 177 95 150 ^'}},
+ {OUT=>'F008D5D7853B6A17B7466CD9E18BD135E520FAF4'}],
+ ['178', {IN=> {f=> '471 0 71 89 139 8 92 60 144 26 142 154 3 122 98 164 216 134 172 58 95 200 224 201 5 86 36 81 29 63 65 162 76 11 13 196 78 108 55 131 80 66 162 161 27 142 14 19 123 141 105 6 220 146 209 24 184 47 198 175 22 87 133 38 173 192 205 103 91 97 115 122 7 92 103 25 2 213 213 36 124 13 62 150 221 61 150 39 45 149 124 104 134 38 130 208 109 18 32 112 201 96 158 149 215 176 22 44 149 39 88 133 220 189 193 23 44 9 183 89 48 161 204 54 222 195 163 167 40 45 106 140 8 49 204 145 69 83 169 89 96 24 93 103 85 41 3 31 154 51 210 115 213 79 108 12 147 209 206 103 176 113 116 37 173 10 189 102 176 156 100 36 33 69 174 16 202 5 171 52 82 72 4 80 23 178 162 70 83 29 105 67 34 118 43 143 154 185 138 2 79 157 149 33 160 21 129 208 24 2 31 69 35 81 72 47 64 22 38 221 55 222 152 179 168 180 211 121 1 207 200 133 129 117 80 114 25 50 76 102 85 84 212 30 111 110 195 29 14 153 51 28 196 212 36 167 222 61 107 55 46 64 65 119 220 12 56 137 93 194 29 57 137 50 210 30 197 78 65 71 132 123 7 177 22 129 68 168 3 74 10 50 167 174 198 218 6 86 218 97 158 106 6 177 162 210 164 125 62 59 52 173 16 20 214 42 9 141 57 46 106 97 24 50 119 86 84 169 46 15 25 136 44 100 127 202 182 83 35 33 209 158 15 159 64 156 191 108 146 75 96 72 181 217 134 129 74 96 115 165 216 91 188 59 10 141 14 62 107 12 190 65 205 60 10 98 30 63 22 178 205 151 179 211 164 82 206 60 192 114 31 203 188 193 66 28 105 140 148 33 75 5 128 68 83 212 170 95 109 152 88 224 67 77 102 42 3 213 170 52 125 56 3 165 82 163 76 193 157 197 218 49 70 89 182 217 91 145 203 11 56 180 77 193 114 116 122 189 11 7 43 191 17 74 187 187 53 125 13 19 166 222 104 91 54 131 123 50 33 118 86 127 167 ^'}},
+ {OUT=>'BD8D2E873CF659B5C77AAC1616827EF8A3B1A3B3'}],
+ ['179', {IN=> {f=> '480 1 45 193 76 121 181 219 195 42 64 126 166 80 40 200 188 53 80 25 148 75 157 117 175 20 53 44 30 207 111 27 63 198 97 204 194 114 222 23 182 132 212 170 63 22 144 120 143 118 37 79 38 94 60 54 184 47 108 110 150 41 11 62 211 43 51 180 181 94 200 12 100 223 201 14 117 124 200 137 95 164 76 144 171 101 34 213 83 169 150 143 16 32 20 2 224 114 31 18 123 96 115 135 129 83 220 108 59 192 125 62 196 80 76 195 218 17 210 79 214 136 6 105 91 5 141 27 188 193 127 168 97 79 199 84 31 209 128 155 151 94 75 17 159 32 71 187 140 63 124 149 179 179 77 72 13 204 18 72 138 199 48 36 179 26 25 97 28 14 30 82 116 86 188 68 132 133 38 7 107 197 133 140 12 166 6 3 86 173 16 157 15 170 188 17 85 84 46 172 103 140 114 171 65 39 45 119 39 96 166 182 45 32 86 12 26 48 87 226 80 201 190 159 208 24 44 191 197 82 182 96 217 140 99 119 90 54 82 42 49 74 53 95 77 123 60 120 194 165 180 166 131 225 116 137 146 211 219 4 37 5 1 69 45 17 34 37 130 85 10 9 147 88 103 191 72 87 152 132 87 175 122 58 14 66 77 57 50 2 122 109 61 209 26 150 92 58 205 71 136 93 147 37 56 48 212 221 110 165 4 213 47 174 120 41 113 67 181 168 148 126 115 33 124 24 184 11 113 169 186 138 184 223 61 56 63 175 107 6 128 81 114 207 60 69 9 22 93 73 31 33 175 71 11 98 206 73 15 221 146 160 34 88 88 139 186 102 189 55 186 153 9 198 46 19 51 165 129 208 215 49 23 6 179 128 30 156 64 111 203 105 55 10 111 152 58 139 61 107 21 91 56 99 170 137 197 169 135 180 41 136 57 152 7 92 145 158 155 49 89 16 208 200 86 48 21 216 51 40 134 178 24 8 196 29 118 52 42 13 79 23 131 174 69 221 59 118 177 37 181 43 153 185 151 130 70 47 34 162 125 26 201 139 112 65 164 40 149 3 226 220 159 106 19 74 155 100 47 159 157 193 ^'}},
+ {OUT=>'B25A04DD425302ED211A1C2412D2410FA10C63B6'}],
+ ['180', {IN=> {f=> '471 0 211 98 104 174 126 7 24 61 213 225 57 90 1 33 209 183 62 147 39 215 157 121 147 71 49 216 170 35 75 140 148 54 29 86 188 38 185 221 163 95 58 71 81 131 84 44 144 10 134 142 228 118 86 156 204 126 172 46 91 196 220 197 218 70 36 73 13 47 57 154 60 3 226 188 70 100 51 131 64 62 162 161 15 142 14 11 115 141 97 219 216 138 201 16 172 31 198 167 6 75 125 26 173 192 193 95 75 93 111 114 224 76 91 213 13 227 201 213 28 120 1 50 150 213 45 142 31 33 145 124 92 130 34 126 204 109 2 16 108 201 80 150 149 215 172 14 28 137 23 80 133 208 185 189 19 36 9 183 77 40 149 200 50 214 191 163 159 36 41 98 136 8 37 204 141 65 75 157 89 84 12 81 99 85 25 224 27 154 43 210 115 205 75 108 4 143 209 198 103 176 105 108 21 165 10 181 98 168 152 96 24 29 69 166 8 202 226 171 48 70 68 217 72 15 174 158 70 83 29 101 67 22 114 27 139 150 181 130 2 63 145 141 33 160 17 121 196 8 219 19 53 31 65 60 35 60 18 38 217 55 222 144 175 156 172 211 113 226 203 192 129 117 105 76 106 25 42 64 94 77 72 212 30 99 102 195 25 10 149 35 28 184 208 20 167 218 53 95 43 30 52 65 107 220 52 129 85 190 17 57 137 38 202 14 193 78 53 63 128 119 3 177 22 129 68 168 216 74 223 46 155 174 190 214 223 78 218 85 158 102 227 169 150 198 152 113 46 59 52 161 20 214 26 222 129 53 46 106 89 20 34 111 82 80 165 42 15 9 136 40 100 115 190 182 79 19 21 197 154 11 147 56 156 187 104 142 63 96 56 173 209 134 125 58 88 103 161 212 79 184 43 227 137 6 58 103 225 190 49 201 48 6 90 18 55 10 166 205 139 167 203 160 66 206 56 188 102 15 191 180 181 66 24 93 128 136 25 59 5 124 60 67 204 158 87 105 140 84 224 59 69 102 30 3 209 166 40 117 56 220 165 74 159 68 185 157 185 206 41 66 167 ^'}},
+ {OUT=>'A404E21588123E0893718B4B44E91414A785B91F'}],
+ ['181', {IN=> {f=> '490 1 176 217 85 133 203 218 38 174 71 193 108 116 122 171 5 7 37 179 11 56 175 181 41 125 7 226 160 204 98 79 42 119 105 50 9 100 68 127 153 45 185 60 121 177 211 183 30 52 114 166 64 24 192 188 53 76 17 148 63 145 113 171 4 45 28 22 203 103 19 63 186 97 200 194 102 214 19 178 132 208 158 59 10 136 112 135 118 37 63 30 94 60 46 180 47 100 110 146 33 3 50 199 43 39 168 169 90 188 12 92 219 189 6 117 116 196 133 87 164 76 132 167 101 30 209 79 157 138 143 8 32 8 221 220 110 31 14 123 92 103 135 117 75 212 104 55 180 121 62 192 72 72 187 206 13 202 67 206 128 221 105 91 224 129 27 184 181 115 160 89 79 199 84 23 197 128 147 143 82 67 17 147 28 63 187 132 51 120 141 167 175 65 60 5 196 18 68 126 191 36 28 179 10 21 93 24 2 14 82 108 74 176 60 120 215 129 26 222 99 189 121 136 227 154 229 226 86 169 16 153 3 166 180 5 81 72 30 168 95 128 106 159 53 35 33 119 31 88 158 174 29 16 70 26 32 83 218 80 193 182 151 204 24 44 191 193 66 170 84 213 140 99 115 86 54 70 42 45 70 41 83 61 115 44 108 190 157 180 162 119 221 104 129 142 203 219 25 228 1 61 41 9 26 33 118 69 6 1 135 76 91 183 72 71 152 124 87 163 114 50 10 62 77 53 34 229 110 105 49 205 18 142 88 42 193 67 132 93 139 21 52 40 204 213 98 153 4 201 31 162 120 25 113 55 181 156 144 118 111 25 112 20 172 230 105 165 186 138 184 223 61 40 47 175 107 6 116 81 114 207 48 53 224 14 81 73 223 19 21 167 59 11 98 194 61 230 221 146 148 22 88 84 139 178 90 189 47 174 145 228 190 42 3 51 161 125 196 207 49 15 2 171 120 26 148 64 107 195 97 43 229 111 140 58 131 57 95 13 87 48 95 170 125 197 169 131 172 41 124 45 144 3 92 145 154 155 33 77 12 208 200 78 48 21 208 43 40 130 178 16 227 196 17 106 44 34 228 75 23 123 166 65 217 43 114 165 29 173 35 200 ^'}},
+ {OUT=>'A1E13BC55BF6DAD83CF3AABDA3287AD68681EA64'}],
+ ['182', {IN=> {f=> '479 0 167 151 130 58 29 34 150 107 8 195 121 112 59 152 22 131 218 208 202 159 88 19 56 149 82 41 153 145 54 199 86 104 166 126 228 16 53 209 225 41 90 230 29 197 171 46 143 39 203 149 117 147 67 45 216 158 35 75 136 136 38 17 78 176 34 185 213 155 95 50 71 73 123 225 76 28 144 227 126 130 228 114 74 148 192 118 172 34 87 192 216 193 206 54 36 65 230 31 49 146 44 228 214 180 62 92 47 131 48 58 162 161 3 142 14 3 107 141 89 207 212 130 193 8 160 15 198 159 223 63 117 14 173 192 181 87 59 89 107 106 216 60 79 201 1 227 189 213 20 116 222 38 150 205 29 134 23 21 141 124 80 126 30 122 200 109 219 104 201 64 142 149 215 168 6 12 125 7 72 133 196 181 185 15 28 9 183 65 32 137 196 46 206 187 163 151 32 37 90 132 8 25 204 137 61 67 145 89 72 69 95 85 9 220 23 154 35 210 115 197 71 108 229 139 209 190 103 176 97 100 5 157 10 173 94 160 148 92 12 25 69 158 202 222 171 44 58 64 205 64 7 170 154 70 83 29 97 67 10 110 11 135 146 177 122 2 47 133 133 33 160 13 113 184 225 211 7 37 27 49 48 23 56 14 38 213 55 222 136 171 144 164 211 105 226 199 184 125 105 93 72 98 25 34 52 86 69 60 212 30 87 94 195 21 6 145 19 28 172 204 4 167 214 45 83 31 14 40 65 95 220 221 48 121 77 186 5 57 137 26 194 231 189 78 41 55 124 115 232 177 22 129 68 168 204 74 211 42 143 174 182 210 215 70 218 73 158 98 223 161 138 186 140 101 30 59 52 149 217 20 214 10 210 117 49 46 106 81 16 18 103 78 76 161 38 15 226 136 36 100 103 178 182 75 3 9 185 150 7 135 48 156 183 100 138 51 96 40 165 201 134 121 42 80 91 157 208 67 180 27 219 133 231 54 99 213 190 33 197 36 2 82 6 47 231 154 205 127 155 195 156 50 206 52 184 90 232 179 172 169 66 20 81 116 124 17 43 5 120 52 51 196 146 79 101 128 80 224 65 ^'}},
+ {OUT=>'D5FD35FFABED6733C92365929DF0FB4CAE864D15'}],
+ ['183', {IN=> {f=> '503 1 55 102 9 3 202 159 19 103 56 206 165 60 152 54 171 157 164 185 27 59 45 171 217 80 123 203 203 23 169 66 193 103 116 122 156 7 32 169 6 41 165 176 31 125 2 211 155 189 93 69 32 109 90 50 225 85 53 127 153 45 175 40 121 172 201 168 15 37 99 166 44 4 182 188 53 71 7 148 48 130 108 166 220 35 8 12 198 93 9 63 171 97 195 194 87 204 14 173 132 203 143 54 231 126 102 125 118 37 43 20 94 60 36 175 47 90 110 141 23 229 35 184 43 24 153 154 85 173 12 82 214 174 232 117 106 191 128 77 164 76 117 162 101 25 204 74 142 123 143 234 32 229 211 215 105 31 9 123 87 88 135 102 65 202 99 50 165 116 62 187 62 67 177 191 8 192 52 196 118 206 105 91 214 114 27 179 166 100 150 79 79 199 84 13 182 128 137 133 67 57 17 132 23 53 187 122 36 115 131 152 170 50 45 231 186 18 63 111 181 21 18 179 226 16 88 19 223 230 82 98 59 161 50 105 200 124 11 207 89 179 106 131 212 139 224 221 86 164 16 148 224 161 170 226 76 57 10 163 85 113 96 144 38 30 18 119 21 78 148 164 9 232 50 221 26 12 78 208 80 183 172 141 199 24 44 191 188 46 155 69 208 140 99 110 81 54 55 42 40 65 26 68 41 105 24 93 185 147 180 157 104 216 89 119 137 193 219 231 10 223 1 51 36 235 16 28 103 49 1 227 120 61 76 173 72 51 152 114 87 148 104 40 5 57 77 48 14 229 95 100 34 200 8 132 83 22 178 62 127 93 129 1 47 30 194 203 83 138 4 186 11 147 120 5 113 40 181 141 139 108 106 15 97 15 157 220 95 160 186 138 184 223 61 20 27 175 107 6 101 81 114 207 33 33 209 4 66 73 218 4 6 157 44 11 98 179 46 215 221 146 133 7 88 79 139 168 75 189 37 159 135 218 180 37 219 51 156 120 181 197 49 5 233 161 110 21 138 64 102 185 87 28 219 111 125 58 121 52 80 3 82 38 90 170 110 197 169 126 162 41 109 30 134 234 92 145 149 155 13 62 7 208 200 68 48 21 198 33 40 125 178 6 217 196 2 91 34 24 213 70 23 113 161 ^'}},
+ {OUT=>'C12E9C280EE9C079E0506FF89F9B20536E0A83EF'}],
+ ['184', {IN=> {f=> '470 0 58 210 15 107 144 15 159 21 142 152 151 130 48 14 34 140 92 231 190 106 112 54 142 7 116 208 193 187 159 73 19 41 144 67 36 148 135 44 184 71 104 156 126 218 6 43 204 225 21 90 230 24 182 156 26 138 39 188 139 112 147 62 40 216 143 35 75 131 121 18 2 68 161 29 185 203 145 95 40 71 63 113 220 66 8 144 212 116 115 228 109 59 138 177 108 172 19 82 187 211 188 191 34 36 55 215 11 39 136 24 223 199 170 52 82 42 131 28 53 162 161 226 142 14 231 97 141 79 192 207 120 183 236 145 233 198 149 208 48 107 237 173 192 166 77 39 84 102 96 206 40 64 186 224 227 174 213 10 111 212 23 150 195 9 124 13 6 136 124 65 121 25 117 195 109 204 218 99 201 44 132 149 215 163 234 230 110 225 62 133 181 176 180 10 18 9 183 50 22 122 191 41 196 182 163 141 27 32 80 127 8 10 204 132 56 57 130 89 57 223 54 90 85 227 215 18 154 25 210 115 187 66 108 224 134 209 180 103 176 87 90 223 147 10 163 89 150 143 87 235 20 69 148 228 202 217 171 39 43 59 190 54 235 165 149 70 83 29 92 67 233 105 229 130 141 172 112 2 27 118 123 33 160 8 103 169 210 201 230 17 22 29 33 8 51 9 38 208 55 222 126 166 129 154 211 95 226 194 174 120 90 78 67 88 25 24 37 76 59 45 212 30 72 84 195 16 1 140 237 28 157 199 222 167 209 35 68 16 232 25 65 80 220 211 43 111 67 181 228 57 137 11 184 216 184 78 26 45 119 110 232 177 22 129 68 168 189 74 196 37 128 174 172 205 205 60 218 58 158 93 218 151 123 171 125 86 10 59 52 134 202 20 214 228 195 102 44 46 106 71 11 236 93 73 71 156 33 15 211 136 31 100 88 163 182 70 221 232 170 145 2 120 38 156 178 95 133 36 96 20 155 191 134 116 22 70 76 152 203 52 175 7 209 128 226 49 94 198 190 13 192 21 235 72 229 37 221 139 205 112 140 185 151 30 206 47 179 75 217 101 ^'}},
+ {OUT=>'E22769DC00748A9BBD6C05BBC8E81F2CD1DC4E2D'}],
+ ['185', {IN=> {f=> '502 0 158 148 66 13 60 95 103 3 15 5 113 38 23 182 125 65 94 107 73 224 37 47 102 237 3 198 155 7 95 56 198 165 52 148 46 163 157 152 173 19 55 29 167 217 76 115 203 191 11 165 62 193 99 116 122 144 236 7 28 161 2 29 157 172 23 125 238 199 151 177 89 61 24 101 78 50 213 73 41 127 153 45 167 24 121 168 193 156 3 25 87 166 28 228 174 188 53 67 239 148 36 118 104 162 208 27 232 4 194 85 1 63 159 97 191 194 75 196 10 169 132 199 131 50 223 118 94 117 118 37 27 12 94 60 28 171 47 82 110 137 15 225 23 172 43 12 141 142 81 161 12 74 210 162 228 117 98 187 124 69 164 76 105 158 101 21 200 70 130 111 143 230 32 221 203 211 101 31 5 123 83 76 135 90 57 194 95 46 153 112 62 183 54 63 169 179 4 184 40 188 110 194 105 91 206 102 27 175 154 88 142 71 79 199 84 5 170 128 129 125 55 49 17 120 19 45 187 114 24 111 123 140 166 38 33 227 178 18 59 99 173 9 10 179 214 12 84 15 215 218 82 90 47 149 42 93 188 120 239 195 81 171 94 127 200 127 220 217 86 160 16 144 216 157 162 218 72 45 234 159 77 101 88 132 26 26 6 119 13 70 140 156 233 220 34 213 26 236 74 200 80 175 164 133 195 24 44 191 184 30 143 57 204 140 99 106 77 54 43 42 36 61 14 56 25 97 8 81 181 139 180 153 92 212 77 111 133 185 219 231 238 219 1 43 32 231 8 24 91 33 237 223 108 49 64 165 72 35 152 106 87 136 96 32 1 53 77 44 238 229 83 96 22 196 124 79 6 166 58 123 93 121 225 43 22 186 195 71 126 4 174 235 135 120 229 113 28 181 129 135 100 102 7 85 11 145 212 87 156 186 138 184 223 61 4 11 175 107 6 89 81 114 207 21 17 197 236 54 73 214 232 234 149 32 11 98 167 34 203 221 146 121 235 88 75 139 160 63 189 29 147 127 210 172 33 207 51 152 116 169 189 49 237 233 153 102 17 130 64 98 177 79 16 211 111 113 58 113 48 68 235 78 30 86 170 98 197 169 122 154 41 97 18 126 234 92 145 145 155 237 50 209 ^'}},
+ {OUT=>'F29835A93475740E888E8C14318F3CA45A3C8606'}],
+ ['186', {IN=> {f=> '481 1 208 200 56 48 21 186 21 40 119 178 236 205 196 226 73 22 12 195 64 23 101 144 54 206 241 103 132 7 151 13 138 140 151 130 40 2 34 132 80 223 186 94 112 50 134 237 104 200 181 175 159 61 19 29 140 55 32 144 127 36 172 59 104 148 126 210 240 35 200 225 5 90 230 20 170 144 10 134 39 176 131 108 147 58 36 216 131 35 75 127 109 2 232 60 149 25 185 195 137 95 32 71 55 105 216 58 234 144 200 108 103 228 105 47 130 165 100 172 7 78 183 207 184 179 18 36 47 203 237 31 128 8 219 187 162 44 74 38 131 12 49 162 161 218 142 14 227 89 141 71 180 203 112 175 232 133 221 198 141 196 36 99 229 173 192 154 69 23 80 98 88 198 24 52 174 216 227 162 213 2 107 204 11 150 187 235 116 5 236 132 124 53 117 21 113 191 109 192 206 95 201 28 124 149 215 159 230 218 98 213 54 133 169 172 176 6 10 9 183 38 14 110 187 37 188 178 163 133 23 28 72 123 8 240 204 128 52 49 118 89 45 215 42 86 85 215 211 14 154 17 210 115 179 62 108 220 130 209 172 103 176 79 82 211 139 10 155 85 142 139 83 227 16 69 140 224 202 213 171 35 31 55 178 46 231 161 145 70 83 29 88 67 225 101 217 126 137 168 104 2 11 106 115 33 160 4 95 157 198 193 222 1 18 13 21 238 47 5 38 204 55 222 118 162 117 146 211 87 226 190 166 116 78 66 63 80 25 16 25 68 51 33 212 30 60 76 195 12 239 136 225 28 145 195 210 167 205 27 56 4 220 13 65 68 220 203 39 103 59 177 220 57 137 241 176 204 180 78 14 37 115 106 232 177 22 129 68 168 177 74 184 33 116 174 164 201 197 52 218 46 158 89 214 143 111 159 113 74 236 59 52 122 190 20 214 216 183 90 40 46 106 63 7 224 85 69 67 152 29 15 199 136 27 100 76 151 182 66 209 224 158 141 240 108 30 156 174 91 129 24 96 4 147 183 134 112 6 62 64 148 199 40 171 233 201 124 222 45 90 186 190 239 188 9 235 64 221 29 213 127 178 ^'}},
+ {OUT=>'1A1D77C6D0F97C4B620FAA90F3F8644408E4B13D'}],
+ ['187', {IN=> {f=> '508 1 94 122 173 145 6 206 41 173 57 199 146 150 136 66 9 48 83 91 239 243 5 109 30 7 174 113 57 90 95 69 224 29 39 102 229 3 194 151 239 87 56 190 165 44 144 38 155 157 140 161 11 51 13 163 217 72 107 203 179 243 161 58 193 95 116 122 132 236 7 24 153 242 17 149 168 15 125 238 187 147 165 85 53 16 93 66 50 201 61 29 127 153 45 159 8 121 164 185 144 235 13 75 166 12 216 166 188 53 63 235 148 24 106 100 158 196 19 220 240 190 77 237 63 147 97 187 194 63 188 6 165 132 195 119 46 215 110 86 109 118 37 11 4 94 60 20 167 47 74 110 133 7 221 11 160 43 129 130 77 149 12 66 206 150 224 117 90 183 120 61 164 76 93 154 101 17 196 66 118 99 143 226 32 213 195 207 97 31 1 123 79 64 135 78 49 186 91 42 141 108 62 179 46 59 161 167 176 28 180 102 182 105 91 198 90 27 171 142 76 134 63 79 199 84 241 158 128 121 117 43 41 17 108 15 37 187 106 12 107 115 128 162 26 21 223 170 18 55 87 165 241 2 179 202 8 80 11 207 206 82 82 35 137 34 81 176 116 231 183 73 163 82 123 188 115 216 213 86 156 16 140 208 153 154 210 68 33 222 155 69 89 80 120 14 22 238 119 5 62 132 148 221 208 18 205 26 224 70 192 80 167 156 125 191 24 44 191 180 14 131 45 200 140 99 102 73 54 31 42 32 57 2 44 9 89 236 69 177 131 180 149 80 208 65 103 129 177 219 231 230 215 1 35 28 227 20 79 17 237 219 96 37 52 157 72 19 152 98 87 124 88 24 241 49 77 40 226 229 71 92 10 192 236 116 75 234 154 54 119 93 113 213 39 14 178 187 59 114 4 162 223 123 120 217 113 16 181 117 131 92 98 243 73 7 133 204 79 152 186 138 184 223 61 232 239 175 107 6 77 81 114 207 9 1 185 232 42 73 210 224 226 141 20 11 98 155 22 191 221 146 109 227 88 71 139 152 51 189 21 135 119 202 164 29 195 51 148 112 157 181 49 233 233 145 94 13 122 64 94 169 71 4 203 111 101 58 105 44 56 231 74 22 82 170 86 197 169 118 146 41 85 6 118 234 92 145 141 149 ^'}},
+ {OUT=>'4EC84870E9BDD25F523C6DFB6EDD605052CA4EAA'}],
+ ['188', {IN=> {f=> '484 1 219 32 243 208 200 48 48 21 178 13 40 115 178 232 197 196 218 61 14 4 183 60 23 93 136 50 202 229 99 120 245 143 5 134 128 151 130 32 236 34 124 68 215 182 82 112 46 126 229 92 192 169 163 159 49 19 17 136 43 28 140 119 28 160 47 104 140 126 202 236 27 196 225 235 90 230 16 158 132 240 130 39 164 123 104 147 54 32 216 119 35 75 123 97 232 224 52 137 21 185 187 129 95 24 71 47 97 212 50 222 144 188 100 91 228 101 35 122 153 92 172 241 74 179 203 180 167 2 36 39 191 225 23 120 238 215 175 154 36 66 34 131 242 45 162 161 210 142 14 223 81 141 63 168 199 104 167 228 121 209 198 133 184 24 91 221 173 192 142 61 7 76 94 80 190 8 40 162 208 227 150 213 240 103 196 245 150 179 223 108 243 228 128 124 41 113 17 109 187 109 180 194 91 201 12 116 149 215 155 226 206 86 201 46 133 157 168 172 2 2 9 183 26 6 98 183 33 180 174 163 125 19 24 64 119 8 232 204 124 48 41 106 89 33 207 30 82 85 203 207 10 154 9 210 115 171 58 108 216 126 209 164 103 176 71 74 199 131 10 147 81 134 135 79 219 12 69 132 220 202 209 171 31 19 51 166 38 227 157 141 70 83 29 84 67 217 97 205 122 133 164 96 2 241 94 107 33 160 87 145 186 185 214 231 14 243 9 230 43 1 38 200 55 222 110 158 105 138 211 79 226 186 158 112 66 54 59 72 25 8 13 60 43 21 212 30 48 68 195 8 239 132 213 28 133 191 198 167 201 19 44 238 208 1 65 56 220 195 35 95 51 173 212 57 137 233 168 192 176 78 2 29 111 102 232 177 22 129 68 168 165 74 172 29 104 174 156 197 189 44 218 34 158 85 210 135 99 147 101 62 224 59 52 110 178 20 214 204 171 78 36 46 106 55 3 212 77 65 63 148 25 15 187 136 23 100 64 139 182 62 197 216 146 137 240 96 22 156 170 87 125 12 96 234 139 175 134 108 236 54 52 144 195 28 167 221 193 120 218 41 86 174 190 227 184 243 235 56 213 21 205 115 205 71 ^'}},
+ {OUT=>'D689513FED08B80C39B67371959BC4E3FECB0537'}],
+ ['189', {IN=> {f=> '506 0 110 165 141 238 206 37 169 45 187 134 142 124 66 5 36 71 79 235 231 5 105 22 239 166 101 49 86 83 65 224 21 31 102 221 3 190 147 231 79 56 182 165 36 140 30 147 157 128 149 3 47 245 159 217 68 99 203 167 235 157 54 193 91 116 122 120 236 7 20 145 242 5 141 164 7 125 238 175 143 153 81 45 8 85 54 50 189 49 17 127 153 45 151 240 121 160 177 132 227 1 63 166 244 204 158 188 53 59 231 148 12 94 96 154 184 11 208 236 186 69 233 63 135 97 183 194 51 180 2 161 132 191 107 42 207 102 78 101 118 37 243 244 94 60 12 163 47 66 110 129 247 217 247 148 43 236 117 118 73 137 12 58 202 138 220 117 82 179 116 53 164 76 81 150 101 13 192 62 106 87 143 222 32 205 187 203 93 31 245 123 75 52 135 66 41 178 87 38 129 104 62 175 38 55 153 155 244 168 16 172 94 170 105 91 190 78 27 167 130 64 126 55 79 199 84 237 146 128 113 109 31 33 17 96 11 29 187 98 103 107 116 158 14 9 219 162 18 51 75 157 233 242 179 190 4 76 7 199 194 82 74 23 125 26 69 164 112 223 171 65 155 70 119 176 103 212 209 86 152 16 136 200 149 146 202 64 21 210 151 61 77 72 108 2 18 230 119 245 54 124 140 209 196 2 197 26 212 66 184 80 159 148 117 187 24 44 191 176 246 119 33 196 140 99 98 69 54 19 42 28 53 238 32 241 81 224 57 173 123 180 145 68 204 53 95 125 169 219 231 222 211 1 27 24 223 240 16 67 1 237 215 84 25 40 149 72 3 152 90 87 112 80 16 241 45 77 36 214 229 59 88 246 188 232 108 71 222 142 50 115 93 105 201 35 6 170 179 47 102 4 150 211 111 120 205 113 4 181 105 127 84 94 239 61 3 121 196 71 148 186 138 184 223 61 220 227 175 107 6 65 81 114 207 245 233 173 228 30 73 206 216 218 133 8 11 98 143 10 179 221 146 97 219 88 67 139 144 39 189 13 123 111 194 156 25 183 51 144 108 145 173 49 229 233 137 86 9 114 64 90 161 63 240 195 111 89 58 97 40 44 227 70 14 78 170 74 197 169 114 138 41 73 242 110 234 177 ^'}},
+ {OUT=>'C4FED58F209FC3C34AD19F86A6DACADC86C04D33'}],
+ ['190', {IN=> {f=> '491 0 145 135 155 207 20 243 208 200 40 48 21 170 5 40 111 178 228 189 196 210 49 6 246 171 56 23 85 128 46 198 217 95 108 241 135 247 130 116 151 130 24 228 34 116 56 207 178 70 112 42 118 221 80 184 157 151 159 37 19 5 132 31 24 136 111 20 148 35 104 132 126 194 232 19 192 225 223 90 230 12 146 120 228 126 39 152 115 100 147 50 28 216 107 35 75 119 85 220 216 44 125 17 185 179 121 95 16 71 39 89 208 42 210 144 176 92 79 228 97 23 114 141 84 172 233 70 175 199 176 155 236 36 31 179 213 15 112 226 211 163 146 28 58 30 131 230 41 162 161 202 142 14 219 73 141 55 156 195 96 159 224 109 197 198 125 172 12 83 213 173 192 130 53 241 72 90 72 182 242 28 150 200 227 138 213 236 99 188 237 150 171 211 100 239 220 124 124 29 109 13 105 183 109 168 182 87 201 246 108 149 215 151 222 194 74 189 38 133 145 164 168 248 244 9 183 14 248 86 179 29 172 170 163 117 15 20 56 115 8 224 204 120 44 33 94 89 21 199 18 78 85 191 203 6 154 1 210 115 163 54 108 212 122 209 156 103 176 63 66 187 123 10 139 77 126 131 75 211 8 69 124 216 202 205 171 27 7 47 154 30 223 153 137 70 83 29 80 67 209 93 193 118 129 160 88 2 229 82 99 33 160 246 79 133 174 177 206 219 10 231 247 222 39 247 38 196 55 222 102 154 93 130 211 71 226 182 150 108 54 42 55 64 25 1 52 35 9 212 30 36 60 195 4 239 128 201 28 121 187 186 167 197 11 32 230 196 239 65 44 220 187 31 87 43 169 204 57 137 225 160 180 172 78 240 21 107 98 232 177 22 129 68 168 153 74 160 25 92 174 148 193 181 36 218 22 158 81 206 127 87 135 89 50 212 59 52 98 166 20 214 192 159 66 32 46 106 47 249 200 69 61 59 144 21 15 175 136 19 100 52 127 182 58 185 208 134 133 240 84 14 156 166 83 121 96 222 131 167 134 104 224 46 40 140 191 16 163 209 185 116 214 37 82 162 190 215 180 235 235 48 205 13 197 103 205 76 104 161 139 232 146 ^'}},
+ {OUT=>'051888C6D00029C176DE792B84DECE2DC1C74B00'}],
+ ['191', {IN=> {f=> '516 0 33 165 33 175 122 134 112 66 1 24 59 67 231 219 5 101 14 227 158 89 41 82 71 61 224 13 23 102 213 3 186 143 223 71 56 174 165 28 136 22 139 157 116 137 247 43 233 155 217 64 91 203 155 227 153 50 193 87 116 122 108 236 7 16 137 242 245 133 160 251 125 238 163 139 141 77 37 77 42 50 177 37 5 127 153 45 143 228 121 156 169 120 219 241 51 166 232 192 150 188 53 55 227 148 82 92 150 172 3 196 232 182 61 229 63 123 97 179 194 39 172 250 157 132 187 95 38 199 94 70 93 118 37 231 240 94 60 4 159 47 58 110 125 243 213 239 136 43 228 105 106 69 125 12 50 198 126 216 117 74 175 112 45 164 76 69 146 101 9 188 58 94 75 143 218 32 197 179 199 89 31 245 123 71 40 135 54 33 170 83 34 117 100 62 171 30 51 145 143 244 160 4 164 86 158 105 91 182 66 27 163 118 52 118 47 79 199 84 233 134 128 105 101 19 25 17 84 7 21 187 90 240 99 99 104 154 2 249 215 154 18 47 63 149 225 238 179 178 72 3 191 182 82 66 11 113 18 57 152 108 215 159 57 147 58 115 164 91 208 205 86 148 16 132 192 145 138 194 60 9 198 147 53 65 64 96 242 14 222 119 241 46 116 132 197 184 238 189 26 200 62 176 80 151 140 109 183 24 44 191 172 234 107 21 192 140 99 94 65 54 7 42 24 49 230 20 229 73 212 45 169 115 180 141 56 200 41 87 121 161 219 231 214 207 1 19 20 219 236 12 55 237 237 211 72 13 28 141 72 239 152 82 87 100 72 8 241 41 77 32 202 229 47 84 238 184 228 100 67 210 130 46 111 93 97 189 31 250 162 171 35 90 4 138 199 99 120 193 113 244 181 93 123 76 90 235 49 251 109 188 63 144 186 138 184 223 61 208 215 175 107 6 53 81 114 207 237 221 161 224 18 73 202 208 210 125 248 11 98 131 250 167 221 146 85 211 88 63 139 136 27 189 5 111 103 186 148 21 171 51 140 104 133 165 49 225 233 129 78 5 106 64 86 153 55 232 187 111 77 58 89 36 32 223 66 6 74 170 62 197 169 110 130 41 61 234 102 234 92 145 133 155 201 14 243 208 200 36 48 21 166 1 40 109 178 147 ^'}},
+ {OUT=>'1A3540BEE05518505827954F58B751C475AEECE0'}],
+ ['192', {IN=> {f=> '522 0 179 196 200 34 251 241 156 51 23 75 118 41 193 202 90 93 236 125 242 125 101 151 130 14 218 34 106 41 197 173 55 112 37 108 211 65 174 142 136 159 22 19 245 127 16 19 131 101 10 133 20 104 122 126 184 227 9 187 225 208 90 230 7 131 105 213 121 39 137 105 95 147 45 23 216 92 35 75 114 70 205 206 34 110 12 185 169 111 95 6 71 29 79 203 32 195 144 161 82 64 228 92 8 104 126 74 172 223 65 170 194 171 140 221 36 21 164 198 5 102 211 206 148 136 18 48 25 131 215 36 162 161 192 142 14 214 63 141 45 141 190 86 149 219 94 182 198 115 157 252 73 203 173 192 115 43 226 67 85 62 172 227 13 135 190 227 123 213 231 94 178 227 150 161 196 90 234 210 119 124 14 104 8 100 178 109 153 167 82 201 231 98 149 215 146 217 179 59 174 28 133 130 159 163 248 239 9 183 254 243 71 174 24 162 165 163 107 10 15 46 110 8 214 204 115 39 23 79 89 6 189 3 73 85 176 198 1 154 246 210 115 153 49 108 207 117 209 146 103 176 53 56 172 113 10 129 72 116 126 70 201 3 69 114 211 202 200 171 22 247 42 139 20 218 148 132 70 83 29 75 67 199 88 178 113 124 155 78 2 214 67 89 33 160 246 69 118 159 167 196 204 5 216 237 212 34 247 38 191 55 222 92 149 78 120 211 61 226 177 140 103 39 27 50 54 25 245 241 42 25 249 212 30 21 50 195 254 239 123 186 28 106 182 171 167 192 1 17 220 181 229 65 29 220 177 26 77 33 164 194 57 137 215 150 165 167 78 230 11 102 93 232 177 22 129 68 168 138 74 145 20 77 174 138 188 171 26 218 7 158 76 201 117 72 120 74 35 197 59 52 83 151 20 214 177 144 51 27 46 106 37 249 185 59 56 54 139 16 15 160 136 14 100 37 112 182 53 170 198 119 128 240 69 4 156 161 78 116 240 96 207 121 157 134 99 209 36 25 135 186 1 158 194 175 111 209 32 77 147 190 200 175 225 235 38 195 3 187 88 205 61 89 151 134 217 206 30 162 24 166 113 128 103 66 253 15 50 58 228 210 5 98 8 218 152 80 35 79 62 58 224 7 17 102 207 3 183 140 217 65 56 168 165 22 133 16 133 157 107 128 244 12 ^'}},
+ {OUT=>'DFA19180359D5A7A38E842F172359CAF4208FC05'}],
+ ['193', {IN=> {f=> '517 1 218 150 217 59 81 203 140 217 148 45 193 82 116 122 93 236 7 11 127 242 235 123 155 246 125 238 148 134 126 72 27 247 67 27 50 162 22 247 127 153 45 133 213 121 151 159 105 209 231 36 166 217 177 140 188 53 50 222 148 242 67 87 145 157 250 181 227 177 51 224 63 108 97 174 194 24 162 250 152 132 182 80 33 189 84 60 83 118 37 216 235 94 60 251 154 47 48 110 120 238 208 229 121 43 218 90 91 64 110 12 40 193 111 211 117 64 170 107 35 164 76 54 141 101 4 183 53 79 60 143 213 32 187 169 194 84 31 245 123 66 25 135 39 23 160 78 29 102 95 62 166 20 46 135 128 244 150 246 154 76 143 105 91 172 51 27 158 103 37 108 37 79 199 84 228 119 128 95 91 4 15 17 69 2 11 187 80 230 94 89 89 149 244 239 210 144 18 42 48 139 215 233 179 163 252 67 255 181 167 82 56 253 98 8 42 137 103 205 144 47 137 43 110 149 76 203 200 86 143 16 127 182 140 128 184 55 251 183 142 43 50 54 81 232 9 212 119 236 36 106 122 182 169 223 179 26 185 57 166 80 141 130 99 178 24 44 191 167 219 92 6 187 140 99 89 60 54 249 42 19 44 220 5 214 63 197 30 164 105 180 136 41 195 26 77 116 151 219 231 204 202 1 9 15 214 231 7 40 222 237 206 57 255 13 131 72 224 152 72 87 85 62 255 241 36 77 27 187 229 32 79 228 179 223 90 62 195 115 41 106 93 87 174 26 245 152 161 20 75 4 123 184 84 120 178 113 234 181 78 118 66 85 230 34 251 94 178 53 139 186 138 184 223 61 193 200 175 107 6 38 81 114 207 227 206 146 219 3 73 197 198 200 115 238 11 98 116 240 152 221 146 70 201 88 58 139 126 12 189 252 96 93 176 138 16 156 51 135 99 118 155 49 220 233 119 68 96 64 81 143 45 222 177 111 62 58 79 31 17 218 61 253 69 170 47 197 169 105 120 41 46 224 92 234 92 145 128 155 186 256 243 208 200 26 48 21 156 248 40 104 178 221 175 196 196 28 249 239 150 49 23 71 114 39 191 196 88 87 234 121 240 123 95 151 130 10 214 34 102 35 193 171 49 112 35 104 207 59 170 136 130 159 16 19 241 125 213 ^'}},
+ {OUT=>'7B0FA84EBBCFF7D7F4500F73D79660C4A3431B67'}],
+ ['194', {IN=> {f=> '529 1 15 127 93 2 121 8 104 114 126 176 223 1 183 225 196 90 230 3 119 93 201 117 39 125 97 91 147 41 19 216 80 35 75 110 58 193 198 26 98 8 185 161 103 95 257 71 21 71 199 24 183 144 149 74 52 228 88 255 96 114 66 172 215 61 166 190 167 128 209 36 13 152 186 256 94 199 202 136 128 10 40 21 131 203 32 162 161 184 142 14 210 55 141 37 129 186 78 141 215 82 170 198 107 145 244 65 195 173 192 103 35 214 63 81 54 164 215 1 123 182 227 111 213 227 90 170 219 150 153 184 82 230 202 115 124 2 100 4 96 174 109 141 155 78 201 219 90 149 215 142 213 167 47 162 20 133 118 155 159 248 235 9 183 246 239 59 170 20 154 161 163 99 6 11 38 106 8 206 204 111 35 15 67 89 253 181 250 69 85 164 194 256 154 242 210 115 145 45 108 203 113 209 138 103 176 45 48 160 105 10 121 68 108 122 66 193 258 69 106 207 202 196 171 18 239 38 127 12 214 144 128 70 83 29 71 67 191 84 166 109 120 151 70 2 202 55 81 33 160 246 61 106 147 159 188 192 1 204 229 204 30 247 38 187 55 222 84 145 66 112 211 53 226 173 132 99 27 15 46 46 25 241 233 34 17 241 212 30 9 42 195 254 239 119 174 28 94 178 159 167 188 252 5 212 169 221 65 17 220 169 22 69 25 160 186 57 137 207 142 153 163 78 222 3 98 89 232 177 22 129 68 168 126 74 133 16 65 174 130 184 163 18 218 254 158 72 197 109 60 108 62 23 185 59 52 71 139 20 214 165 132 39 23 46 106 29 249 173 51 52 50 135 12 15 148 136 10 100 25 100 182 49 158 190 107 124 240 57 255 156 157 74 112 232 96 195 113 149 134 95 197 28 13 131 182 248 154 182 167 107 205 28 73 135 190 188 171 217 235 30 187 254 179 76 205 49 77 143 130 205 206 26 158 12 154 101 120 91 66 253 3 38 46 224 198 5 94 206 144 68 27 75 50 54 224 258 9 102 199 3 179 136 209 57 56 160 165 14 129 8 125 157 95 116 240 36 212 148 217 57 77 203 134 213 146 43 193 80 116 122 87 236 7 9 123 242 231 119 153 244 125 238 142 132 120 70 23 245 63 21 50 156 16 243 127 153 45 129 207 121 149 155 99 205 227 30 166 211 57 ^'}},
+ {OUT=>'9E886081C9ACAAD0F97B10810D1DE6FCDCE6B5F4'}],
+ ['195', {IN=> {f=> '548 0 134 188 53 47 219 148 236 58 84 142 148 247 172 224 174 45 221 63 99 97 171 194 15 156 250 149 132 179 71 30 183 78 54 77 118 37 207 232 94 60 248 151 47 42 110 117 235 205 223 112 43 212 81 82 61 101 12 34 190 102 208 117 58 167 104 29 164 76 45 138 101 1 180 50 70 51 143 210 32 181 163 191 81 31 245 123 63 16 135 30 17 154 75 26 93 92 62 163 14 43 129 119 244 144 240 148 70 134 105 91 166 42 27 155 94 28 102 31 79 199 84 225 110 128 89 85 255 9 17 60 259 5 187 74 224 91 83 80 146 238 233 207 138 18 39 39 133 209 230 179 154 252 64 255 175 158 82 50 247 89 2 33 128 100 199 135 41 131 34 107 140 67 200 197 86 140 16 124 176 137 122 178 52 245 174 139 37 41 48 72 226 6 206 119 233 30 100 116 173 160 214 173 26 176 54 160 80 135 124 93 175 24 44 191 164 210 83 257 184 140 99 86 57 54 243 42 16 41 214 256 205 57 188 21 161 99 180 133 32 192 17 71 113 145 219 231 198 199 1 3 12 211 228 4 31 213 237 203 48 249 4 125 72 215 152 66 87 76 56 252 241 33 77 24 178 229 23 76 222 176 220 84 59 186 106 38 103 93 81 165 23 242 146 155 11 66 4 114 175 75 120 169 113 228 181 69 115 60 82 227 25 251 85 172 47 136 186 138 184 223 61 184 191 175 107 6 29 81 114 207 221 197 137 216 254 73 194 192 194 109 232 11 98 107 234 143 221 146 61 195 88 55 139 120 3 189 249 87 87 170 132 13 147 51 132 96 109 149 49 217 233 113 62 257 90 64 78 137 39 216 171 111 53 58 73 28 8 215 58 250 66 170 38 197 169 102 114 41 37 218 86 234 92 145 125 155 177 250 243 208 200 20 48 21 150 245 40 101 178 218 169 196 190 19 246 236 141 46 23 65 108 36 188 187 85 78 231 115 237 120 86 151 130 4 208 34 96 26 187 168 40 112 32 98 201 50 164 127 121 159 7 19 235 122 1 14 126 91 118 5 104 112 126 174 222 259 182 225 193 90 230 2 116 90 198 116 39 122 95 90 147 40 18 216 77 35 75 109 55 190 196 24 95 7 185 159 101 95 256 71 19 69 198 22 180 144 146 72 49 228 87 253 94 111 64 172 213 60 165 189 166 125 206 36 11 149 183 255 92 196 201 133 126 8 38 20 131 213 ^'}},
+ {OUT=>'A4D46E4BA0AE4B012F75B1B50D0534D578AE9CB6'}],
+ ['196', {IN=> {f=> '547 0 29 162 161 178 142 14 207 49 141 31 120 183 72 135 212 73 161 198 101 136 238 59 189 173 192 94 29 205 60 78 48 158 206 254 114 176 227 102 213 224 87 164 213 150 147 175 76 227 196 112 124 255 97 1 93 171 109 132 146 75 201 210 84 149 215 139 210 158 38 153 14 133 109 152 156 248 232 9 183 240 236 50 167 17 148 158 163 93 3 8 32 103 8 200 204 108 32 9 58 89 247 175 244 66 85 155 191 256 154 239 210 115 139 42 108 200 110 209 132 103 176 39 42 151 99 10 115 65 102 119 63 187 258 69 100 204 202 193 171 15 233 35 118 6 211 141 125 70 83 29 68 67 185 81 157 106 117 148 64 2 193 46 75 33 160 246 55 97 138 153 182 183 260 195 223 198 27 247 38 184 55 222 78 142 57 106 211 47 226 170 126 96 18 6 43 40 25 238 227 28 11 235 212 30 36 195 254 239 116 165 28 85 175 150 167 185 249 258 206 160 215 65 8 220 163 19 63 19 157 180 57 137 201 136 144 160 78 216 259 95 86 232 177 22 129 68 168 117 74 124 13 56 174 124 181 157 12 218 248 158 69 194 103 51 99 53 14 176 59 52 62 130 20 214 156 123 30 20 46 106 23 249 164 45 49 47 132 9 15 139 136 7 100 16 91 182 46 149 184 98 121 240 48 252 156 154 71 109 226 96 186 107 143 134 92 188 22 4 128 179 242 151 173 161 104 202 25 70 126 190 179 168 211 235 24 181 251 173 67 205 40 68 137 127 196 206 23 155 3 145 92 114 82 66 253 256 29 37 221 189 5 91 256 197 138 59 21 72 41 51 224 255 3 102 193 3 176 133 203 51 56 154 165 8 126 2 119 157 86 107 237 33 203 145 217 54 71 203 125 207 143 40 193 77 116 122 78 236 7 6 117 242 225 113 150 241 125 238 133 129 111 67 17 242 57 12 50 147 7 237 127 153 45 123 198 121 146 149 90 199 221 21 166 202 162 130 188 53 45 217 148 232 52 82 140 142 245 166 222 172 41 219 63 93 97 169 194 9 152 250 147 132 177 65 28 179 74 50 73 118 37 201 230 94 60 246 149 47 38 110 115 233 203 219 106 43 208 75 76 59 95 12 30 188 96 206 117 54 165 102 25 164 76 39 136 101 261 178 48 64 45 143 208 32 177 159 189 79 31 245 123 61 10 135 24 13 150 73 24 87 90 62 161 10 41 125 209 ^'}},
+ {OUT=>'6342B199EE64C7B2C9CBCD4F2DCB65ACEF51516F'}],
+ ['197', {IN=> {f=> '542 1 244 136 232 140 62 122 105 91 158 30 27 151 82 16 94 23 79 199 84 221 98 128 81 77 247 1 17 48 259 261 187 66 216 87 75 68 142 230 225 203 130 18 35 27 125 201 226 179 142 252 60 255 167 146 82 42 239 77 258 21 116 96 191 123 33 123 22 103 128 55 196 193 86 136 16 120 168 133 114 170 48 237 162 135 29 29 40 60 218 2 198 119 229 22 92 108 161 148 202 165 26 164 50 152 80 127 116 85 171 24 44 191 160 198 71 249 180 140 99 82 53 54 235 42 12 37 206 248 193 49 176 9 157 91 180 129 20 188 5 63 109 137 219 231 190 195 1 259 8 207 224 19 201 237 199 36 241 256 117 72 203 152 58 87 64 48 248 241 29 77 20 166 229 11 72 214 172 216 76 55 174 94 34 99 93 73 153 19 238 138 147 263 54 4 102 163 63 120 157 113 220 181 57 111 52 78 223 13 251 73 164 39 132 186 138 184 223 61 172 179 175 107 6 17 81 114 207 213 185 125 212 246 73 190 184 186 101 224 11 98 95 226 131 221 146 49 187 88 51 139 112 255 189 245 75 79 162 124 9 135 51 128 92 97 141 49 213 233 105 54 257 82 64 74 129 31 208 163 111 41 58 65 24 260 211 54 246 62 170 26 197 169 98 106 41 25 210 78 234 92 145 121 155 165 242 243 208 200 12 48 21 142 241 40 97 178 214 161 196 182 7 242 232 129 42 23 57 100 32 184 175 81 66 227 107 233 116 74 151 130 260 200 34 88 14 179 164 28 112 28 90 193 38 156 115 109 159 259 19 227 118 253 10 122 83 256 106 257 104 104 126 166 218 255 178 225 181 90 230 262 104 78 186 112 39 110 87 86 147 36 14 216 65 35 75 105 43 178 188 16 83 3 185 151 93 95 252 71 11 61 194 14 168 144 134 64 37 228 83 245 86 99 56 172 205 56 161 185 162 113 194 36 3 137 171 251 84 184 197 121 118 30 16 131 188 27 162 161 174 142 14 205 45 141 27 114 181 68 131 210 67 155 198 97 130 234 55 185 173 192 88 25 199 58 76 44 154 200 250 108 172 227 96 213 222 85 160 209 150 143 169 72 225 192 110 124 251 95 263 91 169 109 126 140 73 201 204 80 149 215 137 208 152 32 147 10 133 103 150 154 248 230 9 183 236 234 44 165 15 144 156 163 89 1 6 28 101 8 196 204 106 164 ^'}},
+ {OUT=>'AABFD63688EB678357869130083E1B52F6EA861D'}],
+ ['198', {IN=> {f=> '567 0 1 46 89 239 167 236 62 85 143 187 256 154 235 210 115 131 38 108 196 106 209 124 103 176 31 34 139 91 10 107 61 94 115 59 179 258 69 92 200 202 189 171 11 225 31 106 264 207 137 121 70 83 29 64 67 177 77 145 102 113 144 56 2 181 34 67 33 160 246 47 85 126 145 174 171 260 183 215 190 23 247 38 180 55 222 70 138 45 98 211 39 226 166 118 92 6 260 39 32 25 234 219 20 3 227 212 30 254 28 195 254 239 112 153 28 73 171 138 167 181 245 250 198 148 207 65 262 220 155 15 55 11 153 172 57 137 193 128 132 156 78 208 255 91 82 232 177 22 129 68 168 105 74 112 9 44 174 116 177 149 4 218 240 158 65 190 95 39 87 41 2 164 59 52 50 118 20 214 144 111 18 16 46 106 15 249 152 37 45 43 128 5 15 127 136 3 100 4 79 182 42 137 176 86 117 240 36 248 156 150 67 105 218 96 174 99 135 134 88 176 14 258 124 175 234 147 161 153 100 198 21 66 114 190 167 164 203 235 16 173 247 165 55 205 28 56 129 123 184 206 19 151 257 133 80 106 70 66 253 248 17 25 217 177 5 87 252 185 130 47 13 68 29 47 224 251 261 102 185 3 172 129 195 43 56 146 165 122 260 111 157 74 95 233 29 191 141 217 50 63 203 113 199 139 36 193 73 116 122 66 236 7 2 109 242 217 105 146 237 125 238 121 125 99 63 9 238 49 50 135 261 229 127 153 45 115 186 121 142 141 78 191 213 9 166 190 150 122 188 53 41 213 148 224 40 78 136 130 241 154 218 168 33 215 63 81 97 165 194 263 144 250 143 132 173 53 24 171 66 42 65 118 37 189 226 94 60 242 145 47 30 110 111 229 199 211 94 43 200 63 64 55 83 12 22 184 84 202 117 46 161 98 17 164 76 27 132 101 261 174 44 52 33 143 204 32 169 151 185 75 31 245 123 57 264 135 12 5 142 69 20 75 86 62 157 2 37 117 101 244 132 228 136 58 116 105 91 154 24 27 149 76 10 90 19 79 199 84 219 92 128 77 73 243 263 17 42 259 259 187 62 212 85 71 62 140 226 221 201 126 18 33 21 121 197 224 179 136 252 58 255 163 140 82 38 235 71 256 15 110 94 187 117 29 119 16 101 122 49 194 191 86 134 16 118 164 131 110 166 46 233 156 133 25 23 36 54 214 194 119 227 18 88 104 155 142 196 161 26 158 48 148 80 123 112 81 169 24 44 191 158 192 65 245 178 140 223 ^'}},
+ {OUT=>'F732B7372DAF44801F81EFFE3108726239837936'}],
+ ['199', {IN=> {f=> '551 1 78 49 54 227 42 8 33 198 240 181 41 164 265 153 83 180 125 8 184 261 55 105 129 219 231 182 191 1 255 4 203 220 264 7 189 237 195 24 233 248 109 72 191 152 50 87 52 40 244 241 25 77 16 154 229 267 68 206 168 212 68 51 162 82 30 95 93 65 141 15 234 130 139 255 42 4 90 151 51 120 145 113 212 181 45 107 44 74 219 1 251 61 156 31 128 186 138 184 223 61 160 167 175 107 6 5 81 114 207 205 173 113 208 238 73 186 176 178 93 216 11 98 83 218 119 221 146 37 179 88 47 139 104 247 189 241 63 71 154 116 5 123 51 124 88 85 133 49 209 233 97 46 257 74 64 70 121 23 200 155 111 29 58 57 20 252 207 50 242 58 170 14 197 169 94 98 41 13 202 70 234 92 145 117 155 153 234 243 208 200 4 48 21 134 237 40 93 178 210 153 196 174 263 238 228 117 38 23 49 92 28 180 163 77 54 223 99 229 112 62 151 130 256 192 34 80 2 171 160 16 112 24 82 185 26 148 103 97 159 251 19 219 114 245 6 118 75 252 94 249 104 96 126 158 214 251 174 225 169 90 230 262 92 66 174 108 39 98 79 82 147 32 10 216 53 35 75 101 31 166 180 8 71 267 185 143 85 95 248 71 3 53 190 6 156 144 122 56 25 228 79 237 78 87 48 172 197 52 157 181 158 101 182 36 263 125 159 247 76 172 193 109 110 260 22 12 131 176 23 162 161 166 142 14 201 37 141 19 102 177 60 123 206 55 143 198 89 118 226 47 177 173 192 76 17 187 54 72 36 146 188 242 96 164 227 84 213 218 81 152 201 150 135 157 64 221 184 106 124 243 91 263 87 165 109 114 128 69 201 192 72 149 215 133 204 140 20 135 2 133 91 146 150 248 226 9 183 228 230 32 161 11 136 152 163 81 265 2 20 97 8 188 204 102 26 265 40 89 235 163 232 60 85 137 185 256 154 233 210 115 127 36 108 194 104 209 120 103 176 27 30 133 87 10 103 59 90 113 57 175 258 69 88 198 202 187 171 9 221 29 100 262 205 135 119 70 83 29 62 67 173 75 139 100 111 142 52 2 175 28 63 33 160 246 43 79 120 141 170 165 260 177 211 186 21 247 38 178 55 222 66 136 39 94 211 35 226 164 114 90 256 37 28 25 232 215 16 267 223 212 30 250 24 195 254 239 110 147 28 67 169 132 167 179 243 246 194 142 203 65 263 ^'}},
+ {OUT=>'5E9347FE4574CDCB80281ED092191199BADD7B42'}],
+ ['200', {IN=> {f=> '578 0 220 147 11 47 3 149 164 57 137 185 120 120 152 78 200 251 87 78 232 177 22 129 68 168 93 74 100 5 32 174 108 173 141 266 218 232 158 61 186 87 27 75 29 260 152 59 52 38 106 20 214 132 99 6 12 46 106 7 249 140 29 41 39 124 1 15 115 136 269 100 262 67 182 38 125 168 74 113 240 24 244 156 146 63 101 210 96 162 91 127 134 84 164 6 250 120 171 226 143 149 145 96 194 17 62 102 190 155 160 195 235 8 165 243 157 43 205 16 44 121 119 172 206 15 147 249 121 68 98 58 66 253 240 5 13 213 165 5 83 248 173 122 35 5 64 17 43 224 247 257 102 177 3 168 125 187 35 56 138 165 262 118 256 103 157 62 83 229 25 179 137 217 46 55 203 101 191 135 32 193 69 116 122 54 236 7 268 101 242 209 97 142 233 125 238 109 121 87 59 1 234 41 258 50 123 253 221 127 153 45 107 174 121 138 133 66 183 205 267 166 178 138 114 188 53 37 209 148 216 28 74 132 118 237 142 214 164 25 211 63 69 97 161 194 255 136 250 139 132 169 41 20 163 58 34 57 118 37 177 222 94 60 238 141 47 22 110 107 225 195 203 82 43 192 51 52 51 71 12 14 180 72 198 117 38 157 94 9 164 76 15 128 101 261 170 40 40 21 143 200 32 161 143 181 71 31 245 123 53 256 135 267 134 65 16 63 82 62 153 264 33 109 89 244 124 220 128 50 104 105 91 146 12 27 145 64 268 82 11 79 199 84 215 80 128 69 65 235 259 17 30 259 255 187 54 204 81 63 50 136 218 213 197 118 18 29 9 113 189 220 179 124 252 54 255 155 128 82 30 227 59 252 3 98 90 179 105 21 111 4 97 110 37 190 187 86 130 16 114 156 127 102 158 42 225 144 129 17 11 28 42 206 266 186 119 223 10 80 96 143 130 184 153 26 146 44 140 80 115 104 73 165 24 44 191 154 180 53 237 174 140 99 76 47 54 223 42 6 31 194 236 175 37 158 261 151 79 180 123 2 182 257 51 103 125 219 231 178 189 1 253 2 201 218 264 1 183 237 193 18 229 244 105 72 185 152 46 87 46 36 242 241 23 77 14 148 229 263 66 202 166 210 64 49 156 76 28 93 93 61 135 13 232 126 135 251 36 4 84 145 45 120 139 113 208 181 39 105 40 72 217 265 251 55 152 27 126 186 138 184 223 61 154 161 175 107 6 269 81 114 207 201 167 107 206 234 73 184 172 174 89 212 11 98 77 214 113 221 146 31 175 88 45 139 100 243 189 213 ^'}},
+ {OUT=>'D5776B7DFFF75C1358ABDBBB3F27A20BB6CA7C55'}],
+ ['201', {IN=> {f=> '578 1 51 63 146 108 1 111 51 120 84 73 125 49 205 233 89 38 257 66 64 66 113 15 192 147 111 17 58 49 16 244 203 46 238 54 170 2 197 169 90 90 41 1 194 62 234 92 145 113 155 141 226 243 208 200 268 48 21 126 233 40 89 178 206 145 196 166 255 234 224 105 34 23 41 84 24 176 151 73 42 219 91 225 108 50 151 130 252 184 34 72 262 163 156 4 112 20 74 177 14 140 91 85 159 243 19 211 110 237 2 114 67 248 82 241 104 88 126 150 210 247 170 225 157 90 230 262 80 54 162 104 39 86 71 78 147 28 6 216 41 35 75 97 19 154 172 59 267 185 135 77 95 244 71 267 45 186 270 144 144 110 48 13 228 75 229 70 75 40 172 189 48 153 177 154 89 170 36 259 113 147 243 68 160 189 97 102 256 14 8 131 164 19 162 161 158 142 14 197 29 141 11 90 173 52 115 202 43 131 198 81 106 218 39 169 173 192 64 9 175 50 68 28 138 176 234 84 156 227 72 213 214 77 144 193 150 127 145 56 217 176 102 124 235 87 263 83 161 109 102 116 65 201 180 64 149 215 129 200 128 8 123 266 133 79 142 146 248 222 9 183 220 226 20 157 7 128 148 163 73 265 270 12 93 8 180 204 98 22 261 28 89 227 155 224 56 85 125 181 256 154 229 210 115 119 32 108 190 100 209 112 103 176 19 22 121 79 10 95 55 82 109 53 167 258 69 80 194 202 183 171 5 213 25 88 258 201 131 115 70 83 29 58 67 165 71 127 96 107 138 44 2 163 16 55 33 160 246 35 67 108 133 162 153 260 165 203 178 17 247 38 174 55 222 58 132 27 86 211 27 226 160 106 86 260 248 33 20 25 228 207 8 263 215 212 30 242 16 195 254 239 106 135 28 55 165 120 167 175 239 238 186 130 195 65 250 220 143 9 43 271 147 160 57 137 181 116 114 150 78 196 249 85 76 232 177 22 129 68 168 87 74 94 3 26 174 104 171 137 264 218 228 158 59 184 83 21 69 23 256 146 59 52 32 100 20 214 126 93 10 46 106 3 249 134 25 39 37 122 271 15 109 136 269 100 258 61 182 36 119 164 68 111 240 18 242 156 144 61 99 206 96 156 87 123 134 82 158 2 246 118 169 222 141 143 141 94 192 15 60 96 190 149 158 191 235 4 161 241 153 37 205 10 38 117 117 166 206 13 145 245 115 62 94 52 66 253 236 271 7 211 159 5 81 246 167 118 29 1 62 11 41 224 245 255 102 173 3 166 123 183 31 56 134 165 260 116 254 81 ^'}},
+ {OUT=>'022B7ADA472FB7A9DA9219621C9C5F563D3792F6'}],
+ ['202', {IN=> {f=> '583 1 157 50 71 225 21 167 133 217 42 47 203 89 183 131 28 193 65 116 122 42 236 7 268 93 242 201 89 138 229 125 238 97 117 75 55 267 230 33 250 50 111 245 213 127 153 45 99 162 121 134 125 54 175 197 259 166 166 126 106 188 53 33 205 148 208 16 70 128 106 233 130 210 160 17 207 63 57 97 157 194 247 128 250 135 132 165 29 16 155 50 26 49 118 37 165 218 94 60 234 137 47 14 110 103 221 191 195 70 43 184 39 40 47 59 12 6 176 60 194 117 30 153 90 1 164 76 3 124 101 261 166 36 28 9 143 196 32 153 135 177 67 31 245 123 49 248 135 262 263 126 61 12 51 78 62 149 260 29 101 77 244 116 212 120 42 92 105 91 138 27 141 52 260 74 3 79 199 84 211 68 128 61 57 227 255 17 18 259 251 187 46 196 77 55 38 132 210 205 193 110 18 25 271 105 181 216 179 112 252 50 255 147 116 82 22 219 47 248 265 86 86 171 93 13 103 266 93 98 25 186 183 86 126 16 110 148 123 94 150 38 217 132 125 9 273 20 30 198 266 178 119 219 2 72 88 131 118 172 145 26 134 40 132 80 107 96 65 161 24 44 191 150 168 41 229 170 140 99 72 43 54 215 42 2 27 186 228 163 29 146 253 147 71 180 119 264 178 249 43 99 117 219 231 170 185 1 249 272 197 214 264 263 171 237 189 6 221 236 97 72 173 152 38 87 34 28 238 241 19 77 10 136 229 255 62 194 162 206 56 45 144 64 24 89 93 53 123 9 228 118 127 243 24 4 72 133 33 120 127 113 200 181 27 101 32 68 213 257 251 43 144 19 122 186 138 184 223 61 142 149 175 107 6 261 81 114 207 193 155 95 202 226 73 180 164 166 81 204 11 98 65 206 101 221 146 19 167 88 41 139 92 235 189 235 45 59 142 104 273 105 51 118 82 67 121 49 203 233 85 34 257 62 64 64 109 11 188 143 111 11 58 45 14 240 201 44 236 52 170 270 197 169 88 86 41 269 190 58 234 92 145 111 155 135 222 243 208 200 266 48 21 122 231 40 87 178 204 141 196 162 251 232 222 99 32 23 37 80 22 174 145 71 36 217 87 223 106 44 151 130 250 180 34 68 258 159 154 272 112 18 70 173 8 136 85 79 159 239 19 207 108 233 112 63 246 76 237 104 84 126 146 208 245 168 225 151 90 230 262 74 48 156 102 39 80 67 76 147 26 4 216 35 35 75 95 13 148 168 270 53 267 185 131 73 95 242 71 265 41 184 268 138 144 104 44 7 228 73 225 66 69 36 272 ^'}},
+ {OUT=>'7F1DE4ECA20362DA624653D225A5B3F7964A9FF2'}],
+ ['203', {IN=> {f=> '588 0 181 44 149 173 150 77 158 36 255 101 135 239 60 148 185 85 94 252 6 4 131 152 15 162 161 150 142 14 193 21 141 3 78 169 44 107 198 31 119 198 73 94 210 31 161 173 192 52 1 163 46 64 20 130 164 226 72 148 227 60 213 210 73 136 185 150 119 133 48 213 168 98 124 227 83 263 79 157 109 90 104 61 201 168 56 149 215 125 196 116 272 111 262 133 67 138 142 248 218 9 183 212 222 8 153 3 120 144 163 65 265 270 4 89 8 172 204 94 18 257 16 89 219 147 216 52 85 113 177 256 154 225 210 115 111 28 108 186 96 209 104 103 176 11 14 109 71 10 87 51 74 105 49 159 258 69 72 190 202 179 171 1 205 21 76 254 197 127 111 70 83 29 54 67 157 67 115 92 103 134 36 2 151 4 47 33 160 246 27 55 96 125 154 141 260 153 195 170 13 247 38 170 55 222 50 128 15 78 211 19 226 156 98 82 252 240 29 12 25 224 199 259 207 212 30 234 8 195 254 239 102 123 28 43 161 108 167 171 235 230 178 118 187 65 242 220 135 5 35 267 143 152 57 137 173 108 102 146 78 188 245 81 72 232 177 22 129 68 168 75 74 82 275 14 174 96 167 129 260 218 220 158 55 180 75 9 57 11 248 134 59 52 20 88 20 214 114 81 264 6 46 106 271 249 122 17 35 33 118 271 15 97 136 269 100 250 49 182 32 107 156 56 107 240 6 238 156 140 57 95 198 96 144 79 115 134 78 146 270 238 114 165 214 137 131 133 90 188 11 56 84 190 137 154 183 235 272 153 237 145 25 205 274 26 109 113 154 206 9 141 237 103 50 86 40 66 253 228 263 271 207 147 5 77 242 155 110 17 269 58 275 37 224 241 251 102 165 3 162 119 175 23 56 126 165 256 112 250 91 157 44 65 223 19 161 131 217 40 43 203 83 179 129 26 193 63 116 122 36 236 7 268 89 242 197 85 136 227 125 238 91 115 69 53 265 228 29 246 50 105 241 209 127 153 45 95 156 121 132 121 48 171 193 255 166 160 120 102 188 53 31 203 148 204 10 68 126 100 231 124 208 158 13 205 63 51 97 155 194 243 124 250 133 132 163 23 14 151 46 22 45 118 37 159 216 94 60 232 135 47 10 110 101 219 189 191 64 43 180 33 34 45 53 12 2 174 54 192 117 26 151 88 273 164 76 273 122 101 261 164 34 22 3 143 194 32 149 131 175 65 31 245 123 47 244 135 258 261 122 59 10 45 76 62 147 258 27 97 71 244 112 208 116 38 86 105 91 134 270 27 139 46 256 70 275 79 199 160 ^'}},
+ {OUT=>'CA0F2B1BFB4469C11ED006A994734F0F2F5EFD17'}],
+ ['204', {IN=> {f=> '594 0 207 56 128 53 49 219 251 17 6 259 247 187 38 188 73 47 26 128 202 197 189 102 18 21 263 97 173 212 179 100 252 46 255 139 104 82 14 211 35 244 257 74 82 163 81 5 95 258 89 86 13 182 179 86 122 16 106 140 119 86 142 34 209 120 121 1 265 12 18 190 266 170 119 215 272 64 80 119 106 160 137 26 122 36 124 80 99 88 57 157 24 44 191 146 156 29 221 166 140 99 68 39 54 207 42 276 23 178 220 151 21 134 245 143 63 180 115 256 174 241 35 95 109 219 231 162 181 1 245 272 193 210 264 255 159 237 185 272 213 228 89 72 161 152 30 87 22 20 234 241 15 77 6 124 229 247 58 186 158 202 48 41 132 52 20 85 93 45 111 5 224 110 119 235 12 4 60 121 21 120 115 113 192 181 15 97 24 64 209 249 251 31 136 11 118 186 138 184 223 61 130 137 175 107 6 253 81 114 207 185 143 83 198 218 73 176 156 158 73 196 11 98 53 198 89 221 146 7 159 88 37 139 84 227 189 231 33 51 134 96 273 93 51 114 78 55 113 49 199 233 77 26 257 54 64 60 101 3 180 135 111 277 58 37 10 232 197 40 232 48 170 262 197 169 84 78 41 261 182 50 234 92 145 107 155 123 214 243 208 200 262 48 21 114 227 40 83 178 200 133 196 154 243 228 218 87 28 23 29 72 18 170 133 67 24 213 79 219 102 32 151 130 246 172 34 60 250 151 150 264 112 14 62 165 274 128 73 67 159 231 19 199 104 225 274 108 55 242 64 229 104 76 126 138 204 241 164 225 139 90 230 262 62 36 144 98 39 68 59 72 147 22 216 23 35 75 91 1 136 160 266 41 267 185 123 65 95 238 71 261 33 180 264 126 144 92 36 273 228 69 217 58 57 28 172 177 42 147 171 148 71 152 36 253 95 129 237 56 142 183 79 90 250 2 2 131 146 13 162 161 146 142 14 191 17 141 277 72 167 40 103 196 25 113 198 69 88 206 27 157 173 192 46 275 157 44 62 16 126 158 222 66 144 227 54 213 208 71 132 181 150 115 127 44 211 164 96 124 223 81 263 77 155 109 84 98 59 201 162 52 149 215 123 194 110 268 105 260 133 61 136 140 248 216 9 183 208 220 2 151 1 116 142 163 61 265 270 87 8 168 204 92 16 255 10 89 215 143 212 50 85 107 175 256 154 223 210 115 107 26 108 184 94 209 100 103 176 7 10 103 67 10 83 49 70 103 47 155 258 69 68 188 202 177 171 277 201 19 70 252 195 125 109 70 83 29 52 67 153 65 109 90 101 132 32 2 145 276 43 33 160 246 23 259 ^'}},
+ {OUT=>'833D63F5C2EA0CD43EC15F2B9DD97FF12B030479'}],
+ ['205', {IN=> {f=> '600 1 87 119 148 132 260 144 189 164 10 247 38 167 55 222 44 125 6 72 211 13 226 153 92 79 246 234 26 6 25 221 193 273 256 201 212 30 228 2 195 254 239 99 114 28 34 158 99 167 168 232 224 172 109 181 65 236 220 129 2 29 264 140 146 57 137 167 102 93 143 78 182 242 78 69 232 177 22 129 68 168 66 74 73 275 5 174 90 164 123 257 218 214 158 52 177 69 48 2 242 125 59 52 11 79 20 214 105 72 258 3 46 106 268 249 113 11 32 30 115 271 15 88 136 269 100 244 40 182 29 98 150 47 104 240 276 235 156 137 54 92 192 96 135 73 109 134 75 137 267 232 111 162 208 134 122 127 87 185 8 53 75 190 128 151 177 235 269 147 234 139 16 205 268 17 103 110 145 206 6 138 231 94 41 80 31 66 253 222 257 265 204 138 5 74 239 146 104 8 266 55 269 34 224 238 248 102 159 3 159 116 169 17 56 120 165 253 109 247 85 157 35 56 220 16 152 128 217 37 37 203 74 173 126 23 193 60 116 122 27 236 7 268 83 242 191 79 133 224 125 238 82 112 60 50 262 225 23 240 50 96 235 203 127 153 45 89 147 121 129 115 39 165 187 249 166 151 111 96 188 53 28 200 148 198 1 65 123 91 228 115 205 155 7 202 63 42 97 152 194 237 118 250 130 132 160 14 11 145 40 16 39 118 37 150 213 94 60 229 132 47 4 110 98 216 186 185 55 43 174 24 25 42 44 12 275 171 45 189 117 20 148 85 270 164 76 267 119 101 261 161 31 13 273 143 191 32 143 125 172 62 31 245 123 44 238 135 252 258 116 56 7 36 73 62 144 255 24 91 62 244 106 202 110 32 77 105 91 128 264 27 136 37 250 64 272 79 199 84 206 53 128 51 47 217 250 17 3 259 246 187 36 186 72 45 23 127 200 195 188 100 18 20 261 95 171 211 179 97 252 45 255 137 101 82 12 209 32 243 255 71 81 161 78 3 93 256 88 83 10 181 178 86 121 16 105 138 118 84 140 33 207 117 120 278 263 10 15 188 266 168 119 214 271 62 78 116 103 157 135 26 119 35 122 80 97 86 55 156 24 44 191 145 153 26 219 165 140 99 67 38 54 205 42 276 22 176 218 148 19 131 243 142 61 180 114 254 173 239 33 94 107 219 231 160 180 1 244 272 192 209 264 253 156 237 184 270 211 226 87 72 158 152 28 87 19 18 233 241 14 77 5 121 229 245 57 184 157 201 46 40 129 49 19 84 93 43 108 4 223 108 117 233 9 4 57 118 18 120 112 113 190 181 12 96 22 63 208 247 251 28 134 9 117 186 138 184 223 61 127 216 ^'}},
+ {OUT=>'14FD356190416C00592B86FF7CA50B622F85593A'}],
+ ['206', {IN=> {f=> '590 1 175 107 6 247 81 114 207 179 134 74 195 212 73 173 150 152 67 190 11 98 44 192 80 221 146 279 153 88 34 139 78 221 189 228 24 45 128 90 273 84 51 111 75 46 107 49 196 233 71 20 257 48 64 57 95 278 174 129 111 271 58 31 7 226 194 37 229 45 170 256 197 169 81 72 41 255 176 44 234 92 145 104 155 114 208 243 208 200 259 48 21 108 224 40 80 178 197 127 196 148 237 225 215 78 25 23 23 66 15 167 124 64 15 210 73 216 99 23 151 130 243 166 34 54 244 145 147 258 112 11 56 159 268 122 64 58 159 225 19 193 101 219 274 105 49 239 55 223 104 70 126 132 201 238 161 225 130 90 230 262 53 27 135 95 39 59 53 69 147 19 278 216 14 35 75 88 273 127 154 263 32 267 185 117 59 95 235 71 258 27 177 261 117 144 83 30 267 228 66 211 52 48 22 172 171 39 144 168 145 62 143 36 250 86 120 234 50 133 180 70 84 247 277 280 131 137 10 162 161 140 142 14 188 11 141 274 63 164 34 97 193 16 104 198 63 79 200 21 151 173 192 37 272 148 41 59 10 120 149 216 57 138 227 45 213 205 68 126 175 150 109 118 38 208 158 93 124 217 78 263 74 152 109 75 89 56 201 153 46 149 215 120 191 101 262 96 257 133 52 133 137 248 213 9 183 202 217 274 148 279 110 139 163 55 265 270 275 84 8 162 204 89 13 252 1 89 209 137 206 47 85 98 172 256 154 220 210 115 101 23 108 181 91 209 94 103 176 1 4 94 61 10 77 46 64 100 44 149 258 69 62 185 202 174 171 277 195 16 61 249 192 122 106 70 83 29 49 67 147 62 100 87 98 129 26 2 136 270 37 33 160 246 17 40 81 115 144 126 260 138 185 160 8 247 38 165 55 222 40 123 68 211 9 226 151 88 77 242 230 24 2 25 219 189 271 254 197 212 30 224 279 195 254 239 97 108 28 28 156 93 167 166 230 220 168 103 177 65 232 220 125 25 262 138 142 57 137 163 98 87 141 78 178 240 76 67 232 177 22 129 68 168 60 74 67 275 280 174 86 162 119 255 218 210 158 50 175 65 275 42 277 238 119 59 52 5 73 20 214 99 66 254 1 46 106 266 249 107 7 30 28 113 271 15 82 136 269 100 240 34 182 27 92 146 41 102 240 272 233 156 135 52 90 188 96 129 69 105 134 73 131 265 228 109 160 204 132 116 123 85 183 6 51 69 190 122 149 173 235 267 143 232 135 10 205 264 11 99 108 139 206 4 136 227 88 35 76 25 66 253 218 253 261 202 132 5 72 237 140 203 ^'}},
+ {OUT=>'4AB6B57EDDEF1CE935622F935C1619AE7C1667D6'}],
+ ['207', {IN=> {f=> '620 0 279 262 51 261 30 224 234 244 102 151 3 155 112 161 9 56 112 165 249 105 243 77 157 23 44 216 12 140 124 217 33 29 203 62 165 122 19 193 56 116 122 15 236 7 268 75 242 183 71 129 220 125 238 70 108 48 46 258 221 15 232 50 84 227 195 127 153 45 81 135 121 125 107 27 157 179 241 166 139 99 88 188 53 24 196 148 190 272 61 119 79 224 103 201 151 282 198 63 30 97 148 194 229 110 250 126 132 156 2 7 137 32 8 31 118 37 138 209 94 60 225 128 47 279 110 94 212 182 177 43 43 166 12 13 38 32 12 271 167 33 185 117 12 144 81 266 164 76 259 115 101 261 157 27 1 265 143 187 32 135 117 168 58 31 245 123 40 230 135 244 254 108 52 3 24 69 62 140 251 20 83 50 244 98 194 102 24 65 105 91 120 256 27 132 25 242 56 268 79 199 84 202 41 128 43 39 209 246 17 274 259 242 187 28 178 68 37 11 123 192 187 184 92 18 16 253 87 163 207 179 85 252 41 255 129 89 82 4 201 20 239 247 59 77 153 66 278 85 248 84 71 281 177 174 86 117 16 101 130 114 76 132 29 199 105 116 274 255 2 3 180 266 160 119 210 267 54 70 104 91 145 127 26 107 31 114 80 89 78 47 152 24 44 191 141 141 14 211 161 140 99 63 34 54 197 42 276 18 168 210 136 11 119 235 138 53 180 110 246 169 231 25 90 99 219 231 152 176 1 240 272 188 205 264 245 144 237 180 262 203 218 79 72 146 152 20 87 7 10 229 241 10 77 1 109 229 237 53 176 153 197 38 36 117 37 15 80 93 35 96 219 100 109 225 280 4 45 106 6 120 100 113 182 181 92 14 59 204 239 251 16 126 1 113 186 138 184 223 61 115 122 175 107 6 243 81 114 207 175 128 68 193 208 73 171 146 148 63 186 11 98 38 188 74 221 146 275 149 88 32 139 74 217 189 226 18 41 124 86 273 78 51 109 73 40 103 49 194 233 67 16 257 44 64 55 91 276 170 125 111 267 58 27 5 222 192 35 227 43 170 252 197 169 79 68 41 251 172 40 234 92 145 102 155 108 204 243 208 200 257 48 21 104 222 40 78 178 195 123 196 144 233 223 213 72 23 23 19 62 13 165 118 62 9 208 69 214 97 17 151 130 241 162 34 50 240 141 145 254 112 9 52 155 264 118 58 52 159 221 19 189 99 215 274 103 45 237 49 219 104 66 126 128 199 236 159 225 124 90 230 262 47 21 129 93 39 53 49 67 147 17 278 216 8 35 75 86 269 121 150 261 26 267 185 113 55 95 233 71 256 23 175 259 111 144 77 26 263 228 64 207 48 42 18 172 167 37 142 166 143 56 137 36 248 80 114 232 46 127 257 ^'}},
+ {OUT=>'B456A6A968ACD66CAA974F96A9A916E700AA3C5D'}],
+ ['208', {IN=> {f=> '605 1 58 76 243 273 280 131 125 6 162 161 132 142 14 184 3 141 270 51 160 26 89 189 4 92 198 55 67 192 13 143 173 192 25 268 136 37 55 2 112 137 208 45 130 227 33 213 201 64 118 167 150 101 106 30 204 150 89 124 209 74 263 70 148 109 63 77 52 201 141 38 149 215 116 187 89 254 84 253 133 40 129 133 248 209 9 183 194 213 266 144 279 102 135 163 47 265 270 271 80 8 154 204 85 9 248 274 89 201 129 198 43 85 86 168 256 154 216 210 115 93 19 108 177 87 209 86 103 176 278 281 82 53 10 69 42 56 96 40 141 258 69 54 181 202 170 171 277 187 12 49 245 188 118 102 70 83 29 45 67 139 58 88 83 94 125 18 2 124 262 29 33 160 246 9 28 69 107 136 114 260 126 177 152 4 247 38 161 55 222 32 119 273 60 211 1 226 147 80 73 234 222 20 279 25 215 181 267 250 189 212 30 216 275 195 254 239 93 96 28 16 152 81 167 162 226 212 160 91 169 65 224 220 117 281 17 258 134 134 57 137 155 90 75 137 78 170 236 72 63 232 177 22 129 68 168 48 74 55 275 272 174 78 158 111 251 218 202 158 46 171 57 267 30 269 230 107 59 52 278 61 20 214 87 54 246 282 46 106 262 249 95 284 26 24 109 271 15 70 136 269 100 232 22 182 23 80 138 29 98 240 264 229 156 131 48 86 180 96 117 61 97 134 69 119 261 220 105 156 196 128 104 115 81 179 2 47 57 190 110 145 165 235 263 135 228 127 283 205 256 284 91 104 127 206 132 219 76 23 68 13 66 253 210 245 253 198 120 5 68 233 128 92 275 260 49 257 28 224 232 242 102 147 3 153 110 157 5 56 108 165 247 103 241 73 157 17 38 214 10 134 122 217 31 25 203 56 161 120 17 193 54 116 122 9 236 7 268 71 242 179 67 127 218 125 238 64 106 42 44 256 219 11 228 50 78 223 191 127 153 45 77 129 121 123 103 21 153 175 237 166 133 93 84 188 53 22 194 148 186 268 59 117 73 222 97 199 149 280 196 63 24 97 146 194 225 106 250 124 132 154 281 5 133 28 4 27 118 37 132 207 94 60 223 126 47 277 110 92 210 180 173 37 43 162 6 7 36 26 12 269 165 27 183 117 8 142 79 264 164 76 255 113 101 261 155 25 280 261 143 185 32 131 113 166 56 31 245 123 38 226 135 240 252 104 50 1 18 67 62 138 249 18 79 44 244 94 190 98 20 59 105 91 116 252 27 130 19 238 52 266 79 199 84 200 35 128 39 35 205 244 17 270 259 240 187 24 174 66 33 5 121 188 183 182 88 18 14 249 83 159 205 179 79 252 186 ^'}},
+ {OUT=>'FD1C257FE046B2A27E2F0CD55ED2DECA845F01D7'}],
+ ['209', {IN=> {f=> '615 0 255 121 77 82 283 193 8 235 239 47 73 145 54 274 77 240 80 59 273 173 170 86 113 16 97 122 110 68 124 25 191 93 112 270 247 281 278 172 266 152 119 206 263 46 62 92 79 133 119 26 95 27 106 80 81 70 39 148 24 44 191 137 129 2 203 157 140 99 59 30 54 189 42 276 14 160 202 124 3 107 227 134 45 180 106 238 165 223 17 86 91 219 231 144 172 1 236 272 184 201 264 237 132 237 176 254 195 210 71 72 134 152 12 87 282 2 225 241 6 77 284 97 229 229 49 168 149 193 30 32 105 25 11 76 93 27 84 283 215 92 101 217 272 4 33 94 281 120 88 113 174 181 275 88 6 55 200 231 251 4 118 280 109 186 138 184 223 61 103 110 175 107 6 235 81 114 207 167 116 56 189 200 73 167 138 140 55 178 11 98 26 180 62 221 146 267 141 88 28 139 66 209 189 222 6 33 116 78 273 66 51 105 69 28 95 49 190 233 59 8 257 36 64 51 83 272 162 117 111 259 58 19 1 214 188 31 223 39 170 244 197 169 75 60 41 243 164 32 234 92 145 98 155 96 196 243 208 200 253 48 21 96 218 40 74 178 191 115 196 136 225 219 209 60 19 23 11 54 9 161 106 58 284 204 61 210 93 5 151 130 237 154 34 42 232 133 141 246 112 5 44 147 256 110 46 40 159 213 19 181 95 207 274 99 37 233 37 211 104 58 126 120 195 232 155 225 112 90 230 262 35 9 117 89 39 41 41 63 147 13 278 216 283 35 75 82 261 109 142 257 14 267 185 105 47 95 229 71 252 15 171 255 99 144 65 18 255 228 60 199 40 30 10 172 159 33 138 162 139 44 125 36 244 68 102 228 38 115 174 52 72 241 271 280 131 119 4 162 161 128 142 14 182 286 141 268 45 158 22 85 187 285 86 198 51 61 188 9 139 173 192 19 266 130 35 53 285 108 131 204 39 126 227 27 213 199 62 114 163 150 97 100 26 202 146 87 124 205 72 263 68 146 109 57 71 50 201 135 34 149 215 114 185 83 250 78 251 133 34 127 131 248 207 9 183 190 211 262 142 279 98 133 163 43 265 270 269 78 8 150 204 83 7 246 270 89 197 125 194 41 85 80 166 256 154 214 210 115 89 17 108 175 85 209 82 103 176 276 279 76 49 10 65 40 52 94 38 137 258 69 50 179 202 168 171 277 183 10 43 243 186 116 100 70 83 29 43 67 135 56 82 81 92 123 14 2 118 258 25 33 160 246 5 22 63 103 132 108 260 120 173 148 2 247 38 159 55 222 28 117 269 56 211 284 226 145 76 71 230 218 18 277 25 213 177 265 248 185 212 30 212 273 195 254 239 91 90 28 10 150 75 167 160 224 175 ^'}},
+ {OUT=>'66E0D01780F1063E2929EAAD74826BC64060E38C'}],
+ ['210', {IN=> {f=> '613 0 152 79 161 65 216 220 109 281 9 254 130 126 57 137 147 82 63 133 78 162 232 68 59 232 177 22 129 68 168 36 74 43 275 264 174 70 154 103 247 218 194 158 42 167 49 259 18 261 222 95 59 52 270 49 20 214 75 42 238 282 46 106 258 249 83 280 22 20 105 271 15 58 136 269 100 224 10 182 19 68 130 17 94 240 256 225 156 127 44 82 172 96 105 53 89 134 65 107 257 212 101 152 188 124 92 107 77 175 287 43 45 190 98 141 157 235 259 127 224 119 275 205 248 276 83 100 115 206 285 128 211 64 11 60 1 66 253 202 237 245 194 108 5 64 229 116 84 267 256 45 249 24 224 228 238 102 139 3 149 106 149 286 56 100 165 243 99 237 65 157 5 26 210 6 122 118 217 27 17 203 44 153 116 13 193 50 116 122 286 236 7 268 63 242 171 59 123 214 125 238 52 102 30 40 252 215 3 220 50 66 215 183 127 153 45 69 117 121 119 95 9 145 167 229 166 121 81 76 188 53 18 190 148 178 260 55 113 61 218 85 195 145 276 192 63 12 97 142 194 217 98 250 120 132 150 273 1 125 20 285 19 118 37 120 203 94 60 219 122 47 273 110 88 206 176 165 25 43 154 283 284 32 14 12 265 161 15 179 117 138 75 260 164 76 247 109 101 261 151 21 272 253 143 181 32 123 105 162 52 31 245 123 34 218 135 232 248 96 46 286 6 63 62 134 245 14 71 32 244 86 182 90 12 47 105 91 108 244 27 126 7 230 44 262 79 199 84 196 23 128 31 27 197 240 17 262 259 236 187 16 166 62 25 282 117 180 175 178 80 18 10 241 75 151 201 179 67 252 35 255 117 71 82 281 189 2 233 235 41 71 141 48 272 73 236 78 53 269 171 168 86 111 16 95 118 108 64 120 23 187 87 110 268 243 279 274 168 266 148 119 204 261 42 58 86 73 127 115 26 89 25 102 80 77 66 35 146 24 44 191 135 123 285 199 155 140 99 57 28 54 185 42 276 12 156 198 118 288 101 223 132 41 180 104 234 163 219 13 84 87 219 231 140 170 1 234 272 182 199 264 233 126 237 174 250 191 206 67 72 128 152 8 87 278 287 223 241 4 77 284 91 229 225 47 164 147 191 26 30 99 19 9 74 93 23 78 283 213 88 97 213 268 4 27 88 277 120 82 113 170 181 271 86 2 53 198 227 251 287 114 278 107 186 138 184 223 61 97 104 175 107 6 231 81 114 207 163 110 50 187 196 73 165 134 136 51 174 11 98 20 176 56 221 146 263 137 88 26 139 62 205 189 220 29 112 74 273 60 51 103 67 22 91 49 188 233 55 4 257 32 64 49 79 270 158 113 111 255 58 15 288 210 213 ^'}},
+ {OUT=>'A8478DF406F179FD4EF97F4574D7F99EA1CE9EB8'}],
+ ['211', {IN=> {f=> '624 1 28 220 36 170 238 197 169 72 54 41 237 158 26 234 92 145 95 155 87 190 243 208 200 250 48 21 90 215 40 71 178 188 109 196 130 219 216 206 51 16 23 5 48 6 158 97 55 278 201 55 207 90 286 151 130 234 148 34 36 226 127 138 240 112 2 38 141 250 104 37 31 159 207 19 175 92 201 274 96 31 230 28 205 104 52 126 114 192 229 152 225 103 90 230 262 26 108 86 39 32 35 60 147 10 278 216 277 35 75 79 255 100 136 254 5 267 185 99 41 95 226 71 249 9 168 252 90 144 56 12 249 228 57 193 34 21 4 172 153 30 135 159 136 35 116 36 241 59 93 225 32 106 171 43 66 238 268 280 131 110 1 162 161 122 142 14 179 283 141 265 36 155 16 79 184 279 77 198 45 52 182 3 133 173 192 10 263 121 32 50 282 102 122 198 30 120 227 18 213 196 59 108 157 150 91 91 20 199 140 84 124 199 69 263 65 143 109 48 62 47 201 126 28 149 215 111 182 74 244 69 248 133 25 124 128 248 204 9 183 184 208 256 139 279 92 130 163 37 265 270 266 75 8 144 204 80 4 243 264 89 191 119 188 38 85 71 163 256 154 211 210 115 83 14 108 172 82 209 76 103 176 273 276 67 43 10 59 37 46 91 35 131 258 69 44 176 202 165 171 277 177 7 34 240 183 113 97 70 83 29 40 67 129 53 73 78 89 120 8 2 109 252 19 33 160 246 289 13 54 97 126 99 260 111 167 142 289 247 38 156 55 222 22 114 263 50 211 281 226 142 70 68 224 212 15 274 25 210 171 262 245 179 212 30 206 270 195 254 239 88 81 28 1 147 66 167 157 221 202 150 76 159 65 214 220 107 281 7 253 129 124 57 137 145 80 60 132 78 160 231 67 58 232 177 22 129 68 168 33 74 40 275 262 174 68 153 101 246 218 192 158 41 166 47 257 15 259 220 92 59 52 268 46 20 214 72 39 236 282 46 106 257 249 80 279 21 19 104 271 15 55 136 269 100 222 7 182 18 65 128 14 93 240 254 224 156 126 43 81 170 96 102 51 87 134 64 104 256 210 100 151 186 123 89 105 76 174 287 42 42 190 95 140 155 235 258 125 223 117 273 205 246 274 81 99 112 206 285 127 209 61 8 58 288 66 253 200 235 243 193 105 5 63 228 113 82 265 255 44 247 23 224 227 237 102 137 3 148 105 147 285 56 98 165 242 98 236 63 157 2 23 209 5 119 117 217 26 15 203 41 151 115 12 193 49 116 122 284 236 7 268 61 242 169 57 122 213 125 238 49 101 27 39 251 214 1 218 50 63 213 181 127 153 45 67 114 121 118 93 6 143 165 227 166 118 78 74 188 53 17 189 148 176 258 54 112 58 217 82 194 144 275 191 141 ^'}},
+ {OUT=>'248E58CF09A372114FC2F93B09C5FC14F3D0059E'}],
+ ['212', {IN=> {f=> '628 1 3 97 139 194 211 92 250 117 132 147 267 290 119 14 282 13 118 37 111 200 94 60 216 119 47 270 110 85 203 173 159 16 43 148 277 278 29 5 12 262 158 6 176 117 286 135 72 257 164 76 241 106 101 261 148 18 266 247 143 178 32 117 99 159 49 31 245 123 31 212 135 226 245 90 43 286 289 60 62 131 242 11 65 23 244 80 176 84 6 38 105 91 102 238 27 123 290 224 38 259 79 199 84 193 14 128 25 21 191 237 17 256 259 233 187 10 160 59 19 276 114 174 169 175 74 18 7 235 69 145 198 179 58 252 32 255 111 62 82 278 183 285 230 229 32 68 135 39 269 67 230 75 44 263 168 165 86 108 16 92 112 105 58 114 20 181 78 107 265 237 276 268 162 266 142 119 201 258 36 52 77 64 118 109 26 80 22 96 80 71 60 29 143 24 44 191 132 114 279 193 152 140 99 54 25 54 179 42 276 9 150 192 109 285 92 217 129 35 180 101 228 160 213 7 81 81 219 231 134 167 1 231 272 179 196 264 227 117 237 171 244 185 200 61 72 119 152 2 87 272 284 220 241 1 77 284 82 229 219 44 158 144 188 20 27 90 10 6 71 93 17 69 283 210 82 91 207 262 4 18 79 271 120 73 113 164 181 265 83 288 50 195 221 251 281 108 275 104 186 138 184 223 61 88 95 175 107 6 225 81 114 207 157 101 41 184 190 73 162 128 130 45 168 11 98 11 170 47 221 146 257 131 88 23 139 56 199 189 217 283 23 106 68 273 51 51 100 64 13 85 49 185 233 49 290 257 26 64 46 73 267 152 107 111 249 58 9 288 204 183 26 218 34 170 234 197 169 70 50 41 233 154 22 234 92 145 93 155 81 186 243 208 200 248 48 21 86 213 40 69 178 186 105 196 126 215 214 204 45 14 23 1 44 4 156 91 53 274 199 51 205 88 282 151 130 232 144 34 32 222 123 136 236 112 34 137 246 100 31 25 159 203 19 171 90 197 274 94 27 228 22 201 104 48 126 110 190 227 150 225 97 90 230 262 20 286 102 84 39 26 31 58 147 8 278 216 273 35 75 77 251 94 132 252 291 267 185 95 37 95 224 71 247 5 166 250 84 144 50 8 245 228 55 189 30 15 172 149 28 133 157 134 29 110 36 239 53 87 223 28 100 169 37 62 236 266 280 131 104 291 162 161 118 142 14 177 281 141 263 30 153 12 75 182 275 71 198 41 46 178 291 129 173 192 4 261 115 30 48 280 98 116 194 24 116 227 12 213 194 57 104 153 150 87 85 16 197 136 82 124 195 67 263 63 141 109 42 56 45 201 120 24 149 215 109 180 68 240 63 246 133 19 122 126 248 202 9 183 180 206 252 137 279 88 128 163 33 265 270 264 73 8 140 204 78 2 241 76 ^'}},
+ {OUT=>'F15767DE91796A6816977EFA4FCED4B7FD9B8A57'}],
+ ['213', {IN=> {f=> '622 0 89 183 111 180 34 85 59 159 256 154 207 210 115 75 10 108 168 78 209 68 103 176 269 272 55 35 10 51 33 38 87 31 123 258 69 36 172 202 161 171 277 169 3 22 236 179 109 93 70 83 29 36 67 121 49 61 74 85 116 2 97 244 11 33 160 246 285 1 42 89 118 87 260 99 159 134 289 247 38 152 55 222 14 110 255 42 211 277 226 138 62 64 216 204 11 270 25 206 163 258 241 171 212 30 198 266 195 254 239 84 69 28 283 143 54 167 153 217 194 142 64 151 65 206 220 99 281 293 249 125 116 57 137 137 72 48 128 78 152 227 63 54 232 177 22 129 68 168 21 74 28 275 254 174 60 149 93 242 218 184 158 37 162 39 249 3 251 212 80 59 52 260 34 20 214 60 27 228 282 46 106 253 249 68 275 17 15 100 271 15 43 136 269 100 214 289 182 14 53 120 2 89 240 246 220 156 122 39 77 162 96 90 43 79 134 60 92 252 202 96 147 178 119 77 97 72 170 287 38 30 190 83 136 147 235 254 117 219 109 265 205 238 266 73 95 100 206 285 123 201 49 290 50 280 66 253 192 227 235 189 93 5 59 224 101 74 257 251 40 239 19 224 223 233 102 129 3 144 101 139 281 56 90 165 238 94 232 55 157 284 11 205 1 107 113 217 22 7 203 29 143 111 8 193 45 116 122 276 236 7 268 53 242 161 49 118 209 125 238 37 97 15 35 247 210 287 210 50 51 205 173 127 153 45 59 102 121 114 85 288 135 157 219 166 106 66 66 188 53 13 185 148 168 250 50 108 46 213 70 190 140 271 187 63 291 97 137 194 207 88 250 115 132 145 263 290 115 10 280 9 118 37 105 198 94 60 214 117 47 268 110 83 201 171 155 10 43 144 273 274 27 293 12 260 156 174 117 284 133 70 255 164 76 237 104 101 261 146 16 262 243 143 176 32 113 95 157 47 31 245 123 29 208 135 222 243 86 41 286 285 58 62 129 240 9 61 17 244 76 172 80 2 32 105 91 98 234 27 121 286 220 34 257 79 199 84 191 8 128 21 17 187 235 17 252 259 231 187 6 156 57 15 272 112 170 165 173 70 18 5 231 65 141 196 179 52 252 30 255 107 56 82 276 179 281 228 225 26 66 131 33 267 63 226 73 38 259 166 163 86 106 16 90 108 103 54 110 18 177 72 105 263 233 274 264 158 266 138 119 199 256 32 48 71 58 112 105 26 74 20 92 80 67 56 25 141 24 44 191 130 108 275 189 150 140 99 52 23 54 175 42 276 7 146 188 103 283 86 213 127 31 180 99 224 158 209 3 79 77 219 231 130 165 1 229 272 177 194 264 223 111 237 169 240 181 196 57 72 113 152 292 87 268 282 218 241 293 77 284 76 229 80 ^'}},
+ {OUT=>'36A6BC5E680E15675D9696338C88B36248BBBAF4'}],
+ ['214', {IN=> {f=> '635 1 40 150 140 184 12 23 78 294 2 67 93 9 57 283 206 74 83 199 254 4 6 67 263 120 61 113 156 181 257 79 284 46 191 213 251 273 100 271 100 186 138 184 223 61 76 83 175 107 6 217 81 114 207 149 89 29 180 182 73 158 120 122 37 160 11 98 295 162 35 221 146 249 123 88 19 139 48 191 189 213 275 15 98 60 273 39 51 96 60 1 77 49 181 233 41 286 257 18 64 42 65 263 144 99 111 241 58 1 288 196 179 22 214 30 170 226 197 169 66 42 41 225 146 14 234 92 145 89 155 69 178 243 208 200 244 48 21 78 209 40 65 178 182 97 196 118 207 210 200 33 10 23 289 36 152 79 49 266 195 43 201 84 274 151 130 228 136 34 24 214 115 132 228 112 292 26 129 238 92 19 13 159 195 19 163 86 189 274 90 19 224 10 193 104 40 126 102 186 223 146 225 85 90 230 262 8 278 90 80 39 14 23 54 147 4 278 216 265 35 75 73 243 82 124 248 283 267 185 87 29 95 220 71 243 293 162 246 72 144 38 237 228 51 181 22 3 288 172 141 24 129 153 130 17 98 36 235 41 75 219 20 88 165 25 54 232 262 280 131 92 291 162 161 110 142 14 173 277 141 259 18 149 4 67 178 267 59 198 33 34 170 287 121 173 192 288 257 103 26 44 276 90 104 186 12 108 227 213 190 53 96 145 150 79 73 8 193 128 78 124 187 63 263 59 137 109 30 44 41 201 108 16 149 215 105 176 56 232 51 242 133 7 118 122 248 198 9 183 172 202 244 133 279 80 124 163 25 265 270 260 69 8 132 204 74 294 237 252 89 179 107 176 32 85 53 157 256 154 205 210 115 71 8 108 166 76 209 64 103 176 267 270 49 31 10 47 31 34 85 29 119 258 69 32 170 202 159 171 277 165 1 16 234 177 107 91 70 83 29 34 67 117 47 55 72 83 114 292 2 91 240 7 33 160 246 283 291 36 85 114 81 260 93 155 130 289 247 38 150 55 222 10 108 251 38 211 275 226 136 58 62 212 200 9 268 25 204 159 256 239 167 212 30 194 264 195 254 239 82 63 28 279 141 48 167 151 215 190 138 58 147 65 202 220 95 281 291 247 123 112 57 137 133 68 42 126 78 148 225 61 52 232 177 22 129 68 168 15 74 22 275 250 174 56 147 89 240 218 180 158 35 160 35 245 293 247 208 74 59 52 256 28 20 214 54 21 224 282 46 106 251 249 62 273 15 13 98 271 15 37 136 269 100 210 285 182 12 47 116 292 87 240 242 218 156 120 37 75 158 96 84 39 75 134 58 86 250 198 94 145 174 117 71 93 70 168 287 36 24 190 77 134 143 235 252 113 217 105 261 205 234 262 69 93 94 206 285 121 197 43 286 46 276 66 253 188 223 231 187 87 5 57 222 95 285 ^'}},
+ {OUT=>'4DEA6251B2A6DF017A8093AB066EE3863A4EC369'}],
+ ['215', {IN=> {f=> '636 0 251 248 37 233 16 224 220 230 102 123 3 141 98 133 278 56 84 165 235 91 229 49 157 278 2 202 295 98 110 217 19 1 203 20 137 108 5 193 42 116 122 270 236 7 268 47 242 155 43 115 206 125 238 28 94 6 32 244 207 284 204 50 42 199 167 127 153 45 53 93 121 111 79 282 129 151 213 166 97 57 60 188 53 10 182 148 162 244 47 105 37 210 61 187 137 268 184 63 285 97 134 194 201 82 250 112 132 142 257 290 109 4 277 3 118 37 96 195 94 60 211 114 47 265 110 80 198 168 149 1 43 138 267 268 24 287 12 257 153 288 171 117 281 130 67 252 164 76 231 101 101 261 143 13 256 237 143 173 32 107 89 154 44 31 245 123 26 202 135 216 240 80 38 286 279 55 62 126 237 6 55 8 244 70 166 74 293 23 105 91 92 228 27 118 280 214 28 254 79 199 84 188 296 128 15 11 181 232 17 246 259 228 187 150 54 9 266 109 164 159 170 64 18 2 225 59 135 193 179 43 252 27 255 101 47 82 273 173 275 225 219 17 63 125 24 264 57 220 70 29 253 163 160 86 103 16 87 102 100 48 104 15 171 63 102 260 227 271 258 152 266 132 119 196 253 26 42 62 49 103 99 26 65 17 86 80 61 50 19 138 24 44 191 127 99 269 183 147 140 99 49 20 54 169 42 276 4 140 182 94 280 77 207 124 25 180 96 218 155 203 294 76 71 219 231 124 162 1 226 272 174 191 264 217 102 237 166 234 175 190 51 72 104 152 289 87 262 279 215 241 293 77 284 67 229 209 39 148 139 183 10 22 75 292 1 66 93 7 54 283 205 72 81 197 252 4 3 64 261 120 58 113 154 181 255 78 283 45 190 211 251 271 98 270 99 186 138 184 223 61 73 80 175 107 6 215 81 114 207 147 86 26 179 180 73 157 118 120 35 158 11 98 293 160 32 221 146 247 121 88 18 139 46 189 189 212 273 13 96 58 273 36 51 95 59 295 75 49 180 233 39 285 257 16 64 41 63 262 142 97 111 239 58 296 288 194 178 21 213 29 170 224 197 169 65 40 41 223 144 12 234 92 145 88 155 66 176 243 208 200 243 48 21 76 208 40 64 178 181 95 196 116 205 209 199 30 9 23 288 34 296 151 76 48 264 194 41 200 83 272 151 130 227 134 34 22 212 113 131 226 112 292 24 127 236 90 16 10 159 193 19 161 85 187 274 89 17 223 7 191 104 38 126 100 185 222 145 225 82 90 230 262 5 276 87 79 39 11 21 53 147 3 278 216 263 35 75 72 241 79 122 247 281 267 185 85 27 95 219 71 242 292 161 245 69 144 35 295 235 228 50 179 20 287 172 139 23 128 152 129 14 95 36 234 38 72 218 18 85 164 22 52 231 261 280 131 89 291 162 161 108 142 14 172 276 91 ^'}},
+ {OUT=>'D30E70E357D57E3D82CA554B8A3D58DFF528FA94'}],
+ ['216', {IN=> {f=> '635 1 256 9 146 297 61 175 261 50 198 27 25 164 284 115 173 192 282 254 94 23 41 273 84 95 180 3 102 227 290 213 187 50 90 139 150 73 64 2 190 122 75 124 181 60 263 56 134 109 21 35 38 201 99 10 149 215 102 173 47 226 42 239 133 297 115 119 248 195 9 183 166 199 238 130 279 74 121 163 19 265 270 257 66 8 126 204 71 294 234 246 89 173 101 170 29 85 44 154 256 154 202 210 115 65 5 108 163 73 209 58 103 176 264 267 40 25 10 41 28 28 82 26 113 258 69 26 167 202 156 171 277 159 297 7 231 174 104 88 70 83 29 31 67 111 44 46 69 80 111 289 2 82 234 1 33 160 246 280 285 27 79 108 72 260 84 149 124 289 247 38 147 55 222 4 105 245 32 211 272 226 133 52 59 206 194 6 265 25 201 153 253 236 161 212 30 188 261 195 254 239 79 54 28 273 138 39 167 148 212 184 132 49 141 65 196 220 89 281 288 244 120 106 57 137 127 62 33 123 78 142 222 58 49 232 177 22 129 68 168 6 74 13 275 244 174 50 144 83 237 218 174 158 32 157 29 239 287 241 202 65 59 52 250 19 20 214 45 12 218 282 46 106 248 249 53 270 12 10 95 271 15 28 136 269 100 204 279 182 9 38 110 286 84 240 236 215 156 117 34 72 152 96 75 33 69 134 55 77 247 192 91 142 168 114 62 87 67 165 287 33 15 190 68 131 137 235 249 107 214 99 255 205 228 256 63 90 85 206 285 118 191 34 280 40 270 66 253 182 217 225 184 78 5 54 219 86 64 247 246 35 229 14 224 218 228 102 119 3 139 96 129 276 56 80 165 233 89 227 45 157 274 295 200 295 92 108 217 17 296 203 14 133 106 3 193 40 116 122 266 236 7 268 43 242 151 39 113 204 125 238 22 92 30 242 205 282 200 50 36 195 163 127 153 45 49 87 121 109 75 278 125 147 209 166 91 51 56 188 53 8 180 148 158 240 45 103 31 208 55 185 135 266 182 63 281 97 132 194 197 78 250 110 132 140 253 290 105 275 298 118 37 90 193 94 60 209 112 47 263 110 78 196 166 145 294 43 134 263 264 22 283 12 255 151 284 169 117 279 128 65 250 164 76 227 99 101 261 141 11 252 233 143 171 32 103 85 152 42 31 245 123 24 198 135 212 238 76 36 286 275 53 62 124 235 4 51 2 244 66 162 70 291 17 105 91 88 224 27 116 276 210 24 252 79 199 84 186 292 128 11 7 177 230 17 242 259 226 187 295 146 52 5 262 107 160 155 168 60 18 221 55 131 191 179 37 252 25 255 97 41 82 271 169 271 223 215 11 61 121 18 262 53 216 68 23 249 161 158 86 101 16 85 98 98 44 100 13 167 57 100 258 223 269 254 148 266 128 119 194 251 22 38 56 43 275 ^'}},
+ {OUT=>'70CA84D827F7FD61446233F88CF2F990B0F3E2AA'}],
+ ['217', {IN=> {f=> '642 0 91 26 53 13 78 80 53 42 11 134 24 44 191 123 87 261 175 143 140 99 45 16 54 161 42 276 132 174 82 276 65 199 120 17 180 92 210 151 195 290 72 63 219 231 116 158 1 222 272 170 187 264 209 90 237 162 226 167 182 43 72 92 152 285 87 254 275 211 241 293 77 284 55 229 201 35 140 135 179 2 18 63 284 298 62 93 300 42 283 201 64 73 189 244 4 292 52 253 120 46 113 146 181 247 74 279 41 186 203 251 263 90 266 95 186 138 184 223 61 61 68 175 107 6 207 81 114 207 139 74 14 175 172 73 153 110 112 27 150 11 98 285 152 20 221 146 239 113 88 14 139 38 181 189 208 265 5 88 50 273 24 51 91 55 287 67 49 176 233 31 281 257 8 64 37 55 258 134 89 111 231 58 292 288 186 174 17 209 25 170 216 197 169 61 32 41 215 136 4 234 92 145 84 155 54 168 243 208 200 239 48 21 68 204 40 60 178 177 87 196 108 197 205 195 18 5 23 284 26 296 147 64 44 256 190 33 196 79 264 151 130 223 126 34 14 204 105 127 218 112 292 16 119 228 82 4 299 159 185 19 153 81 179 274 85 9 219 296 183 104 30 126 92 181 218 141 225 70 90 230 262 294 268 75 75 39 300 13 49 147 300 278 216 255 35 75 68 233 67 114 243 273 267 185 77 19 95 215 71 238 288 157 241 57 144 23 291 227 228 46 171 12 289 283 172 131 19 124 148 125 2 83 36 230 26 60 214 10 73 160 10 44 227 257 280 131 77 291 162 161 100 142 14 168 272 141 254 3 144 295 57 173 257 44 198 23 19 160 282 111 173 192 278 252 88 21 39 271 80 89 176 298 98 227 286 213 185 48 86 135 150 69 58 299 188 118 73 124 177 58 263 54 132 109 15 29 36 201 93 6 149 215 100 171 41 222 36 237 133 293 113 117 248 193 9 183 162 197 234 128 279 70 119 163 15 265 270 255 64 8 122 204 69 294 232 242 89 169 97 166 27 85 38 152 256 154 200 210 115 61 3 108 161 71 209 54 103 176 262 265 34 21 10 37 26 24 80 24 109 258 69 22 165 202 154 171 277 155 297 1 229 172 102 86 70 83 29 29 67 107 42 40 67 78 109 287 2 76 230 298 33 160 246 278 281 21 75 104 66 260 78 145 120 289 247 38 145 55 222 103 241 28 211 270 226 131 48 57 202 190 4 263 25 199 149 251 234 157 212 30 184 259 195 254 239 77 48 28 269 136 33 167 146 210 180 128 43 137 65 192 220 85 281 286 242 118 102 57 137 123 58 27 121 78 138 220 56 47 232 177 22 129 68 168 74 7 275 240 174 46 142 79 235 218 170 158 30 155 25 235 283 237 198 59 59 52 246 13 20 214 39 6 214 282 46 106 246 249 47 268 10 8 93 271 15 22 136 269 100 200 275 42 ^'}},
+ {OUT=>'8D500C9CFDE0288530A2106B70BED39326C52C3C'}],
+ ['218', {IN=> {f=> '644 0 6 29 104 280 81 240 230 212 156 114 31 69 146 96 66 27 63 134 52 68 244 186 88 139 162 111 53 81 64 162 287 30 6 190 59 128 131 235 246 101 211 93 249 205 222 250 57 87 76 206 285 115 185 25 274 34 264 66 253 176 211 219 181 69 5 51 216 77 58 241 243 32 223 11 224 215 225 102 113 3 136 93 123 273 56 74 165 230 86 224 39 157 268 289 197 295 83 105 217 14 293 203 5 127 103 193 37 116 122 260 236 7 268 37 242 145 33 110 201 125 238 13 89 293 27 239 202 279 194 50 27 189 157 127 153 45 43 78 121 106 69 272 119 141 203 166 82 42 50 188 53 5 177 148 152 234 42 100 22 205 46 182 132 263 179 63 275 97 129 194 191 72 250 107 132 137 247 290 99 296 272 295 118 37 81 190 94 60 206 109 47 260 110 75 193 163 139 288 43 128 257 258 19 277 12 252 148 278 166 117 276 125 62 247 164 76 221 96 101 261 138 8 246 227 143 168 32 97 79 149 39 31 245 123 21 192 135 206 235 70 33 286 269 50 62 121 232 1 45 295 244 60 156 64 288 8 105 91 82 218 27 113 270 204 18 249 79 199 84 183 286 128 5 1 171 227 17 236 259 223 187 292 140 49 301 256 104 154 149 165 54 18 299 215 49 125 188 179 28 252 22 255 91 32 82 268 163 265 220 209 2 58 115 9 259 47 210 65 14 243 158 155 86 98 16 82 92 95 38 94 10 161 48 97 255 217 266 248 142 266 122 119 191 248 16 32 47 34 88 89 26 50 12 76 80 51 40 9 133 24 44 191 122 84 259 173 142 140 99 44 15 54 159 42 276 301 130 172 79 275 62 197 119 15 180 91 208 150 193 289 71 61 219 231 114 157 1 221 272 169 186 264 207 87 237 161 224 165 180 41 72 89 152 284 87 252 274 210 241 293 77 284 52 229 199 34 138 134 178 17 60 282 298 61 93 299 39 283 200 62 71 187 242 4 290 49 251 120 43 113 144 181 245 73 278 40 185 201 251 261 88 265 94 186 138 184 223 61 58 65 175 107 6 205 81 114 207 137 71 11 174 170 73 152 108 110 25 148 11 98 283 150 17 221 146 237 111 88 13 139 36 179 189 207 263 3 86 48 273 21 51 90 54 285 65 49 175 233 29 280 257 6 64 36 53 257 132 87 111 229 58 291 288 184 173 16 208 24 170 214 197 169 60 30 41 213 134 2 234 92 145 83 155 51 166 243 208 200 238 48 21 66 203 40 59 178 176 85 196 106 195 204 194 15 4 23 283 24 296 146 61 43 254 189 31 195 78 262 151 130 222 124 34 12 202 103 126 216 112 292 14 117 226 80 1 297 159 183 19 151 80 177 274 84 7 218 294 181 104 28 126 90 180 217 140 225 67 90 230 262 292 266 72 74 39 298 11 48 147 300 278 216 253 265 ^'}},
+ {OUT=>'F3D4D139EDFC24596377BC97A96FB7621F27FFC7'}],
+ ['219', {IN=> {f=> '638 1 75 65 227 58 108 240 267 267 185 71 13 95 212 71 235 285 154 238 48 144 14 288 221 228 43 165 6 283 280 172 125 16 121 145 122 297 74 36 227 17 51 211 4 64 157 1 38 224 254 280 131 68 291 162 161 94 142 14 165 269 141 251 298 141 292 51 170 251 35 198 17 10 154 279 105 173 192 272 249 79 18 36 268 74 80 170 292 92 227 280 213 182 45 80 129 150 63 49 296 185 112 70 124 171 55 263 51 129 109 6 20 33 201 84 149 215 97 168 32 216 27 234 133 287 110 114 248 190 9 183 156 194 228 125 279 64 116 163 9 265 270 252 61 8 116 204 66 294 229 236 89 163 91 160 24 85 29 149 256 154 197 210 115 55 108 158 68 209 48 103 176 259 262 25 15 10 31 23 18 77 21 103 258 69 16 162 202 151 171 277 149 297 296 226 169 99 83 70 83 29 26 67 101 39 31 64 75 106 284 2 67 224 295 33 160 246 275 275 12 69 98 57 260 69 139 114 289 247 38 142 55 222 298 100 235 22 211 267 226 128 42 54 196 184 1 260 25 196 143 248 231 151 212 30 178 256 195 254 239 74 39 28 263 133 24 167 143 207 174 122 34 131 65 186 220 79 281 283 239 115 96 57 137 117 52 18 118 78 132 217 53 44 232 177 22 129 68 168 295 74 302 275 234 174 40 139 73 232 218 164 158 27 152 19 229 277 231 192 50 59 52 240 4 20 214 30 301 208 282 46 106 243 249 38 265 7 5 90 271 15 13 136 269 100 194 269 182 4 23 100 276 79 240 226 210 156 112 29 67 142 96 60 23 59 134 50 62 242 182 86 137 158 109 47 77 62 160 287 28 190 53 126 127 235 244 97 209 89 245 205 218 246 53 85 70 206 285 113 181 19 270 30 260 66 253 172 207 215 179 63 5 49 214 71 54 237 241 30 219 9 224 213 223 102 109 3 134 91 119 271 56 70 165 228 84 222 35 157 264 285 195 295 77 103 217 12 291 203 303 123 101 302 193 35 116 122 256 236 7 268 33 242 141 29 108 199 125 238 7 87 289 25 237 200 277 190 50 21 185 153 127 153 45 39 72 121 104 65 268 115 137 199 166 76 36 46 188 53 3 175 148 148 230 40 98 16 203 40 180 130 261 177 63 271 97 127 194 187 68 250 105 132 135 243 290 95 294 270 293 118 37 75 188 94 60 204 107 47 258 110 73 191 161 135 284 43 124 253 254 17 273 12 250 146 274 164 117 274 123 60 245 164 76 217 94 101 261 136 6 242 223 143 166 32 93 75 147 37 31 245 123 19 188 135 202 233 66 31 286 265 48 62 119 230 303 41 291 244 56 152 60 286 2 105 91 78 214 27 111 266 200 14 247 79 199 84 181 282 128 1 301 167 225 17 232 259 221 187 290 136 47 299 252 102 150 145 163 157 ^'}},
+ {OUT=>'5509BAFFAC6D507860CEFC5AB5832CB63CD4B687'}],
+ ['220', {IN=> {f=> '653 0 18 299 207 41 117 184 179 16 252 18 255 83 20 82 264 155 257 216 201 296 54 107 303 255 39 202 61 2 235 154 151 86 94 16 78 84 91 30 86 6 153 36 93 251 209 262 240 134 266 114 119 187 244 8 24 35 22 76 81 26 38 8 68 80 43 32 1 129 24 44 191 118 72 251 165 138 140 99 40 11 54 151 42 276 301 122 164 67 271 50 189 115 7 180 87 200 146 185 285 67 53 219 231 106 153 1 217 272 165 182 264 199 75 237 157 216 157 172 33 72 77 152 280 87 244 270 206 241 293 77 284 40 229 191 30 130 130 174 298 13 48 274 298 57 93 295 27 283 196 54 63 179 234 4 282 37 243 120 31 113 136 181 237 69 274 36 181 193 251 253 80 261 90 186 138 184 223 61 46 53 175 107 6 197 81 114 207 129 59 305 170 162 73 148 100 102 17 140 11 98 275 142 5 221 146 229 103 88 9 139 28 171 189 203 255 301 78 40 273 9 51 86 50 277 57 49 171 233 21 276 257 304 64 32 45 253 124 79 111 221 58 287 288 176 169 12 204 20 170 206 197 169 56 22 41 205 126 300 234 92 145 79 155 39 158 243 208 200 234 48 21 58 199 40 55 178 172 77 196 98 187 200 190 3 23 279 16 296 142 49 39 246 185 23 191 74 254 151 130 218 116 34 4 194 95 122 208 112 292 6 109 218 72 295 289 159 175 19 143 76 169 274 80 305 214 286 173 104 20 126 82 176 213 136 225 55 90 230 262 284 258 60 70 39 290 3 44 147 300 278 216 245 35 75 63 223 52 104 238 263 267 185 67 9 95 210 71 233 283 152 236 42 144 8 286 217 228 41 161 2 279 278 172 121 14 119 143 120 293 68 36 225 11 45 209 58 155 301 34 222 252 280 131 62 291 162 161 90 142 14 163 267 141 249 294 139 290 47 168 247 29 198 13 4 150 277 101 173 192 268 247 73 16 34 266 70 74 166 288 88 227 276 213 180 43 76 125 150 59 43 294 183 108 68 124 167 53 263 49 127 109 14 31 201 78 302 149 215 95 166 26 212 21 232 133 283 108 112 248 188 9 183 152 192 224 123 279 60 114 163 5 265 270 250 59 8 112 204 64 294 227 232 89 159 87 156 22 85 23 147 256 154 195 210 115 51 304 108 156 66 209 44 103 176 257 260 19 11 10 27 21 14 75 19 99 258 69 12 160 202 149 171 277 145 297 292 224 167 97 81 70 83 29 24 67 97 37 25 62 73 104 282 2 61 220 293 33 160 246 273 271 6 65 94 51 260 63 135 110 289 247 38 140 55 222 296 98 231 18 211 265 226 126 38 52 192 180 305 258 25 194 139 246 229 147 212 30 174 254 195 254 239 72 33 28 259 131 18 167 141 205 170 118 28 127 65 182 220 75 281 281 237 113 92 57 137 113 48 12 116 78 128 215 51 42 232 177 22 129 68 168 291 161 ^'}},
+ {OUT=>'0C0AEA0C2FD7A620C77866B1A177481E26B4F592'}],
+ ['221', {IN=> {f=> '653 0 296 275 228 174 34 136 67 229 218 158 158 24 149 13 223 271 225 186 41 59 52 234 302 20 214 21 295 202 282 46 106 240 249 29 262 4 2 87 271 15 4 136 269 100 188 263 182 1 14 94 270 76 240 220 207 156 109 26 64 136 96 51 17 53 134 47 53 239 176 83 134 152 106 38 71 59 157 287 25 298 190 44 123 121 235 241 91 206 83 239 205 212 240 47 82 61 206 285 110 175 10 264 24 254 66 253 166 201 209 176 54 5 46 211 62 48 231 238 27 213 6 224 210 220 102 103 3 131 88 113 268 56 64 165 225 81 219 29 157 258 279 192 295 68 100 217 9 288 203 297 117 98 302 193 32 116 122 250 236 7 268 27 242 135 23 105 196 125 238 305 84 283 22 234 197 274 184 50 12 179 147 127 153 45 33 63 121 101 59 262 109 131 193 166 67 27 40 188 53 172 148 142 224 37 95 7 200 31 177 127 258 174 63 265 97 124 194 181 62 250 102 132 132 237 290 89 291 267 290 118 37 66 185 94 60 201 104 47 255 110 70 188 158 129 278 43 118 247 248 14 267 12 247 143 268 161 117 271 120 57 242 164 76 211 91 101 261 133 3 236 217 143 163 32 87 69 144 34 31 245 123 16 182 135 196 230 60 28 286 259 45 62 116 227 303 35 285 244 50 146 54 283 300 105 91 72 208 27 108 260 194 8 244 79 199 84 178 276 128 302 298 161 222 17 226 259 218 187 287 130 44 296 246 99 144 139 160 44 18 299 205 39 115 183 179 13 252 17 255 81 17 82 263 153 255 215 199 294 53 105 301 254 37 200 60 306 233 153 150 86 93 16 77 82 90 28 84 5 151 33 92 250 207 261 238 132 266 112 119 186 243 6 22 32 19 73 79 26 35 7 66 80 41 30 306 128 24 44 191 117 69 249 163 137 140 99 39 10 54 149 42 276 301 120 162 64 270 47 187 114 5 180 86 198 145 183 284 66 51 219 231 104 152 1 216 272 164 181 264 197 72 237 156 214 155 170 31 72 74 152 279 87 242 269 205 241 293 77 284 37 229 189 29 128 129 173 297 12 45 272 298 56 93 294 24 283 195 52 61 177 232 4 280 34 241 120 28 113 134 181 235 68 273 35 180 191 251 251 78 260 89 186 138 184 223 61 43 50 175 107 6 195 81 114 207 127 56 303 169 160 73 147 98 100 15 138 11 98 273 140 2 221 146 227 101 88 8 139 26 169 189 202 253 300 76 38 273 6 51 85 49 275 55 49 170 233 19 275 257 303 64 31 43 252 122 77 111 219 58 286 288 174 168 11 203 19 170 204 197 169 55 20 41 203 124 299 234 92 145 78 155 36 156 243 208 200 233 48 21 56 198 40 54 178 171 75 196 96 185 199 189 306 23 278 14 296 141 46 38 244 184 21 190 73 252 151 130 217 114 34 2 192 93 121 206 112 292 4 107 216 70 293 112 ^'}},
+ {OUT=>'149176007FEE58A591E3F00F8DB658B605F8390C'}],
+ ['222', {IN=> {f=> '646 1 159 169 19 137 73 163 274 77 302 211 280 167 104 14 126 76 173 210 133 225 46 90 230 262 278 252 51 67 39 284 306 41 147 300 278 216 239 35 75 60 217 43 98 235 257 267 185 61 3 95 207 71 230 280 149 233 33 144 308 283 211 228 38 155 305 273 275 172 115 11 116 140 117 287 59 36 222 2 36 206 303 49 152 295 28 219 249 280 131 53 291 162 161 84 142 14 160 264 141 246 288 136 287 41 165 241 20 198 7 304 144 274 95 173 192 262 244 64 13 31 263 64 65 160 282 82 227 270 213 177 40 70 119 150 53 34 291 180 102 65 124 161 50 263 46 124 109 300 5 28 201 69 299 149 215 92 163 17 206 12 229 133 277 105 109 248 185 9 183 146 189 218 120 279 54 111 163 308 265 270 247 56 8 106 204 61 294 224 226 89 153 81 150 19 85 14 144 256 154 192 210 115 45 304 108 153 63 209 38 103 176 254 257 10 5 10 21 18 8 72 16 93 258 69 6 157 202 146 171 277 139 297 286 221 164 94 78 70 83 29 21 67 91 34 16 59 70 101 279 2 52 214 290 33 160 246 270 265 306 59 88 42 260 54 129 104 289 247 38 137 55 222 293 95 225 12 211 262 226 123 32 49 186 174 305 255 25 191 133 243 226 141 212 30 168 251 195 254 239 69 24 28 253 128 9 167 138 202 164 112 19 121 65 176 220 69 281 278 234 110 86 57 137 107 42 3 113 78 122 212 48 39 232 177 22 129 68 168 285 74 292 275 224 174 30 134 63 227 218 154 158 22 147 9 219 267 221 182 35 59 52 230 298 20 214 15 291 198 282 46 106 238 249 23 260 2 85 271 15 307 136 269 100 184 259 182 308 8 90 266 74 240 216 205 156 107 24 62 132 96 45 13 49 134 45 47 237 172 81 132 148 104 32 67 57 155 287 23 294 190 38 121 117 235 239 87 204 79 235 205 208 236 43 80 55 206 285 108 171 4 260 20 250 66 253 162 197 205 174 48 5 44 209 56 44 227 236 25 209 4 224 208 218 102 99 3 129 86 109 266 56 60 165 223 79 217 25 157 254 275 190 295 62 98 217 7 286 203 293 113 96 302 193 30 116 122 246 236 7 268 23 242 131 19 103 194 125 238 301 82 279 20 232 195 272 180 50 6 175 143 127 153 45 29 57 121 99 55 258 105 127 189 166 61 21 36 188 53 307 170 148 138 220 35 93 1 198 25 175 125 256 172 63 261 97 122 194 177 58 250 100 132 130 233 290 85 289 265 288 118 37 60 183 94 60 199 102 47 253 110 68 186 156 125 274 43 114 243 244 12 263 12 245 141 264 159 117 269 118 55 240 164 76 207 89 101 261 131 1 232 213 143 161 32 83 65 142 32 31 245 123 14 178 135 192 228 56 26 286 255 43 62 114 225 303 31 281 244 46 142 50 281 296 105 91 238 ^'}},
+ {OUT=>'17C0D7B0256159F3626786FFDB20237AE154FA84'}],
+ ['223', {IN=> {f=> '647 0 200 27 104 252 186 240 79 199 84 174 268 128 298 294 153 218 17 218 259 214 187 283 122 40 292 238 95 136 131 156 36 18 299 197 31 107 179 179 1 252 13 255 73 5 82 259 145 247 211 191 286 49 97 293 250 29 192 56 298 225 149 146 86 89 16 73 74 86 20 76 1 143 21 88 246 199 257 230 124 266 104 119 182 239 309 14 20 7 61 71 26 23 3 58 80 33 22 302 124 24 44 191 113 57 241 155 133 140 99 35 6 54 141 42 276 301 112 154 52 266 35 179 110 308 180 82 190 141 175 280 62 43 219 231 96 148 1 212 272 160 177 264 189 60 237 152 206 147 162 23 72 62 152 275 87 234 265 201 241 293 77 284 25 229 181 25 120 125 169 293 8 33 264 298 52 93 290 12 283 191 44 53 169 224 4 272 22 233 120 16 113 126 181 227 64 269 31 176 183 251 243 70 256 85 186 138 184 223 61 31 38 175 107 6 187 81 114 207 119 44 295 165 152 73 143 90 92 7 130 11 98 265 132 301 221 146 219 93 88 4 139 18 161 189 198 245 296 68 30 273 305 51 81 45 267 47 49 166 233 11 271 257 299 64 27 35 248 114 69 111 211 58 282 288 166 164 7 199 15 170 196 197 169 51 12 41 195 116 295 234 92 145 74 155 24 148 243 208 200 229 48 21 48 194 40 50 178 167 67 196 88 177 195 185 299 306 23 274 6 296 137 34 34 236 180 13 186 69 244 151 130 213 106 34 305 184 85 117 198 112 292 307 99 208 62 285 279 159 165 19 133 71 159 274 75 300 209 276 163 104 10 126 72 171 208 131 225 40 90 230 262 274 248 45 65 39 280 304 39 147 300 278 216 235 35 75 58 213 37 94 233 253 267 185 57 310 95 205 71 228 278 147 231 27 144 304 281 207 228 36 151 303 269 273 172 111 9 114 138 115 283 53 36 220 307 30 204 301 43 150 291 24 217 247 280 131 47 291 162 161 80 142 14 158 262 141 244 284 134 285 37 163 237 14 198 3 300 140 272 91 173 192 258 242 58 11 29 261 60 59 156 278 78 227 266 213 175 38 66 115 150 49 28 289 178 98 63 124 157 48 263 44 122 109 296 310 26 201 63 297 149 215 90 161 11 202 6 227 133 273 103 107 248 183 9 183 142 187 214 118 279 50 109 163 306 265 270 245 54 8 102 204 59 294 222 222 89 149 77 146 17 85 8 142 256 154 190 210 115 41 304 108 151 61 209 34 103 176 252 255 4 1 10 17 16 4 70 14 89 258 69 2 155 202 144 171 277 135 297 282 219 162 92 76 70 83 29 19 67 87 32 10 57 68 99 277 2 46 210 288 33 160 246 268 261 302 55 84 36 260 48 125 100 289 247 38 135 55 222 291 93 221 8 211 260 226 121 28 47 182 170 305 253 25 189 129 241 224 137 212 30 164 249 195 254 239 86 ^'}},
+ {OUT=>'741A58618ABEB1D983D67AFDCBC49AA397A3B8E0'}],
+ ['224', {IN=> {f=> '665 0 15 28 247 125 167 135 199 158 106 10 115 65 170 220 63 281 275 231 107 80 57 137 101 36 306 110 78 116 209 45 36 232 177 22 129 68 168 279 74 286 275 218 174 24 131 57 224 218 148 158 19 144 3 213 261 215 176 26 59 52 224 292 20 214 6 285 192 282 46 106 235 249 14 257 311 309 82 271 15 301 136 269 100 178 253 182 308 311 84 260 71 240 210 202 156 104 21 59 126 96 36 7 43 134 42 38 234 166 78 129 142 101 23 61 54 152 287 20 288 190 29 118 111 235 236 81 201 73 229 205 202 230 37 77 46 206 285 105 165 307 254 14 244 66 253 156 191 199 171 39 5 41 206 47 38 221 233 22 203 1 224 205 215 102 93 3 126 83 103 263 56 54 165 220 76 214 19 157 248 269 187 295 53 95 217 4 283 203 287 107 93 302 193 27 116 122 240 236 7 268 17 242 125 13 100 191 125 238 295 79 273 17 229 192 269 174 50 309 169 137 127 153 45 23 48 121 96 49 252 99 121 183 166 52 12 30 188 53 307 167 148 132 214 32 90 304 195 16 172 122 253 169 63 255 97 119 194 171 52 250 97 132 127 227 290 79 286 262 285 118 37 51 180 94 60 196 99 47 250 110 65 183 153 119 268 43 108 237 238 9 257 12 242 138 258 156 117 266 115 52 237 164 76 201 86 101 261 128 310 226 207 143 158 32 77 59 139 29 31 245 123 11 172 135 186 225 50 23 286 249 40 62 111 222 303 25 275 244 40 136 44 278 290 105 91 62 198 27 103 250 184 310 239 79 199 84 173 266 128 297 293 151 217 17 216 259 213 187 282 120 39 291 236 94 134 129 155 34 18 299 195 29 105 178 179 310 252 12 255 71 2 82 258 143 245 210 189 284 48 95 291 249 27 190 55 296 223 148 145 86 88 16 72 72 85 18 74 141 18 87 245 197 256 228 122 266 102 119 181 238 308 12 17 4 58 69 26 20 2 56 80 31 20 301 123 24 44 191 112 54 239 153 132 140 99 34 5 54 139 42 276 301 110 152 49 265 32 177 109 307 180 81 188 140 173 279 61 41 219 231 94 147 1 211 272 159 176 264 187 57 237 151 204 145 160 21 72 59 152 274 87 232 264 200 241 293 77 284 22 229 179 24 118 124 168 292 7 30 262 298 51 93 289 9 283 190 42 51 167 222 4 270 19 231 120 13 113 124 181 225 63 268 30 175 181 251 241 68 255 84 186 138 184 223 61 28 35 175 107 6 185 81 114 207 117 41 293 164 150 73 142 88 90 5 128 11 98 263 130 299 221 146 217 91 88 3 139 16 159 189 197 243 295 66 28 273 303 51 80 44 265 45 49 165 233 9 270 257 298 64 26 33 247 112 67 111 209 58 281 288 164 163 6 198 14 170 194 197 169 50 10 41 193 114 294 234 92 145 73 155 21 146 243 208 200 228 48 21 46 193 40 49 178 166 65 196 86 175 194 184 297 306 23 273 206 ^'}},
+ {OUT=>'B738D6B3409EB9ED2F1719B84D13F7C36169CDEC'}],
+ ['225', {IN=> {f=> '641 0 296 134 25 31 230 177 7 183 66 238 151 130 210 100 34 302 178 79 114 192 112 292 304 93 202 56 279 273 159 159 19 127 68 153 274 72 297 206 270 157 104 4 126 66 168 205 128 225 31 90 230 262 268 242 36 62 39 274 301 36 147 300 278 216 229 35 75 55 207 28 88 230 247 267 185 51 307 95 202 71 225 275 144 228 18 144 298 278 201 228 33 145 300 263 270 172 105 6 111 135 112 277 44 36 217 301 21 201 298 34 147 285 18 214 244 280 131 38 291 162 161 74 142 14 155 259 141 241 278 131 282 31 160 231 5 198 311 294 134 269 85 173 192 252 239 49 8 26 258 54 50 150 272 72 227 260 213 172 35 60 109 150 43 19 286 175 92 60 124 151 45 263 41 119 109 290 304 23 201 54 294 149 215 87 158 2 196 311 224 133 267 100 104 248 180 9 183 136 184 208 115 279 44 106 163 303 265 270 242 51 8 96 204 56 294 219 216 89 143 71 140 14 85 313 139 256 154 187 210 115 35 304 108 148 58 209 28 103 176 249 252 309 309 10 11 13 312 67 11 83 258 69 310 152 202 141 171 277 129 297 276 216 159 89 73 70 83 29 16 67 81 29 1 54 65 96 274 2 37 204 285 33 160 246 265 255 296 49 78 27 260 39 119 94 289 247 38 132 55 222 288 90 215 2 211 257 226 118 22 44 176 164 305 250 25 186 123 238 221 131 212 30 158 246 195 254 239 64 9 28 243 123 308 167 133 197 154 102 4 111 65 166 220 59 281 273 229 105 76 57 137 97 32 302 108 78 112 207 43 34 232 177 22 129 68 168 275 74 282 275 214 174 20 129 53 222 218 144 158 17 142 313 209 257 211 172 20 59 52 220 288 20 214 281 188 282 46 106 233 249 8 255 311 309 80 271 15 297 136 269 100 174 249 182 308 307 80 256 69 240 206 200 156 102 19 57 122 96 30 3 39 134 40 32 232 162 76 127 138 99 17 57 52 150 287 18 284 190 23 116 107 235 234 77 199 69 225 205 198 226 33 75 40 206 285 103 161 303 250 10 240 66 253 152 187 195 169 33 5 39 204 41 34 217 231 20 199 313 224 203 213 102 89 3 124 81 99 261 56 50 165 218 74 212 15 157 244 265 185 295 47 93 217 2 281 203 283 103 91 302 193 25 116 122 236 236 7 268 13 242 121 9 98 189 125 238 291 77 269 15 227 190 267 170 50 305 165 133 127 153 45 19 42 121 94 45 248 95 117 179 166 46 6 26 188 53 307 165 148 128 210 30 88 300 193 10 170 120 251 167 63 251 97 117 194 167 48 250 95 132 125 223 290 75 284 260 283 118 37 45 178 94 60 194 97 47 248 110 63 181 151 115 264 43 104 233 234 7 253 12 240 136 254 154 117 264 113 50 235 164 76 197 84 101 261 126 310 222 203 143 276 ^'}},
+ {OUT=>'3D33DE31F64055D3B128AC9A6AA3F92DFD4F5330'}],
+ ['226', {IN=> {f=> '656 0 32 69 51 135 25 31 245 123 7 164 135 178 221 42 19 286 241 36 62 107 218 303 17 267 244 32 128 36 274 282 105 91 54 190 27 99 242 176 306 235 79 199 84 169 258 128 293 289 143 213 17 208 259 209 187 278 112 35 287 228 90 126 121 151 26 18 299 187 21 97 174 179 302 252 8 255 63 306 82 254 135 237 206 181 276 44 87 283 245 19 182 51 288 215 144 141 86 84 16 68 64 81 10 66 312 133 6 83 241 189 252 220 114 266 94 119 177 234 304 4 5 308 46 61 26 8 314 48 80 23 12 297 119 24 44 191 108 42 231 145 128 140 99 30 1 54 131 42 276 301 102 144 37 261 20 169 105 303 180 77 180 136 165 275 57 33 219 231 86 143 1 207 272 155 172 264 179 45 237 147 196 137 152 13 72 47 152 270 87 224 260 196 241 293 77 284 10 229 171 20 110 120 164 288 3 18 254 298 47 93 285 313 283 186 34 43 159 214 4 262 7 223 120 1 113 116 181 217 59 264 26 171 173 251 233 60 251 80 186 138 184 223 61 16 23 175 107 6 177 81 114 207 109 29 285 160 142 73 138 80 82 313 120 11 98 255 122 291 221 146 209 83 88 315 139 8 151 189 193 235 291 58 20 273 295 51 76 40 257 37 49 161 233 1 266 257 294 64 22 25 243 104 59 111 201 58 277 288 156 159 2 194 10 170 186 197 169 46 2 41 185 106 290 234 92 145 69 155 9 138 243 208 200 224 48 21 38 189 40 45 178 162 57 196 78 167 190 180 289 306 23 269 312 296 132 19 29 226 175 3 181 64 234 151 130 208 96 34 300 174 75 112 188 112 292 302 89 198 52 275 269 159 155 19 123 66 149 274 70 295 204 266 153 104 126 62 166 203 126 225 25 90 230 262 264 238 30 60 39 270 299 34 147 300 278 216 225 35 75 53 203 22 84 228 243 267 185 47 305 95 200 71 223 273 142 226 12 144 294 276 197 228 31 141 298 259 268 172 101 4 109 133 110 273 38 36 215 297 15 199 296 28 145 281 14 212 242 280 131 32 291 162 161 70 142 14 153 257 141 239 274 129 280 27 158 227 315 198 309 290 130 267 81 173 192 248 237 43 6 24 256 50 44 146 268 68 227 256 213 170 33 56 105 150 39 13 284 173 88 58 124 147 43 263 39 117 109 286 300 21 201 48 292 149 215 85 156 312 192 307 222 133 263 98 102 248 178 9 183 132 182 204 113 279 40 104 163 301 265 270 240 49 8 92 204 54 294 217 212 89 139 67 136 12 85 309 137 256 154 185 210 115 31 304 108 146 56 209 24 103 176 247 250 305 307 10 7 11 310 65 9 79 258 69 308 150 202 139 171 277 125 297 272 214 157 87 71 70 83 29 14 67 77 27 311 52 63 94 272 2 31 200 283 33 160 246 263 251 292 45 74 21 260 33 115 90 289 247 38 130 55 222 286 88 211 227 ^'}},
+ {OUT=>'B6925F4DF94949B8844C867428BA3DEDF4CF2B51'}],
+ ['227', {IN=> {f=> '668 0 211 254 226 115 16 41 170 158 305 247 25 183 117 235 218 125 212 30 152 243 195 254 239 61 28 237 120 302 167 130 194 148 96 312 105 65 160 220 53 281 270 226 102 70 57 137 91 26 296 105 78 106 204 40 31 232 177 22 129 68 168 269 74 276 275 208 174 14 126 47 219 218 138 158 14 139 310 203 251 205 166 11 59 52 214 282 20 214 308 275 182 282 46 106 230 249 316 252 311 309 77 271 15 291 136 269 100 168 243 182 308 301 74 250 66 240 200 197 156 99 16 54 116 96 21 314 33 134 37 23 229 156 73 124 132 96 8 51 49 147 287 15 278 190 14 113 101 235 231 71 196 63 219 205 192 220 27 72 31 206 285 100 155 297 244 4 234 66 253 146 181 189 166 24 5 36 201 32 28 211 228 17 193 313 224 200 210 102 83 3 121 78 93 258 56 44 165 215 71 209 9 157 238 259 182 295 38 90 217 316 278 203 277 97 88 302 193 22 116 122 230 236 7 268 7 242 115 3 95 186 125 238 285 74 263 12 224 187 264 164 50 299 159 127 127 153 45 13 33 121 91 39 242 89 111 173 166 37 314 20 188 53 307 162 148 122 204 27 85 294 190 1 167 117 248 164 63 245 97 114 194 161 42 250 92 132 122 217 290 69 281 257 280 118 37 36 175 94 60 191 94 47 245 110 60 178 148 109 258 43 98 227 228 4 247 12 237 133 248 151 117 261 110 47 232 164 76 191 81 101 261 123 310 216 197 143 153 32 67 49 134 24 31 245 123 6 162 135 176 220 40 18 286 239 35 62 106 217 303 15 265 244 30 126 34 273 280 105 91 52 188 27 98 240 174 305 234 79 199 84 168 256 128 292 288 141 212 17 206 259 208 187 277 110 34 286 226 89 124 119 150 24 18 299 185 19 95 173 179 300 252 7 255 61 304 82 253 133 235 205 179 274 43 85 281 244 17 180 50 286 213 143 140 86 83 16 67 62 80 8 64 312 131 3 82 240 187 251 218 112 266 92 119 176 233 303 2 2 306 43 59 26 5 314 46 80 21 10 296 118 24 44 191 107 39 229 143 127 140 99 29 54 129 42 276 301 100 142 34 260 17 167 104 302 180 76 178 135 163 274 56 31 219 231 84 142 1 206 272 154 171 264 177 42 237 146 194 135 150 11 72 44 152 269 87 222 259 195 241 293 77 284 7 229 169 19 108 119 163 287 2 15 252 298 46 93 284 311 283 185 32 41 157 212 4 260 4 221 120 315 113 114 181 215 58 263 25 170 171 251 231 58 250 79 186 138 184 223 61 13 20 175 107 6 175 81 114 207 107 26 283 159 140 73 137 78 80 312 118 11 98 253 120 289 221 146 207 81 88 315 139 6 149 189 192 233 290 56 18 273 293 51 75 39 255 35 49 160 233 316 265 257 293 64 21 23 242 102 57 111 199 58 276 288 154 158 1 193 9 170 184 197 169 45 41 183 104 289 234 92 145 68 155 6 136 243 208 203 ^'}},
+ {OUT=>'CF5E7256292ABEC431D8E8B9CBEAF22AF072377E'}],
+ ['228', {IN=> {f=> '656 0 221 48 21 32 186 40 42 178 159 51 196 72 161 187 177 283 306 23 266 309 296 129 10 26 220 172 316 178 61 228 151 130 205 90 34 297 168 69 109 182 112 292 299 83 192 46 269 263 159 149 19 117 63 143 274 67 292 201 260 147 104 313 126 56 163 200 123 225 16 90 230 262 258 232 21 57 39 264 296 31 147 300 278 216 219 35 75 50 197 13 78 225 237 267 185 41 302 95 197 71 220 270 139 223 3 144 288 273 191 228 28 135 295 253 265 172 95 1 106 130 107 267 29 36 212 291 6 196 293 19 142 275 8 209 239 280 131 23 291 162 161 64 142 14 150 254 141 236 268 126 277 21 155 221 309 198 306 284 124 264 75 173 192 242 234 34 3 21 253 44 35 140 262 62 227 250 213 167 30 50 99 150 33 4 281 170 82 55 124 141 40 263 36 114 109 280 294 18 201 39 289 149 215 82 153 306 186 301 219 133 257 95 99 248 175 9 183 126 179 198 110 279 34 101 163 298 265 270 237 46 8 86 204 51 294 214 206 89 133 61 130 9 85 303 134 256 154 182 210 115 25 304 108 143 53 209 18 103 176 244 247 299 304 10 1 8 307 62 6 73 258 69 305 147 202 136 171 277 119 297 266 211 154 84 68 70 83 29 11 67 71 24 305 49 60 91 269 2 22 194 280 33 160 246 260 245 286 39 68 12 260 24 109 84 289 247 38 127 55 222 283 85 205 311 211 252 226 113 12 39 166 154 305 245 25 181 113 233 216 121 212 30 148 241 195 254 239 59 313 28 233 118 298 167 128 192 144 92 308 101 65 156 220 49 281 268 224 100 66 57 137 87 22 292 103 78 102 202 38 29 232 177 22 129 68 168 265 74 272 275 204 174 10 124 43 217 218 134 158 12 137 308 199 247 201 162 5 59 52 210 278 20 214 304 271 178 282 46 106 228 249 312 250 311 309 75 271 15 287 136 269 100 164 239 182 308 297 70 246 64 240 196 195 156 97 14 52 112 96 15 312 29 134 35 17 227 152 71 122 128 94 2 47 47 145 287 13 274 190 8 111 97 235 229 67 194 59 215 205 188 216 23 70 25 206 285 98 151 293 240 230 66 253 142 177 185 164 18 5 34 199 26 24 207 226 15 189 313 224 198 208 102 79 3 119 76 89 256 56 40 165 213 69 207 5 157 234 255 180 295 32 88 217 316 276 203 273 93 86 302 193 20 116 122 226 236 7 268 3 242 111 318 93 184 125 238 281 72 259 10 222 185 262 160 50 295 155 123 127 153 45 9 27 121 89 35 238 85 107 169 166 31 310 16 188 53 307 160 148 118 200 25 83 290 188 314 165 115 246 162 63 241 97 112 194 157 38 250 90 132 120 213 290 65 279 255 278 118 37 30 173 94 60 189 92 47 243 110 58 176 146 105 254 43 94 223 224 2 243 12 235 131 244 149 117 259 108 45 230 164 76 187 79 101 261 109 ^'}},
+ {OUT=>'975DCE94902923977F129C0E4ACF40AD28DDB9AA'}],
+ ['229', {IN=> {f=> '656 0 310 208 189 143 149 32 59 41 130 20 31 245 123 2 154 135 168 216 32 14 286 231 31 62 102 213 303 7 257 244 22 118 26 269 272 105 91 44 180 27 94 232 166 301 230 79 199 84 164 248 128 288 284 133 208 17 198 259 204 187 273 102 30 282 218 85 116 111 146 16 18 299 177 11 87 169 179 292 252 3 255 53 296 82 249 125 227 201 171 266 39 77 273 240 9 172 46 278 205 139 136 86 79 16 63 54 76 56 312 123 312 78 236 179 247 210 104 266 84 119 172 229 299 315 311 298 31 51 26 314 314 38 80 13 2 292 114 24 44 191 103 27 221 135 123 140 99 25 317 54 121 42 276 301 92 134 22 256 5 159 100 298 180 72 170 131 155 270 52 23 219 231 76 138 1 202 272 150 167 264 169 30 237 142 186 127 142 3 72 32 152 265 87 214 255 191 241 293 77 284 316 229 161 15 100 115 159 283 319 3 244 298 42 93 280 303 283 181 24 33 149 204 4 252 313 213 120 307 113 106 181 207 54 259 21 166 163 251 223 50 246 75 186 138 184 223 61 1 8 175 107 6 167 81 114 207 99 14 275 155 132 73 133 70 72 308 110 11 98 245 112 281 221 146 199 73 88 315 139 319 141 189 188 225 286 48 10 273 285 51 71 35 247 27 49 156 233 312 261 257 289 64 17 15 238 94 49 111 191 58 272 288 146 154 318 189 5 170 176 197 169 41 313 41 175 96 285 234 92 145 64 155 315 128 243 208 200 219 48 21 28 184 40 40 178 157 47 196 68 157 185 175 279 306 23 264 307 296 127 4 24 216 170 314 176 59 224 151 130 203 86 34 295 164 65 107 178 112 292 297 79 188 42 265 259 159 145 19 113 61 139 274 65 290 199 256 143 104 311 126 52 161 198 121 225 10 90 230 262 254 228 15 55 39 260 294 29 147 300 278 216 215 35 75 48 193 7 74 223 233 267 185 37 300 95 195 71 218 268 137 221 318 144 284 271 187 228 26 131 293 249 263 172 91 320 104 128 105 263 23 36 210 287 194 291 13 140 271 4 207 237 280 131 17 291 162 161 60 142 14 148 252 141 234 264 124 275 17 153 217 305 198 304 280 120 262 71 173 192 238 232 28 1 19 251 40 29 136 258 58 227 246 213 165 28 46 95 150 29 319 279 168 78 53 124 137 38 263 34 112 109 276 290 16 201 33 287 149 215 80 151 302 182 297 217 133 253 93 97 248 173 9 183 122 177 194 108 279 30 99 163 296 265 270 235 44 8 82 204 49 294 212 202 89 129 57 126 7 85 299 132 256 154 180 210 115 21 304 108 141 51 209 14 103 176 242 245 295 302 10 318 6 305 60 4 69 258 69 303 145 202 134 171 277 115 297 262 209 152 82 66 70 83 29 9 67 67 22 301 47 58 89 267 2 16 190 278 33 160 246 258 241 282 35 64 6 260 18 105 80 289 247 38 125 55 292 ^'}},
+ {OUT=>'333B0259B18CE64D6B52CF563DD3041E5F63A516'}],
+ );
+
+sub binary_expand ($$)
+{
+ my ($test_name, $line) = @_;
+ my ($n, $b, $rest) = split ' ', $line, 3;
+ defined $n && defined $b or die "$test_name: too few args\n";
+ my @a = split ' ', $rest, $n + 1;
+ my $caret = pop @a;
+ $caret eq '^' or die "test $test_name: @a missing `^'\n";
+ $b eq '1' || $b eq '0' or die "test $test_name: bad `b'=$b\n";
+ my $n_bad = @a;
+ @a == $n or
+ die "test $test_name: wrong number of args (expected $n, found $n_bad)\n";
+ my $bit_string = '';
+ foreach my $a (@a)
+ {
+ $bit_string .= $b x $a;
+ $b = 1 - $b;
+ }
+ my $t = pack ("B*", $bit_string);
+ # print "$bit_string\n $t\n";
+ return $t;
+}
+
+my $t;
+foreach $t (@Tests)
+ {
+ # Expand each input.
+ my $in = $t->[1]->{IN};
+ $in->{f} = binary_expand $t->[0], $in->{f};
+
+ # Convert each expected output string to lower case, and append " f\n".
+ my $h = $t->[2];
+ $h->{OUT} = lc $h->{OUT} . " f\n";
+
+ # Insert the `--text' argument for each test.
+ splice @$t, 1, 0, '--text';
+ }
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/shred/Makefile.am b/tests/shred/Makefile.am
new file mode 100644
index 0000000..190cc4b
--- /dev/null
+++ b/tests/shred/Makefile.am
@@ -0,0 +1,12 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+
+EXTRA_DIST = $(TESTS)
+
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+TESTS = remove exact
diff --git a/tests/shred/Makefile.in b/tests/shred/Makefile.in
new file mode 100644
index 0000000..66c79dd
--- /dev/null
+++ b/tests/shred/Makefile.in
@@ -0,0 +1,719 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/shred
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+TESTS = remove exact
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/shred/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/shred/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/shred/exact b/tests/shred/exact
new file mode 100755
index 0000000..3f04d73
--- /dev/null
+++ b/tests/shred/exact
@@ -0,0 +1,55 @@
+#!/bin/sh
+# make sure that neither --exact nor --zero gobbles a command line argument
+
+# Copyright (C) 2000, 2003, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ shred --version
+fi
+
+pwd=`pwd`
+tmp=exact.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+fail=0
+
+for opt in --exact --zero; do
+ echo a > a || fail=1
+ echo bb > b || fail=1
+ echo ccc > c || fail=1
+
+ shred --remove $opt a b || fail=1
+ test -f a && fail=1
+ test -f b && fail=1
+
+ shred --remove $opt c || fail=1
+ test -f c && fail=1
+done
+
+(exit $fail); exit $fail
diff --git a/tests/shred/remove b/tests/shred/remove
new file mode 100755
index 0000000..1f1a398
--- /dev/null
+++ b/tests/shred/remove
@@ -0,0 +1,56 @@
+#!/bin/sh
+# Exercise a bug that was fixed in shred-4.0l
+
+# Copyright (C) 1999, 2000, 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ shred --version
+fi
+
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+# The length of the basename is what matters.
+# In this case, shred would try to rename the file 256^10 times
+# before terminating.
+file=0123456789
+touch $file || framework_failure=1
+chmod u-w $file || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+fail=0
+
+# This would take so long that it appears to infloop
+# when using version from fileutils-4.0k.
+# When the command completes, expect it to fail.
+shred -u $file > /dev/null 2>&1 && fail=1 || :
+
+exit $fail
diff --git a/tests/sort/01a.I b/tests/sort/01a.I
new file mode 100644
index 0000000..b1e6722
--- /dev/null
+++ b/tests/sort/01a.I
@@ -0,0 +1,3 @@
+A
+B
+C
diff --git a/tests/sort/01a.X b/tests/sort/01a.X
new file mode 100644
index 0000000..b1e6722
--- /dev/null
+++ b/tests/sort/01a.X
@@ -0,0 +1,3 @@
+A
+B
+C
diff --git a/tests/sort/02a.I b/tests/sort/02a.I
new file mode 100644
index 0000000..b1e6722
--- /dev/null
+++ b/tests/sort/02a.I
@@ -0,0 +1,3 @@
+A
+B
+C
diff --git a/tests/sort/02a.X b/tests/sort/02a.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/02a.X
diff --git a/tests/sort/02b.I b/tests/sort/02b.I
new file mode 100644
index 0000000..531e93d
--- /dev/null
+++ b/tests/sort/02b.I
@@ -0,0 +1,3 @@
+A
+C
+B
diff --git a/tests/sort/02b.X b/tests/sort/02b.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/02b.X
diff --git a/tests/sort/02c.I b/tests/sort/02c.I
new file mode 100644
index 0000000..78ae2f1
--- /dev/null
+++ b/tests/sort/02c.I
@@ -0,0 +1,2 @@
+a
+a b
diff --git a/tests/sort/02c.X b/tests/sort/02c.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/02c.X
diff --git a/tests/sort/02d.I b/tests/sort/02d.I
new file mode 100644
index 0000000..b1e6722
--- /dev/null
+++ b/tests/sort/02d.I
@@ -0,0 +1,3 @@
+A
+B
+C
diff --git a/tests/sort/02d.X b/tests/sort/02d.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/02d.X
diff --git a/tests/sort/02e.I b/tests/sort/02e.I
new file mode 100644
index 0000000..531e93d
--- /dev/null
+++ b/tests/sort/02e.I
@@ -0,0 +1,3 @@
+A
+C
+B
diff --git a/tests/sort/02e.X b/tests/sort/02e.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/02e.X
diff --git a/tests/sort/02m.I b/tests/sort/02m.I
new file mode 100644
index 0000000..67aa866
--- /dev/null
+++ b/tests/sort/02m.I
@@ -0,0 +1,2 @@
+A
+A
diff --git a/tests/sort/02m.X b/tests/sort/02m.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/02m.X
diff --git a/tests/sort/02n.I b/tests/sort/02n.I
new file mode 100644
index 0000000..35d242b
--- /dev/null
+++ b/tests/sort/02n.I
@@ -0,0 +1,2 @@
+A
+B
diff --git a/tests/sort/02n.X b/tests/sort/02n.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/02n.X
diff --git a/tests/sort/02o.I b/tests/sort/02o.I
new file mode 100644
index 0000000..3042490
--- /dev/null
+++ b/tests/sort/02o.I
@@ -0,0 +1,3 @@
+A
+B
+B
diff --git a/tests/sort/02o.X b/tests/sort/02o.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/02o.X
diff --git a/tests/sort/02p.I b/tests/sort/02p.I
new file mode 100644
index 0000000..0809b0a
--- /dev/null
+++ b/tests/sort/02p.I
@@ -0,0 +1,3 @@
+B
+A
+B
diff --git a/tests/sort/02p.X b/tests/sort/02p.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/02p.X
diff --git a/tests/sort/03a.I b/tests/sort/03a.I
new file mode 100644
index 0000000..dae835f
--- /dev/null
+++ b/tests/sort/03a.I
@@ -0,0 +1,2 @@
+B
+A
diff --git a/tests/sort/03a.X b/tests/sort/03a.X
new file mode 100644
index 0000000..35d242b
--- /dev/null
+++ b/tests/sort/03a.X
@@ -0,0 +1,2 @@
+A
+B
diff --git a/tests/sort/03b.I b/tests/sort/03b.I
new file mode 100644
index 0000000..dae835f
--- /dev/null
+++ b/tests/sort/03b.I
@@ -0,0 +1,2 @@
+B
+A
diff --git a/tests/sort/03b.X b/tests/sort/03b.X
new file mode 100644
index 0000000..35d242b
--- /dev/null
+++ b/tests/sort/03b.X
@@ -0,0 +1,2 @@
+A
+B
diff --git a/tests/sort/03c.I b/tests/sort/03c.I
new file mode 100644
index 0000000..1d000c9
--- /dev/null
+++ b/tests/sort/03c.I
@@ -0,0 +1,2 @@
+A b
+A a
diff --git a/tests/sort/03c.X b/tests/sort/03c.X
new file mode 100644
index 0000000..0f7aef5
--- /dev/null
+++ b/tests/sort/03c.X
@@ -0,0 +1,2 @@
+A a
+A b
diff --git a/tests/sort/03d.I b/tests/sort/03d.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/03d.I
diff --git a/tests/sort/03d.X b/tests/sort/03d.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/03d.X
diff --git a/tests/sort/03e.I b/tests/sort/03e.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/03e.I
diff --git a/tests/sort/03e.X b/tests/sort/03e.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/03e.X
diff --git a/tests/sort/03f.I b/tests/sort/03f.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/03f.I
diff --git a/tests/sort/03f.X b/tests/sort/03f.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/03f.X
diff --git a/tests/sort/03g.I b/tests/sort/03g.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/03g.I
diff --git a/tests/sort/03g.X b/tests/sort/03g.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/03g.X
diff --git a/tests/sort/03h.I b/tests/sort/03h.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/03h.I
diff --git a/tests/sort/03h.X b/tests/sort/03h.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/03h.X
diff --git a/tests/sort/03i.I b/tests/sort/03i.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/03i.I
diff --git a/tests/sort/03i.X b/tests/sort/03i.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/03i.X
diff --git a/tests/sort/04a.I b/tests/sort/04a.I
new file mode 100644
index 0000000..c3b1c99
--- /dev/null
+++ b/tests/sort/04a.I
@@ -0,0 +1,2 @@
+2
+11
diff --git a/tests/sort/04a.X b/tests/sort/04a.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/04a.X
diff --git a/tests/sort/04b.I b/tests/sort/04b.I
new file mode 100644
index 0000000..108c4f5
--- /dev/null
+++ b/tests/sort/04b.I
@@ -0,0 +1,2 @@
+11
+2
diff --git a/tests/sort/04b.X b/tests/sort/04b.X
new file mode 100644
index 0000000..c3b1c99
--- /dev/null
+++ b/tests/sort/04b.X
@@ -0,0 +1,2 @@
+2
+11
diff --git a/tests/sort/04c.I b/tests/sort/04c.I
new file mode 100644
index 0000000..108c4f5
--- /dev/null
+++ b/tests/sort/04c.I
@@ -0,0 +1,2 @@
+11
+2
diff --git a/tests/sort/04c.X b/tests/sort/04c.X
new file mode 100644
index 0000000..c3b1c99
--- /dev/null
+++ b/tests/sort/04c.X
@@ -0,0 +1,2 @@
+2
+11
diff --git a/tests/sort/04d.I b/tests/sort/04d.I
new file mode 100644
index 0000000..108c4f5
--- /dev/null
+++ b/tests/sort/04d.I
@@ -0,0 +1,2 @@
+11
+2
diff --git a/tests/sort/04d.X b/tests/sort/04d.X
new file mode 100644
index 0000000..108c4f5
--- /dev/null
+++ b/tests/sort/04d.X
@@ -0,0 +1,2 @@
+11
+2
diff --git a/tests/sort/04e.I b/tests/sort/04e.I
new file mode 100644
index 0000000..dc0438e
--- /dev/null
+++ b/tests/sort/04e.I
@@ -0,0 +1,2 @@
+ignored B
+z-ig A
diff --git a/tests/sort/04e.X b/tests/sort/04e.X
new file mode 100644
index 0000000..9a34bc6
--- /dev/null
+++ b/tests/sort/04e.X
@@ -0,0 +1,2 @@
+z-ig A
+ignored B
diff --git a/tests/sort/05a.I b/tests/sort/05a.I
new file mode 100644
index 0000000..4ff3104
--- /dev/null
+++ b/tests/sort/05a.I
@@ -0,0 +1,2 @@
+A B
+A A
diff --git a/tests/sort/05a.X b/tests/sort/05a.X
new file mode 100644
index 0000000..d00a440
--- /dev/null
+++ b/tests/sort/05a.X
@@ -0,0 +1,2 @@
+A A
+A B
diff --git a/tests/sort/05b.I b/tests/sort/05b.I
new file mode 100644
index 0000000..e2cb554
--- /dev/null
+++ b/tests/sort/05b.I
@@ -0,0 +1,2 @@
+A B A
+A A Z
diff --git a/tests/sort/05b.X b/tests/sort/05b.X
new file mode 100644
index 0000000..24ea562
--- /dev/null
+++ b/tests/sort/05b.X
@@ -0,0 +1,2 @@
+A A Z
+A B A
diff --git a/tests/sort/05c.I b/tests/sort/05c.I
new file mode 100644
index 0000000..e2cb554
--- /dev/null
+++ b/tests/sort/05c.I
@@ -0,0 +1,2 @@
+A B A
+A A Z
diff --git a/tests/sort/05c.X b/tests/sort/05c.X
new file mode 100644
index 0000000..24ea562
--- /dev/null
+++ b/tests/sort/05c.X
@@ -0,0 +1,2 @@
+A A Z
+A B A
diff --git a/tests/sort/05d.I b/tests/sort/05d.I
new file mode 100644
index 0000000..e2cb554
--- /dev/null
+++ b/tests/sort/05d.I
@@ -0,0 +1,2 @@
+A B A
+A A Z
diff --git a/tests/sort/05d.X b/tests/sort/05d.X
new file mode 100644
index 0000000..24ea562
--- /dev/null
+++ b/tests/sort/05d.X
@@ -0,0 +1,2 @@
+A A Z
+A B A
diff --git a/tests/sort/05e.I b/tests/sort/05e.I
new file mode 100644
index 0000000..f44dbf6
--- /dev/null
+++ b/tests/sort/05e.I
@@ -0,0 +1,2 @@
+A B Z
+A A A
diff --git a/tests/sort/05e.X b/tests/sort/05e.X
new file mode 100644
index 0000000..e1608f1
--- /dev/null
+++ b/tests/sort/05e.X
@@ -0,0 +1,2 @@
+A A A
+A B Z
diff --git a/tests/sort/05f.I b/tests/sort/05f.I
new file mode 100644
index 0000000..e2cb554
--- /dev/null
+++ b/tests/sort/05f.I
@@ -0,0 +1,2 @@
+A B A
+A A Z
diff --git a/tests/sort/05f.X b/tests/sort/05f.X
new file mode 100644
index 0000000..24ea562
--- /dev/null
+++ b/tests/sort/05f.X
@@ -0,0 +1,2 @@
+A A Z
+A B A
diff --git a/tests/sort/06a.I b/tests/sort/06a.I
new file mode 100644
index 0000000..4ff3104
--- /dev/null
+++ b/tests/sort/06a.I
@@ -0,0 +1,2 @@
+A B
+A A
diff --git a/tests/sort/06a.X b/tests/sort/06a.X
new file mode 100644
index 0000000..d00a440
--- /dev/null
+++ b/tests/sort/06a.X
@@ -0,0 +1,2 @@
+A A
+A B
diff --git a/tests/sort/06b.I b/tests/sort/06b.I
new file mode 100644
index 0000000..e2cb554
--- /dev/null
+++ b/tests/sort/06b.I
@@ -0,0 +1,2 @@
+A B A
+A A Z
diff --git a/tests/sort/06b.X b/tests/sort/06b.X
new file mode 100644
index 0000000..24ea562
--- /dev/null
+++ b/tests/sort/06b.X
@@ -0,0 +1,2 @@
+A A Z
+A B A
diff --git a/tests/sort/06c.I b/tests/sort/06c.I
new file mode 100644
index 0000000..e2cb554
--- /dev/null
+++ b/tests/sort/06c.I
@@ -0,0 +1,2 @@
+A B A
+A A Z
diff --git a/tests/sort/06c.X b/tests/sort/06c.X
new file mode 100644
index 0000000..24ea562
--- /dev/null
+++ b/tests/sort/06c.X
@@ -0,0 +1,2 @@
+A A Z
+A B A
diff --git a/tests/sort/06d.I b/tests/sort/06d.I
new file mode 100644
index 0000000..e2cb554
--- /dev/null
+++ b/tests/sort/06d.I
@@ -0,0 +1,2 @@
+A B A
+A A Z
diff --git a/tests/sort/06d.X b/tests/sort/06d.X
new file mode 100644
index 0000000..24ea562
--- /dev/null
+++ b/tests/sort/06d.X
@@ -0,0 +1,2 @@
+A A Z
+A B A
diff --git a/tests/sort/06e.I b/tests/sort/06e.I
new file mode 100644
index 0000000..f44dbf6
--- /dev/null
+++ b/tests/sort/06e.I
@@ -0,0 +1,2 @@
+A B Z
+A A A
diff --git a/tests/sort/06e.X b/tests/sort/06e.X
new file mode 100644
index 0000000..e1608f1
--- /dev/null
+++ b/tests/sort/06e.X
@@ -0,0 +1,2 @@
+A A A
+A B Z
diff --git a/tests/sort/06f.I b/tests/sort/06f.I
new file mode 100644
index 0000000..e2cb554
--- /dev/null
+++ b/tests/sort/06f.I
@@ -0,0 +1,2 @@
+A B A
+A A Z
diff --git a/tests/sort/06f.X b/tests/sort/06f.X
new file mode 100644
index 0000000..24ea562
--- /dev/null
+++ b/tests/sort/06f.X
@@ -0,0 +1,2 @@
+A A Z
+A B A
diff --git a/tests/sort/07a.I b/tests/sort/07a.I
new file mode 100644
index 0000000..1ee50d7
--- /dev/null
+++ b/tests/sort/07a.I
@@ -0,0 +1,2 @@
+9 a b
+7 a a
diff --git a/tests/sort/07a.X b/tests/sort/07a.X
new file mode 100644
index 0000000..88fe519
--- /dev/null
+++ b/tests/sort/07a.X
@@ -0,0 +1,2 @@
+7 a a
+9 a b
diff --git a/tests/sort/07b.I b/tests/sort/07b.I
new file mode 100644
index 0000000..cf35756
--- /dev/null
+++ b/tests/sort/07b.I
@@ -0,0 +1,2 @@
+a a b
+z a a
diff --git a/tests/sort/07b.X b/tests/sort/07b.X
new file mode 100644
index 0000000..1163080
--- /dev/null
+++ b/tests/sort/07b.X
@@ -0,0 +1,2 @@
+z a a
+a a b
diff --git a/tests/sort/07c.I b/tests/sort/07c.I
new file mode 100644
index 0000000..eebd3ca
--- /dev/null
+++ b/tests/sort/07c.I
@@ -0,0 +1,2 @@
+y k b
+z k a
diff --git a/tests/sort/07c.X b/tests/sort/07c.X
new file mode 100644
index 0000000..75670f4
--- /dev/null
+++ b/tests/sort/07c.X
@@ -0,0 +1,2 @@
+z k a
+y k b
diff --git a/tests/sort/07d.I b/tests/sort/07d.I
new file mode 100644
index 0000000..eebd3ca
--- /dev/null
+++ b/tests/sort/07d.I
@@ -0,0 +1,2 @@
+y k b
+z k a
diff --git a/tests/sort/07d.X b/tests/sort/07d.X
new file mode 100644
index 0000000..75670f4
--- /dev/null
+++ b/tests/sort/07d.X
@@ -0,0 +1,2 @@
+z k a
+y k b
diff --git a/tests/sort/08a.I b/tests/sort/08a.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/08a.I
diff --git a/tests/sort/08a.X b/tests/sort/08a.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/08a.X
diff --git a/tests/sort/08b.I b/tests/sort/08b.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/08b.I
diff --git a/tests/sort/08b.X b/tests/sort/08b.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/08b.X
diff --git a/tests/sort/09a.I b/tests/sort/09a.I
new file mode 100644
index 0000000..a539369
--- /dev/null
+++ b/tests/sort/09a.I
@@ -0,0 +1,2 @@
+1e2
+2e1
diff --git a/tests/sort/09a.X b/tests/sort/09a.X
new file mode 100644
index 0000000..986cc00
--- /dev/null
+++ b/tests/sort/09a.X
@@ -0,0 +1,2 @@
+2e1
+1e2
diff --git a/tests/sort/09b.I b/tests/sort/09b.I
new file mode 100644
index 0000000..a539369
--- /dev/null
+++ b/tests/sort/09b.I
@@ -0,0 +1,2 @@
+1e2
+2e1
diff --git a/tests/sort/09b.X b/tests/sort/09b.X
new file mode 100644
index 0000000..a539369
--- /dev/null
+++ b/tests/sort/09b.X
@@ -0,0 +1,2 @@
+1e2
+2e1
diff --git a/tests/sort/09c.I b/tests/sort/09c.I
new file mode 100644
index 0000000..986cc00
--- /dev/null
+++ b/tests/sort/09c.I
@@ -0,0 +1,2 @@
+2e1
+1e2
diff --git a/tests/sort/09c.X b/tests/sort/09c.X
new file mode 100644
index 0000000..a539369
--- /dev/null
+++ b/tests/sort/09c.X
@@ -0,0 +1,2 @@
+1e2
+2e1
diff --git a/tests/sort/09d.I b/tests/sort/09d.I
new file mode 100644
index 0000000..9d428da
--- /dev/null
+++ b/tests/sort/09d.I
@@ -0,0 +1,2 @@
+a 1e2
+b 2e1
diff --git a/tests/sort/09d.X b/tests/sort/09d.X
new file mode 100644
index 0000000..0ef4210
--- /dev/null
+++ b/tests/sort/09d.X
@@ -0,0 +1,2 @@
+b 2e1
+a 1e2
diff --git a/tests/sort/10a.I b/tests/sort/10a.I
new file mode 100644
index 0000000..ff811a4
--- /dev/null
+++ b/tests/sort/10a.I
@@ -0,0 +1,2 @@
+:ba
+:ab
diff --git a/tests/sort/10a.X b/tests/sort/10a.X
new file mode 100644
index 0000000..ff811a4
--- /dev/null
+++ b/tests/sort/10a.X
@@ -0,0 +1,2 @@
+:ba
+:ab
diff --git a/tests/sort/10a0.I b/tests/sort/10a0.I
new file mode 100644
index 0000000..a997cbb
--- /dev/null
+++ b/tests/sort/10a0.I
@@ -0,0 +1,2 @@
+z ba
+z ab
diff --git a/tests/sort/10a0.X b/tests/sort/10a0.X
new file mode 100644
index 0000000..a997cbb
--- /dev/null
+++ b/tests/sort/10a0.X
@@ -0,0 +1,2 @@
+z ba
+z ab
diff --git a/tests/sort/10a1.I b/tests/sort/10a1.I
new file mode 100644
index 0000000..16c9fca
--- /dev/null
+++ b/tests/sort/10a1.I
@@ -0,0 +1,2 @@
+ba
+ab
diff --git a/tests/sort/10a1.X b/tests/sort/10a1.X
new file mode 100644
index 0000000..16c9fca
--- /dev/null
+++ b/tests/sort/10a1.X
@@ -0,0 +1,2 @@
+ba
+ab
diff --git a/tests/sort/10a2.I b/tests/sort/10a2.I
new file mode 100644
index 0000000..a997cbb
--- /dev/null
+++ b/tests/sort/10a2.I
@@ -0,0 +1,2 @@
+z ba
+z ab
diff --git a/tests/sort/10a2.X b/tests/sort/10a2.X
new file mode 100644
index 0000000..a997cbb
--- /dev/null
+++ b/tests/sort/10a2.X
@@ -0,0 +1,2 @@
+z ba
+z ab
diff --git a/tests/sort/10b.I b/tests/sort/10b.I
new file mode 100644
index 0000000..ff811a4
--- /dev/null
+++ b/tests/sort/10b.I
@@ -0,0 +1,2 @@
+:ba
+:ab
diff --git a/tests/sort/10b.X b/tests/sort/10b.X
new file mode 100644
index 0000000..ff811a4
--- /dev/null
+++ b/tests/sort/10b.X
@@ -0,0 +1,2 @@
+:ba
+:ab
diff --git a/tests/sort/10c.I b/tests/sort/10c.I
new file mode 100644
index 0000000..64f2cb1
--- /dev/null
+++ b/tests/sort/10c.I
@@ -0,0 +1,2 @@
+:ab
+:ba
diff --git a/tests/sort/10c.X b/tests/sort/10c.X
new file mode 100644
index 0000000..ff811a4
--- /dev/null
+++ b/tests/sort/10c.X
@@ -0,0 +1,2 @@
+:ba
+:ab
diff --git a/tests/sort/10d.I b/tests/sort/10d.I
new file mode 100644
index 0000000..64f2cb1
--- /dev/null
+++ b/tests/sort/10d.I
@@ -0,0 +1,2 @@
+:ab
+:ba
diff --git a/tests/sort/10d.X b/tests/sort/10d.X
new file mode 100644
index 0000000..ff811a4
--- /dev/null
+++ b/tests/sort/10d.X
@@ -0,0 +1,2 @@
+:ba
+:ab
diff --git a/tests/sort/10e.I b/tests/sort/10e.I
new file mode 100644
index 0000000..b889aa0
--- /dev/null
+++ b/tests/sort/10e.I
@@ -0,0 +1,2 @@
+ab
+ba
diff --git a/tests/sort/10e.X b/tests/sort/10e.X
new file mode 100644
index 0000000..16c9fca
--- /dev/null
+++ b/tests/sort/10e.X
@@ -0,0 +1,2 @@
+ba
+ab
diff --git a/tests/sort/10f.I b/tests/sort/10f.I
new file mode 100644
index 0000000..64f2cb1
--- /dev/null
+++ b/tests/sort/10f.I
@@ -0,0 +1,2 @@
+:ab
+:ba
diff --git a/tests/sort/10f.X b/tests/sort/10f.X
new file mode 100644
index 0000000..ff811a4
--- /dev/null
+++ b/tests/sort/10f.X
@@ -0,0 +1,2 @@
+:ba
+:ab
diff --git a/tests/sort/10g.I b/tests/sort/10g.I
new file mode 100644
index 0000000..092f6be
--- /dev/null
+++ b/tests/sort/10g.I
@@ -0,0 +1,2 @@
+a ab
+b ba
diff --git a/tests/sort/10g.X b/tests/sort/10g.X
new file mode 100644
index 0000000..6d60415
--- /dev/null
+++ b/tests/sort/10g.X
@@ -0,0 +1,2 @@
+b ba
+a ab
diff --git a/tests/sort/11a.I b/tests/sort/11a.I
new file mode 100644
index 0000000..e60def5
--- /dev/null
+++ b/tests/sort/11a.I
@@ -0,0 +1,2 @@
+a :a
+a :b
diff --git a/tests/sort/11a.X b/tests/sort/11a.X
new file mode 100644
index 0000000..e60def5
--- /dev/null
+++ b/tests/sort/11a.X
@@ -0,0 +1,2 @@
+a :a
+a :b
diff --git a/tests/sort/11b.I b/tests/sort/11b.I
new file mode 100644
index 0000000..415e2eb
--- /dev/null
+++ b/tests/sort/11b.I
@@ -0,0 +1,2 @@
+a :b
+a :a
diff --git a/tests/sort/11b.X b/tests/sort/11b.X
new file mode 100644
index 0000000..e60def5
--- /dev/null
+++ b/tests/sort/11b.X
@@ -0,0 +1,2 @@
+a :a
+a :b
diff --git a/tests/sort/11c.I b/tests/sort/11c.I
new file mode 100644
index 0000000..8517d85
--- /dev/null
+++ b/tests/sort/11c.I
@@ -0,0 +1,2 @@
+z:a :a
+a :b
diff --git a/tests/sort/11c.X b/tests/sort/11c.X
new file mode 100644
index 0000000..8517d85
--- /dev/null
+++ b/tests/sort/11c.X
@@ -0,0 +1,2 @@
+z:a :a
+a :b
diff --git a/tests/sort/11d.I b/tests/sort/11d.I
new file mode 100644
index 0000000..87f0108
--- /dev/null
+++ b/tests/sort/11d.I
@@ -0,0 +1,2 @@
+z:a :b
+a :a
diff --git a/tests/sort/11d.X b/tests/sort/11d.X
new file mode 100644
index 0000000..7848bb6
--- /dev/null
+++ b/tests/sort/11d.X
@@ -0,0 +1,2 @@
+a :a
+z:a :b
diff --git a/tests/sort/12a.I b/tests/sort/12a.I
new file mode 100644
index 0000000..36848de
--- /dev/null
+++ b/tests/sort/12a.I
@@ -0,0 +1,2 @@
+a:1
+b:-
diff --git a/tests/sort/12a.X b/tests/sort/12a.X
new file mode 100644
index 0000000..ec3717a
--- /dev/null
+++ b/tests/sort/12a.X
@@ -0,0 +1,2 @@
+b:-
+a:1
diff --git a/tests/sort/12b.I b/tests/sort/12b.I
new file mode 100644
index 0000000..ec3717a
--- /dev/null
+++ b/tests/sort/12b.I
@@ -0,0 +1,2 @@
+b:-
+a:1
diff --git a/tests/sort/12b.X b/tests/sort/12b.X
new file mode 100644
index 0000000..ec3717a
--- /dev/null
+++ b/tests/sort/12b.X
@@ -0,0 +1,2 @@
+b:-
+a:1
diff --git a/tests/sort/12c.I b/tests/sort/12c.I
new file mode 100644
index 0000000..a26d65d
--- /dev/null
+++ b/tests/sort/12c.I
@@ -0,0 +1,2 @@
+a:1
+b:X
diff --git a/tests/sort/12c.X b/tests/sort/12c.X
new file mode 100644
index 0000000..61a9b94
--- /dev/null
+++ b/tests/sort/12c.X
@@ -0,0 +1,2 @@
+b:X
+a:1
diff --git a/tests/sort/12d.I b/tests/sort/12d.I
new file mode 100644
index 0000000..61a9b94
--- /dev/null
+++ b/tests/sort/12d.I
@@ -0,0 +1,2 @@
+b:X
+a:1
diff --git a/tests/sort/12d.X b/tests/sort/12d.X
new file mode 100644
index 0000000..61a9b94
--- /dev/null
+++ b/tests/sort/12d.X
@@ -0,0 +1,2 @@
+b:X
+a:1
diff --git a/tests/sort/13a.I b/tests/sort/13a.I
new file mode 100644
index 0000000..2f2c538
--- /dev/null
+++ b/tests/sort/13a.I
@@ -0,0 +1,2 @@
+axx
+b-1
diff --git a/tests/sort/13a.X b/tests/sort/13a.X
new file mode 100644
index 0000000..3a78e65
--- /dev/null
+++ b/tests/sort/13a.X
@@ -0,0 +1,2 @@
+b-1
+axx
diff --git a/tests/sort/13b.I b/tests/sort/13b.I
new file mode 100644
index 0000000..3a78e65
--- /dev/null
+++ b/tests/sort/13b.I
@@ -0,0 +1,2 @@
+b-1
+axx
diff --git a/tests/sort/13b.X b/tests/sort/13b.X
new file mode 100644
index 0000000..3a78e65
--- /dev/null
+++ b/tests/sort/13b.X
@@ -0,0 +1,2 @@
+b-1
+axx
diff --git a/tests/sort/14a.I b/tests/sort/14a.I
new file mode 100644
index 0000000..26940e4
--- /dev/null
+++ b/tests/sort/14a.I
@@ -0,0 +1,3 @@
+mal
+mal-
+mala
diff --git a/tests/sort/14a.X b/tests/sort/14a.X
new file mode 100644
index 0000000..7386438
--- /dev/null
+++ b/tests/sort/14a.X
@@ -0,0 +1,2 @@
+mal
+mala
diff --git a/tests/sort/14b.I b/tests/sort/14b.I
new file mode 100644
index 0000000..26940e4
--- /dev/null
+++ b/tests/sort/14b.I
@@ -0,0 +1,3 @@
+mal
+mal-
+mala
diff --git a/tests/sort/14b.X b/tests/sort/14b.X
new file mode 100644
index 0000000..7386438
--- /dev/null
+++ b/tests/sort/14b.X
@@ -0,0 +1,2 @@
+mal
+mala
diff --git a/tests/sort/15a.I b/tests/sort/15a.I
new file mode 100644
index 0000000..f462609
--- /dev/null
+++ b/tests/sort/15a.I
@@ -0,0 +1,2 @@
+a
+a
diff --git a/tests/sort/15a.X b/tests/sort/15a.X
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/tests/sort/15a.X
@@ -0,0 +1 @@
+a
diff --git a/tests/sort/15b.I b/tests/sort/15b.I
new file mode 100644
index 0000000..49350c2
--- /dev/null
+++ b/tests/sort/15b.I
@@ -0,0 +1,2 @@
+a
+a
diff --git a/tests/sort/15b.X b/tests/sort/15b.X
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/tests/sort/15b.X
@@ -0,0 +1 @@
+a
diff --git a/tests/sort/15c.I b/tests/sort/15c.I
new file mode 100644
index 0000000..f1b6bee
--- /dev/null
+++ b/tests/sort/15c.I
@@ -0,0 +1,2 @@
+a
+a
diff --git a/tests/sort/15c.X b/tests/sort/15c.X
new file mode 100644
index 0000000..1d4219d
--- /dev/null
+++ b/tests/sort/15c.X
@@ -0,0 +1 @@
+a
diff --git a/tests/sort/15d.I b/tests/sort/15d.I
new file mode 100644
index 0000000..149fe18
--- /dev/null
+++ b/tests/sort/15d.I
@@ -0,0 +1,2 @@
+a
+a
diff --git a/tests/sort/15d.X b/tests/sort/15d.X
new file mode 100644
index 0000000..5fcc983
--- /dev/null
+++ b/tests/sort/15d.X
@@ -0,0 +1 @@
+a
diff --git a/tests/sort/15e.I b/tests/sort/15e.I
new file mode 100644
index 0000000..eaa087f
--- /dev/null
+++ b/tests/sort/15e.I
@@ -0,0 +1,2 @@
+a
+a
diff --git a/tests/sort/15e.X b/tests/sort/15e.X
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/tests/sort/15e.X
@@ -0,0 +1 @@
+a
diff --git a/tests/sort/16a.I b/tests/sort/16a.I
new file mode 100644
index 0000000..675dd1a
--- /dev/null
+++ b/tests/sort/16a.I
@@ -0,0 +1,6 @@
+éminence
+überhaupt
+'s-Gravenhage
+aëroclub
+Aag
+aagtappels
diff --git a/tests/sort/16a.X b/tests/sort/16a.X
new file mode 100644
index 0000000..11ab7c3
--- /dev/null
+++ b/tests/sort/16a.X
@@ -0,0 +1,6 @@
+'s-Gravenhage
+Aag
+aagtappels
+aëroclub
+éminence
+überhaupt
diff --git a/tests/sort/17.I b/tests/sort/17.I
new file mode 100644
index 0000000..ad8566c
--- /dev/null
+++ b/tests/sort/17.I
@@ -0,0 +1 @@
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
diff --git a/tests/sort/17.X b/tests/sort/17.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/17.X
diff --git a/tests/sort/18a.I b/tests/sort/18a.I
new file mode 100644
index 0000000..099f3e7
--- /dev/null
+++ b/tests/sort/18a.I
@@ -0,0 +1,2 @@
+ 901
+100
diff --git a/tests/sort/18a.X b/tests/sort/18a.X
new file mode 100644
index 0000000..099f3e7
--- /dev/null
+++ b/tests/sort/18a.X
@@ -0,0 +1,2 @@
+ 901
+100
diff --git a/tests/sort/18b.I b/tests/sort/18b.I
new file mode 100644
index 0000000..099f3e7
--- /dev/null
+++ b/tests/sort/18b.I
@@ -0,0 +1,2 @@
+ 901
+100
diff --git a/tests/sort/18b.X b/tests/sort/18b.X
new file mode 100644
index 0000000..099f3e7
--- /dev/null
+++ b/tests/sort/18b.X
@@ -0,0 +1,2 @@
+ 901
+100
diff --git a/tests/sort/18c.I b/tests/sort/18c.I
new file mode 100644
index 0000000..099f3e7
--- /dev/null
+++ b/tests/sort/18c.I
@@ -0,0 +1,2 @@
+ 901
+100
diff --git a/tests/sort/18c.X b/tests/sort/18c.X
new file mode 100644
index 0000000..838e5ad
--- /dev/null
+++ b/tests/sort/18c.X
@@ -0,0 +1,2 @@
+100
+ 901
diff --git a/tests/sort/18d.I b/tests/sort/18d.I
new file mode 100644
index 0000000..099f3e7
--- /dev/null
+++ b/tests/sort/18d.I
@@ -0,0 +1,2 @@
+ 901
+100
diff --git a/tests/sort/18d.X b/tests/sort/18d.X
new file mode 100644
index 0000000..099f3e7
--- /dev/null
+++ b/tests/sort/18d.X
@@ -0,0 +1,2 @@
+ 901
+100
diff --git a/tests/sort/18e.I b/tests/sort/18e.I
new file mode 100644
index 0000000..099f3e7
--- /dev/null
+++ b/tests/sort/18e.I
@@ -0,0 +1,2 @@
+ 901
+100
diff --git a/tests/sort/18e.X b/tests/sort/18e.X
new file mode 100644
index 0000000..838e5ad
--- /dev/null
+++ b/tests/sort/18e.X
@@ -0,0 +1,2 @@
+100
+ 901
diff --git a/tests/sort/19a.I b/tests/sort/19a.I
new file mode 100644
index 0000000..36536f2
--- /dev/null
+++ b/tests/sort/19a.I
@@ -0,0 +1,3 @@
+b 2
+b 1
+b 3
diff --git a/tests/sort/19a.X b/tests/sort/19a.X
new file mode 100644
index 0000000..c05c534
--- /dev/null
+++ b/tests/sort/19a.X
@@ -0,0 +1,3 @@
+b 1
+b 2
+b 3
diff --git a/tests/sort/19b.I b/tests/sort/19b.I
new file mode 100644
index 0000000..36536f2
--- /dev/null
+++ b/tests/sort/19b.I
@@ -0,0 +1,3 @@
+b 2
+b 1
+b 3
diff --git a/tests/sort/19b.X b/tests/sort/19b.X
new file mode 100644
index 0000000..8caad00
--- /dev/null
+++ b/tests/sort/19b.X
@@ -0,0 +1,3 @@
+b 3
+b 2
+b 1
diff --git a/tests/sort/20a.I b/tests/sort/20a.I
new file mode 100644
index 0000000..8dc9145
--- /dev/null
+++ b/tests/sort/20a.I
@@ -0,0 +1,10 @@
+_________U__free
+_________U__malloc
+_________U__abort
+_________U__memcpy
+_________U__memset
+_________U_dyld_stub_binding_helper
+_________U__malloc
+_________U___iob
+_________U__abort
+_________U__fprintf
diff --git a/tests/sort/20a.X b/tests/sort/20a.X
new file mode 100644
index 0000000..c073c2a
--- /dev/null
+++ b/tests/sort/20a.X
@@ -0,0 +1,10 @@
+_________U___iob
+_________U__abort
+_________U__abort
+_________U__fprintf
+_________U__free
+_________U__malloc
+_________U__malloc
+_________U__memcpy
+_________U__memset
+_________U_dyld_stub_binding_helper
diff --git a/tests/sort/21a.I b/tests/sort/21a.I
new file mode 100644
index 0000000..3e8d813
--- /dev/null
+++ b/tests/sort/21a.I
@@ -0,0 +1,3 @@
+A
+a
+_
diff --git a/tests/sort/21a.X b/tests/sort/21a.X
new file mode 100644
index 0000000..5756033
--- /dev/null
+++ b/tests/sort/21a.X
@@ -0,0 +1,3 @@
+A
+_
+a
diff --git a/tests/sort/21b.I b/tests/sort/21b.I
new file mode 100644
index 0000000..3e8d813
--- /dev/null
+++ b/tests/sort/21b.I
@@ -0,0 +1,3 @@
+A
+a
+_
diff --git a/tests/sort/21b.X b/tests/sort/21b.X
new file mode 100644
index 0000000..3e8d813
--- /dev/null
+++ b/tests/sort/21b.X
@@ -0,0 +1,3 @@
+A
+a
+_
diff --git a/tests/sort/21c.I b/tests/sort/21c.I
new file mode 100644
index 0000000..d1d8b45
--- /dev/null
+++ b/tests/sort/21c.I
@@ -0,0 +1,3 @@
+a
+A
+_
diff --git a/tests/sort/21c.X b/tests/sort/21c.X
new file mode 100644
index 0000000..3e8d813
--- /dev/null
+++ b/tests/sort/21c.X
@@ -0,0 +1,3 @@
+A
+a
+_
diff --git a/tests/sort/21d.I b/tests/sort/21d.I
new file mode 100644
index 0000000..ddaee30
--- /dev/null
+++ b/tests/sort/21d.I
@@ -0,0 +1,3 @@
+_
+a
+A
diff --git a/tests/sort/21d.X b/tests/sort/21d.X
new file mode 100644
index 0000000..3e8d813
--- /dev/null
+++ b/tests/sort/21d.X
@@ -0,0 +1,3 @@
+A
+a
+_
diff --git a/tests/sort/21e.I b/tests/sort/21e.I
new file mode 100644
index 0000000..479bb34
--- /dev/null
+++ b/tests/sort/21e.I
@@ -0,0 +1,3 @@
+a
+_
+A
diff --git a/tests/sort/21e.X b/tests/sort/21e.X
new file mode 100644
index 0000000..3e8d813
--- /dev/null
+++ b/tests/sort/21e.X
@@ -0,0 +1,3 @@
+A
+a
+_
diff --git a/tests/sort/21f.I b/tests/sort/21f.I
new file mode 100644
index 0000000..3e8d813
--- /dev/null
+++ b/tests/sort/21f.I
@@ -0,0 +1,3 @@
+A
+a
+_
diff --git a/tests/sort/21f.X b/tests/sort/21f.X
new file mode 100644
index 0000000..3e8d813
--- /dev/null
+++ b/tests/sort/21f.X
@@ -0,0 +1,3 @@
+A
+a
+_
diff --git a/tests/sort/21g.I b/tests/sort/21g.I
new file mode 100644
index 0000000..4beb668
--- /dev/null
+++ b/tests/sort/21g.I
@@ -0,0 +1,2 @@
+a
+_
diff --git a/tests/sort/21g.X b/tests/sort/21g.X
new file mode 100644
index 0000000..4beb668
--- /dev/null
+++ b/tests/sort/21g.X
@@ -0,0 +1,2 @@
+a
+_
diff --git a/tests/sort/22a.I b/tests/sort/22a.I
new file mode 100644
index 0000000..fb86a47
--- /dev/null
+++ b/tests/sort/22a.I
@@ -0,0 +1,2 @@
+3 b
+4 B
diff --git a/tests/sort/22a.X b/tests/sort/22a.X
new file mode 100644
index 0000000..8a7af73
--- /dev/null
+++ b/tests/sort/22a.X
@@ -0,0 +1,2 @@
+4 B
+3 b
diff --git a/tests/sort/22b.I b/tests/sort/22b.I
new file mode 100644
index 0000000..f02af62
--- /dev/null
+++ b/tests/sort/22b.I
@@ -0,0 +1,2 @@
+3 b
+4 b
diff --git a/tests/sort/22b.X b/tests/sort/22b.X
new file mode 100644
index 0000000..1c2a131
--- /dev/null
+++ b/tests/sort/22b.X
@@ -0,0 +1,2 @@
+4 b
+3 b
diff --git a/tests/sort/Makefile.am b/tests/sort/Makefile.am
new file mode 100644
index 0000000..66600e5
--- /dev/null
+++ b/tests/sort/Makefile.am
@@ -0,0 +1,99 @@
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+##test-files-begin
+x = sort
+explicit =
+maint_gen = n1.I n1.X n2.I n2.X n3.I n3.X n4.I n4.X n5.I n5.X n6.I n6.X n7.I \
+n7.X n8a.I n8a.X n8b.I n8b.X n9a.I n9a.X n9b.I n9b.X n10a.I n10a.X n10b.I \
+n10b.X n11a.I n11a.X n11b.I n11b.X 01a.I 01a.X 02a.I 02a.X 02b.I 02b.X 02c.I \
+02c.X 02d.I 02d.X 02e.I 02e.X 02m.I 02m.X 02n.I 02n.X 02o.I 02o.X 02p.I 02p.X \
+03a.I 03a.X 03b.I 03b.X 03c.I 03c.X 03d.I 03d.X 03e.I 03e.X 03f.I 03f.X 03g.I \
+03g.X 03h.I 03h.X 03i.I 03i.X 04a.I 04a.X 04b.I 04b.X 04c.I 04c.X 04d.I 04d.X \
+04e.I 04e.X 05a.I 05a.X 05b.I 05b.X 05c.I 05c.X 05d.I 05d.X 05e.I 05e.X 05f.I \
+05f.X 06a.I 06a.X 06b.I 06b.X 06c.I 06c.X 06d.I 06d.X 06e.I 06e.X 06f.I 06f.X \
+07a.I 07a.X 07b.I 07b.X 07c.I 07c.X 07d.I 07d.X 08a.I 08a.X 08b.I 08b.X 09a.I \
+09a.X 09b.I 09b.X 09c.I 09c.X 09d.I 09d.X 10a.I 10a.X 10b.I 10b.X 10c.I 10c.X \
+10d.I 10d.X 10a0.I 10a0.X 10a1.I 10a1.X 10a2.I 10a2.X 10e.I 10e.X 10f.I 10f.X \
+10g.I 10g.X 11a.I 11a.X 11b.I 11b.X 11c.I 11c.X 11d.I 11d.X 12a.I 12a.X 12b.I \
+12b.X 12c.I 12c.X 12d.I 12d.X 13a.I 13a.X 13b.I 13b.X 14a.I 14a.X 14b.I 14b.X \
+15a.I 15a.X 15b.I 15b.X 15c.I 15c.X 15d.I 15d.X 15e.I 15e.X 16a.I 16a.X 17.I \
+17.X 18a.I 18a.X 18b.I 18b.X 18c.I 18c.X 18d.I 18d.X 18e.I 18e.X 19a.I 19a.X \
+19b.I 19b.X 20a.I 20a.X 21a.I 21a.X 21b.I 21b.X 21c.I 21c.X 21d.I 21d.X 21e.I \
+21e.X 21f.I 21f.X 21g.I 21g.X 22a.I 22a.X 22b.I 22b.X no-file1.X o-no-file1.X \
+create-empty.X neg-nls.I neg-nls.X nul-nls.I nul-nls.X use-nl.I use-nl.X o2.I \
+o2.X incompat1.I incompat1.X incompat2.I incompat2.X incompat3.I incompat3.X \
+incompat4.I incompat4.X incompat5.I incompat5.X incompat6.I incompat6.X \
+nul-tab.I nul-tab.X bigfield.I bigfield.X
+run_gen = n1.O n1.E n2.O n2.E n3.O n3.E n4.O n4.E n5.O n5.E n6.O n6.E n7.O \
+n7.E n8a.O n8a.E n8b.O n8b.E n9a.O n9a.E n9b.O n9b.E n10a.O n10a.E n10b.O \
+n10b.E n11a.O n11a.E n11b.O n11b.E 01a.O 01a.E 02a.O 02a.E 02b.O 02b.E 02c.O \
+02c.E 02d.O 02d.E 02e.O 02e.E 02m.O 02m.E 02n.O 02n.E 02o.O 02o.E 02p.O 02p.E \
+03a.O 03a.E 03b.O 03b.E 03c.O 03c.E 03d.O 03d.E 03e.O 03e.E 03f.O 03f.E 03g.O \
+03g.E 03h.O 03h.E 03i.O 03i.E 04a.O 04a.E 04b.O 04b.E 04c.O 04c.E 04d.O 04d.E \
+04e.O 04e.E 05a.O 05a.E 05b.O 05b.E 05c.O 05c.E 05d.O 05d.E 05e.O 05e.E 05f.O \
+05f.E 06a.O 06a.E 06b.O 06b.E 06c.O 06c.E 06d.O 06d.E 06e.O 06e.E 06f.O 06f.E \
+07a.O 07a.E 07b.O 07b.E 07c.O 07c.E 07d.O 07d.E 08a.O 08a.E 08b.O 08b.E 09a.O \
+09a.E 09b.O 09b.E 09c.O 09c.E 09d.O 09d.E 10a.O 10a.E 10b.O 10b.E 10c.O 10c.E \
+10d.O 10d.E 10a0.O 10a0.E 10a1.O 10a1.E 10a2.O 10a2.E 10e.O 10e.E 10f.O 10f.E \
+10g.O 10g.E 11a.O 11a.E 11b.O 11b.E 11c.O 11c.E 11d.O 11d.E 12a.O 12a.E 12b.O \
+12b.E 12c.O 12c.E 12d.O 12d.E 13a.O 13a.E 13b.O 13b.E 14a.O 14a.E 14b.O 14b.E \
+15a.O 15a.E 15b.O 15b.E 15c.O 15c.E 15d.O 15d.E 15e.O 15e.E 16a.O 16a.E 17.O \
+17.E 18a.O 18a.E 18b.O 18b.E 18c.O 18c.E 18d.O 18d.E 18e.O 18e.E 19a.O 19a.E \
+19b.O 19b.E 20a.O 20a.E 21a.O 21a.E 21b.O 21b.E 21c.O 21c.E 21d.O 21d.E 21e.O \
+21e.E 21f.O 21f.E 21g.O 21g.E 22a.O 22a.E 22b.O 22b.E no-file1.O no-file1.E \
+o-no-file1.O o-no-file1.E create-empty.O create-empty.E neg-nls.O neg-nls.E \
+nul-nls.O nul-nls.E use-nl.O use-nl.E o2.O o2.E incompat1.O incompat1.E \
+incompat2.O incompat2.E incompat3.O incompat3.E incompat4.O incompat4.E \
+incompat5.O incompat5.E incompat6.O incompat6.E nul-tab.O nul-tab.E \
+bigfield.O bigfield.E
+##test-files-end
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+
+TESTS = $x-tests
+
+mk_script = $(srcdir)/../mk-script
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
diff --git a/tests/sort/Makefile.in b/tests/sort/Makefile.in
new file mode 100644
index 0000000..cab283b
--- /dev/null
+++ b/tests/sort/Makefile.in
@@ -0,0 +1,809 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/sort
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SCRIPTS = $(noinst_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+x = sort
+explicit =
+maint_gen = n1.I n1.X n2.I n2.X n3.I n3.X n4.I n4.X n5.I n5.X n6.I n6.X n7.I \
+n7.X n8a.I n8a.X n8b.I n8b.X n9a.I n9a.X n9b.I n9b.X n10a.I n10a.X n10b.I \
+n10b.X n11a.I n11a.X n11b.I n11b.X 01a.I 01a.X 02a.I 02a.X 02b.I 02b.X 02c.I \
+02c.X 02d.I 02d.X 02e.I 02e.X 02m.I 02m.X 02n.I 02n.X 02o.I 02o.X 02p.I 02p.X \
+03a.I 03a.X 03b.I 03b.X 03c.I 03c.X 03d.I 03d.X 03e.I 03e.X 03f.I 03f.X 03g.I \
+03g.X 03h.I 03h.X 03i.I 03i.X 04a.I 04a.X 04b.I 04b.X 04c.I 04c.X 04d.I 04d.X \
+04e.I 04e.X 05a.I 05a.X 05b.I 05b.X 05c.I 05c.X 05d.I 05d.X 05e.I 05e.X 05f.I \
+05f.X 06a.I 06a.X 06b.I 06b.X 06c.I 06c.X 06d.I 06d.X 06e.I 06e.X 06f.I 06f.X \
+07a.I 07a.X 07b.I 07b.X 07c.I 07c.X 07d.I 07d.X 08a.I 08a.X 08b.I 08b.X 09a.I \
+09a.X 09b.I 09b.X 09c.I 09c.X 09d.I 09d.X 10a.I 10a.X 10b.I 10b.X 10c.I 10c.X \
+10d.I 10d.X 10a0.I 10a0.X 10a1.I 10a1.X 10a2.I 10a2.X 10e.I 10e.X 10f.I 10f.X \
+10g.I 10g.X 11a.I 11a.X 11b.I 11b.X 11c.I 11c.X 11d.I 11d.X 12a.I 12a.X 12b.I \
+12b.X 12c.I 12c.X 12d.I 12d.X 13a.I 13a.X 13b.I 13b.X 14a.I 14a.X 14b.I 14b.X \
+15a.I 15a.X 15b.I 15b.X 15c.I 15c.X 15d.I 15d.X 15e.I 15e.X 16a.I 16a.X 17.I \
+17.X 18a.I 18a.X 18b.I 18b.X 18c.I 18c.X 18d.I 18d.X 18e.I 18e.X 19a.I 19a.X \
+19b.I 19b.X 20a.I 20a.X 21a.I 21a.X 21b.I 21b.X 21c.I 21c.X 21d.I 21d.X 21e.I \
+21e.X 21f.I 21f.X 21g.I 21g.X 22a.I 22a.X 22b.I 22b.X no-file1.X o-no-file1.X \
+create-empty.X neg-nls.I neg-nls.X nul-nls.I nul-nls.X use-nl.I use-nl.X o2.I \
+o2.X incompat1.I incompat1.X incompat2.I incompat2.X incompat3.I incompat3.X \
+incompat4.I incompat4.X incompat5.I incompat5.X incompat6.I incompat6.X \
+nul-tab.I nul-tab.X bigfield.I bigfield.X
+
+run_gen = n1.O n1.E n2.O n2.E n3.O n3.E n4.O n4.E n5.O n5.E n6.O n6.E n7.O \
+n7.E n8a.O n8a.E n8b.O n8b.E n9a.O n9a.E n9b.O n9b.E n10a.O n10a.E n10b.O \
+n10b.E n11a.O n11a.E n11b.O n11b.E 01a.O 01a.E 02a.O 02a.E 02b.O 02b.E 02c.O \
+02c.E 02d.O 02d.E 02e.O 02e.E 02m.O 02m.E 02n.O 02n.E 02o.O 02o.E 02p.O 02p.E \
+03a.O 03a.E 03b.O 03b.E 03c.O 03c.E 03d.O 03d.E 03e.O 03e.E 03f.O 03f.E 03g.O \
+03g.E 03h.O 03h.E 03i.O 03i.E 04a.O 04a.E 04b.O 04b.E 04c.O 04c.E 04d.O 04d.E \
+04e.O 04e.E 05a.O 05a.E 05b.O 05b.E 05c.O 05c.E 05d.O 05d.E 05e.O 05e.E 05f.O \
+05f.E 06a.O 06a.E 06b.O 06b.E 06c.O 06c.E 06d.O 06d.E 06e.O 06e.E 06f.O 06f.E \
+07a.O 07a.E 07b.O 07b.E 07c.O 07c.E 07d.O 07d.E 08a.O 08a.E 08b.O 08b.E 09a.O \
+09a.E 09b.O 09b.E 09c.O 09c.E 09d.O 09d.E 10a.O 10a.E 10b.O 10b.E 10c.O 10c.E \
+10d.O 10d.E 10a0.O 10a0.E 10a1.O 10a1.E 10a2.O 10a2.E 10e.O 10e.E 10f.O 10f.E \
+10g.O 10g.E 11a.O 11a.E 11b.O 11b.E 11c.O 11c.E 11d.O 11d.E 12a.O 12a.E 12b.O \
+12b.E 12c.O 12c.E 12d.O 12d.E 13a.O 13a.E 13b.O 13b.E 14a.O 14a.E 14b.O 14b.E \
+15a.O 15a.E 15b.O 15b.E 15c.O 15c.E 15d.O 15d.E 15e.O 15e.E 16a.O 16a.E 17.O \
+17.E 18a.O 18a.E 18b.O 18b.E 18c.O 18c.E 18d.O 18d.E 18e.O 18e.E 19a.O 19a.E \
+19b.O 19b.E 20a.O 20a.E 21a.O 21a.E 21b.O 21b.E 21c.O 21c.E 21d.O 21d.E 21e.O \
+21e.E 21f.O 21f.E 21g.O 21g.E 22a.O 22a.E 22b.O 22b.E no-file1.O no-file1.E \
+o-no-file1.O o-no-file1.E create-empty.O create-empty.E neg-nls.O neg-nls.E \
+nul-nls.O nul-nls.E use-nl.O use-nl.E o2.O o2.E incompat1.O incompat1.E \
+incompat2.O incompat2.E incompat3.O incompat3.E incompat4.O incompat4.E \
+incompat5.O incompat5.E incompat6.O incompat6.E nul-tab.O nul-tab.E \
+bigfield.O bigfield.E
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+TESTS = $x-tests
+mk_script = $(srcdir)/../mk-script
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/sort/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/sort/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(SCRIPTS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/sort/Test.pm b/tests/sort/Test.pm
new file mode 100755
index 0000000..dc41d92
--- /dev/null
+++ b/tests/sort/Test.pm
@@ -0,0 +1,292 @@
+# -*-perl-*-
+# Test "sort".
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005,
+# 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+package Test;
+require 5.002;
+use strict;
+
+# Tell sort to accept old-style options like `+1'.
+$Test::env_default = ['_POSIX2_VERSION=199209'];
+
+my @tv = (
+#test options input expected-output expected-return-code
+#
+["n1", '-n', ".01\n0\n", "0\n.01\n", 0],
+["n2", '-n', ".02\n.01\n", ".01\n.02\n", 0],
+["n3", '-n', ".02\n.00\n", ".00\n.02\n", 0],
+["n4", '-n', ".02\n.000\n", ".000\n.02\n", 0],
+["n5", '-n', ".021\n.029\n", ".021\n.029\n", 0],
+
+["n6", '-n', ".02\n.0*\n", ".0*\n.02\n", 0],
+["n7", '-n', ".02\n.*\n", ".*\n.02\n", 0],
+["n8a", '-s -n -k1,1', ".0a\n.0b\n", ".0a\n.0b\n", 0],
+["n8b", '-s -n -k1,1', ".0b\n.0a\n", ".0b\n.0a\n", 0],
+["n9a", '-s -n -k1,1', ".000a\n.000b\n", ".000a\n.000b\n", 0],
+["n9b", '-s -n -k1,1', ".000b\n.000a\n", ".000b\n.000a\n", 0],
+["n10a", '-s -n -k1,1', ".00a\n.000b\n", ".00a\n.000b\n", 0],
+["n10b", '-s -n -k1,1', ".00b\n.000a\n", ".00b\n.000a\n", 0],
+["n11a", '-s -n -k1,1', ".01a\n.010\n", ".01a\n.010\n", 0],
+["n11b", '-s -n -k1,1', ".010\n.01a\n", ".010\n.01a\n", 0],
+
+["01a", '', "A\nB\nC\n", "A\nB\nC\n", 0],
+#
+["02a", '-c', "A\nB\nC\n", '', 0],
+["02b", '-c', "A\nC\nB\n", '', 1],
+["02c", '-c -k1,1', "a\na b\n", '', 0],
+["02d", '-C', "A\nB\nC\n", '', 0],
+["02e", '-C', "A\nC\nB\n", '', 1],
+# This should fail because there are duplicate keys
+["02m", '-cu', "A\nA\n", '', 1],
+["02n", '-cu', "A\nB\n", '', 0],
+["02o", '-cu', "A\nB\nB\n", '', 1],
+["02p", '-cu', "B\nA\nB\n", '', 1],
+#
+["03a", '-k1', "B\nA\n", "A\nB\n", 0],
+["03b", '-k1,1', "B\nA\n", "A\nB\n", 0],
+["03c", '-k1 -k2', "A b\nA a\n", "A a\nA b\n", 0],
+# Fail with a diagnostic when -k specifies field == 0.
+["03d", '-k0', "", "", 2],
+# Fail with a diagnostic when -k specifies character == 0.
+["03e", '-k1.0', "", "", 2],
+["03f", '-k1.1,-k0', "", "", 2],
+# This is ok.
+["03g", '-k1.1,1.0', "", "", 0],
+# This is equivalent to 3f.
+["03h", '-k1.1,1', "", "", 0],
+# This too, is equivalent to 3f.
+["03i", '-k1,1', "", "", 0],
+#
+["04a", '-nc', "2\n11\n", "", 0],
+["04b", '-n', "11\n2\n", "2\n11\n", 0],
+["04c", '-k1n', "11\n2\n", "2\n11\n", 0],
+["04d", '-k1', "11\n2\n", "11\n2\n", 0],
+["04e", '-k2', "ignored B\nz-ig A\n", "z-ig A\nignored B\n", 0],
+#
+["05a", '-k1,2', "A B\nA A\n", "A A\nA B\n", 0],
+["05b", '-k1,2', "A B A\nA A Z\n", "A A Z\nA B A\n", 0],
+["05c", '-k1 -k2', "A B A\nA A Z\n", "A A Z\nA B A\n", 0],
+["05d", '-k2,2', "A B A\nA A Z\n", "A A Z\nA B A\n", 0],
+["05e", '-k2,2', "A B Z\nA A A\n", "A A A\nA B Z\n", 0],
+["05f", '-k2,2', "A B A\nA A Z\n", "A A Z\nA B A\n", 0],
+#
+["06a", '-k 1,2', "A B\nA A\n", "A A\nA B\n", 0],
+["06b", '-k 1,2', "A B A\nA A Z\n", "A A Z\nA B A\n", 0],
+["06c", '-k 1 -k 2', "A B A\nA A Z\n", "A A Z\nA B A\n", 0],
+["06d", '-k 2,2', "A B A\nA A Z\n", "A A Z\nA B A\n", 0],
+["06e", '-k 2,2', "A B Z\nA A A\n", "A A A\nA B Z\n", 0],
+["06f", '-k 2,2', "A B A\nA A Z\n", "A A Z\nA B A\n", 0],
+#
+["07a", '-k 2,3', "9 a b\n7 a a\n", "7 a a\n9 a b\n", 0],
+["07b", '-k 2,3', "a a b\nz a a\n", "z a a\na a b\n", 0],
+["07c", '-k 2,3', "y k b\nz k a\n", "z k a\ny k b\n", 0],
+["07d", '+1 -3', "y k b\nz k a\n", "z k a\ny k b\n", 0],
+#
+# report an error for `.' without following char spec
+["08a", '-k 2.,3', "", "", 2],
+# report an error for `,' without following POS2
+["08b", '-k 2,', "", "", 2],
+#
+# Test new -g option.
+["09a", '-g', "1e2\n2e1\n", "2e1\n1e2\n", 0],
+# Make sure -n works how we expect.
+["09b", '-n', "1e2\n2e1\n", "1e2\n2e1\n", 0],
+["09c", '-n', "2e1\n1e2\n", "1e2\n2e1\n", 0],
+["09d", '-k2g', "a 1e2\nb 2e1\n", "b 2e1\na 1e2\n", 0],
+#
+# Bug reported by Roger Peel <R.Peel@ee.surrey.ac.uk>
+["10a", '-t : -k 2.2,2.2', ":ba\n:ab\n", ":ba\n:ab\n", 0],
+# Equivalent to above, but using obsolescent `+pos -pos' option syntax.
+["10b", '-t : +1.1 -1.2', ":ba\n:ab\n", ":ba\n:ab\n", 0],
+#
+# The same as the preceding two, but with input lines reversed.
+["10c", '-t : -k 2.2,2.2', ":ab\n:ba\n", ":ba\n:ab\n", 0],
+# Equivalent to above, but using obsolescent `+pos -pos' option syntax.
+["10d", '-t : +1.1 -1.2', ":ab\n:ba\n", ":ba\n:ab\n", 0],
+# Try without -t...
+# But note that we have to count the delimiting space at the beginning
+# of each field that has it.
+["10a0", '-k 2.3,2.3', "z ba\nz ab\n", "z ba\nz ab\n", 0],
+["10a1", '-k 1.2,1.2', "ba\nab\n", "ba\nab\n", 0],
+["10a2", '-b -k 2.2,2.2', "z ba\nz ab\n", "z ba\nz ab\n", 0],
+#
+# An even simpler example demonstrating the bug.
+["10e", '-k 1.2,1.2', "ab\nba\n", "ba\nab\n", 0],
+#
+# The way sort works on these inputs (10f and 10g) seems wrong to me.
+# See May 30 ChangeLog entry. POSIX doesn't seem to say one way or
+# the other, but that's the way all other sort implementations work.
+["10f", '-t : -k 1.3,1.3', ":ab\n:ba\n", ":ba\n:ab\n", 0],
+["10g", '-k 1.4,1.4', "a ab\nb ba\n", "b ba\na ab\n", 0],
+#
+# Exercise bug re using -b to skip trailing blanks.
+["11a", '-t: -k1,1b -k2,2', "a\t:a\na :b\n", "a\t:a\na :b\n", 0],
+["11b", '-t: -k1,1b -k2,2', "a :b\na\t:a\n", "a\t:a\na :b\n", 0],
+["11c", '-t: -k2,2b -k3,3', "z:a\t:a\na :b\n", "z:a\t:a\na :b\n", 0],
+# Before 1.22m, the first key comparison reported equality.
+# With 1.22m, they compare different: "a" sorts before "a\n",
+# and the second key spec isn't even used.
+["11d", '-t: -k2,2b -k3,3', "z:a :b\na\t:a\n", "a\t:a\nz:a :b\n", 0],
+#
+# Exercise bug re comparing `-' and integers.
+["12a", '-n -t: +1', "a:1\nb:-\n", "b:-\na:1\n", 0],
+["12b", '-n -t: +1', "b:-\na:1\n", "b:-\na:1\n", 0],
+# Try some other (e.g. `X') invalid character.
+["12c", '-n -t: +1', "a:1\nb:X\n", "b:X\na:1\n", 0],
+["12d", '-n -t: +1', "b:X\na:1\n", "b:X\na:1\n", 0],
+# From Karl Heuer
+["13a", '+0.1n', "axx\nb-1\n", "b-1\naxx\n", 0],
+["13b", '+0.1n', "b-1\naxx\n", "b-1\naxx\n", 0],
+#
+# From Carl Johnson <carlj@cjlinux.home.org>
+["14a", '-d -u', "mal\nmal-\nmala\n", "mal\nmala\n", 0],
+# Be sure to fix the (translate && ignore) case in keycompare.
+["14b", '-f -d -u', "mal\nmal-\nmala\n", "mal\nmala\n", 0],
+#
+# Experiment with -i.
+["15a", '-i -u', "a\na\1\n", "a\n", 0],
+["15b", '-i -u', "a\n\1a\n", "a\n", 0],
+["15c", '-i -u', "a\1\na\n", "a\1\n", 0],
+["15d", '-i -u', "\1a\na\n", "\1a\n", 0],
+["15e", '-i -u', "a\n\1\1\1\1\1a\1\1\1\1\n", "a\n", 0],
+
+# From Erick Branderhorst -- fixed around 1.19e
+["16a", '-f',
+ "éminence\nüberhaupt\n's-Gravenhage\naëroclub\nAag\naagtappels\n",
+ "'s-Gravenhage\nAag\naagtappels\naëroclub\néminence\nüberhaupt\n",
+ 0],
+
+# This provokes a one-byte memory overrun of a malloc'd block for versions
+# of sort from textutils-1.19p and before.
+["17", '-c', "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n", "", 0],
+
+# POSIX says -n no longer implies -b, so here we're comparing ` 9' and `10'.
+["18a", '-k1.1,1.2n', " 901\n100\n", " 901\n100\n", 0],
+
+# Just like above, because the global `-b' has no effect on the
+# key specifier when a key-specific option (`n' in this case) is used.
+["18b", '-b -k1.1,1.2n', " 901\n100\n", " 901\n100\n", 0],
+
+# Here we're comparing ` 90' and `10', because the `b' on the key-end specifier
+# makes sort ignore leading blanks when determining that key's *end*.
+["18c", '-k1.1,1.2nb', " 901\n100\n", "100\n 901\n", 0],
+
+# Here we're comparing `9' and `10', because the `b' on the key-start specifier
+# makes sort ignore leading blanks when determining that key's *start*.
+["18d", '-k1.1b,1.2n', " 901\n100\n", " 901\n100\n", 0],
+
+# This compares `90' and `10', as it ignores leading blanks for both
+# key start and key end.
+["18e", '-nb -k1.1,1.2', " 901\n100\n", "100\n 901\n", 0],
+
+# This looks odd, but works properly -- 2nd keyspec is never
+# used because all lines are different.
+["19a", '+0 +1nr', "b 2\nb 1\nb 3\n", "b 1\nb 2\nb 3\n", 0],
+
+# The test *intended* by the author of the above, but using the
+# more-intuitive POSIX-style -k options.
+["19b", '-k1,1 -k2nr', "b 2\nb 1\nb 3\n", "b 3\nb 2\nb 1\n", 0],
+
+# This test failed when sort-1.22 was compiled on a Next x86 system
+# without optimization. Without optimization gcc uses the buggy version
+# of memcmp in the Next C library. With optimization, gcc uses its
+# (working) builtin version. Test case form William Lewis.
+["20a", '',
+ "_________U__free\n_________U__malloc\n_________U__abort\n_________U__memcpy\n_________U__memset\n_________U_dyld_stub_binding_helper\n_________U__malloc\n_________U___iob\n_________U__abort\n_________U__fprintf\n",
+ "_________U___iob\n_________U__abort\n_________U__abort\n_________U__fprintf\n_________U__free\n_________U__malloc\n_________U__malloc\n_________U__memcpy\n_________U__memset\n_________U_dyld_stub_binding_helper\n",
+ 0],
+
+# Demonstrate that folding changes the ordering of e.g. A, a, and _
+# because while they normally (in the C locale) collate like A, _, a,
+# when using -f, `a' is compared as if it were `A'.
+["21a", '', "A\na\n_\n", "A\n_\na\n", 0],
+["21b", '-f', "A\na\n_\n", "A\na\n_\n", 0],
+["21c", '-f', "a\nA\n_\n", "A\na\n_\n", 0],
+["21d", '-f', "_\na\nA\n", "A\na\n_\n", 0],
+["21e", '-f', "a\n_\nA\n", "A\na\n_\n", 0],
+["21f", '-fs', "A\na\n_\n", "A\na\n_\n", 0],
+["21g", '-fu', "a\n_\n", "a\n_\n", 0],
+
+# This test failed until 1.22f. From Zvi Har'El.
+["22a", '-k 2,2fd -k 1,1r', "3 b\n4 B\n", "4 B\n3 b\n", 0],
+["22b", '-k 2,2d -k 1,1r', "3 b\n4 b\n", "4 b\n3 b\n", 0],
+
+["no-file1", 'no-file', {}, '', 2],
+# This test failed until 1.22f. Sort didn't give an error.
+# From Will Edgington.
+["o-no-file1", '-o no-such-file no-such-file', {}, '', 2],
+
+["create-empty", '-o no/such/file /dev/null', {}, '', 2],
+
+# From Paul Eggert. This was fixed in textutils-1.22k.
+["neg-nls", '-n', "-1\n-9\n", "-9\n-1\n", 0],
+
+# From Paul Eggert. This was fixed in textutils-1.22m.
+# The bug was visible only when using the internationalized sorting code
+# (i.e., not when configured with --disable-nls).
+["nul-nls", '', "\0b\n\0a\n", "\0a\n\0b\n", 0],
+
+# Paul Eggert wrote:
+# I tested the revised `sort' against Solaris `sort', and found a
+# discrepancy that turns out to be a longstanding bug in GNU sort.
+# POSIX.2 specifies that a newline is part of the input line, and should
+# be significant during comparison; but with GNU sort the newline is
+# insignificant. Here is an example of the bug:
+#
+# $ od -c t
+# 0000000 \n \t \n
+# 0000003
+# $ sort t | od -c
+# 0000000 \n \t \n
+# 0000003
+#
+# The correct output of the latter command should be
+#
+# 0000000 \t \n \n
+# 0000003
+#
+# because \t comes before \n in the collating sequence, and the trailing
+# \n's are part of the input line.
+["use-nl", '', "\n\t\n", "\n\t\n", 0],
+
+# Specifying two -o options should evoke a failure
+["o2", '-o x -o y', '', '', 2],
+
+# Specifying incompatible options should evoke a failure.
+["incompat1", '-in', '', '', 2],
+["incompat2", '-fR', '', '', 2],
+["incompat3", '-dfgiMnR', '', '', 2],
+["incompat4", '-c -o /dev/null', '', '', 2],
+["incompat5", '-C -o /dev/null', '', '', 2],
+["incompat6", '-cC', '', '', 2],
+
+# -t '\0' is accepted, as of coreutils-5.0.91
+['nul-tab', "-k2,2 -t '\\0'", "a\0z\01\nb\0y\02\n", "b\0y\02\na\0z\01\n", 0],
+
+["bigfield", '-k 340282366920938463463374607431768211456',
+ "2\n1\n", "1\n2\n", 0],
+);
+
+sub test_vector
+{
+ return @tv;
+}
+
+1;
diff --git a/tests/sort/bigfield.I b/tests/sort/bigfield.I
new file mode 100644
index 0000000..5f1d0ec
--- /dev/null
+++ b/tests/sort/bigfield.I
@@ -0,0 +1,2 @@
+2
+1
diff --git a/tests/sort/bigfield.X b/tests/sort/bigfield.X
new file mode 100644
index 0000000..1191247
--- /dev/null
+++ b/tests/sort/bigfield.X
@@ -0,0 +1,2 @@
+1
+2
diff --git a/tests/sort/create-empty.X b/tests/sort/create-empty.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/create-empty.X
diff --git a/tests/sort/incompat1.I b/tests/sort/incompat1.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/incompat1.I
diff --git a/tests/sort/incompat1.X b/tests/sort/incompat1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/incompat1.X
diff --git a/tests/sort/incompat2.I b/tests/sort/incompat2.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/incompat2.I
diff --git a/tests/sort/incompat2.X b/tests/sort/incompat2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/incompat2.X
diff --git a/tests/sort/incompat3.I b/tests/sort/incompat3.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/incompat3.I
diff --git a/tests/sort/incompat3.X b/tests/sort/incompat3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/incompat3.X
diff --git a/tests/sort/incompat4.I b/tests/sort/incompat4.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/incompat4.I
diff --git a/tests/sort/incompat4.X b/tests/sort/incompat4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/incompat4.X
diff --git a/tests/sort/incompat5.I b/tests/sort/incompat5.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/incompat5.I
diff --git a/tests/sort/incompat5.X b/tests/sort/incompat5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/incompat5.X
diff --git a/tests/sort/incompat6.I b/tests/sort/incompat6.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/incompat6.I
diff --git a/tests/sort/incompat6.X b/tests/sort/incompat6.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/incompat6.X
diff --git a/tests/sort/n1.I b/tests/sort/n1.I
new file mode 100644
index 0000000..15a8658
--- /dev/null
+++ b/tests/sort/n1.I
@@ -0,0 +1,2 @@
+.01
+0
diff --git a/tests/sort/n1.X b/tests/sort/n1.X
new file mode 100644
index 0000000..ac95bf5
--- /dev/null
+++ b/tests/sort/n1.X
@@ -0,0 +1,2 @@
+0
+.01
diff --git a/tests/sort/n10a.I b/tests/sort/n10a.I
new file mode 100644
index 0000000..35fd8fa
--- /dev/null
+++ b/tests/sort/n10a.I
@@ -0,0 +1,2 @@
+.00a
+.000b
diff --git a/tests/sort/n10a.X b/tests/sort/n10a.X
new file mode 100644
index 0000000..35fd8fa
--- /dev/null
+++ b/tests/sort/n10a.X
@@ -0,0 +1,2 @@
+.00a
+.000b
diff --git a/tests/sort/n10b.I b/tests/sort/n10b.I
new file mode 100644
index 0000000..2536a13
--- /dev/null
+++ b/tests/sort/n10b.I
@@ -0,0 +1,2 @@
+.00b
+.000a
diff --git a/tests/sort/n10b.X b/tests/sort/n10b.X
new file mode 100644
index 0000000..2536a13
--- /dev/null
+++ b/tests/sort/n10b.X
@@ -0,0 +1,2 @@
+.00b
+.000a
diff --git a/tests/sort/n11a.I b/tests/sort/n11a.I
new file mode 100644
index 0000000..5be7d18
--- /dev/null
+++ b/tests/sort/n11a.I
@@ -0,0 +1,2 @@
+.01a
+.010
diff --git a/tests/sort/n11a.X b/tests/sort/n11a.X
new file mode 100644
index 0000000..5be7d18
--- /dev/null
+++ b/tests/sort/n11a.X
@@ -0,0 +1,2 @@
+.01a
+.010
diff --git a/tests/sort/n11b.I b/tests/sort/n11b.I
new file mode 100644
index 0000000..4db49c1
--- /dev/null
+++ b/tests/sort/n11b.I
@@ -0,0 +1,2 @@
+.010
+.01a
diff --git a/tests/sort/n11b.X b/tests/sort/n11b.X
new file mode 100644
index 0000000..4db49c1
--- /dev/null
+++ b/tests/sort/n11b.X
@@ -0,0 +1,2 @@
+.010
+.01a
diff --git a/tests/sort/n2.I b/tests/sort/n2.I
new file mode 100644
index 0000000..038764d
--- /dev/null
+++ b/tests/sort/n2.I
@@ -0,0 +1,2 @@
+.02
+.01
diff --git a/tests/sort/n2.X b/tests/sort/n2.X
new file mode 100644
index 0000000..bbd0dc3
--- /dev/null
+++ b/tests/sort/n2.X
@@ -0,0 +1,2 @@
+.01
+.02
diff --git a/tests/sort/n3.I b/tests/sort/n3.I
new file mode 100644
index 0000000..34f3784
--- /dev/null
+++ b/tests/sort/n3.I
@@ -0,0 +1,2 @@
+.02
+.00
diff --git a/tests/sort/n3.X b/tests/sort/n3.X
new file mode 100644
index 0000000..1b19098
--- /dev/null
+++ b/tests/sort/n3.X
@@ -0,0 +1,2 @@
+.00
+.02
diff --git a/tests/sort/n4.I b/tests/sort/n4.I
new file mode 100644
index 0000000..cf84dba
--- /dev/null
+++ b/tests/sort/n4.I
@@ -0,0 +1,2 @@
+.02
+.000
diff --git a/tests/sort/n4.X b/tests/sort/n4.X
new file mode 100644
index 0000000..7b59936
--- /dev/null
+++ b/tests/sort/n4.X
@@ -0,0 +1,2 @@
+.000
+.02
diff --git a/tests/sort/n5.I b/tests/sort/n5.I
new file mode 100644
index 0000000..a3cdd85
--- /dev/null
+++ b/tests/sort/n5.I
@@ -0,0 +1,2 @@
+.021
+.029
diff --git a/tests/sort/n5.X b/tests/sort/n5.X
new file mode 100644
index 0000000..a3cdd85
--- /dev/null
+++ b/tests/sort/n5.X
@@ -0,0 +1,2 @@
+.021
+.029
diff --git a/tests/sort/n6.I b/tests/sort/n6.I
new file mode 100644
index 0000000..129faa4
--- /dev/null
+++ b/tests/sort/n6.I
@@ -0,0 +1,2 @@
+.02
+.0*
diff --git a/tests/sort/n6.X b/tests/sort/n6.X
new file mode 100644
index 0000000..429a41c
--- /dev/null
+++ b/tests/sort/n6.X
@@ -0,0 +1,2 @@
+.0*
+.02
diff --git a/tests/sort/n7.I b/tests/sort/n7.I
new file mode 100644
index 0000000..a427053
--- /dev/null
+++ b/tests/sort/n7.I
@@ -0,0 +1,2 @@
+.02
+.*
diff --git a/tests/sort/n7.X b/tests/sort/n7.X
new file mode 100644
index 0000000..55ac4cd
--- /dev/null
+++ b/tests/sort/n7.X
@@ -0,0 +1,2 @@
+.*
+.02
diff --git a/tests/sort/n8a.I b/tests/sort/n8a.I
new file mode 100644
index 0000000..293928a
--- /dev/null
+++ b/tests/sort/n8a.I
@@ -0,0 +1,2 @@
+.0a
+.0b
diff --git a/tests/sort/n8a.X b/tests/sort/n8a.X
new file mode 100644
index 0000000..293928a
--- /dev/null
+++ b/tests/sort/n8a.X
@@ -0,0 +1,2 @@
+.0a
+.0b
diff --git a/tests/sort/n8b.I b/tests/sort/n8b.I
new file mode 100644
index 0000000..47707ab
--- /dev/null
+++ b/tests/sort/n8b.I
@@ -0,0 +1,2 @@
+.0b
+.0a
diff --git a/tests/sort/n8b.X b/tests/sort/n8b.X
new file mode 100644
index 0000000..47707ab
--- /dev/null
+++ b/tests/sort/n8b.X
@@ -0,0 +1,2 @@
+.0b
+.0a
diff --git a/tests/sort/n9a.I b/tests/sort/n9a.I
new file mode 100644
index 0000000..649135d
--- /dev/null
+++ b/tests/sort/n9a.I
@@ -0,0 +1,2 @@
+.000a
+.000b
diff --git a/tests/sort/n9a.X b/tests/sort/n9a.X
new file mode 100644
index 0000000..649135d
--- /dev/null
+++ b/tests/sort/n9a.X
@@ -0,0 +1,2 @@
+.000a
+.000b
diff --git a/tests/sort/n9b.I b/tests/sort/n9b.I
new file mode 100644
index 0000000..cf0da76
--- /dev/null
+++ b/tests/sort/n9b.I
@@ -0,0 +1,2 @@
+.000b
+.000a
diff --git a/tests/sort/n9b.X b/tests/sort/n9b.X
new file mode 100644
index 0000000..cf0da76
--- /dev/null
+++ b/tests/sort/n9b.X
@@ -0,0 +1,2 @@
+.000b
+.000a
diff --git a/tests/sort/neg-nls.I b/tests/sort/neg-nls.I
new file mode 100644
index 0000000..bd7264e
--- /dev/null
+++ b/tests/sort/neg-nls.I
@@ -0,0 +1,2 @@
+-1
+-9
diff --git a/tests/sort/neg-nls.X b/tests/sort/neg-nls.X
new file mode 100644
index 0000000..554f033
--- /dev/null
+++ b/tests/sort/neg-nls.X
@@ -0,0 +1,2 @@
+-9
+-1
diff --git a/tests/sort/no-file1.X b/tests/sort/no-file1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/no-file1.X
diff --git a/tests/sort/nul-nls.I b/tests/sort/nul-nls.I
new file mode 100644
index 0000000..9576182
--- /dev/null
+++ b/tests/sort/nul-nls.I
Binary files differ
diff --git a/tests/sort/nul-nls.X b/tests/sort/nul-nls.X
new file mode 100644
index 0000000..ef5193f
--- /dev/null
+++ b/tests/sort/nul-nls.X
Binary files differ
diff --git a/tests/sort/nul-tab.I b/tests/sort/nul-tab.I
new file mode 100644
index 0000000..cc5890d
--- /dev/null
+++ b/tests/sort/nul-tab.I
Binary files differ
diff --git a/tests/sort/nul-tab.X b/tests/sort/nul-tab.X
new file mode 100644
index 0000000..42e765b
--- /dev/null
+++ b/tests/sort/nul-tab.X
Binary files differ
diff --git a/tests/sort/o-no-file1.X b/tests/sort/o-no-file1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/o-no-file1.X
diff --git a/tests/sort/o2.I b/tests/sort/o2.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/o2.I
diff --git a/tests/sort/o2.X b/tests/sort/o2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/sort/o2.X
diff --git a/tests/sort/sort-tests b/tests/sort/sort-tests
new file mode 100755
index 0000000..94c3fcf
--- /dev/null
+++ b/tests/sort/sort-tests
@@ -0,0 +1,2223 @@
+#! /bin/sh
+# This script was generated automatically by mk-script.
+case $# in
+ 0) xx='sort';;
+ *) xx="$1";;
+esac
+test "$VERBOSE" && echo=echo || echo=:
+$echo testing program: $xx
+errors=0
+test "$srcdir" || srcdir=.
+test "$VERBOSE" && $xx --version 2> /dev/null
+
+# Make sure we get English translations.
+LANGUAGE=C
+export LANGUAGE
+LC_ALL=C
+export LC_ALL
+LANG=C
+export LANG
+
+_POSIX2_VERSION=199209 $xx -n $srcdir/n1.I > n1.O 2> n1.E
+code=$?
+if test $code != 0; then
+ $echo "Test n1(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n1.O $srcdir/n1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n1(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test n1(_POSIX2_VERSION=199209) failed: files n1.O and $srcdir/n1.X differ" 1>&2
+ (diff -c n1.O $srcdir/n1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n1(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp n1.O $srcdir/n1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n1.E || rm -f n1.E
+_POSIX2_VERSION=199209 $xx -n $srcdir/n2.I > n2.O 2> n2.E
+code=$?
+if test $code != 0; then
+ $echo "Test n2(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n2.O $srcdir/n2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n2(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test n2(_POSIX2_VERSION=199209) failed: files n2.O and $srcdir/n2.X differ" 1>&2
+ (diff -c n2.O $srcdir/n2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n2(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp n2.O $srcdir/n2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n2.E || rm -f n2.E
+_POSIX2_VERSION=199209 $xx -n $srcdir/n3.I > n3.O 2> n3.E
+code=$?
+if test $code != 0; then
+ $echo "Test n3(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n3.O $srcdir/n3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n3(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test n3(_POSIX2_VERSION=199209) failed: files n3.O and $srcdir/n3.X differ" 1>&2
+ (diff -c n3.O $srcdir/n3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n3(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp n3.O $srcdir/n3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n3.E || rm -f n3.E
+_POSIX2_VERSION=199209 $xx -n $srcdir/n4.I > n4.O 2> n4.E
+code=$?
+if test $code != 0; then
+ $echo "Test n4(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n4.O $srcdir/n4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n4(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test n4(_POSIX2_VERSION=199209) failed: files n4.O and $srcdir/n4.X differ" 1>&2
+ (diff -c n4.O $srcdir/n4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n4(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp n4.O $srcdir/n4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n4.E || rm -f n4.E
+_POSIX2_VERSION=199209 $xx -n $srcdir/n5.I > n5.O 2> n5.E
+code=$?
+if test $code != 0; then
+ $echo "Test n5(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n5.O $srcdir/n5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n5(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test n5(_POSIX2_VERSION=199209) failed: files n5.O and $srcdir/n5.X differ" 1>&2
+ (diff -c n5.O $srcdir/n5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n5(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp n5.O $srcdir/n5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n5.E || rm -f n5.E
+_POSIX2_VERSION=199209 $xx -n $srcdir/n6.I > n6.O 2> n6.E
+code=$?
+if test $code != 0; then
+ $echo "Test n6(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n6.O $srcdir/n6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n6(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test n6(_POSIX2_VERSION=199209) failed: files n6.O and $srcdir/n6.X differ" 1>&2
+ (diff -c n6.O $srcdir/n6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n6(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp n6.O $srcdir/n6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n6.E || rm -f n6.E
+_POSIX2_VERSION=199209 $xx -n $srcdir/n7.I > n7.O 2> n7.E
+code=$?
+if test $code != 0; then
+ $echo "Test n7(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n7.O $srcdir/n7.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n7(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test n7(_POSIX2_VERSION=199209) failed: files n7.O and $srcdir/n7.X differ" 1>&2
+ (diff -c n7.O $srcdir/n7.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n7(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp n7.O $srcdir/n7.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n7.E || rm -f n7.E
+_POSIX2_VERSION=199209 $xx -s -n -k1,1 $srcdir/n8a.I > n8a.O 2> n8a.E
+code=$?
+if test $code != 0; then
+ $echo "Test n8a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n8a.O $srcdir/n8a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n8a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test n8a(_POSIX2_VERSION=199209) failed: files n8a.O and $srcdir/n8a.X differ" 1>&2
+ (diff -c n8a.O $srcdir/n8a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n8a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp n8a.O $srcdir/n8a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n8a.E || rm -f n8a.E
+_POSIX2_VERSION=199209 $xx -s -n -k1,1 $srcdir/n8b.I > n8b.O 2> n8b.E
+code=$?
+if test $code != 0; then
+ $echo "Test n8b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n8b.O $srcdir/n8b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n8b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test n8b(_POSIX2_VERSION=199209) failed: files n8b.O and $srcdir/n8b.X differ" 1>&2
+ (diff -c n8b.O $srcdir/n8b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n8b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp n8b.O $srcdir/n8b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n8b.E || rm -f n8b.E
+_POSIX2_VERSION=199209 $xx -s -n -k1,1 $srcdir/n9a.I > n9a.O 2> n9a.E
+code=$?
+if test $code != 0; then
+ $echo "Test n9a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n9a.O $srcdir/n9a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n9a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test n9a(_POSIX2_VERSION=199209) failed: files n9a.O and $srcdir/n9a.X differ" 1>&2
+ (diff -c n9a.O $srcdir/n9a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n9a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp n9a.O $srcdir/n9a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n9a.E || rm -f n9a.E
+_POSIX2_VERSION=199209 $xx -s -n -k1,1 $srcdir/n9b.I > n9b.O 2> n9b.E
+code=$?
+if test $code != 0; then
+ $echo "Test n9b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n9b.O $srcdir/n9b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n9b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test n9b(_POSIX2_VERSION=199209) failed: files n9b.O and $srcdir/n9b.X differ" 1>&2
+ (diff -c n9b.O $srcdir/n9b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n9b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp n9b.O $srcdir/n9b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n9b.E || rm -f n9b.E
+_POSIX2_VERSION=199209 $xx -s -n -k1,1 $srcdir/n10a.I > n10a.O 2> n10a.E
+code=$?
+if test $code != 0; then
+ $echo "Test n10a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n10a.O $srcdir/n10a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n10a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test n10a(_POSIX2_VERSION=199209) failed: files n10a.O and $srcdir/n10a.X differ" 1>&2
+ (diff -c n10a.O $srcdir/n10a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n10a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp n10a.O $srcdir/n10a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n10a.E || rm -f n10a.E
+_POSIX2_VERSION=199209 $xx -s -n -k1,1 $srcdir/n10b.I > n10b.O 2> n10b.E
+code=$?
+if test $code != 0; then
+ $echo "Test n10b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n10b.O $srcdir/n10b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n10b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test n10b(_POSIX2_VERSION=199209) failed: files n10b.O and $srcdir/n10b.X differ" 1>&2
+ (diff -c n10b.O $srcdir/n10b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n10b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp n10b.O $srcdir/n10b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n10b.E || rm -f n10b.E
+_POSIX2_VERSION=199209 $xx -s -n -k1,1 $srcdir/n11a.I > n11a.O 2> n11a.E
+code=$?
+if test $code != 0; then
+ $echo "Test n11a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n11a.O $srcdir/n11a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n11a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test n11a(_POSIX2_VERSION=199209) failed: files n11a.O and $srcdir/n11a.X differ" 1>&2
+ (diff -c n11a.O $srcdir/n11a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n11a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp n11a.O $srcdir/n11a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n11a.E || rm -f n11a.E
+_POSIX2_VERSION=199209 $xx -s -n -k1,1 $srcdir/n11b.I > n11b.O 2> n11b.E
+code=$?
+if test $code != 0; then
+ $echo "Test n11b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n11b.O $srcdir/n11b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n11b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test n11b(_POSIX2_VERSION=199209) failed: files n11b.O and $srcdir/n11b.X differ" 1>&2
+ (diff -c n11b.O $srcdir/n11b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n11b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp n11b.O $srcdir/n11b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n11b.E || rm -f n11b.E
+_POSIX2_VERSION=199209 $xx $srcdir/01a.I > 01a.O 2> 01a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 01a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 01a.O $srcdir/01a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 01a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 01a(_POSIX2_VERSION=199209) failed: files 01a.O and $srcdir/01a.X differ" 1>&2
+ (diff -c 01a.O $srcdir/01a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 01a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 01a.O $srcdir/01a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 01a.E || rm -f 01a.E
+_POSIX2_VERSION=199209 $xx -c $srcdir/02a.I > 02a.O 2> 02a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 02a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 02a.O $srcdir/02a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 02a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 02a(_POSIX2_VERSION=199209) failed: files 02a.O and $srcdir/02a.X differ" 1>&2
+ (diff -c 02a.O $srcdir/02a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 02a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 02a.O $srcdir/02a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 02a.E || rm -f 02a.E
+_POSIX2_VERSION=199209 $xx -c $srcdir/02b.I > 02b.O 2> 02b.E
+code=$?
+if test $code != 1; then
+ $echo "Test 02b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 02b.O $srcdir/02b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 02b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 02b(_POSIX2_VERSION=199209) failed: files 02b.O and $srcdir/02b.X differ" 1>&2
+ (diff -c 02b.O $srcdir/02b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 02b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 02b.O $srcdir/02b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 02b.E || rm -f 02b.E
+_POSIX2_VERSION=199209 $xx -c -k1,1 $srcdir/02c.I > 02c.O 2> 02c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 02c(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 02c.O $srcdir/02c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 02c(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 02c(_POSIX2_VERSION=199209) failed: files 02c.O and $srcdir/02c.X differ" 1>&2
+ (diff -c 02c.O $srcdir/02c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 02c(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 02c.O $srcdir/02c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 02c.E || rm -f 02c.E
+_POSIX2_VERSION=199209 $xx -C $srcdir/02d.I > 02d.O 2> 02d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 02d(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 02d.O $srcdir/02d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 02d(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 02d(_POSIX2_VERSION=199209) failed: files 02d.O and $srcdir/02d.X differ" 1>&2
+ (diff -c 02d.O $srcdir/02d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 02d(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 02d.O $srcdir/02d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 02d.E || rm -f 02d.E
+_POSIX2_VERSION=199209 $xx -C $srcdir/02e.I > 02e.O 2> 02e.E
+code=$?
+if test $code != 1; then
+ $echo "Test 02e(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 02e.O $srcdir/02e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 02e(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 02e(_POSIX2_VERSION=199209) failed: files 02e.O and $srcdir/02e.X differ" 1>&2
+ (diff -c 02e.O $srcdir/02e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 02e(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 02e.O $srcdir/02e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 02e.E || rm -f 02e.E
+_POSIX2_VERSION=199209 $xx -cu $srcdir/02m.I > 02m.O 2> 02m.E
+code=$?
+if test $code != 1; then
+ $echo "Test 02m(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 02m.O $srcdir/02m.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 02m(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 02m(_POSIX2_VERSION=199209) failed: files 02m.O and $srcdir/02m.X differ" 1>&2
+ (diff -c 02m.O $srcdir/02m.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 02m(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 02m.O $srcdir/02m.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 02m.E || rm -f 02m.E
+_POSIX2_VERSION=199209 $xx -cu $srcdir/02n.I > 02n.O 2> 02n.E
+code=$?
+if test $code != 0; then
+ $echo "Test 02n(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 02n.O $srcdir/02n.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 02n(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 02n(_POSIX2_VERSION=199209) failed: files 02n.O and $srcdir/02n.X differ" 1>&2
+ (diff -c 02n.O $srcdir/02n.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 02n(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 02n.O $srcdir/02n.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 02n.E || rm -f 02n.E
+_POSIX2_VERSION=199209 $xx -cu $srcdir/02o.I > 02o.O 2> 02o.E
+code=$?
+if test $code != 1; then
+ $echo "Test 02o(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 02o.O $srcdir/02o.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 02o(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 02o(_POSIX2_VERSION=199209) failed: files 02o.O and $srcdir/02o.X differ" 1>&2
+ (diff -c 02o.O $srcdir/02o.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 02o(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 02o.O $srcdir/02o.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 02o.E || rm -f 02o.E
+_POSIX2_VERSION=199209 $xx -cu $srcdir/02p.I > 02p.O 2> 02p.E
+code=$?
+if test $code != 1; then
+ $echo "Test 02p(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 02p.O $srcdir/02p.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 02p(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 02p(_POSIX2_VERSION=199209) failed: files 02p.O and $srcdir/02p.X differ" 1>&2
+ (diff -c 02p.O $srcdir/02p.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 02p(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 02p.O $srcdir/02p.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 02p.E || rm -f 02p.E
+_POSIX2_VERSION=199209 $xx -k1 $srcdir/03a.I > 03a.O 2> 03a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 03a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 03a.O $srcdir/03a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 03a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 03a(_POSIX2_VERSION=199209) failed: files 03a.O and $srcdir/03a.X differ" 1>&2
+ (diff -c 03a.O $srcdir/03a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 03a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 03a.O $srcdir/03a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 03a.E || rm -f 03a.E
+_POSIX2_VERSION=199209 $xx -k1,1 $srcdir/03b.I > 03b.O 2> 03b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 03b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 03b.O $srcdir/03b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 03b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 03b(_POSIX2_VERSION=199209) failed: files 03b.O and $srcdir/03b.X differ" 1>&2
+ (diff -c 03b.O $srcdir/03b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 03b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 03b.O $srcdir/03b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 03b.E || rm -f 03b.E
+_POSIX2_VERSION=199209 $xx -k1 -k2 $srcdir/03c.I > 03c.O 2> 03c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 03c(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 03c.O $srcdir/03c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 03c(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 03c(_POSIX2_VERSION=199209) failed: files 03c.O and $srcdir/03c.X differ" 1>&2
+ (diff -c 03c.O $srcdir/03c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 03c(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 03c.O $srcdir/03c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 03c.E || rm -f 03c.E
+_POSIX2_VERSION=199209 $xx -k0 $srcdir/03d.I > 03d.O 2> 03d.E
+code=$?
+if test $code != 2; then
+ $echo "Test 03d(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 2" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 03d.O $srcdir/03d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 03d(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 03d(_POSIX2_VERSION=199209) failed: files 03d.O and $srcdir/03d.X differ" 1>&2
+ (diff -c 03d.O $srcdir/03d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 03d(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 03d.O $srcdir/03d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 03d.E || rm -f 03d.E
+_POSIX2_VERSION=199209 $xx -k1.0 $srcdir/03e.I > 03e.O 2> 03e.E
+code=$?
+if test $code != 2; then
+ $echo "Test 03e(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 2" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 03e.O $srcdir/03e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 03e(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 03e(_POSIX2_VERSION=199209) failed: files 03e.O and $srcdir/03e.X differ" 1>&2
+ (diff -c 03e.O $srcdir/03e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 03e(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 03e.O $srcdir/03e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 03e.E || rm -f 03e.E
+_POSIX2_VERSION=199209 $xx -k1.1,-k0 $srcdir/03f.I > 03f.O 2> 03f.E
+code=$?
+if test $code != 2; then
+ $echo "Test 03f(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 2" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 03f.O $srcdir/03f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 03f(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 03f(_POSIX2_VERSION=199209) failed: files 03f.O and $srcdir/03f.X differ" 1>&2
+ (diff -c 03f.O $srcdir/03f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 03f(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 03f.O $srcdir/03f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 03f.E || rm -f 03f.E
+_POSIX2_VERSION=199209 $xx -k1.1,1.0 $srcdir/03g.I > 03g.O 2> 03g.E
+code=$?
+if test $code != 0; then
+ $echo "Test 03g(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 03g.O $srcdir/03g.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 03g(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 03g(_POSIX2_VERSION=199209) failed: files 03g.O and $srcdir/03g.X differ" 1>&2
+ (diff -c 03g.O $srcdir/03g.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 03g(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 03g.O $srcdir/03g.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 03g.E || rm -f 03g.E
+_POSIX2_VERSION=199209 $xx -k1.1,1 $srcdir/03h.I > 03h.O 2> 03h.E
+code=$?
+if test $code != 0; then
+ $echo "Test 03h(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 03h.O $srcdir/03h.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 03h(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 03h(_POSIX2_VERSION=199209) failed: files 03h.O and $srcdir/03h.X differ" 1>&2
+ (diff -c 03h.O $srcdir/03h.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 03h(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 03h.O $srcdir/03h.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 03h.E || rm -f 03h.E
+_POSIX2_VERSION=199209 $xx -k1,1 $srcdir/03i.I > 03i.O 2> 03i.E
+code=$?
+if test $code != 0; then
+ $echo "Test 03i(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 03i.O $srcdir/03i.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 03i(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 03i(_POSIX2_VERSION=199209) failed: files 03i.O and $srcdir/03i.X differ" 1>&2
+ (diff -c 03i.O $srcdir/03i.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 03i(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 03i.O $srcdir/03i.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 03i.E || rm -f 03i.E
+_POSIX2_VERSION=199209 $xx -nc $srcdir/04a.I > 04a.O 2> 04a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 04a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 04a.O $srcdir/04a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 04a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 04a(_POSIX2_VERSION=199209) failed: files 04a.O and $srcdir/04a.X differ" 1>&2
+ (diff -c 04a.O $srcdir/04a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 04a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 04a.O $srcdir/04a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 04a.E || rm -f 04a.E
+_POSIX2_VERSION=199209 $xx -n $srcdir/04b.I > 04b.O 2> 04b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 04b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 04b.O $srcdir/04b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 04b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 04b(_POSIX2_VERSION=199209) failed: files 04b.O and $srcdir/04b.X differ" 1>&2
+ (diff -c 04b.O $srcdir/04b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 04b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 04b.O $srcdir/04b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 04b.E || rm -f 04b.E
+_POSIX2_VERSION=199209 $xx -k1n $srcdir/04c.I > 04c.O 2> 04c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 04c(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 04c.O $srcdir/04c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 04c(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 04c(_POSIX2_VERSION=199209) failed: files 04c.O and $srcdir/04c.X differ" 1>&2
+ (diff -c 04c.O $srcdir/04c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 04c(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 04c.O $srcdir/04c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 04c.E || rm -f 04c.E
+_POSIX2_VERSION=199209 $xx -k1 $srcdir/04d.I > 04d.O 2> 04d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 04d(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 04d.O $srcdir/04d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 04d(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 04d(_POSIX2_VERSION=199209) failed: files 04d.O and $srcdir/04d.X differ" 1>&2
+ (diff -c 04d.O $srcdir/04d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 04d(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 04d.O $srcdir/04d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 04d.E || rm -f 04d.E
+_POSIX2_VERSION=199209 $xx -k2 $srcdir/04e.I > 04e.O 2> 04e.E
+code=$?
+if test $code != 0; then
+ $echo "Test 04e(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 04e.O $srcdir/04e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 04e(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 04e(_POSIX2_VERSION=199209) failed: files 04e.O and $srcdir/04e.X differ" 1>&2
+ (diff -c 04e.O $srcdir/04e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 04e(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 04e.O $srcdir/04e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 04e.E || rm -f 04e.E
+_POSIX2_VERSION=199209 $xx -k1,2 $srcdir/05a.I > 05a.O 2> 05a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 05a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 05a.O $srcdir/05a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 05a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 05a(_POSIX2_VERSION=199209) failed: files 05a.O and $srcdir/05a.X differ" 1>&2
+ (diff -c 05a.O $srcdir/05a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 05a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 05a.O $srcdir/05a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 05a.E || rm -f 05a.E
+_POSIX2_VERSION=199209 $xx -k1,2 $srcdir/05b.I > 05b.O 2> 05b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 05b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 05b.O $srcdir/05b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 05b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 05b(_POSIX2_VERSION=199209) failed: files 05b.O and $srcdir/05b.X differ" 1>&2
+ (diff -c 05b.O $srcdir/05b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 05b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 05b.O $srcdir/05b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 05b.E || rm -f 05b.E
+_POSIX2_VERSION=199209 $xx -k1 -k2 $srcdir/05c.I > 05c.O 2> 05c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 05c(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 05c.O $srcdir/05c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 05c(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 05c(_POSIX2_VERSION=199209) failed: files 05c.O and $srcdir/05c.X differ" 1>&2
+ (diff -c 05c.O $srcdir/05c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 05c(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 05c.O $srcdir/05c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 05c.E || rm -f 05c.E
+_POSIX2_VERSION=199209 $xx -k2,2 $srcdir/05d.I > 05d.O 2> 05d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 05d(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 05d.O $srcdir/05d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 05d(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 05d(_POSIX2_VERSION=199209) failed: files 05d.O and $srcdir/05d.X differ" 1>&2
+ (diff -c 05d.O $srcdir/05d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 05d(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 05d.O $srcdir/05d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 05d.E || rm -f 05d.E
+_POSIX2_VERSION=199209 $xx -k2,2 $srcdir/05e.I > 05e.O 2> 05e.E
+code=$?
+if test $code != 0; then
+ $echo "Test 05e(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 05e.O $srcdir/05e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 05e(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 05e(_POSIX2_VERSION=199209) failed: files 05e.O and $srcdir/05e.X differ" 1>&2
+ (diff -c 05e.O $srcdir/05e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 05e(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 05e.O $srcdir/05e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 05e.E || rm -f 05e.E
+_POSIX2_VERSION=199209 $xx -k2,2 $srcdir/05f.I > 05f.O 2> 05f.E
+code=$?
+if test $code != 0; then
+ $echo "Test 05f(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 05f.O $srcdir/05f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 05f(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 05f(_POSIX2_VERSION=199209) failed: files 05f.O and $srcdir/05f.X differ" 1>&2
+ (diff -c 05f.O $srcdir/05f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 05f(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 05f.O $srcdir/05f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 05f.E || rm -f 05f.E
+_POSIX2_VERSION=199209 $xx -k 1,2 $srcdir/06a.I > 06a.O 2> 06a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 06a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 06a.O $srcdir/06a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 06a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 06a(_POSIX2_VERSION=199209) failed: files 06a.O and $srcdir/06a.X differ" 1>&2
+ (diff -c 06a.O $srcdir/06a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 06a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 06a.O $srcdir/06a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 06a.E || rm -f 06a.E
+_POSIX2_VERSION=199209 $xx -k 1,2 $srcdir/06b.I > 06b.O 2> 06b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 06b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 06b.O $srcdir/06b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 06b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 06b(_POSIX2_VERSION=199209) failed: files 06b.O and $srcdir/06b.X differ" 1>&2
+ (diff -c 06b.O $srcdir/06b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 06b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 06b.O $srcdir/06b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 06b.E || rm -f 06b.E
+_POSIX2_VERSION=199209 $xx -k 1 -k 2 $srcdir/06c.I > 06c.O 2> 06c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 06c(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 06c.O $srcdir/06c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 06c(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 06c(_POSIX2_VERSION=199209) failed: files 06c.O and $srcdir/06c.X differ" 1>&2
+ (diff -c 06c.O $srcdir/06c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 06c(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 06c.O $srcdir/06c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 06c.E || rm -f 06c.E
+_POSIX2_VERSION=199209 $xx -k 2,2 $srcdir/06d.I > 06d.O 2> 06d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 06d(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 06d.O $srcdir/06d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 06d(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 06d(_POSIX2_VERSION=199209) failed: files 06d.O and $srcdir/06d.X differ" 1>&2
+ (diff -c 06d.O $srcdir/06d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 06d(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 06d.O $srcdir/06d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 06d.E || rm -f 06d.E
+_POSIX2_VERSION=199209 $xx -k 2,2 $srcdir/06e.I > 06e.O 2> 06e.E
+code=$?
+if test $code != 0; then
+ $echo "Test 06e(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 06e.O $srcdir/06e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 06e(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 06e(_POSIX2_VERSION=199209) failed: files 06e.O and $srcdir/06e.X differ" 1>&2
+ (diff -c 06e.O $srcdir/06e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 06e(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 06e.O $srcdir/06e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 06e.E || rm -f 06e.E
+_POSIX2_VERSION=199209 $xx -k 2,2 $srcdir/06f.I > 06f.O 2> 06f.E
+code=$?
+if test $code != 0; then
+ $echo "Test 06f(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 06f.O $srcdir/06f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 06f(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 06f(_POSIX2_VERSION=199209) failed: files 06f.O and $srcdir/06f.X differ" 1>&2
+ (diff -c 06f.O $srcdir/06f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 06f(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 06f.O $srcdir/06f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 06f.E || rm -f 06f.E
+_POSIX2_VERSION=199209 $xx -k 2,3 $srcdir/07a.I > 07a.O 2> 07a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 07a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 07a.O $srcdir/07a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 07a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 07a(_POSIX2_VERSION=199209) failed: files 07a.O and $srcdir/07a.X differ" 1>&2
+ (diff -c 07a.O $srcdir/07a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 07a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 07a.O $srcdir/07a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 07a.E || rm -f 07a.E
+_POSIX2_VERSION=199209 $xx -k 2,3 $srcdir/07b.I > 07b.O 2> 07b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 07b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 07b.O $srcdir/07b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 07b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 07b(_POSIX2_VERSION=199209) failed: files 07b.O and $srcdir/07b.X differ" 1>&2
+ (diff -c 07b.O $srcdir/07b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 07b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 07b.O $srcdir/07b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 07b.E || rm -f 07b.E
+_POSIX2_VERSION=199209 $xx -k 2,3 $srcdir/07c.I > 07c.O 2> 07c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 07c(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 07c.O $srcdir/07c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 07c(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 07c(_POSIX2_VERSION=199209) failed: files 07c.O and $srcdir/07c.X differ" 1>&2
+ (diff -c 07c.O $srcdir/07c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 07c(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 07c.O $srcdir/07c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 07c.E || rm -f 07c.E
+_POSIX2_VERSION=199209 $xx +1 -3 $srcdir/07d.I > 07d.O 2> 07d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 07d(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 07d.O $srcdir/07d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 07d(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 07d(_POSIX2_VERSION=199209) failed: files 07d.O and $srcdir/07d.X differ" 1>&2
+ (diff -c 07d.O $srcdir/07d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 07d(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 07d.O $srcdir/07d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 07d.E || rm -f 07d.E
+_POSIX2_VERSION=199209 $xx -k 2.,3 $srcdir/08a.I > 08a.O 2> 08a.E
+code=$?
+if test $code != 2; then
+ $echo "Test 08a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 2" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 08a.O $srcdir/08a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 08a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 08a(_POSIX2_VERSION=199209) failed: files 08a.O and $srcdir/08a.X differ" 1>&2
+ (diff -c 08a.O $srcdir/08a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 08a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 08a.O $srcdir/08a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 08a.E || rm -f 08a.E
+_POSIX2_VERSION=199209 $xx -k 2, $srcdir/08b.I > 08b.O 2> 08b.E
+code=$?
+if test $code != 2; then
+ $echo "Test 08b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 2" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 08b.O $srcdir/08b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 08b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 08b(_POSIX2_VERSION=199209) failed: files 08b.O and $srcdir/08b.X differ" 1>&2
+ (diff -c 08b.O $srcdir/08b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 08b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 08b.O $srcdir/08b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 08b.E || rm -f 08b.E
+_POSIX2_VERSION=199209 $xx -g $srcdir/09a.I > 09a.O 2> 09a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 09a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 09a.O $srcdir/09a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 09a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 09a(_POSIX2_VERSION=199209) failed: files 09a.O and $srcdir/09a.X differ" 1>&2
+ (diff -c 09a.O $srcdir/09a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 09a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 09a.O $srcdir/09a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 09a.E || rm -f 09a.E
+_POSIX2_VERSION=199209 $xx -n $srcdir/09b.I > 09b.O 2> 09b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 09b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 09b.O $srcdir/09b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 09b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 09b(_POSIX2_VERSION=199209) failed: files 09b.O and $srcdir/09b.X differ" 1>&2
+ (diff -c 09b.O $srcdir/09b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 09b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 09b.O $srcdir/09b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 09b.E || rm -f 09b.E
+_POSIX2_VERSION=199209 $xx -n $srcdir/09c.I > 09c.O 2> 09c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 09c(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 09c.O $srcdir/09c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 09c(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 09c(_POSIX2_VERSION=199209) failed: files 09c.O and $srcdir/09c.X differ" 1>&2
+ (diff -c 09c.O $srcdir/09c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 09c(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 09c.O $srcdir/09c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 09c.E || rm -f 09c.E
+_POSIX2_VERSION=199209 $xx -k2g $srcdir/09d.I > 09d.O 2> 09d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 09d(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 09d.O $srcdir/09d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 09d(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 09d(_POSIX2_VERSION=199209) failed: files 09d.O and $srcdir/09d.X differ" 1>&2
+ (diff -c 09d.O $srcdir/09d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 09d(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 09d.O $srcdir/09d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 09d.E || rm -f 09d.E
+_POSIX2_VERSION=199209 $xx -t : -k 2.2,2.2 $srcdir/10a.I > 10a.O 2> 10a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10a.O $srcdir/10a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 10a(_POSIX2_VERSION=199209) failed: files 10a.O and $srcdir/10a.X differ" 1>&2
+ (diff -c 10a.O $srcdir/10a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 10a.O $srcdir/10a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10a.E || rm -f 10a.E
+_POSIX2_VERSION=199209 $xx -t : +1.1 -1.2 $srcdir/10b.I > 10b.O 2> 10b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10b.O $srcdir/10b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 10b(_POSIX2_VERSION=199209) failed: files 10b.O and $srcdir/10b.X differ" 1>&2
+ (diff -c 10b.O $srcdir/10b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 10b.O $srcdir/10b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10b.E || rm -f 10b.E
+_POSIX2_VERSION=199209 $xx -t : -k 2.2,2.2 $srcdir/10c.I > 10c.O 2> 10c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10c(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10c.O $srcdir/10c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10c(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 10c(_POSIX2_VERSION=199209) failed: files 10c.O and $srcdir/10c.X differ" 1>&2
+ (diff -c 10c.O $srcdir/10c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10c(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 10c.O $srcdir/10c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10c.E || rm -f 10c.E
+_POSIX2_VERSION=199209 $xx -t : +1.1 -1.2 $srcdir/10d.I > 10d.O 2> 10d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10d(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10d.O $srcdir/10d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10d(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 10d(_POSIX2_VERSION=199209) failed: files 10d.O and $srcdir/10d.X differ" 1>&2
+ (diff -c 10d.O $srcdir/10d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10d(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 10d.O $srcdir/10d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10d.E || rm -f 10d.E
+_POSIX2_VERSION=199209 $xx -k 2.3,2.3 $srcdir/10a0.I > 10a0.O 2> 10a0.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10a0(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10a0.O $srcdir/10a0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10a0(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 10a0(_POSIX2_VERSION=199209) failed: files 10a0.O and $srcdir/10a0.X differ" 1>&2
+ (diff -c 10a0.O $srcdir/10a0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10a0(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 10a0.O $srcdir/10a0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10a0.E || rm -f 10a0.E
+_POSIX2_VERSION=199209 $xx -k 1.2,1.2 $srcdir/10a1.I > 10a1.O 2> 10a1.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10a1(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10a1.O $srcdir/10a1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10a1(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 10a1(_POSIX2_VERSION=199209) failed: files 10a1.O and $srcdir/10a1.X differ" 1>&2
+ (diff -c 10a1.O $srcdir/10a1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10a1(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 10a1.O $srcdir/10a1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10a1.E || rm -f 10a1.E
+_POSIX2_VERSION=199209 $xx -b -k 2.2,2.2 $srcdir/10a2.I > 10a2.O 2> 10a2.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10a2(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10a2.O $srcdir/10a2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10a2(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 10a2(_POSIX2_VERSION=199209) failed: files 10a2.O and $srcdir/10a2.X differ" 1>&2
+ (diff -c 10a2.O $srcdir/10a2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10a2(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 10a2.O $srcdir/10a2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10a2.E || rm -f 10a2.E
+_POSIX2_VERSION=199209 $xx -k 1.2,1.2 $srcdir/10e.I > 10e.O 2> 10e.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10e(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10e.O $srcdir/10e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10e(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 10e(_POSIX2_VERSION=199209) failed: files 10e.O and $srcdir/10e.X differ" 1>&2
+ (diff -c 10e.O $srcdir/10e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10e(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 10e.O $srcdir/10e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10e.E || rm -f 10e.E
+_POSIX2_VERSION=199209 $xx -t : -k 1.3,1.3 $srcdir/10f.I > 10f.O 2> 10f.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10f(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10f.O $srcdir/10f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10f(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 10f(_POSIX2_VERSION=199209) failed: files 10f.O and $srcdir/10f.X differ" 1>&2
+ (diff -c 10f.O $srcdir/10f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10f(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 10f.O $srcdir/10f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10f.E || rm -f 10f.E
+_POSIX2_VERSION=199209 $xx -k 1.4,1.4 $srcdir/10g.I > 10g.O 2> 10g.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10g(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10g.O $srcdir/10g.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10g(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 10g(_POSIX2_VERSION=199209) failed: files 10g.O and $srcdir/10g.X differ" 1>&2
+ (diff -c 10g.O $srcdir/10g.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10g(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 10g.O $srcdir/10g.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10g.E || rm -f 10g.E
+_POSIX2_VERSION=199209 $xx -t: -k1,1b -k2,2 $srcdir/11a.I > 11a.O 2> 11a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 11a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 11a.O $srcdir/11a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 11a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 11a(_POSIX2_VERSION=199209) failed: files 11a.O and $srcdir/11a.X differ" 1>&2
+ (diff -c 11a.O $srcdir/11a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 11a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 11a.O $srcdir/11a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 11a.E || rm -f 11a.E
+_POSIX2_VERSION=199209 $xx -t: -k1,1b -k2,2 $srcdir/11b.I > 11b.O 2> 11b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 11b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 11b.O $srcdir/11b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 11b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 11b(_POSIX2_VERSION=199209) failed: files 11b.O and $srcdir/11b.X differ" 1>&2
+ (diff -c 11b.O $srcdir/11b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 11b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 11b.O $srcdir/11b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 11b.E || rm -f 11b.E
+_POSIX2_VERSION=199209 $xx -t: -k2,2b -k3,3 $srcdir/11c.I > 11c.O 2> 11c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 11c(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 11c.O $srcdir/11c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 11c(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 11c(_POSIX2_VERSION=199209) failed: files 11c.O and $srcdir/11c.X differ" 1>&2
+ (diff -c 11c.O $srcdir/11c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 11c(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 11c.O $srcdir/11c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 11c.E || rm -f 11c.E
+_POSIX2_VERSION=199209 $xx -t: -k2,2b -k3,3 $srcdir/11d.I > 11d.O 2> 11d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 11d(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 11d.O $srcdir/11d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 11d(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 11d(_POSIX2_VERSION=199209) failed: files 11d.O and $srcdir/11d.X differ" 1>&2
+ (diff -c 11d.O $srcdir/11d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 11d(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 11d.O $srcdir/11d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 11d.E || rm -f 11d.E
+_POSIX2_VERSION=199209 $xx -n -t: +1 $srcdir/12a.I > 12a.O 2> 12a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12a.O $srcdir/12a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 12a(_POSIX2_VERSION=199209) failed: files 12a.O and $srcdir/12a.X differ" 1>&2
+ (diff -c 12a.O $srcdir/12a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 12a.O $srcdir/12a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12a.E || rm -f 12a.E
+_POSIX2_VERSION=199209 $xx -n -t: +1 $srcdir/12b.I > 12b.O 2> 12b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12b.O $srcdir/12b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 12b(_POSIX2_VERSION=199209) failed: files 12b.O and $srcdir/12b.X differ" 1>&2
+ (diff -c 12b.O $srcdir/12b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 12b.O $srcdir/12b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12b.E || rm -f 12b.E
+_POSIX2_VERSION=199209 $xx -n -t: +1 $srcdir/12c.I > 12c.O 2> 12c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12c(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12c.O $srcdir/12c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12c(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 12c(_POSIX2_VERSION=199209) failed: files 12c.O and $srcdir/12c.X differ" 1>&2
+ (diff -c 12c.O $srcdir/12c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12c(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 12c.O $srcdir/12c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12c.E || rm -f 12c.E
+_POSIX2_VERSION=199209 $xx -n -t: +1 $srcdir/12d.I > 12d.O 2> 12d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12d(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12d.O $srcdir/12d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12d(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 12d(_POSIX2_VERSION=199209) failed: files 12d.O and $srcdir/12d.X differ" 1>&2
+ (diff -c 12d.O $srcdir/12d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12d(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 12d.O $srcdir/12d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12d.E || rm -f 12d.E
+_POSIX2_VERSION=199209 $xx +0.1n $srcdir/13a.I > 13a.O 2> 13a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 13a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 13a.O $srcdir/13a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 13a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 13a(_POSIX2_VERSION=199209) failed: files 13a.O and $srcdir/13a.X differ" 1>&2
+ (diff -c 13a.O $srcdir/13a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 13a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 13a.O $srcdir/13a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 13a.E || rm -f 13a.E
+_POSIX2_VERSION=199209 $xx +0.1n $srcdir/13b.I > 13b.O 2> 13b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 13b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 13b.O $srcdir/13b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 13b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 13b(_POSIX2_VERSION=199209) failed: files 13b.O and $srcdir/13b.X differ" 1>&2
+ (diff -c 13b.O $srcdir/13b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 13b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 13b.O $srcdir/13b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 13b.E || rm -f 13b.E
+_POSIX2_VERSION=199209 $xx -d -u $srcdir/14a.I > 14a.O 2> 14a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14a.O $srcdir/14a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 14a(_POSIX2_VERSION=199209) failed: files 14a.O and $srcdir/14a.X differ" 1>&2
+ (diff -c 14a.O $srcdir/14a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 14a.O $srcdir/14a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14a.E || rm -f 14a.E
+_POSIX2_VERSION=199209 $xx -f -d -u $srcdir/14b.I > 14b.O 2> 14b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 14b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 14b.O $srcdir/14b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 14b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 14b(_POSIX2_VERSION=199209) failed: files 14b.O and $srcdir/14b.X differ" 1>&2
+ (diff -c 14b.O $srcdir/14b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 14b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 14b.O $srcdir/14b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 14b.E || rm -f 14b.E
+_POSIX2_VERSION=199209 $xx -i -u $srcdir/15a.I > 15a.O 2> 15a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 15a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 15a.O $srcdir/15a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 15a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 15a(_POSIX2_VERSION=199209) failed: files 15a.O and $srcdir/15a.X differ" 1>&2
+ (diff -c 15a.O $srcdir/15a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 15a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 15a.O $srcdir/15a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 15a.E || rm -f 15a.E
+_POSIX2_VERSION=199209 $xx -i -u $srcdir/15b.I > 15b.O 2> 15b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 15b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 15b.O $srcdir/15b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 15b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 15b(_POSIX2_VERSION=199209) failed: files 15b.O and $srcdir/15b.X differ" 1>&2
+ (diff -c 15b.O $srcdir/15b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 15b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 15b.O $srcdir/15b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 15b.E || rm -f 15b.E
+_POSIX2_VERSION=199209 $xx -i -u $srcdir/15c.I > 15c.O 2> 15c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 15c(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 15c.O $srcdir/15c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 15c(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 15c(_POSIX2_VERSION=199209) failed: files 15c.O and $srcdir/15c.X differ" 1>&2
+ (diff -c 15c.O $srcdir/15c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 15c(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 15c.O $srcdir/15c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 15c.E || rm -f 15c.E
+_POSIX2_VERSION=199209 $xx -i -u $srcdir/15d.I > 15d.O 2> 15d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 15d(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 15d.O $srcdir/15d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 15d(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 15d(_POSIX2_VERSION=199209) failed: files 15d.O and $srcdir/15d.X differ" 1>&2
+ (diff -c 15d.O $srcdir/15d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 15d(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 15d.O $srcdir/15d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 15d.E || rm -f 15d.E
+_POSIX2_VERSION=199209 $xx -i -u $srcdir/15e.I > 15e.O 2> 15e.E
+code=$?
+if test $code != 0; then
+ $echo "Test 15e(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 15e.O $srcdir/15e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 15e(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 15e(_POSIX2_VERSION=199209) failed: files 15e.O and $srcdir/15e.X differ" 1>&2
+ (diff -c 15e.O $srcdir/15e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 15e(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 15e.O $srcdir/15e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 15e.E || rm -f 15e.E
+_POSIX2_VERSION=199209 $xx -f $srcdir/16a.I > 16a.O 2> 16a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 16a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 16a.O $srcdir/16a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 16a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 16a(_POSIX2_VERSION=199209) failed: files 16a.O and $srcdir/16a.X differ" 1>&2
+ (diff -c 16a.O $srcdir/16a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 16a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 16a.O $srcdir/16a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 16a.E || rm -f 16a.E
+_POSIX2_VERSION=199209 $xx -c $srcdir/17.I > 17.O 2> 17.E
+code=$?
+if test $code != 0; then
+ $echo "Test 17(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 17.O $srcdir/17.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 17(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 17(_POSIX2_VERSION=199209) failed: files 17.O and $srcdir/17.X differ" 1>&2
+ (diff -c 17.O $srcdir/17.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 17(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 17.O $srcdir/17.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 17.E || rm -f 17.E
+_POSIX2_VERSION=199209 $xx -k1.1,1.2n $srcdir/18a.I > 18a.O 2> 18a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 18a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 18a.O $srcdir/18a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 18a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 18a(_POSIX2_VERSION=199209) failed: files 18a.O and $srcdir/18a.X differ" 1>&2
+ (diff -c 18a.O $srcdir/18a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 18a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 18a.O $srcdir/18a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 18a.E || rm -f 18a.E
+_POSIX2_VERSION=199209 $xx -b -k1.1,1.2n $srcdir/18b.I > 18b.O 2> 18b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 18b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 18b.O $srcdir/18b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 18b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 18b(_POSIX2_VERSION=199209) failed: files 18b.O and $srcdir/18b.X differ" 1>&2
+ (diff -c 18b.O $srcdir/18b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 18b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 18b.O $srcdir/18b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 18b.E || rm -f 18b.E
+_POSIX2_VERSION=199209 $xx -k1.1,1.2nb $srcdir/18c.I > 18c.O 2> 18c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 18c(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 18c.O $srcdir/18c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 18c(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 18c(_POSIX2_VERSION=199209) failed: files 18c.O and $srcdir/18c.X differ" 1>&2
+ (diff -c 18c.O $srcdir/18c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 18c(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 18c.O $srcdir/18c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 18c.E || rm -f 18c.E
+_POSIX2_VERSION=199209 $xx -k1.1b,1.2n $srcdir/18d.I > 18d.O 2> 18d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 18d(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 18d.O $srcdir/18d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 18d(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 18d(_POSIX2_VERSION=199209) failed: files 18d.O and $srcdir/18d.X differ" 1>&2
+ (diff -c 18d.O $srcdir/18d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 18d(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 18d.O $srcdir/18d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 18d.E || rm -f 18d.E
+_POSIX2_VERSION=199209 $xx -nb -k1.1,1.2 $srcdir/18e.I > 18e.O 2> 18e.E
+code=$?
+if test $code != 0; then
+ $echo "Test 18e(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 18e.O $srcdir/18e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 18e(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 18e(_POSIX2_VERSION=199209) failed: files 18e.O and $srcdir/18e.X differ" 1>&2
+ (diff -c 18e.O $srcdir/18e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 18e(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 18e.O $srcdir/18e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 18e.E || rm -f 18e.E
+_POSIX2_VERSION=199209 $xx +0 +1nr $srcdir/19a.I > 19a.O 2> 19a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 19a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 19a.O $srcdir/19a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 19a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 19a(_POSIX2_VERSION=199209) failed: files 19a.O and $srcdir/19a.X differ" 1>&2
+ (diff -c 19a.O $srcdir/19a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 19a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 19a.O $srcdir/19a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 19a.E || rm -f 19a.E
+_POSIX2_VERSION=199209 $xx -k1,1 -k2nr $srcdir/19b.I > 19b.O 2> 19b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 19b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 19b.O $srcdir/19b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 19b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 19b(_POSIX2_VERSION=199209) failed: files 19b.O and $srcdir/19b.X differ" 1>&2
+ (diff -c 19b.O $srcdir/19b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 19b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 19b.O $srcdir/19b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 19b.E || rm -f 19b.E
+_POSIX2_VERSION=199209 $xx $srcdir/20a.I > 20a.O 2> 20a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 20a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 20a.O $srcdir/20a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 20a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 20a(_POSIX2_VERSION=199209) failed: files 20a.O and $srcdir/20a.X differ" 1>&2
+ (diff -c 20a.O $srcdir/20a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 20a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 20a.O $srcdir/20a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 20a.E || rm -f 20a.E
+_POSIX2_VERSION=199209 $xx $srcdir/21a.I > 21a.O 2> 21a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 21a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 21a.O $srcdir/21a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 21a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 21a(_POSIX2_VERSION=199209) failed: files 21a.O and $srcdir/21a.X differ" 1>&2
+ (diff -c 21a.O $srcdir/21a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 21a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 21a.O $srcdir/21a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 21a.E || rm -f 21a.E
+_POSIX2_VERSION=199209 $xx -f $srcdir/21b.I > 21b.O 2> 21b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 21b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 21b.O $srcdir/21b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 21b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 21b(_POSIX2_VERSION=199209) failed: files 21b.O and $srcdir/21b.X differ" 1>&2
+ (diff -c 21b.O $srcdir/21b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 21b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 21b.O $srcdir/21b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 21b.E || rm -f 21b.E
+_POSIX2_VERSION=199209 $xx -f $srcdir/21c.I > 21c.O 2> 21c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 21c(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 21c.O $srcdir/21c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 21c(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 21c(_POSIX2_VERSION=199209) failed: files 21c.O and $srcdir/21c.X differ" 1>&2
+ (diff -c 21c.O $srcdir/21c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 21c(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 21c.O $srcdir/21c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 21c.E || rm -f 21c.E
+_POSIX2_VERSION=199209 $xx -f $srcdir/21d.I > 21d.O 2> 21d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 21d(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 21d.O $srcdir/21d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 21d(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 21d(_POSIX2_VERSION=199209) failed: files 21d.O and $srcdir/21d.X differ" 1>&2
+ (diff -c 21d.O $srcdir/21d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 21d(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 21d.O $srcdir/21d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 21d.E || rm -f 21d.E
+_POSIX2_VERSION=199209 $xx -f $srcdir/21e.I > 21e.O 2> 21e.E
+code=$?
+if test $code != 0; then
+ $echo "Test 21e(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 21e.O $srcdir/21e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 21e(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 21e(_POSIX2_VERSION=199209) failed: files 21e.O and $srcdir/21e.X differ" 1>&2
+ (diff -c 21e.O $srcdir/21e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 21e(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 21e.O $srcdir/21e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 21e.E || rm -f 21e.E
+_POSIX2_VERSION=199209 $xx -fs $srcdir/21f.I > 21f.O 2> 21f.E
+code=$?
+if test $code != 0; then
+ $echo "Test 21f(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 21f.O $srcdir/21f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 21f(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 21f(_POSIX2_VERSION=199209) failed: files 21f.O and $srcdir/21f.X differ" 1>&2
+ (diff -c 21f.O $srcdir/21f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 21f(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 21f.O $srcdir/21f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 21f.E || rm -f 21f.E
+_POSIX2_VERSION=199209 $xx -fu $srcdir/21g.I > 21g.O 2> 21g.E
+code=$?
+if test $code != 0; then
+ $echo "Test 21g(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 21g.O $srcdir/21g.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 21g(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 21g(_POSIX2_VERSION=199209) failed: files 21g.O and $srcdir/21g.X differ" 1>&2
+ (diff -c 21g.O $srcdir/21g.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 21g(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 21g.O $srcdir/21g.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 21g.E || rm -f 21g.E
+_POSIX2_VERSION=199209 $xx -k 2,2fd -k 1,1r $srcdir/22a.I > 22a.O 2> 22a.E
+code=$?
+if test $code != 0; then
+ $echo "Test 22a(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 22a.O $srcdir/22a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 22a(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 22a(_POSIX2_VERSION=199209) failed: files 22a.O and $srcdir/22a.X differ" 1>&2
+ (diff -c 22a.O $srcdir/22a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 22a(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 22a.O $srcdir/22a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 22a.E || rm -f 22a.E
+_POSIX2_VERSION=199209 $xx -k 2,2d -k 1,1r $srcdir/22b.I > 22b.O 2> 22b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 22b(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 22b.O $srcdir/22b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 22b(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test 22b(_POSIX2_VERSION=199209) failed: files 22b.O and $srcdir/22b.X differ" 1>&2
+ (diff -c 22b.O $srcdir/22b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 22b(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp 22b.O $srcdir/22b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 22b.E || rm -f 22b.E
+_POSIX2_VERSION=199209 $xx no-file > no-file1.O 2> no-file1.E
+code=$?
+if test $code != 2; then
+ $echo "Test no-file1(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 2" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp no-file1.O $srcdir/no-file1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed no-file1(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test no-file1(_POSIX2_VERSION=199209) failed: files no-file1.O and $srcdir/no-file1.X differ" 1>&2
+ (diff -c no-file1.O $srcdir/no-file1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test no-file1(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp no-file1.O $srcdir/no-file1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s no-file1.E || rm -f no-file1.E
+_POSIX2_VERSION=199209 $xx -o no-such-file no-such-file > o-no-file1.O 2> o-no-file1.E
+code=$?
+if test $code != 2; then
+ $echo "Test o-no-file1(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 2" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp o-no-file1.O $srcdir/o-no-file1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed o-no-file1(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test o-no-file1(_POSIX2_VERSION=199209) failed: files o-no-file1.O and $srcdir/o-no-file1.X differ" 1>&2
+ (diff -c o-no-file1.O $srcdir/o-no-file1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test o-no-file1(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp o-no-file1.O $srcdir/o-no-file1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s o-no-file1.E || rm -f o-no-file1.E
+_POSIX2_VERSION=199209 $xx -o no/such/file /dev/null > create-empty.O 2> create-empty.E
+code=$?
+if test $code != 2; then
+ $echo "Test create-empty(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 2" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp create-empty.O $srcdir/create-empty.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed create-empty(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test create-empty(_POSIX2_VERSION=199209) failed: files create-empty.O and $srcdir/create-empty.X differ" 1>&2
+ (diff -c create-empty.O $srcdir/create-empty.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test create-empty(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp create-empty.O $srcdir/create-empty.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s create-empty.E || rm -f create-empty.E
+_POSIX2_VERSION=199209 $xx -n $srcdir/neg-nls.I > neg-nls.O 2> neg-nls.E
+code=$?
+if test $code != 0; then
+ $echo "Test neg-nls(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp neg-nls.O $srcdir/neg-nls.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed neg-nls(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test neg-nls(_POSIX2_VERSION=199209) failed: files neg-nls.O and $srcdir/neg-nls.X differ" 1>&2
+ (diff -c neg-nls.O $srcdir/neg-nls.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test neg-nls(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp neg-nls.O $srcdir/neg-nls.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s neg-nls.E || rm -f neg-nls.E
+_POSIX2_VERSION=199209 $xx $srcdir/nul-nls.I > nul-nls.O 2> nul-nls.E
+code=$?
+if test $code != 0; then
+ $echo "Test nul-nls(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp nul-nls.O $srcdir/nul-nls.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed nul-nls(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test nul-nls(_POSIX2_VERSION=199209) failed: files nul-nls.O and $srcdir/nul-nls.X differ" 1>&2
+ (diff -c nul-nls.O $srcdir/nul-nls.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test nul-nls(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp nul-nls.O $srcdir/nul-nls.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s nul-nls.E || rm -f nul-nls.E
+_POSIX2_VERSION=199209 $xx $srcdir/use-nl.I > use-nl.O 2> use-nl.E
+code=$?
+if test $code != 0; then
+ $echo "Test use-nl(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp use-nl.O $srcdir/use-nl.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed use-nl(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test use-nl(_POSIX2_VERSION=199209) failed: files use-nl.O and $srcdir/use-nl.X differ" 1>&2
+ (diff -c use-nl.O $srcdir/use-nl.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test use-nl(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp use-nl.O $srcdir/use-nl.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s use-nl.E || rm -f use-nl.E
+_POSIX2_VERSION=199209 $xx -o x -o y $srcdir/o2.I > o2.O 2> o2.E
+code=$?
+if test $code != 2; then
+ $echo "Test o2(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 2" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp o2.O $srcdir/o2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed o2(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test o2(_POSIX2_VERSION=199209) failed: files o2.O and $srcdir/o2.X differ" 1>&2
+ (diff -c o2.O $srcdir/o2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test o2(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp o2.O $srcdir/o2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s o2.E || rm -f o2.E
+_POSIX2_VERSION=199209 $xx -in $srcdir/incompat1.I > incompat1.O 2> incompat1.E
+code=$?
+if test $code != 2; then
+ $echo "Test incompat1(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 2" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp incompat1.O $srcdir/incompat1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed incompat1(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test incompat1(_POSIX2_VERSION=199209) failed: files incompat1.O and $srcdir/incompat1.X differ" 1>&2
+ (diff -c incompat1.O $srcdir/incompat1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test incompat1(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp incompat1.O $srcdir/incompat1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s incompat1.E || rm -f incompat1.E
+_POSIX2_VERSION=199209 $xx -fR $srcdir/incompat2.I > incompat2.O 2> incompat2.E
+code=$?
+if test $code != 2; then
+ $echo "Test incompat2(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 2" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp incompat2.O $srcdir/incompat2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed incompat2(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test incompat2(_POSIX2_VERSION=199209) failed: files incompat2.O and $srcdir/incompat2.X differ" 1>&2
+ (diff -c incompat2.O $srcdir/incompat2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test incompat2(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp incompat2.O $srcdir/incompat2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s incompat2.E || rm -f incompat2.E
+_POSIX2_VERSION=199209 $xx -dfgiMnR $srcdir/incompat3.I > incompat3.O 2> incompat3.E
+code=$?
+if test $code != 2; then
+ $echo "Test incompat3(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 2" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp incompat3.O $srcdir/incompat3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed incompat3(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test incompat3(_POSIX2_VERSION=199209) failed: files incompat3.O and $srcdir/incompat3.X differ" 1>&2
+ (diff -c incompat3.O $srcdir/incompat3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test incompat3(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp incompat3.O $srcdir/incompat3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s incompat3.E || rm -f incompat3.E
+_POSIX2_VERSION=199209 $xx -c -o /dev/null $srcdir/incompat4.I > incompat4.O 2> incompat4.E
+code=$?
+if test $code != 2; then
+ $echo "Test incompat4(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 2" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp incompat4.O $srcdir/incompat4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed incompat4(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test incompat4(_POSIX2_VERSION=199209) failed: files incompat4.O and $srcdir/incompat4.X differ" 1>&2
+ (diff -c incompat4.O $srcdir/incompat4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test incompat4(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp incompat4.O $srcdir/incompat4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s incompat4.E || rm -f incompat4.E
+_POSIX2_VERSION=199209 $xx -C -o /dev/null $srcdir/incompat5.I > incompat5.O 2> incompat5.E
+code=$?
+if test $code != 2; then
+ $echo "Test incompat5(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 2" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp incompat5.O $srcdir/incompat5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed incompat5(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test incompat5(_POSIX2_VERSION=199209) failed: files incompat5.O and $srcdir/incompat5.X differ" 1>&2
+ (diff -c incompat5.O $srcdir/incompat5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test incompat5(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp incompat5.O $srcdir/incompat5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s incompat5.E || rm -f incompat5.E
+_POSIX2_VERSION=199209 $xx -cC $srcdir/incompat6.I > incompat6.O 2> incompat6.E
+code=$?
+if test $code != 2; then
+ $echo "Test incompat6(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 2" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp incompat6.O $srcdir/incompat6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed incompat6(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test incompat6(_POSIX2_VERSION=199209) failed: files incompat6.O and $srcdir/incompat6.X differ" 1>&2
+ (diff -c incompat6.O $srcdir/incompat6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test incompat6(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp incompat6.O $srcdir/incompat6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s incompat6.E || rm -f incompat6.E
+_POSIX2_VERSION=199209 $xx -k2,2 -t '\0' $srcdir/nul-tab.I > nul-tab.O 2> nul-tab.E
+code=$?
+if test $code != 0; then
+ $echo "Test nul-tab(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp nul-tab.O $srcdir/nul-tab.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed nul-tab(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test nul-tab(_POSIX2_VERSION=199209) failed: files nul-tab.O and $srcdir/nul-tab.X differ" 1>&2
+ (diff -c nul-tab.O $srcdir/nul-tab.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test nul-tab(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp nul-tab.O $srcdir/nul-tab.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s nul-tab.E || rm -f nul-tab.E
+_POSIX2_VERSION=199209 $xx -k 340282366920938463463374607431768211456 $srcdir/bigfield.I > bigfield.O 2> bigfield.E
+code=$?
+if test $code != 0; then
+ $echo "Test bigfield(_POSIX2_VERSION=199209) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp bigfield.O $srcdir/bigfield.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed bigfield(_POSIX2_VERSION=199209)"; fi;;
+ 1) $echo "Test bigfield(_POSIX2_VERSION=199209) failed: files bigfield.O and $srcdir/bigfield.X differ" 1>&2
+ (diff -c bigfield.O $srcdir/bigfield.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test bigfield(_POSIX2_VERSION=199209) may have failed." 1>&2
+ $echo The command "cmp bigfield.O $srcdir/bigfield.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s bigfield.E || rm -f bigfield.E
+if test $errors = 0; then
+ $echo Passed all 122 tests. 1>&2
+else
+ $echo Failed $errors tests. 1>&2
+fi
+test $errors = 0 || errors=1
+exit $errors
diff --git a/tests/sort/use-nl.I b/tests/sort/use-nl.I
new file mode 100644
index 0000000..adeb14f
--- /dev/null
+++ b/tests/sort/use-nl.I
@@ -0,0 +1,2 @@
+
+
diff --git a/tests/sort/use-nl.X b/tests/sort/use-nl.X
new file mode 100644
index 0000000..adeb14f
--- /dev/null
+++ b/tests/sort/use-nl.X
@@ -0,0 +1,2 @@
+
+
diff --git a/tests/sparse-file b/tests/sparse-file
new file mode 100644
index 0000000..4d8c7a6
--- /dev/null
+++ b/tests/sparse-file
@@ -0,0 +1,33 @@
+# -*- sh -*-
+# Does the current (working-dir.) file system support sparse files?
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# Test whether we can create a sparse file.
+# For example, on Darwin6.5 with a file system of type hfs, it's not possible.
+# NTFS requires 128K before a hole appears in a sparse file.
+t=sparse.$$
+dd bs=1 seek=128K of=$t < /dev/null 2> /dev/null
+set x `du -sk $t`
+kb_size=$2
+rm -f $t
+if test $kb_size -ge 128; then
+ echo "$0: skipping this test, since this file system doesn't support" \
+ sparse files 1>&2
+ (exit 77); exit 77
+fi
diff --git a/tests/stty/Makefile.am b/tests/stty/Makefile.am
new file mode 100644
index 0000000..5cd33b5
--- /dev/null
+++ b/tests/stty/Makefile.am
@@ -0,0 +1,6 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+TESTS = row-col-1 basic-1
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
diff --git a/tests/stty/Makefile.in b/tests/stty/Makefile.in
new file mode 100644
index 0000000..f6b75a9
--- /dev/null
+++ b/tests/stty/Makefile.in
@@ -0,0 +1,716 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/stty
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = row-col-1 basic-1
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/stty/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/stty/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/stty/basic-1 b/tests/stty/basic-1
new file mode 100755
index 0000000..5af1ab3
--- /dev/null
+++ b/tests/stty/basic-1
@@ -0,0 +1,106 @@
+#! /bin/sh
+# Make sure stty can parse most of its options.
+
+# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006 Free
+# Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ stty --version
+fi
+
+# Make sure there's a tty on stdin.
+. $srcdir/../input-tty
+
+# The following list of reversible options was generated with
+# grep -w REV stty.c|sed -n '/^ {"/{s//REV_/;s/".*/=1/;p;}'|fmt
+REV_parenb=1 REV_parodd=1 REV_hupcl=1 REV_hup=1 REV_cstopb=1 REV_cread=1
+REV_clocal=1 REV_crtscts=1 REV_ignbrk=1 REV_brkint=1 REV_ignpar=1
+REV_parmrk=1 REV_inpck=1 REV_istrip=1 REV_inlcr=1 REV_igncr=1 REV_icrnl=1
+REV_ixon=1 REV_ixoff=1 REV_tandem=1 REV_iuclc=1 REV_ixany=1 REV_imaxbel=1
+REV_opost=1 REV_olcuc=1 REV_ocrnl=1 REV_onlcr=1 REV_onocr=1 REV_onlret=1
+REV_ofill=1 REV_ofdel=1 REV_isig=1 REV_icanon=1 REV_iexten=1 REV_echo=1
+REV_echoe=1 REV_crterase=1 REV_echok=1 REV_echonl=1 REV_noflsh=1
+REV_xcase=1 REV_tostop=1 REV_echoprt=1 REV_prterase=1 REV_echoctl=1
+REV_ctlecho=1 REV_echoke=1 REV_crtkill=1 REV_evenp=1 REV_parity=1
+REV_oddp=1 REV_nl=1 REV_cooked=1 REV_raw=1 REV_pass8=1 REV_litout=1
+REV_cbreak=1 REV_decctlq=1 REV_tabs=1 REV_lcase=1 REV_LCASE=1
+
+fail=0
+
+saved_state=.saved-state
+stty --save > $saved_state || fail=1
+stty `cat $saved_state` || fail=1
+
+# This would segfault prior to sh-utils-2.0j.
+stty erase - || fail=1
+
+# These would improperly ignore invalid options through coreutils 5.2.1.
+stty -F 2>/dev/null && fail=1
+stty -raw -F no/such/file 2>/dev/null && fail=1
+stty -raw -a 2>/dev/null && fail=1
+
+# Build a list of all boolean options stty accepts on this system.
+# Don't depend on terminal width. Put each option on its own line,
+# remove all non-boolean ones, then remove any leading hyphens.
+sed_del='/^speed/d;/^rows/d;/^columns/d;/ = /d'
+options=`stty -a | tr -s ';' '\n' | sed "s/^ //;$sed_del;s/-//g"`
+
+# Take them one at a time, with and without the leading `-'.
+for opt in $options; do
+ # `stty parenb' and `stty -parenb' fail with this message
+ # stty: standard input: unable to perform all requested operations
+ # on Linux 2.2.0-pre4 kernels, so skip those tests.
+ test $opt = parenb && continue
+ stty $opt || fail=1
+
+ # Likewise, `stty -cread' would fail, so skip that, too.
+ test $opt = cread && continue
+ rev=`eval echo "\\\$REV_$opt"`
+ if test -n "$rev"; then
+ stty -$opt || { fail=1; echo -$opt; }
+ fi
+done
+
+if test -n "$RUN_LONG_TESTS"; then
+ # Take them in pairs.
+ for opt1 in $options; do
+ echo .|tr -d '\n'
+ for opt2 in $options; do
+
+ stty $opt1 $opt2 || fail=1
+
+ rev1=`eval echo "\\\$REV_$opt1"`
+ rev2=`eval echo "\\\$REV_$opt2"`
+ if test -n "$rev1"; then
+ stty -$opt1 $opt2 || fail=1
+ fi
+ if test -n "$rev2"; then
+ stty $opt1 -$opt2 || fail=1
+ fi
+ if test "$rev1$rev2" = 11; then
+ stty -$opt1 -$opt2 || fail=1
+ fi
+ done
+ done
+fi
+
+stty `cat $saved_state`
+rm -f $saved_state
+
+exit $fail
diff --git a/tests/stty/row-col-1 b/tests/stty/row-col-1
new file mode 100755
index 0000000..83d34a7
--- /dev/null
+++ b/tests/stty/row-col-1
@@ -0,0 +1,88 @@
+#! /bin/sh
+# Test "stty" with rows and columns.
+
+# Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006 Free
+# Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+
+# This script takes no arguments.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ stty --version
+fi
+
+# Setting this envvar to a very small value used to cause e.g., `stty size'
+# to generate slightly different output on certain systems.
+COLUMNS=80
+export COLUMNS
+
+# Make sure we get English-language behavior.
+# See the report about a possibly-related Solaris problem by Alexandre Peshansky
+# <http://lists.gnu.org/archive/html/bug-coreutils/2004-10/msg00035.html>.
+# Currently stty isn't localized, but it might be in the future.
+LC_ALL=C
+export LC_ALL
+
+# Make sure there's a tty on stdin.
+. $srcdir/../input-tty
+
+# Versions of GNU stty from shellutils-1.9.2c and earlier failed
+# tests #2 and #4 when run on SunOS 4.1.3.
+
+tests='
+1 rows_40_columns_80 40_80
+2 rows_1_columns_1 1_1
+3 rows_40_columns_80 40_80
+4 rows_1 1_80
+5 columns_1 1_1
+6 rows_40 40_1
+7 rows_1 1_1
+8 columns_80 1_80
+9 rows_30 30_80
+NA LAST NA
+'
+set $tests
+
+saved_size=`stty size` && test -n "$saved_size" \
+ || { echo "$0: skipping this test: can't get window size" 1>&2;
+ exit 77; exit; }
+
+fail=0
+while :; do
+ test_name=$1
+ args=$2
+ expected_result="`echo $3|tr _ ' '`"
+ test "$args" = empty && args=''
+ test "x$args" = xLAST && break
+ args=`echo x$args|tr _ ' '|sed 's/^x//'`
+ if test "$VERBOSE" = yes; then
+ # echo "testing \`stty $args; stty size\` = $expected_result ..."
+ echo "test $test_name... " | tr -d '\n'
+ fi
+ stty $args || exit 1
+ test x"`stty size 2> /dev/null`" = "x$expected_result" \
+ && ok=ok || ok=FAIL fail=1
+ test "$VERBOSE" = yes && echo $ok
+ shift; shift; shift
+done
+
+set x $saved_size
+stty rows $2 columns $3 || exit 1
+
+exit $fail
diff --git a/tests/sum/Makefile.am b/tests/sum/Makefile.am
new file mode 100644
index 0000000..6b6cedd
--- /dev/null
+++ b/tests/sum/Makefile.am
@@ -0,0 +1,13 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+
+EXTRA_DIST = $(TESTS)
+
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=sum
+
+TESTS = basic-1 sysv
diff --git a/tests/sum/Makefile.in b/tests/sum/Makefile.in
new file mode 100644
index 0000000..4501982
--- /dev/null
+++ b/tests/sum/Makefile.in
@@ -0,0 +1,720 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/sum
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=sum
+
+TESTS = basic-1 sysv
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/sum/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/sum/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/sum/basic-1 b/tests/sum/basic-1
new file mode 100755
index 0000000..2f5b2e1
--- /dev/null
+++ b/tests/sum/basic-1
@@ -0,0 +1,75 @@
+#!/bin/sh
+# Test "sum".
+
+# Copyright (C) 2000, 2003, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my $in_1k = 'a' x 1024;
+my $in_2k = 'b' x 2048;
+
+my @Tests =
+ (
+ ['1', {IN=> {f=> ''}}, {OUT=>"00000 0\n"}],
+ ['2', {IN=> {f=> 'a'}}, {OUT=>"00097 1\n"}],
+ ['3', {IN=> {f=> 'abc'}}, {OUT=>"16556 1\n"}],
+ ['4', {IN=> {f=> 'message digest'}}, {OUT=>"26423 1\n"}],
+ ['5', {IN=> {f=> 'abcdefghijklmnopqrstuvwxyz'}}, {OUT=>"53553 1\n"}],
+ ['6', {IN=> {f=> join ('', 'A'..'Z', 'a'..'z', '0'..'9')}},
+ {OUT=>"25587 1\n"}],
+ ['7', {IN=> {f=> '1234567890' x 8}}, {OUT=>"21845 1\n"}],
+
+ ['a-r-1k', '-r', {IN=> {f=> $in_1k}}, {OUT=>"65409 1\n"}],
+ ['a-s-1k', '-s', {IN=> {f=> $in_1k}}, {OUT=>"33793 2 f\n"}],
+ ['b-r-2k', '-r', {IN=> {f=> $in_2k}}, {OUT=>"65223 2\n"}],
+ ['b-s-2k', '-s', {IN=> {f=> $in_2k}}, {OUT=>"4099 4 f\n"}],
+
+ ['1s', '-s', {IN=> {f=> ''}}, {OUT=>"0 0 f\n"}],
+ ['2s', '-s', {IN=> {f=> 'a'}}, {OUT=>"97 1 f\n"}],
+ ['3s', '-s', {IN=> {f=> 'abc'}}, {OUT=>"294 1 f\n"}],
+ ['4s', '-s', {IN=> {f=> 'message digest'}}, {OUT=>"1413 1 f\n"}],
+ ['5s', '-s', {IN=> {f=> 'abcdefghijklmnopqrstuvwxyz'}},
+ {OUT=>"2847 1 f\n"}],
+ ['6s', '-s', {IN=> {f=> join ('', 'A'..'Z', 'a'..'z', '0'..'9')}},
+ {OUT=>"5387 1 f\n"}],
+ ['7s', '-s', {IN=> {f=> '1234567890' x 8}}, {OUT=>"4200 1 f\n"}],
+ );
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/sum/sysv b/tests/sum/sysv
new file mode 100755
index 0000000..93dff3d
--- /dev/null
+++ b/tests/sum/sysv
@@ -0,0 +1,76 @@
+#!/bin/sh
+# make sure `sum -s' works for input whose sum of bytes is larger than 2^32
+
+# Copyright (C) 2001, 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ sum --version
+fi
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+# Avoid a problem when run in a UTF-8 locale.
+# Otherwise, Perl would try to (and fail to) interpret
+# each string below as a sequence of multi-byte characters.
+LC_ALL=C
+export LC_ALL
+
+pwd=`pwd`
+tmp=sum-s.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# FYI, 16843009 is floor (2^32 / 255).
+
+# aka: perl -e 'print chr(255) x 16843009'
+$PERL -e '$s = chr(255) x 65537; foreach (1..257) {print $s}' \
+ | sum -s > out || fail=1
+cat > exp <<\EOF
+65535 32897
+EOF
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+rm -f out exp
+
+# aka: perl -e 'print chr(255) x 16843010'
+$PERL -e '$s = chr(255) x 65537; foreach (1..257) {print $s}; print chr(255)' \
+ | sum -s > out || fail=1
+cat > exp <<\EOF
+254 32897
+EOF
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/tac/Makefile.am b/tests/tac/Makefile.am
new file mode 100644
index 0000000..b8cc476
--- /dev/null
+++ b/tests/tac/Makefile.am
@@ -0,0 +1,70 @@
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+##test-files-begin
+x = tac
+explicit =
+maint_gen = basic-0.I basic-0.X basic-a.I basic-a.X basic-b.I basic-b.X \
+basic-c.I basic-c.X basic-d.I basic-d.X basic-e.I basic-e.X basic-f.I \
+basic-f.X basic-g.I basic-g.X basic-h.I basic-h.X basic-i.I basic-i.X \
+basic-j.I basic-j.X basic-k.I basic-k.X b2-e.I b2-e.X b2-f.I b2-f.X b2-g.I \
+b2-g.X b2-h.I b2-h.X b2-i.I b2-i.X b2-j.I b2-j.X b2-k.I b2-k.X opt-b.I \
+opt-b.X opt-s.I opt-s.X opt-sb.I opt-sb.X opt-r.I opt-r.X opt-r2.I opt-r2.X \
+opt-br.I opt-br.X opt-br2.I opt-br2.X
+run_gen = basic-0.O basic-0.E basic-a.O basic-a.E basic-b.O basic-b.E \
+basic-c.O basic-c.E basic-d.O basic-d.E basic-e.O basic-e.E basic-f.O \
+basic-f.E basic-g.O basic-g.E basic-h.O basic-h.E basic-i.O basic-i.E \
+basic-j.O basic-j.E basic-k.O basic-k.E b2-e.O b2-e.E b2-f.O b2-f.E b2-g.O \
+b2-g.E b2-h.O b2-h.E b2-i.O b2-i.E b2-j.O b2-j.E b2-k.O b2-k.E opt-b.O \
+opt-b.E opt-s.O opt-s.E opt-sb.O opt-sb.E opt-r.O opt-r.E opt-r2.O opt-r2.E \
+opt-br.O opt-br.E opt-br2.O opt-br2.E
+##test-files-end
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+
+TESTS = $x-tests
+
+mk_script = $(srcdir)/../mk-script
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
diff --git a/tests/tac/Makefile.in b/tests/tac/Makefile.in
new file mode 100644
index 0000000..68b4045
--- /dev/null
+++ b/tests/tac/Makefile.in
@@ -0,0 +1,780 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/tac
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SCRIPTS = $(noinst_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+x = tac
+explicit =
+maint_gen = basic-0.I basic-0.X basic-a.I basic-a.X basic-b.I basic-b.X \
+basic-c.I basic-c.X basic-d.I basic-d.X basic-e.I basic-e.X basic-f.I \
+basic-f.X basic-g.I basic-g.X basic-h.I basic-h.X basic-i.I basic-i.X \
+basic-j.I basic-j.X basic-k.I basic-k.X b2-e.I b2-e.X b2-f.I b2-f.X b2-g.I \
+b2-g.X b2-h.I b2-h.X b2-i.I b2-i.X b2-j.I b2-j.X b2-k.I b2-k.X opt-b.I \
+opt-b.X opt-s.I opt-s.X opt-sb.I opt-sb.X opt-r.I opt-r.X opt-r2.I opt-r2.X \
+opt-br.I opt-br.X opt-br2.I opt-br2.X
+
+run_gen = basic-0.O basic-0.E basic-a.O basic-a.E basic-b.O basic-b.E \
+basic-c.O basic-c.E basic-d.O basic-d.E basic-e.O basic-e.E basic-f.O \
+basic-f.E basic-g.O basic-g.E basic-h.O basic-h.E basic-i.O basic-i.E \
+basic-j.O basic-j.E basic-k.O basic-k.E b2-e.O b2-e.E b2-f.O b2-f.E b2-g.O \
+b2-g.E b2-h.O b2-h.E b2-i.O b2-i.E b2-j.O b2-j.E b2-k.O b2-k.E opt-b.O \
+opt-b.E opt-s.O opt-s.E opt-sb.O opt-sb.E opt-r.O opt-r.E opt-r2.O opt-r2.E \
+opt-br.O opt-br.E opt-br2.O opt-br2.E
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+TESTS = $x-tests
+mk_script = $(srcdir)/../mk-script
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/tac/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/tac/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(SCRIPTS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/tac/Test.pm b/tests/tac/Test.pm
new file mode 100644
index 0000000..8e46b46
--- /dev/null
+++ b/tests/tac/Test.pm
@@ -0,0 +1,84 @@
+# Test "tac".
+
+# Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+package Test;
+require 5.002;
+use strict;
+
+my @tv = (
+# test name, options, input, expected output, expected return code
+#
+['basic-0', '', "", "", 0],
+['basic-a', '', "a", "a\n", 0],
+['basic-b', '', "\n", "\n", 0],
+['basic-c', '', "a\n", "a\n", 0],
+['basic-d', '', "a\nb", "b\na\n", 0],
+['basic-e', '', "a\nb\n", "b\na\n", 0],
+['basic-f', '', "1234567\n8\n", "8\n1234567\n", 0],
+['basic-g', '', "12345678\n9\n", "9\n12345678\n", 0],
+['basic-h', '', "123456\n8\n", "8\n123456\n", 0],
+['basic-i', '', "12345\n8\n", "8\n12345\n", 0],
+['basic-j', '', "1234\n8\n", "8\n1234\n", 0],
+['basic-k', '', "123\n8\n", "8\n123\n", 0],
+
+['b2-e', '', "a\nb", "b\na\n", 0],
+['b2-f', '', "1234567\n8", "8\n1234567\n", 0],
+['b2-g', '', "12345678\n9", "9\n12345678\n", 0],
+['b2-h', '', "123456\n8", "8\n123456\n", 0],
+['b2-i', '', "12345\n8", "8\n12345\n", 0],
+['b2-j', '', "1234\n8", "8\n1234\n", 0],
+['b2-k', '', "123\n8", "8\n123\n", 0],
+
+['opt-b', '-b', "\na\nb\nc", "\nc\nb\na", 0],
+['opt-s', '-s:', "a:b:c:", "c:b:a:", 0],
+['opt-sb', '-s : -b', ":a:b:c", ":c:b:a", 0],
+['opt-r', "-r -s '\\._+'", "1._2.__3.___4._", "4._3.___2.__1._", 0],
+
+['opt-r2', "-r -s '\\._+'", "a.___b.__1._2.__3.___4._",
+ "4._3.___2.__1._b.__a.___", 0],
+
+# This gave incorrect output (.___4._2.__3._1) with tac-1.22.
+['opt-br', "-b -r -s '\\._+'", "._1._2.__3.___4", ".___4.__3._2._1", 0],
+
+['opt-br2', "-b -r -s '\\._+'", ".__x.___y.____z._1._2.__3.___4",
+ ".___4.__3._2._1.____z.___y.__x", 0],
+);
+
+sub test_vector
+{
+ my $t;
+ foreach $t (@tv)
+ {
+ my ($test_name, $flags, $in, $exp, $ret) = @$t;
+
+ $Test::input_via{$test_name} = {REDIR => 0, FILE => 0, PIPE => 0}
+ }
+
+ # Temporarily turn off losing tests.
+ # These tests lose because tac_file isn't yet up to snuff with tac_mem.
+ foreach $t (qw (basic-a basic-d b2-e b2-f b2-g b2-h b2-i b2-j b2-k))
+ {
+ # $Test::input_via{$t} = {REDIR => 0, PIPE => 0};
+ $Test::input_via{$t} = {};
+ }
+
+ return @tv;
+}
+
+1;
diff --git a/tests/tac/b2-e.I b/tests/tac/b2-e.I
new file mode 100644
index 0000000..0a207c0
--- /dev/null
+++ b/tests/tac/b2-e.I
@@ -0,0 +1,2 @@
+a
+b \ No newline at end of file
diff --git a/tests/tac/b2-e.X b/tests/tac/b2-e.X
new file mode 100644
index 0000000..0e1677a
--- /dev/null
+++ b/tests/tac/b2-e.X
@@ -0,0 +1,2 @@
+b
+a
diff --git a/tests/tac/b2-f.I b/tests/tac/b2-f.I
new file mode 100644
index 0000000..1458212
--- /dev/null
+++ b/tests/tac/b2-f.I
@@ -0,0 +1,2 @@
+1234567
+8 \ No newline at end of file
diff --git a/tests/tac/b2-f.X b/tests/tac/b2-f.X
new file mode 100644
index 0000000..3da46de
--- /dev/null
+++ b/tests/tac/b2-f.X
@@ -0,0 +1,2 @@
+8
+1234567
diff --git a/tests/tac/b2-g.I b/tests/tac/b2-g.I
new file mode 100644
index 0000000..2ac4056
--- /dev/null
+++ b/tests/tac/b2-g.I
@@ -0,0 +1,2 @@
+12345678
+9 \ No newline at end of file
diff --git a/tests/tac/b2-g.X b/tests/tac/b2-g.X
new file mode 100644
index 0000000..3f82e65
--- /dev/null
+++ b/tests/tac/b2-g.X
@@ -0,0 +1,2 @@
+9
+12345678
diff --git a/tests/tac/b2-h.I b/tests/tac/b2-h.I
new file mode 100644
index 0000000..2f5e8c7
--- /dev/null
+++ b/tests/tac/b2-h.I
@@ -0,0 +1,2 @@
+123456
+8 \ No newline at end of file
diff --git a/tests/tac/b2-h.X b/tests/tac/b2-h.X
new file mode 100644
index 0000000..ae8cdac
--- /dev/null
+++ b/tests/tac/b2-h.X
@@ -0,0 +1,2 @@
+8
+123456
diff --git a/tests/tac/b2-i.I b/tests/tac/b2-i.I
new file mode 100644
index 0000000..844107d
--- /dev/null
+++ b/tests/tac/b2-i.I
@@ -0,0 +1,2 @@
+12345
+8 \ No newline at end of file
diff --git a/tests/tac/b2-i.X b/tests/tac/b2-i.X
new file mode 100644
index 0000000..01522ae
--- /dev/null
+++ b/tests/tac/b2-i.X
@@ -0,0 +1,2 @@
+8
+12345
diff --git a/tests/tac/b2-j.I b/tests/tac/b2-j.I
new file mode 100644
index 0000000..bee9832
--- /dev/null
+++ b/tests/tac/b2-j.I
@@ -0,0 +1,2 @@
+1234
+8 \ No newline at end of file
diff --git a/tests/tac/b2-j.X b/tests/tac/b2-j.X
new file mode 100644
index 0000000..06f555a
--- /dev/null
+++ b/tests/tac/b2-j.X
@@ -0,0 +1,2 @@
+8
+1234
diff --git a/tests/tac/b2-k.I b/tests/tac/b2-k.I
new file mode 100644
index 0000000..279b67b
--- /dev/null
+++ b/tests/tac/b2-k.I
@@ -0,0 +1,2 @@
+123
+8 \ No newline at end of file
diff --git a/tests/tac/b2-k.X b/tests/tac/b2-k.X
new file mode 100644
index 0000000..197142a
--- /dev/null
+++ b/tests/tac/b2-k.X
@@ -0,0 +1,2 @@
+8
+123
diff --git a/tests/tac/basic-0.I b/tests/tac/basic-0.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tac/basic-0.I
diff --git a/tests/tac/basic-0.X b/tests/tac/basic-0.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tac/basic-0.X
diff --git a/tests/tac/basic-a.I b/tests/tac/basic-a.I
new file mode 100644
index 0000000..2e65efe
--- /dev/null
+++ b/tests/tac/basic-a.I
@@ -0,0 +1 @@
+a \ No newline at end of file
diff --git a/tests/tac/basic-a.X b/tests/tac/basic-a.X
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/tests/tac/basic-a.X
@@ -0,0 +1 @@
+a
diff --git a/tests/tac/basic-b.I b/tests/tac/basic-b.I
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/tests/tac/basic-b.I
@@ -0,0 +1 @@
+
diff --git a/tests/tac/basic-b.X b/tests/tac/basic-b.X
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/tests/tac/basic-b.X
@@ -0,0 +1 @@
+
diff --git a/tests/tac/basic-c.I b/tests/tac/basic-c.I
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/tests/tac/basic-c.I
@@ -0,0 +1 @@
+a
diff --git a/tests/tac/basic-c.X b/tests/tac/basic-c.X
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/tests/tac/basic-c.X
@@ -0,0 +1 @@
+a
diff --git a/tests/tac/basic-d.I b/tests/tac/basic-d.I
new file mode 100644
index 0000000..0a207c0
--- /dev/null
+++ b/tests/tac/basic-d.I
@@ -0,0 +1,2 @@
+a
+b \ No newline at end of file
diff --git a/tests/tac/basic-d.X b/tests/tac/basic-d.X
new file mode 100644
index 0000000..0e1677a
--- /dev/null
+++ b/tests/tac/basic-d.X
@@ -0,0 +1,2 @@
+b
+a
diff --git a/tests/tac/basic-e.I b/tests/tac/basic-e.I
new file mode 100644
index 0000000..422c2b7
--- /dev/null
+++ b/tests/tac/basic-e.I
@@ -0,0 +1,2 @@
+a
+b
diff --git a/tests/tac/basic-e.X b/tests/tac/basic-e.X
new file mode 100644
index 0000000..0e1677a
--- /dev/null
+++ b/tests/tac/basic-e.X
@@ -0,0 +1,2 @@
+b
+a
diff --git a/tests/tac/basic-f.I b/tests/tac/basic-f.I
new file mode 100644
index 0000000..c71c7f5
--- /dev/null
+++ b/tests/tac/basic-f.I
@@ -0,0 +1,2 @@
+1234567
+8
diff --git a/tests/tac/basic-f.X b/tests/tac/basic-f.X
new file mode 100644
index 0000000..3da46de
--- /dev/null
+++ b/tests/tac/basic-f.X
@@ -0,0 +1,2 @@
+8
+1234567
diff --git a/tests/tac/basic-g.I b/tests/tac/basic-g.I
new file mode 100644
index 0000000..bbf18de
--- /dev/null
+++ b/tests/tac/basic-g.I
@@ -0,0 +1,2 @@
+12345678
+9
diff --git a/tests/tac/basic-g.X b/tests/tac/basic-g.X
new file mode 100644
index 0000000..3f82e65
--- /dev/null
+++ b/tests/tac/basic-g.X
@@ -0,0 +1,2 @@
+9
+12345678
diff --git a/tests/tac/basic-h.I b/tests/tac/basic-h.I
new file mode 100644
index 0000000..58ee29d
--- /dev/null
+++ b/tests/tac/basic-h.I
@@ -0,0 +1,2 @@
+123456
+8
diff --git a/tests/tac/basic-h.X b/tests/tac/basic-h.X
new file mode 100644
index 0000000..ae8cdac
--- /dev/null
+++ b/tests/tac/basic-h.X
@@ -0,0 +1,2 @@
+8
+123456
diff --git a/tests/tac/basic-i.I b/tests/tac/basic-i.I
new file mode 100644
index 0000000..34c1635
--- /dev/null
+++ b/tests/tac/basic-i.I
@@ -0,0 +1,2 @@
+12345
+8
diff --git a/tests/tac/basic-i.X b/tests/tac/basic-i.X
new file mode 100644
index 0000000..01522ae
--- /dev/null
+++ b/tests/tac/basic-i.X
@@ -0,0 +1,2 @@
+8
+12345
diff --git a/tests/tac/basic-j.I b/tests/tac/basic-j.I
new file mode 100644
index 0000000..6c9636c
--- /dev/null
+++ b/tests/tac/basic-j.I
@@ -0,0 +1,2 @@
+1234
+8
diff --git a/tests/tac/basic-j.X b/tests/tac/basic-j.X
new file mode 100644
index 0000000..06f555a
--- /dev/null
+++ b/tests/tac/basic-j.X
@@ -0,0 +1,2 @@
+8
+1234
diff --git a/tests/tac/basic-k.I b/tests/tac/basic-k.I
new file mode 100644
index 0000000..a3e245a
--- /dev/null
+++ b/tests/tac/basic-k.I
@@ -0,0 +1,2 @@
+123
+8
diff --git a/tests/tac/basic-k.X b/tests/tac/basic-k.X
new file mode 100644
index 0000000..197142a
--- /dev/null
+++ b/tests/tac/basic-k.X
@@ -0,0 +1,2 @@
+8
+123
diff --git a/tests/tac/opt-b.I b/tests/tac/opt-b.I
new file mode 100644
index 0000000..d98735a
--- /dev/null
+++ b/tests/tac/opt-b.I
@@ -0,0 +1,4 @@
+
+a
+b
+c \ No newline at end of file
diff --git a/tests/tac/opt-b.X b/tests/tac/opt-b.X
new file mode 100644
index 0000000..4f0460c
--- /dev/null
+++ b/tests/tac/opt-b.X
@@ -0,0 +1,4 @@
+
+c
+b
+a \ No newline at end of file
diff --git a/tests/tac/opt-br.I b/tests/tac/opt-br.I
new file mode 100644
index 0000000..a5e7adf
--- /dev/null
+++ b/tests/tac/opt-br.I
@@ -0,0 +1 @@
+._1._2.__3.___4 \ No newline at end of file
diff --git a/tests/tac/opt-br.X b/tests/tac/opt-br.X
new file mode 100644
index 0000000..f25c4b4
--- /dev/null
+++ b/tests/tac/opt-br.X
@@ -0,0 +1 @@
+.___4.__3._2._1 \ No newline at end of file
diff --git a/tests/tac/opt-br2.I b/tests/tac/opt-br2.I
new file mode 100644
index 0000000..fc2415b
--- /dev/null
+++ b/tests/tac/opt-br2.I
@@ -0,0 +1 @@
+.__x.___y.____z._1._2.__3.___4 \ No newline at end of file
diff --git a/tests/tac/opt-br2.X b/tests/tac/opt-br2.X
new file mode 100644
index 0000000..b2c421d
--- /dev/null
+++ b/tests/tac/opt-br2.X
@@ -0,0 +1 @@
+.___4.__3._2._1.____z.___y.__x \ No newline at end of file
diff --git a/tests/tac/opt-r.I b/tests/tac/opt-r.I
new file mode 100644
index 0000000..1e0da31
--- /dev/null
+++ b/tests/tac/opt-r.I
@@ -0,0 +1 @@
+1._2.__3.___4._ \ No newline at end of file
diff --git a/tests/tac/opt-r.X b/tests/tac/opt-r.X
new file mode 100644
index 0000000..2efe3d7
--- /dev/null
+++ b/tests/tac/opt-r.X
@@ -0,0 +1 @@
+4._3.___2.__1._ \ No newline at end of file
diff --git a/tests/tac/opt-r2.I b/tests/tac/opt-r2.I
new file mode 100644
index 0000000..5d8ff72
--- /dev/null
+++ b/tests/tac/opt-r2.I
@@ -0,0 +1 @@
+a.___b.__1._2.__3.___4._ \ No newline at end of file
diff --git a/tests/tac/opt-r2.X b/tests/tac/opt-r2.X
new file mode 100644
index 0000000..9ce88b8
--- /dev/null
+++ b/tests/tac/opt-r2.X
@@ -0,0 +1 @@
+4._3.___2.__1._b.__a.___ \ No newline at end of file
diff --git a/tests/tac/opt-s.I b/tests/tac/opt-s.I
new file mode 100644
index 0000000..a55a1a4
--- /dev/null
+++ b/tests/tac/opt-s.I
@@ -0,0 +1 @@
+a:b:c: \ No newline at end of file
diff --git a/tests/tac/opt-s.X b/tests/tac/opt-s.X
new file mode 100644
index 0000000..b9c3b4d
--- /dev/null
+++ b/tests/tac/opt-s.X
@@ -0,0 +1 @@
+c:b:a: \ No newline at end of file
diff --git a/tests/tac/opt-sb.I b/tests/tac/opt-sb.I
new file mode 100644
index 0000000..e6f798f
--- /dev/null
+++ b/tests/tac/opt-sb.I
@@ -0,0 +1 @@
+:a:b:c \ No newline at end of file
diff --git a/tests/tac/opt-sb.X b/tests/tac/opt-sb.X
new file mode 100644
index 0000000..9d70946
--- /dev/null
+++ b/tests/tac/opt-sb.X
@@ -0,0 +1 @@
+:c:b:a \ No newline at end of file
diff --git a/tests/tac/tac-tests b/tests/tac/tac-tests
new file mode 100755
index 0000000..511c032
--- /dev/null
+++ b/tests/tac/tac-tests
@@ -0,0 +1,945 @@
+#! /bin/sh
+# This script was generated automatically by mk-script.
+case $# in
+ 0) xx='tac';;
+ *) xx="$1";;
+esac
+test "$VERBOSE" && echo=echo || echo=:
+$echo testing program: $xx
+errors=0
+test "$srcdir" || srcdir=.
+test "$VERBOSE" && $xx --version 2> /dev/null
+
+# Make sure we get English translations.
+LANGUAGE=C
+export LANGUAGE
+LC_ALL=C
+export LC_ALL
+LANG=C
+export LANG
+
+$xx $srcdir/basic-0.I > basic-0.O 2> basic-0.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-0(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-0.O $srcdir/basic-0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-0(F)"; fi;;
+ 1) $echo "Test basic-0(F) failed: files basic-0.O and $srcdir/basic-0.X differ" 1>&2
+ (diff -c basic-0.O $srcdir/basic-0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-0(F) may have failed." 1>&2
+ $echo The command "cmp basic-0.O $srcdir/basic-0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-0.E || rm -f basic-0.E
+cat $srcdir/basic-0.I | $xx > basic-0.O 2> basic-0.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-0(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-0.O $srcdir/basic-0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-0(|)"; fi;;
+ 1) $echo "Test basic-0(|) failed: files basic-0.O and $srcdir/basic-0.X differ" 1>&2
+ (diff -c basic-0.O $srcdir/basic-0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-0(|) may have failed." 1>&2
+ $echo The command "cmp basic-0.O $srcdir/basic-0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-0.E || rm -f basic-0.E
+$xx < $srcdir/basic-0.I > basic-0.O 2> basic-0.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-0(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-0.O $srcdir/basic-0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-0(<)"; fi;;
+ 1) $echo "Test basic-0(<) failed: files basic-0.O and $srcdir/basic-0.X differ" 1>&2
+ (diff -c basic-0.O $srcdir/basic-0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-0(<) may have failed." 1>&2
+ $echo The command "cmp basic-0.O $srcdir/basic-0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-0.E || rm -f basic-0.E
+$xx $srcdir/basic-b.I > basic-b.O 2> basic-b.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-b(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-b.O $srcdir/basic-b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-b(F)"; fi;;
+ 1) $echo "Test basic-b(F) failed: files basic-b.O and $srcdir/basic-b.X differ" 1>&2
+ (diff -c basic-b.O $srcdir/basic-b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-b(F) may have failed." 1>&2
+ $echo The command "cmp basic-b.O $srcdir/basic-b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-b.E || rm -f basic-b.E
+cat $srcdir/basic-b.I | $xx > basic-b.O 2> basic-b.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-b(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-b.O $srcdir/basic-b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-b(|)"; fi;;
+ 1) $echo "Test basic-b(|) failed: files basic-b.O and $srcdir/basic-b.X differ" 1>&2
+ (diff -c basic-b.O $srcdir/basic-b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-b(|) may have failed." 1>&2
+ $echo The command "cmp basic-b.O $srcdir/basic-b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-b.E || rm -f basic-b.E
+$xx < $srcdir/basic-b.I > basic-b.O 2> basic-b.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-b(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-b.O $srcdir/basic-b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-b(<)"; fi;;
+ 1) $echo "Test basic-b(<) failed: files basic-b.O and $srcdir/basic-b.X differ" 1>&2
+ (diff -c basic-b.O $srcdir/basic-b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-b(<) may have failed." 1>&2
+ $echo The command "cmp basic-b.O $srcdir/basic-b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-b.E || rm -f basic-b.E
+$xx $srcdir/basic-c.I > basic-c.O 2> basic-c.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-c(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-c.O $srcdir/basic-c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-c(F)"; fi;;
+ 1) $echo "Test basic-c(F) failed: files basic-c.O and $srcdir/basic-c.X differ" 1>&2
+ (diff -c basic-c.O $srcdir/basic-c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-c(F) may have failed." 1>&2
+ $echo The command "cmp basic-c.O $srcdir/basic-c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-c.E || rm -f basic-c.E
+cat $srcdir/basic-c.I | $xx > basic-c.O 2> basic-c.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-c(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-c.O $srcdir/basic-c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-c(|)"; fi;;
+ 1) $echo "Test basic-c(|) failed: files basic-c.O and $srcdir/basic-c.X differ" 1>&2
+ (diff -c basic-c.O $srcdir/basic-c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-c(|) may have failed." 1>&2
+ $echo The command "cmp basic-c.O $srcdir/basic-c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-c.E || rm -f basic-c.E
+$xx < $srcdir/basic-c.I > basic-c.O 2> basic-c.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-c(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-c.O $srcdir/basic-c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-c(<)"; fi;;
+ 1) $echo "Test basic-c(<) failed: files basic-c.O and $srcdir/basic-c.X differ" 1>&2
+ (diff -c basic-c.O $srcdir/basic-c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-c(<) may have failed." 1>&2
+ $echo The command "cmp basic-c.O $srcdir/basic-c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-c.E || rm -f basic-c.E
+$xx $srcdir/basic-e.I > basic-e.O 2> basic-e.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-e(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-e.O $srcdir/basic-e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-e(F)"; fi;;
+ 1) $echo "Test basic-e(F) failed: files basic-e.O and $srcdir/basic-e.X differ" 1>&2
+ (diff -c basic-e.O $srcdir/basic-e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-e(F) may have failed." 1>&2
+ $echo The command "cmp basic-e.O $srcdir/basic-e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-e.E || rm -f basic-e.E
+cat $srcdir/basic-e.I | $xx > basic-e.O 2> basic-e.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-e(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-e.O $srcdir/basic-e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-e(|)"; fi;;
+ 1) $echo "Test basic-e(|) failed: files basic-e.O and $srcdir/basic-e.X differ" 1>&2
+ (diff -c basic-e.O $srcdir/basic-e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-e(|) may have failed." 1>&2
+ $echo The command "cmp basic-e.O $srcdir/basic-e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-e.E || rm -f basic-e.E
+$xx < $srcdir/basic-e.I > basic-e.O 2> basic-e.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-e(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-e.O $srcdir/basic-e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-e(<)"; fi;;
+ 1) $echo "Test basic-e(<) failed: files basic-e.O and $srcdir/basic-e.X differ" 1>&2
+ (diff -c basic-e.O $srcdir/basic-e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-e(<) may have failed." 1>&2
+ $echo The command "cmp basic-e.O $srcdir/basic-e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-e.E || rm -f basic-e.E
+$xx $srcdir/basic-f.I > basic-f.O 2> basic-f.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-f(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-f.O $srcdir/basic-f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-f(F)"; fi;;
+ 1) $echo "Test basic-f(F) failed: files basic-f.O and $srcdir/basic-f.X differ" 1>&2
+ (diff -c basic-f.O $srcdir/basic-f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-f(F) may have failed." 1>&2
+ $echo The command "cmp basic-f.O $srcdir/basic-f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-f.E || rm -f basic-f.E
+cat $srcdir/basic-f.I | $xx > basic-f.O 2> basic-f.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-f(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-f.O $srcdir/basic-f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-f(|)"; fi;;
+ 1) $echo "Test basic-f(|) failed: files basic-f.O and $srcdir/basic-f.X differ" 1>&2
+ (diff -c basic-f.O $srcdir/basic-f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-f(|) may have failed." 1>&2
+ $echo The command "cmp basic-f.O $srcdir/basic-f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-f.E || rm -f basic-f.E
+$xx < $srcdir/basic-f.I > basic-f.O 2> basic-f.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-f(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-f.O $srcdir/basic-f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-f(<)"; fi;;
+ 1) $echo "Test basic-f(<) failed: files basic-f.O and $srcdir/basic-f.X differ" 1>&2
+ (diff -c basic-f.O $srcdir/basic-f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-f(<) may have failed." 1>&2
+ $echo The command "cmp basic-f.O $srcdir/basic-f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-f.E || rm -f basic-f.E
+$xx $srcdir/basic-g.I > basic-g.O 2> basic-g.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-g(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-g.O $srcdir/basic-g.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-g(F)"; fi;;
+ 1) $echo "Test basic-g(F) failed: files basic-g.O and $srcdir/basic-g.X differ" 1>&2
+ (diff -c basic-g.O $srcdir/basic-g.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-g(F) may have failed." 1>&2
+ $echo The command "cmp basic-g.O $srcdir/basic-g.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-g.E || rm -f basic-g.E
+cat $srcdir/basic-g.I | $xx > basic-g.O 2> basic-g.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-g(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-g.O $srcdir/basic-g.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-g(|)"; fi;;
+ 1) $echo "Test basic-g(|) failed: files basic-g.O and $srcdir/basic-g.X differ" 1>&2
+ (diff -c basic-g.O $srcdir/basic-g.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-g(|) may have failed." 1>&2
+ $echo The command "cmp basic-g.O $srcdir/basic-g.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-g.E || rm -f basic-g.E
+$xx < $srcdir/basic-g.I > basic-g.O 2> basic-g.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-g(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-g.O $srcdir/basic-g.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-g(<)"; fi;;
+ 1) $echo "Test basic-g(<) failed: files basic-g.O and $srcdir/basic-g.X differ" 1>&2
+ (diff -c basic-g.O $srcdir/basic-g.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-g(<) may have failed." 1>&2
+ $echo The command "cmp basic-g.O $srcdir/basic-g.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-g.E || rm -f basic-g.E
+$xx $srcdir/basic-h.I > basic-h.O 2> basic-h.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-h(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-h.O $srcdir/basic-h.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-h(F)"; fi;;
+ 1) $echo "Test basic-h(F) failed: files basic-h.O and $srcdir/basic-h.X differ" 1>&2
+ (diff -c basic-h.O $srcdir/basic-h.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-h(F) may have failed." 1>&2
+ $echo The command "cmp basic-h.O $srcdir/basic-h.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-h.E || rm -f basic-h.E
+cat $srcdir/basic-h.I | $xx > basic-h.O 2> basic-h.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-h(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-h.O $srcdir/basic-h.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-h(|)"; fi;;
+ 1) $echo "Test basic-h(|) failed: files basic-h.O and $srcdir/basic-h.X differ" 1>&2
+ (diff -c basic-h.O $srcdir/basic-h.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-h(|) may have failed." 1>&2
+ $echo The command "cmp basic-h.O $srcdir/basic-h.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-h.E || rm -f basic-h.E
+$xx < $srcdir/basic-h.I > basic-h.O 2> basic-h.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-h(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-h.O $srcdir/basic-h.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-h(<)"; fi;;
+ 1) $echo "Test basic-h(<) failed: files basic-h.O and $srcdir/basic-h.X differ" 1>&2
+ (diff -c basic-h.O $srcdir/basic-h.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-h(<) may have failed." 1>&2
+ $echo The command "cmp basic-h.O $srcdir/basic-h.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-h.E || rm -f basic-h.E
+$xx $srcdir/basic-i.I > basic-i.O 2> basic-i.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-i(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-i.O $srcdir/basic-i.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-i(F)"; fi;;
+ 1) $echo "Test basic-i(F) failed: files basic-i.O and $srcdir/basic-i.X differ" 1>&2
+ (diff -c basic-i.O $srcdir/basic-i.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-i(F) may have failed." 1>&2
+ $echo The command "cmp basic-i.O $srcdir/basic-i.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-i.E || rm -f basic-i.E
+cat $srcdir/basic-i.I | $xx > basic-i.O 2> basic-i.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-i(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-i.O $srcdir/basic-i.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-i(|)"; fi;;
+ 1) $echo "Test basic-i(|) failed: files basic-i.O and $srcdir/basic-i.X differ" 1>&2
+ (diff -c basic-i.O $srcdir/basic-i.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-i(|) may have failed." 1>&2
+ $echo The command "cmp basic-i.O $srcdir/basic-i.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-i.E || rm -f basic-i.E
+$xx < $srcdir/basic-i.I > basic-i.O 2> basic-i.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-i(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-i.O $srcdir/basic-i.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-i(<)"; fi;;
+ 1) $echo "Test basic-i(<) failed: files basic-i.O and $srcdir/basic-i.X differ" 1>&2
+ (diff -c basic-i.O $srcdir/basic-i.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-i(<) may have failed." 1>&2
+ $echo The command "cmp basic-i.O $srcdir/basic-i.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-i.E || rm -f basic-i.E
+$xx $srcdir/basic-j.I > basic-j.O 2> basic-j.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-j(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-j.O $srcdir/basic-j.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-j(F)"; fi;;
+ 1) $echo "Test basic-j(F) failed: files basic-j.O and $srcdir/basic-j.X differ" 1>&2
+ (diff -c basic-j.O $srcdir/basic-j.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-j(F) may have failed." 1>&2
+ $echo The command "cmp basic-j.O $srcdir/basic-j.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-j.E || rm -f basic-j.E
+cat $srcdir/basic-j.I | $xx > basic-j.O 2> basic-j.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-j(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-j.O $srcdir/basic-j.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-j(|)"; fi;;
+ 1) $echo "Test basic-j(|) failed: files basic-j.O and $srcdir/basic-j.X differ" 1>&2
+ (diff -c basic-j.O $srcdir/basic-j.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-j(|) may have failed." 1>&2
+ $echo The command "cmp basic-j.O $srcdir/basic-j.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-j.E || rm -f basic-j.E
+$xx < $srcdir/basic-j.I > basic-j.O 2> basic-j.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-j(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-j.O $srcdir/basic-j.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-j(<)"; fi;;
+ 1) $echo "Test basic-j(<) failed: files basic-j.O and $srcdir/basic-j.X differ" 1>&2
+ (diff -c basic-j.O $srcdir/basic-j.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-j(<) may have failed." 1>&2
+ $echo The command "cmp basic-j.O $srcdir/basic-j.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-j.E || rm -f basic-j.E
+$xx $srcdir/basic-k.I > basic-k.O 2> basic-k.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-k(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-k.O $srcdir/basic-k.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-k(F)"; fi;;
+ 1) $echo "Test basic-k(F) failed: files basic-k.O and $srcdir/basic-k.X differ" 1>&2
+ (diff -c basic-k.O $srcdir/basic-k.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-k(F) may have failed." 1>&2
+ $echo The command "cmp basic-k.O $srcdir/basic-k.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-k.E || rm -f basic-k.E
+cat $srcdir/basic-k.I | $xx > basic-k.O 2> basic-k.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-k(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-k.O $srcdir/basic-k.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-k(|)"; fi;;
+ 1) $echo "Test basic-k(|) failed: files basic-k.O and $srcdir/basic-k.X differ" 1>&2
+ (diff -c basic-k.O $srcdir/basic-k.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-k(|) may have failed." 1>&2
+ $echo The command "cmp basic-k.O $srcdir/basic-k.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-k.E || rm -f basic-k.E
+$xx < $srcdir/basic-k.I > basic-k.O 2> basic-k.E
+code=$?
+if test $code != 0; then
+ $echo "Test basic-k(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp basic-k.O $srcdir/basic-k.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed basic-k(<)"; fi;;
+ 1) $echo "Test basic-k(<) failed: files basic-k.O and $srcdir/basic-k.X differ" 1>&2
+ (diff -c basic-k.O $srcdir/basic-k.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test basic-k(<) may have failed." 1>&2
+ $echo The command "cmp basic-k.O $srcdir/basic-k.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s basic-k.E || rm -f basic-k.E
+$xx -b $srcdir/opt-b.I > opt-b.O 2> opt-b.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-b(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-b.O $srcdir/opt-b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-b(F)"; fi;;
+ 1) $echo "Test opt-b(F) failed: files opt-b.O and $srcdir/opt-b.X differ" 1>&2
+ (diff -c opt-b.O $srcdir/opt-b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-b(F) may have failed." 1>&2
+ $echo The command "cmp opt-b.O $srcdir/opt-b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-b.E || rm -f opt-b.E
+cat $srcdir/opt-b.I | $xx -b > opt-b.O 2> opt-b.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-b(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-b.O $srcdir/opt-b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-b(|)"; fi;;
+ 1) $echo "Test opt-b(|) failed: files opt-b.O and $srcdir/opt-b.X differ" 1>&2
+ (diff -c opt-b.O $srcdir/opt-b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-b(|) may have failed." 1>&2
+ $echo The command "cmp opt-b.O $srcdir/opt-b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-b.E || rm -f opt-b.E
+$xx -b < $srcdir/opt-b.I > opt-b.O 2> opt-b.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-b(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-b.O $srcdir/opt-b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-b(<)"; fi;;
+ 1) $echo "Test opt-b(<) failed: files opt-b.O and $srcdir/opt-b.X differ" 1>&2
+ (diff -c opt-b.O $srcdir/opt-b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-b(<) may have failed." 1>&2
+ $echo The command "cmp opt-b.O $srcdir/opt-b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-b.E || rm -f opt-b.E
+$xx -s: $srcdir/opt-s.I > opt-s.O 2> opt-s.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-s(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-s.O $srcdir/opt-s.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-s(F)"; fi;;
+ 1) $echo "Test opt-s(F) failed: files opt-s.O and $srcdir/opt-s.X differ" 1>&2
+ (diff -c opt-s.O $srcdir/opt-s.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-s(F) may have failed." 1>&2
+ $echo The command "cmp opt-s.O $srcdir/opt-s.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-s.E || rm -f opt-s.E
+cat $srcdir/opt-s.I | $xx -s: > opt-s.O 2> opt-s.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-s(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-s.O $srcdir/opt-s.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-s(|)"; fi;;
+ 1) $echo "Test opt-s(|) failed: files opt-s.O and $srcdir/opt-s.X differ" 1>&2
+ (diff -c opt-s.O $srcdir/opt-s.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-s(|) may have failed." 1>&2
+ $echo The command "cmp opt-s.O $srcdir/opt-s.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-s.E || rm -f opt-s.E
+$xx -s: < $srcdir/opt-s.I > opt-s.O 2> opt-s.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-s(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-s.O $srcdir/opt-s.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-s(<)"; fi;;
+ 1) $echo "Test opt-s(<) failed: files opt-s.O and $srcdir/opt-s.X differ" 1>&2
+ (diff -c opt-s.O $srcdir/opt-s.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-s(<) may have failed." 1>&2
+ $echo The command "cmp opt-s.O $srcdir/opt-s.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-s.E || rm -f opt-s.E
+$xx -s : -b $srcdir/opt-sb.I > opt-sb.O 2> opt-sb.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-sb(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-sb.O $srcdir/opt-sb.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-sb(F)"; fi;;
+ 1) $echo "Test opt-sb(F) failed: files opt-sb.O and $srcdir/opt-sb.X differ" 1>&2
+ (diff -c opt-sb.O $srcdir/opt-sb.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-sb(F) may have failed." 1>&2
+ $echo The command "cmp opt-sb.O $srcdir/opt-sb.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-sb.E || rm -f opt-sb.E
+cat $srcdir/opt-sb.I | $xx -s : -b > opt-sb.O 2> opt-sb.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-sb(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-sb.O $srcdir/opt-sb.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-sb(|)"; fi;;
+ 1) $echo "Test opt-sb(|) failed: files opt-sb.O and $srcdir/opt-sb.X differ" 1>&2
+ (diff -c opt-sb.O $srcdir/opt-sb.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-sb(|) may have failed." 1>&2
+ $echo The command "cmp opt-sb.O $srcdir/opt-sb.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-sb.E || rm -f opt-sb.E
+$xx -s : -b < $srcdir/opt-sb.I > opt-sb.O 2> opt-sb.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-sb(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-sb.O $srcdir/opt-sb.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-sb(<)"; fi;;
+ 1) $echo "Test opt-sb(<) failed: files opt-sb.O and $srcdir/opt-sb.X differ" 1>&2
+ (diff -c opt-sb.O $srcdir/opt-sb.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-sb(<) may have failed." 1>&2
+ $echo The command "cmp opt-sb.O $srcdir/opt-sb.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-sb.E || rm -f opt-sb.E
+$xx -r -s '\._+' $srcdir/opt-r.I > opt-r.O 2> opt-r.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-r(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-r.O $srcdir/opt-r.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-r(F)"; fi;;
+ 1) $echo "Test opt-r(F) failed: files opt-r.O and $srcdir/opt-r.X differ" 1>&2
+ (diff -c opt-r.O $srcdir/opt-r.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-r(F) may have failed." 1>&2
+ $echo The command "cmp opt-r.O $srcdir/opt-r.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-r.E || rm -f opt-r.E
+cat $srcdir/opt-r.I | $xx -r -s '\._+' > opt-r.O 2> opt-r.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-r(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-r.O $srcdir/opt-r.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-r(|)"; fi;;
+ 1) $echo "Test opt-r(|) failed: files opt-r.O and $srcdir/opt-r.X differ" 1>&2
+ (diff -c opt-r.O $srcdir/opt-r.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-r(|) may have failed." 1>&2
+ $echo The command "cmp opt-r.O $srcdir/opt-r.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-r.E || rm -f opt-r.E
+$xx -r -s '\._+' < $srcdir/opt-r.I > opt-r.O 2> opt-r.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-r(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-r.O $srcdir/opt-r.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-r(<)"; fi;;
+ 1) $echo "Test opt-r(<) failed: files opt-r.O and $srcdir/opt-r.X differ" 1>&2
+ (diff -c opt-r.O $srcdir/opt-r.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-r(<) may have failed." 1>&2
+ $echo The command "cmp opt-r.O $srcdir/opt-r.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-r.E || rm -f opt-r.E
+$xx -r -s '\._+' $srcdir/opt-r2.I > opt-r2.O 2> opt-r2.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-r2(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-r2.O $srcdir/opt-r2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-r2(F)"; fi;;
+ 1) $echo "Test opt-r2(F) failed: files opt-r2.O and $srcdir/opt-r2.X differ" 1>&2
+ (diff -c opt-r2.O $srcdir/opt-r2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-r2(F) may have failed." 1>&2
+ $echo The command "cmp opt-r2.O $srcdir/opt-r2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-r2.E || rm -f opt-r2.E
+cat $srcdir/opt-r2.I | $xx -r -s '\._+' > opt-r2.O 2> opt-r2.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-r2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-r2.O $srcdir/opt-r2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-r2(|)"; fi;;
+ 1) $echo "Test opt-r2(|) failed: files opt-r2.O and $srcdir/opt-r2.X differ" 1>&2
+ (diff -c opt-r2.O $srcdir/opt-r2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-r2(|) may have failed." 1>&2
+ $echo The command "cmp opt-r2.O $srcdir/opt-r2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-r2.E || rm -f opt-r2.E
+$xx -r -s '\._+' < $srcdir/opt-r2.I > opt-r2.O 2> opt-r2.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-r2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-r2.O $srcdir/opt-r2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-r2(<)"; fi;;
+ 1) $echo "Test opt-r2(<) failed: files opt-r2.O and $srcdir/opt-r2.X differ" 1>&2
+ (diff -c opt-r2.O $srcdir/opt-r2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-r2(<) may have failed." 1>&2
+ $echo The command "cmp opt-r2.O $srcdir/opt-r2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-r2.E || rm -f opt-r2.E
+$xx -b -r -s '\._+' $srcdir/opt-br.I > opt-br.O 2> opt-br.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-br(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-br.O $srcdir/opt-br.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-br(F)"; fi;;
+ 1) $echo "Test opt-br(F) failed: files opt-br.O and $srcdir/opt-br.X differ" 1>&2
+ (diff -c opt-br.O $srcdir/opt-br.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-br(F) may have failed." 1>&2
+ $echo The command "cmp opt-br.O $srcdir/opt-br.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-br.E || rm -f opt-br.E
+cat $srcdir/opt-br.I | $xx -b -r -s '\._+' > opt-br.O 2> opt-br.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-br(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-br.O $srcdir/opt-br.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-br(|)"; fi;;
+ 1) $echo "Test opt-br(|) failed: files opt-br.O and $srcdir/opt-br.X differ" 1>&2
+ (diff -c opt-br.O $srcdir/opt-br.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-br(|) may have failed." 1>&2
+ $echo The command "cmp opt-br.O $srcdir/opt-br.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-br.E || rm -f opt-br.E
+$xx -b -r -s '\._+' < $srcdir/opt-br.I > opt-br.O 2> opt-br.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-br(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-br.O $srcdir/opt-br.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-br(<)"; fi;;
+ 1) $echo "Test opt-br(<) failed: files opt-br.O and $srcdir/opt-br.X differ" 1>&2
+ (diff -c opt-br.O $srcdir/opt-br.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-br(<) may have failed." 1>&2
+ $echo The command "cmp opt-br.O $srcdir/opt-br.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-br.E || rm -f opt-br.E
+$xx -b -r -s '\._+' $srcdir/opt-br2.I > opt-br2.O 2> opt-br2.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-br2(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-br2.O $srcdir/opt-br2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-br2(F)"; fi;;
+ 1) $echo "Test opt-br2(F) failed: files opt-br2.O and $srcdir/opt-br2.X differ" 1>&2
+ (diff -c opt-br2.O $srcdir/opt-br2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-br2(F) may have failed." 1>&2
+ $echo The command "cmp opt-br2.O $srcdir/opt-br2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-br2.E || rm -f opt-br2.E
+cat $srcdir/opt-br2.I | $xx -b -r -s '\._+' > opt-br2.O 2> opt-br2.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-br2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-br2.O $srcdir/opt-br2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-br2(|)"; fi;;
+ 1) $echo "Test opt-br2(|) failed: files opt-br2.O and $srcdir/opt-br2.X differ" 1>&2
+ (diff -c opt-br2.O $srcdir/opt-br2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-br2(|) may have failed." 1>&2
+ $echo The command "cmp opt-br2.O $srcdir/opt-br2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-br2.E || rm -f opt-br2.E
+$xx -b -r -s '\._+' < $srcdir/opt-br2.I > opt-br2.O 2> opt-br2.E
+code=$?
+if test $code != 0; then
+ $echo "Test opt-br2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp opt-br2.O $srcdir/opt-br2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed opt-br2(<)"; fi;;
+ 1) $echo "Test opt-br2(<) failed: files opt-br2.O and $srcdir/opt-br2.X differ" 1>&2
+ (diff -c opt-br2.O $srcdir/opt-br2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test opt-br2(<) may have failed." 1>&2
+ $echo The command "cmp opt-br2.O $srcdir/opt-br2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s opt-br2.E || rm -f opt-br2.E
+if test $errors = 0; then
+ $echo Passed all 51 tests. 1>&2
+else
+ $echo Failed $errors tests. 1>&2
+fi
+test $errors = 0 || errors=1
+exit $errors
diff --git a/tests/tail-2/Makefile.am b/tests/tail-2/Makefile.am
new file mode 100644
index 0000000..e038a1b
--- /dev/null
+++ b/tests/tail-2/Makefile.am
@@ -0,0 +1,34 @@
+# Make coreutils tests for "tail". -*-Makefile-*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+EXTRA_DIST = $(TESTS)
+
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=tail
+
+TESTS = \
+ append-only \
+ tail-n0f \
+ big-4gb proc-ksyms start-middle assert assert-2
diff --git a/tests/tail-2/Makefile.in b/tests/tail-2/Makefile.in
new file mode 100644
index 0000000..4a3818a
--- /dev/null
+++ b/tests/tail-2/Makefile.in
@@ -0,0 +1,744 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils tests for "tail". -*-Makefile-*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/tail-2
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=tail
+
+TESTS = \
+ append-only \
+ tail-n0f \
+ big-4gb proc-ksyms start-middle assert assert-2
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/tail-2/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/tail-2/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/tail-2/append-only b/tests/tail-2/append-only
new file mode 100755
index 0000000..cee6644
--- /dev/null
+++ b/tests/tail-2/append-only
@@ -0,0 +1,55 @@
+#!/bin/sh
+# Ensure that tail -f works on an append-only file
+# Requires root access to do chattr +a, as well as an ext[23] or xfs file system
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ tail --version
+fi
+
+PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+touch f
+chattr +a f 2>/dev/null || framework_failure=1
+( echo x > f ) 2>/dev/null && framework_failure=1
+echo x >> f || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: chattr +a doesn't work on this file system; skipping this test " 1>&2
+ (exit 77); exit 77
+fi
+
+fail=0
+
+sleep 1 &
+pid=$!
+tail --pid=$pid -f f > /dev/null 2>&1 || fail=1
+chattr -a f 2>/dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/tail-2/assert b/tests/tail-2/assert
new file mode 100755
index 0000000..b94a6ba
--- /dev/null
+++ b/tests/tail-2/assert
@@ -0,0 +1,78 @@
+#!/bin/sh
+# Test for assertion failure in "test".
+
+# Copyright (C) 1999, 2000, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+
+# This test fails with tail from textutils-2.0.
+# It would get something like this:
+# tail: tail.c:718: recheck: Assertion `valid_file_spec (f)' failed.
+# Aborted
+# due to a race condition in which a dev/inode pair is reused.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ tail --version
+fi
+
+# Not "expensive" per se, but sleeping for so long is annoying.
+. $srcdir/../very-expensive
+
+tmp=tail-assert.$$
+pwd=`pwd`
+trap 'cd "$pwd" && rm -rf $tmp' 0 1 2 3 15
+
+test_failure=0
+mkdir $tmp || test_failure=1
+cd $tmp || test_failure=1
+
+if test $test_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+ok='ok ok ok'
+
+touch a foo
+tail --follow=name a foo > err 2>&1 &
+tail_pid=$!
+# Arrange for the tail process to die after 12 seconds.
+(sleep 12; kill $tail_pid) &
+
+echo sleeping for 7 seconds...
+
+# Give the backgrounded `tail' a chance to start before removing foo.
+# Otherwise, without --retry, tail wouldn't try to open `foo' again.
+sleep 1
+
+rm -f foo
+sleep 6
+echo $ok > f
+mv f foo
+
+# echo waiting....
+wait
+
+case "`cat err`" in
+ *$ok) fail=0;;
+ *) fail=1;;
+esac
+
+test $fail = 1 && cat err
+
+exit $fail
diff --git a/tests/tail-2/assert-2 b/tests/tail-2/assert-2
new file mode 100755
index 0000000..f535758
--- /dev/null
+++ b/tests/tail-2/assert-2
@@ -0,0 +1,66 @@
+#!/bin/sh
+# This variant of `assert' would get a UMR reliably in 2.0.9.
+# Due to a race condition in the test, the `assert' script would get
+# the UMR on Solaris only some of the time, and not at all on Linux/GNU.
+
+# Copyright (C) 2000, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ tail --version
+fi
+
+# Not "expensive" per se, but sleeping for so long is annoying.
+. $srcdir/../very-expensive
+
+tmp=tail-as2.$$
+pwd=`pwd`
+trap 'cd "$pwd" && rm -rf $tmp' 0 1 2 3 15
+
+test_failure=0
+mkdir $tmp || test_failure=1
+cd $tmp || test_failure=1
+
+if test $test_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+ok='ok ok ok'
+
+touch a
+tail --follow=name a foo > err 2>&1 &
+tail_pid=$!
+# Arrange for the tail process to die after 12 seconds.
+(sleep 12; kill $tail_pid) &
+echo $ok > f
+echo sleeping for 7 seconds...
+sleep 7
+mv f foo
+
+# echo waiting....
+wait
+
+case "`cat err`" in
+ *$ok) fail=0;;
+ *) fail=1;;
+esac
+
+test $fail = 1 && cat err
+
+exit $fail
diff --git a/tests/tail-2/big-4gb b/tests/tail-2/big-4gb
new file mode 100755
index 0000000..b0ca79d
--- /dev/null
+++ b/tests/tail-2/big-4gb
@@ -0,0 +1,71 @@
+#!/bin/sh
+# Demonstrate a bug in `tail -cN' when operating on files of size 4G and larger
+# Fixed in coreutils-4.5.2.
+
+# Copyright (C) 2002, 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+. $srcdir/../expensive
+
+if test "$VERBOSE" = yes; then
+ set -x
+ tail --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+# Create a file of size exactly 4GB (2^32) with 8 bytes
+# at the beginning and another set of 8 bytes at the end.
+# The rest will be NUL bytes. On most modern systems, the following
+# creates a file that takes up only a few KB. Here, du -sh says 16K.
+echo abcdefgh | tr -d '\n' > big || framework_failure=1
+echo 87654321 | tr -d '\n' > tmp || framework_failure=1
+# Seek 4GB - 8
+dd bs=1 seek=4294967288 if=tmp of=big 2> err || dd_failed=1
+if test "$dd_failed" = 1; then
+ cat err 1>&2
+ echo "$0: cannot create a file large enough for this test," 1>&2
+ echo "$0: possibly because this system doesn't support large files;" 1>&2
+ echo "$0: Consider rerunning this test on a different file system." 1>&2
+ (exit 77); exit 77
+fi
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+tail -c1 big > out || fail=1
+# Append a newline.
+echo >> out
+cat <<\EOF > exp
+1
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/tail-2/proc-ksyms b/tests/tail-2/proc-ksyms
new file mode 100755
index 0000000..ba9fccd
--- /dev/null
+++ b/tests/tail-2/proc-ksyms
@@ -0,0 +1,38 @@
+#!/bin/sh
+# Prior to textutils-2.0.17, `tail /proc/ksyms' would segfault on Linux.
+
+# Copyright (C) 2001, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ tail --version
+fi
+
+pwd=`pwd`
+tmp=proc-ksyms.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+fail=0
+
+ksyms=/proc/ksyms
+if test -r $ksyms; then
+ tail $ksyms > /dev/null || fail=1
+fi
+
+(exit $fail); exit $fail
diff --git a/tests/tail-2/start-middle b/tests/tail-2/start-middle
new file mode 100755
index 0000000..92a939a
--- /dev/null
+++ b/tests/tail-2/start-middle
@@ -0,0 +1,53 @@
+#!/bin/sh
+# Verify that tail works even when it's reading from a file
+# that is not at its beginning. Based on a report from John Roll.
+
+# Copyright (C) 2001, 2002, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ tail --version
+fi
+
+pwd=`pwd`
+tmp=tail-mid.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+(echo 1; echo 2) > k || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+sh -c 'read x; tail' < k > out || fail=1
+cat <<EOF > exp
+2
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/tail-2/tail-n0f b/tests/tail-2/tail-n0f
new file mode 100755
index 0000000..298fca4
--- /dev/null
+++ b/tests/tail-2/tail-n0f
@@ -0,0 +1,76 @@
+#!/bin/sh
+# Make sure that `tail -n0 -f' and `tail -c0 -f' sleep
+# rather than doing what amounted to a busy-wait.
+
+# Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+
+# This bug was fixed for 5.0.91
+# It skips the test if your system lacks a /proc/$pid/status
+# file, or if its contents don't look right.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ tail --version
+fi
+
+sleep 2 &
+pid=$!
+sleep .5
+grep '^State:[ ]*[S]' /proc/$pid/status > /dev/null 2>&1 || \
+ {
+ echo "$0:/proc/$pid/status: missing or 'different': skipping this test" 1>&2
+ (exit 77); exit 77
+ }
+kill $pid
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+touch empty || framework_failure=1
+echo anything > nonempty || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+for file in empty nonempty; do
+ for c_or_n in c n; do
+ tail --sleep=4 -${c_or_n} 0 -f $file &
+ pid=$!
+ sleep .5
+ set _ `sed -n '/^State:[ ]*\([^ ]\)/s//\1/p' /proc/$pid/status`
+ shift # Remove the leading `_'.
+ state=$1
+ case $state in
+ S*) ;;
+ *) echo $0: process in unexpected state: $state 1>&2; fail=1 ;;
+ esac
+ kill $pid
+ done
+done
+
+(exit $fail); exit $fail
diff --git a/tests/tail/Makefile.am b/tests/tail/Makefile.am
new file mode 100644
index 0000000..f969cdf
--- /dev/null
+++ b/tests/tail/Makefile.am
@@ -0,0 +1,78 @@
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+##test-files-begin
+x = tail
+explicit =
+maint_gen = obs-plus-c1.I obs-plus-c1.X obs-plus-c2.I obs-plus-c2.X obs-c3.I \
+obs-c3.X obs-c4.I obs-c4.X obs-c5.I obs-c5.X obs-l1.I obs-l1.X obs-l2.I \
+obs-l2.X obs-l3.I obs-l3.X obs-plus-l4.I obs-plus-l4.X obs-plus-l5.I \
+obs-plus-l5.X obs-1.I obs-1.X obs-2.I obs-2.X obs-3.I obs-3.X obs-plus-4.I \
+obs-plus-4.X obs-plus-5.I obs-plus-5.X obs-plus-x1.I obs-plus-x1.X \
+obs-plus-x2.I obs-plus-x2.X obs-l.I obs-l.X obs-b.I obs-b.X err-1.I err-1.X \
+err-2.I err-2.X err-3.I err-3.X err-4.I err-4.X err-5.I err-5.X err-6.I \
+err-6.X minus-1.I minus-1.X minus-2.I minus-2.X c-2.I c-2.X c-2-minus.I \
+c-2-minus.X c2.I c2.X c2-minus.I c2-minus.X n-1.I n-1.X n-2.I n-2.X n-3.I \
+n-3.X n-4.I n-4.X n-4a.I n-4a.X n-5.I n-5.X n-5a.I n-5a.X n-5b.I n-5b.X \
+f-pipe-1.I f-pipe-1.X
+run_gen = obs-plus-c1.O obs-plus-c1.E obs-plus-c2.O obs-plus-c2.E obs-c3.O \
+obs-c3.E obs-c4.O obs-c4.E obs-c5.O obs-c5.E obs-l1.O obs-l1.E obs-l2.O \
+obs-l2.E obs-l3.O obs-l3.E obs-plus-l4.O obs-plus-l4.E obs-plus-l5.O \
+obs-plus-l5.E obs-1.O obs-1.E obs-2.O obs-2.E obs-3.O obs-3.E obs-plus-4.O \
+obs-plus-4.E obs-plus-5.O obs-plus-5.E obs-plus-x1.O obs-plus-x1.E \
+obs-plus-x2.O obs-plus-x2.E obs-l.O obs-l.E obs-b.O obs-b.E err-1.O err-1.E \
+err-2.O err-2.E err-3.O err-3.E err-4.O err-4.E err-5.O err-5.E err-6.O \
+err-6.E minus-1.O minus-1.E minus-2.O minus-2.E c-2.O c-2.E c-2-minus.O \
+c-2-minus.E c2.O c2.E c2-minus.O c2-minus.E n-1.O n-1.E n-2.O n-2.E n-3.O \
+n-3.E n-4.O n-4.E n-4a.O n-4a.E n-5.O n-5.E n-5a.O n-5a.E n-5b.O n-5b.E \
+f-pipe-1.O f-pipe-1.E
+##test-files-end
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+
+TESTS = $x-tests
+
+mk_script = $(srcdir)/../mk-script
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
diff --git a/tests/tail/Makefile.in b/tests/tail/Makefile.in
new file mode 100644
index 0000000..2ac0eae
--- /dev/null
+++ b/tests/tail/Makefile.in
@@ -0,0 +1,788 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/tail
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SCRIPTS = $(noinst_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+x = tail
+explicit =
+maint_gen = obs-plus-c1.I obs-plus-c1.X obs-plus-c2.I obs-plus-c2.X obs-c3.I \
+obs-c3.X obs-c4.I obs-c4.X obs-c5.I obs-c5.X obs-l1.I obs-l1.X obs-l2.I \
+obs-l2.X obs-l3.I obs-l3.X obs-plus-l4.I obs-plus-l4.X obs-plus-l5.I \
+obs-plus-l5.X obs-1.I obs-1.X obs-2.I obs-2.X obs-3.I obs-3.X obs-plus-4.I \
+obs-plus-4.X obs-plus-5.I obs-plus-5.X obs-plus-x1.I obs-plus-x1.X \
+obs-plus-x2.I obs-plus-x2.X obs-l.I obs-l.X obs-b.I obs-b.X err-1.I err-1.X \
+err-2.I err-2.X err-3.I err-3.X err-4.I err-4.X err-5.I err-5.X err-6.I \
+err-6.X minus-1.I minus-1.X minus-2.I minus-2.X c-2.I c-2.X c-2-minus.I \
+c-2-minus.X c2.I c2.X c2-minus.I c2-minus.X n-1.I n-1.X n-2.I n-2.X n-3.I \
+n-3.X n-4.I n-4.X n-4a.I n-4a.X n-5.I n-5.X n-5a.I n-5a.X n-5b.I n-5b.X \
+f-pipe-1.I f-pipe-1.X
+
+run_gen = obs-plus-c1.O obs-plus-c1.E obs-plus-c2.O obs-plus-c2.E obs-c3.O \
+obs-c3.E obs-c4.O obs-c4.E obs-c5.O obs-c5.E obs-l1.O obs-l1.E obs-l2.O \
+obs-l2.E obs-l3.O obs-l3.E obs-plus-l4.O obs-plus-l4.E obs-plus-l5.O \
+obs-plus-l5.E obs-1.O obs-1.E obs-2.O obs-2.E obs-3.O obs-3.E obs-plus-4.O \
+obs-plus-4.E obs-plus-5.O obs-plus-5.E obs-plus-x1.O obs-plus-x1.E \
+obs-plus-x2.O obs-plus-x2.E obs-l.O obs-l.E obs-b.O obs-b.E err-1.O err-1.E \
+err-2.O err-2.E err-3.O err-3.E err-4.O err-4.E err-5.O err-5.E err-6.O \
+err-6.E minus-1.O minus-1.E minus-2.O minus-2.E c-2.O c-2.E c-2-minus.O \
+c-2-minus.E c2.O c2.E c2-minus.O c2-minus.E n-1.O n-1.E n-2.O n-2.E n-3.O \
+n-3.E n-4.O n-4.E n-4a.O n-4a.E n-5.O n-5.E n-5a.O n-5a.E n-5b.O n-5b.E \
+f-pipe-1.O f-pipe-1.E
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+TESTS = $x-tests
+mk_script = $(srcdir)/../mk-script
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/tail/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/tail/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(SCRIPTS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/tail/Test.pm b/tests/tail/Test.pm
new file mode 100755
index 0000000..056f3ae
--- /dev/null
+++ b/tests/tail/Test.pm
@@ -0,0 +1,144 @@
+# Test "tail".
+
+# Copyright (C) 1997, 1998, 2002, 2004, 2005, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+package Test;
+require 5.002;
+use strict;
+
+my @tv = (
+# test name, options, input, expected output, expected return code
+#
+['obs-plus-c1', '+2c', 'abcd', 'bcd', 0],
+['obs-plus-c2', '+8c', 'abcd', '', 0],
+['obs-c3', '-1c', 'abcd', 'd', 0],
+['obs-c4', '-9c', 'abcd', 'abcd', 0],
+['obs-c5', '-12c', 'x' . ('y' x 12) . 'z', ('y' x 11) . 'z', 0],
+
+
+['obs-l1', '-1l', 'x', 'x', 0],
+['obs-l2', '-1l', "x\ny\n", "y\n", 0],
+['obs-l3', '-1l', "x\ny", "y", 0],
+['obs-plus-l4', '+1l', "x\ny\n", "x\ny\n", 0],
+['obs-plus-l5', '+2l', "x\ny\n", "y\n", 0],
+
+# Same as -l tests, but without the `l'.
+['obs-1', '-1', 'x', 'x', 0],
+['obs-2', '-1', "x\ny\n", "y\n", 0],
+['obs-3', '-1', "x\ny", "y", 0],
+['obs-plus-4', '+1', "x\ny\n", "x\ny\n", 0],
+['obs-plus-5', '+2', "x\ny\n", "y\n", 0],
+
+# This is equivalent to +10c
+['obs-plus-x1', '+c', 'x' . ('y' x 10) . 'z', 'yyz', 0],
+# This is equivalent to +10l
+['obs-plus-x2', '+l', "x\n" . ("y\n" x 10) . 'z', "y\ny\nz", 0],
+# With no number, this is like -10l
+['obs-l', '-l', "x\n" . ("y\n" x 10) . 'z', ("y\n" x 9) . 'z', 0],
+
+['obs-b', '-b', "x\n" x (512 * 10 / 2 + 1), "x\n" x (512 * 10 / 2), 0],
+
+# This should get
+# `tail: cannot open `+cl' for reading: No such file or directory'
+['err-1', '+cl', '', '', 1],
+
+# This should get `tail: l: invalid number of bytes'
+['err-2', '-cl', '', '', 1],
+
+# This should get
+# `tail: cannot open `+2cz' for reading: No such file or directory'
+['err-3', '+2cz', '', '', 1],
+
+# This should get `tail: invalid option -- 2'
+['err-4', '-2cX', '', '', 1],
+
+# Since the number is larger than 2^64, this should provoke
+# the diagnostic: `tail: 99999999999999999999: invalid number of bytes'
+# on all systems... probably, for now, maybe.
+['err-5', '-c99999999999999999999', '', '', 1],
+['err-6', '-c', '', '', 1],
+
+# Same as -n 10
+['minus-1', '-', '', '', 0],
+['minus-2', '-', "x\n" . ("y\n" x 10) . 'z', ("y\n" x 9) . 'z', 0],
+
+['c-2', '-c 2', "abcd\n", "d\n", 0],
+['c-2-minus', '-c 2 --', "abcd\n", "d\n", 0],
+['c2', '-c2', "abcd\n", "d\n", 0],
+['c2-minus', '-c2 --', "abcd\n", "d\n", 0],
+
+['n-1', '-n 10', "x\n" . ("y\n" x 10) . 'z', ("y\n" x 9) . 'z', 0],
+['n-2', '-n -10', "x\n" . ("y\n" x 10) . 'z', ("y\n" x 9) . 'z', 0],
+['n-3', '-n +10', "x\n" . ("y\n" x 10) . 'z', "y\ny\nz", 0],
+
+# Accept +0 as synonym for +1.
+['n-4', '-n +0', "y\n" x 5, "y\n" x 5, 0],
+['n-4a', '-n +1', "y\n" x 5, "y\n" x 5, 0],
+
+# Note that -0 is *not* a synonym for -1.
+['n-5', '-n -0', "y\n" x 5, '', 0],
+['n-5a', '-n -1', "y\n" x 5, "y\n", 0],
+['n-5b', '-n 0', "y\n" x 5, '', 0],
+
+# With textutils-1.22, this failed.
+['f-pipe-1', '-f -n 1', "a\nb\n", "b\n", 0],
+);
+
+sub test_vector
+{
+ my $t;
+ foreach $t (@tv)
+ {
+ my ($test_name, $flags, $in, $exp, $ret) = @$t;
+
+ if ($test_name =~ /^(obs-plus-|minus-)/)
+ {
+ $Test::env{$test_name} = ['_POSIX2_VERSION=199209'];
+ }
+ if ($test_name =~ /^(err-6|c-2)$/)
+ {
+ $Test::env{$test_name} = ['_POSIX2_VERSION=200112'];
+ }
+ if ($test_name =~ /^f-pipe-/)
+ {
+ $Test::env{$test_name} = ['POSIXLY_CORRECT=1'];
+ }
+
+ # If you run the minus* tests with a FILE arg they'd hang.
+ # If you run the err-1 or err-3 tests with a FILE, they'd misinterpret
+ # the arg unless we are using the obsolete form.
+ if ($test_name =~ /^(minus|err-[13])/)
+ {
+ $Test::input_via{$test_name} = {REDIR => 0, PIPE => 0};
+ }
+ elsif ($test_name =~ /^f-/)
+ {
+ # Using redirection or a file would make this hang.
+ $Test::input_via{$test_name} = {PIPE => 0};
+ }
+ else
+ {
+ $Test::input_via{$test_name} = {REDIR => 0, FILE => 0, PIPE => 0}
+ }
+ }
+
+ return @tv;
+}
+
+1;
diff --git a/tests/tail/c-2-minus.I b/tests/tail/c-2-minus.I
new file mode 100644
index 0000000..acbe86c
--- /dev/null
+++ b/tests/tail/c-2-minus.I
@@ -0,0 +1 @@
+abcd
diff --git a/tests/tail/c-2-minus.X b/tests/tail/c-2-minus.X
new file mode 100644
index 0000000..4bcfe98
--- /dev/null
+++ b/tests/tail/c-2-minus.X
@@ -0,0 +1 @@
+d
diff --git a/tests/tail/c-2.I b/tests/tail/c-2.I
new file mode 100644
index 0000000..acbe86c
--- /dev/null
+++ b/tests/tail/c-2.I
@@ -0,0 +1 @@
+abcd
diff --git a/tests/tail/c-2.X b/tests/tail/c-2.X
new file mode 100644
index 0000000..4bcfe98
--- /dev/null
+++ b/tests/tail/c-2.X
@@ -0,0 +1 @@
+d
diff --git a/tests/tail/c2-minus.I b/tests/tail/c2-minus.I
new file mode 100644
index 0000000..acbe86c
--- /dev/null
+++ b/tests/tail/c2-minus.I
@@ -0,0 +1 @@
+abcd
diff --git a/tests/tail/c2-minus.X b/tests/tail/c2-minus.X
new file mode 100644
index 0000000..4bcfe98
--- /dev/null
+++ b/tests/tail/c2-minus.X
@@ -0,0 +1 @@
+d
diff --git a/tests/tail/c2.I b/tests/tail/c2.I
new file mode 100644
index 0000000..acbe86c
--- /dev/null
+++ b/tests/tail/c2.I
@@ -0,0 +1 @@
+abcd
diff --git a/tests/tail/c2.X b/tests/tail/c2.X
new file mode 100644
index 0000000..4bcfe98
--- /dev/null
+++ b/tests/tail/c2.X
@@ -0,0 +1 @@
+d
diff --git a/tests/tail/err-1.I b/tests/tail/err-1.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tail/err-1.I
diff --git a/tests/tail/err-1.X b/tests/tail/err-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tail/err-1.X
diff --git a/tests/tail/err-2.I b/tests/tail/err-2.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tail/err-2.I
diff --git a/tests/tail/err-2.X b/tests/tail/err-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tail/err-2.X
diff --git a/tests/tail/err-3.I b/tests/tail/err-3.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tail/err-3.I
diff --git a/tests/tail/err-3.X b/tests/tail/err-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tail/err-3.X
diff --git a/tests/tail/err-4.I b/tests/tail/err-4.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tail/err-4.I
diff --git a/tests/tail/err-4.X b/tests/tail/err-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tail/err-4.X
diff --git a/tests/tail/err-5.I b/tests/tail/err-5.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tail/err-5.I
diff --git a/tests/tail/err-5.X b/tests/tail/err-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tail/err-5.X
diff --git a/tests/tail/err-6.I b/tests/tail/err-6.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tail/err-6.I
diff --git a/tests/tail/err-6.X b/tests/tail/err-6.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tail/err-6.X
diff --git a/tests/tail/f-pipe-1.I b/tests/tail/f-pipe-1.I
new file mode 100644
index 0000000..422c2b7
--- /dev/null
+++ b/tests/tail/f-pipe-1.I
@@ -0,0 +1,2 @@
+a
+b
diff --git a/tests/tail/f-pipe-1.X b/tests/tail/f-pipe-1.X
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/tests/tail/f-pipe-1.X
@@ -0,0 +1 @@
+b
diff --git a/tests/tail/minus-1.I b/tests/tail/minus-1.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tail/minus-1.I
diff --git a/tests/tail/minus-1.X b/tests/tail/minus-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tail/minus-1.X
diff --git a/tests/tail/minus-2.I b/tests/tail/minus-2.I
new file mode 100644
index 0000000..421ea50
--- /dev/null
+++ b/tests/tail/minus-2.I
@@ -0,0 +1,12 @@
+x
+y
+y
+y
+y
+y
+y
+y
+y
+y
+y
+z \ No newline at end of file
diff --git a/tests/tail/minus-2.X b/tests/tail/minus-2.X
new file mode 100644
index 0000000..3c66ff9
--- /dev/null
+++ b/tests/tail/minus-2.X
@@ -0,0 +1,10 @@
+y
+y
+y
+y
+y
+y
+y
+y
+y
+z \ No newline at end of file
diff --git a/tests/tail/n-1.I b/tests/tail/n-1.I
new file mode 100644
index 0000000..421ea50
--- /dev/null
+++ b/tests/tail/n-1.I
@@ -0,0 +1,12 @@
+x
+y
+y
+y
+y
+y
+y
+y
+y
+y
+y
+z \ No newline at end of file
diff --git a/tests/tail/n-1.X b/tests/tail/n-1.X
new file mode 100644
index 0000000..3c66ff9
--- /dev/null
+++ b/tests/tail/n-1.X
@@ -0,0 +1,10 @@
+y
+y
+y
+y
+y
+y
+y
+y
+y
+z \ No newline at end of file
diff --git a/tests/tail/n-2.I b/tests/tail/n-2.I
new file mode 100644
index 0000000..421ea50
--- /dev/null
+++ b/tests/tail/n-2.I
@@ -0,0 +1,12 @@
+x
+y
+y
+y
+y
+y
+y
+y
+y
+y
+y
+z \ No newline at end of file
diff --git a/tests/tail/n-2.X b/tests/tail/n-2.X
new file mode 100644
index 0000000..3c66ff9
--- /dev/null
+++ b/tests/tail/n-2.X
@@ -0,0 +1,10 @@
+y
+y
+y
+y
+y
+y
+y
+y
+y
+z \ No newline at end of file
diff --git a/tests/tail/n-3.I b/tests/tail/n-3.I
new file mode 100644
index 0000000..421ea50
--- /dev/null
+++ b/tests/tail/n-3.I
@@ -0,0 +1,12 @@
+x
+y
+y
+y
+y
+y
+y
+y
+y
+y
+y
+z \ No newline at end of file
diff --git a/tests/tail/n-3.X b/tests/tail/n-3.X
new file mode 100644
index 0000000..38037e0
--- /dev/null
+++ b/tests/tail/n-3.X
@@ -0,0 +1,3 @@
+y
+y
+z \ No newline at end of file
diff --git a/tests/tail/n-4.I b/tests/tail/n-4.I
new file mode 100644
index 0000000..57dc54c
--- /dev/null
+++ b/tests/tail/n-4.I
@@ -0,0 +1,5 @@
+y
+y
+y
+y
+y
diff --git a/tests/tail/n-4.X b/tests/tail/n-4.X
new file mode 100644
index 0000000..57dc54c
--- /dev/null
+++ b/tests/tail/n-4.X
@@ -0,0 +1,5 @@
+y
+y
+y
+y
+y
diff --git a/tests/tail/n-4a.I b/tests/tail/n-4a.I
new file mode 100644
index 0000000..57dc54c
--- /dev/null
+++ b/tests/tail/n-4a.I
@@ -0,0 +1,5 @@
+y
+y
+y
+y
+y
diff --git a/tests/tail/n-4a.X b/tests/tail/n-4a.X
new file mode 100644
index 0000000..57dc54c
--- /dev/null
+++ b/tests/tail/n-4a.X
@@ -0,0 +1,5 @@
+y
+y
+y
+y
+y
diff --git a/tests/tail/n-5.I b/tests/tail/n-5.I
new file mode 100644
index 0000000..57dc54c
--- /dev/null
+++ b/tests/tail/n-5.I
@@ -0,0 +1,5 @@
+y
+y
+y
+y
+y
diff --git a/tests/tail/n-5.X b/tests/tail/n-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tail/n-5.X
diff --git a/tests/tail/n-5a.I b/tests/tail/n-5a.I
new file mode 100644
index 0000000..57dc54c
--- /dev/null
+++ b/tests/tail/n-5a.I
@@ -0,0 +1,5 @@
+y
+y
+y
+y
+y
diff --git a/tests/tail/n-5a.X b/tests/tail/n-5a.X
new file mode 100644
index 0000000..975fbec
--- /dev/null
+++ b/tests/tail/n-5a.X
@@ -0,0 +1 @@
+y
diff --git a/tests/tail/n-5b.I b/tests/tail/n-5b.I
new file mode 100644
index 0000000..57dc54c
--- /dev/null
+++ b/tests/tail/n-5b.I
@@ -0,0 +1,5 @@
+y
+y
+y
+y
+y
diff --git a/tests/tail/n-5b.X b/tests/tail/n-5b.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tail/n-5b.X
diff --git a/tests/tail/obs-1.I b/tests/tail/obs-1.I
new file mode 100644
index 0000000..c1b0730
--- /dev/null
+++ b/tests/tail/obs-1.I
@@ -0,0 +1 @@
+x \ No newline at end of file
diff --git a/tests/tail/obs-1.X b/tests/tail/obs-1.X
new file mode 100644
index 0000000..c1b0730
--- /dev/null
+++ b/tests/tail/obs-1.X
@@ -0,0 +1 @@
+x \ No newline at end of file
diff --git a/tests/tail/obs-2.I b/tests/tail/obs-2.I
new file mode 100644
index 0000000..b77b4eb
--- /dev/null
+++ b/tests/tail/obs-2.I
@@ -0,0 +1,2 @@
+x
+y
diff --git a/tests/tail/obs-2.X b/tests/tail/obs-2.X
new file mode 100644
index 0000000..975fbec
--- /dev/null
+++ b/tests/tail/obs-2.X
@@ -0,0 +1 @@
+y
diff --git a/tests/tail/obs-3.I b/tests/tail/obs-3.I
new file mode 100644
index 0000000..1b32298
--- /dev/null
+++ b/tests/tail/obs-3.I
@@ -0,0 +1,2 @@
+x
+y \ No newline at end of file
diff --git a/tests/tail/obs-3.X b/tests/tail/obs-3.X
new file mode 100644
index 0000000..e25f181
--- /dev/null
+++ b/tests/tail/obs-3.X
@@ -0,0 +1 @@
+y \ No newline at end of file
diff --git a/tests/tail/obs-b.I b/tests/tail/obs-b.I
new file mode 100644
index 0000000..c50e567
--- /dev/null
+++ b/tests/tail/obs-b.I
@@ -0,0 +1,2561 @@
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
diff --git a/tests/tail/obs-b.X b/tests/tail/obs-b.X
new file mode 100644
index 0000000..33c63e6
--- /dev/null
+++ b/tests/tail/obs-b.X
@@ -0,0 +1,2560 @@
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
+x
diff --git a/tests/tail/obs-c3.I b/tests/tail/obs-c3.I
new file mode 100644
index 0000000..85df507
--- /dev/null
+++ b/tests/tail/obs-c3.I
@@ -0,0 +1 @@
+abcd \ No newline at end of file
diff --git a/tests/tail/obs-c3.X b/tests/tail/obs-c3.X
new file mode 100644
index 0000000..c59d9b6
--- /dev/null
+++ b/tests/tail/obs-c3.X
@@ -0,0 +1 @@
+d \ No newline at end of file
diff --git a/tests/tail/obs-c4.I b/tests/tail/obs-c4.I
new file mode 100644
index 0000000..85df507
--- /dev/null
+++ b/tests/tail/obs-c4.I
@@ -0,0 +1 @@
+abcd \ No newline at end of file
diff --git a/tests/tail/obs-c4.X b/tests/tail/obs-c4.X
new file mode 100644
index 0000000..85df507
--- /dev/null
+++ b/tests/tail/obs-c4.X
@@ -0,0 +1 @@
+abcd \ No newline at end of file
diff --git a/tests/tail/obs-c5.I b/tests/tail/obs-c5.I
new file mode 100644
index 0000000..f1124ac
--- /dev/null
+++ b/tests/tail/obs-c5.I
@@ -0,0 +1 @@
+xyyyyyyyyyyyyz \ No newline at end of file
diff --git a/tests/tail/obs-c5.X b/tests/tail/obs-c5.X
new file mode 100644
index 0000000..5033da4
--- /dev/null
+++ b/tests/tail/obs-c5.X
@@ -0,0 +1 @@
+yyyyyyyyyyyz \ No newline at end of file
diff --git a/tests/tail/obs-l.I b/tests/tail/obs-l.I
new file mode 100644
index 0000000..421ea50
--- /dev/null
+++ b/tests/tail/obs-l.I
@@ -0,0 +1,12 @@
+x
+y
+y
+y
+y
+y
+y
+y
+y
+y
+y
+z \ No newline at end of file
diff --git a/tests/tail/obs-l.X b/tests/tail/obs-l.X
new file mode 100644
index 0000000..3c66ff9
--- /dev/null
+++ b/tests/tail/obs-l.X
@@ -0,0 +1,10 @@
+y
+y
+y
+y
+y
+y
+y
+y
+y
+z \ No newline at end of file
diff --git a/tests/tail/obs-l1.I b/tests/tail/obs-l1.I
new file mode 100644
index 0000000..c1b0730
--- /dev/null
+++ b/tests/tail/obs-l1.I
@@ -0,0 +1 @@
+x \ No newline at end of file
diff --git a/tests/tail/obs-l1.X b/tests/tail/obs-l1.X
new file mode 100644
index 0000000..c1b0730
--- /dev/null
+++ b/tests/tail/obs-l1.X
@@ -0,0 +1 @@
+x \ No newline at end of file
diff --git a/tests/tail/obs-l2.I b/tests/tail/obs-l2.I
new file mode 100644
index 0000000..b77b4eb
--- /dev/null
+++ b/tests/tail/obs-l2.I
@@ -0,0 +1,2 @@
+x
+y
diff --git a/tests/tail/obs-l2.X b/tests/tail/obs-l2.X
new file mode 100644
index 0000000..975fbec
--- /dev/null
+++ b/tests/tail/obs-l2.X
@@ -0,0 +1 @@
+y
diff --git a/tests/tail/obs-l3.I b/tests/tail/obs-l3.I
new file mode 100644
index 0000000..1b32298
--- /dev/null
+++ b/tests/tail/obs-l3.I
@@ -0,0 +1,2 @@
+x
+y \ No newline at end of file
diff --git a/tests/tail/obs-l3.X b/tests/tail/obs-l3.X
new file mode 100644
index 0000000..e25f181
--- /dev/null
+++ b/tests/tail/obs-l3.X
@@ -0,0 +1 @@
+y \ No newline at end of file
diff --git a/tests/tail/obs-plus-4.I b/tests/tail/obs-plus-4.I
new file mode 100644
index 0000000..b77b4eb
--- /dev/null
+++ b/tests/tail/obs-plus-4.I
@@ -0,0 +1,2 @@
+x
+y
diff --git a/tests/tail/obs-plus-4.X b/tests/tail/obs-plus-4.X
new file mode 100644
index 0000000..b77b4eb
--- /dev/null
+++ b/tests/tail/obs-plus-4.X
@@ -0,0 +1,2 @@
+x
+y
diff --git a/tests/tail/obs-plus-5.I b/tests/tail/obs-plus-5.I
new file mode 100644
index 0000000..b77b4eb
--- /dev/null
+++ b/tests/tail/obs-plus-5.I
@@ -0,0 +1,2 @@
+x
+y
diff --git a/tests/tail/obs-plus-5.X b/tests/tail/obs-plus-5.X
new file mode 100644
index 0000000..975fbec
--- /dev/null
+++ b/tests/tail/obs-plus-5.X
@@ -0,0 +1 @@
+y
diff --git a/tests/tail/obs-plus-c1.I b/tests/tail/obs-plus-c1.I
new file mode 100644
index 0000000..85df507
--- /dev/null
+++ b/tests/tail/obs-plus-c1.I
@@ -0,0 +1 @@
+abcd \ No newline at end of file
diff --git a/tests/tail/obs-plus-c1.X b/tests/tail/obs-plus-c1.X
new file mode 100644
index 0000000..c58cd57
--- /dev/null
+++ b/tests/tail/obs-plus-c1.X
@@ -0,0 +1 @@
+bcd \ No newline at end of file
diff --git a/tests/tail/obs-plus-c2.I b/tests/tail/obs-plus-c2.I
new file mode 100644
index 0000000..85df507
--- /dev/null
+++ b/tests/tail/obs-plus-c2.I
@@ -0,0 +1 @@
+abcd \ No newline at end of file
diff --git a/tests/tail/obs-plus-c2.X b/tests/tail/obs-plus-c2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tail/obs-plus-c2.X
diff --git a/tests/tail/obs-plus-l4.I b/tests/tail/obs-plus-l4.I
new file mode 100644
index 0000000..b77b4eb
--- /dev/null
+++ b/tests/tail/obs-plus-l4.I
@@ -0,0 +1,2 @@
+x
+y
diff --git a/tests/tail/obs-plus-l4.X b/tests/tail/obs-plus-l4.X
new file mode 100644
index 0000000..b77b4eb
--- /dev/null
+++ b/tests/tail/obs-plus-l4.X
@@ -0,0 +1,2 @@
+x
+y
diff --git a/tests/tail/obs-plus-l5.I b/tests/tail/obs-plus-l5.I
new file mode 100644
index 0000000..b77b4eb
--- /dev/null
+++ b/tests/tail/obs-plus-l5.I
@@ -0,0 +1,2 @@
+x
+y
diff --git a/tests/tail/obs-plus-l5.X b/tests/tail/obs-plus-l5.X
new file mode 100644
index 0000000..975fbec
--- /dev/null
+++ b/tests/tail/obs-plus-l5.X
@@ -0,0 +1 @@
+y
diff --git a/tests/tail/obs-plus-x1.I b/tests/tail/obs-plus-x1.I
new file mode 100644
index 0000000..65626d1
--- /dev/null
+++ b/tests/tail/obs-plus-x1.I
@@ -0,0 +1 @@
+xyyyyyyyyyyz \ No newline at end of file
diff --git a/tests/tail/obs-plus-x1.X b/tests/tail/obs-plus-x1.X
new file mode 100644
index 0000000..0029b3a
--- /dev/null
+++ b/tests/tail/obs-plus-x1.X
@@ -0,0 +1 @@
+yyz \ No newline at end of file
diff --git a/tests/tail/obs-plus-x2.I b/tests/tail/obs-plus-x2.I
new file mode 100644
index 0000000..421ea50
--- /dev/null
+++ b/tests/tail/obs-plus-x2.I
@@ -0,0 +1,12 @@
+x
+y
+y
+y
+y
+y
+y
+y
+y
+y
+y
+z \ No newline at end of file
diff --git a/tests/tail/obs-plus-x2.X b/tests/tail/obs-plus-x2.X
new file mode 100644
index 0000000..38037e0
--- /dev/null
+++ b/tests/tail/obs-plus-x2.X
@@ -0,0 +1,3 @@
+y
+y
+z \ No newline at end of file
diff --git a/tests/tail/tail-tests b/tests/tail/tail-tests
new file mode 100755
index 0000000..95bb4f4
--- /dev/null
+++ b/tests/tail/tail-tests
@@ -0,0 +1,2079 @@
+#! /bin/sh
+# This script was generated automatically by mk-script.
+case $# in
+ 0) xx='tail';;
+ *) xx="$1";;
+esac
+test "$VERBOSE" && echo=echo || echo=:
+$echo testing program: $xx
+errors=0
+test "$srcdir" || srcdir=.
+test "$VERBOSE" && $xx --version 2> /dev/null
+
+# Make sure we get English translations.
+LANGUAGE=C
+export LANGUAGE
+LC_ALL=C
+export LC_ALL
+LANG=C
+export LANG
+
+_POSIX2_VERSION=199209 $xx +2c $srcdir/obs-plus-c1.I > obs-plus-c1.O 2> obs-plus-c1.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-c1(_POSIX2_VERSION=199209:F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-c1.O $srcdir/obs-plus-c1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-c1(_POSIX2_VERSION=199209:F)"; fi;;
+ 1) $echo "Test obs-plus-c1(_POSIX2_VERSION=199209:F) failed: files obs-plus-c1.O and $srcdir/obs-plus-c1.X differ" 1>&2
+ (diff -c obs-plus-c1.O $srcdir/obs-plus-c1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-c1(_POSIX2_VERSION=199209:F) may have failed." 1>&2
+ $echo The command "cmp obs-plus-c1.O $srcdir/obs-plus-c1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-c1.E || rm -f obs-plus-c1.E
+cat $srcdir/obs-plus-c1.I | _POSIX2_VERSION=199209 $xx +2c > obs-plus-c1.O 2> obs-plus-c1.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-c1(_POSIX2_VERSION=199209:|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-c1.O $srcdir/obs-plus-c1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-c1(_POSIX2_VERSION=199209:|)"; fi;;
+ 1) $echo "Test obs-plus-c1(_POSIX2_VERSION=199209:|) failed: files obs-plus-c1.O and $srcdir/obs-plus-c1.X differ" 1>&2
+ (diff -c obs-plus-c1.O $srcdir/obs-plus-c1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-c1(_POSIX2_VERSION=199209:|) may have failed." 1>&2
+ $echo The command "cmp obs-plus-c1.O $srcdir/obs-plus-c1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-c1.E || rm -f obs-plus-c1.E
+_POSIX2_VERSION=199209 $xx +2c < $srcdir/obs-plus-c1.I > obs-plus-c1.O 2> obs-plus-c1.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-c1(_POSIX2_VERSION=199209:<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-c1.O $srcdir/obs-plus-c1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-c1(_POSIX2_VERSION=199209:<)"; fi;;
+ 1) $echo "Test obs-plus-c1(_POSIX2_VERSION=199209:<) failed: files obs-plus-c1.O and $srcdir/obs-plus-c1.X differ" 1>&2
+ (diff -c obs-plus-c1.O $srcdir/obs-plus-c1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-c1(_POSIX2_VERSION=199209:<) may have failed." 1>&2
+ $echo The command "cmp obs-plus-c1.O $srcdir/obs-plus-c1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-c1.E || rm -f obs-plus-c1.E
+_POSIX2_VERSION=199209 $xx +8c $srcdir/obs-plus-c2.I > obs-plus-c2.O 2> obs-plus-c2.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-c2(_POSIX2_VERSION=199209:F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-c2.O $srcdir/obs-plus-c2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-c2(_POSIX2_VERSION=199209:F)"; fi;;
+ 1) $echo "Test obs-plus-c2(_POSIX2_VERSION=199209:F) failed: files obs-plus-c2.O and $srcdir/obs-plus-c2.X differ" 1>&2
+ (diff -c obs-plus-c2.O $srcdir/obs-plus-c2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-c2(_POSIX2_VERSION=199209:F) may have failed." 1>&2
+ $echo The command "cmp obs-plus-c2.O $srcdir/obs-plus-c2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-c2.E || rm -f obs-plus-c2.E
+cat $srcdir/obs-plus-c2.I | _POSIX2_VERSION=199209 $xx +8c > obs-plus-c2.O 2> obs-plus-c2.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-c2(_POSIX2_VERSION=199209:|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-c2.O $srcdir/obs-plus-c2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-c2(_POSIX2_VERSION=199209:|)"; fi;;
+ 1) $echo "Test obs-plus-c2(_POSIX2_VERSION=199209:|) failed: files obs-plus-c2.O and $srcdir/obs-plus-c2.X differ" 1>&2
+ (diff -c obs-plus-c2.O $srcdir/obs-plus-c2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-c2(_POSIX2_VERSION=199209:|) may have failed." 1>&2
+ $echo The command "cmp obs-plus-c2.O $srcdir/obs-plus-c2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-c2.E || rm -f obs-plus-c2.E
+_POSIX2_VERSION=199209 $xx +8c < $srcdir/obs-plus-c2.I > obs-plus-c2.O 2> obs-plus-c2.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-c2(_POSIX2_VERSION=199209:<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-c2.O $srcdir/obs-plus-c2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-c2(_POSIX2_VERSION=199209:<)"; fi;;
+ 1) $echo "Test obs-plus-c2(_POSIX2_VERSION=199209:<) failed: files obs-plus-c2.O and $srcdir/obs-plus-c2.X differ" 1>&2
+ (diff -c obs-plus-c2.O $srcdir/obs-plus-c2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-c2(_POSIX2_VERSION=199209:<) may have failed." 1>&2
+ $echo The command "cmp obs-plus-c2.O $srcdir/obs-plus-c2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-c2.E || rm -f obs-plus-c2.E
+$xx -1c $srcdir/obs-c3.I > obs-c3.O 2> obs-c3.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-c3(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-c3.O $srcdir/obs-c3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-c3(F)"; fi;;
+ 1) $echo "Test obs-c3(F) failed: files obs-c3.O and $srcdir/obs-c3.X differ" 1>&2
+ (diff -c obs-c3.O $srcdir/obs-c3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-c3(F) may have failed." 1>&2
+ $echo The command "cmp obs-c3.O $srcdir/obs-c3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-c3.E || rm -f obs-c3.E
+cat $srcdir/obs-c3.I | $xx -1c > obs-c3.O 2> obs-c3.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-c3(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-c3.O $srcdir/obs-c3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-c3(|)"; fi;;
+ 1) $echo "Test obs-c3(|) failed: files obs-c3.O and $srcdir/obs-c3.X differ" 1>&2
+ (diff -c obs-c3.O $srcdir/obs-c3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-c3(|) may have failed." 1>&2
+ $echo The command "cmp obs-c3.O $srcdir/obs-c3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-c3.E || rm -f obs-c3.E
+$xx -1c < $srcdir/obs-c3.I > obs-c3.O 2> obs-c3.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-c3(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-c3.O $srcdir/obs-c3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-c3(<)"; fi;;
+ 1) $echo "Test obs-c3(<) failed: files obs-c3.O and $srcdir/obs-c3.X differ" 1>&2
+ (diff -c obs-c3.O $srcdir/obs-c3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-c3(<) may have failed." 1>&2
+ $echo The command "cmp obs-c3.O $srcdir/obs-c3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-c3.E || rm -f obs-c3.E
+$xx -9c $srcdir/obs-c4.I > obs-c4.O 2> obs-c4.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-c4(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-c4.O $srcdir/obs-c4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-c4(F)"; fi;;
+ 1) $echo "Test obs-c4(F) failed: files obs-c4.O and $srcdir/obs-c4.X differ" 1>&2
+ (diff -c obs-c4.O $srcdir/obs-c4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-c4(F) may have failed." 1>&2
+ $echo The command "cmp obs-c4.O $srcdir/obs-c4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-c4.E || rm -f obs-c4.E
+cat $srcdir/obs-c4.I | $xx -9c > obs-c4.O 2> obs-c4.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-c4(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-c4.O $srcdir/obs-c4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-c4(|)"; fi;;
+ 1) $echo "Test obs-c4(|) failed: files obs-c4.O and $srcdir/obs-c4.X differ" 1>&2
+ (diff -c obs-c4.O $srcdir/obs-c4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-c4(|) may have failed." 1>&2
+ $echo The command "cmp obs-c4.O $srcdir/obs-c4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-c4.E || rm -f obs-c4.E
+$xx -9c < $srcdir/obs-c4.I > obs-c4.O 2> obs-c4.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-c4(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-c4.O $srcdir/obs-c4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-c4(<)"; fi;;
+ 1) $echo "Test obs-c4(<) failed: files obs-c4.O and $srcdir/obs-c4.X differ" 1>&2
+ (diff -c obs-c4.O $srcdir/obs-c4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-c4(<) may have failed." 1>&2
+ $echo The command "cmp obs-c4.O $srcdir/obs-c4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-c4.E || rm -f obs-c4.E
+$xx -12c $srcdir/obs-c5.I > obs-c5.O 2> obs-c5.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-c5(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-c5.O $srcdir/obs-c5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-c5(F)"; fi;;
+ 1) $echo "Test obs-c5(F) failed: files obs-c5.O and $srcdir/obs-c5.X differ" 1>&2
+ (diff -c obs-c5.O $srcdir/obs-c5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-c5(F) may have failed." 1>&2
+ $echo The command "cmp obs-c5.O $srcdir/obs-c5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-c5.E || rm -f obs-c5.E
+cat $srcdir/obs-c5.I | $xx -12c > obs-c5.O 2> obs-c5.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-c5(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-c5.O $srcdir/obs-c5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-c5(|)"; fi;;
+ 1) $echo "Test obs-c5(|) failed: files obs-c5.O and $srcdir/obs-c5.X differ" 1>&2
+ (diff -c obs-c5.O $srcdir/obs-c5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-c5(|) may have failed." 1>&2
+ $echo The command "cmp obs-c5.O $srcdir/obs-c5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-c5.E || rm -f obs-c5.E
+$xx -12c < $srcdir/obs-c5.I > obs-c5.O 2> obs-c5.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-c5(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-c5.O $srcdir/obs-c5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-c5(<)"; fi;;
+ 1) $echo "Test obs-c5(<) failed: files obs-c5.O and $srcdir/obs-c5.X differ" 1>&2
+ (diff -c obs-c5.O $srcdir/obs-c5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-c5(<) may have failed." 1>&2
+ $echo The command "cmp obs-c5.O $srcdir/obs-c5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-c5.E || rm -f obs-c5.E
+$xx -1l $srcdir/obs-l1.I > obs-l1.O 2> obs-l1.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-l1(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-l1.O $srcdir/obs-l1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-l1(F)"; fi;;
+ 1) $echo "Test obs-l1(F) failed: files obs-l1.O and $srcdir/obs-l1.X differ" 1>&2
+ (diff -c obs-l1.O $srcdir/obs-l1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-l1(F) may have failed." 1>&2
+ $echo The command "cmp obs-l1.O $srcdir/obs-l1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-l1.E || rm -f obs-l1.E
+cat $srcdir/obs-l1.I | $xx -1l > obs-l1.O 2> obs-l1.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-l1(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-l1.O $srcdir/obs-l1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-l1(|)"; fi;;
+ 1) $echo "Test obs-l1(|) failed: files obs-l1.O and $srcdir/obs-l1.X differ" 1>&2
+ (diff -c obs-l1.O $srcdir/obs-l1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-l1(|) may have failed." 1>&2
+ $echo The command "cmp obs-l1.O $srcdir/obs-l1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-l1.E || rm -f obs-l1.E
+$xx -1l < $srcdir/obs-l1.I > obs-l1.O 2> obs-l1.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-l1(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-l1.O $srcdir/obs-l1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-l1(<)"; fi;;
+ 1) $echo "Test obs-l1(<) failed: files obs-l1.O and $srcdir/obs-l1.X differ" 1>&2
+ (diff -c obs-l1.O $srcdir/obs-l1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-l1(<) may have failed." 1>&2
+ $echo The command "cmp obs-l1.O $srcdir/obs-l1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-l1.E || rm -f obs-l1.E
+$xx -1l $srcdir/obs-l2.I > obs-l2.O 2> obs-l2.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-l2(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-l2.O $srcdir/obs-l2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-l2(F)"; fi;;
+ 1) $echo "Test obs-l2(F) failed: files obs-l2.O and $srcdir/obs-l2.X differ" 1>&2
+ (diff -c obs-l2.O $srcdir/obs-l2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-l2(F) may have failed." 1>&2
+ $echo The command "cmp obs-l2.O $srcdir/obs-l2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-l2.E || rm -f obs-l2.E
+cat $srcdir/obs-l2.I | $xx -1l > obs-l2.O 2> obs-l2.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-l2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-l2.O $srcdir/obs-l2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-l2(|)"; fi;;
+ 1) $echo "Test obs-l2(|) failed: files obs-l2.O and $srcdir/obs-l2.X differ" 1>&2
+ (diff -c obs-l2.O $srcdir/obs-l2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-l2(|) may have failed." 1>&2
+ $echo The command "cmp obs-l2.O $srcdir/obs-l2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-l2.E || rm -f obs-l2.E
+$xx -1l < $srcdir/obs-l2.I > obs-l2.O 2> obs-l2.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-l2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-l2.O $srcdir/obs-l2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-l2(<)"; fi;;
+ 1) $echo "Test obs-l2(<) failed: files obs-l2.O and $srcdir/obs-l2.X differ" 1>&2
+ (diff -c obs-l2.O $srcdir/obs-l2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-l2(<) may have failed." 1>&2
+ $echo The command "cmp obs-l2.O $srcdir/obs-l2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-l2.E || rm -f obs-l2.E
+$xx -1l $srcdir/obs-l3.I > obs-l3.O 2> obs-l3.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-l3(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-l3.O $srcdir/obs-l3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-l3(F)"; fi;;
+ 1) $echo "Test obs-l3(F) failed: files obs-l3.O and $srcdir/obs-l3.X differ" 1>&2
+ (diff -c obs-l3.O $srcdir/obs-l3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-l3(F) may have failed." 1>&2
+ $echo The command "cmp obs-l3.O $srcdir/obs-l3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-l3.E || rm -f obs-l3.E
+cat $srcdir/obs-l3.I | $xx -1l > obs-l3.O 2> obs-l3.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-l3(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-l3.O $srcdir/obs-l3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-l3(|)"; fi;;
+ 1) $echo "Test obs-l3(|) failed: files obs-l3.O and $srcdir/obs-l3.X differ" 1>&2
+ (diff -c obs-l3.O $srcdir/obs-l3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-l3(|) may have failed." 1>&2
+ $echo The command "cmp obs-l3.O $srcdir/obs-l3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-l3.E || rm -f obs-l3.E
+$xx -1l < $srcdir/obs-l3.I > obs-l3.O 2> obs-l3.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-l3(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-l3.O $srcdir/obs-l3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-l3(<)"; fi;;
+ 1) $echo "Test obs-l3(<) failed: files obs-l3.O and $srcdir/obs-l3.X differ" 1>&2
+ (diff -c obs-l3.O $srcdir/obs-l3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-l3(<) may have failed." 1>&2
+ $echo The command "cmp obs-l3.O $srcdir/obs-l3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-l3.E || rm -f obs-l3.E
+_POSIX2_VERSION=199209 $xx +1l $srcdir/obs-plus-l4.I > obs-plus-l4.O 2> obs-plus-l4.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-l4(_POSIX2_VERSION=199209:F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-l4.O $srcdir/obs-plus-l4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-l4(_POSIX2_VERSION=199209:F)"; fi;;
+ 1) $echo "Test obs-plus-l4(_POSIX2_VERSION=199209:F) failed: files obs-plus-l4.O and $srcdir/obs-plus-l4.X differ" 1>&2
+ (diff -c obs-plus-l4.O $srcdir/obs-plus-l4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-l4(_POSIX2_VERSION=199209:F) may have failed." 1>&2
+ $echo The command "cmp obs-plus-l4.O $srcdir/obs-plus-l4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-l4.E || rm -f obs-plus-l4.E
+cat $srcdir/obs-plus-l4.I | _POSIX2_VERSION=199209 $xx +1l > obs-plus-l4.O 2> obs-plus-l4.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-l4(_POSIX2_VERSION=199209:|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-l4.O $srcdir/obs-plus-l4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-l4(_POSIX2_VERSION=199209:|)"; fi;;
+ 1) $echo "Test obs-plus-l4(_POSIX2_VERSION=199209:|) failed: files obs-plus-l4.O and $srcdir/obs-plus-l4.X differ" 1>&2
+ (diff -c obs-plus-l4.O $srcdir/obs-plus-l4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-l4(_POSIX2_VERSION=199209:|) may have failed." 1>&2
+ $echo The command "cmp obs-plus-l4.O $srcdir/obs-plus-l4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-l4.E || rm -f obs-plus-l4.E
+_POSIX2_VERSION=199209 $xx +1l < $srcdir/obs-plus-l4.I > obs-plus-l4.O 2> obs-plus-l4.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-l4(_POSIX2_VERSION=199209:<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-l4.O $srcdir/obs-plus-l4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-l4(_POSIX2_VERSION=199209:<)"; fi;;
+ 1) $echo "Test obs-plus-l4(_POSIX2_VERSION=199209:<) failed: files obs-plus-l4.O and $srcdir/obs-plus-l4.X differ" 1>&2
+ (diff -c obs-plus-l4.O $srcdir/obs-plus-l4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-l4(_POSIX2_VERSION=199209:<) may have failed." 1>&2
+ $echo The command "cmp obs-plus-l4.O $srcdir/obs-plus-l4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-l4.E || rm -f obs-plus-l4.E
+_POSIX2_VERSION=199209 $xx +2l $srcdir/obs-plus-l5.I > obs-plus-l5.O 2> obs-plus-l5.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-l5(_POSIX2_VERSION=199209:F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-l5.O $srcdir/obs-plus-l5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-l5(_POSIX2_VERSION=199209:F)"; fi;;
+ 1) $echo "Test obs-plus-l5(_POSIX2_VERSION=199209:F) failed: files obs-plus-l5.O and $srcdir/obs-plus-l5.X differ" 1>&2
+ (diff -c obs-plus-l5.O $srcdir/obs-plus-l5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-l5(_POSIX2_VERSION=199209:F) may have failed." 1>&2
+ $echo The command "cmp obs-plus-l5.O $srcdir/obs-plus-l5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-l5.E || rm -f obs-plus-l5.E
+cat $srcdir/obs-plus-l5.I | _POSIX2_VERSION=199209 $xx +2l > obs-plus-l5.O 2> obs-plus-l5.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-l5(_POSIX2_VERSION=199209:|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-l5.O $srcdir/obs-plus-l5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-l5(_POSIX2_VERSION=199209:|)"; fi;;
+ 1) $echo "Test obs-plus-l5(_POSIX2_VERSION=199209:|) failed: files obs-plus-l5.O and $srcdir/obs-plus-l5.X differ" 1>&2
+ (diff -c obs-plus-l5.O $srcdir/obs-plus-l5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-l5(_POSIX2_VERSION=199209:|) may have failed." 1>&2
+ $echo The command "cmp obs-plus-l5.O $srcdir/obs-plus-l5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-l5.E || rm -f obs-plus-l5.E
+_POSIX2_VERSION=199209 $xx +2l < $srcdir/obs-plus-l5.I > obs-plus-l5.O 2> obs-plus-l5.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-l5(_POSIX2_VERSION=199209:<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-l5.O $srcdir/obs-plus-l5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-l5(_POSIX2_VERSION=199209:<)"; fi;;
+ 1) $echo "Test obs-plus-l5(_POSIX2_VERSION=199209:<) failed: files obs-plus-l5.O and $srcdir/obs-plus-l5.X differ" 1>&2
+ (diff -c obs-plus-l5.O $srcdir/obs-plus-l5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-l5(_POSIX2_VERSION=199209:<) may have failed." 1>&2
+ $echo The command "cmp obs-plus-l5.O $srcdir/obs-plus-l5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-l5.E || rm -f obs-plus-l5.E
+$xx -1 $srcdir/obs-1.I > obs-1.O 2> obs-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-1(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-1.O $srcdir/obs-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-1(F)"; fi;;
+ 1) $echo "Test obs-1(F) failed: files obs-1.O and $srcdir/obs-1.X differ" 1>&2
+ (diff -c obs-1.O $srcdir/obs-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-1(F) may have failed." 1>&2
+ $echo The command "cmp obs-1.O $srcdir/obs-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-1.E || rm -f obs-1.E
+cat $srcdir/obs-1.I | $xx -1 > obs-1.O 2> obs-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-1(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-1.O $srcdir/obs-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-1(|)"; fi;;
+ 1) $echo "Test obs-1(|) failed: files obs-1.O and $srcdir/obs-1.X differ" 1>&2
+ (diff -c obs-1.O $srcdir/obs-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-1(|) may have failed." 1>&2
+ $echo The command "cmp obs-1.O $srcdir/obs-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-1.E || rm -f obs-1.E
+$xx -1 < $srcdir/obs-1.I > obs-1.O 2> obs-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-1(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-1.O $srcdir/obs-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-1(<)"; fi;;
+ 1) $echo "Test obs-1(<) failed: files obs-1.O and $srcdir/obs-1.X differ" 1>&2
+ (diff -c obs-1.O $srcdir/obs-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-1(<) may have failed." 1>&2
+ $echo The command "cmp obs-1.O $srcdir/obs-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-1.E || rm -f obs-1.E
+$xx -1 $srcdir/obs-2.I > obs-2.O 2> obs-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-2(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-2.O $srcdir/obs-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-2(F)"; fi;;
+ 1) $echo "Test obs-2(F) failed: files obs-2.O and $srcdir/obs-2.X differ" 1>&2
+ (diff -c obs-2.O $srcdir/obs-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-2(F) may have failed." 1>&2
+ $echo The command "cmp obs-2.O $srcdir/obs-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-2.E || rm -f obs-2.E
+cat $srcdir/obs-2.I | $xx -1 > obs-2.O 2> obs-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-2.O $srcdir/obs-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-2(|)"; fi;;
+ 1) $echo "Test obs-2(|) failed: files obs-2.O and $srcdir/obs-2.X differ" 1>&2
+ (diff -c obs-2.O $srcdir/obs-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-2(|) may have failed." 1>&2
+ $echo The command "cmp obs-2.O $srcdir/obs-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-2.E || rm -f obs-2.E
+$xx -1 < $srcdir/obs-2.I > obs-2.O 2> obs-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-2.O $srcdir/obs-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-2(<)"; fi;;
+ 1) $echo "Test obs-2(<) failed: files obs-2.O and $srcdir/obs-2.X differ" 1>&2
+ (diff -c obs-2.O $srcdir/obs-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-2(<) may have failed." 1>&2
+ $echo The command "cmp obs-2.O $srcdir/obs-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-2.E || rm -f obs-2.E
+$xx -1 $srcdir/obs-3.I > obs-3.O 2> obs-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-3(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-3.O $srcdir/obs-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-3(F)"; fi;;
+ 1) $echo "Test obs-3(F) failed: files obs-3.O and $srcdir/obs-3.X differ" 1>&2
+ (diff -c obs-3.O $srcdir/obs-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-3(F) may have failed." 1>&2
+ $echo The command "cmp obs-3.O $srcdir/obs-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-3.E || rm -f obs-3.E
+cat $srcdir/obs-3.I | $xx -1 > obs-3.O 2> obs-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-3(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-3.O $srcdir/obs-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-3(|)"; fi;;
+ 1) $echo "Test obs-3(|) failed: files obs-3.O and $srcdir/obs-3.X differ" 1>&2
+ (diff -c obs-3.O $srcdir/obs-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-3(|) may have failed." 1>&2
+ $echo The command "cmp obs-3.O $srcdir/obs-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-3.E || rm -f obs-3.E
+$xx -1 < $srcdir/obs-3.I > obs-3.O 2> obs-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-3(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-3.O $srcdir/obs-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-3(<)"; fi;;
+ 1) $echo "Test obs-3(<) failed: files obs-3.O and $srcdir/obs-3.X differ" 1>&2
+ (diff -c obs-3.O $srcdir/obs-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-3(<) may have failed." 1>&2
+ $echo The command "cmp obs-3.O $srcdir/obs-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-3.E || rm -f obs-3.E
+_POSIX2_VERSION=199209 $xx +1 $srcdir/obs-plus-4.I > obs-plus-4.O 2> obs-plus-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-4(_POSIX2_VERSION=199209:F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-4.O $srcdir/obs-plus-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-4(_POSIX2_VERSION=199209:F)"; fi;;
+ 1) $echo "Test obs-plus-4(_POSIX2_VERSION=199209:F) failed: files obs-plus-4.O and $srcdir/obs-plus-4.X differ" 1>&2
+ (diff -c obs-plus-4.O $srcdir/obs-plus-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-4(_POSIX2_VERSION=199209:F) may have failed." 1>&2
+ $echo The command "cmp obs-plus-4.O $srcdir/obs-plus-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-4.E || rm -f obs-plus-4.E
+cat $srcdir/obs-plus-4.I | _POSIX2_VERSION=199209 $xx +1 > obs-plus-4.O 2> obs-plus-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-4(_POSIX2_VERSION=199209:|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-4.O $srcdir/obs-plus-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-4(_POSIX2_VERSION=199209:|)"; fi;;
+ 1) $echo "Test obs-plus-4(_POSIX2_VERSION=199209:|) failed: files obs-plus-4.O and $srcdir/obs-plus-4.X differ" 1>&2
+ (diff -c obs-plus-4.O $srcdir/obs-plus-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-4(_POSIX2_VERSION=199209:|) may have failed." 1>&2
+ $echo The command "cmp obs-plus-4.O $srcdir/obs-plus-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-4.E || rm -f obs-plus-4.E
+_POSIX2_VERSION=199209 $xx +1 < $srcdir/obs-plus-4.I > obs-plus-4.O 2> obs-plus-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-4(_POSIX2_VERSION=199209:<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-4.O $srcdir/obs-plus-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-4(_POSIX2_VERSION=199209:<)"; fi;;
+ 1) $echo "Test obs-plus-4(_POSIX2_VERSION=199209:<) failed: files obs-plus-4.O and $srcdir/obs-plus-4.X differ" 1>&2
+ (diff -c obs-plus-4.O $srcdir/obs-plus-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-4(_POSIX2_VERSION=199209:<) may have failed." 1>&2
+ $echo The command "cmp obs-plus-4.O $srcdir/obs-plus-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-4.E || rm -f obs-plus-4.E
+_POSIX2_VERSION=199209 $xx +2 $srcdir/obs-plus-5.I > obs-plus-5.O 2> obs-plus-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-5(_POSIX2_VERSION=199209:F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-5.O $srcdir/obs-plus-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-5(_POSIX2_VERSION=199209:F)"; fi;;
+ 1) $echo "Test obs-plus-5(_POSIX2_VERSION=199209:F) failed: files obs-plus-5.O and $srcdir/obs-plus-5.X differ" 1>&2
+ (diff -c obs-plus-5.O $srcdir/obs-plus-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-5(_POSIX2_VERSION=199209:F) may have failed." 1>&2
+ $echo The command "cmp obs-plus-5.O $srcdir/obs-plus-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-5.E || rm -f obs-plus-5.E
+cat $srcdir/obs-plus-5.I | _POSIX2_VERSION=199209 $xx +2 > obs-plus-5.O 2> obs-plus-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-5(_POSIX2_VERSION=199209:|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-5.O $srcdir/obs-plus-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-5(_POSIX2_VERSION=199209:|)"; fi;;
+ 1) $echo "Test obs-plus-5(_POSIX2_VERSION=199209:|) failed: files obs-plus-5.O and $srcdir/obs-plus-5.X differ" 1>&2
+ (diff -c obs-plus-5.O $srcdir/obs-plus-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-5(_POSIX2_VERSION=199209:|) may have failed." 1>&2
+ $echo The command "cmp obs-plus-5.O $srcdir/obs-plus-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-5.E || rm -f obs-plus-5.E
+_POSIX2_VERSION=199209 $xx +2 < $srcdir/obs-plus-5.I > obs-plus-5.O 2> obs-plus-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-5(_POSIX2_VERSION=199209:<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-5.O $srcdir/obs-plus-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-5(_POSIX2_VERSION=199209:<)"; fi;;
+ 1) $echo "Test obs-plus-5(_POSIX2_VERSION=199209:<) failed: files obs-plus-5.O and $srcdir/obs-plus-5.X differ" 1>&2
+ (diff -c obs-plus-5.O $srcdir/obs-plus-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-5(_POSIX2_VERSION=199209:<) may have failed." 1>&2
+ $echo The command "cmp obs-plus-5.O $srcdir/obs-plus-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-5.E || rm -f obs-plus-5.E
+_POSIX2_VERSION=199209 $xx +c $srcdir/obs-plus-x1.I > obs-plus-x1.O 2> obs-plus-x1.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-x1(_POSIX2_VERSION=199209:F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-x1.O $srcdir/obs-plus-x1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-x1(_POSIX2_VERSION=199209:F)"; fi;;
+ 1) $echo "Test obs-plus-x1(_POSIX2_VERSION=199209:F) failed: files obs-plus-x1.O and $srcdir/obs-plus-x1.X differ" 1>&2
+ (diff -c obs-plus-x1.O $srcdir/obs-plus-x1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-x1(_POSIX2_VERSION=199209:F) may have failed." 1>&2
+ $echo The command "cmp obs-plus-x1.O $srcdir/obs-plus-x1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-x1.E || rm -f obs-plus-x1.E
+cat $srcdir/obs-plus-x1.I | _POSIX2_VERSION=199209 $xx +c > obs-plus-x1.O 2> obs-plus-x1.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-x1(_POSIX2_VERSION=199209:|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-x1.O $srcdir/obs-plus-x1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-x1(_POSIX2_VERSION=199209:|)"; fi;;
+ 1) $echo "Test obs-plus-x1(_POSIX2_VERSION=199209:|) failed: files obs-plus-x1.O and $srcdir/obs-plus-x1.X differ" 1>&2
+ (diff -c obs-plus-x1.O $srcdir/obs-plus-x1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-x1(_POSIX2_VERSION=199209:|) may have failed." 1>&2
+ $echo The command "cmp obs-plus-x1.O $srcdir/obs-plus-x1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-x1.E || rm -f obs-plus-x1.E
+_POSIX2_VERSION=199209 $xx +c < $srcdir/obs-plus-x1.I > obs-plus-x1.O 2> obs-plus-x1.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-x1(_POSIX2_VERSION=199209:<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-x1.O $srcdir/obs-plus-x1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-x1(_POSIX2_VERSION=199209:<)"; fi;;
+ 1) $echo "Test obs-plus-x1(_POSIX2_VERSION=199209:<) failed: files obs-plus-x1.O and $srcdir/obs-plus-x1.X differ" 1>&2
+ (diff -c obs-plus-x1.O $srcdir/obs-plus-x1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-x1(_POSIX2_VERSION=199209:<) may have failed." 1>&2
+ $echo The command "cmp obs-plus-x1.O $srcdir/obs-plus-x1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-x1.E || rm -f obs-plus-x1.E
+_POSIX2_VERSION=199209 $xx +l $srcdir/obs-plus-x2.I > obs-plus-x2.O 2> obs-plus-x2.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-x2(_POSIX2_VERSION=199209:F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-x2.O $srcdir/obs-plus-x2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-x2(_POSIX2_VERSION=199209:F)"; fi;;
+ 1) $echo "Test obs-plus-x2(_POSIX2_VERSION=199209:F) failed: files obs-plus-x2.O and $srcdir/obs-plus-x2.X differ" 1>&2
+ (diff -c obs-plus-x2.O $srcdir/obs-plus-x2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-x2(_POSIX2_VERSION=199209:F) may have failed." 1>&2
+ $echo The command "cmp obs-plus-x2.O $srcdir/obs-plus-x2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-x2.E || rm -f obs-plus-x2.E
+cat $srcdir/obs-plus-x2.I | _POSIX2_VERSION=199209 $xx +l > obs-plus-x2.O 2> obs-plus-x2.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-x2(_POSIX2_VERSION=199209:|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-x2.O $srcdir/obs-plus-x2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-x2(_POSIX2_VERSION=199209:|)"; fi;;
+ 1) $echo "Test obs-plus-x2(_POSIX2_VERSION=199209:|) failed: files obs-plus-x2.O and $srcdir/obs-plus-x2.X differ" 1>&2
+ (diff -c obs-plus-x2.O $srcdir/obs-plus-x2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-x2(_POSIX2_VERSION=199209:|) may have failed." 1>&2
+ $echo The command "cmp obs-plus-x2.O $srcdir/obs-plus-x2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-x2.E || rm -f obs-plus-x2.E
+_POSIX2_VERSION=199209 $xx +l < $srcdir/obs-plus-x2.I > obs-plus-x2.O 2> obs-plus-x2.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus-x2(_POSIX2_VERSION=199209:<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus-x2.O $srcdir/obs-plus-x2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus-x2(_POSIX2_VERSION=199209:<)"; fi;;
+ 1) $echo "Test obs-plus-x2(_POSIX2_VERSION=199209:<) failed: files obs-plus-x2.O and $srcdir/obs-plus-x2.X differ" 1>&2
+ (diff -c obs-plus-x2.O $srcdir/obs-plus-x2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus-x2(_POSIX2_VERSION=199209:<) may have failed." 1>&2
+ $echo The command "cmp obs-plus-x2.O $srcdir/obs-plus-x2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus-x2.E || rm -f obs-plus-x2.E
+$xx -l $srcdir/obs-l.I > obs-l.O 2> obs-l.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-l(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-l.O $srcdir/obs-l.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-l(F)"; fi;;
+ 1) $echo "Test obs-l(F) failed: files obs-l.O and $srcdir/obs-l.X differ" 1>&2
+ (diff -c obs-l.O $srcdir/obs-l.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-l(F) may have failed." 1>&2
+ $echo The command "cmp obs-l.O $srcdir/obs-l.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-l.E || rm -f obs-l.E
+cat $srcdir/obs-l.I | $xx -l > obs-l.O 2> obs-l.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-l(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-l.O $srcdir/obs-l.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-l(|)"; fi;;
+ 1) $echo "Test obs-l(|) failed: files obs-l.O and $srcdir/obs-l.X differ" 1>&2
+ (diff -c obs-l.O $srcdir/obs-l.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-l(|) may have failed." 1>&2
+ $echo The command "cmp obs-l.O $srcdir/obs-l.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-l.E || rm -f obs-l.E
+$xx -l < $srcdir/obs-l.I > obs-l.O 2> obs-l.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-l(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-l.O $srcdir/obs-l.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-l(<)"; fi;;
+ 1) $echo "Test obs-l(<) failed: files obs-l.O and $srcdir/obs-l.X differ" 1>&2
+ (diff -c obs-l.O $srcdir/obs-l.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-l(<) may have failed." 1>&2
+ $echo The command "cmp obs-l.O $srcdir/obs-l.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-l.E || rm -f obs-l.E
+$xx -b $srcdir/obs-b.I > obs-b.O 2> obs-b.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-b(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-b.O $srcdir/obs-b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-b(F)"; fi;;
+ 1) $echo "Test obs-b(F) failed: files obs-b.O and $srcdir/obs-b.X differ" 1>&2
+ (diff -c obs-b.O $srcdir/obs-b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-b(F) may have failed." 1>&2
+ $echo The command "cmp obs-b.O $srcdir/obs-b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-b.E || rm -f obs-b.E
+cat $srcdir/obs-b.I | $xx -b > obs-b.O 2> obs-b.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-b(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-b.O $srcdir/obs-b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-b(|)"; fi;;
+ 1) $echo "Test obs-b(|) failed: files obs-b.O and $srcdir/obs-b.X differ" 1>&2
+ (diff -c obs-b.O $srcdir/obs-b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-b(|) may have failed." 1>&2
+ $echo The command "cmp obs-b.O $srcdir/obs-b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-b.E || rm -f obs-b.E
+$xx -b < $srcdir/obs-b.I > obs-b.O 2> obs-b.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-b(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-b.O $srcdir/obs-b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-b(<)"; fi;;
+ 1) $echo "Test obs-b(<) failed: files obs-b.O and $srcdir/obs-b.X differ" 1>&2
+ (diff -c obs-b.O $srcdir/obs-b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-b(<) may have failed." 1>&2
+ $echo The command "cmp obs-b.O $srcdir/obs-b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-b.E || rm -f obs-b.E
+cat $srcdir/err-1.I | $xx +cl > err-1.O 2> err-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test err-1(|) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp err-1.O $srcdir/err-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed err-1(|)"; fi;;
+ 1) $echo "Test err-1(|) failed: files err-1.O and $srcdir/err-1.X differ" 1>&2
+ (diff -c err-1.O $srcdir/err-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test err-1(|) may have failed." 1>&2
+ $echo The command "cmp err-1.O $srcdir/err-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s err-1.E || rm -f err-1.E
+$xx +cl < $srcdir/err-1.I > err-1.O 2> err-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test err-1(<) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp err-1.O $srcdir/err-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed err-1(<)"; fi;;
+ 1) $echo "Test err-1(<) failed: files err-1.O and $srcdir/err-1.X differ" 1>&2
+ (diff -c err-1.O $srcdir/err-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test err-1(<) may have failed." 1>&2
+ $echo The command "cmp err-1.O $srcdir/err-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s err-1.E || rm -f err-1.E
+$xx -cl $srcdir/err-2.I > err-2.O 2> err-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test err-2(F) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp err-2.O $srcdir/err-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed err-2(F)"; fi;;
+ 1) $echo "Test err-2(F) failed: files err-2.O and $srcdir/err-2.X differ" 1>&2
+ (diff -c err-2.O $srcdir/err-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test err-2(F) may have failed." 1>&2
+ $echo The command "cmp err-2.O $srcdir/err-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s err-2.E || rm -f err-2.E
+cat $srcdir/err-2.I | $xx -cl > err-2.O 2> err-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test err-2(|) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp err-2.O $srcdir/err-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed err-2(|)"; fi;;
+ 1) $echo "Test err-2(|) failed: files err-2.O and $srcdir/err-2.X differ" 1>&2
+ (diff -c err-2.O $srcdir/err-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test err-2(|) may have failed." 1>&2
+ $echo The command "cmp err-2.O $srcdir/err-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s err-2.E || rm -f err-2.E
+$xx -cl < $srcdir/err-2.I > err-2.O 2> err-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test err-2(<) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp err-2.O $srcdir/err-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed err-2(<)"; fi;;
+ 1) $echo "Test err-2(<) failed: files err-2.O and $srcdir/err-2.X differ" 1>&2
+ (diff -c err-2.O $srcdir/err-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test err-2(<) may have failed." 1>&2
+ $echo The command "cmp err-2.O $srcdir/err-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s err-2.E || rm -f err-2.E
+cat $srcdir/err-3.I | $xx +2cz > err-3.O 2> err-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test err-3(|) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp err-3.O $srcdir/err-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed err-3(|)"; fi;;
+ 1) $echo "Test err-3(|) failed: files err-3.O and $srcdir/err-3.X differ" 1>&2
+ (diff -c err-3.O $srcdir/err-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test err-3(|) may have failed." 1>&2
+ $echo The command "cmp err-3.O $srcdir/err-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s err-3.E || rm -f err-3.E
+$xx +2cz < $srcdir/err-3.I > err-3.O 2> err-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test err-3(<) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp err-3.O $srcdir/err-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed err-3(<)"; fi;;
+ 1) $echo "Test err-3(<) failed: files err-3.O and $srcdir/err-3.X differ" 1>&2
+ (diff -c err-3.O $srcdir/err-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test err-3(<) may have failed." 1>&2
+ $echo The command "cmp err-3.O $srcdir/err-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s err-3.E || rm -f err-3.E
+$xx -2cX $srcdir/err-4.I > err-4.O 2> err-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test err-4(F) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp err-4.O $srcdir/err-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed err-4(F)"; fi;;
+ 1) $echo "Test err-4(F) failed: files err-4.O and $srcdir/err-4.X differ" 1>&2
+ (diff -c err-4.O $srcdir/err-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test err-4(F) may have failed." 1>&2
+ $echo The command "cmp err-4.O $srcdir/err-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s err-4.E || rm -f err-4.E
+cat $srcdir/err-4.I | $xx -2cX > err-4.O 2> err-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test err-4(|) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp err-4.O $srcdir/err-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed err-4(|)"; fi;;
+ 1) $echo "Test err-4(|) failed: files err-4.O and $srcdir/err-4.X differ" 1>&2
+ (diff -c err-4.O $srcdir/err-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test err-4(|) may have failed." 1>&2
+ $echo The command "cmp err-4.O $srcdir/err-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s err-4.E || rm -f err-4.E
+$xx -2cX < $srcdir/err-4.I > err-4.O 2> err-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test err-4(<) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp err-4.O $srcdir/err-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed err-4(<)"; fi;;
+ 1) $echo "Test err-4(<) failed: files err-4.O and $srcdir/err-4.X differ" 1>&2
+ (diff -c err-4.O $srcdir/err-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test err-4(<) may have failed." 1>&2
+ $echo The command "cmp err-4.O $srcdir/err-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s err-4.E || rm -f err-4.E
+$xx -c99999999999999999999 $srcdir/err-5.I > err-5.O 2> err-5.E
+code=$?
+if test $code != 1; then
+ $echo "Test err-5(F) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp err-5.O $srcdir/err-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed err-5(F)"; fi;;
+ 1) $echo "Test err-5(F) failed: files err-5.O and $srcdir/err-5.X differ" 1>&2
+ (diff -c err-5.O $srcdir/err-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test err-5(F) may have failed." 1>&2
+ $echo The command "cmp err-5.O $srcdir/err-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s err-5.E || rm -f err-5.E
+cat $srcdir/err-5.I | $xx -c99999999999999999999 > err-5.O 2> err-5.E
+code=$?
+if test $code != 1; then
+ $echo "Test err-5(|) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp err-5.O $srcdir/err-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed err-5(|)"; fi;;
+ 1) $echo "Test err-5(|) failed: files err-5.O and $srcdir/err-5.X differ" 1>&2
+ (diff -c err-5.O $srcdir/err-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test err-5(|) may have failed." 1>&2
+ $echo The command "cmp err-5.O $srcdir/err-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s err-5.E || rm -f err-5.E
+$xx -c99999999999999999999 < $srcdir/err-5.I > err-5.O 2> err-5.E
+code=$?
+if test $code != 1; then
+ $echo "Test err-5(<) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp err-5.O $srcdir/err-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed err-5(<)"; fi;;
+ 1) $echo "Test err-5(<) failed: files err-5.O and $srcdir/err-5.X differ" 1>&2
+ (diff -c err-5.O $srcdir/err-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test err-5(<) may have failed." 1>&2
+ $echo The command "cmp err-5.O $srcdir/err-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s err-5.E || rm -f err-5.E
+_POSIX2_VERSION=200112 $xx -c $srcdir/err-6.I > err-6.O 2> err-6.E
+code=$?
+if test $code != 1; then
+ $echo "Test err-6(_POSIX2_VERSION=200112:F) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp err-6.O $srcdir/err-6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed err-6(_POSIX2_VERSION=200112:F)"; fi;;
+ 1) $echo "Test err-6(_POSIX2_VERSION=200112:F) failed: files err-6.O and $srcdir/err-6.X differ" 1>&2
+ (diff -c err-6.O $srcdir/err-6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test err-6(_POSIX2_VERSION=200112:F) may have failed." 1>&2
+ $echo The command "cmp err-6.O $srcdir/err-6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s err-6.E || rm -f err-6.E
+cat $srcdir/err-6.I | _POSIX2_VERSION=200112 $xx -c > err-6.O 2> err-6.E
+code=$?
+if test $code != 1; then
+ $echo "Test err-6(_POSIX2_VERSION=200112:|) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp err-6.O $srcdir/err-6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed err-6(_POSIX2_VERSION=200112:|)"; fi;;
+ 1) $echo "Test err-6(_POSIX2_VERSION=200112:|) failed: files err-6.O and $srcdir/err-6.X differ" 1>&2
+ (diff -c err-6.O $srcdir/err-6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test err-6(_POSIX2_VERSION=200112:|) may have failed." 1>&2
+ $echo The command "cmp err-6.O $srcdir/err-6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s err-6.E || rm -f err-6.E
+_POSIX2_VERSION=200112 $xx -c < $srcdir/err-6.I > err-6.O 2> err-6.E
+code=$?
+if test $code != 1; then
+ $echo "Test err-6(_POSIX2_VERSION=200112:<) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp err-6.O $srcdir/err-6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed err-6(_POSIX2_VERSION=200112:<)"; fi;;
+ 1) $echo "Test err-6(_POSIX2_VERSION=200112:<) failed: files err-6.O and $srcdir/err-6.X differ" 1>&2
+ (diff -c err-6.O $srcdir/err-6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test err-6(_POSIX2_VERSION=200112:<) may have failed." 1>&2
+ $echo The command "cmp err-6.O $srcdir/err-6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s err-6.E || rm -f err-6.E
+cat $srcdir/minus-1.I | _POSIX2_VERSION=199209 $xx - > minus-1.O 2> minus-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test minus-1(_POSIX2_VERSION=199209:|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp minus-1.O $srcdir/minus-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed minus-1(_POSIX2_VERSION=199209:|)"; fi;;
+ 1) $echo "Test minus-1(_POSIX2_VERSION=199209:|) failed: files minus-1.O and $srcdir/minus-1.X differ" 1>&2
+ (diff -c minus-1.O $srcdir/minus-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test minus-1(_POSIX2_VERSION=199209:|) may have failed." 1>&2
+ $echo The command "cmp minus-1.O $srcdir/minus-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s minus-1.E || rm -f minus-1.E
+_POSIX2_VERSION=199209 $xx - < $srcdir/minus-1.I > minus-1.O 2> minus-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test minus-1(_POSIX2_VERSION=199209:<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp minus-1.O $srcdir/minus-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed minus-1(_POSIX2_VERSION=199209:<)"; fi;;
+ 1) $echo "Test minus-1(_POSIX2_VERSION=199209:<) failed: files minus-1.O and $srcdir/minus-1.X differ" 1>&2
+ (diff -c minus-1.O $srcdir/minus-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test minus-1(_POSIX2_VERSION=199209:<) may have failed." 1>&2
+ $echo The command "cmp minus-1.O $srcdir/minus-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s minus-1.E || rm -f minus-1.E
+cat $srcdir/minus-2.I | _POSIX2_VERSION=199209 $xx - > minus-2.O 2> minus-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test minus-2(_POSIX2_VERSION=199209:|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp minus-2.O $srcdir/minus-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed minus-2(_POSIX2_VERSION=199209:|)"; fi;;
+ 1) $echo "Test minus-2(_POSIX2_VERSION=199209:|) failed: files minus-2.O and $srcdir/minus-2.X differ" 1>&2
+ (diff -c minus-2.O $srcdir/minus-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test minus-2(_POSIX2_VERSION=199209:|) may have failed." 1>&2
+ $echo The command "cmp minus-2.O $srcdir/minus-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s minus-2.E || rm -f minus-2.E
+_POSIX2_VERSION=199209 $xx - < $srcdir/minus-2.I > minus-2.O 2> minus-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test minus-2(_POSIX2_VERSION=199209:<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp minus-2.O $srcdir/minus-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed minus-2(_POSIX2_VERSION=199209:<)"; fi;;
+ 1) $echo "Test minus-2(_POSIX2_VERSION=199209:<) failed: files minus-2.O and $srcdir/minus-2.X differ" 1>&2
+ (diff -c minus-2.O $srcdir/minus-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test minus-2(_POSIX2_VERSION=199209:<) may have failed." 1>&2
+ $echo The command "cmp minus-2.O $srcdir/minus-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s minus-2.E || rm -f minus-2.E
+_POSIX2_VERSION=200112 $xx -c 2 $srcdir/c-2.I > c-2.O 2> c-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test c-2(_POSIX2_VERSION=200112:F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c-2.O $srcdir/c-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c-2(_POSIX2_VERSION=200112:F)"; fi;;
+ 1) $echo "Test c-2(_POSIX2_VERSION=200112:F) failed: files c-2.O and $srcdir/c-2.X differ" 1>&2
+ (diff -c c-2.O $srcdir/c-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c-2(_POSIX2_VERSION=200112:F) may have failed." 1>&2
+ $echo The command "cmp c-2.O $srcdir/c-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c-2.E || rm -f c-2.E
+cat $srcdir/c-2.I | _POSIX2_VERSION=200112 $xx -c 2 > c-2.O 2> c-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test c-2(_POSIX2_VERSION=200112:|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c-2.O $srcdir/c-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c-2(_POSIX2_VERSION=200112:|)"; fi;;
+ 1) $echo "Test c-2(_POSIX2_VERSION=200112:|) failed: files c-2.O and $srcdir/c-2.X differ" 1>&2
+ (diff -c c-2.O $srcdir/c-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c-2(_POSIX2_VERSION=200112:|) may have failed." 1>&2
+ $echo The command "cmp c-2.O $srcdir/c-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c-2.E || rm -f c-2.E
+_POSIX2_VERSION=200112 $xx -c 2 < $srcdir/c-2.I > c-2.O 2> c-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test c-2(_POSIX2_VERSION=200112:<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c-2.O $srcdir/c-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c-2(_POSIX2_VERSION=200112:<)"; fi;;
+ 1) $echo "Test c-2(_POSIX2_VERSION=200112:<) failed: files c-2.O and $srcdir/c-2.X differ" 1>&2
+ (diff -c c-2.O $srcdir/c-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c-2(_POSIX2_VERSION=200112:<) may have failed." 1>&2
+ $echo The command "cmp c-2.O $srcdir/c-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c-2.E || rm -f c-2.E
+$xx -c 2 -- $srcdir/c-2-minus.I > c-2-minus.O 2> c-2-minus.E
+code=$?
+if test $code != 0; then
+ $echo "Test c-2-minus(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c-2-minus.O $srcdir/c-2-minus.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c-2-minus(F)"; fi;;
+ 1) $echo "Test c-2-minus(F) failed: files c-2-minus.O and $srcdir/c-2-minus.X differ" 1>&2
+ (diff -c c-2-minus.O $srcdir/c-2-minus.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c-2-minus(F) may have failed." 1>&2
+ $echo The command "cmp c-2-minus.O $srcdir/c-2-minus.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c-2-minus.E || rm -f c-2-minus.E
+cat $srcdir/c-2-minus.I | $xx -c 2 -- > c-2-minus.O 2> c-2-minus.E
+code=$?
+if test $code != 0; then
+ $echo "Test c-2-minus(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c-2-minus.O $srcdir/c-2-minus.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c-2-minus(|)"; fi;;
+ 1) $echo "Test c-2-minus(|) failed: files c-2-minus.O and $srcdir/c-2-minus.X differ" 1>&2
+ (diff -c c-2-minus.O $srcdir/c-2-minus.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c-2-minus(|) may have failed." 1>&2
+ $echo The command "cmp c-2-minus.O $srcdir/c-2-minus.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c-2-minus.E || rm -f c-2-minus.E
+$xx -c 2 -- < $srcdir/c-2-minus.I > c-2-minus.O 2> c-2-minus.E
+code=$?
+if test $code != 0; then
+ $echo "Test c-2-minus(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c-2-minus.O $srcdir/c-2-minus.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c-2-minus(<)"; fi;;
+ 1) $echo "Test c-2-minus(<) failed: files c-2-minus.O and $srcdir/c-2-minus.X differ" 1>&2
+ (diff -c c-2-minus.O $srcdir/c-2-minus.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c-2-minus(<) may have failed." 1>&2
+ $echo The command "cmp c-2-minus.O $srcdir/c-2-minus.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c-2-minus.E || rm -f c-2-minus.E
+$xx -c2 $srcdir/c2.I > c2.O 2> c2.E
+code=$?
+if test $code != 0; then
+ $echo "Test c2(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c2.O $srcdir/c2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c2(F)"; fi;;
+ 1) $echo "Test c2(F) failed: files c2.O and $srcdir/c2.X differ" 1>&2
+ (diff -c c2.O $srcdir/c2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c2(F) may have failed." 1>&2
+ $echo The command "cmp c2.O $srcdir/c2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c2.E || rm -f c2.E
+cat $srcdir/c2.I | $xx -c2 > c2.O 2> c2.E
+code=$?
+if test $code != 0; then
+ $echo "Test c2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c2.O $srcdir/c2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c2(|)"; fi;;
+ 1) $echo "Test c2(|) failed: files c2.O and $srcdir/c2.X differ" 1>&2
+ (diff -c c2.O $srcdir/c2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c2(|) may have failed." 1>&2
+ $echo The command "cmp c2.O $srcdir/c2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c2.E || rm -f c2.E
+$xx -c2 < $srcdir/c2.I > c2.O 2> c2.E
+code=$?
+if test $code != 0; then
+ $echo "Test c2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c2.O $srcdir/c2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c2(<)"; fi;;
+ 1) $echo "Test c2(<) failed: files c2.O and $srcdir/c2.X differ" 1>&2
+ (diff -c c2.O $srcdir/c2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c2(<) may have failed." 1>&2
+ $echo The command "cmp c2.O $srcdir/c2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c2.E || rm -f c2.E
+$xx -c2 -- $srcdir/c2-minus.I > c2-minus.O 2> c2-minus.E
+code=$?
+if test $code != 0; then
+ $echo "Test c2-minus(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c2-minus.O $srcdir/c2-minus.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c2-minus(F)"; fi;;
+ 1) $echo "Test c2-minus(F) failed: files c2-minus.O and $srcdir/c2-minus.X differ" 1>&2
+ (diff -c c2-minus.O $srcdir/c2-minus.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c2-minus(F) may have failed." 1>&2
+ $echo The command "cmp c2-minus.O $srcdir/c2-minus.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c2-minus.E || rm -f c2-minus.E
+cat $srcdir/c2-minus.I | $xx -c2 -- > c2-minus.O 2> c2-minus.E
+code=$?
+if test $code != 0; then
+ $echo "Test c2-minus(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c2-minus.O $srcdir/c2-minus.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c2-minus(|)"; fi;;
+ 1) $echo "Test c2-minus(|) failed: files c2-minus.O and $srcdir/c2-minus.X differ" 1>&2
+ (diff -c c2-minus.O $srcdir/c2-minus.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c2-minus(|) may have failed." 1>&2
+ $echo The command "cmp c2-minus.O $srcdir/c2-minus.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c2-minus.E || rm -f c2-minus.E
+$xx -c2 -- < $srcdir/c2-minus.I > c2-minus.O 2> c2-minus.E
+code=$?
+if test $code != 0; then
+ $echo "Test c2-minus(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c2-minus.O $srcdir/c2-minus.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c2-minus(<)"; fi;;
+ 1) $echo "Test c2-minus(<) failed: files c2-minus.O and $srcdir/c2-minus.X differ" 1>&2
+ (diff -c c2-minus.O $srcdir/c2-minus.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c2-minus(<) may have failed." 1>&2
+ $echo The command "cmp c2-minus.O $srcdir/c2-minus.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c2-minus.E || rm -f c2-minus.E
+$xx -n 10 $srcdir/n-1.I > n-1.O 2> n-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-1(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-1.O $srcdir/n-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-1(F)"; fi;;
+ 1) $echo "Test n-1(F) failed: files n-1.O and $srcdir/n-1.X differ" 1>&2
+ (diff -c n-1.O $srcdir/n-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-1(F) may have failed." 1>&2
+ $echo The command "cmp n-1.O $srcdir/n-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-1.E || rm -f n-1.E
+cat $srcdir/n-1.I | $xx -n 10 > n-1.O 2> n-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-1(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-1.O $srcdir/n-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-1(|)"; fi;;
+ 1) $echo "Test n-1(|) failed: files n-1.O and $srcdir/n-1.X differ" 1>&2
+ (diff -c n-1.O $srcdir/n-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-1(|) may have failed." 1>&2
+ $echo The command "cmp n-1.O $srcdir/n-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-1.E || rm -f n-1.E
+$xx -n 10 < $srcdir/n-1.I > n-1.O 2> n-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-1(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-1.O $srcdir/n-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-1(<)"; fi;;
+ 1) $echo "Test n-1(<) failed: files n-1.O and $srcdir/n-1.X differ" 1>&2
+ (diff -c n-1.O $srcdir/n-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-1(<) may have failed." 1>&2
+ $echo The command "cmp n-1.O $srcdir/n-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-1.E || rm -f n-1.E
+$xx -n -10 $srcdir/n-2.I > n-2.O 2> n-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-2(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-2.O $srcdir/n-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-2(F)"; fi;;
+ 1) $echo "Test n-2(F) failed: files n-2.O and $srcdir/n-2.X differ" 1>&2
+ (diff -c n-2.O $srcdir/n-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-2(F) may have failed." 1>&2
+ $echo The command "cmp n-2.O $srcdir/n-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-2.E || rm -f n-2.E
+cat $srcdir/n-2.I | $xx -n -10 > n-2.O 2> n-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-2.O $srcdir/n-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-2(|)"; fi;;
+ 1) $echo "Test n-2(|) failed: files n-2.O and $srcdir/n-2.X differ" 1>&2
+ (diff -c n-2.O $srcdir/n-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-2(|) may have failed." 1>&2
+ $echo The command "cmp n-2.O $srcdir/n-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-2.E || rm -f n-2.E
+$xx -n -10 < $srcdir/n-2.I > n-2.O 2> n-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-2.O $srcdir/n-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-2(<)"; fi;;
+ 1) $echo "Test n-2(<) failed: files n-2.O and $srcdir/n-2.X differ" 1>&2
+ (diff -c n-2.O $srcdir/n-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-2(<) may have failed." 1>&2
+ $echo The command "cmp n-2.O $srcdir/n-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-2.E || rm -f n-2.E
+$xx -n +10 $srcdir/n-3.I > n-3.O 2> n-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-3(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-3.O $srcdir/n-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-3(F)"; fi;;
+ 1) $echo "Test n-3(F) failed: files n-3.O and $srcdir/n-3.X differ" 1>&2
+ (diff -c n-3.O $srcdir/n-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-3(F) may have failed." 1>&2
+ $echo The command "cmp n-3.O $srcdir/n-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-3.E || rm -f n-3.E
+cat $srcdir/n-3.I | $xx -n +10 > n-3.O 2> n-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-3(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-3.O $srcdir/n-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-3(|)"; fi;;
+ 1) $echo "Test n-3(|) failed: files n-3.O and $srcdir/n-3.X differ" 1>&2
+ (diff -c n-3.O $srcdir/n-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-3(|) may have failed." 1>&2
+ $echo The command "cmp n-3.O $srcdir/n-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-3.E || rm -f n-3.E
+$xx -n +10 < $srcdir/n-3.I > n-3.O 2> n-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-3(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-3.O $srcdir/n-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-3(<)"; fi;;
+ 1) $echo "Test n-3(<) failed: files n-3.O and $srcdir/n-3.X differ" 1>&2
+ (diff -c n-3.O $srcdir/n-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-3(<) may have failed." 1>&2
+ $echo The command "cmp n-3.O $srcdir/n-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-3.E || rm -f n-3.E
+$xx -n +0 $srcdir/n-4.I > n-4.O 2> n-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-4(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-4.O $srcdir/n-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-4(F)"; fi;;
+ 1) $echo "Test n-4(F) failed: files n-4.O and $srcdir/n-4.X differ" 1>&2
+ (diff -c n-4.O $srcdir/n-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-4(F) may have failed." 1>&2
+ $echo The command "cmp n-4.O $srcdir/n-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-4.E || rm -f n-4.E
+cat $srcdir/n-4.I | $xx -n +0 > n-4.O 2> n-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-4(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-4.O $srcdir/n-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-4(|)"; fi;;
+ 1) $echo "Test n-4(|) failed: files n-4.O and $srcdir/n-4.X differ" 1>&2
+ (diff -c n-4.O $srcdir/n-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-4(|) may have failed." 1>&2
+ $echo The command "cmp n-4.O $srcdir/n-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-4.E || rm -f n-4.E
+$xx -n +0 < $srcdir/n-4.I > n-4.O 2> n-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-4(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-4.O $srcdir/n-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-4(<)"; fi;;
+ 1) $echo "Test n-4(<) failed: files n-4.O and $srcdir/n-4.X differ" 1>&2
+ (diff -c n-4.O $srcdir/n-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-4(<) may have failed." 1>&2
+ $echo The command "cmp n-4.O $srcdir/n-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-4.E || rm -f n-4.E
+$xx -n +1 $srcdir/n-4a.I > n-4a.O 2> n-4a.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-4a(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-4a.O $srcdir/n-4a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-4a(F)"; fi;;
+ 1) $echo "Test n-4a(F) failed: files n-4a.O and $srcdir/n-4a.X differ" 1>&2
+ (diff -c n-4a.O $srcdir/n-4a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-4a(F) may have failed." 1>&2
+ $echo The command "cmp n-4a.O $srcdir/n-4a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-4a.E || rm -f n-4a.E
+cat $srcdir/n-4a.I | $xx -n +1 > n-4a.O 2> n-4a.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-4a(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-4a.O $srcdir/n-4a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-4a(|)"; fi;;
+ 1) $echo "Test n-4a(|) failed: files n-4a.O and $srcdir/n-4a.X differ" 1>&2
+ (diff -c n-4a.O $srcdir/n-4a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-4a(|) may have failed." 1>&2
+ $echo The command "cmp n-4a.O $srcdir/n-4a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-4a.E || rm -f n-4a.E
+$xx -n +1 < $srcdir/n-4a.I > n-4a.O 2> n-4a.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-4a(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-4a.O $srcdir/n-4a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-4a(<)"; fi;;
+ 1) $echo "Test n-4a(<) failed: files n-4a.O and $srcdir/n-4a.X differ" 1>&2
+ (diff -c n-4a.O $srcdir/n-4a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-4a(<) may have failed." 1>&2
+ $echo The command "cmp n-4a.O $srcdir/n-4a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-4a.E || rm -f n-4a.E
+$xx -n -0 $srcdir/n-5.I > n-5.O 2> n-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-5(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-5.O $srcdir/n-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-5(F)"; fi;;
+ 1) $echo "Test n-5(F) failed: files n-5.O and $srcdir/n-5.X differ" 1>&2
+ (diff -c n-5.O $srcdir/n-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-5(F) may have failed." 1>&2
+ $echo The command "cmp n-5.O $srcdir/n-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-5.E || rm -f n-5.E
+cat $srcdir/n-5.I | $xx -n -0 > n-5.O 2> n-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-5(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-5.O $srcdir/n-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-5(|)"; fi;;
+ 1) $echo "Test n-5(|) failed: files n-5.O and $srcdir/n-5.X differ" 1>&2
+ (diff -c n-5.O $srcdir/n-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-5(|) may have failed." 1>&2
+ $echo The command "cmp n-5.O $srcdir/n-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-5.E || rm -f n-5.E
+$xx -n -0 < $srcdir/n-5.I > n-5.O 2> n-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-5(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-5.O $srcdir/n-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-5(<)"; fi;;
+ 1) $echo "Test n-5(<) failed: files n-5.O and $srcdir/n-5.X differ" 1>&2
+ (diff -c n-5.O $srcdir/n-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-5(<) may have failed." 1>&2
+ $echo The command "cmp n-5.O $srcdir/n-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-5.E || rm -f n-5.E
+$xx -n -1 $srcdir/n-5a.I > n-5a.O 2> n-5a.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-5a(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-5a.O $srcdir/n-5a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-5a(F)"; fi;;
+ 1) $echo "Test n-5a(F) failed: files n-5a.O and $srcdir/n-5a.X differ" 1>&2
+ (diff -c n-5a.O $srcdir/n-5a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-5a(F) may have failed." 1>&2
+ $echo The command "cmp n-5a.O $srcdir/n-5a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-5a.E || rm -f n-5a.E
+cat $srcdir/n-5a.I | $xx -n -1 > n-5a.O 2> n-5a.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-5a(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-5a.O $srcdir/n-5a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-5a(|)"; fi;;
+ 1) $echo "Test n-5a(|) failed: files n-5a.O and $srcdir/n-5a.X differ" 1>&2
+ (diff -c n-5a.O $srcdir/n-5a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-5a(|) may have failed." 1>&2
+ $echo The command "cmp n-5a.O $srcdir/n-5a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-5a.E || rm -f n-5a.E
+$xx -n -1 < $srcdir/n-5a.I > n-5a.O 2> n-5a.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-5a(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-5a.O $srcdir/n-5a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-5a(<)"; fi;;
+ 1) $echo "Test n-5a(<) failed: files n-5a.O and $srcdir/n-5a.X differ" 1>&2
+ (diff -c n-5a.O $srcdir/n-5a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-5a(<) may have failed." 1>&2
+ $echo The command "cmp n-5a.O $srcdir/n-5a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-5a.E || rm -f n-5a.E
+$xx -n 0 $srcdir/n-5b.I > n-5b.O 2> n-5b.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-5b(F) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-5b.O $srcdir/n-5b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-5b(F)"; fi;;
+ 1) $echo "Test n-5b(F) failed: files n-5b.O and $srcdir/n-5b.X differ" 1>&2
+ (diff -c n-5b.O $srcdir/n-5b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-5b(F) may have failed." 1>&2
+ $echo The command "cmp n-5b.O $srcdir/n-5b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-5b.E || rm -f n-5b.E
+cat $srcdir/n-5b.I | $xx -n 0 > n-5b.O 2> n-5b.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-5b(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-5b.O $srcdir/n-5b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-5b(|)"; fi;;
+ 1) $echo "Test n-5b(|) failed: files n-5b.O and $srcdir/n-5b.X differ" 1>&2
+ (diff -c n-5b.O $srcdir/n-5b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-5b(|) may have failed." 1>&2
+ $echo The command "cmp n-5b.O $srcdir/n-5b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-5b.E || rm -f n-5b.E
+$xx -n 0 < $srcdir/n-5b.I > n-5b.O 2> n-5b.E
+code=$?
+if test $code != 0; then
+ $echo "Test n-5b(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n-5b.O $srcdir/n-5b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n-5b(<)"; fi;;
+ 1) $echo "Test n-5b(<) failed: files n-5b.O and $srcdir/n-5b.X differ" 1>&2
+ (diff -c n-5b.O $srcdir/n-5b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n-5b(<) may have failed." 1>&2
+ $echo The command "cmp n-5b.O $srcdir/n-5b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n-5b.E || rm -f n-5b.E
+cat $srcdir/f-pipe-1.I | POSIXLY_CORRECT=1 $xx -f -n 1 > f-pipe-1.O 2> f-pipe-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test f-pipe-1(POSIXLY_CORRECT=1) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp f-pipe-1.O $srcdir/f-pipe-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed f-pipe-1(POSIXLY_CORRECT=1)"; fi;;
+ 1) $echo "Test f-pipe-1(POSIXLY_CORRECT=1) failed: files f-pipe-1.O and $srcdir/f-pipe-1.X differ" 1>&2
+ (diff -c f-pipe-1.O $srcdir/f-pipe-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test f-pipe-1(POSIXLY_CORRECT=1) may have failed." 1>&2
+ $echo The command "cmp f-pipe-1.O $srcdir/f-pipe-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s f-pipe-1.E || rm -f f-pipe-1.E
+if test $errors = 0; then
+ $echo Passed all 114 tests. 1>&2
+else
+ $echo Failed $errors tests. 1>&2
+fi
+test $errors = 0 || errors=1
+exit $errors
diff --git a/tests/tee/Makefile.am b/tests/tee/Makefile.am
new file mode 100644
index 0000000..48f3239
--- /dev/null
+++ b/tests/tee/Makefile.am
@@ -0,0 +1,6 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+TESTS = basic dash
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
diff --git a/tests/tee/Makefile.in b/tests/tee/Makefile.in
new file mode 100644
index 0000000..050793d
--- /dev/null
+++ b/tests/tee/Makefile.in
@@ -0,0 +1,716 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/tee
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = basic dash
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/tee/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/tee/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/tee/basic b/tests/tee/basic
new file mode 100755
index 0000000..7765140
--- /dev/null
+++ b/tests/tee/basic
@@ -0,0 +1,50 @@
+#!/bin/sh
+# test for basic tee functionality.
+
+# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ tee --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0" |sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap 'status=$?; (exit $status); exit $status' 1 2 13 15
+
+fail=0
+mkdir -p $tmp && cd $tmp || fail=1
+echo line >sample || fail=1
+nums=`seq 9` || fail=1
+
+if test $fail = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+for n in 0 $nums; do
+ files=`seq $n`
+ rm -f $files
+ tee $files <sample >out || fail=1
+ for f in out $files; do
+ cmp sample $f || fail=1
+ done
+done
+
+(exit $fail); exit $fail
diff --git a/tests/tee/dash b/tests/tee/dash
new file mode 100755
index 0000000..c6b9e81
--- /dev/null
+++ b/tests/tee/dash
@@ -0,0 +1,41 @@
+#!/bin/sh
+# test for "tee -".
+
+# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ tee --version
+fi
+
+pwd=`pwd`
+t0=`echo "$0" |sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap 'status=$?; (exit $status); exit $status' 1 2 13 15
+
+fail=0
+mkdir -p $tmp && cd $tmp || fail=1
+
+if test $fail = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+tee - </dev/null || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/test/1a.X b/tests/test/1a.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/1a.X
diff --git a/tests/test/1b.X b/tests/test/1b.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/1b.X
diff --git a/tests/test/1c.X b/tests/test/1c.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/1c.X
diff --git a/tests/test/1d.X b/tests/test/1d.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/1d.X
diff --git a/tests/test/1e.X b/tests/test/1e.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/1e.X
diff --git a/tests/test/1f.X b/tests/test/1f.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/1f.X
diff --git a/tests/test/1g.X b/tests/test/1g.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/1g.X
diff --git a/tests/test/1h.X b/tests/test/1h.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/1h.X
diff --git a/tests/test/1i.X b/tests/test/1i.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/1i.X
diff --git a/tests/test/1j.X b/tests/test/1j.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/1j.X
diff --git a/tests/test/1k.X b/tests/test/1k.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/1k.X
diff --git a/tests/test/Makefile.am b/tests/test/Makefile.am
new file mode 100644
index 0000000..fe191ef
--- /dev/null
+++ b/tests/test/Makefile.am
@@ -0,0 +1,154 @@
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+##test-files-begin
+x = test
+explicit =
+maint_gen = ne-1.X ne-2.X ne-3.X ne-4.X ne-5.X ne-6.X le-1.X le-2.X le-3.X \
+le-4.X le-5.X ge-1.X ge-2.X ge-3.X ge-4.X ge-5.X N-1b.X P-1b.X NP-1b.X \
+NNP-1b.X N-1c.X P-1c.X NP-1c.X NNP-1c.X N-1d.X P-1d.X NP-1d.X NNP-1d.X N-1e.X \
+P-1e.X NP-1e.X NNP-1e.X N-1f.X P-1f.X NP-1f.X NNP-1f.X N-1g.X P-1g.X NP-1g.X \
+NNP-1g.X N-1h.X P-1h.X NP-1h.X NNP-1h.X N-1i.X P-1i.X NP-1i.X NNP-1i.X N-1j.X \
+P-1j.X NP-1j.X NNP-1j.X N-1k.X P-1k.X NP-1k.X NNP-1k.X N-streq-1.X \
+P-streq-1.X NP-streq-1.X NNP-streq-1.X N-streq-2.X P-streq-2.X NP-streq-2.X \
+NNP-streq-2.X N-streq-3.X P-streq-3.X NP-streq-3.X NNP-streq-3.X N-streq-4.X \
+P-streq-4.X NP-streq-4.X NNP-streq-4.X N-streq-5.X P-streq-5.X NP-streq-5.X \
+NNP-streq-5.X N-streq-6.X N-strne-1.X P-strne-1.X NP-strne-1.X NNP-strne-1.X \
+N-strne-2.X P-strne-2.X NP-strne-2.X NNP-strne-2.X N-strne-3.X P-strne-3.X \
+NP-strne-3.X NNP-strne-3.X N-strne-4.X P-strne-4.X NP-strne-4.X NNP-strne-4.X \
+N-strne-5.X P-strne-5.X NP-strne-5.X NNP-strne-5.X N-strne-6.X N-and-1.X \
+P-and-1.X NP-and-1.X NNP-and-1.X N-and-2.X P-and-2.X NP-and-2.X NNP-and-2.X \
+N-and-3.X P-and-3.X NP-and-3.X NNP-and-3.X N-and-4.X P-and-4.X NP-and-4.X \
+NNP-and-4.X N-or-1.X P-or-1.X NP-or-1.X NNP-or-1.X N-or-2.X P-or-2.X \
+NP-or-2.X NNP-or-2.X N-or-3.X P-or-3.X NP-or-3.X NNP-or-3.X N-or-4.X P-or-4.X \
+NP-or-4.X NNP-or-4.X N-eq-1.X P-eq-1.X NP-eq-1.X NNP-eq-1.X N-eq-2.X P-eq-2.X \
+NP-eq-2.X NNP-eq-2.X N-eq-3.X P-eq-3.X NP-eq-3.X NNP-eq-3.X N-eq-4.X P-eq-4.X \
+NP-eq-4.X NNP-eq-4.X N-eq-5.X P-eq-5.X NP-eq-5.X NNP-eq-5.X N-eq-6.X P-eq-6.X \
+NP-eq-6.X NNP-eq-6.X N-gt-1.X P-gt-1.X NP-gt-1.X NNP-gt-1.X N-gt-2.X P-gt-2.X \
+NP-gt-2.X NNP-gt-2.X N-gt-3.X P-gt-3.X NP-gt-3.X NNP-gt-3.X N-gt-4.X P-gt-4.X \
+NP-gt-4.X NNP-gt-4.X N-gt-5.X P-gt-5.X NP-gt-5.X NNP-gt-5.X N-lt-1.X P-lt-1.X \
+NP-lt-1.X NNP-lt-1.X N-lt-2.X P-lt-2.X NP-lt-2.X NNP-lt-2.X N-lt-3.X P-lt-3.X \
+NP-lt-3.X NNP-lt-3.X N-lt-4.X P-lt-4.X NP-lt-4.X NNP-lt-4.X N-lt-5.X P-lt-5.X \
+NP-lt-5.X NNP-lt-5.X N-t1.X P-t1.X NP-t1.X NNP-t1.X N-t2.X P-t2.X NP-t2.X \
+NNP-t2.X N-paren-1.X N-paren-2.X N-paren-3.X N-paren-4.X N-paren-5.X 1a.X \
+1b.X 1c.X 1d.X 1e.X 1f.X 1g.X 1h.X 1i.X 1j.X 1k.X streq-1.X streq-2.X \
+streq-3.X streq-4.X streq-5.X streq-6.X strne-1.X strne-2.X strne-3.X \
+strne-4.X strne-5.X strne-6.X and-1.X and-2.X and-3.X and-4.X or-1.X or-2.X \
+or-3.X or-4.X eq-1.X eq-2.X eq-3.X eq-4.X eq-5.X eq-6.X gt-1.X gt-2.X gt-3.X \
+gt-4.X gt-5.X lt-1.X lt-2.X lt-3.X lt-4.X lt-5.X inv-1.X t1.X t2.X paren-1.X \
+paren-2.X paren-3.X paren-4.X paren-5.X
+run_gen = ne-1.O ne-1.E ne-2.O ne-2.E ne-3.O ne-3.E ne-4.O ne-4.E ne-5.O \
+ne-5.E ne-6.O ne-6.E le-1.O le-1.E le-2.O le-2.E le-3.O le-3.E le-4.O le-4.E \
+le-5.O le-5.E ge-1.O ge-1.E ge-2.O ge-2.E ge-3.O ge-3.E ge-4.O ge-4.E ge-5.O \
+ge-5.E N-1b.O N-1b.E P-1b.O P-1b.E NP-1b.O NP-1b.E NNP-1b.O NNP-1b.E N-1c.O \
+N-1c.E P-1c.O P-1c.E NP-1c.O NP-1c.E NNP-1c.O NNP-1c.E N-1d.O N-1d.E P-1d.O \
+P-1d.E NP-1d.O NP-1d.E NNP-1d.O NNP-1d.E N-1e.O N-1e.E P-1e.O P-1e.E NP-1e.O \
+NP-1e.E NNP-1e.O NNP-1e.E N-1f.O N-1f.E P-1f.O P-1f.E NP-1f.O NP-1f.E \
+NNP-1f.O NNP-1f.E N-1g.O N-1g.E P-1g.O P-1g.E NP-1g.O NP-1g.E NNP-1g.O \
+NNP-1g.E N-1h.O N-1h.E P-1h.O P-1h.E NP-1h.O NP-1h.E NNP-1h.O NNP-1h.E N-1i.O \
+N-1i.E P-1i.O P-1i.E NP-1i.O NP-1i.E NNP-1i.O NNP-1i.E N-1j.O N-1j.E P-1j.O \
+P-1j.E NP-1j.O NP-1j.E NNP-1j.O NNP-1j.E N-1k.O N-1k.E P-1k.O P-1k.E NP-1k.O \
+NP-1k.E NNP-1k.O NNP-1k.E N-streq-1.O N-streq-1.E P-streq-1.O P-streq-1.E \
+NP-streq-1.O NP-streq-1.E NNP-streq-1.O NNP-streq-1.E N-streq-2.O N-streq-2.E \
+P-streq-2.O P-streq-2.E NP-streq-2.O NP-streq-2.E NNP-streq-2.O NNP-streq-2.E \
+N-streq-3.O N-streq-3.E P-streq-3.O P-streq-3.E NP-streq-3.O NP-streq-3.E \
+NNP-streq-3.O NNP-streq-3.E N-streq-4.O N-streq-4.E P-streq-4.O P-streq-4.E \
+NP-streq-4.O NP-streq-4.E NNP-streq-4.O NNP-streq-4.E N-streq-5.O N-streq-5.E \
+P-streq-5.O P-streq-5.E NP-streq-5.O NP-streq-5.E NNP-streq-5.O NNP-streq-5.E \
+N-streq-6.O N-streq-6.E N-strne-1.O N-strne-1.E P-strne-1.O P-strne-1.E \
+NP-strne-1.O NP-strne-1.E NNP-strne-1.O NNP-strne-1.E N-strne-2.O N-strne-2.E \
+P-strne-2.O P-strne-2.E NP-strne-2.O NP-strne-2.E NNP-strne-2.O NNP-strne-2.E \
+N-strne-3.O N-strne-3.E P-strne-3.O P-strne-3.E NP-strne-3.O NP-strne-3.E \
+NNP-strne-3.O NNP-strne-3.E N-strne-4.O N-strne-4.E P-strne-4.O P-strne-4.E \
+NP-strne-4.O NP-strne-4.E NNP-strne-4.O NNP-strne-4.E N-strne-5.O N-strne-5.E \
+P-strne-5.O P-strne-5.E NP-strne-5.O NP-strne-5.E NNP-strne-5.O NNP-strne-5.E \
+N-strne-6.O N-strne-6.E N-and-1.O N-and-1.E P-and-1.O P-and-1.E NP-and-1.O \
+NP-and-1.E NNP-and-1.O NNP-and-1.E N-and-2.O N-and-2.E P-and-2.O P-and-2.E \
+NP-and-2.O NP-and-2.E NNP-and-2.O NNP-and-2.E N-and-3.O N-and-3.E P-and-3.O \
+P-and-3.E NP-and-3.O NP-and-3.E NNP-and-3.O NNP-and-3.E N-and-4.O N-and-4.E \
+P-and-4.O P-and-4.E NP-and-4.O NP-and-4.E NNP-and-4.O NNP-and-4.E N-or-1.O \
+N-or-1.E P-or-1.O P-or-1.E NP-or-1.O NP-or-1.E NNP-or-1.O NNP-or-1.E N-or-2.O \
+N-or-2.E P-or-2.O P-or-2.E NP-or-2.O NP-or-2.E NNP-or-2.O NNP-or-2.E N-or-3.O \
+N-or-3.E P-or-3.O P-or-3.E NP-or-3.O NP-or-3.E NNP-or-3.O NNP-or-3.E N-or-4.O \
+N-or-4.E P-or-4.O P-or-4.E NP-or-4.O NP-or-4.E NNP-or-4.O NNP-or-4.E N-eq-1.O \
+N-eq-1.E P-eq-1.O P-eq-1.E NP-eq-1.O NP-eq-1.E NNP-eq-1.O NNP-eq-1.E N-eq-2.O \
+N-eq-2.E P-eq-2.O P-eq-2.E NP-eq-2.O NP-eq-2.E NNP-eq-2.O NNP-eq-2.E N-eq-3.O \
+N-eq-3.E P-eq-3.O P-eq-3.E NP-eq-3.O NP-eq-3.E NNP-eq-3.O NNP-eq-3.E N-eq-4.O \
+N-eq-4.E P-eq-4.O P-eq-4.E NP-eq-4.O NP-eq-4.E NNP-eq-4.O NNP-eq-4.E N-eq-5.O \
+N-eq-5.E P-eq-5.O P-eq-5.E NP-eq-5.O NP-eq-5.E NNP-eq-5.O NNP-eq-5.E N-eq-6.O \
+N-eq-6.E P-eq-6.O P-eq-6.E NP-eq-6.O NP-eq-6.E NNP-eq-6.O NNP-eq-6.E N-gt-1.O \
+N-gt-1.E P-gt-1.O P-gt-1.E NP-gt-1.O NP-gt-1.E NNP-gt-1.O NNP-gt-1.E N-gt-2.O \
+N-gt-2.E P-gt-2.O P-gt-2.E NP-gt-2.O NP-gt-2.E NNP-gt-2.O NNP-gt-2.E N-gt-3.O \
+N-gt-3.E P-gt-3.O P-gt-3.E NP-gt-3.O NP-gt-3.E NNP-gt-3.O NNP-gt-3.E N-gt-4.O \
+N-gt-4.E P-gt-4.O P-gt-4.E NP-gt-4.O NP-gt-4.E NNP-gt-4.O NNP-gt-4.E N-gt-5.O \
+N-gt-5.E P-gt-5.O P-gt-5.E NP-gt-5.O NP-gt-5.E NNP-gt-5.O NNP-gt-5.E N-lt-1.O \
+N-lt-1.E P-lt-1.O P-lt-1.E NP-lt-1.O NP-lt-1.E NNP-lt-1.O NNP-lt-1.E N-lt-2.O \
+N-lt-2.E P-lt-2.O P-lt-2.E NP-lt-2.O NP-lt-2.E NNP-lt-2.O NNP-lt-2.E N-lt-3.O \
+N-lt-3.E P-lt-3.O P-lt-3.E NP-lt-3.O NP-lt-3.E NNP-lt-3.O NNP-lt-3.E N-lt-4.O \
+N-lt-4.E P-lt-4.O P-lt-4.E NP-lt-4.O NP-lt-4.E NNP-lt-4.O NNP-lt-4.E N-lt-5.O \
+N-lt-5.E P-lt-5.O P-lt-5.E NP-lt-5.O NP-lt-5.E NNP-lt-5.O NNP-lt-5.E N-t1.O \
+N-t1.E P-t1.O P-t1.E NP-t1.O NP-t1.E NNP-t1.O NNP-t1.E N-t2.O N-t2.E P-t2.O \
+P-t2.E NP-t2.O NP-t2.E NNP-t2.O NNP-t2.E N-paren-1.O N-paren-1.E N-paren-2.O \
+N-paren-2.E N-paren-3.O N-paren-3.E N-paren-4.O N-paren-4.E N-paren-5.O \
+N-paren-5.E 1a.O 1a.E 1b.O 1b.E 1c.O 1c.E 1d.O 1d.E 1e.O 1e.E 1f.O 1f.E 1g.O \
+1g.E 1h.O 1h.E 1i.O 1i.E 1j.O 1j.E 1k.O 1k.E streq-1.O streq-1.E streq-2.O \
+streq-2.E streq-3.O streq-3.E streq-4.O streq-4.E streq-5.O streq-5.E \
+streq-6.O streq-6.E strne-1.O strne-1.E strne-2.O strne-2.E strne-3.O \
+strne-3.E strne-4.O strne-4.E strne-5.O strne-5.E strne-6.O strne-6.E and-1.O \
+and-1.E and-2.O and-2.E and-3.O and-3.E and-4.O and-4.E or-1.O or-1.E or-2.O \
+or-2.E or-3.O or-3.E or-4.O or-4.E eq-1.O eq-1.E eq-2.O eq-2.E eq-3.O eq-3.E \
+eq-4.O eq-4.E eq-5.O eq-5.E eq-6.O eq-6.E gt-1.O gt-1.E gt-2.O gt-2.E gt-3.O \
+gt-3.E gt-4.O gt-4.E gt-5.O gt-5.E lt-1.O lt-1.E lt-2.O lt-2.E lt-3.O lt-3.E \
+lt-4.O lt-4.E lt-5.O lt-5.E inv-1.O inv-1.E t1.O t1.E t2.O t2.E paren-1.O \
+paren-1.E paren-2.O paren-2.E paren-3.O paren-3.E paren-4.O paren-4.E \
+paren-5.O paren-5.E
+##test-files-end
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+
+TESTS = $x-tests
+
+mk_script = $(srcdir)/../mk-script
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
diff --git a/tests/test/Makefile.in b/tests/test/Makefile.in
new file mode 100644
index 0000000..60472b0
--- /dev/null
+++ b/tests/test/Makefile.in
@@ -0,0 +1,864 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/test
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SCRIPTS = $(noinst_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+x = test
+explicit =
+maint_gen = ne-1.X ne-2.X ne-3.X ne-4.X ne-5.X ne-6.X le-1.X le-2.X le-3.X \
+le-4.X le-5.X ge-1.X ge-2.X ge-3.X ge-4.X ge-5.X N-1b.X P-1b.X NP-1b.X \
+NNP-1b.X N-1c.X P-1c.X NP-1c.X NNP-1c.X N-1d.X P-1d.X NP-1d.X NNP-1d.X N-1e.X \
+P-1e.X NP-1e.X NNP-1e.X N-1f.X P-1f.X NP-1f.X NNP-1f.X N-1g.X P-1g.X NP-1g.X \
+NNP-1g.X N-1h.X P-1h.X NP-1h.X NNP-1h.X N-1i.X P-1i.X NP-1i.X NNP-1i.X N-1j.X \
+P-1j.X NP-1j.X NNP-1j.X N-1k.X P-1k.X NP-1k.X NNP-1k.X N-streq-1.X \
+P-streq-1.X NP-streq-1.X NNP-streq-1.X N-streq-2.X P-streq-2.X NP-streq-2.X \
+NNP-streq-2.X N-streq-3.X P-streq-3.X NP-streq-3.X NNP-streq-3.X N-streq-4.X \
+P-streq-4.X NP-streq-4.X NNP-streq-4.X N-streq-5.X P-streq-5.X NP-streq-5.X \
+NNP-streq-5.X N-streq-6.X N-strne-1.X P-strne-1.X NP-strne-1.X NNP-strne-1.X \
+N-strne-2.X P-strne-2.X NP-strne-2.X NNP-strne-2.X N-strne-3.X P-strne-3.X \
+NP-strne-3.X NNP-strne-3.X N-strne-4.X P-strne-4.X NP-strne-4.X NNP-strne-4.X \
+N-strne-5.X P-strne-5.X NP-strne-5.X NNP-strne-5.X N-strne-6.X N-and-1.X \
+P-and-1.X NP-and-1.X NNP-and-1.X N-and-2.X P-and-2.X NP-and-2.X NNP-and-2.X \
+N-and-3.X P-and-3.X NP-and-3.X NNP-and-3.X N-and-4.X P-and-4.X NP-and-4.X \
+NNP-and-4.X N-or-1.X P-or-1.X NP-or-1.X NNP-or-1.X N-or-2.X P-or-2.X \
+NP-or-2.X NNP-or-2.X N-or-3.X P-or-3.X NP-or-3.X NNP-or-3.X N-or-4.X P-or-4.X \
+NP-or-4.X NNP-or-4.X N-eq-1.X P-eq-1.X NP-eq-1.X NNP-eq-1.X N-eq-2.X P-eq-2.X \
+NP-eq-2.X NNP-eq-2.X N-eq-3.X P-eq-3.X NP-eq-3.X NNP-eq-3.X N-eq-4.X P-eq-4.X \
+NP-eq-4.X NNP-eq-4.X N-eq-5.X P-eq-5.X NP-eq-5.X NNP-eq-5.X N-eq-6.X P-eq-6.X \
+NP-eq-6.X NNP-eq-6.X N-gt-1.X P-gt-1.X NP-gt-1.X NNP-gt-1.X N-gt-2.X P-gt-2.X \
+NP-gt-2.X NNP-gt-2.X N-gt-3.X P-gt-3.X NP-gt-3.X NNP-gt-3.X N-gt-4.X P-gt-4.X \
+NP-gt-4.X NNP-gt-4.X N-gt-5.X P-gt-5.X NP-gt-5.X NNP-gt-5.X N-lt-1.X P-lt-1.X \
+NP-lt-1.X NNP-lt-1.X N-lt-2.X P-lt-2.X NP-lt-2.X NNP-lt-2.X N-lt-3.X P-lt-3.X \
+NP-lt-3.X NNP-lt-3.X N-lt-4.X P-lt-4.X NP-lt-4.X NNP-lt-4.X N-lt-5.X P-lt-5.X \
+NP-lt-5.X NNP-lt-5.X N-t1.X P-t1.X NP-t1.X NNP-t1.X N-t2.X P-t2.X NP-t2.X \
+NNP-t2.X N-paren-1.X N-paren-2.X N-paren-3.X N-paren-4.X N-paren-5.X 1a.X \
+1b.X 1c.X 1d.X 1e.X 1f.X 1g.X 1h.X 1i.X 1j.X 1k.X streq-1.X streq-2.X \
+streq-3.X streq-4.X streq-5.X streq-6.X strne-1.X strne-2.X strne-3.X \
+strne-4.X strne-5.X strne-6.X and-1.X and-2.X and-3.X and-4.X or-1.X or-2.X \
+or-3.X or-4.X eq-1.X eq-2.X eq-3.X eq-4.X eq-5.X eq-6.X gt-1.X gt-2.X gt-3.X \
+gt-4.X gt-5.X lt-1.X lt-2.X lt-3.X lt-4.X lt-5.X inv-1.X t1.X t2.X paren-1.X \
+paren-2.X paren-3.X paren-4.X paren-5.X
+
+run_gen = ne-1.O ne-1.E ne-2.O ne-2.E ne-3.O ne-3.E ne-4.O ne-4.E ne-5.O \
+ne-5.E ne-6.O ne-6.E le-1.O le-1.E le-2.O le-2.E le-3.O le-3.E le-4.O le-4.E \
+le-5.O le-5.E ge-1.O ge-1.E ge-2.O ge-2.E ge-3.O ge-3.E ge-4.O ge-4.E ge-5.O \
+ge-5.E N-1b.O N-1b.E P-1b.O P-1b.E NP-1b.O NP-1b.E NNP-1b.O NNP-1b.E N-1c.O \
+N-1c.E P-1c.O P-1c.E NP-1c.O NP-1c.E NNP-1c.O NNP-1c.E N-1d.O N-1d.E P-1d.O \
+P-1d.E NP-1d.O NP-1d.E NNP-1d.O NNP-1d.E N-1e.O N-1e.E P-1e.O P-1e.E NP-1e.O \
+NP-1e.E NNP-1e.O NNP-1e.E N-1f.O N-1f.E P-1f.O P-1f.E NP-1f.O NP-1f.E \
+NNP-1f.O NNP-1f.E N-1g.O N-1g.E P-1g.O P-1g.E NP-1g.O NP-1g.E NNP-1g.O \
+NNP-1g.E N-1h.O N-1h.E P-1h.O P-1h.E NP-1h.O NP-1h.E NNP-1h.O NNP-1h.E N-1i.O \
+N-1i.E P-1i.O P-1i.E NP-1i.O NP-1i.E NNP-1i.O NNP-1i.E N-1j.O N-1j.E P-1j.O \
+P-1j.E NP-1j.O NP-1j.E NNP-1j.O NNP-1j.E N-1k.O N-1k.E P-1k.O P-1k.E NP-1k.O \
+NP-1k.E NNP-1k.O NNP-1k.E N-streq-1.O N-streq-1.E P-streq-1.O P-streq-1.E \
+NP-streq-1.O NP-streq-1.E NNP-streq-1.O NNP-streq-1.E N-streq-2.O N-streq-2.E \
+P-streq-2.O P-streq-2.E NP-streq-2.O NP-streq-2.E NNP-streq-2.O NNP-streq-2.E \
+N-streq-3.O N-streq-3.E P-streq-3.O P-streq-3.E NP-streq-3.O NP-streq-3.E \
+NNP-streq-3.O NNP-streq-3.E N-streq-4.O N-streq-4.E P-streq-4.O P-streq-4.E \
+NP-streq-4.O NP-streq-4.E NNP-streq-4.O NNP-streq-4.E N-streq-5.O N-streq-5.E \
+P-streq-5.O P-streq-5.E NP-streq-5.O NP-streq-5.E NNP-streq-5.O NNP-streq-5.E \
+N-streq-6.O N-streq-6.E N-strne-1.O N-strne-1.E P-strne-1.O P-strne-1.E \
+NP-strne-1.O NP-strne-1.E NNP-strne-1.O NNP-strne-1.E N-strne-2.O N-strne-2.E \
+P-strne-2.O P-strne-2.E NP-strne-2.O NP-strne-2.E NNP-strne-2.O NNP-strne-2.E \
+N-strne-3.O N-strne-3.E P-strne-3.O P-strne-3.E NP-strne-3.O NP-strne-3.E \
+NNP-strne-3.O NNP-strne-3.E N-strne-4.O N-strne-4.E P-strne-4.O P-strne-4.E \
+NP-strne-4.O NP-strne-4.E NNP-strne-4.O NNP-strne-4.E N-strne-5.O N-strne-5.E \
+P-strne-5.O P-strne-5.E NP-strne-5.O NP-strne-5.E NNP-strne-5.O NNP-strne-5.E \
+N-strne-6.O N-strne-6.E N-and-1.O N-and-1.E P-and-1.O P-and-1.E NP-and-1.O \
+NP-and-1.E NNP-and-1.O NNP-and-1.E N-and-2.O N-and-2.E P-and-2.O P-and-2.E \
+NP-and-2.O NP-and-2.E NNP-and-2.O NNP-and-2.E N-and-3.O N-and-3.E P-and-3.O \
+P-and-3.E NP-and-3.O NP-and-3.E NNP-and-3.O NNP-and-3.E N-and-4.O N-and-4.E \
+P-and-4.O P-and-4.E NP-and-4.O NP-and-4.E NNP-and-4.O NNP-and-4.E N-or-1.O \
+N-or-1.E P-or-1.O P-or-1.E NP-or-1.O NP-or-1.E NNP-or-1.O NNP-or-1.E N-or-2.O \
+N-or-2.E P-or-2.O P-or-2.E NP-or-2.O NP-or-2.E NNP-or-2.O NNP-or-2.E N-or-3.O \
+N-or-3.E P-or-3.O P-or-3.E NP-or-3.O NP-or-3.E NNP-or-3.O NNP-or-3.E N-or-4.O \
+N-or-4.E P-or-4.O P-or-4.E NP-or-4.O NP-or-4.E NNP-or-4.O NNP-or-4.E N-eq-1.O \
+N-eq-1.E P-eq-1.O P-eq-1.E NP-eq-1.O NP-eq-1.E NNP-eq-1.O NNP-eq-1.E N-eq-2.O \
+N-eq-2.E P-eq-2.O P-eq-2.E NP-eq-2.O NP-eq-2.E NNP-eq-2.O NNP-eq-2.E N-eq-3.O \
+N-eq-3.E P-eq-3.O P-eq-3.E NP-eq-3.O NP-eq-3.E NNP-eq-3.O NNP-eq-3.E N-eq-4.O \
+N-eq-4.E P-eq-4.O P-eq-4.E NP-eq-4.O NP-eq-4.E NNP-eq-4.O NNP-eq-4.E N-eq-5.O \
+N-eq-5.E P-eq-5.O P-eq-5.E NP-eq-5.O NP-eq-5.E NNP-eq-5.O NNP-eq-5.E N-eq-6.O \
+N-eq-6.E P-eq-6.O P-eq-6.E NP-eq-6.O NP-eq-6.E NNP-eq-6.O NNP-eq-6.E N-gt-1.O \
+N-gt-1.E P-gt-1.O P-gt-1.E NP-gt-1.O NP-gt-1.E NNP-gt-1.O NNP-gt-1.E N-gt-2.O \
+N-gt-2.E P-gt-2.O P-gt-2.E NP-gt-2.O NP-gt-2.E NNP-gt-2.O NNP-gt-2.E N-gt-3.O \
+N-gt-3.E P-gt-3.O P-gt-3.E NP-gt-3.O NP-gt-3.E NNP-gt-3.O NNP-gt-3.E N-gt-4.O \
+N-gt-4.E P-gt-4.O P-gt-4.E NP-gt-4.O NP-gt-4.E NNP-gt-4.O NNP-gt-4.E N-gt-5.O \
+N-gt-5.E P-gt-5.O P-gt-5.E NP-gt-5.O NP-gt-5.E NNP-gt-5.O NNP-gt-5.E N-lt-1.O \
+N-lt-1.E P-lt-1.O P-lt-1.E NP-lt-1.O NP-lt-1.E NNP-lt-1.O NNP-lt-1.E N-lt-2.O \
+N-lt-2.E P-lt-2.O P-lt-2.E NP-lt-2.O NP-lt-2.E NNP-lt-2.O NNP-lt-2.E N-lt-3.O \
+N-lt-3.E P-lt-3.O P-lt-3.E NP-lt-3.O NP-lt-3.E NNP-lt-3.O NNP-lt-3.E N-lt-4.O \
+N-lt-4.E P-lt-4.O P-lt-4.E NP-lt-4.O NP-lt-4.E NNP-lt-4.O NNP-lt-4.E N-lt-5.O \
+N-lt-5.E P-lt-5.O P-lt-5.E NP-lt-5.O NP-lt-5.E NNP-lt-5.O NNP-lt-5.E N-t1.O \
+N-t1.E P-t1.O P-t1.E NP-t1.O NP-t1.E NNP-t1.O NNP-t1.E N-t2.O N-t2.E P-t2.O \
+P-t2.E NP-t2.O NP-t2.E NNP-t2.O NNP-t2.E N-paren-1.O N-paren-1.E N-paren-2.O \
+N-paren-2.E N-paren-3.O N-paren-3.E N-paren-4.O N-paren-4.E N-paren-5.O \
+N-paren-5.E 1a.O 1a.E 1b.O 1b.E 1c.O 1c.E 1d.O 1d.E 1e.O 1e.E 1f.O 1f.E 1g.O \
+1g.E 1h.O 1h.E 1i.O 1i.E 1j.O 1j.E 1k.O 1k.E streq-1.O streq-1.E streq-2.O \
+streq-2.E streq-3.O streq-3.E streq-4.O streq-4.E streq-5.O streq-5.E \
+streq-6.O streq-6.E strne-1.O strne-1.E strne-2.O strne-2.E strne-3.O \
+strne-3.E strne-4.O strne-4.E strne-5.O strne-5.E strne-6.O strne-6.E and-1.O \
+and-1.E and-2.O and-2.E and-3.O and-3.E and-4.O and-4.E or-1.O or-1.E or-2.O \
+or-2.E or-3.O or-3.E or-4.O or-4.E eq-1.O eq-1.E eq-2.O eq-2.E eq-3.O eq-3.E \
+eq-4.O eq-4.E eq-5.O eq-5.E eq-6.O eq-6.E gt-1.O gt-1.E gt-2.O gt-2.E gt-3.O \
+gt-3.E gt-4.O gt-4.E gt-5.O gt-5.E lt-1.O lt-1.E lt-2.O lt-2.E lt-3.O lt-3.E \
+lt-4.O lt-4.E lt-5.O lt-5.E inv-1.O inv-1.E t1.O t1.E t2.O t2.E paren-1.O \
+paren-1.E paren-2.O paren-2.E paren-3.O paren-3.E paren-4.O paren-4.E \
+paren-5.O paren-5.E
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+TESTS = $x-tests
+mk_script = $(srcdir)/../mk-script
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/test/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/test/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(SCRIPTS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/test/N-1b.X b/tests/test/N-1b.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-1b.X
diff --git a/tests/test/N-1c.X b/tests/test/N-1c.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-1c.X
diff --git a/tests/test/N-1d.X b/tests/test/N-1d.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-1d.X
diff --git a/tests/test/N-1e.X b/tests/test/N-1e.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-1e.X
diff --git a/tests/test/N-1f.X b/tests/test/N-1f.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-1f.X
diff --git a/tests/test/N-1g.X b/tests/test/N-1g.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-1g.X
diff --git a/tests/test/N-1h.X b/tests/test/N-1h.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-1h.X
diff --git a/tests/test/N-1i.X b/tests/test/N-1i.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-1i.X
diff --git a/tests/test/N-1j.X b/tests/test/N-1j.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-1j.X
diff --git a/tests/test/N-1k.X b/tests/test/N-1k.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-1k.X
diff --git a/tests/test/N-and-1.X b/tests/test/N-and-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-and-1.X
diff --git a/tests/test/N-and-2.X b/tests/test/N-and-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-and-2.X
diff --git a/tests/test/N-and-3.X b/tests/test/N-and-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-and-3.X
diff --git a/tests/test/N-and-4.X b/tests/test/N-and-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-and-4.X
diff --git a/tests/test/N-eq-1.X b/tests/test/N-eq-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-eq-1.X
diff --git a/tests/test/N-eq-2.X b/tests/test/N-eq-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-eq-2.X
diff --git a/tests/test/N-eq-3.X b/tests/test/N-eq-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-eq-3.X
diff --git a/tests/test/N-eq-4.X b/tests/test/N-eq-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-eq-4.X
diff --git a/tests/test/N-eq-5.X b/tests/test/N-eq-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-eq-5.X
diff --git a/tests/test/N-eq-6.X b/tests/test/N-eq-6.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-eq-6.X
diff --git a/tests/test/N-gt-1.X b/tests/test/N-gt-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-gt-1.X
diff --git a/tests/test/N-gt-2.X b/tests/test/N-gt-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-gt-2.X
diff --git a/tests/test/N-gt-3.X b/tests/test/N-gt-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-gt-3.X
diff --git a/tests/test/N-gt-4.X b/tests/test/N-gt-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-gt-4.X
diff --git a/tests/test/N-gt-5.X b/tests/test/N-gt-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-gt-5.X
diff --git a/tests/test/N-lt-1.X b/tests/test/N-lt-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-lt-1.X
diff --git a/tests/test/N-lt-2.X b/tests/test/N-lt-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-lt-2.X
diff --git a/tests/test/N-lt-3.X b/tests/test/N-lt-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-lt-3.X
diff --git a/tests/test/N-lt-4.X b/tests/test/N-lt-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-lt-4.X
diff --git a/tests/test/N-lt-5.X b/tests/test/N-lt-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-lt-5.X
diff --git a/tests/test/N-or-1.X b/tests/test/N-or-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-or-1.X
diff --git a/tests/test/N-or-2.X b/tests/test/N-or-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-or-2.X
diff --git a/tests/test/N-or-3.X b/tests/test/N-or-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-or-3.X
diff --git a/tests/test/N-or-4.X b/tests/test/N-or-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-or-4.X
diff --git a/tests/test/N-paren-1.X b/tests/test/N-paren-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-paren-1.X
diff --git a/tests/test/N-paren-2.X b/tests/test/N-paren-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-paren-2.X
diff --git a/tests/test/N-paren-3.X b/tests/test/N-paren-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-paren-3.X
diff --git a/tests/test/N-paren-4.X b/tests/test/N-paren-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-paren-4.X
diff --git a/tests/test/N-paren-5.X b/tests/test/N-paren-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-paren-5.X
diff --git a/tests/test/N-streq-1.X b/tests/test/N-streq-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-streq-1.X
diff --git a/tests/test/N-streq-2.X b/tests/test/N-streq-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-streq-2.X
diff --git a/tests/test/N-streq-3.X b/tests/test/N-streq-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-streq-3.X
diff --git a/tests/test/N-streq-4.X b/tests/test/N-streq-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-streq-4.X
diff --git a/tests/test/N-streq-5.X b/tests/test/N-streq-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-streq-5.X
diff --git a/tests/test/N-streq-6.X b/tests/test/N-streq-6.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-streq-6.X
diff --git a/tests/test/N-strne-1.X b/tests/test/N-strne-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-strne-1.X
diff --git a/tests/test/N-strne-2.X b/tests/test/N-strne-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-strne-2.X
diff --git a/tests/test/N-strne-3.X b/tests/test/N-strne-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-strne-3.X
diff --git a/tests/test/N-strne-4.X b/tests/test/N-strne-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-strne-4.X
diff --git a/tests/test/N-strne-5.X b/tests/test/N-strne-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-strne-5.X
diff --git a/tests/test/N-strne-6.X b/tests/test/N-strne-6.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-strne-6.X
diff --git a/tests/test/N-t1.X b/tests/test/N-t1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-t1.X
diff --git a/tests/test/N-t2.X b/tests/test/N-t2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/N-t2.X
diff --git a/tests/test/NNP-1b.X b/tests/test/NNP-1b.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-1b.X
diff --git a/tests/test/NNP-1c.X b/tests/test/NNP-1c.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-1c.X
diff --git a/tests/test/NNP-1d.X b/tests/test/NNP-1d.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-1d.X
diff --git a/tests/test/NNP-1e.X b/tests/test/NNP-1e.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-1e.X
diff --git a/tests/test/NNP-1f.X b/tests/test/NNP-1f.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-1f.X
diff --git a/tests/test/NNP-1g.X b/tests/test/NNP-1g.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-1g.X
diff --git a/tests/test/NNP-1h.X b/tests/test/NNP-1h.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-1h.X
diff --git a/tests/test/NNP-1i.X b/tests/test/NNP-1i.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-1i.X
diff --git a/tests/test/NNP-1j.X b/tests/test/NNP-1j.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-1j.X
diff --git a/tests/test/NNP-1k.X b/tests/test/NNP-1k.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-1k.X
diff --git a/tests/test/NNP-and-1.X b/tests/test/NNP-and-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-and-1.X
diff --git a/tests/test/NNP-and-2.X b/tests/test/NNP-and-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-and-2.X
diff --git a/tests/test/NNP-and-3.X b/tests/test/NNP-and-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-and-3.X
diff --git a/tests/test/NNP-and-4.X b/tests/test/NNP-and-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-and-4.X
diff --git a/tests/test/NNP-eq-1.X b/tests/test/NNP-eq-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-eq-1.X
diff --git a/tests/test/NNP-eq-2.X b/tests/test/NNP-eq-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-eq-2.X
diff --git a/tests/test/NNP-eq-3.X b/tests/test/NNP-eq-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-eq-3.X
diff --git a/tests/test/NNP-eq-4.X b/tests/test/NNP-eq-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-eq-4.X
diff --git a/tests/test/NNP-eq-5.X b/tests/test/NNP-eq-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-eq-5.X
diff --git a/tests/test/NNP-eq-6.X b/tests/test/NNP-eq-6.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-eq-6.X
diff --git a/tests/test/NNP-gt-1.X b/tests/test/NNP-gt-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-gt-1.X
diff --git a/tests/test/NNP-gt-2.X b/tests/test/NNP-gt-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-gt-2.X
diff --git a/tests/test/NNP-gt-3.X b/tests/test/NNP-gt-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-gt-3.X
diff --git a/tests/test/NNP-gt-4.X b/tests/test/NNP-gt-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-gt-4.X
diff --git a/tests/test/NNP-gt-5.X b/tests/test/NNP-gt-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-gt-5.X
diff --git a/tests/test/NNP-lt-1.X b/tests/test/NNP-lt-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-lt-1.X
diff --git a/tests/test/NNP-lt-2.X b/tests/test/NNP-lt-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-lt-2.X
diff --git a/tests/test/NNP-lt-3.X b/tests/test/NNP-lt-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-lt-3.X
diff --git a/tests/test/NNP-lt-4.X b/tests/test/NNP-lt-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-lt-4.X
diff --git a/tests/test/NNP-lt-5.X b/tests/test/NNP-lt-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-lt-5.X
diff --git a/tests/test/NNP-or-1.X b/tests/test/NNP-or-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-or-1.X
diff --git a/tests/test/NNP-or-2.X b/tests/test/NNP-or-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-or-2.X
diff --git a/tests/test/NNP-or-3.X b/tests/test/NNP-or-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-or-3.X
diff --git a/tests/test/NNP-or-4.X b/tests/test/NNP-or-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-or-4.X
diff --git a/tests/test/NNP-streq-1.X b/tests/test/NNP-streq-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-streq-1.X
diff --git a/tests/test/NNP-streq-2.X b/tests/test/NNP-streq-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-streq-2.X
diff --git a/tests/test/NNP-streq-3.X b/tests/test/NNP-streq-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-streq-3.X
diff --git a/tests/test/NNP-streq-4.X b/tests/test/NNP-streq-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-streq-4.X
diff --git a/tests/test/NNP-streq-5.X b/tests/test/NNP-streq-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-streq-5.X
diff --git a/tests/test/NNP-strne-1.X b/tests/test/NNP-strne-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-strne-1.X
diff --git a/tests/test/NNP-strne-2.X b/tests/test/NNP-strne-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-strne-2.X
diff --git a/tests/test/NNP-strne-3.X b/tests/test/NNP-strne-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-strne-3.X
diff --git a/tests/test/NNP-strne-4.X b/tests/test/NNP-strne-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-strne-4.X
diff --git a/tests/test/NNP-strne-5.X b/tests/test/NNP-strne-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-strne-5.X
diff --git a/tests/test/NNP-t1.X b/tests/test/NNP-t1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-t1.X
diff --git a/tests/test/NNP-t2.X b/tests/test/NNP-t2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NNP-t2.X
diff --git a/tests/test/NP-1b.X b/tests/test/NP-1b.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-1b.X
diff --git a/tests/test/NP-1c.X b/tests/test/NP-1c.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-1c.X
diff --git a/tests/test/NP-1d.X b/tests/test/NP-1d.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-1d.X
diff --git a/tests/test/NP-1e.X b/tests/test/NP-1e.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-1e.X
diff --git a/tests/test/NP-1f.X b/tests/test/NP-1f.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-1f.X
diff --git a/tests/test/NP-1g.X b/tests/test/NP-1g.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-1g.X
diff --git a/tests/test/NP-1h.X b/tests/test/NP-1h.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-1h.X
diff --git a/tests/test/NP-1i.X b/tests/test/NP-1i.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-1i.X
diff --git a/tests/test/NP-1j.X b/tests/test/NP-1j.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-1j.X
diff --git a/tests/test/NP-1k.X b/tests/test/NP-1k.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-1k.X
diff --git a/tests/test/NP-and-1.X b/tests/test/NP-and-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-and-1.X
diff --git a/tests/test/NP-and-2.X b/tests/test/NP-and-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-and-2.X
diff --git a/tests/test/NP-and-3.X b/tests/test/NP-and-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-and-3.X
diff --git a/tests/test/NP-and-4.X b/tests/test/NP-and-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-and-4.X
diff --git a/tests/test/NP-eq-1.X b/tests/test/NP-eq-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-eq-1.X
diff --git a/tests/test/NP-eq-2.X b/tests/test/NP-eq-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-eq-2.X
diff --git a/tests/test/NP-eq-3.X b/tests/test/NP-eq-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-eq-3.X
diff --git a/tests/test/NP-eq-4.X b/tests/test/NP-eq-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-eq-4.X
diff --git a/tests/test/NP-eq-5.X b/tests/test/NP-eq-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-eq-5.X
diff --git a/tests/test/NP-eq-6.X b/tests/test/NP-eq-6.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-eq-6.X
diff --git a/tests/test/NP-gt-1.X b/tests/test/NP-gt-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-gt-1.X
diff --git a/tests/test/NP-gt-2.X b/tests/test/NP-gt-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-gt-2.X
diff --git a/tests/test/NP-gt-3.X b/tests/test/NP-gt-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-gt-3.X
diff --git a/tests/test/NP-gt-4.X b/tests/test/NP-gt-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-gt-4.X
diff --git a/tests/test/NP-gt-5.X b/tests/test/NP-gt-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-gt-5.X
diff --git a/tests/test/NP-lt-1.X b/tests/test/NP-lt-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-lt-1.X
diff --git a/tests/test/NP-lt-2.X b/tests/test/NP-lt-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-lt-2.X
diff --git a/tests/test/NP-lt-3.X b/tests/test/NP-lt-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-lt-3.X
diff --git a/tests/test/NP-lt-4.X b/tests/test/NP-lt-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-lt-4.X
diff --git a/tests/test/NP-lt-5.X b/tests/test/NP-lt-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-lt-5.X
diff --git a/tests/test/NP-or-1.X b/tests/test/NP-or-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-or-1.X
diff --git a/tests/test/NP-or-2.X b/tests/test/NP-or-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-or-2.X
diff --git a/tests/test/NP-or-3.X b/tests/test/NP-or-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-or-3.X
diff --git a/tests/test/NP-or-4.X b/tests/test/NP-or-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-or-4.X
diff --git a/tests/test/NP-streq-1.X b/tests/test/NP-streq-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-streq-1.X
diff --git a/tests/test/NP-streq-2.X b/tests/test/NP-streq-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-streq-2.X
diff --git a/tests/test/NP-streq-3.X b/tests/test/NP-streq-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-streq-3.X
diff --git a/tests/test/NP-streq-4.X b/tests/test/NP-streq-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-streq-4.X
diff --git a/tests/test/NP-streq-5.X b/tests/test/NP-streq-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-streq-5.X
diff --git a/tests/test/NP-strne-1.X b/tests/test/NP-strne-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-strne-1.X
diff --git a/tests/test/NP-strne-2.X b/tests/test/NP-strne-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-strne-2.X
diff --git a/tests/test/NP-strne-3.X b/tests/test/NP-strne-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-strne-3.X
diff --git a/tests/test/NP-strne-4.X b/tests/test/NP-strne-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-strne-4.X
diff --git a/tests/test/NP-strne-5.X b/tests/test/NP-strne-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-strne-5.X
diff --git a/tests/test/NP-t1.X b/tests/test/NP-t1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-t1.X
diff --git a/tests/test/NP-t2.X b/tests/test/NP-t2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/NP-t2.X
diff --git a/tests/test/P-1b.X b/tests/test/P-1b.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-1b.X
diff --git a/tests/test/P-1c.X b/tests/test/P-1c.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-1c.X
diff --git a/tests/test/P-1d.X b/tests/test/P-1d.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-1d.X
diff --git a/tests/test/P-1e.X b/tests/test/P-1e.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-1e.X
diff --git a/tests/test/P-1f.X b/tests/test/P-1f.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-1f.X
diff --git a/tests/test/P-1g.X b/tests/test/P-1g.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-1g.X
diff --git a/tests/test/P-1h.X b/tests/test/P-1h.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-1h.X
diff --git a/tests/test/P-1i.X b/tests/test/P-1i.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-1i.X
diff --git a/tests/test/P-1j.X b/tests/test/P-1j.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-1j.X
diff --git a/tests/test/P-1k.X b/tests/test/P-1k.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-1k.X
diff --git a/tests/test/P-and-1.X b/tests/test/P-and-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-and-1.X
diff --git a/tests/test/P-and-2.X b/tests/test/P-and-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-and-2.X
diff --git a/tests/test/P-and-3.X b/tests/test/P-and-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-and-3.X
diff --git a/tests/test/P-and-4.X b/tests/test/P-and-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-and-4.X
diff --git a/tests/test/P-eq-1.X b/tests/test/P-eq-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-eq-1.X
diff --git a/tests/test/P-eq-2.X b/tests/test/P-eq-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-eq-2.X
diff --git a/tests/test/P-eq-3.X b/tests/test/P-eq-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-eq-3.X
diff --git a/tests/test/P-eq-4.X b/tests/test/P-eq-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-eq-4.X
diff --git a/tests/test/P-eq-5.X b/tests/test/P-eq-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-eq-5.X
diff --git a/tests/test/P-eq-6.X b/tests/test/P-eq-6.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-eq-6.X
diff --git a/tests/test/P-gt-1.X b/tests/test/P-gt-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-gt-1.X
diff --git a/tests/test/P-gt-2.X b/tests/test/P-gt-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-gt-2.X
diff --git a/tests/test/P-gt-3.X b/tests/test/P-gt-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-gt-3.X
diff --git a/tests/test/P-gt-4.X b/tests/test/P-gt-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-gt-4.X
diff --git a/tests/test/P-gt-5.X b/tests/test/P-gt-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-gt-5.X
diff --git a/tests/test/P-lt-1.X b/tests/test/P-lt-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-lt-1.X
diff --git a/tests/test/P-lt-2.X b/tests/test/P-lt-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-lt-2.X
diff --git a/tests/test/P-lt-3.X b/tests/test/P-lt-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-lt-3.X
diff --git a/tests/test/P-lt-4.X b/tests/test/P-lt-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-lt-4.X
diff --git a/tests/test/P-lt-5.X b/tests/test/P-lt-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-lt-5.X
diff --git a/tests/test/P-or-1.X b/tests/test/P-or-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-or-1.X
diff --git a/tests/test/P-or-2.X b/tests/test/P-or-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-or-2.X
diff --git a/tests/test/P-or-3.X b/tests/test/P-or-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-or-3.X
diff --git a/tests/test/P-or-4.X b/tests/test/P-or-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-or-4.X
diff --git a/tests/test/P-streq-1.X b/tests/test/P-streq-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-streq-1.X
diff --git a/tests/test/P-streq-2.X b/tests/test/P-streq-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-streq-2.X
diff --git a/tests/test/P-streq-3.X b/tests/test/P-streq-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-streq-3.X
diff --git a/tests/test/P-streq-4.X b/tests/test/P-streq-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-streq-4.X
diff --git a/tests/test/P-streq-5.X b/tests/test/P-streq-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-streq-5.X
diff --git a/tests/test/P-strne-1.X b/tests/test/P-strne-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-strne-1.X
diff --git a/tests/test/P-strne-2.X b/tests/test/P-strne-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-strne-2.X
diff --git a/tests/test/P-strne-3.X b/tests/test/P-strne-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-strne-3.X
diff --git a/tests/test/P-strne-4.X b/tests/test/P-strne-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-strne-4.X
diff --git a/tests/test/P-strne-5.X b/tests/test/P-strne-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-strne-5.X
diff --git a/tests/test/P-t1.X b/tests/test/P-t1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-t1.X
diff --git a/tests/test/P-t2.X b/tests/test/P-t2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/P-t2.X
diff --git a/tests/test/Test.pm b/tests/test/Test.pm
new file mode 100644
index 0000000..865fc48
--- /dev/null
+++ b/tests/test/Test.pm
@@ -0,0 +1,150 @@
+# Test "test".
+
+# Copyright (C) 1998, 2003, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# -*-perl-*-
+package Test;
+require 5.002;
+use strict;
+
+sub test_vector
+{
+ my @tvec =
+ (
+ # test-name options input expected-output expected-return-code
+ #
+ ['1a', '', {}, '', 1],
+ ['1b', "-z ''", {}, '', 0],
+ ['1c', 'any-string', {}, '', 0],
+ ['1d', '-n any-string', {}, '', 0],
+ ['1e', "''", {}, '', 1],
+ ['1f', '-', {}, '', 0],
+ ['1g', '--', {}, '', 0],
+ ['1h', '-0', {}, '', 0],
+ ['1i', '-f', {}, '', 0],
+ ['1j', '--help', {}, '', 0],
+ ['1k', '--version', {}, '', 0],
+
+ ['streq-1', 't = t', {}, '', 0],
+ ['streq-2', 't = f', {}, '', 1],
+ ['streq-3', '! = !', {}, '', 0],
+ ['streq-4', '= = =', {}, '', 0],
+ ['streq-5', "'(' = '('", {}, '', 0],
+ ['streq-6', "'(' = ')'", {}, '', 1],
+ ['strne-1', 't != t', {}, '', 1],
+ ['strne-2', 't != f', {}, '', 0],
+ ['strne-3', '! != !', {}, '', 1],
+ ['strne-4', '= != =', {}, '', 1],
+ ['strne-5', "'(' != '('", {}, '', 1],
+ ['strne-6', "'(' != ')'", {}, '', 0],
+
+ ['and-1', 't -a t', {}, '', 0],
+ ['and-2', "'' -a t", {}, '', 1],
+ ['and-3', "t -a ''", {}, '', 1],
+ ['and-4', "'' -a ''", {}, '', 1],
+
+ ['or-1', 't -o t', {}, '', 0],
+ ['or-2', "'' -o t", {}, '', 0],
+ ['or-3', "t -o ''", {}, '', 0],
+ ['or-4', "'' -o ''", {}, '', 1],
+
+ ['eq-1', '9 -eq 9', {}, '', 0],
+ ['eq-2', '0 -eq 0', {}, '', 0],
+ ['eq-3', '0 -eq 00', {}, '', 0],
+ ['eq-4', '8 -eq 9', {}, '', 1],
+ ['eq-5', '1 -eq 0', {}, '', 1],
+ ['eq-6', '340282366920938463463374607431768211456 -eq 0', {}, '', 1],
+
+ ['gt-1', '5 -gt 5', {}, '', 1],
+ ['gt-2', '5 -gt 4', {}, '', 0],
+ ['gt-3', '4 -gt 5', {}, '', 1],
+ ['gt-4', '-1 -gt -2', {}, '', 0],
+ ['gt-5', '18446744073709551616 -gt -18446744073709551616', {}, '', 0],
+
+ ['lt-1', '5 -lt 5', {}, '', 1],
+ ['lt-2', '5 -lt 4', {}, '', 1],
+ ['lt-3', '4 -lt 5', {}, '', 0],
+ ['lt-4', '-1 -lt -2', {}, '', 1],
+ ['lt-5', '-18446744073709551616 -lt 18446744073709551616', {}, '', 0],
+
+ # This evokes `test: 0x0: integer expression expected'.
+ ['inv-1', '0x0 -eq 00', {}, '', 2],
+
+ ['t1', "-t", {}, '', 0],
+ ['t2', "-t 1", {}, '', 1],
+
+ ['paren-1', "'(' '' ')'", {}, '', 1],
+ ['paren-2', "'(' '(' ')'", {}, '', 0],
+ ['paren-3', "'(' ')' ')'", {}, '', 0],
+ ['paren-4', "'(' ! ')'", {}, '', 0],
+ ['paren-5', "'(' -a ')'", {}, '', 0],
+ );
+
+ my %inverse_op =
+ (
+ eq => 'ne',
+ lt => 'ge',
+ gt => 'le',
+ );
+
+ # Generate corresponding tests of inverse ops.
+ # E.g. generate tests of `-ge' from those of `-lt'.
+ my @tv;
+ my $t;
+ foreach $t (@tvec)
+ {
+ my ($test_name, $flags, $in, $exp, $ret) = @$t;
+
+ my $op;
+ for $op (qw(gt lt eq))
+ {
+ if ($test_name =~ /$op-/ && $flags =~ / -$op /)
+ {
+ my $inv = $inverse_op{$op};
+ $test_name =~ s/$op/$inv/;
+ $flags =~ s/-$op/-$inv/;
+ $ret = 1 - $ret;
+ push (@tv, [$test_name, $flags, $in, $exp, $ret]);
+ }
+ }
+ }
+
+ # Generate parenthesized and negated versions of each test.
+ # There are a few exceptions.
+ my %not_N = map {$_ => 1} qw (1a);
+ my %not_P = map {$_ => 1} qw (1a
+ streq-6 strne-6
+ paren-1 paren-2 paren-3 paren-4 paren-5);
+ foreach $t (@tvec)
+ {
+ my ($test_name, $flags, $in, $exp, $ret) = @$t;
+ next if $ret == 2;
+ push (@tv, ["N-$test_name", "! $flags", $in, $exp, 1 - $ret])
+ unless $not_N{$test_name};
+ push (@tv, ["P-$test_name", "'(' $flags ')'", $in, $exp, $ret])
+ unless $not_P{$test_name};
+ push (@tv, ["NP-$test_name", "! '(' $flags ')'", $in, $exp, 1 - $ret])
+ unless $not_P{$test_name};
+ push (@tv, ["NNP-$test_name", "! ! '(' $flags ')'", $in, $exp, $ret])
+ unless $not_P{$test_name};
+ }
+
+ return (@tv, @tvec);
+}
+
+1;
diff --git a/tests/test/and-1.X b/tests/test/and-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/and-1.X
diff --git a/tests/test/and-2.X b/tests/test/and-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/and-2.X
diff --git a/tests/test/and-3.X b/tests/test/and-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/and-3.X
diff --git a/tests/test/and-4.X b/tests/test/and-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/and-4.X
diff --git a/tests/test/eq-1.X b/tests/test/eq-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/eq-1.X
diff --git a/tests/test/eq-2.X b/tests/test/eq-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/eq-2.X
diff --git a/tests/test/eq-3.X b/tests/test/eq-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/eq-3.X
diff --git a/tests/test/eq-4.X b/tests/test/eq-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/eq-4.X
diff --git a/tests/test/eq-5.X b/tests/test/eq-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/eq-5.X
diff --git a/tests/test/eq-6.X b/tests/test/eq-6.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/eq-6.X
diff --git a/tests/test/ge-1.X b/tests/test/ge-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/ge-1.X
diff --git a/tests/test/ge-2.X b/tests/test/ge-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/ge-2.X
diff --git a/tests/test/ge-3.X b/tests/test/ge-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/ge-3.X
diff --git a/tests/test/ge-4.X b/tests/test/ge-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/ge-4.X
diff --git a/tests/test/ge-5.X b/tests/test/ge-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/ge-5.X
diff --git a/tests/test/gt-1.X b/tests/test/gt-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/gt-1.X
diff --git a/tests/test/gt-2.X b/tests/test/gt-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/gt-2.X
diff --git a/tests/test/gt-3.X b/tests/test/gt-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/gt-3.X
diff --git a/tests/test/gt-4.X b/tests/test/gt-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/gt-4.X
diff --git a/tests/test/gt-5.X b/tests/test/gt-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/gt-5.X
diff --git a/tests/test/inv-1.X b/tests/test/inv-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/inv-1.X
diff --git a/tests/test/le-1.X b/tests/test/le-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/le-1.X
diff --git a/tests/test/le-2.X b/tests/test/le-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/le-2.X
diff --git a/tests/test/le-3.X b/tests/test/le-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/le-3.X
diff --git a/tests/test/le-4.X b/tests/test/le-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/le-4.X
diff --git a/tests/test/le-5.X b/tests/test/le-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/le-5.X
diff --git a/tests/test/lt-1.X b/tests/test/lt-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/lt-1.X
diff --git a/tests/test/lt-2.X b/tests/test/lt-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/lt-2.X
diff --git a/tests/test/lt-3.X b/tests/test/lt-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/lt-3.X
diff --git a/tests/test/lt-4.X b/tests/test/lt-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/lt-4.X
diff --git a/tests/test/lt-5.X b/tests/test/lt-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/lt-5.X
diff --git a/tests/test/ne-1.X b/tests/test/ne-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/ne-1.X
diff --git a/tests/test/ne-2.X b/tests/test/ne-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/ne-2.X
diff --git a/tests/test/ne-3.X b/tests/test/ne-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/ne-3.X
diff --git a/tests/test/ne-4.X b/tests/test/ne-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/ne-4.X
diff --git a/tests/test/ne-5.X b/tests/test/ne-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/ne-5.X
diff --git a/tests/test/ne-6.X b/tests/test/ne-6.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/ne-6.X
diff --git a/tests/test/or-1.X b/tests/test/or-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/or-1.X
diff --git a/tests/test/or-2.X b/tests/test/or-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/or-2.X
diff --git a/tests/test/or-3.X b/tests/test/or-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/or-3.X
diff --git a/tests/test/or-4.X b/tests/test/or-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/or-4.X
diff --git a/tests/test/paren-1.X b/tests/test/paren-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/paren-1.X
diff --git a/tests/test/paren-2.X b/tests/test/paren-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/paren-2.X
diff --git a/tests/test/paren-3.X b/tests/test/paren-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/paren-3.X
diff --git a/tests/test/paren-4.X b/tests/test/paren-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/paren-4.X
diff --git a/tests/test/paren-5.X b/tests/test/paren-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/paren-5.X
diff --git a/tests/test/streq-1.X b/tests/test/streq-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/streq-1.X
diff --git a/tests/test/streq-2.X b/tests/test/streq-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/streq-2.X
diff --git a/tests/test/streq-3.X b/tests/test/streq-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/streq-3.X
diff --git a/tests/test/streq-4.X b/tests/test/streq-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/streq-4.X
diff --git a/tests/test/streq-5.X b/tests/test/streq-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/streq-5.X
diff --git a/tests/test/streq-6.X b/tests/test/streq-6.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/streq-6.X
diff --git a/tests/test/strne-1.X b/tests/test/strne-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/strne-1.X
diff --git a/tests/test/strne-2.X b/tests/test/strne-2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/strne-2.X
diff --git a/tests/test/strne-3.X b/tests/test/strne-3.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/strne-3.X
diff --git a/tests/test/strne-4.X b/tests/test/strne-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/strne-4.X
diff --git a/tests/test/strne-5.X b/tests/test/strne-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/strne-5.X
diff --git a/tests/test/strne-6.X b/tests/test/strne-6.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/strne-6.X
diff --git a/tests/test/t1.X b/tests/test/t1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/t1.X
diff --git a/tests/test/t2.X b/tests/test/t2.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test/t2.X
diff --git a/tests/test/test-tests b/tests/test/test-tests
new file mode 100755
index 0000000..6122b92
--- /dev/null
+++ b/tests/test/test-tests
@@ -0,0 +1,4743 @@
+#! /bin/sh
+# This script was generated automatically by mk-script.
+case $# in
+ 0) xx='../../src/test';;
+ *) xx="$1";;
+esac
+test "$VERBOSE" && echo=echo || echo=:
+$echo testing program: $xx
+errors=0
+test "$srcdir" || srcdir=.
+test "$VERBOSE" && $xx --version 2> /dev/null
+
+# Make sure we get English translations.
+LANGUAGE=C
+export LANGUAGE
+LC_ALL=C
+export LC_ALL
+LANG=C
+export LANG
+
+$xx 9 -ne 9 > ne-1.O 2> ne-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test ne-1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ne-1.O $srcdir/ne-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ne-1"; fi;;
+ 1) $echo "Test ne-1 failed: files ne-1.O and $srcdir/ne-1.X differ" 1>&2
+ (diff -c ne-1.O $srcdir/ne-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ne-1 may have failed." 1>&2
+ $echo The command "cmp ne-1.O $srcdir/ne-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ne-1.E || rm -f ne-1.E
+$xx 0 -ne 0 > ne-2.O 2> ne-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test ne-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ne-2.O $srcdir/ne-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ne-2"; fi;;
+ 1) $echo "Test ne-2 failed: files ne-2.O and $srcdir/ne-2.X differ" 1>&2
+ (diff -c ne-2.O $srcdir/ne-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ne-2 may have failed." 1>&2
+ $echo The command "cmp ne-2.O $srcdir/ne-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ne-2.E || rm -f ne-2.E
+$xx 0 -ne 00 > ne-3.O 2> ne-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test ne-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ne-3.O $srcdir/ne-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ne-3"; fi;;
+ 1) $echo "Test ne-3 failed: files ne-3.O and $srcdir/ne-3.X differ" 1>&2
+ (diff -c ne-3.O $srcdir/ne-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ne-3 may have failed." 1>&2
+ $echo The command "cmp ne-3.O $srcdir/ne-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ne-3.E || rm -f ne-3.E
+$xx 8 -ne 9 > ne-4.O 2> ne-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test ne-4 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ne-4.O $srcdir/ne-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ne-4"; fi;;
+ 1) $echo "Test ne-4 failed: files ne-4.O and $srcdir/ne-4.X differ" 1>&2
+ (diff -c ne-4.O $srcdir/ne-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ne-4 may have failed." 1>&2
+ $echo The command "cmp ne-4.O $srcdir/ne-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ne-4.E || rm -f ne-4.E
+$xx 1 -ne 0 > ne-5.O 2> ne-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test ne-5 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ne-5.O $srcdir/ne-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ne-5"; fi;;
+ 1) $echo "Test ne-5 failed: files ne-5.O and $srcdir/ne-5.X differ" 1>&2
+ (diff -c ne-5.O $srcdir/ne-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ne-5 may have failed." 1>&2
+ $echo The command "cmp ne-5.O $srcdir/ne-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ne-5.E || rm -f ne-5.E
+$xx 340282366920938463463374607431768211456 -ne 0 > ne-6.O 2> ne-6.E
+code=$?
+if test $code != 0; then
+ $echo "Test ne-6 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ne-6.O $srcdir/ne-6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ne-6"; fi;;
+ 1) $echo "Test ne-6 failed: files ne-6.O and $srcdir/ne-6.X differ" 1>&2
+ (diff -c ne-6.O $srcdir/ne-6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ne-6 may have failed." 1>&2
+ $echo The command "cmp ne-6.O $srcdir/ne-6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ne-6.E || rm -f ne-6.E
+$xx 5 -le 5 > le-1.O 2> le-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test le-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp le-1.O $srcdir/le-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed le-1"; fi;;
+ 1) $echo "Test le-1 failed: files le-1.O and $srcdir/le-1.X differ" 1>&2
+ (diff -c le-1.O $srcdir/le-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test le-1 may have failed." 1>&2
+ $echo The command "cmp le-1.O $srcdir/le-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s le-1.E || rm -f le-1.E
+$xx 5 -le 4 > le-2.O 2> le-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test le-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp le-2.O $srcdir/le-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed le-2"; fi;;
+ 1) $echo "Test le-2 failed: files le-2.O and $srcdir/le-2.X differ" 1>&2
+ (diff -c le-2.O $srcdir/le-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test le-2 may have failed." 1>&2
+ $echo The command "cmp le-2.O $srcdir/le-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s le-2.E || rm -f le-2.E
+$xx 4 -le 5 > le-3.O 2> le-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test le-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp le-3.O $srcdir/le-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed le-3"; fi;;
+ 1) $echo "Test le-3 failed: files le-3.O and $srcdir/le-3.X differ" 1>&2
+ (diff -c le-3.O $srcdir/le-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test le-3 may have failed." 1>&2
+ $echo The command "cmp le-3.O $srcdir/le-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s le-3.E || rm -f le-3.E
+$xx -1 -le -2 > le-4.O 2> le-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test le-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp le-4.O $srcdir/le-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed le-4"; fi;;
+ 1) $echo "Test le-4 failed: files le-4.O and $srcdir/le-4.X differ" 1>&2
+ (diff -c le-4.O $srcdir/le-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test le-4 may have failed." 1>&2
+ $echo The command "cmp le-4.O $srcdir/le-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s le-4.E || rm -f le-4.E
+$xx 18446744073709551616 -le -18446744073709551616 > le-5.O 2> le-5.E
+code=$?
+if test $code != 1; then
+ $echo "Test le-5 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp le-5.O $srcdir/le-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed le-5"; fi;;
+ 1) $echo "Test le-5 failed: files le-5.O and $srcdir/le-5.X differ" 1>&2
+ (diff -c le-5.O $srcdir/le-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test le-5 may have failed." 1>&2
+ $echo The command "cmp le-5.O $srcdir/le-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s le-5.E || rm -f le-5.E
+$xx 5 -ge 5 > ge-1.O 2> ge-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test ge-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ge-1.O $srcdir/ge-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ge-1"; fi;;
+ 1) $echo "Test ge-1 failed: files ge-1.O and $srcdir/ge-1.X differ" 1>&2
+ (diff -c ge-1.O $srcdir/ge-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ge-1 may have failed." 1>&2
+ $echo The command "cmp ge-1.O $srcdir/ge-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ge-1.E || rm -f ge-1.E
+$xx 5 -ge 4 > ge-2.O 2> ge-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test ge-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ge-2.O $srcdir/ge-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ge-2"; fi;;
+ 1) $echo "Test ge-2 failed: files ge-2.O and $srcdir/ge-2.X differ" 1>&2
+ (diff -c ge-2.O $srcdir/ge-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ge-2 may have failed." 1>&2
+ $echo The command "cmp ge-2.O $srcdir/ge-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ge-2.E || rm -f ge-2.E
+$xx 4 -ge 5 > ge-3.O 2> ge-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test ge-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ge-3.O $srcdir/ge-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ge-3"; fi;;
+ 1) $echo "Test ge-3 failed: files ge-3.O and $srcdir/ge-3.X differ" 1>&2
+ (diff -c ge-3.O $srcdir/ge-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ge-3 may have failed." 1>&2
+ $echo The command "cmp ge-3.O $srcdir/ge-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ge-3.E || rm -f ge-3.E
+$xx -1 -ge -2 > ge-4.O 2> ge-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test ge-4 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ge-4.O $srcdir/ge-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ge-4"; fi;;
+ 1) $echo "Test ge-4 failed: files ge-4.O and $srcdir/ge-4.X differ" 1>&2
+ (diff -c ge-4.O $srcdir/ge-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ge-4 may have failed." 1>&2
+ $echo The command "cmp ge-4.O $srcdir/ge-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ge-4.E || rm -f ge-4.E
+$xx -18446744073709551616 -ge 18446744073709551616 > ge-5.O 2> ge-5.E
+code=$?
+if test $code != 1; then
+ $echo "Test ge-5 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ge-5.O $srcdir/ge-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ge-5"; fi;;
+ 1) $echo "Test ge-5 failed: files ge-5.O and $srcdir/ge-5.X differ" 1>&2
+ (diff -c ge-5.O $srcdir/ge-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ge-5 may have failed." 1>&2
+ $echo The command "cmp ge-5.O $srcdir/ge-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ge-5.E || rm -f ge-5.E
+$xx ! -z '' > N-1b.O 2> N-1b.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-1b failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-1b.O $srcdir/N-1b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-1b"; fi;;
+ 1) $echo "Test N-1b failed: files N-1b.O and $srcdir/N-1b.X differ" 1>&2
+ (diff -c N-1b.O $srcdir/N-1b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-1b may have failed." 1>&2
+ $echo The command "cmp N-1b.O $srcdir/N-1b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-1b.E || rm -f N-1b.E
+$xx '(' -z '' ')' > P-1b.O 2> P-1b.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-1b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-1b.O $srcdir/P-1b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-1b"; fi;;
+ 1) $echo "Test P-1b failed: files P-1b.O and $srcdir/P-1b.X differ" 1>&2
+ (diff -c P-1b.O $srcdir/P-1b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-1b may have failed." 1>&2
+ $echo The command "cmp P-1b.O $srcdir/P-1b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-1b.E || rm -f P-1b.E
+$xx ! '(' -z '' ')' > NP-1b.O 2> NP-1b.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-1b failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-1b.O $srcdir/NP-1b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-1b"; fi;;
+ 1) $echo "Test NP-1b failed: files NP-1b.O and $srcdir/NP-1b.X differ" 1>&2
+ (diff -c NP-1b.O $srcdir/NP-1b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-1b may have failed." 1>&2
+ $echo The command "cmp NP-1b.O $srcdir/NP-1b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-1b.E || rm -f NP-1b.E
+$xx ! ! '(' -z '' ')' > NNP-1b.O 2> NNP-1b.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-1b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-1b.O $srcdir/NNP-1b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-1b"; fi;;
+ 1) $echo "Test NNP-1b failed: files NNP-1b.O and $srcdir/NNP-1b.X differ" 1>&2
+ (diff -c NNP-1b.O $srcdir/NNP-1b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-1b may have failed." 1>&2
+ $echo The command "cmp NNP-1b.O $srcdir/NNP-1b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-1b.E || rm -f NNP-1b.E
+$xx ! any-string > N-1c.O 2> N-1c.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-1c failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-1c.O $srcdir/N-1c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-1c"; fi;;
+ 1) $echo "Test N-1c failed: files N-1c.O and $srcdir/N-1c.X differ" 1>&2
+ (diff -c N-1c.O $srcdir/N-1c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-1c may have failed." 1>&2
+ $echo The command "cmp N-1c.O $srcdir/N-1c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-1c.E || rm -f N-1c.E
+$xx '(' any-string ')' > P-1c.O 2> P-1c.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-1c failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-1c.O $srcdir/P-1c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-1c"; fi;;
+ 1) $echo "Test P-1c failed: files P-1c.O and $srcdir/P-1c.X differ" 1>&2
+ (diff -c P-1c.O $srcdir/P-1c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-1c may have failed." 1>&2
+ $echo The command "cmp P-1c.O $srcdir/P-1c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-1c.E || rm -f P-1c.E
+$xx ! '(' any-string ')' > NP-1c.O 2> NP-1c.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-1c failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-1c.O $srcdir/NP-1c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-1c"; fi;;
+ 1) $echo "Test NP-1c failed: files NP-1c.O and $srcdir/NP-1c.X differ" 1>&2
+ (diff -c NP-1c.O $srcdir/NP-1c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-1c may have failed." 1>&2
+ $echo The command "cmp NP-1c.O $srcdir/NP-1c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-1c.E || rm -f NP-1c.E
+$xx ! ! '(' any-string ')' > NNP-1c.O 2> NNP-1c.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-1c failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-1c.O $srcdir/NNP-1c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-1c"; fi;;
+ 1) $echo "Test NNP-1c failed: files NNP-1c.O and $srcdir/NNP-1c.X differ" 1>&2
+ (diff -c NNP-1c.O $srcdir/NNP-1c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-1c may have failed." 1>&2
+ $echo The command "cmp NNP-1c.O $srcdir/NNP-1c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-1c.E || rm -f NNP-1c.E
+$xx ! -n any-string > N-1d.O 2> N-1d.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-1d failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-1d.O $srcdir/N-1d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-1d"; fi;;
+ 1) $echo "Test N-1d failed: files N-1d.O and $srcdir/N-1d.X differ" 1>&2
+ (diff -c N-1d.O $srcdir/N-1d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-1d may have failed." 1>&2
+ $echo The command "cmp N-1d.O $srcdir/N-1d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-1d.E || rm -f N-1d.E
+$xx '(' -n any-string ')' > P-1d.O 2> P-1d.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-1d failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-1d.O $srcdir/P-1d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-1d"; fi;;
+ 1) $echo "Test P-1d failed: files P-1d.O and $srcdir/P-1d.X differ" 1>&2
+ (diff -c P-1d.O $srcdir/P-1d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-1d may have failed." 1>&2
+ $echo The command "cmp P-1d.O $srcdir/P-1d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-1d.E || rm -f P-1d.E
+$xx ! '(' -n any-string ')' > NP-1d.O 2> NP-1d.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-1d failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-1d.O $srcdir/NP-1d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-1d"; fi;;
+ 1) $echo "Test NP-1d failed: files NP-1d.O and $srcdir/NP-1d.X differ" 1>&2
+ (diff -c NP-1d.O $srcdir/NP-1d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-1d may have failed." 1>&2
+ $echo The command "cmp NP-1d.O $srcdir/NP-1d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-1d.E || rm -f NP-1d.E
+$xx ! ! '(' -n any-string ')' > NNP-1d.O 2> NNP-1d.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-1d failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-1d.O $srcdir/NNP-1d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-1d"; fi;;
+ 1) $echo "Test NNP-1d failed: files NNP-1d.O and $srcdir/NNP-1d.X differ" 1>&2
+ (diff -c NNP-1d.O $srcdir/NNP-1d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-1d may have failed." 1>&2
+ $echo The command "cmp NNP-1d.O $srcdir/NNP-1d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-1d.E || rm -f NNP-1d.E
+$xx ! '' > N-1e.O 2> N-1e.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-1e failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-1e.O $srcdir/N-1e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-1e"; fi;;
+ 1) $echo "Test N-1e failed: files N-1e.O and $srcdir/N-1e.X differ" 1>&2
+ (diff -c N-1e.O $srcdir/N-1e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-1e may have failed." 1>&2
+ $echo The command "cmp N-1e.O $srcdir/N-1e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-1e.E || rm -f N-1e.E
+$xx '(' '' ')' > P-1e.O 2> P-1e.E
+code=$?
+if test $code != 1; then
+ $echo "Test P-1e failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-1e.O $srcdir/P-1e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-1e"; fi;;
+ 1) $echo "Test P-1e failed: files P-1e.O and $srcdir/P-1e.X differ" 1>&2
+ (diff -c P-1e.O $srcdir/P-1e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-1e may have failed." 1>&2
+ $echo The command "cmp P-1e.O $srcdir/P-1e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-1e.E || rm -f P-1e.E
+$xx ! '(' '' ')' > NP-1e.O 2> NP-1e.E
+code=$?
+if test $code != 0; then
+ $echo "Test NP-1e failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-1e.O $srcdir/NP-1e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-1e"; fi;;
+ 1) $echo "Test NP-1e failed: files NP-1e.O and $srcdir/NP-1e.X differ" 1>&2
+ (diff -c NP-1e.O $srcdir/NP-1e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-1e may have failed." 1>&2
+ $echo The command "cmp NP-1e.O $srcdir/NP-1e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-1e.E || rm -f NP-1e.E
+$xx ! ! '(' '' ')' > NNP-1e.O 2> NNP-1e.E
+code=$?
+if test $code != 1; then
+ $echo "Test NNP-1e failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-1e.O $srcdir/NNP-1e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-1e"; fi;;
+ 1) $echo "Test NNP-1e failed: files NNP-1e.O and $srcdir/NNP-1e.X differ" 1>&2
+ (diff -c NNP-1e.O $srcdir/NNP-1e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-1e may have failed." 1>&2
+ $echo The command "cmp NNP-1e.O $srcdir/NNP-1e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-1e.E || rm -f NNP-1e.E
+$xx ! - > N-1f.O 2> N-1f.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-1f failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-1f.O $srcdir/N-1f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-1f"; fi;;
+ 1) $echo "Test N-1f failed: files N-1f.O and $srcdir/N-1f.X differ" 1>&2
+ (diff -c N-1f.O $srcdir/N-1f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-1f may have failed." 1>&2
+ $echo The command "cmp N-1f.O $srcdir/N-1f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-1f.E || rm -f N-1f.E
+$xx '(' - ')' > P-1f.O 2> P-1f.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-1f failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-1f.O $srcdir/P-1f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-1f"; fi;;
+ 1) $echo "Test P-1f failed: files P-1f.O and $srcdir/P-1f.X differ" 1>&2
+ (diff -c P-1f.O $srcdir/P-1f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-1f may have failed." 1>&2
+ $echo The command "cmp P-1f.O $srcdir/P-1f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-1f.E || rm -f P-1f.E
+$xx ! '(' - ')' > NP-1f.O 2> NP-1f.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-1f failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-1f.O $srcdir/NP-1f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-1f"; fi;;
+ 1) $echo "Test NP-1f failed: files NP-1f.O and $srcdir/NP-1f.X differ" 1>&2
+ (diff -c NP-1f.O $srcdir/NP-1f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-1f may have failed." 1>&2
+ $echo The command "cmp NP-1f.O $srcdir/NP-1f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-1f.E || rm -f NP-1f.E
+$xx ! ! '(' - ')' > NNP-1f.O 2> NNP-1f.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-1f failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-1f.O $srcdir/NNP-1f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-1f"; fi;;
+ 1) $echo "Test NNP-1f failed: files NNP-1f.O and $srcdir/NNP-1f.X differ" 1>&2
+ (diff -c NNP-1f.O $srcdir/NNP-1f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-1f may have failed." 1>&2
+ $echo The command "cmp NNP-1f.O $srcdir/NNP-1f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-1f.E || rm -f NNP-1f.E
+$xx ! -- > N-1g.O 2> N-1g.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-1g failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-1g.O $srcdir/N-1g.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-1g"; fi;;
+ 1) $echo "Test N-1g failed: files N-1g.O and $srcdir/N-1g.X differ" 1>&2
+ (diff -c N-1g.O $srcdir/N-1g.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-1g may have failed." 1>&2
+ $echo The command "cmp N-1g.O $srcdir/N-1g.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-1g.E || rm -f N-1g.E
+$xx '(' -- ')' > P-1g.O 2> P-1g.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-1g failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-1g.O $srcdir/P-1g.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-1g"; fi;;
+ 1) $echo "Test P-1g failed: files P-1g.O and $srcdir/P-1g.X differ" 1>&2
+ (diff -c P-1g.O $srcdir/P-1g.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-1g may have failed." 1>&2
+ $echo The command "cmp P-1g.O $srcdir/P-1g.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-1g.E || rm -f P-1g.E
+$xx ! '(' -- ')' > NP-1g.O 2> NP-1g.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-1g failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-1g.O $srcdir/NP-1g.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-1g"; fi;;
+ 1) $echo "Test NP-1g failed: files NP-1g.O and $srcdir/NP-1g.X differ" 1>&2
+ (diff -c NP-1g.O $srcdir/NP-1g.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-1g may have failed." 1>&2
+ $echo The command "cmp NP-1g.O $srcdir/NP-1g.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-1g.E || rm -f NP-1g.E
+$xx ! ! '(' -- ')' > NNP-1g.O 2> NNP-1g.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-1g failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-1g.O $srcdir/NNP-1g.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-1g"; fi;;
+ 1) $echo "Test NNP-1g failed: files NNP-1g.O and $srcdir/NNP-1g.X differ" 1>&2
+ (diff -c NNP-1g.O $srcdir/NNP-1g.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-1g may have failed." 1>&2
+ $echo The command "cmp NNP-1g.O $srcdir/NNP-1g.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-1g.E || rm -f NNP-1g.E
+$xx ! -0 > N-1h.O 2> N-1h.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-1h failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-1h.O $srcdir/N-1h.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-1h"; fi;;
+ 1) $echo "Test N-1h failed: files N-1h.O and $srcdir/N-1h.X differ" 1>&2
+ (diff -c N-1h.O $srcdir/N-1h.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-1h may have failed." 1>&2
+ $echo The command "cmp N-1h.O $srcdir/N-1h.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-1h.E || rm -f N-1h.E
+$xx '(' -0 ')' > P-1h.O 2> P-1h.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-1h failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-1h.O $srcdir/P-1h.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-1h"; fi;;
+ 1) $echo "Test P-1h failed: files P-1h.O and $srcdir/P-1h.X differ" 1>&2
+ (diff -c P-1h.O $srcdir/P-1h.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-1h may have failed." 1>&2
+ $echo The command "cmp P-1h.O $srcdir/P-1h.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-1h.E || rm -f P-1h.E
+$xx ! '(' -0 ')' > NP-1h.O 2> NP-1h.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-1h failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-1h.O $srcdir/NP-1h.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-1h"; fi;;
+ 1) $echo "Test NP-1h failed: files NP-1h.O and $srcdir/NP-1h.X differ" 1>&2
+ (diff -c NP-1h.O $srcdir/NP-1h.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-1h may have failed." 1>&2
+ $echo The command "cmp NP-1h.O $srcdir/NP-1h.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-1h.E || rm -f NP-1h.E
+$xx ! ! '(' -0 ')' > NNP-1h.O 2> NNP-1h.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-1h failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-1h.O $srcdir/NNP-1h.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-1h"; fi;;
+ 1) $echo "Test NNP-1h failed: files NNP-1h.O and $srcdir/NNP-1h.X differ" 1>&2
+ (diff -c NNP-1h.O $srcdir/NNP-1h.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-1h may have failed." 1>&2
+ $echo The command "cmp NNP-1h.O $srcdir/NNP-1h.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-1h.E || rm -f NNP-1h.E
+$xx ! -f > N-1i.O 2> N-1i.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-1i failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-1i.O $srcdir/N-1i.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-1i"; fi;;
+ 1) $echo "Test N-1i failed: files N-1i.O and $srcdir/N-1i.X differ" 1>&2
+ (diff -c N-1i.O $srcdir/N-1i.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-1i may have failed." 1>&2
+ $echo The command "cmp N-1i.O $srcdir/N-1i.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-1i.E || rm -f N-1i.E
+$xx '(' -f ')' > P-1i.O 2> P-1i.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-1i failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-1i.O $srcdir/P-1i.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-1i"; fi;;
+ 1) $echo "Test P-1i failed: files P-1i.O and $srcdir/P-1i.X differ" 1>&2
+ (diff -c P-1i.O $srcdir/P-1i.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-1i may have failed." 1>&2
+ $echo The command "cmp P-1i.O $srcdir/P-1i.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-1i.E || rm -f P-1i.E
+$xx ! '(' -f ')' > NP-1i.O 2> NP-1i.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-1i failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-1i.O $srcdir/NP-1i.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-1i"; fi;;
+ 1) $echo "Test NP-1i failed: files NP-1i.O and $srcdir/NP-1i.X differ" 1>&2
+ (diff -c NP-1i.O $srcdir/NP-1i.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-1i may have failed." 1>&2
+ $echo The command "cmp NP-1i.O $srcdir/NP-1i.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-1i.E || rm -f NP-1i.E
+$xx ! ! '(' -f ')' > NNP-1i.O 2> NNP-1i.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-1i failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-1i.O $srcdir/NNP-1i.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-1i"; fi;;
+ 1) $echo "Test NNP-1i failed: files NNP-1i.O and $srcdir/NNP-1i.X differ" 1>&2
+ (diff -c NNP-1i.O $srcdir/NNP-1i.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-1i may have failed." 1>&2
+ $echo The command "cmp NNP-1i.O $srcdir/NNP-1i.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-1i.E || rm -f NNP-1i.E
+$xx ! --help > N-1j.O 2> N-1j.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-1j failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-1j.O $srcdir/N-1j.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-1j"; fi;;
+ 1) $echo "Test N-1j failed: files N-1j.O and $srcdir/N-1j.X differ" 1>&2
+ (diff -c N-1j.O $srcdir/N-1j.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-1j may have failed." 1>&2
+ $echo The command "cmp N-1j.O $srcdir/N-1j.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-1j.E || rm -f N-1j.E
+$xx '(' --help ')' > P-1j.O 2> P-1j.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-1j failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-1j.O $srcdir/P-1j.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-1j"; fi;;
+ 1) $echo "Test P-1j failed: files P-1j.O and $srcdir/P-1j.X differ" 1>&2
+ (diff -c P-1j.O $srcdir/P-1j.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-1j may have failed." 1>&2
+ $echo The command "cmp P-1j.O $srcdir/P-1j.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-1j.E || rm -f P-1j.E
+$xx ! '(' --help ')' > NP-1j.O 2> NP-1j.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-1j failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-1j.O $srcdir/NP-1j.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-1j"; fi;;
+ 1) $echo "Test NP-1j failed: files NP-1j.O and $srcdir/NP-1j.X differ" 1>&2
+ (diff -c NP-1j.O $srcdir/NP-1j.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-1j may have failed." 1>&2
+ $echo The command "cmp NP-1j.O $srcdir/NP-1j.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-1j.E || rm -f NP-1j.E
+$xx ! ! '(' --help ')' > NNP-1j.O 2> NNP-1j.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-1j failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-1j.O $srcdir/NNP-1j.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-1j"; fi;;
+ 1) $echo "Test NNP-1j failed: files NNP-1j.O and $srcdir/NNP-1j.X differ" 1>&2
+ (diff -c NNP-1j.O $srcdir/NNP-1j.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-1j may have failed." 1>&2
+ $echo The command "cmp NNP-1j.O $srcdir/NNP-1j.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-1j.E || rm -f NNP-1j.E
+$xx ! --version > N-1k.O 2> N-1k.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-1k failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-1k.O $srcdir/N-1k.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-1k"; fi;;
+ 1) $echo "Test N-1k failed: files N-1k.O and $srcdir/N-1k.X differ" 1>&2
+ (diff -c N-1k.O $srcdir/N-1k.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-1k may have failed." 1>&2
+ $echo The command "cmp N-1k.O $srcdir/N-1k.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-1k.E || rm -f N-1k.E
+$xx '(' --version ')' > P-1k.O 2> P-1k.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-1k failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-1k.O $srcdir/P-1k.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-1k"; fi;;
+ 1) $echo "Test P-1k failed: files P-1k.O and $srcdir/P-1k.X differ" 1>&2
+ (diff -c P-1k.O $srcdir/P-1k.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-1k may have failed." 1>&2
+ $echo The command "cmp P-1k.O $srcdir/P-1k.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-1k.E || rm -f P-1k.E
+$xx ! '(' --version ')' > NP-1k.O 2> NP-1k.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-1k failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-1k.O $srcdir/NP-1k.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-1k"; fi;;
+ 1) $echo "Test NP-1k failed: files NP-1k.O and $srcdir/NP-1k.X differ" 1>&2
+ (diff -c NP-1k.O $srcdir/NP-1k.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-1k may have failed." 1>&2
+ $echo The command "cmp NP-1k.O $srcdir/NP-1k.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-1k.E || rm -f NP-1k.E
+$xx ! ! '(' --version ')' > NNP-1k.O 2> NNP-1k.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-1k failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-1k.O $srcdir/NNP-1k.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-1k"; fi;;
+ 1) $echo "Test NNP-1k failed: files NNP-1k.O and $srcdir/NNP-1k.X differ" 1>&2
+ (diff -c NNP-1k.O $srcdir/NNP-1k.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-1k may have failed." 1>&2
+ $echo The command "cmp NNP-1k.O $srcdir/NNP-1k.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-1k.E || rm -f NNP-1k.E
+$xx ! t = t > N-streq-1.O 2> N-streq-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-streq-1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-streq-1.O $srcdir/N-streq-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-streq-1"; fi;;
+ 1) $echo "Test N-streq-1 failed: files N-streq-1.O and $srcdir/N-streq-1.X differ" 1>&2
+ (diff -c N-streq-1.O $srcdir/N-streq-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-streq-1 may have failed." 1>&2
+ $echo The command "cmp N-streq-1.O $srcdir/N-streq-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-streq-1.E || rm -f N-streq-1.E
+$xx '(' t = t ')' > P-streq-1.O 2> P-streq-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-streq-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-streq-1.O $srcdir/P-streq-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-streq-1"; fi;;
+ 1) $echo "Test P-streq-1 failed: files P-streq-1.O and $srcdir/P-streq-1.X differ" 1>&2
+ (diff -c P-streq-1.O $srcdir/P-streq-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-streq-1 may have failed." 1>&2
+ $echo The command "cmp P-streq-1.O $srcdir/P-streq-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-streq-1.E || rm -f P-streq-1.E
+$xx ! '(' t = t ')' > NP-streq-1.O 2> NP-streq-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-streq-1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-streq-1.O $srcdir/NP-streq-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-streq-1"; fi;;
+ 1) $echo "Test NP-streq-1 failed: files NP-streq-1.O and $srcdir/NP-streq-1.X differ" 1>&2
+ (diff -c NP-streq-1.O $srcdir/NP-streq-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-streq-1 may have failed." 1>&2
+ $echo The command "cmp NP-streq-1.O $srcdir/NP-streq-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-streq-1.E || rm -f NP-streq-1.E
+$xx ! ! '(' t = t ')' > NNP-streq-1.O 2> NNP-streq-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-streq-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-streq-1.O $srcdir/NNP-streq-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-streq-1"; fi;;
+ 1) $echo "Test NNP-streq-1 failed: files NNP-streq-1.O and $srcdir/NNP-streq-1.X differ" 1>&2
+ (diff -c NNP-streq-1.O $srcdir/NNP-streq-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-streq-1 may have failed." 1>&2
+ $echo The command "cmp NNP-streq-1.O $srcdir/NNP-streq-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-streq-1.E || rm -f NNP-streq-1.E
+$xx ! t = f > N-streq-2.O 2> N-streq-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-streq-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-streq-2.O $srcdir/N-streq-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-streq-2"; fi;;
+ 1) $echo "Test N-streq-2 failed: files N-streq-2.O and $srcdir/N-streq-2.X differ" 1>&2
+ (diff -c N-streq-2.O $srcdir/N-streq-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-streq-2 may have failed." 1>&2
+ $echo The command "cmp N-streq-2.O $srcdir/N-streq-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-streq-2.E || rm -f N-streq-2.E
+$xx '(' t = f ')' > P-streq-2.O 2> P-streq-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test P-streq-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-streq-2.O $srcdir/P-streq-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-streq-2"; fi;;
+ 1) $echo "Test P-streq-2 failed: files P-streq-2.O and $srcdir/P-streq-2.X differ" 1>&2
+ (diff -c P-streq-2.O $srcdir/P-streq-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-streq-2 may have failed." 1>&2
+ $echo The command "cmp P-streq-2.O $srcdir/P-streq-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-streq-2.E || rm -f P-streq-2.E
+$xx ! '(' t = f ')' > NP-streq-2.O 2> NP-streq-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test NP-streq-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-streq-2.O $srcdir/NP-streq-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-streq-2"; fi;;
+ 1) $echo "Test NP-streq-2 failed: files NP-streq-2.O and $srcdir/NP-streq-2.X differ" 1>&2
+ (diff -c NP-streq-2.O $srcdir/NP-streq-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-streq-2 may have failed." 1>&2
+ $echo The command "cmp NP-streq-2.O $srcdir/NP-streq-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-streq-2.E || rm -f NP-streq-2.E
+$xx ! ! '(' t = f ')' > NNP-streq-2.O 2> NNP-streq-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test NNP-streq-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-streq-2.O $srcdir/NNP-streq-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-streq-2"; fi;;
+ 1) $echo "Test NNP-streq-2 failed: files NNP-streq-2.O and $srcdir/NNP-streq-2.X differ" 1>&2
+ (diff -c NNP-streq-2.O $srcdir/NNP-streq-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-streq-2 may have failed." 1>&2
+ $echo The command "cmp NNP-streq-2.O $srcdir/NNP-streq-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-streq-2.E || rm -f NNP-streq-2.E
+$xx ! ! = ! > N-streq-3.O 2> N-streq-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-streq-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-streq-3.O $srcdir/N-streq-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-streq-3"; fi;;
+ 1) $echo "Test N-streq-3 failed: files N-streq-3.O and $srcdir/N-streq-3.X differ" 1>&2
+ (diff -c N-streq-3.O $srcdir/N-streq-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-streq-3 may have failed." 1>&2
+ $echo The command "cmp N-streq-3.O $srcdir/N-streq-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-streq-3.E || rm -f N-streq-3.E
+$xx '(' ! = ! ')' > P-streq-3.O 2> P-streq-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-streq-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-streq-3.O $srcdir/P-streq-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-streq-3"; fi;;
+ 1) $echo "Test P-streq-3 failed: files P-streq-3.O and $srcdir/P-streq-3.X differ" 1>&2
+ (diff -c P-streq-3.O $srcdir/P-streq-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-streq-3 may have failed." 1>&2
+ $echo The command "cmp P-streq-3.O $srcdir/P-streq-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-streq-3.E || rm -f P-streq-3.E
+$xx ! '(' ! = ! ')' > NP-streq-3.O 2> NP-streq-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-streq-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-streq-3.O $srcdir/NP-streq-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-streq-3"; fi;;
+ 1) $echo "Test NP-streq-3 failed: files NP-streq-3.O and $srcdir/NP-streq-3.X differ" 1>&2
+ (diff -c NP-streq-3.O $srcdir/NP-streq-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-streq-3 may have failed." 1>&2
+ $echo The command "cmp NP-streq-3.O $srcdir/NP-streq-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-streq-3.E || rm -f NP-streq-3.E
+$xx ! ! '(' ! = ! ')' > NNP-streq-3.O 2> NNP-streq-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-streq-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-streq-3.O $srcdir/NNP-streq-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-streq-3"; fi;;
+ 1) $echo "Test NNP-streq-3 failed: files NNP-streq-3.O and $srcdir/NNP-streq-3.X differ" 1>&2
+ (diff -c NNP-streq-3.O $srcdir/NNP-streq-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-streq-3 may have failed." 1>&2
+ $echo The command "cmp NNP-streq-3.O $srcdir/NNP-streq-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-streq-3.E || rm -f NNP-streq-3.E
+$xx ! = = = > N-streq-4.O 2> N-streq-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-streq-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-streq-4.O $srcdir/N-streq-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-streq-4"; fi;;
+ 1) $echo "Test N-streq-4 failed: files N-streq-4.O and $srcdir/N-streq-4.X differ" 1>&2
+ (diff -c N-streq-4.O $srcdir/N-streq-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-streq-4 may have failed." 1>&2
+ $echo The command "cmp N-streq-4.O $srcdir/N-streq-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-streq-4.E || rm -f N-streq-4.E
+$xx '(' = = = ')' > P-streq-4.O 2> P-streq-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-streq-4 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-streq-4.O $srcdir/P-streq-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-streq-4"; fi;;
+ 1) $echo "Test P-streq-4 failed: files P-streq-4.O and $srcdir/P-streq-4.X differ" 1>&2
+ (diff -c P-streq-4.O $srcdir/P-streq-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-streq-4 may have failed." 1>&2
+ $echo The command "cmp P-streq-4.O $srcdir/P-streq-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-streq-4.E || rm -f P-streq-4.E
+$xx ! '(' = = = ')' > NP-streq-4.O 2> NP-streq-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-streq-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-streq-4.O $srcdir/NP-streq-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-streq-4"; fi;;
+ 1) $echo "Test NP-streq-4 failed: files NP-streq-4.O and $srcdir/NP-streq-4.X differ" 1>&2
+ (diff -c NP-streq-4.O $srcdir/NP-streq-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-streq-4 may have failed." 1>&2
+ $echo The command "cmp NP-streq-4.O $srcdir/NP-streq-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-streq-4.E || rm -f NP-streq-4.E
+$xx ! ! '(' = = = ')' > NNP-streq-4.O 2> NNP-streq-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-streq-4 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-streq-4.O $srcdir/NNP-streq-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-streq-4"; fi;;
+ 1) $echo "Test NNP-streq-4 failed: files NNP-streq-4.O and $srcdir/NNP-streq-4.X differ" 1>&2
+ (diff -c NNP-streq-4.O $srcdir/NNP-streq-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-streq-4 may have failed." 1>&2
+ $echo The command "cmp NNP-streq-4.O $srcdir/NNP-streq-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-streq-4.E || rm -f NNP-streq-4.E
+$xx ! '(' = '(' > N-streq-5.O 2> N-streq-5.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-streq-5 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-streq-5.O $srcdir/N-streq-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-streq-5"; fi;;
+ 1) $echo "Test N-streq-5 failed: files N-streq-5.O and $srcdir/N-streq-5.X differ" 1>&2
+ (diff -c N-streq-5.O $srcdir/N-streq-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-streq-5 may have failed." 1>&2
+ $echo The command "cmp N-streq-5.O $srcdir/N-streq-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-streq-5.E || rm -f N-streq-5.E
+$xx '(' '(' = '(' ')' > P-streq-5.O 2> P-streq-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-streq-5 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-streq-5.O $srcdir/P-streq-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-streq-5"; fi;;
+ 1) $echo "Test P-streq-5 failed: files P-streq-5.O and $srcdir/P-streq-5.X differ" 1>&2
+ (diff -c P-streq-5.O $srcdir/P-streq-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-streq-5 may have failed." 1>&2
+ $echo The command "cmp P-streq-5.O $srcdir/P-streq-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-streq-5.E || rm -f P-streq-5.E
+$xx ! '(' '(' = '(' ')' > NP-streq-5.O 2> NP-streq-5.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-streq-5 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-streq-5.O $srcdir/NP-streq-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-streq-5"; fi;;
+ 1) $echo "Test NP-streq-5 failed: files NP-streq-5.O and $srcdir/NP-streq-5.X differ" 1>&2
+ (diff -c NP-streq-5.O $srcdir/NP-streq-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-streq-5 may have failed." 1>&2
+ $echo The command "cmp NP-streq-5.O $srcdir/NP-streq-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-streq-5.E || rm -f NP-streq-5.E
+$xx ! ! '(' '(' = '(' ')' > NNP-streq-5.O 2> NNP-streq-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-streq-5 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-streq-5.O $srcdir/NNP-streq-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-streq-5"; fi;;
+ 1) $echo "Test NNP-streq-5 failed: files NNP-streq-5.O and $srcdir/NNP-streq-5.X differ" 1>&2
+ (diff -c NNP-streq-5.O $srcdir/NNP-streq-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-streq-5 may have failed." 1>&2
+ $echo The command "cmp NNP-streq-5.O $srcdir/NNP-streq-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-streq-5.E || rm -f NNP-streq-5.E
+$xx ! '(' = ')' > N-streq-6.O 2> N-streq-6.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-streq-6 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-streq-6.O $srcdir/N-streq-6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-streq-6"; fi;;
+ 1) $echo "Test N-streq-6 failed: files N-streq-6.O and $srcdir/N-streq-6.X differ" 1>&2
+ (diff -c N-streq-6.O $srcdir/N-streq-6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-streq-6 may have failed." 1>&2
+ $echo The command "cmp N-streq-6.O $srcdir/N-streq-6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-streq-6.E || rm -f N-streq-6.E
+$xx ! t != t > N-strne-1.O 2> N-strne-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-strne-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-strne-1.O $srcdir/N-strne-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-strne-1"; fi;;
+ 1) $echo "Test N-strne-1 failed: files N-strne-1.O and $srcdir/N-strne-1.X differ" 1>&2
+ (diff -c N-strne-1.O $srcdir/N-strne-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-strne-1 may have failed." 1>&2
+ $echo The command "cmp N-strne-1.O $srcdir/N-strne-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-strne-1.E || rm -f N-strne-1.E
+$xx '(' t != t ')' > P-strne-1.O 2> P-strne-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test P-strne-1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-strne-1.O $srcdir/P-strne-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-strne-1"; fi;;
+ 1) $echo "Test P-strne-1 failed: files P-strne-1.O and $srcdir/P-strne-1.X differ" 1>&2
+ (diff -c P-strne-1.O $srcdir/P-strne-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-strne-1 may have failed." 1>&2
+ $echo The command "cmp P-strne-1.O $srcdir/P-strne-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-strne-1.E || rm -f P-strne-1.E
+$xx ! '(' t != t ')' > NP-strne-1.O 2> NP-strne-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test NP-strne-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-strne-1.O $srcdir/NP-strne-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-strne-1"; fi;;
+ 1) $echo "Test NP-strne-1 failed: files NP-strne-1.O and $srcdir/NP-strne-1.X differ" 1>&2
+ (diff -c NP-strne-1.O $srcdir/NP-strne-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-strne-1 may have failed." 1>&2
+ $echo The command "cmp NP-strne-1.O $srcdir/NP-strne-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-strne-1.E || rm -f NP-strne-1.E
+$xx ! ! '(' t != t ')' > NNP-strne-1.O 2> NNP-strne-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test NNP-strne-1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-strne-1.O $srcdir/NNP-strne-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-strne-1"; fi;;
+ 1) $echo "Test NNP-strne-1 failed: files NNP-strne-1.O and $srcdir/NNP-strne-1.X differ" 1>&2
+ (diff -c NNP-strne-1.O $srcdir/NNP-strne-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-strne-1 may have failed." 1>&2
+ $echo The command "cmp NNP-strne-1.O $srcdir/NNP-strne-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-strne-1.E || rm -f NNP-strne-1.E
+$xx ! t != f > N-strne-2.O 2> N-strne-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-strne-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-strne-2.O $srcdir/N-strne-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-strne-2"; fi;;
+ 1) $echo "Test N-strne-2 failed: files N-strne-2.O and $srcdir/N-strne-2.X differ" 1>&2
+ (diff -c N-strne-2.O $srcdir/N-strne-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-strne-2 may have failed." 1>&2
+ $echo The command "cmp N-strne-2.O $srcdir/N-strne-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-strne-2.E || rm -f N-strne-2.E
+$xx '(' t != f ')' > P-strne-2.O 2> P-strne-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-strne-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-strne-2.O $srcdir/P-strne-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-strne-2"; fi;;
+ 1) $echo "Test P-strne-2 failed: files P-strne-2.O and $srcdir/P-strne-2.X differ" 1>&2
+ (diff -c P-strne-2.O $srcdir/P-strne-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-strne-2 may have failed." 1>&2
+ $echo The command "cmp P-strne-2.O $srcdir/P-strne-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-strne-2.E || rm -f P-strne-2.E
+$xx ! '(' t != f ')' > NP-strne-2.O 2> NP-strne-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-strne-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-strne-2.O $srcdir/NP-strne-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-strne-2"; fi;;
+ 1) $echo "Test NP-strne-2 failed: files NP-strne-2.O and $srcdir/NP-strne-2.X differ" 1>&2
+ (diff -c NP-strne-2.O $srcdir/NP-strne-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-strne-2 may have failed." 1>&2
+ $echo The command "cmp NP-strne-2.O $srcdir/NP-strne-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-strne-2.E || rm -f NP-strne-2.E
+$xx ! ! '(' t != f ')' > NNP-strne-2.O 2> NNP-strne-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-strne-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-strne-2.O $srcdir/NNP-strne-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-strne-2"; fi;;
+ 1) $echo "Test NNP-strne-2 failed: files NNP-strne-2.O and $srcdir/NNP-strne-2.X differ" 1>&2
+ (diff -c NNP-strne-2.O $srcdir/NNP-strne-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-strne-2 may have failed." 1>&2
+ $echo The command "cmp NNP-strne-2.O $srcdir/NNP-strne-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-strne-2.E || rm -f NNP-strne-2.E
+$xx ! ! != ! > N-strne-3.O 2> N-strne-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-strne-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-strne-3.O $srcdir/N-strne-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-strne-3"; fi;;
+ 1) $echo "Test N-strne-3 failed: files N-strne-3.O and $srcdir/N-strne-3.X differ" 1>&2
+ (diff -c N-strne-3.O $srcdir/N-strne-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-strne-3 may have failed." 1>&2
+ $echo The command "cmp N-strne-3.O $srcdir/N-strne-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-strne-3.E || rm -f N-strne-3.E
+$xx '(' ! != ! ')' > P-strne-3.O 2> P-strne-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test P-strne-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-strne-3.O $srcdir/P-strne-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-strne-3"; fi;;
+ 1) $echo "Test P-strne-3 failed: files P-strne-3.O and $srcdir/P-strne-3.X differ" 1>&2
+ (diff -c P-strne-3.O $srcdir/P-strne-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-strne-3 may have failed." 1>&2
+ $echo The command "cmp P-strne-3.O $srcdir/P-strne-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-strne-3.E || rm -f P-strne-3.E
+$xx ! '(' ! != ! ')' > NP-strne-3.O 2> NP-strne-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test NP-strne-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-strne-3.O $srcdir/NP-strne-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-strne-3"; fi;;
+ 1) $echo "Test NP-strne-3 failed: files NP-strne-3.O and $srcdir/NP-strne-3.X differ" 1>&2
+ (diff -c NP-strne-3.O $srcdir/NP-strne-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-strne-3 may have failed." 1>&2
+ $echo The command "cmp NP-strne-3.O $srcdir/NP-strne-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-strne-3.E || rm -f NP-strne-3.E
+$xx ! ! '(' ! != ! ')' > NNP-strne-3.O 2> NNP-strne-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test NNP-strne-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-strne-3.O $srcdir/NNP-strne-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-strne-3"; fi;;
+ 1) $echo "Test NNP-strne-3 failed: files NNP-strne-3.O and $srcdir/NNP-strne-3.X differ" 1>&2
+ (diff -c NNP-strne-3.O $srcdir/NNP-strne-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-strne-3 may have failed." 1>&2
+ $echo The command "cmp NNP-strne-3.O $srcdir/NNP-strne-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-strne-3.E || rm -f NNP-strne-3.E
+$xx ! = != = > N-strne-4.O 2> N-strne-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-strne-4 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-strne-4.O $srcdir/N-strne-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-strne-4"; fi;;
+ 1) $echo "Test N-strne-4 failed: files N-strne-4.O and $srcdir/N-strne-4.X differ" 1>&2
+ (diff -c N-strne-4.O $srcdir/N-strne-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-strne-4 may have failed." 1>&2
+ $echo The command "cmp N-strne-4.O $srcdir/N-strne-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-strne-4.E || rm -f N-strne-4.E
+$xx '(' = != = ')' > P-strne-4.O 2> P-strne-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test P-strne-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-strne-4.O $srcdir/P-strne-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-strne-4"; fi;;
+ 1) $echo "Test P-strne-4 failed: files P-strne-4.O and $srcdir/P-strne-4.X differ" 1>&2
+ (diff -c P-strne-4.O $srcdir/P-strne-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-strne-4 may have failed." 1>&2
+ $echo The command "cmp P-strne-4.O $srcdir/P-strne-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-strne-4.E || rm -f P-strne-4.E
+$xx ! '(' = != = ')' > NP-strne-4.O 2> NP-strne-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test NP-strne-4 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-strne-4.O $srcdir/NP-strne-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-strne-4"; fi;;
+ 1) $echo "Test NP-strne-4 failed: files NP-strne-4.O and $srcdir/NP-strne-4.X differ" 1>&2
+ (diff -c NP-strne-4.O $srcdir/NP-strne-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-strne-4 may have failed." 1>&2
+ $echo The command "cmp NP-strne-4.O $srcdir/NP-strne-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-strne-4.E || rm -f NP-strne-4.E
+$xx ! ! '(' = != = ')' > NNP-strne-4.O 2> NNP-strne-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test NNP-strne-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-strne-4.O $srcdir/NNP-strne-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-strne-4"; fi;;
+ 1) $echo "Test NNP-strne-4 failed: files NNP-strne-4.O and $srcdir/NNP-strne-4.X differ" 1>&2
+ (diff -c NNP-strne-4.O $srcdir/NNP-strne-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-strne-4 may have failed." 1>&2
+ $echo The command "cmp NNP-strne-4.O $srcdir/NNP-strne-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-strne-4.E || rm -f NNP-strne-4.E
+$xx ! '(' != '(' > N-strne-5.O 2> N-strne-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-strne-5 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-strne-5.O $srcdir/N-strne-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-strne-5"; fi;;
+ 1) $echo "Test N-strne-5 failed: files N-strne-5.O and $srcdir/N-strne-5.X differ" 1>&2
+ (diff -c N-strne-5.O $srcdir/N-strne-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-strne-5 may have failed." 1>&2
+ $echo The command "cmp N-strne-5.O $srcdir/N-strne-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-strne-5.E || rm -f N-strne-5.E
+$xx '(' '(' != '(' ')' > P-strne-5.O 2> P-strne-5.E
+code=$?
+if test $code != 1; then
+ $echo "Test P-strne-5 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-strne-5.O $srcdir/P-strne-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-strne-5"; fi;;
+ 1) $echo "Test P-strne-5 failed: files P-strne-5.O and $srcdir/P-strne-5.X differ" 1>&2
+ (diff -c P-strne-5.O $srcdir/P-strne-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-strne-5 may have failed." 1>&2
+ $echo The command "cmp P-strne-5.O $srcdir/P-strne-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-strne-5.E || rm -f P-strne-5.E
+$xx ! '(' '(' != '(' ')' > NP-strne-5.O 2> NP-strne-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test NP-strne-5 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-strne-5.O $srcdir/NP-strne-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-strne-5"; fi;;
+ 1) $echo "Test NP-strne-5 failed: files NP-strne-5.O and $srcdir/NP-strne-5.X differ" 1>&2
+ (diff -c NP-strne-5.O $srcdir/NP-strne-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-strne-5 may have failed." 1>&2
+ $echo The command "cmp NP-strne-5.O $srcdir/NP-strne-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-strne-5.E || rm -f NP-strne-5.E
+$xx ! ! '(' '(' != '(' ')' > NNP-strne-5.O 2> NNP-strne-5.E
+code=$?
+if test $code != 1; then
+ $echo "Test NNP-strne-5 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-strne-5.O $srcdir/NNP-strne-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-strne-5"; fi;;
+ 1) $echo "Test NNP-strne-5 failed: files NNP-strne-5.O and $srcdir/NNP-strne-5.X differ" 1>&2
+ (diff -c NNP-strne-5.O $srcdir/NNP-strne-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-strne-5 may have failed." 1>&2
+ $echo The command "cmp NNP-strne-5.O $srcdir/NNP-strne-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-strne-5.E || rm -f NNP-strne-5.E
+$xx ! '(' != ')' > N-strne-6.O 2> N-strne-6.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-strne-6 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-strne-6.O $srcdir/N-strne-6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-strne-6"; fi;;
+ 1) $echo "Test N-strne-6 failed: files N-strne-6.O and $srcdir/N-strne-6.X differ" 1>&2
+ (diff -c N-strne-6.O $srcdir/N-strne-6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-strne-6 may have failed." 1>&2
+ $echo The command "cmp N-strne-6.O $srcdir/N-strne-6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-strne-6.E || rm -f N-strne-6.E
+$xx ! t -a t > N-and-1.O 2> N-and-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-and-1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-and-1.O $srcdir/N-and-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-and-1"; fi;;
+ 1) $echo "Test N-and-1 failed: files N-and-1.O and $srcdir/N-and-1.X differ" 1>&2
+ (diff -c N-and-1.O $srcdir/N-and-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-and-1 may have failed." 1>&2
+ $echo The command "cmp N-and-1.O $srcdir/N-and-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-and-1.E || rm -f N-and-1.E
+$xx '(' t -a t ')' > P-and-1.O 2> P-and-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-and-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-and-1.O $srcdir/P-and-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-and-1"; fi;;
+ 1) $echo "Test P-and-1 failed: files P-and-1.O and $srcdir/P-and-1.X differ" 1>&2
+ (diff -c P-and-1.O $srcdir/P-and-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-and-1 may have failed." 1>&2
+ $echo The command "cmp P-and-1.O $srcdir/P-and-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-and-1.E || rm -f P-and-1.E
+$xx ! '(' t -a t ')' > NP-and-1.O 2> NP-and-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-and-1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-and-1.O $srcdir/NP-and-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-and-1"; fi;;
+ 1) $echo "Test NP-and-1 failed: files NP-and-1.O and $srcdir/NP-and-1.X differ" 1>&2
+ (diff -c NP-and-1.O $srcdir/NP-and-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-and-1 may have failed." 1>&2
+ $echo The command "cmp NP-and-1.O $srcdir/NP-and-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-and-1.E || rm -f NP-and-1.E
+$xx ! ! '(' t -a t ')' > NNP-and-1.O 2> NNP-and-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-and-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-and-1.O $srcdir/NNP-and-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-and-1"; fi;;
+ 1) $echo "Test NNP-and-1 failed: files NNP-and-1.O and $srcdir/NNP-and-1.X differ" 1>&2
+ (diff -c NNP-and-1.O $srcdir/NNP-and-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-and-1 may have failed." 1>&2
+ $echo The command "cmp NNP-and-1.O $srcdir/NNP-and-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-and-1.E || rm -f NNP-and-1.E
+$xx ! '' -a t > N-and-2.O 2> N-and-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-and-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-and-2.O $srcdir/N-and-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-and-2"; fi;;
+ 1) $echo "Test N-and-2 failed: files N-and-2.O and $srcdir/N-and-2.X differ" 1>&2
+ (diff -c N-and-2.O $srcdir/N-and-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-and-2 may have failed." 1>&2
+ $echo The command "cmp N-and-2.O $srcdir/N-and-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-and-2.E || rm -f N-and-2.E
+$xx '(' '' -a t ')' > P-and-2.O 2> P-and-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test P-and-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-and-2.O $srcdir/P-and-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-and-2"; fi;;
+ 1) $echo "Test P-and-2 failed: files P-and-2.O and $srcdir/P-and-2.X differ" 1>&2
+ (diff -c P-and-2.O $srcdir/P-and-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-and-2 may have failed." 1>&2
+ $echo The command "cmp P-and-2.O $srcdir/P-and-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-and-2.E || rm -f P-and-2.E
+$xx ! '(' '' -a t ')' > NP-and-2.O 2> NP-and-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test NP-and-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-and-2.O $srcdir/NP-and-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-and-2"; fi;;
+ 1) $echo "Test NP-and-2 failed: files NP-and-2.O and $srcdir/NP-and-2.X differ" 1>&2
+ (diff -c NP-and-2.O $srcdir/NP-and-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-and-2 may have failed." 1>&2
+ $echo The command "cmp NP-and-2.O $srcdir/NP-and-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-and-2.E || rm -f NP-and-2.E
+$xx ! ! '(' '' -a t ')' > NNP-and-2.O 2> NNP-and-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test NNP-and-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-and-2.O $srcdir/NNP-and-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-and-2"; fi;;
+ 1) $echo "Test NNP-and-2 failed: files NNP-and-2.O and $srcdir/NNP-and-2.X differ" 1>&2
+ (diff -c NNP-and-2.O $srcdir/NNP-and-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-and-2 may have failed." 1>&2
+ $echo The command "cmp NNP-and-2.O $srcdir/NNP-and-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-and-2.E || rm -f NNP-and-2.E
+$xx ! t -a '' > N-and-3.O 2> N-and-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-and-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-and-3.O $srcdir/N-and-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-and-3"; fi;;
+ 1) $echo "Test N-and-3 failed: files N-and-3.O and $srcdir/N-and-3.X differ" 1>&2
+ (diff -c N-and-3.O $srcdir/N-and-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-and-3 may have failed." 1>&2
+ $echo The command "cmp N-and-3.O $srcdir/N-and-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-and-3.E || rm -f N-and-3.E
+$xx '(' t -a '' ')' > P-and-3.O 2> P-and-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test P-and-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-and-3.O $srcdir/P-and-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-and-3"; fi;;
+ 1) $echo "Test P-and-3 failed: files P-and-3.O and $srcdir/P-and-3.X differ" 1>&2
+ (diff -c P-and-3.O $srcdir/P-and-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-and-3 may have failed." 1>&2
+ $echo The command "cmp P-and-3.O $srcdir/P-and-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-and-3.E || rm -f P-and-3.E
+$xx ! '(' t -a '' ')' > NP-and-3.O 2> NP-and-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test NP-and-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-and-3.O $srcdir/NP-and-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-and-3"; fi;;
+ 1) $echo "Test NP-and-3 failed: files NP-and-3.O and $srcdir/NP-and-3.X differ" 1>&2
+ (diff -c NP-and-3.O $srcdir/NP-and-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-and-3 may have failed." 1>&2
+ $echo The command "cmp NP-and-3.O $srcdir/NP-and-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-and-3.E || rm -f NP-and-3.E
+$xx ! ! '(' t -a '' ')' > NNP-and-3.O 2> NNP-and-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test NNP-and-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-and-3.O $srcdir/NNP-and-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-and-3"; fi;;
+ 1) $echo "Test NNP-and-3 failed: files NNP-and-3.O and $srcdir/NNP-and-3.X differ" 1>&2
+ (diff -c NNP-and-3.O $srcdir/NNP-and-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-and-3 may have failed." 1>&2
+ $echo The command "cmp NNP-and-3.O $srcdir/NNP-and-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-and-3.E || rm -f NNP-and-3.E
+$xx ! '' -a '' > N-and-4.O 2> N-and-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-and-4 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-and-4.O $srcdir/N-and-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-and-4"; fi;;
+ 1) $echo "Test N-and-4 failed: files N-and-4.O and $srcdir/N-and-4.X differ" 1>&2
+ (diff -c N-and-4.O $srcdir/N-and-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-and-4 may have failed." 1>&2
+ $echo The command "cmp N-and-4.O $srcdir/N-and-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-and-4.E || rm -f N-and-4.E
+$xx '(' '' -a '' ')' > P-and-4.O 2> P-and-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test P-and-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-and-4.O $srcdir/P-and-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-and-4"; fi;;
+ 1) $echo "Test P-and-4 failed: files P-and-4.O and $srcdir/P-and-4.X differ" 1>&2
+ (diff -c P-and-4.O $srcdir/P-and-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-and-4 may have failed." 1>&2
+ $echo The command "cmp P-and-4.O $srcdir/P-and-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-and-4.E || rm -f P-and-4.E
+$xx ! '(' '' -a '' ')' > NP-and-4.O 2> NP-and-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test NP-and-4 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-and-4.O $srcdir/NP-and-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-and-4"; fi;;
+ 1) $echo "Test NP-and-4 failed: files NP-and-4.O and $srcdir/NP-and-4.X differ" 1>&2
+ (diff -c NP-and-4.O $srcdir/NP-and-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-and-4 may have failed." 1>&2
+ $echo The command "cmp NP-and-4.O $srcdir/NP-and-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-and-4.E || rm -f NP-and-4.E
+$xx ! ! '(' '' -a '' ')' > NNP-and-4.O 2> NNP-and-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test NNP-and-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-and-4.O $srcdir/NNP-and-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-and-4"; fi;;
+ 1) $echo "Test NNP-and-4 failed: files NNP-and-4.O and $srcdir/NNP-and-4.X differ" 1>&2
+ (diff -c NNP-and-4.O $srcdir/NNP-and-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-and-4 may have failed." 1>&2
+ $echo The command "cmp NNP-and-4.O $srcdir/NNP-and-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-and-4.E || rm -f NNP-and-4.E
+$xx ! t -o t > N-or-1.O 2> N-or-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-or-1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-or-1.O $srcdir/N-or-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-or-1"; fi;;
+ 1) $echo "Test N-or-1 failed: files N-or-1.O and $srcdir/N-or-1.X differ" 1>&2
+ (diff -c N-or-1.O $srcdir/N-or-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-or-1 may have failed." 1>&2
+ $echo The command "cmp N-or-1.O $srcdir/N-or-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-or-1.E || rm -f N-or-1.E
+$xx '(' t -o t ')' > P-or-1.O 2> P-or-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-or-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-or-1.O $srcdir/P-or-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-or-1"; fi;;
+ 1) $echo "Test P-or-1 failed: files P-or-1.O and $srcdir/P-or-1.X differ" 1>&2
+ (diff -c P-or-1.O $srcdir/P-or-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-or-1 may have failed." 1>&2
+ $echo The command "cmp P-or-1.O $srcdir/P-or-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-or-1.E || rm -f P-or-1.E
+$xx ! '(' t -o t ')' > NP-or-1.O 2> NP-or-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-or-1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-or-1.O $srcdir/NP-or-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-or-1"; fi;;
+ 1) $echo "Test NP-or-1 failed: files NP-or-1.O and $srcdir/NP-or-1.X differ" 1>&2
+ (diff -c NP-or-1.O $srcdir/NP-or-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-or-1 may have failed." 1>&2
+ $echo The command "cmp NP-or-1.O $srcdir/NP-or-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-or-1.E || rm -f NP-or-1.E
+$xx ! ! '(' t -o t ')' > NNP-or-1.O 2> NNP-or-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-or-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-or-1.O $srcdir/NNP-or-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-or-1"; fi;;
+ 1) $echo "Test NNP-or-1 failed: files NNP-or-1.O and $srcdir/NNP-or-1.X differ" 1>&2
+ (diff -c NNP-or-1.O $srcdir/NNP-or-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-or-1 may have failed." 1>&2
+ $echo The command "cmp NNP-or-1.O $srcdir/NNP-or-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-or-1.E || rm -f NNP-or-1.E
+$xx ! '' -o t > N-or-2.O 2> N-or-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-or-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-or-2.O $srcdir/N-or-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-or-2"; fi;;
+ 1) $echo "Test N-or-2 failed: files N-or-2.O and $srcdir/N-or-2.X differ" 1>&2
+ (diff -c N-or-2.O $srcdir/N-or-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-or-2 may have failed." 1>&2
+ $echo The command "cmp N-or-2.O $srcdir/N-or-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-or-2.E || rm -f N-or-2.E
+$xx '(' '' -o t ')' > P-or-2.O 2> P-or-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-or-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-or-2.O $srcdir/P-or-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-or-2"; fi;;
+ 1) $echo "Test P-or-2 failed: files P-or-2.O and $srcdir/P-or-2.X differ" 1>&2
+ (diff -c P-or-2.O $srcdir/P-or-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-or-2 may have failed." 1>&2
+ $echo The command "cmp P-or-2.O $srcdir/P-or-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-or-2.E || rm -f P-or-2.E
+$xx ! '(' '' -o t ')' > NP-or-2.O 2> NP-or-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-or-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-or-2.O $srcdir/NP-or-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-or-2"; fi;;
+ 1) $echo "Test NP-or-2 failed: files NP-or-2.O and $srcdir/NP-or-2.X differ" 1>&2
+ (diff -c NP-or-2.O $srcdir/NP-or-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-or-2 may have failed." 1>&2
+ $echo The command "cmp NP-or-2.O $srcdir/NP-or-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-or-2.E || rm -f NP-or-2.E
+$xx ! ! '(' '' -o t ')' > NNP-or-2.O 2> NNP-or-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-or-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-or-2.O $srcdir/NNP-or-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-or-2"; fi;;
+ 1) $echo "Test NNP-or-2 failed: files NNP-or-2.O and $srcdir/NNP-or-2.X differ" 1>&2
+ (diff -c NNP-or-2.O $srcdir/NNP-or-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-or-2 may have failed." 1>&2
+ $echo The command "cmp NNP-or-2.O $srcdir/NNP-or-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-or-2.E || rm -f NNP-or-2.E
+$xx ! t -o '' > N-or-3.O 2> N-or-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-or-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-or-3.O $srcdir/N-or-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-or-3"; fi;;
+ 1) $echo "Test N-or-3 failed: files N-or-3.O and $srcdir/N-or-3.X differ" 1>&2
+ (diff -c N-or-3.O $srcdir/N-or-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-or-3 may have failed." 1>&2
+ $echo The command "cmp N-or-3.O $srcdir/N-or-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-or-3.E || rm -f N-or-3.E
+$xx '(' t -o '' ')' > P-or-3.O 2> P-or-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-or-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-or-3.O $srcdir/P-or-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-or-3"; fi;;
+ 1) $echo "Test P-or-3 failed: files P-or-3.O and $srcdir/P-or-3.X differ" 1>&2
+ (diff -c P-or-3.O $srcdir/P-or-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-or-3 may have failed." 1>&2
+ $echo The command "cmp P-or-3.O $srcdir/P-or-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-or-3.E || rm -f P-or-3.E
+$xx ! '(' t -o '' ')' > NP-or-3.O 2> NP-or-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-or-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-or-3.O $srcdir/NP-or-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-or-3"; fi;;
+ 1) $echo "Test NP-or-3 failed: files NP-or-3.O and $srcdir/NP-or-3.X differ" 1>&2
+ (diff -c NP-or-3.O $srcdir/NP-or-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-or-3 may have failed." 1>&2
+ $echo The command "cmp NP-or-3.O $srcdir/NP-or-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-or-3.E || rm -f NP-or-3.E
+$xx ! ! '(' t -o '' ')' > NNP-or-3.O 2> NNP-or-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-or-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-or-3.O $srcdir/NNP-or-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-or-3"; fi;;
+ 1) $echo "Test NNP-or-3 failed: files NNP-or-3.O and $srcdir/NNP-or-3.X differ" 1>&2
+ (diff -c NNP-or-3.O $srcdir/NNP-or-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-or-3 may have failed." 1>&2
+ $echo The command "cmp NNP-or-3.O $srcdir/NNP-or-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-or-3.E || rm -f NNP-or-3.E
+$xx ! '' -o '' > N-or-4.O 2> N-or-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-or-4 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-or-4.O $srcdir/N-or-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-or-4"; fi;;
+ 1) $echo "Test N-or-4 failed: files N-or-4.O and $srcdir/N-or-4.X differ" 1>&2
+ (diff -c N-or-4.O $srcdir/N-or-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-or-4 may have failed." 1>&2
+ $echo The command "cmp N-or-4.O $srcdir/N-or-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-or-4.E || rm -f N-or-4.E
+$xx '(' '' -o '' ')' > P-or-4.O 2> P-or-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test P-or-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-or-4.O $srcdir/P-or-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-or-4"; fi;;
+ 1) $echo "Test P-or-4 failed: files P-or-4.O and $srcdir/P-or-4.X differ" 1>&2
+ (diff -c P-or-4.O $srcdir/P-or-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-or-4 may have failed." 1>&2
+ $echo The command "cmp P-or-4.O $srcdir/P-or-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-or-4.E || rm -f P-or-4.E
+$xx ! '(' '' -o '' ')' > NP-or-4.O 2> NP-or-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test NP-or-4 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-or-4.O $srcdir/NP-or-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-or-4"; fi;;
+ 1) $echo "Test NP-or-4 failed: files NP-or-4.O and $srcdir/NP-or-4.X differ" 1>&2
+ (diff -c NP-or-4.O $srcdir/NP-or-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-or-4 may have failed." 1>&2
+ $echo The command "cmp NP-or-4.O $srcdir/NP-or-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-or-4.E || rm -f NP-or-4.E
+$xx ! ! '(' '' -o '' ')' > NNP-or-4.O 2> NNP-or-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test NNP-or-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-or-4.O $srcdir/NNP-or-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-or-4"; fi;;
+ 1) $echo "Test NNP-or-4 failed: files NNP-or-4.O and $srcdir/NNP-or-4.X differ" 1>&2
+ (diff -c NNP-or-4.O $srcdir/NNP-or-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-or-4 may have failed." 1>&2
+ $echo The command "cmp NNP-or-4.O $srcdir/NNP-or-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-or-4.E || rm -f NNP-or-4.E
+$xx ! 9 -eq 9 > N-eq-1.O 2> N-eq-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-eq-1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-eq-1.O $srcdir/N-eq-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-eq-1"; fi;;
+ 1) $echo "Test N-eq-1 failed: files N-eq-1.O and $srcdir/N-eq-1.X differ" 1>&2
+ (diff -c N-eq-1.O $srcdir/N-eq-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-eq-1 may have failed." 1>&2
+ $echo The command "cmp N-eq-1.O $srcdir/N-eq-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-eq-1.E || rm -f N-eq-1.E
+$xx '(' 9 -eq 9 ')' > P-eq-1.O 2> P-eq-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-eq-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-eq-1.O $srcdir/P-eq-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-eq-1"; fi;;
+ 1) $echo "Test P-eq-1 failed: files P-eq-1.O and $srcdir/P-eq-1.X differ" 1>&2
+ (diff -c P-eq-1.O $srcdir/P-eq-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-eq-1 may have failed." 1>&2
+ $echo The command "cmp P-eq-1.O $srcdir/P-eq-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-eq-1.E || rm -f P-eq-1.E
+$xx ! '(' 9 -eq 9 ')' > NP-eq-1.O 2> NP-eq-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-eq-1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-eq-1.O $srcdir/NP-eq-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-eq-1"; fi;;
+ 1) $echo "Test NP-eq-1 failed: files NP-eq-1.O and $srcdir/NP-eq-1.X differ" 1>&2
+ (diff -c NP-eq-1.O $srcdir/NP-eq-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-eq-1 may have failed." 1>&2
+ $echo The command "cmp NP-eq-1.O $srcdir/NP-eq-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-eq-1.E || rm -f NP-eq-1.E
+$xx ! ! '(' 9 -eq 9 ')' > NNP-eq-1.O 2> NNP-eq-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-eq-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-eq-1.O $srcdir/NNP-eq-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-eq-1"; fi;;
+ 1) $echo "Test NNP-eq-1 failed: files NNP-eq-1.O and $srcdir/NNP-eq-1.X differ" 1>&2
+ (diff -c NNP-eq-1.O $srcdir/NNP-eq-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-eq-1 may have failed." 1>&2
+ $echo The command "cmp NNP-eq-1.O $srcdir/NNP-eq-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-eq-1.E || rm -f NNP-eq-1.E
+$xx ! 0 -eq 0 > N-eq-2.O 2> N-eq-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-eq-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-eq-2.O $srcdir/N-eq-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-eq-2"; fi;;
+ 1) $echo "Test N-eq-2 failed: files N-eq-2.O and $srcdir/N-eq-2.X differ" 1>&2
+ (diff -c N-eq-2.O $srcdir/N-eq-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-eq-2 may have failed." 1>&2
+ $echo The command "cmp N-eq-2.O $srcdir/N-eq-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-eq-2.E || rm -f N-eq-2.E
+$xx '(' 0 -eq 0 ')' > P-eq-2.O 2> P-eq-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-eq-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-eq-2.O $srcdir/P-eq-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-eq-2"; fi;;
+ 1) $echo "Test P-eq-2 failed: files P-eq-2.O and $srcdir/P-eq-2.X differ" 1>&2
+ (diff -c P-eq-2.O $srcdir/P-eq-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-eq-2 may have failed." 1>&2
+ $echo The command "cmp P-eq-2.O $srcdir/P-eq-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-eq-2.E || rm -f P-eq-2.E
+$xx ! '(' 0 -eq 0 ')' > NP-eq-2.O 2> NP-eq-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-eq-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-eq-2.O $srcdir/NP-eq-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-eq-2"; fi;;
+ 1) $echo "Test NP-eq-2 failed: files NP-eq-2.O and $srcdir/NP-eq-2.X differ" 1>&2
+ (diff -c NP-eq-2.O $srcdir/NP-eq-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-eq-2 may have failed." 1>&2
+ $echo The command "cmp NP-eq-2.O $srcdir/NP-eq-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-eq-2.E || rm -f NP-eq-2.E
+$xx ! ! '(' 0 -eq 0 ')' > NNP-eq-2.O 2> NNP-eq-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-eq-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-eq-2.O $srcdir/NNP-eq-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-eq-2"; fi;;
+ 1) $echo "Test NNP-eq-2 failed: files NNP-eq-2.O and $srcdir/NNP-eq-2.X differ" 1>&2
+ (diff -c NNP-eq-2.O $srcdir/NNP-eq-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-eq-2 may have failed." 1>&2
+ $echo The command "cmp NNP-eq-2.O $srcdir/NNP-eq-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-eq-2.E || rm -f NNP-eq-2.E
+$xx ! 0 -eq 00 > N-eq-3.O 2> N-eq-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-eq-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-eq-3.O $srcdir/N-eq-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-eq-3"; fi;;
+ 1) $echo "Test N-eq-3 failed: files N-eq-3.O and $srcdir/N-eq-3.X differ" 1>&2
+ (diff -c N-eq-3.O $srcdir/N-eq-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-eq-3 may have failed." 1>&2
+ $echo The command "cmp N-eq-3.O $srcdir/N-eq-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-eq-3.E || rm -f N-eq-3.E
+$xx '(' 0 -eq 00 ')' > P-eq-3.O 2> P-eq-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-eq-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-eq-3.O $srcdir/P-eq-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-eq-3"; fi;;
+ 1) $echo "Test P-eq-3 failed: files P-eq-3.O and $srcdir/P-eq-3.X differ" 1>&2
+ (diff -c P-eq-3.O $srcdir/P-eq-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-eq-3 may have failed." 1>&2
+ $echo The command "cmp P-eq-3.O $srcdir/P-eq-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-eq-3.E || rm -f P-eq-3.E
+$xx ! '(' 0 -eq 00 ')' > NP-eq-3.O 2> NP-eq-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-eq-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-eq-3.O $srcdir/NP-eq-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-eq-3"; fi;;
+ 1) $echo "Test NP-eq-3 failed: files NP-eq-3.O and $srcdir/NP-eq-3.X differ" 1>&2
+ (diff -c NP-eq-3.O $srcdir/NP-eq-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-eq-3 may have failed." 1>&2
+ $echo The command "cmp NP-eq-3.O $srcdir/NP-eq-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-eq-3.E || rm -f NP-eq-3.E
+$xx ! ! '(' 0 -eq 00 ')' > NNP-eq-3.O 2> NNP-eq-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-eq-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-eq-3.O $srcdir/NNP-eq-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-eq-3"; fi;;
+ 1) $echo "Test NNP-eq-3 failed: files NNP-eq-3.O and $srcdir/NNP-eq-3.X differ" 1>&2
+ (diff -c NNP-eq-3.O $srcdir/NNP-eq-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-eq-3 may have failed." 1>&2
+ $echo The command "cmp NNP-eq-3.O $srcdir/NNP-eq-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-eq-3.E || rm -f NNP-eq-3.E
+$xx ! 8 -eq 9 > N-eq-4.O 2> N-eq-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-eq-4 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-eq-4.O $srcdir/N-eq-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-eq-4"; fi;;
+ 1) $echo "Test N-eq-4 failed: files N-eq-4.O and $srcdir/N-eq-4.X differ" 1>&2
+ (diff -c N-eq-4.O $srcdir/N-eq-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-eq-4 may have failed." 1>&2
+ $echo The command "cmp N-eq-4.O $srcdir/N-eq-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-eq-4.E || rm -f N-eq-4.E
+$xx '(' 8 -eq 9 ')' > P-eq-4.O 2> P-eq-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test P-eq-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-eq-4.O $srcdir/P-eq-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-eq-4"; fi;;
+ 1) $echo "Test P-eq-4 failed: files P-eq-4.O and $srcdir/P-eq-4.X differ" 1>&2
+ (diff -c P-eq-4.O $srcdir/P-eq-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-eq-4 may have failed." 1>&2
+ $echo The command "cmp P-eq-4.O $srcdir/P-eq-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-eq-4.E || rm -f P-eq-4.E
+$xx ! '(' 8 -eq 9 ')' > NP-eq-4.O 2> NP-eq-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test NP-eq-4 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-eq-4.O $srcdir/NP-eq-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-eq-4"; fi;;
+ 1) $echo "Test NP-eq-4 failed: files NP-eq-4.O and $srcdir/NP-eq-4.X differ" 1>&2
+ (diff -c NP-eq-4.O $srcdir/NP-eq-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-eq-4 may have failed." 1>&2
+ $echo The command "cmp NP-eq-4.O $srcdir/NP-eq-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-eq-4.E || rm -f NP-eq-4.E
+$xx ! ! '(' 8 -eq 9 ')' > NNP-eq-4.O 2> NNP-eq-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test NNP-eq-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-eq-4.O $srcdir/NNP-eq-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-eq-4"; fi;;
+ 1) $echo "Test NNP-eq-4 failed: files NNP-eq-4.O and $srcdir/NNP-eq-4.X differ" 1>&2
+ (diff -c NNP-eq-4.O $srcdir/NNP-eq-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-eq-4 may have failed." 1>&2
+ $echo The command "cmp NNP-eq-4.O $srcdir/NNP-eq-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-eq-4.E || rm -f NNP-eq-4.E
+$xx ! 1 -eq 0 > N-eq-5.O 2> N-eq-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-eq-5 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-eq-5.O $srcdir/N-eq-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-eq-5"; fi;;
+ 1) $echo "Test N-eq-5 failed: files N-eq-5.O and $srcdir/N-eq-5.X differ" 1>&2
+ (diff -c N-eq-5.O $srcdir/N-eq-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-eq-5 may have failed." 1>&2
+ $echo The command "cmp N-eq-5.O $srcdir/N-eq-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-eq-5.E || rm -f N-eq-5.E
+$xx '(' 1 -eq 0 ')' > P-eq-5.O 2> P-eq-5.E
+code=$?
+if test $code != 1; then
+ $echo "Test P-eq-5 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-eq-5.O $srcdir/P-eq-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-eq-5"; fi;;
+ 1) $echo "Test P-eq-5 failed: files P-eq-5.O and $srcdir/P-eq-5.X differ" 1>&2
+ (diff -c P-eq-5.O $srcdir/P-eq-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-eq-5 may have failed." 1>&2
+ $echo The command "cmp P-eq-5.O $srcdir/P-eq-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-eq-5.E || rm -f P-eq-5.E
+$xx ! '(' 1 -eq 0 ')' > NP-eq-5.O 2> NP-eq-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test NP-eq-5 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-eq-5.O $srcdir/NP-eq-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-eq-5"; fi;;
+ 1) $echo "Test NP-eq-5 failed: files NP-eq-5.O and $srcdir/NP-eq-5.X differ" 1>&2
+ (diff -c NP-eq-5.O $srcdir/NP-eq-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-eq-5 may have failed." 1>&2
+ $echo The command "cmp NP-eq-5.O $srcdir/NP-eq-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-eq-5.E || rm -f NP-eq-5.E
+$xx ! ! '(' 1 -eq 0 ')' > NNP-eq-5.O 2> NNP-eq-5.E
+code=$?
+if test $code != 1; then
+ $echo "Test NNP-eq-5 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-eq-5.O $srcdir/NNP-eq-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-eq-5"; fi;;
+ 1) $echo "Test NNP-eq-5 failed: files NNP-eq-5.O and $srcdir/NNP-eq-5.X differ" 1>&2
+ (diff -c NNP-eq-5.O $srcdir/NNP-eq-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-eq-5 may have failed." 1>&2
+ $echo The command "cmp NNP-eq-5.O $srcdir/NNP-eq-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-eq-5.E || rm -f NNP-eq-5.E
+$xx ! 340282366920938463463374607431768211456 -eq 0 > N-eq-6.O 2> N-eq-6.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-eq-6 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-eq-6.O $srcdir/N-eq-6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-eq-6"; fi;;
+ 1) $echo "Test N-eq-6 failed: files N-eq-6.O and $srcdir/N-eq-6.X differ" 1>&2
+ (diff -c N-eq-6.O $srcdir/N-eq-6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-eq-6 may have failed." 1>&2
+ $echo The command "cmp N-eq-6.O $srcdir/N-eq-6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-eq-6.E || rm -f N-eq-6.E
+$xx '(' 340282366920938463463374607431768211456 -eq 0 ')' > P-eq-6.O 2> P-eq-6.E
+code=$?
+if test $code != 1; then
+ $echo "Test P-eq-6 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-eq-6.O $srcdir/P-eq-6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-eq-6"; fi;;
+ 1) $echo "Test P-eq-6 failed: files P-eq-6.O and $srcdir/P-eq-6.X differ" 1>&2
+ (diff -c P-eq-6.O $srcdir/P-eq-6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-eq-6 may have failed." 1>&2
+ $echo The command "cmp P-eq-6.O $srcdir/P-eq-6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-eq-6.E || rm -f P-eq-6.E
+$xx ! '(' 340282366920938463463374607431768211456 -eq 0 ')' > NP-eq-6.O 2> NP-eq-6.E
+code=$?
+if test $code != 0; then
+ $echo "Test NP-eq-6 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-eq-6.O $srcdir/NP-eq-6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-eq-6"; fi;;
+ 1) $echo "Test NP-eq-6 failed: files NP-eq-6.O and $srcdir/NP-eq-6.X differ" 1>&2
+ (diff -c NP-eq-6.O $srcdir/NP-eq-6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-eq-6 may have failed." 1>&2
+ $echo The command "cmp NP-eq-6.O $srcdir/NP-eq-6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-eq-6.E || rm -f NP-eq-6.E
+$xx ! ! '(' 340282366920938463463374607431768211456 -eq 0 ')' > NNP-eq-6.O 2> NNP-eq-6.E
+code=$?
+if test $code != 1; then
+ $echo "Test NNP-eq-6 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-eq-6.O $srcdir/NNP-eq-6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-eq-6"; fi;;
+ 1) $echo "Test NNP-eq-6 failed: files NNP-eq-6.O and $srcdir/NNP-eq-6.X differ" 1>&2
+ (diff -c NNP-eq-6.O $srcdir/NNP-eq-6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-eq-6 may have failed." 1>&2
+ $echo The command "cmp NNP-eq-6.O $srcdir/NNP-eq-6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-eq-6.E || rm -f NNP-eq-6.E
+$xx ! 5 -gt 5 > N-gt-1.O 2> N-gt-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-gt-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-gt-1.O $srcdir/N-gt-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-gt-1"; fi;;
+ 1) $echo "Test N-gt-1 failed: files N-gt-1.O and $srcdir/N-gt-1.X differ" 1>&2
+ (diff -c N-gt-1.O $srcdir/N-gt-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-gt-1 may have failed." 1>&2
+ $echo The command "cmp N-gt-1.O $srcdir/N-gt-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-gt-1.E || rm -f N-gt-1.E
+$xx '(' 5 -gt 5 ')' > P-gt-1.O 2> P-gt-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test P-gt-1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-gt-1.O $srcdir/P-gt-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-gt-1"; fi;;
+ 1) $echo "Test P-gt-1 failed: files P-gt-1.O and $srcdir/P-gt-1.X differ" 1>&2
+ (diff -c P-gt-1.O $srcdir/P-gt-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-gt-1 may have failed." 1>&2
+ $echo The command "cmp P-gt-1.O $srcdir/P-gt-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-gt-1.E || rm -f P-gt-1.E
+$xx ! '(' 5 -gt 5 ')' > NP-gt-1.O 2> NP-gt-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test NP-gt-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-gt-1.O $srcdir/NP-gt-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-gt-1"; fi;;
+ 1) $echo "Test NP-gt-1 failed: files NP-gt-1.O and $srcdir/NP-gt-1.X differ" 1>&2
+ (diff -c NP-gt-1.O $srcdir/NP-gt-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-gt-1 may have failed." 1>&2
+ $echo The command "cmp NP-gt-1.O $srcdir/NP-gt-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-gt-1.E || rm -f NP-gt-1.E
+$xx ! ! '(' 5 -gt 5 ')' > NNP-gt-1.O 2> NNP-gt-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test NNP-gt-1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-gt-1.O $srcdir/NNP-gt-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-gt-1"; fi;;
+ 1) $echo "Test NNP-gt-1 failed: files NNP-gt-1.O and $srcdir/NNP-gt-1.X differ" 1>&2
+ (diff -c NNP-gt-1.O $srcdir/NNP-gt-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-gt-1 may have failed." 1>&2
+ $echo The command "cmp NNP-gt-1.O $srcdir/NNP-gt-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-gt-1.E || rm -f NNP-gt-1.E
+$xx ! 5 -gt 4 > N-gt-2.O 2> N-gt-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-gt-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-gt-2.O $srcdir/N-gt-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-gt-2"; fi;;
+ 1) $echo "Test N-gt-2 failed: files N-gt-2.O and $srcdir/N-gt-2.X differ" 1>&2
+ (diff -c N-gt-2.O $srcdir/N-gt-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-gt-2 may have failed." 1>&2
+ $echo The command "cmp N-gt-2.O $srcdir/N-gt-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-gt-2.E || rm -f N-gt-2.E
+$xx '(' 5 -gt 4 ')' > P-gt-2.O 2> P-gt-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-gt-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-gt-2.O $srcdir/P-gt-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-gt-2"; fi;;
+ 1) $echo "Test P-gt-2 failed: files P-gt-2.O and $srcdir/P-gt-2.X differ" 1>&2
+ (diff -c P-gt-2.O $srcdir/P-gt-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-gt-2 may have failed." 1>&2
+ $echo The command "cmp P-gt-2.O $srcdir/P-gt-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-gt-2.E || rm -f P-gt-2.E
+$xx ! '(' 5 -gt 4 ')' > NP-gt-2.O 2> NP-gt-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-gt-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-gt-2.O $srcdir/NP-gt-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-gt-2"; fi;;
+ 1) $echo "Test NP-gt-2 failed: files NP-gt-2.O and $srcdir/NP-gt-2.X differ" 1>&2
+ (diff -c NP-gt-2.O $srcdir/NP-gt-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-gt-2 may have failed." 1>&2
+ $echo The command "cmp NP-gt-2.O $srcdir/NP-gt-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-gt-2.E || rm -f NP-gt-2.E
+$xx ! ! '(' 5 -gt 4 ')' > NNP-gt-2.O 2> NNP-gt-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-gt-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-gt-2.O $srcdir/NNP-gt-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-gt-2"; fi;;
+ 1) $echo "Test NNP-gt-2 failed: files NNP-gt-2.O and $srcdir/NNP-gt-2.X differ" 1>&2
+ (diff -c NNP-gt-2.O $srcdir/NNP-gt-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-gt-2 may have failed." 1>&2
+ $echo The command "cmp NNP-gt-2.O $srcdir/NNP-gt-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-gt-2.E || rm -f NNP-gt-2.E
+$xx ! 4 -gt 5 > N-gt-3.O 2> N-gt-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-gt-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-gt-3.O $srcdir/N-gt-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-gt-3"; fi;;
+ 1) $echo "Test N-gt-3 failed: files N-gt-3.O and $srcdir/N-gt-3.X differ" 1>&2
+ (diff -c N-gt-3.O $srcdir/N-gt-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-gt-3 may have failed." 1>&2
+ $echo The command "cmp N-gt-3.O $srcdir/N-gt-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-gt-3.E || rm -f N-gt-3.E
+$xx '(' 4 -gt 5 ')' > P-gt-3.O 2> P-gt-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test P-gt-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-gt-3.O $srcdir/P-gt-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-gt-3"; fi;;
+ 1) $echo "Test P-gt-3 failed: files P-gt-3.O and $srcdir/P-gt-3.X differ" 1>&2
+ (diff -c P-gt-3.O $srcdir/P-gt-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-gt-3 may have failed." 1>&2
+ $echo The command "cmp P-gt-3.O $srcdir/P-gt-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-gt-3.E || rm -f P-gt-3.E
+$xx ! '(' 4 -gt 5 ')' > NP-gt-3.O 2> NP-gt-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test NP-gt-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-gt-3.O $srcdir/NP-gt-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-gt-3"; fi;;
+ 1) $echo "Test NP-gt-3 failed: files NP-gt-3.O and $srcdir/NP-gt-3.X differ" 1>&2
+ (diff -c NP-gt-3.O $srcdir/NP-gt-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-gt-3 may have failed." 1>&2
+ $echo The command "cmp NP-gt-3.O $srcdir/NP-gt-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-gt-3.E || rm -f NP-gt-3.E
+$xx ! ! '(' 4 -gt 5 ')' > NNP-gt-3.O 2> NNP-gt-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test NNP-gt-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-gt-3.O $srcdir/NNP-gt-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-gt-3"; fi;;
+ 1) $echo "Test NNP-gt-3 failed: files NNP-gt-3.O and $srcdir/NNP-gt-3.X differ" 1>&2
+ (diff -c NNP-gt-3.O $srcdir/NNP-gt-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-gt-3 may have failed." 1>&2
+ $echo The command "cmp NNP-gt-3.O $srcdir/NNP-gt-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-gt-3.E || rm -f NNP-gt-3.E
+$xx ! -1 -gt -2 > N-gt-4.O 2> N-gt-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-gt-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-gt-4.O $srcdir/N-gt-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-gt-4"; fi;;
+ 1) $echo "Test N-gt-4 failed: files N-gt-4.O and $srcdir/N-gt-4.X differ" 1>&2
+ (diff -c N-gt-4.O $srcdir/N-gt-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-gt-4 may have failed." 1>&2
+ $echo The command "cmp N-gt-4.O $srcdir/N-gt-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-gt-4.E || rm -f N-gt-4.E
+$xx '(' -1 -gt -2 ')' > P-gt-4.O 2> P-gt-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-gt-4 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-gt-4.O $srcdir/P-gt-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-gt-4"; fi;;
+ 1) $echo "Test P-gt-4 failed: files P-gt-4.O and $srcdir/P-gt-4.X differ" 1>&2
+ (diff -c P-gt-4.O $srcdir/P-gt-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-gt-4 may have failed." 1>&2
+ $echo The command "cmp P-gt-4.O $srcdir/P-gt-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-gt-4.E || rm -f P-gt-4.E
+$xx ! '(' -1 -gt -2 ')' > NP-gt-4.O 2> NP-gt-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-gt-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-gt-4.O $srcdir/NP-gt-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-gt-4"; fi;;
+ 1) $echo "Test NP-gt-4 failed: files NP-gt-4.O and $srcdir/NP-gt-4.X differ" 1>&2
+ (diff -c NP-gt-4.O $srcdir/NP-gt-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-gt-4 may have failed." 1>&2
+ $echo The command "cmp NP-gt-4.O $srcdir/NP-gt-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-gt-4.E || rm -f NP-gt-4.E
+$xx ! ! '(' -1 -gt -2 ')' > NNP-gt-4.O 2> NNP-gt-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-gt-4 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-gt-4.O $srcdir/NNP-gt-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-gt-4"; fi;;
+ 1) $echo "Test NNP-gt-4 failed: files NNP-gt-4.O and $srcdir/NNP-gt-4.X differ" 1>&2
+ (diff -c NNP-gt-4.O $srcdir/NNP-gt-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-gt-4 may have failed." 1>&2
+ $echo The command "cmp NNP-gt-4.O $srcdir/NNP-gt-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-gt-4.E || rm -f NNP-gt-4.E
+$xx ! 18446744073709551616 -gt -18446744073709551616 > N-gt-5.O 2> N-gt-5.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-gt-5 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-gt-5.O $srcdir/N-gt-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-gt-5"; fi;;
+ 1) $echo "Test N-gt-5 failed: files N-gt-5.O and $srcdir/N-gt-5.X differ" 1>&2
+ (diff -c N-gt-5.O $srcdir/N-gt-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-gt-5 may have failed." 1>&2
+ $echo The command "cmp N-gt-5.O $srcdir/N-gt-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-gt-5.E || rm -f N-gt-5.E
+$xx '(' 18446744073709551616 -gt -18446744073709551616 ')' > P-gt-5.O 2> P-gt-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-gt-5 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-gt-5.O $srcdir/P-gt-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-gt-5"; fi;;
+ 1) $echo "Test P-gt-5 failed: files P-gt-5.O and $srcdir/P-gt-5.X differ" 1>&2
+ (diff -c P-gt-5.O $srcdir/P-gt-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-gt-5 may have failed." 1>&2
+ $echo The command "cmp P-gt-5.O $srcdir/P-gt-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-gt-5.E || rm -f P-gt-5.E
+$xx ! '(' 18446744073709551616 -gt -18446744073709551616 ')' > NP-gt-5.O 2> NP-gt-5.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-gt-5 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-gt-5.O $srcdir/NP-gt-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-gt-5"; fi;;
+ 1) $echo "Test NP-gt-5 failed: files NP-gt-5.O and $srcdir/NP-gt-5.X differ" 1>&2
+ (diff -c NP-gt-5.O $srcdir/NP-gt-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-gt-5 may have failed." 1>&2
+ $echo The command "cmp NP-gt-5.O $srcdir/NP-gt-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-gt-5.E || rm -f NP-gt-5.E
+$xx ! ! '(' 18446744073709551616 -gt -18446744073709551616 ')' > NNP-gt-5.O 2> NNP-gt-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-gt-5 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-gt-5.O $srcdir/NNP-gt-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-gt-5"; fi;;
+ 1) $echo "Test NNP-gt-5 failed: files NNP-gt-5.O and $srcdir/NNP-gt-5.X differ" 1>&2
+ (diff -c NNP-gt-5.O $srcdir/NNP-gt-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-gt-5 may have failed." 1>&2
+ $echo The command "cmp NNP-gt-5.O $srcdir/NNP-gt-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-gt-5.E || rm -f NNP-gt-5.E
+$xx ! 5 -lt 5 > N-lt-1.O 2> N-lt-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-lt-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-lt-1.O $srcdir/N-lt-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-lt-1"; fi;;
+ 1) $echo "Test N-lt-1 failed: files N-lt-1.O and $srcdir/N-lt-1.X differ" 1>&2
+ (diff -c N-lt-1.O $srcdir/N-lt-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-lt-1 may have failed." 1>&2
+ $echo The command "cmp N-lt-1.O $srcdir/N-lt-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-lt-1.E || rm -f N-lt-1.E
+$xx '(' 5 -lt 5 ')' > P-lt-1.O 2> P-lt-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test P-lt-1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-lt-1.O $srcdir/P-lt-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-lt-1"; fi;;
+ 1) $echo "Test P-lt-1 failed: files P-lt-1.O and $srcdir/P-lt-1.X differ" 1>&2
+ (diff -c P-lt-1.O $srcdir/P-lt-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-lt-1 may have failed." 1>&2
+ $echo The command "cmp P-lt-1.O $srcdir/P-lt-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-lt-1.E || rm -f P-lt-1.E
+$xx ! '(' 5 -lt 5 ')' > NP-lt-1.O 2> NP-lt-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test NP-lt-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-lt-1.O $srcdir/NP-lt-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-lt-1"; fi;;
+ 1) $echo "Test NP-lt-1 failed: files NP-lt-1.O and $srcdir/NP-lt-1.X differ" 1>&2
+ (diff -c NP-lt-1.O $srcdir/NP-lt-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-lt-1 may have failed." 1>&2
+ $echo The command "cmp NP-lt-1.O $srcdir/NP-lt-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-lt-1.E || rm -f NP-lt-1.E
+$xx ! ! '(' 5 -lt 5 ')' > NNP-lt-1.O 2> NNP-lt-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test NNP-lt-1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-lt-1.O $srcdir/NNP-lt-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-lt-1"; fi;;
+ 1) $echo "Test NNP-lt-1 failed: files NNP-lt-1.O and $srcdir/NNP-lt-1.X differ" 1>&2
+ (diff -c NNP-lt-1.O $srcdir/NNP-lt-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-lt-1 may have failed." 1>&2
+ $echo The command "cmp NNP-lt-1.O $srcdir/NNP-lt-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-lt-1.E || rm -f NNP-lt-1.E
+$xx ! 5 -lt 4 > N-lt-2.O 2> N-lt-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-lt-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-lt-2.O $srcdir/N-lt-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-lt-2"; fi;;
+ 1) $echo "Test N-lt-2 failed: files N-lt-2.O and $srcdir/N-lt-2.X differ" 1>&2
+ (diff -c N-lt-2.O $srcdir/N-lt-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-lt-2 may have failed." 1>&2
+ $echo The command "cmp N-lt-2.O $srcdir/N-lt-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-lt-2.E || rm -f N-lt-2.E
+$xx '(' 5 -lt 4 ')' > P-lt-2.O 2> P-lt-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test P-lt-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-lt-2.O $srcdir/P-lt-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-lt-2"; fi;;
+ 1) $echo "Test P-lt-2 failed: files P-lt-2.O and $srcdir/P-lt-2.X differ" 1>&2
+ (diff -c P-lt-2.O $srcdir/P-lt-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-lt-2 may have failed." 1>&2
+ $echo The command "cmp P-lt-2.O $srcdir/P-lt-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-lt-2.E || rm -f P-lt-2.E
+$xx ! '(' 5 -lt 4 ')' > NP-lt-2.O 2> NP-lt-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test NP-lt-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-lt-2.O $srcdir/NP-lt-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-lt-2"; fi;;
+ 1) $echo "Test NP-lt-2 failed: files NP-lt-2.O and $srcdir/NP-lt-2.X differ" 1>&2
+ (diff -c NP-lt-2.O $srcdir/NP-lt-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-lt-2 may have failed." 1>&2
+ $echo The command "cmp NP-lt-2.O $srcdir/NP-lt-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-lt-2.E || rm -f NP-lt-2.E
+$xx ! ! '(' 5 -lt 4 ')' > NNP-lt-2.O 2> NNP-lt-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test NNP-lt-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-lt-2.O $srcdir/NNP-lt-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-lt-2"; fi;;
+ 1) $echo "Test NNP-lt-2 failed: files NNP-lt-2.O and $srcdir/NNP-lt-2.X differ" 1>&2
+ (diff -c NNP-lt-2.O $srcdir/NNP-lt-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-lt-2 may have failed." 1>&2
+ $echo The command "cmp NNP-lt-2.O $srcdir/NNP-lt-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-lt-2.E || rm -f NNP-lt-2.E
+$xx ! 4 -lt 5 > N-lt-3.O 2> N-lt-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-lt-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-lt-3.O $srcdir/N-lt-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-lt-3"; fi;;
+ 1) $echo "Test N-lt-3 failed: files N-lt-3.O and $srcdir/N-lt-3.X differ" 1>&2
+ (diff -c N-lt-3.O $srcdir/N-lt-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-lt-3 may have failed." 1>&2
+ $echo The command "cmp N-lt-3.O $srcdir/N-lt-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-lt-3.E || rm -f N-lt-3.E
+$xx '(' 4 -lt 5 ')' > P-lt-3.O 2> P-lt-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-lt-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-lt-3.O $srcdir/P-lt-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-lt-3"; fi;;
+ 1) $echo "Test P-lt-3 failed: files P-lt-3.O and $srcdir/P-lt-3.X differ" 1>&2
+ (diff -c P-lt-3.O $srcdir/P-lt-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-lt-3 may have failed." 1>&2
+ $echo The command "cmp P-lt-3.O $srcdir/P-lt-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-lt-3.E || rm -f P-lt-3.E
+$xx ! '(' 4 -lt 5 ')' > NP-lt-3.O 2> NP-lt-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-lt-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-lt-3.O $srcdir/NP-lt-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-lt-3"; fi;;
+ 1) $echo "Test NP-lt-3 failed: files NP-lt-3.O and $srcdir/NP-lt-3.X differ" 1>&2
+ (diff -c NP-lt-3.O $srcdir/NP-lt-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-lt-3 may have failed." 1>&2
+ $echo The command "cmp NP-lt-3.O $srcdir/NP-lt-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-lt-3.E || rm -f NP-lt-3.E
+$xx ! ! '(' 4 -lt 5 ')' > NNP-lt-3.O 2> NNP-lt-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-lt-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-lt-3.O $srcdir/NNP-lt-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-lt-3"; fi;;
+ 1) $echo "Test NNP-lt-3 failed: files NNP-lt-3.O and $srcdir/NNP-lt-3.X differ" 1>&2
+ (diff -c NNP-lt-3.O $srcdir/NNP-lt-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-lt-3 may have failed." 1>&2
+ $echo The command "cmp NNP-lt-3.O $srcdir/NNP-lt-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-lt-3.E || rm -f NNP-lt-3.E
+$xx ! -1 -lt -2 > N-lt-4.O 2> N-lt-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-lt-4 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-lt-4.O $srcdir/N-lt-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-lt-4"; fi;;
+ 1) $echo "Test N-lt-4 failed: files N-lt-4.O and $srcdir/N-lt-4.X differ" 1>&2
+ (diff -c N-lt-4.O $srcdir/N-lt-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-lt-4 may have failed." 1>&2
+ $echo The command "cmp N-lt-4.O $srcdir/N-lt-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-lt-4.E || rm -f N-lt-4.E
+$xx '(' -1 -lt -2 ')' > P-lt-4.O 2> P-lt-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test P-lt-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-lt-4.O $srcdir/P-lt-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-lt-4"; fi;;
+ 1) $echo "Test P-lt-4 failed: files P-lt-4.O and $srcdir/P-lt-4.X differ" 1>&2
+ (diff -c P-lt-4.O $srcdir/P-lt-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-lt-4 may have failed." 1>&2
+ $echo The command "cmp P-lt-4.O $srcdir/P-lt-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-lt-4.E || rm -f P-lt-4.E
+$xx ! '(' -1 -lt -2 ')' > NP-lt-4.O 2> NP-lt-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test NP-lt-4 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-lt-4.O $srcdir/NP-lt-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-lt-4"; fi;;
+ 1) $echo "Test NP-lt-4 failed: files NP-lt-4.O and $srcdir/NP-lt-4.X differ" 1>&2
+ (diff -c NP-lt-4.O $srcdir/NP-lt-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-lt-4 may have failed." 1>&2
+ $echo The command "cmp NP-lt-4.O $srcdir/NP-lt-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-lt-4.E || rm -f NP-lt-4.E
+$xx ! ! '(' -1 -lt -2 ')' > NNP-lt-4.O 2> NNP-lt-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test NNP-lt-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-lt-4.O $srcdir/NNP-lt-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-lt-4"; fi;;
+ 1) $echo "Test NNP-lt-4 failed: files NNP-lt-4.O and $srcdir/NNP-lt-4.X differ" 1>&2
+ (diff -c NNP-lt-4.O $srcdir/NNP-lt-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-lt-4 may have failed." 1>&2
+ $echo The command "cmp NNP-lt-4.O $srcdir/NNP-lt-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-lt-4.E || rm -f NNP-lt-4.E
+$xx ! -18446744073709551616 -lt 18446744073709551616 > N-lt-5.O 2> N-lt-5.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-lt-5 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-lt-5.O $srcdir/N-lt-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-lt-5"; fi;;
+ 1) $echo "Test N-lt-5 failed: files N-lt-5.O and $srcdir/N-lt-5.X differ" 1>&2
+ (diff -c N-lt-5.O $srcdir/N-lt-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-lt-5 may have failed." 1>&2
+ $echo The command "cmp N-lt-5.O $srcdir/N-lt-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-lt-5.E || rm -f N-lt-5.E
+$xx '(' -18446744073709551616 -lt 18446744073709551616 ')' > P-lt-5.O 2> P-lt-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-lt-5 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-lt-5.O $srcdir/P-lt-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-lt-5"; fi;;
+ 1) $echo "Test P-lt-5 failed: files P-lt-5.O and $srcdir/P-lt-5.X differ" 1>&2
+ (diff -c P-lt-5.O $srcdir/P-lt-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-lt-5 may have failed." 1>&2
+ $echo The command "cmp P-lt-5.O $srcdir/P-lt-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-lt-5.E || rm -f P-lt-5.E
+$xx ! '(' -18446744073709551616 -lt 18446744073709551616 ')' > NP-lt-5.O 2> NP-lt-5.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-lt-5 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-lt-5.O $srcdir/NP-lt-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-lt-5"; fi;;
+ 1) $echo "Test NP-lt-5 failed: files NP-lt-5.O and $srcdir/NP-lt-5.X differ" 1>&2
+ (diff -c NP-lt-5.O $srcdir/NP-lt-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-lt-5 may have failed." 1>&2
+ $echo The command "cmp NP-lt-5.O $srcdir/NP-lt-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-lt-5.E || rm -f NP-lt-5.E
+$xx ! ! '(' -18446744073709551616 -lt 18446744073709551616 ')' > NNP-lt-5.O 2> NNP-lt-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-lt-5 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-lt-5.O $srcdir/NNP-lt-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-lt-5"; fi;;
+ 1) $echo "Test NNP-lt-5 failed: files NNP-lt-5.O and $srcdir/NNP-lt-5.X differ" 1>&2
+ (diff -c NNP-lt-5.O $srcdir/NNP-lt-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-lt-5 may have failed." 1>&2
+ $echo The command "cmp NNP-lt-5.O $srcdir/NNP-lt-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-lt-5.E || rm -f NNP-lt-5.E
+$xx ! -t > N-t1.O 2> N-t1.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-t1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-t1.O $srcdir/N-t1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-t1"; fi;;
+ 1) $echo "Test N-t1 failed: files N-t1.O and $srcdir/N-t1.X differ" 1>&2
+ (diff -c N-t1.O $srcdir/N-t1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-t1 may have failed." 1>&2
+ $echo The command "cmp N-t1.O $srcdir/N-t1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-t1.E || rm -f N-t1.E
+$xx '(' -t ')' > P-t1.O 2> P-t1.E
+code=$?
+if test $code != 0; then
+ $echo "Test P-t1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-t1.O $srcdir/P-t1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-t1"; fi;;
+ 1) $echo "Test P-t1 failed: files P-t1.O and $srcdir/P-t1.X differ" 1>&2
+ (diff -c P-t1.O $srcdir/P-t1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-t1 may have failed." 1>&2
+ $echo The command "cmp P-t1.O $srcdir/P-t1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-t1.E || rm -f P-t1.E
+$xx ! '(' -t ')' > NP-t1.O 2> NP-t1.E
+code=$?
+if test $code != 1; then
+ $echo "Test NP-t1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-t1.O $srcdir/NP-t1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-t1"; fi;;
+ 1) $echo "Test NP-t1 failed: files NP-t1.O and $srcdir/NP-t1.X differ" 1>&2
+ (diff -c NP-t1.O $srcdir/NP-t1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-t1 may have failed." 1>&2
+ $echo The command "cmp NP-t1.O $srcdir/NP-t1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-t1.E || rm -f NP-t1.E
+$xx ! ! '(' -t ')' > NNP-t1.O 2> NNP-t1.E
+code=$?
+if test $code != 0; then
+ $echo "Test NNP-t1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-t1.O $srcdir/NNP-t1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-t1"; fi;;
+ 1) $echo "Test NNP-t1 failed: files NNP-t1.O and $srcdir/NNP-t1.X differ" 1>&2
+ (diff -c NNP-t1.O $srcdir/NNP-t1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-t1 may have failed." 1>&2
+ $echo The command "cmp NNP-t1.O $srcdir/NNP-t1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-t1.E || rm -f NNP-t1.E
+$xx ! -t 1 > N-t2.O 2> N-t2.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-t2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-t2.O $srcdir/N-t2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-t2"; fi;;
+ 1) $echo "Test N-t2 failed: files N-t2.O and $srcdir/N-t2.X differ" 1>&2
+ (diff -c N-t2.O $srcdir/N-t2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-t2 may have failed." 1>&2
+ $echo The command "cmp N-t2.O $srcdir/N-t2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-t2.E || rm -f N-t2.E
+$xx '(' -t 1 ')' > P-t2.O 2> P-t2.E
+code=$?
+if test $code != 1; then
+ $echo "Test P-t2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp P-t2.O $srcdir/P-t2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed P-t2"; fi;;
+ 1) $echo "Test P-t2 failed: files P-t2.O and $srcdir/P-t2.X differ" 1>&2
+ (diff -c P-t2.O $srcdir/P-t2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test P-t2 may have failed." 1>&2
+ $echo The command "cmp P-t2.O $srcdir/P-t2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s P-t2.E || rm -f P-t2.E
+$xx ! '(' -t 1 ')' > NP-t2.O 2> NP-t2.E
+code=$?
+if test $code != 0; then
+ $echo "Test NP-t2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NP-t2.O $srcdir/NP-t2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NP-t2"; fi;;
+ 1) $echo "Test NP-t2 failed: files NP-t2.O and $srcdir/NP-t2.X differ" 1>&2
+ (diff -c NP-t2.O $srcdir/NP-t2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NP-t2 may have failed." 1>&2
+ $echo The command "cmp NP-t2.O $srcdir/NP-t2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NP-t2.E || rm -f NP-t2.E
+$xx ! ! '(' -t 1 ')' > NNP-t2.O 2> NNP-t2.E
+code=$?
+if test $code != 1; then
+ $echo "Test NNP-t2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp NNP-t2.O $srcdir/NNP-t2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed NNP-t2"; fi;;
+ 1) $echo "Test NNP-t2 failed: files NNP-t2.O and $srcdir/NNP-t2.X differ" 1>&2
+ (diff -c NNP-t2.O $srcdir/NNP-t2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test NNP-t2 may have failed." 1>&2
+ $echo The command "cmp NNP-t2.O $srcdir/NNP-t2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s NNP-t2.E || rm -f NNP-t2.E
+$xx ! '(' '' ')' > N-paren-1.O 2> N-paren-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test N-paren-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-paren-1.O $srcdir/N-paren-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-paren-1"; fi;;
+ 1) $echo "Test N-paren-1 failed: files N-paren-1.O and $srcdir/N-paren-1.X differ" 1>&2
+ (diff -c N-paren-1.O $srcdir/N-paren-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-paren-1 may have failed." 1>&2
+ $echo The command "cmp N-paren-1.O $srcdir/N-paren-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-paren-1.E || rm -f N-paren-1.E
+$xx ! '(' '(' ')' > N-paren-2.O 2> N-paren-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-paren-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-paren-2.O $srcdir/N-paren-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-paren-2"; fi;;
+ 1) $echo "Test N-paren-2 failed: files N-paren-2.O and $srcdir/N-paren-2.X differ" 1>&2
+ (diff -c N-paren-2.O $srcdir/N-paren-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-paren-2 may have failed." 1>&2
+ $echo The command "cmp N-paren-2.O $srcdir/N-paren-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-paren-2.E || rm -f N-paren-2.E
+$xx ! '(' ')' ')' > N-paren-3.O 2> N-paren-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-paren-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-paren-3.O $srcdir/N-paren-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-paren-3"; fi;;
+ 1) $echo "Test N-paren-3 failed: files N-paren-3.O and $srcdir/N-paren-3.X differ" 1>&2
+ (diff -c N-paren-3.O $srcdir/N-paren-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-paren-3 may have failed." 1>&2
+ $echo The command "cmp N-paren-3.O $srcdir/N-paren-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-paren-3.E || rm -f N-paren-3.E
+$xx ! '(' ! ')' > N-paren-4.O 2> N-paren-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-paren-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-paren-4.O $srcdir/N-paren-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-paren-4"; fi;;
+ 1) $echo "Test N-paren-4 failed: files N-paren-4.O and $srcdir/N-paren-4.X differ" 1>&2
+ (diff -c N-paren-4.O $srcdir/N-paren-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-paren-4 may have failed." 1>&2
+ $echo The command "cmp N-paren-4.O $srcdir/N-paren-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-paren-4.E || rm -f N-paren-4.E
+$xx ! '(' -a ')' > N-paren-5.O 2> N-paren-5.E
+code=$?
+if test $code != 1; then
+ $echo "Test N-paren-5 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp N-paren-5.O $srcdir/N-paren-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed N-paren-5"; fi;;
+ 1) $echo "Test N-paren-5 failed: files N-paren-5.O and $srcdir/N-paren-5.X differ" 1>&2
+ (diff -c N-paren-5.O $srcdir/N-paren-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test N-paren-5 may have failed." 1>&2
+ $echo The command "cmp N-paren-5.O $srcdir/N-paren-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s N-paren-5.E || rm -f N-paren-5.E
+$xx > 1a.O 2> 1a.E
+code=$?
+if test $code != 1; then
+ $echo "Test 1a failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1a.O $srcdir/1a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1a"; fi;;
+ 1) $echo "Test 1a failed: files 1a.O and $srcdir/1a.X differ" 1>&2
+ (diff -c 1a.O $srcdir/1a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1a may have failed." 1>&2
+ $echo The command "cmp 1a.O $srcdir/1a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1a.E || rm -f 1a.E
+$xx -z '' > 1b.O 2> 1b.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1b failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1b.O $srcdir/1b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1b"; fi;;
+ 1) $echo "Test 1b failed: files 1b.O and $srcdir/1b.X differ" 1>&2
+ (diff -c 1b.O $srcdir/1b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1b may have failed." 1>&2
+ $echo The command "cmp 1b.O $srcdir/1b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1b.E || rm -f 1b.E
+$xx any-string > 1c.O 2> 1c.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1c failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1c.O $srcdir/1c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1c"; fi;;
+ 1) $echo "Test 1c failed: files 1c.O and $srcdir/1c.X differ" 1>&2
+ (diff -c 1c.O $srcdir/1c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1c may have failed." 1>&2
+ $echo The command "cmp 1c.O $srcdir/1c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1c.E || rm -f 1c.E
+$xx -n any-string > 1d.O 2> 1d.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1d failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1d.O $srcdir/1d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1d"; fi;;
+ 1) $echo "Test 1d failed: files 1d.O and $srcdir/1d.X differ" 1>&2
+ (diff -c 1d.O $srcdir/1d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1d may have failed." 1>&2
+ $echo The command "cmp 1d.O $srcdir/1d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1d.E || rm -f 1d.E
+$xx '' > 1e.O 2> 1e.E
+code=$?
+if test $code != 1; then
+ $echo "Test 1e failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1e.O $srcdir/1e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1e"; fi;;
+ 1) $echo "Test 1e failed: files 1e.O and $srcdir/1e.X differ" 1>&2
+ (diff -c 1e.O $srcdir/1e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1e may have failed." 1>&2
+ $echo The command "cmp 1e.O $srcdir/1e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1e.E || rm -f 1e.E
+$xx - > 1f.O 2> 1f.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1f failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1f.O $srcdir/1f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1f"; fi;;
+ 1) $echo "Test 1f failed: files 1f.O and $srcdir/1f.X differ" 1>&2
+ (diff -c 1f.O $srcdir/1f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1f may have failed." 1>&2
+ $echo The command "cmp 1f.O $srcdir/1f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1f.E || rm -f 1f.E
+$xx -- > 1g.O 2> 1g.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1g failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1g.O $srcdir/1g.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1g"; fi;;
+ 1) $echo "Test 1g failed: files 1g.O and $srcdir/1g.X differ" 1>&2
+ (diff -c 1g.O $srcdir/1g.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1g may have failed." 1>&2
+ $echo The command "cmp 1g.O $srcdir/1g.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1g.E || rm -f 1g.E
+$xx -0 > 1h.O 2> 1h.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1h failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1h.O $srcdir/1h.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1h"; fi;;
+ 1) $echo "Test 1h failed: files 1h.O and $srcdir/1h.X differ" 1>&2
+ (diff -c 1h.O $srcdir/1h.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1h may have failed." 1>&2
+ $echo The command "cmp 1h.O $srcdir/1h.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1h.E || rm -f 1h.E
+$xx -f > 1i.O 2> 1i.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1i failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1i.O $srcdir/1i.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1i"; fi;;
+ 1) $echo "Test 1i failed: files 1i.O and $srcdir/1i.X differ" 1>&2
+ (diff -c 1i.O $srcdir/1i.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1i may have failed." 1>&2
+ $echo The command "cmp 1i.O $srcdir/1i.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1i.E || rm -f 1i.E
+$xx --help > 1j.O 2> 1j.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1j failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1j.O $srcdir/1j.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1j"; fi;;
+ 1) $echo "Test 1j failed: files 1j.O and $srcdir/1j.X differ" 1>&2
+ (diff -c 1j.O $srcdir/1j.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1j may have failed." 1>&2
+ $echo The command "cmp 1j.O $srcdir/1j.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1j.E || rm -f 1j.E
+$xx --version > 1k.O 2> 1k.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1k failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1k.O $srcdir/1k.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1k"; fi;;
+ 1) $echo "Test 1k failed: files 1k.O and $srcdir/1k.X differ" 1>&2
+ (diff -c 1k.O $srcdir/1k.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1k may have failed." 1>&2
+ $echo The command "cmp 1k.O $srcdir/1k.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1k.E || rm -f 1k.E
+$xx t = t > streq-1.O 2> streq-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test streq-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp streq-1.O $srcdir/streq-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed streq-1"; fi;;
+ 1) $echo "Test streq-1 failed: files streq-1.O and $srcdir/streq-1.X differ" 1>&2
+ (diff -c streq-1.O $srcdir/streq-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test streq-1 may have failed." 1>&2
+ $echo The command "cmp streq-1.O $srcdir/streq-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s streq-1.E || rm -f streq-1.E
+$xx t = f > streq-2.O 2> streq-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test streq-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp streq-2.O $srcdir/streq-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed streq-2"; fi;;
+ 1) $echo "Test streq-2 failed: files streq-2.O and $srcdir/streq-2.X differ" 1>&2
+ (diff -c streq-2.O $srcdir/streq-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test streq-2 may have failed." 1>&2
+ $echo The command "cmp streq-2.O $srcdir/streq-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s streq-2.E || rm -f streq-2.E
+$xx ! = ! > streq-3.O 2> streq-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test streq-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp streq-3.O $srcdir/streq-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed streq-3"; fi;;
+ 1) $echo "Test streq-3 failed: files streq-3.O and $srcdir/streq-3.X differ" 1>&2
+ (diff -c streq-3.O $srcdir/streq-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test streq-3 may have failed." 1>&2
+ $echo The command "cmp streq-3.O $srcdir/streq-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s streq-3.E || rm -f streq-3.E
+$xx = = = > streq-4.O 2> streq-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test streq-4 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp streq-4.O $srcdir/streq-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed streq-4"; fi;;
+ 1) $echo "Test streq-4 failed: files streq-4.O and $srcdir/streq-4.X differ" 1>&2
+ (diff -c streq-4.O $srcdir/streq-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test streq-4 may have failed." 1>&2
+ $echo The command "cmp streq-4.O $srcdir/streq-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s streq-4.E || rm -f streq-4.E
+$xx '(' = '(' > streq-5.O 2> streq-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test streq-5 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp streq-5.O $srcdir/streq-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed streq-5"; fi;;
+ 1) $echo "Test streq-5 failed: files streq-5.O and $srcdir/streq-5.X differ" 1>&2
+ (diff -c streq-5.O $srcdir/streq-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test streq-5 may have failed." 1>&2
+ $echo The command "cmp streq-5.O $srcdir/streq-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s streq-5.E || rm -f streq-5.E
+$xx '(' = ')' > streq-6.O 2> streq-6.E
+code=$?
+if test $code != 1; then
+ $echo "Test streq-6 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp streq-6.O $srcdir/streq-6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed streq-6"; fi;;
+ 1) $echo "Test streq-6 failed: files streq-6.O and $srcdir/streq-6.X differ" 1>&2
+ (diff -c streq-6.O $srcdir/streq-6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test streq-6 may have failed." 1>&2
+ $echo The command "cmp streq-6.O $srcdir/streq-6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s streq-6.E || rm -f streq-6.E
+$xx t != t > strne-1.O 2> strne-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test strne-1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp strne-1.O $srcdir/strne-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed strne-1"; fi;;
+ 1) $echo "Test strne-1 failed: files strne-1.O and $srcdir/strne-1.X differ" 1>&2
+ (diff -c strne-1.O $srcdir/strne-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test strne-1 may have failed." 1>&2
+ $echo The command "cmp strne-1.O $srcdir/strne-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s strne-1.E || rm -f strne-1.E
+$xx t != f > strne-2.O 2> strne-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test strne-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp strne-2.O $srcdir/strne-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed strne-2"; fi;;
+ 1) $echo "Test strne-2 failed: files strne-2.O and $srcdir/strne-2.X differ" 1>&2
+ (diff -c strne-2.O $srcdir/strne-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test strne-2 may have failed." 1>&2
+ $echo The command "cmp strne-2.O $srcdir/strne-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s strne-2.E || rm -f strne-2.E
+$xx ! != ! > strne-3.O 2> strne-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test strne-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp strne-3.O $srcdir/strne-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed strne-3"; fi;;
+ 1) $echo "Test strne-3 failed: files strne-3.O and $srcdir/strne-3.X differ" 1>&2
+ (diff -c strne-3.O $srcdir/strne-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test strne-3 may have failed." 1>&2
+ $echo The command "cmp strne-3.O $srcdir/strne-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s strne-3.E || rm -f strne-3.E
+$xx = != = > strne-4.O 2> strne-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test strne-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp strne-4.O $srcdir/strne-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed strne-4"; fi;;
+ 1) $echo "Test strne-4 failed: files strne-4.O and $srcdir/strne-4.X differ" 1>&2
+ (diff -c strne-4.O $srcdir/strne-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test strne-4 may have failed." 1>&2
+ $echo The command "cmp strne-4.O $srcdir/strne-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s strne-4.E || rm -f strne-4.E
+$xx '(' != '(' > strne-5.O 2> strne-5.E
+code=$?
+if test $code != 1; then
+ $echo "Test strne-5 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp strne-5.O $srcdir/strne-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed strne-5"; fi;;
+ 1) $echo "Test strne-5 failed: files strne-5.O and $srcdir/strne-5.X differ" 1>&2
+ (diff -c strne-5.O $srcdir/strne-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test strne-5 may have failed." 1>&2
+ $echo The command "cmp strne-5.O $srcdir/strne-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s strne-5.E || rm -f strne-5.E
+$xx '(' != ')' > strne-6.O 2> strne-6.E
+code=$?
+if test $code != 0; then
+ $echo "Test strne-6 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp strne-6.O $srcdir/strne-6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed strne-6"; fi;;
+ 1) $echo "Test strne-6 failed: files strne-6.O and $srcdir/strne-6.X differ" 1>&2
+ (diff -c strne-6.O $srcdir/strne-6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test strne-6 may have failed." 1>&2
+ $echo The command "cmp strne-6.O $srcdir/strne-6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s strne-6.E || rm -f strne-6.E
+$xx t -a t > and-1.O 2> and-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test and-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp and-1.O $srcdir/and-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed and-1"; fi;;
+ 1) $echo "Test and-1 failed: files and-1.O and $srcdir/and-1.X differ" 1>&2
+ (diff -c and-1.O $srcdir/and-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test and-1 may have failed." 1>&2
+ $echo The command "cmp and-1.O $srcdir/and-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s and-1.E || rm -f and-1.E
+$xx '' -a t > and-2.O 2> and-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test and-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp and-2.O $srcdir/and-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed and-2"; fi;;
+ 1) $echo "Test and-2 failed: files and-2.O and $srcdir/and-2.X differ" 1>&2
+ (diff -c and-2.O $srcdir/and-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test and-2 may have failed." 1>&2
+ $echo The command "cmp and-2.O $srcdir/and-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s and-2.E || rm -f and-2.E
+$xx t -a '' > and-3.O 2> and-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test and-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp and-3.O $srcdir/and-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed and-3"; fi;;
+ 1) $echo "Test and-3 failed: files and-3.O and $srcdir/and-3.X differ" 1>&2
+ (diff -c and-3.O $srcdir/and-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test and-3 may have failed." 1>&2
+ $echo The command "cmp and-3.O $srcdir/and-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s and-3.E || rm -f and-3.E
+$xx '' -a '' > and-4.O 2> and-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test and-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp and-4.O $srcdir/and-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed and-4"; fi;;
+ 1) $echo "Test and-4 failed: files and-4.O and $srcdir/and-4.X differ" 1>&2
+ (diff -c and-4.O $srcdir/and-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test and-4 may have failed." 1>&2
+ $echo The command "cmp and-4.O $srcdir/and-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s and-4.E || rm -f and-4.E
+$xx t -o t > or-1.O 2> or-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test or-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp or-1.O $srcdir/or-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed or-1"; fi;;
+ 1) $echo "Test or-1 failed: files or-1.O and $srcdir/or-1.X differ" 1>&2
+ (diff -c or-1.O $srcdir/or-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test or-1 may have failed." 1>&2
+ $echo The command "cmp or-1.O $srcdir/or-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s or-1.E || rm -f or-1.E
+$xx '' -o t > or-2.O 2> or-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test or-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp or-2.O $srcdir/or-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed or-2"; fi;;
+ 1) $echo "Test or-2 failed: files or-2.O and $srcdir/or-2.X differ" 1>&2
+ (diff -c or-2.O $srcdir/or-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test or-2 may have failed." 1>&2
+ $echo The command "cmp or-2.O $srcdir/or-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s or-2.E || rm -f or-2.E
+$xx t -o '' > or-3.O 2> or-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test or-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp or-3.O $srcdir/or-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed or-3"; fi;;
+ 1) $echo "Test or-3 failed: files or-3.O and $srcdir/or-3.X differ" 1>&2
+ (diff -c or-3.O $srcdir/or-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test or-3 may have failed." 1>&2
+ $echo The command "cmp or-3.O $srcdir/or-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s or-3.E || rm -f or-3.E
+$xx '' -o '' > or-4.O 2> or-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test or-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp or-4.O $srcdir/or-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed or-4"; fi;;
+ 1) $echo "Test or-4 failed: files or-4.O and $srcdir/or-4.X differ" 1>&2
+ (diff -c or-4.O $srcdir/or-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test or-4 may have failed." 1>&2
+ $echo The command "cmp or-4.O $srcdir/or-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s or-4.E || rm -f or-4.E
+$xx 9 -eq 9 > eq-1.O 2> eq-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test eq-1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp eq-1.O $srcdir/eq-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed eq-1"; fi;;
+ 1) $echo "Test eq-1 failed: files eq-1.O and $srcdir/eq-1.X differ" 1>&2
+ (diff -c eq-1.O $srcdir/eq-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test eq-1 may have failed." 1>&2
+ $echo The command "cmp eq-1.O $srcdir/eq-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s eq-1.E || rm -f eq-1.E
+$xx 0 -eq 0 > eq-2.O 2> eq-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test eq-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp eq-2.O $srcdir/eq-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed eq-2"; fi;;
+ 1) $echo "Test eq-2 failed: files eq-2.O and $srcdir/eq-2.X differ" 1>&2
+ (diff -c eq-2.O $srcdir/eq-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test eq-2 may have failed." 1>&2
+ $echo The command "cmp eq-2.O $srcdir/eq-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s eq-2.E || rm -f eq-2.E
+$xx 0 -eq 00 > eq-3.O 2> eq-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test eq-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp eq-3.O $srcdir/eq-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed eq-3"; fi;;
+ 1) $echo "Test eq-3 failed: files eq-3.O and $srcdir/eq-3.X differ" 1>&2
+ (diff -c eq-3.O $srcdir/eq-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test eq-3 may have failed." 1>&2
+ $echo The command "cmp eq-3.O $srcdir/eq-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s eq-3.E || rm -f eq-3.E
+$xx 8 -eq 9 > eq-4.O 2> eq-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test eq-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp eq-4.O $srcdir/eq-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed eq-4"; fi;;
+ 1) $echo "Test eq-4 failed: files eq-4.O and $srcdir/eq-4.X differ" 1>&2
+ (diff -c eq-4.O $srcdir/eq-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test eq-4 may have failed." 1>&2
+ $echo The command "cmp eq-4.O $srcdir/eq-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s eq-4.E || rm -f eq-4.E
+$xx 1 -eq 0 > eq-5.O 2> eq-5.E
+code=$?
+if test $code != 1; then
+ $echo "Test eq-5 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp eq-5.O $srcdir/eq-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed eq-5"; fi;;
+ 1) $echo "Test eq-5 failed: files eq-5.O and $srcdir/eq-5.X differ" 1>&2
+ (diff -c eq-5.O $srcdir/eq-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test eq-5 may have failed." 1>&2
+ $echo The command "cmp eq-5.O $srcdir/eq-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s eq-5.E || rm -f eq-5.E
+$xx 340282366920938463463374607431768211456 -eq 0 > eq-6.O 2> eq-6.E
+code=$?
+if test $code != 1; then
+ $echo "Test eq-6 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp eq-6.O $srcdir/eq-6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed eq-6"; fi;;
+ 1) $echo "Test eq-6 failed: files eq-6.O and $srcdir/eq-6.X differ" 1>&2
+ (diff -c eq-6.O $srcdir/eq-6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test eq-6 may have failed." 1>&2
+ $echo The command "cmp eq-6.O $srcdir/eq-6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s eq-6.E || rm -f eq-6.E
+$xx 5 -gt 5 > gt-1.O 2> gt-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test gt-1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp gt-1.O $srcdir/gt-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed gt-1"; fi;;
+ 1) $echo "Test gt-1 failed: files gt-1.O and $srcdir/gt-1.X differ" 1>&2
+ (diff -c gt-1.O $srcdir/gt-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test gt-1 may have failed." 1>&2
+ $echo The command "cmp gt-1.O $srcdir/gt-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s gt-1.E || rm -f gt-1.E
+$xx 5 -gt 4 > gt-2.O 2> gt-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test gt-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp gt-2.O $srcdir/gt-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed gt-2"; fi;;
+ 1) $echo "Test gt-2 failed: files gt-2.O and $srcdir/gt-2.X differ" 1>&2
+ (diff -c gt-2.O $srcdir/gt-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test gt-2 may have failed." 1>&2
+ $echo The command "cmp gt-2.O $srcdir/gt-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s gt-2.E || rm -f gt-2.E
+$xx 4 -gt 5 > gt-3.O 2> gt-3.E
+code=$?
+if test $code != 1; then
+ $echo "Test gt-3 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp gt-3.O $srcdir/gt-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed gt-3"; fi;;
+ 1) $echo "Test gt-3 failed: files gt-3.O and $srcdir/gt-3.X differ" 1>&2
+ (diff -c gt-3.O $srcdir/gt-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test gt-3 may have failed." 1>&2
+ $echo The command "cmp gt-3.O $srcdir/gt-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s gt-3.E || rm -f gt-3.E
+$xx -1 -gt -2 > gt-4.O 2> gt-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test gt-4 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp gt-4.O $srcdir/gt-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed gt-4"; fi;;
+ 1) $echo "Test gt-4 failed: files gt-4.O and $srcdir/gt-4.X differ" 1>&2
+ (diff -c gt-4.O $srcdir/gt-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test gt-4 may have failed." 1>&2
+ $echo The command "cmp gt-4.O $srcdir/gt-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s gt-4.E || rm -f gt-4.E
+$xx 18446744073709551616 -gt -18446744073709551616 > gt-5.O 2> gt-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test gt-5 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp gt-5.O $srcdir/gt-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed gt-5"; fi;;
+ 1) $echo "Test gt-5 failed: files gt-5.O and $srcdir/gt-5.X differ" 1>&2
+ (diff -c gt-5.O $srcdir/gt-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test gt-5 may have failed." 1>&2
+ $echo The command "cmp gt-5.O $srcdir/gt-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s gt-5.E || rm -f gt-5.E
+$xx 5 -lt 5 > lt-1.O 2> lt-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test lt-1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp lt-1.O $srcdir/lt-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed lt-1"; fi;;
+ 1) $echo "Test lt-1 failed: files lt-1.O and $srcdir/lt-1.X differ" 1>&2
+ (diff -c lt-1.O $srcdir/lt-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test lt-1 may have failed." 1>&2
+ $echo The command "cmp lt-1.O $srcdir/lt-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s lt-1.E || rm -f lt-1.E
+$xx 5 -lt 4 > lt-2.O 2> lt-2.E
+code=$?
+if test $code != 1; then
+ $echo "Test lt-2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp lt-2.O $srcdir/lt-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed lt-2"; fi;;
+ 1) $echo "Test lt-2 failed: files lt-2.O and $srcdir/lt-2.X differ" 1>&2
+ (diff -c lt-2.O $srcdir/lt-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test lt-2 may have failed." 1>&2
+ $echo The command "cmp lt-2.O $srcdir/lt-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s lt-2.E || rm -f lt-2.E
+$xx 4 -lt 5 > lt-3.O 2> lt-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test lt-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp lt-3.O $srcdir/lt-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed lt-3"; fi;;
+ 1) $echo "Test lt-3 failed: files lt-3.O and $srcdir/lt-3.X differ" 1>&2
+ (diff -c lt-3.O $srcdir/lt-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test lt-3 may have failed." 1>&2
+ $echo The command "cmp lt-3.O $srcdir/lt-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s lt-3.E || rm -f lt-3.E
+$xx -1 -lt -2 > lt-4.O 2> lt-4.E
+code=$?
+if test $code != 1; then
+ $echo "Test lt-4 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp lt-4.O $srcdir/lt-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed lt-4"; fi;;
+ 1) $echo "Test lt-4 failed: files lt-4.O and $srcdir/lt-4.X differ" 1>&2
+ (diff -c lt-4.O $srcdir/lt-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test lt-4 may have failed." 1>&2
+ $echo The command "cmp lt-4.O $srcdir/lt-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s lt-4.E || rm -f lt-4.E
+$xx -18446744073709551616 -lt 18446744073709551616 > lt-5.O 2> lt-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test lt-5 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp lt-5.O $srcdir/lt-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed lt-5"; fi;;
+ 1) $echo "Test lt-5 failed: files lt-5.O and $srcdir/lt-5.X differ" 1>&2
+ (diff -c lt-5.O $srcdir/lt-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test lt-5 may have failed." 1>&2
+ $echo The command "cmp lt-5.O $srcdir/lt-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s lt-5.E || rm -f lt-5.E
+$xx 0x0 -eq 00 > inv-1.O 2> inv-1.E
+code=$?
+if test $code != 2; then
+ $echo "Test inv-1 failed: $xx return code $code differs from expected value 2" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp inv-1.O $srcdir/inv-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed inv-1"; fi;;
+ 1) $echo "Test inv-1 failed: files inv-1.O and $srcdir/inv-1.X differ" 1>&2
+ (diff -c inv-1.O $srcdir/inv-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test inv-1 may have failed." 1>&2
+ $echo The command "cmp inv-1.O $srcdir/inv-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s inv-1.E || rm -f inv-1.E
+$xx -t > t1.O 2> t1.E
+code=$?
+if test $code != 0; then
+ $echo "Test t1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp t1.O $srcdir/t1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed t1"; fi;;
+ 1) $echo "Test t1 failed: files t1.O and $srcdir/t1.X differ" 1>&2
+ (diff -c t1.O $srcdir/t1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test t1 may have failed." 1>&2
+ $echo The command "cmp t1.O $srcdir/t1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s t1.E || rm -f t1.E
+$xx -t 1 > t2.O 2> t2.E
+code=$?
+if test $code != 1; then
+ $echo "Test t2 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp t2.O $srcdir/t2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed t2"; fi;;
+ 1) $echo "Test t2 failed: files t2.O and $srcdir/t2.X differ" 1>&2
+ (diff -c t2.O $srcdir/t2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test t2 may have failed." 1>&2
+ $echo The command "cmp t2.O $srcdir/t2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s t2.E || rm -f t2.E
+$xx '(' '' ')' > paren-1.O 2> paren-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test paren-1 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp paren-1.O $srcdir/paren-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed paren-1"; fi;;
+ 1) $echo "Test paren-1 failed: files paren-1.O and $srcdir/paren-1.X differ" 1>&2
+ (diff -c paren-1.O $srcdir/paren-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test paren-1 may have failed." 1>&2
+ $echo The command "cmp paren-1.O $srcdir/paren-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s paren-1.E || rm -f paren-1.E
+$xx '(' '(' ')' > paren-2.O 2> paren-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test paren-2 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp paren-2.O $srcdir/paren-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed paren-2"; fi;;
+ 1) $echo "Test paren-2 failed: files paren-2.O and $srcdir/paren-2.X differ" 1>&2
+ (diff -c paren-2.O $srcdir/paren-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test paren-2 may have failed." 1>&2
+ $echo The command "cmp paren-2.O $srcdir/paren-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s paren-2.E || rm -f paren-2.E
+$xx '(' ')' ')' > paren-3.O 2> paren-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test paren-3 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp paren-3.O $srcdir/paren-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed paren-3"; fi;;
+ 1) $echo "Test paren-3 failed: files paren-3.O and $srcdir/paren-3.X differ" 1>&2
+ (diff -c paren-3.O $srcdir/paren-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test paren-3 may have failed." 1>&2
+ $echo The command "cmp paren-3.O $srcdir/paren-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s paren-3.E || rm -f paren-3.E
+$xx '(' ! ')' > paren-4.O 2> paren-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test paren-4 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp paren-4.O $srcdir/paren-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed paren-4"; fi;;
+ 1) $echo "Test paren-4 failed: files paren-4.O and $srcdir/paren-4.X differ" 1>&2
+ (diff -c paren-4.O $srcdir/paren-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test paren-4 may have failed." 1>&2
+ $echo The command "cmp paren-4.O $srcdir/paren-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s paren-4.E || rm -f paren-4.E
+$xx '(' -a ')' > paren-5.O 2> paren-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test paren-5 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp paren-5.O $srcdir/paren-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed paren-5"; fi;;
+ 1) $echo "Test paren-5 failed: files paren-5.O and $srcdir/paren-5.X differ" 1>&2
+ (diff -c paren-5.O $srcdir/paren-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test paren-5 may have failed." 1>&2
+ $echo The command "cmp paren-5.O $srcdir/paren-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s paren-5.E || rm -f paren-5.E
+if test $errors = 0; then
+ $echo Passed all 262 tests. 1>&2
+else
+ $echo Failed $errors tests. 1>&2
+fi
+test $errors = 0 || errors=1
+exit $errors
diff --git a/tests/touch/Makefile.am b/tests/touch/Makefile.am
new file mode 100644
index 0000000..1fce9cd
--- /dev/null
+++ b/tests/touch/Makefile.am
@@ -0,0 +1,30 @@
+# Make coreutils tests for "touch". -*-Makefile-*-
+
+# Copyright (C) 1998-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+TESTS = \
+ read-only \
+ relative \
+ not-owner \
+ no-create-missing \
+ fail-diag dir-1 dangling-symlink empty-file fifo no-rights obsolescent
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ host_triplet=$(host_triplet) \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
diff --git a/tests/touch/Makefile.in b/tests/touch/Makefile.in
new file mode 100644
index 0000000..442fa3f
--- /dev/null
+++ b/tests/touch/Makefile.in
@@ -0,0 +1,742 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils tests for "touch". -*-Makefile-*-
+
+# Copyright (C) 1998-2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/touch
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = \
+ read-only \
+ relative \
+ not-owner \
+ no-create-missing \
+ fail-diag dir-1 dangling-symlink empty-file fifo no-rights obsolescent
+
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ host_triplet=$(host_triplet) \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/touch/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/touch/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/touch/dangling-symlink b/tests/touch/dangling-symlink
new file mode 100755
index 0000000..2f43902
--- /dev/null
+++ b/tests/touch/dangling-symlink
@@ -0,0 +1,56 @@
+#!/bin/sh
+# Make sure touch can create a file through a dangling symlink.
+# This was broken in the 4.0[e-i] test releases.
+
+# Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ touch --version
+fi
+
+rm -f touch-target t-symlink
+ln -s touch-target t-symlink
+fail=0
+
+# This used to infloop.
+touch t-symlink || fail=1
+
+test -f touch-target || fail=1
+rm -f touch-target t-symlink
+
+if test $fail = 1; then
+ case $host_triplet in
+ *linux-gnu*)
+ case "`uname -r`" in
+ 2.3.9[0-9]*)
+ cat 1>&2 <<EOF
+====================================================
+$0: WARNING!!!
+This version of the Linux kernel causes touch to fail
+when operating on dangling symlinks.
+====================================================
+EOF
+ exit 77
+ ;;
+ esac
+ ;;
+ esac
+fi
+
+exit $fail
diff --git a/tests/touch/dir-1 b/tests/touch/dir-1
new file mode 100755
index 0000000..bbfbd68
--- /dev/null
+++ b/tests/touch/dir-1
@@ -0,0 +1,12 @@
+#!/bin/sh
+# Make sure touch can operate on a directory.
+# This was broken in the 4.0[efg] test releases.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ touch --version
+fi
+
+fail=0
+touch . || fail=1
+exit $fail
diff --git a/tests/touch/empty-file b/tests/touch/empty-file
new file mode 100755
index 0000000..b918362
--- /dev/null
+++ b/tests/touch/empty-file
@@ -0,0 +1,93 @@
+#!/bin/sh
+# Make sure touch can set the mtime on an empty file.
+
+# Copyright (C) 1998, 1999, 2000, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+
+# Volker Borchert reported that touch 3.16r (and presumably all before that)
+# fails to work on SunOS 4.1.3 with `most of the recommended patches' when
+# the empty file is on an NFS-mounted 4.2 volume.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ touch --version
+fi
+
+. $srcdir/../envvar-check
+
+DEFAULT_SLEEP_SECONDS=2
+SLEEP_SECONDS=${SLEEP_SECONDS=$DEFAULT_SLEEP_SECONDS}
+
+fail=0
+
+# FIXME: find writable directories on other partitions
+# and run the test in those directories, too.
+
+: ${TOUCH_DIR_LIST=.}
+
+framework_failure=0
+
+for d in $TOUCH_DIR_LIST; do
+ rm -rf $d/a $d/b $d/c
+ > $d/a || framework_failure=1
+ test -f $d/a || framework_failure=1
+ > $d/b || framework_failure=1
+ test -f $d/b || framework_failure=1
+ > $d/c || framework_failure=1
+ test -f $d/c || framework_failure=1
+done
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ exit 1
+fi
+
+echo sleeping for $SLEEP_SECONDS seconds...
+sleep $SLEEP_SECONDS
+for d in $TOUCH_DIR_LIST; do
+ touch $d/a || fail=1
+ set x `ls -t $d/a $d/b`
+ test "$*" = "x $d/a $d/b" || fail=1
+done
+
+echo sleeping for $SLEEP_SECONDS seconds...
+sleep $SLEEP_SECONDS
+for d in $TOUCH_DIR_LIST; do
+ touch $d/b
+ set x `ls -t $d/a $d/b`
+ test "$*" = "x $d/b $d/a" || fail=1
+
+ if touch - 1< $d/c 2> /dev/null; then
+ set x `ls -t $d/a $d/c`
+ test "$*" = "x $d/c $d/a" || fail=1
+ fi
+
+ rm -rf $d/a $d/b $d/c
+done
+
+if test $fail != 0; then
+ cat 1>&2 <<EOF
+*** This test has just failed. That can happen when the test is run in an
+*** NFS-mounted directory on a system whose clock is not well synchronized
+*** with that of the NFS server. If you think that is the reason, set the
+*** environment variable SLEEP_SECONDS to some number of seconds larger than
+*** the default of $DEFAULT_SLEEP_SECONDS and rerun the test.
+EOF
+fi
+
+exit $fail
diff --git a/tests/touch/fail-diag b/tests/touch/fail-diag
new file mode 100755
index 0000000..082f754
--- /dev/null
+++ b/tests/touch/fail-diag
@@ -0,0 +1,59 @@
+#!/bin/sh
+# make sure touch gives reasonable diagnostics
+
+# Copyright (C) 2001, 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ touch --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+tmp=fail-diag.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+d1=no-$$
+dir=/$d1/such-dir
+# Ensure that $d1 doesn't already exist.
+ls -d $d1 2> /dev/null && framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework' 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+touch $dir > out 2>&1 && fail=1
+cat <<EOF > exp
+touch: cannot touch \`$dir': No such file or directory
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/touch/fifo b/tests/touch/fifo
new file mode 100755
index 0000000..dc33c0f
--- /dev/null
+++ b/tests/touch/fifo
@@ -0,0 +1,48 @@
+#!/bin/sh
+# Make sure touch works on fifos without hanging.
+
+# Copyright (C) 2000 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ touch --version
+fi
+
+framework_failure=0
+
+tmp=fifo-$$
+rm -rf $tmp
+mkfifo $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ # Make an exception of this case -- usually we interpret framework-creation
+ # failure as a test failure. However, in this case, when running on a SunOS
+ # system using a disk NFS mounted from OpenBSD, the above fails like this:
+ # mkfifo: cannot make fifo `fifo-10558': Not owner
+ echo '********************************************'
+ echo 'NOTICE: unable to create test prerequisites'
+ echo '********************************************'
+ exit 77
+fi
+
+fail=0
+
+touch $tmp || fail=1
+rm -rf $tmp
+
+exit $fail
diff --git a/tests/touch/no-create-missing b/tests/touch/no-create-missing
new file mode 100755
index 0000000..cf6b6dc
--- /dev/null
+++ b/tests/touch/no-create-missing
@@ -0,0 +1,56 @@
+#!/bin/sh
+# Ensure that touch -c no-such-file no longer fails (it did in 4.1.8).
+
+# Copyright (C) 2002, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ touch --version
+fi
+
+pwd=`pwd`
+tmp=`echo "$0"|sed 's,.*/,,'`.tmp
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+touch -c no-file > /dev/null 2>&1 || fail=1
+touch -cm no-file > /dev/null 2>&1 || fail=1
+touch -ca no-file > /dev/null 2>&1 || fail=1
+
+# If >&- works, test "touch -c -" etc.
+# >&- apparently does not work in HP-UX 11.23.
+# This test is ineffective unless /dev/stdout also works.
+if "$pwd/../../src/test" -w /dev/stdout >/dev/null &&
+ "$pwd/../../src/test" ! -w /dev/stdout >&-; then
+ touch -c - >&- 2> /dev/null || fail=1
+ touch -cm - >&- 2> /dev/null || fail=1
+ touch -ca - >&- 2> /dev/null || fail=1
+fi
+
+(exit $fail); exit $fail
diff --git a/tests/touch/no-rights b/tests/touch/no-rights
new file mode 100755
index 0000000..8faef99
--- /dev/null
+++ b/tests/touch/no-rights
@@ -0,0 +1,57 @@
+#!/bin/sh
+# Make sure touch can update the times on a file that is neither
+# readable nor writable.
+
+# Copyright (C) 1999, 2000, 2002, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ touch --version
+fi
+
+. $srcdir/../envvar-check
+
+DEFAULT_SLEEP_SECONDS=2
+SLEEP_SECONDS=${SLEEP_SECONDS=$DEFAULT_SLEEP_SECONDS}
+
+t1=no-rw1
+t2=no-rw2
+rm -rf $t1 $t2
+: > $t1
+
+# Make sure $t2 is two seconds newer than $t1.
+echo sleeping for $SLEEP_SECONDS seconds...
+sleep $SLEEP_SECONDS
+: > $t2
+fail=0
+
+set x `ls -t $t1 $t2`
+test "$*" = "x $t2 $t1" || fail=1
+
+chmod 0 $t1
+touch -d tomorrow -c $t1 || fail=1
+
+set x `ls -t $t1 $t2`
+test "$*" = "x $t1 $t2" || fail=1
+
+# Also test the combination of --no-create and -a.
+touch -a --no-create $t1 || fail=1
+
+rm -f $t1 $t2
+
+exit $fail
diff --git a/tests/touch/not-owner b/tests/touch/not-owner
new file mode 100755
index 0000000..4d63ad7
--- /dev/null
+++ b/tests/touch/not-owner
@@ -0,0 +1,76 @@
+#!/bin/sh
+# Make sure that touch gives reasonable diagnostics when applied
+# to an unwritable directory owned by some other user.
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ touch --version
+fi
+
+. $srcdir/../envvar-check
+. $srcdir/../lang-default
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+test=../../src/test
+if $test -w /; then
+ echo Skipping because you have write access to /.
+ (exit 77); exit 77
+fi
+
+if $test -O / || $test -G /; then
+ echo Skipping because you own /.
+ (exit 77); exit 77
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Before fileutils-4.1, we'd get the following misleading
+# diagnostic instead of `...: Permission denied'.
+# touch: creating `/': Is a directory
+touch / > out 2>&1 && fail=1
+
+# On SunOS4, EPERM is `Not owner'.
+# On some *BSD systems it's `Operation not permitted'.
+for msg in 'Not owner' 'Operation not permitted' 'Permission denied'; do
+ cat > exp <<EOF
+touch: setting times of \`/': $msg
+EOF
+
+ cmp out exp > /dev/null 2>&1 && { match=1; break; }
+done
+test "$match" = 1 || fail=1
+
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/touch/obsolescent b/tests/touch/obsolescent
new file mode 100755
index 0000000..0f99210
--- /dev/null
+++ b/tests/touch/obsolescent
@@ -0,0 +1,60 @@
+#!/bin/sh
+# Test touch with obsolescent 8- or 10-digit time stamps.
+
+# Copyright (C) 2000, 2004, 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+_POSIX2_VERSION=199209; export _POSIX2_VERSION
+POSIXLY_CORRECT=1; export POSIXLY_CORRECT
+
+if test "$VERBOSE" = yes; then
+ set -x
+ touch --version
+fi
+
+pwd=`pwd`
+tmp=obsol.$$
+trap 'status=$?; cd "$pwd" && rm -rf $tmp && exit $status' 0
+trap '(exit $?); exit' 1 2 13 15
+
+framework_failure=0
+mkdir $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo 'failure in testing framework'
+ (exit 1); exit 1
+fi
+
+fail=0
+
+yearstart=01010000
+
+for ones in 11111111 1111111111; do
+ for args in $ones "-- $ones" "$yearstart $ones" "-- $yearstart $ones"; do
+ touch $args || fail=1
+ test -f $ones || fail=1
+ test -f $yearstart && fail=1
+ rm -f $ones || fail=1
+ done
+done
+
+y2000=0101000000
+rm -f $y2000 file || fail=1
+touch $y2000 file && test -f $y2000 && test -f file || fail=1
+
+(exit $fail); exit $fail
diff --git a/tests/touch/read-only b/tests/touch/read-only
new file mode 100755
index 0000000..0a12ec7
--- /dev/null
+++ b/tests/touch/read-only
@@ -0,0 +1,51 @@
+#!/bin/sh
+# ensure that touch can operate on read-only files
+
+# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ touch --version
+fi
+
+PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+: > read-only || framework_failure=1
+chmod 444 read-only || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+touch read-only || fail=1
+
+touch - 1< read-only 2> /dev/null && { test ! -f - || fail=1; }
+
+(exit $fail); exit $fail
diff --git a/tests/touch/relative b/tests/touch/relative
new file mode 100755
index 0000000..dc1e49e
--- /dev/null
+++ b/tests/touch/relative
@@ -0,0 +1,59 @@
+#!/bin/sh
+# Demonstrate using a combination of --reference and --date to
+# set the time of a file back by an arbitrary amount.
+
+# Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ touch --version
+fi
+
+. $srcdir/../envvar-check
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+TZ=UTC0 touch --date='2004-01-16 12:00 +0000' f || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+# Set times back by 5 days.
+touch --ref f --date='-5 days' f || fail=1
+
+TZ=UTC0 ls -og --time-style=+%Y-%m-%d f > out.1 || fail
+sed 's/ f$//;s/.* //' out.1 > out
+
+cat <<\EOF > exp || fail=1
+2004-01-11
+EOF
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail
diff --git a/tests/tr/1.I b/tests/tr/1.I
new file mode 100644
index 0000000..85df507
--- /dev/null
+++ b/tests/tr/1.I
@@ -0,0 +1 @@
+abcd \ No newline at end of file
diff --git a/tests/tr/1.X b/tests/tr/1.X
new file mode 100644
index 0000000..214a034
--- /dev/null
+++ b/tests/tr/1.X
@@ -0,0 +1 @@
+]]]] \ No newline at end of file
diff --git a/tests/tr/2.I b/tests/tr/2.I
new file mode 100644
index 0000000..f2ba8f8
--- /dev/null
+++ b/tests/tr/2.I
@@ -0,0 +1 @@
+abc \ No newline at end of file
diff --git a/tests/tr/2.X b/tests/tr/2.X
new file mode 100644
index 0000000..d66d9d7
--- /dev/null
+++ b/tests/tr/2.X
@@ -0,0 +1 @@
+xyz \ No newline at end of file
diff --git a/tests/tr/3.I b/tests/tr/3.I
new file mode 100644
index 0000000..f2ba8f8
--- /dev/null
+++ b/tests/tr/3.I
@@ -0,0 +1 @@
+abc \ No newline at end of file
diff --git a/tests/tr/3.X b/tests/tr/3.X
new file mode 100644
index 0000000..f2ba8f8
--- /dev/null
+++ b/tests/tr/3.X
@@ -0,0 +1 @@
+abc \ No newline at end of file
diff --git a/tests/tr/4.I b/tests/tr/4.I
new file mode 100644
index 0000000..6a81654
--- /dev/null
+++ b/tests/tr/4.I
@@ -0,0 +1 @@
+abcde \ No newline at end of file
diff --git a/tests/tr/4.X b/tests/tr/4.X
new file mode 100644
index 0000000..410c0a3
--- /dev/null
+++ b/tests/tr/4.X
@@ -0,0 +1 @@
+xycde \ No newline at end of file
diff --git a/tests/tr/5.I b/tests/tr/5.I
new file mode 100644
index 0000000..6a81654
--- /dev/null
+++ b/tests/tr/5.I
@@ -0,0 +1 @@
+abcde \ No newline at end of file
diff --git a/tests/tr/5.X b/tests/tr/5.X
new file mode 100644
index 0000000..882b506
--- /dev/null
+++ b/tests/tr/5.X
@@ -0,0 +1 @@
+xyyye \ No newline at end of file
diff --git a/tests/tr/6.I b/tests/tr/6.I
new file mode 100644
index 0000000..6a81654
--- /dev/null
+++ b/tests/tr/6.I
@@ -0,0 +1 @@
+abcde \ No newline at end of file
diff --git a/tests/tr/6.X b/tests/tr/6.X
new file mode 100644
index 0000000..882b506
--- /dev/null
+++ b/tests/tr/6.X
@@ -0,0 +1 @@
+xyyye \ No newline at end of file
diff --git a/tests/tr/7.I b/tests/tr/7.I
new file mode 100644
index 0000000..70e6a83
--- /dev/null
+++ b/tests/tr/7.I
@@ -0,0 +1 @@
+abcdefghijklmnop \ No newline at end of file
diff --git a/tests/tr/7.X b/tests/tr/7.X
new file mode 100644
index 0000000..91883c3
--- /dev/null
+++ b/tests/tr/7.X
@@ -0,0 +1 @@
+%.$ \ No newline at end of file
diff --git a/tests/tr/8.I b/tests/tr/8.I
new file mode 100644
index 0000000..70e6a83
--- /dev/null
+++ b/tests/tr/8.I
@@ -0,0 +1 @@
+abcdefghijklmnop \ No newline at end of file
diff --git a/tests/tr/8.X b/tests/tr/8.X
new file mode 100644
index 0000000..0b8a7bd
--- /dev/null
+++ b/tests/tr/8.X
@@ -0,0 +1 @@
+.$ \ No newline at end of file
diff --git a/tests/tr/9.I b/tests/tr/9.I
new file mode 100644
index 0000000..70e6a83
--- /dev/null
+++ b/tests/tr/9.I
@@ -0,0 +1 @@
+abcdefghijklmnop \ No newline at end of file
diff --git a/tests/tr/9.X b/tests/tr/9.X
new file mode 100644
index 0000000..48b4659
--- /dev/null
+++ b/tests/tr/9.X
@@ -0,0 +1 @@
+%. \ No newline at end of file
diff --git a/tests/tr/Makefile.am b/tests/tr/Makefile.am
new file mode 100644
index 0000000..1d9605a
--- /dev/null
+++ b/tests/tr/Makefile.am
@@ -0,0 +1,82 @@
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+##test-files-begin
+x = tr
+explicit =
+maint_gen = 1.I 1.X 2.I 2.X 3.I 3.X 4.I 4.X 5.I 5.X 6.I 6.X 7.I 7.X 8.I 8.X \
+9.I 9.X a.I a.X b.I b.X c.I c.X d.I d.X e.I e.X f.I f.X g.I g.X h.I h.X i.I \
+i.X j.I j.X k.I k.X l.I l.X m.I m.X n.I n.X o.I o.X p.I p.X q.I q.X r.I r.X \
+s.I s.X t.I t.X u.I u.X v.I v.X w.I w.X x.I x.X y.I y.X z.I z.X range-a-a.I \
+range-a-a.X null.I null.X upcase.I upcase.X dncase.I dncase.X rep-cclass.I \
+rep-cclass.X rep-1.I rep-1.X rep-2.I rep-2.X rep-3.I rep-3.X o-rep-1.I \
+o-rep-1.X o-rep-2.I o-rep-2.X esc.I esc.X bs-055.I bs-055.X bs-at-end.I \
+bs-at-end.X ross-0a.I ross-0a.X ross-0b.I ross-0b.X ross-1a.I ross-1a.X \
+ross-1b.I ross-1b.X ross-2.I ross-2.X ross-3.I ross-3.X ross-4.I ross-4.X \
+ross-5.I ross-5.X ross-6.I ross-6.X empty-eq.I empty-eq.X empty-cc.I \
+empty-cc.X repeat-bs-9.I repeat-bs-9.X repeat-0.I repeat-0.X repeat-zeros.I \
+repeat-zeros.X repeat-compl.I repeat-compl.X repeat-xC.I repeat-xC.X \
+fowler-1.I fowler-1.X
+run_gen = 1.O 1.E 2.O 2.E 3.O 3.E 4.O 4.E 5.O 5.E 6.O 6.E 7.O 7.E 8.O 8.E 9.O \
+9.E a.O a.E b.O b.E c.O c.E d.O d.E e.O e.E f.O f.E g.O g.E h.O h.E i.O i.E \
+j.O j.E k.O k.E l.O l.E m.O m.E n.O n.E o.O o.E p.O p.E q.O q.E r.O r.E s.O \
+s.E t.O t.E u.O u.E v.O v.E w.O w.E x.O x.E y.O y.E z.O z.E range-a-a.O \
+range-a-a.E null.O null.E upcase.O upcase.E dncase.O dncase.E rep-cclass.O \
+rep-cclass.E rep-1.O rep-1.E rep-2.O rep-2.E rep-3.O rep-3.E o-rep-1.O \
+o-rep-1.E o-rep-2.O o-rep-2.E esc.O esc.E bs-055.O bs-055.E bs-at-end.O \
+bs-at-end.E ross-0a.O ross-0a.E ross-0b.O ross-0b.E ross-1a.O ross-1a.E \
+ross-1b.O ross-1b.E ross-2.O ross-2.E ross-3.O ross-3.E ross-4.O ross-4.E \
+ross-5.O ross-5.E ross-6.O ross-6.E empty-eq.O empty-eq.E empty-cc.O \
+empty-cc.E repeat-bs-9.O repeat-bs-9.E repeat-0.O repeat-0.E repeat-zeros.O \
+repeat-zeros.E repeat-compl.O repeat-compl.E repeat-xC.O repeat-xC.E \
+fowler-1.O fowler-1.E
+##test-files-end
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+
+TESTS = $x-tests
+
+mk_script = $(srcdir)/../mk-script
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
diff --git a/tests/tr/Makefile.in b/tests/tr/Makefile.in
new file mode 100644
index 0000000..6ae4ba3
--- /dev/null
+++ b/tests/tr/Makefile.in
@@ -0,0 +1,792 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/tr
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in TODO
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SCRIPTS = $(noinst_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+x = tr
+explicit =
+maint_gen = 1.I 1.X 2.I 2.X 3.I 3.X 4.I 4.X 5.I 5.X 6.I 6.X 7.I 7.X 8.I 8.X \
+9.I 9.X a.I a.X b.I b.X c.I c.X d.I d.X e.I e.X f.I f.X g.I g.X h.I h.X i.I \
+i.X j.I j.X k.I k.X l.I l.X m.I m.X n.I n.X o.I o.X p.I p.X q.I q.X r.I r.X \
+s.I s.X t.I t.X u.I u.X v.I v.X w.I w.X x.I x.X y.I y.X z.I z.X range-a-a.I \
+range-a-a.X null.I null.X upcase.I upcase.X dncase.I dncase.X rep-cclass.I \
+rep-cclass.X rep-1.I rep-1.X rep-2.I rep-2.X rep-3.I rep-3.X o-rep-1.I \
+o-rep-1.X o-rep-2.I o-rep-2.X esc.I esc.X bs-055.I bs-055.X bs-at-end.I \
+bs-at-end.X ross-0a.I ross-0a.X ross-0b.I ross-0b.X ross-1a.I ross-1a.X \
+ross-1b.I ross-1b.X ross-2.I ross-2.X ross-3.I ross-3.X ross-4.I ross-4.X \
+ross-5.I ross-5.X ross-6.I ross-6.X empty-eq.I empty-eq.X empty-cc.I \
+empty-cc.X repeat-bs-9.I repeat-bs-9.X repeat-0.I repeat-0.X repeat-zeros.I \
+repeat-zeros.X repeat-compl.I repeat-compl.X repeat-xC.I repeat-xC.X \
+fowler-1.I fowler-1.X
+
+run_gen = 1.O 1.E 2.O 2.E 3.O 3.E 4.O 4.E 5.O 5.E 6.O 6.E 7.O 7.E 8.O 8.E 9.O \
+9.E a.O a.E b.O b.E c.O c.E d.O d.E e.O e.E f.O f.E g.O g.E h.O h.E i.O i.E \
+j.O j.E k.O k.E l.O l.E m.O m.E n.O n.E o.O o.E p.O p.E q.O q.E r.O r.E s.O \
+s.E t.O t.E u.O u.E v.O v.E w.O w.E x.O x.E y.O y.E z.O z.E range-a-a.O \
+range-a-a.E null.O null.E upcase.O upcase.E dncase.O dncase.E rep-cclass.O \
+rep-cclass.E rep-1.O rep-1.E rep-2.O rep-2.E rep-3.O rep-3.E o-rep-1.O \
+o-rep-1.E o-rep-2.O o-rep-2.E esc.O esc.E bs-055.O bs-055.E bs-at-end.O \
+bs-at-end.E ross-0a.O ross-0a.E ross-0b.O ross-0b.E ross-1a.O ross-1a.E \
+ross-1b.O ross-1b.E ross-2.O ross-2.E ross-3.O ross-3.E ross-4.O ross-4.E \
+ross-5.O ross-5.E ross-6.O ross-6.E empty-eq.O empty-eq.E empty-cc.O \
+empty-cc.E repeat-bs-9.O repeat-bs-9.E repeat-0.O repeat-0.E repeat-zeros.O \
+repeat-zeros.E repeat-compl.O repeat-compl.E repeat-xC.O repeat-xC.E \
+fowler-1.O fowler-1.E
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+TESTS = $x-tests
+mk_script = $(srcdir)/../mk-script
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/tr/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/tr/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(SCRIPTS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/tr/TODO b/tests/tr/TODO
new file mode 100644
index 0000000..e1cffb7
--- /dev/null
+++ b/tests/tr/TODO
@@ -0,0 +1 @@
+Integrate tests from the files `range-tests' and `failures'.
diff --git a/tests/tr/Test.pm b/tests/tr/Test.pm
new file mode 100755
index 0000000..3475740
--- /dev/null
+++ b/tests/tr/Test.pm
@@ -0,0 +1,152 @@
+# Test "tr".
+
+# Copyright (C) 1996, 1997, 2000, 2002, 2004, 2005, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+package Test;
+require 5.002;
+use strict;
+
+$Test::input_via_stdin = 1;
+
+my @tv = (
+# test flags 1 or 2 strings input expected output expected return code
+#
+['1', q|'abcd' '[]*]'|, 'abcd', ']]]]', 0],
+['2', q|'abc' '[%*]xyz'|, 'abc', 'xyz', 0],
+['3', q|'' '[.*]'|, 'abc', 'abc', 0],
+# Test --truncate-set1 behavior when string1 is longer than string2
+['4', '-t ' . q|'abcd' 'xy'|, 'abcde', 'xycde', 0],
+# Test bsd behavior (the default) when string1 is longer than string2
+['5', q|'abcd' 'xy'|, 'abcde', 'xyyye', 0],
+# Do it the posix way
+['6', q|'abcd' 'x[y*]'|, 'abcde', 'xyyye', 0],
+#
+['7', '-s ' . q|'a-p' '%[.*]$'|, 'abcdefghijklmnop', '%.$', 0],
+['8', '-s ' . q|'a-p' '[.*]$'|, 'abcdefghijklmnop', '.$', 0],
+['9', '-s ' . q|'a-p' '%[.*]'|, 'abcdefghijklmnop', '%.', 0],
+['a', '-s ' . q|'[a-z]'|, 'aabbcc', 'abc', 0],
+['b', '-s ' . q|'[a-c]'|, 'aabbcc', 'abc', 0],
+['c', '-s ' . q|'[a-b]'|, 'aabbcc', 'abcc', 0],
+['d', '-s ' . q|'[b-c]'|, 'aabbcc', 'aabc', 0],
+['e', '-s ' . q|'[\0-\5]'|,
+ "\0\0a\1\1b\2\2\2c\3\3\3d\4\4\4\4e\5\5",
+ "\0a\1b\2c\3d\4e\5", 0],
+# tests of delete
+['f', '-d ' . q|'[=[=]'|, '[[[[[[[]]]]]]]]', ']]]]]]]]', 0],
+['g', '-d ' . q|'[=]=]'|, '[[[[[[[]]]]]]]]', '[[[[[[[', 0],
+['h', '-d ' . q|'[:xdigit:]'|, '0123456789acbdefABCDEF', '', 0],
+['i', '-d ' . q|'[:xdigit:]'|, 'w0x1y2z3456789acbdefABCDEFz', 'wxyzz', 0],
+['j', '-d ' . q|'[:digit:]'|, '0123456789', '', 0],
+['k', '-d ' . q|'[:digit:]'|, 'a0b1c2d3e4f5g6h7i8j9k', 'abcdefghijk', 0],
+['l', '-d ' . q|'[:lower:]'|, 'abcdefghijklmnopqrstuvwxyz', '', 0],
+['m', '-d ' . q|'[:upper:]'|, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', '', 0],
+['n', '-d ' . q|'[:lower:][:upper:]'|,
+ 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '', 0],
+['o', '-d ' . q|'[:alpha:]'|,
+ 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '', 0],
+['p', '-d ' . q|'[:alnum:]'|,
+ 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', '', 0],
+['q', '-d ' . q|'[:alnum:]'|,
+ '.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.', '..', 0],
+['r', '-ds ' . q|'[:alnum:]' '.'|,
+ '.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.', '.', 0],
+
+# The classic example, with string2 BSD-style
+['s', '-cs ' . q|'[:alnum:]' '\n'|,
+ 'The big black fox jumped over the fence.',
+ "The\nbig\nblack\nfox\njumped\nover\nthe\nfence\n", 0],
+
+# The classic example, POSIX-style
+['t', '-cs ' . q|'[:alnum:]' '[\n*]'|,
+ 'The big black fox jumped over the fence.',
+ "The\nbig\nblack\nfox\njumped\nover\nthe\nfence\n", 0],
+['u', '-ds ' . q|'b' 'a'|, 'aabbaa', 'a', 0],
+['v', '-ds ' . q|'[:xdigit:]' 'Z'|,
+ 'ZZ0123456789acbdefABCDEFZZ', 'Z', 0],
+
+# Try some data with 8th bit set in case something is mistakenly sign-extended.
+['w', '-ds ' . q|'\350' '\345'|,
+ "\300\301\377\345\345\350\345",
+ "\300\301\377\345", 0],
+['x', '-s ' . q|'abcdefghijklmn' '[:*016]'|, 'abcdefghijklmnop', ':op', 0],
+['y', '-d ' . q|'a-z'|, 'abc $code', ' $', 0],
+['z', '-ds ' . q|'a-z' '$.'|, 'a.b.c $$$$code\\', '. $\\', 0],
+
+# Make sure that a-a is accepted.
+['range-a-a', q|'a-a' 'z'|, 'abc', 'zbc', 0],
+#
+['null', q|'a' ''''|, '', '', 1],
+['upcase',q|'[:lower:]' '[:upper:]'|, 'abcxyzABCXYZ', 'ABCXYZABCXYZ', 0],
+['dncase', q|'[:upper:]' '[:lower:]'|, 'abcxyzABCXYZ', 'abcxyzabcxyz', 0],
+#
+['rep-cclass', q|'a[=*2][=c=]' 'xyyz'|, 'a=c', 'xyz', 0],
+['rep-1', q|'[:*3][:digit:]' 'a-m'|, ':1239', 'cefgm', 0],
+['rep-2', q|'a[b*512]c' '1[x*]2'|, 'abc', '1x2', 0],
+['rep-3', q|'a[b*513]c' '1[x*]2'|, 'abc', '1x2', 0],
+# Another couple octal repeat count tests.
+['o-rep-1', q|'[b*08]' '[x*]'|, '', '', 1],
+['o-rep-2', q|'[b*010]cd' '[a*7]BC[x*]'|, 'bcd', 'BCx', 0],
+
+['esc', q|'a\-z' 'A-Z'|, 'abc-z', 'AbcBC', 0],
+['bs-055', q|'a\055b' def|, "a\055b", 'def', 0],
+['bs-at-end', q|'\' x|, "\\", 'x', 0],
+
+#
+# From Ross
+['ross-0a', '-cs ' . q|'[:upper:]' 'X[Y*]'|, '', '', 1],
+['ross-0b', '-cs ' . q|'[:cntrl:]' 'X[Y*]'|, '', '', 1],
+['ross-1a', '-cs ' . q|'[:upper:]' '[X*]'|, 'AMZamz123.-+AMZ', 'AMZXAMZ', 0],
+['ross-1b', '-cs ' . q|'[:upper:][:digit:]' '[Z*]'|, '', '', 0],
+['ross-2', '-dcs ' . q|'[:lower:]' 'n-rs-z'|, 'amzAMZ123.-+amz', 'amzamz', 0],
+['ross-3', '-ds ' . q|'[:xdigit:]' '[:alnum:]'|,
+ '.ZABCDEFGzabcdefg.0123456788899.GG', '.ZGzg..G', 0],
+['ross-4', '-dcs ' . q|'[:alnum:]' '[:digit:]'|, '', '', 0],
+['ross-5', '-dc ' . q|'[:lower:]'|, '', '', 0],
+['ross-6', '-dc ' . q|'[:upper:]'|, '', '', 0],
+
+# Ensure that these fail.
+# Prior to 2.0.20, each would evoke a failed assertion.
+['empty-eq', q|'[==]' x|, '', '', 1],
+['empty-cc', q|'[::]' x|, '', '', 1],
+
+# Weird repeat counts.
+['repeat-bs-9', q|abc '[b*\9]'|, 'abcd', '[b*d', 0],
+['repeat-0', q|abc '[b*0]'|, 'abcd', 'bbbd', 0],
+['repeat-zeros', q|abc '[b*00000000000000000000]'|, 'abcd', 'bbbd', 0],
+['repeat-compl', '-c ' . q|'[a*65536]\n' '[b*]'|, 'abcd', 'abbb', 0],
+['repeat-xC', '-C ' . q|'[a*65536]\n' '[b*]'|, 'abcd', 'abbb', 0],
+
+# From Glenn Fowler.
+['fowler-1', q|ah -H|, 'aha', '-H-', 0],
+
+);
+
+sub test_vector
+{
+ my $t;
+ foreach $t (@tv)
+ {
+ my ($test_name, $flags, $in, $exp, $ret) = @$t;
+ $Test::input_via{$test_name} = {REDIR => 0, PIPE => 0};
+ }
+
+ return @tv;
+}
+
+1;
diff --git a/tests/tr/a.I b/tests/tr/a.I
new file mode 100644
index 0000000..4a60922
--- /dev/null
+++ b/tests/tr/a.I
@@ -0,0 +1 @@
+aabbcc \ No newline at end of file
diff --git a/tests/tr/a.X b/tests/tr/a.X
new file mode 100644
index 0000000..f2ba8f8
--- /dev/null
+++ b/tests/tr/a.X
@@ -0,0 +1 @@
+abc \ No newline at end of file
diff --git a/tests/tr/b.I b/tests/tr/b.I
new file mode 100644
index 0000000..4a60922
--- /dev/null
+++ b/tests/tr/b.I
@@ -0,0 +1 @@
+aabbcc \ No newline at end of file
diff --git a/tests/tr/b.X b/tests/tr/b.X
new file mode 100644
index 0000000..f2ba8f8
--- /dev/null
+++ b/tests/tr/b.X
@@ -0,0 +1 @@
+abc \ No newline at end of file
diff --git a/tests/tr/bs-055.I b/tests/tr/bs-055.I
new file mode 100644
index 0000000..5c7796f
--- /dev/null
+++ b/tests/tr/bs-055.I
@@ -0,0 +1 @@
+a-b \ No newline at end of file
diff --git a/tests/tr/bs-055.X b/tests/tr/bs-055.X
new file mode 100644
index 0000000..0c00383
--- /dev/null
+++ b/tests/tr/bs-055.X
@@ -0,0 +1 @@
+def \ No newline at end of file
diff --git a/tests/tr/bs-at-end.I b/tests/tr/bs-at-end.I
new file mode 100644
index 0000000..b7d5379
--- /dev/null
+++ b/tests/tr/bs-at-end.I
@@ -0,0 +1 @@
+\ \ No newline at end of file
diff --git a/tests/tr/bs-at-end.X b/tests/tr/bs-at-end.X
new file mode 100644
index 0000000..c1b0730
--- /dev/null
+++ b/tests/tr/bs-at-end.X
@@ -0,0 +1 @@
+x \ No newline at end of file
diff --git a/tests/tr/c.I b/tests/tr/c.I
new file mode 100644
index 0000000..4a60922
--- /dev/null
+++ b/tests/tr/c.I
@@ -0,0 +1 @@
+aabbcc \ No newline at end of file
diff --git a/tests/tr/c.X b/tests/tr/c.X
new file mode 100644
index 0000000..8b5cb22
--- /dev/null
+++ b/tests/tr/c.X
@@ -0,0 +1 @@
+abcc \ No newline at end of file
diff --git a/tests/tr/d.I b/tests/tr/d.I
new file mode 100644
index 0000000..4a60922
--- /dev/null
+++ b/tests/tr/d.I
@@ -0,0 +1 @@
+aabbcc \ No newline at end of file
diff --git a/tests/tr/d.X b/tests/tr/d.X
new file mode 100644
index 0000000..f6d629a
--- /dev/null
+++ b/tests/tr/d.X
@@ -0,0 +1 @@
+aabc \ No newline at end of file
diff --git a/tests/tr/dncase.I b/tests/tr/dncase.I
new file mode 100644
index 0000000..ef2f0e1
--- /dev/null
+++ b/tests/tr/dncase.I
@@ -0,0 +1 @@
+abcxyzABCXYZ \ No newline at end of file
diff --git a/tests/tr/dncase.X b/tests/tr/dncase.X
new file mode 100644
index 0000000..88924ab
--- /dev/null
+++ b/tests/tr/dncase.X
@@ -0,0 +1 @@
+abcxyzabcxyz \ No newline at end of file
diff --git a/tests/tr/e.I b/tests/tr/e.I
new file mode 100644
index 0000000..17595c1
--- /dev/null
+++ b/tests/tr/e.I
Binary files differ
diff --git a/tests/tr/e.X b/tests/tr/e.X
new file mode 100644
index 0000000..b8a4f59
--- /dev/null
+++ b/tests/tr/e.X
Binary files differ
diff --git a/tests/tr/empty-cc.I b/tests/tr/empty-cc.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/empty-cc.I
diff --git a/tests/tr/empty-cc.X b/tests/tr/empty-cc.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/empty-cc.X
diff --git a/tests/tr/empty-eq.I b/tests/tr/empty-eq.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/empty-eq.I
diff --git a/tests/tr/empty-eq.X b/tests/tr/empty-eq.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/empty-eq.X
diff --git a/tests/tr/esc.I b/tests/tr/esc.I
new file mode 100644
index 0000000..b50d678
--- /dev/null
+++ b/tests/tr/esc.I
@@ -0,0 +1 @@
+abc-z \ No newline at end of file
diff --git a/tests/tr/esc.X b/tests/tr/esc.X
new file mode 100644
index 0000000..4a8f26b
--- /dev/null
+++ b/tests/tr/esc.X
@@ -0,0 +1 @@
+AbcBC \ No newline at end of file
diff --git a/tests/tr/f.I b/tests/tr/f.I
new file mode 100644
index 0000000..a2d7b65
--- /dev/null
+++ b/tests/tr/f.I
@@ -0,0 +1 @@
+[[[[[[[]]]]]]]] \ No newline at end of file
diff --git a/tests/tr/f.X b/tests/tr/f.X
new file mode 100644
index 0000000..11f77fa
--- /dev/null
+++ b/tests/tr/f.X
@@ -0,0 +1 @@
+]]]]]]]] \ No newline at end of file
diff --git a/tests/tr/fowler-1.I b/tests/tr/fowler-1.I
new file mode 100644
index 0000000..e906b8f
--- /dev/null
+++ b/tests/tr/fowler-1.I
@@ -0,0 +1 @@
+aha \ No newline at end of file
diff --git a/tests/tr/fowler-1.X b/tests/tr/fowler-1.X
new file mode 100644
index 0000000..c9feb1b
--- /dev/null
+++ b/tests/tr/fowler-1.X
@@ -0,0 +1 @@
+-H- \ No newline at end of file
diff --git a/tests/tr/g.I b/tests/tr/g.I
new file mode 100644
index 0000000..a2d7b65
--- /dev/null
+++ b/tests/tr/g.I
@@ -0,0 +1 @@
+[[[[[[[]]]]]]]] \ No newline at end of file
diff --git a/tests/tr/g.X b/tests/tr/g.X
new file mode 100644
index 0000000..92971a2
--- /dev/null
+++ b/tests/tr/g.X
@@ -0,0 +1 @@
+[[[[[[[ \ No newline at end of file
diff --git a/tests/tr/h.I b/tests/tr/h.I
new file mode 100644
index 0000000..3cda32c
--- /dev/null
+++ b/tests/tr/h.I
@@ -0,0 +1 @@
+0123456789acbdefABCDEF \ No newline at end of file
diff --git a/tests/tr/h.X b/tests/tr/h.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/h.X
diff --git a/tests/tr/i.I b/tests/tr/i.I
new file mode 100644
index 0000000..8a414d8
--- /dev/null
+++ b/tests/tr/i.I
@@ -0,0 +1 @@
+w0x1y2z3456789acbdefABCDEFz \ No newline at end of file
diff --git a/tests/tr/i.X b/tests/tr/i.X
new file mode 100644
index 0000000..fcb2d82
--- /dev/null
+++ b/tests/tr/i.X
@@ -0,0 +1 @@
+wxyzz \ No newline at end of file
diff --git a/tests/tr/j.I b/tests/tr/j.I
new file mode 100644
index 0000000..ad47100
--- /dev/null
+++ b/tests/tr/j.I
@@ -0,0 +1 @@
+0123456789 \ No newline at end of file
diff --git a/tests/tr/j.X b/tests/tr/j.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/j.X
diff --git a/tests/tr/k.I b/tests/tr/k.I
new file mode 100644
index 0000000..68f959a
--- /dev/null
+++ b/tests/tr/k.I
@@ -0,0 +1 @@
+a0b1c2d3e4f5g6h7i8j9k \ No newline at end of file
diff --git a/tests/tr/k.X b/tests/tr/k.X
new file mode 100644
index 0000000..e48ff44
--- /dev/null
+++ b/tests/tr/k.X
@@ -0,0 +1 @@
+abcdefghijk \ No newline at end of file
diff --git a/tests/tr/l.I b/tests/tr/l.I
new file mode 100644
index 0000000..e85d5b4
--- /dev/null
+++ b/tests/tr/l.I
@@ -0,0 +1 @@
+abcdefghijklmnopqrstuvwxyz \ No newline at end of file
diff --git a/tests/tr/l.X b/tests/tr/l.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/l.X
diff --git a/tests/tr/m.I b/tests/tr/m.I
new file mode 100644
index 0000000..a6860d9
--- /dev/null
+++ b/tests/tr/m.I
@@ -0,0 +1 @@
+ABCDEFGHIJKLMNOPQRSTUVWXYZ \ No newline at end of file
diff --git a/tests/tr/m.X b/tests/tr/m.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/m.X
diff --git a/tests/tr/n.I b/tests/tr/n.I
new file mode 100644
index 0000000..e6e3e48
--- /dev/null
+++ b/tests/tr/n.I
@@ -0,0 +1 @@
+abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ \ No newline at end of file
diff --git a/tests/tr/n.X b/tests/tr/n.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/n.X
diff --git a/tests/tr/null.I b/tests/tr/null.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/null.I
diff --git a/tests/tr/null.X b/tests/tr/null.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/null.X
diff --git a/tests/tr/o-rep-1.I b/tests/tr/o-rep-1.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/o-rep-1.I
diff --git a/tests/tr/o-rep-1.X b/tests/tr/o-rep-1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/o-rep-1.X
diff --git a/tests/tr/o-rep-2.I b/tests/tr/o-rep-2.I
new file mode 100644
index 0000000..c58cd57
--- /dev/null
+++ b/tests/tr/o-rep-2.I
@@ -0,0 +1 @@
+bcd \ No newline at end of file
diff --git a/tests/tr/o-rep-2.X b/tests/tr/o-rep-2.X
new file mode 100644
index 0000000..3e02548
--- /dev/null
+++ b/tests/tr/o-rep-2.X
@@ -0,0 +1 @@
+BCx \ No newline at end of file
diff --git a/tests/tr/o.I b/tests/tr/o.I
new file mode 100644
index 0000000..e6e3e48
--- /dev/null
+++ b/tests/tr/o.I
@@ -0,0 +1 @@
+abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ \ No newline at end of file
diff --git a/tests/tr/o.X b/tests/tr/o.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/o.X
diff --git a/tests/tr/p.I b/tests/tr/p.I
new file mode 100644
index 0000000..4667bd2
--- /dev/null
+++ b/tests/tr/p.I
@@ -0,0 +1 @@
+abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 \ No newline at end of file
diff --git a/tests/tr/p.X b/tests/tr/p.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/p.X
diff --git a/tests/tr/q.I b/tests/tr/q.I
new file mode 100644
index 0000000..3c876ca
--- /dev/null
+++ b/tests/tr/q.I
@@ -0,0 +1 @@
+.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. \ No newline at end of file
diff --git a/tests/tr/q.X b/tests/tr/q.X
new file mode 100644
index 0000000..a96aa0e
--- /dev/null
+++ b/tests/tr/q.X
@@ -0,0 +1 @@
+.. \ No newline at end of file
diff --git a/tests/tr/r.I b/tests/tr/r.I
new file mode 100644
index 0000000..3c876ca
--- /dev/null
+++ b/tests/tr/r.I
@@ -0,0 +1 @@
+.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. \ No newline at end of file
diff --git a/tests/tr/r.X b/tests/tr/r.X
new file mode 100644
index 0000000..945c9b4
--- /dev/null
+++ b/tests/tr/r.X
@@ -0,0 +1 @@
+. \ No newline at end of file
diff --git a/tests/tr/range-a-a.I b/tests/tr/range-a-a.I
new file mode 100644
index 0000000..f2ba8f8
--- /dev/null
+++ b/tests/tr/range-a-a.I
@@ -0,0 +1 @@
+abc \ No newline at end of file
diff --git a/tests/tr/range-a-a.X b/tests/tr/range-a-a.X
new file mode 100644
index 0000000..28ff465
--- /dev/null
+++ b/tests/tr/range-a-a.X
@@ -0,0 +1 @@
+zbc \ No newline at end of file
diff --git a/tests/tr/rep-1.I b/tests/tr/rep-1.I
new file mode 100644
index 0000000..48842f9
--- /dev/null
+++ b/tests/tr/rep-1.I
@@ -0,0 +1 @@
+:1239 \ No newline at end of file
diff --git a/tests/tr/rep-1.X b/tests/tr/rep-1.X
new file mode 100644
index 0000000..fc31dd8
--- /dev/null
+++ b/tests/tr/rep-1.X
@@ -0,0 +1 @@
+cefgm \ No newline at end of file
diff --git a/tests/tr/rep-2.I b/tests/tr/rep-2.I
new file mode 100644
index 0000000..f2ba8f8
--- /dev/null
+++ b/tests/tr/rep-2.I
@@ -0,0 +1 @@
+abc \ No newline at end of file
diff --git a/tests/tr/rep-2.X b/tests/tr/rep-2.X
new file mode 100644
index 0000000..fdbf37b
--- /dev/null
+++ b/tests/tr/rep-2.X
@@ -0,0 +1 @@
+1x2 \ No newline at end of file
diff --git a/tests/tr/rep-3.I b/tests/tr/rep-3.I
new file mode 100644
index 0000000..f2ba8f8
--- /dev/null
+++ b/tests/tr/rep-3.I
@@ -0,0 +1 @@
+abc \ No newline at end of file
diff --git a/tests/tr/rep-3.X b/tests/tr/rep-3.X
new file mode 100644
index 0000000..fdbf37b
--- /dev/null
+++ b/tests/tr/rep-3.X
@@ -0,0 +1 @@
+1x2 \ No newline at end of file
diff --git a/tests/tr/rep-cclass.I b/tests/tr/rep-cclass.I
new file mode 100644
index 0000000..0602236
--- /dev/null
+++ b/tests/tr/rep-cclass.I
@@ -0,0 +1 @@
+a=c \ No newline at end of file
diff --git a/tests/tr/rep-cclass.X b/tests/tr/rep-cclass.X
new file mode 100644
index 0000000..d66d9d7
--- /dev/null
+++ b/tests/tr/rep-cclass.X
@@ -0,0 +1 @@
+xyz \ No newline at end of file
diff --git a/tests/tr/repeat-0.I b/tests/tr/repeat-0.I
new file mode 100644
index 0000000..85df507
--- /dev/null
+++ b/tests/tr/repeat-0.I
@@ -0,0 +1 @@
+abcd \ No newline at end of file
diff --git a/tests/tr/repeat-0.X b/tests/tr/repeat-0.X
new file mode 100644
index 0000000..c87902b
--- /dev/null
+++ b/tests/tr/repeat-0.X
@@ -0,0 +1 @@
+bbbd \ No newline at end of file
diff --git a/tests/tr/repeat-bs-9.I b/tests/tr/repeat-bs-9.I
new file mode 100644
index 0000000..85df507
--- /dev/null
+++ b/tests/tr/repeat-bs-9.I
@@ -0,0 +1 @@
+abcd \ No newline at end of file
diff --git a/tests/tr/repeat-bs-9.X b/tests/tr/repeat-bs-9.X
new file mode 100644
index 0000000..0c63346
--- /dev/null
+++ b/tests/tr/repeat-bs-9.X
@@ -0,0 +1 @@
+[b*d \ No newline at end of file
diff --git a/tests/tr/repeat-compl.I b/tests/tr/repeat-compl.I
new file mode 100644
index 0000000..85df507
--- /dev/null
+++ b/tests/tr/repeat-compl.I
@@ -0,0 +1 @@
+abcd \ No newline at end of file
diff --git a/tests/tr/repeat-compl.X b/tests/tr/repeat-compl.X
new file mode 100644
index 0000000..e9dacc2
--- /dev/null
+++ b/tests/tr/repeat-compl.X
@@ -0,0 +1 @@
+abbb \ No newline at end of file
diff --git a/tests/tr/repeat-xC.I b/tests/tr/repeat-xC.I
new file mode 100644
index 0000000..85df507
--- /dev/null
+++ b/tests/tr/repeat-xC.I
@@ -0,0 +1 @@
+abcd \ No newline at end of file
diff --git a/tests/tr/repeat-xC.X b/tests/tr/repeat-xC.X
new file mode 100644
index 0000000..e9dacc2
--- /dev/null
+++ b/tests/tr/repeat-xC.X
@@ -0,0 +1 @@
+abbb \ No newline at end of file
diff --git a/tests/tr/repeat-zeros.I b/tests/tr/repeat-zeros.I
new file mode 100644
index 0000000..85df507
--- /dev/null
+++ b/tests/tr/repeat-zeros.I
@@ -0,0 +1 @@
+abcd \ No newline at end of file
diff --git a/tests/tr/repeat-zeros.X b/tests/tr/repeat-zeros.X
new file mode 100644
index 0000000..c87902b
--- /dev/null
+++ b/tests/tr/repeat-zeros.X
@@ -0,0 +1 @@
+bbbd \ No newline at end of file
diff --git a/tests/tr/ross-0a.I b/tests/tr/ross-0a.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/ross-0a.I
diff --git a/tests/tr/ross-0a.X b/tests/tr/ross-0a.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/ross-0a.X
diff --git a/tests/tr/ross-0b.I b/tests/tr/ross-0b.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/ross-0b.I
diff --git a/tests/tr/ross-0b.X b/tests/tr/ross-0b.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/ross-0b.X
diff --git a/tests/tr/ross-1a.I b/tests/tr/ross-1a.I
new file mode 100644
index 0000000..c705e00
--- /dev/null
+++ b/tests/tr/ross-1a.I
@@ -0,0 +1 @@
+AMZamz123.-+AMZ \ No newline at end of file
diff --git a/tests/tr/ross-1a.X b/tests/tr/ross-1a.X
new file mode 100644
index 0000000..68c015d
--- /dev/null
+++ b/tests/tr/ross-1a.X
@@ -0,0 +1 @@
+AMZXAMZ \ No newline at end of file
diff --git a/tests/tr/ross-1b.I b/tests/tr/ross-1b.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/ross-1b.I
diff --git a/tests/tr/ross-1b.X b/tests/tr/ross-1b.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/ross-1b.X
diff --git a/tests/tr/ross-2.I b/tests/tr/ross-2.I
new file mode 100644
index 0000000..56610ff
--- /dev/null
+++ b/tests/tr/ross-2.I
@@ -0,0 +1 @@
+amzAMZ123.-+amz \ No newline at end of file
diff --git a/tests/tr/ross-2.X b/tests/tr/ross-2.X
new file mode 100644
index 0000000..966808d
--- /dev/null
+++ b/tests/tr/ross-2.X
@@ -0,0 +1 @@
+amzamz \ No newline at end of file
diff --git a/tests/tr/ross-3.I b/tests/tr/ross-3.I
new file mode 100644
index 0000000..b0e3248
--- /dev/null
+++ b/tests/tr/ross-3.I
@@ -0,0 +1 @@
+.ZABCDEFGzabcdefg.0123456788899.GG \ No newline at end of file
diff --git a/tests/tr/ross-3.X b/tests/tr/ross-3.X
new file mode 100644
index 0000000..e61116e
--- /dev/null
+++ b/tests/tr/ross-3.X
@@ -0,0 +1 @@
+.ZGzg..G \ No newline at end of file
diff --git a/tests/tr/ross-4.I b/tests/tr/ross-4.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/ross-4.I
diff --git a/tests/tr/ross-4.X b/tests/tr/ross-4.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/ross-4.X
diff --git a/tests/tr/ross-5.I b/tests/tr/ross-5.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/ross-5.I
diff --git a/tests/tr/ross-5.X b/tests/tr/ross-5.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/ross-5.X
diff --git a/tests/tr/ross-6.I b/tests/tr/ross-6.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/ross-6.I
diff --git a/tests/tr/ross-6.X b/tests/tr/ross-6.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/tr/ross-6.X
diff --git a/tests/tr/s.I b/tests/tr/s.I
new file mode 100644
index 0000000..c8ac0a9
--- /dev/null
+++ b/tests/tr/s.I
@@ -0,0 +1 @@
+The big black fox jumped over the fence. \ No newline at end of file
diff --git a/tests/tr/s.X b/tests/tr/s.X
new file mode 100644
index 0000000..5bc7887
--- /dev/null
+++ b/tests/tr/s.X
@@ -0,0 +1,8 @@
+The
+big
+black
+fox
+jumped
+over
+the
+fence
diff --git a/tests/tr/t.I b/tests/tr/t.I
new file mode 100644
index 0000000..c8ac0a9
--- /dev/null
+++ b/tests/tr/t.I
@@ -0,0 +1 @@
+The big black fox jumped over the fence. \ No newline at end of file
diff --git a/tests/tr/t.X b/tests/tr/t.X
new file mode 100644
index 0000000..5bc7887
--- /dev/null
+++ b/tests/tr/t.X
@@ -0,0 +1,8 @@
+The
+big
+black
+fox
+jumped
+over
+the
+fence
diff --git a/tests/tr/tr-tests b/tests/tr/tr-tests
new file mode 100755
index 0000000..9003add
--- /dev/null
+++ b/tests/tr/tr-tests
@@ -0,0 +1,2367 @@
+#! /bin/sh
+# This script was generated automatically by mk-script.
+case $# in
+ 0) xx='tr';;
+ *) xx="$1";;
+esac
+test "$VERBOSE" && echo=echo || echo=:
+$echo testing program: $xx
+errors=0
+test "$srcdir" || srcdir=.
+test "$VERBOSE" && $xx --version 2> /dev/null
+
+# Make sure we get English translations.
+LANGUAGE=C
+export LANGUAGE
+LC_ALL=C
+export LC_ALL
+LANG=C
+export LANG
+
+cat $srcdir/1.I | $xx 'abcd' '[]*]' > 1.O 2> 1.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1.O $srcdir/1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1(|)"; fi;;
+ 1) $echo "Test 1(|) failed: files 1.O and $srcdir/1.X differ" 1>&2
+ (diff -c 1.O $srcdir/1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1(|) may have failed." 1>&2
+ $echo The command "cmp 1.O $srcdir/1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1.E || rm -f 1.E
+$xx 'abcd' '[]*]' < $srcdir/1.I > 1.O 2> 1.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1.O $srcdir/1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1(<)"; fi;;
+ 1) $echo "Test 1(<) failed: files 1.O and $srcdir/1.X differ" 1>&2
+ (diff -c 1.O $srcdir/1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1(<) may have failed." 1>&2
+ $echo The command "cmp 1.O $srcdir/1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1.E || rm -f 1.E
+cat $srcdir/2.I | $xx 'abc' '[%*]xyz' > 2.O 2> 2.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2.O $srcdir/2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2(|)"; fi;;
+ 1) $echo "Test 2(|) failed: files 2.O and $srcdir/2.X differ" 1>&2
+ (diff -c 2.O $srcdir/2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2(|) may have failed." 1>&2
+ $echo The command "cmp 2.O $srcdir/2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2.E || rm -f 2.E
+$xx 'abc' '[%*]xyz' < $srcdir/2.I > 2.O 2> 2.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2.O $srcdir/2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2(<)"; fi;;
+ 1) $echo "Test 2(<) failed: files 2.O and $srcdir/2.X differ" 1>&2
+ (diff -c 2.O $srcdir/2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2(<) may have failed." 1>&2
+ $echo The command "cmp 2.O $srcdir/2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2.E || rm -f 2.E
+cat $srcdir/3.I | $xx '' '[.*]' > 3.O 2> 3.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3.O $srcdir/3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3(|)"; fi;;
+ 1) $echo "Test 3(|) failed: files 3.O and $srcdir/3.X differ" 1>&2
+ (diff -c 3.O $srcdir/3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3(|) may have failed." 1>&2
+ $echo The command "cmp 3.O $srcdir/3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3.E || rm -f 3.E
+$xx '' '[.*]' < $srcdir/3.I > 3.O 2> 3.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3.O $srcdir/3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3(<)"; fi;;
+ 1) $echo "Test 3(<) failed: files 3.O and $srcdir/3.X differ" 1>&2
+ (diff -c 3.O $srcdir/3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3(<) may have failed." 1>&2
+ $echo The command "cmp 3.O $srcdir/3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3.E || rm -f 3.E
+cat $srcdir/4.I | $xx -t 'abcd' 'xy' > 4.O 2> 4.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4.O $srcdir/4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4(|)"; fi;;
+ 1) $echo "Test 4(|) failed: files 4.O and $srcdir/4.X differ" 1>&2
+ (diff -c 4.O $srcdir/4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4(|) may have failed." 1>&2
+ $echo The command "cmp 4.O $srcdir/4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4.E || rm -f 4.E
+$xx -t 'abcd' 'xy' < $srcdir/4.I > 4.O 2> 4.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4.O $srcdir/4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4(<)"; fi;;
+ 1) $echo "Test 4(<) failed: files 4.O and $srcdir/4.X differ" 1>&2
+ (diff -c 4.O $srcdir/4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4(<) may have failed." 1>&2
+ $echo The command "cmp 4.O $srcdir/4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4.E || rm -f 4.E
+cat $srcdir/5.I | $xx 'abcd' 'xy' > 5.O 2> 5.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5.O $srcdir/5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5(|)"; fi;;
+ 1) $echo "Test 5(|) failed: files 5.O and $srcdir/5.X differ" 1>&2
+ (diff -c 5.O $srcdir/5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5(|) may have failed." 1>&2
+ $echo The command "cmp 5.O $srcdir/5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5.E || rm -f 5.E
+$xx 'abcd' 'xy' < $srcdir/5.I > 5.O 2> 5.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5.O $srcdir/5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5(<)"; fi;;
+ 1) $echo "Test 5(<) failed: files 5.O and $srcdir/5.X differ" 1>&2
+ (diff -c 5.O $srcdir/5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5(<) may have failed." 1>&2
+ $echo The command "cmp 5.O $srcdir/5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5.E || rm -f 5.E
+cat $srcdir/6.I | $xx 'abcd' 'x[y*]' > 6.O 2> 6.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6.O $srcdir/6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6(|)"; fi;;
+ 1) $echo "Test 6(|) failed: files 6.O and $srcdir/6.X differ" 1>&2
+ (diff -c 6.O $srcdir/6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6(|) may have failed." 1>&2
+ $echo The command "cmp 6.O $srcdir/6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6.E || rm -f 6.E
+$xx 'abcd' 'x[y*]' < $srcdir/6.I > 6.O 2> 6.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6.O $srcdir/6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6(<)"; fi;;
+ 1) $echo "Test 6(<) failed: files 6.O and $srcdir/6.X differ" 1>&2
+ (diff -c 6.O $srcdir/6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6(<) may have failed." 1>&2
+ $echo The command "cmp 6.O $srcdir/6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6.E || rm -f 6.E
+cat $srcdir/7.I | $xx -s 'a-p' '%[.*]$' > 7.O 2> 7.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7.O $srcdir/7.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7(|)"; fi;;
+ 1) $echo "Test 7(|) failed: files 7.O and $srcdir/7.X differ" 1>&2
+ (diff -c 7.O $srcdir/7.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7(|) may have failed." 1>&2
+ $echo The command "cmp 7.O $srcdir/7.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7.E || rm -f 7.E
+$xx -s 'a-p' '%[.*]$' < $srcdir/7.I > 7.O 2> 7.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7.O $srcdir/7.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7(<)"; fi;;
+ 1) $echo "Test 7(<) failed: files 7.O and $srcdir/7.X differ" 1>&2
+ (diff -c 7.O $srcdir/7.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7(<) may have failed." 1>&2
+ $echo The command "cmp 7.O $srcdir/7.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7.E || rm -f 7.E
+cat $srcdir/8.I | $xx -s 'a-p' '[.*]$' > 8.O 2> 8.E
+code=$?
+if test $code != 0; then
+ $echo "Test 8(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 8.O $srcdir/8.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 8(|)"; fi;;
+ 1) $echo "Test 8(|) failed: files 8.O and $srcdir/8.X differ" 1>&2
+ (diff -c 8.O $srcdir/8.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 8(|) may have failed." 1>&2
+ $echo The command "cmp 8.O $srcdir/8.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 8.E || rm -f 8.E
+$xx -s 'a-p' '[.*]$' < $srcdir/8.I > 8.O 2> 8.E
+code=$?
+if test $code != 0; then
+ $echo "Test 8(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 8.O $srcdir/8.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 8(<)"; fi;;
+ 1) $echo "Test 8(<) failed: files 8.O and $srcdir/8.X differ" 1>&2
+ (diff -c 8.O $srcdir/8.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 8(<) may have failed." 1>&2
+ $echo The command "cmp 8.O $srcdir/8.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 8.E || rm -f 8.E
+cat $srcdir/9.I | $xx -s 'a-p' '%[.*]' > 9.O 2> 9.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9.O $srcdir/9.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9(|)"; fi;;
+ 1) $echo "Test 9(|) failed: files 9.O and $srcdir/9.X differ" 1>&2
+ (diff -c 9.O $srcdir/9.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9(|) may have failed." 1>&2
+ $echo The command "cmp 9.O $srcdir/9.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9.E || rm -f 9.E
+$xx -s 'a-p' '%[.*]' < $srcdir/9.I > 9.O 2> 9.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9.O $srcdir/9.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9(<)"; fi;;
+ 1) $echo "Test 9(<) failed: files 9.O and $srcdir/9.X differ" 1>&2
+ (diff -c 9.O $srcdir/9.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9(<) may have failed." 1>&2
+ $echo The command "cmp 9.O $srcdir/9.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9.E || rm -f 9.E
+cat $srcdir/a.I | $xx -s '[a-z]' > a.O 2> a.E
+code=$?
+if test $code != 0; then
+ $echo "Test a(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a.O $srcdir/a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a(|)"; fi;;
+ 1) $echo "Test a(|) failed: files a.O and $srcdir/a.X differ" 1>&2
+ (diff -c a.O $srcdir/a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a(|) may have failed." 1>&2
+ $echo The command "cmp a.O $srcdir/a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a.E || rm -f a.E
+$xx -s '[a-z]' < $srcdir/a.I > a.O 2> a.E
+code=$?
+if test $code != 0; then
+ $echo "Test a(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a.O $srcdir/a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a(<)"; fi;;
+ 1) $echo "Test a(<) failed: files a.O and $srcdir/a.X differ" 1>&2
+ (diff -c a.O $srcdir/a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a(<) may have failed." 1>&2
+ $echo The command "cmp a.O $srcdir/a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a.E || rm -f a.E
+cat $srcdir/b.I | $xx -s '[a-c]' > b.O 2> b.E
+code=$?
+if test $code != 0; then
+ $echo "Test b(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp b.O $srcdir/b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed b(|)"; fi;;
+ 1) $echo "Test b(|) failed: files b.O and $srcdir/b.X differ" 1>&2
+ (diff -c b.O $srcdir/b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test b(|) may have failed." 1>&2
+ $echo The command "cmp b.O $srcdir/b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s b.E || rm -f b.E
+$xx -s '[a-c]' < $srcdir/b.I > b.O 2> b.E
+code=$?
+if test $code != 0; then
+ $echo "Test b(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp b.O $srcdir/b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed b(<)"; fi;;
+ 1) $echo "Test b(<) failed: files b.O and $srcdir/b.X differ" 1>&2
+ (diff -c b.O $srcdir/b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test b(<) may have failed." 1>&2
+ $echo The command "cmp b.O $srcdir/b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s b.E || rm -f b.E
+cat $srcdir/c.I | $xx -s '[a-b]' > c.O 2> c.E
+code=$?
+if test $code != 0; then
+ $echo "Test c(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c.O $srcdir/c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c(|)"; fi;;
+ 1) $echo "Test c(|) failed: files c.O and $srcdir/c.X differ" 1>&2
+ (diff -c c.O $srcdir/c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c(|) may have failed." 1>&2
+ $echo The command "cmp c.O $srcdir/c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c.E || rm -f c.E
+$xx -s '[a-b]' < $srcdir/c.I > c.O 2> c.E
+code=$?
+if test $code != 0; then
+ $echo "Test c(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c.O $srcdir/c.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c(<)"; fi;;
+ 1) $echo "Test c(<) failed: files c.O and $srcdir/c.X differ" 1>&2
+ (diff -c c.O $srcdir/c.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c(<) may have failed." 1>&2
+ $echo The command "cmp c.O $srcdir/c.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c.E || rm -f c.E
+cat $srcdir/d.I | $xx -s '[b-c]' > d.O 2> d.E
+code=$?
+if test $code != 0; then
+ $echo "Test d(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp d.O $srcdir/d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed d(|)"; fi;;
+ 1) $echo "Test d(|) failed: files d.O and $srcdir/d.X differ" 1>&2
+ (diff -c d.O $srcdir/d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test d(|) may have failed." 1>&2
+ $echo The command "cmp d.O $srcdir/d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s d.E || rm -f d.E
+$xx -s '[b-c]' < $srcdir/d.I > d.O 2> d.E
+code=$?
+if test $code != 0; then
+ $echo "Test d(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp d.O $srcdir/d.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed d(<)"; fi;;
+ 1) $echo "Test d(<) failed: files d.O and $srcdir/d.X differ" 1>&2
+ (diff -c d.O $srcdir/d.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test d(<) may have failed." 1>&2
+ $echo The command "cmp d.O $srcdir/d.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s d.E || rm -f d.E
+cat $srcdir/e.I | $xx -s '[\0-\5]' > e.O 2> e.E
+code=$?
+if test $code != 0; then
+ $echo "Test e(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp e.O $srcdir/e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed e(|)"; fi;;
+ 1) $echo "Test e(|) failed: files e.O and $srcdir/e.X differ" 1>&2
+ (diff -c e.O $srcdir/e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test e(|) may have failed." 1>&2
+ $echo The command "cmp e.O $srcdir/e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s e.E || rm -f e.E
+$xx -s '[\0-\5]' < $srcdir/e.I > e.O 2> e.E
+code=$?
+if test $code != 0; then
+ $echo "Test e(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp e.O $srcdir/e.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed e(<)"; fi;;
+ 1) $echo "Test e(<) failed: files e.O and $srcdir/e.X differ" 1>&2
+ (diff -c e.O $srcdir/e.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test e(<) may have failed." 1>&2
+ $echo The command "cmp e.O $srcdir/e.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s e.E || rm -f e.E
+cat $srcdir/f.I | $xx -d '[=[=]' > f.O 2> f.E
+code=$?
+if test $code != 0; then
+ $echo "Test f(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp f.O $srcdir/f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed f(|)"; fi;;
+ 1) $echo "Test f(|) failed: files f.O and $srcdir/f.X differ" 1>&2
+ (diff -c f.O $srcdir/f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test f(|) may have failed." 1>&2
+ $echo The command "cmp f.O $srcdir/f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s f.E || rm -f f.E
+$xx -d '[=[=]' < $srcdir/f.I > f.O 2> f.E
+code=$?
+if test $code != 0; then
+ $echo "Test f(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp f.O $srcdir/f.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed f(<)"; fi;;
+ 1) $echo "Test f(<) failed: files f.O and $srcdir/f.X differ" 1>&2
+ (diff -c f.O $srcdir/f.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test f(<) may have failed." 1>&2
+ $echo The command "cmp f.O $srcdir/f.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s f.E || rm -f f.E
+cat $srcdir/g.I | $xx -d '[=]=]' > g.O 2> g.E
+code=$?
+if test $code != 0; then
+ $echo "Test g(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp g.O $srcdir/g.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed g(|)"; fi;;
+ 1) $echo "Test g(|) failed: files g.O and $srcdir/g.X differ" 1>&2
+ (diff -c g.O $srcdir/g.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test g(|) may have failed." 1>&2
+ $echo The command "cmp g.O $srcdir/g.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s g.E || rm -f g.E
+$xx -d '[=]=]' < $srcdir/g.I > g.O 2> g.E
+code=$?
+if test $code != 0; then
+ $echo "Test g(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp g.O $srcdir/g.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed g(<)"; fi;;
+ 1) $echo "Test g(<) failed: files g.O and $srcdir/g.X differ" 1>&2
+ (diff -c g.O $srcdir/g.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test g(<) may have failed." 1>&2
+ $echo The command "cmp g.O $srcdir/g.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s g.E || rm -f g.E
+cat $srcdir/h.I | $xx -d '[:xdigit:]' > h.O 2> h.E
+code=$?
+if test $code != 0; then
+ $echo "Test h(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp h.O $srcdir/h.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed h(|)"; fi;;
+ 1) $echo "Test h(|) failed: files h.O and $srcdir/h.X differ" 1>&2
+ (diff -c h.O $srcdir/h.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test h(|) may have failed." 1>&2
+ $echo The command "cmp h.O $srcdir/h.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s h.E || rm -f h.E
+$xx -d '[:xdigit:]' < $srcdir/h.I > h.O 2> h.E
+code=$?
+if test $code != 0; then
+ $echo "Test h(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp h.O $srcdir/h.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed h(<)"; fi;;
+ 1) $echo "Test h(<) failed: files h.O and $srcdir/h.X differ" 1>&2
+ (diff -c h.O $srcdir/h.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test h(<) may have failed." 1>&2
+ $echo The command "cmp h.O $srcdir/h.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s h.E || rm -f h.E
+cat $srcdir/i.I | $xx -d '[:xdigit:]' > i.O 2> i.E
+code=$?
+if test $code != 0; then
+ $echo "Test i(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp i.O $srcdir/i.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed i(|)"; fi;;
+ 1) $echo "Test i(|) failed: files i.O and $srcdir/i.X differ" 1>&2
+ (diff -c i.O $srcdir/i.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test i(|) may have failed." 1>&2
+ $echo The command "cmp i.O $srcdir/i.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s i.E || rm -f i.E
+$xx -d '[:xdigit:]' < $srcdir/i.I > i.O 2> i.E
+code=$?
+if test $code != 0; then
+ $echo "Test i(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp i.O $srcdir/i.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed i(<)"; fi;;
+ 1) $echo "Test i(<) failed: files i.O and $srcdir/i.X differ" 1>&2
+ (diff -c i.O $srcdir/i.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test i(<) may have failed." 1>&2
+ $echo The command "cmp i.O $srcdir/i.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s i.E || rm -f i.E
+cat $srcdir/j.I | $xx -d '[:digit:]' > j.O 2> j.E
+code=$?
+if test $code != 0; then
+ $echo "Test j(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp j.O $srcdir/j.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed j(|)"; fi;;
+ 1) $echo "Test j(|) failed: files j.O and $srcdir/j.X differ" 1>&2
+ (diff -c j.O $srcdir/j.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test j(|) may have failed." 1>&2
+ $echo The command "cmp j.O $srcdir/j.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s j.E || rm -f j.E
+$xx -d '[:digit:]' < $srcdir/j.I > j.O 2> j.E
+code=$?
+if test $code != 0; then
+ $echo "Test j(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp j.O $srcdir/j.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed j(<)"; fi;;
+ 1) $echo "Test j(<) failed: files j.O and $srcdir/j.X differ" 1>&2
+ (diff -c j.O $srcdir/j.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test j(<) may have failed." 1>&2
+ $echo The command "cmp j.O $srcdir/j.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s j.E || rm -f j.E
+cat $srcdir/k.I | $xx -d '[:digit:]' > k.O 2> k.E
+code=$?
+if test $code != 0; then
+ $echo "Test k(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp k.O $srcdir/k.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed k(|)"; fi;;
+ 1) $echo "Test k(|) failed: files k.O and $srcdir/k.X differ" 1>&2
+ (diff -c k.O $srcdir/k.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test k(|) may have failed." 1>&2
+ $echo The command "cmp k.O $srcdir/k.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s k.E || rm -f k.E
+$xx -d '[:digit:]' < $srcdir/k.I > k.O 2> k.E
+code=$?
+if test $code != 0; then
+ $echo "Test k(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp k.O $srcdir/k.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed k(<)"; fi;;
+ 1) $echo "Test k(<) failed: files k.O and $srcdir/k.X differ" 1>&2
+ (diff -c k.O $srcdir/k.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test k(<) may have failed." 1>&2
+ $echo The command "cmp k.O $srcdir/k.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s k.E || rm -f k.E
+cat $srcdir/l.I | $xx -d '[:lower:]' > l.O 2> l.E
+code=$?
+if test $code != 0; then
+ $echo "Test l(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp l.O $srcdir/l.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed l(|)"; fi;;
+ 1) $echo "Test l(|) failed: files l.O and $srcdir/l.X differ" 1>&2
+ (diff -c l.O $srcdir/l.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test l(|) may have failed." 1>&2
+ $echo The command "cmp l.O $srcdir/l.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s l.E || rm -f l.E
+$xx -d '[:lower:]' < $srcdir/l.I > l.O 2> l.E
+code=$?
+if test $code != 0; then
+ $echo "Test l(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp l.O $srcdir/l.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed l(<)"; fi;;
+ 1) $echo "Test l(<) failed: files l.O and $srcdir/l.X differ" 1>&2
+ (diff -c l.O $srcdir/l.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test l(<) may have failed." 1>&2
+ $echo The command "cmp l.O $srcdir/l.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s l.E || rm -f l.E
+cat $srcdir/m.I | $xx -d '[:upper:]' > m.O 2> m.E
+code=$?
+if test $code != 0; then
+ $echo "Test m(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp m.O $srcdir/m.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed m(|)"; fi;;
+ 1) $echo "Test m(|) failed: files m.O and $srcdir/m.X differ" 1>&2
+ (diff -c m.O $srcdir/m.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test m(|) may have failed." 1>&2
+ $echo The command "cmp m.O $srcdir/m.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s m.E || rm -f m.E
+$xx -d '[:upper:]' < $srcdir/m.I > m.O 2> m.E
+code=$?
+if test $code != 0; then
+ $echo "Test m(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp m.O $srcdir/m.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed m(<)"; fi;;
+ 1) $echo "Test m(<) failed: files m.O and $srcdir/m.X differ" 1>&2
+ (diff -c m.O $srcdir/m.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test m(<) may have failed." 1>&2
+ $echo The command "cmp m.O $srcdir/m.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s m.E || rm -f m.E
+cat $srcdir/n.I | $xx -d '[:lower:][:upper:]' > n.O 2> n.E
+code=$?
+if test $code != 0; then
+ $echo "Test n(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n.O $srcdir/n.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n(|)"; fi;;
+ 1) $echo "Test n(|) failed: files n.O and $srcdir/n.X differ" 1>&2
+ (diff -c n.O $srcdir/n.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n(|) may have failed." 1>&2
+ $echo The command "cmp n.O $srcdir/n.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n.E || rm -f n.E
+$xx -d '[:lower:][:upper:]' < $srcdir/n.I > n.O 2> n.E
+code=$?
+if test $code != 0; then
+ $echo "Test n(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp n.O $srcdir/n.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed n(<)"; fi;;
+ 1) $echo "Test n(<) failed: files n.O and $srcdir/n.X differ" 1>&2
+ (diff -c n.O $srcdir/n.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test n(<) may have failed." 1>&2
+ $echo The command "cmp n.O $srcdir/n.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s n.E || rm -f n.E
+cat $srcdir/o.I | $xx -d '[:alpha:]' > o.O 2> o.E
+code=$?
+if test $code != 0; then
+ $echo "Test o(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp o.O $srcdir/o.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed o(|)"; fi;;
+ 1) $echo "Test o(|) failed: files o.O and $srcdir/o.X differ" 1>&2
+ (diff -c o.O $srcdir/o.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test o(|) may have failed." 1>&2
+ $echo The command "cmp o.O $srcdir/o.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s o.E || rm -f o.E
+$xx -d '[:alpha:]' < $srcdir/o.I > o.O 2> o.E
+code=$?
+if test $code != 0; then
+ $echo "Test o(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp o.O $srcdir/o.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed o(<)"; fi;;
+ 1) $echo "Test o(<) failed: files o.O and $srcdir/o.X differ" 1>&2
+ (diff -c o.O $srcdir/o.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test o(<) may have failed." 1>&2
+ $echo The command "cmp o.O $srcdir/o.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s o.E || rm -f o.E
+cat $srcdir/p.I | $xx -d '[:alnum:]' > p.O 2> p.E
+code=$?
+if test $code != 0; then
+ $echo "Test p(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp p.O $srcdir/p.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed p(|)"; fi;;
+ 1) $echo "Test p(|) failed: files p.O and $srcdir/p.X differ" 1>&2
+ (diff -c p.O $srcdir/p.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test p(|) may have failed." 1>&2
+ $echo The command "cmp p.O $srcdir/p.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s p.E || rm -f p.E
+$xx -d '[:alnum:]' < $srcdir/p.I > p.O 2> p.E
+code=$?
+if test $code != 0; then
+ $echo "Test p(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp p.O $srcdir/p.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed p(<)"; fi;;
+ 1) $echo "Test p(<) failed: files p.O and $srcdir/p.X differ" 1>&2
+ (diff -c p.O $srcdir/p.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test p(<) may have failed." 1>&2
+ $echo The command "cmp p.O $srcdir/p.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s p.E || rm -f p.E
+cat $srcdir/q.I | $xx -d '[:alnum:]' > q.O 2> q.E
+code=$?
+if test $code != 0; then
+ $echo "Test q(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp q.O $srcdir/q.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed q(|)"; fi;;
+ 1) $echo "Test q(|) failed: files q.O and $srcdir/q.X differ" 1>&2
+ (diff -c q.O $srcdir/q.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test q(|) may have failed." 1>&2
+ $echo The command "cmp q.O $srcdir/q.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s q.E || rm -f q.E
+$xx -d '[:alnum:]' < $srcdir/q.I > q.O 2> q.E
+code=$?
+if test $code != 0; then
+ $echo "Test q(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp q.O $srcdir/q.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed q(<)"; fi;;
+ 1) $echo "Test q(<) failed: files q.O and $srcdir/q.X differ" 1>&2
+ (diff -c q.O $srcdir/q.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test q(<) may have failed." 1>&2
+ $echo The command "cmp q.O $srcdir/q.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s q.E || rm -f q.E
+cat $srcdir/r.I | $xx -ds '[:alnum:]' '.' > r.O 2> r.E
+code=$?
+if test $code != 0; then
+ $echo "Test r(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp r.O $srcdir/r.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed r(|)"; fi;;
+ 1) $echo "Test r(|) failed: files r.O and $srcdir/r.X differ" 1>&2
+ (diff -c r.O $srcdir/r.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test r(|) may have failed." 1>&2
+ $echo The command "cmp r.O $srcdir/r.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s r.E || rm -f r.E
+$xx -ds '[:alnum:]' '.' < $srcdir/r.I > r.O 2> r.E
+code=$?
+if test $code != 0; then
+ $echo "Test r(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp r.O $srcdir/r.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed r(<)"; fi;;
+ 1) $echo "Test r(<) failed: files r.O and $srcdir/r.X differ" 1>&2
+ (diff -c r.O $srcdir/r.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test r(<) may have failed." 1>&2
+ $echo The command "cmp r.O $srcdir/r.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s r.E || rm -f r.E
+cat $srcdir/s.I | $xx -cs '[:alnum:]' '\n' > s.O 2> s.E
+code=$?
+if test $code != 0; then
+ $echo "Test s(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp s.O $srcdir/s.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed s(|)"; fi;;
+ 1) $echo "Test s(|) failed: files s.O and $srcdir/s.X differ" 1>&2
+ (diff -c s.O $srcdir/s.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test s(|) may have failed." 1>&2
+ $echo The command "cmp s.O $srcdir/s.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s s.E || rm -f s.E
+$xx -cs '[:alnum:]' '\n' < $srcdir/s.I > s.O 2> s.E
+code=$?
+if test $code != 0; then
+ $echo "Test s(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp s.O $srcdir/s.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed s(<)"; fi;;
+ 1) $echo "Test s(<) failed: files s.O and $srcdir/s.X differ" 1>&2
+ (diff -c s.O $srcdir/s.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test s(<) may have failed." 1>&2
+ $echo The command "cmp s.O $srcdir/s.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s s.E || rm -f s.E
+cat $srcdir/t.I | $xx -cs '[:alnum:]' '[\n*]' > t.O 2> t.E
+code=$?
+if test $code != 0; then
+ $echo "Test t(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp t.O $srcdir/t.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed t(|)"; fi;;
+ 1) $echo "Test t(|) failed: files t.O and $srcdir/t.X differ" 1>&2
+ (diff -c t.O $srcdir/t.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test t(|) may have failed." 1>&2
+ $echo The command "cmp t.O $srcdir/t.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s t.E || rm -f t.E
+$xx -cs '[:alnum:]' '[\n*]' < $srcdir/t.I > t.O 2> t.E
+code=$?
+if test $code != 0; then
+ $echo "Test t(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp t.O $srcdir/t.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed t(<)"; fi;;
+ 1) $echo "Test t(<) failed: files t.O and $srcdir/t.X differ" 1>&2
+ (diff -c t.O $srcdir/t.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test t(<) may have failed." 1>&2
+ $echo The command "cmp t.O $srcdir/t.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s t.E || rm -f t.E
+cat $srcdir/u.I | $xx -ds 'b' 'a' > u.O 2> u.E
+code=$?
+if test $code != 0; then
+ $echo "Test u(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp u.O $srcdir/u.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed u(|)"; fi;;
+ 1) $echo "Test u(|) failed: files u.O and $srcdir/u.X differ" 1>&2
+ (diff -c u.O $srcdir/u.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test u(|) may have failed." 1>&2
+ $echo The command "cmp u.O $srcdir/u.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s u.E || rm -f u.E
+$xx -ds 'b' 'a' < $srcdir/u.I > u.O 2> u.E
+code=$?
+if test $code != 0; then
+ $echo "Test u(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp u.O $srcdir/u.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed u(<)"; fi;;
+ 1) $echo "Test u(<) failed: files u.O and $srcdir/u.X differ" 1>&2
+ (diff -c u.O $srcdir/u.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test u(<) may have failed." 1>&2
+ $echo The command "cmp u.O $srcdir/u.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s u.E || rm -f u.E
+cat $srcdir/v.I | $xx -ds '[:xdigit:]' 'Z' > v.O 2> v.E
+code=$?
+if test $code != 0; then
+ $echo "Test v(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp v.O $srcdir/v.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed v(|)"; fi;;
+ 1) $echo "Test v(|) failed: files v.O and $srcdir/v.X differ" 1>&2
+ (diff -c v.O $srcdir/v.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test v(|) may have failed." 1>&2
+ $echo The command "cmp v.O $srcdir/v.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s v.E || rm -f v.E
+$xx -ds '[:xdigit:]' 'Z' < $srcdir/v.I > v.O 2> v.E
+code=$?
+if test $code != 0; then
+ $echo "Test v(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp v.O $srcdir/v.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed v(<)"; fi;;
+ 1) $echo "Test v(<) failed: files v.O and $srcdir/v.X differ" 1>&2
+ (diff -c v.O $srcdir/v.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test v(<) may have failed." 1>&2
+ $echo The command "cmp v.O $srcdir/v.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s v.E || rm -f v.E
+cat $srcdir/w.I | $xx -ds '\350' '\345' > w.O 2> w.E
+code=$?
+if test $code != 0; then
+ $echo "Test w(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp w.O $srcdir/w.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed w(|)"; fi;;
+ 1) $echo "Test w(|) failed: files w.O and $srcdir/w.X differ" 1>&2
+ (diff -c w.O $srcdir/w.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test w(|) may have failed." 1>&2
+ $echo The command "cmp w.O $srcdir/w.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s w.E || rm -f w.E
+$xx -ds '\350' '\345' < $srcdir/w.I > w.O 2> w.E
+code=$?
+if test $code != 0; then
+ $echo "Test w(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp w.O $srcdir/w.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed w(<)"; fi;;
+ 1) $echo "Test w(<) failed: files w.O and $srcdir/w.X differ" 1>&2
+ (diff -c w.O $srcdir/w.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test w(<) may have failed." 1>&2
+ $echo The command "cmp w.O $srcdir/w.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s w.E || rm -f w.E
+cat $srcdir/x.I | $xx -s 'abcdefghijklmn' '[:*016]' > x.O 2> x.E
+code=$?
+if test $code != 0; then
+ $echo "Test x(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp x.O $srcdir/x.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed x(|)"; fi;;
+ 1) $echo "Test x(|) failed: files x.O and $srcdir/x.X differ" 1>&2
+ (diff -c x.O $srcdir/x.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test x(|) may have failed." 1>&2
+ $echo The command "cmp x.O $srcdir/x.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s x.E || rm -f x.E
+$xx -s 'abcdefghijklmn' '[:*016]' < $srcdir/x.I > x.O 2> x.E
+code=$?
+if test $code != 0; then
+ $echo "Test x(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp x.O $srcdir/x.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed x(<)"; fi;;
+ 1) $echo "Test x(<) failed: files x.O and $srcdir/x.X differ" 1>&2
+ (diff -c x.O $srcdir/x.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test x(<) may have failed." 1>&2
+ $echo The command "cmp x.O $srcdir/x.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s x.E || rm -f x.E
+cat $srcdir/y.I | $xx -d 'a-z' > y.O 2> y.E
+code=$?
+if test $code != 0; then
+ $echo "Test y(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp y.O $srcdir/y.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed y(|)"; fi;;
+ 1) $echo "Test y(|) failed: files y.O and $srcdir/y.X differ" 1>&2
+ (diff -c y.O $srcdir/y.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test y(|) may have failed." 1>&2
+ $echo The command "cmp y.O $srcdir/y.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s y.E || rm -f y.E
+$xx -d 'a-z' < $srcdir/y.I > y.O 2> y.E
+code=$?
+if test $code != 0; then
+ $echo "Test y(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp y.O $srcdir/y.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed y(<)"; fi;;
+ 1) $echo "Test y(<) failed: files y.O and $srcdir/y.X differ" 1>&2
+ (diff -c y.O $srcdir/y.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test y(<) may have failed." 1>&2
+ $echo The command "cmp y.O $srcdir/y.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s y.E || rm -f y.E
+cat $srcdir/z.I | $xx -ds 'a-z' '$.' > z.O 2> z.E
+code=$?
+if test $code != 0; then
+ $echo "Test z(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp z.O $srcdir/z.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed z(|)"; fi;;
+ 1) $echo "Test z(|) failed: files z.O and $srcdir/z.X differ" 1>&2
+ (diff -c z.O $srcdir/z.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test z(|) may have failed." 1>&2
+ $echo The command "cmp z.O $srcdir/z.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s z.E || rm -f z.E
+$xx -ds 'a-z' '$.' < $srcdir/z.I > z.O 2> z.E
+code=$?
+if test $code != 0; then
+ $echo "Test z(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp z.O $srcdir/z.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed z(<)"; fi;;
+ 1) $echo "Test z(<) failed: files z.O and $srcdir/z.X differ" 1>&2
+ (diff -c z.O $srcdir/z.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test z(<) may have failed." 1>&2
+ $echo The command "cmp z.O $srcdir/z.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s z.E || rm -f z.E
+cat $srcdir/range-a-a.I | $xx 'a-a' 'z' > range-a-a.O 2> range-a-a.E
+code=$?
+if test $code != 0; then
+ $echo "Test range-a-a(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp range-a-a.O $srcdir/range-a-a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed range-a-a(|)"; fi;;
+ 1) $echo "Test range-a-a(|) failed: files range-a-a.O and $srcdir/range-a-a.X differ" 1>&2
+ (diff -c range-a-a.O $srcdir/range-a-a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test range-a-a(|) may have failed." 1>&2
+ $echo The command "cmp range-a-a.O $srcdir/range-a-a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s range-a-a.E || rm -f range-a-a.E
+$xx 'a-a' 'z' < $srcdir/range-a-a.I > range-a-a.O 2> range-a-a.E
+code=$?
+if test $code != 0; then
+ $echo "Test range-a-a(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp range-a-a.O $srcdir/range-a-a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed range-a-a(<)"; fi;;
+ 1) $echo "Test range-a-a(<) failed: files range-a-a.O and $srcdir/range-a-a.X differ" 1>&2
+ (diff -c range-a-a.O $srcdir/range-a-a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test range-a-a(<) may have failed." 1>&2
+ $echo The command "cmp range-a-a.O $srcdir/range-a-a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s range-a-a.E || rm -f range-a-a.E
+cat $srcdir/null.I | $xx 'a' '''' > null.O 2> null.E
+code=$?
+if test $code != 1; then
+ $echo "Test null(|) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp null.O $srcdir/null.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed null(|)"; fi;;
+ 1) $echo "Test null(|) failed: files null.O and $srcdir/null.X differ" 1>&2
+ (diff -c null.O $srcdir/null.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test null(|) may have failed." 1>&2
+ $echo The command "cmp null.O $srcdir/null.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s null.E || rm -f null.E
+$xx 'a' '''' < $srcdir/null.I > null.O 2> null.E
+code=$?
+if test $code != 1; then
+ $echo "Test null(<) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp null.O $srcdir/null.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed null(<)"; fi;;
+ 1) $echo "Test null(<) failed: files null.O and $srcdir/null.X differ" 1>&2
+ (diff -c null.O $srcdir/null.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test null(<) may have failed." 1>&2
+ $echo The command "cmp null.O $srcdir/null.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s null.E || rm -f null.E
+cat $srcdir/upcase.I | $xx '[:lower:]' '[:upper:]' > upcase.O 2> upcase.E
+code=$?
+if test $code != 0; then
+ $echo "Test upcase(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp upcase.O $srcdir/upcase.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed upcase(|)"; fi;;
+ 1) $echo "Test upcase(|) failed: files upcase.O and $srcdir/upcase.X differ" 1>&2
+ (diff -c upcase.O $srcdir/upcase.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test upcase(|) may have failed." 1>&2
+ $echo The command "cmp upcase.O $srcdir/upcase.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s upcase.E || rm -f upcase.E
+$xx '[:lower:]' '[:upper:]' < $srcdir/upcase.I > upcase.O 2> upcase.E
+code=$?
+if test $code != 0; then
+ $echo "Test upcase(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp upcase.O $srcdir/upcase.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed upcase(<)"; fi;;
+ 1) $echo "Test upcase(<) failed: files upcase.O and $srcdir/upcase.X differ" 1>&2
+ (diff -c upcase.O $srcdir/upcase.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test upcase(<) may have failed." 1>&2
+ $echo The command "cmp upcase.O $srcdir/upcase.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s upcase.E || rm -f upcase.E
+cat $srcdir/dncase.I | $xx '[:upper:]' '[:lower:]' > dncase.O 2> dncase.E
+code=$?
+if test $code != 0; then
+ $echo "Test dncase(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp dncase.O $srcdir/dncase.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed dncase(|)"; fi;;
+ 1) $echo "Test dncase(|) failed: files dncase.O and $srcdir/dncase.X differ" 1>&2
+ (diff -c dncase.O $srcdir/dncase.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test dncase(|) may have failed." 1>&2
+ $echo The command "cmp dncase.O $srcdir/dncase.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s dncase.E || rm -f dncase.E
+$xx '[:upper:]' '[:lower:]' < $srcdir/dncase.I > dncase.O 2> dncase.E
+code=$?
+if test $code != 0; then
+ $echo "Test dncase(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp dncase.O $srcdir/dncase.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed dncase(<)"; fi;;
+ 1) $echo "Test dncase(<) failed: files dncase.O and $srcdir/dncase.X differ" 1>&2
+ (diff -c dncase.O $srcdir/dncase.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test dncase(<) may have failed." 1>&2
+ $echo The command "cmp dncase.O $srcdir/dncase.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s dncase.E || rm -f dncase.E
+cat $srcdir/rep-cclass.I | $xx 'a[=*2][=c=]' 'xyyz' > rep-cclass.O 2> rep-cclass.E
+code=$?
+if test $code != 0; then
+ $echo "Test rep-cclass(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp rep-cclass.O $srcdir/rep-cclass.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed rep-cclass(|)"; fi;;
+ 1) $echo "Test rep-cclass(|) failed: files rep-cclass.O and $srcdir/rep-cclass.X differ" 1>&2
+ (diff -c rep-cclass.O $srcdir/rep-cclass.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test rep-cclass(|) may have failed." 1>&2
+ $echo The command "cmp rep-cclass.O $srcdir/rep-cclass.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s rep-cclass.E || rm -f rep-cclass.E
+$xx 'a[=*2][=c=]' 'xyyz' < $srcdir/rep-cclass.I > rep-cclass.O 2> rep-cclass.E
+code=$?
+if test $code != 0; then
+ $echo "Test rep-cclass(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp rep-cclass.O $srcdir/rep-cclass.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed rep-cclass(<)"; fi;;
+ 1) $echo "Test rep-cclass(<) failed: files rep-cclass.O and $srcdir/rep-cclass.X differ" 1>&2
+ (diff -c rep-cclass.O $srcdir/rep-cclass.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test rep-cclass(<) may have failed." 1>&2
+ $echo The command "cmp rep-cclass.O $srcdir/rep-cclass.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s rep-cclass.E || rm -f rep-cclass.E
+cat $srcdir/rep-1.I | $xx '[:*3][:digit:]' 'a-m' > rep-1.O 2> rep-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test rep-1(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp rep-1.O $srcdir/rep-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed rep-1(|)"; fi;;
+ 1) $echo "Test rep-1(|) failed: files rep-1.O and $srcdir/rep-1.X differ" 1>&2
+ (diff -c rep-1.O $srcdir/rep-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test rep-1(|) may have failed." 1>&2
+ $echo The command "cmp rep-1.O $srcdir/rep-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s rep-1.E || rm -f rep-1.E
+$xx '[:*3][:digit:]' 'a-m' < $srcdir/rep-1.I > rep-1.O 2> rep-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test rep-1(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp rep-1.O $srcdir/rep-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed rep-1(<)"; fi;;
+ 1) $echo "Test rep-1(<) failed: files rep-1.O and $srcdir/rep-1.X differ" 1>&2
+ (diff -c rep-1.O $srcdir/rep-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test rep-1(<) may have failed." 1>&2
+ $echo The command "cmp rep-1.O $srcdir/rep-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s rep-1.E || rm -f rep-1.E
+cat $srcdir/rep-2.I | $xx 'a[b*512]c' '1[x*]2' > rep-2.O 2> rep-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test rep-2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp rep-2.O $srcdir/rep-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed rep-2(|)"; fi;;
+ 1) $echo "Test rep-2(|) failed: files rep-2.O and $srcdir/rep-2.X differ" 1>&2
+ (diff -c rep-2.O $srcdir/rep-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test rep-2(|) may have failed." 1>&2
+ $echo The command "cmp rep-2.O $srcdir/rep-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s rep-2.E || rm -f rep-2.E
+$xx 'a[b*512]c' '1[x*]2' < $srcdir/rep-2.I > rep-2.O 2> rep-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test rep-2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp rep-2.O $srcdir/rep-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed rep-2(<)"; fi;;
+ 1) $echo "Test rep-2(<) failed: files rep-2.O and $srcdir/rep-2.X differ" 1>&2
+ (diff -c rep-2.O $srcdir/rep-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test rep-2(<) may have failed." 1>&2
+ $echo The command "cmp rep-2.O $srcdir/rep-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s rep-2.E || rm -f rep-2.E
+cat $srcdir/rep-3.I | $xx 'a[b*513]c' '1[x*]2' > rep-3.O 2> rep-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test rep-3(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp rep-3.O $srcdir/rep-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed rep-3(|)"; fi;;
+ 1) $echo "Test rep-3(|) failed: files rep-3.O and $srcdir/rep-3.X differ" 1>&2
+ (diff -c rep-3.O $srcdir/rep-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test rep-3(|) may have failed." 1>&2
+ $echo The command "cmp rep-3.O $srcdir/rep-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s rep-3.E || rm -f rep-3.E
+$xx 'a[b*513]c' '1[x*]2' < $srcdir/rep-3.I > rep-3.O 2> rep-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test rep-3(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp rep-3.O $srcdir/rep-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed rep-3(<)"; fi;;
+ 1) $echo "Test rep-3(<) failed: files rep-3.O and $srcdir/rep-3.X differ" 1>&2
+ (diff -c rep-3.O $srcdir/rep-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test rep-3(<) may have failed." 1>&2
+ $echo The command "cmp rep-3.O $srcdir/rep-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s rep-3.E || rm -f rep-3.E
+cat $srcdir/o-rep-1.I | $xx '[b*08]' '[x*]' > o-rep-1.O 2> o-rep-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test o-rep-1(|) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp o-rep-1.O $srcdir/o-rep-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed o-rep-1(|)"; fi;;
+ 1) $echo "Test o-rep-1(|) failed: files o-rep-1.O and $srcdir/o-rep-1.X differ" 1>&2
+ (diff -c o-rep-1.O $srcdir/o-rep-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test o-rep-1(|) may have failed." 1>&2
+ $echo The command "cmp o-rep-1.O $srcdir/o-rep-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s o-rep-1.E || rm -f o-rep-1.E
+$xx '[b*08]' '[x*]' < $srcdir/o-rep-1.I > o-rep-1.O 2> o-rep-1.E
+code=$?
+if test $code != 1; then
+ $echo "Test o-rep-1(<) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp o-rep-1.O $srcdir/o-rep-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed o-rep-1(<)"; fi;;
+ 1) $echo "Test o-rep-1(<) failed: files o-rep-1.O and $srcdir/o-rep-1.X differ" 1>&2
+ (diff -c o-rep-1.O $srcdir/o-rep-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test o-rep-1(<) may have failed." 1>&2
+ $echo The command "cmp o-rep-1.O $srcdir/o-rep-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s o-rep-1.E || rm -f o-rep-1.E
+cat $srcdir/o-rep-2.I | $xx '[b*010]cd' '[a*7]BC[x*]' > o-rep-2.O 2> o-rep-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test o-rep-2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp o-rep-2.O $srcdir/o-rep-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed o-rep-2(|)"; fi;;
+ 1) $echo "Test o-rep-2(|) failed: files o-rep-2.O and $srcdir/o-rep-2.X differ" 1>&2
+ (diff -c o-rep-2.O $srcdir/o-rep-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test o-rep-2(|) may have failed." 1>&2
+ $echo The command "cmp o-rep-2.O $srcdir/o-rep-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s o-rep-2.E || rm -f o-rep-2.E
+$xx '[b*010]cd' '[a*7]BC[x*]' < $srcdir/o-rep-2.I > o-rep-2.O 2> o-rep-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test o-rep-2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp o-rep-2.O $srcdir/o-rep-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed o-rep-2(<)"; fi;;
+ 1) $echo "Test o-rep-2(<) failed: files o-rep-2.O and $srcdir/o-rep-2.X differ" 1>&2
+ (diff -c o-rep-2.O $srcdir/o-rep-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test o-rep-2(<) may have failed." 1>&2
+ $echo The command "cmp o-rep-2.O $srcdir/o-rep-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s o-rep-2.E || rm -f o-rep-2.E
+cat $srcdir/esc.I | $xx 'a\-z' 'A-Z' > esc.O 2> esc.E
+code=$?
+if test $code != 0; then
+ $echo "Test esc(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp esc.O $srcdir/esc.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed esc(|)"; fi;;
+ 1) $echo "Test esc(|) failed: files esc.O and $srcdir/esc.X differ" 1>&2
+ (diff -c esc.O $srcdir/esc.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test esc(|) may have failed." 1>&2
+ $echo The command "cmp esc.O $srcdir/esc.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s esc.E || rm -f esc.E
+$xx 'a\-z' 'A-Z' < $srcdir/esc.I > esc.O 2> esc.E
+code=$?
+if test $code != 0; then
+ $echo "Test esc(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp esc.O $srcdir/esc.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed esc(<)"; fi;;
+ 1) $echo "Test esc(<) failed: files esc.O and $srcdir/esc.X differ" 1>&2
+ (diff -c esc.O $srcdir/esc.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test esc(<) may have failed." 1>&2
+ $echo The command "cmp esc.O $srcdir/esc.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s esc.E || rm -f esc.E
+cat $srcdir/bs-055.I | $xx 'a\055b' def > bs-055.O 2> bs-055.E
+code=$?
+if test $code != 0; then
+ $echo "Test bs-055(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp bs-055.O $srcdir/bs-055.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed bs-055(|)"; fi;;
+ 1) $echo "Test bs-055(|) failed: files bs-055.O and $srcdir/bs-055.X differ" 1>&2
+ (diff -c bs-055.O $srcdir/bs-055.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test bs-055(|) may have failed." 1>&2
+ $echo The command "cmp bs-055.O $srcdir/bs-055.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s bs-055.E || rm -f bs-055.E
+$xx 'a\055b' def < $srcdir/bs-055.I > bs-055.O 2> bs-055.E
+code=$?
+if test $code != 0; then
+ $echo "Test bs-055(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp bs-055.O $srcdir/bs-055.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed bs-055(<)"; fi;;
+ 1) $echo "Test bs-055(<) failed: files bs-055.O and $srcdir/bs-055.X differ" 1>&2
+ (diff -c bs-055.O $srcdir/bs-055.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test bs-055(<) may have failed." 1>&2
+ $echo The command "cmp bs-055.O $srcdir/bs-055.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s bs-055.E || rm -f bs-055.E
+cat $srcdir/bs-at-end.I | $xx '\' x > bs-at-end.O 2> bs-at-end.E
+code=$?
+if test $code != 0; then
+ $echo "Test bs-at-end(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp bs-at-end.O $srcdir/bs-at-end.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed bs-at-end(|)"; fi;;
+ 1) $echo "Test bs-at-end(|) failed: files bs-at-end.O and $srcdir/bs-at-end.X differ" 1>&2
+ (diff -c bs-at-end.O $srcdir/bs-at-end.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test bs-at-end(|) may have failed." 1>&2
+ $echo The command "cmp bs-at-end.O $srcdir/bs-at-end.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s bs-at-end.E || rm -f bs-at-end.E
+$xx '\' x < $srcdir/bs-at-end.I > bs-at-end.O 2> bs-at-end.E
+code=$?
+if test $code != 0; then
+ $echo "Test bs-at-end(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp bs-at-end.O $srcdir/bs-at-end.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed bs-at-end(<)"; fi;;
+ 1) $echo "Test bs-at-end(<) failed: files bs-at-end.O and $srcdir/bs-at-end.X differ" 1>&2
+ (diff -c bs-at-end.O $srcdir/bs-at-end.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test bs-at-end(<) may have failed." 1>&2
+ $echo The command "cmp bs-at-end.O $srcdir/bs-at-end.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s bs-at-end.E || rm -f bs-at-end.E
+cat $srcdir/ross-0a.I | $xx -cs '[:upper:]' 'X[Y*]' > ross-0a.O 2> ross-0a.E
+code=$?
+if test $code != 1; then
+ $echo "Test ross-0a(|) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ross-0a.O $srcdir/ross-0a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ross-0a(|)"; fi;;
+ 1) $echo "Test ross-0a(|) failed: files ross-0a.O and $srcdir/ross-0a.X differ" 1>&2
+ (diff -c ross-0a.O $srcdir/ross-0a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ross-0a(|) may have failed." 1>&2
+ $echo The command "cmp ross-0a.O $srcdir/ross-0a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ross-0a.E || rm -f ross-0a.E
+$xx -cs '[:upper:]' 'X[Y*]' < $srcdir/ross-0a.I > ross-0a.O 2> ross-0a.E
+code=$?
+if test $code != 1; then
+ $echo "Test ross-0a(<) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ross-0a.O $srcdir/ross-0a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ross-0a(<)"; fi;;
+ 1) $echo "Test ross-0a(<) failed: files ross-0a.O and $srcdir/ross-0a.X differ" 1>&2
+ (diff -c ross-0a.O $srcdir/ross-0a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ross-0a(<) may have failed." 1>&2
+ $echo The command "cmp ross-0a.O $srcdir/ross-0a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ross-0a.E || rm -f ross-0a.E
+cat $srcdir/ross-0b.I | $xx -cs '[:cntrl:]' 'X[Y*]' > ross-0b.O 2> ross-0b.E
+code=$?
+if test $code != 1; then
+ $echo "Test ross-0b(|) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ross-0b.O $srcdir/ross-0b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ross-0b(|)"; fi;;
+ 1) $echo "Test ross-0b(|) failed: files ross-0b.O and $srcdir/ross-0b.X differ" 1>&2
+ (diff -c ross-0b.O $srcdir/ross-0b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ross-0b(|) may have failed." 1>&2
+ $echo The command "cmp ross-0b.O $srcdir/ross-0b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ross-0b.E || rm -f ross-0b.E
+$xx -cs '[:cntrl:]' 'X[Y*]' < $srcdir/ross-0b.I > ross-0b.O 2> ross-0b.E
+code=$?
+if test $code != 1; then
+ $echo "Test ross-0b(<) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ross-0b.O $srcdir/ross-0b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ross-0b(<)"; fi;;
+ 1) $echo "Test ross-0b(<) failed: files ross-0b.O and $srcdir/ross-0b.X differ" 1>&2
+ (diff -c ross-0b.O $srcdir/ross-0b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ross-0b(<) may have failed." 1>&2
+ $echo The command "cmp ross-0b.O $srcdir/ross-0b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ross-0b.E || rm -f ross-0b.E
+cat $srcdir/ross-1a.I | $xx -cs '[:upper:]' '[X*]' > ross-1a.O 2> ross-1a.E
+code=$?
+if test $code != 0; then
+ $echo "Test ross-1a(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ross-1a.O $srcdir/ross-1a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ross-1a(|)"; fi;;
+ 1) $echo "Test ross-1a(|) failed: files ross-1a.O and $srcdir/ross-1a.X differ" 1>&2
+ (diff -c ross-1a.O $srcdir/ross-1a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ross-1a(|) may have failed." 1>&2
+ $echo The command "cmp ross-1a.O $srcdir/ross-1a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ross-1a.E || rm -f ross-1a.E
+$xx -cs '[:upper:]' '[X*]' < $srcdir/ross-1a.I > ross-1a.O 2> ross-1a.E
+code=$?
+if test $code != 0; then
+ $echo "Test ross-1a(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ross-1a.O $srcdir/ross-1a.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ross-1a(<)"; fi;;
+ 1) $echo "Test ross-1a(<) failed: files ross-1a.O and $srcdir/ross-1a.X differ" 1>&2
+ (diff -c ross-1a.O $srcdir/ross-1a.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ross-1a(<) may have failed." 1>&2
+ $echo The command "cmp ross-1a.O $srcdir/ross-1a.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ross-1a.E || rm -f ross-1a.E
+cat $srcdir/ross-1b.I | $xx -cs '[:upper:][:digit:]' '[Z*]' > ross-1b.O 2> ross-1b.E
+code=$?
+if test $code != 0; then
+ $echo "Test ross-1b(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ross-1b.O $srcdir/ross-1b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ross-1b(|)"; fi;;
+ 1) $echo "Test ross-1b(|) failed: files ross-1b.O and $srcdir/ross-1b.X differ" 1>&2
+ (diff -c ross-1b.O $srcdir/ross-1b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ross-1b(|) may have failed." 1>&2
+ $echo The command "cmp ross-1b.O $srcdir/ross-1b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ross-1b.E || rm -f ross-1b.E
+$xx -cs '[:upper:][:digit:]' '[Z*]' < $srcdir/ross-1b.I > ross-1b.O 2> ross-1b.E
+code=$?
+if test $code != 0; then
+ $echo "Test ross-1b(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ross-1b.O $srcdir/ross-1b.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ross-1b(<)"; fi;;
+ 1) $echo "Test ross-1b(<) failed: files ross-1b.O and $srcdir/ross-1b.X differ" 1>&2
+ (diff -c ross-1b.O $srcdir/ross-1b.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ross-1b(<) may have failed." 1>&2
+ $echo The command "cmp ross-1b.O $srcdir/ross-1b.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ross-1b.E || rm -f ross-1b.E
+cat $srcdir/ross-2.I | $xx -dcs '[:lower:]' 'n-rs-z' > ross-2.O 2> ross-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test ross-2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ross-2.O $srcdir/ross-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ross-2(|)"; fi;;
+ 1) $echo "Test ross-2(|) failed: files ross-2.O and $srcdir/ross-2.X differ" 1>&2
+ (diff -c ross-2.O $srcdir/ross-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ross-2(|) may have failed." 1>&2
+ $echo The command "cmp ross-2.O $srcdir/ross-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ross-2.E || rm -f ross-2.E
+$xx -dcs '[:lower:]' 'n-rs-z' < $srcdir/ross-2.I > ross-2.O 2> ross-2.E
+code=$?
+if test $code != 0; then
+ $echo "Test ross-2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ross-2.O $srcdir/ross-2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ross-2(<)"; fi;;
+ 1) $echo "Test ross-2(<) failed: files ross-2.O and $srcdir/ross-2.X differ" 1>&2
+ (diff -c ross-2.O $srcdir/ross-2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ross-2(<) may have failed." 1>&2
+ $echo The command "cmp ross-2.O $srcdir/ross-2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ross-2.E || rm -f ross-2.E
+cat $srcdir/ross-3.I | $xx -ds '[:xdigit:]' '[:alnum:]' > ross-3.O 2> ross-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test ross-3(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ross-3.O $srcdir/ross-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ross-3(|)"; fi;;
+ 1) $echo "Test ross-3(|) failed: files ross-3.O and $srcdir/ross-3.X differ" 1>&2
+ (diff -c ross-3.O $srcdir/ross-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ross-3(|) may have failed." 1>&2
+ $echo The command "cmp ross-3.O $srcdir/ross-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ross-3.E || rm -f ross-3.E
+$xx -ds '[:xdigit:]' '[:alnum:]' < $srcdir/ross-3.I > ross-3.O 2> ross-3.E
+code=$?
+if test $code != 0; then
+ $echo "Test ross-3(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ross-3.O $srcdir/ross-3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ross-3(<)"; fi;;
+ 1) $echo "Test ross-3(<) failed: files ross-3.O and $srcdir/ross-3.X differ" 1>&2
+ (diff -c ross-3.O $srcdir/ross-3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ross-3(<) may have failed." 1>&2
+ $echo The command "cmp ross-3.O $srcdir/ross-3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ross-3.E || rm -f ross-3.E
+cat $srcdir/ross-4.I | $xx -dcs '[:alnum:]' '[:digit:]' > ross-4.O 2> ross-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test ross-4(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ross-4.O $srcdir/ross-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ross-4(|)"; fi;;
+ 1) $echo "Test ross-4(|) failed: files ross-4.O and $srcdir/ross-4.X differ" 1>&2
+ (diff -c ross-4.O $srcdir/ross-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ross-4(|) may have failed." 1>&2
+ $echo The command "cmp ross-4.O $srcdir/ross-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ross-4.E || rm -f ross-4.E
+$xx -dcs '[:alnum:]' '[:digit:]' < $srcdir/ross-4.I > ross-4.O 2> ross-4.E
+code=$?
+if test $code != 0; then
+ $echo "Test ross-4(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ross-4.O $srcdir/ross-4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ross-4(<)"; fi;;
+ 1) $echo "Test ross-4(<) failed: files ross-4.O and $srcdir/ross-4.X differ" 1>&2
+ (diff -c ross-4.O $srcdir/ross-4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ross-4(<) may have failed." 1>&2
+ $echo The command "cmp ross-4.O $srcdir/ross-4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ross-4.E || rm -f ross-4.E
+cat $srcdir/ross-5.I | $xx -dc '[:lower:]' > ross-5.O 2> ross-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test ross-5(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ross-5.O $srcdir/ross-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ross-5(|)"; fi;;
+ 1) $echo "Test ross-5(|) failed: files ross-5.O and $srcdir/ross-5.X differ" 1>&2
+ (diff -c ross-5.O $srcdir/ross-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ross-5(|) may have failed." 1>&2
+ $echo The command "cmp ross-5.O $srcdir/ross-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ross-5.E || rm -f ross-5.E
+$xx -dc '[:lower:]' < $srcdir/ross-5.I > ross-5.O 2> ross-5.E
+code=$?
+if test $code != 0; then
+ $echo "Test ross-5(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ross-5.O $srcdir/ross-5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ross-5(<)"; fi;;
+ 1) $echo "Test ross-5(<) failed: files ross-5.O and $srcdir/ross-5.X differ" 1>&2
+ (diff -c ross-5.O $srcdir/ross-5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ross-5(<) may have failed." 1>&2
+ $echo The command "cmp ross-5.O $srcdir/ross-5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ross-5.E || rm -f ross-5.E
+cat $srcdir/ross-6.I | $xx -dc '[:upper:]' > ross-6.O 2> ross-6.E
+code=$?
+if test $code != 0; then
+ $echo "Test ross-6(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ross-6.O $srcdir/ross-6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ross-6(|)"; fi;;
+ 1) $echo "Test ross-6(|) failed: files ross-6.O and $srcdir/ross-6.X differ" 1>&2
+ (diff -c ross-6.O $srcdir/ross-6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ross-6(|) may have failed." 1>&2
+ $echo The command "cmp ross-6.O $srcdir/ross-6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ross-6.E || rm -f ross-6.E
+$xx -dc '[:upper:]' < $srcdir/ross-6.I > ross-6.O 2> ross-6.E
+code=$?
+if test $code != 0; then
+ $echo "Test ross-6(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp ross-6.O $srcdir/ross-6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed ross-6(<)"; fi;;
+ 1) $echo "Test ross-6(<) failed: files ross-6.O and $srcdir/ross-6.X differ" 1>&2
+ (diff -c ross-6.O $srcdir/ross-6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test ross-6(<) may have failed." 1>&2
+ $echo The command "cmp ross-6.O $srcdir/ross-6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s ross-6.E || rm -f ross-6.E
+cat $srcdir/empty-eq.I | $xx '[==]' x > empty-eq.O 2> empty-eq.E
+code=$?
+if test $code != 1; then
+ $echo "Test empty-eq(|) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp empty-eq.O $srcdir/empty-eq.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed empty-eq(|)"; fi;;
+ 1) $echo "Test empty-eq(|) failed: files empty-eq.O and $srcdir/empty-eq.X differ" 1>&2
+ (diff -c empty-eq.O $srcdir/empty-eq.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test empty-eq(|) may have failed." 1>&2
+ $echo The command "cmp empty-eq.O $srcdir/empty-eq.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s empty-eq.E || rm -f empty-eq.E
+$xx '[==]' x < $srcdir/empty-eq.I > empty-eq.O 2> empty-eq.E
+code=$?
+if test $code != 1; then
+ $echo "Test empty-eq(<) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp empty-eq.O $srcdir/empty-eq.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed empty-eq(<)"; fi;;
+ 1) $echo "Test empty-eq(<) failed: files empty-eq.O and $srcdir/empty-eq.X differ" 1>&2
+ (diff -c empty-eq.O $srcdir/empty-eq.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test empty-eq(<) may have failed." 1>&2
+ $echo The command "cmp empty-eq.O $srcdir/empty-eq.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s empty-eq.E || rm -f empty-eq.E
+cat $srcdir/empty-cc.I | $xx '[::]' x > empty-cc.O 2> empty-cc.E
+code=$?
+if test $code != 1; then
+ $echo "Test empty-cc(|) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp empty-cc.O $srcdir/empty-cc.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed empty-cc(|)"; fi;;
+ 1) $echo "Test empty-cc(|) failed: files empty-cc.O and $srcdir/empty-cc.X differ" 1>&2
+ (diff -c empty-cc.O $srcdir/empty-cc.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test empty-cc(|) may have failed." 1>&2
+ $echo The command "cmp empty-cc.O $srcdir/empty-cc.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s empty-cc.E || rm -f empty-cc.E
+$xx '[::]' x < $srcdir/empty-cc.I > empty-cc.O 2> empty-cc.E
+code=$?
+if test $code != 1; then
+ $echo "Test empty-cc(<) failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp empty-cc.O $srcdir/empty-cc.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed empty-cc(<)"; fi;;
+ 1) $echo "Test empty-cc(<) failed: files empty-cc.O and $srcdir/empty-cc.X differ" 1>&2
+ (diff -c empty-cc.O $srcdir/empty-cc.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test empty-cc(<) may have failed." 1>&2
+ $echo The command "cmp empty-cc.O $srcdir/empty-cc.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s empty-cc.E || rm -f empty-cc.E
+cat $srcdir/repeat-bs-9.I | $xx abc '[b*\9]' > repeat-bs-9.O 2> repeat-bs-9.E
+code=$?
+if test $code != 0; then
+ $echo "Test repeat-bs-9(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp repeat-bs-9.O $srcdir/repeat-bs-9.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed repeat-bs-9(|)"; fi;;
+ 1) $echo "Test repeat-bs-9(|) failed: files repeat-bs-9.O and $srcdir/repeat-bs-9.X differ" 1>&2
+ (diff -c repeat-bs-9.O $srcdir/repeat-bs-9.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test repeat-bs-9(|) may have failed." 1>&2
+ $echo The command "cmp repeat-bs-9.O $srcdir/repeat-bs-9.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s repeat-bs-9.E || rm -f repeat-bs-9.E
+$xx abc '[b*\9]' < $srcdir/repeat-bs-9.I > repeat-bs-9.O 2> repeat-bs-9.E
+code=$?
+if test $code != 0; then
+ $echo "Test repeat-bs-9(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp repeat-bs-9.O $srcdir/repeat-bs-9.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed repeat-bs-9(<)"; fi;;
+ 1) $echo "Test repeat-bs-9(<) failed: files repeat-bs-9.O and $srcdir/repeat-bs-9.X differ" 1>&2
+ (diff -c repeat-bs-9.O $srcdir/repeat-bs-9.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test repeat-bs-9(<) may have failed." 1>&2
+ $echo The command "cmp repeat-bs-9.O $srcdir/repeat-bs-9.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s repeat-bs-9.E || rm -f repeat-bs-9.E
+cat $srcdir/repeat-0.I | $xx abc '[b*0]' > repeat-0.O 2> repeat-0.E
+code=$?
+if test $code != 0; then
+ $echo "Test repeat-0(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp repeat-0.O $srcdir/repeat-0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed repeat-0(|)"; fi;;
+ 1) $echo "Test repeat-0(|) failed: files repeat-0.O and $srcdir/repeat-0.X differ" 1>&2
+ (diff -c repeat-0.O $srcdir/repeat-0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test repeat-0(|) may have failed." 1>&2
+ $echo The command "cmp repeat-0.O $srcdir/repeat-0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s repeat-0.E || rm -f repeat-0.E
+$xx abc '[b*0]' < $srcdir/repeat-0.I > repeat-0.O 2> repeat-0.E
+code=$?
+if test $code != 0; then
+ $echo "Test repeat-0(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp repeat-0.O $srcdir/repeat-0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed repeat-0(<)"; fi;;
+ 1) $echo "Test repeat-0(<) failed: files repeat-0.O and $srcdir/repeat-0.X differ" 1>&2
+ (diff -c repeat-0.O $srcdir/repeat-0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test repeat-0(<) may have failed." 1>&2
+ $echo The command "cmp repeat-0.O $srcdir/repeat-0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s repeat-0.E || rm -f repeat-0.E
+cat $srcdir/repeat-zeros.I | $xx abc '[b*00000000000000000000]' > repeat-zeros.O 2> repeat-zeros.E
+code=$?
+if test $code != 0; then
+ $echo "Test repeat-zeros(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp repeat-zeros.O $srcdir/repeat-zeros.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed repeat-zeros(|)"; fi;;
+ 1) $echo "Test repeat-zeros(|) failed: files repeat-zeros.O and $srcdir/repeat-zeros.X differ" 1>&2
+ (diff -c repeat-zeros.O $srcdir/repeat-zeros.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test repeat-zeros(|) may have failed." 1>&2
+ $echo The command "cmp repeat-zeros.O $srcdir/repeat-zeros.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s repeat-zeros.E || rm -f repeat-zeros.E
+$xx abc '[b*00000000000000000000]' < $srcdir/repeat-zeros.I > repeat-zeros.O 2> repeat-zeros.E
+code=$?
+if test $code != 0; then
+ $echo "Test repeat-zeros(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp repeat-zeros.O $srcdir/repeat-zeros.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed repeat-zeros(<)"; fi;;
+ 1) $echo "Test repeat-zeros(<) failed: files repeat-zeros.O and $srcdir/repeat-zeros.X differ" 1>&2
+ (diff -c repeat-zeros.O $srcdir/repeat-zeros.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test repeat-zeros(<) may have failed." 1>&2
+ $echo The command "cmp repeat-zeros.O $srcdir/repeat-zeros.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s repeat-zeros.E || rm -f repeat-zeros.E
+cat $srcdir/repeat-compl.I | $xx -c '[a*65536]\n' '[b*]' > repeat-compl.O 2> repeat-compl.E
+code=$?
+if test $code != 0; then
+ $echo "Test repeat-compl(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp repeat-compl.O $srcdir/repeat-compl.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed repeat-compl(|)"; fi;;
+ 1) $echo "Test repeat-compl(|) failed: files repeat-compl.O and $srcdir/repeat-compl.X differ" 1>&2
+ (diff -c repeat-compl.O $srcdir/repeat-compl.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test repeat-compl(|) may have failed." 1>&2
+ $echo The command "cmp repeat-compl.O $srcdir/repeat-compl.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s repeat-compl.E || rm -f repeat-compl.E
+$xx -c '[a*65536]\n' '[b*]' < $srcdir/repeat-compl.I > repeat-compl.O 2> repeat-compl.E
+code=$?
+if test $code != 0; then
+ $echo "Test repeat-compl(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp repeat-compl.O $srcdir/repeat-compl.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed repeat-compl(<)"; fi;;
+ 1) $echo "Test repeat-compl(<) failed: files repeat-compl.O and $srcdir/repeat-compl.X differ" 1>&2
+ (diff -c repeat-compl.O $srcdir/repeat-compl.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test repeat-compl(<) may have failed." 1>&2
+ $echo The command "cmp repeat-compl.O $srcdir/repeat-compl.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s repeat-compl.E || rm -f repeat-compl.E
+cat $srcdir/repeat-xC.I | $xx -C '[a*65536]\n' '[b*]' > repeat-xC.O 2> repeat-xC.E
+code=$?
+if test $code != 0; then
+ $echo "Test repeat-xC(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp repeat-xC.O $srcdir/repeat-xC.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed repeat-xC(|)"; fi;;
+ 1) $echo "Test repeat-xC(|) failed: files repeat-xC.O and $srcdir/repeat-xC.X differ" 1>&2
+ (diff -c repeat-xC.O $srcdir/repeat-xC.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test repeat-xC(|) may have failed." 1>&2
+ $echo The command "cmp repeat-xC.O $srcdir/repeat-xC.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s repeat-xC.E || rm -f repeat-xC.E
+$xx -C '[a*65536]\n' '[b*]' < $srcdir/repeat-xC.I > repeat-xC.O 2> repeat-xC.E
+code=$?
+if test $code != 0; then
+ $echo "Test repeat-xC(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp repeat-xC.O $srcdir/repeat-xC.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed repeat-xC(<)"; fi;;
+ 1) $echo "Test repeat-xC(<) failed: files repeat-xC.O and $srcdir/repeat-xC.X differ" 1>&2
+ (diff -c repeat-xC.O $srcdir/repeat-xC.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test repeat-xC(<) may have failed." 1>&2
+ $echo The command "cmp repeat-xC.O $srcdir/repeat-xC.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s repeat-xC.E || rm -f repeat-xC.E
+cat $srcdir/fowler-1.I | $xx ah -H > fowler-1.O 2> fowler-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test fowler-1(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp fowler-1.O $srcdir/fowler-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed fowler-1(|)"; fi;;
+ 1) $echo "Test fowler-1(|) failed: files fowler-1.O and $srcdir/fowler-1.X differ" 1>&2
+ (diff -c fowler-1.O $srcdir/fowler-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test fowler-1(|) may have failed." 1>&2
+ $echo The command "cmp fowler-1.O $srcdir/fowler-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s fowler-1.E || rm -f fowler-1.E
+$xx ah -H < $srcdir/fowler-1.I > fowler-1.O 2> fowler-1.E
+code=$?
+if test $code != 0; then
+ $echo "Test fowler-1(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp fowler-1.O $srcdir/fowler-1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed fowler-1(<)"; fi;;
+ 1) $echo "Test fowler-1(<) failed: files fowler-1.O and $srcdir/fowler-1.X differ" 1>&2
+ (diff -c fowler-1.O $srcdir/fowler-1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test fowler-1(<) may have failed." 1>&2
+ $echo The command "cmp fowler-1.O $srcdir/fowler-1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s fowler-1.E || rm -f fowler-1.E
+if test $errors = 0; then
+ $echo Passed all 130 tests. 1>&2
+else
+ $echo Failed $errors tests. 1>&2
+fi
+test $errors = 0 || errors=1
+exit $errors
diff --git a/tests/tr/u.I b/tests/tr/u.I
new file mode 100644
index 0000000..cb16a86
--- /dev/null
+++ b/tests/tr/u.I
@@ -0,0 +1 @@
+aabbaa \ No newline at end of file
diff --git a/tests/tr/u.X b/tests/tr/u.X
new file mode 100644
index 0000000..2e65efe
--- /dev/null
+++ b/tests/tr/u.X
@@ -0,0 +1 @@
+a \ No newline at end of file
diff --git a/tests/tr/upcase.I b/tests/tr/upcase.I
new file mode 100644
index 0000000..ef2f0e1
--- /dev/null
+++ b/tests/tr/upcase.I
@@ -0,0 +1 @@
+abcxyzABCXYZ \ No newline at end of file
diff --git a/tests/tr/upcase.X b/tests/tr/upcase.X
new file mode 100644
index 0000000..ecc9b53
--- /dev/null
+++ b/tests/tr/upcase.X
@@ -0,0 +1 @@
+ABCXYZABCXYZ \ No newline at end of file
diff --git a/tests/tr/v.I b/tests/tr/v.I
new file mode 100644
index 0000000..445a510
--- /dev/null
+++ b/tests/tr/v.I
@@ -0,0 +1 @@
+ZZ0123456789acbdefABCDEFZZ \ No newline at end of file
diff --git a/tests/tr/v.X b/tests/tr/v.X
new file mode 100644
index 0000000..0f13712
--- /dev/null
+++ b/tests/tr/v.X
@@ -0,0 +1 @@
+Z \ No newline at end of file
diff --git a/tests/tr/w.I b/tests/tr/w.I
new file mode 100644
index 0000000..2b9d533
--- /dev/null
+++ b/tests/tr/w.I
@@ -0,0 +1 @@
+ÀÁÿååèå \ No newline at end of file
diff --git a/tests/tr/w.X b/tests/tr/w.X
new file mode 100644
index 0000000..bacb551
--- /dev/null
+++ b/tests/tr/w.X
@@ -0,0 +1 @@
+ÀÁÿå \ No newline at end of file
diff --git a/tests/tr/x.I b/tests/tr/x.I
new file mode 100644
index 0000000..70e6a83
--- /dev/null
+++ b/tests/tr/x.I
@@ -0,0 +1 @@
+abcdefghijklmnop \ No newline at end of file
diff --git a/tests/tr/x.X b/tests/tr/x.X
new file mode 100644
index 0000000..abbc3c4
--- /dev/null
+++ b/tests/tr/x.X
@@ -0,0 +1 @@
+:op \ No newline at end of file
diff --git a/tests/tr/y.I b/tests/tr/y.I
new file mode 100644
index 0000000..75585da
--- /dev/null
+++ b/tests/tr/y.I
@@ -0,0 +1 @@
+abc $code \ No newline at end of file
diff --git a/tests/tr/y.X b/tests/tr/y.X
new file mode 100644
index 0000000..6ac101f
--- /dev/null
+++ b/tests/tr/y.X
@@ -0,0 +1 @@
+ $ \ No newline at end of file
diff --git a/tests/tr/z.I b/tests/tr/z.I
new file mode 100644
index 0000000..33aca71
--- /dev/null
+++ b/tests/tr/z.I
@@ -0,0 +1 @@
+a.b.c $$$$code\ \ No newline at end of file
diff --git a/tests/tr/z.X b/tests/tr/z.X
new file mode 100644
index 0000000..4ec46f4
--- /dev/null
+++ b/tests/tr/z.X
@@ -0,0 +1 @@
+. $\ \ No newline at end of file
diff --git a/tests/tsort/Makefile.am b/tests/tsort/Makefile.am
new file mode 100644
index 0000000..389cf88
--- /dev/null
+++ b/tests/tsort/Makefile.am
@@ -0,0 +1,13 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+
+EXTRA_DIST = $(TESTS)
+
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=tsort
+
+TESTS = basic-1
diff --git a/tests/tsort/Makefile.in b/tests/tsort/Makefile.in
new file mode 100644
index 0000000..3f3be5b
--- /dev/null
+++ b/tests/tsort/Makefile.in
@@ -0,0 +1,720 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/tsort
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=tsort
+
+TESTS = basic-1
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/tsort/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/tsort/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/tsort/basic-1 b/tests/tsort/basic-1
new file mode 100755
index 0000000..4fe24f3
--- /dev/null
+++ b/tests/tsort/basic-1
@@ -0,0 +1,83 @@
+#!/bin/sh
+# -*- perl -*-
+# Test "tsort".
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+#/
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my @Tests =
+ (
+ ['cycle-1', {IN => {f => "t b\nt s\ns t\n"}}, {OUT => "s\nt\nb\n"},
+ {EXIT => 1},
+ {ERR => "tsort: f: input contains a loop:\ntsort: s\ntsort: t\n"} ],
+ ['cycle-2', {IN => {f => "t x\nt s\ns t\n"}}, {OUT => "s\nt\nx\n"},
+ {EXIT => 1},
+ {ERR => "tsort: f: input contains a loop:\ntsort: s\ntsort: t\n"} ],
+
+ ['posix-1', {IN => "a b c c d e\ng g\nf g e f\nh h\n"},
+ {OUT => "a\nc\nd\nh\nb\ne\nf\ng\n"}],
+ ['posix-2', {IN => "b a\nd c\nz h x h r h\n"},
+ {OUT => "b\nd\nr\nx\nz\na\nc\nh\n"}],
+
+ ['linear-1', {IN => "a b b c c d d e e f f g\n"},
+ {OUT => "a\nb\nc\nd\ne\nf\ng\n"}],
+
+ ['tree-1', {IN => "a b b c c d d e e f f g\nc x x y y z\n"},
+ {OUT => "a\nb\nc\nx\nd\ny\ne\nz\nf\ng\n"}],
+ ['tree-2', {IN => "a b b c c d d e e f f g\nc x x y y z\nf r r s s t\n"},
+ {OUT => "a\nb\nc\nx\nd\ny\ne\nz\nf\nr\ng\ns\nt\n"}],
+
+ # Before coreutils-5.0.1, given an odd number of input tokens,
+ # tsort would accept that and treat the input as if an additional
+ # copy of the final token were appended.
+ ['odd', {IN => "a\n"},
+ {EXIT => 1},
+ {ERR => "tsort: odd.1: input contains an odd number of tokens\n"}],
+
+ ['only-one', {IN => {f => ""}}, {IN => {g => ""}},
+ {EXIT => 1},
+ {ERR => "tsort: extra operand `g'\n"
+ . "Try `tsort --help' for more information.\n"}],
+ );
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/umask-check b/tests/umask-check
new file mode 100644
index 0000000..2e0aba0
--- /dev/null
+++ b/tests/umask-check
@@ -0,0 +1,37 @@
+# -*- sh -*-
+# Disable the current test if umask doesn't work as usual.
+
+# Copyright (C) 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+# This test should be run in the temporary directory that ends
+# up being removed via the trap commands.
+
+umask 022
+touch file1 file2
+chmod 644 file2
+perms=`ls -l file1 file2 | sed 's/ .*//' | uniq`
+rm -f file1 file2
+
+case $perms in
+*'
+'*)
+ cat <<EOF >&2
+$0: Since it looks like you're running this test in a directory with
+something other than the usual umask semantics, we're skipping this test.
+EOF
+ (exit 77); exit 77
+esac
diff --git a/tests/unexpand/Makefile.am b/tests/unexpand/Makefile.am
new file mode 100644
index 0000000..6c692bd
--- /dev/null
+++ b/tests/unexpand/Makefile.am
@@ -0,0 +1,13 @@
+## Process this file with automake to produce Makefile.in -*-Makefile-*-.
+
+EXTRA_DIST = $(TESTS)
+
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=unexpand
+
+TESTS = basic-1
diff --git a/tests/unexpand/Makefile.in b/tests/unexpand/Makefile.in
new file mode 100644
index 0000000..48393aa
--- /dev/null
+++ b/tests/unexpand/Makefile.in
@@ -0,0 +1,720 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/unexpand
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = $(TESTS)
+TESTS_ENVIRONMENT = \
+ top_srcdir=$(top_srcdir) \
+ srcdir=$(srcdir) \
+ PERL="$(PERL)" \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
+ PROG=unexpand
+
+TESTS = basic-1
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/unexpand/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/unexpand/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/unexpand/basic-1 b/tests/unexpand/basic-1
new file mode 100755
index 0000000..3824d7c
--- /dev/null
+++ b/tests/unexpand/basic-1
@@ -0,0 +1,102 @@
+#!/bin/sh
+# Test "unexpand".
+
+# Copyright (C) 2000, 2003, 2004, 2005, 2006 Free Software Foundation,
+# Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+: ${PERL=perl}
+: ${srcdir=.}
+
+$PERL -e 1 > /dev/null 2>&1 || {
+ echo 1>&2 "$0: configure didn't find a usable version of Perl," \
+ "so can't run this test"
+ exit 77
+}
+
+exec $PERL -w -I$srcdir/.. -MCoreutils -- - <<\EOF
+require 5.003;
+use strict;
+
+(my $program_name = $0) =~ s|.*/||;
+
+# Turn off localisation of executable's ouput.
+@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+
+my $prog = $ENV{PROG} || die "$0: \$PROG not specified in environment\n";
+
+my @Tests =
+ (
+ ['a1', {IN=> ' 'x 1 ."y\n"}, {OUT=> ' 'x 1 ."y\n"}],
+ ['a2', {IN=> ' 'x 2 ."y\n"}, {OUT=> ' 'x 2 ."y\n"}],
+ ['a3', {IN=> ' 'x 3 ."y\n"}, {OUT=> ' 'x 3 ."y\n"}],
+ ['a4', {IN=> ' 'x 4 ."y\n"}, {OUT=> ' 'x 4 ."y\n"}],
+ ['a5', {IN=> ' 'x 5 ."y\n"}, {OUT=> ' 'x 5 ."y\n"}],
+ ['a6', {IN=> ' 'x 6 ."y\n"}, {OUT=> ' 'x 6 ."y\n"}],
+ ['a7', {IN=> ' 'x 7 ."y\n"}, {OUT=> ' 'x 7 ."y\n"}],
+ ['a8', {IN=> ' 'x 8 ."y\n"}, {OUT=> "\ty\n"}],
+
+ ['aa-1', '-a', {IN=> 'w'.' 'x 1 ."y\n"}, {OUT=> 'w'.' 'x 1 ."y\n"}],
+ ['aa-2', '-a', {IN=> 'w'.' 'x 2 ."y\n"}, {OUT=> 'w'.' 'x 2 ."y\n"}],
+ ['aa-3', '-a', {IN=> 'w'.' 'x 3 ."y\n"}, {OUT=> 'w'.' 'x 3 ."y\n"}],
+ ['aa-4', '-a', {IN=> 'w'.' 'x 4 ."y\n"}, {OUT=> 'w'.' 'x 4 ."y\n"}],
+ ['aa-5', '-a', {IN=> 'w'.' 'x 5 ."y\n"}, {OUT=> 'w'.' 'x 5 ."y\n"}],
+ ['aa-6', '-a', {IN=> 'w'.' 'x 6 ."y\n"}, {OUT=> 'w'.' 'x 6 ."y\n"}],
+ ['aa-7', '-a', {IN=> 'w'.' 'x 7 ."y\n"}, {OUT=> "w\ty\n"}],
+ ['aa-8', '-a', {IN=> 'w'.' 'x 8 ."y\n"}, {OUT=> "w\t y\n"}],
+
+ ['b-1', '-t', '2,4', {IN=> " ."}, {OUT=>"\t\t ."}],
+ # These would infloop prior to textutils-2.0d.
+
+ ['infloop-1', '-t', '1,2', {IN=> " \t\t .\n"}, {OUT=>"\t\t\t .\n"}],
+ ['infloop-2', '-t', '4,5', {IN=> ' 'x4 . "\t\t \n"}, {OUT=>"\t\t\t \n"}],
+ ['infloop-3', '-t', '2,3', {IN=> "x \t\t \n"}, {OUT=>"x \t\t \n"}],
+ ['infloop-4', '-t', '1,2', {IN=> " \t\t \n"}, {OUT=>"\t\t\t \n"}],
+ ['c-1', '-t', '1,2', {IN=> "x\t\t .\n"}, {OUT=>"x\t\t .\n"}],
+
+ # -t implies -a
+ # Feature addition (--first-only) prompted by a report from Jie Xu.
+ ['tabs-1', qw(-t 3), {IN=> " a b\n"}, {OUT=>"\ta\tb\n"}],
+ ['tabs-2', qw(-t 3 --first-only), {IN=> " a b\n"}, {OUT=>"\ta b\n"}],
+
+ # blanks
+ ['blanks-1', qw(-t 1), {IN=> " b c d\n"}, {OUT=> "\tb\t\tc\t\t\td\n"}],
+ ['blanks-2', qw(-t 1), {IN=> "a \n"}, {OUT=> "a \n"}],
+ ['blanks-3', qw(-t 1), {IN=> "a \n"}, {OUT=> "a\t\t\n"}],
+ ['blanks-4', qw(-t 1), {IN=> "a \n"}, {OUT=> "a\t\t\t\n"}],
+ ['blanks-5', qw(-t 1), {IN=> "a "}, {OUT=> "a "}],
+ ['blanks-6', qw(-t 1), {IN=> "a "}, {OUT=> "a\t\t"}],
+ ['blanks-7', qw(-t 1), {IN=> "a "}, {OUT=> "a\t\t\t"}],
+ ['blanks-8', qw(-t 1), {IN=> " a a a\n"}, {OUT=> "\ta a\t\ta\n"}],
+ ['blanks-9', qw(-t 2), {IN=> " a a a\n"}, {OUT=> "\t a\ta a\n"}],
+ ['blanks-10', '-t', '3,4', {IN=> "0 2 4 6\t8\n"}, {OUT=> "0 2 4 6\t8\n"}],
+ ['blanks-11', '-t', '3,4', {IN=> " 4\n"}, {OUT=> "\t\t4\n"}],
+ ['blanks-12', '-t', '3,4', {IN=> "01 4\n"}, {OUT=> "01\t\t4\n"}],
+ ['blanks-13', '-t', '3,4', {IN=> "0 4\n"}, {OUT=> "0\t\t4\n"}],
+
+ # It is debatable whether this test should require an environment
+ # setting of e.g., _POSIX2_VERSION=1.
+ ['obs-ovflo', '-18446744073709551617', {IN=>''}, {OUT=>''},
+ {EXIT => 1}, {ERR => "$prog: tab stop value is too large\n"}],
+ );
+
+my $save_temps = $ENV{DEBUG};
+my $verbose = $ENV{VERBOSE};
+
+my $fail = run_tests ($program_name, $prog, \@Tests, $save_temps, $verbose);
+exit $fail;
+EOF
diff --git a/tests/uniq/1.I b/tests/uniq/1.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/uniq/1.I
diff --git a/tests/uniq/1.X b/tests/uniq/1.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/uniq/1.X
diff --git a/tests/uniq/10.I b/tests/uniq/10.I
new file mode 100644
index 0000000..422c2b7
--- /dev/null
+++ b/tests/uniq/10.I
@@ -0,0 +1,2 @@
+a
+b
diff --git a/tests/uniq/10.X b/tests/uniq/10.X
new file mode 100644
index 0000000..422c2b7
--- /dev/null
+++ b/tests/uniq/10.X
@@ -0,0 +1,2 @@
+a
+b
diff --git a/tests/uniq/101.I b/tests/uniq/101.I
new file mode 100644
index 0000000..422c2b7
--- /dev/null
+++ b/tests/uniq/101.I
@@ -0,0 +1,2 @@
+a
+b
diff --git a/tests/uniq/101.X b/tests/uniq/101.X
new file mode 100644
index 0000000..6cc98cc
--- /dev/null
+++ b/tests/uniq/101.X
@@ -0,0 +1,2 @@
+ 1 a
+ 1 b
diff --git a/tests/uniq/102.I b/tests/uniq/102.I
new file mode 100644
index 0000000..7e8a165
--- /dev/null
+++ b/tests/uniq/102.I
@@ -0,0 +1,2 @@
+a
+a
diff --git a/tests/uniq/102.X b/tests/uniq/102.X
new file mode 100644
index 0000000..8a17c1c
--- /dev/null
+++ b/tests/uniq/102.X
@@ -0,0 +1 @@
+ 2 a
diff --git a/tests/uniq/11.I b/tests/uniq/11.I
new file mode 100644
index 0000000..8f468ef
--- /dev/null
+++ b/tests/uniq/11.I
@@ -0,0 +1,3 @@
+a
+b
+a
diff --git a/tests/uniq/11.X b/tests/uniq/11.X
new file mode 100644
index 0000000..8f468ef
--- /dev/null
+++ b/tests/uniq/11.X
@@ -0,0 +1,3 @@
+a
+b
+a
diff --git a/tests/uniq/110.I b/tests/uniq/110.I
new file mode 100644
index 0000000..7e8a165
--- /dev/null
+++ b/tests/uniq/110.I
@@ -0,0 +1,2 @@
+a
+a
diff --git a/tests/uniq/110.X b/tests/uniq/110.X
new file mode 100644
index 0000000..7e8a165
--- /dev/null
+++ b/tests/uniq/110.X
@@ -0,0 +1,2 @@
+a
+a
diff --git a/tests/uniq/111.I b/tests/uniq/111.I
new file mode 100644
index 0000000..eb8559a
--- /dev/null
+++ b/tests/uniq/111.I
@@ -0,0 +1,2 @@
+a a
+a b
diff --git a/tests/uniq/111.X b/tests/uniq/111.X
new file mode 100644
index 0000000..eb8559a
--- /dev/null
+++ b/tests/uniq/111.X
@@ -0,0 +1,2 @@
+a a
+a b
diff --git a/tests/uniq/112.I b/tests/uniq/112.I
new file mode 100644
index 0000000..eb8559a
--- /dev/null
+++ b/tests/uniq/112.I
@@ -0,0 +1,2 @@
+a a
+a b
diff --git a/tests/uniq/112.X b/tests/uniq/112.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/uniq/112.X
diff --git a/tests/uniq/113.I b/tests/uniq/113.I
new file mode 100644
index 0000000..7e8a165
--- /dev/null
+++ b/tests/uniq/113.I
@@ -0,0 +1,2 @@
+a
+a
diff --git a/tests/uniq/113.X b/tests/uniq/113.X
new file mode 100644
index 0000000..7e8a165
--- /dev/null
+++ b/tests/uniq/113.X
@@ -0,0 +1,2 @@
+a
+a
diff --git a/tests/uniq/114.I b/tests/uniq/114.I
new file mode 100644
index 0000000..79b996f
--- /dev/null
+++ b/tests/uniq/114.I
@@ -0,0 +1,5 @@
+a
+a
+b
+c
+c
diff --git a/tests/uniq/114.X b/tests/uniq/114.X
new file mode 100644
index 0000000..32b772f
--- /dev/null
+++ b/tests/uniq/114.X
@@ -0,0 +1,5 @@
+a
+a
+
+c
+c
diff --git a/tests/uniq/115.I b/tests/uniq/115.I
new file mode 100644
index 0000000..8d88178
--- /dev/null
+++ b/tests/uniq/115.I
@@ -0,0 +1,5 @@
+a
+a
+b
+b
+c
diff --git a/tests/uniq/115.X b/tests/uniq/115.X
new file mode 100644
index 0000000..fb01bd6
--- /dev/null
+++ b/tests/uniq/115.X
@@ -0,0 +1,5 @@
+a
+a
+
+b
+b
diff --git a/tests/uniq/116.I b/tests/uniq/116.I
new file mode 100644
index 0000000..7e8a165
--- /dev/null
+++ b/tests/uniq/116.I
@@ -0,0 +1,2 @@
+a
+a
diff --git a/tests/uniq/116.X b/tests/uniq/116.X
new file mode 100644
index 0000000..b46a8a0
--- /dev/null
+++ b/tests/uniq/116.X
@@ -0,0 +1,3 @@
+
+a
+a
diff --git a/tests/uniq/117.I b/tests/uniq/117.I
new file mode 100644
index 0000000..79b996f
--- /dev/null
+++ b/tests/uniq/117.I
@@ -0,0 +1,5 @@
+a
+a
+b
+c
+c
diff --git a/tests/uniq/117.X b/tests/uniq/117.X
new file mode 100644
index 0000000..b1c75bf
--- /dev/null
+++ b/tests/uniq/117.X
@@ -0,0 +1,6 @@
+
+a
+a
+
+c
+c
diff --git a/tests/uniq/118.I b/tests/uniq/118.I
new file mode 100644
index 0000000..422c2b7
--- /dev/null
+++ b/tests/uniq/118.I
@@ -0,0 +1,2 @@
+a
+b
diff --git a/tests/uniq/118.X b/tests/uniq/118.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/uniq/118.X
diff --git a/tests/uniq/119.I b/tests/uniq/119.I
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/tests/uniq/119.I
@@ -0,0 +1 @@
+a
diff --git a/tests/uniq/119.X b/tests/uniq/119.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/uniq/119.X
diff --git a/tests/uniq/12.I b/tests/uniq/12.I
new file mode 100644
index 0000000..7e8a165
--- /dev/null
+++ b/tests/uniq/12.I
@@ -0,0 +1,2 @@
+a
+a
diff --git a/tests/uniq/12.X b/tests/uniq/12.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/uniq/12.X
diff --git a/tests/uniq/120.I b/tests/uniq/120.I
new file mode 100644
index 0000000..c8fd6dc
--- /dev/null
+++ b/tests/uniq/120.I
@@ -0,0 +1,3 @@
+a
+a
+ \ No newline at end of file
diff --git a/tests/uniq/120.X b/tests/uniq/120.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/uniq/120.X
diff --git a/tests/uniq/121.I b/tests/uniq/121.I
new file mode 100644
index 0000000..c8fd6dc
--- /dev/null
+++ b/tests/uniq/121.I
@@ -0,0 +1,3 @@
+a
+a
+ \ No newline at end of file
diff --git a/tests/uniq/121.X b/tests/uniq/121.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/uniq/121.X
diff --git a/tests/uniq/13.I b/tests/uniq/13.I
new file mode 100644
index 0000000..7e8a165
--- /dev/null
+++ b/tests/uniq/13.I
@@ -0,0 +1,2 @@
+a
+a
diff --git a/tests/uniq/13.X b/tests/uniq/13.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/uniq/13.X
diff --git a/tests/uniq/2.I b/tests/uniq/2.I
new file mode 100644
index 0000000..7e8a165
--- /dev/null
+++ b/tests/uniq/2.I
@@ -0,0 +1,2 @@
+a
+a
diff --git a/tests/uniq/2.X b/tests/uniq/2.X
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/tests/uniq/2.X
@@ -0,0 +1 @@
+a
diff --git a/tests/uniq/20.I b/tests/uniq/20.I
new file mode 100644
index 0000000..7e8a165
--- /dev/null
+++ b/tests/uniq/20.I
@@ -0,0 +1,2 @@
+a
+a
diff --git a/tests/uniq/20.X b/tests/uniq/20.X
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/tests/uniq/20.X
@@ -0,0 +1 @@
+a
diff --git a/tests/uniq/21.I b/tests/uniq/21.I
new file mode 100644
index 0000000..422c2b7
--- /dev/null
+++ b/tests/uniq/21.I
@@ -0,0 +1,2 @@
+a
+b
diff --git a/tests/uniq/21.X b/tests/uniq/21.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/uniq/21.X
diff --git a/tests/uniq/22.I b/tests/uniq/22.I
new file mode 100644
index 0000000..8f468ef
--- /dev/null
+++ b/tests/uniq/22.I
@@ -0,0 +1,3 @@
+a
+b
+a
diff --git a/tests/uniq/22.X b/tests/uniq/22.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/uniq/22.X
diff --git a/tests/uniq/23.I b/tests/uniq/23.I
new file mode 100644
index 0000000..4ac2bee
--- /dev/null
+++ b/tests/uniq/23.I
@@ -0,0 +1,3 @@
+a
+a
+b
diff --git a/tests/uniq/23.X b/tests/uniq/23.X
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/tests/uniq/23.X
@@ -0,0 +1 @@
+a
diff --git a/tests/uniq/3.I b/tests/uniq/3.I
new file mode 100644
index 0000000..a0f9c0a
--- /dev/null
+++ b/tests/uniq/3.I
@@ -0,0 +1,2 @@
+a
+a \ No newline at end of file
diff --git a/tests/uniq/3.X b/tests/uniq/3.X
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/tests/uniq/3.X
@@ -0,0 +1 @@
+a
diff --git a/tests/uniq/31.I b/tests/uniq/31.I
new file mode 100644
index 0000000..573a9ac
--- /dev/null
+++ b/tests/uniq/31.I
@@ -0,0 +1,2 @@
+a a
+b a
diff --git a/tests/uniq/31.X b/tests/uniq/31.X
new file mode 100644
index 0000000..a4c6917
--- /dev/null
+++ b/tests/uniq/31.X
@@ -0,0 +1 @@
+a a
diff --git a/tests/uniq/32.I b/tests/uniq/32.I
new file mode 100644
index 0000000..a46753a
--- /dev/null
+++ b/tests/uniq/32.I
@@ -0,0 +1,2 @@
+a a
+b b
diff --git a/tests/uniq/32.X b/tests/uniq/32.X
new file mode 100644
index 0000000..a46753a
--- /dev/null
+++ b/tests/uniq/32.X
@@ -0,0 +1,2 @@
+a a
+b b
diff --git a/tests/uniq/33.I b/tests/uniq/33.I
new file mode 100644
index 0000000..8cfc442
--- /dev/null
+++ b/tests/uniq/33.I
@@ -0,0 +1,2 @@
+a a a
+b a c
diff --git a/tests/uniq/33.X b/tests/uniq/33.X
new file mode 100644
index 0000000..8cfc442
--- /dev/null
+++ b/tests/uniq/33.X
@@ -0,0 +1,2 @@
+a a a
+b a c
diff --git a/tests/uniq/34.I b/tests/uniq/34.I
new file mode 100644
index 0000000..7c0b1be
--- /dev/null
+++ b/tests/uniq/34.I
@@ -0,0 +1,2 @@
+b a
+a a
diff --git a/tests/uniq/34.X b/tests/uniq/34.X
new file mode 100644
index 0000000..a6b6601
--- /dev/null
+++ b/tests/uniq/34.X
@@ -0,0 +1 @@
+b a
diff --git a/tests/uniq/35.I b/tests/uniq/35.I
new file mode 100644
index 0000000..eee5a58
--- /dev/null
+++ b/tests/uniq/35.I
@@ -0,0 +1,2 @@
+a a c
+b a c
diff --git a/tests/uniq/35.X b/tests/uniq/35.X
new file mode 100644
index 0000000..7114345
--- /dev/null
+++ b/tests/uniq/35.X
@@ -0,0 +1 @@
+a a c
diff --git a/tests/uniq/4.I b/tests/uniq/4.I
new file mode 100644
index 0000000..0a207c0
--- /dev/null
+++ b/tests/uniq/4.I
@@ -0,0 +1,2 @@
+a
+b \ No newline at end of file
diff --git a/tests/uniq/4.X b/tests/uniq/4.X
new file mode 100644
index 0000000..422c2b7
--- /dev/null
+++ b/tests/uniq/4.X
@@ -0,0 +1,2 @@
+a
+b
diff --git a/tests/uniq/42.I b/tests/uniq/42.I
new file mode 100644
index 0000000..eaf82f7
--- /dev/null
+++ b/tests/uniq/42.I
@@ -0,0 +1,2 @@
+aaa
+aaa
diff --git a/tests/uniq/42.X b/tests/uniq/42.X
new file mode 100644
index 0000000..72943a1
--- /dev/null
+++ b/tests/uniq/42.X
@@ -0,0 +1 @@
+aaa
diff --git a/tests/uniq/43.I b/tests/uniq/43.I
new file mode 100644
index 0000000..cf26fdc
--- /dev/null
+++ b/tests/uniq/43.I
@@ -0,0 +1,2 @@
+baa
+aaa
diff --git a/tests/uniq/43.X b/tests/uniq/43.X
new file mode 100644
index 0000000..397acea
--- /dev/null
+++ b/tests/uniq/43.X
@@ -0,0 +1 @@
+baa
diff --git a/tests/uniq/5.I b/tests/uniq/5.I
new file mode 100644
index 0000000..59f03ae
--- /dev/null
+++ b/tests/uniq/5.I
@@ -0,0 +1,3 @@
+a
+a
+b \ No newline at end of file
diff --git a/tests/uniq/5.X b/tests/uniq/5.X
new file mode 100644
index 0000000..422c2b7
--- /dev/null
+++ b/tests/uniq/5.X
@@ -0,0 +1,2 @@
+a
+b
diff --git a/tests/uniq/50.I b/tests/uniq/50.I
new file mode 100644
index 0000000..e55fe35
--- /dev/null
+++ b/tests/uniq/50.I
@@ -0,0 +1,2 @@
+a aaa
+b ab
diff --git a/tests/uniq/50.X b/tests/uniq/50.X
new file mode 100644
index 0000000..e55fe35
--- /dev/null
+++ b/tests/uniq/50.X
@@ -0,0 +1,2 @@
+a aaa
+b ab
diff --git a/tests/uniq/51.I b/tests/uniq/51.I
new file mode 100644
index 0000000..a224488
--- /dev/null
+++ b/tests/uniq/51.I
@@ -0,0 +1,2 @@
+a aaa
+b aaa
diff --git a/tests/uniq/51.X b/tests/uniq/51.X
new file mode 100644
index 0000000..cc26cf5
--- /dev/null
+++ b/tests/uniq/51.X
@@ -0,0 +1 @@
+a aaa
diff --git a/tests/uniq/52.I b/tests/uniq/52.I
new file mode 100644
index 0000000..e55fe35
--- /dev/null
+++ b/tests/uniq/52.I
@@ -0,0 +1,2 @@
+a aaa
+b ab
diff --git a/tests/uniq/52.X b/tests/uniq/52.X
new file mode 100644
index 0000000..e55fe35
--- /dev/null
+++ b/tests/uniq/52.X
@@ -0,0 +1,2 @@
+a aaa
+b ab
diff --git a/tests/uniq/53.I b/tests/uniq/53.I
new file mode 100644
index 0000000..a224488
--- /dev/null
+++ b/tests/uniq/53.I
@@ -0,0 +1,2 @@
+a aaa
+b aaa
diff --git a/tests/uniq/53.X b/tests/uniq/53.X
new file mode 100644
index 0000000..cc26cf5
--- /dev/null
+++ b/tests/uniq/53.X
@@ -0,0 +1 @@
+a aaa
diff --git a/tests/uniq/54.I b/tests/uniq/54.I
new file mode 100644
index 0000000..470caaa
--- /dev/null
+++ b/tests/uniq/54.I
@@ -0,0 +1,2 @@
+abc
+abcd
diff --git a/tests/uniq/54.X b/tests/uniq/54.X
new file mode 100644
index 0000000..8baef1b
--- /dev/null
+++ b/tests/uniq/54.X
@@ -0,0 +1 @@
+abc
diff --git a/tests/uniq/55.I b/tests/uniq/55.I
new file mode 100644
index 0000000..470caaa
--- /dev/null
+++ b/tests/uniq/55.I
@@ -0,0 +1,2 @@
+abc
+abcd
diff --git a/tests/uniq/55.X b/tests/uniq/55.X
new file mode 100644
index 0000000..470caaa
--- /dev/null
+++ b/tests/uniq/55.X
@@ -0,0 +1,2 @@
+abc
+abcd
diff --git a/tests/uniq/56.I b/tests/uniq/56.I
new file mode 100644
index 0000000..8baef1b
--- /dev/null
+++ b/tests/uniq/56.I
@@ -0,0 +1 @@
+abc
diff --git a/tests/uniq/56.X b/tests/uniq/56.X
new file mode 100644
index 0000000..8baef1b
--- /dev/null
+++ b/tests/uniq/56.X
@@ -0,0 +1 @@
+abc
diff --git a/tests/uniq/57.I b/tests/uniq/57.I
new file mode 100644
index 0000000..470caaa
--- /dev/null
+++ b/tests/uniq/57.I
@@ -0,0 +1,2 @@
+abc
+abcd
diff --git a/tests/uniq/57.X b/tests/uniq/57.X
new file mode 100644
index 0000000..8baef1b
--- /dev/null
+++ b/tests/uniq/57.X
@@ -0,0 +1 @@
+abc
diff --git a/tests/uniq/6.I b/tests/uniq/6.I
new file mode 100644
index 0000000..be1d2b6
--- /dev/null
+++ b/tests/uniq/6.I
@@ -0,0 +1,3 @@
+b
+a
+a
diff --git a/tests/uniq/6.X b/tests/uniq/6.X
new file mode 100644
index 0000000..0e1677a
--- /dev/null
+++ b/tests/uniq/6.X
@@ -0,0 +1,2 @@
+b
+a
diff --git a/tests/uniq/60.I b/tests/uniq/60.I
new file mode 100644
index 0000000..573a9ac
--- /dev/null
+++ b/tests/uniq/60.I
@@ -0,0 +1,2 @@
+a a
+b a
diff --git a/tests/uniq/60.X b/tests/uniq/60.X
new file mode 100644
index 0000000..573a9ac
--- /dev/null
+++ b/tests/uniq/60.X
@@ -0,0 +1,2 @@
+a a
+b a
diff --git a/tests/uniq/61.I b/tests/uniq/61.I
new file mode 100644
index 0000000..573a9ac
--- /dev/null
+++ b/tests/uniq/61.I
@@ -0,0 +1,2 @@
+a a
+b a
diff --git a/tests/uniq/61.X b/tests/uniq/61.X
new file mode 100644
index 0000000..573a9ac
--- /dev/null
+++ b/tests/uniq/61.X
@@ -0,0 +1,2 @@
+a a
+b a
diff --git a/tests/uniq/62.I b/tests/uniq/62.I
new file mode 100644
index 0000000..8cfc442
--- /dev/null
+++ b/tests/uniq/62.I
@@ -0,0 +1,2 @@
+a a a
+b a c
diff --git a/tests/uniq/62.X b/tests/uniq/62.X
new file mode 100644
index 0000000..b22eb84
--- /dev/null
+++ b/tests/uniq/62.X
@@ -0,0 +1 @@
+a a a
diff --git a/tests/uniq/63.I b/tests/uniq/63.I
new file mode 100644
index 0000000..8cfc442
--- /dev/null
+++ b/tests/uniq/63.I
@@ -0,0 +1,2 @@
+a a a
+b a c
diff --git a/tests/uniq/63.X b/tests/uniq/63.X
new file mode 100644
index 0000000..b22eb84
--- /dev/null
+++ b/tests/uniq/63.X
@@ -0,0 +1 @@
+a a a
diff --git a/tests/uniq/64.I b/tests/uniq/64.I
new file mode 100644
index 0000000..8cfc442
--- /dev/null
+++ b/tests/uniq/64.I
@@ -0,0 +1,2 @@
+a a a
+b a c
diff --git a/tests/uniq/64.X b/tests/uniq/64.X
new file mode 100644
index 0000000..8cfc442
--- /dev/null
+++ b/tests/uniq/64.X
@@ -0,0 +1,2 @@
+a a a
+b a c
diff --git a/tests/uniq/65.I b/tests/uniq/65.I
new file mode 100644
index 0000000..8cfc442
--- /dev/null
+++ b/tests/uniq/65.I
@@ -0,0 +1,2 @@
+a a a
+b a c
diff --git a/tests/uniq/65.X b/tests/uniq/65.X
new file mode 100644
index 0000000..b22eb84
--- /dev/null
+++ b/tests/uniq/65.X
@@ -0,0 +1 @@
+a a a
diff --git a/tests/uniq/7.I b/tests/uniq/7.I
new file mode 100644
index 0000000..de98044
--- /dev/null
+++ b/tests/uniq/7.I
@@ -0,0 +1,3 @@
+a
+b
+c
diff --git a/tests/uniq/7.X b/tests/uniq/7.X
new file mode 100644
index 0000000..de98044
--- /dev/null
+++ b/tests/uniq/7.X
@@ -0,0 +1,3 @@
+a
+b
+c
diff --git a/tests/uniq/8.I b/tests/uniq/8.I
new file mode 100644
index 0000000..2513045
--- /dev/null
+++ b/tests/uniq/8.I
@@ -0,0 +1,2 @@
+ö
+v
diff --git a/tests/uniq/8.X b/tests/uniq/8.X
new file mode 100644
index 0000000..2513045
--- /dev/null
+++ b/tests/uniq/8.X
@@ -0,0 +1,2 @@
+ö
+v
diff --git a/tests/uniq/9.I b/tests/uniq/9.I
new file mode 100644
index 0000000..7e8a165
--- /dev/null
+++ b/tests/uniq/9.I
@@ -0,0 +1,2 @@
+a
+a
diff --git a/tests/uniq/9.X b/tests/uniq/9.X
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/uniq/9.X
diff --git a/tests/uniq/90.I b/tests/uniq/90.I
new file mode 100644
index 0000000..c21a2fb
--- /dev/null
+++ b/tests/uniq/90.I
Binary files differ
diff --git a/tests/uniq/90.X b/tests/uniq/90.X
new file mode 100644
index 0000000..c21a2fb
--- /dev/null
+++ b/tests/uniq/90.X
Binary files differ
diff --git a/tests/uniq/91.I b/tests/uniq/91.I
new file mode 100644
index 0000000..ec34811
--- /dev/null
+++ b/tests/uniq/91.I
@@ -0,0 +1,2 @@
+a a
+a a
diff --git a/tests/uniq/91.X b/tests/uniq/91.X
new file mode 100644
index 0000000..ec34811
--- /dev/null
+++ b/tests/uniq/91.X
@@ -0,0 +1,2 @@
+a a
+a a
diff --git a/tests/uniq/92.I b/tests/uniq/92.I
new file mode 100644
index 0000000..ec34811
--- /dev/null
+++ b/tests/uniq/92.I
@@ -0,0 +1,2 @@
+a a
+a a
diff --git a/tests/uniq/92.X b/tests/uniq/92.X
new file mode 100644
index 0000000..ec34811
--- /dev/null
+++ b/tests/uniq/92.X
@@ -0,0 +1,2 @@
+a a
+a a
diff --git a/tests/uniq/93.I b/tests/uniq/93.I
new file mode 100644
index 0000000..5bae3a5
--- /dev/null
+++ b/tests/uniq/93.I
@@ -0,0 +1,2 @@
+a a a
+a a a
diff --git a/tests/uniq/93.X b/tests/uniq/93.X
new file mode 100644
index 0000000..6dc89af
--- /dev/null
+++ b/tests/uniq/93.X
@@ -0,0 +1 @@
+a a a
diff --git a/tests/uniq/94.I b/tests/uniq/94.I
new file mode 100644
index 0000000..dda140e
--- /dev/null
+++ b/tests/uniq/94.I
@@ -0,0 +1,2 @@
+a a
+a a
diff --git a/tests/uniq/94.X b/tests/uniq/94.X
new file mode 100644
index 0000000..525689a
--- /dev/null
+++ b/tests/uniq/94.X
@@ -0,0 +1 @@
+a a
diff --git a/tests/uniq/Makefile.am b/tests/uniq/Makefile.am
new file mode 100644
index 0000000..077a1a4
--- /dev/null
+++ b/tests/uniq/Makefile.am
@@ -0,0 +1,76 @@
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+##test-files-begin
+x = uniq
+explicit =
+maint_gen = 1.I 1.X 2.I 2.X 3.I 3.X 4.I 4.X 5.I 5.X 6.I 6.X 7.I 7.X 8.I 8.X \
+9.I 9.X 10.I 10.X 11.I 11.X 12.I 12.X 13.I 13.X 20.I 20.X 21.I 21.X 22.I 22.X \
+23.I 23.X obs30.I obs30.X 31.I 31.X 32.I 32.X 33.I 33.X 34.I 34.X 35.I 35.X \
+obs-plus40.I obs-plus40.X obs-plus41.I obs-plus41.X 42.I 42.X 43.I 43.X \
+obs-plus44.I obs-plus44.X obs-plus45.I obs-plus45.X 50.I 50.X 51.I 51.X 52.I \
+52.X 53.I 53.X 54.I 54.X 55.I 55.X 56.I 56.X 57.I 57.X 60.I 60.X 61.I 61.X \
+62.I 62.X 63.I 63.X 64.I 64.X 65.I 65.X 90.I 90.X 91.I 91.X 92.I 92.X 93.I \
+93.X 94.I 94.X 101.I 101.X 102.I 102.X 110.I 110.X 111.I 111.X 112.I 112.X \
+113.I 113.X 114.I 114.X 115.I 115.X 116.I 116.X 117.I 117.X 118.I 118.X 119.I \
+119.X 120.I 120.X 121.I 121.X
+run_gen = 1.O 1.E 2.O 2.E 3.O 3.E 4.O 4.E 5.O 5.E 6.O 6.E 7.O 7.E 8.O 8.E 9.O \
+9.E 10.O 10.E 11.O 11.E 12.O 12.E 13.O 13.E 20.O 20.E 21.O 21.E 22.O 22.E \
+23.O 23.E obs30.O obs30.E 31.O 31.E 32.O 32.E 33.O 33.E 34.O 34.E 35.O 35.E \
+obs-plus40.O obs-plus40.E obs-plus41.O obs-plus41.E 42.O 42.E 43.O 43.E \
+obs-plus44.O obs-plus44.E obs-plus45.O obs-plus45.E 50.O 50.E 51.O 51.E 52.O \
+52.E 53.O 53.E 54.O 54.E 55.O 55.E 56.O 56.E 57.O 57.E 60.O 60.E 61.O 61.E \
+62.O 62.E 63.O 63.E 64.O 64.E 65.O 65.E 90.O 90.E 91.O 91.E 92.O 92.E 93.O \
+93.E 94.O 94.E 101.O 101.E 102.O 102.E 110.O 110.E 111.O 111.E 112.O 112.E \
+113.O 113.E 114.O 114.E 115.O 115.E 116.O 116.E 117.O 117.E 118.O 118.E 119.O \
+119.E 120.O 120.E 121.O 121.E
+##test-files-end
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+
+TESTS = $x-tests
+
+mk_script = $(srcdir)/../mk-script
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
diff --git a/tests/uniq/Makefile.in b/tests/uniq/Makefile.in
new file mode 100644
index 0000000..bd99059
--- /dev/null
+++ b/tests/uniq/Makefile.in
@@ -0,0 +1,786 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/uniq
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SCRIPTS = $(noinst_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+x = uniq
+explicit =
+maint_gen = 1.I 1.X 2.I 2.X 3.I 3.X 4.I 4.X 5.I 5.X 6.I 6.X 7.I 7.X 8.I 8.X \
+9.I 9.X 10.I 10.X 11.I 11.X 12.I 12.X 13.I 13.X 20.I 20.X 21.I 21.X 22.I 22.X \
+23.I 23.X obs30.I obs30.X 31.I 31.X 32.I 32.X 33.I 33.X 34.I 34.X 35.I 35.X \
+obs-plus40.I obs-plus40.X obs-plus41.I obs-plus41.X 42.I 42.X 43.I 43.X \
+obs-plus44.I obs-plus44.X obs-plus45.I obs-plus45.X 50.I 50.X 51.I 51.X 52.I \
+52.X 53.I 53.X 54.I 54.X 55.I 55.X 56.I 56.X 57.I 57.X 60.I 60.X 61.I 61.X \
+62.I 62.X 63.I 63.X 64.I 64.X 65.I 65.X 90.I 90.X 91.I 91.X 92.I 92.X 93.I \
+93.X 94.I 94.X 101.I 101.X 102.I 102.X 110.I 110.X 111.I 111.X 112.I 112.X \
+113.I 113.X 114.I 114.X 115.I 115.X 116.I 116.X 117.I 117.X 118.I 118.X 119.I \
+119.X 120.I 120.X 121.I 121.X
+
+run_gen = 1.O 1.E 2.O 2.E 3.O 3.E 4.O 4.E 5.O 5.E 6.O 6.E 7.O 7.E 8.O 8.E 9.O \
+9.E 10.O 10.E 11.O 11.E 12.O 12.E 13.O 13.E 20.O 20.E 21.O 21.E 22.O 22.E \
+23.O 23.E obs30.O obs30.E 31.O 31.E 32.O 32.E 33.O 33.E 34.O 34.E 35.O 35.E \
+obs-plus40.O obs-plus40.E obs-plus41.O obs-plus41.E 42.O 42.E 43.O 43.E \
+obs-plus44.O obs-plus44.E obs-plus45.O obs-plus45.E 50.O 50.E 51.O 51.E 52.O \
+52.E 53.O 53.E 54.O 54.E 55.O 55.E 56.O 56.E 57.O 57.E 60.O 60.E 61.O 61.E \
+62.O 62.E 63.O 63.E 64.O 64.E 65.O 65.E 90.O 90.E 91.O 91.E 92.O 92.E 93.O \
+93.E 94.O 94.E 101.O 101.E 102.O 102.E 110.O 110.E 111.O 111.E 112.O 112.E \
+113.O 113.E 114.O 114.E 115.O 115.E 116.O 116.E 117.O 117.E 118.O 118.E 119.O \
+119.E 120.O 120.E 121.O 121.E
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+TESTS = $x-tests
+mk_script = $(srcdir)/../mk-script
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/uniq/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/uniq/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(SCRIPTS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/uniq/Test.pm b/tests/uniq/Test.pm
new file mode 100644
index 0000000..1eda7e2
--- /dev/null
+++ b/tests/uniq/Test.pm
@@ -0,0 +1,130 @@
+# Test "uniq".
+
+# Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006 Free
+# Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+package Test;
+require 5.002;
+use strict;
+
+$Test::input_via_stdin = 1;
+
+my @tv = (
+# test flags input expected output expected return code
+#
+['1', '', '', '', 0],
+['2', '', "a\na\n", "a\n", 0],
+['3', '', "a\na", "a\n", 0],
+['4', '', "a\nb", "a\nb\n", 0],
+['5', '', "a\na\nb", "a\nb\n", 0],
+['6', '', "b\na\na\n", "b\na\n", 0],
+['7', '', "a\nb\nc\n", "a\nb\nc\n", 0],
+# Make sure that eight bit characters work
+['8', '', "ö\nv\n", "ö\nv\n", 0],
+# Test output of -u option; only unique lines
+['9', '-u', "a\na\n", "", 0],
+['10', '-u', "a\nb\n", "a\nb\n", 0],
+['11', '-u', "a\nb\na\n", "a\nb\na\n", 0],
+['12', '-u', "a\na\n", "", 0],
+['13', '-u', "a\na\n", "", 0],
+#['5', '-u', "a\na\n", "", 0],
+# Test output of -d option; only repeated lines
+['20', '-d', "a\na\n", "a\n", 0],
+['21', '-d', "a\nb\n", "", 0],
+['22', '-d', "a\nb\na\n", "", 0],
+['23', '-d', "a\na\nb\n", "a\n", 0],
+# Check the key options
+# If we skip over fields or characters, is the output deterministic?
+['obs30', '-1', "a a\nb a\n", "a a\n", 0],
+['31', '-f 1',"a a\nb a\n", "a a\n", 0],
+['32', '-f 1',"a a\nb b\n", "a a\nb b\n", 0],
+['33', '-f 1',"a a a\nb a c\n", "a a a\nb a c\n", 0],
+['34', '-f 1',"b a\na a\n", "b a\n", 0],
+['35', '-f 2',"a a c\nb a c\n", "a a c\n", 0],
+# Skip over characters.
+['obs-plus40', '+1', "aaa\naaa\n", "aaa\n", 0],
+['obs-plus41', '+1', "baa\naaa\n", "baa\n", 0],
+['42', '-s 1',"aaa\naaa\n", "aaa\n", 0],
+['43', '-s 2',"baa\naaa\n", "baa\n", 0],
+['obs-plus44', '+1 --', "aaa\naaa\n", "aaa\n", 0],
+['obs-plus45', '+1 --', "baa\naaa\n", "baa\n", 0],
+# Skip over fields and characters
+['50', '-f 1 -s 1',"a aaa\nb ab\n", "a aaa\nb ab\n", 0],
+['51', '-f 1 -s 1',"a aaa\nb aaa\n", "a aaa\n", 0],
+['52', '-s 1 -f 1',"a aaa\nb ab\n", "a aaa\nb ab\n", 0],
+['53', '-s 1 -f 1',"a aaa\nb aaa\n", "a aaa\n", 0],
+# Fixed in 2.0.15
+['54', '-s 4', "abc\nabcd\n", "abc\n", 0],
+# Supported in 2.0.15
+['55', '-s 0', "abc\nabcd\n", "abc\nabcd\n", 0],
+['56', '-s 0', "abc\n", "abc\n", 0],
+['57', '-w 0', "abc\nabcd\n", "abc\n", 0],
+# Only account for a number of characters
+['60', '-w 1',"a a\nb a\n", "a a\nb a\n", 0],
+['61', '-w 3',"a a\nb a\n", "a a\nb a\n", 0],
+['62', '-w 1 -f 1',"a a a\nb a c\n", "a a a\n", 0],
+['63', '-f 1 -w 1',"a a a\nb a c\n", "a a a\n", 0],
+# The blank after field one is checked too
+['64', '-f 1 -w 4',"a a a\nb a c\n", "a a a\nb a c\n", 0],
+['65', '-f 1 -w 3',"a a a\nb a c\n", "a a a\n", 0],
+# Make sure we don't break if the file contains \0
+['90', '', "a\0a\na\n", "a\0a\na\n", 0],
+# Check fields seperated by tabs and by spaces
+['91', '', "a\ta\na a\n", "a\ta\na a\n", 0],
+['92', '-f 1', "a\ta\na a\n", "a\ta\na a\n", 0],
+['93', '-f 2', "a\ta a\na a a\n", "a\ta a\n", 0],
+['94', '-f 1', "a\ta\na\ta\n", "a\ta\n", 0],
+# Check the count option; add tests for other options too
+['101', '-c', "a\nb\n", " 1 a\n 1 b\n", 0],
+['102', '-c', "a\na\n", " 2 a\n", 0],
+# Check the local -D (--all-repeated) option
+['110', '-D', "a\na\n", "a\na\n", 0],
+['111', '-D -w1',"a a\na b\n", "a a\na b\n", 0],
+['112', '-D -c', "a a\na b\n", "", 1],
+['113', '--all-repeated=separate',"a\na\n", "a\na\n", 0],
+['114', '--all-repeated=separate',"a\na\nb\nc\nc\n", "a\na\n\nc\nc\n", 0],
+['115', '--all-repeated=separate',"a\na\nb\nb\nc\n", "a\na\n\nb\nb\n", 0],
+['116', '--all-repeated=prepend', "a\na\n", "\na\na\n", 0],
+['117', '--all-repeated=prepend', "a\na\nb\nc\nc\n", "\na\na\n\nc\nc\n", 0],
+['118', '--all-repeated=prepend', "a\nb\n", "", 0],
+['119', '--all-repeated=badoption', "a\n", "", 1],
+# Check that -d and -u suppress all output, as POSIX requires.
+['120', '-d -u', "a\na\n\b", "", 0],
+['121', '-d -u -w340282366920938463463374607431768211456',
+ "a\na\n\b", "", 0],
+);
+
+sub test_vector
+{
+ my $t;
+ foreach $t (@tv)
+ {
+ my ($test_name, $flags, $in, $exp, $ret) = @$t;
+ $Test::input_via{$test_name} = {REDIR => 0, PIPE => 0};
+
+ $test_name =~ /^obs-plus/
+ and $Test::env{$test_name} = ['_POSIX2_VERSION=199209'];
+
+ $ret
+ and $Test::input_via{$test_name} = {REDIR => 0};
+ }
+
+ return @tv;
+}
+
+1;
diff --git a/tests/uniq/obs-plus40.I b/tests/uniq/obs-plus40.I
new file mode 100644
index 0000000..eaf82f7
--- /dev/null
+++ b/tests/uniq/obs-plus40.I
@@ -0,0 +1,2 @@
+aaa
+aaa
diff --git a/tests/uniq/obs-plus40.X b/tests/uniq/obs-plus40.X
new file mode 100644
index 0000000..72943a1
--- /dev/null
+++ b/tests/uniq/obs-plus40.X
@@ -0,0 +1 @@
+aaa
diff --git a/tests/uniq/obs-plus41.I b/tests/uniq/obs-plus41.I
new file mode 100644
index 0000000..cf26fdc
--- /dev/null
+++ b/tests/uniq/obs-plus41.I
@@ -0,0 +1,2 @@
+baa
+aaa
diff --git a/tests/uniq/obs-plus41.X b/tests/uniq/obs-plus41.X
new file mode 100644
index 0000000..397acea
--- /dev/null
+++ b/tests/uniq/obs-plus41.X
@@ -0,0 +1 @@
+baa
diff --git a/tests/uniq/obs-plus44.I b/tests/uniq/obs-plus44.I
new file mode 100644
index 0000000..eaf82f7
--- /dev/null
+++ b/tests/uniq/obs-plus44.I
@@ -0,0 +1,2 @@
+aaa
+aaa
diff --git a/tests/uniq/obs-plus44.X b/tests/uniq/obs-plus44.X
new file mode 100644
index 0000000..72943a1
--- /dev/null
+++ b/tests/uniq/obs-plus44.X
@@ -0,0 +1 @@
+aaa
diff --git a/tests/uniq/obs-plus45.I b/tests/uniq/obs-plus45.I
new file mode 100644
index 0000000..cf26fdc
--- /dev/null
+++ b/tests/uniq/obs-plus45.I
@@ -0,0 +1,2 @@
+baa
+aaa
diff --git a/tests/uniq/obs-plus45.X b/tests/uniq/obs-plus45.X
new file mode 100644
index 0000000..397acea
--- /dev/null
+++ b/tests/uniq/obs-plus45.X
@@ -0,0 +1 @@
+baa
diff --git a/tests/uniq/obs30.I b/tests/uniq/obs30.I
new file mode 100644
index 0000000..573a9ac
--- /dev/null
+++ b/tests/uniq/obs30.I
@@ -0,0 +1,2 @@
+a a
+b a
diff --git a/tests/uniq/obs30.X b/tests/uniq/obs30.X
new file mode 100644
index 0000000..a4c6917
--- /dev/null
+++ b/tests/uniq/obs30.X
@@ -0,0 +1 @@
+a a
diff --git a/tests/uniq/uniq-tests b/tests/uniq/uniq-tests
new file mode 100755
index 0000000..e1465d3
--- /dev/null
+++ b/tests/uniq/uniq-tests
@@ -0,0 +1,2223 @@
+#! /bin/sh
+# This script was generated automatically by mk-script.
+case $# in
+ 0) xx='uniq';;
+ *) xx="$1";;
+esac
+test "$VERBOSE" && echo=echo || echo=:
+$echo testing program: $xx
+errors=0
+test "$srcdir" || srcdir=.
+test "$VERBOSE" && $xx --version 2> /dev/null
+
+# Make sure we get English translations.
+LANGUAGE=C
+export LANGUAGE
+LC_ALL=C
+export LC_ALL
+LANG=C
+export LANG
+
+cat $srcdir/1.I | $xx > 1.O 2> 1.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1.O $srcdir/1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1(|)"; fi;;
+ 1) $echo "Test 1(|) failed: files 1.O and $srcdir/1.X differ" 1>&2
+ (diff -c 1.O $srcdir/1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1(|) may have failed." 1>&2
+ $echo The command "cmp 1.O $srcdir/1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1.E || rm -f 1.E
+$xx < $srcdir/1.I > 1.O 2> 1.E
+code=$?
+if test $code != 0; then
+ $echo "Test 1(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 1.O $srcdir/1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 1(<)"; fi;;
+ 1) $echo "Test 1(<) failed: files 1.O and $srcdir/1.X differ" 1>&2
+ (diff -c 1.O $srcdir/1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 1(<) may have failed." 1>&2
+ $echo The command "cmp 1.O $srcdir/1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 1.E || rm -f 1.E
+cat $srcdir/2.I | $xx > 2.O 2> 2.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2.O $srcdir/2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2(|)"; fi;;
+ 1) $echo "Test 2(|) failed: files 2.O and $srcdir/2.X differ" 1>&2
+ (diff -c 2.O $srcdir/2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2(|) may have failed." 1>&2
+ $echo The command "cmp 2.O $srcdir/2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2.E || rm -f 2.E
+$xx < $srcdir/2.I > 2.O 2> 2.E
+code=$?
+if test $code != 0; then
+ $echo "Test 2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 2.O $srcdir/2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 2(<)"; fi;;
+ 1) $echo "Test 2(<) failed: files 2.O and $srcdir/2.X differ" 1>&2
+ (diff -c 2.O $srcdir/2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 2(<) may have failed." 1>&2
+ $echo The command "cmp 2.O $srcdir/2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 2.E || rm -f 2.E
+cat $srcdir/3.I | $xx > 3.O 2> 3.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3.O $srcdir/3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3(|)"; fi;;
+ 1) $echo "Test 3(|) failed: files 3.O and $srcdir/3.X differ" 1>&2
+ (diff -c 3.O $srcdir/3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3(|) may have failed." 1>&2
+ $echo The command "cmp 3.O $srcdir/3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3.E || rm -f 3.E
+$xx < $srcdir/3.I > 3.O 2> 3.E
+code=$?
+if test $code != 0; then
+ $echo "Test 3(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 3.O $srcdir/3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 3(<)"; fi;;
+ 1) $echo "Test 3(<) failed: files 3.O and $srcdir/3.X differ" 1>&2
+ (diff -c 3.O $srcdir/3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 3(<) may have failed." 1>&2
+ $echo The command "cmp 3.O $srcdir/3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 3.E || rm -f 3.E
+cat $srcdir/4.I | $xx > 4.O 2> 4.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4.O $srcdir/4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4(|)"; fi;;
+ 1) $echo "Test 4(|) failed: files 4.O and $srcdir/4.X differ" 1>&2
+ (diff -c 4.O $srcdir/4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4(|) may have failed." 1>&2
+ $echo The command "cmp 4.O $srcdir/4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4.E || rm -f 4.E
+$xx < $srcdir/4.I > 4.O 2> 4.E
+code=$?
+if test $code != 0; then
+ $echo "Test 4(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 4.O $srcdir/4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 4(<)"; fi;;
+ 1) $echo "Test 4(<) failed: files 4.O and $srcdir/4.X differ" 1>&2
+ (diff -c 4.O $srcdir/4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 4(<) may have failed." 1>&2
+ $echo The command "cmp 4.O $srcdir/4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 4.E || rm -f 4.E
+cat $srcdir/5.I | $xx > 5.O 2> 5.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5.O $srcdir/5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5(|)"; fi;;
+ 1) $echo "Test 5(|) failed: files 5.O and $srcdir/5.X differ" 1>&2
+ (diff -c 5.O $srcdir/5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5(|) may have failed." 1>&2
+ $echo The command "cmp 5.O $srcdir/5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5.E || rm -f 5.E
+$xx < $srcdir/5.I > 5.O 2> 5.E
+code=$?
+if test $code != 0; then
+ $echo "Test 5(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 5.O $srcdir/5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 5(<)"; fi;;
+ 1) $echo "Test 5(<) failed: files 5.O and $srcdir/5.X differ" 1>&2
+ (diff -c 5.O $srcdir/5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 5(<) may have failed." 1>&2
+ $echo The command "cmp 5.O $srcdir/5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 5.E || rm -f 5.E
+cat $srcdir/6.I | $xx > 6.O 2> 6.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6.O $srcdir/6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6(|)"; fi;;
+ 1) $echo "Test 6(|) failed: files 6.O and $srcdir/6.X differ" 1>&2
+ (diff -c 6.O $srcdir/6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6(|) may have failed." 1>&2
+ $echo The command "cmp 6.O $srcdir/6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6.E || rm -f 6.E
+$xx < $srcdir/6.I > 6.O 2> 6.E
+code=$?
+if test $code != 0; then
+ $echo "Test 6(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 6.O $srcdir/6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 6(<)"; fi;;
+ 1) $echo "Test 6(<) failed: files 6.O and $srcdir/6.X differ" 1>&2
+ (diff -c 6.O $srcdir/6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 6(<) may have failed." 1>&2
+ $echo The command "cmp 6.O $srcdir/6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 6.E || rm -f 6.E
+cat $srcdir/7.I | $xx > 7.O 2> 7.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7.O $srcdir/7.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7(|)"; fi;;
+ 1) $echo "Test 7(|) failed: files 7.O and $srcdir/7.X differ" 1>&2
+ (diff -c 7.O $srcdir/7.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7(|) may have failed." 1>&2
+ $echo The command "cmp 7.O $srcdir/7.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7.E || rm -f 7.E
+$xx < $srcdir/7.I > 7.O 2> 7.E
+code=$?
+if test $code != 0; then
+ $echo "Test 7(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 7.O $srcdir/7.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 7(<)"; fi;;
+ 1) $echo "Test 7(<) failed: files 7.O and $srcdir/7.X differ" 1>&2
+ (diff -c 7.O $srcdir/7.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 7(<) may have failed." 1>&2
+ $echo The command "cmp 7.O $srcdir/7.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 7.E || rm -f 7.E
+cat $srcdir/8.I | $xx > 8.O 2> 8.E
+code=$?
+if test $code != 0; then
+ $echo "Test 8(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 8.O $srcdir/8.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 8(|)"; fi;;
+ 1) $echo "Test 8(|) failed: files 8.O and $srcdir/8.X differ" 1>&2
+ (diff -c 8.O $srcdir/8.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 8(|) may have failed." 1>&2
+ $echo The command "cmp 8.O $srcdir/8.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 8.E || rm -f 8.E
+$xx < $srcdir/8.I > 8.O 2> 8.E
+code=$?
+if test $code != 0; then
+ $echo "Test 8(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 8.O $srcdir/8.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 8(<)"; fi;;
+ 1) $echo "Test 8(<) failed: files 8.O and $srcdir/8.X differ" 1>&2
+ (diff -c 8.O $srcdir/8.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 8(<) may have failed." 1>&2
+ $echo The command "cmp 8.O $srcdir/8.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 8.E || rm -f 8.E
+cat $srcdir/9.I | $xx -u > 9.O 2> 9.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9.O $srcdir/9.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9(|)"; fi;;
+ 1) $echo "Test 9(|) failed: files 9.O and $srcdir/9.X differ" 1>&2
+ (diff -c 9.O $srcdir/9.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9(|) may have failed." 1>&2
+ $echo The command "cmp 9.O $srcdir/9.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9.E || rm -f 9.E
+$xx -u < $srcdir/9.I > 9.O 2> 9.E
+code=$?
+if test $code != 0; then
+ $echo "Test 9(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 9.O $srcdir/9.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 9(<)"; fi;;
+ 1) $echo "Test 9(<) failed: files 9.O and $srcdir/9.X differ" 1>&2
+ (diff -c 9.O $srcdir/9.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 9(<) may have failed." 1>&2
+ $echo The command "cmp 9.O $srcdir/9.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 9.E || rm -f 9.E
+cat $srcdir/10.I | $xx -u > 10.O 2> 10.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10.O $srcdir/10.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10(|)"; fi;;
+ 1) $echo "Test 10(|) failed: files 10.O and $srcdir/10.X differ" 1>&2
+ (diff -c 10.O $srcdir/10.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10(|) may have failed." 1>&2
+ $echo The command "cmp 10.O $srcdir/10.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10.E || rm -f 10.E
+$xx -u < $srcdir/10.I > 10.O 2> 10.E
+code=$?
+if test $code != 0; then
+ $echo "Test 10(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 10.O $srcdir/10.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 10(<)"; fi;;
+ 1) $echo "Test 10(<) failed: files 10.O and $srcdir/10.X differ" 1>&2
+ (diff -c 10.O $srcdir/10.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 10(<) may have failed." 1>&2
+ $echo The command "cmp 10.O $srcdir/10.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 10.E || rm -f 10.E
+cat $srcdir/11.I | $xx -u > 11.O 2> 11.E
+code=$?
+if test $code != 0; then
+ $echo "Test 11(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 11.O $srcdir/11.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 11(|)"; fi;;
+ 1) $echo "Test 11(|) failed: files 11.O and $srcdir/11.X differ" 1>&2
+ (diff -c 11.O $srcdir/11.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 11(|) may have failed." 1>&2
+ $echo The command "cmp 11.O $srcdir/11.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 11.E || rm -f 11.E
+$xx -u < $srcdir/11.I > 11.O 2> 11.E
+code=$?
+if test $code != 0; then
+ $echo "Test 11(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 11.O $srcdir/11.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 11(<)"; fi;;
+ 1) $echo "Test 11(<) failed: files 11.O and $srcdir/11.X differ" 1>&2
+ (diff -c 11.O $srcdir/11.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 11(<) may have failed." 1>&2
+ $echo The command "cmp 11.O $srcdir/11.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 11.E || rm -f 11.E
+cat $srcdir/12.I | $xx -u > 12.O 2> 12.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12.O $srcdir/12.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12(|)"; fi;;
+ 1) $echo "Test 12(|) failed: files 12.O and $srcdir/12.X differ" 1>&2
+ (diff -c 12.O $srcdir/12.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12(|) may have failed." 1>&2
+ $echo The command "cmp 12.O $srcdir/12.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12.E || rm -f 12.E
+$xx -u < $srcdir/12.I > 12.O 2> 12.E
+code=$?
+if test $code != 0; then
+ $echo "Test 12(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 12.O $srcdir/12.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 12(<)"; fi;;
+ 1) $echo "Test 12(<) failed: files 12.O and $srcdir/12.X differ" 1>&2
+ (diff -c 12.O $srcdir/12.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 12(<) may have failed." 1>&2
+ $echo The command "cmp 12.O $srcdir/12.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 12.E || rm -f 12.E
+cat $srcdir/13.I | $xx -u > 13.O 2> 13.E
+code=$?
+if test $code != 0; then
+ $echo "Test 13(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 13.O $srcdir/13.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 13(|)"; fi;;
+ 1) $echo "Test 13(|) failed: files 13.O and $srcdir/13.X differ" 1>&2
+ (diff -c 13.O $srcdir/13.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 13(|) may have failed." 1>&2
+ $echo The command "cmp 13.O $srcdir/13.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 13.E || rm -f 13.E
+$xx -u < $srcdir/13.I > 13.O 2> 13.E
+code=$?
+if test $code != 0; then
+ $echo "Test 13(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 13.O $srcdir/13.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 13(<)"; fi;;
+ 1) $echo "Test 13(<) failed: files 13.O and $srcdir/13.X differ" 1>&2
+ (diff -c 13.O $srcdir/13.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 13(<) may have failed." 1>&2
+ $echo The command "cmp 13.O $srcdir/13.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 13.E || rm -f 13.E
+cat $srcdir/20.I | $xx -d > 20.O 2> 20.E
+code=$?
+if test $code != 0; then
+ $echo "Test 20(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 20.O $srcdir/20.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 20(|)"; fi;;
+ 1) $echo "Test 20(|) failed: files 20.O and $srcdir/20.X differ" 1>&2
+ (diff -c 20.O $srcdir/20.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 20(|) may have failed." 1>&2
+ $echo The command "cmp 20.O $srcdir/20.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 20.E || rm -f 20.E
+$xx -d < $srcdir/20.I > 20.O 2> 20.E
+code=$?
+if test $code != 0; then
+ $echo "Test 20(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 20.O $srcdir/20.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 20(<)"; fi;;
+ 1) $echo "Test 20(<) failed: files 20.O and $srcdir/20.X differ" 1>&2
+ (diff -c 20.O $srcdir/20.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 20(<) may have failed." 1>&2
+ $echo The command "cmp 20.O $srcdir/20.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 20.E || rm -f 20.E
+cat $srcdir/21.I | $xx -d > 21.O 2> 21.E
+code=$?
+if test $code != 0; then
+ $echo "Test 21(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 21.O $srcdir/21.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 21(|)"; fi;;
+ 1) $echo "Test 21(|) failed: files 21.O and $srcdir/21.X differ" 1>&2
+ (diff -c 21.O $srcdir/21.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 21(|) may have failed." 1>&2
+ $echo The command "cmp 21.O $srcdir/21.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 21.E || rm -f 21.E
+$xx -d < $srcdir/21.I > 21.O 2> 21.E
+code=$?
+if test $code != 0; then
+ $echo "Test 21(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 21.O $srcdir/21.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 21(<)"; fi;;
+ 1) $echo "Test 21(<) failed: files 21.O and $srcdir/21.X differ" 1>&2
+ (diff -c 21.O $srcdir/21.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 21(<) may have failed." 1>&2
+ $echo The command "cmp 21.O $srcdir/21.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 21.E || rm -f 21.E
+cat $srcdir/22.I | $xx -d > 22.O 2> 22.E
+code=$?
+if test $code != 0; then
+ $echo "Test 22(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 22.O $srcdir/22.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 22(|)"; fi;;
+ 1) $echo "Test 22(|) failed: files 22.O and $srcdir/22.X differ" 1>&2
+ (diff -c 22.O $srcdir/22.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 22(|) may have failed." 1>&2
+ $echo The command "cmp 22.O $srcdir/22.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 22.E || rm -f 22.E
+$xx -d < $srcdir/22.I > 22.O 2> 22.E
+code=$?
+if test $code != 0; then
+ $echo "Test 22(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 22.O $srcdir/22.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 22(<)"; fi;;
+ 1) $echo "Test 22(<) failed: files 22.O and $srcdir/22.X differ" 1>&2
+ (diff -c 22.O $srcdir/22.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 22(<) may have failed." 1>&2
+ $echo The command "cmp 22.O $srcdir/22.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 22.E || rm -f 22.E
+cat $srcdir/23.I | $xx -d > 23.O 2> 23.E
+code=$?
+if test $code != 0; then
+ $echo "Test 23(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 23.O $srcdir/23.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 23(|)"; fi;;
+ 1) $echo "Test 23(|) failed: files 23.O and $srcdir/23.X differ" 1>&2
+ (diff -c 23.O $srcdir/23.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 23(|) may have failed." 1>&2
+ $echo The command "cmp 23.O $srcdir/23.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 23.E || rm -f 23.E
+$xx -d < $srcdir/23.I > 23.O 2> 23.E
+code=$?
+if test $code != 0; then
+ $echo "Test 23(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 23.O $srcdir/23.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 23(<)"; fi;;
+ 1) $echo "Test 23(<) failed: files 23.O and $srcdir/23.X differ" 1>&2
+ (diff -c 23.O $srcdir/23.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 23(<) may have failed." 1>&2
+ $echo The command "cmp 23.O $srcdir/23.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 23.E || rm -f 23.E
+cat $srcdir/obs30.I | $xx -1 > obs30.O 2> obs30.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs30(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs30.O $srcdir/obs30.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs30(|)"; fi;;
+ 1) $echo "Test obs30(|) failed: files obs30.O and $srcdir/obs30.X differ" 1>&2
+ (diff -c obs30.O $srcdir/obs30.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs30(|) may have failed." 1>&2
+ $echo The command "cmp obs30.O $srcdir/obs30.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs30.E || rm -f obs30.E
+$xx -1 < $srcdir/obs30.I > obs30.O 2> obs30.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs30(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs30.O $srcdir/obs30.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs30(<)"; fi;;
+ 1) $echo "Test obs30(<) failed: files obs30.O and $srcdir/obs30.X differ" 1>&2
+ (diff -c obs30.O $srcdir/obs30.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs30(<) may have failed." 1>&2
+ $echo The command "cmp obs30.O $srcdir/obs30.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs30.E || rm -f obs30.E
+cat $srcdir/31.I | $xx -f 1 > 31.O 2> 31.E
+code=$?
+if test $code != 0; then
+ $echo "Test 31(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 31.O $srcdir/31.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 31(|)"; fi;;
+ 1) $echo "Test 31(|) failed: files 31.O and $srcdir/31.X differ" 1>&2
+ (diff -c 31.O $srcdir/31.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 31(|) may have failed." 1>&2
+ $echo The command "cmp 31.O $srcdir/31.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 31.E || rm -f 31.E
+$xx -f 1 < $srcdir/31.I > 31.O 2> 31.E
+code=$?
+if test $code != 0; then
+ $echo "Test 31(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 31.O $srcdir/31.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 31(<)"; fi;;
+ 1) $echo "Test 31(<) failed: files 31.O and $srcdir/31.X differ" 1>&2
+ (diff -c 31.O $srcdir/31.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 31(<) may have failed." 1>&2
+ $echo The command "cmp 31.O $srcdir/31.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 31.E || rm -f 31.E
+cat $srcdir/32.I | $xx -f 1 > 32.O 2> 32.E
+code=$?
+if test $code != 0; then
+ $echo "Test 32(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 32.O $srcdir/32.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 32(|)"; fi;;
+ 1) $echo "Test 32(|) failed: files 32.O and $srcdir/32.X differ" 1>&2
+ (diff -c 32.O $srcdir/32.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 32(|) may have failed." 1>&2
+ $echo The command "cmp 32.O $srcdir/32.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 32.E || rm -f 32.E
+$xx -f 1 < $srcdir/32.I > 32.O 2> 32.E
+code=$?
+if test $code != 0; then
+ $echo "Test 32(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 32.O $srcdir/32.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 32(<)"; fi;;
+ 1) $echo "Test 32(<) failed: files 32.O and $srcdir/32.X differ" 1>&2
+ (diff -c 32.O $srcdir/32.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 32(<) may have failed." 1>&2
+ $echo The command "cmp 32.O $srcdir/32.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 32.E || rm -f 32.E
+cat $srcdir/33.I | $xx -f 1 > 33.O 2> 33.E
+code=$?
+if test $code != 0; then
+ $echo "Test 33(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 33.O $srcdir/33.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 33(|)"; fi;;
+ 1) $echo "Test 33(|) failed: files 33.O and $srcdir/33.X differ" 1>&2
+ (diff -c 33.O $srcdir/33.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 33(|) may have failed." 1>&2
+ $echo The command "cmp 33.O $srcdir/33.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 33.E || rm -f 33.E
+$xx -f 1 < $srcdir/33.I > 33.O 2> 33.E
+code=$?
+if test $code != 0; then
+ $echo "Test 33(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 33.O $srcdir/33.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 33(<)"; fi;;
+ 1) $echo "Test 33(<) failed: files 33.O and $srcdir/33.X differ" 1>&2
+ (diff -c 33.O $srcdir/33.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 33(<) may have failed." 1>&2
+ $echo The command "cmp 33.O $srcdir/33.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 33.E || rm -f 33.E
+cat $srcdir/34.I | $xx -f 1 > 34.O 2> 34.E
+code=$?
+if test $code != 0; then
+ $echo "Test 34(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 34.O $srcdir/34.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 34(|)"; fi;;
+ 1) $echo "Test 34(|) failed: files 34.O and $srcdir/34.X differ" 1>&2
+ (diff -c 34.O $srcdir/34.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 34(|) may have failed." 1>&2
+ $echo The command "cmp 34.O $srcdir/34.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 34.E || rm -f 34.E
+$xx -f 1 < $srcdir/34.I > 34.O 2> 34.E
+code=$?
+if test $code != 0; then
+ $echo "Test 34(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 34.O $srcdir/34.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 34(<)"; fi;;
+ 1) $echo "Test 34(<) failed: files 34.O and $srcdir/34.X differ" 1>&2
+ (diff -c 34.O $srcdir/34.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 34(<) may have failed." 1>&2
+ $echo The command "cmp 34.O $srcdir/34.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 34.E || rm -f 34.E
+cat $srcdir/35.I | $xx -f 2 > 35.O 2> 35.E
+code=$?
+if test $code != 0; then
+ $echo "Test 35(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 35.O $srcdir/35.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 35(|)"; fi;;
+ 1) $echo "Test 35(|) failed: files 35.O and $srcdir/35.X differ" 1>&2
+ (diff -c 35.O $srcdir/35.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 35(|) may have failed." 1>&2
+ $echo The command "cmp 35.O $srcdir/35.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 35.E || rm -f 35.E
+$xx -f 2 < $srcdir/35.I > 35.O 2> 35.E
+code=$?
+if test $code != 0; then
+ $echo "Test 35(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 35.O $srcdir/35.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 35(<)"; fi;;
+ 1) $echo "Test 35(<) failed: files 35.O and $srcdir/35.X differ" 1>&2
+ (diff -c 35.O $srcdir/35.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 35(<) may have failed." 1>&2
+ $echo The command "cmp 35.O $srcdir/35.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 35.E || rm -f 35.E
+cat $srcdir/obs-plus40.I | _POSIX2_VERSION=199209 $xx +1 > obs-plus40.O 2> obs-plus40.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus40(_POSIX2_VERSION=199209:|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus40.O $srcdir/obs-plus40.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus40(_POSIX2_VERSION=199209:|)"; fi;;
+ 1) $echo "Test obs-plus40(_POSIX2_VERSION=199209:|) failed: files obs-plus40.O and $srcdir/obs-plus40.X differ" 1>&2
+ (diff -c obs-plus40.O $srcdir/obs-plus40.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus40(_POSIX2_VERSION=199209:|) may have failed." 1>&2
+ $echo The command "cmp obs-plus40.O $srcdir/obs-plus40.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus40.E || rm -f obs-plus40.E
+_POSIX2_VERSION=199209 $xx +1 < $srcdir/obs-plus40.I > obs-plus40.O 2> obs-plus40.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus40(_POSIX2_VERSION=199209:<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus40.O $srcdir/obs-plus40.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus40(_POSIX2_VERSION=199209:<)"; fi;;
+ 1) $echo "Test obs-plus40(_POSIX2_VERSION=199209:<) failed: files obs-plus40.O and $srcdir/obs-plus40.X differ" 1>&2
+ (diff -c obs-plus40.O $srcdir/obs-plus40.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus40(_POSIX2_VERSION=199209:<) may have failed." 1>&2
+ $echo The command "cmp obs-plus40.O $srcdir/obs-plus40.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus40.E || rm -f obs-plus40.E
+cat $srcdir/obs-plus41.I | _POSIX2_VERSION=199209 $xx +1 > obs-plus41.O 2> obs-plus41.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus41(_POSIX2_VERSION=199209:|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus41.O $srcdir/obs-plus41.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus41(_POSIX2_VERSION=199209:|)"; fi;;
+ 1) $echo "Test obs-plus41(_POSIX2_VERSION=199209:|) failed: files obs-plus41.O and $srcdir/obs-plus41.X differ" 1>&2
+ (diff -c obs-plus41.O $srcdir/obs-plus41.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus41(_POSIX2_VERSION=199209:|) may have failed." 1>&2
+ $echo The command "cmp obs-plus41.O $srcdir/obs-plus41.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus41.E || rm -f obs-plus41.E
+_POSIX2_VERSION=199209 $xx +1 < $srcdir/obs-plus41.I > obs-plus41.O 2> obs-plus41.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus41(_POSIX2_VERSION=199209:<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus41.O $srcdir/obs-plus41.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus41(_POSIX2_VERSION=199209:<)"; fi;;
+ 1) $echo "Test obs-plus41(_POSIX2_VERSION=199209:<) failed: files obs-plus41.O and $srcdir/obs-plus41.X differ" 1>&2
+ (diff -c obs-plus41.O $srcdir/obs-plus41.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus41(_POSIX2_VERSION=199209:<) may have failed." 1>&2
+ $echo The command "cmp obs-plus41.O $srcdir/obs-plus41.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus41.E || rm -f obs-plus41.E
+cat $srcdir/42.I | $xx -s 1 > 42.O 2> 42.E
+code=$?
+if test $code != 0; then
+ $echo "Test 42(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 42.O $srcdir/42.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 42(|)"; fi;;
+ 1) $echo "Test 42(|) failed: files 42.O and $srcdir/42.X differ" 1>&2
+ (diff -c 42.O $srcdir/42.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 42(|) may have failed." 1>&2
+ $echo The command "cmp 42.O $srcdir/42.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 42.E || rm -f 42.E
+$xx -s 1 < $srcdir/42.I > 42.O 2> 42.E
+code=$?
+if test $code != 0; then
+ $echo "Test 42(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 42.O $srcdir/42.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 42(<)"; fi;;
+ 1) $echo "Test 42(<) failed: files 42.O and $srcdir/42.X differ" 1>&2
+ (diff -c 42.O $srcdir/42.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 42(<) may have failed." 1>&2
+ $echo The command "cmp 42.O $srcdir/42.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 42.E || rm -f 42.E
+cat $srcdir/43.I | $xx -s 2 > 43.O 2> 43.E
+code=$?
+if test $code != 0; then
+ $echo "Test 43(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 43.O $srcdir/43.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 43(|)"; fi;;
+ 1) $echo "Test 43(|) failed: files 43.O and $srcdir/43.X differ" 1>&2
+ (diff -c 43.O $srcdir/43.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 43(|) may have failed." 1>&2
+ $echo The command "cmp 43.O $srcdir/43.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 43.E || rm -f 43.E
+$xx -s 2 < $srcdir/43.I > 43.O 2> 43.E
+code=$?
+if test $code != 0; then
+ $echo "Test 43(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 43.O $srcdir/43.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 43(<)"; fi;;
+ 1) $echo "Test 43(<) failed: files 43.O and $srcdir/43.X differ" 1>&2
+ (diff -c 43.O $srcdir/43.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 43(<) may have failed." 1>&2
+ $echo The command "cmp 43.O $srcdir/43.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 43.E || rm -f 43.E
+cat $srcdir/obs-plus44.I | _POSIX2_VERSION=199209 $xx +1 -- > obs-plus44.O 2> obs-plus44.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus44(_POSIX2_VERSION=199209:|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus44.O $srcdir/obs-plus44.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus44(_POSIX2_VERSION=199209:|)"; fi;;
+ 1) $echo "Test obs-plus44(_POSIX2_VERSION=199209:|) failed: files obs-plus44.O and $srcdir/obs-plus44.X differ" 1>&2
+ (diff -c obs-plus44.O $srcdir/obs-plus44.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus44(_POSIX2_VERSION=199209:|) may have failed." 1>&2
+ $echo The command "cmp obs-plus44.O $srcdir/obs-plus44.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus44.E || rm -f obs-plus44.E
+_POSIX2_VERSION=199209 $xx +1 -- < $srcdir/obs-plus44.I > obs-plus44.O 2> obs-plus44.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus44(_POSIX2_VERSION=199209:<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus44.O $srcdir/obs-plus44.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus44(_POSIX2_VERSION=199209:<)"; fi;;
+ 1) $echo "Test obs-plus44(_POSIX2_VERSION=199209:<) failed: files obs-plus44.O and $srcdir/obs-plus44.X differ" 1>&2
+ (diff -c obs-plus44.O $srcdir/obs-plus44.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus44(_POSIX2_VERSION=199209:<) may have failed." 1>&2
+ $echo The command "cmp obs-plus44.O $srcdir/obs-plus44.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus44.E || rm -f obs-plus44.E
+cat $srcdir/obs-plus45.I | _POSIX2_VERSION=199209 $xx +1 -- > obs-plus45.O 2> obs-plus45.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus45(_POSIX2_VERSION=199209:|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus45.O $srcdir/obs-plus45.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus45(_POSIX2_VERSION=199209:|)"; fi;;
+ 1) $echo "Test obs-plus45(_POSIX2_VERSION=199209:|) failed: files obs-plus45.O and $srcdir/obs-plus45.X differ" 1>&2
+ (diff -c obs-plus45.O $srcdir/obs-plus45.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus45(_POSIX2_VERSION=199209:|) may have failed." 1>&2
+ $echo The command "cmp obs-plus45.O $srcdir/obs-plus45.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus45.E || rm -f obs-plus45.E
+_POSIX2_VERSION=199209 $xx +1 -- < $srcdir/obs-plus45.I > obs-plus45.O 2> obs-plus45.E
+code=$?
+if test $code != 0; then
+ $echo "Test obs-plus45(_POSIX2_VERSION=199209:<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp obs-plus45.O $srcdir/obs-plus45.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed obs-plus45(_POSIX2_VERSION=199209:<)"; fi;;
+ 1) $echo "Test obs-plus45(_POSIX2_VERSION=199209:<) failed: files obs-plus45.O and $srcdir/obs-plus45.X differ" 1>&2
+ (diff -c obs-plus45.O $srcdir/obs-plus45.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test obs-plus45(_POSIX2_VERSION=199209:<) may have failed." 1>&2
+ $echo The command "cmp obs-plus45.O $srcdir/obs-plus45.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s obs-plus45.E || rm -f obs-plus45.E
+cat $srcdir/50.I | $xx -f 1 -s 1 > 50.O 2> 50.E
+code=$?
+if test $code != 0; then
+ $echo "Test 50(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 50.O $srcdir/50.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 50(|)"; fi;;
+ 1) $echo "Test 50(|) failed: files 50.O and $srcdir/50.X differ" 1>&2
+ (diff -c 50.O $srcdir/50.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 50(|) may have failed." 1>&2
+ $echo The command "cmp 50.O $srcdir/50.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 50.E || rm -f 50.E
+$xx -f 1 -s 1 < $srcdir/50.I > 50.O 2> 50.E
+code=$?
+if test $code != 0; then
+ $echo "Test 50(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 50.O $srcdir/50.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 50(<)"; fi;;
+ 1) $echo "Test 50(<) failed: files 50.O and $srcdir/50.X differ" 1>&2
+ (diff -c 50.O $srcdir/50.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 50(<) may have failed." 1>&2
+ $echo The command "cmp 50.O $srcdir/50.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 50.E || rm -f 50.E
+cat $srcdir/51.I | $xx -f 1 -s 1 > 51.O 2> 51.E
+code=$?
+if test $code != 0; then
+ $echo "Test 51(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 51.O $srcdir/51.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 51(|)"; fi;;
+ 1) $echo "Test 51(|) failed: files 51.O and $srcdir/51.X differ" 1>&2
+ (diff -c 51.O $srcdir/51.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 51(|) may have failed." 1>&2
+ $echo The command "cmp 51.O $srcdir/51.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 51.E || rm -f 51.E
+$xx -f 1 -s 1 < $srcdir/51.I > 51.O 2> 51.E
+code=$?
+if test $code != 0; then
+ $echo "Test 51(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 51.O $srcdir/51.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 51(<)"; fi;;
+ 1) $echo "Test 51(<) failed: files 51.O and $srcdir/51.X differ" 1>&2
+ (diff -c 51.O $srcdir/51.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 51(<) may have failed." 1>&2
+ $echo The command "cmp 51.O $srcdir/51.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 51.E || rm -f 51.E
+cat $srcdir/52.I | $xx -s 1 -f 1 > 52.O 2> 52.E
+code=$?
+if test $code != 0; then
+ $echo "Test 52(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 52.O $srcdir/52.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 52(|)"; fi;;
+ 1) $echo "Test 52(|) failed: files 52.O and $srcdir/52.X differ" 1>&2
+ (diff -c 52.O $srcdir/52.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 52(|) may have failed." 1>&2
+ $echo The command "cmp 52.O $srcdir/52.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 52.E || rm -f 52.E
+$xx -s 1 -f 1 < $srcdir/52.I > 52.O 2> 52.E
+code=$?
+if test $code != 0; then
+ $echo "Test 52(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 52.O $srcdir/52.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 52(<)"; fi;;
+ 1) $echo "Test 52(<) failed: files 52.O and $srcdir/52.X differ" 1>&2
+ (diff -c 52.O $srcdir/52.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 52(<) may have failed." 1>&2
+ $echo The command "cmp 52.O $srcdir/52.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 52.E || rm -f 52.E
+cat $srcdir/53.I | $xx -s 1 -f 1 > 53.O 2> 53.E
+code=$?
+if test $code != 0; then
+ $echo "Test 53(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 53.O $srcdir/53.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 53(|)"; fi;;
+ 1) $echo "Test 53(|) failed: files 53.O and $srcdir/53.X differ" 1>&2
+ (diff -c 53.O $srcdir/53.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 53(|) may have failed." 1>&2
+ $echo The command "cmp 53.O $srcdir/53.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 53.E || rm -f 53.E
+$xx -s 1 -f 1 < $srcdir/53.I > 53.O 2> 53.E
+code=$?
+if test $code != 0; then
+ $echo "Test 53(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 53.O $srcdir/53.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 53(<)"; fi;;
+ 1) $echo "Test 53(<) failed: files 53.O and $srcdir/53.X differ" 1>&2
+ (diff -c 53.O $srcdir/53.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 53(<) may have failed." 1>&2
+ $echo The command "cmp 53.O $srcdir/53.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 53.E || rm -f 53.E
+cat $srcdir/54.I | $xx -s 4 > 54.O 2> 54.E
+code=$?
+if test $code != 0; then
+ $echo "Test 54(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 54.O $srcdir/54.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 54(|)"; fi;;
+ 1) $echo "Test 54(|) failed: files 54.O and $srcdir/54.X differ" 1>&2
+ (diff -c 54.O $srcdir/54.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 54(|) may have failed." 1>&2
+ $echo The command "cmp 54.O $srcdir/54.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 54.E || rm -f 54.E
+$xx -s 4 < $srcdir/54.I > 54.O 2> 54.E
+code=$?
+if test $code != 0; then
+ $echo "Test 54(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 54.O $srcdir/54.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 54(<)"; fi;;
+ 1) $echo "Test 54(<) failed: files 54.O and $srcdir/54.X differ" 1>&2
+ (diff -c 54.O $srcdir/54.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 54(<) may have failed." 1>&2
+ $echo The command "cmp 54.O $srcdir/54.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 54.E || rm -f 54.E
+cat $srcdir/55.I | $xx -s 0 > 55.O 2> 55.E
+code=$?
+if test $code != 0; then
+ $echo "Test 55(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 55.O $srcdir/55.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 55(|)"; fi;;
+ 1) $echo "Test 55(|) failed: files 55.O and $srcdir/55.X differ" 1>&2
+ (diff -c 55.O $srcdir/55.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 55(|) may have failed." 1>&2
+ $echo The command "cmp 55.O $srcdir/55.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 55.E || rm -f 55.E
+$xx -s 0 < $srcdir/55.I > 55.O 2> 55.E
+code=$?
+if test $code != 0; then
+ $echo "Test 55(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 55.O $srcdir/55.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 55(<)"; fi;;
+ 1) $echo "Test 55(<) failed: files 55.O and $srcdir/55.X differ" 1>&2
+ (diff -c 55.O $srcdir/55.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 55(<) may have failed." 1>&2
+ $echo The command "cmp 55.O $srcdir/55.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 55.E || rm -f 55.E
+cat $srcdir/56.I | $xx -s 0 > 56.O 2> 56.E
+code=$?
+if test $code != 0; then
+ $echo "Test 56(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 56.O $srcdir/56.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 56(|)"; fi;;
+ 1) $echo "Test 56(|) failed: files 56.O and $srcdir/56.X differ" 1>&2
+ (diff -c 56.O $srcdir/56.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 56(|) may have failed." 1>&2
+ $echo The command "cmp 56.O $srcdir/56.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 56.E || rm -f 56.E
+$xx -s 0 < $srcdir/56.I > 56.O 2> 56.E
+code=$?
+if test $code != 0; then
+ $echo "Test 56(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 56.O $srcdir/56.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 56(<)"; fi;;
+ 1) $echo "Test 56(<) failed: files 56.O and $srcdir/56.X differ" 1>&2
+ (diff -c 56.O $srcdir/56.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 56(<) may have failed." 1>&2
+ $echo The command "cmp 56.O $srcdir/56.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 56.E || rm -f 56.E
+cat $srcdir/57.I | $xx -w 0 > 57.O 2> 57.E
+code=$?
+if test $code != 0; then
+ $echo "Test 57(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 57.O $srcdir/57.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 57(|)"; fi;;
+ 1) $echo "Test 57(|) failed: files 57.O and $srcdir/57.X differ" 1>&2
+ (diff -c 57.O $srcdir/57.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 57(|) may have failed." 1>&2
+ $echo The command "cmp 57.O $srcdir/57.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 57.E || rm -f 57.E
+$xx -w 0 < $srcdir/57.I > 57.O 2> 57.E
+code=$?
+if test $code != 0; then
+ $echo "Test 57(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 57.O $srcdir/57.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 57(<)"; fi;;
+ 1) $echo "Test 57(<) failed: files 57.O and $srcdir/57.X differ" 1>&2
+ (diff -c 57.O $srcdir/57.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 57(<) may have failed." 1>&2
+ $echo The command "cmp 57.O $srcdir/57.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 57.E || rm -f 57.E
+cat $srcdir/60.I | $xx -w 1 > 60.O 2> 60.E
+code=$?
+if test $code != 0; then
+ $echo "Test 60(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 60.O $srcdir/60.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 60(|)"; fi;;
+ 1) $echo "Test 60(|) failed: files 60.O and $srcdir/60.X differ" 1>&2
+ (diff -c 60.O $srcdir/60.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 60(|) may have failed." 1>&2
+ $echo The command "cmp 60.O $srcdir/60.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 60.E || rm -f 60.E
+$xx -w 1 < $srcdir/60.I > 60.O 2> 60.E
+code=$?
+if test $code != 0; then
+ $echo "Test 60(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 60.O $srcdir/60.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 60(<)"; fi;;
+ 1) $echo "Test 60(<) failed: files 60.O and $srcdir/60.X differ" 1>&2
+ (diff -c 60.O $srcdir/60.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 60(<) may have failed." 1>&2
+ $echo The command "cmp 60.O $srcdir/60.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 60.E || rm -f 60.E
+cat $srcdir/61.I | $xx -w 3 > 61.O 2> 61.E
+code=$?
+if test $code != 0; then
+ $echo "Test 61(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 61.O $srcdir/61.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 61(|)"; fi;;
+ 1) $echo "Test 61(|) failed: files 61.O and $srcdir/61.X differ" 1>&2
+ (diff -c 61.O $srcdir/61.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 61(|) may have failed." 1>&2
+ $echo The command "cmp 61.O $srcdir/61.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 61.E || rm -f 61.E
+$xx -w 3 < $srcdir/61.I > 61.O 2> 61.E
+code=$?
+if test $code != 0; then
+ $echo "Test 61(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 61.O $srcdir/61.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 61(<)"; fi;;
+ 1) $echo "Test 61(<) failed: files 61.O and $srcdir/61.X differ" 1>&2
+ (diff -c 61.O $srcdir/61.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 61(<) may have failed." 1>&2
+ $echo The command "cmp 61.O $srcdir/61.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 61.E || rm -f 61.E
+cat $srcdir/62.I | $xx -w 1 -f 1 > 62.O 2> 62.E
+code=$?
+if test $code != 0; then
+ $echo "Test 62(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 62.O $srcdir/62.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 62(|)"; fi;;
+ 1) $echo "Test 62(|) failed: files 62.O and $srcdir/62.X differ" 1>&2
+ (diff -c 62.O $srcdir/62.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 62(|) may have failed." 1>&2
+ $echo The command "cmp 62.O $srcdir/62.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 62.E || rm -f 62.E
+$xx -w 1 -f 1 < $srcdir/62.I > 62.O 2> 62.E
+code=$?
+if test $code != 0; then
+ $echo "Test 62(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 62.O $srcdir/62.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 62(<)"; fi;;
+ 1) $echo "Test 62(<) failed: files 62.O and $srcdir/62.X differ" 1>&2
+ (diff -c 62.O $srcdir/62.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 62(<) may have failed." 1>&2
+ $echo The command "cmp 62.O $srcdir/62.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 62.E || rm -f 62.E
+cat $srcdir/63.I | $xx -f 1 -w 1 > 63.O 2> 63.E
+code=$?
+if test $code != 0; then
+ $echo "Test 63(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 63.O $srcdir/63.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 63(|)"; fi;;
+ 1) $echo "Test 63(|) failed: files 63.O and $srcdir/63.X differ" 1>&2
+ (diff -c 63.O $srcdir/63.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 63(|) may have failed." 1>&2
+ $echo The command "cmp 63.O $srcdir/63.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 63.E || rm -f 63.E
+$xx -f 1 -w 1 < $srcdir/63.I > 63.O 2> 63.E
+code=$?
+if test $code != 0; then
+ $echo "Test 63(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 63.O $srcdir/63.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 63(<)"; fi;;
+ 1) $echo "Test 63(<) failed: files 63.O and $srcdir/63.X differ" 1>&2
+ (diff -c 63.O $srcdir/63.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 63(<) may have failed." 1>&2
+ $echo The command "cmp 63.O $srcdir/63.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 63.E || rm -f 63.E
+cat $srcdir/64.I | $xx -f 1 -w 4 > 64.O 2> 64.E
+code=$?
+if test $code != 0; then
+ $echo "Test 64(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 64.O $srcdir/64.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 64(|)"; fi;;
+ 1) $echo "Test 64(|) failed: files 64.O and $srcdir/64.X differ" 1>&2
+ (diff -c 64.O $srcdir/64.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 64(|) may have failed." 1>&2
+ $echo The command "cmp 64.O $srcdir/64.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 64.E || rm -f 64.E
+$xx -f 1 -w 4 < $srcdir/64.I > 64.O 2> 64.E
+code=$?
+if test $code != 0; then
+ $echo "Test 64(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 64.O $srcdir/64.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 64(<)"; fi;;
+ 1) $echo "Test 64(<) failed: files 64.O and $srcdir/64.X differ" 1>&2
+ (diff -c 64.O $srcdir/64.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 64(<) may have failed." 1>&2
+ $echo The command "cmp 64.O $srcdir/64.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 64.E || rm -f 64.E
+cat $srcdir/65.I | $xx -f 1 -w 3 > 65.O 2> 65.E
+code=$?
+if test $code != 0; then
+ $echo "Test 65(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 65.O $srcdir/65.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 65(|)"; fi;;
+ 1) $echo "Test 65(|) failed: files 65.O and $srcdir/65.X differ" 1>&2
+ (diff -c 65.O $srcdir/65.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 65(|) may have failed." 1>&2
+ $echo The command "cmp 65.O $srcdir/65.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 65.E || rm -f 65.E
+$xx -f 1 -w 3 < $srcdir/65.I > 65.O 2> 65.E
+code=$?
+if test $code != 0; then
+ $echo "Test 65(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 65.O $srcdir/65.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 65(<)"; fi;;
+ 1) $echo "Test 65(<) failed: files 65.O and $srcdir/65.X differ" 1>&2
+ (diff -c 65.O $srcdir/65.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 65(<) may have failed." 1>&2
+ $echo The command "cmp 65.O $srcdir/65.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 65.E || rm -f 65.E
+cat $srcdir/90.I | $xx > 90.O 2> 90.E
+code=$?
+if test $code != 0; then
+ $echo "Test 90(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 90.O $srcdir/90.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 90(|)"; fi;;
+ 1) $echo "Test 90(|) failed: files 90.O and $srcdir/90.X differ" 1>&2
+ (diff -c 90.O $srcdir/90.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 90(|) may have failed." 1>&2
+ $echo The command "cmp 90.O $srcdir/90.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 90.E || rm -f 90.E
+$xx < $srcdir/90.I > 90.O 2> 90.E
+code=$?
+if test $code != 0; then
+ $echo "Test 90(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 90.O $srcdir/90.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 90(<)"; fi;;
+ 1) $echo "Test 90(<) failed: files 90.O and $srcdir/90.X differ" 1>&2
+ (diff -c 90.O $srcdir/90.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 90(<) may have failed." 1>&2
+ $echo The command "cmp 90.O $srcdir/90.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 90.E || rm -f 90.E
+cat $srcdir/91.I | $xx > 91.O 2> 91.E
+code=$?
+if test $code != 0; then
+ $echo "Test 91(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 91.O $srcdir/91.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 91(|)"; fi;;
+ 1) $echo "Test 91(|) failed: files 91.O and $srcdir/91.X differ" 1>&2
+ (diff -c 91.O $srcdir/91.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 91(|) may have failed." 1>&2
+ $echo The command "cmp 91.O $srcdir/91.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 91.E || rm -f 91.E
+$xx < $srcdir/91.I > 91.O 2> 91.E
+code=$?
+if test $code != 0; then
+ $echo "Test 91(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 91.O $srcdir/91.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 91(<)"; fi;;
+ 1) $echo "Test 91(<) failed: files 91.O and $srcdir/91.X differ" 1>&2
+ (diff -c 91.O $srcdir/91.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 91(<) may have failed." 1>&2
+ $echo The command "cmp 91.O $srcdir/91.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 91.E || rm -f 91.E
+cat $srcdir/92.I | $xx -f 1 > 92.O 2> 92.E
+code=$?
+if test $code != 0; then
+ $echo "Test 92(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 92.O $srcdir/92.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 92(|)"; fi;;
+ 1) $echo "Test 92(|) failed: files 92.O and $srcdir/92.X differ" 1>&2
+ (diff -c 92.O $srcdir/92.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 92(|) may have failed." 1>&2
+ $echo The command "cmp 92.O $srcdir/92.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 92.E || rm -f 92.E
+$xx -f 1 < $srcdir/92.I > 92.O 2> 92.E
+code=$?
+if test $code != 0; then
+ $echo "Test 92(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 92.O $srcdir/92.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 92(<)"; fi;;
+ 1) $echo "Test 92(<) failed: files 92.O and $srcdir/92.X differ" 1>&2
+ (diff -c 92.O $srcdir/92.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 92(<) may have failed." 1>&2
+ $echo The command "cmp 92.O $srcdir/92.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 92.E || rm -f 92.E
+cat $srcdir/93.I | $xx -f 2 > 93.O 2> 93.E
+code=$?
+if test $code != 0; then
+ $echo "Test 93(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 93.O $srcdir/93.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 93(|)"; fi;;
+ 1) $echo "Test 93(|) failed: files 93.O and $srcdir/93.X differ" 1>&2
+ (diff -c 93.O $srcdir/93.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 93(|) may have failed." 1>&2
+ $echo The command "cmp 93.O $srcdir/93.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 93.E || rm -f 93.E
+$xx -f 2 < $srcdir/93.I > 93.O 2> 93.E
+code=$?
+if test $code != 0; then
+ $echo "Test 93(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 93.O $srcdir/93.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 93(<)"; fi;;
+ 1) $echo "Test 93(<) failed: files 93.O and $srcdir/93.X differ" 1>&2
+ (diff -c 93.O $srcdir/93.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 93(<) may have failed." 1>&2
+ $echo The command "cmp 93.O $srcdir/93.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 93.E || rm -f 93.E
+cat $srcdir/94.I | $xx -f 1 > 94.O 2> 94.E
+code=$?
+if test $code != 0; then
+ $echo "Test 94(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 94.O $srcdir/94.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 94(|)"; fi;;
+ 1) $echo "Test 94(|) failed: files 94.O and $srcdir/94.X differ" 1>&2
+ (diff -c 94.O $srcdir/94.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 94(|) may have failed." 1>&2
+ $echo The command "cmp 94.O $srcdir/94.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 94.E || rm -f 94.E
+$xx -f 1 < $srcdir/94.I > 94.O 2> 94.E
+code=$?
+if test $code != 0; then
+ $echo "Test 94(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 94.O $srcdir/94.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 94(<)"; fi;;
+ 1) $echo "Test 94(<) failed: files 94.O and $srcdir/94.X differ" 1>&2
+ (diff -c 94.O $srcdir/94.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 94(<) may have failed." 1>&2
+ $echo The command "cmp 94.O $srcdir/94.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 94.E || rm -f 94.E
+cat $srcdir/101.I | $xx -c > 101.O 2> 101.E
+code=$?
+if test $code != 0; then
+ $echo "Test 101(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 101.O $srcdir/101.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 101(|)"; fi;;
+ 1) $echo "Test 101(|) failed: files 101.O and $srcdir/101.X differ" 1>&2
+ (diff -c 101.O $srcdir/101.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 101(|) may have failed." 1>&2
+ $echo The command "cmp 101.O $srcdir/101.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 101.E || rm -f 101.E
+$xx -c < $srcdir/101.I > 101.O 2> 101.E
+code=$?
+if test $code != 0; then
+ $echo "Test 101(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 101.O $srcdir/101.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 101(<)"; fi;;
+ 1) $echo "Test 101(<) failed: files 101.O and $srcdir/101.X differ" 1>&2
+ (diff -c 101.O $srcdir/101.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 101(<) may have failed." 1>&2
+ $echo The command "cmp 101.O $srcdir/101.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 101.E || rm -f 101.E
+cat $srcdir/102.I | $xx -c > 102.O 2> 102.E
+code=$?
+if test $code != 0; then
+ $echo "Test 102(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 102.O $srcdir/102.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 102(|)"; fi;;
+ 1) $echo "Test 102(|) failed: files 102.O and $srcdir/102.X differ" 1>&2
+ (diff -c 102.O $srcdir/102.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 102(|) may have failed." 1>&2
+ $echo The command "cmp 102.O $srcdir/102.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 102.E || rm -f 102.E
+$xx -c < $srcdir/102.I > 102.O 2> 102.E
+code=$?
+if test $code != 0; then
+ $echo "Test 102(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 102.O $srcdir/102.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 102(<)"; fi;;
+ 1) $echo "Test 102(<) failed: files 102.O and $srcdir/102.X differ" 1>&2
+ (diff -c 102.O $srcdir/102.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 102(<) may have failed." 1>&2
+ $echo The command "cmp 102.O $srcdir/102.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 102.E || rm -f 102.E
+cat $srcdir/110.I | $xx -D > 110.O 2> 110.E
+code=$?
+if test $code != 0; then
+ $echo "Test 110(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 110.O $srcdir/110.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 110(|)"; fi;;
+ 1) $echo "Test 110(|) failed: files 110.O and $srcdir/110.X differ" 1>&2
+ (diff -c 110.O $srcdir/110.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 110(|) may have failed." 1>&2
+ $echo The command "cmp 110.O $srcdir/110.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 110.E || rm -f 110.E
+$xx -D < $srcdir/110.I > 110.O 2> 110.E
+code=$?
+if test $code != 0; then
+ $echo "Test 110(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 110.O $srcdir/110.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 110(<)"; fi;;
+ 1) $echo "Test 110(<) failed: files 110.O and $srcdir/110.X differ" 1>&2
+ (diff -c 110.O $srcdir/110.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 110(<) may have failed." 1>&2
+ $echo The command "cmp 110.O $srcdir/110.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 110.E || rm -f 110.E
+cat $srcdir/111.I | $xx -D -w1 > 111.O 2> 111.E
+code=$?
+if test $code != 0; then
+ $echo "Test 111(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 111.O $srcdir/111.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 111(|)"; fi;;
+ 1) $echo "Test 111(|) failed: files 111.O and $srcdir/111.X differ" 1>&2
+ (diff -c 111.O $srcdir/111.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 111(|) may have failed." 1>&2
+ $echo The command "cmp 111.O $srcdir/111.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 111.E || rm -f 111.E
+$xx -D -w1 < $srcdir/111.I > 111.O 2> 111.E
+code=$?
+if test $code != 0; then
+ $echo "Test 111(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 111.O $srcdir/111.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 111(<)"; fi;;
+ 1) $echo "Test 111(<) failed: files 111.O and $srcdir/111.X differ" 1>&2
+ (diff -c 111.O $srcdir/111.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 111(<) may have failed." 1>&2
+ $echo The command "cmp 111.O $srcdir/111.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 111.E || rm -f 111.E
+$xx -D -c < $srcdir/112.I > 112.O 2> 112.E
+code=$?
+if test $code != 1; then
+ $echo "Test 112 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 112.O $srcdir/112.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 112"; fi;;
+ 1) $echo "Test 112 failed: files 112.O and $srcdir/112.X differ" 1>&2
+ (diff -c 112.O $srcdir/112.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 112 may have failed." 1>&2
+ $echo The command "cmp 112.O $srcdir/112.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 112.E || rm -f 112.E
+cat $srcdir/113.I | $xx --all-repeated=separate > 113.O 2> 113.E
+code=$?
+if test $code != 0; then
+ $echo "Test 113(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 113.O $srcdir/113.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 113(|)"; fi;;
+ 1) $echo "Test 113(|) failed: files 113.O and $srcdir/113.X differ" 1>&2
+ (diff -c 113.O $srcdir/113.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 113(|) may have failed." 1>&2
+ $echo The command "cmp 113.O $srcdir/113.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 113.E || rm -f 113.E
+$xx --all-repeated=separate < $srcdir/113.I > 113.O 2> 113.E
+code=$?
+if test $code != 0; then
+ $echo "Test 113(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 113.O $srcdir/113.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 113(<)"; fi;;
+ 1) $echo "Test 113(<) failed: files 113.O and $srcdir/113.X differ" 1>&2
+ (diff -c 113.O $srcdir/113.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 113(<) may have failed." 1>&2
+ $echo The command "cmp 113.O $srcdir/113.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 113.E || rm -f 113.E
+cat $srcdir/114.I | $xx --all-repeated=separate > 114.O 2> 114.E
+code=$?
+if test $code != 0; then
+ $echo "Test 114(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 114.O $srcdir/114.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 114(|)"; fi;;
+ 1) $echo "Test 114(|) failed: files 114.O and $srcdir/114.X differ" 1>&2
+ (diff -c 114.O $srcdir/114.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 114(|) may have failed." 1>&2
+ $echo The command "cmp 114.O $srcdir/114.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 114.E || rm -f 114.E
+$xx --all-repeated=separate < $srcdir/114.I > 114.O 2> 114.E
+code=$?
+if test $code != 0; then
+ $echo "Test 114(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 114.O $srcdir/114.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 114(<)"; fi;;
+ 1) $echo "Test 114(<) failed: files 114.O and $srcdir/114.X differ" 1>&2
+ (diff -c 114.O $srcdir/114.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 114(<) may have failed." 1>&2
+ $echo The command "cmp 114.O $srcdir/114.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 114.E || rm -f 114.E
+cat $srcdir/115.I | $xx --all-repeated=separate > 115.O 2> 115.E
+code=$?
+if test $code != 0; then
+ $echo "Test 115(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 115.O $srcdir/115.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 115(|)"; fi;;
+ 1) $echo "Test 115(|) failed: files 115.O and $srcdir/115.X differ" 1>&2
+ (diff -c 115.O $srcdir/115.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 115(|) may have failed." 1>&2
+ $echo The command "cmp 115.O $srcdir/115.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 115.E || rm -f 115.E
+$xx --all-repeated=separate < $srcdir/115.I > 115.O 2> 115.E
+code=$?
+if test $code != 0; then
+ $echo "Test 115(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 115.O $srcdir/115.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 115(<)"; fi;;
+ 1) $echo "Test 115(<) failed: files 115.O and $srcdir/115.X differ" 1>&2
+ (diff -c 115.O $srcdir/115.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 115(<) may have failed." 1>&2
+ $echo The command "cmp 115.O $srcdir/115.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 115.E || rm -f 115.E
+cat $srcdir/116.I | $xx --all-repeated=prepend > 116.O 2> 116.E
+code=$?
+if test $code != 0; then
+ $echo "Test 116(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 116.O $srcdir/116.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 116(|)"; fi;;
+ 1) $echo "Test 116(|) failed: files 116.O and $srcdir/116.X differ" 1>&2
+ (diff -c 116.O $srcdir/116.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 116(|) may have failed." 1>&2
+ $echo The command "cmp 116.O $srcdir/116.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 116.E || rm -f 116.E
+$xx --all-repeated=prepend < $srcdir/116.I > 116.O 2> 116.E
+code=$?
+if test $code != 0; then
+ $echo "Test 116(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 116.O $srcdir/116.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 116(<)"; fi;;
+ 1) $echo "Test 116(<) failed: files 116.O and $srcdir/116.X differ" 1>&2
+ (diff -c 116.O $srcdir/116.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 116(<) may have failed." 1>&2
+ $echo The command "cmp 116.O $srcdir/116.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 116.E || rm -f 116.E
+cat $srcdir/117.I | $xx --all-repeated=prepend > 117.O 2> 117.E
+code=$?
+if test $code != 0; then
+ $echo "Test 117(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 117.O $srcdir/117.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 117(|)"; fi;;
+ 1) $echo "Test 117(|) failed: files 117.O and $srcdir/117.X differ" 1>&2
+ (diff -c 117.O $srcdir/117.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 117(|) may have failed." 1>&2
+ $echo The command "cmp 117.O $srcdir/117.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 117.E || rm -f 117.E
+$xx --all-repeated=prepend < $srcdir/117.I > 117.O 2> 117.E
+code=$?
+if test $code != 0; then
+ $echo "Test 117(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 117.O $srcdir/117.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 117(<)"; fi;;
+ 1) $echo "Test 117(<) failed: files 117.O and $srcdir/117.X differ" 1>&2
+ (diff -c 117.O $srcdir/117.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 117(<) may have failed." 1>&2
+ $echo The command "cmp 117.O $srcdir/117.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 117.E || rm -f 117.E
+cat $srcdir/118.I | $xx --all-repeated=prepend > 118.O 2> 118.E
+code=$?
+if test $code != 0; then
+ $echo "Test 118(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 118.O $srcdir/118.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 118(|)"; fi;;
+ 1) $echo "Test 118(|) failed: files 118.O and $srcdir/118.X differ" 1>&2
+ (diff -c 118.O $srcdir/118.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 118(|) may have failed." 1>&2
+ $echo The command "cmp 118.O $srcdir/118.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 118.E || rm -f 118.E
+$xx --all-repeated=prepend < $srcdir/118.I > 118.O 2> 118.E
+code=$?
+if test $code != 0; then
+ $echo "Test 118(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 118.O $srcdir/118.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 118(<)"; fi;;
+ 1) $echo "Test 118(<) failed: files 118.O and $srcdir/118.X differ" 1>&2
+ (diff -c 118.O $srcdir/118.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 118(<) may have failed." 1>&2
+ $echo The command "cmp 118.O $srcdir/118.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 118.E || rm -f 118.E
+$xx --all-repeated=badoption < $srcdir/119.I > 119.O 2> 119.E
+code=$?
+if test $code != 1; then
+ $echo "Test 119 failed: $xx return code $code differs from expected value 1" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 119.O $srcdir/119.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 119"; fi;;
+ 1) $echo "Test 119 failed: files 119.O and $srcdir/119.X differ" 1>&2
+ (diff -c 119.O $srcdir/119.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 119 may have failed." 1>&2
+ $echo The command "cmp 119.O $srcdir/119.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 119.E || rm -f 119.E
+cat $srcdir/120.I | $xx -d -u > 120.O 2> 120.E
+code=$?
+if test $code != 0; then
+ $echo "Test 120(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 120.O $srcdir/120.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 120(|)"; fi;;
+ 1) $echo "Test 120(|) failed: files 120.O and $srcdir/120.X differ" 1>&2
+ (diff -c 120.O $srcdir/120.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 120(|) may have failed." 1>&2
+ $echo The command "cmp 120.O $srcdir/120.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 120.E || rm -f 120.E
+$xx -d -u < $srcdir/120.I > 120.O 2> 120.E
+code=$?
+if test $code != 0; then
+ $echo "Test 120(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 120.O $srcdir/120.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 120(<)"; fi;;
+ 1) $echo "Test 120(<) failed: files 120.O and $srcdir/120.X differ" 1>&2
+ (diff -c 120.O $srcdir/120.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 120(<) may have failed." 1>&2
+ $echo The command "cmp 120.O $srcdir/120.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 120.E || rm -f 120.E
+cat $srcdir/121.I | $xx -d -u -w340282366920938463463374607431768211456 > 121.O 2> 121.E
+code=$?
+if test $code != 0; then
+ $echo "Test 121(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 121.O $srcdir/121.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 121(|)"; fi;;
+ 1) $echo "Test 121(|) failed: files 121.O and $srcdir/121.X differ" 1>&2
+ (diff -c 121.O $srcdir/121.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 121(|) may have failed." 1>&2
+ $echo The command "cmp 121.O $srcdir/121.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 121.E || rm -f 121.E
+$xx -d -u -w340282366920938463463374607431768211456 < $srcdir/121.I > 121.O 2> 121.E
+code=$?
+if test $code != 0; then
+ $echo "Test 121(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp 121.O $srcdir/121.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed 121(<)"; fi;;
+ 1) $echo "Test 121(<) failed: files 121.O and $srcdir/121.X differ" 1>&2
+ (diff -c 121.O $srcdir/121.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test 121(<) may have failed." 1>&2
+ $echo The command "cmp 121.O $srcdir/121.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s 121.E || rm -f 121.E
+if test $errors = 0; then
+ $echo Passed all 122 tests. 1>&2
+else
+ $echo Failed $errors tests. 1>&2
+fi
+test $errors = 0 || errors=1
+exit $errors
diff --git a/tests/very-expensive b/tests/very-expensive
new file mode 100644
index 0000000..3e27c0b
--- /dev/null
+++ b/tests/very-expensive
@@ -0,0 +1,11 @@
+if test "$RUN_VERY_EXPENSIVE_TESTS" != yes; then
+ cat <<EOF >&2
+$0: This test is very expensive, so it is disabled by default.
+To run it anyway, rerun make check with the RUN_VERY_EXPENSIVE_TESTS
+environment variable set to yes. E.g.,
+
+ env RUN_VERY_EXPENSIVE_TESTS=yes make check
+
+EOF
+ (exit 77); exit 77
+fi
diff --git a/tests/wc/Makefile.am b/tests/wc/Makefile.am
new file mode 100644
index 0000000..04dad02
--- /dev/null
+++ b/tests/wc/Makefile.am
@@ -0,0 +1,62 @@
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+##test-files-begin
+x = wc
+explicit =
+maint_gen = a0.I a0.X a1.I a1.X a2.I a2.X a3.I a3.X a4.I a4.X a5.I a5.X a6.I \
+a6.X a7.I a7.X a8.I a8.X a9.I a9.X b0.I b0.X b1.I b1.X c0.I c0.X c1.I c1.X \
+c2.I c2.X
+run_gen = a0.O a0.E a1.O a1.E a2.O a2.E a3.O a3.E a4.O a4.E a5.O a5.E a6.O \
+a6.E a7.O a7.E a8.O a8.E a9.O a9.E b0.O b0.E b1.O b1.E c0.O c0.E c1.O c1.E \
+c2.O c2.E
+##test-files-end
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+
+TESTS = $x-tests
+
+mk_script = $(srcdir)/../mk-script
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
diff --git a/tests/wc/Makefile.in b/tests/wc/Makefile.in
new file mode 100644
index 0000000..5a46cac
--- /dev/null
+++ b/tests/wc/Makefile.in
@@ -0,0 +1,772 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Make coreutils tests. -*-Makefile-*-
+
+# Copyright (C) 1997, 1998, 2000, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = tests/wc
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/allocsa.m4 $(top_srcdir)/m4/argmatch.m4 \
+ $(top_srcdir)/m4/arpa_inet_h.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/autobuild.m4 \
+ $(top_srcdir)/m4/backupfile.m4 $(top_srcdir)/m4/base64.m4 \
+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \
+ $(top_srcdir)/m4/c-strtod.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/canon-host.m4 \
+ $(top_srcdir)/m4/canonicalize.m4 \
+ $(top_srcdir)/m4/chdir-long.m4 $(top_srcdir)/m4/check-decl.m4 \
+ $(top_srcdir)/m4/chown.m4 $(top_srcdir)/m4/clock_time.m4 \
+ $(top_srcdir)/m4/cloexec.m4 $(top_srcdir)/m4/close-stream.m4 \
+ $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \
+ $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/cycle-check.m4 \
+ $(top_srcdir)/m4/d-ino.m4 $(top_srcdir)/m4/d-type.m4 \
+ $(top_srcdir)/m4/dirfd.m4 $(top_srcdir)/m4/dirname.m4 \
+ $(top_srcdir)/m4/dos.m4 $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/eealloc.m4 \
+ $(top_srcdir)/m4/eoverflow.m4 $(top_srcdir)/m4/error.m4 \
+ $(top_srcdir)/m4/euidaccess-stat.m4 \
+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \
+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/fchdir.m4 $(top_srcdir)/m4/fcntl-safer.m4 \
+ $(top_srcdir)/m4/fcntl_h.m4 $(top_srcdir)/m4/fd-reopen.m4 \
+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \
+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/filenamecat.m4 \
+ $(top_srcdir)/m4/flexmember.m4 $(top_srcdir)/m4/fnmatch.m4 \
+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/fprintftime.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/fstypename.m4 \
+ $(top_srcdir)/m4/fsusage.m4 $(top_srcdir)/m4/ftruncate.m4 \
+ $(top_srcdir)/m4/fts.m4 $(top_srcdir)/m4/getaddrinfo.m4 \
+ $(top_srcdir)/m4/getcwd-abort-bug.m4 \
+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \
+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getdelim.m4 \
+ $(top_srcdir)/m4/getgroups.m4 $(top_srcdir)/m4/gethostname.m4 \
+ $(top_srcdir)/m4/gethrxtime.m4 $(top_srcdir)/m4/getline.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getndelim2.m4 \
+ $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/getpagesize.m4 \
+ $(top_srcdir)/m4/getpass.m4 $(top_srcdir)/m4/gettext.m4 \
+ $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \
+ $(top_srcdir)/m4/getugroups.m4 \
+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \
+ $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/group-member.m4 \
+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \
+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \
+ $(top_srcdir)/m4/i-ring.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/idcache.m4 $(top_srcdir)/m4/inet_ntop.m4 \
+ $(top_srcdir)/m4/inline.m4 $(top_srcdir)/m4/intmax_t.m4 \
+ $(top_srcdir)/m4/inttostr.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/isapipe.m4 $(top_srcdir)/m4/jm-macros.m4 \
+ $(top_srcdir)/m4/jm-winsz1.m4 $(top_srcdir)/m4/jm-winsz2.m4 \
+ $(top_srcdir)/m4/lchmod.m4 $(top_srcdir)/m4/lchown.m4 \
+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ignore.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/link-follow.m4 \
+ $(top_srcdir)/m4/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 \
+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \
+ $(top_srcdir)/m4/mbchar.m4 $(top_srcdir)/m4/mbiter.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbscasecmp.m4 \
+ $(top_srcdir)/m4/mbstate_t.m4 $(top_srcdir)/m4/mbswidth.m4 \
+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memcasecmp.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcoll.m4 $(top_srcdir)/m4/memcpy.m4 \
+ $(top_srcdir)/m4/memmove.m4 $(top_srcdir)/m4/mempcpy.m4 \
+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \
+ $(top_srcdir)/m4/memxfrm.m4 $(top_srcdir)/m4/mkancesdirs.m4 \
+ $(top_srcdir)/m4/mkdir-p.m4 $(top_srcdir)/m4/mkdir-slash.m4 \
+ $(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/mktime.m4 \
+ $(top_srcdir)/m4/modechange.m4 $(top_srcdir)/m4/mountlist.m4 \
+ $(top_srcdir)/m4/mpsort.m4 $(top_srcdir)/m4/nanosleep.m4 \
+ $(top_srcdir)/m4/netinet_in_h.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/openat.m4 $(top_srcdir)/m4/pathmax.m4 \
+ $(top_srcdir)/m4/perl.m4 $(top_srcdir)/m4/physmem.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posixtm.m4 \
+ $(top_srcdir)/m4/posixver.m4 $(top_srcdir)/m4/prereq.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/putenv.m4 \
+ $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \
+ $(top_srcdir)/m4/randint.m4 $(top_srcdir)/m4/randperm.m4 \
+ $(top_srcdir)/m4/randread.m4 $(top_srcdir)/m4/readlink.m4 \
+ $(top_srcdir)/m4/readtokens.m4 $(top_srcdir)/m4/readutmp.m4 \
+ $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename-dest-slash.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rmdir-errno.m4 \
+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/root-dev-ino.m4 \
+ $(top_srcdir)/m4/rpmatch.m4 $(top_srcdir)/m4/safe-read.m4 \
+ $(top_srcdir)/m4/safe-write.m4 $(top_srcdir)/m4/same.m4 \
+ $(top_srcdir)/m4/save-cwd.m4 $(top_srcdir)/m4/savedir.m4 \
+ $(top_srcdir)/m4/savewd.m4 $(top_srcdir)/m4/setenv.m4 \
+ $(top_srcdir)/m4/settime.m4 $(top_srcdir)/m4/sha1.m4 \
+ $(top_srcdir)/m4/sha256.m4 $(top_srcdir)/m4/sha512.m4 \
+ $(top_srcdir)/m4/sig2str.m4 $(top_srcdir)/m4/snprintf.m4 \
+ $(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/st_dm_mode.m4 \
+ $(top_srcdir)/m4/stat-prog.m4 $(top_srcdir)/m4/stat-time.m4 \
+ $(top_srcdir)/m4/stdarg.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \
+ $(top_srcdir)/m4/stdio-safer.m4 $(top_srcdir)/m4/stdio_h.m4 \
+ $(top_srcdir)/m4/stdlib-safer.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strftime.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strnumcmp.m4 \
+ $(top_srcdir)/m4/strpbrk.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \
+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \
+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \
+ $(top_srcdir)/m4/strverscmp.m4 \
+ $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_time_h.m4 \
+ $(top_srcdir)/m4/tempname.m4 $(top_srcdir)/m4/time_h.m4 \
+ $(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/timespec.m4 \
+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \
+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \
+ $(top_srcdir)/m4/unistd_h.m4 $(top_srcdir)/m4/unlink-busy.m4 \
+ $(top_srcdir)/m4/unlinkdir.m4 $(top_srcdir)/m4/unlocked-io.m4 \
+ $(top_srcdir)/m4/uptime.m4 $(top_srcdir)/m4/userspec.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimecmp.m4 $(top_srcdir)/m4/utimens.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \
+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
+ $(top_srcdir)/m4/wchar.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wcwidth.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/m4/xfts.m4 $(top_srcdir)/m4/xgetcwd.m4 \
+ $(top_srcdir)/m4/xnanosleep.m4 $(top_srcdir)/m4/xstrndup.m4 \
+ $(top_srcdir)/m4/xstrtod.m4 $(top_srcdir)/m4/xstrtol.m4 \
+ $(top_srcdir)/m4/yesno.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/lib/config.h
+CONFIG_CLEAN_FILES =
+SCRIPTS = $(noinst_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_DIRENT_H = @ABSOLUTE_DIRENT_H@
+ABSOLUTE_FCNTL_H = @ABSOLUTE_FCNTL_H@
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_NETINET_IN_H = @ABSOLUTE_NETINET_IN_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDIO_H = @ABSOLUTE_STDIO_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_SYS_SOCKET_H = @ABSOLUTE_SYS_SOCKET_H@
+ABSOLUTE_SYS_STAT_H = @ABSOLUTE_SYS_STAT_H@
+ABSOLUTE_SYS_TIME_H = @ABSOLUTE_SYS_TIME_H@
+ABSOLUTE_TIME_H = @ABSOLUTE_TIME_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+ARPA_INET_H = @ARPA_INET_H@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DF_PROG = @DF_PROG@
+DIRENT_H = @DIRENT_H@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EOVERFLOW = @EOVERFLOW@
+EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
+FNMATCH_H = @FNMATCH_H@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNU_PACKAGE = @GNU_PACKAGE@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@
+HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@
+HAVE__BOOL = @HAVE__BOOL@
+HELP2MAN = @HELP2MAN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+KMEM_GROUP = @KMEM_GROUP@
+LDFLAGS = @LDFLAGS@
+LIBCOREUTILS_LIBDEPS = @LIBCOREUTILS_LIBDEPS@
+LIBCOREUTILS_LTLIBDEPS = @LIBCOREUTILS_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIB_ACL = @LIB_ACL@
+LIB_ACL_TRIVIAL = @LIB_ACL_TRIVIAL@
+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+LIB_CRYPT = @LIB_CRYPT@
+LIB_EACCESS = @LIB_EACCESS@
+LIB_FDATASYNC = @LIB_FDATASYNC@
+LIB_GETHRXTIME = @LIB_GETHRXTIME@
+LIB_NANOSLEEP = @LIB_NANOSLEEP@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAN = @MAN@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEED_SETGID = @NEED_SETGID@
+NETINET_IN_H = @NETINET_IN_H@
+OBJEXT = @OBJEXT@
+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
+REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STRPTIME = @REPLACE_STRPTIME@
+REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+SEQ_LIBM = @SEQ_LIBM@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+SYS_SOCKET_H = @SYS_SOCKET_H@
+SYS_STAT_H = @SYS_STAT_H@
+SYS_TIME_H = @SYS_TIME_H@
+SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+x = wc
+explicit =
+maint_gen = a0.I a0.X a1.I a1.X a2.I a2.X a3.I a3.X a4.I a4.X a5.I a5.X a6.I \
+a6.X a7.I a7.X a8.I a8.X a9.I a9.X b0.I b0.X b1.I b1.X c0.I c0.X c1.I c1.X \
+c2.I c2.X
+
+run_gen = a0.O a0.E a1.O a1.E a2.O a2.E a3.O a3.E a4.O a4.E a5.O a5.E a6.O \
+a6.E a7.O a7.E a8.O a8.E a9.O a9.E b0.O b0.E b1.O b1.E c0.O c0.E c1.O c1.E \
+c2.O c2.E
+
+EXTRA_DIST = Test.pm $x-tests $(explicit) $(maint_gen)
+noinst_SCRIPTS = $x-tests
+TESTS_ENVIRONMENT = \
+ CU_TEST_NAME=`basename $(abs_srcdir)`,$$tst \
+ PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH"
+
+editpl = sed -e 's,@''PERL''@,$(PERL),g' -e 's,@''srcdir''@,$(srcdir),g'
+TESTS = $x-tests
+mk_script = $(srcdir)/../mk-script
+MAINTAINERCLEANFILES = $x-tests $(maint_gen)
+CLEANFILES = $(run_gen)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/wc/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tests/wc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(SCRIPTS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-TESTS check-am clean clean-generic \
+ distclean distclean-generic distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+ uninstall-am
+
+$(srcdir)/$x-tests: $(mk_script) Test.pm Makefile.am
+ test '$x' = test && prog=../../src/$x || prog=$x; \
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) $$prog > $@.n
+ mv $@.n $@
+ chmod 755 $@
+
+check: $(maint_gen)
+
+$(srcdir)/Makefile.am: ../Makefile.am.in Test.pm $(mk_script)
+ rm -f $@ $@t
+ sed -n '1,/^##test-files-begin/p' $(srcdir)/../Makefile.am.in > $@t
+ tool=`echo $(subdir)|sed 's/^tests.//;s/-test//'`; \
+ echo "x = $$tool" >> $@t
+ $(PERL) -I$(srcdir) -w -- $(mk_script) $(srcdir) --list >> $@t
+ sed -n '/^##test-files-end/,$$p' $(srcdir)/../Makefile.am.in >> $@t
+ chmod -w $@t
+ mv $@t $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tests/wc/Test.pm b/tests/wc/Test.pm
new file mode 100755
index 0000000..3adbbba
--- /dev/null
+++ b/tests/wc/Test.pm
@@ -0,0 +1,70 @@
+# Test "wc".
+
+# Copyright (C) 1997, 2003, 2006 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+package Test;
+require 5.002;
+use strict;
+
+$Test::input_via_stdin = 1;
+
+my @tv = (
+# test flags input expected output expected return code
+['a0', '-c', '', "0\n", 0],
+['a1', '-l', '', "0\n", 0],
+['a2', '-w', '', "0\n", 0],
+['a3', '-c', 'x', "1\n", 0],
+['a4', '-w', 'x', "1\n", 0],
+['a5', '-w', "x y\n", "2\n", 0],
+['a6', '-w', "x y\nz", "3\n", 0],
+# Remember, -l counts *newline* bytes, not logical lines.
+['a7', '-l', "x y", "0\n", 0],
+['a8', '-l', "x y\n", "1\n", 0],
+['a9', '-l', "x\ny\n", "2\n", 0],
+['b0', '', "", "0 0 0\n", 0],
+['b1', '', "a b\nc\n", "2 3 6\n", 0],
+['c0', '-L', "1\n12\n", "2\n", 0],
+['c1', '-L', "1\n123\n1\n", "3\n", 0],
+['c2', '-L', "\n123456", "6\n", 0],
+);
+
+sub test_vector
+{
+ my $t;
+ foreach $t (@tv)
+ {
+ my ($test_name, $flags, $in, $exp, $ret) = @$t;
+ # By default, test both stdin-redirection and input from a pipe.
+ $Test::input_via{$test_name} = {REDIR => 0, PIPE => 0};
+
+ # But if test name ends with `-file', test only with file arg(s).
+ # FIXME: unfortunately, invoking wc like `wc FILE' makes it put
+ # FILE in the ouput -- and FILE is different depending on $srcdir.
+ $Test::input_via{$test_name} = {FILE => 0}
+ if $test_name =~ /-file$/;
+
+ # Now that `wc FILE' (note, with no options) produces results
+ # different from `cat FILE|wc', disable those two `PIPE' tests.
+ $flags eq ''
+ and delete $Test::input_via{$test_name}->{PIPE};
+ }
+
+ return @tv;
+}
+
+1;
diff --git a/tests/wc/a0.I b/tests/wc/a0.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/wc/a0.I
diff --git a/tests/wc/a0.X b/tests/wc/a0.X
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/wc/a0.X
@@ -0,0 +1 @@
+0
diff --git a/tests/wc/a1.I b/tests/wc/a1.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/wc/a1.I
diff --git a/tests/wc/a1.X b/tests/wc/a1.X
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/wc/a1.X
@@ -0,0 +1 @@
+0
diff --git a/tests/wc/a2.I b/tests/wc/a2.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/wc/a2.I
diff --git a/tests/wc/a2.X b/tests/wc/a2.X
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/wc/a2.X
@@ -0,0 +1 @@
+0
diff --git a/tests/wc/a3.I b/tests/wc/a3.I
new file mode 100644
index 0000000..c1b0730
--- /dev/null
+++ b/tests/wc/a3.I
@@ -0,0 +1 @@
+x \ No newline at end of file
diff --git a/tests/wc/a3.X b/tests/wc/a3.X
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/wc/a3.X
@@ -0,0 +1 @@
+1
diff --git a/tests/wc/a4.I b/tests/wc/a4.I
new file mode 100644
index 0000000..c1b0730
--- /dev/null
+++ b/tests/wc/a4.I
@@ -0,0 +1 @@
+x \ No newline at end of file
diff --git a/tests/wc/a4.X b/tests/wc/a4.X
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/wc/a4.X
@@ -0,0 +1 @@
+1
diff --git a/tests/wc/a5.I b/tests/wc/a5.I
new file mode 100644
index 0000000..74b863c
--- /dev/null
+++ b/tests/wc/a5.I
@@ -0,0 +1 @@
+x y
diff --git a/tests/wc/a5.X b/tests/wc/a5.X
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tests/wc/a5.X
@@ -0,0 +1 @@
+2
diff --git a/tests/wc/a6.I b/tests/wc/a6.I
new file mode 100644
index 0000000..ef2a240
--- /dev/null
+++ b/tests/wc/a6.I
@@ -0,0 +1,2 @@
+x y
+z \ No newline at end of file
diff --git a/tests/wc/a6.X b/tests/wc/a6.X
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/tests/wc/a6.X
@@ -0,0 +1 @@
+3
diff --git a/tests/wc/a7.I b/tests/wc/a7.I
new file mode 100644
index 0000000..0501513
--- /dev/null
+++ b/tests/wc/a7.I
@@ -0,0 +1 @@
+x y \ No newline at end of file
diff --git a/tests/wc/a7.X b/tests/wc/a7.X
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/wc/a7.X
@@ -0,0 +1 @@
+0
diff --git a/tests/wc/a8.I b/tests/wc/a8.I
new file mode 100644
index 0000000..74b863c
--- /dev/null
+++ b/tests/wc/a8.I
@@ -0,0 +1 @@
+x y
diff --git a/tests/wc/a8.X b/tests/wc/a8.X
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/wc/a8.X
@@ -0,0 +1 @@
+1
diff --git a/tests/wc/a9.I b/tests/wc/a9.I
new file mode 100644
index 0000000..b77b4eb
--- /dev/null
+++ b/tests/wc/a9.I
@@ -0,0 +1,2 @@
+x
+y
diff --git a/tests/wc/a9.X b/tests/wc/a9.X
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tests/wc/a9.X
@@ -0,0 +1 @@
+2
diff --git a/tests/wc/b0.I b/tests/wc/b0.I
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/wc/b0.I
diff --git a/tests/wc/b0.X b/tests/wc/b0.X
new file mode 100644
index 0000000..a5c7b77
--- /dev/null
+++ b/tests/wc/b0.X
@@ -0,0 +1 @@
+0 0 0
diff --git a/tests/wc/b1.I b/tests/wc/b1.I
new file mode 100644
index 0000000..6307455
--- /dev/null
+++ b/tests/wc/b1.I
@@ -0,0 +1,2 @@
+a b
+c
diff --git a/tests/wc/b1.X b/tests/wc/b1.X
new file mode 100644
index 0000000..a6e198a
--- /dev/null
+++ b/tests/wc/b1.X
@@ -0,0 +1 @@
+2 3 6
diff --git a/tests/wc/c0.I b/tests/wc/c0.I
new file mode 100644
index 0000000..7fd5171
--- /dev/null
+++ b/tests/wc/c0.I
@@ -0,0 +1,2 @@
+1
+12
diff --git a/tests/wc/c0.X b/tests/wc/c0.X
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tests/wc/c0.X
@@ -0,0 +1 @@
+2
diff --git a/tests/wc/c1.I b/tests/wc/c1.I
new file mode 100644
index 0000000..81871d6
--- /dev/null
+++ b/tests/wc/c1.I
@@ -0,0 +1,3 @@
+1
+123
+1
diff --git a/tests/wc/c1.X b/tests/wc/c1.X
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/tests/wc/c1.X
@@ -0,0 +1 @@
+3
diff --git a/tests/wc/c2.I b/tests/wc/c2.I
new file mode 100644
index 0000000..0af26ea
--- /dev/null
+++ b/tests/wc/c2.I
@@ -0,0 +1,2 @@
+
+123456 \ No newline at end of file
diff --git a/tests/wc/c2.X b/tests/wc/c2.X
new file mode 100644
index 0000000..1e8b314
--- /dev/null
+++ b/tests/wc/c2.X
@@ -0,0 +1 @@
+6
diff --git a/tests/wc/wc-tests b/tests/wc/wc-tests
new file mode 100755
index 0000000..4f9f2a2
--- /dev/null
+++ b/tests/wc/wc-tests
@@ -0,0 +1,531 @@
+#! /bin/sh
+# This script was generated automatically by mk-script.
+case $# in
+ 0) xx='wc';;
+ *) xx="$1";;
+esac
+test "$VERBOSE" && echo=echo || echo=:
+$echo testing program: $xx
+errors=0
+test "$srcdir" || srcdir=.
+test "$VERBOSE" && $xx --version 2> /dev/null
+
+# Make sure we get English translations.
+LANGUAGE=C
+export LANGUAGE
+LC_ALL=C
+export LC_ALL
+LANG=C
+export LANG
+
+cat $srcdir/a0.I | $xx -c > a0.O 2> a0.E
+code=$?
+if test $code != 0; then
+ $echo "Test a0(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a0.O $srcdir/a0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a0(|)"; fi;;
+ 1) $echo "Test a0(|) failed: files a0.O and $srcdir/a0.X differ" 1>&2
+ (diff -c a0.O $srcdir/a0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a0(|) may have failed." 1>&2
+ $echo The command "cmp a0.O $srcdir/a0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a0.E || rm -f a0.E
+$xx -c < $srcdir/a0.I > a0.O 2> a0.E
+code=$?
+if test $code != 0; then
+ $echo "Test a0(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a0.O $srcdir/a0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a0(<)"; fi;;
+ 1) $echo "Test a0(<) failed: files a0.O and $srcdir/a0.X differ" 1>&2
+ (diff -c a0.O $srcdir/a0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a0(<) may have failed." 1>&2
+ $echo The command "cmp a0.O $srcdir/a0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a0.E || rm -f a0.E
+cat $srcdir/a1.I | $xx -l > a1.O 2> a1.E
+code=$?
+if test $code != 0; then
+ $echo "Test a1(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a1.O $srcdir/a1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a1(|)"; fi;;
+ 1) $echo "Test a1(|) failed: files a1.O and $srcdir/a1.X differ" 1>&2
+ (diff -c a1.O $srcdir/a1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a1(|) may have failed." 1>&2
+ $echo The command "cmp a1.O $srcdir/a1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a1.E || rm -f a1.E
+$xx -l < $srcdir/a1.I > a1.O 2> a1.E
+code=$?
+if test $code != 0; then
+ $echo "Test a1(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a1.O $srcdir/a1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a1(<)"; fi;;
+ 1) $echo "Test a1(<) failed: files a1.O and $srcdir/a1.X differ" 1>&2
+ (diff -c a1.O $srcdir/a1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a1(<) may have failed." 1>&2
+ $echo The command "cmp a1.O $srcdir/a1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a1.E || rm -f a1.E
+cat $srcdir/a2.I | $xx -w > a2.O 2> a2.E
+code=$?
+if test $code != 0; then
+ $echo "Test a2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a2.O $srcdir/a2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a2(|)"; fi;;
+ 1) $echo "Test a2(|) failed: files a2.O and $srcdir/a2.X differ" 1>&2
+ (diff -c a2.O $srcdir/a2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a2(|) may have failed." 1>&2
+ $echo The command "cmp a2.O $srcdir/a2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a2.E || rm -f a2.E
+$xx -w < $srcdir/a2.I > a2.O 2> a2.E
+code=$?
+if test $code != 0; then
+ $echo "Test a2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a2.O $srcdir/a2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a2(<)"; fi;;
+ 1) $echo "Test a2(<) failed: files a2.O and $srcdir/a2.X differ" 1>&2
+ (diff -c a2.O $srcdir/a2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a2(<) may have failed." 1>&2
+ $echo The command "cmp a2.O $srcdir/a2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a2.E || rm -f a2.E
+cat $srcdir/a3.I | $xx -c > a3.O 2> a3.E
+code=$?
+if test $code != 0; then
+ $echo "Test a3(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a3.O $srcdir/a3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a3(|)"; fi;;
+ 1) $echo "Test a3(|) failed: files a3.O and $srcdir/a3.X differ" 1>&2
+ (diff -c a3.O $srcdir/a3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a3(|) may have failed." 1>&2
+ $echo The command "cmp a3.O $srcdir/a3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a3.E || rm -f a3.E
+$xx -c < $srcdir/a3.I > a3.O 2> a3.E
+code=$?
+if test $code != 0; then
+ $echo "Test a3(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a3.O $srcdir/a3.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a3(<)"; fi;;
+ 1) $echo "Test a3(<) failed: files a3.O and $srcdir/a3.X differ" 1>&2
+ (diff -c a3.O $srcdir/a3.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a3(<) may have failed." 1>&2
+ $echo The command "cmp a3.O $srcdir/a3.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a3.E || rm -f a3.E
+cat $srcdir/a4.I | $xx -w > a4.O 2> a4.E
+code=$?
+if test $code != 0; then
+ $echo "Test a4(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a4.O $srcdir/a4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a4(|)"; fi;;
+ 1) $echo "Test a4(|) failed: files a4.O and $srcdir/a4.X differ" 1>&2
+ (diff -c a4.O $srcdir/a4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a4(|) may have failed." 1>&2
+ $echo The command "cmp a4.O $srcdir/a4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a4.E || rm -f a4.E
+$xx -w < $srcdir/a4.I > a4.O 2> a4.E
+code=$?
+if test $code != 0; then
+ $echo "Test a4(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a4.O $srcdir/a4.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a4(<)"; fi;;
+ 1) $echo "Test a4(<) failed: files a4.O and $srcdir/a4.X differ" 1>&2
+ (diff -c a4.O $srcdir/a4.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a4(<) may have failed." 1>&2
+ $echo The command "cmp a4.O $srcdir/a4.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a4.E || rm -f a4.E
+cat $srcdir/a5.I | $xx -w > a5.O 2> a5.E
+code=$?
+if test $code != 0; then
+ $echo "Test a5(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a5.O $srcdir/a5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a5(|)"; fi;;
+ 1) $echo "Test a5(|) failed: files a5.O and $srcdir/a5.X differ" 1>&2
+ (diff -c a5.O $srcdir/a5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a5(|) may have failed." 1>&2
+ $echo The command "cmp a5.O $srcdir/a5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a5.E || rm -f a5.E
+$xx -w < $srcdir/a5.I > a5.O 2> a5.E
+code=$?
+if test $code != 0; then
+ $echo "Test a5(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a5.O $srcdir/a5.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a5(<)"; fi;;
+ 1) $echo "Test a5(<) failed: files a5.O and $srcdir/a5.X differ" 1>&2
+ (diff -c a5.O $srcdir/a5.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a5(<) may have failed." 1>&2
+ $echo The command "cmp a5.O $srcdir/a5.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a5.E || rm -f a5.E
+cat $srcdir/a6.I | $xx -w > a6.O 2> a6.E
+code=$?
+if test $code != 0; then
+ $echo "Test a6(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a6.O $srcdir/a6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a6(|)"; fi;;
+ 1) $echo "Test a6(|) failed: files a6.O and $srcdir/a6.X differ" 1>&2
+ (diff -c a6.O $srcdir/a6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a6(|) may have failed." 1>&2
+ $echo The command "cmp a6.O $srcdir/a6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a6.E || rm -f a6.E
+$xx -w < $srcdir/a6.I > a6.O 2> a6.E
+code=$?
+if test $code != 0; then
+ $echo "Test a6(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a6.O $srcdir/a6.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a6(<)"; fi;;
+ 1) $echo "Test a6(<) failed: files a6.O and $srcdir/a6.X differ" 1>&2
+ (diff -c a6.O $srcdir/a6.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a6(<) may have failed." 1>&2
+ $echo The command "cmp a6.O $srcdir/a6.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a6.E || rm -f a6.E
+cat $srcdir/a7.I | $xx -l > a7.O 2> a7.E
+code=$?
+if test $code != 0; then
+ $echo "Test a7(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a7.O $srcdir/a7.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a7(|)"; fi;;
+ 1) $echo "Test a7(|) failed: files a7.O and $srcdir/a7.X differ" 1>&2
+ (diff -c a7.O $srcdir/a7.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a7(|) may have failed." 1>&2
+ $echo The command "cmp a7.O $srcdir/a7.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a7.E || rm -f a7.E
+$xx -l < $srcdir/a7.I > a7.O 2> a7.E
+code=$?
+if test $code != 0; then
+ $echo "Test a7(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a7.O $srcdir/a7.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a7(<)"; fi;;
+ 1) $echo "Test a7(<) failed: files a7.O and $srcdir/a7.X differ" 1>&2
+ (diff -c a7.O $srcdir/a7.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a7(<) may have failed." 1>&2
+ $echo The command "cmp a7.O $srcdir/a7.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a7.E || rm -f a7.E
+cat $srcdir/a8.I | $xx -l > a8.O 2> a8.E
+code=$?
+if test $code != 0; then
+ $echo "Test a8(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a8.O $srcdir/a8.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a8(|)"; fi;;
+ 1) $echo "Test a8(|) failed: files a8.O and $srcdir/a8.X differ" 1>&2
+ (diff -c a8.O $srcdir/a8.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a8(|) may have failed." 1>&2
+ $echo The command "cmp a8.O $srcdir/a8.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a8.E || rm -f a8.E
+$xx -l < $srcdir/a8.I > a8.O 2> a8.E
+code=$?
+if test $code != 0; then
+ $echo "Test a8(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a8.O $srcdir/a8.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a8(<)"; fi;;
+ 1) $echo "Test a8(<) failed: files a8.O and $srcdir/a8.X differ" 1>&2
+ (diff -c a8.O $srcdir/a8.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a8(<) may have failed." 1>&2
+ $echo The command "cmp a8.O $srcdir/a8.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a8.E || rm -f a8.E
+cat $srcdir/a9.I | $xx -l > a9.O 2> a9.E
+code=$?
+if test $code != 0; then
+ $echo "Test a9(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a9.O $srcdir/a9.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a9(|)"; fi;;
+ 1) $echo "Test a9(|) failed: files a9.O and $srcdir/a9.X differ" 1>&2
+ (diff -c a9.O $srcdir/a9.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a9(|) may have failed." 1>&2
+ $echo The command "cmp a9.O $srcdir/a9.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a9.E || rm -f a9.E
+$xx -l < $srcdir/a9.I > a9.O 2> a9.E
+code=$?
+if test $code != 0; then
+ $echo "Test a9(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp a9.O $srcdir/a9.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed a9(<)"; fi;;
+ 1) $echo "Test a9(<) failed: files a9.O and $srcdir/a9.X differ" 1>&2
+ (diff -c a9.O $srcdir/a9.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test a9(<) may have failed." 1>&2
+ $echo The command "cmp a9.O $srcdir/a9.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s a9.E || rm -f a9.E
+$xx < $srcdir/b0.I > b0.O 2> b0.E
+code=$?
+if test $code != 0; then
+ $echo "Test b0 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp b0.O $srcdir/b0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed b0"; fi;;
+ 1) $echo "Test b0 failed: files b0.O and $srcdir/b0.X differ" 1>&2
+ (diff -c b0.O $srcdir/b0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test b0 may have failed." 1>&2
+ $echo The command "cmp b0.O $srcdir/b0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s b0.E || rm -f b0.E
+$xx < $srcdir/b1.I > b1.O 2> b1.E
+code=$?
+if test $code != 0; then
+ $echo "Test b1 failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp b1.O $srcdir/b1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed b1"; fi;;
+ 1) $echo "Test b1 failed: files b1.O and $srcdir/b1.X differ" 1>&2
+ (diff -c b1.O $srcdir/b1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test b1 may have failed." 1>&2
+ $echo The command "cmp b1.O $srcdir/b1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s b1.E || rm -f b1.E
+cat $srcdir/c0.I | $xx -L > c0.O 2> c0.E
+code=$?
+if test $code != 0; then
+ $echo "Test c0(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c0.O $srcdir/c0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c0(|)"; fi;;
+ 1) $echo "Test c0(|) failed: files c0.O and $srcdir/c0.X differ" 1>&2
+ (diff -c c0.O $srcdir/c0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c0(|) may have failed." 1>&2
+ $echo The command "cmp c0.O $srcdir/c0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c0.E || rm -f c0.E
+$xx -L < $srcdir/c0.I > c0.O 2> c0.E
+code=$?
+if test $code != 0; then
+ $echo "Test c0(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c0.O $srcdir/c0.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c0(<)"; fi;;
+ 1) $echo "Test c0(<) failed: files c0.O and $srcdir/c0.X differ" 1>&2
+ (diff -c c0.O $srcdir/c0.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c0(<) may have failed." 1>&2
+ $echo The command "cmp c0.O $srcdir/c0.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c0.E || rm -f c0.E
+cat $srcdir/c1.I | $xx -L > c1.O 2> c1.E
+code=$?
+if test $code != 0; then
+ $echo "Test c1(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c1.O $srcdir/c1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c1(|)"; fi;;
+ 1) $echo "Test c1(|) failed: files c1.O and $srcdir/c1.X differ" 1>&2
+ (diff -c c1.O $srcdir/c1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c1(|) may have failed." 1>&2
+ $echo The command "cmp c1.O $srcdir/c1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c1.E || rm -f c1.E
+$xx -L < $srcdir/c1.I > c1.O 2> c1.E
+code=$?
+if test $code != 0; then
+ $echo "Test c1(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c1.O $srcdir/c1.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c1(<)"; fi;;
+ 1) $echo "Test c1(<) failed: files c1.O and $srcdir/c1.X differ" 1>&2
+ (diff -c c1.O $srcdir/c1.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c1(<) may have failed." 1>&2
+ $echo The command "cmp c1.O $srcdir/c1.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c1.E || rm -f c1.E
+cat $srcdir/c2.I | $xx -L > c2.O 2> c2.E
+code=$?
+if test $code != 0; then
+ $echo "Test c2(|) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c2.O $srcdir/c2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c2(|)"; fi;;
+ 1) $echo "Test c2(|) failed: files c2.O and $srcdir/c2.X differ" 1>&2
+ (diff -c c2.O $srcdir/c2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c2(|) may have failed." 1>&2
+ $echo The command "cmp c2.O $srcdir/c2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c2.E || rm -f c2.E
+$xx -L < $srcdir/c2.I > c2.O 2> c2.E
+code=$?
+if test $code != 0; then
+ $echo "Test c2(<) failed: $xx return code $code differs from expected value 0" 1>&2
+ errors=`expr $errors + 1`
+else
+ cmp c2.O $srcdir/c2.X > /dev/null 2>&1
+ case $? in
+ 0) if test "$VERBOSE"; then $echo "passed c2(<)"; fi;;
+ 1) $echo "Test c2(<) failed: files c2.O and $srcdir/c2.X differ" 1>&2
+ (diff -c c2.O $srcdir/c2.X) 2> /dev/null
+ errors=`expr $errors + 1`;;
+ 2) $echo "Test c2(<) may have failed." 1>&2
+ $echo The command "cmp c2.O $srcdir/c2.X" failed. 1>&2
+ errors=`expr $errors + 1`;;
+ esac
+fi
+test -s c2.E || rm -f c2.E
+if test $errors = 0; then
+ $echo Passed all 28 tests. 1>&2
+else
+ $echo Failed $errors tests. 1>&2
+fi
+test $errors = 0 || errors=1
+exit $errors